summaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorlars <lars@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-01-06 01:33:19 +0000
committerlars <lars@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-01-06 01:33:19 +0000
commit6ea4c6c0f2ae52def12bf2f77edd69e314152eca (patch)
tree5dcc3eb14ad28d2ea12e92674b6f35dee3b0b575 /target
parent12cb8e47f82cfc3132962382d3a290028548b902 (diff)
[xburst] Drop support for older kernel versions
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@24915 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target')
-rw-r--r--target/linux/xburst/config-2.6.34364
-rw-r--r--target/linux/xburst/config-2.6.35379
-rw-r--r--target/linux/xburst/n516/config-2.6.3416
-rw-r--r--target/linux/xburst/n516/config-2.6.3516
-rw-r--r--target/linux/xburst/n526/config-2.6.344
-rw-r--r--target/linux/xburst/n526/config-2.6.354
-rw-r--r--target/linux/xburst/patches-2.6.34/001-core.patch4412
-rw-r--r--target/linux/xburst/patches-2.6.34/002-xburst-cache-quirks.patch339
-rw-r--r--target/linux/xburst/patches-2.6.34/005-add-qi_lb60-board-support.patch594
-rw-r--r--target/linux/xburst/patches-2.6.34/006-add-n516-board-support.patch702
-rw-r--r--target/linux/xburst/patches-2.6.34/007-add-n526-board-support.patch381
-rw-r--r--target/linux/xburst/patches-2.6.34/050-nand.patch547
-rw-r--r--target/linux/xburst/patches-2.6.34/051-fb.patch941
-rw-r--r--target/linux/xburst/patches-2.6.34/052-rtc.patch397
-rw-r--r--target/linux/xburst/patches-2.6.34/053-adc.patch498
-rw-r--r--target/linux/xburst/patches-2.6.34/054-mmc.patch1087
-rw-r--r--target/linux/xburst/patches-2.6.34/055-ohci.patch313
-rw-r--r--target/linux/xburst/patches-2.6.34/056-udc.patch2636
-rw-r--r--target/linux/xburst/patches-2.6.34/060-jzcodec.patch602
-rw-r--r--target/linux/xburst/patches-2.6.34/061-asoc.patch1062
-rw-r--r--target/linux/xburst/patches-2.6.34/065-qi_lb60-sound.patch231
-rw-r--r--target/linux/xburst/patches-2.6.34/066-n516-sound.patch352
-rw-r--r--target/linux/xburst/patches-2.6.34/067-n526-sound.patch219
-rw-r--r--target/linux/xburst/patches-2.6.34/100-battery.patch441
-rw-r--r--target/linux/xburst/patches-2.6.34/101-lcm.patch304
-rw-r--r--target/linux/xburst/patches-2.6.34/103-serial.patch178
-rw-r--r--target/linux/xburst/patches-2.6.34/106-gpio-charger.patch266
-rw-r--r--target/linux/xburst/patches-2.6.34/400-spi-gpio-3wire.patch189
-rw-r--r--target/linux/xburst/patches-2.6.34/420-fb-notifier-pre-post.patch42
-rw-r--r--target/linux/xburst/patches-2.6.34/440-metronome.patch1219
-rw-r--r--target/linux/xburst/patches-2.6.34/500-modifier-keys.patch611
-rw-r--r--target/linux/xburst/patches-2.6.34/800-n516-lpc.patch520
-rw-r--r--target/linux/xburst/patches-2.6.34/801-n526-lpc.patch287
-rw-r--r--target/linux/xburst/patches-2.6.34/900-add-openwrt-logo.patch9744
-rw-r--r--target/linux/xburst/patches-2.6.35/001-core.patch242
-rw-r--r--target/linux/xburst/patches-2.6.35/002-xburst-cache-quirks.patch334
-rw-r--r--target/linux/xburst/patches-2.6.35/003-clock_api.patch1173
-rw-r--r--target/linux/xburst/patches-2.6.35/004-irq.patch275
-rw-r--r--target/linux/xburst/patches-2.6.35/005-timer.patch238
-rw-r--r--target/linux/xburst/patches-2.6.35/006-clocksource.patch165
-rw-r--r--target/linux/xburst/patches-2.6.35/007-power-management.patch171
-rw-r--r--target/linux/xburst/patches-2.6.35/008-setup.patch49
-rw-r--r--target/linux/xburst/patches-2.6.35/009-gpio.patch1027
-rw-r--r--target/linux/xburst/patches-2.6.35/010-dma.patch404
-rw-r--r--target/linux/xburst/patches-2.6.35/011-pwm.patch197
-rw-r--r--target/linux/xburst/patches-2.6.35/012-serial.patch82
-rw-r--r--target/linux/xburst/patches-2.6.35/013-prom.patch89
-rw-r--r--target/linux/xburst/patches-2.6.35/014-platform-devices.patch352
-rw-r--r--target/linux/xburst/patches-2.6.35/015-kbuild.patch94
-rw-r--r--target/linux/xburst/patches-2.6.35/020-add-qi_lb60-board-support.patch551
-rw-r--r--target/linux/xburst/patches-2.6.35/021-add-n516-board-support.patch684
-rw-r--r--target/linux/xburst/patches-2.6.35/022-add-n526-board-support.patch365
-rw-r--r--target/linux/xburst/patches-2.6.35/050-nand.patch601
-rw-r--r--target/linux/xburst/patches-2.6.35/051-fb.patch971
-rw-r--r--target/linux/xburst/patches-2.6.35/052-rtc.patch400
-rw-r--r--target/linux/xburst/patches-2.6.35/053-adc.patch476
-rw-r--r--target/linux/xburst/patches-2.6.35/054-mmc.patch1098
-rw-r--r--target/linux/xburst/patches-2.6.35/055-ohci.patch326
-rw-r--r--target/linux/xburst/patches-2.6.35/056-udc.patch2621
-rw-r--r--target/linux/xburst/patches-2.6.35/057-hwmon.patch283
-rw-r--r--target/linux/xburst/patches-2.6.35/058-battery.patch522
-rw-r--r--target/linux/xburst/patches-2.6.35/060-jzcodec.patch594
-rw-r--r--target/linux/xburst/patches-2.6.35/061-asoc.patch1038
-rw-r--r--target/linux/xburst/patches-2.6.35/065-qi_lb60-sound.patch211
-rw-r--r--target/linux/xburst/patches-2.6.35/066-n516-sound.patch327
-rw-r--r--target/linux/xburst/patches-2.6.35/067-n526-sound.patch195
-rw-r--r--target/linux/xburst/patches-2.6.35/101-lcm.patch295
-rw-r--r--target/linux/xburst/patches-2.6.35/106-gpio-charger.patch267
-rw-r--r--target/linux/xburst/patches-2.6.35/107-pwm-beeper.patch249
-rw-r--r--target/linux/xburst/patches-2.6.35/400-spi-gpio-3wire.patch180
-rw-r--r--target/linux/xburst/patches-2.6.35/420-fb-notifier-pre-post.patch37
-rw-r--r--target/linux/xburst/patches-2.6.35/440-metronome.patch1213
-rw-r--r--target/linux/xburst/patches-2.6.35/500-modifier-keys.patch604
-rw-r--r--target/linux/xburst/patches-2.6.35/800-n516-lpc.patch510
-rw-r--r--target/linux/xburst/patches-2.6.35/801-n526-lpc.patch277
-rw-r--r--target/linux/xburst/patches-2.6.35/900-add-openwrt-logo.patch9730
-rw-r--r--target/linux/xburst/qi_lb60/config-2.6.3416
-rw-r--r--target/linux/xburst/qi_lb60/config-2.6.3517
78 files changed, 0 insertions, 59447 deletions
diff --git a/target/linux/xburst/config-2.6.34 b/target/linux/xburst/config-2.6.34
deleted file mode 100644
index 95aa8ccc7c..0000000000
--- a/target/linux/xburst/config-2.6.34
+++ /dev/null
@@ -1,364 +0,0 @@
-CONFIG_32BIT=y
-# CONFIG_64BIT is not set
-# CONFIG_ALCHEMY_GPIO_INDIRECT is not set
-# CONFIG_AR7 is not set
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_ARCH_SUPPORTS_OPROFILE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-# CONFIG_ARPD is not set
-# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
-# CONFIG_BACKLIGHT_GENERIC is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-# CONFIG_BATTERY_JZ4740 is not set
-# CONFIG_BCM47XX is not set
-# CONFIG_BCM63XX is not set
-CONFIG_BITREVERSE=y
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
-# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
-CONFIG_CHARGER_GPIO=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-# CONFIG_CPU_BIG_ENDIAN is not set
-# CONFIG_CPU_CAVIUM_OCTEON is not set
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_LITTLE_ENDIAN=y
-# CONFIG_CPU_LOONGSON2E is not set
-# CONFIG_CPU_LOONGSON2F is not set
-CONFIG_CPU_MIPS32_R1=y
-# CONFIG_CPU_MIPS32_R2 is not set
-CONFIG_CPU_MIPS32=y
-# CONFIG_CPU_MIPS64_R1 is not set
-# CONFIG_CPU_MIPS64_R2 is not set
-CONFIG_CPU_MIPSR1=y
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R5500 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_VR41XX is not set
-CONFIG_CRC16=y
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_LZO=y
-CONFIG_DEFAULT_AS=y
-CONFIG_DMA_NEED_PCI_MAP_STATE=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_ELF_CORE=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_EXT4_FS=y
-CONFIG_FAT_FS=y
-# CONFIG_FB_JZ4740 is not set
-CONFIG_FB_SYS_COPYAREA=y
-CONFIG_FB_SYS_FILLRECT=y
-CONFIG_FB_SYS_IMAGEBLIT=y
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FONT_10x18 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_SUN12x22 is not set
-CONFIG_FONT_SUN8x16=y
-CONFIG_FONTS=y
-CONFIG_FORCE_MAX_ZONEORDER=12
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FRAMEBUFFER_CONSOLE is not set
-CONFIG_FREEZER=y
-CONFIG_INOTIFY_USER=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_FIND_LAST_BIT=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
-CONFIG_GPIOLIB=y
-# CONFIG_HAMRADIO is not set
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAVE_ARCH_KGDB=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_HAVE_IDE=y
-CONFIG_HAVE_OPROFILE=y
-CONFIG_HAVE_PWM=y
-# CONFIG_HIBERNATION is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_HW_CONSOLE=y
-# CONFIG_HW_RANDOM is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_GPIO_BUTTONS is not set
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_INPUT=y
-CONFIG_IRQ_CPU=y
-CONFIG_JBD=y
-# CONFIG_JZ4740_ADC is not set
-# CONFIG_JZ4740_N516 is not set
-# CONFIG_JZ4740_N526 is not set
-# CONFIG_JZ4740_QI_LB60 is not set
-CONFIG_JZRISC=y
-CONFIG_JZSOC=y
-CONFIG_KALLSYMS=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_MATRIX is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_LCD_CLASS_DEVICE is not set
-# CONFIG_LCD_GPM940B0 is not set
-# CONFIG_LCD_ILI9320 is not set
-# CONFIG_LCD_L4F00242T03 is not set
-# CONFIG_LCD_LMS283GF05 is not set
-# CONFIG_LCD_LTV350QV is not set
-# CONFIG_LCD_PLATFORM is not set
-# CONFIG_LCD_TDO24M is not set
-# CONFIG_LCD_VGG2432A4 is not set
-# CONFIG_LEDS_PWM is not set
-CONFIG_LEGACY_PTY_COUNT=2
-CONFIG_LEGACY_PTYS=y
-CONFIG_LOCK_KERNEL=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_OPENWRT_CLUT224 is not set
-# CONFIG_LOGO is not set
-CONFIG_LOONGSON_UART_BASE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-# CONFIG_MACH_ALCHEMY is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MACH_JAZZ is not set
-CONFIG_MACH_JZ=y
-# CONFIG_MACH_LOONGSON is not set
-# CONFIG_MACH_TX39XX is not set
-# CONFIG_MACH_TX49XX is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_MIKROTIK_RB532 is not set
-# CONFIG_MINI_FO is not set
-# CONFIG_MIPS_COBALT is not set
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-# CONFIG_MIPS_MACHINE is not set
-# CONFIG_MIPS_MALTA is not set
-CONFIG_MIPS_MT_DISABLED=y
-# CONFIG_MIPS_MT_SMP is not set
-# CONFIG_MIPS_MT_SMTC is not set
-# CONFIG_MIPS_SIM is not set
-CONFIG_MIPS=y
-# CONFIG_MMC_AT91 is not set
-# CONFIG_MMC_ATMELMCI is not set
-# CONFIG_MMC_BLOCK_BOUNCE is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_JZ=y
-CONFIG_MMC_UNSAFE_RESUME=y
-CONFIG_MMC=y
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_NAND_JZ4740=y
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-CONFIG_MTD_NAND=y
-CONFIG_MTD_UBI_BEB_RESERVE=1
-# CONFIG_MTD_UBI_DEBUG is not set
-# CONFIG_MTD_UBI_GLUEBI is not set
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI=y
-# CONFIG_N516_LPC is not set
-CONFIG_NEED_DMA_MAP_STATE=y
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NET_ETHERNET is not set
-# CONFIG_NET_SCHED is not set
-# CONFIG_NETWORK_FILESYSTEMS is not set
-# CONFIG_NEW_LEDS is not set
-CONFIG_NLS_ASCII=y
-CONFIG_NLS_CODEPAGE_1250=y
-CONFIG_NLS_CODEPAGE_1251=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=y
-CONFIG_NLS_CODEPAGE_775=y
-CONFIG_NLS_CODEPAGE_850=y
-CONFIG_NLS_CODEPAGE_852=y
-CONFIG_NLS_CODEPAGE_855=y
-CONFIG_NLS_CODEPAGE_857=y
-CONFIG_NLS_CODEPAGE_860=y
-CONFIG_NLS_CODEPAGE_861=y
-CONFIG_NLS_CODEPAGE_862=y
-CONFIG_NLS_CODEPAGE_863=y
-CONFIG_NLS_CODEPAGE_864=y
-CONFIG_NLS_CODEPAGE_865=y
-CONFIG_NLS_CODEPAGE_866=y
-CONFIG_NLS_CODEPAGE_869=y
-CONFIG_NLS_CODEPAGE_874=y
-CONFIG_NLS_CODEPAGE_932=y
-CONFIG_NLS_CODEPAGE_936=y
-CONFIG_NLS_CODEPAGE_949=y
-CONFIG_NLS_CODEPAGE_950=y
-CONFIG_NLS_ISO8859_13=y
-CONFIG_NLS_ISO8859_14=y
-CONFIG_NLS_ISO8859_15=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=y
-CONFIG_NLS_ISO8859_3=y
-CONFIG_NLS_ISO8859_4=y
-CONFIG_NLS_ISO8859_5=y
-CONFIG_NLS_ISO8859_6=y
-CONFIG_NLS_ISO8859_7=y
-CONFIG_NLS_ISO8859_8=y
-CONFIG_NLS_ISO8859_9=y
-CONFIG_NLS_KOI8_R=y
-CONFIG_NLS_KOI8_U=y
-CONFIG_NLS_UTF8=y
-CONFIG_NLS=y
-# CONFIG_NO_IOPORT is not set
-# CONFIG_NXP_STB220 is not set
-# CONFIG_NXP_STB225 is not set
-# CONFIG_PACKET_MMAP is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-# CONFIG_PCI is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_PMC_MSP is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_OPS=y
-# CONFIG_PM_RUNTIME is not set
-CONFIG_PM_SLEEP=y
-CONFIG_PM=y
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_PNX8550_STB810 is not set
-# CONFIG_POWERTV is not set
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-CONFIG_POWER_SUPPLY=y
-# CONFIG_PREEMPT_NONE is not set
-CONFIG_PREEMPT=y
-CONFIG_PRINTK_TIME=y
-CONFIG_RTC_CLASS=y
-# CONFIG_RTC_DRV_CMOS is not set
-CONFIG_RTC_DRV_JZ4740=y
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-CONFIG_SCSI_MOD=y
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SDIO_UART is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP28 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_SWARM is not set
-# CONFIG_SND_SOC_ALL_CODECS is not set
-# CONFIG_SND_SOC_JZCODEC is not set
-# CONFIG_SND_SOC_JZ4740 is not set
-# CONFIG_SND_JZ4740_SOC_N516 is not set
-# CONFIG_SND_JZ4740_SOC_N526 is not set
-# CONFIG_SND_JZ4740_SOC_QI_LB60 is not set
-CONFIG_SOC_JZ4740=y
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_STAGING is not set
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_SUSPEND=y
-# CONFIG_SYN_COOKIES is not set
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
-CONFIG_TRAD_SIGNALS=y
-CONFIG_UBIFS_FS_ADVANCED_COMPR=y
-# CONFIG_UBIFS_FS_DEBUG is not set
-CONFIG_UBIFS_FS_LZO=y
-# CONFIG_UBIFS_FS_XATTR is not set
-CONFIG_UBIFS_FS=y
-CONFIG_UBIFS_FS_ZLIB=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_CDC_COMPOSITE is not set
-# CONFIG_USB_ETH_EEM is not set
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_ETH=y
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_CI13XXX is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-# CONFIG_USB_GADGET_DEBUG_FS is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_GADGET_FSL_QE is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_IMX is not set
-CONFIG_USB_GADGET_JZ4740=y
-# CONFIG_USB_GADGET_LANGWELL is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_MUSB_HDRC is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_PXA25X is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_R8A66597 is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_S3C_HSOTG is not set
-CONFIG_USB_GADGET_SELECTED=y
-CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET=y
-# CONFIG_USB_G_PRINTER is not set
-# CONFIG_USB_G_SERIAL is not set
-CONFIG_USB_JZ4740=y
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_USB_SUPPORT=y
-# CONFIG_USB_ZERO is not set
-CONFIG_VFAT_FS=y
-# CONFIG_VGA_CONSOLE is not set
-# CONFIG_VLAN_8021Q is not set
-CONFIG_VT_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_VT=y
-# CONFIG_WATCHDOG is not set
-# CONFIG_WLAN_80211 is not set
-CONFIG_ZONE_DMA_FLAG=0
diff --git a/target/linux/xburst/config-2.6.35 b/target/linux/xburst/config-2.6.35
deleted file mode 100644
index ea088ac5f6..0000000000
--- a/target/linux/xburst/config-2.6.35
+++ /dev/null
@@ -1,379 +0,0 @@
-
-CONFIG_32BIT=y
-# CONFIG_64BIT is not set
-# CONFIG_ALCHEMY_GPIO_INDIRECT is not set
-# CONFIG_AR7 is not set
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_ARCH_SUPPORTS_OPROFILE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-# CONFIG_ARPD is not set
-# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
-# CONFIG_BACKLIGHT_GENERIC is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-# CONFIG_BATTERY_JZ4740 is not set
-# CONFIG_BCM47XX is not set
-# CONFIG_BCM63XX is not set
-CONFIG_BITREVERSE=y
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
-# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
-CONFIG_CHARGER_GPIO=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-# CONFIG_CPU_BIG_ENDIAN is not set
-# CONFIG_CPU_CAVIUM_OCTEON is not set
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_LITTLE_ENDIAN=y
-# CONFIG_CPU_LOONGSON2E is not set
-# CONFIG_CPU_LOONGSON2F is not set
-CONFIG_CPU_MIPS32_R1=y
-# CONFIG_CPU_MIPS32_R2 is not set
-CONFIG_CPU_MIPS32=y
-# CONFIG_CPU_MIPS64_R1 is not set
-# CONFIG_CPU_MIPS64_R2 is not set
-CONFIG_CPU_MIPSR1=y
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R5500 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_VR41XX is not set
-CONFIG_CRC16=y
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_LZO=y
-CONFIG_DEFAULT_AS=y
-CONFIG_DMA_NEED_PCI_MAP_STATE=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_ELF_CORE=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_EXT4_FS=y
-CONFIG_FAT_FS=y
-# CONFIG_FB_JZ4740 is not set
-CONFIG_FB_SYS_COPYAREA=y
-CONFIG_FB_SYS_FILLRECT=y
-CONFIG_FB_SYS_IMAGEBLIT=y
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_10x18 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_SUN12x22 is not set
-CONFIG_FONT_SUN8x16=y
-CONFIG_FORCE_MAX_ZONEORDER=12
-# CONFIG_FRAMEBUFFER_CONSOLE is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FREEZER=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_FIND_LAST_BIT=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
-CONFIG_GPIOLIB=y
-# CONFIG_HAMRADIO is not set
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAVE_ARCH_KGDB=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_HAVE_IDE=y
-CONFIG_HAVE_OPROFILE=y
-CONFIG_HAVE_PWM=y
-# CONFIG_HIBERNATION is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_HW_CONSOLE=y
-# CONFIG_HW_RANDOM is not set
-# CONFIG_INLINE_READ_UNLOCK is not set
-# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_UNLOCK is not set
-# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_UNLOCK is not set
-# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
-CONFIG_INOTIFY_USER=y
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_GPIO_BUTTONS is not set
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_INPUT_PWM_BEEPER is not set
-CONFIG_INPUT=y
-CONFIG_IRQ_CPU=y
-CONFIG_JBD=y
-# CONFIG_JZ4740_ADC is not set
-# CONFIG_JZ4740_N516 is not set
-# CONFIG_JZ4740_N526 is not set
-# CONFIG_JZ4740_QI_LB60 is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_MATRIX is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_LCD_CLASS_DEVICE is not set
-# CONFIG_LCD_GPM940B0 is not set
-# CONFIG_LCD_ILI9320 is not set
-# CONFIG_LCD_L4F00242T03 is not set
-# CONFIG_LCD_LMS283GF05 is not set
-# CONFIG_LCD_LTV350QV is not set
-# CONFIG_LCD_PLATFORM is not set
-# CONFIG_LCD_TDO24M is not set
-# CONFIG_LCD_VGG2432A4 is not set
-# CONFIG_LEDS_PWM is not set
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=2
-CONFIG_LOCK_KERNEL=y
-# CONFIG_LOGO is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_OPENWRT_CLUT224 is not set
-# CONFIG_LOONGSON_MC146818 is not set
-CONFIG_LOONGSON_UART_BASE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-# CONFIG_MACH_ALCHEMY is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MACH_JAZZ is not set
-CONFIG_MACH_JZ4740=y
-# CONFIG_MACH_LOONGSON is not set
-# CONFIG_MACH_TX39XX is not set
-# CONFIG_MACH_TX49XX is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_MFD_JZ4740_ADC is not set
-# CONFIG_MIKROTIK_RB532 is not set
-# CONFIG_MINI_FO is not set
-# CONFIG_MIPS_COBALT is not set
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-# CONFIG_MIPS_MACHINE is not set
-# CONFIG_MIPS_MALTA is not set
-CONFIG_MIPS_MT_DISABLED=y
-# CONFIG_MIPS_MT_SMP is not set
-# CONFIG_MIPS_MT_SMTC is not set
-# CONFIG_MIPS_SIM is not set
-CONFIG_MIPS=y
-# CONFIG_MMC_AT91 is not set
-# CONFIG_MMC_ATMELMCI is not set
-# CONFIG_MMC_BLOCK_BOUNCE is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_JZ4740=y
-CONFIG_MMC_UNSAFE_RESUME=y
-CONFIG_MMC=y
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_NAND_JZ4740=y
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_ECC=y
-# CONFIG_MTD_SM_COMMON is not set
-CONFIG_MTD_UBI_BEB_RESERVE=1
-# CONFIG_MTD_UBI_DEBUG is not set
-# CONFIG_MTD_UBI_GLUEBI is not set
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI=y
-# CONFIG_N516_LPC is not set
-CONFIG_NEED_DMA_MAP_STATE=y
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETWORK_FILESYSTEMS is not set
-# CONFIG_NET_ETHERNET is not set
-# CONFIG_NET_SCHED is not set
-# CONFIG_NEW_LEDS is not set
-CONFIG_NLS_ASCII=y
-CONFIG_NLS_CODEPAGE_1250=y
-CONFIG_NLS_CODEPAGE_1251=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=y
-CONFIG_NLS_CODEPAGE_775=y
-CONFIG_NLS_CODEPAGE_850=y
-CONFIG_NLS_CODEPAGE_852=y
-CONFIG_NLS_CODEPAGE_855=y
-CONFIG_NLS_CODEPAGE_857=y
-CONFIG_NLS_CODEPAGE_860=y
-CONFIG_NLS_CODEPAGE_861=y
-CONFIG_NLS_CODEPAGE_862=y
-CONFIG_NLS_CODEPAGE_863=y
-CONFIG_NLS_CODEPAGE_864=y
-CONFIG_NLS_CODEPAGE_865=y
-CONFIG_NLS_CODEPAGE_866=y
-CONFIG_NLS_CODEPAGE_869=y
-CONFIG_NLS_CODEPAGE_874=y
-CONFIG_NLS_CODEPAGE_932=y
-CONFIG_NLS_CODEPAGE_936=y
-CONFIG_NLS_CODEPAGE_949=y
-CONFIG_NLS_CODEPAGE_950=y
-CONFIG_NLS_ISO8859_13=y
-CONFIG_NLS_ISO8859_14=y
-CONFIG_NLS_ISO8859_15=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=y
-CONFIG_NLS_ISO8859_3=y
-CONFIG_NLS_ISO8859_4=y
-CONFIG_NLS_ISO8859_5=y
-CONFIG_NLS_ISO8859_6=y
-CONFIG_NLS_ISO8859_7=y
-CONFIG_NLS_ISO8859_8=y
-CONFIG_NLS_ISO8859_9=y
-CONFIG_NLS_KOI8_R=y
-CONFIG_NLS_KOI8_U=y
-CONFIG_NLS_UTF8=y
-CONFIG_NLS=y
-# CONFIG_NO_IOPORT is not set
-# CONFIG_NXP_STB220 is not set
-# CONFIG_NXP_STB225 is not set
-# CONFIG_PACKET_MMAP is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-# CONFIG_PCI is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_PMC_MSP is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_OPS=y
-# CONFIG_PM_RUNTIME is not set
-CONFIG_PM_SLEEP=y
-CONFIG_PM=y
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_PNX8550_STB810 is not set
-# CONFIG_POWERTV is not set
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-CONFIG_POWER_SUPPLY=y
-# CONFIG_PREEMPT_NONE is not set
-CONFIG_PREEMPT=y
-CONFIG_PRINTK_TIME=y
-CONFIG_RTC_CLASS=y
-# CONFIG_RTC_DRV_CMOS is not set
-CONFIG_RTC_DRV_JZ4740=y
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-# CONFIG_SCSI_DMA is not set
-CONFIG_SCSI_MOD=y
-# CONFIG_SDIO_UART is not set
-# CONFIG_SENSORS_JZ4740 is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP28 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_SWARM is not set
-# CONFIG_SND_JZ4740_SOC_N516 is not set
-# CONFIG_SND_JZ4740_SOC_N526 is not set
-# CONFIG_SND_JZ4740_SOC_QI_LB60 is not set
-# CONFIG_SND_SOC_ALL_CODECS is not set
-# CONFIG_SND_SOC_JZ4740 is not set
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_STAGING is not set
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_SUSPEND_NVS=y
-CONFIG_SUSPEND=y
-# CONFIG_SYN_COOKIES is not set
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
-# CONFIG_TEST_POWER is not set
-CONFIG_TRAD_SIGNALS=y
-CONFIG_UBIFS_FS_ADVANCED_COMPR=y
-# CONFIG_UBIFS_FS_DEBUG is not set
-CONFIG_UBIFS_FS_LZO=y
-# CONFIG_UBIFS_FS_XATTR is not set
-CONFIG_UBIFS_FS_ZLIB=y
-CONFIG_UBIFS_FS=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_CDC_COMPOSITE is not set
-# CONFIG_USB_ETH_EEM is not set
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_ETH=y
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_FUNCTIONFS is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_ATMEL_USBA is not set
-# CONFIG_USB_GADGET_CI13XXX is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-# CONFIG_USB_GADGET_DEBUG_FS is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_FSL_QE is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_IMX is not set
-CONFIG_USB_GADGET_JZ4740=y
-# CONFIG_USB_GADGET_LANGWELL is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_MUSB_HDRC is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_PXA25X is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_R8A66597 is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_S3C_HSOTG is not set
-CONFIG_USB_GADGET_SELECTED=y
-CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET=y
-# CONFIG_USB_G_HID is not set
-# CONFIG_USB_G_PRINTER is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_G_WEBCAM is not set
-CONFIG_USB_JZ4740=y
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_USB_SUPPORT=y
-# CONFIG_USB_ZERO is not set
-CONFIG_VFAT_FS=y
-# CONFIG_VGA_CONSOLE is not set
-# CONFIG_VLAN_8021Q is not set
-CONFIG_VT_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_VT=y
-# CONFIG_WATCHDOG is not set
-# CONFIG_WLAN_80211 is not set
-CONFIG_ZONE_DMA_FLAG=0
-
diff --git a/target/linux/xburst/n516/config-2.6.34 b/target/linux/xburst/n516/config-2.6.34
deleted file mode 100644
index 1a7251d2e3..0000000000
--- a/target/linux/xburst/n516/config-2.6.34
+++ /dev/null
@@ -1,16 +0,0 @@
-CONFIG_FB_DEFERRED_IO=y
-CONFIG_FB_JZ4740=y
-CONFIG_FB_METRONOME=m
-CONFIG_FB_SYS_FOPS=m
-CONFIG_HWMON=y
-# CONFIG_HWMON_DEBUG_CHIP is not set
-CONFIG_I2C=y
-CONFIG_I2C_ALGOBIT=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_GPIO=y
-CONFIG_JZ4740_N516=y
-CONFIG_LEDS_GPIO=y
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_N516_LPC=y
-CONFIG_NEW_LEDS=y
-CONFIG_SENSORS_LM75=y
diff --git a/target/linux/xburst/n516/config-2.6.35 b/target/linux/xburst/n516/config-2.6.35
deleted file mode 100644
index 1a7251d2e3..0000000000
--- a/target/linux/xburst/n516/config-2.6.35
+++ /dev/null
@@ -1,16 +0,0 @@
-CONFIG_FB_DEFERRED_IO=y
-CONFIG_FB_JZ4740=y
-CONFIG_FB_METRONOME=m
-CONFIG_FB_SYS_FOPS=m
-CONFIG_HWMON=y
-# CONFIG_HWMON_DEBUG_CHIP is not set
-CONFIG_I2C=y
-CONFIG_I2C_ALGOBIT=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_GPIO=y
-CONFIG_JZ4740_N516=y
-CONFIG_LEDS_GPIO=y
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_N516_LPC=y
-CONFIG_NEW_LEDS=y
-CONFIG_SENSORS_LM75=y
diff --git a/target/linux/xburst/n526/config-2.6.34 b/target/linux/xburst/n526/config-2.6.34
deleted file mode 100644
index 916ee8dc8d..0000000000
--- a/target/linux/xburst/n526/config-2.6.34
+++ /dev/null
@@ -1,4 +0,0 @@
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-CONFIG_JZ4740_N516=y
diff --git a/target/linux/xburst/n526/config-2.6.35 b/target/linux/xburst/n526/config-2.6.35
deleted file mode 100644
index 916ee8dc8d..0000000000
--- a/target/linux/xburst/n526/config-2.6.35
+++ /dev/null
@@ -1,4 +0,0 @@
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-CONFIG_JZ4740_N516=y
diff --git a/target/linux/xburst/patches-2.6.34/001-core.patch b/target/linux/xburst/patches-2.6.34/001-core.patch
deleted file mode 100644
index ea77457434..0000000000
--- a/target/linux/xburst/patches-2.6.34/001-core.patch
+++ /dev/null
@@ -1,4412 +0,0 @@
-From e1828438bbdd0623cf7f9c6672f2fe65b1349aa6 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 17:35:05 +0200
-Subject: [PATCH] Add JZ4740 SoC core support
-
----
- arch/mips/Kconfig | 4 +
- arch/mips/Makefile | 6 +
- arch/mips/include/asm/bootinfo.h | 6 +
- arch/mips/include/asm/cpu.h | 13 +-
- arch/mips/include/asm/mach-jz4740/base.h | 28 +
- arch/mips/include/asm/mach-jz4740/clock.h | 28 +
- arch/mips/include/asm/mach-jz4740/dma.h | 90 +++
- arch/mips/include/asm/mach-jz4740/gpio.h | 398 +++++++++++
- arch/mips/include/asm/mach-jz4740/irq.h | 55 ++
- arch/mips/include/asm/mach-jz4740/platform.h | 34 +
- arch/mips/include/asm/mach-jz4740/serial.h | 30 +
- arch/mips/include/asm/mach-jz4740/timer.h | 22 +
- arch/mips/include/asm/mach-jz4740/war.h | 25 +
- arch/mips/jz4740/Kconfig | 29 +
- arch/mips/jz4740/Makefile | 18 +
- arch/mips/jz4740/clock-debugfs.c | 109 +++
- arch/mips/jz4740/clock.c | 935 ++++++++++++++++++++++++++
- arch/mips/jz4740/clock.h | 75 ++
- arch/mips/jz4740/dma.c | 336 +++++++++
- arch/mips/jz4740/gpio.c | 598 ++++++++++++++++
- arch/mips/jz4740/irq.c | 170 +++++
- arch/mips/jz4740/irq.h | 21 +
- arch/mips/jz4740/platform.c | 246 +++++++
- arch/mips/jz4740/pm.c | 59 ++
- arch/mips/jz4740/prom.c | 69 ++
- arch/mips/jz4740/pwm.c | 167 +++++
- arch/mips/jz4740/reset.c | 81 +++
- arch/mips/jz4740/reset.h | 7 +
- arch/mips/jz4740/setup.c | 64 ++
- arch/mips/jz4740/time.c | 144 ++++
- arch/mips/jz4740/timer.c | 48 ++
- arch/mips/jz4740/timer.h | 130 ++++
- arch/mips/kernel/cpu-probe.c | 20 +
- arch/mips/mm/tlbex.c | 5 +
- 34 files changed, 4069 insertions(+), 1 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/base.h
- create mode 100644 arch/mips/include/asm/mach-jz4740/clock.h
- create mode 100644 arch/mips/include/asm/mach-jz4740/dma.h
- create mode 100644 arch/mips/include/asm/mach-jz4740/gpio.h
- create mode 100644 arch/mips/include/asm/mach-jz4740/irq.h
- create mode 100644 arch/mips/include/asm/mach-jz4740/platform.h
- create mode 100644 arch/mips/include/asm/mach-jz4740/serial.h
- create mode 100644 arch/mips/include/asm/mach-jz4740/timer.h
- create mode 100644 arch/mips/include/asm/mach-jz4740/war.h
- create mode 100644 arch/mips/jz4740/Kconfig
- create mode 100644 arch/mips/jz4740/Makefile
- create mode 100644 arch/mips/jz4740/clock-debugfs.c
- create mode 100644 arch/mips/jz4740/clock.c
- create mode 100644 arch/mips/jz4740/clock.h
- create mode 100644 arch/mips/jz4740/dma.c
- create mode 100644 arch/mips/jz4740/gpio.c
- create mode 100644 arch/mips/jz4740/irq.c
- create mode 100644 arch/mips/jz4740/irq.h
- create mode 100644 arch/mips/jz4740/platform.c
- create mode 100644 arch/mips/jz4740/pm.c
- create mode 100644 arch/mips/jz4740/prom.c
- create mode 100644 arch/mips/jz4740/pwm.c
- create mode 100644 arch/mips/jz4740/reset.c
- create mode 100644 arch/mips/jz4740/reset.h
- create mode 100644 arch/mips/jz4740/setup.c
- create mode 100644 arch/mips/jz4740/time.c
- create mode 100644 arch/mips/jz4740/timer.c
- create mode 100644 arch/mips/jz4740/timer.h
-
-diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
-index 7e6fd1c..e902f02 100644
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -162,6 +162,9 @@ config MACH_JAZZ
- Members include the Acer PICA, MIPS Magnum 4000, MIPS Millennium and
- Olivetti M700-10 workstations.
-
-+config MACH_JZ
-+ bool "Ingenic JZ4720/JZ4740 based machines"
-+
- config LASAT
- bool "LASAT Networks platforms"
- select CEVT_R4K
-@@ -686,6 +689,7 @@ endchoice
- source "arch/mips/alchemy/Kconfig"
- source "arch/mips/bcm63xx/Kconfig"
- source "arch/mips/jazz/Kconfig"
-+source "arch/mips/jz4740/Kconfig"
- source "arch/mips/lasat/Kconfig"
- source "arch/mips/pmc-sierra/Kconfig"
- source "arch/mips/powertv/Kconfig"
-diff --git a/arch/mips/Makefile b/arch/mips/Makefile
-index 0b9c01a..007a82e 100644
---- a/arch/mips/Makefile
-+++ b/arch/mips/Makefile
-@@ -659,6 +659,12 @@ else
- load-$(CONFIG_CPU_CAVIUM_OCTEON) += 0xffffffff81100000
- endif
-
-+# Ingenic JZ4740
-+#
-+core-$(CONFIG_SOC_JZ4740) += arch/mips/jz4740/
-+cflags-$(CONFIG_SOC_JZ4740) += -I$(srctree)/arch/mips/include/asm/mach-jz4740
-+load-$(CONFIG_SOC_JZ4740) += 0xffffffff80010000
-+
- cflags-y += -I$(srctree)/arch/mips/include/asm/mach-generic
- drivers-$(CONFIG_PCI) += arch/mips/pci/
-
-diff --git a/arch/mips/include/asm/bootinfo.h b/arch/mips/include/asm/bootinfo.h
-index 09eee09..15a8ef0 100644
---- a/arch/mips/include/asm/bootinfo.h
-+++ b/arch/mips/include/asm/bootinfo.h
-@@ -71,6 +71,12 @@
- #define MACH_LEMOTE_LL2F 7
- #define MACH_LOONGSON_END 8
-
-+/*
-+ * Valid machtype for group INGENIC
-+ */
-+#define MACH_INGENIC_JZ4730 0 /* JZ4730 SOC */
-+#define MACH_INGENIC_JZ4740 1 /* JZ4740 SOC */
-+
- extern char *system_type;
- const char *get_system_type(void);
-
-diff --git a/arch/mips/include/asm/cpu.h b/arch/mips/include/asm/cpu.h
-index a5acda4..e67aebb 100644
---- a/arch/mips/include/asm/cpu.h
-+++ b/arch/mips/include/asm/cpu.h
-@@ -34,7 +34,7 @@
- #define PRID_COMP_LSI 0x080000
- #define PRID_COMP_LEXRA 0x0b0000
- #define PRID_COMP_CAVIUM 0x0d0000
--
-+#define PRID_COMP_INGENIC 0xd00000
-
- /*
- * Assigned values for the product ID register. In order to detect a
-@@ -133,6 +133,12 @@
- #define PRID_IMP_CAVIUM_CN52XX 0x0700
-
- /*
-+ * These are the PRID's for when 23:16 == PRID_COMP_INGENIC
-+ */
-+
-+#define PRID_IMP_JZRISC 0x0200
-+
-+/*
- * Definitions for 7:0 on legacy processors
- */
-
-@@ -226,6 +232,11 @@ enum cpu_type_enum {
- CPU_5KC, CPU_20KC, CPU_25KF, CPU_SB1, CPU_SB1A, CPU_LOONGSON2,
- CPU_CAVIUM_OCTEON, CPU_CAVIUM_OCTEON_PLUS,
-
-+ /*
-+ * Ingenic class processors
-+ */
-+ CPU_JZRISC, CPU_XBURST,
-+
- CPU_LAST
- };
-
-diff --git a/arch/mips/include/asm/mach-jz4740/base.h b/arch/mips/include/asm/mach-jz4740/base.h
-new file mode 100644
-index 0000000..a281972
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/base.h
-@@ -0,0 +1,28 @@
-+#ifndef __JZ4740_BASE_ADDR_H__
-+#define __JZ4740_BASE_ADDR_H__
-+
-+#define JZ4740_CPM_BASE_ADDR 0xb0000000
-+#define JZ4740_INTC_BASE_ADDR 0xb0001000
-+#define JZ4740_TCU_BASE_ADDR 0xb0002000
-+#define JZ4740_WDT_BASE_ADDR 0xb0002000
-+#define JZ4740_RTC_BASE_ADDR 0xb0003000
-+#define JZ4740_GPIO_BASE_ADDR 0xb0010000
-+#define JZ4740_AIC_BASE_ADDR 0xb0020000
-+#define JZ4740_ICDC_BASE_ADDR 0xb0020000
-+#define JZ4740_MSC_BASE_ADDR 0xb0021000
-+#define JZ4740_UART0_BASE_ADDR 0xb0030000
-+#define JZ4740_UART1_BASE_ADDR 0xb0031000
-+#define JZ4740_I2C_BASE_ADDR 0xb0042000
-+#define JZ4740_SSI_BASE_ADDR 0xb0043000
-+#define JZ4740_SADC_BASE_ADDR 0xb0070000
-+#define JZ4740_EMC_BASE_ADDR 0xb3010000
-+#define JZ4740_DMAC_BASE_ADDR 0xb3020000
-+#define JZ4740_UHC_BASE_ADDR 0xb3030000
-+#define JZ4740_UDC_BASE_ADDR 0xb3040000
-+#define JZ4740_LCD_BASE_ADDR 0xb3050000
-+#define JZ4740_SLCD_BASE_ADDR 0xb3050000
-+#define JZ4740_CIM_BASE_ADDR 0xb3060000
-+#define JZ4740_IPU_BASE_ADDR 0xb3080000
-+#define JZ4740_ETH_BASE_ADDR 0xb3100000
-+
-+#endif
-diff --git a/arch/mips/include/asm/mach-jz4740/clock.h b/arch/mips/include/asm/mach-jz4740/clock.h
-new file mode 100644
-index 0000000..9069727
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/clock.h
-@@ -0,0 +1,28 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * 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 __ASM_JZ4740_CLOCK_H__
-+#define __ASM_JZ4740_CLOCK_H__
-+
-+enum jz4740_wait_mode {
-+ JZ4740_WAIT_MODE_IDLE,
-+ JZ4740_WAIT_MODE_SLEEP,
-+};
-+
-+void jz4740_clock_set_wait_mode(enum jz4740_wait_mode mode);
-+
-+void jz4740_clock_udc_enable_auto_suspend(void);
-+void jz4740_clock_udc_disable_auto_suspend(void);
-+
-+#endif
-diff --git a/arch/mips/include/asm/mach-jz4740/dma.h b/arch/mips/include/asm/mach-jz4740/dma.h
-new file mode 100644
-index 0000000..bb7fc1e
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/dma.h
-@@ -0,0 +1,90 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ7420/JZ4740 DMA definitions
-+ *
-+ * 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.
-+ *
-+ * 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 __ASM_MACH_JZ4740_DMA_H__
-+#define __ASM_MACH_JZ4740_DMA_H__
-+
-+struct jz4740_dma_chan;
-+
-+enum jz4740_dma_request_type {
-+ JZ4740_DMA_TYPE_AUTO_REQUEST = 8,
-+ JZ4740_DMA_TYPE_UART_TRANSMIT = 20,
-+ JZ4740_DMA_TYPE_UART_RECEIVE = 21,
-+ JZ4740_DMA_TYPE_SPI_TRANSMIT = 22,
-+ JZ4740_DMA_TYPE_SPI_RECEIVE = 23,
-+ JZ4740_DMA_TYPE_AIC_TRANSMIT = 24,
-+ JZ4740_DMA_TYPE_AIC_RECEIVE = 25,
-+ JZ4740_DMA_TYPE_MMC_TRANSMIT = 26,
-+ JZ4740_DMA_TYPE_MMC_RECEIVE = 27,
-+ JZ4740_DMA_TYPE_TCU = 28,
-+ JZ4740_DMA_TYPE_SADC = 29,
-+ JZ4740_DMA_TYPE_SLCD = 30,
-+};
-+
-+enum jz4740_dma_width {
-+ JZ4740_DMA_WIDTH_32BIT = 0,
-+ JZ4740_DMA_WIDTH_8BIT = 1,
-+ JZ4740_DMA_WIDTH_16BIT = 2,
-+};
-+
-+enum jz4740_dma_transfer_size {
-+ JZ4740_DMA_TRANSFER_SIZE_4BYTE = 0,
-+ JZ4740_DMA_TRANSFER_SIZE_1BYTE = 1,
-+ JZ4740_DMA_TRANSFER_SIZE_2BYTE = 2,
-+ JZ4740_DMA_TRANSFER_SIZE_16BYTE = 3,
-+ JZ4740_DMA_TRANSFER_SIZE_32BYTE = 4,
-+};
-+
-+enum jz4740_dma_flags {
-+ JZ4740_DMA_SRC_AUTOINC = 0x2,
-+ JZ4740_DMA_DST_AUTOINC = 0x1,
-+};
-+
-+enum jz4740_dma_mode {
-+ JZ4740_DMA_MODE_SINGLE = 0,
-+ JZ4740_DMA_MODE_BLOCK = 1,
-+};
-+
-+struct jz4740_dma_config {
-+ enum jz4740_dma_width src_width;
-+ enum jz4740_dma_width dst_width;
-+ enum jz4740_dma_transfer_size transfer_size;
-+ enum jz4740_dma_request_type request_type;
-+ enum jz4740_dma_flags flags;
-+ enum jz4740_dma_mode mode;
-+};
-+
-+typedef void (*jz4740_dma_complete_callback_t)(struct jz4740_dma_chan *, int, void *);
-+
-+struct jz4740_dma_chan *jz4740_dma_request(void *dev, const char *name);
-+void jz4740_dma_free(struct jz4740_dma_chan *dma);
-+
-+void jz4740_dma_configure(struct jz4740_dma_chan *dma,
-+ const struct jz4740_dma_config *config);
-+
-+
-+void jz4740_dma_enable(struct jz4740_dma_chan *dma);
-+void jz4740_dma_disable(struct jz4740_dma_chan *dma);
-+
-+void jz4740_dma_set_src_addr(struct jz4740_dma_chan *dma, dma_addr_t src);
-+void jz4740_dma_set_dst_addr(struct jz4740_dma_chan *dma, dma_addr_t dst);
-+void jz4740_dma_set_transfer_count(struct jz4740_dma_chan *dma, uint32_t count);
-+
-+uint32_t jz4740_dma_get_residue(const struct jz4740_dma_chan *dma);
-+
-+void jz4740_dma_set_complete_cb(struct jz4740_dma_chan *dma,
-+ jz4740_dma_complete_callback_t cb);
-+
-+#endif /* __ASM_JZ4740_DMA_H__ */
-diff --git a/arch/mips/include/asm/mach-jz4740/gpio.h b/arch/mips/include/asm/mach-jz4740/gpio.h
-new file mode 100644
-index 0000000..5f175d7
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/gpio.h
-@@ -0,0 +1,398 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ7420/JZ4740 GPIO pin definitions
-+ *
-+ * 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.
-+ *
-+ * 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 _JZ_GPIO_H
-+#define _JZ_GPIO_H
-+
-+#include <linux/types.h>
-+
-+enum jz_gpio_function {
-+ JZ_GPIO_FUNC_NONE,
-+ JZ_GPIO_FUNC1,
-+ JZ_GPIO_FUNC2,
-+ JZ_GPIO_FUNC3,
-+};
-+
-+
-+/*
-+ Usually a driver for a SoC component has to request several gpio pins and
-+ configure them as funcion pins.
-+ jz_gpio_bulk_request can be used to ease this process.
-+ Usually one would do something like:
-+
-+ const static struct jz_gpio_bulk_request i2c_pins[] = {
-+ JZ_GPIO_BULK_PIN(I2C_SDA),
-+ JZ_GPIO_BULK_PIN(I2C_SCK),
-+ };
-+
-+ inside the probe function:
-+
-+ ret = jz_gpio_bulk_request(i2c_pins, ARRAY_SIZE(i2c_pins));
-+ if (ret) {
-+ ...
-+
-+ inside the remove function:
-+
-+ jz_gpio_bulk_free(i2c_pins, ARRAY_SIZE(i2c_pins));
-+
-+
-+*/
-+struct jz_gpio_bulk_request {
-+ int gpio;
-+ const char *name;
-+ enum jz_gpio_function function;
-+};
-+
-+#define JZ_GPIO_BULK_PIN(pin) { \
-+ .gpio = JZ_GPIO_ ## pin, \
-+ .name = #pin, \
-+ .function = JZ_GPIO_FUNC_ ## pin \
-+}
-+
-+int jz_gpio_bulk_request(const struct jz_gpio_bulk_request *request, size_t num);
-+void jz_gpio_bulk_free(const struct jz_gpio_bulk_request *request, size_t num);
-+void jz_gpio_bulk_suspend(const struct jz_gpio_bulk_request *request, size_t num);
-+void jz_gpio_bulk_resume(const struct jz_gpio_bulk_request *request, size_t num);
-+void jz_gpio_enable_pullup(unsigned gpio);
-+void jz_gpio_disable_pullup(unsigned gpio);
-+int jz_gpio_set_function(int gpio, enum jz_gpio_function function);
-+
-+int jz_gpio_port_direction_input(int port, uint32_t mask);
-+int jz_gpio_port_direction_output(int port, uint32_t mask);
-+void jz_gpio_port_set_value(int port, uint32_t value, uint32_t mask);
-+uint32_t jz_gpio_port_get_value(int port, uint32_t mask);
-+
-+#include <asm/mach-generic/gpio.h>
-+
-+#define JZ_GPIO_PORTA(x) ((x) + 32 * 0)
-+#define JZ_GPIO_PORTB(x) ((x) + 32 * 1)
-+#define JZ_GPIO_PORTC(x) ((x) + 32 * 2)
-+#define JZ_GPIO_PORTD(x) ((x) + 32 * 3)
-+
-+/* Port A function pins */
-+#define JZ_GPIO_MEM_DATA0 JZ_GPIO_PORTA(0)
-+#define JZ_GPIO_MEM_DATA1 JZ_GPIO_PORTA(1)
-+#define JZ_GPIO_MEM_DATA2 JZ_GPIO_PORTA(2)
-+#define JZ_GPIO_MEM_DATA3 JZ_GPIO_PORTA(3)
-+#define JZ_GPIO_MEM_DATA4 JZ_GPIO_PORTA(4)
-+#define JZ_GPIO_MEM_DATA5 JZ_GPIO_PORTA(5)
-+#define JZ_GPIO_MEM_DATA6 JZ_GPIO_PORTA(6)
-+#define JZ_GPIO_MEM_DATA7 JZ_GPIO_PORTA(7)
-+#define JZ_GPIO_MEM_DATA8 JZ_GPIO_PORTA(8)
-+#define JZ_GPIO_MEM_DATA9 JZ_GPIO_PORTA(9)
-+#define JZ_GPIO_MEM_DATA10 JZ_GPIO_PORTA(10)
-+#define JZ_GPIO_MEM_DATA11 JZ_GPIO_PORTA(11)
-+#define JZ_GPIO_MEM_DATA12 JZ_GPIO_PORTA(12)
-+#define JZ_GPIO_MEM_DATA13 JZ_GPIO_PORTA(13)
-+#define JZ_GPIO_MEM_DATA14 JZ_GPIO_PORTA(14)
-+#define JZ_GPIO_MEM_DATA15 JZ_GPIO_PORTA(15)
-+#define JZ_GPIO_MEM_DATA16 JZ_GPIO_PORTA(16)
-+#define JZ_GPIO_MEM_DATA17 JZ_GPIO_PORTA(17)
-+#define JZ_GPIO_MEM_DATA18 JZ_GPIO_PORTA(18)
-+#define JZ_GPIO_MEM_DATA19 JZ_GPIO_PORTA(19)
-+#define JZ_GPIO_MEM_DATA20 JZ_GPIO_PORTA(20)
-+#define JZ_GPIO_MEM_DATA21 JZ_GPIO_PORTA(21)
-+#define JZ_GPIO_MEM_DATA22 JZ_GPIO_PORTA(22)
-+#define JZ_GPIO_MEM_DATA23 JZ_GPIO_PORTA(23)
-+#define JZ_GPIO_MEM_DATA24 JZ_GPIO_PORTA(24)
-+#define JZ_GPIO_MEM_DATA25 JZ_GPIO_PORTA(25)
-+#define JZ_GPIO_MEM_DATA26 JZ_GPIO_PORTA(26)
-+#define JZ_GPIO_MEM_DATA27 JZ_GPIO_PORTA(27)
-+#define JZ_GPIO_MEM_DATA28 JZ_GPIO_PORTA(28)
-+#define JZ_GPIO_MEM_DATA29 JZ_GPIO_PORTA(29)
-+#define JZ_GPIO_MEM_DATA30 JZ_GPIO_PORTA(30)
-+#define JZ_GPIO_MEM_DATA31 JZ_GPIO_PORTA(31)
-+
-+#define JZ_GPIO_FUNC_MEM_DATA0 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA1 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA2 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA3 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA4 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA5 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA6 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA7 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA8 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA9 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA10 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA11 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA12 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA13 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA14 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA15 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA16 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA17 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA18 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA19 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA20 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA21 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA22 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA23 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA24 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA25 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA26 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA27 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA28 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA29 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA30 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA31 JZ_GPIO_FUNC1
-+
-+/* Port B function pins */
-+#define JZ_GPIO_MEM_ADDR0 JZ_GPIO_PORTB(0)
-+#define JZ_GPIO_MEM_ADDR1 JZ_GPIO_PORTB(1)
-+#define JZ_GPIO_MEM_ADDR2 JZ_GPIO_PORTB(2)
-+#define JZ_GPIO_MEM_ADDR3 JZ_GPIO_PORTB(3)
-+#define JZ_GPIO_MEM_ADDR4 JZ_GPIO_PORTB(4)
-+#define JZ_GPIO_MEM_ADDR5 JZ_GPIO_PORTB(5)
-+#define JZ_GPIO_MEM_ADDR6 JZ_GPIO_PORTB(6)
-+#define JZ_GPIO_MEM_ADDR7 JZ_GPIO_PORTB(7)
-+#define JZ_GPIO_MEM_ADDR8 JZ_GPIO_PORTB(8)
-+#define JZ_GPIO_MEM_ADDR9 JZ_GPIO_PORTB(9)
-+#define JZ_GPIO_MEM_ADDR10 JZ_GPIO_PORTB(10)
-+#define JZ_GPIO_MEM_ADDR11 JZ_GPIO_PORTB(11)
-+#define JZ_GPIO_MEM_ADDR12 JZ_GPIO_PORTB(12)
-+#define JZ_GPIO_MEM_ADDR13 JZ_GPIO_PORTB(13)
-+#define JZ_GPIO_MEM_ADDR14 JZ_GPIO_PORTB(14)
-+#define JZ_GPIO_MEM_ADDR15 JZ_GPIO_PORTB(15)
-+#define JZ_GPIO_MEM_ADDR16 JZ_GPIO_PORTB(16)
-+#define JZ_GPIO_MEM_CLS JZ_GPIO_PORTB(17)
-+#define JZ_GPIO_MEM_SPL JZ_GPIO_PORTB(18)
-+#define JZ_GPIO_MEM_DCS JZ_GPIO_PORTB(19)
-+#define JZ_GPIO_MEM_RAS JZ_GPIO_PORTB(20)
-+#define JZ_GPIO_MEM_CAS JZ_GPIO_PORTB(21)
-+#define JZ_GPIO_MEM_SDWE JZ_GPIO_PORTB(22)
-+#define JZ_GPIO_MEM_CKE JZ_GPIO_PORTB(23)
-+#define JZ_GPIO_MEM_CKO JZ_GPIO_PORTB(24)
-+#define JZ_GPIO_MEM_CS0 JZ_GPIO_PORTB(25)
-+#define JZ_GPIO_MEM_CS1 JZ_GPIO_PORTB(26)
-+#define JZ_GPIO_MEM_CS2 JZ_GPIO_PORTB(27)
-+#define JZ_GPIO_MEM_CS3 JZ_GPIO_PORTB(28)
-+#define JZ_GPIO_MEM_RD JZ_GPIO_PORTB(29)
-+#define JZ_GPIO_MEM_WR JZ_GPIO_PORTB(30)
-+#define JZ_GPIO_MEM_WE0 JZ_GPIO_PORTB(31)
-+
-+#define JZ_GPIO_FUNC_MEM_ADDR0 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR1 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR2 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR3 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR4 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR5 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR6 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR7 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR8 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR9 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR10 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR11 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR12 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR13 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR14 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR15 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR16 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CLS JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_SPL JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DCS JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_RAS JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CAS JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_SDWE JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CKE JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CKO JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CS0 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CS1 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CS2 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CS3 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_RD JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_WR JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_WE0 JZ_GPIO_FUNC1
-+
-+
-+#define JZ_GPIO_MEM_ADDR21 JZ_GPIO_PORTB(17)
-+#define JZ_GPIO_MEM_ADDR22 JZ_GPIO_PORTB(18)
-+
-+#define JZ_GPIO_FUNC_MEM_ADDR21 JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_ADDR22 JZ_GPIO_FUNC2
-+
-+/* Port C function pins */
-+#define JZ_GPIO_LCD_DATA0 JZ_GPIO_PORTC(0)
-+#define JZ_GPIO_LCD_DATA1 JZ_GPIO_PORTC(1)
-+#define JZ_GPIO_LCD_DATA2 JZ_GPIO_PORTC(2)
-+#define JZ_GPIO_LCD_DATA3 JZ_GPIO_PORTC(3)
-+#define JZ_GPIO_LCD_DATA4 JZ_GPIO_PORTC(4)
-+#define JZ_GPIO_LCD_DATA5 JZ_GPIO_PORTC(5)
-+#define JZ_GPIO_LCD_DATA6 JZ_GPIO_PORTC(6)
-+#define JZ_GPIO_LCD_DATA7 JZ_GPIO_PORTC(7)
-+#define JZ_GPIO_LCD_DATA8 JZ_GPIO_PORTC(8)
-+#define JZ_GPIO_LCD_DATA9 JZ_GPIO_PORTC(9)
-+#define JZ_GPIO_LCD_DATA10 JZ_GPIO_PORTC(10)
-+#define JZ_GPIO_LCD_DATA11 JZ_GPIO_PORTC(11)
-+#define JZ_GPIO_LCD_DATA12 JZ_GPIO_PORTC(12)
-+#define JZ_GPIO_LCD_DATA13 JZ_GPIO_PORTC(13)
-+#define JZ_GPIO_LCD_DATA14 JZ_GPIO_PORTC(14)
-+#define JZ_GPIO_LCD_DATA15 JZ_GPIO_PORTC(15)
-+#define JZ_GPIO_LCD_DATA16 JZ_GPIO_PORTC(16)
-+#define JZ_GPIO_LCD_DATA17 JZ_GPIO_PORTC(17)
-+#define JZ_GPIO_LCD_PCLK JZ_GPIO_PORTC(18)
-+#define JZ_GPIO_LCD_HSYNC JZ_GPIO_PORTC(19)
-+#define JZ_GPIO_LCD_VSYNC JZ_GPIO_PORTC(20)
-+#define JZ_GPIO_LCD_DE JZ_GPIO_PORTC(21)
-+#define JZ_GPIO_LCD_PS JZ_GPIO_PORTC(22)
-+#define JZ_GPIO_LCD_REV JZ_GPIO_PORTC(23)
-+#define JZ_GPIO_MEM_WE1 JZ_GPIO_PORTC(24)
-+#define JZ_GPIO_MEM_WE2 JZ_GPIO_PORTC(25)
-+#define JZ_GPIO_MEM_WE3 JZ_GPIO_PORTC(26)
-+#define JZ_GPIO_MEM_WAIT JZ_GPIO_PORTC(27)
-+#define JZ_GPIO_MEM_FRE JZ_GPIO_PORTC(28)
-+#define JZ_GPIO_MEM_FWE JZ_GPIO_PORTC(29)
-+
-+#define JZ_GPIO_FUNC_LCD_DATA0 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA1 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA2 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA3 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA4 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA5 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA6 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA7 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA8 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA9 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA10 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA11 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA12 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA13 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA14 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA15 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA16 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA17 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_PCLK JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_VSYNC JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_HSYNC JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DE JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_PS JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_REV JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_WE1 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_WE2 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_WE3 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_WAIT JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_FRE JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_FWE JZ_GPIO_FUNC1
-+
-+
-+#define JZ_GPIO_MEM_ADDR19 JZ_GPIO_PORTB(22)
-+#define JZ_GPIO_MEM_ADDR20 JZ_GPIO_PORTB(23)
-+
-+#define JZ_GPIO_FUNC_MEM_ADDR19 JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_ADDR20 JZ_GPIO_FUNC2
-+
-+/* Port D function pins */
-+#define JZ_GPIO_CIM_DATA0 JZ_GPIO_PORTD(0)
-+#define JZ_GPIO_CIM_DATA1 JZ_GPIO_PORTD(1)
-+#define JZ_GPIO_CIM_DATA2 JZ_GPIO_PORTD(2)
-+#define JZ_GPIO_CIM_DATA3 JZ_GPIO_PORTD(3)
-+#define JZ_GPIO_CIM_DATA4 JZ_GPIO_PORTD(4)
-+#define JZ_GPIO_CIM_DATA5 JZ_GPIO_PORTD(5)
-+#define JZ_GPIO_CIM_DATA6 JZ_GPIO_PORTD(6)
-+#define JZ_GPIO_CIM_DATA7 JZ_GPIO_PORTD(7)
-+#define JZ_GPIO_MSC_CMD JZ_GPIO_PORTD(8)
-+#define JZ_GPIO_MSC_CLK JZ_GPIO_PORTD(9)
-+#define JZ_GPIO_MSC_DATA0 JZ_GPIO_PORTD(10)
-+#define JZ_GPIO_MSC_DATA1 JZ_GPIO_PORTD(11)
-+#define JZ_GPIO_MSC_DATA2 JZ_GPIO_PORTD(12)
-+#define JZ_GPIO_MSC_DATA3 JZ_GPIO_PORTD(13)
-+#define JZ_GPIO_CIM_MCLK JZ_GPIO_PORTD(14)
-+#define JZ_GPIO_CIM_PCLK JZ_GPIO_PORTD(15)
-+#define JZ_GPIO_CIM_VSYNC JZ_GPIO_PORTD(16)
-+#define JZ_GPIO_CIM_HSYNC JZ_GPIO_PORTD(17)
-+#define JZ_GPIO_SPI_CLK JZ_GPIO_PORTD(18)
-+#define JZ_GPIO_SPI_CE0 JZ_GPIO_PORTD(19)
-+#define JZ_GPIO_SPI_DT JZ_GPIO_PORTD(20)
-+#define JZ_GPIO_SPI_DR JZ_GPIO_PORTD(21)
-+#define JZ_GPIO_SPI_CE1 JZ_GPIO_PORTD(22)
-+#define JZ_GPIO_PWM0 JZ_GPIO_PORTD(23)
-+#define JZ_GPIO_PWM1 JZ_GPIO_PORTD(24)
-+#define JZ_GPIO_PWM2 JZ_GPIO_PORTD(25)
-+#define JZ_GPIO_PWM3 JZ_GPIO_PORTD(26)
-+#define JZ_GPIO_PWM4 JZ_GPIO_PORTD(27)
-+#define JZ_GPIO_PWM5 JZ_GPIO_PORTD(28)
-+#define JZ_GPIO_PWM6 JZ_GPIO_PORTD(30)
-+#define JZ_GPIO_PWM7 JZ_GPIO_PORTD(31)
-+
-+#define JZ_GPIO_FUNC_CIM_DATA JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_CIM_DATA0 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA1 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA2 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA3 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA4 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA5 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA6 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA7 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_MSC_CMD JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MSC_CLK JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MSC_DATA JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MSC_DATA0 JZ_GPIO_FUNC_MSC_DATA
-+#define JZ_GPIO_FUNC_MSC_DATA1 JZ_GPIO_FUNC_MSC_DATA
-+#define JZ_GPIO_FUNC_MSC_DATA2 JZ_GPIO_FUNC_MSC_DATA
-+#define JZ_GPIO_FUNC_MSC_DATA3 JZ_GPIO_FUNC_MSC_DATA
-+#define JZ_GPIO_FUNC_CIM_MCLK JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_CIM_PCLK JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_CIM_VSYNC JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_CIM_HSYNC JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_SPI_CLK JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_SPI_CE0 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_SPI_DT JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_SPI_DR JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_SPI_CE1 JZ_GPIO_FUNC1
-+
-+#define JZ_GPIO_FUNC_PWM JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_PWM0 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM1 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM2 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM3 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM4 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM5 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM6 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM7 JZ_GPIO_FUNC_PWM
-+
-+#define JZ_GPIO_MEM_SCLK_RSTN JZ_GPIO_PORTD(18)
-+#define JZ_GPIO_MEM_BCLK JZ_GPIO_PORTD(19)
-+#define JZ_GPIO_MEM_SDATO JZ_GPIO_PORTD(20)
-+#define JZ_GPIO_MEM_SDATI JZ_GPIO_PORTD(21)
-+#define JZ_GPIO_MEM_SYNC JZ_GPIO_PORTD(22)
-+#define JZ_GPIO_I2C_SDA JZ_GPIO_PORTD(23)
-+#define JZ_GPIO_I2C_SCK JZ_GPIO_PORTD(24)
-+#define JZ_GPIO_UART0_TXD JZ_GPIO_PORTD(25)
-+#define JZ_GPIO_UART0_RXD JZ_GPIO_PORTD(26)
-+#define JZ_GPIO_MEM_ADDR17 JZ_GPIO_PORTD(27)
-+#define JZ_GPIO_MEM_ADDR18 JZ_GPIO_PORTD(28)
-+#define JZ_GPIO_UART0_CTS JZ_GPIO_PORTD(30)
-+#define JZ_GPIO_UART0_RTS JZ_GPIO_PORTD(31)
-+
-+#define JZ_GPIO_FUNC_MEM_SCLK_RSTN JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_BCLK JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_SDATO JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_SDATI JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_SYNC JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_I2C_SDA JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_I2C_SCK JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_UART0_TXD JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_UART0_RXD JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_ADDR17 JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_ADDR18 JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_UART0_CTS JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_UART0_RTS JZ_GPIO_FUNC2
-+
-+#define JZ_GPIO_UART1_RXD JZ_GPIO_PORTD(30)
-+#define JZ_GPIO_UART1_TXD JZ_GPIO_PORTD(31)
-+
-+#define JZ_GPIO_FUNC_UART1_RXD JZ_GPIO_FUNC3
-+#define JZ_GPIO_FUNC_UART1_TXD JZ_GPIO_FUNC3
-+
-+#endif
-diff --git a/arch/mips/include/asm/mach-jz4740/irq.h b/arch/mips/include/asm/mach-jz4740/irq.h
-new file mode 100644
-index 0000000..5e27b78
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/irq.h
-@@ -0,0 +1,55 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ7420/JZ4740 IRQ definitions
-+ *
-+ * 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.
-+ *
-+ * 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 __ASM_MACH_JZ4740_IRQ_H__
-+#define __ASM_MACH_JZ4740_IRQ_H__
-+
-+#define MIPS_CPU_IRQ_BASE 0
-+#define JZ4740_IRQ_BASE 8
-+
-+/* 1st-level interrupts */
-+#define JZ4740_IRQ(x) (JZ4740_IRQ_BASE + (x))
-+#define JZ4740_IRQ_I2C JZ4740_IRQ(1)
-+#define JZ4740_IRQ_UHC JZ4740_IRQ(3)
-+#define JZ4740_IRQ_UART1 JZ4740_IRQ(8)
-+#define JZ4740_IRQ_UART0 JZ4740_IRQ(9)
-+#define JZ4740_IRQ_SADC JZ4740_IRQ(12)
-+#define JZ4740_IRQ_MSC JZ4740_IRQ(14)
-+#define JZ4740_IRQ_RTC JZ4740_IRQ(15)
-+#define JZ4740_IRQ_SSI JZ4740_IRQ(16)
-+#define JZ4740_IRQ_CIM JZ4740_IRQ(17)
-+#define JZ4740_IRQ_AIC JZ4740_IRQ(18)
-+#define JZ4740_IRQ_ETH JZ4740_IRQ(19)
-+#define JZ4740_IRQ_DMAC JZ4740_IRQ(20)
-+#define JZ4740_IRQ_TCU2 JZ4740_IRQ(21)
-+#define JZ4740_IRQ_TCU1 JZ4740_IRQ(22)
-+#define JZ4740_IRQ_TCU0 JZ4740_IRQ(23)
-+#define JZ4740_IRQ_UDC JZ4740_IRQ(24)
-+#define JZ4740_IRQ_GPIO3 JZ4740_IRQ(25)
-+#define JZ4740_IRQ_GPIO2 JZ4740_IRQ(26)
-+#define JZ4740_IRQ_GPIO1 JZ4740_IRQ(27)
-+#define JZ4740_IRQ_GPIO0 JZ4740_IRQ(28)
-+#define JZ4740_IRQ_IPU JZ4740_IRQ(29)
-+#define JZ4740_IRQ_LCD JZ4740_IRQ(30)
-+
-+/* 2nd-level interrupts */
-+#define JZ4740_IRQ_DMA(x) ((x) + JZ4740_IRQ(32))
-+
-+#define JZ4740_IRQ_INTC_GPIO(x) (JZ4740_IRQ_GPIO0 - (x))
-+#define JZ4740_IRQ_GPIO(x) (JZ4740_IRQ(48) + (x))
-+
-+#define NR_IRQS (JZ4740_IRQ_GPIO(127) + 1)
-+
-+#endif
-diff --git a/arch/mips/include/asm/mach-jz4740/platform.h b/arch/mips/include/asm/mach-jz4740/platform.h
-new file mode 100644
-index 0000000..a2e2871
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/platform.h
-@@ -0,0 +1,34 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ7420/JZ4740 platform device definitions
-+ *
-+ * 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.
-+ *
-+ * 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 __JZ4740_PLATFORM_H
-+#define __JZ4740_PLATFORM_H
-+
-+#include <linux/platform_device.h>
-+
-+extern struct platform_device jz4740_usb_ohci_device;
-+extern struct platform_device jz4740_usb_gdt_device;
-+extern struct platform_device jz4740_mmc_device;
-+extern struct platform_device jz4740_rtc_device;
-+extern struct platform_device jz4740_i2c_device;
-+extern struct platform_device jz4740_nand_device;
-+extern struct platform_device jz4740_framebuffer_device;
-+extern struct platform_device jz4740_i2s_device;
-+extern struct platform_device jz4740_codec_device;
-+extern struct platform_device jz4740_adc_device;
-+extern struct platform_device jz4740_battery_device;
-+
-+#endif
-diff --git a/arch/mips/include/asm/mach-jz4740/serial.h b/arch/mips/include/asm/mach-jz4740/serial.h
-new file mode 100644
-index 0000000..c4819b9
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/serial.h
-@@ -0,0 +1,30 @@
-+/*
-+ * linux/include/asm-mips/mach-jz4740/serial.h
-+ *
-+ * Ingenic's JZ4740 common include.
-+ *
-+ * Copyright (C) 2006 - 2007 Ingenic Semiconductor Inc.
-+ *
-+ * Author: <yliu@ingenic.cn>
-+ *
-+ * 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_BOARD_SERIAL_H__
-+#define __ASM_BOARD_SERIAL_H__
-+
-+#ifndef CONFIG_SERIAL_MANY_PORTS
-+#undef RS_TABLE_SIZE
-+#define RS_TABLE_SIZE 1
-+#endif
-+
-+#define JZ_BASE_BAUD (12000000/16)
-+
-+#define JZ_SERIAL_PORT_DEFNS \
-+ { .baud_base = JZ_BASE_BAUD, .irq = IRQ_UART0, \
-+ .flags = STD_COM_FLAGS, .iomem_base = (u8 *)UART0_BASE, \
-+ .iomem_reg_shift = 2, .io_type = SERIAL_IO_MEM },
-+
-+#endif /* __ASM_BORAD_SERIAL_H__ */
-diff --git a/arch/mips/include/asm/mach-jz4740/timer.h b/arch/mips/include/asm/mach-jz4740/timer.h
-new file mode 100644
-index 0000000..30153ff
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/timer.h
-@@ -0,0 +1,22 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform timer support
-+ *
-+ * 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.
-+ *
-+ * 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 __ASM_MACH_JZ4740_TIMER
-+#define __ASM_MACH_JZ4740_TIMER
-+
-+void jz4740_timer_enable_watchdog(void);
-+void jz4740_timer_disable_watchdog(void);
-+
-+#endif
-diff --git a/arch/mips/include/asm/mach-jz4740/war.h b/arch/mips/include/asm/mach-jz4740/war.h
-new file mode 100644
-index 0000000..3a5bc17
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/war.h
-@@ -0,0 +1,25 @@
-+/*
-+ * 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) 2002, 2004, 2007 by Ralf Baechle <ralf@linux-mips.org>
-+ */
-+#ifndef __ASM_MIPS_MACH_JZ4740_WAR_H
-+#define __ASM_MIPS_MACH_JZ4740_WAR_H
-+
-+#define R4600_V1_INDEX_ICACHEOP_WAR 0
-+#define R4600_V1_HIT_CACHEOP_WAR 0
-+#define R4600_V2_HIT_CACHEOP_WAR 0
-+#define R5432_CP0_INTERRUPT_WAR 0
-+#define BCM1250_M3_WAR 0
-+#define SIBYTE_1956_WAR 0
-+#define MIPS4K_ICACHE_REFILL_WAR 0
-+#define MIPS_CACHE_SYNC_WAR 0
-+#define TX49XX_ICACHE_INDEX_INV_WAR 0
-+#define RM9000_CDEX_SMP_WAR 0
-+#define ICACHE_REFILLS_WORKAROUND_WAR 0
-+#define R10000_LLSC_WAR 0
-+#define MIPS34K_MISSED_ITLB_WAR 0
-+
-+#endif /* __ASM_MIPS_MACH_JZ4740_WAR_H */
-diff --git a/arch/mips/jz4740/Kconfig b/arch/mips/jz4740/Kconfig
-new file mode 100644
-index 0000000..b959769
---- /dev/null
-+++ b/arch/mips/jz4740/Kconfig
-@@ -0,0 +1,29 @@
-+choice
-+ prompt "Machine type"
-+ depends on MACH_JZ
-+ default JZ4740_QI_LB60
-+
-+endchoice
-+
-+config HAVE_PWM
-+ bool
-+
-+config SOC_JZ4740
-+ bool
-+ select JZSOC
-+ select GENERIC_GPIO
-+ select ARCH_REQUIRE_GPIOLIB
-+ select SYS_HAS_EARLY_PRINTK
-+ select SYS_SUPPORTS_LITTLE_ENDIAN
-+ select IRQ_CPU
-+ select DMA_NONCOHERENT
-+ select HAVE_PWM
-+
-+config JZSOC
-+ bool
-+ select JZRISC
-+ select SYS_HAS_CPU_MIPS32_R1
-+ select SYS_SUPPORTS_32BIT_KERNEL
-+
-+config JZRISC
-+ bool
-diff --git a/arch/mips/jz4740/Makefile b/arch/mips/jz4740/Makefile
-new file mode 100644
-index 0000000..398ee91
---- /dev/null
-+++ b/arch/mips/jz4740/Makefile
-@@ -0,0 +1,18 @@
-+#
-+# Makefile for the Ingenic JZ4740.
-+#
-+
-+# Object file lists.
-+
-+obj-y += prom.o irq.o time.o reset.o setup.o dma.o \
-+ gpio.o clock.o platform.o timer.o pwm.o
-+
-+obj-$(CONFIG_DEBUG_FS) += clock-debugfs.o
-+
-+# board specific support
-+
-+# PM support
-+
-+obj-$(CONFIG_PM) += pm.o
-+
-+EXTRA_CFLAGS += -Werror -Wall
-diff --git a/arch/mips/jz4740/clock-debugfs.c b/arch/mips/jz4740/clock-debugfs.c
-new file mode 100644
-index 0000000..993b91b
---- /dev/null
-+++ b/arch/mips/jz4740/clock-debugfs.c
-@@ -0,0 +1,109 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC clock support debugfs entries
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/clk.h>
-+#include <linux/err.h>
-+
-+#include <linux/debugfs.h>
-+#include <linux/uaccess.h>
-+
-+#include <asm/mach-jz4740/clock.h>
-+#include "clock.h"
-+
-+static struct dentry *jz4740_clock_debugfs;
-+
-+static int jz4740_clock_debugfs_show_enabled(void *data, uint64_t *value)
-+{
-+ struct clk *clk = data;
-+ *value = clk_is_enabled(clk);
-+
-+ return 0;
-+}
-+
-+static int jz4740_clock_debugfs_set_enabled(void *data, uint64_t value)
-+{
-+ struct clk *clk = data;
-+
-+ if (value)
-+ return clk_enable(clk);
-+ else
-+ clk_disable(clk);
-+
-+ return 0;
-+}
-+
-+DEFINE_SIMPLE_ATTRIBUTE(jz4740_clock_debugfs_ops_enabled,
-+ jz4740_clock_debugfs_show_enabled,
-+ jz4740_clock_debugfs_set_enabled,
-+ "%llu\n");
-+
-+static int jz4740_clock_debugfs_show_rate(void *data, uint64_t *value)
-+{
-+ struct clk *clk = data;
-+ *value = clk_get_rate(clk);
-+
-+ return 0;
-+}
-+
-+DEFINE_SIMPLE_ATTRIBUTE(jz4740_clock_debugfs_ops_rate,
-+ jz4740_clock_debugfs_show_rate,
-+ NULL,
-+ "%llu\n");
-+
-+void jz4740_clock_debugfs_add_clk(struct clk *clk)
-+{
-+ if (!jz4740_clock_debugfs)
-+ return;
-+
-+ clk->debugfs_entry = debugfs_create_dir(clk->name, jz4740_clock_debugfs);
-+ debugfs_create_file("rate", S_IWUGO | S_IRUGO, clk->debugfs_entry, clk,
-+ &jz4740_clock_debugfs_ops_rate);
-+ debugfs_create_file("enabled", S_IRUGO, clk->debugfs_entry, clk,
-+ &jz4740_clock_debugfs_ops_enabled);
-+
-+ if (clk->parent) {
-+ char parent_path[100];
-+ snprintf(parent_path, 100, "../%s", clk->parent->name);
-+ clk->debugfs_parent_entry = debugfs_create_symlink("parent",
-+ clk->debugfs_entry,
-+ parent_path);
-+ }
-+}
-+
-+/* TODO: Locking */
-+void jz4740_clock_debugfs_update_parent(struct clk *clk)
-+{
-+ if (clk->debugfs_parent_entry)
-+ debugfs_remove(clk->debugfs_parent_entry);
-+
-+ if (clk->parent) {
-+ char parent_path[100];
-+ snprintf(parent_path, 100, "../%s", clk->parent->name);
-+ clk->debugfs_parent_entry = debugfs_create_symlink("parent",
-+ clk->debugfs_entry,
-+ parent_path);
-+ } else {
-+ clk->debugfs_parent_entry = NULL;
-+ }
-+}
-+
-+void jz4740_clock_debugfs_init(void)
-+{
-+ jz4740_clock_debugfs = debugfs_create_dir("jz4740-clock", NULL);
-+ if (IS_ERR(jz4740_clock_debugfs))
-+ jz4740_clock_debugfs = NULL;
-+}
-diff --git a/arch/mips/jz4740/clock.c b/arch/mips/jz4740/clock.c
-new file mode 100644
-index 0000000..df0d6d3
---- /dev/null
-+++ b/arch/mips/jz4740/clock.c
-@@ -0,0 +1,935 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC clock support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/errno.h>
-+#include <linux/clk.h>
-+#include <linux/spinlock.h>
-+#include <linux/io.h>
-+#include <linux/module.h>
-+#include <linux/list.h>
-+#include <linux/err.h>
-+
-+#include <asm/mach-jz4740/clock.h>
-+#include <asm/mach-jz4740/base.h>
-+
-+#include "clock.h"
-+
-+#define JZ_REG_CLOCK_CTRL 0x00
-+#define JZ_REG_CLOCK_LOW_POWER 0x04
-+#define JZ_REG_CLOCK_PLL 0x10
-+#define JZ_REG_CLOCK_GATE 0x20
-+#define JZ_REG_CLOCK_SLEEP_CTRL 0x24
-+#define JZ_REG_CLOCK_I2S 0x60
-+#define JZ_REG_CLOCK_LCD 0x64
-+#define JZ_REG_CLOCK_MMC 0x68
-+#define JZ_REG_CLOCK_UHC 0x6C
-+#define JZ_REG_CLOCK_SPI 0x74
-+
-+#define JZ_CLOCK_CTRL_I2S_SRC_PLL BIT(31)
-+#define JZ_CLOCK_CTRL_KO_ENABLE BIT(30)
-+#define JZ_CLOCK_CTRL_UDC_SRC_PLL BIT(29)
-+#define JZ_CLOCK_CTRL_UDIV_MASK 0x1f800000
-+#define JZ_CLOCK_CTRL_CHANGE_ENABLE BIT(22)
-+#define JZ_CLOCK_CTRL_PLL_HALF BIT(21)
-+#define JZ_CLOCK_CTRL_LDIV_MASK 0x001f0000
-+#define JZ_CLOCK_CTRL_UDIV_OFFSET 23
-+#define JZ_CLOCK_CTRL_LDIV_OFFSET 16
-+#define JZ_CLOCK_CTRL_MDIV_OFFSET 12
-+#define JZ_CLOCK_CTRL_PDIV_OFFSET 8
-+#define JZ_CLOCK_CTRL_HDIV_OFFSET 4
-+#define JZ_CLOCK_CTRL_CDIV_OFFSET 0
-+
-+#define JZ_CLOCK_GATE_UART0 BIT(0)
-+#define JZ_CLOCK_GATE_TCU BIT(1)
-+#define JZ_CLOCK_GATE_RTC BIT(2)
-+#define JZ_CLOCK_GATE_I2C BIT(3)
-+#define JZ_CLOCK_GATE_SPI BIT(4)
-+#define JZ_CLOCK_GATE_AIC BIT(5)
-+#define JZ_CLOCK_GATE_I2S BIT(6)
-+#define JZ_CLOCK_GATE_MMC BIT(7)
-+#define JZ_CLOCK_GATE_ADC BIT(8)
-+#define JZ_CLOCK_GATE_CIM BIT(9)
-+#define JZ_CLOCK_GATE_LCD BIT(10)
-+#define JZ_CLOCK_GATE_UDC BIT(11)
-+#define JZ_CLOCK_GATE_DMAC BIT(12)
-+#define JZ_CLOCK_GATE_IPU BIT(13)
-+#define JZ_CLOCK_GATE_UHC BIT(14)
-+#define JZ_CLOCK_GATE_UART1 BIT(15)
-+
-+#define JZ_CLOCK_I2S_DIV_MASK 0x01ff
-+
-+#define JZ_CLOCK_LCD_DIV_MASK 0x01ff
-+
-+#define JZ_CLOCK_MMC_DIV_MASK 0x001f
-+
-+#define JZ_CLOCK_UHC_DIV_MASK 0x000f
-+
-+#define JZ_CLOCK_SPI_SRC_PLL BIT(31)
-+#define JZ_CLOCK_SPI_DIV_MASK 0x000f
-+
-+#define JZ_CLOCK_PLL_M_MASK 0x01ff
-+#define JZ_CLOCK_PLL_N_MASK 0x001f
-+#define JZ_CLOCK_PLL_OD_MASK 0x0003
-+#define JZ_CLOCK_PLL_STABLE BIT(10)
-+#define JZ_CLOCK_PLL_BYPASS BIT(9)
-+#define JZ_CLOCK_PLL_ENABLED BIT(8)
-+#define JZ_CLOCK_PLL_STABLIZE_MASK 0x000f
-+#define JZ_CLOCK_PLL_M_OFFSET 23
-+#define JZ_CLOCK_PLL_N_OFFSET 18
-+#define JZ_CLOCK_PLL_OD_OFFSET 16
-+
-+#define JZ_CLOCK_LOW_POWER_MODE_DOZE BIT(2)
-+#define JZ_CLOCK_LOW_POWER_MODE_SLEEP BIT(0)
-+
-+#define JZ_CLOCK_SLEEP_CTRL_SUSPEND_UHC BIT(7)
-+#define JZ_CLOCK_SLEEP_CTRL_ENABLE_UDC BIT(6)
-+
-+static void __iomem *jz_clock_base;
-+static spinlock_t jz_clock_lock;
-+static LIST_HEAD(jz_clocks);
-+
-+struct main_clk {
-+ struct clk clk;
-+ uint32_t div_offset;
-+};
-+
-+struct divided_clk {
-+ struct clk clk;
-+ uint32_t reg;
-+ uint32_t mask;
-+};
-+
-+struct static_clk {
-+ struct clk clk;
-+ unsigned long rate;
-+};
-+
-+static uint32_t jz_clk_reg_read(int reg)
-+{
-+ return readl(jz_clock_base + reg);
-+}
-+
-+static void jz_clk_reg_write_mask(int reg, uint32_t val, uint32_t mask)
-+{
-+ uint32_t val2;
-+
-+ spin_lock(&jz_clock_lock);
-+ val2 = readl(jz_clock_base + reg);
-+ val2 &= ~mask;
-+ val2 |= val;
-+ writel(val2, jz_clock_base + reg);
-+ spin_unlock(&jz_clock_lock);
-+}
-+
-+static void jz_clk_reg_set_bits(int reg, uint32_t mask)
-+{
-+ uint32_t val;
-+
-+ spin_lock(&jz_clock_lock);
-+ val = readl(jz_clock_base + reg);
-+ val |= mask;
-+ writel(val, jz_clock_base + reg);
-+ spin_unlock(&jz_clock_lock);
-+}
-+
-+static void jz_clk_reg_clear_bits(int reg, uint32_t mask)
-+{
-+ uint32_t val;
-+
-+ spin_lock(&jz_clock_lock);
-+ val = readl(jz_clock_base + reg);
-+ val &= ~mask;
-+ writel(val, jz_clock_base + reg);
-+ spin_unlock(&jz_clock_lock);
-+}
-+
-+static int jz_clk_enable_gating(struct clk *clk)
-+{
-+ if (clk->gate_bit == JZ4740_CLK_NOT_GATED)
-+ return -EINVAL;
-+
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_GATE, clk->gate_bit);
-+ return 0;
-+}
-+
-+static int jz_clk_disable_gating(struct clk *clk)
-+{
-+ if (clk->gate_bit == JZ4740_CLK_NOT_GATED)
-+ return -EINVAL;
-+
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_GATE, clk->gate_bit);
-+ return 0;
-+}
-+
-+static int jz_clk_is_enabled_gating(struct clk *clk)
-+{
-+ if (clk->gate_bit == JZ4740_CLK_NOT_GATED)
-+ return 1;
-+
-+ return !(jz_clk_reg_read(JZ_REG_CLOCK_GATE) & clk->gate_bit);
-+}
-+
-+static unsigned long jz_clk_static_get_rate(struct clk *clk)
-+{
-+ return ((struct static_clk *)clk)->rate;
-+}
-+
-+static int jz_clk_ko_enable(struct clk *clk)
-+{
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_CTRL, JZ_CLOCK_CTRL_KO_ENABLE);
-+ return 0;
-+}
-+
-+static int jz_clk_ko_disable(struct clk *clk)
-+{
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_CTRL, JZ_CLOCK_CTRL_KO_ENABLE);
-+ return 0;
-+}
-+
-+static int jz_clk_ko_is_enabled(struct clk *clk)
-+{
-+ return !!(jz_clk_reg_read(JZ_REG_CLOCK_CTRL) & JZ_CLOCK_CTRL_KO_ENABLE);
-+}
-+
-+static const int pllno[] = {1, 2, 2, 4};
-+
-+static unsigned long jz_clk_pll_get_rate(struct clk *clk)
-+{
-+ uint32_t val;
-+ int m;
-+ int n;
-+ int od;
-+
-+ val = jz_clk_reg_read(JZ_REG_CLOCK_PLL);
-+
-+ if (val & JZ_CLOCK_PLL_BYPASS)
-+ return clk_get_rate(clk->parent);
-+
-+ m = ((val >> 23) & 0x1ff) + 2;
-+ n = ((val >> 18) & 0x1f) + 2;
-+ od = (val >> 16) & 0x3;
-+
-+ return clk_get_rate(clk->parent) * (m / n) / pllno[od];
-+}
-+
-+static unsigned long jz_clk_pll_half_get_rate(struct clk *clk)
-+{
-+ uint32_t reg;
-+
-+ reg = jz_clk_reg_read(JZ_REG_CLOCK_CTRL);
-+ if (reg & JZ_CLOCK_CTRL_PLL_HALF)
-+ return jz_clk_pll_get_rate(clk->parent);
-+ return jz_clk_pll_get_rate(clk->parent) >> 1;
-+}
-+
-+static const int jz_clk_main_divs[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32};
-+
-+static unsigned long jz_clk_main_round_rate(struct clk *clk, unsigned long rate)
-+{
-+ unsigned long parent_rate = jz_clk_pll_get_rate(clk->parent);
-+ int div;
-+
-+ div = parent_rate / rate;
-+ if (div > 32)
-+ return parent_rate / 32;
-+ else if (div < 1)
-+ return parent_rate;
-+
-+ div &= (0x3 << (ffs(div) - 1));
-+
-+ return parent_rate / div;
-+}
-+
-+static unsigned long jz_clk_main_get_rate(struct clk *clk)
-+{
-+ struct main_clk *mclk = (struct main_clk *)clk;
-+ uint32_t div;
-+
-+ div = jz_clk_reg_read(JZ_REG_CLOCK_CTRL);
-+
-+ div >>= mclk->div_offset;
-+ div &= 0xf;
-+
-+ if (div >= ARRAY_SIZE(jz_clk_main_divs))
-+ div = ARRAY_SIZE(jz_clk_main_divs) - 1;
-+
-+ return jz_clk_pll_get_rate(clk->parent) / jz_clk_main_divs[div];
-+}
-+
-+static int jz_clk_main_set_rate(struct clk *clk, unsigned long rate)
-+{
-+ struct main_clk *mclk = (struct main_clk *)clk;
-+ int i;
-+ int div;
-+ unsigned long parent_rate = jz_clk_pll_get_rate(clk->parent);
-+
-+ rate = jz_clk_main_round_rate(clk, rate);
-+
-+ div = parent_rate / rate;
-+
-+ i = (ffs(div) - 1) << 1;
-+ if (i > 0 && !(div & BIT(i-1)))
-+ i -= 1;
-+
-+ jz_clk_reg_write_mask(JZ_REG_CLOCK_CTRL, i << mclk->div_offset,
-+ 0xf << mclk->div_offset);
-+
-+ return 0;
-+}
-+
-+static struct clk_ops jz_clk_static_ops = {
-+ .get_rate = jz_clk_static_get_rate,
-+ .enable = jz_clk_enable_gating,
-+ .disable = jz_clk_disable_gating,
-+ .is_enabled = jz_clk_is_enabled_gating,
-+};
-+
-+static struct static_clk jz_clk_ext = {
-+ .clk = {
-+ .name = "ext",
-+ .gate_bit = JZ4740_CLK_NOT_GATED,
-+ .ops = &jz_clk_static_ops,
-+ },
-+};
-+
-+static struct clk_ops jz_clk_pll_ops = {
-+ .get_rate = jz_clk_static_get_rate,
-+};
-+
-+static struct clk jz_clk_pll = {
-+ .name = "pll",
-+ .parent = &jz_clk_ext.clk,
-+ .ops = &jz_clk_pll_ops,
-+};
-+
-+static struct clk_ops jz_clk_pll_half_ops = {
-+ .get_rate = jz_clk_pll_half_get_rate,
-+};
-+
-+static struct clk jz_clk_pll_half = {
-+ .name = "pll half",
-+ .parent = &jz_clk_pll,
-+ .ops = &jz_clk_pll_half_ops,
-+};
-+
-+static const struct clk_ops jz_clk_main_ops = {
-+ .get_rate = jz_clk_main_get_rate,
-+ .set_rate = jz_clk_main_set_rate,
-+ .round_rate = jz_clk_main_round_rate,
-+};
-+
-+static struct main_clk jz_clk_cpu = {
-+ .clk = {
-+ .name = "cclk",
-+ .parent = &jz_clk_pll,
-+ .ops = &jz_clk_main_ops,
-+ },
-+ .div_offset = JZ_CLOCK_CTRL_CDIV_OFFSET,
-+};
-+
-+static struct main_clk jz_clk_memory = {
-+ .clk = {
-+ .name = "mclk",
-+ .parent = &jz_clk_pll,
-+ .ops = &jz_clk_main_ops,
-+ },
-+ .div_offset = JZ_CLOCK_CTRL_MDIV_OFFSET,
-+};
-+
-+static struct main_clk jz_clk_high_speed_peripheral = {
-+ .clk = {
-+ .name = "hclk",
-+ .parent = &jz_clk_pll,
-+ .ops = &jz_clk_main_ops,
-+ },
-+ .div_offset = JZ_CLOCK_CTRL_HDIV_OFFSET,
-+};
-+
-+
-+static struct main_clk jz_clk_low_speed_peripheral = {
-+ .clk = {
-+ .name = "pclk",
-+ .parent = &jz_clk_pll,
-+ .ops = &jz_clk_main_ops,
-+ },
-+ .div_offset = JZ_CLOCK_CTRL_PDIV_OFFSET,
-+};
-+
-+static const struct clk_ops jz_clk_ko_ops = {
-+ .enable = jz_clk_ko_enable,
-+ .disable = jz_clk_ko_disable,
-+ .is_enabled = jz_clk_ko_is_enabled,
-+};
-+
-+static struct clk jz_clk_ko = {
-+ .name = "cko",
-+ .parent = &jz_clk_memory.clk,
-+ .ops = &jz_clk_ko_ops,
-+};
-+
-+static int jz_clk_spi_set_parent(struct clk *clk, struct clk *parent)
-+{
-+ if (parent == &jz_clk_pll)
-+ jz_clk_reg_set_bits(JZ_CLOCK_SPI_SRC_PLL, JZ_REG_CLOCK_SPI);
-+ else if (parent == &jz_clk_ext.clk)
-+ jz_clk_reg_clear_bits(JZ_CLOCK_SPI_SRC_PLL, JZ_REG_CLOCK_SPI);
-+ else
-+ return -EINVAL;
-+
-+ clk->parent = parent;
-+
-+ return 0;
-+}
-+
-+static int jz_clk_i2s_set_parent(struct clk *clk, struct clk *parent)
-+{
-+ if (parent == &jz_clk_pll_half)
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_CTRL, JZ_CLOCK_CTRL_I2S_SRC_PLL);
-+ else if (parent == &jz_clk_ext.clk)
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_CTRL, JZ_CLOCK_CTRL_I2S_SRC_PLL);
-+ else
-+ return -EINVAL;
-+
-+ clk->parent = parent;
-+
-+ return 0;
-+}
-+
-+static int jz_clk_udc_enable(struct clk *clk)
-+{
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_SLEEP_CTRL,
-+ JZ_CLOCK_SLEEP_CTRL_ENABLE_UDC);
-+
-+ return 0;
-+}
-+
-+static int jz_clk_udc_disable(struct clk *clk)
-+{
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_SLEEP_CTRL,
-+ JZ_CLOCK_SLEEP_CTRL_ENABLE_UDC);
-+
-+ return 0;
-+}
-+
-+static int jz_clk_udc_is_enabled(struct clk *clk)
-+{
-+ return !!(jz_clk_reg_read(JZ_REG_CLOCK_SLEEP_CTRL) &
-+ JZ_CLOCK_SLEEP_CTRL_ENABLE_UDC);
-+}
-+static int jz_clk_udc_set_parent(struct clk *clk, struct clk *parent)
-+{
-+ if (parent == &jz_clk_pll_half)
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_CTRL, JZ_CLOCK_CTRL_UDC_SRC_PLL);
-+ else if (parent == &jz_clk_ext.clk)
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_CTRL, JZ_CLOCK_CTRL_UDC_SRC_PLL);
-+ else
-+ return -EINVAL;
-+
-+ clk->parent = parent;
-+
-+ return 0;
-+}
-+
-+static int jz_clk_udc_set_rate(struct clk *clk, unsigned long rate)
-+{
-+ int div;
-+
-+ if (clk->parent == &jz_clk_ext.clk)
-+ return -EINVAL;
-+
-+ div = clk_get_rate(clk->parent) / rate - 1;
-+
-+ if (div < 0)
-+ div = 0;
-+ else if (div > 63)
-+ div = 63;
-+
-+ jz_clk_reg_write_mask(JZ_REG_CLOCK_CTRL, div << JZ_CLOCK_CTRL_UDIV_OFFSET,
-+ JZ_CLOCK_CTRL_UDIV_MASK);
-+ return 0;
-+}
-+
-+static unsigned long jz_clk_udc_get_rate(struct clk *clk)
-+{
-+ int div;
-+
-+ if (clk->parent == &jz_clk_ext.clk)
-+ return clk_get_rate(clk->parent);
-+
-+ div = (jz_clk_reg_read(JZ_REG_CLOCK_CTRL) & JZ_CLOCK_CTRL_UDIV_MASK);
-+ div >>= JZ_CLOCK_CTRL_UDIV_OFFSET;
-+ div += 1;
-+
-+ return clk_get_rate(clk->parent) / div;
-+}
-+
-+static unsigned long jz_clk_divided_get_rate(struct clk *clk)
-+{
-+ struct divided_clk *dclk = (struct divided_clk *)clk;
-+ int div;
-+
-+ if (clk->parent == &jz_clk_ext.clk)
-+ return clk_get_rate(clk->parent);
-+
-+ div = (jz_clk_reg_read(dclk->reg) & dclk->mask) + 1;
-+
-+ return clk_get_rate(clk->parent) / div;
-+}
-+
-+static int jz_clk_divided_set_rate(struct clk *clk, unsigned long rate)
-+{
-+ struct divided_clk *dclk = (struct divided_clk *)clk;
-+ int div;
-+
-+ if (clk->parent == &jz_clk_ext.clk)
-+ return -EINVAL;
-+
-+ div = clk_get_rate(clk->parent) / rate - 1;
-+
-+ if (div < 0)
-+ div = 0;
-+ else if (div > dclk->mask)
-+ div = dclk->mask;
-+
-+ jz_clk_reg_write_mask(dclk->reg, div, dclk->mask);
-+
-+ return 0;
-+}
-+
-+static unsigned long jz_clk_ldclk_round_rate(struct clk *clk, unsigned long rate)
-+{
-+ int div;
-+ unsigned long parent_rate = jz_clk_pll_half_get_rate(clk->parent);
-+
-+ if (rate > 150000000)
-+ return 150000000;
-+
-+ div = parent_rate / rate;
-+ if (div < 1)
-+ div = 1;
-+ else if (div > 32)
-+ div = 32;
-+
-+ return parent_rate / div;
-+}
-+
-+static int jz_clk_ldclk_set_rate(struct clk *clk, unsigned long rate)
-+{
-+ int div;
-+
-+ if (rate > 150000000)
-+ return -EINVAL;
-+
-+ div = jz_clk_pll_half_get_rate(clk->parent) / rate - 1;
-+ if (div < 0)
-+ div = 0;
-+ else if (div > 31)
-+ div = 31;
-+
-+ jz_clk_reg_write_mask(JZ_REG_CLOCK_CTRL, div << JZ_CLOCK_CTRL_LDIV_OFFSET,
-+ JZ_CLOCK_CTRL_LDIV_MASK);
-+
-+ return 0;
-+}
-+
-+static unsigned long jz_clk_ldclk_get_rate(struct clk *clk)
-+{
-+ int div;
-+
-+ div = jz_clk_reg_read(JZ_REG_CLOCK_CTRL) & JZ_CLOCK_CTRL_LDIV_MASK;
-+ div >>= JZ_CLOCK_CTRL_LDIV_OFFSET;
-+
-+ return jz_clk_pll_half_get_rate(clk->parent) / (div + 1);
-+}
-+
-+static const struct clk_ops jz_clk_ops_ld = {
-+ .set_rate = jz_clk_ldclk_set_rate,
-+ .get_rate = jz_clk_ldclk_get_rate,
-+ .round_rate = jz_clk_ldclk_round_rate,
-+ .enable = jz_clk_enable_gating,
-+ .disable = jz_clk_disable_gating,
-+ .is_enabled = jz_clk_is_enabled_gating,
-+};
-+
-+static struct clk jz_clk_ld = {
-+ .name = "lcd",
-+ .gate_bit = JZ_CLOCK_GATE_LCD,
-+ .parent = &jz_clk_pll_half,
-+ .ops = &jz_clk_ops_ld,
-+};
-+
-+/* TODO: ops!!! */
-+static struct clk jz_clk_cim_mclk = {
-+ .name = "cim_mclk",
-+ .parent = &jz_clk_high_speed_peripheral.clk,
-+};
-+
-+static struct static_clk jz_clk_cim_pclk = {
-+ .clk = {
-+ .name = "cim_pclk",
-+ .gate_bit = JZ_CLOCK_GATE_CIM,
-+ .ops = &jz_clk_static_ops,
-+ },
-+};
-+
-+static const struct clk_ops jz_clk_i2s_ops = {
-+ .set_rate = jz_clk_divided_set_rate,
-+ .get_rate = jz_clk_divided_get_rate,
-+ .enable = jz_clk_enable_gating,
-+ .disable = jz_clk_disable_gating,
-+ .is_enabled = jz_clk_is_enabled_gating,
-+ .set_parent = jz_clk_i2s_set_parent,
-+};
-+
-+static const struct clk_ops jz_clk_spi_ops = {
-+ .set_rate = jz_clk_divided_set_rate,
-+ .get_rate = jz_clk_divided_get_rate,
-+ .enable = jz_clk_enable_gating,
-+ .disable = jz_clk_disable_gating,
-+ .is_enabled = jz_clk_is_enabled_gating,
-+ .set_parent = jz_clk_spi_set_parent,
-+};
-+
-+static const struct clk_ops jz_clk_divided_ops = {
-+ .set_rate = jz_clk_divided_set_rate,
-+ .get_rate = jz_clk_divided_get_rate,
-+ .enable = jz_clk_enable_gating,
-+ .disable = jz_clk_disable_gating,
-+ .is_enabled = jz_clk_is_enabled_gating,
-+};
-+
-+static struct divided_clk jz4740_clock_divided_clks[] = {
-+ {
-+ .clk = {
-+ .name = "lcd_pclk",
-+ .parent = &jz_clk_pll_half,
-+ .gate_bit = JZ4740_CLK_NOT_GATED,
-+ .ops = &jz_clk_divided_ops,
-+ },
-+ .reg = JZ_REG_CLOCK_LCD,
-+ .mask = JZ_CLOCK_LCD_DIV_MASK,
-+ },
-+ {
-+ .clk = {
-+ .name = "i2s",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_I2S,
-+ .ops = &jz_clk_i2s_ops,
-+ },
-+ .reg = JZ_REG_CLOCK_I2S,
-+ .mask = JZ_CLOCK_I2S_DIV_MASK,
-+ },
-+ {
-+ .clk = {
-+ .name = "spi",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_SPI,
-+ .ops = &jz_clk_spi_ops,
-+ },
-+ .reg = JZ_REG_CLOCK_SPI,
-+ .mask = JZ_CLOCK_SPI_DIV_MASK,
-+ },
-+ {
-+ .clk = {
-+ .name = "mmc",
-+ .parent = &jz_clk_pll_half,
-+ .gate_bit = JZ_CLOCK_GATE_MMC,
-+ .ops = &jz_clk_divided_ops,
-+ },
-+ .reg = JZ_REG_CLOCK_MMC,
-+ .mask = JZ_CLOCK_MMC_DIV_MASK,
-+ },
-+ {
-+ .clk = {
-+ .name = "uhc",
-+ .parent = &jz_clk_pll_half,
-+ .gate_bit = JZ_CLOCK_GATE_UHC,
-+ .ops = &jz_clk_divided_ops,
-+ },
-+ .reg = JZ_REG_CLOCK_UHC,
-+ .mask = JZ_CLOCK_UHC_DIV_MASK,
-+ },
-+};
-+
-+static const struct clk_ops jz_clk_udc_ops = {
-+ .set_parent = jz_clk_udc_set_parent,
-+ .set_rate = jz_clk_udc_set_rate,
-+ .get_rate = jz_clk_udc_get_rate,
-+ .enable = jz_clk_udc_enable,
-+ .disable = jz_clk_udc_disable,
-+ .is_enabled = jz_clk_udc_is_enabled,
-+};
-+
-+static const struct clk_ops jz_clk_simple_ops = {
-+ .enable = jz_clk_enable_gating,
-+ .disable = jz_clk_disable_gating,
-+ .is_enabled = jz_clk_is_enabled_gating,
-+};
-+
-+static struct clk jz4740_clock_simple_clks[] = {
-+ {
-+ .name = "udc",
-+ .parent = &jz_clk_ext.clk,
-+ .ops = &jz_clk_udc_ops,
-+ },
-+ {
-+ .name = "uart0",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_UART0,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+ {
-+ .name = "uart1",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_UART1,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+ {
-+ .name = "dma",
-+ .parent = &jz_clk_high_speed_peripheral.clk,
-+ .gate_bit = JZ_CLOCK_GATE_UART0,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+ {
-+ .name = "ipu",
-+ .parent = &jz_clk_high_speed_peripheral.clk,
-+ .gate_bit = JZ_CLOCK_GATE_IPU,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+ {
-+ .name = "adc",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_ADC,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+ {
-+ .name = "i2c",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_I2C,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+ {
-+ .name = "aic",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_AIC,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+};
-+
-+static struct static_clk jz_clk_rtc = {
-+ .clk = {
-+ .name = "rtc",
-+ .gate_bit = JZ_CLOCK_GATE_RTC,
-+ .ops = &jz_clk_static_ops,
-+ },
-+ .rate = 32768,
-+};
-+
-+int clk_enable(struct clk *clk)
-+{
-+ if (!clk->ops->enable)
-+ return -EINVAL;
-+
-+ return clk->ops->enable(clk);
-+}
-+EXPORT_SYMBOL_GPL(clk_enable);
-+
-+void clk_disable(struct clk *clk)
-+{
-+ if (clk->ops->disable)
-+ clk->ops->disable(clk);
-+}
-+EXPORT_SYMBOL_GPL(clk_disable);
-+
-+int clk_is_enabled(struct clk *clk)
-+{
-+ if (clk->ops->is_enabled)
-+ return clk->ops->is_enabled(clk);
-+
-+ return 1;
-+}
-+
-+unsigned long clk_get_rate(struct clk *clk)
-+{
-+ if (clk->ops->get_rate)
-+ return clk->ops->get_rate(clk);
-+ if (clk->parent)
-+ return clk_get_rate(clk->parent);
-+
-+ return -EINVAL;
-+}
-+EXPORT_SYMBOL_GPL(clk_get_rate);
-+
-+int clk_set_rate(struct clk *clk, unsigned long rate)
-+{
-+ if (!clk->ops->set_rate)
-+ return -EINVAL;
-+ return clk->ops->set_rate(clk, rate);
-+}
-+EXPORT_SYMBOL_GPL(clk_set_rate);
-+
-+long clk_round_rate(struct clk *clk, unsigned long rate)
-+{
-+ if (clk->ops->round_rate)
-+ return clk->ops->round_rate(clk, rate);
-+
-+ return -EINVAL;
-+}
-+EXPORT_SYMBOL_GPL(clk_round_rate);
-+
-+int clk_set_parent(struct clk *clk, struct clk *parent)
-+{
-+ int ret;
-+
-+ if (!clk->ops->set_parent)
-+ return -EINVAL;
-+
-+ clk_disable(clk);
-+ ret = clk->ops->set_parent(clk, parent);
-+ clk_enable(clk);
-+
-+ jz4740_clock_debugfs_update_parent(clk);
-+
-+ return ret;
-+}
-+EXPORT_SYMBOL_GPL(clk_set_parent);
-+
-+struct clk *clk_get(struct device *dev, const char *name)
-+{
-+ struct clk *clk;
-+
-+ list_for_each_entry(clk, &jz_clocks, list) {
-+ if (strcmp(clk->name, name) == 0)
-+ return clk;
-+ }
-+ return ERR_PTR(-ENOENT);
-+}
-+EXPORT_SYMBOL_GPL(clk_get);
-+
-+void clk_put(struct clk *clk)
-+{
-+}
-+EXPORT_SYMBOL_GPL(clk_put);
-+
-+
-+static inline void clk_add(struct clk *clk)
-+{
-+ list_add_tail(&clk->list, &jz_clocks);
-+
-+ jz4740_clock_debugfs_add_clk(clk);
-+}
-+
-+static void clk_register_clks(void)
-+{
-+ size_t i;
-+
-+ clk_add(&jz_clk_ext.clk);
-+ clk_add(&jz_clk_pll);
-+ clk_add(&jz_clk_pll_half);
-+ clk_add(&jz_clk_cpu.clk);
-+ clk_add(&jz_clk_high_speed_peripheral.clk);
-+ clk_add(&jz_clk_low_speed_peripheral.clk);
-+ clk_add(&jz_clk_ko);
-+ clk_add(&jz_clk_ld);
-+ clk_add(&jz_clk_cim_mclk);
-+ clk_add(&jz_clk_cim_pclk.clk);
-+ clk_add(&jz_clk_rtc.clk);
-+
-+ for (i = 0; i < ARRAY_SIZE(jz4740_clock_divided_clks); ++i)
-+ clk_add(&jz4740_clock_divided_clks[i].clk);
-+
-+ for (i = 0; i < ARRAY_SIZE(jz4740_clock_simple_clks); ++i)
-+ clk_add(&jz4740_clock_simple_clks[i]);
-+}
-+
-+void jz4740_clock_set_wait_mode(enum jz4740_wait_mode mode)
-+{
-+ switch (mode) {
-+ case JZ4740_WAIT_MODE_IDLE:
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_LOW_POWER, JZ_CLOCK_LOW_POWER_MODE_SLEEP);
-+ break;
-+ case JZ4740_WAIT_MODE_SLEEP:
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_LOW_POWER, JZ_CLOCK_LOW_POWER_MODE_SLEEP);
-+ break;
-+ }
-+}
-+
-+void jz4740_clock_udc_disable_auto_suspend(void)
-+{
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_GATE, JZ_CLOCK_GATE_UDC);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_clock_udc_disable_auto_suspend);
-+
-+void jz4740_clock_udc_enable_auto_suspend(void)
-+{
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_GATE, JZ_CLOCK_GATE_UDC);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_clock_udc_enable_auto_suspend);
-+
-+void jz4740_clock_suspend(void)
-+{
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_GATE,
-+ JZ_CLOCK_GATE_TCU | JZ_CLOCK_GATE_DMAC | JZ_CLOCK_GATE_UART0);
-+
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_PLL, JZ_CLOCK_PLL_ENABLED);
-+}
-+
-+void jz4740_clock_resume(void)
-+{
-+ uint32_t pll;
-+
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_PLL, JZ_CLOCK_PLL_ENABLED);
-+
-+ do {
-+ pll = jz_clk_reg_read(JZ_REG_CLOCK_PLL);
-+ } while (!(pll & JZ_CLOCK_PLL_STABLE));
-+
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_GATE,
-+ JZ_CLOCK_GATE_TCU | JZ_CLOCK_GATE_DMAC | JZ_CLOCK_GATE_UART0);
-+}
-+
-+int jz4740_clock_init(void)
-+{
-+ uint32_t val;
-+
-+ jz_clock_base = ioremap(CPHYSADDR(JZ4740_CPM_BASE_ADDR), 0x100);
-+ if (!jz_clock_base)
-+ return -EBUSY;
-+
-+ spin_lock_init(&jz_clock_lock);
-+
-+ jz_clk_ext.rate = jz4740_clock_bdata.ext_rate;
-+ jz_clk_rtc.rate = jz4740_clock_bdata.rtc_rate;
-+
-+ val = jz_clk_reg_read(JZ_REG_CLOCK_SPI);
-+
-+ if (val & JZ_CLOCK_SPI_SRC_PLL)
-+ jz4740_clock_divided_clks[1].clk.parent = &jz_clk_pll_half;
-+
-+ val = jz_clk_reg_read(JZ_REG_CLOCK_CTRL);
-+
-+ if (val & JZ_CLOCK_CTRL_I2S_SRC_PLL)
-+ jz4740_clock_divided_clks[0].clk.parent = &jz_clk_pll_half;
-+
-+ if (val & JZ_CLOCK_CTRL_UDC_SRC_PLL)
-+ jz4740_clock_simple_clks[0].parent = &jz_clk_pll_half;
-+
-+ jz4740_clock_debugfs_init();
-+
-+ clk_register_clks();
-+
-+ return 0;
-+}
-diff --git a/arch/mips/jz4740/clock.h b/arch/mips/jz4740/clock.h
-new file mode 100644
-index 0000000..96010a4
---- /dev/null
-+++ b/arch/mips/jz4740/clock.h
-@@ -0,0 +1,75 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC clock support
-+ *
-+ * 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.
-+ *
-+ * 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 __JZ4740_CLOCK_H__
-+#define __JZ4740_CLOCK_H__
-+
-+struct jz4740_clock_board_data {
-+ unsigned long ext_rate;
-+ unsigned long rtc_rate;
-+};
-+
-+extern struct jz4740_clock_board_data jz4740_clock_bdata;
-+
-+int jz4740_clock_init(void);
-+void jz4740_clock_suspend(void);
-+void jz4740_clock_resume(void);
-+
-+struct clk;
-+
-+struct clk_ops {
-+ unsigned long (*get_rate)(struct clk *clk);
-+ unsigned long (*round_rate)(struct clk *clk, unsigned long rate);
-+ int (*set_rate)(struct clk *clk, unsigned long rate);
-+ int (*enable)(struct clk *clk);
-+ int (*disable)(struct clk *clk);
-+ int (*is_enabled)(struct clk *clk);
-+
-+ int (*set_parent)(struct clk *clk, struct clk *parent);
-+
-+};
-+
-+struct clk {
-+ const char *name;
-+ struct clk *parent;
-+
-+ uint32_t gate_bit;
-+
-+ const struct clk_ops *ops;
-+
-+ struct list_head list;
-+
-+#ifdef CONFIG_DEBUG_FS
-+ struct dentry *debugfs_entry;
-+ struct dentry *debugfs_parent_entry;
-+#endif
-+
-+};
-+
-+#define JZ4740_CLK_NOT_GATED ((uint32_t)-1)
-+
-+int clk_is_enabled(struct clk *clk);
-+
-+#ifdef CONFIG_DEBUG_FS
-+void jz4740_clock_debugfs_init(void);
-+void jz4740_clock_debugfs_add_clk(struct clk *clk);
-+void jz4740_clock_debugfs_update_parent(struct clk *clk);
-+#else
-+static inline void jz4740_clock_debugfs_init(void) {};
-+static inline void jz4740_clock_debugfs_add_clk(struct clk *clk) {};
-+static inline void jz4740_clock_debugfs_update_parent(struct clk *clk) {};
-+#endif
-+
-+#endif
-diff --git a/arch/mips/jz4740/dma.c b/arch/mips/jz4740/dma.c
-new file mode 100644
-index 0000000..b712afc
---- /dev/null
-+++ b/arch/mips/jz4740/dma.c
-@@ -0,0 +1,336 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC DMA support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/spinlock.h>
-+#include <linux/interrupt.h>
-+
-+#include <linux/dma-mapping.h>
-+#include <asm/mach-jz4740/dma.h>
-+#include <asm/mach-jz4740/base.h>
-+
-+#define JZ_REG_DMA_SRC_ADDR(x) (0x00 + (x) * 0x20)
-+#define JZ_REG_DMA_DST_ADDR(x) (0x04 + (x) * 0x20)
-+#define JZ_REG_DMA_TRANSFER_COUNT(x) (0x08 + (x) * 0x20)
-+#define JZ_REG_DMA_REQ_TYPE(x) (0x0C + (x) * 0x20)
-+#define JZ_REG_DMA_STATUS_CTRL(x) (0x10 + (x) * 0x20)
-+#define JZ_REG_DMA_CMD(x) (0x14 + (x) * 0x20)
-+#define JZ_REG_DMA_DESC_ADDR(x) (0x18 + (x) * 0x20)
-+
-+#define JZ_REG_DMA_CTRL 0x300
-+#define JZ_REG_DMA_IRQ 0x304
-+#define JZ_REG_DMA_DOORBELL 0x308
-+#define JZ_REG_DMA_DOORBELL_SET 0x30C
-+
-+#define JZ_DMA_STATUS_CTRL_NO_DESC BIT(31)
-+#define JZ_DMA_STATUS_CTRL_DESC_INV BIT(6)
-+#define JZ_DMA_STATUS_CTRL_ADDR_ERR BIT(4)
-+#define JZ_DMA_STATUS_CTRL_TRANSFER_DONE BIT(3)
-+#define JZ_DMA_STATUS_CTRL_HALT BIT(2)
-+#define JZ_DMA_STATUS_CTRL_COUNT_TERMINATE BIT(1)
-+#define JZ_DMA_STATUS_CTRL_ENABLE BIT(0)
-+
-+#define JZ_DMA_CMD_SRC_INC BIT(23)
-+#define JZ_DMA_CMD_DST_INC BIT(22)
-+#define JZ_DMA_CMD_RDIL_MASK (0xf << 16)
-+#define JZ_DMA_CMD_SRC_WIDTH_MASK (0x3 << 14)
-+#define JZ_DMA_CMD_DST_WIDTH_MASK (0x3 << 12)
-+#define JZ_DMA_CMD_INTERVAL_LENGTH_MASK (0x7 << 8)
-+#define JZ_DMA_CMD_BLOCK_MODE BIT(7)
-+#define JZ_DMA_CMD_DESC_VALID BIT(4)
-+#define JZ_DMA_CMD_DESC_VALID_MODE BIT(3)
-+#define JZ_DMA_CMD_VALID_IRQ_ENABLE BIT(2)
-+#define JZ_DMA_CMD_TRANSFER_IRQ_ENABLE BIT(1)
-+#define JZ_DMA_CMD_LINK_ENABLE BIT(0)
-+
-+#define JZ_DMA_CMD_FLAGS_OFFSET 22
-+#define JZ_DMA_CMD_RDIL_OFFSET 16
-+#define JZ_DMA_CMD_SRC_WIDTH_OFFSET 14
-+#define JZ_DMA_CMD_DST_WIDTH_OFFSET 12
-+#define JZ_DMA_CMD_TRANSFER_SIZE_OFFSET 8
-+#define JZ_DMA_CMD_MODE_OFFSET 7
-+
-+#define JZ_DMA_CTRL_PRIORITY_MASK (0x3 << 8)
-+#define JZ_DMA_CTRL_HALT BIT(3)
-+#define JZ_DMA_CTRL_ADDRESS_ERROR BIT(2)
-+#define JZ_DMA_CTRL_ENABLE BIT(0)
-+
-+
-+static void __iomem *jz4740_dma_base;
-+static spinlock_t jz4740_dma_lock;
-+
-+static inline uint32_t jz4740_dma_read(size_t reg)
-+{
-+ return readl(jz4740_dma_base + reg);
-+}
-+
-+static inline void jz4740_dma_write(size_t reg, uint32_t val)
-+{
-+ writel(val, jz4740_dma_base + reg);
-+}
-+
-+static inline void jz4740_dma_write_mask(size_t reg, uint32_t val, uint32_t mask)
-+{
-+ uint32_t val2;
-+ val2 = jz4740_dma_read(reg);
-+ val2 &= ~mask;
-+ val2 |= val;
-+ jz4740_dma_write(reg, val2);
-+}
-+
-+struct jz4740_dma_chan {
-+ unsigned int id;
-+ void *dev;
-+ const char *name;
-+
-+ enum jz4740_dma_flags flags;
-+ uint32_t transfer_shift;
-+
-+ jz4740_dma_complete_callback_t complete_cb;
-+
-+ unsigned used:1;
-+};
-+
-+#define JZ4740_DMA_CHANNEL(_id) { .id = _id }
-+
-+struct jz4740_dma_chan jz4740_dma_channels[] = {
-+ JZ4740_DMA_CHANNEL(0),
-+ JZ4740_DMA_CHANNEL(1),
-+ JZ4740_DMA_CHANNEL(2),
-+ JZ4740_DMA_CHANNEL(3),
-+ JZ4740_DMA_CHANNEL(4),
-+ JZ4740_DMA_CHANNEL(5),
-+};
-+
-+struct jz4740_dma_chan *jz4740_dma_request(void *dev, const char *name)
-+{
-+ unsigned int i;
-+ struct jz4740_dma_chan *dma = NULL;
-+
-+ spin_lock(&jz4740_dma_lock);
-+
-+ for (i = 0; i < ARRAY_SIZE(jz4740_dma_channels); ++i) {
-+ if (!jz4740_dma_channels[i].used) {
-+ dma = &jz4740_dma_channels[i];
-+ dma->used = 1;
-+ break;
-+ }
-+ }
-+
-+ spin_unlock(&jz4740_dma_lock);
-+
-+ if (!dma)
-+ return NULL;
-+
-+ dma->dev = dev;
-+ dma->name = name;
-+
-+ return dma;
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_request);
-+
-+void jz4740_dma_configure(struct jz4740_dma_chan *dma,
-+ const struct jz4740_dma_config *config)
-+{
-+ uint32_t cmd;
-+
-+ switch (config->transfer_size) {
-+ case JZ4740_DMA_TRANSFER_SIZE_2BYTE:
-+ dma->transfer_shift = 1;
-+ break;
-+ case JZ4740_DMA_TRANSFER_SIZE_4BYTE:
-+ dma->transfer_shift = 2;
-+ break;
-+ case JZ4740_DMA_TRANSFER_SIZE_16BYTE:
-+ dma->transfer_shift = 4;
-+ break;
-+ case JZ4740_DMA_TRANSFER_SIZE_32BYTE:
-+ dma->transfer_shift = 5;
-+ break;
-+ default:
-+ dma->transfer_shift = 0;
-+ break;
-+ }
-+
-+ cmd = config->flags << JZ_DMA_CMD_FLAGS_OFFSET;
-+ cmd |= config->src_width << JZ_DMA_CMD_SRC_WIDTH_OFFSET;
-+ cmd |= config->dst_width << JZ_DMA_CMD_DST_WIDTH_OFFSET;
-+ cmd |= config->transfer_size << JZ_DMA_CMD_TRANSFER_SIZE_OFFSET;
-+ cmd |= config->mode << JZ_DMA_CMD_MODE_OFFSET;
-+ cmd |= JZ_DMA_CMD_TRANSFER_IRQ_ENABLE;
-+
-+ jz4740_dma_write(JZ_REG_DMA_CMD(dma->id), cmd);
-+ jz4740_dma_write(JZ_REG_DMA_STATUS_CTRL(dma->id), 0);
-+ jz4740_dma_write(JZ_REG_DMA_REQ_TYPE(dma->id), config->request_type);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_configure);
-+
-+void jz4740_dma_set_src_addr(struct jz4740_dma_chan *dma, dma_addr_t src)
-+{
-+ jz4740_dma_write(JZ_REG_DMA_SRC_ADDR(dma->id), src);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_set_src_addr);
-+
-+void jz4740_dma_set_dst_addr(struct jz4740_dma_chan *dma, dma_addr_t dst)
-+{
-+ jz4740_dma_write(JZ_REG_DMA_DST_ADDR(dma->id), dst);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_set_dst_addr);
-+
-+void jz4740_dma_set_transfer_count(struct jz4740_dma_chan *dma, uint32_t count)
-+{
-+ count >>= dma->transfer_shift;
-+ jz4740_dma_write(JZ_REG_DMA_TRANSFER_COUNT(dma->id), count);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_set_transfer_count);
-+
-+void jz4740_dma_set_complete_cb(struct jz4740_dma_chan *dma,
-+ jz4740_dma_complete_callback_t cb)
-+{
-+ dma->complete_cb = cb;
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_set_complete_cb);
-+
-+void jz4740_dma_free(struct jz4740_dma_chan *dma)
-+{
-+ dma->dev = NULL;
-+ dma->complete_cb = NULL;
-+ dma->used = 0;
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_free);
-+
-+void jz4740_dma_enable(struct jz4740_dma_chan *dma)
-+{
-+ jz4740_dma_write_mask(JZ_REG_DMA_STATUS_CTRL(dma->id),
-+ JZ_DMA_STATUS_CTRL_NO_DESC | JZ_DMA_STATUS_CTRL_ENABLE,
-+ JZ_DMA_STATUS_CTRL_HALT | JZ_DMA_STATUS_CTRL_NO_DESC |
-+ JZ_DMA_STATUS_CTRL_ENABLE);
-+
-+ jz4740_dma_write_mask(JZ_REG_DMA_CTRL,
-+ JZ_DMA_CTRL_ENABLE,
-+ JZ_DMA_CTRL_HALT | JZ_DMA_CTRL_ENABLE);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_enable);
-+
-+void jz4740_dma_disable(struct jz4740_dma_chan *dma)
-+{
-+ jz4740_dma_write_mask(JZ_REG_DMA_STATUS_CTRL(dma->id), 0,
-+ JZ_DMA_STATUS_CTRL_ENABLE);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_disable);
-+
-+uint32_t jz4740_dma_get_residue(const struct jz4740_dma_chan *dma)
-+{
-+ uint32_t residue;
-+ residue = jz4740_dma_read(JZ_REG_DMA_TRANSFER_COUNT(dma->id));
-+ return residue << dma->transfer_shift;
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_get_residue);
-+
-+static void jz4740_dma_chan_irq(struct jz4740_dma_chan *dma)
-+{
-+ uint32_t status;
-+
-+ status = jz4740_dma_read(JZ_REG_DMA_STATUS_CTRL(dma->id));
-+
-+ jz4740_dma_write_mask(JZ_REG_DMA_STATUS_CTRL(dma->id), 0,
-+ JZ_DMA_STATUS_CTRL_ENABLE | JZ_DMA_STATUS_CTRL_TRANSFER_DONE);
-+
-+ if (dma->complete_cb)
-+ dma->complete_cb(dma, 0, dma->dev);
-+}
-+
-+static irqreturn_t jz4740_dma_irq(int irq, void *dev_id)
-+{
-+ uint32_t irq_status;
-+ unsigned int i;
-+
-+ irq_status = readl(jz4740_dma_base + JZ_REG_DMA_IRQ);
-+
-+ for (i = 0; i < 6; ++i) {
-+ if (irq_status & (1 << i))
-+ jz4740_dma_chan_irq(&jz4740_dma_channels[i]);
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+#if 0
-+static struct jz4740_dma_config dma_test_config = {
-+ .src_width = JZ4740_DMA_WIDTH_32BIT,
-+ .dst_width = JZ4740_DMA_WIDTH_32BIT,
-+ .transfer_size = JZ4740_DMA_TRANSFER_SIZE_4BYTE,
-+ .request_type = JZ4740_DMA_TYPE_AUTO_REQUEST,
-+ .flags = JZ4740_DMA_SRC_AUTOINC | JZ4740_DMA_DST_AUTOINC,
-+ .mode = JZ4740_DMA_MODE_BLOCK,
-+};
-+
-+static void jz4740_dma_test(void)
-+{
-+ uint32_t *buf1, *buf2;
-+ dma_addr_t addr1, addr2;
-+ struct jz4740_dma_chan *dma = jz4740_dma_request(NULL, "dma test");
-+ int i;
-+
-+ printk("STARTING DMA TEST\n");
-+
-+ buf1 = dma_alloc_coherent(NULL,
-+ 0x1000,
-+ &addr1, GFP_KERNEL);
-+ buf2 = dma_alloc_coherent(NULL,
-+ 0x1000,
-+ &addr2, GFP_KERNEL);
-+
-+ for (i = 0; i < 0x400; ++i)
-+ buf1[i] = i;
-+
-+
-+ jz4740_dma_configure(dma, &dma_test_config);
-+ jz4740_dma_set_src_addr(dma, addr1);
-+ jz4740_dma_set_dst_addr(dma, addr2);
-+ jz4740_dma_set_transfer_count(dma, 0x1000);
-+
-+ jz4740_dma_enable(dma);
-+ mdelay(2000);
-+
-+ for (i = 0; i < 0x400; ++i) {
-+ if (buf2[i] != i)
-+ printk("OH MY GOD: %x %x\n", i, buf2[i]);
-+ }
-+
-+ printk("DMA TEST DONE\n");
-+}
-+#endif
-+
-+static int jz4740_dma_init(void)
-+{
-+ unsigned int ret;
-+
-+ jz4740_dma_base = ioremap(CPHYSADDR(JZ4740_DMAC_BASE_ADDR), 0x400);
-+
-+ if (!jz4740_dma_base)
-+ return -EBUSY;
-+
-+ spin_lock_init(&jz4740_dma_lock);
-+
-+ ret = request_irq(JZ4740_IRQ_DMAC, jz4740_dma_irq, 0, "DMA", NULL);
-+
-+ if (ret)
-+ printk(KERN_ERR "JZ4740 DMA: Failed to request irq: %d\n", ret);
-+
-+ return ret;
-+}
-+arch_initcall(jz4740_dma_init);
-diff --git a/arch/mips/jz4740/gpio.c b/arch/mips/jz4740/gpio.c
-new file mode 100644
-index 0000000..84f4ef9
---- /dev/null
-+++ b/arch/mips/jz4740/gpio.c
-@@ -0,0 +1,598 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform GPIO support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+
-+#include <linux/spinlock.h>
-+#include <linux/sysdev.h>
-+#include <linux/io.h>
-+#include <linux/gpio.h>
-+#include <linux/delay.h>
-+#include <linux/interrupt.h>
-+#include <linux/bitops.h>
-+
-+#include <linux/debugfs.h>
-+#include <linux/seq_file.h>
-+
-+#include <asm/mach-jz4740/base.h>
-+
-+#define JZ4740_GPIO_BASE_A (32*0)
-+#define JZ4740_GPIO_BASE_B (32*1)
-+#define JZ4740_GPIO_BASE_C (32*2)
-+#define JZ4740_GPIO_BASE_D (32*3)
-+
-+#define JZ4740_GPIO_NUM_A 32
-+#define JZ4740_GPIO_NUM_B 32
-+#define JZ4740_GPIO_NUM_C 31
-+#define JZ4740_GPIO_NUM_D 32
-+
-+#define JZ4740_IRQ_GPIO_BASE_A (JZ4740_IRQ_GPIO(0) + JZ4740_GPIO_BASE_A)
-+#define JZ4740_IRQ_GPIO_BASE_B (JZ4740_IRQ_GPIO(0) + JZ4740_GPIO_BASE_B)
-+#define JZ4740_IRQ_GPIO_BASE_C (JZ4740_IRQ_GPIO(0) + JZ4740_GPIO_BASE_C)
-+#define JZ4740_IRQ_GPIO_BASE_D (JZ4740_IRQ_GPIO(0) + JZ4740_GPIO_BASE_D)
-+
-+#define JZ4740_IRQ_GPIO_A(num) (JZ4740_IRQ_GPIO_BASE_A + num)
-+#define JZ4740_IRQ_GPIO_B(num) (JZ4740_IRQ_GPIO_BASE_B + num)
-+#define JZ4740_IRQ_GPIO_C(num) (JZ4740_IRQ_GPIO_BASE_C + num)
-+#define JZ4740_IRQ_GPIO_D(num) (JZ4740_IRQ_GPIO_BASE_D + num)
-+
-+#define JZ_REG_GPIO_PIN 0x00
-+#define JZ_REG_GPIO_DATA 0x10
-+#define JZ_REG_GPIO_DATA_SET 0x14
-+#define JZ_REG_GPIO_DATA_CLEAR 0x18
-+#define JZ_REG_GPIO_MASK 0x20
-+#define JZ_REG_GPIO_MASK_SET 0x24
-+#define JZ_REG_GPIO_MASK_CLEAR 0x28
-+#define JZ_REG_GPIO_PULL 0x30
-+#define JZ_REG_GPIO_PULL_SET 0x34
-+#define JZ_REG_GPIO_PULL_CLEAR 0x38
-+#define JZ_REG_GPIO_FUNC 0x40
-+#define JZ_REG_GPIO_FUNC_SET 0x44
-+#define JZ_REG_GPIO_FUNC_CLEAR 0x48
-+#define JZ_REG_GPIO_SELECT 0x50
-+#define JZ_REG_GPIO_SELECT_SET 0x54
-+#define JZ_REG_GPIO_SELECT_CLEAR 0x58
-+#define JZ_REG_GPIO_DIRECTION 0x60
-+#define JZ_REG_GPIO_DIRECTION_SET 0x64
-+#define JZ_REG_GPIO_DIRECTION_CLEAR 0x68
-+#define JZ_REG_GPIO_TRIGGER 0x70
-+#define JZ_REG_GPIO_TRIGGER_SET 0x74
-+#define JZ_REG_GPIO_TRIGGER_CLEAR 0x78
-+#define JZ_REG_GPIO_FLAG 0x80
-+#define JZ_REG_GPIO_FLAG_CLEAR 0x14
-+
-+
-+#define GPIO_TO_BIT(gpio) BIT(gpio & 0x1f)
-+#define GPIO_TO_REG(gpio, reg) (gpio_to_jz_gpio_chip(gpio)->base + (reg))
-+#define CHIP_TO_REG(chip, reg) (gpio_chip_to_jz_gpio_chip(chip)->base + (reg))
-+
-+struct jz_gpio_chip {
-+ unsigned int irq;
-+ unsigned int irq_base;
-+ uint32_t wakeup;
-+ uint32_t suspend_mask;
-+ uint32_t edge_trigger_both;
-+
-+ void __iomem *base;
-+
-+ spinlock_t lock;
-+
-+ struct gpio_chip gpio_chip;
-+ struct irq_chip irq_chip;
-+ struct sys_device sysdev;
-+};
-+
-+
-+static struct jz_gpio_chip jz4740_gpio_chips[];
-+
-+static inline struct jz_gpio_chip *gpio_to_jz_gpio_chip(unsigned int gpio)
-+{
-+ return &jz4740_gpio_chips[gpio >> 5];
-+}
-+
-+static inline struct jz_gpio_chip *gpio_chip_to_jz_gpio_chip(struct gpio_chip *gpio_chip)
-+{
-+ return container_of(gpio_chip, struct jz_gpio_chip, gpio_chip);
-+}
-+
-+static inline struct jz_gpio_chip *irq_to_jz_gpio_chip(unsigned int irq)
-+{
-+ return get_irq_chip_data(irq);
-+}
-+
-+static inline void jz_gpio_write_bit(unsigned int gpio, unsigned int reg)
-+{
-+ writel(GPIO_TO_BIT(gpio), GPIO_TO_REG(gpio, reg));
-+}
-+
-+int jz_gpio_set_function(int gpio, enum jz_gpio_function function)
-+{
-+ if (function == JZ_GPIO_FUNC_NONE) {
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_FUNC_CLEAR);
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_SELECT_CLEAR);
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_TRIGGER_CLEAR);
-+ } else {
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_FUNC_SET);
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_TRIGGER_CLEAR);
-+ switch (function) {
-+ case JZ_GPIO_FUNC1:
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_SELECT_CLEAR);
-+ break;
-+ case JZ_GPIO_FUNC3:
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_TRIGGER_SET);
-+ case JZ_GPIO_FUNC2: /* Falltrough */
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_SELECT_SET);
-+ break;
-+ default:
-+ BUG();
-+ break;
-+ }
-+ }
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_set_function);
-+
-+int jz_gpio_bulk_request(const struct jz_gpio_bulk_request *request, size_t num)
-+{
-+ size_t i;
-+ int ret;
-+
-+ for (i = 0; i < num; ++i, ++request) {
-+ ret = gpio_request(request->gpio, request->name);
-+ if (ret)
-+ goto err;
-+ jz_gpio_set_function(request->gpio, request->function);
-+ }
-+
-+ return 0;
-+
-+err:
-+ for (--request; i > 0; --i, --request) {
-+ gpio_free(request->gpio);
-+ jz_gpio_set_function(request->gpio, JZ_GPIO_FUNC_NONE);
-+ }
-+
-+ return ret;
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_bulk_request);
-+
-+void jz_gpio_bulk_free(const struct jz_gpio_bulk_request *request, size_t num)
-+{
-+ size_t i;
-+
-+ for (i = 0; i < num; ++i, ++request) {
-+ gpio_free(request->gpio);
-+ jz_gpio_set_function(request->gpio, JZ_GPIO_FUNC_NONE);
-+ }
-+
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_bulk_free);
-+
-+void jz_gpio_bulk_suspend(const struct jz_gpio_bulk_request *request, size_t num)
-+{
-+ size_t i;
-+
-+ for (i = 0; i < num; ++i, ++request) {
-+ jz_gpio_set_function(request->gpio, JZ_GPIO_FUNC_NONE);
-+ jz_gpio_write_bit(request->gpio, JZ_REG_GPIO_DIRECTION_CLEAR);
-+ jz_gpio_write_bit(request->gpio, JZ_REG_GPIO_PULL_SET);
-+ }
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_bulk_suspend);
-+
-+void jz_gpio_bulk_resume(const struct jz_gpio_bulk_request *request, size_t num)
-+{
-+ size_t i;
-+
-+ for (i = 0; i < num; ++i, ++request)
-+ jz_gpio_set_function(request->gpio, request->function);
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_bulk_resume);
-+
-+void jz_gpio_enable_pullup(unsigned gpio)
-+{
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_PULL_CLEAR);
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_enable_pullup);
-+
-+void jz_gpio_disable_pullup(unsigned gpio)
-+{
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_PULL_SET);
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_disable_pullup);
-+
-+static int jz_gpio_get_value(struct gpio_chip *chip, unsigned gpio)
-+{
-+ return !!(readl(CHIP_TO_REG(chip, JZ_REG_GPIO_PIN)) & BIT(gpio));
-+}
-+
-+static void jz_gpio_set_value(struct gpio_chip *chip, unsigned gpio, int value)
-+{
-+ uint32_t __iomem *reg = CHIP_TO_REG(chip, JZ_REG_GPIO_DATA_SET);
-+ reg += !value;
-+ writel(BIT(gpio), reg);
-+}
-+
-+static int jz_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
-+ int value)
-+{
-+ writel(BIT(gpio), CHIP_TO_REG(chip, JZ_REG_GPIO_DIRECTION_SET));
-+ jz_gpio_set_value(chip, gpio, value);
-+
-+ return 0;
-+}
-+
-+static int jz_gpio_direction_input(struct gpio_chip *chip, unsigned gpio)
-+{
-+ writel(BIT(gpio), CHIP_TO_REG(chip, JZ_REG_GPIO_DIRECTION_CLEAR));
-+
-+ return 0;
-+}
-+
-+int jz_gpio_port_direction_input(int port, uint32_t mask)
-+{
-+ writel(mask, GPIO_TO_REG(port, JZ_REG_GPIO_DIRECTION_CLEAR));
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL(jz_gpio_port_direction_input);
-+
-+int jz_gpio_port_direction_output(int port, uint32_t mask)
-+{
-+ writel(mask, GPIO_TO_REG(port, JZ_REG_GPIO_DIRECTION_SET));
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL(jz_gpio_port_direction_output);
-+
-+void jz_gpio_port_set_value(int port, uint32_t value, uint32_t mask)
-+{
-+ writel(~value & mask, GPIO_TO_REG(port, JZ_REG_GPIO_DATA_CLEAR));
-+ writel(value & mask, GPIO_TO_REG(port, JZ_REG_GPIO_DATA_SET));
-+}
-+EXPORT_SYMBOL(jz_gpio_port_set_value);
-+
-+uint32_t jz_gpio_port_get_value(int port, uint32_t mask)
-+{
-+ uint32_t value = readl(GPIO_TO_REG(port, JZ_REG_GPIO_PIN));
-+
-+ return value & mask;
-+}
-+EXPORT_SYMBOL(jz_gpio_port_get_value);
-+
-+
-+#define IRQ_TO_GPIO(irq) (irq - JZ4740_IRQ_GPIO(0))
-+#define IRQ_TO_BIT(irq) BIT(IRQ_TO_GPIO(irq) & 0x1f)
-+
-+#define IRQ_TO_REG(irq, reg) GPIO_TO_REG(IRQ_TO_GPIO(irq), reg)
-+
-+static void jz_gpio_irq_demux_handler(unsigned int irq, struct irq_desc *desc)
-+{
-+ uint32_t flag;
-+ unsigned int gpio_irq;
-+ unsigned int gpio_bank;
-+ struct jz_gpio_chip *chip = get_irq_desc_data(desc);
-+
-+ gpio_bank = JZ4740_IRQ_GPIO0 - irq;
-+
-+ flag = readl(chip->base + JZ_REG_GPIO_FLAG);
-+
-+ gpio_irq = ffs(flag) - 1;
-+
-+ if (chip->edge_trigger_both & BIT(gpio_irq)) {
-+ uint32_t value = readl(chip->base + JZ_REG_GPIO_PIN);
-+ if (value & BIT(gpio_irq)) {
-+ writel(BIT(gpio_irq),
-+ chip->base + JZ_REG_GPIO_DIRECTION_CLEAR);
-+ } else {
-+ writel(BIT(gpio_irq),
-+ chip->base + JZ_REG_GPIO_DIRECTION_SET);
-+ }
-+ }
-+
-+ gpio_irq += (gpio_bank << 5) + JZ4740_IRQ_GPIO(0);
-+
-+ generic_handle_irq(gpio_irq);
-+};
-+
-+static inline void jz_gpio_set_irq_bit(unsigned int irq, unsigned int reg)
-+{
-+ writel(IRQ_TO_BIT(irq), IRQ_TO_REG(irq, reg));
-+}
-+
-+static void jz_gpio_irq_mask(unsigned int irq)
-+{
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_MASK_SET);
-+};
-+
-+static void jz_gpio_irq_unmask(unsigned int irq)
-+{
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_MASK_CLEAR);
-+};
-+
-+
-+/* TODO: Check if function is gpio */
-+static unsigned int jz_gpio_irq_startup(unsigned int irq)
-+{
-+ struct irq_desc *desc = irq_to_desc(irq);
-+
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_SELECT_SET);
-+
-+ desc->status &= ~IRQ_MASKED;
-+ jz_gpio_irq_unmask(irq);
-+
-+ return 0;
-+}
-+
-+static void jz_gpio_irq_shutdown(unsigned int irq)
-+{
-+ struct irq_desc *desc = irq_to_desc(irq);
-+
-+ jz_gpio_irq_mask(irq);
-+ desc->status |= IRQ_MASKED;
-+
-+ /* Set direction to input */
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_DIRECTION_CLEAR);
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_SELECT_CLEAR);
-+}
-+
-+static void jz_gpio_irq_ack(unsigned int irq)
-+{
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_FLAG_CLEAR);
-+};
-+
-+static int jz_gpio_irq_set_type(unsigned int irq, unsigned int flow_type)
-+{
-+ struct jz_gpio_chip *chip = irq_to_jz_gpio_chip(irq);
-+ struct irq_desc *desc = irq_to_desc(irq);
-+
-+ jz_gpio_irq_mask(irq);
-+
-+ if (flow_type == IRQ_TYPE_EDGE_BOTH) {
-+ uint32_t value = readl(IRQ_TO_REG(irq, JZ_REG_GPIO_PIN));
-+ if (value & IRQ_TO_BIT(irq))
-+ flow_type = IRQ_TYPE_EDGE_FALLING;
-+ else
-+ flow_type = IRQ_TYPE_EDGE_RISING;
-+ chip->edge_trigger_both |= IRQ_TO_BIT(irq);
-+ } else {
-+ chip->edge_trigger_both &= ~IRQ_TO_BIT(irq);
-+ }
-+
-+ switch (flow_type) {
-+ case IRQ_TYPE_EDGE_RISING:
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_DIRECTION_SET);
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_TRIGGER_SET);
-+ break;
-+ case IRQ_TYPE_EDGE_FALLING:
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_DIRECTION_CLEAR);
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_TRIGGER_SET);
-+ break;
-+ case IRQ_TYPE_LEVEL_HIGH:
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_DIRECTION_SET);
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_TRIGGER_CLEAR);
-+ break;
-+ case IRQ_TYPE_LEVEL_LOW:
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_DIRECTION_CLEAR);
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_TRIGGER_CLEAR);
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ if (!(desc->status & IRQ_MASKED))
-+ jz_gpio_irq_unmask(irq);
-+
-+ return 0;
-+}
-+
-+static int jz_gpio_irq_set_wake(unsigned int irq, unsigned int on)
-+{
-+ struct jz_gpio_chip *chip = irq_to_jz_gpio_chip(irq);
-+ spin_lock(&chip->lock);
-+ if (on)
-+ chip->wakeup |= IRQ_TO_BIT(irq);
-+ else
-+ chip->wakeup &= ~IRQ_TO_BIT(irq);
-+ spin_unlock(&chip->lock);
-+
-+ set_irq_wake(chip->irq, on);
-+ return 0;
-+}
-+
-+int gpio_to_irq(unsigned gpio)
-+{
-+ return JZ4740_IRQ_GPIO(0) + gpio;
-+}
-+EXPORT_SYMBOL_GPL(gpio_to_irq);
-+
-+int irq_to_gpio(unsigned gpio)
-+{
-+ return IRQ_TO_GPIO(gpio);
-+}
-+EXPORT_SYMBOL_GPL(irq_to_gpio);
-+
-+/*
-+ * This lock class tells lockdep that GPIO irqs are in a different
-+ * category than their parents, so it won't report false recursion.
-+ */
-+static struct lock_class_key gpio_lock_class;
-+
-+#define JZ4740_GPIO_CHIP(_bank) { \
-+ .irq_base = JZ4740_IRQ_GPIO_BASE_ ## _bank, \
-+ .gpio_chip = { \
-+ .label = "Bank " # _bank, \
-+ .owner = THIS_MODULE, \
-+ .set = jz_gpio_set_value, \
-+ .get = jz_gpio_get_value, \
-+ .direction_output = jz_gpio_direction_output, \
-+ .direction_input = jz_gpio_direction_input, \
-+ .base = JZ4740_GPIO_BASE_ ## _bank, \
-+ .ngpio = JZ4740_GPIO_NUM_ ## _bank, \
-+ }, \
-+ .irq_chip = { \
-+ .name = "GPIO Bank " # _bank, \
-+ .mask = jz_gpio_irq_mask, \
-+ .unmask = jz_gpio_irq_unmask, \
-+ .ack = jz_gpio_irq_ack, \
-+ .startup = jz_gpio_irq_startup, \
-+ .shutdown = jz_gpio_irq_shutdown, \
-+ .set_type = jz_gpio_irq_set_type, \
-+ .set_wake = jz_gpio_irq_set_wake, \
-+ }, \
-+}
-+
-+static struct jz_gpio_chip jz4740_gpio_chips[] = {
-+ JZ4740_GPIO_CHIP(A),
-+ JZ4740_GPIO_CHIP(B),
-+ JZ4740_GPIO_CHIP(C),
-+ JZ4740_GPIO_CHIP(D),
-+};
-+
-+static inline struct jz_gpio_chip *sysdev_to_chip(struct sys_device *dev)
-+{
-+ return container_of(dev, struct jz_gpio_chip, sysdev);
-+}
-+
-+static int jz4740_gpio_suspend(struct sys_device *dev, pm_message_t state)
-+{
-+ struct jz_gpio_chip *chip = sysdev_to_chip(dev);
-+
-+ chip->suspend_mask = readl(chip->base + JZ_REG_GPIO_MASK);
-+ writel(~(chip->wakeup), chip->base + JZ_REG_GPIO_MASK_SET);
-+ writel(chip->wakeup, chip->base + JZ_REG_GPIO_MASK_CLEAR);
-+
-+ return 0;
-+}
-+
-+static int jz4740_gpio_resume(struct sys_device *dev)
-+{
-+ struct jz_gpio_chip *chip = sysdev_to_chip(dev);
-+ uint32_t mask = chip->suspend_mask;
-+
-+ writel(~mask, chip->base + JZ_REG_GPIO_MASK_CLEAR);
-+ writel(mask, chip->base + JZ_REG_GPIO_MASK_SET);
-+
-+ return 0;
-+}
-+
-+static struct sysdev_class jz4740_gpio_sysdev_class = {
-+ .name = "gpio",
-+ .suspend = jz4740_gpio_suspend,
-+ .resume = jz4740_gpio_resume,
-+};
-+
-+static int jz4740_gpio_chip_init(struct jz_gpio_chip *chip, unsigned int id)
-+{
-+ int ret, irq;
-+
-+ chip->sysdev.id = id;
-+ chip->sysdev.cls = &jz4740_gpio_sysdev_class;
-+ ret = sysdev_register(&chip->sysdev);
-+
-+ if (ret)
-+ return ret;
-+
-+ spin_lock_init(&chip->lock);
-+
-+ chip->base = ioremap(CPHYSADDR(JZ4740_GPIO_BASE_ADDR) + (id * 0x100), 0x100);
-+
-+ gpiochip_add(&chip->gpio_chip);
-+
-+ chip->irq = JZ4740_IRQ_INTC_GPIO(id);
-+ set_irq_data(chip->irq, chip);
-+ set_irq_chained_handler(chip->irq, jz_gpio_irq_demux_handler);
-+
-+ for (irq = chip->irq_base; irq < chip->irq_base + chip->gpio_chip.ngpio; ++irq) {
-+ lockdep_set_class(&irq_desc[irq].lock, &gpio_lock_class);
-+ set_irq_chip_and_handler(irq, &chip->irq_chip, handle_level_irq);
-+ set_irq_chip_data(irq, chip);
-+ }
-+
-+ return 0;
-+}
-+
-+int __init jz_gpiolib_init(void)
-+{
-+ unsigned int i;
-+ int ret;
-+
-+ ret = sysdev_class_register(&jz4740_gpio_sysdev_class);
-+ if (ret)
-+ return ret;
-+
-+ for (i = 0; i < ARRAY_SIZE(jz4740_gpio_chips); ++i) {
-+ jz4740_gpio_chip_init(&jz4740_gpio_chips[i], i);
-+ }
-+
-+ printk(KERN_INFO "JZ4740 GPIO initalized\n");
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_DEBUG_FS
-+
-+static inline void gpio_seq_reg(struct seq_file *s, struct jz_gpio_chip *chip,
-+ const char *name, unsigned int reg)
-+{
-+ seq_printf(s, "\t%s: %08x\n", name, readl(chip->base + reg));
-+}
-+
-+
-+static int gpio_regs_show(struct seq_file *s, void *unused)
-+{
-+ struct jz_gpio_chip *chip = jz4740_gpio_chips;
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(jz4740_gpio_chips); ++i, ++chip) {
-+ seq_printf(s, "GPIO %d: \n", i);
-+ gpio_seq_reg(s, chip, "Pin", JZ_REG_GPIO_PIN);
-+ gpio_seq_reg(s, chip, "Data", JZ_REG_GPIO_DATA);
-+ gpio_seq_reg(s, chip, "Mask", JZ_REG_GPIO_MASK);
-+ gpio_seq_reg(s, chip, "Pull", JZ_REG_GPIO_PULL);
-+ gpio_seq_reg(s, chip, "Func", JZ_REG_GPIO_FUNC);
-+ gpio_seq_reg(s, chip, "Select", JZ_REG_GPIO_SELECT);
-+ gpio_seq_reg(s, chip, "Direction", JZ_REG_GPIO_DIRECTION);
-+ gpio_seq_reg(s, chip, "Trigger", JZ_REG_GPIO_TRIGGER);
-+ gpio_seq_reg(s, chip, "Flag", JZ_REG_GPIO_FLAG);
-+ }
-+
-+ return 0;
-+}
-+
-+static int gpio_regs_open(struct inode *inode, struct file *file)
-+{
-+ return single_open(file, gpio_regs_show, NULL);
-+}
-+
-+static const struct file_operations gpio_regs_operations = {
-+ .open = gpio_regs_open,
-+ .read = seq_read,
-+ .llseek = seq_lseek,
-+ .release = single_release,
-+};
-+
-+static int __init gpio_debugfs_init(void)
-+{
-+ (void) debugfs_create_file("jz_regs_gpio", S_IFREG | S_IRUGO,
-+ NULL, NULL, &gpio_regs_operations);
-+ return 0;
-+}
-+subsys_initcall(gpio_debugfs_init);
-+
-+#endif
-diff --git a/arch/mips/jz4740/irq.c b/arch/mips/jz4740/irq.c
-new file mode 100644
-index 0000000..46a03ee
---- /dev/null
-+++ b/arch/mips/jz4740/irq.c
-@@ -0,0 +1,170 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform IRQ support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/errno.h>
-+#include <linux/init.h>
-+#include <linux/types.h>
-+#include <linux/interrupt.h>
-+#include <linux/ioport.h>
-+#include <linux/timex.h>
-+#include <linux/slab.h>
-+#include <linux/delay.h>
-+
-+#include <linux/debugfs.h>
-+#include <linux/seq_file.h>
-+
-+#include <asm/io.h>
-+#include <asm/mipsregs.h>
-+#include <asm/irq_cpu.h>
-+
-+#include <asm/mach-jz4740/base.h>
-+
-+static void __iomem *jz_intc_base;
-+static uint32_t jz_intc_wakeup;
-+static uint32_t jz_intc_saved;
-+
-+#define JZ_REG_INTC_STATUS 0x00
-+#define JZ_REG_INTC_MASK 0x04
-+#define JZ_REG_INTC_SET_MASK 0x08
-+#define JZ_REG_INTC_CLEAR_MASK 0x0c
-+#define JZ_REG_INTC_PENDING 0x10
-+
-+#define IRQ_BIT(x) BIT((x) - JZ4740_IRQ_BASE)
-+
-+static void intc_irq_unmask(unsigned int irq)
-+{
-+ writel(IRQ_BIT(irq), jz_intc_base + JZ_REG_INTC_CLEAR_MASK);
-+}
-+
-+static void intc_irq_mask(unsigned int irq)
-+{
-+ writel(IRQ_BIT(irq), jz_intc_base + JZ_REG_INTC_SET_MASK);
-+}
-+
-+static int intc_irq_set_wake(unsigned int irq, unsigned int on)
-+{
-+ if (on)
-+ jz_intc_wakeup |= IRQ_BIT(irq);
-+ else
-+ jz_intc_wakeup &= ~IRQ_BIT(irq);
-+
-+ return 0;
-+}
-+
-+static struct irq_chip intc_irq_type = {
-+ .name = "INTC",
-+ .mask = intc_irq_mask,
-+ .mask_ack = intc_irq_mask,
-+ .unmask = intc_irq_unmask,
-+ .set_wake = intc_irq_set_wake,
-+};
-+
-+static irqreturn_t jz4740_cascade(int irq, void *data)
-+{
-+ uint32_t irq_reg;
-+ int intc_irq;
-+
-+ irq_reg = readl(jz_intc_base + JZ_REG_INTC_PENDING);
-+
-+ intc_irq = ffs(irq_reg);
-+ if (intc_irq)
-+ generic_handle_irq(intc_irq - 1 + JZ4740_IRQ_BASE);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static struct irqaction jz4740_cascade_action = {
-+ .handler = jz4740_cascade,
-+ .name = "JZ4740 cascade interrupt",
-+ .flags = IRQF_DISABLED,
-+};
-+
-+void __init arch_init_irq(void)
-+{
-+ int i;
-+ mips_cpu_irq_init();
-+
-+ jz_intc_base = ioremap(CPHYSADDR(JZ4740_INTC_BASE_ADDR), 0x14);
-+
-+ for (i = JZ4740_IRQ_BASE; i < JZ4740_IRQ_BASE + 32; i++) {
-+ intc_irq_mask(i);
-+ set_irq_chip_and_handler(i, &intc_irq_type, handle_level_irq);
-+ }
-+
-+ setup_irq(2, &jz4740_cascade_action);
-+}
-+
-+asmlinkage void plat_irq_dispatch(void)
-+{
-+ unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM;
-+ if (pending & STATUSF_IP2)
-+ do_IRQ(2);
-+ else if (pending & STATUSF_IP3)
-+ do_IRQ(3);
-+ else
-+ spurious_interrupt();
-+}
-+
-+void jz4740_intc_suspend(void)
-+{
-+ jz_intc_saved = readl(jz_intc_base + JZ_REG_INTC_MASK);
-+ writel(~jz_intc_wakeup, jz_intc_base + JZ_REG_INTC_SET_MASK);
-+ writel(jz_intc_wakeup, jz_intc_base + JZ_REG_INTC_CLEAR_MASK);
-+}
-+
-+void jz4740_intc_resume(void)
-+{
-+ writel(~jz_intc_saved, jz_intc_base + JZ_REG_INTC_CLEAR_MASK);
-+ writel(jz_intc_saved, jz_intc_base + JZ_REG_INTC_SET_MASK);
-+}
-+
-+#ifdef CONFIG_DEBUG_FS
-+
-+static inline void intc_seq_reg(struct seq_file *s, const char *name,
-+ unsigned int reg)
-+{
-+ seq_printf(s, "%s:\t\t%08x\n", name, readl(jz_intc_base + reg));
-+}
-+
-+static int intc_regs_show(struct seq_file *s, void *unused)
-+{
-+ intc_seq_reg(s, "Status", JZ_REG_INTC_STATUS);
-+ intc_seq_reg(s, "Mask", JZ_REG_INTC_MASK);
-+ intc_seq_reg(s, "Pending", JZ_REG_INTC_PENDING);
-+
-+ return 0;
-+}
-+
-+static int intc_regs_open(struct inode *inode, struct file *file)
-+{
-+ return single_open(file, intc_regs_show, NULL);
-+}
-+
-+static const struct file_operations intc_regs_operations = {
-+ .open = intc_regs_open,
-+ .read = seq_read,
-+ .llseek = seq_lseek,
-+ .release = single_release,
-+};
-+
-+static int __init intc_debugfs_init(void)
-+{
-+ (void) debugfs_create_file("jz_regs_intc", S_IFREG | S_IRUGO,
-+ NULL, NULL, &intc_regs_operations);
-+ return 0;
-+}
-+subsys_initcall(intc_debugfs_init);
-+
-+#endif
-diff --git a/arch/mips/jz4740/irq.h b/arch/mips/jz4740/irq.h
-new file mode 100644
-index 0000000..dadbd5f
---- /dev/null
-+++ b/arch/mips/jz4740/irq.h
-@@ -0,0 +1,21 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * 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 __MIPS_JZ4740_IRQ_H__
-+#define __MIPS_JZ4740_IRQ_H__
-+
-+extern void jz4740_intc_suspend(void);
-+extern void jz4740_intc_resume(void);
-+
-+#endif
-diff --git a/arch/mips/jz4740/platform.c b/arch/mips/jz4740/platform.c
-new file mode 100644
-index 0000000..6bb0778
---- /dev/null
-+++ b/arch/mips/jz4740/platform.c
-@@ -0,0 +1,246 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform devices
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/platform_device.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/resource.h>
-+
-+#include <asm/mach-jz4740/platform.h>
-+#include <asm/mach-jz4740/base.h>
-+#include <asm/mach-jz4740/irq.h>
-+
-+/* OHCI (USB full speed host controller) */
-+static struct resource jz4740_usb_ohci_resources[] = {
-+ [0] = {
-+ .start = CPHYSADDR(JZ4740_UHC_BASE_ADDR),
-+ .end = CPHYSADDR(JZ4740_UHC_BASE_ADDR) + 0x10000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = JZ4740_IRQ_UHC,
-+ .end = JZ4740_IRQ_UHC,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+/* The dmamask must be set for OHCI to work */
-+static u64 ohci_dmamask = ~(u32)0;
-+
-+struct platform_device jz4740_usb_ohci_device = {
-+ .name = "jz4740-ohci",
-+ .id = -1,
-+ .dev = {
-+ .dma_mask = &ohci_dmamask,
-+ .coherent_dma_mask = 0xffffffff,
-+ },
-+ .num_resources = ARRAY_SIZE(jz4740_usb_ohci_resources),
-+ .resource = jz4740_usb_ohci_resources,
-+};
-+
-+/* UDC (USB gadget controller) */
-+static struct resource jz4740_usb_gdt_resources[] = {
-+ [0] = {
-+ .start = CPHYSADDR(JZ4740_UDC_BASE_ADDR),
-+ .end = CPHYSADDR(JZ4740_UDC_BASE_ADDR) + 0x10000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = JZ4740_IRQ_UDC,
-+ .end = JZ4740_IRQ_UDC,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+static u64 jz4740_udc_dmamask = ~(u32)0;
-+
-+struct platform_device jz4740_usb_gdt_device = {
-+ .name = "jz-udc",
-+ .id = -1,
-+ .dev = {
-+ .dma_mask = &jz4740_udc_dmamask,
-+ .coherent_dma_mask = 0xffffffff,
-+ },
-+ .num_resources = ARRAY_SIZE(jz4740_usb_gdt_resources),
-+ .resource = jz4740_usb_gdt_resources,
-+};
-+
-+/** MMC/SD controller **/
-+static struct resource jz4740_mmc_resources[] = {
-+ [0] = {
-+ .start = CPHYSADDR(JZ4740_MSC_BASE_ADDR),
-+ .end = CPHYSADDR(JZ4740_MSC_BASE_ADDR) + 0x10000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = JZ4740_IRQ_MSC,
-+ .end = JZ4740_IRQ_MSC,
-+ .flags = IORESOURCE_IRQ,
-+ }
-+};
-+
-+static u64 jz4740_mmc_dmamask = ~(u32)0;
-+
-+struct platform_device jz4740_mmc_device = {
-+ .name = "jz4740-mmc",
-+ .id = 0,
-+ .dev = {
-+ .dma_mask = &jz4740_mmc_dmamask,
-+ .coherent_dma_mask = 0xffffffff,
-+ },
-+ .num_resources = ARRAY_SIZE(jz4740_mmc_resources),
-+ .resource = jz4740_mmc_resources,
-+};
-+
-+static struct resource jz4740_rtc_resources[] = {
-+ [0] = {
-+ .start = CPHYSADDR(JZ4740_RTC_BASE_ADDR),
-+ .end = CPHYSADDR(JZ4740_RTC_BASE_ADDR) + 0x38 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = JZ4740_IRQ_RTC,
-+ .end = JZ4740_IRQ_RTC,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+struct platform_device jz4740_rtc_device = {
-+ .name = "jz4740-rtc",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(jz4740_rtc_resources),
-+ .resource = jz4740_rtc_resources,
-+};
-+
-+/** I2C controller **/
-+static struct resource jz4740_i2c_resources[] = {
-+ [0] = {
-+ .start = CPHYSADDR(JZ4740_I2C_BASE_ADDR),
-+ .end = CPHYSADDR(JZ4740_I2C_BASE_ADDR) + 0x10000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = JZ4740_IRQ_I2C,
-+ .end = JZ4740_IRQ_I2C,
-+ .flags = IORESOURCE_IRQ,
-+ }
-+};
-+
-+static u64 jz4740_i2c_dmamask = ~(u32)0;
-+
-+struct platform_device jz4740_i2c_device = {
-+ .name = "jz_i2c",
-+ .id = 0,
-+ .dev = {
-+ .dma_mask = &jz4740_i2c_dmamask,
-+ .coherent_dma_mask = 0xffffffff,
-+ },
-+ .num_resources = ARRAY_SIZE(jz4740_i2c_resources),
-+ .resource = jz4740_i2c_resources,
-+};
-+
-+static struct resource jz4740_nand_resources[] = {
-+ [0] = {
-+ .start = CPHYSADDR(JZ4740_EMC_BASE_ADDR),
-+ .end = CPHYSADDR(JZ4740_EMC_BASE_ADDR) + 0x10000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+struct platform_device jz4740_nand_device = {
-+ .name = "jz4740-nand",
-+ .num_resources = ARRAY_SIZE(jz4740_nand_resources),
-+ .resource = jz4740_nand_resources,
-+};
-+
-+static struct resource jz4740_framebuffer_resources[] = {
-+ [0] = {
-+ .start = CPHYSADDR(JZ4740_LCD_BASE_ADDR),
-+ .end = CPHYSADDR(JZ4740_LCD_BASE_ADDR) + 0x10000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+static u64 jz4740_fb_dmamask = ~(u32)0;
-+
-+struct platform_device jz4740_framebuffer_device = {
-+ .name = "jz4740-fb",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(jz4740_framebuffer_resources),
-+ .resource = jz4740_framebuffer_resources,
-+ .dev = {
-+ .dma_mask = &jz4740_fb_dmamask,
-+ .coherent_dma_mask = 0xffffffff,
-+ },
-+};
-+
-+static struct resource jz4740_i2s_resources[] = {
-+ [0] = {
-+ .start = CPHYSADDR(JZ4740_AIC_BASE_ADDR),
-+ .end = CPHYSADDR(JZ4740_AIC_BASE_ADDR) + 0x38 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+struct platform_device jz4740_i2s_device = {
-+ .name = "jz4740-i2s",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(jz4740_i2s_resources),
-+ .resource = jz4740_i2s_resources,
-+};
-+
-+static struct resource jz4740_codec_resources[] = {
-+ [0] = {
-+ .start = CPHYSADDR(JZ4740_AIC_BASE_ADDR) + 0x80,
-+ .end = CPHYSADDR(JZ4740_AIC_BASE_ADDR) + 0x88 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+struct platform_device jz4740_codec_device = {
-+ .name = "jz4740-codec",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(jz4740_codec_resources),
-+ .resource = jz4740_codec_resources,
-+};
-+
-+static struct resource jz4740_adc_resources[] = {
-+ [0] = {
-+ .start = CPHYSADDR(JZ4740_SADC_BASE_ADDR),
-+ .end = CPHYSADDR(JZ4740_SADC_BASE_ADDR) + 0x30,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = JZ4740_IRQ_SADC,
-+ .end = JZ4740_IRQ_SADC,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+struct platform_device jz4740_adc_device = {
-+ .name = "jz4740-adc",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(jz4740_adc_resources),
-+ .resource = jz4740_adc_resources,
-+};
-+
-+struct platform_device jz4740_battery_device = {
-+ .name = "jz4740-battery",
-+ .id = -1,
-+ .dev = {
-+ .parent = &jz4740_adc_device.dev
-+ },
-+};
-diff --git a/arch/mips/jz4740/pm.c b/arch/mips/jz4740/pm.c
-new file mode 100644
-index 0000000..4ca3156
---- /dev/null
-+++ b/arch/mips/jz4740/pm.c
-@@ -0,0 +1,59 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC power management support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/pm.h>
-+#include <linux/delay.h>
-+#include <linux/suspend.h>
-+
-+#include <asm/mach-jz4740/clock.h>
-+
-+#include "clock.h"
-+#include "irq.h"
-+
-+static int jz_pm_enter(suspend_state_t state)
-+{
-+ jz4740_intc_suspend();
-+ jz4740_clock_suspend();
-+
-+ jz4740_clock_set_wait_mode(JZ4740_WAIT_MODE_SLEEP);
-+
-+ __asm__(".set\tmips3\n\t"
-+ "wait\n\t"
-+ ".set\tmips0");
-+
-+ jz4740_clock_set_wait_mode(JZ4740_WAIT_MODE_IDLE);
-+
-+ jz4740_clock_resume();
-+ jz4740_intc_resume();
-+
-+ return 0;
-+}
-+
-+static struct platform_suspend_ops jz_pm_ops = {
-+ .valid = suspend_valid_only_mem,
-+ .enter = jz_pm_enter,
-+};
-+
-+/*
-+ * Initialize power interface
-+ */
-+int __init jz_pm_init(void)
-+{
-+ suspend_set_ops(&jz_pm_ops);
-+ return 0;
-+
-+}
-+late_initcall(jz_pm_init);
-diff --git a/arch/mips/jz4740/prom.c b/arch/mips/jz4740/prom.c
-new file mode 100644
-index 0000000..4f99ea3
---- /dev/null
-+++ b/arch/mips/jz4740/prom.c
-@@ -0,0 +1,69 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC prom code
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/string.h>
-+
-+#include <linux/serial_reg.h>
-+
-+#include <asm/bootinfo.h>
-+#include <asm/mach-jz4740/base.h>
-+
-+void jz4740_init_cmdline(int argc, char *argv[])
-+{
-+ unsigned int count = COMMAND_LINE_SIZE - 1;
-+ int i;
-+ char *dst = &(arcs_cmdline[0]);
-+ char *src;
-+
-+ for (i = 1; i < argc && count; ++i) {
-+ src = argv[i];
-+ while (*src && count) {
-+ *dst++ = *src++;
-+ --count;
-+ }
-+ *dst++ = ' ';
-+ }
-+ if (i > 1)
-+ --dst;
-+
-+ *dst = 0;
-+}
-+
-+void __init prom_init(void)
-+{
-+ jz4740_init_cmdline((int)fw_arg0, (char **)fw_arg1);
-+ mips_machtype = MACH_INGENIC_JZ4740;
-+}
-+
-+void __init prom_free_prom_memory(void)
-+{
-+}
-+
-+#define UART_REG(offset) ((void __iomem*)(JZ4740_UART0_BASE_ADDR + (offset << 2)))
-+
-+void prom_putchar(char c)
-+{
-+ uint8_t lsr;
-+
-+ do {
-+ lsr = readb(UART_REG(UART_LSR));
-+ } while ((lsr & UART_LSR_TEMT) == 0);
-+
-+ writeb(c, UART_REG(UART_TX));
-+}
-diff --git a/arch/mips/jz4740/pwm.c b/arch/mips/jz4740/pwm.c
-new file mode 100644
-index 0000000..0ff8c1d
---- /dev/null
-+++ b/arch/mips/jz4740/pwm.c
-@@ -0,0 +1,167 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform PWM support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+
-+#include <linux/kernel.h>
-+
-+#include <linux/clk.h>
-+#include <linux/err.h>
-+#include <linux/pwm.h>
-+#include <linux/gpio.h>
-+
-+#include <asm/mach-jz4740/gpio.h>
-+#include "timer.h"
-+
-+static struct clk *jz4740_pwm_clk;
-+
-+DEFINE_MUTEX(jz4740_pwm_mutex);
-+
-+struct pwm_device {
-+ unsigned int id;
-+ unsigned int gpio;
-+ bool used;
-+};
-+
-+static struct pwm_device jz4740_pwm_list[] = {
-+ { 2, JZ_GPIO_PWM2, false },
-+ { 3, JZ_GPIO_PWM3, false },
-+ { 4, JZ_GPIO_PWM4, false },
-+ { 5, JZ_GPIO_PWM5, false },
-+ { 6, JZ_GPIO_PWM6, false },
-+ { 7, JZ_GPIO_PWM7, false },
-+};
-+
-+struct pwm_device *pwm_request(int id, const char *label)
-+{
-+ int ret = 0;
-+ struct pwm_device *pwm;
-+
-+ if (!jz4740_pwm_clk) {
-+ jz4740_pwm_clk = clk_get(NULL, "pclk");
-+
-+ if (IS_ERR(jz4740_pwm_clk))
-+ return ERR_PTR(PTR_ERR(jz4740_pwm_clk));
-+ }
-+
-+ if (id < 2 || id > 7) {
-+ return ERR_PTR(-ENOENT);
-+ }
-+
-+ mutex_lock(&jz4740_pwm_mutex);
-+
-+ pwm = &jz4740_pwm_list[id - 2];
-+ if (pwm->used)
-+ ret = -EBUSY;
-+ else
-+ pwm->used = true;
-+
-+ mutex_unlock(&jz4740_pwm_mutex);
-+
-+ if (ret) {
-+ return ERR_PTR(ret);
-+ }
-+
-+ ret = gpio_request(pwm->gpio, label);
-+
-+ if (ret) {
-+ printk("Failed to request pwm gpio: %d\n", ret);
-+ pwm->used = false;
-+ return ERR_PTR(ret);
-+ }
-+
-+ jz_gpio_set_function(pwm->gpio, JZ_GPIO_FUNC_PWM);
-+
-+ jz4740_timer_start(id);
-+
-+ return pwm;
-+}
-+
-+void pwm_free(struct pwm_device *pwm)
-+{
-+ pwm_disable(pwm);
-+ jz4740_timer_set_ctrl(pwm->id, 0);
-+
-+ jz_gpio_set_function(pwm->gpio, JZ_GPIO_FUNC_NONE);
-+ gpio_free(pwm->gpio);
-+
-+ jz4740_timer_stop(pwm->id);
-+
-+ pwm->used = false;
-+
-+}
-+
-+int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns)
-+{
-+ unsigned long long tmp;
-+ unsigned long period, duty;
-+ unsigned int prescaler = 0;
-+ unsigned int id = pwm->id;
-+ uint16_t ctrl;
-+ bool is_enabled;
-+
-+ if (duty_ns < 0 || duty_ns > period_ns)
-+ return -EINVAL;
-+
-+ tmp = (unsigned long long)clk_get_rate(jz4740_pwm_clk) * period_ns;
-+
-+ do_div(tmp, 1000000000);
-+
-+ period = tmp;
-+
-+ while (period > 0xffff && prescaler < 6) {
-+ period >>= 2;
-+ ++prescaler;
-+ }
-+
-+ if (prescaler == 6)
-+ return -EINVAL;
-+
-+
-+ tmp = (unsigned long long)period * duty_ns;
-+ do_div(tmp, period_ns);
-+ duty = tmp;
-+
-+ if (duty >= period)
-+ duty = period - 1;
-+
-+ is_enabled = jz4740_timer_is_enabled(id);
-+ jz4740_timer_disable(id);
-+
-+ jz4740_timer_set_count(id, 0);
-+ jz4740_timer_set_duty(id, duty);
-+ jz4740_timer_set_period(id, period);
-+
-+ ctrl = JZ_TIMER_CTRL_PRESCALER(prescaler) | JZ_TIMER_CTRL_PWM_ENABLE |
-+ JZ_TIMER_CTRL_SRC_PCLK;
-+
-+ jz4740_timer_set_ctrl(id, ctrl);
-+
-+ if (is_enabled)
-+ jz4740_timer_enable(id);
-+
-+ return 0;
-+}
-+
-+int pwm_enable(struct pwm_device *pwm)
-+{
-+ jz4740_timer_enable(pwm->id);
-+
-+ return 0;
-+}
-+
-+void pwm_disable(struct pwm_device *pwm)
-+{
-+ jz4740_timer_disable(pwm->id);
-+}
-diff --git a/arch/mips/jz4740/reset.c b/arch/mips/jz4740/reset.c
-new file mode 100644
-index 0000000..448a7da
---- /dev/null
-+++ b/arch/mips/jz4740/reset.c
-@@ -0,0 +1,81 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/io.h>
-+#include <linux/kernel.h>
-+#include <linux/pm.h>
-+
-+#include <linux/delay.h>
-+
-+#include <asm/reboot.h>
-+
-+#include <asm/mach-jz4740/base.h>
-+#include <asm/mach-jz4740/timer.h>
-+
-+static void jz4740_halt(void)
-+{
-+ while (1) {
-+ __asm__(".set push;\n"
-+ ".set mips3;\n"
-+ "wait;\n"
-+ ".set pop;\n"
-+ );
-+ }
-+}
-+
-+#define JZ_REG_WDT_DATA 0x00
-+#define JZ_REG_WDT_COUNTER_ENABLE 0x04
-+#define JZ_REG_WDT_COUNTER 0x08
-+#define JZ_REG_WDT_CTRL 0x0c
-+
-+static void jz4740_restart(char *command)
-+{
-+ void __iomem *wdt_base = ioremap(CPHYSADDR(JZ4740_WDT_BASE_ADDR), 0x0f);
-+
-+ jz4740_timer_enable_watchdog();
-+
-+ writeb(0, wdt_base + JZ_REG_WDT_COUNTER_ENABLE);
-+
-+ writew(0, wdt_base + JZ_REG_WDT_COUNTER);
-+ writew(0, wdt_base + JZ_REG_WDT_DATA);
-+ writew(BIT(2), wdt_base + JZ_REG_WDT_CTRL);
-+
-+ writeb(1, wdt_base + JZ_REG_WDT_COUNTER_ENABLE);
-+ jz4740_halt();
-+}
-+
-+#define JZ_REG_RTC_CTRL 0x00
-+#define JZ_REG_RTC_HIBERNATE 0x20
-+
-+#define JZ_RTC_CTRL_WRDY BIT(7)
-+
-+static void jz4740_power_off(void)
-+{
-+ void __iomem *rtc_base = ioremap(CPHYSADDR(JZ4740_RTC_BASE_ADDR), 0x24);
-+ uint32_t ctrl;
-+
-+ do {
-+ ctrl = readl(rtc_base + JZ_REG_RTC_CTRL);
-+ } while (!(ctrl & JZ_RTC_CTRL_WRDY));
-+
-+ writel(1, rtc_base + JZ_REG_RTC_HIBERNATE);
-+ jz4740_halt();
-+}
-+
-+void jz4740_reset_init(void)
-+{
-+ _machine_restart = jz4740_restart;
-+ _machine_halt = jz4740_halt;
-+ pm_power_off = jz4740_power_off;
-+}
-diff --git a/arch/mips/jz4740/reset.h b/arch/mips/jz4740/reset.h
-new file mode 100644
-index 0000000..c57a829
---- /dev/null
-+++ b/arch/mips/jz4740/reset.h
-@@ -0,0 +1,7 @@
-+#ifndef __MIPS_JZ4740_RESET_H__
-+#define __MIPS_JZ4740_RESET_H__
-+
-+extern void jz4740_reset_init(void);
-+
-+#endif
-+
-diff --git a/arch/mips/jz4740/setup.c b/arch/mips/jz4740/setup.c
-new file mode 100644
-index 0000000..a6628f4
---- /dev/null
-+++ b/arch/mips/jz4740/setup.c
-@@ -0,0 +1,64 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 setup code
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/serial.h>
-+#include <linux/serial_core.h>
-+#include <linux/serial_8250.h>
-+
-+#include <asm/mach-jz4740/base.h>
-+#include <asm/mach-jz4740/clock.h>
-+#include <asm/mach-jz4740/serial.h>
-+
-+#include "reset.h"
-+#include "clock.h"
-+
-+static void __init jz4740_serial_setup(void)
-+{
-+#ifdef CONFIG_SERIAL_8250
-+ struct uart_port s;
-+ memset(&s, 0, sizeof(s));
-+ s.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST;
-+ s.iotype = SERIAL_IO_MEM;
-+ s.regshift = 2;
-+ s.uartclk = jz4740_clock_bdata.ext_rate;
-+
-+ s.line = 0;
-+ s.membase = (u8 *)JZ4740_UART0_BASE_ADDR;
-+ s.irq = JZ4740_IRQ_UART0;
-+ if (early_serial_setup(&s) != 0) {
-+ printk(KERN_ERR "Serial ttyS0 setup failed!\n");
-+ }
-+
-+ s.line = 1;
-+ s.membase = (u8 *)JZ4740_UART1_BASE_ADDR;
-+ s.irq = JZ4740_IRQ_UART1;
-+ if (early_serial_setup(&s) != 0) {
-+ printk(KERN_ERR "Serial ttyS1 setup failed!\n");
-+ }
-+#endif
-+}
-+void __init plat_mem_setup(void)
-+{
-+ jz4740_reset_init();
-+ jz4740_serial_setup();
-+}
-+
-+const char *get_system_type(void)
-+{
-+ return "JZ4740";
-+}
-diff --git a/arch/mips/jz4740/time.c b/arch/mips/jz4740/time.c
-new file mode 100644
-index 0000000..da8183f
---- /dev/null
-+++ b/arch/mips/jz4740/time.c
-@@ -0,0 +1,144 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform time support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/interrupt.h>
-+#include <linux/kernel.h>
-+#include <linux/time.h>
-+
-+#include <linux/clockchips.h>
-+
-+#include <asm/mach-jz4740/irq.h>
-+#include <asm/time.h>
-+
-+#include "clock.h"
-+#include "timer.h"
-+
-+#define TIMER_CLOCKEVENT 0
-+#define TIMER_CLOCKSOURCE 1
-+
-+static uint16_t jz4740_jiffies_per_tick;
-+
-+static cycle_t jz4740_clocksource_read(struct clocksource *cs)
-+{
-+ return jz4740_timer_get_count(TIMER_CLOCKSOURCE);
-+}
-+
-+static struct clocksource jz4740_clocksource = {
-+ .name = "jz4740-timer",
-+ .rating = 200,
-+ .read = jz4740_clocksource_read,
-+ .mask = CLOCKSOURCE_MASK(16),
-+ .flags = CLOCK_SOURCE_IS_CONTINUOUS,
-+};
-+
-+static irqreturn_t jz4740_clockevent_irq(int irq, void *devid)
-+{
-+ struct clock_event_device *cd = devid;
-+
-+ jz4740_timer_ack_full(TIMER_CLOCKEVENT);
-+
-+ if (cd->mode != CLOCK_EVT_MODE_PERIODIC)
-+ jz4740_timer_disable(TIMER_CLOCKEVENT);
-+
-+ cd->event_handler(cd);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void jz4740_clockevent_set_mode(enum clock_event_mode mode,
-+ struct clock_event_device *cd)
-+{
-+ switch (mode) {
-+ case CLOCK_EVT_MODE_PERIODIC:
-+ jz4740_timer_set_count(TIMER_CLOCKEVENT, 0);
-+ jz4740_timer_set_period(TIMER_CLOCKEVENT, jz4740_jiffies_per_tick);
-+ case CLOCK_EVT_MODE_RESUME:
-+ jz4740_timer_irq_full_enable(TIMER_CLOCKEVENT);
-+ jz4740_timer_enable(TIMER_CLOCKEVENT);
-+ break;
-+ case CLOCK_EVT_MODE_ONESHOT:
-+ case CLOCK_EVT_MODE_SHUTDOWN:
-+ jz4740_timer_disable(TIMER_CLOCKEVENT);
-+ break;
-+ default:
-+ break;
-+ }
-+}
-+
-+static int jz4740_clockevent_set_next(unsigned long evt,
-+ struct clock_event_device *cd)
-+{
-+ jz4740_timer_set_count(TIMER_CLOCKEVENT, 0);
-+ jz4740_timer_set_period(TIMER_CLOCKEVENT, evt);
-+ jz4740_timer_enable(TIMER_CLOCKEVENT);
-+
-+ return 0;
-+}
-+
-+static struct clock_event_device jz4740_clockevent = {
-+ .name = "jz4740-timer",
-+ .features = CLOCK_EVT_FEAT_PERIODIC,
-+ .set_next_event = jz4740_clockevent_set_next,
-+ .set_mode = jz4740_clockevent_set_mode,
-+ .rating = 200,
-+ .irq = JZ4740_IRQ_TCU0,
-+};
-+
-+static struct irqaction timer_irqaction = {
-+ .handler = jz4740_clockevent_irq,
-+ .flags = IRQF_PERCPU | IRQF_TIMER | IRQF_DISABLED,
-+ .name = "jz4740-timerirq",
-+ .dev_id = &jz4740_clockevent,
-+};
-+
-+void __init plat_time_init(void)
-+{
-+ int ret;
-+ uint32_t clk_rate;
-+ uint16_t ctrl;
-+
-+ jz4740_timer_init();
-+
-+ clk_rate = jz4740_clock_bdata.ext_rate >> 4;
-+ jz4740_jiffies_per_tick = DIV_ROUND_CLOSEST(clk_rate, HZ);
-+
-+ clockevent_set_clock(&jz4740_clockevent, clk_rate);
-+ jz4740_clockevent.min_delta_ns = clockevent_delta2ns(100, &jz4740_clockevent);
-+ jz4740_clockevent.max_delta_ns = clockevent_delta2ns(0xffff, &jz4740_clockevent);
-+ jz4740_clockevent.cpumask = cpumask_of(0);
-+
-+ clockevents_register_device(&jz4740_clockevent);
-+
-+ clocksource_set_clock(&jz4740_clocksource, clk_rate);
-+ ret = clocksource_register(&jz4740_clocksource);
-+
-+ if (ret)
-+ printk(KERN_ERR "Failed to register clocksource: %d\n", ret);
-+
-+ setup_irq(JZ4740_IRQ_TCU0, &timer_irqaction);
-+
-+ ctrl = JZ_TIMER_CTRL_PRESCALE_16 | JZ_TIMER_CTRL_SRC_EXT;
-+
-+ jz4740_timer_set_ctrl(TIMER_CLOCKEVENT, ctrl);
-+ jz4740_timer_set_ctrl(TIMER_CLOCKSOURCE, ctrl);
-+
-+ jz4740_timer_set_period(TIMER_CLOCKEVENT, jz4740_jiffies_per_tick);
-+ jz4740_timer_irq_full_enable(TIMER_CLOCKEVENT);
-+
-+ jz4740_timer_set_period(TIMER_CLOCKSOURCE, 0xffff);
-+
-+ jz4740_timer_enable(TIMER_CLOCKEVENT);
-+ jz4740_timer_enable(TIMER_CLOCKSOURCE);
-+}
-diff --git a/arch/mips/jz4740/timer.c b/arch/mips/jz4740/timer.c
-new file mode 100644
-index 0000000..6e09cae
---- /dev/null
-+++ b/arch/mips/jz4740/timer.c
-@@ -0,0 +1,48 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform timer support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/io.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+
-+#include "timer.h"
-+
-+#include <asm/mach-jz4740/base.h>
-+
-+void __iomem *jz4740_timer_base;
-+
-+void jz4740_timer_enable_watchdog(void)
-+{
-+ writel(BIT(16), jz4740_timer_base + JZ_REG_TIMER_STOP_CLEAR);
-+}
-+
-+void jz4740_timer_disable_watchdog(void)
-+{
-+ writel(BIT(16), jz4740_timer_base + JZ_REG_TIMER_STOP_SET);
-+}
-+
-+void __init jz4740_timer_init(void)
-+{
-+ jz4740_timer_base = ioremap(CPHYSADDR(JZ4740_TCU_BASE_ADDR), 0x100);
-+
-+ if (!jz4740_timer_base)
-+ panic("Failed to ioremap timer registers");
-+
-+ /* Disable all timer clocks except for those used as system timers */
-+ writel(0x000100fc, jz4740_timer_base + JZ_REG_TIMER_STOP_SET);
-+
-+ /* Timer irqs are unmasked by default, mask them */
-+ writel(0x00ff00ff, jz4740_timer_base + JZ_REG_TIMER_MASK_SET);
-+}
-diff --git a/arch/mips/jz4740/timer.h b/arch/mips/jz4740/timer.h
-new file mode 100644
-index 0000000..77d748c
---- /dev/null
-+++ b/arch/mips/jz4740/timer.h
-@@ -0,0 +1,130 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform timer support
-+ *
-+ * 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.
-+ *
-+ * 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 __MIPS_JZ4740_TIMER_H__
-+#define __MIPS_JZ4740_TIMER_H__
-+
-+#include <linux/module.h>
-+#include <linux/io.h>
-+
-+#define JZ_REG_TIMER_STOP 0x1C
-+#define JZ_REG_TIMER_STOP_SET 0x2C
-+#define JZ_REG_TIMER_STOP_CLEAR 0x3C
-+#define JZ_REG_TIMER_ENABLE 0x10
-+#define JZ_REG_TIMER_ENABLE_SET 0x14
-+#define JZ_REG_TIMER_ENABLE_CLEAR 0x18
-+#define JZ_REG_TIMER_FLAG 0x20
-+#define JZ_REG_TIMER_FLAG_SET 0x24
-+#define JZ_REG_TIMER_FLAG_CLEAR 0x28
-+#define JZ_REG_TIMER_MASK 0x30
-+#define JZ_REG_TIMER_MASK_SET 0x34
-+#define JZ_REG_TIMER_MASK_CLEAR 0x38
-+
-+#define JZ_REG_TIMER_DFR(x) (((x) * 0x10) + 0x40)
-+#define JZ_REG_TIMER_DHR(x) (((x) * 0x10) + 0x44)
-+#define JZ_REG_TIMER_CNT(x) (((x) * 0x10) + 0x48)
-+#define JZ_REG_TIMER_CTRL(x) (((x) * 0x10) + 0x4C)
-+
-+#define JZ_TIMER_IRQ_HALF(x) BIT((x) + 0x10)
-+#define JZ_TIMER_IRQ_FULL(x) BIT(x)
-+
-+#define JZ_TIMER_CTRL_PWM_ACTIVE_LOW BIT(8)
-+#define JZ_TIMER_CTRL_PWM_ENABLE BIT(7)
-+#define JZ_TIMER_CTRL_PRESCALE_MASK 0x1c
-+#define JZ_TIMER_CTRL_PRESCALE_OFFSET 0x3
-+#define JZ_TIMER_CTRL_PRESCALE_1 (0 << 3)
-+#define JZ_TIMER_CTRL_PRESCALE_4 (1 << 3)
-+#define JZ_TIMER_CTRL_PRESCALE_16 (2 << 3)
-+#define JZ_TIMER_CTRL_PRESCALE_64 (3 << 3)
-+#define JZ_TIMER_CTRL_PRESCALE_256 (4 << 3)
-+#define JZ_TIMER_CTRL_PRESCALE_1024 (5 << 3)
-+
-+#define JZ_TIMER_CTRL_PRESCALER(x) ((x) << JZ_TIMER_CTRL_PRESCALE_OFFSET)
-+
-+#define JZ_TIMER_CTRL_SRC_EXT BIT(2)
-+#define JZ_TIMER_CTRL_SRC_RTC BIT(1)
-+#define JZ_TIMER_CTRL_SRC_PCLK BIT(0)
-+
-+extern void __iomem *jz4740_timer_base;
-+void __init jz4740_timer_init(void);
-+
-+static inline void jz4740_timer_stop(unsigned int timer)
-+{
-+ writel(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_STOP_SET);
-+}
-+
-+static inline void jz4740_timer_start(unsigned int timer)
-+{
-+ writel(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_STOP_CLEAR);
-+}
-+
-+static inline bool jz4740_timer_is_enabled(unsigned int timer)
-+{
-+ return readb(jz4740_timer_base + JZ_REG_TIMER_ENABLE) & BIT(timer);
-+}
-+
-+static inline void jz4740_timer_enable(unsigned int timer)
-+{
-+ writeb(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_ENABLE_SET);
-+}
-+
-+static inline void jz4740_timer_disable(unsigned int timer)
-+{
-+ writeb(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_ENABLE_CLEAR);
-+}
-+
-+
-+static inline void jz4740_timer_set_period(unsigned int timer, uint16_t period)
-+{
-+ writew(period, jz4740_timer_base + JZ_REG_TIMER_DFR(timer));
-+}
-+
-+static inline void jz4740_timer_set_duty(unsigned int timer, uint16_t duty)
-+{
-+ writew(duty, jz4740_timer_base + JZ_REG_TIMER_DHR(timer));
-+}
-+
-+static inline void jz4740_timer_set_count(unsigned int timer, uint16_t count)
-+{
-+ writew(count, jz4740_timer_base + JZ_REG_TIMER_CNT(timer));
-+}
-+
-+static inline uint16_t jz4740_timer_get_count(unsigned int timer)
-+{
-+ return readw(jz4740_timer_base + JZ_REG_TIMER_CNT(timer));
-+}
-+
-+static inline void jz4740_timer_ack_full(unsigned int timer)
-+{
-+ writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_FLAG_CLEAR);
-+}
-+
-+static inline void jz4740_timer_irq_full_enable(unsigned int timer)
-+{
-+ writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_FLAG_CLEAR);
-+ writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_MASK_CLEAR);
-+}
-+
-+static inline void jz4740_timer_irq_full_disable(unsigned int timer)
-+{
-+ writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_MASK_SET);
-+}
-+
-+static inline void jz4740_timer_set_ctrl(unsigned int timer, uint16_t ctrl)
-+{
-+ writew(ctrl, jz4740_timer_base + JZ_REG_TIMER_CTRL(timer));
-+}
-+
-+#endif
-diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
-index be5bb16..926c260 100644
---- a/arch/mips/kernel/cpu-probe.c
-+++ b/arch/mips/kernel/cpu-probe.c
-@@ -163,6 +163,7 @@ void __init check_wait(void)
- case CPU_BCM6358:
- case CPU_CAVIUM_OCTEON:
- case CPU_CAVIUM_OCTEON_PLUS:
-+ case CPU_JZRISC:
- cpu_wait = r4k_wait;
- break;
-
-@@ -932,6 +933,22 @@ platform:
- }
- }
-
-+static inline void cpu_probe_ingenic(struct cpuinfo_mips *c, unsigned int cpu)
-+{
-+ decode_configs(c);
-+ /* JZRISC does not implement the CP0 counter. */
-+ c->options &= ~MIPS_CPU_COUNTER;
-+ switch (c->processor_id & 0xff00) {
-+ case PRID_IMP_JZRISC:
-+ c->cputype = CPU_JZRISC;
-+ __cpu_name[cpu] = "Ingenic JZRISC";
-+ break;
-+ default:
-+ panic("Unknown Ingenic Processor ID!");
-+ break;
-+ }
-+}
-+
- const char *__cpu_name[NR_CPUS];
- const char *__elf_platform;
-
-@@ -970,6 +987,9 @@ __cpuinit void cpu_probe(void)
- case PRID_COMP_CAVIUM:
- cpu_probe_cavium(c, cpu);
- break;
-+ case PRID_COMP_INGENIC:
-+ cpu_probe_ingenic(c, cpu);
-+ break;
- }
-
- BUG_ON(!__cpu_name[cpu]);
-diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
-index 86f004d..4510e61 100644
---- a/arch/mips/mm/tlbex.c
-+++ b/arch/mips/mm/tlbex.c
-@@ -409,6 +409,11 @@ static void __cpuinit build_tlb_write_entry(u32 **p, struct uasm_label **l,
- tlbw(p);
- break;
-
-+ case CPU_JZRISC:
-+ tlbw(p);
-+ uasm_i_nop(p);
-+ break;
-+
- default:
- panic("No TLB refill handler yet (CPU type: %d)",
- current_cpu_data.cputype);
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/002-xburst-cache-quirks.patch b/target/linux/xburst/patches-2.6.34/002-xburst-cache-quirks.patch
deleted file mode 100644
index f07df44f38..0000000000
--- a/target/linux/xburst/patches-2.6.34/002-xburst-cache-quirks.patch
+++ /dev/null
@@ -1,339 +0,0 @@
-From 3d317cc06fce61787e4429b98d6073e69a6b6cd7 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 17:34:29 +0200
-Subject: [PATCH] JZ4740 cache quirks
-
----
- arch/mips/include/asm/r4kcache.h | 231 ++++++++++++++++++++++++++++++++++++++
- 1 files changed, 231 insertions(+), 0 deletions(-)
-
-diff --git a/arch/mips/include/asm/r4kcache.h b/arch/mips/include/asm/r4kcache.h
-index 387bf59..b500056 100644
---- a/arch/mips/include/asm/r4kcache.h
-+++ b/arch/mips/include/asm/r4kcache.h
-@@ -17,6 +17,58 @@
- #include <asm/cpu-features.h>
- #include <asm/mipsmtregs.h>
-
-+#ifdef CONFIG_JZRISC
-+
-+#define K0_TO_K1() \
-+do { \
-+ unsigned long __k0_addr; \
-+ \
-+ __asm__ __volatile__( \
-+ "la %0, 1f\n\t" \
-+ "or %0, %0, %1\n\t" \
-+ "jr %0\n\t" \
-+ "nop\n\t" \
-+ "1: nop\n" \
-+ : "=&r"(__k0_addr) \
-+ : "r" (0x20000000) ); \
-+} while(0)
-+
-+#define K1_TO_K0() \
-+do { \
-+ unsigned long __k0_addr; \
-+ __asm__ __volatile__( \
-+ "nop;nop;nop;nop;nop;nop;nop\n\t" \
-+ "la %0, 1f\n\t" \
-+ "jr %0\n\t" \
-+ "nop\n\t" \
-+ "1: nop\n" \
-+ : "=&r" (__k0_addr)); \
-+} while (0)
-+
-+#define INVALIDATE_BTB() \
-+do { \
-+ unsigned long tmp; \
-+ __asm__ __volatile__( \
-+ ".set mips32\n\t" \
-+ "mfc0 %0, $16, 7\n\t" \
-+ "nop\n\t" \
-+ "ori %0, 2\n\t" \
-+ "mtc0 %0, $16, 7\n\t" \
-+ "nop\n\t" \
-+ : "=&r" (tmp)); \
-+} while (0)
-+
-+#define SYNC_WB() __asm__ __volatile__ ("sync")
-+
-+#else /* CONFIG_JZRISC */
-+
-+#define K0_TO_K1() do { } while (0)
-+#define K1_TO_K0() do { } while (0)
-+#define INVALIDATE_BTB() do { } while (0)
-+#define SYNC_WB() do { } while (0)
-+
-+#endif /* CONFIG_JZRISC */
-+
- /*
- * This macro return a properly sign-extended address suitable as base address
- * for indexed cache operations. Two issues here:
-@@ -144,6 +196,7 @@ static inline void flush_icache_line_indexed(unsigned long addr)
- {
- __iflush_prologue
- cache_op(Index_Invalidate_I, addr);
-+ INVALIDATE_BTB();
- __iflush_epilogue
- }
-
-@@ -151,6 +204,7 @@ static inline void flush_dcache_line_indexed(unsigned long addr)
- {
- __dflush_prologue
- cache_op(Index_Writeback_Inv_D, addr);
-+ SYNC_WB();
- __dflush_epilogue
- }
-
-@@ -163,6 +217,7 @@ static inline void flush_icache_line(unsigned long addr)
- {
- __iflush_prologue
- cache_op(Hit_Invalidate_I, addr);
-+ INVALIDATE_BTB();
- __iflush_epilogue
- }
-
-@@ -170,6 +225,7 @@ static inline void flush_dcache_line(unsigned long addr)
- {
- __dflush_prologue
- cache_op(Hit_Writeback_Inv_D, addr);
-+ SYNC_WB();
- __dflush_epilogue
- }
-
-@@ -177,6 +233,7 @@ static inline void invalidate_dcache_line(unsigned long addr)
- {
- __dflush_prologue
- cache_op(Hit_Invalidate_D, addr);
-+ SYNC_WB();
- __dflush_epilogue
- }
-
-@@ -209,6 +266,7 @@ static inline void flush_scache_line(unsigned long addr)
- static inline void protected_flush_icache_line(unsigned long addr)
- {
- protected_cache_op(Hit_Invalidate_I, addr);
-+ INVALIDATE_BTB();
- }
-
- /*
-@@ -220,6 +278,7 @@ static inline void protected_flush_icache_line(unsigned long addr)
- static inline void protected_writeback_dcache_line(unsigned long addr)
- {
- protected_cache_op(Hit_Writeback_Inv_D, addr);
-+ SYNC_WB();
- }
-
- static inline void protected_writeback_scache_line(unsigned long addr)
-@@ -396,8 +455,10 @@ static inline void blast_##pfx##cache##lsize##_page_indexed(unsigned long page)
- __BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 16)
- __BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 16)
- __BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 16)
-+#ifndef CONFIG_JZRISC
- __BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 32)
- __BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 32)
-+#endif
- __BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 32)
- __BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 64)
- __BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 64)
-@@ -405,12 +466,122 @@ __BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 64)
- __BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 128)
-
- __BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 16)
-+#ifndef CONFIG_JZRISC
- __BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 32)
-+#endif
- __BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 16)
- __BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 32)
- __BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 64)
- __BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 128)
-
-+#ifdef CONFIG_JZRISC
-+
-+static inline void blast_dcache32(void)
-+{
-+ unsigned long start = INDEX_BASE;
-+ unsigned long end = start + current_cpu_data.dcache.waysize;
-+ unsigned long ws_inc = 1UL << current_cpu_data.dcache.waybit;
-+ unsigned long ws_end = current_cpu_data.dcache.ways <<
-+ current_cpu_data.dcache.waybit;
-+ unsigned long ws, addr;
-+
-+ for (ws = 0; ws < ws_end; ws += ws_inc)
-+ for (addr = start; addr < end; addr += 0x400)
-+ cache32_unroll32(addr|ws,Index_Writeback_Inv_D);
-+
-+ SYNC_WB();
-+}
-+
-+static inline void blast_dcache32_page(unsigned long page)
-+{
-+ unsigned long start = page;
-+ unsigned long end = page + PAGE_SIZE;
-+
-+ do {
-+ cache32_unroll32(start,Hit_Writeback_Inv_D);
-+ start += 0x400;
-+ } while (start < end);
-+
-+ SYNC_WB();
-+}
-+
-+static inline void blast_dcache32_page_indexed(unsigned long page)
-+{
-+ unsigned long indexmask = current_cpu_data.dcache.waysize - 1;
-+ unsigned long start = INDEX_BASE + (page & indexmask);
-+ unsigned long end = start + PAGE_SIZE;
-+ unsigned long ws_inc = 1UL << current_cpu_data.dcache.waybit;
-+ unsigned long ws_end = current_cpu_data.dcache.ways <<
-+ current_cpu_data.dcache.waybit;
-+ unsigned long ws, addr;
-+
-+ for (ws = 0; ws < ws_end; ws += ws_inc)
-+ for (addr = start; addr < end; addr += 0x400)
-+ cache32_unroll32(addr|ws,Index_Writeback_Inv_D);
-+
-+ SYNC_WB();
-+}
-+
-+static inline void blast_icache32(void)
-+{
-+ unsigned long start = INDEX_BASE;
-+ unsigned long end = start + current_cpu_data.icache.waysize;
-+ unsigned long ws_inc = 1UL << current_cpu_data.icache.waybit;
-+ unsigned long ws_end = current_cpu_data.icache.ways <<
-+ current_cpu_data.icache.waybit;
-+ unsigned long ws, addr;
-+
-+ K0_TO_K1();
-+
-+ for (ws = 0; ws < ws_end; ws += ws_inc)
-+ for (addr = start; addr < end; addr += 0x400)
-+ cache32_unroll32(addr|ws,Index_Invalidate_I);
-+
-+ INVALIDATE_BTB();
-+
-+ K1_TO_K0();
-+}
-+
-+static inline void blast_icache32_page(unsigned long page)
-+{
-+ unsigned long start = page;
-+ unsigned long end = page + PAGE_SIZE;
-+
-+ K0_TO_K1();
-+
-+ do {
-+ cache32_unroll32(start,Hit_Invalidate_I);
-+ start += 0x400;
-+ } while (start < end);
-+
-+ INVALIDATE_BTB();
-+
-+ K1_TO_K0();
-+}
-+
-+static inline void blast_icache32_page_indexed(unsigned long page)
-+{
-+ unsigned long indexmask = current_cpu_data.icache.waysize - 1;
-+ unsigned long start = INDEX_BASE + (page & indexmask);
-+ unsigned long end = start + PAGE_SIZE;
-+ unsigned long ws_inc = 1UL << current_cpu_data.icache.waybit;
-+ unsigned long ws_end = current_cpu_data.icache.ways <<
-+ current_cpu_data.icache.waybit;
-+ unsigned long ws, addr;
-+
-+ K0_TO_K1();
-+
-+ for (ws = 0; ws < ws_end; ws += ws_inc)
-+ for (addr = start; addr < end; addr += 0x400)
-+ cache32_unroll32(addr|ws,Index_Invalidate_I);
-+
-+ INVALIDATE_BTB();
-+
-+ K1_TO_K0();
-+}
-+
-+#endif /* CONFIG_JZRISC */
-+
- /* build blast_xxx_range, protected_blast_xxx_range */
- #define __BUILD_BLAST_CACHE_RANGE(pfx, desc, hitop, prot) \
- static inline void prot##blast_##pfx##cache##_range(unsigned long start, \
-@@ -432,13 +603,73 @@ static inline void prot##blast_##pfx##cache##_range(unsigned long start, \
- __##pfx##flush_epilogue \
- }
-
-+#ifndef CONFIG_JZRISC
- __BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, protected_)
-+#endif
- __BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, protected_)
-+#ifndef CONFIG_JZRISC
- __BUILD_BLAST_CACHE_RANGE(i, icache, Hit_Invalidate_I, protected_)
- __BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, )
-+#endif
- __BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, )
- /* blast_inv_dcache_range */
- __BUILD_BLAST_CACHE_RANGE(inv_d, dcache, Hit_Invalidate_D, )
- __BUILD_BLAST_CACHE_RANGE(inv_s, scache, Hit_Invalidate_SD, )
-
-+#ifdef CONFIG_JZRISC
-+
-+static inline void protected_blast_dcache_range(unsigned long start,
-+ unsigned long end)
-+{
-+ unsigned long lsize = cpu_dcache_line_size();
-+ unsigned long addr = start & ~(lsize - 1);
-+ unsigned long aend = (end - 1) & ~(lsize - 1);
-+
-+ while (1) {
-+ protected_cache_op(Hit_Writeback_Inv_D, addr);
-+ if (addr == aend)
-+ break;
-+ addr += lsize;
-+ }
-+ SYNC_WB();
-+}
-+
-+static inline void protected_blast_icache_range(unsigned long start,
-+ unsigned long end)
-+{
-+ unsigned long lsize = cpu_icache_line_size();
-+ unsigned long addr = start & ~(lsize - 1);
-+ unsigned long aend = (end - 1) & ~(lsize - 1);
-+
-+ K0_TO_K1();
-+
-+ while (1) {
-+ protected_cache_op(Hit_Invalidate_I, addr);
-+ if (addr == aend)
-+ break;
-+ addr += lsize;
-+ }
-+ INVALIDATE_BTB();
-+
-+ K1_TO_K0();
-+}
-+
-+static inline void blast_dcache_range(unsigned long start,
-+ unsigned long end)
-+{
-+ unsigned long lsize = cpu_dcache_line_size();
-+ unsigned long addr = start & ~(lsize - 1);
-+ unsigned long aend = (end - 1) & ~(lsize - 1);
-+
-+ while (1) {
-+ cache_op(Hit_Writeback_Inv_D, addr);
-+ if (addr == aend)
-+ break;
-+ addr += lsize;
-+ }
-+ SYNC_WB();
-+}
-+
-+#endif /* CONFIG_JZRISC */
-+
- #endif /* _ASM_R4KCACHE_H */
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/005-add-qi_lb60-board-support.patch b/target/linux/xburst/patches-2.6.34/005-add-qi_lb60-board-support.patch
deleted file mode 100644
index fa40d411c4..0000000000
--- a/target/linux/xburst/patches-2.6.34/005-add-qi_lb60-board-support.patch
+++ /dev/null
@@ -1,594 +0,0 @@
-From eb15b4f5046dbb1a530ec3e6134b1b68753e1f31 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 17:24:26 +0200
-Subject: [PATCH] Add qi_lb60 board support
-
----
- arch/mips/include/asm/mach-jz4740/board-qi_lb60.h | 51 +++
- arch/mips/jz4740/Kconfig | 4 +
- arch/mips/jz4740/Makefile | 2 +
- arch/mips/jz4740/board-qi_lb60.c | 486 +++++++++++++++++++++
- 4 files changed, 543 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/board-qi_lb60.h
- create mode 100644 arch/mips/jz4740/board-qi_lb60.c
-
-diff --git a/arch/mips/include/asm/mach-jz4740/board-qi_lb60.h b/arch/mips/include/asm/mach-jz4740/board-qi_lb60.h
-new file mode 100644
-index 0000000..cfbf073
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/board-qi_lb60.h
-@@ -0,0 +1,51 @@
-+/*
-+ * Copyright (c) 2009 Qi Hardware Inc.,
-+ * Author: Xiangfu Liu <xiangfu@qi-hardware.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 3 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, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#ifndef __ASM_JZ4740_QI_LB60_H__
-+#define __ASM_JZ4740_QI_LB60_H__
-+
-+#include <linux/gpio.h>
-+
-+/*
-+ * GPIO
-+ */
-+#define GPIO_DC_DETE_N JZ_GPIO_PORTC(26)
-+#define GPIO_CHARG_STAT_N JZ_GPIO_PORTC(27)
-+#define GPIO_LED_EN JZ_GPIO_PORTC(28)
-+#define GPIO_LCD_CS JZ_GPIO_PORTC(21)
-+#define GPIO_DISP_OFF_N JZ_GPIO_PORTD(21)
-+#define GPIO_PWM JZ_GPIO_PORTD(27)
-+#define GPIO_WAKEUP_N JZ_GPIO_PORTD(29)
-+
-+#define GPIO_AMP_EN JZ_GPIO_PORTD(4)
-+
-+#define GPIO_SD_CD_N JZ_GPIO_PORTD(0)
-+#define GPIO_SD_VCC_EN_N JZ_GPIO_PORTD(2)
-+
-+#define GPIO_USB_DETE JZ_GPIO_PORTD(28)
-+#define GPIO_BUZZ_PWM JZ_GPIO_PORTD(27)
-+#define GPIO_UDC_HOTPLUG GPIO_USB_DETE
-+
-+#define GPIO_AUDIO_POP JZ_GPIO_PORTB(29)
-+#define GPIO_COB_TEST JZ_GPIO_PORTB(30)
-+
-+#define GPIO_KEYOUT_BASE JZ_GPIO_PORTC(10)
-+#define GPIO_KEYIN_BASE JZ_GPIO_PORTD(18)
-+#define GPIO_KEYIN_8 JZ_GPIO_PORTD(26)
-+
-+#endif /* __ASM_JZ4740_QI_LB60_H__ */
-diff --git a/arch/mips/jz4740/Kconfig b/arch/mips/jz4740/Kconfig
-index b959769..a255c1a 100644
---- a/arch/mips/jz4740/Kconfig
-+++ b/arch/mips/jz4740/Kconfig
-@@ -3,6 +3,10 @@ choice
- depends on MACH_JZ
- default JZ4740_QI_LB60
-
-+config JZ4740_QI_LB60
-+ bool "Qi Hardware Ben NanoNote"
-+ select SOC_JZ4740
-+
- endchoice
-
- config HAVE_PWM
-diff --git a/arch/mips/jz4740/Makefile b/arch/mips/jz4740/Makefile
-index 398ee91..dd27b49 100644
---- a/arch/mips/jz4740/Makefile
-+++ b/arch/mips/jz4740/Makefile
-@@ -11,6 +11,8 @@ obj-$(CONFIG_DEBUG_FS) += clock-debugfs.o
-
- # board specific support
-
-+obj-$(CONFIG_JZ4740_QI_LB60) += board-qi_lb60.o
-+
- # PM support
-
- obj-$(CONFIG_PM) += pm.o
-diff --git a/arch/mips/jz4740/board-qi_lb60.c b/arch/mips/jz4740/board-qi_lb60.c
-new file mode 100644
-index 0000000..b3cc308
---- /dev/null
-+++ b/arch/mips/jz4740/board-qi_lb60.c
-@@ -0,0 +1,486 @@
-+/*
-+ * linux/arch/mips/jz4740/board-qi_lb60.c
-+ *
-+ * QI_LB60 setup routines.
-+ *
-+ * Copyright (c) 2009 Qi Hardware inc.,
-+ * Author: Xiangfu Liu <xiangfu@qi-hardware.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 or later
-+ * as published by the Free Software Foundation.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/gpio.h>
-+
-+#include <asm/mach-jz4740/board-qi_lb60.h>
-+#include <asm/mach-jz4740/platform.h>
-+
-+#include <linux/input.h>
-+#include <linux/gpio_keys.h>
-+#include <linux/mtd/jz4740_nand.h>
-+#include <linux/jz4740_fb.h>
-+#include <linux/input/matrix_keypad.h>
-+#include <linux/mtd/jz4740_nand.h>
-+#include <linux/spi/spi.h>
-+#include <linux/spi/spi_gpio.h>
-+#include <linux/power_supply.h>
-+#include <linux/power/jz4740-battery.h>
-+#include <linux/power/gpio-charger.h>
-+#include <linux/mmc/jz4740_mmc.h>
-+
-+#include <linux/regulator/fixed.h>
-+#include <linux/regulator/machine.h>
-+
-+#include <linux/leds_pwm.h>
-+
-+#include "clock.h"
-+
-+static bool is_avt2;
-+
-+/* NAND */
-+static struct nand_ecclayout qi_lb60_ecclayout_1gb = {
-+ .eccbytes = 36,
-+ .eccpos = {
-+ 6, 7, 8, 9, 10, 11, 12, 13,
-+ 14, 15, 16, 17, 18, 19, 20, 21,
-+ 22, 23, 24, 25, 26, 27, 28, 29,
-+ 30, 31, 32, 33, 34, 35, 36, 37,
-+ 38, 39, 40, 41},
-+ .oobfree = {
-+ {.offset = 2,
-+ .length = 4},
-+ {.offset = 42,
-+ .length = 22}}
-+};
-+
-+static struct mtd_partition qi_lb60_partitions_1gb[] = {
-+ { .name = "NAND BOOT partition",
-+ .offset = 0 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ { .name = "NAND KERNEL partition",
-+ .offset = 4 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ { .name = "NAND ROOTFS partition",
-+ .offset = 8 * 0x100000,
-+ .size = (504 + 512) * 0x100000,
-+ },
-+};
-+
-+static struct nand_ecclayout qi_lb60_ecclayout_2gb = {
-+ .eccbytes = 72,
-+ .eccpos = {
-+ 12, 13, 14, 15, 16, 17, 18, 19,
-+ 20, 21, 22, 23, 24, 25, 26, 27,
-+ 28, 29, 30, 31, 32, 33, 34, 35,
-+ 36, 37, 38, 39, 40, 41, 42, 43,
-+ 44, 45, 46, 47, 48, 49, 50, 51,
-+ 52, 53, 54, 55, 56, 57, 58, 59,
-+ 60, 61, 62, 63, 64, 65, 66, 67,
-+ 68, 69, 70, 71, 72, 73, 74, 75,
-+ 76, 77, 78, 79, 80, 81, 82, 83},
-+ .oobfree = {
-+ { .offset = 2, .length = 10},
-+ { .offset = 84, .length = 44},
-+ },
-+};
-+
-+static struct mtd_partition qi_lb60_partitions_2gb[] = {
-+ { .name = "NAND BOOT partition",
-+ .offset = 0 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ { .name = "NAND KERNEL partition",
-+ .offset = 4 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ { .name = "NAND ROOTFS partition",
-+ .offset = 8 * 0x100000,
-+ .size = (504 + 512 + 1024) * 0x100000,
-+ },
-+};
-+
-+static void qi_lb60_nand_ident(struct platform_device *pdev,
-+ struct nand_chip *chip, struct mtd_partition **partitions,
-+ int *num_partitions)
-+{
-+ if (chip->page_shift == 12) {
-+ chip->ecc.layout = &qi_lb60_ecclayout_2gb;
-+ *partitions = qi_lb60_partitions_2gb;
-+ *num_partitions = ARRAY_SIZE(qi_lb60_partitions_2gb);
-+ } else {
-+ chip->ecc.layout = &qi_lb60_ecclayout_1gb;
-+ *partitions = qi_lb60_partitions_1gb;
-+ *num_partitions = ARRAY_SIZE(qi_lb60_partitions_1gb);
-+ }
-+}
-+
-+static struct jz_nand_platform_data qi_lb60_nand_pdata = {
-+ .ident_callback = qi_lb60_nand_ident,
-+ .busy_gpio = 94,
-+};
-+
-+/* Keyboard*/
-+
-+/* #define KEEP_UART_ALIVE
-+ * don't define this. the keyboard and keyboard both work
-+ */
-+
-+#define KEY_QI_QI KEY_F13
-+#define KEY_QI_UPRED KEY_RIGHTALT
-+#define KEY_QI_VOLUP KEY_VOLUMEUP
-+#define KEY_QI_VOLDOWN KEY_VOLUMEDOWN
-+#define KEY_QI_FN KEY_LEFTCTRL
-+
-+static const uint32_t qi_lb60_keymap[] = {
-+ KEY(0, 0, KEY_F1), /* S2 */
-+ KEY(0, 1, KEY_F2), /* S3 */
-+ KEY(0, 2, KEY_F3), /* S4 */
-+ KEY(0, 3, KEY_F4), /* S5 */
-+ KEY(0, 4, KEY_F5), /* S6 */
-+ KEY(0, 5, KEY_F6), /* S7 */
-+ KEY(0, 6, KEY_F7), /* S8 */
-+
-+ KEY(1, 0, KEY_Q), /* S10 */
-+ KEY(1, 1, KEY_W), /* S11 */
-+ KEY(1, 2, KEY_E), /* S12 */
-+ KEY(1, 3, KEY_R), /* S13 */
-+ KEY(1, 4, KEY_T), /* S14 */
-+ KEY(1, 5, KEY_Y), /* S15 */
-+ KEY(1, 6, KEY_U), /* S16 */
-+ KEY(1, 7, KEY_I), /* S17 */
-+ KEY(2, 0, KEY_A), /* S18 */
-+ KEY(2, 1, KEY_S), /* S19 */
-+ KEY(2, 2, KEY_D), /* S20 */
-+ KEY(2, 3, KEY_F), /* S21 */
-+ KEY(2, 4, KEY_G), /* S22 */
-+ KEY(2, 5, KEY_H), /* S23 */
-+ KEY(2, 6, KEY_J), /* S24 */
-+ KEY(2, 7, KEY_K), /* S25 */
-+ KEY(3, 0, KEY_ESC), /* S26 */
-+ KEY(3, 1, KEY_Z), /* S27 */
-+ KEY(3, 2, KEY_X), /* S28 */
-+ KEY(3, 3, KEY_C), /* S29 */
-+ KEY(3, 4, KEY_V), /* S30 */
-+ KEY(3, 5, KEY_B), /* S31 */
-+ KEY(3, 6, KEY_N), /* S32 */
-+ KEY(3, 7, KEY_M), /* S33 */
-+ KEY(4, 0, KEY_TAB), /* S34 */
-+ KEY(4, 1, KEY_CAPSLOCK), /* S35 */
-+ KEY(4, 2, KEY_BACKSLASH), /* S36 */
-+ KEY(4, 3, KEY_APOSTROPHE), /* S37 */
-+ KEY(4, 4, KEY_COMMA), /* S38 */
-+ KEY(4, 5, KEY_DOT), /* S39 */
-+ KEY(4, 6, KEY_SLASH), /* S40 */
-+ KEY(4, 7, KEY_UP), /* S41 */
-+ KEY(5, 0, KEY_O), /* S42 */
-+ KEY(5, 1, KEY_L), /* S43 */
-+ KEY(5, 2, KEY_EQUAL), /* S44 */
-+ KEY(5, 3, KEY_QI_UPRED), /* S45 */
-+ KEY(5, 4, KEY_SPACE), /* S46 */
-+ KEY(5, 5, KEY_QI_QI), /* S47 */
-+ KEY(5, 6, KEY_RIGHTCTRL), /* S48 */
-+ KEY(5, 7, KEY_LEFT), /* S49 */
-+ KEY(6, 0, KEY_F8), /* S50 */
-+ KEY(6, 1, KEY_P), /* S51 */
-+ KEY(6, 2, KEY_BACKSPACE),/* S52 */
-+ KEY(6, 3, KEY_ENTER), /* S53 */
-+ KEY(6, 4, KEY_QI_VOLUP), /* S54 */
-+ KEY(6, 5, KEY_QI_VOLDOWN), /* S55 */
-+ KEY(6, 6, KEY_DOWN), /* S56 */
-+ KEY(6, 7, KEY_RIGHT), /* S57 */
-+
-+#ifndef KEEP_UART_ALIVE
-+ KEY(7, 0, KEY_LEFTSHIFT), /* S58 */
-+ KEY(7, 1, KEY_LEFTALT), /* S59 */
-+ KEY(7, 2, KEY_QI_FN), /* S60 */
-+#endif
-+};
-+
-+static const struct matrix_keymap_data qi_lb60_keymap_data = {
-+ .keymap = qi_lb60_keymap,
-+ .keymap_size = ARRAY_SIZE(qi_lb60_keymap),
-+};
-+
-+static const unsigned int qi_lb60_keypad_cols[] = {
-+ 74, 75, 76, 77, 78, 79, 80, 81,
-+};
-+
-+static const unsigned int qi_lb60_keypad_rows[] = {
-+ 114, 115, 116, 117, 118, 119, 120,
-+#ifndef KEEP_UART_ALIVE
-+ 122,
-+#endif
-+};
-+
-+static struct matrix_keypad_platform_data qi_lb60_pdata = {
-+ .keymap_data = &qi_lb60_keymap_data,
-+ .col_gpios = qi_lb60_keypad_cols,
-+ .row_gpios = qi_lb60_keypad_rows,
-+ .num_col_gpios = ARRAY_SIZE(qi_lb60_keypad_cols),
-+ .num_row_gpios = ARRAY_SIZE(qi_lb60_keypad_rows),
-+ .col_scan_delay_us = 10,
-+ .debounce_ms = 10,
-+ .wakeup = 1,
-+ .active_low = 1,
-+};
-+
-+static struct platform_device qi_lb60_keypad = {
-+ .name = "matrix-keypad",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &qi_lb60_pdata,
-+ },
-+};
-+
-+/* Display */
-+static struct fb_videomode qi_lb60_video_modes[] = {
-+ {
-+ .name = "320x240",
-+ .xres = 320,
-+ .yres = 240,
-+ .refresh = 30,
-+ .left_margin = 140,
-+ .right_margin = 273,
-+ .upper_margin = 20,
-+ .lower_margin = 2,
-+ .hsync_len = 1,
-+ .vsync_len = 1,
-+ .sync = 0,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },
-+};
-+
-+static struct jz4740_fb_platform_data qi_lb60_fb_pdata = {
-+ .width = 60,
-+ .height = 45,
-+ .num_modes = ARRAY_SIZE(qi_lb60_video_modes),
-+ .modes = qi_lb60_video_modes,
-+ .bpp = 24,
-+ .lcd_type = JZ_LCD_TYPE_8BIT_SERIAL,
-+ .pixclk_falling_edge = 1,
-+};
-+
-+
-+struct spi_gpio_platform_data spigpio_platform_data = {
-+ .sck = JZ_GPIO_PORTC(23),
-+ .mosi = JZ_GPIO_PORTC(22),
-+ .miso = -1,
-+ .num_chipselect = 1,
-+};
-+
-+static struct platform_device spigpio_device = {
-+ .name = "spi_gpio",
-+ .id = 1,
-+ .dev = {
-+ .platform_data = &spigpio_platform_data,
-+ },
-+};
-+
-+static struct spi_board_info qi_lb60_spi_board_info[] = {
-+ {
-+ .modalias = "gpm940b0",
-+ .controller_data = (void *)JZ_GPIO_PORTC(21),
-+ .chip_select = 0,
-+ .bus_num = 1,
-+ .max_speed_hz = 30 * 1000,
-+ .mode = SPI_3WIRE,
-+ },
-+};
-+
-+/* Battery */
-+static struct jz_battery_platform_data qi_lb60_battery_pdata = {
-+ .gpio_charge = GPIO_CHARG_STAT_N,
-+ .gpio_charge_active_low = 1,
-+ .info = {
-+ .name = "battery",
-+ .technology = POWER_SUPPLY_TECHNOLOGY_LIPO,
-+ .voltage_max_design = 4200000,
-+ .voltage_min_design = 3600000,
-+ },
-+};
-+
-+static char *qi_lb60_batteries[] = {
-+ "battery",
-+};
-+
-+static struct gpio_charger_platform_data qi_lb60_charger_pdata = {
-+ .name = "USB",
-+ .type = POWER_SUPPLY_TYPE_USB,
-+ .gpio = GPIO_USB_DETE,
-+ .gpio_active_low = 1,
-+ .batteries = qi_lb60_batteries,
-+ .num_batteries = ARRAY_SIZE(qi_lb60_batteries),
-+};
-+
-+static struct platform_device qi_lb60_charger_device = {
-+ .name = "gpio-charger",
-+ .dev = {
-+ .platform_data = &qi_lb60_charger_pdata,
-+ },
-+};
-+
-+/* GPIO Key: power */
-+static struct gpio_keys_button qi_lb60_gpio_keys_buttons[] = {
-+ [0] = {
-+ .code = KEY_POWER,
-+ .gpio = GPIO_WAKEUP_N,
-+ .active_low = 1,
-+ .desc = "Power",
-+ .wakeup = 1,
-+ },
-+};
-+
-+static struct gpio_keys_platform_data qi_lb60_gpio_keys_data = {
-+ .nbuttons = ARRAY_SIZE(qi_lb60_gpio_keys_buttons),
-+ .buttons = qi_lb60_gpio_keys_buttons,
-+};
-+
-+static struct platform_device qi_lb60_gpio_keys = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &qi_lb60_gpio_keys_data,
-+ }
-+};
-+
-+static struct jz4740_mmc_platform_data qi_lb60_mmc_pdata = {
-+ .gpio_card_detect = JZ_GPIO_PORTD(0),
-+ .gpio_read_only = -1,
-+ .gpio_power = JZ_GPIO_PORTD(2),
-+ .power_active_low = 1,
-+};
-+
-+static struct regulator_consumer_supply avt2_usb_regulator_consumer =
-+ REGULATOR_SUPPLY("vbus", "jz4740-ohci");
-+
-+static struct regulator_init_data avt2_usb_regulator_init_data = {
-+ .num_consumer_supplies = 1,
-+ .consumer_supplies = &avt2_usb_regulator_consumer,
-+ .constraints = {
-+ .name = "USB power",
-+ .min_uV = 5000000,
-+ .max_uV = 5000000,
-+ .valid_modes_mask = REGULATOR_MODE_NORMAL,
-+ .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-+ },
-+};
-+
-+static struct fixed_voltage_config avt2_usb_regulator_data = {
-+ .supply_name = "USB power",
-+ .microvolts = 5000000,
-+ .gpio = JZ_GPIO_PORTB(17),
-+ .init_data = &avt2_usb_regulator_init_data,
-+};
-+
-+static struct platform_device avt2_usb_regulator_device = {
-+ .name = "reg-fixed-voltage",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &avt2_usb_regulator_data,
-+ }
-+};
-+
-+static struct led_pwm qi_lb60_pizo_led = {
-+ .name = "nanonote::pizo",
-+ .pwm_id = 4,
-+ .max_brightness = 255,
-+ .pwm_period_ns = 1000000,
-+};
-+
-+static struct led_pwm_platform_data qi_lb60_pizo_data = {
-+ .num_leds = 1,
-+ .leds = &qi_lb60_pizo_led,
-+};
-+
-+static struct platform_device qi_lb60_pizo_device = {
-+ .name = "leds_pwm",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &qi_lb60_pizo_data,
-+ }
-+};
-+
-+static struct platform_device *jz_platform_devices[] __initdata = {
-+ &jz4740_usb_gdt_device,
-+ &jz4740_mmc_device,
-+ &jz4740_nand_device,
-+ &qi_lb60_keypad,
-+ &spigpio_device,
-+ &jz4740_framebuffer_device,
-+ &jz4740_i2s_device,
-+ &jz4740_codec_device,
-+ &jz4740_rtc_device,
-+ &jz4740_adc_device,
-+ &jz4740_battery_device,
-+ &qi_lb60_gpio_keys,
-+ &qi_lb60_charger_device,
-+ &qi_lb60_pizo_device,
-+};
-+
-+static void __init board_gpio_setup(void)
-+{
-+ /* We only need to enable/disable pullup here for pins used in generic
-+ * drivers. Everything else is done by the drivers themselfs. */
-+ jz_gpio_disable_pullup(GPIO_SD_VCC_EN_N);
-+ jz_gpio_disable_pullup(GPIO_SD_CD_N);
-+}
-+
-+static int __init qi_lb60_init_platform_devices(void)
-+{
-+ jz4740_framebuffer_device.dev.platform_data = &qi_lb60_fb_pdata;
-+ jz4740_nand_device.dev.platform_data = &qi_lb60_nand_pdata;
-+ jz4740_battery_device.dev.platform_data = &qi_lb60_battery_pdata;
-+ jz4740_mmc_device.dev.platform_data = &qi_lb60_mmc_pdata;
-+
-+ spi_register_board_info(qi_lb60_spi_board_info,
-+ ARRAY_SIZE(qi_lb60_spi_board_info));
-+
-+ if (is_avt2) {
-+ platform_device_register(&avt2_usb_regulator_device);
-+ platform_device_register(&jz4740_usb_ohci_device);
-+ }
-+
-+ return platform_add_devices(jz_platform_devices,
-+ ARRAY_SIZE(jz_platform_devices));
-+
-+}
-+
-+struct jz4740_clock_board_data jz4740_clock_bdata = {
-+ .ext_rate = 12000000,
-+ .rtc_rate = 32768,
-+};
-+
-+extern int jz_gpiolib_init(void);
-+
-+static __init int board_avt2(char *str)
-+{
-+ qi_lb60_mmc_pdata.card_detect_active_low = 1;
-+ qi_lb60_mmc_pdata.power_active_low = 1;
-+ is_avt2 = true;
-+
-+ return 1;
-+}
-+
-+__setup("avt2", board_avt2);
-+
-+static int __init qi_lb60_board_setup(void)
-+{
-+ printk(KERN_INFO "Qi Hardware JZ4740 QI_LB60 setup\n");
-+ if (jz_gpiolib_init())
-+ panic("Failed to initalize jz gpio\n");
-+
-+ jz4740_clock_init();
-+ board_gpio_setup();
-+
-+ if (qi_lb60_init_platform_devices())
-+ panic("Failed to initalize platform devices\n");
-+
-+ return 0;
-+}
-+
-+arch_initcall(qi_lb60_board_setup);
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/006-add-n516-board-support.patch b/target/linux/xburst/patches-2.6.34/006-add-n516-board-support.patch
deleted file mode 100644
index 5f845d3324..0000000000
--- a/target/linux/xburst/patches-2.6.34/006-add-n516-board-support.patch
+++ /dev/null
@@ -1,702 +0,0 @@
-From 49f148f79887cec83c4b051c104072d770a6a9af Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 17:25:01 +0200
-Subject: [PATCH] Add n516 board support
-
----
- arch/mips/include/asm/mach-jz4740/board-n516.h | 39 +++
- arch/mips/jz4740/Kconfig | 4 +
- arch/mips/jz4740/Makefile | 1 +
- arch/mips/jz4740/board-n516-display.c | 393 ++++++++++++++++++++++++
- arch/mips/jz4740/board-n516.c | 206 +++++++++++++
- 5 files changed, 643 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/board-n516.h
- create mode 100644 arch/mips/jz4740/board-n516-display.c
- create mode 100644 arch/mips/jz4740/board-n516.c
-
-diff --git a/arch/mips/include/asm/mach-jz4740/board-n516.h b/arch/mips/include/asm/mach-jz4740/board-n516.h
-new file mode 100644
-index 0000000..f3f1e0a
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/board-n516.h
-@@ -0,0 +1,39 @@
-+/*
-+ * linux/include/asm-mips/mach-jz4740/board-n516.h
-+ *
-+ * JZ4730-based N516 board definition.
-+ *
-+ * Copyright (C) 2009, Yauhen Kharuzhy <jekhor@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.
-+ */
-+
-+#ifndef __ASM_JZ4740_N516_H__
-+#define __ASM_JZ4740_N516_H__
-+
-+#include <asm/mach-jz4740/gpio.h>
-+
-+/*
-+ * GPIO
-+ */
-+#define GPIO_SD_VCC_EN_N JZ_GPIO_PORTD(17)
-+#define GPIO_SD_CD_N JZ_GPIO_PORTD(7)
-+#define GPIO_SD_WP JZ_GPIO_PORTD(15)
-+#define GPIO_USB_DETECT JZ_GPIO_PORTD(19)
-+#define GPIO_CHARG_STAT_N JZ_GPIO_PORTD(16)
-+#define GPIO_LED_ENABLE JZ_GPIO_PORTD(28)
-+#define GPIO_LPC_INT JZ_GPIO_PORTD(14)
-+#define GPIO_HPHONE_DETECT JZ_GPIO_PORTD(20)
-+#define GPIO_SPEAKER_ENABLE JZ_GPIO_PORTD(21)
-+
-+/* Display */
-+#define GPIO_DISPLAY_RST_L JZ_GPIO_PORTB(18)
-+#define GPIO_DISPLAY_RDY JZ_GPIO_PORTB(17)
-+#define GPIO_DISPLAY_STBY JZ_GPIO_PORTC(22)
-+#define GPIO_DISPLAY_ERR JZ_GPIO_PORTC(23)
-+#define GPIO_DISPLAY_OFF JZ_GPIO_PORTD(1)
-+
-+#endif /* __ASM_JZ4740_N516_H__ */
-diff --git a/arch/mips/jz4740/Kconfig b/arch/mips/jz4740/Kconfig
-index 3de3b99..b987c27 100644
---- a/arch/mips/jz4740/Kconfig
-+++ b/arch/mips/jz4740/Kconfig
-@@ -7,6 +7,10 @@ config JZ4740_QI_LB60
- bool "Qi Hardware Ben NanoNote"
- select SOC_JZ4740
-
-+config JZ4740_N516
-+ bool "Hanvon n516 eBook reader"
-+ select SOC_JZ4740
-+
- endchoice
-
- config HAVE_PWM
-diff --git a/arch/mips/jz4740/Makefile b/arch/mips/jz4740/Makefile
-index deca88e..9ed5e5b 100644
---- a/arch/mips/jz4740/Makefile
-+++ b/arch/mips/jz4740/Makefile
-@@ -12,6 +12,7 @@ obj-$(CONFIG_DEBUG_FS) += clock-debugfs.o
- # board specific support
-
- obj-$(CONFIG_JZ4740_QI_LB60) += board-qi_lb60.o
-+obj-$(CONFIG_JZ4740_N516) += board-n516.o board-n516-display.o
-
- # PM support
-
-diff --git a/arch/mips/jz4740/board-n516-display.c b/arch/mips/jz4740/board-n516-display.c
-new file mode 100644
-index 0000000..44d8237
---- /dev/null
-+++ b/arch/mips/jz4740/board-n516-display.c
-@@ -0,0 +1,393 @@
-+/*
-+ * board-n516-display.c -- Platform device for N516 display
-+ *
-+ * Copyright (C) 2009, Yauhen Kharuzhy <jekhor@gmail.com>
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive for
-+ * more details.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/delay.h>
-+#include <linux/interrupt.h>
-+#include <linux/fb.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/irq.h>
-+#include <linux/gpio.h>
-+#include <linux/jz4740_fb.h>
-+
-+#include <asm/mach-jz4740/platform.h>
-+#include <asm/mach-jz4740/board-n516.h>
-+
-+#include <video/metronomefb.h>
-+#include <linux/console.h>
-+
-+static struct fb_videomode n516_fb_modes[] = {
-+ [0] = {
-+ .name = "Metronome 800x600",
-+ .refresh = 50,
-+ .xres = 400,
-+ .yres = 624,
-+ .hsync_len = 31,
-+ .vsync_len = 23,
-+ .right_margin = 31,
-+ .left_margin = 5,
-+ .upper_margin = 1,
-+ .lower_margin = 2,
-+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-+ },
-+};
-+
-+static struct jz4740_fb_platform_data n516_fb_pdata = {
-+ .num_modes = ARRAY_SIZE(n516_fb_modes),
-+ .modes = n516_fb_modes,
-+ .bpp = 16,
-+ .lcd_type = JZ_LCD_TYPE_GENERIC_16_BIT,
-+};
-+
-+struct n516_board_info {
-+ uint8_t *metromem;
-+ size_t wfm_size;
-+ struct fb_info *host_fbinfo; /* the host LCD controller's fbi */
-+ unsigned int fw;
-+ unsigned int fh;
-+};
-+
-+static struct platform_device *n516_device;
-+static struct n516_board_info n516_board_info;
-+
-+static int metronome_gpios[] = {
-+ GPIO_DISPLAY_STBY,
-+ GPIO_DISPLAY_RST_L,
-+ GPIO_DISPLAY_RDY,
-+ GPIO_DISPLAY_ERR,
-+/* GPIO_DISPLAY_OFF,*/
-+};
-+
-+static const char *metronome_gpio_names[] = {
-+ "Metronome STDBY",
-+ "Metronome RST",
-+ "Metronome RDY",
-+ "Metronome ERR",
-+/* "Metronone OFF",*/
-+};
-+
-+static int n516_enable_hostfb(bool enable)
-+{
-+ int ret;
-+ int blank = enable ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN;
-+
-+ acquire_console_sem();
-+ ret = fb_blank(n516_board_info.host_fbinfo, blank);
-+ release_console_sem();
-+
-+ return ret;
-+}
-+
-+static int n516_init_metronome_gpios(struct metronomefb_par *par)
-+{
-+ int i;
-+ int ret;
-+
-+ for (i = 0; i < ARRAY_SIZE(metronome_gpios); ++i) {
-+ ret = gpio_request(metronome_gpios[i], metronome_gpio_names[i]);
-+ if (ret)
-+ goto err;
-+ }
-+
-+ gpio_direction_output(GPIO_DISPLAY_OFF, 0);
-+ gpio_direction_output(GPIO_DISPLAY_RST_L, 0);
-+ gpio_direction_output(GPIO_DISPLAY_STBY, 0);
-+ gpio_direction_input(GPIO_DISPLAY_RDY);
-+ gpio_direction_input(GPIO_DISPLAY_ERR);
-+
-+ return 0;
-+err:
-+ for (--i; i >= 0; --i)
-+ gpio_free(metronome_gpios[i]);
-+
-+ return ret;
-+}
-+
-+static int n516_share_video_mem(struct fb_info *info)
-+{
-+ int ret;
-+
-+ dev_dbg(&n516_device->dev, "ENTER %s\n", __func__);
-+ dev_dbg(&n516_device->dev, "%s, info->var.xres = %u, info->var.yres = %u\n", __func__, info->var.xres, info->var.yres);
-+ /* rough check if this is our desired fb and not something else */
-+ if ((info->var.xres != n516_fb_pdata.modes[0].xres)
-+ || (info->var.yres != n516_fb_pdata.modes[0].yres))
-+ return 0;
-+
-+ /* we've now been notified that we have our new fb */
-+ n516_board_info.metromem = info->screen_base;
-+ n516_board_info.host_fbinfo = info;
-+
-+ n516_enable_hostfb(false);
-+ /* try to refcount host drv since we are the consumer after this */
-+ if (!try_module_get(info->fbops->owner))
-+ return -ENODEV;
-+
-+ /* this _add binds metronomefb to n516. metronomefb refcounts n516 */
-+ ret = platform_device_add(n516_device);
-+
-+ if (ret) {
-+ platform_device_put(n516_device);
-+ return ret;
-+ }
-+
-+ /* request our platform independent driver */
-+ request_module("metronomefb");
-+
-+ return 0;
-+}
-+
-+static int n516_unshare_video_mem(struct fb_info *info)
-+{
-+ dev_dbg(&n516_device->dev, "ENTER %s\n", __func__);
-+
-+ if (info != n516_board_info.host_fbinfo)
-+ return 0;
-+
-+ module_put(n516_board_info.host_fbinfo->fbops->owner);
-+ return 0;
-+}
-+
-+static int n516_fb_notifier_callback(struct notifier_block *self,
-+ unsigned long event, void *data)
-+{
-+ struct fb_event *evdata = data;
-+ struct fb_info *info = evdata->info;
-+
-+ dev_dbg(&n516_device->dev, "ENTER %s\n", __func__);
-+
-+ if (event == FB_EVENT_FB_REGISTERED)
-+ return n516_share_video_mem(info);
-+ else if (event == FB_EVENT_FB_UNREGISTERED)
-+ return n516_unshare_video_mem(info);
-+
-+ return 0;
-+}
-+
-+static struct notifier_block n516_fb_notif = {
-+ .notifier_call = n516_fb_notifier_callback,
-+};
-+
-+/* this gets called as part of our init. these steps must be done now so
-+ * that we can use set_pxa_fb_info */
-+static void __init n516_presetup_fb(void)
-+{
-+ int padding_size;
-+ int totalsize;
-+
-+ /* the frame buffer is divided as follows:
-+ command | CRC | padding
-+ 16kb waveform data | CRC | padding
-+ image data | CRC
-+ */
-+
-+ n516_board_info.fw = 800;
-+ n516_board_info.fh = 624;
-+
-+ /* waveform must be 16k + 2 for checksum */
-+ n516_board_info.wfm_size = roundup(16*1024 + 2, n516_board_info.fw);
-+
-+ padding_size = PAGE_SIZE + (4 * n516_board_info.fw);
-+
-+ /* total is 1 cmd , 1 wfm, padding and image */
-+ totalsize = n516_board_info.fw + n516_board_info.wfm_size;
-+ totalsize += padding_size + (n516_board_info.fw*n516_board_info.fh);
-+
-+ /* save this off because we're manipulating fw after this and
-+ * we'll need it when we're ready to setup the framebuffer */
-+
-+ /* the reason we do this adjustment is because we want to acquire
-+ * more framebuffer memory without imposing custom awareness on the
-+ * underlying driver */
-+ n516_fb_pdata.modes[0].yres = DIV_ROUND_UP(totalsize, n516_board_info.fw);
-+
-+ jz4740_framebuffer_device.dev.platform_data = &n516_fb_pdata;
-+ platform_device_register(&jz4740_framebuffer_device);
-+}
-+
-+/* this gets called by metronomefb as part of its init, in our case, we
-+ * have already completed initial framebuffer init in presetup_fb so we
-+ * can just setup the fb access pointers */
-+static int n516_setup_fb(struct metronomefb_par *par)
-+{
-+ /* metromem was set up by the notifier in share_video_mem so now
-+ * we can use its value to calculate the other entries */
-+ par->metromem_cmd = (struct metromem_cmd *) n516_board_info.metromem;
-+ par->metromem_wfm = n516_board_info.metromem + n516_board_info.fw;
-+ par->metromem_img = par->metromem_wfm + n516_board_info.wfm_size;
-+ par->metromem_img_csum = (u16 *) (par->metromem_img + (n516_board_info.fw * n516_board_info.fh));
-+ par->metromem_dma = n516_board_info.host_fbinfo->fix.smem_start;
-+
-+ return 0;
-+}
-+
-+static int n516_get_panel_type(void)
-+{
-+ return 5;
-+}
-+
-+static irqreturn_t n516_handle_irq(int irq, void *dev_id)
-+{
-+ struct metronomefb_par *par = dev_id;
-+
-+ dev_dbg(&par->pdev->dev, "Metronome IRQ! RDY=%d\n", gpio_get_value(GPIO_DISPLAY_RDY));
-+ wake_up_all(&par->waitq);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void n516_power_ctl(struct metronomefb_par *par, int cmd)
-+{
-+ switch (cmd) {
-+ case METRONOME_POWER_OFF:
-+ gpio_set_value(GPIO_DISPLAY_OFF, 1);
-+ n516_enable_hostfb(false);
-+ break;
-+ case METRONOME_POWER_ON:
-+ gpio_set_value(GPIO_DISPLAY_OFF, 0);
-+ n516_enable_hostfb(true);
-+ break;
-+ }
-+}
-+
-+static int n516_get_rdy(struct metronomefb_par *par)
-+{
-+ return gpio_get_value(GPIO_DISPLAY_RDY);
-+}
-+
-+static int n516_get_err(struct metronomefb_par *par)
-+{
-+ return gpio_get_value(GPIO_DISPLAY_ERR);
-+}
-+
-+static int n516_setup_irq(struct fb_info *info)
-+{
-+ int ret;
-+
-+ dev_dbg(&n516_device->dev, "ENTER %s\n", __func__);
-+
-+ ret = request_irq(gpio_to_irq(GPIO_DISPLAY_RDY), n516_handle_irq,
-+ IRQF_TRIGGER_RISING,
-+ "n516", info->par);
-+ if (ret)
-+ dev_err(&n516_device->dev, "request_irq failed: %d\n", ret);
-+
-+ return ret;
-+}
-+
-+static void n516_set_rst(struct metronomefb_par *par, int state)
-+{
-+ dev_dbg(&n516_device->dev, "ENTER %s, RDY=%d\n", __func__, gpio_get_value(GPIO_DISPLAY_RDY));
-+ if (state)
-+ gpio_set_value(GPIO_DISPLAY_RST_L, 1);
-+ else
-+ gpio_set_value(GPIO_DISPLAY_RST_L, 0);
-+}
-+
-+static void n516_set_stdby(struct metronomefb_par *par, int state)
-+{
-+ dev_dbg(&n516_device->dev, "ENTER %s, RDY=%d\n", __func__, gpio_get_value(GPIO_DISPLAY_RDY));
-+ if (state)
-+ gpio_set_value(GPIO_DISPLAY_STBY, 1);
-+ else
-+ gpio_set_value(GPIO_DISPLAY_STBY, 0);
-+}
-+
-+static int n516_wait_event(struct metronomefb_par *par)
-+{
-+ unsigned long timeout = jiffies + HZ / 20;
-+
-+ dev_dbg(&n516_device->dev, "ENTER1 %s, RDY=%d\n",
-+ __func__, gpio_get_value(GPIO_DISPLAY_RDY));
-+ while (n516_get_rdy(par) && time_before(jiffies, timeout))
-+ schedule();
-+
-+ dev_dbg(&n516_device->dev, "ENTER2 %s, RDY=%d\n",
-+ __func__, gpio_get_value(GPIO_DISPLAY_RDY));
-+ return wait_event_timeout(par->waitq,
-+ n516_get_rdy(par), HZ * 2) ? 0 : -EIO;
-+}
-+
-+static int n516_wait_event_intr(struct metronomefb_par *par)
-+{
-+ unsigned long timeout = jiffies + HZ/20;
-+
-+ dev_dbg(&n516_device->dev, "ENTER1 %s, RDY=%d\n",
-+ __func__, gpio_get_value(GPIO_DISPLAY_RDY));
-+ while (n516_get_rdy(par) && time_before(jiffies, timeout))
-+ schedule();
-+
-+ dev_dbg(&n516_device->dev, "ENTER2 %s, RDY=%d\n",
-+ __func__, gpio_get_value(GPIO_DISPLAY_RDY));
-+ return wait_event_interruptible_timeout(par->waitq,
-+ n516_get_rdy(par), HZ * 2) ? 0 : -EIO;
-+}
-+
-+static void n516_cleanup(struct metronomefb_par *par)
-+{
-+ int i;
-+
-+ free_irq(gpio_to_irq(GPIO_DISPLAY_RDY), par);
-+ for (i = 0; i < ARRAY_SIZE(metronome_gpios); ++i)
-+ gpio_free(metronome_gpios[i]);
-+}
-+
-+static struct metronome_board n516_board __initdata = {
-+ .owner = THIS_MODULE,
-+ .power_ctl = n516_power_ctl,
-+ .setup_irq = n516_setup_irq,
-+ .setup_io = n516_init_metronome_gpios,
-+ .setup_fb = n516_setup_fb,
-+ .set_rst = n516_set_rst,
-+ .get_err = n516_get_err,
-+ .get_rdy = n516_get_rdy,
-+ .set_stdby = n516_set_stdby,
-+ .met_wait_event = n516_wait_event,
-+ .met_wait_event_intr = n516_wait_event_intr,
-+ .get_panel_type = n516_get_panel_type,
-+ .cleanup = n516_cleanup,
-+};
-+
-+static int __init n516_init(void)
-+{
-+ int ret;
-+
-+ /* Keep the metronome off, until its driver is loaded */
-+ ret = gpio_request(GPIO_DISPLAY_OFF, "Display off");
-+ if (ret)
-+ return ret;
-+
-+ gpio_direction_output(GPIO_DISPLAY_OFF, 1);
-+
-+ /* before anything else, we request notification for any fb
-+ * creation events */
-+ fb_register_client(&n516_fb_notif);
-+
-+ n516_device = platform_device_alloc("metronomefb", -1);
-+ if (!n516_device)
-+ return -ENOMEM;
-+
-+ /* the n516_board that will be seen by metronomefb is a copy */
-+ platform_device_add_data(n516_device, &n516_board,
-+ sizeof(n516_board));
-+
-+ n516_presetup_fb();
-+
-+ return 0;
-+}
-+module_init(n516_init);
-+
-+MODULE_DESCRIPTION("board driver for n516 display");
-+MODULE_AUTHOR("Yauhen Kharuzhy");
-+MODULE_LICENSE("GPL");
-diff --git a/arch/mips/jz4740/board-n516.c b/arch/mips/jz4740/board-n516.c
-new file mode 100644
-index 0000000..efb8747
---- /dev/null
-+++ b/arch/mips/jz4740/board-n516.c
-@@ -0,0 +1,206 @@
-+/*
-+ * linux/arch/mips/jz4740/board-516.c
-+ *
-+ * JZ4740 n516 board setup routines.
-+ *
-+ * Copyright (c) 2009, Yauhen Kharuzhy <jekhor@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.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/ioport.h>
-+#include <linux/mm.h>
-+#include <linux/console.h>
-+#include <linux/delay.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <linux/mtd/mtd.h>
-+#include <linux/mmc/jz4740_mmc.h>
-+#include <linux/mtd/jz4740_nand.h>
-+#include <linux/leds.h>
-+
-+#include <linux/power_supply.h>
-+#include <linux/power/gpio-charger.h>
-+
-+#include <linux/i2c.h>
-+#include <linux/i2c-gpio.h>
-+
-+#include <asm/mach-jz4740/board-n516.h>
-+#include <asm/mach-jz4740/platform.h>
-+
-+#include "clock.h"
-+
-+static long n516_panic_blink(long time)
-+{
-+ gpio_set_value(GPIO_LED_ENABLE, 1);
-+ mdelay(200);
-+ gpio_set_value(GPIO_LED_ENABLE, 0);
-+ mdelay(200);
-+
-+ return 400;
-+}
-+
-+static void __init board_gpio_setup(void)
-+{
-+/* jz_gpio_enable_pullup(JZ_GPIO_PORTD(23));
-+ jz_gpio_enable_pullup(JZ_GPIO_PORTD(24));*/
-+}
-+
-+static struct i2c_gpio_platform_data n516_i2c_pdata = {
-+ .sda_pin = JZ_GPIO_PORTD(23),
-+ .scl_pin = JZ_GPIO_PORTD(24),
-+ .udelay = 2,
-+ .timeout = 3 * HZ,
-+};
-+
-+static struct platform_device n516_i2c_device = {
-+ .name = "i2c-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &n516_i2c_pdata,
-+ },
-+};
-+
-+static const struct i2c_board_info n516_i2c_board_info[] = {
-+ {
-+ .type = "LPC524",
-+ .addr = 0x54,
-+ },
-+ {
-+ .type = "lm75a",
-+ .addr = 0x48,
-+ }
-+};
-+
-+static struct jz4740_mmc_platform_data n516_mmc_pdata = {
-+ .gpio_card_detect = GPIO_SD_CD_N,
-+ .card_detect_active_low = 1,
-+ .gpio_read_only = -1,
-+ .gpio_power = GPIO_SD_VCC_EN_N,
-+ .power_active_low = 1,
-+};
-+
-+static struct gpio_led n516_leds[] = {
-+ {
-+ .name = "n516:blue:power",
-+ .gpio = GPIO_LED_ENABLE,
-+ .default_state = LEDS_GPIO_DEFSTATE_ON,
-+ .default_trigger = "nand-disk",
-+ }
-+};
-+
-+static struct gpio_led_platform_data n516_leds_pdata = {
-+ .leds = n516_leds,
-+ .num_leds = ARRAY_SIZE(n516_leds),
-+};
-+
-+static struct platform_device n516_leds_device = {
-+ .name = "leds-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &n516_leds_pdata,
-+ },
-+};
-+
-+static struct mtd_partition n516_partitions[] = {
-+ { .name = "NAND BOOT partition",
-+ .offset = 0 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ { .name = "NAND KERNEL partition",
-+ .offset = 4 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ { .name = "NAND ROOTFS partition",
-+ .offset = 8 * 0x100000,
-+ .size = 504 * 0x100000,
-+ },
-+};
-+
-+static struct nand_ecclayout n516_ecclayout = {
-+ .eccbytes = 36,
-+ .eccpos = {
-+ 6, 7, 8, 9, 10, 11, 12, 13, 14,
-+ 15, 16, 17, 18, 19, 20, 21, 22, 23,
-+ 24, 25, 26, 27, 28, 29, 30, 31, 32,
-+ 33, 34, 35, 36, 37, 38, 39, 40, 41,
-+ },
-+ .oobfree = {
-+ {
-+ .offset = 2,
-+ .length = 4
-+ },
-+ {
-+ .offset = 42,
-+ .length = 22,
-+ }
-+ }
-+};
-+
-+static struct jz_nand_platform_data n516_nand_pdata = {
-+ .ecc_layout = &n516_ecclayout,
-+ .partitions = n516_partitions,
-+ .num_partitions = ARRAY_SIZE(n516_partitions),
-+ .busy_gpio = 94,
-+};
-+
-+static char *n516_batteries[] = {
-+ "n516_battery",
-+};
-+
-+static struct gpio_charger_platform_data n516_charger_pdata = {
-+ .name = "usb",
-+ .type = POWER_SUPPLY_TYPE_USB,
-+ .gpio = GPIO_USB_DETECT,
-+ .gpio_active_low = 1,
-+ .batteries = n516_batteries,
-+ .num_batteries = ARRAY_SIZE(n516_batteries),
-+};
-+
-+static struct platform_device n516_charger_device = {
-+ .name = "gpio-charger",
-+ .dev = {
-+ .platform_data = &n516_charger_pdata,
-+ },
-+};
-+
-+static struct platform_device *n516_devices[] __initdata = {
-+ &jz4740_nand_device,
-+ &n516_leds_device,
-+ &jz4740_mmc_device,
-+ &jz4740_i2s_device,
-+ &jz4740_codec_device,
-+ &jz4740_rtc_device,
-+ &jz4740_usb_gdt_device,
-+ &n516_i2c_device,
-+ &n516_charger_device,
-+};
-+
-+struct jz4740_clock_board_data jz4740_clock_bdata = {
-+ .ext_rate = 12000000,
-+ .rtc_rate = 32768,
-+};
-+
-+extern int jz_gpiolib_init(void);
-+
-+static int n516_setup_platform(void)
-+{
-+ if (jz_gpiolib_init())
-+ panic("Failed to initalize jz gpio\n");
-+
-+ jz4740_clock_init();
-+ board_gpio_setup();
-+
-+ panic_blink = n516_panic_blink;
-+ i2c_register_board_info(0, n516_i2c_board_info, ARRAY_SIZE(n516_i2c_board_info));
-+ jz4740_mmc_device.dev.platform_data = &n516_mmc_pdata;
-+ jz4740_nand_device.dev.platform_data = &n516_nand_pdata;
-+
-+ return platform_add_devices(n516_devices, ARRAY_SIZE(n516_devices));
-+}
-+arch_initcall(n516_setup_platform);
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/007-add-n526-board-support.patch b/target/linux/xburst/patches-2.6.34/007-add-n526-board-support.patch
deleted file mode 100644
index c0348aca97..0000000000
--- a/target/linux/xburst/patches-2.6.34/007-add-n526-board-support.patch
+++ /dev/null
@@ -1,381 +0,0 @@
-From 3999cbda30a298ee3385a0748f670e40db0b094a Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 17:25:23 +0200
-Subject: [PATCH] Add n526 board support
-
----
- arch/mips/jz4740/Kconfig | 4 +
- arch/mips/jz4740/Makefile | 1 +
- arch/mips/jz4740/board-n526.c | 333 +++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 338 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/jz4740/board-n526.c
-
-diff --git a/arch/mips/jz4740/Kconfig b/arch/mips/jz4740/Kconfig
-index b987c27..e667913 100644
---- a/arch/mips/jz4740/Kconfig
-+++ b/arch/mips/jz4740/Kconfig
-@@ -11,6 +11,10 @@ config JZ4740_N516
- bool "Hanvon n516 eBook reader"
- select SOC_JZ4740
-
-+config JZ4740_N526
-+ bool "Hanvon n526 eBook reader"
-+ select SOC_JZ4740
-+
- endchoice
-
- config HAVE_PWM
-diff --git a/arch/mips/jz4740/Makefile b/arch/mips/jz4740/Makefile
-index 9ed5e5b..80ccf77 100644
---- a/arch/mips/jz4740/Makefile
-+++ b/arch/mips/jz4740/Makefile
-@@ -13,6 +13,7 @@ obj-$(CONFIG_DEBUG_FS) += clock-debugfs.o
-
- obj-$(CONFIG_JZ4740_QI_LB60) += board-qi_lb60.o
- obj-$(CONFIG_JZ4740_N516) += board-n516.o board-n516-display.o
-+obj-$(CONFIG_JZ4740_N526) += board-n526.o
-
- # PM support
-
-diff --git a/arch/mips/jz4740/board-n526.c b/arch/mips/jz4740/board-n526.c
-new file mode 100644
-index 0000000..e3e6710
---- /dev/null
-+++ b/arch/mips/jz4740/board-n526.c
-@@ -0,0 +1,333 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.de>
-+ * N526 eBook reader support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/gpio.h>
-+
-+#include <asm/mach-jz4740/platform.h>
-+
-+#include <linux/mtd/jz4740_nand.h>
-+#include <linux/jz4740_fb.h>
-+#include <linux/power_supply.h>
-+#include <linux/mmc/jz4740_mmc.h>
-+
-+#include <video/broadsheetfb.h>
-+#include <linux/delay.h>
-+#include <linux/interrupt.h>
-+
-+#include <linux/input.h>
-+#include <linux/gpio_keys.h>
-+
-+#include <linux/i2c.h>
-+#include <linux/i2c-gpio.h>
-+
-+#include "clock.h"
-+
-+/* NAND */
-+static struct nand_ecclayout n526_ecclayout = {
-+ .eccbytes = 36,
-+ .eccpos = {
-+ 6, 7, 8, 9, 10, 11, 12, 13,
-+ 14, 15, 16, 17, 18, 19, 20, 21,
-+ 22, 23, 24, 25, 26, 27, 28, 29,
-+ 30, 31, 32, 33, 34, 35, 36, 37,
-+ 38, 39, 40, 41},
-+ .oobfree = {
-+ {.offset = 2,
-+ .length = 4},
-+ {.offset = 42,
-+ .length = 22}}
-+};
-+
-+static struct mtd_partition n526_partitions[] = {
-+ { .name = "NAND BOOT partition",
-+ .offset = 0 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ { .name = "NAND KERNEL partition",
-+ .offset = 4 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ { .name = "NAND ROOTFS partition",
-+ .offset = 16 * 0x100000,
-+ .size = 498 * 0x100000,
-+ },
-+};
-+
-+static struct jz_nand_platform_data n526_nand_pdata = {
-+ .ecc_layout = &n526_ecclayout,
-+ .partitions = n526_partitions,
-+ .num_partitions = ARRAY_SIZE(n526_partitions),
-+ .busy_gpio = 94,
-+};
-+
-+static struct jz4740_mmc_platform_data n526_mmc_pdata = {
-+ .gpio_card_detect = JZ_GPIO_PORTD(7),
-+ .card_detect_active_low = 1,
-+ .gpio_read_only = -1,
-+ .gpio_power = JZ_GPIO_PORTD(17),
-+ .power_active_low = 1,
-+};
-+
-+static struct gpio_led n526_leds[] = {
-+ {
-+ .name = "n526:blue:power",
-+ .gpio = JZ_GPIO_PORTD(28),
-+ .default_state = LEDS_GPIO_DEFSTATE_ON,
-+ }
-+};
-+
-+static struct gpio_led_platform_data n526_leds_pdata = {
-+ .leds = n526_leds,
-+ .num_leds = ARRAY_SIZE(n526_leds),
-+};
-+
-+static struct platform_device n526_leds_device = {
-+ .name = "leds-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &n526_leds_pdata,
-+ },
-+};
-+
-+static void __init board_gpio_setup(void)
-+{
-+ /* We only need to enable/disable pullup here for pins used in generic
-+ * drivers. Everything else is done by the drivers themselfs. */
-+ jz_gpio_disable_pullup(JZ_GPIO_PORTD(17));
-+ jz_gpio_enable_pullup(JZ_GPIO_PORTD(7));
-+ jz_gpio_disable_pullup(JZ_GPIO_PORTC(19));
-+ jz_gpio_disable_pullup(JZ_GPIO_PORTC(20));
-+ jz_gpio_disable_pullup(JZ_GPIO_PORTC(21));
-+ jz_gpio_disable_pullup(JZ_GPIO_PORTC(23));
-+}
-+
-+
-+static const int n526_eink_ctrl_gpios[] = {
-+ 0,
-+ JZ_GPIO_PORTC(23),
-+ JZ_GPIO_PORTC(19),
-+ JZ_GPIO_PORTC(20),
-+};
-+
-+static void n526_eink_set_ctl(struct broadsheetfb_par * par, unsigned char ctrl, u8
-+value)
-+{
-+ gpio_set_value(n526_eink_ctrl_gpios[ctrl], value);
-+}
-+
-+
-+static int n526_eink_wait(struct broadsheetfb_par *par)
-+{
-+ wait_event(par->waitq, gpio_get_value(JZ_GPIO_PORTB(17)));
-+
-+ return 0;
-+}
-+
-+static u16 n526_eink_get_hdb(struct broadsheetfb_par *par)
-+{
-+ u16 value = 0;
-+ jz_gpio_port_direction_input(JZ_GPIO_PORTC(0), 0xffff);
-+ gpio_set_value(JZ_GPIO_PORTC(21), 0);
-+ mdelay(100);
-+
-+ value = jz_gpio_port_get_value(JZ_GPIO_PORTC(0), 0xffff);
-+
-+ gpio_set_value(JZ_GPIO_PORTC(21), 1);
-+ jz_gpio_port_direction_output(JZ_GPIO_PORTC(0), 0xffff);
-+ return value;
-+}
-+
-+static void n526_eink_set_hdb(struct broadsheetfb_par *par, u16 value)
-+{
-+ jz_gpio_port_set_value(JZ_GPIO_PORTC(0), value, 0xffff);
-+}
-+
-+static int n526_eink_init(struct broadsheetfb_par *par)
-+{
-+ int i;
-+
-+ gpio_request(JZ_GPIO_PORTD(1), "display reset");
-+ gpio_direction_output(JZ_GPIO_PORTD(1), 1);
-+ mdelay(10);
-+ gpio_set_value(JZ_GPIO_PORTD(1), 0);
-+
-+ gpio_request(JZ_GPIO_PORTB(18), "eink enable");
-+ gpio_direction_output(JZ_GPIO_PORTB(18), 0);
-+
-+ gpio_request(JZ_GPIO_PORTB(29), "foobar");
-+ gpio_direction_output(JZ_GPIO_PORTB(29), 1);
-+
-+ for(i = 1; i < ARRAY_SIZE(n526_eink_ctrl_gpios); ++i) {
-+ gpio_request(n526_eink_ctrl_gpios[i], "eink display ctrl");
-+ gpio_direction_output(n526_eink_ctrl_gpios[i], 0);
-+ }
-+
-+ gpio_request(JZ_GPIO_PORTC(22), "foobar");
-+ gpio_direction_input(JZ_GPIO_PORTC(22));
-+ gpio_request(JZ_GPIO_PORTC(21), "eink nRD");
-+ gpio_direction_output(JZ_GPIO_PORTC(21), 1);
-+
-+ for(i = 0; i < 16; ++i) {
-+ gpio_request(JZ_GPIO_PORTC(i), "eink display data");
-+ }
-+ jz_gpio_port_direction_output(JZ_GPIO_PORTC(0), 0xffff);
-+
-+ gpio_set_value(JZ_GPIO_PORTB(18), 1);
-+
-+ return 0;
-+}
-+
-+static irqreturn_t n526_eink_busy_irq(int irq, void *devid)
-+{
-+ struct broadsheetfb_par *par = devid;
-+ wake_up(&par->waitq);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int n526_eink_setup_irq(struct fb_info *info)
-+{
-+ int ret;
-+ struct broadsheetfb_par *par = info->par;
-+
-+ gpio_request(JZ_GPIO_PORTB(17), "eink busy");
-+ gpio_direction_input(JZ_GPIO_PORTB(17));
-+
-+ ret = request_irq(gpio_to_irq(JZ_GPIO_PORTB(17)), n526_eink_busy_irq,
-+ IRQF_DISABLED | IRQF_TRIGGER_RISING,
-+ "eink busyline", par);
-+ if (ret)
-+ printk("n526 display: Failed to request busyline irq: %d\n", ret);
-+ return 0;
-+}
-+
-+static void n526_eink_cleanup(struct broadsheetfb_par *par)
-+{
-+}
-+
-+static struct broadsheet_board broadsheet_pdata = {
-+ .owner = THIS_MODULE,
-+ .init = n526_eink_init,
-+ .wait_for_rdy = n526_eink_wait,
-+ .set_ctl = n526_eink_set_ctl,
-+ .set_hdb = n526_eink_set_hdb,
-+ .get_hdb = n526_eink_get_hdb,
-+ .cleanup = n526_eink_cleanup,
-+ .setup_irq = n526_eink_setup_irq,
-+};
-+
-+static struct platform_device n526_broadsheet_device = {
-+ .name = "broadsheetfb",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &broadsheet_pdata,
-+ },
-+};
-+
-+static struct gpio_keys_button qi_lb60_gpio_keys_buttons[] = {
-+ [0] = {
-+ .code = KEY_ENTER,
-+ .gpio = 0,
-+ .active_low = 1,
-+ .desc = "Power",
-+ },
-+};
-+
-+static struct gpio_keys_platform_data qi_lb60_gpio_keys_data = {
-+ .nbuttons = ARRAY_SIZE(qi_lb60_gpio_keys_buttons),
-+ .buttons = qi_lb60_gpio_keys_buttons,
-+};
-+
-+static struct platform_device qi_lb60_gpio_keys = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &qi_lb60_gpio_keys_data,
-+ }
-+};
-+
-+static struct i2c_gpio_platform_data n526_i2c_pdata = {
-+ .sda_pin = JZ_GPIO_PORTD(23),
-+ .scl_pin = JZ_GPIO_PORTD(24),
-+ .udelay = 2,
-+ .timeout = 3 * HZ,
-+};
-+
-+static struct platform_device n526_i2c_device = {
-+ .name = "i2c-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &n526_i2c_pdata,
-+ },
-+};
-+
-+static struct i2c_board_info n526_i2c_board_info = {
-+ .type = "n526-lpc",
-+ .addr = 0x54,
-+};
-+
-+static struct platform_device *jz_platform_devices[] __initdata = {
-+ &jz4740_usb_ohci_device,
-+ &jz4740_usb_gdt_device,
-+ &jz4740_mmc_device,
-+ &jz4740_nand_device,
-+ &jz4740_i2s_device,
-+ &jz4740_codec_device,
-+ &jz4740_rtc_device,
-+ &n526_leds_device,
-+ &n526_broadsheet_device,
-+ &qi_lb60_gpio_keys,
-+ &n526_i2c_device,
-+};
-+
-+
-+static int __init n526_init_platform_devices(void)
-+{
-+
-+ jz4740_nand_device.dev.platform_data = &n526_nand_pdata;
-+ jz4740_mmc_device.dev.platform_data = &n526_mmc_pdata;
-+
-+ n526_i2c_board_info.irq = gpio_to_irq(JZ_GPIO_PORTD(14)),
-+ i2c_register_board_info(0, &n526_i2c_board_info, 1);
-+
-+ return platform_add_devices(jz_platform_devices,
-+ ARRAY_SIZE(jz_platform_devices));
-+
-+}
-+
-+struct jz4740_clock_board_data jz4740_clock_bdata = {
-+ .ext_rate = 12000000,
-+ .rtc_rate = 32768,
-+};
-+
-+extern int jz_gpiolib_init(void);
-+
-+static int __init n526_board_setup(void)
-+{
-+ if (jz_gpiolib_init())
-+ panic("Failed to initalize jz gpio\n");
-+
-+ jz4740_clock_init();
-+ board_gpio_setup();
-+
-+ if (n526_init_platform_devices())
-+ panic("Failed to initalize platform devices\n");
-+
-+ return 0;
-+}
-+
-+arch_initcall(n526_board_setup);
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/050-nand.patch b/target/linux/xburst/patches-2.6.34/050-nand.patch
deleted file mode 100644
index 97d970086e..0000000000
--- a/target/linux/xburst/patches-2.6.34/050-nand.patch
+++ /dev/null
@@ -1,547 +0,0 @@
-From 88aacb09dfdf4d85c507757524166433204260e8 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:14:46 +0200
-Subject: [PATCH] Add jz4740 nand driver
-
----
- drivers/mtd/nand/Kconfig | 6 +
- drivers/mtd/nand/Makefile | 1 +
- drivers/mtd/nand/jz4740_nand.c | 444 +++++++++++++++++++++++++++++++++++++++
- include/linux/mtd/jz4740_nand.h | 34 +++
- include/mtd/mtd-abi.h | 2 +-
- 5 files changed, 486 insertions(+), 1 deletions(-)
- create mode 100644 drivers/mtd/nand/jz4740_nand.c
- create mode 100644 include/linux/mtd/jz4740_nand.h
-
-diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
-index 42e5ea4..6f587b8 100644
---- a/drivers/mtd/nand/Kconfig
-+++ b/drivers/mtd/nand/Kconfig
-@@ -488,4 +488,10 @@ config MTD_NAND_W90P910
- This enables the driver for the NAND Flash on evaluation board based
- on w90p910.
-
-+config MTD_NAND_JZ4740
-+ tristate "Support NAND Flash device on Jz4740 board"
-+ depends on SOC_JZ4740
-+ help
-+ Support NAND Flash device on Jz4740 board
-+
- endif # MTD_NAND
-diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
-index 1407bd1..e56bd52 100644
---- a/drivers/mtd/nand/Makefile
-+++ b/drivers/mtd/nand/Makefile
-@@ -42,5 +42,6 @@ obj-$(CONFIG_MTD_NAND_TXX9NDFMC) += txx9ndfmc.o
- obj-$(CONFIG_MTD_NAND_W90P910) += w90p910_nand.o
- obj-$(CONFIG_MTD_NAND_NOMADIK) += nomadik_nand.o
- obj-$(CONFIG_MTD_NAND_BCM_UMI) += bcm_umi_nand.o nand_bcm_umi.o
-+obj-$(CONFIG_MTD_NAND_JZ4740) += jz4740_nand.o
-
- nand-objs := nand_base.o nand_bbt.o
-diff --git a/drivers/mtd/nand/jz4740_nand.c b/drivers/mtd/nand/jz4740_nand.c
-new file mode 100644
-index 0000000..7b3477d
---- /dev/null
-+++ b/drivers/mtd/nand/jz4740_nand.c
-@@ -0,0 +1,444 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4720/JZ4740 SoC NAND controller driver
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/ioport.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/nand.h>
-+#include <linux/mtd/partitions.h>
-+
-+#include <linux/mtd/jz4740_nand.h>
-+#include <linux/gpio.h>
-+
-+#define JZ_REG_NAND_CTRL 0x50
-+#define JZ_REG_NAND_ECC_CTRL 0x100
-+#define JZ_REG_NAND_DATA 0x104
-+#define JZ_REG_NAND_PAR0 0x108
-+#define JZ_REG_NAND_PAR1 0x10C
-+#define JZ_REG_NAND_PAR2 0x110
-+#define JZ_REG_NAND_IRQ_STAT 0x114
-+#define JZ_REG_NAND_IRQ_CTRL 0x118
-+#define JZ_REG_NAND_ERR(x) (0x11C + (x << 2))
-+
-+#define JZ_NAND_ECC_CTRL_PAR_READY BIT(4)
-+#define JZ_NAND_ECC_CTRL_ENCODING BIT(3)
-+#define JZ_NAND_ECC_CTRL_RS BIT(2)
-+#define JZ_NAND_ECC_CTRL_RESET BIT(1)
-+#define JZ_NAND_ECC_CTRL_ENABLE BIT(0)
-+
-+#define JZ_NAND_STATUS_ERR_COUNT (BIT(31) | BIT(30) | BIT(29))
-+#define JZ_NAND_STATUS_PAD_FINISH BIT(4)
-+#define JZ_NAND_STATUS_DEC_FINISH BIT(3)
-+#define JZ_NAND_STATUS_ENC_FINISH BIT(2)
-+#define JZ_NAND_STATUS_UNCOR_ERROR BIT(1)
-+#define JZ_NAND_STATUS_ERROR BIT(0)
-+
-+#define JZ_NAND_CTRL_ENABLE_CHIP(x) BIT(x << 1)
-+#define JZ_NAND_CTRL_ASSERT_CHIP(x) BIT((x << 1) + 1)
-+
-+#define JZ_NAND_DATA_ADDR ((void __iomem *)0xB8000000)
-+#define JZ_NAND_CMD_ADDR (JZ_NAND_DATA_ADDR + 0x8000)
-+#define JZ_NAND_ADDR_ADDR (JZ_NAND_DATA_ADDR + 0x10000)
-+
-+struct jz_nand {
-+ struct mtd_info mtd;
-+ struct nand_chip chip;
-+ void __iomem *base;
-+ struct resource *mem;
-+
-+ struct jz_nand_platform_data *pdata;
-+ bool is_reading;
-+};
-+
-+static inline struct jz_nand *mtd_to_jz_nand(struct mtd_info *mtd)
-+{
-+ return container_of(mtd, struct jz_nand, mtd);
-+}
-+
-+static void jz_nand_cmd_ctrl(struct mtd_info *mtd, int dat, unsigned int ctrl)
-+{
-+ struct jz_nand *nand = mtd_to_jz_nand(mtd);
-+ struct nand_chip *chip = mtd->priv;
-+ uint32_t reg;
-+
-+ if (ctrl & NAND_CTRL_CHANGE) {
-+ BUG_ON((ctrl & NAND_ALE) && (ctrl & NAND_CLE));
-+ if (ctrl & NAND_ALE)
-+ chip->IO_ADDR_W = JZ_NAND_ADDR_ADDR;
-+ else if (ctrl & NAND_CLE)
-+ chip->IO_ADDR_W = JZ_NAND_CMD_ADDR;
-+ else
-+ chip->IO_ADDR_W = JZ_NAND_DATA_ADDR;
-+
-+ reg = readl(nand->base + JZ_REG_NAND_CTRL);
-+ if (ctrl & NAND_NCE)
-+ reg |= JZ_NAND_CTRL_ASSERT_CHIP(0);
-+ else
-+ reg &= ~JZ_NAND_CTRL_ASSERT_CHIP(0);
-+ writel(reg, nand->base + JZ_REG_NAND_CTRL);
-+ }
-+ if (dat != NAND_CMD_NONE)
-+ writeb(dat, chip->IO_ADDR_W);
-+}
-+
-+static int jz_nand_dev_ready(struct mtd_info *mtd)
-+{
-+ struct jz_nand *nand = mtd_to_jz_nand(mtd);
-+ return gpio_get_value_cansleep(nand->pdata->busy_gpio);
-+}
-+
-+static void jz_nand_hwctl(struct mtd_info *mtd, int mode)
-+{
-+ struct jz_nand *nand = mtd_to_jz_nand(mtd);
-+ uint32_t reg;
-+
-+
-+ writel(0, nand->base + JZ_REG_NAND_IRQ_STAT);
-+ reg = readl(nand->base + JZ_REG_NAND_ECC_CTRL);
-+
-+ reg |= JZ_NAND_ECC_CTRL_RESET;
-+ reg |= JZ_NAND_ECC_CTRL_ENABLE;
-+ reg |= JZ_NAND_ECC_CTRL_RS;
-+
-+ switch (mode) {
-+ case NAND_ECC_READ:
-+ reg &= ~JZ_NAND_ECC_CTRL_ENCODING;
-+ nand->is_reading = true;
-+ break;
-+ case NAND_ECC_WRITE:
-+ reg |= JZ_NAND_ECC_CTRL_ENCODING;
-+ nand->is_reading = false;
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ writel(reg, nand->base + JZ_REG_NAND_ECC_CTRL);
-+}
-+
-+
-+static int jz_nand_calculate_ecc_rs(struct mtd_info* mtd, const uint8_t *dat,
-+ uint8_t *ecc_code)
-+{
-+ struct jz_nand *nand = mtd_to_jz_nand(mtd);
-+ uint32_t reg, status;
-+ int i;
-+ static uint8_t empty_block_ecc[] = {0xcd, 0x9d, 0x90, 0x58, 0xf4,
-+ 0x8b, 0xff, 0xb7, 0x6f};
-+
-+ if (nand->is_reading)
-+ return 0;
-+
-+ do {
-+ status = readl(nand->base + JZ_REG_NAND_IRQ_STAT);
-+ } while (!(status & JZ_NAND_STATUS_ENC_FINISH));
-+
-+ reg = readl(nand->base + JZ_REG_NAND_ECC_CTRL);
-+ reg &= ~JZ_NAND_ECC_CTRL_ENABLE;
-+ writel(reg, nand->base + JZ_REG_NAND_ECC_CTRL);
-+
-+ for (i = 0; i < 9; ++i)
-+ ecc_code[i] = readb(nand->base + JZ_REG_NAND_PAR0 + i);
-+
-+ /* If the written data is completly 0xff, we also want to write 0xff as
-+ * ecc, otherwise we will get in trouble when doing subpage writes. */
-+ if (memcmp(ecc_code, empty_block_ecc, 9) == 0)
-+ memset(ecc_code, 0xff, 9);
-+
-+ return 0;
-+}
-+
-+/*#define printkd printk*/
-+#define printkd(...)
-+
-+static void correct_data(uint8_t *dat, int index, int mask)
-+{
-+ int offset = index & 0x7;
-+ uint16_t data;
-+ printkd("correct: ");
-+
-+ index += (index >> 3);
-+
-+ data = dat[index];
-+ data |= dat[index+1] << 8;
-+
-+ printkd("0x%x -> ", data);
-+
-+ mask ^= (data >> offset) & 0x1ff;
-+ data &= ~(0x1ff << offset);
-+ data |= (mask << offset);
-+
-+ printkd("0x%x\n", data);
-+
-+ dat[index] = data & 0xff;
-+ dat[index+1] = (data >> 8) & 0xff;
-+}
-+
-+static int jz_nand_correct_ecc_rs(struct mtd_info *mtd, uint8_t *dat,
-+ uint8_t *read_ecc, uint8_t *calc_ecc)
-+{
-+ struct jz_nand *nand = mtd_to_jz_nand(mtd);
-+ int i, error_count, index;
-+ uint32_t reg, status, error;
-+ uint32_t t;
-+
-+ t = read_ecc[0];
-+
-+ if (t == 0xff) {
-+ for (i = 1; i < 9; ++i)
-+ t &= read_ecc[i];
-+
-+ t &= dat[0];
-+ t &= dat[nand->chip.ecc.size / 2];
-+ t &= dat[nand->chip.ecc.size - 1];
-+
-+ if (t == 0xff) {
-+ for (i = 1; i < nand->chip.ecc.size - 1; ++i)
-+ t &= dat[i];
-+ if (t == 0xff)
-+ return 0;
-+ }
-+ }
-+
-+ for (i = 0; i < 9; ++i)
-+ writeb(read_ecc[i], nand->base + JZ_REG_NAND_PAR0 + i);
-+
-+ reg = readl(nand->base + JZ_REG_NAND_ECC_CTRL);
-+ reg |= JZ_NAND_ECC_CTRL_PAR_READY;
-+ writel(reg, nand->base + JZ_REG_NAND_ECC_CTRL);
-+
-+ do {
-+ status = readl(nand->base + JZ_REG_NAND_IRQ_STAT);
-+ } while (!(status & JZ_NAND_STATUS_DEC_FINISH));
-+
-+ reg = readl(nand->base + JZ_REG_NAND_ECC_CTRL);
-+ reg &= ~JZ_NAND_ECC_CTRL_ENABLE;
-+ writel(reg, nand->base + JZ_REG_NAND_ECC_CTRL);
-+
-+ if (status & JZ_NAND_STATUS_ERROR) {
-+ if (status & JZ_NAND_STATUS_UNCOR_ERROR) {
-+ printkd("uncorrectable ecc:");
-+ for (i = 0; i < 9; ++i)
-+ printkd(" 0x%x", read_ecc[i]);
-+ printkd("\n");
-+ printkd("uncorrectable data:");
-+ for (i = 0; i < 32; ++i)
-+ printkd(" 0x%x", dat[i]);
-+ printkd("\n");
-+ return -1;
-+ }
-+
-+ error_count = (status & JZ_NAND_STATUS_ERR_COUNT) >> 29;
-+
-+ printkd("error_count: %d %x\n", error_count, status);
-+
-+ for (i = 0; i < error_count; ++i) {
-+ error = readl(nand->base + JZ_REG_NAND_ERR(i));
-+ index = ((error >> 16) & 0x1ff) - 1;
-+ if (index >= 0 && index < 512)
-+ correct_data(dat, index, error & 0x1ff);
-+ }
-+
-+ return error_count;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+#ifdef CONFIG_MTD_CMDLINE_PARTS
-+static const char *part_probes[] = {"cmdline", NULL};
-+#endif
-+
-+static int __devinit jz_nand_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jz_nand *nand;
-+ struct nand_chip *chip;
-+ struct mtd_info *mtd;
-+ struct jz_nand_platform_data *pdata = pdev->dev.platform_data;
-+#ifdef CONFIG_MTD_PARTITIONS
-+ struct mtd_partition *partition_info;
-+ int num_partitions = 0;
-+#endif
-+
-+ nand = kzalloc(sizeof(*nand), GFP_KERNEL);
-+ if (!nand) {
-+ dev_err(&pdev->dev, "Failed to allocate device structure.\n");
-+ return -ENOMEM;
-+ }
-+
-+ nand->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!nand->mem) {
-+ dev_err(&pdev->dev, "Failed to get platform mmio memory\n");
-+ ret = -ENOENT;
-+ goto err_free;
-+ }
-+
-+ nand->mem = request_mem_region(nand->mem->start,
-+ resource_size(nand->mem), pdev->name);
-+
-+ if (!nand->mem) {
-+ dev_err(&pdev->dev, "Failed to request mmio memory region\n");
-+ ret = -EBUSY;
-+ goto err_free;
-+ }
-+
-+ nand->base = ioremap(nand->mem->start, resource_size(nand->mem));
-+
-+ if (!nand->base) {
-+ dev_err(&pdev->dev, "Failed to ioremap mmio memory region\n");
-+ ret = -EBUSY;
-+ goto err_release_mem;
-+ }
-+
-+ if (pdata && gpio_is_valid(pdata->busy_gpio)) {
-+ ret = gpio_request(pdata->busy_gpio, "NAND busy pin");
-+ if (ret) {
-+ dev_err(&pdev->dev,
-+ "Failed to request busy gpio %d: %d\n",
-+ pdata->busy_gpio, ret);
-+ goto err_iounmap;
-+ }
-+ }
-+
-+ mtd = &nand->mtd;
-+ chip = &nand->chip;
-+ mtd->priv = chip;
-+ mtd->owner = THIS_MODULE;
-+ mtd->name = "jz4740-nand";
-+
-+ chip->ecc.hwctl = jz_nand_hwctl;
-+
-+ chip->ecc.calculate = jz_nand_calculate_ecc_rs;
-+ chip->ecc.correct = jz_nand_correct_ecc_rs;
-+ chip->ecc.mode = NAND_ECC_HW_OOB_FIRST;
-+ chip->ecc.size = 512;
-+ chip->ecc.bytes = 9;
-+ if (pdata)
-+ chip->ecc.layout = pdata->ecc_layout;
-+
-+ chip->chip_delay = 50;
-+ chip->cmd_ctrl = jz_nand_cmd_ctrl;
-+
-+ if (pdata && gpio_is_valid(pdata->busy_gpio))
-+ chip->dev_ready = jz_nand_dev_ready;
-+
-+ chip->IO_ADDR_R = JZ_NAND_DATA_ADDR;
-+ chip->IO_ADDR_W = JZ_NAND_DATA_ADDR;
-+
-+ nand->pdata = pdata;
-+ platform_set_drvdata(pdev, nand);
-+
-+ ret = nand_scan_ident(mtd, 1);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to scan nand\n");
-+ goto err_gpio_free;
-+ }
-+
-+ if (pdata && pdata->ident_callback) {
-+ pdata->ident_callback(pdev, chip, &pdata->partitions,
-+ &pdata->num_partitions);
-+ }
-+
-+ ret = nand_scan_tail(mtd);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to scan nand\n");
-+ goto err_gpio_free;
-+ }
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+#ifdef CONFIG_MTD_CMDLINE_PARTS
-+ num_partitions = parse_mtd_partitions(mtd, part_probes,
-+ &partition_info, 0);
-+#endif
-+ if (num_partitions <= 0 && pdata) {
-+ num_partitions = pdata->num_partitions;
-+ partition_info = pdata->partitions;
-+ }
-+
-+ if (num_partitions > 0)
-+ ret = add_mtd_partitions(mtd, partition_info, num_partitions);
-+ else
-+#endif
-+ ret = add_mtd_device(mtd);
-+
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to add mtd device\n");
-+ goto err_nand_release;
-+ }
-+
-+ dev_info(&pdev->dev, "Successfully registered JZ4740 NAND driver\n");
-+
-+ return 0;
-+err_nand_release:
-+ nand_release(&nand->mtd);
-+err_gpio_free:
-+ platform_set_drvdata(pdev, NULL);
-+ gpio_free(pdata->busy_gpio);
-+err_iounmap:
-+ iounmap(nand->base);
-+err_release_mem:
-+ release_mem_region(nand->mem->start, resource_size(nand->mem));
-+err_free:
-+ kfree(nand);
-+ return ret;
-+}
-+
-+static void __devexit jz_nand_remove(struct platform_device *pdev)
-+{
-+ struct jz_nand *nand = platform_get_drvdata(pdev);
-+
-+ nand_release(&nand->mtd);
-+
-+ iounmap(nand->base);
-+
-+ release_mem_region(nand->mem->start, resource_size(nand->mem));
-+
-+ platform_set_drvdata(pdev, NULL);
-+ kfree(nand);
-+}
-+
-+struct platform_driver jz_nand_driver = {
-+ .probe = jz_nand_probe,
-+ .remove = __devexit_p(jz_nand_probe),
-+ .driver = {
-+ .name = "jz4740-nand",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init jz_nand_init(void)
-+{
-+ return platform_driver_register(&jz_nand_driver);
-+}
-+module_init(jz_nand_init);
-+
-+static void __exit jz_nand_exit(void)
-+{
-+ platform_driver_unregister(&jz_nand_driver);
-+}
-+module_exit(jz_nand_exit);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("NAND controller driver for JZ4720/JZ4740 SoC");
-+MODULE_ALIAS("platform:jz4740-nand");
-+MODULE_ALIAS("platform:jz4720-nand");
-diff --git a/include/linux/mtd/jz4740_nand.h b/include/linux/mtd/jz4740_nand.h
-new file mode 100644
-index 0000000..8254e4c
---- /dev/null
-+++ b/include/linux/mtd/jz4740_nand.h
-@@ -0,0 +1,34 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4720/JZ4740 SoC NAND controller driver
-+ *
-+ * 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.
-+ *
-+ * 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 __JZ_NAND_H__
-+#define __JZ_NAND_H__
-+
-+#include <linux/mtd/nand.h>
-+#include <linux/mtd/partitions.h>
-+
-+struct jz_nand_platform_data {
-+ int num_partitions;
-+ struct mtd_partition *partitions;
-+
-+ struct nand_ecclayout *ecc_layout;
-+
-+ unsigned int busy_gpio;
-+
-+ void (*ident_callback)(struct platform_device *, struct nand_chip *,
-+ struct mtd_partition **, int *num_partitions);
-+};
-+
-+#endif
-diff --git a/include/mtd/mtd-abi.h b/include/mtd/mtd-abi.h
-index be51ae2..cf90168 100644
---- a/include/mtd/mtd-abi.h
-+++ b/include/mtd/mtd-abi.h
-@@ -134,7 +134,7 @@ struct nand_oobfree {
- */
- struct nand_ecclayout {
- __u32 eccbytes;
-- __u32 eccpos[64];
-+ __u32 eccpos[72];
- __u32 oobavail;
- struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
- };
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/051-fb.patch b/target/linux/xburst/patches-2.6.34/051-fb.patch
deleted file mode 100644
index 9464562f3c..0000000000
--- a/target/linux/xburst/patches-2.6.34/051-fb.patch
+++ /dev/null
@@ -1,941 +0,0 @@
-From bde0c6e017734b3164f5e3517d8e9373433b0cee Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:13:58 +0200
-Subject: [PATCH] Add jz4740 framebuffer driver
-
----
- drivers/video/Kconfig | 9 +
- drivers/video/Makefile | 1 +
- drivers/video/jz4740_fb.c | 822 +++++++++++++++++++++++++++++++++++++++++++++
- include/linux/jz4740_fb.h | 58 ++++
- 4 files changed, 890 insertions(+), 0 deletions(-)
- create mode 100644 drivers/video/jz4740_fb.c
- create mode 100644 include/linux/jz4740_fb.h
-
-diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
-index 6e16244..14647f0 100644
---- a/drivers/video/Kconfig
-+++ b/drivers/video/Kconfig
-@@ -2214,6 +2214,15 @@ config FB_BROADSHEET
- and could also have been called by other names when coupled with
- a bridge adapter.
-
-+config FB_JZ4740
-+ tristate "JZ47420/JZ4740 LCD framebuffer support"
-+ depends on FB
-+ select FB_SYS_FILLRECT
-+ select FB_SYS_COPYAREA
-+ select FB_SYS_IMAGEBLIT
-+ help
-+ Framebuffer support for the JZ4720 and JZ4740 SoC.
-+
- source "drivers/video/omap/Kconfig"
- source "drivers/video/omap2/Kconfig"
-
-diff --git a/drivers/video/Makefile b/drivers/video/Makefile
-index ddc2af2..f56a9ca 100644
---- a/drivers/video/Makefile
-+++ b/drivers/video/Makefile
-@@ -131,6 +131,7 @@ obj-$(CONFIG_FB_CARMINE) += carminefb.o
- obj-$(CONFIG_FB_MB862XX) += mb862xx/
- obj-$(CONFIG_FB_MSM) += msm/
- obj-$(CONFIG_FB_NUC900) += nuc900fb.o
-+obj-$(CONFIG_FB_JZ4740) += jz4740_fb.o
-
- # Platform or fallback drivers go here
- obj-$(CONFIG_FB_UVESA) += uvesafb.o
-diff --git a/drivers/video/jz4740_fb.c b/drivers/video/jz4740_fb.c
-new file mode 100644
-index 0000000..8bb0cb4
---- /dev/null
-+++ b/drivers/video/jz4740_fb.c
-@@ -0,0 +1,822 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC LCD framebuffer driver
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/mutex.h>
-+#include <linux/platform_device.h>
-+
-+#include <linux/clk.h>
-+#include <linux/delay.h>
-+
-+#include <linux/console.h>
-+#include <linux/fb.h>
-+
-+#include <linux/dma-mapping.h>
-+
-+#include <linux/jz4740_fb.h>
-+#include <asm/mach-jz4740/gpio.h>
-+
-+#define JZ_REG_LCD_CFG 0x00
-+#define JZ_REG_LCD_VSYNC 0x04
-+#define JZ_REG_LCD_HSYNC 0x08
-+#define JZ_REG_LCD_VAT 0x0C
-+#define JZ_REG_LCD_DAH 0x10
-+#define JZ_REG_LCD_DAV 0x14
-+#define JZ_REG_LCD_PS 0x18
-+#define JZ_REG_LCD_CLS 0x1C
-+#define JZ_REG_LCD_SPL 0x20
-+#define JZ_REG_LCD_REV 0x24
-+#define JZ_REG_LCD_CTRL 0x30
-+#define JZ_REG_LCD_STATE 0x34
-+#define JZ_REG_LCD_IID 0x38
-+#define JZ_REG_LCD_DA0 0x40
-+#define JZ_REG_LCD_SA0 0x44
-+#define JZ_REG_LCD_FID0 0x48
-+#define JZ_REG_LCD_CMD0 0x4C
-+#define JZ_REG_LCD_DA1 0x50
-+#define JZ_REG_LCD_SA1 0x54
-+#define JZ_REG_LCD_FID1 0x58
-+#define JZ_REG_LCD_CMD1 0x5C
-+
-+#define JZ_LCD_CFG_SLCD BIT(31)
-+#define JZ_LCD_CFG_PS_DISABLE BIT(23)
-+#define JZ_LCD_CFG_CLS_DISABLE BIT(22)
-+#define JZ_LCD_CFG_SPL_DISABLE BIT(21)
-+#define JZ_LCD_CFG_REV_DISABLE BIT(20)
-+#define JZ_LCD_CFG_HSYNCM BIT(19)
-+#define JZ_LCD_CFG_PCLKM BIT(18)
-+#define JZ_LCD_CFG_INV BIT(17)
-+#define JZ_LCD_CFG_SYNC_DIR BIT(16)
-+#define JZ_LCD_CFG_PS_POLARITY BIT(15)
-+#define JZ_LCD_CFG_CLS_POLARITY BIT(14)
-+#define JZ_LCD_CFG_SPL_POLARITY BIT(13)
-+#define JZ_LCD_CFG_REV_POLARITY BIT(12)
-+#define JZ_LCD_CFG_HSYNC_ACTIVE_LOW BIT(11)
-+#define JZ_LCD_CFG_PCLK_FALLING_EDGE BIT(10)
-+#define JZ_LCD_CFG_DE_ACTIVE_LOW BIT(9)
-+#define JZ_LCD_CFG_VSYNC_ACTIVE_LOW BIT(8)
-+#define JZ_LCD_CFG_18_BIT BIT(7)
-+#define JZ_LCD_CFG_PDW (BIT(5) | BIT(4))
-+#define JZ_LCD_CFG_MODE_MASK 0xf
-+
-+#define JZ_LCD_CTRL_BURST_4 (0x0 << 28)
-+#define JZ_LCD_CTRL_BURST_8 (0x1 << 28)
-+#define JZ_LCD_CTRL_BURST_16 (0x2 << 28)
-+#define JZ_LCD_CTRL_RGB555 BIT(27)
-+#define JZ_LCD_CTRL_OFUP BIT(26)
-+#define JZ_LCD_CTRL_FRC_GRAYSCALE_16 (0x0 << 24)
-+#define JZ_LCD_CTRL_FRC_GRAYSCALE_4 (0x1 << 24)
-+#define JZ_LCD_CTRL_FRC_GRAYSCALE_2 (0x2 << 24)
-+#define JZ_LCD_CTRL_PDD_MASK (0xff << 16)
-+#define JZ_LCD_CTRL_EOF_IRQ BIT(13)
-+#define JZ_LCD_CTRL_SOF_IRQ BIT(12)
-+#define JZ_LCD_CTRL_OFU_IRQ BIT(11)
-+#define JZ_LCD_CTRL_IFU0_IRQ BIT(10)
-+#define JZ_LCD_CTRL_IFU1_IRQ BIT(9)
-+#define JZ_LCD_CTRL_DD_IRQ BIT(8)
-+#define JZ_LCD_CTRL_QDD_IRQ BIT(7)
-+#define JZ_LCD_CTRL_REVERSE_ENDIAN BIT(6)
-+#define JZ_LCD_CTRL_LSB_FISRT BIT(5)
-+#define JZ_LCD_CTRL_DISABLE BIT(4)
-+#define JZ_LCD_CTRL_ENABLE BIT(3)
-+#define JZ_LCD_CTRL_BPP_1 0x0
-+#define JZ_LCD_CTRL_BPP_2 0x1
-+#define JZ_LCD_CTRL_BPP_4 0x2
-+#define JZ_LCD_CTRL_BPP_8 0x3
-+#define JZ_LCD_CTRL_BPP_15_16 0x4
-+#define JZ_LCD_CTRL_BPP_18_24 0x5
-+
-+#define JZ_LCD_CMD_SOF_IRQ BIT(15)
-+#define JZ_LCD_CMD_EOF_IRQ BIT(16)
-+#define JZ_LCD_CMD_ENABLE_PAL BIT(12)
-+
-+#define JZ_LCD_SYNC_MASK 0x3ff
-+
-+#define JZ_LCD_STATE_DISABLED BIT(0)
-+
-+struct jzfb_framedesc {
-+ uint32_t next;
-+ uint32_t addr;
-+ uint32_t id;
-+ uint32_t cmd;
-+} __attribute__((packed));
-+
-+struct jzfb {
-+ struct fb_info *fb;
-+ struct platform_device *pdev;
-+ void __iomem *base;
-+ struct resource *mem;
-+ struct jz4740_fb_platform_data *pdata;
-+
-+ size_t vidmem_size;
-+ void *vidmem;
-+ dma_addr_t vidmem_phys;
-+ struct jzfb_framedesc *framedesc;
-+ dma_addr_t framedesc_phys;
-+
-+ struct clk *ldclk;
-+ struct clk *lpclk;
-+
-+ unsigned is_enabled:1;
-+ struct mutex lock;
-+
-+ uint32_t pseudo_palette[16];
-+};
-+
-+static struct fb_fix_screeninfo jzfb_fix __devinitdata = {
-+ .id = "JZ4740 FB",
-+ .type = FB_TYPE_PACKED_PIXELS,
-+ .visual = FB_VISUAL_TRUECOLOR,
-+ .xpanstep = 0,
-+ .ypanstep = 0,
-+ .ywrapstep = 0,
-+ .accel = FB_ACCEL_NONE,
-+};
-+
-+const static struct jz_gpio_bulk_request jz_lcd_ctrl_pins[] = {
-+ JZ_GPIO_BULK_PIN(LCD_PCLK),
-+ JZ_GPIO_BULK_PIN(LCD_HSYNC),
-+ JZ_GPIO_BULK_PIN(LCD_VSYNC),
-+ JZ_GPIO_BULK_PIN(LCD_DE),
-+ JZ_GPIO_BULK_PIN(LCD_PS),
-+ JZ_GPIO_BULK_PIN(LCD_REV),
-+};
-+
-+const static struct jz_gpio_bulk_request jz_lcd_data_pins[] = {
-+ JZ_GPIO_BULK_PIN(LCD_DATA0),
-+ JZ_GPIO_BULK_PIN(LCD_DATA1),
-+ JZ_GPIO_BULK_PIN(LCD_DATA2),
-+ JZ_GPIO_BULK_PIN(LCD_DATA3),
-+ JZ_GPIO_BULK_PIN(LCD_DATA4),
-+ JZ_GPIO_BULK_PIN(LCD_DATA5),
-+ JZ_GPIO_BULK_PIN(LCD_DATA6),
-+ JZ_GPIO_BULK_PIN(LCD_DATA7),
-+ JZ_GPIO_BULK_PIN(LCD_DATA8),
-+ JZ_GPIO_BULK_PIN(LCD_DATA9),
-+ JZ_GPIO_BULK_PIN(LCD_DATA10),
-+ JZ_GPIO_BULK_PIN(LCD_DATA11),
-+ JZ_GPIO_BULK_PIN(LCD_DATA12),
-+ JZ_GPIO_BULK_PIN(LCD_DATA13),
-+ JZ_GPIO_BULK_PIN(LCD_DATA14),
-+ JZ_GPIO_BULK_PIN(LCD_DATA15),
-+ JZ_GPIO_BULK_PIN(LCD_DATA16),
-+ JZ_GPIO_BULK_PIN(LCD_DATA17),
-+};
-+
-+static unsigned int jzfb_num_ctrl_pins(struct jzfb *jzfb)
-+{
-+ unsigned int num;
-+
-+ switch (jzfb->pdata->lcd_type) {
-+ case JZ_LCD_TYPE_GENERIC_16_BIT:
-+ num = 4;
-+ break;
-+ case JZ_LCD_TYPE_GENERIC_18_BIT:
-+ num = 4;
-+ break;
-+ case JZ_LCD_TYPE_8BIT_SERIAL:
-+ num = 3;
-+ break;
-+ default:
-+ num = 0;
-+ break;
-+ }
-+ return num;
-+}
-+
-+static unsigned int jzfb_num_data_pins(struct jzfb *jzfb)
-+{
-+ unsigned int num;
-+
-+ switch (jzfb->pdata->lcd_type) {
-+ case JZ_LCD_TYPE_GENERIC_16_BIT:
-+ num = 16;
-+ break;
-+ case JZ_LCD_TYPE_GENERIC_18_BIT:
-+ num = 18;
-+ break;
-+ case JZ_LCD_TYPE_8BIT_SERIAL:
-+ num = 8;
-+ break;
-+ default:
-+ num = 0;
-+ break;
-+ }
-+ return num;
-+}
-+
-+static int jzfb_setcolreg(unsigned regno, unsigned red, unsigned green,
-+ unsigned blue, unsigned transp, struct fb_info *fb)
-+{
-+ uint32_t color;
-+
-+ if (regno >= 16)
-+ return -EINVAL;
-+
-+#define CNVT_TOHW(val,width) ((((val)<<(width))+0x7FFF-(val))>>16)
-+ red = CNVT_TOHW(red, fb->var.red.length);
-+ green = CNVT_TOHW(green, fb->var.green.length);
-+ blue = CNVT_TOHW(blue, fb->var.blue.length);
-+ transp = CNVT_TOHW(transp, fb->var.transp.length);
-+#undef CNVT_TOHW
-+
-+ color = (red << fb->var.red.offset) |
-+ (green << fb->var.green.offset) |
-+ (blue << fb->var.blue.offset) |
-+ (transp << fb->var.transp.offset);
-+
-+ ((uint32_t*)(fb->pseudo_palette))[regno] = color;
-+
-+ return 0;
-+}
-+
-+static int jzfb_get_controller_bpp(struct jzfb *jzfb)
-+{
-+ switch (jzfb->pdata->bpp) {
-+ case 18:
-+ case 24:
-+ return 32;
-+ case 15:
-+ return 16;
-+ default:
-+ return jzfb->pdata->bpp;
-+ }
-+}
-+
-+static struct fb_videomode *jzfb_get_mode(struct jzfb *jzfb, struct fb_var_screeninfo *var)
-+{
-+ size_t i;
-+ struct fb_videomode *mode = jzfb->pdata->modes;
-+
-+ for (i = 0; i < jzfb->pdata->num_modes; ++i, ++mode) {
-+ if (mode->xres == var->xres && mode->yres == var->yres)
-+ return mode;
-+ }
-+
-+ return NULL;
-+}
-+
-+static int jzfb_check_var(struct fb_var_screeninfo *var, struct fb_info *fb)
-+{
-+ struct jzfb *jzfb = fb->par;
-+ struct fb_videomode *mode;
-+
-+ if (var->bits_per_pixel != jzfb_get_controller_bpp(jzfb) &&
-+ var->bits_per_pixel != jzfb->pdata->bpp)
-+ return -EINVAL;
-+
-+ mode = jzfb_get_mode(jzfb, var);
-+ if (mode == NULL)
-+ return -EINVAL;
-+
-+ fb_videomode_to_var(var, mode);
-+
-+ switch (jzfb->pdata->bpp) {
-+ case 8:
-+ break;
-+ case 15:
-+ var->red.offset = 10;
-+ var->red.length = 5;
-+ var->green.offset = 6;
-+ var->green.length = 5;
-+ var->blue.offset = 0;
-+ var->blue.length = 5;
-+ break;
-+ case 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;
-+ break;
-+ case 18:
-+ var->red.offset = 16;
-+ var->red.length = 6;
-+ var->green.offset = 8;
-+ var->green.length = 6;
-+ var->blue.offset = 0;
-+ var->blue.length = 6;
-+ var->bits_per_pixel = 32;
-+ break;
-+ case 32:
-+ case 24:
-+ var->transp.offset = 24;
-+ var->transp.length = 8;
-+ var->red.offset = 16;
-+ var->red.length = 8;
-+ var->green.offset = 8;
-+ var->green.length = 8;
-+ var->blue.offset = 0;
-+ var->blue.length = 8;
-+ var->bits_per_pixel = 32;
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+static int jzfb_set_par(struct fb_info *info)
-+{
-+ struct jzfb *jzfb = info->par;
-+ struct fb_var_screeninfo *var = &info->var;
-+ struct fb_videomode *mode;
-+ uint16_t hds, vds;
-+ uint16_t hde, vde;
-+ uint16_t ht, vt;
-+ uint32_t ctrl;
-+ uint32_t cfg;
-+ unsigned long rate;
-+
-+ mode = jzfb_get_mode(jzfb, var);
-+ if (mode == NULL)
-+ return -EINVAL;
-+
-+ info->mode = mode;
-+
-+ hds = mode->hsync_len + mode->left_margin;
-+ hde = hds + mode->xres;
-+ ht = hde + mode->right_margin;
-+
-+ vds = mode->vsync_len + mode->upper_margin;
-+ vde = vds + mode->yres;
-+ vt = vde + mode->lower_margin;
-+
-+ ctrl = JZ_LCD_CTRL_OFUP | JZ_LCD_CTRL_BURST_16;
-+
-+ switch (jzfb->pdata->bpp) {
-+ case 1:
-+ ctrl |= JZ_LCD_CTRL_BPP_1;
-+ break;
-+ case 2:
-+ ctrl |= JZ_LCD_CTRL_BPP_2;
-+ break;
-+ case 4:
-+ ctrl |= JZ_LCD_CTRL_BPP_4;
-+ break;
-+ case 8:
-+ ctrl |= JZ_LCD_CTRL_BPP_8;
-+ break;
-+ case 15:
-+ ctrl |= JZ_LCD_CTRL_RGB555; /* Falltrough */
-+ case 16:
-+ ctrl |= JZ_LCD_CTRL_BPP_15_16;
-+ break;
-+ case 18:
-+ case 24:
-+ case 32:
-+ ctrl |= JZ_LCD_CTRL_BPP_18_24;
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ cfg = 0;
-+ cfg |= JZ_LCD_CFG_PS_DISABLE;
-+ cfg |= JZ_LCD_CFG_CLS_DISABLE;
-+ cfg |= JZ_LCD_CFG_SPL_DISABLE;
-+ cfg |= JZ_LCD_CFG_REV_DISABLE;
-+
-+ if (!(mode->sync & FB_SYNC_HOR_HIGH_ACT))
-+ cfg |= JZ_LCD_CFG_HSYNC_ACTIVE_LOW;
-+
-+ if (!(mode->sync & FB_SYNC_VERT_HIGH_ACT))
-+ cfg |= JZ_LCD_CFG_VSYNC_ACTIVE_LOW;
-+
-+ if (jzfb->pdata->pixclk_falling_edge)
-+ cfg |= JZ_LCD_CFG_PCLK_FALLING_EDGE;
-+
-+ if (jzfb->pdata->date_enable_active_low)
-+ cfg |= JZ_LCD_CFG_DE_ACTIVE_LOW;
-+
-+ if (jzfb->pdata->lcd_type == JZ_LCD_TYPE_GENERIC_18_BIT)
-+ cfg |= JZ_LCD_CFG_18_BIT;
-+
-+ cfg |= jzfb->pdata->lcd_type & 0xf;
-+
-+ if (mode->pixclock) {
-+ rate = PICOS2KHZ(mode->pixclock) * 1000;
-+ mode->refresh = rate / vt / ht;
-+ } else {
-+ if (jzfb->pdata->lcd_type == JZ_LCD_TYPE_8BIT_SERIAL)
-+ rate = mode->refresh * (vt + 2 * mode->xres) * ht;
-+ else
-+ rate = mode->refresh * vt * ht;
-+
-+ mode->pixclock = KHZ2PICOS(rate / 1000);
-+ }
-+
-+ mutex_lock(&jzfb->lock);
-+ if (!jzfb->is_enabled)
-+ clk_enable(jzfb->ldclk);
-+ else
-+ ctrl |= JZ_LCD_CTRL_ENABLE;
-+
-+ writel(mode->hsync_len, jzfb->base + JZ_REG_LCD_HSYNC);
-+ writel(mode->vsync_len, jzfb->base + JZ_REG_LCD_VSYNC);
-+
-+ writel((ht << 16) | vt, jzfb->base + JZ_REG_LCD_VAT);
-+
-+ writel((hds << 16) | hde, jzfb->base + JZ_REG_LCD_DAH);
-+ writel((vds << 16) | vde, jzfb->base + JZ_REG_LCD_DAV);
-+
-+ writel(cfg, jzfb->base + JZ_REG_LCD_CFG);
-+
-+ writel(ctrl, jzfb->base + JZ_REG_LCD_CTRL);
-+
-+ if (!jzfb->is_enabled)
-+ clk_disable(jzfb->ldclk);
-+ mutex_unlock(&jzfb->lock);
-+
-+ clk_set_rate(jzfb->lpclk, rate);
-+ clk_set_rate(jzfb->ldclk, rate * 3);
-+
-+ return 0;
-+}
-+
-+static void jzfb_enable(struct jzfb *jzfb)
-+{
-+ uint32_t ctrl;
-+
-+ clk_enable(jzfb->ldclk);
-+
-+ jz_gpio_bulk_resume(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb));
-+ jz_gpio_bulk_resume(jz_lcd_data_pins, jzfb_num_data_pins(jzfb));
-+
-+ writel(0, jzfb->base + JZ_REG_LCD_STATE);
-+
-+ writel(jzfb->framedesc->next, jzfb->base + JZ_REG_LCD_DA0);
-+
-+ ctrl = readl(jzfb->base + JZ_REG_LCD_CTRL);
-+ ctrl |= JZ_LCD_CTRL_ENABLE;
-+ ctrl &= ~JZ_LCD_CTRL_DISABLE;
-+ writel(ctrl, jzfb->base + JZ_REG_LCD_CTRL);
-+}
-+
-+static void jzfb_disable(struct jzfb *jzfb)
-+{
-+ uint32_t ctrl;
-+
-+ ctrl = readl(jzfb->base + JZ_REG_LCD_CTRL);
-+ ctrl |= JZ_LCD_CTRL_DISABLE;
-+ writel(ctrl, jzfb->base + JZ_REG_LCD_CTRL);
-+ do {
-+ ctrl = readl(jzfb->base + JZ_REG_LCD_STATE);
-+ } while (!(ctrl & JZ_LCD_STATE_DISABLED));
-+
-+ jz_gpio_bulk_suspend(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb));
-+ jz_gpio_bulk_suspend(jz_lcd_data_pins, jzfb_num_data_pins(jzfb));
-+
-+ clk_disable(jzfb->ldclk);
-+}
-+
-+static int jzfb_blank(int blank_mode, struct fb_info *info)
-+{
-+ struct jzfb *jzfb = info->par;
-+
-+ switch (blank_mode) {
-+ case FB_BLANK_UNBLANK:
-+ mutex_lock(&jzfb->lock);
-+ if (jzfb->is_enabled) {
-+ mutex_unlock(&jzfb->lock);
-+ return 0;
-+ }
-+
-+ jzfb_enable(jzfb);
-+ jzfb->is_enabled = 1;
-+
-+ mutex_unlock(&jzfb->lock);
-+
-+ break;
-+ default:
-+ mutex_lock(&jzfb->lock);
-+ if (!jzfb->is_enabled) {
-+ mutex_unlock(&jzfb->lock);
-+ return 0;
-+ }
-+
-+ jzfb_disable(jzfb);
-+
-+ jzfb->is_enabled = 0;
-+ mutex_unlock(&jzfb->lock);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+static int jzfb_alloc_devmem(struct jzfb *jzfb)
-+{
-+ int max_videosize = 0;
-+ struct fb_videomode *mode = jzfb->pdata->modes;
-+ void *page;
-+ int i;
-+
-+ for (i = 0; i < jzfb->pdata->num_modes; ++mode, ++i) {
-+ if (max_videosize < mode->xres * mode->yres)
-+ max_videosize = mode->xres * mode->yres;
-+ }
-+
-+ max_videosize *= jzfb_get_controller_bpp(jzfb) >> 3;
-+
-+ jzfb->framedesc = dma_alloc_coherent(&jzfb->pdev->dev,
-+ sizeof(*jzfb->framedesc),
-+ &jzfb->framedesc_phys, GFP_KERNEL);
-+
-+ if (!jzfb->framedesc)
-+ return -ENOMEM;
-+
-+ jzfb->vidmem_size = PAGE_ALIGN(max_videosize);
-+ jzfb->vidmem = dma_alloc_coherent(&jzfb->pdev->dev,
-+ jzfb->vidmem_size,
-+ &jzfb->vidmem_phys, GFP_KERNEL);
-+
-+ if (!jzfb->vidmem)
-+ goto err_free_framedesc;
-+
-+ for (page = jzfb->vidmem;
-+ page < jzfb->vidmem + PAGE_ALIGN(jzfb->vidmem_size);
-+ page += PAGE_SIZE) {
-+ SetPageReserved(virt_to_page(page));
-+ }
-+
-+
-+ jzfb->framedesc->next = jzfb->framedesc_phys;
-+ jzfb->framedesc->addr = jzfb->vidmem_phys;
-+ jzfb->framedesc->id = 0xdeafbead;
-+ jzfb->framedesc->cmd = 0;
-+ jzfb->framedesc->cmd |= max_videosize / 4;
-+
-+ return 0;
-+
-+err_free_framedesc:
-+ dma_free_coherent(&jzfb->pdev->dev, sizeof(*jzfb->framedesc),
-+ jzfb->framedesc, jzfb->framedesc_phys);
-+ return -ENOMEM;
-+}
-+
-+static void jzfb_free_devmem(struct jzfb *jzfb)
-+{
-+ dma_free_coherent(&jzfb->pdev->dev, jzfb->vidmem_size,
-+ jzfb->vidmem, jzfb->vidmem_phys);
-+ dma_free_coherent(&jzfb->pdev->dev, sizeof(*jzfb->framedesc),
-+ jzfb->framedesc, jzfb->framedesc_phys);
-+}
-+
-+static struct fb_ops jzfb_ops = {
-+ .owner = THIS_MODULE,
-+ .fb_check_var = jzfb_check_var,
-+ .fb_set_par = jzfb_set_par,
-+ .fb_blank = jzfb_blank,
-+ .fb_fillrect = sys_fillrect,
-+ .fb_copyarea = sys_copyarea,
-+ .fb_imageblit = sys_imageblit,
-+ .fb_setcolreg = jzfb_setcolreg,
-+};
-+
-+static int __devinit jzfb_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jzfb *jzfb;
-+ struct fb_info *fb;
-+ struct jz4740_fb_platform_data *pdata = pdev->dev.platform_data;
-+ struct resource *mem;
-+
-+ if (!pdata) {
-+ dev_err(&pdev->dev, "Missing platform data\n");
-+ return -ENOENT;
-+ }
-+
-+ mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+
-+ if (!mem) {
-+ dev_err(&pdev->dev, "Failed to get register memory resource\n");
-+ return -ENOENT;
-+ }
-+
-+ mem = request_mem_region(mem->start, resource_size(mem), pdev->name);
-+
-+ if (!mem) {
-+ dev_err(&pdev->dev, "Failed to request register memory region\n");
-+ return -EBUSY;
-+ }
-+
-+
-+ fb = framebuffer_alloc(sizeof(struct jzfb), &pdev->dev);
-+
-+ if (!fb) {
-+ dev_err(&pdev->dev, "Failed to allocate framebuffer device\n");
-+ ret = -ENOMEM;
-+ goto err_release_mem_region;
-+ }
-+
-+ fb->fbops = &jzfb_ops;
-+ fb->flags = FBINFO_DEFAULT;
-+
-+ jzfb = fb->par;
-+ jzfb->pdev = pdev;
-+ jzfb->pdata = pdata;
-+ jzfb->mem = mem;
-+
-+ jzfb->ldclk = clk_get(&pdev->dev, "lcd");
-+ if (IS_ERR(jzfb->ldclk)) {
-+ ret = PTR_ERR(jzfb->ldclk);
-+ dev_err(&pdev->dev, "Failed to get lcd clock: %d\n", ret);
-+ goto err_framebuffer_release;
-+ }
-+
-+ jzfb->lpclk = clk_get(&pdev->dev, "lcd_pclk");
-+ if (IS_ERR(jzfb->lpclk)) {
-+ ret = PTR_ERR(jzfb->lpclk);
-+ dev_err(&pdev->dev, "Failed to get lcd pixel clock: %d\n", ret);
-+ goto err_put_ldclk;
-+ }
-+
-+ jzfb->base = ioremap(mem->start, resource_size(mem));
-+
-+ if (!jzfb->base) {
-+ dev_err(&pdev->dev, "Failed to ioremap register memory region\n");
-+ ret = -EBUSY;
-+ goto err_put_lpclk;
-+ }
-+
-+ platform_set_drvdata(pdev, jzfb);
-+
-+ fb_videomode_to_modelist(pdata->modes, pdata->num_modes,
-+ &fb->modelist);
-+ fb->mode = pdata->modes;
-+
-+ fb_videomode_to_var(&fb->var, fb->mode);
-+ fb->var.bits_per_pixel = pdata->bpp;
-+ jzfb_check_var(&fb->var, fb);
-+
-+ ret = jzfb_alloc_devmem(jzfb);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to allocate video memory\n");
-+ goto err_iounmap;
-+ }
-+
-+ fb->fix = jzfb_fix;
-+ fb->fix.line_length = fb->var.bits_per_pixel * fb->var.xres / 8;
-+ fb->fix.mmio_start = mem->start;
-+ fb->fix.mmio_len = resource_size(mem);
-+ fb->fix.smem_start = jzfb->vidmem_phys;
-+ fb->fix.smem_len = fb->fix.line_length * fb->var.yres;
-+ fb->screen_base = jzfb->vidmem;
-+ fb->pseudo_palette = jzfb->pseudo_palette;
-+
-+ fb_alloc_cmap(&fb->cmap, 256, 0);
-+
-+ mutex_init(&jzfb->lock);
-+
-+ clk_enable(jzfb->ldclk);
-+ jzfb->is_enabled = 1;
-+
-+ writel(jzfb->framedesc->next, jzfb->base + JZ_REG_LCD_DA0);
-+ jzfb_set_par(fb);
-+
-+ jz_gpio_bulk_request(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb));
-+ jz_gpio_bulk_request(jz_lcd_data_pins, jzfb_num_data_pins(jzfb));
-+
-+ ret = register_framebuffer(fb);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to register framebuffer: %d\n", ret);
-+ goto err_free_devmem;
-+ }
-+
-+ jzfb->fb = fb;
-+
-+ return 0;
-+
-+err_free_devmem:
-+ jz_gpio_bulk_free(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb));
-+ jz_gpio_bulk_free(jz_lcd_data_pins, jzfb_num_data_pins(jzfb));
-+
-+ fb_dealloc_cmap(&fb->cmap);
-+ jzfb_free_devmem(jzfb);
-+err_iounmap:
-+ iounmap(jzfb->base);
-+err_put_lpclk:
-+ clk_put(jzfb->lpclk);
-+err_put_ldclk:
-+ clk_put(jzfb->ldclk);
-+err_framebuffer_release:
-+ framebuffer_release(fb);
-+err_release_mem_region:
-+ release_mem_region(mem->start, resource_size(mem));
-+ return ret;
-+}
-+
-+static int __devexit jzfb_remove(struct platform_device *pdev)
-+{
-+ struct jzfb *jzfb = platform_get_drvdata(pdev);
-+
-+ jzfb_blank(FB_BLANK_POWERDOWN, jzfb->fb);
-+
-+ jz_gpio_bulk_free(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb));
-+ jz_gpio_bulk_free(jz_lcd_data_pins, jzfb_num_data_pins(jzfb));
-+
-+ iounmap(jzfb->base);
-+ release_mem_region(jzfb->mem->start, resource_size(jzfb->mem));
-+
-+ fb_dealloc_cmap(&jzfb->fb->cmap);
-+ jzfb_free_devmem(jzfb);
-+
-+ platform_set_drvdata(pdev, NULL);
-+
-+ clk_put(jzfb->lpclk);
-+ clk_put(jzfb->ldclk);
-+
-+ framebuffer_release(jzfb->fb);
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+
-+static int jzfb_suspend(struct device *dev)
-+{
-+ struct jzfb *jzfb = dev_get_drvdata(dev);
-+
-+ acquire_console_sem();
-+ fb_set_suspend(jzfb->fb, 1);
-+ release_console_sem();
-+
-+ mutex_lock(&jzfb->lock);
-+ if (jzfb->is_enabled)
-+ jzfb_disable(jzfb);
-+ mutex_unlock(&jzfb->lock);
-+
-+ return 0;
-+}
-+
-+static int jzfb_resume(struct device *dev)
-+{
-+ struct jzfb *jzfb = dev_get_drvdata(dev);
-+ clk_enable(jzfb->ldclk);
-+
-+ mutex_lock(&jzfb->lock);
-+ if (jzfb->is_enabled)
-+ jzfb_enable(jzfb);
-+ mutex_unlock(&jzfb->lock);
-+
-+ acquire_console_sem();
-+ fb_set_suspend(jzfb->fb, 0);
-+ release_console_sem();
-+
-+ return 0;
-+}
-+
-+static const struct dev_pm_ops jzfb_pm_ops = {
-+ .suspend = jzfb_suspend,
-+ .resume = jzfb_resume,
-+ .poweroff = jzfb_suspend,
-+ .restore = jzfb_resume,
-+};
-+
-+#define JZFB_PM_OPS (&jzfb_pm_ops)
-+
-+#else
-+#define JZFB_PM_OPS NULL
-+#endif
-+
-+static struct platform_driver jzfb_driver = {
-+ .probe = jzfb_probe,
-+ .remove = __devexit_p(jzfb_remove),
-+ .driver = {
-+ .name = "jz4740-fb",
-+ .pm = JZFB_PM_OPS,
-+ },
-+};
-+
-+static int __init jzfb_init(void)
-+{
-+ return platform_driver_register(&jzfb_driver);
-+}
-+module_init(jzfb_init);
-+
-+static void __exit jzfb_exit(void)
-+{
-+ platform_driver_unregister(&jzfb_driver);
-+}
-+module_exit(jzfb_exit);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("JZ4720/JZ4740 SoC LCD framebuffer driver");
-+MODULE_ALIAS("platform:jz4740-fb");
-diff --git a/include/linux/jz4740_fb.h b/include/linux/jz4740_fb.h
-new file mode 100644
-index 0000000..ab4c963
---- /dev/null
-+++ b/include/linux/jz4740_fb.h
-@@ -0,0 +1,58 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * 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 __LINUX_JZ4740_FB_H
-+#define __LINUX_JZ4740_FB_H
-+
-+#include <linux/fb.h>
-+
-+enum jz4740_fb_lcd_type {
-+ JZ_LCD_TYPE_GENERIC_16_BIT = 0,
-+ JZ_LCD_TYPE_GENERIC_18_BIT = 0 | (1 << 4),
-+ JZ_LCD_TYPE_SPECIAL_TFT_1 = 1,
-+ JZ_LCD_TYPE_SPECIAL_TFT_2 = 2,
-+ JZ_LCD_TYPE_SPECIAL_TFT_3 = 3,
-+ JZ_LCD_TYPE_NON_INTERLACED_CCIR656 = 5,
-+ JZ_LCD_TYPE_INTERLACED_CCIR656 = 7,
-+ JZ_LCD_TYPE_SINGLE_COLOR_STN = 8,
-+ JZ_LCD_TYPE_SINGLE_MONOCHROME_STN = 9,
-+ JZ_LCD_TYPE_DUAL_COLOR_STN = 10,
-+ JZ_LCD_TYPE_DUAL_MONOCHROME_STN = 11,
-+ JZ_LCD_TYPE_8BIT_SERIAL = 12,
-+};
-+
-+/*
-+* width: width of the lcd display in mm
-+* height: height of the lcd display in mm
-+* num_modes: size of modes
-+* modes: list of valid video modes
-+* bpp: bits per pixel for the lcd
-+* lcd_type: lcd type
-+*/
-+
-+struct jz4740_fb_platform_data {
-+ unsigned int width;
-+ unsigned int height;
-+
-+ size_t num_modes;
-+ struct fb_videomode *modes;
-+
-+ unsigned int bpp;
-+ enum jz4740_fb_lcd_type lcd_type;
-+
-+ unsigned pixclk_falling_edge:1;
-+ unsigned date_enable_active_low:1;
-+};
-+
-+#endif
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/052-rtc.patch b/target/linux/xburst/patches-2.6.34/052-rtc.patch
deleted file mode 100644
index ee1963e404..0000000000
--- a/target/linux/xburst/patches-2.6.34/052-rtc.patch
+++ /dev/null
@@ -1,397 +0,0 @@
-From 103784e50d565c9e9325a9256e0547a40c6b959c Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:12:37 +0200
-Subject: [PATCH] Add jz4740 rtc driver
-
----
- drivers/rtc/Kconfig | 11 ++
- drivers/rtc/Makefile | 1 +
- drivers/rtc/rtc-jz4740.c | 344 ++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 356 insertions(+), 0 deletions(-)
- create mode 100644 drivers/rtc/rtc-jz4740.c
-
-diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
-index 6a13037..8210bc7 100644
---- a/drivers/rtc/Kconfig
-+++ b/drivers/rtc/Kconfig
-@@ -888,4 +888,15 @@ config RTC_DRV_MPC5121
- This driver can also be built as a module. If so, the module
- will be called rtc-mpc5121.
-
-+config RTC_DRV_JZ4740
-+ tristate "Ingenic JZ4740 SoC"
-+ depends on RTC_CLASS
-+ depends on SOC_JZ4740
-+ help
-+ If you say yes here you get support for the
-+ Ingenic JZ4740 SoC RTC controller.
-+
-+ This driver can also be buillt as a module. If so, the module
-+ will be called rtc-jz4740.
-+
- endif # RTC_CLASS
-diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
-index 44ef194..7002033 100644
---- a/drivers/rtc/Makefile
-+++ b/drivers/rtc/Makefile
-@@ -45,6 +45,7 @@ obj-$(CONFIG_RTC_DRV_EP93XX) += rtc-ep93xx.o
- obj-$(CONFIG_RTC_DRV_FM3130) += rtc-fm3130.o
- obj-$(CONFIG_RTC_DRV_GENERIC) += rtc-generic.o
- obj-$(CONFIG_RTC_DRV_ISL1208) += rtc-isl1208.o
-+obj-$(CONFIG_RTC_DRV_JZ4740) += rtc-jz4740.o
- obj-$(CONFIG_RTC_DRV_M41T80) += rtc-m41t80.o
- obj-$(CONFIG_RTC_DRV_M41T94) += rtc-m41t94.o
- obj-$(CONFIG_RTC_DRV_M48T35) += rtc-m48t35.o
-diff --git a/drivers/rtc/rtc-jz4740.c b/drivers/rtc/rtc-jz4740.c
-new file mode 100644
-index 0000000..aac905a
---- /dev/null
-+++ b/drivers/rtc/rtc-jz4740.c
-@@ -0,0 +1,344 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4720/JZ4740 SoC RTC driver
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/rtc.h>
-+#include <linux/slab.h>
-+#include <linux/spinlock.h>
-+
-+#define JZ_REG_RTC_CTRL 0x00
-+#define JZ_REG_RTC_SEC 0x04
-+#define JZ_REG_RTC_SEC_ALARM 0x08
-+#define JZ_REG_RTC_REGULATOR 0x0C
-+#define JZ_REG_RTC_HIBERNATE 0x20
-+#define JZ_REG_RTC_SCRATCHPAD 0x34
-+
-+#define JZ_RTC_CTRL_WRDY BIT(7)
-+#define JZ_RTC_CTRL_1HZ BIT(6)
-+#define JZ_RTC_CTRL_1HZ_IRQ BIT(5)
-+#define JZ_RTC_CTRL_AF BIT(4)
-+#define JZ_RTC_CTRL_AF_IRQ BIT(3)
-+#define JZ_RTC_CTRL_AE BIT(2)
-+#define JZ_RTC_CTRL_ENABLE BIT(0)
-+
-+struct jz4740_rtc {
-+ struct resource *mem;
-+ void __iomem *base;
-+
-+ struct rtc_device *rtc;
-+
-+ unsigned int irq;
-+
-+ spinlock_t lock;
-+};
-+
-+static inline uint32_t jz4740_rtc_reg_read(struct jz4740_rtc *rtc, size_t reg)
-+{
-+ return readl(rtc->base + reg);
-+}
-+
-+static inline void jz4740_rtc_wait_write_ready(struct jz4740_rtc *rtc)
-+{
-+ uint32_t ctrl;
-+ do {
-+ ctrl = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_CTRL);
-+ } while (!(ctrl & JZ_RTC_CTRL_WRDY));
-+}
-+
-+
-+static inline void jz4740_rtc_reg_write(struct jz4740_rtc *rtc, size_t reg,
-+ uint32_t val)
-+{
-+ jz4740_rtc_wait_write_ready(rtc);
-+ writel(val, rtc->base + reg);
-+}
-+
-+static void jz4740_rtc_ctrl_set_bits(struct jz4740_rtc *rtc, uint32_t mask,
-+ uint32_t val)
-+{
-+ unsigned long flags;
-+ uint32_t ctrl;
-+
-+ spin_lock_irqsave(&rtc->lock, flags);
-+
-+ ctrl = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_CTRL);
-+
-+ /* Don't clear interrupt flags by accident */
-+ ctrl |= JZ_RTC_CTRL_1HZ | JZ_RTC_CTRL_AF;
-+
-+ ctrl &= ~mask;
-+ ctrl |= val;
-+
-+ jz4740_rtc_reg_write(rtc, JZ_REG_RTC_CTRL, ctrl);
-+
-+ spin_unlock_irqrestore(&rtc->lock, flags);
-+}
-+
-+static inline struct jz4740_rtc *dev_to_rtc(struct device *dev)
-+{
-+ return dev_get_drvdata(dev);
-+}
-+
-+static int jz4740_rtc_read_time(struct device *dev, struct rtc_time *time)
-+{
-+ struct jz4740_rtc *rtc = dev_to_rtc(dev);
-+ uint32_t secs, secs2;
-+
-+ secs = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_SEC);
-+ secs2 = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_SEC);
-+
-+ while (secs != secs2) {
-+ secs = secs2;
-+ secs2 = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_SEC);
-+ }
-+
-+ rtc_time_to_tm(secs, time);
-+
-+ return rtc_valid_tm(time);
-+}
-+
-+static int jz4740_rtc_set_mmss(struct device *dev, unsigned long secs)
-+{
-+ struct jz4740_rtc *rtc = dev_to_rtc(dev);
-+
-+ if ((uint32_t)secs != secs)
-+ return -EINVAL;
-+
-+ jz4740_rtc_reg_write(rtc, JZ_REG_RTC_SEC, secs);
-+
-+ return 0;
-+}
-+
-+static int jz4740_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
-+{
-+ struct jz4740_rtc *rtc = dev_to_rtc(dev);
-+ uint32_t secs, secs2;
-+ uint32_t ctrl;
-+
-+ secs = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_SEC_ALARM);
-+ secs2 = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_SEC_ALARM);
-+
-+ while (secs != secs2) {
-+ secs = secs2;
-+ secs2 = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_SEC_ALARM);
-+ }
-+
-+ ctrl = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_CTRL);
-+
-+ alrm->enabled = !!(ctrl & JZ_RTC_CTRL_AE);
-+ alrm->pending = !!(ctrl & JZ_RTC_CTRL_AF);
-+
-+ rtc_time_to_tm(secs, &alrm->time);
-+
-+ return rtc_valid_tm(&alrm->time);
-+}
-+
-+static int jz4740_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
-+{
-+ struct jz4740_rtc *rtc = dev_to_rtc(dev);
-+ unsigned long secs;
-+
-+ rtc_tm_to_time(&alrm->time, &secs);
-+
-+ if ((uint32_t)secs != secs)
-+ return -EINVAL;
-+
-+ jz4740_rtc_reg_write(rtc, JZ_REG_RTC_SEC_ALARM, (uint32_t)secs);
-+ jz4740_rtc_ctrl_set_bits(rtc, JZ_RTC_CTRL_AE,
-+ alrm->enabled ? JZ_RTC_CTRL_AE : 0);
-+
-+ return 0;
-+}
-+
-+static int jz4740_rtc_update_irq_enable(struct device *dev, unsigned int enable)
-+{
-+ struct jz4740_rtc *rtc = dev_to_rtc(dev);
-+ jz4740_rtc_ctrl_set_bits(rtc, JZ_RTC_CTRL_1HZ_IRQ,
-+ enable ? JZ_RTC_CTRL_1HZ_IRQ : 0);
-+ return 0;
-+}
-+
-+
-+static int jz4740_rtc_alarm_irq_enable(struct device *dev, unsigned int enable)
-+{
-+ struct jz4740_rtc *rtc = dev_to_rtc(dev);
-+ jz4740_rtc_ctrl_set_bits(rtc, JZ_RTC_CTRL_AF_IRQ,
-+ enable ? JZ_RTC_CTRL_AF_IRQ : 0);
-+ return 0;
-+}
-+
-+static struct rtc_class_ops jz4740_rtc_ops = {
-+ .read_time = jz4740_rtc_read_time,
-+ .set_mmss = jz4740_rtc_set_mmss,
-+ .read_alarm = jz4740_rtc_read_alarm,
-+ .set_alarm = jz4740_rtc_set_alarm,
-+ .update_irq_enable = jz4740_rtc_update_irq_enable,
-+ .alarm_irq_enable = jz4740_rtc_alarm_irq_enable,
-+};
-+
-+static irqreturn_t jz4740_rtc_irq(int irq, void *data)
-+{
-+ struct jz4740_rtc *rtc = data;
-+ uint32_t ctrl;
-+ unsigned long events = 0;
-+ ctrl = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_CTRL);
-+
-+ if (ctrl & JZ_RTC_CTRL_1HZ)
-+ events |= (RTC_UF | RTC_IRQF);
-+
-+ if (ctrl & JZ_RTC_CTRL_AF)
-+ events |= (RTC_AF | RTC_IRQF);
-+
-+ rtc_update_irq(rtc->rtc, 1, events);
-+
-+ jz4740_rtc_ctrl_set_bits(rtc, JZ_RTC_CTRL_1HZ | JZ_RTC_CTRL_AF, 0);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+void jz4740_rtc_poweroff(struct device *dev)
-+{
-+ struct jz4740_rtc *rtc = dev_get_drvdata(dev);
-+ jz4740_rtc_reg_write(rtc, JZ_REG_RTC_HIBERNATE, 1);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_rtc_poweroff);
-+
-+static int __devinit jz4740_rtc_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jz4740_rtc *rtc;
-+ uint32_t scratchpad;
-+
-+ rtc = kmalloc(sizeof(*rtc), GFP_KERNEL);
-+
-+ rtc->irq = platform_get_irq(pdev, 0);
-+
-+ if (rtc->irq < 0) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get platform irq\n");
-+ goto err_free;
-+ }
-+
-+ rtc->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!rtc->mem) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get platform mmio memory\n");
-+ goto err_free;
-+ }
-+
-+ rtc->mem = request_mem_region(rtc->mem->start, resource_size(rtc->mem),
-+ pdev->name);
-+
-+ if (!rtc->mem) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to request mmio memory region\n");
-+ goto err_free;
-+ }
-+
-+ rtc->base = ioremap_nocache(rtc->mem->start, resource_size(rtc->mem));
-+
-+ if (!rtc->base) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to ioremap mmio memory\n");
-+ goto err_release_mem_region;
-+ }
-+
-+ spin_lock_init(&rtc->lock);
-+
-+ platform_set_drvdata(pdev, rtc);
-+
-+ rtc->rtc = rtc_device_register(pdev->name, &pdev->dev, &jz4740_rtc_ops,
-+ THIS_MODULE);
-+
-+ if (IS_ERR(rtc->rtc)) {
-+ ret = PTR_ERR(rtc->rtc);
-+ dev_err(&pdev->dev, "Failed to register rtc device: %d\n", ret);
-+ goto err_iounmap;
-+ }
-+
-+ ret = request_irq(rtc->irq, jz4740_rtc_irq, 0,
-+ pdev->name, rtc);
-+
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request rtc irq: %d\n", ret);
-+ goto err_unregister_rtc;
-+ }
-+
-+ scratchpad = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_SCRATCHPAD);
-+ if (scratchpad != 0x12345678) {
-+ jz4740_rtc_reg_write(rtc, JZ_REG_RTC_SCRATCHPAD, 0x12345678);
-+ jz4740_rtc_reg_write(rtc, JZ_REG_RTC_SEC, 0);
-+ }
-+
-+ return 0;
-+
-+err_unregister_rtc:
-+ rtc_device_unregister(rtc->rtc);
-+err_iounmap:
-+ platform_set_drvdata(pdev, NULL);
-+ iounmap(rtc->base);
-+err_release_mem_region:
-+ release_mem_region(rtc->mem->start, resource_size(rtc->mem));
-+err_free:
-+ kfree(rtc);
-+
-+ return ret;
-+}
-+
-+static int __devexit jz4740_rtc_remove(struct platform_device *pdev)
-+{
-+ struct jz4740_rtc *rtc = platform_get_drvdata(pdev);
-+
-+ free_irq(rtc->irq, rtc);
-+
-+ rtc_device_unregister(rtc->rtc);
-+
-+ iounmap(rtc->base);
-+ release_mem_region(rtc->mem->start, resource_size(rtc->mem));
-+
-+ kfree(rtc);
-+
-+ platform_set_drvdata(pdev, NULL);
-+
-+ return 0;
-+}
-+
-+struct platform_driver jz4740_rtc_driver = {
-+ .probe = jz4740_rtc_probe,
-+ .remove = __devexit_p(jz4740_rtc_remove),
-+ .driver = {
-+ .name = "jz4740-rtc",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init jz4740_rtc_init(void)
-+{
-+ return platform_driver_register(&jz4740_rtc_driver);
-+}
-+module_init(jz4740_rtc_init);
-+
-+static void __exit jz4740_rtc_exit(void)
-+{
-+ platform_driver_unregister(&jz4740_rtc_driver);
-+}
-+module_exit(jz4740_rtc_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_LICENSE("GPL");
-+MODULE_DESCRIPTION("RTC driver for the JZ4720/JZ4740 SoC\n");
-+MODULE_ALIAS("platform:jz4740-rtc");
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/053-adc.patch b/target/linux/xburst/patches-2.6.34/053-adc.patch
deleted file mode 100644
index 80f7f46550..0000000000
--- a/target/linux/xburst/patches-2.6.34/053-adc.patch
+++ /dev/null
@@ -1,498 +0,0 @@
-From 0ba56db361ac905ff2e2d4e6288206c73e3df523 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:18:01 +0200
-Subject: [PATCH] Add jz4740 adc driver
-
----
- drivers/misc/Kconfig | 11 ++
- drivers/misc/Makefile | 1 +
- drivers/misc/jz4740-adc.c | 410 ++++++++++++++++++++++++++++++++++++++++++++
- include/linux/jz4740-adc.h | 25 +++
- 4 files changed, 447 insertions(+), 0 deletions(-)
- create mode 100644 drivers/misc/jz4740-adc.c
- create mode 100644 include/linux/jz4740-adc.h
-
-diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
-index 0d0d625..c62f615 100644
---- a/drivers/misc/Kconfig
-+++ b/drivers/misc/Kconfig
-@@ -327,6 +327,17 @@ config VMWARE_BALLOON
- To compile this driver as a module, choose M here: the
- module will be called vmware_balloon.
-
-+config JZ4740_ADC
-+ tristate "Ingenic JZ4720/JZ4740 SoC ADC driver"
-+ depends on SOC_JZ4740
-+ help
-+ If you say yes here you get support for the Ingenic JZ4720/JZ4740 SoC ADC
-+ core. It is required for the JZ4720/JZ4740 battery and touchscreen driver
-+ and is used to synchronize access to the adc core between those two.
-+
-+ This driver can also be build as a module. If so, the module will be
-+ called jz4740-adc.
-+
- source "drivers/misc/c2port/Kconfig"
- source "drivers/misc/eeprom/Kconfig"
- source "drivers/misc/cb710/Kconfig"
-diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
-index 7b6f7ee..506bcf6 100644
---- a/drivers/misc/Makefile
-+++ b/drivers/misc/Makefile
-@@ -27,6 +27,7 @@ obj-$(CONFIG_DS1682) += ds1682.o
- obj-$(CONFIG_TI_DAC7512) += ti_dac7512.o
- obj-$(CONFIG_C2PORT) += c2port/
- obj-$(CONFIG_IWMC3200TOP) += iwmc3200top/
-+obj-$(CONFIG_JZ4740_ADC) += jz4740-adc.o
- obj-y += eeprom/
- obj-y += cb710/
- obj-$(CONFIG_VMWARE_BALLOON) += vmware_balloon.o
-diff --git a/drivers/misc/jz4740-adc.c b/drivers/misc/jz4740-adc.c
-new file mode 100644
-index 0000000..a8a735a
---- /dev/null
-+++ b/drivers/misc/jz4740-adc.c
-@@ -0,0 +1,410 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4720/JZ4740 SoC ADC driver
-+ *
-+ * 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.
-+ *
-+ * 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.
-+ *
-+ * This driver is meant to synchronize access to the adc core for the battery
-+ * and touchscreen driver. Thus these drivers should use the adc driver as a
-+ * parent.
-+ */
-+
-+#include <linux/err.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+#include <linux/spinlock.h>
-+#include <linux/interrupt.h>
-+
-+#include <linux/clk.h>
-+
-+#include <linux/jz4740-adc.h>
-+
-+#define JZ_REG_ADC_ENABLE 0x00
-+#define JZ_REG_ADC_CFG 0x04
-+#define JZ_REG_ADC_CTRL 0x08
-+#define JZ_REG_ADC_STATUS 0x0C
-+#define JZ_REG_ADC_SAME 0x10
-+#define JZ_REG_ADC_WAIT 0x14
-+#define JZ_REG_ADC_TOUCH 0x18
-+#define JZ_REG_ADC_BATTERY 0x1C
-+#define JZ_REG_ADC_ADCIN 0x20
-+
-+#define JZ_ADC_ENABLE_TOUCH BIT(2)
-+#define JZ_ADC_ENABLE_BATTERY BIT(1)
-+#define JZ_ADC_ENABLE_ADCIN BIT(0)
-+
-+#define JZ_ADC_CFG_SPZZ BIT(31)
-+#define JZ_ADC_CFG_EX_IN BIT(30)
-+#define JZ_ADC_CFG_DNUM_MASK (0x7 << 16)
-+#define JZ_ADC_CFG_DMA_ENABLE BIT(15)
-+#define JZ_ADC_CFG_XYZ_MASK (0x2 << 13)
-+#define JZ_ADC_CFG_SAMPLE_NUM_MASK (0x7 << 10)
-+#define JZ_ADC_CFG_CLKDIV (0xf << 5)
-+#define JZ_ADC_CFG_BAT_MB BIT(4)
-+
-+#define JZ_ADC_CFG_DNUM_OFFSET 16
-+#define JZ_ADC_CFG_XYZ_OFFSET 13
-+#define JZ_ADC_CFG_SAMPLE_NUM_OFFSET 10
-+#define JZ_ADC_CFG_CLKDIV_OFFSET 5
-+
-+#define JZ_ADC_IRQ_PENDOWN BIT(4)
-+#define JZ_ADC_IRQ_PENUP BIT(3)
-+#define JZ_ADC_IRQ_TOUCH BIT(2)
-+#define JZ_ADC_IRQ_BATTERY BIT(1)
-+#define JZ_ADC_IRQ_ADCIN BIT(0)
-+
-+#define JZ_ADC_TOUCH_TYPE1 BIT(31)
-+#define JZ_ADC_TOUCH_DATA1_MASK 0xfff
-+#define JZ_ADC_TOUCH_TYPE0 BIT(15)
-+#define JZ_ADC_TOUCH_DATA0_MASK 0xfff
-+
-+#define JZ_ADC_BATTERY_MASK 0xfff
-+
-+#define JZ_ADC_ADCIN_MASK 0xfff
-+
-+struct jz4740_adc {
-+ struct resource *mem;
-+ void __iomem *base;
-+
-+ int irq;
-+
-+ struct clk *clk;
-+ unsigned int clk_ref;
-+
-+ struct completion bat_completion;
-+ struct completion adc_completion;
-+
-+ spinlock_t lock;
-+};
-+
-+static irqreturn_t jz4740_adc_irq(int irq, void *data)
-+{
-+ struct jz4740_adc *adc = data;
-+ uint8_t status;
-+
-+ status = readb(adc->base + JZ_REG_ADC_STATUS);
-+
-+ if (status & JZ_ADC_IRQ_BATTERY)
-+ complete(&adc->bat_completion);
-+ if (status & JZ_ADC_IRQ_ADCIN)
-+ complete(&adc->adc_completion);
-+
-+ writeb(0xff, adc->base + JZ_REG_ADC_STATUS);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void jz4740_adc_enable_irq(struct jz4740_adc *adc, int irq)
-+{
-+ unsigned long flags;
-+ uint8_t val;
-+
-+ spin_lock_irqsave(&adc->lock, flags);
-+
-+ val = readb(adc->base + JZ_REG_ADC_CTRL);
-+ val &= ~irq;
-+ writeb(val, adc->base + JZ_REG_ADC_CTRL);
-+
-+ spin_unlock_irqrestore(&adc->lock, flags);
-+}
-+
-+static void jz4740_adc_disable_irq(struct jz4740_adc *adc, int irq)
-+{
-+ unsigned long flags;
-+ uint8_t val;
-+
-+ spin_lock_irqsave(&adc->lock, flags);
-+
-+ val = readb(adc->base + JZ_REG_ADC_CTRL);
-+ val |= irq;
-+ writeb(val, adc->base + JZ_REG_ADC_CTRL);
-+
-+ spin_unlock_irqrestore(&adc->lock, flags);
-+}
-+
-+static void jz4740_adc_enable_adc(struct jz4740_adc *adc, int engine)
-+{
-+ unsigned long flags;
-+ uint8_t val;
-+
-+ spin_lock_irqsave(&adc->lock, flags);
-+
-+ val = readb(adc->base + JZ_REG_ADC_ENABLE);
-+ val |= engine;
-+ writeb(val, adc->base + JZ_REG_ADC_ENABLE);
-+
-+ spin_unlock_irqrestore(&adc->lock, flags);
-+}
-+
-+static void jz4740_adc_disable_adc(struct jz4740_adc *adc, int engine)
-+{
-+ unsigned long flags;
-+ uint8_t val;
-+
-+ spin_lock_irqsave(&adc->lock, flags);
-+
-+ val = readb(adc->base + JZ_REG_ADC_ENABLE);
-+ val &= ~engine;
-+ writeb(val, adc->base + JZ_REG_ADC_ENABLE);
-+
-+ spin_unlock_irqrestore(&adc->lock, flags);
-+}
-+
-+static inline void jz4740_adc_set_cfg(struct jz4740_adc *adc, uint32_t mask,
-+uint32_t val)
-+{
-+ unsigned long flags;
-+ uint32_t cfg;
-+
-+ spin_lock_irqsave(&adc->lock, flags);
-+
-+ cfg = readl(adc->base + JZ_REG_ADC_CFG);
-+
-+ cfg &= ~mask;
-+ cfg |= val;
-+
-+ writel(cfg, adc->base + JZ_REG_ADC_CFG);
-+
-+ spin_unlock_irqrestore(&adc->lock, flags);
-+}
-+
-+static inline void jz4740_adc_clk_enable(struct jz4740_adc *adc)
-+{
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&adc->lock, flags);
-+ if (adc->clk_ref++ == 0)
-+ clk_enable(adc->clk);
-+ spin_unlock_irqrestore(&adc->lock, flags);
-+}
-+
-+static inline void jz4740_adc_clk_disable(struct jz4740_adc *adc)
-+{
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&adc->lock, flags);
-+ if (--adc->clk_ref == 0)
-+ clk_disable(adc->clk);
-+ spin_unlock_irqrestore(&adc->lock, flags);
-+}
-+
-+long jz4740_adc_read_battery_voltage(struct device *dev,
-+ enum jz_adc_battery_scale scale)
-+{
-+ struct jz4740_adc *adc = dev_get_drvdata(dev);
-+ unsigned long t;
-+ long long voltage;
-+ uint16_t val;
-+
-+ if (!adc)
-+ return -ENODEV;
-+
-+ jz4740_adc_clk_enable(adc);
-+
-+ if (scale == JZ_ADC_BATTERY_SCALE_2V5)
-+ jz4740_adc_set_cfg(adc, JZ_ADC_CFG_BAT_MB, JZ_ADC_CFG_BAT_MB);
-+ else
-+ jz4740_adc_set_cfg(adc, JZ_ADC_CFG_BAT_MB, 0);
-+
-+ jz4740_adc_enable_irq(adc, JZ_ADC_IRQ_BATTERY);
-+ jz4740_adc_enable_adc(adc, JZ_ADC_ENABLE_BATTERY);
-+
-+ t = wait_for_completion_interruptible_timeout(&adc->bat_completion,
-+ HZ);
-+
-+ jz4740_adc_disable_irq(adc, JZ_ADC_IRQ_BATTERY);
-+
-+ if (t <= 0) {
-+ jz4740_adc_disable_adc(adc, JZ_ADC_ENABLE_BATTERY);
-+ return t ? t : -ETIMEDOUT;
-+ }
-+
-+ val = readw(adc->base + JZ_REG_ADC_BATTERY);
-+
-+ jz4740_adc_clk_disable(adc);
-+
-+ if (scale == JZ_ADC_BATTERY_SCALE_2V5)
-+ voltage = (((long long)val) * 2500000LL) >> 12LL;
-+ else
-+ voltage = ((((long long)val) * 7395000LL) >> 12LL) + 33000LL;
-+
-+ return voltage;
-+}
-+EXPORT_SYMBOL_GPL(jz4740_adc_read_battery_voltage);
-+
-+static ssize_t jz4740_adc_read_adcin(struct device *dev,
-+ struct device_attribute *dev_attr,
-+ char *buf)
-+{
-+ struct jz4740_adc *adc = dev_get_drvdata(dev);
-+ unsigned long t;
-+ uint16_t val;
-+
-+ jz4740_adc_clk_enable(adc);
-+
-+ jz4740_adc_enable_irq(adc, JZ_ADC_IRQ_ADCIN);
-+ jz4740_adc_enable_adc(adc, JZ_ADC_ENABLE_ADCIN);
-+
-+ t = wait_for_completion_interruptible_timeout(&adc->adc_completion,
-+ HZ);
-+
-+ jz4740_adc_disable_irq(adc, JZ_ADC_IRQ_ADCIN);
-+
-+ if (t <= 0) {
-+ jz4740_adc_disable_adc(adc, JZ_ADC_ENABLE_ADCIN);
-+ return t ? t : -ETIMEDOUT;
-+ }
-+
-+ val = readw(adc->base + JZ_REG_ADC_ADCIN);
-+ jz4740_adc_clk_disable(adc);
-+
-+ return sprintf(buf, "%d\n", val);
-+}
-+
-+static DEVICE_ATTR(adcin, S_IRUGO, jz4740_adc_read_adcin, NULL);
-+
-+static int __devinit jz4740_adc_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jz4740_adc *adc;
-+
-+ adc = kmalloc(sizeof(*adc), GFP_KERNEL);
-+
-+ adc->irq = platform_get_irq(pdev, 0);
-+
-+ if (adc->irq < 0) {
-+ ret = adc->irq;
-+ dev_err(&pdev->dev, "Failed to get platform irq: %d\n", ret);
-+ goto err_free;
-+ }
-+
-+ adc->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+
-+ if (!adc->mem) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get platform mmio resource\n");
-+ goto err_free;
-+ }
-+
-+ adc->mem = request_mem_region(adc->mem->start, resource_size(adc->mem),
-+ pdev->name);
-+
-+ if (!adc->mem) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to request mmio memory region\n");
-+ goto err_free;
-+ }
-+
-+ adc->base = ioremap_nocache(adc->mem->start, resource_size(adc->mem));
-+
-+ if (!adc->base) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to ioremap mmio memory\n");
-+ goto err_release_mem_region;
-+ }
-+
-+ adc->clk = clk_get(&pdev->dev, "adc");
-+
-+ if (IS_ERR(adc->clk)) {
-+ ret = PTR_ERR(adc->clk);
-+ dev_err(&pdev->dev, "Failed to get clock: %d\n", ret);
-+ goto err_iounmap;
-+ }
-+
-+ init_completion(&adc->bat_completion);
-+ init_completion(&adc->adc_completion);
-+
-+ spin_lock_init(&adc->lock);
-+
-+ adc->clk_ref = 0;
-+
-+ platform_set_drvdata(pdev, adc);
-+
-+ ret = request_irq(adc->irq, jz4740_adc_irq, 0, pdev->name, adc);
-+
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request irq: %d\n", ret);
-+ goto err_clk_put;
-+ }
-+
-+ ret = device_create_file(&pdev->dev, &dev_attr_adcin);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to create sysfs file: %d\n", ret);
-+ goto err_free_irq;
-+ }
-+
-+ writeb(0x00, adc->base + JZ_REG_ADC_ENABLE);
-+ writeb(0xff, adc->base + JZ_REG_ADC_CTRL);
-+
-+ return 0;
-+
-+err_free_irq:
-+ free_irq(adc->irq, adc);
-+err_clk_put:
-+ clk_put(adc->clk);
-+err_iounmap:
-+ platform_set_drvdata(pdev, NULL);
-+ iounmap(adc->base);
-+err_release_mem_region:
-+ release_mem_region(adc->mem->start, resource_size(adc->mem));
-+err_free:
-+ kfree(adc);
-+
-+ return ret;
-+}
-+
-+static int __devexit jz4740_adc_remove(struct platform_device *pdev)
-+{
-+ struct jz4740_adc *adc = platform_get_drvdata(pdev);
-+
-+ device_remove_file(&pdev->dev, &dev_attr_adcin);
-+
-+ free_irq(adc->irq, adc);
-+
-+ iounmap(adc->base);
-+ release_mem_region(adc->mem->start, resource_size(adc->mem));
-+
-+ clk_put(adc->clk);
-+
-+ platform_set_drvdata(pdev, NULL);
-+
-+ kfree(adc);
-+
-+ return 0;
-+}
-+
-+struct platform_driver jz4740_adc_driver = {
-+ .probe = jz4740_adc_probe,
-+ .remove = __devexit_p(jz4740_adc_remove),
-+ .driver = {
-+ .name = "jz4740-adc",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init jz4740_adc_init(void)
-+{
-+ return platform_driver_register(&jz4740_adc_driver);
-+}
-+module_init(jz4740_adc_init);
-+
-+static void __exit jz4740_adc_exit(void)
-+{
-+ platform_driver_unregister(&jz4740_adc_driver);
-+}
-+module_exit(jz4740_adc_exit);
-+
-+MODULE_DESCRIPTION("JZ4720/JZ4740 SoC ADC driver");
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:jz4740-adc");
-+MODULE_ALIAS("platform:jz4720-adc");
-diff --git a/include/linux/jz4740-adc.h b/include/linux/jz4740-adc.h
-new file mode 100644
-index 0000000..59cfe63
---- /dev/null
-+++ b/include/linux/jz4740-adc.h
-@@ -0,0 +1,25 @@
-+
-+#ifndef __LINUX_JZ4740_ADC
-+#define __LINUX_JZ4740_ADC
-+
-+#include <linux/device.h>
-+
-+enum jz_adc_battery_scale {
-+ JZ_ADC_BATTERY_SCALE_2V5, /* Mesures voltages up to 2.5V */
-+ JZ_ADC_BATTERY_SCALE_7V5, /* Mesures voltages up to 7.5V */
-+};
-+
-+/*
-+ * jz4740_adc_read_battery_voltage - Read battery voltage from the ADC PBAT pin
-+ * @dev: Pointer to a jz4740-adc device
-+ * @scale: Whether to use 2.5V or 7.5V scale
-+ *
-+ * Returns: Battery voltage in mircovolts
-+ *
-+ * Context: Process
-+*/
-+long jz4740_adc_read_battery_voltage(struct device *dev,
-+ enum jz_adc_battery_scale scale);
-+
-+
-+#endif
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/054-mmc.patch b/target/linux/xburst/patches-2.6.34/054-mmc.patch
deleted file mode 100644
index d2d6668ccc..0000000000
--- a/target/linux/xburst/patches-2.6.34/054-mmc.patch
+++ /dev/null
@@ -1,1087 +0,0 @@
-From 63f8a44fa0a452e0f93ca9b88ccdc5ade02f80f3 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:48:14 +0200
-Subject: [PATCH] Add jz4740 mmc driver
-
----
- drivers/mmc/host/Kconfig | 15 +
- drivers/mmc/host/Makefile | 1 +
- drivers/mmc/host/jz_mmc.c | 1005 ++++++++++++++++++++++++++++++++++++++++
- include/linux/mmc/jz4740_mmc.h | 15 +
- 4 files changed, 1036 insertions(+), 0 deletions(-)
- create mode 100644 drivers/mmc/host/jz_mmc.c
- create mode 100644 include/linux/mmc/jz4740_mmc.h
-
-diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
-index 2e13b94..94e9240 100644
---- a/drivers/mmc/host/Kconfig
-+++ b/drivers/mmc/host/Kconfig
-@@ -81,6 +81,21 @@ config MMC_RICOH_MMC
-
- If unsure, say Y.
-
-+config MMC_JZ
-+ tristate "JZ SD/Multimedia Card Interface support"
-+ depends on SOC_JZ4720 || SOC_JZ4740
-+ help
-+ This selects the Ingenic JZ4720/JZ4740 SD/Multimedia card Interface.
-+ If you have abIngenic platform with a Multimedia Card slot,
-+ say Y or M here.
-+
-+ If unsure, say N.
-+
-+ To compile this driver as a module, choose M here:
-+ the module will be called ricoh_mmc.
-+
-+ If unsure, say Y.
-+
- config MMC_SDHCI_OF
- tristate "SDHCI support on OpenFirmware platforms"
- depends on MMC_SDHCI && PPC_OF
-diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
-index f480397..7e83c54 100644
---- a/drivers/mmc/host/Makefile
-+++ b/drivers/mmc/host/Makefile
-@@ -6,6 +6,7 @@ ifeq ($(CONFIG_MMC_DEBUG),y)
- EXTRA_CFLAGS += -DDEBUG
- endif
-
-+obj-$(CONFIG_MMC_JZ) += jz_mmc.o
- obj-$(CONFIG_MMC_ARMMMCI) += mmci.o
- obj-$(CONFIG_MMC_PXA) += pxamci.o
- obj-$(CONFIG_MMC_IMX) += imxmmc.o
-diff --git a/drivers/mmc/host/jz_mmc.c b/drivers/mmc/host/jz_mmc.c
-new file mode 100644
-index 0000000..ac7668a
---- /dev/null
-+++ b/drivers/mmc/host/jz_mmc.c
-@@ -0,0 +1,1005 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ7420/JZ4740 GPIO SD/MMC controller driver
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/mmc/host.h>
-+#include <linux/io.h>
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/delay.h>
-+#include <linux/scatterlist.h>
-+#include <linux/clk.h>
-+#include <linux/mmc/jz4740_mmc.h>
-+
-+#include <linux/gpio.h>
-+#include <asm/mach-jz4740/gpio.h>
-+#include <asm/cacheflush.h>
-+#include <linux/dma-mapping.h>
-+
-+#define JZ_REG_MMC_STRPCL 0x00
-+#define JZ_REG_MMC_STATUS 0x04
-+#define JZ_REG_MMC_CLKRT 0x08
-+#define JZ_REG_MMC_CMDAT 0x0C
-+#define JZ_REG_MMC_RESTO 0x10
-+#define JZ_REG_MMC_RDTO 0x14
-+#define JZ_REG_MMC_BLKLEN 0x18
-+#define JZ_REG_MMC_NOB 0x1C
-+#define JZ_REG_MMC_SNOB 0x20
-+#define JZ_REG_MMC_IMASK 0x24
-+#define JZ_REG_MMC_IREG 0x28
-+#define JZ_REG_MMC_CMD 0x2C
-+#define JZ_REG_MMC_ARG 0x30
-+#define JZ_REG_MMC_RESP_FIFO 0x34
-+#define JZ_REG_MMC_RXFIFO 0x38
-+#define JZ_REG_MMC_TXFIFO 0x3C
-+
-+#define JZ_MMC_STRPCL_EXIT_MULTIPLE BIT(7)
-+#define JZ_MMC_STRPCL_EXIT_TRANSFER BIT(6)
-+#define JZ_MMC_STRPCL_START_READWAIT BIT(5)
-+#define JZ_MMC_STRPCL_STOP_READWAIT BIT(4)
-+#define JZ_MMC_STRPCL_RESET BIT(3)
-+#define JZ_MMC_STRPCL_START_OP BIT(2)
-+#define JZ_MMC_STRPCL_CLOCK_CONTROL (BIT(1) | BIT(0))
-+#define JZ_MMC_STRPCL_CLOCK_STOP BIT(0)
-+#define JZ_MMC_STRPCL_CLOCK_START BIT(1)
-+
-+
-+#define JZ_MMC_STATUS_IS_RESETTING BIT(15)
-+#define JZ_MMC_STATUS_SDIO_INT_ACTIVE BIT(14)
-+#define JZ_MMC_STATUS_PRG_DONE BIT(13)
-+#define JZ_MMC_STATUS_DATA_TRAN_DONE BIT(12)
-+#define JZ_MMC_STATUS_END_CMD_RES BIT(11)
-+#define JZ_MMC_STATUS_DATA_FIFO_AFULL BIT(10)
-+#define JZ_MMC_STATUS_IS_READWAIT BIT(9)
-+#define JZ_MMC_STATUS_CLK_EN BIT(8)
-+#define JZ_MMC_STATUS_DATA_FIFO_FULL BIT(7)
-+#define JZ_MMC_STATUS_DATA_FIFO_EMPTY BIT(6)
-+#define JZ_MMC_STATUS_CRC_RES_ERR BIT(5)
-+#define JZ_MMC_STATUS_CRC_READ_ERROR BIT(4)
-+#define JZ_MMC_STATUS_TIMEOUT_WRITE BIT(3)
-+#define JZ_MMC_STATUS_CRC_WRITE_ERROR BIT(2)
-+#define JZ_MMC_STATUS_TIMEOUT_RES BIT(1)
-+#define JZ_MMC_STATUS_TIMEOUT_READ BIT(0)
-+
-+#define JZ_MMC_STATUS_READ_ERROR_MASK (BIT(4) | BIT(0))
-+#define JZ_MMC_STATUS_WRITE_ERROR_MASK (BIT(3) | BIT(2))
-+
-+
-+#define JZ_MMC_CMDAT_IO_ABORT BIT(11)
-+#define JZ_MMC_CMDAT_BUS_WIDTH_4BIT BIT(10)
-+#define JZ_MMC_CMDAT_DMA_EN BIT(8)
-+#define JZ_MMC_CMDAT_INIT BIT(7)
-+#define JZ_MMC_CMDAT_BUSY BIT(6)
-+#define JZ_MMC_CMDAT_STREAM BIT(5)
-+#define JZ_MMC_CMDAT_WRITE BIT(4)
-+#define JZ_MMC_CMDAT_DATA_EN BIT(3)
-+#define JZ_MMC_CMDAT_RESPONSE_FORMAT (BIT(2) | BIT(1) | BIT(0))
-+#define JZ_MMC_CMDAT_RSP_R1 1
-+#define JZ_MMC_CMDAT_RSP_R2 2
-+#define JZ_MMC_CMDAT_RSP_R3 3
-+
-+#define JZ_MMC_IRQ_SDIO BIT(7)
-+#define JZ_MMC_IRQ_TXFIFO_WR_REQ BIT(6)
-+#define JZ_MMC_IRQ_RXFIFO_RD_REQ BIT(5)
-+#define JZ_MMC_IRQ_END_CMD_RES BIT(2)
-+#define JZ_MMC_IRQ_PRG_DONE BIT(1)
-+#define JZ_MMC_IRQ_DATA_TRAN_DONE BIT(0)
-+
-+
-+#define JZ_MMC_CLK_RATE 24000000
-+
-+#define JZ4740_MMC_MAX_TIMEOUT 10000000
-+
-+struct jz4740_mmc_host {
-+ struct mmc_host *mmc;
-+ struct platform_device *pdev;
-+ struct jz4740_mmc_platform_data *pdata;
-+ struct clk *clk;
-+
-+ int irq;
-+ int card_detect_irq;
-+
-+ struct resource *mem;
-+ void __iomem *base;
-+ struct mmc_request *req;
-+ struct mmc_command *cmd;
-+
-+ int max_clock;
-+ uint32_t cmdat;
-+
-+ uint16_t irq_mask;
-+
-+ spinlock_t lock;
-+ struct timer_list clock_timer;
-+ struct timer_list timeout_timer;
-+ unsigned waiting:1;
-+};
-+
-+static void jz4740_mmc_cmd_done(struct jz4740_mmc_host *host);
-+
-+static void jz4740_mmc_enable_irq(struct jz4740_mmc_host *host, unsigned int irq)
-+{
-+ unsigned long flags;
-+ spin_lock_irqsave(&host->lock, flags);
-+
-+ host->irq_mask &= ~irq;
-+ writew(host->irq_mask, host->base + JZ_REG_MMC_IMASK);
-+
-+ spin_unlock_irqrestore(&host->lock, flags);
-+}
-+
-+static void jz4740_mmc_disable_irq(struct jz4740_mmc_host *host, unsigned int irq)
-+{
-+ unsigned long flags;
-+ spin_lock_irqsave(&host->lock, flags);
-+
-+ host->irq_mask |= irq;
-+ writew(host->irq_mask, host->base + JZ_REG_MMC_IMASK);
-+
-+ spin_unlock_irqrestore(&host->lock, flags);
-+}
-+
-+static void jz4740_mmc_clock_enable(struct jz4740_mmc_host *host, bool start_transfer)
-+{
-+ uint16_t val = JZ_MMC_STRPCL_CLOCK_START;
-+
-+ if (start_transfer)
-+ val |= JZ_MMC_STRPCL_START_OP;
-+
-+ writew(val, host->base + JZ_REG_MMC_STRPCL);
-+}
-+
-+static void jz4740_mmc_clock_disable(struct jz4740_mmc_host *host)
-+{
-+ uint32_t status;
-+
-+ writew(JZ_MMC_STRPCL_CLOCK_STOP, host->base + JZ_REG_MMC_STRPCL);
-+ do {
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+ } while (status & JZ_MMC_STATUS_CLK_EN);
-+
-+}
-+
-+static void jz4740_mmc_reset(struct jz4740_mmc_host *host)
-+{
-+ uint32_t status;
-+
-+ writew(JZ_MMC_STRPCL_RESET, host->base + JZ_REG_MMC_STRPCL);
-+ udelay(10);
-+ do {
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+ } while (status & JZ_MMC_STATUS_IS_RESETTING);
-+}
-+
-+static void jz4740_mmc_request_done(struct jz4740_mmc_host *host)
-+{
-+ struct mmc_request *req;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&host->lock, flags);
-+ req = host->req;
-+ host->req = NULL;
-+ host->waiting = 0;
-+ spin_unlock_irqrestore(&host->lock, flags);
-+
-+ if (!unlikely(req))
-+ return;
-+
-+ mmc_request_done(host->mmc, req);
-+}
-+
-+static inline unsigned int jz4740_mmc_wait_irq(struct jz4740_mmc_host *host,
-+ unsigned int irq)
-+{
-+ unsigned int timeout = JZ4740_MMC_MAX_TIMEOUT;
-+ uint16_t status;
-+
-+ do {
-+ status = readw(host->base + JZ_REG_MMC_IREG);
-+ } while (!(status & irq) && --timeout);
-+
-+ return timeout;
-+}
-+
-+static void jz4740_mmc_write_data(struct jz4740_mmc_host *host, struct mmc_data *data)
-+{
-+ struct scatterlist *sg;
-+ uint32_t *sg_pointer;
-+ int status;
-+ unsigned int timeout;
-+ size_t i, j;
-+
-+ for (sg = data->sg; sg; sg = sg_next(sg)) {
-+ sg_pointer = sg_virt(sg);
-+ i = sg->length / 4;
-+ j = i >> 3;
-+ i = i & 0x7;
-+ while (j) {
-+ timeout = jz4740_mmc_wait_irq(host, JZ_MMC_IRQ_TXFIFO_WR_REQ);
-+ if (unlikely(timeout == 0))
-+ goto err_timeout;
-+
-+ writel(sg_pointer[0], host->base + JZ_REG_MMC_TXFIFO);
-+ writel(sg_pointer[1], host->base + JZ_REG_MMC_TXFIFO);
-+ writel(sg_pointer[2], host->base + JZ_REG_MMC_TXFIFO);
-+ writel(sg_pointer[3], host->base + JZ_REG_MMC_TXFIFO);
-+ writel(sg_pointer[4], host->base + JZ_REG_MMC_TXFIFO);
-+ writel(sg_pointer[5], host->base + JZ_REG_MMC_TXFIFO);
-+ writel(sg_pointer[6], host->base + JZ_REG_MMC_TXFIFO);
-+ writel(sg_pointer[7], host->base + JZ_REG_MMC_TXFIFO);
-+ sg_pointer += 8;
-+ --j;
-+ }
-+ if (i) {
-+ timeout = jz4740_mmc_wait_irq(host, JZ_MMC_IRQ_TXFIFO_WR_REQ);
-+ if (unlikely(timeout == 0))
-+ goto err_timeout;
-+
-+ while (i) {
-+ writel(*sg_pointer, host->base + JZ_REG_MMC_TXFIFO);
-+ ++sg_pointer;
-+ --i;
-+ }
-+ }
-+ data->bytes_xfered += sg->length;
-+ }
-+
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+ if (status & JZ_MMC_STATUS_WRITE_ERROR_MASK)
-+ goto err;
-+
-+ timeout = JZ4740_MMC_MAX_TIMEOUT;
-+ do {
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+ } while ((status & JZ_MMC_STATUS_DATA_TRAN_DONE) == 0 && --timeout);
-+
-+ if (unlikely(timeout == 0))
-+ goto err_timeout;
-+ writew(JZ_MMC_IRQ_DATA_TRAN_DONE, host->base + JZ_REG_MMC_IREG);
-+
-+ return;
-+err_timeout:
-+ host->req->cmd->error = -ETIMEDOUT;
-+ data->error = -ETIMEDOUT;
-+ return;
-+err:
-+ if(status & (JZ_MMC_STATUS_TIMEOUT_WRITE)) {
-+ host->req->cmd->error = -ETIMEDOUT;
-+ data->error = -ETIMEDOUT;
-+ } else {
-+ host->req->cmd->error = -EILSEQ;
-+ data->error = -EILSEQ;
-+ }
-+}
-+
-+static void jz4740_mmc_timeout(unsigned long data)
-+{
-+ struct jz4740_mmc_host *host = (struct jz4740_mmc_host*)data;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&host->lock, flags);
-+ if (!host->waiting) {
-+ spin_unlock_irqrestore(&host->lock, flags);
-+ return;
-+ }
-+
-+ host->waiting = 0;
-+
-+ spin_unlock_irqrestore(&host->lock, flags);
-+
-+ host->req->cmd->error = -ETIMEDOUT;
-+ jz4740_mmc_request_done(host);
-+}
-+
-+static void jz4740_mmc_read_data(struct jz4740_mmc_host *host,
-+ struct mmc_data *data)
-+{
-+ struct scatterlist *sg;
-+ uint32_t *sg_pointer;
-+ uint32_t d;
-+ uint16_t status = 0;
-+ size_t i, j;
-+ unsigned int timeout;
-+
-+ for (sg = data->sg; sg; sg = sg_next(sg)) {
-+ sg_pointer = sg_virt(sg);
-+ i = sg->length;
-+ j = i >> 5;
-+ i = i & 0x1f;
-+ while (j) {
-+ timeout = jz4740_mmc_wait_irq(host, JZ_MMC_IRQ_RXFIFO_RD_REQ);
-+ if (unlikely(timeout == 0))
-+ goto err_timeout;
-+
-+ sg_pointer[0] = readl(host->base + JZ_REG_MMC_RXFIFO);
-+ sg_pointer[1] = readl(host->base + JZ_REG_MMC_RXFIFO);
-+ sg_pointer[2] = readl(host->base + JZ_REG_MMC_RXFIFO);
-+ sg_pointer[3] = readl(host->base + JZ_REG_MMC_RXFIFO);
-+ sg_pointer[4] = readl(host->base + JZ_REG_MMC_RXFIFO);
-+ sg_pointer[5] = readl(host->base + JZ_REG_MMC_RXFIFO);
-+ sg_pointer[6] = readl(host->base + JZ_REG_MMC_RXFIFO);
-+ sg_pointer[7] = readl(host->base + JZ_REG_MMC_RXFIFO);
-+
-+ sg_pointer += 8;
-+ --j;
-+ }
-+
-+ while (i >= 4) {
-+ timeout = jz4740_mmc_wait_irq(host, JZ_MMC_IRQ_RXFIFO_RD_REQ);
-+ if (unlikely(timeout == 0))
-+ goto err_timeout;
-+
-+ *sg_pointer = readl(host->base + JZ_REG_MMC_RXFIFO);
-+ ++sg_pointer;
-+ i -= 4;
-+ }
-+ if (i > 0) {
-+ d = readl(host->base + JZ_REG_MMC_RXFIFO);
-+ memcpy(sg_pointer, &d, i);
-+ }
-+ data->bytes_xfered += sg->length;
-+
-+ flush_dcache_page(sg_page(sg));
-+ }
-+
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+ if (status & JZ_MMC_STATUS_READ_ERROR_MASK)
-+ goto err;
-+
-+ /* For whatever reason there is sometime one word more in the fifo then
-+ * requested */
-+ while ((status & JZ_MMC_STATUS_DATA_FIFO_EMPTY) == 0 && --timeout) {
-+ d = readl(host->base + JZ_REG_MMC_RXFIFO);
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+ }
-+ return;
-+err_timeout:
-+ host->req->cmd->error = -ETIMEDOUT;
-+ data->error = -ETIMEDOUT;
-+ return;
-+err:
-+ if (status & JZ_MMC_STATUS_TIMEOUT_READ) {
-+ host->req->cmd->error = -ETIMEDOUT;
-+ data->error = -ETIMEDOUT;
-+ } else {
-+ host->req->cmd->error = -EILSEQ;
-+ data->error = -EILSEQ;
-+ }
-+}
-+
-+static irqreturn_t jz_mmc_irq_worker(int irq, void *devid)
-+{
-+ struct jz4740_mmc_host *host = (struct jz4740_mmc_host *)devid;
-+
-+ if (host->cmd->error)
-+ jz4740_mmc_request_done(host);
-+ else
-+ jz4740_mmc_cmd_done(host);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static irqreturn_t jz_mmc_irq(int irq, void *devid)
-+{
-+ struct jz4740_mmc_host *host = devid;
-+ uint16_t irq_reg, status, tmp;
-+ unsigned long flags;
-+ irqreturn_t ret = IRQ_HANDLED;
-+
-+ irq_reg = readw(host->base + JZ_REG_MMC_IREG);
-+
-+ tmp = irq_reg;
-+ spin_lock_irqsave(&host->lock, flags);
-+ irq_reg &= ~host->irq_mask;
-+ spin_unlock_irqrestore(&host->lock, flags);
-+
-+ tmp &= ~(JZ_MMC_IRQ_TXFIFO_WR_REQ | JZ_MMC_IRQ_RXFIFO_RD_REQ |
-+ JZ_MMC_IRQ_PRG_DONE | JZ_MMC_IRQ_DATA_TRAN_DONE);
-+
-+ if (tmp != irq_reg) {
-+ dev_warn(&host->pdev->dev, "Sparse irq: %x\n", tmp & ~irq_reg);
-+ writew(tmp & ~irq_reg, host->base + JZ_REG_MMC_IREG);
-+ }
-+
-+
-+ if (irq_reg & JZ_MMC_IRQ_SDIO) {
-+ writew(JZ_MMC_IRQ_SDIO, host->base + JZ_REG_MMC_IREG);
-+ mmc_signal_sdio_irq(host->mmc);
-+ }
-+
-+ if (!host->req || !host->cmd) {
-+ goto handled;
-+ }
-+
-+
-+ spin_lock_irqsave(&host->lock, flags);
-+ if (!host->waiting) {
-+ spin_unlock_irqrestore(&host->lock, flags);
-+ goto handled;
-+ }
-+
-+ host->waiting = 0;
-+ spin_unlock_irqrestore(&host->lock, flags);
-+
-+ del_timer(&host->timeout_timer);
-+
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+
-+ if (status & JZ_MMC_STATUS_TIMEOUT_RES) {
-+ host->cmd->error = -ETIMEDOUT;
-+ } else if (status & JZ_MMC_STATUS_CRC_RES_ERR) {
-+ host->cmd->error = -EIO;
-+ } else if(status & (JZ_MMC_STATUS_CRC_READ_ERROR |
-+ JZ_MMC_STATUS_CRC_WRITE_ERROR)) {
-+ host->cmd->data->error = -EIO;
-+ } else if(status & (JZ_MMC_STATUS_CRC_READ_ERROR |
-+ JZ_MMC_STATUS_CRC_WRITE_ERROR)) {
-+ host->cmd->data->error = -EIO;
-+ }
-+
-+ if (irq_reg & JZ_MMC_IRQ_END_CMD_RES) {
-+ jz4740_mmc_disable_irq(host, JZ_MMC_IRQ_END_CMD_RES);
-+ writew(JZ_MMC_IRQ_END_CMD_RES, host->base + JZ_REG_MMC_IREG);
-+ ret = IRQ_WAKE_THREAD;
-+ }
-+
-+ return ret;
-+handled:
-+
-+ writew(0xff, host->base + JZ_REG_MMC_IREG);
-+ return IRQ_HANDLED;
-+}
-+
-+static int jz4740_mmc_set_clock_rate(struct jz4740_mmc_host *host, int rate) {
-+ int div = 0;
-+ int real_rate;
-+
-+ jz4740_mmc_clock_disable(host);
-+ clk_set_rate(host->clk, JZ_MMC_CLK_RATE);
-+
-+ real_rate = clk_get_rate(host->clk);
-+
-+ while (real_rate > rate && div < 7) {
-+ ++div;
-+ real_rate >>= 1;
-+ }
-+
-+ writew(div, host->base + JZ_REG_MMC_CLKRT);
-+ return real_rate;
-+}
-+
-+
-+static void jz4740_mmc_read_response(struct jz4740_mmc_host *host, struct mmc_command *cmd)
-+{
-+ int i;
-+ uint16_t tmp;
-+ if (cmd->flags & MMC_RSP_136) {
-+ tmp = readw(host->base + JZ_REG_MMC_RESP_FIFO);
-+ for (i = 0; i < 4; ++i) {
-+ cmd->resp[i] = tmp << 24;
-+ cmd->resp[i] |= readw(host->base + JZ_REG_MMC_RESP_FIFO) << 8;
-+ tmp = readw(host->base + JZ_REG_MMC_RESP_FIFO);
-+ cmd->resp[i] |= tmp >> 8;
-+ }
-+ } else {
-+ cmd->resp[0] = readw(host->base + JZ_REG_MMC_RESP_FIFO) << 24;
-+ cmd->resp[0] |= readw(host->base + JZ_REG_MMC_RESP_FIFO) << 8;
-+ cmd->resp[0] |= readw(host->base + JZ_REG_MMC_RESP_FIFO) & 0xff;
-+ }
-+}
-+
-+static void jz4740_mmc_send_command(struct jz4740_mmc_host *host, struct mmc_command *cmd)
-+{
-+ uint32_t cmdat = host->cmdat;
-+
-+ host->cmdat &= ~JZ_MMC_CMDAT_INIT;
-+ jz4740_mmc_clock_disable(host);
-+
-+ host->cmd = cmd;
-+
-+ if (cmd->flags & MMC_RSP_BUSY)
-+ cmdat |= JZ_MMC_CMDAT_BUSY;
-+
-+ switch (mmc_resp_type(cmd)) {
-+ case MMC_RSP_R1B:
-+ case MMC_RSP_R1:
-+ cmdat |= JZ_MMC_CMDAT_RSP_R1;
-+ break;
-+ case MMC_RSP_R2:
-+ cmdat |= JZ_MMC_CMDAT_RSP_R2;
-+ break;
-+ case MMC_RSP_R3:
-+ cmdat |= JZ_MMC_CMDAT_RSP_R3;
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ if (cmd->data) {
-+ cmdat |= JZ_MMC_CMDAT_DATA_EN;
-+ if (cmd->data->flags & MMC_DATA_WRITE)
-+ cmdat |= JZ_MMC_CMDAT_WRITE;
-+ if (cmd->data->flags & MMC_DATA_STREAM)
-+ cmdat |= JZ_MMC_CMDAT_STREAM;
-+
-+ writew(cmd->data->blksz, host->base + JZ_REG_MMC_BLKLEN);
-+ writew(cmd->data->blocks, host->base + JZ_REG_MMC_NOB);
-+ }
-+
-+ writeb(cmd->opcode, host->base + JZ_REG_MMC_CMD);
-+ writel(cmd->arg, host->base + JZ_REG_MMC_ARG);
-+ writel(cmdat, host->base + JZ_REG_MMC_CMDAT);
-+
-+ host->waiting = 1;
-+ jz4740_mmc_clock_enable(host, 1);
-+ mod_timer(&host->timeout_timer, jiffies + 5*HZ);
-+}
-+
-+static void jz4740_mmc_cmd_done(struct jz4740_mmc_host *host)
-+{
-+ uint32_t status;
-+ struct mmc_command *cmd = host->req->cmd;
-+ struct mmc_request *req = host->req;
-+ unsigned int timeout = JZ4740_MMC_MAX_TIMEOUT;
-+
-+ if (cmd->flags & MMC_RSP_PRESENT)
-+ jz4740_mmc_read_response(host, cmd);
-+
-+ if (cmd->data) {
-+ if (cmd->data->flags & MMC_DATA_READ)
-+ jz4740_mmc_read_data(host, cmd->data);
-+ else
-+ jz4740_mmc_write_data(host, cmd->data);
-+ }
-+
-+ if (req->stop) {
-+ jz4740_mmc_send_command(host, req->stop);
-+ do {
-+ status = readw(host->base + JZ_REG_MMC_IREG);
-+ } while ((status & JZ_MMC_IRQ_PRG_DONE) == 0 && --timeout);
-+ writew(JZ_MMC_IRQ_PRG_DONE, host->base + JZ_REG_MMC_IREG);
-+ }
-+
-+ if (unlikely(timeout == 0))
-+ req->stop->error = -ETIMEDOUT;
-+
-+ jz4740_mmc_request_done(host);
-+}
-+
-+static void jz4740_mmc_request(struct mmc_host *mmc, struct mmc_request *req)
-+{
-+ struct jz4740_mmc_host *host = mmc_priv(mmc);
-+
-+ host->req = req;
-+
-+ writew(0xffff, host->base + JZ_REG_MMC_IREG);
-+
-+ writew(JZ_MMC_IRQ_END_CMD_RES, host->base + JZ_REG_MMC_IREG);
-+ jz4740_mmc_enable_irq(host, JZ_MMC_IRQ_END_CMD_RES);
-+ jz4740_mmc_send_command(host, req->cmd);
-+}
-+
-+
-+static void jz4740_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
-+{
-+ struct jz4740_mmc_host *host = mmc_priv(mmc);
-+ if (ios->clock)
-+ jz4740_mmc_set_clock_rate(host, ios->clock);
-+
-+ switch (ios->power_mode) {
-+ case MMC_POWER_UP:
-+ jz4740_mmc_reset(host);
-+ if (gpio_is_valid(host->pdata->gpio_power))
-+ gpio_set_value(host->pdata->gpio_power,
-+ !host->pdata->power_active_low);
-+ host->cmdat |= JZ_MMC_CMDAT_INIT;
-+ clk_enable(host->clk);
-+ break;
-+ case MMC_POWER_ON:
-+ break;
-+ default:
-+ if (gpio_is_valid(host->pdata->gpio_power))
-+ gpio_set_value(host->pdata->gpio_power,
-+ host->pdata->power_active_low);
-+ clk_disable(host->clk);
-+ break;
-+ }
-+
-+ switch (ios->bus_width) {
-+ case MMC_BUS_WIDTH_1:
-+ host->cmdat &= ~JZ_MMC_CMDAT_BUS_WIDTH_4BIT;
-+ break;
-+ case MMC_BUS_WIDTH_4:
-+ host->cmdat |= JZ_MMC_CMDAT_BUS_WIDTH_4BIT;
-+ break;
-+ default:
-+ dev_err(&host->pdev->dev, "Invalid bus width: %d\n", ios->bus_width);
-+ }
-+}
-+
-+static int jz4740_mmc_get_ro(struct mmc_host *mmc)
-+{
-+ struct jz4740_mmc_host *host = mmc_priv(mmc);
-+ if (!gpio_is_valid(host->pdata->gpio_read_only))
-+ return -ENOSYS;
-+
-+ return gpio_get_value(host->pdata->gpio_read_only) ^
-+ host->pdata->read_only_active_low;
-+}
-+
-+static int jz4740_mmc_get_cd(struct mmc_host *mmc)
-+{
-+ struct jz4740_mmc_host *host = mmc_priv(mmc);
-+ if (!gpio_is_valid(host->pdata->gpio_card_detect))
-+ return -ENOSYS;
-+
-+ return gpio_get_value(host->pdata->gpio_card_detect) ^
-+ host->pdata->card_detect_active_low;
-+}
-+
-+static irqreturn_t jz4740_mmc_card_detect_irq(int irq, void *devid)
-+{
-+ struct jz4740_mmc_host *host = devid;
-+
-+ mmc_detect_change(host->mmc, HZ / 3);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void jz4740_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable)
-+{
-+ struct jz4740_mmc_host *host = mmc_priv(mmc);
-+ if (enable)
-+ jz4740_mmc_enable_irq(host, JZ_MMC_IRQ_SDIO);
-+ else
-+ jz4740_mmc_disable_irq(host, JZ_MMC_IRQ_SDIO);
-+}
-+
-+static const struct mmc_host_ops jz4740_mmc_ops = {
-+ .request = jz4740_mmc_request,
-+ .set_ios = jz4740_mmc_set_ios,
-+ .get_ro = jz4740_mmc_get_ro,
-+ .get_cd = jz4740_mmc_get_cd,
-+ .enable_sdio_irq = jz4740_mmc_enable_sdio_irq,
-+};
-+
-+static const struct jz_gpio_bulk_request jz4740_mmc_pins[] = {
-+ JZ_GPIO_BULK_PIN(MSC_CMD),
-+ JZ_GPIO_BULK_PIN(MSC_CLK),
-+ JZ_GPIO_BULK_PIN(MSC_DATA0),
-+ JZ_GPIO_BULK_PIN(MSC_DATA1),
-+ JZ_GPIO_BULK_PIN(MSC_DATA2),
-+ JZ_GPIO_BULK_PIN(MSC_DATA3),
-+};
-+
-+static int __devinit jz4740_mmc_request_gpios(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jz4740_mmc_platform_data *pdata = pdev->dev.platform_data;
-+
-+ if (!pdata)
-+ return 0;
-+
-+ if (gpio_is_valid(pdata->gpio_card_detect)) {
-+ ret = gpio_request(pdata->gpio_card_detect, "MMC detect change");
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request detect change gpio\n");
-+ goto err;
-+ }
-+ gpio_direction_input(pdata->gpio_card_detect);
-+ }
-+
-+ if (gpio_is_valid(pdata->gpio_read_only)) {
-+ ret = gpio_request(pdata->gpio_read_only, "MMC read only");
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request read only gpio: %d\n", ret);
-+ goto err_free_gpio_card_detect;
-+ }
-+ gpio_direction_input(pdata->gpio_read_only);
-+ }
-+
-+ if (gpio_is_valid(pdata->gpio_power)) {
-+ ret = gpio_request(pdata->gpio_power, "MMC power");
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request power gpio: %d\n", ret);
-+ goto err_free_gpio_read_only;
-+ }
-+ gpio_direction_output(pdata->gpio_power, pdata->power_active_low);
-+ }
-+
-+ return 0;
-+
-+err_free_gpio_read_only:
-+ if (gpio_is_valid(pdata->gpio_read_only))
-+ gpio_free(pdata->gpio_read_only);
-+err_free_gpio_card_detect:
-+ if (gpio_is_valid(pdata->gpio_card_detect))
-+ gpio_free(pdata->gpio_card_detect);
-+err:
-+ return ret;
-+}
-+
-+static void jz4740_mmc_free_gpios(struct platform_device *pdev)
-+{
-+ struct jz4740_mmc_platform_data *pdata = pdev->dev.platform_data;
-+
-+ if (!pdata)
-+ return;
-+
-+ if (gpio_is_valid(pdata->gpio_power))
-+ gpio_free(pdata->gpio_power);
-+ if (gpio_is_valid(pdata->gpio_read_only))
-+ gpio_free(pdata->gpio_read_only);
-+ if (gpio_is_valid(pdata->gpio_card_detect))
-+ gpio_free(pdata->gpio_card_detect);
-+}
-+
-+static int __devinit jz4740_mmc_probe(struct platform_device* pdev)
-+{
-+ int ret;
-+ struct mmc_host *mmc;
-+ struct jz4740_mmc_host *host;
-+ struct jz4740_mmc_platform_data *pdata;
-+
-+ pdata = pdev->dev.platform_data;
-+
-+ mmc = mmc_alloc_host(sizeof(struct jz4740_mmc_host), &pdev->dev);
-+
-+ if (!mmc) {
-+ dev_err(&pdev->dev, "Failed to alloc mmc host structure\n");
-+ return -ENOMEM;
-+ }
-+
-+ host = mmc_priv(mmc);
-+
-+ host->irq = platform_get_irq(pdev, 0);
-+
-+ if (host->irq < 0) {
-+ ret = host->irq;
-+ dev_err(&pdev->dev, "Failed to get platform irq: %d\n", ret);
-+ goto err_free_host;
-+ }
-+
-+ host->clk = clk_get(&pdev->dev, "mmc");
-+ if (!host->clk) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get mmc clock\n");
-+ goto err_free_host;
-+ }
-+
-+ host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+
-+ if (!host->mem) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get base platform memory\n");
-+ goto err_clk_put;
-+ }
-+
-+ host->mem = request_mem_region(host->mem->start, resource_size(host->mem),
-+ pdev->name);
-+
-+ if (!host->mem) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to request base memory region\n");
-+ goto err_clk_put;
-+ }
-+
-+ host->base = ioremap_nocache(host->mem->start, resource_size(host->mem));
-+
-+ if (!host->base) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to ioremap base memory\n");
-+ goto err_release_mem_region;
-+ }
-+
-+ if (pdata && pdata->data_1bit)
-+ ret = jz_gpio_bulk_request(jz4740_mmc_pins, ARRAY_SIZE(jz4740_mmc_pins) - 3);
-+ else
-+ ret = jz_gpio_bulk_request(jz4740_mmc_pins, ARRAY_SIZE(jz4740_mmc_pins));
-+
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request function pins: %d\n", ret);
-+ goto err_iounmap;
-+ }
-+
-+ ret = jz4740_mmc_request_gpios(pdev);
-+ if (ret)
-+ goto err_gpio_bulk_free;
-+
-+ mmc->ops = &jz4740_mmc_ops;
-+ mmc->f_min = JZ_MMC_CLK_RATE / 128;
-+ mmc->f_max = JZ_MMC_CLK_RATE;
-+ mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
-+ mmc->caps = (pdata && pdata->data_1bit) ? 0 : MMC_CAP_4_BIT_DATA;
-+ mmc->caps |= MMC_CAP_SDIO_IRQ;
-+ mmc->max_seg_size = 4096;
-+ mmc->max_phys_segs = 128;
-+
-+ mmc->max_blk_size = (1 << 10) - 1;
-+ mmc->max_blk_count = (1 << 15) - 1;
-+ mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
-+
-+ host->mmc = mmc;
-+ host->pdev = pdev;
-+ host->pdata = pdata;
-+ host->max_clock = JZ_MMC_CLK_RATE;
-+ spin_lock_init(&host->lock);
-+ host->irq_mask = 0xffff;
-+
-+ host->card_detect_irq = gpio_to_irq(pdata->gpio_card_detect);
-+
-+ if (host->card_detect_irq < 0) {
-+ dev_warn(&pdev->dev, "Failed to get irq for card detect gpio\n");
-+ } else {
-+ ret = request_irq(host->card_detect_irq,
-+ jz4740_mmc_card_detect_irq,
-+ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
-+ "MMC card detect", host);
-+
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request card detect irq");
-+ goto err_free_gpios;
-+ }
-+ }
-+
-+ ret = request_threaded_irq(host->irq, jz_mmc_irq, jz_mmc_irq_worker,
-+ IRQF_DISABLED, dev_name(&pdev->dev), host);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request irq: %d\n", ret);
-+ goto err_free_card_detect_irq;
-+ }
-+
-+ jz4740_mmc_reset(host);
-+ jz4740_mmc_clock_disable(host);
-+ setup_timer(&host->timeout_timer, jz4740_mmc_timeout,
-+ (unsigned long)host);
-+
-+ platform_set_drvdata(pdev, host);
-+ ret = mmc_add_host(mmc);
-+
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to add mmc host: %d\n", ret);
-+ goto err_free_irq;
-+ }
-+ dev_info(&pdev->dev, "JZ SD/MMC card driver registered\n");
-+
-+ return 0;
-+
-+err_free_irq:
-+ free_irq(host->irq, host);
-+err_free_card_detect_irq:
-+ if (host->card_detect_irq >= 0)
-+ free_irq(host->card_detect_irq, host);
-+err_free_gpios:
-+ jz4740_mmc_free_gpios(pdev);
-+err_gpio_bulk_free:
-+ if (pdata && pdata->data_1bit)
-+ jz_gpio_bulk_free(jz4740_mmc_pins, ARRAY_SIZE(jz4740_mmc_pins) - 3);
-+ else
-+ jz_gpio_bulk_free(jz4740_mmc_pins, ARRAY_SIZE(jz4740_mmc_pins));
-+err_iounmap:
-+ iounmap(host->base);
-+err_release_mem_region:
-+ release_mem_region(host->mem->start, resource_size(host->mem));
-+err_clk_put:
-+ clk_put(host->clk);
-+err_free_host:
-+ platform_set_drvdata(pdev, NULL);
-+ mmc_free_host(mmc);
-+
-+ return ret;
-+}
-+
-+static int __devexit jz4740_mmc_remove(struct platform_device *pdev)
-+{
-+ struct jz4740_mmc_host *host = platform_get_drvdata(pdev);
-+ struct jz4740_mmc_platform_data *pdata = host->pdata;
-+
-+ del_timer_sync(&host->timeout_timer);
-+ jz4740_mmc_disable_irq(host, 0xff);
-+ jz4740_mmc_reset(host);
-+
-+ mmc_remove_host(host->mmc);
-+
-+ free_irq(host->irq, host);
-+ if (host->card_detect_irq >= 0)
-+ free_irq(host->card_detect_irq, host);
-+
-+ jz4740_mmc_free_gpios(pdev);
-+ if (pdata && pdata->data_1bit)
-+ jz_gpio_bulk_free(jz4740_mmc_pins, ARRAY_SIZE(jz4740_mmc_pins) - 3);
-+ else
-+ jz_gpio_bulk_free(jz4740_mmc_pins, ARRAY_SIZE(jz4740_mmc_pins));
-+
-+ iounmap(host->base);
-+ release_mem_region(host->mem->start, resource_size(host->mem));
-+
-+ clk_put(host->clk);
-+
-+ platform_set_drvdata(pdev, NULL);
-+ mmc_free_host(host->mmc);
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static int jz4740_mmc_suspend(struct device *dev)
-+{
-+ struct jz4740_mmc_host *host = dev_get_drvdata(dev);
-+ struct jz4740_mmc_platform_data *pdata = host->pdata;
-+
-+ mmc_suspend_host(host->mmc, PMSG_SUSPEND);
-+
-+ if (pdata && pdata->data_1bit)
-+ jz_gpio_bulk_suspend(jz4740_mmc_pins, ARRAY_SIZE(jz4740_mmc_pins) - 3);
-+ else
-+ jz_gpio_bulk_suspend(jz4740_mmc_pins, ARRAY_SIZE(jz4740_mmc_pins));
-+
-+ return 0;
-+}
-+
-+static int jz4740_mmc_resume(struct device *dev)
-+{
-+ struct jz4740_mmc_host *host = dev_get_drvdata(dev);
-+ struct jz4740_mmc_platform_data *pdata = host->pdata;
-+
-+ if (pdata && pdata->data_1bit)
-+ jz_gpio_bulk_resume(jz4740_mmc_pins, ARRAY_SIZE(jz4740_mmc_pins) - 3);
-+ else
-+ jz_gpio_bulk_resume(jz4740_mmc_pins, ARRAY_SIZE(jz4740_mmc_pins));
-+
-+ mmc_resume_host(host->mmc);
-+
-+ return 0;
-+}
-+
-+const struct dev_pm_ops jz4740_mmc_pm_ops = {
-+ .suspend = jz4740_mmc_suspend,
-+ .resume = jz4740_mmc_resume,
-+ .poweroff = jz4740_mmc_suspend,
-+ .restore = jz4740_mmc_resume,
-+};
-+
-+#define JZ4740_MMC_PM_OPS (&jz4740_mmc_pm_ops)
-+#else
-+#define JZ4740_MMC_PM_OPS NULL
-+#endif
-+
-+static struct platform_driver jz4740_mmc_driver = {
-+ .probe = jz4740_mmc_probe,
-+ .remove = __devexit_p(jz4740_mmc_remove),
-+ .driver = {
-+ .name = "jz4740-mmc",
-+ .owner = THIS_MODULE,
-+ .pm = JZ4740_MMC_PM_OPS,
-+ },
-+};
-+
-+static int __init jz4740_mmc_init(void)
-+{
-+ return platform_driver_register(&jz4740_mmc_driver);
-+}
-+module_init(jz4740_mmc_init);
-+
-+static void __exit jz4740_mmc_exit(void)
-+{
-+ platform_driver_unregister(&jz4740_mmc_driver);
-+}
-+module_exit(jz4740_mmc_exit);
-+
-+MODULE_DESCRIPTION("JZ4720/JZ4740 SD/MMC controller driver");
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-diff --git a/include/linux/mmc/jz4740_mmc.h b/include/linux/mmc/jz4740_mmc.h
-new file mode 100644
-index 0000000..8543f43
---- /dev/null
-+++ b/include/linux/mmc/jz4740_mmc.h
-@@ -0,0 +1,15 @@
-+#ifndef __LINUX_MMC_JZ4740_MMC
-+#define __LINUX_MMC_JZ4740_MMC
-+
-+struct jz4740_mmc_platform_data {
-+ int gpio_power;
-+ int gpio_card_detect;
-+ int gpio_read_only;
-+ unsigned card_detect_active_low:1;
-+ unsigned read_only_active_low:1;
-+ unsigned power_active_low:1;
-+
-+ unsigned data_1bit:1;
-+};
-+
-+#endif
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/055-ohci.patch b/target/linux/xburst/patches-2.6.34/055-ohci.patch
deleted file mode 100644
index 09c0bbb8d0..0000000000
--- a/target/linux/xburst/patches-2.6.34/055-ohci.patch
+++ /dev/null
@@ -1,313 +0,0 @@
-From 633d5f445a0149ae32e814f794eae04ae2571c42 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 17:18:49 +0200
-Subject: [PATCH] Add jz4740 ohci driver
-
----
- drivers/usb/Kconfig | 1 +
- drivers/usb/host/ohci-hcd.c | 5 +
- drivers/usb/host/ohci-jz4740.c | 264 ++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 270 insertions(+), 0 deletions(-)
- create mode 100644 drivers/usb/host/ohci-jz4740.c
-
-diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig
-index 6a58cb1..46b8dc6 100644
---- a/drivers/usb/Kconfig
-+++ b/drivers/usb/Kconfig
-@@ -46,6 +46,7 @@ config USB_ARCH_HAS_OHCI
- default y if PPC_MPC52xx
- # MIPS:
- default y if SOC_AU1X00
-+ default y if SOC_JZ4740
- # SH:
- default y if CPU_SUBTYPE_SH7720
- default y if CPU_SUBTYPE_SH7721
-diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
-index afe59be..d4ec333 100644
---- a/drivers/usb/host/ohci-hcd.c
-+++ b/drivers/usb/host/ohci-hcd.c
-@@ -1090,6 +1090,11 @@ MODULE_LICENSE ("GPL");
- #define TMIO_OHCI_DRIVER ohci_hcd_tmio_driver
- #endif
-
-+#ifdef CONFIG_SOC_JZ4740
-+#include "ohci-jz4740.c"
-+#define PLATFORM_DRIVER ohci_hcd_jz4740_driver
-+#endif
-+
- #if !defined(PCI_DRIVER) && \
- !defined(PLATFORM_DRIVER) && \
- !defined(OF_PLATFORM_DRIVER) && \
-diff --git a/drivers/usb/host/ohci-jz4740.c b/drivers/usb/host/ohci-jz4740.c
-new file mode 100644
-index 0000000..ac190b4
---- /dev/null
-+++ b/drivers/usb/host/ohci-jz4740.c
-@@ -0,0 +1,264 @@
-+
-+#include <linux/platform_device.h>
-+#include <linux/clk.h>
-+#include <linux/regulator/consumer.h>
-+
-+struct jz4740_ohci_hcd {
-+ struct ohci_hcd ohci_hcd;
-+
-+ struct regulator *vbus;
-+ bool vbus_enabled;
-+ struct clk *clk;
-+};
-+
-+static inline struct jz4740_ohci_hcd *hcd_to_jz4740_hcd(struct usb_hcd *hcd)
-+{
-+ return (struct jz4740_ohci_hcd *)(hcd->hcd_priv);
-+}
-+
-+static inline struct usb_hcd *jz4740_hcd_to_hcd(struct jz4740_ohci_hcd *jz4740_ohci)
-+{
-+ return container_of ((void *) jz4740_ohci, struct usb_hcd, hcd_priv);
-+}
-+
-+
-+static int ohci_jz4740_start(struct usb_hcd *hcd)
-+{
-+ struct ohci_hcd *ohci = hcd_to_ohci(hcd);
-+ int ret;
-+
-+ ret = ohci_init(ohci);
-+ if (ret < 0)
-+ return ret;
-+
-+ ohci->num_ports = 1;
-+
-+ ret = ohci_run(ohci);
-+ if (ret < 0) {
-+ dev_err(hcd->self.controller, "Can not start %s",
-+ hcd->self.bus_name);
-+ ohci_stop(hcd);
-+ return ret;
-+ }
-+ return 0;
-+}
-+
-+static int ohci_jz4740_set_vbus_power(struct jz4740_ohci_hcd *jz4740_ohci,
-+ bool enabled)
-+{
-+ int ret = 0;
-+
-+ if (enabled && !jz4740_ohci->vbus_enabled) {
-+ ret = regulator_enable(jz4740_ohci->vbus);
-+ if (ret)
-+ dev_err(jz4740_hcd_to_hcd(jz4740_ohci)->self.controller,
-+ "Could not power vbus\n");
-+ } else if(!enabled && jz4740_ohci->vbus_enabled) {
-+ ret = regulator_disable(jz4740_ohci->vbus);
-+ }
-+
-+ if (ret == 0)
-+ jz4740_ohci->vbus_enabled = enabled;
-+
-+ return ret;
-+}
-+
-+static int ohci_jz4740_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
-+ u16 wIndex, char *buf, u16 wLength)
-+{
-+ struct jz4740_ohci_hcd *jz4740_ohci = hcd_to_jz4740_hcd(hcd);
-+ int ret;
-+
-+ if (jz4740_ohci->vbus) {
-+ switch (typeReq) {
-+ case SetHubFeature:
-+ if (wValue == USB_PORT_FEAT_POWER)
-+ ret = ohci_jz4740_set_vbus_power(jz4740_ohci, true);
-+ break;
-+ case ClearHubFeature:
-+ if (wValue == USB_PORT_FEAT_POWER)
-+ ret = ohci_jz4740_set_vbus_power(jz4740_ohci, false);
-+ break;
-+ }
-+ }
-+
-+ if (ret)
-+ return ret;
-+
-+ return ohci_hub_control(hcd, typeReq, wValue, wIndex, buf, wLength);
-+}
-+
-+
-+static const struct hc_driver ohci_jz4740_hc_driver = {
-+ .description = hcd_name,
-+ .product_desc = "JZ4740 OHCI",
-+ .hcd_priv_size = sizeof(struct jz4740_ohci_hcd),
-+
-+ /*
-+ * generic hardware linkage
-+ */
-+ .irq = ohci_irq,
-+ .flags = HCD_USB11 | HCD_MEMORY,
-+
-+ /*
-+ * basic lifecycle operations
-+ */
-+ .start = ohci_jz4740_start,
-+ .stop = ohci_stop,
-+ .shutdown = ohci_shutdown,
-+
-+ /*
-+ * managing i/o requests and associated device resources
-+ */
-+ .urb_enqueue = ohci_urb_enqueue,
-+ .urb_dequeue = ohci_urb_dequeue,
-+ .endpoint_disable = ohci_endpoint_disable,
-+
-+ /*
-+ * scheduling support
-+ */
-+ .get_frame_number = ohci_get_frame,
-+
-+ /*
-+ * root hub support
-+ */
-+ .hub_status_data = ohci_hub_status_data,
-+ .hub_control = ohci_jz4740_hub_control,
-+#ifdef CONFIG_PM
-+ .bus_suspend = ohci_bus_suspend,
-+ .bus_resume = ohci_bus_resume,
-+#endif
-+ .start_port_reset = ohci_start_port_reset,
-+};
-+
-+
-+static __devinit int jz4740_ohci_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct usb_hcd *hcd;
-+ struct jz4740_ohci_hcd *jz4740_ohci;
-+ struct resource *res;
-+ int irq;
-+
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+
-+ if (!res) {
-+ dev_err(&pdev->dev, "Failed to get platform resource\n");
-+ return -ENOENT;
-+ }
-+
-+ irq = platform_get_irq(pdev, 0);
-+ if (irq < 0) {
-+ dev_err(&pdev->dev, "Failed to get platform irq\n");
-+ return irq;
-+ }
-+
-+ hcd = usb_create_hcd(&ohci_jz4740_hc_driver, &pdev->dev, "jz4740");
-+ if (!hcd) {
-+ dev_err(&pdev->dev, "Failed to create hcd.\n");
-+ return -ENOMEM;
-+ }
-+
-+ jz4740_ohci = hcd_to_jz4740_hcd(hcd);
-+
-+ res = request_mem_region(res->start, resource_size(res), hcd_name);
-+
-+ if (!res) {
-+ dev_err(&pdev->dev, "Failed to request mem region.\n");
-+ ret = -EBUSY;
-+ goto err_free;
-+ }
-+
-+ hcd->rsrc_start = res->start;
-+ hcd->rsrc_len = resource_size(res);
-+ hcd->regs = ioremap(res->start, resource_size(res));
-+
-+ if (!hcd->regs) {
-+ dev_err(&pdev->dev, "Failed to ioremap registers.\n");
-+ ret = -EBUSY;
-+ goto err_release_mem;
-+ }
-+
-+ jz4740_ohci->clk = clk_get(&pdev->dev, "uhc");
-+ if (IS_ERR(jz4740_ohci->clk)) {
-+ ret = PTR_ERR(jz4740_ohci->clk);
-+ dev_err(&pdev->dev, "Failed to get clock: %d\n", ret);
-+ goto err_iounmap;
-+ }
-+
-+ jz4740_ohci->vbus = regulator_get(&pdev->dev, "vbus");
-+ if (IS_ERR(jz4740_ohci->vbus))
-+ jz4740_ohci->vbus = NULL;
-+
-+
-+ clk_set_rate(jz4740_ohci->clk, 48000000);
-+ clk_enable(jz4740_ohci->clk);
-+ if (jz4740_ohci->vbus)
-+ ohci_jz4740_set_vbus_power(jz4740_ohci, true);
-+
-+ platform_set_drvdata(pdev, hcd);
-+
-+ ohci_hcd_init(hcd_to_ohci(hcd));
-+
-+ ret = usb_add_hcd(hcd, irq, IRQF_DISABLED);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to add hcd: %d\n", ret);
-+ goto err_disable;
-+ }
-+
-+ return 0;
-+
-+err_disable:
-+ platform_set_drvdata(pdev, NULL);
-+ if (jz4740_ohci->vbus) {
-+ regulator_disable(jz4740_ohci->vbus);
-+ regulator_put(jz4740_ohci->vbus);
-+ }
-+ clk_disable(jz4740_ohci->clk);
-+
-+ clk_put(jz4740_ohci->clk);
-+err_iounmap:
-+ iounmap(hcd->regs);
-+err_release_mem:
-+ release_mem_region(res->start, resource_size(res));
-+err_free:
-+ usb_put_hcd(hcd);
-+
-+ return ret;
-+}
-+
-+static __devexit int jz4740_ohci_remove(struct platform_device *pdev)
-+{
-+ struct usb_hcd *hcd = platform_get_drvdata(pdev);
-+ struct jz4740_ohci_hcd *jz4740_ohci = hcd_to_jz4740_hcd(hcd);
-+
-+ usb_remove_hcd(hcd);
-+
-+ platform_set_drvdata(pdev, NULL);
-+
-+ if (jz4740_ohci->vbus) {
-+ regulator_disable(jz4740_ohci->vbus);
-+ regulator_put(jz4740_ohci->vbus);
-+ }
-+
-+ clk_disable(jz4740_ohci->clk);
-+ clk_put(jz4740_ohci->clk);
-+
-+ iounmap(hcd->regs);
-+ release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
-+
-+ usb_put_hcd(hcd);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver ohci_hcd_jz4740_driver = {
-+ .probe = jz4740_ohci_probe,
-+ .remove = __devexit_p(jz4740_ohci_remove),
-+ .driver = {
-+ .name = "jz4740-ohci",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+MODULE_ALIAS("platfrom:jz4740-ohci");
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/056-udc.patch b/target/linux/xburst/patches-2.6.34/056-udc.patch
deleted file mode 100644
index 54978b668a..0000000000
--- a/target/linux/xburst/patches-2.6.34/056-udc.patch
+++ /dev/null
@@ -1,2636 +0,0 @@
-From 644d56ba485f220b1b740b320760a12b5e4e0308 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:18:46 +0200
-Subject: [PATCH] Add jz4740 udc driver
-
----
- drivers/usb/gadget/Kconfig | 14 +
- drivers/usb/gadget/Makefile | 1 +
- drivers/usb/gadget/gadget_chips.h | 9 +
- drivers/usb/gadget/jz4740_udc.c | 2437 +++++++++++++++++++++++++++++++++++++
- drivers/usb/gadget/jz4740_udc.h | 100 ++
- 5 files changed, 2561 insertions(+), 0 deletions(-)
- create mode 100644 drivers/usb/gadget/jz4740_udc.c
- create mode 100644 drivers/usb/gadget/jz4740_udc.h
-
-diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
-index 11a3e0f..a33d0c8 100644
---- a/drivers/usb/gadget/Kconfig
-+++ b/drivers/usb/gadget/Kconfig
-@@ -121,11 +121,25 @@ choice
- #
- # Integrated controllers
- #
-+config USB_GADGET_JZ4740
-+ boolean "JZ4740 UDC"
-+ depends on SOC_JZ4740
-+ select USB_GADGET_SELECTED
-+ select USB_GADGET_DUALSPEED
-+ help
-+ Select this to support the Ingenic JZ4740 processor
-+ high speed USB device controller.
-+
-+config USB_JZ4740
-+ tristate
-+ depends on USB_GADGET_JZ4740
-+ default USB_GADGET
-
- config USB_GADGET_AT91
- boolean "Atmel AT91 USB Device Port"
- depends on ARCH_AT91 && !ARCH_AT91SAM9RL && !ARCH_AT91CAP9 && !ARCH_AT91SAM9G45
- select USB_GADGET_SELECTED
-+
- help
- Many Atmel AT91 processors (such as the AT91RM2000) have a
- full speed USB Device Port with support for five configurable
-diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile
-index 43b51da..8c6ee6b 100644
---- a/drivers/usb/gadget/Makefile
-+++ b/drivers/usb/gadget/Makefile
-@@ -28,6 +28,7 @@ obj-$(CONFIG_USB_FSL_QE) += fsl_qe_udc.o
- obj-$(CONFIG_USB_CI13XXX) += ci13xxx_udc.o
- obj-$(CONFIG_USB_S3C_HSOTG) += s3c-hsotg.o
- obj-$(CONFIG_USB_LANGWELL) += langwell_udc.o
-+obj-$(CONFIG_USB_JZ4740) += jz4740_udc.o
-
- #
- # USB gadget drivers
-diff --git a/drivers/usb/gadget/gadget_chips.h b/drivers/usb/gadget/gadget_chips.h
-index e511fec..b2ec5fb 100644
---- a/drivers/usb/gadget/gadget_chips.h
-+++ b/drivers/usb/gadget/gadget_chips.h
-@@ -15,6 +15,12 @@
- #ifndef __GADGET_CHIPS_H
- #define __GADGET_CHIPS_H
-
-+#ifdef CONFIG_USB_GADGET_JZ4740
-+#define gadget_is_jz4740(g) !strcmp("ingenic_hsusb", (g)->name)
-+#else
-+#define gadget_is_jz4740(g) 0
-+#endif
-+
- #ifdef CONFIG_USB_GADGET_NET2280
- #define gadget_is_net2280(g) !strcmp("net2280", (g)->name)
- #else
-@@ -200,6 +206,9 @@ static inline int usb_gadget_controller_number(struct usb_gadget *gadget)
- return 0x25;
- else if (gadget_is_s3c_hsotg(gadget))
- return 0x26;
-+ else if (gadget_is_jz4740(gadget))
-+ return 0x27;
-+
- return -ENOENT;
- }
-
-diff --git a/drivers/usb/gadget/jz4740_udc.c b/drivers/usb/gadget/jz4740_udc.c
-new file mode 100644
-index 0000000..e84c817
---- /dev/null
-+++ b/drivers/usb/gadget/jz4740_udc.c
-@@ -0,0 +1,2437 @@
-+/*
-+ * linux/drivers/usb/gadget/jz4740_udc.c
-+ *
-+ * Ingenic JZ4740 on-chip high speed USB device controller
-+ *
-+ * Copyright (C) 2006 - 2008 Ingenic Semiconductor Inc.
-+ * Author: <jlwei@ingenic.cn>
-+ *
-+ * 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 device has ep0, two bulk-in/interrupt-in endpoints, and one bulk-out endpoint.
-+ *
-+ * - Endpoint numbering is fixed: ep0, ep1in-int, ep2in-bulk, ep1out-bulk.
-+ * - DMA works with bulk-in (channel 1) and bulk-out (channel 2) endpoints.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/delay.h>
-+#include <linux/ioport.h>
-+#include <linux/slab.h>
-+#include <linux/errno.h>
-+#include <linux/init.h>
-+#include <linux/list.h>
-+#include <linux/interrupt.h>
-+#include <linux/proc_fs.h>
-+#include <linux/usb.h>
-+#include <linux/usb/gadget.h>
-+#include <linux/clk.h>
-+
-+#include <asm/byteorder.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+#include <asm/system.h>
-+#include <asm/mach-jz4740/clock.h>
-+
-+#include "jz4740_udc.h"
-+
-+#define JZ_REG_UDC_FADDR 0x00 /* Function Address 8-bit */
-+#define JZ_REG_UDC_POWER 0x01 /* Power Management 8-bit */
-+#define JZ_REG_UDC_INTRIN 0x02 /* Interrupt IN 16-bit */
-+#define JZ_REG_UDC_INTROUT 0x04 /* Interrupt OUT 16-bit */
-+#define JZ_REG_UDC_INTRINE 0x06 /* Intr IN enable 16-bit */
-+#define JZ_REG_UDC_INTROUTE 0x08 /* Intr OUT enable 16-bit */
-+#define JZ_REG_UDC_INTRUSB 0x0a /* Interrupt USB 8-bit */
-+#define JZ_REG_UDC_INTRUSBE 0x0b /* Interrupt USB Enable 8-bit */
-+#define JZ_REG_UDC_FRAME 0x0c /* Frame number 16-bit */
-+#define JZ_REG_UDC_INDEX 0x0e /* Index register 8-bit */
-+#define JZ_REG_UDC_TESTMODE 0x0f /* USB test mode 8-bit */
-+
-+#define JZ_REG_UDC_CSR0 0x12 /* EP0 CSR 8-bit */
-+#define JZ_REG_UDC_INMAXP 0x10 /* EP1-2 IN Max Pkt Size 16-bit */
-+#define JZ_REG_UDC_INCSR 0x12 /* EP1-2 IN CSR LSB 8/16bit */
-+#define JZ_REG_UDC_INCSRH 0x13 /* EP1-2 IN CSR MSB 8-bit */
-+#define JZ_REG_UDC_OUTMAXP 0x14 /* EP1 OUT Max Pkt Size 16-bit */
-+#define JZ_REG_UDC_OUTCSR 0x16 /* EP1 OUT CSR LSB 8/16bit */
-+#define JZ_REG_UDC_OUTCSRH 0x17 /* EP1 OUT CSR MSB 8-bit */
-+#define JZ_REG_UDC_OUTCOUNT 0x18 /* bytes in EP0/1 OUT FIFO 16-bit */
-+
-+#define JZ_REG_UDC_EP_FIFO(x) (4 * (x) + 0x20)
-+
-+#define JZ_REG_UDC_EPINFO 0x78 /* Endpoint information */
-+#define JZ_REG_UDC_RAMINFO 0x79 /* RAM information */
-+
-+#define JZ_REG_UDC_INTR 0x200 /* DMA pending interrupts */
-+#define JZ_REG_UDC_CNTL1 0x204 /* DMA channel 1 control */
-+#define JZ_REG_UDC_ADDR1 0x208 /* DMA channel 1 AHB memory addr */
-+#define JZ_REG_UDC_COUNT1 0x20c /* DMA channel 1 byte count */
-+#define JZ_REG_UDC_CNTL2 0x214 /* DMA channel 2 control */
-+#define JZ_REG_UDC_ADDR2 0x218 /* DMA channel 2 AHB memory addr */
-+#define JZ_REG_UDC_COUNT2 0x21c /* DMA channel 2 byte count */
-+
-+/* Power register bit masks */
-+#define USB_POWER_SUSPENDM 0x01
-+#define USB_POWER_RESUME 0x04
-+#define USB_POWER_HSMODE 0x10
-+#define USB_POWER_HSENAB 0x20
-+#define USB_POWER_SOFTCONN 0x40
-+
-+/* Interrupt register bit masks */
-+#define USB_INTR_SUSPEND 0x01
-+#define USB_INTR_RESUME 0x02
-+#define USB_INTR_RESET 0x04
-+
-+#define USB_INTR_EP0 0x0001
-+#define USB_INTR_INEP1 0x0002
-+#define USB_INTR_INEP2 0x0004
-+#define USB_INTR_OUTEP1 0x0002
-+
-+/* CSR0 bit masks */
-+#define USB_CSR0_OUTPKTRDY 0x01
-+#define USB_CSR0_INPKTRDY 0x02
-+#define USB_CSR0_SENTSTALL 0x04
-+#define USB_CSR0_DATAEND 0x08
-+#define USB_CSR0_SETUPEND 0x10
-+#define USB_CSR0_SENDSTALL 0x20
-+#define USB_CSR0_SVDOUTPKTRDY 0x40
-+#define USB_CSR0_SVDSETUPEND 0x80
-+
-+/* Endpoint CSR register bits */
-+#define USB_INCSRH_AUTOSET 0x80
-+#define USB_INCSRH_ISO 0x40
-+#define USB_INCSRH_MODE 0x20
-+#define USB_INCSRH_DMAREQENAB 0x10
-+#define USB_INCSRH_DMAREQMODE 0x04
-+#define USB_INCSR_CDT 0x40
-+#define USB_INCSR_SENTSTALL 0x20
-+#define USB_INCSR_SENDSTALL 0x10
-+#define USB_INCSR_FF 0x08
-+#define USB_INCSR_UNDERRUN 0x04
-+#define USB_INCSR_FFNOTEMPT 0x02
-+#define USB_INCSR_INPKTRDY 0x01
-+#define USB_OUTCSRH_AUTOCLR 0x80
-+#define USB_OUTCSRH_ISO 0x40
-+#define USB_OUTCSRH_DMAREQENAB 0x20
-+#define USB_OUTCSRH_DNYT 0x10
-+#define USB_OUTCSRH_DMAREQMODE 0x08
-+#define USB_OUTCSR_CDT 0x80
-+#define USB_OUTCSR_SENTSTALL 0x40
-+#define USB_OUTCSR_SENDSTALL 0x20
-+#define USB_OUTCSR_FF 0x10
-+#define USB_OUTCSR_DATAERR 0x08
-+#define USB_OUTCSR_OVERRUN 0x04
-+#define USB_OUTCSR_FFFULL 0x02
-+#define USB_OUTCSR_OUTPKTRDY 0x01
-+
-+/* Testmode register bits */
-+#define USB_TEST_SE0NAK 0x01
-+#define USB_TEST_J 0x02
-+#define USB_TEST_K 0x04
-+#define USB_TEST_PACKET 0x08
-+
-+/* DMA control bits */
-+#define USB_CNTL_ENA 0x01
-+#define USB_CNTL_DIR_IN 0x02
-+#define USB_CNTL_MODE_1 0x04
-+#define USB_CNTL_INTR_EN 0x08
-+#define USB_CNTL_EP(n) ((n) << 4)
-+#define USB_CNTL_BURST_0 (0 << 9)
-+#define USB_CNTL_BURST_4 (1 << 9)
-+#define USB_CNTL_BURST_8 (2 << 9)
-+#define USB_CNTL_BURST_16 (3 << 9)
-+
-+
-+#ifndef DEBUG
-+# define DEBUG(fmt,args...) do {} while(0)
-+#endif
-+#ifndef DEBUG_EP0
-+# define NO_STATES
-+# define DEBUG_EP0(fmt,args...) do {} while(0)
-+#endif
-+#ifndef DEBUG_SETUP
-+# define DEBUG_SETUP(fmt,args...) do {} while(0)
-+#endif
-+
-+static unsigned int use_dma = 0; /* 1: use DMA, 0: use PIO */
-+
-+module_param(use_dma, int, 0);
-+MODULE_PARM_DESC(use_dma, "DMA mode enable flag");
-+
-+struct jz4740_udc *the_controller;
-+
-+/*
-+ * Local declarations.
-+ */
-+static void jz4740_ep0_kick(struct jz4740_udc *dev, struct jz4740_ep *ep);
-+static void jz4740_handle_ep0(struct jz4740_udc *dev, uint32_t intr);
-+
-+static void done(struct jz4740_ep *ep, struct jz4740_request *req,
-+ int status);
-+static void pio_irq_enable(struct jz4740_ep *ep);
-+static void pio_irq_disable(struct jz4740_ep *ep);
-+static void stop_activity(struct jz4740_udc *dev,
-+ struct usb_gadget_driver *driver);
-+static void nuke(struct jz4740_ep *ep, int status);
-+static void flush(struct jz4740_ep *ep);
-+static void udc_set_address(struct jz4740_udc *dev, unsigned char address);
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/* inline functions of register read/write/set/clear */
-+
-+static inline uint8_t usb_readb(struct jz4740_udc *udc, size_t reg)
-+{
-+ return readb(udc->base + reg);
-+}
-+
-+static inline uint16_t usb_readw(struct jz4740_udc *udc, size_t reg)
-+{
-+ return readw(udc->base + reg);
-+}
-+
-+static inline uint32_t usb_readl(struct jz4740_udc *udc, size_t reg)
-+{
-+ return readl(udc->base + reg);
-+}
-+
-+static inline void usb_writeb(struct jz4740_udc *udc, size_t reg, uint8_t val)
-+{
-+ writeb(val, udc->base + reg);
-+}
-+
-+static inline void usb_writew(struct jz4740_udc *udc, size_t reg, uint16_t val)
-+{
-+ writew(val, udc->base + reg);
-+}
-+
-+static inline void usb_writel(struct jz4740_udc *udc, size_t reg, uint32_t val)
-+{
-+ writel(val, udc->base + reg);
-+}
-+
-+static inline void usb_setb(struct jz4740_udc *udc, size_t reg, uint8_t mask)
-+{
-+ usb_writeb(udc, reg, usb_readb(udc, reg) | mask);
-+}
-+
-+static inline void usb_setw(struct jz4740_udc *udc, size_t reg, uint8_t mask)
-+{
-+ usb_writew(udc, reg, usb_readw(udc, reg) | mask);
-+}
-+
-+static inline void usb_setl(struct jz4740_udc *udc, size_t reg, uint32_t mask)
-+{
-+ usb_writel(udc, reg, usb_readl(udc, reg) | mask);
-+}
-+
-+static inline void usb_clearb(struct jz4740_udc *udc, size_t reg, uint8_t mask)
-+{
-+ usb_writeb(udc, reg, usb_readb(udc, reg) & ~mask);
-+}
-+
-+static inline void usb_clearw(struct jz4740_udc *udc, size_t reg, uint16_t mask)
-+{
-+ usb_writew(udc, reg, usb_readw(udc, reg) & ~mask);
-+}
-+
-+static inline void usb_clearl(struct jz4740_udc *udc, size_t reg, uint32_t mask)
-+{
-+ usb_writel(udc, reg, usb_readl(udc, reg) & ~mask);
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static inline void jz_udc_set_index(struct jz4740_udc *udc, uint8_t index)
-+{
-+ usb_writeb(udc, JZ_REG_UDC_INDEX, index);
-+}
-+
-+static inline void jz_udc_select_ep(struct jz4740_ep *ep)
-+{
-+ jz_udc_set_index(ep->dev, ep_index(ep));
-+}
-+
-+static inline int write_packet(struct jz4740_ep *ep,
-+ struct jz4740_request *req, int max)
-+{
-+ uint8_t *buf;
-+ int length, nlong, nbyte;
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ buf = req->req.buf + req->req.actual;
-+ prefetch(buf);
-+
-+ length = req->req.length - req->req.actual;
-+ length = min(length, max);
-+ req->req.actual += length;
-+
-+ DEBUG("Write %d (max %d), fifo %x\n", length, max, ep->fifo);
-+
-+ nlong = length >> 2;
-+ nbyte = length & 0x3;
-+ while (nlong--) {
-+ usb_writel(ep->dev, ep->fifo, *((uint32_t *)buf));
-+ buf += 4;
-+ }
-+ while (nbyte--) {
-+ usb_writeb(ep->dev, ep->fifo, *buf++);
-+ }
-+
-+ return length;
-+}
-+
-+static inline int read_packet(struct jz4740_ep *ep,
-+ struct jz4740_request *req, int count)
-+{
-+ uint8_t *buf;
-+ int length, nlong, nbyte;
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ buf = req->req.buf + req->req.actual;
-+ prefetchw(buf);
-+
-+ length = req->req.length - req->req.actual;
-+ length = min(length, count);
-+ req->req.actual += length;
-+
-+ DEBUG("Read %d, fifo %x\n", length, ep->fifo);
-+
-+ nlong = length >> 2;
-+ nbyte = length & 0x3;
-+ while (nlong--) {
-+ *((uint32_t *)buf) = usb_readl(ep->dev, ep->fifo);
-+ buf += 4;
-+ }
-+ while (nbyte--) {
-+ *buf++ = usb_readb(ep->dev, ep->fifo);
-+ }
-+
-+ return length;
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/*
-+ * udc_disable - disable USB device controller
-+ */
-+static void udc_disable(struct jz4740_udc *dev)
-+{
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ udc_set_address(dev, 0);
-+
-+ /* Disable interrupts */
-+ usb_writew(dev, JZ_REG_UDC_INTRINE, 0);
-+ usb_writew(dev, JZ_REG_UDC_INTROUTE, 0);
-+ usb_writeb(dev, JZ_REG_UDC_INTRUSBE, 0);
-+
-+ /* Disable DMA */
-+ usb_writel(dev, JZ_REG_UDC_CNTL1, 0);
-+ usb_writel(dev, JZ_REG_UDC_CNTL2, 0);
-+
-+ /* Disconnect from usb */
-+ usb_clearb(dev, JZ_REG_UDC_POWER, USB_POWER_SOFTCONN);
-+
-+ /* Disable the USB PHY */
-+ clk_disable(dev->clk);
-+
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ dev->gadget.speed = USB_SPEED_UNKNOWN;
-+
-+ return;
-+}
-+
-+/*
-+ * udc_reinit - initialize software state
-+ */
-+static void udc_reinit(struct jz4740_udc *dev)
-+{
-+ int i;
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ /* device/ep0 records init */
-+ INIT_LIST_HEAD(&dev->gadget.ep_list);
-+ INIT_LIST_HEAD(&dev->gadget.ep0->ep_list);
-+ dev->ep0state = WAIT_FOR_SETUP;
-+
-+ for (i = 0; i < UDC_MAX_ENDPOINTS; i++) {
-+ struct jz4740_ep *ep = &dev->ep[i];
-+
-+ if (i != 0)
-+ list_add_tail(&ep->ep.ep_list, &dev->gadget.ep_list);
-+
-+ INIT_LIST_HEAD(&ep->queue);
-+ ep->desc = 0;
-+ ep->stopped = 0;
-+ ep->pio_irqs = 0;
-+ }
-+}
-+
-+/* until it's enabled, this UDC should be completely invisible
-+ * to any USB host.
-+ */
-+static void udc_enable(struct jz4740_udc *dev)
-+{
-+ int i;
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ /* UDC state is incorrect - Added by River */
-+ if (dev->state != UDC_STATE_ENABLE) {
-+ return;
-+ }
-+
-+ dev->gadget.speed = USB_SPEED_UNKNOWN;
-+
-+ /* Flush FIFO for each */
-+ for (i = 0; i < UDC_MAX_ENDPOINTS; i++) {
-+ struct jz4740_ep *ep = &dev->ep[i];
-+
-+ jz_udc_set_index(dev, ep_index(ep));
-+ flush(ep);
-+ }
-+
-+ /* Set this bit to allow the UDC entering low-power mode when
-+ * there are no actions on the USB bus.
-+ * UDC still works during this bit was set.
-+ */
-+ jz4740_clock_udc_enable_auto_suspend();
-+
-+ /* Enable the USB PHY */
-+ clk_enable(dev->clk);
-+
-+ /* Disable interrupts */
-+/* usb_writew(dev, JZ_REG_UDC_INTRINE, 0);
-+ usb_writew(dev, JZ_REG_UDC_INTROUTE, 0);
-+ usb_writeb(dev, JZ_REG_UDC_INTRUSBE, 0);*/
-+
-+ /* Enable interrupts */
-+ usb_setw(dev, JZ_REG_UDC_INTRINE, USB_INTR_EP0);
-+ usb_setb(dev, JZ_REG_UDC_INTRUSBE, USB_INTR_RESET);
-+ /* Don't enable rest of the interrupts */
-+ /* usb_setw(dev, JZ_REG_UDC_INTRINE, USB_INTR_INEP1 | USB_INTR_INEP2);
-+ usb_setw(dev, JZ_REG_UDC_INTROUTE, USB_INTR_OUTEP1); */
-+
-+ /* Enable SUSPEND */
-+ /* usb_setb(dev, JZ_REG_UDC_POWER, USB_POWER_SUSPENDM); */
-+
-+ /* Enable HS Mode */
-+ usb_setb(dev, JZ_REG_UDC_POWER, USB_POWER_HSENAB);
-+
-+ /* Let host detect UDC:
-+ * Software must write a 1 to the PMR:USB_POWER_SOFTCONN bit to turn this
-+ * transistor on and pull the USBDP pin HIGH.
-+ */
-+ usb_setb(dev, JZ_REG_UDC_POWER, USB_POWER_SOFTCONN);
-+
-+ return;
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/* keeping it simple:
-+ * - one bus driver, initted first;
-+ * - one function driver, initted second
-+ */
-+
-+/*
-+ * Register entry point for the peripheral controller driver.
-+ */
-+
-+int usb_gadget_register_driver(struct usb_gadget_driver *driver)
-+{
-+ struct jz4740_udc *dev = the_controller;
-+ int retval;
-+
-+ if (!driver || !driver->bind) {
-+ return -EINVAL;
-+ }
-+
-+ if (!dev) {
-+ return -ENODEV;
-+ }
-+
-+ if (dev->driver) {
-+ return -EBUSY;
-+ }
-+
-+ /* hook up the driver */
-+ dev->driver = driver;
-+ dev->gadget.dev.driver = &driver->driver;
-+
-+ retval = driver->bind(&dev->gadget);
-+ if (retval) {
-+ DEBUG("%s: bind to driver %s --> error %d\n", dev->gadget.name,
-+ driver->driver.name, retval);
-+ dev->driver = 0;
-+ return retval;
-+ }
-+
-+ /* then enable host detection and ep0; and we're ready
-+ * for set_configuration as well as eventual disconnect.
-+ */
-+ udc_enable(dev);
-+
-+ DEBUG("%s: registered gadget driver '%s'\n", dev->gadget.name,
-+ driver->driver.name);
-+
-+ return 0;
-+}
-+
-+EXPORT_SYMBOL(usb_gadget_register_driver);
-+
-+static void stop_activity(struct jz4740_udc *dev,
-+ struct usb_gadget_driver *driver)
-+{
-+ int i;
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ /* 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_MAX_ENDPOINTS; i++) {
-+ struct jz4740_ep *ep = &dev->ep[i];
-+
-+ ep->stopped = 1;
-+
-+ jz_udc_set_index(dev, ep_index(ep));
-+ nuke(ep, -ESHUTDOWN);
-+ }
-+
-+ /* report disconnect; the driver is already quiesced */
-+ if (driver) {
-+ spin_unlock(&dev->lock);
-+ driver->disconnect(&dev->gadget);
-+ spin_lock(&dev->lock);
-+ }
-+
-+ /* re-init driver-visible data structures */
-+ udc_reinit(dev);
-+}
-+
-+
-+/*
-+ * Unregister entry point for the peripheral controller driver.
-+ */
-+int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
-+{
-+ struct jz4740_udc *dev = the_controller;
-+ unsigned long flags;
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ if (!dev)
-+ return -ENODEV;
-+ if (!driver || driver != dev->driver)
-+ return -EINVAL;
-+ if (!driver->unbind)
-+ return -EBUSY;
-+
-+ spin_lock_irqsave(&dev->lock, flags);
-+ dev->driver = 0;
-+ stop_activity(dev, driver);
-+ spin_unlock_irqrestore(&dev->lock, flags);
-+
-+ driver->unbind(&dev->gadget);
-+
-+ udc_disable(dev);
-+
-+ DEBUG("unregistered driver '%s'\n", driver->driver.name);
-+
-+ return 0;
-+}
-+
-+EXPORT_SYMBOL(usb_gadget_unregister_driver);
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/*
-+ * Starting DMA using mode 1
-+ */
-+static void kick_dma(struct jz4740_ep *ep, struct jz4740_request *req)
-+{
-+ struct jz4740_udc *dev = ep->dev;
-+ uint32_t count = req->req.length;
-+ uint32_t physaddr = virt_to_phys((void *)req->req.buf);
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ jz_udc_select_ep(ep);
-+
-+ if (ep_is_in(ep)) { /* Bulk-IN transfer using DMA channel 1 */
-+ ep->reg_addr = JZ_REG_UDC_ADDR1;
-+
-+ dma_cache_wback_inv((unsigned long)req->req.buf, count);
-+
-+ pio_irq_enable(ep);
-+
-+ usb_writeb(dev, JZ_REG_UDC_INCSRH,
-+ USB_INCSRH_DMAREQENAB | USB_INCSRH_AUTOSET | USB_INCSRH_DMAREQMODE);
-+
-+ usb_writel(dev, JZ_REG_UDC_ADDR1, physaddr);
-+ usb_writel(dev, JZ_REG_UDC_COUNT1, count);
-+ usb_writel(dev, JZ_REG_UDC_CNTL1, USB_CNTL_ENA | USB_CNTL_DIR_IN | USB_CNTL_MODE_1 |
-+ USB_CNTL_INTR_EN | USB_CNTL_BURST_16 | USB_CNTL_EP(ep_index(ep)));
-+ }
-+ else { /* Bulk-OUT transfer using DMA channel 2 */
-+ ep->reg_addr = JZ_REG_UDC_ADDR2;
-+
-+ dma_cache_wback_inv((unsigned long)req->req.buf, count);
-+
-+ pio_irq_enable(ep);
-+
-+ usb_setb(dev, JZ_REG_UDC_OUTCSRH,
-+ USB_OUTCSRH_DMAREQENAB | USB_OUTCSRH_AUTOCLR | USB_OUTCSRH_DMAREQMODE);
-+
-+ usb_writel(dev, JZ_REG_UDC_ADDR2, physaddr);
-+ usb_writel(dev, JZ_REG_UDC_COUNT2, count);
-+ usb_writel(dev, JZ_REG_UDC_CNTL2, USB_CNTL_ENA | USB_CNTL_MODE_1 |
-+ USB_CNTL_INTR_EN | USB_CNTL_BURST_16 | USB_CNTL_EP(ep_index(ep)));
-+ }
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/** Write request to FIFO (max write == maxp size)
-+ * Return: 0 = still running, 1 = completed, negative = errno
-+ * NOTE: INDEX register must be set for EP
-+ */
-+static int write_fifo(struct jz4740_ep *ep, struct jz4740_request *req)
-+{
-+ struct jz4740_udc *dev = ep->dev;
-+ uint32_t max, csr;
-+ uint32_t physaddr = virt_to_phys((void *)req->req.buf);
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+ max = le16_to_cpu(ep->desc->wMaxPacketSize);
-+
-+ if (use_dma) {
-+ uint32_t dma_count;
-+
-+ /* DMA interrupt generated due to the last packet loaded into the FIFO */
-+
-+ dma_count = usb_readl(dev, ep->reg_addr) - physaddr;
-+ req->req.actual += dma_count;
-+
-+ if (dma_count % max) {
-+ /* If the last packet is less than MAXP, set INPKTRDY manually */
-+ usb_setb(dev, ep->csr, USB_INCSR_INPKTRDY);
-+ }
-+
-+ done(ep, req, 0);
-+ if (list_empty(&ep->queue)) {
-+ pio_irq_disable(ep);
-+ return 1;
-+ }
-+ else {
-+ /* advance the request queue */
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+ kick_dma(ep, req);
-+ return 0;
-+ }
-+ }
-+
-+ /*
-+ * PIO mode handling starts here ...
-+ */
-+
-+ csr = usb_readb(dev, ep->csr);
-+
-+ if (!(csr & USB_INCSR_FFNOTEMPT)) {
-+ unsigned count;
-+ int is_last, is_short;
-+
-+ count = write_packet(ep, req, max);
-+ usb_setb(dev, ep->csr, USB_INCSR_INPKTRDY);
-+
-+ /* 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_maxpacket(ep));
-+ }
-+
-+ DEBUG("%s: wrote %s %d bytes%s%s %d left %p\n", __FUNCTION__,
-+ ep->ep.name, count,
-+ is_last ? "/L" : "", is_short ? "/S" : "",
-+ req->req.length - req->req.actual, req);
-+
-+ /* requests complete when all IN data is in the FIFO */
-+ if (is_last) {
-+ done(ep, req, 0);
-+ if (list_empty(&ep->queue)) {
-+ pio_irq_disable(ep);
-+ }
-+ return 1;
-+ }
-+ } else {
-+ DEBUG("Hmm.. %d ep FIFO is not empty!\n", ep_index(ep));
-+ }
-+
-+ return 0;
-+}
-+
-+/** Read to request from FIFO (max read == bytes in fifo)
-+ * Return: 0 = still running, 1 = completed, negative = errno
-+ * NOTE: INDEX register must be set for EP
-+ */
-+static int read_fifo(struct jz4740_ep *ep, struct jz4740_request *req)
-+{
-+ struct jz4740_udc *dev = ep->dev;
-+ uint32_t csr;
-+ unsigned count, is_short;
-+ uint32_t physaddr = virt_to_phys((void *)req->req.buf);
-+
-+ if (use_dma) {
-+ uint32_t dma_count;
-+
-+ /* DMA interrupt generated due to a packet less than MAXP loaded into the FIFO */
-+
-+ dma_count = usb_readl(dev, ep->reg_addr) - physaddr;
-+ req->req.actual += dma_count;
-+
-+ /* Disable interrupt and DMA */
-+ pio_irq_disable(ep);
-+ usb_writel(dev, JZ_REG_UDC_CNTL2, 0);
-+
-+ /* Read all bytes from this packet */
-+ count = usb_readw(dev, JZ_REG_UDC_OUTCOUNT);
-+ count = read_packet(ep, req, count);
-+
-+ if (count) {
-+ /* If the last packet is greater than zero, clear OUTPKTRDY manually */
-+ usb_clearb(dev, ep->csr, USB_OUTCSR_OUTPKTRDY);
-+ }
-+ done(ep, req, 0);
-+
-+ if (!list_empty(&ep->queue)) {
-+ /* advance the request queue */
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+ kick_dma(ep, req);
-+ }
-+
-+ return 1;
-+ }
-+
-+ /*
-+ * PIO mode handling starts here ...
-+ */
-+
-+ /* make sure there's a packet in the FIFO. */
-+ csr = usb_readb(dev, ep->csr);
-+ if (!(csr & USB_OUTCSR_OUTPKTRDY)) {
-+ DEBUG("%s: Packet NOT ready!\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ /* read all bytes from this packet */
-+ count = usb_readw(dev, JZ_REG_UDC_OUTCOUNT);
-+
-+ is_short = (count < ep->ep.maxpacket);
-+
-+ count = read_packet(ep, req, count);
-+
-+ DEBUG("read %s %02x, %d bytes%s req %p %d/%d\n",
-+ ep->ep.name, csr, count,
-+ is_short ? "/S" : "", req, req->req.actual, req->req.length);
-+
-+ /* Clear OutPktRdy */
-+ usb_clearb(dev, ep->csr, USB_OUTCSR_OUTPKTRDY);
-+
-+ /* completion */
-+ if (is_short || req->req.actual == req->req.length) {
-+ done(ep, req, 0);
-+
-+ if (list_empty(&ep->queue))
-+ pio_irq_disable(ep);
-+ return 1;
-+ }
-+
-+ /* finished that packet. the next one may be waiting... */
-+ return 0;
-+}
-+
-+/*
-+ * done - retire a request; caller blocked irqs
-+ * INDEX register is preserved to keep same
-+ */
-+static void done(struct jz4740_ep *ep, struct jz4740_request *req, int status)
-+{
-+ unsigned int stopped = ep->stopped;
-+ uint32_t index;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, ep);
-+ list_del_init(&req->queue);
-+
-+ if (likely(req->req.status == -EINPROGRESS))
-+ req->req.status = status;
-+ else
-+ status = req->req.status;
-+
-+ if (status && status != -ESHUTDOWN)
-+ DEBUG("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 */
-+ ep->stopped = 1;
-+ /* Read current index (completion may modify it) */
-+ index = usb_readb(ep->dev, JZ_REG_UDC_INDEX);
-+ spin_unlock_irqrestore(&ep->dev->lock, ep->dev->lock_flags);
-+
-+ req->req.complete(&ep->ep, &req->req);
-+
-+ spin_lock_irqsave(&ep->dev->lock, ep->dev->lock_flags);
-+ /* Restore index */
-+ jz_udc_set_index(ep->dev, index);
-+ ep->stopped = stopped;
-+}
-+
-+/** Enable EP interrupt */
-+static void pio_irq_enable(struct jz4740_ep *ep)
-+{
-+ uint8_t index = ep_index(ep);
-+ struct jz4740_udc *dev = ep->dev;
-+ DEBUG("%s: EP%d %s\n", __FUNCTION__, ep_index(ep), ep_is_in(ep) ? "IN": "OUT");
-+
-+ if (ep_is_in(ep)) {
-+ switch (index) {
-+ case 1:
-+ case 2:
-+ usb_setw(dev, JZ_REG_UDC_INTRINE, BIT(index));
-+ dev->in_mask |= BIT(index);
-+ break;
-+ default:
-+ DEBUG("Unknown endpoint: %d\n", index);
-+ break;
-+ }
-+ }
-+ else {
-+ switch (index) {
-+ case 1:
-+ usb_setw(dev, JZ_REG_UDC_INTROUTE, BIT(index));
-+ dev->out_mask |= BIT(index);
-+ break;
-+ default:
-+ DEBUG("Unknown endpoint: %d\n", index);
-+ break;
-+ }
-+ }
-+}
-+
-+/** Disable EP interrupt */
-+static void pio_irq_disable(struct jz4740_ep *ep)
-+{
-+ uint8_t index = ep_index(ep);
-+ struct jz4740_udc *dev = ep->dev;
-+
-+ DEBUG("%s: EP%d %s\n", __FUNCTION__, ep_index(ep), ep_is_in(ep) ? "IN": "OUT");
-+
-+ if (ep_is_in(ep)) {
-+ switch (ep_index(ep)) {
-+ case 1:
-+ case 2:
-+ usb_clearw(ep->dev, JZ_REG_UDC_INTRINE, BIT(index));
-+ dev->in_mask &= ~BIT(index);
-+ break;
-+ default:
-+ DEBUG("Unknown endpoint: %d\n", index);
-+ break;
-+ }
-+ }
-+ else {
-+ switch (ep_index(ep)) {
-+ case 1:
-+ usb_clearw(ep->dev, JZ_REG_UDC_INTROUTE, BIT(index));
-+ dev->out_mask &= ~BIT(index);
-+ break;
-+ default:
-+ DEBUG("Unknown endpoint: %d\n", index);
-+ break;
-+ }
-+ }
-+}
-+
-+/*
-+ * nuke - dequeue ALL requests
-+ */
-+static void nuke(struct jz4740_ep *ep, int status)
-+{
-+ struct jz4740_request *req;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, ep);
-+
-+ /* Flush FIFO */
-+ flush(ep);
-+
-+ /* called with irqs blocked */
-+ while (!list_empty(&ep->queue)) {
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+ done(ep, req, status);
-+ }
-+
-+ /* Disable IRQ if EP is enabled (has descriptor) */
-+ if (ep->desc)
-+ pio_irq_disable(ep);
-+}
-+
-+/** Flush EP FIFO
-+ * NOTE: INDEX register must be set before this call
-+ */
-+static void flush(struct jz4740_ep *ep)
-+{
-+ DEBUG("%s: %s\n", __FUNCTION__, ep->ep.name);
-+
-+ switch (ep->type) {
-+ case ep_bulk_in:
-+ case ep_interrupt:
-+ usb_setb(ep->dev, ep->csr, USB_INCSR_FF);
-+ break;
-+ case ep_bulk_out:
-+ usb_setb(ep->dev, ep->csr, USB_OUTCSR_FF);
-+ break;
-+ case ep_control:
-+ break;
-+ }
-+}
-+
-+/**
-+ * jz4740_in_epn - handle IN interrupt
-+ */
-+static void jz4740_in_epn(struct jz4740_udc *dev, uint32_t ep_idx, uint32_t intr)
-+{
-+ uint32_t csr;
-+ struct jz4740_ep *ep = &dev->ep[ep_idx + 1];
-+ struct jz4740_request *req;
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ jz_udc_set_index(dev, ep_index(ep));
-+
-+ csr = usb_readb(dev, ep->csr);
-+ DEBUG("%s: %d, csr %x\n", __FUNCTION__, ep_idx, csr);
-+
-+ if (csr & USB_INCSR_SENTSTALL) {
-+ DEBUG("USB_INCSR_SENTSTALL\n");
-+ usb_clearb(dev, ep->csr, USB_INCSR_SENTSTALL);
-+ return;
-+ }
-+
-+ if (!ep->desc) {
-+ DEBUG("%s: NO EP DESC\n", __FUNCTION__);
-+ return;
-+ }
-+
-+ if (list_empty(&ep->queue))
-+ req = 0;
-+ else
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+
-+ DEBUG("req: %p\n", req);
-+
-+ if (!req)
-+ return;
-+
-+ write_fifo(ep, req);
-+}
-+
-+/*
-+ * Bulk OUT (recv)
-+ */
-+static void jz4740_out_epn(struct jz4740_udc *dev, uint32_t ep_idx, uint32_t intr)
-+{
-+ struct jz4740_ep *ep = &dev->ep[ep_idx];
-+ struct jz4740_request *req;
-+
-+ DEBUG("%s: %d\n", __FUNCTION__, ep_idx);
-+
-+ jz_udc_set_index(dev, ep_index(ep));
-+ if (ep->desc) {
-+ uint32_t csr;
-+
-+ if (use_dma) {
-+ /* DMA starts here ... */
-+ if (list_empty(&ep->queue))
-+ req = 0;
-+ else
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+
-+ if (req)
-+ read_fifo(ep, req);
-+ return;
-+ }
-+
-+ /*
-+ * PIO mode starts here ...
-+ */
-+
-+ while ((csr = usb_readb(dev, ep->csr)) &
-+ (USB_OUTCSR_OUTPKTRDY | USB_OUTCSR_SENTSTALL)) {
-+ DEBUG("%s: %x\n", __FUNCTION__, csr);
-+
-+ if (csr & USB_OUTCSR_SENTSTALL) {
-+ DEBUG("%s: stall sent, flush fifo\n",
-+ __FUNCTION__);
-+ /* usb_set(USB_OUT_CSR1_FIFO_FLUSH, ep->csr1); */
-+ flush(ep);
-+ } else if (csr & USB_OUTCSR_OUTPKTRDY) {
-+ if (list_empty(&ep->queue))
-+ req = 0;
-+ else
-+ req =
-+ list_entry(ep->queue.next,
-+ struct jz4740_request,
-+ queue);
-+
-+ if (!req) {
-+ DEBUG("%s: NULL REQ %d\n",
-+ __FUNCTION__, ep_idx);
-+ break;
-+ } else {
-+ read_fifo(ep, req);
-+ }
-+ }
-+ }
-+ } else {
-+ /* Throw packet away.. */
-+ DEBUG("%s: ep %p ep_indx %d No descriptor?!?\n", __FUNCTION__, ep, ep_idx);
-+ flush(ep);
-+ }
-+}
-+
-+/** Halt specific EP
-+ * Return 0 if success
-+ * NOTE: Sets INDEX register to EP !
-+ */
-+static int jz4740_set_halt(struct usb_ep *_ep, int value)
-+{
-+ struct jz4740_udc *dev;
-+ struct jz4740_ep *ep;
-+ unsigned long flags;
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (unlikely(!_ep || (!ep->desc && ep->type != ep_control))) {
-+ DEBUG("%s, bad ep\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ dev = ep->dev;
-+
-+ spin_lock_irqsave(&dev->lock, flags);
-+
-+ jz_udc_select_ep(ep);
-+
-+ DEBUG("%s, ep %d, val %d\n", __FUNCTION__, ep_index(ep), value);
-+
-+ if (ep_index(ep) == 0) {
-+ /* EP0 */
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_SENDSTALL);
-+ } else if (ep_is_in(ep)) {
-+ uint32_t csr = usb_readb(dev, ep->csr);
-+ if (value && ((csr & USB_INCSR_FFNOTEMPT)
-+ || !list_empty(&ep->queue))) {
-+ /*
-+ * Attempts to halt IN endpoints will fail (returning -EAGAIN)
-+ * if any transfer requests are still queued, or if the controller
-+ * FIFO still holds bytes that the host hasnÂ’t collected.
-+ */
-+ spin_unlock_irqrestore(&dev->lock, flags);
-+ DEBUG
-+ ("Attempt to halt IN endpoint failed (returning -EAGAIN) %d %d\n",
-+ (csr & USB_INCSR_FFNOTEMPT),
-+ !list_empty(&ep->queue));
-+ return -EAGAIN;
-+ }
-+ flush(ep);
-+ if (value) {
-+ usb_setb(dev, ep->csr, USB_INCSR_SENDSTALL);
-+ }
-+ else {
-+ usb_clearb(dev, ep->csr, USB_INCSR_SENDSTALL);
-+ usb_setb(dev, ep->csr, USB_INCSR_CDT);
-+ }
-+ } else {
-+
-+ flush(ep);
-+ if (value) {
-+ usb_setb(dev, ep->csr, USB_OUTCSR_SENDSTALL);
-+ }
-+ else {
-+ usb_clearb(dev, ep->csr, USB_OUTCSR_SENDSTALL);
-+ usb_setb(dev, ep->csr, USB_OUTCSR_CDT);
-+ }
-+ }
-+
-+ if (value) {
-+ ep->stopped = 1;
-+ } else {
-+ ep->stopped = 0;
-+ }
-+
-+ spin_unlock_irqrestore(&dev->lock, flags);
-+
-+ DEBUG("%s %s halted\n", _ep->name, value == 0 ? "NOT" : "IS");
-+
-+ return 0;
-+}
-+
-+
-+static int jz4740_ep_enable(struct usb_ep *_ep,
-+ const struct usb_endpoint_descriptor *desc)
-+{
-+ struct jz4740_ep *ep;
-+ struct jz4740_udc *dev;
-+ unsigned long flags;
-+ uint32_t max, csrh = 0;
-+
-+ DEBUG("%s: trying to enable %s\n", __FUNCTION__, _ep->name);
-+
-+ if (!_ep || !desc)
-+ return -EINVAL;
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (ep->desc || ep->type == ep_control
-+ || desc->bDescriptorType != USB_DT_ENDPOINT
-+ || ep->bEndpointAddress != desc->bEndpointAddress) {
-+ DEBUG("%s, bad ep or descriptor\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ /* xfer types must match, except that interrupt ~= bulk */
-+ if (ep->bmAttributes != desc->bmAttributes
-+ && ep->bmAttributes != USB_ENDPOINT_XFER_BULK
-+ && desc->bmAttributes != USB_ENDPOINT_XFER_INT) {
-+ DEBUG("%s, %s type mismatch\n", __FUNCTION__, _ep->name);
-+ return -EINVAL;
-+ }
-+
-+ dev = ep->dev;
-+ if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) {
-+ DEBUG("%s, bogus device state\n", __FUNCTION__);
-+ return -ESHUTDOWN;
-+ }
-+
-+ max = le16_to_cpu(desc->wMaxPacketSize);
-+
-+ spin_lock_irqsave(&ep->dev->lock, flags);
-+
-+ /* Configure the endpoint */
-+ jz_udc_set_index(dev, desc->bEndpointAddress & 0x0F);
-+ if (ep_is_in(ep)) {
-+ usb_writew(dev, JZ_REG_UDC_INMAXP, max);
-+ switch (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
-+ case USB_ENDPOINT_XFER_BULK:
-+ case USB_ENDPOINT_XFER_INT:
-+ csrh &= ~USB_INCSRH_ISO;
-+ break;
-+ case USB_ENDPOINT_XFER_ISOC:
-+ csrh |= USB_INCSRH_ISO;
-+ break;
-+ }
-+ usb_writeb(dev, JZ_REG_UDC_INCSRH, csrh);
-+ }
-+ else {
-+ usb_writew(dev, JZ_REG_UDC_OUTMAXP, max);
-+ switch (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
-+ case USB_ENDPOINT_XFER_BULK:
-+ csrh &= ~USB_OUTCSRH_ISO;
-+ break;
-+ case USB_ENDPOINT_XFER_INT:
-+ csrh &= ~USB_OUTCSRH_ISO;
-+ csrh |= USB_OUTCSRH_DNYT;
-+ break;
-+ case USB_ENDPOINT_XFER_ISOC:
-+ csrh |= USB_OUTCSRH_ISO;
-+ break;
-+ }
-+ usb_writeb(dev, JZ_REG_UDC_OUTCSRH, csrh);
-+ }
-+
-+
-+ ep->stopped = 0;
-+ ep->desc = desc;
-+ ep->pio_irqs = 0;
-+ ep->ep.maxpacket = max;
-+
-+ spin_unlock_irqrestore(&ep->dev->lock, flags);
-+
-+ /* Reset halt state (does flush) */
-+ jz4740_set_halt(_ep, 0);
-+
-+ DEBUG("%s: enabled %s\n", __FUNCTION__, _ep->name);
-+
-+ return 0;
-+}
-+
-+/** Disable EP
-+ * NOTE: Sets INDEX register
-+ */
-+static int jz4740_ep_disable(struct usb_ep *_ep)
-+{
-+ struct jz4740_ep *ep;
-+ unsigned long flags;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, _ep);
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (!_ep || !ep->desc) {
-+ DEBUG("%s, %s not enabled\n", __FUNCTION__,
-+ _ep ? ep->ep.name : NULL);
-+ return -EINVAL;
-+ }
-+
-+ spin_lock_irqsave(&ep->dev->lock, flags);
-+
-+ jz_udc_select_ep(ep);
-+
-+ /* Nuke all pending requests (does flush) */
-+ nuke(ep, -ESHUTDOWN);
-+
-+ /* Disable ep IRQ */
-+ pio_irq_disable(ep);
-+
-+ ep->desc = 0;
-+ ep->stopped = 1;
-+
-+ spin_unlock_irqrestore(&ep->dev->lock, flags);
-+
-+ DEBUG("%s: disabled %s\n", __FUNCTION__, _ep->name);
-+ return 0;
-+}
-+
-+static struct usb_request *jz4740_alloc_request(struct usb_ep *ep, gfp_t gfp_flags)
-+{
-+ struct jz4740_request *req;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, ep);
-+
-+ req = kzalloc(sizeof(*req), gfp_flags);
-+ if (!req)
-+ return 0;
-+
-+ INIT_LIST_HEAD(&req->queue);
-+
-+ return &req->req;
-+}
-+
-+static void jz4740_free_request(struct usb_ep *ep, struct usb_request *_req)
-+{
-+ struct jz4740_request *req;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, ep);
-+
-+ req = container_of(_req, struct jz4740_request, req);
-+ WARN_ON(!list_empty(&req->queue));
-+ kfree(req);
-+}
-+
-+/*--------------------------------------------------------------------*/
-+
-+/** Queue one request
-+ * Kickstart transfer if needed
-+ * NOTE: Sets INDEX register
-+ */
-+static int jz4740_queue(struct usb_ep *_ep, struct usb_request *_req,
-+ gfp_t gfp_flags)
-+{
-+ struct jz4740_request *req;
-+ struct jz4740_ep *ep;
-+ struct jz4740_udc *dev;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, _ep);
-+
-+ req = container_of(_req, struct jz4740_request, req);
-+ if (unlikely
-+ (!_req || !_req->complete || !_req->buf
-+ || !list_empty(&req->queue))) {
-+ DEBUG("%s, bad params\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (unlikely(!_ep || (!ep->desc && ep->type != ep_control))) {
-+ DEBUG("%s, bad ep\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ dev = ep->dev;
-+ if (unlikely(!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN)) {
-+ DEBUG("%s, bogus device state %p\n", __FUNCTION__, dev->driver);
-+ return -ESHUTDOWN;
-+ }
-+
-+ DEBUG("%s queue req %p, len %d buf %p\n", _ep->name, _req, _req->length,
-+ _req->buf);
-+
-+ spin_lock_irqsave(&dev->lock, dev->lock_flags);
-+
-+ _req->status = -EINPROGRESS;
-+ _req->actual = 0;
-+
-+ /* kickstart this i/o queue? */
-+ DEBUG("Add to %d Q %d %d\n", ep_index(ep), list_empty(&ep->queue),
-+ ep->stopped);
-+ if (list_empty(&ep->queue) && likely(!ep->stopped)) {
-+ uint32_t csr;
-+
-+ if (unlikely(ep_index(ep) == 0)) {
-+ /* EP0 */
-+ list_add_tail(&req->queue, &ep->queue);
-+ jz4740_ep0_kick(dev, ep);
-+ req = 0;
-+ } else if (use_dma) {
-+ /* DMA */
-+ kick_dma(ep, req);
-+ }
-+ /* PIO */
-+ else if (ep_is_in(ep)) {
-+ /* EP1 & EP2 */
-+ jz_udc_set_index(dev, ep_index(ep));
-+ csr = usb_readb(dev, ep->csr);
-+ pio_irq_enable(ep);
-+ if (!(csr & USB_INCSR_FFNOTEMPT)) {
-+ if (write_fifo(ep, req) == 1)
-+ req = 0;
-+ }
-+ } else {
-+ /* EP1 */
-+ jz_udc_set_index(dev, ep_index(ep));
-+ csr = usb_readb(dev, ep->csr);
-+ pio_irq_enable(ep);
-+ if (csr & USB_OUTCSR_OUTPKTRDY) {
-+ if (read_fifo(ep, req) == 1)
-+ req = 0;
-+ }
-+ }
-+ }
-+
-+ /* pio or dma irq handler advances the queue. */
-+ if (likely(req != 0))
-+ list_add_tail(&req->queue, &ep->queue);
-+
-+ spin_unlock_irqrestore(&dev->lock, dev->lock_flags);
-+
-+ return 0;
-+}
-+
-+/* dequeue JUST ONE request */
-+static int jz4740_dequeue(struct usb_ep *_ep, struct usb_request *_req)
-+{
-+ struct jz4740_ep *ep;
-+ struct jz4740_request *req;
-+ unsigned long flags;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, _ep);
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (!_ep || ep->type == ep_control)
-+ return -EINVAL;
-+
-+ spin_lock_irqsave(&ep->dev->lock, 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) {
-+ spin_unlock_irqrestore(&ep->dev->lock, flags);
-+ return -EINVAL;
-+ }
-+ done(ep, req, -ECONNRESET);
-+
-+ spin_unlock_irqrestore(&ep->dev->lock, flags);
-+ return 0;
-+}
-+
-+/** Return bytes in EP FIFO
-+ * NOTE: Sets INDEX register to EP
-+ */
-+static int jz4740_fifo_status(struct usb_ep *_ep)
-+{
-+ uint32_t csr;
-+ int count = 0;
-+ struct jz4740_ep *ep;
-+ unsigned long flags;
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (!_ep) {
-+ DEBUG("%s, bad ep\n", __FUNCTION__);
-+ return -ENODEV;
-+ }
-+
-+ DEBUG("%s, %d\n", __FUNCTION__, ep_index(ep));
-+
-+ /* LPD can't report unclaimed bytes from IN fifos */
-+ if (ep_is_in(ep))
-+ return -EOPNOTSUPP;
-+
-+ spin_lock_irqsave(&ep->dev->lock, flags);
-+ jz_udc_set_index(ep->dev, ep_index(ep));
-+
-+ csr = usb_readb(ep->dev, ep->csr);
-+ if (ep->dev->gadget.speed != USB_SPEED_UNKNOWN ||
-+ csr & 0x1) {
-+ count = usb_readw(ep->dev, JZ_REG_UDC_OUTCOUNT);
-+ }
-+
-+ spin_unlock_irqrestore(&ep->dev->lock, flags);
-+
-+ return count;
-+}
-+
-+/** Flush EP FIFO
-+ * NOTE: Sets INDEX register to EP
-+ */
-+static void jz4740_fifo_flush(struct usb_ep *_ep)
-+{
-+ struct jz4740_ep *ep;
-+ unsigned long flags;
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (unlikely(!_ep || (!ep->desc && ep->type == ep_control))) {
-+ DEBUG("%s, bad ep\n", __FUNCTION__);
-+ return;
-+ }
-+
-+ spin_lock_irqsave(&ep->dev->lock, flags);
-+
-+ jz_udc_set_index(ep->dev, ep_index(ep));
-+ flush(ep);
-+
-+ spin_unlock_irqrestore(&ep->dev->lock, flags);
-+}
-+
-+/****************************************************************/
-+/* End Point 0 related functions */
-+/****************************************************************/
-+
-+/* return: 0 = still running, 1 = completed, negative = errno */
-+static int write_fifo_ep0(struct jz4740_ep *ep, struct jz4740_request *req)
-+{
-+ uint32_t max;
-+ unsigned count;
-+ int is_last;
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+ max = ep_maxpacket(ep);
-+
-+ count = write_packet(ep, req, max);
-+
-+ /* last packet is usually short (or a zlp) */
-+ if (unlikely(count != max))
-+ is_last = 1;
-+ else {
-+ if (likely(req->req.length != req->req.actual) || req->req.zero)
-+ is_last = 0;
-+ else
-+ is_last = 1;
-+ }
-+
-+ DEBUG_EP0("%s: wrote %s %d bytes%s %d left %p\n", __FUNCTION__,
-+ ep->ep.name, count,
-+ is_last ? "/L" : "", req->req.length - req->req.actual, req);
-+
-+ /* requests complete when all IN data is in the FIFO */
-+ if (is_last) {
-+ done(ep, req, 0);
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+static inline int jz4740_fifo_read(struct jz4740_ep *ep,
-+ unsigned char *cp, int max)
-+{
-+ int bytes;
-+ int count = usb_readw(ep->dev, JZ_REG_UDC_OUTCOUNT);
-+
-+ if (count > max)
-+ count = max;
-+ bytes = count;
-+ while (count--)
-+ *cp++ = usb_readb(ep->dev, ep->fifo);
-+
-+ return bytes;
-+}
-+
-+static inline void jz4740_fifo_write(struct jz4740_ep *ep,
-+ unsigned char *cp, int count)
-+{
-+ DEBUG("fifo_write: %d %d\n", ep_index(ep), count);
-+ while (count--)
-+ usb_writeb(ep->dev, ep->fifo, *cp++);
-+}
-+
-+static int read_fifo_ep0(struct jz4740_ep *ep, struct jz4740_request *req)
-+{
-+ struct jz4740_udc *dev = ep->dev;
-+ uint32_t csr;
-+ uint8_t *buf;
-+ unsigned bufferspace, count, is_short;
-+
-+ DEBUG_EP0("%s\n", __FUNCTION__);
-+
-+ csr = usb_readb(dev, JZ_REG_UDC_CSR0);
-+ if (!(csr & USB_CSR0_OUTPKTRDY))
-+ return 0;
-+
-+ buf = req->req.buf + req->req.actual;
-+ prefetchw(buf);
-+ bufferspace = req->req.length - req->req.actual;
-+
-+ /* read all bytes from this packet */
-+ if (likely(csr & USB_CSR0_OUTPKTRDY)) {
-+ count = usb_readw(dev, JZ_REG_UDC_OUTCOUNT);
-+ req->req.actual += min(count, bufferspace);
-+ } else /* zlp */
-+ count = 0;
-+
-+ is_short = (count < ep->ep.maxpacket);
-+ DEBUG_EP0("read %s %02x, %d bytes%s req %p %d/%d\n",
-+ ep->ep.name, csr, count,
-+ is_short ? "/S" : "", req, req->req.actual, req->req.length);
-+
-+ while (likely(count-- != 0)) {
-+ uint8_t byte = (uint8_t)usb_readl(dev, ep->fifo);
-+
-+ 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)
-+ DEBUG_EP0("%s overflow %d\n", ep->ep.name,
-+ count);
-+ req->req.status = -EOVERFLOW;
-+ } else {
-+ *buf++ = byte;
-+ bufferspace--;
-+ }
-+ }
-+
-+ /* completion */
-+ if (is_short || req->req.actual == req->req.length) {
-+ done(ep, req, 0);
-+ return 1;
-+ }
-+
-+ /* finished that packet. the next one may be waiting... */
-+ return 0;
-+}
-+
-+/**
-+ * udc_set_address - set the USB address for this device
-+ * @address:
-+ *
-+ * Called from control endpoint function after it decodes a set address setup packet.
-+ */
-+static void udc_set_address(struct jz4740_udc *dev, unsigned char address)
-+{
-+ DEBUG_EP0("%s: %d\n", __FUNCTION__, address);
-+
-+ dev->usb_address = address;
-+ usb_writeb(dev, JZ_REG_UDC_FADDR, address);
-+}
-+
-+/*
-+ * DATA_STATE_RECV (USB_CSR0_OUTPKTRDY)
-+ * - if error
-+ * set USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND | USB_CSR0_SENDSTALL bits
-+ * - else
-+ * set USB_CSR0_SVDOUTPKTRDY bit
-+ if last set USB_CSR0_DATAEND bit
-+ */
-+static void jz4740_ep0_out(struct jz4740_udc *dev, uint32_t csr, int kickstart)
-+{
-+ struct jz4740_request *req;
-+ struct jz4740_ep *ep = &dev->ep[0];
-+ int ret;
-+
-+ DEBUG_EP0("%s: %x\n", __FUNCTION__, csr);
-+
-+ if (list_empty(&ep->queue))
-+ req = 0;
-+ else
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+
-+ if (req) {
-+ if (req->req.length == 0) {
-+ DEBUG_EP0("ZERO LENGTH OUT!\n");
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND));
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ return;
-+ } else if (kickstart) {
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY));
-+ return;
-+ }
-+ ret = read_fifo_ep0(ep, req);
-+ if (ret) {
-+ /* Done! */
-+ DEBUG_EP0("%s: finished, waiting for status\n",
-+ __FUNCTION__);
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND));
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ } else {
-+ /* Not done yet.. */
-+ DEBUG_EP0("%s: not finished\n", __FUNCTION__);
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_SVDOUTPKTRDY);
-+ }
-+ } else {
-+ DEBUG_EP0("NO REQ??!\n");
-+ }
-+}
-+
-+/*
-+ * DATA_STATE_XMIT
-+ */
-+static int jz4740_ep0_in(struct jz4740_udc *dev, uint32_t csr)
-+{
-+ struct jz4740_request *req;
-+ struct jz4740_ep *ep = &dev->ep[0];
-+ int ret, need_zlp = 0;
-+
-+ DEBUG_EP0("%s: %x\n", __FUNCTION__, csr);
-+
-+ if (list_empty(&ep->queue))
-+ req = 0;
-+ else
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+
-+ if (!req) {
-+ DEBUG_EP0("%s: NULL REQ\n", __FUNCTION__);
-+ return 0;
-+ }
-+
-+ if (req->req.length == 0) {
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_INPKTRDY | USB_CSR0_DATAEND));
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ return 1;
-+ }
-+
-+ if (req->req.length - req->req.actual == EP0_MAXPACKETSIZE) {
-+ /* Next write will end with the packet size, */
-+ /* so we need zero-length-packet */
-+ need_zlp = 1;
-+ }
-+
-+ ret = write_fifo_ep0(ep, req);
-+
-+ if (ret == 1 && !need_zlp) {
-+ /* Last packet */
-+ DEBUG_EP0("%s: finished, waiting for status\n", __FUNCTION__);
-+
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_INPKTRDY | USB_CSR0_DATAEND));
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ } else {
-+ DEBUG_EP0("%s: not finished\n", __FUNCTION__);
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_INPKTRDY);
-+ }
-+
-+ if (need_zlp) {
-+ DEBUG_EP0("%s: Need ZLP!\n", __FUNCTION__);
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_INPKTRDY);
-+ dev->ep0state = DATA_STATE_NEED_ZLP;
-+ }
-+
-+ return 1;
-+}
-+
-+static int jz4740_handle_get_status(struct jz4740_udc *dev,
-+ struct usb_ctrlrequest *ctrl)
-+{
-+ struct jz4740_ep *ep0 = &dev->ep[0];
-+ struct jz4740_ep *qep;
-+ int reqtype = (ctrl->bRequestType & USB_RECIP_MASK);
-+ uint16_t val = 0;
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ if (reqtype == USB_RECIP_INTERFACE) {
-+ /* This is not supported.
-+ * And according to the USB spec, this one does nothing..
-+ * Just return 0
-+ */
-+ DEBUG_SETUP("GET_STATUS: USB_RECIP_INTERFACE\n");
-+ } else if (reqtype == USB_RECIP_DEVICE) {
-+ DEBUG_SETUP("GET_STATUS: USB_RECIP_DEVICE\n");
-+ val |= (1 << 0); /* Self powered */
-+ /*val |= (1<<1); *//* Remote wakeup */
-+ } else if (reqtype == USB_RECIP_ENDPOINT) {
-+ int ep_num = (ctrl->wIndex & ~USB_DIR_IN);
-+
-+ DEBUG_SETUP
-+ ("GET_STATUS: USB_RECIP_ENDPOINT (%d), ctrl->wLength = %d\n",
-+ ep_num, ctrl->wLength);
-+
-+ if (ctrl->wLength > 2 || ep_num > 3)
-+ return -EOPNOTSUPP;
-+
-+ qep = &dev->ep[ep_num];
-+ if (ep_is_in(qep) != ((ctrl->wIndex & USB_DIR_IN) ? 1 : 0)
-+ && ep_index(qep) != 0) {
-+ return -EOPNOTSUPP;
-+ }
-+
-+ jz_udc_set_index(dev, ep_index(qep));
-+
-+ /* Return status on next IN token */
-+ switch (qep->type) {
-+ case ep_control:
-+ val =
-+ (usb_readb(dev, qep->csr) & USB_CSR0_SENDSTALL) ==
-+ USB_CSR0_SENDSTALL;
-+ break;
-+ case ep_bulk_in:
-+ case ep_interrupt:
-+ val =
-+ (usb_readb(dev, qep->csr) & USB_INCSR_SENDSTALL) ==
-+ USB_INCSR_SENDSTALL;
-+ break;
-+ case ep_bulk_out:
-+ val =
-+ (usb_readb(dev, qep->csr) & USB_OUTCSR_SENDSTALL) ==
-+ USB_OUTCSR_SENDSTALL;
-+ break;
-+ }
-+
-+ /* Back to EP0 index */
-+ jz_udc_set_index(dev, 0);
-+
-+ DEBUG_SETUP("GET_STATUS, ep: %d (%x), val = %d\n", ep_num,
-+ ctrl->wIndex, val);
-+ } else {
-+ DEBUG_SETUP("Unknown REQ TYPE: %d\n", reqtype);
-+ return -EOPNOTSUPP;
-+ }
-+
-+ /* Clear "out packet ready" */
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_SVDOUTPKTRDY);
-+ /* Put status to FIFO */
-+ jz4740_fifo_write(ep0, (uint8_t *)&val, sizeof(val));
-+ /* Issue "In packet ready" */
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_INPKTRDY | USB_CSR0_DATAEND));
-+
-+ return 0;
-+}
-+
-+/*
-+ * WAIT_FOR_SETUP (OUTPKTRDY)
-+ * - read data packet from EP0 FIFO
-+ * - decode command
-+ * - if error
-+ * set USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND | USB_CSR0_SENDSTALL bits
-+ * - else
-+ * set USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND bits
-+ */
-+static void jz4740_ep0_setup(struct jz4740_udc *dev, uint32_t csr)
-+{
-+ struct jz4740_ep *ep = &dev->ep[0];
-+ struct usb_ctrlrequest ctrl;
-+ int i;
-+
-+ DEBUG_SETUP("%s: %x\n", __FUNCTION__, csr);
-+
-+ /* Nuke all previous transfers */
-+ nuke(ep, -EPROTO);
-+
-+ /* read control req from fifo (8 bytes) */
-+ jz4740_fifo_read(ep, (unsigned char *)&ctrl, 8);
-+
-+ DEBUG_SETUP("SETUP %02x.%02x v%04x i%04x l%04x\n",
-+ ctrl.bRequestType, ctrl.bRequest,
-+ ctrl.wValue, ctrl.wIndex, ctrl.wLength);
-+
-+ /* Set direction of EP0 */
-+ if (likely(ctrl.bRequestType & USB_DIR_IN)) {
-+ ep->bEndpointAddress |= USB_DIR_IN;
-+ } else {
-+ ep->bEndpointAddress &= ~USB_DIR_IN;
-+ }
-+
-+ /* Handle some SETUP packets ourselves */
-+ switch (ctrl.bRequest) {
-+ case USB_REQ_SET_ADDRESS:
-+ if (ctrl.bRequestType != (USB_TYPE_STANDARD | USB_RECIP_DEVICE))
-+ break;
-+
-+ DEBUG_SETUP("USB_REQ_SET_ADDRESS (%d)\n", ctrl.wValue);
-+ udc_set_address(dev, ctrl.wValue);
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND));
-+ return;
-+
-+ case USB_REQ_SET_CONFIGURATION:
-+ if (ctrl.bRequestType != (USB_TYPE_STANDARD | USB_RECIP_DEVICE))
-+ break;
-+
-+ DEBUG_SETUP("USB_REQ_SET_CONFIGURATION (%d)\n", ctrl.wValue);
-+/* usb_setb(JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND));*/
-+
-+ /* Enable RESUME and SUSPEND interrupts */
-+ usb_setb(dev, JZ_REG_UDC_INTRUSBE, (USB_INTR_RESUME | USB_INTR_SUSPEND));
-+ break;
-+
-+ case USB_REQ_SET_INTERFACE:
-+ if (ctrl.bRequestType != (USB_TYPE_STANDARD | USB_RECIP_DEVICE))
-+ break;
-+
-+ DEBUG_SETUP("USB_REQ_SET_INTERFACE (%d)\n", ctrl.wValue);
-+/* usb_setb(JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND));*/
-+ break;
-+
-+ case USB_REQ_GET_STATUS:
-+ if (jz4740_handle_get_status(dev, &ctrl) == 0)
-+ return;
-+
-+ case USB_REQ_CLEAR_FEATURE:
-+ case USB_REQ_SET_FEATURE:
-+ if (ctrl.bRequestType == USB_RECIP_ENDPOINT) {
-+ struct jz4740_ep *qep;
-+ int ep_num = (ctrl.wIndex & 0x0f);
-+
-+ /* Support only HALT feature */
-+ if (ctrl.wValue != 0 || ctrl.wLength != 0
-+ || ep_num > 3 || ep_num < 1)
-+ break;
-+
-+ qep = &dev->ep[ep_num];
-+ spin_unlock(&dev->lock);
-+ if (ctrl.bRequest == USB_REQ_SET_FEATURE) {
-+ DEBUG_SETUP("SET_FEATURE (%d)\n",
-+ ep_num);
-+ jz4740_set_halt(&qep->ep, 1);
-+ } else {
-+ DEBUG_SETUP("CLR_FEATURE (%d)\n",
-+ ep_num);
-+ jz4740_set_halt(&qep->ep, 0);
-+ }
-+ spin_lock(&dev->lock);
-+
-+ jz_udc_set_index(dev, 0);
-+
-+ /* Reply with a ZLP on next IN token */
-+ usb_setb(dev, JZ_REG_UDC_CSR0,
-+ (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND));
-+ return;
-+ }
-+ break;
-+
-+ default:
-+ break;
-+ }
-+
-+ /* gadget drivers see class/vendor specific requests,
-+ * {SET,GET}_{INTERFACE,DESCRIPTOR,CONFIGURATION},
-+ * and more.
-+ */
-+ if (dev->driver) {
-+ /* device-2-host (IN) or no data setup command, process immediately */
-+ spin_unlock(&dev->lock);
-+
-+ i = dev->driver->setup(&dev->gadget, &ctrl);
-+ spin_lock(&dev->lock);
-+
-+ if (unlikely(i < 0)) {
-+ /* setup processing failed, force stall */
-+ DEBUG_SETUP
-+ (" --> ERROR: gadget setup FAILED (stalling), setup returned %d\n",
-+ i);
-+ jz_udc_set_index(dev, 0);
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND | USB_CSR0_SENDSTALL));
-+
-+ /* ep->stopped = 1; */
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ }
-+ else {
-+ DEBUG_SETUP("gadget driver setup ok (%d)\n", ctrl.wLength);
-+/* if (!ctrl.wLength) {
-+ usb_setb(JZ_REG_UDC_CSR0, USB_CSR0_SVDOUTPKTRDY);
-+ }*/
-+ }
-+ }
-+}
-+
-+/*
-+ * DATA_STATE_NEED_ZLP
-+ */
-+static void jz4740_ep0_in_zlp(struct jz4740_udc *dev, uint32_t csr)
-+{
-+ DEBUG_EP0("%s: %x\n", __FUNCTION__, csr);
-+
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_INPKTRDY | USB_CSR0_DATAEND));
-+ dev->ep0state = WAIT_FOR_SETUP;
-+}
-+
-+/*
-+ * handle ep0 interrupt
-+ */
-+static void jz4740_handle_ep0(struct jz4740_udc *dev, uint32_t intr)
-+{
-+ struct jz4740_ep *ep = &dev->ep[0];
-+ uint32_t csr;
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+ /* Set index 0 */
-+ jz_udc_set_index(dev, 0);
-+ csr = usb_readb(dev, JZ_REG_UDC_CSR0);
-+
-+ DEBUG_EP0("%s: csr = %x state = \n", __FUNCTION__, csr);//, state_names[dev->ep0state]);
-+
-+ /*
-+ * if SENT_STALL is set
-+ * - clear the SENT_STALL bit
-+ */
-+ if (csr & USB_CSR0_SENTSTALL) {
-+ DEBUG_EP0("%s: USB_CSR0_SENTSTALL is set: %x\n", __FUNCTION__, csr);
-+ usb_clearb(dev, JZ_REG_UDC_CSR0, USB_CSR0_SENDSTALL | USB_CSR0_SENTSTALL);
-+ nuke(ep, -ECONNABORTED);
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ return;
-+ }
-+
-+ /*
-+ * if a transfer is in progress && INPKTRDY and OUTPKTRDY are clear
-+ * - fill EP0 FIFO
-+ * - if last packet
-+ * - set IN_PKT_RDY | DATA_END
-+ * - else
-+ * set IN_PKT_RDY
-+ */
-+ if (!(csr & (USB_CSR0_INPKTRDY | USB_CSR0_OUTPKTRDY))) {
-+ DEBUG_EP0("%s: INPKTRDY and OUTPKTRDY are clear\n",
-+ __FUNCTION__);
-+
-+ switch (dev->ep0state) {
-+ case DATA_STATE_XMIT:
-+ DEBUG_EP0("continue with DATA_STATE_XMIT\n");
-+ jz4740_ep0_in(dev, csr);
-+ return;
-+ case DATA_STATE_NEED_ZLP:
-+ DEBUG_EP0("continue with DATA_STATE_NEED_ZLP\n");
-+ jz4740_ep0_in_zlp(dev, csr);
-+ return;
-+ default:
-+ /* Stall? */
-+// DEBUG_EP0("Odd state!! state = %s\n",
-+// state_names[dev->ep0state]);
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ /* nuke(ep, 0); */
-+ /* usb_setb(ep->csr, USB_CSR0_SENDSTALL); */
-+// break;
-+ return;
-+ }
-+ }
-+
-+ /*
-+ * if SETUPEND is set
-+ * - abort the last transfer
-+ * - set SERVICED_SETUP_END_BIT
-+ */
-+ if (csr & USB_CSR0_SETUPEND) {
-+ DEBUG_EP0("%s: USB_CSR0_SETUPEND is set: %x\n", __FUNCTION__, csr);
-+
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_SVDSETUPEND);
-+ nuke(ep, 0);
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ }
-+
-+ /*
-+ * if USB_CSR0_OUTPKTRDY is set
-+ * - read data packet from EP0 FIFO
-+ * - decode command
-+ * - if error
-+ * set SVDOUTPKTRDY | DATAEND | SENDSTALL bits
-+ * - else
-+ * set SVDOUTPKTRDY | DATAEND bits
-+ */
-+ if (csr & USB_CSR0_OUTPKTRDY) {
-+
-+ DEBUG_EP0("%s: EP0_OUT_PKT_RDY is set: %x\n", __FUNCTION__,
-+ csr);
-+
-+ switch (dev->ep0state) {
-+ case WAIT_FOR_SETUP:
-+ DEBUG_EP0("WAIT_FOR_SETUP\n");
-+ jz4740_ep0_setup(dev, csr);
-+ break;
-+
-+ case DATA_STATE_RECV:
-+ DEBUG_EP0("DATA_STATE_RECV\n");
-+ jz4740_ep0_out(dev, csr, 0);
-+ break;
-+
-+ default:
-+ /* send stall? */
-+ DEBUG_EP0("strange state!! 2. send stall? state = %d\n",
-+ dev->ep0state);
-+ break;
-+ }
-+ }
-+}
-+
-+static void jz4740_ep0_kick(struct jz4740_udc *dev, struct jz4740_ep *ep)
-+{
-+ uint32_t csr;
-+
-+ jz_udc_set_index(dev, 0);
-+
-+ DEBUG_EP0("%s: %x\n", __FUNCTION__, csr);
-+
-+ /* Clear "out packet ready" */
-+
-+ if (ep_is_in(ep)) {
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_SVDOUTPKTRDY);
-+ csr = usb_readb(dev, JZ_REG_UDC_CSR0);
-+ dev->ep0state = DATA_STATE_XMIT;
-+ jz4740_ep0_in(dev, csr);
-+ } else {
-+ csr = usb_readb(dev, JZ_REG_UDC_CSR0);
-+ dev->ep0state = DATA_STATE_RECV;
-+ jz4740_ep0_out(dev, csr, 1);
-+ }
-+}
-+
-+/** Handle USB RESET interrupt
-+ */
-+static void jz4740_reset_irq(struct jz4740_udc *dev)
-+{
-+ dev->gadget.speed = (usb_readb(dev, JZ_REG_UDC_POWER) & USB_POWER_HSMODE) ?
-+ USB_SPEED_HIGH : USB_SPEED_FULL;
-+
-+ DEBUG_SETUP("%s: address = %d, speed = %s\n", __FUNCTION__, dev->usb_address,
-+ (dev->gadget.speed == USB_SPEED_HIGH) ? "HIGH":"FULL" );
-+}
-+
-+/*
-+ * jz4740 usb device interrupt handler.
-+ */
-+static irqreturn_t jz4740_udc_irq(int irq, void *_dev)
-+{
-+ struct jz4740_udc *dev = _dev;
-+ uint8_t index;
-+
-+ uint32_t intr_usb = usb_readb(dev, JZ_REG_UDC_INTRUSB) & 0x7; /* mask SOF */
-+ uint32_t intr_in = usb_readw(dev, JZ_REG_UDC_INTRIN);
-+ uint32_t intr_out = usb_readw(dev, JZ_REG_UDC_INTROUT);
-+ uint32_t intr_dma = usb_readb(dev, JZ_REG_UDC_INTR);
-+
-+ if (!intr_usb && !intr_in && !intr_out && !intr_dma)
-+ return IRQ_HANDLED;
-+
-+
-+ DEBUG("intr_out=%x intr_in=%x intr_usb=%x\n",
-+ intr_out, intr_in, intr_usb);
-+
-+ spin_lock(&dev->lock);
-+ index = usb_readb(dev, JZ_REG_UDC_INDEX);
-+
-+ /* Check for resume from suspend mode */
-+ if ((intr_usb & USB_INTR_RESUME) &&
-+ (usb_readb(dev, JZ_REG_UDC_INTRUSBE) & USB_INTR_RESUME)) {
-+ DEBUG("USB resume\n");
-+ dev->driver->resume(&dev->gadget); /* We have suspend(), so we must have resume() too. */
-+ }
-+
-+ /* Check for system interrupts */
-+ if (intr_usb & USB_INTR_RESET) {
-+ DEBUG("USB reset\n");
-+ jz4740_reset_irq(dev);
-+ }
-+
-+ /* Check for endpoint 0 interrupt */
-+ if (intr_in & USB_INTR_EP0) {
-+ DEBUG("USB_INTR_EP0 (control)\n");
-+ jz4740_handle_ep0(dev, intr_in);
-+ }
-+
-+ /* Check for Bulk-IN DMA interrupt */
-+ if (intr_dma & 0x1) {
-+ int ep_num;
-+ struct jz4740_ep *ep;
-+ ep_num = (usb_readl(dev, JZ_REG_UDC_CNTL1) >> 4) & 0xf;
-+ ep = &dev->ep[ep_num + 1];
-+ jz_udc_set_index(dev, ep_num);
-+ usb_setb(dev, ep->csr, USB_INCSR_INPKTRDY);
-+/* jz4740_in_epn(dev, ep_num, intr_in);*/
-+ }
-+
-+ /* Check for Bulk-OUT DMA interrupt */
-+ if (intr_dma & 0x2) {
-+ int ep_num;
-+ ep_num = (usb_readl(dev, JZ_REG_UDC_CNTL2) >> 4) & 0xf;
-+ jz4740_out_epn(dev, ep_num, intr_out);
-+ }
-+
-+ /* Check for each configured endpoint interrupt */
-+ if (intr_in & USB_INTR_INEP1) {
-+ DEBUG("USB_INTR_INEP1\n");
-+ jz4740_in_epn(dev, 1, intr_in);
-+ }
-+
-+ if (intr_in & USB_INTR_INEP2) {
-+ DEBUG("USB_INTR_INEP2\n");
-+ jz4740_in_epn(dev, 2, intr_in);
-+ }
-+
-+ if (intr_out & USB_INTR_OUTEP1) {
-+ DEBUG("USB_INTR_OUTEP1\n");
-+ jz4740_out_epn(dev, 1, intr_out);
-+ }
-+
-+ /* Check for suspend mode */
-+ if ((intr_usb & USB_INTR_SUSPEND) &&
-+ (usb_readb(dev, JZ_REG_UDC_INTRUSBE) & USB_INTR_SUSPEND)) {
-+ DEBUG("USB suspend\n");
-+ dev->driver->suspend(&dev->gadget);
-+ /* Host unloaded from us, can do something, such as flushing
-+ the NAND block cache etc. */
-+ }
-+
-+ jz_udc_set_index(dev, index);
-+
-+ spin_unlock(&dev->lock);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/* Common functions - Added by River */
-+static struct jz4740_udc udc_dev;
-+
-+static inline struct jz4740_udc *gadget_to_udc(struct usb_gadget *gadget)
-+{
-+ return container_of(gadget, struct jz4740_udc, gadget);
-+}
-+/* End added */
-+
-+static int jz4740_udc_get_frame(struct usb_gadget *_gadget)
-+{
-+ DEBUG("%s, %p\n", __FUNCTION__, _gadget);
-+ return usb_readw(gadget_to_udc(_gadget), JZ_REG_UDC_FRAME);
-+}
-+
-+static int jz4740_udc_wakeup(struct usb_gadget *_gadget)
-+{
-+ /* host may not have enabled remote wakeup */
-+ /*if ((UDCCS0 & UDCCS0_DRWF) == 0)
-+ return -EHOSTUNREACH;
-+ udc_set_mask_UDCCR(UDCCR_RSM); */
-+ return -ENOTSUPP;
-+}
-+
-+static int jz4740_udc_pullup(struct usb_gadget *_gadget, int on)
-+{
-+ struct jz4740_udc *udc = gadget_to_udc(_gadget);
-+ unsigned long flags;
-+
-+ local_irq_save(flags);
-+
-+ if (on) {
-+ udc->state = UDC_STATE_ENABLE;
-+ udc_enable(udc);
-+ } else {
-+ udc->state = UDC_STATE_DISABLE;
-+ udc_disable(udc);
-+ }
-+
-+ local_irq_restore(flags);
-+
-+ return 0;
-+}
-+
-+
-+static const struct usb_gadget_ops jz4740_udc_ops = {
-+ .get_frame = jz4740_udc_get_frame,
-+ .wakeup = jz4740_udc_wakeup,
-+ .pullup = jz4740_udc_pullup,
-+ /* current versions must always be self-powered */
-+};
-+
-+static struct usb_ep_ops jz4740_ep_ops = {
-+ .enable = jz4740_ep_enable,
-+ .disable = jz4740_ep_disable,
-+
-+ .alloc_request = jz4740_alloc_request,
-+ .free_request = jz4740_free_request,
-+
-+ .queue = jz4740_queue,
-+ .dequeue = jz4740_dequeue,
-+
-+ .set_halt = jz4740_set_halt,
-+ .fifo_status = jz4740_fifo_status,
-+ .fifo_flush = jz4740_fifo_flush,
-+};
-+
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static struct jz4740_udc udc_dev = {
-+ .usb_address = 0,
-+ .gadget = {
-+ .ops = &jz4740_udc_ops,
-+ .ep0 = &udc_dev.ep[0].ep,
-+ .name = "jz-udc",
-+ .dev = {
-+ .init_name = "gadget",
-+ },
-+ },
-+
-+ /* control endpoint */
-+ .ep[0] = {
-+ .ep = {
-+ .name = "ep0",
-+ .ops = &jz4740_ep_ops,
-+ .maxpacket = EP0_MAXPACKETSIZE,
-+ },
-+ .dev = &udc_dev,
-+
-+ .bEndpointAddress = 0,
-+ .bmAttributes = 0,
-+
-+ .type = ep_control,
-+ .fifo = JZ_REG_UDC_EP_FIFO(0),
-+ .csr = JZ_REG_UDC_CSR0,
-+ },
-+
-+ /* bulk out endpoint */
-+ .ep[1] = {
-+ .ep = {
-+ .name = "ep1out-bulk",
-+ .ops = &jz4740_ep_ops,
-+ .maxpacket = EPBULK_MAXPACKETSIZE,
-+ },
-+ .dev = &udc_dev,
-+
-+ .bEndpointAddress = 1,
-+ .bmAttributes = USB_ENDPOINT_XFER_BULK,
-+
-+ .type = ep_bulk_out,
-+ .fifo = JZ_REG_UDC_EP_FIFO(1),
-+ .csr = JZ_REG_UDC_OUTCSR,
-+ },
-+
-+ /* bulk in endpoint */
-+ .ep[2] = {
-+ .ep = {
-+ .name = "ep1in-bulk",
-+ .ops = &jz4740_ep_ops,
-+ .maxpacket = EPBULK_MAXPACKETSIZE,
-+ },
-+ .dev = &udc_dev,
-+
-+ .bEndpointAddress = 1 | USB_DIR_IN,
-+ .bmAttributes = USB_ENDPOINT_XFER_BULK,
-+
-+ .type = ep_bulk_in,
-+ .fifo = JZ_REG_UDC_EP_FIFO(1),
-+ .csr = JZ_REG_UDC_INCSR,
-+ },
-+
-+ /* interrupt in endpoint */
-+ .ep[3] = {
-+ .ep = {
-+ .name = "ep2in-int",
-+ .ops = &jz4740_ep_ops,
-+ .maxpacket = EPINTR_MAXPACKETSIZE,
-+ },
-+ .dev = &udc_dev,
-+
-+ .bEndpointAddress = 2 | USB_DIR_IN,
-+ .bmAttributes = USB_ENDPOINT_XFER_INT,
-+
-+ .type = ep_interrupt,
-+ .fifo = JZ_REG_UDC_EP_FIFO(2),
-+ .csr = JZ_REG_UDC_INCSR,
-+ },
-+};
-+
-+static void gadget_release(struct device *_dev)
-+{
-+}
-+
-+
-+static int __devinit jz4740_udc_probe(struct platform_device *pdev)
-+{
-+ struct jz4740_udc *dev = &udc_dev;
-+ int ret;
-+
-+ spin_lock_init(&dev->lock);
-+ the_controller = dev;
-+
-+ dev->dev = &pdev->dev;
-+ dev_set_name(&dev->gadget.dev, "gadget");
-+ dev->gadget.dev.parent = &pdev->dev;
-+ dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
-+ dev->gadget.dev.release = gadget_release;
-+
-+ ret = device_register(&dev->gadget.dev);
-+ if (ret)
-+ return ret;
-+
-+ dev->clk = clk_get(&pdev->dev, "udc");
-+ if (IS_ERR(dev->clk)) {
-+ ret = PTR_ERR(dev->clk);
-+ dev_err(&pdev->dev, "Failed to get udc clock: %d\n", ret);
-+ goto err_device_unregister;
-+ }
-+
-+ platform_set_drvdata(pdev, dev);
-+
-+ dev->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+
-+ if (!dev->mem) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get mmio memory resource\n");
-+ goto err_clk_put;
-+ }
-+
-+ dev->mem = request_mem_region(dev->mem->start, resource_size(dev->mem), pdev->name);
-+
-+ if (!dev->mem) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to request mmio memory region\n");
-+ goto err_device_unregister;
-+ }
-+
-+ dev->base = ioremap(dev->mem->start, resource_size(dev->mem));
-+
-+ if (!dev->base) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to ioremap mmio memory\n");
-+ goto err_release_mem_region;
-+ }
-+
-+ dev->irq = platform_get_irq(pdev, 0);
-+
-+ ret = request_irq(dev->irq, jz4740_udc_irq, IRQF_DISABLED,
-+ pdev->name, dev);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request irq: %d\n", ret);
-+ goto err_iounmap;
-+ }
-+
-+ udc_disable(dev);
-+ udc_reinit(dev);
-+
-+ return 0;
-+
-+err_iounmap:
-+ iounmap(dev->base);
-+err_release_mem_region:
-+ release_mem_region(dev->mem->start, resource_size(dev->mem));
-+err_clk_put:
-+ clk_put(dev->clk);
-+err_device_unregister:
-+ device_unregister(&dev->gadget.dev);
-+ platform_set_drvdata(pdev, NULL);
-+
-+ the_controller = 0;
-+
-+ return ret;
-+}
-+
-+static int __devexit jz4740_udc_remove(struct platform_device *pdev)
-+{
-+ struct jz4740_udc *dev = platform_get_drvdata(pdev);
-+
-+ if (dev->driver)
-+ return -EBUSY;
-+
-+ udc_disable(dev);
-+
-+ free_irq(dev->irq, dev);
-+ iounmap(dev->base);
-+ release_mem_region(dev->mem->start, resource_size(dev->mem));
-+ clk_put(dev->clk);
-+
-+ platform_set_drvdata(pdev, NULL);
-+ device_unregister(&dev->gadget.dev);
-+ the_controller = NULL;
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+
-+static int jz4740_udc_suspend(struct device *dev)
-+{
-+ struct jz4740_udc *udc = dev_get_drvdata(dev);
-+
-+ if (udc->state == UDC_STATE_ENABLE)
-+ udc_disable(udc);
-+
-+ return 0;
-+}
-+
-+static int jz4740_udc_resume(struct device *dev)
-+{
-+ struct jz4740_udc *udc = dev_get_drvdata(dev);
-+
-+ if (udc->state == UDC_STATE_ENABLE)
-+ udc_enable(udc);
-+
-+ return 0;
-+}
-+
-+static struct dev_pm_ops jz4740_udc_pm_ops = {
-+ .suspend = jz4740_udc_suspend,
-+ .resume = jz4740_udc_resume,
-+};
-+
-+#define JZ4740_UDC_PM_OPS (&jz4740_udc_pm_ops)
-+
-+#else
-+
-+#define JZ4740_UDC_PM_OPS NULL
-+
-+#endif
-+
-+static struct platform_driver udc_driver = {
-+ .probe = jz4740_udc_probe,
-+ .remove = __devexit_p(jz4740_udc_remove),
-+ .driver = {
-+ .name = "jz-udc",
-+ .owner = THIS_MODULE,
-+ .pm = JZ4740_UDC_PM_OPS,
-+ },
-+};
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static int __init udc_init (void)
-+{
-+ 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("JZ4740 USB Device Controller");
-+MODULE_AUTHOR("Wei Jianli <jlwei@ingenic.cn>");
-+MODULE_LICENSE("GPL");
-diff --git a/drivers/usb/gadget/jz4740_udc.h b/drivers/usb/gadget/jz4740_udc.h
-new file mode 100644
-index 0000000..7156768
---- /dev/null
-+++ b/drivers/usb/gadget/jz4740_udc.h
-@@ -0,0 +1,100 @@
-+/*
-+ * linux/drivers/usb/gadget/jz4740_udc.h
-+ *
-+ * Ingenic JZ4740 on-chip high speed USB device controller
-+ *
-+ * Copyright (C) 2006 Ingenic Semiconductor Inc.
-+ * Author: <jlwei@ingenic.cn>
-+ *
-+ * 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 __USB_GADGET_JZ4740_H__
-+#define __USB_GADGET_JZ4740_H__
-+
-+/*-------------------------------------------------------------------------*/
-+
-+// Max packet size
-+#define EP0_MAXPACKETSIZE 64
-+#define EPBULK_MAXPACKETSIZE 512
-+#define EPINTR_MAXPACKETSIZE 64
-+
-+#define UDC_MAX_ENDPOINTS 4
-+
-+/*-------------------------------------------------------------------------*/
-+
-+typedef enum ep_type {
-+ ep_control, ep_bulk_in, ep_bulk_out, ep_interrupt
-+} ep_type_t;
-+
-+struct jz4740_ep {
-+ struct usb_ep ep;
-+ struct jz4740_udc *dev;
-+
-+ const struct usb_endpoint_descriptor *desc;
-+ unsigned long pio_irqs;
-+
-+ uint8_t stopped;
-+ uint8_t bEndpointAddress;
-+ uint8_t bmAttributes;
-+
-+ ep_type_t type;
-+ size_t fifo;
-+ u32 csr;
-+
-+ uint32_t reg_addr;
-+ struct list_head queue;
-+};
-+
-+struct jz4740_request {
-+ struct usb_request req;
-+ struct list_head queue;
-+};
-+
-+enum ep0state {
-+ WAIT_FOR_SETUP, /* between STATUS ack and SETUP report */
-+ DATA_STATE_XMIT, /* data tx stage */
-+ DATA_STATE_NEED_ZLP, /* data tx zlp stage */
-+ WAIT_FOR_OUT_STATUS, /* status stages */
-+ DATA_STATE_RECV, /* data rx stage */
-+};
-+
-+/* For function binding with UDC Disable - Added by River */
-+typedef enum {
-+ UDC_STATE_ENABLE = 0,
-+ UDC_STATE_DISABLE,
-+}udc_state_t;
-+
-+struct jz4740_udc {
-+ struct usb_gadget gadget;
-+ struct usb_gadget_driver *driver;
-+ struct device *dev;
-+ spinlock_t lock;
-+ unsigned long lock_flags;
-+
-+ enum ep0state ep0state;
-+ struct jz4740_ep ep[UDC_MAX_ENDPOINTS];
-+
-+ unsigned char usb_address;
-+
-+ udc_state_t state;
-+
-+ struct resource *mem;
-+ void __iomem *base;
-+ int irq;
-+ uint32_t in_mask;
-+ uint32_t out_mask;
-+
-+ struct clk *clk;
-+};
-+
-+extern struct jz4740_udc *the_controller;
-+
-+#define ep_is_in(EP) (((EP)->bEndpointAddress&USB_DIR_IN)==USB_DIR_IN)
-+#define ep_maxpacket(EP) ((EP)->ep.maxpacket)
-+#define ep_index(EP) ((EP)->bEndpointAddress&0xF)
-+
-+#endif /* __USB_GADGET_JZ4740_H__ */
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/060-jzcodec.patch b/target/linux/xburst/patches-2.6.34/060-jzcodec.patch
deleted file mode 100644
index 80fed9173f..0000000000
--- a/target/linux/xburst/patches-2.6.34/060-jzcodec.patch
+++ /dev/null
@@ -1,602 +0,0 @@
-From 075550fa667fca846d1217f649438df5cb4f9529 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Fri, 28 May 2010 19:53:05 +0200
-Subject: [PATCH] Add jz4740 codec driver
-
----
- sound/soc/codecs/Kconfig | 7 +
- sound/soc/codecs/Makefile | 2 +
- sound/soc/codecs/jzcodec.c | 513 ++++++++++++++++++++++++++++++++++++++++++++
- sound/soc/codecs/jzcodec.h | 22 ++
- 4 files changed, 544 insertions(+), 0 deletions(-)
- create mode 100644 sound/soc/codecs/jzcodec.c
- create mode 100644 sound/soc/codecs/jzcodec.h
-
-diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
-index 1743d56..b25598a 100644
---- a/sound/soc/codecs/Kconfig
-+++ b/sound/soc/codecs/Kconfig
-@@ -260,6 +260,13 @@ config SND_SOC_WM9712
- config SND_SOC_WM9713
- tristate
-
-+config SND_SOC_JZCODEC
-+ tristate "JZ4720/JZ4740 SoC internal codec"
-+ depends on SND_SOC && SOC_JZ4740
-+ help
-+ Say Y if you want to use internal codec on Ingenic JZ4720/JZ4740 based
-+ boards.
-+
- # Amp
- config SND_SOC_MAX9877
- tristate
-diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
-index dd5ce6d..3f6ce05 100644
---- a/sound/soc/codecs/Makefile
-+++ b/sound/soc/codecs/Makefile
-@@ -54,6 +54,7 @@ snd-soc-wm9705-objs := wm9705.o
- snd-soc-wm9712-objs := wm9712.o
- snd-soc-wm9713-objs := wm9713.o
- snd-soc-wm-hubs-objs := wm_hubs.o
-+snd-soc-jzcodec-objs := jzcodec.o
-
- # Amp
- snd-soc-max9877-objs := max9877.o
-@@ -116,6 +117,7 @@ obj-$(CONFIG_SND_SOC_WM9705) += snd-soc-wm9705.o
- obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
- obj-$(CONFIG_SND_SOC_WM9713) += snd-soc-wm9713.o
- obj-$(CONFIG_SND_SOC_WM_HUBS) += snd-soc-wm-hubs.o
-+obj-$(CONFIG_SND_SOC_JZCODEC) += snd-soc-jzcodec.o
-
- # Amp
- obj-$(CONFIG_SND_SOC_MAX9877) += snd-soc-max9877.o
-diff --git a/sound/soc/codecs/jzcodec.c b/sound/soc/codecs/jzcodec.c
-new file mode 100644
-index 0000000..91720fa
---- /dev/null
-+++ b/sound/soc/codecs/jzcodec.c
-@@ -0,0 +1,513 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+
-+#include <linux/delay.h>
-+
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/initval.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/soc.h>
-+
-+#define JZ_REG_CODEC_1 0x0
-+#define JZ_REG_CODEC_2 0x1
-+
-+#define JZ_CODEC_1_LINE_ENABLE BIT(29)
-+#define JZ_CODEC_1_MIC_ENABLE BIT(28)
-+#define JZ_CODEC_1_SW1_ENABLE BIT(27)
-+#define JZ_CODEC_1_ADC_ENABLE BIT(26)
-+#define JZ_CODEC_1_SW2_ENABLE BIT(25)
-+#define JZ_CODEC_1_DAC_ENABLE BIT(24)
-+#define JZ_CODEC_1_VREF_DISABLE BIT(20)
-+#define JZ_CODEC_1_VREF_AMP_DISABLE BIT(19)
-+#define JZ_CODEC_1_VREF_PULL_DOWN BIT(18)
-+#define JZ_CODEC_1_VREF_LOW_CURRENT BIT(17)
-+#define JZ_CODEC_1_VREF_HIGH_CURRENT BIT(16)
-+#define JZ_CODEC_1_HEADPHONE_DISABLE BIT(14)
-+#define JZ_CODEC_1_HEADPHONE_AMP_CHANGE_ANY BIT(13)
-+#define JZ_CODEC_1_HEADPHONE_CHANGE BIT(12)
-+#define JZ_CODEC_1_HEADPHONE_PULL_DOWN_M BIT(11)
-+#define JZ_CODEC_1_HEADPHONE_PULL_DOWN_R BIT(10)
-+#define JZ_CODEC_1_HEADPHONE_POWER_DOWN_M BIT(9)
-+#define JZ_CODEC_1_HEADPHONE_POWER_DOWN BIT(8)
-+#define JZ_CODEC_1_SUSPEND BIT(1)
-+#define JZ_CODEC_1_RESET BIT(0)
-+
-+#define JZ_CODEC_1_LINE_ENABLE_OFFSET 29
-+#define JZ_CODEC_1_MIC_ENABLE_OFFSET 28
-+#define JZ_CODEC_1_SW1_ENABLE_OFFSET 27
-+#define JZ_CODEC_1_ADC_ENABLE_OFFSET 26
-+#define JZ_CODEC_1_SW2_ENABLE_OFFSET 25
-+#define JZ_CODEC_1_DAC_ENABLE_OFFSET 24
-+#define JZ_CODEC_1_HEADPHONE_DISABLE_OFFSET 14
-+#define JZ_CODEC_1_HEADPHONE_POWER_DOWN_OFFSET 8
-+
-+#define JZ_CODEC_2_INPUT_VOLUME_MASK 0x1f0000
-+#define JZ_CODEC_2_SAMPLE_RATE_MASK 0x000f00
-+#define JZ_CODEC_2_MIC_BOOST_GAIN_MASK 0x000030
-+#define JZ_CODEC_2_HEADPHONE_VOLUME_MASK 0x000003
-+
-+#define JZ_CODEC_2_INPUT_VOLUME_OFFSET 16
-+#define JZ_CODEC_2_SAMPLE_RATE_OFFSET 8
-+#define JZ_CODEC_2_MIC_BOOST_GAIN_OFFSET 4
-+#define JZ_CODEC_2_HEADPHONE_VOLUME_OFFSET 0
-+
-+struct jz_codec {
-+ void __iomem *base;
-+ struct resource *mem;
-+
-+ uint32_t reg_cache[2];
-+ struct snd_soc_codec codec;
-+};
-+
-+static inline struct jz_codec *codec_to_jz(struct snd_soc_codec *codec)
-+{
-+ return container_of(codec, struct jz_codec, codec);
-+}
-+
-+static unsigned int jz_codec_read(struct snd_soc_codec *codec, unsigned int reg)
-+{
-+ struct jz_codec *jz_codec = codec_to_jz(codec);
-+ return readl(jz_codec->base + (reg << 2));
-+}
-+
-+static int jz_codec_write(struct snd_soc_codec *codec, unsigned int reg,
-+unsigned int val)
-+{
-+ struct jz_codec *jz_codec = codec_to_jz(codec);
-+ jz_codec->reg_cache[reg] = val;
-+
-+ writel(val, jz_codec->base + (reg << 2));
-+ return 0;
-+}
-+
-+static const struct snd_kcontrol_new jz_codec_controls[] = {
-+ SOC_SINGLE("Master Playback Volume", JZ_REG_CODEC_2,
-+ JZ_CODEC_2_HEADPHONE_VOLUME_OFFSET, 3, 0),
-+ SOC_SINGLE("Capture Volume", JZ_REG_CODEC_2,
-+ JZ_CODEC_2_INPUT_VOLUME_OFFSET, 31, 0),
-+ SOC_SINGLE("Master Playback Switch", JZ_REG_CODEC_1,
-+ JZ_CODEC_1_HEADPHONE_DISABLE_OFFSET, 1, 1),
-+ SOC_SINGLE("Mic Capture Volume", JZ_REG_CODEC_2,
-+ JZ_CODEC_2_MIC_BOOST_GAIN_OFFSET, 3, 0),
-+};
-+
-+static const struct snd_kcontrol_new jz_codec_output_controls[] = {
-+ SOC_DAPM_SINGLE("Bypass Switch", JZ_REG_CODEC_1,
-+ JZ_CODEC_1_SW1_ENABLE_OFFSET, 1, 0),
-+ SOC_DAPM_SINGLE("DAC Switch", JZ_REG_CODEC_1,
-+ JZ_CODEC_1_SW2_ENABLE_OFFSET, 1, 0),
-+};
-+
-+static const struct snd_kcontrol_new jz_codec_input_controls[] = {
-+ SOC_DAPM_SINGLE("Line Capture Switch", JZ_REG_CODEC_1,
-+ JZ_CODEC_1_LINE_ENABLE_OFFSET, 1, 0),
-+ SOC_DAPM_SINGLE("Mic Capture Switch", JZ_REG_CODEC_1,
-+ JZ_CODEC_1_MIC_ENABLE_OFFSET, 1, 0),
-+};
-+
-+static const struct snd_soc_dapm_widget jz_codec_dapm_widgets[] = {
-+ SND_SOC_DAPM_ADC("ADC", "Capture", JZ_REG_CODEC_1,
-+ JZ_CODEC_1_ADC_ENABLE_OFFSET, 0),
-+ SND_SOC_DAPM_DAC("DAC", "Playback", JZ_REG_CODEC_1,
-+ JZ_CODEC_1_DAC_ENABLE_OFFSET, 0),
-+
-+ SND_SOC_DAPM_MIXER("Output Mixer", JZ_REG_CODEC_1,
-+ JZ_CODEC_1_HEADPHONE_POWER_DOWN_OFFSET, 1,
-+ jz_codec_output_controls,
-+ ARRAY_SIZE(jz_codec_output_controls)),
-+
-+ SND_SOC_DAPM_MIXER_NAMED_CTL("Input Mixer", SND_SOC_NOPM, 0, 0,
-+ jz_codec_input_controls,
-+ ARRAY_SIZE(jz_codec_input_controls)),
-+ SND_SOC_DAPM_MIXER("Line Input", SND_SOC_NOPM, 0, 0, NULL, 0),
-+
-+ SND_SOC_DAPM_OUTPUT("LOUT"),
-+ SND_SOC_DAPM_OUTPUT("ROUT"),
-+
-+ SND_SOC_DAPM_INPUT("MIC"),
-+ SND_SOC_DAPM_INPUT("LIN"),
-+ SND_SOC_DAPM_INPUT("RIN"),
-+};
-+
-+static const struct snd_soc_dapm_route jz_codec_dapm_routes[] = {
-+
-+ {"Line Input", NULL, "LIN"},
-+ {"Line Input", NULL, "RIN"},
-+
-+ {"Input Mixer", "Line Capture Switch", "Line Input"},
-+ {"Input Mixer", "Mic Capture Switch", "MIC"},
-+
-+ {"ADC", NULL, "Input Mixer"},
-+
-+ {"Output Mixer", "Bypass Switch", "Input Mixer"},
-+ {"Output Mixer", "DAC Switch", "DAC"},
-+
-+ {"LOUT", NULL, "Output Mixer"},
-+ {"ROUT", NULL, "Output Mixer"},
-+};
-+
-+static int jz_codec_hw_params(struct snd_pcm_substream *substream, struct
-+snd_pcm_hw_params *params, struct snd_soc_dai *dai)
-+{
-+ uint32_t val;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->card->codec;
-+
-+ switch (params_format(params)) {
-+ case SNDRV_PCM_FORMAT_S8:
-+ case SNDRV_PCM_FORMAT_S16_LE:
-+ case SNDRV_PCM_FORMAT_S18_3LE:
-+ break;
-+ default:
-+ return -EINVAL;
-+ break;
-+ }
-+
-+ switch (params_rate(params)) {
-+ case 8000:
-+ val = 0;
-+ break;
-+ case 11025:
-+ val = 1;
-+ break;
-+ case 12000:
-+ val = 2;
-+ break;
-+ case 16000:
-+ val = 3;
-+ break;
-+ case 22050:
-+ val = 4;
-+ break;
-+ case 24000:
-+ val = 5;
-+ break;
-+ case 32000:
-+ val = 6;
-+ break;
-+ case 44100:
-+ val = 7;
-+ break;
-+ case 48000:
-+ val = 8;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ val <<= JZ_CODEC_2_SAMPLE_RATE_OFFSET;
-+
-+ snd_soc_update_bits(codec, JZ_REG_CODEC_2,
-+ JZ_CODEC_2_SAMPLE_RATE_MASK, val);
-+
-+ return 0;
-+}
-+
-+static int jz_codec_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
-+{
-+ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int jz_codec_set_sysclk(struct snd_soc_dai *codec_dai,
-+ int clk_id, unsigned int freq, int dir)
-+{
-+ return 0;
-+}
-+
-+
-+static struct snd_soc_dai_ops jz_codec_dai_ops = {
-+ .hw_params = jz_codec_hw_params,
-+ .set_fmt = jz_codec_set_fmt,
-+/* .set_clkdiv = jz_codec_set_clkdiv,*/
-+ .set_sysclk = jz_codec_set_sysclk,
-+};
-+
-+struct snd_soc_dai jz_codec_dai = {
-+ .name = "jz-codec",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 2,
-+ .channels_max = 2,
-+ .rates = SNDRV_PCM_RATE_8000_48000,
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 2,
-+ .channels_max = 2,
-+ .rates = SNDRV_PCM_RATE_8000_48000,
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8,
-+ },
-+ .ops = &jz_codec_dai_ops,
-+ .symmetric_rates = 1,
-+};
-+EXPORT_SYMBOL_GPL(jz_codec_dai);
-+
-+static int jz_codec_set_bias_level(struct snd_soc_codec *codec,
-+ enum snd_soc_bias_level level)
-+{
-+
-+ if (codec->bias_level == SND_SOC_BIAS_OFF && level != SND_SOC_BIAS_OFF) {
-+ snd_soc_update_bits(codec, JZ_REG_CODEC_1,
-+ JZ_CODEC_1_RESET, JZ_CODEC_1_RESET);
-+ udelay(2);
-+
-+ snd_soc_update_bits(codec, JZ_REG_CODEC_1,
-+ JZ_CODEC_1_SUSPEND | JZ_CODEC_1_RESET, 0);
-+ }
-+ switch (level) {
-+ case SND_SOC_BIAS_ON:
-+ snd_soc_update_bits(codec, JZ_REG_CODEC_1,
-+ JZ_CODEC_1_VREF_DISABLE |
-+ JZ_CODEC_1_VREF_AMP_DISABLE |
-+ JZ_CODEC_1_HEADPHONE_POWER_DOWN_M |
-+ JZ_CODEC_1_VREF_LOW_CURRENT |
-+ JZ_CODEC_1_VREF_HIGH_CURRENT,
-+ 0);
-+ break;
-+ case SND_SOC_BIAS_PREPARE:
-+ snd_soc_update_bits(codec, JZ_REG_CODEC_1,
-+ JZ_CODEC_1_VREF_LOW_CURRENT |
-+ JZ_CODEC_1_VREF_HIGH_CURRENT,
-+ JZ_CODEC_1_VREF_LOW_CURRENT |
-+ JZ_CODEC_1_VREF_HIGH_CURRENT);
-+ break;
-+ case SND_SOC_BIAS_STANDBY:
-+ snd_soc_update_bits(codec, JZ_REG_CODEC_1,
-+ JZ_CODEC_1_VREF_DISABLE | JZ_CODEC_1_VREF_AMP_DISABLE,
-+ JZ_CODEC_1_VREF_DISABLE | JZ_CODEC_1_VREF_AMP_DISABLE);
-+ break;
-+ case SND_SOC_BIAS_OFF:
-+ snd_soc_update_bits(codec, JZ_REG_CODEC_1,
-+ JZ_CODEC_1_SUSPEND, JZ_CODEC_1_SUSPEND);
-+ break;
-+ }
-+ codec->bias_level = level;
-+
-+ return 0;
-+}
-+
-+
-+static struct snd_soc_codec *jz_codec_codec;
-+
-+static int jz_codec_dev_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = jz_codec_codec;
-+
-+ BUG_ON(!codec);
-+
-+ socdev->card->codec = codec;
-+
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to create pcms: %d\n", ret);
-+ return ret;
-+ }
-+
-+ snd_soc_add_controls(codec, jz_codec_controls,
-+ ARRAY_SIZE(jz_codec_controls));
-+
-+ snd_soc_dapm_new_controls(codec, jz_codec_dapm_widgets,
-+ ARRAY_SIZE(jz_codec_dapm_widgets));
-+
-+ snd_soc_dapm_add_routes(codec, jz_codec_dapm_routes,
-+ ARRAY_SIZE(jz_codec_dapm_routes));
-+
-+ snd_soc_dapm_new_widgets(codec);
-+
-+ return 0;
-+}
-+
-+static int jz_codec_dev_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_jzcodec = {
-+ .probe = jz_codec_dev_probe,
-+ .remove = jz_codec_dev_remove,
-+};
-+EXPORT_SYMBOL_GPL(soc_codec_dev_jzcodec);
-+
-+static int __devinit jz_codec_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jz_codec *jz_codec;
-+ struct snd_soc_codec *codec;
-+
-+ jz_codec = kzalloc(sizeof(*jz_codec), GFP_KERNEL);
-+
-+ if (!jz_codec)
-+ return -ENOMEM;
-+
-+ jz_codec->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+
-+ if (!jz_codec->mem) {
-+ dev_err(&pdev->dev, "Failed to get mmio memory resource\n");
-+ ret = -ENOENT;
-+ goto err_free_jz_codec;
-+ }
-+
-+ jz_codec->mem = request_mem_region(jz_codec->mem->start,
-+ resource_size(jz_codec->mem), pdev->name);
-+
-+ if (!jz_codec->mem) {
-+ dev_err(&pdev->dev, "Failed to request mmio memory region\n");
-+ ret = -EBUSY;
-+ goto err_free_jz_codec;
-+ }
-+
-+ jz_codec->base = ioremap(jz_codec->mem->start, resource_size(jz_codec->mem));
-+
-+ if (!jz_codec->base) {
-+ dev_err(&pdev->dev, "Failed to ioremap mmio memory\n");
-+ ret = -EBUSY;
-+ goto err_release_mem_region;
-+ }
-+
-+ jz_codec_dai.dev = &pdev->dev;
-+
-+ codec = &jz_codec->codec;
-+
-+ codec->dev = &pdev->dev;
-+ codec->name = "jz-codec";
-+ codec->owner = THIS_MODULE;
-+
-+ codec->read = jz_codec_read;
-+ codec->write = jz_codec_write;
-+ codec->set_bias_level = jz_codec_set_bias_level;
-+ codec->bias_level = SND_SOC_BIAS_OFF;
-+
-+ codec->dai = &jz_codec_dai;
-+ codec->num_dai = 1;
-+
-+ codec->reg_cache = jz_codec->reg_cache;
-+ codec->reg_cache_size = 2;
-+
-+ codec->private_data = jz_codec;
-+
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ jz_codec_codec = codec;
-+
-+ snd_soc_update_bits(codec, JZ_REG_CODEC_1,
-+ JZ_CODEC_1_SW2_ENABLE, JZ_CODEC_1_SW2_ENABLE);
-+
-+
-+ platform_set_drvdata(pdev, jz_codec);
-+ ret = snd_soc_register_codec(codec);
-+
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to register codec\n");
-+ goto err_iounmap;
-+ }
-+
-+ ret = snd_soc_register_dai(&jz_codec_dai);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to register codec dai\n");
-+ goto err_unregister_codec;
-+ }
-+
-+ jz_codec_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-+
-+ return 0;
-+err_unregister_codec:
-+ snd_soc_unregister_codec(codec);
-+err_iounmap:
-+ iounmap(jz_codec->base);
-+err_release_mem_region:
-+ release_mem_region(jz_codec->mem->start, resource_size(jz_codec->mem));
-+err_free_jz_codec:
-+ kfree(jz_codec);
-+
-+ return ret;
-+}
-+
-+static int __devexit jz_codec_remove(struct platform_device *pdev)
-+{
-+ struct jz_codec *jz_codec = platform_get_drvdata(pdev);
-+
-+ snd_soc_unregister_dai(&jz_codec_dai);
-+ snd_soc_unregister_codec(&jz_codec->codec);
-+
-+ iounmap(jz_codec->base);
-+ release_mem_region(jz_codec->mem->start, resource_size(jz_codec->mem));
-+
-+ platform_set_drvdata(pdev, NULL);
-+ kfree(jz_codec);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver jz_codec_driver = {
-+ .probe = jz_codec_probe,
-+ .remove = __devexit_p(jz_codec_remove),
-+ .driver = {
-+ .name = "jz4740-codec",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init jz_codec_init(void)
-+{
-+ return platform_driver_register(&jz_codec_driver);
-+}
-+module_init(jz_codec_init);
-+
-+static void __exit jz_codec_exit(void)
-+{
-+ platform_driver_unregister(&jz_codec_driver);
-+}
-+module_exit(jz_codec_exit);
-+
-+MODULE_DESCRIPTION("JZ4720/JZ4740 SoC internal codec driver");
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_LICENSE("GPL v2");
-+MODULE_ALIAS("platform:jz-codec");
-diff --git a/sound/soc/codecs/jzcodec.h b/sound/soc/codecs/jzcodec.h
-new file mode 100644
-index 0000000..05c57b8
---- /dev/null
-+++ b/sound/soc/codecs/jzcodec.h
-@@ -0,0 +1,22 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * 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 _ICODEC_H
-+#define _ICODEC_H
-+
-+#define JZCODEC_SYSCLK 0
-+
-+extern struct snd_soc_dai jz_codec_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_jzcodec;
-+
-+#endif
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/061-asoc.patch b/target/linux/xburst/patches-2.6.34/061-asoc.patch
deleted file mode 100644
index 9cabcec1db..0000000000
--- a/target/linux/xburst/patches-2.6.34/061-asoc.patch
+++ /dev/null
@@ -1,1062 +0,0 @@
-From d12d1c5f8615192b545faa69a553f64d4d9cc9ab Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Fri, 28 May 2010 19:54:02 +0200
-Subject: [PATCH] Add jz4740 SoC sound drivers
-
----
- sound/soc/Kconfig | 1 +
- sound/soc/Makefile | 1 +
- sound/soc/jz4740/Kconfig | 13 +
- sound/soc/jz4740/Makefile | 9 +
- sound/soc/jz4740/jz4740-i2s.c | 568 +++++++++++++++++++++++++++++++++++++++++
- sound/soc/jz4740/jz4740-i2s.h | 18 ++
- sound/soc/jz4740/jz4740-pcm.c | 350 +++++++++++++++++++++++++
- sound/soc/jz4740/jz4740-pcm.h | 22 ++
- 8 files changed, 982 insertions(+), 0 deletions(-)
- create mode 100644 sound/soc/jz4740/Kconfig
- create mode 100644 sound/soc/jz4740/Makefile
- create mode 100644 sound/soc/jz4740/jz4740-i2s.c
- create mode 100644 sound/soc/jz4740/jz4740-i2s.h
- create mode 100644 sound/soc/jz4740/jz4740-pcm.c
- create mode 100644 sound/soc/jz4740/jz4740-pcm.h
-
-diff --git a/sound/soc/Kconfig b/sound/soc/Kconfig
-index b1749bc..5a7a724 100644
---- a/sound/soc/Kconfig
-+++ b/sound/soc/Kconfig
-@@ -36,6 +36,7 @@ source "sound/soc/s3c24xx/Kconfig"
- source "sound/soc/s6000/Kconfig"
- source "sound/soc/sh/Kconfig"
- source "sound/soc/txx9/Kconfig"
-+source "sound/soc/jz4740/Kconfig"
-
- # Supported codecs
- source "sound/soc/codecs/Kconfig"
-diff --git a/sound/soc/Makefile b/sound/soc/Makefile
-index 1470141..fdbe74d 100644
---- a/sound/soc/Makefile
-+++ b/sound/soc/Makefile
-@@ -14,3 +14,4 @@ obj-$(CONFIG_SND_SOC) += s3c24xx/
- obj-$(CONFIG_SND_SOC) += s6000/
- obj-$(CONFIG_SND_SOC) += sh/
- obj-$(CONFIG_SND_SOC) += txx9/
-+obj-$(CONFIG_SND_SOC) += jz4740/
-diff --git a/sound/soc/jz4740/Kconfig b/sound/soc/jz4740/Kconfig
-new file mode 100644
-index 0000000..39df949
---- /dev/null
-+++ b/sound/soc/jz4740/Kconfig
-@@ -0,0 +1,13 @@
-+config SND_JZ4740_SOC
-+ tristate "SoC Audio for Ingenic JZ4740 SoC"
-+ depends on SOC_JZ4740 && SND_SOC
-+ help
-+ Say Y or M if you want to add support for codecs attached to
-+ the Jz4740 AC97, I2S or SSP interface. You will also need
-+ to select the audio interfaces to support below.
-+
-+config SND_JZ4740_SOC_I2S
-+ depends on SND_JZ4740_SOC
-+ tristate "SoC Audio (I2S protocol) for Ingenic jz4740 chip"
-+ help
-+ Say Y if you want to use I2S protocol and I2S codec on Ingenic Jz4740 QI_LB60 board.
-diff --git a/sound/soc/jz4740/Makefile b/sound/soc/jz4740/Makefile
-new file mode 100644
-index 0000000..1be8d19
---- /dev/null
-+++ b/sound/soc/jz4740/Makefile
-@@ -0,0 +1,9 @@
-+#
-+# Jz4740 Platform Support
-+#
-+snd-soc-jz4740-objs := jz4740-pcm.o
-+snd-soc-jz4740-i2s-objs := jz4740-i2s.o
-+
-+obj-$(CONFIG_SND_JZ4740_SOC) += snd-soc-jz4740.o
-+obj-$(CONFIG_SND_JZ4740_SOC_I2S) += snd-soc-jz4740-i2s.o
-+
-diff --git a/sound/soc/jz4740/jz4740-i2s.c b/sound/soc/jz4740/jz4740-i2s.c
-new file mode 100644
-index 0000000..2b139fd
---- /dev/null
-+++ b/sound/soc/jz4740/jz4740-i2s.c
-@@ -0,0 +1,568 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/io.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+
-+#include <linux/clk.h>
-+#include <linux/delay.h>
-+
-+#include <linux/dma-mapping.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 "jz4740-i2s.h"
-+#include "jz4740-pcm.h"
-+
-+#define JZ_REG_AIC_CONF 0x00
-+#define JZ_REG_AIC_CTRL 0x04
-+#define JZ_REG_AIC_I2S_FMT 0x10
-+#define JZ_REG_AIC_FIFO_STATUS 0x14
-+#define JZ_REG_AIC_I2S_STATUS 0x1c
-+#define JZ_REG_AIC_CLK_DIV 0x30
-+#define JZ_REG_AIC_FIFO 0x34
-+
-+#define JZ_AIC_CONF_FIFO_RX_THRESHOLD_MASK (0xf << 12)
-+#define JZ_AIC_CONF_FIFO_TX_THRESHOLD_MASK (0xf << 8)
-+#define JZ_AIC_CONF_OVERFLOW_PLAY_LAST BIT(6)
-+#define JZ_AIC_CONF_INTERNAL_CODEC BIT(5)
-+#define JZ_AIC_CONF_I2S BIT(4)
-+#define JZ_AIC_CONF_RESET BIT(3)
-+#define JZ_AIC_CONF_BIT_CLK_MASTER BIT(2)
-+#define JZ_AIC_CONF_SYNC_CLK_MASTER BIT(1)
-+#define JZ_AIC_CONF_ENABLE BIT(0)
-+
-+#define JZ_AIC_CONF_FIFO_RX_THRESHOLD_OFFSET 12
-+#define JZ_AIC_CONF_FIFO_TX_THRESHOLD_OFFSET 8
-+
-+#define JZ_AIC_CTRL_OUTPUT_SAMPLE_SIZE_MASK (0x7 << 19)
-+#define JZ_AIC_CTRL_INPUT_SAMPLE_SIZE_MASK (0x7 << 16)
-+#define JZ_AIC_CTRL_ENABLE_RX_DMA BIT(15)
-+#define JZ_AIC_CTRL_ENABLE_TX_DMA BIT(14)
-+#define JZ_AIC_CTRL_MONO_TO_STEREO BIT(11)
-+#define JZ_AIC_CTRL_SWITCH_ENDIANNESS BIT(10)
-+#define JZ_AIC_CTRL_SIGNED_TO_UNSIGNED BIT(9)
-+#define JZ_AIC_CTRL_FLUSH BIT(8)
-+#define JZ_AIC_CTRL_ENABLE_ROR_INT BIT(6)
-+#define JZ_AIC_CTRL_ENABLE_TUR_INT BIT(5)
-+#define JZ_AIC_CTRL_ENABLE_RFS_INT BIT(4)
-+#define JZ_AIC_CTRL_ENABLE_TFS_INT BIT(3)
-+#define JZ_AIC_CTRL_ENABLE_LOOPBACK BIT(2)
-+#define JZ_AIC_CTRL_ENABLE_PLAYBACK BIT(1)
-+#define JZ_AIC_CTRL_ENABLE_CAPTURE BIT(0)
-+
-+#define JZ_AIC_CTRL_OUTPUT_SAMPLE_SIZE_OFFSET 19
-+#define JZ_AIC_CTRL_INPUT_SAMPLE_SIZE_OFFSET 16
-+
-+#define JZ_AIC_I2S_FMT_DISABLE_BIT_CLK BIT(12)
-+#define JZ_AIC_I2S_FMT_ENABLE_SYS_CLK BIT(4)
-+#define JZ_AIC_I2S_FMT_MSB BIT(0)
-+
-+#define JZ_AIC_I2S_STATUS_BUSY BIT(2)
-+
-+#define JZ_AIC_CLK_DIV_MASK 0xf
-+
-+struct jz4740_i2s {
-+ struct resource *mem;
-+ void __iomem *base;
-+ dma_addr_t phys_base;
-+
-+ struct clk *clk_aic;
-+ struct clk *clk_i2s;
-+
-+ struct jz4740_pcm_config pcm_config_playback;
-+ struct jz4740_pcm_config pcm_config_capture;
-+};
-+
-+static inline uint32_t jz4740_i2s_read(const struct jz4740_i2s *i2s,
-+ unsigned int reg)
-+{
-+ return readl(i2s->base + reg);
-+}
-+
-+static inline void jz4740_i2s_write(const struct jz4740_i2s *i2s,
-+ unsigned int reg, uint32_t value)
-+{
-+ writel(value, i2s->base + reg);
-+}
-+
-+static inline struct jz4740_i2s *jz4740_dai_to_i2s(struct snd_soc_dai *dai)
-+{
-+ return dai->private_data;
-+}
-+
-+static int jz4740_i2s_startup(struct snd_pcm_substream *substream,
-+ struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ uint32_t conf, ctrl;
-+
-+ if (dai->active)
-+ return 0;
-+
-+
-+ ctrl = jz4740_i2s_read(i2s, JZ_REG_AIC_CTRL);
-+ ctrl |= JZ_AIC_CTRL_FLUSH;
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CTRL, ctrl);
-+
-+ clk_enable(i2s->clk_i2s);
-+
-+ conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF);
-+ conf |= JZ_AIC_CONF_ENABLE;
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-+
-+ return 0;
-+}
-+
-+static void jz4740_i2s_shutdown(struct snd_pcm_substream *substream,
-+ struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ uint32_t conf;
-+
-+ if (!dai->active)
-+ return;
-+
-+ conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF);
-+ conf &= ~JZ_AIC_CONF_ENABLE;
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-+
-+ clk_disable(i2s->clk_i2s);
-+}
-+
-+
-+static int jz4740_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
-+ struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ bool playback = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK);
-+
-+ uint32_t ctrl;
-+ uint32_t mask;
-+
-+ if (playback)
-+ mask = JZ_AIC_CTRL_ENABLE_PLAYBACK | JZ_AIC_CTRL_ENABLE_TX_DMA;
-+ else
-+ mask = JZ_AIC_CTRL_ENABLE_CAPTURE | JZ_AIC_CTRL_ENABLE_RX_DMA;
-+
-+ ctrl = jz4740_i2s_read(i2s, JZ_REG_AIC_CTRL);
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ ctrl |= mask;
-+ break;
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ ctrl &= ~mask;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CTRL, ctrl);
-+
-+ return 0;
-+}
-+
-+
-+static int jz4740_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+
-+ uint32_t format = 0;
-+ uint32_t conf;
-+
-+ conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF);
-+
-+ conf &= ~(JZ_AIC_CONF_BIT_CLK_MASTER | JZ_AIC_CONF_SYNC_CLK_MASTER);
-+
-+ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ conf |= JZ_AIC_CONF_BIT_CLK_MASTER | JZ_AIC_CONF_SYNC_CLK_MASTER;
-+ format |= JZ_AIC_I2S_FMT_ENABLE_SYS_CLK;
-+ break;
-+ case SND_SOC_DAIFMT_CBM_CFS:
-+ conf |= JZ_AIC_CONF_SYNC_CLK_MASTER;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFM:
-+ conf |= JZ_AIC_CONF_BIT_CLK_MASTER;
-+ break;
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_MSB:
-+ format |= JZ_AIC_I2S_FMT_MSB;
-+ break;
-+ case SND_SOC_DAIFMT_I2S:
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_I2S_FMT, format);
-+
-+ return 0;
-+}
-+
-+static int jz4740_i2s_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params, struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ bool playback = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK);
-+ enum jz4740_dma_width dma_width;
-+ struct jz4740_pcm_config *pcm_config;
-+ unsigned int sample_size;
-+ uint32_t ctrl;
-+
-+ ctrl = jz4740_i2s_read(i2s, JZ_REG_AIC_CTRL);
-+
-+ switch (params_format(params)) {
-+ case SNDRV_PCM_FORMAT_S8:
-+ sample_size = 0;
-+ dma_width = JZ4740_DMA_WIDTH_8BIT;
-+ break;
-+ case SNDRV_PCM_FORMAT_S16:
-+ sample_size = 1;
-+ dma_width = JZ4740_DMA_WIDTH_16BIT;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ if (playback) {
-+ ctrl &= ~JZ_AIC_CTRL_OUTPUT_SAMPLE_SIZE_MASK;
-+ ctrl |= sample_size << JZ_AIC_CTRL_OUTPUT_SAMPLE_SIZE_OFFSET;
-+ } else {
-+ ctrl &= ~JZ_AIC_CTRL_INPUT_SAMPLE_SIZE_MASK;
-+ ctrl |= sample_size << JZ_AIC_CTRL_INPUT_SAMPLE_SIZE_OFFSET;
-+ }
-+
-+ switch (params_channels(params)) {
-+ case 2:
-+ break;
-+ case 1:
-+ if (playback) {
-+ ctrl |= JZ_AIC_CTRL_MONO_TO_STEREO;
-+ break;
-+ }
-+ default: /* Falltrough */
-+ return -EINVAL;
-+ }
-+
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CTRL, ctrl);
-+
-+ if (playback) {
-+ pcm_config = &i2s->pcm_config_playback;
-+ pcm_config->dma_config.dst_width = dma_width;
-+ } else {
-+ pcm_config = &i2s->pcm_config_capture;
-+ pcm_config->dma_config.src_width = dma_width;
-+ }
-+
-+
-+ snd_soc_dai_set_dma_data(dai, substream, pcm_config);
-+
-+ return 0;
-+}
-+
-+static int jz4740_i2s_set_clkdiv(struct snd_soc_dai *dai, int div_id, int div)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+
-+ switch (div_id) {
-+ case JZ4740_I2S_BIT_CLK:
-+ if (div & 1 || div > 16)
-+ return -EINVAL;
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CLK_DIV, div - 1);
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int jz4740_i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id,
-+ unsigned int freq, int dir)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ int ret = 0;
-+ struct clk *parent;
-+
-+ switch (clk_id) {
-+ case JZ4740_I2S_CLKSRC_EXT:
-+ parent = clk_get(NULL, "ext");
-+ clk_set_parent(i2s->clk_i2s, parent);
-+ break;
-+ case JZ4740_I2S_CLKSRC_PLL:
-+ parent = clk_get(NULL, "pll half");
-+ clk_set_parent(i2s->clk_i2s, parent);
-+ ret = clk_set_rate(i2s->clk_i2s, freq);
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+ clk_put(parent);
-+
-+ return ret;
-+}
-+
-+static int jz4740_i2s_suspend(struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ uint32_t conf;
-+
-+ if (dai->active) {
-+ conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF);
-+ conf &= ~JZ_AIC_CONF_ENABLE;
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-+
-+ clk_disable(i2s->clk_i2s);
-+ }
-+
-+ clk_disable(i2s->clk_aic);
-+
-+ return 0;
-+}
-+
-+static int jz4740_i2s_resume(struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ uint32_t conf;
-+
-+ clk_enable(i2s->clk_aic);
-+
-+ if (dai->active) {
-+ clk_enable(i2s->clk_i2s);
-+
-+ conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF);
-+ conf |= JZ_AIC_CONF_ENABLE;
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-+
-+ }
-+
-+ return 0;
-+}
-+
-+static int jz4740_i2s_probe(struct platform_device *pdev, struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ uint32_t conf;
-+
-+ conf = (7 << JZ_AIC_CONF_FIFO_RX_THRESHOLD_OFFSET) |
-+ (8 << JZ_AIC_CONF_FIFO_TX_THRESHOLD_OFFSET) |
-+ JZ_AIC_CONF_OVERFLOW_PLAY_LAST |
-+ JZ_AIC_CONF_I2S |
-+ JZ_AIC_CONF_INTERNAL_CODEC;
-+
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, JZ_AIC_CONF_RESET);
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-+
-+ return 0;
-+}
-+
-+
-+static struct snd_soc_dai_ops jz4740_i2s_dai_ops = {
-+ .startup = jz4740_i2s_startup,
-+ .shutdown = jz4740_i2s_shutdown,
-+ .trigger = jz4740_i2s_trigger,
-+ .hw_params = jz4740_i2s_hw_params,
-+ .set_fmt = jz4740_i2s_set_fmt,
-+ .set_clkdiv = jz4740_i2s_set_clkdiv,
-+ .set_sysclk = jz4740_i2s_set_sysclk,
-+};
-+
-+#define JZ4740_I2S_FMTS (SNDRV_PCM_FMTBIT_S8 | \
-+ SNDRV_PCM_FMTBIT_S16_LE)
-+
-+struct snd_soc_dai jz4740_i2s_dai = {
-+ .name = "jz4740-i2s",
-+ .probe = jz4740_i2s_probe,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ .rates = SNDRV_PCM_RATE_8000_48000,
-+ .formats = JZ4740_I2S_FMTS,
-+ },
-+ .capture = {
-+ .channels_min = 2,
-+ .channels_max = 2,
-+ .rates = SNDRV_PCM_RATE_8000_48000,
-+ .formats = JZ4740_I2S_FMTS,
-+ },
-+ .symmetric_rates = 1,
-+ .ops = &jz4740_i2s_dai_ops,
-+ .suspend = jz4740_i2s_suspend,
-+ .resume = jz4740_i2s_resume,
-+};
-+EXPORT_SYMBOL_GPL(jz4740_i2s_dai);
-+
-+static void __devinit jz4740_i2c_init_pcm_config(struct jz4740_i2s *i2s)
-+{
-+ struct jz4740_dma_config *dma_config;
-+
-+ /* Playback */
-+ dma_config = &i2s->pcm_config_playback.dma_config;
-+ dma_config->src_width = JZ4740_DMA_WIDTH_32BIT,
-+ dma_config->transfer_size = JZ4740_DMA_TRANSFER_SIZE_16BYTE;
-+ dma_config->request_type = JZ4740_DMA_TYPE_AIC_TRANSMIT;
-+ dma_config->flags = JZ4740_DMA_SRC_AUTOINC;
-+ dma_config->mode = JZ4740_DMA_MODE_SINGLE;
-+ i2s->pcm_config_playback.fifo_addr = i2s->phys_base + JZ_REG_AIC_FIFO;
-+
-+ /* Capture */
-+ dma_config = &i2s->pcm_config_capture.dma_config;
-+ dma_config->dst_width = JZ4740_DMA_WIDTH_32BIT,
-+ dma_config->transfer_size = JZ4740_DMA_TRANSFER_SIZE_16BYTE;
-+ dma_config->request_type = JZ4740_DMA_TYPE_AIC_RECEIVE;
-+ dma_config->flags = JZ4740_DMA_DST_AUTOINC;
-+ dma_config->mode = JZ4740_DMA_MODE_SINGLE;
-+ i2s->pcm_config_capture.fifo_addr = i2s->phys_base + JZ_REG_AIC_FIFO;
-+}
-+
-+static int __devinit jz4740_i2s_dev_probe(struct platform_device *pdev)
-+{
-+ struct jz4740_i2s *i2s;
-+ int ret;
-+
-+ i2s = kzalloc(sizeof(*i2s), GFP_KERNEL);
-+
-+ if (!i2s)
-+ return -ENOMEM;
-+
-+ i2s->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+
-+ if (!i2s->mem) {
-+ ret = -ENOENT;
-+ goto err_free;
-+ }
-+
-+ i2s->mem = request_mem_region(i2s->mem->start, resource_size(i2s->mem),
-+ pdev->name);
-+
-+ if (!i2s->mem) {
-+ ret = -EBUSY;
-+ goto err_free;
-+ }
-+
-+ i2s->base = ioremap_nocache(i2s->mem->start, resource_size(i2s->mem));
-+
-+ if (!i2s->base) {
-+ ret = -EBUSY;
-+ goto err_release_mem_region;
-+ }
-+
-+ i2s->phys_base = i2s->mem->start;
-+
-+ i2s->clk_aic = clk_get(&pdev->dev, "aic");
-+ if (IS_ERR(i2s->clk_aic)) {
-+ ret = PTR_ERR(i2s->clk_aic);
-+ goto err_iounmap;
-+ }
-+
-+ i2s->clk_i2s = clk_get(&pdev->dev, "i2s");
-+ if (IS_ERR(i2s->clk_i2s)) {
-+ ret = PTR_ERR(i2s->clk_i2s);
-+ goto err_iounmap;
-+ }
-+
-+ clk_enable(i2s->clk_aic);
-+
-+ jz4740_i2c_init_pcm_config(i2s);
-+
-+ jz4740_i2s_dai.private_data = i2s;
-+ ret = snd_soc_register_dai(&jz4740_i2s_dai);
-+
-+ platform_set_drvdata(pdev, i2s);
-+
-+ return 0;
-+
-+err_iounmap:
-+ iounmap(i2s->base);
-+err_release_mem_region:
-+ release_mem_region(i2s->mem->start, resource_size(i2s->mem));
-+err_free:
-+ kfree(i2s);
-+
-+ return ret;
-+}
-+
-+static int __devexit jz4740_i2s_dev_remove(struct platform_device *pdev)
-+{
-+ struct jz4740_i2s *i2s = platform_get_drvdata(pdev);
-+
-+ snd_soc_unregister_dai(&jz4740_i2s_dai);
-+
-+ clk_disable(i2s->clk_aic);
-+ clk_put(i2s->clk_i2s);
-+ clk_put(i2s->clk_aic);
-+
-+ iounmap(i2s->base);
-+ release_mem_region(i2s->mem->start, resource_size(i2s->mem));
-+
-+ platform_set_drvdata(pdev, NULL);
-+ kfree(i2s);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver jz4740_i2s_driver = {
-+ .probe = jz4740_i2s_dev_probe,
-+ .remove = __devexit_p(jz4740_i2s_dev_remove),
-+ .driver = {
-+ .name = "jz4740-i2s",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init jz4740_i2s_init(void)
-+{
-+ return platform_driver_register(&jz4740_i2s_driver);
-+}
-+module_init(jz4740_i2s_init);
-+
-+static void __exit jz4740_i2s_exit(void)
-+{
-+ platform_driver_unregister(&jz4740_i2s_driver);
-+}
-+module_exit(jz4740_i2s_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen, <lars@metafoo.de>");
-+MODULE_DESCRIPTION("Ingenic JZ4740 SoC I2S driver");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:jz4740-i2s");
-diff --git a/sound/soc/jz4740/jz4740-i2s.h b/sound/soc/jz4740/jz4740-i2s.h
-new file mode 100644
-index 0000000..da22ed8
---- /dev/null
-+++ b/sound/soc/jz4740/jz4740-i2s.h
-@@ -0,0 +1,18 @@
-+/*
-+ * 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 _JZ4740_I2S_H
-+#define _JZ4740_I2S_H
-+
-+/* I2S clock source */
-+#define JZ4740_I2S_CLKSRC_EXT 0
-+#define JZ4740_I2S_CLKSRC_PLL 1
-+
-+#define JZ4740_I2S_BIT_CLK 0
-+
-+extern struct snd_soc_dai jz4740_i2s_dai;
-+
-+#endif
-diff --git a/sound/soc/jz4740/jz4740-pcm.c b/sound/soc/jz4740/jz4740-pcm.c
-new file mode 100644
-index 0000000..fd1c203
---- /dev/null
-+++ b/sound/soc/jz4740/jz4740-pcm.c
-@@ -0,0 +1,350 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/interrupt.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/slab.h>
-+
-+#include <linux/dma-mapping.h>
-+
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+
-+#include <asm/mach-jz4740/dma.h>
-+#include "jz4740-pcm.h"
-+
-+struct jz4740_runtime_data {
-+ unsigned int dma_period;
-+ dma_addr_t dma_start;
-+ dma_addr_t dma_pos;
-+ dma_addr_t dma_end;
-+
-+ struct jz4740_dma_chan *dma;
-+
-+ dma_addr_t fifo_addr;
-+};
-+
-+/* identify hardware playback capabilities */
-+static const struct snd_pcm_hardware jz4740_pcm_hardware = {
-+ .info = SNDRV_PCM_INFO_MMAP |
-+ SNDRV_PCM_INFO_MMAP_VALID |
-+ SNDRV_PCM_INFO_INTERLEAVED |
-+ SNDRV_PCM_INFO_BLOCK_TRANSFER,
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8,
-+
-+ .rates = SNDRV_PCM_RATE_8000_48000,
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ .period_bytes_min = 16,
-+ .period_bytes_max = 2 * PAGE_SIZE,
-+ .periods_min = 2,
-+ .periods_max = 128,
-+ .buffer_bytes_max = 128 * 2 * PAGE_SIZE,
-+ .fifo_size = 32,
-+};
-+
-+static void jz4740_pcm_start_transfer(struct jz4740_runtime_data *prtd, int stream)
-+{
-+ unsigned int count;
-+
-+ if (prtd->dma_pos + prtd->dma_period > prtd->dma_end)
-+ count = prtd->dma_end - prtd->dma_pos;
-+ else
-+ count = prtd->dma_period;
-+
-+ jz4740_dma_disable(prtd->dma);
-+
-+ if (stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ jz4740_dma_set_src_addr(prtd->dma, prtd->dma_pos);
-+ jz4740_dma_set_dst_addr(prtd->dma, prtd->fifo_addr);
-+ } else {
-+ jz4740_dma_set_src_addr(prtd->dma, prtd->fifo_addr);
-+ jz4740_dma_set_dst_addr(prtd->dma, prtd->dma_pos);
-+ }
-+
-+ jz4740_dma_set_transfer_count(prtd->dma, count);
-+
-+ jz4740_dma_enable(prtd->dma);
-+
-+ prtd->dma_pos += prtd->dma_period;
-+ if (prtd->dma_pos >= prtd->dma_end)
-+ prtd->dma_pos = prtd->dma_start;
-+}
-+
-+static void jz4740_pcm_dma_transfer_done(struct jz4740_dma_chan *dma, int err,
-+ void *dev_id)
-+{
-+ struct snd_pcm_substream *substream = dev_id;
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct jz4740_runtime_data *prtd = runtime->private_data;
-+
-+ snd_pcm_period_elapsed(substream);
-+
-+ jz4740_pcm_start_transfer(prtd, substream->stream);
-+}
-+
-+static int jz4740_pcm_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct jz4740_runtime_data *prtd = runtime->private_data;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct jz4740_pcm_config *config;
-+
-+ config = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
-+ if (!prtd->dma) {
-+ const char *dma_channel_name;
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ dma_channel_name = "PCM Playback";
-+ else
-+ dma_channel_name = "PCM Capture";
-+
-+ prtd->dma = jz4740_dma_request(substream, dma_channel_name);
-+ }
-+
-+ if (!prtd->dma)
-+ return -EBUSY;
-+
-+ jz4740_dma_configure(prtd->dma, &config->dma_config);
-+ prtd->fifo_addr = config->fifo_addr;
-+
-+ jz4740_dma_set_complete_cb(prtd->dma, jz4740_pcm_dma_transfer_done);
-+
-+ snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
-+ runtime->dma_bytes = params_buffer_bytes(params);
-+
-+ prtd->dma_period = params_period_bytes(params);
-+ prtd->dma_start = runtime->dma_addr;
-+ prtd->dma_pos = prtd->dma_start;
-+ prtd->dma_end = prtd->dma_start + runtime->dma_bytes;
-+
-+ return 0;
-+}
-+
-+static int jz4740_pcm_hw_free(struct snd_pcm_substream *substream)
-+{
-+ struct jz4740_runtime_data *prtd = substream->runtime->private_data;
-+
-+ snd_pcm_set_runtime_buffer(substream, NULL);
-+ if (prtd->dma) {
-+ jz4740_dma_free(prtd->dma);
-+ prtd->dma = NULL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int jz4740_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct jz4740_runtime_data *prtd = substream->runtime->private_data;
-+ int ret = 0;
-+
-+ if (!prtd->dma)
-+ return 0;
-+
-+ prtd->dma_pos = prtd->dma_start;
-+
-+ return ret;
-+}
-+
-+static int jz4740_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct jz4740_runtime_data *prtd = runtime->private_data;
-+
-+ int ret = 0;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ jz4740_pcm_start_transfer(prtd, substream->stream);
-+ break;
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ jz4740_dma_disable(prtd->dma);
-+ break;
-+ default:
-+ ret = -EINVAL;
-+ }
-+
-+ return ret;
-+}
-+
-+static snd_pcm_uframes_t jz4740_pcm_pointer(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct jz4740_runtime_data *prtd = runtime->private_data;
-+ unsigned long count, pos;
-+ snd_pcm_uframes_t offset;
-+ struct jz4740_dma_chan *dma = prtd->dma;
-+
-+ count = jz4740_dma_get_residue(dma);
-+ if (prtd->dma_pos == prtd->dma_start)
-+ pos = prtd->dma_end - prtd->dma_start - count;
-+ else
-+ pos = prtd->dma_pos - prtd->dma_start - count;
-+
-+ offset = bytes_to_frames(runtime, pos);
-+ if (offset >= runtime->buffer_size)
-+ offset = 0;
-+
-+ return offset;
-+}
-+
-+static int jz4740_pcm_open(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct jz4740_runtime_data *prtd;
-+
-+ snd_soc_set_runtime_hwparams(substream, &jz4740_pcm_hardware);
-+ prtd = kzalloc(sizeof(struct jz4740_runtime_data), GFP_KERNEL);
-+
-+ if (prtd == NULL)
-+ return -ENOMEM;
-+
-+ runtime->private_data = prtd;
-+ return 0;
-+}
-+
-+static int jz4740_pcm_close(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct jz4740_runtime_data *prtd = runtime->private_data;
-+
-+ kfree(prtd);
-+
-+ return 0;
-+}
-+
-+static int jz4740_pcm_mmap(struct snd_pcm_substream *substream,
-+ struct vm_area_struct *vma)
-+{
-+ return remap_pfn_range(vma, vma->vm_start,
-+ substream->dma_buffer.addr >> PAGE_SHIFT,
-+ vma->vm_end - vma->vm_start, vma->vm_page_prot);
-+}
-+
-+static struct snd_pcm_ops jz4740_pcm_ops = {
-+ .open = jz4740_pcm_open,
-+ .close = jz4740_pcm_close,
-+ .ioctl = snd_pcm_lib_ioctl,
-+ .hw_params = jz4740_pcm_hw_params,
-+ .hw_free = jz4740_pcm_hw_free,
-+ .prepare = jz4740_pcm_prepare,
-+ .trigger = jz4740_pcm_trigger,
-+ .pointer = jz4740_pcm_pointer,
-+ .mmap = jz4740_pcm_mmap,
-+};
-+
-+static int jz4740_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
-+{
-+ struct snd_pcm_substream *substream = pcm->streams[stream].substream;
-+ struct snd_dma_buffer *buf = &substream->dma_buffer;
-+ size_t size = jz4740_pcm_hardware.buffer_bytes_max;
-+
-+ buf->dev.type = SNDRV_DMA_TYPE_DEV;
-+ buf->dev.dev = pcm->card->dev;
-+ buf->private_data = NULL;
-+
-+ buf->area = dma_alloc_noncoherent(pcm->card->dev, size,
-+ &buf->addr, GFP_KERNEL);
-+ if (!buf->area)
-+ return -ENOMEM;
-+
-+ buf->bytes = size;
-+
-+ return 0;
-+}
-+
-+static void jz4740_pcm_free(struct snd_pcm *pcm)
-+{
-+ struct snd_pcm_substream *substream;
-+ struct snd_dma_buffer *buf;
-+ int stream;
-+
-+ for (stream = 0; stream < 2; stream++) {
-+ substream = pcm->streams[stream].substream;
-+ if (!substream)
-+ continue;
-+
-+ buf = &substream->dma_buffer;
-+ if (!buf->area)
-+ continue;
-+
-+ dma_free_noncoherent(pcm->card->dev, buf->bytes,
-+ buf->area, buf->addr);
-+ buf->area = NULL;
-+ }
-+}
-+
-+static u64 jz4740_pcm_dmamask = DMA_BIT_MASK(32);
-+
-+int jz4740_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
-+ struct snd_pcm *pcm)
-+{
-+ int ret = 0;
-+
-+ if (!card->dev->dma_mask)
-+ card->dev->dma_mask = &jz4740_pcm_dmamask;
-+
-+ if (!card->dev->coherent_dma_mask)
-+ card->dev->coherent_dma_mask = DMA_BIT_MASK(32);
-+
-+ if (dai->playback.channels_min) {
-+ ret = jz4740_pcm_preallocate_dma_buffer(pcm,
-+ SNDRV_PCM_STREAM_PLAYBACK);
-+ if (ret)
-+ goto err;
-+ }
-+
-+ if (dai->capture.channels_min) {
-+ ret = jz4740_pcm_preallocate_dma_buffer(pcm,
-+ SNDRV_PCM_STREAM_CAPTURE);
-+ if (ret)
-+ goto err;
-+ }
-+
-+err:
-+ return ret;
-+}
-+
-+struct snd_soc_platform jz4740_soc_platform = {
-+ .name = "jz4740-pcm",
-+ .pcm_ops = &jz4740_pcm_ops,
-+ .pcm_new = jz4740_pcm_new,
-+ .pcm_free = jz4740_pcm_free,
-+};
-+EXPORT_SYMBOL_GPL(jz4740_soc_platform);
-+
-+static int __init jz4740_soc_platform_init(void)
-+{
-+ return snd_soc_register_platform(&jz4740_soc_platform);
-+}
-+module_init(jz4740_soc_platform_init);
-+
-+static void __exit jz4740_soc_platform_exit(void)
-+{
-+ snd_soc_unregister_platform(&jz4740_soc_platform);
-+}
-+module_exit(jz4740_soc_platform_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("Ingenic SoC JZ4740 PCM driver");
-+MODULE_LICENSE("GPL");
-diff --git a/sound/soc/jz4740/jz4740-pcm.h b/sound/soc/jz4740/jz4740-pcm.h
-new file mode 100644
-index 0000000..e3f221e
---- /dev/null
-+++ b/sound/soc/jz4740/jz4740-pcm.h
-@@ -0,0 +1,22 @@
-+/*
-+ *
-+ * 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 _JZ4740_PCM_H
-+#define _JZ4740_PCM_H
-+
-+#include <linux/dma-mapping.h>
-+#include <asm/mach-jz4740/dma.h>
-+
-+/* platform data */
-+extern struct snd_soc_platform jz4740_soc_platform;
-+
-+struct jz4740_pcm_config {
-+ struct jz4740_dma_config dma_config;
-+ phys_addr_t fifo_addr;
-+};
-+
-+#endif
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/065-qi_lb60-sound.patch b/target/linux/xburst/patches-2.6.34/065-qi_lb60-sound.patch
deleted file mode 100644
index fc7319d3b8..0000000000
--- a/target/linux/xburst/patches-2.6.34/065-qi_lb60-sound.patch
+++ /dev/null
@@ -1,231 +0,0 @@
-From 53b1d94ccca6a06e86460344f7c38949d53374b6 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:36:15 +0200
-Subject: [PATCH] Add qi_lb60 SoC sound board driver
-
----
- sound/soc/jz4740/Kconfig | 8 ++
- sound/soc/jz4740/Makefile | 4 +
- sound/soc/jz4740/qi_lb60.c | 182 ++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 194 insertions(+), 0 deletions(-)
- create mode 100644 sound/soc/jz4740/qi_lb60.c
-
-diff --git a/sound/soc/jz4740/Kconfig b/sound/soc/jz4740/Kconfig
-index 39df949..e546c30 100644
---- a/sound/soc/jz4740/Kconfig
-+++ b/sound/soc/jz4740/Kconfig
-@@ -11,3 +11,11 @@ config SND_JZ4740_SOC_I2S
- tristate "SoC Audio (I2S protocol) for Ingenic jz4740 chip"
- help
- Say Y if you want to use I2S protocol and I2S codec on Ingenic Jz4740 QI_LB60 board.
-+
-+config SND_JZ4740_SOC_QI_LB60
-+ tristate "SoC Audio support for Qi Hardware Ben Nanonote"
-+ depends on SND_JZ4740_SOC && JZ4740_QI_LB60
-+ select SND_JZ4740_SOC_I2S
-+ select SND_SOC_JZCODEC
-+ help
-+ Say Y if you want to add support for SoC audio of internal codec on Ingenic Jz4740 QI_LB60 board.
-diff --git a/sound/soc/jz4740/Makefile b/sound/soc/jz4740/Makefile
-index 1be8d19..be873c1 100644
---- a/sound/soc/jz4740/Makefile
-+++ b/sound/soc/jz4740/Makefile
-@@ -7,3 +7,7 @@ snd-soc-jz4740-i2s-objs := jz4740-i2s.o
- obj-$(CONFIG_SND_JZ4740_SOC) += snd-soc-jz4740.o
- obj-$(CONFIG_SND_JZ4740_SOC_I2S) += snd-soc-jz4740-i2s.o
-
-+# Jz4740 Machine Support
-+snd-soc-qi-lb60-objs := qi_lb60.o
-+
-+obj-$(CONFIG_SND_JZ4740_SOC_QI_LB60) += snd-soc-qi-lb60.o
-diff --git a/sound/soc/jz4740/qi_lb60.c b/sound/soc/jz4740/qi_lb60.c
-new file mode 100644
-index 0000000..a2ce3cf
---- /dev/null
-+++ b/sound/soc/jz4740/qi_lb60.c
-@@ -0,0 +1,182 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/timer.h>
-+#include <linux/interrupt.h>
-+#include <linux/platform_device.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <linux/gpio.h>
-+
-+#include "../codecs/jzcodec.h"
-+#include "jz4740-pcm.h"
-+#include "jz4740-i2s.h"
-+
-+
-+#define QI_LB60_SND_GPIO JZ_GPIO_PORTB(29)
-+#define QI_LB60_AMP_GPIO JZ_GPIO_PORTD(4)
-+
-+static int qi_lb60_spk_event(struct snd_soc_dapm_widget *widget,
-+ struct snd_kcontrol *ctrl, int event)
-+{
-+ int on = 0;
-+ if (event & SND_SOC_DAPM_POST_PMU)
-+ on = 1;
-+ else if (event & SND_SOC_DAPM_PRE_PMD)
-+ on = 0;
-+
-+ gpio_set_value(QI_LB60_SND_GPIO, on);
-+ gpio_set_value(QI_LB60_AMP_GPIO, on);
-+
-+ return 0;
-+}
-+
-+static const struct snd_soc_dapm_widget qi_lb60_widgets[] = {
-+ SND_SOC_DAPM_SPK("Speaker", qi_lb60_spk_event),
-+ SND_SOC_DAPM_MIC("Mic", NULL),
-+};
-+
-+static const struct snd_soc_dapm_route qi_lb60_routes[] = {
-+ {"Mic", NULL, "MIC"},
-+ {"Speaker", NULL, "LOUT"},
-+ {"Speaker", NULL, "ROUT"},
-+};
-+
-+#define QI_LB60_DAIFMT (SND_SOC_DAIFMT_I2S | \
-+ SND_SOC_DAIFMT_NB_NF | \
-+ SND_SOC_DAIFMT_CBM_CFM)
-+
-+static int qi_lb60_codec_init(struct snd_soc_codec *codec)
-+{
-+ int ret;
-+ struct snd_soc_dai *cpu_dai = codec->socdev->card->dai_link->cpu_dai;
-+ struct snd_soc_dai *codec_dai = codec->socdev->card->dai_link->codec_dai;
-+
-+ snd_soc_dapm_nc_pin(codec, "LIN");
-+ snd_soc_dapm_nc_pin(codec, "RIN");
-+
-+ ret = snd_soc_dai_set_fmt(codec_dai, QI_LB60_DAIFMT);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set codec dai format: %d\n", ret);
-+ return ret;
-+ }
-+
-+ ret = snd_soc_dai_set_fmt(cpu_dai, QI_LB60_DAIFMT);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set cpu dai format: %d\n", ret);
-+ return ret;
-+ }
-+
-+ ret = snd_soc_dai_set_sysclk(codec_dai, JZCODEC_SYSCLK, 111,
-+ SND_SOC_CLOCK_IN);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set codec dai sysclk: %d\n", ret);
-+ return ret;
-+ }
-+
-+ snd_soc_dapm_new_controls(codec, qi_lb60_widgets, ARRAY_SIZE(qi_lb60_widgets));
-+
-+ snd_soc_dapm_add_routes(codec, qi_lb60_routes, ARRAY_SIZE(qi_lb60_routes));
-+
-+ snd_soc_dapm_sync(codec);
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_dai_link qi_lb60_dai = {
-+ .name = "jz-codec",
-+ .stream_name = "JZCODEC",
-+ .cpu_dai = &jz4740_i2s_dai,
-+ .codec_dai = &jz_codec_dai,
-+ .init = qi_lb60_codec_init,
-+};
-+
-+static struct snd_soc_card qi_lb60 = {
-+ .name = "QI LB60",
-+ .dai_link = &qi_lb60_dai,
-+ .num_links = 1,
-+ .platform = &jz4740_soc_platform,
-+};
-+
-+static struct snd_soc_device qi_lb60_snd_devdata = {
-+ .card = &qi_lb60,
-+ .codec_dev = &soc_codec_dev_jzcodec,
-+};
-+
-+static struct platform_device *qi_lb60_snd_device;
-+
-+static int __init qi_lb60_init(void)
-+{
-+ int ret;
-+
-+ qi_lb60_snd_device = platform_device_alloc("soc-audio", -1);
-+
-+ if (!qi_lb60_snd_device)
-+ return -ENOMEM;
-+
-+
-+ ret = gpio_request(QI_LB60_SND_GPIO, "SND");
-+ if (ret) {
-+ pr_err("qi_lb60 snd: Failed to request SND GPIO(%d): %d\n",
-+ QI_LB60_SND_GPIO, ret);
-+ goto err_device_put;
-+ }
-+
-+ ret = gpio_request(QI_LB60_AMP_GPIO, "AMP");
-+ if (ret) {
-+ pr_err("qi_lb60 snd: Failed to request AMP GPIO(%d): %d\n",
-+ QI_LB60_AMP_GPIO, ret);
-+ goto err_gpio_free_snd;
-+ }
-+
-+ gpio_direction_output(JZ_GPIO_PORTB(29), 0);
-+ gpio_direction_output(JZ_GPIO_PORTD(4), 0);
-+
-+ platform_set_drvdata(qi_lb60_snd_device, &qi_lb60_snd_devdata);
-+ qi_lb60_snd_devdata.dev = &qi_lb60_snd_device->dev;
-+ ret = platform_device_add(qi_lb60_snd_device);
-+ if (ret) {
-+ pr_err("qi_lb60 snd: Failed to add snd soc device: %d\n", ret);
-+ goto err_unset_pdata;
-+ }
-+
-+ return 0;
-+
-+err_unset_pdata:
-+ platform_set_drvdata(qi_lb60_snd_device, NULL);
-+/*err_gpio_free_amp:*/
-+ gpio_free(QI_LB60_AMP_GPIO);
-+err_gpio_free_snd:
-+ gpio_free(QI_LB60_SND_GPIO);
-+err_device_put:
-+ platform_device_put(qi_lb60_snd_device);
-+
-+ return ret;
-+}
-+module_init(qi_lb60_init);
-+
-+static void __exit qi_lb60_exit(void)
-+{
-+ gpio_free(QI_LB60_AMP_GPIO);
-+ gpio_free(QI_LB60_SND_GPIO);
-+ platform_device_unregister(qi_lb60_snd_device);
-+}
-+module_exit(qi_lb60_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("ALSA SoC QI LB60 Audio support");
-+MODULE_LICENSE("GPL v2");
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/066-n516-sound.patch b/target/linux/xburst/patches-2.6.34/066-n516-sound.patch
deleted file mode 100644
index f46aebffba..0000000000
--- a/target/linux/xburst/patches-2.6.34/066-n516-sound.patch
+++ /dev/null
@@ -1,352 +0,0 @@
-From 34b6a12e70e8260cf273dab7e618602df0c1bebe Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:37:47 +0200
-Subject: [PATCH] Add N516 sound SoC board driver
-
----
- sound/soc/jz4740/Kconfig | 8 ++
- sound/soc/jz4740/Makefile | 2 +
- sound/soc/jz4740/n516.c | 303 +++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 313 insertions(+), 0 deletions(-)
- create mode 100644 sound/soc/jz4740/n516.c
-
-diff --git a/sound/soc/jz4740/Kconfig b/sound/soc/jz4740/Kconfig
-index e546c30..fea440d 100644
---- a/sound/soc/jz4740/Kconfig
-+++ b/sound/soc/jz4740/Kconfig
-@@ -19,3 +19,11 @@ config SND_JZ4740_SOC_QI_LB60
- select SND_SOC_JZCODEC
- help
- Say Y if you want to add support for SoC audio of internal codec on Ingenic Jz4740 QI_LB60 board.
-+
-+config SND_JZ4740_SOC_N516
-+ tristate "SoC Audio support for Hanvon N516 eBook reader"
-+ depends on SND_JZ4740_SOC && JZ4740_N516
-+ select SND_JZ4740_SOC_I2S
-+ select SND_SOC_JZCODEC
-+ help
-+ Say Y if you want to enable support for SoC audio on the Hanvon N516.
-diff --git a/sound/soc/jz4740/Makefile b/sound/soc/jz4740/Makefile
-index be873c1..b64d912 100644
---- a/sound/soc/jz4740/Makefile
-+++ b/sound/soc/jz4740/Makefile
-@@ -9,5 +9,7 @@ obj-$(CONFIG_SND_JZ4740_SOC_I2S) += snd-soc-jz4740-i2s.o
-
- # Jz4740 Machine Support
- snd-soc-qi-lb60-objs := qi_lb60.o
-+snd-soc-n516-objs := n516.o
-
- obj-$(CONFIG_SND_JZ4740_SOC_QI_LB60) += snd-soc-qi-lb60.o
-+obj-$(CONFIG_SND_JZ4740_SOC_N516) += snd-soc-n516.o
-diff --git a/sound/soc/jz4740/n516.c b/sound/soc/jz4740/n516.c
-new file mode 100644
-index 0000000..9cb51c2
---- /dev/null
-+++ b/sound/soc/jz4740/n516.c
-@@ -0,0 +1,303 @@
-+/*
-+ * Copyright (C) 2009, Yauhen Kharuzhy <jekhor@gmail.com>
-+ * OpenInkpot project
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/interrupt.h>
-+#include <linux/platform_device.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/jack.h>
-+#include <linux/gpio.h>
-+#include <linux/workqueue.h>
-+
-+#include "../codecs/jzcodec.h"
-+#include "jz4740-pcm.h"
-+#include "jz4740-i2s.h"
-+
-+#include <asm/mach-jz4740/board-n516.h>
-+
-+enum {
-+ N516_SPEAKER_AUTO = 0,
-+ N516_SPEAKER_OFF = 1,
-+ N516_SPEAKER_ON = 2,
-+};
-+
-+static int n516_speaker_mode;
-+static struct snd_soc_codec *n516_codec;
-+static struct work_struct n516_headphone_work;
-+
-+static void n516_ext_control(void)
-+{
-+ if (!n516_codec)
-+ return;
-+
-+ switch (n516_speaker_mode) {
-+ case N516_SPEAKER_ON:
-+ snd_soc_dapm_enable_pin(n516_codec, "Speaker");
-+ break;
-+ case N516_SPEAKER_OFF:
-+ snd_soc_dapm_disable_pin(n516_codec, "Speaker");
-+ break;
-+ case N516_SPEAKER_AUTO:
-+ if (snd_soc_dapm_get_pin_status(n516_codec, "Headphone"))
-+ snd_soc_dapm_disable_pin(n516_codec, "Speaker");
-+ else
-+ snd_soc_dapm_enable_pin(n516_codec, "Speaker");
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ /* signal a DAPM event */
-+ snd_soc_dapm_sync(n516_codec);
-+}
-+
-+static int n516_speaker_event(struct snd_soc_dapm_widget *widget,
-+ struct snd_kcontrol *ctrl, int event)
-+{
-+ int on = !SND_SOC_DAPM_EVENT_OFF(event);
-+
-+ gpio_set_value(GPIO_SPEAKER_ENABLE, on);
-+
-+ return 0;
-+}
-+
-+static void n516_headphone_event_work(struct work_struct *work)
-+{
-+ n516_ext_control();
-+}
-+
-+static int n516_headphone_event(struct snd_soc_dapm_widget *widget,
-+ struct snd_kcontrol *ctrl, int event)
-+{
-+ /* We can't call soc_dapm_sync from a event handler */
-+ if (event & (SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD))
-+ schedule_work(&n516_headphone_work);
-+ return 0;
-+}
-+
-+static const struct snd_soc_dapm_widget n516_widgets[] = {
-+ SND_SOC_DAPM_SPK("Speaker", n516_speaker_event),
-+ SND_SOC_DAPM_HP("Headphone", n516_headphone_event),
-+ SND_SOC_DAPM_MIC("Mic", NULL),
-+};
-+
-+static const struct snd_soc_dapm_route n516_routes[] = {
-+ {"Mic", NULL, "MIC"},
-+ {"Speaker", NULL, "LOUT"},
-+ {"Speaker", NULL, "ROUT"},
-+ {"Headphone", NULL, "LOUT"},
-+ {"Headphone", NULL, "ROUT"},
-+};
-+
-+static const char *n516_speaker_modes[] = {"Auto", "Off", "On"};
-+static const struct soc_enum n516_speaker_mode_enum =
-+ SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(n516_speaker_modes), n516_speaker_modes);
-+
-+static int n516_get_speaker_mode(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = n516_speaker_mode;
-+ return 0;
-+}
-+
-+static int n516_set_speaker_mode(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ if (n516_speaker_mode == ucontrol->value.integer.value[0])
-+ return 0;
-+
-+ n516_speaker_mode = ucontrol->value.integer.value[0];
-+ n516_ext_control();
-+ return 1;
-+}
-+
-+static const struct snd_kcontrol_new n516_controls[] = {
-+ SOC_ENUM_EXT("Speaker Function", n516_speaker_mode_enum,
-+ n516_get_speaker_mode, n516_set_speaker_mode),
-+};
-+
-+#define N516_DAIFMT (SND_SOC_DAIFMT_I2S | \
-+ SND_SOC_DAIFMT_NB_NF | \
-+ SND_SOC_DAIFMT_CBM_CFM)
-+
-+static int n516_codec_init(struct snd_soc_codec *codec)
-+{
-+ int ret;
-+ struct snd_soc_dai *cpu_dai = codec->socdev->card->dai_link->cpu_dai;
-+ struct snd_soc_dai *codec_dai = codec->socdev->card->dai_link->codec_dai;
-+
-+ n516_codec = codec;
-+
-+ snd_soc_dapm_nc_pin(codec, "LIN");
-+ snd_soc_dapm_nc_pin(codec, "RIN");
-+
-+ ret = snd_soc_dai_set_fmt(codec_dai, N516_DAIFMT);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set codec dai format: %d\n", ret);
-+ return ret;
-+ }
-+
-+ ret = snd_soc_dai_set_fmt(cpu_dai, N516_DAIFMT);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set cpu dai format: %d\n", ret);
-+ return ret;
-+ }
-+
-+ ret = snd_soc_dai_set_sysclk(codec_dai, JZCODEC_SYSCLK, 111,
-+ SND_SOC_CLOCK_IN);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set codec dai sysclk: %d\n", ret);
-+ return ret;
-+ }
-+
-+ ret = snd_soc_add_controls(codec, n516_controls,
-+ ARRAY_SIZE(n516_controls));
-+ if (ret) {
-+ dev_err(codec->dev, "Failed to add controls: %d\n", ret);
-+ return ret;
-+ }
-+
-+
-+ ret = snd_soc_dapm_new_controls(codec, n516_widgets,
-+ ARRAY_SIZE(n516_widgets));
-+ if (ret) {
-+ dev_err(codec->dev, "Failed to add dapm controls: %d\n", ret);
-+ return ret;
-+ }
-+
-+ ret = snd_soc_dapm_add_routes(codec, n516_routes, ARRAY_SIZE(n516_routes));
-+ if (ret) {
-+ dev_err(codec->dev, "Failed to add dapm routes: %d\n", ret);
-+ return ret;
-+ }
-+
-+ snd_soc_dapm_sync(codec);
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_dai_link n516_dai = {
-+ .name = "jz-codec",
-+ .stream_name = "JZCODEC",
-+ .cpu_dai = &jz4740_i2s_dai,
-+ .codec_dai = &jz_codec_dai,
-+ .init = n516_codec_init,
-+};
-+
-+static struct snd_soc_card n516_card = {
-+ .name = "N516",
-+ .dai_link = &n516_dai,
-+ .num_links = 1,
-+ .platform = &jz4740_soc_platform,
-+};
-+
-+static struct snd_soc_device n516_snd_devdata = {
-+ .card = &n516_card,
-+ .codec_dev = &soc_codec_dev_jzcodec,
-+};
-+
-+static struct platform_device *n516_snd_device;
-+
-+static struct snd_soc_jack n516_hp_jack;
-+
-+static struct snd_soc_jack_pin n516_hp_pin = {
-+ .pin = "Headphone",
-+ .mask = SND_JACK_HEADPHONE,
-+};
-+
-+static struct snd_soc_jack_gpio n516_hp_gpio = {
-+ .gpio = GPIO_HPHONE_DETECT,
-+ .name = "Headphone detect",
-+ .report = SND_JACK_HEADPHONE,
-+ .debounce_time = 100,
-+};
-+
-+static int __init n516_add_headphone_jack(void)
-+{
-+ int ret;
-+
-+ ret = snd_soc_jack_new(&n516_card, "Headphone jack",
-+ SND_JACK_HEADPHONE, &n516_hp_jack);
-+ if (ret)
-+ return ret;
-+
-+ ret = snd_soc_jack_add_pins(&n516_hp_jack, 1, &n516_hp_pin);
-+ if (ret)
-+ return ret;
-+
-+ ret = snd_soc_jack_add_gpios(&n516_hp_jack, 1, &n516_hp_gpio);
-+
-+ return ret;
-+}
-+
-+static int __init n516_init(void)
-+{
-+ int ret;
-+
-+ n516_snd_device = platform_device_alloc("soc-audio", -1);
-+
-+ if (!n516_snd_device)
-+ return -ENOMEM;
-+
-+ ret = gpio_request(GPIO_SPEAKER_ENABLE, "Speaker enable");
-+ if (ret) {
-+ pr_err("n516 snd: Failed to request SPEAKER_ENABLE GPIO(%d): %d\n",
-+ GPIO_SPEAKER_ENABLE, ret);
-+ goto err_device_put;
-+ }
-+
-+ gpio_direction_output(GPIO_SPEAKER_ENABLE, 0);
-+ INIT_WORK(&n516_headphone_work, n516_headphone_event_work);
-+
-+ platform_set_drvdata(n516_snd_device, &n516_snd_devdata);
-+ n516_snd_devdata.dev = &n516_snd_device->dev;
-+ ret = platform_device_add(n516_snd_device);
-+ if (ret) {
-+ pr_err("n516 snd: Failed to add snd soc device: %d\n", ret);
-+ goto err_unset_pdata;
-+ }
-+
-+ ret = n516_add_headphone_jack();
-+ /* We can live without it, so just print a warning */
-+ if (ret)
-+ pr_warning("n516 snd: Failed to initalise headphone jack: %d\n", ret);
-+
-+ return 0;
-+
-+err_unset_pdata:
-+ platform_set_drvdata(n516_snd_device, NULL);
-+/*err_gpio_free_speaker:*/
-+ gpio_free(GPIO_SPEAKER_ENABLE);
-+err_device_put:
-+ platform_device_put(n516_snd_device);
-+
-+ return ret;
-+}
-+module_init(n516_init);
-+
-+static void __exit n516_exit(void)
-+{
-+ snd_soc_jack_free_gpios(&n516_hp_jack, 1, &n516_hp_gpio);
-+ gpio_free(GPIO_SPEAKER_ENABLE);
-+ platform_device_unregister(n516_snd_device);
-+}
-+module_exit(n516_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("ALSA SoC N516 Audio support");
-+MODULE_LICENSE("GPL v2");
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/067-n526-sound.patch b/target/linux/xburst/patches-2.6.34/067-n526-sound.patch
deleted file mode 100644
index 9a40b9b8cb..0000000000
--- a/target/linux/xburst/patches-2.6.34/067-n526-sound.patch
+++ /dev/null
@@ -1,219 +0,0 @@
-From c2ac996d78f5015d759375792ba390739c1acd00 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:38:41 +0200
-Subject: [PATCH] Add N526 sound SoC board driver
-
----
- sound/soc/jz4740/Kconfig | 8 ++
- sound/soc/jz4740/Makefile | 2 +
- sound/soc/jz4740/n526.c | 169 +++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 179 insertions(+), 0 deletions(-)
- create mode 100644 sound/soc/jz4740/n526.c
-
-diff --git a/sound/soc/jz4740/Kconfig b/sound/soc/jz4740/Kconfig
-index fea440d..cd00c8c 100644
---- a/sound/soc/jz4740/Kconfig
-+++ b/sound/soc/jz4740/Kconfig
-@@ -27,3 +27,11 @@ config SND_JZ4740_SOC_N516
- select SND_SOC_JZCODEC
- help
- Say Y if you want to enable support for SoC audio on the Hanvon N516.
-+
-+config SND_JZ4740_SOC_N526
-+ tristate "SoC Audio support for Hanvon N526 eBook reader"
-+ depends on SND_JZ4740_SOC && JZ4740_N526
-+ select SND_JZ4740_SOC_I2S
-+ select SND_SOC_JZCODEC
-+ help
-+ Say Y if you want to enable support for SoC audio on the Hanvon N526.
-diff --git a/sound/soc/jz4740/Makefile b/sound/soc/jz4740/Makefile
-index b64d912..e7952d3 100644
---- a/sound/soc/jz4740/Makefile
-+++ b/sound/soc/jz4740/Makefile
-@@ -10,6 +10,8 @@ obj-$(CONFIG_SND_JZ4740_SOC_I2S) += snd-soc-jz4740-i2s.o
- # Jz4740 Machine Support
- snd-soc-qi-lb60-objs := qi_lb60.o
- snd-soc-n516-objs := n516.o
-+snd-soc-n526-objs := n526.o
-
- obj-$(CONFIG_SND_JZ4740_SOC_QI_LB60) += snd-soc-qi-lb60.o
- obj-$(CONFIG_SND_JZ4740_SOC_N516) += snd-soc-n516.o
-+obj-$(CONFIG_SND_JZ4740_SOC_N526) += snd-soc-n526.o
-diff --git a/sound/soc/jz4740/n526.c b/sound/soc/jz4740/n526.c
-new file mode 100644
-index 0000000..2283904
---- /dev/null
-+++ b/sound/soc/jz4740/n526.c
-@@ -0,0 +1,169 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/timer.h>
-+#include <linux/interrupt.h>
-+#include <linux/platform_device.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <linux/gpio.h>
-+
-+#include "../codecs/jzcodec.h"
-+#include "jz4740-pcm.h"
-+#include "jz4740-i2s.h"
-+
-+#define N526_AMP_EN_GPIO JZ_GPIO_PORTD(4)
-+
-+static int n526_spk_event(struct snd_soc_dapm_widget *widget,
-+ struct snd_kcontrol *ctrl, int event)
-+{
-+ gpio_set_value(N526_AMP_EN_GPIO, !SND_SOC_DAPM_EVENT_OFF(event));
-+ return 0;
-+}
-+
-+static const struct snd_soc_dapm_widget n526_widgets[] = {
-+ SND_SOC_DAPM_SPK("Speaker", n526_spk_event),
-+ SND_SOC_DAPM_HP("Headphone", NULL),
-+ SND_SOC_DAPM_MIC("Mic", NULL),
-+};
-+
-+static const struct snd_soc_dapm_route n526_routes[] = {
-+ {"Mic", NULL, "MIC"},
-+ {"Speaker", NULL, "LOUT"},
-+ {"Speaker", NULL, "ROUT"},
-+ {"Headphone", NULL, "LOUT"},
-+ {"Headphone", NULL, "ROUT"},
-+};
-+
-+static const struct snd_kcontrol_new n526_controls[] = {
-+ SOC_DAPM_PIN_SWITCH("Speaker"),
-+};
-+
-+#define N526_DAIFMT (SND_SOC_DAIFMT_I2S | \
-+ SND_SOC_DAIFMT_NB_NF | \
-+ SND_SOC_DAIFMT_CBM_CFM)
-+
-+static int n526_codec_init(struct snd_soc_codec *codec)
-+{
-+ int ret;
-+ struct snd_soc_dai *cpu_dai = codec->socdev->card->dai_link->cpu_dai;
-+ struct snd_soc_dai *codec_dai = codec->socdev->card->dai_link->codec_dai;
-+
-+ snd_soc_dapm_nc_pin(codec, "LIN");
-+ snd_soc_dapm_nc_pin(codec, "RIN");
-+
-+ ret = snd_soc_dai_set_fmt(codec_dai, N526_DAIFMT);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set codec dai format: %d\n", ret);
-+ return ret;
-+ }
-+
-+ ret = snd_soc_dai_set_fmt(cpu_dai, N526_DAIFMT);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set cpu dai format: %d\n", ret);
-+ return ret;
-+ }
-+
-+ ret = snd_soc_dai_set_sysclk(codec_dai, JZCODEC_SYSCLK, 111,
-+ SND_SOC_CLOCK_IN);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set codec dai sysclk: %d\n", ret);
-+ return ret;
-+ }
-+
-+ snd_soc_dapm_new_controls(codec, n526_widgets, ARRAY_SIZE(n526_widgets));
-+
-+ snd_soc_add_controls(codec, n526_controls,
-+ ARRAY_SIZE(n526_controls));
-+
-+ snd_soc_dapm_add_routes(codec, n526_routes, ARRAY_SIZE(n526_routes));
-+
-+ snd_soc_dapm_sync(codec);
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_dai_link n526_dai = {
-+ .name = "jz-codec",
-+ .stream_name = "JZCODEC",
-+ .cpu_dai = &jz4740_i2s_dai,
-+ .codec_dai = &jz_codec_dai,
-+ .init = n526_codec_init,
-+};
-+
-+static struct snd_soc_card n526 = {
-+ .name = "N526",
-+ .dai_link = &n526_dai,
-+ .num_links = 1,
-+ .platform = &jz4740_soc_platform,
-+};
-+
-+static struct snd_soc_device n526_snd_devdata = {
-+ .card = &n526,
-+ .codec_dev = &soc_codec_dev_jzcodec,
-+};
-+
-+static struct platform_device *n526_snd_device;
-+
-+static int __init n526_init(void)
-+{
-+ int ret;
-+
-+ n526_snd_device = platform_device_alloc("soc-audio", -1);
-+
-+ if (!n526_snd_device)
-+ return -ENOMEM;
-+
-+ ret = gpio_request(N526_AMP_EN_GPIO, "AMP");
-+ if (ret) {
-+ pr_err("n526 snd: Failed to request AMP GPIO(%d): %d\n",
-+ N526_AMP_EN_GPIO, ret);
-+ goto err_device_put;
-+ }
-+
-+ gpio_direction_output(JZ_GPIO_PORTD(4), 0);
-+
-+ platform_set_drvdata(n526_snd_device, &n526_snd_devdata);
-+ n526_snd_devdata.dev = &n526_snd_device->dev;
-+ ret = platform_device_add(n526_snd_device);
-+ if (ret) {
-+ pr_err("n526 snd: Failed to add snd soc device: %d\n", ret);
-+ goto err_unset_pdata;
-+ }
-+
-+ return 0;
-+
-+err_unset_pdata:
-+ platform_set_drvdata(n526_snd_device, NULL);
-+ gpio_free(N526_AMP_EN_GPIO);
-+err_device_put:
-+ platform_device_put(n526_snd_device);
-+
-+ return ret;
-+}
-+module_init(n526_init);
-+
-+static void __exit n526_exit(void)
-+{
-+ gpio_free(N526_AMP_EN_GPIO);
-+ platform_device_unregister(n526_snd_device);
-+}
-+module_exit(n526_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("ALSA SoC N526 audio support");
-+MODULE_LICENSE("GPL v2");
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/100-battery.patch b/target/linux/xburst/patches-2.6.34/100-battery.patch
deleted file mode 100644
index 3e6a6b959a..0000000000
--- a/target/linux/xburst/patches-2.6.34/100-battery.patch
+++ /dev/null
@@ -1,441 +0,0 @@
-From 83f97dcbcc93584a7d7930b6fe06562691bd865a Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:28:54 +0200
-Subject: [PATCH] Add jz4740 battery driver
-
----
- drivers/power/Kconfig | 11 +
- drivers/power/Makefile | 1 +
- drivers/power/jz4740-battery.c | 359 ++++++++++++++++++++++++++++++++++
- include/linux/power/jz4740-battery.h | 24 +++
- 4 files changed, 395 insertions(+), 0 deletions(-)
- create mode 100644 drivers/power/jz4740-battery.c
- create mode 100644 include/linux/power/jz4740-battery.h
-
-diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
-index faaa9b4..2f4e51f 100644
---- a/drivers/power/Kconfig
-+++ b/drivers/power/Kconfig
-@@ -131,4 +131,15 @@ config CHARGER_PCF50633
- help
- Say Y to include support for NXP PCF50633 Main Battery Charger.
-
-+config BATTERY_JZ4740
-+ tristate "Ingenic JZ4720/JZ4740 battery"
-+ depends on SOC_JZ4740
-+ depends on JZ4740_ADC
-+ help
-+ Say Y to enable support for the battery on Ingenic JZ4720/JZ4740 based
-+ boards.
-+
-+ This driver can be build as a module. If so, the module will be
-+ called jz4740-battery.
-+
- endif # POWER_SUPPLY
-diff --git a/drivers/power/Makefile b/drivers/power/Makefile
-index a2ba7c8..3b6b971 100644
---- a/drivers/power/Makefile
-+++ b/drivers/power/Makefile
-@@ -32,3 +32,4 @@ obj-$(CONFIG_BATTERY_BQ27x00) += bq27x00_battery.o
- obj-$(CONFIG_BATTERY_DA9030) += da9030_battery.o
- obj-$(CONFIG_BATTERY_MAX17040) += max17040_battery.o
- obj-$(CONFIG_CHARGER_PCF50633) += pcf50633-charger.o
-+obj-$(CONFIG_BATTERY_JZ4740) += jz4740-battery.o
-diff --git a/drivers/power/jz4740-battery.c b/drivers/power/jz4740-battery.c
-new file mode 100644
-index 0000000..c89b9f7
---- /dev/null
-+++ b/drivers/power/jz4740-battery.c
-@@ -0,0 +1,359 @@
-+/*
-+ * Battery measurement code for Ingenic JZ SOC.
-+ *
-+ * Copyright (C) 2009 Jiejing Zhang <kzjeef@gmail.com>
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ *
-+ * based on tosa_battery.c
-+ *
-+ * Copyright (C) 2008 Marek Vasut <marek.vasut@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/interrupt.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+#include <linux/spinlock.h>
-+
-+#include <linux/delay.h>
-+#include <linux/gpio.h>
-+#include <linux/power_supply.h>
-+
-+#include <linux/power/jz4740-battery.h>
-+#include <linux/jz4740-adc.h>
-+
-+struct jz_battery {
-+ struct jz_battery_platform_data *pdata;
-+
-+ int charge_irq;
-+
-+ int status;
-+ long voltage;
-+
-+ struct power_supply battery;
-+ struct delayed_work work;
-+};
-+
-+static inline struct jz_battery *psy_to_jz_battery(struct power_supply *psy)
-+{
-+ return container_of(psy, struct jz_battery, battery);
-+}
-+
-+static long jz_battery_read_voltage(struct jz_battery *jz_battery)
-+{
-+ struct device *adc = jz_battery->battery.dev->parent->parent;
-+ enum jz_adc_battery_scale scale;
-+
-+ if (jz_battery->pdata->info.voltage_max_design > 2500000)
-+ scale = JZ_ADC_BATTERY_SCALE_7V5;
-+ else
-+ scale = JZ_ADC_BATTERY_SCALE_2V5;
-+
-+ return jz4740_adc_read_battery_voltage(adc, scale);
-+}
-+
-+static int jz_battery_get_capacity(struct power_supply *psy)
-+{
-+ struct jz_battery *jz_battery = psy_to_jz_battery(psy);
-+ struct power_supply_info *info = &jz_battery->pdata->info;
-+ long voltage;
-+ int ret;
-+ int voltage_span;
-+
-+ voltage = jz_battery_read_voltage(jz_battery);
-+
-+ if (voltage < 0)
-+ return voltage;
-+
-+ voltage_span = info->voltage_max_design - info->voltage_min_design;
-+ ret = ((voltage - info->voltage_min_design) * 100) / voltage_span;
-+
-+ if (ret > 100)
-+ ret = 100;
-+ else if (ret < 0)
-+ ret = 0;
-+
-+ return ret;
-+}
-+
-+static int jz_battery_get_property(struct power_supply *psy,
-+ enum power_supply_property psp,
-+ union power_supply_propval *val)
-+{
-+ struct jz_battery *jz_battery = psy_to_jz_battery(psy);
-+ struct power_supply_info *info = &jz_battery->pdata->info;
-+ long voltage;
-+
-+ switch (psp) {
-+ case POWER_SUPPLY_PROP_STATUS:
-+ val->intval = jz_battery->status;
-+ break;
-+ case POWER_SUPPLY_PROP_TECHNOLOGY:
-+ val->intval = jz_battery->pdata->info.technology;
-+ break;
-+ case POWER_SUPPLY_PROP_HEALTH:
-+ voltage = jz_battery_read_voltage(jz_battery);
-+ if (voltage < info->voltage_min_design)
-+ val->intval = POWER_SUPPLY_HEALTH_DEAD;
-+ else
-+ val->intval = POWER_SUPPLY_HEALTH_GOOD;
-+ break;
-+ case POWER_SUPPLY_PROP_CAPACITY:
-+ val->intval = jz_battery_get_capacity(psy);
-+ break;
-+ case POWER_SUPPLY_PROP_VOLTAGE_NOW:
-+ val->intval = jz_battery_read_voltage(jz_battery);
-+ if (val->intval < 0)
-+ return val->intval;
-+ break;
-+ case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
-+ val->intval = info->voltage_max_design;
-+ break;
-+ case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
-+ val->intval = info->voltage_min_design;
-+ break;
-+ case POWER_SUPPLY_PROP_PRESENT:
-+ val->intval = 1;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+ return 0;
-+}
-+
-+static void jz_battery_external_power_changed(struct power_supply *psy)
-+{
-+ struct jz_battery *jz_battery = psy_to_jz_battery(psy);
-+
-+ cancel_delayed_work(&jz_battery->work);
-+ schedule_delayed_work(&jz_battery->work, 0);
-+}
-+
-+static irqreturn_t jz_battery_charge_irq(int irq, void *data)
-+{
-+ struct jz_battery *jz_battery = data;
-+
-+ cancel_delayed_work(&jz_battery->work);
-+ schedule_delayed_work(&jz_battery->work, 0);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void jz_battery_update(struct jz_battery *jz_battery)
-+{
-+ int status;
-+ long voltage;
-+ long voltage_difference;
-+ bool has_changed = 0;
-+
-+ if (gpio_is_valid(jz_battery->pdata->gpio_charge)) {
-+ int is_charging;
-+
-+ is_charging = gpio_get_value(jz_battery->pdata->gpio_charge);
-+ is_charging ^= jz_battery->pdata->gpio_charge_active_low;
-+ if (is_charging)
-+ status = POWER_SUPPLY_STATUS_CHARGING;
-+ else
-+ status = POWER_SUPPLY_STATUS_NOT_CHARGING;
-+
-+ if (status != jz_battery->status) {
-+ jz_battery->status = status;
-+ has_changed = 1;
-+ }
-+ }
-+
-+ voltage = jz_battery_read_voltage(jz_battery);
-+ voltage_difference = voltage - jz_battery->voltage;
-+ if (voltage_difference > 50000 || voltage_difference < 50000) {
-+ jz_battery->voltage = voltage;
-+ has_changed = 1;
-+ }
-+ if (has_changed)
-+ power_supply_changed(&jz_battery->battery);
-+}
-+
-+static enum power_supply_property jz_battery_properties[] = {
-+ POWER_SUPPLY_PROP_STATUS,
-+ POWER_SUPPLY_PROP_TECHNOLOGY,
-+ POWER_SUPPLY_PROP_HEALTH,
-+ POWER_SUPPLY_PROP_CAPACITY,
-+ POWER_SUPPLY_PROP_VOLTAGE_NOW,
-+ POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN,
-+ POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
-+ POWER_SUPPLY_PROP_PRESENT,
-+};
-+
-+static void jz_battery_work(struct work_struct *work)
-+{
-+ /* Too small interval will increase system workload */
-+ const int interval = HZ * 30;
-+ struct jz_battery *jz_battery = container_of(work, struct jz_battery,
-+ work.work);
-+
-+ jz_battery_update(jz_battery);
-+ schedule_delayed_work(&jz_battery->work, interval);
-+}
-+
-+static int __devinit jz_battery_probe(struct platform_device *pdev)
-+{
-+ int ret = 0;
-+ struct jz_battery_platform_data *pdata = pdev->dev.platform_data;
-+ struct jz_battery *jz_battery;
-+ struct power_supply *battery;
-+
-+ if (!pdev->dev.platform_data) {
-+ dev_err(&pdev->dev, "No platform data\n");
-+ return -EINVAL;
-+ }
-+
-+ jz_battery = kzalloc(sizeof(*jz_battery), GFP_KERNEL);
-+
-+ if (!jz_battery) {
-+ dev_err(&pdev->dev, "Failed to allocate driver structure\n");
-+ return -ENOMEM;
-+ }
-+
-+ battery = &jz_battery->battery;
-+ battery->name = pdata->info.name;
-+ battery->type = POWER_SUPPLY_TYPE_BATTERY;
-+ battery->properties = jz_battery_properties;
-+ battery->num_properties = ARRAY_SIZE(jz_battery_properties);
-+ battery->get_property = jz_battery_get_property;
-+ battery->external_power_changed = jz_battery_external_power_changed;
-+ battery->use_for_apm = 1;
-+
-+ jz_battery->pdata = pdata;
-+
-+ INIT_DELAYED_WORK(&jz_battery->work, jz_battery_work);
-+
-+ if (gpio_is_valid(pdata->gpio_charge)) {
-+ ret = gpio_request(pdata->gpio_charge, dev_name(&pdev->dev));
-+ if (ret) {
-+ dev_err(&pdev->dev, "charger state gpio request failed.\n");
-+ goto err_free;
-+ }
-+ ret = gpio_direction_input(pdata->gpio_charge);
-+ if (ret) {
-+ dev_err(&pdev->dev, "charger state gpio set direction failed.\n");
-+ goto err_free_gpio;
-+ }
-+
-+ jz_battery->charge_irq = gpio_to_irq(pdata->gpio_charge);
-+
-+ if (jz_battery->charge_irq >= 0) {
-+ ret = request_irq(jz_battery->charge_irq,
-+ jz_battery_charge_irq,
-+ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
-+ dev_name(&pdev->dev), jz_battery);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request charge irq: %d\n", ret);
-+ goto err_free_gpio;
-+ }
-+ }
-+ } else {
-+ jz_battery->charge_irq = -1;
-+ }
-+
-+
-+ ret = power_supply_register(&pdev->dev, &jz_battery->battery);
-+ if (ret) {
-+ dev_err(&pdev->dev, "power supply battery register failed.\n");
-+ goto err_free_irq;
-+ }
-+
-+ platform_set_drvdata(pdev, jz_battery);
-+ schedule_delayed_work(&jz_battery->work, 0);
-+
-+ return 0;
-+
-+err_free_irq:
-+ if (jz_battery->charge_irq >= 0)
-+ free_irq(jz_battery->charge_irq, jz_battery);
-+err_free_gpio:
-+ if (gpio_is_valid(pdata->gpio_charge))
-+ gpio_free(jz_battery->pdata->gpio_charge);
-+err_free:
-+ kfree(jz_battery);
-+ return ret;
-+}
-+
-+static int __devexit jz_battery_remove(struct platform_device *pdev)
-+{
-+ struct jz_battery *jz_battery = platform_get_drvdata(pdev);
-+
-+ cancel_delayed_work_sync(&jz_battery->work);
-+
-+ if (gpio_is_valid(jz_battery->pdata->gpio_charge)) {
-+ if (jz_battery->charge_irq >= 0)
-+ free_irq(jz_battery->charge_irq, jz_battery);
-+ gpio_free(jz_battery->pdata->gpio_charge);
-+ }
-+
-+ power_supply_unregister(&jz_battery->battery);
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static int jz_battery_suspend(struct device *dev)
-+{
-+ struct jz_battery *jz_battery = dev_get_drvdata(dev);
-+
-+ cancel_delayed_work_sync(&jz_battery->work);
-+ jz_battery->status = POWER_SUPPLY_STATUS_UNKNOWN;
-+
-+ return 0;
-+}
-+
-+static int jz_battery_resume(struct device *dev)
-+{
-+ struct jz_battery *jz_battery = dev_get_drvdata(dev);
-+
-+ schedule_delayed_work(&jz_battery->work, 0);
-+
-+ return 0;
-+}
-+
-+static const struct dev_pm_ops jz_battery_pm_ops = {
-+ .suspend = jz_battery_suspend,
-+ .resume = jz_battery_resume,
-+};
-+
-+#define JZ_BATTERY_PM_OPS (&jz_battery_pm_ops)
-+
-+#else
-+#define JZ_BATTERY_PM_OPS NULL
-+#endif
-+
-+static struct platform_driver jz_battery_driver = {
-+ .probe = jz_battery_probe,
-+ .remove = __devexit_p(jz_battery_remove),
-+ .driver = {
-+ .name = "jz4740-battery",
-+ .owner = THIS_MODULE,
-+ .pm = JZ_BATTERY_PM_OPS,
-+ },
-+};
-+
-+static int __init jz_battery_init(void)
-+{
-+ return platform_driver_register(&jz_battery_driver);
-+}
-+module_init(jz_battery_init);
-+
-+static void __exit jz_battery_exit(void)
-+{
-+ platform_driver_unregister(&jz_battery_driver);
-+}
-+module_exit(jz_battery_exit);
-+
-+MODULE_ALIAS("platform:jz4740-battery");
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Jiejing Zhang <kzjeef@gmail.com>");
-+MODULE_DESCRIPTION("JZ4720/JZ4740 SoC battery driver");
-diff --git a/include/linux/power/jz4740-battery.h b/include/linux/power/jz4740-battery.h
-new file mode 100644
-index 0000000..19c9610
---- /dev/null
-+++ b/include/linux/power/jz4740-battery.h
-@@ -0,0 +1,24 @@
-+/*
-+ * Copyright (C) 2009, Jiejing Zhang <kzjeef@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.
-+ *
-+ * 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 __JZ4740_BATTERY_H
-+#define __JZ4740_BATTERY_H
-+
-+struct jz_battery_platform_data {
-+ struct power_supply_info info;
-+ int gpio_charge; /* GPIO port of Charger state */
-+ int gpio_charge_active_low;
-+};
-+
-+#endif
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/101-lcm.patch b/target/linux/xburst/patches-2.6.34/101-lcm.patch
deleted file mode 100644
index 2b17c8a448..0000000000
--- a/target/linux/xburst/patches-2.6.34/101-lcm.patch
+++ /dev/null
@@ -1,304 +0,0 @@
-From baf5f6c4f4ec0caf5240b452b75eeab2f96d8bd4 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:20:56 +0200
-Subject: [PATCH] Add gpm940b0 lcd driver
-
----
- drivers/video/backlight/Kconfig | 7 +
- drivers/video/backlight/Makefile | 1 +
- drivers/video/backlight/gpm940b0.c | 253 ++++++++++++++++++++++++++++++++++++
- 3 files changed, 261 insertions(+), 0 deletions(-)
- create mode 100644 drivers/video/backlight/gpm940b0.c
-
-diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
-index c025c84..0a61f91 100644
---- a/drivers/video/backlight/Kconfig
-+++ b/drivers/video/backlight/Kconfig
-@@ -107,6 +107,13 @@ config LCD_HP700
- If you have an HP Jornada 700 series handheld (710/720/728)
- say Y to enable LCD control driver.
-
-+config LCD_GPM940B0
-+ tristate "Giantplus GPM940B0 LCD and backlight driver"
-+ depends on LCD_CLASS_DEVICE && SPI
-+ default n
-+ help
-+ LCD and backlight driver for the Giantplus GPM940B0 LCD module.
-+
- #
- # Backlight
- #
-diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
-index 09d1f14..a03ec9c 100644
---- a/drivers/video/backlight/Makefile
-+++ b/drivers/video/backlight/Makefile
-@@ -11,6 +11,7 @@ obj-$(CONFIG_LCD_PLATFORM) += platform_lcd.o
- obj-$(CONFIG_LCD_VGG2432A4) += vgg2432a4.o
- obj-$(CONFIG_LCD_TDO24M) += tdo24m.o
- obj-$(CONFIG_LCD_TOSA) += tosa_lcd.o
-+obj-$(CONFIG_LCD_GPM940B0) += gpm940b0.o
-
- obj-$(CONFIG_BACKLIGHT_CLASS_DEVICE) += backlight.o
- obj-$(CONFIG_BACKLIGHT_ATMEL_PWM) += atmel-pwm-bl.o
-diff --git a/drivers/video/backlight/gpm940b0.c b/drivers/video/backlight/gpm940b0.c
-new file mode 100644
-index 0000000..879e3ad
---- /dev/null
-+++ b/drivers/video/backlight/gpm940b0.c
-@@ -0,0 +1,253 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * Driver for Giantplus GPM940B0 LCD
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/spi/spi.h>
-+#include <linux/lcd.h>
-+#include <linux/backlight.h>
-+#include <linux/delay.h>
-+
-+struct gpm940b0 {
-+ struct spi_device *spi;
-+ struct lcd_device *lcd;
-+ struct backlight_device *bl;
-+ unsigned enabled:1;
-+};
-+
-+static int gpm940b0_write_reg(struct spi_device *spi, uint8_t reg,
-+ uint8_t data)
-+{
-+ uint8_t buf[2];
-+ buf[0] = ((reg & 0x40) << 1) | (reg & 0x3f);
-+ buf[1] = data;
-+
-+ return spi_write(spi, buf, sizeof(buf));
-+}
-+
-+static void gpm940b0_power_disable(struct spi_device *spi)
-+{
-+ int ret = gpm940b0_write_reg(spi, 0x5, 0xc6) ;
-+ if (ret < 0)
-+ dev_err(&spi->dev, "Failed to disable power: %d\n", ret);
-+}
-+
-+static void gpm940b0_power_enable(struct spi_device *spi)
-+{
-+ gpm940b0_write_reg(spi, 0x5, 0xc7);
-+}
-+
-+
-+static int gpm940b0_set_power(struct lcd_device *lcd, int power)
-+{
-+ struct gpm940b0 *gpm940b0 = lcd_get_data(lcd);
-+
-+ switch (power) {
-+ case FB_BLANK_UNBLANK:
-+ mdelay(20);
-+ gpm940b0->enabled = 1;
-+ gpm940b0_power_enable(gpm940b0->spi);
-+ break;
-+ default:
-+ gpm940b0->enabled = 0;
-+ gpm940b0_power_disable(gpm940b0->spi);
-+ mdelay(20);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static int gpm940b0_set_contrast(struct lcd_device *lcd, int contrast)
-+{
-+ struct gpm940b0 *gpm940b0 = lcd_get_data(lcd);
-+ gpm940b0_write_reg(gpm940b0->spi, 0x0d, contrast);
-+ return 0;
-+}
-+
-+static int gpm940b0_set_mode(struct lcd_device *lcd, struct fb_videomode *mode)
-+{
-+ if (mode->xres != 320 && mode->yres != 240)
-+ return -EINVAL;
-+
-+ return 0;
-+}
-+
-+static ssize_t reg_write(struct device *dev, struct device_attribute *attr,
-+ const char *buf, size_t count)
-+{
-+ char *buf2;
-+ uint32_t reg = simple_strtoul(buf, &buf2, 10);
-+ uint32_t val = simple_strtoul(buf2 + 1, NULL, 10);
-+ struct gpm940b0 *gpm940b0 = dev_get_drvdata(dev);
-+
-+ if (reg < 0 || val < 0)
-+ return -EINVAL;
-+
-+ gpm940b0_write_reg(gpm940b0->spi, reg, val);
-+ return count;
-+}
-+
-+static DEVICE_ATTR(reg, 0644, NULL, reg_write);
-+
-+static ssize_t gpm940b0_show_brightness(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ int rc = -ENXIO;
-+
-+ return rc;
-+}
-+
-+static ssize_t gpm940b0_store_brightness(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
-+{
-+ char *endp;
-+ struct lcd_device *ld = to_lcd_device(dev);
-+ struct gpm940b0 *gpm940b0 = lcd_get_data(ld);
-+ int brightness = simple_strtoul(buf, &endp, 0);
-+
-+ if (brightness > 255 || brightness < 0)
-+ return -EINVAL;
-+
-+ gpm940b0_write_reg(gpm940b0->spi, 0x3, brightness);
-+
-+ return count;
-+}
-+
-+
-+static DEVICE_ATTR(brightness, 0644, gpm940b0_show_brightness,
-+ gpm940b0_store_brightness);
-+
-+static struct lcd_ops gpm940b0_lcd_ops = {
-+ .set_power = gpm940b0_set_power,
-+ .set_contrast = gpm940b0_set_contrast,
-+ .set_mode = gpm940b0_set_mode,
-+};
-+
-+static int __devinit gpm940b0_probe(struct spi_device *spi)
-+{
-+ int ret;
-+ struct gpm940b0 *gpm940b0;
-+
-+ gpm940b0 = kmalloc(sizeof(*gpm940b0), GFP_KERNEL);
-+
-+ spi->bits_per_word = 8;
-+ spi->mode = SPI_MODE_3 | SPI_3WIRE;
-+
-+ ret = spi_setup(spi);
-+ if (ret) {
-+ dev_err(&spi->dev, "Failed to setup spi\n");
-+ goto err_free_gpm940b0;
-+ }
-+
-+ gpm940b0->spi = spi;
-+
-+ gpm940b0->lcd = lcd_device_register("gpm940b0-lcd", &spi->dev, gpm940b0,
-+ &gpm940b0_lcd_ops);
-+
-+ if (IS_ERR(gpm940b0->lcd)) {
-+ ret = PTR_ERR(gpm940b0->lcd);
-+ dev_err(&spi->dev, "Failed to register lcd device: %d\n", ret);
-+ goto err_free_gpm940b0;
-+ }
-+
-+ gpm940b0->lcd->props.max_contrast = 255;
-+
-+ ret = device_create_file(&spi->dev, &dev_attr_reg);
-+ if (ret)
-+ goto err_unregister_lcd;
-+
-+ ret = device_create_file(&gpm940b0->lcd->dev, &dev_attr_brightness);
-+ if (ret)
-+ goto err_unregister_lcd;
-+
-+ gpm940b0->enabled = 1;
-+ dev_set_drvdata(&spi->dev, gpm940b0);
-+
-+ gpm940b0_write_reg(spi, 0x13, 0x01);
-+ gpm940b0_write_reg(spi, 0x5, 0xc7);
-+ return 0;
-+err_unregister_lcd:
-+ lcd_device_unregister(gpm940b0->lcd);
-+err_free_gpm940b0:
-+ kfree(gpm940b0);
-+ return ret;
-+}
-+
-+static int __devexit gpm940b0_remove(struct spi_device *spi)
-+{
-+ struct gpm940b0 *gpm940b0 = spi_get_drvdata(spi);
-+#if 0
-+ if (gpm940b0->bl)
-+ backlight_device_unregister(gpm940b0->bl);
-+#endif
-+
-+ lcd_device_unregister(gpm940b0->lcd);
-+
-+ spi_set_drvdata(spi, NULL);
-+ kfree(gpm940b0);
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+
-+static int gpm940b0_suspend(struct spi_device *spi, pm_message_t state)
-+{
-+ struct gpm940b0 *gpm940b0 = spi_get_drvdata(spi);
-+ if (gpm940b0->enabled) {
-+ gpm940b0_power_disable(spi);
-+ mdelay(10);
-+ }
-+ return 0;
-+}
-+
-+static int gpm940b0_resume(struct spi_device *spi)
-+{
-+ struct gpm940b0 *gpm940b0 = spi_get_drvdata(spi);
-+ if (gpm940b0->enabled)
-+ gpm940b0_power_enable(spi);
-+ return 0;
-+}
-+
-+#else
-+#define gpm940b0_suspend NULL
-+#define gpm940b0_resume NULL
-+#endif
-+
-+static struct spi_driver gpm940b0_driver = {
-+ .driver = {
-+ .name = "gpm940b0",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = gpm940b0_probe,
-+ .remove = __devexit_p(gpm940b0_remove),
-+ .suspend = gpm940b0_suspend,
-+ .resume = gpm940b0_resume,
-+};
-+
-+static int __init gpm940b0_init(void)
-+{
-+ return spi_register_driver(&gpm940b0_driver);
-+}
-+module_init(gpm940b0_init);
-+
-+static void __exit gpm940b0_exit(void)
-+{
-+ return spi_unregister_driver(&gpm940b0_driver);
-+}
-+module_exit(gpm940b0_exit)
-+
-+MODULE_AUTHOR("Lars-Peter Clausen");
-+MODULE_LICENSE("GPL v2");
-+MODULE_DESCRIPTION("LCD and backlight controll for Giantplus GPM940B0");
-+MODULE_ALIAS("spi:gpm940b0");
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/103-serial.patch b/target/linux/xburst/patches-2.6.34/103-serial.patch
deleted file mode 100644
index 162dc627ba..0000000000
--- a/target/linux/xburst/patches-2.6.34/103-serial.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From 6e138e4c3bfa5fb272d215107d85385456281ceb Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:19:30 +0200
-Subject: [PATCH] Add jz4740 serial driver
-
----
- drivers/serial/8250.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 files changed, 103 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
-index 2b1ea3d..4c41c57 100644
---- a/drivers/serial/8250.c
-+++ b/drivers/serial/8250.c
-@@ -200,7 +200,7 @@ static const struct serial8250_config uart_config[] = {
- [PORT_16550A] = {
- .name = "16550A",
- .fifo_size = 16,
-- .tx_loadsz = 16,
-+ .tx_loadsz = 8,
- .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10,
- .flags = UART_CAP_FIFO,
- },
-@@ -407,6 +407,10 @@ static unsigned int mem_serial_in(struct uart_port *p, int offset)
- static void mem_serial_out(struct uart_port *p, int offset, int value)
- {
- offset = map_8250_out_reg(p, offset) << p->regshift;
-+#if defined(CONFIG_JZSOC)
-+ if (offset == (UART_FCR << p->regshift))
-+ value |= 0x10; /* set FCR.UUE */
-+#endif
- writeb(value, p->membase + offset);
- }
-
-@@ -2209,6 +2213,83 @@ static void serial8250_shutdown(struct uart_port *port)
- serial_unlink_irq_chain(up);
- }
-
-+#if defined(CONFIG_JZSOC) && !defined(CONFIG_SOC_JZ4730)
-+static unsigned short quot1[3] = {0}; /* quot[0]:baud_div, quot[1]:umr, quot[2]:uacr */
-+static unsigned short * serial8250_get_divisor(struct uart_port *port, unsigned int baud)
-+{
-+ int err, sum, i, j;
-+ int a[12], b[12];
-+ unsigned short div, umr, uacr;
-+ unsigned short umr_best, div_best, uacr_best;
-+ long long t0, t1, t2, t3;
-+
-+ sum = 0;
-+ umr_best = div_best = uacr_best = 0;
-+ div = 1;
-+
-+ if ((port->uartclk % (16 * baud)) == 0) {
-+ quot1[0] = port->uartclk / (16 * baud);
-+ quot1[1] = 16;
-+ quot1[2] = 0;
-+ return quot1;
-+ }
-+
-+ while (1) {
-+ umr = port->uartclk / (baud * div);
-+ if (umr > 32) {
-+ div++;
-+ continue;
-+ }
-+ if (umr < 4) {
-+ break;
-+ }
-+ for (i = 0; i < 12; i++) {
-+ a[i] = umr;
-+ b[i] = 0;
-+ sum = 0;
-+ for (j = 0; j <= i; j++) {
-+ sum += a[j];
-+ }
-+
-+ /* the precision could be 1/2^(36) due to the value of t0 */
-+ t0 = 0x1000000000LL;
-+ t1 = (i + 1) * t0;
-+ t2 = (sum * div) * t0;
-+ t3 = div * t0;
-+ do_div(t1, baud);
-+ do_div(t2, port->uartclk);
-+ do_div(t3, (2 * port->uartclk));
-+ err = t1 - t2 - t3;
-+
-+ if (err > 0) {
-+ a[i] += 1;
-+ b[i] = 1;
-+ }
-+ }
-+
-+ uacr = 0;
-+ for (i = 0; i < 12; i++) {
-+ if (b[i] == 1) {
-+ uacr |= 1 << i;
-+ }
-+ }
-+
-+ /* the best value of umr should be near 16, and the value of uacr should better be smaller */
-+ if (abs(umr - 16) < abs(umr_best - 16) || (abs(umr - 16) == abs(umr_best - 16) && uacr_best > uacr)) {
-+ div_best = div;
-+ umr_best = umr;
-+ uacr_best = uacr;
-+ }
-+ div++;
-+ }
-+
-+ quot1[0] = div_best;
-+ quot1[1] = umr_best;
-+ quot1[2] = uacr_best;
-+
-+ return quot1;
-+}
-+#else
- static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud)
- {
- unsigned int quot;
-@@ -2228,6 +2309,7 @@ static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int
-
- return quot;
- }
-+#endif
-
- static void
- serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
-@@ -2237,6 +2319,9 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
- unsigned char cval, fcr = 0;
- unsigned long flags;
- unsigned int baud, quot;
-+#if defined(CONFIG_JZSOC) && !defined(CONFIG_SOC_JZ4730)
-+ unsigned short *quot1;
-+#endif
-
- switch (termios->c_cflag & CSIZE) {
- case CS5:
-@@ -2271,7 +2356,12 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
- baud = uart_get_baud_rate(port, termios, old,
- port->uartclk / 16 / 0xffff,
- port->uartclk / 16);
-+#if defined(CONFIG_JZSOC) && !defined(CONFIG_SOC_JZ4730)
-+ quot1 = serial8250_get_divisor(port, baud);
-+ quot = quot1[0]; /* not usefull, just let gcc happy */
-+#else
- quot = serial8250_get_divisor(port, baud);
-+#endif
-
- /*
- * Oxford Semi 952 rev B workaround
-@@ -2349,6 +2439,10 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
- if (up->capabilities & UART_CAP_UUE)
- up->ier |= UART_IER_UUE | UART_IER_RTOIE;
-
-+#ifdef CONFIG_JZSOC
-+ up->ier |= UART_IER_RTOIE; /* Set this flag, or very slow */
-+#endif
-+
- serial_out(up, UART_IER, up->ier);
-
- if (up->capabilities & UART_CAP_EFR) {
-@@ -2383,7 +2477,15 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
- serial_outp(up, UART_LCR, cval | UART_LCR_DLAB);/* set DLAB */
- }
-
-+#if defined(CONFIG_JZSOC) && !defined(CONFIG_SOC_JZ4730)
-+#define UART_UMR 9
-+#define UART_UACR 10
-+ serial_dl_write(up, quot1[0]);
-+ serial_outp(up, UART_UMR, quot1[1]);
-+ serial_outp(up, UART_UACR, quot1[2]);
-+#else
- serial_dl_write(up, quot);
-+#endif
-
- /*
- * LCR DLAB must be set to enable 64-byte FIFO mode. If the FCR
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/106-gpio-charger.patch b/target/linux/xburst/patches-2.6.34/106-gpio-charger.patch
deleted file mode 100644
index f134958f53..0000000000
--- a/target/linux/xburst/patches-2.6.34/106-gpio-charger.patch
+++ /dev/null
@@ -1,266 +0,0 @@
-From fc2a5da7117de38ddb538fb7c9907ec1aeb386ba Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:29:31 +0200
-Subject: [PATCH] Add gpio chager driver
-
----
- drivers/power/Kconfig | 7 ++
- drivers/power/Makefile | 1 +
- drivers/power/gpio-charger.c | 184 ++++++++++++++++++++++++++++++++++++
- include/linux/power/gpio-charger.h | 28 ++++++
- 4 files changed, 220 insertions(+), 0 deletions(-)
- create mode 100644 drivers/power/gpio-charger.c
- create mode 100644 include/linux/power/gpio-charger.h
-
-diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
-index 2f4e51f..81d13b8 100644
---- a/drivers/power/Kconfig
-+++ b/drivers/power/Kconfig
-@@ -142,4 +142,11 @@ config BATTERY_JZ4740
- This driver can be build as a module. If so, the module will be
- called jz4740-battery.
-
-+config CHARGER_GPIO
-+ tristate "GPIO charger"
-+ depends on GPIOLIB
-+ help
-+ Say Y to include support for chargers indicating their status through
-+ a GPIO pin.
-+
- endif # POWER_SUPPLY
-diff --git a/drivers/power/Makefile b/drivers/power/Makefile
-index 3b6b971..8deb992 100644
---- a/drivers/power/Makefile
-+++ b/drivers/power/Makefile
-@@ -33,3 +33,4 @@ obj-$(CONFIG_BATTERY_DA9030) += da9030_battery.o
- obj-$(CONFIG_BATTERY_MAX17040) += max17040_battery.o
- obj-$(CONFIG_CHARGER_PCF50633) += pcf50633-charger.o
- obj-$(CONFIG_BATTERY_JZ4740) += jz4740-battery.o
-+obj-$(CONFIG_CHARGER_GPIO) += gpio-charger.o
-diff --git a/drivers/power/gpio-charger.c b/drivers/power/gpio-charger.c
-new file mode 100644
-index 0000000..7a84994
---- /dev/null
-+++ b/drivers/power/gpio-charger.c
-@@ -0,0 +1,184 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * Driver for chargers indicating their status through a GPIO pin
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/gpio.h>
-+#include <linux/init.h>
-+#include <linux/interrupt.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/power_supply.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+
-+#include <linux/power/gpio-charger.h>
-+
-+struct gpio_charger {
-+ const struct gpio_charger_platform_data *pdata;
-+
-+ int irq;
-+
-+ struct power_supply charger;
-+};
-+
-+static irqreturn_t gpio_charger_irq(int irq, void *devid)
-+{
-+ struct power_supply *charger = devid;
-+ power_supply_changed(charger);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static inline struct gpio_charger *psy_to_gpio_charger(struct power_supply *psy)
-+{
-+ return container_of(psy, struct gpio_charger, charger);
-+}
-+
-+static int gpio_charger_get_property(struct power_supply *psy,
-+ enum power_supply_property psp, union power_supply_propval *val)
-+{
-+ struct gpio_charger *gpio_charger = psy_to_gpio_charger(psy);
-+ const struct gpio_charger_platform_data *pdata = gpio_charger->pdata;
-+
-+ switch (psp) {
-+ case POWER_SUPPLY_PROP_ONLINE:
-+ val->intval = gpio_get_value(pdata->gpio);
-+ val->intval ^= pdata->gpio_active_low;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static enum power_supply_property gpio_charger_properties[] = {
-+ POWER_SUPPLY_PROP_ONLINE,
-+};
-+
-+static int __devinit gpio_charger_probe(struct platform_device *pdev)
-+{
-+ const struct gpio_charger_platform_data *pdata = pdev->dev.platform_data;
-+ struct gpio_charger *gpio_charger;
-+ struct power_supply *charger;
-+ int ret;
-+
-+ if (!pdata) {
-+ dev_err(&pdev->dev, "No platform data");
-+ return -EINVAL;
-+ }
-+
-+ gpio_charger = kzalloc(sizeof(*gpio_charger), GFP_KERNEL);
-+
-+ charger = &gpio_charger->charger;
-+
-+ charger->name = pdata->name;
-+ charger->type = pdata->type;
-+ charger->properties = gpio_charger_properties;
-+ charger->num_properties = ARRAY_SIZE(gpio_charger_properties);
-+ charger->get_property = gpio_charger_get_property;
-+ charger->supplied_to = pdata->batteries;
-+ charger->num_supplicants = pdata->num_batteries;
-+
-+ if (gpio_is_valid(pdata->gpio)) {
-+ ret = gpio_request(pdata->gpio, dev_name(&pdev->dev));
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request gpio pin: %d\n", ret);
-+ goto err;
-+ }
-+ ret = gpio_direction_input(pdata->gpio);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to set gpio to input: %d\n", ret);
-+ goto err_gpio_free;
-+ }
-+
-+ gpio_charger->irq = gpio_to_irq(pdata->gpio);
-+ if (gpio_charger->irq >= 0) {
-+ ret = request_irq(gpio_charger->irq, gpio_charger_irq,
-+ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
-+ dev_name(&pdev->dev), charger);
-+ if (ret) {
-+ dev_warn(&pdev->dev, "Failed to request online gpio irq: %d\n", ret);
-+ gpio_charger->irq = -1;
-+ }
-+ }
-+ }
-+
-+ ret = power_supply_register(&pdev->dev, charger);
-+ if (ret < 0) {
-+ dev_err(&pdev->dev, "Failed to register power supply: %d\n", ret);
-+ goto err_gpio_free;
-+ }
-+
-+ gpio_charger->pdata = pdata;
-+ platform_set_drvdata(pdev, gpio_charger);
-+
-+ return 0;
-+
-+err_gpio_free:
-+ if (gpio_is_valid(pdata->gpio)) {
-+ if (gpio_charger->irq >= 0)
-+ free_irq(gpio_charger->irq, charger);
-+ gpio_free(pdata->gpio);
-+ }
-+err:
-+ return ret;
-+}
-+
-+static int __devexit gpio_charger_remove(struct platform_device *pdev)
-+{
-+ struct gpio_charger *gpio_charger = platform_get_drvdata(pdev);
-+ const struct gpio_charger_platform_data *pdata = gpio_charger->pdata;
-+
-+ power_supply_unregister(&gpio_charger->charger);
-+
-+ if (gpio_is_valid(pdata->gpio)) {
-+ if (gpio_charger->irq >= 0)
-+ free_irq(gpio_charger->irq, &gpio_charger->charger);
-+ gpio_free(pdata->gpio);
-+ }
-+
-+ platform_set_drvdata(pdev, NULL);
-+ kfree(gpio_charger);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver gpio_charger_driver = {
-+ .probe = gpio_charger_probe,
-+ .remove = __devexit_p(gpio_charger_remove),
-+ .driver = {
-+ .name = "gpio-charger",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init gpio_charger_init(void)
-+{
-+ return platform_driver_register(&gpio_charger_driver);
-+}
-+module_init(gpio_charger_init);
-+
-+static void __exit gpio_charger_exit(void)
-+{
-+ platform_driver_unregister(&gpio_charger_driver);
-+}
-+module_exit(gpio_charger_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("Driver for chargers indicating their status through a gpio");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:gpio-charger");
-diff --git a/include/linux/power/gpio-charger.h b/include/linux/power/gpio-charger.h
-new file mode 100644
-index 0000000..95cdfc3
---- /dev/null
-+++ b/include/linux/power/gpio-charger.h
-@@ -0,0 +1,28 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * 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 __LINUX_POWER_GPIO_CHARGER_H__
-+#define __LINUX_POWER_GPIO_CHARGER_H__
-+
-+struct gpio_charger_platform_data {
-+ const char *name;
-+ enum power_supply_type type;
-+ int gpio;
-+ int gpio_active_low;
-+
-+ char **batteries;
-+ size_t num_batteries;
-+};
-+
-+#endif
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/400-spi-gpio-3wire.patch b/target/linux/xburst/patches-2.6.34/400-spi-gpio-3wire.patch
deleted file mode 100644
index 90ed1cdb01..0000000000
--- a/target/linux/xburst/patches-2.6.34/400-spi-gpio-3wire.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-From 4cee37dd779deeb01f263995e8bd5e7b8457965b Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:23:01 +0200
-Subject: [PATCH] gpio spi 3wire
-
----
- drivers/spi/spi_bitbang.c | 2 +
- drivers/spi/spi_gpio.c | 60 ++++++++++++++++++++++++++------------
- include/linux/spi/spi_bitbang.h | 2 +
- 3 files changed, 45 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/spi/spi_bitbang.c b/drivers/spi/spi_bitbang.c
-index 5265330..2bec91c 100644
---- a/drivers/spi/spi_bitbang.c
-+++ b/drivers/spi/spi_bitbang.c
-@@ -335,6 +335,8 @@ static void bitbang_work(struct work_struct *work)
- */
- if (!m->is_dma_mapped)
- t->rx_dma = t->tx_dma = 0;
-+ if ((spi->mode & SPI_3WIRE) && bitbang->set_direction)
-+ bitbang->set_direction(spi, t->tx_buf != NULL);
- status = bitbang->txrx_bufs(spi, t);
- }
- if (status > 0)
-diff --git a/drivers/spi/spi_gpio.c b/drivers/spi/spi_gpio.c
-index 26bd03e..ca769b8 100644
---- a/drivers/spi/spi_gpio.c
-+++ b/drivers/spi/spi_gpio.c
-@@ -45,6 +45,8 @@ struct spi_gpio {
- struct spi_bitbang bitbang;
- struct spi_gpio_platform_data pdata;
- struct platform_device *pdev;
-+
-+ int miso_pin;
- };
-
- /*----------------------------------------------------------------------*/
-@@ -88,19 +90,16 @@ struct spi_gpio {
-
- /*----------------------------------------------------------------------*/
-
--static inline const struct spi_gpio_platform_data * __pure
--spi_to_pdata(const struct spi_device *spi)
-+static inline const struct spi_gpio * __pure
-+spi_to_spi_gpio(const struct spi_device *spi)
- {
- const struct spi_bitbang *bang;
-- const struct spi_gpio *spi_gpio;
-
- bang = spi_master_get_devdata(spi->master);
-- spi_gpio = container_of(bang, struct spi_gpio, bitbang);
-- return &spi_gpio->pdata;
-+ return container_of(bang, struct spi_gpio, bitbang);
- }
-
--/* this is #defined to avoid unused-variable warnings when inlining */
--#define pdata spi_to_pdata(spi)
-+#define pdata &(spi_to_spi_gpio(spi)->pdata)
-
- static inline void setsck(const struct spi_device *spi, int is_on)
- {
-@@ -114,10 +113,9 @@ static inline void setmosi(const struct spi_device *spi, int is_on)
-
- static inline int getmiso(const struct spi_device *spi)
- {
-- return !!gpio_get_value(SPI_MISO_GPIO);
-+ return !!gpio_get_value(spi_to_spi_gpio(spi)->miso_pin);
- }
-
--#undef pdata
-
- /*
- * NOTE: this clocks "as fast as we can". It "should" be a function of the
-@@ -173,10 +171,16 @@ static u32 spi_gpio_txrx_word_mode3(struct spi_device *spi,
- static void spi_gpio_chipselect(struct spi_device *spi, int is_active)
- {
- unsigned long cs = (unsigned long) spi->controller_data;
-+ struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi);
-
- /* set initial clock polarity */
-- if (is_active)
-+ if (is_active) {
- setsck(spi, spi->mode & SPI_CPOL);
-+ if (spi->mode & SPI_3WIRE)
-+ spi_gpio->miso_pin = SPI_MOSI_GPIO;
-+ else
-+ spi_gpio->miso_pin = SPI_MISO_GPIO;
-+ }
-
- if (cs != SPI_GPIO_NO_CHIPSELECT) {
- /* SPI is normally active-low */
-@@ -192,6 +196,9 @@ static int spi_gpio_setup(struct spi_device *spi)
- if (spi->bits_per_word > 32)
- return -EINVAL;
-
-+ if (!(spi->mode & SPI_3WIRE) && !gpio_is_valid(SPI_MISO_GPIO))
-+ return -EINVAL;
-+
- if (!spi->controller_state) {
- if (cs != SPI_GPIO_NO_CHIPSELECT) {
- status = gpio_request(cs, dev_name(&spi->dev));
-@@ -209,6 +216,16 @@ static int spi_gpio_setup(struct spi_device *spi)
- return status;
- }
-
-+static void spi_gpio_set_direction(struct spi_device *spi, bool is_tx)
-+{
-+ if (is_tx)
-+ gpio_direction_output(SPI_MISO_GPIO, 0);
-+ else
-+ gpio_direction_input(SPI_MISO_GPIO);
-+}
-+
-+#undef pdata
-+
- static void spi_gpio_cleanup(struct spi_device *spi)
- {
- unsigned long cs = (unsigned long) spi->controller_data;
-@@ -243,18 +260,20 @@ spi_gpio_request(struct spi_gpio_platform_data *pdata, const char *label)
- if (value)
- goto done;
-
-- value = spi_gpio_alloc(SPI_MISO_GPIO, label, true);
-+ value = spi_gpio_alloc(SPI_SCK_GPIO, label, false);
- if (value)
- goto free_mosi;
-
-- value = spi_gpio_alloc(SPI_SCK_GPIO, label, false);
-- if (value)
-- goto free_miso;
-+ if (gpio_is_valid(SPI_MISO_GPIO)) {
-+ value = spi_gpio_alloc(SPI_MISO_GPIO, label, true);
-+ if (value)
-+ goto free_sck;
-+ }
-
- goto done;
-
--free_miso:
-- gpio_free(SPI_MISO_GPIO);
-+free_sck:
-+ gpio_free(SPI_SCK_GPIO);
- free_mosi:
- gpio_free(SPI_MOSI_GPIO);
- done:
-@@ -302,13 +321,15 @@ static int __init spi_gpio_probe(struct platform_device *pdev)
- spi_gpio->bitbang.txrx_word[SPI_MODE_2] = spi_gpio_txrx_word_mode2;
- spi_gpio->bitbang.txrx_word[SPI_MODE_3] = spi_gpio_txrx_word_mode3;
- spi_gpio->bitbang.setup_transfer = spi_bitbang_setup_transfer;
-- spi_gpio->bitbang.flags = SPI_CS_HIGH;
-+ spi_gpio->bitbang.set_direction = spi_gpio_set_direction;
-+ spi_gpio->bitbang.flags = SPI_CS_HIGH | SPI_3WIRE;
-
- status = spi_bitbang_start(&spi_gpio->bitbang);
- if (status < 0) {
- spi_master_put(spi_gpio->bitbang.master);
- gpio_free:
-- gpio_free(SPI_MISO_GPIO);
-+ if (gpio_is_valid(SPI_MOSI_GPIO))
-+ gpio_free(SPI_MISO_GPIO);
- gpio_free(SPI_MOSI_GPIO);
- gpio_free(SPI_SCK_GPIO);
- spi_master_put(master);
-@@ -332,7 +353,8 @@ static int __exit spi_gpio_remove(struct platform_device *pdev)
-
- platform_set_drvdata(pdev, NULL);
-
-- gpio_free(SPI_MISO_GPIO);
-+ if (gpio_is_valid(SPI_MISO_GPIO))
-+ gpio_free(SPI_MISO_GPIO);
- gpio_free(SPI_MOSI_GPIO);
- gpio_free(SPI_SCK_GPIO);
-
-diff --git a/include/linux/spi/spi_bitbang.h b/include/linux/spi/spi_bitbang.h
-index 3274c50..0a466c9 100644
---- a/include/linux/spi/spi_bitbang.h
-+++ b/include/linux/spi/spi_bitbang.h
-@@ -52,6 +52,8 @@ struct spi_bitbang {
- u32 (*txrx_word[4])(struct spi_device *spi,
- unsigned nsecs,
- u32 word, u8 bits);
-+
-+ void (*set_direction)(struct spi_device *, bool is_tx);
- };
-
- /* you can call these default bitbang->master methods from your custom
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/420-fb-notifier-pre-post.patch b/target/linux/xburst/patches-2.6.34/420-fb-notifier-pre-post.patch
deleted file mode 100644
index e12861d49e..0000000000
--- a/target/linux/xburst/patches-2.6.34/420-fb-notifier-pre-post.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 120357be9b85936519d6a141748c319745046f71 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:23:28 +0200
-Subject: [PATCH] Framebuffer notifier: Call notifier callbacks prior to blanking the screen
-
----
- drivers/video/fbmem.c | 8 ++++++--
- 1 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
-index a15b44e..4eec79c 100644
---- a/drivers/video/fbmem.c
-+++ b/drivers/video/fbmem.c
-@@ -1008,12 +1008,12 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
- int
- fb_blank(struct fb_info *info, int blank)
- {
-- int ret = -EINVAL;
-+ int ret = 0;
-
- if (blank > FB_BLANK_POWERDOWN)
- blank = FB_BLANK_POWERDOWN;
-
-- if (info->fbops->fb_blank)
-+ if (info->fbops->fb_blank && blank == FB_BLANK_UNBLANK)
- ret = info->fbops->fb_blank(blank, info);
-
- if (!ret) {
-@@ -1024,6 +1024,10 @@ fb_blank(struct fb_info *info, int blank)
- fb_notifier_call_chain(FB_EVENT_BLANK, &event);
- }
-
-+ if (info->fbops->fb_blank && blank != FB_BLANK_UNBLANK)
-+ ret = info->fbops->fb_blank(blank, info);
-+
-+
- return ret;
- }
-
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/440-metronome.patch b/target/linux/xburst/patches-2.6.34/440-metronome.patch
deleted file mode 100644
index c20e49785d..0000000000
--- a/target/linux/xburst/patches-2.6.34/440-metronome.patch
+++ /dev/null
@@ -1,1219 +0,0 @@
-From c62dfb5d44444dd3add45e10c8950140dcb9f421 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Wed, 12 May 2010 14:24:46 +0200
-Subject: [PATCH] metronome patches
-
----
- drivers/video/metronomefb.c | 788 +++++++++++++++++++++++++++++++++++++------
- include/video/metronomefb.h | 33 ++-
- 2 files changed, 710 insertions(+), 111 deletions(-)
-
-diff --git a/drivers/video/metronomefb.c b/drivers/video/metronomefb.c
-index 9b3d6e4..719149e 100644
---- a/drivers/video/metronomefb.c
-+++ b/drivers/video/metronomefb.c
-@@ -18,11 +18,13 @@
- * is provided as am200epd.c
- *
- */
-+
- #include <linux/module.h>
- #include <linux/kernel.h>
- #include <linux/errno.h>
- #include <linux/string.h>
- #include <linux/mm.h>
-+#include <linux/slab.h>
- #include <linux/vmalloc.h>
- #include <linux/delay.h>
- #include <linux/interrupt.h>
-@@ -34,16 +36,25 @@
- #include <linux/dma-mapping.h>
- #include <linux/uaccess.h>
- #include <linux/irq.h>
-+#include <linux/ctype.h>
-
- #include <video/metronomefb.h>
-
- #include <asm/unaligned.h>
-
--/* Display specific information */
--#define DPY_W 832
--#define DPY_H 622
-+/*
-+ * 12 is ok to avoid refreshing whole screen while small elements are changed,
-+ * while forcing full refresh if largish dialog boxes or menus are
-+ * shown/dismissed.
-+ */
-+#define DEFAULT_MANUAL_REFRESH_THRESHOLD 12
-+
-+#define WF_MODE_INIT 0 /* Initialization */
-+#define WF_MODE_MU 1 /* Monochrome update */
-+#define WF_MODE_GU 2 /* Grayscale update */
-+#define WF_MODE_GC 3 /* Grayscale clearing */
-
--static int user_wfm_size;
-+static int temp = 25;
-
- /* frame differs from image. frame includes non-visible pixels */
- struct epd_frame {
-@@ -53,7 +64,7 @@ struct epd_frame {
- int wfm_size;
- };
-
--static struct epd_frame epd_frame_table[] = {
-+static const struct epd_frame epd_frame_table[] = {
- {
- .fw = 832,
- .fh = 622,
-@@ -97,24 +108,40 @@ static struct epd_frame epd_frame_table[] = {
- },
- .wfm_size = 46770,
- },
-+ {
-+ .fw = 800,
-+ .fh = 600,
-+ .config = {
-+ 15 /* sdlew */
-+ | 2 << 8 /* sdosz */
-+ | 0 << 11 /* sdor */
-+ | 0 << 12 /* sdces */
-+ | 0 << 15, /* sdcer */
-+ 42 /* gdspl */
-+ | 1 << 8 /* gdr1 */
-+ | 1 << 9 /* sdshr */
-+ | 0 << 15, /* gdspp */
-+ 18 /* gdspw */
-+ | 0 << 15, /* dispc */
-+ 599 /* vdlc */
-+ | 0 << 11 /* dsi */
-+ | 0 << 12, /* dsic */
-+ },
-+ .wfm_size = 46901,
-+ },
- };
-
--static struct fb_fix_screeninfo metronomefb_fix __devinitdata = {
-+static const struct fb_fix_screeninfo metronomefb_fix __devinitconst = {
- .id = "metronomefb",
- .type = FB_TYPE_PACKED_PIXELS,
- .visual = FB_VISUAL_STATIC_PSEUDOCOLOR,
- .xpanstep = 0,
- .ypanstep = 0,
- .ywrapstep = 0,
-- .line_length = DPY_W,
- .accel = FB_ACCEL_NONE,
- };
-
--static struct fb_var_screeninfo metronomefb_var __devinitdata = {
-- .xres = DPY_W,
-- .yres = DPY_H,
-- .xres_virtual = DPY_W,
-- .yres_virtual = DPY_H,
-+static const struct fb_var_screeninfo metronomefb_var __devinitconst = {
- .bits_per_pixel = 8,
- .grayscale = 1,
- .nonstd = 1,
-@@ -167,7 +194,7 @@ static u16 calc_img_cksum(u16 *start, int length)
- }
-
- /* here we decode the incoming waveform file and populate metromem */
--static int __devinit load_waveform(u8 *mem, size_t size, int m, int t,
-+static int load_waveform(u8 *mem, size_t size, int m, int t,
- struct metronomefb_par *par)
- {
- int tta;
-@@ -181,16 +208,12 @@ static int __devinit load_waveform(u8 *mem, size_t size, int m, int t,
- int mem_idx = 0;
- struct waveform_hdr *wfm_hdr;
- u8 *metromem = par->metromem_wfm;
-- struct device *dev = par->info->dev;
-+ struct device *dev = &par->pdev->dev;
-+ u8 mc, trc;
-+ u16 *p;
-+ u16 img_cksum;
-
-- if (user_wfm_size)
-- epd_frame_table[par->dt].wfm_size = user_wfm_size;
--
-- if (size != epd_frame_table[par->dt].wfm_size) {
-- dev_err(dev, "Error: unexpected size %Zd != %d\n", size,
-- epd_frame_table[par->dt].wfm_size);
-- return -EINVAL;
-- }
-+ dev_dbg(dev, "Loading waveforms, mode %d, temperature %d\n", m, t);
-
- wfm_hdr = (struct waveform_hdr *) mem;
-
-@@ -208,8 +231,9 @@ static int __devinit load_waveform(u8 *mem, size_t size, int m, int t,
- wfm_hdr->wfm_cs);
- return -EINVAL;
- }
-- wfm_hdr->mc += 1;
-- wfm_hdr->trc += 1;
-+ mc = wfm_hdr->mc + 1;
-+ trc = wfm_hdr->trc + 1;
-+
- for (i = 0; i < 5; i++) {
- if (*(wfm_hdr->stuff2a + i) != 0) {
- dev_err(dev, "Error: unexpected value in padding\n");
-@@ -221,10 +245,10 @@ static int __devinit load_waveform(u8 *mem, size_t size, int m, int t,
- the waveform. presumably selecting the right one for the
- desired temperature. it works out the offset of the first
- v that exceeds the specified temperature */
-- if ((sizeof(*wfm_hdr) + wfm_hdr->trc) > size)
-+ if ((sizeof(*wfm_hdr) + trc) > size)
- return -EINVAL;
-
-- for (i = sizeof(*wfm_hdr); i <= sizeof(*wfm_hdr) + wfm_hdr->trc; i++) {
-+ for (i = sizeof(*wfm_hdr); i <= sizeof(*wfm_hdr) + trc; i++) {
- if (mem[i] > t) {
- trn = i - sizeof(*wfm_hdr) - 1;
- break;
-@@ -232,7 +256,7 @@ static int __devinit load_waveform(u8 *mem, size_t size, int m, int t,
- }
-
- /* check temperature range table checksum */
-- cksum_idx = sizeof(*wfm_hdr) + wfm_hdr->trc + 1;
-+ cksum_idx = sizeof(*wfm_hdr) + trc + 1;
- if (cksum_idx > size)
- return -EINVAL;
- cksum = calc_cksum(sizeof(*wfm_hdr), cksum_idx, mem);
-@@ -294,6 +318,7 @@ static int __devinit load_waveform(u8 *mem, size_t size, int m, int t,
- cksum_idx = wfm_idx;
- if (cksum_idx > size)
- return -EINVAL;
-+ dev_dbg(dev, "mem_idx = %u\n", mem_idx);
- cksum = calc_cksum(owfm_idx, cksum_idx, mem);
- if (cksum != mem[cksum_idx]) {
- dev_err(dev, "Error: bad waveform data cksum"
-@@ -302,16 +327,47 @@ static int __devinit load_waveform(u8 *mem, size_t size, int m, int t,
- }
- par->frame_count = (mem_idx/64);
-
-+ p = (u16 *)par->metromem_wfm;
-+ img_cksum = calc_img_cksum(p, 16384 / 2);
-+ p[16384 / 2] = __cpu_to_le16(img_cksum);
-+
-+ par->current_wf_mode = m;
-+ par->current_wf_temp = t;
-+
- return 0;
- }
-
-+static int check_err(struct metronomefb_par *par)
-+{
-+ int res;
-+
-+ res = par->board->get_err(par);
-+ dev_dbg(&par->pdev->dev, "ERR = %d\n", res);
-+ return res;
-+}
-+
-+static inline int wait_for_rdy(struct metronomefb_par *par)
-+{
-+ int res = 0;
-+
-+ if (!par->board->get_rdy(par))
-+ res = par->board->met_wait_event_intr(par);
-+
-+ return res;
-+}
-+
- static int metronome_display_cmd(struct metronomefb_par *par)
- {
- int i;
- u16 cs;
- u16 opcode;
-- static u8 borderval;
-+ int res;
-+
-+ res = wait_for_rdy(par);
-+ if (res)
-+ return res;
-
-+ dev_dbg(&par->pdev->dev, "%s: ENTER\n", __func__);
- /* setup display command
- we can't immediately set the opcode since the controller
- will try parse the command before we've set it all up
-@@ -324,8 +380,9 @@ static int metronome_display_cmd(struct metronomefb_par *par)
-
- /* set the args ( 2 bytes ) for display */
- i = 0;
-- par->metromem_cmd->args[i] = 1 << 3 /* border update */
-- | ((borderval++ % 4) & 0x0F) << 4
-+ par->metromem_cmd->args[i] = 0 << 3 /* border update */
-+ | (3 << 4)
-+// | ((borderval++ % 4) & 0x0F) << 4
- | (par->frame_count - 1) << 8;
- cs += par->metromem_cmd->args[i++];
-
-@@ -335,21 +392,25 @@ static int metronome_display_cmd(struct metronomefb_par *par)
- par->metromem_cmd->csum = cs;
- par->metromem_cmd->opcode = opcode; /* display cmd */
-
-- return par->board->met_wait_event_intr(par);
-+ return 0;
-+
- }
-
- static int __devinit metronome_powerup_cmd(struct metronomefb_par *par)
- {
- int i;
- u16 cs;
-+ int res;
-
-+ dev_dbg(&par->pdev->dev, "%s: ENTER\n", __func__);
- /* setup power up command */
- par->metromem_cmd->opcode = 0x1234; /* pwr up pseudo cmd */
- cs = par->metromem_cmd->opcode;
-
- /* set pwr1,2,3 to 1024 */
- for (i = 0; i < 3; i++) {
-- par->metromem_cmd->args[i] = 1024;
-+// par->metromem_cmd->args[i] = 1024;
-+ par->metromem_cmd->args[i] = 100;
- cs += par->metromem_cmd->args[i];
- }
-
-@@ -364,7 +425,9 @@ static int __devinit metronome_powerup_cmd(struct metronomefb_par *par)
- msleep(1);
- par->board->set_stdby(par, 1);
-
-- return par->board->met_wait_event(par);
-+ res = par->board->met_wait_event(par);
-+ dev_dbg(&par->pdev->dev, "%s: EXIT: %d\n", __func__, res);
-+ return res;
- }
-
- static int __devinit metronome_config_cmd(struct metronomefb_par *par)
-@@ -373,8 +436,9 @@ static int __devinit metronome_config_cmd(struct metronomefb_par *par)
- we can't immediately set the opcode since the controller
- will try parse the command before we've set it all up */
-
-- memcpy(par->metromem_cmd->args, epd_frame_table[par->dt].config,
-- sizeof(epd_frame_table[par->dt].config));
-+ dev_dbg(&par->pdev->dev, "%s: ENTER\n", __func__);
-+ memcpy(par->metromem_cmd->args, par->epd_frame->config,
-+ sizeof(par->epd_frame->config));
- /* the rest are 0 */
- memset((u8 *) (par->metromem_cmd->args + 4), 0, (32-4)*2);
-
-@@ -395,11 +459,12 @@ static int __devinit metronome_init_cmd(struct metronomefb_par *par)
- will try parse the command before we've set it all up
- so we just set cs here and set the opcode at the end */
-
-+ dev_dbg(&par->pdev->dev, "%s: ENTER\n", __func__);
- cs = 0xCC20;
-
- /* set the args ( 2 bytes ) for init */
- i = 0;
-- par->metromem_cmd->args[i] = 0;
-+ par->metromem_cmd->args[i] = 0x0007;
- cs += par->metromem_cmd->args[i++];
-
- /* the rest are 0 */
-@@ -411,76 +476,268 @@ static int __devinit metronome_init_cmd(struct metronomefb_par *par)
- return par->board->met_wait_event(par);
- }
-
--static int __devinit metronome_init_regs(struct metronomefb_par *par)
-+static int metronome_bootup(struct metronomefb_par *par)
- {
- int res;
-
-- res = par->board->setup_io(par);
-- if (res)
-- return res;
--
- res = metronome_powerup_cmd(par);
-- if (res)
-- return res;
-+ if (res) {
-+ dev_err(&par->pdev->dev, "metronomefb: POWERUP cmd failed\n");
-+ goto finish;
-+ }
-
-+ check_err(par);
- res = metronome_config_cmd(par);
-- if (res)
-- return res;
-+ if (res) {
-+ dev_err(&par->pdev->dev, "metronomefb: CONFIG cmd failed\n");
-+ goto finish;
-+ }
-+ check_err(par);
-
- res = metronome_init_cmd(par);
-+ if (res)
-+ dev_err(&par->pdev->dev, "metronomefb: INIT cmd failed\n");
-+ check_err(par);
-+
-+finish:
-+ return res;
-+}
-+
-+static int __devinit metronome_init_regs(struct metronomefb_par *par)
-+{
-+ int res;
-+
-+ if (par->board->power_ctl)
-+ par->board->power_ctl(par, METRONOME_POWER_ON);
-+
-+ res = metronome_bootup(par);
-
- return res;
- }
-
--static void metronomefb_dpy_update(struct metronomefb_par *par)
-+static uint16_t metronomefb_update_img_buffer_rotated(struct metronomefb_par *par)
- {
-- int fbsize;
-- u16 cksum;
-- unsigned char *buf = (unsigned char __force *)par->info->screen_base;
-+ int x, y;
-+ int xstep, ystep;
-+ int i, j;
-+ uint16_t cksum = 0;
-+ uint8_t *buf = par->info->screen_base;
-+ uint32_t *img = (uint32_t *)(par->metromem_img);
-+ int fw = par->epd_frame->fw;
-+ int fh = par->epd_frame->fh;
-+ int fw_buf = fw / 4;
-+ uint32_t *fxbuckets = par->fxbuckets;
-+ uint32_t *fybuckets = par->fybuckets;
-+ uint32_t diff;
-+ uint32_t tmp;
-+
-+ switch (par->rotation) {
-+ case FB_ROTATE_CW:
-+ xstep = -fh;
-+ ystep = fw * fh + 1;
-+ j = (fw - 1) * fh;
-+ break;
-+ case FB_ROTATE_UD:
-+ xstep = -1;
-+ ystep = 0;
-+ j = fw * fh - 1;
-+ break;
-+ case FB_ROTATE_CCW:
-+ xstep = fh;
-+ ystep = -fw * fh - 1;
-+ j = fh - 1;
-+ break;
-+ default:
-+ BUG();
-+ break;
-+ }
-+
-+ memset(fxbuckets, 0, fw_buf * sizeof(*fxbuckets));
-+ memset(fybuckets, 0, fh * sizeof(*fybuckets));
-
-- fbsize = par->info->fix.smem_len;
-- /* copy from vm to metromem */
-- memcpy(par->metromem_img, buf, fbsize);
-+ i = 0;
-+ for (y = 0; y < fh; y++) {
-+ for(x = 0; x < fw_buf; x++, i++) {
-+ tmp = (buf[j] << 5);
-+ j += xstep;
-+ tmp |= (buf[j] << 13);
-+ j += xstep;
-+ tmp |= (buf[j] << 21);
-+ j += xstep;
-+ tmp |= (buf[j] << 29);
-+ j += xstep;
-+ tmp &= 0xe0e0e0e0;
-+
-+ img[i] &= 0xf0f0f0f0;
-+ diff = img[i] ^ tmp;
-+
-+ fxbuckets[x] |= diff;
-+ fybuckets[y] |= diff;
-+
-+ img[i] = (img[i] >> 4) | tmp;
-+ cksum += img[i] & 0x0000ffff;
-+ cksum += (img[i] >> 16);
-
-- cksum = calc_img_cksum((u16 *) par->metromem_img, fbsize/2);
-- *((u16 *)(par->metromem_img) + fbsize/2) = cksum;
-- metronome_display_cmd(par);
-+ }
-+ j += ystep;
-+ }
-+
-+ return cksum;
- }
-
--static u16 metronomefb_dpy_update_page(struct metronomefb_par *par, int index)
-+static uint16_t metronomefb_update_img_buffer_normal(struct metronomefb_par *par)
- {
-- int i;
-- u16 csum = 0;
-- u16 *buf = (u16 __force *)(par->info->screen_base + index);
-- u16 *img = (u16 *)(par->metromem_img + index);
-+ int x, y, i;
-+ uint16_t cksum = 0;
-+ uint32_t *buf = (uint32_t __force *)par->info->screen_base;
-+ uint32_t *img = (uint32_t *)(par->metromem_img);
-+ uint32_t diff;
-+ uint32_t tmp;
-+ int fw = par->epd_frame->fw;
-+ int fh = par->epd_frame->fh;
-+ int fw_buf = fw / sizeof(*buf);
-+ uint32_t *fxbuckets = par->fxbuckets;
-+ uint32_t *fybuckets = par->fybuckets;
-+
-+ memset(fxbuckets, 0, fw_buf * sizeof(*fxbuckets));
-+ memset(fybuckets, 0, fh * sizeof(*fybuckets));
-+
-+ i = 0;
-+ for (y = 0; y < fh; y++) {
-+ for(x = 0; x < fw_buf; x++, i++) {
-+ tmp = (buf[i] << 5) & 0xe0e0e0e0;
-+ img[i] &= 0xf0f0f0f0;
-+ diff = img[i] ^ tmp;
-+
-+ fxbuckets[x] |= diff;
-+ fybuckets[y] |= diff;
-+
-+ img[i] = (img[i] >> 4) | tmp;
-+ cksum += img[i] & 0x0000ffff;
-+ cksum += (img[i] >> 16);
-+ }
-+ }
-+
-+ return cksum;
-+}
-+
-+static unsigned int metronomefb_get_change_count(struct metronomefb_par *par)
-+{
-+ int min_x;
-+ int max_x;
-+ int min_y;
-+ int max_y;
-+ int fw = par->epd_frame->fw / 4;
-+ int fh = par->epd_frame->fh;
-+ unsigned int change_count;
-+ uint32_t *fxbuckets = par->fxbuckets;
-+ uint32_t *fybuckets = par->fybuckets;
-+
-+ for (min_x = 0; min_x < fw; ++min_x) {
-+ if(fxbuckets[min_x])
-+ break;
-+ }
-+
-+ for (max_x = fw - 1; max_x >= 0; --max_x) {
-+ if(fxbuckets[max_x])
-+ break;
-+ }
-+
-+ for (min_y = 0; min_y < fh; min_y++) {
-+ if(fybuckets[min_y])
-+ break;
-+ }
-
-- /* swizzle from vm to metromem and recalc cksum at the same time*/
-- for (i = 0; i < PAGE_SIZE/2; i++) {
-- *(img + i) = (buf[i] << 5) & 0xE0E0;
-- csum += *(img + i);
-+ for (max_y = fh - 1; max_y >= 0; --max_y) {
-+ if(fybuckets[max_y])
-+ break;
- }
-- return csum;
-+
-+ if ((min_x > max_x) || (min_y > max_y))
-+ change_count = 0;
-+ else
-+ change_count = (max_x - min_x + 1) * (max_y - min_y + 1) * 4;
-+
-+ dev_dbg(&par->pdev->dev, "min_x = %d, max_x = %d, min_y = %d, max_y = %d\n",
-+ min_x, max_x, min_y, max_y);
-+
-+ return change_count;
-+}
-+
-+static void metronomefb_dpy_update(struct metronomefb_par *par, int clear_all)
-+{
-+ unsigned int fbsize = par->info->fix.smem_len;
-+ uint16_t cksum;
-+ int m;
-+
-+ wait_for_rdy(par);
-+
-+ if (par->rotation == 0)
-+ cksum = metronomefb_update_img_buffer_normal(par);
-+ else
-+ cksum = metronomefb_update_img_buffer_rotated(par);
-+
-+ *par->metromem_img_csum = __cpu_to_le16(cksum);
-+
-+ if (clear_all || par->is_first_update ||
-+ (par->partial_updates_count == par->partial_autorefresh_interval)) {
-+ m = WF_MODE_GC;
-+ par->partial_updates_count = 0;
-+ } else {
-+ int change_count = metronomefb_get_change_count(par);
-+ if (change_count < fbsize / 100 * par->manual_refresh_threshold)
-+ m = WF_MODE_GU;
-+ else
-+ m = WF_MODE_GC;
-+
-+ dev_dbg(&par->pdev->dev, "change_count = %u, treshold = %u%% (%u pixels)\n",
-+ change_count, par->manual_refresh_threshold,
-+ fbsize / 100 * par->manual_refresh_threshold);
-+ ++par->partial_updates_count;
-+ }
-+
-+ if (m != par->current_wf_mode)
-+ load_waveform((u8 *) par->firmware->data, par->firmware->size,
-+ m, par->current_wf_temp, par);
-+
-+ for (;;) {
-+ if (likely(!check_err(par))) {
-+ metronome_display_cmd(par);
-+ break;
-+ }
-+
-+ par->board->set_stdby(par, 0);
-+ dev_warn(&par->pdev->dev, "Resetting Metronome\n");
-+ par->board->set_rst(par, 0);
-+ mdelay(1);
-+ if (par->board->power_ctl)
-+ par->board->power_ctl(par, METRONOME_POWER_OFF);
-+
-+ mdelay(1);
-+ load_waveform((u8 *) par->firmware->data, par->firmware->size,
-+ WF_MODE_GC, par->current_wf_temp, par);
-+
-+ if (par->board->power_ctl)
-+ par->board->power_ctl(par, METRONOME_POWER_ON);
-+ metronome_bootup(par);
-+ }
-+
-+ par->is_first_update = 0;
- }
-
- /* this is called back from the deferred io workqueue */
- static void metronomefb_dpy_deferred_io(struct fb_info *info,
- struct list_head *pagelist)
- {
-- u16 cksum;
-- struct page *cur;
-- struct fb_deferred_io *fbdefio = info->fbdefio;
- struct metronomefb_par *par = info->par;
-
-- /* walk the written page list and swizzle the data */
-- list_for_each_entry(cur, &fbdefio->pagelist, lru) {
-- cksum = metronomefb_dpy_update_page(par,
-- (cur->index << PAGE_SHIFT));
-- par->metromem_img_csum -= par->csum_table[cur->index];
-- par->csum_table[cur->index] = cksum;
-- par->metromem_img_csum += cksum;
-- }
--
-- metronome_display_cmd(par);
-+ /* We will update entire display because we need to change
-+ * 'previous image' field in pixels which was changed at
-+ * previous refresh
-+ */
-+ mutex_lock(&par->lock);
-+ metronomefb_dpy_update(par, 0);
-+ mutex_unlock(&par->lock);
- }
-
- static void metronomefb_fillrect(struct fb_info *info,
-@@ -488,8 +745,10 @@ static void metronomefb_fillrect(struct fb_info *info,
- {
- struct metronomefb_par *par = info->par;
-
-+ mutex_lock(&par->lock);
- sys_fillrect(info, rect);
-- metronomefb_dpy_update(par);
-+ metronomefb_dpy_update(par, 0);
-+ mutex_unlock(&par->lock);
- }
-
- static void metronomefb_copyarea(struct fb_info *info,
-@@ -497,8 +756,10 @@ static void metronomefb_copyarea(struct fb_info *info,
- {
- struct metronomefb_par *par = info->par;
-
-+ mutex_lock(&par->lock);
- sys_copyarea(info, area);
-- metronomefb_dpy_update(par);
-+ metronomefb_dpy_update(par, 0);
-+ mutex_unlock(&par->lock);
- }
-
- static void metronomefb_imageblit(struct fb_info *info,
-@@ -506,8 +767,10 @@ static void metronomefb_imageblit(struct fb_info *info,
- {
- struct metronomefb_par *par = info->par;
-
-+ mutex_lock(&par->lock);
- sys_imageblit(info, image);
-- metronomefb_dpy_update(par);
-+ metronomefb_dpy_update(par, 0);
-+ mutex_unlock(&par->lock);
- }
-
- /*
-@@ -545,30 +808,229 @@ static ssize_t metronomefb_write(struct fb_info *info, const char __user *buf,
-
- dst = (void __force *)(info->screen_base + p);
-
-+ mutex_lock(&par->lock);
-+
- if (copy_from_user(dst, buf, count))
- err = -EFAULT;
-
- if (!err)
- *ppos += count;
-
-- metronomefb_dpy_update(par);
-+ metronomefb_dpy_update(par, 0);
-+ mutex_unlock(&par->lock);
-
- return (err) ? err : count;
- }
-
-+static int metronome_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
-+{
-+ struct metronomefb_par *par = info->par;
-+
-+ var->grayscale = 1;
-+
-+ switch (par->rotation) {
-+ case FB_ROTATE_CW:
-+ case FB_ROTATE_CCW:
-+ if (par->epd_frame->fw == var->yres && par->epd_frame->fh == var->xres)
-+ return 0;
-+ break;
-+ case FB_ROTATE_UD:
-+ default:
-+ if (par->epd_frame->fw == var->xres && par->epd_frame->fh == var->yres)
-+ return 0;
-+ break;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static int metronomefb_set_par(struct fb_info *info)
-+{
-+ struct metronomefb_par *par = info->par;
-+
-+ par->rotation = (par->board->panel_rotation + info->var.rotate) % 4;
-+
-+ switch (par->rotation) {
-+ case FB_ROTATE_CW:
-+ case FB_ROTATE_CCW:
-+ info->fix.line_length = par->epd_frame->fh;
-+ break;
-+ case FB_ROTATE_UD:
-+ default:
-+ info->fix.line_length = par->epd_frame->fw;
-+ break;
-+ }
-+
-+ mutex_lock(&par->lock);
-+ metronomefb_dpy_update(info->par, 1);
-+ mutex_unlock(&par->lock);
-+
-+ return 0;
-+}
-+
- static struct fb_ops metronomefb_ops = {
- .owner = THIS_MODULE,
- .fb_write = metronomefb_write,
- .fb_fillrect = metronomefb_fillrect,
- .fb_copyarea = metronomefb_copyarea,
- .fb_imageblit = metronomefb_imageblit,
-+ .fb_check_var = metronome_check_var,
-+ .fb_set_par = metronomefb_set_par,
- };
-
- static struct fb_deferred_io metronomefb_defio = {
-- .delay = HZ,
-+ .delay = HZ / 4,
- .deferred_io = metronomefb_dpy_deferred_io,
- };
-
-+static ssize_t metronomefb_defio_delay_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+
-+ sprintf(buf, "%lu\n", info->fbdefio->delay * 1000 / HZ);
-+ return strlen(buf) + 1;
-+}
-+
-+static ssize_t metronomefb_defio_delay_store(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t size)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ char *after;
-+ unsigned long state = simple_strtoul(buf, &after, 10);
-+ size_t count = after - buf;
-+ ssize_t ret = -EINVAL;
-+
-+ if (*after && isspace(*after))
-+ count++;
-+
-+ state = state * HZ / 1000;
-+
-+ if (!state)
-+ state = 1;
-+
-+ if (count == size) {
-+ ret = count;
-+ info->fbdefio->delay = state;
-+ }
-+
-+ return ret;
-+}
-+
-+static ssize_t metronomefb_manual_refresh_thr_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ struct metronomefb_par *par = info->par;
-+
-+ return sprintf(buf, "%u\n", par->manual_refresh_threshold);
-+}
-+
-+static ssize_t metronomefb_manual_refresh_thr_store(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t size)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ struct metronomefb_par *par = info->par;
-+ char *after;
-+ unsigned long val = simple_strtoul(buf, &after, 10);
-+ size_t count = after - buf;
-+ ssize_t ret = -EINVAL;
-+
-+ if (*after && isspace(*after))
-+ count++;
-+
-+ if (val > 100)
-+ return -EINVAL;
-+
-+
-+ if (count == size) {
-+ ret = count;
-+ par->manual_refresh_threshold = val;
-+ }
-+
-+ return ret;
-+}
-+
-+static ssize_t metronomefb_autorefresh_interval_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ struct metronomefb_par *par = info->par;
-+
-+ return sprintf(buf, "%u\n", par->partial_autorefresh_interval);
-+}
-+
-+static ssize_t metronomefb_autorefresh_interval_store(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t size)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ struct metronomefb_par *par = info->par;
-+ char *after;
-+ unsigned long val = simple_strtoul(buf, &after, 10);
-+ size_t count = after - buf;
-+ ssize_t ret = -EINVAL;
-+
-+ if (*after && isspace(*after))
-+ count++;
-+
-+ if (val > 100)
-+ return -EINVAL;
-+
-+
-+ if (count == size) {
-+ ret = count;
-+ par->partial_autorefresh_interval = val;
-+ }
-+
-+ return ret;
-+}
-+
-+static ssize_t metronomefb_temp_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ struct metronomefb_par *par = info->par;
-+
-+ return sprintf(buf, "%u\n", par->current_wf_temp);
-+}
-+
-+static ssize_t metronomefb_temp_store(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t size)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ struct metronomefb_par *par = info->par;
-+ char *after;
-+ unsigned long val = simple_strtoul(buf, &after, 10);
-+ size_t count = after - buf;
-+ ssize_t ret = -EINVAL;
-+
-+ if (*after && isspace(*after))
-+ count++;
-+
-+ if (val > 100)
-+ return -EINVAL;
-+
-+
-+ if (count == size) {
-+ ret = count;
-+ if (val != par->current_wf_temp)
-+ load_waveform((u8 *) par->firmware->data, par->firmware->size,
-+ par->current_wf_mode, val, par);
-+ }
-+
-+ return ret;
-+}
-+
-+DEVICE_ATTR(defio_delay, 0644,
-+ metronomefb_defio_delay_show, metronomefb_defio_delay_store);
-+DEVICE_ATTR(manual_refresh_threshold, 0644,
-+ metronomefb_manual_refresh_thr_show, metronomefb_manual_refresh_thr_store);
-+DEVICE_ATTR(temp, 0644,
-+ metronomefb_temp_show, metronomefb_temp_store);
-+DEVICE_ATTR(autorefresh_interval, 0644,
-+ metronomefb_autorefresh_interval_show, metronomefb_autorefresh_interval_store);
-+
-+
- static int __devinit metronomefb_probe(struct platform_device *dev)
- {
- struct fb_info *info;
-@@ -607,6 +1069,9 @@ static int __devinit metronomefb_probe(struct platform_device *dev)
-
- panel_type = board->get_panel_type();
- switch (panel_type) {
-+ case 5:
-+ epd_dt_index = 3;
-+ break;
- case 6:
- epd_dt_index = 0;
- break;
-@@ -632,29 +1097,59 @@ static int __devinit metronomefb_probe(struct platform_device *dev)
- if (!videomemory)
- goto err_fb_rel;
-
-- memset(videomemory, 0, videomemorysize);
-+ memset(videomemory, 0xff, videomemorysize);
-
- info->screen_base = (char __force __iomem *)videomemory;
- info->fbops = &metronomefb_ops;
-
-- metronomefb_fix.line_length = fw;
-- metronomefb_var.xres = fw;
-- metronomefb_var.yres = fh;
-- metronomefb_var.xres_virtual = fw;
-- metronomefb_var.yres_virtual = fh;
- info->var = metronomefb_var;
- info->fix = metronomefb_fix;
-- info->fix.smem_len = videomemorysize;
-+ switch (board->panel_rotation) {
-+ case FB_ROTATE_CW:
-+ case FB_ROTATE_CCW:
-+ info->var.xres = fh;
-+ info->var.yres = fw;
-+ info->var.xres_virtual = fh;
-+ info->var.yres_virtual = fw;
-+ info->fix.line_length = fh;
-+ break;
-+ case FB_ROTATE_UD:
-+ default:
-+ info->var.xres = fw;
-+ info->var.yres = fh;
-+ info->var.xres_virtual = fw;
-+ info->var.yres_virtual = fh;
-+ info->fix.line_length = fw;
-+ break;
-+ }
-+ info->fix.smem_len = fw * fh; /* Real size of image area */
- par = info->par;
- par->info = info;
- par->board = board;
-- par->dt = epd_dt_index;
-+ par->epd_frame = &epd_frame_table[epd_dt_index];
-+ par->pdev = dev;
-+
-+ par->rotation = board->panel_rotation;
-+
-+ par->fxbuckets = kmalloc((fw / 4 + 1) * sizeof(*par->fxbuckets), GFP_KERNEL);
-+ if (!par->fxbuckets)
-+ goto err_vfree;
-+
-+ par->fybuckets = kmalloc(fh * sizeof(*par->fybuckets), GFP_KERNEL);
-+ if (!par->fybuckets)
-+ goto err_fxbuckets;
-+
- init_waitqueue_head(&par->waitq);
-+ par->manual_refresh_threshold = DEFAULT_MANUAL_REFRESH_THRESHOLD;
-+ par->partial_autorefresh_interval = 256;
-+ par->partial_updates_count = 0;
-+ par->is_first_update = 1;
-+ mutex_init(&par->lock);
-
- /* this table caches per page csum values. */
- par->csum_table = vmalloc(videomemorysize/PAGE_SIZE);
- if (!par->csum_table)
-- goto err_vfree;
-+ goto err_fybuckets;
-
- /* the physical framebuffer that we use is setup by
- * the platform device driver. It will provide us
-@@ -684,13 +1179,19 @@ static int __devinit metronomefb_probe(struct platform_device *dev)
- goto err_csum_table;
- }
-
-- retval = load_waveform((u8 *) fw_entry->data, fw_entry->size, 3, 31,
-+ retval = load_waveform((u8 *) fw_entry->data, fw_entry->size, WF_MODE_GC, temp,
- par);
-- release_firmware(fw_entry);
- if (retval < 0) {
- dev_err(&dev->dev, "Failed processing waveform\n");
- goto err_csum_table;
- }
-+ par->firmware = fw_entry;
-+
-+ retval = board->setup_io(par);
-+ if (retval) {
-+ dev_err(&dev->dev, "metronomefb: setup_io() failed\n");
-+ goto err_csum_table;
-+ }
-
- if (board->setup_irq(info))
- goto err_csum_table;
-@@ -712,7 +1213,7 @@ static int __devinit metronomefb_probe(struct platform_device *dev)
-
- /* set cmap */
- for (i = 0; i < 8; i++)
-- info->cmap.red[i] = (((2*i)+1)*(0xFFFF))/16;
-+ info->cmap.red[i] = ((2 * i + 1)*(0xFFFF))/16;
- memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*8);
- memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*8);
-
-@@ -722,18 +1223,47 @@ static int __devinit metronomefb_probe(struct platform_device *dev)
-
- platform_set_drvdata(dev, info);
-
-- dev_dbg(&dev->dev,
-+ retval = device_create_file(info->dev, &dev_attr_defio_delay);
-+ if (retval)
-+ goto err_devattr_defio_delay;
-+
-+ retval = device_create_file(info->dev, &dev_attr_manual_refresh_threshold);
-+ if (retval)
-+ goto err_devattr_manual_refresh_thr;
-+
-+ retval = device_create_file(info->dev, &dev_attr_temp);
-+ if (retval)
-+ goto err_devattr_temp;
-+
-+ retval = device_create_file(info->dev, &dev_attr_autorefresh_interval);
-+ if (retval)
-+ goto err_devattr_autorefresh;
-+
-+ dev_info(&dev->dev,
- "fb%d: Metronome frame buffer device, using %dK of video"
- " memory\n", info->node, videomemorysize >> 10);
-
- return 0;
-
-+ device_remove_file(info->dev, &dev_attr_autorefresh_interval);
-+err_devattr_autorefresh:
-+ device_remove_file(info->dev, &dev_attr_temp);
-+err_devattr_temp:
-+ device_remove_file(info->dev, &dev_attr_manual_refresh_threshold);
-+err_devattr_manual_refresh_thr:
-+ device_remove_file(info->dev, &dev_attr_defio_delay);
-+err_devattr_defio_delay:
-+ unregister_framebuffer(info);
- err_cmap:
- fb_dealloc_cmap(&info->cmap);
- err_free_irq:
- board->cleanup(par);
- err_csum_table:
- vfree(par->csum_table);
-+err_fybuckets:
-+ kfree(par->fybuckets);
-+err_fxbuckets:
-+ kfree(par->fxbuckets);
- err_vfree:
- vfree(videomemory);
- err_fb_rel:
-@@ -750,26 +1280,76 @@ static int __devexit metronomefb_remove(struct platform_device *dev)
- if (info) {
- struct metronomefb_par *par = info->par;
-
-+ par->board->set_stdby(par, 0);
-+ mdelay(1);
-+ if (par->board->power_ctl)
-+ par->board->power_ctl(par, METRONOME_POWER_OFF);
-+
-+ device_remove_file(info->dev, &dev_attr_autorefresh_interval);
-+ device_remove_file(info->dev, &dev_attr_temp);
-+ device_remove_file(info->dev, &dev_attr_manual_refresh_threshold);
-+ device_remove_file(info->dev, &dev_attr_defio_delay);
- unregister_framebuffer(info);
- fb_deferred_io_cleanup(info);
- fb_dealloc_cmap(&info->cmap);
- par->board->cleanup(par);
- vfree(par->csum_table);
-+ kfree(par->fybuckets);
-+ kfree(par->fxbuckets);
- vfree((void __force *)info->screen_base);
- module_put(par->board->owner);
-+ release_firmware(par->firmware);
- dev_dbg(&dev->dev, "calling release\n");
- framebuffer_release(info);
- }
- return 0;
- }
-
-+#ifdef CONFIG_PM
-+static int metronomefb_suspend(struct platform_device *pdev, pm_message_t message)
-+{
-+ struct fb_info *info = platform_get_drvdata(pdev);
-+ struct metronomefb_par *par = info->par;
-+
-+ par->board->set_stdby(par, 0);
-+ par->board->set_rst(par, 0);
-+ if (par->board->power_ctl)
-+ par->board->power_ctl(par, METRONOME_POWER_OFF);
-+
-+
-+ return 0;
-+}
-+
-+static int metronomefb_resume(struct platform_device *pdev)
-+{
-+ struct fb_info *info = platform_get_drvdata(pdev);
-+ struct metronomefb_par *par = info->par;
-+
-+ if (par->board->power_ctl)
-+ par->board->power_ctl(par, METRONOME_POWER_ON);
-+
-+ mutex_lock(&par->lock);
-+ metronome_bootup(par);
-+ mutex_unlock(&par->lock);
-+
-+ return 0;
-+}
-+
-+#else
-+#define metronomefb_suspend NULL
-+#define metronomefb_resume NULL
-+#endif
-+
-+
- static struct platform_driver metronomefb_driver = {
-- .probe = metronomefb_probe,
-- .remove = metronomefb_remove,
-- .driver = {
-- .owner = THIS_MODULE,
-- .name = "metronomefb",
-- },
-+ .driver = {
-+ .owner = THIS_MODULE,
-+ .name = "metronomefb",
-+ },
-+ .probe = metronomefb_probe,
-+ .remove = __devexit_p(metronomefb_remove),
-+ .suspend = metronomefb_suspend,
-+ .resume = metronomefb_resume,
- };
-
- static int __init metronomefb_init(void)
-@@ -782,8 +1362,8 @@ static void __exit metronomefb_exit(void)
- platform_driver_unregister(&metronomefb_driver);
- }
-
--module_param(user_wfm_size, uint, 0);
--MODULE_PARM_DESC(user_wfm_size, "Set custom waveform size");
-+module_param(temp, int, 0);
-+MODULE_PARM_DESC(temp, "Set current temperature");
-
- module_init(metronomefb_init);
- module_exit(metronomefb_exit);
-diff --git a/include/video/metronomefb.h b/include/video/metronomefb.h
-index 9863f4b..f505348 100644
---- a/include/video/metronomefb.h
-+++ b/include/video/metronomefb.h
-@@ -17,7 +17,9 @@ struct metromem_cmd {
- u16 opcode;
- u16 args[((64-2)/2)];
- u16 csum;
--};
-+} __attribute__((packed));
-+
-+struct epd_frame;
-
- /* struct used by metronome. board specific stuff comes from *board */
- struct metronomefb_par {
-@@ -27,19 +29,40 @@ struct metronomefb_par {
- u16 *metromem_img_csum;
- u16 *csum_table;
- dma_addr_t metromem_dma;
-+ const struct firmware *firmware;
- struct fb_info *info;
- struct metronome_board *board;
-+ struct platform_device *pdev;
- wait_queue_head_t waitq;
- u8 frame_count;
- int extra_size;
-- int dt;
-+ int current_wf_mode;
-+ int current_wf_temp;
-+ unsigned int manual_refresh_threshold;
-+ unsigned int partial_autorefresh_interval;
-+ const struct epd_frame *epd_frame;
-+ u32 *fxbuckets;
-+ u32 *fybuckets;
-+
-+ int rotation;
-+
-+ unsigned int partial_updates_count;
-+ unsigned is_first_update:1;
-+
-+ struct mutex lock;
- };
-
-+#define METRONOME_POWER_OFF 0
-+#define METRONOME_POWER_ON 1
-+
- /* board specific routines and data */
- struct metronome_board {
- struct module *owner; /* the platform device */
-+ void (*power_ctl)(struct metronomefb_par *, int);
- void (*set_rst)(struct metronomefb_par *, int);
- void (*set_stdby)(struct metronomefb_par *, int);
-+ int (*get_err)(struct metronomefb_par *);
-+ int (*get_rdy)(struct metronomefb_par *);
- void (*cleanup)(struct metronomefb_par *);
- int (*met_wait_event)(struct metronomefb_par *);
- int (*met_wait_event_intr)(struct metronomefb_par *);
-@@ -47,11 +70,7 @@ struct metronome_board {
- int (*setup_fb)(struct metronomefb_par *);
- int (*setup_io)(struct metronomefb_par *);
- int (*get_panel_type)(void);
-- unsigned char *metromem;
-- int fw;
-- int fh;
-- int wfm_size;
-- struct fb_info *host_fbinfo; /* the host LCD controller's fbi */
-+ int panel_rotation;
- };
-
- #endif
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/500-modifier-keys.patch b/target/linux/xburst/patches-2.6.34/500-modifier-keys.patch
deleted file mode 100644
index dd229c261b..0000000000
--- a/target/linux/xburst/patches-2.6.34/500-modifier-keys.patch
+++ /dev/null
@@ -1,611 +0,0 @@
-From b4ff7a46dd3f64801f7fc6e4c8083b67934fce1c Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:22:25 +0200
-Subject: [PATCH] Modify keymap for ben nanonote
-
----
- drivers/char/defkeymap.c_shipped | 308 +++++++++++++++++++++++++++++---------
- drivers/char/defkeymap.map | 74 +++++++---
- 2 files changed, 286 insertions(+), 96 deletions(-)
-
-diff --git a/drivers/char/defkeymap.c_shipped b/drivers/char/defkeymap.c_shipped
-index d2208df..fca8d59 100644
---- a/drivers/char/defkeymap.c_shipped
-+++ b/drivers/char/defkeymap.c_shipped
-@@ -9,10 +9,10 @@ u_short plain_map[NR_KEYS] = {
- 0xf200, 0xf01b, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036,
- 0xf037, 0xf038, 0xf039, 0xf030, 0xf02d, 0xf03d, 0xf07f, 0xf009,
- 0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 0xfb69,
-- 0xfb6f, 0xfb70, 0xf05b, 0xf05d, 0xf201, 0xf702, 0xfb61, 0xfb73,
-+ 0xfb6f, 0xfb70, 0xf05b, 0xf05d, 0xf201, 0xf706, 0xfb61, 0xfb73,
- 0xfb64, 0xfb66, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xf03b,
- 0xf027, 0xf060, 0xf700, 0xf05c, 0xfb7a, 0xfb78, 0xfb63, 0xfb76,
-- 0xfb62, 0xfb6e, 0xfb6d, 0xf02c, 0xf02e, 0xf02f, 0xf700, 0xf30c,
-+ 0xfb62, 0xfb6e, 0xfb6d, 0xf02c, 0xf02e, 0xf02f, 0xf701, 0xf30c,
- 0xf703, 0xf020, 0xf207, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104,
- 0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf208, 0xf209, 0xf307,
- 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
-@@ -22,54 +22,102 @@ u_short plain_map[NR_KEYS] = {
- 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short shift_map[NR_KEYS] = {
-+static u_short shift_map[NR_KEYS] = {
- 0xf200, 0xf01b, 0xf021, 0xf040, 0xf023, 0xf024, 0xf025, 0xf05e,
- 0xf026, 0xf02a, 0xf028, 0xf029, 0xf05f, 0xf02b, 0xf07f, 0xf009,
- 0xfb51, 0xfb57, 0xfb45, 0xfb52, 0xfb54, 0xfb59, 0xfb55, 0xfb49,
-- 0xfb4f, 0xfb50, 0xf07b, 0xf07d, 0xf201, 0xf702, 0xfb41, 0xfb53,
-+ 0xfb4f, 0xfb50, 0xf07b, 0xf07d, 0xf201, 0xf706, 0xfb41, 0xfb53,
- 0xfb44, 0xfb46, 0xfb47, 0xfb48, 0xfb4a, 0xfb4b, 0xfb4c, 0xf03a,
- 0xf022, 0xf07e, 0xf700, 0xf07c, 0xfb5a, 0xfb58, 0xfb43, 0xfb56,
-- 0xfb42, 0xfb4e, 0xfb4d, 0xf03c, 0xf03e, 0xf03f, 0xf700, 0xf30c,
-+ 0xfb42, 0xfb4e, 0xfb4d, 0xf03b, 0xf03a, 0xf03f, 0xf701, 0xf30c,
- 0xf703, 0xf020, 0xf207, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e,
- 0xf10f, 0xf110, 0xf111, 0xf112, 0xf113, 0xf213, 0xf203, 0xf307,
- 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
- 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf03e, 0xf10a,
- 0xf10b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
-+ 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
- 0xf20b, 0xf601, 0xf602, 0xf117, 0xf600, 0xf20a, 0xf115, 0xf116,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short altgr_map[NR_KEYS] = {
-+static u_short altgr_map[NR_KEYS] = {
- 0xf200, 0xf200, 0xf200, 0xf040, 0xf200, 0xf024, 0xf200, 0xf200,
-- 0xf07b, 0xf05b, 0xf05d, 0xf07d, 0xf05c, 0xf200, 0xf200, 0xf200,
-- 0xfb71, 0xfb77, 0xf918, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 0xfb69,
-- 0xfb6f, 0xfb70, 0xf200, 0xf07e, 0xf201, 0xf702, 0xf914, 0xfb73,
-- 0xf917, 0xf919, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xf200,
-- 0xf200, 0xf200, 0xf700, 0xf200, 0xfb7a, 0xfb78, 0xf916, 0xfb76,
-- 0xf915, 0xfb6e, 0xfb6d, 0xf200, 0xf200, 0xf200, 0xf700, 0xf30c,
-- 0xf703, 0xf200, 0xf207, 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510,
-- 0xf511, 0xf512, 0xf513, 0xf514, 0xf515, 0xf208, 0xf202, 0xf911,
-+ 0xf07b, 0xf05b, 0xf05d, 0xf07d, 0xf05c, 0xf07e, 0xf008, 0xf200,
-+ 0xf021, 0xf040, 0xf023, 0xf024, 0xf025, 0xf05e, 0xf026, 0xf02a,
-+ 0xf028, 0xf029, 0xf200, 0xf07e, 0xf201, 0xf706, 0xf0b0, 0xf0a8,
-+ 0xf0a4, 0xf02d, 0xf05f, 0xf07b, 0xf05b, 0xf05d, 0xf07d, 0xf200,
-+ 0xf200, 0xf200, 0xf700, 0xf200, 0xf039, 0xf030, 0xf916, 0xfb76,
-+ 0xf915, 0xf03c, 0xf03e, 0xf027, 0xf022, 0xf200, 0xf701, 0xf30c,
-+ 0xf703, 0xf200, 0xf207, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035,
-+ 0xf036, 0xf037, 0xf038, 0xf514, 0xf515, 0xf208, 0xf202, 0xf911,
- 0xf912, 0xf913, 0xf30b, 0xf90e, 0xf90f, 0xf910, 0xf30a, 0xf90b,
- 0xf90c, 0xf90d, 0xf90a, 0xf310, 0xf206, 0xf200, 0xf07c, 0xf516,
- 0xf517, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
-+ 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
- 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short ctrl_map[NR_KEYS] = {
-+static u_short ctrl_map[NR_KEYS] = {
- 0xf200, 0xf200, 0xf200, 0xf000, 0xf01b, 0xf01c, 0xf01d, 0xf01e,
-- 0xf01f, 0xf07f, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf008, 0xf200,
-+ 0xf01f, 0xf07f, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf200, 0xf200,
- 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 0xf009,
-- 0xf00f, 0xf010, 0xf01b, 0xf01d, 0xf201, 0xf702, 0xf001, 0xf013,
-+ 0xf00f, 0xf010, 0xf01b, 0xf01d, 0xf201, 0xf706, 0xf001, 0xf013,
- 0xf004, 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 0xf200,
- 0xf007, 0xf000, 0xf700, 0xf01c, 0xf01a, 0xf018, 0xf003, 0xf016,
-- 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf20e, 0xf07f, 0xf700, 0xf30c,
-+ 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf20e, 0xf07f, 0xf701, 0xf30c,
- 0xf703, 0xf000, 0xf207, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104,
- 0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf208, 0xf204, 0xf307,
- 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
-@@ -79,35 +127,67 @@ u_short ctrl_map[NR_KEYS] = {
- 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short shift_ctrl_map[NR_KEYS] = {
-+static u_short shift_ctrl_map[NR_KEYS] = {
- 0xf200, 0xf200, 0xf200, 0xf000, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf200, 0xf200,
- 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 0xf009,
-- 0xf00f, 0xf010, 0xf200, 0xf200, 0xf201, 0xf702, 0xf001, 0xf013,
-+ 0xf00f, 0xf010, 0xf200, 0xf200, 0xf201, 0xf706, 0xf001, 0xf013,
- 0xf004, 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 0xf200,
- 0xf200, 0xf200, 0xf700, 0xf200, 0xf01a, 0xf018, 0xf003, 0xf016,
-- 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf200, 0xf200, 0xf700, 0xf30c,
-+ 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf200, 0xf200, 0xf701, 0xf30c,
- 0xf703, 0xf200, 0xf207, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf208, 0xf200, 0xf307,
- 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
- 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
-+ 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
- 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short alt_map[NR_KEYS] = {
-+static u_short alt_map[NR_KEYS] = {
- 0xf200, 0xf81b, 0xf831, 0xf832, 0xf833, 0xf834, 0xf835, 0xf836,
- 0xf837, 0xf838, 0xf839, 0xf830, 0xf82d, 0xf83d, 0xf87f, 0xf809,
- 0xf871, 0xf877, 0xf865, 0xf872, 0xf874, 0xf879, 0xf875, 0xf869,
-- 0xf86f, 0xf870, 0xf85b, 0xf85d, 0xf80d, 0xf702, 0xf861, 0xf873,
-+ 0xf86f, 0xf870, 0xf85b, 0xf85d, 0xf80d, 0xf706, 0xf861, 0xf873,
- 0xf864, 0xf866, 0xf867, 0xf868, 0xf86a, 0xf86b, 0xf86c, 0xf83b,
- 0xf827, 0xf860, 0xf700, 0xf85c, 0xf87a, 0xf878, 0xf863, 0xf876,
-- 0xf862, 0xf86e, 0xf86d, 0xf82c, 0xf82e, 0xf82f, 0xf700, 0xf30c,
-+ 0xf862, 0xf86e, 0xf86d, 0xf200, 0xf200, 0xf82f, 0xf701, 0xf30c,
- 0xf703, 0xf820, 0xf207, 0xf500, 0xf501, 0xf502, 0xf503, 0xf504,
- 0xf505, 0xf506, 0xf507, 0xf508, 0xf509, 0xf208, 0xf209, 0xf907,
- 0xf908, 0xf909, 0xf30b, 0xf904, 0xf905, 0xf906, 0xf30a, 0xf901,
-@@ -117,35 +197,115 @@ u_short alt_map[NR_KEYS] = {
- 0xf118, 0xf210, 0xf211, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short ctrl_alt_map[NR_KEYS] = {
-+static u_short ctrl_alt_map[NR_KEYS] = {
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf811, 0xf817, 0xf805, 0xf812, 0xf814, 0xf819, 0xf815, 0xf809,
-- 0xf80f, 0xf810, 0xf200, 0xf200, 0xf201, 0xf702, 0xf801, 0xf813,
-+ 0xf80f, 0xf810, 0xf200, 0xf200, 0xf201, 0xf706, 0xf801, 0xf813,
- 0xf804, 0xf806, 0xf807, 0xf808, 0xf80a, 0xf80b, 0xf80c, 0xf200,
- 0xf200, 0xf200, 0xf700, 0xf200, 0xf81a, 0xf818, 0xf803, 0xf816,
-- 0xf802, 0xf80e, 0xf80d, 0xf200, 0xf200, 0xf200, 0xf700, 0xf30c,
-+ 0xf802, 0xf80e, 0xf80d, 0xf200, 0xf200, 0xf200, 0xf701, 0xf30c,
- 0xf703, 0xf200, 0xf207, 0xf500, 0xf501, 0xf502, 0xf503, 0xf504,
- 0xf505, 0xf506, 0xf507, 0xf508, 0xf509, 0xf208, 0xf200, 0xf307,
- 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
- 0xf302, 0xf303, 0xf300, 0xf20c, 0xf206, 0xf200, 0xf200, 0xf50a,
- 0xf50b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
-+ 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
- 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf20c,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+};
-+
-+static u_short ctl_map[NR_KEYS] = {
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf033, 0xf200, 0xf200,
-+ 0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74, 0xfb79, 0xf037, 0xf038,
-+ 0xf039, 0xfb70, 0xf200, 0xf200, 0xf201, 0xf706, 0xfb61, 0xfb73,
-+ 0xfb64, 0xfb66, 0xfb67, 0xfb68, 0xf034, 0xf035, 0xf036, 0xf200,
-+ 0xf200, 0xf200, 0xf700, 0xf200, 0xfb7a, 0xfb78, 0xfb63, 0xfb76,
-+ 0xfb62, 0xf031, 0xf032, 0xf200, 0xf200, 0xf030, 0xf701, 0xf30c,
-+ 0xf703, 0xf200, 0xf207, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf208, 0xf200, 0xf307,
-+ 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
-+ 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
-+ 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
-+ 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
- ushort *key_maps[MAX_NR_KEYMAPS] = {
-- plain_map, shift_map, altgr_map, NULL,
-- ctrl_map, shift_ctrl_map, NULL, NULL,
-- alt_map, NULL, NULL, NULL,
-- ctrl_alt_map, NULL
-+ plain_map, shift_map, altgr_map, 0,
-+ ctrl_map, shift_ctrl_map, 0, 0,
-+ alt_map, 0, 0, 0,
-+ ctrl_alt_map, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ ctl_map, 0
- };
-
--unsigned int keymap_count = 7;
-+unsigned int keymap_count = 8;
-
- /*
- * Philosophy: most people do not define more strings, but they who do
-@@ -216,47 +376,47 @@ char *func_table[MAX_NR_FUNC] = {
- func_buf + 135,
- func_buf + 140,
- func_buf + 145,
-- NULL,
-- NULL,
-+ 0,
-+ 0,
- func_buf + 149,
-- NULL,
-+ 0,
- };
-
--struct kbdiacruc accent_table[MAX_DIACR] = {
-- {'`', 'A', 0300}, {'`', 'a', 0340},
-- {'\'', 'A', 0301}, {'\'', 'a', 0341},
-- {'^', 'A', 0302}, {'^', 'a', 0342},
-- {'~', 'A', 0303}, {'~', 'a', 0343},
-- {'"', 'A', 0304}, {'"', 'a', 0344},
-- {'O', 'A', 0305}, {'o', 'a', 0345},
-- {'0', 'A', 0305}, {'0', 'a', 0345},
-- {'A', 'A', 0305}, {'a', 'a', 0345},
-- {'A', 'E', 0306}, {'a', 'e', 0346},
-- {',', 'C', 0307}, {',', 'c', 0347},
-- {'`', 'E', 0310}, {'`', 'e', 0350},
-- {'\'', 'E', 0311}, {'\'', 'e', 0351},
-- {'^', 'E', 0312}, {'^', 'e', 0352},
-- {'"', 'E', 0313}, {'"', 'e', 0353},
-- {'`', 'I', 0314}, {'`', 'i', 0354},
-- {'\'', 'I', 0315}, {'\'', 'i', 0355},
-- {'^', 'I', 0316}, {'^', 'i', 0356},
-- {'"', 'I', 0317}, {'"', 'i', 0357},
-- {'-', 'D', 0320}, {'-', 'd', 0360},
-- {'~', 'N', 0321}, {'~', 'n', 0361},
-- {'`', 'O', 0322}, {'`', 'o', 0362},
-- {'\'', 'O', 0323}, {'\'', 'o', 0363},
-- {'^', 'O', 0324}, {'^', 'o', 0364},
-- {'~', 'O', 0325}, {'~', 'o', 0365},
-- {'"', 'O', 0326}, {'"', 'o', 0366},
-- {'/', 'O', 0330}, {'/', 'o', 0370},
-- {'`', 'U', 0331}, {'`', 'u', 0371},
-- {'\'', 'U', 0332}, {'\'', 'u', 0372},
-- {'^', 'U', 0333}, {'^', 'u', 0373},
-- {'"', 'U', 0334}, {'"', 'u', 0374},
-- {'\'', 'Y', 0335}, {'\'', 'y', 0375},
-- {'T', 'H', 0336}, {'t', 'h', 0376},
-- {'s', 's', 0337}, {'"', 'y', 0377},
-- {'s', 'z', 0337}, {'i', 'j', 0377},
-+struct kbdiacr accent_table[MAX_DIACR] = {
-+ {'`', 'A', '\300'}, {'`', 'a', '\340'},
-+ {'\'', 'A', '\301'}, {'\'', 'a', '\341'},
-+ {'^', 'A', '\302'}, {'^', 'a', '\342'},
-+ {'~', 'A', '\303'}, {'~', 'a', '\343'},
-+ {'"', 'A', '\304'}, {'"', 'a', '\344'},
-+ {'O', 'A', '\305'}, {'o', 'a', '\345'},
-+ {'0', 'A', '\305'}, {'0', 'a', '\345'},
-+ {'A', 'A', '\305'}, {'a', 'a', '\345'},
-+ {'A', 'E', '\306'}, {'a', 'e', '\346'},
-+ {',', 'C', '\307'}, {',', 'c', '\347'},
-+ {'`', 'E', '\310'}, {'`', 'e', '\350'},
-+ {'\'', 'E', '\311'}, {'\'', 'e', '\351'},
-+ {'^', 'E', '\312'}, {'^', 'e', '\352'},
-+ {'"', 'E', '\313'}, {'"', 'e', '\353'},
-+ {'`', 'I', '\314'}, {'`', 'i', '\354'},
-+ {'\'', 'I', '\315'}, {'\'', 'i', '\355'},
-+ {'^', 'I', '\316'}, {'^', 'i', '\356'},
-+ {'"', 'I', '\317'}, {'"', 'i', '\357'},
-+ {'-', 'D', '\320'}, {'-', 'd', '\360'},
-+ {'~', 'N', '\321'}, {'~', 'n', '\361'},
-+ {'`', 'O', '\322'}, {'`', 'o', '\362'},
-+ {'\'', 'O', '\323'}, {'\'', 'o', '\363'},
-+ {'^', 'O', '\324'}, {'^', 'o', '\364'},
-+ {'~', 'O', '\325'}, {'~', 'o', '\365'},
-+ {'"', 'O', '\326'}, {'"', 'o', '\366'},
-+ {'/', 'O', '\330'}, {'/', 'o', '\370'},
-+ {'`', 'U', '\331'}, {'`', 'u', '\371'},
-+ {'\'', 'U', '\332'}, {'\'', 'u', '\372'},
-+ {'^', 'U', '\333'}, {'^', 'u', '\373'},
-+ {'"', 'U', '\334'}, {'"', 'u', '\374'},
-+ {'\'', 'Y', '\335'}, {'\'', 'y', '\375'},
-+ {'T', 'H', '\336'}, {'t', 'h', '\376'},
-+ {'s', 's', '\337'}, {'"', 'y', '\377'},
-+ {'s', 'z', '\337'}, {'i', 'j', '\377'},
- };
-
- unsigned int accent_table_size = 68;
-diff --git a/drivers/char/defkeymap.map b/drivers/char/defkeymap.map
-index 50b30ca..ce141c8 100644
---- a/drivers/char/defkeymap.map
-+++ b/drivers/char/defkeymap.map
-@@ -1,5 +1,5 @@
- # Default kernel keymap. This uses 7 modifier combinations.
--keymaps 0-2,4-5,8,12
-+keymaps 0-2,4-5,8,12,64
- # Change the above line into
- # keymaps 0-2,4-6,8,12
- # in case you want the entries
-@@ -45,24 +45,38 @@ keycode 12 = minus underscore backslash
- control keycode 12 = Control_underscore
- shift control keycode 12 = Control_underscore
- alt keycode 12 = Meta_minus
--keycode 13 = equal plus
-+keycode 13 = equal plus
- alt keycode 13 = Meta_equal
-+ altgr keycode 13 = asciitilde
-+ ctrll keycode 13 = three
- keycode 14 = Delete Delete
-- control keycode 14 = BackSpace
-+ altgr keycode 14 = BackSpace
- alt keycode 14 = Meta_Delete
- keycode 15 = Tab Tab
- alt keycode 15 = Meta_Tab
- keycode 16 = q
-+ altgr keycode 16 = exclam
- keycode 17 = w
-+ altgr keycode 17 = at
- keycode 18 = e
-- altgr keycode 18 = Hex_E
-+ altgr keycode 18 = numbersign
- keycode 19 = r
-+ altgr keycode 19 = dollar
- keycode 20 = t
-+ altgr keycode 20 = percent
- keycode 21 = y
-+ altgr keycode 21 = asciicircum
- keycode 22 = u
-+ altgr keycode 22 = ampersand
-+ ctrll keycode 22 = seven
- keycode 23 = i
-+ altgr keycode 23 = asterisk
-+ ctrll keycode 23 = eight
- keycode 24 = o
-+ altgr keycode 24 = parenleft
-+ ctrll keycode 24 = nine
- keycode 25 = p
-+ altgr keycode 25 = parenright
- keycode 26 = bracketleft braceleft
- control keycode 26 = Escape
- alt keycode 26 = Meta_bracketleft
-@@ -71,19 +85,28 @@ keycode 27 = bracketright braceright asciitilde
- alt keycode 27 = Meta_bracketright
- keycode 28 = Return
- alt keycode 28 = Meta_Control_m
--keycode 29 = Control
-+keycode 29 = CtrlL
- keycode 30 = a
-- altgr keycode 30 = Hex_A
-+ altgr keycode 30 = U+00B0
- keycode 31 = s
-+ altgr keycode 31 = U+00A8
- keycode 32 = d
-- altgr keycode 32 = Hex_D
-+ altgr keycode 32 = U+20AC
- keycode 33 = f
-- altgr keycode 33 = Hex_F
-+ altgr keycode 33 = minus
- keycode 34 = g
-+ altgr keycode 34 = underscore
- keycode 35 = h
-+ altgr keycode 35 = braceleft
- keycode 36 = j
-+ altgr keycode 36 = bracketleft
-+ ctrll keycode 36 = four
- keycode 37 = k
-+ altgr keycode 37 = bracketright
-+ ctrll keycode 37 = five
- keycode 38 = l
-+ altgr keycode 38 = braceright
-+ ctrll keycode 38 = six
- keycode 39 = semicolon colon
- alt keycode 39 = Meta_semicolon
- keycode 40 = apostrophe quotedbl
-@@ -97,58 +120,65 @@ keycode 43 = backslash bar
- control keycode 43 = Control_backslash
- alt keycode 43 = Meta_backslash
- keycode 44 = z
-+ altgr keycode 44 = nine
- keycode 45 = x
-+ altgr keycode 45 = zero
- keycode 46 = c
- altgr keycode 46 = Hex_C
- keycode 47 = v
- keycode 48 = b
- altgr keycode 48 = Hex_B
- keycode 49 = n
-+ altgr keycode 49 = less
-+ ctrll keycode 49 = one
- keycode 50 = m
--keycode 51 = comma less
-- alt keycode 51 = Meta_comma
--keycode 52 = period greater
-+ altgr keycode 50 = greater
-+ ctrll keycode 50 = two
-+keycode 51 = comma semicolon
-+ altgr keycode 51 = apostrophe
-+keycode 52 = period colon
- control keycode 52 = Compose
-- alt keycode 52 = Meta_period
-+ altgr keycode 52 = quotedbl
- keycode 53 = slash question
- control keycode 53 = Delete
- alt keycode 53 = Meta_slash
--keycode 54 = Shift
-+ ctrll keycode 53 = zero
-+keycode 54 = AltGr
- keycode 55 = KP_Multiply
- keycode 56 = Alt
- keycode 57 = space space
- control keycode 57 = nul
- alt keycode 57 = Meta_space
- keycode 58 = Caps_Lock
--keycode 59 = F1 F11 Console_13
-+keycode 59 = F1 F11 one
- control keycode 59 = F1
- alt keycode 59 = Console_1
- control alt keycode 59 = Console_1
--keycode 60 = F2 F12 Console_14
-+keycode 60 = F2 F12 two
- control keycode 60 = F2
- alt keycode 60 = Console_2
- control alt keycode 60 = Console_2
--keycode 61 = F3 F13 Console_15
-+keycode 61 = F3 F13 three
- control keycode 61 = F3
- alt keycode 61 = Console_3
- control alt keycode 61 = Console_3
--keycode 62 = F4 F14 Console_16
-+keycode 62 = F4 F14 four
- control keycode 62 = F4
- alt keycode 62 = Console_4
- control alt keycode 62 = Console_4
--keycode 63 = F5 F15 Console_17
-+keycode 63 = F5 F15 five
- control keycode 63 = F5
- alt keycode 63 = Console_5
- control alt keycode 63 = Console_5
--keycode 64 = F6 F16 Console_18
-+keycode 64 = F6 F16 six
- control keycode 64 = F6
- alt keycode 64 = Console_6
- control alt keycode 64 = Console_6
--keycode 65 = F7 F17 Console_19
-+keycode 65 = F7 F17 seven
- control keycode 65 = F7
- alt keycode 65 = Console_7
- control alt keycode 65 = Console_7
--keycode 66 = F8 F18 Console_20
-+keycode 66 = F8 F18 eight
- control keycode 66 = F8
- alt keycode 66 = Console_8
- control alt keycode 66 = Console_8
-@@ -220,7 +250,7 @@ keycode 93 =
- keycode 94 =
- keycode 95 =
- keycode 96 = KP_Enter
--keycode 97 = Control
-+keycode 97 = Control
- keycode 98 = KP_Divide
- keycode 99 = Control_backslash
- control keycode 99 = Control_backslash
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/800-n516-lpc.patch b/target/linux/xburst/patches-2.6.34/800-n516-lpc.patch
deleted file mode 100644
index 5af5097ca9..0000000000
--- a/target/linux/xburst/patches-2.6.34/800-n516-lpc.patch
+++ /dev/null
@@ -1,520 +0,0 @@
-From a607edde7251b573d84f7e0286d60138ecb5bc21 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Wed, 12 May 2010 14:22:36 +0200
-Subject: [PATCH] Add n516 lpc driver
-
----
- drivers/misc/Kconfig | 8 +
- drivers/misc/Makefile | 1 +
- drivers/misc/n516-lpc.c | 471 +++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 480 insertions(+), 0 deletions(-)
- create mode 100644 drivers/misc/n516-lpc.c
-
-diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
-index c62f615..aacef22 100644
---- a/drivers/misc/Kconfig
-+++ b/drivers/misc/Kconfig
-@@ -338,6 +338,14 @@ config JZ4740_ADC
- This driver can also be build as a module. If so, the module will be
- called jz4740-adc.
-
-+config N516_LPC
-+ tristate "N516 keys & power controller"
-+ depends on I2C
-+ depends on INPUT
-+ depends on POWER_SUPPLY
-+ help
-+ N516 keyboard & power controller driver
-+
- source "drivers/misc/c2port/Kconfig"
- source "drivers/misc/eeprom/Kconfig"
- source "drivers/misc/cb710/Kconfig"
-diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
-index 506bcf6..21e7394 100644
---- a/drivers/misc/Makefile
-+++ b/drivers/misc/Makefile
-@@ -31,3 +31,4 @@ obj-$(CONFIG_JZ4740_ADC) += jz4740-adc.o
- obj-y += eeprom/
- obj-y += cb710/
- obj-$(CONFIG_VMWARE_BALLOON) += vmware_balloon.o
-+obj-$(CONFIG_N516_LPC) += n516-lpc.o
-diff --git a/drivers/misc/n516-lpc.c b/drivers/misc/n516-lpc.c
-new file mode 100644
-index 0000000..2b7a5b3
---- /dev/null
-+++ b/drivers/misc/n516-lpc.c
-@@ -0,0 +1,471 @@
-+#include <linux/module.h>
-+#include <linux/version.h>
-+#include <linux/init.h>
-+#include <linux/fs.h>
-+#include <linux/interrupt.h>
-+#include <linux/irq.h>
-+#include <linux/sched.h>
-+#include <linux/pm.h>
-+#include <linux/sysctl.h>
-+#include <linux/proc_fs.h>
-+#include <linux/delay.h>
-+#include <linux/platform_device.h>
-+#include <linux/input.h>
-+#include <linux/power_supply.h>
-+#include <linux/suspend.h>
-+
-+#include <linux/i2c.h>
-+
-+#include <asm/mach-jz4740/irq.h>
-+#include <asm/mach-jz4740/gpio.h>
-+#include <asm/mach-jz4740/board-n516.h>
-+
-+static int batt_level=0;
-+module_param(batt_level, int, 0);
-+
-+struct n516_lpc_chip {
-+ struct i2c_client *i2c_client;
-+ struct input_dev *input;
-+ unsigned int battery_level;
-+ unsigned int suspending:1, can_sleep:1;
-+};
-+
-+static struct n516_lpc_chip *the_lpc;
-+
-+struct i2c_device_id n516_lpc_i2c_ids[] = {
-+ {"LPC524", 0},
-+ {},
-+};
-+
-+MODULE_DEVICE_TABLE(i2c, n516_lpc_i2c_ids);
-+
-+static const unsigned short normal_i2c[] = I2C_ADDRS(0x54);
-+
-+static const unsigned int n516_lpc_keymap[] = {
-+ [0x01] = KEY_4,
-+ [0x02] = KEY_3,
-+ [0x03] = KEY_2,
-+ [0x04] = KEY_1,
-+ [0x05] = KEY_0,
-+ [0x07] = KEY_9,
-+ [0x08] = KEY_8,
-+ [0x09] = KEY_7,
-+ [0x0a] = KEY_6,
-+ [0x0b] = KEY_5,
-+ [0x0d] = KEY_PLAYPAUSE,
-+ [0x0e] = KEY_MENU,
-+ [0x0f] = KEY_SEARCH,
-+ [0x10] = KEY_DIRECTION,
-+ [0x11] = KEY_SPACE,
-+ [0x13] = KEY_ENTER,
-+ [0x14] = KEY_UP,
-+ [0x15] = KEY_DOWN,
-+ [0x16] = KEY_RIGHT,
-+ [0x17] = KEY_LEFT,
-+ [0x19] = KEY_PAGEDOWN,
-+ [0x1a] = KEY_PAGEUP,
-+ [0x1c] = KEY_POWER,
-+ [0x1d] = KEY_ESC,
-+ [0x1e] = KEY_SLEEP,
-+ [0x1f] = KEY_WAKEUP,
-+};
-+
-+static const unsigned int batt_charge[] = {0, 7, 20, 45, 65, 80, 100};
-+#define MAX_BAT_LEVEL 6
-+
-+static inline int n516_bat_charging(void)
-+{
-+ return !gpio_get_value(GPIO_CHARG_STAT_N);
-+}
-+
-+static int n516_bat_get_status(struct power_supply *b)
-+{
-+ if (power_supply_am_i_supplied(b)) {
-+ if (n516_bat_charging())
-+ return POWER_SUPPLY_STATUS_CHARGING;
-+ else
-+ return POWER_SUPPLY_STATUS_FULL;
-+ } else {
-+ return POWER_SUPPLY_STATUS_DISCHARGING;
-+ }
-+}
-+
-+static int n516_bat_get_charge(struct power_supply *b)
-+{
-+ return batt_charge[the_lpc->battery_level];
-+}
-+
-+static int n516_bat_get_property(struct power_supply *b,
-+ enum power_supply_property psp,
-+ union power_supply_propval *val)
-+{
-+ switch (psp) {
-+ case POWER_SUPPLY_PROP_STATUS:
-+ val->intval = n516_bat_get_status(b);
-+ break;
-+ case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
-+ val->intval = 100;
-+ break;
-+ case POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN:
-+ val->intval = 0;
-+ break;
-+ case POWER_SUPPLY_PROP_CHARGE_NOW:
-+ val->intval = n516_bat_get_charge(b);
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+ return 0;
-+}
-+
-+static void n516_bat_power_changed(struct power_supply *p)
-+{
-+ if (power_supply_am_i_supplied(p) && !n516_bat_charging())
-+ the_lpc->battery_level = MAX_BAT_LEVEL;
-+
-+ power_supply_changed(p);
-+}
-+
-+static enum power_supply_property n516_bat_properties[] = {
-+ POWER_SUPPLY_PROP_STATUS,
-+ POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
-+ POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN,
-+ POWER_SUPPLY_PROP_CHARGE_NOW,
-+};
-+
-+static struct power_supply n516_battery = {
-+ .name = "n516-battery",
-+ .get_property = n516_bat_get_property,
-+ .properties = n516_bat_properties,
-+ .num_properties = ARRAY_SIZE(n516_bat_properties),
-+ .external_power_changed = n516_bat_power_changed,
-+};
-+
-+static irqreturn_t n516_bat_charge_irq(int irq, void *dev)
-+{
-+ struct power_supply *psy = dev;
-+
-+ dev_dbg(psy->dev, "Battery charging IRQ\n");
-+
-+ if (power_supply_am_i_supplied(psy) && !n516_bat_charging())
-+ the_lpc->battery_level = MAX_BAT_LEVEL;
-+
-+ power_supply_changed(psy);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int n516_lpc_send_message(struct n516_lpc_chip *chip, unsigned char val)
-+{
-+ struct i2c_client *client = chip->i2c_client;
-+ struct i2c_msg msg = {client->addr, client->flags, 1, &val};
-+ int ret = 0;
-+
-+ ret = i2c_transfer(client->adapter, &msg, 1);
-+ return ret > 0 ? 0 : ret;
-+}
-+
-+static void n516_key_event(struct n516_lpc_chip *chip, unsigned char keycode)
-+{
-+ struct i2c_client *client = chip->i2c_client;
-+ bool long_press = false;
-+
-+ if (keycode & 0x40) {
-+ keycode &= ~0x40;
-+ long_press = true;
-+ }
-+
-+ dev_dbg(&client->dev, "keycode: 0x%02x, long_press: 0x%02x\n", keycode, (unsigned int)long_press);
-+
-+ if (keycode >= ARRAY_SIZE(n516_lpc_keymap) || n516_lpc_keymap[keycode] == 0)
-+ return;
-+
-+ if (long_press)
-+ input_report_key(chip->input, KEY_LEFTALT, 1);
-+
-+ input_report_key(chip->input, n516_lpc_keymap[keycode], 1);
-+ input_sync(chip->input);
-+ input_report_key(chip->input, n516_lpc_keymap[keycode], 0);
-+
-+ if (long_press)
-+ input_report_key(chip->input, KEY_LEFTALT, 0);
-+ input_sync(chip->input);
-+}
-+
-+static void n516_battery_event(struct n516_lpc_chip *chip, unsigned char battery_level)
-+{
-+ if (battery_level != chip->battery_level) {
-+ chip->battery_level = battery_level;
-+ power_supply_changed(&n516_battery);
-+ }
-+}
-+
-+static irqreturn_t n516_lpc_irq_thread(int irq, void *devid)
-+{
-+ struct n516_lpc_chip *chip = (struct n516_lpc_chip*)devid;
-+ int ret;
-+ unsigned char raw_msg;
-+ struct i2c_client *client = chip->i2c_client;
-+ struct i2c_msg msg = {client->addr, client->flags | I2C_M_RD, 1, &raw_msg};
-+
-+ if (client->dev.power.status >= DPM_OFF)
-+ return IRQ_HANDLED;
-+
-+ ret = i2c_transfer(client->adapter, &msg, 1);
-+ if (ret != 1) {
-+ dev_dbg(&client->dev, "I2C error: %d\n", ret);
-+ return IRQ_HANDLED;
-+ }
-+
-+ dev_dbg(&client->dev, "msg: 0x%02x\n", raw_msg);
-+
-+ /* Ack wakeup event */
-+ if ((raw_msg & ~0x40) < ARRAY_SIZE(n516_lpc_keymap))
-+ n516_key_event(chip, raw_msg);
-+ else if ((raw_msg >= 0x81) && (raw_msg <= 0x87))
-+ n516_battery_event(chip, raw_msg - 0x81);
-+ else if (raw_msg == 0x7e)
-+ n516_lpc_send_message(chip, 0x00);
-+ else
-+ dev_warn(&client->dev, "Unknown message: %x\n", raw_msg);
-+
-+ if (chip->suspending)
-+ chip->can_sleep = 0;
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void n516_lpc_power_off(void)
-+{
-+ struct i2c_client *client = the_lpc->i2c_client;
-+ unsigned char val = 0x01;
-+ struct i2c_msg msg = {client->addr, client->flags, 1, &val};
-+
-+ printk("Issue LPC POWEROFF command...\n");
-+ while (1)
-+ i2c_transfer(client->adapter, &msg, 1);
-+}
-+
-+static int n516_lpc_detect(struct i2c_client *client, struct i2c_board_info *info)
-+{
-+ return 0;
-+}
-+
-+static int n516_lpc_suspend_notifier(struct notifier_block *nb,
-+ unsigned long event,
-+ void *dummy)
-+{
-+ switch(event) {
-+ case PM_SUSPEND_PREPARE:
-+ the_lpc->suspending = 1;
-+ the_lpc->can_sleep = 1;
-+ break;
-+ case PM_POST_SUSPEND:
-+ the_lpc->suspending = 0;
-+ the_lpc->can_sleep = 1;
-+ break;
-+ default:
-+ return NOTIFY_DONE;
-+ }
-+ return NOTIFY_OK;
-+}
-+
-+static struct notifier_block n516_lpc_notif_block = {
-+ .notifier_call = n516_lpc_suspend_notifier,
-+};
-+
-+static int __devinit n516_lpc_probe(struct i2c_client *client, const struct i2c_device_id *id)
-+{
-+ struct n516_lpc_chip *chip;
-+ struct input_dev *input;
-+ int ret = 0;
-+ int i;
-+
-+ chip = kzalloc(sizeof(*chip), GFP_KERNEL);
-+ if (!chip)
-+ return -ENOMEM;
-+
-+ the_lpc = chip;
-+ chip->i2c_client = client;
-+ if ((batt_level > 0) && (batt_level < ARRAY_SIZE(batt_charge)))
-+ chip->battery_level = batt_level;
-+ else
-+ chip->battery_level = 1;
-+
-+ i2c_set_clientdata(client, chip);
-+
-+ ret = gpio_request(GPIO_LPC_INT, "LPC interrupt request");
-+ if (ret) {
-+ dev_err(&client->dev, "Unable to reguest LPC INT GPIO\n");
-+ goto err_gpio_req_lpcint;
-+ }
-+
-+ ret = gpio_request(GPIO_CHARG_STAT_N, "LPC charging status");
-+ if (ret) {
-+ dev_err(&client->dev, "Unable to reguest CHARG STAT GPIO\n");
-+ goto err_gpio_req_chargstat;
-+ }
-+
-+ /* Enter normal mode */
-+ n516_lpc_send_message(chip, 0x2);
-+
-+ input = input_allocate_device();
-+ if (!input) {
-+ dev_err(&client->dev, "Unable to allocate input device\n");
-+ ret = -ENOMEM;
-+ goto err_input_alloc;
-+ }
-+
-+ chip->input = input;
-+
-+ __set_bit(EV_KEY, input->evbit);
-+
-+ for (i = 0; i < ARRAY_SIZE(n516_lpc_keymap); i++)
-+ __set_bit(n516_lpc_keymap[i], input->keybit);
-+
-+ __set_bit(KEY_LEFTALT, input->keybit);
-+
-+ input->name = "n516-keys";
-+ input->phys = "n516-keys/input0";
-+ input->dev.parent = &client->dev;
-+ input->id.bustype = BUS_I2C;
-+ input->id.vendor = 0x0001;
-+ input->id.product = 0x0001;
-+ input->id.version = 0x0100;
-+
-+ ret = input_register_device(input);
-+ if (ret < 0) {
-+ dev_err(&client->dev, "Unable to register input device\n");
-+ goto err_input_register;
-+ }
-+
-+ ret = power_supply_register(NULL, &n516_battery);
-+ if (ret) {
-+ dev_err(&client->dev, "Unable to register N516 battery\n");
-+ goto err_bat_reg;
-+ }
-+
-+ ret = request_threaded_irq(gpio_to_irq(GPIO_LPC_INT), NULL,
-+ n516_lpc_irq_thread,
-+ IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
-+ "lpc", chip);
-+ if (ret) {
-+ dev_err(&client->dev, "request_irq failed: %d\n", ret);
-+ goto err_request_lpc_irq;
-+ }
-+
-+ ret = request_irq(gpio_to_irq(GPIO_CHARG_STAT_N), n516_bat_charge_irq,
-+ IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
-+ "battery charging", &n516_battery);
-+ if (ret) {
-+ dev_err(&client->dev, "Unable to claim battery charging IRQ\n");
-+ goto err_request_chrg_irq;
-+ }
-+
-+ pm_power_off = n516_lpc_power_off;
-+ ret = register_pm_notifier(&n516_lpc_notif_block);
-+ if (ret) {
-+ dev_err(&client->dev, "Unable to register PM notify block\n");
-+ goto err_reg_pm_notifier;
-+ }
-+
-+ device_init_wakeup(&client->dev, 1);
-+
-+ return 0;
-+
-+ unregister_pm_notifier(&n516_lpc_notif_block);
-+err_reg_pm_notifier:
-+ free_irq(gpio_to_irq(GPIO_CHARG_STAT_N), &n516_battery);
-+err_request_chrg_irq:
-+ free_irq(gpio_to_irq(GPIO_LPC_INT), chip);
-+err_request_lpc_irq:
-+ power_supply_unregister(&n516_battery);
-+err_bat_reg:
-+ input_unregister_device(input);
-+err_input_register:
-+ input_free_device(input);
-+err_input_alloc:
-+ gpio_free(GPIO_CHARG_STAT_N);
-+err_gpio_req_chargstat:
-+ gpio_free(GPIO_LPC_INT);
-+err_gpio_req_lpcint:
-+ i2c_set_clientdata(client, NULL);
-+ kfree(chip);
-+
-+ return ret;
-+}
-+
-+static int __devexit n516_lpc_remove(struct i2c_client *client)
-+{
-+ struct n516_lpc_chip *chip = i2c_get_clientdata(client);
-+
-+ unregister_pm_notifier(&n516_lpc_notif_block);
-+ pm_power_off = NULL;
-+ free_irq(gpio_to_irq(GPIO_CHARG_STAT_N), &n516_battery);
-+ free_irq(gpio_to_irq(GPIO_LPC_INT), chip);
-+ power_supply_unregister(&n516_battery);
-+ input_unregister_device(chip->input);
-+ gpio_free(GPIO_CHARG_STAT_N);
-+ gpio_free(GPIO_LPC_INT);
-+ i2c_set_clientdata(client, NULL);
-+ kfree(chip);
-+
-+ return 0;
-+}
-+
-+#if CONFIG_PM
-+static int n516_lpc_suspend(struct i2c_client *client, pm_message_t msg)
-+{
-+ if (!the_lpc->can_sleep)
-+ return -EBUSY;
-+
-+ if (device_may_wakeup(&client->dev))
-+ enable_irq_wake(gpio_to_irq(GPIO_LPC_INT));
-+
-+ return 0;
-+}
-+
-+static int n516_lpc_resume(struct i2c_client *client)
-+{
-+ if (device_may_wakeup(&client->dev))
-+ disable_irq_wake(gpio_to_irq(GPIO_LPC_INT));
-+
-+ return 0;
-+}
-+#else
-+#define n516_lpc_suspend NULL
-+#define n516_lpc_resume NULL
-+#endif
-+
-+
-+static struct i2c_driver n516_lpc_driver = {
-+ .class = I2C_CLASS_HWMON,
-+ .driver = {
-+ .name = "n516-keys",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = n516_lpc_probe,
-+ .remove = __devexit_p(n516_lpc_remove),
-+ .detect = n516_lpc_detect,
-+ .id_table = n516_lpc_i2c_ids,
-+ .address_list = normal_i2c,
-+ .suspend = n516_lpc_suspend,
-+ .resume = n516_lpc_resume,
-+};
-+
-+static int __init n516_lpc_init(void)
-+{
-+ return i2c_add_driver(&n516_lpc_driver);
-+}
-+module_init(n516_lpc_init);
-+
-+static void __exit n516_lpc_exit(void)
-+{
-+ i2c_del_driver(&n516_lpc_driver);
-+}
-+module_exit(n516_lpc_exit);
-+
-+MODULE_AUTHOR("Yauhen Kharuzhy");
-+MODULE_LICENSE("GPL");
-+MODULE_DESCRIPTION("Keys and power controller driver for N516");
-+MODULE_ALIAS("platform:n516-keys");
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/801-n526-lpc.patch b/target/linux/xburst/patches-2.6.34/801-n526-lpc.patch
deleted file mode 100644
index 91fd88fa67..0000000000
--- a/target/linux/xburst/patches-2.6.34/801-n526-lpc.patch
+++ /dev/null
@@ -1,287 +0,0 @@
-From f5978b5a9701fe1ddeffa0c5f73923fcaf31129e Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Wed, 12 May 2010 14:23:43 +0200
-Subject: [PATCH] Add n526 lpc driver
-
----
- drivers/misc/Kconfig | 9 ++
- drivers/misc/Makefile | 1 +
- drivers/misc/n526-lpc.c | 237 +++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 247 insertions(+), 0 deletions(-)
- create mode 100644 drivers/misc/n526-lpc.c
-
-diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
-index aacef22..0d8297a 100644
---- a/drivers/misc/Kconfig
-+++ b/drivers/misc/Kconfig
-@@ -346,6 +346,15 @@ config N516_LPC
- help
- N516 keyboard & power controller driver
-
-+config N526_LPC
-+ tristate "N526 LPC934 coprocessor"
-+ depends on JZ4740_N526
-+ help
-+ If you say yes here you get support for the N526s NXP LPC934 coprocessor.
-+ It is used as a keyboard controllor and for power management.
-+
-+ If you have a N526 you probably want to say Y here.
-+
- source "drivers/misc/c2port/Kconfig"
- source "drivers/misc/eeprom/Kconfig"
- source "drivers/misc/cb710/Kconfig"
-diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
-index 21e7394..1f866b3 100644
---- a/drivers/misc/Makefile
-+++ b/drivers/misc/Makefile
-@@ -32,3 +32,4 @@ obj-y += eeprom/
- obj-y += cb710/
- obj-$(CONFIG_VMWARE_BALLOON) += vmware_balloon.o
- obj-$(CONFIG_N516_LPC) += n516-lpc.o
-+obj-$(CONFIG_N526_LPC) += n526-lpc.o
-diff --git a/drivers/misc/n526-lpc.c b/drivers/misc/n526-lpc.c
-new file mode 100644
-index 0000000..4ac5c79
---- /dev/null
-+++ b/drivers/misc/n526-lpc.c
-@@ -0,0 +1,237 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/i2c.h>
-+#include <linux/input.h>
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
-+
-+#include <linux/workqueue.h>
-+
-+#include <asm/mach-jz4740/irq.h>
-+#include <asm/mach-jz4740/gpio.h>
-+
-+struct n526_lpc {
-+ struct i2c_client *client;
-+ struct input_dev *input;
-+
-+ struct work_struct work;
-+};
-+
-+static const unsigned int n526_lpc_keymap[] = {
-+ [0x01] = KEY_PAGEUP,
-+ [0x02] = KEY_PAGEDOWN,
-+ [0x03] = KEY_VOLUMEUP,
-+ [0x04] = KEY_VOLUMEDOWN,
-+ [0x06] = KEY_1,
-+ [0x07] = KEY_Q,
-+ [0x08] = KEY_A,
-+ [0x09] = KEY_Z,
-+ [0x0a] = KEY_LEFTSHIFT,
-+ [0x0b] = KEY_2,
-+ [0x0c] = KEY_W,
-+ [0x0d] = KEY_S,
-+ [0x0e] = KEY_X,
-+ [0x0f] = KEY_REFRESH,
-+ [0x10] = KEY_3,
-+ [0x11] = KEY_E,
-+ [0x12] = KEY_D,
-+ [0x13] = KEY_C,
-+ [0x14] = KEY_DOCUMENTS,
-+ [0x15] = KEY_4,
-+ [0x16] = KEY_R,
-+ [0x17] = KEY_F,
-+ [0x18] = KEY_V,
-+ [0x19] = KEY_MUTE,
-+ [0x1a] = KEY_5,
-+ [0x1b] = KEY_T,
-+ [0x1c] = KEY_G,
-+ [0x1d] = KEY_B,
-+ [0x1e] = KEY_DELETE,
-+ [0x1f] = KEY_6,
-+ [0x20] = KEY_Y,
-+ [0x21] = KEY_H,
-+ [0x22] = KEY_N,
-+ [0x23] = KEY_SPACE,
-+ [0x24] = KEY_7,
-+ [0x25] = KEY_U,
-+ [0x26] = KEY_J,
-+ [0x27] = KEY_M,
-+/* [0x28] = KEY_SYM, */
-+ [0x29] = KEY_8,
-+ [0x2a] = KEY_I,
-+ [0x2b] = KEY_K,
-+ [0x2c] = KEY_MENU,
-+ [0x2d] = KEY_LEFT,
-+ [0x2e] = KEY_9,
-+ [0x2f] = KEY_O,
-+ [0x30] = KEY_L,
-+ [0x31] = KEY_UP,
-+ [0x32] = KEY_DOWN,
-+ [0x33] = KEY_0,
-+ [0x34] = KEY_P,
-+ [0x35] = KEY_BACKSPACE,
-+ [0x36] = KEY_ENTER,
-+ [0x37] = KEY_RIGHT,
-+};
-+
-+static void n526_lpc_irq_work(struct work_struct *work)
-+{
-+ int ret;
-+ struct n526_lpc *n526_lpc = container_of(work, struct n526_lpc, work);
-+ struct i2c_client *client = n526_lpc->client;
-+ unsigned char raw_msg;
-+ struct i2c_msg msg = {client->addr, client->flags | I2C_M_RD, 1, &raw_msg};
-+ unsigned char keycode;
-+
-+
-+ ret = i2c_transfer(client->adapter, &msg, 1);
-+
-+ if (ret != 1) {
-+ dev_err(&client->dev, "Failed to read lpc status\n");
-+ }
-+
-+ keycode = raw_msg & 0x7f;
-+
-+ if (keycode < ARRAY_SIZE(n526_lpc_keymap)) {
-+ input_report_key(n526_lpc->input, n526_lpc_keymap[keycode],
-+ !(raw_msg & 0x80));
-+ input_sync(n526_lpc->input);
-+ }
-+}
-+
-+static irqreturn_t n526_lpc_irq(int irq, void *dev_id)
-+{
-+ struct n526_lpc *n526_lpc = dev_id;
-+
-+ schedule_work(&n526_lpc->work);
-+ return IRQ_HANDLED;
-+}
-+
-+static int __devinit n526_lpc_probe(struct i2c_client *client,
-+ const struct i2c_device_id *id)
-+{
-+ int ret;
-+ size_t i;
-+ struct n526_lpc *n526_lpc;
-+ struct input_dev *input;
-+
-+ n526_lpc = kmalloc(sizeof(*n526_lpc), GFP_KERNEL);
-+
-+ if (!n526_lpc) {
-+ dev_err(&client->dev, "Failed to allocate device structure\n");
-+ return -ENOMEM;
-+ }
-+
-+ input = input_allocate_device();
-+ if (!input) {
-+ dev_err(&client->dev, "Failed to allocate input device\n");
-+ ret = -ENOMEM;
-+ goto err_free;
-+ }
-+
-+ input->name = "n526-keys";
-+ input->phys = "n526-keys/input0";
-+ input->dev.parent = &client->dev;
-+ input->id.bustype = BUS_I2C;
-+ input->id.vendor = 0x0001;
-+ input->id.product = 0x0001;
-+ input->id.version = 0x0001;
-+
-+ __set_bit(EV_KEY, input->evbit);
-+
-+ for (i = 0; i < ARRAY_SIZE(n526_lpc_keymap); ++i) {
-+ if (n526_lpc_keymap[i] != 0)
-+ __set_bit(n526_lpc_keymap[i], input->keybit);
-+ }
-+
-+ ret = input_register_device(input);
-+
-+ if (ret) {
-+ dev_err(&client->dev, "Failed to register input device: %d\n", ret);
-+ goto err_free_input;
-+ }
-+
-+ n526_lpc->client = client;
-+ n526_lpc->input = input;
-+ INIT_WORK(&n526_lpc->work, n526_lpc_irq_work);
-+
-+ ret = request_irq(client->irq, n526_lpc_irq, IRQF_TRIGGER_FALLING,
-+ "n526-lpc", n526_lpc);
-+ if (ret) {
-+ dev_err(&client->dev, "Failed to request irq: %d\n", ret);
-+ goto err_unregister_input;
-+ }
-+
-+ i2c_set_clientdata(client, n526_lpc);
-+
-+ return 0;
-+
-+err_unregister_input:
-+ input_unregister_device(input);
-+err_free_input:
-+ input_free_device(input);
-+err_free:
-+ kfree(n526_lpc);
-+
-+ return ret;
-+}
-+
-+static int n526_lpc_remove(struct i2c_client *client)
-+{
-+ struct n526_lpc *n526_lpc = i2c_get_clientdata(client);
-+
-+ free_irq(client->irq, n526_lpc);
-+
-+ i2c_set_clientdata(client, NULL);
-+ input_unregister_device(n526_lpc->input);
-+ input_free_device(n526_lpc->input);
-+ kfree(n526_lpc);
-+
-+ return 0;
-+}
-+
-+static const struct i2c_device_id n526_lpc_id[] = {
-+ { "n526-lpc", 0 },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(i2c, n526_lpc_id);
-+
-+static struct i2c_driver n526_lpc_driver = {
-+ .driver = {
-+ .name = "n526-lpc",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = n526_lpc_probe,
-+ .remove = n526_lpc_remove,
-+ .id_table = n526_lpc_id,
-+};
-+
-+static int __init n526_lpc_init(void)
-+{
-+ return i2c_add_driver(&n526_lpc_driver);
-+}
-+module_init(n526_lpc_init);
-+
-+static void __exit n526_lpc_exit(void)
-+{
-+ i2c_del_driver(&n526_lpc_driver);
-+}
-+module_exit(n526_lpc_exit);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Lars-Peter Clausen");
-+MODULE_DESCRIPTION("n526 keypad driver");
-+MODULE_ALIAS("i2c:n526-keys");
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.34/900-add-openwrt-logo.patch b/target/linux/xburst/patches-2.6.34/900-add-openwrt-logo.patch
deleted file mode 100644
index a6432542a4..0000000000
--- a/target/linux/xburst/patches-2.6.34/900-add-openwrt-logo.patch
+++ /dev/null
@@ -1,9744 +0,0 @@
-From cefa31e6ddf48d8aae726f40e100af150b382f23 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Wed, 12 May 2010 14:18:47 +0200
-Subject: [PATCH] Add openwrt logo
-
----
- drivers/video/logo/Kconfig | 4 +
- drivers/video/logo/Makefile | 1 +
- drivers/video/logo/logo.c | 4 +
- drivers/video/logo/logo_openwrt_clut224.ppm | 9669 +++++++++++++++++++++++++++
- include/linux/linux_logo.h | 1 +
- 5 files changed, 9679 insertions(+), 0 deletions(-)
- create mode 100644 drivers/video/logo/logo_openwrt_clut224.ppm
-
-diff --git a/drivers/video/logo/Kconfig b/drivers/video/logo/Kconfig
-index 39ac49e..03da067 100644
---- a/drivers/video/logo/Kconfig
-+++ b/drivers/video/logo/Kconfig
-@@ -82,4 +82,8 @@ config LOGO_M32R_CLUT224
- depends on M32R
- default y
-
-+config LOGO_OPENWRT_CLUT224
-+ bool "224-color OpenWrt Linux logo"
-+ default y
-+
- endif # LOGO
-diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
-index 3b43781..cbed3a5 100644
---- a/drivers/video/logo/Makefile
-+++ b/drivers/video/logo/Makefile
-@@ -15,6 +15,7 @@ obj-$(CONFIG_LOGO_SUPERH_MONO) += logo_superh_mono.o
- obj-$(CONFIG_LOGO_SUPERH_VGA16) += logo_superh_vga16.o
- obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o
- obj-$(CONFIG_LOGO_M32R_CLUT224) += logo_m32r_clut224.o
-+obj-$(CONFIG_LOGO_OPENWRT_CLUT224) += logo_openwrt_clut224.o
-
- obj-$(CONFIG_SPU_BASE) += logo_spe_clut224.o
-
-diff --git a/drivers/video/logo/logo.c b/drivers/video/logo/logo.c
-index ea7a8cc..7208830 100644
---- a/drivers/video/logo/logo.c
-+++ b/drivers/video/logo/logo.c
-@@ -100,6 +100,10 @@ const struct linux_logo * __init_refok fb_find_logo(int depth)
- /* M32R Linux logo */
- logo = &logo_m32r_clut224;
- #endif
-+#ifdef CONFIG_LOGO_OPENWRT_CLUT224
-+ /* OpenWrt logo */
-+ logo = &logo_openwrt_clut224;
-+#endif
- }
- return logo;
- }
-diff --git a/drivers/video/logo/logo_openwrt_clut224.ppm b/drivers/video/logo/logo_openwrt_clut224.ppm
-new file mode 100644
-index 0000000..97f7282
---- /dev/null
-+++ b/drivers/video/logo/logo_openwrt_clut224.ppm
-@@ -0,0 +1,9669 @@
-+P3
-+320 179
-+255
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 55 70 121
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 48 64 117 73 86 133 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+73 86 133 65 79 128 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 35 51 108 70 84 131 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 49 65 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 34 50 107 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 58 73 123 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 36 52 108 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 56 70 122 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 54 69 120 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 42 58 112
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 39 55 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 31 48 105 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 72 85 132 72 85 132 58 73 123 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+52 67 119 73 86 133 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 66 80 129 33 50 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 38 54 109 71 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 66 80 129 31 48 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 55 70 121
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 36 52 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 58 73 123 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 33 50 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 46 61 115 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 48 64 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 36 52 108
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+44 60 114 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 47 105 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 43 59 113
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 72 85 132 64 78 127 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 50 65 118
-+73 86 133 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 66 80 129 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 44 60 114
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 54 69 120 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 36 52 108
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 50 65 118 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 48 64 117 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 37 53 109 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 27 44 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 46 104
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 27 44 102 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 72 85 132 70 84 131 32 49 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 46 61 115 73 86 133
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 65 79 128 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+56 70 122 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 32 49 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+58 73 123 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 35 51 108 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 52 67 119 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 43 59 113 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+30 47 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 111 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 33 50 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+72 85 132 72 85 132 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 42 58 112 73 86 133 73 86 133
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 73 86 133 63 77 126
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 66 80 128 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 54 69 120 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 39 55 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 58 73 123 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 52 67 119
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 39 55 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+44 60 114 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 34 50 107 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 111 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+34 50 107 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 35 51 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+72 85 132 55 70 121 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 38 54 109 72 85 132 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+58 73 123 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 71 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 31 48 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 63 77 126 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 52 67 119 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 47 62 115 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 38 54 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 45 60 114
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 47 62 115 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 110 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+38 54 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 35 51 108 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 37 53 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+65 79 128 27 44 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 47 105 69 83 131 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 49 65 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 45 60 114 72 85 132 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 51 66 119 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 46 61 115 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 63 77 126 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 47 62 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 38 54 109
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+34 50 107 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 43 59 113 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 32 49 106 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+34 50 107 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 63 77 126 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 72 85 132 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 60 75 125 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 66 80 129 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 46 104 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 39 55 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 60 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 55 70 121 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 31 48 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 46 104 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 47 62 115 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+44 60 114 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 27 44 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+50 65 118 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 68 82 130 30 46 104 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 32 49 106 71 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 48 64 117
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 55 70 121 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 52 67 119
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 54 69 120 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+54 69 120 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 37 53 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 29 45 103 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 111
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 60 75 125 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 50 65 118 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 64 78 127
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 110 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 63 77 126
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 42 58 112 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 37 53 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+48 64 117 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 47 62 115 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 32 49 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 42 58 112 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 69 83 131
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 47 62 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 66 80 129
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 64 78 127 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+36 52 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 32 49 106 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 44 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 47 62 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 42 58 112 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 36 52 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 111 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 111 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 32 49 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 54 69 120 73 86 133
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 70 84 131 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 40 56 111
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+56 70 122 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 50 65 118 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+47 62 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 58 73 123
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 52 67 119
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+34 50 107 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 52 67 119 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 37 53 109 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 40 56 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 35 51 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 38 54 109 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 34 50 107
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 35 51 108 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 73 86 133 56 70 122
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+60 75 125 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+58 73 123 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 50 65 118
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 58 73 123
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+29 45 103 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 54 69 120 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 32 49 106 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 44 60 114 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 34 50 107 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 38 54 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 36 52 108 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 36 52 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 63 77 126 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+38 54 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+36 52 108 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 45 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 63 77 126 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+63 77 126 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 42 58 112
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+34 50 107 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 54 69 120 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 33 50 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 28 45 103 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 47 62 115 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 31 48 105 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 39 55 111 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 34 50 107 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 45 60 114 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+66 80 128 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 58 73 123 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 59 74 124 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 50 65 118 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 39 55 111 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 33 50 106
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+40 56 111 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 48 64 117 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 29 45 103 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 32 49 106 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 27 44 102 68 82 130 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 44 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 37 53 109 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 48 64 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+60 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+46 61 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 43 59 113 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 44 60 114 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 47 62 115 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 30 46 104 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 46 61 115 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 66 80 129 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 63 77 126 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 45 60 114 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 66 80 128
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 56 70 122 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+54 69 120 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+52 67 119 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 37 53 109 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 48 64 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 43 59 113 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 32 49 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+26 43 102 66 80 129 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 42 58 112 72 85 132 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 58 73 123 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 56 70 122
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 63 77 126 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+45 60 114 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 31 48 105 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 52 67 119 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 40 56 111 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 35 51 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 42 58 112 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+30 46 104 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+43 59 113 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 65 79 128 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 68 82 130 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 66 80 129 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 45 60 114
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 37 53 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 110 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 27 44 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 37 53 109 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 39 55 110 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 111 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 40 56 111
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+30 47 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+66 80 128 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 40 56 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 50 65 118 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 39 55 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 45 60 114 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+32 49 106 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 37 53 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 54 69 120 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 33 50 106 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 37 53 109 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 35 51 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 111
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 73 86 133 71 84 130 70 81 118 70 81 118 71 84 130
-+76 89 135 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 60 75 125 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 32 49 106 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 51 66 119 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+66 80 128 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 51 66 119 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 49 65 117 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 35 51 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 47 105 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 44 60 114 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 34 50 107 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 37 53 109 25 42 101 15 25 57 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 110
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+33 50 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 77 90 136 60 71 109 43 51 76 25 31 50 15 16 21
-+3 4 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 7 9 13 15 18 27 29 34 52 46 54 80 64 76 117
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 63 77 126 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 63 77 126 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+58 73 123 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 58 73 123 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 56 70 122 61 75 125 61 75 125 61 75 125 54 69 120
-+32 41 72 32 41 72 32 41 72 32 41 72 32 41 72 30 37 63
-+30 37 63 30 37 63 30 37 63 30 37 63 30 37 63 30 37 63
-+30 37 63 27 35 61 13 22 52 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 15 25 57 13 22 52
-+13 22 52 13 22 52 27 35 61 30 37 63 30 37 63 30 37 63
-+30 37 63 30 37 63 30 37 63 30 37 63 30 37 63 30 37 63
-+36 45 78 54 69 120 54 69 120 54 69 120 54 69 120 39 55 110
-+25 42 101 19 29 65 13 22 52 13 22 52 13 22 52 13 22 52
-+13 22 52 13 22 52 13 22 52 13 22 52 13 22 52 13 22 52
-+13 22 52 13 22 52 13 22 52 27 35 61 28 36 67 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 47 62 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 33 50 106 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 43 59 113 23 33 67 4 6 13 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 37 53 109
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+34 50 107 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 64 76 117
-+32 38 56 7 9 13 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 14 14 16 3 4 6 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+10 12 18 38 45 67 70 81 118 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 48 64 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 47 62 115 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+48 64 117 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 63 77 126 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 49 65 117 61 75 125 61 75 125 61 75 125 59 74 124
-+2 3 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 17 39 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 41 89 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 7 13 54 69 120 54 69 120 54 69 120 54 69 120 42 58 112
-+25 42 101 8 10 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 14 19 34 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 31 48 105 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+29 39 72 8 10 17 0 0 0 0 0 0 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 36 52 108
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+36 52 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 64 76 117 23 26 38 0 0 0
-+0 0 0 0 0 0 15 16 21 89 90 90 137 140 149 187 187 187
-+215 215 215 244 244 244 255 255 255 255 255 255 255 255 255 255 255 255
-+237 237 237 207 207 207 180 180 180 134 134 135 75 75 75 7 8 9
-+0 0 0 0 0 0 1 1 2 29 34 52 70 81 118 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 65 79 128 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 31 48 105 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 110 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 43 59 113 61 75 125 61 75 125 61 75 125 61 75 125
-+15 18 27 0 0 0 53 55 60 100 102 106 100 102 106 100 102 106
-+100 102 106 100 102 106 100 102 106 100 102 106 100 102 106 100 102 106
-+100 102 106 75 75 75 0 0 0 8 10 17 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 30 30 30
-+100 102 106 100 102 106 100 102 106 100 102 106 100 102 106 100 102 106
-+100 102 106 100 102 106 100 102 106 100 102 106 100 102 106 7 8 9
-+0 0 0 45 57 100 54 69 120 54 69 120 54 69 120 46 61 115
-+25 42 101 1 1 3 0 0 0 89 90 90 100 102 106 100 102 106
-+100 102 106 100 102 106 100 102 106 100 102 106 100 102 106 100 102 106
-+100 102 106 100 102 106 30 30 30 0 0 0 26 32 53 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 29 40 76 8 11 18
-+0 0 0 0 0 0 30 30 30 7 8 9 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 75 88 134 32 38 61 1 1 1 0 0 0 3 4 6
-+89 90 90 195 195 195 251 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 255 255 255 255 255 255 255 255 255 255 255 255 244 244 244
-+167 167 167 75 75 75 1 2 3 0 0 0 2 3 3 43 51 76
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 73 86 133 34 50 107
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 65 79 128
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 49 65 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 47 105 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 40 56 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 39 55 110 61 75 125 61 75 125 61 75 125 61 75 125
-+27 35 61 0 0 0 100 102 106 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 226 226 226 0 0 0 1 1 2 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 9 15 36 0 0 0 123 126 137
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 75 75 75
-+0 0 0 30 37 63 54 69 120 54 69 120 54 69 120 49 65 117
-+23 37 83 0 0 0 15 16 21 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 43 45 49 0 0 0 36 45 78 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 30 46 104 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 46 61 115
-+45 60 114 45 60 114 28 40 79 9 12 21 0 0 0 0 0 0
-+15 16 21 137 140 149 244 244 244 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 33 50 106
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+38 54 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+70 81 118 15 18 27 0 0 0 1 1 1 89 90 90 226 226 226
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 207 207 207 75 75 75 0 0 0 0 0 0
-+23 26 38 71 84 130 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 73 86 133 50 65 118
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 52 67 119
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 58 73 123 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 65 79 128 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 46 61 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 61 75 125 61 75 125 61 75 125 61 75 125
-+41 51 85 0 0 0 43 45 49 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 15 16 21 0 0 0 23 37 83 25 42 101
-+25 42 101 25 42 101 25 42 101 2 3 7 0 0 0 195 195 195
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 148 148 149
-+0 0 0 14 19 34 54 69 120 54 69 120 54 69 120 52 67 119
-+19 29 65 0 0 0 75 75 75 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 237 237 237 1 2 3 0 0 0 49 62 109 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 31 48 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 46 61 115
-+28 40 79 9 13 26 0 0 0 0 0 0 15 16 21 134 134 135
-+244 244 244 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 32 49 106
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 64 76 117
-+8 10 17 0 0 0 30 30 30 187 187 187 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 155 156 157 14 14 16
-+0 0 0 12 15 26 70 81 118 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 63 77 126
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 110
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 66 80 128 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 58 73 123 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 51 66 119 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 46 104 61 75 125 61 75 125 61 75 125 61 75 125
-+53 67 117 0 0 0 2 3 3 244 244 244 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 75 75 75 0 0 0 19 29 65 25 42 101
-+25 42 101 25 42 101 23 37 83 0 0 0 14 14 16 251 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 255 255 255 215 215 215
-+0 0 0 1 2 3 53 67 117 54 69 120 54 69 120 54 69 120
-+13 20 42 0 0 0 117 119 127 255 255 255 255 255 255 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 187 187 0 0 0 7 9 15 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 33 50 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 18 31 74 10 14 26
-+0 0 0 0 0 0 14 14 16 123 126 137 244 244 244 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 31 48 105
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 70 81 118 8 10 17
-+0 0 0 43 45 49 226 226 226 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 207 207 207
-+30 30 30 0 0 0 12 15 26 72 85 132 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 72 85 132
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 30 46 104
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 50 65 118 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 56 70 122 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 60 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 8 11 18 0 0 0 187 187 187 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 117 119 127 0 0 0 13 20 42 25 42 101
-+25 42 101 25 42 101 13 22 52 0 0 0 89 90 90 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+30 30 30 0 0 0 41 51 85 54 69 120 54 69 120 54 69 120
-+9 13 26 0 0 0 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 134 134 135 0 0 0 13 20 42 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 35 51 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 18 31 74 9 13 26 0 0 0 0 0 0
-+14 14 16 117 119 127 237 237 237 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 78 91 137
-+78 91 137 78 91 137 78 91 137 75 88 134 15 18 27 0 0 0
-+43 45 49 237 237 237 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+226 226 226 30 30 30 0 0 0 23 26 38 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+39 55 111 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+64 78 127 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 44 60 114 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 60 75 125 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 56 70 122 61 75 125 61 75 125 61 75 125
-+60 75 125 23 28 45 0 0 0 134 134 135 255 255 255 255 255 255
-+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 0 0 0 9 13 26 25 42 101
-+25 42 101 25 42 101 9 13 26 0 0 0 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+100 102 106 0 0 0 21 28 52 54 69 120 54 69 120 54 69 120
-+2 3 7 0 0 0 215 215 215 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 75 75 75 0 0 0 19 29 65 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 37 53 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 7 8 9 117 119 127
-+237 237 237 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 46 104
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 27 44 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 32 38 61 0 0 0 30 30 30
-+226 226 226 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 207 207 207 7 8 9 0 0 0 46 54 80 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+51 66 119 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+54 69 120 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 44 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 39 55 111 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 52 67 119 61 75 125 61 75 125 61 75 125
-+60 75 125 32 41 72 0 0 0 75 75 75 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 215 215 215 0 0 0 2 3 7 25 42 101
-+25 42 101 25 42 101 1 1 2 0 0 0 226 226 226 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 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 0 0 0 8 11 18 54 69 120 54 69 120 49 62 109
-+0 0 0 7 8 9 251 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
-+254 254 254 15 16 21 0 0 0 27 41 89 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 29 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 60 71 109 0 0 1 1 1 1 187 187 187
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 148 148 149 0 0 0 4 5 9 74 85 123
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+63 77 126 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+44 60 114 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 49 65 117
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 32 49 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 49 65 117 61 75 125 61 75 125 61 75 125
-+60 75 125 49 61 100 0 0 0 15 16 21 254 254 254 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 251 251 251 7 8 9 0 0 0 23 37 83
-+25 42 101 19 29 65 0 0 0 43 45 49 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+237 237 237 2 3 3 0 0 0 49 62 109 54 69 120 41 51 85
-+0 0 0 51 51 51 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+215 215 215 0 0 0 1 2 3 31 48 105 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 40 56 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 19 23 37 0 0 0 100 102 106 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+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 254 254 53 55 60 0 0 0 32 38 56
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 66 79 125 55 65 99 44 53 81
-+40 48 74 44 52 77 50 58 85 60 71 109 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+71 85 132 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+36 52 108 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 66 80 128 60 71 109 49 60 97
-+50 58 85 40 48 74 39 46 71 40 49 78 44 53 81 49 60 97
-+60 71 109 66 79 125 68 82 130 68 82 130 68 82 130 56 70 122
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 29 45 103 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 27 41 89 19 29 65
-+15 25 57 15 25 57 15 25 57 19 29 65 23 37 83 25 42 101
-+25 42 101 25 42 101 46 61 115 61 75 125 61 75 125 61 75 125
-+61 75 125 59 74 124 2 3 5 0 0 0 215 215 215 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 51 51 51 0 0 0 19 29 65
-+25 42 101 10 17 39 0 0 0 100 102 106 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 53 55 60 0 0 0 32 41 72 54 69 120 27 35 61
-+0 0 0 100 102 106 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+155 156 157 0 0 0 9 13 26 30 47 105 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 42 58 112 25 42 101
-+25 42 101 25 42 101 18 31 74 15 25 57 15 25 57 15 25 57
-+18 31 74 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 60 71 109 0 0 0 7 8 9 226 226 226 255 255 255
-+255 255 255 255 255 255 255 255 255 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 254 254
-+167 167 167 75 75 75 30 30 30 2 3 3 7 8 9 43 45 49
-+100 102 106 207 207 207 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 195 195 195 0 0 0 3 4 6
-+71 84 130 78 91 137 78 91 137 52 59 86 10 12 18 10 12 18
-+10 12 18 10 12 18 10 12 18 10 12 18 10 12 18 10 12 18
-+10 12 18 10 12 18 10 12 18 10 12 18 10 12 18 23 28 45
-+72 85 132 44 52 77 15 18 27 0 0 1 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 5 7 13 29 34 52
-+60 71 109 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+60 71 109 32 38 61 12 15 26 1 1 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 1 1 1 12 15 26 32 38 61 49 60 97 61 75 125
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 65 79 128 41 51 85 8 11 17 8 11 17
-+8 11 17 8 11 17 8 11 17 8 11 17 8 11 17 8 11 17
-+8 11 17 8 11 17 8 11 17 8 10 17 8 10 17 25 31 50
-+64 78 127 53 64 102 26 32 53 5 7 13 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 5 9
-+10 17 39 23 37 83 43 59 113 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 14 19 34 0 0 0 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 100 102 106 0 0 0 13 22 52
-+25 42 101 4 6 13 0 0 0 180 180 180 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 134 134 135 0 0 0 17 22 38 54 69 120 17 22 38
-+0 0 0 148 148 149 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+100 102 106 0 0 0 13 20 42 19 29 65 7 9 15 7 9 15
-+7 9 15 7 9 15 7 9 15 7 9 15 7 9 15 7 9 15
-+7 9 15 7 9 15 7 9 15 7 9 15 7 9 15 9 13 26
-+13 22 52 3 5 9 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 1 1 3 11 15 31 18 31 74 13 20 42 4 6 13
-+4 6 13 4 6 13 2 3 5 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 3 5 9
-+4 6 13 4 6 13 4 6 13 4 6 13 4 6 13 27 41 89
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 29 34 52 0 0 0 100 102 106 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 226 226 226 53 55 60
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 1 2 3 100 102 106 251 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 255 255 255 255 255 255 51 51 51 0 0 0
-+44 52 77 78 91 137 78 91 137 46 54 81 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 11 17
-+8 10 17 0 0 0 0 0 0 2 3 3 43 45 49 75 75 75
-+100 102 106 75 75 75 53 55 60 15 16 21 0 0 0 0 0 0
-+1 1 1 29 34 52 66 80 128 74 87 134 73 86 133 73 86 133
-+73 86 133 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 68 82 130 72 85 132 71 85 132 49 60 97 15 18 27
-+0 0 0 0 0 0 0 0 0 0 0 0 30 30 30 51 51 51
-+75 75 75 89 90 90 100 102 106 89 90 90 75 75 75 51 51 51
-+15 16 21 0 0 0 0 0 0 0 0 0 0 0 0 9 12 21
-+15 25 57 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 61 75 125 38 47 77 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 21 36
-+32 38 61 1 1 1 0 0 0 0 0 0 14 14 16 51 51 51
-+89 90 90 100 102 106 89 90 90 55 60 74 14 14 16 0 0 0
-+0 0 0 1 1 2 18 25 51 59 74 124 61 75 125 61 75 125
-+61 75 125 60 75 125 27 35 61 0 0 0 100 102 106 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 148 148 149 0 0 0 9 13 26
-+23 37 83 0 0 0 7 8 9 244 244 244 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 195 195 195 0 0 0 3 4 6 53 67 117 7 9 15
-+0 0 0 195 195 195 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+43 45 49 0 0 0 19 29 65 18 27 58 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 30 30 30 75 75 75 100 102 106 75 75 75
-+30 30 30 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 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+76 89 135 4 5 9 0 0 0 195 195 195 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 237 237 237 30 30 30 0 0 0
-+5 7 13 44 52 77 64 76 117 79 90 127 74 85 123 60 71 109
-+32 38 56 1 1 2 0 0 0 89 90 90 254 254 254 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 155 156 157 0 0 0
-+16 21 36 78 91 137 78 91 137 46 54 81 0 0 0 53 55 60
-+187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187
-+187 187 187 187 187 187 187 187 187 134 134 135 0 0 0 0 0 0
-+0 0 0 30 30 30 148 148 149 237 237 237 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 254 254 254 207 207 207 100 102 106
-+3 4 6 0 0 0 10 12 18 60 71 109 73 86 133 73 86 133
-+73 86 133 46 61 115 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 63 77 126 64 76 117 19 23 37 0 0 0 0 0 0
-+7 9 13 89 90 90 155 156 157 220 220 220 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 237 237 237 167 167 167 100 102 106 14 14 16 0 0 0
-+0 0 0 8 11 18 23 37 83 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 58 73 123 38 47 77 0 0 0 55 60 74
-+187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187
-+187 187 187 187 187 187 187 187 187 117 119 127 0 0 0 0 0 0
-+0 0 0 1 1 1 89 90 90 187 187 187 251 251 251 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 251 251 251 195 195 195
-+75 75 75 1 1 1 0 0 0 16 21 36 55 70 121 61 75 125
-+61 75 125 60 75 125 41 51 85 0 0 0 43 45 49 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 195 195 195 0 0 0 3 6 11
-+15 25 57 0 0 0 55 60 74 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 251 251 251 15 16 21 0 0 0 41 51 85 0 0 0
-+1 2 3 244 244 244 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 244 244 244
-+2 3 3 0 0 0 27 41 89 18 27 58 0 0 0 53 55 60
-+187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187
-+187 187 187 187 187 187 187 187 187 134 134 135 0 0 0 0 0 0
-+30 30 30 187 187 187 254 254 254 255 255 255 255 255 255 255 255 255
-+255 255 255 215 215 215 117 119 127 14 14 16 0 0 0 0 0 0
-+100 102 106 187 187 187 187 187 187 187 187 187 226 226 226 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 195 195 195 187 187 187 187 187 187
-+187 187 187 187 187 187 187 187 187 7 9 13 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+55 65 99 0 0 0 30 30 30 254 254 254 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 89 90 90 0 0 0 15 16 21
-+74 85 123 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 55 65 99 3 4 6 0 0 0 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 226 226 226 1 1 1
-+1 1 2 71 84 130 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 0 0 0 0 0 0
-+100 102 106 244 244 244 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+207 207 207 43 45 49 0 0 0 7 9 13 64 76 117 73 86 133
-+73 86 133 54 69 120 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 41 54 95 4 5 9 0 0 0 14 14 16 123 126 137
-+237 237 237 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 244 244 244 148 148 149
-+15 16 21 0 0 0 1 2 3 19 29 65 25 42 101 25 42 101
-+25 42 101 25 42 101 55 70 121 38 47 77 0 0 0 89 90 90
-+255 255 255 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 0 0 0 0 0 0
-+30 30 30 195 195 195 255 255 255 255 255 255 255 255 255 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 187 187 14 14 16 0 0 0 19 23 37 61 75 125
-+61 75 125 60 75 125 53 67 117 0 0 0 2 3 3 244 244 244
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 244 244 244 2 3 3 0 0 0
-+9 12 21 0 0 0 134 134 135 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 89 90 90 0 0 0 12 15 26 0 0 0
-+43 45 49 255 255 255 255 255 255 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 187 187
-+0 0 0 4 6 13 25 42 101 18 27 58 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 0 0 0 51 51 51
-+237 237 237 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 134 134 135 0 0 0 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+38 45 67 0 0 0 100 102 106 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 215 215 215 0 0 0 1 1 2 68 77 109
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 48 55 81 0 0 0 30 30 30 251 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 255 255 255 43 45 49
-+0 0 0 55 65 99 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 0 0 0 148 148 149
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 237 237 237 43 45 49 0 0 0 10 12 18 66 80 128
-+73 86 133 59 74 124 25 42 101 25 42 101 25 42 101 25 42 101
-+18 31 74 1 2 3 0 0 0 53 55 60 220 220 220 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+237 237 237 75 75 75 0 0 0 0 0 1 19 29 65 25 42 101
-+25 42 101 25 42 101 52 67 119 38 47 77 0 0 0 89 90 90
-+255 255 255 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 0 0 0 53 55 60
-+237 237 237 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 207 207 207 7 8 9 0 0 0 32 41 72
-+61 75 125 60 75 125 60 75 125 8 11 18 0 0 0 187 187 187
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 43 45 49 0 0 0
-+0 0 0 0 0 0 207 207 207 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 155 156 157 0 0 0 0 0 0 0 0 0
-+89 90 90 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 134 134 135
-+0 0 0 9 15 36 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 7 9 13 226 226 226
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 251 251 251 30 30 30 0 0 0 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+23 26 38 0 0 0 155 156 157 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 123 126 137 0 0 0 23 28 45 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 81 94 136 7 9 13 0 0 0 180 180 180
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 100 102 106
-+0 0 0 39 46 71 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 123 126 137 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 226 226 226 30 30 30 0 0 0 32 38 61
-+73 86 133 63 77 126 25 42 101 25 42 101 25 42 101 23 37 83
-+2 3 7 0 0 0 89 90 90 251 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 255 255 255 255 255 255 255 255 255 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 254 254 100 102 106 0 0 0 1 1 2 18 31 74
-+25 42 101 25 42 101 49 65 117 38 47 77 0 0 0 89 90 90
-+255 255 255 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 51 51 51 237 237 237
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 148 148 149 0 0 0 7 9 15
-+59 74 124 60 75 125 60 75 125 23 28 45 0 0 0 134 134 135
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+0 0 0 15 16 21 254 254 254 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 226 226 226 0 0 0 0 0 0 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 75 75 75
-+0 0 0 15 25 57 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 134 134 135 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 155 156 157 0 0 0 0 0 0 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+8 11 17 0 0 0 207 207 207 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 53 55 60 0 0 0 52 59 86 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 32 38 56 0 0 0 117 119 127
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 137 140 149
-+0 0 0 29 34 52 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 237 237 237 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 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 187 187 0 0 0 1 1 2
-+60 71 109 66 80 129 25 42 101 25 42 101 25 42 101 5 7 14
-+0 0 0 75 75 75 251 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 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+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 254 254 89 90 90 0 0 0 3 6 11
-+25 42 101 25 42 101 48 64 117 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 207 207 207 237 237 237 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 251 251 251 30 30 30 0 0 0
-+41 51 85 60 75 125 60 75 125 32 41 72 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 134 134 135 0 0 0
-+0 0 0 89 90 90 255 255 255 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
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 43 45 49 0 0 0 0 0 0
-+187 187 187 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 15 16 21
-+0 0 0 23 37 83 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 207 207 207 244 244 244 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 51 51 51 0 0 0 0 0 1 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 76 90 135
-+1 1 2 0 0 0 237 237 237 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 14 14 16 0 0 0 64 76 117 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 50 58 85 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 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
-+0 0 0 19 23 37 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 75 75 75 0 0 0
-+25 31 50 70 84 131 25 42 101 25 42 101 15 25 57 0 0 0
-+30 30 30 244 244 244 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 251 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 255 255 255 255 255 255 244 244 244 30 30 30 0 0 0
-+13 20 42 25 42 101 47 62 115 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 134 134 135 0 0 0
-+19 24 44 60 75 125 60 75 125 49 61 100 0 0 0 15 16 21
-+254 254 254 255 255 255 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 187 187 0 0 0
-+0 0 0 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 244 244 244 43 45 49
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 117 119 127 0 0 0 0 0 0
-+237 237 237 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 220 220 220 0 0 0
-+1 1 3 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 195 195 195 0 0 0 1 1 3 9 13 26 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 74 85 123
-+0 0 0 7 8 9 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 237 237 237 0 0 0 0 0 0 81 94 136 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 60 71 109 0 0 0 43 45 49
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 195 195 195
-+0 0 0 15 16 21 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 215 215 215 0 0 0
-+1 2 3 62 75 121 25 42 101 27 41 89 2 3 7 0 0 0
-+187 187 187 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 226 226 226
-+89 90 90 15 16 21 0 0 0 7 9 13 75 75 75 207 207 207
-+255 255 255 255 255 255 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 187 187 0 0 0
-+2 3 5 25 42 101 46 61 115 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 195 195 195 0 0 0
-+8 10 17 60 75 125 60 75 125 59 74 124 2 3 5 0 0 0
-+215 215 215 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 237 237 237 0 0 0
-+1 1 1 226 226 226 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 180 180 180 0 0 0
-+220 220 220 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 187 187 0 0 0 30 30 30
-+255 255 255 255 255 255 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 0 0 0
-+9 12 21 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 89 90 90 0 0 0 10 17 39 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 64 76 117
-+0 0 0 15 16 21 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 220 220 220 0 0 0 4 5 9 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 68 77 109 0 0 0 30 30 30
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 207 207 207
-+0 0 0 8 11 17 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 215 215 215 137 140 149 134 134 135 180 180 180 254 254 254
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 43 51 76 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 207 207 207 15 16 21
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 8 9
-+187 187 187 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 51 51 51
-+0 0 0 15 25 57 45 60 114 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 244 244 244 3 4 6
-+0 0 0 53 67 117 60 75 125 60 75 125 14 19 34 0 0 0
-+155 156 157 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 30 30 30
-+43 45 49 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 100 102 106 0 0 0
-+148 148 149 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 244 244 244 7 8 9 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 100 102 106 0 0 0
-+13 20 42 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 244 244 244 255 255 255 255 255 255
-+226 226 226 3 4 6 0 0 0 23 37 83 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 64 76 117
-+0 0 0 30 30 30 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 207 207 207 0 0 0 7 9 13 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 70 81 118 0 0 0 14 14 16
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 215 215 215
-+0 0 0 4 5 9 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 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 254 254
-+100 102 106 1 1 1 0 0 0 0 0 0 0 0 0 55 60 74
-+237 237 237 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 155 156 157
-+0 0 0 23 26 38 25 42 101 9 12 21 0 0 0 180 180 180
-+255 255 255 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 254 254 51 51 51 0 0 0
-+15 18 27 60 71 109 62 75 121 53 64 102 19 23 37 0 0 0
-+30 30 30 251 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 155 156 157
-+0 0 0 9 12 21 45 60 114 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 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 51 51 51 7 8 9 30 30 30 100 102 106 244 244 244
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 30 30 30
-+0 0 0 49 62 109 60 75 125 60 75 125 27 35 61 0 0 0
-+100 102 106 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 75 75 75
-+117 119 127 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 30 30 30 0 0 0
-+75 75 75 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 75 75 75 117 119 127
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 51 51 51 0 0 0
-+19 29 65 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+244 244 244 100 102 106 7 8 9 0 0 0 30 30 30 100 102 106
-+89 90 90 0 0 0 9 13 26 25 42 101 9 15 36 0 0 0
-+7 8 9 14 14 16 14 14 16 14 14 16 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 43 45 49 14 14 16 14 14 16
-+14 14 16 14 14 16 14 14 16 1 1 1 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 64 76 117
-+0 0 0 30 30 30 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 207 207 207 0 0 0 7 9 13 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 68 77 109 0 0 0 30 30 30
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 207 207 207
-+0 0 0 8 11 17 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 134 134 135
-+0 0 0 0 0 1 23 26 38 29 34 52 4 5 9 0 0 0
-+75 75 75 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 215 215 215
-+0 0 0 4 5 9 27 41 89 0 0 0 7 8 9 244 244 244
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 0 0 0 1 1 2
-+44 52 77 50 58 85 50 58 85 50 58 85 44 53 81 1 1 2
-+0 0 0 180 180 180 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 226 226 226
-+1 1 1 0 0 1 42 56 104 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 155 156 157
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 43 45 49
-+0 0 0 49 60 97 60 75 125 60 75 125 41 51 85 0 0 0
-+43 45 49 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 117 119 127
-+187 187 187 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 220 220 220 0 0 0 0 0 0
-+14 14 16 251 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 137 140 149 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 244 244 244 3 4 6 0 0 0
-+27 41 89 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 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 254 254
-+75 75 75 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 18 31 74 25 42 101 9 15 36 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 70 81 118
-+0 0 0 14 14 16 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 220 220 220 0 0 0 3 4 6 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 65 74 105 0 0 0 43 45 49
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 195 195 195
-+0 0 0 15 16 21 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 244 244 244 14 14 16
-+0 0 0 48 55 81 76 89 135 76 89 135 60 71 109 1 2 3
-+0 0 0 207 207 207 255 255 255 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 254 254
-+14 14 16 0 0 0 15 25 57 0 0 0 75 75 75 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 117 119 127 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 100 102 106 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+43 45 49 0 0 0 36 45 78 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 244 244 244 14 14 16
-+0 0 0 27 35 61 60 71 109 49 60 97 1 2 3 0 0 0
-+220 220 220 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 53 67 117 0 0 0
-+1 2 3 237 237 237 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 180 180 180
-+251 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 148 148 149 0 0 0 0 0 0
-+0 0 0 195 195 195 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 215 215 215 220 220 220
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 195 195 195 0 0 0 3 6 11
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 180 180 180
-+0 0 0 2 3 7 18 31 74 25 42 101 18 31 74 10 17 39
-+1 1 3 4 6 13 25 42 101 25 42 101 27 41 89 23 37 83
-+23 37 83 23 37 83 11 15 31 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 19 29 65
-+23 37 83 23 37 83 23 37 83 23 37 83 23 37 83 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 71 84 130
-+0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 237 237 237 0 0 0 0 0 0 78 91 137 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 55 65 99 0 0 0 53 55 60
-+255 255 255 255 255 255 255 255 255 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 187 187
-+0 0 0 15 18 27 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 180 180 180 0 0 0
-+10 12 18 76 89 135 76 89 135 76 89 135 76 89 135 23 28 45
-+0 0 0 134 134 135 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+53 55 60 0 0 0 9 13 26 0 0 0 117 119 127 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 117 119 127 75 75 75 75 75 75
-+75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75
-+75 75 75 117 119 127 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+89 90 90 0 0 0 28 36 67 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 180 180 180 0 0 0
-+5 7 13 63 77 126 64 78 127 63 77 126 12 15 26 0 0 0
-+180 180 180 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 8 11 18
-+0 0 0 187 187 187 255 255 255 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 254 254
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 75 75 75 0 0 0 1 2 3
-+0 0 0 117 119 127 255 255 255 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 254 254
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 134 134 135 0 0 0 9 15 36
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 75 75 75
-+0 0 0 13 22 52 25 42 101 25 42 101 25 42 101 25 42 101
-+27 41 89 23 37 83 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 76 89 135
-+1 1 2 0 0 0 226 226 226 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 15 16 21 0 0 0 64 76 117 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 44 50 70 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 155 156 157
-+0 0 0 23 26 38 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 134 134 135 0 0 0
-+25 31 50 76 89 135 76 89 135 76 89 135 76 89 135 40 48 74
-+0 0 0 89 90 90 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+89 90 90 0 0 0 1 1 3 0 0 0 137 140 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+117 119 127 0 0 0 21 28 52 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 134 134 135 0 0 0
-+23 28 45 64 78 127 64 78 127 63 77 126 17 22 38 0 0 0
-+148 148 149 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 23 28 45
-+0 0 0 134 134 135 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 251 251 251 14 14 16 0 0 0 26 32 53
-+0 0 0 51 51 51 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 75 75 75 0 0 0 15 25 57
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 251 251 251 14 14 16
-+0 0 0 23 37 83 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+15 16 21 0 0 0 187 187 187 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 53 55 60 0 0 0 50 58 85 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 25 31 50 0 0 0 134 134 135
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 117 119 127
-+0 0 0 32 38 61 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+38 44 61 76 89 135 76 89 135 76 89 135 76 89 135 50 58 85
-+0 0 0 75 75 75 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+100 102 106 0 0 0 0 0 0 0 0 0 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 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+148 148 149 0 0 0 18 23 42 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 100 102 106 0 0 0
-+32 38 61 64 78 127 64 78 127 63 77 126 18 23 42 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 32 41 72
-+0 0 0 75 75 75 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+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 187 187 0 0 0 3 6 11 49 62 109
-+1 1 1 1 1 1 237 237 237 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 207 207 207 0 0 0
-+2 3 5 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+23 28 45 0 0 0 148 148 149 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 134 134 135 0 0 0 23 26 38 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 77 90 136 4 5 9 0 0 0 195 195 195
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 89 90 90
-+0 0 0 46 54 80 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 100 102 106 0 0 0
-+38 44 61 76 89 135 76 89 135 76 89 135 76 89 135 50 58 85
-+0 0 0 75 75 75 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+100 102 106 0 0 0 0 0 0 0 0 0 180 180 180 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+155 156 157 0 0 0 16 21 36 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 64 78 127 63 77 126 18 23 42 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 49 61 100
-+0 0 0 15 16 21 254 254 254 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 117 119 127 0 0 0 19 24 44 56 70 122
-+12 15 26 0 0 0 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 220 220 220 0 0 0 1 1 2 25 42 101
-+25 42 101 25 42 101 25 42 101 18 27 58 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 180 180 180 0 0 0
-+8 10 17 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+39 46 71 0 0 0 89 90 90 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 220 220 220 1 1 1 1 1 2 65 75 108
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 50 58 85 0 0 0 30 30 30 254 254 254
-+255 255 255 255 255 255 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 254 254 15 18 27
-+0 0 0 60 71 109 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 76 89 135 76 89 135 76 89 135 76 89 135 43 51 76
-+0 0 0 89 90 90 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+100 102 106 0 0 0 0 0 0 0 0 0 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 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 0 0 0 14 19 34 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 64 78 127 63 77 126 17 22 38 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+3 4 6 0 0 0 215 215 215 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 51 51 51 0 0 0 36 45 78 56 70 122
-+27 35 61 0 0 0 89 90 90 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+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 0 0 0 8 11 18 25 42 101
-+25 42 101 25 42 101 25 42 101 18 27 58 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 148 148 149 0 0 0
-+11 15 31 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+60 71 109 0 0 0 14 14 16 251 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 255 255 255 100 102 106 0 0 0 10 12 18
-+70 81 118 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 60 71 109 4 5 9 0 0 0 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 207 207 207 0 0 0
-+4 5 9 77 90 136 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 155 156 157 0 0 0
-+19 23 37 76 89 135 76 89 135 76 89 135 76 89 135 32 38 56
-+0 0 0 117 119 127 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+89 90 90 0 0 0 4 6 13 0 0 0 137 140 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 226 226 226 220 220 220 220 220 220
-+220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220
-+220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220
-+220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220
-+137 140 149 0 0 0 15 18 27 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 64 78 127 63 77 126 13 20 42 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+14 19 34 0 0 0 155 156 157 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 237 237 237 1 1 1 0 0 0 49 62 109 56 70 122
-+41 54 95 0 0 0 15 16 21 254 254 254 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 100 102 106 0 0 0 13 20 42 25 42 101
-+25 42 101 25 42 101 25 42 101 18 27 58 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 134 134 135 0 0 0
-+10 17 39 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 7 9 13 0 0 0 187 187 187 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 237 237 237 43 45 49 0 0 0
-+3 4 6 38 44 61 55 65 99 64 76 117 68 77 109 55 65 99
-+29 34 52 1 1 2 0 0 0 75 75 75 254 254 254 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 123 126 137 0 0 0
-+23 28 45 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 226 226 226 1 2 3
-+1 1 2 64 76 117 76 89 135 76 89 135 75 88 134 10 12 18
-+0 0 0 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
-+55 60 74 0 0 0 9 15 36 0 0 0 100 102 106 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 89 90 90 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 18 27 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 64 78 127 63 77 126 13 20 42 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+27 35 61 0 0 0 100 102 106 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 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 0 0 0 9 12 21 56 70 122 56 70 122
-+55 70 121 4 5 9 0 0 0 207 207 207 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 53 55 60 0 0 0 19 29 65 25 42 101
-+25 42 101 25 42 101 25 42 101 18 27 58 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 20 42 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 32 38 61 0 0 0 75 75 75 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 237 237 237 75 75 75
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 1 2 3 100 102 106 251 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 255 255 255 251 251 251 30 30 30 0 0 0
-+52 59 86 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 89 90 90
-+0 0 0 5 7 13 44 52 77 55 65 99 23 28 45 0 0 0
-+30 30 30 244 244 244 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+15 16 21 0 0 0 19 29 65 0 0 0 43 45 49 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 137 140 149 0 0 0 0 0 1
-+4 5 9 4 5 9 4 5 9 4 5 9 4 5 9 2 3 5
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 7 19 23 37 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 64 78 127 63 77 126 11 17 38 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+41 51 85 0 0 0 43 45 49 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 89 90 90 0 0 0 21 28 52 56 70 122 56 70 122
-+56 70 122 18 23 42 0 0 0 134 134 135 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 251 251 251 7 8 9 0 0 0 23 37 83 25 42 101
-+25 42 101 25 42 101 25 42 101 19 29 65 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 43 45 49 0 0 0 18 31 74
-+25 42 101 18 31 74 13 20 42 3 6 11 13 22 52 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 70 81 118 1 1 2 1 1 1 207 207 207 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+195 195 195 100 102 106 51 51 51 30 30 30 30 30 30 53 55 60
-+117 119 127 207 207 207 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 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 0 0 0 7 9 13
-+76 89 135 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 237 237 237
-+51 51 51 0 0 0 0 0 0 0 0 0 0 0 0 7 8 9
-+187 187 187 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 220 220 220
-+0 0 0 2 3 5 25 42 101 1 2 3 1 1 1 220 220 220
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 215 215 215 1 2 3 0 0 1
-+50 58 85 69 83 131 69 83 131 69 83 131 64 76 117 9 12 21
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 7 9 13 25 31 50 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 64 78 127 63 77 126 11 17 38 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+53 67 117 0 0 0 1 2 3 237 237 237 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 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 254 254 15 16 21 0 0 0 41 51 85 56 70 122 56 70 122
-+56 70 122 32 41 72 0 0 0 53 55 60 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 195 195 195 0 0 0 3 5 9 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 19 29 65 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 10 17 39 0 0 0 134 134 135 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 75 75 75 0 0 0 3 5 9
-+1 1 2 0 0 0 0 0 0 0 0 0 10 17 39 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 29 34 52 0 0 0 75 75 75 254 254 254
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 244 244 244 30 30 30 0 0 0 39 46 71
-+78 91 137 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+244 244 244 137 140 149 75 75 75 51 51 51 89 90 90 207 207 207
-+255 255 255 255 255 255 255 255 255 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
-+0 0 0 9 13 26 25 42 101 11 15 31 0 0 0 134 134 135
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+0 0 1 19 23 37 32 38 56 23 28 45 3 4 6 0 0 0
-+15 16 21 220 220 220 237 237 237 215 215 215 187 187 187 167 167 167
-+137 140 149 117 119 127 89 90 90 75 75 75 43 45 49 30 30 30
-+1 1 1 0 0 0 16 21 36 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 63 77 126 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 8 10 17 0 0 0 187 187 187 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+207 207 207 0 0 0 2 3 5 47 62 115 56 70 122 56 70 122
-+56 70 122 49 62 109 0 0 0 3 4 6 244 244 244 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 148 148 149 0 0 0 11 15 31 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 19 29 65 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 13 20 42 0 0 0 117 119 127 255 255 255
-+255 255 255 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 2 3 3 0 0 0
-+0 0 0 30 30 30 53 55 60 0 0 0 9 13 26 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 29 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 70 81 118 3 4 6 0 0 0 148 148 149
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 117 119 127 0 0 0 10 12 18 75 88 134
-+78 91 137 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 55 60 74
-+0 0 0 15 25 57 25 42 101 19 29 65 0 0 0 15 16 21
-+244 244 244 255 255 255 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 254 254 117 119 127
-+3 4 6 0 0 0 0 0 0 0 0 0 0 0 0 53 55 60
-+220 220 220 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 180 180 180
-+0 0 0 1 1 2 60 71 109 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 63 77 126 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 23 28 45 0 0 0 134 134 135 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+134 134 135 0 0 0 11 15 31 51 66 119 56 70 122 56 70 122
-+56 70 122 56 70 122 9 12 21 0 0 0 180 180 180 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 89 90 90 0 0 0 13 22 52 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 19 29 65 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 13 22 52 0 0 0 100 102 106 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 237 237 237 195 195 195
-+226 226 226 255 255 255 187 187 187 0 0 0 8 10 17 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 46 104
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 27 44 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 78 91 137
-+78 91 137 78 91 137 78 91 137 46 54 81 0 0 0 7 9 13
-+207 207 207 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 180 180 180 1 1 1 0 0 0 55 65 99 78 91 137
-+78 91 137 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 215 215 215 1 1 1
-+1 1 2 27 41 89 25 42 101 25 42 101 5 7 14 0 0 0
-+117 119 127 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+226 226 226 148 148 149 117 119 127 148 148 149 207 207 207 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 244 244 244 30 30 30
-+0 0 0 26 32 53 66 80 129 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 56 70 122 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 32 41 72 0 0 0 75 75 75 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+53 55 60 0 0 0 15 25 57 54 69 120 56 70 122 56 70 122
-+56 70 122 56 70 122 26 32 53 0 0 0 100 102 106 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 30 30 30 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 23 33 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 15 25 57 0 0 0 75 75 75 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 215 215 215 0 0 0 2 3 7 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+78 91 137 78 91 137 78 91 137 78 91 137 23 26 38 0 0 0
-+15 16 21 220 220 220 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+195 195 195 7 8 9 0 0 0 38 44 61 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 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 254 254 75 75 75 0 0 0
-+10 17 39 25 42 101 25 42 101 25 42 101 19 29 65 0 0 0
-+2 3 3 195 195 195 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 251 251 251 75 75 75 0 0 0
-+5 7 14 53 67 117 66 80 129 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 52 67 119 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 49 61 100 0 0 0 15 16 21 254 254 254 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 244 244 244
-+3 4 6 0 0 0 23 37 83 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 41 51 85 0 0 0 30 30 30 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+226 226 226 0 0 0 1 1 2 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 23 33 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 23 37 83 0 0 0 15 16 21 254 254 254
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 244 244 244 0 0 0 0 0 0 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 31 48 105
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+78 91 137 78 91 137 78 91 137 78 91 137 74 87 134 15 18 27
-+0 0 0 30 30 30 207 207 207 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 180 180 180
-+7 8 9 0 0 0 23 28 45 76 90 135 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 148 148 149 0 0 0 2 3 5
-+23 37 83 25 42 101 25 42 101 25 42 101 25 42 101 19 24 44
-+0 0 0 15 16 21 220 220 220 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+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 254 254 117 119 127 0 0 0 1 2 3
-+23 37 83 63 77 126 66 80 129 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 48 64 117 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 58 73 123 3 4 6 0 0 0 215 215 215 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 180 180 180
-+0 0 0 4 6 13 29 45 103 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 53 67 117 1 2 3 0 0 0 220 220 220
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+180 180 180 0 0 0 8 10 17 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 23 33 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 2 3 7 0 0 0 195 195 195
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 32 49 106
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 74 85 123
-+12 15 26 0 0 0 7 8 9 155 156 157 254 254 254 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 244 244 244 117 119 127 2 3 3
-+0 0 0 23 28 45 75 88 134 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 215 215 215 254 254 254
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 180 180 180 7 8 9 0 0 0 23 33 67
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 55 70 121
-+15 18 27 0 0 0 30 30 30 207 207 207 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 251 251 251 100 102 106 0 0 0 0 0 0 19 29 65
-+29 45 103 66 80 129 66 80 129 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 42 58 112 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 14 19 34 0 0 0 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 100 102 106
-+0 0 0 10 17 39 32 49 106 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 14 19 34 0 0 0 148 148 149
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+117 119 127 0 0 0 10 17 39 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 36 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 10 17 39 0 0 0 75 75 75
-+254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 43 45 49 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 33 50 106
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+38 54 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+73 86 133 23 28 45 0 0 0 0 0 0 53 55 60 195 195 195
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 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 254 254 167 167 167 43 45 49 0 0 0 0 0 0
-+32 38 61 76 90 135 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 89 90 90
-+244 244 244 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 155 156 157 2 3 3 0 0 0 23 28 45 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 71 85 132
-+66 79 125 15 16 21 0 0 0 7 9 13 148 148 149 251 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 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+207 207 207 51 51 51 0 0 0 1 1 2 19 29 65 25 42 101
-+36 52 108 66 80 129 66 80 129 40 48 74 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 36 52 108 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 27 35 61 0 0 0 100 102 106 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 30 30 30
-+0 0 0 18 31 74 36 52 108 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 28 36 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+53 55 60 0 0 0 19 29 65 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 36 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 41 89 1 2 3 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 75 75 75 0 0 0 19 29 65
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 43 51 76 4 5 9 0 0 0 0 0 0
-+51 51 51 148 148 149 220 220 220 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 220 220 220
-+137 140 149 43 45 49 0 0 0 0 0 0 8 10 17 55 65 99
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 77 90 136 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+30 30 30 167 167 167 254 254 254 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 207 207 207
-+55 60 74 0 0 0 0 0 0 32 38 56 51 66 119 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 42 58 112 72 85 132
-+72 85 132 66 79 125 23 26 38 0 0 0 0 0 0 43 45 49
-+155 156 157 237 237 237 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 251 251 251 187 187 187 75 75 75
-+2 3 3 0 0 0 2 3 7 18 31 74 25 42 101 25 42 101
-+45 60 114 66 80 129 66 80 129 40 48 74 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 63 77 126 63 77 126 29 45 103 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 41 51 85 0 0 0 43 45 49 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 220 220 220 0 0 0
-+1 1 2 25 42 101 40 56 111 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 45 57 100 0 0 0 14 14 16
-+251 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 251 251 251
-+7 8 9 0 0 0 23 37 83 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 36 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 19 29 65 0 0 0
-+0 0 0 100 102 106 237 237 237 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 100 102 106 0 0 0 13 22 52
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+36 52 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 74 85 123 32 38 56 2 3 5
-+0 0 0 0 0 0 0 0 0 30 30 30 89 90 90 123 126 137
-+167 167 167 187 187 187 195 195 195 207 207 207 220 220 220 207 207 207
-+187 187 187 180 180 180 134 134 135 89 90 90 43 45 49 0 0 0
-+0 0 0 0 0 0 5 7 13 38 45 69 72 85 132 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+77 90 136 77 90 136 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+0 0 0 0 0 0 30 30 30 100 102 106 155 156 157 187 187 187
-+207 207 207 195 195 195 167 167 167 117 119 127 43 45 49 0 0 0
-+0 0 0 4 5 9 43 51 76 73 86 133 35 51 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 58 73 123 72 85 132
-+71 85 132 71 85 132 70 84 131 40 49 78 4 5 9 0 0 0
-+0 0 0 3 4 6 51 51 51 100 102 106 148 148 149 180 180 180
-+195 195 195 207 207 207 207 207 207 207 207 207 187 187 187 180 180 180
-+148 148 149 117 119 127 75 75 75 7 8 9 0 0 0 0 0 0
-+0 0 0 9 15 36 27 41 89 25 42 101 25 42 101 25 42 101
-+54 69 120 66 80 129 66 80 129 40 48 74 0 0 0 15 16 21
-+51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51
-+51 51 51 51 51 51 51 51 51 51 51 51 15 16 21 0 0 0
-+32 41 72 63 77 126 60 75 125 25 42 101 9 15 36 0 0 0
-+30 30 30 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51
-+51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 14 14 16
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 53 67 117 0 0 0 1 2 3 51 51 51
-+51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51
-+51 51 51 51 51 51 51 51 51 51 51 51 30 30 30 0 0 0
-+9 13 26 25 42 101 44 60 114 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 5 7 14 0 0 0
-+43 45 49 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51
-+51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 43 45 49
-+0 0 0 2 3 7 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 29 39 72 0 0 0 14 14 16
-+51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51
-+51 51 51 51 51 51 51 51 51 51 51 51 30 30 30 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 32 49 106 26 36 67
-+1 1 1 0 0 0 7 8 9 75 75 75 137 140 149 167 167 167
-+180 180 180 207 207 207 207 207 207 187 187 187 167 167 167 155 156 157
-+117 119 127 75 75 75 30 30 30 0 0 0 0 0 0 10 17 39
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 37 53 109
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+35 51 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 71 84 130
-+44 52 77 19 23 37 1 2 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 2 3 3
-+23 26 38 48 55 81 74 87 134 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 77 90 136
-+77 90 136 77 90 136 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+15 16 21 4 5 9 0 0 0 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 3 5
-+32 38 56 66 79 125 73 86 133 65 79 128 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 29 45 103 71 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 66 79 125 40 48 74
-+12 15 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 5 9 13 20 42
-+23 37 83 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+64 78 127 66 80 129 66 80 129 40 48 74 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+32 41 72 63 77 126 54 69 120 25 42 101 9 15 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 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 8 11 18 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+13 22 52 25 42 101 48 64 117 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 23 28 45 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 15 31 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 46 104 29 39 72 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 34 50 107 46 61 115
-+41 51 85 9 13 26 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 6 13 15 25 57
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 38 54 109
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+33 50 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 74 87 134 55 65 99 43 51 76 32 38 56
-+23 26 38 15 18 27 10 12 18 7 9 13 4 5 9 10 12 18
-+15 18 27 16 21 36 29 34 52 40 48 74 55 65 99 73 86 133
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 73 86 133 55 65 99 32 38 61 23 26 38 15 18 27
-+8 10 17 15 16 21 19 23 37 29 34 52 49 60 97 71 84 130
-+73 86 133 73 86 133 73 86 133 47 62 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 45 60 114 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 64 76 117 46 54 81 32 38 61 23 28 45 15 18 27
-+9 12 21 8 11 17 7 9 13 8 11 17 9 12 21 15 18 27
-+23 28 45 32 38 61 40 49 78 41 54 95 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 32 49 106
-+66 80 129 66 80 129 66 80 129 59 72 115 49 60 97 49 60 97
-+49 60 97 49 60 97 49 60 97 49 60 97 49 60 97 49 60 97
-+49 60 97 49 60 97 49 60 97 49 60 97 49 60 97 49 60 97
-+60 71 109 63 77 126 47 62 115 25 42 101 23 37 83 18 31 74
-+18 31 74 18 31 74 18 31 74 18 31 74 18 31 74 18 31 74
-+18 31 74 41 54 95 41 54 95 41 54 95 41 54 95 41 54 95
-+41 54 95 53 67 117 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 49 61 100 41 54 95 41 54 95
-+41 54 95 28 40 79 18 31 74 18 31 74 18 31 74 18 31 74
-+18 31 74 18 31 74 18 31 74 18 31 74 18 31 74 18 31 74
-+27 41 89 25 42 101 51 66 119 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 49 62 109 41 51 85
-+41 51 85 41 51 85 41 51 85 41 51 85 41 51 85 23 37 83
-+18 31 74 18 31 74 18 31 74 18 31 74 18 31 74 18 31 74
-+18 31 74 23 37 83 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 42 56 104 41 51 85 41 51 85
-+41 51 85 41 51 85 41 51 85 41 51 85 41 51 85 41 51 85
-+41 51 85 41 51 85 41 51 85 28 40 79 18 31 74 18 31 74
-+23 37 83 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 36 52 108 46 61 115
-+45 60 114 45 60 114 41 54 95 27 35 61 16 21 36 9 13 26
-+7 9 15 5 7 13 4 6 13 8 10 17 9 13 26 11 15 31
-+13 20 42 15 25 57 18 31 74 27 41 89 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 111
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+50 65 118 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 82 95 139 110 117 140 110 117 140
-+110 117 140 82 95 139 69 83 131 28 45 103 60 75 125 64 78 127
-+64 78 127 64 78 127 42 58 112 64 78 127 72 85 132 107 114 137
-+110 117 140 110 117 140 110 117 140 82 95 139 75 88 134 110 117 140
-+110 117 140 110 117 140 82 95 139 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 30 47 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 42 58 112
-+76 89 135 107 114 137 107 114 137 107 114 137 82 95 139 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 39 55 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+37 53 109 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 82 95 139 82 95 139
-+82 95 139 70 84 131 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 32 49 106 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 55 70 121 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 51 66 119 63 77 126 82 95 139
-+82 95 139 82 95 139 68 82 130 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 39 55 110 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 40 56 111
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+29 45 103 71 85 132 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 46 54 80 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 137 140 149 43 45 49 43 45 49
-+53 55 60 115 121 140 49 65 117 36 52 108 98 103 119 43 45 49
-+43 45 49 53 55 60 101 108 130 72 85 132 76 89 135 123 126 137
-+43 45 49 43 45 49 89 90 90 110 117 140 110 117 140 75 75 75
-+43 45 49 43 45 49 137 140 149 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 61 75 125 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 54 69 120
-+117 122 139 51 51 51 43 45 49 53 55 60 115 121 140 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 63 77 126 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+43 59 113 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 82 95 139 100 102 106 43 45 49
-+43 45 49 43 45 49 43 45 49 43 45 49 43 45 49 43 45 49
-+43 45 49 98 103 119 46 61 115 25 42 101 25 42 101 25 42 101
-+25 42 101 30 47 105 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 111 51 66 119 82 95 139 89 90 90
-+43 45 49 43 45 49 128 131 141 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 36 52 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 42 58 112 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 31 48 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+30 46 104 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 52 67 119 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 76 90 135 46 54 80 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 115 121 140 14 14 16 0 0 0
-+1 1 1 117 122 139 29 45 103 66 79 125 43 45 49 0 0 0
-+0 0 0 0 0 0 106 112 131 72 85 132 82 95 139 75 75 75
-+0 0 0 0 0 0 89 90 90 82 95 139 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 49 65 117 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 64 78 127
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 59 74 124 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+50 65 118 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 82 95 139 55 60 74 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 75 75 75 46 61 115 25 42 101 25 42 101 25 42 101
-+25 42 101 36 52 108 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 49 65 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 42 58 112 50 65 118 82 95 139 43 45 49
-+0 0 0 0 0 0 104 109 128 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 33 50 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 44 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 29 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 30 46 104 72 85 132 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 76 90 135 76 90 135 46 54 80 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 110 117 140 43 45 49 0 0 0
-+0 0 0 98 104 122 26 43 102 93 100 124 7 8 9 0 0 0
-+0 0 0 0 0 0 89 90 90 82 95 139 110 117 140 30 30 30
-+0 0 0 0 0 0 106 112 131 71 85 132 110 117 140 128 131 141
-+112 118 137 112 118 137 128 131 141 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 71 85 132 68 82 130
-+68 82 130 68 82 130 35 51 108 25 42 101 25 42 101 32 49 106
-+25 42 101 25 42 101 25 42 101 25 42 101 35 51 108 66 80 129
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 66 80 129 69 83 131
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 50 65 118 25 42 101 25 42 101 33 50 106 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+58 73 123 61 75 125 63 77 126 68 82 130 63 77 126 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 82 95 139 55 60 74 0 0 0
-+0 0 0 15 18 27 100 102 106 79 84 103 79 84 103 79 84 103
-+79 84 103 123 126 137 46 61 115 25 42 101 25 42 101 25 42 101
-+25 42 101 42 58 112 59 74 124 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 58 73 123 58 73 123 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 46 61 115 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 51 66 119 50 65 118 82 95 139 43 45 49
-+0 0 0 0 0 0 104 109 128 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 37 53 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 28 45 103
-+25 42 101 25 42 101 25 42 101 26 43 102 49 65 117 47 62 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 54 69 120 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 76 90 135
-+76 90 135 76 90 135 76 90 135 46 54 80 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 82 95 139 75 75 75 0 0 0
-+0 0 0 72 78 100 42 58 112 98 103 119 0 0 0 0 0 0
-+14 14 16 0 0 0 30 30 30 110 117 140 115 121 140 14 14 16
-+0 0 0 3 4 6 115 121 140 70 84 131 107 114 137 123 126 137
-+104 109 128 104 109 128 137 140 149 69 83 131 110 117 140 106 112 131
-+104 109 128 128 131 141 137 140 149 117 119 127 98 103 119 137 140 149
-+82 95 139 64 78 127 66 79 125 99 106 127 90 96 116 79 85 105
-+93 98 117 98 104 122 81 92 128 32 49 106 47 62 115 66 80 129
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 66 80 128
-+66 80 128 69 83 131 110 117 140 106 112 131 98 103 119 100 102 106
-+98 103 119 112 118 137 107 114 137 65 79 128 64 78 127 64 78 127
-+65 79 128 82 95 139 98 104 122 90 96 116 79 84 103 90 96 116
-+98 103 119 93 100 124 35 51 108 25 42 101 25 42 101 40 56 111
-+110 117 140 106 112 131 98 103 119 100 102 106 98 103 119 106 112 131
-+107 114 137 64 78 127 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 76 90 135 33 50 106 33 50 106 33 50 106
-+33 50 106 33 50 106 38 54 109 115 121 140 93 98 117 93 98 117
-+115 121 140 110 117 140 100 102 106 106 112 131 110 117 140 56 70 122
-+69 83 131 107 114 137 104 109 128 100 102 106 100 102 106 104 109 128
-+109 115 137 76 90 135 54 69 120 54 69 120 40 56 111 25 42 101
-+49 65 117 93 100 124 93 98 117 79 85 105 90 96 116 93 98 117
-+93 100 124 44 60 114 25 42 101 25 42 101 25 42 101 36 52 108
-+93 100 124 93 98 117 100 102 106 106 112 131 137 140 149 43 45 49
-+0 0 0 0 0 0 104 109 128 49 65 117 49 65 117 49 65 117
-+82 95 139 106 112 131 98 103 119 79 85 105 93 98 117 98 104 122
-+71 84 130 27 44 102 25 42 101 25 42 101 101 108 130 93 98 117
-+93 98 117 128 131 141 75 88 134 101 108 130 90 96 116 90 96 116
-+101 108 130 46 61 115 58 73 123 104 109 128 100 102 106 98 103 119
-+107 114 137 61 75 125 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 43 59 113 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 31 48 105 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 28 45 103 69 83 131 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 46 54 80 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 104 109 128 0 0 0
-+0 0 0 51 51 51 82 95 139 75 75 75 0 0 0 7 8 9
-+89 90 90 0 0 0 3 4 6 117 122 139 117 122 139 0 0 0
-+0 0 0 30 30 30 110 117 140 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 53 55 60 137 140 149 1 1 1 0 0 0 104 109 128
-+73 86 133 107 114 137 55 60 74 2 3 3 0 0 0 0 0 0
-+0 0 0 0 0 0 30 30 30 104 109 128 69 83 131 66 80 129
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 66 80 128
-+72 85 132 117 122 139 43 45 49 0 0 0 0 0 0 0 0 0
-+0 0 0 1 2 3 53 55 60 115 121 140 65 79 128 63 77 126
-+115 121 140 43 45 49 0 0 0 3 4 6 15 16 21 2 3 3
-+0 0 0 15 18 27 104 109 128 29 45 103 29 45 103 107 114 137
-+30 30 30 0 0 0 7 8 9 15 16 21 1 1 1 0 0 0
-+43 45 49 115 121 140 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 115 121 140 66 80 128 66 80 128 66 80 128
-+71 84 130 39 55 110 46 61 115 55 60 74 0 0 0 0 0 0
-+128 131 141 15 16 21 0 0 0 43 45 49 107 114 137 77 90 136
-+98 103 119 15 16 21 0 0 0 0 0 0 0 0 0 0 0 0
-+7 8 9 89 90 90 82 95 139 54 69 120 35 51 108 66 79 125
-+89 90 90 7 9 13 0 0 0 0 0 0 0 0 0 0 0 0
-+14 14 16 90 96 116 54 69 120 25 42 101 31 48 105 104 109 128
-+15 16 21 0 0 0 0 0 0 1 1 1 75 75 75 51 51 51
-+0 0 0 0 0 0 104 109 128 49 65 117 50 65 118 107 114 137
-+55 60 74 3 4 6 0 0 0 0 0 0 0 0 0 1 1 1
-+51 51 51 101 108 130 28 45 103 25 42 101 98 104 122 0 0 0
-+0 0 0 89 90 90 100 102 106 3 4 6 0 0 0 0 0 0
-+7 8 9 123 126 137 89 90 90 3 4 6 0 0 0 0 0 0
-+14 14 16 106 112 131 47 62 115 45 60 114 44 60 114 44 60 114
-+44 60 114 40 56 111 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 33 50 106 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 43 59 113 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 46 54 80 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 117 122 139 1 2 3
-+0 0 0 30 30 30 137 140 149 30 30 30 0 0 0 43 45 49
-+137 140 149 0 0 0 0 0 0 104 109 128 106 112 131 0 0 0
-+0 0 0 55 60 74 82 95 139 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 1 2 3 3 4 6 30 30 30 51 51 51 110 117 140
-+107 114 137 55 60 74 0 0 0 0 0 0 75 75 75 99 106 127
-+98 103 119 14 14 16 0 0 0 15 16 21 115 121 140 66 80 129
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 66 80 128
-+110 117 140 15 18 27 0 0 0 7 8 9 100 102 106 115 121 140
-+89 90 90 1 1 1 0 0 0 53 55 60 107 114 137 76 89 135
-+89 90 90 0 0 0 1 2 3 104 109 128 81 92 128 104 109 128
-+51 51 51 55 60 74 117 119 127 78 91 137 61 75 125 51 51 51
-+0 0 0 14 14 16 117 122 139 107 114 137 98 103 119 51 51 51
-+75 75 75 137 140 149 82 95 139 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 7 8 9 30 30 30 30 30 30 30 30 30 30 30 30
-+75 75 75 59 74 124 46 61 115 55 60 74 0 0 0 0 0 0
-+3 4 6 14 14 16 30 30 30 104 109 128 63 77 126 106 112 131
-+3 4 6 0 0 0 30 30 30 106 112 131 112 118 137 53 55 60
-+0 0 0 0 0 0 100 102 106 66 80 129 42 58 112 90 96 116
-+1 1 1 0 0 0 43 45 49 99 106 127 99 106 127 30 30 30
-+0 0 0 3 4 6 98 104 122 29 45 103 79 90 127 30 30 30
-+0 0 0 0 0 0 15 16 21 51 51 51 14 14 16 3 4 6
-+0 0 0 0 0 0 104 109 128 49 65 117 82 95 139 53 55 60
-+0 0 0 0 0 0 43 45 49 79 84 103 43 45 49 0 0 0
-+0 0 0 43 45 49 79 90 127 25 42 101 98 104 122 0 0 0
-+0 0 0 30 30 30 14 14 16 30 30 30 3 4 6 0 0 0
-+0 0 0 14 14 16 7 8 9 30 30 30 3 4 6 0 0 0
-+0 0 0 53 55 60 72 85 132 45 60 114 44 60 114 44 60 114
-+44 60 114 38 54 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 35 51 108 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 37 53 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 61 75 125 73 86 133
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 46 54 80 0 0 0 55 60 74
-+220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220
-+220 220 220 220 220 220 220 220 220 220 220 220 100 102 106 0 0 0
-+32 38 56 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 110 117 140 30 30 30
-+0 0 0 2 3 3 128 131 141 2 3 3 0 0 0 79 84 103
-+128 131 141 14 14 16 0 0 0 89 90 90 117 119 127 0 0 0
-+0 0 0 100 102 106 74 87 134 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 0 0 0 75 75 75 110 117 140 115 121 140 78 91 137
-+112 118 137 1 2 3 0 0 0 30 30 30 82 95 139 33 50 106
-+54 69 120 89 90 90 0 0 0 0 0 0 100 102 106 73 86 133
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 71 85 132
-+100 102 106 0 0 0 0 0 0 75 75 75 82 95 139 71 85 132
-+110 117 140 43 45 49 0 0 0 2 3 3 112 118 137 82 95 139
-+75 75 75 0 0 0 1 1 1 79 84 103 99 106 127 115 121 140
-+115 121 140 74 87 134 42 58 112 30 47 105 66 80 128 43 45 49
-+0 0 0 7 8 9 98 103 119 112 118 137 137 140 149 137 140 149
-+107 114 137 73 86 133 64 78 127 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+43 45 49 59 74 124 46 61 115 55 60 74 0 0 0 0 0 0
-+14 14 16 115 121 140 101 108 130 107 114 137 82 95 139 51 51 51
-+0 0 0 0 0 0 106 112 131 66 80 129 63 77 126 117 122 139
-+3 4 6 0 0 0 30 30 30 101 108 130 81 92 128 30 30 30
-+0 0 0 3 4 6 107 114 137 34 50 107 36 52 108 104 109 128
-+0 0 0 0 0 0 53 55 60 59 74 124 93 100 124 0 0 0
-+0 0 0 7 8 9 115 121 140 82 95 139 112 118 137 3 4 6
-+0 0 0 0 0 0 104 109 128 49 65 117 104 109 128 1 1 1
-+0 0 0 30 30 30 107 114 137 36 52 108 84 94 130 30 30 30
-+0 0 0 0 0 0 98 103 119 25 42 101 98 104 122 0 0 0
-+0 0 0 3 4 6 104 109 128 79 90 127 79 84 103 0 0 0
-+0 0 0 3 4 6 98 104 122 81 94 136 89 90 90 0 0 0
-+0 0 0 30 30 30 82 95 139 45 60 114 44 60 114 44 60 114
-+44 60 114 36 52 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 37 53 109 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 35 51 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 33 50 106 72 85 132
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 44 52 77 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+32 38 56 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 82 95 139 53 55 60
-+0 0 0 0 0 0 14 14 16 0 0 0 0 0 0 112 118 137
-+107 114 137 53 55 60 0 0 0 3 4 6 7 8 9 0 0 0
-+0 0 0 112 118 137 70 84 131 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 0 0 0 112 118 137 68 82 130 68 82 130 68 82 130
-+98 103 119 0 0 0 0 0 0 30 30 30 90 96 116 79 84 103
-+79 84 103 53 55 60 0 0 0 0 0 0 75 75 75 82 95 139
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 82 95 139
-+55 60 74 0 0 0 0 0 0 75 75 75 89 90 90 89 90 90
-+100 102 106 30 30 30 0 0 0 0 0 0 98 104 122 64 78 127
-+106 112 131 14 14 16 0 0 0 0 0 0 0 0 0 14 14 16
-+30 30 30 75 75 75 99 106 127 30 46 104 40 56 111 104 109 128
-+3 4 6 0 0 0 0 0 0 1 1 1 14 14 16 43 45 49
-+100 102 106 107 114 137 61 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 117 122 139 93 100 124 93 100 124 93 100 124
-+112 118 137 52 67 119 46 61 115 55 60 74 0 0 0 0 0 0
-+55 60 74 82 95 139 56 70 122 56 70 122 107 114 137 30 30 30
-+0 0 0 0 0 0 100 102 106 89 90 90 89 90 90 89 90 90
-+3 4 6 0 0 0 2 3 3 107 114 137 99 106 127 1 2 3
-+0 0 0 14 14 16 100 102 106 79 84 103 79 84 103 75 75 75
-+0 0 0 0 0 0 30 30 30 79 90 127 93 98 117 0 0 0
-+0 0 0 43 45 49 82 95 139 50 65 118 82 95 139 30 30 30
-+0 0 0 0 0 0 104 109 128 52 67 119 90 96 116 0 0 0
-+0 0 0 75 75 75 59 74 124 25 42 101 42 58 112 75 75 75
-+0 0 0 0 0 0 79 84 103 36 52 108 98 104 122 0 0 0
-+0 0 0 30 30 30 79 90 127 25 42 101 93 100 124 0 0 0
-+0 0 0 30 30 30 79 90 127 39 55 110 106 112 131 0 0 0
-+0 0 0 30 30 30 82 95 139 45 60 114 44 60 114 44 60 114
-+44 60 114 33 50 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 33 50 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 48 64 117
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 89 135 76 89 135 48 55 81 4 5 9 4 5 9
-+4 5 9 4 5 9 4 5 9 4 5 9 4 5 9 4 5 9
-+4 5 9 4 5 9 4 5 9 4 5 9 4 5 9 4 5 9
-+32 38 61 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 66 80 129 36 52 108 79 84 103
-+0 0 0 0 0 0 0 0 0 0 0 0 15 16 21 115 121 140
-+76 90 135 98 103 119 0 0 0 0 0 0 0 0 0 0 0 0
-+14 14 16 115 121 140 70 84 131 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 3 4 6 115 121 140 68 82 130 68 82 130 66 80 129
-+93 98 117 0 0 0 0 0 0 15 18 27 53 55 60 53 55 60
-+53 55 60 53 55 60 53 55 60 53 55 60 100 102 106 82 95 139
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 82 95 139
-+75 75 75 0 0 0 0 0 0 43 45 49 53 55 60 53 55 60
-+53 55 60 53 55 60 53 55 60 53 55 60 128 131 141 66 80 129
-+43 59 113 101 108 130 79 84 103 53 55 60 15 18 27 1 1 1
-+0 0 0 0 0 0 43 45 49 84 94 130 39 55 111 82 95 139
-+112 118 137 89 90 90 51 51 51 15 16 21 0 0 0 0 0 0
-+0 0 0 55 60 74 82 95 139 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 46 61 115 55 60 74 0 0 0 0 0 0
-+89 90 90 66 80 129 56 70 122 56 70 122 107 114 137 30 30 30
-+0 0 0 0 0 0 53 55 60 53 55 60 53 55 60 53 55 60
-+53 55 60 53 55 60 53 55 60 117 122 139 99 106 127 2 3 3
-+0 0 0 7 8 9 53 55 60 53 55 60 53 55 60 53 55 60
-+53 55 60 53 55 60 75 75 75 99 106 127 98 103 119 0 0 0
-+0 0 0 43 45 49 82 95 139 50 65 118 82 95 139 30 30 30
-+0 0 0 0 0 0 104 109 128 54 69 120 90 96 116 0 0 0
-+0 0 0 75 75 75 52 67 119 25 42 101 40 56 111 75 75 75
-+0 0 0 0 0 0 79 84 103 37 53 109 98 104 122 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 93 98 117 0 0 0
-+0 0 0 30 30 30 71 84 130 42 58 112 106 112 131 0 0 0
-+0 0 0 30 30 30 82 95 139 45 60 114 44 60 114 44 60 114
-+44 60 114 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 40 56 111 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 31 48 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+60 75 125 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 72 85 132 36 52 108 25 42 101 98 104 122
-+0 0 0 0 0 0 0 0 0 0 0 0 53 55 60 107 114 137
-+71 85 132 117 122 139 2 3 3 0 0 0 0 0 0 0 0 0
-+43 45 49 110 117 140 70 84 131 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 14 14 16 110 117 140 68 82 130 68 82 130 52 67 119
-+99 106 127 1 1 1 0 0 0 43 45 49 110 117 140 56 70 122
-+58 73 123 107 114 137 110 117 140 110 117 140 110 117 140 66 80 128
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 73 86 133
-+100 102 106 0 0 0 0 0 0 100 102 106 110 117 140 82 95 139
-+110 117 140 137 140 149 115 121 140 110 117 140 82 95 139 64 78 127
-+60 75 125 71 84 130 84 94 130 107 114 137 81 92 128 101 108 130
-+43 45 49 0 0 0 0 0 0 98 104 122 63 77 126 82 95 139
-+107 114 137 115 121 140 115 121 140 110 117 140 112 118 137 15 16 21
-+0 0 0 14 14 16 107 114 137 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 46 61 115 55 60 74 0 0 0 0 0 0
-+100 102 106 59 74 124 56 70 122 56 70 122 82 95 139 51 51 51
-+0 0 0 0 0 0 128 131 141 82 95 139 82 95 139 110 117 140
-+115 121 140 110 117 140 82 95 139 55 70 121 84 94 130 15 18 27
-+0 0 0 7 8 9 128 131 141 56 70 122 56 70 122 82 95 139
-+82 95 139 81 94 136 68 82 130 35 51 108 99 106 127 1 2 3
-+0 0 0 14 14 16 110 117 140 63 77 126 110 117 140 7 9 13
-+0 0 0 0 0 0 104 109 128 49 65 117 104 109 128 0 0 0
-+0 0 0 43 45 49 84 94 130 25 42 101 73 86 133 43 45 49
-+0 0 0 0 0 0 93 98 117 26 43 102 98 104 122 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 93 98 117 0 0 0
-+0 0 0 30 30 30 71 84 130 45 60 114 106 112 131 0 0 0
-+0 0 0 30 30 30 82 95 139 45 60 114 44 60 114 44 60 114
-+44 60 114 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 45 103 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 30 46 104
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 46 104 68 82 130 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 48 64 117 25 42 101 25 42 101 93 100 124
-+14 14 16 0 0 0 0 0 0 0 0 0 98 103 119 75 88 134
-+71 85 132 110 117 140 30 30 30 0 0 0 0 0 0 0 0 0
-+89 90 90 82 95 139 70 84 131 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 14 14 16 110 117 140 68 82 130 68 82 130 33 50 106
-+74 85 123 43 45 49 0 0 0 1 2 3 90 96 116 93 100 124
-+104 109 128 55 60 74 53 55 60 75 75 75 155 156 157 75 88 134
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 65 79 128
-+115 121 140 14 14 16 0 0 0 14 14 16 112 118 137 110 117 140
-+104 109 128 53 55 60 55 60 74 100 102 106 155 156 157 107 114 137
-+75 75 75 30 30 30 30 30 30 98 103 119 79 90 127 84 94 130
-+53 55 60 0 0 0 7 9 13 93 100 124 128 131 141 53 55 60
-+30 30 30 30 30 30 112 118 137 107 114 137 115 121 140 30 30 30
-+0 0 0 30 30 30 107 114 137 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 46 61 115 55 60 74 0 0 0 0 0 0
-+100 102 106 56 70 122 56 70 122 56 70 122 61 75 125 104 109 128
-+1 2 3 0 0 0 43 45 49 115 121 140 107 114 137 100 102 106
-+51 51 51 55 60 74 128 131 141 82 95 139 45 60 114 79 84 103
-+0 0 0 0 0 0 55 60 74 101 108 130 99 106 127 89 90 90
-+51 51 51 61 66 84 137 140 149 60 75 125 66 80 128 43 45 49
-+0 0 0 0 0 0 43 45 49 89 90 90 30 30 30 30 30 30
-+0 0 0 0 0 0 104 109 128 49 65 117 101 108 130 43 45 49
-+0 0 0 1 1 1 55 60 74 93 98 117 75 75 75 1 1 1
-+0 0 0 30 30 30 81 92 128 25 42 101 98 104 122 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 93 98 117 0 0 0
-+0 0 0 30 30 30 72 85 132 46 61 115 106 112 131 0 0 0
-+0 0 0 30 30 30 82 95 139 45 60 114 44 60 114 44 60 114
-+44 60 114 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 46 104 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+56 70 122 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 38 54 109 72 85 132 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 59 74 124 25 42 101 25 42 101 25 42 101 68 82 130
-+43 45 49 0 0 0 0 0 0 3 4 6 117 122 139 71 85 132
-+71 85 132 82 95 139 75 75 75 0 0 0 0 0 0 0 0 0
-+106 112 131 71 85 132 70 84 131 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 14 14 16 110 117 140 68 82 130 56 70 122 25 42 101
-+28 45 103 101 108 130 30 30 30 0 0 0 0 0 0 7 9 13
-+1 2 3 0 0 0 3 4 6 100 102 106 82 95 139 66 80 128
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 65 79 128
-+78 91 137 106 112 131 14 14 16 0 0 0 1 1 1 7 9 13
-+0 0 0 0 0 0 15 16 21 112 118 137 74 87 134 42 58 112
-+98 104 122 14 14 16 0 0 0 2 3 3 30 30 30 15 18 27
-+0 0 0 7 8 9 90 96 116 55 70 121 81 94 136 100 102 106
-+3 4 6 0 0 0 7 8 9 30 30 30 14 14 16 0 0 0
-+14 14 16 106 112 131 68 82 130 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 46 61 115 55 60 74 0 0 0 0 0 0
-+100 102 106 56 70 122 56 70 122 56 70 122 56 70 122 82 95 139
-+89 90 90 3 4 6 0 0 0 3 4 6 7 8 9 0 0 0
-+0 0 0 43 45 49 110 117 140 29 45 103 25 42 101 84 94 130
-+55 60 74 1 1 1 0 0 0 7 8 9 3 4 6 0 0 0
-+1 1 1 55 60 74 84 94 130 25 42 101 29 45 103 104 109 128
-+14 14 16 0 0 0 0 0 0 0 0 0 75 75 75 100 102 106
-+0 0 0 0 0 0 104 109 128 49 65 117 52 67 119 110 117 140
-+43 45 49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+30 30 30 101 108 130 30 46 104 25 42 101 98 104 122 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 93 98 117 0 0 0
-+0 0 0 30 30 30 75 88 134 46 61 115 106 112 131 0 0 0
-+0 0 0 30 30 30 82 95 139 44 60 114 44 60 114 44 60 114
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 32 49 106 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+72 85 132 44 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 49 65 117 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+66 80 129 29 45 103 25 42 101 25 42 101 25 42 101 45 60 114
-+123 126 137 90 96 116 98 103 119 117 119 127 110 117 140 71 85 132
-+71 85 132 72 85 132 137 140 149 98 103 119 98 103 119 98 103 119
-+137 140 149 70 84 131 70 84 131 70 84 131 115 121 140 117 119 127
-+98 103 119 98 103 119 137 140 149 69 83 131 137 140 149 98 103 119
-+98 103 119 104 109 128 128 131 141 68 82 130 37 53 109 25 42 101
-+25 42 101 30 47 105 84 94 130 93 98 117 72 78 100 61 66 84
-+75 75 75 100 102 106 115 121 140 82 95 139 66 80 128 66 80 128
-+128 131 141 98 103 119 98 103 119 104 109 128 128 131 141 65 79 128
-+65 79 128 78 91 137 115 121 140 98 103 119 89 90 90 75 75 75
-+89 90 90 98 103 119 115 121 140 72 85 132 56 70 122 25 42 101
-+42 58 112 99 106 127 90 96 116 72 78 100 61 66 84 75 75 75
-+90 96 116 99 106 127 49 65 117 44 60 114 61 75 125 82 95 139
-+115 121 140 100 102 106 89 90 90 75 75 75 75 75 75 98 103 119
-+110 117 140 73 86 133 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 82 95 139 128 131 141 90 96 116
-+90 96 116 117 119 127 73 86 133 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 46 61 115 128 131 141 90 96 116 93 98 117
-+148 148 149 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+81 94 136 109 115 137 100 102 106 75 75 75 75 75 75 89 90 90
-+106 112 131 101 108 130 50 65 118 25 42 101 25 42 101 26 43 102
-+66 79 125 98 104 122 79 84 103 75 75 75 75 75 75 79 84 103
-+99 106 127 66 79 125 25 42 101 25 42 101 25 42 101 43 59 113
-+106 112 131 89 90 90 75 75 75 98 103 119 110 117 140 137 140 149
-+100 102 106 100 102 106 137 140 149 49 65 117 49 65 117 52 67 119
-+101 108 130 98 104 122 72 78 100 61 66 84 75 75 75 98 103 119
-+84 94 130 30 46 104 25 42 101 25 42 101 128 131 141 90 96 116
-+90 96 116 117 119 127 73 86 133 25 42 101 115 121 140 90 96 116
-+90 96 116 117 119 127 81 94 136 46 61 115 137 140 149 93 98 117
-+93 98 117 117 119 127 101 108 130 44 60 114 44 60 114 44 60 114
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 34 50 107 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 38 54 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+72 85 132 70 84 131 34 50 107 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 54 69 120 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 73 86 133 69 83 131
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 58 73 123 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 60 75 125 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 39 55 110 48 64 117
-+50 65 118 69 83 131 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 68 82 130 78 91 137 82 95 139
-+75 88 134 66 80 129 64 78 127 63 77 126 43 59 113 25 42 101
-+25 42 101 25 42 101 29 45 103 39 55 110 48 64 117 44 60 114
-+31 48 105 25 42 101 25 42 101 56 70 122 61 75 125 61 75 125
-+61 75 125 65 79 128 74 87 134 81 94 136 75 88 134 64 78 127
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 50 65 118
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 63 77 126 71 85 132 71 85 132 63 77 126
-+55 70 121 54 69 120 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 37 53 109 46 61 115 44 60 114 34 50 107
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+42 58 112 61 75 125 68 82 130 55 70 121 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 36 52 108 39 55 111 48 64 117 39 55 111 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 110 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+35 51 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 36 52 108 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 36 52 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 72 85 132 65 79 128 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 58 73 123 73 86 133
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 71 85 132 35 51 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+46 61 115 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 38 54 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+54 69 120 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 31 48 105 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 55 70 121 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 35 51 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+48 64 117 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 42 58 112 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 110 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 34 50 107 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 72 85 132 72 85 132 56 70 122 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 61 75 125
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 72 85 132 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+71 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 59 74 124 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 55 70 121 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 44 60 114 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 45 60 114 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 35 51 108 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 29 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 29 45 103
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 27 44 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 40 56 111 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 31 48 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 72 85 132 72 85 132 47 62 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+64 78 127 73 86 133 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 72 85 132 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 66 80 129
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 37 53 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 49 65 117
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 40 56 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 56 70 122 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 36 52 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 43 59 113 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 50 65 118 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+46 61 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 29 45 103 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 43 59 113
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 30 46 104 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 42 58 112
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 61 75 125 73 86 133 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 71 85 132 39 55 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 45 103 64 78 127 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 56 70 122 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 66 80 128
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 61 75 125 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 32 49 106 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 52 67 119 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 44 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 40 56 111
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+40 56 111 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 32 49 106 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 40 56 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 31 48 105 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 71 85 132 71 85 132 72 85 132 71 85 132
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 58 73 123 73 86 133 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+69 83 131 36 52 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 27 44 102 63 77 126 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+66 80 129 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 49 65 117 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 48 64 117 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 45 60 114 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 49 65 117 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 46 104 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 37 53 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 47 62 115
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+35 51 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 36 52 108 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 37 53 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 33 50 106 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 110 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+70 84 131 35 51 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 54 69 120 73 86 133 73 86 133
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 73 86 133 66 80 129
-+33 50 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 58 73 123 72 85 132 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+50 65 118 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 66 80 128 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 63 77 126 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 58 73 123 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 39 55 110 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 110 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+30 46 104 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 40 56 111 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 34 50 107
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 37 53 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+72 85 132 68 82 130 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 48 64 117 72 85 132
-+73 86 133 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 73 86 133 63 77 126 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 54 69 120 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 65 79 128
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 50 65 118 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 56 70 122 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+36 52 108 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 48 64 117 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+50 65 118 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 32 49 106 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 44 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 110 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+72 85 132 72 85 132 68 82 130 36 52 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 37 53 109
-+66 80 129 73 86 133 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 54 69 120 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+56 70 122 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 42 58 112
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 66 80 128 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+50 65 118 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 49 65 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 55 70 121 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 42 58 112
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+29 45 103 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 27 44 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 31 48 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 72 85 132 72 85 132 70 84 131 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+29 45 103 59 74 124 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+73 86 133 70 84 131 40 56 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 60 75 125
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 56 70 122 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 56 70 122 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+59 74 124 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 29 45 103
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 35 51 108 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+33 50 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 45 60 114 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 37 53 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+33 50 106 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 42 58 112 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 46 104 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 29 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 72 85 132 72 85 132 71 85 132 43 59 113
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 48 64 117 71 85 132 73 86 133 73 86 133
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+63 77 126 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 46 104 63 77 126 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 66 80 129 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 38 54 109 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 43 59 113
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 45 60 114 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 31 48 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+38 54 109 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 38 54 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 32 49 106 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 70 84 131 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 72 85 132 72 85 132
-+48 64 117 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 31 48 105 59 74 124 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 69 83 131 44 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 66 80 128 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 43 59 113 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 61 75 125 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 61 75 125
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 56 70 122
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+48 64 117 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 54 69 120 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 46 61 115
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 33 50 106 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+43 59 113 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 33 50 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 35 51 108 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 70 84 131 70 84 131 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+72 85 132 58 73 123 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 40 56 111
-+66 80 129 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 54 69 120 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 40 56 111 69 83 131 72 85 132 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 56 70 122 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+47 62 115 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 47 62 115
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 37 53 109 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 35 51 108 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 42 58 112 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 44 60 114 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 39 55 110 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 35 51 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 70 84 131 70 84 131 70 84 131 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+72 85 132 72 85 132 66 80 128 35 51 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+27 44 102 50 65 118 70 84 131 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 61 75 125 36 52 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+54 69 120 72 85 132 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 64 78 127 29 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 32 49 106
-+66 80 128 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 61 75 125 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 54 69 120 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 56 70 122
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 46 61 115 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 30 46 104
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 48 64 117 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 38 54 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 31 48 105
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 43 59 113 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 40 56 111 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 32 49 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 72 85 132 72 85 132 71 85 132 46 61 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 48 64 117 69 83 131 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 59 74 124
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 32 49 106 63 77 126
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+66 80 129 37 53 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 58 73 123
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 46 61 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 34 50 107 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 44 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+27 44 102 55 70 121 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 48 64 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 46 104 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 37 53 109
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 39 55 110 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 46 104 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 30 46 104 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 58 73 123
-+30 47 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 48 64 117
-+68 82 130 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 58 73 123 35 51 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 44 60 114 69 83 131 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+46 61 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 43 59 113 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 61 75 125 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 50 65 118 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 31 48 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+35 51 108 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 39 55 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 37 53 109 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 47 62 115 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 42 58 112
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+33 50 106 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 72 85 132 72 85 132
-+70 84 131 48 64 117 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 39 55 111 58 73 123 72 85 132 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+66 80 128 48 64 117 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 63 77 126 72 85 132 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 55 70 121
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 32 49 106 66 80 128 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 45 60 114 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 31 48 105 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 51 66 119 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+46 61 115 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 54 69 120 30 46 104 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 44 60 114 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 30 47 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+36 52 108 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 38 54 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+72 85 132 72 85 132 65 79 128 38 54 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 29 45 103 44 60 114 63 77 126
-+72 85 132 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 68 82 130 54 69 120 35 51 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+52 67 119 72 85 132 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 63 77 126 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 59 74 124 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 60 75 125 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 48 64 117 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 38 54 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+55 70 121 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 48 64 117 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 44 60 114 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 34 50 107 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 72 85 132 72 85 132 72 85 132 56 70 122 31 48 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 39 55 111 52 67 119 65 79 128 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 69 83 131
-+58 73 123 46 61 115 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 44 60 114 68 82 130
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 65 79 128 31 48 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 48 64 117 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 31 48 105 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 56 70 122 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 111
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 39 55 110 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 33 50 106 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 36 52 108 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 40 56 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 69 83 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 71 85 132
-+54 69 120 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 39 55 111
-+47 62 115 54 69 120 63 77 126 69 83 131 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 72 85 132
-+65 79 128 58 73 123 50 65 118 43 59 113 34 50 107 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 42 58 112 66 80 128 72 85 132 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 66 80 129 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 38 54 109 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 56 70 122 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 49 65 117 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 43 59 113 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 51 66 119
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 29 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 42 58 112 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 44 60 114 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 42 58 112 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 36 52 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 31 48 105
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 69 83 131 69 83 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+72 85 132 71 85 132 55 70 121 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 33 50 106
-+37 53 109 40 56 111 43 59 113 44 60 114 44 60 114 44 60 114
-+44 60 114 42 58 112 39 55 110 35 51 108 31 48 105 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+45 60 114 66 80 128 72 85 132 72 85 132 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 66 80 129 39 55 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+31 48 105 64 78 127 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+63 77 126 36 52 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+31 48 105 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 29 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 33 50 106 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 48 64 117 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 72 85 132 72 85 132 72 85 132 60 75 125 42 58 112
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 33 50 106 51 66 119 69 83 131
-+72 85 132 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+59 74 124 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+51 66 119 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+50 65 118 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 46 61 115 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 45 60 114 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+34 50 107 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 31 48 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 33 50 106 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 43 59 113 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 110
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+36 52 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 72 85 132
-+68 82 130 54 69 120 37 53 109 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 47 105 46 61 115 61 75 125 72 85 132 72 85 132 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+44 60 114 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 52 67 119
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 63 77 126
-+30 47 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 33 50 106
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 31 48 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 45 103 55 70 121 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+43 59 113 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 47 62 115 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 111 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 66 80 129 54 69 120 40 56 111
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 34 50 107 48 64 117 61 75 125
-+72 85 132 72 85 132 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 47 62 115
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 45 60 114 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 43 59 113
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 54 69 120
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 49 65 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 110 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 45 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 39 55 111 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 33 50 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 72 85 132 72 85 132 72 85 132 72 85 132
-+71 85 132 61 75 125 51 66 119 39 55 111 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 35 51 108
-+46 61 115 56 70 122 66 80 129 72 85 132 72 85 132 72 85 132
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 46 61 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 111 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 56 70 122 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 34 50 107 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 52 67 119 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 33 50 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 47 105 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 34 50 107 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+68 82 130 68 82 130 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 72 85 132 72 85 132 68 82 130
-+60 75 125 54 69 120 47 62 115 40 56 111 35 51 108 31 48 105
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 30 46 104 33 50 106 38 54 109
-+44 60 114 49 65 117 56 70 122 65 79 128 71 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 43 59 113 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 66 80 128 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 32 49 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 58 73 123 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+51 66 119 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+50 65 118 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 43 59 113
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+47 62 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 36 52 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+68 82 130 68 82 130 68 82 130 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 72 85 132 72 85 132 72 85 132
-+72 85 132 72 85 132 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 71 85 132 72 85 132 72 85 132 72 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 72 85 132 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 66 80 129 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 32 49 106 64 78 127 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 46 61 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 44 60 114 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 58 73 123
-+34 50 107 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 49 65 117 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+39 55 111 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 42 58 112 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 32 49 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+68 82 130 68 82 130 68 82 130 68 82 130 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 72 85 132 72 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 72 85 132 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+66 80 128 37 53 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+31 48 105 63 77 126 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 56 70 122 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 46 104 60 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 50 65 118
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 33 50 106 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 36 52 108 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 31 48 105 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 64 78 127
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+63 77 126 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 63 77 126 32 49 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 51 66 119 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 33 50 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 47 62 115 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 45 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 46 61 115 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 47 62 115
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 44 60 114
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 36 52 108 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 58 73 123 30 46 104
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 61 75 125
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+63 77 126 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 39 55 110 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 49 65 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 47 105 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 33 50 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 46 104 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 39 55 110
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 42 58 112 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 39 55 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 111 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 36 52 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+64 78 127 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 50 65 118 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 31 48 105 61 75 125 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+52 67 119 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 58 73 123 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 32 49 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+44 60 114 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 49 65 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 40 56 111 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 34 50 107
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 31 48 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+30 46 104 58 73 123 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 66 80 129 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 63 77 126 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 59 74 124
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+48 64 117 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 48 64 117 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 46 104
-+55 70 121 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 54 69 120 37 53 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 49 65 117 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 46 61 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+34 50 107 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 44 60 114 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 33 50 106 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 26 43 102 47 62 115 66 80 129 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+60 75 125 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 64 78 127 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 63 77 126 34 50 107
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 36 52 108
-+61 75 125 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 30 46 104 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 45 60 114
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 51 66 119 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 35 51 108 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 37 53 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+42 58 112 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 40 56 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 38 54 109 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 38 54 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 35 51 108 63 77 126 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 48 64 117
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 110 65 79 128 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 42 58 112 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 58 73 123
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 43 59 113 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 39 55 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 45 60 114 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 33 50 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 40 56 111 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 50 65 118
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 63 77 126 36 52 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 43 59 113
-+66 80 128 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 50 65 118 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 51 66 119 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 56 70 122 27 44 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 46 61 115 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 52 67 119 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 46 104 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 44 60 114 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 31 48 105 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 30 46 104 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+35 51 108 63 77 126 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 66 80 129 48 64 117 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 49 65 117 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 56 70 122 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 40 56 111 61 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 38 54 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 40 56 111 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 32 49 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 42 58 112
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 39 55 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 36 52 108 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 47 62 115 66 80 129 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+58 73 123 33 50 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 56 70 122 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 58 73 123 30 46 104 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 31 48 105 60 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+51 66 119 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 47 62 115 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 30 46 104 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+27 44 102 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 47 62 115 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 33 50 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 39 55 111 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 36 52 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 54 69 120 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 63 77 126 40 56 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 35 51 108 63 77 126 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+61 75 125 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 55 70 121 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 58 73 123
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 43 59 113 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+38 54 109 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 35 51 108 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 44 60 114 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 46 104 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 31 48 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+58 73 123 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 66 80 128 46 61 115 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+44 60 114 66 80 128 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 63 77 126
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 48 64 117 61 75 125 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 44 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 50 65 118 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+48 64 117 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 29 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 43 59 113 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 39 55 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+35 51 108 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 27 44 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 37 53 109 59 74 124 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+66 80 129 47 62 115 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 56 70 122
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 63 77 126 40 56 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 61 75 125 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 54 69 120 27 44 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 37 53 109 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 37 53 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 46 104
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 38 54 109 58 73 123 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 66 80 128 48 64 117
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 38 54 109 63 77 126 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 44 60 114 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 33 50 106
-+60 75 125 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 34 50 107 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+27 44 102 54 69 120 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 47 62 115
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 33 50 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 110 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 44 60 114 27 44 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 46 104
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 32 49 106
-+63 77 126 38 54 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 41 89 18 31 74 15 25 57 13 22 52 18 27 58
-+30 37 63 38 45 69 32 38 61 32 38 61 32 38 61 32 38 61
-+32 38 61 32 38 61 32 38 61 66 79 125 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 63 77 126 44 60 114 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 29 45 103 52 67 119 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 63 77 126 46 61 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 58 73 123
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 47 62 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+42 58 112 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 42 58 112
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 32 49 106 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+46 61 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 27 44 102 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 35 51 108
-+66 80 129 66 80 129 52 67 119 29 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 23 37 83 15 25 57 9 15 36
-+4 6 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 0 0 0 0 0 0 44 53 81 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 66 80 129
-+55 70 121 38 54 109 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 64 78 127 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 63 77 126 47 62 115 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 54 69 120 61 75 125
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 56 70 122 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 46 104
-+55 70 121 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 44 60 114 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+35 51 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 34 50 107 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 111
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+38 54 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+29 45 103 35 51 108
-+66 80 129 66 80 129 66 80 129 64 78 127 42 58 112 25 42 101
-+25 42 101 25 42 101 9 15 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 44 53 81 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 61 75 125 46 61 115 30 46 104
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 23 37 83 13 22 52 18 27 58 27 35 61
-+32 38 61 32 38 61 32 38 61 32 38 61 29 34 52 25 31 50
-+25 31 50 25 31 50 25 31 50 23 28 45 40 49 78 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+63 77 126 48 64 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 50 65 118 61 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 35 51 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 47 62 115
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 54 69 120 42 58 112 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 47 62 115
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 42 58 112 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+31 48 105 35 51 108
-+66 80 128 66 80 129 66 80 129 66 80 129 66 80 129 58 73 123
-+36 52 108 25 42 101 9 13 26 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 44 53 81 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+63 77 126 48 64 117 32 49 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 19 29 65 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 38 61
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 63 77 126
-+48 64 117 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 44 60 114 61 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 45 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 35 51 108 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 52 67 119 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 43 59 113 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 37 53 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 46 104 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+35 51 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 35 51 108 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+34 50 107 35 51 108
-+66 80 128 66 80 128 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 54 69 120 9 13 26 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 31 69 39 55 110 50 65 118
-+63 77 126 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 66 80 129 56 70 122 44 60 114 31 48 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 42 58 112 41 51 85 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 45 69 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 63 77 126 46 61 115
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 39 55 111 61 75 125 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+54 69 120 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 54 69 120 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 38 54 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 47 105 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 38 54 109 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 44 60 114
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 39 55 111 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+35 51 108 35 51 108
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 129 66 80 129
-+66 80 129 66 80 129 15 18 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 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 31 48 105 42 58 112 52 67 119 61 75 125 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 66 80 129 56 70 122
-+47 62 115 36 52 108 27 44 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 40 56 111
-+61 75 125 66 80 129 44 53 81 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 26 38 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 44 60 114 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+36 52 108 61 75 125 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 58 73 123
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 44 60 114 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 49 65 117 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 44 60 114 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 39 55 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 39 55 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 32 49 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+35 51 108 35 51 108
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 129 66 80 129 12 15 26 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+36 52 108 44 60 114 51 66 119 59 74 124 65 79 128 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 66 80 129 63 77 126
-+55 70 121 48 64 117 39 55 111 32 49 106 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 40 56 111 60 75 125 66 80 129
-+66 80 129 66 80 129 44 53 81 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 18 27 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 63 77 126 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+59 74 124 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 40 56 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 33 50 106 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 31 48 105 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+33 50 106 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 31 48 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 36 52 108 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 27 44 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+35 51 108 35 51 108
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 9 12 21 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+33 50 106 39 55 110 43 59 113 47 62 115 49 65 117 54 69 120
-+56 70 122 56 70 122 58 73 123 59 74 124 59 74 124 59 74 124
-+59 74 124 56 70 122 56 70 122 55 70 121 51 66 119 48 64 117
-+44 60 114 42 58 112 36 52 108 30 47 105 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+27 44 102 43 59 113 61 75 125 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 44 53 81 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 12 21 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 63 77 126 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 33 50 106 59 74 124
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 49 65 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 51 66 119 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 46 61 115 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 45 60 114 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+42 58 112 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 43 59 113 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 27 44 102 40 56 111 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 37 53 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 35 51 108
-+35 51 108 35 51 108
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 7 9 15 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 48 64 117
-+64 78 127 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 38 47 77 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+7 9 15 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+60 75 125 34 50 107 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 32 49 106 59 74 124 61 75 125
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 54 69 120 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 42 58 112 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+32 49 106 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 30 47 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 31 48 105
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 36 52 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 31 48 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 35 51 108
-+35 51 108 35 51 108
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 7 9 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 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 39 55 111 56 70 122 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 40 48 74 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+7 9 13 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 63 77 126 58 73 123
-+30 47 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 47 105 58 73 123 61 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 31 48 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+32 49 106 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+46 61 115 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 40 56 111
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 44 60 114 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 110 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 34 50 107 35 51 108
-+35 51 108 35 51 108
-+65 79 128 65 79 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 4 5 9 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+49 65 117 63 77 126 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 40 48 74 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 4 6 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 54 69 120 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 31 48 105 58 73 123 61 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+52 67 119 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 51 66 119
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 33 50 106
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 39 55 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 29 45 103 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 35 51 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 35 51 108 35 51 108
-+35 51 108 35 51 108
-+65 79 128 65 79 128 65 79 128 65 79 128 66 80 128 66 80 128
-+66 80 128 66 80 128 2 3 5 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 34 50 107 48 64 117 63 77 126 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 40 48 74 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 2 3 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 63 77 126 45 60 114 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+32 49 106 58 73 123 61 75 125 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 45 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 45 60 114
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 35 51 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 47 62 115
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 31 48 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 35 51 108 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 30 46 104 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 35 51 108 35 51 108
-+35 51 108 35 51 108
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+66 80 128 66 80 128 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 28 40 79 34 50 107 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 40 56 111
-+52 67 119 64 78 127 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 40 48 74 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 61 75 125 37 53 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 9 15 36
-+2 3 7 10 17 39 25 42 101 25 42 101 25 42 101 34 50 107
-+59 74 124 61 75 125 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 58 73 123
-+51 66 119 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 36 52 108 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 54 69 120 45 60 114 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 37 53 109 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 45 103 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 40 56 111 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 110 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 34 50 107 35 51 108 35 51 108
-+35 51 108 34 50 107
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 62 75 121 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 50 58 85 66 80 129 64 78 127
-+55 70 121 45 60 114 36 52 108 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+31 48 105 40 56 111 50 65 118 60 75 125 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 38 47 77 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 75 121 64 78 127 64 78 127 63 77 126 63 77 126
-+56 70 122 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 4 6 13
-+0 0 0 0 0 0 25 42 101 25 42 101 35 51 108 59 74 124
-+61 75 125 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 54 69 120
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 46 104 54 69 120 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 52 67 119 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 49 65 117 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+31 48 105 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 28 45 103 35 51 108 35 51 108 35 51 108
-+35 51 108 34 50 107
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 62 75 121 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 128 59 74 124 52 67 119
-+45 60 114 37 53 109 30 46 104 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 34 50 107 42 58 112 48 64 117 56 70 122 64 78 127
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 38 45 69 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 75 121 64 78 127 63 77 126 63 77 126 47 62 115
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 11 15 31
-+0 0 0 0 0 0 25 42 101 38 54 109 60 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 56 70 122 30 46 104
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 48 64 117 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 37 53 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 40 56 111 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 42 58 112 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+38 54 109 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 31 48 105 35 51 108 35 51 108 35 51 108
-+35 51 108 34 50 107
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 59 72 115 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 128 61 75 125 56 70 122
-+50 65 118 46 61 115 42 58 112 39 55 111 36 52 108 33 50 106
-+30 47 105 30 47 105 29 45 103 28 45 103 28 45 103 28 45 103
-+28 45 103 30 46 104 30 47 105 31 48 105 35 51 108 38 54 109
-+42 58 112 44 60 114 48 64 117 54 69 120 58 73 123 64 78 127
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 32 41 72 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 59 72 115 63 77 126 59 74 124 36 52 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 13 22 52
-+4 6 13 4 6 13 4 6 13 4 6 13 4 6 13 2 3 7
-+0 0 0 0 0 0 42 56 104 61 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 34 50 107 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 42 58 112 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 48 64 117 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 46 104 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 40 56 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 35 51 108 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 35 51 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 29 45 103
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 37 53 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 34 50 107 35 51 108 35 51 108 35 51 108
-+34 50 107 32 49 106
-+64 78 127 64 78 127 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 60 71 109 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 32 41 72 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 60 71 109 51 66 119 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 13 20 42
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 53 67 117 61 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 37 53 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 35 51 108 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 30 46 104 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 44 60 114 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 44 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+43 59 113 27 44 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 28 45 103 35 51 108 35 51 108 35 51 108 35 51 108
-+34 50 107 30 46 104
-+64 78 127 64 78 127 64 78 127 64 78 127 65 79 128 65 79 128
-+65 79 128 53 64 102 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 32 41 72 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 13 22 52
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 49 62 109 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 40 56 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 47 105 54 69 120 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 33 50 106 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 35 51 108 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 39 55 111
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 36 52 108
-+19 29 65 13 22 52 10 17 39 11 15 31 9 13 26 13 20 42
-+18 31 74 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 31 48 105 35 51 108 35 51 108 35 51 108 35 51 108
-+34 50 107 26 43 102
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+65 79 128 49 61 100 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 49 60 97 62 75 121 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 62 75 121
-+60 71 109 53 64 102 59 72 115 66 79 125 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 32 41 72 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 23 37 83 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 13 22 52
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 53 64 102 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 44 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+51 66 119 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+47 62 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 48 64 117 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 47 62 115 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 44 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 44 60 114
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 31 48 105 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 31 48 105
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 2 3 7 23 37 83 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 35 51 108 35 51 108 35 51 108 35 51 108 34 50 107
-+32 49 106 25 42 101
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 49 60 97 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 40 49 78 32 38 61 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 29 34 52 12 15 26 7 9 13 1 2 3 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 5 7 13 9 12 21
-+49 60 97 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 32 41 72 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 23 37 83 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 13 22 52
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 49 61 100 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 58 73 123
-+46 61 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+13 20 42 9 13 26 9 13 26 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 46 61 115
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 52 67 119
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 35 51 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+35 51 108 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 43 59 113 21 28 52 19 24 44 13 20 42
-+10 17 39 10 17 39 10 17 39 13 20 42 13 20 42 13 20 42
-+13 20 42 13 20 42 13 22 52 19 29 65 23 37 83 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 31 48 105
-+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 12 21 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 46 104 35 51 108 35 51 108 35 51 108 35 51 108 34 50 107
-+29 45 103 25 42 101
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 41 54 95 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 40 48 74 25 31 50 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 15 18 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 0 0 0 0 0 0
-+23 28 45 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 32 38 61 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 23 37 83 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 15 25 57
-+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 35 61 36 45 78 36 45 78 36 45 78
-+36 45 78 36 45 78 36 45 78 36 45 78 41 51 85 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 47 62 115
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+9 13 26 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 111 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 35 51 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 45 60 114 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+44 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 41 54 95 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 2 3
-+9 13 26 13 22 52 18 31 74 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 46 104 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 29 45 103
-+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 6 11 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+33 50 106 35 51 108 35 51 108 35 51 108 35 51 108 34 50 107
-+26 43 102 25 42 101
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 41 51 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 65 79 128 65 79 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 38 45 69 23 28 45 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 15 18 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 0 0 0 0 0 0
-+23 28 45 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 32 38 61 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 18 31 74 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 15 25 57
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 48 64 117 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+9 13 26 0 0 0 0 0 0 9 15 36 25 42 101 25 42 101
-+25 42 101 19 29 65 9 13 26 11 17 38 18 23 42 18 23 42
-+18 23 42 19 24 44 21 28 52 21 28 52 23 28 45 23 28 45
-+26 32 53 26 32 53 26 32 53 41 51 85 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 54 69 120 43 59 113 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 47 62 115
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 31 48 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 36 52 108
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 41 54 95 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 7 14 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 27 41 89
-+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 6 11 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+35 51 108 35 51 108 35 51 108 35 51 108 34 50 107 30 47 105
-+25 42 101 25 42 101
-+63 77 126 63 77 126 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 41 51 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 66 80 128
-+66 80 128 32 38 61 16 21 36 66 80 128 66 80 128 59 72 115
-+41 51 85 41 51 85 50 58 85 49 60 97 49 60 97 49 60 97
-+49 60 97 49 60 97 49 60 97 53 64 102 53 64 102 53 64 102
-+53 64 102 53 64 102 53 64 102 60 71 109 62 75 121 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 62 75 121 49 60 97 50 58 85 60 71 109
-+63 77 126 15 18 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 0 0 0 0 0 0
-+23 28 45 62 75 121 32 38 61 32 38 61 32 38 61 32 38 56
-+25 31 50 25 31 50 25 31 50 19 24 44 19 24 44 49 60 97
-+64 78 127 26 32 53 9 12 21 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 18 31 74 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 23 33 67
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 49 65 117 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+9 13 26 0 0 0 0 0 0 10 17 39 25 42 101 25 42 101
-+15 25 57 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 26 32 53 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 50 65 118 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 38 54 109 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 41 54 95 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 6 11 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 40 56 111 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 38 54 109 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+35 51 108 35 51 108 35 51 108 35 51 108 34 50 107 28 45 103
-+25 42 101 25 42 101
-+45 60 114 61 75 125 63 77 126 63 77 126 64 78 127 64 78 127
-+64 78 127 38 47 77 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 53 64 102 65 79 128 65 79 128
-+65 79 128 59 72 115 49 61 100 63 77 126 65 79 128 65 79 128
-+65 79 128 32 38 61 12 15 26 65 79 128 63 77 126 12 15 26
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 32 38 61 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 49 60 97 0 0 1 0 0 0 0 0 0 0 0 0
-+1 1 2 1 1 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
-+23 28 45 53 64 102 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41 51 85
-+64 78 127 7 9 15 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 18 31 74 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 47 62 115 40 49 78
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 48 64 117 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+13 20 42 0 0 0 0 0 0 19 29 65 25 42 101 19 29 65
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 28 52 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 31 48 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 29 45 103 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 36 52 108 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 41 54 95 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 3 7 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 32 49 106 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 41 89 27 41 89
-+28 40 79 29 40 76 35 51 108 34 50 107 33 50 106 25 42 101
-+25 42 101 25 42 101
-+25 42 101 28 45 103 46 61 115 61 75 125 63 77 126 63 77 126
-+64 78 127 39 46 71 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 19 24 44 25 31 50 25 31 50
-+19 23 37 1 2 3 0 0 0 1 2 3 15 18 27 32 41 72
-+65 79 128 29 34 52 7 9 13 65 79 128 29 34 52 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 34 52 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 50 58 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 53 64 102 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41 51 85
-+64 78 127 7 9 15 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 18 31 74 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 56 70 122 61 75 125 41 51 85
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 48 64 117 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+18 31 74 0 0 0 0 0 0 18 31 74 25 42 101 13 22 52
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 28 52 54 69 120 54 69 120
-+54 69 120 54 69 120 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 45 60 114 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+38 54 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 41 54 95 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 3 7 25 42 101 25 42 101
-+25 42 101 27 44 102 40 56 111 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 110 26 43 102 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+19 29 65 13 20 42 10 17 39 9 15 36 9 13 26 8 11 18
-+5 7 14 2 3 7 1 1 2 0 0 0 0 0 0 0 0 0
-+0 0 0 4 6 13 35 51 108 34 50 107 30 46 104 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 45 103 44 60 114 59 74 124
-+63 77 126 32 41 72 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 14 26
-+65 79 128 26 32 53 1 1 2 41 51 85 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 26 32 53 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 50 58 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 53 64 102 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41 51 85
-+40 49 78 1 2 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 18 31 74 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 43 59 113 60 75 125 61 75 125 61 75 125 41 51 85
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 58 73 123
-+47 62 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 1 1 2 0 0 0 19 29 65 25 42 101 10 17 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
-+0 0 0 0 0 0 0 0 0 19 24 44 54 69 120 54 69 120
-+54 69 120 44 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 35 51 108 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 46 61 115
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 29 45 103 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 2 25 42 101 25 42 101
-+25 42 101 34 50 107 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 34 50 107 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+1 1 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 4 6 13 35 51 108 34 50 107 26 43 102 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+40 56 111 30 37 63 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 14 26
-+65 79 128 25 31 50 0 0 0 1 2 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 23 28 45 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 50 58 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 49 60 97 0 0 0 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 4 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 18 31 74 25 42 101 25 42 101 25 42 101 33 50 106
-+56 70 122 61 75 125 61 75 125 61 75 125 61 75 125 49 60 97
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 58 73 123 45 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 5 7 14 0 0 0 15 25 57 25 42 101 16 21 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 18 23 42 54 69 120 54 69 120
-+49 65 117 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 29 45 103 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 32 49 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 28 45 103 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 44 60 114 27 41 89 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 42 101 25 42 101
-+26 43 102 39 55 111 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 28 45 103 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 6 13 34 50 107 31 48 105 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 14 26
-+65 79 128 23 28 45 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 23 26 38 65 79 128
-+65 79 128 64 78 127 59 72 115 53 64 102 41 54 95 38 47 77
-+30 37 63 19 23 37 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 49 60 97 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 19 29 65 25 42 101 27 44 102 46 61 115 61 75 125
-+61 75 125 61 75 125 61 75 125 61 75 125 61 75 125 49 60 97
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 58 73 123
-+58 73 123 58 73 123 58 73 123 58 73 123 42 58 112 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 13 22 52
-+13 22 52 13 22 52 13 22 52 13 22 52 13 22 52 13 22 52
-+13 22 52 5 7 14 0 0 0 13 20 42 44 60 114 16 21 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 8 11 18 41 51 85 52 67 119
-+30 46 104 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 46 61 115 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 40 56 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 111 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 38 54 109 23 37 83 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 42 101 25 42 101
-+32 49 106 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 35 51 108 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 6 13 34 50 107 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 10 17 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 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 12 21
-+64 78 127 23 26 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
-+0 0 0 0 0 0 0 0 0 0 0 0 4 5 9 12 15 26
-+7 9 13 1 1 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
-+23 28 45 49 60 97 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 19 29 65 38 54 109 58 73 123 61 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 49 61 100
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 58 73 123
-+58 73 123 58 73 123 58 73 123 39 55 110 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 23 42 56 70 122 15 18 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 0 0 0 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 17 38
-+23 37 83 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 110 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 47 62 115 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 47 105 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+44 60 114 28 45 103 23 37 83 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 42 101 26 43 102
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 29 45 103 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 6 13 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 11 17 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
-+0 0 0 0 0 0 0 0 0 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 12 21
-+64 78 127 19 23 37 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 41 54 95 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 39 72 61 75 125 61 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 53 64 102
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 3 3 16 21 36
-+27 35 61 41 54 95 35 51 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 41 89 10 17 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 16 21 36 56 70 122 12 15 26
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 13 22 52 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 31 48 105
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 42 58 112 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+37 53 109 25 42 101 23 37 83 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 13 20 42 29 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 36 52 108 25 42 101 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 5 9 15 25 57 9 15 36 5 7 14 1 1 2
-+19 29 65 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 9 15 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 9 12 21
-+64 78 127 16 21 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
-+23 28 45 41 51 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 32 41 72 61 75 125 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 49 62 109
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 13 20 42 25 42 101 18 31 74 2 3 7
-+2 3 7 2 3 7 2 3 7 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 12 15 26 56 70 122 9 12 21
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 15 31 15 25 57 19 29 65 18 31 74 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 48 64 117
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+34 50 107 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 43 59 113
-+28 45 103 25 42 101 23 37 83 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 15 31
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 46 104 25 42 101 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+19 29 65 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 9 13 26 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 12 21
-+64 78 127 15 18 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 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+18 23 42 29 39 72 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 30 37 63 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 53 67 117
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 5 9 25 42 101 10 17 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 0 0 0
-+0 0 0 0 0 0 0 0 0 7 9 15 56 70 122 8 10 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
-+5 7 14 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 42 56 104 49 62 109
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+44 60 114 46 61 115 45 60 114 45 60 114 28 40 79 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 35 51 108
-+25 42 101 25 42 101 23 37 83 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+19 29 65 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 9 13 26 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 12 21
-+64 78 127 15 18 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 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 19 29 65 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 30 37 63 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 55 70 121
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 23 37 83 5 7 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 2 3 5 56 70 122 7 9 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
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 25 57 25 42 101 25 42 101 25 42 101 23 37 83
-+10 17 39 9 13 26 3 5 9 1 1 1 0 0 0 0 0 0
-+1 1 2 5 7 13 9 12 21 11 15 31 19 24 44 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 36 52 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 37 53 109
-+46 61 115 45 60 114 45 60 114 29 40 76 19 24 44 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 42 58 112 26 43 102
-+25 42 101 25 42 101 23 37 83 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+30 47 105 25 42 101 25 42 101 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+19 29 65 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 9 12 21 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 12 21
-+63 77 126 9 12 21 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 19 29 65 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 35 61 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 53 67 117 4 5 9
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 13 20 42 25 42 101 25 42 101 25 42 101 18 31 74
-+0 0 0 0 0 0 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 4 6 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+43 59 113 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 46 61 115
-+45 60 114 45 60 114 45 60 114 27 35 61 19 24 44 45 60 114
-+44 60 114 44 60 114 44 60 114 44 60 114 32 49 106 25 42 101
-+25 42 101 25 42 101 27 41 89 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 12 21 9 13 26
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 5 7 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 9 12 21
-+63 77 126 9 12 21 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 15 25 57 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 12 15 26 49 62 109 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+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 23 37 83 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 36 45 78 3 4 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 9 15 36 25 42 101 25 42 101 25 42 101 19 29 65
-+0 0 0 0 0 0 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 4 6 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 47 62 115
-+28 45 103 25 42 101 11 15 31 2 3 7 3 6 11 5 7 14
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 40 56 111 46 61 115
-+45 60 114 45 60 114 45 60 114 27 35 61 17 22 38 45 60 114
-+44 60 114 44 60 114 44 60 114 40 56 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 23 37 83
-+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 5 9 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 75 125 52 67 119 36 52 108 25 42 101 25 42 101 25 42 101
-+25 42 101 4 6 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 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+26 43 102 4 6 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 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 15 25 57 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 3 5 32 41 72 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+3 4 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 27 41 89 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 28 36 67 3 4 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 9 12 21 25 42 101 25 42 101 25 42 101 19 29 65
-+0 0 0 0 0 0 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 4 6 49 65 117
-+48 64 117 42 56 104 41 54 95 48 64 117 48 64 117 33 50 106
-+25 42 101 25 42 101 9 13 26 0 0 0 0 0 0 0 0 0
-+13 20 42 25 42 101 23 37 83 18 31 74 18 31 74 18 31 74
-+18 31 74 18 31 74 18 31 74 18 31 74 18 31 74 18 31 74
-+18 31 74 18 31 74 18 31 74 23 37 83 36 45 78 36 45 78
-+42 56 104 45 60 114 45 60 114 21 28 52 14 19 34 44 60 114
-+44 60 114 44 60 114 44 60 114 30 46 104 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 39 55 111 39 55 111 38 54 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 23 37 83
-+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 3 7 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 75 125 61 75 125 61 75 125 56 70 122 39 55 111 27 44 102
-+25 42 101 3 6 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 0 0 0 0 0 0 5 7 14
-+25 42 101 3 6 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 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 15 25 57 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 7 13 49 61 100 49 61 100
-+49 61 100 49 61 100 49 62 109 55 70 121 49 60 97 49 61 100
-+5 7 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 25 42 101 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 12 15 26 55 70 121 3 4 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 3 6 11 25 42 101 25 42 101 25 42 101 19 29 65
-+0 0 0 0 0 0 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 5 7 14
-+1 1 1 0 0 0 0 0 0 4 5 9 29 40 76 25 42 101
-+25 42 101 25 42 101 5 7 14 0 0 0 0 0 0 0 0 0
-+13 22 52 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 11 18 42 58 112 45 60 114 18 23 42 14 19 34 44 60 114
-+44 60 114 44 60 114 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 39 55 111 39 55 111 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 23 37 83
-+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 3 7 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 75 125 61 75 125 61 75 125 61 75 125 61 75 125 26 32 53
-+7 9 15 1 1 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 5 7 14
-+25 42 101 2 3 7 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 7 9 13 41 54 95 0 0 0 1 2 3
-+5 7 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 1 2 3 25 42 101 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 19 24 44 55 70 121 3 4 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 1 1 2 25 42 101 25 42 101 25 42 101 21 31 69
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 13 22 52 25 42 101
-+27 41 89 9 12 21 0 0 0 0 0 0 0 0 0 0 0 0
-+15 25 57 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 18 23 42 45 60 114 14 19 34 10 14 26 44 60 114
-+44 60 114 43 59 113 27 44 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 39 55 111 33 50 106 23 37 83 23 37 83
-+23 37 83 23 37 83 23 37 83 23 37 83 23 37 83 18 31 74
-+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 3 7 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 75 125 61 75 125 61 75 125 61 75 125 61 75 125 23 28 45
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+25 42 101 2 3 7 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 30 37 63 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 13 20 42 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 12 21 30 37 63 1 2 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 27 41 89 25 42 101 28 45 103 28 36 67
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 13 22 52 23 37 83
-+5 7 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+19 29 65 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 28 36 67 8 11 18 9 12 21 44 60 114
-+44 60 114 35 51 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 39 55 111 19 29 65 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 3 7 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+60 75 125 58 73 123 12 15 26 12 15 26 12 15 26 4 5 9
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+25 42 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 3 5 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 23 37 83 26 43 102 46 61 115 29 39 72
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 13 22 52 10 17 39
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+18 31 74 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 3 1 1 3 8 10 17 44 60 114
-+42 58 112 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 37 53 109 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 3 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+60 75 125 53 67 117 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+25 42 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 19 29 65 42 58 112 51 66 119 28 36 67
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 15 31 3 6 11
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+27 41 89 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 5 9 44 60 114
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 30 46 104 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+60 75 125 49 61 100 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+25 42 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 7 14 18 23 42 41 54 95 28 36 67
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 13 26 4 6 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 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 2 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 37 53 109 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+60 75 125 41 54 95 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+25 42 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+18 23 42 25 31 50 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 40 76 27 35 61
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 29 65
-+19 29 65 25 42 101 27 41 89 19 29 65 23 37 83 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 29 45 103 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+60 75 125 41 51 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+27 41 89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 25 31 50 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 32 41 72 27 35 61
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 10 17 0 0 1 0 0 0 0 0 0 5 7 14
-+9 15 36 9 15 36 11 15 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 9 13 26
-+36 52 108 25 42 101 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+60 75 125 40 49 78 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+23 37 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 25 31 50 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 28 36 67 27 35 61
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+28 45 103 25 42 101 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 23 37 83 18 31 74 10 17 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
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+59 74 124 36 45 78 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 12 21
-+49 62 109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 23 28 45 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 35 61 27 35 61
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+59 74 124 32 41 72 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 6 11
-+53 64 102 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 2 3 1 2 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
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 35 61 26 32 53
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+41 54 95 30 37 63 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+49 61 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 4 6 3 4 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 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 13 26
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 3 5 17 22 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
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+41 51 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 6 13
-+13 22 52 13 22 52 13 22 52 11 15 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
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 35 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-diff --git a/include/linux/linux_logo.h b/include/linux/linux_logo.h
-index ca5bd91..67166f3 100644
---- a/include/linux/linux_logo.h
-+++ b/include/linux/linux_logo.h
-@@ -47,6 +47,7 @@ extern const struct linux_logo logo_superh_vga16;
- extern const struct linux_logo logo_superh_clut224;
- extern const struct linux_logo logo_m32r_clut224;
- extern const struct linux_logo logo_spe_clut224;
-+extern const struct linux_logo logo_openwrt_clut224;
-
- extern const struct linux_logo *fb_find_logo(int depth);
- #ifdef CONFIG_FB_LOGO_EXTRA
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.35/001-core.patch b/target/linux/xburst/patches-2.6.35/001-core.patch
deleted file mode 100644
index a4ca6d9ea0..0000000000
--- a/target/linux/xburst/patches-2.6.35/001-core.patch
+++ /dev/null
@@ -1,242 +0,0 @@
-From 2b3ca15058c974f2c20bd057a58a10c414b83fef Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 17 Jul 2010 11:07:51 +0000
-Subject: [PATCH] MIPS: JZ4740: Add base support for Ingenic JZ4740 System-on-a-Chip
-
-Adds a new cpu type for the JZ4740 to the Linux MIPS architecture code.
-It also adds the iomem addresses for the different components found on
-a JZ4740 SoC.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1464/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/include/asm/bootinfo.h | 6 ++
- arch/mips/include/asm/cpu.h | 9 +++-
- arch/mips/include/asm/mach-jz4740/base.h | 26 ++++++++++
- .../asm/mach-jz4740/cpu-feature-overrides.h | 51 ++++++++++++++++++++
- arch/mips/include/asm/mach-jz4740/war.h | 25 ++++++++++
- arch/mips/kernel/cpu-probe.c | 20 ++++++++
- arch/mips/mm/tlbex.c | 5 ++
- 7 files changed, 141 insertions(+), 1 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/base.h
- create mode 100644 arch/mips/include/asm/mach-jz4740/cpu-feature-overrides.h
- create mode 100644 arch/mips/include/asm/mach-jz4740/war.h
-
---- a/arch/mips/include/asm/bootinfo.h
-+++ b/arch/mips/include/asm/bootinfo.h
-@@ -71,6 +71,12 @@
- #define MACH_LEMOTE_LL2F 7
- #define MACH_LOONGSON_END 8
-
-+/*
-+ * Valid machtype for group INGENIC
-+ */
-+#define MACH_INGENIC_JZ4730 0 /* JZ4730 SOC */
-+#define MACH_INGENIC_JZ4740 1 /* JZ4740 SOC */
-+
- extern char *system_type;
- const char *get_system_type(void);
-
---- a/arch/mips/include/asm/cpu.h
-+++ b/arch/mips/include/asm/cpu.h
-@@ -34,7 +34,7 @@
- #define PRID_COMP_LSI 0x080000
- #define PRID_COMP_LEXRA 0x0b0000
- #define PRID_COMP_CAVIUM 0x0d0000
--
-+#define PRID_COMP_INGENIC 0xd00000
-
- /*
- * Assigned values for the product ID register. In order to detect a
-@@ -133,6 +133,12 @@
- #define PRID_IMP_CAVIUM_CN52XX 0x0700
-
- /*
-+ * These are the PRID's for when 23:16 == PRID_COMP_INGENIC
-+ */
-+
-+#define PRID_IMP_JZRISC 0x0200
-+
-+/*
- * Definitions for 7:0 on legacy processors
- */
-
-@@ -219,6 +225,7 @@ enum cpu_type_enum {
- CPU_4KC, CPU_4KEC, CPU_4KSC, CPU_24K, CPU_34K, CPU_1004K, CPU_74K,
- CPU_ALCHEMY, CPU_PR4450, CPU_BCM3302, CPU_BCM4710,
- CPU_BCM6338, CPU_BCM6345, CPU_BCM6348, CPU_BCM6358,
-+ CPU_JZRISC,
-
- /*
- * MIPS64 class processors
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/base.h
-@@ -0,0 +1,26 @@
-+#ifndef __ASM_MACH_JZ4740_BASE_H__
-+#define __ASM_MACH_JZ4740_BASE_H__
-+
-+#define JZ4740_CPM_BASE_ADDR 0x10000000
-+#define JZ4740_INTC_BASE_ADDR 0x10001000
-+#define JZ4740_WDT_BASE_ADDR 0x10002000
-+#define JZ4740_TCU_BASE_ADDR 0x10002010
-+#define JZ4740_RTC_BASE_ADDR 0x10003000
-+#define JZ4740_GPIO_BASE_ADDR 0x10010000
-+#define JZ4740_AIC_BASE_ADDR 0x10020000
-+#define JZ4740_MSC_BASE_ADDR 0x10021000
-+#define JZ4740_UART0_BASE_ADDR 0x10030000
-+#define JZ4740_UART1_BASE_ADDR 0x10031000
-+#define JZ4740_I2C_BASE_ADDR 0x10042000
-+#define JZ4740_SSI_BASE_ADDR 0x10043000
-+#define JZ4740_SADC_BASE_ADDR 0x10070000
-+#define JZ4740_EMC_BASE_ADDR 0x13010000
-+#define JZ4740_DMAC_BASE_ADDR 0x13020000
-+#define JZ4740_UHC_BASE_ADDR 0x13030000
-+#define JZ4740_UDC_BASE_ADDR 0x13040000
-+#define JZ4740_LCD_BASE_ADDR 0x13050000
-+#define JZ4740_SLCD_BASE_ADDR 0x13050000
-+#define JZ4740_CIM_BASE_ADDR 0x13060000
-+#define JZ4740_IPU_BASE_ADDR 0x13080000
-+
-+#endif
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/cpu-feature-overrides.h
-@@ -0,0 +1,51 @@
-+/*
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file "COPYING" in the main directory of this archive
-+ * for more details.
-+ *
-+ */
-+#ifndef __ASM_MACH_JZ4740_CPU_FEATURE_OVERRIDES_H
-+#define __ASM_MACH_JZ4740_CPU_FEATURE_OVERRIDES_H
-+
-+#define cpu_has_tlb 1
-+#define cpu_has_4kex 1
-+#define cpu_has_3k_cache 0
-+#define cpu_has_4k_cache 1
-+#define cpu_has_tx39_cache 0
-+#define cpu_has_fpu 0
-+#define cpu_has_32fpr 0
-+#define cpu_has_counter 0
-+#define cpu_has_watch 1
-+#define cpu_has_divec 1
-+#define cpu_has_vce 0
-+#define cpu_has_cache_cdex_p 0
-+#define cpu_has_cache_cdex_s 0
-+#define cpu_has_prefetch 1
-+#define cpu_has_mcheck 1
-+#define cpu_has_ejtag 1
-+#define cpu_has_llsc 1
-+#define cpu_has_mips16 0
-+#define cpu_has_mdmx 0
-+#define cpu_has_mips3d 0
-+#define cpu_has_smartmips 0
-+#define kernel_uses_llsc 1
-+#define cpu_has_vtag_icache 1
-+#define cpu_has_dc_aliases 0
-+#define cpu_has_ic_fills_f_dc 0
-+#define cpu_has_pindexed_dcache 0
-+#define cpu_has_mips32r1 1
-+#define cpu_has_mips32r2 0
-+#define cpu_has_mips64r1 0
-+#define cpu_has_mips64r2 0
-+#define cpu_has_dsp 0
-+#define cpu_has_mipsmt 0
-+#define cpu_has_userlocal 0
-+#define cpu_has_nofpuex 0
-+#define cpu_has_64bits 0
-+#define cpu_has_64bit_zero_reg 0
-+#define cpu_has_inclusive_pcaches 0
-+
-+#define cpu_dcache_line_size() 32
-+#define cpu_icache_line_size() 32
-+
-+#endif
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/war.h
-@@ -0,0 +1,25 @@
-+/*
-+ * 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) 2002, 2004, 2007 by Ralf Baechle <ralf@linux-mips.org>
-+ */
-+#ifndef __ASM_MIPS_MACH_JZ4740_WAR_H
-+#define __ASM_MIPS_MACH_JZ4740_WAR_H
-+
-+#define R4600_V1_INDEX_ICACHEOP_WAR 0
-+#define R4600_V1_HIT_CACHEOP_WAR 0
-+#define R4600_V2_HIT_CACHEOP_WAR 0
-+#define R5432_CP0_INTERRUPT_WAR 0
-+#define BCM1250_M3_WAR 0
-+#define SIBYTE_1956_WAR 0
-+#define MIPS4K_ICACHE_REFILL_WAR 0
-+#define MIPS_CACHE_SYNC_WAR 0
-+#define TX49XX_ICACHE_INDEX_INV_WAR 0
-+#define RM9000_CDEX_SMP_WAR 0
-+#define ICACHE_REFILLS_WORKAROUND_WAR 0
-+#define R10000_LLSC_WAR 0
-+#define MIPS34K_MISSED_ITLB_WAR 0
-+
-+#endif /* __ASM_MIPS_MACH_JZ4740_WAR_H */
---- a/arch/mips/kernel/cpu-probe.c
-+++ b/arch/mips/kernel/cpu-probe.c
-@@ -187,6 +187,7 @@ void __init check_wait(void)
- case CPU_BCM6358:
- case CPU_CAVIUM_OCTEON:
- case CPU_CAVIUM_OCTEON_PLUS:
-+ case CPU_JZRISC:
- cpu_wait = r4k_wait;
- break;
-
-@@ -956,6 +957,22 @@ platform:
- }
- }
-
-+static inline void cpu_probe_ingenic(struct cpuinfo_mips *c, unsigned int cpu)
-+{
-+ decode_configs(c);
-+ /* JZRISC does not implement the CP0 counter. */
-+ c->options &= ~MIPS_CPU_COUNTER;
-+ switch (c->processor_id & 0xff00) {
-+ case PRID_IMP_JZRISC:
-+ c->cputype = CPU_JZRISC;
-+ __cpu_name[cpu] = "Ingenic JZRISC";
-+ break;
-+ default:
-+ panic("Unknown Ingenic Processor ID!");
-+ break;
-+ }
-+}
-+
- const char *__cpu_name[NR_CPUS];
- const char *__elf_platform;
-
-@@ -994,6 +1011,9 @@ __cpuinit void cpu_probe(void)
- case PRID_COMP_CAVIUM:
- cpu_probe_cavium(c, cpu);
- break;
-+ case PRID_COMP_INGENIC:
-+ cpu_probe_ingenic(c, cpu);
-+ break;
- }
-
- BUG_ON(!__cpu_name[cpu]);
---- a/arch/mips/mm/tlbex.c
-+++ b/arch/mips/mm/tlbex.c
-@@ -409,6 +409,11 @@ static void __cpuinit build_tlb_write_en
- tlbw(p);
- break;
-
-+ case CPU_JZRISC:
-+ tlbw(p);
-+ uasm_i_nop(p);
-+ break;
-+
- default:
- panic("No TLB refill handler yet (CPU type: %d)",
- current_cpu_data.cputype);
diff --git a/target/linux/xburst/patches-2.6.35/002-xburst-cache-quirks.patch b/target/linux/xburst/patches-2.6.35/002-xburst-cache-quirks.patch
deleted file mode 100644
index 9b214d77af..0000000000
--- a/target/linux/xburst/patches-2.6.35/002-xburst-cache-quirks.patch
+++ /dev/null
@@ -1,334 +0,0 @@
-From 296b9882edc2e6779e6c3d97f537166aa2334b93 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 17:34:29 +0200
-Subject: [PATCH] JZ4740 cache quirks
-
----
- arch/mips/include/asm/r4kcache.h | 231 ++++++++++++++++++++++++++++++++++++++
- 1 files changed, 231 insertions(+), 0 deletions(-)
-
---- a/arch/mips/include/asm/r4kcache.h
-+++ b/arch/mips/include/asm/r4kcache.h
-@@ -17,6 +17,58 @@
- #include <asm/cpu-features.h>
- #include <asm/mipsmtregs.h>
-
-+#ifdef CONFIG_JZRISC
-+
-+#define K0_TO_K1() \
-+do { \
-+ unsigned long __k0_addr; \
-+ \
-+ __asm__ __volatile__( \
-+ "la %0, 1f\n\t" \
-+ "or %0, %0, %1\n\t" \
-+ "jr %0\n\t" \
-+ "nop\n\t" \
-+ "1: nop\n" \
-+ : "=&r"(__k0_addr) \
-+ : "r" (0x20000000) ); \
-+} while(0)
-+
-+#define K1_TO_K0() \
-+do { \
-+ unsigned long __k0_addr; \
-+ __asm__ __volatile__( \
-+ "nop;nop;nop;nop;nop;nop;nop\n\t" \
-+ "la %0, 1f\n\t" \
-+ "jr %0\n\t" \
-+ "nop\n\t" \
-+ "1: nop\n" \
-+ : "=&r" (__k0_addr)); \
-+} while (0)
-+
-+#define INVALIDATE_BTB() \
-+do { \
-+ unsigned long tmp; \
-+ __asm__ __volatile__( \
-+ ".set mips32\n\t" \
-+ "mfc0 %0, $16, 7\n\t" \
-+ "nop\n\t" \
-+ "ori %0, 2\n\t" \
-+ "mtc0 %0, $16, 7\n\t" \
-+ "nop\n\t" \
-+ : "=&r" (tmp)); \
-+} while (0)
-+
-+#define SYNC_WB() __asm__ __volatile__ ("sync")
-+
-+#else /* CONFIG_JZRISC */
-+
-+#define K0_TO_K1() do { } while (0)
-+#define K1_TO_K0() do { } while (0)
-+#define INVALIDATE_BTB() do { } while (0)
-+#define SYNC_WB() do { } while (0)
-+
-+#endif /* CONFIG_JZRISC */
-+
- /*
- * This macro return a properly sign-extended address suitable as base address
- * for indexed cache operations. Two issues here:
-@@ -144,6 +196,7 @@ static inline void flush_icache_line_ind
- {
- __iflush_prologue
- cache_op(Index_Invalidate_I, addr);
-+ INVALIDATE_BTB();
- __iflush_epilogue
- }
-
-@@ -151,6 +204,7 @@ static inline void flush_dcache_line_ind
- {
- __dflush_prologue
- cache_op(Index_Writeback_Inv_D, addr);
-+ SYNC_WB();
- __dflush_epilogue
- }
-
-@@ -163,6 +217,7 @@ static inline void flush_icache_line(uns
- {
- __iflush_prologue
- cache_op(Hit_Invalidate_I, addr);
-+ INVALIDATE_BTB();
- __iflush_epilogue
- }
-
-@@ -170,6 +225,7 @@ static inline void flush_dcache_line(uns
- {
- __dflush_prologue
- cache_op(Hit_Writeback_Inv_D, addr);
-+ SYNC_WB();
- __dflush_epilogue
- }
-
-@@ -177,6 +233,7 @@ static inline void invalidate_dcache_lin
- {
- __dflush_prologue
- cache_op(Hit_Invalidate_D, addr);
-+ SYNC_WB();
- __dflush_epilogue
- }
-
-@@ -209,6 +266,7 @@ static inline void flush_scache_line(uns
- static inline void protected_flush_icache_line(unsigned long addr)
- {
- protected_cache_op(Hit_Invalidate_I, addr);
-+ INVALIDATE_BTB();
- }
-
- /*
-@@ -220,6 +278,7 @@ static inline void protected_flush_icach
- static inline void protected_writeback_dcache_line(unsigned long addr)
- {
- protected_cache_op(Hit_Writeback_Inv_D, addr);
-+ SYNC_WB();
- }
-
- static inline void protected_writeback_scache_line(unsigned long addr)
-@@ -396,8 +455,10 @@ static inline void blast_##pfx##cache##l
- __BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 16)
- __BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 16)
- __BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 16)
-+#ifndef CONFIG_JZRISC
- __BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 32)
- __BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 32)
-+#endif
- __BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 32)
- __BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 64)
- __BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 64)
-@@ -405,12 +466,122 @@ __BUILD_BLAST_CACHE(s, scache, Index_Wri
- __BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 128)
-
- __BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 16)
-+#ifndef CONFIG_JZRISC
- __BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 32)
-+#endif
- __BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 16)
- __BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 32)
- __BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 64)
- __BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 128)
-
-+#ifdef CONFIG_JZRISC
-+
-+static inline void blast_dcache32(void)
-+{
-+ unsigned long start = INDEX_BASE;
-+ unsigned long end = start + current_cpu_data.dcache.waysize;
-+ unsigned long ws_inc = 1UL << current_cpu_data.dcache.waybit;
-+ unsigned long ws_end = current_cpu_data.dcache.ways <<
-+ current_cpu_data.dcache.waybit;
-+ unsigned long ws, addr;
-+
-+ for (ws = 0; ws < ws_end; ws += ws_inc)
-+ for (addr = start; addr < end; addr += 0x400)
-+ cache32_unroll32(addr|ws,Index_Writeback_Inv_D);
-+
-+ SYNC_WB();
-+}
-+
-+static inline void blast_dcache32_page(unsigned long page)
-+{
-+ unsigned long start = page;
-+ unsigned long end = page + PAGE_SIZE;
-+
-+ do {
-+ cache32_unroll32(start,Hit_Writeback_Inv_D);
-+ start += 0x400;
-+ } while (start < end);
-+
-+ SYNC_WB();
-+}
-+
-+static inline void blast_dcache32_page_indexed(unsigned long page)
-+{
-+ unsigned long indexmask = current_cpu_data.dcache.waysize - 1;
-+ unsigned long start = INDEX_BASE + (page & indexmask);
-+ unsigned long end = start + PAGE_SIZE;
-+ unsigned long ws_inc = 1UL << current_cpu_data.dcache.waybit;
-+ unsigned long ws_end = current_cpu_data.dcache.ways <<
-+ current_cpu_data.dcache.waybit;
-+ unsigned long ws, addr;
-+
-+ for (ws = 0; ws < ws_end; ws += ws_inc)
-+ for (addr = start; addr < end; addr += 0x400)
-+ cache32_unroll32(addr|ws,Index_Writeback_Inv_D);
-+
-+ SYNC_WB();
-+}
-+
-+static inline void blast_icache32(void)
-+{
-+ unsigned long start = INDEX_BASE;
-+ unsigned long end = start + current_cpu_data.icache.waysize;
-+ unsigned long ws_inc = 1UL << current_cpu_data.icache.waybit;
-+ unsigned long ws_end = current_cpu_data.icache.ways <<
-+ current_cpu_data.icache.waybit;
-+ unsigned long ws, addr;
-+
-+ K0_TO_K1();
-+
-+ for (ws = 0; ws < ws_end; ws += ws_inc)
-+ for (addr = start; addr < end; addr += 0x400)
-+ cache32_unroll32(addr|ws,Index_Invalidate_I);
-+
-+ INVALIDATE_BTB();
-+
-+ K1_TO_K0();
-+}
-+
-+static inline void blast_icache32_page(unsigned long page)
-+{
-+ unsigned long start = page;
-+ unsigned long end = page + PAGE_SIZE;
-+
-+ K0_TO_K1();
-+
-+ do {
-+ cache32_unroll32(start,Hit_Invalidate_I);
-+ start += 0x400;
-+ } while (start < end);
-+
-+ INVALIDATE_BTB();
-+
-+ K1_TO_K0();
-+}
-+
-+static inline void blast_icache32_page_indexed(unsigned long page)
-+{
-+ unsigned long indexmask = current_cpu_data.icache.waysize - 1;
-+ unsigned long start = INDEX_BASE + (page & indexmask);
-+ unsigned long end = start + PAGE_SIZE;
-+ unsigned long ws_inc = 1UL << current_cpu_data.icache.waybit;
-+ unsigned long ws_end = current_cpu_data.icache.ways <<
-+ current_cpu_data.icache.waybit;
-+ unsigned long ws, addr;
-+
-+ K0_TO_K1();
-+
-+ for (ws = 0; ws < ws_end; ws += ws_inc)
-+ for (addr = start; addr < end; addr += 0x400)
-+ cache32_unroll32(addr|ws,Index_Invalidate_I);
-+
-+ INVALIDATE_BTB();
-+
-+ K1_TO_K0();
-+}
-+
-+#endif /* CONFIG_JZRISC */
-+
- /* build blast_xxx_range, protected_blast_xxx_range */
- #define __BUILD_BLAST_CACHE_RANGE(pfx, desc, hitop, prot) \
- static inline void prot##blast_##pfx##cache##_range(unsigned long start, \
-@@ -432,13 +603,73 @@ static inline void prot##blast_##pfx##ca
- __##pfx##flush_epilogue \
- }
-
-+#ifndef CONFIG_JZRISC
- __BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, protected_)
-+#endif
- __BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, protected_)
-+#ifndef CONFIG_JZRISC
- __BUILD_BLAST_CACHE_RANGE(i, icache, Hit_Invalidate_I, protected_)
- __BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, )
-+#endif
- __BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, )
- /* blast_inv_dcache_range */
- __BUILD_BLAST_CACHE_RANGE(inv_d, dcache, Hit_Invalidate_D, )
- __BUILD_BLAST_CACHE_RANGE(inv_s, scache, Hit_Invalidate_SD, )
-
-+#ifdef CONFIG_JZRISC
-+
-+static inline void protected_blast_dcache_range(unsigned long start,
-+ unsigned long end)
-+{
-+ unsigned long lsize = cpu_dcache_line_size();
-+ unsigned long addr = start & ~(lsize - 1);
-+ unsigned long aend = (end - 1) & ~(lsize - 1);
-+
-+ while (1) {
-+ protected_cache_op(Hit_Writeback_Inv_D, addr);
-+ if (addr == aend)
-+ break;
-+ addr += lsize;
-+ }
-+ SYNC_WB();
-+}
-+
-+static inline void protected_blast_icache_range(unsigned long start,
-+ unsigned long end)
-+{
-+ unsigned long lsize = cpu_icache_line_size();
-+ unsigned long addr = start & ~(lsize - 1);
-+ unsigned long aend = (end - 1) & ~(lsize - 1);
-+
-+ K0_TO_K1();
-+
-+ while (1) {
-+ protected_cache_op(Hit_Invalidate_I, addr);
-+ if (addr == aend)
-+ break;
-+ addr += lsize;
-+ }
-+ INVALIDATE_BTB();
-+
-+ K1_TO_K0();
-+}
-+
-+static inline void blast_dcache_range(unsigned long start,
-+ unsigned long end)
-+{
-+ unsigned long lsize = cpu_dcache_line_size();
-+ unsigned long addr = start & ~(lsize - 1);
-+ unsigned long aend = (end - 1) & ~(lsize - 1);
-+
-+ while (1) {
-+ cache_op(Hit_Writeback_Inv_D, addr);
-+ if (addr == aend)
-+ break;
-+ addr += lsize;
-+ }
-+ SYNC_WB();
-+}
-+
-+#endif /* CONFIG_JZRISC */
-+
- #endif /* _ASM_R4KCACHE_H */
diff --git a/target/linux/xburst/patches-2.6.35/003-clock_api.patch b/target/linux/xburst/patches-2.6.35/003-clock_api.patch
deleted file mode 100644
index b1db43ecc9..0000000000
--- a/target/linux/xburst/patches-2.6.35/003-clock_api.patch
+++ /dev/null
@@ -1,1173 +0,0 @@
-From dd6ffa07b42d40ff680ce9bce34da88cf8920837 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 17 Jul 2010 11:10:00 +0000
-Subject: [PATCH] MIPS: JZ4740: Add clock API support.
-
-Add support for managing the clocks found on JZ4740 SoC through the
-Linux clock API.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1466/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/include/asm/mach-jz4740/clock.h | 28 +
- arch/mips/jz4740/clock-debugfs.c | 109 ++++
- arch/mips/jz4740/clock.c | 924 +++++++++++++++++++++++++++++
- arch/mips/jz4740/clock.h | 76 +++
- 4 files changed, 1137 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/clock.h
- create mode 100644 arch/mips/jz4740/clock-debugfs.c
- create mode 100644 arch/mips/jz4740/clock.c
- create mode 100644 arch/mips/jz4740/clock.h
-
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/clock.h
-@@ -0,0 +1,28 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * 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 __ASM_JZ4740_CLOCK_H__
-+#define __ASM_JZ4740_CLOCK_H__
-+
-+enum jz4740_wait_mode {
-+ JZ4740_WAIT_MODE_IDLE,
-+ JZ4740_WAIT_MODE_SLEEP,
-+};
-+
-+void jz4740_clock_set_wait_mode(enum jz4740_wait_mode mode);
-+
-+void jz4740_clock_udc_enable_auto_suspend(void);
-+void jz4740_clock_udc_disable_auto_suspend(void);
-+
-+#endif
---- /dev/null
-+++ b/arch/mips/jz4740/clock-debugfs.c
-@@ -0,0 +1,109 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC clock support debugfs entries
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/clk.h>
-+#include <linux/err.h>
-+
-+#include <linux/debugfs.h>
-+#include <linux/uaccess.h>
-+
-+#include <asm/mach-jz4740/clock.h>
-+#include "clock.h"
-+
-+static struct dentry *jz4740_clock_debugfs;
-+
-+static int jz4740_clock_debugfs_show_enabled(void *data, uint64_t *value)
-+{
-+ struct clk *clk = data;
-+ *value = clk_is_enabled(clk);
-+
-+ return 0;
-+}
-+
-+static int jz4740_clock_debugfs_set_enabled(void *data, uint64_t value)
-+{
-+ struct clk *clk = data;
-+
-+ if (value)
-+ return clk_enable(clk);
-+ else
-+ clk_disable(clk);
-+
-+ return 0;
-+}
-+
-+DEFINE_SIMPLE_ATTRIBUTE(jz4740_clock_debugfs_ops_enabled,
-+ jz4740_clock_debugfs_show_enabled,
-+ jz4740_clock_debugfs_set_enabled,
-+ "%llu\n");
-+
-+static int jz4740_clock_debugfs_show_rate(void *data, uint64_t *value)
-+{
-+ struct clk *clk = data;
-+ *value = clk_get_rate(clk);
-+
-+ return 0;
-+}
-+
-+DEFINE_SIMPLE_ATTRIBUTE(jz4740_clock_debugfs_ops_rate,
-+ jz4740_clock_debugfs_show_rate,
-+ NULL,
-+ "%llu\n");
-+
-+void jz4740_clock_debugfs_add_clk(struct clk *clk)
-+{
-+ if (!jz4740_clock_debugfs)
-+ return;
-+
-+ clk->debugfs_entry = debugfs_create_dir(clk->name, jz4740_clock_debugfs);
-+ debugfs_create_file("rate", S_IWUGO | S_IRUGO, clk->debugfs_entry, clk,
-+ &jz4740_clock_debugfs_ops_rate);
-+ debugfs_create_file("enabled", S_IRUGO, clk->debugfs_entry, clk,
-+ &jz4740_clock_debugfs_ops_enabled);
-+
-+ if (clk->parent) {
-+ char parent_path[100];
-+ snprintf(parent_path, 100, "../%s", clk->parent->name);
-+ clk->debugfs_parent_entry = debugfs_create_symlink("parent",
-+ clk->debugfs_entry,
-+ parent_path);
-+ }
-+}
-+
-+/* TODO: Locking */
-+void jz4740_clock_debugfs_update_parent(struct clk *clk)
-+{
-+ if (clk->debugfs_parent_entry)
-+ debugfs_remove(clk->debugfs_parent_entry);
-+
-+ if (clk->parent) {
-+ char parent_path[100];
-+ snprintf(parent_path, 100, "../%s", clk->parent->name);
-+ clk->debugfs_parent_entry = debugfs_create_symlink("parent",
-+ clk->debugfs_entry,
-+ parent_path);
-+ } else {
-+ clk->debugfs_parent_entry = NULL;
-+ }
-+}
-+
-+void jz4740_clock_debugfs_init(void)
-+{
-+ jz4740_clock_debugfs = debugfs_create_dir("jz4740-clock", NULL);
-+ if (IS_ERR(jz4740_clock_debugfs))
-+ jz4740_clock_debugfs = NULL;
-+}
---- /dev/null
-+++ b/arch/mips/jz4740/clock.c
-@@ -0,0 +1,924 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC clock support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/errno.h>
-+#include <linux/clk.h>
-+#include <linux/spinlock.h>
-+#include <linux/io.h>
-+#include <linux/module.h>
-+#include <linux/list.h>
-+#include <linux/err.h>
-+
-+#include <asm/mach-jz4740/clock.h>
-+#include <asm/mach-jz4740/base.h>
-+
-+#include "clock.h"
-+
-+#define JZ_REG_CLOCK_CTRL 0x00
-+#define JZ_REG_CLOCK_LOW_POWER 0x04
-+#define JZ_REG_CLOCK_PLL 0x10
-+#define JZ_REG_CLOCK_GATE 0x20
-+#define JZ_REG_CLOCK_SLEEP_CTRL 0x24
-+#define JZ_REG_CLOCK_I2S 0x60
-+#define JZ_REG_CLOCK_LCD 0x64
-+#define JZ_REG_CLOCK_MMC 0x68
-+#define JZ_REG_CLOCK_UHC 0x6C
-+#define JZ_REG_CLOCK_SPI 0x74
-+
-+#define JZ_CLOCK_CTRL_I2S_SRC_PLL BIT(31)
-+#define JZ_CLOCK_CTRL_KO_ENABLE BIT(30)
-+#define JZ_CLOCK_CTRL_UDC_SRC_PLL BIT(29)
-+#define JZ_CLOCK_CTRL_UDIV_MASK 0x1f800000
-+#define JZ_CLOCK_CTRL_CHANGE_ENABLE BIT(22)
-+#define JZ_CLOCK_CTRL_PLL_HALF BIT(21)
-+#define JZ_CLOCK_CTRL_LDIV_MASK 0x001f0000
-+#define JZ_CLOCK_CTRL_UDIV_OFFSET 23
-+#define JZ_CLOCK_CTRL_LDIV_OFFSET 16
-+#define JZ_CLOCK_CTRL_MDIV_OFFSET 12
-+#define JZ_CLOCK_CTRL_PDIV_OFFSET 8
-+#define JZ_CLOCK_CTRL_HDIV_OFFSET 4
-+#define JZ_CLOCK_CTRL_CDIV_OFFSET 0
-+
-+#define JZ_CLOCK_GATE_UART0 BIT(0)
-+#define JZ_CLOCK_GATE_TCU BIT(1)
-+#define JZ_CLOCK_GATE_RTC BIT(2)
-+#define JZ_CLOCK_GATE_I2C BIT(3)
-+#define JZ_CLOCK_GATE_SPI BIT(4)
-+#define JZ_CLOCK_GATE_AIC BIT(5)
-+#define JZ_CLOCK_GATE_I2S BIT(6)
-+#define JZ_CLOCK_GATE_MMC BIT(7)
-+#define JZ_CLOCK_GATE_ADC BIT(8)
-+#define JZ_CLOCK_GATE_CIM BIT(9)
-+#define JZ_CLOCK_GATE_LCD BIT(10)
-+#define JZ_CLOCK_GATE_UDC BIT(11)
-+#define JZ_CLOCK_GATE_DMAC BIT(12)
-+#define JZ_CLOCK_GATE_IPU BIT(13)
-+#define JZ_CLOCK_GATE_UHC BIT(14)
-+#define JZ_CLOCK_GATE_UART1 BIT(15)
-+
-+#define JZ_CLOCK_I2S_DIV_MASK 0x01ff
-+
-+#define JZ_CLOCK_LCD_DIV_MASK 0x01ff
-+
-+#define JZ_CLOCK_MMC_DIV_MASK 0x001f
-+
-+#define JZ_CLOCK_UHC_DIV_MASK 0x000f
-+
-+#define JZ_CLOCK_SPI_SRC_PLL BIT(31)
-+#define JZ_CLOCK_SPI_DIV_MASK 0x000f
-+
-+#define JZ_CLOCK_PLL_M_MASK 0x01ff
-+#define JZ_CLOCK_PLL_N_MASK 0x001f
-+#define JZ_CLOCK_PLL_OD_MASK 0x0003
-+#define JZ_CLOCK_PLL_STABLE BIT(10)
-+#define JZ_CLOCK_PLL_BYPASS BIT(9)
-+#define JZ_CLOCK_PLL_ENABLED BIT(8)
-+#define JZ_CLOCK_PLL_STABLIZE_MASK 0x000f
-+#define JZ_CLOCK_PLL_M_OFFSET 23
-+#define JZ_CLOCK_PLL_N_OFFSET 18
-+#define JZ_CLOCK_PLL_OD_OFFSET 16
-+
-+#define JZ_CLOCK_LOW_POWER_MODE_DOZE BIT(2)
-+#define JZ_CLOCK_LOW_POWER_MODE_SLEEP BIT(0)
-+
-+#define JZ_CLOCK_SLEEP_CTRL_SUSPEND_UHC BIT(7)
-+#define JZ_CLOCK_SLEEP_CTRL_ENABLE_UDC BIT(6)
-+
-+static void __iomem *jz_clock_base;
-+static spinlock_t jz_clock_lock;
-+static LIST_HEAD(jz_clocks);
-+
-+struct main_clk {
-+ struct clk clk;
-+ uint32_t div_offset;
-+};
-+
-+struct divided_clk {
-+ struct clk clk;
-+ uint32_t reg;
-+ uint32_t mask;
-+};
-+
-+struct static_clk {
-+ struct clk clk;
-+ unsigned long rate;
-+};
-+
-+static uint32_t jz_clk_reg_read(int reg)
-+{
-+ return readl(jz_clock_base + reg);
-+}
-+
-+static void jz_clk_reg_write_mask(int reg, uint32_t val, uint32_t mask)
-+{
-+ uint32_t val2;
-+
-+ spin_lock(&jz_clock_lock);
-+ val2 = readl(jz_clock_base + reg);
-+ val2 &= ~mask;
-+ val2 |= val;
-+ writel(val2, jz_clock_base + reg);
-+ spin_unlock(&jz_clock_lock);
-+}
-+
-+static void jz_clk_reg_set_bits(int reg, uint32_t mask)
-+{
-+ uint32_t val;
-+
-+ spin_lock(&jz_clock_lock);
-+ val = readl(jz_clock_base + reg);
-+ val |= mask;
-+ writel(val, jz_clock_base + reg);
-+ spin_unlock(&jz_clock_lock);
-+}
-+
-+static void jz_clk_reg_clear_bits(int reg, uint32_t mask)
-+{
-+ uint32_t val;
-+
-+ spin_lock(&jz_clock_lock);
-+ val = readl(jz_clock_base + reg);
-+ val &= ~mask;
-+ writel(val, jz_clock_base + reg);
-+ spin_unlock(&jz_clock_lock);
-+}
-+
-+static int jz_clk_enable_gating(struct clk *clk)
-+{
-+ if (clk->gate_bit == JZ4740_CLK_NOT_GATED)
-+ return -EINVAL;
-+
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_GATE, clk->gate_bit);
-+ return 0;
-+}
-+
-+static int jz_clk_disable_gating(struct clk *clk)
-+{
-+ if (clk->gate_bit == JZ4740_CLK_NOT_GATED)
-+ return -EINVAL;
-+
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_GATE, clk->gate_bit);
-+ return 0;
-+}
-+
-+static int jz_clk_is_enabled_gating(struct clk *clk)
-+{
-+ if (clk->gate_bit == JZ4740_CLK_NOT_GATED)
-+ return 1;
-+
-+ return !(jz_clk_reg_read(JZ_REG_CLOCK_GATE) & clk->gate_bit);
-+}
-+
-+static unsigned long jz_clk_static_get_rate(struct clk *clk)
-+{
-+ return ((struct static_clk *)clk)->rate;
-+}
-+
-+static int jz_clk_ko_enable(struct clk *clk)
-+{
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_CTRL, JZ_CLOCK_CTRL_KO_ENABLE);
-+ return 0;
-+}
-+
-+static int jz_clk_ko_disable(struct clk *clk)
-+{
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_CTRL, JZ_CLOCK_CTRL_KO_ENABLE);
-+ return 0;
-+}
-+
-+static int jz_clk_ko_is_enabled(struct clk *clk)
-+{
-+ return !!(jz_clk_reg_read(JZ_REG_CLOCK_CTRL) & JZ_CLOCK_CTRL_KO_ENABLE);
-+}
-+
-+static const int pllno[] = {1, 2, 2, 4};
-+
-+static unsigned long jz_clk_pll_get_rate(struct clk *clk)
-+{
-+ uint32_t val;
-+ int m;
-+ int n;
-+ int od;
-+
-+ val = jz_clk_reg_read(JZ_REG_CLOCK_PLL);
-+
-+ if (val & JZ_CLOCK_PLL_BYPASS)
-+ return clk_get_rate(clk->parent);
-+
-+ m = ((val >> 23) & 0x1ff) + 2;
-+ n = ((val >> 18) & 0x1f) + 2;
-+ od = (val >> 16) & 0x3;
-+
-+ return ((clk_get_rate(clk->parent) / n) * m) / pllno[od];
-+}
-+
-+static unsigned long jz_clk_pll_half_get_rate(struct clk *clk)
-+{
-+ uint32_t reg;
-+
-+ reg = jz_clk_reg_read(JZ_REG_CLOCK_CTRL);
-+ if (reg & JZ_CLOCK_CTRL_PLL_HALF)
-+ return jz_clk_pll_get_rate(clk->parent);
-+ return jz_clk_pll_get_rate(clk->parent) >> 1;
-+}
-+
-+static const int jz_clk_main_divs[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32};
-+
-+static unsigned long jz_clk_main_round_rate(struct clk *clk, unsigned long rate)
-+{
-+ unsigned long parent_rate = jz_clk_pll_get_rate(clk->parent);
-+ int div;
-+
-+ div = parent_rate / rate;
-+ if (div > 32)
-+ return parent_rate / 32;
-+ else if (div < 1)
-+ return parent_rate;
-+
-+ div &= (0x3 << (ffs(div) - 1));
-+
-+ return parent_rate / div;
-+}
-+
-+static unsigned long jz_clk_main_get_rate(struct clk *clk)
-+{
-+ struct main_clk *mclk = (struct main_clk *)clk;
-+ uint32_t div;
-+
-+ div = jz_clk_reg_read(JZ_REG_CLOCK_CTRL);
-+
-+ div >>= mclk->div_offset;
-+ div &= 0xf;
-+
-+ if (div >= ARRAY_SIZE(jz_clk_main_divs))
-+ div = ARRAY_SIZE(jz_clk_main_divs) - 1;
-+
-+ return jz_clk_pll_get_rate(clk->parent) / jz_clk_main_divs[div];
-+}
-+
-+static int jz_clk_main_set_rate(struct clk *clk, unsigned long rate)
-+{
-+ struct main_clk *mclk = (struct main_clk *)clk;
-+ int i;
-+ int div;
-+ unsigned long parent_rate = jz_clk_pll_get_rate(clk->parent);
-+
-+ rate = jz_clk_main_round_rate(clk, rate);
-+
-+ div = parent_rate / rate;
-+
-+ i = (ffs(div) - 1) << 1;
-+ if (i > 0 && !(div & BIT(i-1)))
-+ i -= 1;
-+
-+ jz_clk_reg_write_mask(JZ_REG_CLOCK_CTRL, i << mclk->div_offset,
-+ 0xf << mclk->div_offset);
-+
-+ return 0;
-+}
-+
-+static struct clk_ops jz_clk_static_ops = {
-+ .get_rate = jz_clk_static_get_rate,
-+ .enable = jz_clk_enable_gating,
-+ .disable = jz_clk_disable_gating,
-+ .is_enabled = jz_clk_is_enabled_gating,
-+};
-+
-+static struct static_clk jz_clk_ext = {
-+ .clk = {
-+ .name = "ext",
-+ .gate_bit = JZ4740_CLK_NOT_GATED,
-+ .ops = &jz_clk_static_ops,
-+ },
-+};
-+
-+static struct clk_ops jz_clk_pll_ops = {
-+ .get_rate = jz_clk_pll_get_rate,
-+};
-+
-+static struct clk jz_clk_pll = {
-+ .name = "pll",
-+ .parent = &jz_clk_ext.clk,
-+ .ops = &jz_clk_pll_ops,
-+};
-+
-+static struct clk_ops jz_clk_pll_half_ops = {
-+ .get_rate = jz_clk_pll_half_get_rate,
-+};
-+
-+static struct clk jz_clk_pll_half = {
-+ .name = "pll half",
-+ .parent = &jz_clk_pll,
-+ .ops = &jz_clk_pll_half_ops,
-+};
-+
-+static const struct clk_ops jz_clk_main_ops = {
-+ .get_rate = jz_clk_main_get_rate,
-+ .set_rate = jz_clk_main_set_rate,
-+ .round_rate = jz_clk_main_round_rate,
-+};
-+
-+static struct main_clk jz_clk_cpu = {
-+ .clk = {
-+ .name = "cclk",
-+ .parent = &jz_clk_pll,
-+ .ops = &jz_clk_main_ops,
-+ },
-+ .div_offset = JZ_CLOCK_CTRL_CDIV_OFFSET,
-+};
-+
-+static struct main_clk jz_clk_memory = {
-+ .clk = {
-+ .name = "mclk",
-+ .parent = &jz_clk_pll,
-+ .ops = &jz_clk_main_ops,
-+ },
-+ .div_offset = JZ_CLOCK_CTRL_MDIV_OFFSET,
-+};
-+
-+static struct main_clk jz_clk_high_speed_peripheral = {
-+ .clk = {
-+ .name = "hclk",
-+ .parent = &jz_clk_pll,
-+ .ops = &jz_clk_main_ops,
-+ },
-+ .div_offset = JZ_CLOCK_CTRL_HDIV_OFFSET,
-+};
-+
-+
-+static struct main_clk jz_clk_low_speed_peripheral = {
-+ .clk = {
-+ .name = "pclk",
-+ .parent = &jz_clk_pll,
-+ .ops = &jz_clk_main_ops,
-+ },
-+ .div_offset = JZ_CLOCK_CTRL_PDIV_OFFSET,
-+};
-+
-+static const struct clk_ops jz_clk_ko_ops = {
-+ .enable = jz_clk_ko_enable,
-+ .disable = jz_clk_ko_disable,
-+ .is_enabled = jz_clk_ko_is_enabled,
-+};
-+
-+static struct clk jz_clk_ko = {
-+ .name = "cko",
-+ .parent = &jz_clk_memory.clk,
-+ .ops = &jz_clk_ko_ops,
-+};
-+
-+static int jz_clk_spi_set_parent(struct clk *clk, struct clk *parent)
-+{
-+ if (parent == &jz_clk_pll)
-+ jz_clk_reg_set_bits(JZ_CLOCK_SPI_SRC_PLL, JZ_REG_CLOCK_SPI);
-+ else if (parent == &jz_clk_ext.clk)
-+ jz_clk_reg_clear_bits(JZ_CLOCK_SPI_SRC_PLL, JZ_REG_CLOCK_SPI);
-+ else
-+ return -EINVAL;
-+
-+ clk->parent = parent;
-+
-+ return 0;
-+}
-+
-+static int jz_clk_i2s_set_parent(struct clk *clk, struct clk *parent)
-+{
-+ if (parent == &jz_clk_pll_half)
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_CTRL, JZ_CLOCK_CTRL_I2S_SRC_PLL);
-+ else if (parent == &jz_clk_ext.clk)
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_CTRL, JZ_CLOCK_CTRL_I2S_SRC_PLL);
-+ else
-+ return -EINVAL;
-+
-+ clk->parent = parent;
-+
-+ return 0;
-+}
-+
-+static int jz_clk_udc_enable(struct clk *clk)
-+{
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_SLEEP_CTRL,
-+ JZ_CLOCK_SLEEP_CTRL_ENABLE_UDC);
-+
-+ return 0;
-+}
-+
-+static int jz_clk_udc_disable(struct clk *clk)
-+{
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_SLEEP_CTRL,
-+ JZ_CLOCK_SLEEP_CTRL_ENABLE_UDC);
-+
-+ return 0;
-+}
-+
-+static int jz_clk_udc_is_enabled(struct clk *clk)
-+{
-+ return !!(jz_clk_reg_read(JZ_REG_CLOCK_SLEEP_CTRL) &
-+ JZ_CLOCK_SLEEP_CTRL_ENABLE_UDC);
-+}
-+
-+static int jz_clk_udc_set_parent(struct clk *clk, struct clk *parent)
-+{
-+ if (parent == &jz_clk_pll_half)
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_CTRL, JZ_CLOCK_CTRL_UDC_SRC_PLL);
-+ else if (parent == &jz_clk_ext.clk)
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_CTRL, JZ_CLOCK_CTRL_UDC_SRC_PLL);
-+ else
-+ return -EINVAL;
-+
-+ clk->parent = parent;
-+
-+ return 0;
-+}
-+
-+static int jz_clk_udc_set_rate(struct clk *clk, unsigned long rate)
-+{
-+ int div;
-+
-+ if (clk->parent == &jz_clk_ext.clk)
-+ return -EINVAL;
-+
-+ div = clk_get_rate(clk->parent) / rate - 1;
-+
-+ if (div < 0)
-+ div = 0;
-+ else if (div > 63)
-+ div = 63;
-+
-+ jz_clk_reg_write_mask(JZ_REG_CLOCK_CTRL, div << JZ_CLOCK_CTRL_UDIV_OFFSET,
-+ JZ_CLOCK_CTRL_UDIV_MASK);
-+ return 0;
-+}
-+
-+static unsigned long jz_clk_udc_get_rate(struct clk *clk)
-+{
-+ int div;
-+
-+ if (clk->parent == &jz_clk_ext.clk)
-+ return clk_get_rate(clk->parent);
-+
-+ div = (jz_clk_reg_read(JZ_REG_CLOCK_CTRL) & JZ_CLOCK_CTRL_UDIV_MASK);
-+ div >>= JZ_CLOCK_CTRL_UDIV_OFFSET;
-+ div += 1;
-+
-+ return clk_get_rate(clk->parent) / div;
-+}
-+
-+static unsigned long jz_clk_divided_get_rate(struct clk *clk)
-+{
-+ struct divided_clk *dclk = (struct divided_clk *)clk;
-+ int div;
-+
-+ if (clk->parent == &jz_clk_ext.clk)
-+ return clk_get_rate(clk->parent);
-+
-+ div = (jz_clk_reg_read(dclk->reg) & dclk->mask) + 1;
-+
-+ return clk_get_rate(clk->parent) / div;
-+}
-+
-+static int jz_clk_divided_set_rate(struct clk *clk, unsigned long rate)
-+{
-+ struct divided_clk *dclk = (struct divided_clk *)clk;
-+ int div;
-+
-+ if (clk->parent == &jz_clk_ext.clk)
-+ return -EINVAL;
-+
-+ div = clk_get_rate(clk->parent) / rate - 1;
-+
-+ if (div < 0)
-+ div = 0;
-+ else if (div > dclk->mask)
-+ div = dclk->mask;
-+
-+ jz_clk_reg_write_mask(dclk->reg, div, dclk->mask);
-+
-+ return 0;
-+}
-+
-+static unsigned long jz_clk_ldclk_round_rate(struct clk *clk, unsigned long rate)
-+{
-+ int div;
-+ unsigned long parent_rate = jz_clk_pll_half_get_rate(clk->parent);
-+
-+ if (rate > 150000000)
-+ return 150000000;
-+
-+ div = parent_rate / rate;
-+ if (div < 1)
-+ div = 1;
-+ else if (div > 32)
-+ div = 32;
-+
-+ return parent_rate / div;
-+}
-+
-+static int jz_clk_ldclk_set_rate(struct clk *clk, unsigned long rate)
-+{
-+ int div;
-+
-+ if (rate > 150000000)
-+ return -EINVAL;
-+
-+ div = jz_clk_pll_half_get_rate(clk->parent) / rate - 1;
-+ if (div < 0)
-+ div = 0;
-+ else if (div > 31)
-+ div = 31;
-+
-+ jz_clk_reg_write_mask(JZ_REG_CLOCK_CTRL, div << JZ_CLOCK_CTRL_LDIV_OFFSET,
-+ JZ_CLOCK_CTRL_LDIV_MASK);
-+
-+ return 0;
-+}
-+
-+static unsigned long jz_clk_ldclk_get_rate(struct clk *clk)
-+{
-+ int div;
-+
-+ div = jz_clk_reg_read(JZ_REG_CLOCK_CTRL) & JZ_CLOCK_CTRL_LDIV_MASK;
-+ div >>= JZ_CLOCK_CTRL_LDIV_OFFSET;
-+
-+ return jz_clk_pll_half_get_rate(clk->parent) / (div + 1);
-+}
-+
-+static const struct clk_ops jz_clk_ops_ld = {
-+ .set_rate = jz_clk_ldclk_set_rate,
-+ .get_rate = jz_clk_ldclk_get_rate,
-+ .round_rate = jz_clk_ldclk_round_rate,
-+ .enable = jz_clk_enable_gating,
-+ .disable = jz_clk_disable_gating,
-+ .is_enabled = jz_clk_is_enabled_gating,
-+};
-+
-+static struct clk jz_clk_ld = {
-+ .name = "lcd",
-+ .gate_bit = JZ_CLOCK_GATE_LCD,
-+ .parent = &jz_clk_pll_half,
-+ .ops = &jz_clk_ops_ld,
-+};
-+
-+static const struct clk_ops jz_clk_i2s_ops = {
-+ .set_rate = jz_clk_divided_set_rate,
-+ .get_rate = jz_clk_divided_get_rate,
-+ .enable = jz_clk_enable_gating,
-+ .disable = jz_clk_disable_gating,
-+ .is_enabled = jz_clk_is_enabled_gating,
-+ .set_parent = jz_clk_i2s_set_parent,
-+};
-+
-+static const struct clk_ops jz_clk_spi_ops = {
-+ .set_rate = jz_clk_divided_set_rate,
-+ .get_rate = jz_clk_divided_get_rate,
-+ .enable = jz_clk_enable_gating,
-+ .disable = jz_clk_disable_gating,
-+ .is_enabled = jz_clk_is_enabled_gating,
-+ .set_parent = jz_clk_spi_set_parent,
-+};
-+
-+static const struct clk_ops jz_clk_divided_ops = {
-+ .set_rate = jz_clk_divided_set_rate,
-+ .get_rate = jz_clk_divided_get_rate,
-+ .enable = jz_clk_enable_gating,
-+ .disable = jz_clk_disable_gating,
-+ .is_enabled = jz_clk_is_enabled_gating,
-+};
-+
-+static struct divided_clk jz4740_clock_divided_clks[] = {
-+ [0] = {
-+ .clk = {
-+ .name = "i2s",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_I2S,
-+ .ops = &jz_clk_i2s_ops,
-+ },
-+ .reg = JZ_REG_CLOCK_I2S,
-+ .mask = JZ_CLOCK_I2S_DIV_MASK,
-+ },
-+ [1] = {
-+ .clk = {
-+ .name = "spi",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_SPI,
-+ .ops = &jz_clk_spi_ops,
-+ },
-+ .reg = JZ_REG_CLOCK_SPI,
-+ .mask = JZ_CLOCK_SPI_DIV_MASK,
-+ },
-+ [2] = {
-+ .clk = {
-+ .name = "lcd_pclk",
-+ .parent = &jz_clk_pll_half,
-+ .gate_bit = JZ4740_CLK_NOT_GATED,
-+ .ops = &jz_clk_divided_ops,
-+ },
-+ .reg = JZ_REG_CLOCK_LCD,
-+ .mask = JZ_CLOCK_LCD_DIV_MASK,
-+ },
-+ [3] = {
-+ .clk = {
-+ .name = "mmc",
-+ .parent = &jz_clk_pll_half,
-+ .gate_bit = JZ_CLOCK_GATE_MMC,
-+ .ops = &jz_clk_divided_ops,
-+ },
-+ .reg = JZ_REG_CLOCK_MMC,
-+ .mask = JZ_CLOCK_MMC_DIV_MASK,
-+ },
-+ [4] = {
-+ .clk = {
-+ .name = "uhc",
-+ .parent = &jz_clk_pll_half,
-+ .gate_bit = JZ_CLOCK_GATE_UHC,
-+ .ops = &jz_clk_divided_ops,
-+ },
-+ .reg = JZ_REG_CLOCK_UHC,
-+ .mask = JZ_CLOCK_UHC_DIV_MASK,
-+ },
-+};
-+
-+static const struct clk_ops jz_clk_udc_ops = {
-+ .set_parent = jz_clk_udc_set_parent,
-+ .set_rate = jz_clk_udc_set_rate,
-+ .get_rate = jz_clk_udc_get_rate,
-+ .enable = jz_clk_udc_enable,
-+ .disable = jz_clk_udc_disable,
-+ .is_enabled = jz_clk_udc_is_enabled,
-+};
-+
-+static const struct clk_ops jz_clk_simple_ops = {
-+ .enable = jz_clk_enable_gating,
-+ .disable = jz_clk_disable_gating,
-+ .is_enabled = jz_clk_is_enabled_gating,
-+};
-+
-+static struct clk jz4740_clock_simple_clks[] = {
-+ [0] = {
-+ .name = "udc",
-+ .parent = &jz_clk_ext.clk,
-+ .ops = &jz_clk_udc_ops,
-+ },
-+ [1] = {
-+ .name = "uart0",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_UART0,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+ [2] = {
-+ .name = "uart1",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_UART1,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+ [3] = {
-+ .name = "dma",
-+ .parent = &jz_clk_high_speed_peripheral.clk,
-+ .gate_bit = JZ_CLOCK_GATE_UART0,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+ [4] = {
-+ .name = "ipu",
-+ .parent = &jz_clk_high_speed_peripheral.clk,
-+ .gate_bit = JZ_CLOCK_GATE_IPU,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+ [5] = {
-+ .name = "adc",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_ADC,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+ [6] = {
-+ .name = "i2c",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_I2C,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+ [7] = {
-+ .name = "aic",
-+ .parent = &jz_clk_ext.clk,
-+ .gate_bit = JZ_CLOCK_GATE_AIC,
-+ .ops = &jz_clk_simple_ops,
-+ },
-+};
-+
-+static struct static_clk jz_clk_rtc = {
-+ .clk = {
-+ .name = "rtc",
-+ .gate_bit = JZ_CLOCK_GATE_RTC,
-+ .ops = &jz_clk_static_ops,
-+ },
-+ .rate = 32768,
-+};
-+
-+int clk_enable(struct clk *clk)
-+{
-+ if (!clk->ops->enable)
-+ return -EINVAL;
-+
-+ return clk->ops->enable(clk);
-+}
-+EXPORT_SYMBOL_GPL(clk_enable);
-+
-+void clk_disable(struct clk *clk)
-+{
-+ if (clk->ops->disable)
-+ clk->ops->disable(clk);
-+}
-+EXPORT_SYMBOL_GPL(clk_disable);
-+
-+int clk_is_enabled(struct clk *clk)
-+{
-+ if (clk->ops->is_enabled)
-+ return clk->ops->is_enabled(clk);
-+
-+ return 1;
-+}
-+
-+unsigned long clk_get_rate(struct clk *clk)
-+{
-+ if (clk->ops->get_rate)
-+ return clk->ops->get_rate(clk);
-+ if (clk->parent)
-+ return clk_get_rate(clk->parent);
-+
-+ return -EINVAL;
-+}
-+EXPORT_SYMBOL_GPL(clk_get_rate);
-+
-+int clk_set_rate(struct clk *clk, unsigned long rate)
-+{
-+ if (!clk->ops->set_rate)
-+ return -EINVAL;
-+ return clk->ops->set_rate(clk, rate);
-+}
-+EXPORT_SYMBOL_GPL(clk_set_rate);
-+
-+long clk_round_rate(struct clk *clk, unsigned long rate)
-+{
-+ if (clk->ops->round_rate)
-+ return clk->ops->round_rate(clk, rate);
-+
-+ return -EINVAL;
-+}
-+EXPORT_SYMBOL_GPL(clk_round_rate);
-+
-+int clk_set_parent(struct clk *clk, struct clk *parent)
-+{
-+ int ret;
-+ int enabled;
-+
-+ if (!clk->ops->set_parent)
-+ return -EINVAL;
-+
-+ enabled = clk_is_enabled(clk);
-+ if (enabled)
-+ clk_disable(clk);
-+ ret = clk->ops->set_parent(clk, parent);
-+ if (enabled)
-+ clk_enable(clk);
-+
-+ jz4740_clock_debugfs_update_parent(clk);
-+
-+ return ret;
-+}
-+EXPORT_SYMBOL_GPL(clk_set_parent);
-+
-+struct clk *clk_get(struct device *dev, const char *name)
-+{
-+ struct clk *clk;
-+
-+ list_for_each_entry(clk, &jz_clocks, list) {
-+ if (strcmp(clk->name, name) == 0)
-+ return clk;
-+ }
-+ return ERR_PTR(-ENXIO);
-+}
-+EXPORT_SYMBOL_GPL(clk_get);
-+
-+void clk_put(struct clk *clk)
-+{
-+}
-+EXPORT_SYMBOL_GPL(clk_put);
-+
-+static inline void clk_add(struct clk *clk)
-+{
-+ list_add_tail(&clk->list, &jz_clocks);
-+
-+ jz4740_clock_debugfs_add_clk(clk);
-+}
-+
-+static void clk_register_clks(void)
-+{
-+ size_t i;
-+
-+ clk_add(&jz_clk_ext.clk);
-+ clk_add(&jz_clk_pll);
-+ clk_add(&jz_clk_pll_half);
-+ clk_add(&jz_clk_cpu.clk);
-+ clk_add(&jz_clk_high_speed_peripheral.clk);
-+ clk_add(&jz_clk_low_speed_peripheral.clk);
-+ clk_add(&jz_clk_ko);
-+ clk_add(&jz_clk_ld);
-+ clk_add(&jz_clk_rtc.clk);
-+
-+ for (i = 0; i < ARRAY_SIZE(jz4740_clock_divided_clks); ++i)
-+ clk_add(&jz4740_clock_divided_clks[i].clk);
-+
-+ for (i = 0; i < ARRAY_SIZE(jz4740_clock_simple_clks); ++i)
-+ clk_add(&jz4740_clock_simple_clks[i]);
-+}
-+
-+void jz4740_clock_set_wait_mode(enum jz4740_wait_mode mode)
-+{
-+ switch (mode) {
-+ case JZ4740_WAIT_MODE_IDLE:
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_LOW_POWER, JZ_CLOCK_LOW_POWER_MODE_SLEEP);
-+ break;
-+ case JZ4740_WAIT_MODE_SLEEP:
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_LOW_POWER, JZ_CLOCK_LOW_POWER_MODE_SLEEP);
-+ break;
-+ }
-+}
-+
-+void jz4740_clock_udc_disable_auto_suspend(void)
-+{
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_GATE, JZ_CLOCK_GATE_UDC);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_clock_udc_disable_auto_suspend);
-+
-+void jz4740_clock_udc_enable_auto_suspend(void)
-+{
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_GATE, JZ_CLOCK_GATE_UDC);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_clock_udc_enable_auto_suspend);
-+
-+void jz4740_clock_suspend(void)
-+{
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_GATE,
-+ JZ_CLOCK_GATE_TCU | JZ_CLOCK_GATE_DMAC | JZ_CLOCK_GATE_UART0);
-+
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_PLL, JZ_CLOCK_PLL_ENABLED);
-+}
-+
-+void jz4740_clock_resume(void)
-+{
-+ uint32_t pll;
-+
-+ jz_clk_reg_set_bits(JZ_REG_CLOCK_PLL, JZ_CLOCK_PLL_ENABLED);
-+
-+ do {
-+ pll = jz_clk_reg_read(JZ_REG_CLOCK_PLL);
-+ } while (!(pll & JZ_CLOCK_PLL_STABLE));
-+
-+ jz_clk_reg_clear_bits(JZ_REG_CLOCK_GATE,
-+ JZ_CLOCK_GATE_TCU | JZ_CLOCK_GATE_DMAC | JZ_CLOCK_GATE_UART0);
-+}
-+
-+static int jz4740_clock_init(void)
-+{
-+ uint32_t val;
-+
-+ jz_clock_base = ioremap(JZ4740_CPM_BASE_ADDR, 0x100);
-+ if (!jz_clock_base)
-+ return -EBUSY;
-+
-+ spin_lock_init(&jz_clock_lock);
-+
-+ jz_clk_ext.rate = jz4740_clock_bdata.ext_rate;
-+ jz_clk_rtc.rate = jz4740_clock_bdata.rtc_rate;
-+
-+ val = jz_clk_reg_read(JZ_REG_CLOCK_SPI);
-+
-+ if (val & JZ_CLOCK_SPI_SRC_PLL)
-+ jz4740_clock_divided_clks[1].clk.parent = &jz_clk_pll_half;
-+
-+ val = jz_clk_reg_read(JZ_REG_CLOCK_CTRL);
-+
-+ if (val & JZ_CLOCK_CTRL_I2S_SRC_PLL)
-+ jz4740_clock_divided_clks[0].clk.parent = &jz_clk_pll_half;
-+
-+ if (val & JZ_CLOCK_CTRL_UDC_SRC_PLL)
-+ jz4740_clock_simple_clks[0].parent = &jz_clk_pll_half;
-+
-+ jz4740_clock_debugfs_init();
-+
-+ clk_register_clks();
-+
-+ return 0;
-+}
-+arch_initcall(jz4740_clock_init);
---- /dev/null
-+++ b/arch/mips/jz4740/clock.h
-@@ -0,0 +1,76 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC clock support
-+ *
-+ * 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.
-+ *
-+ * 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 __MIPS_JZ4740_CLOCK_H__
-+#define __MIPS_JZ4740_CLOCK_H__
-+
-+#include <linux/list.h>
-+
-+struct jz4740_clock_board_data {
-+ unsigned long ext_rate;
-+ unsigned long rtc_rate;
-+};
-+
-+extern struct jz4740_clock_board_data jz4740_clock_bdata;
-+
-+void jz4740_clock_suspend(void);
-+void jz4740_clock_resume(void);
-+
-+struct clk;
-+
-+struct clk_ops {
-+ unsigned long (*get_rate)(struct clk *clk);
-+ unsigned long (*round_rate)(struct clk *clk, unsigned long rate);
-+ int (*set_rate)(struct clk *clk, unsigned long rate);
-+ int (*enable)(struct clk *clk);
-+ int (*disable)(struct clk *clk);
-+ int (*is_enabled)(struct clk *clk);
-+
-+ int (*set_parent)(struct clk *clk, struct clk *parent);
-+
-+};
-+
-+struct clk {
-+ const char *name;
-+ struct clk *parent;
-+
-+ uint32_t gate_bit;
-+
-+ const struct clk_ops *ops;
-+
-+ struct list_head list;
-+
-+#ifdef CONFIG_DEBUG_FS
-+ struct dentry *debugfs_entry;
-+ struct dentry *debugfs_parent_entry;
-+#endif
-+
-+};
-+
-+#define JZ4740_CLK_NOT_GATED ((uint32_t)-1)
-+
-+int clk_is_enabled(struct clk *clk);
-+
-+#ifdef CONFIG_DEBUG_FS
-+void jz4740_clock_debugfs_init(void);
-+void jz4740_clock_debugfs_add_clk(struct clk *clk);
-+void jz4740_clock_debugfs_update_parent(struct clk *clk);
-+#else
-+static inline void jz4740_clock_debugfs_init(void) {};
-+static inline void jz4740_clock_debugfs_add_clk(struct clk *clk) {};
-+static inline void jz4740_clock_debugfs_update_parent(struct clk *clk) {};
-+#endif
-+
-+#endif
diff --git a/target/linux/xburst/patches-2.6.35/004-irq.patch b/target/linux/xburst/patches-2.6.35/004-irq.patch
deleted file mode 100644
index daed91b533..0000000000
--- a/target/linux/xburst/patches-2.6.35/004-irq.patch
+++ /dev/null
@@ -1,275 +0,0 @@
-From f6a9c8215a4553357b8a1939fafb2d6dfbacf944 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 17 Jul 2010 11:08:43 +0000
-Subject: [PATCH] MIPS: JZ4740: Add IRQ handler code
-
-Add support for IRQ handling on a JZ4740 SoC.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1465/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/include/asm/mach-jz4740/irq.h | 57 +++++++++++
- arch/mips/jz4740/irq.c | 167 +++++++++++++++++++++++++++++++
- arch/mips/jz4740/irq.h | 21 ++++
- 3 files changed, 245 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/irq.h
- create mode 100644 arch/mips/jz4740/irq.c
- create mode 100644 arch/mips/jz4740/irq.h
-
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/irq.h
-@@ -0,0 +1,57 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 IRQ definitions
-+ *
-+ * 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.
-+ *
-+ * 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 __ASM_MACH_JZ4740_IRQ_H__
-+#define __ASM_MACH_JZ4740_IRQ_H__
-+
-+#define MIPS_CPU_IRQ_BASE 0
-+#define JZ4740_IRQ_BASE 8
-+
-+/* 1st-level interrupts */
-+#define JZ4740_IRQ(x) (JZ4740_IRQ_BASE + (x))
-+#define JZ4740_IRQ_I2C JZ4740_IRQ(1)
-+#define JZ4740_IRQ_UHC JZ4740_IRQ(3)
-+#define JZ4740_IRQ_UART1 JZ4740_IRQ(8)
-+#define JZ4740_IRQ_UART0 JZ4740_IRQ(9)
-+#define JZ4740_IRQ_SADC JZ4740_IRQ(12)
-+#define JZ4740_IRQ_MSC JZ4740_IRQ(14)
-+#define JZ4740_IRQ_RTC JZ4740_IRQ(15)
-+#define JZ4740_IRQ_SSI JZ4740_IRQ(16)
-+#define JZ4740_IRQ_CIM JZ4740_IRQ(17)
-+#define JZ4740_IRQ_AIC JZ4740_IRQ(18)
-+#define JZ4740_IRQ_ETH JZ4740_IRQ(19)
-+#define JZ4740_IRQ_DMAC JZ4740_IRQ(20)
-+#define JZ4740_IRQ_TCU2 JZ4740_IRQ(21)
-+#define JZ4740_IRQ_TCU1 JZ4740_IRQ(22)
-+#define JZ4740_IRQ_TCU0 JZ4740_IRQ(23)
-+#define JZ4740_IRQ_UDC JZ4740_IRQ(24)
-+#define JZ4740_IRQ_GPIO3 JZ4740_IRQ(25)
-+#define JZ4740_IRQ_GPIO2 JZ4740_IRQ(26)
-+#define JZ4740_IRQ_GPIO1 JZ4740_IRQ(27)
-+#define JZ4740_IRQ_GPIO0 JZ4740_IRQ(28)
-+#define JZ4740_IRQ_IPU JZ4740_IRQ(29)
-+#define JZ4740_IRQ_LCD JZ4740_IRQ(30)
-+
-+/* 2nd-level interrupts */
-+#define JZ4740_IRQ_DMA(x) (JZ4740_IRQ(32) + (X))
-+
-+#define JZ4740_IRQ_INTC_GPIO(x) (JZ4740_IRQ_GPIO0 - (x))
-+#define JZ4740_IRQ_GPIO(x) (JZ4740_IRQ(48) + (x))
-+
-+#define JZ4740_IRQ_ADC_BASE JZ4740_IRQ(176)
-+
-+#define NR_IRQS (JZ4740_IRQ_ADC_BASE + 6)
-+
-+#endif
---- /dev/null
-+++ b/arch/mips/jz4740/irq.c
-@@ -0,0 +1,167 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform IRQ support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/errno.h>
-+#include <linux/init.h>
-+#include <linux/types.h>
-+#include <linux/interrupt.h>
-+#include <linux/ioport.h>
-+#include <linux/timex.h>
-+#include <linux/slab.h>
-+#include <linux/delay.h>
-+
-+#include <linux/debugfs.h>
-+#include <linux/seq_file.h>
-+
-+#include <asm/io.h>
-+#include <asm/mipsregs.h>
-+#include <asm/irq_cpu.h>
-+
-+#include <asm/mach-jz4740/base.h>
-+
-+static void __iomem *jz_intc_base;
-+static uint32_t jz_intc_wakeup;
-+static uint32_t jz_intc_saved;
-+
-+#define JZ_REG_INTC_STATUS 0x00
-+#define JZ_REG_INTC_MASK 0x04
-+#define JZ_REG_INTC_SET_MASK 0x08
-+#define JZ_REG_INTC_CLEAR_MASK 0x0c
-+#define JZ_REG_INTC_PENDING 0x10
-+
-+#define IRQ_BIT(x) BIT((x) - JZ4740_IRQ_BASE)
-+
-+static void intc_irq_unmask(unsigned int irq)
-+{
-+ writel(IRQ_BIT(irq), jz_intc_base + JZ_REG_INTC_CLEAR_MASK);
-+}
-+
-+static void intc_irq_mask(unsigned int irq)
-+{
-+ writel(IRQ_BIT(irq), jz_intc_base + JZ_REG_INTC_SET_MASK);
-+}
-+
-+static int intc_irq_set_wake(unsigned int irq, unsigned int on)
-+{
-+ if (on)
-+ jz_intc_wakeup |= IRQ_BIT(irq);
-+ else
-+ jz_intc_wakeup &= ~IRQ_BIT(irq);
-+
-+ return 0;
-+}
-+
-+static struct irq_chip intc_irq_type = {
-+ .name = "INTC",
-+ .mask = intc_irq_mask,
-+ .mask_ack = intc_irq_mask,
-+ .unmask = intc_irq_unmask,
-+ .set_wake = intc_irq_set_wake,
-+};
-+
-+static irqreturn_t jz4740_cascade(int irq, void *data)
-+{
-+ uint32_t irq_reg;
-+
-+ irq_reg = readl(jz_intc_base + JZ_REG_INTC_PENDING);
-+
-+ if (irq_reg)
-+ generic_handle_irq(__fls(irq_reg) + JZ4740_IRQ_BASE);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static struct irqaction jz4740_cascade_action = {
-+ .handler = jz4740_cascade,
-+ .name = "JZ4740 cascade interrupt",
-+};
-+
-+void __init arch_init_irq(void)
-+{
-+ int i;
-+ mips_cpu_irq_init();
-+
-+ jz_intc_base = ioremap(JZ4740_INTC_BASE_ADDR, 0x14);
-+
-+ for (i = JZ4740_IRQ_BASE; i < JZ4740_IRQ_BASE + 32; i++) {
-+ intc_irq_mask(i);
-+ set_irq_chip_and_handler(i, &intc_irq_type, handle_level_irq);
-+ }
-+
-+ setup_irq(2, &jz4740_cascade_action);
-+}
-+
-+asmlinkage void plat_irq_dispatch(void)
-+{
-+ unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM;
-+ if (pending & STATUSF_IP2)
-+ do_IRQ(2);
-+ else if (pending & STATUSF_IP3)
-+ do_IRQ(3);
-+ else
-+ spurious_interrupt();
-+}
-+
-+void jz4740_intc_suspend(void)
-+{
-+ jz_intc_saved = readl(jz_intc_base + JZ_REG_INTC_MASK);
-+ writel(~jz_intc_wakeup, jz_intc_base + JZ_REG_INTC_SET_MASK);
-+ writel(jz_intc_wakeup, jz_intc_base + JZ_REG_INTC_CLEAR_MASK);
-+}
-+
-+void jz4740_intc_resume(void)
-+{
-+ writel(~jz_intc_saved, jz_intc_base + JZ_REG_INTC_CLEAR_MASK);
-+ writel(jz_intc_saved, jz_intc_base + JZ_REG_INTC_SET_MASK);
-+}
-+
-+#ifdef CONFIG_DEBUG_FS
-+
-+static inline void intc_seq_reg(struct seq_file *s, const char *name,
-+ unsigned int reg)
-+{
-+ seq_printf(s, "%s:\t\t%08x\n", name, readl(jz_intc_base + reg));
-+}
-+
-+static int intc_regs_show(struct seq_file *s, void *unused)
-+{
-+ intc_seq_reg(s, "Status", JZ_REG_INTC_STATUS);
-+ intc_seq_reg(s, "Mask", JZ_REG_INTC_MASK);
-+ intc_seq_reg(s, "Pending", JZ_REG_INTC_PENDING);
-+
-+ return 0;
-+}
-+
-+static int intc_regs_open(struct inode *inode, struct file *file)
-+{
-+ return single_open(file, intc_regs_show, NULL);
-+}
-+
-+static const struct file_operations intc_regs_operations = {
-+ .open = intc_regs_open,
-+ .read = seq_read,
-+ .llseek = seq_lseek,
-+ .release = single_release,
-+};
-+
-+static int __init intc_debugfs_init(void)
-+{
-+ (void) debugfs_create_file("jz_regs_intc", S_IFREG | S_IRUGO,
-+ NULL, NULL, &intc_regs_operations);
-+ return 0;
-+}
-+subsys_initcall(intc_debugfs_init);
-+
-+#endif
---- /dev/null
-+++ b/arch/mips/jz4740/irq.h
-@@ -0,0 +1,21 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * 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 __MIPS_JZ4740_IRQ_H__
-+#define __MIPS_JZ4740_IRQ_H__
-+
-+extern void jz4740_intc_suspend(void);
-+extern void jz4740_intc_resume(void);
-+
-+#endif
diff --git a/target/linux/xburst/patches-2.6.35/005-timer.patch b/target/linux/xburst/patches-2.6.35/005-timer.patch
deleted file mode 100644
index 2e117de4b6..0000000000
--- a/target/linux/xburst/patches-2.6.35/005-timer.patch
+++ /dev/null
@@ -1,238 +0,0 @@
-From ad817ad0a57d0fa6041071395d4cf0d2e9a44635 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 19 Jun 2010 04:08:09 +0000
-Subject: [PATCH] MIPS: JZ4740: Add timer support
-
-Add support for the timer/counter unit on a JZ4740 SoC. This code is used
-as a common base for the JZ4740 clocksource/clockevent implementation and
-PWM support.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1396/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/include/asm/mach-jz4740/timer.h | 22 +++++
- arch/mips/jz4740/timer.c | 48 ++++++++++
- arch/mips/jz4740/timer.h | 136 +++++++++++++++++++++++++++++
- 3 files changed, 206 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/timer.h
- create mode 100644 arch/mips/jz4740/timer.c
- create mode 100644 arch/mips/jz4740/timer.h
-
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/timer.h
-@@ -0,0 +1,22 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform timer support
-+ *
-+ * 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.
-+ *
-+ * 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 __ASM_MACH_JZ4740_TIMER
-+#define __ASM_MACH_JZ4740_TIMER
-+
-+void jz4740_timer_enable_watchdog(void);
-+void jz4740_timer_disable_watchdog(void);
-+
-+#endif
---- /dev/null
-+++ b/arch/mips/jz4740/timer.c
-@@ -0,0 +1,48 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform timer support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/io.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+
-+#include "timer.h"
-+
-+#include <asm/mach-jz4740/base.h>
-+
-+void __iomem *jz4740_timer_base;
-+
-+void jz4740_timer_enable_watchdog(void)
-+{
-+ writel(BIT(16), jz4740_timer_base + JZ_REG_TIMER_STOP_CLEAR);
-+}
-+
-+void jz4740_timer_disable_watchdog(void)
-+{
-+ writel(BIT(16), jz4740_timer_base + JZ_REG_TIMER_STOP_SET);
-+}
-+
-+void __init jz4740_timer_init(void)
-+{
-+ jz4740_timer_base = ioremap(JZ4740_TCU_BASE_ADDR, 0x100);
-+
-+ if (!jz4740_timer_base)
-+ panic("Failed to ioremap timer registers");
-+
-+ /* Disable all timer clocks except for those used as system timers */
-+ writel(0x000100fc, jz4740_timer_base + JZ_REG_TIMER_STOP_SET);
-+
-+ /* Timer irqs are unmasked by default, mask them */
-+ writel(0x00ff00ff, jz4740_timer_base + JZ_REG_TIMER_MASK_SET);
-+}
---- /dev/null
-+++ b/arch/mips/jz4740/timer.h
-@@ -0,0 +1,136 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform timer support
-+ *
-+ * 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.
-+ *
-+ * 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 __MIPS_JZ4740_TIMER_H__
-+#define __MIPS_JZ4740_TIMER_H__
-+
-+#include <linux/module.h>
-+#include <linux/io.h>
-+
-+#define JZ_REG_TIMER_STOP 0x0C
-+#define JZ_REG_TIMER_STOP_SET 0x1C
-+#define JZ_REG_TIMER_STOP_CLEAR 0x2C
-+#define JZ_REG_TIMER_ENABLE 0x00
-+#define JZ_REG_TIMER_ENABLE_SET 0x04
-+#define JZ_REG_TIMER_ENABLE_CLEAR 0x08
-+#define JZ_REG_TIMER_FLAG 0x10
-+#define JZ_REG_TIMER_FLAG_SET 0x14
-+#define JZ_REG_TIMER_FLAG_CLEAR 0x18
-+#define JZ_REG_TIMER_MASK 0x20
-+#define JZ_REG_TIMER_MASK_SET 0x24
-+#define JZ_REG_TIMER_MASK_CLEAR 0x28
-+
-+#define JZ_REG_TIMER_DFR(x) (((x) * 0x10) + 0x30)
-+#define JZ_REG_TIMER_DHR(x) (((x) * 0x10) + 0x34)
-+#define JZ_REG_TIMER_CNT(x) (((x) * 0x10) + 0x38)
-+#define JZ_REG_TIMER_CTRL(x) (((x) * 0x10) + 0x3C)
-+
-+#define JZ_TIMER_IRQ_HALF(x) BIT((x) + 0x10)
-+#define JZ_TIMER_IRQ_FULL(x) BIT(x)
-+
-+#define JZ_TIMER_CTRL_PWM_ABBRUPT_SHUTDOWN BIT(9)
-+#define JZ_TIMER_CTRL_PWM_ACTIVE_LOW BIT(8)
-+#define JZ_TIMER_CTRL_PWM_ENABLE BIT(7)
-+#define JZ_TIMER_CTRL_PRESCALE_MASK 0x1c
-+#define JZ_TIMER_CTRL_PRESCALE_OFFSET 0x3
-+#define JZ_TIMER_CTRL_PRESCALE_1 (0 << 3)
-+#define JZ_TIMER_CTRL_PRESCALE_4 (1 << 3)
-+#define JZ_TIMER_CTRL_PRESCALE_16 (2 << 3)
-+#define JZ_TIMER_CTRL_PRESCALE_64 (3 << 3)
-+#define JZ_TIMER_CTRL_PRESCALE_256 (4 << 3)
-+#define JZ_TIMER_CTRL_PRESCALE_1024 (5 << 3)
-+
-+#define JZ_TIMER_CTRL_PRESCALER(x) ((x) << JZ_TIMER_CTRL_PRESCALE_OFFSET)
-+
-+#define JZ_TIMER_CTRL_SRC_EXT BIT(2)
-+#define JZ_TIMER_CTRL_SRC_RTC BIT(1)
-+#define JZ_TIMER_CTRL_SRC_PCLK BIT(0)
-+
-+extern void __iomem *jz4740_timer_base;
-+void __init jz4740_timer_init(void);
-+
-+static inline void jz4740_timer_stop(unsigned int timer)
-+{
-+ writel(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_STOP_SET);
-+}
-+
-+static inline void jz4740_timer_start(unsigned int timer)
-+{
-+ writel(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_STOP_CLEAR);
-+}
-+
-+static inline bool jz4740_timer_is_enabled(unsigned int timer)
-+{
-+ return readb(jz4740_timer_base + JZ_REG_TIMER_ENABLE) & BIT(timer);
-+}
-+
-+static inline void jz4740_timer_enable(unsigned int timer)
-+{
-+ writeb(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_ENABLE_SET);
-+}
-+
-+static inline void jz4740_timer_disable(unsigned int timer)
-+{
-+ writeb(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_ENABLE_CLEAR);
-+}
-+
-+
-+static inline void jz4740_timer_set_period(unsigned int timer, uint16_t period)
-+{
-+ writew(period, jz4740_timer_base + JZ_REG_TIMER_DFR(timer));
-+}
-+
-+static inline void jz4740_timer_set_duty(unsigned int timer, uint16_t duty)
-+{
-+ writew(duty, jz4740_timer_base + JZ_REG_TIMER_DHR(timer));
-+}
-+
-+static inline void jz4740_timer_set_count(unsigned int timer, uint16_t count)
-+{
-+ writew(count, jz4740_timer_base + JZ_REG_TIMER_CNT(timer));
-+}
-+
-+static inline uint16_t jz4740_timer_get_count(unsigned int timer)
-+{
-+ return readw(jz4740_timer_base + JZ_REG_TIMER_CNT(timer));
-+}
-+
-+static inline void jz4740_timer_ack_full(unsigned int timer)
-+{
-+ writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_FLAG_CLEAR);
-+}
-+
-+static inline void jz4740_timer_irq_full_enable(unsigned int timer)
-+{
-+ writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_FLAG_CLEAR);
-+ writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_MASK_CLEAR);
-+}
-+
-+static inline void jz4740_timer_irq_full_disable(unsigned int timer)
-+{
-+ writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_MASK_SET);
-+}
-+
-+static inline void jz4740_timer_set_ctrl(unsigned int timer, uint16_t ctrl)
-+{
-+ writew(ctrl, jz4740_timer_base + JZ_REG_TIMER_CTRL(timer));
-+}
-+
-+static inline uint16_t jz4740_timer_get_ctrl(unsigned int timer)
-+{
-+ return readw(jz4740_timer_base + JZ_REG_TIMER_CTRL(timer));
-+}
-+
-+#endif
diff --git a/target/linux/xburst/patches-2.6.35/006-clocksource.patch b/target/linux/xburst/patches-2.6.35/006-clocksource.patch
deleted file mode 100644
index dfb31c1fe9..0000000000
--- a/target/linux/xburst/patches-2.6.35/006-clocksource.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-From ebf176a38105200dca51a96ad1535c8d56235653 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 19 Jun 2010 04:08:10 +0000
-Subject: [PATCH] MIPS: JZ4740: Add clocksource/clockevent support.
-
-Add clocksource and clockevent support for the timer/counter unit on
-JZ4740 SoCs.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1397/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/jz4740/time.c | 144 +++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 144 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/jz4740/time.c
-
---- /dev/null
-+++ b/arch/mips/jz4740/time.c
-@@ -0,0 +1,144 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform time support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/interrupt.h>
-+#include <linux/kernel.h>
-+#include <linux/time.h>
-+
-+#include <linux/clockchips.h>
-+
-+#include <asm/mach-jz4740/irq.h>
-+#include <asm/time.h>
-+
-+#include "clock.h"
-+#include "timer.h"
-+
-+#define TIMER_CLOCKEVENT 0
-+#define TIMER_CLOCKSOURCE 1
-+
-+static uint16_t jz4740_jiffies_per_tick;
-+
-+static cycle_t jz4740_clocksource_read(struct clocksource *cs)
-+{
-+ return jz4740_timer_get_count(TIMER_CLOCKSOURCE);
-+}
-+
-+static struct clocksource jz4740_clocksource = {
-+ .name = "jz4740-timer",
-+ .rating = 200,
-+ .read = jz4740_clocksource_read,
-+ .mask = CLOCKSOURCE_MASK(16),
-+ .flags = CLOCK_SOURCE_IS_CONTINUOUS,
-+};
-+
-+static irqreturn_t jz4740_clockevent_irq(int irq, void *devid)
-+{
-+ struct clock_event_device *cd = devid;
-+
-+ jz4740_timer_ack_full(TIMER_CLOCKEVENT);
-+
-+ if (cd->mode != CLOCK_EVT_MODE_PERIODIC)
-+ jz4740_timer_disable(TIMER_CLOCKEVENT);
-+
-+ cd->event_handler(cd);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void jz4740_clockevent_set_mode(enum clock_event_mode mode,
-+ struct clock_event_device *cd)
-+{
-+ switch (mode) {
-+ case CLOCK_EVT_MODE_PERIODIC:
-+ jz4740_timer_set_count(TIMER_CLOCKEVENT, 0);
-+ jz4740_timer_set_period(TIMER_CLOCKEVENT, jz4740_jiffies_per_tick);
-+ case CLOCK_EVT_MODE_RESUME:
-+ jz4740_timer_irq_full_enable(TIMER_CLOCKEVENT);
-+ jz4740_timer_enable(TIMER_CLOCKEVENT);
-+ break;
-+ case CLOCK_EVT_MODE_ONESHOT:
-+ case CLOCK_EVT_MODE_SHUTDOWN:
-+ jz4740_timer_disable(TIMER_CLOCKEVENT);
-+ break;
-+ default:
-+ break;
-+ }
-+}
-+
-+static int jz4740_clockevent_set_next(unsigned long evt,
-+ struct clock_event_device *cd)
-+{
-+ jz4740_timer_set_count(TIMER_CLOCKEVENT, 0);
-+ jz4740_timer_set_period(TIMER_CLOCKEVENT, evt);
-+ jz4740_timer_enable(TIMER_CLOCKEVENT);
-+
-+ return 0;
-+}
-+
-+static struct clock_event_device jz4740_clockevent = {
-+ .name = "jz4740-timer",
-+ .features = CLOCK_EVT_FEAT_PERIODIC,
-+ .set_next_event = jz4740_clockevent_set_next,
-+ .set_mode = jz4740_clockevent_set_mode,
-+ .rating = 200,
-+ .irq = JZ4740_IRQ_TCU0,
-+};
-+
-+static struct irqaction timer_irqaction = {
-+ .handler = jz4740_clockevent_irq,
-+ .flags = IRQF_PERCPU | IRQF_TIMER,
-+ .name = "jz4740-timerirq",
-+ .dev_id = &jz4740_clockevent,
-+};
-+
-+void __init plat_time_init(void)
-+{
-+ int ret;
-+ uint32_t clk_rate;
-+ uint16_t ctrl;
-+
-+ jz4740_timer_init();
-+
-+ clk_rate = jz4740_clock_bdata.ext_rate >> 4;
-+ jz4740_jiffies_per_tick = DIV_ROUND_CLOSEST(clk_rate, HZ);
-+
-+ clockevent_set_clock(&jz4740_clockevent, clk_rate);
-+ jz4740_clockevent.min_delta_ns = clockevent_delta2ns(100, &jz4740_clockevent);
-+ jz4740_clockevent.max_delta_ns = clockevent_delta2ns(0xffff, &jz4740_clockevent);
-+ jz4740_clockevent.cpumask = cpumask_of(0);
-+
-+ clockevents_register_device(&jz4740_clockevent);
-+
-+ clocksource_set_clock(&jz4740_clocksource, clk_rate);
-+ ret = clocksource_register(&jz4740_clocksource);
-+
-+ if (ret)
-+ printk(KERN_ERR "Failed to register clocksource: %d\n", ret);
-+
-+ setup_irq(JZ4740_IRQ_TCU0, &timer_irqaction);
-+
-+ ctrl = JZ_TIMER_CTRL_PRESCALE_16 | JZ_TIMER_CTRL_SRC_EXT;
-+
-+ jz4740_timer_set_ctrl(TIMER_CLOCKEVENT, ctrl);
-+ jz4740_timer_set_ctrl(TIMER_CLOCKSOURCE, ctrl);
-+
-+ jz4740_timer_set_period(TIMER_CLOCKEVENT, jz4740_jiffies_per_tick);
-+ jz4740_timer_irq_full_enable(TIMER_CLOCKEVENT);
-+
-+ jz4740_timer_set_period(TIMER_CLOCKSOURCE, 0xffff);
-+
-+ jz4740_timer_enable(TIMER_CLOCKEVENT);
-+ jz4740_timer_enable(TIMER_CLOCKSOURCE);
-+}
diff --git a/target/linux/xburst/patches-2.6.35/007-power-management.patch b/target/linux/xburst/patches-2.6.35/007-power-management.patch
deleted file mode 100644
index f69fce347b..0000000000
--- a/target/linux/xburst/patches-2.6.35/007-power-management.patch
+++ /dev/null
@@ -1,171 +0,0 @@
-From 0c5476ab44aaffafcdce4885f09e86b300eb2241 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 19 Jun 2010 04:08:11 +0000
-Subject: [PATCH] MIPS: JZ4740: Add power-management and system reset support
-
-Add support for suspend/resume and poweroff/reboot on a JZ4740 SoC.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1398/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/jz4740/pm.c | 56 ++++++++++++++++++++++++++++++++
- arch/mips/jz4740/reset.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++
- arch/mips/jz4740/reset.h | 6 +++
- 3 files changed, 141 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/jz4740/pm.c
- create mode 100644 arch/mips/jz4740/reset.c
- create mode 100644 arch/mips/jz4740/reset.h
-
---- /dev/null
-+++ b/arch/mips/jz4740/pm.c
-@@ -0,0 +1,56 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC power management support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/pm.h>
-+#include <linux/delay.h>
-+#include <linux/suspend.h>
-+
-+#include <asm/mach-jz4740/clock.h>
-+
-+#include "clock.h"
-+#include "irq.h"
-+
-+static int jz4740_pm_enter(suspend_state_t state)
-+{
-+ jz4740_intc_suspend();
-+ jz4740_clock_suspend();
-+
-+ jz4740_clock_set_wait_mode(JZ4740_WAIT_MODE_SLEEP);
-+
-+ __asm__(".set\tmips3\n\t"
-+ "wait\n\t"
-+ ".set\tmips0");
-+
-+ jz4740_clock_set_wait_mode(JZ4740_WAIT_MODE_IDLE);
-+
-+ jz4740_clock_resume();
-+ jz4740_intc_resume();
-+
-+ return 0;
-+}
-+
-+static struct platform_suspend_ops jz4740_pm_ops = {
-+ .valid = suspend_valid_only_mem,
-+ .enter = jz4740_pm_enter,
-+};
-+
-+static int __init jz4740_pm_init(void)
-+{
-+ suspend_set_ops(&jz4740_pm_ops);
-+ return 0;
-+
-+}
-+late_initcall(jz4740_pm_init);
---- /dev/null
-+++ b/arch/mips/jz4740/reset.c
-@@ -0,0 +1,79 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/io.h>
-+#include <linux/kernel.h>
-+#include <linux/pm.h>
-+
-+#include <asm/reboot.h>
-+
-+#include <asm/mach-jz4740/base.h>
-+#include <asm/mach-jz4740/timer.h>
-+
-+static void jz4740_halt(void)
-+{
-+ while (1) {
-+ __asm__(".set push;\n"
-+ ".set mips3;\n"
-+ "wait;\n"
-+ ".set pop;\n"
-+ );
-+ }
-+}
-+
-+#define JZ_REG_WDT_DATA 0x00
-+#define JZ_REG_WDT_COUNTER_ENABLE 0x04
-+#define JZ_REG_WDT_COUNTER 0x08
-+#define JZ_REG_WDT_CTRL 0x0c
-+
-+static void jz4740_restart(char *command)
-+{
-+ void __iomem *wdt_base = ioremap(JZ4740_WDT_BASE_ADDR, 0x0f);
-+
-+ jz4740_timer_enable_watchdog();
-+
-+ writeb(0, wdt_base + JZ_REG_WDT_COUNTER_ENABLE);
-+
-+ writew(0, wdt_base + JZ_REG_WDT_COUNTER);
-+ writew(0, wdt_base + JZ_REG_WDT_DATA);
-+ writew(BIT(2), wdt_base + JZ_REG_WDT_CTRL);
-+
-+ writeb(1, wdt_base + JZ_REG_WDT_COUNTER_ENABLE);
-+ jz4740_halt();
-+}
-+
-+#define JZ_REG_RTC_CTRL 0x00
-+#define JZ_REG_RTC_HIBERNATE 0x20
-+
-+#define JZ_RTC_CTRL_WRDY BIT(7)
-+
-+static void jz4740_power_off(void)
-+{
-+ void __iomem *rtc_base = ioremap(JZ4740_RTC_BASE_ADDR, 0x24);
-+ uint32_t ctrl;
-+
-+ do {
-+ ctrl = readl(rtc_base + JZ_REG_RTC_CTRL);
-+ } while (!(ctrl & JZ_RTC_CTRL_WRDY));
-+
-+ writel(1, rtc_base + JZ_REG_RTC_HIBERNATE);
-+ jz4740_halt();
-+}
-+
-+void jz4740_reset_init(void)
-+{
-+ _machine_restart = jz4740_restart;
-+ _machine_halt = jz4740_halt;
-+ pm_power_off = jz4740_power_off;
-+}
---- /dev/null
-+++ b/arch/mips/jz4740/reset.h
-@@ -0,0 +1,6 @@
-+#ifndef __MIPS_JZ4740_RESET_H__
-+#define __MIPS_JZ4740_RESET_H__
-+
-+extern void jz4740_reset_init(void);
-+
-+#endif
diff --git a/target/linux/xburst/patches-2.6.35/008-setup.patch b/target/linux/xburst/patches-2.6.35/008-setup.patch
deleted file mode 100644
index 6cef6113f7..0000000000
--- a/target/linux/xburst/patches-2.6.35/008-setup.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 05e8cc3590af4f29d48346e626b980741d480f77 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 19 Jun 2010 04:08:12 +0000
-Subject: [PATCH] MIPS: JZ4740: Add setup code
-
-Add plat_mem_setup and get_system_type for JZ4740 SoCs.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1399/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/jz4740/setup.c | 29 +++++++++++++++++++++++++++++
- 1 files changed, 29 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/jz4740/setup.c
-
---- /dev/null
-+++ b/arch/mips/jz4740/setup.c
-@@ -0,0 +1,29 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 setup code
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+
-+#include "reset.h"
-+
-+void __init plat_mem_setup(void)
-+{
-+ jz4740_reset_init();
-+}
-+
-+const char *get_system_type(void)
-+{
-+ return "JZ4740";
-+}
diff --git a/target/linux/xburst/patches-2.6.35/009-gpio.patch b/target/linux/xburst/patches-2.6.35/009-gpio.patch
deleted file mode 100644
index bff76fdabd..0000000000
--- a/target/linux/xburst/patches-2.6.35/009-gpio.patch
+++ /dev/null
@@ -1,1027 +0,0 @@
-From 9b2439903f4015233930ddab5b99b34c622c4876 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 17 Jul 2010 11:11:19 +0000
-Subject: [PATCH] MIPS: JZ4740: Add GPIO support
-
-Add gpiolib support for JZ4740 SoCs.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1467/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/include/asm/mach-jz4740/gpio.h | 398 ++++++++++++++++++++
- arch/mips/jz4740/gpio.c | 604 ++++++++++++++++++++++++++++++
- 2 files changed, 1002 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/gpio.h
- create mode 100644 arch/mips/jz4740/gpio.c
-
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/gpio.h
-@@ -0,0 +1,398 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 GPIO pin definitions
-+ *
-+ * 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.
-+ *
-+ * 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 _JZ_GPIO_H
-+#define _JZ_GPIO_H
-+
-+#include <linux/types.h>
-+
-+enum jz_gpio_function {
-+ JZ_GPIO_FUNC_NONE,
-+ JZ_GPIO_FUNC1,
-+ JZ_GPIO_FUNC2,
-+ JZ_GPIO_FUNC3,
-+};
-+
-+
-+/*
-+ Usually a driver for a SoC component has to request several gpio pins and
-+ configure them as funcion pins.
-+ jz_gpio_bulk_request can be used to ease this process.
-+ Usually one would do something like:
-+
-+ const static struct jz_gpio_bulk_request i2c_pins[] = {
-+ JZ_GPIO_BULK_PIN(I2C_SDA),
-+ JZ_GPIO_BULK_PIN(I2C_SCK),
-+ };
-+
-+ inside the probe function:
-+
-+ ret = jz_gpio_bulk_request(i2c_pins, ARRAY_SIZE(i2c_pins));
-+ if (ret) {
-+ ...
-+
-+ inside the remove function:
-+
-+ jz_gpio_bulk_free(i2c_pins, ARRAY_SIZE(i2c_pins));
-+
-+
-+*/
-+struct jz_gpio_bulk_request {
-+ int gpio;
-+ const char *name;
-+ enum jz_gpio_function function;
-+};
-+
-+#define JZ_GPIO_BULK_PIN(pin) { \
-+ .gpio = JZ_GPIO_ ## pin, \
-+ .name = #pin, \
-+ .function = JZ_GPIO_FUNC_ ## pin \
-+}
-+
-+int jz_gpio_bulk_request(const struct jz_gpio_bulk_request *request, size_t num);
-+void jz_gpio_bulk_free(const struct jz_gpio_bulk_request *request, size_t num);
-+void jz_gpio_bulk_suspend(const struct jz_gpio_bulk_request *request, size_t num);
-+void jz_gpio_bulk_resume(const struct jz_gpio_bulk_request *request, size_t num);
-+void jz_gpio_enable_pullup(unsigned gpio);
-+void jz_gpio_disable_pullup(unsigned gpio);
-+int jz_gpio_set_function(int gpio, enum jz_gpio_function function);
-+
-+int jz_gpio_port_direction_input(int port, uint32_t mask);
-+int jz_gpio_port_direction_output(int port, uint32_t mask);
-+void jz_gpio_port_set_value(int port, uint32_t value, uint32_t mask);
-+uint32_t jz_gpio_port_get_value(int port, uint32_t mask);
-+
-+#include <asm/mach-generic/gpio.h>
-+
-+#define JZ_GPIO_PORTA(x) ((x) + 32 * 0)
-+#define JZ_GPIO_PORTB(x) ((x) + 32 * 1)
-+#define JZ_GPIO_PORTC(x) ((x) + 32 * 2)
-+#define JZ_GPIO_PORTD(x) ((x) + 32 * 3)
-+
-+/* Port A function pins */
-+#define JZ_GPIO_MEM_DATA0 JZ_GPIO_PORTA(0)
-+#define JZ_GPIO_MEM_DATA1 JZ_GPIO_PORTA(1)
-+#define JZ_GPIO_MEM_DATA2 JZ_GPIO_PORTA(2)
-+#define JZ_GPIO_MEM_DATA3 JZ_GPIO_PORTA(3)
-+#define JZ_GPIO_MEM_DATA4 JZ_GPIO_PORTA(4)
-+#define JZ_GPIO_MEM_DATA5 JZ_GPIO_PORTA(5)
-+#define JZ_GPIO_MEM_DATA6 JZ_GPIO_PORTA(6)
-+#define JZ_GPIO_MEM_DATA7 JZ_GPIO_PORTA(7)
-+#define JZ_GPIO_MEM_DATA8 JZ_GPIO_PORTA(8)
-+#define JZ_GPIO_MEM_DATA9 JZ_GPIO_PORTA(9)
-+#define JZ_GPIO_MEM_DATA10 JZ_GPIO_PORTA(10)
-+#define JZ_GPIO_MEM_DATA11 JZ_GPIO_PORTA(11)
-+#define JZ_GPIO_MEM_DATA12 JZ_GPIO_PORTA(12)
-+#define JZ_GPIO_MEM_DATA13 JZ_GPIO_PORTA(13)
-+#define JZ_GPIO_MEM_DATA14 JZ_GPIO_PORTA(14)
-+#define JZ_GPIO_MEM_DATA15 JZ_GPIO_PORTA(15)
-+#define JZ_GPIO_MEM_DATA16 JZ_GPIO_PORTA(16)
-+#define JZ_GPIO_MEM_DATA17 JZ_GPIO_PORTA(17)
-+#define JZ_GPIO_MEM_DATA18 JZ_GPIO_PORTA(18)
-+#define JZ_GPIO_MEM_DATA19 JZ_GPIO_PORTA(19)
-+#define JZ_GPIO_MEM_DATA20 JZ_GPIO_PORTA(20)
-+#define JZ_GPIO_MEM_DATA21 JZ_GPIO_PORTA(21)
-+#define JZ_GPIO_MEM_DATA22 JZ_GPIO_PORTA(22)
-+#define JZ_GPIO_MEM_DATA23 JZ_GPIO_PORTA(23)
-+#define JZ_GPIO_MEM_DATA24 JZ_GPIO_PORTA(24)
-+#define JZ_GPIO_MEM_DATA25 JZ_GPIO_PORTA(25)
-+#define JZ_GPIO_MEM_DATA26 JZ_GPIO_PORTA(26)
-+#define JZ_GPIO_MEM_DATA27 JZ_GPIO_PORTA(27)
-+#define JZ_GPIO_MEM_DATA28 JZ_GPIO_PORTA(28)
-+#define JZ_GPIO_MEM_DATA29 JZ_GPIO_PORTA(29)
-+#define JZ_GPIO_MEM_DATA30 JZ_GPIO_PORTA(30)
-+#define JZ_GPIO_MEM_DATA31 JZ_GPIO_PORTA(31)
-+
-+#define JZ_GPIO_FUNC_MEM_DATA0 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA1 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA2 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA3 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA4 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA5 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA6 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA7 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA8 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA9 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA10 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA11 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA12 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA13 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA14 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA15 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA16 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA17 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA18 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA19 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA20 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA21 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA22 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA23 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA24 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA25 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA26 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA27 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA28 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA29 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA30 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DATA31 JZ_GPIO_FUNC1
-+
-+/* Port B function pins */
-+#define JZ_GPIO_MEM_ADDR0 JZ_GPIO_PORTB(0)
-+#define JZ_GPIO_MEM_ADDR1 JZ_GPIO_PORTB(1)
-+#define JZ_GPIO_MEM_ADDR2 JZ_GPIO_PORTB(2)
-+#define JZ_GPIO_MEM_ADDR3 JZ_GPIO_PORTB(3)
-+#define JZ_GPIO_MEM_ADDR4 JZ_GPIO_PORTB(4)
-+#define JZ_GPIO_MEM_ADDR5 JZ_GPIO_PORTB(5)
-+#define JZ_GPIO_MEM_ADDR6 JZ_GPIO_PORTB(6)
-+#define JZ_GPIO_MEM_ADDR7 JZ_GPIO_PORTB(7)
-+#define JZ_GPIO_MEM_ADDR8 JZ_GPIO_PORTB(8)
-+#define JZ_GPIO_MEM_ADDR9 JZ_GPIO_PORTB(9)
-+#define JZ_GPIO_MEM_ADDR10 JZ_GPIO_PORTB(10)
-+#define JZ_GPIO_MEM_ADDR11 JZ_GPIO_PORTB(11)
-+#define JZ_GPIO_MEM_ADDR12 JZ_GPIO_PORTB(12)
-+#define JZ_GPIO_MEM_ADDR13 JZ_GPIO_PORTB(13)
-+#define JZ_GPIO_MEM_ADDR14 JZ_GPIO_PORTB(14)
-+#define JZ_GPIO_MEM_ADDR15 JZ_GPIO_PORTB(15)
-+#define JZ_GPIO_MEM_ADDR16 JZ_GPIO_PORTB(16)
-+#define JZ_GPIO_LCD_CLS JZ_GPIO_PORTB(17)
-+#define JZ_GPIO_LCD_SPL JZ_GPIO_PORTB(18)
-+#define JZ_GPIO_MEM_DCS JZ_GPIO_PORTB(19)
-+#define JZ_GPIO_MEM_RAS JZ_GPIO_PORTB(20)
-+#define JZ_GPIO_MEM_CAS JZ_GPIO_PORTB(21)
-+#define JZ_GPIO_MEM_SDWE JZ_GPIO_PORTB(22)
-+#define JZ_GPIO_MEM_CKE JZ_GPIO_PORTB(23)
-+#define JZ_GPIO_MEM_CKO JZ_GPIO_PORTB(24)
-+#define JZ_GPIO_MEM_CS0 JZ_GPIO_PORTB(25)
-+#define JZ_GPIO_MEM_CS1 JZ_GPIO_PORTB(26)
-+#define JZ_GPIO_MEM_CS2 JZ_GPIO_PORTB(27)
-+#define JZ_GPIO_MEM_CS3 JZ_GPIO_PORTB(28)
-+#define JZ_GPIO_MEM_RD JZ_GPIO_PORTB(29)
-+#define JZ_GPIO_MEM_WR JZ_GPIO_PORTB(30)
-+#define JZ_GPIO_MEM_WE0 JZ_GPIO_PORTB(31)
-+
-+#define JZ_GPIO_FUNC_MEM_ADDR0 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR1 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR2 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR3 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR4 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR5 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR6 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR7 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR8 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR9 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR10 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR11 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR12 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR13 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR14 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR15 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_ADDR16 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_CLS JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_SPL JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_DCS JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_RAS JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CAS JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_SDWE JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CKE JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CKO JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CS0 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CS1 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CS2 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_CS3 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_RD JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_WR JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_WE0 JZ_GPIO_FUNC1
-+
-+
-+#define JZ_GPIO_MEM_ADDR21 JZ_GPIO_PORTB(17)
-+#define JZ_GPIO_MEM_ADDR22 JZ_GPIO_PORTB(18)
-+
-+#define JZ_GPIO_FUNC_MEM_ADDR21 JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_ADDR22 JZ_GPIO_FUNC2
-+
-+/* Port C function pins */
-+#define JZ_GPIO_LCD_DATA0 JZ_GPIO_PORTC(0)
-+#define JZ_GPIO_LCD_DATA1 JZ_GPIO_PORTC(1)
-+#define JZ_GPIO_LCD_DATA2 JZ_GPIO_PORTC(2)
-+#define JZ_GPIO_LCD_DATA3 JZ_GPIO_PORTC(3)
-+#define JZ_GPIO_LCD_DATA4 JZ_GPIO_PORTC(4)
-+#define JZ_GPIO_LCD_DATA5 JZ_GPIO_PORTC(5)
-+#define JZ_GPIO_LCD_DATA6 JZ_GPIO_PORTC(6)
-+#define JZ_GPIO_LCD_DATA7 JZ_GPIO_PORTC(7)
-+#define JZ_GPIO_LCD_DATA8 JZ_GPIO_PORTC(8)
-+#define JZ_GPIO_LCD_DATA9 JZ_GPIO_PORTC(9)
-+#define JZ_GPIO_LCD_DATA10 JZ_GPIO_PORTC(10)
-+#define JZ_GPIO_LCD_DATA11 JZ_GPIO_PORTC(11)
-+#define JZ_GPIO_LCD_DATA12 JZ_GPIO_PORTC(12)
-+#define JZ_GPIO_LCD_DATA13 JZ_GPIO_PORTC(13)
-+#define JZ_GPIO_LCD_DATA14 JZ_GPIO_PORTC(14)
-+#define JZ_GPIO_LCD_DATA15 JZ_GPIO_PORTC(15)
-+#define JZ_GPIO_LCD_DATA16 JZ_GPIO_PORTC(16)
-+#define JZ_GPIO_LCD_DATA17 JZ_GPIO_PORTC(17)
-+#define JZ_GPIO_LCD_PCLK JZ_GPIO_PORTC(18)
-+#define JZ_GPIO_LCD_HSYNC JZ_GPIO_PORTC(19)
-+#define JZ_GPIO_LCD_VSYNC JZ_GPIO_PORTC(20)
-+#define JZ_GPIO_LCD_DE JZ_GPIO_PORTC(21)
-+#define JZ_GPIO_LCD_PS JZ_GPIO_PORTC(22)
-+#define JZ_GPIO_LCD_REV JZ_GPIO_PORTC(23)
-+#define JZ_GPIO_MEM_WE1 JZ_GPIO_PORTC(24)
-+#define JZ_GPIO_MEM_WE2 JZ_GPIO_PORTC(25)
-+#define JZ_GPIO_MEM_WE3 JZ_GPIO_PORTC(26)
-+#define JZ_GPIO_MEM_WAIT JZ_GPIO_PORTC(27)
-+#define JZ_GPIO_MEM_FRE JZ_GPIO_PORTC(28)
-+#define JZ_GPIO_MEM_FWE JZ_GPIO_PORTC(29)
-+
-+#define JZ_GPIO_FUNC_LCD_DATA0 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA1 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA2 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA3 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA4 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA5 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA6 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA7 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA8 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA9 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA10 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA11 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA12 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA13 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA14 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA15 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA16 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DATA17 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_PCLK JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_VSYNC JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_HSYNC JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_DE JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_PS JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_LCD_REV JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_WE1 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_WE2 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_WE3 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_WAIT JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_FRE JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MEM_FWE JZ_GPIO_FUNC1
-+
-+
-+#define JZ_GPIO_MEM_ADDR19 JZ_GPIO_PORTB(22)
-+#define JZ_GPIO_MEM_ADDR20 JZ_GPIO_PORTB(23)
-+
-+#define JZ_GPIO_FUNC_MEM_ADDR19 JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_ADDR20 JZ_GPIO_FUNC2
-+
-+/* Port D function pins */
-+#define JZ_GPIO_CIM_DATA0 JZ_GPIO_PORTD(0)
-+#define JZ_GPIO_CIM_DATA1 JZ_GPIO_PORTD(1)
-+#define JZ_GPIO_CIM_DATA2 JZ_GPIO_PORTD(2)
-+#define JZ_GPIO_CIM_DATA3 JZ_GPIO_PORTD(3)
-+#define JZ_GPIO_CIM_DATA4 JZ_GPIO_PORTD(4)
-+#define JZ_GPIO_CIM_DATA5 JZ_GPIO_PORTD(5)
-+#define JZ_GPIO_CIM_DATA6 JZ_GPIO_PORTD(6)
-+#define JZ_GPIO_CIM_DATA7 JZ_GPIO_PORTD(7)
-+#define JZ_GPIO_MSC_CMD JZ_GPIO_PORTD(8)
-+#define JZ_GPIO_MSC_CLK JZ_GPIO_PORTD(9)
-+#define JZ_GPIO_MSC_DATA0 JZ_GPIO_PORTD(10)
-+#define JZ_GPIO_MSC_DATA1 JZ_GPIO_PORTD(11)
-+#define JZ_GPIO_MSC_DATA2 JZ_GPIO_PORTD(12)
-+#define JZ_GPIO_MSC_DATA3 JZ_GPIO_PORTD(13)
-+#define JZ_GPIO_CIM_MCLK JZ_GPIO_PORTD(14)
-+#define JZ_GPIO_CIM_PCLK JZ_GPIO_PORTD(15)
-+#define JZ_GPIO_CIM_VSYNC JZ_GPIO_PORTD(16)
-+#define JZ_GPIO_CIM_HSYNC JZ_GPIO_PORTD(17)
-+#define JZ_GPIO_SPI_CLK JZ_GPIO_PORTD(18)
-+#define JZ_GPIO_SPI_CE0 JZ_GPIO_PORTD(19)
-+#define JZ_GPIO_SPI_DT JZ_GPIO_PORTD(20)
-+#define JZ_GPIO_SPI_DR JZ_GPIO_PORTD(21)
-+#define JZ_GPIO_SPI_CE1 JZ_GPIO_PORTD(22)
-+#define JZ_GPIO_PWM0 JZ_GPIO_PORTD(23)
-+#define JZ_GPIO_PWM1 JZ_GPIO_PORTD(24)
-+#define JZ_GPIO_PWM2 JZ_GPIO_PORTD(25)
-+#define JZ_GPIO_PWM3 JZ_GPIO_PORTD(26)
-+#define JZ_GPIO_PWM4 JZ_GPIO_PORTD(27)
-+#define JZ_GPIO_PWM5 JZ_GPIO_PORTD(28)
-+#define JZ_GPIO_PWM6 JZ_GPIO_PORTD(30)
-+#define JZ_GPIO_PWM7 JZ_GPIO_PORTD(31)
-+
-+#define JZ_GPIO_FUNC_CIM_DATA JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_CIM_DATA0 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA1 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA2 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA3 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA4 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA5 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA6 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_CIM_DATA7 JZ_GPIO_FUNC_CIM_DATA
-+#define JZ_GPIO_FUNC_MSC_CMD JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MSC_CLK JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MSC_DATA JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_MSC_DATA0 JZ_GPIO_FUNC_MSC_DATA
-+#define JZ_GPIO_FUNC_MSC_DATA1 JZ_GPIO_FUNC_MSC_DATA
-+#define JZ_GPIO_FUNC_MSC_DATA2 JZ_GPIO_FUNC_MSC_DATA
-+#define JZ_GPIO_FUNC_MSC_DATA3 JZ_GPIO_FUNC_MSC_DATA
-+#define JZ_GPIO_FUNC_CIM_MCLK JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_CIM_PCLK JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_CIM_VSYNC JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_CIM_HSYNC JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_SPI_CLK JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_SPI_CE0 JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_SPI_DT JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_SPI_DR JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_SPI_CE1 JZ_GPIO_FUNC1
-+
-+#define JZ_GPIO_FUNC_PWM JZ_GPIO_FUNC1
-+#define JZ_GPIO_FUNC_PWM0 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM1 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM2 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM3 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM4 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM5 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM6 JZ_GPIO_FUNC_PWM
-+#define JZ_GPIO_FUNC_PWM7 JZ_GPIO_FUNC_PWM
-+
-+#define JZ_GPIO_MEM_SCLK_RSTN JZ_GPIO_PORTD(18)
-+#define JZ_GPIO_MEM_BCLK JZ_GPIO_PORTD(19)
-+#define JZ_GPIO_MEM_SDATO JZ_GPIO_PORTD(20)
-+#define JZ_GPIO_MEM_SDATI JZ_GPIO_PORTD(21)
-+#define JZ_GPIO_MEM_SYNC JZ_GPIO_PORTD(22)
-+#define JZ_GPIO_I2C_SDA JZ_GPIO_PORTD(23)
-+#define JZ_GPIO_I2C_SCK JZ_GPIO_PORTD(24)
-+#define JZ_GPIO_UART0_TXD JZ_GPIO_PORTD(25)
-+#define JZ_GPIO_UART0_RXD JZ_GPIO_PORTD(26)
-+#define JZ_GPIO_MEM_ADDR17 JZ_GPIO_PORTD(27)
-+#define JZ_GPIO_MEM_ADDR18 JZ_GPIO_PORTD(28)
-+#define JZ_GPIO_UART0_CTS JZ_GPIO_PORTD(30)
-+#define JZ_GPIO_UART0_RTS JZ_GPIO_PORTD(31)
-+
-+#define JZ_GPIO_FUNC_MEM_SCLK_RSTN JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_BCLK JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_SDATO JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_SDATI JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_SYNC JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_I2C_SDA JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_I2C_SCK JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_UART0_TXD JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_UART0_RXD JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_ADDR17 JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_MEM_ADDR18 JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_UART0_CTS JZ_GPIO_FUNC2
-+#define JZ_GPIO_FUNC_UART0_RTS JZ_GPIO_FUNC2
-+
-+#define JZ_GPIO_UART1_RXD JZ_GPIO_PORTD(30)
-+#define JZ_GPIO_UART1_TXD JZ_GPIO_PORTD(31)
-+
-+#define JZ_GPIO_FUNC_UART1_RXD JZ_GPIO_FUNC3
-+#define JZ_GPIO_FUNC_UART1_TXD JZ_GPIO_FUNC3
-+
-+#endif
---- /dev/null
-+++ b/arch/mips/jz4740/gpio.c
-@@ -0,0 +1,604 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform GPIO support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+
-+#include <linux/spinlock.h>
-+#include <linux/sysdev.h>
-+#include <linux/io.h>
-+#include <linux/gpio.h>
-+#include <linux/delay.h>
-+#include <linux/interrupt.h>
-+#include <linux/bitops.h>
-+
-+#include <linux/debugfs.h>
-+#include <linux/seq_file.h>
-+
-+#include <asm/mach-jz4740/base.h>
-+
-+#define JZ4740_GPIO_BASE_A (32*0)
-+#define JZ4740_GPIO_BASE_B (32*1)
-+#define JZ4740_GPIO_BASE_C (32*2)
-+#define JZ4740_GPIO_BASE_D (32*3)
-+
-+#define JZ4740_GPIO_NUM_A 32
-+#define JZ4740_GPIO_NUM_B 32
-+#define JZ4740_GPIO_NUM_C 31
-+#define JZ4740_GPIO_NUM_D 32
-+
-+#define JZ4740_IRQ_GPIO_BASE_A (JZ4740_IRQ_GPIO(0) + JZ4740_GPIO_BASE_A)
-+#define JZ4740_IRQ_GPIO_BASE_B (JZ4740_IRQ_GPIO(0) + JZ4740_GPIO_BASE_B)
-+#define JZ4740_IRQ_GPIO_BASE_C (JZ4740_IRQ_GPIO(0) + JZ4740_GPIO_BASE_C)
-+#define JZ4740_IRQ_GPIO_BASE_D (JZ4740_IRQ_GPIO(0) + JZ4740_GPIO_BASE_D)
-+
-+#define JZ_REG_GPIO_PIN 0x00
-+#define JZ_REG_GPIO_DATA 0x10
-+#define JZ_REG_GPIO_DATA_SET 0x14
-+#define JZ_REG_GPIO_DATA_CLEAR 0x18
-+#define JZ_REG_GPIO_MASK 0x20
-+#define JZ_REG_GPIO_MASK_SET 0x24
-+#define JZ_REG_GPIO_MASK_CLEAR 0x28
-+#define JZ_REG_GPIO_PULL 0x30
-+#define JZ_REG_GPIO_PULL_SET 0x34
-+#define JZ_REG_GPIO_PULL_CLEAR 0x38
-+#define JZ_REG_GPIO_FUNC 0x40
-+#define JZ_REG_GPIO_FUNC_SET 0x44
-+#define JZ_REG_GPIO_FUNC_CLEAR 0x48
-+#define JZ_REG_GPIO_SELECT 0x50
-+#define JZ_REG_GPIO_SELECT_SET 0x54
-+#define JZ_REG_GPIO_SELECT_CLEAR 0x58
-+#define JZ_REG_GPIO_DIRECTION 0x60
-+#define JZ_REG_GPIO_DIRECTION_SET 0x64
-+#define JZ_REG_GPIO_DIRECTION_CLEAR 0x68
-+#define JZ_REG_GPIO_TRIGGER 0x70
-+#define JZ_REG_GPIO_TRIGGER_SET 0x74
-+#define JZ_REG_GPIO_TRIGGER_CLEAR 0x78
-+#define JZ_REG_GPIO_FLAG 0x80
-+#define JZ_REG_GPIO_FLAG_CLEAR 0x14
-+
-+#define GPIO_TO_BIT(gpio) BIT(gpio & 0x1f)
-+#define GPIO_TO_REG(gpio, reg) (gpio_to_jz_gpio_chip(gpio)->base + (reg))
-+#define CHIP_TO_REG(chip, reg) (gpio_chip_to_jz_gpio_chip(chip)->base + (reg))
-+
-+struct jz_gpio_chip {
-+ unsigned int irq;
-+ unsigned int irq_base;
-+ uint32_t wakeup;
-+ uint32_t suspend_mask;
-+ uint32_t edge_trigger_both;
-+
-+ void __iomem *base;
-+
-+ spinlock_t lock;
-+
-+ struct gpio_chip gpio_chip;
-+ struct irq_chip irq_chip;
-+ struct sys_device sysdev;
-+};
-+
-+static struct jz_gpio_chip jz4740_gpio_chips[];
-+
-+static inline struct jz_gpio_chip *gpio_to_jz_gpio_chip(unsigned int gpio)
-+{
-+ return &jz4740_gpio_chips[gpio >> 5];
-+}
-+
-+static inline struct jz_gpio_chip *gpio_chip_to_jz_gpio_chip(struct gpio_chip *gpio_chip)
-+{
-+ return container_of(gpio_chip, struct jz_gpio_chip, gpio_chip);
-+}
-+
-+static inline struct jz_gpio_chip *irq_to_jz_gpio_chip(unsigned int irq)
-+{
-+ return get_irq_chip_data(irq);
-+}
-+
-+static inline void jz_gpio_write_bit(unsigned int gpio, unsigned int reg)
-+{
-+ writel(GPIO_TO_BIT(gpio), GPIO_TO_REG(gpio, reg));
-+}
-+
-+int jz_gpio_set_function(int gpio, enum jz_gpio_function function)
-+{
-+ if (function == JZ_GPIO_FUNC_NONE) {
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_FUNC_CLEAR);
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_SELECT_CLEAR);
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_TRIGGER_CLEAR);
-+ } else {
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_FUNC_SET);
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_TRIGGER_CLEAR);
-+ switch (function) {
-+ case JZ_GPIO_FUNC1:
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_SELECT_CLEAR);
-+ break;
-+ case JZ_GPIO_FUNC3:
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_TRIGGER_SET);
-+ case JZ_GPIO_FUNC2: /* Falltrough */
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_SELECT_SET);
-+ break;
-+ default:
-+ BUG();
-+ break;
-+ }
-+ }
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_set_function);
-+
-+int jz_gpio_bulk_request(const struct jz_gpio_bulk_request *request, size_t num)
-+{
-+ size_t i;
-+ int ret;
-+
-+ for (i = 0; i < num; ++i, ++request) {
-+ ret = gpio_request(request->gpio, request->name);
-+ if (ret)
-+ goto err;
-+ jz_gpio_set_function(request->gpio, request->function);
-+ }
-+
-+ return 0;
-+
-+err:
-+ for (--request; i > 0; --i, --request) {
-+ gpio_free(request->gpio);
-+ jz_gpio_set_function(request->gpio, JZ_GPIO_FUNC_NONE);
-+ }
-+
-+ return ret;
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_bulk_request);
-+
-+void jz_gpio_bulk_free(const struct jz_gpio_bulk_request *request, size_t num)
-+{
-+ size_t i;
-+
-+ for (i = 0; i < num; ++i, ++request) {
-+ gpio_free(request->gpio);
-+ jz_gpio_set_function(request->gpio, JZ_GPIO_FUNC_NONE);
-+ }
-+
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_bulk_free);
-+
-+void jz_gpio_bulk_suspend(const struct jz_gpio_bulk_request *request, size_t num)
-+{
-+ size_t i;
-+
-+ for (i = 0; i < num; ++i, ++request) {
-+ jz_gpio_set_function(request->gpio, JZ_GPIO_FUNC_NONE);
-+ jz_gpio_write_bit(request->gpio, JZ_REG_GPIO_DIRECTION_CLEAR);
-+ jz_gpio_write_bit(request->gpio, JZ_REG_GPIO_PULL_SET);
-+ }
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_bulk_suspend);
-+
-+void jz_gpio_bulk_resume(const struct jz_gpio_bulk_request *request, size_t num)
-+{
-+ size_t i;
-+
-+ for (i = 0; i < num; ++i, ++request)
-+ jz_gpio_set_function(request->gpio, request->function);
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_bulk_resume);
-+
-+void jz_gpio_enable_pullup(unsigned gpio)
-+{
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_PULL_CLEAR);
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_enable_pullup);
-+
-+void jz_gpio_disable_pullup(unsigned gpio)
-+{
-+ jz_gpio_write_bit(gpio, JZ_REG_GPIO_PULL_SET);
-+}
-+EXPORT_SYMBOL_GPL(jz_gpio_disable_pullup);
-+
-+static int jz_gpio_get_value(struct gpio_chip *chip, unsigned gpio)
-+{
-+ return !!(readl(CHIP_TO_REG(chip, JZ_REG_GPIO_PIN)) & BIT(gpio));
-+}
-+
-+static void jz_gpio_set_value(struct gpio_chip *chip, unsigned gpio, int value)
-+{
-+ uint32_t __iomem *reg = CHIP_TO_REG(chip, JZ_REG_GPIO_DATA_SET);
-+ reg += !value;
-+ writel(BIT(gpio), reg);
-+}
-+
-+static int jz_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
-+ int value)
-+{
-+ writel(BIT(gpio), CHIP_TO_REG(chip, JZ_REG_GPIO_DIRECTION_SET));
-+ jz_gpio_set_value(chip, gpio, value);
-+
-+ return 0;
-+}
-+
-+static int jz_gpio_direction_input(struct gpio_chip *chip, unsigned gpio)
-+{
-+ writel(BIT(gpio), CHIP_TO_REG(chip, JZ_REG_GPIO_DIRECTION_CLEAR));
-+
-+ return 0;
-+}
-+
-+int jz_gpio_port_direction_input(int port, uint32_t mask)
-+{
-+ writel(mask, GPIO_TO_REG(port, JZ_REG_GPIO_DIRECTION_CLEAR));
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL(jz_gpio_port_direction_input);
-+
-+int jz_gpio_port_direction_output(int port, uint32_t mask)
-+{
-+ writel(mask, GPIO_TO_REG(port, JZ_REG_GPIO_DIRECTION_SET));
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL(jz_gpio_port_direction_output);
-+
-+void jz_gpio_port_set_value(int port, uint32_t value, uint32_t mask)
-+{
-+ writel(~value & mask, GPIO_TO_REG(port, JZ_REG_GPIO_DATA_CLEAR));
-+ writel(value & mask, GPIO_TO_REG(port, JZ_REG_GPIO_DATA_SET));
-+}
-+EXPORT_SYMBOL(jz_gpio_port_set_value);
-+
-+uint32_t jz_gpio_port_get_value(int port, uint32_t mask)
-+{
-+ uint32_t value = readl(GPIO_TO_REG(port, JZ_REG_GPIO_PIN));
-+
-+ return value & mask;
-+}
-+EXPORT_SYMBOL(jz_gpio_port_get_value);
-+
-+int gpio_to_irq(unsigned gpio)
-+{
-+ return JZ4740_IRQ_GPIO(0) + gpio;
-+}
-+EXPORT_SYMBOL_GPL(gpio_to_irq);
-+
-+int irq_to_gpio(unsigned irq)
-+{
-+ return irq - JZ4740_IRQ_GPIO(0);
-+}
-+EXPORT_SYMBOL_GPL(irq_to_gpio);
-+
-+#define IRQ_TO_BIT(irq) BIT(irq_to_gpio(irq) & 0x1f)
-+
-+static void jz_gpio_check_trigger_both(struct jz_gpio_chip *chip, unsigned int irq)
-+{
-+ uint32_t value;
-+ void __iomem *reg;
-+ uint32_t mask = IRQ_TO_BIT(irq);
-+
-+ if (!(chip->edge_trigger_both & mask))
-+ return;
-+
-+ reg = chip->base;
-+
-+ value = readl(chip->base + JZ_REG_GPIO_PIN);
-+ if (value & mask)
-+ reg += JZ_REG_GPIO_DIRECTION_CLEAR;
-+ else
-+ reg += JZ_REG_GPIO_DIRECTION_SET;
-+
-+ writel(mask, reg);
-+}
-+
-+static void jz_gpio_irq_demux_handler(unsigned int irq, struct irq_desc *desc)
-+{
-+ uint32_t flag;
-+ unsigned int gpio_irq;
-+ unsigned int gpio_bank;
-+ struct jz_gpio_chip *chip = get_irq_desc_data(desc);
-+
-+ gpio_bank = JZ4740_IRQ_GPIO0 - irq;
-+
-+ flag = readl(chip->base + JZ_REG_GPIO_FLAG);
-+
-+ if (!flag)
-+ return;
-+
-+ gpio_irq = __fls(flag);
-+
-+ jz_gpio_check_trigger_both(chip, irq);
-+
-+ gpio_irq += (gpio_bank << 5) + JZ4740_IRQ_GPIO(0);
-+
-+ generic_handle_irq(gpio_irq);
-+};
-+
-+static inline void jz_gpio_set_irq_bit(unsigned int irq, unsigned int reg)
-+{
-+ struct jz_gpio_chip *chip = irq_to_jz_gpio_chip(irq);
-+ writel(IRQ_TO_BIT(irq), chip->base + reg);
-+}
-+
-+static void jz_gpio_irq_mask(unsigned int irq)
-+{
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_MASK_SET);
-+};
-+
-+static void jz_gpio_irq_unmask(unsigned int irq)
-+{
-+ struct jz_gpio_chip *chip = irq_to_jz_gpio_chip(irq);
-+
-+ jz_gpio_check_trigger_both(chip, irq);
-+
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_MASK_CLEAR);
-+};
-+
-+/* TODO: Check if function is gpio */
-+static unsigned int jz_gpio_irq_startup(unsigned int irq)
-+{
-+ struct irq_desc *desc = irq_to_desc(irq);
-+
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_SELECT_SET);
-+
-+ desc->status &= ~IRQ_MASKED;
-+ jz_gpio_irq_unmask(irq);
-+
-+ return 0;
-+}
-+
-+static void jz_gpio_irq_shutdown(unsigned int irq)
-+{
-+ struct irq_desc *desc = irq_to_desc(irq);
-+
-+ jz_gpio_irq_mask(irq);
-+ desc->status |= IRQ_MASKED;
-+
-+ /* Set direction to input */
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_DIRECTION_CLEAR);
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_SELECT_CLEAR);
-+}
-+
-+static void jz_gpio_irq_ack(unsigned int irq)
-+{
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_FLAG_CLEAR);
-+};
-+
-+static int jz_gpio_irq_set_type(unsigned int irq, unsigned int flow_type)
-+{
-+ struct jz_gpio_chip *chip = irq_to_jz_gpio_chip(irq);
-+ struct irq_desc *desc = irq_to_desc(irq);
-+
-+ jz_gpio_irq_mask(irq);
-+
-+ if (flow_type == IRQ_TYPE_EDGE_BOTH) {
-+ uint32_t value = readl(chip->base + JZ_REG_GPIO_PIN);
-+ if (value & IRQ_TO_BIT(irq))
-+ flow_type = IRQ_TYPE_EDGE_FALLING;
-+ else
-+ flow_type = IRQ_TYPE_EDGE_RISING;
-+ chip->edge_trigger_both |= IRQ_TO_BIT(irq);
-+ } else {
-+ chip->edge_trigger_both &= ~IRQ_TO_BIT(irq);
-+ }
-+
-+ switch (flow_type) {
-+ case IRQ_TYPE_EDGE_RISING:
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_DIRECTION_SET);
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_TRIGGER_SET);
-+ break;
-+ case IRQ_TYPE_EDGE_FALLING:
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_DIRECTION_CLEAR);
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_TRIGGER_SET);
-+ break;
-+ case IRQ_TYPE_LEVEL_HIGH:
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_DIRECTION_SET);
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_TRIGGER_CLEAR);
-+ break;
-+ case IRQ_TYPE_LEVEL_LOW:
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_DIRECTION_CLEAR);
-+ jz_gpio_set_irq_bit(irq, JZ_REG_GPIO_TRIGGER_CLEAR);
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ if (!(desc->status & IRQ_MASKED))
-+ jz_gpio_irq_unmask(irq);
-+
-+ return 0;
-+}
-+
-+static int jz_gpio_irq_set_wake(unsigned int irq, unsigned int on)
-+{
-+ struct jz_gpio_chip *chip = irq_to_jz_gpio_chip(irq);
-+ spin_lock(&chip->lock);
-+ if (on)
-+ chip->wakeup |= IRQ_TO_BIT(irq);
-+ else
-+ chip->wakeup &= ~IRQ_TO_BIT(irq);
-+ spin_unlock(&chip->lock);
-+
-+ set_irq_wake(chip->irq, on);
-+ return 0;
-+}
-+
-+/*
-+ * This lock class tells lockdep that GPIO irqs are in a different
-+ * category than their parents, so it won't report false recursion.
-+ */
-+static struct lock_class_key gpio_lock_class;
-+
-+#define JZ4740_GPIO_CHIP(_bank) { \
-+ .irq_base = JZ4740_IRQ_GPIO_BASE_ ## _bank, \
-+ .gpio_chip = { \
-+ .label = "Bank " # _bank, \
-+ .owner = THIS_MODULE, \
-+ .set = jz_gpio_set_value, \
-+ .get = jz_gpio_get_value, \
-+ .direction_output = jz_gpio_direction_output, \
-+ .direction_input = jz_gpio_direction_input, \
-+ .base = JZ4740_GPIO_BASE_ ## _bank, \
-+ .ngpio = JZ4740_GPIO_NUM_ ## _bank, \
-+ }, \
-+ .irq_chip = { \
-+ .name = "GPIO Bank " # _bank, \
-+ .mask = jz_gpio_irq_mask, \
-+ .unmask = jz_gpio_irq_unmask, \
-+ .ack = jz_gpio_irq_ack, \
-+ .startup = jz_gpio_irq_startup, \
-+ .shutdown = jz_gpio_irq_shutdown, \
-+ .set_type = jz_gpio_irq_set_type, \
-+ .set_wake = jz_gpio_irq_set_wake, \
-+ }, \
-+}
-+
-+static struct jz_gpio_chip jz4740_gpio_chips[] = {
-+ JZ4740_GPIO_CHIP(A),
-+ JZ4740_GPIO_CHIP(B),
-+ JZ4740_GPIO_CHIP(C),
-+ JZ4740_GPIO_CHIP(D),
-+};
-+
-+static inline struct jz_gpio_chip *sysdev_to_chip(struct sys_device *dev)
-+{
-+ return container_of(dev, struct jz_gpio_chip, sysdev);
-+}
-+
-+static int jz4740_gpio_suspend(struct sys_device *dev, pm_message_t state)
-+{
-+ struct jz_gpio_chip *chip = sysdev_to_chip(dev);
-+
-+ chip->suspend_mask = readl(chip->base + JZ_REG_GPIO_MASK);
-+ writel(~(chip->wakeup), chip->base + JZ_REG_GPIO_MASK_SET);
-+ writel(chip->wakeup, chip->base + JZ_REG_GPIO_MASK_CLEAR);
-+
-+ return 0;
-+}
-+
-+static int jz4740_gpio_resume(struct sys_device *dev)
-+{
-+ struct jz_gpio_chip *chip = sysdev_to_chip(dev);
-+ uint32_t mask = chip->suspend_mask;
-+
-+ writel(~mask, chip->base + JZ_REG_GPIO_MASK_CLEAR);
-+ writel(mask, chip->base + JZ_REG_GPIO_MASK_SET);
-+
-+ return 0;
-+}
-+
-+static struct sysdev_class jz4740_gpio_sysdev_class = {
-+ .name = "gpio",
-+ .suspend = jz4740_gpio_suspend,
-+ .resume = jz4740_gpio_resume,
-+};
-+
-+static int jz4740_gpio_chip_init(struct jz_gpio_chip *chip, unsigned int id)
-+{
-+ int ret, irq;
-+
-+ chip->sysdev.id = id;
-+ chip->sysdev.cls = &jz4740_gpio_sysdev_class;
-+ ret = sysdev_register(&chip->sysdev);
-+
-+ if (ret)
-+ return ret;
-+
-+ spin_lock_init(&chip->lock);
-+
-+ chip->base = ioremap(JZ4740_GPIO_BASE_ADDR + (id * 0x100), 0x100);
-+
-+ gpiochip_add(&chip->gpio_chip);
-+
-+ chip->irq = JZ4740_IRQ_INTC_GPIO(id);
-+ set_irq_data(chip->irq, chip);
-+ set_irq_chained_handler(chip->irq, jz_gpio_irq_demux_handler);
-+
-+ for (irq = chip->irq_base; irq < chip->irq_base + chip->gpio_chip.ngpio; ++irq) {
-+ lockdep_set_class(&irq_desc[irq].lock, &gpio_lock_class);
-+ set_irq_chip_data(irq, chip);
-+ set_irq_chip_and_handler(irq, &chip->irq_chip, handle_level_irq);
-+ }
-+
-+ return 0;
-+}
-+
-+static int __init jz4740_gpio_init(void)
-+{
-+ unsigned int i;
-+ int ret;
-+
-+ ret = sysdev_class_register(&jz4740_gpio_sysdev_class);
-+ if (ret)
-+ return ret;
-+
-+ for (i = 0; i < ARRAY_SIZE(jz4740_gpio_chips); ++i)
-+ jz4740_gpio_chip_init(&jz4740_gpio_chips[i], i);
-+
-+ printk(KERN_INFO "JZ4740 GPIO initalized\n");
-+
-+ return 0;
-+}
-+arch_initcall(jz4740_gpio_init);
-+
-+#ifdef CONFIG_DEBUG_FS
-+
-+static inline void gpio_seq_reg(struct seq_file *s, struct jz_gpio_chip *chip,
-+ const char *name, unsigned int reg)
-+{
-+ seq_printf(s, "\t%s: %08x\n", name, readl(chip->base + reg));
-+}
-+
-+static int gpio_regs_show(struct seq_file *s, void *unused)
-+{
-+ struct jz_gpio_chip *chip = jz4740_gpio_chips;
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(jz4740_gpio_chips); ++i, ++chip) {
-+ seq_printf(s, "==GPIO %d==\n", i);
-+ gpio_seq_reg(s, chip, "Pin", JZ_REG_GPIO_PIN);
-+ gpio_seq_reg(s, chip, "Data", JZ_REG_GPIO_DATA);
-+ gpio_seq_reg(s, chip, "Mask", JZ_REG_GPIO_MASK);
-+ gpio_seq_reg(s, chip, "Pull", JZ_REG_GPIO_PULL);
-+ gpio_seq_reg(s, chip, "Func", JZ_REG_GPIO_FUNC);
-+ gpio_seq_reg(s, chip, "Select", JZ_REG_GPIO_SELECT);
-+ gpio_seq_reg(s, chip, "Direction", JZ_REG_GPIO_DIRECTION);
-+ gpio_seq_reg(s, chip, "Trigger", JZ_REG_GPIO_TRIGGER);
-+ gpio_seq_reg(s, chip, "Flag", JZ_REG_GPIO_FLAG);
-+ }
-+
-+ return 0;
-+}
-+
-+static int gpio_regs_open(struct inode *inode, struct file *file)
-+{
-+ return single_open(file, gpio_regs_show, NULL);
-+}
-+
-+static const struct file_operations gpio_regs_operations = {
-+ .open = gpio_regs_open,
-+ .read = seq_read,
-+ .llseek = seq_lseek,
-+ .release = single_release,
-+};
-+
-+static int __init gpio_debugfs_init(void)
-+{
-+ (void) debugfs_create_file("jz_regs_gpio", S_IFREG | S_IRUGO,
-+ NULL, NULL, &gpio_regs_operations);
-+ return 0;
-+}
-+subsys_initcall(gpio_debugfs_init);
-+
-+#endif
diff --git a/target/linux/xburst/patches-2.6.35/010-dma.patch b/target/linux/xburst/patches-2.6.35/010-dma.patch
deleted file mode 100644
index 17f5dd2e0c..0000000000
--- a/target/linux/xburst/patches-2.6.35/010-dma.patch
+++ /dev/null
@@ -1,404 +0,0 @@
-From ced95a5a9d7a3ba168e8518d9b5004c9a0cad1fe Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 19 Jun 2010 04:08:14 +0000
-Subject: [PATCH] MIPS: JZ4740: Add DMA support.
-
-Add support for DMA transfers on JZ4740 SoCs.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1401/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/include/asm/mach-jz4740/dma.h | 90 ++++++++++
- arch/mips/jz4740/dma.c | 289 +++++++++++++++++++++++++++++++
- 2 files changed, 379 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/dma.h
- create mode 100644 arch/mips/jz4740/dma.c
-
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/dma.h
-@@ -0,0 +1,90 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ7420/JZ4740 DMA definitions
-+ *
-+ * 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.
-+ *
-+ * 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 __ASM_MACH_JZ4740_DMA_H__
-+#define __ASM_MACH_JZ4740_DMA_H__
-+
-+struct jz4740_dma_chan;
-+
-+enum jz4740_dma_request_type {
-+ JZ4740_DMA_TYPE_AUTO_REQUEST = 8,
-+ JZ4740_DMA_TYPE_UART_TRANSMIT = 20,
-+ JZ4740_DMA_TYPE_UART_RECEIVE = 21,
-+ JZ4740_DMA_TYPE_SPI_TRANSMIT = 22,
-+ JZ4740_DMA_TYPE_SPI_RECEIVE = 23,
-+ JZ4740_DMA_TYPE_AIC_TRANSMIT = 24,
-+ JZ4740_DMA_TYPE_AIC_RECEIVE = 25,
-+ JZ4740_DMA_TYPE_MMC_TRANSMIT = 26,
-+ JZ4740_DMA_TYPE_MMC_RECEIVE = 27,
-+ JZ4740_DMA_TYPE_TCU = 28,
-+ JZ4740_DMA_TYPE_SADC = 29,
-+ JZ4740_DMA_TYPE_SLCD = 30,
-+};
-+
-+enum jz4740_dma_width {
-+ JZ4740_DMA_WIDTH_32BIT = 0,
-+ JZ4740_DMA_WIDTH_8BIT = 1,
-+ JZ4740_DMA_WIDTH_16BIT = 2,
-+};
-+
-+enum jz4740_dma_transfer_size {
-+ JZ4740_DMA_TRANSFER_SIZE_4BYTE = 0,
-+ JZ4740_DMA_TRANSFER_SIZE_1BYTE = 1,
-+ JZ4740_DMA_TRANSFER_SIZE_2BYTE = 2,
-+ JZ4740_DMA_TRANSFER_SIZE_16BYTE = 3,
-+ JZ4740_DMA_TRANSFER_SIZE_32BYTE = 4,
-+};
-+
-+enum jz4740_dma_flags {
-+ JZ4740_DMA_SRC_AUTOINC = 0x2,
-+ JZ4740_DMA_DST_AUTOINC = 0x1,
-+};
-+
-+enum jz4740_dma_mode {
-+ JZ4740_DMA_MODE_SINGLE = 0,
-+ JZ4740_DMA_MODE_BLOCK = 1,
-+};
-+
-+struct jz4740_dma_config {
-+ enum jz4740_dma_width src_width;
-+ enum jz4740_dma_width dst_width;
-+ enum jz4740_dma_transfer_size transfer_size;
-+ enum jz4740_dma_request_type request_type;
-+ enum jz4740_dma_flags flags;
-+ enum jz4740_dma_mode mode;
-+};
-+
-+typedef void (*jz4740_dma_complete_callback_t)(struct jz4740_dma_chan *, int, void *);
-+
-+struct jz4740_dma_chan *jz4740_dma_request(void *dev, const char *name);
-+void jz4740_dma_free(struct jz4740_dma_chan *dma);
-+
-+void jz4740_dma_configure(struct jz4740_dma_chan *dma,
-+ const struct jz4740_dma_config *config);
-+
-+
-+void jz4740_dma_enable(struct jz4740_dma_chan *dma);
-+void jz4740_dma_disable(struct jz4740_dma_chan *dma);
-+
-+void jz4740_dma_set_src_addr(struct jz4740_dma_chan *dma, dma_addr_t src);
-+void jz4740_dma_set_dst_addr(struct jz4740_dma_chan *dma, dma_addr_t dst);
-+void jz4740_dma_set_transfer_count(struct jz4740_dma_chan *dma, uint32_t count);
-+
-+uint32_t jz4740_dma_get_residue(const struct jz4740_dma_chan *dma);
-+
-+void jz4740_dma_set_complete_cb(struct jz4740_dma_chan *dma,
-+ jz4740_dma_complete_callback_t cb);
-+
-+#endif /* __ASM_JZ4740_DMA_H__ */
---- /dev/null
-+++ b/arch/mips/jz4740/dma.c
-@@ -0,0 +1,289 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC DMA support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/spinlock.h>
-+#include <linux/interrupt.h>
-+
-+#include <linux/dma-mapping.h>
-+#include <asm/mach-jz4740/dma.h>
-+#include <asm/mach-jz4740/base.h>
-+
-+#define JZ_REG_DMA_SRC_ADDR(x) (0x00 + (x) * 0x20)
-+#define JZ_REG_DMA_DST_ADDR(x) (0x04 + (x) * 0x20)
-+#define JZ_REG_DMA_TRANSFER_COUNT(x) (0x08 + (x) * 0x20)
-+#define JZ_REG_DMA_REQ_TYPE(x) (0x0C + (x) * 0x20)
-+#define JZ_REG_DMA_STATUS_CTRL(x) (0x10 + (x) * 0x20)
-+#define JZ_REG_DMA_CMD(x) (0x14 + (x) * 0x20)
-+#define JZ_REG_DMA_DESC_ADDR(x) (0x18 + (x) * 0x20)
-+
-+#define JZ_REG_DMA_CTRL 0x300
-+#define JZ_REG_DMA_IRQ 0x304
-+#define JZ_REG_DMA_DOORBELL 0x308
-+#define JZ_REG_DMA_DOORBELL_SET 0x30C
-+
-+#define JZ_DMA_STATUS_CTRL_NO_DESC BIT(31)
-+#define JZ_DMA_STATUS_CTRL_DESC_INV BIT(6)
-+#define JZ_DMA_STATUS_CTRL_ADDR_ERR BIT(4)
-+#define JZ_DMA_STATUS_CTRL_TRANSFER_DONE BIT(3)
-+#define JZ_DMA_STATUS_CTRL_HALT BIT(2)
-+#define JZ_DMA_STATUS_CTRL_COUNT_TERMINATE BIT(1)
-+#define JZ_DMA_STATUS_CTRL_ENABLE BIT(0)
-+
-+#define JZ_DMA_CMD_SRC_INC BIT(23)
-+#define JZ_DMA_CMD_DST_INC BIT(22)
-+#define JZ_DMA_CMD_RDIL_MASK (0xf << 16)
-+#define JZ_DMA_CMD_SRC_WIDTH_MASK (0x3 << 14)
-+#define JZ_DMA_CMD_DST_WIDTH_MASK (0x3 << 12)
-+#define JZ_DMA_CMD_INTERVAL_LENGTH_MASK (0x7 << 8)
-+#define JZ_DMA_CMD_BLOCK_MODE BIT(7)
-+#define JZ_DMA_CMD_DESC_VALID BIT(4)
-+#define JZ_DMA_CMD_DESC_VALID_MODE BIT(3)
-+#define JZ_DMA_CMD_VALID_IRQ_ENABLE BIT(2)
-+#define JZ_DMA_CMD_TRANSFER_IRQ_ENABLE BIT(1)
-+#define JZ_DMA_CMD_LINK_ENABLE BIT(0)
-+
-+#define JZ_DMA_CMD_FLAGS_OFFSET 22
-+#define JZ_DMA_CMD_RDIL_OFFSET 16
-+#define JZ_DMA_CMD_SRC_WIDTH_OFFSET 14
-+#define JZ_DMA_CMD_DST_WIDTH_OFFSET 12
-+#define JZ_DMA_CMD_TRANSFER_SIZE_OFFSET 8
-+#define JZ_DMA_CMD_MODE_OFFSET 7
-+
-+#define JZ_DMA_CTRL_PRIORITY_MASK (0x3 << 8)
-+#define JZ_DMA_CTRL_HALT BIT(3)
-+#define JZ_DMA_CTRL_ADDRESS_ERROR BIT(2)
-+#define JZ_DMA_CTRL_ENABLE BIT(0)
-+
-+
-+static void __iomem *jz4740_dma_base;
-+static spinlock_t jz4740_dma_lock;
-+
-+static inline uint32_t jz4740_dma_read(size_t reg)
-+{
-+ return readl(jz4740_dma_base + reg);
-+}
-+
-+static inline void jz4740_dma_write(size_t reg, uint32_t val)
-+{
-+ writel(val, jz4740_dma_base + reg);
-+}
-+
-+static inline void jz4740_dma_write_mask(size_t reg, uint32_t val, uint32_t mask)
-+{
-+ uint32_t val2;
-+ val2 = jz4740_dma_read(reg);
-+ val2 &= ~mask;
-+ val2 |= val;
-+ jz4740_dma_write(reg, val2);
-+}
-+
-+struct jz4740_dma_chan {
-+ unsigned int id;
-+ void *dev;
-+ const char *name;
-+
-+ enum jz4740_dma_flags flags;
-+ uint32_t transfer_shift;
-+
-+ jz4740_dma_complete_callback_t complete_cb;
-+
-+ unsigned used:1;
-+};
-+
-+#define JZ4740_DMA_CHANNEL(_id) { .id = _id }
-+
-+struct jz4740_dma_chan jz4740_dma_channels[] = {
-+ JZ4740_DMA_CHANNEL(0),
-+ JZ4740_DMA_CHANNEL(1),
-+ JZ4740_DMA_CHANNEL(2),
-+ JZ4740_DMA_CHANNEL(3),
-+ JZ4740_DMA_CHANNEL(4),
-+ JZ4740_DMA_CHANNEL(5),
-+};
-+
-+struct jz4740_dma_chan *jz4740_dma_request(void *dev, const char *name)
-+{
-+ unsigned int i;
-+ struct jz4740_dma_chan *dma = NULL;
-+
-+ spin_lock(&jz4740_dma_lock);
-+
-+ for (i = 0; i < ARRAY_SIZE(jz4740_dma_channels); ++i) {
-+ if (!jz4740_dma_channels[i].used) {
-+ dma = &jz4740_dma_channels[i];
-+ dma->used = 1;
-+ break;
-+ }
-+ }
-+
-+ spin_unlock(&jz4740_dma_lock);
-+
-+ if (!dma)
-+ return NULL;
-+
-+ dma->dev = dev;
-+ dma->name = name;
-+
-+ return dma;
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_request);
-+
-+void jz4740_dma_configure(struct jz4740_dma_chan *dma,
-+ const struct jz4740_dma_config *config)
-+{
-+ uint32_t cmd;
-+
-+ switch (config->transfer_size) {
-+ case JZ4740_DMA_TRANSFER_SIZE_2BYTE:
-+ dma->transfer_shift = 1;
-+ break;
-+ case JZ4740_DMA_TRANSFER_SIZE_4BYTE:
-+ dma->transfer_shift = 2;
-+ break;
-+ case JZ4740_DMA_TRANSFER_SIZE_16BYTE:
-+ dma->transfer_shift = 4;
-+ break;
-+ case JZ4740_DMA_TRANSFER_SIZE_32BYTE:
-+ dma->transfer_shift = 5;
-+ break;
-+ default:
-+ dma->transfer_shift = 0;
-+ break;
-+ }
-+
-+ cmd = config->flags << JZ_DMA_CMD_FLAGS_OFFSET;
-+ cmd |= config->src_width << JZ_DMA_CMD_SRC_WIDTH_OFFSET;
-+ cmd |= config->dst_width << JZ_DMA_CMD_DST_WIDTH_OFFSET;
-+ cmd |= config->transfer_size << JZ_DMA_CMD_TRANSFER_SIZE_OFFSET;
-+ cmd |= config->mode << JZ_DMA_CMD_MODE_OFFSET;
-+ cmd |= JZ_DMA_CMD_TRANSFER_IRQ_ENABLE;
-+
-+ jz4740_dma_write(JZ_REG_DMA_CMD(dma->id), cmd);
-+ jz4740_dma_write(JZ_REG_DMA_STATUS_CTRL(dma->id), 0);
-+ jz4740_dma_write(JZ_REG_DMA_REQ_TYPE(dma->id), config->request_type);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_configure);
-+
-+void jz4740_dma_set_src_addr(struct jz4740_dma_chan *dma, dma_addr_t src)
-+{
-+ jz4740_dma_write(JZ_REG_DMA_SRC_ADDR(dma->id), src);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_set_src_addr);
-+
-+void jz4740_dma_set_dst_addr(struct jz4740_dma_chan *dma, dma_addr_t dst)
-+{
-+ jz4740_dma_write(JZ_REG_DMA_DST_ADDR(dma->id), dst);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_set_dst_addr);
-+
-+void jz4740_dma_set_transfer_count(struct jz4740_dma_chan *dma, uint32_t count)
-+{
-+ count >>= dma->transfer_shift;
-+ jz4740_dma_write(JZ_REG_DMA_TRANSFER_COUNT(dma->id), count);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_set_transfer_count);
-+
-+void jz4740_dma_set_complete_cb(struct jz4740_dma_chan *dma,
-+ jz4740_dma_complete_callback_t cb)
-+{
-+ dma->complete_cb = cb;
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_set_complete_cb);
-+
-+void jz4740_dma_free(struct jz4740_dma_chan *dma)
-+{
-+ dma->dev = NULL;
-+ dma->complete_cb = NULL;
-+ dma->used = 0;
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_free);
-+
-+void jz4740_dma_enable(struct jz4740_dma_chan *dma)
-+{
-+ jz4740_dma_write_mask(JZ_REG_DMA_STATUS_CTRL(dma->id),
-+ JZ_DMA_STATUS_CTRL_NO_DESC | JZ_DMA_STATUS_CTRL_ENABLE,
-+ JZ_DMA_STATUS_CTRL_HALT | JZ_DMA_STATUS_CTRL_NO_DESC |
-+ JZ_DMA_STATUS_CTRL_ENABLE);
-+
-+ jz4740_dma_write_mask(JZ_REG_DMA_CTRL,
-+ JZ_DMA_CTRL_ENABLE,
-+ JZ_DMA_CTRL_HALT | JZ_DMA_CTRL_ENABLE);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_enable);
-+
-+void jz4740_dma_disable(struct jz4740_dma_chan *dma)
-+{
-+ jz4740_dma_write_mask(JZ_REG_DMA_STATUS_CTRL(dma->id), 0,
-+ JZ_DMA_STATUS_CTRL_ENABLE);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_disable);
-+
-+uint32_t jz4740_dma_get_residue(const struct jz4740_dma_chan *dma)
-+{
-+ uint32_t residue;
-+ residue = jz4740_dma_read(JZ_REG_DMA_TRANSFER_COUNT(dma->id));
-+ return residue << dma->transfer_shift;
-+}
-+EXPORT_SYMBOL_GPL(jz4740_dma_get_residue);
-+
-+static void jz4740_dma_chan_irq(struct jz4740_dma_chan *dma)
-+{
-+ uint32_t status;
-+
-+ status = jz4740_dma_read(JZ_REG_DMA_STATUS_CTRL(dma->id));
-+
-+ jz4740_dma_write_mask(JZ_REG_DMA_STATUS_CTRL(dma->id), 0,
-+ JZ_DMA_STATUS_CTRL_ENABLE | JZ_DMA_STATUS_CTRL_TRANSFER_DONE);
-+
-+ if (dma->complete_cb)
-+ dma->complete_cb(dma, 0, dma->dev);
-+}
-+
-+static irqreturn_t jz4740_dma_irq(int irq, void *dev_id)
-+{
-+ uint32_t irq_status;
-+ unsigned int i;
-+
-+ irq_status = readl(jz4740_dma_base + JZ_REG_DMA_IRQ);
-+
-+ for (i = 0; i < 6; ++i) {
-+ if (irq_status & (1 << i))
-+ jz4740_dma_chan_irq(&jz4740_dma_channels[i]);
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int jz4740_dma_init(void)
-+{
-+ unsigned int ret;
-+
-+ jz4740_dma_base = ioremap(JZ4740_DMAC_BASE_ADDR, 0x400);
-+
-+ if (!jz4740_dma_base)
-+ return -EBUSY;
-+
-+ spin_lock_init(&jz4740_dma_lock);
-+
-+ ret = request_irq(JZ4740_IRQ_DMAC, jz4740_dma_irq, 0, "DMA", NULL);
-+
-+ if (ret)
-+ printk(KERN_ERR "JZ4740 DMA: Failed to request irq: %d\n", ret);
-+
-+ return ret;
-+}
-+arch_initcall(jz4740_dma_init);
diff --git a/target/linux/xburst/patches-2.6.35/011-pwm.patch b/target/linux/xburst/patches-2.6.35/011-pwm.patch
deleted file mode 100644
index 3c8336baae..0000000000
--- a/target/linux/xburst/patches-2.6.35/011-pwm.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From 5cd5a44b94b451ecaf593bb49919cfbb51ccb622 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 17 Jul 2010 11:12:20 +0000
-Subject: [PATCH] MIPS: JZ4740: Add PWM support
-
-Add support for the PWM part of the timer unit on a JZ4740 SoC.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1468/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/jz4740/pwm.c | 177 ++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 177 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/jz4740/pwm.c
-
---- /dev/null
-+++ b/arch/mips/jz4740/pwm.c
-@@ -0,0 +1,177 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform PWM support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+
-+#include <linux/clk.h>
-+#include <linux/err.h>
-+#include <linux/pwm.h>
-+#include <linux/gpio.h>
-+
-+#include <asm/mach-jz4740/gpio.h>
-+#include "timer.h"
-+
-+static struct clk *jz4740_pwm_clk;
-+
-+DEFINE_MUTEX(jz4740_pwm_mutex);
-+
-+struct pwm_device {
-+ unsigned int id;
-+ unsigned int gpio;
-+ bool used;
-+};
-+
-+static struct pwm_device jz4740_pwm_list[] = {
-+ { 2, JZ_GPIO_PWM2, false },
-+ { 3, JZ_GPIO_PWM3, false },
-+ { 4, JZ_GPIO_PWM4, false },
-+ { 5, JZ_GPIO_PWM5, false },
-+ { 6, JZ_GPIO_PWM6, false },
-+ { 7, JZ_GPIO_PWM7, false },
-+};
-+
-+struct pwm_device *pwm_request(int id, const char *label)
-+{
-+ int ret = 0;
-+ struct pwm_device *pwm;
-+
-+ if (id < 2 || id > 7 || !jz4740_pwm_clk)
-+ return ERR_PTR(-ENODEV);
-+
-+ mutex_lock(&jz4740_pwm_mutex);
-+
-+ pwm = &jz4740_pwm_list[id - 2];
-+ if (pwm->used)
-+ ret = -EBUSY;
-+ else
-+ pwm->used = true;
-+
-+ mutex_unlock(&jz4740_pwm_mutex);
-+
-+ if (ret)
-+ return ERR_PTR(ret);
-+
-+ ret = gpio_request(pwm->gpio, label);
-+
-+ if (ret) {
-+ printk(KERN_ERR "Failed to request pwm gpio: %d\n", ret);
-+ pwm->used = false;
-+ return ERR_PTR(ret);
-+ }
-+
-+ jz_gpio_set_function(pwm->gpio, JZ_GPIO_FUNC_PWM);
-+
-+ jz4740_timer_start(id);
-+
-+ return pwm;
-+}
-+
-+void pwm_free(struct pwm_device *pwm)
-+{
-+ pwm_disable(pwm);
-+ jz4740_timer_set_ctrl(pwm->id, 0);
-+
-+ jz_gpio_set_function(pwm->gpio, JZ_GPIO_FUNC_NONE);
-+ gpio_free(pwm->gpio);
-+
-+ jz4740_timer_stop(pwm->id);
-+
-+ pwm->used = false;
-+}
-+
-+int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns)
-+{
-+ unsigned long long tmp;
-+ unsigned long period, duty;
-+ unsigned int prescaler = 0;
-+ unsigned int id = pwm->id;
-+ uint16_t ctrl;
-+ bool is_enabled;
-+
-+ if (duty_ns < 0 || duty_ns > period_ns)
-+ return -EINVAL;
-+
-+ tmp = (unsigned long long)clk_get_rate(jz4740_pwm_clk) * period_ns;
-+ do_div(tmp, 1000000000);
-+ period = tmp;
-+
-+ while (period > 0xffff && prescaler < 6) {
-+ period >>= 2;
-+ ++prescaler;
-+ }
-+
-+ if (prescaler == 6)
-+ return -EINVAL;
-+
-+ tmp = (unsigned long long)period * duty_ns;
-+ do_div(tmp, period_ns);
-+ duty = period - tmp;
-+
-+ if (duty >= period)
-+ duty = period - 1;
-+
-+ is_enabled = jz4740_timer_is_enabled(id);
-+ if (is_enabled)
-+ pwm_disable(pwm);
-+
-+ jz4740_timer_set_count(id, 0);
-+ jz4740_timer_set_duty(id, duty);
-+ jz4740_timer_set_period(id, period);
-+
-+ ctrl = JZ_TIMER_CTRL_PRESCALER(prescaler) | JZ_TIMER_CTRL_SRC_EXT |
-+ JZ_TIMER_CTRL_PWM_ABBRUPT_SHUTDOWN;
-+
-+ jz4740_timer_set_ctrl(id, ctrl);
-+
-+ if (is_enabled)
-+ pwm_enable(pwm);
-+
-+ return 0;
-+}
-+
-+int pwm_enable(struct pwm_device *pwm)
-+{
-+ uint32_t ctrl = jz4740_timer_get_ctrl(pwm->id);
-+
-+ ctrl |= JZ_TIMER_CTRL_PWM_ENABLE;
-+ jz4740_timer_set_ctrl(pwm->id, ctrl);
-+ jz4740_timer_enable(pwm->id);
-+
-+ return 0;
-+}
-+
-+void pwm_disable(struct pwm_device *pwm)
-+{
-+ uint32_t ctrl = jz4740_timer_get_ctrl(pwm->id);
-+
-+ ctrl &= ~JZ_TIMER_CTRL_PWM_ENABLE;
-+ jz4740_timer_disable(pwm->id);
-+ jz4740_timer_set_ctrl(pwm->id, ctrl);
-+}
-+
-+static int __init jz4740_pwm_init(void)
-+{
-+ int ret = 0;
-+
-+ jz4740_pwm_clk = clk_get(NULL, "ext");
-+
-+ if (IS_ERR(jz4740_pwm_clk)) {
-+ ret = PTR_ERR(jz4740_pwm_clk);
-+ jz4740_pwm_clk = NULL;
-+ }
-+
-+ return ret;
-+}
-+subsys_initcall(jz4740_pwm_init);
diff --git a/target/linux/xburst/patches-2.6.35/012-serial.patch b/target/linux/xburst/patches-2.6.35/012-serial.patch
deleted file mode 100644
index 677ebf76f4..0000000000
--- a/target/linux/xburst/patches-2.6.35/012-serial.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From d9d3dc9a5a28b2bbb82fedca63aadae8ca540e94 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 19 Jun 2010 04:08:16 +0000
-Subject: [PATCH] MIPS: JZ4740: Add serial support
-
-The JZ4740 UART interface is almost 16550 compatible.
-The UART module needs to be enabled by setting a bit in the FCR register
-and it has support for receive timeout interrupts. Instead of adding yet
-another machine specific quirk to the 8250 serial driver we provide a
-serial_out implementation which sets the required additional flags.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1403/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/jz4740/serial.c | 33 +++++++++++++++++++++++++++++++++
- arch/mips/jz4740/serial.h | 20 ++++++++++++++++++++
- 2 files changed, 53 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/jz4740/serial.c
- create mode 100644 arch/mips/jz4740/serial.h
-
---- /dev/null
-+++ b/arch/mips/jz4740/serial.c
-@@ -0,0 +1,33 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 serial support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/io.h>
-+#include <linux/serial_core.h>
-+#include <linux/serial_reg.h>
-+
-+void jz4740_serial_out(struct uart_port *p, int offset, int value)
-+{
-+ switch (offset) {
-+ case UART_FCR:
-+ value |= 0x10; /* Enable uart module */
-+ break;
-+ case UART_IER:
-+ value |= (value & 0x4) << 2;
-+ break;
-+ default:
-+ break;
-+ }
-+ writeb(value, p->membase + (offset << p->regshift));
-+}
---- /dev/null
-+++ b/arch/mips/jz4740/serial.h
-@@ -0,0 +1,20 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 serial support
-+ *
-+ * 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.
-+ *
-+ * 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 __MIPS_JZ4740_SERIAL_H__
-+
-+void jz4740_serial_out(struct uart_port *p, int offset, int value);
-+
-+#endif
diff --git a/target/linux/xburst/patches-2.6.35/013-prom.patch b/target/linux/xburst/patches-2.6.35/013-prom.patch
deleted file mode 100644
index 937a9356fd..0000000000
--- a/target/linux/xburst/patches-2.6.35/013-prom.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From c615e4c64389ef138c6a13afa744e09134db2c82 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 19 Jun 2010 04:08:17 +0000
-Subject: [PATCH] MIPS: JZ4740: Add prom support
-
-Add support for initializing arcs_cmdline on JZ4740 based machines and
-provides a prom_putchar implementation.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1404/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/jz4740/prom.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 68 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/jz4740/prom.c
-
---- /dev/null
-+++ b/arch/mips/jz4740/prom.c
-@@ -0,0 +1,68 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC prom code
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/string.h>
-+
-+#include <linux/serial_reg.h>
-+
-+#include <asm/bootinfo.h>
-+#include <asm/mach-jz4740/base.h>
-+
-+void jz4740_init_cmdline(int argc, char *argv[])
-+{
-+ unsigned int count = COMMAND_LINE_SIZE - 1;
-+ int i;
-+ char *dst = &(arcs_cmdline[0]);
-+ char *src;
-+
-+ for (i = 1; i < argc && count; ++i) {
-+ src = argv[i];
-+ while (*src && count) {
-+ *dst++ = *src++;
-+ --count;
-+ }
-+ *dst++ = ' ';
-+ }
-+ if (i > 1)
-+ --dst;
-+
-+ *dst = 0;
-+}
-+
-+void __init prom_init(void)
-+{
-+ jz4740_init_cmdline((int)fw_arg0, (char **)fw_arg1);
-+ mips_machtype = MACH_INGENIC_JZ4740;
-+}
-+
-+void __init prom_free_prom_memory(void)
-+{
-+}
-+
-+#define UART_REG(_reg) ((void __iomem *)CKSEG1ADDR(JZ4740_UART0_BASE_ADDR + (_reg << 2)))
-+
-+void prom_putchar(char c)
-+{
-+ uint8_t lsr;
-+
-+ do {
-+ lsr = readb(UART_REG(UART_LSR));
-+ } while ((lsr & UART_LSR_TEMT) == 0);
-+
-+ writeb(c, UART_REG(UART_TX));
-+}
diff --git a/target/linux/xburst/patches-2.6.35/014-platform-devices.patch b/target/linux/xburst/patches-2.6.35/014-platform-devices.patch
deleted file mode 100644
index d2c64d3d07..0000000000
--- a/target/linux/xburst/patches-2.6.35/014-platform-devices.patch
+++ /dev/null
@@ -1,352 +0,0 @@
-From c7efc7b27ca91012c99618ad5efeec705671bd66 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 17 Jul 2010 11:13:29 +0000
-Subject: [PATCH] MIPS: JZ4740: Add platform devices
-
-Add platform devices for all the JZ4740 platform drivers.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1469/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/include/asm/mach-jz4740/platform.h | 36 ++++
- arch/mips/jz4740/platform.c | 291 ++++++++++++++++++++++++++
- 2 files changed, 327 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/platform.h
- create mode 100644 arch/mips/jz4740/platform.c
-
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/platform.h
-@@ -0,0 +1,36 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform device definitions
-+ *
-+ * 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.
-+ *
-+ * 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 __JZ4740_PLATFORM_H
-+#define __JZ4740_PLATFORM_H
-+
-+#include <linux/platform_device.h>
-+
-+extern struct platform_device jz4740_usb_ohci_device;
-+extern struct platform_device jz4740_udc_device;
-+extern struct platform_device jz4740_mmc_device;
-+extern struct platform_device jz4740_rtc_device;
-+extern struct platform_device jz4740_i2c_device;
-+extern struct platform_device jz4740_nand_device;
-+extern struct platform_device jz4740_framebuffer_device;
-+extern struct platform_device jz4740_i2s_device;
-+extern struct platform_device jz4740_pcm_device;
-+extern struct platform_device jz4740_codec_device;
-+extern struct platform_device jz4740_adc_device;
-+
-+void jz4740_serial_device_register(void);
-+
-+#endif
---- /dev/null
-+++ b/arch/mips/jz4740/platform.c
-@@ -0,0 +1,291 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 platform devices
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/platform_device.h>
-+#include <linux/resource.h>
-+
-+#include <linux/dma-mapping.h>
-+
-+#include <asm/mach-jz4740/platform.h>
-+#include <asm/mach-jz4740/base.h>
-+#include <asm/mach-jz4740/irq.h>
-+
-+#include <linux/serial_core.h>
-+#include <linux/serial_8250.h>
-+
-+#include "serial.h"
-+#include "clock.h"
-+
-+/* OHCI controller */
-+static struct resource jz4740_usb_ohci_resources[] = {
-+ {
-+ .start = JZ4740_UHC_BASE_ADDR,
-+ .end = JZ4740_UHC_BASE_ADDR + 0x1000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = JZ4740_IRQ_UHC,
-+ .end = JZ4740_IRQ_UHC,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+struct platform_device jz4740_usb_ohci_device = {
-+ .name = "jz4740-ohci",
-+ .id = -1,
-+ .dev = {
-+ .dma_mask = &jz4740_usb_ohci_device.dev.coherent_dma_mask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ },
-+ .num_resources = ARRAY_SIZE(jz4740_usb_ohci_resources),
-+ .resource = jz4740_usb_ohci_resources,
-+};
-+
-+/* UDC (USB gadget controller) */
-+static struct resource jz4740_usb_gdt_resources[] = {
-+ {
-+ .start = JZ4740_UDC_BASE_ADDR,
-+ .end = JZ4740_UDC_BASE_ADDR + 0x1000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = JZ4740_IRQ_UDC,
-+ .end = JZ4740_IRQ_UDC,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+struct platform_device jz4740_udc_device = {
-+ .name = "jz-udc",
-+ .id = -1,
-+ .dev = {
-+ .dma_mask = &jz4740_udc_device.dev.coherent_dma_mask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ },
-+ .num_resources = ARRAY_SIZE(jz4740_usb_gdt_resources),
-+ .resource = jz4740_usb_gdt_resources,
-+};
-+
-+/* MMC/SD controller */
-+static struct resource jz4740_mmc_resources[] = {
-+ {
-+ .start = JZ4740_MSC_BASE_ADDR,
-+ .end = JZ4740_MSC_BASE_ADDR + 0x1000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = JZ4740_IRQ_MSC,
-+ .end = JZ4740_IRQ_MSC,
-+ .flags = IORESOURCE_IRQ,
-+ }
-+};
-+
-+struct platform_device jz4740_mmc_device = {
-+ .name = "jz4740-mmc",
-+ .id = 0,
-+ .dev = {
-+ .dma_mask = &jz4740_mmc_device.dev.coherent_dma_mask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ },
-+ .num_resources = ARRAY_SIZE(jz4740_mmc_resources),
-+ .resource = jz4740_mmc_resources,
-+};
-+
-+/* RTC controller */
-+static struct resource jz4740_rtc_resources[] = {
-+ {
-+ .start = JZ4740_RTC_BASE_ADDR,
-+ .end = JZ4740_RTC_BASE_ADDR + 0x38 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = JZ4740_IRQ_RTC,
-+ .end = JZ4740_IRQ_RTC,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+struct platform_device jz4740_rtc_device = {
-+ .name = "jz4740-rtc",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(jz4740_rtc_resources),
-+ .resource = jz4740_rtc_resources,
-+};
-+
-+/* I2C controller */
-+static struct resource jz4740_i2c_resources[] = {
-+ {
-+ .start = JZ4740_I2C_BASE_ADDR,
-+ .end = JZ4740_I2C_BASE_ADDR + 0x1000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = JZ4740_IRQ_I2C,
-+ .end = JZ4740_IRQ_I2C,
-+ .flags = IORESOURCE_IRQ,
-+ }
-+};
-+
-+struct platform_device jz4740_i2c_device = {
-+ .name = "jz4740-i2c",
-+ .id = 0,
-+ .num_resources = ARRAY_SIZE(jz4740_i2c_resources),
-+ .resource = jz4740_i2c_resources,
-+};
-+
-+/* NAND controller */
-+static struct resource jz4740_nand_resources[] = {
-+ {
-+ .name = "mmio",
-+ .start = JZ4740_EMC_BASE_ADDR,
-+ .end = JZ4740_EMC_BASE_ADDR + 0x1000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .name = "bank",
-+ .start = 0x18000000,
-+ .end = 0x180C0000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+struct platform_device jz4740_nand_device = {
-+ .name = "jz4740-nand",
-+ .num_resources = ARRAY_SIZE(jz4740_nand_resources),
-+ .resource = jz4740_nand_resources,
-+};
-+
-+/* LCD controller */
-+static struct resource jz4740_framebuffer_resources[] = {
-+ {
-+ .start = JZ4740_LCD_BASE_ADDR,
-+ .end = JZ4740_LCD_BASE_ADDR + 0x1000 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+struct platform_device jz4740_framebuffer_device = {
-+ .name = "jz4740-fb",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(jz4740_framebuffer_resources),
-+ .resource = jz4740_framebuffer_resources,
-+ .dev = {
-+ .dma_mask = &jz4740_framebuffer_device.dev.coherent_dma_mask,
-+ .coherent_dma_mask = DMA_BIT_MASK(32),
-+ },
-+};
-+
-+/* I2S controller */
-+static struct resource jz4740_i2s_resources[] = {
-+ {
-+ .start = JZ4740_AIC_BASE_ADDR,
-+ .end = JZ4740_AIC_BASE_ADDR + 0x38 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+struct platform_device jz4740_i2s_device = {
-+ .name = "jz4740-i2s",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(jz4740_i2s_resources),
-+ .resource = jz4740_i2s_resources,
-+};
-+
-+/* PCM */
-+struct platform_device jz4740_pcm_device = {
-+ .name = "jz4740-pcm",
-+ .id = -1,
-+};
-+
-+/* Codec */
-+static struct resource jz4740_codec_resources[] = {
-+ {
-+ .start = JZ4740_AIC_BASE_ADDR + 0x80,
-+ .end = JZ4740_AIC_BASE_ADDR + 0x88 - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+struct platform_device jz4740_codec_device = {
-+ .name = "jz4740-codec",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(jz4740_codec_resources),
-+ .resource = jz4740_codec_resources,
-+};
-+
-+/* ADC controller */
-+static struct resource jz4740_adc_resources[] = {
-+ {
-+ .start = JZ4740_SADC_BASE_ADDR,
-+ .end = JZ4740_SADC_BASE_ADDR + 0x30,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ {
-+ .start = JZ4740_IRQ_SADC,
-+ .end = JZ4740_IRQ_SADC,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ {
-+ .start = JZ4740_IRQ_ADC_BASE,
-+ .end = JZ4740_IRQ_ADC_BASE,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+struct platform_device jz4740_adc_device = {
-+ .name = "jz4740-adc",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(jz4740_adc_resources),
-+ .resource = jz4740_adc_resources,
-+};
-+
-+/* Serial */
-+#define JZ4740_UART_DATA(_id) \
-+ { \
-+ .flags = UPF_SKIP_TEST | UPF_IOREMAP | UPF_FIXED_TYPE, \
-+ .iotype = UPIO_MEM, \
-+ .regshift = 2, \
-+ .serial_out = jz4740_serial_out, \
-+ .type = PORT_16550, \
-+ .mapbase = JZ4740_UART ## _id ## _BASE_ADDR, \
-+ .irq = JZ4740_IRQ_UART ## _id, \
-+ }
-+
-+static struct plat_serial8250_port jz4740_uart_data[] = {
-+ JZ4740_UART_DATA(0),
-+ JZ4740_UART_DATA(1),
-+ {},
-+};
-+
-+static struct platform_device jz4740_uart_device = {
-+ .name = "serial8250",
-+ .id = 0,
-+ .dev = {
-+ .platform_data = jz4740_uart_data,
-+ },
-+};
-+
-+void jz4740_serial_device_register(void)
-+{
-+ struct plat_serial8250_port *p;
-+
-+ for (p = jz4740_uart_data; p->flags != 0; ++p)
-+ p->uartclk = jz4740_clock_bdata.ext_rate;
-+
-+ platform_device_register(&jz4740_uart_device);
-+}
diff --git a/target/linux/xburst/patches-2.6.35/015-kbuild.patch b/target/linux/xburst/patches-2.6.35/015-kbuild.patch
deleted file mode 100644
index d10b7ec188..0000000000
--- a/target/linux/xburst/patches-2.6.35/015-kbuild.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From a486767b412d7f19a02ef704cc60e4bc79404633 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Wed, 2 Jun 2010 21:10:30 +0200
-Subject: [PATCH] MIPS: JZ4740: Add Kbuild files
-
-This patch adds the Kbuild files for the JZ4740 architecture and adds JZ4740
-support to the MIPS Kbuild files.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
----
- arch/mips/Kconfig | 13 +++++++++++++
- arch/mips/Makefile | 6 ++++++
- arch/mips/jz4740/Kconfig | 8 ++++++++
- arch/mips/jz4740/Makefile | 18 ++++++++++++++++++
- 4 files changed, 45 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/jz4740/Kconfig
- create mode 100644 arch/mips/jz4740/Makefile
-
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -162,6 +162,18 @@ config MACH_JAZZ
- Members include the Acer PICA, MIPS Magnum 4000, MIPS Millennium and
- Olivetti M700-10 workstations.
-
-+config MACH_JZ4740
-+ bool "Ingenic JZ4740 based machines"
-+ select SYS_HAS_CPU_MIPS32_R1
-+ select SYS_SUPPORTS_32BIT_KERNEL
-+ select SYS_SUPPORTS_LITTLE_ENDIAN
-+ select DMA_NONCOHERENT
-+ select IRQ_CPU
-+ select GENERIC_GPIO
-+ select ARCH_REQUIRE_GPIOLIB
-+ select SYS_HAS_EARLY_PRINTK
-+ select HAVE_PWM
-+
- config LASAT
- bool "LASAT Networks platforms"
- select CEVT_R4K
-@@ -686,6 +698,7 @@ endchoice
- source "arch/mips/alchemy/Kconfig"
- source "arch/mips/bcm63xx/Kconfig"
- source "arch/mips/jazz/Kconfig"
-+source "arch/mips/jz4740/Kconfig"
- source "arch/mips/lasat/Kconfig"
- source "arch/mips/pmc-sierra/Kconfig"
- source "arch/mips/powertv/Kconfig"
---- a/arch/mips/Makefile
-+++ b/arch/mips/Makefile
-@@ -661,6 +661,12 @@ else
- load-$(CONFIG_CPU_CAVIUM_OCTEON) += 0xffffffff81100000
- endif
-
-+# Ingenic JZ4740
-+#
-+core-$(CONFIG_MACH_JZ4740) += arch/mips/jz4740/
-+cflags-$(CONFIG_MACH_JZ4740) += -I$(srctree)/arch/mips/include/asm/mach-jz4740
-+load-$(CONFIG_MACH_JZ4740) += 0xffffffff80010000
-+
- cflags-y += -I$(srctree)/arch/mips/include/asm/mach-generic
- drivers-$(CONFIG_PCI) += arch/mips/pci/
-
---- /dev/null
-+++ b/arch/mips/jz4740/Kconfig
-@@ -0,0 +1,8 @@
-+choice
-+ prompt "Machine type"
-+ depends on MACH_JZ4740
-+
-+endchoice
-+
-+config HAVE_PWM
-+ bool
---- /dev/null
-+++ b/arch/mips/jz4740/Makefile
-@@ -0,0 +1,18 @@
-+#
-+# Makefile for the Ingenic JZ4740.
-+#
-+
-+# Object file lists.
-+
-+obj-y += prom.o irq.o time.o reset.o setup.o dma.o \
-+ gpio.o clock.o platform.o timer.o pwm.o serial.o
-+
-+obj-$(CONFIG_DEBUG_FS) += clock-debugfs.o
-+
-+# board specific support
-+
-+# PM support
-+
-+obj-$(CONFIG_PM) += pm.o
-+
-+EXTRA_CFLAGS += -Werror -Wall
diff --git a/target/linux/xburst/patches-2.6.35/020-add-qi_lb60-board-support.patch b/target/linux/xburst/patches-2.6.35/020-add-qi_lb60-board-support.patch
deleted file mode 100644
index 0ac6b391ba..0000000000
--- a/target/linux/xburst/patches-2.6.35/020-add-qi_lb60-board-support.patch
+++ /dev/null
@@ -1,551 +0,0 @@
-From e0548316a6aa5b9fa0df8126a4f0f749fdc5176a Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 17 Jul 2010 11:16:29 +0000
-Subject: [PATCH] MIPS: JZ4740: Add qi_lb60 board support
-
-Add support for the qi_lb60 (a.k.a QI Ben NanoNote) clamshell device.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1472/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/jz4740/Kconfig | 4 +
- arch/mips/jz4740/Makefile | 2 +
- arch/mips/jz4740/board-qi_lb60.c | 495 ++++++++++++++++++++++++++++++++++++++
- 3 files changed, 501 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/jz4740/board-qi_lb60.c
-
-diff --git a/arch/mips/jz4740/Kconfig b/arch/mips/jz4740/Kconfig
-index 8a5e850..3e7141f 100644
---- a/arch/mips/jz4740/Kconfig
-+++ b/arch/mips/jz4740/Kconfig
-@@ -1,6 +1,10 @@
- choice
- prompt "Machine type"
- depends on MACH_JZ4740
-+ default JZ4740_QI_LB60
-+
-+config JZ4740_QI_LB60
-+ bool "Qi Hardware Ben NanoNote"
-
- endchoice
-
-diff --git a/arch/mips/jz4740/Makefile b/arch/mips/jz4740/Makefile
-index a803ccb..a604eae 100644
---- a/arch/mips/jz4740/Makefile
-+++ b/arch/mips/jz4740/Makefile
-@@ -11,6 +11,8 @@ obj-$(CONFIG_DEBUG_FS) += clock-debugfs.o
-
- # board specific support
-
-+obj-$(CONFIG_JZ4740_QI_LB60) += board-qi_lb60.o
-+
- # PM support
-
- obj-$(CONFIG_PM) += pm.o
-diff --git a/arch/mips/jz4740/board-qi_lb60.c b/arch/mips/jz4740/board-qi_lb60.c
-new file mode 100644
-index 0000000..d19732a
---- /dev/null
-+++ b/arch/mips/jz4740/board-qi_lb60.c
-@@ -0,0 +1,495 @@
-+/*
-+ * linux/arch/mips/jz4740/board-qi_lb60.c
-+ *
-+ * QI_LB60 board support
-+ *
-+ * Copyright (c) 2009 Qi Hardware inc.,
-+ * Author: Xiangfu Liu <xiangfu@qi-hardware.com>
-+ * Copyright 2010, Lars-Petrer Clausen <lars@metafoo.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 or later
-+ * as published by the Free Software Foundation.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/gpio.h>
-+
-+#include <linux/input.h>
-+#include <linux/gpio_keys.h>
-+#include <linux/input/matrix_keypad.h>
-+#include <linux/spi/spi.h>
-+#include <linux/spi/spi_gpio.h>
-+#include <linux/power_supply.h>
-+#include <linux/power/jz4740-battery.h>
-+#include <linux/power/gpio-charger.h>
-+
-+#include <asm/mach-jz4740/jz4740_fb.h>
-+#include <asm/mach-jz4740/jz4740_mmc.h>
-+#include <asm/mach-jz4740/jz4740_nand.h>
-+
-+#include <linux/regulator/fixed.h>
-+#include <linux/regulator/machine.h>
-+
-+#include <linux/leds_pwm.h>
-+
-+#include <asm/mach-jz4740/platform.h>
-+
-+#include "clock.h"
-+
-+static bool is_avt2;
-+
-+/* GPIOs */
-+#define QI_LB60_GPIO_SD_CD JZ_GPIO_PORTD(0)
-+#define QI_LB60_GPIO_SD_VCC_EN_N JZ_GPIO_PORTD(2)
-+
-+#define QI_LB60_GPIO_KEYOUT(x) (JZ_GPIO_PORTC(10) + (x))
-+#define QI_LB60_GPIO_KEYIN(x) (JZ_GPIO_PORTD(18) + (x))
-+#define QI_LB60_GPIO_KEYIN8 JZ_GPIO_PORTD(26)
-+
-+/* NAND */
-+static struct nand_ecclayout qi_lb60_ecclayout_1gb = {
-+/* .eccbytes = 36,
-+ .eccpos = {
-+ 6, 7, 8, 9, 10, 11, 12, 13,
-+ 14, 15, 16, 17, 18, 19, 20, 21,
-+ 22, 23, 24, 25, 26, 27, 28, 29,
-+ 30, 31, 32, 33, 34, 35, 36, 37,
-+ 38, 39, 40, 41
-+ },*/
-+ .oobfree = {
-+ { .offset = 2, .length = 4 },
-+ { .offset = 42, .length = 22 }
-+ },
-+};
-+
-+/* Early prototypes of the QI LB60 had only 1GB of NAND.
-+ * In order to support these devices aswell the partition and ecc layout is
-+ * initalized depending on the NAND size */
-+static struct mtd_partition qi_lb60_partitions_1gb[] = {
-+ {
-+ .name = "NAND BOOT partition",
-+ .offset = 0 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ {
-+ .name = "NAND KERNEL partition",
-+ .offset = 4 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ {
-+ .name = "NAND ROOTFS partition",
-+ .offset = 8 * 0x100000,
-+ .size = (504 + 512) * 0x100000,
-+ },
-+};
-+
-+static struct nand_ecclayout qi_lb60_ecclayout_2gb = {
-+/* .eccbytes = 72,
-+ .eccpos = {
-+ 12, 13, 14, 15, 16, 17, 18, 19,
-+ 20, 21, 22, 23, 24, 25, 26, 27,
-+ 28, 29, 30, 31, 32, 33, 34, 35,
-+ 36, 37, 38, 39, 40, 41, 42, 43,
-+ 44, 45, 46, 47, 48, 49, 50, 51,
-+ 52, 53, 54, 55, 56, 57, 58, 59,
-+ 60, 61, 62, 63, 64, 65, 66, 67,
-+ 68, 69, 70, 71, 72, 73, 74, 75,
-+ 76, 77, 78, 79, 80, 81, 82, 83
-+ },*/
-+ .oobfree = {
-+ { .offset = 2, .length = 10 },
-+ { .offset = 84, .length = 44 },
-+ },
-+};
-+
-+static struct mtd_partition qi_lb60_partitions_2gb[] = {
-+ {
-+ .name = "NAND BOOT partition",
-+ .offset = 0 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ {
-+ .name = "NAND KERNEL partition",
-+ .offset = 4 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ {
-+ .name = "NAND ROOTFS partition",
-+ .offset = 8 * 0x100000,
-+ .size = (504 + 512 + 1024) * 0x100000,
-+ },
-+};
-+
-+static void qi_lb60_nand_ident(struct platform_device *pdev,
-+ struct nand_chip *chip, struct mtd_partition **partitions,
-+ int *num_partitions)
-+{
-+ if (chip->page_shift == 12) {
-+ chip->ecc.layout = &qi_lb60_ecclayout_2gb;
-+ *partitions = qi_lb60_partitions_2gb;
-+ *num_partitions = ARRAY_SIZE(qi_lb60_partitions_2gb);
-+ } else {
-+ chip->ecc.layout = &qi_lb60_ecclayout_1gb;
-+ *partitions = qi_lb60_partitions_1gb;
-+ *num_partitions = ARRAY_SIZE(qi_lb60_partitions_1gb);
-+ }
-+}
-+
-+static struct jz_nand_platform_data qi_lb60_nand_pdata = {
-+ .ident_callback = qi_lb60_nand_ident,
-+ .busy_gpio = 94,
-+};
-+
-+/* Keyboard*/
-+
-+#define KEY_QI_QI KEY_F13
-+#define KEY_QI_UPRED KEY_RIGHTALT
-+#define KEY_QI_VOLUP KEY_VOLUMEUP
-+#define KEY_QI_VOLDOWN KEY_VOLUMEDOWN
-+#define KEY_QI_FN KEY_LEFTCTRL
-+
-+static const uint32_t qi_lb60_keymap[] = {
-+ KEY(0, 0, KEY_F1), /* S2 */
-+ KEY(0, 1, KEY_F2), /* S3 */
-+ KEY(0, 2, KEY_F3), /* S4 */
-+ KEY(0, 3, KEY_F4), /* S5 */
-+ KEY(0, 4, KEY_F5), /* S6 */
-+ KEY(0, 5, KEY_F6), /* S7 */
-+ KEY(0, 6, KEY_F7), /* S8 */
-+
-+ KEY(1, 0, KEY_Q), /* S10 */
-+ KEY(1, 1, KEY_W), /* S11 */
-+ KEY(1, 2, KEY_E), /* S12 */
-+ KEY(1, 3, KEY_R), /* S13 */
-+ KEY(1, 4, KEY_T), /* S14 */
-+ KEY(1, 5, KEY_Y), /* S15 */
-+ KEY(1, 6, KEY_U), /* S16 */
-+ KEY(1, 7, KEY_I), /* S17 */
-+ KEY(2, 0, KEY_A), /* S18 */
-+ KEY(2, 1, KEY_S), /* S19 */
-+ KEY(2, 2, KEY_D), /* S20 */
-+ KEY(2, 3, KEY_F), /* S21 */
-+ KEY(2, 4, KEY_G), /* S22 */
-+ KEY(2, 5, KEY_H), /* S23 */
-+ KEY(2, 6, KEY_J), /* S24 */
-+ KEY(2, 7, KEY_K), /* S25 */
-+ KEY(3, 0, KEY_ESC), /* S26 */
-+ KEY(3, 1, KEY_Z), /* S27 */
-+ KEY(3, 2, KEY_X), /* S28 */
-+ KEY(3, 3, KEY_C), /* S29 */
-+ KEY(3, 4, KEY_V), /* S30 */
-+ KEY(3, 5, KEY_B), /* S31 */
-+ KEY(3, 6, KEY_N), /* S32 */
-+ KEY(3, 7, KEY_M), /* S33 */
-+ KEY(4, 0, KEY_TAB), /* S34 */
-+ KEY(4, 1, KEY_CAPSLOCK), /* S35 */
-+ KEY(4, 2, KEY_BACKSLASH), /* S36 */
-+ KEY(4, 3, KEY_APOSTROPHE), /* S37 */
-+ KEY(4, 4, KEY_COMMA), /* S38 */
-+ KEY(4, 5, KEY_DOT), /* S39 */
-+ KEY(4, 6, KEY_SLASH), /* S40 */
-+ KEY(4, 7, KEY_UP), /* S41 */
-+ KEY(5, 0, KEY_O), /* S42 */
-+ KEY(5, 1, KEY_L), /* S43 */
-+ KEY(5, 2, KEY_EQUAL), /* S44 */
-+ KEY(5, 3, KEY_QI_UPRED), /* S45 */
-+ KEY(5, 4, KEY_SPACE), /* S46 */
-+ KEY(5, 5, KEY_QI_QI), /* S47 */
-+ KEY(5, 6, KEY_RIGHTCTRL), /* S48 */
-+ KEY(5, 7, KEY_LEFT), /* S49 */
-+ KEY(6, 0, KEY_F8), /* S50 */
-+ KEY(6, 1, KEY_P), /* S51 */
-+ KEY(6, 2, KEY_BACKSPACE),/* S52 */
-+ KEY(6, 3, KEY_ENTER), /* S53 */
-+ KEY(6, 4, KEY_QI_VOLUP), /* S54 */
-+ KEY(6, 5, KEY_QI_VOLDOWN), /* S55 */
-+ KEY(6, 6, KEY_DOWN), /* S56 */
-+ KEY(6, 7, KEY_RIGHT), /* S57 */
-+
-+ KEY(7, 0, KEY_LEFTSHIFT), /* S58 */
-+ KEY(7, 1, KEY_LEFTALT), /* S59 */
-+ KEY(7, 2, KEY_QI_FN), /* S60 */
-+};
-+
-+static const struct matrix_keymap_data qi_lb60_keymap_data = {
-+ .keymap = qi_lb60_keymap,
-+ .keymap_size = ARRAY_SIZE(qi_lb60_keymap),
-+};
-+
-+static const unsigned int qi_lb60_keypad_cols[] = {
-+ QI_LB60_GPIO_KEYOUT(0),
-+ QI_LB60_GPIO_KEYOUT(1),
-+ QI_LB60_GPIO_KEYOUT(2),
-+ QI_LB60_GPIO_KEYOUT(3),
-+ QI_LB60_GPIO_KEYOUT(4),
-+ QI_LB60_GPIO_KEYOUT(5),
-+ QI_LB60_GPIO_KEYOUT(6),
-+ QI_LB60_GPIO_KEYOUT(7),
-+};
-+
-+static const unsigned int qi_lb60_keypad_rows[] = {
-+ QI_LB60_GPIO_KEYIN(0),
-+ QI_LB60_GPIO_KEYIN(1),
-+ QI_LB60_GPIO_KEYIN(2),
-+ QI_LB60_GPIO_KEYIN(3),
-+ QI_LB60_GPIO_KEYIN(4),
-+ QI_LB60_GPIO_KEYIN(5),
-+ QI_LB60_GPIO_KEYIN(6),
-+ QI_LB60_GPIO_KEYIN8,
-+};
-+
-+static struct matrix_keypad_platform_data qi_lb60_pdata = {
-+ .keymap_data = &qi_lb60_keymap_data,
-+ .col_gpios = qi_lb60_keypad_cols,
-+ .row_gpios = qi_lb60_keypad_rows,
-+ .num_col_gpios = ARRAY_SIZE(qi_lb60_keypad_cols),
-+ .num_row_gpios = ARRAY_SIZE(qi_lb60_keypad_rows),
-+ .col_scan_delay_us = 10,
-+ .debounce_ms = 10,
-+ .wakeup = 1,
-+ .active_low = 1,
-+};
-+
-+static struct platform_device qi_lb60_keypad = {
-+ .name = "matrix-keypad",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &qi_lb60_pdata,
-+ },
-+};
-+
-+/* Display */
-+static struct fb_videomode qi_lb60_video_modes[] = {
-+ {
-+ .name = "320x240",
-+ .xres = 320,
-+ .yres = 240,
-+ .refresh = 30,
-+ .left_margin = 140,
-+ .right_margin = 273,
-+ .upper_margin = 20,
-+ .lower_margin = 2,
-+ .hsync_len = 1,
-+ .vsync_len = 1,
-+ .sync = 0,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+ },
-+};
-+
-+static struct jz4740_fb_platform_data qi_lb60_fb_pdata = {
-+ .width = 60,
-+ .height = 45,
-+ .num_modes = ARRAY_SIZE(qi_lb60_video_modes),
-+ .modes = qi_lb60_video_modes,
-+ .bpp = 24,
-+ .lcd_type = JZ_LCD_TYPE_8BIT_SERIAL,
-+ .pixclk_falling_edge = 1,
-+};
-+
-+struct spi_gpio_platform_data spigpio_platform_data = {
-+ .sck = JZ_GPIO_PORTC(23),
-+ .mosi = JZ_GPIO_PORTC(22),
-+ .miso = -1,
-+ .num_chipselect = 1,
-+};
-+
-+static struct platform_device spigpio_device = {
-+ .name = "spi_gpio",
-+ .id = 1,
-+ .dev = {
-+ .platform_data = &spigpio_platform_data,
-+ },
-+};
-+
-+static struct spi_board_info qi_lb60_spi_board_info[] = {
-+ {
-+ .modalias = "ili8960",
-+ .controller_data = (void *)JZ_GPIO_PORTC(21),
-+ .chip_select = 0,
-+ .bus_num = 1,
-+ .max_speed_hz = 30 * 1000,
-+ .mode = SPI_3WIRE,
-+ },
-+};
-+
-+/* Battery */
-+static struct jz_battery_platform_data qi_lb60_battery_pdata = {
-+ .gpio_charge = JZ_GPIO_PORTC(27),
-+ .gpio_charge_active_low = 1,
-+ .info = {
-+ .name = "battery",
-+ .technology = POWER_SUPPLY_TECHNOLOGY_LIPO,
-+ .voltage_max_design = 4200000,
-+ .voltage_min_design = 3600000,
-+ },
-+};
-+
-+/* GPIO Key: power */
-+static struct gpio_keys_button qi_lb60_gpio_keys_buttons[] = {
-+ [0] = {
-+ .code = KEY_POWER,
-+ .gpio = JZ_GPIO_PORTD(29),
-+ .active_low = 1,
-+ .desc = "Power",
-+ .wakeup = 1,
-+ },
-+};
-+
-+static struct gpio_keys_platform_data qi_lb60_gpio_keys_data = {
-+ .nbuttons = ARRAY_SIZE(qi_lb60_gpio_keys_buttons),
-+ .buttons = qi_lb60_gpio_keys_buttons,
-+};
-+
-+static struct platform_device qi_lb60_gpio_keys = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &qi_lb60_gpio_keys_data,
-+ }
-+};
-+
-+static struct jz4740_mmc_platform_data qi_lb60_mmc_pdata = {
-+ .gpio_card_detect = QI_LB60_GPIO_SD_CD,
-+ .gpio_read_only = -1,
-+ .gpio_power = QI_LB60_GPIO_SD_VCC_EN_N,
-+ .power_active_low = 1,
-+};
-+
-+/* OHCI */
-+static struct regulator_consumer_supply avt2_usb_regulator_consumer =
-+ REGULATOR_SUPPLY("vbus", "jz4740-ohci");
-+
-+static struct regulator_init_data avt2_usb_regulator_init_data = {
-+ .num_consumer_supplies = 1,
-+ .consumer_supplies = &avt2_usb_regulator_consumer,
-+ .constraints = {
-+ .name = "USB power",
-+ .min_uV = 5000000,
-+ .max_uV = 5000000,
-+ .valid_modes_mask = REGULATOR_MODE_NORMAL,
-+ .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-+ },
-+};
-+
-+static struct fixed_voltage_config avt2_usb_regulator_data = {
-+ .supply_name = "USB power",
-+ .microvolts = 5000000,
-+ .gpio = JZ_GPIO_PORTB(17),
-+ .init_data = &avt2_usb_regulator_init_data,
-+};
-+
-+static struct platform_device avt2_usb_regulator_device = {
-+ .name = "reg-fixed-voltage",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &avt2_usb_regulator_data,
-+ }
-+};
-+
-+/* beeper */
-+static struct platform_device qi_lb60_pwm_beeper = {
-+ .name = "pwm-beeper",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = (void *)4,
-+ },
-+};
-+
-+/* charger */
-+static char *qi_lb60_batteries[] = {
-+ "battery",
-+};
-+
-+static struct gpio_charger_platform_data qi_lb60_charger_pdata = {
-+ .name = "usb",
-+ .type = POWER_SUPPLY_TYPE_USB,
-+ .gpio = JZ_GPIO_PORTD(28),
-+ .gpio_active_low = 1,
-+ .batteries = qi_lb60_batteries,
-+ .num_batteries = ARRAY_SIZE(qi_lb60_batteries),
-+};
-+
-+static struct platform_device qi_lb60_charger_device = {
-+ .name = "gpio-charger",
-+ .dev = {
-+ .platform_data = &qi_lb60_charger_pdata,
-+ },
-+};
-+
-+
-+static struct platform_device *jz_platform_devices[] __initdata = {
-+ &jz4740_udc_device,
-+ &jz4740_mmc_device,
-+ &jz4740_nand_device,
-+ &qi_lb60_keypad,
-+ &spigpio_device,
-+ &jz4740_framebuffer_device,
-+ &jz4740_pcm_device,
-+ &jz4740_i2s_device,
-+ &jz4740_codec_device,
-+ &jz4740_rtc_device,
-+ &jz4740_adc_device,
-+ &qi_lb60_gpio_keys,
-+ &qi_lb60_pwm_beeper,
-+ &qi_lb60_charger_device,
-+};
-+
-+static void __init board_gpio_setup(void)
-+{
-+ /* We only need to enable/disable pullup here for pins used in generic
-+ * drivers. Everything else is done by the drivers themselfs. */
-+ jz_gpio_disable_pullup(QI_LB60_GPIO_SD_VCC_EN_N);
-+ jz_gpio_disable_pullup(QI_LB60_GPIO_SD_CD);
-+}
-+
-+static int __init qi_lb60_init_platform_devices(void)
-+{
-+ jz4740_framebuffer_device.dev.platform_data = &qi_lb60_fb_pdata;
-+ jz4740_nand_device.dev.platform_data = &qi_lb60_nand_pdata;
-+ jz4740_adc_device.dev.platform_data = &qi_lb60_battery_pdata;
-+ jz4740_mmc_device.dev.platform_data = &qi_lb60_mmc_pdata;
-+
-+ jz4740_serial_device_register();
-+
-+ spi_register_board_info(qi_lb60_spi_board_info,
-+ ARRAY_SIZE(qi_lb60_spi_board_info));
-+
-+ if (is_avt2) {
-+ platform_device_register(&avt2_usb_regulator_device);
-+ platform_device_register(&jz4740_usb_ohci_device);
-+ }
-+
-+ return platform_add_devices(jz_platform_devices,
-+ ARRAY_SIZE(jz_platform_devices));
-+
-+}
-+
-+struct jz4740_clock_board_data jz4740_clock_bdata = {
-+ .ext_rate = 12000000,
-+ .rtc_rate = 32768,
-+};
-+
-+static __init int board_avt2(char *str)
-+{
-+ qi_lb60_mmc_pdata.card_detect_active_low = 1;
-+ is_avt2 = true;
-+
-+ return 1;
-+}
-+__setup("avt2", board_avt2);
-+
-+static int __init qi_lb60_board_setup(void)
-+{
-+ printk(KERN_INFO "Qi Hardware JZ4740 QI %s setup\n",
-+ is_avt2 ? "AVT2" : "LB60");
-+
-+ board_gpio_setup();
-+
-+ if (qi_lb60_init_platform_devices())
-+ panic("Failed to initalize platform devices\n");
-+
-+ return 0;
-+}
-+arch_initcall(qi_lb60_board_setup);
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.35/021-add-n516-board-support.patch b/target/linux/xburst/patches-2.6.35/021-add-n516-board-support.patch
deleted file mode 100644
index 309374875c..0000000000
--- a/target/linux/xburst/patches-2.6.35/021-add-n516-board-support.patch
+++ /dev/null
@@ -1,684 +0,0 @@
-From c260fa2e5fe9699824190555e075d6c1157d5f36 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 17:25:01 +0200
-Subject: [PATCH] Add n516 board support
-
----
- arch/mips/include/asm/mach-jz4740/board-n516.h | 39 +++
- arch/mips/jz4740/Kconfig | 4 +
- arch/mips/jz4740/Makefile | 1 +
- arch/mips/jz4740/board-n516-display.c | 394 ++++++++++++++++++++++++
- arch/mips/jz4740/board-n516.c | 203 ++++++++++++
- 5 files changed, 641 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/board-n516.h
- create mode 100644 arch/mips/jz4740/board-n516-display.c
- create mode 100644 arch/mips/jz4740/board-n516.c
-
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/board-n516.h
-@@ -0,0 +1,39 @@
-+/*
-+ * linux/include/asm-mips/mach-jz4740/board-n516.h
-+ *
-+ * JZ4730-based N516 board definition.
-+ *
-+ * Copyright (C) 2009, Yauhen Kharuzhy <jekhor@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.
-+ */
-+
-+#ifndef __ASM_JZ4740_N516_H__
-+#define __ASM_JZ4740_N516_H__
-+
-+#include <asm/mach-jz4740/gpio.h>
-+
-+/*
-+ * GPIO
-+ */
-+#define GPIO_SD_VCC_EN_N JZ_GPIO_PORTD(17)
-+#define GPIO_SD_CD_N JZ_GPIO_PORTD(7)
-+#define GPIO_SD_WP JZ_GPIO_PORTD(15)
-+#define GPIO_USB_DETECT JZ_GPIO_PORTD(19)
-+#define GPIO_CHARG_STAT_N JZ_GPIO_PORTD(16)
-+#define GPIO_LED_ENABLE JZ_GPIO_PORTD(28)
-+#define GPIO_LPC_INT JZ_GPIO_PORTD(14)
-+#define GPIO_HPHONE_DETECT JZ_GPIO_PORTD(20)
-+#define GPIO_SPEAKER_ENABLE JZ_GPIO_PORTD(21)
-+
-+/* Display */
-+#define GPIO_DISPLAY_RST_L JZ_GPIO_PORTB(18)
-+#define GPIO_DISPLAY_RDY JZ_GPIO_PORTB(17)
-+#define GPIO_DISPLAY_STBY JZ_GPIO_PORTC(22)
-+#define GPIO_DISPLAY_ERR JZ_GPIO_PORTC(23)
-+#define GPIO_DISPLAY_OFF_N JZ_GPIO_PORTD(1)
-+
-+#endif /* __ASM_JZ4740_N516_H__ */
---- a/arch/mips/jz4740/Kconfig
-+++ b/arch/mips/jz4740/Kconfig
-@@ -6,6 +6,10 @@ choice
- config JZ4740_QI_LB60
- bool "Qi Hardware Ben NanoNote"
-
-+config JZ4740_N516
-+ bool "Hanvon n516 eBook reader"
-+ select SOC_JZ4740
-+
- endchoice
-
- config HAVE_PWM
---- a/arch/mips/jz4740/Makefile
-+++ b/arch/mips/jz4740/Makefile
-@@ -12,6 +12,7 @@ obj-$(CONFIG_DEBUG_FS) += clock-debugfs.
- # board specific support
-
- obj-$(CONFIG_JZ4740_QI_LB60) += board-qi_lb60.o
-+obj-$(CONFIG_JZ4740_N516) += board-n516.o board-n516-display.o
-
- # PM support
-
---- /dev/null
-+++ b/arch/mips/jz4740/board-n516-display.c
-@@ -0,0 +1,394 @@
-+/*
-+ * board-n516-display.c -- Platform device for N516 display
-+ *
-+ * Copyright (C) 2009, Yauhen Kharuzhy <jekhor@gmail.com>
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive for
-+ * more details.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/delay.h>
-+#include <linux/interrupt.h>
-+#include <linux/fb.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/irq.h>
-+#include <linux/gpio.h>
-+
-+#include <asm/mach-jz4740/jz4740_fb.h>
-+
-+#include <asm/mach-jz4740/platform.h>
-+#include <asm/mach-jz4740/board-n516.h>
-+
-+#include <video/metronomefb.h>
-+#include <linux/console.h>
-+
-+static struct fb_videomode n516_fb_modes[] = {
-+ [0] = {
-+ .name = "Metronome 800x600",
-+ .refresh = 50,
-+ .xres = 400,
-+ .yres = 624,
-+ .hsync_len = 31,
-+ .vsync_len = 23,
-+ .right_margin = 31,
-+ .left_margin = 5,
-+ .upper_margin = 1,
-+ .lower_margin = 2,
-+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-+ },
-+};
-+
-+static struct jz4740_fb_platform_data n516_fb_pdata = {
-+ .num_modes = ARRAY_SIZE(n516_fb_modes),
-+ .modes = n516_fb_modes,
-+ .bpp = 16,
-+ .lcd_type = JZ_LCD_TYPE_GENERIC_16_BIT,
-+};
-+
-+struct n516_board_info {
-+ uint8_t *metromem;
-+ size_t wfm_size;
-+ struct fb_info *host_fbinfo; /* the host LCD controller's fbi */
-+ unsigned int fw;
-+ unsigned int fh;
-+};
-+
-+static struct platform_device *n516_device;
-+static struct n516_board_info n516_board_info;
-+
-+static int metronome_gpios[] = {
-+ GPIO_DISPLAY_STBY,
-+ GPIO_DISPLAY_RST_L,
-+ GPIO_DISPLAY_RDY,
-+ GPIO_DISPLAY_ERR,
-+/* GPIO_DISPLAY_OFF_N,*/
-+};
-+
-+static const char *metronome_gpio_names[] = {
-+ "Metronome STDBY",
-+ "Metronome RST",
-+ "Metronome RDY",
-+ "Metronome ERR",
-+/* "Metronone OFF",*/
-+};
-+
-+static int n516_enable_hostfb(bool enable)
-+{
-+ int ret;
-+ int blank = enable ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN;
-+
-+ acquire_console_sem();
-+ ret = fb_blank(n516_board_info.host_fbinfo, blank);
-+ release_console_sem();
-+
-+ return ret;
-+}
-+
-+static int n516_init_metronome_gpios(struct metronomefb_par *par)
-+{
-+ int i;
-+ int ret;
-+
-+ for (i = 0; i < ARRAY_SIZE(metronome_gpios); ++i) {
-+ ret = gpio_request(metronome_gpios[i], metronome_gpio_names[i]);
-+ if (ret)
-+ goto err;
-+ }
-+
-+ gpio_direction_output(GPIO_DISPLAY_OFF_N, 0);
-+ gpio_direction_output(GPIO_DISPLAY_RST_L, 0);
-+ gpio_direction_output(GPIO_DISPLAY_STBY, 0);
-+ gpio_direction_input(GPIO_DISPLAY_RDY);
-+ gpio_direction_input(GPIO_DISPLAY_ERR);
-+
-+ return 0;
-+err:
-+ for (--i; i >= 0; --i)
-+ gpio_free(metronome_gpios[i]);
-+
-+ return ret;
-+}
-+
-+static int n516_share_video_mem(struct fb_info *info)
-+{
-+ int ret;
-+
-+ dev_dbg(&n516_device->dev, "ENTER %s\n", __func__);
-+ dev_dbg(&n516_device->dev, "%s, info->var.xres = %u, info->var.yres = %u\n", __func__, info->var.xres, info->var.yres);
-+ /* rough check if this is our desired fb and not something else */
-+ if ((info->var.xres != n516_fb_pdata.modes[0].xres)
-+ || (info->var.yres != n516_fb_pdata.modes[0].yres))
-+ return 0;
-+
-+ /* we've now been notified that we have our new fb */
-+ n516_board_info.metromem = info->screen_base;
-+ n516_board_info.host_fbinfo = info;
-+
-+ n516_enable_hostfb(false);
-+ /* try to refcount host drv since we are the consumer after this */
-+ if (!try_module_get(info->fbops->owner))
-+ return -ENODEV;
-+
-+ /* this _add binds metronomefb to n516. metronomefb refcounts n516 */
-+ ret = platform_device_add(n516_device);
-+
-+ if (ret) {
-+ platform_device_put(n516_device);
-+ return ret;
-+ }
-+
-+ /* request our platform independent driver */
-+ request_module("metronomefb");
-+
-+ return 0;
-+}
-+
-+static int n516_unshare_video_mem(struct fb_info *info)
-+{
-+ dev_dbg(&n516_device->dev, "ENTER %s\n", __func__);
-+
-+ if (info != n516_board_info.host_fbinfo)
-+ return 0;
-+
-+ module_put(n516_board_info.host_fbinfo->fbops->owner);
-+ return 0;
-+}
-+
-+static int n516_fb_notifier_callback(struct notifier_block *self,
-+ unsigned long event, void *data)
-+{
-+ struct fb_event *evdata = data;
-+ struct fb_info *info = evdata->info;
-+
-+ dev_dbg(&n516_device->dev, "ENTER %s\n", __func__);
-+
-+ if (event == FB_EVENT_FB_REGISTERED)
-+ return n516_share_video_mem(info);
-+ else if (event == FB_EVENT_FB_UNREGISTERED)
-+ return n516_unshare_video_mem(info);
-+
-+ return 0;
-+}
-+
-+static struct notifier_block n516_fb_notif = {
-+ .notifier_call = n516_fb_notifier_callback,
-+};
-+
-+/* this gets called as part of our init. these steps must be done now so
-+ * that we can use set_pxa_fb_info */
-+static void __init n516_presetup_fb(void)
-+{
-+ int padding_size;
-+ int totalsize;
-+
-+ /* the frame buffer is divided as follows:
-+ command | CRC | padding
-+ 16kb waveform data | CRC | padding
-+ image data | CRC
-+ */
-+
-+ n516_board_info.fw = 800;
-+ n516_board_info.fh = 624;
-+
-+ /* waveform must be 16k + 2 for checksum */
-+ n516_board_info.wfm_size = roundup(16*1024 + 2, n516_board_info.fw);
-+
-+ padding_size = PAGE_SIZE + (4 * n516_board_info.fw);
-+
-+ /* total is 1 cmd , 1 wfm, padding and image */
-+ totalsize = n516_board_info.fw + n516_board_info.wfm_size;
-+ totalsize += padding_size + (n516_board_info.fw*n516_board_info.fh);
-+
-+ /* save this off because we're manipulating fw after this and
-+ * we'll need it when we're ready to setup the framebuffer */
-+
-+ /* the reason we do this adjustment is because we want to acquire
-+ * more framebuffer memory without imposing custom awareness on the
-+ * underlying driver */
-+ n516_fb_pdata.modes[0].yres = DIV_ROUND_UP(totalsize, n516_board_info.fw);
-+
-+ jz4740_framebuffer_device.dev.platform_data = &n516_fb_pdata;
-+ platform_device_register(&jz4740_framebuffer_device);
-+}
-+
-+/* this gets called by metronomefb as part of its init, in our case, we
-+ * have already completed initial framebuffer init in presetup_fb so we
-+ * can just setup the fb access pointers */
-+static int n516_setup_fb(struct metronomefb_par *par)
-+{
-+ /* metromem was set up by the notifier in share_video_mem so now
-+ * we can use its value to calculate the other entries */
-+ par->metromem_cmd = (struct metromem_cmd *) n516_board_info.metromem;
-+ par->metromem_wfm = n516_board_info.metromem + n516_board_info.fw;
-+ par->metromem_img = par->metromem_wfm + n516_board_info.wfm_size;
-+ par->metromem_img_csum = (u16 *) (par->metromem_img + (n516_board_info.fw * n516_board_info.fh));
-+ par->metromem_dma = n516_board_info.host_fbinfo->fix.smem_start;
-+
-+ return 0;
-+}
-+
-+static int n516_get_panel_type(void)
-+{
-+ return 5;
-+}
-+
-+static irqreturn_t n516_handle_irq(int irq, void *dev_id)
-+{
-+ struct metronomefb_par *par = dev_id;
-+
-+ dev_dbg(&par->pdev->dev, "Metronome IRQ! RDY=%d\n", gpio_get_value(GPIO_DISPLAY_RDY));
-+ wake_up_all(&par->waitq);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void n516_power_ctl(struct metronomefb_par *par, int cmd)
-+{
-+ switch (cmd) {
-+ case METRONOME_POWER_OFF:
-+ gpio_set_value(GPIO_DISPLAY_OFF_N, 1);
-+ n516_enable_hostfb(false);
-+ break;
-+ case METRONOME_POWER_ON:
-+ gpio_set_value(GPIO_DISPLAY_OFF_N, 0);
-+ n516_enable_hostfb(true);
-+ break;
-+ }
-+}
-+
-+static int n516_get_rdy(struct metronomefb_par *par)
-+{
-+ return gpio_get_value(GPIO_DISPLAY_RDY);
-+}
-+
-+static int n516_get_err(struct metronomefb_par *par)
-+{
-+ return gpio_get_value(GPIO_DISPLAY_ERR);
-+}
-+
-+static int n516_setup_irq(struct fb_info *info)
-+{
-+ int ret;
-+
-+ dev_dbg(&n516_device->dev, "ENTER %s\n", __func__);
-+
-+ ret = request_irq(gpio_to_irq(GPIO_DISPLAY_RDY), n516_handle_irq,
-+ IRQF_TRIGGER_RISING,
-+ "n516", info->par);
-+ if (ret)
-+ dev_err(&n516_device->dev, "request_irq failed: %d\n", ret);
-+
-+ return ret;
-+}
-+
-+static void n516_set_rst(struct metronomefb_par *par, int state)
-+{
-+ dev_dbg(&n516_device->dev, "ENTER %s, RDY=%d\n", __func__, gpio_get_value(GPIO_DISPLAY_RDY));
-+ if (state)
-+ gpio_set_value(GPIO_DISPLAY_RST_L, 1);
-+ else
-+ gpio_set_value(GPIO_DISPLAY_RST_L, 0);
-+}
-+
-+static void n516_set_stdby(struct metronomefb_par *par, int state)
-+{
-+ dev_dbg(&n516_device->dev, "ENTER %s, RDY=%d\n", __func__, gpio_get_value(GPIO_DISPLAY_RDY));
-+ if (state)
-+ gpio_set_value(GPIO_DISPLAY_STBY, 1);
-+ else
-+ gpio_set_value(GPIO_DISPLAY_STBY, 0);
-+}
-+
-+static int n516_wait_event(struct metronomefb_par *par)
-+{
-+ unsigned long timeout = jiffies + HZ / 20;
-+
-+ dev_dbg(&n516_device->dev, "ENTER1 %s, RDY=%d\n",
-+ __func__, gpio_get_value(GPIO_DISPLAY_RDY));
-+ while (n516_get_rdy(par) && time_before(jiffies, timeout))
-+ schedule();
-+
-+ dev_dbg(&n516_device->dev, "ENTER2 %s, RDY=%d\n",
-+ __func__, gpio_get_value(GPIO_DISPLAY_RDY));
-+ return wait_event_timeout(par->waitq,
-+ n516_get_rdy(par), HZ * 2) ? 0 : -EIO;
-+}
-+
-+static int n516_wait_event_intr(struct metronomefb_par *par)
-+{
-+ unsigned long timeout = jiffies + HZ/20;
-+
-+ dev_dbg(&n516_device->dev, "ENTER1 %s, RDY=%d\n",
-+ __func__, gpio_get_value(GPIO_DISPLAY_RDY));
-+ while (n516_get_rdy(par) && time_before(jiffies, timeout))
-+ schedule();
-+
-+ dev_dbg(&n516_device->dev, "ENTER2 %s, RDY=%d\n",
-+ __func__, gpio_get_value(GPIO_DISPLAY_RDY));
-+ return wait_event_interruptible_timeout(par->waitq,
-+ n516_get_rdy(par), HZ * 2) ? 0 : -EIO;
-+}
-+
-+static void n516_cleanup(struct metronomefb_par *par)
-+{
-+ int i;
-+
-+ free_irq(gpio_to_irq(GPIO_DISPLAY_RDY), par);
-+ for (i = 0; i < ARRAY_SIZE(metronome_gpios); ++i)
-+ gpio_free(metronome_gpios[i]);
-+}
-+
-+static struct metronome_board n516_board __initdata = {
-+ .owner = THIS_MODULE,
-+ .power_ctl = n516_power_ctl,
-+ .setup_irq = n516_setup_irq,
-+ .setup_io = n516_init_metronome_gpios,
-+ .setup_fb = n516_setup_fb,
-+ .set_rst = n516_set_rst,
-+ .get_err = n516_get_err,
-+ .get_rdy = n516_get_rdy,
-+ .set_stdby = n516_set_stdby,
-+ .met_wait_event = n516_wait_event,
-+ .met_wait_event_intr = n516_wait_event_intr,
-+ .get_panel_type = n516_get_panel_type,
-+ .cleanup = n516_cleanup,
-+};
-+
-+static int __init n516_init(void)
-+{
-+ int ret;
-+
-+ /* Keep the metronome off, until its driver is loaded */
-+ ret = gpio_request(GPIO_DISPLAY_OFF_N, "Display off");
-+ if (ret)
-+ return ret;
-+
-+ gpio_direction_output(GPIO_DISPLAY_OFF_N, 1);
-+
-+ /* before anything else, we request notification for any fb
-+ * creation events */
-+ fb_register_client(&n516_fb_notif);
-+
-+ n516_device = platform_device_alloc("metronomefb", -1);
-+ if (!n516_device)
-+ return -ENOMEM;
-+
-+ /* the n516_board that will be seen by metronomefb is a copy */
-+ platform_device_add_data(n516_device, &n516_board,
-+ sizeof(n516_board));
-+
-+ n516_presetup_fb();
-+
-+ return 0;
-+}
-+module_init(n516_init);
-+
-+MODULE_DESCRIPTION("board driver for n516 display");
-+MODULE_AUTHOR("Yauhen Kharuzhy");
-+MODULE_LICENSE("GPL");
---- /dev/null
-+++ b/arch/mips/jz4740/board-n516.c
-@@ -0,0 +1,203 @@
-+/*
-+ * linux/arch/mips/jz4740/board-516.c
-+ *
-+ * JZ4740 n516 board setup routines.
-+ *
-+ * Copyright (c) 2009, Yauhen Kharuzhy <jekhor@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.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/ioport.h>
-+#include <linux/mm.h>
-+#include <linux/console.h>
-+#include <linux/delay.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <linux/mtd/mtd.h>
-+#include <linux/leds.h>
-+
-+#include <linux/power_supply.h>
-+#include <linux/power/gpio-charger.h>
-+
-+#include <linux/i2c.h>
-+#include <linux/i2c-gpio.h>
-+
-+#include <asm/mach-jz4740/jz4740_mmc.h>
-+#include <asm/mach-jz4740/jz4740_nand.h>
-+
-+#include <asm/mach-jz4740/board-n516.h>
-+#include <asm/mach-jz4740/platform.h>
-+
-+#include "clock.h"
-+
-+static long n516_panic_blink(long time)
-+{
-+ gpio_set_value(GPIO_LED_ENABLE, 1);
-+ mdelay(200);
-+ gpio_set_value(GPIO_LED_ENABLE, 0);
-+ mdelay(200);
-+
-+ return 400;
-+}
-+
-+static void __init board_gpio_setup(void)
-+{
-+/* jz_gpio_enable_pullup(JZ_GPIO_PORTD(23));
-+ jz_gpio_enable_pullup(JZ_GPIO_PORTD(24));*/
-+}
-+
-+static struct i2c_gpio_platform_data n516_i2c_pdata = {
-+ .sda_pin = JZ_GPIO_PORTD(23),
-+ .scl_pin = JZ_GPIO_PORTD(24),
-+ .udelay = 2,
-+ .timeout = 3 * HZ,
-+};
-+
-+static struct platform_device n516_i2c_device = {
-+ .name = "i2c-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &n516_i2c_pdata,
-+ },
-+};
-+
-+static const struct i2c_board_info n516_i2c_board_info[] = {
-+ {
-+ .type = "LPC524",
-+ .addr = 0x54,
-+ },
-+ {
-+ .type = "lm75a",
-+ .addr = 0x48,
-+ }
-+};
-+
-+static struct jz4740_mmc_platform_data n516_mmc_pdata = {
-+ .gpio_card_detect = GPIO_SD_CD_N,
-+ .card_detect_active_low = 1,
-+ .gpio_read_only = -1,
-+ .gpio_power = GPIO_SD_VCC_EN_N,
-+ .power_active_low = 1,
-+};
-+
-+static struct gpio_led n516_leds[] = {
-+ {
-+ .name = "n516:blue:power",
-+ .gpio = GPIO_LED_ENABLE,
-+ .default_state = LEDS_GPIO_DEFSTATE_ON,
-+ .default_trigger = "nand-disk",
-+ }
-+};
-+
-+static struct gpio_led_platform_data n516_leds_pdata = {
-+ .leds = n516_leds,
-+ .num_leds = ARRAY_SIZE(n516_leds),
-+};
-+
-+static struct platform_device n516_leds_device = {
-+ .name = "leds-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &n516_leds_pdata,
-+ },
-+};
-+
-+static struct mtd_partition n516_partitions[] = {
-+ { .name = "NAND BOOT partition",
-+ .offset = 0 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ { .name = "NAND KERNEL partition",
-+ .offset = 4 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ { .name = "NAND ROOTFS partition",
-+ .offset = 8 * 0x100000,
-+ .size = 504 * 0x100000,
-+ },
-+};
-+
-+static struct nand_ecclayout n516_ecclayout = {
-+/* .eccbytes = 36,
-+ .eccpos = {
-+ 6, 7, 8, 9, 10, 11, 12, 13, 14,
-+ 15, 16, 17, 18, 19, 20, 21, 22, 23,
-+ 24, 25, 26, 27, 28, 29, 30, 31, 32,
-+ 33, 34, 35, 36, 37, 38, 39, 40, 41,
-+ },*/
-+ .oobfree = {
-+ {
-+ .offset = 2,
-+ .length = 4
-+ },
-+ {
-+ .offset = 42,
-+ .length = 22,
-+ }
-+ }
-+};
-+
-+static struct jz_nand_platform_data n516_nand_pdata = {
-+ .ecc_layout = &n516_ecclayout,
-+ .partitions = n516_partitions,
-+ .num_partitions = ARRAY_SIZE(n516_partitions),
-+ .busy_gpio = 94,
-+};
-+
-+static char *n516_batteries[] = {
-+ "n516_battery",
-+};
-+
-+static struct gpio_charger_platform_data n516_charger_pdata = {
-+ .name = "usb",
-+ .type = POWER_SUPPLY_TYPE_USB,
-+ .gpio = GPIO_USB_DETECT,
-+ .gpio_active_low = 1,
-+ .batteries = n516_batteries,
-+ .num_batteries = ARRAY_SIZE(n516_batteries),
-+};
-+
-+static struct platform_device n516_charger_device = {
-+ .name = "gpio-charger",
-+ .dev = {
-+ .platform_data = &n516_charger_pdata,
-+ },
-+};
-+
-+static struct platform_device *n516_devices[] __initdata = {
-+ &jz4740_nand_device,
-+ &n516_leds_device,
-+ &jz4740_mmc_device,
-+ &jz4740_i2s_device,
-+ &jz4740_codec_device,
-+ &jz4740_rtc_device,
-+ &jz4740_udc_device,
-+ &n516_i2c_device,
-+ &n516_charger_device,
-+};
-+
-+struct jz4740_clock_board_data jz4740_clock_bdata = {
-+ .ext_rate = 12000000,
-+ .rtc_rate = 32768,
-+};
-+
-+extern int jz_gpiolib_init(void);
-+
-+static int n516_setup_platform(void)
-+{
-+ board_gpio_setup();
-+
-+ panic_blink = n516_panic_blink;
-+ i2c_register_board_info(0, n516_i2c_board_info, ARRAY_SIZE(n516_i2c_board_info));
-+ jz4740_mmc_device.dev.platform_data = &n516_mmc_pdata;
-+ jz4740_nand_device.dev.platform_data = &n516_nand_pdata;
-+
-+ return platform_add_devices(n516_devices, ARRAY_SIZE(n516_devices));
-+}
-+arch_initcall(n516_setup_platform);
diff --git a/target/linux/xburst/patches-2.6.35/022-add-n526-board-support.patch b/target/linux/xburst/patches-2.6.35/022-add-n526-board-support.patch
deleted file mode 100644
index 2c9da7d514..0000000000
--- a/target/linux/xburst/patches-2.6.35/022-add-n526-board-support.patch
+++ /dev/null
@@ -1,365 +0,0 @@
-From 7c51f9f9bab723d2cf7ea458ea459cc392a753f7 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 17:25:23 +0200
-Subject: [PATCH] Add n526 board support
-
----
- arch/mips/jz4740/Kconfig | 4 +
- arch/mips/jz4740/Makefile | 1 +
- arch/mips/jz4740/board-n526.c | 327 +++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 332 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/jz4740/board-n526.c
-
---- a/arch/mips/jz4740/Kconfig
-+++ b/arch/mips/jz4740/Kconfig
-@@ -10,6 +10,10 @@ config JZ4740_N516
- bool "Hanvon n516 eBook reader"
- select SOC_JZ4740
-
-+config JZ4740_N526
-+ bool "Hanvon n526 eBook reader"
-+ select SOC_JZ4740
-+
- endchoice
-
- config HAVE_PWM
---- a/arch/mips/jz4740/Makefile
-+++ b/arch/mips/jz4740/Makefile
-@@ -13,6 +13,7 @@ obj-$(CONFIG_DEBUG_FS) += clock-debugfs.
-
- obj-$(CONFIG_JZ4740_QI_LB60) += board-qi_lb60.o
- obj-$(CONFIG_JZ4740_N516) += board-n516.o board-n516-display.o
-+obj-$(CONFIG_JZ4740_N526) += board-n526.o
-
- # PM support
-
---- /dev/null
-+++ b/arch/mips/jz4740/board-n526.c
-@@ -0,0 +1,327 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.de>
-+ * N526 eBook reader support
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/gpio.h>
-+
-+
-+#include <linux/power_supply.h>
-+
-+#include <video/broadsheetfb.h>
-+#include <linux/delay.h>
-+#include <linux/interrupt.h>
-+
-+#include <linux/input.h>
-+#include <linux/gpio_keys.h>
-+
-+#include <linux/i2c.h>
-+#include <linux/i2c-gpio.h>
-+
-+#include "clock.h"
-+
-+#include <asm/mach-jz4740/jz4740_mmc.h>
-+#include <asm/mach-jz4740/jz4740_nand.h>
-+#include <asm/mach-jz4740/jz4740_fb.h>
-+
-+#include <asm/mach-jz4740/platform.h>
-+
-+/* NAND */
-+static struct nand_ecclayout n526_ecclayout = {
-+/* .eccbytes = 36,
-+ .eccpos = {
-+ 6, 7, 8, 9, 10, 11, 12, 13,
-+ 14, 15, 16, 17, 18, 19, 20, 21,
-+ 22, 23, 24, 25, 26, 27, 28, 29,
-+ 30, 31, 32, 33, 34, 35, 36, 37,
-+ 38, 39, 40, 41},*/
-+ .oobfree = {
-+ {.offset = 2,
-+ .length = 4},
-+ {.offset = 42,
-+ .length = 22}}
-+};
-+
-+static struct mtd_partition n526_partitions[] = {
-+ { .name = "NAND BOOT partition",
-+ .offset = 0 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ { .name = "NAND KERNEL partition",
-+ .offset = 4 * 0x100000,
-+ .size = 4 * 0x100000,
-+ },
-+ { .name = "NAND ROOTFS partition",
-+ .offset = 16 * 0x100000,
-+ .size = 498 * 0x100000,
-+ },
-+};
-+
-+static struct jz_nand_platform_data n526_nand_pdata = {
-+ .ecc_layout = &n526_ecclayout,
-+ .partitions = n526_partitions,
-+ .num_partitions = ARRAY_SIZE(n526_partitions),
-+ .busy_gpio = 94,
-+};
-+
-+static struct jz4740_mmc_platform_data n526_mmc_pdata = {
-+ .gpio_card_detect = JZ_GPIO_PORTD(7),
-+ .card_detect_active_low = 1,
-+ .gpio_read_only = -1,
-+ .gpio_power = JZ_GPIO_PORTD(17),
-+ .power_active_low = 1,
-+};
-+
-+static struct gpio_led n526_leds[] = {
-+ {
-+ .name = "n526:blue:power",
-+ .gpio = JZ_GPIO_PORTD(28),
-+ .default_state = LEDS_GPIO_DEFSTATE_ON,
-+ }
-+};
-+
-+static struct gpio_led_platform_data n526_leds_pdata = {
-+ .leds = n526_leds,
-+ .num_leds = ARRAY_SIZE(n526_leds),
-+};
-+
-+static struct platform_device n526_leds_device = {
-+ .name = "leds-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &n526_leds_pdata,
-+ },
-+};
-+
-+static void __init board_gpio_setup(void)
-+{
-+ /* We only need to enable/disable pullup here for pins used in generic
-+ * drivers. Everything else is done by the drivers themselfs. */
-+ jz_gpio_disable_pullup(JZ_GPIO_PORTD(17));
-+ jz_gpio_enable_pullup(JZ_GPIO_PORTD(7));
-+ jz_gpio_disable_pullup(JZ_GPIO_PORTC(19));
-+ jz_gpio_disable_pullup(JZ_GPIO_PORTC(20));
-+ jz_gpio_disable_pullup(JZ_GPIO_PORTC(21));
-+ jz_gpio_disable_pullup(JZ_GPIO_PORTC(23));
-+}
-+
-+
-+static const int n526_eink_ctrl_gpios[] = {
-+ 0,
-+ JZ_GPIO_PORTC(23),
-+ JZ_GPIO_PORTC(19),
-+ JZ_GPIO_PORTC(20),
-+};
-+
-+static void n526_eink_set_ctl(struct broadsheetfb_par * par, unsigned char ctrl, u8
-+value)
-+{
-+ gpio_set_value(n526_eink_ctrl_gpios[ctrl], value);
-+}
-+
-+
-+static int n526_eink_wait(struct broadsheetfb_par *par)
-+{
-+ wait_event(par->waitq, gpio_get_value(JZ_GPIO_PORTB(17)));
-+
-+ return 0;
-+}
-+
-+static u16 n526_eink_get_hdb(struct broadsheetfb_par *par)
-+{
-+ u16 value = 0;
-+ jz_gpio_port_direction_input(JZ_GPIO_PORTC(0), 0xffff);
-+ gpio_set_value(JZ_GPIO_PORTC(21), 0);
-+ mdelay(100);
-+
-+ value = jz_gpio_port_get_value(JZ_GPIO_PORTC(0), 0xffff);
-+
-+ gpio_set_value(JZ_GPIO_PORTC(21), 1);
-+ jz_gpio_port_direction_output(JZ_GPIO_PORTC(0), 0xffff);
-+ return value;
-+}
-+
-+static void n526_eink_set_hdb(struct broadsheetfb_par *par, u16 value)
-+{
-+ jz_gpio_port_set_value(JZ_GPIO_PORTC(0), value, 0xffff);
-+}
-+
-+static int n526_eink_init(struct broadsheetfb_par *par)
-+{
-+ int i;
-+
-+ gpio_request(JZ_GPIO_PORTD(1), "display reset");
-+ gpio_direction_output(JZ_GPIO_PORTD(1), 1);
-+ mdelay(10);
-+ gpio_set_value(JZ_GPIO_PORTD(1), 0);
-+
-+ gpio_request(JZ_GPIO_PORTB(18), "eink enable");
-+ gpio_direction_output(JZ_GPIO_PORTB(18), 0);
-+
-+ gpio_request(JZ_GPIO_PORTB(29), "foobar");
-+ gpio_direction_output(JZ_GPIO_PORTB(29), 1);
-+
-+ for(i = 1; i < ARRAY_SIZE(n526_eink_ctrl_gpios); ++i) {
-+ gpio_request(n526_eink_ctrl_gpios[i], "eink display ctrl");
-+ gpio_direction_output(n526_eink_ctrl_gpios[i], 0);
-+ }
-+
-+ gpio_request(JZ_GPIO_PORTC(22), "foobar");
-+ gpio_direction_input(JZ_GPIO_PORTC(22));
-+ gpio_request(JZ_GPIO_PORTC(21), "eink nRD");
-+ gpio_direction_output(JZ_GPIO_PORTC(21), 1);
-+
-+ for(i = 0; i < 16; ++i) {
-+ gpio_request(JZ_GPIO_PORTC(i), "eink display data");
-+ }
-+ jz_gpio_port_direction_output(JZ_GPIO_PORTC(0), 0xffff);
-+
-+ gpio_set_value(JZ_GPIO_PORTB(18), 1);
-+
-+ return 0;
-+}
-+
-+static irqreturn_t n526_eink_busy_irq(int irq, void *devid)
-+{
-+ struct broadsheetfb_par *par = devid;
-+ wake_up(&par->waitq);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int n526_eink_setup_irq(struct fb_info *info)
-+{
-+ int ret;
-+ struct broadsheetfb_par *par = info->par;
-+
-+ gpio_request(JZ_GPIO_PORTB(17), "eink busy");
-+ gpio_direction_input(JZ_GPIO_PORTB(17));
-+
-+ ret = request_irq(gpio_to_irq(JZ_GPIO_PORTB(17)), n526_eink_busy_irq,
-+ IRQF_DISABLED | IRQF_TRIGGER_RISING,
-+ "eink busyline", par);
-+ if (ret)
-+ printk("n526 display: Failed to request busyline irq: %d\n", ret);
-+ return 0;
-+}
-+
-+static void n526_eink_cleanup(struct broadsheetfb_par *par)
-+{
-+}
-+
-+static struct broadsheet_board broadsheet_pdata = {
-+ .owner = THIS_MODULE,
-+ .init = n526_eink_init,
-+ .wait_for_rdy = n526_eink_wait,
-+ .set_ctl = n526_eink_set_ctl,
-+ .set_hdb = n526_eink_set_hdb,
-+ .get_hdb = n526_eink_get_hdb,
-+ .cleanup = n526_eink_cleanup,
-+ .setup_irq = n526_eink_setup_irq,
-+};
-+
-+static struct platform_device n526_broadsheet_device = {
-+ .name = "broadsheetfb",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &broadsheet_pdata,
-+ },
-+};
-+
-+static struct gpio_keys_button qi_lb60_gpio_keys_buttons[] = {
-+ [0] = {
-+ .code = KEY_ENTER,
-+ .gpio = 0,
-+ .active_low = 1,
-+ .desc = "Power",
-+ },
-+};
-+
-+static struct gpio_keys_platform_data qi_lb60_gpio_keys_data = {
-+ .nbuttons = ARRAY_SIZE(qi_lb60_gpio_keys_buttons),
-+ .buttons = qi_lb60_gpio_keys_buttons,
-+};
-+
-+static struct platform_device qi_lb60_gpio_keys = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &qi_lb60_gpio_keys_data,
-+ }
-+};
-+
-+static struct i2c_gpio_platform_data n526_i2c_pdata = {
-+ .sda_pin = JZ_GPIO_PORTD(23),
-+ .scl_pin = JZ_GPIO_PORTD(24),
-+ .udelay = 2,
-+ .timeout = 3 * HZ,
-+};
-+
-+static struct platform_device n526_i2c_device = {
-+ .name = "i2c-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &n526_i2c_pdata,
-+ },
-+};
-+
-+static struct i2c_board_info n526_i2c_board_info = {
-+ .type = "n526-lpc",
-+ .addr = 0x54,
-+};
-+
-+static struct platform_device *jz_platform_devices[] __initdata = {
-+ &jz4740_usb_ohci_device,
-+ &jz4740_udc_device,
-+ &jz4740_mmc_device,
-+ &jz4740_nand_device,
-+ &jz4740_i2s_device,
-+ &jz4740_codec_device,
-+ &jz4740_rtc_device,
-+ &n526_leds_device,
-+ &n526_broadsheet_device,
-+ &qi_lb60_gpio_keys,
-+ &n526_i2c_device,
-+};
-+
-+static int __init n526_init_platform_devices(void)
-+{
-+
-+ jz4740_nand_device.dev.platform_data = &n526_nand_pdata;
-+ jz4740_mmc_device.dev.platform_data = &n526_mmc_pdata;
-+
-+ n526_i2c_board_info.irq = gpio_to_irq(JZ_GPIO_PORTD(14)),
-+ i2c_register_board_info(0, &n526_i2c_board_info, 1);
-+
-+ return platform_add_devices(jz_platform_devices,
-+ ARRAY_SIZE(jz_platform_devices));
-+
-+}
-+
-+struct jz4740_clock_board_data jz4740_clock_bdata = {
-+ .ext_rate = 12000000,
-+ .rtc_rate = 32768,
-+};
-+
-+static int __init n526_board_setup(void)
-+{
-+ board_gpio_setup();
-+
-+ if (n526_init_platform_devices())
-+ panic("Failed to initalize platform devices\n");
-+
-+ return 0;
-+}
-+arch_initcall(n526_board_setup);
diff --git a/target/linux/xburst/patches-2.6.35/050-nand.patch b/target/linux/xburst/patches-2.6.35/050-nand.patch
deleted file mode 100644
index a9f69214f2..0000000000
--- a/target/linux/xburst/patches-2.6.35/050-nand.patch
+++ /dev/null
@@ -1,601 +0,0 @@
-From c09d9002953c1182843050df1d4c639dea4af7f6 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 17 Jul 2010 11:15:29 +0000
-Subject: [PATCH] MTD: Nand: Add JZ4740 NAND driver
-
-Add support for the NAND controller on JZ4740 SoCs.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: David Woodhouse <dwmw2@infradead.org>
-Cc: linux-mtd@lists.infradead.org
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1470/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/include/asm/mach-jz4740/jz4740_nand.h | 34 ++
- drivers/mtd/nand/Kconfig | 6 +
- drivers/mtd/nand/Makefile | 1 +
- drivers/mtd/nand/jz4740_nand.c | 516 +++++++++++++++++++++++
- 4 files changed, 557 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/jz4740_nand.h
- create mode 100644 drivers/mtd/nand/jz4740_nand.c
-
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/jz4740_nand.h
-@@ -0,0 +1,34 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC NAND controller driver
-+ *
-+ * 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.
-+ *
-+ * 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 __ASM_MACH_JZ4740_JZ4740_NAND_H__
-+#define __ASM_MACH_JZ4740_JZ4740_NAND_H__
-+
-+#include <linux/mtd/nand.h>
-+#include <linux/mtd/partitions.h>
-+
-+struct jz_nand_platform_data {
-+ int num_partitions;
-+ struct mtd_partition *partitions;
-+
-+ struct nand_ecclayout *ecc_layout;
-+
-+ unsigned int busy_gpio;
-+
-+ void (*ident_callback)(struct platform_device *, struct nand_chip *,
-+ struct mtd_partition **, int *num_partitions);
-+};
-+
-+#endif
---- a/drivers/mtd/nand/Kconfig
-+++ b/drivers/mtd/nand/Kconfig
-@@ -526,4 +526,10 @@ config MTD_NAND_NUC900
- This enables the driver for the NAND Flash on evaluation board based
- on w90p910 / NUC9xx.
-
-+config MTD_NAND_JZ4740
-+ tristate "Support for JZ4740 SoC NAND controller"
-+ depends on MACH_JZ4740
-+ help
-+ Enables support for NAND Flash on JZ4740 SoC based boards.
-+
- endif # MTD_NAND
---- a/drivers/mtd/nand/Makefile
-+++ b/drivers/mtd/nand/Makefile
-@@ -46,5 +46,6 @@ obj-$(CONFIG_MTD_NAND_NOMADIK) += nomad
- obj-$(CONFIG_MTD_NAND_BCM_UMI) += bcm_umi_nand.o nand_bcm_umi.o
- obj-$(CONFIG_MTD_NAND_MPC5121_NFC) += mpc5121_nfc.o
- obj-$(CONFIG_MTD_NAND_RICOH) += r852.o
-+obj-$(CONFIG_MTD_NAND_JZ4740) += jz4740_nand.o
-
- nand-objs := nand_base.o nand_bbt.o
---- /dev/null
-+++ b/drivers/mtd/nand/jz4740_nand.c
-@@ -0,0 +1,516 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC NAND controller driver
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/ioport.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/nand.h>
-+#include <linux/mtd/partitions.h>
-+
-+#include <linux/gpio.h>
-+
-+#include <asm/mach-jz4740/jz4740_nand.h>
-+
-+#define JZ_REG_NAND_CTRL 0x50
-+#define JZ_REG_NAND_ECC_CTRL 0x100
-+#define JZ_REG_NAND_DATA 0x104
-+#define JZ_REG_NAND_PAR0 0x108
-+#define JZ_REG_NAND_PAR1 0x10C
-+#define JZ_REG_NAND_PAR2 0x110
-+#define JZ_REG_NAND_IRQ_STAT 0x114
-+#define JZ_REG_NAND_IRQ_CTRL 0x118
-+#define JZ_REG_NAND_ERR(x) (0x11C + ((x) << 2))
-+
-+#define JZ_NAND_ECC_CTRL_PAR_READY BIT(4)
-+#define JZ_NAND_ECC_CTRL_ENCODING BIT(3)
-+#define JZ_NAND_ECC_CTRL_RS BIT(2)
-+#define JZ_NAND_ECC_CTRL_RESET BIT(1)
-+#define JZ_NAND_ECC_CTRL_ENABLE BIT(0)
-+
-+#define JZ_NAND_STATUS_ERR_COUNT (BIT(31) | BIT(30) | BIT(29))
-+#define JZ_NAND_STATUS_PAD_FINISH BIT(4)
-+#define JZ_NAND_STATUS_DEC_FINISH BIT(3)
-+#define JZ_NAND_STATUS_ENC_FINISH BIT(2)
-+#define JZ_NAND_STATUS_UNCOR_ERROR BIT(1)
-+#define JZ_NAND_STATUS_ERROR BIT(0)
-+
-+#define JZ_NAND_CTRL_ENABLE_CHIP(x) BIT((x) << 1)
-+#define JZ_NAND_CTRL_ASSERT_CHIP(x) BIT(((x) << 1) + 1)
-+
-+#define JZ_NAND_MEM_ADDR_OFFSET 0x10000
-+#define JZ_NAND_MEM_CMD_OFFSET 0x08000
-+
-+struct jz_nand {
-+ struct mtd_info mtd;
-+ struct nand_chip chip;
-+ void __iomem *base;
-+ struct resource *mem;
-+
-+ void __iomem *bank_base;
-+ struct resource *bank_mem;
-+
-+ struct jz_nand_platform_data *pdata;
-+ bool is_reading;
-+};
-+
-+static inline struct jz_nand *mtd_to_jz_nand(struct mtd_info *mtd)
-+{
-+ return container_of(mtd, struct jz_nand, mtd);
-+}
-+
-+static void jz_nand_cmd_ctrl(struct mtd_info *mtd, int dat, unsigned int ctrl)
-+{
-+ struct jz_nand *nand = mtd_to_jz_nand(mtd);
-+ struct nand_chip *chip = mtd->priv;
-+ uint32_t reg;
-+
-+ if (ctrl & NAND_CTRL_CHANGE) {
-+ BUG_ON((ctrl & NAND_ALE) && (ctrl & NAND_CLE));
-+ if (ctrl & NAND_ALE)
-+ chip->IO_ADDR_W = nand->bank_base + JZ_NAND_MEM_ADDR_OFFSET;
-+ else if (ctrl & NAND_CLE)
-+ chip->IO_ADDR_W = nand->bank_base + JZ_NAND_MEM_CMD_OFFSET;
-+ else
-+ chip->IO_ADDR_W = nand->bank_base;
-+
-+ reg = readl(nand->base + JZ_REG_NAND_CTRL);
-+ if (ctrl & NAND_NCE)
-+ reg |= JZ_NAND_CTRL_ASSERT_CHIP(0);
-+ else
-+ reg &= ~JZ_NAND_CTRL_ASSERT_CHIP(0);
-+ writel(reg, nand->base + JZ_REG_NAND_CTRL);
-+ }
-+ if (dat != NAND_CMD_NONE)
-+ writeb(dat, chip->IO_ADDR_W);
-+}
-+
-+static int jz_nand_dev_ready(struct mtd_info *mtd)
-+{
-+ struct jz_nand *nand = mtd_to_jz_nand(mtd);
-+ return gpio_get_value_cansleep(nand->pdata->busy_gpio);
-+}
-+
-+static void jz_nand_hwctl(struct mtd_info *mtd, int mode)
-+{
-+ struct jz_nand *nand = mtd_to_jz_nand(mtd);
-+ uint32_t reg;
-+
-+ writel(0, nand->base + JZ_REG_NAND_IRQ_STAT);
-+ reg = readl(nand->base + JZ_REG_NAND_ECC_CTRL);
-+
-+ reg |= JZ_NAND_ECC_CTRL_RESET;
-+ reg |= JZ_NAND_ECC_CTRL_ENABLE;
-+ reg |= JZ_NAND_ECC_CTRL_RS;
-+
-+ switch (mode) {
-+ case NAND_ECC_READ:
-+ reg &= ~JZ_NAND_ECC_CTRL_ENCODING;
-+ nand->is_reading = true;
-+ break;
-+ case NAND_ECC_WRITE:
-+ reg |= JZ_NAND_ECC_CTRL_ENCODING;
-+ nand->is_reading = false;
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ writel(reg, nand->base + JZ_REG_NAND_ECC_CTRL);
-+}
-+
-+static int jz_nand_calculate_ecc_rs(struct mtd_info *mtd, const uint8_t *dat,
-+ uint8_t *ecc_code)
-+{
-+ struct jz_nand *nand = mtd_to_jz_nand(mtd);
-+ uint32_t reg, status;
-+ int i;
-+ unsigned int timeout = 1000;
-+ static uint8_t empty_block_ecc[] = {0xcd, 0x9d, 0x90, 0x58, 0xf4,
-+ 0x8b, 0xff, 0xb7, 0x6f};
-+
-+ if (nand->is_reading)
-+ return 0;
-+
-+ do {
-+ status = readl(nand->base + JZ_REG_NAND_IRQ_STAT);
-+ } while (!(status & JZ_NAND_STATUS_ENC_FINISH) && --timeout);
-+
-+ if (timeout == 0)
-+ return -1;
-+
-+ reg = readl(nand->base + JZ_REG_NAND_ECC_CTRL);
-+ reg &= ~JZ_NAND_ECC_CTRL_ENABLE;
-+ writel(reg, nand->base + JZ_REG_NAND_ECC_CTRL);
-+
-+ for (i = 0; i < 9; ++i)
-+ ecc_code[i] = readb(nand->base + JZ_REG_NAND_PAR0 + i);
-+
-+ /* If the written data is completly 0xff, we also want to write 0xff as
-+ * ecc, otherwise we will get in trouble when doing subpage writes. */
-+ if (memcmp(ecc_code, empty_block_ecc, 9) == 0)
-+ memset(ecc_code, 0xff, 9);
-+
-+ return 0;
-+}
-+
-+static void jz_nand_correct_data(uint8_t *dat, int index, int mask)
-+{
-+ int offset = index & 0x7;
-+ uint16_t data;
-+
-+ index += (index >> 3);
-+
-+ data = dat[index];
-+ data |= dat[index+1] << 8;
-+
-+ mask ^= (data >> offset) & 0x1ff;
-+ data &= ~(0x1ff << offset);
-+ data |= (mask << offset);
-+
-+ dat[index] = data & 0xff;
-+ dat[index+1] = (data >> 8) & 0xff;
-+}
-+
-+static int jz_nand_correct_ecc_rs(struct mtd_info *mtd, uint8_t *dat,
-+ uint8_t *read_ecc, uint8_t *calc_ecc)
-+{
-+ struct jz_nand *nand = mtd_to_jz_nand(mtd);
-+ int i, error_count, index;
-+ uint32_t reg, status, error;
-+ uint32_t t;
-+ unsigned int timeout = 1000;
-+
-+ t = read_ecc[0];
-+
-+ if (t == 0xff) {
-+ for (i = 1; i < 9; ++i)
-+ t &= read_ecc[i];
-+
-+ t &= dat[0];
-+ t &= dat[nand->chip.ecc.size / 2];
-+ t &= dat[nand->chip.ecc.size - 1];
-+
-+ if (t == 0xff) {
-+ for (i = 1; i < nand->chip.ecc.size - 1; ++i)
-+ t &= dat[i];
-+ if (t == 0xff)
-+ return 0;
-+ }
-+ }
-+
-+ for (i = 0; i < 9; ++i)
-+ writeb(read_ecc[i], nand->base + JZ_REG_NAND_PAR0 + i);
-+
-+ reg = readl(nand->base + JZ_REG_NAND_ECC_CTRL);
-+ reg |= JZ_NAND_ECC_CTRL_PAR_READY;
-+ writel(reg, nand->base + JZ_REG_NAND_ECC_CTRL);
-+
-+ do {
-+ status = readl(nand->base + JZ_REG_NAND_IRQ_STAT);
-+ } while (!(status & JZ_NAND_STATUS_DEC_FINISH) && --timeout);
-+
-+ if (timeout == 0)
-+ return -1;
-+
-+ reg = readl(nand->base + JZ_REG_NAND_ECC_CTRL);
-+ reg &= ~JZ_NAND_ECC_CTRL_ENABLE;
-+ writel(reg, nand->base + JZ_REG_NAND_ECC_CTRL);
-+
-+ if (status & JZ_NAND_STATUS_ERROR) {
-+ if (status & JZ_NAND_STATUS_UNCOR_ERROR)
-+ return -1;
-+
-+ error_count = (status & JZ_NAND_STATUS_ERR_COUNT) >> 29;
-+
-+ for (i = 0; i < error_count; ++i) {
-+ error = readl(nand->base + JZ_REG_NAND_ERR(i));
-+ index = ((error >> 16) & 0x1ff) - 1;
-+ if (index >= 0 && index < 512)
-+ jz_nand_correct_data(dat, index, error & 0x1ff);
-+ }
-+
-+ return error_count;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+/* Copy paste of nand_read_page_hwecc_oob_first except for different eccpos
-+ * handling. The ecc area is for 4k chips 72 bytes long and thus does not fit
-+ * into the eccpos array. */
-+static int jz_nand_read_page_hwecc_oob_first(struct mtd_info *mtd,
-+ struct nand_chip *chip, uint8_t *buf, int page)
-+{
-+ int i, eccsize = chip->ecc.size;
-+ int eccbytes = chip->ecc.bytes;
-+ int eccsteps = chip->ecc.steps;
-+ uint8_t *p = buf;
-+ unsigned int ecc_offset = chip->page_shift;
-+
-+ /* Read the OOB area first */
-+ chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page);
-+ chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
-+ chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page);
-+
-+ for (i = ecc_offset; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
-+ int stat;
-+
-+ chip->ecc.hwctl(mtd, NAND_ECC_READ);
-+ chip->read_buf(mtd, p, eccsize);
-+
-+ stat = chip->ecc.correct(mtd, p, &chip->oob_poi[i], NULL);
-+ if (stat < 0)
-+ mtd->ecc_stats.failed++;
-+ else
-+ mtd->ecc_stats.corrected += stat;
-+ }
-+ return 0;
-+}
-+
-+/* Copy-and-paste of nand_write_page_hwecc with different eccpos handling. */
-+static void jz_nand_write_page_hwecc(struct mtd_info *mtd,
-+ struct nand_chip *chip, const uint8_t *buf)
-+{
-+ int i, eccsize = chip->ecc.size;
-+ int eccbytes = chip->ecc.bytes;
-+ int eccsteps = chip->ecc.steps;
-+ const uint8_t *p = buf;
-+ unsigned int ecc_offset = chip->page_shift;
-+
-+ for (i = ecc_offset; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
-+ chip->ecc.hwctl(mtd, NAND_ECC_WRITE);
-+ chip->write_buf(mtd, p, eccsize);
-+ chip->ecc.calculate(mtd, p, &chip->oob_poi[i]);
-+ }
-+
-+ chip->write_buf(mtd, chip->oob_poi, mtd->oobsize);
-+}
-+
-+#ifdef CONFIG_MTD_CMDLINE_PARTS
-+static const char *part_probes[] = {"cmdline", NULL};
-+#endif
-+
-+static int jz_nand_ioremap_resource(struct platform_device *pdev,
-+ const char *name, struct resource **res, void __iomem **base)
-+{
-+ int ret;
-+
-+ *res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
-+ if (!*res) {
-+ dev_err(&pdev->dev, "Failed to get platform %s memory\n", name);
-+ ret = -ENXIO;
-+ goto err;
-+ }
-+
-+ *res = request_mem_region((*res)->start, resource_size(*res),
-+ pdev->name);
-+ if (!*res) {
-+ dev_err(&pdev->dev, "Failed to request %s memory region\n", name);
-+ ret = -EBUSY;
-+ goto err;
-+ }
-+
-+ *base = ioremap((*res)->start, resource_size(*res));
-+ if (!*base) {
-+ dev_err(&pdev->dev, "Failed to ioremap %s memory region\n", name);
-+ ret = -EBUSY;
-+ goto err_release_mem;
-+ }
-+
-+ return 0;
-+
-+err_release_mem:
-+ release_mem_region((*res)->start, resource_size(*res));
-+err:
-+ *res = NULL;
-+ *base = NULL;
-+ return ret;
-+}
-+
-+static int __devinit jz_nand_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jz_nand *nand;
-+ struct nand_chip *chip;
-+ struct mtd_info *mtd;
-+ struct jz_nand_platform_data *pdata = pdev->dev.platform_data;
-+#ifdef CONFIG_MTD_PARTITIONS
-+ struct mtd_partition *partition_info;
-+ int num_partitions = 0;
-+#endif
-+
-+ nand = kzalloc(sizeof(*nand), GFP_KERNEL);
-+ if (!nand) {
-+ dev_err(&pdev->dev, "Failed to allocate device structure.\n");
-+ return -ENOMEM;
-+ }
-+
-+ ret = jz_nand_ioremap_resource(pdev, "mmio", &nand->mem, &nand->base);
-+ if (ret)
-+ goto err_free;
-+ ret = jz_nand_ioremap_resource(pdev, "bank", &nand->bank_mem,
-+ &nand->bank_base);
-+ if (ret)
-+ goto err_iounmap_mmio;
-+
-+ if (pdata && gpio_is_valid(pdata->busy_gpio)) {
-+ ret = gpio_request(pdata->busy_gpio, "NAND busy pin");
-+ if (ret) {
-+ dev_err(&pdev->dev,
-+ "Failed to request busy gpio %d: %d\n",
-+ pdata->busy_gpio, ret);
-+ goto err_iounmap_mem;
-+ }
-+ }
-+
-+ mtd = &nand->mtd;
-+ chip = &nand->chip;
-+ mtd->priv = chip;
-+ mtd->owner = THIS_MODULE;
-+ mtd->name = "jz4740-nand";
-+
-+ chip->ecc.hwctl = jz_nand_hwctl;
-+ chip->ecc.calculate = jz_nand_calculate_ecc_rs;
-+ chip->ecc.correct = jz_nand_correct_ecc_rs;
-+ chip->ecc.mode = NAND_ECC_HW_OOB_FIRST;
-+ chip->ecc.size = 512;
-+ chip->ecc.bytes = 9;
-+
-+ chip->ecc.read_page = jz_nand_read_page_hwecc_oob_first;
-+ chip->ecc.write_page = jz_nand_write_page_hwecc;
-+
-+ if (pdata)
-+ chip->ecc.layout = pdata->ecc_layout;
-+
-+ chip->chip_delay = 50;
-+ chip->cmd_ctrl = jz_nand_cmd_ctrl;
-+
-+ if (pdata && gpio_is_valid(pdata->busy_gpio))
-+ chip->dev_ready = jz_nand_dev_ready;
-+
-+ chip->IO_ADDR_R = nand->bank_base;
-+ chip->IO_ADDR_W = nand->bank_base;
-+
-+ nand->pdata = pdata;
-+ platform_set_drvdata(pdev, nand);
-+
-+ writel(JZ_NAND_CTRL_ENABLE_CHIP(0), nand->base + JZ_REG_NAND_CTRL);
-+
-+ ret = nand_scan_ident(mtd, 1, NULL);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to scan nand\n");
-+ goto err_gpio_free;
-+ }
-+
-+ if (pdata && pdata->ident_callback) {
-+ pdata->ident_callback(pdev, chip, &pdata->partitions,
-+ &pdata->num_partitions);
-+ }
-+
-+ ret = nand_scan_tail(mtd);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to scan nand\n");
-+ goto err_gpio_free;
-+ }
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+#ifdef CONFIG_MTD_CMDLINE_PARTS
-+ num_partitions = parse_mtd_partitions(mtd, part_probes,
-+ &partition_info, 0);
-+#endif
-+ if (num_partitions <= 0 && pdata) {
-+ num_partitions = pdata->num_partitions;
-+ partition_info = pdata->partitions;
-+ }
-+
-+ if (num_partitions > 0)
-+ ret = add_mtd_partitions(mtd, partition_info, num_partitions);
-+ else
-+#endif
-+ ret = add_mtd_device(mtd);
-+
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to add mtd device\n");
-+ goto err_nand_release;
-+ }
-+
-+ dev_info(&pdev->dev, "Successfully registered JZ4740 NAND driver\n");
-+
-+ return 0;
-+
-+err_nand_release:
-+ nand_release(&nand->mtd);
-+err_gpio_free:
-+ platform_set_drvdata(pdev, NULL);
-+ gpio_free(pdata->busy_gpio);
-+err_iounmap_mem:
-+ iounmap(nand->bank_base);
-+err_iounmap_mmio:
-+ iounmap(nand->base);
-+err_free:
-+ kfree(nand);
-+ return ret;
-+}
-+
-+static int __devexit jz_nand_remove(struct platform_device *pdev)
-+{
-+ struct jz_nand *nand = platform_get_drvdata(pdev);
-+
-+ nand_release(&nand->mtd);
-+
-+ /* Deassert and disable all chips */
-+ writel(0, nand->base + JZ_REG_NAND_CTRL);
-+
-+ iounmap(nand->bank_base);
-+ release_mem_region(nand->bank_mem->start, resource_size(nand->bank_mem));
-+ iounmap(nand->base);
-+ release_mem_region(nand->mem->start, resource_size(nand->mem));
-+
-+ platform_set_drvdata(pdev, NULL);
-+ kfree(nand);
-+
-+ return 0;
-+}
-+
-+struct platform_driver jz_nand_driver = {
-+ .probe = jz_nand_probe,
-+ .remove = __devexit_p(jz_nand_remove),
-+ .driver = {
-+ .name = "jz4740-nand",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init jz_nand_init(void)
-+{
-+ return platform_driver_register(&jz_nand_driver);
-+}
-+module_init(jz_nand_init);
-+
-+static void __exit jz_nand_exit(void)
-+{
-+ platform_driver_unregister(&jz_nand_driver);
-+}
-+module_exit(jz_nand_exit);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("NAND controller driver for JZ4740 SoC");
-+MODULE_ALIAS("platform:jz4740-nand");
diff --git a/target/linux/xburst/patches-2.6.35/051-fb.patch b/target/linux/xburst/patches-2.6.35/051-fb.patch
deleted file mode 100644
index e021abf057..0000000000
--- a/target/linux/xburst/patches-2.6.35/051-fb.patch
+++ /dev/null
@@ -1,971 +0,0 @@
-From 91ead9db8aabb54f4867e5a7ed4782dcca2273f5 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 17 Jul 2010 11:14:34 +0000
-Subject: [PATCH] FBDEV: JZ4740: Add framebuffer driver
-
-Add support for the LCD controller on JZ4740 SoCs.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Cc: linux-fbdev@vger.kernel.org
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1470/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/include/asm/mach-jz4740/jz4740_fb.h | 67 ++
- drivers/video/Kconfig | 9 +
- drivers/video/Makefile | 1 +
- drivers/video/jz4740_fb.c | 847 +++++++++++++++++++++++++
- 4 files changed, 924 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/jz4740_fb.h
- create mode 100644 drivers/video/jz4740_fb.c
-
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/jz4740_fb.h
-@@ -0,0 +1,67 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * 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 __ASM_MACH_JZ4740_JZ4740_FB_H__
-+#define __ASM_MACH_JZ4740_JZ4740_FB_H__
-+
-+#include <linux/fb.h>
-+
-+enum jz4740_fb_lcd_type {
-+ JZ_LCD_TYPE_GENERIC_16_BIT = 0,
-+ JZ_LCD_TYPE_GENERIC_18_BIT = 0 | (1 << 4),
-+ JZ_LCD_TYPE_SPECIAL_TFT_1 = 1,
-+ JZ_LCD_TYPE_SPECIAL_TFT_2 = 2,
-+ JZ_LCD_TYPE_SPECIAL_TFT_3 = 3,
-+ JZ_LCD_TYPE_NON_INTERLACED_CCIR656 = 5,
-+ JZ_LCD_TYPE_INTERLACED_CCIR656 = 7,
-+ JZ_LCD_TYPE_SINGLE_COLOR_STN = 8,
-+ JZ_LCD_TYPE_SINGLE_MONOCHROME_STN = 9,
-+ JZ_LCD_TYPE_DUAL_COLOR_STN = 10,
-+ JZ_LCD_TYPE_DUAL_MONOCHROME_STN = 11,
-+ JZ_LCD_TYPE_8BIT_SERIAL = 12,
-+};
-+
-+#define JZ4740_FB_SPECIAL_TFT_CONFIG(start, stop) (((start) << 16) | (stop))
-+
-+/*
-+* width: width of the lcd display in mm
-+* height: height of the lcd display in mm
-+* num_modes: size of modes
-+* modes: list of valid video modes
-+* bpp: bits per pixel for the lcd
-+* lcd_type: lcd type
-+*/
-+
-+struct jz4740_fb_platform_data {
-+ unsigned int width;
-+ unsigned int height;
-+
-+ size_t num_modes;
-+ struct fb_videomode *modes;
-+
-+ unsigned int bpp;
-+ enum jz4740_fb_lcd_type lcd_type;
-+
-+ struct {
-+ uint32_t spl;
-+ uint32_t cls;
-+ uint32_t ps;
-+ uint32_t rev;
-+ } special_tft_config;
-+
-+ unsigned pixclk_falling_edge:1;
-+ unsigned date_enable_active_low:1;
-+};
-+
-+#endif
---- a/drivers/video/Kconfig
-+++ b/drivers/video/Kconfig
-@@ -2229,6 +2229,15 @@ config FB_BROADSHEET
- and could also have been called by other names when coupled with
- a bridge adapter.
-
-+config FB_JZ4740
-+ tristate "JZ4740 LCD framebuffer support"
-+ depends on FB
-+ select FB_SYS_FILLRECT
-+ select FB_SYS_COPYAREA
-+ select FB_SYS_IMAGEBLIT
-+ help
-+ Framebuffer support for the JZ4740 SoC.
-+
- source "drivers/video/omap/Kconfig"
- source "drivers/video/omap2/Kconfig"
-
---- a/drivers/video/Makefile
-+++ b/drivers/video/Makefile
-@@ -131,6 +131,7 @@ obj-$(CONFIG_FB_CARMINE) += car
- obj-$(CONFIG_FB_MB862XX) += mb862xx/
- obj-$(CONFIG_FB_MSM) += msm/
- obj-$(CONFIG_FB_NUC900) += nuc900fb.o
-+obj-$(CONFIG_FB_JZ4740) += jz4740_fb.o
-
- # Platform or fallback drivers go here
- obj-$(CONFIG_FB_UVESA) += uvesafb.o
---- /dev/null
-+++ b/drivers/video/jz4740_fb.c
-@@ -0,0 +1,847 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC LCD framebuffer driver
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/mutex.h>
-+#include <linux/platform_device.h>
-+
-+#include <linux/clk.h>
-+#include <linux/delay.h>
-+
-+#include <linux/console.h>
-+#include <linux/fb.h>
-+
-+#include <linux/dma-mapping.h>
-+
-+#include <asm/mach-jz4740/jz4740_fb.h>
-+#include <asm/mach-jz4740/gpio.h>
-+
-+#define JZ_REG_LCD_CFG 0x00
-+#define JZ_REG_LCD_VSYNC 0x04
-+#define JZ_REG_LCD_HSYNC 0x08
-+#define JZ_REG_LCD_VAT 0x0C
-+#define JZ_REG_LCD_DAH 0x10
-+#define JZ_REG_LCD_DAV 0x14
-+#define JZ_REG_LCD_PS 0x18
-+#define JZ_REG_LCD_CLS 0x1C
-+#define JZ_REG_LCD_SPL 0x20
-+#define JZ_REG_LCD_REV 0x24
-+#define JZ_REG_LCD_CTRL 0x30
-+#define JZ_REG_LCD_STATE 0x34
-+#define JZ_REG_LCD_IID 0x38
-+#define JZ_REG_LCD_DA0 0x40
-+#define JZ_REG_LCD_SA0 0x44
-+#define JZ_REG_LCD_FID0 0x48
-+#define JZ_REG_LCD_CMD0 0x4C
-+#define JZ_REG_LCD_DA1 0x50
-+#define JZ_REG_LCD_SA1 0x54
-+#define JZ_REG_LCD_FID1 0x58
-+#define JZ_REG_LCD_CMD1 0x5C
-+
-+#define JZ_LCD_CFG_SLCD BIT(31)
-+#define JZ_LCD_CFG_PS_DISABLE BIT(23)
-+#define JZ_LCD_CFG_CLS_DISABLE BIT(22)
-+#define JZ_LCD_CFG_SPL_DISABLE BIT(21)
-+#define JZ_LCD_CFG_REV_DISABLE BIT(20)
-+#define JZ_LCD_CFG_HSYNCM BIT(19)
-+#define JZ_LCD_CFG_PCLKM BIT(18)
-+#define JZ_LCD_CFG_INV BIT(17)
-+#define JZ_LCD_CFG_SYNC_DIR BIT(16)
-+#define JZ_LCD_CFG_PS_POLARITY BIT(15)
-+#define JZ_LCD_CFG_CLS_POLARITY BIT(14)
-+#define JZ_LCD_CFG_SPL_POLARITY BIT(13)
-+#define JZ_LCD_CFG_REV_POLARITY BIT(12)
-+#define JZ_LCD_CFG_HSYNC_ACTIVE_LOW BIT(11)
-+#define JZ_LCD_CFG_PCLK_FALLING_EDGE BIT(10)
-+#define JZ_LCD_CFG_DE_ACTIVE_LOW BIT(9)
-+#define JZ_LCD_CFG_VSYNC_ACTIVE_LOW BIT(8)
-+#define JZ_LCD_CFG_18_BIT BIT(7)
-+#define JZ_LCD_CFG_PDW (BIT(5) | BIT(4))
-+#define JZ_LCD_CFG_MODE_MASK 0xf
-+
-+#define JZ_LCD_CTRL_BURST_4 (0x0 << 28)
-+#define JZ_LCD_CTRL_BURST_8 (0x1 << 28)
-+#define JZ_LCD_CTRL_BURST_16 (0x2 << 28)
-+#define JZ_LCD_CTRL_RGB555 BIT(27)
-+#define JZ_LCD_CTRL_OFUP BIT(26)
-+#define JZ_LCD_CTRL_FRC_GRAYSCALE_16 (0x0 << 24)
-+#define JZ_LCD_CTRL_FRC_GRAYSCALE_4 (0x1 << 24)
-+#define JZ_LCD_CTRL_FRC_GRAYSCALE_2 (0x2 << 24)
-+#define JZ_LCD_CTRL_PDD_MASK (0xff << 16)
-+#define JZ_LCD_CTRL_EOF_IRQ BIT(13)
-+#define JZ_LCD_CTRL_SOF_IRQ BIT(12)
-+#define JZ_LCD_CTRL_OFU_IRQ BIT(11)
-+#define JZ_LCD_CTRL_IFU0_IRQ BIT(10)
-+#define JZ_LCD_CTRL_IFU1_IRQ BIT(9)
-+#define JZ_LCD_CTRL_DD_IRQ BIT(8)
-+#define JZ_LCD_CTRL_QDD_IRQ BIT(7)
-+#define JZ_LCD_CTRL_REVERSE_ENDIAN BIT(6)
-+#define JZ_LCD_CTRL_LSB_FISRT BIT(5)
-+#define JZ_LCD_CTRL_DISABLE BIT(4)
-+#define JZ_LCD_CTRL_ENABLE BIT(3)
-+#define JZ_LCD_CTRL_BPP_1 0x0
-+#define JZ_LCD_CTRL_BPP_2 0x1
-+#define JZ_LCD_CTRL_BPP_4 0x2
-+#define JZ_LCD_CTRL_BPP_8 0x3
-+#define JZ_LCD_CTRL_BPP_15_16 0x4
-+#define JZ_LCD_CTRL_BPP_18_24 0x5
-+
-+#define JZ_LCD_CMD_SOF_IRQ BIT(15)
-+#define JZ_LCD_CMD_EOF_IRQ BIT(16)
-+#define JZ_LCD_CMD_ENABLE_PAL BIT(12)
-+
-+#define JZ_LCD_SYNC_MASK 0x3ff
-+
-+#define JZ_LCD_STATE_DISABLED BIT(0)
-+
-+struct jzfb_framedesc {
-+ uint32_t next;
-+ uint32_t addr;
-+ uint32_t id;
-+ uint32_t cmd;
-+} __packed;
-+
-+struct jzfb {
-+ struct fb_info *fb;
-+ struct platform_device *pdev;
-+ void __iomem *base;
-+ struct resource *mem;
-+ struct jz4740_fb_platform_data *pdata;
-+
-+ size_t vidmem_size;
-+ void *vidmem;
-+ dma_addr_t vidmem_phys;
-+ struct jzfb_framedesc *framedesc;
-+ dma_addr_t framedesc_phys;
-+
-+ struct clk *ldclk;
-+ struct clk *lpclk;
-+
-+ unsigned is_enabled:1;
-+ struct mutex lock;
-+
-+ uint32_t pseudo_palette[16];
-+};
-+
-+static const struct fb_fix_screeninfo jzfb_fix __devinitdata = {
-+ .id = "JZ4740 FB",
-+ .type = FB_TYPE_PACKED_PIXELS,
-+ .visual = FB_VISUAL_TRUECOLOR,
-+ .xpanstep = 0,
-+ .ypanstep = 0,
-+ .ywrapstep = 0,
-+ .accel = FB_ACCEL_NONE,
-+};
-+
-+static const struct jz_gpio_bulk_request jz_lcd_ctrl_pins[] = {
-+ JZ_GPIO_BULK_PIN(LCD_PCLK),
-+ JZ_GPIO_BULK_PIN(LCD_HSYNC),
-+ JZ_GPIO_BULK_PIN(LCD_VSYNC),
-+ JZ_GPIO_BULK_PIN(LCD_DE),
-+ JZ_GPIO_BULK_PIN(LCD_PS),
-+ JZ_GPIO_BULK_PIN(LCD_REV),
-+ JZ_GPIO_BULK_PIN(LCD_CLS),
-+ JZ_GPIO_BULK_PIN(LCD_SPL),
-+};
-+
-+static const struct jz_gpio_bulk_request jz_lcd_data_pins[] = {
-+ JZ_GPIO_BULK_PIN(LCD_DATA0),
-+ JZ_GPIO_BULK_PIN(LCD_DATA1),
-+ JZ_GPIO_BULK_PIN(LCD_DATA2),
-+ JZ_GPIO_BULK_PIN(LCD_DATA3),
-+ JZ_GPIO_BULK_PIN(LCD_DATA4),
-+ JZ_GPIO_BULK_PIN(LCD_DATA5),
-+ JZ_GPIO_BULK_PIN(LCD_DATA6),
-+ JZ_GPIO_BULK_PIN(LCD_DATA7),
-+ JZ_GPIO_BULK_PIN(LCD_DATA8),
-+ JZ_GPIO_BULK_PIN(LCD_DATA9),
-+ JZ_GPIO_BULK_PIN(LCD_DATA10),
-+ JZ_GPIO_BULK_PIN(LCD_DATA11),
-+ JZ_GPIO_BULK_PIN(LCD_DATA12),
-+ JZ_GPIO_BULK_PIN(LCD_DATA13),
-+ JZ_GPIO_BULK_PIN(LCD_DATA14),
-+ JZ_GPIO_BULK_PIN(LCD_DATA15),
-+ JZ_GPIO_BULK_PIN(LCD_DATA16),
-+ JZ_GPIO_BULK_PIN(LCD_DATA17),
-+};
-+
-+static unsigned int jzfb_num_ctrl_pins(struct jzfb *jzfb)
-+{
-+ unsigned int num;
-+
-+ switch (jzfb->pdata->lcd_type) {
-+ case JZ_LCD_TYPE_GENERIC_16_BIT:
-+ num = 4;
-+ break;
-+ case JZ_LCD_TYPE_GENERIC_18_BIT:
-+ num = 4;
-+ break;
-+ case JZ_LCD_TYPE_8BIT_SERIAL:
-+ num = 3;
-+ break;
-+ case JZ_LCD_TYPE_SPECIAL_TFT_1:
-+ case JZ_LCD_TYPE_SPECIAL_TFT_2:
-+ case JZ_LCD_TYPE_SPECIAL_TFT_3:
-+ num = 8;
-+ break;
-+ default:
-+ num = 0;
-+ break;
-+ }
-+ return num;
-+}
-+
-+static unsigned int jzfb_num_data_pins(struct jzfb *jzfb)
-+{
-+ unsigned int num;
-+
-+ switch (jzfb->pdata->lcd_type) {
-+ case JZ_LCD_TYPE_GENERIC_16_BIT:
-+ num = 16;
-+ break;
-+ case JZ_LCD_TYPE_GENERIC_18_BIT:
-+ num = 18;
-+ break;
-+ case JZ_LCD_TYPE_8BIT_SERIAL:
-+ num = 8;
-+ break;
-+ case JZ_LCD_TYPE_SPECIAL_TFT_1:
-+ case JZ_LCD_TYPE_SPECIAL_TFT_2:
-+ case JZ_LCD_TYPE_SPECIAL_TFT_3:
-+ if (jzfb->pdata->bpp == 18)
-+ num = 18;
-+ else
-+ num = 16;
-+ break;
-+ default:
-+ num = 0;
-+ break;
-+ }
-+ return num;
-+}
-+
-+/* Based on CNVT_TOHW macro from skeletonfb.c */
-+static inline uint32_t jzfb_convert_color_to_hw(unsigned val,
-+ struct fb_bitfield *bf)
-+{
-+ return (((val << bf->length) + 0x7FFF - val) >> 16) << bf->offset;
-+}
-+
-+static int jzfb_setcolreg(unsigned regno, unsigned red, unsigned green,
-+ unsigned blue, unsigned transp, struct fb_info *fb)
-+{
-+ uint32_t color;
-+
-+ if (regno >= 16)
-+ return -EINVAL;
-+
-+ color = jzfb_convert_color_to_hw(red, &fb->var.red);
-+ color |= jzfb_convert_color_to_hw(green, &fb->var.green);
-+ color |= jzfb_convert_color_to_hw(blue, &fb->var.blue);
-+ color |= jzfb_convert_color_to_hw(transp, &fb->var.transp);
-+
-+ ((uint32_t *)(fb->pseudo_palette))[regno] = color;
-+
-+ return 0;
-+}
-+
-+static int jzfb_get_controller_bpp(struct jzfb *jzfb)
-+{
-+ switch (jzfb->pdata->bpp) {
-+ case 18:
-+ case 24:
-+ return 32;
-+ case 15:
-+ return 16;
-+ default:
-+ return jzfb->pdata->bpp;
-+ }
-+}
-+
-+static struct fb_videomode *jzfb_get_mode(struct jzfb *jzfb,
-+ struct fb_var_screeninfo *var)
-+{
-+ size_t i;
-+ struct fb_videomode *mode = jzfb->pdata->modes;
-+
-+ for (i = 0; i < jzfb->pdata->num_modes; ++i, ++mode) {
-+ if (mode->xres == var->xres && mode->yres == var->yres)
-+ return mode;
-+ }
-+
-+ return NULL;
-+}
-+
-+static int jzfb_check_var(struct fb_var_screeninfo *var, struct fb_info *fb)
-+{
-+ struct jzfb *jzfb = fb->par;
-+ struct fb_videomode *mode;
-+
-+ if (var->bits_per_pixel != jzfb_get_controller_bpp(jzfb) &&
-+ var->bits_per_pixel != jzfb->pdata->bpp)
-+ return -EINVAL;
-+
-+ mode = jzfb_get_mode(jzfb, var);
-+ if (mode == NULL)
-+ return -EINVAL;
-+
-+ fb_videomode_to_var(var, mode);
-+
-+ switch (jzfb->pdata->bpp) {
-+ case 8:
-+ break;
-+ case 15:
-+ var->red.offset = 10;
-+ var->red.length = 5;
-+ var->green.offset = 6;
-+ var->green.length = 5;
-+ var->blue.offset = 0;
-+ var->blue.length = 5;
-+ break;
-+ case 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;
-+ break;
-+ case 18:
-+ var->red.offset = 16;
-+ var->red.length = 6;
-+ var->green.offset = 8;
-+ var->green.length = 6;
-+ var->blue.offset = 0;
-+ var->blue.length = 6;
-+ var->bits_per_pixel = 32;
-+ break;
-+ case 32:
-+ case 24:
-+ var->transp.offset = 24;
-+ var->transp.length = 8;
-+ var->red.offset = 16;
-+ var->red.length = 8;
-+ var->green.offset = 8;
-+ var->green.length = 8;
-+ var->blue.offset = 0;
-+ var->blue.length = 8;
-+ var->bits_per_pixel = 32;
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+static int jzfb_set_par(struct fb_info *info)
-+{
-+ struct jzfb *jzfb = info->par;
-+ struct jz4740_fb_platform_data *pdata = jzfb->pdata;
-+ struct fb_var_screeninfo *var = &info->var;
-+ struct fb_videomode *mode;
-+ uint16_t hds, vds;
-+ uint16_t hde, vde;
-+ uint16_t ht, vt;
-+ uint32_t ctrl;
-+ uint32_t cfg;
-+ unsigned long rate;
-+
-+ mode = jzfb_get_mode(jzfb, var);
-+ if (mode == NULL)
-+ return -EINVAL;
-+
-+ if (mode == info->mode)
-+ return 0;
-+
-+ info->mode = mode;
-+
-+ hds = mode->hsync_len + mode->left_margin;
-+ hde = hds + mode->xres;
-+ ht = hde + mode->right_margin;
-+
-+ vds = mode->vsync_len + mode->upper_margin;
-+ vde = vds + mode->yres;
-+ vt = vde + mode->lower_margin;
-+
-+ ctrl = JZ_LCD_CTRL_OFUP | JZ_LCD_CTRL_BURST_16;
-+
-+ switch (pdata->bpp) {
-+ case 1:
-+ ctrl |= JZ_LCD_CTRL_BPP_1;
-+ break;
-+ case 2:
-+ ctrl |= JZ_LCD_CTRL_BPP_2;
-+ break;
-+ case 4:
-+ ctrl |= JZ_LCD_CTRL_BPP_4;
-+ break;
-+ case 8:
-+ ctrl |= JZ_LCD_CTRL_BPP_8;
-+ break;
-+ case 15:
-+ ctrl |= JZ_LCD_CTRL_RGB555; /* Falltrough */
-+ case 16:
-+ ctrl |= JZ_LCD_CTRL_BPP_15_16;
-+ break;
-+ case 18:
-+ case 24:
-+ case 32:
-+ ctrl |= JZ_LCD_CTRL_BPP_18_24;
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ cfg = pdata->lcd_type & 0xf;
-+
-+ if (!(mode->sync & FB_SYNC_HOR_HIGH_ACT))
-+ cfg |= JZ_LCD_CFG_HSYNC_ACTIVE_LOW;
-+
-+ if (!(mode->sync & FB_SYNC_VERT_HIGH_ACT))
-+ cfg |= JZ_LCD_CFG_VSYNC_ACTIVE_LOW;
-+
-+ if (pdata->pixclk_falling_edge)
-+ cfg |= JZ_LCD_CFG_PCLK_FALLING_EDGE;
-+
-+ if (pdata->date_enable_active_low)
-+ cfg |= JZ_LCD_CFG_DE_ACTIVE_LOW;
-+
-+ if (pdata->lcd_type == JZ_LCD_TYPE_GENERIC_18_BIT)
-+ cfg |= JZ_LCD_CFG_18_BIT;
-+
-+ if (mode->pixclock) {
-+ rate = PICOS2KHZ(mode->pixclock) * 1000;
-+ mode->refresh = rate / vt / ht;
-+ } else {
-+ if (pdata->lcd_type == JZ_LCD_TYPE_8BIT_SERIAL)
-+ rate = mode->refresh * (vt + 2 * mode->xres) * ht;
-+ else
-+ rate = mode->refresh * vt * ht;
-+
-+ mode->pixclock = KHZ2PICOS(rate / 1000);
-+ }
-+
-+ mutex_lock(&jzfb->lock);
-+ if (!jzfb->is_enabled)
-+ clk_enable(jzfb->ldclk);
-+ else
-+ ctrl |= JZ_LCD_CTRL_ENABLE;
-+
-+ switch (pdata->lcd_type) {
-+ case JZ_LCD_TYPE_SPECIAL_TFT_1:
-+ case JZ_LCD_TYPE_SPECIAL_TFT_2:
-+ case JZ_LCD_TYPE_SPECIAL_TFT_3:
-+ writel(pdata->special_tft_config.spl, jzfb->base + JZ_REG_LCD_SPL);
-+ writel(pdata->special_tft_config.cls, jzfb->base + JZ_REG_LCD_CLS);
-+ writel(pdata->special_tft_config.ps, jzfb->base + JZ_REG_LCD_PS);
-+ writel(pdata->special_tft_config.ps, jzfb->base + JZ_REG_LCD_REV);
-+ break;
-+ default:
-+ cfg |= JZ_LCD_CFG_PS_DISABLE;
-+ cfg |= JZ_LCD_CFG_CLS_DISABLE;
-+ cfg |= JZ_LCD_CFG_SPL_DISABLE;
-+ cfg |= JZ_LCD_CFG_REV_DISABLE;
-+ break;
-+ }
-+
-+ writel(mode->hsync_len, jzfb->base + JZ_REG_LCD_HSYNC);
-+ writel(mode->vsync_len, jzfb->base + JZ_REG_LCD_VSYNC);
-+
-+ writel((ht << 16) | vt, jzfb->base + JZ_REG_LCD_VAT);
-+
-+ writel((hds << 16) | hde, jzfb->base + JZ_REG_LCD_DAH);
-+ writel((vds << 16) | vde, jzfb->base + JZ_REG_LCD_DAV);
-+
-+ writel(cfg, jzfb->base + JZ_REG_LCD_CFG);
-+
-+ writel(ctrl, jzfb->base + JZ_REG_LCD_CTRL);
-+
-+ if (!jzfb->is_enabled)
-+ clk_disable(jzfb->ldclk);
-+
-+ mutex_unlock(&jzfb->lock);
-+
-+ clk_set_rate(jzfb->lpclk, rate);
-+ clk_set_rate(jzfb->ldclk, rate * 3);
-+
-+ return 0;
-+}
-+
-+static void jzfb_enable(struct jzfb *jzfb)
-+{
-+ uint32_t ctrl;
-+
-+ clk_enable(jzfb->ldclk);
-+
-+ jz_gpio_bulk_resume(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb));
-+ jz_gpio_bulk_resume(jz_lcd_data_pins, jzfb_num_data_pins(jzfb));
-+
-+ writel(0, jzfb->base + JZ_REG_LCD_STATE);
-+
-+ writel(jzfb->framedesc->next, jzfb->base + JZ_REG_LCD_DA0);
-+
-+ ctrl = readl(jzfb->base + JZ_REG_LCD_CTRL);
-+ ctrl |= JZ_LCD_CTRL_ENABLE;
-+ ctrl &= ~JZ_LCD_CTRL_DISABLE;
-+ writel(ctrl, jzfb->base + JZ_REG_LCD_CTRL);
-+}
-+
-+static void jzfb_disable(struct jzfb *jzfb)
-+{
-+ uint32_t ctrl;
-+
-+ ctrl = readl(jzfb->base + JZ_REG_LCD_CTRL);
-+ ctrl |= JZ_LCD_CTRL_DISABLE;
-+ writel(ctrl, jzfb->base + JZ_REG_LCD_CTRL);
-+ do {
-+ ctrl = readl(jzfb->base + JZ_REG_LCD_STATE);
-+ } while (!(ctrl & JZ_LCD_STATE_DISABLED));
-+
-+ jz_gpio_bulk_suspend(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb));
-+ jz_gpio_bulk_suspend(jz_lcd_data_pins, jzfb_num_data_pins(jzfb));
-+
-+ clk_disable(jzfb->ldclk);
-+}
-+
-+static int jzfb_blank(int blank_mode, struct fb_info *info)
-+{
-+ struct jzfb *jzfb = info->par;
-+
-+ switch (blank_mode) {
-+ case FB_BLANK_UNBLANK:
-+ mutex_lock(&jzfb->lock);
-+ if (jzfb->is_enabled) {
-+ mutex_unlock(&jzfb->lock);
-+ return 0;
-+ }
-+
-+ jzfb_enable(jzfb);
-+ jzfb->is_enabled = 1;
-+
-+ mutex_unlock(&jzfb->lock);
-+ break;
-+ default:
-+ mutex_lock(&jzfb->lock);
-+ if (!jzfb->is_enabled) {
-+ mutex_unlock(&jzfb->lock);
-+ return 0;
-+ }
-+
-+ jzfb_disable(jzfb);
-+ jzfb->is_enabled = 0;
-+
-+ mutex_unlock(&jzfb->lock);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+static int jzfb_alloc_devmem(struct jzfb *jzfb)
-+{
-+ int max_videosize = 0;
-+ struct fb_videomode *mode = jzfb->pdata->modes;
-+ void *page;
-+ int i;
-+
-+ for (i = 0; i < jzfb->pdata->num_modes; ++mode, ++i) {
-+ if (max_videosize < mode->xres * mode->yres)
-+ max_videosize = mode->xres * mode->yres;
-+ }
-+
-+ max_videosize *= jzfb_get_controller_bpp(jzfb) >> 3;
-+
-+ jzfb->framedesc = dma_alloc_coherent(&jzfb->pdev->dev,
-+ sizeof(*jzfb->framedesc),
-+ &jzfb->framedesc_phys, GFP_KERNEL);
-+
-+ if (!jzfb->framedesc)
-+ return -ENOMEM;
-+
-+ jzfb->vidmem_size = PAGE_ALIGN(max_videosize);
-+ jzfb->vidmem = dma_alloc_coherent(&jzfb->pdev->dev,
-+ jzfb->vidmem_size,
-+ &jzfb->vidmem_phys, GFP_KERNEL);
-+
-+ if (!jzfb->vidmem)
-+ goto err_free_framedesc;
-+
-+ for (page = jzfb->vidmem;
-+ page < jzfb->vidmem + PAGE_ALIGN(jzfb->vidmem_size);
-+ page += PAGE_SIZE) {
-+ SetPageReserved(virt_to_page(page));
-+ }
-+
-+ jzfb->framedesc->next = jzfb->framedesc_phys;
-+ jzfb->framedesc->addr = jzfb->vidmem_phys;
-+ jzfb->framedesc->id = 0xdeafbead;
-+ jzfb->framedesc->cmd = 0;
-+ jzfb->framedesc->cmd |= max_videosize / 4;
-+
-+ return 0;
-+
-+err_free_framedesc:
-+ dma_free_coherent(&jzfb->pdev->dev, sizeof(*jzfb->framedesc),
-+ jzfb->framedesc, jzfb->framedesc_phys);
-+ return -ENOMEM;
-+}
-+
-+static void jzfb_free_devmem(struct jzfb *jzfb)
-+{
-+ dma_free_coherent(&jzfb->pdev->dev, jzfb->vidmem_size,
-+ jzfb->vidmem, jzfb->vidmem_phys);
-+ dma_free_coherent(&jzfb->pdev->dev, sizeof(*jzfb->framedesc),
-+ jzfb->framedesc, jzfb->framedesc_phys);
-+}
-+
-+static struct fb_ops jzfb_ops = {
-+ .owner = THIS_MODULE,
-+ .fb_check_var = jzfb_check_var,
-+ .fb_set_par = jzfb_set_par,
-+ .fb_blank = jzfb_blank,
-+ .fb_fillrect = sys_fillrect,
-+ .fb_copyarea = sys_copyarea,
-+ .fb_imageblit = sys_imageblit,
-+ .fb_setcolreg = jzfb_setcolreg,
-+};
-+
-+static int __devinit jzfb_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jzfb *jzfb;
-+ struct fb_info *fb;
-+ struct jz4740_fb_platform_data *pdata = pdev->dev.platform_data;
-+ struct resource *mem;
-+
-+ if (!pdata) {
-+ dev_err(&pdev->dev, "Missing platform data\n");
-+ return -ENXIO;
-+ }
-+
-+ mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!mem) {
-+ dev_err(&pdev->dev, "Failed to get register memory resource\n");
-+ return -ENXIO;
-+ }
-+
-+ mem = request_mem_region(mem->start, resource_size(mem), pdev->name);
-+ if (!mem) {
-+ dev_err(&pdev->dev, "Failed to request register memory region\n");
-+ return -EBUSY;
-+ }
-+
-+ fb = framebuffer_alloc(sizeof(struct jzfb), &pdev->dev);
-+ if (!fb) {
-+ dev_err(&pdev->dev, "Failed to allocate framebuffer device\n");
-+ ret = -ENOMEM;
-+ goto err_release_mem_region;
-+ }
-+
-+ fb->fbops = &jzfb_ops;
-+ fb->flags = FBINFO_DEFAULT;
-+
-+ jzfb = fb->par;
-+ jzfb->pdev = pdev;
-+ jzfb->pdata = pdata;
-+ jzfb->mem = mem;
-+
-+ jzfb->ldclk = clk_get(&pdev->dev, "lcd");
-+ if (IS_ERR(jzfb->ldclk)) {
-+ ret = PTR_ERR(jzfb->ldclk);
-+ dev_err(&pdev->dev, "Failed to get lcd clock: %d\n", ret);
-+ goto err_framebuffer_release;
-+ }
-+
-+ jzfb->lpclk = clk_get(&pdev->dev, "lcd_pclk");
-+ if (IS_ERR(jzfb->lpclk)) {
-+ ret = PTR_ERR(jzfb->lpclk);
-+ dev_err(&pdev->dev, "Failed to get lcd pixel clock: %d\n", ret);
-+ goto err_put_ldclk;
-+ }
-+
-+ jzfb->base = ioremap(mem->start, resource_size(mem));
-+ if (!jzfb->base) {
-+ dev_err(&pdev->dev, "Failed to ioremap register memory region\n");
-+ ret = -EBUSY;
-+ goto err_put_lpclk;
-+ }
-+
-+ platform_set_drvdata(pdev, jzfb);
-+
-+ mutex_init(&jzfb->lock);
-+
-+ fb_videomode_to_modelist(pdata->modes, pdata->num_modes,
-+ &fb->modelist);
-+ fb_videomode_to_var(&fb->var, pdata->modes);
-+ fb->var.bits_per_pixel = pdata->bpp;
-+ jzfb_check_var(&fb->var, fb);
-+
-+ ret = jzfb_alloc_devmem(jzfb);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to allocate video memory\n");
-+ goto err_iounmap;
-+ }
-+
-+ fb->fix = jzfb_fix;
-+ fb->fix.line_length = fb->var.bits_per_pixel * fb->var.xres / 8;
-+ fb->fix.mmio_start = mem->start;
-+ fb->fix.mmio_len = resource_size(mem);
-+ fb->fix.smem_start = jzfb->vidmem_phys;
-+ fb->fix.smem_len = fb->fix.line_length * fb->var.yres;
-+ fb->screen_base = jzfb->vidmem;
-+ fb->pseudo_palette = jzfb->pseudo_palette;
-+
-+ fb_alloc_cmap(&fb->cmap, 256, 0);
-+
-+ clk_enable(jzfb->ldclk);
-+ jzfb->is_enabled = 1;
-+
-+ writel(jzfb->framedesc->next, jzfb->base + JZ_REG_LCD_DA0);
-+
-+ fb->mode = NULL;
-+ jzfb_set_par(fb);
-+
-+ jz_gpio_bulk_request(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb));
-+ jz_gpio_bulk_request(jz_lcd_data_pins, jzfb_num_data_pins(jzfb));
-+
-+ ret = register_framebuffer(fb);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to register framebuffer: %d\n", ret);
-+ goto err_free_devmem;
-+ }
-+
-+ jzfb->fb = fb;
-+
-+ return 0;
-+
-+err_free_devmem:
-+ jz_gpio_bulk_free(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb));
-+ jz_gpio_bulk_free(jz_lcd_data_pins, jzfb_num_data_pins(jzfb));
-+
-+ fb_dealloc_cmap(&fb->cmap);
-+ jzfb_free_devmem(jzfb);
-+err_iounmap:
-+ iounmap(jzfb->base);
-+err_put_lpclk:
-+ clk_put(jzfb->lpclk);
-+err_put_ldclk:
-+ clk_put(jzfb->ldclk);
-+err_framebuffer_release:
-+ framebuffer_release(fb);
-+err_release_mem_region:
-+ release_mem_region(mem->start, resource_size(mem));
-+ return ret;
-+}
-+
-+static int __devexit jzfb_remove(struct platform_device *pdev)
-+{
-+ struct jzfb *jzfb = platform_get_drvdata(pdev);
-+
-+ jzfb_blank(FB_BLANK_POWERDOWN, jzfb->fb);
-+
-+ jz_gpio_bulk_free(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb));
-+ jz_gpio_bulk_free(jz_lcd_data_pins, jzfb_num_data_pins(jzfb));
-+
-+ iounmap(jzfb->base);
-+ release_mem_region(jzfb->mem->start, resource_size(jzfb->mem));
-+
-+ fb_dealloc_cmap(&jzfb->fb->cmap);
-+ jzfb_free_devmem(jzfb);
-+
-+ platform_set_drvdata(pdev, NULL);
-+
-+ clk_put(jzfb->lpclk);
-+ clk_put(jzfb->ldclk);
-+
-+ framebuffer_release(jzfb->fb);
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+
-+static int jzfb_suspend(struct device *dev)
-+{
-+ struct jzfb *jzfb = dev_get_drvdata(dev);
-+
-+ acquire_console_sem();
-+ fb_set_suspend(jzfb->fb, 1);
-+ release_console_sem();
-+
-+ mutex_lock(&jzfb->lock);
-+ if (jzfb->is_enabled)
-+ jzfb_disable(jzfb);
-+ mutex_unlock(&jzfb->lock);
-+
-+ return 0;
-+}
-+
-+static int jzfb_resume(struct device *dev)
-+{
-+ struct jzfb *jzfb = dev_get_drvdata(dev);
-+ clk_enable(jzfb->ldclk);
-+
-+ mutex_lock(&jzfb->lock);
-+ if (jzfb->is_enabled)
-+ jzfb_enable(jzfb);
-+ mutex_unlock(&jzfb->lock);
-+
-+ acquire_console_sem();
-+ fb_set_suspend(jzfb->fb, 0);
-+ release_console_sem();
-+
-+ return 0;
-+}
-+
-+static const struct dev_pm_ops jzfb_pm_ops = {
-+ .suspend = jzfb_suspend,
-+ .resume = jzfb_resume,
-+ .poweroff = jzfb_suspend,
-+ .restore = jzfb_resume,
-+};
-+
-+#define JZFB_PM_OPS (&jzfb_pm_ops)
-+
-+#else
-+#define JZFB_PM_OPS NULL
-+#endif
-+
-+static struct platform_driver jzfb_driver = {
-+ .probe = jzfb_probe,
-+ .remove = __devexit_p(jzfb_remove),
-+ .driver = {
-+ .name = "jz4740-fb",
-+ .pm = JZFB_PM_OPS,
-+ },
-+};
-+
-+static int __init jzfb_init(void)
-+{
-+ return platform_driver_register(&jzfb_driver);
-+}
-+module_init(jzfb_init);
-+
-+static void __exit jzfb_exit(void)
-+{
-+ platform_driver_unregister(&jzfb_driver);
-+}
-+module_exit(jzfb_exit);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("JZ4740 SoC LCD framebuffer driver");
-+MODULE_ALIAS("platform:jz4740-fb");
diff --git a/target/linux/xburst/patches-2.6.35/052-rtc.patch b/target/linux/xburst/patches-2.6.35/052-rtc.patch
deleted file mode 100644
index f04c7bd1a4..0000000000
--- a/target/linux/xburst/patches-2.6.35/052-rtc.patch
+++ /dev/null
@@ -1,400 +0,0 @@
-From 21a0c050c7471b9d87e720a84f6733bbe8e19835 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 19 Jun 2010 18:29:50 +0000
-Subject: [PATCH] RTC: Add JZ4740 RTC driver
-
-Add support for the RTC unit on JZ4740 SoCs.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: Alessandro Zummo <a.zummo@towertech.it>
-Cc: Paul Gortmaker <p_gortmaker@yahoo.com>
-Cc: rtc-linux@googlegroups.com
-Acked-by: Wan ZongShun <mcuos.com@gmail.com>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Cc: Alessandro Zummo <a.zummo@towertech.it>,
-Patchwork: https://patchwork.linux-mips.org/patch/1424/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- drivers/rtc/Kconfig | 11 ++
- drivers/rtc/Makefile | 1 +
- drivers/rtc/rtc-jz4740.c | 345 ++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 357 insertions(+), 0 deletions(-)
- create mode 100644 drivers/rtc/rtc-jz4740.c
-
---- a/drivers/rtc/Kconfig
-+++ b/drivers/rtc/Kconfig
-@@ -914,4 +914,15 @@ config RTC_DRV_MPC5121
- This driver can also be built as a module. If so, the module
- will be called rtc-mpc5121.
-
-+config RTC_DRV_JZ4740
-+ tristate "Ingenic JZ4740 SoC"
-+ depends on RTC_CLASS
-+ depends on MACH_JZ4740
-+ help
-+ If you say yes here you get support for the Ingenic JZ4740 SoC RTC
-+ controller.
-+
-+ This driver can also be buillt as a module. If so, the module
-+ will be called rtc-jz4740.
-+
- endif # RTC_CLASS
---- a/drivers/rtc/Makefile
-+++ b/drivers/rtc/Makefile
-@@ -47,6 +47,7 @@ obj-$(CONFIG_RTC_DRV_EP93XX) += rtc-ep93
- obj-$(CONFIG_RTC_DRV_FM3130) += rtc-fm3130.o
- obj-$(CONFIG_RTC_DRV_GENERIC) += rtc-generic.o
- obj-$(CONFIG_RTC_DRV_ISL1208) += rtc-isl1208.o
-+obj-$(CONFIG_RTC_DRV_JZ4740) += rtc-jz4740.o
- obj-$(CONFIG_RTC_DRV_M41T80) += rtc-m41t80.o
- obj-$(CONFIG_RTC_DRV_M41T94) += rtc-m41t94.o
- obj-$(CONFIG_RTC_DRV_M48T35) += rtc-m48t35.o
---- /dev/null
-+++ b/drivers/rtc/rtc-jz4740.c
-@@ -0,0 +1,345 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC RTC driver
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/rtc.h>
-+#include <linux/slab.h>
-+#include <linux/spinlock.h>
-+
-+#define JZ_REG_RTC_CTRL 0x00
-+#define JZ_REG_RTC_SEC 0x04
-+#define JZ_REG_RTC_SEC_ALARM 0x08
-+#define JZ_REG_RTC_REGULATOR 0x0C
-+#define JZ_REG_RTC_HIBERNATE 0x20
-+#define JZ_REG_RTC_SCRATCHPAD 0x34
-+
-+#define JZ_RTC_CTRL_WRDY BIT(7)
-+#define JZ_RTC_CTRL_1HZ BIT(6)
-+#define JZ_RTC_CTRL_1HZ_IRQ BIT(5)
-+#define JZ_RTC_CTRL_AF BIT(4)
-+#define JZ_RTC_CTRL_AF_IRQ BIT(3)
-+#define JZ_RTC_CTRL_AE BIT(2)
-+#define JZ_RTC_CTRL_ENABLE BIT(0)
-+
-+struct jz4740_rtc {
-+ struct resource *mem;
-+ void __iomem *base;
-+
-+ struct rtc_device *rtc;
-+
-+ unsigned int irq;
-+
-+ spinlock_t lock;
-+};
-+
-+static inline uint32_t jz4740_rtc_reg_read(struct jz4740_rtc *rtc, size_t reg)
-+{
-+ return readl(rtc->base + reg);
-+}
-+
-+static int jz4740_rtc_wait_write_ready(struct jz4740_rtc *rtc)
-+{
-+ uint32_t ctrl;
-+ int timeout = 1000;
-+
-+ do {
-+ ctrl = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_CTRL);
-+ } while (!(ctrl & JZ_RTC_CTRL_WRDY) && --timeout);
-+
-+ return timeout ? 0 : -EIO;
-+}
-+
-+static inline int jz4740_rtc_reg_write(struct jz4740_rtc *rtc, size_t reg,
-+ uint32_t val)
-+{
-+ int ret;
-+ ret = jz4740_rtc_wait_write_ready(rtc);
-+ if (ret == 0)
-+ writel(val, rtc->base + reg);
-+
-+ return ret;
-+}
-+
-+static int jz4740_rtc_ctrl_set_bits(struct jz4740_rtc *rtc, uint32_t mask,
-+ bool set)
-+{
-+ int ret;
-+ unsigned long flags;
-+ uint32_t ctrl;
-+
-+ spin_lock_irqsave(&rtc->lock, flags);
-+
-+ ctrl = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_CTRL);
-+
-+ /* Don't clear interrupt flags by accident */
-+ ctrl |= JZ_RTC_CTRL_1HZ | JZ_RTC_CTRL_AF;
-+
-+ if (set)
-+ ctrl |= mask;
-+ else
-+ ctrl &= ~mask;
-+
-+ ret = jz4740_rtc_reg_write(rtc, JZ_REG_RTC_CTRL, ctrl);
-+
-+ spin_unlock_irqrestore(&rtc->lock, flags);
-+
-+ return ret;
-+}
-+
-+static int jz4740_rtc_read_time(struct device *dev, struct rtc_time *time)
-+{
-+ struct jz4740_rtc *rtc = dev_get_drvdata(dev);
-+ uint32_t secs, secs2;
-+ int timeout = 5;
-+
-+ /* If the seconds register is read while it is updated, it can contain a
-+ * bogus value. This can be avoided by making sure that two consecutive
-+ * reads have the same value.
-+ */
-+ secs = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_SEC);
-+ secs2 = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_SEC);
-+
-+ while (secs != secs2 && --timeout) {
-+ secs = secs2;
-+ secs2 = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_SEC);
-+ }
-+
-+ if (timeout == 0)
-+ return -EIO;
-+
-+ rtc_time_to_tm(secs, time);
-+
-+ return rtc_valid_tm(time);
-+}
-+
-+static int jz4740_rtc_set_mmss(struct device *dev, unsigned long secs)
-+{
-+ struct jz4740_rtc *rtc = dev_get_drvdata(dev);
-+
-+ return jz4740_rtc_reg_write(rtc, JZ_REG_RTC_SEC, secs);
-+}
-+
-+static int jz4740_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
-+{
-+ struct jz4740_rtc *rtc = dev_get_drvdata(dev);
-+ uint32_t secs;
-+ uint32_t ctrl;
-+
-+ secs = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_SEC_ALARM);
-+
-+ ctrl = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_CTRL);
-+
-+ alrm->enabled = !!(ctrl & JZ_RTC_CTRL_AE);
-+ alrm->pending = !!(ctrl & JZ_RTC_CTRL_AF);
-+
-+ rtc_time_to_tm(secs, &alrm->time);
-+
-+ return rtc_valid_tm(&alrm->time);
-+}
-+
-+static int jz4740_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
-+{
-+ int ret;
-+ struct jz4740_rtc *rtc = dev_get_drvdata(dev);
-+ unsigned long secs;
-+
-+ rtc_tm_to_time(&alrm->time, &secs);
-+
-+ ret = jz4740_rtc_reg_write(rtc, JZ_REG_RTC_SEC_ALARM, secs);
-+ if (!ret)
-+ ret = jz4740_rtc_ctrl_set_bits(rtc, JZ_RTC_CTRL_AE, alrm->enabled);
-+
-+ return ret;
-+}
-+
-+static int jz4740_rtc_update_irq_enable(struct device *dev, unsigned int enable)
-+{
-+ struct jz4740_rtc *rtc = dev_get_drvdata(dev);
-+ return jz4740_rtc_ctrl_set_bits(rtc, JZ_RTC_CTRL_1HZ_IRQ, enable);
-+}
-+
-+static int jz4740_rtc_alarm_irq_enable(struct device *dev, unsigned int enable)
-+{
-+ struct jz4740_rtc *rtc = dev_get_drvdata(dev);
-+ return jz4740_rtc_ctrl_set_bits(rtc, JZ_RTC_CTRL_AF_IRQ, enable);
-+}
-+
-+static struct rtc_class_ops jz4740_rtc_ops = {
-+ .read_time = jz4740_rtc_read_time,
-+ .set_mmss = jz4740_rtc_set_mmss,
-+ .read_alarm = jz4740_rtc_read_alarm,
-+ .set_alarm = jz4740_rtc_set_alarm,
-+ .update_irq_enable = jz4740_rtc_update_irq_enable,
-+ .alarm_irq_enable = jz4740_rtc_alarm_irq_enable,
-+};
-+
-+static irqreturn_t jz4740_rtc_irq(int irq, void *data)
-+{
-+ struct jz4740_rtc *rtc = data;
-+ uint32_t ctrl;
-+ unsigned long events = 0;
-+
-+ ctrl = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_CTRL);
-+
-+ if (ctrl & JZ_RTC_CTRL_1HZ)
-+ events |= (RTC_UF | RTC_IRQF);
-+
-+ if (ctrl & JZ_RTC_CTRL_AF)
-+ events |= (RTC_AF | RTC_IRQF);
-+
-+ rtc_update_irq(rtc->rtc, 1, events);
-+
-+ jz4740_rtc_ctrl_set_bits(rtc, JZ_RTC_CTRL_1HZ | JZ_RTC_CTRL_AF, false);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+void jz4740_rtc_poweroff(struct device *dev)
-+{
-+ struct jz4740_rtc *rtc = dev_get_drvdata(dev);
-+ jz4740_rtc_reg_write(rtc, JZ_REG_RTC_HIBERNATE, 1);
-+}
-+EXPORT_SYMBOL_GPL(jz4740_rtc_poweroff);
-+
-+static int __devinit jz4740_rtc_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jz4740_rtc *rtc;
-+ uint32_t scratchpad;
-+
-+ rtc = kzalloc(sizeof(*rtc), GFP_KERNEL);
-+ if (!rtc)
-+ return -ENOMEM;
-+
-+ rtc->irq = platform_get_irq(pdev, 0);
-+ if (rtc->irq < 0) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get platform irq\n");
-+ goto err_free;
-+ }
-+
-+ rtc->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!rtc->mem) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get platform mmio memory\n");
-+ goto err_free;
-+ }
-+
-+ rtc->mem = request_mem_region(rtc->mem->start, resource_size(rtc->mem),
-+ pdev->name);
-+ if (!rtc->mem) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to request mmio memory region\n");
-+ goto err_free;
-+ }
-+
-+ rtc->base = ioremap_nocache(rtc->mem->start, resource_size(rtc->mem));
-+ if (!rtc->base) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to ioremap mmio memory\n");
-+ goto err_release_mem_region;
-+ }
-+
-+ spin_lock_init(&rtc->lock);
-+
-+ platform_set_drvdata(pdev, rtc);
-+
-+ rtc->rtc = rtc_device_register(pdev->name, &pdev->dev, &jz4740_rtc_ops,
-+ THIS_MODULE);
-+ if (IS_ERR(rtc->rtc)) {
-+ ret = PTR_ERR(rtc->rtc);
-+ dev_err(&pdev->dev, "Failed to register rtc device: %d\n", ret);
-+ goto err_iounmap;
-+ }
-+
-+ ret = request_irq(rtc->irq, jz4740_rtc_irq, 0,
-+ pdev->name, rtc);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request rtc irq: %d\n", ret);
-+ goto err_unregister_rtc;
-+ }
-+
-+ scratchpad = jz4740_rtc_reg_read(rtc, JZ_REG_RTC_SCRATCHPAD);
-+ if (scratchpad != 0x12345678) {
-+ ret = jz4740_rtc_reg_write(rtc, JZ_REG_RTC_SCRATCHPAD, 0x12345678);
-+ ret = jz4740_rtc_reg_write(rtc, JZ_REG_RTC_SEC, 0);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Could not write write to RTC registers\n");
-+ goto err_free_irq;
-+ }
-+ }
-+
-+ return 0;
-+
-+err_free_irq:
-+ free_irq(rtc->irq, rtc);
-+err_unregister_rtc:
-+ rtc_device_unregister(rtc->rtc);
-+err_iounmap:
-+ platform_set_drvdata(pdev, NULL);
-+ iounmap(rtc->base);
-+err_release_mem_region:
-+ release_mem_region(rtc->mem->start, resource_size(rtc->mem));
-+err_free:
-+ kfree(rtc);
-+
-+ return ret;
-+}
-+
-+static int __devexit jz4740_rtc_remove(struct platform_device *pdev)
-+{
-+ struct jz4740_rtc *rtc = platform_get_drvdata(pdev);
-+
-+ free_irq(rtc->irq, rtc);
-+
-+ rtc_device_unregister(rtc->rtc);
-+
-+ iounmap(rtc->base);
-+ release_mem_region(rtc->mem->start, resource_size(rtc->mem));
-+
-+ kfree(rtc);
-+
-+ platform_set_drvdata(pdev, NULL);
-+
-+ return 0;
-+}
-+
-+struct platform_driver jz4740_rtc_driver = {
-+ .probe = jz4740_rtc_probe,
-+ .remove = __devexit_p(jz4740_rtc_remove),
-+ .driver = {
-+ .name = "jz4740-rtc",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init jz4740_rtc_init(void)
-+{
-+ return platform_driver_register(&jz4740_rtc_driver);
-+}
-+module_init(jz4740_rtc_init);
-+
-+static void __exit jz4740_rtc_exit(void)
-+{
-+ platform_driver_unregister(&jz4740_rtc_driver);
-+}
-+module_exit(jz4740_rtc_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_LICENSE("GPL");
-+MODULE_DESCRIPTION("RTC driver for the JZ4740 SoC\n");
-+MODULE_ALIAS("platform:jz4740-rtc");
diff --git a/target/linux/xburst/patches-2.6.35/053-adc.patch b/target/linux/xburst/patches-2.6.35/053-adc.patch
deleted file mode 100644
index 9f3912de25..0000000000
--- a/target/linux/xburst/patches-2.6.35/053-adc.patch
+++ /dev/null
@@ -1,476 +0,0 @@
-From ae6e941c5d58262c0a09c355ae384b7109977053 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Mon, 12 Jul 2010 03:48:08 +0200
-Subject: [PATCH] mfd: Add JZ4740 ADC driver
-
-This patch adds a MFD driver for the JZ4740 ADC unit. The driver is used to
-demultiplex IRQs and synchronize access to shared registers between the
-battery, hwmon and (future) touchscreen driver.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
----
- drivers/mfd/Kconfig | 8 +
- drivers/mfd/Makefile | 1 +
- drivers/mfd/jz4740-adc.c | 394 ++++++++++++++++++++++++++++++++++++++++++++
- include/linux/jz4740-adc.h | 32 ++++
- 4 files changed, 435 insertions(+), 0 deletions(-)
- create mode 100644 drivers/mfd/jz4740-adc.c
- create mode 100644 include/linux/jz4740-adc.h
-
---- a/drivers/mfd/Kconfig
-+++ b/drivers/mfd/Kconfig
-@@ -482,6 +482,14 @@ config MFD_JANZ_CMODIO
- host many different types of MODULbus daughterboards, including
- CAN and GPIO controllers.
-
-+config MFD_JZ4740_ADC
-+ tristate "Support for the JZ4740 SoC ADC core"
-+ select MFD_CORE
-+ depends on MACH_JZ4740
-+ help
-+ Say yes here if you want support for the ADC unit in the JZ4740 SoC.
-+ This driver is necessary for jz4740-battery and jz4740-hwmon driver.
-+
- endif # MFD_SUPPORT
-
- menu "Multimedia Capabilities Port drivers"
---- a/drivers/mfd/Makefile
-+++ b/drivers/mfd/Makefile
-@@ -71,3 +71,4 @@ obj-$(CONFIG_PMIC_ADP5520) += adp5520.o
- obj-$(CONFIG_LPC_SCH) += lpc_sch.o
- obj-$(CONFIG_MFD_RDC321X) += rdc321x-southbridge.o
- obj-$(CONFIG_MFD_JANZ_CMODIO) += janz-cmodio.o
-+obj-$(CONFIG_MFD_JZ4740_ADC) += jz4740-adc.o
---- /dev/null
-+++ b/drivers/mfd/jz4740-adc.c
-@@ -0,0 +1,394 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC ADC driver
-+ *
-+ * 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.
-+ *
-+ * 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.
-+ *
-+ * This driver synchronizes access to the JZ4740 ADC core between the
-+ * JZ4740 battery and hwmon drivers.
-+ */
-+
-+#include <linux/err.h>
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+#include <linux/spinlock.h>
-+
-+#include <linux/clk.h>
-+#include <linux/mfd/core.h>
-+
-+#include <linux/jz4740-adc.h>
-+
-+
-+#define JZ_REG_ADC_ENABLE 0x00
-+#define JZ_REG_ADC_CFG 0x04
-+#define JZ_REG_ADC_CTRL 0x08
-+#define JZ_REG_ADC_STATUS 0x0c
-+
-+#define JZ_REG_ADC_TOUCHSCREEN_BASE 0x10
-+#define JZ_REG_ADC_BATTERY_BASE 0x1c
-+#define JZ_REG_ADC_HWMON_BASE 0x20
-+
-+#define JZ_ADC_ENABLE_TOUCH BIT(2)
-+#define JZ_ADC_ENABLE_BATTERY BIT(1)
-+#define JZ_ADC_ENABLE_ADCIN BIT(0)
-+
-+enum {
-+ JZ_ADC_IRQ_ADCIN = 0,
-+ JZ_ADC_IRQ_BATTERY,
-+ JZ_ADC_IRQ_TOUCH,
-+ JZ_ADC_IRQ_PENUP,
-+ JZ_ADC_IRQ_PENDOWN,
-+};
-+
-+struct jz4740_adc {
-+ struct resource *mem;
-+ void __iomem *base;
-+
-+ int irq;
-+ int irq_base;
-+
-+ struct clk *clk;
-+ atomic_t clk_ref;
-+
-+ spinlock_t lock;
-+};
-+
-+static inline void jz4740_adc_irq_set_masked(struct jz4740_adc *adc, int irq,
-+ bool masked)
-+{
-+ unsigned long flags;
-+ uint8_t val;
-+
-+ irq -= adc->irq_base;
-+
-+ spin_lock_irqsave(&adc->lock, flags);
-+
-+ val = readb(adc->base + JZ_REG_ADC_CTRL);
-+ if (masked)
-+ val |= BIT(irq);
-+ else
-+ val &= ~BIT(irq);
-+ writeb(val, adc->base + JZ_REG_ADC_CTRL);
-+
-+ spin_unlock_irqrestore(&adc->lock, flags);
-+}
-+
-+static void jz4740_adc_irq_mask(unsigned int irq)
-+{
-+ struct jz4740_adc *adc = get_irq_chip_data(irq);
-+ jz4740_adc_irq_set_masked(adc, irq, true);
-+}
-+
-+static void jz4740_adc_irq_unmask(unsigned int irq)
-+{
-+ struct jz4740_adc *adc = get_irq_chip_data(irq);
-+ jz4740_adc_irq_set_masked(adc, irq, false);
-+}
-+
-+static void jz4740_adc_irq_ack(unsigned int irq)
-+{
-+ struct jz4740_adc *adc = get_irq_chip_data(irq);
-+
-+ irq -= adc->irq_base;
-+ writeb(BIT(irq), adc->base + JZ_REG_ADC_STATUS);
-+}
-+
-+static struct irq_chip jz4740_adc_irq_chip = {
-+ .name = "jz4740-adc",
-+ .mask = jz4740_adc_irq_mask,
-+ .unmask = jz4740_adc_irq_unmask,
-+ .ack = jz4740_adc_irq_ack,
-+};
-+
-+static void jz4740_adc_irq_demux(unsigned int irq, struct irq_desc *desc)
-+{
-+ struct jz4740_adc *adc = get_irq_desc_data(desc);
-+ uint8_t status;
-+ unsigned int i;
-+
-+ status = readb(adc->base + JZ_REG_ADC_STATUS);
-+
-+ for (i = 0; i < 5; ++i) {
-+ if (status & BIT(i))
-+ generic_handle_irq(adc->irq_base + i);
-+ }
-+}
-+
-+
-+/* Refcounting for the ADC clock is done in here instead of in the clock
-+ * framework, because it is the only clock which is shared between multiple
-+ * devices and thus is the only clock which needs refcounting */
-+static inline void jz4740_adc_clk_enable(struct jz4740_adc *adc)
-+{
-+ if (atomic_inc_return(&adc->clk_ref) == 1)
-+ clk_enable(adc->clk);
-+}
-+
-+static inline void jz4740_adc_clk_disable(struct jz4740_adc *adc)
-+{
-+ if (atomic_dec_return(&adc->clk_ref) == 0)
-+ clk_disable(adc->clk);
-+}
-+
-+static inline void jz4740_adc_set_enabled(struct jz4740_adc *adc, int engine,
-+ bool enabled)
-+{
-+ unsigned long flags;
-+ uint8_t val;
-+
-+ spin_lock_irqsave(&adc->lock, flags);
-+
-+ val = readb(adc->base + JZ_REG_ADC_ENABLE);
-+ if (enabled)
-+ val |= BIT(engine);
-+ else
-+ val &= BIT(engine);
-+ writeb(val, adc->base + JZ_REG_ADC_ENABLE);
-+
-+ spin_unlock_irqrestore(&adc->lock, flags);
-+}
-+
-+static int jz4740_adc_cell_enable(struct platform_device *pdev)
-+{
-+ struct jz4740_adc *adc = dev_get_drvdata(pdev->dev.parent);
-+
-+ jz4740_adc_clk_enable(adc);
-+ jz4740_adc_set_enabled(adc, pdev->id, true);
-+
-+ return 0;
-+}
-+
-+static int jz4740_adc_cell_disable(struct platform_device *pdev)
-+{
-+ struct jz4740_adc *adc = dev_get_drvdata(pdev->dev.parent);
-+
-+ jz4740_adc_set_enabled(adc, pdev->id, false);
-+ jz4740_adc_clk_disable(adc);
-+
-+ return 0;
-+}
-+
-+int jz4740_adc_set_config(struct device *dev, uint32_t mask, uint32_t val)
-+{
-+ struct jz4740_adc *adc = dev_get_drvdata(dev);
-+ unsigned long flags;
-+ uint32_t cfg;
-+
-+ if (!adc)
-+ return -ENODEV;
-+
-+ spin_lock_irqsave(&adc->lock, flags);
-+
-+ cfg = readl(adc->base + JZ_REG_ADC_CFG);
-+
-+ cfg &= ~mask;
-+ cfg |= val;
-+
-+ writel(cfg, adc->base + JZ_REG_ADC_CFG);
-+
-+ spin_unlock_irqrestore(&adc->lock, flags);
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(jz4740_adc_set_config);
-+
-+static struct resource jz4740_hwmon_resources[] = {
-+ {
-+ .start = JZ_ADC_IRQ_ADCIN,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ {
-+ .start = JZ_REG_ADC_HWMON_BASE,
-+ .end = JZ_REG_ADC_HWMON_BASE + 3,
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+static struct resource jz4740_battery_resources[] = {
-+ {
-+ .start = JZ_ADC_IRQ_BATTERY,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ {
-+ .start = JZ_REG_ADC_BATTERY_BASE,
-+ .end = JZ_REG_ADC_BATTERY_BASE + 3,
-+ .flags = IORESOURCE_MEM,
-+ },
-+};
-+
-+const struct mfd_cell jz4740_adc_cells[] = {
-+ {
-+ .id = 0,
-+ .name = "jz4740-hwmon",
-+ .num_resources = ARRAY_SIZE(jz4740_hwmon_resources),
-+ .resources = jz4740_hwmon_resources,
-+ .platform_data = (void *)&jz4740_adc_cells[0],
-+ .data_size = sizeof(struct mfd_cell),
-+
-+ .enable = jz4740_adc_cell_enable,
-+ .disable = jz4740_adc_cell_disable,
-+ },
-+ {
-+ .id = 1,
-+ .name = "jz4740-battery",
-+ .num_resources = ARRAY_SIZE(jz4740_battery_resources),
-+ .resources = jz4740_battery_resources,
-+ .platform_data = (void *)&jz4740_adc_cells[1],
-+ .data_size = sizeof(struct mfd_cell),
-+
-+ .enable = jz4740_adc_cell_enable,
-+ .disable = jz4740_adc_cell_disable,
-+ },
-+};
-+
-+static int __devinit jz4740_adc_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jz4740_adc *adc;
-+ struct resource *mem_base;
-+ int irq;
-+
-+ adc = kmalloc(sizeof(*adc), GFP_KERNEL);
-+ if (!adc) {
-+ dev_err(&pdev->dev, "Failed to allocate driver structure\n");
-+ return -ENOMEM;
-+ }
-+
-+ adc->irq = platform_get_irq(pdev, 0);
-+ if (adc->irq < 0) {
-+ ret = adc->irq;
-+ dev_err(&pdev->dev, "Failed to get platform irq: %d\n", ret);
-+ goto err_free;
-+ }
-+
-+ adc->irq_base = platform_get_irq(pdev, 1);
-+ if (adc->irq_base < 0) {
-+ ret = adc->irq_base;
-+ dev_err(&pdev->dev, "Failed to get irq base: %d\n", ret);
-+ goto err_free;
-+ }
-+
-+ mem_base = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!mem_base) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get platform mmio resource\n");
-+ goto err_free;
-+ }
-+
-+ /* Only request the shared registers for the MFD driver */
-+ adc->mem = request_mem_region(mem_base->start, JZ_REG_ADC_STATUS,
-+ pdev->name);
-+ if (!adc->mem) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to request mmio memory region\n");
-+ goto err_free;
-+ }
-+
-+ adc->base = ioremap_nocache(adc->mem->start, resource_size(adc->mem));
-+ if (!adc->base) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to ioremap mmio memory\n");
-+ goto err_release_mem_region;
-+ }
-+
-+ adc->clk = clk_get(&pdev->dev, "adc");
-+ if (IS_ERR(adc->clk)) {
-+ ret = PTR_ERR(adc->clk);
-+ dev_err(&pdev->dev, "Failed to get clock: %d\n", ret);
-+ goto err_iounmap;
-+ }
-+
-+ spin_lock_init(&adc->lock);
-+ atomic_set(&adc->clk_ref, 0);
-+
-+ platform_set_drvdata(pdev, adc);
-+
-+ for (irq = adc->irq_base; irq < adc->irq_base + 5; ++irq) {
-+ set_irq_chip_data(irq, adc);
-+ set_irq_chip_and_handler(irq, &jz4740_adc_irq_chip,
-+ handle_level_irq);
-+ }
-+
-+ set_irq_data(adc->irq, adc);
-+ set_irq_chained_handler(adc->irq, jz4740_adc_irq_demux);
-+
-+ writeb(0x00, adc->base + JZ_REG_ADC_ENABLE);
-+ writeb(0xff, adc->base + JZ_REG_ADC_CTRL);
-+
-+ ret = mfd_add_devices(&pdev->dev, 0, jz4740_adc_cells,
-+ ARRAY_SIZE(jz4740_adc_cells), mem_base, adc->irq_base);
-+ if (ret < 0)
-+ goto err_clk_put;
-+
-+ return 0;
-+
-+err_clk_put:
-+ clk_put(adc->clk);
-+err_iounmap:
-+ platform_set_drvdata(pdev, NULL);
-+ iounmap(adc->base);
-+err_release_mem_region:
-+ release_mem_region(adc->mem->start, resource_size(adc->mem));
-+err_free:
-+ kfree(adc);
-+
-+ return ret;
-+}
-+
-+static int __devexit jz4740_adc_remove(struct platform_device *pdev)
-+{
-+ struct jz4740_adc *adc = platform_get_drvdata(pdev);
-+
-+ mfd_remove_devices(&pdev->dev);
-+
-+ set_irq_data(adc->irq, NULL);
-+ set_irq_chained_handler(adc->irq, NULL);
-+
-+ iounmap(adc->base);
-+ release_mem_region(adc->mem->start, resource_size(adc->mem));
-+
-+ clk_put(adc->clk);
-+
-+ platform_set_drvdata(pdev, NULL);
-+
-+ kfree(adc);
-+
-+ return 0;
-+}
-+
-+struct platform_driver jz4740_adc_driver = {
-+ .probe = jz4740_adc_probe,
-+ .remove = __devexit_p(jz4740_adc_remove),
-+ .driver = {
-+ .name = "jz4740-adc",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init jz4740_adc_init(void)
-+{
-+ return platform_driver_register(&jz4740_adc_driver);
-+}
-+module_init(jz4740_adc_init);
-+
-+static void __exit jz4740_adc_exit(void)
-+{
-+ platform_driver_unregister(&jz4740_adc_driver);
-+}
-+module_exit(jz4740_adc_exit);
-+
-+MODULE_DESCRIPTION("JZ4740 SoC ADC driver");
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:jz4740-adc");
---- /dev/null
-+++ b/include/linux/jz4740-adc.h
-@@ -0,0 +1,32 @@
-+
-+#ifndef __LINUX_JZ4740_ADC
-+#define __LINUX_JZ4740_ADC
-+
-+#include <linux/device.h>
-+
-+/*
-+ * jz4740_adc_set_config - Configure a JZ4740 adc device
-+ * @dev: Pointer to a jz4740-adc device
-+ * @mask: Mask for the config value to be set
-+ * @val: Value to be set
-+ *
-+ * This function can be used by the JZ4740 ADC mfd cells to configure their
-+ * options in the shared config register.
-+*/
-+int jz4740_adc_set_config(struct device *dev, uint32_t mask, uint32_t val);
-+
-+#define JZ_ADC_CONFIG_SPZZ BIT(31)
-+#define JZ_ADC_CONFIG_EX_IN BIT(30)
-+#define JZ_ADC_CONFIG_DNUM_MASK (0x7 << 16)
-+#define JZ_ADC_CONFIG_DMA_ENABLE BIT(15)
-+#define JZ_ADC_CONFIG_XYZ_MASK (0x2 << 13)
-+#define JZ_ADC_CONFIG_SAMPLE_NUM_MASK (0x7 << 10)
-+#define JZ_ADC_CONFIG_CLKDIV_MASK (0xf << 5)
-+#define JZ_ADC_CONFIG_BAT_MB BIT(4)
-+
-+#define JZ_ADC_CONFIG_DNUM(dnum) ((dnum) << 16)
-+#define JZ_ADC_CONFIG_XYZ_OFFSET(dnum) ((xyz) << 13)
-+#define JZ_ADC_CONFIG_SAMPLE_NUM(x) ((x) << 10)
-+#define JZ_ADC_CONFIG_CLKDIV(div) ((div) << 5)
-+
-+#endif
diff --git a/target/linux/xburst/patches-2.6.35/054-mmc.patch b/target/linux/xburst/patches-2.6.35/054-mmc.patch
deleted file mode 100644
index 1a07655869..0000000000
--- a/target/linux/xburst/patches-2.6.35/054-mmc.patch
+++ /dev/null
@@ -1,1098 +0,0 @@
-From 11bc6d97096ab89da31f628c89b19ff37dfdd526 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Thu, 15 Jul 2010 20:06:04 +0000
-Subject: [PATCH] MMC: Add support for the controller on JZ4740 SoCs.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Acked-by: Matt Fleming <matt@console-pimps.org>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Cc: Matt Fleming <matt@console-pimps.org>
-Cc: linux-mmc@vger.kernel.org
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1463/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/include/asm/mach-jz4740/jz4740_mmc.h | 15 +
- drivers/mmc/host/Kconfig | 9 +
- drivers/mmc/host/Makefile | 1 +
- drivers/mmc/host/jz4740_mmc.c | 1029 ++++++++++++++++++++++++
- 4 files changed, 1054 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/include/asm/mach-jz4740/jz4740_mmc.h
- create mode 100644 drivers/mmc/host/jz4740_mmc.c
-
---- /dev/null
-+++ b/arch/mips/include/asm/mach-jz4740/jz4740_mmc.h
-@@ -0,0 +1,15 @@
-+#ifndef __LINUX_MMC_JZ4740_MMC
-+#define __LINUX_MMC_JZ4740_MMC
-+
-+struct jz4740_mmc_platform_data {
-+ int gpio_power;
-+ int gpio_card_detect;
-+ int gpio_read_only;
-+ unsigned card_detect_active_low:1;
-+ unsigned read_only_active_low:1;
-+ unsigned power_active_low:1;
-+
-+ unsigned data_1bit:1;
-+};
-+
-+#endif
---- a/drivers/mmc/host/Kconfig
-+++ b/drivers/mmc/host/Kconfig
-@@ -457,3 +457,12 @@ config MMC_SH_MMCIF
- This selects the MMC Host Interface controler (MMCIF).
-
- This driver supports MMCIF in sh7724/sh7757/sh7372.
-+
-+config MMC_JZ4740
-+ tristate "JZ4740 SD/Multimedia Card Interface support"
-+ depends on MACH_JZ4740
-+ help
-+ This selects support for the SD/MMC controller on Ingenic JZ4740
-+ SoCs.
-+ If you have a board based on such a SoC and with a SD/MMC slot,
-+ say Y or M here.
---- a/drivers/mmc/host/Makefile
-+++ b/drivers/mmc/host/Makefile
-@@ -37,6 +37,7 @@ obj-$(CONFIG_MMC_VIA_SDMMC) += via-sdmmc
- obj-$(CONFIG_GPIOMMC) += gpiommc.o
- obj-$(CONFIG_SDH_BFIN) += bfin_sdh.o
- obj-$(CONFIG_MMC_SH_MMCIF) += sh_mmcif.o
-+obj-$(CONFIG_MMC_JZ4740) += jz4740_mmc.o
-
- obj-$(CONFIG_MMC_SDHCI_OF) += sdhci-of.o
- sdhci-of-y := sdhci-of-core.o
---- /dev/null
-+++ b/drivers/mmc/host/jz4740_mmc.c
-@@ -0,0 +1,1029 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SD/MMC controller driver
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/mmc/host.h>
-+#include <linux/io.h>
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/delay.h>
-+#include <linux/scatterlist.h>
-+#include <linux/clk.h>
-+
-+#include <linux/bitops.h>
-+#include <linux/gpio.h>
-+#include <asm/mach-jz4740/gpio.h>
-+#include <asm/cacheflush.h>
-+#include <linux/dma-mapping.h>
-+
-+#include <asm/mach-jz4740/jz4740_mmc.h>
-+
-+#define JZ_REG_MMC_STRPCL 0x00
-+#define JZ_REG_MMC_STATUS 0x04
-+#define JZ_REG_MMC_CLKRT 0x08
-+#define JZ_REG_MMC_CMDAT 0x0C
-+#define JZ_REG_MMC_RESTO 0x10
-+#define JZ_REG_MMC_RDTO 0x14
-+#define JZ_REG_MMC_BLKLEN 0x18
-+#define JZ_REG_MMC_NOB 0x1C
-+#define JZ_REG_MMC_SNOB 0x20
-+#define JZ_REG_MMC_IMASK 0x24
-+#define JZ_REG_MMC_IREG 0x28
-+#define JZ_REG_MMC_CMD 0x2C
-+#define JZ_REG_MMC_ARG 0x30
-+#define JZ_REG_MMC_RESP_FIFO 0x34
-+#define JZ_REG_MMC_RXFIFO 0x38
-+#define JZ_REG_MMC_TXFIFO 0x3C
-+
-+#define JZ_MMC_STRPCL_EXIT_MULTIPLE BIT(7)
-+#define JZ_MMC_STRPCL_EXIT_TRANSFER BIT(6)
-+#define JZ_MMC_STRPCL_START_READWAIT BIT(5)
-+#define JZ_MMC_STRPCL_STOP_READWAIT BIT(4)
-+#define JZ_MMC_STRPCL_RESET BIT(3)
-+#define JZ_MMC_STRPCL_START_OP BIT(2)
-+#define JZ_MMC_STRPCL_CLOCK_CONTROL (BIT(1) | BIT(0))
-+#define JZ_MMC_STRPCL_CLOCK_STOP BIT(0)
-+#define JZ_MMC_STRPCL_CLOCK_START BIT(1)
-+
-+
-+#define JZ_MMC_STATUS_IS_RESETTING BIT(15)
-+#define JZ_MMC_STATUS_SDIO_INT_ACTIVE BIT(14)
-+#define JZ_MMC_STATUS_PRG_DONE BIT(13)
-+#define JZ_MMC_STATUS_DATA_TRAN_DONE BIT(12)
-+#define JZ_MMC_STATUS_END_CMD_RES BIT(11)
-+#define JZ_MMC_STATUS_DATA_FIFO_AFULL BIT(10)
-+#define JZ_MMC_STATUS_IS_READWAIT BIT(9)
-+#define JZ_MMC_STATUS_CLK_EN BIT(8)
-+#define JZ_MMC_STATUS_DATA_FIFO_FULL BIT(7)
-+#define JZ_MMC_STATUS_DATA_FIFO_EMPTY BIT(6)
-+#define JZ_MMC_STATUS_CRC_RES_ERR BIT(5)
-+#define JZ_MMC_STATUS_CRC_READ_ERROR BIT(4)
-+#define JZ_MMC_STATUS_TIMEOUT_WRITE BIT(3)
-+#define JZ_MMC_STATUS_CRC_WRITE_ERROR BIT(2)
-+#define JZ_MMC_STATUS_TIMEOUT_RES BIT(1)
-+#define JZ_MMC_STATUS_TIMEOUT_READ BIT(0)
-+
-+#define JZ_MMC_STATUS_READ_ERROR_MASK (BIT(4) | BIT(0))
-+#define JZ_MMC_STATUS_WRITE_ERROR_MASK (BIT(3) | BIT(2))
-+
-+
-+#define JZ_MMC_CMDAT_IO_ABORT BIT(11)
-+#define JZ_MMC_CMDAT_BUS_WIDTH_4BIT BIT(10)
-+#define JZ_MMC_CMDAT_DMA_EN BIT(8)
-+#define JZ_MMC_CMDAT_INIT BIT(7)
-+#define JZ_MMC_CMDAT_BUSY BIT(6)
-+#define JZ_MMC_CMDAT_STREAM BIT(5)
-+#define JZ_MMC_CMDAT_WRITE BIT(4)
-+#define JZ_MMC_CMDAT_DATA_EN BIT(3)
-+#define JZ_MMC_CMDAT_RESPONSE_FORMAT (BIT(2) | BIT(1) | BIT(0))
-+#define JZ_MMC_CMDAT_RSP_R1 1
-+#define JZ_MMC_CMDAT_RSP_R2 2
-+#define JZ_MMC_CMDAT_RSP_R3 3
-+
-+#define JZ_MMC_IRQ_SDIO BIT(7)
-+#define JZ_MMC_IRQ_TXFIFO_WR_REQ BIT(6)
-+#define JZ_MMC_IRQ_RXFIFO_RD_REQ BIT(5)
-+#define JZ_MMC_IRQ_END_CMD_RES BIT(2)
-+#define JZ_MMC_IRQ_PRG_DONE BIT(1)
-+#define JZ_MMC_IRQ_DATA_TRAN_DONE BIT(0)
-+
-+
-+#define JZ_MMC_CLK_RATE 24000000
-+
-+enum jz4740_mmc_state {
-+ JZ4740_MMC_STATE_READ_RESPONSE,
-+ JZ4740_MMC_STATE_TRANSFER_DATA,
-+ JZ4740_MMC_STATE_SEND_STOP,
-+ JZ4740_MMC_STATE_DONE,
-+};
-+
-+struct jz4740_mmc_host {
-+ struct mmc_host *mmc;
-+ struct platform_device *pdev;
-+ struct jz4740_mmc_platform_data *pdata;
-+ struct clk *clk;
-+
-+ int irq;
-+ int card_detect_irq;
-+
-+ struct resource *mem;
-+ void __iomem *base;
-+ struct mmc_request *req;
-+ struct mmc_command *cmd;
-+
-+ unsigned long waiting;
-+
-+ uint32_t cmdat;
-+
-+ uint16_t irq_mask;
-+
-+ spinlock_t lock;
-+
-+ struct timer_list timeout_timer;
-+ struct sg_mapping_iter miter;
-+ enum jz4740_mmc_state state;
-+};
-+
-+static void jz4740_mmc_set_irq_enabled(struct jz4740_mmc_host *host,
-+ unsigned int irq, bool enabled)
-+{
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&host->lock, flags);
-+ if (enabled)
-+ host->irq_mask &= ~irq;
-+ else
-+ host->irq_mask |= irq;
-+ spin_unlock_irqrestore(&host->lock, flags);
-+
-+ writew(host->irq_mask, host->base + JZ_REG_MMC_IMASK);
-+}
-+
-+static void jz4740_mmc_clock_enable(struct jz4740_mmc_host *host,
-+ bool start_transfer)
-+{
-+ uint16_t val = JZ_MMC_STRPCL_CLOCK_START;
-+
-+ if (start_transfer)
-+ val |= JZ_MMC_STRPCL_START_OP;
-+
-+ writew(val, host->base + JZ_REG_MMC_STRPCL);
-+}
-+
-+static void jz4740_mmc_clock_disable(struct jz4740_mmc_host *host)
-+{
-+ uint32_t status;
-+ unsigned int timeout = 1000;
-+
-+ writew(JZ_MMC_STRPCL_CLOCK_STOP, host->base + JZ_REG_MMC_STRPCL);
-+ do {
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+ } while (status & JZ_MMC_STATUS_CLK_EN && --timeout);
-+}
-+
-+static void jz4740_mmc_reset(struct jz4740_mmc_host *host)
-+{
-+ uint32_t status;
-+ unsigned int timeout = 1000;
-+
-+ writew(JZ_MMC_STRPCL_RESET, host->base + JZ_REG_MMC_STRPCL);
-+ udelay(10);
-+ do {
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+ } while (status & JZ_MMC_STATUS_IS_RESETTING && --timeout);
-+}
-+
-+static void jz4740_mmc_request_done(struct jz4740_mmc_host *host)
-+{
-+ struct mmc_request *req;
-+
-+ req = host->req;
-+ host->req = NULL;
-+
-+ mmc_request_done(host->mmc, req);
-+}
-+
-+static unsigned int jz4740_mmc_poll_irq(struct jz4740_mmc_host *host,
-+ unsigned int irq)
-+{
-+ unsigned int timeout = 0x800;
-+ uint16_t status;
-+
-+ do {
-+ status = readw(host->base + JZ_REG_MMC_IREG);
-+ } while (!(status & irq) && --timeout);
-+
-+ if (timeout == 0) {
-+ set_bit(0, &host->waiting);
-+ mod_timer(&host->timeout_timer, jiffies + 5*HZ);
-+ jz4740_mmc_set_irq_enabled(host, irq, true);
-+ return true;
-+ }
-+
-+ return false;
-+}
-+
-+static void jz4740_mmc_transfer_check_state(struct jz4740_mmc_host *host,
-+ struct mmc_data *data)
-+{
-+ int status;
-+
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+ if (status & JZ_MMC_STATUS_WRITE_ERROR_MASK) {
-+ if (status & (JZ_MMC_STATUS_TIMEOUT_WRITE)) {
-+ host->req->cmd->error = -ETIMEDOUT;
-+ data->error = -ETIMEDOUT;
-+ } else {
-+ host->req->cmd->error = -EIO;
-+ data->error = -EIO;
-+ }
-+ }
-+}
-+
-+static bool jz4740_mmc_write_data(struct jz4740_mmc_host *host,
-+ struct mmc_data *data)
-+{
-+ struct sg_mapping_iter *miter = &host->miter;
-+ void __iomem *fifo_addr = host->base + JZ_REG_MMC_TXFIFO;
-+ uint32_t *buf;
-+ bool timeout;
-+ size_t i, j;
-+
-+ while (sg_miter_next(miter)) {
-+ buf = miter->addr;
-+ i = miter->length / 4;
-+ j = i / 8;
-+ i = i & 0x7;
-+ while (j) {
-+ timeout = jz4740_mmc_poll_irq(host, JZ_MMC_IRQ_TXFIFO_WR_REQ);
-+ if (unlikely(timeout))
-+ goto poll_timeout;
-+
-+ writel(buf[0], fifo_addr);
-+ writel(buf[1], fifo_addr);
-+ writel(buf[2], fifo_addr);
-+ writel(buf[3], fifo_addr);
-+ writel(buf[4], fifo_addr);
-+ writel(buf[5], fifo_addr);
-+ writel(buf[6], fifo_addr);
-+ writel(buf[7], fifo_addr);
-+ buf += 8;
-+ --j;
-+ }
-+ if (unlikely(i)) {
-+ timeout = jz4740_mmc_poll_irq(host, JZ_MMC_IRQ_TXFIFO_WR_REQ);
-+ if (unlikely(timeout))
-+ goto poll_timeout;
-+
-+ while (i) {
-+ writel(*buf, fifo_addr);
-+ ++buf;
-+ --i;
-+ }
-+ }
-+ data->bytes_xfered += miter->length;
-+ }
-+ sg_miter_stop(miter);
-+
-+ return false;
-+
-+poll_timeout:
-+ miter->consumed = (void *)buf - miter->addr;
-+ data->bytes_xfered += miter->consumed;
-+ sg_miter_stop(miter);
-+
-+ return true;
-+}
-+
-+static bool jz4740_mmc_read_data(struct jz4740_mmc_host *host,
-+ struct mmc_data *data)
-+{
-+ struct sg_mapping_iter *miter = &host->miter;
-+ void __iomem *fifo_addr = host->base + JZ_REG_MMC_RXFIFO;
-+ uint32_t *buf;
-+ uint32_t d;
-+ uint16_t status;
-+ size_t i, j;
-+ unsigned int timeout;
-+
-+ while (sg_miter_next(miter)) {
-+ buf = miter->addr;
-+ i = miter->length;
-+ j = i / 32;
-+ i = i & 0x1f;
-+ while (j) {
-+ timeout = jz4740_mmc_poll_irq(host, JZ_MMC_IRQ_RXFIFO_RD_REQ);
-+ if (unlikely(timeout))
-+ goto poll_timeout;
-+
-+ buf[0] = readl(fifo_addr);
-+ buf[1] = readl(fifo_addr);
-+ buf[2] = readl(fifo_addr);
-+ buf[3] = readl(fifo_addr);
-+ buf[4] = readl(fifo_addr);
-+ buf[5] = readl(fifo_addr);
-+ buf[6] = readl(fifo_addr);
-+ buf[7] = readl(fifo_addr);
-+
-+ buf += 8;
-+ --j;
-+ }
-+
-+ if (unlikely(i)) {
-+ timeout = jz4740_mmc_poll_irq(host, JZ_MMC_IRQ_RXFIFO_RD_REQ);
-+ if (unlikely(timeout))
-+ goto poll_timeout;
-+
-+ while (i >= 4) {
-+ *buf++ = readl(fifo_addr);
-+ i -= 4;
-+ }
-+ if (unlikely(i > 0)) {
-+ d = readl(fifo_addr);
-+ memcpy(buf, &d, i);
-+ }
-+ }
-+ data->bytes_xfered += miter->length;
-+
-+ /* This can go away once MIPS implements
-+ * flush_kernel_dcache_page */
-+ flush_dcache_page(miter->page);
-+ }
-+ sg_miter_stop(miter);
-+
-+ /* For whatever reason there is sometime one word more in the fifo then
-+ * requested */
-+ timeout = 1000;
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+ while (!(status & JZ_MMC_STATUS_DATA_FIFO_EMPTY) && --timeout) {
-+ d = readl(fifo_addr);
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+ }
-+
-+ return false;
-+
-+poll_timeout:
-+ miter->consumed = (void *)buf - miter->addr;
-+ data->bytes_xfered += miter->consumed;
-+ sg_miter_stop(miter);
-+
-+ return true;
-+}
-+
-+static void jz4740_mmc_timeout(unsigned long data)
-+{
-+ struct jz4740_mmc_host *host = (struct jz4740_mmc_host *)data;
-+
-+ if (!test_and_clear_bit(0, &host->waiting))
-+ return;
-+
-+ jz4740_mmc_set_irq_enabled(host, JZ_MMC_IRQ_END_CMD_RES, false);
-+
-+ host->req->cmd->error = -ETIMEDOUT;
-+ jz4740_mmc_request_done(host);
-+}
-+
-+static void jz4740_mmc_read_response(struct jz4740_mmc_host *host,
-+ struct mmc_command *cmd)
-+{
-+ int i;
-+ uint16_t tmp;
-+ void __iomem *fifo_addr = host->base + JZ_REG_MMC_RESP_FIFO;
-+
-+ if (cmd->flags & MMC_RSP_136) {
-+ tmp = readw(fifo_addr);
-+ for (i = 0; i < 4; ++i) {
-+ cmd->resp[i] = tmp << 24;
-+ tmp = readw(fifo_addr);
-+ cmd->resp[i] |= tmp << 8;
-+ tmp = readw(fifo_addr);
-+ cmd->resp[i] |= tmp >> 8;
-+ }
-+ } else {
-+ cmd->resp[0] = readw(fifo_addr) << 24;
-+ cmd->resp[0] |= readw(fifo_addr) << 8;
-+ cmd->resp[0] |= readw(fifo_addr) & 0xff;
-+ }
-+}
-+
-+static void jz4740_mmc_send_command(struct jz4740_mmc_host *host,
-+ struct mmc_command *cmd)
-+{
-+ uint32_t cmdat = host->cmdat;
-+
-+ host->cmdat &= ~JZ_MMC_CMDAT_INIT;
-+ jz4740_mmc_clock_disable(host);
-+
-+ host->cmd = cmd;
-+
-+ if (cmd->flags & MMC_RSP_BUSY)
-+ cmdat |= JZ_MMC_CMDAT_BUSY;
-+
-+ switch (mmc_resp_type(cmd)) {
-+ case MMC_RSP_R1B:
-+ case MMC_RSP_R1:
-+ cmdat |= JZ_MMC_CMDAT_RSP_R1;
-+ break;
-+ case MMC_RSP_R2:
-+ cmdat |= JZ_MMC_CMDAT_RSP_R2;
-+ break;
-+ case MMC_RSP_R3:
-+ cmdat |= JZ_MMC_CMDAT_RSP_R3;
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ if (cmd->data) {
-+ cmdat |= JZ_MMC_CMDAT_DATA_EN;
-+ if (cmd->data->flags & MMC_DATA_WRITE)
-+ cmdat |= JZ_MMC_CMDAT_WRITE;
-+ if (cmd->data->flags & MMC_DATA_STREAM)
-+ cmdat |= JZ_MMC_CMDAT_STREAM;
-+
-+ writew(cmd->data->blksz, host->base + JZ_REG_MMC_BLKLEN);
-+ writew(cmd->data->blocks, host->base + JZ_REG_MMC_NOB);
-+ }
-+
-+ writeb(cmd->opcode, host->base + JZ_REG_MMC_CMD);
-+ writel(cmd->arg, host->base + JZ_REG_MMC_ARG);
-+ writel(cmdat, host->base + JZ_REG_MMC_CMDAT);
-+
-+ jz4740_mmc_clock_enable(host, 1);
-+}
-+
-+static void jz_mmc_prepare_data_transfer(struct jz4740_mmc_host *host)
-+{
-+ struct mmc_command *cmd = host->req->cmd;
-+ struct mmc_data *data = cmd->data;
-+ int direction;
-+
-+ if (data->flags & MMC_DATA_READ)
-+ direction = SG_MITER_TO_SG;
-+ else
-+ direction = SG_MITER_FROM_SG;
-+
-+ sg_miter_start(&host->miter, data->sg, data->sg_len, direction);
-+}
-+
-+
-+static irqreturn_t jz_mmc_irq_worker(int irq, void *devid)
-+{
-+ struct jz4740_mmc_host *host = (struct jz4740_mmc_host *)devid;
-+ struct mmc_command *cmd = host->req->cmd;
-+ struct mmc_request *req = host->req;
-+ bool timeout = false;
-+
-+ if (cmd->error)
-+ host->state = JZ4740_MMC_STATE_DONE;
-+
-+ switch (host->state) {
-+ case JZ4740_MMC_STATE_READ_RESPONSE:
-+ if (cmd->flags & MMC_RSP_PRESENT)
-+ jz4740_mmc_read_response(host, cmd);
-+
-+ if (!cmd->data)
-+ break;
-+
-+ jz_mmc_prepare_data_transfer(host);
-+
-+ case JZ4740_MMC_STATE_TRANSFER_DATA:
-+ if (cmd->data->flags & MMC_DATA_READ)
-+ timeout = jz4740_mmc_read_data(host, cmd->data);
-+ else
-+ timeout = jz4740_mmc_write_data(host, cmd->data);
-+
-+ if (unlikely(timeout)) {
-+ host->state = JZ4740_MMC_STATE_TRANSFER_DATA;
-+ break;
-+ }
-+
-+ jz4740_mmc_transfer_check_state(host, cmd->data);
-+
-+ timeout = jz4740_mmc_poll_irq(host, JZ_MMC_IRQ_DATA_TRAN_DONE);
-+ if (unlikely(timeout)) {
-+ host->state = JZ4740_MMC_STATE_SEND_STOP;
-+ break;
-+ }
-+ writew(JZ_MMC_IRQ_DATA_TRAN_DONE, host->base + JZ_REG_MMC_IREG);
-+
-+ case JZ4740_MMC_STATE_SEND_STOP:
-+ if (!req->stop)
-+ break;
-+
-+ jz4740_mmc_send_command(host, req->stop);
-+
-+ timeout = jz4740_mmc_poll_irq(host, JZ_MMC_IRQ_PRG_DONE);
-+ if (timeout) {
-+ host->state = JZ4740_MMC_STATE_DONE;
-+ break;
-+ }
-+ case JZ4740_MMC_STATE_DONE:
-+ break;
-+ }
-+
-+ if (!timeout)
-+ jz4740_mmc_request_done(host);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static irqreturn_t jz_mmc_irq(int irq, void *devid)
-+{
-+ struct jz4740_mmc_host *host = devid;
-+ struct mmc_command *cmd = host->cmd;
-+ uint16_t irq_reg, status, tmp;
-+
-+ irq_reg = readw(host->base + JZ_REG_MMC_IREG);
-+
-+ tmp = irq_reg;
-+ irq_reg &= ~host->irq_mask;
-+
-+ tmp &= ~(JZ_MMC_IRQ_TXFIFO_WR_REQ | JZ_MMC_IRQ_RXFIFO_RD_REQ |
-+ JZ_MMC_IRQ_PRG_DONE | JZ_MMC_IRQ_DATA_TRAN_DONE);
-+
-+ if (tmp != irq_reg)
-+ writew(tmp & ~irq_reg, host->base + JZ_REG_MMC_IREG);
-+
-+ if (irq_reg & JZ_MMC_IRQ_SDIO) {
-+ writew(JZ_MMC_IRQ_SDIO, host->base + JZ_REG_MMC_IREG);
-+ mmc_signal_sdio_irq(host->mmc);
-+ irq_reg &= ~JZ_MMC_IRQ_SDIO;
-+ }
-+
-+ if (host->req && cmd && irq_reg) {
-+ if (test_and_clear_bit(0, &host->waiting)) {
-+ del_timer(&host->timeout_timer);
-+
-+ status = readl(host->base + JZ_REG_MMC_STATUS);
-+
-+ if (status & JZ_MMC_STATUS_TIMEOUT_RES) {
-+ cmd->error = -ETIMEDOUT;
-+ } else if (status & JZ_MMC_STATUS_CRC_RES_ERR) {
-+ cmd->error = -EIO;
-+ } else if (status & (JZ_MMC_STATUS_CRC_READ_ERROR |
-+ JZ_MMC_STATUS_CRC_WRITE_ERROR)) {
-+ if (cmd->data)
-+ cmd->data->error = -EIO;
-+ cmd->error = -EIO;
-+ } else if (status & (JZ_MMC_STATUS_CRC_READ_ERROR |
-+ JZ_MMC_STATUS_CRC_WRITE_ERROR)) {
-+ if (cmd->data)
-+ cmd->data->error = -EIO;
-+ cmd->error = -EIO;
-+ }
-+
-+ jz4740_mmc_set_irq_enabled(host, irq_reg, false);
-+ writew(irq_reg, host->base + JZ_REG_MMC_IREG);
-+
-+ return IRQ_WAKE_THREAD;
-+ }
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int jz4740_mmc_set_clock_rate(struct jz4740_mmc_host *host, int rate)
-+{
-+ int div = 0;
-+ int real_rate;
-+
-+ jz4740_mmc_clock_disable(host);
-+ clk_set_rate(host->clk, JZ_MMC_CLK_RATE);
-+
-+ real_rate = clk_get_rate(host->clk);
-+
-+ while (real_rate > rate && div < 7) {
-+ ++div;
-+ real_rate >>= 1;
-+ }
-+
-+ writew(div, host->base + JZ_REG_MMC_CLKRT);
-+ return real_rate;
-+}
-+
-+static void jz4740_mmc_request(struct mmc_host *mmc, struct mmc_request *req)
-+{
-+ struct jz4740_mmc_host *host = mmc_priv(mmc);
-+
-+ host->req = req;
-+
-+ writew(0xffff, host->base + JZ_REG_MMC_IREG);
-+
-+ writew(JZ_MMC_IRQ_END_CMD_RES, host->base + JZ_REG_MMC_IREG);
-+ jz4740_mmc_set_irq_enabled(host, JZ_MMC_IRQ_END_CMD_RES, true);
-+
-+ host->state = JZ4740_MMC_STATE_READ_RESPONSE;
-+ set_bit(0, &host->waiting);
-+ mod_timer(&host->timeout_timer, jiffies + 5*HZ);
-+ jz4740_mmc_send_command(host, req->cmd);
-+}
-+
-+static void jz4740_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
-+{
-+ struct jz4740_mmc_host *host = mmc_priv(mmc);
-+ if (ios->clock)
-+ jz4740_mmc_set_clock_rate(host, ios->clock);
-+
-+ switch (ios->power_mode) {
-+ case MMC_POWER_UP:
-+ jz4740_mmc_reset(host);
-+ if (gpio_is_valid(host->pdata->gpio_power))
-+ gpio_set_value(host->pdata->gpio_power,
-+ !host->pdata->power_active_low);
-+ host->cmdat |= JZ_MMC_CMDAT_INIT;
-+ clk_enable(host->clk);
-+ break;
-+ case MMC_POWER_ON:
-+ break;
-+ default:
-+ if (gpio_is_valid(host->pdata->gpio_power))
-+ gpio_set_value(host->pdata->gpio_power,
-+ host->pdata->power_active_low);
-+ clk_disable(host->clk);
-+ break;
-+ }
-+
-+ switch (ios->bus_width) {
-+ case MMC_BUS_WIDTH_1:
-+ host->cmdat &= ~JZ_MMC_CMDAT_BUS_WIDTH_4BIT;
-+ break;
-+ case MMC_BUS_WIDTH_4:
-+ host->cmdat |= JZ_MMC_CMDAT_BUS_WIDTH_4BIT;
-+ break;
-+ default:
-+ break;
-+ }
-+}
-+
-+static int jz4740_mmc_get_ro(struct mmc_host *mmc)
-+{
-+ struct jz4740_mmc_host *host = mmc_priv(mmc);
-+ if (!gpio_is_valid(host->pdata->gpio_read_only))
-+ return -ENOSYS;
-+
-+ return gpio_get_value(host->pdata->gpio_read_only) ^
-+ host->pdata->read_only_active_low;
-+}
-+
-+static int jz4740_mmc_get_cd(struct mmc_host *mmc)
-+{
-+ struct jz4740_mmc_host *host = mmc_priv(mmc);
-+ if (!gpio_is_valid(host->pdata->gpio_card_detect))
-+ return -ENOSYS;
-+
-+ return gpio_get_value(host->pdata->gpio_card_detect) ^
-+ host->pdata->card_detect_active_low;
-+}
-+
-+static irqreturn_t jz4740_mmc_card_detect_irq(int irq, void *devid)
-+{
-+ struct jz4740_mmc_host *host = devid;
-+
-+ mmc_detect_change(host->mmc, HZ / 2);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void jz4740_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable)
-+{
-+ struct jz4740_mmc_host *host = mmc_priv(mmc);
-+ jz4740_mmc_set_irq_enabled(host, JZ_MMC_IRQ_SDIO, enable);
-+}
-+
-+static const struct mmc_host_ops jz4740_mmc_ops = {
-+ .request = jz4740_mmc_request,
-+ .set_ios = jz4740_mmc_set_ios,
-+ .get_ro = jz4740_mmc_get_ro,
-+ .get_cd = jz4740_mmc_get_cd,
-+ .enable_sdio_irq = jz4740_mmc_enable_sdio_irq,
-+};
-+
-+static const struct jz_gpio_bulk_request jz4740_mmc_pins[] = {
-+ JZ_GPIO_BULK_PIN(MSC_CMD),
-+ JZ_GPIO_BULK_PIN(MSC_CLK),
-+ JZ_GPIO_BULK_PIN(MSC_DATA0),
-+ JZ_GPIO_BULK_PIN(MSC_DATA1),
-+ JZ_GPIO_BULK_PIN(MSC_DATA2),
-+ JZ_GPIO_BULK_PIN(MSC_DATA3),
-+};
-+
-+static int __devinit jz4740_mmc_request_gpio(struct device *dev, int gpio,
-+ const char *name, bool output, int value)
-+{
-+ int ret;
-+
-+ if (!gpio_is_valid(gpio))
-+ return 0;
-+
-+ ret = gpio_request(gpio, name);
-+ if (ret) {
-+ dev_err(dev, "Failed to request %s gpio: %d\n", name, ret);
-+ return ret;
-+ }
-+
-+ if (output)
-+ gpio_direction_output(gpio, value);
-+ else
-+ gpio_direction_input(gpio);
-+
-+ return 0;
-+}
-+
-+static int __devinit jz4740_mmc_request_gpios(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jz4740_mmc_platform_data *pdata = pdev->dev.platform_data;
-+
-+ if (!pdata)
-+ return 0;
-+
-+ ret = jz4740_mmc_request_gpio(&pdev->dev, pdata->gpio_card_detect,
-+ "MMC detect change", false, 0);
-+ if (ret)
-+ goto err;
-+
-+ ret = jz4740_mmc_request_gpio(&pdev->dev, pdata->gpio_read_only,
-+ "MMC read only", false, 0);
-+ if (ret)
-+ goto err_free_gpio_card_detect;
-+
-+ ret = jz4740_mmc_request_gpio(&pdev->dev, pdata->gpio_power,
-+ "MMC read only", true, pdata->power_active_low);
-+ if (ret)
-+ goto err_free_gpio_read_only;
-+
-+ return 0;
-+
-+err_free_gpio_read_only:
-+ if (gpio_is_valid(pdata->gpio_read_only))
-+ gpio_free(pdata->gpio_read_only);
-+err_free_gpio_card_detect:
-+ if (gpio_is_valid(pdata->gpio_card_detect))
-+ gpio_free(pdata->gpio_card_detect);
-+err:
-+ return ret;
-+}
-+
-+static int __devinit jz4740_mmc_request_cd_irq(struct platform_device *pdev,
-+ struct jz4740_mmc_host *host)
-+{
-+ struct jz4740_mmc_platform_data *pdata = pdev->dev.platform_data;
-+
-+ if (!gpio_is_valid(pdata->gpio_card_detect))
-+ return 0;
-+
-+ host->card_detect_irq = gpio_to_irq(pdata->gpio_card_detect);
-+ if (host->card_detect_irq < 0) {
-+ dev_warn(&pdev->dev, "Failed to get card detect irq\n");
-+ return 0;
-+ }
-+
-+ return request_irq(host->card_detect_irq, jz4740_mmc_card_detect_irq,
-+ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
-+ "MMC card detect", host);
-+}
-+
-+static void jz4740_mmc_free_gpios(struct platform_device *pdev)
-+{
-+ struct jz4740_mmc_platform_data *pdata = pdev->dev.platform_data;
-+
-+ if (!pdata)
-+ return;
-+
-+ if (gpio_is_valid(pdata->gpio_power))
-+ gpio_free(pdata->gpio_power);
-+ if (gpio_is_valid(pdata->gpio_read_only))
-+ gpio_free(pdata->gpio_read_only);
-+ if (gpio_is_valid(pdata->gpio_card_detect))
-+ gpio_free(pdata->gpio_card_detect);
-+}
-+
-+static inline size_t jz4740_mmc_num_pins(struct jz4740_mmc_host *host)
-+{
-+ size_t num_pins = ARRAY_SIZE(jz4740_mmc_pins);
-+ if (host->pdata && host->pdata->data_1bit)
-+ num_pins -= 3;
-+
-+ return num_pins;
-+}
-+
-+static int __devinit jz4740_mmc_probe(struct platform_device* pdev)
-+{
-+ int ret;
-+ struct mmc_host *mmc;
-+ struct jz4740_mmc_host *host;
-+ struct jz4740_mmc_platform_data *pdata;
-+
-+ pdata = pdev->dev.platform_data;
-+
-+ mmc = mmc_alloc_host(sizeof(struct jz4740_mmc_host), &pdev->dev);
-+ if (!mmc) {
-+ dev_err(&pdev->dev, "Failed to alloc mmc host structure\n");
-+ return -ENOMEM;
-+ }
-+
-+ host = mmc_priv(mmc);
-+ host->pdata = pdata;
-+
-+ host->irq = platform_get_irq(pdev, 0);
-+ if (host->irq < 0) {
-+ ret = host->irq;
-+ dev_err(&pdev->dev, "Failed to get platform irq: %d\n", ret);
-+ goto err_free_host;
-+ }
-+
-+ host->clk = clk_get(&pdev->dev, "mmc");
-+ if (!host->clk) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get mmc clock\n");
-+ goto err_free_host;
-+ }
-+
-+ host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!host->mem) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get base platform memory\n");
-+ goto err_clk_put;
-+ }
-+
-+ host->mem = request_mem_region(host->mem->start,
-+ resource_size(host->mem), pdev->name);
-+ if (!host->mem) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to request base memory region\n");
-+ goto err_clk_put;
-+ }
-+
-+ host->base = ioremap_nocache(host->mem->start, resource_size(host->mem));
-+ if (!host->base) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to ioremap base memory\n");
-+ goto err_release_mem_region;
-+ }
-+
-+ ret = jz_gpio_bulk_request(jz4740_mmc_pins, jz4740_mmc_num_pins(host));
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request mmc pins: %d\n", ret);
-+ goto err_iounmap;
-+ }
-+
-+ ret = jz4740_mmc_request_gpios(pdev);
-+ if (ret)
-+ goto err_gpio_bulk_free;
-+
-+ mmc->ops = &jz4740_mmc_ops;
-+ mmc->f_min = JZ_MMC_CLK_RATE / 128;
-+ mmc->f_max = JZ_MMC_CLK_RATE;
-+ mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
-+ mmc->caps = (pdata && pdata->data_1bit) ? 0 : MMC_CAP_4_BIT_DATA;
-+ mmc->caps |= MMC_CAP_SDIO_IRQ;
-+
-+ mmc->max_blk_size = (1 << 10) - 1;
-+ mmc->max_blk_count = (1 << 15) - 1;
-+ mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
-+
-+ mmc->max_phys_segs = 128;
-+ mmc->max_hw_segs = 128;
-+ mmc->max_seg_size = mmc->max_req_size;
-+
-+ host->mmc = mmc;
-+ host->pdev = pdev;
-+ spin_lock_init(&host->lock);
-+ host->irq_mask = 0xffff;
-+
-+ ret = jz4740_mmc_request_cd_irq(pdev, host);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request card detect irq\n");
-+ goto err_free_gpios;
-+ }
-+
-+ ret = request_threaded_irq(host->irq, jz_mmc_irq, jz_mmc_irq_worker, 0,
-+ dev_name(&pdev->dev), host);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request irq: %d\n", ret);
-+ goto err_free_card_detect_irq;
-+ }
-+
-+ jz4740_mmc_reset(host);
-+ jz4740_mmc_clock_disable(host);
-+ setup_timer(&host->timeout_timer, jz4740_mmc_timeout,
-+ (unsigned long)host);
-+ /* It is not important when it times out, it just needs to timeout. */
-+ set_timer_slack(&host->timeout_timer, HZ);
-+
-+ platform_set_drvdata(pdev, host);
-+ ret = mmc_add_host(mmc);
-+
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to add mmc host: %d\n", ret);
-+ goto err_free_irq;
-+ }
-+ dev_info(&pdev->dev, "JZ SD/MMC card driver registered\n");
-+
-+ return 0;
-+
-+err_free_irq:
-+ free_irq(host->irq, host);
-+err_free_card_detect_irq:
-+ if (host->card_detect_irq >= 0)
-+ free_irq(host->card_detect_irq, host);
-+err_free_gpios:
-+ jz4740_mmc_free_gpios(pdev);
-+err_gpio_bulk_free:
-+ jz_gpio_bulk_free(jz4740_mmc_pins, jz4740_mmc_num_pins(host));
-+err_iounmap:
-+ iounmap(host->base);
-+err_release_mem_region:
-+ release_mem_region(host->mem->start, resource_size(host->mem));
-+err_clk_put:
-+ clk_put(host->clk);
-+err_free_host:
-+ platform_set_drvdata(pdev, NULL);
-+ mmc_free_host(mmc);
-+
-+ return ret;
-+}
-+
-+static int __devexit jz4740_mmc_remove(struct platform_device *pdev)
-+{
-+ struct jz4740_mmc_host *host = platform_get_drvdata(pdev);
-+
-+ del_timer_sync(&host->timeout_timer);
-+ jz4740_mmc_set_irq_enabled(host, 0xff, false);
-+ jz4740_mmc_reset(host);
-+
-+ mmc_remove_host(host->mmc);
-+
-+ free_irq(host->irq, host);
-+ if (host->card_detect_irq >= 0)
-+ free_irq(host->card_detect_irq, host);
-+
-+ jz4740_mmc_free_gpios(pdev);
-+ jz_gpio_bulk_free(jz4740_mmc_pins, jz4740_mmc_num_pins(host));
-+
-+ iounmap(host->base);
-+ release_mem_region(host->mem->start, resource_size(host->mem));
-+
-+ clk_put(host->clk);
-+
-+ platform_set_drvdata(pdev, NULL);
-+ mmc_free_host(host->mmc);
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+
-+static int jz4740_mmc_suspend(struct device *dev)
-+{
-+ struct jz4740_mmc_host *host = dev_get_drvdata(dev);
-+
-+ mmc_suspend_host(host->mmc);
-+
-+ jz_gpio_bulk_suspend(jz4740_mmc_pins, jz4740_mmc_num_pins(host));
-+
-+ return 0;
-+}
-+
-+static int jz4740_mmc_resume(struct device *dev)
-+{
-+ struct jz4740_mmc_host *host = dev_get_drvdata(dev);
-+
-+ jz_gpio_bulk_resume(jz4740_mmc_pins, jz4740_mmc_num_pins(host));
-+
-+ mmc_resume_host(host->mmc);
-+
-+ return 0;
-+}
-+
-+const struct dev_pm_ops jz4740_mmc_pm_ops = {
-+ .suspend = jz4740_mmc_suspend,
-+ .resume = jz4740_mmc_resume,
-+ .poweroff = jz4740_mmc_suspend,
-+ .restore = jz4740_mmc_resume,
-+};
-+
-+#define JZ4740_MMC_PM_OPS (&jz4740_mmc_pm_ops)
-+#else
-+#define JZ4740_MMC_PM_OPS NULL
-+#endif
-+
-+static struct platform_driver jz4740_mmc_driver = {
-+ .probe = jz4740_mmc_probe,
-+ .remove = __devexit_p(jz4740_mmc_remove),
-+ .driver = {
-+ .name = "jz4740-mmc",
-+ .owner = THIS_MODULE,
-+ .pm = JZ4740_MMC_PM_OPS,
-+ },
-+};
-+
-+static int __init jz4740_mmc_init(void)
-+{
-+ return platform_driver_register(&jz4740_mmc_driver);
-+}
-+module_init(jz4740_mmc_init);
-+
-+static void __exit jz4740_mmc_exit(void)
-+{
-+ platform_driver_unregister(&jz4740_mmc_driver);
-+}
-+module_exit(jz4740_mmc_exit);
-+
-+MODULE_DESCRIPTION("JZ4740 SD/MMC controller driver");
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
diff --git a/target/linux/xburst/patches-2.6.35/055-ohci.patch b/target/linux/xburst/patches-2.6.35/055-ohci.patch
deleted file mode 100644
index f41f1d9119..0000000000
--- a/target/linux/xburst/patches-2.6.35/055-ohci.patch
+++ /dev/null
@@ -1,326 +0,0 @@
-From 4365ef4ae6c7c08950ac34c47f7beaece2dc48ea Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sun, 1 Aug 2010 21:13:26 +0200
-Subject: [PATCH] USB: Add JZ4740 OHCI support
-
-Add OHCI glue code for JZ4740 SoCs OHCI module.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: David Brownell <dbrownell@users.sourceforge.net>
-Cc: linux-usb@vger.kernel.org
-Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1411/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- drivers/usb/Kconfig | 1 +
- drivers/usb/host/ohci-hcd.c | 5 +
- drivers/usb/host/ohci-jz4740.c | 276 ++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 282 insertions(+), 0 deletions(-)
- create mode 100644 drivers/usb/host/ohci-jz4740.c
-
---- a/drivers/usb/Kconfig
-+++ b/drivers/usb/Kconfig
-@@ -46,6 +46,7 @@ config USB_ARCH_HAS_OHCI
- default y if PPC_MPC52xx
- # MIPS:
- default y if SOC_AU1X00
-+ default y if MACH_JZ4740
- # SH:
- default y if CPU_SUBTYPE_SH7720
- default y if CPU_SUBTYPE_SH7721
---- a/drivers/usb/host/ohci-hcd.c
-+++ b/drivers/usb/host/ohci-hcd.c
-@@ -1095,6 +1095,11 @@ MODULE_LICENSE ("GPL");
- #define TMIO_OHCI_DRIVER ohci_hcd_tmio_driver
- #endif
-
-+#ifdef CONFIG_MACH_JZ4740
-+#include "ohci-jz4740.c"
-+#define PLATFORM_DRIVER ohci_hcd_jz4740_driver
-+#endif
-+
- #if !defined(PCI_DRIVER) && \
- !defined(PLATFORM_DRIVER) && \
- !defined(OMAP1_PLATFORM_DRIVER) && \
---- /dev/null
-+++ b/drivers/usb/host/ohci-jz4740.c
-@@ -0,0 +1,276 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/platform_device.h>
-+#include <linux/clk.h>
-+#include <linux/regulator/consumer.h>
-+
-+struct jz4740_ohci_hcd {
-+ struct ohci_hcd ohci_hcd;
-+
-+ struct regulator *vbus;
-+ bool vbus_enabled;
-+ struct clk *clk;
-+};
-+
-+static inline struct jz4740_ohci_hcd *hcd_to_jz4740_hcd(struct usb_hcd *hcd)
-+{
-+ return (struct jz4740_ohci_hcd *)(hcd->hcd_priv);
-+}
-+
-+static inline struct usb_hcd *jz4740_hcd_to_hcd(struct jz4740_ohci_hcd *jz4740_ohci)
-+{
-+ return container_of((void *)jz4740_ohci, struct usb_hcd, hcd_priv);
-+}
-+
-+static int ohci_jz4740_start(struct usb_hcd *hcd)
-+{
-+ struct ohci_hcd *ohci = hcd_to_ohci(hcd);
-+ int ret;
-+
-+ ret = ohci_init(ohci);
-+ if (ret < 0)
-+ return ret;
-+
-+ ohci->num_ports = 1;
-+
-+ ret = ohci_run(ohci);
-+ if (ret < 0) {
-+ dev_err(hcd->self.controller, "Can not start %s",
-+ hcd->self.bus_name);
-+ ohci_stop(hcd);
-+ return ret;
-+ }
-+ return 0;
-+}
-+
-+static int ohci_jz4740_set_vbus_power(struct jz4740_ohci_hcd *jz4740_ohci,
-+ bool enabled)
-+{
-+ int ret = 0;
-+
-+ if (!jz4740_ohci->vbus)
-+ return 0;
-+
-+ if (enabled && !jz4740_ohci->vbus_enabled) {
-+ ret = regulator_enable(jz4740_ohci->vbus);
-+ if (ret)
-+ dev_err(jz4740_hcd_to_hcd(jz4740_ohci)->self.controller,
-+ "Could not power vbus\n");
-+ } else if (!enabled && jz4740_ohci->vbus_enabled) {
-+ ret = regulator_disable(jz4740_ohci->vbus);
-+ }
-+
-+ if (ret == 0)
-+ jz4740_ohci->vbus_enabled = enabled;
-+
-+ return ret;
-+}
-+
-+static int ohci_jz4740_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
-+ u16 wIndex, char *buf, u16 wLength)
-+{
-+ struct jz4740_ohci_hcd *jz4740_ohci = hcd_to_jz4740_hcd(hcd);
-+ int ret;
-+
-+ switch (typeReq) {
-+ case SetHubFeature:
-+ if (wValue == USB_PORT_FEAT_POWER)
-+ ret = ohci_jz4740_set_vbus_power(jz4740_ohci, true);
-+ break;
-+ case ClearHubFeature:
-+ if (wValue == USB_PORT_FEAT_POWER)
-+ ret = ohci_jz4740_set_vbus_power(jz4740_ohci, false);
-+ break;
-+ }
-+
-+ if (ret)
-+ return ret;
-+
-+ return ohci_hub_control(hcd, typeReq, wValue, wIndex, buf, wLength);
-+}
-+
-+
-+static const struct hc_driver ohci_jz4740_hc_driver = {
-+ .description = hcd_name,
-+ .product_desc = "JZ4740 OHCI",
-+ .hcd_priv_size = sizeof(struct jz4740_ohci_hcd),
-+
-+ /*
-+ * generic hardware linkage
-+ */
-+ .irq = ohci_irq,
-+ .flags = HCD_USB11 | HCD_MEMORY,
-+
-+ /*
-+ * basic lifecycle operations
-+ */
-+ .start = ohci_jz4740_start,
-+ .stop = ohci_stop,
-+ .shutdown = ohci_shutdown,
-+
-+ /*
-+ * managing i/o requests and associated device resources
-+ */
-+ .urb_enqueue = ohci_urb_enqueue,
-+ .urb_dequeue = ohci_urb_dequeue,
-+ .endpoint_disable = ohci_endpoint_disable,
-+
-+ /*
-+ * scheduling support
-+ */
-+ .get_frame_number = ohci_get_frame,
-+
-+ /*
-+ * root hub support
-+ */
-+ .hub_status_data = ohci_hub_status_data,
-+ .hub_control = ohci_jz4740_hub_control,
-+#ifdef CONFIG_PM
-+ .bus_suspend = ohci_bus_suspend,
-+ .bus_resume = ohci_bus_resume,
-+#endif
-+ .start_port_reset = ohci_start_port_reset,
-+};
-+
-+
-+static __devinit int jz4740_ohci_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct usb_hcd *hcd;
-+ struct jz4740_ohci_hcd *jz4740_ohci;
-+ struct resource *res;
-+ int irq;
-+
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+
-+ if (!res) {
-+ dev_err(&pdev->dev, "Failed to get platform resource\n");
-+ return -ENOENT;
-+ }
-+
-+ irq = platform_get_irq(pdev, 0);
-+ if (irq < 0) {
-+ dev_err(&pdev->dev, "Failed to get platform irq\n");
-+ return irq;
-+ }
-+
-+ hcd = usb_create_hcd(&ohci_jz4740_hc_driver, &pdev->dev, "jz4740");
-+ if (!hcd) {
-+ dev_err(&pdev->dev, "Failed to create hcd.\n");
-+ return -ENOMEM;
-+ }
-+
-+ jz4740_ohci = hcd_to_jz4740_hcd(hcd);
-+
-+ res = request_mem_region(res->start, resource_size(res), hcd_name);
-+ if (!res) {
-+ dev_err(&pdev->dev, "Failed to request mem region.\n");
-+ ret = -EBUSY;
-+ goto err_free;
-+ }
-+
-+ hcd->rsrc_start = res->start;
-+ hcd->rsrc_len = resource_size(res);
-+ hcd->regs = ioremap(res->start, resource_size(res));
-+
-+ if (!hcd->regs) {
-+ dev_err(&pdev->dev, "Failed to ioremap registers.\n");
-+ ret = -EBUSY;
-+ goto err_release_mem;
-+ }
-+
-+ jz4740_ohci->clk = clk_get(&pdev->dev, "uhc");
-+ if (IS_ERR(jz4740_ohci->clk)) {
-+ ret = PTR_ERR(jz4740_ohci->clk);
-+ dev_err(&pdev->dev, "Failed to get clock: %d\n", ret);
-+ goto err_iounmap;
-+ }
-+
-+ jz4740_ohci->vbus = regulator_get(&pdev->dev, "vbus");
-+ if (IS_ERR(jz4740_ohci->vbus))
-+ jz4740_ohci->vbus = NULL;
-+
-+
-+ clk_set_rate(jz4740_ohci->clk, 48000000);
-+ clk_enable(jz4740_ohci->clk);
-+ if (jz4740_ohci->vbus)
-+ ohci_jz4740_set_vbus_power(jz4740_ohci, true);
-+
-+ platform_set_drvdata(pdev, hcd);
-+
-+ ohci_hcd_init(hcd_to_ohci(hcd));
-+
-+ ret = usb_add_hcd(hcd, irq, 0);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to add hcd: %d\n", ret);
-+ goto err_disable;
-+ }
-+
-+ return 0;
-+
-+err_disable:
-+ platform_set_drvdata(pdev, NULL);
-+ if (jz4740_ohci->vbus) {
-+ regulator_disable(jz4740_ohci->vbus);
-+ regulator_put(jz4740_ohci->vbus);
-+ }
-+ clk_disable(jz4740_ohci->clk);
-+
-+ clk_put(jz4740_ohci->clk);
-+err_iounmap:
-+ iounmap(hcd->regs);
-+err_release_mem:
-+ release_mem_region(res->start, resource_size(res));
-+err_free:
-+ usb_put_hcd(hcd);
-+
-+ return ret;
-+}
-+
-+static __devexit int jz4740_ohci_remove(struct platform_device *pdev)
-+{
-+ struct usb_hcd *hcd = platform_get_drvdata(pdev);
-+ struct jz4740_ohci_hcd *jz4740_ohci = hcd_to_jz4740_hcd(hcd);
-+
-+ usb_remove_hcd(hcd);
-+
-+ platform_set_drvdata(pdev, NULL);
-+
-+ if (jz4740_ohci->vbus) {
-+ regulator_disable(jz4740_ohci->vbus);
-+ regulator_put(jz4740_ohci->vbus);
-+ }
-+
-+ clk_disable(jz4740_ohci->clk);
-+ clk_put(jz4740_ohci->clk);
-+
-+ iounmap(hcd->regs);
-+ release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
-+
-+ usb_put_hcd(hcd);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver ohci_hcd_jz4740_driver = {
-+ .probe = jz4740_ohci_probe,
-+ .remove = __devexit_p(jz4740_ohci_remove),
-+ .driver = {
-+ .name = "jz4740-ohci",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+MODULE_ALIAS("platfrom:jz4740-ohci");
diff --git a/target/linux/xburst/patches-2.6.35/056-udc.patch b/target/linux/xburst/patches-2.6.35/056-udc.patch
deleted file mode 100644
index bf4eef85ec..0000000000
--- a/target/linux/xburst/patches-2.6.35/056-udc.patch
+++ /dev/null
@@ -1,2621 +0,0 @@
-From 05b202b9752312a1a96f82c60a731bc06419887f Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:18:46 +0200
-Subject: [PATCH] Add jz4740 udc driver
-
----
- drivers/usb/gadget/Kconfig | 14 +
- drivers/usb/gadget/Makefile | 1 +
- drivers/usb/gadget/gadget_chips.h | 9 +
- drivers/usb/gadget/jz4740_udc.c | 2437 +++++++++++++++++++++++++++++++++++++
- drivers/usb/gadget/jz4740_udc.h | 100 ++
- 5 files changed, 2561 insertions(+), 0 deletions(-)
- create mode 100644 drivers/usb/gadget/jz4740_udc.c
- create mode 100644 drivers/usb/gadget/jz4740_udc.h
-
---- a/drivers/usb/gadget/Kconfig
-+++ b/drivers/usb/gadget/Kconfig
-@@ -121,11 +121,25 @@ choice
- #
- # Integrated controllers
- #
-+config USB_GADGET_JZ4740
-+ boolean "JZ4740 UDC"
-+ depends on MACH_JZ4740
-+ select USB_GADGET_SELECTED
-+ select USB_GADGET_DUALSPEED
-+ help
-+ Select this to support the Ingenic JZ4740 processor
-+ high speed USB device controller.
-+
-+config USB_JZ4740
-+ tristate
-+ depends on USB_GADGET_JZ4740
-+ default USB_GADGET
-
- config USB_GADGET_AT91
- boolean "Atmel AT91 USB Device Port"
- depends on ARCH_AT91 && !ARCH_AT91SAM9RL && !ARCH_AT91CAP9 && !ARCH_AT91SAM9G45
- select USB_GADGET_SELECTED
-+
- help
- Many Atmel AT91 processors (such as the AT91RM2000) have a
- full speed USB Device Port with support for five configurable
---- a/drivers/usb/gadget/Makefile
-+++ b/drivers/usb/gadget/Makefile
-@@ -28,6 +28,7 @@ obj-$(CONFIG_USB_FSL_QE) += fsl_qe_udc.o
- obj-$(CONFIG_USB_CI13XXX) += ci13xxx_udc.o
- obj-$(CONFIG_USB_S3C_HSOTG) += s3c-hsotg.o
- obj-$(CONFIG_USB_LANGWELL) += langwell_udc.o
-+obj-$(CONFIG_USB_JZ4740) += jz4740_udc.o
-
- #
- # USB gadget drivers
---- a/drivers/usb/gadget/gadget_chips.h
-+++ b/drivers/usb/gadget/gadget_chips.h
-@@ -15,6 +15,12 @@
- #ifndef __GADGET_CHIPS_H
- #define __GADGET_CHIPS_H
-
-+#ifdef CONFIG_USB_GADGET_JZ4740
-+#define gadget_is_jz4740(g) !strcmp("ingenic_hsusb", (g)->name)
-+#else
-+#define gadget_is_jz4740(g) 0
-+#endif
-+
- #ifdef CONFIG_USB_GADGET_NET2280
- #define gadget_is_net2280(g) !strcmp("net2280", (g)->name)
- #else
-@@ -200,6 +206,9 @@ static inline int usb_gadget_controller_
- return 0x25;
- else if (gadget_is_s3c_hsotg(gadget))
- return 0x26;
-+ else if (gadget_is_jz4740(gadget))
-+ return 0x27;
-+
- return -ENOENT;
- }
-
---- /dev/null
-+++ b/drivers/usb/gadget/jz4740_udc.c
-@@ -0,0 +1,2437 @@
-+/*
-+ * linux/drivers/usb/gadget/jz4740_udc.c
-+ *
-+ * Ingenic JZ4740 on-chip high speed USB device controller
-+ *
-+ * Copyright (C) 2006 - 2008 Ingenic Semiconductor Inc.
-+ * Author: <jlwei@ingenic.cn>
-+ *
-+ * 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 device has ep0, two bulk-in/interrupt-in endpoints, and one bulk-out endpoint.
-+ *
-+ * - Endpoint numbering is fixed: ep0, ep1in-int, ep2in-bulk, ep1out-bulk.
-+ * - DMA works with bulk-in (channel 1) and bulk-out (channel 2) endpoints.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/delay.h>
-+#include <linux/ioport.h>
-+#include <linux/slab.h>
-+#include <linux/errno.h>
-+#include <linux/init.h>
-+#include <linux/list.h>
-+#include <linux/interrupt.h>
-+#include <linux/proc_fs.h>
-+#include <linux/usb.h>
-+#include <linux/usb/gadget.h>
-+#include <linux/clk.h>
-+
-+#include <asm/byteorder.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+#include <asm/system.h>
-+#include <asm/mach-jz4740/clock.h>
-+
-+#include "jz4740_udc.h"
-+
-+#define JZ_REG_UDC_FADDR 0x00 /* Function Address 8-bit */
-+#define JZ_REG_UDC_POWER 0x01 /* Power Management 8-bit */
-+#define JZ_REG_UDC_INTRIN 0x02 /* Interrupt IN 16-bit */
-+#define JZ_REG_UDC_INTROUT 0x04 /* Interrupt OUT 16-bit */
-+#define JZ_REG_UDC_INTRINE 0x06 /* Intr IN enable 16-bit */
-+#define JZ_REG_UDC_INTROUTE 0x08 /* Intr OUT enable 16-bit */
-+#define JZ_REG_UDC_INTRUSB 0x0a /* Interrupt USB 8-bit */
-+#define JZ_REG_UDC_INTRUSBE 0x0b /* Interrupt USB Enable 8-bit */
-+#define JZ_REG_UDC_FRAME 0x0c /* Frame number 16-bit */
-+#define JZ_REG_UDC_INDEX 0x0e /* Index register 8-bit */
-+#define JZ_REG_UDC_TESTMODE 0x0f /* USB test mode 8-bit */
-+
-+#define JZ_REG_UDC_CSR0 0x12 /* EP0 CSR 8-bit */
-+#define JZ_REG_UDC_INMAXP 0x10 /* EP1-2 IN Max Pkt Size 16-bit */
-+#define JZ_REG_UDC_INCSR 0x12 /* EP1-2 IN CSR LSB 8/16bit */
-+#define JZ_REG_UDC_INCSRH 0x13 /* EP1-2 IN CSR MSB 8-bit */
-+#define JZ_REG_UDC_OUTMAXP 0x14 /* EP1 OUT Max Pkt Size 16-bit */
-+#define JZ_REG_UDC_OUTCSR 0x16 /* EP1 OUT CSR LSB 8/16bit */
-+#define JZ_REG_UDC_OUTCSRH 0x17 /* EP1 OUT CSR MSB 8-bit */
-+#define JZ_REG_UDC_OUTCOUNT 0x18 /* bytes in EP0/1 OUT FIFO 16-bit */
-+
-+#define JZ_REG_UDC_EP_FIFO(x) (4 * (x) + 0x20)
-+
-+#define JZ_REG_UDC_EPINFO 0x78 /* Endpoint information */
-+#define JZ_REG_UDC_RAMINFO 0x79 /* RAM information */
-+
-+#define JZ_REG_UDC_INTR 0x200 /* DMA pending interrupts */
-+#define JZ_REG_UDC_CNTL1 0x204 /* DMA channel 1 control */
-+#define JZ_REG_UDC_ADDR1 0x208 /* DMA channel 1 AHB memory addr */
-+#define JZ_REG_UDC_COUNT1 0x20c /* DMA channel 1 byte count */
-+#define JZ_REG_UDC_CNTL2 0x214 /* DMA channel 2 control */
-+#define JZ_REG_UDC_ADDR2 0x218 /* DMA channel 2 AHB memory addr */
-+#define JZ_REG_UDC_COUNT2 0x21c /* DMA channel 2 byte count */
-+
-+/* Power register bit masks */
-+#define USB_POWER_SUSPENDM 0x01
-+#define USB_POWER_RESUME 0x04
-+#define USB_POWER_HSMODE 0x10
-+#define USB_POWER_HSENAB 0x20
-+#define USB_POWER_SOFTCONN 0x40
-+
-+/* Interrupt register bit masks */
-+#define USB_INTR_SUSPEND 0x01
-+#define USB_INTR_RESUME 0x02
-+#define USB_INTR_RESET 0x04
-+
-+#define USB_INTR_EP0 0x0001
-+#define USB_INTR_INEP1 0x0002
-+#define USB_INTR_INEP2 0x0004
-+#define USB_INTR_OUTEP1 0x0002
-+
-+/* CSR0 bit masks */
-+#define USB_CSR0_OUTPKTRDY 0x01
-+#define USB_CSR0_INPKTRDY 0x02
-+#define USB_CSR0_SENTSTALL 0x04
-+#define USB_CSR0_DATAEND 0x08
-+#define USB_CSR0_SETUPEND 0x10
-+#define USB_CSR0_SENDSTALL 0x20
-+#define USB_CSR0_SVDOUTPKTRDY 0x40
-+#define USB_CSR0_SVDSETUPEND 0x80
-+
-+/* Endpoint CSR register bits */
-+#define USB_INCSRH_AUTOSET 0x80
-+#define USB_INCSRH_ISO 0x40
-+#define USB_INCSRH_MODE 0x20
-+#define USB_INCSRH_DMAREQENAB 0x10
-+#define USB_INCSRH_DMAREQMODE 0x04
-+#define USB_INCSR_CDT 0x40
-+#define USB_INCSR_SENTSTALL 0x20
-+#define USB_INCSR_SENDSTALL 0x10
-+#define USB_INCSR_FF 0x08
-+#define USB_INCSR_UNDERRUN 0x04
-+#define USB_INCSR_FFNOTEMPT 0x02
-+#define USB_INCSR_INPKTRDY 0x01
-+#define USB_OUTCSRH_AUTOCLR 0x80
-+#define USB_OUTCSRH_ISO 0x40
-+#define USB_OUTCSRH_DMAREQENAB 0x20
-+#define USB_OUTCSRH_DNYT 0x10
-+#define USB_OUTCSRH_DMAREQMODE 0x08
-+#define USB_OUTCSR_CDT 0x80
-+#define USB_OUTCSR_SENTSTALL 0x40
-+#define USB_OUTCSR_SENDSTALL 0x20
-+#define USB_OUTCSR_FF 0x10
-+#define USB_OUTCSR_DATAERR 0x08
-+#define USB_OUTCSR_OVERRUN 0x04
-+#define USB_OUTCSR_FFFULL 0x02
-+#define USB_OUTCSR_OUTPKTRDY 0x01
-+
-+/* Testmode register bits */
-+#define USB_TEST_SE0NAK 0x01
-+#define USB_TEST_J 0x02
-+#define USB_TEST_K 0x04
-+#define USB_TEST_PACKET 0x08
-+
-+/* DMA control bits */
-+#define USB_CNTL_ENA 0x01
-+#define USB_CNTL_DIR_IN 0x02
-+#define USB_CNTL_MODE_1 0x04
-+#define USB_CNTL_INTR_EN 0x08
-+#define USB_CNTL_EP(n) ((n) << 4)
-+#define USB_CNTL_BURST_0 (0 << 9)
-+#define USB_CNTL_BURST_4 (1 << 9)
-+#define USB_CNTL_BURST_8 (2 << 9)
-+#define USB_CNTL_BURST_16 (3 << 9)
-+
-+
-+#ifndef DEBUG
-+# define DEBUG(fmt,args...) do {} while(0)
-+#endif
-+#ifndef DEBUG_EP0
-+# define NO_STATES
-+# define DEBUG_EP0(fmt,args...) do {} while(0)
-+#endif
-+#ifndef DEBUG_SETUP
-+# define DEBUG_SETUP(fmt,args...) do {} while(0)
-+#endif
-+
-+static unsigned int use_dma = 0; /* 1: use DMA, 0: use PIO */
-+
-+module_param(use_dma, int, 0);
-+MODULE_PARM_DESC(use_dma, "DMA mode enable flag");
-+
-+struct jz4740_udc *the_controller;
-+
-+/*
-+ * Local declarations.
-+ */
-+static void jz4740_ep0_kick(struct jz4740_udc *dev, struct jz4740_ep *ep);
-+static void jz4740_handle_ep0(struct jz4740_udc *dev, uint32_t intr);
-+
-+static void done(struct jz4740_ep *ep, struct jz4740_request *req,
-+ int status);
-+static void pio_irq_enable(struct jz4740_ep *ep);
-+static void pio_irq_disable(struct jz4740_ep *ep);
-+static void stop_activity(struct jz4740_udc *dev,
-+ struct usb_gadget_driver *driver);
-+static void nuke(struct jz4740_ep *ep, int status);
-+static void flush(struct jz4740_ep *ep);
-+static void udc_set_address(struct jz4740_udc *dev, unsigned char address);
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/* inline functions of register read/write/set/clear */
-+
-+static inline uint8_t usb_readb(struct jz4740_udc *udc, size_t reg)
-+{
-+ return readb(udc->base + reg);
-+}
-+
-+static inline uint16_t usb_readw(struct jz4740_udc *udc, size_t reg)
-+{
-+ return readw(udc->base + reg);
-+}
-+
-+static inline uint32_t usb_readl(struct jz4740_udc *udc, size_t reg)
-+{
-+ return readl(udc->base + reg);
-+}
-+
-+static inline void usb_writeb(struct jz4740_udc *udc, size_t reg, uint8_t val)
-+{
-+ writeb(val, udc->base + reg);
-+}
-+
-+static inline void usb_writew(struct jz4740_udc *udc, size_t reg, uint16_t val)
-+{
-+ writew(val, udc->base + reg);
-+}
-+
-+static inline void usb_writel(struct jz4740_udc *udc, size_t reg, uint32_t val)
-+{
-+ writel(val, udc->base + reg);
-+}
-+
-+static inline void usb_setb(struct jz4740_udc *udc, size_t reg, uint8_t mask)
-+{
-+ usb_writeb(udc, reg, usb_readb(udc, reg) | mask);
-+}
-+
-+static inline void usb_setw(struct jz4740_udc *udc, size_t reg, uint8_t mask)
-+{
-+ usb_writew(udc, reg, usb_readw(udc, reg) | mask);
-+}
-+
-+static inline void usb_setl(struct jz4740_udc *udc, size_t reg, uint32_t mask)
-+{
-+ usb_writel(udc, reg, usb_readl(udc, reg) | mask);
-+}
-+
-+static inline void usb_clearb(struct jz4740_udc *udc, size_t reg, uint8_t mask)
-+{
-+ usb_writeb(udc, reg, usb_readb(udc, reg) & ~mask);
-+}
-+
-+static inline void usb_clearw(struct jz4740_udc *udc, size_t reg, uint16_t mask)
-+{
-+ usb_writew(udc, reg, usb_readw(udc, reg) & ~mask);
-+}
-+
-+static inline void usb_clearl(struct jz4740_udc *udc, size_t reg, uint32_t mask)
-+{
-+ usb_writel(udc, reg, usb_readl(udc, reg) & ~mask);
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static inline void jz_udc_set_index(struct jz4740_udc *udc, uint8_t index)
-+{
-+ usb_writeb(udc, JZ_REG_UDC_INDEX, index);
-+}
-+
-+static inline void jz_udc_select_ep(struct jz4740_ep *ep)
-+{
-+ jz_udc_set_index(ep->dev, ep_index(ep));
-+}
-+
-+static inline int write_packet(struct jz4740_ep *ep,
-+ struct jz4740_request *req, int max)
-+{
-+ uint8_t *buf;
-+ int length, nlong, nbyte;
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ buf = req->req.buf + req->req.actual;
-+ prefetch(buf);
-+
-+ length = req->req.length - req->req.actual;
-+ length = min(length, max);
-+ req->req.actual += length;
-+
-+ DEBUG("Write %d (max %d), fifo %x\n", length, max, ep->fifo);
-+
-+ nlong = length >> 2;
-+ nbyte = length & 0x3;
-+ while (nlong--) {
-+ usb_writel(ep->dev, ep->fifo, *((uint32_t *)buf));
-+ buf += 4;
-+ }
-+ while (nbyte--) {
-+ usb_writeb(ep->dev, ep->fifo, *buf++);
-+ }
-+
-+ return length;
-+}
-+
-+static inline int read_packet(struct jz4740_ep *ep,
-+ struct jz4740_request *req, int count)
-+{
-+ uint8_t *buf;
-+ int length, nlong, nbyte;
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ buf = req->req.buf + req->req.actual;
-+ prefetchw(buf);
-+
-+ length = req->req.length - req->req.actual;
-+ length = min(length, count);
-+ req->req.actual += length;
-+
-+ DEBUG("Read %d, fifo %x\n", length, ep->fifo);
-+
-+ nlong = length >> 2;
-+ nbyte = length & 0x3;
-+ while (nlong--) {
-+ *((uint32_t *)buf) = usb_readl(ep->dev, ep->fifo);
-+ buf += 4;
-+ }
-+ while (nbyte--) {
-+ *buf++ = usb_readb(ep->dev, ep->fifo);
-+ }
-+
-+ return length;
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/*
-+ * udc_disable - disable USB device controller
-+ */
-+static void udc_disable(struct jz4740_udc *dev)
-+{
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ udc_set_address(dev, 0);
-+
-+ /* Disable interrupts */
-+ usb_writew(dev, JZ_REG_UDC_INTRINE, 0);
-+ usb_writew(dev, JZ_REG_UDC_INTROUTE, 0);
-+ usb_writeb(dev, JZ_REG_UDC_INTRUSBE, 0);
-+
-+ /* Disable DMA */
-+ usb_writel(dev, JZ_REG_UDC_CNTL1, 0);
-+ usb_writel(dev, JZ_REG_UDC_CNTL2, 0);
-+
-+ /* Disconnect from usb */
-+ usb_clearb(dev, JZ_REG_UDC_POWER, USB_POWER_SOFTCONN);
-+
-+ /* Disable the USB PHY */
-+ clk_disable(dev->clk);
-+
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ dev->gadget.speed = USB_SPEED_UNKNOWN;
-+
-+ return;
-+}
-+
-+/*
-+ * udc_reinit - initialize software state
-+ */
-+static void udc_reinit(struct jz4740_udc *dev)
-+{
-+ int i;
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ /* device/ep0 records init */
-+ INIT_LIST_HEAD(&dev->gadget.ep_list);
-+ INIT_LIST_HEAD(&dev->gadget.ep0->ep_list);
-+ dev->ep0state = WAIT_FOR_SETUP;
-+
-+ for (i = 0; i < UDC_MAX_ENDPOINTS; i++) {
-+ struct jz4740_ep *ep = &dev->ep[i];
-+
-+ if (i != 0)
-+ list_add_tail(&ep->ep.ep_list, &dev->gadget.ep_list);
-+
-+ INIT_LIST_HEAD(&ep->queue);
-+ ep->desc = 0;
-+ ep->stopped = 0;
-+ ep->pio_irqs = 0;
-+ }
-+}
-+
-+/* until it's enabled, this UDC should be completely invisible
-+ * to any USB host.
-+ */
-+static void udc_enable(struct jz4740_udc *dev)
-+{
-+ int i;
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ /* UDC state is incorrect - Added by River */
-+ if (dev->state != UDC_STATE_ENABLE) {
-+ return;
-+ }
-+
-+ dev->gadget.speed = USB_SPEED_UNKNOWN;
-+
-+ /* Flush FIFO for each */
-+ for (i = 0; i < UDC_MAX_ENDPOINTS; i++) {
-+ struct jz4740_ep *ep = &dev->ep[i];
-+
-+ jz_udc_set_index(dev, ep_index(ep));
-+ flush(ep);
-+ }
-+
-+ /* Set this bit to allow the UDC entering low-power mode when
-+ * there are no actions on the USB bus.
-+ * UDC still works during this bit was set.
-+ */
-+ jz4740_clock_udc_enable_auto_suspend();
-+
-+ /* Enable the USB PHY */
-+ clk_enable(dev->clk);
-+
-+ /* Disable interrupts */
-+/* usb_writew(dev, JZ_REG_UDC_INTRINE, 0);
-+ usb_writew(dev, JZ_REG_UDC_INTROUTE, 0);
-+ usb_writeb(dev, JZ_REG_UDC_INTRUSBE, 0);*/
-+
-+ /* Enable interrupts */
-+ usb_setw(dev, JZ_REG_UDC_INTRINE, USB_INTR_EP0);
-+ usb_setb(dev, JZ_REG_UDC_INTRUSBE, USB_INTR_RESET);
-+ /* Don't enable rest of the interrupts */
-+ /* usb_setw(dev, JZ_REG_UDC_INTRINE, USB_INTR_INEP1 | USB_INTR_INEP2);
-+ usb_setw(dev, JZ_REG_UDC_INTROUTE, USB_INTR_OUTEP1); */
-+
-+ /* Enable SUSPEND */
-+ /* usb_setb(dev, JZ_REG_UDC_POWER, USB_POWER_SUSPENDM); */
-+
-+ /* Enable HS Mode */
-+ usb_setb(dev, JZ_REG_UDC_POWER, USB_POWER_HSENAB);
-+
-+ /* Let host detect UDC:
-+ * Software must write a 1 to the PMR:USB_POWER_SOFTCONN bit to turn this
-+ * transistor on and pull the USBDP pin HIGH.
-+ */
-+ usb_setb(dev, JZ_REG_UDC_POWER, USB_POWER_SOFTCONN);
-+
-+ return;
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/* keeping it simple:
-+ * - one bus driver, initted first;
-+ * - one function driver, initted second
-+ */
-+
-+/*
-+ * Register entry point for the peripheral controller driver.
-+ */
-+
-+int usb_gadget_register_driver(struct usb_gadget_driver *driver)
-+{
-+ struct jz4740_udc *dev = the_controller;
-+ int retval;
-+
-+ if (!driver || !driver->bind) {
-+ return -EINVAL;
-+ }
-+
-+ if (!dev) {
-+ return -ENODEV;
-+ }
-+
-+ if (dev->driver) {
-+ return -EBUSY;
-+ }
-+
-+ /* hook up the driver */
-+ dev->driver = driver;
-+ dev->gadget.dev.driver = &driver->driver;
-+
-+ retval = driver->bind(&dev->gadget);
-+ if (retval) {
-+ DEBUG("%s: bind to driver %s --> error %d\n", dev->gadget.name,
-+ driver->driver.name, retval);
-+ dev->driver = 0;
-+ return retval;
-+ }
-+
-+ /* then enable host detection and ep0; and we're ready
-+ * for set_configuration as well as eventual disconnect.
-+ */
-+ udc_enable(dev);
-+
-+ DEBUG("%s: registered gadget driver '%s'\n", dev->gadget.name,
-+ driver->driver.name);
-+
-+ return 0;
-+}
-+
-+EXPORT_SYMBOL(usb_gadget_register_driver);
-+
-+static void stop_activity(struct jz4740_udc *dev,
-+ struct usb_gadget_driver *driver)
-+{
-+ int i;
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ /* 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_MAX_ENDPOINTS; i++) {
-+ struct jz4740_ep *ep = &dev->ep[i];
-+
-+ ep->stopped = 1;
-+
-+ jz_udc_set_index(dev, ep_index(ep));
-+ nuke(ep, -ESHUTDOWN);
-+ }
-+
-+ /* report disconnect; the driver is already quiesced */
-+ if (driver) {
-+ spin_unlock(&dev->lock);
-+ driver->disconnect(&dev->gadget);
-+ spin_lock(&dev->lock);
-+ }
-+
-+ /* re-init driver-visible data structures */
-+ udc_reinit(dev);
-+}
-+
-+
-+/*
-+ * Unregister entry point for the peripheral controller driver.
-+ */
-+int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
-+{
-+ struct jz4740_udc *dev = the_controller;
-+ unsigned long flags;
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ if (!dev)
-+ return -ENODEV;
-+ if (!driver || driver != dev->driver)
-+ return -EINVAL;
-+ if (!driver->unbind)
-+ return -EBUSY;
-+
-+ spin_lock_irqsave(&dev->lock, flags);
-+ dev->driver = 0;
-+ stop_activity(dev, driver);
-+ spin_unlock_irqrestore(&dev->lock, flags);
-+
-+ driver->unbind(&dev->gadget);
-+
-+ udc_disable(dev);
-+
-+ DEBUG("unregistered driver '%s'\n", driver->driver.name);
-+
-+ return 0;
-+}
-+
-+EXPORT_SYMBOL(usb_gadget_unregister_driver);
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/*
-+ * Starting DMA using mode 1
-+ */
-+static void kick_dma(struct jz4740_ep *ep, struct jz4740_request *req)
-+{
-+ struct jz4740_udc *dev = ep->dev;
-+ uint32_t count = req->req.length;
-+ uint32_t physaddr = virt_to_phys((void *)req->req.buf);
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ jz_udc_select_ep(ep);
-+
-+ if (ep_is_in(ep)) { /* Bulk-IN transfer using DMA channel 1 */
-+ ep->reg_addr = JZ_REG_UDC_ADDR1;
-+
-+ dma_cache_wback_inv((unsigned long)req->req.buf, count);
-+
-+ pio_irq_enable(ep);
-+
-+ usb_writeb(dev, JZ_REG_UDC_INCSRH,
-+ USB_INCSRH_DMAREQENAB | USB_INCSRH_AUTOSET | USB_INCSRH_DMAREQMODE);
-+
-+ usb_writel(dev, JZ_REG_UDC_ADDR1, physaddr);
-+ usb_writel(dev, JZ_REG_UDC_COUNT1, count);
-+ usb_writel(dev, JZ_REG_UDC_CNTL1, USB_CNTL_ENA | USB_CNTL_DIR_IN | USB_CNTL_MODE_1 |
-+ USB_CNTL_INTR_EN | USB_CNTL_BURST_16 | USB_CNTL_EP(ep_index(ep)));
-+ }
-+ else { /* Bulk-OUT transfer using DMA channel 2 */
-+ ep->reg_addr = JZ_REG_UDC_ADDR2;
-+
-+ dma_cache_wback_inv((unsigned long)req->req.buf, count);
-+
-+ pio_irq_enable(ep);
-+
-+ usb_setb(dev, JZ_REG_UDC_OUTCSRH,
-+ USB_OUTCSRH_DMAREQENAB | USB_OUTCSRH_AUTOCLR | USB_OUTCSRH_DMAREQMODE);
-+
-+ usb_writel(dev, JZ_REG_UDC_ADDR2, physaddr);
-+ usb_writel(dev, JZ_REG_UDC_COUNT2, count);
-+ usb_writel(dev, JZ_REG_UDC_CNTL2, USB_CNTL_ENA | USB_CNTL_MODE_1 |
-+ USB_CNTL_INTR_EN | USB_CNTL_BURST_16 | USB_CNTL_EP(ep_index(ep)));
-+ }
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/** Write request to FIFO (max write == maxp size)
-+ * Return: 0 = still running, 1 = completed, negative = errno
-+ * NOTE: INDEX register must be set for EP
-+ */
-+static int write_fifo(struct jz4740_ep *ep, struct jz4740_request *req)
-+{
-+ struct jz4740_udc *dev = ep->dev;
-+ uint32_t max, csr;
-+ uint32_t physaddr = virt_to_phys((void *)req->req.buf);
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+ max = le16_to_cpu(ep->desc->wMaxPacketSize);
-+
-+ if (use_dma) {
-+ uint32_t dma_count;
-+
-+ /* DMA interrupt generated due to the last packet loaded into the FIFO */
-+
-+ dma_count = usb_readl(dev, ep->reg_addr) - physaddr;
-+ req->req.actual += dma_count;
-+
-+ if (dma_count % max) {
-+ /* If the last packet is less than MAXP, set INPKTRDY manually */
-+ usb_setb(dev, ep->csr, USB_INCSR_INPKTRDY);
-+ }
-+
-+ done(ep, req, 0);
-+ if (list_empty(&ep->queue)) {
-+ pio_irq_disable(ep);
-+ return 1;
-+ }
-+ else {
-+ /* advance the request queue */
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+ kick_dma(ep, req);
-+ return 0;
-+ }
-+ }
-+
-+ /*
-+ * PIO mode handling starts here ...
-+ */
-+
-+ csr = usb_readb(dev, ep->csr);
-+
-+ if (!(csr & USB_INCSR_FFNOTEMPT)) {
-+ unsigned count;
-+ int is_last, is_short;
-+
-+ count = write_packet(ep, req, max);
-+ usb_setb(dev, ep->csr, USB_INCSR_INPKTRDY);
-+
-+ /* 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_maxpacket(ep));
-+ }
-+
-+ DEBUG("%s: wrote %s %d bytes%s%s %d left %p\n", __FUNCTION__,
-+ ep->ep.name, count,
-+ is_last ? "/L" : "", is_short ? "/S" : "",
-+ req->req.length - req->req.actual, req);
-+
-+ /* requests complete when all IN data is in the FIFO */
-+ if (is_last) {
-+ done(ep, req, 0);
-+ if (list_empty(&ep->queue)) {
-+ pio_irq_disable(ep);
-+ }
-+ return 1;
-+ }
-+ } else {
-+ DEBUG("Hmm.. %d ep FIFO is not empty!\n", ep_index(ep));
-+ }
-+
-+ return 0;
-+}
-+
-+/** Read to request from FIFO (max read == bytes in fifo)
-+ * Return: 0 = still running, 1 = completed, negative = errno
-+ * NOTE: INDEX register must be set for EP
-+ */
-+static int read_fifo(struct jz4740_ep *ep, struct jz4740_request *req)
-+{
-+ struct jz4740_udc *dev = ep->dev;
-+ uint32_t csr;
-+ unsigned count, is_short;
-+ uint32_t physaddr = virt_to_phys((void *)req->req.buf);
-+
-+ if (use_dma) {
-+ uint32_t dma_count;
-+
-+ /* DMA interrupt generated due to a packet less than MAXP loaded into the FIFO */
-+
-+ dma_count = usb_readl(dev, ep->reg_addr) - physaddr;
-+ req->req.actual += dma_count;
-+
-+ /* Disable interrupt and DMA */
-+ pio_irq_disable(ep);
-+ usb_writel(dev, JZ_REG_UDC_CNTL2, 0);
-+
-+ /* Read all bytes from this packet */
-+ count = usb_readw(dev, JZ_REG_UDC_OUTCOUNT);
-+ count = read_packet(ep, req, count);
-+
-+ if (count) {
-+ /* If the last packet is greater than zero, clear OUTPKTRDY manually */
-+ usb_clearb(dev, ep->csr, USB_OUTCSR_OUTPKTRDY);
-+ }
-+ done(ep, req, 0);
-+
-+ if (!list_empty(&ep->queue)) {
-+ /* advance the request queue */
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+ kick_dma(ep, req);
-+ }
-+
-+ return 1;
-+ }
-+
-+ /*
-+ * PIO mode handling starts here ...
-+ */
-+
-+ /* make sure there's a packet in the FIFO. */
-+ csr = usb_readb(dev, ep->csr);
-+ if (!(csr & USB_OUTCSR_OUTPKTRDY)) {
-+ DEBUG("%s: Packet NOT ready!\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ /* read all bytes from this packet */
-+ count = usb_readw(dev, JZ_REG_UDC_OUTCOUNT);
-+
-+ is_short = (count < ep->ep.maxpacket);
-+
-+ count = read_packet(ep, req, count);
-+
-+ DEBUG("read %s %02x, %d bytes%s req %p %d/%d\n",
-+ ep->ep.name, csr, count,
-+ is_short ? "/S" : "", req, req->req.actual, req->req.length);
-+
-+ /* Clear OutPktRdy */
-+ usb_clearb(dev, ep->csr, USB_OUTCSR_OUTPKTRDY);
-+
-+ /* completion */
-+ if (is_short || req->req.actual == req->req.length) {
-+ done(ep, req, 0);
-+
-+ if (list_empty(&ep->queue))
-+ pio_irq_disable(ep);
-+ return 1;
-+ }
-+
-+ /* finished that packet. the next one may be waiting... */
-+ return 0;
-+}
-+
-+/*
-+ * done - retire a request; caller blocked irqs
-+ * INDEX register is preserved to keep same
-+ */
-+static void done(struct jz4740_ep *ep, struct jz4740_request *req, int status)
-+{
-+ unsigned int stopped = ep->stopped;
-+ uint32_t index;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, ep);
-+ list_del_init(&req->queue);
-+
-+ if (likely(req->req.status == -EINPROGRESS))
-+ req->req.status = status;
-+ else
-+ status = req->req.status;
-+
-+ if (status && status != -ESHUTDOWN)
-+ DEBUG("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 */
-+ ep->stopped = 1;
-+ /* Read current index (completion may modify it) */
-+ index = usb_readb(ep->dev, JZ_REG_UDC_INDEX);
-+ spin_unlock_irqrestore(&ep->dev->lock, ep->dev->lock_flags);
-+
-+ req->req.complete(&ep->ep, &req->req);
-+
-+ spin_lock_irqsave(&ep->dev->lock, ep->dev->lock_flags);
-+ /* Restore index */
-+ jz_udc_set_index(ep->dev, index);
-+ ep->stopped = stopped;
-+}
-+
-+/** Enable EP interrupt */
-+static void pio_irq_enable(struct jz4740_ep *ep)
-+{
-+ uint8_t index = ep_index(ep);
-+ struct jz4740_udc *dev = ep->dev;
-+ DEBUG("%s: EP%d %s\n", __FUNCTION__, ep_index(ep), ep_is_in(ep) ? "IN": "OUT");
-+
-+ if (ep_is_in(ep)) {
-+ switch (index) {
-+ case 1:
-+ case 2:
-+ usb_setw(dev, JZ_REG_UDC_INTRINE, BIT(index));
-+ dev->in_mask |= BIT(index);
-+ break;
-+ default:
-+ DEBUG("Unknown endpoint: %d\n", index);
-+ break;
-+ }
-+ }
-+ else {
-+ switch (index) {
-+ case 1:
-+ usb_setw(dev, JZ_REG_UDC_INTROUTE, BIT(index));
-+ dev->out_mask |= BIT(index);
-+ break;
-+ default:
-+ DEBUG("Unknown endpoint: %d\n", index);
-+ break;
-+ }
-+ }
-+}
-+
-+/** Disable EP interrupt */
-+static void pio_irq_disable(struct jz4740_ep *ep)
-+{
-+ uint8_t index = ep_index(ep);
-+ struct jz4740_udc *dev = ep->dev;
-+
-+ DEBUG("%s: EP%d %s\n", __FUNCTION__, ep_index(ep), ep_is_in(ep) ? "IN": "OUT");
-+
-+ if (ep_is_in(ep)) {
-+ switch (ep_index(ep)) {
-+ case 1:
-+ case 2:
-+ usb_clearw(ep->dev, JZ_REG_UDC_INTRINE, BIT(index));
-+ dev->in_mask &= ~BIT(index);
-+ break;
-+ default:
-+ DEBUG("Unknown endpoint: %d\n", index);
-+ break;
-+ }
-+ }
-+ else {
-+ switch (ep_index(ep)) {
-+ case 1:
-+ usb_clearw(ep->dev, JZ_REG_UDC_INTROUTE, BIT(index));
-+ dev->out_mask &= ~BIT(index);
-+ break;
-+ default:
-+ DEBUG("Unknown endpoint: %d\n", index);
-+ break;
-+ }
-+ }
-+}
-+
-+/*
-+ * nuke - dequeue ALL requests
-+ */
-+static void nuke(struct jz4740_ep *ep, int status)
-+{
-+ struct jz4740_request *req;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, ep);
-+
-+ /* Flush FIFO */
-+ flush(ep);
-+
-+ /* called with irqs blocked */
-+ while (!list_empty(&ep->queue)) {
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+ done(ep, req, status);
-+ }
-+
-+ /* Disable IRQ if EP is enabled (has descriptor) */
-+ if (ep->desc)
-+ pio_irq_disable(ep);
-+}
-+
-+/** Flush EP FIFO
-+ * NOTE: INDEX register must be set before this call
-+ */
-+static void flush(struct jz4740_ep *ep)
-+{
-+ DEBUG("%s: %s\n", __FUNCTION__, ep->ep.name);
-+
-+ switch (ep->type) {
-+ case ep_bulk_in:
-+ case ep_interrupt:
-+ usb_setb(ep->dev, ep->csr, USB_INCSR_FF);
-+ break;
-+ case ep_bulk_out:
-+ usb_setb(ep->dev, ep->csr, USB_OUTCSR_FF);
-+ break;
-+ case ep_control:
-+ break;
-+ }
-+}
-+
-+/**
-+ * jz4740_in_epn - handle IN interrupt
-+ */
-+static void jz4740_in_epn(struct jz4740_udc *dev, uint32_t ep_idx, uint32_t intr)
-+{
-+ uint32_t csr;
-+ struct jz4740_ep *ep = &dev->ep[ep_idx + 1];
-+ struct jz4740_request *req;
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ jz_udc_set_index(dev, ep_index(ep));
-+
-+ csr = usb_readb(dev, ep->csr);
-+ DEBUG("%s: %d, csr %x\n", __FUNCTION__, ep_idx, csr);
-+
-+ if (csr & USB_INCSR_SENTSTALL) {
-+ DEBUG("USB_INCSR_SENTSTALL\n");
-+ usb_clearb(dev, ep->csr, USB_INCSR_SENTSTALL);
-+ return;
-+ }
-+
-+ if (!ep->desc) {
-+ DEBUG("%s: NO EP DESC\n", __FUNCTION__);
-+ return;
-+ }
-+
-+ if (list_empty(&ep->queue))
-+ req = 0;
-+ else
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+
-+ DEBUG("req: %p\n", req);
-+
-+ if (!req)
-+ return;
-+
-+ write_fifo(ep, req);
-+}
-+
-+/*
-+ * Bulk OUT (recv)
-+ */
-+static void jz4740_out_epn(struct jz4740_udc *dev, uint32_t ep_idx, uint32_t intr)
-+{
-+ struct jz4740_ep *ep = &dev->ep[ep_idx];
-+ struct jz4740_request *req;
-+
-+ DEBUG("%s: %d\n", __FUNCTION__, ep_idx);
-+
-+ jz_udc_set_index(dev, ep_index(ep));
-+ if (ep->desc) {
-+ uint32_t csr;
-+
-+ if (use_dma) {
-+ /* DMA starts here ... */
-+ if (list_empty(&ep->queue))
-+ req = 0;
-+ else
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+
-+ if (req)
-+ read_fifo(ep, req);
-+ return;
-+ }
-+
-+ /*
-+ * PIO mode starts here ...
-+ */
-+
-+ while ((csr = usb_readb(dev, ep->csr)) &
-+ (USB_OUTCSR_OUTPKTRDY | USB_OUTCSR_SENTSTALL)) {
-+ DEBUG("%s: %x\n", __FUNCTION__, csr);
-+
-+ if (csr & USB_OUTCSR_SENTSTALL) {
-+ DEBUG("%s: stall sent, flush fifo\n",
-+ __FUNCTION__);
-+ /* usb_set(USB_OUT_CSR1_FIFO_FLUSH, ep->csr1); */
-+ flush(ep);
-+ } else if (csr & USB_OUTCSR_OUTPKTRDY) {
-+ if (list_empty(&ep->queue))
-+ req = 0;
-+ else
-+ req =
-+ list_entry(ep->queue.next,
-+ struct jz4740_request,
-+ queue);
-+
-+ if (!req) {
-+ DEBUG("%s: NULL REQ %d\n",
-+ __FUNCTION__, ep_idx);
-+ break;
-+ } else {
-+ read_fifo(ep, req);
-+ }
-+ }
-+ }
-+ } else {
-+ /* Throw packet away.. */
-+ DEBUG("%s: ep %p ep_indx %d No descriptor?!?\n", __FUNCTION__, ep, ep_idx);
-+ flush(ep);
-+ }
-+}
-+
-+/** Halt specific EP
-+ * Return 0 if success
-+ * NOTE: Sets INDEX register to EP !
-+ */
-+static int jz4740_set_halt(struct usb_ep *_ep, int value)
-+{
-+ struct jz4740_udc *dev;
-+ struct jz4740_ep *ep;
-+ unsigned long flags;
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (unlikely(!_ep || (!ep->desc && ep->type != ep_control))) {
-+ DEBUG("%s, bad ep\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ dev = ep->dev;
-+
-+ spin_lock_irqsave(&dev->lock, flags);
-+
-+ jz_udc_select_ep(ep);
-+
-+ DEBUG("%s, ep %d, val %d\n", __FUNCTION__, ep_index(ep), value);
-+
-+ if (ep_index(ep) == 0) {
-+ /* EP0 */
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_SENDSTALL);
-+ } else if (ep_is_in(ep)) {
-+ uint32_t csr = usb_readb(dev, ep->csr);
-+ if (value && ((csr & USB_INCSR_FFNOTEMPT)
-+ || !list_empty(&ep->queue))) {
-+ /*
-+ * Attempts to halt IN endpoints will fail (returning -EAGAIN)
-+ * if any transfer requests are still queued, or if the controller
-+ * FIFO still holds bytes that the host hasnÂ’t collected.
-+ */
-+ spin_unlock_irqrestore(&dev->lock, flags);
-+ DEBUG
-+ ("Attempt to halt IN endpoint failed (returning -EAGAIN) %d %d\n",
-+ (csr & USB_INCSR_FFNOTEMPT),
-+ !list_empty(&ep->queue));
-+ return -EAGAIN;
-+ }
-+ flush(ep);
-+ if (value) {
-+ usb_setb(dev, ep->csr, USB_INCSR_SENDSTALL);
-+ }
-+ else {
-+ usb_clearb(dev, ep->csr, USB_INCSR_SENDSTALL);
-+ usb_setb(dev, ep->csr, USB_INCSR_CDT);
-+ }
-+ } else {
-+
-+ flush(ep);
-+ if (value) {
-+ usb_setb(dev, ep->csr, USB_OUTCSR_SENDSTALL);
-+ }
-+ else {
-+ usb_clearb(dev, ep->csr, USB_OUTCSR_SENDSTALL);
-+ usb_setb(dev, ep->csr, USB_OUTCSR_CDT);
-+ }
-+ }
-+
-+ if (value) {
-+ ep->stopped = 1;
-+ } else {
-+ ep->stopped = 0;
-+ }
-+
-+ spin_unlock_irqrestore(&dev->lock, flags);
-+
-+ DEBUG("%s %s halted\n", _ep->name, value == 0 ? "NOT" : "IS");
-+
-+ return 0;
-+}
-+
-+
-+static int jz4740_ep_enable(struct usb_ep *_ep,
-+ const struct usb_endpoint_descriptor *desc)
-+{
-+ struct jz4740_ep *ep;
-+ struct jz4740_udc *dev;
-+ unsigned long flags;
-+ uint32_t max, csrh = 0;
-+
-+ DEBUG("%s: trying to enable %s\n", __FUNCTION__, _ep->name);
-+
-+ if (!_ep || !desc)
-+ return -EINVAL;
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (ep->desc || ep->type == ep_control
-+ || desc->bDescriptorType != USB_DT_ENDPOINT
-+ || ep->bEndpointAddress != desc->bEndpointAddress) {
-+ DEBUG("%s, bad ep or descriptor\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ /* xfer types must match, except that interrupt ~= bulk */
-+ if (ep->bmAttributes != desc->bmAttributes
-+ && ep->bmAttributes != USB_ENDPOINT_XFER_BULK
-+ && desc->bmAttributes != USB_ENDPOINT_XFER_INT) {
-+ DEBUG("%s, %s type mismatch\n", __FUNCTION__, _ep->name);
-+ return -EINVAL;
-+ }
-+
-+ dev = ep->dev;
-+ if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) {
-+ DEBUG("%s, bogus device state\n", __FUNCTION__);
-+ return -ESHUTDOWN;
-+ }
-+
-+ max = le16_to_cpu(desc->wMaxPacketSize);
-+
-+ spin_lock_irqsave(&ep->dev->lock, flags);
-+
-+ /* Configure the endpoint */
-+ jz_udc_set_index(dev, desc->bEndpointAddress & 0x0F);
-+ if (ep_is_in(ep)) {
-+ usb_writew(dev, JZ_REG_UDC_INMAXP, max);
-+ switch (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
-+ case USB_ENDPOINT_XFER_BULK:
-+ case USB_ENDPOINT_XFER_INT:
-+ csrh &= ~USB_INCSRH_ISO;
-+ break;
-+ case USB_ENDPOINT_XFER_ISOC:
-+ csrh |= USB_INCSRH_ISO;
-+ break;
-+ }
-+ usb_writeb(dev, JZ_REG_UDC_INCSRH, csrh);
-+ }
-+ else {
-+ usb_writew(dev, JZ_REG_UDC_OUTMAXP, max);
-+ switch (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
-+ case USB_ENDPOINT_XFER_BULK:
-+ csrh &= ~USB_OUTCSRH_ISO;
-+ break;
-+ case USB_ENDPOINT_XFER_INT:
-+ csrh &= ~USB_OUTCSRH_ISO;
-+ csrh |= USB_OUTCSRH_DNYT;
-+ break;
-+ case USB_ENDPOINT_XFER_ISOC:
-+ csrh |= USB_OUTCSRH_ISO;
-+ break;
-+ }
-+ usb_writeb(dev, JZ_REG_UDC_OUTCSRH, csrh);
-+ }
-+
-+
-+ ep->stopped = 0;
-+ ep->desc = desc;
-+ ep->pio_irqs = 0;
-+ ep->ep.maxpacket = max;
-+
-+ spin_unlock_irqrestore(&ep->dev->lock, flags);
-+
-+ /* Reset halt state (does flush) */
-+ jz4740_set_halt(_ep, 0);
-+
-+ DEBUG("%s: enabled %s\n", __FUNCTION__, _ep->name);
-+
-+ return 0;
-+}
-+
-+/** Disable EP
-+ * NOTE: Sets INDEX register
-+ */
-+static int jz4740_ep_disable(struct usb_ep *_ep)
-+{
-+ struct jz4740_ep *ep;
-+ unsigned long flags;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, _ep);
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (!_ep || !ep->desc) {
-+ DEBUG("%s, %s not enabled\n", __FUNCTION__,
-+ _ep ? ep->ep.name : NULL);
-+ return -EINVAL;
-+ }
-+
-+ spin_lock_irqsave(&ep->dev->lock, flags);
-+
-+ jz_udc_select_ep(ep);
-+
-+ /* Nuke all pending requests (does flush) */
-+ nuke(ep, -ESHUTDOWN);
-+
-+ /* Disable ep IRQ */
-+ pio_irq_disable(ep);
-+
-+ ep->desc = 0;
-+ ep->stopped = 1;
-+
-+ spin_unlock_irqrestore(&ep->dev->lock, flags);
-+
-+ DEBUG("%s: disabled %s\n", __FUNCTION__, _ep->name);
-+ return 0;
-+}
-+
-+static struct usb_request *jz4740_alloc_request(struct usb_ep *ep, gfp_t gfp_flags)
-+{
-+ struct jz4740_request *req;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, ep);
-+
-+ req = kzalloc(sizeof(*req), gfp_flags);
-+ if (!req)
-+ return 0;
-+
-+ INIT_LIST_HEAD(&req->queue);
-+
-+ return &req->req;
-+}
-+
-+static void jz4740_free_request(struct usb_ep *ep, struct usb_request *_req)
-+{
-+ struct jz4740_request *req;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, ep);
-+
-+ req = container_of(_req, struct jz4740_request, req);
-+ WARN_ON(!list_empty(&req->queue));
-+ kfree(req);
-+}
-+
-+/*--------------------------------------------------------------------*/
-+
-+/** Queue one request
-+ * Kickstart transfer if needed
-+ * NOTE: Sets INDEX register
-+ */
-+static int jz4740_queue(struct usb_ep *_ep, struct usb_request *_req,
-+ gfp_t gfp_flags)
-+{
-+ struct jz4740_request *req;
-+ struct jz4740_ep *ep;
-+ struct jz4740_udc *dev;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, _ep);
-+
-+ req = container_of(_req, struct jz4740_request, req);
-+ if (unlikely
-+ (!_req || !_req->complete || !_req->buf
-+ || !list_empty(&req->queue))) {
-+ DEBUG("%s, bad params\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (unlikely(!_ep || (!ep->desc && ep->type != ep_control))) {
-+ DEBUG("%s, bad ep\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ dev = ep->dev;
-+ if (unlikely(!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN)) {
-+ DEBUG("%s, bogus device state %p\n", __FUNCTION__, dev->driver);
-+ return -ESHUTDOWN;
-+ }
-+
-+ DEBUG("%s queue req %p, len %d buf %p\n", _ep->name, _req, _req->length,
-+ _req->buf);
-+
-+ spin_lock_irqsave(&dev->lock, dev->lock_flags);
-+
-+ _req->status = -EINPROGRESS;
-+ _req->actual = 0;
-+
-+ /* kickstart this i/o queue? */
-+ DEBUG("Add to %d Q %d %d\n", ep_index(ep), list_empty(&ep->queue),
-+ ep->stopped);
-+ if (list_empty(&ep->queue) && likely(!ep->stopped)) {
-+ uint32_t csr;
-+
-+ if (unlikely(ep_index(ep) == 0)) {
-+ /* EP0 */
-+ list_add_tail(&req->queue, &ep->queue);
-+ jz4740_ep0_kick(dev, ep);
-+ req = 0;
-+ } else if (use_dma) {
-+ /* DMA */
-+ kick_dma(ep, req);
-+ }
-+ /* PIO */
-+ else if (ep_is_in(ep)) {
-+ /* EP1 & EP2 */
-+ jz_udc_set_index(dev, ep_index(ep));
-+ csr = usb_readb(dev, ep->csr);
-+ pio_irq_enable(ep);
-+ if (!(csr & USB_INCSR_FFNOTEMPT)) {
-+ if (write_fifo(ep, req) == 1)
-+ req = 0;
-+ }
-+ } else {
-+ /* EP1 */
-+ jz_udc_set_index(dev, ep_index(ep));
-+ csr = usb_readb(dev, ep->csr);
-+ pio_irq_enable(ep);
-+ if (csr & USB_OUTCSR_OUTPKTRDY) {
-+ if (read_fifo(ep, req) == 1)
-+ req = 0;
-+ }
-+ }
-+ }
-+
-+ /* pio or dma irq handler advances the queue. */
-+ if (likely(req != 0))
-+ list_add_tail(&req->queue, &ep->queue);
-+
-+ spin_unlock_irqrestore(&dev->lock, dev->lock_flags);
-+
-+ return 0;
-+}
-+
-+/* dequeue JUST ONE request */
-+static int jz4740_dequeue(struct usb_ep *_ep, struct usb_request *_req)
-+{
-+ struct jz4740_ep *ep;
-+ struct jz4740_request *req;
-+ unsigned long flags;
-+
-+ DEBUG("%s, %p\n", __FUNCTION__, _ep);
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (!_ep || ep->type == ep_control)
-+ return -EINVAL;
-+
-+ spin_lock_irqsave(&ep->dev->lock, 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) {
-+ spin_unlock_irqrestore(&ep->dev->lock, flags);
-+ return -EINVAL;
-+ }
-+ done(ep, req, -ECONNRESET);
-+
-+ spin_unlock_irqrestore(&ep->dev->lock, flags);
-+ return 0;
-+}
-+
-+/** Return bytes in EP FIFO
-+ * NOTE: Sets INDEX register to EP
-+ */
-+static int jz4740_fifo_status(struct usb_ep *_ep)
-+{
-+ uint32_t csr;
-+ int count = 0;
-+ struct jz4740_ep *ep;
-+ unsigned long flags;
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (!_ep) {
-+ DEBUG("%s, bad ep\n", __FUNCTION__);
-+ return -ENODEV;
-+ }
-+
-+ DEBUG("%s, %d\n", __FUNCTION__, ep_index(ep));
-+
-+ /* LPD can't report unclaimed bytes from IN fifos */
-+ if (ep_is_in(ep))
-+ return -EOPNOTSUPP;
-+
-+ spin_lock_irqsave(&ep->dev->lock, flags);
-+ jz_udc_set_index(ep->dev, ep_index(ep));
-+
-+ csr = usb_readb(ep->dev, ep->csr);
-+ if (ep->dev->gadget.speed != USB_SPEED_UNKNOWN ||
-+ csr & 0x1) {
-+ count = usb_readw(ep->dev, JZ_REG_UDC_OUTCOUNT);
-+ }
-+
-+ spin_unlock_irqrestore(&ep->dev->lock, flags);
-+
-+ return count;
-+}
-+
-+/** Flush EP FIFO
-+ * NOTE: Sets INDEX register to EP
-+ */
-+static void jz4740_fifo_flush(struct usb_ep *_ep)
-+{
-+ struct jz4740_ep *ep;
-+ unsigned long flags;
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ ep = container_of(_ep, struct jz4740_ep, ep);
-+ if (unlikely(!_ep || (!ep->desc && ep->type == ep_control))) {
-+ DEBUG("%s, bad ep\n", __FUNCTION__);
-+ return;
-+ }
-+
-+ spin_lock_irqsave(&ep->dev->lock, flags);
-+
-+ jz_udc_set_index(ep->dev, ep_index(ep));
-+ flush(ep);
-+
-+ spin_unlock_irqrestore(&ep->dev->lock, flags);
-+}
-+
-+/****************************************************************/
-+/* End Point 0 related functions */
-+/****************************************************************/
-+
-+/* return: 0 = still running, 1 = completed, negative = errno */
-+static int write_fifo_ep0(struct jz4740_ep *ep, struct jz4740_request *req)
-+{
-+ uint32_t max;
-+ unsigned count;
-+ int is_last;
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+ max = ep_maxpacket(ep);
-+
-+ count = write_packet(ep, req, max);
-+
-+ /* last packet is usually short (or a zlp) */
-+ if (unlikely(count != max))
-+ is_last = 1;
-+ else {
-+ if (likely(req->req.length != req->req.actual) || req->req.zero)
-+ is_last = 0;
-+ else
-+ is_last = 1;
-+ }
-+
-+ DEBUG_EP0("%s: wrote %s %d bytes%s %d left %p\n", __FUNCTION__,
-+ ep->ep.name, count,
-+ is_last ? "/L" : "", req->req.length - req->req.actual, req);
-+
-+ /* requests complete when all IN data is in the FIFO */
-+ if (is_last) {
-+ done(ep, req, 0);
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+static inline int jz4740_fifo_read(struct jz4740_ep *ep,
-+ unsigned char *cp, int max)
-+{
-+ int bytes;
-+ int count = usb_readw(ep->dev, JZ_REG_UDC_OUTCOUNT);
-+
-+ if (count > max)
-+ count = max;
-+ bytes = count;
-+ while (count--)
-+ *cp++ = usb_readb(ep->dev, ep->fifo);
-+
-+ return bytes;
-+}
-+
-+static inline void jz4740_fifo_write(struct jz4740_ep *ep,
-+ unsigned char *cp, int count)
-+{
-+ DEBUG("fifo_write: %d %d\n", ep_index(ep), count);
-+ while (count--)
-+ usb_writeb(ep->dev, ep->fifo, *cp++);
-+}
-+
-+static int read_fifo_ep0(struct jz4740_ep *ep, struct jz4740_request *req)
-+{
-+ struct jz4740_udc *dev = ep->dev;
-+ uint32_t csr;
-+ uint8_t *buf;
-+ unsigned bufferspace, count, is_short;
-+
-+ DEBUG_EP0("%s\n", __FUNCTION__);
-+
-+ csr = usb_readb(dev, JZ_REG_UDC_CSR0);
-+ if (!(csr & USB_CSR0_OUTPKTRDY))
-+ return 0;
-+
-+ buf = req->req.buf + req->req.actual;
-+ prefetchw(buf);
-+ bufferspace = req->req.length - req->req.actual;
-+
-+ /* read all bytes from this packet */
-+ if (likely(csr & USB_CSR0_OUTPKTRDY)) {
-+ count = usb_readw(dev, JZ_REG_UDC_OUTCOUNT);
-+ req->req.actual += min(count, bufferspace);
-+ } else /* zlp */
-+ count = 0;
-+
-+ is_short = (count < ep->ep.maxpacket);
-+ DEBUG_EP0("read %s %02x, %d bytes%s req %p %d/%d\n",
-+ ep->ep.name, csr, count,
-+ is_short ? "/S" : "", req, req->req.actual, req->req.length);
-+
-+ while (likely(count-- != 0)) {
-+ uint8_t byte = (uint8_t)usb_readl(dev, ep->fifo);
-+
-+ 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)
-+ DEBUG_EP0("%s overflow %d\n", ep->ep.name,
-+ count);
-+ req->req.status = -EOVERFLOW;
-+ } else {
-+ *buf++ = byte;
-+ bufferspace--;
-+ }
-+ }
-+
-+ /* completion */
-+ if (is_short || req->req.actual == req->req.length) {
-+ done(ep, req, 0);
-+ return 1;
-+ }
-+
-+ /* finished that packet. the next one may be waiting... */
-+ return 0;
-+}
-+
-+/**
-+ * udc_set_address - set the USB address for this device
-+ * @address:
-+ *
-+ * Called from control endpoint function after it decodes a set address setup packet.
-+ */
-+static void udc_set_address(struct jz4740_udc *dev, unsigned char address)
-+{
-+ DEBUG_EP0("%s: %d\n", __FUNCTION__, address);
-+
-+ dev->usb_address = address;
-+ usb_writeb(dev, JZ_REG_UDC_FADDR, address);
-+}
-+
-+/*
-+ * DATA_STATE_RECV (USB_CSR0_OUTPKTRDY)
-+ * - if error
-+ * set USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND | USB_CSR0_SENDSTALL bits
-+ * - else
-+ * set USB_CSR0_SVDOUTPKTRDY bit
-+ if last set USB_CSR0_DATAEND bit
-+ */
-+static void jz4740_ep0_out(struct jz4740_udc *dev, uint32_t csr, int kickstart)
-+{
-+ struct jz4740_request *req;
-+ struct jz4740_ep *ep = &dev->ep[0];
-+ int ret;
-+
-+ DEBUG_EP0("%s: %x\n", __FUNCTION__, csr);
-+
-+ if (list_empty(&ep->queue))
-+ req = 0;
-+ else
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+
-+ if (req) {
-+ if (req->req.length == 0) {
-+ DEBUG_EP0("ZERO LENGTH OUT!\n");
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND));
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ return;
-+ } else if (kickstart) {
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY));
-+ return;
-+ }
-+ ret = read_fifo_ep0(ep, req);
-+ if (ret) {
-+ /* Done! */
-+ DEBUG_EP0("%s: finished, waiting for status\n",
-+ __FUNCTION__);
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND));
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ } else {
-+ /* Not done yet.. */
-+ DEBUG_EP0("%s: not finished\n", __FUNCTION__);
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_SVDOUTPKTRDY);
-+ }
-+ } else {
-+ DEBUG_EP0("NO REQ??!\n");
-+ }
-+}
-+
-+/*
-+ * DATA_STATE_XMIT
-+ */
-+static int jz4740_ep0_in(struct jz4740_udc *dev, uint32_t csr)
-+{
-+ struct jz4740_request *req;
-+ struct jz4740_ep *ep = &dev->ep[0];
-+ int ret, need_zlp = 0;
-+
-+ DEBUG_EP0("%s: %x\n", __FUNCTION__, csr);
-+
-+ if (list_empty(&ep->queue))
-+ req = 0;
-+ else
-+ req = list_entry(ep->queue.next, struct jz4740_request, queue);
-+
-+ if (!req) {
-+ DEBUG_EP0("%s: NULL REQ\n", __FUNCTION__);
-+ return 0;
-+ }
-+
-+ if (req->req.length == 0) {
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_INPKTRDY | USB_CSR0_DATAEND));
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ return 1;
-+ }
-+
-+ if (req->req.length - req->req.actual == EP0_MAXPACKETSIZE) {
-+ /* Next write will end with the packet size, */
-+ /* so we need zero-length-packet */
-+ need_zlp = 1;
-+ }
-+
-+ ret = write_fifo_ep0(ep, req);
-+
-+ if (ret == 1 && !need_zlp) {
-+ /* Last packet */
-+ DEBUG_EP0("%s: finished, waiting for status\n", __FUNCTION__);
-+
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_INPKTRDY | USB_CSR0_DATAEND));
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ } else {
-+ DEBUG_EP0("%s: not finished\n", __FUNCTION__);
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_INPKTRDY);
-+ }
-+
-+ if (need_zlp) {
-+ DEBUG_EP0("%s: Need ZLP!\n", __FUNCTION__);
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_INPKTRDY);
-+ dev->ep0state = DATA_STATE_NEED_ZLP;
-+ }
-+
-+ return 1;
-+}
-+
-+static int jz4740_handle_get_status(struct jz4740_udc *dev,
-+ struct usb_ctrlrequest *ctrl)
-+{
-+ struct jz4740_ep *ep0 = &dev->ep[0];
-+ struct jz4740_ep *qep;
-+ int reqtype = (ctrl->bRequestType & USB_RECIP_MASK);
-+ uint16_t val = 0;
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+
-+ if (reqtype == USB_RECIP_INTERFACE) {
-+ /* This is not supported.
-+ * And according to the USB spec, this one does nothing..
-+ * Just return 0
-+ */
-+ DEBUG_SETUP("GET_STATUS: USB_RECIP_INTERFACE\n");
-+ } else if (reqtype == USB_RECIP_DEVICE) {
-+ DEBUG_SETUP("GET_STATUS: USB_RECIP_DEVICE\n");
-+ val |= (1 << 0); /* Self powered */
-+ /*val |= (1<<1); *//* Remote wakeup */
-+ } else if (reqtype == USB_RECIP_ENDPOINT) {
-+ int ep_num = (ctrl->wIndex & ~USB_DIR_IN);
-+
-+ DEBUG_SETUP
-+ ("GET_STATUS: USB_RECIP_ENDPOINT (%d), ctrl->wLength = %d\n",
-+ ep_num, ctrl->wLength);
-+
-+ if (ctrl->wLength > 2 || ep_num > 3)
-+ return -EOPNOTSUPP;
-+
-+ qep = &dev->ep[ep_num];
-+ if (ep_is_in(qep) != ((ctrl->wIndex & USB_DIR_IN) ? 1 : 0)
-+ && ep_index(qep) != 0) {
-+ return -EOPNOTSUPP;
-+ }
-+
-+ jz_udc_set_index(dev, ep_index(qep));
-+
-+ /* Return status on next IN token */
-+ switch (qep->type) {
-+ case ep_control:
-+ val =
-+ (usb_readb(dev, qep->csr) & USB_CSR0_SENDSTALL) ==
-+ USB_CSR0_SENDSTALL;
-+ break;
-+ case ep_bulk_in:
-+ case ep_interrupt:
-+ val =
-+ (usb_readb(dev, qep->csr) & USB_INCSR_SENDSTALL) ==
-+ USB_INCSR_SENDSTALL;
-+ break;
-+ case ep_bulk_out:
-+ val =
-+ (usb_readb(dev, qep->csr) & USB_OUTCSR_SENDSTALL) ==
-+ USB_OUTCSR_SENDSTALL;
-+ break;
-+ }
-+
-+ /* Back to EP0 index */
-+ jz_udc_set_index(dev, 0);
-+
-+ DEBUG_SETUP("GET_STATUS, ep: %d (%x), val = %d\n", ep_num,
-+ ctrl->wIndex, val);
-+ } else {
-+ DEBUG_SETUP("Unknown REQ TYPE: %d\n", reqtype);
-+ return -EOPNOTSUPP;
-+ }
-+
-+ /* Clear "out packet ready" */
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_SVDOUTPKTRDY);
-+ /* Put status to FIFO */
-+ jz4740_fifo_write(ep0, (uint8_t *)&val, sizeof(val));
-+ /* Issue "In packet ready" */
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_INPKTRDY | USB_CSR0_DATAEND));
-+
-+ return 0;
-+}
-+
-+/*
-+ * WAIT_FOR_SETUP (OUTPKTRDY)
-+ * - read data packet from EP0 FIFO
-+ * - decode command
-+ * - if error
-+ * set USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND | USB_CSR0_SENDSTALL bits
-+ * - else
-+ * set USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND bits
-+ */
-+static void jz4740_ep0_setup(struct jz4740_udc *dev, uint32_t csr)
-+{
-+ struct jz4740_ep *ep = &dev->ep[0];
-+ struct usb_ctrlrequest ctrl;
-+ int i;
-+
-+ DEBUG_SETUP("%s: %x\n", __FUNCTION__, csr);
-+
-+ /* Nuke all previous transfers */
-+ nuke(ep, -EPROTO);
-+
-+ /* read control req from fifo (8 bytes) */
-+ jz4740_fifo_read(ep, (unsigned char *)&ctrl, 8);
-+
-+ DEBUG_SETUP("SETUP %02x.%02x v%04x i%04x l%04x\n",
-+ ctrl.bRequestType, ctrl.bRequest,
-+ ctrl.wValue, ctrl.wIndex, ctrl.wLength);
-+
-+ /* Set direction of EP0 */
-+ if (likely(ctrl.bRequestType & USB_DIR_IN)) {
-+ ep->bEndpointAddress |= USB_DIR_IN;
-+ } else {
-+ ep->bEndpointAddress &= ~USB_DIR_IN;
-+ }
-+
-+ /* Handle some SETUP packets ourselves */
-+ switch (ctrl.bRequest) {
-+ case USB_REQ_SET_ADDRESS:
-+ if (ctrl.bRequestType != (USB_TYPE_STANDARD | USB_RECIP_DEVICE))
-+ break;
-+
-+ DEBUG_SETUP("USB_REQ_SET_ADDRESS (%d)\n", ctrl.wValue);
-+ udc_set_address(dev, ctrl.wValue);
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND));
-+ return;
-+
-+ case USB_REQ_SET_CONFIGURATION:
-+ if (ctrl.bRequestType != (USB_TYPE_STANDARD | USB_RECIP_DEVICE))
-+ break;
-+
-+ DEBUG_SETUP("USB_REQ_SET_CONFIGURATION (%d)\n", ctrl.wValue);
-+/* usb_setb(JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND));*/
-+
-+ /* Enable RESUME and SUSPEND interrupts */
-+ usb_setb(dev, JZ_REG_UDC_INTRUSBE, (USB_INTR_RESUME | USB_INTR_SUSPEND));
-+ break;
-+
-+ case USB_REQ_SET_INTERFACE:
-+ if (ctrl.bRequestType != (USB_TYPE_STANDARD | USB_RECIP_DEVICE))
-+ break;
-+
-+ DEBUG_SETUP("USB_REQ_SET_INTERFACE (%d)\n", ctrl.wValue);
-+/* usb_setb(JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND));*/
-+ break;
-+
-+ case USB_REQ_GET_STATUS:
-+ if (jz4740_handle_get_status(dev, &ctrl) == 0)
-+ return;
-+
-+ case USB_REQ_CLEAR_FEATURE:
-+ case USB_REQ_SET_FEATURE:
-+ if (ctrl.bRequestType == USB_RECIP_ENDPOINT) {
-+ struct jz4740_ep *qep;
-+ int ep_num = (ctrl.wIndex & 0x0f);
-+
-+ /* Support only HALT feature */
-+ if (ctrl.wValue != 0 || ctrl.wLength != 0
-+ || ep_num > 3 || ep_num < 1)
-+ break;
-+
-+ qep = &dev->ep[ep_num];
-+ spin_unlock(&dev->lock);
-+ if (ctrl.bRequest == USB_REQ_SET_FEATURE) {
-+ DEBUG_SETUP("SET_FEATURE (%d)\n",
-+ ep_num);
-+ jz4740_set_halt(&qep->ep, 1);
-+ } else {
-+ DEBUG_SETUP("CLR_FEATURE (%d)\n",
-+ ep_num);
-+ jz4740_set_halt(&qep->ep, 0);
-+ }
-+ spin_lock(&dev->lock);
-+
-+ jz_udc_set_index(dev, 0);
-+
-+ /* Reply with a ZLP on next IN token */
-+ usb_setb(dev, JZ_REG_UDC_CSR0,
-+ (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND));
-+ return;
-+ }
-+ break;
-+
-+ default:
-+ break;
-+ }
-+
-+ /* gadget drivers see class/vendor specific requests,
-+ * {SET,GET}_{INTERFACE,DESCRIPTOR,CONFIGURATION},
-+ * and more.
-+ */
-+ if (dev->driver) {
-+ /* device-2-host (IN) or no data setup command, process immediately */
-+ spin_unlock(&dev->lock);
-+
-+ i = dev->driver->setup(&dev->gadget, &ctrl);
-+ spin_lock(&dev->lock);
-+
-+ if (unlikely(i < 0)) {
-+ /* setup processing failed, force stall */
-+ DEBUG_SETUP
-+ (" --> ERROR: gadget setup FAILED (stalling), setup returned %d\n",
-+ i);
-+ jz_udc_set_index(dev, 0);
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_SVDOUTPKTRDY | USB_CSR0_DATAEND | USB_CSR0_SENDSTALL));
-+
-+ /* ep->stopped = 1; */
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ }
-+ else {
-+ DEBUG_SETUP("gadget driver setup ok (%d)\n", ctrl.wLength);
-+/* if (!ctrl.wLength) {
-+ usb_setb(JZ_REG_UDC_CSR0, USB_CSR0_SVDOUTPKTRDY);
-+ }*/
-+ }
-+ }
-+}
-+
-+/*
-+ * DATA_STATE_NEED_ZLP
-+ */
-+static void jz4740_ep0_in_zlp(struct jz4740_udc *dev, uint32_t csr)
-+{
-+ DEBUG_EP0("%s: %x\n", __FUNCTION__, csr);
-+
-+ usb_setb(dev, JZ_REG_UDC_CSR0, (USB_CSR0_INPKTRDY | USB_CSR0_DATAEND));
-+ dev->ep0state = WAIT_FOR_SETUP;
-+}
-+
-+/*
-+ * handle ep0 interrupt
-+ */
-+static void jz4740_handle_ep0(struct jz4740_udc *dev, uint32_t intr)
-+{
-+ struct jz4740_ep *ep = &dev->ep[0];
-+ uint32_t csr;
-+
-+ DEBUG("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-+ /* Set index 0 */
-+ jz_udc_set_index(dev, 0);
-+ csr = usb_readb(dev, JZ_REG_UDC_CSR0);
-+
-+ DEBUG_EP0("%s: csr = %x state = \n", __FUNCTION__, csr);//, state_names[dev->ep0state]);
-+
-+ /*
-+ * if SENT_STALL is set
-+ * - clear the SENT_STALL bit
-+ */
-+ if (csr & USB_CSR0_SENTSTALL) {
-+ DEBUG_EP0("%s: USB_CSR0_SENTSTALL is set: %x\n", __FUNCTION__, csr);
-+ usb_clearb(dev, JZ_REG_UDC_CSR0, USB_CSR0_SENDSTALL | USB_CSR0_SENTSTALL);
-+ nuke(ep, -ECONNABORTED);
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ return;
-+ }
-+
-+ /*
-+ * if a transfer is in progress && INPKTRDY and OUTPKTRDY are clear
-+ * - fill EP0 FIFO
-+ * - if last packet
-+ * - set IN_PKT_RDY | DATA_END
-+ * - else
-+ * set IN_PKT_RDY
-+ */
-+ if (!(csr & (USB_CSR0_INPKTRDY | USB_CSR0_OUTPKTRDY))) {
-+ DEBUG_EP0("%s: INPKTRDY and OUTPKTRDY are clear\n",
-+ __FUNCTION__);
-+
-+ switch (dev->ep0state) {
-+ case DATA_STATE_XMIT:
-+ DEBUG_EP0("continue with DATA_STATE_XMIT\n");
-+ jz4740_ep0_in(dev, csr);
-+ return;
-+ case DATA_STATE_NEED_ZLP:
-+ DEBUG_EP0("continue with DATA_STATE_NEED_ZLP\n");
-+ jz4740_ep0_in_zlp(dev, csr);
-+ return;
-+ default:
-+ /* Stall? */
-+// DEBUG_EP0("Odd state!! state = %s\n",
-+// state_names[dev->ep0state]);
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ /* nuke(ep, 0); */
-+ /* usb_setb(ep->csr, USB_CSR0_SENDSTALL); */
-+// break;
-+ return;
-+ }
-+ }
-+
-+ /*
-+ * if SETUPEND is set
-+ * - abort the last transfer
-+ * - set SERVICED_SETUP_END_BIT
-+ */
-+ if (csr & USB_CSR0_SETUPEND) {
-+ DEBUG_EP0("%s: USB_CSR0_SETUPEND is set: %x\n", __FUNCTION__, csr);
-+
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_SVDSETUPEND);
-+ nuke(ep, 0);
-+ dev->ep0state = WAIT_FOR_SETUP;
-+ }
-+
-+ /*
-+ * if USB_CSR0_OUTPKTRDY is set
-+ * - read data packet from EP0 FIFO
-+ * - decode command
-+ * - if error
-+ * set SVDOUTPKTRDY | DATAEND | SENDSTALL bits
-+ * - else
-+ * set SVDOUTPKTRDY | DATAEND bits
-+ */
-+ if (csr & USB_CSR0_OUTPKTRDY) {
-+
-+ DEBUG_EP0("%s: EP0_OUT_PKT_RDY is set: %x\n", __FUNCTION__,
-+ csr);
-+
-+ switch (dev->ep0state) {
-+ case WAIT_FOR_SETUP:
-+ DEBUG_EP0("WAIT_FOR_SETUP\n");
-+ jz4740_ep0_setup(dev, csr);
-+ break;
-+
-+ case DATA_STATE_RECV:
-+ DEBUG_EP0("DATA_STATE_RECV\n");
-+ jz4740_ep0_out(dev, csr, 0);
-+ break;
-+
-+ default:
-+ /* send stall? */
-+ DEBUG_EP0("strange state!! 2. send stall? state = %d\n",
-+ dev->ep0state);
-+ break;
-+ }
-+ }
-+}
-+
-+static void jz4740_ep0_kick(struct jz4740_udc *dev, struct jz4740_ep *ep)
-+{
-+ uint32_t csr;
-+
-+ jz_udc_set_index(dev, 0);
-+
-+ DEBUG_EP0("%s: %x\n", __FUNCTION__, csr);
-+
-+ /* Clear "out packet ready" */
-+
-+ if (ep_is_in(ep)) {
-+ usb_setb(dev, JZ_REG_UDC_CSR0, USB_CSR0_SVDOUTPKTRDY);
-+ csr = usb_readb(dev, JZ_REG_UDC_CSR0);
-+ dev->ep0state = DATA_STATE_XMIT;
-+ jz4740_ep0_in(dev, csr);
-+ } else {
-+ csr = usb_readb(dev, JZ_REG_UDC_CSR0);
-+ dev->ep0state = DATA_STATE_RECV;
-+ jz4740_ep0_out(dev, csr, 1);
-+ }
-+}
-+
-+/** Handle USB RESET interrupt
-+ */
-+static void jz4740_reset_irq(struct jz4740_udc *dev)
-+{
-+ dev->gadget.speed = (usb_readb(dev, JZ_REG_UDC_POWER) & USB_POWER_HSMODE) ?
-+ USB_SPEED_HIGH : USB_SPEED_FULL;
-+
-+ DEBUG_SETUP("%s: address = %d, speed = %s\n", __FUNCTION__, dev->usb_address,
-+ (dev->gadget.speed == USB_SPEED_HIGH) ? "HIGH":"FULL" );
-+}
-+
-+/*
-+ * jz4740 usb device interrupt handler.
-+ */
-+static irqreturn_t jz4740_udc_irq(int irq, void *_dev)
-+{
-+ struct jz4740_udc *dev = _dev;
-+ uint8_t index;
-+
-+ uint32_t intr_usb = usb_readb(dev, JZ_REG_UDC_INTRUSB) & 0x7; /* mask SOF */
-+ uint32_t intr_in = usb_readw(dev, JZ_REG_UDC_INTRIN);
-+ uint32_t intr_out = usb_readw(dev, JZ_REG_UDC_INTROUT);
-+ uint32_t intr_dma = usb_readb(dev, JZ_REG_UDC_INTR);
-+
-+ if (!intr_usb && !intr_in && !intr_out && !intr_dma)
-+ return IRQ_HANDLED;
-+
-+
-+ DEBUG("intr_out=%x intr_in=%x intr_usb=%x\n",
-+ intr_out, intr_in, intr_usb);
-+
-+ spin_lock(&dev->lock);
-+ index = usb_readb(dev, JZ_REG_UDC_INDEX);
-+
-+ /* Check for resume from suspend mode */
-+ if ((intr_usb & USB_INTR_RESUME) &&
-+ (usb_readb(dev, JZ_REG_UDC_INTRUSBE) & USB_INTR_RESUME)) {
-+ DEBUG("USB resume\n");
-+ dev->driver->resume(&dev->gadget); /* We have suspend(), so we must have resume() too. */
-+ }
-+
-+ /* Check for system interrupts */
-+ if (intr_usb & USB_INTR_RESET) {
-+ DEBUG("USB reset\n");
-+ jz4740_reset_irq(dev);
-+ }
-+
-+ /* Check for endpoint 0 interrupt */
-+ if (intr_in & USB_INTR_EP0) {
-+ DEBUG("USB_INTR_EP0 (control)\n");
-+ jz4740_handle_ep0(dev, intr_in);
-+ }
-+
-+ /* Check for Bulk-IN DMA interrupt */
-+ if (intr_dma & 0x1) {
-+ int ep_num;
-+ struct jz4740_ep *ep;
-+ ep_num = (usb_readl(dev, JZ_REG_UDC_CNTL1) >> 4) & 0xf;
-+ ep = &dev->ep[ep_num + 1];
-+ jz_udc_set_index(dev, ep_num);
-+ usb_setb(dev, ep->csr, USB_INCSR_INPKTRDY);
-+/* jz4740_in_epn(dev, ep_num, intr_in);*/
-+ }
-+
-+ /* Check for Bulk-OUT DMA interrupt */
-+ if (intr_dma & 0x2) {
-+ int ep_num;
-+ ep_num = (usb_readl(dev, JZ_REG_UDC_CNTL2) >> 4) & 0xf;
-+ jz4740_out_epn(dev, ep_num, intr_out);
-+ }
-+
-+ /* Check for each configured endpoint interrupt */
-+ if (intr_in & USB_INTR_INEP1) {
-+ DEBUG("USB_INTR_INEP1\n");
-+ jz4740_in_epn(dev, 1, intr_in);
-+ }
-+
-+ if (intr_in & USB_INTR_INEP2) {
-+ DEBUG("USB_INTR_INEP2\n");
-+ jz4740_in_epn(dev, 2, intr_in);
-+ }
-+
-+ if (intr_out & USB_INTR_OUTEP1) {
-+ DEBUG("USB_INTR_OUTEP1\n");
-+ jz4740_out_epn(dev, 1, intr_out);
-+ }
-+
-+ /* Check for suspend mode */
-+ if ((intr_usb & USB_INTR_SUSPEND) &&
-+ (usb_readb(dev, JZ_REG_UDC_INTRUSBE) & USB_INTR_SUSPEND)) {
-+ DEBUG("USB suspend\n");
-+ dev->driver->suspend(&dev->gadget);
-+ /* Host unloaded from us, can do something, such as flushing
-+ the NAND block cache etc. */
-+ }
-+
-+ jz_udc_set_index(dev, index);
-+
-+ spin_unlock(&dev->lock);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/* Common functions - Added by River */
-+static struct jz4740_udc udc_dev;
-+
-+static inline struct jz4740_udc *gadget_to_udc(struct usb_gadget *gadget)
-+{
-+ return container_of(gadget, struct jz4740_udc, gadget);
-+}
-+/* End added */
-+
-+static int jz4740_udc_get_frame(struct usb_gadget *_gadget)
-+{
-+ DEBUG("%s, %p\n", __FUNCTION__, _gadget);
-+ return usb_readw(gadget_to_udc(_gadget), JZ_REG_UDC_FRAME);
-+}
-+
-+static int jz4740_udc_wakeup(struct usb_gadget *_gadget)
-+{
-+ /* host may not have enabled remote wakeup */
-+ /*if ((UDCCS0 & UDCCS0_DRWF) == 0)
-+ return -EHOSTUNREACH;
-+ udc_set_mask_UDCCR(UDCCR_RSM); */
-+ return -ENOTSUPP;
-+}
-+
-+static int jz4740_udc_pullup(struct usb_gadget *_gadget, int on)
-+{
-+ struct jz4740_udc *udc = gadget_to_udc(_gadget);
-+ unsigned long flags;
-+
-+ local_irq_save(flags);
-+
-+ if (on) {
-+ udc->state = UDC_STATE_ENABLE;
-+ udc_enable(udc);
-+ } else {
-+ udc->state = UDC_STATE_DISABLE;
-+ udc_disable(udc);
-+ }
-+
-+ local_irq_restore(flags);
-+
-+ return 0;
-+}
-+
-+
-+static const struct usb_gadget_ops jz4740_udc_ops = {
-+ .get_frame = jz4740_udc_get_frame,
-+ .wakeup = jz4740_udc_wakeup,
-+ .pullup = jz4740_udc_pullup,
-+ /* current versions must always be self-powered */
-+};
-+
-+static struct usb_ep_ops jz4740_ep_ops = {
-+ .enable = jz4740_ep_enable,
-+ .disable = jz4740_ep_disable,
-+
-+ .alloc_request = jz4740_alloc_request,
-+ .free_request = jz4740_free_request,
-+
-+ .queue = jz4740_queue,
-+ .dequeue = jz4740_dequeue,
-+
-+ .set_halt = jz4740_set_halt,
-+ .fifo_status = jz4740_fifo_status,
-+ .fifo_flush = jz4740_fifo_flush,
-+};
-+
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static struct jz4740_udc udc_dev = {
-+ .usb_address = 0,
-+ .gadget = {
-+ .ops = &jz4740_udc_ops,
-+ .ep0 = &udc_dev.ep[0].ep,
-+ .name = "jz-udc",
-+ .dev = {
-+ .init_name = "gadget",
-+ },
-+ },
-+
-+ /* control endpoint */
-+ .ep[0] = {
-+ .ep = {
-+ .name = "ep0",
-+ .ops = &jz4740_ep_ops,
-+ .maxpacket = EP0_MAXPACKETSIZE,
-+ },
-+ .dev = &udc_dev,
-+
-+ .bEndpointAddress = 0,
-+ .bmAttributes = 0,
-+
-+ .type = ep_control,
-+ .fifo = JZ_REG_UDC_EP_FIFO(0),
-+ .csr = JZ_REG_UDC_CSR0,
-+ },
-+
-+ /* bulk out endpoint */
-+ .ep[1] = {
-+ .ep = {
-+ .name = "ep1out-bulk",
-+ .ops = &jz4740_ep_ops,
-+ .maxpacket = EPBULK_MAXPACKETSIZE,
-+ },
-+ .dev = &udc_dev,
-+
-+ .bEndpointAddress = 1,
-+ .bmAttributes = USB_ENDPOINT_XFER_BULK,
-+
-+ .type = ep_bulk_out,
-+ .fifo = JZ_REG_UDC_EP_FIFO(1),
-+ .csr = JZ_REG_UDC_OUTCSR,
-+ },
-+
-+ /* bulk in endpoint */
-+ .ep[2] = {
-+ .ep = {
-+ .name = "ep1in-bulk",
-+ .ops = &jz4740_ep_ops,
-+ .maxpacket = EPBULK_MAXPACKETSIZE,
-+ },
-+ .dev = &udc_dev,
-+
-+ .bEndpointAddress = 1 | USB_DIR_IN,
-+ .bmAttributes = USB_ENDPOINT_XFER_BULK,
-+
-+ .type = ep_bulk_in,
-+ .fifo = JZ_REG_UDC_EP_FIFO(1),
-+ .csr = JZ_REG_UDC_INCSR,
-+ },
-+
-+ /* interrupt in endpoint */
-+ .ep[3] = {
-+ .ep = {
-+ .name = "ep2in-int",
-+ .ops = &jz4740_ep_ops,
-+ .maxpacket = EPINTR_MAXPACKETSIZE,
-+ },
-+ .dev = &udc_dev,
-+
-+ .bEndpointAddress = 2 | USB_DIR_IN,
-+ .bmAttributes = USB_ENDPOINT_XFER_INT,
-+
-+ .type = ep_interrupt,
-+ .fifo = JZ_REG_UDC_EP_FIFO(2),
-+ .csr = JZ_REG_UDC_INCSR,
-+ },
-+};
-+
-+static void gadget_release(struct device *_dev)
-+{
-+}
-+
-+
-+static int __devinit jz4740_udc_probe(struct platform_device *pdev)
-+{
-+ struct jz4740_udc *dev = &udc_dev;
-+ int ret;
-+
-+ spin_lock_init(&dev->lock);
-+ the_controller = dev;
-+
-+ dev->dev = &pdev->dev;
-+ dev_set_name(&dev->gadget.dev, "gadget");
-+ dev->gadget.dev.parent = &pdev->dev;
-+ dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
-+ dev->gadget.dev.release = gadget_release;
-+
-+ ret = device_register(&dev->gadget.dev);
-+ if (ret)
-+ return ret;
-+
-+ dev->clk = clk_get(&pdev->dev, "udc");
-+ if (IS_ERR(dev->clk)) {
-+ ret = PTR_ERR(dev->clk);
-+ dev_err(&pdev->dev, "Failed to get udc clock: %d\n", ret);
-+ goto err_device_unregister;
-+ }
-+
-+ platform_set_drvdata(pdev, dev);
-+
-+ dev->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+
-+ if (!dev->mem) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get mmio memory resource\n");
-+ goto err_clk_put;
-+ }
-+
-+ dev->mem = request_mem_region(dev->mem->start, resource_size(dev->mem), pdev->name);
-+
-+ if (!dev->mem) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to request mmio memory region\n");
-+ goto err_device_unregister;
-+ }
-+
-+ dev->base = ioremap(dev->mem->start, resource_size(dev->mem));
-+
-+ if (!dev->base) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to ioremap mmio memory\n");
-+ goto err_release_mem_region;
-+ }
-+
-+ dev->irq = platform_get_irq(pdev, 0);
-+
-+ ret = request_irq(dev->irq, jz4740_udc_irq, IRQF_DISABLED,
-+ pdev->name, dev);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request irq: %d\n", ret);
-+ goto err_iounmap;
-+ }
-+
-+ udc_disable(dev);
-+ udc_reinit(dev);
-+
-+ return 0;
-+
-+err_iounmap:
-+ iounmap(dev->base);
-+err_release_mem_region:
-+ release_mem_region(dev->mem->start, resource_size(dev->mem));
-+err_clk_put:
-+ clk_put(dev->clk);
-+err_device_unregister:
-+ device_unregister(&dev->gadget.dev);
-+ platform_set_drvdata(pdev, NULL);
-+
-+ the_controller = 0;
-+
-+ return ret;
-+}
-+
-+static int __devexit jz4740_udc_remove(struct platform_device *pdev)
-+{
-+ struct jz4740_udc *dev = platform_get_drvdata(pdev);
-+
-+ if (dev->driver)
-+ return -EBUSY;
-+
-+ udc_disable(dev);
-+
-+ free_irq(dev->irq, dev);
-+ iounmap(dev->base);
-+ release_mem_region(dev->mem->start, resource_size(dev->mem));
-+ clk_put(dev->clk);
-+
-+ platform_set_drvdata(pdev, NULL);
-+ device_unregister(&dev->gadget.dev);
-+ the_controller = NULL;
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+
-+static int jz4740_udc_suspend(struct device *dev)
-+{
-+ struct jz4740_udc *udc = dev_get_drvdata(dev);
-+
-+ if (udc->state == UDC_STATE_ENABLE)
-+ udc_disable(udc);
-+
-+ return 0;
-+}
-+
-+static int jz4740_udc_resume(struct device *dev)
-+{
-+ struct jz4740_udc *udc = dev_get_drvdata(dev);
-+
-+ if (udc->state == UDC_STATE_ENABLE)
-+ udc_enable(udc);
-+
-+ return 0;
-+}
-+
-+static struct dev_pm_ops jz4740_udc_pm_ops = {
-+ .suspend = jz4740_udc_suspend,
-+ .resume = jz4740_udc_resume,
-+};
-+
-+#define JZ4740_UDC_PM_OPS (&jz4740_udc_pm_ops)
-+
-+#else
-+
-+#define JZ4740_UDC_PM_OPS NULL
-+
-+#endif
-+
-+static struct platform_driver udc_driver = {
-+ .probe = jz4740_udc_probe,
-+ .remove = __devexit_p(jz4740_udc_remove),
-+ .driver = {
-+ .name = "jz-udc",
-+ .owner = THIS_MODULE,
-+ .pm = JZ4740_UDC_PM_OPS,
-+ },
-+};
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static int __init udc_init (void)
-+{
-+ 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("JZ4740 USB Device Controller");
-+MODULE_AUTHOR("Wei Jianli <jlwei@ingenic.cn>");
-+MODULE_LICENSE("GPL");
---- /dev/null
-+++ b/drivers/usb/gadget/jz4740_udc.h
-@@ -0,0 +1,100 @@
-+/*
-+ * linux/drivers/usb/gadget/jz4740_udc.h
-+ *
-+ * Ingenic JZ4740 on-chip high speed USB device controller
-+ *
-+ * Copyright (C) 2006 Ingenic Semiconductor Inc.
-+ * Author: <jlwei@ingenic.cn>
-+ *
-+ * 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 __USB_GADGET_JZ4740_H__
-+#define __USB_GADGET_JZ4740_H__
-+
-+/*-------------------------------------------------------------------------*/
-+
-+// Max packet size
-+#define EP0_MAXPACKETSIZE 64
-+#define EPBULK_MAXPACKETSIZE 512
-+#define EPINTR_MAXPACKETSIZE 64
-+
-+#define UDC_MAX_ENDPOINTS 4
-+
-+/*-------------------------------------------------------------------------*/
-+
-+typedef enum ep_type {
-+ ep_control, ep_bulk_in, ep_bulk_out, ep_interrupt
-+} ep_type_t;
-+
-+struct jz4740_ep {
-+ struct usb_ep ep;
-+ struct jz4740_udc *dev;
-+
-+ const struct usb_endpoint_descriptor *desc;
-+ unsigned long pio_irqs;
-+
-+ uint8_t stopped;
-+ uint8_t bEndpointAddress;
-+ uint8_t bmAttributes;
-+
-+ ep_type_t type;
-+ size_t fifo;
-+ u32 csr;
-+
-+ uint32_t reg_addr;
-+ struct list_head queue;
-+};
-+
-+struct jz4740_request {
-+ struct usb_request req;
-+ struct list_head queue;
-+};
-+
-+enum ep0state {
-+ WAIT_FOR_SETUP, /* between STATUS ack and SETUP report */
-+ DATA_STATE_XMIT, /* data tx stage */
-+ DATA_STATE_NEED_ZLP, /* data tx zlp stage */
-+ WAIT_FOR_OUT_STATUS, /* status stages */
-+ DATA_STATE_RECV, /* data rx stage */
-+};
-+
-+/* For function binding with UDC Disable - Added by River */
-+typedef enum {
-+ UDC_STATE_ENABLE = 0,
-+ UDC_STATE_DISABLE,
-+}udc_state_t;
-+
-+struct jz4740_udc {
-+ struct usb_gadget gadget;
-+ struct usb_gadget_driver *driver;
-+ struct device *dev;
-+ spinlock_t lock;
-+ unsigned long lock_flags;
-+
-+ enum ep0state ep0state;
-+ struct jz4740_ep ep[UDC_MAX_ENDPOINTS];
-+
-+ unsigned char usb_address;
-+
-+ udc_state_t state;
-+
-+ struct resource *mem;
-+ void __iomem *base;
-+ int irq;
-+ uint32_t in_mask;
-+ uint32_t out_mask;
-+
-+ struct clk *clk;
-+};
-+
-+extern struct jz4740_udc *the_controller;
-+
-+#define ep_is_in(EP) (((EP)->bEndpointAddress&USB_DIR_IN)==USB_DIR_IN)
-+#define ep_maxpacket(EP) ((EP)->ep.maxpacket)
-+#define ep_index(EP) ((EP)->bEndpointAddress&0xF)
-+
-+#endif /* __USB_GADGET_JZ4740_H__ */
diff --git a/target/linux/xburst/patches-2.6.35/057-hwmon.patch b/target/linux/xburst/patches-2.6.35/057-hwmon.patch
deleted file mode 100644
index e17758d260..0000000000
--- a/target/linux/xburst/patches-2.6.35/057-hwmon.patch
+++ /dev/null
@@ -1,283 +0,0 @@
-From 548ab33dc0bd3c824e6002936ae0931158658a19 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 19 Jun 2010 18:32:58 +0000
-Subject: [PATCH] HWMON: Add JZ4740 ADC driver
-
-Add support for reading the ADCIN pin of the ADC unit on JZ4740 SoCs.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Cc: lm-sensors@lm-sensors.org
-Acked-by: Jean Delvare <khali@linux-fr.org>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1425/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- drivers/hwmon/Kconfig | 10 ++
- drivers/hwmon/Makefile | 1 +
- drivers/hwmon/jz4740-hwmon.c | 230 ++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 241 insertions(+), 0 deletions(-)
- create mode 100644 drivers/hwmon/jz4740-hwmon.c
-
---- a/drivers/hwmon/Kconfig
-+++ b/drivers/hwmon/Kconfig
-@@ -446,6 +446,16 @@ config SENSORS_IT87
- This driver can also be built as a module. If so, the module
- will be called it87.
-
-+config SENSORS_JZ4740
-+ tristate "Ingenic JZ4740 SoC ADC driver"
-+ depends on MACH_JZ4740 && MFD_JZ4740_ADC
-+ help
-+ If you say yes here you get support for reading adc values from the ADCIN
-+ pin on Ingenic JZ4740 SoC based boards.
-+
-+ This driver can also be build as a module. If so, the module will be
-+ called jz4740-hwmon.
-+
- config SENSORS_LM63
- tristate "National Semiconductor LM63 and LM64"
- depends on I2C
---- a/drivers/hwmon/Makefile
-+++ b/drivers/hwmon/Makefile
-@@ -55,6 +55,7 @@ obj-$(CONFIG_SENSORS_I5K_AMB) += i5k_amb
- obj-$(CONFIG_SENSORS_IBMAEM) += ibmaem.o
- obj-$(CONFIG_SENSORS_IBMPEX) += ibmpex.o
- obj-$(CONFIG_SENSORS_IT87) += it87.o
-+obj-$(CONFIG_SENSORS_JZ4740) += jz4740-hwmon.o
- obj-$(CONFIG_SENSORS_K8TEMP) += k8temp.o
- obj-$(CONFIG_SENSORS_K10TEMP) += k10temp.o
- obj-$(CONFIG_SENSORS_LIS3LV02D) += lis3lv02d.o hp_accel.o
---- /dev/null
-+++ b/drivers/hwmon/jz4740-hwmon.c
-@@ -0,0 +1,230 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * JZ4740 SoC HWMON driver
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/err.h>
-+#include <linux/interrupt.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/mutex.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+
-+#include <linux/completion.h>
-+#include <linux/mfd/core.h>
-+
-+#include <linux/hwmon.h>
-+
-+struct jz4740_hwmon {
-+ struct resource *mem;
-+ void __iomem *base;
-+
-+ int irq;
-+
-+ struct mfd_cell *cell;
-+ struct device *hwmon;
-+
-+ struct completion read_completion;
-+
-+ struct mutex lock;
-+};
-+
-+static ssize_t jz4740_hwmon_show_name(struct device *dev,
-+ struct device_attribute *dev_attr, char *buf)
-+{
-+ return sprintf(buf, "jz4740\n");
-+}
-+
-+static irqreturn_t jz4740_hwmon_irq(int irq, void *data)
-+{
-+ struct jz4740_hwmon *hwmon = data;
-+
-+ complete(&hwmon->read_completion);
-+ return IRQ_HANDLED;
-+}
-+
-+static ssize_t jz4740_hwmon_read_adcin(struct device *dev,
-+ struct device_attribute *dev_attr, char *buf)
-+{
-+ struct jz4740_hwmon *hwmon = dev_get_drvdata(dev);
-+ struct completion *completion = &hwmon->read_completion;
-+ unsigned long t;
-+ unsigned long val;
-+ int ret;
-+
-+ mutex_lock(&hwmon->lock);
-+
-+ INIT_COMPLETION(*completion);
-+
-+ enable_irq(hwmon->irq);
-+ hwmon->cell->enable(to_platform_device(dev));
-+
-+ t = wait_for_completion_interruptible_timeout(completion, HZ);
-+
-+ if (t > 0) {
-+ val = readw(hwmon->base) & 0xfff;
-+ val = (val * 3300) >> 12;
-+ ret = sprintf(buf, "%lu\n", val);
-+ } else {
-+ ret = t ? t : -ETIMEDOUT;
-+ }
-+
-+ hwmon->cell->disable(to_platform_device(dev));
-+ disable_irq(hwmon->irq);
-+
-+ mutex_unlock(&hwmon->lock);
-+
-+ return ret;
-+}
-+
-+static DEVICE_ATTR(name, S_IRUGO, jz4740_hwmon_show_name, NULL);
-+static DEVICE_ATTR(in0_input, S_IRUGO, jz4740_hwmon_read_adcin, NULL);
-+
-+static struct attribute *jz4740_hwmon_attributes[] = {
-+ &dev_attr_name.attr,
-+ &dev_attr_in0_input.attr,
-+ NULL
-+};
-+
-+static const struct attribute_group jz4740_hwmon_attr_group = {
-+ .attrs = jz4740_hwmon_attributes,
-+};
-+
-+static int __devinit jz4740_hwmon_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jz4740_hwmon *hwmon;
-+
-+ hwmon = kmalloc(sizeof(*hwmon), GFP_KERNEL);
-+ if (!hwmon) {
-+ dev_err(&pdev->dev, "Failed to allocate driver structure\n");
-+ return -ENOMEM;
-+ }
-+
-+ hwmon->cell = pdev->dev.platform_data;
-+
-+ hwmon->irq = platform_get_irq(pdev, 0);
-+ if (hwmon->irq < 0) {
-+ ret = hwmon->irq;
-+ dev_err(&pdev->dev, "Failed to get platform irq: %d\n", ret);
-+ goto err_free;
-+ }
-+
-+ hwmon->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!hwmon->mem) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get platform mmio resource\n");
-+ goto err_free;
-+ }
-+
-+ hwmon->mem = request_mem_region(hwmon->mem->start,
-+ resource_size(hwmon->mem), pdev->name);
-+ if (!hwmon->mem) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to request mmio memory region\n");
-+ goto err_free;
-+ }
-+
-+ hwmon->base = ioremap_nocache(hwmon->mem->start,
-+ resource_size(hwmon->mem));
-+ if (!hwmon->base) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to ioremap mmio memory\n");
-+ goto err_release_mem_region;
-+ }
-+
-+ init_completion(&hwmon->read_completion);
-+ mutex_init(&hwmon->lock);
-+
-+ platform_set_drvdata(pdev, hwmon);
-+
-+ ret = request_irq(hwmon->irq, jz4740_hwmon_irq, 0, pdev->name, hwmon);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request irq: %d\n", ret);
-+ goto err_iounmap;
-+ }
-+ disable_irq(hwmon->irq);
-+
-+ ret = sysfs_create_group(&pdev->dev.kobj, &jz4740_hwmon_attr_group);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to create sysfs group: %d\n", ret);
-+ goto err_free_irq;
-+ }
-+
-+ hwmon->hwmon = hwmon_device_register(&pdev->dev);
-+ if (IS_ERR(hwmon->hwmon)) {
-+ ret = PTR_ERR(hwmon->hwmon);
-+ goto err_remove_file;
-+ }
-+
-+ return 0;
-+
-+err_remove_file:
-+ sysfs_remove_group(&pdev->dev.kobj, &jz4740_hwmon_attr_group);
-+err_free_irq:
-+ free_irq(hwmon->irq, hwmon);
-+err_iounmap:
-+ platform_set_drvdata(pdev, NULL);
-+ iounmap(hwmon->base);
-+err_release_mem_region:
-+ release_mem_region(hwmon->mem->start, resource_size(hwmon->mem));
-+err_free:
-+ kfree(hwmon);
-+
-+ return ret;
-+}
-+
-+static int __devexit jz4740_hwmon_remove(struct platform_device *pdev)
-+{
-+ struct jz4740_hwmon *hwmon = platform_get_drvdata(pdev);
-+
-+ hwmon_device_unregister(hwmon->hwmon);
-+ sysfs_remove_group(&pdev->dev.kobj, &jz4740_hwmon_attr_group);
-+
-+ free_irq(hwmon->irq, hwmon);
-+
-+ iounmap(hwmon->base);
-+ release_mem_region(hwmon->mem->start, resource_size(hwmon->mem));
-+
-+ platform_set_drvdata(pdev, NULL);
-+ kfree(hwmon);
-+
-+ return 0;
-+}
-+
-+struct platform_driver jz4740_hwmon_driver = {
-+ .probe = jz4740_hwmon_probe,
-+ .remove = __devexit_p(jz4740_hwmon_remove),
-+ .driver = {
-+ .name = "jz4740-hwmon",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init jz4740_hwmon_init(void)
-+{
-+ return platform_driver_register(&jz4740_hwmon_driver);
-+}
-+module_init(jz4740_hwmon_init);
-+
-+static void __exit jz4740_hwmon_exit(void)
-+{
-+ platform_driver_unregister(&jz4740_hwmon_driver);
-+}
-+module_exit(jz4740_hwmon_exit);
-+
-+MODULE_DESCRIPTION("JZ4740 SoC HWMON driver");
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:jz4740-hwmon");
diff --git a/target/linux/xburst/patches-2.6.35/058-battery.patch b/target/linux/xburst/patches-2.6.35/058-battery.patch
deleted file mode 100644
index ce3c04ef2c..0000000000
--- a/target/linux/xburst/patches-2.6.35/058-battery.patch
+++ /dev/null
@@ -1,522 +0,0 @@
-From a48343043ec8d4095512e9758308ba4c4422151f Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 19 Jun 2010 04:08:29 +0000
-Subject: [PATCH] POWER: Add JZ4740 battery driver.
-
-Add support for the battery voltage measurement part of the JZ4740 ADC unit.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Acked-by: Anton Vorontsov <cbouatmailru@gmail.com>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/1416/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- drivers/power/Kconfig | 11 +
- drivers/power/Makefile | 1 +
- drivers/power/jz4740-battery.c | 445 ++++++++++++++++++++++++++++++++++
- include/linux/power/jz4740-battery.h | 24 ++
- 4 files changed, 481 insertions(+), 0 deletions(-)
- create mode 100644 drivers/power/jz4740-battery.c
- create mode 100644 include/linux/power/jz4740-battery.h
-
---- a/drivers/power/Kconfig
-+++ b/drivers/power/Kconfig
-@@ -142,4 +142,15 @@ config CHARGER_PCF50633
- help
- Say Y to include support for NXP PCF50633 Main Battery Charger.
-
-+config BATTERY_JZ4740
-+ tristate "Ingenic JZ4740 battery"
-+ depends on MACH_JZ4740
-+ depends on MFD_JZ4740_ADC
-+ help
-+ Say Y to enable support for the battery on Ingenic JZ4740 based
-+ boards.
-+
-+ This driver can be build as a module. If so, the module will be
-+ called jz4740-battery.
-+
- endif # POWER_SUPPLY
---- a/drivers/power/Makefile
-+++ b/drivers/power/Makefile
-@@ -34,3 +34,4 @@ obj-$(CONFIG_BATTERY_DA9030) += da9030_b
- obj-$(CONFIG_BATTERY_MAX17040) += max17040_battery.o
- obj-$(CONFIG_BATTERY_Z2) += z2_battery.o
- obj-$(CONFIG_CHARGER_PCF50633) += pcf50633-charger.o
-+obj-$(CONFIG_BATTERY_JZ4740) += jz4740-battery.o
---- /dev/null
-+++ b/drivers/power/jz4740-battery.c
-@@ -0,0 +1,445 @@
-+/*
-+ * Battery measurement code for Ingenic JZ SOC.
-+ *
-+ * Copyright (C) 2009 Jiejing Zhang <kzjeef@gmail.com>
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ *
-+ * based on tosa_battery.c
-+ *
-+ * Copyright (C) 2008 Marek Vasut <marek.vasut@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/interrupt.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+
-+#include <linux/delay.h>
-+#include <linux/gpio.h>
-+#include <linux/mfd/core.h>
-+#include <linux/power_supply.h>
-+
-+#include <linux/power/jz4740-battery.h>
-+#include <linux/jz4740-adc.h>
-+
-+struct jz_battery {
-+ struct jz_battery_platform_data *pdata;
-+ struct platform_device *pdev;
-+
-+ struct resource *mem;
-+ void __iomem *base;
-+
-+ int irq;
-+ int charge_irq;
-+
-+ struct mfd_cell *cell;
-+
-+ int status;
-+ long voltage;
-+
-+ struct completion read_completion;
-+
-+ struct power_supply battery;
-+ struct delayed_work work;
-+};
-+
-+static inline struct jz_battery *psy_to_jz_battery(struct power_supply *psy)
-+{
-+ return container_of(psy, struct jz_battery, battery);
-+}
-+
-+static irqreturn_t jz_battery_irq_handler(int irq, void *devid)
-+{
-+ struct jz_battery *battery = devid;
-+
-+ complete(&battery->read_completion);
-+ return IRQ_HANDLED;
-+}
-+
-+static long jz_battery_read_voltage(struct jz_battery *battery)
-+{
-+ unsigned long t;
-+ unsigned long val;
-+ long voltage;
-+
-+ INIT_COMPLETION(battery->read_completion);
-+
-+ enable_irq(battery->irq);
-+ battery->cell->enable(battery->pdev);
-+
-+ t = wait_for_completion_interruptible_timeout(&battery->read_completion,
-+ HZ);
-+
-+ if (t > 0) {
-+ val = readw(battery->base) & 0xfff;
-+
-+ if (battery->pdata->info.voltage_max_design <= 2500000)
-+ val = (val * 78125UL) >> 7UL;
-+ else
-+ val = ((val * 924375UL) >> 9UL) + 33000;
-+ voltage = (long)val;
-+ } else {
-+ voltage = t ? t : -ETIMEDOUT;
-+ }
-+
-+ battery->cell->disable(battery->pdev);
-+ disable_irq(battery->irq);
-+
-+ return voltage;
-+}
-+
-+static int jz_battery_get_capacity(struct power_supply *psy)
-+{
-+ struct jz_battery *jz_battery = psy_to_jz_battery(psy);
-+ struct power_supply_info *info = &jz_battery->pdata->info;
-+ long voltage;
-+ int ret;
-+ int voltage_span;
-+
-+ voltage = jz_battery_read_voltage(jz_battery);
-+
-+ if (voltage < 0)
-+ return voltage;
-+
-+ voltage_span = info->voltage_max_design - info->voltage_min_design;
-+ ret = ((voltage - info->voltage_min_design) * 100) / voltage_span;
-+
-+ if (ret > 100)
-+ ret = 100;
-+ else if (ret < 0)
-+ ret = 0;
-+
-+ return ret;
-+}
-+
-+static int jz_battery_get_property(struct power_supply *psy,
-+ enum power_supply_property psp, union power_supply_propval *val)
-+{
-+ struct jz_battery *jz_battery = psy_to_jz_battery(psy);
-+ struct power_supply_info *info = &jz_battery->pdata->info;
-+ long voltage;
-+
-+ switch (psp) {
-+ case POWER_SUPPLY_PROP_STATUS:
-+ val->intval = jz_battery->status;
-+ break;
-+ case POWER_SUPPLY_PROP_TECHNOLOGY:
-+ val->intval = jz_battery->pdata->info.technology;
-+ break;
-+ case POWER_SUPPLY_PROP_HEALTH:
-+ voltage = jz_battery_read_voltage(jz_battery);
-+ if (voltage < info->voltage_min_design)
-+ val->intval = POWER_SUPPLY_HEALTH_DEAD;
-+ else
-+ val->intval = POWER_SUPPLY_HEALTH_GOOD;
-+ break;
-+ case POWER_SUPPLY_PROP_CAPACITY:
-+ val->intval = jz_battery_get_capacity(psy);
-+ break;
-+ case POWER_SUPPLY_PROP_VOLTAGE_NOW:
-+ val->intval = jz_battery_read_voltage(jz_battery);
-+ if (val->intval < 0)
-+ return val->intval;
-+ break;
-+ case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
-+ val->intval = info->voltage_max_design;
-+ break;
-+ case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
-+ val->intval = info->voltage_min_design;
-+ break;
-+ case POWER_SUPPLY_PROP_PRESENT:
-+ val->intval = 1;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+ return 0;
-+}
-+
-+static void jz_battery_external_power_changed(struct power_supply *psy)
-+{
-+ struct jz_battery *jz_battery = psy_to_jz_battery(psy);
-+
-+ cancel_delayed_work(&jz_battery->work);
-+ schedule_delayed_work(&jz_battery->work, 0);
-+}
-+
-+static irqreturn_t jz_battery_charge_irq(int irq, void *data)
-+{
-+ struct jz_battery *jz_battery = data;
-+
-+ cancel_delayed_work(&jz_battery->work);
-+ schedule_delayed_work(&jz_battery->work, 0);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void jz_battery_update(struct jz_battery *jz_battery)
-+{
-+ int status;
-+ long voltage;
-+ bool has_changed = false;
-+ int is_charging;
-+
-+ if (gpio_is_valid(jz_battery->pdata->gpio_charge)) {
-+ is_charging = gpio_get_value(jz_battery->pdata->gpio_charge);
-+ is_charging ^= jz_battery->pdata->gpio_charge_active_low;
-+ if (is_charging)
-+ status = POWER_SUPPLY_STATUS_CHARGING;
-+ else
-+ status = POWER_SUPPLY_STATUS_NOT_CHARGING;
-+
-+ if (status != jz_battery->status) {
-+ jz_battery->status = status;
-+ has_changed = true;
-+ }
-+ }
-+
-+ voltage = jz_battery_read_voltage(jz_battery);
-+ if (abs(voltage - jz_battery->voltage) < 50000) {
-+ jz_battery->voltage = voltage;
-+ has_changed = true;
-+ }
-+
-+ if (has_changed)
-+ power_supply_changed(&jz_battery->battery);
-+}
-+
-+static enum power_supply_property jz_battery_properties[] = {
-+ POWER_SUPPLY_PROP_STATUS,
-+ POWER_SUPPLY_PROP_TECHNOLOGY,
-+ POWER_SUPPLY_PROP_HEALTH,
-+ POWER_SUPPLY_PROP_CAPACITY,
-+ POWER_SUPPLY_PROP_VOLTAGE_NOW,
-+ POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN,
-+ POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
-+ POWER_SUPPLY_PROP_PRESENT,
-+};
-+
-+static void jz_battery_work(struct work_struct *work)
-+{
-+ /* Too small interval will increase system workload */
-+ const int interval = HZ * 30;
-+ struct jz_battery *jz_battery = container_of(work, struct jz_battery,
-+ work.work);
-+
-+ jz_battery_update(jz_battery);
-+ schedule_delayed_work(&jz_battery->work, interval);
-+}
-+
-+static int __devinit jz_battery_probe(struct platform_device *pdev)
-+{
-+ int ret = 0;
-+ struct jz_battery_platform_data *pdata = pdev->dev.parent->platform_data;
-+ struct jz_battery *jz_battery;
-+ struct power_supply *battery;
-+
-+ jz_battery = kzalloc(sizeof(*jz_battery), GFP_KERNEL);
-+ if (!jz_battery) {
-+ dev_err(&pdev->dev, "Failed to allocate driver structure\n");
-+ return -ENOMEM;
-+ }
-+
-+ jz_battery->cell = pdev->dev.platform_data;
-+
-+ jz_battery->irq = platform_get_irq(pdev, 0);
-+ if (jz_battery->irq < 0) {
-+ ret = jz_battery->irq;
-+ dev_err(&pdev->dev, "Failed to get platform irq: %d\n", ret);
-+ goto err_free;
-+ }
-+
-+ jz_battery->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!jz_battery->mem) {
-+ ret = -ENOENT;
-+ dev_err(&pdev->dev, "Failed to get platform mmio resource\n");
-+ goto err_free;
-+ }
-+
-+ jz_battery->mem = request_mem_region(jz_battery->mem->start,
-+ resource_size(jz_battery->mem), pdev->name);
-+ if (!jz_battery->mem) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to request mmio memory region\n");
-+ goto err_free;
-+ }
-+
-+ jz_battery->base = ioremap_nocache(jz_battery->mem->start,
-+ resource_size(jz_battery->mem));
-+ if (!jz_battery->base) {
-+ ret = -EBUSY;
-+ dev_err(&pdev->dev, "Failed to ioremap mmio memory\n");
-+ goto err_release_mem_region;
-+ }
-+
-+ battery = &jz_battery->battery;
-+ battery->name = pdata->info.name;
-+ battery->type = POWER_SUPPLY_TYPE_BATTERY;
-+ battery->properties = jz_battery_properties;
-+ battery->num_properties = ARRAY_SIZE(jz_battery_properties);
-+ battery->get_property = jz_battery_get_property;
-+ battery->external_power_changed = jz_battery_external_power_changed;
-+ battery->use_for_apm = 1;
-+
-+ jz_battery->pdata = pdata;
-+ jz_battery->pdev = pdev;
-+
-+ init_completion(&jz_battery->read_completion);
-+
-+ INIT_DELAYED_WORK(&jz_battery->work, jz_battery_work);
-+
-+ ret = request_irq(jz_battery->irq, jz_battery_irq_handler, 0, pdev->name,
-+ jz_battery);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request irq %d\n", ret);
-+ goto err_iounmap;
-+ }
-+ disable_irq(jz_battery->irq);
-+
-+ if (gpio_is_valid(pdata->gpio_charge)) {
-+ ret = gpio_request(pdata->gpio_charge, dev_name(&pdev->dev));
-+ if (ret) {
-+ dev_err(&pdev->dev, "charger state gpio request failed.\n");
-+ goto err_free_irq;
-+ }
-+ ret = gpio_direction_input(pdata->gpio_charge);
-+ if (ret) {
-+ dev_err(&pdev->dev, "charger state gpio set direction failed.\n");
-+ goto err_free_gpio;
-+ }
-+
-+ jz_battery->charge_irq = gpio_to_irq(pdata->gpio_charge);
-+
-+ if (jz_battery->charge_irq >= 0) {
-+ ret = request_irq(jz_battery->charge_irq,
-+ jz_battery_charge_irq,
-+ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
-+ dev_name(&pdev->dev), jz_battery);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request charge irq: %d\n", ret);
-+ goto err_free_gpio;
-+ }
-+ }
-+ } else {
-+ jz_battery->charge_irq = -1;
-+ }
-+
-+ if (jz_battery->pdata->info.voltage_max_design <= 2500000)
-+ jz4740_adc_set_config(pdev->dev.parent, JZ_ADC_CONFIG_BAT_MB,
-+ JZ_ADC_CONFIG_BAT_MB);
-+ else
-+ jz4740_adc_set_config(pdev->dev.parent, JZ_ADC_CONFIG_BAT_MB, 0);
-+
-+ ret = power_supply_register(&pdev->dev, &jz_battery->battery);
-+ if (ret) {
-+ dev_err(&pdev->dev, "power supply battery register failed.\n");
-+ goto err_free_charge_irq;
-+ }
-+
-+ platform_set_drvdata(pdev, jz_battery);
-+ schedule_delayed_work(&jz_battery->work, 0);
-+
-+ return 0;
-+
-+err_free_charge_irq:
-+ if (jz_battery->charge_irq >= 0)
-+ free_irq(jz_battery->charge_irq, jz_battery);
-+err_free_gpio:
-+ if (gpio_is_valid(pdata->gpio_charge))
-+ gpio_free(jz_battery->pdata->gpio_charge);
-+err_free_irq:
-+ free_irq(jz_battery->irq, jz_battery);
-+err_iounmap:
-+ platform_set_drvdata(pdev, NULL);
-+ iounmap(jz_battery->base);
-+err_release_mem_region:
-+ release_mem_region(jz_battery->mem->start, resource_size(jz_battery->mem));
-+err_free:
-+ kfree(jz_battery);
-+ return ret;
-+}
-+
-+static int __devexit jz_battery_remove(struct platform_device *pdev)
-+{
-+ struct jz_battery *jz_battery = platform_get_drvdata(pdev);
-+
-+ cancel_delayed_work_sync(&jz_battery->work);
-+
-+ if (gpio_is_valid(jz_battery->pdata->gpio_charge)) {
-+ if (jz_battery->charge_irq >= 0)
-+ free_irq(jz_battery->charge_irq, jz_battery);
-+ gpio_free(jz_battery->pdata->gpio_charge);
-+ }
-+
-+ power_supply_unregister(&jz_battery->battery);
-+
-+ free_irq(jz_battery->irq, jz_battery);
-+
-+ iounmap(jz_battery->base);
-+ release_mem_region(jz_battery->mem->start, resource_size(jz_battery->mem));
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static int jz_battery_suspend(struct device *dev)
-+{
-+ struct jz_battery *jz_battery = dev_get_drvdata(dev);
-+
-+ cancel_delayed_work_sync(&jz_battery->work);
-+ jz_battery->status = POWER_SUPPLY_STATUS_UNKNOWN;
-+
-+ return 0;
-+}
-+
-+static int jz_battery_resume(struct device *dev)
-+{
-+ struct jz_battery *jz_battery = dev_get_drvdata(dev);
-+
-+ schedule_delayed_work(&jz_battery->work, 0);
-+
-+ return 0;
-+}
-+
-+static const struct dev_pm_ops jz_battery_pm_ops = {
-+ .suspend = jz_battery_suspend,
-+ .resume = jz_battery_resume,
-+};
-+
-+#define JZ_BATTERY_PM_OPS (&jz_battery_pm_ops)
-+#else
-+#define JZ_BATTERY_PM_OPS NULL
-+#endif
-+
-+static struct platform_driver jz_battery_driver = {
-+ .probe = jz_battery_probe,
-+ .remove = __devexit_p(jz_battery_remove),
-+ .driver = {
-+ .name = "jz4740-battery",
-+ .owner = THIS_MODULE,
-+ .pm = JZ_BATTERY_PM_OPS,
-+ },
-+};
-+
-+static int __init jz_battery_init(void)
-+{
-+ return platform_driver_register(&jz_battery_driver);
-+}
-+module_init(jz_battery_init);
-+
-+static void __exit jz_battery_exit(void)
-+{
-+ platform_driver_unregister(&jz_battery_driver);
-+}
-+module_exit(jz_battery_exit);
-+
-+MODULE_ALIAS("platform:jz4740-battery");
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("JZ4740 SoC battery driver");
---- /dev/null
-+++ b/include/linux/power/jz4740-battery.h
-@@ -0,0 +1,24 @@
-+/*
-+ * Copyright (C) 2009, Jiejing Zhang <kzjeef@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.
-+ *
-+ * 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 __JZ4740_BATTERY_H
-+#define __JZ4740_BATTERY_H
-+
-+struct jz_battery_platform_data {
-+ struct power_supply_info info;
-+ int gpio_charge; /* GPIO port of Charger state */
-+ int gpio_charge_active_low;
-+};
-+
-+#endif
diff --git a/target/linux/xburst/patches-2.6.35/060-jzcodec.patch b/target/linux/xburst/patches-2.6.35/060-jzcodec.patch
deleted file mode 100644
index b0d156af0c..0000000000
--- a/target/linux/xburst/patches-2.6.35/060-jzcodec.patch
+++ /dev/null
@@ -1,594 +0,0 @@
-From 382d2274cfd8fc22064a33681e45668cfb6f91ad Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sun, 1 Aug 2010 21:14:09 +0200
-Subject: [PATCH] ASoC: Add JZ4740 codec driver
-
-This patch adds support for the JZ4740 internal codec.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
-Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
----
- sound/soc/codecs/Kconfig | 4 +
- sound/soc/codecs/Makefile | 2 +
- sound/soc/codecs/jz4740.c | 511 +++++++++++++++++++++++++++++++++++++++++++++
- sound/soc/codecs/jz4740.h | 20 ++
- 4 files changed, 537 insertions(+), 0 deletions(-)
- create mode 100644 sound/soc/codecs/jz4740.c
- create mode 100644 sound/soc/codecs/jz4740.h
-
---- a/sound/soc/codecs/Kconfig
-+++ b/sound/soc/codecs/Kconfig
-@@ -23,6 +23,7 @@ config SND_SOC_ALL_CODECS
- select SND_SOC_AK4671 if I2C
- select SND_SOC_CQ0093VC if MFD_DAVINCI_VOICECODEC
- select SND_SOC_CS4270 if I2C
-+ select SND_SOC_JZ4740 if SOC_JZ4740
- select SND_SOC_MAX9877 if I2C
- select SND_SOC_DA7210 if I2C
- select SND_SOC_PCM3008
-@@ -138,6 +139,9 @@ config SND_SOC_CS4270_VD33_ERRATA
- config SND_SOC_CX20442
- tristate
-
-+config SND_SOC_JZ4740_CODEC
-+ tristate
-+
- config SND_SOC_L3
- tristate
-
---- a/sound/soc/codecs/Makefile
-+++ b/sound/soc/codecs/Makefile
-@@ -56,6 +56,7 @@ snd-soc-wm9705-objs := wm9705.o
- snd-soc-wm9712-objs := wm9712.o
- snd-soc-wm9713-objs := wm9713.o
- snd-soc-wm-hubs-objs := wm_hubs.o
-+snd-soc-jz4740-codec-objs := jz4740.o
-
- # Amp
- snd-soc-max9877-objs := max9877.o
-@@ -78,6 +79,7 @@ obj-$(CONFIG_SND_SOC_CS4270) += snd-soc-
- obj-$(CONFIG_SND_SOC_CX20442) += snd-soc-cx20442.o
- obj-$(CONFIG_SND_SOC_DA7210) += snd-soc-da7210.o
- obj-$(CONFIG_SND_SOC_L3) += snd-soc-l3.o
-+obj-$(CONFIG_SND_SOC_JZ4740_CODEC) += snd-soc-jz4740-codec.o
- obj-$(CONFIG_SND_SOC_PCM3008) += snd-soc-pcm3008.o
- obj-$(CONFIG_SND_SOC_SPDIF) += snd-soc-spdif.o
- obj-$(CONFIG_SND_SOC_SSM2602) += snd-soc-ssm2602.o
---- /dev/null
-+++ b/sound/soc/codecs/jz4740.c
-@@ -0,0 +1,511 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+
-+#include <linux/delay.h>
-+
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/initval.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/soc.h>
-+
-+#define JZ4740_REG_CODEC_1 0x0
-+#define JZ4740_REG_CODEC_2 0x1
-+
-+#define JZ4740_CODEC_1_LINE_ENABLE BIT(29)
-+#define JZ4740_CODEC_1_MIC_ENABLE BIT(28)
-+#define JZ4740_CODEC_1_SW1_ENABLE BIT(27)
-+#define JZ4740_CODEC_1_ADC_ENABLE BIT(26)
-+#define JZ4740_CODEC_1_SW2_ENABLE BIT(25)
-+#define JZ4740_CODEC_1_DAC_ENABLE BIT(24)
-+#define JZ4740_CODEC_1_VREF_DISABLE BIT(20)
-+#define JZ4740_CODEC_1_VREF_AMP_DISABLE BIT(19)
-+#define JZ4740_CODEC_1_VREF_PULLDOWN BIT(18)
-+#define JZ4740_CODEC_1_VREF_LOW_CURRENT BIT(17)
-+#define JZ4740_CODEC_1_VREF_HIGH_CURRENT BIT(16)
-+#define JZ4740_CODEC_1_HEADPHONE_DISABLE BIT(14)
-+#define JZ4740_CODEC_1_HEADPHONE_AMP_CHANGE_ANY BIT(13)
-+#define JZ4740_CODEC_1_HEADPHONE_CHARGE BIT(12)
-+#define JZ4740_CODEC_1_HEADPHONE_PULLDOWN (BIT(11) | BIT(10))
-+#define JZ4740_CODEC_1_HEADPHONE_POWERDOWN_M BIT(9)
-+#define JZ4740_CODEC_1_HEADPHONE_POWERDOWN BIT(8)
-+#define JZ4740_CODEC_1_SUSPEND BIT(1)
-+#define JZ4740_CODEC_1_RESET BIT(0)
-+
-+#define JZ4740_CODEC_1_LINE_ENABLE_OFFSET 29
-+#define JZ4740_CODEC_1_MIC_ENABLE_OFFSET 28
-+#define JZ4740_CODEC_1_SW1_ENABLE_OFFSET 27
-+#define JZ4740_CODEC_1_ADC_ENABLE_OFFSET 26
-+#define JZ4740_CODEC_1_SW2_ENABLE_OFFSET 25
-+#define JZ4740_CODEC_1_DAC_ENABLE_OFFSET 24
-+#define JZ4740_CODEC_1_HEADPHONE_DISABLE_OFFSET 14
-+#define JZ4740_CODEC_1_HEADPHONE_POWERDOWN_OFFSET 8
-+
-+#define JZ4740_CODEC_2_INPUT_VOLUME_MASK 0x1f0000
-+#define JZ4740_CODEC_2_SAMPLE_RATE_MASK 0x000f00
-+#define JZ4740_CODEC_2_MIC_BOOST_GAIN_MASK 0x000030
-+#define JZ4740_CODEC_2_HEADPHONE_VOLUME_MASK 0x000003
-+
-+#define JZ4740_CODEC_2_INPUT_VOLUME_OFFSET 16
-+#define JZ4740_CODEC_2_SAMPLE_RATE_OFFSET 8
-+#define JZ4740_CODEC_2_MIC_BOOST_GAIN_OFFSET 4
-+#define JZ4740_CODEC_2_HEADPHONE_VOLUME_OFFSET 0
-+
-+static const uint32_t jz4740_codec_regs[] = {
-+ 0x021b2302, 0x00170803,
-+};
-+
-+struct jz4740_codec {
-+ void __iomem *base;
-+ struct resource *mem;
-+
-+ uint32_t reg_cache[2];
-+ struct snd_soc_codec codec;
-+};
-+
-+static inline struct jz4740_codec *codec_to_jz4740(struct snd_soc_codec *codec)
-+{
-+ return container_of(codec, struct jz4740_codec, codec);
-+}
-+
-+static unsigned int jz4740_codec_read(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ struct jz4740_codec *jz4740_codec = codec_to_jz4740(codec);
-+ return readl(jz4740_codec->base + (reg << 2));
-+}
-+
-+static int jz4740_codec_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int val)
-+{
-+ struct jz4740_codec *jz4740_codec = codec_to_jz4740(codec);
-+
-+ jz4740_codec->reg_cache[reg] = val;
-+ writel(val, jz4740_codec->base + (reg << 2));
-+
-+ return 0;
-+}
-+
-+static const struct snd_kcontrol_new jz4740_codec_controls[] = {
-+ SOC_SINGLE("Master Playback Volume", JZ4740_REG_CODEC_2,
-+ JZ4740_CODEC_2_HEADPHONE_VOLUME_OFFSET, 3, 0),
-+ SOC_SINGLE("Master Capture Volume", JZ4740_REG_CODEC_2,
-+ JZ4740_CODEC_2_INPUT_VOLUME_OFFSET, 31, 0),
-+ SOC_SINGLE("Master Playback Switch", JZ4740_REG_CODEC_1,
-+ JZ4740_CODEC_1_HEADPHONE_DISABLE_OFFSET, 1, 1),
-+ SOC_SINGLE("Mic Capture Volume", JZ4740_REG_CODEC_2,
-+ JZ4740_CODEC_2_MIC_BOOST_GAIN_OFFSET, 3, 0),
-+};
-+
-+static const struct snd_kcontrol_new jz4740_codec_output_controls[] = {
-+ SOC_DAPM_SINGLE("Bypass Switch", JZ4740_REG_CODEC_1,
-+ JZ4740_CODEC_1_SW1_ENABLE_OFFSET, 1, 0),
-+ SOC_DAPM_SINGLE("DAC Switch", JZ4740_REG_CODEC_1,
-+ JZ4740_CODEC_1_SW2_ENABLE_OFFSET, 1, 0),
-+};
-+
-+static const struct snd_kcontrol_new jz4740_codec_input_controls[] = {
-+ SOC_DAPM_SINGLE("Line Capture Switch", JZ4740_REG_CODEC_1,
-+ JZ4740_CODEC_1_LINE_ENABLE_OFFSET, 1, 0),
-+ SOC_DAPM_SINGLE("Mic Capture Switch", JZ4740_REG_CODEC_1,
-+ JZ4740_CODEC_1_MIC_ENABLE_OFFSET, 1, 0),
-+};
-+
-+static const struct snd_soc_dapm_widget jz4740_codec_dapm_widgets[] = {
-+ SND_SOC_DAPM_ADC("ADC", "Capture", JZ4740_REG_CODEC_1,
-+ JZ4740_CODEC_1_ADC_ENABLE_OFFSET, 0),
-+ SND_SOC_DAPM_DAC("DAC", "Playback", JZ4740_REG_CODEC_1,
-+ JZ4740_CODEC_1_DAC_ENABLE_OFFSET, 0),
-+
-+ SND_SOC_DAPM_MIXER("Output Mixer", JZ4740_REG_CODEC_1,
-+ JZ4740_CODEC_1_HEADPHONE_POWERDOWN_OFFSET, 1,
-+ jz4740_codec_output_controls,
-+ ARRAY_SIZE(jz4740_codec_output_controls)),
-+
-+ SND_SOC_DAPM_MIXER_NAMED_CTL("Input Mixer", SND_SOC_NOPM, 0, 0,
-+ jz4740_codec_input_controls,
-+ ARRAY_SIZE(jz4740_codec_input_controls)),
-+ SND_SOC_DAPM_MIXER("Line Input", SND_SOC_NOPM, 0, 0, NULL, 0),
-+
-+ SND_SOC_DAPM_OUTPUT("LOUT"),
-+ SND_SOC_DAPM_OUTPUT("ROUT"),
-+
-+ SND_SOC_DAPM_INPUT("MIC"),
-+ SND_SOC_DAPM_INPUT("LIN"),
-+ SND_SOC_DAPM_INPUT("RIN"),
-+};
-+
-+static const struct snd_soc_dapm_route jz4740_codec_dapm_routes[] = {
-+ {"Line Input", NULL, "LIN"},
-+ {"Line Input", NULL, "RIN"},
-+
-+ {"Input Mixer", "Line Capture Switch", "Line Input"},
-+ {"Input Mixer", "Mic Capture Switch", "MIC"},
-+
-+ {"ADC", NULL, "Input Mixer"},
-+
-+ {"Output Mixer", "Bypass Switch", "Input Mixer"},
-+ {"Output Mixer", "DAC Switch", "DAC"},
-+
-+ {"LOUT", NULL, "Output Mixer"},
-+ {"ROUT", NULL, "Output Mixer"},
-+};
-+
-+static int jz4740_codec_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params, struct snd_soc_dai *dai)
-+{
-+ uint32_t val;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->card->codec;
-+
-+ switch (params_rate(params)) {
-+ case 8000:
-+ val = 0;
-+ break;
-+ case 11025:
-+ val = 1;
-+ break;
-+ case 12000:
-+ val = 2;
-+ break;
-+ case 16000:
-+ val = 3;
-+ break;
-+ case 22050:
-+ val = 4;
-+ break;
-+ case 24000:
-+ val = 5;
-+ break;
-+ case 32000:
-+ val = 6;
-+ break;
-+ case 44100:
-+ val = 7;
-+ break;
-+ case 48000:
-+ val = 8;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ val <<= JZ4740_CODEC_2_SAMPLE_RATE_OFFSET;
-+
-+ snd_soc_update_bits(codec, JZ4740_REG_CODEC_2,
-+ JZ4740_CODEC_2_SAMPLE_RATE_MASK, val);
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_dai_ops jz4740_codec_dai_ops = {
-+ .hw_params = jz4740_codec_hw_params,
-+};
-+
-+struct snd_soc_dai jz4740_codec_dai = {
-+ .name = "jz4740",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 2,
-+ .channels_max = 2,
-+ .rates = SNDRV_PCM_RATE_8000_48000,
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 2,
-+ .channels_max = 2,
-+ .rates = SNDRV_PCM_RATE_8000_48000,
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8,
-+ },
-+ .ops = &jz4740_codec_dai_ops,
-+ .symmetric_rates = 1,
-+};
-+EXPORT_SYMBOL_GPL(jz4740_codec_dai);
-+
-+static void jz4740_codec_wakeup(struct snd_soc_codec *codec)
-+{
-+ int i;
-+ uint32_t *cache = codec->reg_cache;
-+
-+ snd_soc_update_bits(codec, JZ4740_REG_CODEC_1,
-+ JZ4740_CODEC_1_RESET, JZ4740_CODEC_1_RESET);
-+ udelay(2);
-+
-+ snd_soc_update_bits(codec, JZ4740_REG_CODEC_1,
-+ JZ4740_CODEC_1_SUSPEND | JZ4740_CODEC_1_RESET, 0);
-+
-+ for (i = 0; i < ARRAY_SIZE(jz4740_codec_regs); ++i)
-+ jz4740_codec_write(codec, i, cache[i]);
-+}
-+
-+static int jz4740_codec_set_bias_level(struct snd_soc_codec *codec,
-+ enum snd_soc_bias_level level)
-+{
-+ unsigned int mask;
-+ unsigned int value;
-+
-+ switch (level) {
-+ case SND_SOC_BIAS_ON:
-+ break;
-+ case SND_SOC_BIAS_PREPARE:
-+ mask = JZ4740_CODEC_1_VREF_DISABLE |
-+ JZ4740_CODEC_1_VREF_AMP_DISABLE |
-+ JZ4740_CODEC_1_HEADPHONE_POWERDOWN_M;
-+ value = 0;
-+
-+ snd_soc_update_bits(codec, JZ4740_REG_CODEC_1, mask, value);
-+ break;
-+ case SND_SOC_BIAS_STANDBY:
-+ /* The only way to clear the suspend flag is to reset the codec */
-+ if (codec->bias_level == SND_SOC_BIAS_OFF)
-+ jz4740_codec_wakeup(codec);
-+
-+ mask = JZ4740_CODEC_1_VREF_DISABLE |
-+ JZ4740_CODEC_1_VREF_AMP_DISABLE |
-+ JZ4740_CODEC_1_HEADPHONE_POWERDOWN_M;
-+ value = JZ4740_CODEC_1_VREF_DISABLE |
-+ JZ4740_CODEC_1_VREF_AMP_DISABLE |
-+ JZ4740_CODEC_1_HEADPHONE_POWERDOWN_M;
-+
-+ snd_soc_update_bits(codec, JZ4740_REG_CODEC_1, mask, value);
-+ break;
-+ case SND_SOC_BIAS_OFF:
-+ mask = JZ4740_CODEC_1_SUSPEND;
-+ value = JZ4740_CODEC_1_SUSPEND;
-+
-+ snd_soc_update_bits(codec, JZ4740_REG_CODEC_1, mask, value);
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ codec->bias_level = level;
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_codec *jz4740_codec_codec;
-+
-+static int jz4740_codec_dev_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = jz4740_codec_codec;
-+
-+ BUG_ON(!codec);
-+
-+ socdev->card->codec = codec;
-+
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to create pcms: %d\n", ret);
-+ return ret;
-+ }
-+
-+ snd_soc_add_controls(codec, jz4740_codec_controls,
-+ ARRAY_SIZE(jz4740_codec_controls));
-+
-+ snd_soc_dapm_new_controls(codec, jz4740_codec_dapm_widgets,
-+ ARRAY_SIZE(jz4740_codec_dapm_widgets));
-+
-+ snd_soc_dapm_add_routes(codec, jz4740_codec_dapm_routes,
-+ ARRAY_SIZE(jz4740_codec_dapm_routes));
-+
-+ snd_soc_dapm_new_widgets(codec);
-+
-+ return 0;
-+}
-+
-+static int jz4740_codec_dev_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM_SLEEP
-+
-+static int jz4740_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->card->codec;
-+
-+ return jz4740_codec_set_bias_level(codec, SND_SOC_BIAS_OFF);
-+}
-+
-+static int jz4740_codec_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->card->codec;
-+
-+ return jz4740_codec_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-+}
-+
-+#else
-+#define jz4740_codec_suspend NULL
-+#define jz4740_codec_resume NULL
-+#endif
-+
-+struct snd_soc_codec_device soc_codec_dev_jz4740_codec = {
-+ .probe = jz4740_codec_dev_probe,
-+ .remove = jz4740_codec_dev_remove,
-+ .suspend = jz4740_codec_suspend,
-+ .resume = jz4740_codec_resume,
-+};
-+EXPORT_SYMBOL_GPL(soc_codec_dev_jz4740_codec);
-+
-+static int __devinit jz4740_codec_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct jz4740_codec *jz4740_codec;
-+ struct snd_soc_codec *codec;
-+ struct resource *mem;
-+
-+ jz4740_codec = kzalloc(sizeof(*jz4740_codec), GFP_KERNEL);
-+ if (!jz4740_codec)
-+ return -ENOMEM;
-+
-+ mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!mem) {
-+ dev_err(&pdev->dev, "Failed to get mmio memory resource\n");
-+ ret = -ENOENT;
-+ goto err_free_codec;
-+ }
-+
-+ mem = request_mem_region(mem->start, resource_size(mem), pdev->name);
-+ if (!mem) {
-+ dev_err(&pdev->dev, "Failed to request mmio memory region\n");
-+ ret = -EBUSY;
-+ goto err_free_codec;
-+ }
-+
-+ jz4740_codec->base = ioremap(mem->start, resource_size(mem));
-+ if (!jz4740_codec->base) {
-+ dev_err(&pdev->dev, "Failed to ioremap mmio memory\n");
-+ ret = -EBUSY;
-+ goto err_release_mem_region;
-+ }
-+ jz4740_codec->mem = mem;
-+
-+ jz4740_codec_dai.dev = &pdev->dev;
-+
-+ codec = &jz4740_codec->codec;
-+
-+ codec->dev = &pdev->dev;
-+ codec->name = "jz4740";
-+ codec->owner = THIS_MODULE;
-+
-+ codec->read = jz4740_codec_read;
-+ codec->write = jz4740_codec_write;
-+ codec->set_bias_level = jz4740_codec_set_bias_level;
-+ codec->bias_level = SND_SOC_BIAS_OFF;
-+
-+ codec->dai = &jz4740_codec_dai;
-+ codec->num_dai = 1;
-+
-+ codec->reg_cache = jz4740_codec->reg_cache;
-+ codec->reg_cache_size = 2;
-+ memcpy(codec->reg_cache, jz4740_codec_regs, sizeof(jz4740_codec_regs));
-+
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ jz4740_codec_codec = codec;
-+
-+ snd_soc_update_bits(codec, JZ4740_REG_CODEC_1,
-+ JZ4740_CODEC_1_SW2_ENABLE, JZ4740_CODEC_1_SW2_ENABLE);
-+
-+ platform_set_drvdata(pdev, jz4740_codec);
-+
-+ ret = snd_soc_register_codec(codec);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to register codec\n");
-+ goto err_iounmap;
-+ }
-+
-+ ret = snd_soc_register_dai(&jz4740_codec_dai);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to register codec dai\n");
-+ goto err_unregister_codec;
-+ }
-+
-+ jz4740_codec_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-+
-+ return 0;
-+
-+err_unregister_codec:
-+ snd_soc_unregister_codec(codec);
-+err_iounmap:
-+ iounmap(jz4740_codec->base);
-+err_release_mem_region:
-+ release_mem_region(mem->start, resource_size(mem));
-+err_free_codec:
-+ kfree(jz4740_codec);
-+
-+ return ret;
-+}
-+
-+static int __devexit jz4740_codec_remove(struct platform_device *pdev)
-+{
-+ struct jz4740_codec *jz4740_codec = platform_get_drvdata(pdev);
-+ struct resource *mem = jz4740_codec->mem;
-+
-+ snd_soc_unregister_dai(&jz4740_codec_dai);
-+ snd_soc_unregister_codec(&jz4740_codec->codec);
-+
-+ iounmap(jz4740_codec->base);
-+ release_mem_region(mem->start, resource_size(mem));
-+
-+ platform_set_drvdata(pdev, NULL);
-+ kfree(jz4740_codec);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver jz4740_codec_driver = {
-+ .probe = jz4740_codec_probe,
-+ .remove = __devexit_p(jz4740_codec_remove),
-+ .driver = {
-+ .name = "jz4740-codec",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init jz4740_codec_init(void)
-+{
-+ return platform_driver_register(&jz4740_codec_driver);
-+}
-+module_init(jz4740_codec_init);
-+
-+static void __exit jz4740_codec_exit(void)
-+{
-+ platform_driver_unregister(&jz4740_codec_driver);
-+}
-+module_exit(jz4740_codec_exit);
-+
-+MODULE_DESCRIPTION("JZ4740 SoC internal codec driver");
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_LICENSE("GPL v2");
-+MODULE_ALIAS("platform:jz4740-codec");
---- /dev/null
-+++ b/sound/soc/codecs/jz4740.h
-@@ -0,0 +1,20 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * 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 __SND_SOC_CODECS_JZ4740_CODEC_H__
-+#define __SND_SOC_CODECS_JZ4740_CODEC_H__
-+
-+extern struct snd_soc_dai jz4740_codec_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_jz4740_codec;
-+
-+#endif
diff --git a/target/linux/xburst/patches-2.6.35/061-asoc.patch b/target/linux/xburst/patches-2.6.35/061-asoc.patch
deleted file mode 100644
index 9144299374..0000000000
--- a/target/linux/xburst/patches-2.6.35/061-asoc.patch
+++ /dev/null
@@ -1,1038 +0,0 @@
-From def17bc36684a36ca60211759c84bcc43f4f385a Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 19 Jun 2010 16:50:37 +0200
-Subject: [PATCH] ASoC: Add JZ4740 ASoC support
-
-This patch adds ASoC support for JZ4740 SoCs I2S module.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
-Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
----
- sound/soc/Kconfig | 1 +
- sound/soc/Makefile | 1 +
- sound/soc/jz4740/Kconfig | 14 +
- sound/soc/jz4740/Makefile | 9 +
- sound/soc/jz4740/jz4740-i2s.c | 540 +++++++++++++++++++++++++++++++++++++++++
- sound/soc/jz4740/jz4740-i2s.h | 18 ++
- sound/soc/jz4740/jz4740-pcm.c | 373 ++++++++++++++++++++++++++++
- sound/soc/jz4740/jz4740-pcm.h | 22 ++
- 8 files changed, 978 insertions(+), 0 deletions(-)
- create mode 100644 sound/soc/jz4740/Kconfig
- create mode 100644 sound/soc/jz4740/Makefile
- create mode 100644 sound/soc/jz4740/jz4740-i2s.c
- create mode 100644 sound/soc/jz4740/jz4740-i2s.h
- create mode 100644 sound/soc/jz4740/jz4740-pcm.c
- create mode 100644 sound/soc/jz4740/jz4740-pcm.h
-
---- a/sound/soc/Kconfig
-+++ b/sound/soc/Kconfig
-@@ -36,6 +36,7 @@ source "sound/soc/s3c24xx/Kconfig"
- source "sound/soc/s6000/Kconfig"
- source "sound/soc/sh/Kconfig"
- source "sound/soc/txx9/Kconfig"
-+source "sound/soc/jz4740/Kconfig"
-
- # Supported codecs
- source "sound/soc/codecs/Kconfig"
---- a/sound/soc/Makefile
-+++ b/sound/soc/Makefile
-@@ -14,3 +14,4 @@ obj-$(CONFIG_SND_SOC) += s3c24xx/
- obj-$(CONFIG_SND_SOC) += s6000/
- obj-$(CONFIG_SND_SOC) += sh/
- obj-$(CONFIG_SND_SOC) += txx9/
-+obj-$(CONFIG_SND_SOC) += jz4740/
---- /dev/null
-+++ b/sound/soc/jz4740/Kconfig
-@@ -0,0 +1,14 @@
-+config SND_JZ4740_SOC
-+ tristate "SoC Audio for Ingenic JZ4740 SoC"
-+ depends on MACH_JZ4740 && SND_SOC
-+ help
-+ Say Y or M if you want to add support for codecs attached to
-+ the JZ4740 I2S interface. You will also need to select the audio
-+ interfaces to support below.
-+
-+config SND_JZ4740_SOC_I2S
-+ depends on SND_JZ4740_SOC
-+ tristate "SoC Audio (I2S protocol) for Ingenic JZ4740 SoC"
-+ help
-+ Say Y if you want to use I2S protocol and I2S codec on Ingenic JZ4740
-+ based boards.
---- /dev/null
-+++ b/sound/soc/jz4740/Makefile
-@@ -0,0 +1,9 @@
-+#
-+# Jz4740 Platform Support
-+#
-+snd-soc-jz4740-objs := jz4740-pcm.o
-+snd-soc-jz4740-i2s-objs := jz4740-i2s.o
-+
-+obj-$(CONFIG_SND_JZ4740_SOC) += snd-soc-jz4740.o
-+obj-$(CONFIG_SND_JZ4740_SOC_I2S) += snd-soc-jz4740-i2s.o
-+
---- /dev/null
-+++ b/sound/soc/jz4740/jz4740-i2s.c
-@@ -0,0 +1,540 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/io.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+
-+#include <linux/clk.h>
-+#include <linux/delay.h>
-+
-+#include <linux/dma-mapping.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 "jz4740-i2s.h"
-+#include "jz4740-pcm.h"
-+
-+#define JZ_REG_AIC_CONF 0x00
-+#define JZ_REG_AIC_CTRL 0x04
-+#define JZ_REG_AIC_I2S_FMT 0x10
-+#define JZ_REG_AIC_FIFO_STATUS 0x14
-+#define JZ_REG_AIC_I2S_STATUS 0x1c
-+#define JZ_REG_AIC_CLK_DIV 0x30
-+#define JZ_REG_AIC_FIFO 0x34
-+
-+#define JZ_AIC_CONF_FIFO_RX_THRESHOLD_MASK (0xf << 12)
-+#define JZ_AIC_CONF_FIFO_TX_THRESHOLD_MASK (0xf << 8)
-+#define JZ_AIC_CONF_OVERFLOW_PLAY_LAST BIT(6)
-+#define JZ_AIC_CONF_INTERNAL_CODEC BIT(5)
-+#define JZ_AIC_CONF_I2S BIT(4)
-+#define JZ_AIC_CONF_RESET BIT(3)
-+#define JZ_AIC_CONF_BIT_CLK_MASTER BIT(2)
-+#define JZ_AIC_CONF_SYNC_CLK_MASTER BIT(1)
-+#define JZ_AIC_CONF_ENABLE BIT(0)
-+
-+#define JZ_AIC_CONF_FIFO_RX_THRESHOLD_OFFSET 12
-+#define JZ_AIC_CONF_FIFO_TX_THRESHOLD_OFFSET 8
-+
-+#define JZ_AIC_CTRL_OUTPUT_SAMPLE_SIZE_MASK (0x7 << 19)
-+#define JZ_AIC_CTRL_INPUT_SAMPLE_SIZE_MASK (0x7 << 16)
-+#define JZ_AIC_CTRL_ENABLE_RX_DMA BIT(15)
-+#define JZ_AIC_CTRL_ENABLE_TX_DMA BIT(14)
-+#define JZ_AIC_CTRL_MONO_TO_STEREO BIT(11)
-+#define JZ_AIC_CTRL_SWITCH_ENDIANNESS BIT(10)
-+#define JZ_AIC_CTRL_SIGNED_TO_UNSIGNED BIT(9)
-+#define JZ_AIC_CTRL_FLUSH BIT(8)
-+#define JZ_AIC_CTRL_ENABLE_ROR_INT BIT(6)
-+#define JZ_AIC_CTRL_ENABLE_TUR_INT BIT(5)
-+#define JZ_AIC_CTRL_ENABLE_RFS_INT BIT(4)
-+#define JZ_AIC_CTRL_ENABLE_TFS_INT BIT(3)
-+#define JZ_AIC_CTRL_ENABLE_LOOPBACK BIT(2)
-+#define JZ_AIC_CTRL_ENABLE_PLAYBACK BIT(1)
-+#define JZ_AIC_CTRL_ENABLE_CAPTURE BIT(0)
-+
-+#define JZ_AIC_CTRL_OUTPUT_SAMPLE_SIZE_OFFSET 19
-+#define JZ_AIC_CTRL_INPUT_SAMPLE_SIZE_OFFSET 16
-+
-+#define JZ_AIC_I2S_FMT_DISABLE_BIT_CLK BIT(12)
-+#define JZ_AIC_I2S_FMT_ENABLE_SYS_CLK BIT(4)
-+#define JZ_AIC_I2S_FMT_MSB BIT(0)
-+
-+#define JZ_AIC_I2S_STATUS_BUSY BIT(2)
-+
-+#define JZ_AIC_CLK_DIV_MASK 0xf
-+
-+struct jz4740_i2s {
-+ struct resource *mem;
-+ void __iomem *base;
-+ dma_addr_t phys_base;
-+
-+ struct clk *clk_aic;
-+ struct clk *clk_i2s;
-+
-+ struct jz4740_pcm_config pcm_config_playback;
-+ struct jz4740_pcm_config pcm_config_capture;
-+};
-+
-+static inline uint32_t jz4740_i2s_read(const struct jz4740_i2s *i2s,
-+ unsigned int reg)
-+{
-+ return readl(i2s->base + reg);
-+}
-+
-+static inline void jz4740_i2s_write(const struct jz4740_i2s *i2s,
-+ unsigned int reg, uint32_t value)
-+{
-+ writel(value, i2s->base + reg);
-+}
-+
-+static inline struct jz4740_i2s *jz4740_dai_to_i2s(struct snd_soc_dai *dai)
-+{
-+ return dai->private_data;
-+}
-+
-+static int jz4740_i2s_startup(struct snd_pcm_substream *substream,
-+ struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ uint32_t conf, ctrl;
-+
-+ if (dai->active)
-+ return 0;
-+
-+ ctrl = jz4740_i2s_read(i2s, JZ_REG_AIC_CTRL);
-+ ctrl |= JZ_AIC_CTRL_FLUSH;
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CTRL, ctrl);
-+
-+ clk_enable(i2s->clk_i2s);
-+
-+ conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF);
-+ conf |= JZ_AIC_CONF_ENABLE;
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-+
-+ return 0;
-+}
-+
-+static void jz4740_i2s_shutdown(struct snd_pcm_substream *substream,
-+ struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ uint32_t conf;
-+
-+ if (!dai->active)
-+ return;
-+
-+ conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF);
-+ conf &= ~JZ_AIC_CONF_ENABLE;
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-+
-+ clk_disable(i2s->clk_i2s);
-+}
-+
-+static int jz4740_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
-+ struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+
-+ uint32_t ctrl;
-+ uint32_t mask;
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ mask = JZ_AIC_CTRL_ENABLE_PLAYBACK | JZ_AIC_CTRL_ENABLE_TX_DMA;
-+ else
-+ mask = JZ_AIC_CTRL_ENABLE_CAPTURE | JZ_AIC_CTRL_ENABLE_RX_DMA;
-+
-+ ctrl = jz4740_i2s_read(i2s, JZ_REG_AIC_CTRL);
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ ctrl |= mask;
-+ break;
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ ctrl &= ~mask;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CTRL, ctrl);
-+
-+ return 0;
-+}
-+
-+static int jz4740_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+
-+ uint32_t format = 0;
-+ uint32_t conf;
-+
-+ conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF);
-+
-+ conf &= ~(JZ_AIC_CONF_BIT_CLK_MASTER | JZ_AIC_CONF_SYNC_CLK_MASTER);
-+
-+ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ conf |= JZ_AIC_CONF_BIT_CLK_MASTER | JZ_AIC_CONF_SYNC_CLK_MASTER;
-+ format |= JZ_AIC_I2S_FMT_ENABLE_SYS_CLK;
-+ break;
-+ case SND_SOC_DAIFMT_CBM_CFS:
-+ conf |= JZ_AIC_CONF_SYNC_CLK_MASTER;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFM:
-+ conf |= JZ_AIC_CONF_BIT_CLK_MASTER;
-+ break;
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_MSB:
-+ format |= JZ_AIC_I2S_FMT_MSB;
-+ break;
-+ case SND_SOC_DAIFMT_I2S:
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_I2S_FMT, format);
-+
-+ return 0;
-+}
-+
-+static int jz4740_i2s_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params, struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ enum jz4740_dma_width dma_width;
-+ struct jz4740_pcm_config *pcm_config;
-+ unsigned int sample_size;
-+ uint32_t ctrl;
-+
-+ ctrl = jz4740_i2s_read(i2s, JZ_REG_AIC_CTRL);
-+
-+ switch (params_format(params)) {
-+ case SNDRV_PCM_FORMAT_S8:
-+ sample_size = 0;
-+ dma_width = JZ4740_DMA_WIDTH_8BIT;
-+ break;
-+ case SNDRV_PCM_FORMAT_S16:
-+ sample_size = 1;
-+ dma_width = JZ4740_DMA_WIDTH_16BIT;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ ctrl &= ~JZ_AIC_CTRL_OUTPUT_SAMPLE_SIZE_MASK;
-+ ctrl |= sample_size << JZ_AIC_CTRL_OUTPUT_SAMPLE_SIZE_OFFSET;
-+ if (params_channels(params) == 1)
-+ ctrl |= JZ_AIC_CTRL_MONO_TO_STEREO;
-+ else
-+ ctrl &= ~JZ_AIC_CTRL_MONO_TO_STEREO;
-+
-+ pcm_config = &i2s->pcm_config_playback;
-+ pcm_config->dma_config.dst_width = dma_width;
-+
-+ } else {
-+ ctrl &= ~JZ_AIC_CTRL_INPUT_SAMPLE_SIZE_MASK;
-+ ctrl |= sample_size << JZ_AIC_CTRL_INPUT_SAMPLE_SIZE_OFFSET;
-+
-+ pcm_config = &i2s->pcm_config_capture;
-+ pcm_config->dma_config.src_width = dma_width;
-+ }
-+
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CTRL, ctrl);
-+
-+ snd_soc_dai_set_dma_data(dai, substream, pcm_config);
-+
-+ return 0;
-+}
-+
-+static int jz4740_i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id,
-+ unsigned int freq, int dir)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ struct clk *parent;
-+ int ret = 0;
-+
-+ switch (clk_id) {
-+ case JZ4740_I2S_CLKSRC_EXT:
-+ parent = clk_get(NULL, "ext");
-+ clk_set_parent(i2s->clk_i2s, parent);
-+ break;
-+ case JZ4740_I2S_CLKSRC_PLL:
-+ parent = clk_get(NULL, "pll half");
-+ clk_set_parent(i2s->clk_i2s, parent);
-+ ret = clk_set_rate(i2s->clk_i2s, freq);
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+ clk_put(parent);
-+
-+ return ret;
-+}
-+
-+static int jz4740_i2s_suspend(struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ uint32_t conf;
-+
-+ if (dai->active) {
-+ conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF);
-+ conf &= ~JZ_AIC_CONF_ENABLE;
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-+
-+ clk_disable(i2s->clk_i2s);
-+ }
-+
-+ clk_disable(i2s->clk_aic);
-+
-+ return 0;
-+}
-+
-+static int jz4740_i2s_resume(struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ uint32_t conf;
-+
-+ clk_enable(i2s->clk_aic);
-+
-+ if (dai->active) {
-+ clk_enable(i2s->clk_i2s);
-+
-+ conf = jz4740_i2s_read(i2s, JZ_REG_AIC_CONF);
-+ conf |= JZ_AIC_CONF_ENABLE;
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-+ }
-+
-+ return 0;
-+}
-+
-+static int jz4740_i2s_probe(struct platform_device *pdev, struct snd_soc_dai *dai)
-+{
-+ struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
-+ uint32_t conf;
-+
-+ conf = (7 << JZ_AIC_CONF_FIFO_RX_THRESHOLD_OFFSET) |
-+ (8 << JZ_AIC_CONF_FIFO_TX_THRESHOLD_OFFSET) |
-+ JZ_AIC_CONF_OVERFLOW_PLAY_LAST |
-+ JZ_AIC_CONF_I2S |
-+ JZ_AIC_CONF_INTERNAL_CODEC;
-+
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, JZ_AIC_CONF_RESET);
-+ jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, conf);
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_dai_ops jz4740_i2s_dai_ops = {
-+ .startup = jz4740_i2s_startup,
-+ .shutdown = jz4740_i2s_shutdown,
-+ .trigger = jz4740_i2s_trigger,
-+ .hw_params = jz4740_i2s_hw_params,
-+ .set_fmt = jz4740_i2s_set_fmt,
-+ .set_sysclk = jz4740_i2s_set_sysclk,
-+};
-+
-+#define JZ4740_I2S_FMTS (SNDRV_PCM_FMTBIT_S8 | \
-+ SNDRV_PCM_FMTBIT_S16_LE)
-+
-+struct snd_soc_dai jz4740_i2s_dai = {
-+ .name = "jz4740-i2s",
-+ .probe = jz4740_i2s_probe,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ .rates = SNDRV_PCM_RATE_8000_48000,
-+ .formats = JZ4740_I2S_FMTS,
-+ },
-+ .capture = {
-+ .channels_min = 2,
-+ .channels_max = 2,
-+ .rates = SNDRV_PCM_RATE_8000_48000,
-+ .formats = JZ4740_I2S_FMTS,
-+ },
-+ .symmetric_rates = 1,
-+ .ops = &jz4740_i2s_dai_ops,
-+ .suspend = jz4740_i2s_suspend,
-+ .resume = jz4740_i2s_resume,
-+};
-+EXPORT_SYMBOL_GPL(jz4740_i2s_dai);
-+
-+static void __devinit jz4740_i2c_init_pcm_config(struct jz4740_i2s *i2s)
-+{
-+ struct jz4740_dma_config *dma_config;
-+
-+ /* Playback */
-+ dma_config = &i2s->pcm_config_playback.dma_config;
-+ dma_config->src_width = JZ4740_DMA_WIDTH_32BIT,
-+ dma_config->transfer_size = JZ4740_DMA_TRANSFER_SIZE_16BYTE;
-+ dma_config->request_type = JZ4740_DMA_TYPE_AIC_TRANSMIT;
-+ dma_config->flags = JZ4740_DMA_SRC_AUTOINC;
-+ dma_config->mode = JZ4740_DMA_MODE_SINGLE;
-+ i2s->pcm_config_playback.fifo_addr = i2s->phys_base + JZ_REG_AIC_FIFO;
-+
-+ /* Capture */
-+ dma_config = &i2s->pcm_config_capture.dma_config;
-+ dma_config->dst_width = JZ4740_DMA_WIDTH_32BIT,
-+ dma_config->transfer_size = JZ4740_DMA_TRANSFER_SIZE_16BYTE;
-+ dma_config->request_type = JZ4740_DMA_TYPE_AIC_RECEIVE;
-+ dma_config->flags = JZ4740_DMA_DST_AUTOINC;
-+ dma_config->mode = JZ4740_DMA_MODE_SINGLE;
-+ i2s->pcm_config_capture.fifo_addr = i2s->phys_base + JZ_REG_AIC_FIFO;
-+}
-+
-+static int __devinit jz4740_i2s_dev_probe(struct platform_device *pdev)
-+{
-+ struct jz4740_i2s *i2s;
-+ int ret;
-+
-+ i2s = kzalloc(sizeof(*i2s), GFP_KERNEL);
-+
-+ if (!i2s)
-+ return -ENOMEM;
-+
-+ i2s->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!i2s->mem) {
-+ ret = -ENOENT;
-+ goto err_free;
-+ }
-+
-+ i2s->mem = request_mem_region(i2s->mem->start, resource_size(i2s->mem),
-+ pdev->name);
-+ if (!i2s->mem) {
-+ ret = -EBUSY;
-+ goto err_free;
-+ }
-+
-+ i2s->base = ioremap_nocache(i2s->mem->start, resource_size(i2s->mem));
-+ if (!i2s->base) {
-+ ret = -EBUSY;
-+ goto err_release_mem_region;
-+ }
-+
-+ i2s->phys_base = i2s->mem->start;
-+
-+ i2s->clk_aic = clk_get(&pdev->dev, "aic");
-+ if (IS_ERR(i2s->clk_aic)) {
-+ ret = PTR_ERR(i2s->clk_aic);
-+ goto err_iounmap;
-+ }
-+
-+ i2s->clk_i2s = clk_get(&pdev->dev, "i2s");
-+ if (IS_ERR(i2s->clk_i2s)) {
-+ ret = PTR_ERR(i2s->clk_i2s);
-+ goto err_clk_put_aic;
-+ }
-+
-+ clk_enable(i2s->clk_aic);
-+
-+ jz4740_i2c_init_pcm_config(i2s);
-+
-+ jz4740_i2s_dai.private_data = i2s;
-+ ret = snd_soc_register_dai(&jz4740_i2s_dai);
-+
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to register DAI\n");
-+ goto err_clk_put_i2s;
-+ }
-+
-+ platform_set_drvdata(pdev, i2s);
-+
-+ return 0;
-+
-+err_clk_put_i2s:
-+ clk_disable(i2s->clk_aic);
-+ clk_put(i2s->clk_i2s);
-+err_clk_put_aic:
-+ clk_put(i2s->clk_aic);
-+err_iounmap:
-+ iounmap(i2s->base);
-+err_release_mem_region:
-+ release_mem_region(i2s->mem->start, resource_size(i2s->mem));
-+err_free:
-+ kfree(i2s);
-+
-+ return ret;
-+}
-+
-+static int __devexit jz4740_i2s_dev_remove(struct platform_device *pdev)
-+{
-+ struct jz4740_i2s *i2s = platform_get_drvdata(pdev);
-+
-+ snd_soc_unregister_dai(&jz4740_i2s_dai);
-+
-+ clk_disable(i2s->clk_aic);
-+ clk_put(i2s->clk_i2s);
-+ clk_put(i2s->clk_aic);
-+
-+ iounmap(i2s->base);
-+ release_mem_region(i2s->mem->start, resource_size(i2s->mem));
-+
-+ platform_set_drvdata(pdev, NULL);
-+ kfree(i2s);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver jz4740_i2s_driver = {
-+ .probe = jz4740_i2s_dev_probe,
-+ .remove = __devexit_p(jz4740_i2s_dev_remove),
-+ .driver = {
-+ .name = "jz4740-i2s",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init jz4740_i2s_init(void)
-+{
-+ return platform_driver_register(&jz4740_i2s_driver);
-+}
-+module_init(jz4740_i2s_init);
-+
-+static void __exit jz4740_i2s_exit(void)
-+{
-+ platform_driver_unregister(&jz4740_i2s_driver);
-+}
-+module_exit(jz4740_i2s_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen, <lars@metafoo.de>");
-+MODULE_DESCRIPTION("Ingenic JZ4740 SoC I2S driver");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:jz4740-i2s");
---- /dev/null
-+++ b/sound/soc/jz4740/jz4740-i2s.h
-@@ -0,0 +1,18 @@
-+/*
-+ * 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 _JZ4740_I2S_H
-+#define _JZ4740_I2S_H
-+
-+/* I2S clock source */
-+#define JZ4740_I2S_CLKSRC_EXT 0
-+#define JZ4740_I2S_CLKSRC_PLL 1
-+
-+#define JZ4740_I2S_BIT_CLK 0
-+
-+extern struct snd_soc_dai jz4740_i2s_dai;
-+
-+#endif
---- /dev/null
-+++ b/sound/soc/jz4740/jz4740-pcm.c
-@@ -0,0 +1,373 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/interrupt.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+
-+#include <linux/dma-mapping.h>
-+
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+
-+#include <asm/mach-jz4740/dma.h>
-+#include "jz4740-pcm.h"
-+
-+struct jz4740_runtime_data {
-+ unsigned long dma_period;
-+ dma_addr_t dma_start;
-+ dma_addr_t dma_pos;
-+ dma_addr_t dma_end;
-+
-+ struct jz4740_dma_chan *dma;
-+
-+ dma_addr_t fifo_addr;
-+};
-+
-+/* identify hardware playback capabilities */
-+static const struct snd_pcm_hardware jz4740_pcm_hardware = {
-+ .info = SNDRV_PCM_INFO_MMAP |
-+ SNDRV_PCM_INFO_MMAP_VALID |
-+ SNDRV_PCM_INFO_INTERLEAVED |
-+ SNDRV_PCM_INFO_BLOCK_TRANSFER,
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8,
-+
-+ .rates = SNDRV_PCM_RATE_8000_48000,
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ .period_bytes_min = 16,
-+ .period_bytes_max = 2 * PAGE_SIZE,
-+ .periods_min = 2,
-+ .periods_max = 128,
-+ .buffer_bytes_max = 128 * 2 * PAGE_SIZE,
-+ .fifo_size = 32,
-+};
-+
-+static void jz4740_pcm_start_transfer(struct jz4740_runtime_data *prtd,
-+ struct snd_pcm_substream *substream)
-+{
-+ unsigned long count;
-+
-+ if (prtd->dma_pos == prtd->dma_end)
-+ prtd->dma_pos = prtd->dma_start;
-+
-+ if (prtd->dma_pos + prtd->dma_period > prtd->dma_end)
-+ count = prtd->dma_end - prtd->dma_pos;
-+ else
-+ count = prtd->dma_period;
-+
-+ jz4740_dma_disable(prtd->dma);
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ jz4740_dma_set_src_addr(prtd->dma, prtd->dma_pos);
-+ jz4740_dma_set_dst_addr(prtd->dma, prtd->fifo_addr);
-+ } else {
-+ jz4740_dma_set_src_addr(prtd->dma, prtd->fifo_addr);
-+ jz4740_dma_set_dst_addr(prtd->dma, prtd->dma_pos);
-+ }
-+
-+ jz4740_dma_set_transfer_count(prtd->dma, count);
-+
-+ prtd->dma_pos += count;
-+
-+ jz4740_dma_enable(prtd->dma);
-+}
-+
-+static void jz4740_pcm_dma_transfer_done(struct jz4740_dma_chan *dma, int err,
-+ void *dev_id)
-+{
-+ struct snd_pcm_substream *substream = dev_id;
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct jz4740_runtime_data *prtd = runtime->private_data;
-+
-+ snd_pcm_period_elapsed(substream);
-+
-+ jz4740_pcm_start_transfer(prtd, substream);
-+}
-+
-+static int jz4740_pcm_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct jz4740_runtime_data *prtd = runtime->private_data;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct jz4740_pcm_config *config;
-+
-+ config = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);
-+
-+ if (!config)
-+ return 0;
-+
-+ if (!prtd->dma) {
-+ if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
-+ prtd->dma = jz4740_dma_request(substream, "PCM Capture");
-+ else
-+ prtd->dma = jz4740_dma_request(substream, "PCM Playback");
-+ }
-+
-+ if (!prtd->dma)
-+ return -EBUSY;
-+
-+ jz4740_dma_configure(prtd->dma, &config->dma_config);
-+ prtd->fifo_addr = config->fifo_addr;
-+
-+ jz4740_dma_set_complete_cb(prtd->dma, jz4740_pcm_dma_transfer_done);
-+
-+ snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
-+ runtime->dma_bytes = params_buffer_bytes(params);
-+
-+ prtd->dma_period = params_period_bytes(params);
-+ prtd->dma_start = runtime->dma_addr;
-+ prtd->dma_pos = prtd->dma_start;
-+ prtd->dma_end = prtd->dma_start + runtime->dma_bytes;
-+
-+ return 0;
-+}
-+
-+static int jz4740_pcm_hw_free(struct snd_pcm_substream *substream)
-+{
-+ struct jz4740_runtime_data *prtd = substream->runtime->private_data;
-+
-+ snd_pcm_set_runtime_buffer(substream, NULL);
-+ if (prtd->dma) {
-+ jz4740_dma_free(prtd->dma);
-+ prtd->dma = NULL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int jz4740_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct jz4740_runtime_data *prtd = substream->runtime->private_data;
-+
-+ if (!prtd->dma)
-+ return -EBUSY;
-+
-+ prtd->dma_pos = prtd->dma_start;
-+
-+ return 0;
-+}
-+
-+static int jz4740_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct jz4740_runtime_data *prtd = runtime->private_data;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ jz4740_pcm_start_transfer(prtd, substream);
-+ break;
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ jz4740_dma_disable(prtd->dma);
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+static snd_pcm_uframes_t jz4740_pcm_pointer(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct jz4740_runtime_data *prtd = runtime->private_data;
-+ unsigned long byte_offset;
-+ snd_pcm_uframes_t offset;
-+ struct jz4740_dma_chan *dma = prtd->dma;
-+
-+ /* prtd->dma_pos points to the end of the current transfer. So by
-+ * subtracting prdt->dma_start we get the offset to the end of the
-+ * current period in bytes. By subtracting the residue of the transfer
-+ * we get the current offset in bytes. */
-+ byte_offset = prtd->dma_pos - prtd->dma_start;
-+ byte_offset -= jz4740_dma_get_residue(dma);
-+
-+ offset = bytes_to_frames(runtime, byte_offset);
-+ if (offset >= runtime->buffer_size)
-+ offset = 0;
-+
-+ return offset;
-+}
-+
-+static int jz4740_pcm_open(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct jz4740_runtime_data *prtd;
-+
-+ prtd = kzalloc(sizeof(*prtd), GFP_KERNEL);
-+ if (prtd == NULL)
-+ return -ENOMEM;
-+
-+ snd_soc_set_runtime_hwparams(substream, &jz4740_pcm_hardware);
-+
-+ runtime->private_data = prtd;
-+
-+ return 0;
-+}
-+
-+static int jz4740_pcm_close(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct jz4740_runtime_data *prtd = runtime->private_data;
-+
-+ kfree(prtd);
-+
-+ return 0;
-+}
-+
-+static int jz4740_pcm_mmap(struct snd_pcm_substream *substream,
-+ struct vm_area_struct *vma)
-+{
-+ return remap_pfn_range(vma, vma->vm_start,
-+ substream->dma_buffer.addr >> PAGE_SHIFT,
-+ vma->vm_end - vma->vm_start, vma->vm_page_prot);
-+}
-+
-+static struct snd_pcm_ops jz4740_pcm_ops = {
-+ .open = jz4740_pcm_open,
-+ .close = jz4740_pcm_close,
-+ .ioctl = snd_pcm_lib_ioctl,
-+ .hw_params = jz4740_pcm_hw_params,
-+ .hw_free = jz4740_pcm_hw_free,
-+ .prepare = jz4740_pcm_prepare,
-+ .trigger = jz4740_pcm_trigger,
-+ .pointer = jz4740_pcm_pointer,
-+ .mmap = jz4740_pcm_mmap,
-+};
-+
-+static int jz4740_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
-+{
-+ struct snd_pcm_substream *substream = pcm->streams[stream].substream;
-+ struct snd_dma_buffer *buf = &substream->dma_buffer;
-+ size_t size = jz4740_pcm_hardware.buffer_bytes_max;
-+
-+ buf->dev.type = SNDRV_DMA_TYPE_DEV;
-+ buf->dev.dev = pcm->card->dev;
-+ buf->private_data = NULL;
-+
-+ buf->area = dma_alloc_noncoherent(pcm->card->dev, size,
-+ &buf->addr, GFP_KERNEL);
-+ if (!buf->area)
-+ return -ENOMEM;
-+
-+ buf->bytes = size;
-+
-+ return 0;
-+}
-+
-+static void jz4740_pcm_free(struct snd_pcm *pcm)
-+{
-+ struct snd_pcm_substream *substream;
-+ struct snd_dma_buffer *buf;
-+ int stream;
-+
-+ for (stream = 0; stream < SNDRV_PCM_STREAM_LAST; ++stream) {
-+ substream = pcm->streams[stream].substream;
-+ if (!substream)
-+ continue;
-+
-+ buf = &substream->dma_buffer;
-+ if (!buf->area)
-+ continue;
-+
-+ dma_free_noncoherent(pcm->card->dev, buf->bytes, buf->area,
-+ buf->addr);
-+ buf->area = NULL;
-+ }
-+}
-+
-+static u64 jz4740_pcm_dmamask = DMA_BIT_MASK(32);
-+
-+int jz4740_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
-+ struct snd_pcm *pcm)
-+{
-+ int ret = 0;
-+
-+ if (!card->dev->dma_mask)
-+ card->dev->dma_mask = &jz4740_pcm_dmamask;
-+
-+ if (!card->dev->coherent_dma_mask)
-+ card->dev->coherent_dma_mask = DMA_BIT_MASK(32);
-+
-+ if (dai->playback.channels_min) {
-+ ret = jz4740_pcm_preallocate_dma_buffer(pcm,
-+ SNDRV_PCM_STREAM_PLAYBACK);
-+ if (ret)
-+ goto err;
-+ }
-+
-+ if (dai->capture.channels_min) {
-+ ret = jz4740_pcm_preallocate_dma_buffer(pcm,
-+ SNDRV_PCM_STREAM_CAPTURE);
-+ if (ret)
-+ goto err;
-+ }
-+
-+err:
-+ return ret;
-+}
-+
-+struct snd_soc_platform jz4740_soc_platform = {
-+ .name = "jz4740-pcm",
-+ .pcm_ops = &jz4740_pcm_ops,
-+ .pcm_new = jz4740_pcm_new,
-+ .pcm_free = jz4740_pcm_free,
-+};
-+EXPORT_SYMBOL_GPL(jz4740_soc_platform);
-+
-+static int __devinit jz4740_pcm_probe(struct platform_device *pdev)
-+{
-+ return snd_soc_register_platform(&jz4740_soc_platform);
-+}
-+
-+static int __devexit jz4740_pcm_remove(struct platform_device *pdev)
-+{
-+ snd_soc_unregister_platform(&jz4740_soc_platform);
-+ return 0;
-+}
-+
-+static struct platform_driver jz4740_pcm_driver = {
-+ .probe = jz4740_pcm_probe,
-+ .remove = __devexit_p(jz4740_pcm_remove),
-+ .driver = {
-+ .name = "jz4740-pcm",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init jz4740_soc_platform_init(void)
-+{
-+ return platform_driver_register(&jz4740_pcm_driver);
-+}
-+module_init(jz4740_soc_platform_init);
-+
-+static void __exit jz4740_soc_platform_exit(void)
-+{
-+ return platform_driver_unregister(&jz4740_pcm_driver);
-+}
-+module_exit(jz4740_soc_platform_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("Ingenic SoC JZ4740 PCM driver");
-+MODULE_LICENSE("GPL");
---- /dev/null
-+++ b/sound/soc/jz4740/jz4740-pcm.h
-@@ -0,0 +1,22 @@
-+/*
-+ *
-+ * 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 _JZ4740_PCM_H
-+#define _JZ4740_PCM_H
-+
-+#include <linux/dma-mapping.h>
-+#include <asm/mach-jz4740/dma.h>
-+
-+/* platform data */
-+extern struct snd_soc_platform jz4740_soc_platform;
-+
-+struct jz4740_pcm_config {
-+ struct jz4740_dma_config dma_config;
-+ phys_addr_t fifo_addr;
-+};
-+
-+#endif
diff --git a/target/linux/xburst/patches-2.6.35/065-qi_lb60-sound.patch b/target/linux/xburst/patches-2.6.35/065-qi_lb60-sound.patch
deleted file mode 100644
index cb4a5a26c5..0000000000
--- a/target/linux/xburst/patches-2.6.35/065-qi_lb60-sound.patch
+++ /dev/null
@@ -1,211 +0,0 @@
-From 498365d473a863fdfceff28315ce8561752bc356 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 19 Jun 2010 16:52:51 +0200
-Subject: [PATCH] ASoC: JZ4740: Add qi_lb60 board driver
-
-This patch adds ASoC support for the qi_lb60 board.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
-Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
----
- sound/soc/jz4740/Kconfig | 9 +++
- sound/soc/jz4740/Makefile | 4 +
- sound/soc/jz4740/qi_lb60.c | 166 ++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 179 insertions(+), 0 deletions(-)
- create mode 100644 sound/soc/jz4740/qi_lb60.c
-
---- a/sound/soc/jz4740/Kconfig
-+++ b/sound/soc/jz4740/Kconfig
-@@ -12,3 +12,12 @@ config SND_JZ4740_SOC_I2S
- help
- Say Y if you want to use I2S protocol and I2S codec on Ingenic JZ4740
- based boards.
-+
-+config SND_JZ4740_SOC_QI_LB60
-+ tristate "SoC Audio support for Qi LB60"
-+ depends on SND_JZ4740_SOC && JZ4740_QI_LB60
-+ select SND_JZ4740_SOC_I2S
-+ select SND_SOC_JZ4740_CODEC
-+ help
-+ Say Y if you want to add support for ASoC audio on the Qi LB60 board
-+ a.k.a Qi Ben NanoNote.
---- a/sound/soc/jz4740/Makefile
-+++ b/sound/soc/jz4740/Makefile
-@@ -7,3 +7,7 @@ snd-soc-jz4740-i2s-objs := jz4740-i2s.o
- obj-$(CONFIG_SND_JZ4740_SOC) += snd-soc-jz4740.o
- obj-$(CONFIG_SND_JZ4740_SOC_I2S) += snd-soc-jz4740-i2s.o
-
-+# Jz4740 Machine Support
-+snd-soc-qi-lb60-objs := qi_lb60.o
-+
-+obj-$(CONFIG_SND_JZ4740_SOC_QI_LB60) += snd-soc-qi-lb60.o
---- /dev/null
-+++ b/sound/soc/jz4740/qi_lb60.c
-@@ -0,0 +1,166 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/timer.h>
-+#include <linux/interrupt.h>
-+#include <linux/platform_device.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <linux/gpio.h>
-+
-+#include "../codecs/jz4740.h"
-+#include "jz4740-pcm.h"
-+#include "jz4740-i2s.h"
-+
-+
-+#define QI_LB60_SND_GPIO JZ_GPIO_PORTB(29)
-+#define QI_LB60_AMP_GPIO JZ_GPIO_PORTD(4)
-+
-+static int qi_lb60_spk_event(struct snd_soc_dapm_widget *widget,
-+ struct snd_kcontrol *ctrl, int event)
-+{
-+ int on = 0;
-+ if (event & SND_SOC_DAPM_POST_PMU)
-+ on = 1;
-+ else if (event & SND_SOC_DAPM_PRE_PMD)
-+ on = 0;
-+
-+ gpio_set_value(QI_LB60_SND_GPIO, on);
-+ gpio_set_value(QI_LB60_AMP_GPIO, on);
-+
-+ return 0;
-+}
-+
-+static const struct snd_soc_dapm_widget qi_lb60_widgets[] = {
-+ SND_SOC_DAPM_SPK("Speaker", qi_lb60_spk_event),
-+ SND_SOC_DAPM_MIC("Mic", NULL),
-+};
-+
-+static const struct snd_soc_dapm_route qi_lb60_routes[] = {
-+ {"Mic", NULL, "MIC"},
-+ {"Speaker", NULL, "LOUT"},
-+ {"Speaker", NULL, "ROUT"},
-+};
-+
-+#define QI_LB60_DAIFMT (SND_SOC_DAIFMT_I2S | \
-+ SND_SOC_DAIFMT_NB_NF | \
-+ SND_SOC_DAIFMT_CBM_CFM)
-+
-+static int qi_lb60_codec_init(struct snd_soc_codec *codec)
-+{
-+ int ret;
-+ struct snd_soc_dai *cpu_dai = codec->socdev->card->dai_link->cpu_dai;
-+
-+ snd_soc_dapm_nc_pin(codec, "LIN");
-+ snd_soc_dapm_nc_pin(codec, "RIN");
-+
-+ ret = snd_soc_dai_set_fmt(cpu_dai, QI_LB60_DAIFMT);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set cpu dai format: %d\n", ret);
-+ return ret;
-+ }
-+
-+ snd_soc_dapm_new_controls(codec, qi_lb60_widgets, ARRAY_SIZE(qi_lb60_widgets));
-+ snd_soc_dapm_add_routes(codec, qi_lb60_routes, ARRAY_SIZE(qi_lb60_routes));
-+ snd_soc_dapm_sync(codec);
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_dai_link qi_lb60_dai = {
-+ .name = "jz4740",
-+ .stream_name = "jz4740",
-+ .cpu_dai = &jz4740_i2s_dai,
-+ .codec_dai = &jz4740_codec_dai,
-+ .init = qi_lb60_codec_init,
-+};
-+
-+static struct snd_soc_card qi_lb60 = {
-+ .name = "QI LB60",
-+ .dai_link = &qi_lb60_dai,
-+ .num_links = 1,
-+ .platform = &jz4740_soc_platform,
-+};
-+
-+static struct snd_soc_device qi_lb60_snd_devdata = {
-+ .card = &qi_lb60,
-+ .codec_dev = &soc_codec_dev_jz4740_codec,
-+};
-+
-+static struct platform_device *qi_lb60_snd_device;
-+
-+static int __init qi_lb60_init(void)
-+{
-+ int ret;
-+
-+ qi_lb60_snd_device = platform_device_alloc("soc-audio", -1);
-+
-+ if (!qi_lb60_snd_device)
-+ return -ENOMEM;
-+
-+ ret = gpio_request(QI_LB60_SND_GPIO, "SND");
-+ if (ret) {
-+ pr_err("qi_lb60 snd: Failed to request SND GPIO(%d): %d\n",
-+ QI_LB60_SND_GPIO, ret);
-+ goto err_device_put;
-+ }
-+
-+ ret = gpio_request(QI_LB60_AMP_GPIO, "AMP");
-+ if (ret) {
-+ pr_err("qi_lb60 snd: Failed to request AMP GPIO(%d): %d\n",
-+ QI_LB60_AMP_GPIO, ret);
-+ goto err_gpio_free_snd;
-+ }
-+
-+ gpio_direction_output(QI_LB60_SND_GPIO, 0);
-+ gpio_direction_output(QI_LB60_AMP_GPIO, 0);
-+
-+ platform_set_drvdata(qi_lb60_snd_device, &qi_lb60_snd_devdata);
-+ qi_lb60_snd_devdata.dev = &qi_lb60_snd_device->dev;
-+
-+ ret = platform_device_add(qi_lb60_snd_device);
-+ if (ret) {
-+ pr_err("qi_lb60 snd: Failed to add snd soc device: %d\n", ret);
-+ goto err_unset_pdata;
-+ }
-+
-+ return 0;
-+
-+err_unset_pdata:
-+ platform_set_drvdata(qi_lb60_snd_device, NULL);
-+/*err_gpio_free_amp:*/
-+ gpio_free(QI_LB60_AMP_GPIO);
-+err_gpio_free_snd:
-+ gpio_free(QI_LB60_SND_GPIO);
-+err_device_put:
-+ platform_device_put(qi_lb60_snd_device);
-+
-+ return ret;
-+}
-+module_init(qi_lb60_init);
-+
-+static void __exit qi_lb60_exit(void)
-+{
-+ gpio_free(QI_LB60_AMP_GPIO);
-+ gpio_free(QI_LB60_SND_GPIO);
-+ platform_device_unregister(qi_lb60_snd_device);
-+}
-+module_exit(qi_lb60_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("ALSA SoC QI LB60 Audio support");
-+MODULE_LICENSE("GPL v2");
diff --git a/target/linux/xburst/patches-2.6.35/066-n516-sound.patch b/target/linux/xburst/patches-2.6.35/066-n516-sound.patch
deleted file mode 100644
index d7b0543236..0000000000
--- a/target/linux/xburst/patches-2.6.35/066-n516-sound.patch
+++ /dev/null
@@ -1,327 +0,0 @@
-From 9a03a5a5c16698426ed181862b0dd30a0e0aad1a Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sun, 1 Aug 2010 21:34:54 +0200
-Subject: [PATCH] Add N516 sound SoC board driver
-
----
- sound/soc/jz4740/Kconfig | 8 ++
- sound/soc/jz4740/Makefile | 2 +
- sound/soc/jz4740/n516.c | 303 +++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 313 insertions(+), 0 deletions(-)
- create mode 100644 sound/soc/jz4740/n516.c
-
---- a/sound/soc/jz4740/Kconfig
-+++ b/sound/soc/jz4740/Kconfig
-@@ -21,3 +21,11 @@ config SND_JZ4740_SOC_QI_LB60
- help
- Say Y if you want to add support for ASoC audio on the Qi LB60 board
- a.k.a Qi Ben NanoNote.
-+
-+config SND_JZ4740_SOC_N516
-+ tristate "SoC Audio support for Hanvon N516 eBook reader"
-+ depends on SND_JZ4740_SOC && JZ4740_N516
-+ select SND_JZ4740_SOC_I2S
-+ select SND_SOC_JZ4740_CODEC
-+ help
-+ Say Y if you want to enable support for SoC audio on the Hanvon N516.
---- a/sound/soc/jz4740/Makefile
-+++ b/sound/soc/jz4740/Makefile
-@@ -9,5 +9,7 @@ obj-$(CONFIG_SND_JZ4740_SOC_I2S) += snd-
-
- # Jz4740 Machine Support
- snd-soc-qi-lb60-objs := qi_lb60.o
-+snd-soc-n516-objs := n516.o
-
- obj-$(CONFIG_SND_JZ4740_SOC_QI_LB60) += snd-soc-qi-lb60.o
-+obj-$(CONFIG_SND_JZ4740_SOC_N516) += snd-soc-n516.o
---- /dev/null
-+++ b/sound/soc/jz4740/n516.c
-@@ -0,0 +1,288 @@
-+/*
-+ * Copyright (C) 2009, Yauhen Kharuzhy <jekhor@gmail.com>
-+ * OpenInkpot project
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/interrupt.h>
-+#include <linux/platform_device.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/jack.h>
-+#include <linux/gpio.h>
-+#include <linux/workqueue.h>
-+
-+#include "../codecs/jz4740.h"
-+#include "jz4740-pcm.h"
-+#include "jz4740-i2s.h"
-+
-+#include <asm/mach-jz4740/board-n516.h>
-+
-+enum {
-+ N516_SPEAKER_AUTO = 0,
-+ N516_SPEAKER_OFF = 1,
-+ N516_SPEAKER_ON = 2,
-+};
-+
-+static int n516_speaker_mode;
-+static struct snd_soc_codec *n516_codec;
-+static struct work_struct n516_headphone_work;
-+
-+static void n516_ext_control(void)
-+{
-+ if (!n516_codec)
-+ return;
-+
-+ switch (n516_speaker_mode) {
-+ case N516_SPEAKER_ON:
-+ snd_soc_dapm_enable_pin(n516_codec, "Speaker");
-+ break;
-+ case N516_SPEAKER_OFF:
-+ snd_soc_dapm_disable_pin(n516_codec, "Speaker");
-+ break;
-+ case N516_SPEAKER_AUTO:
-+ if (snd_soc_dapm_get_pin_status(n516_codec, "Headphone"))
-+ snd_soc_dapm_disable_pin(n516_codec, "Speaker");
-+ else
-+ snd_soc_dapm_enable_pin(n516_codec, "Speaker");
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ /* signal a DAPM event */
-+ snd_soc_dapm_sync(n516_codec);
-+}
-+
-+static int n516_speaker_event(struct snd_soc_dapm_widget *widget,
-+ struct snd_kcontrol *ctrl, int event)
-+{
-+ int on = !SND_SOC_DAPM_EVENT_OFF(event);
-+
-+ gpio_set_value(GPIO_SPEAKER_ENABLE, on);
-+
-+ return 0;
-+}
-+
-+static void n516_headphone_event_work(struct work_struct *work)
-+{
-+ n516_ext_control();
-+}
-+
-+static int n516_headphone_event(struct snd_soc_dapm_widget *widget,
-+ struct snd_kcontrol *ctrl, int event)
-+{
-+ /* We can't call soc_dapm_sync from a event handler */
-+ if (event & (SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD))
-+ schedule_work(&n516_headphone_work);
-+ return 0;
-+}
-+
-+static const struct snd_soc_dapm_widget n516_widgets[] = {
-+ SND_SOC_DAPM_SPK("Speaker", n516_speaker_event),
-+ SND_SOC_DAPM_HP("Headphone", n516_headphone_event),
-+ SND_SOC_DAPM_MIC("Mic", NULL),
-+};
-+
-+static const struct snd_soc_dapm_route n516_routes[] = {
-+ {"Mic", NULL, "MIC"},
-+ {"Speaker", NULL, "LOUT"},
-+ {"Speaker", NULL, "ROUT"},
-+ {"Headphone", NULL, "LOUT"},
-+ {"Headphone", NULL, "ROUT"},
-+};
-+
-+static const char *n516_speaker_modes[] = {"Auto", "Off", "On"};
-+static const struct soc_enum n516_speaker_mode_enum =
-+ SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(n516_speaker_modes), n516_speaker_modes);
-+
-+static int n516_get_speaker_mode(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = n516_speaker_mode;
-+ return 0;
-+}
-+
-+static int n516_set_speaker_mode(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ if (n516_speaker_mode == ucontrol->value.integer.value[0])
-+ return 0;
-+
-+ n516_speaker_mode = ucontrol->value.integer.value[0];
-+ n516_ext_control();
-+ return 1;
-+}
-+
-+static const struct snd_kcontrol_new n516_controls[] = {
-+ SOC_ENUM_EXT("Speaker Function", n516_speaker_mode_enum,
-+ n516_get_speaker_mode, n516_set_speaker_mode),
-+};
-+
-+#define N516_DAIFMT (SND_SOC_DAIFMT_I2S | \
-+ SND_SOC_DAIFMT_NB_NF | \
-+ SND_SOC_DAIFMT_CBM_CFM)
-+
-+static int n516_codec_init(struct snd_soc_codec *codec)
-+{
-+ int ret;
-+ struct snd_soc_dai *cpu_dai = codec->socdev->card->dai_link->cpu_dai;
-+
-+ n516_codec = codec;
-+
-+ snd_soc_dapm_nc_pin(codec, "LIN");
-+ snd_soc_dapm_nc_pin(codec, "RIN");
-+
-+ ret = snd_soc_dai_set_fmt(cpu_dai, N516_DAIFMT);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set cpu dai format: %d\n", ret);
-+ return ret;
-+ }
-+
-+ ret = snd_soc_add_controls(codec, n516_controls,
-+ ARRAY_SIZE(n516_controls));
-+ if (ret) {
-+ dev_err(codec->dev, "Failed to add controls: %d\n", ret);
-+ return ret;
-+ }
-+
-+ ret = snd_soc_dapm_new_controls(codec, n516_widgets,
-+ ARRAY_SIZE(n516_widgets));
-+ if (ret) {
-+ dev_err(codec->dev, "Failed to add dapm controls: %d\n", ret);
-+ return ret;
-+ }
-+
-+ ret = snd_soc_dapm_add_routes(codec, n516_routes, ARRAY_SIZE(n516_routes));
-+ if (ret) {
-+ dev_err(codec->dev, "Failed to add dapm routes: %d\n", ret);
-+ return ret;
-+ }
-+
-+ snd_soc_dapm_sync(codec);
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_dai_link n516_dai = {
-+ .name = "jz-codec",
-+ .stream_name = "jz4740",
-+ .cpu_dai = &jz4740_i2s_dai,
-+ .codec_dai = &jz4740_codec_dai,
-+ .init = n516_codec_init,
-+};
-+
-+static struct snd_soc_card n516_card = {
-+ .name = "N516",
-+ .dai_link = &n516_dai,
-+ .num_links = 1,
-+ .platform = &jz4740_soc_platform,
-+};
-+
-+static struct snd_soc_device n516_snd_devdata = {
-+ .card = &n516_card,
-+ .codec_dev = &soc_codec_dev_jz4740_codec,
-+};
-+
-+static struct platform_device *n516_snd_device;
-+
-+static struct snd_soc_jack n516_hp_jack;
-+
-+static struct snd_soc_jack_pin n516_hp_pin = {
-+ .pin = "Headphone",
-+ .mask = SND_JACK_HEADPHONE,
-+};
-+
-+static struct snd_soc_jack_gpio n516_hp_gpio = {
-+ .gpio = GPIO_HPHONE_DETECT,
-+ .name = "Headphone detect",
-+ .report = SND_JACK_HEADPHONE,
-+ .debounce_time = 100,
-+};
-+
-+static int __init n516_add_headphone_jack(void)
-+{
-+ int ret;
-+
-+ ret = snd_soc_jack_new(&n516_card, "Headphone jack",
-+ SND_JACK_HEADPHONE, &n516_hp_jack);
-+ if (ret)
-+ return ret;
-+
-+ ret = snd_soc_jack_add_pins(&n516_hp_jack, 1, &n516_hp_pin);
-+ if (ret)
-+ return ret;
-+
-+ ret = snd_soc_jack_add_gpios(&n516_hp_jack, 1, &n516_hp_gpio);
-+
-+ return ret;
-+}
-+
-+static int __init n516_init(void)
-+{
-+ int ret;
-+
-+ n516_snd_device = platform_device_alloc("soc-audio", -1);
-+
-+ if (!n516_snd_device)
-+ return -ENOMEM;
-+
-+ ret = gpio_request(GPIO_SPEAKER_ENABLE, "Speaker enable");
-+ if (ret) {
-+ pr_err("n516 snd: Failed to request SPEAKER_ENABLE GPIO(%d): %d\n",
-+ GPIO_SPEAKER_ENABLE, ret);
-+ goto err_device_put;
-+ }
-+
-+ gpio_direction_output(GPIO_SPEAKER_ENABLE, 0);
-+ INIT_WORK(&n516_headphone_work, n516_headphone_event_work);
-+
-+ platform_set_drvdata(n516_snd_device, &n516_snd_devdata);
-+ n516_snd_devdata.dev = &n516_snd_device->dev;
-+ ret = platform_device_add(n516_snd_device);
-+ if (ret) {
-+ pr_err("n516 snd: Failed to add snd soc device: %d\n", ret);
-+ goto err_unset_pdata;
-+ }
-+
-+ ret = n516_add_headphone_jack();
-+ /* We can live without it, so just print a warning */
-+ if (ret)
-+ pr_warning("n516 snd: Failed to initalise headphone jack: %d\n", ret);
-+
-+ return 0;
-+
-+err_unset_pdata:
-+ platform_set_drvdata(n516_snd_device, NULL);
-+/*err_gpio_free_speaker:*/
-+ gpio_free(GPIO_SPEAKER_ENABLE);
-+err_device_put:
-+ platform_device_put(n516_snd_device);
-+
-+ return ret;
-+}
-+module_init(n516_init);
-+
-+static void __exit n516_exit(void)
-+{
-+ snd_soc_jack_free_gpios(&n516_hp_jack, 1, &n516_hp_gpio);
-+ gpio_free(GPIO_SPEAKER_ENABLE);
-+ platform_device_unregister(n516_snd_device);
-+}
-+module_exit(n516_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("ALSA SoC N516 Audio support");
-+MODULE_LICENSE("GPL v2");
diff --git a/target/linux/xburst/patches-2.6.35/067-n526-sound.patch b/target/linux/xburst/patches-2.6.35/067-n526-sound.patch
deleted file mode 100644
index 9413e57383..0000000000
--- a/target/linux/xburst/patches-2.6.35/067-n526-sound.patch
+++ /dev/null
@@ -1,195 +0,0 @@
-From b1c42b78b7bd779288f340e202820aa2c2cf6629 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:38:41 +0200
-Subject: [PATCH] Add N526 sound SoC board driver
-
----
- sound/soc/jz4740/Kconfig | 8 ++
- sound/soc/jz4740/Makefile | 2 +
- sound/soc/jz4740/n526.c | 169 +++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 179 insertions(+), 0 deletions(-)
- create mode 100644 sound/soc/jz4740/n526.c
-
---- a/sound/soc/jz4740/Kconfig
-+++ b/sound/soc/jz4740/Kconfig
-@@ -29,3 +29,11 @@ config SND_JZ4740_SOC_N516
- select SND_SOC_JZ4740_CODEC
- help
- Say Y if you want to enable support for SoC audio on the Hanvon N516.
-+
-+config SND_JZ4740_SOC_N526
-+ tristate "SoC Audio support for Hanvon N526 eBook reader"
-+ depends on SND_JZ4740_SOC && JZ4740_N526
-+ select SND_JZ4740_SOC_I2S
-+ select SND_SOC_JZ4740_CODEC
-+ help
-+ Say Y if you want to enable support for SoC audio on the Hanvon N526.
---- a/sound/soc/jz4740/Makefile
-+++ b/sound/soc/jz4740/Makefile
-@@ -10,6 +10,8 @@ obj-$(CONFIG_SND_JZ4740_SOC_I2S) += snd-
- # Jz4740 Machine Support
- snd-soc-qi-lb60-objs := qi_lb60.o
- snd-soc-n516-objs := n516.o
-+snd-soc-n526-objs := n526.o
-
- obj-$(CONFIG_SND_JZ4740_SOC_QI_LB60) += snd-soc-qi-lb60.o
- obj-$(CONFIG_SND_JZ4740_SOC_N516) += snd-soc-n516.o
-+obj-$(CONFIG_SND_JZ4740_SOC_N526) += snd-soc-n526.o
---- /dev/null
-+++ b/sound/soc/jz4740/n526.c
-@@ -0,0 +1,155 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/timer.h>
-+#include <linux/interrupt.h>
-+#include <linux/platform_device.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <linux/gpio.h>
-+
-+#include "../codecs/jz4740.h"
-+#include "jz4740-pcm.h"
-+#include "jz4740-i2s.h"
-+
-+#define N526_AMP_EN_GPIO JZ_GPIO_PORTD(4)
-+
-+static int n526_spk_event(struct snd_soc_dapm_widget *widget,
-+ struct snd_kcontrol *ctrl, int event)
-+{
-+ gpio_set_value(N526_AMP_EN_GPIO, !SND_SOC_DAPM_EVENT_OFF(event));
-+ return 0;
-+}
-+
-+static const struct snd_soc_dapm_widget n526_widgets[] = {
-+ SND_SOC_DAPM_SPK("Speaker", n526_spk_event),
-+ SND_SOC_DAPM_HP("Headphone", NULL),
-+ SND_SOC_DAPM_MIC("Mic", NULL),
-+};
-+
-+static const struct snd_soc_dapm_route n526_routes[] = {
-+ {"Mic", NULL, "MIC"},
-+ {"Speaker", NULL, "LOUT"},
-+ {"Speaker", NULL, "ROUT"},
-+ {"Headphone", NULL, "LOUT"},
-+ {"Headphone", NULL, "ROUT"},
-+};
-+
-+static const struct snd_kcontrol_new n526_controls[] = {
-+ SOC_DAPM_PIN_SWITCH("Speaker"),
-+};
-+
-+#define N526_DAIFMT (SND_SOC_DAIFMT_I2S | \
-+ SND_SOC_DAIFMT_NB_NF | \
-+ SND_SOC_DAIFMT_CBM_CFM)
-+
-+static int n526_codec_init(struct snd_soc_codec *codec)
-+{
-+ int ret;
-+ struct snd_soc_dai *cpu_dai = codec->socdev->card->dai_link->cpu_dai;
-+
-+ snd_soc_dapm_nc_pin(codec, "LIN");
-+ snd_soc_dapm_nc_pin(codec, "RIN");
-+
-+ ret = snd_soc_dai_set_fmt(cpu_dai, N526_DAIFMT);
-+ if (ret < 0) {
-+ dev_err(codec->dev, "Failed to set cpu dai format: %d\n", ret);
-+ return ret;
-+ }
-+
-+ snd_soc_dapm_new_controls(codec, n526_widgets, ARRAY_SIZE(n526_widgets));
-+
-+ snd_soc_add_controls(codec, n526_controls,
-+ ARRAY_SIZE(n526_controls));
-+
-+ snd_soc_dapm_add_routes(codec, n526_routes, ARRAY_SIZE(n526_routes));
-+
-+ snd_soc_dapm_sync(codec);
-+
-+ return 0;
-+}
-+
-+static struct snd_soc_dai_link n526_dai = {
-+ .name = "jz-codec",
-+ .stream_name = "jz4740",
-+ .cpu_dai = &jz4740_i2s_dai,
-+ .codec_dai = &jz4740_codec_dai,
-+ .init = n526_codec_init,
-+};
-+
-+static struct snd_soc_card n526 = {
-+ .name = "N526",
-+ .dai_link = &n526_dai,
-+ .num_links = 1,
-+ .platform = &jz4740_soc_platform,
-+};
-+
-+static struct snd_soc_device n526_snd_devdata = {
-+ .card = &n526,
-+ .codec_dev = &soc_codec_dev_jz4740_codec,
-+};
-+
-+static struct platform_device *n526_snd_device;
-+
-+static int __init n526_init(void)
-+{
-+ int ret;
-+
-+ n526_snd_device = platform_device_alloc("soc-audio", -1);
-+
-+ if (!n526_snd_device)
-+ return -ENOMEM;
-+
-+ ret = gpio_request(N526_AMP_EN_GPIO, "AMP");
-+ if (ret) {
-+ pr_err("n526 snd: Failed to request AMP GPIO(%d): %d\n",
-+ N526_AMP_EN_GPIO, ret);
-+ goto err_device_put;
-+ }
-+
-+ gpio_direction_output(JZ_GPIO_PORTD(4), 0);
-+
-+ platform_set_drvdata(n526_snd_device, &n526_snd_devdata);
-+ n526_snd_devdata.dev = &n526_snd_device->dev;
-+ ret = platform_device_add(n526_snd_device);
-+ if (ret) {
-+ pr_err("n526 snd: Failed to add snd soc device: %d\n", ret);
-+ goto err_unset_pdata;
-+ }
-+
-+ return 0;
-+
-+err_unset_pdata:
-+ platform_set_drvdata(n526_snd_device, NULL);
-+ gpio_free(N526_AMP_EN_GPIO);
-+err_device_put:
-+ platform_device_put(n526_snd_device);
-+
-+ return ret;
-+}
-+module_init(n526_init);
-+
-+static void __exit n526_exit(void)
-+{
-+ gpio_free(N526_AMP_EN_GPIO);
-+ platform_device_unregister(n526_snd_device);
-+}
-+module_exit(n526_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("ALSA SoC N526 audio support");
-+MODULE_LICENSE("GPL v2");
diff --git a/target/linux/xburst/patches-2.6.35/101-lcm.patch b/target/linux/xburst/patches-2.6.35/101-lcm.patch
deleted file mode 100644
index 7bcd2afb8e..0000000000
--- a/target/linux/xburst/patches-2.6.35/101-lcm.patch
+++ /dev/null
@@ -1,295 +0,0 @@
-From 2e27414748a56d8583c151d926da54e7e9d2c23f Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sun, 1 Aug 2010 21:19:40 +0200
-Subject: [PATCH] Add ili8960 lcd driver
-
----
- drivers/video/backlight/Kconfig | 7 +
- drivers/video/backlight/Makefile | 1 +
- drivers/video/backlight/ili8960.c | 254 +++++++++++++++++++++++++++++++++++++
- 3 files changed, 262 insertions(+), 0 deletions(-)
- create mode 100644 drivers/video/backlight/ili8960.c
-
---- a/drivers/video/backlight/Kconfig
-+++ b/drivers/video/backlight/Kconfig
-@@ -59,6 +59,13 @@ config LCD_LTV350QV
-
- The LTV350QV panel is present on all ATSTK1000 boards.
-
-+config LCD_ILI8960
-+ tristate "Ilitek ili8960 LCD driver"
-+ depends on LCD_CLASS_DEVICE && SPI
-+ default n
-+ help
-+ Driver for the Ilitek ili8960 LCD controller chip.
-+
- config LCD_ILI9320
- tristate
- help
---- a/drivers/video/backlight/Makefile
-+++ b/drivers/video/backlight/Makefile
-@@ -6,6 +6,7 @@ obj-$(CONFIG_LCD_HP700) += jornada72
- obj-$(CONFIG_LCD_L4F00242T03) += l4f00242t03.o
- obj-$(CONFIG_LCD_LMS283GF05) += lms283gf05.o
- obj-$(CONFIG_LCD_LTV350QV) += ltv350qv.o
-+obj-$(CONFIG_LCD_ILI8960) += ili8960.o
- obj-$(CONFIG_LCD_ILI9320) += ili9320.o
- obj-$(CONFIG_LCD_PLATFORM) += platform_lcd.o
- obj-$(CONFIG_LCD_VGG2432A4) += vgg2432a4.o
---- /dev/null
-+++ b/drivers/video/backlight/ili8960.c
-@@ -0,0 +1,254 @@
-+/*
-+ * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * Driver for Ilitek ili8960 LCD
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/spi/spi.h>
-+#include <linux/lcd.h>
-+#include <linux/backlight.h>
-+#include <linux/delay.h>
-+
-+struct ili8960 {
-+ struct spi_device *spi;
-+ struct lcd_device *lcd;
-+ struct backlight_device *bl;
-+ unsigned enabled:1;
-+};
-+
-+static int ili8960_write_reg(struct spi_device *spi, uint8_t reg,
-+ uint8_t data)
-+{
-+ uint8_t buf[2];
-+ buf[0] = ((reg & 0x40) << 1) | (reg & 0x3f);
-+ buf[1] = data;
-+
-+ return spi_write(spi, buf, sizeof(buf));
-+}
-+
-+static void ili8960_power_disable(struct spi_device *spi)
-+{
-+ int ret = ili8960_write_reg(spi, 0x5, 0xc6) ;
-+ if (ret < 0)
-+ dev_err(&spi->dev, "Failed to disable power: %d\n", ret);
-+}
-+
-+static void ili8960_power_enable(struct spi_device *spi)
-+{
-+ ili8960_write_reg(spi, 0x5, 0xc7);
-+}
-+
-+
-+static int ili8960_set_power(struct lcd_device *lcd, int power)
-+{
-+ struct ili8960 *ili8960 = lcd_get_data(lcd);
-+
-+ switch (power) {
-+ case FB_BLANK_UNBLANK:
-+ mdelay(20);
-+ ili8960->enabled = 1;
-+ ili8960_power_enable(ili8960->spi);
-+ break;
-+ default:
-+ ili8960->enabled = 0;
-+ ili8960_power_disable(ili8960->spi);
-+ mdelay(20);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static int ili8960_set_contrast(struct lcd_device *lcd, int contrast)
-+{
-+ struct ili8960 *ili8960 = lcd_get_data(lcd);
-+ ili8960_write_reg(ili8960->spi, 0x0d, contrast);
-+ return 0;
-+}
-+
-+static int ili8960_set_mode(struct lcd_device *lcd, struct fb_videomode *mode)
-+{
-+ if (mode->xres != 320 && mode->yres != 240)
-+ return -EINVAL;
-+
-+ return 0;
-+}
-+
-+static ssize_t reg_write(struct device *dev, struct device_attribute *attr,
-+ const char *buf, size_t count)
-+{
-+ char *buf2;
-+ uint32_t reg = simple_strtoul(buf, &buf2, 10);
-+ uint32_t val = simple_strtoul(buf2 + 1, NULL, 10);
-+ struct ili8960 *ili8960 = dev_get_drvdata(dev);
-+
-+ if (reg < 0 || val < 0)
-+ return -EINVAL;
-+
-+ ili8960_write_reg(ili8960->spi, reg, val);
-+ return count;
-+}
-+
-+static DEVICE_ATTR(reg, 0644, NULL, reg_write);
-+
-+static ssize_t ili8960_show_brightness(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ int rc = -ENXIO;
-+
-+ return rc;
-+}
-+
-+static ssize_t ili8960_store_brightness(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
-+{
-+ char *endp;
-+ struct lcd_device *ld = to_lcd_device(dev);
-+ struct ili8960 *ili8960 = lcd_get_data(ld);
-+ int brightness = simple_strtoul(buf, &endp, 0);
-+
-+ if (brightness > 255 || brightness < 0)
-+ return -EINVAL;
-+
-+ ili8960_write_reg(ili8960->spi, 0x3, brightness);
-+
-+ return count;
-+}
-+
-+
-+static DEVICE_ATTR(brightness, 0644, ili8960_show_brightness,
-+ ili8960_store_brightness);
-+
-+static struct lcd_ops ili8960_lcd_ops = {
-+ .set_power = ili8960_set_power,
-+ .set_contrast = ili8960_set_contrast,
-+ .set_mode = ili8960_set_mode,
-+};
-+
-+static int __devinit ili8960_probe(struct spi_device *spi)
-+{
-+ int ret;
-+ struct ili8960 *ili8960;
-+
-+ ili8960 = kmalloc(sizeof(*ili8960), GFP_KERNEL);
-+
-+ spi->bits_per_word = 8;
-+ spi->mode = SPI_MODE_3 | SPI_3WIRE;
-+
-+ ret = spi_setup(spi);
-+ if (ret) {
-+ dev_err(&spi->dev, "Failed to setup spi\n");
-+ goto err_free_ili8960;
-+ }
-+
-+ ili8960->spi = spi;
-+
-+ ili8960->lcd = lcd_device_register("ili8960-lcd", &spi->dev, ili8960,
-+ &ili8960_lcd_ops);
-+
-+ if (IS_ERR(ili8960->lcd)) {
-+ ret = PTR_ERR(ili8960->lcd);
-+ dev_err(&spi->dev, "Failed to register lcd device: %d\n", ret);
-+ goto err_free_ili8960;
-+ }
-+
-+ ili8960->lcd->props.max_contrast = 255;
-+
-+ ret = device_create_file(&spi->dev, &dev_attr_reg);
-+ if (ret)
-+ goto err_unregister_lcd;
-+
-+ ret = device_create_file(&ili8960->lcd->dev, &dev_attr_brightness);
-+ if (ret)
-+ goto err_unregister_lcd;
-+
-+ ili8960->enabled = 1;
-+ dev_set_drvdata(&spi->dev, ili8960);
-+
-+ ili8960_write_reg(spi, 0x13, 0x01);
-+ ili8960_write_reg(spi, 0x5, 0xc7);
-+
-+ return 0;
-+err_unregister_lcd:
-+ lcd_device_unregister(ili8960->lcd);
-+err_free_ili8960:
-+ kfree(ili8960);
-+ return ret;
-+}
-+
-+static int __devexit ili8960_remove(struct spi_device *spi)
-+{
-+ struct ili8960 *ili8960 = spi_get_drvdata(spi);
-+#if 0
-+ if (ili8960->bl)
-+ backlight_device_unregister(ili8960->bl);
-+#endif
-+
-+ lcd_device_unregister(ili8960->lcd);
-+
-+ spi_set_drvdata(spi, NULL);
-+ kfree(ili8960);
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+
-+static int ili8960_suspend(struct spi_device *spi, pm_message_t state)
-+{
-+ struct ili8960 *ili8960 = spi_get_drvdata(spi);
-+ if (ili8960->enabled) {
-+ ili8960_power_disable(spi);
-+ mdelay(10);
-+ }
-+ return 0;
-+}
-+
-+static int ili8960_resume(struct spi_device *spi)
-+{
-+ struct ili8960 *ili8960 = spi_get_drvdata(spi);
-+ if (ili8960->enabled)
-+ ili8960_power_enable(spi);
-+ return 0;
-+}
-+
-+#else
-+#define ili8960_suspend NULL
-+#define ili8960_resume NULL
-+#endif
-+
-+static struct spi_driver ili8960_driver = {
-+ .driver = {
-+ .name = "ili8960",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = ili8960_probe,
-+ .remove = __devexit_p(ili8960_remove),
-+ .suspend = ili8960_suspend,
-+ .resume = ili8960_resume,
-+};
-+
-+static int __init ili8960_init(void)
-+{
-+ return spi_register_driver(&ili8960_driver);
-+}
-+module_init(ili8960_init);
-+
-+static void __exit ili8960_exit(void)
-+{
-+ return spi_unregister_driver(&ili8960_driver);
-+}
-+module_exit(ili8960_exit)
-+
-+MODULE_AUTHOR("Lars-Peter Clausen");
-+MODULE_LICENSE("GPL v2");
-+MODULE_DESCRIPTION("LCD driver for Ilitek ili8960");
-+MODULE_ALIAS("spi:ili8960");
diff --git a/target/linux/xburst/patches-2.6.35/106-gpio-charger.patch b/target/linux/xburst/patches-2.6.35/106-gpio-charger.patch
deleted file mode 100644
index f04f918cac..0000000000
--- a/target/linux/xburst/patches-2.6.35/106-gpio-charger.patch
+++ /dev/null
@@ -1,267 +0,0 @@
-From 97d812a16359f6c9afd2f866176828a7e6e071dc Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:29:31 +0200
-Subject: [PATCH] Add gpio chager driver
-
----
- drivers/power/Kconfig | 7 ++
- drivers/power/Makefile | 1 +
- drivers/power/gpio-charger.c | 185 ++++++++++++++++++++++++++++++++++++
- include/linux/power/gpio-charger.h | 28 ++++++
- 4 files changed, 221 insertions(+), 0 deletions(-)
- create mode 100644 drivers/power/gpio-charger.c
- create mode 100644 include/linux/power/gpio-charger.h
-
-diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
-index 1e5506b..f700b03 100644
---- a/drivers/power/Kconfig
-+++ b/drivers/power/Kconfig
-@@ -153,4 +153,11 @@ config BATTERY_JZ4740
- This driver can be build as a module. If so, the module will be
- called jz4740-battery.
-
-+config CHARGER_GPIO
-+ tristate "GPIO charger"
-+ depends on GPIOLIB
-+ help
-+ Say Y to include support for chargers indicating their status through
-+ a GPIO pin.
-+
- endif # POWER_SUPPLY
-diff --git a/drivers/power/Makefile b/drivers/power/Makefile
-index cf95009..51be41a 100644
---- a/drivers/power/Makefile
-+++ b/drivers/power/Makefile
-@@ -35,3 +35,4 @@ obj-$(CONFIG_BATTERY_MAX17040) += max17040_battery.o
- obj-$(CONFIG_BATTERY_Z2) += z2_battery.o
- obj-$(CONFIG_CHARGER_PCF50633) += pcf50633-charger.o
- obj-$(CONFIG_BATTERY_JZ4740) += jz4740-battery.o
-+obj-$(CONFIG_CHARGER_GPIO) += gpio-charger.o
-diff --git a/drivers/power/gpio-charger.c b/drivers/power/gpio-charger.c
-new file mode 100644
-index 0000000..b877f74
---- /dev/null
-+++ b/drivers/power/gpio-charger.c
-@@ -0,0 +1,185 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * Driver for chargers indicating their status through a GPIO pin
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/gpio.h>
-+#include <linux/init.h>
-+#include <linux/interrupt.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/power_supply.h>
-+#include <linux/slab.h>
-+#include <linux/types.h>
-+
-+#include <linux/power/gpio-charger.h>
-+
-+struct gpio_charger {
-+ const struct gpio_charger_platform_data *pdata;
-+
-+ int irq;
-+
-+ struct power_supply charger;
-+};
-+
-+static irqreturn_t gpio_charger_irq(int irq, void *devid)
-+{
-+ struct power_supply *charger = devid;
-+ power_supply_changed(charger);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static inline struct gpio_charger *psy_to_gpio_charger(struct power_supply *psy)
-+{
-+ return container_of(psy, struct gpio_charger, charger);
-+}
-+
-+static int gpio_charger_get_property(struct power_supply *psy,
-+ enum power_supply_property psp, union power_supply_propval *val)
-+{
-+ struct gpio_charger *gpio_charger = psy_to_gpio_charger(psy);
-+ const struct gpio_charger_platform_data *pdata = gpio_charger->pdata;
-+
-+ switch (psp) {
-+ case POWER_SUPPLY_PROP_ONLINE:
-+ val->intval = gpio_get_value(pdata->gpio);
-+ val->intval ^= pdata->gpio_active_low;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static enum power_supply_property gpio_charger_properties[] = {
-+ POWER_SUPPLY_PROP_ONLINE,
-+};
-+
-+static int __devinit gpio_charger_probe(struct platform_device *pdev)
-+{
-+ const struct gpio_charger_platform_data *pdata = pdev->dev.platform_data;
-+ struct gpio_charger *gpio_charger;
-+ struct power_supply *charger;
-+ int ret;
-+
-+ if (!pdata) {
-+ dev_err(&pdev->dev, "No platform data");
-+ return -EINVAL;
-+ }
-+
-+ gpio_charger = kzalloc(sizeof(*gpio_charger), GFP_KERNEL);
-+
-+ charger = &gpio_charger->charger;
-+
-+ charger->name = pdata->name;
-+ charger->type = pdata->type;
-+ charger->properties = gpio_charger_properties;
-+ charger->num_properties = ARRAY_SIZE(gpio_charger_properties);
-+ charger->get_property = gpio_charger_get_property;
-+ charger->supplied_to = pdata->batteries;
-+ charger->num_supplicants = pdata->num_batteries;
-+
-+ if (gpio_is_valid(pdata->gpio)) {
-+ ret = gpio_request(pdata->gpio, dev_name(&pdev->dev));
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to request gpio pin: %d\n", ret);
-+ goto err;
-+ }
-+ ret = gpio_direction_input(pdata->gpio);
-+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to set gpio to input: %d\n", ret);
-+ goto err_gpio_free;
-+ }
-+
-+ gpio_charger->irq = gpio_to_irq(pdata->gpio);
-+ if (gpio_charger->irq >= 0) {
-+ ret = request_irq(gpio_charger->irq, gpio_charger_irq,
-+ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
-+ dev_name(&pdev->dev), charger);
-+ if (ret) {
-+ dev_warn(&pdev->dev, "Failed to request online gpio irq: %d\n", ret);
-+ gpio_charger->irq = -1;
-+ }
-+ }
-+ }
-+
-+ gpio_charger->pdata = pdata;
-+
-+ ret = power_supply_register(&pdev->dev, charger);
-+ if (ret < 0) {
-+ dev_err(&pdev->dev, "Failed to register power supply: %d\n", ret);
-+ goto err_gpio_free;
-+ }
-+
-+ platform_set_drvdata(pdev, gpio_charger);
-+
-+ return 0;
-+
-+err_gpio_free:
-+ if (gpio_is_valid(pdata->gpio)) {
-+ if (gpio_charger->irq >= 0)
-+ free_irq(gpio_charger->irq, charger);
-+ gpio_free(pdata->gpio);
-+ }
-+err:
-+ return ret;
-+}
-+
-+static int __devexit gpio_charger_remove(struct platform_device *pdev)
-+{
-+ struct gpio_charger *gpio_charger = platform_get_drvdata(pdev);
-+ const struct gpio_charger_platform_data *pdata = gpio_charger->pdata;
-+
-+ power_supply_unregister(&gpio_charger->charger);
-+
-+ if (gpio_is_valid(pdata->gpio)) {
-+ if (gpio_charger->irq >= 0)
-+ free_irq(gpio_charger->irq, &gpio_charger->charger);
-+ gpio_free(pdata->gpio);
-+ }
-+
-+ platform_set_drvdata(pdev, NULL);
-+ kfree(gpio_charger);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver gpio_charger_driver = {
-+ .probe = gpio_charger_probe,
-+ .remove = __devexit_p(gpio_charger_remove),
-+ .driver = {
-+ .name = "gpio-charger",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init gpio_charger_init(void)
-+{
-+ return platform_driver_register(&gpio_charger_driver);
-+}
-+module_init(gpio_charger_init);
-+
-+static void __exit gpio_charger_exit(void)
-+{
-+ platform_driver_unregister(&gpio_charger_driver);
-+}
-+module_exit(gpio_charger_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("Driver for chargers indicating their status through a gpio");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:gpio-charger");
-diff --git a/include/linux/power/gpio-charger.h b/include/linux/power/gpio-charger.h
-new file mode 100644
-index 0000000..95cdfc3
---- /dev/null
-+++ b/include/linux/power/gpio-charger.h
-@@ -0,0 +1,28 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * 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 __LINUX_POWER_GPIO_CHARGER_H__
-+#define __LINUX_POWER_GPIO_CHARGER_H__
-+
-+struct gpio_charger_platform_data {
-+ const char *name;
-+ enum power_supply_type type;
-+ int gpio;
-+ int gpio_active_low;
-+
-+ char **batteries;
-+ size_t num_batteries;
-+};
-+
-+#endif
---
-1.5.6.5
-
diff --git a/target/linux/xburst/patches-2.6.35/107-pwm-beeper.patch b/target/linux/xburst/patches-2.6.35/107-pwm-beeper.patch
deleted file mode 100644
index 9ed00231b3..0000000000
--- a/target/linux/xburst/patches-2.6.35/107-pwm-beeper.patch
+++ /dev/null
@@ -1,249 +0,0 @@
-From d7894c598e2c1e5c1d173ca808694de523f1a06a Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Wed, 14 Jul 2010 00:25:21 -0700
-Subject: [PATCH] Input: Add pwm beeper driver
-
-This patch adds a simple driver which allows to use pwm based beepers (for
-example piezo elements) as a pcspkr-like device.
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
-Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
----
- drivers/input/misc/Kconfig | 11 ++
- drivers/input/misc/Makefile | 1 +
- drivers/input/misc/pwm-beeper.c | 199 +++++++++++++++++++++++++++++++++++++++
- 3 files changed, 211 insertions(+), 0 deletions(-)
- create mode 100644 drivers/input/misc/pwm-beeper.c
-
---- a/drivers/input/misc/Kconfig
-+++ b/drivers/input/misc/Kconfig
-@@ -327,6 +327,17 @@ config INPUT_PCF8574
- To compile this driver as a module, choose M here: the
- module will be called pcf8574_keypad.
-
-+config INPUT_PWM_BEEPER
-+ tristate "PWM beeper support"
-+ depends on HAVE_PWM
-+ help
-+ Say Y here to get support for PWM based beeper devices.
-+
-+ If unsure, say N.
-+
-+ To compile this driver as a module, choose M here: the module will be
-+ called pwm-beeper.
-+
- config INPUT_GPIO_ROTARY_ENCODER
- tristate "Rotary encoders connected to GPIO pins"
- depends on GPIOLIB && GENERIC_GPIO
---- a/drivers/input/misc/Makefile
-+++ b/drivers/input/misc/Makefile
-@@ -26,6 +26,7 @@ obj-$(CONFIG_INPUT_PCF50633_PMU) += pcf5
- obj-$(CONFIG_INPUT_PCF8574) += pcf8574_keypad.o
- obj-$(CONFIG_INPUT_PCSPKR) += pcspkr.o
- obj-$(CONFIG_INPUT_POWERMATE) += powermate.o
-+obj-$(CONFIG_INPUT_PWM_BEEPER) += pwm-beeper.o
- obj-$(CONFIG_INPUT_RB532_BUTTON) += rb532_button.o
- obj-$(CONFIG_INPUT_GPIO_ROTARY_ENCODER) += rotary_encoder.o
- obj-$(CONFIG_INPUT_SGI_BTNS) += sgi_btns.o
---- /dev/null
-+++ b/drivers/input/misc/pwm-beeper.c
-@@ -0,0 +1,199 @@
-+/*
-+ * Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
-+ * PWM beeper driver
-+ *
-+ * 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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/input.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/platform_device.h>
-+#include <linux/pwm.h>
-+#include <linux/slab.h>
-+
-+struct pwm_beeper {
-+ struct input_dev *input;
-+ struct pwm_device *pwm;
-+ unsigned long period;
-+};
-+
-+#define HZ_TO_NANOSECONDS(x) (1000000000UL/(x))
-+
-+static int pwm_beeper_event(struct input_dev *input,
-+ unsigned int type, unsigned int code, int value)
-+{
-+ int ret = 0;
-+ struct pwm_beeper *beeper = input_get_drvdata(input);
-+ unsigned long period;
-+
-+ if (type != EV_SND || value < 0)
-+ return -EINVAL;
-+
-+ switch (code) {
-+ case SND_BELL:
-+ value = value ? 1000 : 0;
-+ break;
-+ case SND_TONE:
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ if (value == 0) {
-+ pwm_config(beeper->pwm, 0, 0);
-+ pwm_disable(beeper->pwm);
-+ } else {
-+ period = HZ_TO_NANOSECONDS(value);
-+ ret = pwm_config(beeper->pwm, period / 2, period);
-+ if (ret)
-+ return ret;
-+ ret = pwm_enable(beeper->pwm);
-+ if (ret)
-+ return ret;
-+ beeper->period = period;
-+ }
-+
-+ return 0;
-+}
-+
-+static int __devinit pwm_beeper_probe(struct platform_device *pdev)
-+{
-+ unsigned long pwm_id = (unsigned long)pdev->dev.platform_data;
-+ struct pwm_beeper *beeper;
-+ int error;
-+
-+ beeper = kzalloc(sizeof(*beeper), GFP_KERNEL);
-+ if (!beeper)
-+ return -ENOMEM;
-+
-+ beeper->pwm = pwm_request(pwm_id, "pwm beeper");
-+
-+ if (IS_ERR(beeper->pwm)) {
-+ error = PTR_ERR(beeper->pwm);
-+ dev_err(&pdev->dev, "Failed to request pwm device: %d\n", error);
-+ goto err_free;
-+ }
-+
-+ beeper->input = input_allocate_device();
-+ if (!beeper->input) {
-+ dev_err(&pdev->dev, "Failed to allocate input device\n");
-+ error = -ENOMEM;
-+ goto err_pwm_free;
-+ }
-+ beeper->input->dev.parent = &pdev->dev;
-+
-+ beeper->input->name = "pwm-beeper";
-+ beeper->input->phys = "pwm/input0";
-+ beeper->input->id.bustype = BUS_HOST;
-+ beeper->input->id.vendor = 0x001f;
-+ beeper->input->id.product = 0x0001;
-+ beeper->input->id.version = 0x0100;
-+
-+ beeper->input->evbit[0] = BIT(EV_SND);
-+ beeper->input->sndbit[0] = BIT(SND_TONE) | BIT(SND_BELL);
-+
-+ beeper->input->event = pwm_beeper_event;
-+
-+ input_set_drvdata(beeper->input, beeper);
-+
-+ error = input_register_device(beeper->input);
-+ if (error) {
-+ dev_err(&pdev->dev, "Failed to register input device: %d\n", error);
-+ goto err_input_free;
-+ }
-+
-+ platform_set_drvdata(pdev, beeper);
-+
-+ return 0;
-+
-+err_input_free:
-+ input_free_device(beeper->input);
-+err_pwm_free:
-+ pwm_free(beeper->pwm);
-+err_free:
-+ kfree(beeper);
-+
-+ return error;
-+}
-+
-+static int __devexit pwm_beeper_remove(struct platform_device *pdev)
-+{
-+ struct pwm_beeper *beeper = platform_get_drvdata(pdev);
-+
-+ platform_set_drvdata(pdev, NULL);
-+ input_unregister_device(beeper->input);
-+
-+ pwm_disable(beeper->pwm);
-+ pwm_free(beeper->pwm);
-+
-+ kfree(beeper);
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static int pwm_beeper_suspend(struct device *dev)
-+{
-+ struct pwm_beeper *beeper = dev_get_drvdata(dev);
-+
-+ if (beeper->period)
-+ pwm_disable(beeper->pwm);
-+
-+ return 0;
-+}
-+
-+static int pwm_beeper_resume(struct device *dev)
-+{
-+ struct pwm_beeper *beeper = dev_get_drvdata(dev);
-+
-+ if (beeper->period) {
-+ pwm_config(beeper->pwm, beeper->period / 2, beeper->period);
-+ pwm_enable(beeper->pwm);
-+ }
-+
-+ return 0;
-+}
-+
-+static SIMPLE_DEV_PM_OPS(pwm_beeper_pm_ops,
-+ pwm_beeper_suspend, pwm_beeper_resume);
-+
-+#define PWM_BEEPER_PM_OPS (&pwm_beeper_pm_ops)
-+#else
-+#define PWM_BEEPER_PM_OPS NULL
-+#endif
-+
-+static struct platform_driver pwm_beeper_driver = {
-+ .probe = pwm_beeper_probe,
-+ .remove = __devexit_p(pwm_beeper_remove),
-+ .driver = {
-+ .name = "pwm-beeper",
-+ .owner = THIS_MODULE,
-+ .pm = PWM_BEEPER_PM_OPS,
-+ },
-+};
-+
-+static int __init pwm_beeper_init(void)
-+{
-+ return platform_driver_register(&pwm_beeper_driver);
-+}
-+module_init(pwm_beeper_init);
-+
-+static void __exit pwm_beeper_exit(void)
-+{
-+ platform_driver_unregister(&pwm_beeper_driver);
-+}
-+module_exit(pwm_beeper_exit);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
-+MODULE_DESCRIPTION("PWM beeper driver");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("platform:pwm-beeper");
diff --git a/target/linux/xburst/patches-2.6.35/400-spi-gpio-3wire.patch b/target/linux/xburst/patches-2.6.35/400-spi-gpio-3wire.patch
deleted file mode 100644
index d60a851347..0000000000
--- a/target/linux/xburst/patches-2.6.35/400-spi-gpio-3wire.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-From 62b6a295d39417293adcc81dc36b7edc56546814 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:23:01 +0200
-Subject: [PATCH] gpio spi 3wire
-
----
- drivers/spi/spi_bitbang.c | 2 +
- drivers/spi/spi_gpio.c | 60 ++++++++++++++++++++++++++------------
- include/linux/spi/spi_bitbang.h | 2 +
- 3 files changed, 45 insertions(+), 19 deletions(-)
-
---- a/drivers/spi/spi_bitbang.c
-+++ b/drivers/spi/spi_bitbang.c
-@@ -335,6 +335,8 @@ static void bitbang_work(struct work_str
- */
- if (!m->is_dma_mapped)
- t->rx_dma = t->tx_dma = 0;
-+ if ((spi->mode & SPI_3WIRE) && bitbang->set_direction)
-+ bitbang->set_direction(spi, t->tx_buf != NULL);
- status = bitbang->txrx_bufs(spi, t);
- }
- if (status > 0)
---- a/drivers/spi/spi_gpio.c
-+++ b/drivers/spi/spi_gpio.c
-@@ -46,6 +46,8 @@ struct spi_gpio {
- struct spi_bitbang bitbang;
- struct spi_gpio_platform_data pdata;
- struct platform_device *pdev;
-+
-+ int miso_pin;
- };
-
- /*----------------------------------------------------------------------*/
-@@ -91,19 +93,16 @@ struct spi_gpio {
-
- /*----------------------------------------------------------------------*/
-
--static inline const struct spi_gpio_platform_data * __pure
--spi_to_pdata(const struct spi_device *spi)
-+static inline const struct spi_gpio * __pure
-+spi_to_spi_gpio(const struct spi_device *spi)
- {
- const struct spi_bitbang *bang;
-- const struct spi_gpio *spi_gpio;
-
- bang = spi_master_get_devdata(spi->master);
-- spi_gpio = container_of(bang, struct spi_gpio, bitbang);
-- return &spi_gpio->pdata;
-+ return container_of(bang, struct spi_gpio, bitbang);
- }
-
--/* this is #defined to avoid unused-variable warnings when inlining */
--#define pdata spi_to_pdata(spi)
-+#define pdata &(spi_to_spi_gpio(spi)->pdata)
-
- static inline void setsck(const struct spi_device *spi, int is_on)
- {
-@@ -117,10 +116,9 @@ static inline void setmosi(const struct
-
- static inline int getmiso(const struct spi_device *spi)
- {
-- return !!gpio_get_value(SPI_MISO_GPIO);
-+ return !!gpio_get_value(spi_to_spi_gpio(spi)->miso_pin);
- }
-
--#undef pdata
-
- /*
- * NOTE: to clock "as fast as we can", set spi_device.max_speed_hz
-@@ -183,10 +181,16 @@ static u32 spi_gpio_txrx_word_mode3(stru
- static void spi_gpio_chipselect(struct spi_device *spi, int is_active)
- {
- unsigned long cs = (unsigned long) spi->controller_data;
-+ struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi);
-
- /* set initial clock polarity */
-- if (is_active)
-+ if (is_active) {
- setsck(spi, spi->mode & SPI_CPOL);
-+ if (spi->mode & SPI_3WIRE)
-+ spi_gpio->miso_pin = SPI_MOSI_GPIO;
-+ else
-+ spi_gpio->miso_pin = SPI_MISO_GPIO;
-+ }
-
- if (cs != SPI_GPIO_NO_CHIPSELECT) {
- /* SPI is normally active-low */
-@@ -202,6 +206,9 @@ static int spi_gpio_setup(struct spi_dev
- if (spi->bits_per_word > 32)
- return -EINVAL;
-
-+ if (!(spi->mode & SPI_3WIRE) && !gpio_is_valid(SPI_MISO_GPIO))
-+ return -EINVAL;
-+
- if (!spi->controller_state) {
- if (cs != SPI_GPIO_NO_CHIPSELECT) {
- status = gpio_request(cs, dev_name(&spi->dev));
-@@ -219,6 +226,16 @@ static int spi_gpio_setup(struct spi_dev
- return status;
- }
-
-+static void spi_gpio_set_direction(struct spi_device *spi, bool is_tx)
-+{
-+ if (is_tx)
-+ gpio_direction_output(SPI_MISO_GPIO, 0);
-+ else
-+ gpio_direction_input(SPI_MISO_GPIO);
-+}
-+
-+#undef pdata
-+
- static void spi_gpio_cleanup(struct spi_device *spi)
- {
- unsigned long cs = (unsigned long) spi->controller_data;
-@@ -253,18 +270,20 @@ spi_gpio_request(struct spi_gpio_platfor
- if (value)
- goto done;
-
-- value = spi_gpio_alloc(SPI_MISO_GPIO, label, true);
-+ value = spi_gpio_alloc(SPI_SCK_GPIO, label, false);
- if (value)
- goto free_mosi;
-
-- value = spi_gpio_alloc(SPI_SCK_GPIO, label, false);
-- if (value)
-- goto free_miso;
-+ if (gpio_is_valid(SPI_MISO_GPIO)) {
-+ value = spi_gpio_alloc(SPI_MISO_GPIO, label, true);
-+ if (value)
-+ goto free_sck;
-+ }
-
- goto done;
-
--free_miso:
-- gpio_free(SPI_MISO_GPIO);
-+free_sck:
-+ gpio_free(SPI_SCK_GPIO);
- free_mosi:
- gpio_free(SPI_MOSI_GPIO);
- done:
-@@ -312,13 +331,15 @@ static int __devinit spi_gpio_probe(stru
- spi_gpio->bitbang.txrx_word[SPI_MODE_2] = spi_gpio_txrx_word_mode2;
- spi_gpio->bitbang.txrx_word[SPI_MODE_3] = spi_gpio_txrx_word_mode3;
- spi_gpio->bitbang.setup_transfer = spi_bitbang_setup_transfer;
-- spi_gpio->bitbang.flags = SPI_CS_HIGH;
-+ spi_gpio->bitbang.set_direction = spi_gpio_set_direction;
-+ spi_gpio->bitbang.flags = SPI_CS_HIGH | SPI_3WIRE;
-
- status = spi_bitbang_start(&spi_gpio->bitbang);
- if (status < 0) {
- spi_master_put(spi_gpio->bitbang.master);
- gpio_free:
-- gpio_free(SPI_MISO_GPIO);
-+ if (gpio_is_valid(SPI_MOSI_GPIO))
-+ gpio_free(SPI_MISO_GPIO);
- gpio_free(SPI_MOSI_GPIO);
- gpio_free(SPI_SCK_GPIO);
- spi_master_put(master);
-@@ -342,7 +363,8 @@ static int __devexit spi_gpio_remove(str
-
- platform_set_drvdata(pdev, NULL);
-
-- gpio_free(SPI_MISO_GPIO);
-+ if (gpio_is_valid(SPI_MISO_GPIO))
-+ gpio_free(SPI_MISO_GPIO);
- gpio_free(SPI_MOSI_GPIO);
- gpio_free(SPI_SCK_GPIO);
-
---- a/include/linux/spi/spi_bitbang.h
-+++ b/include/linux/spi/spi_bitbang.h
-@@ -34,6 +34,8 @@ struct spi_bitbang {
- u32 (*txrx_word[4])(struct spi_device *spi,
- unsigned nsecs,
- u32 word, u8 bits);
-+
-+ void (*set_direction)(struct spi_device *, bool is_tx);
- };
-
- /* you can call these default bitbang->master methods from your custom
diff --git a/target/linux/xburst/patches-2.6.35/420-fb-notifier-pre-post.patch b/target/linux/xburst/patches-2.6.35/420-fb-notifier-pre-post.patch
deleted file mode 100644
index 9e8288b95c..0000000000
--- a/target/linux/xburst/patches-2.6.35/420-fb-notifier-pre-post.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 120357be9b85936519d6a141748c319745046f71 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:23:28 +0200
-Subject: [PATCH] Framebuffer notifier: Call notifier callbacks prior to blanking the screen
-
----
- drivers/video/fbmem.c | 8 ++++++--
- 1 files changed, 6 insertions(+), 2 deletions(-)
-
---- a/drivers/video/fbmem.c
-+++ b/drivers/video/fbmem.c
-@@ -1008,12 +1008,12 @@ fb_set_var(struct fb_info *info, struct
- int
- fb_blank(struct fb_info *info, int blank)
- {
-- int ret = -EINVAL;
-+ int ret = 0;
-
- if (blank > FB_BLANK_POWERDOWN)
- blank = FB_BLANK_POWERDOWN;
-
-- if (info->fbops->fb_blank)
-+ if (info->fbops->fb_blank && blank == FB_BLANK_UNBLANK)
- ret = info->fbops->fb_blank(blank, info);
-
- if (!ret) {
-@@ -1024,6 +1024,10 @@ fb_blank(struct fb_info *info, int blank
- fb_notifier_call_chain(FB_EVENT_BLANK, &event);
- }
-
-+ if (info->fbops->fb_blank && blank != FB_BLANK_UNBLANK)
-+ ret = info->fbops->fb_blank(blank, info);
-+
-+
- return ret;
- }
-
diff --git a/target/linux/xburst/patches-2.6.35/440-metronome.patch b/target/linux/xburst/patches-2.6.35/440-metronome.patch
deleted file mode 100644
index a279896537..0000000000
--- a/target/linux/xburst/patches-2.6.35/440-metronome.patch
+++ /dev/null
@@ -1,1213 +0,0 @@
-From c62dfb5d44444dd3add45e10c8950140dcb9f421 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Wed, 12 May 2010 14:24:46 +0200
-Subject: [PATCH] metronome patches
-
----
- drivers/video/metronomefb.c | 788 +++++++++++++++++++++++++++++++++++++------
- include/video/metronomefb.h | 33 ++-
- 2 files changed, 710 insertions(+), 111 deletions(-)
-
---- a/drivers/video/metronomefb.c
-+++ b/drivers/video/metronomefb.c
-@@ -18,11 +18,13 @@
- * is provided as am200epd.c
- *
- */
-+
- #include <linux/module.h>
- #include <linux/kernel.h>
- #include <linux/errno.h>
- #include <linux/string.h>
- #include <linux/mm.h>
-+#include <linux/slab.h>
- #include <linux/vmalloc.h>
- #include <linux/delay.h>
- #include <linux/interrupt.h>
-@@ -34,16 +36,25 @@
- #include <linux/dma-mapping.h>
- #include <linux/uaccess.h>
- #include <linux/irq.h>
-+#include <linux/ctype.h>
-
- #include <video/metronomefb.h>
-
- #include <asm/unaligned.h>
-
--/* Display specific information */
--#define DPY_W 832
--#define DPY_H 622
-+/*
-+ * 12 is ok to avoid refreshing whole screen while small elements are changed,
-+ * while forcing full refresh if largish dialog boxes or menus are
-+ * shown/dismissed.
-+ */
-+#define DEFAULT_MANUAL_REFRESH_THRESHOLD 12
-+
-+#define WF_MODE_INIT 0 /* Initialization */
-+#define WF_MODE_MU 1 /* Monochrome update */
-+#define WF_MODE_GU 2 /* Grayscale update */
-+#define WF_MODE_GC 3 /* Grayscale clearing */
-
--static int user_wfm_size;
-+static int temp = 25;
-
- /* frame differs from image. frame includes non-visible pixels */
- struct epd_frame {
-@@ -53,7 +64,7 @@ struct epd_frame {
- int wfm_size;
- };
-
--static struct epd_frame epd_frame_table[] = {
-+static const struct epd_frame epd_frame_table[] = {
- {
- .fw = 832,
- .fh = 622,
-@@ -97,24 +108,40 @@ static struct epd_frame epd_frame_table[
- },
- .wfm_size = 46770,
- },
-+ {
-+ .fw = 800,
-+ .fh = 600,
-+ .config = {
-+ 15 /* sdlew */
-+ | 2 << 8 /* sdosz */
-+ | 0 << 11 /* sdor */
-+ | 0 << 12 /* sdces */
-+ | 0 << 15, /* sdcer */
-+ 42 /* gdspl */
-+ | 1 << 8 /* gdr1 */
-+ | 1 << 9 /* sdshr */
-+ | 0 << 15, /* gdspp */
-+ 18 /* gdspw */
-+ | 0 << 15, /* dispc */
-+ 599 /* vdlc */
-+ | 0 << 11 /* dsi */
-+ | 0 << 12, /* dsic */
-+ },
-+ .wfm_size = 46901,
-+ },
- };
-
--static struct fb_fix_screeninfo metronomefb_fix __devinitdata = {
-+static const struct fb_fix_screeninfo metronomefb_fix __devinitconst = {
- .id = "metronomefb",
- .type = FB_TYPE_PACKED_PIXELS,
- .visual = FB_VISUAL_STATIC_PSEUDOCOLOR,
- .xpanstep = 0,
- .ypanstep = 0,
- .ywrapstep = 0,
-- .line_length = DPY_W,
- .accel = FB_ACCEL_NONE,
- };
-
--static struct fb_var_screeninfo metronomefb_var __devinitdata = {
-- .xres = DPY_W,
-- .yres = DPY_H,
-- .xres_virtual = DPY_W,
-- .yres_virtual = DPY_H,
-+static const struct fb_var_screeninfo metronomefb_var __devinitconst = {
- .bits_per_pixel = 8,
- .grayscale = 1,
- .nonstd = 1,
-@@ -167,7 +194,7 @@ static u16 calc_img_cksum(u16 *start, in
- }
-
- /* here we decode the incoming waveform file and populate metromem */
--static int __devinit load_waveform(u8 *mem, size_t size, int m, int t,
-+static int load_waveform(u8 *mem, size_t size, int m, int t,
- struct metronomefb_par *par)
- {
- int tta;
-@@ -181,16 +208,12 @@ static int __devinit load_waveform(u8 *m
- int mem_idx = 0;
- struct waveform_hdr *wfm_hdr;
- u8 *metromem = par->metromem_wfm;
-- struct device *dev = par->info->dev;
-+ struct device *dev = &par->pdev->dev;
-+ u8 mc, trc;
-+ u16 *p;
-+ u16 img_cksum;
-
-- if (user_wfm_size)
-- epd_frame_table[par->dt].wfm_size = user_wfm_size;
--
-- if (size != epd_frame_table[par->dt].wfm_size) {
-- dev_err(dev, "Error: unexpected size %Zd != %d\n", size,
-- epd_frame_table[par->dt].wfm_size);
-- return -EINVAL;
-- }
-+ dev_dbg(dev, "Loading waveforms, mode %d, temperature %d\n", m, t);
-
- wfm_hdr = (struct waveform_hdr *) mem;
-
-@@ -208,8 +231,9 @@ static int __devinit load_waveform(u8 *m
- wfm_hdr->wfm_cs);
- return -EINVAL;
- }
-- wfm_hdr->mc += 1;
-- wfm_hdr->trc += 1;
-+ mc = wfm_hdr->mc + 1;
-+ trc = wfm_hdr->trc + 1;
-+
- for (i = 0; i < 5; i++) {
- if (*(wfm_hdr->stuff2a + i) != 0) {
- dev_err(dev, "Error: unexpected value in padding\n");
-@@ -221,10 +245,10 @@ static int __devinit load_waveform(u8 *m
- the waveform. presumably selecting the right one for the
- desired temperature. it works out the offset of the first
- v that exceeds the specified temperature */
-- if ((sizeof(*wfm_hdr) + wfm_hdr->trc) > size)
-+ if ((sizeof(*wfm_hdr) + trc) > size)
- return -EINVAL;
-
-- for (i = sizeof(*wfm_hdr); i <= sizeof(*wfm_hdr) + wfm_hdr->trc; i++) {
-+ for (i = sizeof(*wfm_hdr); i <= sizeof(*wfm_hdr) + trc; i++) {
- if (mem[i] > t) {
- trn = i - sizeof(*wfm_hdr) - 1;
- break;
-@@ -232,7 +256,7 @@ static int __devinit load_waveform(u8 *m
- }
-
- /* check temperature range table checksum */
-- cksum_idx = sizeof(*wfm_hdr) + wfm_hdr->trc + 1;
-+ cksum_idx = sizeof(*wfm_hdr) + trc + 1;
- if (cksum_idx > size)
- return -EINVAL;
- cksum = calc_cksum(sizeof(*wfm_hdr), cksum_idx, mem);
-@@ -294,6 +318,7 @@ static int __devinit load_waveform(u8 *m
- cksum_idx = wfm_idx;
- if (cksum_idx > size)
- return -EINVAL;
-+ dev_dbg(dev, "mem_idx = %u\n", mem_idx);
- cksum = calc_cksum(owfm_idx, cksum_idx, mem);
- if (cksum != mem[cksum_idx]) {
- dev_err(dev, "Error: bad waveform data cksum"
-@@ -302,16 +327,47 @@ static int __devinit load_waveform(u8 *m
- }
- par->frame_count = (mem_idx/64);
-
-+ p = (u16 *)par->metromem_wfm;
-+ img_cksum = calc_img_cksum(p, 16384 / 2);
-+ p[16384 / 2] = __cpu_to_le16(img_cksum);
-+
-+ par->current_wf_mode = m;
-+ par->current_wf_temp = t;
-+
- return 0;
- }
-
-+static int check_err(struct metronomefb_par *par)
-+{
-+ int res;
-+
-+ res = par->board->get_err(par);
-+ dev_dbg(&par->pdev->dev, "ERR = %d\n", res);
-+ return res;
-+}
-+
-+static inline int wait_for_rdy(struct metronomefb_par *par)
-+{
-+ int res = 0;
-+
-+ if (!par->board->get_rdy(par))
-+ res = par->board->met_wait_event_intr(par);
-+
-+ return res;
-+}
-+
- static int metronome_display_cmd(struct metronomefb_par *par)
- {
- int i;
- u16 cs;
- u16 opcode;
-- static u8 borderval;
-+ int res;
-
-+ res = wait_for_rdy(par);
-+ if (res)
-+ return res;
-+
-+ dev_dbg(&par->pdev->dev, "%s: ENTER\n", __func__);
- /* setup display command
- we can't immediately set the opcode since the controller
- will try parse the command before we've set it all up
-@@ -324,8 +380,9 @@ static int metronome_display_cmd(struct
-
- /* set the args ( 2 bytes ) for display */
- i = 0;
-- par->metromem_cmd->args[i] = 1 << 3 /* border update */
-- | ((borderval++ % 4) & 0x0F) << 4
-+ par->metromem_cmd->args[i] = 0 << 3 /* border update */
-+ | (3 << 4)
-+// | ((borderval++ % 4) & 0x0F) << 4
- | (par->frame_count - 1) << 8;
- cs += par->metromem_cmd->args[i++];
-
-@@ -335,21 +392,25 @@ static int metronome_display_cmd(struct
- par->metromem_cmd->csum = cs;
- par->metromem_cmd->opcode = opcode; /* display cmd */
-
-- return par->board->met_wait_event_intr(par);
-+ return 0;
-+
- }
-
- static int __devinit metronome_powerup_cmd(struct metronomefb_par *par)
- {
- int i;
- u16 cs;
-+ int res;
-
-+ dev_dbg(&par->pdev->dev, "%s: ENTER\n", __func__);
- /* setup power up command */
- par->metromem_cmd->opcode = 0x1234; /* pwr up pseudo cmd */
- cs = par->metromem_cmd->opcode;
-
- /* set pwr1,2,3 to 1024 */
- for (i = 0; i < 3; i++) {
-- par->metromem_cmd->args[i] = 1024;
-+// par->metromem_cmd->args[i] = 1024;
-+ par->metromem_cmd->args[i] = 100;
- cs += par->metromem_cmd->args[i];
- }
-
-@@ -364,7 +425,9 @@ static int __devinit metronome_powerup_c
- msleep(1);
- par->board->set_stdby(par, 1);
-
-- return par->board->met_wait_event(par);
-+ res = par->board->met_wait_event(par);
-+ dev_dbg(&par->pdev->dev, "%s: EXIT: %d\n", __func__, res);
-+ return res;
- }
-
- static int __devinit metronome_config_cmd(struct metronomefb_par *par)
-@@ -373,8 +436,9 @@ static int __devinit metronome_config_cm
- we can't immediately set the opcode since the controller
- will try parse the command before we've set it all up */
-
-- memcpy(par->metromem_cmd->args, epd_frame_table[par->dt].config,
-- sizeof(epd_frame_table[par->dt].config));
-+ dev_dbg(&par->pdev->dev, "%s: ENTER\n", __func__);
-+ memcpy(par->metromem_cmd->args, par->epd_frame->config,
-+ sizeof(par->epd_frame->config));
- /* the rest are 0 */
- memset((u8 *) (par->metromem_cmd->args + 4), 0, (32-4)*2);
-
-@@ -395,11 +459,12 @@ static int __devinit metronome_init_cmd(
- will try parse the command before we've set it all up
- so we just set cs here and set the opcode at the end */
-
-+ dev_dbg(&par->pdev->dev, "%s: ENTER\n", __func__);
- cs = 0xCC20;
-
- /* set the args ( 2 bytes ) for init */
- i = 0;
-- par->metromem_cmd->args[i] = 0;
-+ par->metromem_cmd->args[i] = 0x0007;
- cs += par->metromem_cmd->args[i++];
-
- /* the rest are 0 */
-@@ -411,76 +476,268 @@ static int __devinit metronome_init_cmd(
- return par->board->met_wait_event(par);
- }
-
--static int __devinit metronome_init_regs(struct metronomefb_par *par)
-+static int metronome_bootup(struct metronomefb_par *par)
- {
- int res;
-
-- res = par->board->setup_io(par);
-- if (res)
-- return res;
--
- res = metronome_powerup_cmd(par);
-- if (res)
-- return res;
-+ if (res) {
-+ dev_err(&par->pdev->dev, "metronomefb: POWERUP cmd failed\n");
-+ goto finish;
-+ }
-
-+ check_err(par);
- res = metronome_config_cmd(par);
-- if (res)
-- return res;
-+ if (res) {
-+ dev_err(&par->pdev->dev, "metronomefb: CONFIG cmd failed\n");
-+ goto finish;
-+ }
-+ check_err(par);
-
- res = metronome_init_cmd(par);
-+ if (res)
-+ dev_err(&par->pdev->dev, "metronomefb: INIT cmd failed\n");
-+ check_err(par);
-+
-+finish:
-+ return res;
-+}
-+
-+static int __devinit metronome_init_regs(struct metronomefb_par *par)
-+{
-+ int res;
-+
-+ if (par->board->power_ctl)
-+ par->board->power_ctl(par, METRONOME_POWER_ON);
-+
-+ res = metronome_bootup(par);
-
- return res;
- }
-
--static void metronomefb_dpy_update(struct metronomefb_par *par)
-+static uint16_t metronomefb_update_img_buffer_rotated(struct metronomefb_par *par)
- {
-- int fbsize;
-- u16 cksum;
-- unsigned char *buf = (unsigned char __force *)par->info->screen_base;
-+ int x, y;
-+ int xstep, ystep;
-+ int i, j;
-+ uint16_t cksum = 0;
-+ uint8_t *buf = par->info->screen_base;
-+ uint32_t *img = (uint32_t *)(par->metromem_img);
-+ int fw = par->epd_frame->fw;
-+ int fh = par->epd_frame->fh;
-+ int fw_buf = fw / 4;
-+ uint32_t *fxbuckets = par->fxbuckets;
-+ uint32_t *fybuckets = par->fybuckets;
-+ uint32_t diff;
-+ uint32_t tmp;
-+
-+ switch (par->rotation) {
-+ case FB_ROTATE_CW:
-+ xstep = -fh;
-+ ystep = fw * fh + 1;
-+ j = (fw - 1) * fh;
-+ break;
-+ case FB_ROTATE_UD:
-+ xstep = -1;
-+ ystep = 0;
-+ j = fw * fh - 1;
-+ break;
-+ case FB_ROTATE_CCW:
-+ xstep = fh;
-+ ystep = -fw * fh - 1;
-+ j = fh - 1;
-+ break;
-+ default:
-+ BUG();
-+ break;
-+ }
-
-- fbsize = par->info->fix.smem_len;
-- /* copy from vm to metromem */
-- memcpy(par->metromem_img, buf, fbsize);
-+ memset(fxbuckets, 0, fw_buf * sizeof(*fxbuckets));
-+ memset(fybuckets, 0, fh * sizeof(*fybuckets));
-+
-+ i = 0;
-+ for (y = 0; y < fh; y++) {
-+ for(x = 0; x < fw_buf; x++, i++) {
-+ tmp = (buf[j] << 5);
-+ j += xstep;
-+ tmp |= (buf[j] << 13);
-+ j += xstep;
-+ tmp |= (buf[j] << 21);
-+ j += xstep;
-+ tmp |= (buf[j] << 29);
-+ j += xstep;
-+ tmp &= 0xe0e0e0e0;
-+
-+ img[i] &= 0xf0f0f0f0;
-+ diff = img[i] ^ tmp;
-+
-+ fxbuckets[x] |= diff;
-+ fybuckets[y] |= diff;
-+
-+ img[i] = (img[i] >> 4) | tmp;
-+ cksum += img[i] & 0x0000ffff;
-+ cksum += (img[i] >> 16);
-
-- cksum = calc_img_cksum((u16 *) par->metromem_img, fbsize/2);
-- *((u16 *)(par->metromem_img) + fbsize/2) = cksum;
-- metronome_display_cmd(par);
-+ }
-+ j += ystep;
-+ }
-+
-+ return cksum;
- }
-
--static u16 metronomefb_dpy_update_page(struct metronomefb_par *par, int index)
-+static uint16_t metronomefb_update_img_buffer_normal(struct metronomefb_par *par)
- {
-- int i;
-- u16 csum = 0;
-- u16 *buf = (u16 __force *)(par->info->screen_base + index);
-- u16 *img = (u16 *)(par->metromem_img + index);
--
-- /* swizzle from vm to metromem and recalc cksum at the same time*/
-- for (i = 0; i < PAGE_SIZE/2; i++) {
-- *(img + i) = (buf[i] << 5) & 0xE0E0;
-- csum += *(img + i);
-+ int x, y, i;
-+ uint16_t cksum = 0;
-+ uint32_t *buf = (uint32_t __force *)par->info->screen_base;
-+ uint32_t *img = (uint32_t *)(par->metromem_img);
-+ uint32_t diff;
-+ uint32_t tmp;
-+ int fw = par->epd_frame->fw;
-+ int fh = par->epd_frame->fh;
-+ int fw_buf = fw / sizeof(*buf);
-+ uint32_t *fxbuckets = par->fxbuckets;
-+ uint32_t *fybuckets = par->fybuckets;
-+
-+ memset(fxbuckets, 0, fw_buf * sizeof(*fxbuckets));
-+ memset(fybuckets, 0, fh * sizeof(*fybuckets));
-+
-+ i = 0;
-+ for (y = 0; y < fh; y++) {
-+ for(x = 0; x < fw_buf; x++, i++) {
-+ tmp = (buf[i] << 5) & 0xe0e0e0e0;
-+ img[i] &= 0xf0f0f0f0;
-+ diff = img[i] ^ tmp;
-+
-+ fxbuckets[x] |= diff;
-+ fybuckets[y] |= diff;
-+
-+ img[i] = (img[i] >> 4) | tmp;
-+ cksum += img[i] & 0x0000ffff;
-+ cksum += (img[i] >> 16);
-+ }
- }
-- return csum;
-+
-+ return cksum;
-+}
-+
-+static unsigned int metronomefb_get_change_count(struct metronomefb_par *par)
-+{
-+ int min_x;
-+ int max_x;
-+ int min_y;
-+ int max_y;
-+ int fw = par->epd_frame->fw / 4;
-+ int fh = par->epd_frame->fh;
-+ unsigned int change_count;
-+ uint32_t *fxbuckets = par->fxbuckets;
-+ uint32_t *fybuckets = par->fybuckets;
-+
-+ for (min_x = 0; min_x < fw; ++min_x) {
-+ if(fxbuckets[min_x])
-+ break;
-+ }
-+
-+ for (max_x = fw - 1; max_x >= 0; --max_x) {
-+ if(fxbuckets[max_x])
-+ break;
-+ }
-+
-+ for (min_y = 0; min_y < fh; min_y++) {
-+ if(fybuckets[min_y])
-+ break;
-+ }
-+
-+ for (max_y = fh - 1; max_y >= 0; --max_y) {
-+ if(fybuckets[max_y])
-+ break;
-+ }
-+
-+ if ((min_x > max_x) || (min_y > max_y))
-+ change_count = 0;
-+ else
-+ change_count = (max_x - min_x + 1) * (max_y - min_y + 1) * 4;
-+
-+ dev_dbg(&par->pdev->dev, "min_x = %d, max_x = %d, min_y = %d, max_y = %d\n",
-+ min_x, max_x, min_y, max_y);
-+
-+ return change_count;
-+}
-+
-+static void metronomefb_dpy_update(struct metronomefb_par *par, int clear_all)
-+{
-+ unsigned int fbsize = par->info->fix.smem_len;
-+ uint16_t cksum;
-+ int m;
-+
-+ wait_for_rdy(par);
-+
-+ if (par->rotation == 0)
-+ cksum = metronomefb_update_img_buffer_normal(par);
-+ else
-+ cksum = metronomefb_update_img_buffer_rotated(par);
-+
-+ *par->metromem_img_csum = __cpu_to_le16(cksum);
-+
-+ if (clear_all || par->is_first_update ||
-+ (par->partial_updates_count == par->partial_autorefresh_interval)) {
-+ m = WF_MODE_GC;
-+ par->partial_updates_count = 0;
-+ } else {
-+ int change_count = metronomefb_get_change_count(par);
-+ if (change_count < fbsize / 100 * par->manual_refresh_threshold)
-+ m = WF_MODE_GU;
-+ else
-+ m = WF_MODE_GC;
-+
-+ dev_dbg(&par->pdev->dev, "change_count = %u, treshold = %u%% (%u pixels)\n",
-+ change_count, par->manual_refresh_threshold,
-+ fbsize / 100 * par->manual_refresh_threshold);
-+ ++par->partial_updates_count;
-+ }
-+
-+ if (m != par->current_wf_mode)
-+ load_waveform((u8 *) par->firmware->data, par->firmware->size,
-+ m, par->current_wf_temp, par);
-+
-+ for (;;) {
-+ if (likely(!check_err(par))) {
-+ metronome_display_cmd(par);
-+ break;
-+ }
-+
-+ par->board->set_stdby(par, 0);
-+ dev_warn(&par->pdev->dev, "Resetting Metronome\n");
-+ par->board->set_rst(par, 0);
-+ mdelay(1);
-+ if (par->board->power_ctl)
-+ par->board->power_ctl(par, METRONOME_POWER_OFF);
-+
-+ mdelay(1);
-+ load_waveform((u8 *) par->firmware->data, par->firmware->size,
-+ WF_MODE_GC, par->current_wf_temp, par);
-+
-+ if (par->board->power_ctl)
-+ par->board->power_ctl(par, METRONOME_POWER_ON);
-+ metronome_bootup(par);
-+ }
-+
-+ par->is_first_update = 0;
- }
-
- /* this is called back from the deferred io workqueue */
- static void metronomefb_dpy_deferred_io(struct fb_info *info,
- struct list_head *pagelist)
- {
-- u16 cksum;
-- struct page *cur;
-- struct fb_deferred_io *fbdefio = info->fbdefio;
- struct metronomefb_par *par = info->par;
-
-- /* walk the written page list and swizzle the data */
-- list_for_each_entry(cur, &fbdefio->pagelist, lru) {
-- cksum = metronomefb_dpy_update_page(par,
-- (cur->index << PAGE_SHIFT));
-- par->metromem_img_csum -= par->csum_table[cur->index];
-- par->csum_table[cur->index] = cksum;
-- par->metromem_img_csum += cksum;
-- }
--
-- metronome_display_cmd(par);
-+ /* We will update entire display because we need to change
-+ * 'previous image' field in pixels which was changed at
-+ * previous refresh
-+ */
-+ mutex_lock(&par->lock);
-+ metronomefb_dpy_update(par, 0);
-+ mutex_unlock(&par->lock);
- }
-
- static void metronomefb_fillrect(struct fb_info *info,
-@@ -488,8 +745,10 @@ static void metronomefb_fillrect(struct
- {
- struct metronomefb_par *par = info->par;
-
-+ mutex_lock(&par->lock);
- sys_fillrect(info, rect);
-- metronomefb_dpy_update(par);
-+ metronomefb_dpy_update(par, 0);
-+ mutex_unlock(&par->lock);
- }
-
- static void metronomefb_copyarea(struct fb_info *info,
-@@ -497,8 +756,10 @@ static void metronomefb_copyarea(struct
- {
- struct metronomefb_par *par = info->par;
-
-+ mutex_lock(&par->lock);
- sys_copyarea(info, area);
-- metronomefb_dpy_update(par);
-+ metronomefb_dpy_update(par, 0);
-+ mutex_unlock(&par->lock);
- }
-
- static void metronomefb_imageblit(struct fb_info *info,
-@@ -506,8 +767,10 @@ static void metronomefb_imageblit(struct
- {
- struct metronomefb_par *par = info->par;
-
-+ mutex_lock(&par->lock);
- sys_imageblit(info, image);
-- metronomefb_dpy_update(par);
-+ metronomefb_dpy_update(par, 0);
-+ mutex_unlock(&par->lock);
- }
-
- /*
-@@ -545,30 +808,229 @@ static ssize_t metronomefb_write(struct
-
- dst = (void __force *)(info->screen_base + p);
-
-+ mutex_lock(&par->lock);
-+
- if (copy_from_user(dst, buf, count))
- err = -EFAULT;
-
- if (!err)
- *ppos += count;
-
-- metronomefb_dpy_update(par);
-+ metronomefb_dpy_update(par, 0);
-+ mutex_unlock(&par->lock);
-
- return (err) ? err : count;
- }
-
-+static int metronome_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
-+{
-+ struct metronomefb_par *par = info->par;
-+
-+ var->grayscale = 1;
-+
-+ switch (par->rotation) {
-+ case FB_ROTATE_CW:
-+ case FB_ROTATE_CCW:
-+ if (par->epd_frame->fw == var->yres && par->epd_frame->fh == var->xres)
-+ return 0;
-+ break;
-+ case FB_ROTATE_UD:
-+ default:
-+ if (par->epd_frame->fw == var->xres && par->epd_frame->fh == var->yres)
-+ return 0;
-+ break;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static int metronomefb_set_par(struct fb_info *info)
-+{
-+ struct metronomefb_par *par = info->par;
-+
-+ par->rotation = (par->board->panel_rotation + info->var.rotate) % 4;
-+
-+ switch (par->rotation) {
-+ case FB_ROTATE_CW:
-+ case FB_ROTATE_CCW:
-+ info->fix.line_length = par->epd_frame->fh;
-+ break;
-+ case FB_ROTATE_UD:
-+ default:
-+ info->fix.line_length = par->epd_frame->fw;
-+ break;
-+ }
-+
-+ mutex_lock(&par->lock);
-+ metronomefb_dpy_update(info->par, 1);
-+ mutex_unlock(&par->lock);
-+
-+ return 0;
-+}
-+
- static struct fb_ops metronomefb_ops = {
- .owner = THIS_MODULE,
- .fb_write = metronomefb_write,
- .fb_fillrect = metronomefb_fillrect,
- .fb_copyarea = metronomefb_copyarea,
- .fb_imageblit = metronomefb_imageblit,
-+ .fb_check_var = metronome_check_var,
-+ .fb_set_par = metronomefb_set_par,
- };
-
- static struct fb_deferred_io metronomefb_defio = {
-- .delay = HZ,
-+ .delay = HZ / 4,
- .deferred_io = metronomefb_dpy_deferred_io,
- };
-
-+static ssize_t metronomefb_defio_delay_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+
-+ sprintf(buf, "%lu\n", info->fbdefio->delay * 1000 / HZ);
-+ return strlen(buf) + 1;
-+}
-+
-+static ssize_t metronomefb_defio_delay_store(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t size)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ char *after;
-+ unsigned long state = simple_strtoul(buf, &after, 10);
-+ size_t count = after - buf;
-+ ssize_t ret = -EINVAL;
-+
-+ if (*after && isspace(*after))
-+ count++;
-+
-+ state = state * HZ / 1000;
-+
-+ if (!state)
-+ state = 1;
-+
-+ if (count == size) {
-+ ret = count;
-+ info->fbdefio->delay = state;
-+ }
-+
-+ return ret;
-+}
-+
-+static ssize_t metronomefb_manual_refresh_thr_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ struct metronomefb_par *par = info->par;
-+
-+ return sprintf(buf, "%u\n", par->manual_refresh_threshold);
-+}
-+
-+static ssize_t metronomefb_manual_refresh_thr_store(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t size)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ struct metronomefb_par *par = info->par;
-+ char *after;
-+ unsigned long val = simple_strtoul(buf, &after, 10);
-+ size_t count = after - buf;
-+ ssize_t ret = -EINVAL;
-+
-+ if (*after && isspace(*after))
-+ count++;
-+
-+ if (val > 100)
-+ return -EINVAL;
-+
-+
-+ if (count == size) {
-+ ret = count;
-+ par->manual_refresh_threshold = val;
-+ }
-+
-+ return ret;
-+}
-+
-+static ssize_t metronomefb_autorefresh_interval_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ struct metronomefb_par *par = info->par;
-+
-+ return sprintf(buf, "%u\n", par->partial_autorefresh_interval);
-+}
-+
-+static ssize_t metronomefb_autorefresh_interval_store(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t size)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ struct metronomefb_par *par = info->par;
-+ char *after;
-+ unsigned long val = simple_strtoul(buf, &after, 10);
-+ size_t count = after - buf;
-+ ssize_t ret = -EINVAL;
-+
-+ if (*after && isspace(*after))
-+ count++;
-+
-+ if (val > 100)
-+ return -EINVAL;
-+
-+
-+ if (count == size) {
-+ ret = count;
-+ par->partial_autorefresh_interval = val;
-+ }
-+
-+ return ret;
-+}
-+
-+static ssize_t metronomefb_temp_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ struct metronomefb_par *par = info->par;
-+
-+ return sprintf(buf, "%u\n", par->current_wf_temp);
-+}
-+
-+static ssize_t metronomefb_temp_store(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t size)
-+{
-+ struct fb_info *info = dev_get_drvdata(dev);
-+ struct metronomefb_par *par = info->par;
-+ char *after;
-+ unsigned long val = simple_strtoul(buf, &after, 10);
-+ size_t count = after - buf;
-+ ssize_t ret = -EINVAL;
-+
-+ if (*after && isspace(*after))
-+ count++;
-+
-+ if (val > 100)
-+ return -EINVAL;
-+
-+
-+ if (count == size) {
-+ ret = count;
-+ if (val != par->current_wf_temp)
-+ load_waveform((u8 *) par->firmware->data, par->firmware->size,
-+ par->current_wf_mode, val, par);
-+ }
-+
-+ return ret;
-+}
-+
-+DEVICE_ATTR(defio_delay, 0644,
-+ metronomefb_defio_delay_show, metronomefb_defio_delay_store);
-+DEVICE_ATTR(manual_refresh_threshold, 0644,
-+ metronomefb_manual_refresh_thr_show, metronomefb_manual_refresh_thr_store);
-+DEVICE_ATTR(temp, 0644,
-+ metronomefb_temp_show, metronomefb_temp_store);
-+DEVICE_ATTR(autorefresh_interval, 0644,
-+ metronomefb_autorefresh_interval_show, metronomefb_autorefresh_interval_store);
-+
-+
- static int __devinit metronomefb_probe(struct platform_device *dev)
- {
- struct fb_info *info;
-@@ -607,6 +1069,9 @@ static int __devinit metronomefb_probe(s
-
- panel_type = board->get_panel_type();
- switch (panel_type) {
-+ case 5:
-+ epd_dt_index = 3;
-+ break;
- case 6:
- epd_dt_index = 0;
- break;
-@@ -632,29 +1097,59 @@ static int __devinit metronomefb_probe(s
- if (!videomemory)
- goto err_fb_rel;
-
-- memset(videomemory, 0, videomemorysize);
-+ memset(videomemory, 0xff, videomemorysize);
-
- info->screen_base = (char __force __iomem *)videomemory;
- info->fbops = &metronomefb_ops;
-
-- metronomefb_fix.line_length = fw;
-- metronomefb_var.xres = fw;
-- metronomefb_var.yres = fh;
-- metronomefb_var.xres_virtual = fw;
-- metronomefb_var.yres_virtual = fh;
- info->var = metronomefb_var;
- info->fix = metronomefb_fix;
-- info->fix.smem_len = videomemorysize;
-+ switch (board->panel_rotation) {
-+ case FB_ROTATE_CW:
-+ case FB_ROTATE_CCW:
-+ info->var.xres = fh;
-+ info->var.yres = fw;
-+ info->var.xres_virtual = fh;
-+ info->var.yres_virtual = fw;
-+ info->fix.line_length = fh;
-+ break;
-+ case FB_ROTATE_UD:
-+ default:
-+ info->var.xres = fw;
-+ info->var.yres = fh;
-+ info->var.xres_virtual = fw;
-+ info->var.yres_virtual = fh;
-+ info->fix.line_length = fw;
-+ break;
-+ }
-+ info->fix.smem_len = fw * fh; /* Real size of image area */
- par = info->par;
- par->info = info;
- par->board = board;
-- par->dt = epd_dt_index;
-+ par->epd_frame = &epd_frame_table[epd_dt_index];
-+ par->pdev = dev;
-+
-+ par->rotation = board->panel_rotation;
-+
-+ par->fxbuckets = kmalloc((fw / 4 + 1) * sizeof(*par->fxbuckets), GFP_KERNEL);
-+ if (!par->fxbuckets)
-+ goto err_vfree;
-+
-+ par->fybuckets = kmalloc(fh * sizeof(*par->fybuckets), GFP_KERNEL);
-+ if (!par->fybuckets)
-+ goto err_fxbuckets;
-+
- init_waitqueue_head(&par->waitq);
-+ par->manual_refresh_threshold = DEFAULT_MANUAL_REFRESH_THRESHOLD;
-+ par->partial_autorefresh_interval = 256;
-+ par->partial_updates_count = 0;
-+ par->is_first_update = 1;
-+ mutex_init(&par->lock);
-
- /* this table caches per page csum values. */
- par->csum_table = vmalloc(videomemorysize/PAGE_SIZE);
- if (!par->csum_table)
-- goto err_vfree;
-+ goto err_fybuckets;
-
- /* the physical framebuffer that we use is setup by
- * the platform device driver. It will provide us
-@@ -684,13 +1179,19 @@ static int __devinit metronomefb_probe(s
- goto err_csum_table;
- }
-
-- retval = load_waveform((u8 *) fw_entry->data, fw_entry->size, 3, 31,
-+ retval = load_waveform((u8 *) fw_entry->data, fw_entry->size, WF_MODE_GC, temp,
- par);
-- release_firmware(fw_entry);
- if (retval < 0) {
- dev_err(&dev->dev, "Failed processing waveform\n");
- goto err_csum_table;
- }
-+ par->firmware = fw_entry;
-+
-+ retval = board->setup_io(par);
-+ if (retval) {
-+ dev_err(&dev->dev, "metronomefb: setup_io() failed\n");
-+ goto err_csum_table;
-+ }
-
- if (board->setup_irq(info))
- goto err_csum_table;
-@@ -712,7 +1213,7 @@ static int __devinit metronomefb_probe(s
-
- /* set cmap */
- for (i = 0; i < 8; i++)
-- info->cmap.red[i] = (((2*i)+1)*(0xFFFF))/16;
-+ info->cmap.red[i] = ((2 * i + 1)*(0xFFFF))/16;
- memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*8);
- memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*8);
-
-@@ -722,18 +1223,47 @@ static int __devinit metronomefb_probe(s
-
- platform_set_drvdata(dev, info);
-
-- dev_dbg(&dev->dev,
-+ retval = device_create_file(info->dev, &dev_attr_defio_delay);
-+ if (retval)
-+ goto err_devattr_defio_delay;
-+
-+ retval = device_create_file(info->dev, &dev_attr_manual_refresh_threshold);
-+ if (retval)
-+ goto err_devattr_manual_refresh_thr;
-+
-+ retval = device_create_file(info->dev, &dev_attr_temp);
-+ if (retval)
-+ goto err_devattr_temp;
-+
-+ retval = device_create_file(info->dev, &dev_attr_autorefresh_interval);
-+ if (retval)
-+ goto err_devattr_autorefresh;
-+
-+ dev_info(&dev->dev,
- "fb%d: Metronome frame buffer device, using %dK of video"
- " memory\n", info->node, videomemorysize >> 10);
-
- return 0;
-
-+ device_remove_file(info->dev, &dev_attr_autorefresh_interval);
-+err_devattr_autorefresh:
-+ device_remove_file(info->dev, &dev_attr_temp);
-+err_devattr_temp:
-+ device_remove_file(info->dev, &dev_attr_manual_refresh_threshold);
-+err_devattr_manual_refresh_thr:
-+ device_remove_file(info->dev, &dev_attr_defio_delay);
-+err_devattr_defio_delay:
-+ unregister_framebuffer(info);
- err_cmap:
- fb_dealloc_cmap(&info->cmap);
- err_free_irq:
- board->cleanup(par);
- err_csum_table:
- vfree(par->csum_table);
-+err_fybuckets:
-+ kfree(par->fybuckets);
-+err_fxbuckets:
-+ kfree(par->fxbuckets);
- err_vfree:
- vfree(videomemory);
- err_fb_rel:
-@@ -750,26 +1280,76 @@ static int __devexit metronomefb_remove(
- if (info) {
- struct metronomefb_par *par = info->par;
-
-+ par->board->set_stdby(par, 0);
-+ mdelay(1);
-+ if (par->board->power_ctl)
-+ par->board->power_ctl(par, METRONOME_POWER_OFF);
-+
-+ device_remove_file(info->dev, &dev_attr_autorefresh_interval);
-+ device_remove_file(info->dev, &dev_attr_temp);
-+ device_remove_file(info->dev, &dev_attr_manual_refresh_threshold);
-+ device_remove_file(info->dev, &dev_attr_defio_delay);
- unregister_framebuffer(info);
- fb_deferred_io_cleanup(info);
- fb_dealloc_cmap(&info->cmap);
- par->board->cleanup(par);
- vfree(par->csum_table);
-+ kfree(par->fybuckets);
-+ kfree(par->fxbuckets);
- vfree((void __force *)info->screen_base);
- module_put(par->board->owner);
-+ release_firmware(par->firmware);
- dev_dbg(&dev->dev, "calling release\n");
- framebuffer_release(info);
- }
- return 0;
- }
-
-+#ifdef CONFIG_PM
-+static int metronomefb_suspend(struct platform_device *pdev, pm_message_t message)
-+{
-+ struct fb_info *info = platform_get_drvdata(pdev);
-+ struct metronomefb_par *par = info->par;
-+
-+ par->board->set_stdby(par, 0);
-+ par->board->set_rst(par, 0);
-+ if (par->board->power_ctl)
-+ par->board->power_ctl(par, METRONOME_POWER_OFF);
-+
-+
-+ return 0;
-+}
-+
-+static int metronomefb_resume(struct platform_device *pdev)
-+{
-+ struct fb_info *info = platform_get_drvdata(pdev);
-+ struct metronomefb_par *par = info->par;
-+
-+ if (par->board->power_ctl)
-+ par->board->power_ctl(par, METRONOME_POWER_ON);
-+
-+ mutex_lock(&par->lock);
-+ metronome_bootup(par);
-+ mutex_unlock(&par->lock);
-+
-+ return 0;
-+}
-+
-+#else
-+#define metronomefb_suspend NULL
-+#define metronomefb_resume NULL
-+#endif
-+
-+
- static struct platform_driver metronomefb_driver = {
-- .probe = metronomefb_probe,
-- .remove = metronomefb_remove,
-- .driver = {
-- .owner = THIS_MODULE,
-- .name = "metronomefb",
-- },
-+ .driver = {
-+ .owner = THIS_MODULE,
-+ .name = "metronomefb",
-+ },
-+ .probe = metronomefb_probe,
-+ .remove = __devexit_p(metronomefb_remove),
-+ .suspend = metronomefb_suspend,
-+ .resume = metronomefb_resume,
- };
-
- static int __init metronomefb_init(void)
-@@ -782,8 +1362,8 @@ static void __exit metronomefb_exit(void
- platform_driver_unregister(&metronomefb_driver);
- }
-
--module_param(user_wfm_size, uint, 0);
--MODULE_PARM_DESC(user_wfm_size, "Set custom waveform size");
-+module_param(temp, int, 0);
-+MODULE_PARM_DESC(temp, "Set current temperature");
-
- module_init(metronomefb_init);
- module_exit(metronomefb_exit);
---- a/include/video/metronomefb.h
-+++ b/include/video/metronomefb.h
-@@ -17,7 +17,9 @@ struct metromem_cmd {
- u16 opcode;
- u16 args[((64-2)/2)];
- u16 csum;
--};
-+} __attribute__((packed));
-+
-+struct epd_frame;
-
- /* struct used by metronome. board specific stuff comes from *board */
- struct metronomefb_par {
-@@ -27,19 +29,40 @@ struct metronomefb_par {
- u16 *metromem_img_csum;
- u16 *csum_table;
- dma_addr_t metromem_dma;
-+ const struct firmware *firmware;
- struct fb_info *info;
- struct metronome_board *board;
-+ struct platform_device *pdev;
- wait_queue_head_t waitq;
- u8 frame_count;
- int extra_size;
-- int dt;
-+ int current_wf_mode;
-+ int current_wf_temp;
-+ unsigned int manual_refresh_threshold;
-+ unsigned int partial_autorefresh_interval;
-+ const struct epd_frame *epd_frame;
-+ u32 *fxbuckets;
-+ u32 *fybuckets;
-+
-+ int rotation;
-+
-+ unsigned int partial_updates_count;
-+ unsigned is_first_update:1;
-+
-+ struct mutex lock;
- };
-
-+#define METRONOME_POWER_OFF 0
-+#define METRONOME_POWER_ON 1
-+
- /* board specific routines and data */
- struct metronome_board {
- struct module *owner; /* the platform device */
-+ void (*power_ctl)(struct metronomefb_par *, int);
- void (*set_rst)(struct metronomefb_par *, int);
- void (*set_stdby)(struct metronomefb_par *, int);
-+ int (*get_err)(struct metronomefb_par *);
-+ int (*get_rdy)(struct metronomefb_par *);
- void (*cleanup)(struct metronomefb_par *);
- int (*met_wait_event)(struct metronomefb_par *);
- int (*met_wait_event_intr)(struct metronomefb_par *);
-@@ -47,11 +70,7 @@ struct metronome_board {
- int (*setup_fb)(struct metronomefb_par *);
- int (*setup_io)(struct metronomefb_par *);
- int (*get_panel_type)(void);
-- unsigned char *metromem;
-- int fw;
-- int fh;
-- int wfm_size;
-- struct fb_info *host_fbinfo; /* the host LCD controller's fbi */
-+ int panel_rotation;
- };
-
- #endif
diff --git a/target/linux/xburst/patches-2.6.35/500-modifier-keys.patch b/target/linux/xburst/patches-2.6.35/500-modifier-keys.patch
deleted file mode 100644
index f8e796f44d..0000000000
--- a/target/linux/xburst/patches-2.6.35/500-modifier-keys.patch
+++ /dev/null
@@ -1,604 +0,0 @@
-From b4ff7a46dd3f64801f7fc6e4c8083b67934fce1c Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 24 Apr 2010 12:22:25 +0200
-Subject: [PATCH] Modify keymap for ben nanonote
-
----
- drivers/char/defkeymap.c_shipped | 308 +++++++++++++++++++++++++++++---------
- drivers/char/defkeymap.map | 74 +++++++---
- 2 files changed, 286 insertions(+), 96 deletions(-)
-
---- a/drivers/char/defkeymap.c_shipped
-+++ b/drivers/char/defkeymap.c_shipped
-@@ -9,10 +9,10 @@ u_short plain_map[NR_KEYS] = {
- 0xf200, 0xf01b, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036,
- 0xf037, 0xf038, 0xf039, 0xf030, 0xf02d, 0xf03d, 0xf07f, 0xf009,
- 0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 0xfb69,
-- 0xfb6f, 0xfb70, 0xf05b, 0xf05d, 0xf201, 0xf702, 0xfb61, 0xfb73,
-+ 0xfb6f, 0xfb70, 0xf05b, 0xf05d, 0xf201, 0xf706, 0xfb61, 0xfb73,
- 0xfb64, 0xfb66, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xf03b,
- 0xf027, 0xf060, 0xf700, 0xf05c, 0xfb7a, 0xfb78, 0xfb63, 0xfb76,
-- 0xfb62, 0xfb6e, 0xfb6d, 0xf02c, 0xf02e, 0xf02f, 0xf700, 0xf30c,
-+ 0xfb62, 0xfb6e, 0xfb6d, 0xf02c, 0xf02e, 0xf02f, 0xf701, 0xf30c,
- 0xf703, 0xf020, 0xf207, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104,
- 0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf208, 0xf209, 0xf307,
- 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
-@@ -22,54 +22,102 @@ u_short plain_map[NR_KEYS] = {
- 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short shift_map[NR_KEYS] = {
-+static u_short shift_map[NR_KEYS] = {
- 0xf200, 0xf01b, 0xf021, 0xf040, 0xf023, 0xf024, 0xf025, 0xf05e,
- 0xf026, 0xf02a, 0xf028, 0xf029, 0xf05f, 0xf02b, 0xf07f, 0xf009,
- 0xfb51, 0xfb57, 0xfb45, 0xfb52, 0xfb54, 0xfb59, 0xfb55, 0xfb49,
-- 0xfb4f, 0xfb50, 0xf07b, 0xf07d, 0xf201, 0xf702, 0xfb41, 0xfb53,
-+ 0xfb4f, 0xfb50, 0xf07b, 0xf07d, 0xf201, 0xf706, 0xfb41, 0xfb53,
- 0xfb44, 0xfb46, 0xfb47, 0xfb48, 0xfb4a, 0xfb4b, 0xfb4c, 0xf03a,
- 0xf022, 0xf07e, 0xf700, 0xf07c, 0xfb5a, 0xfb58, 0xfb43, 0xfb56,
-- 0xfb42, 0xfb4e, 0xfb4d, 0xf03c, 0xf03e, 0xf03f, 0xf700, 0xf30c,
-+ 0xfb42, 0xfb4e, 0xfb4d, 0xf03b, 0xf03a, 0xf03f, 0xf701, 0xf30c,
- 0xf703, 0xf020, 0xf207, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e,
- 0xf10f, 0xf110, 0xf111, 0xf112, 0xf113, 0xf213, 0xf203, 0xf307,
- 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
- 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf03e, 0xf10a,
- 0xf10b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
-+ 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
- 0xf20b, 0xf601, 0xf602, 0xf117, 0xf600, 0xf20a, 0xf115, 0xf116,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short altgr_map[NR_KEYS] = {
-+static u_short altgr_map[NR_KEYS] = {
- 0xf200, 0xf200, 0xf200, 0xf040, 0xf200, 0xf024, 0xf200, 0xf200,
-- 0xf07b, 0xf05b, 0xf05d, 0xf07d, 0xf05c, 0xf200, 0xf200, 0xf200,
-- 0xfb71, 0xfb77, 0xf918, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 0xfb69,
-- 0xfb6f, 0xfb70, 0xf200, 0xf07e, 0xf201, 0xf702, 0xf914, 0xfb73,
-- 0xf917, 0xf919, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xf200,
-- 0xf200, 0xf200, 0xf700, 0xf200, 0xfb7a, 0xfb78, 0xf916, 0xfb76,
-- 0xf915, 0xfb6e, 0xfb6d, 0xf200, 0xf200, 0xf200, 0xf700, 0xf30c,
-- 0xf703, 0xf200, 0xf207, 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510,
-- 0xf511, 0xf512, 0xf513, 0xf514, 0xf515, 0xf208, 0xf202, 0xf911,
-+ 0xf07b, 0xf05b, 0xf05d, 0xf07d, 0xf05c, 0xf07e, 0xf008, 0xf200,
-+ 0xf021, 0xf040, 0xf023, 0xf024, 0xf025, 0xf05e, 0xf026, 0xf02a,
-+ 0xf028, 0xf029, 0xf200, 0xf07e, 0xf201, 0xf706, 0xf0b0, 0xf0a8,
-+ 0xf0a4, 0xf02d, 0xf05f, 0xf07b, 0xf05b, 0xf05d, 0xf07d, 0xf200,
-+ 0xf200, 0xf200, 0xf700, 0xf200, 0xf039, 0xf030, 0xf916, 0xfb76,
-+ 0xf915, 0xf03c, 0xf03e, 0xf027, 0xf022, 0xf200, 0xf701, 0xf30c,
-+ 0xf703, 0xf200, 0xf207, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035,
-+ 0xf036, 0xf037, 0xf038, 0xf514, 0xf515, 0xf208, 0xf202, 0xf911,
- 0xf912, 0xf913, 0xf30b, 0xf90e, 0xf90f, 0xf910, 0xf30a, 0xf90b,
- 0xf90c, 0xf90d, 0xf90a, 0xf310, 0xf206, 0xf200, 0xf07c, 0xf516,
- 0xf517, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
-+ 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
- 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short ctrl_map[NR_KEYS] = {
-+static u_short ctrl_map[NR_KEYS] = {
- 0xf200, 0xf200, 0xf200, 0xf000, 0xf01b, 0xf01c, 0xf01d, 0xf01e,
-- 0xf01f, 0xf07f, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf008, 0xf200,
-+ 0xf01f, 0xf07f, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf200, 0xf200,
- 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 0xf009,
-- 0xf00f, 0xf010, 0xf01b, 0xf01d, 0xf201, 0xf702, 0xf001, 0xf013,
-+ 0xf00f, 0xf010, 0xf01b, 0xf01d, 0xf201, 0xf706, 0xf001, 0xf013,
- 0xf004, 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 0xf200,
- 0xf007, 0xf000, 0xf700, 0xf01c, 0xf01a, 0xf018, 0xf003, 0xf016,
-- 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf20e, 0xf07f, 0xf700, 0xf30c,
-+ 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf20e, 0xf07f, 0xf701, 0xf30c,
- 0xf703, 0xf000, 0xf207, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104,
- 0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf208, 0xf204, 0xf307,
- 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
-@@ -79,35 +127,67 @@ u_short ctrl_map[NR_KEYS] = {
- 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short shift_ctrl_map[NR_KEYS] = {
-+static u_short shift_ctrl_map[NR_KEYS] = {
- 0xf200, 0xf200, 0xf200, 0xf000, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf200, 0xf200,
- 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 0xf009,
-- 0xf00f, 0xf010, 0xf200, 0xf200, 0xf201, 0xf702, 0xf001, 0xf013,
-+ 0xf00f, 0xf010, 0xf200, 0xf200, 0xf201, 0xf706, 0xf001, 0xf013,
- 0xf004, 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 0xf200,
- 0xf200, 0xf200, 0xf700, 0xf200, 0xf01a, 0xf018, 0xf003, 0xf016,
-- 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf200, 0xf200, 0xf700, 0xf30c,
-+ 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf200, 0xf200, 0xf701, 0xf30c,
- 0xf703, 0xf200, 0xf207, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf208, 0xf200, 0xf307,
- 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
- 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
-+ 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
- 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short alt_map[NR_KEYS] = {
-+static u_short alt_map[NR_KEYS] = {
- 0xf200, 0xf81b, 0xf831, 0xf832, 0xf833, 0xf834, 0xf835, 0xf836,
- 0xf837, 0xf838, 0xf839, 0xf830, 0xf82d, 0xf83d, 0xf87f, 0xf809,
- 0xf871, 0xf877, 0xf865, 0xf872, 0xf874, 0xf879, 0xf875, 0xf869,
-- 0xf86f, 0xf870, 0xf85b, 0xf85d, 0xf80d, 0xf702, 0xf861, 0xf873,
-+ 0xf86f, 0xf870, 0xf85b, 0xf85d, 0xf80d, 0xf706, 0xf861, 0xf873,
- 0xf864, 0xf866, 0xf867, 0xf868, 0xf86a, 0xf86b, 0xf86c, 0xf83b,
- 0xf827, 0xf860, 0xf700, 0xf85c, 0xf87a, 0xf878, 0xf863, 0xf876,
-- 0xf862, 0xf86e, 0xf86d, 0xf82c, 0xf82e, 0xf82f, 0xf700, 0xf30c,
-+ 0xf862, 0xf86e, 0xf86d, 0xf200, 0xf200, 0xf82f, 0xf701, 0xf30c,
- 0xf703, 0xf820, 0xf207, 0xf500, 0xf501, 0xf502, 0xf503, 0xf504,
- 0xf505, 0xf506, 0xf507, 0xf508, 0xf509, 0xf208, 0xf209, 0xf907,
- 0xf908, 0xf909, 0xf30b, 0xf904, 0xf905, 0xf906, 0xf30a, 0xf901,
-@@ -117,35 +197,115 @@ u_short alt_map[NR_KEYS] = {
- 0xf118, 0xf210, 0xf211, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
--u_short ctrl_alt_map[NR_KEYS] = {
-+static u_short ctrl_alt_map[NR_KEYS] = {
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- 0xf811, 0xf817, 0xf805, 0xf812, 0xf814, 0xf819, 0xf815, 0xf809,
-- 0xf80f, 0xf810, 0xf200, 0xf200, 0xf201, 0xf702, 0xf801, 0xf813,
-+ 0xf80f, 0xf810, 0xf200, 0xf200, 0xf201, 0xf706, 0xf801, 0xf813,
- 0xf804, 0xf806, 0xf807, 0xf808, 0xf80a, 0xf80b, 0xf80c, 0xf200,
- 0xf200, 0xf200, 0xf700, 0xf200, 0xf81a, 0xf818, 0xf803, 0xf816,
-- 0xf802, 0xf80e, 0xf80d, 0xf200, 0xf200, 0xf200, 0xf700, 0xf30c,
-+ 0xf802, 0xf80e, 0xf80d, 0xf200, 0xf200, 0xf200, 0xf701, 0xf30c,
- 0xf703, 0xf200, 0xf207, 0xf500, 0xf501, 0xf502, 0xf503, 0xf504,
- 0xf505, 0xf506, 0xf507, 0xf508, 0xf509, 0xf208, 0xf200, 0xf307,
- 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
- 0xf302, 0xf303, 0xf300, 0xf20c, 0xf206, 0xf200, 0xf200, 0xf50a,
- 0xf50b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-- 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
-+ 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
- 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf20c,
- 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+};
-+
-+static u_short ctl_map[NR_KEYS] = {
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf033, 0xf200, 0xf200,
-+ 0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74, 0xfb79, 0xf037, 0xf038,
-+ 0xf039, 0xfb70, 0xf200, 0xf200, 0xf201, 0xf706, 0xfb61, 0xfb73,
-+ 0xfb64, 0xfb66, 0xfb67, 0xfb68, 0xf034, 0xf035, 0xf036, 0xf200,
-+ 0xf200, 0xf200, 0xf700, 0xf200, 0xfb7a, 0xfb78, 0xfb63, 0xfb76,
-+ 0xfb62, 0xf031, 0xf032, 0xf200, 0xf200, 0xf030, 0xf701, 0xf30c,
-+ 0xf703, 0xf200, 0xf207, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf208, 0xf200, 0xf307,
-+ 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
-+ 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
-+ 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
-+ 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
- };
-
- ushort *key_maps[MAX_NR_KEYMAPS] = {
-- plain_map, shift_map, altgr_map, NULL,
-- ctrl_map, shift_ctrl_map, NULL, NULL,
-- alt_map, NULL, NULL, NULL,
-- ctrl_alt_map, NULL
-+ plain_map, shift_map, altgr_map, 0,
-+ ctrl_map, shift_ctrl_map, 0, 0,
-+ alt_map, 0, 0, 0,
-+ ctrl_alt_map, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ 0, 0, 0, 0,
-+ ctl_map, 0
- };
-
--unsigned int keymap_count = 7;
-+unsigned int keymap_count = 8;
-
- /*
- * Philosophy: most people do not define more strings, but they who do
-@@ -216,47 +376,47 @@ char *func_table[MAX_NR_FUNC] = {
- func_buf + 135,
- func_buf + 140,
- func_buf + 145,
-- NULL,
-- NULL,
-+ 0,
-+ 0,
- func_buf + 149,
-- NULL,
-+ 0,
- };
-
--struct kbdiacruc accent_table[MAX_DIACR] = {
-- {'`', 'A', 0300}, {'`', 'a', 0340},
-- {'\'', 'A', 0301}, {'\'', 'a', 0341},
-- {'^', 'A', 0302}, {'^', 'a', 0342},
-- {'~', 'A', 0303}, {'~', 'a', 0343},
-- {'"', 'A', 0304}, {'"', 'a', 0344},
-- {'O', 'A', 0305}, {'o', 'a', 0345},
-- {'0', 'A', 0305}, {'0', 'a', 0345},
-- {'A', 'A', 0305}, {'a', 'a', 0345},
-- {'A', 'E', 0306}, {'a', 'e', 0346},
-- {',', 'C', 0307}, {',', 'c', 0347},
-- {'`', 'E', 0310}, {'`', 'e', 0350},
-- {'\'', 'E', 0311}, {'\'', 'e', 0351},
-- {'^', 'E', 0312}, {'^', 'e', 0352},
-- {'"', 'E', 0313}, {'"', 'e', 0353},
-- {'`', 'I', 0314}, {'`', 'i', 0354},
-- {'\'', 'I', 0315}, {'\'', 'i', 0355},
-- {'^', 'I', 0316}, {'^', 'i', 0356},
-- {'"', 'I', 0317}, {'"', 'i', 0357},
-- {'-', 'D', 0320}, {'-', 'd', 0360},
-- {'~', 'N', 0321}, {'~', 'n', 0361},
-- {'`', 'O', 0322}, {'`', 'o', 0362},
-- {'\'', 'O', 0323}, {'\'', 'o', 0363},
-- {'^', 'O', 0324}, {'^', 'o', 0364},
-- {'~', 'O', 0325}, {'~', 'o', 0365},
-- {'"', 'O', 0326}, {'"', 'o', 0366},
-- {'/', 'O', 0330}, {'/', 'o', 0370},
-- {'`', 'U', 0331}, {'`', 'u', 0371},
-- {'\'', 'U', 0332}, {'\'', 'u', 0372},
-- {'^', 'U', 0333}, {'^', 'u', 0373},
-- {'"', 'U', 0334}, {'"', 'u', 0374},
-- {'\'', 'Y', 0335}, {'\'', 'y', 0375},
-- {'T', 'H', 0336}, {'t', 'h', 0376},
-- {'s', 's', 0337}, {'"', 'y', 0377},
-- {'s', 'z', 0337}, {'i', 'j', 0377},
-+struct kbdiacr accent_table[MAX_DIACR] = {
-+ {'`', 'A', '\300'}, {'`', 'a', '\340'},
-+ {'\'', 'A', '\301'}, {'\'', 'a', '\341'},
-+ {'^', 'A', '\302'}, {'^', 'a', '\342'},
-+ {'~', 'A', '\303'}, {'~', 'a', '\343'},
-+ {'"', 'A', '\304'}, {'"', 'a', '\344'},
-+ {'O', 'A', '\305'}, {'o', 'a', '\345'},
-+ {'0', 'A', '\305'}, {'0', 'a', '\345'},
-+ {'A', 'A', '\305'}, {'a', 'a', '\345'},
-+ {'A', 'E', '\306'}, {'a', 'e', '\346'},
-+ {',', 'C', '\307'}, {',', 'c', '\347'},
-+ {'`', 'E', '\310'}, {'`', 'e', '\350'},
-+ {'\'', 'E', '\311'}, {'\'', 'e', '\351'},
-+ {'^', 'E', '\312'}, {'^', 'e', '\352'},
-+ {'"', 'E', '\313'}, {'"', 'e', '\353'},
-+ {'`', 'I', '\314'}, {'`', 'i', '\354'},
-+ {'\'', 'I', '\315'}, {'\'', 'i', '\355'},
-+ {'^', 'I', '\316'}, {'^', 'i', '\356'},
-+ {'"', 'I', '\317'}, {'"', 'i', '\357'},
-+ {'-', 'D', '\320'}, {'-', 'd', '\360'},
-+ {'~', 'N', '\321'}, {'~', 'n', '\361'},
-+ {'`', 'O', '\322'}, {'`', 'o', '\362'},
-+ {'\'', 'O', '\323'}, {'\'', 'o', '\363'},
-+ {'^', 'O', '\324'}, {'^', 'o', '\364'},
-+ {'~', 'O', '\325'}, {'~', 'o', '\365'},
-+ {'"', 'O', '\326'}, {'"', 'o', '\366'},
-+ {'/', 'O', '\330'}, {'/', 'o', '\370'},
-+ {'`', 'U', '\331'}, {'`', 'u', '\371'},
-+ {'\'', 'U', '\332'}, {'\'', 'u', '\372'},
-+ {'^', 'U', '\333'}, {'^', 'u', '\373'},
-+ {'"', 'U', '\334'}, {'"', 'u', '\374'},
-+ {'\'', 'Y', '\335'}, {'\'', 'y', '\375'},
-+ {'T', 'H', '\336'}, {'t', 'h', '\376'},
-+ {'s', 's', '\337'}, {'"', 'y', '\377'},
-+ {'s', 'z', '\337'}, {'i', 'j', '\377'},
- };
-
- unsigned int accent_table_size = 68;
---- a/drivers/char/defkeymap.map
-+++ b/drivers/char/defkeymap.map
-@@ -1,5 +1,5 @@
- # Default kernel keymap. This uses 7 modifier combinations.
--keymaps 0-2,4-5,8,12
-+keymaps 0-2,4-5,8,12,64
- # Change the above line into
- # keymaps 0-2,4-6,8,12
- # in case you want the entries
-@@ -45,24 +45,38 @@ keycode 12 = minus underscor
- control keycode 12 = Control_underscore
- shift control keycode 12 = Control_underscore
- alt keycode 12 = Meta_minus
--keycode 13 = equal plus
-+keycode 13 = equal plus
- alt keycode 13 = Meta_equal
-+ altgr keycode 13 = asciitilde
-+ ctrll keycode 13 = three
- keycode 14 = Delete Delete
-- control keycode 14 = BackSpace
-+ altgr keycode 14 = BackSpace
- alt keycode 14 = Meta_Delete
- keycode 15 = Tab Tab
- alt keycode 15 = Meta_Tab
- keycode 16 = q
-+ altgr keycode 16 = exclam
- keycode 17 = w
-+ altgr keycode 17 = at
- keycode 18 = e
-- altgr keycode 18 = Hex_E
-+ altgr keycode 18 = numbersign
- keycode 19 = r
-+ altgr keycode 19 = dollar
- keycode 20 = t
-+ altgr keycode 20 = percent
- keycode 21 = y
-+ altgr keycode 21 = asciicircum
- keycode 22 = u
-+ altgr keycode 22 = ampersand
-+ ctrll keycode 22 = seven
- keycode 23 = i
-+ altgr keycode 23 = asterisk
-+ ctrll keycode 23 = eight
- keycode 24 = o
-+ altgr keycode 24 = parenleft
-+ ctrll keycode 24 = nine
- keycode 25 = p
-+ altgr keycode 25 = parenright
- keycode 26 = bracketleft braceleft
- control keycode 26 = Escape
- alt keycode 26 = Meta_bracketleft
-@@ -71,19 +85,28 @@ keycode 27 = bracketright bracerigh
- alt keycode 27 = Meta_bracketright
- keycode 28 = Return
- alt keycode 28 = Meta_Control_m
--keycode 29 = Control
-+keycode 29 = CtrlL
- keycode 30 = a
-- altgr keycode 30 = Hex_A
-+ altgr keycode 30 = U+00B0
- keycode 31 = s
-+ altgr keycode 31 = U+00A8
- keycode 32 = d
-- altgr keycode 32 = Hex_D
-+ altgr keycode 32 = U+20AC
- keycode 33 = f
-- altgr keycode 33 = Hex_F
-+ altgr keycode 33 = minus
- keycode 34 = g
-+ altgr keycode 34 = underscore
- keycode 35 = h
-+ altgr keycode 35 = braceleft
- keycode 36 = j
-+ altgr keycode 36 = bracketleft
-+ ctrll keycode 36 = four
- keycode 37 = k
-+ altgr keycode 37 = bracketright
-+ ctrll keycode 37 = five
- keycode 38 = l
-+ altgr keycode 38 = braceright
-+ ctrll keycode 38 = six
- keycode 39 = semicolon colon
- alt keycode 39 = Meta_semicolon
- keycode 40 = apostrophe quotedbl
-@@ -97,58 +120,65 @@ keycode 43 = backslash bar
- control keycode 43 = Control_backslash
- alt keycode 43 = Meta_backslash
- keycode 44 = z
-+ altgr keycode 44 = nine
- keycode 45 = x
-+ altgr keycode 45 = zero
- keycode 46 = c
- altgr keycode 46 = Hex_C
- keycode 47 = v
- keycode 48 = b
- altgr keycode 48 = Hex_B
- keycode 49 = n
-+ altgr keycode 49 = less
-+ ctrll keycode 49 = one
- keycode 50 = m
--keycode 51 = comma less
-- alt keycode 51 = Meta_comma
--keycode 52 = period greater
-+ altgr keycode 50 = greater
-+ ctrll keycode 50 = two
-+keycode 51 = comma semicolon
-+ altgr keycode 51 = apostrophe
-+keycode 52 = period colon
- control keycode 52 = Compose
-- alt keycode 52 = Meta_period
-+ altgr keycode 52 = quotedbl
- keycode 53 = slash question
- control keycode 53 = Delete
- alt keycode 53 = Meta_slash
--keycode 54 = Shift
-+ ctrll keycode 53 = zero
-+keycode 54 = AltGr
- keycode 55 = KP_Multiply
- keycode 56 = Alt
- keycode 57 = space space
- control keycode 57 = nul
- alt keycode 57 = Meta_space
- keycode 58 = Caps_Lock
--keycode 59 = F1 F11 Console_13
-+keycode 59 = F1 F11 one
- control keycode 59 = F1
- alt keycode 59 = Console_1
- control alt keycode 59 = Console_1
--keycode 60 = F2 F12 Console_14
-+keycode 60 = F2 F12 two
- control keycode 60 = F2
- alt keycode 60 = Console_2
- control alt keycode 60 = Console_2
--keycode 61 = F3 F13 Console_15
-+keycode 61 = F3 F13 three
- control keycode 61 = F3
- alt keycode 61 = Console_3
- control alt keycode 61 = Console_3
--keycode 62 = F4 F14 Console_16
-+keycode 62 = F4 F14 four
- control keycode 62 = F4
- alt keycode 62 = Console_4
- control alt keycode 62 = Console_4
--keycode 63 = F5 F15 Console_17
-+keycode 63 = F5 F15 five
- control keycode 63 = F5
- alt keycode 63 = Console_5
- control alt keycode 63 = Console_5
--keycode 64 = F6 F16 Console_18
-+keycode 64 = F6 F16 six
- control keycode 64 = F6
- alt keycode 64 = Console_6
- control alt keycode 64 = Console_6
--keycode 65 = F7 F17 Console_19
-+keycode 65 = F7 F17 seven
- control keycode 65 = F7
- alt keycode 65 = Console_7
- control alt keycode 65 = Console_7
--keycode 66 = F8 F18 Console_20
-+keycode 66 = F8 F18 eight
- control keycode 66 = F8
- alt keycode 66 = Console_8
- control alt keycode 66 = Console_8
-@@ -220,7 +250,7 @@ keycode 93 =
- keycode 94 =
- keycode 95 =
- keycode 96 = KP_Enter
--keycode 97 = Control
-+keycode 97 = Control
- keycode 98 = KP_Divide
- keycode 99 = Control_backslash
- control keycode 99 = Control_backslash
diff --git a/target/linux/xburst/patches-2.6.35/800-n516-lpc.patch b/target/linux/xburst/patches-2.6.35/800-n516-lpc.patch
deleted file mode 100644
index 9194f106f4..0000000000
--- a/target/linux/xburst/patches-2.6.35/800-n516-lpc.patch
+++ /dev/null
@@ -1,510 +0,0 @@
-From a607edde7251b573d84f7e0286d60138ecb5bc21 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Wed, 12 May 2010 14:22:36 +0200
-Subject: [PATCH] Add n516 lpc driver
-
----
- drivers/misc/Kconfig | 8 +
- drivers/misc/Makefile | 1 +
- drivers/misc/n516-lpc.c | 471 +++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 480 insertions(+), 0 deletions(-)
- create mode 100644 drivers/misc/n516-lpc.c
-
---- a/drivers/misc/Kconfig
-+++ b/drivers/misc/Kconfig
-@@ -353,6 +353,14 @@ config VMWARE_BALLOON
- To compile this driver as a module, choose M here: the
- module will be called vmware_balloon.
-
-+config N516_LPC
-+ tristate "N516 keys & power controller"
-+ depends on I2C
-+ depends on INPUT
-+ depends on POWER_SUPPLY
-+ help
-+ N516 keyboard & power controller driver
-+
- source "drivers/misc/c2port/Kconfig"
- source "drivers/misc/eeprom/Kconfig"
- source "drivers/misc/cb710/Kconfig"
---- a/drivers/misc/Makefile
-+++ b/drivers/misc/Makefile
-@@ -31,3 +31,4 @@ obj-$(CONFIG_IWMC3200TOP) += iwmc32
- obj-y += eeprom/
- obj-y += cb710/
- obj-$(CONFIG_VMWARE_BALLOON) += vmware_balloon.o
-+obj-$(CONFIG_N516_LPC) += n516-lpc.o
---- /dev/null
-+++ b/drivers/misc/n516-lpc.c
-@@ -0,0 +1,471 @@
-+#include <linux/module.h>
-+#include <linux/version.h>
-+#include <linux/init.h>
-+#include <linux/fs.h>
-+#include <linux/interrupt.h>
-+#include <linux/irq.h>
-+#include <linux/sched.h>
-+#include <linux/pm.h>
-+#include <linux/sysctl.h>
-+#include <linux/proc_fs.h>
-+#include <linux/delay.h>
-+#include <linux/platform_device.h>
-+#include <linux/input.h>
-+#include <linux/power_supply.h>
-+#include <linux/suspend.h>
-+
-+#include <linux/i2c.h>
-+
-+#include <asm/mach-jz4740/irq.h>
-+#include <asm/mach-jz4740/gpio.h>
-+#include <asm/mach-jz4740/board-n516.h>
-+
-+static int batt_level=0;
-+module_param(batt_level, int, 0);
-+
-+struct n516_lpc_chip {
-+ struct i2c_client *i2c_client;
-+ struct input_dev *input;
-+ unsigned int battery_level;
-+ unsigned int suspending:1, can_sleep:1;
-+};
-+
-+static struct n516_lpc_chip *the_lpc;
-+
-+struct i2c_device_id n516_lpc_i2c_ids[] = {
-+ {"LPC524", 0},
-+ {},
-+};
-+
-+MODULE_DEVICE_TABLE(i2c, n516_lpc_i2c_ids);
-+
-+static const unsigned short normal_i2c[] = I2C_ADDRS(0x54);
-+
-+static const unsigned int n516_lpc_keymap[] = {
-+ [0x01] = KEY_4,
-+ [0x02] = KEY_3,
-+ [0x03] = KEY_2,
-+ [0x04] = KEY_1,
-+ [0x05] = KEY_0,
-+ [0x07] = KEY_9,
-+ [0x08] = KEY_8,
-+ [0x09] = KEY_7,
-+ [0x0a] = KEY_6,
-+ [0x0b] = KEY_5,
-+ [0x0d] = KEY_PLAYPAUSE,
-+ [0x0e] = KEY_MENU,
-+ [0x0f] = KEY_SEARCH,
-+ [0x10] = KEY_DIRECTION,
-+ [0x11] = KEY_SPACE,
-+ [0x13] = KEY_ENTER,
-+ [0x14] = KEY_UP,
-+ [0x15] = KEY_DOWN,
-+ [0x16] = KEY_RIGHT,
-+ [0x17] = KEY_LEFT,
-+ [0x19] = KEY_PAGEDOWN,
-+ [0x1a] = KEY_PAGEUP,
-+ [0x1c] = KEY_POWER,
-+ [0x1d] = KEY_ESC,
-+ [0x1e] = KEY_SLEEP,
-+ [0x1f] = KEY_WAKEUP,
-+};
-+
-+static const unsigned int batt_charge[] = {0, 7, 20, 45, 65, 80, 100};
-+#define MAX_BAT_LEVEL 6
-+
-+static inline int n516_bat_charging(void)
-+{
-+ return !gpio_get_value(GPIO_CHARG_STAT_N);
-+}
-+
-+static int n516_bat_get_status(struct power_supply *b)
-+{
-+ if (power_supply_am_i_supplied(b)) {
-+ if (n516_bat_charging())
-+ return POWER_SUPPLY_STATUS_CHARGING;
-+ else
-+ return POWER_SUPPLY_STATUS_FULL;
-+ } else {
-+ return POWER_SUPPLY_STATUS_DISCHARGING;
-+ }
-+}
-+
-+static int n516_bat_get_charge(struct power_supply *b)
-+{
-+ return batt_charge[the_lpc->battery_level];
-+}
-+
-+static int n516_bat_get_property(struct power_supply *b,
-+ enum power_supply_property psp,
-+ union power_supply_propval *val)
-+{
-+ switch (psp) {
-+ case POWER_SUPPLY_PROP_STATUS:
-+ val->intval = n516_bat_get_status(b);
-+ break;
-+ case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
-+ val->intval = 100;
-+ break;
-+ case POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN:
-+ val->intval = 0;
-+ break;
-+ case POWER_SUPPLY_PROP_CHARGE_NOW:
-+ val->intval = n516_bat_get_charge(b);
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+ return 0;
-+}
-+
-+static void n516_bat_power_changed(struct power_supply *p)
-+{
-+ if (power_supply_am_i_supplied(p) && !n516_bat_charging())
-+ the_lpc->battery_level = MAX_BAT_LEVEL;
-+
-+ power_supply_changed(p);
-+}
-+
-+static enum power_supply_property n516_bat_properties[] = {
-+ POWER_SUPPLY_PROP_STATUS,
-+ POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
-+ POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN,
-+ POWER_SUPPLY_PROP_CHARGE_NOW,
-+};
-+
-+static struct power_supply n516_battery = {
-+ .name = "n516-battery",
-+ .get_property = n516_bat_get_property,
-+ .properties = n516_bat_properties,
-+ .num_properties = ARRAY_SIZE(n516_bat_properties),
-+ .external_power_changed = n516_bat_power_changed,
-+};
-+
-+static irqreturn_t n516_bat_charge_irq(int irq, void *dev)
-+{
-+ struct power_supply *psy = dev;
-+
-+ dev_dbg(psy->dev, "Battery charging IRQ\n");
-+
-+ if (power_supply_am_i_supplied(psy) && !n516_bat_charging())
-+ the_lpc->battery_level = MAX_BAT_LEVEL;
-+
-+ power_supply_changed(psy);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int n516_lpc_send_message(struct n516_lpc_chip *chip, unsigned char val)
-+{
-+ struct i2c_client *client = chip->i2c_client;
-+ struct i2c_msg msg = {client->addr, client->flags, 1, &val};
-+ int ret = 0;
-+
-+ ret = i2c_transfer(client->adapter, &msg, 1);
-+ return ret > 0 ? 0 : ret;
-+}
-+
-+static void n516_key_event(struct n516_lpc_chip *chip, unsigned char keycode)
-+{
-+ struct i2c_client *client = chip->i2c_client;
-+ bool long_press = false;
-+
-+ if (keycode & 0x40) {
-+ keycode &= ~0x40;
-+ long_press = true;
-+ }
-+
-+ dev_dbg(&client->dev, "keycode: 0x%02x, long_press: 0x%02x\n", keycode, (unsigned int)long_press);
-+
-+ if (keycode >= ARRAY_SIZE(n516_lpc_keymap) || n516_lpc_keymap[keycode] == 0)
-+ return;
-+
-+ if (long_press)
-+ input_report_key(chip->input, KEY_LEFTALT, 1);
-+
-+ input_report_key(chip->input, n516_lpc_keymap[keycode], 1);
-+ input_sync(chip->input);
-+ input_report_key(chip->input, n516_lpc_keymap[keycode], 0);
-+
-+ if (long_press)
-+ input_report_key(chip->input, KEY_LEFTALT, 0);
-+ input_sync(chip->input);
-+}
-+
-+static void n516_battery_event(struct n516_lpc_chip *chip, unsigned char battery_level)
-+{
-+ if (battery_level != chip->battery_level) {
-+ chip->battery_level = battery_level;
-+ power_supply_changed(&n516_battery);
-+ }
-+}
-+
-+static irqreturn_t n516_lpc_irq_thread(int irq, void *devid)
-+{
-+ struct n516_lpc_chip *chip = (struct n516_lpc_chip*)devid;
-+ int ret;
-+ unsigned char raw_msg;
-+ struct i2c_client *client = chip->i2c_client;
-+ struct i2c_msg msg = {client->addr, client->flags | I2C_M_RD, 1, &raw_msg};
-+
-+ if (client->dev.power.status >= DPM_OFF)
-+ return IRQ_HANDLED;
-+
-+ ret = i2c_transfer(client->adapter, &msg, 1);
-+ if (ret != 1) {
-+ dev_dbg(&client->dev, "I2C error: %d\n", ret);
-+ return IRQ_HANDLED;
-+ }
-+
-+ dev_dbg(&client->dev, "msg: 0x%02x\n", raw_msg);
-+
-+ /* Ack wakeup event */
-+ if ((raw_msg & ~0x40) < ARRAY_SIZE(n516_lpc_keymap))
-+ n516_key_event(chip, raw_msg);
-+ else if ((raw_msg >= 0x81) && (raw_msg <= 0x87))
-+ n516_battery_event(chip, raw_msg - 0x81);
-+ else if (raw_msg == 0x7e)
-+ n516_lpc_send_message(chip, 0x00);
-+ else
-+ dev_warn(&client->dev, "Unknown message: %x\n", raw_msg);
-+
-+ if (chip->suspending)
-+ chip->can_sleep = 0;
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void n516_lpc_power_off(void)
-+{
-+ struct i2c_client *client = the_lpc->i2c_client;
-+ unsigned char val = 0x01;
-+ struct i2c_msg msg = {client->addr, client->flags, 1, &val};
-+
-+ printk("Issue LPC POWEROFF command...\n");
-+ while (1)
-+ i2c_transfer(client->adapter, &msg, 1);
-+}
-+
-+static int n516_lpc_detect(struct i2c_client *client, struct i2c_board_info *info)
-+{
-+ return 0;
-+}
-+
-+static int n516_lpc_suspend_notifier(struct notifier_block *nb,
-+ unsigned long event,
-+ void *dummy)
-+{
-+ switch(event) {
-+ case PM_SUSPEND_PREPARE:
-+ the_lpc->suspending = 1;
-+ the_lpc->can_sleep = 1;
-+ break;
-+ case PM_POST_SUSPEND:
-+ the_lpc->suspending = 0;
-+ the_lpc->can_sleep = 1;
-+ break;
-+ default:
-+ return NOTIFY_DONE;
-+ }
-+ return NOTIFY_OK;
-+}
-+
-+static struct notifier_block n516_lpc_notif_block = {
-+ .notifier_call = n516_lpc_suspend_notifier,
-+};
-+
-+static int __devinit n516_lpc_probe(struct i2c_client *client, const struct i2c_device_id *id)
-+{
-+ struct n516_lpc_chip *chip;
-+ struct input_dev *input;
-+ int ret = 0;
-+ int i;
-+
-+ chip = kzalloc(sizeof(*chip), GFP_KERNEL);
-+ if (!chip)
-+ return -ENOMEM;
-+
-+ the_lpc = chip;
-+ chip->i2c_client = client;
-+ if ((batt_level > 0) && (batt_level < ARRAY_SIZE(batt_charge)))
-+ chip->battery_level = batt_level;
-+ else
-+ chip->battery_level = 1;
-+
-+ i2c_set_clientdata(client, chip);
-+
-+ ret = gpio_request(GPIO_LPC_INT, "LPC interrupt request");
-+ if (ret) {
-+ dev_err(&client->dev, "Unable to reguest LPC INT GPIO\n");
-+ goto err_gpio_req_lpcint;
-+ }
-+
-+ ret = gpio_request(GPIO_CHARG_STAT_N, "LPC charging status");
-+ if (ret) {
-+ dev_err(&client->dev, "Unable to reguest CHARG STAT GPIO\n");
-+ goto err_gpio_req_chargstat;
-+ }
-+
-+ /* Enter normal mode */
-+ n516_lpc_send_message(chip, 0x2);
-+
-+ input = input_allocate_device();
-+ if (!input) {
-+ dev_err(&client->dev, "Unable to allocate input device\n");
-+ ret = -ENOMEM;
-+ goto err_input_alloc;
-+ }
-+
-+ chip->input = input;
-+
-+ __set_bit(EV_KEY, input->evbit);
-+
-+ for (i = 0; i < ARRAY_SIZE(n516_lpc_keymap); i++)
-+ __set_bit(n516_lpc_keymap[i], input->keybit);
-+
-+ __set_bit(KEY_LEFTALT, input->keybit);
-+
-+ input->name = "n516-keys";
-+ input->phys = "n516-keys/input0";
-+ input->dev.parent = &client->dev;
-+ input->id.bustype = BUS_I2C;
-+ input->id.vendor = 0x0001;
-+ input->id.product = 0x0001;
-+ input->id.version = 0x0100;
-+
-+ ret = input_register_device(input);
-+ if (ret < 0) {
-+ dev_err(&client->dev, "Unable to register input device\n");
-+ goto err_input_register;
-+ }
-+
-+ ret = power_supply_register(NULL, &n516_battery);
-+ if (ret) {
-+ dev_err(&client->dev, "Unable to register N516 battery\n");
-+ goto err_bat_reg;
-+ }
-+
-+ ret = request_threaded_irq(gpio_to_irq(GPIO_LPC_INT), NULL,
-+ n516_lpc_irq_thread,
-+ IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
-+ "lpc", chip);
-+ if (ret) {
-+ dev_err(&client->dev, "request_irq failed: %d\n", ret);
-+ goto err_request_lpc_irq;
-+ }
-+
-+ ret = request_irq(gpio_to_irq(GPIO_CHARG_STAT_N), n516_bat_charge_irq,
-+ IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
-+ "battery charging", &n516_battery);
-+ if (ret) {
-+ dev_err(&client->dev, "Unable to claim battery charging IRQ\n");
-+ goto err_request_chrg_irq;
-+ }
-+
-+ pm_power_off = n516_lpc_power_off;
-+ ret = register_pm_notifier(&n516_lpc_notif_block);
-+ if (ret) {
-+ dev_err(&client->dev, "Unable to register PM notify block\n");
-+ goto err_reg_pm_notifier;
-+ }
-+
-+ device_init_wakeup(&client->dev, 1);
-+
-+ return 0;
-+
-+ unregister_pm_notifier(&n516_lpc_notif_block);
-+err_reg_pm_notifier:
-+ free_irq(gpio_to_irq(GPIO_CHARG_STAT_N), &n516_battery);
-+err_request_chrg_irq:
-+ free_irq(gpio_to_irq(GPIO_LPC_INT), chip);
-+err_request_lpc_irq:
-+ power_supply_unregister(&n516_battery);
-+err_bat_reg:
-+ input_unregister_device(input);
-+err_input_register:
-+ input_free_device(input);
-+err_input_alloc:
-+ gpio_free(GPIO_CHARG_STAT_N);
-+err_gpio_req_chargstat:
-+ gpio_free(GPIO_LPC_INT);
-+err_gpio_req_lpcint:
-+ i2c_set_clientdata(client, NULL);
-+ kfree(chip);
-+
-+ return ret;
-+}
-+
-+static int __devexit n516_lpc_remove(struct i2c_client *client)
-+{
-+ struct n516_lpc_chip *chip = i2c_get_clientdata(client);
-+
-+ unregister_pm_notifier(&n516_lpc_notif_block);
-+ pm_power_off = NULL;
-+ free_irq(gpio_to_irq(GPIO_CHARG_STAT_N), &n516_battery);
-+ free_irq(gpio_to_irq(GPIO_LPC_INT), chip);
-+ power_supply_unregister(&n516_battery);
-+ input_unregister_device(chip->input);
-+ gpio_free(GPIO_CHARG_STAT_N);
-+ gpio_free(GPIO_LPC_INT);
-+ i2c_set_clientdata(client, NULL);
-+ kfree(chip);
-+
-+ return 0;
-+}
-+
-+#if CONFIG_PM
-+static int n516_lpc_suspend(struct i2c_client *client, pm_message_t msg)
-+{
-+ if (!the_lpc->can_sleep)
-+ return -EBUSY;
-+
-+ if (device_may_wakeup(&client->dev))
-+ enable_irq_wake(gpio_to_irq(GPIO_LPC_INT));
-+
-+ return 0;
-+}
-+
-+static int n516_lpc_resume(struct i2c_client *client)
-+{
-+ if (device_may_wakeup(&client->dev))
-+ disable_irq_wake(gpio_to_irq(GPIO_LPC_INT));
-+
-+ return 0;
-+}
-+#else
-+#define n516_lpc_suspend NULL
-+#define n516_lpc_resume NULL
-+#endif
-+
-+
-+static struct i2c_driver n516_lpc_driver = {
-+ .class = I2C_CLASS_HWMON,
-+ .driver = {
-+ .name = "n516-keys",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = n516_lpc_probe,
-+ .remove = __devexit_p(n516_lpc_remove),
-+ .detect = n516_lpc_detect,
-+ .id_table = n516_lpc_i2c_ids,
-+ .address_list = normal_i2c,
-+ .suspend = n516_lpc_suspend,
-+ .resume = n516_lpc_resume,
-+};
-+
-+static int __init n516_lpc_init(void)
-+{
-+ return i2c_add_driver(&n516_lpc_driver);
-+}
-+module_init(n516_lpc_init);
-+
-+static void __exit n516_lpc_exit(void)
-+{
-+ i2c_del_driver(&n516_lpc_driver);
-+}
-+module_exit(n516_lpc_exit);
-+
-+MODULE_AUTHOR("Yauhen Kharuzhy");
-+MODULE_LICENSE("GPL");
-+MODULE_DESCRIPTION("Keys and power controller driver for N516");
-+MODULE_ALIAS("platform:n516-keys");
diff --git a/target/linux/xburst/patches-2.6.35/801-n526-lpc.patch b/target/linux/xburst/patches-2.6.35/801-n526-lpc.patch
deleted file mode 100644
index cf476c4575..0000000000
--- a/target/linux/xburst/patches-2.6.35/801-n526-lpc.patch
+++ /dev/null
@@ -1,277 +0,0 @@
-From f5978b5a9701fe1ddeffa0c5f73923fcaf31129e Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Wed, 12 May 2010 14:23:43 +0200
-Subject: [PATCH] Add n526 lpc driver
-
----
- drivers/misc/Kconfig | 9 ++
- drivers/misc/Makefile | 1 +
- drivers/misc/n526-lpc.c | 237 +++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 247 insertions(+), 0 deletions(-)
- create mode 100644 drivers/misc/n526-lpc.c
-
---- a/drivers/misc/Kconfig
-+++ b/drivers/misc/Kconfig
-@@ -361,6 +361,15 @@ config N516_LPC
- help
- N516 keyboard & power controller driver
-
-+config N526_LPC
-+ tristate "N526 LPC934 coprocessor"
-+ depends on JZ4740_N526
-+ help
-+ If you say yes here you get support for the N526s NXP LPC934 coprocessor.
-+ It is used as a keyboard controllor and for power management.
-+
-+ If you have a N526 you probably want to say Y here.
-+
- source "drivers/misc/c2port/Kconfig"
- source "drivers/misc/eeprom/Kconfig"
- source "drivers/misc/cb710/Kconfig"
---- a/drivers/misc/Makefile
-+++ b/drivers/misc/Makefile
-@@ -32,3 +32,4 @@ obj-y += eeprom/
- obj-y += cb710/
- obj-$(CONFIG_VMWARE_BALLOON) += vmware_balloon.o
- obj-$(CONFIG_N516_LPC) += n516-lpc.o
-+obj-$(CONFIG_N526_LPC) += n526-lpc.o
---- /dev/null
-+++ b/drivers/misc/n526-lpc.c
-@@ -0,0 +1,237 @@
-+/*
-+ * Copyright (C) 2009, Lars-Peter Clausen <lars@metafoo.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.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/i2c.h>
-+#include <linux/input.h>
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
-+
-+#include <linux/workqueue.h>
-+
-+#include <asm/mach-jz4740/irq.h>
-+#include <asm/mach-jz4740/gpio.h>
-+
-+struct n526_lpc {
-+ struct i2c_client *client;
-+ struct input_dev *input;
-+
-+ struct work_struct work;
-+};
-+
-+static const unsigned int n526_lpc_keymap[] = {
-+ [0x01] = KEY_PAGEUP,
-+ [0x02] = KEY_PAGEDOWN,
-+ [0x03] = KEY_VOLUMEUP,
-+ [0x04] = KEY_VOLUMEDOWN,
-+ [0x06] = KEY_1,
-+ [0x07] = KEY_Q,
-+ [0x08] = KEY_A,
-+ [0x09] = KEY_Z,
-+ [0x0a] = KEY_LEFTSHIFT,
-+ [0x0b] = KEY_2,
-+ [0x0c] = KEY_W,
-+ [0x0d] = KEY_S,
-+ [0x0e] = KEY_X,
-+ [0x0f] = KEY_REFRESH,
-+ [0x10] = KEY_3,
-+ [0x11] = KEY_E,
-+ [0x12] = KEY_D,
-+ [0x13] = KEY_C,
-+ [0x14] = KEY_DOCUMENTS,
-+ [0x15] = KEY_4,
-+ [0x16] = KEY_R,
-+ [0x17] = KEY_F,
-+ [0x18] = KEY_V,
-+ [0x19] = KEY_MUTE,
-+ [0x1a] = KEY_5,
-+ [0x1b] = KEY_T,
-+ [0x1c] = KEY_G,
-+ [0x1d] = KEY_B,
-+ [0x1e] = KEY_DELETE,
-+ [0x1f] = KEY_6,
-+ [0x20] = KEY_Y,
-+ [0x21] = KEY_H,
-+ [0x22] = KEY_N,
-+ [0x23] = KEY_SPACE,
-+ [0x24] = KEY_7,
-+ [0x25] = KEY_U,
-+ [0x26] = KEY_J,
-+ [0x27] = KEY_M,
-+/* [0x28] = KEY_SYM, */
-+ [0x29] = KEY_8,
-+ [0x2a] = KEY_I,
-+ [0x2b] = KEY_K,
-+ [0x2c] = KEY_MENU,
-+ [0x2d] = KEY_LEFT,
-+ [0x2e] = KEY_9,
-+ [0x2f] = KEY_O,
-+ [0x30] = KEY_L,
-+ [0x31] = KEY_UP,
-+ [0x32] = KEY_DOWN,
-+ [0x33] = KEY_0,
-+ [0x34] = KEY_P,
-+ [0x35] = KEY_BACKSPACE,
-+ [0x36] = KEY_ENTER,
-+ [0x37] = KEY_RIGHT,
-+};
-+
-+static void n526_lpc_irq_work(struct work_struct *work)
-+{
-+ int ret;
-+ struct n526_lpc *n526_lpc = container_of(work, struct n526_lpc, work);
-+ struct i2c_client *client = n526_lpc->client;
-+ unsigned char raw_msg;
-+ struct i2c_msg msg = {client->addr, client->flags | I2C_M_RD, 1, &raw_msg};
-+ unsigned char keycode;
-+
-+
-+ ret = i2c_transfer(client->adapter, &msg, 1);
-+
-+ if (ret != 1) {
-+ dev_err(&client->dev, "Failed to read lpc status\n");
-+ }
-+
-+ keycode = raw_msg & 0x7f;
-+
-+ if (keycode < ARRAY_SIZE(n526_lpc_keymap)) {
-+ input_report_key(n526_lpc->input, n526_lpc_keymap[keycode],
-+ !(raw_msg & 0x80));
-+ input_sync(n526_lpc->input);
-+ }
-+}
-+
-+static irqreturn_t n526_lpc_irq(int irq, void *dev_id)
-+{
-+ struct n526_lpc *n526_lpc = dev_id;
-+
-+ schedule_work(&n526_lpc->work);
-+ return IRQ_HANDLED;
-+}
-+
-+static int __devinit n526_lpc_probe(struct i2c_client *client,
-+ const struct i2c_device_id *id)
-+{
-+ int ret;
-+ size_t i;
-+ struct n526_lpc *n526_lpc;
-+ struct input_dev *input;
-+
-+ n526_lpc = kmalloc(sizeof(*n526_lpc), GFP_KERNEL);
-+
-+ if (!n526_lpc) {
-+ dev_err(&client->dev, "Failed to allocate device structure\n");
-+ return -ENOMEM;
-+ }
-+
-+ input = input_allocate_device();
-+ if (!input) {
-+ dev_err(&client->dev, "Failed to allocate input device\n");
-+ ret = -ENOMEM;
-+ goto err_free;
-+ }
-+
-+ input->name = "n526-keys";
-+ input->phys = "n526-keys/input0";
-+ input->dev.parent = &client->dev;
-+ input->id.bustype = BUS_I2C;
-+ input->id.vendor = 0x0001;
-+ input->id.product = 0x0001;
-+ input->id.version = 0x0001;
-+
-+ __set_bit(EV_KEY, input->evbit);
-+
-+ for (i = 0; i < ARRAY_SIZE(n526_lpc_keymap); ++i) {
-+ if (n526_lpc_keymap[i] != 0)
-+ __set_bit(n526_lpc_keymap[i], input->keybit);
-+ }
-+
-+ ret = input_register_device(input);
-+
-+ if (ret) {
-+ dev_err(&client->dev, "Failed to register input device: %d\n", ret);
-+ goto err_free_input;
-+ }
-+
-+ n526_lpc->client = client;
-+ n526_lpc->input = input;
-+ INIT_WORK(&n526_lpc->work, n526_lpc_irq_work);
-+
-+ ret = request_irq(client->irq, n526_lpc_irq, IRQF_TRIGGER_FALLING,
-+ "n526-lpc", n526_lpc);
-+ if (ret) {
-+ dev_err(&client->dev, "Failed to request irq: %d\n", ret);
-+ goto err_unregister_input;
-+ }
-+
-+ i2c_set_clientdata(client, n526_lpc);
-+
-+ return 0;
-+
-+err_unregister_input:
-+ input_unregister_device(input);
-+err_free_input:
-+ input_free_device(input);
-+err_free:
-+ kfree(n526_lpc);
-+
-+ return ret;
-+}
-+
-+static int n526_lpc_remove(struct i2c_client *client)
-+{
-+ struct n526_lpc *n526_lpc = i2c_get_clientdata(client);
-+
-+ free_irq(client->irq, n526_lpc);
-+
-+ i2c_set_clientdata(client, NULL);
-+ input_unregister_device(n526_lpc->input);
-+ input_free_device(n526_lpc->input);
-+ kfree(n526_lpc);
-+
-+ return 0;
-+}
-+
-+static const struct i2c_device_id n526_lpc_id[] = {
-+ { "n526-lpc", 0 },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(i2c, n526_lpc_id);
-+
-+static struct i2c_driver n526_lpc_driver = {
-+ .driver = {
-+ .name = "n526-lpc",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = n526_lpc_probe,
-+ .remove = n526_lpc_remove,
-+ .id_table = n526_lpc_id,
-+};
-+
-+static int __init n526_lpc_init(void)
-+{
-+ return i2c_add_driver(&n526_lpc_driver);
-+}
-+module_init(n526_lpc_init);
-+
-+static void __exit n526_lpc_exit(void)
-+{
-+ i2c_del_driver(&n526_lpc_driver);
-+}
-+module_exit(n526_lpc_exit);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Lars-Peter Clausen");
-+MODULE_DESCRIPTION("n526 keypad driver");
-+MODULE_ALIAS("i2c:n526-keys");
diff --git a/target/linux/xburst/patches-2.6.35/900-add-openwrt-logo.patch b/target/linux/xburst/patches-2.6.35/900-add-openwrt-logo.patch
deleted file mode 100644
index 15ebd3821b..0000000000
--- a/target/linux/xburst/patches-2.6.35/900-add-openwrt-logo.patch
+++ /dev/null
@@ -1,9730 +0,0 @@
-From cefa31e6ddf48d8aae726f40e100af150b382f23 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Wed, 12 May 2010 14:18:47 +0200
-Subject: [PATCH] Add openwrt logo
-
----
- drivers/video/logo/Kconfig | 4 +
- drivers/video/logo/Makefile | 1 +
- drivers/video/logo/logo.c | 4 +
- drivers/video/logo/logo_openwrt_clut224.ppm | 9669 +++++++++++++++++++++++++++
- include/linux/linux_logo.h | 1 +
- 5 files changed, 9679 insertions(+), 0 deletions(-)
- create mode 100644 drivers/video/logo/logo_openwrt_clut224.ppm
-
---- a/drivers/video/logo/Kconfig
-+++ b/drivers/video/logo/Kconfig
-@@ -82,4 +82,8 @@ config LOGO_M32R_CLUT224
- depends on M32R
- default y
-
-+config LOGO_OPENWRT_CLUT224
-+ bool "224-color OpenWrt Linux logo"
-+ default y
-+
- endif # LOGO
---- a/drivers/video/logo/Makefile
-+++ b/drivers/video/logo/Makefile
-@@ -15,6 +15,7 @@ obj-$(CONFIG_LOGO_SUPERH_MONO) += logo_
- obj-$(CONFIG_LOGO_SUPERH_VGA16) += logo_superh_vga16.o
- obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o
- obj-$(CONFIG_LOGO_M32R_CLUT224) += logo_m32r_clut224.o
-+obj-$(CONFIG_LOGO_OPENWRT_CLUT224) += logo_openwrt_clut224.o
-
- obj-$(CONFIG_SPU_BASE) += logo_spe_clut224.o
-
---- a/drivers/video/logo/logo.c
-+++ b/drivers/video/logo/logo.c
-@@ -100,6 +100,10 @@ const struct linux_logo * __init_refok f
- /* M32R Linux logo */
- logo = &logo_m32r_clut224;
- #endif
-+#ifdef CONFIG_LOGO_OPENWRT_CLUT224
-+ /* OpenWrt logo */
-+ logo = &logo_openwrt_clut224;
-+#endif
- }
- return logo;
- }
---- /dev/null
-+++ b/drivers/video/logo/logo_openwrt_clut224.ppm
-@@ -0,0 +1,9669 @@
-+P3
-+320 179
-+255
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 55 70 121
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 48 64 117 73 86 133 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+73 86 133 65 79 128 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 35 51 108 70 84 131 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 49 65 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 34 50 107 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 58 73 123 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 36 52 108 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 56 70 122 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 54 69 120 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 42 58 112
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 39 55 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 31 48 105 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 72 85 132 72 85 132 58 73 123 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+52 67 119 73 86 133 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 66 80 129 33 50 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 38 54 109 71 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 66 80 129 31 48 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 55 70 121
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 36 52 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 58 73 123 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 33 50 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 46 61 115 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 48 64 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 36 52 108
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+44 60 114 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 47 105 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 43 59 113
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 72 85 132 64 78 127 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 50 65 118
-+73 86 133 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 66 80 129 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 44 60 114
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 54 69 120 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 36 52 108
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 50 65 118 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 48 64 117 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 37 53 109 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 27 44 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 46 104
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 27 44 102 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 72 85 132 70 84 131 32 49 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 46 61 115 73 86 133
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 65 79 128 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+56 70 122 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 32 49 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+58 73 123 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 35 51 108 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 52 67 119 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 43 59 113 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+30 47 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 111 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 33 50 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+72 85 132 72 85 132 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 42 58 112 73 86 133 73 86 133
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 73 86 133 63 77 126
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 66 80 128 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 54 69 120 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 39 55 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 58 73 123 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 52 67 119
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 39 55 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+44 60 114 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 34 50 107 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 111 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+34 50 107 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 35 51 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+72 85 132 55 70 121 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 38 54 109 72 85 132 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+58 73 123 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 71 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 31 48 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 63 77 126 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 52 67 119 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 47 62 115 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 38 54 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 45 60 114
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 47 62 115 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 110 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+38 54 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 35 51 108 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 37 53 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+65 79 128 27 44 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 47 105 69 83 131 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 49 65 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 45 60 114 72 85 132 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 51 66 119 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 46 61 115 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 63 77 126 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 47 62 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 38 54 109
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+34 50 107 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 43 59 113 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 32 49 106 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+34 50 107 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 63 77 126 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 72 85 132 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 60 75 125 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 66 80 129 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 46 104 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 39 55 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 60 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 55 70 121 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 31 48 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 46 104 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 47 62 115 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+44 60 114 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 27 44 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+50 65 118 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 68 82 130 30 46 104 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 32 49 106 71 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 48 64 117
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 55 70 121 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 52 67 119
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 54 69 120 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+54 69 120 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 37 53 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 29 45 103 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 111
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 60 75 125 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 50 65 118 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 64 78 127
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 110 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 63 77 126
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 42 58 112 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 37 53 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+48 64 117 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 47 62 115 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 32 49 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 42 58 112 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 69 83 131
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 47 62 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 66 80 129
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 64 78 127 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+36 52 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 32 49 106 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 44 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 47 62 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 42 58 112 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 36 52 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 111 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 111 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 32 49 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 54 69 120 73 86 133
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 70 84 131 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 40 56 111
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+56 70 122 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 50 65 118 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+47 62 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 58 73 123
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 52 67 119
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+34 50 107 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 52 67 119 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 37 53 109 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 40 56 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 35 51 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 38 54 109 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 34 50 107
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 35 51 108 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 73 86 133 56 70 122
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+60 75 125 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+58 73 123 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 50 65 118
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 58 73 123
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+29 45 103 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 54 69 120 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 32 49 106 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 44 60 114 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 34 50 107 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 38 54 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 36 52 108 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 36 52 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 63 77 126 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+38 54 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+36 52 108 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 45 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 63 77 126 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+63 77 126 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 42 58 112
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+34 50 107 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 54 69 120 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 33 50 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 28 45 103 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 47 62 115 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 31 48 105 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 39 55 111 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 34 50 107 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 45 60 114 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+66 80 128 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 58 73 123 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 59 74 124 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 50 65 118 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 39 55 111 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 33 50 106
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+40 56 111 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 48 64 117 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 29 45 103 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 32 49 106 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 27 44 102 68 82 130 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 44 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 37 53 109 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 48 64 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+60 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+46 61 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 43 59 113 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 44 60 114 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 47 62 115 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 30 46 104 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 46 61 115 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 66 80 129 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 63 77 126 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 45 60 114 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 66 80 128
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 56 70 122 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+54 69 120 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+52 67 119 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 37 53 109 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 48 64 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 43 59 113 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 32 49 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+26 43 102 66 80 129 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 42 58 112 72 85 132 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 58 73 123 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 56 70 122
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 63 77 126 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+45 60 114 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 31 48 105 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 52 67 119 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 40 56 111 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 35 51 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 42 58 112 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+30 46 104 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+43 59 113 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 65 79 128 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 68 82 130 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 66 80 129 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 45 60 114
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 37 53 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 110 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 27 44 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 37 53 109 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 39 55 110 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 111 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 40 56 111
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+30 47 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+66 80 128 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 40 56 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 50 65 118 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 39 55 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 45 60 114 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+32 49 106 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 37 53 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 54 69 120 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 33 50 106 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 37 53 109 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 35 51 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 111
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 73 86 133 71 84 130 70 81 118 70 81 118 71 84 130
-+76 89 135 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 60 75 125 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 32 49 106 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 51 66 119 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+66 80 128 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 51 66 119 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 49 65 117 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 35 51 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 47 105 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 44 60 114 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 34 50 107 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 37 53 109 25 42 101 15 25 57 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 110
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+33 50 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 77 90 136 60 71 109 43 51 76 25 31 50 15 16 21
-+3 4 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 7 9 13 15 18 27 29 34 52 46 54 80 64 76 117
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 63 77 126 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 63 77 126 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+58 73 123 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 58 73 123 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 56 70 122 61 75 125 61 75 125 61 75 125 54 69 120
-+32 41 72 32 41 72 32 41 72 32 41 72 32 41 72 30 37 63
-+30 37 63 30 37 63 30 37 63 30 37 63 30 37 63 30 37 63
-+30 37 63 27 35 61 13 22 52 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 15 25 57 13 22 52
-+13 22 52 13 22 52 27 35 61 30 37 63 30 37 63 30 37 63
-+30 37 63 30 37 63 30 37 63 30 37 63 30 37 63 30 37 63
-+36 45 78 54 69 120 54 69 120 54 69 120 54 69 120 39 55 110
-+25 42 101 19 29 65 13 22 52 13 22 52 13 22 52 13 22 52
-+13 22 52 13 22 52 13 22 52 13 22 52 13 22 52 13 22 52
-+13 22 52 13 22 52 13 22 52 27 35 61 28 36 67 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 47 62 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 33 50 106 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 43 59 113 23 33 67 4 6 13 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 37 53 109
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+34 50 107 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 64 76 117
-+32 38 56 7 9 13 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 14 14 16 3 4 6 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+10 12 18 38 45 67 70 81 118 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 48 64 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 47 62 115 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+48 64 117 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 63 77 126 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 49 65 117 61 75 125 61 75 125 61 75 125 59 74 124
-+2 3 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 17 39 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 41 89 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 7 13 54 69 120 54 69 120 54 69 120 54 69 120 42 58 112
-+25 42 101 8 10 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 14 19 34 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 31 48 105 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+29 39 72 8 10 17 0 0 0 0 0 0 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 36 52 108
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+36 52 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 64 76 117 23 26 38 0 0 0
-+0 0 0 0 0 0 15 16 21 89 90 90 137 140 149 187 187 187
-+215 215 215 244 244 244 255 255 255 255 255 255 255 255 255 255 255 255
-+237 237 237 207 207 207 180 180 180 134 134 135 75 75 75 7 8 9
-+0 0 0 0 0 0 1 1 2 29 34 52 70 81 118 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 65 79 128 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 31 48 105 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 110 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 43 59 113 61 75 125 61 75 125 61 75 125 61 75 125
-+15 18 27 0 0 0 53 55 60 100 102 106 100 102 106 100 102 106
-+100 102 106 100 102 106 100 102 106 100 102 106 100 102 106 100 102 106
-+100 102 106 75 75 75 0 0 0 8 10 17 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 30 30 30
-+100 102 106 100 102 106 100 102 106 100 102 106 100 102 106 100 102 106
-+100 102 106 100 102 106 100 102 106 100 102 106 100 102 106 7 8 9
-+0 0 0 45 57 100 54 69 120 54 69 120 54 69 120 46 61 115
-+25 42 101 1 1 3 0 0 0 89 90 90 100 102 106 100 102 106
-+100 102 106 100 102 106 100 102 106 100 102 106 100 102 106 100 102 106
-+100 102 106 100 102 106 30 30 30 0 0 0 26 32 53 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 29 40 76 8 11 18
-+0 0 0 0 0 0 30 30 30 7 8 9 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 75 88 134 32 38 61 1 1 1 0 0 0 3 4 6
-+89 90 90 195 195 195 251 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 255 255 255 255 255 255 255 255 255 255 255 255 244 244 244
-+167 167 167 75 75 75 1 2 3 0 0 0 2 3 3 43 51 76
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 73 86 133 34 50 107
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 65 79 128
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 49 65 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 47 105 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 40 56 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 39 55 110 61 75 125 61 75 125 61 75 125 61 75 125
-+27 35 61 0 0 0 100 102 106 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 226 226 226 0 0 0 1 1 2 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 9 15 36 0 0 0 123 126 137
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 75 75 75
-+0 0 0 30 37 63 54 69 120 54 69 120 54 69 120 49 65 117
-+23 37 83 0 0 0 15 16 21 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 43 45 49 0 0 0 36 45 78 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 30 46 104 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 46 61 115
-+45 60 114 45 60 114 28 40 79 9 12 21 0 0 0 0 0 0
-+15 16 21 137 140 149 244 244 244 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 33 50 106
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+38 54 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+70 81 118 15 18 27 0 0 0 1 1 1 89 90 90 226 226 226
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 207 207 207 75 75 75 0 0 0 0 0 0
-+23 26 38 71 84 130 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 73 86 133 50 65 118
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 52 67 119
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 58 73 123 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 65 79 128 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 46 61 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 61 75 125 61 75 125 61 75 125 61 75 125
-+41 51 85 0 0 0 43 45 49 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 15 16 21 0 0 0 23 37 83 25 42 101
-+25 42 101 25 42 101 25 42 101 2 3 7 0 0 0 195 195 195
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 148 148 149
-+0 0 0 14 19 34 54 69 120 54 69 120 54 69 120 52 67 119
-+19 29 65 0 0 0 75 75 75 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 237 237 237 1 2 3 0 0 0 49 62 109 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 31 48 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 46 61 115
-+28 40 79 9 13 26 0 0 0 0 0 0 15 16 21 134 134 135
-+244 244 244 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 32 49 106
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 64 76 117
-+8 10 17 0 0 0 30 30 30 187 187 187 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 155 156 157 14 14 16
-+0 0 0 12 15 26 70 81 118 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 63 77 126
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 110
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 66 80 128 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 58 73 123 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 51 66 119 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 46 104 61 75 125 61 75 125 61 75 125 61 75 125
-+53 67 117 0 0 0 2 3 3 244 244 244 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 75 75 75 0 0 0 19 29 65 25 42 101
-+25 42 101 25 42 101 23 37 83 0 0 0 14 14 16 251 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 255 255 255 215 215 215
-+0 0 0 1 2 3 53 67 117 54 69 120 54 69 120 54 69 120
-+13 20 42 0 0 0 117 119 127 255 255 255 255 255 255 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 187 187 0 0 0 7 9 15 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 33 50 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 18 31 74 10 14 26
-+0 0 0 0 0 0 14 14 16 123 126 137 244 244 244 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 31 48 105
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 70 81 118 8 10 17
-+0 0 0 43 45 49 226 226 226 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 207 207 207
-+30 30 30 0 0 0 12 15 26 72 85 132 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 72 85 132
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 30 46 104
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 50 65 118 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 56 70 122 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 60 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 8 11 18 0 0 0 187 187 187 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 117 119 127 0 0 0 13 20 42 25 42 101
-+25 42 101 25 42 101 13 22 52 0 0 0 89 90 90 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+30 30 30 0 0 0 41 51 85 54 69 120 54 69 120 54 69 120
-+9 13 26 0 0 0 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 134 134 135 0 0 0 13 20 42 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 35 51 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 18 31 74 9 13 26 0 0 0 0 0 0
-+14 14 16 117 119 127 237 237 237 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 78 91 137
-+78 91 137 78 91 137 78 91 137 75 88 134 15 18 27 0 0 0
-+43 45 49 237 237 237 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+226 226 226 30 30 30 0 0 0 23 26 38 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+39 55 111 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+64 78 127 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 44 60 114 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 60 75 125 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 56 70 122 61 75 125 61 75 125 61 75 125
-+60 75 125 23 28 45 0 0 0 134 134 135 255 255 255 255 255 255
-+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 0 0 0 9 13 26 25 42 101
-+25 42 101 25 42 101 9 13 26 0 0 0 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+100 102 106 0 0 0 21 28 52 54 69 120 54 69 120 54 69 120
-+2 3 7 0 0 0 215 215 215 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 75 75 75 0 0 0 19 29 65 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 37 53 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 7 8 9 117 119 127
-+237 237 237 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 46 104
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 27 44 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 32 38 61 0 0 0 30 30 30
-+226 226 226 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 207 207 207 7 8 9 0 0 0 46 54 80 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+51 66 119 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+54 69 120 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 44 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 39 55 111 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 52 67 119 61 75 125 61 75 125 61 75 125
-+60 75 125 32 41 72 0 0 0 75 75 75 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 215 215 215 0 0 0 2 3 7 25 42 101
-+25 42 101 25 42 101 1 1 2 0 0 0 226 226 226 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 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 0 0 0 8 11 18 54 69 120 54 69 120 49 62 109
-+0 0 0 7 8 9 251 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
-+254 254 254 15 16 21 0 0 0 27 41 89 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 29 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 60 71 109 0 0 1 1 1 1 187 187 187
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 148 148 149 0 0 0 4 5 9 74 85 123
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+63 77 126 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+44 60 114 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 49 65 117
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 32 49 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 49 65 117 61 75 125 61 75 125 61 75 125
-+60 75 125 49 61 100 0 0 0 15 16 21 254 254 254 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 251 251 251 7 8 9 0 0 0 23 37 83
-+25 42 101 19 29 65 0 0 0 43 45 49 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+237 237 237 2 3 3 0 0 0 49 62 109 54 69 120 41 51 85
-+0 0 0 51 51 51 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+215 215 215 0 0 0 1 2 3 31 48 105 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 40 56 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 19 23 37 0 0 0 100 102 106 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+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 254 254 53 55 60 0 0 0 32 38 56
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 66 79 125 55 65 99 44 53 81
-+40 48 74 44 52 77 50 58 85 60 71 109 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+71 85 132 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+36 52 108 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 66 80 128 60 71 109 49 60 97
-+50 58 85 40 48 74 39 46 71 40 49 78 44 53 81 49 60 97
-+60 71 109 66 79 125 68 82 130 68 82 130 68 82 130 56 70 122
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 29 45 103 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 27 41 89 19 29 65
-+15 25 57 15 25 57 15 25 57 19 29 65 23 37 83 25 42 101
-+25 42 101 25 42 101 46 61 115 61 75 125 61 75 125 61 75 125
-+61 75 125 59 74 124 2 3 5 0 0 0 215 215 215 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 51 51 51 0 0 0 19 29 65
-+25 42 101 10 17 39 0 0 0 100 102 106 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 53 55 60 0 0 0 32 41 72 54 69 120 27 35 61
-+0 0 0 100 102 106 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+155 156 157 0 0 0 9 13 26 30 47 105 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 42 58 112 25 42 101
-+25 42 101 25 42 101 18 31 74 15 25 57 15 25 57 15 25 57
-+18 31 74 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 60 71 109 0 0 0 7 8 9 226 226 226 255 255 255
-+255 255 255 255 255 255 255 255 255 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 254 254
-+167 167 167 75 75 75 30 30 30 2 3 3 7 8 9 43 45 49
-+100 102 106 207 207 207 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 195 195 195 0 0 0 3 4 6
-+71 84 130 78 91 137 78 91 137 52 59 86 10 12 18 10 12 18
-+10 12 18 10 12 18 10 12 18 10 12 18 10 12 18 10 12 18
-+10 12 18 10 12 18 10 12 18 10 12 18 10 12 18 23 28 45
-+72 85 132 44 52 77 15 18 27 0 0 1 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 5 7 13 29 34 52
-+60 71 109 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+60 71 109 32 38 61 12 15 26 1 1 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 1 1 1 12 15 26 32 38 61 49 60 97 61 75 125
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 65 79 128 41 51 85 8 11 17 8 11 17
-+8 11 17 8 11 17 8 11 17 8 11 17 8 11 17 8 11 17
-+8 11 17 8 11 17 8 11 17 8 10 17 8 10 17 25 31 50
-+64 78 127 53 64 102 26 32 53 5 7 13 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 5 9
-+10 17 39 23 37 83 43 59 113 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 14 19 34 0 0 0 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 100 102 106 0 0 0 13 22 52
-+25 42 101 4 6 13 0 0 0 180 180 180 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 134 134 135 0 0 0 17 22 38 54 69 120 17 22 38
-+0 0 0 148 148 149 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+100 102 106 0 0 0 13 20 42 19 29 65 7 9 15 7 9 15
-+7 9 15 7 9 15 7 9 15 7 9 15 7 9 15 7 9 15
-+7 9 15 7 9 15 7 9 15 7 9 15 7 9 15 9 13 26
-+13 22 52 3 5 9 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 1 1 3 11 15 31 18 31 74 13 20 42 4 6 13
-+4 6 13 4 6 13 2 3 5 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 3 5 9
-+4 6 13 4 6 13 4 6 13 4 6 13 4 6 13 27 41 89
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 29 34 52 0 0 0 100 102 106 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 226 226 226 53 55 60
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 1 2 3 100 102 106 251 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 255 255 255 255 255 255 51 51 51 0 0 0
-+44 52 77 78 91 137 78 91 137 46 54 81 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 11 17
-+8 10 17 0 0 0 0 0 0 2 3 3 43 45 49 75 75 75
-+100 102 106 75 75 75 53 55 60 15 16 21 0 0 0 0 0 0
-+1 1 1 29 34 52 66 80 128 74 87 134 73 86 133 73 86 133
-+73 86 133 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 68 82 130 72 85 132 71 85 132 49 60 97 15 18 27
-+0 0 0 0 0 0 0 0 0 0 0 0 30 30 30 51 51 51
-+75 75 75 89 90 90 100 102 106 89 90 90 75 75 75 51 51 51
-+15 16 21 0 0 0 0 0 0 0 0 0 0 0 0 9 12 21
-+15 25 57 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 61 75 125 38 47 77 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 21 36
-+32 38 61 1 1 1 0 0 0 0 0 0 14 14 16 51 51 51
-+89 90 90 100 102 106 89 90 90 55 60 74 14 14 16 0 0 0
-+0 0 0 1 1 2 18 25 51 59 74 124 61 75 125 61 75 125
-+61 75 125 60 75 125 27 35 61 0 0 0 100 102 106 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 148 148 149 0 0 0 9 13 26
-+23 37 83 0 0 0 7 8 9 244 244 244 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 195 195 195 0 0 0 3 4 6 53 67 117 7 9 15
-+0 0 0 195 195 195 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+43 45 49 0 0 0 19 29 65 18 27 58 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 30 30 30 75 75 75 100 102 106 75 75 75
-+30 30 30 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 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+76 89 135 4 5 9 0 0 0 195 195 195 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 237 237 237 30 30 30 0 0 0
-+5 7 13 44 52 77 64 76 117 79 90 127 74 85 123 60 71 109
-+32 38 56 1 1 2 0 0 0 89 90 90 254 254 254 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 155 156 157 0 0 0
-+16 21 36 78 91 137 78 91 137 46 54 81 0 0 0 53 55 60
-+187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187
-+187 187 187 187 187 187 187 187 187 134 134 135 0 0 0 0 0 0
-+0 0 0 30 30 30 148 148 149 237 237 237 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 254 254 254 207 207 207 100 102 106
-+3 4 6 0 0 0 10 12 18 60 71 109 73 86 133 73 86 133
-+73 86 133 46 61 115 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 63 77 126 64 76 117 19 23 37 0 0 0 0 0 0
-+7 9 13 89 90 90 155 156 157 220 220 220 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 237 237 237 167 167 167 100 102 106 14 14 16 0 0 0
-+0 0 0 8 11 18 23 37 83 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 58 73 123 38 47 77 0 0 0 55 60 74
-+187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187
-+187 187 187 187 187 187 187 187 187 117 119 127 0 0 0 0 0 0
-+0 0 0 1 1 1 89 90 90 187 187 187 251 251 251 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 251 251 251 195 195 195
-+75 75 75 1 1 1 0 0 0 16 21 36 55 70 121 61 75 125
-+61 75 125 60 75 125 41 51 85 0 0 0 43 45 49 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 195 195 195 0 0 0 3 6 11
-+15 25 57 0 0 0 55 60 74 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 251 251 251 15 16 21 0 0 0 41 51 85 0 0 0
-+1 2 3 244 244 244 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 244 244 244
-+2 3 3 0 0 0 27 41 89 18 27 58 0 0 0 53 55 60
-+187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187 187
-+187 187 187 187 187 187 187 187 187 134 134 135 0 0 0 0 0 0
-+30 30 30 187 187 187 254 254 254 255 255 255 255 255 255 255 255 255
-+255 255 255 215 215 215 117 119 127 14 14 16 0 0 0 0 0 0
-+100 102 106 187 187 187 187 187 187 187 187 187 226 226 226 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 195 195 195 187 187 187 187 187 187
-+187 187 187 187 187 187 187 187 187 7 9 13 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+55 65 99 0 0 0 30 30 30 254 254 254 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 89 90 90 0 0 0 15 16 21
-+74 85 123 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 55 65 99 3 4 6 0 0 0 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 226 226 226 1 1 1
-+1 1 2 71 84 130 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 0 0 0 0 0 0
-+100 102 106 244 244 244 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+207 207 207 43 45 49 0 0 0 7 9 13 64 76 117 73 86 133
-+73 86 133 54 69 120 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 41 54 95 4 5 9 0 0 0 14 14 16 123 126 137
-+237 237 237 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 244 244 244 148 148 149
-+15 16 21 0 0 0 1 2 3 19 29 65 25 42 101 25 42 101
-+25 42 101 25 42 101 55 70 121 38 47 77 0 0 0 89 90 90
-+255 255 255 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 0 0 0 0 0 0
-+30 30 30 195 195 195 255 255 255 255 255 255 255 255 255 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 187 187 14 14 16 0 0 0 19 23 37 61 75 125
-+61 75 125 60 75 125 53 67 117 0 0 0 2 3 3 244 244 244
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 244 244 244 2 3 3 0 0 0
-+9 12 21 0 0 0 134 134 135 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 89 90 90 0 0 0 12 15 26 0 0 0
-+43 45 49 255 255 255 255 255 255 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 187 187
-+0 0 0 4 6 13 25 42 101 18 27 58 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 0 0 0 51 51 51
-+237 237 237 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 134 134 135 0 0 0 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+38 45 67 0 0 0 100 102 106 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 215 215 215 0 0 0 1 1 2 68 77 109
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 48 55 81 0 0 0 30 30 30 251 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 255 255 255 43 45 49
-+0 0 0 55 65 99 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 0 0 0 148 148 149
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 237 237 237 43 45 49 0 0 0 10 12 18 66 80 128
-+73 86 133 59 74 124 25 42 101 25 42 101 25 42 101 25 42 101
-+18 31 74 1 2 3 0 0 0 53 55 60 220 220 220 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+237 237 237 75 75 75 0 0 0 0 0 1 19 29 65 25 42 101
-+25 42 101 25 42 101 52 67 119 38 47 77 0 0 0 89 90 90
-+255 255 255 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 0 0 0 53 55 60
-+237 237 237 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 207 207 207 7 8 9 0 0 0 32 41 72
-+61 75 125 60 75 125 60 75 125 8 11 18 0 0 0 187 187 187
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 43 45 49 0 0 0
-+0 0 0 0 0 0 207 207 207 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 155 156 157 0 0 0 0 0 0 0 0 0
-+89 90 90 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 134 134 135
-+0 0 0 9 15 36 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 7 9 13 226 226 226
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 251 251 251 30 30 30 0 0 0 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+23 26 38 0 0 0 155 156 157 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 123 126 137 0 0 0 23 28 45 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 81 94 136 7 9 13 0 0 0 180 180 180
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 100 102 106
-+0 0 0 39 46 71 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 123 126 137 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 226 226 226 30 30 30 0 0 0 32 38 61
-+73 86 133 63 77 126 25 42 101 25 42 101 25 42 101 23 37 83
-+2 3 7 0 0 0 89 90 90 251 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 255 255 255 255 255 255 255 255 255 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 254 254 100 102 106 0 0 0 1 1 2 18 31 74
-+25 42 101 25 42 101 49 65 117 38 47 77 0 0 0 89 90 90
-+255 255 255 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 51 51 51 237 237 237
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 148 148 149 0 0 0 7 9 15
-+59 74 124 60 75 125 60 75 125 23 28 45 0 0 0 134 134 135
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+0 0 0 15 16 21 254 254 254 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 226 226 226 0 0 0 0 0 0 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 75 75 75
-+0 0 0 15 25 57 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 134 134 135 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 155 156 157 0 0 0 0 0 0 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+8 11 17 0 0 0 207 207 207 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 53 55 60 0 0 0 52 59 86 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 32 38 56 0 0 0 117 119 127
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 137 140 149
-+0 0 0 29 34 52 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 237 237 237 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 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 187 187 0 0 0 1 1 2
-+60 71 109 66 80 129 25 42 101 25 42 101 25 42 101 5 7 14
-+0 0 0 75 75 75 251 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 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+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 254 254 89 90 90 0 0 0 3 6 11
-+25 42 101 25 42 101 48 64 117 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 207 207 207 237 237 237 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 251 251 251 30 30 30 0 0 0
-+41 51 85 60 75 125 60 75 125 32 41 72 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 134 134 135 0 0 0
-+0 0 0 89 90 90 255 255 255 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
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 43 45 49 0 0 0 0 0 0
-+187 187 187 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 15 16 21
-+0 0 0 23 37 83 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 207 207 207 244 244 244 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 51 51 51 0 0 0 0 0 1 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 76 90 135
-+1 1 2 0 0 0 237 237 237 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 14 14 16 0 0 0 64 76 117 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 50 58 85 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 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
-+0 0 0 19 23 37 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 75 75 75 0 0 0
-+25 31 50 70 84 131 25 42 101 25 42 101 15 25 57 0 0 0
-+30 30 30 244 244 244 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 251 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 255 255 255 255 255 255 244 244 244 30 30 30 0 0 0
-+13 20 42 25 42 101 47 62 115 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 134 134 135 0 0 0
-+19 24 44 60 75 125 60 75 125 49 61 100 0 0 0 15 16 21
-+254 254 254 255 255 255 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 187 187 0 0 0
-+0 0 0 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 244 244 244 43 45 49
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 117 119 127 0 0 0 0 0 0
-+237 237 237 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 220 220 220 0 0 0
-+1 1 3 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 195 195 195 0 0 0 1 1 3 9 13 26 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 74 85 123
-+0 0 0 7 8 9 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 237 237 237 0 0 0 0 0 0 81 94 136 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 60 71 109 0 0 0 43 45 49
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 195 195 195
-+0 0 0 15 16 21 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 215 215 215 0 0 0
-+1 2 3 62 75 121 25 42 101 27 41 89 2 3 7 0 0 0
-+187 187 187 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 226 226 226
-+89 90 90 15 16 21 0 0 0 7 9 13 75 75 75 207 207 207
-+255 255 255 255 255 255 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 187 187 0 0 0
-+2 3 5 25 42 101 46 61 115 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 195 195 195 0 0 0
-+8 10 17 60 75 125 60 75 125 59 74 124 2 3 5 0 0 0
-+215 215 215 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 237 237 237 0 0 0
-+1 1 1 226 226 226 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 180 180 180 0 0 0
-+220 220 220 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 187 187 0 0 0 30 30 30
-+255 255 255 255 255 255 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 0 0 0
-+9 12 21 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 89 90 90 0 0 0 10 17 39 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 64 76 117
-+0 0 0 15 16 21 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 220 220 220 0 0 0 4 5 9 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 68 77 109 0 0 0 30 30 30
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 207 207 207
-+0 0 0 8 11 17 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 215 215 215 137 140 149 134 134 135 180 180 180 254 254 254
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 43 51 76 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 207 207 207 15 16 21
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 8 9
-+187 187 187 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 51 51 51
-+0 0 0 15 25 57 45 60 114 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 244 244 244 3 4 6
-+0 0 0 53 67 117 60 75 125 60 75 125 14 19 34 0 0 0
-+155 156 157 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 30 30 30
-+43 45 49 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 100 102 106 0 0 0
-+148 148 149 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 244 244 244 7 8 9 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 100 102 106 0 0 0
-+13 20 42 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 244 244 244 255 255 255 255 255 255
-+226 226 226 3 4 6 0 0 0 23 37 83 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 64 76 117
-+0 0 0 30 30 30 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 207 207 207 0 0 0 7 9 13 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 70 81 118 0 0 0 14 14 16
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 215 215 215
-+0 0 0 4 5 9 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 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 254 254
-+100 102 106 1 1 1 0 0 0 0 0 0 0 0 0 55 60 74
-+237 237 237 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 155 156 157
-+0 0 0 23 26 38 25 42 101 9 12 21 0 0 0 180 180 180
-+255 255 255 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 254 254 51 51 51 0 0 0
-+15 18 27 60 71 109 62 75 121 53 64 102 19 23 37 0 0 0
-+30 30 30 251 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 155 156 157
-+0 0 0 9 12 21 45 60 114 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 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 51 51 51 7 8 9 30 30 30 100 102 106 244 244 244
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 30 30 30
-+0 0 0 49 62 109 60 75 125 60 75 125 27 35 61 0 0 0
-+100 102 106 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 75 75 75
-+117 119 127 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 30 30 30 0 0 0
-+75 75 75 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 75 75 75 117 119 127
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 51 51 51 0 0 0
-+19 29 65 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+244 244 244 100 102 106 7 8 9 0 0 0 30 30 30 100 102 106
-+89 90 90 0 0 0 9 13 26 25 42 101 9 15 36 0 0 0
-+7 8 9 14 14 16 14 14 16 14 14 16 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 43 45 49 14 14 16 14 14 16
-+14 14 16 14 14 16 14 14 16 1 1 1 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 64 76 117
-+0 0 0 30 30 30 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 207 207 207 0 0 0 7 9 13 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 68 77 109 0 0 0 30 30 30
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 207 207 207
-+0 0 0 8 11 17 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 134 134 135
-+0 0 0 0 0 1 23 26 38 29 34 52 4 5 9 0 0 0
-+75 75 75 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 215 215 215
-+0 0 0 4 5 9 27 41 89 0 0 0 7 8 9 244 244 244
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 180 180 180 0 0 0 1 1 2
-+44 52 77 50 58 85 50 58 85 50 58 85 44 53 81 1 1 2
-+0 0 0 180 180 180 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 226 226 226
-+1 1 1 0 0 1 42 56 104 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 155 156 157
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 43 45 49
-+0 0 0 49 60 97 60 75 125 60 75 125 41 51 85 0 0 0
-+43 45 49 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 117 119 127
-+187 187 187 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 220 220 220 0 0 0 0 0 0
-+14 14 16 251 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 137 140 149 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 244 244 244 3 4 6 0 0 0
-+27 41 89 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 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 254 254
-+75 75 75 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 18 31 74 25 42 101 9 15 36 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 70 81 118
-+0 0 0 14 14 16 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 220 220 220 0 0 0 3 4 6 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 65 74 105 0 0 0 43 45 49
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 195 195 195
-+0 0 0 15 16 21 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 244 244 244 14 14 16
-+0 0 0 48 55 81 76 89 135 76 89 135 60 71 109 1 2 3
-+0 0 0 207 207 207 255 255 255 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 254 254
-+14 14 16 0 0 0 15 25 57 0 0 0 75 75 75 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 117 119 127 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 100 102 106 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+43 45 49 0 0 0 36 45 78 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 244 244 244 14 14 16
-+0 0 0 27 35 61 60 71 109 49 60 97 1 2 3 0 0 0
-+220 220 220 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 53 67 117 0 0 0
-+1 2 3 237 237 237 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 180 180 180
-+251 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 148 148 149 0 0 0 0 0 0
-+0 0 0 195 195 195 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 215 215 215 220 220 220
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 195 195 195 0 0 0 3 6 11
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 180 180 180
-+0 0 0 2 3 7 18 31 74 25 42 101 18 31 74 10 17 39
-+1 1 3 4 6 13 25 42 101 25 42 101 27 41 89 23 37 83
-+23 37 83 23 37 83 11 15 31 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 19 29 65
-+23 37 83 23 37 83 23 37 83 23 37 83 23 37 83 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 71 84 130
-+0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 237 237 237 0 0 0 0 0 0 78 91 137 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 55 65 99 0 0 0 53 55 60
-+255 255 255 255 255 255 255 255 255 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 187 187
-+0 0 0 15 18 27 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 180 180 180 0 0 0
-+10 12 18 76 89 135 76 89 135 76 89 135 76 89 135 23 28 45
-+0 0 0 134 134 135 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+53 55 60 0 0 0 9 13 26 0 0 0 117 119 127 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 117 119 127 75 75 75 75 75 75
-+75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75
-+75 75 75 117 119 127 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+89 90 90 0 0 0 28 36 67 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 180 180 180 0 0 0
-+5 7 13 63 77 126 64 78 127 63 77 126 12 15 26 0 0 0
-+180 180 180 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 8 11 18
-+0 0 0 187 187 187 255 255 255 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 254 254
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 75 75 75 0 0 0 1 2 3
-+0 0 0 117 119 127 255 255 255 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 254 254
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 134 134 135 0 0 0 9 15 36
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 75 75 75
-+0 0 0 13 22 52 25 42 101 25 42 101 25 42 101 25 42 101
-+27 41 89 23 37 83 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 76 89 135
-+1 1 2 0 0 0 226 226 226 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 15 16 21 0 0 0 64 76 117 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 44 50 70 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 155 156 157
-+0 0 0 23 26 38 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 134 134 135 0 0 0
-+25 31 50 76 89 135 76 89 135 76 89 135 76 89 135 40 48 74
-+0 0 0 89 90 90 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+89 90 90 0 0 0 1 1 3 0 0 0 137 140 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+117 119 127 0 0 0 21 28 52 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 134 134 135 0 0 0
-+23 28 45 64 78 127 64 78 127 63 77 126 17 22 38 0 0 0
-+148 148 149 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 23 28 45
-+0 0 0 134 134 135 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 251 251 251 14 14 16 0 0 0 26 32 53
-+0 0 0 51 51 51 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 75 75 75 0 0 0 15 25 57
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 251 251 251 14 14 16
-+0 0 0 23 37 83 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+15 16 21 0 0 0 187 187 187 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 53 55 60 0 0 0 50 58 85 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 82 95 139 25 31 50 0 0 0 134 134 135
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 117 119 127
-+0 0 0 32 38 61 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+38 44 61 76 89 135 76 89 135 76 89 135 76 89 135 50 58 85
-+0 0 0 75 75 75 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+100 102 106 0 0 0 0 0 0 0 0 0 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 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+148 148 149 0 0 0 18 23 42 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 100 102 106 0 0 0
-+32 38 61 64 78 127 64 78 127 63 77 126 18 23 42 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 32 41 72
-+0 0 0 75 75 75 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+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 187 187 0 0 0 3 6 11 49 62 109
-+1 1 1 1 1 1 237 237 237 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 207 207 207 0 0 0
-+2 3 5 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+23 28 45 0 0 0 148 148 149 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 134 134 135 0 0 0 23 26 38 82 95 139
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 77 90 136 4 5 9 0 0 0 195 195 195
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 89 90 90
-+0 0 0 46 54 80 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 100 102 106 0 0 0
-+38 44 61 76 89 135 76 89 135 76 89 135 76 89 135 50 58 85
-+0 0 0 75 75 75 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+100 102 106 0 0 0 0 0 0 0 0 0 180 180 180 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+155 156 157 0 0 0 16 21 36 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 64 78 127 63 77 126 18 23 42 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 49 61 100
-+0 0 0 15 16 21 254 254 254 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 117 119 127 0 0 0 19 24 44 56 70 122
-+12 15 26 0 0 0 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 220 220 220 0 0 0 1 1 2 25 42 101
-+25 42 101 25 42 101 25 42 101 18 27 58 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 180 180 180 0 0 0
-+8 10 17 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+39 46 71 0 0 0 89 90 90 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 220 220 220 1 1 1 1 1 2 65 75 108
-+82 95 139 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 82 95 139 50 58 85 0 0 0 30 30 30 254 254 254
-+255 255 255 255 255 255 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 254 254 15 18 27
-+0 0 0 60 71 109 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 76 89 135 76 89 135 76 89 135 76 89 135 43 51 76
-+0 0 0 89 90 90 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+100 102 106 0 0 0 0 0 0 0 0 0 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 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 0 0 0 14 19 34 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 64 78 127 63 77 126 17 22 38 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+3 4 6 0 0 0 215 215 215 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 51 51 51 0 0 0 36 45 78 56 70 122
-+27 35 61 0 0 0 89 90 90 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+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 0 0 0 8 11 18 25 42 101
-+25 42 101 25 42 101 25 42 101 18 27 58 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 148 148 149 0 0 0
-+11 15 31 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+60 71 109 0 0 0 14 14 16 251 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 255 255 255 100 102 106 0 0 0 10 12 18
-+70 81 118 82 95 139 82 95 139 82 95 139 82 95 139 82 95 139
-+82 95 139 60 71 109 4 5 9 0 0 0 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 207 207 207 0 0 0
-+4 5 9 77 90 136 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 155 156 157 0 0 0
-+19 23 37 76 89 135 76 89 135 76 89 135 76 89 135 32 38 56
-+0 0 0 117 119 127 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+89 90 90 0 0 0 4 6 13 0 0 0 137 140 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 226 226 226 220 220 220 220 220 220
-+220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220
-+220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220
-+220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220
-+137 140 149 0 0 0 15 18 27 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 64 78 127 63 77 126 13 20 42 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+14 19 34 0 0 0 155 156 157 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 237 237 237 1 1 1 0 0 0 49 62 109 56 70 122
-+41 54 95 0 0 0 15 16 21 254 254 254 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 100 102 106 0 0 0 13 20 42 25 42 101
-+25 42 101 25 42 101 25 42 101 18 27 58 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 134 134 135 0 0 0
-+10 17 39 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 7 9 13 0 0 0 187 187 187 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 237 237 237 43 45 49 0 0 0
-+3 4 6 38 44 61 55 65 99 64 76 117 68 77 109 55 65 99
-+29 34 52 1 1 2 0 0 0 75 75 75 254 254 254 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 123 126 137 0 0 0
-+23 28 45 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 226 226 226 1 2 3
-+1 1 2 64 76 117 76 89 135 76 89 135 75 88 134 10 12 18
-+0 0 0 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
-+55 60 74 0 0 0 9 15 36 0 0 0 100 102 106 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 89 90 90 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 18 27 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 64 78 127 63 77 126 13 20 42 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+27 35 61 0 0 0 100 102 106 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 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 0 0 0 9 12 21 56 70 122 56 70 122
-+55 70 121 4 5 9 0 0 0 207 207 207 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 53 55 60 0 0 0 19 29 65 25 42 101
-+25 42 101 25 42 101 25 42 101 18 27 58 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 20 42 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 30 30 30 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 32 38 61 0 0 0 75 75 75 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 237 237 237 75 75 75
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 1 2 3 100 102 106 251 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 255 255 255 251 251 251 30 30 30 0 0 0
-+52 59 86 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 89 90 90
-+0 0 0 5 7 13 44 52 77 55 65 99 23 28 45 0 0 0
-+30 30 30 244 244 244 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+15 16 21 0 0 0 19 29 65 0 0 0 43 45 49 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 137 140 149 0 0 0 0 0 1
-+4 5 9 4 5 9 4 5 9 4 5 9 4 5 9 2 3 5
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 7 19 23 37 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 64 78 127 63 77 126 11 17 38 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+41 51 85 0 0 0 43 45 49 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 89 90 90 0 0 0 21 28 52 56 70 122 56 70 122
-+56 70 122 18 23 42 0 0 0 134 134 135 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 251 251 251 7 8 9 0 0 0 23 37 83 25 42 101
-+25 42 101 25 42 101 25 42 101 19 29 65 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 9 15 36 0 0 0 148 148 149 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 43 45 49 0 0 0 18 31 74
-+25 42 101 18 31 74 13 20 42 3 6 11 13 22 52 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 70 81 118 1 1 2 1 1 1 207 207 207 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+195 195 195 100 102 106 51 51 51 30 30 30 30 30 30 53 55 60
-+117 119 127 207 207 207 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 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 0 0 0 7 9 13
-+76 89 135 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 237 237 237
-+51 51 51 0 0 0 0 0 0 0 0 0 0 0 0 7 8 9
-+187 187 187 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 220 220 220
-+0 0 0 2 3 5 25 42 101 1 2 3 1 1 1 220 220 220
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 215 215 215 1 2 3 0 0 1
-+50 58 85 69 83 131 69 83 131 69 83 131 64 76 117 9 12 21
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 7 9 13 25 31 50 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 64 78 127 63 77 126 11 17 38 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+53 67 117 0 0 0 1 2 3 237 237 237 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 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 254 254 15 16 21 0 0 0 41 51 85 56 70 122 56 70 122
-+56 70 122 32 41 72 0 0 0 53 55 60 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 195 195 195 0 0 0 3 5 9 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 19 29 65 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 10 17 39 0 0 0 134 134 135 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 75 75 75 0 0 0 3 5 9
-+1 1 2 0 0 0 0 0 0 0 0 0 10 17 39 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 29 34 52 0 0 0 75 75 75 254 254 254
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 244 244 244 30 30 30 0 0 0 39 46 71
-+78 91 137 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+244 244 244 137 140 149 75 75 75 51 51 51 89 90 90 207 207 207
-+255 255 255 255 255 255 255 255 255 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
-+0 0 0 9 13 26 25 42 101 11 15 31 0 0 0 134 134 135
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+0 0 1 19 23 37 32 38 56 23 28 45 3 4 6 0 0 0
-+15 16 21 220 220 220 237 237 237 215 215 215 187 187 187 167 167 167
-+137 140 149 117 119 127 89 90 90 75 75 75 43 45 49 30 30 30
-+1 1 1 0 0 0 16 21 36 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 63 77 126 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 8 10 17 0 0 0 187 187 187 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+207 207 207 0 0 0 2 3 5 47 62 115 56 70 122 56 70 122
-+56 70 122 49 62 109 0 0 0 3 4 6 244 244 244 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 148 148 149 0 0 0 11 15 31 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 19 29 65 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 13 20 42 0 0 0 117 119 127 255 255 255
-+255 255 255 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 2 3 3 0 0 0
-+0 0 0 30 30 30 53 55 60 0 0 0 9 13 26 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 29 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 70 81 118 3 4 6 0 0 0 148 148 149
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 117 119 127 0 0 0 10 12 18 75 88 134
-+78 91 137 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 55 60 74
-+0 0 0 15 25 57 25 42 101 19 29 65 0 0 0 15 16 21
-+244 244 244 255 255 255 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 254 254 117 119 127
-+3 4 6 0 0 0 0 0 0 0 0 0 0 0 0 53 55 60
-+220 220 220 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 180 180 180
-+0 0 0 1 1 2 60 71 109 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 63 77 126 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 23 28 45 0 0 0 134 134 135 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+134 134 135 0 0 0 11 15 31 51 66 119 56 70 122 56 70 122
-+56 70 122 56 70 122 9 12 21 0 0 0 180 180 180 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 89 90 90 0 0 0 13 22 52 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 19 29 65 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 13 22 52 0 0 0 100 102 106 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 237 237 237 195 195 195
-+226 226 226 255 255 255 187 187 187 0 0 0 8 10 17 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 46 104
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 27 44 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 78 91 137
-+78 91 137 78 91 137 78 91 137 46 54 81 0 0 0 7 9 13
-+207 207 207 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 180 180 180 1 1 1 0 0 0 55 65 99 78 91 137
-+78 91 137 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 215 215 215 1 1 1
-+1 1 2 27 41 89 25 42 101 25 42 101 5 7 14 0 0 0
-+117 119 127 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+226 226 226 148 148 149 117 119 127 148 148 149 207 207 207 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 244 244 244 30 30 30
-+0 0 0 26 32 53 66 80 129 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 56 70 122 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 32 41 72 0 0 0 75 75 75 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+53 55 60 0 0 0 15 25 57 54 69 120 56 70 122 56 70 122
-+56 70 122 56 70 122 26 32 53 0 0 0 100 102 106 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 30 30 30 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 23 33 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 15 25 57 0 0 0 75 75 75 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 215 215 215 0 0 0 2 3 7 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+78 91 137 78 91 137 78 91 137 78 91 137 23 26 38 0 0 0
-+15 16 21 220 220 220 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+195 195 195 7 8 9 0 0 0 38 44 61 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 46 54 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 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 254 254 75 75 75 0 0 0
-+10 17 39 25 42 101 25 42 101 25 42 101 19 29 65 0 0 0
-+2 3 3 195 195 195 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 251 251 251 75 75 75 0 0 0
-+5 7 14 53 67 117 66 80 129 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 52 67 119 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 49 61 100 0 0 0 15 16 21 254 254 254 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 244 244 244
-+3 4 6 0 0 0 23 37 83 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 41 51 85 0 0 0 30 30 30 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+226 226 226 0 0 0 1 1 2 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 23 33 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 23 37 83 0 0 0 15 16 21 254 254 254
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 244 244 244 0 0 0 0 0 0 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 31 48 105
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+78 91 137 78 91 137 78 91 137 78 91 137 74 87 134 15 18 27
-+0 0 0 30 30 30 207 207 207 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 180 180 180
-+7 8 9 0 0 0 23 28 45 76 90 135 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 148 148 149 0 0 0 2 3 5
-+23 37 83 25 42 101 25 42 101 25 42 101 25 42 101 19 24 44
-+0 0 0 15 16 21 220 220 220 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+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 254 254 117 119 127 0 0 0 1 2 3
-+23 37 83 63 77 126 66 80 129 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 48 64 117 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 58 73 123 3 4 6 0 0 0 215 215 215 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 180 180 180
-+0 0 0 4 6 13 29 45 103 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 53 67 117 1 2 3 0 0 0 220 220 220
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+180 180 180 0 0 0 8 10 17 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 23 33 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 2 3 7 0 0 0 195 195 195
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 14 14 16 0 0 0 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 32 49 106
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 78 91 137 78 91 137 78 91 137 78 91 137 74 85 123
-+12 15 26 0 0 0 7 8 9 155 156 157 254 254 254 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 244 244 244 117 119 127 2 3 3
-+0 0 0 23 28 45 75 88 134 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 215 215 215 254 254 254
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 180 180 180 7 8 9 0 0 0 23 33 67
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 55 70 121
-+15 18 27 0 0 0 30 30 30 207 207 207 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 251 251 251 100 102 106 0 0 0 0 0 0 19 29 65
-+29 45 103 66 80 129 66 80 129 38 47 77 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 42 58 112 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 14 19 34 0 0 0 155 156 157 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 100 102 106
-+0 0 0 10 17 39 32 49 106 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 14 19 34 0 0 0 148 148 149
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+117 119 127 0 0 0 10 17 39 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 36 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 10 17 39 0 0 0 75 75 75
-+254 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 43 45 49 0 0 0 18 31 74
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 33 50 106
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+38 54 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+73 86 133 23 28 45 0 0 0 0 0 0 53 55 60 195 195 195
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 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 254 254 167 167 167 43 45 49 0 0 0 0 0 0
-+32 38 61 76 90 135 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 89 90 90
-+244 244 244 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 155 156 157 2 3 3 0 0 0 23 28 45 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 71 85 132
-+66 79 125 15 16 21 0 0 0 7 9 13 148 148 149 251 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 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+207 207 207 51 51 51 0 0 0 1 1 2 19 29 65 25 42 101
-+36 52 108 66 80 129 66 80 129 40 48 74 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 64 78 127 63 77 126 36 52 108 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 27 35 61 0 0 0 100 102 106 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 30 30 30
-+0 0 0 18 31 74 36 52 108 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 28 36 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+53 55 60 0 0 0 19 29 65 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 36 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 41 89 1 2 3 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 75 75 75 0 0 0 19 29 65
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 43 51 76 4 5 9 0 0 0 0 0 0
-+51 51 51 148 148 149 220 220 220 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 220 220 220
-+137 140 149 43 45 49 0 0 0 0 0 0 8 10 17 55 65 99
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 77 90 136 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+30 30 30 167 167 167 254 254 254 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 207 207 207
-+55 60 74 0 0 0 0 0 0 32 38 56 51 66 119 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 42 58 112 72 85 132
-+72 85 132 66 79 125 23 26 38 0 0 0 0 0 0 43 45 49
-+155 156 157 237 237 237 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 251 251 251 187 187 187 75 75 75
-+2 3 3 0 0 0 2 3 7 18 31 74 25 42 101 25 42 101
-+45 60 114 66 80 129 66 80 129 40 48 74 0 0 0 89 90 90
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 89 90 90 0 0 0
-+32 41 72 63 77 126 63 77 126 29 45 103 9 15 36 0 0 0
-+134 134 135 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53 55 60
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 41 51 85 0 0 0 43 45 49 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 220 220 220 0 0 0
-+1 1 2 25 42 101 40 56 111 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 45 57 100 0 0 0 14 14 16
-+251 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 251 251 251
-+7 8 9 0 0 0 23 37 83 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 36 67 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 19 29 65 0 0 0
-+0 0 0 100 102 106 237 237 237 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 100 102 106 0 0 0 13 22 52
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+36 52 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 74 85 123 32 38 56 2 3 5
-+0 0 0 0 0 0 0 0 0 30 30 30 89 90 90 123 126 137
-+167 167 167 187 187 187 195 195 195 207 207 207 220 220 220 207 207 207
-+187 187 187 180 180 180 134 134 135 89 90 90 43 45 49 0 0 0
-+0 0 0 0 0 0 5 7 13 38 45 69 72 85 132 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+77 90 136 77 90 136 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+0 0 0 0 0 0 30 30 30 100 102 106 155 156 157 187 187 187
-+207 207 207 195 195 195 167 167 167 117 119 127 43 45 49 0 0 0
-+0 0 0 4 5 9 43 51 76 73 86 133 35 51 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 58 73 123 72 85 132
-+71 85 132 71 85 132 70 84 131 40 49 78 4 5 9 0 0 0
-+0 0 0 3 4 6 51 51 51 100 102 106 148 148 149 180 180 180
-+195 195 195 207 207 207 207 207 207 207 207 207 187 187 187 180 180 180
-+148 148 149 117 119 127 75 75 75 7 8 9 0 0 0 0 0 0
-+0 0 0 9 15 36 27 41 89 25 42 101 25 42 101 25 42 101
-+54 69 120 66 80 129 66 80 129 40 48 74 0 0 0 15 16 21
-+51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51
-+51 51 51 51 51 51 51 51 51 51 51 51 15 16 21 0 0 0
-+32 41 72 63 77 126 60 75 125 25 42 101 9 15 36 0 0 0
-+30 30 30 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51
-+51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 14 14 16
-+0 0 0 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 53 67 117 0 0 0 1 2 3 51 51 51
-+51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51
-+51 51 51 51 51 51 51 51 51 51 51 51 30 30 30 0 0 0
-+9 13 26 25 42 101 44 60 114 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 5 7 14 0 0 0
-+43 45 49 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51
-+51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 43 45 49
-+0 0 0 2 3 7 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 29 39 72 0 0 0 14 14 16
-+51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51
-+51 51 51 51 51 51 51 51 51 51 51 51 30 30 30 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 32 49 106 26 36 67
-+1 1 1 0 0 0 7 8 9 75 75 75 137 140 149 167 167 167
-+180 180 180 207 207 207 207 207 207 187 187 187 167 167 167 155 156 157
-+117 119 127 75 75 75 30 30 30 0 0 0 0 0 0 10 17 39
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 37 53 109
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+35 51 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 71 84 130
-+44 52 77 19 23 37 1 2 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 2 3 3
-+23 26 38 48 55 81 74 87 134 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 77 90 136
-+77 90 136 77 90 136 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+15 16 21 4 5 9 0 0 0 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 3 5
-+32 38 56 66 79 125 73 86 133 65 79 128 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 29 45 103 71 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 66 79 125 40 48 74
-+12 15 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 5 9 13 20 42
-+23 37 83 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+64 78 127 66 80 129 66 80 129 40 48 74 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+32 41 72 63 77 126 54 69 120 25 42 101 9 15 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 41 51 85 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 8 11 18 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+13 22 52 25 42 101 48 64 117 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 23 28 45 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 15 31 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 46 104 29 39 72 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 34 50 107 46 61 115
-+41 51 85 9 13 26 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 6 13 15 25 57
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 38 54 109
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+33 50 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 74 87 134 55 65 99 43 51 76 32 38 56
-+23 26 38 15 18 27 10 12 18 7 9 13 4 5 9 10 12 18
-+15 18 27 16 21 36 29 34 52 40 48 74 55 65 99 73 86 133
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 73 86 133 55 65 99 32 38 61 23 26 38 15 18 27
-+8 10 17 15 16 21 19 23 37 29 34 52 49 60 97 71 84 130
-+73 86 133 73 86 133 73 86 133 47 62 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 45 60 114 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 64 76 117 46 54 81 32 38 61 23 28 45 15 18 27
-+9 12 21 8 11 17 7 9 13 8 11 17 9 12 21 15 18 27
-+23 28 45 32 38 61 40 49 78 41 54 95 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 32 49 106
-+66 80 129 66 80 129 66 80 129 59 72 115 49 60 97 49 60 97
-+49 60 97 49 60 97 49 60 97 49 60 97 49 60 97 49 60 97
-+49 60 97 49 60 97 49 60 97 49 60 97 49 60 97 49 60 97
-+60 71 109 63 77 126 47 62 115 25 42 101 23 37 83 18 31 74
-+18 31 74 18 31 74 18 31 74 18 31 74 18 31 74 18 31 74
-+18 31 74 41 54 95 41 54 95 41 54 95 41 54 95 41 54 95
-+41 54 95 53 67 117 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 49 61 100 41 54 95 41 54 95
-+41 54 95 28 40 79 18 31 74 18 31 74 18 31 74 18 31 74
-+18 31 74 18 31 74 18 31 74 18 31 74 18 31 74 18 31 74
-+27 41 89 25 42 101 51 66 119 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 49 62 109 41 51 85
-+41 51 85 41 51 85 41 51 85 41 51 85 41 51 85 23 37 83
-+18 31 74 18 31 74 18 31 74 18 31 74 18 31 74 18 31 74
-+18 31 74 23 37 83 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 42 56 104 41 51 85 41 51 85
-+41 51 85 41 51 85 41 51 85 41 51 85 41 51 85 41 51 85
-+41 51 85 41 51 85 41 51 85 28 40 79 18 31 74 18 31 74
-+23 37 83 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 36 52 108 46 61 115
-+45 60 114 45 60 114 41 54 95 27 35 61 16 21 36 9 13 26
-+7 9 15 5 7 13 4 6 13 8 10 17 9 13 26 11 15 31
-+13 20 42 15 25 57 18 31 74 27 41 89 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 111
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+50 65 118 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 44 53 81 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 82 95 139 110 117 140 110 117 140
-+110 117 140 82 95 139 69 83 131 28 45 103 60 75 125 64 78 127
-+64 78 127 64 78 127 42 58 112 64 78 127 72 85 132 107 114 137
-+110 117 140 110 117 140 110 117 140 82 95 139 75 88 134 110 117 140
-+110 117 140 110 117 140 82 95 139 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 30 47 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 42 58 112
-+76 89 135 107 114 137 107 114 137 107 114 137 82 95 139 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 39 55 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+37 53 109 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 82 95 139 82 95 139
-+82 95 139 70 84 131 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 32 49 106 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 55 70 121 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 51 66 119 63 77 126 82 95 139
-+82 95 139 82 95 139 68 82 130 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 39 55 110 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 40 56 111
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+29 45 103 71 85 132 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 46 54 80 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 137 140 149 43 45 49 43 45 49
-+53 55 60 115 121 140 49 65 117 36 52 108 98 103 119 43 45 49
-+43 45 49 53 55 60 101 108 130 72 85 132 76 89 135 123 126 137
-+43 45 49 43 45 49 89 90 90 110 117 140 110 117 140 75 75 75
-+43 45 49 43 45 49 137 140 149 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 61 75 125 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 54 69 120
-+117 122 139 51 51 51 43 45 49 53 55 60 115 121 140 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 63 77 126 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+43 59 113 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 82 95 139 100 102 106 43 45 49
-+43 45 49 43 45 49 43 45 49 43 45 49 43 45 49 43 45 49
-+43 45 49 98 103 119 46 61 115 25 42 101 25 42 101 25 42 101
-+25 42 101 30 47 105 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 111 51 66 119 82 95 139 89 90 90
-+43 45 49 43 45 49 128 131 141 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 36 52 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 42 58 112 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 31 48 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+30 46 104 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 52 67 119 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 76 90 135 46 54 80 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 115 121 140 14 14 16 0 0 0
-+1 1 1 117 122 139 29 45 103 66 79 125 43 45 49 0 0 0
-+0 0 0 0 0 0 106 112 131 72 85 132 82 95 139 75 75 75
-+0 0 0 0 0 0 89 90 90 82 95 139 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 49 65 117 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 64 78 127
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 59 74 124 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+50 65 118 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 82 95 139 55 60 74 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 75 75 75 46 61 115 25 42 101 25 42 101 25 42 101
-+25 42 101 36 52 108 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 49 65 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 42 58 112 50 65 118 82 95 139 43 45 49
-+0 0 0 0 0 0 104 109 128 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 33 50 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 44 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 29 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 30 46 104 72 85 132 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 76 90 135 76 90 135 46 54 80 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 110 117 140 43 45 49 0 0 0
-+0 0 0 98 104 122 26 43 102 93 100 124 7 8 9 0 0 0
-+0 0 0 0 0 0 89 90 90 82 95 139 110 117 140 30 30 30
-+0 0 0 0 0 0 106 112 131 71 85 132 110 117 140 128 131 141
-+112 118 137 112 118 137 128 131 141 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 71 85 132 68 82 130
-+68 82 130 68 82 130 35 51 108 25 42 101 25 42 101 32 49 106
-+25 42 101 25 42 101 25 42 101 25 42 101 35 51 108 66 80 129
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 66 80 129 69 83 131
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 50 65 118 25 42 101 25 42 101 33 50 106 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+58 73 123 61 75 125 63 77 126 68 82 130 63 77 126 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 82 95 139 55 60 74 0 0 0
-+0 0 0 15 18 27 100 102 106 79 84 103 79 84 103 79 84 103
-+79 84 103 123 126 137 46 61 115 25 42 101 25 42 101 25 42 101
-+25 42 101 42 58 112 59 74 124 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 58 73 123 58 73 123 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 46 61 115 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 51 66 119 50 65 118 82 95 139 43 45 49
-+0 0 0 0 0 0 104 109 128 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 37 53 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 28 45 103
-+25 42 101 25 42 101 25 42 101 26 43 102 49 65 117 47 62 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 54 69 120 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+78 91 137 78 91 137 78 91 137 78 91 137 78 91 137 78 91 137
-+78 91 137 78 91 137 78 91 137 78 91 137 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 76 90 135
-+76 90 135 76 90 135 76 90 135 46 54 80 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 82 95 139 75 75 75 0 0 0
-+0 0 0 72 78 100 42 58 112 98 103 119 0 0 0 0 0 0
-+14 14 16 0 0 0 30 30 30 110 117 140 115 121 140 14 14 16
-+0 0 0 3 4 6 115 121 140 70 84 131 107 114 137 123 126 137
-+104 109 128 104 109 128 137 140 149 69 83 131 110 117 140 106 112 131
-+104 109 128 128 131 141 137 140 149 117 119 127 98 103 119 137 140 149
-+82 95 139 64 78 127 66 79 125 99 106 127 90 96 116 79 85 105
-+93 98 117 98 104 122 81 92 128 32 49 106 47 62 115 66 80 129
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 66 80 128
-+66 80 128 69 83 131 110 117 140 106 112 131 98 103 119 100 102 106
-+98 103 119 112 118 137 107 114 137 65 79 128 64 78 127 64 78 127
-+65 79 128 82 95 139 98 104 122 90 96 116 79 84 103 90 96 116
-+98 103 119 93 100 124 35 51 108 25 42 101 25 42 101 40 56 111
-+110 117 140 106 112 131 98 103 119 100 102 106 98 103 119 106 112 131
-+107 114 137 64 78 127 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 76 90 135 33 50 106 33 50 106 33 50 106
-+33 50 106 33 50 106 38 54 109 115 121 140 93 98 117 93 98 117
-+115 121 140 110 117 140 100 102 106 106 112 131 110 117 140 56 70 122
-+69 83 131 107 114 137 104 109 128 100 102 106 100 102 106 104 109 128
-+109 115 137 76 90 135 54 69 120 54 69 120 40 56 111 25 42 101
-+49 65 117 93 100 124 93 98 117 79 85 105 90 96 116 93 98 117
-+93 100 124 44 60 114 25 42 101 25 42 101 25 42 101 36 52 108
-+93 100 124 93 98 117 100 102 106 106 112 131 137 140 149 43 45 49
-+0 0 0 0 0 0 104 109 128 49 65 117 49 65 117 49 65 117
-+82 95 139 106 112 131 98 103 119 79 85 105 93 98 117 98 104 122
-+71 84 130 27 44 102 25 42 101 25 42 101 101 108 130 93 98 117
-+93 98 117 128 131 141 75 88 134 101 108 130 90 96 116 90 96 116
-+101 108 130 46 61 115 58 73 123 104 109 128 100 102 106 98 103 119
-+107 114 137 61 75 125 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 43 59 113 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 31 48 105 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 28 45 103 69 83 131 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 46 54 80 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 104 109 128 0 0 0
-+0 0 0 51 51 51 82 95 139 75 75 75 0 0 0 7 8 9
-+89 90 90 0 0 0 3 4 6 117 122 139 117 122 139 0 0 0
-+0 0 0 30 30 30 110 117 140 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 53 55 60 137 140 149 1 1 1 0 0 0 104 109 128
-+73 86 133 107 114 137 55 60 74 2 3 3 0 0 0 0 0 0
-+0 0 0 0 0 0 30 30 30 104 109 128 69 83 131 66 80 129
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 66 80 128
-+72 85 132 117 122 139 43 45 49 0 0 0 0 0 0 0 0 0
-+0 0 0 1 2 3 53 55 60 115 121 140 65 79 128 63 77 126
-+115 121 140 43 45 49 0 0 0 3 4 6 15 16 21 2 3 3
-+0 0 0 15 18 27 104 109 128 29 45 103 29 45 103 107 114 137
-+30 30 30 0 0 0 7 8 9 15 16 21 1 1 1 0 0 0
-+43 45 49 115 121 140 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 115 121 140 66 80 128 66 80 128 66 80 128
-+71 84 130 39 55 110 46 61 115 55 60 74 0 0 0 0 0 0
-+128 131 141 15 16 21 0 0 0 43 45 49 107 114 137 77 90 136
-+98 103 119 15 16 21 0 0 0 0 0 0 0 0 0 0 0 0
-+7 8 9 89 90 90 82 95 139 54 69 120 35 51 108 66 79 125
-+89 90 90 7 9 13 0 0 0 0 0 0 0 0 0 0 0 0
-+14 14 16 90 96 116 54 69 120 25 42 101 31 48 105 104 109 128
-+15 16 21 0 0 0 0 0 0 1 1 1 75 75 75 51 51 51
-+0 0 0 0 0 0 104 109 128 49 65 117 50 65 118 107 114 137
-+55 60 74 3 4 6 0 0 0 0 0 0 0 0 0 1 1 1
-+51 51 51 101 108 130 28 45 103 25 42 101 98 104 122 0 0 0
-+0 0 0 89 90 90 100 102 106 3 4 6 0 0 0 0 0 0
-+7 8 9 123 126 137 89 90 90 3 4 6 0 0 0 0 0 0
-+14 14 16 106 112 131 47 62 115 45 60 114 44 60 114 44 60 114
-+44 60 114 40 56 111 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 33 50 106 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 43 59 113 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 46 54 80 0 0 0 75 75 75
-+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
-+255 255 255 255 255 255 255 255 255 255 255 255 117 119 127 0 0 0
-+32 38 56 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 117 122 139 1 2 3
-+0 0 0 30 30 30 137 140 149 30 30 30 0 0 0 43 45 49
-+137 140 149 0 0 0 0 0 0 104 109 128 106 112 131 0 0 0
-+0 0 0 55 60 74 82 95 139 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 1 2 3 3 4 6 30 30 30 51 51 51 110 117 140
-+107 114 137 55 60 74 0 0 0 0 0 0 75 75 75 99 106 127
-+98 103 119 14 14 16 0 0 0 15 16 21 115 121 140 66 80 129
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 66 80 128
-+110 117 140 15 18 27 0 0 0 7 8 9 100 102 106 115 121 140
-+89 90 90 1 1 1 0 0 0 53 55 60 107 114 137 76 89 135
-+89 90 90 0 0 0 1 2 3 104 109 128 81 92 128 104 109 128
-+51 51 51 55 60 74 117 119 127 78 91 137 61 75 125 51 51 51
-+0 0 0 14 14 16 117 122 139 107 114 137 98 103 119 51 51 51
-+75 75 75 137 140 149 82 95 139 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 7 8 9 30 30 30 30 30 30 30 30 30 30 30 30
-+75 75 75 59 74 124 46 61 115 55 60 74 0 0 0 0 0 0
-+3 4 6 14 14 16 30 30 30 104 109 128 63 77 126 106 112 131
-+3 4 6 0 0 0 30 30 30 106 112 131 112 118 137 53 55 60
-+0 0 0 0 0 0 100 102 106 66 80 129 42 58 112 90 96 116
-+1 1 1 0 0 0 43 45 49 99 106 127 99 106 127 30 30 30
-+0 0 0 3 4 6 98 104 122 29 45 103 79 90 127 30 30 30
-+0 0 0 0 0 0 15 16 21 51 51 51 14 14 16 3 4 6
-+0 0 0 0 0 0 104 109 128 49 65 117 82 95 139 53 55 60
-+0 0 0 0 0 0 43 45 49 79 84 103 43 45 49 0 0 0
-+0 0 0 43 45 49 79 90 127 25 42 101 98 104 122 0 0 0
-+0 0 0 30 30 30 14 14 16 30 30 30 3 4 6 0 0 0
-+0 0 0 14 14 16 7 8 9 30 30 30 3 4 6 0 0 0
-+0 0 0 53 55 60 72 85 132 45 60 114 44 60 114 44 60 114
-+44 60 114 38 54 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 35 51 108 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 37 53 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 61 75 125 73 86 133
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 46 54 80 0 0 0 55 60 74
-+220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220 220
-+220 220 220 220 220 220 220 220 220 220 220 220 100 102 106 0 0 0
-+32 38 56 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 110 117 140 30 30 30
-+0 0 0 2 3 3 128 131 141 2 3 3 0 0 0 79 84 103
-+128 131 141 14 14 16 0 0 0 89 90 90 117 119 127 0 0 0
-+0 0 0 100 102 106 74 87 134 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 0 0 0 75 75 75 110 117 140 115 121 140 78 91 137
-+112 118 137 1 2 3 0 0 0 30 30 30 82 95 139 33 50 106
-+54 69 120 89 90 90 0 0 0 0 0 0 100 102 106 73 86 133
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 71 85 132
-+100 102 106 0 0 0 0 0 0 75 75 75 82 95 139 71 85 132
-+110 117 140 43 45 49 0 0 0 2 3 3 112 118 137 82 95 139
-+75 75 75 0 0 0 1 1 1 79 84 103 99 106 127 115 121 140
-+115 121 140 74 87 134 42 58 112 30 47 105 66 80 128 43 45 49
-+0 0 0 7 8 9 98 103 119 112 118 137 137 140 149 137 140 149
-+107 114 137 73 86 133 64 78 127 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+43 45 49 59 74 124 46 61 115 55 60 74 0 0 0 0 0 0
-+14 14 16 115 121 140 101 108 130 107 114 137 82 95 139 51 51 51
-+0 0 0 0 0 0 106 112 131 66 80 129 63 77 126 117 122 139
-+3 4 6 0 0 0 30 30 30 101 108 130 81 92 128 30 30 30
-+0 0 0 3 4 6 107 114 137 34 50 107 36 52 108 104 109 128
-+0 0 0 0 0 0 53 55 60 59 74 124 93 100 124 0 0 0
-+0 0 0 7 8 9 115 121 140 82 95 139 112 118 137 3 4 6
-+0 0 0 0 0 0 104 109 128 49 65 117 104 109 128 1 1 1
-+0 0 0 30 30 30 107 114 137 36 52 108 84 94 130 30 30 30
-+0 0 0 0 0 0 98 103 119 25 42 101 98 104 122 0 0 0
-+0 0 0 3 4 6 104 109 128 79 90 127 79 84 103 0 0 0
-+0 0 0 3 4 6 98 104 122 81 94 136 89 90 90 0 0 0
-+0 0 0 30 30 30 82 95 139 45 60 114 44 60 114 44 60 114
-+44 60 114 36 52 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 37 53 109 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 35 51 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 33 50 106 72 85 132
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 44 52 77 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+32 38 56 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 82 95 139 53 55 60
-+0 0 0 0 0 0 14 14 16 0 0 0 0 0 0 112 118 137
-+107 114 137 53 55 60 0 0 0 3 4 6 7 8 9 0 0 0
-+0 0 0 112 118 137 70 84 131 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 0 0 0 112 118 137 68 82 130 68 82 130 68 82 130
-+98 103 119 0 0 0 0 0 0 30 30 30 90 96 116 79 84 103
-+79 84 103 53 55 60 0 0 0 0 0 0 75 75 75 82 95 139
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 82 95 139
-+55 60 74 0 0 0 0 0 0 75 75 75 89 90 90 89 90 90
-+100 102 106 30 30 30 0 0 0 0 0 0 98 104 122 64 78 127
-+106 112 131 14 14 16 0 0 0 0 0 0 0 0 0 14 14 16
-+30 30 30 75 75 75 99 106 127 30 46 104 40 56 111 104 109 128
-+3 4 6 0 0 0 0 0 0 1 1 1 14 14 16 43 45 49
-+100 102 106 107 114 137 61 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 117 122 139 93 100 124 93 100 124 93 100 124
-+112 118 137 52 67 119 46 61 115 55 60 74 0 0 0 0 0 0
-+55 60 74 82 95 139 56 70 122 56 70 122 107 114 137 30 30 30
-+0 0 0 0 0 0 100 102 106 89 90 90 89 90 90 89 90 90
-+3 4 6 0 0 0 2 3 3 107 114 137 99 106 127 1 2 3
-+0 0 0 14 14 16 100 102 106 79 84 103 79 84 103 75 75 75
-+0 0 0 0 0 0 30 30 30 79 90 127 93 98 117 0 0 0
-+0 0 0 43 45 49 82 95 139 50 65 118 82 95 139 30 30 30
-+0 0 0 0 0 0 104 109 128 52 67 119 90 96 116 0 0 0
-+0 0 0 75 75 75 59 74 124 25 42 101 42 58 112 75 75 75
-+0 0 0 0 0 0 79 84 103 36 52 108 98 104 122 0 0 0
-+0 0 0 30 30 30 79 90 127 25 42 101 93 100 124 0 0 0
-+0 0 0 30 30 30 79 90 127 39 55 110 106 112 131 0 0 0
-+0 0 0 30 30 30 82 95 139 45 60 114 44 60 114 44 60 114
-+44 60 114 33 50 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 33 50 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 48 64 117
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+77 90 136 77 90 136 77 90 136 77 90 136 77 90 136 77 90 136
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 89 135 76 89 135 48 55 81 4 5 9 4 5 9
-+4 5 9 4 5 9 4 5 9 4 5 9 4 5 9 4 5 9
-+4 5 9 4 5 9 4 5 9 4 5 9 4 5 9 4 5 9
-+32 38 61 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 66 80 129 36 52 108 79 84 103
-+0 0 0 0 0 0 0 0 0 0 0 0 15 16 21 115 121 140
-+76 90 135 98 103 119 0 0 0 0 0 0 0 0 0 0 0 0
-+14 14 16 115 121 140 70 84 131 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 3 4 6 115 121 140 68 82 130 68 82 130 66 80 129
-+93 98 117 0 0 0 0 0 0 15 18 27 53 55 60 53 55 60
-+53 55 60 53 55 60 53 55 60 53 55 60 100 102 106 82 95 139
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 82 95 139
-+75 75 75 0 0 0 0 0 0 43 45 49 53 55 60 53 55 60
-+53 55 60 53 55 60 53 55 60 53 55 60 128 131 141 66 80 129
-+43 59 113 101 108 130 79 84 103 53 55 60 15 18 27 1 1 1
-+0 0 0 0 0 0 43 45 49 84 94 130 39 55 111 82 95 139
-+112 118 137 89 90 90 51 51 51 15 16 21 0 0 0 0 0 0
-+0 0 0 55 60 74 82 95 139 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 46 61 115 55 60 74 0 0 0 0 0 0
-+89 90 90 66 80 129 56 70 122 56 70 122 107 114 137 30 30 30
-+0 0 0 0 0 0 53 55 60 53 55 60 53 55 60 53 55 60
-+53 55 60 53 55 60 53 55 60 117 122 139 99 106 127 2 3 3
-+0 0 0 7 8 9 53 55 60 53 55 60 53 55 60 53 55 60
-+53 55 60 53 55 60 75 75 75 99 106 127 98 103 119 0 0 0
-+0 0 0 43 45 49 82 95 139 50 65 118 82 95 139 30 30 30
-+0 0 0 0 0 0 104 109 128 54 69 120 90 96 116 0 0 0
-+0 0 0 75 75 75 52 67 119 25 42 101 40 56 111 75 75 75
-+0 0 0 0 0 0 79 84 103 37 53 109 98 104 122 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 93 98 117 0 0 0
-+0 0 0 30 30 30 71 84 130 42 58 112 106 112 131 0 0 0
-+0 0 0 30 30 30 82 95 139 45 60 114 44 60 114 44 60 114
-+44 60 114 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 40 56 111 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 31 48 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+60 75 125 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 72 85 132 36 52 108 25 42 101 98 104 122
-+0 0 0 0 0 0 0 0 0 0 0 0 53 55 60 107 114 137
-+71 85 132 117 122 139 2 3 3 0 0 0 0 0 0 0 0 0
-+43 45 49 110 117 140 70 84 131 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 14 14 16 110 117 140 68 82 130 68 82 130 52 67 119
-+99 106 127 1 1 1 0 0 0 43 45 49 110 117 140 56 70 122
-+58 73 123 107 114 137 110 117 140 110 117 140 110 117 140 66 80 128
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 73 86 133
-+100 102 106 0 0 0 0 0 0 100 102 106 110 117 140 82 95 139
-+110 117 140 137 140 149 115 121 140 110 117 140 82 95 139 64 78 127
-+60 75 125 71 84 130 84 94 130 107 114 137 81 92 128 101 108 130
-+43 45 49 0 0 0 0 0 0 98 104 122 63 77 126 82 95 139
-+107 114 137 115 121 140 115 121 140 110 117 140 112 118 137 15 16 21
-+0 0 0 14 14 16 107 114 137 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 46 61 115 55 60 74 0 0 0 0 0 0
-+100 102 106 59 74 124 56 70 122 56 70 122 82 95 139 51 51 51
-+0 0 0 0 0 0 128 131 141 82 95 139 82 95 139 110 117 140
-+115 121 140 110 117 140 82 95 139 55 70 121 84 94 130 15 18 27
-+0 0 0 7 8 9 128 131 141 56 70 122 56 70 122 82 95 139
-+82 95 139 81 94 136 68 82 130 35 51 108 99 106 127 1 2 3
-+0 0 0 14 14 16 110 117 140 63 77 126 110 117 140 7 9 13
-+0 0 0 0 0 0 104 109 128 49 65 117 104 109 128 0 0 0
-+0 0 0 43 45 49 84 94 130 25 42 101 73 86 133 43 45 49
-+0 0 0 0 0 0 93 98 117 26 43 102 98 104 122 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 93 98 117 0 0 0
-+0 0 0 30 30 30 71 84 130 45 60 114 106 112 131 0 0 0
-+0 0 0 30 30 30 82 95 139 45 60 114 44 60 114 44 60 114
-+44 60 114 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 45 103 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 30 46 104
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 46 104 68 82 130 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 48 64 117 25 42 101 25 42 101 93 100 124
-+14 14 16 0 0 0 0 0 0 0 0 0 98 103 119 75 88 134
-+71 85 132 110 117 140 30 30 30 0 0 0 0 0 0 0 0 0
-+89 90 90 82 95 139 70 84 131 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 14 14 16 110 117 140 68 82 130 68 82 130 33 50 106
-+74 85 123 43 45 49 0 0 0 1 2 3 90 96 116 93 100 124
-+104 109 128 55 60 74 53 55 60 75 75 75 155 156 157 75 88 134
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 65 79 128
-+115 121 140 14 14 16 0 0 0 14 14 16 112 118 137 110 117 140
-+104 109 128 53 55 60 55 60 74 100 102 106 155 156 157 107 114 137
-+75 75 75 30 30 30 30 30 30 98 103 119 79 90 127 84 94 130
-+53 55 60 0 0 0 7 9 13 93 100 124 128 131 141 53 55 60
-+30 30 30 30 30 30 112 118 137 107 114 137 115 121 140 30 30 30
-+0 0 0 30 30 30 107 114 137 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 46 61 115 55 60 74 0 0 0 0 0 0
-+100 102 106 56 70 122 56 70 122 56 70 122 61 75 125 104 109 128
-+1 2 3 0 0 0 43 45 49 115 121 140 107 114 137 100 102 106
-+51 51 51 55 60 74 128 131 141 82 95 139 45 60 114 79 84 103
-+0 0 0 0 0 0 55 60 74 101 108 130 99 106 127 89 90 90
-+51 51 51 61 66 84 137 140 149 60 75 125 66 80 128 43 45 49
-+0 0 0 0 0 0 43 45 49 89 90 90 30 30 30 30 30 30
-+0 0 0 0 0 0 104 109 128 49 65 117 101 108 130 43 45 49
-+0 0 0 1 1 1 55 60 74 93 98 117 75 75 75 1 1 1
-+0 0 0 30 30 30 81 92 128 25 42 101 98 104 122 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 93 98 117 0 0 0
-+0 0 0 30 30 30 72 85 132 46 61 115 106 112 131 0 0 0
-+0 0 0 30 30 30 82 95 139 45 60 114 44 60 114 44 60 114
-+44 60 114 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 46 104 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+56 70 122 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 38 54 109 72 85 132 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 59 74 124 25 42 101 25 42 101 25 42 101 68 82 130
-+43 45 49 0 0 0 0 0 0 3 4 6 117 122 139 71 85 132
-+71 85 132 82 95 139 75 75 75 0 0 0 0 0 0 0 0 0
-+106 112 131 71 85 132 70 84 131 70 84 131 110 117 140 30 30 30
-+0 0 0 0 0 0 117 122 139 69 83 131 115 121 140 7 8 9
-+0 0 0 14 14 16 110 117 140 68 82 130 56 70 122 25 42 101
-+28 45 103 101 108 130 30 30 30 0 0 0 0 0 0 7 9 13
-+1 2 3 0 0 0 3 4 6 100 102 106 82 95 139 66 80 128
-+109 115 137 7 8 9 0 0 0 14 14 16 110 117 140 65 79 128
-+78 91 137 106 112 131 14 14 16 0 0 0 1 1 1 7 9 13
-+0 0 0 0 0 0 15 16 21 112 118 137 74 87 134 42 58 112
-+98 104 122 14 14 16 0 0 0 2 3 3 30 30 30 15 18 27
-+0 0 0 7 8 9 90 96 116 55 70 121 81 94 136 100 102 106
-+3 4 6 0 0 0 7 8 9 30 30 30 14 14 16 0 0 0
-+14 14 16 106 112 131 68 82 130 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 82 95 139 55 60 74 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 46 61 115 55 60 74 0 0 0 0 0 0
-+100 102 106 56 70 122 56 70 122 56 70 122 56 70 122 82 95 139
-+89 90 90 3 4 6 0 0 0 3 4 6 7 8 9 0 0 0
-+0 0 0 43 45 49 110 117 140 29 45 103 25 42 101 84 94 130
-+55 60 74 1 1 1 0 0 0 7 8 9 3 4 6 0 0 0
-+1 1 1 55 60 74 84 94 130 25 42 101 29 45 103 104 109 128
-+14 14 16 0 0 0 0 0 0 0 0 0 75 75 75 100 102 106
-+0 0 0 0 0 0 104 109 128 49 65 117 52 67 119 110 117 140
-+43 45 49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+30 30 30 101 108 130 30 46 104 25 42 101 98 104 122 0 0 0
-+0 0 0 30 30 30 71 84 130 25 42 101 93 98 117 0 0 0
-+0 0 0 30 30 30 75 88 134 46 61 115 106 112 131 0 0 0
-+0 0 0 30 30 30 82 95 139 44 60 114 44 60 114 44 60 114
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 32 49 106 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+72 85 132 44 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 49 65 117 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+66 80 129 29 45 103 25 42 101 25 42 101 25 42 101 45 60 114
-+123 126 137 90 96 116 98 103 119 117 119 127 110 117 140 71 85 132
-+71 85 132 72 85 132 137 140 149 98 103 119 98 103 119 98 103 119
-+137 140 149 70 84 131 70 84 131 70 84 131 115 121 140 117 119 127
-+98 103 119 98 103 119 137 140 149 69 83 131 137 140 149 98 103 119
-+98 103 119 104 109 128 128 131 141 68 82 130 37 53 109 25 42 101
-+25 42 101 30 47 105 84 94 130 93 98 117 72 78 100 61 66 84
-+75 75 75 100 102 106 115 121 140 82 95 139 66 80 128 66 80 128
-+128 131 141 98 103 119 98 103 119 104 109 128 128 131 141 65 79 128
-+65 79 128 78 91 137 115 121 140 98 103 119 89 90 90 75 75 75
-+89 90 90 98 103 119 115 121 140 72 85 132 56 70 122 25 42 101
-+42 58 112 99 106 127 90 96 116 72 78 100 61 66 84 75 75 75
-+90 96 116 99 106 127 49 65 117 44 60 114 61 75 125 82 95 139
-+115 121 140 100 102 106 89 90 90 75 75 75 75 75 75 98 103 119
-+110 117 140 73 86 133 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 82 95 139 128 131 141 90 96 116
-+90 96 116 117 119 127 73 86 133 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 46 61 115 128 131 141 90 96 116 93 98 117
-+148 148 149 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+81 94 136 109 115 137 100 102 106 75 75 75 75 75 75 89 90 90
-+106 112 131 101 108 130 50 65 118 25 42 101 25 42 101 26 43 102
-+66 79 125 98 104 122 79 84 103 75 75 75 75 75 75 79 84 103
-+99 106 127 66 79 125 25 42 101 25 42 101 25 42 101 43 59 113
-+106 112 131 89 90 90 75 75 75 98 103 119 110 117 140 137 140 149
-+100 102 106 100 102 106 137 140 149 49 65 117 49 65 117 52 67 119
-+101 108 130 98 104 122 72 78 100 61 66 84 75 75 75 98 103 119
-+84 94 130 30 46 104 25 42 101 25 42 101 128 131 141 90 96 116
-+90 96 116 117 119 127 73 86 133 25 42 101 115 121 140 90 96 116
-+90 96 116 117 119 127 81 94 136 46 61 115 137 140 149 93 98 117
-+93 98 117 117 119 127 101 108 130 44 60 114 44 60 114 44 60 114
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 34 50 107 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 38 54 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+72 85 132 70 84 131 34 50 107 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 54 69 120 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 90 135 76 90 135 76 90 135 76 90 135 76 90 135
-+76 90 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 73 86 133 69 83 131
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 58 73 123 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 60 75 125 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 39 55 110 48 64 117
-+50 65 118 69 83 131 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 68 82 130 78 91 137 82 95 139
-+75 88 134 66 80 129 64 78 127 63 77 126 43 59 113 25 42 101
-+25 42 101 25 42 101 29 45 103 39 55 110 48 64 117 44 60 114
-+31 48 105 25 42 101 25 42 101 56 70 122 61 75 125 61 75 125
-+61 75 125 65 79 128 74 87 134 81 94 136 75 88 134 64 78 127
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 50 65 118
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 63 77 126 71 85 132 71 85 132 63 77 126
-+55 70 121 54 69 120 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 37 53 109 46 61 115 44 60 114 34 50 107
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+42 58 112 61 75 125 68 82 130 55 70 121 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 36 52 108 39 55 111 48 64 117 39 55 111 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 110 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+35 51 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 36 52 108 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 36 52 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 72 85 132 65 79 128 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 58 73 123 73 86 133
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 90 135 76 90 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 71 85 132 35 51 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+46 61 115 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 38 54 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+54 69 120 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 31 48 105 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 55 70 121 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 35 51 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+48 64 117 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 42 58 112 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 110 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 34 50 107 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 72 85 132 72 85 132 56 70 122 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 61 75 125
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 72 85 132 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+71 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 59 74 124 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 55 70 121 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 44 60 114 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 45 60 114 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 35 51 108 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 29 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 29 45 103
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 27 44 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 40 56 111 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 31 48 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 72 85 132 72 85 132 47 62 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+64 78 127 73 86 133 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 72 85 132 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 66 80 129
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 37 53 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 49 65 117
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 40 56 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 56 70 122 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 36 52 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 43 59 113 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 50 65 118 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+46 61 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 29 45 103 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 43 59 113
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 30 46 104 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 42 58 112
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 61 75 125 73 86 133 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 71 85 132 39 55 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 45 103 64 78 127 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 56 70 122 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 66 80 128
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 61 75 125 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 32 49 106 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 52 67 119 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 44 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 40 56 111
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+40 56 111 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 32 49 106 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 40 56 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 31 48 105 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 71 85 132 71 85 132 72 85 132 71 85 132
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 58 73 123 73 86 133 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+69 83 131 36 52 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 27 44 102 63 77 126 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+66 80 129 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 49 65 117 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 48 64 117 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 45 60 114 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 49 65 117 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 46 104 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 37 53 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 47 62 115
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+35 51 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 36 52 108 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 37 53 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 33 50 106 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 110 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+70 84 131 35 51 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 54 69 120 73 86 133 73 86 133
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+76 89 135 76 89 135 76 89 135 76 89 135 76 89 135 76 89 135
-+76 89 135 76 89 135 76 89 135 76 89 135 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 73 86 133 66 80 129
-+33 50 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 58 73 123 72 85 132 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+50 65 118 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 66 80 128 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 63 77 126 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 58 73 123 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 39 55 110 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 110 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+30 46 104 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 40 56 111 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 34 50 107
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 37 53 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+72 85 132 68 82 130 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 48 64 117 72 85 132
-+73 86 133 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+73 86 133 73 86 133 73 86 133 73 86 133 63 77 126 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 54 69 120 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 65 79 128
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 50 65 118 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 56 70 122 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+36 52 108 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 48 64 117 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+50 65 118 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 32 49 106 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 44 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 110 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+72 85 132 72 85 132 68 82 130 36 52 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 37 53 109
-+66 80 129 73 86 133 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 54 69 120 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+56 70 122 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 42 58 112
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 66 80 128 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+50 65 118 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 49 65 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 55 70 121 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 42 58 112
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+29 45 103 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 27 44 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 31 48 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 72 85 132 72 85 132 70 84 131 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+29 45 103 59 74 124 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+73 86 133 70 84 131 40 56 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 60 75 125
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 56 70 122 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 56 70 122 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+59 74 124 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 29 45 103
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 35 51 108 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+33 50 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 45 60 114 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 37 53 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+33 50 106 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 42 58 112 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 46 104 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 29 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 72 85 132 72 85 132 71 85 132 43 59 113
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 48 64 117 71 85 132 73 86 133 73 86 133
-+73 86 133 73 86 133 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+63 77 126 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 46 104 63 77 126 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 66 80 129 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 38 54 109 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 43 59 113
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 45 60 114 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 31 48 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+38 54 109 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 38 54 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 32 49 106 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 70 84 131 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 72 85 132 72 85 132
-+48 64 117 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 31 48 105 59 74 124 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+75 88 134 75 88 134 75 88 134 75 88 134 75 88 134 75 88 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 69 83 131 44 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 66 80 128 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 43 59 113 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 61 75 125 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 61 75 125
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 56 70 122
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+48 64 117 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 54 69 120 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 46 61 115
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 33 50 106 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+43 59 113 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 33 50 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 35 51 108 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 70 84 131 70 84 131 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+72 85 132 58 73 123 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 40 56 111
-+66 80 129 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 54 69 120 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 40 56 111 69 83 131 72 85 132 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 56 70 122 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+47 62 115 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 47 62 115
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 37 53 109 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 35 51 108 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 42 58 112 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 44 60 114 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 39 55 110 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 35 51 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 70 84 131 70 84 131 70 84 131 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+72 85 132 72 85 132 66 80 128 35 51 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+27 44 102 50 65 118 70 84 131 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 61 75 125 36 52 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+54 69 120 72 85 132 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 64 78 127 29 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 32 49 106
-+66 80 128 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 61 75 125 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 54 69 120 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 56 70 122
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 46 61 115 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 30 46 104
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 48 64 117 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 38 54 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 31 48 105
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 43 59 113 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 40 56 111 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 32 49 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 72 85 132 72 85 132 71 85 132 46 61 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 48 64 117 69 83 131 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 59 74 124
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 32 49 106 63 77 126
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+66 80 129 37 53 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 58 73 123
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 46 61 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 34 50 107 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 44 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+27 44 102 55 70 121 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 48 64 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 46 104 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 37 53 109
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 39 55 110 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 46 104 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 30 46 104 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 58 73 123
-+30 47 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 48 64 117
-+68 82 130 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 58 73 123 35 51 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 44 60 114 69 83 131 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+46 61 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 43 59 113 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 61 75 125 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 50 65 118 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 31 48 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+35 51 108 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 39 55 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 37 53 109 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 47 62 115 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 42 58 112
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+33 50 106 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 72 85 132 72 85 132
-+70 84 131 48 64 117 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 39 55 111 58 73 123 72 85 132 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 74 87 134 74 87 134 74 87 134 74 87 134
-+74 87 134 74 87 134 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+66 80 128 48 64 117 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 63 77 126 72 85 132 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 55 70 121
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 32 49 106 66 80 128 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 45 60 114 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 31 48 105 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 51 66 119 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+46 61 115 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 54 69 120 30 46 104 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 44 60 114 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 30 47 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+36 52 108 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 38 54 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+72 85 132 72 85 132 65 79 128 38 54 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 29 45 103 44 60 114 63 77 126
-+72 85 132 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 68 82 130 54 69 120 35 51 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+52 67 119 72 85 132 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 63 77 126 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 59 74 124 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 60 75 125 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 48 64 117 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 38 54 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+55 70 121 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 48 64 117 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 44 60 114 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 34 50 107 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 72 85 132 72 85 132 72 85 132 56 70 122 31 48 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 39 55 111 52 67 119 65 79 128 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 69 83 131
-+58 73 123 46 61 115 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 44 60 114 68 82 130
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 65 79 128 31 48 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 48 64 117 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 31 48 105 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 56 70 122 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 111
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 39 55 110 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 33 50 106 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 36 52 108 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 40 56 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 69 83 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 71 85 132
-+54 69 120 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 39 55 111
-+47 62 115 54 69 120 63 77 126 69 83 131 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 73 86 133
-+73 86 133 73 86 133 73 86 133 73 86 133 73 86 133 72 85 132
-+65 79 128 58 73 123 50 65 118 43 59 113 34 50 107 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 42 58 112 66 80 128 72 85 132 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 66 80 129 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 38 54 109 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 56 70 122 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 49 65 117 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 43 59 113 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 51 66 119
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 29 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 42 58 112 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 44 60 114 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 42 58 112 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 36 52 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 31 48 105
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 69 83 131 69 83 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+72 85 132 71 85 132 55 70 121 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 33 50 106
-+37 53 109 40 56 111 43 59 113 44 60 114 44 60 114 44 60 114
-+44 60 114 42 58 112 39 55 110 35 51 108 31 48 105 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+45 60 114 66 80 128 72 85 132 72 85 132 72 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 66 80 129 39 55 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+31 48 105 64 78 127 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+63 77 126 36 52 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+31 48 105 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 29 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 33 50 106 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 48 64 117 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 72 85 132 72 85 132 72 85 132 60 75 125 42 58 112
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 33 50 106 51 66 119 69 83 131
-+72 85 132 72 85 132 72 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+59 74 124 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+51 66 119 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+50 65 118 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 46 61 115 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 45 60 114 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+34 50 107 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 31 48 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 33 50 106 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 43 59 113 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 110
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+36 52 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 72 85 132
-+68 82 130 54 69 120 37 53 109 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 47 105 46 61 115 61 75 125 72 85 132 72 85 132 72 85 132
-+72 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+44 60 114 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 52 67 119
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 63 77 126
-+30 47 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 33 50 106
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 31 48 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 45 103 55 70 121 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+43 59 113 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 47 62 115 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 111 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 66 80 129 54 69 120 40 56 111
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 34 50 107 48 64 117 61 75 125
-+72 85 132 72 85 132 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 47 62 115
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 45 60 114 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 43 59 113
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 54 69 120
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 49 65 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 110 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 45 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 39 55 111 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 33 50 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 72 85 132 72 85 132 72 85 132 72 85 132
-+71 85 132 61 75 125 51 66 119 39 55 111 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 35 51 108
-+46 61 115 56 70 122 66 80 129 72 85 132 72 85 132 72 85 132
-+72 85 132 72 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 46 61 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 111 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 56 70 122 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 34 50 107 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 52 67 119 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 33 50 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 47 105 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 34 50 107 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+68 82 130 68 82 130 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 72 85 132 72 85 132 68 82 130
-+60 75 125 54 69 120 47 62 115 40 56 111 35 51 108 31 48 105
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 30 46 104 33 50 106 38 54 109
-+44 60 114 49 65 117 56 70 122 65 79 128 71 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 72 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 43 59 113 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 66 80 128 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 32 49 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 58 73 123 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+51 66 119 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+50 65 118 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 43 59 113
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+47 62 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 36 52 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+68 82 130 68 82 130 68 82 130 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 72 85 132 72 85 132 72 85 132
-+72 85 132 72 85 132 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 71 85 132 72 85 132 72 85 132 72 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 72 85 132 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 66 80 129 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 32 49 106 64 78 127 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 46 61 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 44 60 114 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 58 73 123
-+34 50 107 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 49 65 117 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+39 55 111 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+39 55 110 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 42 58 112 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 32 49 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+68 82 130 68 82 130 68 82 130 68 82 130 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 72 85 132 72 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 72 85 132 72 85 132 72 85 132
-+72 85 132 72 85 132 72 85 132 72 85 132 72 85 132 72 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+66 80 128 37 53 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+31 48 105 63 77 126 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 56 70 122 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 46 104 60 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 50 65 118
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 33 50 106 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 36 52 108 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 31 48 105 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 64 78 127
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+63 77 126 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 63 77 126 32 49 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 51 66 119 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 33 50 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 47 62 115 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 45 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 46 61 115 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 47 62 115
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 44 60 114
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 36 52 108 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 58 73 123 30 46 104
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 61 75 125
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+63 77 126 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 39 55 110 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 49 65 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 47 105 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 33 50 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 46 104 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 39 55 110
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 42 58 112 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 39 55 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 111 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 36 52 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+64 78 127 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 50 65 118 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 31 48 105 61 75 125 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+52 67 119 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 58 73 123 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 32 49 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+44 60 114 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 49 65 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 40 56 111 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 34 50 107
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 31 48 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+30 46 104 58 73 123 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 66 80 129 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 63 77 126 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 59 74 124
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+48 64 117 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 48 64 117 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 46 104
-+55 70 121 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 54 69 120 37 53 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 49 65 117 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 46 61 115 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+34 50 107 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 44 60 114 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 33 50 106 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 26 43 102 47 62 115 66 80 129 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 71 85 132 71 85 132 71 85 132
-+71 85 132 71 85 132 71 85 132 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+60 75 125 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 34 50 107 64 78 127 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 63 77 126 34 50 107
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 36 52 108
-+61 75 125 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 30 46 104 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 45 60 114
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 51 66 119 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 35 51 108 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 37 53 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+42 58 112 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 40 56 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 38 54 109 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 38 54 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 35 51 108 63 77 126 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 48 64 117
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 110 65 79 128 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 42 58 112 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 58 73 123
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 43 59 113 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 39 55 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 45 60 114 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 33 50 106 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 40 56 111 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 50 65 118
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 63 77 126 36 52 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 43 59 113
-+66 80 128 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 50 65 118 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 51 66 119 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 56 70 122 27 44 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 46 61 115 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 52 67 119 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 46 104 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 44 60 114 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 31 48 105 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 30 46 104 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+35 51 108 63 77 126 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 66 80 129 48 64 117 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 49 65 117 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 56 70 122 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 40 56 111 61 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 38 54 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 40 56 111 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 32 49 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 42 58 112
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 39 55 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 36 52 108 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 47 62 115 66 80 129 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+58 73 123 33 50 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 56 70 122 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 58 73 123 30 46 104 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 31 48 105 60 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+51 66 119 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 47 62 115 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 30 46 104 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+27 44 102 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 47 62 115 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 33 50 106 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 39 55 111 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 36 52 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 54 69 120 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 70 84 131
-+70 84 131 70 84 131 70 84 131 70 84 131 70 84 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 63 77 126 40 56 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 35 51 108 63 77 126 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+61 75 125 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102 55 70 121 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 58 73 123
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 43 59 113 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+38 54 109 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 35 51 108 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 44 60 114 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 46 104 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 31 48 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+58 73 123 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 70 84 131 70 84 131 70 84 131
-+70 84 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 66 80 128 46 61 115 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+44 60 114 66 80 128 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 63 77 126
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 48 64 117 61 75 125 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 44 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 50 65 118 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+48 64 117 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 29 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 43 59 113 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 39 55 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+35 51 108 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 27 44 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 44 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 37 53 109 59 74 124 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+66 80 129 47 62 115 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 56 70 122
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 63 77 126 40 56 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 61 75 125 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 54 69 120 27 44 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 37 53 109 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 37 53 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 46 104
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 38 54 109 58 73 123 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 66 80 128 48 64 117
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 38 54 109 63 77 126 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 44 60 114 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 33 50 106
-+60 75 125 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 34 50 107 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+27 44 102 54 69 120 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 47 62 115
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 33 50 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 39 55 110 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 44 60 114 27 44 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 46 104
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 32 49 106 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 32 49 106
-+63 77 126 38 54 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 27 41 89 18 31 74 15 25 57 13 22 52 18 27 58
-+30 37 63 38 45 69 32 38 61 32 38 61 32 38 61 32 38 61
-+32 38 61 32 38 61 32 38 61 66 79 125 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 63 77 126 44 60 114 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 29 45 103 52 67 119 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 63 77 126 46 61 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 58 73 123
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 47 62 115 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+42 58 112 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 42 58 112
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 32 49 106 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+46 61 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 27 44 102 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 28 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 35 51 108
-+66 80 129 66 80 129 52 67 119 29 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 23 37 83 15 25 57 9 15 36
-+4 6 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 0 0 0 0 0 0 44 53 81 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 66 80 129
-+55 70 121 38 54 109 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+40 56 111 64 78 127 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 63 77 126 47 62 115 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 54 69 120 61 75 125
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 56 70 122 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 46 104
-+55 70 121 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 44 60 114 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+35 51 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 34 50 107 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 39 55 111
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+38 54 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+29 45 103 35 51 108
-+66 80 129 66 80 129 66 80 129 64 78 127 42 58 112 25 42 101
-+25 42 101 25 42 101 9 15 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 44 53 81 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+69 83 131 69 83 131 69 83 131 69 83 131 69 83 131 69 83 131
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 61 75 125 46 61 115 30 46 104
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 23 37 83 13 22 52 18 27 58 27 35 61
-+32 38 61 32 38 61 32 38 61 32 38 61 29 34 52 25 31 50
-+25 31 50 25 31 50 25 31 50 23 28 45 40 49 78 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+63 77 126 48 64 117 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 50 65 118 61 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 35 51 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 47 62 115
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 54 69 120 42 58 112 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 47 62 115
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 42 58 112 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+31 48 105 35 51 108
-+66 80 128 66 80 129 66 80 129 66 80 129 66 80 129 58 73 123
-+36 52 108 25 42 101 9 13 26 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 44 53 81 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+63 77 126 48 64 117 32 49 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 19 29 65 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 38 61
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 63 77 126 63 77 126
-+48 64 117 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 44 60 114 61 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 45 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 35 51 108 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 52 67 119 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 43 59 113 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 37 53 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 46 104 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+35 51 108 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 35 51 108 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+34 50 107 35 51 108
-+66 80 128 66 80 128 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 54 69 120 9 13 26 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 31 69 39 55 110 50 65 118
-+63 77 126 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 66 80 129 56 70 122 44 60 114 31 48 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 42 58 112 41 51 85 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 45 69 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 63 77 126 46 61 115
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 39 55 111 61 75 125 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+54 69 120 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 54 69 120 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 38 54 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 47 105 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 38 54 109 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 44 60 114
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 26 43 102 39 55 111 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+35 51 108 35 51 108
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 129 66 80 129
-+66 80 129 66 80 129 15 18 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 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 31 48 105 42 58 112 52 67 119 61 75 125 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 66 80 129 56 70 122
-+47 62 115 36 52 108 27 44 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 40 56 111
-+61 75 125 66 80 129 44 53 81 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 26 38 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 44 60 114 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+36 52 108 61 75 125 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 58 73 123
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 44 60 114 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 49 65 117 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 44 60 114 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 39 55 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 39 55 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 32 49 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+35 51 108 35 51 108
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 129 66 80 129 12 15 26 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+36 52 108 44 60 114 51 66 119 59 74 124 65 79 128 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 68 82 130 68 82 130
-+68 82 130 68 82 130 68 82 130 68 82 130 66 80 129 63 77 126
-+55 70 121 48 64 117 39 55 111 32 49 106 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 40 56 111 60 75 125 66 80 129
-+66 80 129 66 80 129 44 53 81 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 18 27 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 63 77 126 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+59 74 124 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 40 56 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 33 50 106 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 31 48 105 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+33 50 106 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 31 48 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 36 52 108 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 27 44 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 34 50 107
-+35 51 108 35 51 108
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 9 12 21 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 28 45 103
-+33 50 106 39 55 110 43 59 113 47 62 115 49 65 117 54 69 120
-+56 70 122 56 70 122 58 73 123 59 74 124 59 74 124 59 74 124
-+59 74 124 56 70 122 56 70 122 55 70 121 51 66 119 48 64 117
-+44 60 114 42 58 112 36 52 108 30 47 105 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+27 44 102 43 59 113 61 75 125 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 44 53 81 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 12 21 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 63 77 126 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 33 50 106 59 74 124
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 49 65 117 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 51 66 119 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 46 61 115 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 45 60 114 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 42 58 112 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+42 58 112 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 43 59 113 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 27 44 102 40 56 111 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 37 53 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 28 45 103 35 51 108
-+35 51 108 35 51 108
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 7 9 15 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 48 64 117
-+64 78 127 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 38 47 77 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+7 9 15 65 79 128 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 63 77 126
-+60 75 125 34 50 107 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 32 49 106 59 74 124 61 75 125
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 54 69 120 28 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 42 58 112 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+32 49 106 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 30 47 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 31 48 105
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 36 52 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 31 48 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 47 105 35 51 108
-+35 51 108 35 51 108
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 7 9 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 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 39 55 111 56 70 122 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 128 66 80 128
-+66 80 128 66 80 128 40 48 74 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+7 9 13 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 64 78 127 63 77 126 63 77 126 58 73 123
-+30 47 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 47 105 58 73 123 61 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 31 48 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+32 49 106 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+46 61 115 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 40 56 111
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 44 60 114 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 110 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 34 50 107 35 51 108
-+35 51 108 35 51 108
-+65 79 128 65 79 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 4 5 9 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+49 65 117 63 77 126 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 40 48 74 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 4 6 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 63 77 126 63 77 126 54 69 120 28 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 31 48 105 58 73 123 61 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+52 67 119 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 51 66 119
-+27 44 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 33 50 106
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 30 47 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 30 46 104 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 39 55 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 29 45 103 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 35 51 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 35 51 108 35 51 108
-+35 51 108 35 51 108
-+65 79 128 65 79 128 65 79 128 65 79 128 66 80 128 66 80 128
-+66 80 128 66 80 128 2 3 5 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 34 50 107 48 64 117 63 77 126 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 40 48 74 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 2 3 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 63 77 126 63 77 126 45 60 114 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+32 49 106 58 73 123 61 75 125 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 45 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 45 60 114
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 35 51 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 47 62 115
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 44 60 114 31 48 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 35 51 108 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 30 46 104 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 47 105 35 51 108 35 51 108
-+35 51 108 35 51 108
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+66 80 128 66 80 128 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 28 40 79 34 50 107 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 40 56 111
-+52 67 119 64 78 127 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 40 48 74 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+63 77 126 61 75 125 37 53 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 9 15 36
-+2 3 7 10 17 39 25 42 101 25 42 101 25 42 101 34 50 107
-+59 74 124 61 75 125 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 58 73 123
-+51 66 119 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 36 52 108 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 54 69 120 45 60 114 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 37 53 109 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 30 46 104 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 45 103 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 40 56 111 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 110 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 34 50 107 35 51 108 35 51 108
-+35 51 108 34 50 107
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 62 75 121 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 50 58 85 66 80 129 64 78 127
-+55 70 121 45 60 114 36 52 108 27 44 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+31 48 105 40 56 111 50 65 118 60 75 125 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 38 47 77 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 75 121 64 78 127 64 78 127 63 77 126 63 77 126
-+56 70 122 30 47 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 4 6 13
-+0 0 0 0 0 0 25 42 101 25 42 101 35 51 108 59 74 124
-+61 75 125 61 75 125 61 75 125 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 54 69 120
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 46 104 54 69 120 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 52 67 119 29 45 103 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 49 65 117 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+42 58 112 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+31 48 105 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 28 45 103 35 51 108 35 51 108 35 51 108
-+35 51 108 34 50 107
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 62 75 121 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 128 59 74 124 52 67 119
-+45 60 114 37 53 109 30 46 104 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+28 45 103 34 50 107 42 58 112 48 64 117 56 70 122 64 78 127
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+65 79 128 65 79 128 38 45 69 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 75 121 64 78 127 63 77 126 63 77 126 47 62 115
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 11 15 31
-+0 0 0 0 0 0 25 42 101 38 54 109 60 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 56 70 122 30 46 104
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 48 64 117 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 37 53 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 40 56 111 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 26 43 102 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 42 58 112 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+38 54 109 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 31 48 105 35 51 108 35 51 108 35 51 108
-+35 51 108 34 50 107
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 59 72 115 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 128 61 75 125 56 70 122
-+50 65 118 46 61 115 42 58 112 39 55 111 36 52 108 33 50 106
-+30 47 105 30 47 105 29 45 103 28 45 103 28 45 103 28 45 103
-+28 45 103 30 46 104 30 47 105 31 48 105 35 51 108 38 54 109
-+42 58 112 44 60 114 48 64 117 54 69 120 58 73 123 64 78 127
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 32 41 72 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 59 72 115 63 77 126 59 74 124 36 52 108 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 13 22 52
-+4 6 13 4 6 13 4 6 13 4 6 13 4 6 13 2 3 7
-+0 0 0 0 0 0 42 56 104 61 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 34 50 107 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 42 58 112 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 56 70 122 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 55 70 121 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 48 64 117 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 30 46 104 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 40 56 111
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 35 51 108 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 35 51 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 29 45 103
-+40 56 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 37 53 109 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 34 50 107 35 51 108 35 51 108 35 51 108
-+34 50 107 32 49 106
-+64 78 127 64 78 127 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 60 71 109 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 32 41 72 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 60 71 109 51 66 119 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 13 20 42
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 53 67 117 61 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 37 53 109 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 35 51 108 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 56 70 122 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 54 69 120 30 46 104 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 44 60 114 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 29 45 103
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 26 43 102 44 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+43 59 113 27 44 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 35 51 108
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 31 48 105 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 28 45 103 35 51 108 35 51 108 35 51 108 35 51 108
-+34 50 107 30 46 104
-+64 78 127 64 78 127 64 78 127 64 78 127 65 79 128 65 79 128
-+65 79 128 53 64 102 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 32 41 72 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 13 22 52
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 49 62 109 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 40 56 111 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 47 105 54 69 120 56 70 122 56 70 122 56 70 122 56 70 122
-+56 70 122 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 55 70 121 54 69 120 54 69 120 54 69 120 54 69 120
-+54 69 120 39 55 110 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 33 50 106 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 39 55 110 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 35 51 108 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 26 43 102 39 55 111
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 36 52 108
-+19 29 65 13 22 52 10 17 39 11 15 31 9 13 26 13 20 42
-+18 31 74 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 31 48 105 35 51 108 35 51 108 35 51 108 35 51 108
-+34 50 107 26 43 102
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+65 79 128 49 61 100 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 49 60 97 62 75 121 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 129
-+66 80 129 66 80 129 66 80 129 66 80 129 66 80 129 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 62 75 121
-+60 71 109 53 64 102 59 72 115 66 79 125 66 80 128 66 80 128
-+66 80 128 66 80 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 32 41 72 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 23 37 83 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 13 22 52
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 53 64 102 61 75 125 61 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 44 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+51 66 119 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+55 70 121 54 69 120 54 69 120 54 69 120 54 69 120 54 69 120
-+47 62 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 48 64 117 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 47 62 115 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 44 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 44 60 114
-+28 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 31 48 105 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 31 48 105
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 2 3 7 23 37 83 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 35 51 108 35 51 108 35 51 108 35 51 108 34 50 107
-+32 49 106 25 42 101
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 49 60 97 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 40 49 78 32 38 61 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 29 34 52 12 15 26 7 9 13 1 2 3 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 5 7 13 9 12 21
-+49 60 97 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 64 78 127 32 41 72 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 23 37 83 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 13 22 52
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 49 61 100 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 60 75 125
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 59 74 124 58 73 123 58 73 123 58 73 123 58 73 123
-+46 61 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+13 20 42 9 13 26 9 13 26 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 46 61 115
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 56 70 122
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 52 67 119
-+29 45 103 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 111 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 35 51 108 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+35 51 108 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 43 59 113 21 28 52 19 24 44 13 20 42
-+10 17 39 10 17 39 10 17 39 13 20 42 13 20 42 13 20 42
-+13 20 42 13 20 42 13 22 52 19 29 65 23 37 83 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 110 40 56 111
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 31 48 105
-+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 12 21 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+30 46 104 35 51 108 35 51 108 35 51 108 35 51 108 34 50 107
-+29 45 103 25 42 101
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 41 54 95 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 40 48 74 25 31 50 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 15 18 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 0 0 0 0 0 0
-+23 28 45 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 64 78 127
-+64 78 127 64 78 127 32 38 61 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 23 37 83 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 15 25 57
-+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 35 61 36 45 78 36 45 78 36 45 78
-+36 45 78 36 45 78 36 45 78 36 45 78 41 51 85 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 47 62 115
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+9 13 26 0 0 0 0 0 0 18 31 74 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 39 55 111 56 70 122
-+56 70 122 56 70 122 56 70 122 56 70 122 56 70 122 55 70 121
-+55 70 121 55 70 121 55 70 121 55 70 121 55 70 121 55 70 121
-+54 69 120 54 69 120 54 69 120 54 69 120 54 69 120 35 51 108
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 45 60 114 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+44 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 41 54 95 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 2 3
-+9 13 26 13 22 52 18 31 74 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 30 46 104 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 29 45 103
-+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 6 11 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+33 50 106 35 51 108 35 51 108 35 51 108 35 51 108 34 50 107
-+26 43 102 25 42 101
-+64 78 127 64 78 127 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 41 51 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 65 79 128 65 79 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 38 45 69 23 28 45 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 15 18 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 0 0 0 0 0 0
-+23 28 45 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 64 78 127 64 78 127 64 78 127
-+64 78 127 64 78 127 32 38 61 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 18 31 74 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 15 25 57
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 48 64 117 26 43 102
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+9 13 26 0 0 0 0 0 0 9 15 36 25 42 101 25 42 101
-+25 42 101 19 29 65 9 13 26 11 17 38 18 23 42 18 23 42
-+18 23 42 19 24 44 21 28 52 21 28 52 23 28 45 23 28 45
-+26 32 53 26 32 53 26 32 53 41 51 85 55 70 121 54 69 120
-+54 69 120 54 69 120 54 69 120 54 69 120 43 59 113 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 47 62 115
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 31 48 105 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 36 52 108
-+46 61 115 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 44 60 114 41 54 95 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 7 14 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 27 41 89
-+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 6 11 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+35 51 108 35 51 108 35 51 108 35 51 108 34 50 107 30 47 105
-+25 42 101 25 42 101
-+63 77 126 63 77 126 64 78 127 64 78 127 64 78 127 64 78 127
-+64 78 127 41 51 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 49 60 97 65 79 128 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 66 80 128
-+66 80 128 32 38 61 16 21 36 66 80 128 66 80 128 59 72 115
-+41 51 85 41 51 85 50 58 85 49 60 97 49 60 97 49 60 97
-+49 60 97 49 60 97 49 60 97 53 64 102 53 64 102 53 64 102
-+53 64 102 53 64 102 53 64 102 60 71 109 62 75 121 66 80 128
-+66 80 128 66 80 128 66 80 128 66 80 128 66 80 128 66 80 128
-+66 80 128 66 80 128 62 75 121 49 60 97 50 58 85 60 71 109
-+63 77 126 15 18 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 0 0 0 0 0 0
-+23 28 45 62 75 121 32 38 61 32 38 61 32 38 61 32 38 56
-+25 31 50 25 31 50 25 31 50 19 24 44 19 24 44 49 60 97
-+64 78 127 26 32 53 9 12 21 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 18 31 74 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 23 33 67
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 59 74 124 58 73 123
-+58 73 123 58 73 123 58 73 123 49 65 117 26 43 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+9 13 26 0 0 0 0 0 0 10 17 39 25 42 101 25 42 101
-+15 25 57 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 26 32 53 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 50 65 118 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 38 54 109 51 66 119
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 42 58 112 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 41 54 95 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 6 11 25 42 101 25 42 101
-+25 42 101 25 42 101 29 45 103 40 56 111 40 56 111 40 56 111
-+39 55 111 39 55 111 39 55 111 39 55 111 38 54 109 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 30 47 105
-+35 51 108 35 51 108 35 51 108 35 51 108 34 50 107 28 45 103
-+25 42 101 25 42 101
-+45 60 114 61 75 125 63 77 126 63 77 126 64 78 127 64 78 127
-+64 78 127 38 47 77 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 53 64 102 65 79 128 65 79 128
-+65 79 128 59 72 115 49 61 100 63 77 126 65 79 128 65 79 128
-+65 79 128 32 38 61 12 15 26 65 79 128 63 77 126 12 15 26
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 32 38 61 66 80 128
-+66 80 128 66 80 128 66 80 128 65 79 128 65 79 128 65 79 128
-+65 79 128 49 60 97 0 0 1 0 0 0 0 0 0 0 0 0
-+1 1 2 1 1 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
-+23 28 45 53 64 102 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41 51 85
-+64 78 127 7 9 15 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 18 31 74 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 47 62 115 40 49 78
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 59 74 124
-+59 74 124 59 74 124 59 74 124 59 74 124 58 73 123 58 73 123
-+58 73 123 58 73 123 48 64 117 26 43 102 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+13 20 42 0 0 0 0 0 0 19 29 65 25 42 101 19 29 65
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 28 52 54 69 120 54 69 120
-+54 69 120 54 69 120 54 69 120 31 48 105 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 29 45 103 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 29 45 103 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 36 52 108 46 61 115
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 45 60 114
-+44 60 114 44 60 114 41 54 95 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 3 7 25 42 101 25 42 101
-+25 42 101 25 42 101 36 52 108 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 111 32 49 106 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 41 89 27 41 89
-+28 40 79 29 40 76 35 51 108 34 50 107 33 50 106 25 42 101
-+25 42 101 25 42 101
-+25 42 101 28 45 103 46 61 115 61 75 125 63 77 126 63 77 126
-+64 78 127 39 46 71 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 19 24 44 25 31 50 25 31 50
-+19 23 37 1 2 3 0 0 0 1 2 3 15 18 27 32 41 72
-+65 79 128 29 34 52 7 9 13 65 79 128 29 34 52 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 34 52 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 50 58 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 53 64 102 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41 51 85
-+64 78 127 7 9 15 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 18 31 74 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 32 49 106 56 70 122 61 75 125 41 51 85
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 59 74 124
-+59 74 124 59 74 124 59 74 124 58 73 123 58 73 123 58 73 123
-+58 73 123 48 64 117 26 43 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+18 31 74 0 0 0 0 0 0 18 31 74 25 42 101 13 22 52
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 28 52 54 69 120 54 69 120
-+54 69 120 54 69 120 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 45 60 114 51 66 119 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+38 54 109 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 44 102 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 41 54 95 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 3 7 25 42 101 25 42 101
-+25 42 101 27 44 102 40 56 111 40 56 111 40 56 111 39 55 111
-+39 55 111 39 55 111 39 55 111 39 55 110 26 43 102 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+19 29 65 13 20 42 10 17 39 9 15 36 9 13 26 8 11 18
-+5 7 14 2 3 7 1 1 2 0 0 0 0 0 0 0 0 0
-+0 0 0 4 6 13 35 51 108 34 50 107 30 46 104 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 28 45 103 44 60 114 59 74 124
-+63 77 126 32 41 72 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 14 26
-+65 79 128 26 32 53 1 1 2 41 51 85 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 26 32 53 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 50 58 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 53 64 102 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41 51 85
-+40 49 78 1 2 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 18 31 74 25 42 101 25 42 101 25 42 101 25 42 101
-+26 43 102 43 59 113 60 75 125 61 75 125 61 75 125 41 51 85
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 59 74 124
-+59 74 124 58 73 123 58 73 123 58 73 123 58 73 123 58 73 123
-+47 62 115 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 1 1 2 0 0 0 19 29 65 25 42 101 10 17 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
-+0 0 0 0 0 0 0 0 0 19 24 44 54 69 120 54 69 120
-+54 69 120 44 60 114 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 35 51 108 51 66 119 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 46 61 115
-+26 43 102 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 37 53 109 46 61 115 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 45 60 114 44 60 114
-+44 60 114 44 60 114 29 45 103 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 2 25 42 101 25 42 101
-+25 42 101 34 50 107 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 34 50 107 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+1 1 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 4 6 13 35 51 108 34 50 107 26 43 102 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 26 43 102
-+40 56 111 30 37 63 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 14 26
-+65 79 128 25 31 50 0 0 0 1 2 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 23 28 45 65 79 128
-+65 79 128 65 79 128 65 79 128 65 79 128 65 79 128 65 79 128
-+65 79 128 50 58 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 49 60 97 0 0 0 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 4 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 18 31 74 25 42 101 25 42 101 25 42 101 33 50 106
-+56 70 122 61 75 125 61 75 125 61 75 125 61 75 125 49 60 97
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 59 74 124
-+58 73 123 58 73 123 58 73 123 58 73 123 58 73 123 45 60 114
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 5 7 14 0 0 0 15 25 57 25 42 101 16 21 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 18 23 42 54 69 120 54 69 120
-+49 65 117 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 29 45 103 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 50 65 118 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 48 64 117 32 49 106
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 28 45 103 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 44 60 114 27 41 89 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 42 101 25 42 101
-+26 43 102 39 55 111 40 56 111 40 56 111 39 55 111 39 55 111
-+39 55 111 39 55 111 39 55 111 28 45 103 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 6 13 34 50 107 31 48 105 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 14 26
-+65 79 128 23 28 45 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 23 26 38 65 79 128
-+65 79 128 64 78 127 59 72 115 53 64 102 41 54 95 38 47 77
-+30 37 63 19 23 37 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 49 60 97 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 19 29 65 25 42 101 27 44 102 46 61 115 61 75 125
-+61 75 125 61 75 125 61 75 125 61 75 125 61 75 125 49 60 97
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 58 73 123
-+58 73 123 58 73 123 58 73 123 58 73 123 42 58 112 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 13 22 52
-+13 22 52 13 22 52 13 22 52 13 22 52 13 22 52 13 22 52
-+13 22 52 5 7 14 0 0 0 13 20 42 44 60 114 16 21 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 8 11 18 41 51 85 52 67 119
-+30 46 104 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 46 61 115 51 66 119 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 50 65 118 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 48 64 117 40 56 111 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 39 55 111 46 61 115 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 45 60 114 44 60 114 44 60 114
-+44 60 114 38 54 109 23 37 83 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 42 101 25 42 101
-+32 49 106 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 35 51 108 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 6 13 34 50 107 28 45 103 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 10 17 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 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 12 21
-+64 78 127 23 26 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
-+0 0 0 0 0 0 0 0 0 0 0 0 4 5 9 12 15 26
-+7 9 13 1 1 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
-+23 28 45 49 60 97 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 19 29 65 38 54 109 58 73 123 61 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 61 75 125 60 75 125 49 61 100
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 12 21 58 73 123
-+58 73 123 58 73 123 58 73 123 39 55 110 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 23 42 56 70 122 15 18 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 0 0 0 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 17 38
-+23 37 83 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+39 55 110 51 66 119 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 49 65 117 47 62 115 27 44 102 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 30 47 105 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+44 60 114 28 45 103 23 37 83 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 42 101 26 43 102
-+39 55 111 40 56 111 40 56 111 39 55 111 39 55 111 39 55 111
-+39 55 111 39 55 111 29 45 103 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 6 13 33 50 106 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 11 17 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
-+0 0 0 0 0 0 0 0 0 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 12 21
-+64 78 127 19 23 37 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 41 54 95 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 39 72 61 75 125 61 75 125 61 75 125 61 75 125
-+61 75 125 61 75 125 61 75 125 60 75 125 60 75 125 53 64 102
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 3 3 16 21 36
-+27 35 61 41 54 95 35 51 108 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 27 41 89 10 17 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 16 21 36 56 70 122 12 15 26
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 13 22 52 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 31 48 105
-+51 66 119 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 50 65 118 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 49 65 117 48 64 117 34 50 107 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 42 58 112 46 61 115 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 45 60 114 44 60 114 44 60 114 44 60 114
-+37 53 109 25 42 101 23 37 83 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 13 20 42 29 45 103
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 36 52 108 25 42 101 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 5 9 15 25 57 9 15 36 5 7 14 1 1 2
-+19 29 65 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 9 15 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 9 12 21
-+64 78 127 16 21 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
-+23 28 45 41 51 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 32 41 72 61 75 125 61 75 125 61 75 125 61 75 125
-+61 75 125 60 75 125 60 75 125 60 75 125 60 75 125 49 62 109
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 13 20 42 25 42 101 18 31 74 2 3 7
-+2 3 7 2 3 7 2 3 7 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 12 15 26 56 70 122 9 12 21
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 15 31 15 25 57 19 29 65 18 31 74 23 37 83
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 27 44 102 48 64 117
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+50 65 118 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 42 58 112 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+34 50 107 46 61 115 45 60 114 45 60 114 45 60 114 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 43 59 113
-+28 45 103 25 42 101 23 37 83 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 15 31
-+40 56 111 40 56 111 39 55 111 39 55 111 39 55 111 39 55 111
-+39 55 111 30 46 104 25 42 101 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+19 29 65 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 9 13 26 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 12 21
-+64 78 127 15 18 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 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+18 23 42 29 39 72 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 30 37 63 61 75 125 61 75 125 61 75 125 61 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 53 67 117
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 5 9 25 42 101 10 17 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 0 0 0
-+0 0 0 0 0 0 0 0 0 7 9 15 56 70 122 8 10 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
-+5 7 14 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 42 56 104 49 62 109
-+50 65 118 50 65 118 50 65 118 50 65 118 50 65 118 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+49 65 117 48 64 117 28 45 103 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 27 44 102
-+44 60 114 46 61 115 45 60 114 45 60 114 28 40 79 45 60 114
-+45 60 114 45 60 114 44 60 114 44 60 114 44 60 114 35 51 108
-+25 42 101 25 42 101 23 37 83 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+37 53 109 25 42 101 25 42 101 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+19 29 65 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 9 13 26 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 12 21
-+64 78 127 15 18 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 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 19 29 65 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 30 37 63 61 75 125 61 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 55 70 121
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 23 37 83 5 7 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 2 3 5 56 70 122 7 9 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
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 25 57 25 42 101 25 42 101 25 42 101 23 37 83
-+10 17 39 9 13 26 3 5 9 1 1 1 0 0 0 0 0 0
-+1 1 2 5 7 13 9 12 21 11 15 31 19 24 44 50 65 118
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 49 65 117
-+48 64 117 36 52 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 37 53 109
-+46 61 115 45 60 114 45 60 114 29 40 76 19 24 44 45 60 114
-+45 60 114 44 60 114 44 60 114 44 60 114 42 58 112 26 43 102
-+25 42 101 25 42 101 23 37 83 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+40 56 111 39 55 111 39 55 111 39 55 111 39 55 111 39 55 111
-+30 47 105 25 42 101 25 42 101 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+19 29 65 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 9 12 21 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 12 21
-+63 77 126 9 12 21 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 19 29 65 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 35 61 60 75 125 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 18 31 74 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 53 67 117 4 5 9
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 13 20 42 25 42 101 25 42 101 25 42 101 18 31 74
-+0 0 0 0 0 0 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 4 6 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 48 64 117
-+43 59 113 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 29 45 103 46 61 115
-+45 60 114 45 60 114 45 60 114 27 35 61 19 24 44 45 60 114
-+44 60 114 44 60 114 44 60 114 44 60 114 32 49 106 25 42 101
-+25 42 101 25 42 101 27 41 89 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 23 37 83
-+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 6 11 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 12 21 9 13 26
-+32 49 106 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 5 7 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 9 12 21
-+63 77 126 9 12 21 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 15 25 57 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 12 15 26 49 62 109 60 75 125 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 60 75 125 60 75 125 59 74 124
-+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 23 37 83 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 36 45 78 3 4 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 9 15 36 25 42 101 25 42 101 25 42 101 19 29 65
-+0 0 0 0 0 0 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 4 6 49 65 117
-+49 65 117 49 65 117 49 65 117 49 65 117 49 65 117 47 62 115
-+28 45 103 25 42 101 11 15 31 2 3 7 3 6 11 5 7 14
-+13 22 52 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 40 56 111 46 61 115
-+45 60 114 45 60 114 45 60 114 27 35 61 17 22 38 45 60 114
-+44 60 114 44 60 114 44 60 114 40 56 111 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 39 55 111 39 55 111 39 55 111 30 47 105
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 23 37 83
-+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 5 9 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 75 125 52 67 119 36 52 108 25 42 101 25 42 101 25 42 101
-+25 42 101 4 6 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 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+26 43 102 4 6 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 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 15 25 57 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 3 5 32 41 72 60 75 125 60 75 125
-+60 75 125 60 75 125 60 75 125 59 74 124 59 74 124 59 74 124
-+3 4 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 27 41 89 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 28 36 67 3 4 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 9 12 21 25 42 101 25 42 101 25 42 101 19 29 65
-+0 0 0 0 0 0 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 4 6 49 65 117
-+48 64 117 42 56 104 41 54 95 48 64 117 48 64 117 33 50 106
-+25 42 101 25 42 101 9 13 26 0 0 0 0 0 0 0 0 0
-+13 20 42 25 42 101 23 37 83 18 31 74 18 31 74 18 31 74
-+18 31 74 18 31 74 18 31 74 18 31 74 18 31 74 18 31 74
-+18 31 74 18 31 74 18 31 74 23 37 83 36 45 78 36 45 78
-+42 56 104 45 60 114 45 60 114 21 28 52 14 19 34 44 60 114
-+44 60 114 44 60 114 44 60 114 30 46 104 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 39 55 111 39 55 111 38 54 109 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 23 37 83
-+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 3 7 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 75 125 61 75 125 61 75 125 56 70 122 39 55 111 27 44 102
-+25 42 101 3 6 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 0 0 0 0 0 0 5 7 14
-+25 42 101 3 6 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 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 15 25 57 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 7 13 49 61 100 49 61 100
-+49 61 100 49 61 100 49 62 109 55 70 121 49 60 97 49 61 100
-+5 7 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 25 42 101 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 12 15 26 55 70 121 3 4 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 3 6 11 25 42 101 25 42 101 25 42 101 19 29 65
-+0 0 0 0 0 0 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 5 7 14
-+1 1 1 0 0 0 0 0 0 4 5 9 29 40 76 25 42 101
-+25 42 101 25 42 101 5 7 14 0 0 0 0 0 0 0 0 0
-+13 22 52 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 11 18 42 58 112 45 60 114 18 23 42 14 19 34 44 60 114
-+44 60 114 44 60 114 38 54 109 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 39 55 111 39 55 111 30 47 105 25 42 101
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 23 37 83
-+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 3 7 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 75 125 61 75 125 61 75 125 61 75 125 61 75 125 26 32 53
-+7 9 15 1 1 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 5 7 14
-+25 42 101 2 3 7 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 7 9 13 41 54 95 0 0 0 1 2 3
-+5 7 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 1 2 3 25 42 101 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 19 24 44 55 70 121 3 4 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 1 1 2 25 42 101 25 42 101 25 42 101 21 31 69
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 13 22 52 25 42 101
-+27 41 89 9 12 21 0 0 0 0 0 0 0 0 0 0 0 0
-+15 25 57 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 18 23 42 45 60 114 14 19 34 10 14 26 44 60 114
-+44 60 114 43 59 113 27 44 102 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 39 55 111 33 50 106 23 37 83 23 37 83
-+23 37 83 23 37 83 23 37 83 23 37 83 23 37 83 18 31 74
-+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 3 7 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 75 125 61 75 125 61 75 125 61 75 125 61 75 125 23 28 45
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+25 42 101 2 3 7 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 30 37 63 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 13 20 42 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 12 21 30 37 63 1 2 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 27 41 89 25 42 101 28 45 103 28 36 67
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 13 22 52 23 37 83
-+5 7 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+19 29 65 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 28 36 67 8 11 18 9 12 21 44 60 114
-+44 60 114 35 51 108 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 39 55 111 19 29 65 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 3 7 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+60 75 125 58 73 123 12 15 26 12 15 26 12 15 26 4 5 9
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+25 42 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 3 5 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 23 37 83 26 43 102 46 61 115 29 39 72
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 13 22 52 10 17 39
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+18 31 74 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 3 1 1 3 8 10 17 44 60 114
-+42 58 112 26 43 102 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 37 53 109 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 3 25 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+60 75 125 53 67 117 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+25 42 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 19 29 65 42 58 112 51 66 119 28 36 67
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 15 31 3 6 11
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+27 41 89 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 5 9 44 60 114
-+31 48 105 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 39 55 111 30 46 104 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+60 75 125 49 61 100 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+25 42 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 15 36 13 22 52 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 7 14 18 23 42 41 54 95 28 36 67
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 13 26 4 6 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 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 2 38 54 109
-+25 42 101 25 42 101 25 42 101 25 42 101 25 42 101 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 37 53 109 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+60 75 125 41 54 95 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+25 42 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+18 23 42 25 31 50 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 40 76 27 35 61
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 29 65
-+19 29 65 25 42 101 27 41 89 19 29 65 23 37 83 25 42 101
-+25 42 101 25 42 101 25 42 101 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+39 55 111 29 45 103 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+60 75 125 41 51 85 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+27 41 89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 25 31 50 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 32 41 72 27 35 61
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 10 17 0 0 1 0 0 0 0 0 0 5 7 14
-+9 15 36 9 15 36 11 15 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 9 13 26
-+36 52 108 25 42 101 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 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 42 101 25 42 101 25 42 101
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+60 75 125 40 49 78 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 7 14
-+23 37 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 25 31 50 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 28 36 67 27 35 61
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+28 45 103 25 42 101 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 23 37 83 18 31 74 10 17 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
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+59 74 124 36 45 78 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 12 21
-+49 62 109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+23 28 45 23 28 45 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 35 61 27 35 61
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+59 74 124 32 41 72 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 6 11
-+53 64 102 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 2 3 1 2 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
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 35 61 26 32 53
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 13 26
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+41 54 95 30 37 63 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+49 61 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 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 4 6 3 4 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 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 13 26
-+25 42 101 25 42 101 25 42 101 15 25 57 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+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 3 5 17 22 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
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+41 51 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 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 6 13
-+13 22 52 13 22 52 13 22 52 11 15 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
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 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 35 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-+0 0 0 0 0 0
---- a/include/linux/linux_logo.h
-+++ b/include/linux/linux_logo.h
-@@ -47,6 +47,7 @@ extern const struct linux_logo logo_supe
- extern const struct linux_logo logo_superh_clut224;
- extern const struct linux_logo logo_m32r_clut224;
- extern const struct linux_logo logo_spe_clut224;
-+extern const struct linux_logo logo_openwrt_clut224;
-
- extern const struct linux_logo *fb_find_logo(int depth);
- #ifdef CONFIG_FB_LOGO_EXTRA
diff --git a/target/linux/xburst/qi_lb60/config-2.6.34 b/target/linux/xburst/qi_lb60/config-2.6.34
deleted file mode 100644
index c25901007e..0000000000
--- a/target/linux/xburst/qi_lb60/config-2.6.34
+++ /dev/null
@@ -1,16 +0,0 @@
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BATTERY_JZ4740=y
-CONFIG_FB_JZ4740=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_JZ4740_ADC=y
-CONFIG_JZ4740_QI_LB60=y
-CONFIG_KEYBOARD_GPIO=y
-CONFIG_KEYBOARD_MATRIX=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_GPM940B0=y
-CONFIG_LOGO=y
-CONFIG_LOGO_OPENWRT_CLUT224=y
-CONFIG_SPI=y
-CONFIG_SPI_BITBANG=y
-CONFIG_SPI_GPIO=y
-CONFIG_SPI_MASTER=y
diff --git a/target/linux/xburst/qi_lb60/config-2.6.35 b/target/linux/xburst/qi_lb60/config-2.6.35
deleted file mode 100644
index f313550ad5..0000000000
--- a/target/linux/xburst/qi_lb60/config-2.6.35
+++ /dev/null
@@ -1,17 +0,0 @@
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_FB_JZ4740=y
-# CONFIG_FB_TMIO is not set
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_INPUT_PWM_BEEPER=y
-CONFIG_JZ4740_QI_LB60=y
-CONFIG_KEYBOARD_GPIO=y
-CONFIG_KEYBOARD_MATRIX=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_ILI8960=y
-CONFIG_LOGO=y
-CONFIG_MFD_CORE=y
-CONFIG_MFD_JZ4740_ADC=y
-CONFIG_SPI=y
-CONFIG_SPI_BITBANG=y
-CONFIG_SPI_GPIO=y
-CONFIG_SPI_MASTER=y
11, -180, -180, -180, -180, -180, -180, -180, -180, -180,
- -180, -180, -180, 58, -180, -180, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -180
- },
-
- {
- 11, -181, -181, -181, -181, -181, -181, -181, -181, -181,
- -181, -181, -181, 58, -181, -181, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -181
- },
-
- {
- 11, -182, -182, -182, -182, -182, -182, -182, -182, -182,
- -182, -182, -182, 58, -182, -182, 58, 58, 58, 58,
-
- 58, 58, 58, 58, 58, 58, 193, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -182
- },
-
- {
- 11, -183, -183, -183, -183, -183, -183, -183, -183, -183,
- -183, -183, -183, 58, -183, -183, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 194, 58, 58, 58, -183
- },
-
- {
- 11, -184, -184, -184, -184, -184, -184, -184, -184, -184,
- -184, -184, -184, 58, -184, -184, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -184
-
- },
-
- {
- 11, -185, -185, -185, -185, -185, -185, -185, -185, -185,
- -185, -185, -185, 58, -185, -185, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -185
- },
-
- {
- 11, -186, -186, -186, -186, -186, -186, -186, -186, -186,
- -186, -186, -186, 58, -186, -186, 58, 58, 58, 195,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -186
- },
-
- {
- 11, -187, -187, -187, -187, -187, -187, -187, -187, -187,
- -187, -187, -187, 58, -187, -187, 58, 58, 58, 58,
-
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -187
- },
-
- {
- 11, -188, -188, -188, -188, -188, -188, -188, -188, -188,
- -188, -188, -188, 58, -188, -188, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 196, 58, -188
- },
-
- {
- 11, -189, -189, -189, -189, -189, -189, -189, -189, -189,
- -189, -189, -189, 58, -189, -189, 58, 58, 58, 58,
- 58, 58, 197, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -189
-
- },
-
- {
- 11, -190, -190, -190, -190, -190, -190, -190, -190, -190,
- -190, -190, -190, 58, -190, -190, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 198, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -190
- },
-
- {
- 11, -191, -191, -191, -191, -191, -191, -191, -191, -191,
- -191, -191, -191, 58, -191, -191, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 199, 58, 58, 58, -191
- },
-
- {
- 11, -192, -192, -192, -192, -192, -192, -192, -192, -192,
- -192, -192, -192, 58, -192, -192, 58, 58, 58, 58,
-
- 58, 200, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -192
- },
-
- {
- 11, -193, -193, -193, -193, -193, -193, -193, -193, -193,
- -193, -193, -193, 58, -193, -193, 58, 58, 58, 58,
- 58, 201, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -193
- },
-
- {
- 11, -194, -194, -194, -194, -194, -194, -194, -194, -194,
- -194, -194, -194, 58, -194, -194, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 202, 58, 58, -194
-
- },
-
- {
- 11, -195, -195, -195, -195, -195, -195, -195, -195, -195,
- -195, -195, -195, 58, -195, -195, 58, 58, 58, 58,
- 58, 203, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -195
- },
-
- {
- 11, -196, -196, -196, -196, -196, -196, -196, -196, -196,
- -196, -196, -196, 58, -196, -196, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -196
- },
-
- {
- 11, -197, -197, -197, -197, -197, -197, -197, -197, -197,
- -197, -197, -197, 58, -197, -197, 58, 58, 58, 58,
-
- 58, 58, 58, 58, 58, 204, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -197
- },
-
- {
- 11, -198, -198, -198, -198, -198, -198, -198, -198, -198,
- -198, -198, -198, 58, -198, -198, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -198
- },
-
- {
- 11, -199, -199, -199, -199, -199, -199, -199, -199, -199,
- -199, -199, -199, 58, -199, -199, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -199
-
- },
-
- {
- 11, -200, -200, -200, -200, -200, -200, -200, -200, -200,
- -200, -200, -200, 58, -200, -200, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -200
- },
-
- {
- 11, -201, -201, -201, -201, -201, -201, -201, -201, -201,
- -201, -201, -201, 58, -201, -201, 58, 205, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -201
- },
-
- {
- 11, -202, -202, -202, -202, -202, -202, -202, -202, -202,
- -202, -202, -202, 58, -202, -202, 58, 206, 58, 58,
-
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -202
- },
-
- {
- 11, -203, -203, -203, -203, -203, -203, -203, -203, -203,
- -203, -203, -203, 58, -203, -203, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -203
- },
-
- {
- 11, -204, -204, -204, -204, -204, -204, -204, -204, -204,
- -204, -204, -204, 58, -204, -204, 58, 58, 58, 58,
- 58, 58, 58, 207, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -204
-
- },
-
- {
- 11, -205, -205, -205, -205, -205, -205, -205, -205, -205,
- -205, -205, -205, 58, -205, -205, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 208, 58,
- 58, 58, 58, 58, 58, 58, 58, -205
- },
-
- {
- 11, -206, -206, -206, -206, -206, -206, -206, -206, -206,
- -206, -206, -206, 58, -206, -206, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 209, 58, 58, -206
- },
-
- {
- 11, -207, -207, -207, -207, -207, -207, -207, -207, -207,
- -207, -207, -207, 58, -207, -207, 58, 58, 58, 58,
-
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -207
- },
-
- {
- 11, -208, -208, -208, -208, -208, -208, -208, -208, -208,
- -208, -208, -208, 58, -208, -208, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -208
- },
-
- {
- 11, -209, -209, -209, -209, -209, -209, -209, -209, -209,
- -209, -209, -209, 58, -209, -209, 58, 58, 58, 58,
- 58, 210, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -209
-
- },
-
- {
- 11, -210, -210, -210, -210, -210, -210, -210, -210, -210,
- -210, -210, -210, 58, -210, -210, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, -210
- },
-
- } ;
-
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[] );
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up zconftext.
- */
-#define YY_DO_BEFORE_ACTION \
- (yytext_ptr) = yy_bp; \
- zconfleng = (size_t) (yy_cp - yy_bp); \
- (yy_hold_char) = *yy_cp; \
- *yy_cp = '\0'; \
- (yy_c_buf_p) = yy_cp;
-
-#define YY_NUM_RULES 64
-#define YY_END_OF_BUFFER 65
-/* This struct is not used in this scanner,
- but its presence is necessary. */
-struct yy_trans_info
- {
- flex_int32_t yy_verify;
- flex_int32_t yy_nxt;
- };
-static yyconst flex_int16_t yy_accept[211] =
- { 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 65, 5, 4, 3, 2, 36, 37, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
- 63, 60, 62, 55, 59, 58, 57, 53, 48, 42,
- 47, 51, 53, 40, 41, 50, 50, 43, 53, 50,
- 50, 53, 4, 3, 2, 2, 1, 35, 35, 35,
- 35, 35, 35, 35, 16, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 63, 60, 62, 61,
- 55, 54, 57, 56, 44, 51, 38, 50, 50, 52,
- 45, 46, 39, 35, 35, 35, 35, 35, 35, 35,
-
- 35, 35, 30, 29, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 49, 25, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 15, 35, 7, 35,
- 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 17, 35, 35,
- 35, 35, 35, 34, 35, 35, 35, 35, 35, 35,
- 10, 35, 13, 35, 35, 35, 35, 33, 35, 35,
- 35, 35, 35, 22, 35, 32, 9, 31, 35, 26,
- 12, 35, 35, 21, 18, 35, 8, 35, 35, 35,
- 35, 35, 27, 35, 35, 6, 35, 20, 19, 23,
-
- 35, 35, 11, 35, 35, 35, 14, 28, 35, 24
- } ;
-
-static yyconst flex_int32_t yy_ec[256] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 4, 5, 6, 1, 1, 7, 8, 9,
- 10, 1, 1, 1, 11, 12, 12, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 1, 1, 1,
- 14, 1, 1, 1, 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,
- 1, 15, 1, 1, 16, 1, 17, 18, 19, 20,
-
- 21, 22, 23, 24, 25, 13, 13, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 13, 13, 36,
- 13, 13, 1, 37, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1
- } ;
-
-extern int zconf_flex_debug;
-int zconf_flex_debug = 0;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *zconftext;
-
-/*
- * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
- * Released under the terms of the GNU GPL v2.0.
- */
-
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#define LKC_DIRECT_LINK
-#include "lkc.h"
-
-#define START_STRSIZE 16
-
-char *text;
-static char *text_ptr;
-static int text_size, text_asize;
-
-struct buffer {
- struct buffer *parent;
- YY_BUFFER_STATE state;
-};
-
-struct buffer *current_buf;
-
-static int last_ts, first_ts;
-
-static void zconf_endhelp(void);
-static struct buffer *zconf_endfile(void);
-
-void new_string(void)
-{
- text = malloc(START_STRSIZE);
- text_asize = START_STRSIZE;
- text_ptr = text;
- text_size = 0;
- *text_ptr = 0;
-}
-
-void append_string(const char *str, int size)
-{
- int new_size = text_size + size + 1;
- if (new_size > text_asize) {
- text = realloc(text, new_size);
- text_asize = new_size;
- text_ptr = text + text_size;
- }
- memcpy(text_ptr, str, size);
- text_ptr += size;
- text_size += size;
- *text_ptr = 0;
-}
-
-void alloc_string(const char *str, int size)
-{
- text = malloc(size + 1);
- memcpy(text, str, size);
- text[size] = 0;
-}
-
-#define INITIAL 0
-#define COMMAND 1
-#define HELP 2
-#define STRING 3
-#define PARAM 4
-
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#include <unistd.h>
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int zconfwrap (void );
-#else
-extern int zconfwrap (void );
-#endif
-#endif
-
- static void yyunput (int c,char *buf_ptr );
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
-#endif
-
-#ifndef YY_NO_INPUT
-
-#ifdef __cplusplus
-static int yyinput (void );
-#else
-static int input (void );
-#endif
-
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO (void) fwrite( zconftext, zconfleng, 1, zconfout )
-#endif
-
-/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
- errno=0; \
- while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \
- { \
- if( errno != EINTR) \
- { \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- break; \
- } \
- errno=0; \
- clearerr(zconfin); \
- }\
-\
-
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* end tables serialization structures and prototypes */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int zconflex (void);
-
-#define YY_DECL int zconflex (void)
-#endif /* !YY_DECL */
-
-/* Code executed at the beginning of each rule, after zconftext and zconfleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
- YY_USER_ACTION
-
-/** The main scanner function which does all the work.
- */
-YY_DECL
-{
- register yy_state_type yy_current_state;
- register char *yy_cp, *yy_bp;
- register int yy_act;
-
- int str = 0;
- int ts, i;
-
- if ( (yy_init) )
- {
- (yy_init) = 0;
-
-#ifdef YY_USER_INIT
- YY_USER_INIT;
-#endif
-
- if ( ! (yy_start) )
- (yy_start) = 1; /* first start state */
-
- if ( ! zconfin )
- zconfin = stdin;
-
- if ( ! zconfout )
- zconfout = stdout;
-
- if ( ! YY_CURRENT_BUFFER ) {
- zconfensure_buffer_stack ();
- YY_CURRENT_BUFFER_LVALUE =
- zconf_create_buffer(zconfin,YY_BUF_SIZE );
- }
-
- zconf_load_buffer_state( );
- }
-
- while ( 1 ) /* loops until end-of-file is reached */
- {
- yy_cp = (yy_c_buf_p);
-
- /* Support of zconftext. */
- *yy_cp = (yy_hold_char);
-
- /* yy_bp points to the position in yy_ch_buf of the start of
- * the current run.
- */
- yy_bp = yy_cp;
-
- yy_current_state = (yy_start);
-yy_match:
- while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 )
- ++yy_cp;
-
- yy_current_state = -yy_current_state;
-
-yy_find_action:
- yy_act = yy_accept[yy_current_state];
-
- YY_DO_BEFORE_ACTION;
-
-do_action: /* This label is used only to access EOF actions. */
-
- switch ( yy_act )
- { /* beginning of action switch */
-case 1:
-/* rule 1 can match eol */
-YY_RULE_SETUP
-current_file->lineno++;
- YY_BREAK
-case 2:
-YY_RULE_SETUP
-
- YY_BREAK
-case 3:
-/* rule 3 can match eol */
-YY_RULE_SETUP
-current_file->lineno++; return T_EOL;
- YY_BREAK
-case 4:
-YY_RULE_SETUP
-{
- BEGIN(COMMAND);
-}
- YY_BREAK
-case 5:
-YY_RULE_SETUP
-{
- unput(zconftext[0]);
- BEGIN(COMMAND);
-}
- YY_BREAK
-
-case 6:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_MAINMENU;
- YY_BREAK
-case 7:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_MENU;
- YY_BREAK
-case 8:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_ENDMENU;
- YY_BREAK
-case 9:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_SOURCE;
- YY_BREAK
-case 10:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_CHOICE;
- YY_BREAK
-case 11:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_ENDCHOICE;
- YY_BREAK
-case 12:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_COMMENT;
- YY_BREAK
-case 13:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_CONFIG;
- YY_BREAK
-case 14:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_MENUCONFIG;
- YY_BREAK
-case 15:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_HELP;
- YY_BREAK
-case 16:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_IF;
- YY_BREAK
-case 17:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_ENDIF;
- YY_BREAK
-case 18:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_DEPENDS;
- YY_BREAK
-case 19:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_REQUIRES;
- YY_BREAK
-case 20:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_OPTIONAL;
- YY_BREAK
-case 21:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_DEFAULT;
- YY_BREAK
-case 22:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_PROMPT;
- YY_BREAK
-case 23:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_TRISTATE;
- YY_BREAK
-case 24:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_DEF_TRISTATE;
- YY_BREAK
-case 25:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_BOOLEAN;
- YY_BREAK
-case 26:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_BOOLEAN;
- YY_BREAK
-case 27:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_DEF_BOOLEAN;
- YY_BREAK
-case 28:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_DEF_BOOLEAN;
- YY_BREAK
-case 29:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_INT;
- YY_BREAK
-case 30:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_HEX;
- YY_BREAK
-case 31:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_STRING;
- YY_BREAK
-case 32:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_SELECT;
- YY_BREAK
-case 33:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_SELECT;
- YY_BREAK
-case 34:
-YY_RULE_SETUP
-BEGIN(PARAM); return T_RANGE;
- YY_BREAK
-case 35:
-YY_RULE_SETUP
-{
- alloc_string(zconftext, zconfleng);
- zconflval.string = text;
- return T_WORD;
- }
- YY_BREAK
-case 36:
-YY_RULE_SETUP
-
- YY_BREAK
-case 37:
-/* rule 37 can match eol */
-YY_RULE_SETUP
-current_file->lineno++; BEGIN(INITIAL);
- YY_BREAK
-
-case 38:
-YY_RULE_SETUP
-return T_AND;
- YY_BREAK
-case 39:
-YY_RULE_SETUP
-return T_OR;
- YY_BREAK
-case 40:
-YY_RULE_SETUP
-return T_OPEN_PAREN;
- YY_BREAK
-case 41:
-YY_RULE_SETUP
-return T_CLOSE_PAREN;
- YY_BREAK
-case 42:
-YY_RULE_SETUP
-return T_NOT;
- YY_BREAK
-case 43:
-YY_RULE_SETUP
-return T_EQUAL;
- YY_BREAK
-case 44:
-YY_RULE_SETUP
-return T_UNEQUAL;
- YY_BREAK
-case 45:
-YY_RULE_SETUP
-return T_IF;
- YY_BREAK
-case 46:
-YY_RULE_SETUP
-return T_ON;
- YY_BREAK
-case 47:
-YY_RULE_SETUP
-{
- str = zconftext[0];
- new_string();
- BEGIN(STRING);
- }
- YY_BREAK
-case 48:
-/* rule 48 can match eol */
-YY_RULE_SETUP
-BEGIN(INITIAL); current_file->lineno++; return T_EOL;
- YY_BREAK
-case 49:
-YY_RULE_SETUP
-/* ignore */
- YY_BREAK
-case 50:
-YY_RULE_SETUP
-{
- alloc_string(zconftext, zconfleng);
- zconflval.string = text;
- return T_WORD;
- }
- YY_BREAK
-case 51:
-YY_RULE_SETUP
-/* comment */
- YY_BREAK
-case 52:
-/* rule 52 can match eol */
-YY_RULE_SETUP
-current_file->lineno++;
- YY_BREAK
-case 53:
-YY_RULE_SETUP
-
- YY_BREAK
-case YY_STATE_EOF(PARAM):
-{
- BEGIN(INITIAL);
- }
- YY_BREAK
-
-case 54:
-/* rule 54 can match eol */
-*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
-(yy_c_buf_p) = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up zconftext again */
-YY_RULE_SETUP
-{
- append_string(zconftext, zconfleng);
- zconflval.string = text;
- return T_WORD_QUOTE;
- }
- YY_BREAK
-case 55:
-YY_RULE_SETUP
-{
- append_string(zconftext, zconfleng);
- }
- YY_BREAK
-case 56:
-/* rule 56 can match eol */
-*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
-(yy_c_buf_p) = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up zconftext again */
-YY_RULE_SETUP
-{
- append_string(zconftext + 1, zconfleng - 1);
- zconflval.string = text;
- return T_WORD_QUOTE;
- }
- YY_BREAK
-case 57:
-YY_RULE_SETUP
-{
- append_string(zconftext + 1, zconfleng - 1);
- }
- YY_BREAK
-case 58:
-YY_RULE_SETUP
-{
- if (str == zconftext[0]) {
- BEGIN(PARAM);
- zconflval.string = text;
- return T_WORD_QUOTE;
- } else
- append_string(zconftext, 1);
- }
- YY_BREAK
-case 59:
-/* rule 59 can match eol */
-YY_RULE_SETUP
-{
- printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
- current_file->lineno++;
- BEGIN(INITIAL);
- return T_EOL;
- }
- YY_BREAK
-case YY_STATE_EOF(STRING):
-{
- BEGIN(INITIAL);
- }
- YY_BREAK
-
-case 60:
-YY_RULE_SETUP
-{
- ts = 0;
- for (i = 0; i < zconfleng; i++) {
- if (zconftext[i] == '\t')
- ts = (ts & ~7) + 8;
- else
- ts++;
- }
- last_ts = ts;
- if (first_ts) {
- if (ts < first_ts) {
- zconf_endhelp();
- return T_HELPTEXT;
- }
- ts -= first_ts;
- while (ts > 8) {
- append_string(" ", 8);
- ts -= 8;
- }
- append_string(" ", ts);
- }
- }
- YY_BREAK
-case 61:
-/* rule 61 can match eol */
-*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
-(yy_c_buf_p) = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up zconftext again */
-YY_RULE_SETUP
-{
- current_file->lineno++;
- zconf_endhelp();
- return T_HELPTEXT;
- }
- YY_BREAK
-case 62:
-/* rule 62 can match eol */
-YY_RULE_SETUP
-{
- current_file->lineno++;
- append_string("\n", 1);
- }
- YY_BREAK
-case 63:
-YY_RULE_SETUP
-{
- append_string(zconftext, zconfleng);
- if (!first_ts)
- first_ts = last_ts;
- }
- YY_BREAK
-case YY_STATE_EOF(HELP):
-{
- zconf_endhelp();
- return T_HELPTEXT;
- }
- YY_BREAK
-
-case YY_STATE_EOF(INITIAL):
-case YY_STATE_EOF(COMMAND):
-{
- if (current_buf) {
- zconf_endfile();
- return T_EOF;
- }
- fclose(zconfin);
- yyterminate();
-}
- YY_BREAK
-case 64:
-YY_RULE_SETUP
-YY_FATAL_ERROR( "flex scanner jammed" );
- YY_BREAK
-
- case YY_END_OF_BUFFER:
- {
- /* Amount of text matched not including the EOB char. */
- int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
-
- /* Undo the effects of YY_DO_BEFORE_ACTION. */
- *yy_cp = (yy_hold_char);
- YY_RESTORE_YY_MORE_OFFSET
-
- if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
- {
- /* We're scanning a new file or input source. It's
- * possible that this happened because the user
- * just pointed zconfin at a new source and called
- * zconflex(). If so, then we have to assure
- * consistency between YY_CURRENT_BUFFER and our
- * globals. Here is the right place to do so, because
- * this is the first action (other than possibly a
- * back-up) that will match for the new input source.
- */
- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
- YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin;
- YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
- }
-
- /* Note that here we test for yy_c_buf_p "<=" to the position
- * of the first EOB in the buffer, since yy_c_buf_p will
- * already have been incremented past the NUL character
- * (since all states make transitions on EOB to the
- * end-of-buffer state). Contrast this with the test
- * in input().
- */
- if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
- { /* This was really a NUL. */
- yy_state_type yy_next_state;
-
- (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
-
- yy_current_state = yy_get_previous_state( );
-
- /* Okay, we're now positioned to make the NUL
- * transition. We couldn't have
- * yy_get_previous_state() go ahead and do it
- * for us because it doesn't know how to deal
- * with the possibility of jamming (and we don't
- * want to build jamming into it because then it
- * will run more slowly).
- */
-
- yy_next_state = yy_try_NUL_trans( yy_current_state );
-
- yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-
- if ( yy_next_state )
- {
- /* Consume the NUL. */
- yy_cp = ++(yy_c_buf_p);
- yy_current_state = yy_next_state;
- goto yy_match;
- }
-
- else
- {
- yy_cp = (yy_c_buf_p);
- goto yy_find_action;
- }
- }
-
- else switch ( yy_get_next_buffer( ) )
- {
- case EOB_ACT_END_OF_FILE:
- {
- (yy_did_buffer_switch_on_eof) = 0;
-
- if ( zconfwrap( ) )
- {
- /* Note: because we've taken care in
- * yy_get_next_buffer() to have set up
- * zconftext, we can now set up
- * yy_c_buf_p so that if some total
- * hoser (like flex itself) wants to
- * call the scanner after we return the
- * YY_NULL, it'll still work - another
- * YY_NULL will get returned.
- */
- (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
-
- yy_act = YY_STATE_EOF(YY_START);
- goto do_action;
- }
-
- else
- {
- if ( ! (yy_did_buffer_switch_on_eof) )
- YY_NEW_FILE;
- }
- break;
- }
-
- case EOB_ACT_CONTINUE_SCAN:
- (yy_c_buf_p) =
- (yytext_ptr) + yy_amount_of_matched_text;
-
- yy_current_state = yy_get_previous_state( );
-
- yy_cp = (yy_c_buf_p);
- yy_bp = (yytext_ptr) + YY_MORE_ADJ;
- goto yy_match;
-
- case EOB_ACT_LAST_MATCH:
- (yy_c_buf_p) =
- &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
-
- yy_current_state = yy_get_previous_state( );
-
- yy_cp = (yy_c_buf_p);
- yy_bp = (yytext_ptr) + YY_MORE_ADJ;
- goto yy_find_action;
- }
- break;
- }
-
- default:
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--no action found" );
- } /* end of action switch */
- } /* end of scanning one token */
-} /* end of zconflex */
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- * EOB_ACT_LAST_MATCH -
- * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- * EOB_ACT_END_OF_FILE - end of file
- */
-static int yy_get_next_buffer (void)
-{
- register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
- register char *source = (yytext_ptr);
- register int number_to_move, i;
- int ret_val;
-
- if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--end of buffer missed" );
-
- if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
- { /* Don't try to fill the buffer, so this is an EOF. */
- if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
- {
- /* We matched a single character, the EOB, so
- * treat this as a final EOF.
- */
- return EOB_ACT_END_OF_FILE;
- }
-
- else
- {
- /* We matched some text prior to the EOB, first
- * process it.
- */
- return EOB_ACT_LAST_MATCH;
- }
- }
-
- /* Try to read more data. */
-
- /* First move last chars to start of buffer. */
- number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
-
- for ( i = 0; i < number_to_move; ++i )
- *(dest++) = *(source++);
-
- if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
- /* don't do the read, it's not guaranteed to return an EOF,
- * just force an EOF
- */
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
-
- else
- {
- size_t num_to_read =
- YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
- while ( num_to_read <= 0 )
- { /* Not enough room in the buffer - grow it. */
-
- /* just a shorter name for the current buffer */
- YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
-
- int yy_c_buf_p_offset =
- (int) ((yy_c_buf_p) - b->yy_ch_buf);
-
- if ( b->yy_is_our_buffer )
- {
- int new_size = b->yy_buf_size * 2;
-
- if ( new_size <= 0 )
- b->yy_buf_size += b->yy_buf_size / 8;
- else
- b->yy_buf_size *= 2;
-
- b->yy_ch_buf = (char *)
- /* Include room in for 2 EOB chars. */
- zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
- }
- else
- /* Can't grow it, we don't own it. */
- b->yy_ch_buf = 0;
-
- if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR(
- "fatal error - scanner input buffer overflow" );
-
- (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
-
- num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
- number_to_move - 1;
-
- }
-
- if ( num_to_read > YY_READ_BUF_SIZE )
- num_to_read = YY_READ_BUF_SIZE;
-
- /* Read in more data. */
- YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
- (yy_n_chars), num_to_read );
-
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
- }
-
- if ( (yy_n_chars) == 0 )
- {
- if ( number_to_move == YY_MORE_ADJ )
- {
- ret_val = EOB_ACT_END_OF_FILE;
- zconfrestart(zconfin );
- }
-
- else
- {
- ret_val = EOB_ACT_LAST_MATCH;
- YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
- YY_BUFFER_EOF_PENDING;
- }
- }
-
- else
- ret_val = EOB_ACT_CONTINUE_SCAN;
-
- (yy_n_chars) += number_to_move;
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
-
- (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
- return ret_val;
-}
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
- static yy_state_type yy_get_previous_state (void)
-{
- register yy_state_type yy_current_state;
- register char *yy_cp;
-
- yy_current_state = (yy_start);
-
- for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
- {
- yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
- }
-
- return yy_current_state;
-}
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- * next_state = yy_try_NUL_trans( current_state );
- */
- static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
-{
- register int yy_is_jam;
-
- yy_current_state = yy_nxt[yy_current_state][1];
- yy_is_jam = (yy_current_state <= 0);
-
- return yy_is_jam ? 0 : yy_current_state;
-}
-
- static void yyunput (int c, register char * yy_bp )
-{
- register char *yy_cp;
-
- yy_cp = (yy_c_buf_p);
-
- /* undo effects of setting up zconftext */
- *yy_cp = (yy_hold_char);
-
- if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
- { /* need to shift things up to make room */
- /* +2 for EOB chars. */
- register int number_to_move = (yy_n_chars) + 2;
- register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
- YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
- register char *source =
- &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
-
- while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
- *--dest = *--source;
-
- yy_cp += (int) (dest - source);
- yy_bp += (int) (dest - source);
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-
- if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
- YY_FATAL_ERROR( "flex scanner push-back overflow" );
- }
-
- *--yy_cp = (char) c;
-
- (yytext_ptr) = yy_bp;
- (yy_hold_char) = *yy_cp;
- (yy_c_buf_p) = yy_cp;
-}
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
- static int yyinput (void)
-#else
- static int input (void)
-#endif
-
-{
- int c;
-
- *(yy_c_buf_p) = (yy_hold_char);
-
- if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
- {
- /* yy_c_buf_p now points to the character we want to return.
- * If this occurs *before* the EOB characters, then it's a
- * valid NUL; if not, then we've hit the end of the buffer.
- */
- if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
- /* This was really a NUL. */
- *(yy_c_buf_p) = '\0';
-
- else
- { /* need more input */
- int offset = (yy_c_buf_p) - (yytext_ptr);
- ++(yy_c_buf_p);
-
- switch ( yy_get_next_buffer( ) )
- {
- case EOB_ACT_LAST_MATCH:
- /* This happens because yy_g_n_b()
- * sees that we've accumulated a
- * token and flags that we need to
- * try matching the token before
- * proceeding. But for input(),
- * there's no matching to consider.
- * So convert the EOB_ACT_LAST_MATCH
- * to EOB_ACT_END_OF_FILE.
- */
-
- /* Reset buffer status. */
- zconfrestart(zconfin );
-
- /*FALLTHROUGH*/
-
- case EOB_ACT_END_OF_FILE:
- {
- if ( zconfwrap( ) )
- return EOF;
-
- if ( ! (yy_did_buffer_switch_on_eof) )
- YY_NEW_FILE;
-#ifdef __cplusplus
- return yyinput();
-#else
- return input();
-#endif
- }
-
- case EOB_ACT_CONTINUE_SCAN:
- (yy_c_buf_p) = (yytext_ptr) + offset;
- break;
- }
- }
- }
-
- c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
- *(yy_c_buf_p) = '\0'; /* preserve zconftext */
- (yy_hold_char) = *++(yy_c_buf_p);
-
- return c;
-}
-#endif /* ifndef YY_NO_INPUT */
-
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- *
- * @note This function does not reset the start condition to @c INITIAL .
- */
- void zconfrestart (FILE * input_file )
-{
-
- if ( ! YY_CURRENT_BUFFER ){
- zconfensure_buffer_stack ();
- YY_CURRENT_BUFFER_LVALUE =
- zconf_create_buffer(zconfin,YY_BUF_SIZE );
- }
-
- zconf_init_buffer(YY_CURRENT_BUFFER,input_file );
- zconf_load_buffer_state( );
-}
-
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- *
- */
- void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer )
-{
-
- /* TODO. We should be able to replace this entire function body
- * with
- * zconfpop_buffer_state();
- * zconfpush_buffer_state(new_buffer);
- */
- zconfensure_buffer_stack ();
- if ( YY_CURRENT_BUFFER == new_buffer )
- return;
-
- if ( YY_CURRENT_BUFFER )
- {
- /* Flush out information for old buffer. */
- *(yy_c_buf_p) = (yy_hold_char);
- YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
- }
-
- YY_CURRENT_BUFFER_LVALUE = new_buffer;
- zconf_load_buffer_state( );
-
- /* We don't actually know whether we did this switch during
- * EOF (zconfwrap()) processing, but the only time this flag
- * is looked at is after zconfwrap() is called, so it's safe
- * to go ahead and always set it.
- */
- (yy_did_buffer_switch_on_eof) = 1;
-}
-
-static void zconf_load_buffer_state (void)
-{
- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
- (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
- zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
- (yy_hold_char) = *(yy_c_buf_p);
-}
-
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- *
- * @return the allocated buffer state.
- */
- YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size )
-{
- YY_BUFFER_STATE b;
-
- b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
-
- b->yy_buf_size = size;
-
- /* yy_ch_buf has to be 2 characters longer than the size given because
- * we need to put in 2 end-of-buffer characters.
- */
- b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 );
- if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
-
- b->yy_is_our_buffer = 1;
-
- zconf_init_buffer(b,file );
-
- return b;
-}
-
-/** Destroy the buffer.
- * @param b a buffer created with zconf_create_buffer()
- *
- */
- void zconf_delete_buffer (YY_BUFFER_STATE b )
-{
-
- if ( ! b )
- return;
-
- if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
- YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
- if ( b->yy_is_our_buffer )
- zconffree((void *) b->yy_ch_buf );
-
- zconffree((void *) b );
-}
-
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a zconfrestart() or at EOF.
- */
- static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file )
-
-{
- int oerrno = errno;
-
- zconf_flush_buffer(b );
-
- b->yy_input_file = file;
- b->yy_fill_buffer = 1;
-
- /* If b is the current buffer, then zconf_init_buffer was _probably_
- * called from zconfrestart() or through yy_get_next_buffer.
- * In that case, we don't want to reset the lineno or column.
- */
- if (b != YY_CURRENT_BUFFER){
- b->yy_bs_lineno = 1;
- b->yy_bs_column = 0;
- }
-
- b->yy_is_interactive = 0;
-
- errno = oerrno;
-}
-
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- *
- */
- void zconf_flush_buffer (YY_BUFFER_STATE b )
-{
- if ( ! b )
- return;
-
- b->yy_n_chars = 0;
-
- /* We always need two end-of-buffer characters. The first causes
- * a transition to the end-of-buffer state. The second causes
- * a jam in that state.
- */
- b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
- b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
- b->yy_buf_pos = &b->yy_ch_buf[0];
-
- b->yy_at_bol = 1;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
- if ( b == YY_CURRENT_BUFFER )
- zconf_load_buffer_state( );
-}
-
-/** Pushes the new state onto the stack. The new state becomes
- * the current state. This function will allocate the stack
- * if necessary.
- * @param new_buffer The new state.
- *
- */
-void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer )
-{
- if (new_buffer == NULL)
- return;
-
- zconfensure_buffer_stack();
-
- /* This block is copied from zconf_switch_to_buffer. */
- if ( YY_CURRENT_BUFFER )
- {
- /* Flush out information for old buffer. */
- *(yy_c_buf_p) = (yy_hold_char);
- YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
- }
-
- /* Only push if top exists. Otherwise, replace top. */
- if (YY_CURRENT_BUFFER)
- (yy_buffer_stack_top)++;
- YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
- /* copied from zconf_switch_to_buffer. */
- zconf_load_buffer_state( );
- (yy_did_buffer_switch_on_eof) = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- * The next element becomes the new top.
- *
- */
-void zconfpop_buffer_state (void)
-{
- if (!YY_CURRENT_BUFFER)
- return;
-
- zconf_delete_buffer(YY_CURRENT_BUFFER );
- YY_CURRENT_BUFFER_LVALUE = NULL;
- if ((yy_buffer_stack_top) > 0)
- --(yy_buffer_stack_top);
-
- if (YY_CURRENT_BUFFER) {
- zconf_load_buffer_state( );
- (yy_did_buffer_switch_on_eof) = 1;
- }
-}
-
-/* Allocates the stack if it does not exist.
- * Guarantees space for at least one push.
- */
-static void zconfensure_buffer_stack (void)
-{
- int num_to_alloc;
-
- if (!(yy_buffer_stack)) {
-
- /* First allocation is just for 2 elements, since we don't know if this
- * scanner will even need a stack. We use 2 instead of 1 to avoid an
- * immediate realloc on the next call.
- */
- num_to_alloc = 1;
- (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
- (num_to_alloc * sizeof(struct yy_buffer_state*)
- );
-
- memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
- (yy_buffer_stack_max) = num_to_alloc;
- (yy_buffer_stack_top) = 0;
- return;
- }
-
- if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-
- /* Increase the buffer to prepare for a possible push. */
- int grow_size = 8 /* arbitrary grow size */;
-
- num_to_alloc = (yy_buffer_stack_max) + grow_size;
- (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc
- ((yy_buffer_stack),
- num_to_alloc * sizeof(struct yy_buffer_state*)
- );
-
- /* zero only the new slots.*/
- memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
- (yy_buffer_stack_max) = num_to_alloc;
- }
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- *
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size )
-{
- YY_BUFFER_STATE b;
-
- if ( size < 2 ||
- base[size-2] != YY_END_OF_BUFFER_CHAR ||
- base[size-1] != YY_END_OF_BUFFER_CHAR )
- /* They forgot to leave room for the EOB's. */
- return 0;
-
- b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" );
-
- b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
- b->yy_buf_pos = b->yy_ch_buf = base;
- b->yy_is_our_buffer = 0;
- b->yy_input_file = 0;
- b->yy_n_chars = b->yy_buf_size;
- b->yy_is_interactive = 0;
- b->yy_at_bol = 1;
- b->yy_fill_buffer = 0;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
- zconf_switch_to_buffer(b );
-
- return b;
-}
-
-/** Setup the input buffer state to scan a string. The next call to zconflex() will
- * scan from a @e copy of @a str.
- * @param str a NUL-terminated string to scan
- *
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- * zconf_scan_bytes() instead.
- */
-YY_BUFFER_STATE zconf_scan_string (yyconst char * str )
-{
-
- return zconf_scan_bytes(str,strlen(str) );
-}
-
-/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
- * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
- *
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE zconf_scan_bytes (yyconst char * bytes, int len )
-{
- YY_BUFFER_STATE b;
- char *buf;
- yy_size_t n;
- int i;
-
- /* Get memory for full buffer, including space for trailing EOB's. */
- n = len + 2;
- buf = (char *) zconfalloc(n );
- if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" );
-
- for ( i = 0; i < len; ++i )
- buf[i] = bytes[i];
-
- buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
-
- b = zconf_scan_buffer(buf,n );
- if ( ! b )
- YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" );
-
- /* It's okay to grow etc. this buffer, and we should throw it
- * away when we're done.
- */
- b->yy_is_our_buffer = 1;
-
- return b;
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-static void yy_fatal_error (yyconst char* msg )
-{
- (void) fprintf( stderr, "%s\n", msg );
- exit( YY_EXIT_FAILURE );
-}
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
- do \
- { \
- /* Undo effects of setting up zconftext. */ \
- int yyless_macro_arg = (n); \
- YY_LESS_LINENO(yyless_macro_arg);\
- zconftext[zconfleng] = (yy_hold_char); \
- (yy_c_buf_p) = zconftext + yyless_macro_arg; \
- (yy_hold_char) = *(yy_c_buf_p); \
- *(yy_c_buf_p) = '\0'; \
- zconfleng = yyless_macro_arg; \
- } \
- while ( 0 )
-
-/* Accessor methods (get/set functions) to struct members. */
-
-/** Get the current line number.
- *
- */
-int zconfget_lineno (void)
-{
-
- return zconflineno;
-}
-
-/** Get the input stream.
- *
- */
-FILE *zconfget_in (void)
-{
- return zconfin;
-}
-
-/** Get the output stream.
- *
- */
-FILE *zconfget_out (void)
-{
- return zconfout;
-}
-
-/** Get the length of the current token.
- *
- */
-int zconfget_leng (void)
-{
- return zconfleng;
-}
-
-/** Get the current token.
- *
- */
-
-char *zconfget_text (void)
-{
- return zconftext;
-}
-
-/** Set the current line number.
- * @param line_number
- *
- */
-void zconfset_lineno (int line_number )
-{
-
- zconflineno = line_number;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- *
- * @see zconf_switch_to_buffer
- */
-void zconfset_in (FILE * in_str )
-{
- zconfin = in_str ;
-}
-
-void zconfset_out (FILE * out_str )
-{
- zconfout = out_str ;
-}
-
-int zconfget_debug (void)
-{
- return zconf_flex_debug;
-}
-
-void zconfset_debug (int bdebug )
-{
- zconf_flex_debug = bdebug ;
-}
-
-/* zconflex_destroy is for both reentrant and non-reentrant scanners. */
-int zconflex_destroy (void)
-{
-
- /* Pop the buffer stack, destroying each element. */
- while(YY_CURRENT_BUFFER){
- zconf_delete_buffer(YY_CURRENT_BUFFER );
- YY_CURRENT_BUFFER_LVALUE = NULL;
- zconfpop_buffer_state();
- }
-
- /* Destroy the stack itself. */
- zconffree((yy_buffer_stack) );
- (yy_buffer_stack) = NULL;
-
- return 0;
-}
-
-/*
- * Internal utility routines.
- */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
-{
- register int i;
- for ( i = 0; i < n; ++i )
- s1[i] = s2[i];
-}
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s )
-{
- register int n;
- for ( n = 0; s[n]; ++n )
- ;
-
- return n;
-}
-#endif
-
-void *zconfalloc (yy_size_t size )
-{
- return (void *) malloc( size );
-}
-
-void *zconfrealloc (void * ptr, yy_size_t size )
-{
- /* The cast to (char *) in the following accommodates both
- * implementations that use char* generic pointers, and those
- * that use void* generic pointers. It works with the latter
- * because both ANSI C and C++ allow castless assignment from
- * any pointer type to void*, and deal with argument conversions
- * as though doing an assignment.
- */
- return (void *) realloc( (char *) ptr, size );
-}
-
-void zconffree (void * ptr )
-{
- free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */
-}
-
-#define YYTABLES_NAME "yytables"
-
-#undef YY_NEW_FILE
-#undef YY_FLUSH_BUFFER
-#undef yy_set_bol
-#undef yy_new_buffer
-#undef yy_set_interactive
-#undef yytext_ptr
-#undef YY_DO_BEFORE_ACTION
-
-#ifdef YY_DECL_IS_OURS
-#undef YY_DECL_IS_OURS
-#undef YY_DECL
-#endif
-
-void zconf_starthelp(void)
-{
- new_string();
- last_ts = first_ts = 0;
- BEGIN(HELP);
-}
-
-static void zconf_endhelp(void)
-{
- zconflval.string = text;
- BEGIN(INITIAL);
-}
-
-/*
- * Try to open specified file with following names:
- * ./name
- * $(srctree)/name
- * The latter is used when srctree is separate from objtree
- * when compiling the kernel.
- * Return NULL if file is not found.
- */
-FILE *zconf_fopen(const char *name)
-{
- char *env, fullname[PATH_MAX+1];
- FILE *f;
-
- f = fopen(name, "r");
- if (!f && name[0] != '/') {
- env = getenv(SRCTREE);
- if (env) {
- sprintf(fullname, "%s/%s", env, name);
- f = fopen(fullname, "r");
- }
- }
- return f;
-}
-
-void zconf_initscan(const char *name)
-{
- zconfin = zconf_fopen(name);
- if (!zconfin) {
- printf("can't find file %s\n", name);
- exit(1);
- }
-
- current_buf = malloc(sizeof(*current_buf));
- memset(current_buf, 0, sizeof(*current_buf));
-
- current_file = file_lookup(name);
- current_file->lineno = 1;
- current_file->flags = FILE_BUSY;
-}
-
-void zconf_nextfile(const char *name)
-{
- size_t i;
- int retval;
- glob_t files;
- char *filename;
- struct file *file;
- struct buffer *buf;
-
- retval = glob(name, GLOB_ERR | GLOB_MARK, NULL, &files);
- if (retval == GLOB_NOSPACE || retval == GLOB_ABORTED || retval == GLOB_NOMATCH) {
- printf("%s:%d: glob failed: %s \"%s\"\n", zconf_curname(), zconf_lineno(),
- retval == GLOB_NOSPACE ? "failed to allocate memory" :
- retval == GLOB_ABORTED ? "read error" : "no match",
- name);
- exit(1);
- }
-
- for (i = files.gl_pathc-1; i != (size_t)-1; --i) {
- filename = files.gl_pathv[i];
-
- file = file_lookup(filename);
- buf = malloc(sizeof(*buf));
- memset(buf, 0, sizeof(*buf));
- current_buf->state = YY_CURRENT_BUFFER;
- zconfin = zconf_fopen(filename);
- if (!zconfin) {
- printf("%s:%d: can't open file \"%s\"\n",
- zconf_curname(), zconf_lineno(), filename);
- exit(1);
- }
- zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
- buf->parent = current_buf;
- current_buf = buf;
-
- if (file->flags & FILE_BUSY) {
- printf("recursive scan (%s)?\n", filename);
- exit(1);
- }
- if (file->flags & FILE_SCANNED) {
- printf("file %s already scanned?\n", filename);
- exit(1);
- }
- file->flags |= FILE_BUSY;
- file->lineno = 1;
- file->parent = current_file;
- current_file = file;
- }
-}
-
-static struct buffer *zconf_endfile(void)
-{
- struct buffer *parent;
-
- current_file->flags |= FILE_SCANNED;
- current_file->flags &= ~FILE_BUSY;
- current_file = current_file->parent;
-
- parent = current_buf->parent;
- if (parent) {
- fclose(zconfin);
- zconf_delete_buffer(YY_CURRENT_BUFFER);
- zconf_switch_to_buffer(parent->state);
- }
- free(current_buf);
- current_buf = parent;
-
- return parent;
-}
-
-int zconf_lineno(void)
-{
- if (current_buf)
- return current_file->lineno - 1;
- else
- return 0;
-}
-
-char *zconf_curname(void)
-{
- if (current_buf)
- return current_file->name;
- else
- return "<none>";
-}
-
diff --git a/openwrt/package/config/lkc.h b/openwrt/package/config/lkc.h
deleted file mode 100644
index dd040f7a86..0000000000
--- a/openwrt/package/config/lkc.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
- * Released under the terms of the GNU GPL v2.0.
- */
-
-#ifndef LKC_H
-#define LKC_H
-
-#include "expr.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef LKC_DIRECT_LINK
-#define P(name,type,arg) extern type name arg
-#else
-#include "lkc_defs.h"
-#define P(name,type,arg) extern type (*name ## _p) arg
-#endif
-#include "lkc_proto.h"
-#undef P
-
-#define SRCTREE "srctree"
-
-int zconfparse(void);
-void zconfdump(FILE *out);
-
-extern int zconfdebug;
-void zconf_starthelp(void);
-FILE *zconf_fopen(const char *name);
-void zconf_initscan(const char *name);
-void zconf_nextfile(const char *name);
-int zconf_lineno(void);
-char *zconf_curname(void);
-
-/* confdata.c */
-extern const char conf_def_filename[];
-extern char conf_filename[];
-
-char *conf_get_default_confname(void);
-
-/* kconfig_load.c */
-void kconfig_load(void);
-
-/* menu.c */
-void menu_init(void);
-void menu_add_menu(void);
-void menu_end_menu(void);
-void menu_add_entry(struct symbol *sym);
-void menu_end_entry(void);
-void menu_add_dep(struct expr *dep);
-struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep);
-void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
-void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
-void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
-void menu_finalize(struct menu *parent);
-void menu_set_type(int type);
-struct file *file_lookup(const char *name);
-int file_write_dep(const char *name);
-
-extern struct menu *current_entry;
-extern struct menu *current_menu;
-
-/* symbol.c */
-void sym_init(void);
-void sym_clear_all_valid(void);
-void sym_set_changed(struct symbol *sym);
-struct symbol *sym_check_deps(struct symbol *sym);
-struct property *prop_alloc(enum prop_type type, struct symbol *sym);
-struct symbol *prop_get_symbol(struct property *prop);
-
-static inline tristate sym_get_tristate_value(struct symbol *sym)
-{
- return sym->curr.tri;
-}
-
-
-static inline struct symbol *sym_get_choice_value(struct symbol *sym)
-{
- return (struct symbol *)sym->curr.val;
-}
-
-static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval)
-{
- return sym_set_tristate_value(chval, yes);
-}
-
-static inline bool sym_is_choice(struct symbol *sym)
-{
- return sym->flags & SYMBOL_CHOICE ? true : false;
-}
-
-static inline bool sym_is_choice_value(struct symbol *sym)
-{
- return sym->flags & SYMBOL_CHOICEVAL ? true : false;
-}
-
-static inline bool sym_is_optional(struct symbol *sym)
-{
- return sym->flags & SYMBOL_OPTIONAL ? true : false;
-}
-
-static inline bool sym_has_value(struct symbol *sym)
-{
- return sym->flags & SYMBOL_NEW ? false : true;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LKC_H */
diff --git a/openwrt/package/config/lkc_proto.h b/openwrt/package/config/lkc_proto.h
deleted file mode 100644
index 97c79178ee..0000000000
--- a/openwrt/package/config/lkc_proto.h
+++ /dev/null
@@ -1,39 +0,0 @@
-
-/* confdata.c */
-P(conf_parse,void,(const char *name));
-P(conf_read,int,(const char *name));
-P(conf_write,int,(const char *name));
-
-/* menu.c */
-P(rootmenu,struct menu,);
-
-P(menu_is_visible,bool,(struct menu *menu));
-P(menu_get_prompt,const char *,(struct menu *menu));
-P(menu_get_root_menu,struct menu *,(struct menu *menu));
-P(menu_get_parent_menu,struct menu *,(struct menu *menu));
-
-/* symbol.c */
-P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]);
-P(sym_change_count,int,);
-
-P(sym_lookup,struct symbol *,(const char *name, int isconst));
-P(sym_find,struct symbol *,(const char *name));
-P(sym_type_name,const char *,(enum symbol_type type));
-P(sym_calc_value,void,(struct symbol *sym));
-P(sym_get_type,enum symbol_type,(struct symbol *sym));
-P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri));
-P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri));
-P(sym_toggle_tristate_value,tristate,(struct symbol *sym));
-P(sym_string_valid,bool,(struct symbol *sym, const char *newval));
-P(sym_string_within_range,bool,(struct symbol *sym, const char *str));
-P(sym_set_string_value,bool,(struct symbol *sym, const char *newval));
-P(sym_is_changable,bool,(struct symbol *sym));
-P(sym_get_choice_prop,struct property *,(struct symbol *sym));
-P(sym_get_default_prop,struct property *,(struct symbol *sym));
-P(sym_get_string_value,const char *,(struct symbol *sym));
-
-P(prop_get_type_name,const char *,(enum prop_type type));
-
-/* expr.c */
-P(expr_compare_type,int,(enum expr_type t1, enum expr_type t2));
-P(expr_print,void,(struct expr *e, void (*fn)(void *, const char *), void *data, int prevtoken));
diff --git a/openwrt/package/config/mconf.c b/openwrt/package/config/mconf.c
deleted file mode 100644
index 00580bd666..0000000000
--- a/openwrt/package/config/mconf.c
+++ /dev/null
@@ -1,719 +0,0 @@
-/*
- * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
- * Released under the terms of the GNU GPL v2.0.
- *
- * Introduced single menu mode (show all sub-menus in one large tree).
- * 2002-11-06 Petr Baudis <pasky@ucw.cz>
- *
- * Directly use liblxdialog library routines.
- * 2002-11-14 Petr Baudis <pasky@ucw.cz>
- */
-
-#include <sys/ioctl.h>
-#include <sys/wait.h>
-#include <sys/termios.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <limits.h>
-#include <signal.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <termios.h>
-#include <unistd.h>
-
-#include "dialog.h"
-
-#define LKC_DIRECT_LINK
-#include "lkc.h"
-
-static char menu_backtitle[128];
-static const char menu_instructions[] =
- "Arrow keys navigate the menu. "
- "<Enter> selects submenus --->. "
- "Highlighted letters are hotkeys. "
- "Pressing <Y> selectes a feature, while <N> will exclude a feature. "
- "Press <Esc><Esc> to exit, <?> for Help. "
- "Legend: [*] feature is selected [ ] feature is excluded",
-radiolist_instructions[] =
- "Use the arrow keys to navigate this window or "
- "press the hotkey of the item you wish to select "
- "followed by the <SPACE BAR>. "
- "Press <?> for additional information about this option.",
-inputbox_instructions_int[] =
- "Please enter a decimal value. "
- "Fractions will not be accepted. "
- "Use the <TAB> key to move from the input field to the buttons below it.",
-inputbox_instructions_hex[] =
- "Please enter a hexadecimal value. "
- "Use the <TAB> key to move from the input field to the buttons below it.",
-inputbox_instructions_string[] =
- "Please enter a string value. "
- "Use the <TAB> key to move from the input field to the buttons below it.",
-setmod_text[] =
- "This feature depends on another which has been configured as a module.\n"
- "As a result, this feature will be built as a module.",
-nohelp_text[] =
- "There is no help available for this option.\n",
-load_config_text[] =
- "Enter the name of the configuration file you wish to load. "
- "Accept the name shown to restore the configuration you "
- "last retrieved. Leave blank to abort.",
-load_config_help[] =
- "\n"
- "For various reasons, one may wish to keep several different Buildroot\n"
- "configurations available on a single machine.\n"
- "\n"
- "If you have saved a previous configuration in a file other than the\n"
- "Buildroot's default, entering the name of the file here will allow you\n"
- "to modify that configuration.\n"
- "\n"
- "If you are uncertain, then you have probably never used alternate\n"
- "configuration files. You should therefor leave this blank to abort.\n",
-save_config_text[] =
- "Enter a filename to which this configuration should be saved "
- "as an alternate. Leave blank to abort.",
-save_config_help[] =
- "\n"
- "For various reasons, one may wish to keep different Buildroot\n"
- "configurations available on a single machine.\n"
- "\n"
- "Entering a file name here will allow you to later retrieve, modify\n"
- "and use the current configuration as an alternate to whatever\n"
- "configuration options you have selected at that time.\n"
- "\n"
- "If you are uncertain what all this means then you should probably\n"
- "leave this blank.\n",
-top_menu_help[] =
- "\n"
- "Use the Up/Down arrow keys (cursor keys) to highlight the item\n"
- "you wish to change or submenu wish to select and press <Enter>.\n"
- "Submenus are designated by \"--->\".\n"
- "\n"
- "Shortcut: Press the option's highlighted letter (hotkey).\n"
- "\n"
- "You may also use the <PAGE UP> and <PAGE DOWN> keys to scroll\n"
- "unseen options into view.\n"
-;
-
-static char filename[PATH_MAX+1] = ".config";
-static int indent = 0;
-static struct termios ios_org;
-static int rows, cols;
-struct menu *current_menu;
-static int child_count;
-static int single_menu_mode;
-
-static struct dialog_list_item *items[16384]; /* FIXME: This ought to be dynamic. */
-static int item_no;
-
-static void conf(struct menu *menu);
-static void conf_choice(struct menu *menu);
-static void conf_string(struct menu *menu);
-static void conf_load(void);
-static void conf_save(void);
-static void show_textbox(const char *title, const char *text, int r, int c);
-static void show_helptext(const char *title, const char *text);
-static void show_help(struct menu *menu);
-static void show_readme(void);
-
-static void init_wsize(void)
-{
- struct winsize ws;
- char *env;
-
- if (ioctl(1, TIOCGWINSZ, &ws) == -1) {
- rows = 24;
- cols = 80;
- } else {
- rows = ws.ws_row;
- cols = ws.ws_col;
- if (!rows) {
- env = getenv("LINES");
- if (env)
- rows = atoi(env);
- if (!rows)
- rows = 24;
- }
- if (!cols) {
- env = getenv("COLUMNS");
- if (env)
- cols = atoi(env);
- if (!cols)
- cols = 80;
- }
- }
-
- if (rows < 19 || cols < 80) {
- fprintf(stderr, "Your display is too small to run Menuconfig!\n");
- fprintf(stderr, "It must be at least 19 lines by 80 columns.\n");
- exit(1);
- }
-
- rows -= 4;
- cols -= 5;
-}
-
-static void cinit(void)
-{
- item_no = 0;
-}
-
-static void cmake(void)
-{
- items[item_no] = malloc(sizeof(struct dialog_list_item));
- memset(items[item_no], 0, sizeof(struct dialog_list_item));
- items[item_no]->tag = malloc(32); items[item_no]->tag[0] = 0;
- items[item_no]->name = malloc(512); items[item_no]->name[0] = 0;
- items[item_no]->namelen = 0;
- item_no++;
-}
-
-static int cprint_name(const char *fmt, ...)
-{
- va_list ap;
- int res;
-
- if (!item_no)
- cmake();
- va_start(ap, fmt);
- res = vsnprintf(items[item_no - 1]->name + items[item_no - 1]->namelen,
- 512 - items[item_no - 1]->namelen, fmt, ap);
- if (res > 0)
- items[item_no - 1]->namelen += res;
- va_end(ap);
-
- return res;
-}
-
-static int cprint_tag(const char *fmt, ...)
-{
- va_list ap;
- int res;
-
- if (!item_no)
- cmake();
- va_start(ap, fmt);
- res = vsnprintf(items[item_no - 1]->tag, 32, fmt, ap);
- va_end(ap);
-
- return res;
-}
-
-static void cdone(void)
-{
- int i;
-
- for (i = 0; i < item_no; i++) {
- free(items[i]->tag);
- free(items[i]->name);
- free(items[i]);
- }
-
- item_no = 0;
-}
-
-static void build_conf(struct menu *menu)
-{
- struct symbol *sym;
- struct property *prop;
- struct menu *child;
- int type, tmp, doint = 2;
- tristate val;
- char ch;
-
- if (!menu_is_visible(menu))
- return;
-
- sym = menu->sym;
- prop = menu->prompt;
- if (!sym) {
- if (prop && menu != current_menu) {
- const char *prompt = menu_get_prompt(menu);
- switch (prop->type) {
- case P_MENU:
- child_count++;
- cmake();
- cprint_tag("m%p", menu);
-
- if (single_menu_mode) {
- cprint_name("%s%*c%s",
- menu->data ? "-->" : "++>",
- indent + 1, ' ', prompt);
- } else {
- cprint_name(" %*c%s --->", indent + 1, ' ', prompt);
- }
-
- if (single_menu_mode && menu->data)
- goto conf_childs;
- return;
- default:
- if (prompt) {
- child_count++;
- cmake();
- cprint_tag(":%p", menu);
- cprint_name("---%*c%s", indent + 1, ' ', prompt);
- }
- }
- } else
- doint = 0;
- goto conf_childs;
- }
-
- cmake();
- type = sym_get_type(sym);
- if (sym_is_choice(sym)) {
- struct symbol *def_sym = sym_get_choice_value(sym);
- struct menu *def_menu = NULL;
-
- child_count++;
- for (child = menu->list; child; child = child->next) {
- if (menu_is_visible(child) && child->sym == def_sym)
- def_menu = child;
- }
-
- val = sym_get_tristate_value(sym);
- if (sym_is_changable(sym)) {
- cprint_tag("t%p", menu);
- switch (type) {
- case S_BOOLEAN:
- cprint_name("[%c]", val == no ? ' ' : '*');
- break;
- case S_TRISTATE:
- switch (val) {
- case yes: ch = '*'; break;
- case mod: ch = 'M'; break;
- default: ch = ' '; break;
- }
- cprint_name("<%c>", ch);
- break;
- }
- } else {
- cprint_tag("%c%p", def_menu ? 't' : ':', menu);
- cprint_name(" ");
- }
-
- cprint_name("%*c%s", indent + 1, ' ', menu_get_prompt(menu));
- if (val == yes) {
- if (def_menu) {
- cprint_name(" (%s)", menu_get_prompt(def_menu));
- cprint_name(" --->");
- if (def_menu->list) {
- indent += 2;
- build_conf(def_menu);
- indent -= 2;
- }
- }
- return;
- }
- } else {
- if (menu == current_menu) {
- cprint_tag(":%p", menu);
- cprint_name("---%*c%s", indent + 1, ' ', menu_get_prompt(menu));
- goto conf_childs;
- }
-
- child_count++;
- val = sym_get_tristate_value(sym);
- if (sym_is_choice_value(sym) && val == yes) {
- cprint_tag(":%p", menu);
- cprint_name(" ");
- } else {
- switch (type) {
- case S_BOOLEAN:
- cprint_tag("t%p", menu);
- if (sym_is_changable(sym))
- cprint_name("[%c]", val == no ? ' ' : '*');
- else
- cprint_name("---");
- break;
- case S_TRISTATE:
- cprint_tag("t%p", menu);
- switch (val) {
- case yes: ch = '*'; break;
- case mod: ch = 'M'; break;
- default: ch = ' '; break;
- }
- if (sym_is_changable(sym))
- cprint_name("<%c>", ch);
- else
- cprint_name("---");
- break;
- default:
- cprint_tag("s%p", menu);
- tmp = cprint_name("(%s)", sym_get_string_value(sym));
- tmp = indent - tmp + 4;
- if (tmp < 0)
- tmp = 0;
- cprint_name("%*c%s%s", tmp, ' ', menu_get_prompt(menu),
- (sym_has_value(sym) || !sym_is_changable(sym)) ?
- "" : " (NEW)");
- goto conf_childs;
- }
- }
- cprint_name("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu),
- (sym_has_value(sym) || !sym_is_changable(sym)) ?
- "" : " (NEW)");
- if (menu->prompt->type == P_MENU) {
- cprint_name(" --->");
- return;
- }
- }
-
-conf_childs:
- indent += doint;
- for (child = menu->list; child; child = child->next)
- build_conf(child);
- indent -= doint;
-}
-
-static void conf(struct menu *menu)
-{
- struct dialog_list_item *active_item = NULL;
- struct menu *submenu;
- const char *prompt = menu_get_prompt(menu);
- struct symbol *sym;
- char active_entry[40];
- int stat, type;
-
- unlink("lxdialog.scrltmp");
- active_entry[0] = 0;
- while (1) {
- indent = 0;
- child_count = 0;
- current_menu = menu;
- cdone(); cinit();
- build_conf(menu);
- if (!child_count)
- break;
- if (menu == &rootmenu) {
- cmake(); cprint_tag(":"); cprint_name("--- ");
- cmake(); cprint_tag("L"); cprint_name("Load an Alternate Configuration File");
- cmake(); cprint_tag("S"); cprint_name("Save Configuration to an Alternate File");
- }
- dialog_clear();
- stat = dialog_menu(prompt ? prompt : "Main Menu",
- menu_instructions, rows, cols, rows - 10,
- active_entry, item_no, items);
- if (stat < 0)
- return;
-
- if (stat == 1 || stat == 255)
- break;
-
- active_item = first_sel_item(item_no, items);
- if (!active_item)
- continue;
- active_item->selected = 0;
- strncpy(active_entry, active_item->tag, sizeof(active_entry));
- active_entry[sizeof(active_entry)-1] = 0;
- type = active_entry[0];
- if (!type)
- continue;
-
- sym = NULL;
- submenu = NULL;
- if (sscanf(active_entry + 1, "%p", &submenu) == 1)
- sym = submenu->sym;
-
- switch (stat) {
- case 0:
- switch (type) {
- case 'm':
- if (single_menu_mode)
- submenu->data = (void *) (long) !submenu->data;
- else
- conf(submenu);
- break;
- case 't':
- if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)
- conf_choice(submenu);
- else if (submenu->prompt->type == P_MENU)
- conf(submenu);
- break;
- case 's':
- conf_string(submenu);
- break;
- case 'L':
- conf_load();
- break;
- case 'S':
- conf_save();
- break;
- }
- break;
- case 2:
- if (sym)
- show_help(submenu);
- else
- show_readme();
- break;
- case 3:
- if (type == 't') {
- if (sym_set_tristate_value(sym, yes))
- break;
- if (sym_set_tristate_value(sym, mod))
- show_textbox(NULL, setmod_text, 6, 74);
- }
- break;
- case 4:
- if (type == 't')
- sym_set_tristate_value(sym, no);
- break;
- case 5:
- if (type == 't')
- sym_set_tristate_value(sym, mod);
- break;
- case 6:
- if (type == 't')
- sym_toggle_tristate_value(sym);
- else if (type == 'm')
- conf(submenu);
- break;
- }
- }
-}
-
-static void show_textbox(const char *title, const char *text, int r, int c)
-{
- int fd;
-
- fd = creat(".help.tmp", 0777);
- write(fd, text, strlen(text));
- close(fd);
- while (dialog_textbox(title, ".help.tmp", r, c) < 0)
- ;
- unlink(".help.tmp");
-}
-
-static void show_helptext(const char *title, const char *text)
-{
- show_textbox(title, text, rows, cols);
-}
-
-static void show_help(struct menu *menu)
-{
- const char *help;
- char *helptext;
- struct symbol *sym = menu->sym;
-
- help = sym->help;
- if (!help)
- help = nohelp_text;
- if (sym->name) {
- helptext = malloc(strlen(sym->name) + strlen(help) + 16);
- sprintf(helptext, "%s:\n\n%s", sym->name, help);
- show_helptext(menu_get_prompt(menu), helptext);
- free(helptext);
- } else
- show_helptext(menu_get_prompt(menu), help);
-}
-
-static void show_readme(void)
-{
- show_helptext("Help", top_menu_help);
-}
-
-static void conf_choice(struct menu *menu)
-{
- const char *prompt = menu_get_prompt(menu);
- struct menu *child;
- struct symbol *active;
-
- active = sym_get_choice_value(menu->sym);
- while (1) {
- current_menu = menu;
- cdone(); cinit();
- for (child = menu->list; child; child = child->next) {
- if (!menu_is_visible(child))
- continue;
- cmake();
- cprint_tag("%p", child);
- cprint_name("%s", menu_get_prompt(child));
- if (child->sym == sym_get_choice_value(menu->sym))
- items[item_no - 1]->selected = 1; /* ON */
- else if (child->sym == active)
- items[item_no - 1]->selected = 2; /* SELECTED */
- else
- items[item_no - 1]->selected = 0; /* OFF */
- }
-
- switch (dialog_checklist(prompt ? prompt : "Main Menu",
- radiolist_instructions, 15, 70, 6,
- item_no, items, FLAG_RADIO)) {
- case 0:
- if (sscanf(first_sel_item(item_no, items)->tag, "%p", &child) != 1)
- break;
- sym_set_tristate_value(child->sym, yes);
- return;
- case 1:
- if (sscanf(first_sel_item(item_no, items)->tag, "%p", &child) == 1) {
- show_help(child);
- active = child->sym;
- } else
- show_help(menu);
- break;
- case 255:
- return;
- }
- }
-}
-
-static void conf_string(struct menu *menu)
-{
- const char *prompt = menu_get_prompt(menu);
-
- while (1) {
- char *heading;
-
- switch (sym_get_type(menu->sym)) {
- case S_INT:
- heading = (char *) inputbox_instructions_int;
- break;
- case S_HEX:
- heading = (char *) inputbox_instructions_hex;
- break;
- case S_STRING:
- heading = (char *) inputbox_instructions_string;
- break;
- default:
- heading = "Internal mconf error!";
- /* panic? */;
- }
-
- switch (dialog_inputbox(prompt ? prompt : "Main Menu",
- heading, 10, 75,
- sym_get_string_value(menu->sym))) {
- case 0:
- if (sym_set_string_value(menu->sym, dialog_input_result))
- return;
- show_textbox(NULL, "You have made an invalid entry.", 5, 43);
- break;
- case 1:
- show_help(menu);
- break;
- case 255:
- return;
- }
- }
-}
-
-static void conf_load(void)
-{
- while (1) {
- switch (dialog_inputbox(NULL, load_config_text, 11, 55,
- filename)) {
- case 0:
- if (!dialog_input_result[0])
- return;
- if (!conf_read(dialog_input_result))
- return;
- show_textbox(NULL, "File does not exist!", 5, 38);
- break;
- case 1:
- show_helptext("Load Alternate Configuration", load_config_help);
- break;
- case 255:
- return;
- }
- }
-}
-
-static void conf_save(void)
-{
- while (1) {
- switch (dialog_inputbox(NULL, save_config_text, 11, 55,
- filename)) {
- case 0:
- if (!dialog_input_result[0])
- return;
- if (!conf_write(dialog_input_result))
- return;
- show_textbox(NULL, "Can't create file! Probably a nonexistent directory.", 5, 60);
- break;
- case 1:
- show_helptext("Save Alternate Configuration", save_config_help);
- break;
- case 255:
- return;
- }
- }
-}
-
-static void conf_cleanup(void)
-{
- tcsetattr(1, TCSAFLUSH, &ios_org);
- unlink(".help.tmp");
-}
-
-static void winch_handler(int sig)
-{
- struct winsize ws;
-
- if (ioctl(1, TIOCGWINSZ, &ws) == -1) {
- rows = 24;
- cols = 80;
- } else {
- rows = ws.ws_row;
- cols = ws.ws_col;
- }
-
- if (rows < 19 || cols < 80) {
- end_dialog();
- fprintf(stderr, "Your display is too small to run Menuconfig!\n");
- fprintf(stderr, "It must be at least 19 lines by 80 columns.\n");
- exit(1);
- }
-
- rows -= 4;
- cols -= 5;
-
-}
-
-int main(int ac, char **av)
-{
- int stat;
- char *mode;
- struct symbol *sym;
-
- conf_parse(av[1]);
- conf_read(NULL);
-
- sym = sym_lookup("VERSION", 0);
- sym_calc_value(sym);
- snprintf(menu_backtitle, 128, "Buildroot v%s Configuration",
- sym_get_string_value(sym));
-
- mode = getenv("MENUCONFIG_MODE");
- if (mode) {
- if (!strcasecmp(mode, "single_menu"))
- single_menu_mode = 1;
- }
-
- tcgetattr(1, &ios_org);
- atexit(conf_cleanup);
- init_wsize();
- init_dialog();
- signal(SIGWINCH, winch_handler);
- conf(&rootmenu);
- end_dialog();
-
- /* Restart dialog to act more like when lxdialog was still separate */
- init_dialog();
- do {
- stat = dialog_yesno(NULL,
- "Do you wish to save your new Buildroot configuration?", 5, 60);
- } while (stat < 0);
- end_dialog();
-
- if (stat == 0) {
- conf_write(NULL);
- printf("\n\n"
- "*** End of Buildroot configuration.\n"
- "*** Check the top-level Makefile for additional configuration options.\n\n");
- } else
- printf("\n\nYour Buildroot configuration changes were NOT saved.\n\n");
-
- return 0;
-}
diff --git a/openwrt/package/config/menu.c b/openwrt/package/config/menu.c
deleted file mode 100644
index 6425296fc3..0000000000
--- a/openwrt/package/config/menu.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
- * Released under the terms of the GNU GPL v2.0.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#define LKC_DIRECT_LINK
-#include "lkc.h"
-
-struct menu rootmenu;
-struct menu *current_menu, *current_entry;
-static struct menu **last_entry_ptr;
-
-struct file *file_list;
-struct file *current_file;
-
-static void menu_warn(struct menu *menu, const char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
- va_end(ap);
-}
-
-static void prop_warn(struct property *prop, const char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
- va_end(ap);
-}
-
-void menu_init(void)
-{
- current_entry = current_menu = &rootmenu;
- last_entry_ptr = &rootmenu.list;
-}
-
-void menu_add_entry(struct symbol *sym)
-{
- struct menu *menu;
-
- menu = malloc(sizeof(*menu));
- memset(menu, 0, sizeof(*menu));
- menu->sym = sym;
- menu->parent = current_menu;
- menu->file = current_file;
- menu->lineno = zconf_lineno();
-
- *last_entry_ptr = menu;
- last_entry_ptr = &menu->next;
- current_entry = menu;
-}
-
-void menu_end_entry(void)
-{
-}
-
-void menu_add_menu(void)
-{
- current_menu = current_entry;
- last_entry_ptr = &current_entry->list;
-}
-
-void menu_end_menu(void)
-{
- last_entry_ptr = &current_menu->next;
- current_menu = current_menu->parent;
-}
-
-struct expr *menu_check_dep(struct expr *e)
-{
- if (!e)
- return e;
-
- switch (e->type) {
- case E_NOT:
- e->left.expr = menu_check_dep(e->left.expr);
- break;
- case E_OR:
- case E_AND:
- e->left.expr = menu_check_dep(e->left.expr);
- e->right.expr = menu_check_dep(e->right.expr);
- break;
- case E_SYMBOL:
- /* change 'm' into 'm' && MODULES */
- if (e->left.sym == &symbol_mod)
- return expr_alloc_and(e, expr_alloc_symbol(modules_sym));
- break;
- default:
- break;
- }
- return e;
-}
-
-void menu_add_dep(struct expr *dep)
-{
- current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep));
-}
-
-void menu_set_type(int type)
-{
- struct symbol *sym = current_entry->sym;
-
- if (sym->type == type)
- return;
- if (sym->type == S_UNKNOWN) {
- sym->type = type;
- return;
- }
- menu_warn(current_entry, "type of '%s' redefined from '%s' to '%s'\n",
- sym->name ? sym->name : "<choice>",
- sym_type_name(sym->type), sym_type_name(type));
-}
-
-struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep)
-{
- struct property *prop = prop_alloc(type, current_entry->sym);
-
- prop->menu = current_entry;
- prop->text = prompt;
- prop->expr = expr;
- prop->visible.expr = menu_check_dep(dep);
-
- if (prompt) {
- if (current_entry->prompt)
- menu_warn(current_entry, "prompt redefined\n");
- current_entry->prompt = prop;
- }
-
- return prop;
-}
-
-void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep)
-{
- menu_add_prop(type, prompt, NULL, dep);
-}
-
-void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep)
-{
- menu_add_prop(type, NULL, expr, dep);
-}
-
-void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)
-{
- menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep);
-}
-
-void sym_check_prop(struct symbol *sym)
-{
- struct property *prop;
- struct symbol *sym2;
- for (prop = sym->prop; prop; prop = prop->next) {
- switch (prop->type) {
- case P_DEFAULT:
- if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) &&
- prop->expr->type != E_SYMBOL)
- prop_warn(prop,
- "default for config symbol '%'"
- " must be a single symbol", sym->name);
- break;
- case P_SELECT:
- sym2 = prop_get_symbol(prop);
- if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE)
- prop_warn(prop,
- "config symbol '%s' uses select, but is "
- "not boolean or tristate", sym->name);
- else if (sym2->type == S_UNKNOWN)
- prop_warn(prop,
- "'select' used by config symbol '%s' "
- "refer to undefined symbol '%s'",
- sym->name, sym2->name);
- else if (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE)
- prop_warn(prop,
- "'%s' has wrong type. 'select' only "
- "accept arguments of boolean and "
- "tristate type", sym2->name);
- break;
- case P_RANGE:
- if (sym->type != S_INT && sym->type != S_HEX)
- prop_warn(prop, "range is only allowed "
- "for int or hex symbols");
- if (!sym_string_valid(sym, prop->expr->left.sym->name) ||
- !sym_string_valid(sym, prop->expr->right.sym->name))
- prop_warn(prop, "range is invalid");
- break;
- default:
- ;
- }
- }
-}
-
-void menu_finalize(struct menu *parent)
-{
- struct menu *menu, *last_menu;
- struct symbol *sym;
- struct property *prop;
- struct expr *parentdep, *basedep, *dep, *dep2, **ep;
-
- sym = parent->sym;
- if (parent->list) {
- if (sym && sym_is_choice(sym)) {
- /* find the first choice value and find out choice type */
- for (menu = parent->list; menu; menu = menu->next) {
- if (menu->sym) {
- current_entry = parent;
- menu_set_type(menu->sym->type);
- current_entry = menu;
- menu_set_type(sym->type);
- break;
- }
- }
- parentdep = expr_alloc_symbol(sym);
- } else if (parent->prompt)
- parentdep = parent->prompt->visible.expr;
- else
- parentdep = parent->dep;
-
- for (menu = parent->list; menu; menu = menu->next) {
- basedep = expr_transform(menu->dep);
- basedep = expr_alloc_and(expr_copy(parentdep), basedep);
- basedep = expr_eliminate_dups(basedep);
- menu->dep = basedep;
- if (menu->sym)
- prop = menu->sym->prop;
- else
- prop = menu->prompt;
- for (; prop; prop = prop->next) {
- if (prop->menu != menu)
- continue;
- dep = expr_transform(prop->visible.expr);
- dep = expr_alloc_and(expr_copy(basedep), dep);
- dep = expr_eliminate_dups(dep);
- if (menu->sym && menu->sym->type != S_TRISTATE)
- dep = expr_trans_bool(dep);
- prop->visible.expr = dep;
- if (prop->type == P_SELECT) {
- struct symbol *es = prop_get_symbol(prop);
- es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr,
- expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
- }
- }
- }
- for (menu = parent->list; menu; menu = menu->next)
- menu_finalize(menu);
- } else if (sym) {
- basedep = parent->prompt ? parent->prompt->visible.expr : NULL;
- basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no);
- basedep = expr_eliminate_dups(expr_transform(basedep));
- last_menu = NULL;
- for (menu = parent->next; menu; menu = menu->next) {
- dep = menu->prompt ? menu->prompt->visible.expr : menu->dep;
- if (!expr_contains_symbol(dep, sym))
- break;
- if (expr_depends_symbol(dep, sym))
- goto next;
- dep = expr_trans_compare(dep, E_UNEQUAL, &symbol_no);
- dep = expr_eliminate_dups(expr_transform(dep));
- dep2 = expr_copy(basedep);
- expr_eliminate_eq(&dep, &dep2);
- expr_free(dep);
- if (!expr_is_yes(dep2)) {
- expr_free(dep2);
- break;
- }
- expr_free(dep2);
- next:
- menu_finalize(menu);
- menu->parent = parent;
- last_menu = menu;
- }
- if (last_menu) {
- parent->list = parent->next;
- parent->next = last_menu->next;
- last_menu->next = NULL;
- }
- }
- for (menu = parent->list; menu; menu = menu->next) {
- if (sym && sym_is_choice(sym) && menu->sym) {
- menu->sym->flags |= SYMBOL_CHOICEVAL;
- if (!menu->prompt)
- menu_warn(menu, "choice value must have a prompt");
- for (prop = menu->sym->prop; prop; prop = prop->next) {
- if (prop->type == P_PROMPT && prop->menu != menu) {
- prop_warn(prop, "choice values "
- "currently only support a "
- "single prompt");
- }
- if (prop->type == P_DEFAULT)
- prop_warn(prop, "defaults for choice "
- "values not supported");
- }
- current_entry = menu;
- menu_set_type(sym->type);
- menu_add_symbol(P_CHOICE, sym, NULL);
- prop = sym_get_choice_prop(sym);
- for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr)
- ;
- *ep = expr_alloc_one(E_CHOICE, NULL);
- (*ep)->right.sym = menu->sym;
- }
- if (menu->list && (!menu->prompt || !menu->prompt->text)) {
- for (last_menu = menu->list; ; last_menu = last_menu->next) {
- last_menu->parent = parent;
- if (!last_menu->next)
- break;
- }
- last_menu->next = menu->next;
- menu->next = menu->list;
- menu->list = NULL;
- }
- }
-
- if (sym && !(sym->flags & SYMBOL_WARNED)) {
- if (sym->type == S_UNKNOWN)
- menu_warn(parent, "config symbol defined "
- "without type\n");
-
- if (sym_is_choice(sym) && !parent->prompt)
- menu_warn(parent, "choice must have a prompt\n");
-
- /* Check properties connected to this symbol */
- sym_check_prop(sym);
- sym->flags |= SYMBOL_WARNED;
- }
-
- if (sym && !sym_is_optional(sym) && parent->prompt) {
- sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr,
- expr_alloc_and(parent->prompt->visible.expr,
- expr_alloc_symbol(&symbol_mod)));
- }
-}
-
-bool menu_is_visible(struct menu *menu)
-{
- struct menu *child;
- struct symbol *sym;
- tristate visible;
-
- if (!menu->prompt)
- return false;
- sym = menu->sym;
- if (sym) {
- sym_calc_value(sym);
- visible = menu->prompt->visible.tri;
- } else
- visible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr);
-
- if (visible != no)
- return true;
- if (!sym || sym_get_tristate_value(menu->sym) == no)
- return false;
-
- for (child = menu->list; child; child = child->next)
- if (menu_is_visible(child))
- return true;
- return false;
-}
-
-const char *menu_get_prompt(struct menu *menu)
-{
- if (menu->prompt)
- return menu->prompt->text;
- else if (menu->sym)
- return menu->sym->name;
- return NULL;
-}
-
-struct menu *menu_get_root_menu(struct menu *menu)
-{
- return &rootmenu;
-}
-
-struct menu *menu_get_parent_menu(struct menu *menu)
-{
- enum prop_type type;
-
- for (; menu != &rootmenu; menu = menu->parent) {
- type = menu->prompt ? menu->prompt->type : 0;
- if (type == P_MENU)
- break;
- }
- return menu;
-}
-
-struct file *file_lookup(const char *name)
-{
- struct file *file;
-
- for (file = file_list; file; file = file->next) {
- if (!strcmp(name, file->name))
- return file;
- }
-
- file = malloc(sizeof(*file));
- memset(file, 0, sizeof(*file));
- file->name = strdup(name);
- file->next = file_list;
- file_list = file;
- return file;
-}
-
-int file_write_dep(const char *name)
-{
- struct file *file;
- FILE *out;
-
- if (!name)
- name = ".config.cmd";
- out = fopen(".config.tmp", "w");
- if (!out)
- return 1;
- fprintf(out, "deps_config := \\\n");
- for (file = file_list; file; file = file->next) {
- if (file->next)
- fprintf(out, "\t%s \\\n", file->name);
- else
- fprintf(out, "\t%s\n", file->name);
- }
- fprintf(out, "\n.config include/config.h: $(deps_config)\n\n$(deps_config):\n");
- fclose(out);
- rename(".config.tmp", name);
- return 0;
-}
-
diff --git a/openwrt/package/config/menubox.c b/openwrt/package/config/menubox.c
deleted file mode 100644
index 431f09fc99..0000000000
--- a/openwrt/package/config/menubox.c
+++ /dev/null
@@ -1,436 +0,0 @@
-/*
- * menubox.c -- implements the menu box
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.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.
- */
-
-/*
- * Changes by Clifford Wolf (god@clifford.at)
- *
- * [ 1998-06-13 ]
- *
- * *) A bugfix for the Page-Down problem
- *
- * *) Formerly when I used Page Down and Page Up, the cursor would be set
- * to the first position in the menu box. Now lxdialog is a bit
- * smarter and works more like other menu systems (just have a look at
- * it).
- *
- * *) Formerly if I selected something my scrolling would be broken because
- * lxdialog is re-invoked by the Menuconfig shell script, can't
- * remember the last scrolling position, and just sets it so that the
- * cursor is at the bottom of the box. Now it writes the temporary file
- * lxdialog.scrltmp which contains this information. The file is
- * deleted by lxdialog if the user leaves a submenu or enters a new
- * one, but it would be nice if Menuconfig could make another "rm -f"
- * just to be sure. Just try it out - you will recognise a difference!
- *
- * [ 1998-06-14 ]
- *
- * *) Now lxdialog is crash-safe against broken "lxdialog.scrltmp" files
- * and menus change their size on the fly.
- *
- * *) If for some reason the last scrolling position is not saved by
- * lxdialog, it sets the scrolling so that the selected item is in the
- * middle of the menu box, not at the bottom.
- *
- * 02 January 1999, Michael Elizabeth Chastain (mec@shout.net)
- * Reset 'scroll' to 0 if the value from lxdialog.scrltmp is bogus.
- * This fixes a bug in Menuconfig where using ' ' to descend into menus
- * would leave mis-synchronized lxdialog.scrltmp files lying around,
- * fscanf would read in 'scroll', and eventually that value would get used.
- */
-
-#include "dialog.h"
-
-static int menu_width, item_x;
-
-/*
- * Print menu item
- */
-static void
-print_item (WINDOW * win, const char *item, int choice, int selected, int hotkey)
-{
- int j;
- char menu_item[menu_width+1];
-
- strncpy(menu_item, item, menu_width);
- menu_item[menu_width] = 0;
- j = first_alpha(menu_item, "YyNnMm");
-
- /* Clear 'residue' of last item */
- wattrset (win, menubox_attr);
- wmove (win, choice, 0);
-#if OLD_NCURSES
- {
- int i;
- for (i = 0; i < menu_width; i++)
- waddch (win, ' ');
- }
-#else
- wclrtoeol(win);
-#endif
- wattrset (win, selected ? item_selected_attr : item_attr);
- mvwaddstr (win, choice, item_x, menu_item);
- if (hotkey) {
- wattrset (win, selected ? tag_key_selected_attr : tag_key_attr);
- mvwaddch(win, choice, item_x+j, menu_item[j]);
- }
- if (selected) {
- wmove (win, choice, item_x+1);
- wrefresh (win);
- }
-}
-
-/*
- * Print the scroll indicators.
- */
-static void
-print_arrows (WINDOW * win, int item_no, int scroll,
- int y, int x, int height)
-{
- int cur_y, cur_x;
-
- getyx(win, cur_y, cur_x);
-
- wmove(win, y, x);
-
- if (scroll > 0) {
- wattrset (win, uarrow_attr);
- waddch (win, ACS_UARROW);
- waddstr (win, "(-)");
- }
- else {
- wattrset (win, menubox_attr);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- }
-
- y = y + height + 1;
- wmove(win, y, x);
-
- if ((height < item_no) && (scroll + height < item_no)) {
- wattrset (win, darrow_attr);
- waddch (win, ACS_DARROW);
- waddstr (win, "(+)");
- }
- else {
- wattrset (win, menubox_border_attr);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- waddch (win, ACS_HLINE);
- }
-
- wmove(win, cur_y, cur_x);
-}
-
-/*
- * Display the termination buttons.
- */
-static void
-print_buttons (WINDOW *win, int height, int width, int selected)
-{
- int x = width / 2 - 16;
- int y = height - 2;
-
- print_button (win, "Select", y, x, selected == 0);
- print_button (win, " Exit ", y, x + 12, selected == 1);
- print_button (win, " Help ", y, x + 24, selected == 2);
-
- wmove(win, y, x+1+12*selected);
- wrefresh (win);
-}
-
-/*
- * Display a menu for choosing among a number of options
- */
-int
-dialog_menu (const char *title, const char *prompt, int height, int width,
- int menu_height, const char *current, int item_no,
- struct dialog_list_item ** items)
-{
- int i, j, x, y, box_x, box_y;
- int key = 0, button = 0, scroll = 0, choice = 0, first_item = 0, max_choice;
- WINDOW *dialog, *menu;
- FILE *f;
-
- max_choice = MIN (menu_height, item_no);
-
- /* center dialog box on screen */
- x = (COLS - width) / 2;
- y = (LINES - height) / 2;
-
- draw_shadow (stdscr, y, x, height, width);
-
- dialog = newwin (height, width, y, x);
- keypad (dialog, TRUE);
-
- draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
- wattrset (dialog, border_attr);
- mvwaddch (dialog, height - 3, 0, ACS_LTEE);
- for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
- wattrset (dialog, dialog_attr);
- wbkgdset (dialog, dialog_attr & A_COLOR);
- waddch (dialog, ACS_RTEE);
-
- if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
- }
-
- if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
- }
-
- wattrset (dialog, dialog_attr);
- print_autowrap (dialog, prompt, width - 2, 1, 3);
-
- menu_width = width - 6;
- box_y = height - menu_height - 5;
- box_x = (width - menu_width) / 2 - 1;
-
- /* create new window for the menu */
- menu = subwin (dialog, menu_height, menu_width,
- y + box_y + 1, x + box_x + 1);
- keypad (menu, TRUE);
-
- /* draw a box around the menu items */
- draw_box (dialog, box_y, box_x, menu_height + 2, menu_width + 2,
- menubox_border_attr, menubox_attr);
-
- /*
- * Find length of longest item in order to center menu.
- * Set 'choice' to default item.
- */
- item_x = 0;
- for (i = 0; i < item_no; i++) {
- item_x = MAX (item_x, MIN(menu_width, strlen (items[i]->name) + 2));
- if (strcmp(current, items[i]->tag) == 0) choice = i;
- }
-
- item_x = (menu_width - item_x) / 2;
-
- /* get the scroll info from the temp file */
- if ( (f=fopen("lxdialog.scrltmp","r")) != NULL ) {
- if ( (fscanf(f,"%d\n",&scroll) == 1) && (scroll <= choice) &&
- (scroll+max_choice > choice) && (scroll >= 0) &&
- (scroll+max_choice <= item_no) ) {
- first_item = scroll;
- choice = choice - scroll;
- fclose(f);
- } else {
- scroll=0;
- remove("lxdialog.scrltmp");
- fclose(f);
- f=NULL;
- }
- }
- if ( (choice >= max_choice) || (f==NULL && choice >= max_choice/2) ) {
- if (choice >= item_no-max_choice/2)
- scroll = first_item = item_no-max_choice;
- else
- scroll = first_item = choice - max_choice/2;
- choice = choice - scroll;
- }
-
- /* Print the menu */
- for (i=0; i < max_choice; i++) {
- print_item (menu, items[first_item + i]->name, i, i == choice,
- (items[first_item + i]->tag[0] != ':'));
- }
-
- wnoutrefresh (menu);
-
- print_arrows(dialog, item_no, scroll,
- box_y, box_x+item_x+1, menu_height);
-
- print_buttons (dialog, height, width, 0);
- wmove (menu, choice, item_x+1);
- wrefresh (menu);
-
- while (key != ESC) {
- key = wgetch(menu);
-
- if (key < 256 && isalpha(key)) key = tolower(key);
-
- if (strchr("ynm", key))
- i = max_choice;
- else {
- for (i = choice+1; i < max_choice; i++) {
- j = first_alpha(items[scroll + i]->name, "YyNnMm>");
- if (key == tolower(items[scroll + i]->name[j]))
- break;
- }
- if (i == max_choice)
- for (i = 0; i < max_choice; i++) {
- j = first_alpha(items[scroll + i]->name, "YyNnMm>");
- if (key == tolower(items[scroll + i]->name[j]))
- break;
- }
- }
-
- if (i < max_choice ||
- key == KEY_UP || key == KEY_DOWN ||
- key == '-' || key == '+' ||
- key == KEY_PPAGE || key == KEY_NPAGE) {
-
- print_item (menu, items[scroll + choice]->name, choice, FALSE,
- (items[scroll + choice]->tag[0] != ':'));
-
- if (key == KEY_UP || key == '-') {
- if (choice < 2 && scroll) {
- /* Scroll menu down */
- scrollok (menu, TRUE);
- wscrl (menu, -1);
- scrollok (menu, FALSE);
-
- scroll--;
-
- print_item (menu, items[scroll]->name, 0, FALSE,
- (items[scroll]->tag[0] != ':'));
- } else
- choice = MAX(choice - 1, 0);
-
- } else if (key == KEY_DOWN || key == '+') {
-
- print_item (menu, items[scroll + choice]->name, choice, FALSE,
- (items[scroll + choice]->tag[0] != ':'));
-
- if ((choice > max_choice-3) &&
- (scroll + max_choice < item_no)
- ) {
- /* Scroll menu up */
- scrollok (menu, TRUE);
- scroll (menu);
- scrollok (menu, FALSE);
-
- scroll++;
-
- print_item (menu, items[scroll + max_choice - 1]->name,
- max_choice-1, FALSE,
- (items[scroll + max_choice - 1]->tag[0] != ':'));
- } else
- choice = MIN(choice+1, max_choice-1);
-
- } else if (key == KEY_PPAGE) {
- scrollok (menu, TRUE);
- for (i=0; (i < max_choice); i++) {
- if (scroll > 0) {
- wscrl (menu, -1);
- scroll--;
- print_item (menu, items[scroll]->name, 0, FALSE,
- (items[scroll]->tag[0] != ':'));
- } else {
- if (choice > 0)
- choice--;
- }
- }
- scrollok (menu, FALSE);
-
- } else if (key == KEY_NPAGE) {
- for (i=0; (i < max_choice); i++) {
- if (scroll+max_choice < item_no) {
- scrollok (menu, TRUE);
- scroll(menu);
- scrollok (menu, FALSE);
- scroll++;
- print_item (menu, items[scroll + max_choice - 1]->name,
- max_choice-1, FALSE,
- (items[scroll + max_choice - 1]->tag[0] != ':'));
- } else {
- if (choice+1 < max_choice)
- choice++;
- }
- }
-
- } else
- choice = i;
-
- print_item (menu, items[scroll + choice]->name, choice, TRUE,
- (items[scroll + choice]->tag[0] != ':'));
-
- print_arrows(dialog, item_no, scroll,
- box_y, box_x+item_x+1, menu_height);
-
- wnoutrefresh (dialog);
- wrefresh (menu);
-
- continue; /* wait for another key press */
- }
-
- switch (key) {
- case KEY_LEFT:
- case TAB:
- case KEY_RIGHT:
- button = ((key == KEY_LEFT ? --button : ++button) < 0)
- ? 2 : (button > 2 ? 0 : button);
-
- print_buttons(dialog, height, width, button);
- wrefresh (menu);
- break;
- case ' ':
- case 's':
- case 'y':
- case 'n':
- case 'm':
- /* save scroll info */
- if ( (f=fopen("lxdialog.scrltmp","w")) != NULL ) {
- fprintf(f,"%d\n",scroll);
- fclose(f);
- }
- delwin (dialog);
- items[scroll + choice]->selected = 1;
- switch (key) {
- case 's': return 3;
- case 'y': return 3;
- case 'n': return 4;
- case 'm': return 5;
- case ' ': return 6;
- }
- return 0;
- case 'h':
- case '?':
- button = 2;
- case '\n':
- delwin (dialog);
- items[scroll + choice]->selected = 1;
-
- remove("lxdialog.scrltmp");
- return button;
- case 'e':
- case 'x':
- key = ESC;
- case ESC:
- break;
- }
- }
-
- delwin (dialog);
- remove("lxdialog.scrltmp");
- return -1; /* ESC pressed */
-}
diff --git a/openwrt/package/config/msgbox.c b/openwrt/package/config/msgbox.c
deleted file mode 100644
index 93692e1fbc..0000000000
--- a/openwrt/package/config/msgbox.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * msgbox.c -- implements the message box and info box
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.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.
- */
-
-#include "dialog.h"
-
-/*
- * Display a message box. Program will pause and display an "OK" button
- * if the parameter 'pause' is non-zero.
- */
-int
-dialog_msgbox (const char *title, const char *prompt, int height, int width,
- int pause)
-{
- int i, x, y, key = 0;
- WINDOW *dialog;
-
- /* center dialog box on screen */
- x = (COLS - width) / 2;
- y = (LINES - height) / 2;
-
- draw_shadow (stdscr, y, x, height, width);
-
- dialog = newwin (height, width, y, x);
- keypad (dialog, TRUE);
-
- draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
-
- if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
- }
-
- if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
- }
- wattrset (dialog, dialog_attr);
- print_autowrap (dialog, prompt, width - 2, 1, 2);
-
- if (pause) {
- wattrset (dialog, border_attr);
- mvwaddch (dialog, height - 3, 0, ACS_LTEE);
- for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
- wattrset (dialog, dialog_attr);
- waddch (dialog, ACS_RTEE);
-
- print_button (dialog, " Ok ",
- height - 2, width / 2 - 4, TRUE);
-
- wrefresh (dialog);
- while (key != ESC && key != '\n' && key != ' ' &&
- key != 'O' && key != 'o' && key != 'X' && key != 'x')
- key = wgetch (dialog);
- } else {
- key = '\n';
- wrefresh (dialog);
- }
-
- delwin (dialog);
- return key == ESC ? -1 : 0;
-}
diff --git a/openwrt/package/config/symbol.c b/openwrt/package/config/symbol.c
deleted file mode 100644
index a9fae9c13a..0000000000
--- a/openwrt/package/config/symbol.c
+++ /dev/null
@@ -1,771 +0,0 @@
-/*
- * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
- * Released under the terms of the GNU GPL v2.0.
- */
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/utsname.h>
-
-#define LKC_DIRECT_LINK
-#include "lkc.h"
-
-struct symbol symbol_yes = {
- .name = "y",
- .curr = { "y", yes },
- .flags = SYMBOL_YES|SYMBOL_VALID,
-}, symbol_mod = {
- .name = "m",
- .curr = { "m", mod },
- .flags = SYMBOL_MOD|SYMBOL_VALID,
-}, symbol_no = {
- .name = "n",
- .curr = { "n", no },
- .flags = SYMBOL_NO|SYMBOL_VALID,
-}, symbol_empty = {
- .name = "",
- .curr = { "", no },
- .flags = SYMBOL_VALID,
-};
-
-int sym_change_count;
-struct symbol *modules_sym;
-tristate modules_val;
-
-void sym_add_default(struct symbol *sym, const char *def)
-{
- struct property *prop = prop_alloc(P_DEFAULT, sym);
-
- prop->expr = expr_alloc_symbol(sym_lookup(def, 1));
-}
-
-void sym_init(void)
-{
- struct symbol *sym;
- char *p;
- static bool inited = false;
-
- if (inited)
- return;
- inited = true;
-
- sym = sym_lookup("VERSION", 0);
- sym->type = S_STRING;
- sym->flags |= SYMBOL_AUTO;
- p = getenv("VERSION");
- if (p)
- sym_add_default(sym, p);
-
- sym = sym_lookup("TARGET_ARCH", 0);
- sym->type = S_STRING;
- sym->flags |= SYMBOL_AUTO;
- p = getenv("TARGET_ARCH");
- if (p)
- sym_add_default(sym, p);
-
-}
-
-enum symbol_type sym_get_type(struct symbol *sym)
-{
- enum symbol_type type = sym->type;
-
- if (type == S_TRISTATE) {
- if (sym_is_choice_value(sym) && sym->visible == yes)
- type = S_BOOLEAN;
- else if (modules_val == no)
- type = S_BOOLEAN;
- }
- return type;
-}
-
-const char *sym_type_name(enum symbol_type type)
-{
- switch (type) {
- case S_BOOLEAN:
- return "boolean";
- case S_TRISTATE:
- return "tristate";
- case S_INT:
- return "integer";
- case S_HEX:
- return "hex";
- case S_STRING:
- return "string";
- case S_UNKNOWN:
- return "unknown";
- case S_OTHER:
- break;
- }
- return "???";
-}
-
-struct property *sym_get_choice_prop(struct symbol *sym)
-{
- struct property *prop;
-
- for_all_choices(sym, prop)
- return prop;
- return NULL;
-}
-
-struct property *sym_get_default_prop(struct symbol *sym)
-{
- struct property *prop;
-
- for_all_defaults(sym, prop) {
- prop->visible.tri = expr_calc_value(prop->visible.expr);
- if (prop->visible.tri != no)
- return prop;
- }
- return NULL;
-}
-
-struct property *sym_get_range_prop(struct symbol *sym)
-{
- struct property *prop;
-
- for_all_properties(sym, prop, P_RANGE) {
- prop->visible.tri = expr_calc_value(prop->visible.expr);
- if (prop->visible.tri != no)
- return prop;
- }
- return NULL;
-}
-
-static void sym_calc_visibility(struct symbol *sym)
-{
- struct property *prop;
- tristate tri;
-
- /* any prompt visible? */
- tri = no;
- for_all_prompts(sym, prop) {
- prop->visible.tri = expr_calc_value(prop->visible.expr);
- tri = E_OR(tri, prop->visible.tri);
- }
- if (tri == mod && (sym->type != S_TRISTATE || modules_val == no))
- tri = yes;
- if (sym->visible != tri) {
- sym->visible = tri;
- sym_set_changed(sym);
- }
- if (sym_is_choice_value(sym))
- return;
- tri = no;
- if (sym->rev_dep.expr)
- tri = expr_calc_value(sym->rev_dep.expr);
- if (tri == mod && sym_get_type(sym) == S_BOOLEAN)
- tri = yes;
- if (sym->rev_dep.tri != tri) {
- sym->rev_dep.tri = tri;
- sym_set_changed(sym);
- }
-}
-
-static struct symbol *sym_calc_choice(struct symbol *sym)
-{
- struct symbol *def_sym;
- struct property *prop;
- struct expr *e;
-
- /* is the user choice visible? */
- def_sym = sym->user.val;
- if (def_sym) {
- sym_calc_visibility(def_sym);
- if (def_sym->visible != no)
- return def_sym;
- }
-
- /* any of the defaults visible? */
- for_all_defaults(sym, prop) {
- prop->visible.tri = expr_calc_value(prop->visible.expr);
- if (prop->visible.tri == no)
- continue;
- def_sym = prop_get_symbol(prop);
- sym_calc_visibility(def_sym);
- if (def_sym->visible != no)
- return def_sym;
- }
-
- /* just get the first visible value */
- prop = sym_get_choice_prop(sym);
- for (e = prop->expr; e; e = e->left.expr) {
- def_sym = e->right.sym;
- sym_calc_visibility(def_sym);
- if (def_sym->visible != no)
- return def_sym;
- }
-
- /* no choice? reset tristate value */
- sym->curr.tri = no;
- return NULL;
-}
-
-void sym_calc_value(struct symbol *sym)
-{
- struct symbol_value newval, oldval;
- struct property *prop;
- struct expr *e;
-
- if (!sym)
- return;
-
- if (sym->flags & SYMBOL_VALID)
- return;
- sym->flags |= SYMBOL_VALID;
-
- oldval = sym->curr;
-
- switch (sym->type) {
- case S_INT:
- case S_HEX:
- case S_STRING:
- newval = symbol_empty.curr;
- break;
- case S_BOOLEAN:
- case S_TRISTATE:
- newval = symbol_no.curr;
- break;
- default:
- sym->curr.val = sym->name;
- sym->curr.tri = no;
- return;
- }
- if (!sym_is_choice_value(sym))
- sym->flags &= ~SYMBOL_WRITE;
-
- sym_calc_visibility(sym);
-
- /* set default if recursively called */
- sym->curr = newval;
-
- switch (sym_get_type(sym)) {
- case S_BOOLEAN:
- case S_TRISTATE:
- if (sym_is_choice_value(sym) && sym->visible == yes) {
- prop = sym_get_choice_prop(sym);
- newval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no;
- } else if (E_OR(sym->visible, sym->rev_dep.tri) != no) {
- sym->flags |= SYMBOL_WRITE;
- if (sym_has_value(sym))
- newval.tri = sym->user.tri;
- else if (!sym_is_choice(sym)) {
- prop = sym_get_default_prop(sym);
- if (prop)
- newval.tri = expr_calc_value(prop->expr);
- }
- newval.tri = E_OR(E_AND(newval.tri, sym->visible), sym->rev_dep.tri);
- } else if (!sym_is_choice(sym)) {
- prop = sym_get_default_prop(sym);
- if (prop) {
- sym->flags |= SYMBOL_WRITE;
- newval.tri = expr_calc_value(prop->expr);
- }
- }
- if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN)
- newval.tri = yes;
- break;
- case S_STRING:
- case S_HEX:
- case S_INT:
- if (sym->visible != no) {
- sym->flags |= SYMBOL_WRITE;
- if (sym_has_value(sym)) {
- newval.val = sym->user.val;
- break;
- }
- }
- prop = sym_get_default_prop(sym);
- if (prop) {
- struct symbol *ds = prop_get_symbol(prop);
- if (ds) {
- sym->flags |= SYMBOL_WRITE;
- sym_calc_value(ds);
- newval.val = ds->curr.val;
- }
- }
- break;
- default:
- ;
- }
-
- sym->curr = newval;
- if (sym_is_choice(sym) && newval.tri == yes)
- sym->curr.val = sym_calc_choice(sym);
-
- if (memcmp(&oldval, &sym->curr, sizeof(oldval)))
- sym_set_changed(sym);
- if (modules_sym == sym)
- modules_val = modules_sym->curr.tri;
-
- if (sym_is_choice(sym)) {
- int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE);
- prop = sym_get_choice_prop(sym);
- for (e = prop->expr; e; e = e->left.expr) {
- e->right.sym->flags |= flags;
- if (flags & SYMBOL_CHANGED)
- sym_set_changed(e->right.sym);
- }
- }
-}
-
-void sym_clear_all_valid(void)
-{
- struct symbol *sym;
- int i;
-
- for_all_symbols(i, sym)
- sym->flags &= ~SYMBOL_VALID;
- sym_change_count++;
- if (modules_sym)
- sym_calc_value(modules_sym);
-}
-
-void sym_set_changed(struct symbol *sym)
-{
- struct property *prop;
-
- sym->flags |= SYMBOL_CHANGED;
- for (prop = sym->prop; prop; prop = prop->next) {
- if (prop->menu)
- prop->menu->flags |= MENU_CHANGED;
- }
-}
-
-void sym_set_all_changed(void)
-{
- struct symbol *sym;
- int i;
-
- for_all_symbols(i, sym)
- sym_set_changed(sym);
-}
-
-bool sym_tristate_within_range(struct symbol *sym, tristate val)
-{
- int type = sym_get_type(sym);
-
- if (sym->visible == no)
- return false;
-
- if (type != S_BOOLEAN && type != S_TRISTATE)
- return false;
-
- if (type == S_BOOLEAN && val == mod)
- return false;
- if (sym->visible <= sym->rev_dep.tri)
- return false;
- if (sym_is_choice_value(sym) && sym->visible == yes)
- return val == yes;
- return val >= sym->rev_dep.tri && val <= sym->visible;
-}
-
-bool sym_set_tristate_value(struct symbol *sym, tristate val)
-{
- tristate oldval = sym_get_tristate_value(sym);
-
- if (oldval != val && !sym_tristate_within_range(sym, val))
- return false;
-
- if (sym->flags & SYMBOL_NEW) {
- sym->flags &= ~SYMBOL_NEW;
- sym_set_changed(sym);
- }
- if (sym_is_choice_value(sym) && val == yes) {
- struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
-
- cs->user.val = sym;
- cs->flags &= ~SYMBOL_NEW;
- }
-
- sym->user.tri = val;
- if (oldval != val) {
- sym_clear_all_valid();
- if (sym == modules_sym)
- sym_set_all_changed();
- }
-
- return true;
-}
-
-tristate sym_toggle_tristate_value(struct symbol *sym)
-{
- tristate oldval, newval;
-
- oldval = newval = sym_get_tristate_value(sym);
- do {
- switch (newval) {
- case no:
- newval = mod;
- break;
- case mod:
- newval = yes;
- break;
- case yes:
- newval = no;
- break;
- }
- if (sym_set_tristate_value(sym, newval))
- break;
- } while (oldval != newval);
- return newval;
-}
-
-bool sym_string_valid(struct symbol *sym, const char *str)
-{
- char ch;
-
- switch (sym->type) {
- case S_STRING:
- return true;
- case S_INT:
- ch = *str++;
- if (ch == '-')
- ch = *str++;
- if (!isdigit(ch))
- return false;
- if (ch == '0' && *str != 0)
- return false;
- while ((ch = *str++)) {
- if (!isdigit(ch))
- return false;
- }
- return true;
- case S_HEX:
- if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X'))
- str += 2;
- ch = *str++;
- do {
- if (!isxdigit(ch))
- return false;
- } while ((ch = *str++));
- return true;
- case S_BOOLEAN:
- case S_TRISTATE:
- switch (str[0]) {
- case 'y': case 'Y':
- case 'm': case 'M':
- case 'n': case 'N':
- return true;
- }
- return false;
- default:
- return false;
- }
-}
-
-bool sym_string_within_range(struct symbol *sym, const char *str)
-{
- struct property *prop;
- int val;
-
- switch (sym->type) {
- case S_STRING:
- return sym_string_valid(sym, str);
- case S_INT:
- if (!sym_string_valid(sym, str))
- return false;
- prop = sym_get_range_prop(sym);
- if (!prop)
- return true;
- val = strtol(str, NULL, 10);
- return val >= strtol(prop->expr->left.sym->name, NULL, 10) &&
- val <= strtol(prop->expr->right.sym->name, NULL, 10);
- case S_HEX:
- if (!sym_string_valid(sym, str))
- return false;
- prop = sym_get_range_prop(sym);
- if (!prop)
- return true;
- val = strtol(str, NULL, 16);
- return val >= strtol(prop->expr->left.sym->name, NULL, 16) &&
- val <= strtol(prop->expr->right.sym->name, NULL, 16);
- case S_BOOLEAN:
- case S_TRISTATE:
- switch (str[0]) {
- case 'y': case 'Y':
- return sym_tristate_within_range(sym, yes);
- case 'm': case 'M':
- return sym_tristate_within_range(sym, mod);
- case 'n': case 'N':
- return sym_tristate_within_range(sym, no);
- }
- return false;
- default:
- return false;
- }
-}
-
-bool sym_set_string_value(struct symbol *sym, const char *newval)
-{
- const char *oldval;
- char *val;
- int size;
-
- switch (sym->type) {
- case S_BOOLEAN:
- case S_TRISTATE:
- switch (newval[0]) {
- case 'y': case 'Y':
- return sym_set_tristate_value(sym, yes);
- case 'm': case 'M':
- return sym_set_tristate_value(sym, mod);
- case 'n': case 'N':
- return sym_set_tristate_value(sym, no);
- }
- return false;
- default:
- ;
- }
-
- if (!sym_string_within_range(sym, newval))
- return false;
-
- if (sym->flags & SYMBOL_NEW) {
- sym->flags &= ~SYMBOL_NEW;
- sym_set_changed(sym);
- }
-
- oldval = sym->user.val;
- size = strlen(newval) + 1;
- if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) {
- size += 2;
- sym->user.val = val = malloc(size);
- *val++ = '0';
- *val++ = 'x';
- } else if (!oldval || strcmp(oldval, newval))
- sym->user.val = val = malloc(size);
- else
- return true;
-
- strcpy(val, newval);
- free((void *)oldval);
- sym_clear_all_valid();
-
- return true;
-}
-
-const char *sym_get_string_value(struct symbol *sym)
-{
- tristate val;
-
- switch (sym->type) {
- case S_BOOLEAN:
- case S_TRISTATE:
- val = sym_get_tristate_value(sym);
- switch (val) {
- case no:
- return "n";
- case mod:
- return "m";
- case yes:
- return "y";
- }
- break;
- default:
- ;
- }
- return (const char *)sym->curr.val;
-}
-
-bool sym_is_changable(struct symbol *sym)
-{
- return sym->visible > sym->rev_dep.tri;
-}
-
-struct symbol *sym_lookup(const char *name, int isconst)
-{
- struct symbol *symbol;
- const char *ptr;
- char *new_name;
- int hash = 0;
-
- if (name) {
- if (name[0] && !name[1]) {
- switch (name[0]) {
- case 'y': return &symbol_yes;
- case 'm': return &symbol_mod;
- case 'n': return &symbol_no;
- }
- }
- for (ptr = name; *ptr; ptr++)
- hash += *ptr;
- hash &= 0xff;
-
- for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
- if (!strcmp(symbol->name, name)) {
- if ((isconst && symbol->flags & SYMBOL_CONST) ||
- (!isconst && !(symbol->flags & SYMBOL_CONST)))
- return symbol;
- }
- }
- new_name = strdup(name);
- } else {
- new_name = NULL;
- hash = 256;
- }
-
- symbol = malloc(sizeof(*symbol));
- memset(symbol, 0, sizeof(*symbol));
- symbol->name = new_name;
- symbol->type = S_UNKNOWN;
- symbol->flags = SYMBOL_NEW;
- if (isconst)
- symbol->flags |= SYMBOL_CONST;
-
- symbol->next = symbol_hash[hash];
- symbol_hash[hash] = symbol;
-
- return symbol;
-}
-
-struct symbol *sym_find(const char *name)
-{
- struct symbol *symbol = NULL;
- const char *ptr;
- int hash = 0;
-
- if (!name)
- return NULL;
-
- if (name[0] && !name[1]) {
- switch (name[0]) {
- case 'y': return &symbol_yes;
- case 'm': return &symbol_mod;
- case 'n': return &symbol_no;
- }
- }
- for (ptr = name; *ptr; ptr++)
- hash += *ptr;
- hash &= 0xff;
-
- for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
- if (!strcmp(symbol->name, name) &&
- !(symbol->flags & SYMBOL_CONST))
- break;
- }
-
- return symbol;
-}
-
-struct symbol *sym_check_deps(struct symbol *sym);
-
-static struct symbol *sym_check_expr_deps(struct expr *e)
-{
- struct symbol *sym;
-
- if (!e)
- return NULL;
- switch (e->type) {
- case E_OR:
- case E_AND:
- sym = sym_check_expr_deps(e->left.expr);
- if (sym)
- return sym;
- return sym_check_expr_deps(e->right.expr);
- case E_NOT:
- return sym_check_expr_deps(e->left.expr);
- case E_EQUAL:
- case E_UNEQUAL:
- sym = sym_check_deps(e->left.sym);
- if (sym)
- return sym;
- return sym_check_deps(e->right.sym);
- case E_SYMBOL:
- return sym_check_deps(e->left.sym);
- default:
- break;
- }
- printf("Oops! How to check %d?\n", e->type);
- return NULL;
-}
-
-struct symbol *sym_check_deps(struct symbol *sym)
-{
- struct symbol *sym2;
- struct property *prop;
-
- if (sym->flags & SYMBOL_CHECK_DONE)
- return NULL;
- if (sym->flags & SYMBOL_CHECK) {
- printf("Warning! Found recursive dependency: %s", sym->name);
- return sym;
- }
-
- sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
- sym2 = sym_check_expr_deps(sym->rev_dep.expr);
- if (sym2)
- goto out;
-
- for (prop = sym->prop; prop; prop = prop->next) {
- if (prop->type == P_CHOICE || prop->type == P_SELECT)
- continue;
- sym2 = sym_check_expr_deps(prop->visible.expr);
- if (sym2)
- goto out;
- if (prop->type != P_DEFAULT || sym_is_choice(sym))
- continue;
- sym2 = sym_check_expr_deps(prop->expr);
- if (sym2)
- goto out;
- }
-out:
- if (sym2)
- printf(" %s", sym->name);
- sym->flags &= ~SYMBOL_CHECK;
- return sym2;
-}
-
-struct property *prop_alloc(enum prop_type type, struct symbol *sym)
-{
- struct property *prop;
- struct property **propp;
-
- prop = malloc(sizeof(*prop));
- memset(prop, 0, sizeof(*prop));
- prop->type = type;
- prop->sym = sym;
- prop->file = current_file;
- prop->lineno = zconf_lineno();
-
- /* append property to the prop list of symbol */
- if (sym) {
- for (propp = &sym->prop; *propp; propp = &(*propp)->next)
- ;
- *propp = prop;
- }
-
- return prop;
-}
-
-struct symbol *prop_get_symbol(struct property *prop)
-{
- if (prop->expr && (prop->expr->type == E_SYMBOL ||
- prop->expr->type == E_CHOICE))
- return prop->expr->left.sym;
- return NULL;
-}
-
-const char *prop_get_type_name(enum prop_type type)
-{
- switch (type) {
- case P_PROMPT:
- return "prompt";
- case P_COMMENT:
- return "comment";
- case P_MENU:
- return "menu";
- case P_DEFAULT:
- return "default";
- case P_CHOICE:
- return "choice";
- case P_SELECT:
- return "select";
- case P_RANGE:
- return "range";
- case P_UNKNOWN:
- break;
- }
- return "unknown";
-}
diff --git a/openwrt/package/config/textbox.c b/openwrt/package/config/textbox.c
deleted file mode 100644
index a5a460b5cc..0000000000
--- a/openwrt/package/config/textbox.c
+++ /dev/null
@@ -1,556 +0,0 @@
-/*
- * textbox.c -- implements the text box
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.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.
- */
-
-#include "dialog.h"
-
-static void back_lines (int n);
-static void print_page (WINDOW * win, int height, int width);
-static void print_line (WINDOW * win, int row, int width);
-static char *get_line (void);
-static void print_position (WINDOW * win, int height, int width);
-
-static int hscroll, fd, file_size, bytes_read;
-static int begin_reached = 1, end_reached, page_length;
-static char *buf, *page;
-
-/*
- * Display text from a file in a dialog box.
- */
-int
-dialog_textbox (const char *title, const char *file, int height, int width)
-{
- int i, x, y, cur_x, cur_y, fpos, key = 0;
- int passed_end;
- char search_term[MAX_LEN + 1];
- WINDOW *dialog, *text;
-
- search_term[0] = '\0'; /* no search term entered yet */
-
- /* Open input file for reading */
- if ((fd = open (file, O_RDONLY)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nCan't open input file in dialog_textbox().\n");
- exit (-1);
- }
- /* Get file size. Actually, 'file_size' is the real file size - 1,
- since it's only the last byte offset from the beginning */
- if ((file_size = lseek (fd, 0, SEEK_END)) == -1) {
- endwin ();
- fprintf (stderr, "\nError getting file size in dialog_textbox().\n");
- exit (-1);
- }
- /* Restore file pointer to beginning of file after getting file size */
- if (lseek (fd, 0, SEEK_SET) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in dialog_textbox().\n");
- exit (-1);
- }
- /* Allocate space for read buffer */
- if ((buf = malloc (BUF_SIZE + 1)) == NULL) {
- endwin ();
- fprintf (stderr, "\nCan't allocate memory in dialog_textbox().\n");
- exit (-1);
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr, "\nError reading file in dialog_textbox().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0'; /* mark end of valid data */
- page = buf; /* page is pointer to start of page to be displayed */
-
- /* center dialog box on screen */
- x = (COLS - width) / 2;
- y = (LINES - height) / 2;
-
-
- draw_shadow (stdscr, y, x, height, width);
-
- dialog = newwin (height, width, y, x);
- keypad (dialog, TRUE);
-
- /* Create window for text region, used for scrolling text */
- text = subwin (dialog, height - 4, width - 2, y + 1, x + 1);
- wattrset (text, dialog_attr);
- wbkgdset (text, dialog_attr & A_COLOR);
-
- keypad (text, TRUE);
-
- /* register the new window, along with its borders */
- draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
-
- wattrset (dialog, border_attr);
- mvwaddch (dialog, height-3, 0, ACS_LTEE);
- for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
- wattrset (dialog, dialog_attr);
- wbkgdset (dialog, dialog_attr & A_COLOR);
- waddch (dialog, ACS_RTEE);
-
- if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
- }
-
- if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
- }
- print_button (dialog, " Exit ", height - 2, width / 2 - 4, TRUE);
- wnoutrefresh (dialog);
- getyx (dialog, cur_y, cur_x); /* Save cursor position */
-
- /* Print first page of text */
- attr_clear (text, height - 4, width - 2, dialog_attr);
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
-
- while ((key != ESC) && (key != '\n')) {
- key = wgetch (dialog);
- switch (key) {
- case 'E': /* Exit */
- case 'e':
- case 'X':
- case 'x':
- delwin (dialog);
- free (buf);
- close (fd);
- return 0;
- case 'g': /* First page */
- case KEY_HOME:
- if (!begin_reached) {
- begin_reached = 1;
- /* First page not in buffer? */
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError moving file pointer in dialog_textbox().\n");
- exit (-1);
- }
- if (fpos > bytes_read) { /* Yes, we have to read it in */
- if (lseek (fd, 0, SEEK_SET) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in "
- "dialog_textbox().\n");
- exit (-1);
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError reading file in dialog_textbox().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- }
- page = buf;
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
- }
- break;
- case 'G': /* Last page */
- case KEY_END:
-
- end_reached = 1;
- /* Last page not in buffer? */
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError moving file pointer in dialog_textbox().\n");
- exit (-1);
- }
- if (fpos < file_size) { /* Yes, we have to read it in */
- if (lseek (fd, -BUF_SIZE, SEEK_END) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError moving file pointer in dialog_textbox().\n");
- exit (-1);
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError reading file in dialog_textbox().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- }
- page = buf + bytes_read;
- back_lines (height - 4);
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
- break;
- case 'K': /* Previous line */
- case 'k':
- case KEY_UP:
- if (!begin_reached) {
- back_lines (page_length + 1);
-
- /* We don't call print_page() here but use scrolling to ensure
- faster screen update. However, 'end_reached' and
- 'page_length' should still be updated, and 'page' should
- point to start of next page. This is done by calling
- get_line() in the following 'for' loop. */
- scrollok (text, TRUE);
- wscrl (text, -1); /* Scroll text region down one line */
- scrollok (text, FALSE);
- page_length = 0;
- passed_end = 0;
- for (i = 0; i < height - 4; i++) {
- if (!i) {
- /* print first line of page */
- print_line (text, 0, width - 2);
- wnoutrefresh (text);
- } else
- /* Called to update 'end_reached' and 'page' */
- get_line ();
- if (!passed_end)
- page_length++;
- if (end_reached && !passed_end)
- passed_end = 1;
- }
-
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
- }
- break;
- case 'B': /* Previous page */
- case 'b':
- case KEY_PPAGE:
- if (begin_reached)
- break;
- back_lines (page_length + height - 4);
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x);
- wrefresh (dialog);
- break;
- case 'J': /* Next line */
- case 'j':
- case KEY_DOWN:
- if (!end_reached) {
- begin_reached = 0;
- scrollok (text, TRUE);
- scroll (text); /* Scroll text region up one line */
- scrollok (text, FALSE);
- print_line (text, height - 5, width - 2);
- wnoutrefresh (text);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x); /* Restore cursor position */
- wrefresh (dialog);
- }
- break;
- case KEY_NPAGE: /* Next page */
- case ' ':
- if (end_reached)
- break;
-
- begin_reached = 0;
- print_page (text, height - 4, width - 2);
- print_position (dialog, height, width);
- wmove (dialog, cur_y, cur_x);
- wrefresh (dialog);
- break;
- case '0': /* Beginning of line */
- case 'H': /* Scroll left */
- case 'h':
- case KEY_LEFT:
- if (hscroll <= 0)
- break;
-
- if (key == '0')
- hscroll = 0;
- else
- hscroll--;
- /* Reprint current page to scroll horizontally */
- back_lines (page_length);
- print_page (text, height - 4, width - 2);
- wmove (dialog, cur_y, cur_x);
- wrefresh (dialog);
- break;
- case 'L': /* Scroll right */
- case 'l':
- case KEY_RIGHT:
- if (hscroll >= MAX_LEN)
- break;
- hscroll++;
- /* Reprint current page to scroll horizontally */
- back_lines (page_length);
- print_page (text, height - 4, width - 2);
- wmove (dialog, cur_y, cur_x);
- wrefresh (dialog);
- break;
- case ESC:
- break;
- }
- }
-
- delwin (dialog);
- free (buf);
- close (fd);
- return 1; /* ESC pressed */
-}
-
-/*
- * Go back 'n' lines in text file. Called by dialog_textbox().
- * 'page' will be updated to point to the desired line in 'buf'.
- */
-static void
-back_lines (int n)
-{
- int i, fpos;
-
- begin_reached = 0;
- /* We have to distinguish between end_reached and !end_reached
- since at end of file, the line is not ended by a '\n'.
- The code inside 'if' basically does a '--page' to move one
- character backward so as to skip '\n' of the previous line */
- if (!end_reached) {
- /* Either beginning of buffer or beginning of file reached? */
- if (page == buf) {
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in "
- "back_lines().\n");
- exit (-1);
- }
- if (fpos > bytes_read) { /* Not beginning of file yet */
- /* We've reached beginning of buffer, but not beginning of
- file yet, so read previous part of file into buffer.
- Note that we only move backward for BUF_SIZE/2 bytes,
- but not BUF_SIZE bytes to avoid re-reading again in
- print_page() later */
- /* Really possible to move backward BUF_SIZE/2 bytes? */
- if (fpos < BUF_SIZE / 2 + bytes_read) {
- /* No, move less then */
- if (lseek (fd, 0, SEEK_SET) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in "
- "back_lines().\n");
- exit (-1);
- }
- page = buf + fpos - bytes_read;
- } else { /* Move backward BUF_SIZE/2 bytes */
- if (lseek (fd, -(BUF_SIZE / 2 + bytes_read), SEEK_CUR)
- == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer "
- "in back_lines().\n");
- exit (-1);
- }
- page = buf + BUF_SIZE / 2;
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr, "\nError reading file in back_lines().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- } else { /* Beginning of file reached */
- begin_reached = 1;
- return;
- }
- }
- if (*(--page) != '\n') { /* '--page' here */
- /* Something's wrong... */
- endwin ();
- fprintf (stderr, "\nInternal error in back_lines().\n");
- exit (-1);
- }
- }
- /* Go back 'n' lines */
- for (i = 0; i < n; i++)
- do {
- if (page == buf) {
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr,
- "\nError moving file pointer in back_lines().\n");
- exit (-1);
- }
- if (fpos > bytes_read) {
- /* Really possible to move backward BUF_SIZE/2 bytes? */
- if (fpos < BUF_SIZE / 2 + bytes_read) {
- /* No, move less then */
- if (lseek (fd, 0, SEEK_SET) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer "
- "in back_lines().\n");
- exit (-1);
- }
- page = buf + fpos - bytes_read;
- } else { /* Move backward BUF_SIZE/2 bytes */
- if (lseek (fd, -(BUF_SIZE / 2 + bytes_read),
- SEEK_CUR) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer"
- " in back_lines().\n");
- exit (-1);
- }
- page = buf + BUF_SIZE / 2;
- }
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr, "\nError reading file in "
- "back_lines().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- } else { /* Beginning of file reached */
- begin_reached = 1;
- return;
- }
- }
- } while (*(--page) != '\n');
- page++;
-}
-
-/*
- * Print a new page of text. Called by dialog_textbox().
- */
-static void
-print_page (WINDOW * win, int height, int width)
-{
- int i, passed_end = 0;
-
- page_length = 0;
- for (i = 0; i < height; i++) {
- print_line (win, i, width);
- if (!passed_end)
- page_length++;
- if (end_reached && !passed_end)
- passed_end = 1;
- }
- wnoutrefresh (win);
-}
-
-/*
- * Print a new line of text. Called by dialog_textbox() and print_page().
- */
-static void
-print_line (WINDOW * win, int row, int width)
-{
- int y, x;
- char *line;
-
- line = get_line ();
- line += MIN (strlen (line), hscroll); /* Scroll horizontally */
- wmove (win, row, 0); /* move cursor to correct line */
- waddch (win, ' ');
- waddnstr (win, line, MIN (strlen (line), width - 2));
-
- getyx (win, y, x);
- /* Clear 'residue' of previous line */
-#if OLD_NCURSES
- {
- int i;
- for (i = 0; i < width - x; i++)
- waddch (win, ' ');
- }
-#else
- wclrtoeol(win);
-#endif
-}
-
-/*
- * Return current line of text. Called by dialog_textbox() and print_line().
- * 'page' should point to start of current line before calling, and will be
- * updated to point to start of next line.
- */
-static char *
-get_line (void)
-{
- int i = 0, fpos;
- static char line[MAX_LEN + 1];
-
- end_reached = 0;
- while (*page != '\n') {
- if (*page == '\0') {
- /* Either end of file or end of buffer reached */
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in "
- "get_line().\n");
- exit (-1);
- }
- if (fpos < file_size) { /* Not end of file yet */
- /* We've reached end of buffer, but not end of file yet,
- so read next part of file into buffer */
- if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
- endwin ();
- fprintf (stderr, "\nError reading file in get_line().\n");
- exit (-1);
- }
- buf[bytes_read] = '\0';
- page = buf;
- } else {
- if (!end_reached)
- end_reached = 1;
- break;
- }
- } else if (i < MAX_LEN)
- line[i++] = *(page++);
- else {
- /* Truncate lines longer than MAX_LEN characters */
- if (i == MAX_LEN)
- line[i++] = '\0';
- page++;
- }
- }
- if (i <= MAX_LEN)
- line[i] = '\0';
- if (!end_reached)
- page++; /* move pass '\n' */
-
- return line;
-}
-
-/*
- * Print current position
- */
-static void
-print_position (WINDOW * win, int height, int width)
-{
- int fpos, percent;
-
- if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
- endwin ();
- fprintf (stderr, "\nError moving file pointer in print_position().\n");
- exit (-1);
- }
- wattrset (win, position_indicator_attr);
- wbkgdset (win, position_indicator_attr & A_COLOR);
- percent = !file_size ?
- 100 : ((fpos - bytes_read + page - buf) * 100) / file_size;
- wmove (win, height - 3, width - 9);
- wprintw (win, "(%3d%%)", percent);
-}
diff --git a/openwrt/package/config/util.c b/openwrt/package/config/util.c
deleted file mode 100644
index 0a2f827570..0000000000
--- a/openwrt/package/config/util.c
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
- * util.c
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.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.
- */
-
-#include "dialog.h"
-
-
-/* use colors by default? */
-bool use_colors = 1;
-
-char *backtitle = NULL;
-
-const char *dialog_result;
-
-/*
- * Attribute values, default is for mono display
- */
-chtype attributes[] =
-{
- A_NORMAL, /* screen_attr */
- A_NORMAL, /* shadow_attr */
- A_NORMAL, /* dialog_attr */
- A_BOLD, /* title_attr */
- A_NORMAL, /* border_attr */
- A_REVERSE, /* button_active_attr */
- A_DIM, /* button_inactive_attr */
- A_REVERSE, /* button_key_active_attr */
- A_BOLD, /* button_key_inactive_attr */
- A_REVERSE, /* button_label_active_attr */
- A_NORMAL, /* button_label_inactive_attr */
- A_NORMAL, /* inputbox_attr */
- A_NORMAL, /* inputbox_border_attr */
- A_NORMAL, /* searchbox_attr */
- A_BOLD, /* searchbox_title_attr */
- A_NORMAL, /* searchbox_border_attr */
- A_BOLD, /* position_indicator_attr */
- A_NORMAL, /* menubox_attr */
- A_NORMAL, /* menubox_border_attr */
- A_NORMAL, /* item_attr */
- A_REVERSE, /* item_selected_attr */
- A_BOLD, /* tag_attr */
- A_REVERSE, /* tag_selected_attr */
- A_BOLD, /* tag_key_attr */
- A_REVERSE, /* tag_key_selected_attr */
- A_BOLD, /* check_attr */
- A_REVERSE, /* check_selected_attr */
- A_BOLD, /* uarrow_attr */
- A_BOLD /* darrow_attr */
-};
-
-
-#include "colors.h"
-
-/*
- * Table of color values
- */
-int color_table[][3] =
-{
- {SCREEN_FG, SCREEN_BG, SCREEN_HL},
- {SHADOW_FG, SHADOW_BG, SHADOW_HL},
- {DIALOG_FG, DIALOG_BG, DIALOG_HL},
- {TITLE_FG, TITLE_BG, TITLE_HL},
- {BORDER_FG, BORDER_BG, BORDER_HL},
- {BUTTON_ACTIVE_FG, BUTTON_ACTIVE_BG, BUTTON_ACTIVE_HL},
- {BUTTON_INACTIVE_FG, BUTTON_INACTIVE_BG, BUTTON_INACTIVE_HL},
- {BUTTON_KEY_ACTIVE_FG, BUTTON_KEY_ACTIVE_BG, BUTTON_KEY_ACTIVE_HL},
- {BUTTON_KEY_INACTIVE_FG, BUTTON_KEY_INACTIVE_BG, BUTTON_KEY_INACTIVE_HL},
- {BUTTON_LABEL_ACTIVE_FG, BUTTON_LABEL_ACTIVE_BG, BUTTON_LABEL_ACTIVE_HL},
- {BUTTON_LABEL_INACTIVE_FG, BUTTON_LABEL_INACTIVE_BG,
- BUTTON_LABEL_INACTIVE_HL},
- {INPUTBOX_FG, INPUTBOX_BG, INPUTBOX_HL},
- {INPUTBOX_BORDER_FG, INPUTBOX_BORDER_BG, INPUTBOX_BORDER_HL},
- {SEARCHBOX_FG, SEARCHBOX_BG, SEARCHBOX_HL},
- {SEARCHBOX_TITLE_FG, SEARCHBOX_TITLE_BG, SEARCHBOX_TITLE_HL},
- {SEARCHBOX_BORDER_FG, SEARCHBOX_BORDER_BG, SEARCHBOX_BORDER_HL},
- {POSITION_INDICATOR_FG, POSITION_INDICATOR_BG, POSITION_INDICATOR_HL},
- {MENUBOX_FG, MENUBOX_BG, MENUBOX_HL},
- {MENUBOX_BORDER_FG, MENUBOX_BORDER_BG, MENUBOX_BORDER_HL},
- {ITEM_FG, ITEM_BG, ITEM_HL},
- {ITEM_SELECTED_FG, ITEM_SELECTED_BG, ITEM_SELECTED_HL},
- {TAG_FG, TAG_BG, TAG_HL},
- {TAG_SELECTED_FG, TAG_SELECTED_BG, TAG_SELECTED_HL},
- {TAG_KEY_FG, TAG_KEY_BG, TAG_KEY_HL},
- {TAG_KEY_SELECTED_FG, TAG_KEY_SELECTED_BG, TAG_KEY_SELECTED_HL},
- {CHECK_FG, CHECK_BG, CHECK_HL},
- {CHECK_SELECTED_FG, CHECK_SELECTED_BG, CHECK_SELECTED_HL},
- {UARROW_FG, UARROW_BG, UARROW_HL},
- {DARROW_FG, DARROW_BG, DARROW_HL},
-}; /* color_table */
-
-/*
- * Set window to attribute 'attr'
- */
-void
-attr_clear (WINDOW * win, int height, int width, chtype attr)
-{
- int i, j;
-
- wattrset (win, attr);
- for (i = 0; i < height; i++) {
- wmove (win, i, 0);
- for (j = 0; j < width; j++)
- waddch (win, ' ');
- }
- touchwin (win);
-}
-
-void dialog_clear (void)
-{
- attr_clear (stdscr, LINES, COLS, screen_attr);
- /* Display background title if it exists ... - SLH */
- if (backtitle != NULL) {
- int i;
-
- wattrset (stdscr, screen_attr);
- mvwaddstr (stdscr, 0, 1, (char *)backtitle);
- wmove (stdscr, 1, 1);
- for (i = 1; i < COLS - 1; i++)
- waddch (stdscr, ACS_HLINE);
- }
- wnoutrefresh (stdscr);
-}
-
-/*
- * Do some initialization for dialog
- */
-void
-init_dialog (void)
-{
- initscr (); /* Init curses */
- keypad (stdscr, TRUE);
- cbreak ();
- noecho ();
-
-
- if (use_colors) /* Set up colors */
- color_setup ();
-
-
- dialog_clear ();
-}
-
-/*
- * Setup for color display
- */
-void
-color_setup (void)
-{
- int i;
-
- if (has_colors ()) { /* Terminal supports color? */
- start_color ();
-
- /* Initialize color pairs */
- for (i = 0; i < ATTRIBUTE_COUNT; i++)
- init_pair (i + 1, color_table[i][0], color_table[i][1]);
-
- /* Setup color attributes */
- for (i = 0; i < ATTRIBUTE_COUNT; i++)
- attributes[i] = C_ATTR (color_table[i][2], i + 1);
- }
-}
-
-/*
- * End using dialog functions.
- */
-void
-end_dialog (void)
-{
- endwin ();
-}
-
-
-/*
- * Print a string of text in a window, automatically wrap around to the
- * next line if the string is too long to fit on one line. Newline
- * characters '\n' are replaced by spaces. We start on a new line
- * if there is no room for at least 4 nonblanks following a double-space.
- */
-void
-print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x)
-{
- int newl, cur_x, cur_y;
- int i, prompt_len, room, wlen;
- char tempstr[MAX_LEN + 1], *word, *sp, *sp2;
-
- strcpy (tempstr, prompt);
-
- prompt_len = strlen(tempstr);
-
- /*
- * Remove newlines
- */
- for(i=0; i<prompt_len; i++) {
- if(tempstr[i] == '\n') tempstr[i] = ' ';
- }
-
- if (prompt_len <= width - x * 2) { /* If prompt is short */
- wmove (win, y, (width - prompt_len) / 2);
- waddstr (win, tempstr);
- } else {
- cur_x = x;
- cur_y = y;
- newl = 1;
- word = tempstr;
- while (word && *word) {
- sp = index(word, ' ');
- if (sp)
- *sp++ = 0;
-
- /* Wrap to next line if either the word does not fit,
- or it is the first word of a new sentence, and it is
- short, and the next word does not fit. */
- room = width - cur_x;
- wlen = strlen(word);
- if (wlen > room ||
- (newl && wlen < 4 && sp && wlen+1+strlen(sp) > room
- && (!(sp2 = index(sp, ' ')) || wlen+1+(sp2-sp) > room))) {
- cur_y++;
- cur_x = x;
- }
- wmove (win, cur_y, cur_x);
- waddstr (win, word);
- getyx (win, cur_y, cur_x);
- cur_x++;
- if (sp && *sp == ' ') {
- cur_x++; /* double space */
- while (*++sp == ' ');
- newl = 1;
- } else
- newl = 0;
- word = sp;
- }
- }
-}
-
-/*
- * Print a button
- */
-void
-print_button (WINDOW * win, const char *label, int y, int x, int selected)
-{
- int i, temp;
-
- wmove (win, y, x);
- wattrset (win, selected ? button_active_attr : button_inactive_attr);
- waddstr (win, "<");
- temp = strspn (label, " ");
- label += temp;
- wattrset (win, selected ? button_label_active_attr
- : button_label_inactive_attr);
- for (i = 0; i < temp; i++)
- waddch (win, ' ');
- wattrset (win, selected ? button_key_active_attr
- : button_key_inactive_attr);
- waddch (win, label[0]);
- wattrset (win, selected ? button_label_active_attr
- : button_label_inactive_attr);
- waddstr (win, (char *)label + 1);
- wattrset (win, selected ? button_active_attr : button_inactive_attr);
- waddstr (win, ">");
- wmove (win, y, x + temp + 1);
-}
-
-/*
- * Draw a rectangular box with line drawing characters
- */
-void
-draw_box (WINDOW * win, int y, int x, int height, int width,
- chtype box, chtype border)
-{
- int i, j;
-
- wattrset (win, 0);
- for (i = 0; i < height; i++) {
- wmove (win, y + i, x);
- for (j = 0; j < width; j++)
- if (!i && !j)
- waddch (win, border | ACS_ULCORNER);
- else if (i == height - 1 && !j)
- waddch (win, border | ACS_LLCORNER);
- else if (!i && j == width - 1)
- waddch (win, box | ACS_URCORNER);
- else if (i == height - 1 && j == width - 1)
- waddch (win, box | ACS_LRCORNER);
- else if (!i)
- waddch (win, border | ACS_HLINE);
- else if (i == height - 1)
- waddch (win, box | ACS_HLINE);
- else if (!j)
- waddch (win, border | ACS_VLINE);
- else if (j == width - 1)
- waddch (win, box | ACS_VLINE);
- else
- waddch (win, box | ' ');
- }
-}
-
-/*
- * Draw shadows along the right and bottom edge to give a more 3D look
- * to the boxes
- */
-void
-draw_shadow (WINDOW * win, int y, int x, int height, int width)
-{
- int i;
-
- if (has_colors ()) { /* Whether terminal supports color? */
- wattrset (win, shadow_attr);
- wmove (win, y + height, x + 2);
- for (i = 0; i < width; i++)
- waddch (win, winch (win) & A_CHARTEXT);
- for (i = y + 1; i < y + height + 1; i++) {
- wmove (win, i, x + width);
- waddch (win, winch (win) & A_CHARTEXT);
- waddch (win, winch (win) & A_CHARTEXT);
- }
- wnoutrefresh (win);
- }
-}
-
-/*
- * Return the position of the first alphabetic character in a string.
- */
-int
-first_alpha(const char *string, const char *exempt)
-{
- int i, in_paren=0, c;
-
- for (i = 0; i < strlen(string); i++) {
- c = tolower(string[i]);
-
- if (strchr("<[(", c)) ++in_paren;
- if (strchr(">])", c) && in_paren > 0) --in_paren;
-
- if ((! in_paren) && isalpha(c) &&
- strchr(exempt, c) == 0)
- return i;
- }
-
- return 0;
-}
-
-/*
- * Get the first selected item in the dialog_list_item list.
- */
-struct dialog_list_item *
-first_sel_item(int item_no, struct dialog_list_item ** items)
-{
- int i;
-
- for (i = 0; i < item_no; i++) {
- if (items[i]->selected)
- return items[i];
- }
-
- return NULL;
-}
diff --git a/openwrt/package/config/yesno.c b/openwrt/package/config/yesno.c
deleted file mode 100644
index 11fcc25f51..0000000000
--- a/openwrt/package/config/yesno.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * yesno.c -- implements the yes/no box
- *
- * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
- * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.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.
- */
-
-#include "dialog.h"
-
-/*
- * Display termination buttons
- */
-static void
-print_buttons(WINDOW *dialog, int height, int width, int selected)
-{
- int x = width / 2 - 10;
- int y = height - 2;
-
- print_button (dialog, " Yes ", y, x, selected == 0);
- print_button (dialog, " No ", y, x + 13, selected == 1);
-
- wmove(dialog, y, x+1 + 13*selected );
- wrefresh (dialog);
-}
-
-/*
- * Display a dialog box with two buttons - Yes and No
- */
-int
-dialog_yesno (const char *title, const char *prompt, int height, int width)
-{
- int i, x, y, key = 0, button = 0;
- WINDOW *dialog;
-
- /* center dialog box on screen */
- x = (COLS - width) / 2;
- y = (LINES - height) / 2;
-
- draw_shadow (stdscr, y, x, height, width);
-
- dialog = newwin (height, width, y, x);
- keypad (dialog, TRUE);
-
- draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
- wattrset (dialog, border_attr);
- mvwaddch (dialog, height-3, 0, ACS_LTEE);
- for (i = 0; i < width - 2; i++)
- waddch (dialog, ACS_HLINE);
- wattrset (dialog, dialog_attr);
- waddch (dialog, ACS_RTEE);
-
- if (title != NULL && strlen(title) >= width-2 ) {
- /* truncate long title -- mec */
- char * title2 = malloc(width-2+1);
- memcpy( title2, title, width-2 );
- title2[width-2] = '\0';
- title = title2;
- }
-
- if (title != NULL) {
- wattrset (dialog, title_attr);
- mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
- waddstr (dialog, (char *)title);
- waddch (dialog, ' ');
- }
-
- wattrset (dialog, dialog_attr);
- print_autowrap (dialog, prompt, width - 2, 1, 3);
-
- print_buttons(dialog, height, width, 0);
-
- while (key != ESC) {
- key = wgetch (dialog);
- switch (key) {
- case 'Y':
- case 'y':
- delwin (dialog);
- return 0;
- case 'N':
- case 'n':
- delwin (dialog);
- return 1;
-
- case TAB:
- case KEY_LEFT:
- case KEY_RIGHT:
- button = ((key == KEY_LEFT ? --button : ++button) < 0)
- ? 1 : (button > 1 ? 0 : button);
-
- print_buttons(dialog, height, width, button);
- wrefresh (dialog);
- break;
- case ' ':
- case '\n':
- delwin (dialog);
- return button;
- case ESC:
- break;
- }
- }
-
- delwin (dialog);
- return -1; /* ESC pressed */
-}
diff --git a/openwrt/package/config/zconf.l b/openwrt/package/config/zconf.l
deleted file mode 100644
index 3a4947a88a..0000000000
--- a/openwrt/package/config/zconf.l
+++ /dev/null
@@ -1,387 +0,0 @@
-%option backup nostdinit noyywrap never-interactive full ecs
-%option 8bit backup nodefault perf-report perf-report
-%x COMMAND HELP STRING PARAM
-%{
-/*
- * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
- * Released under the terms of the GNU GPL v2.0.
- */
-
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <glob.h>
-
-#define LKC_DIRECT_LINK
-#include "lkc.h"
-
-#define START_STRSIZE 16
-
-char *text;
-static char *text_ptr;
-static int text_size, text_asize;
-
-struct buffer {
- struct buffer *parent;
- YY_BUFFER_STATE state;
-};
-
-struct buffer *current_buf;
-
-static int last_ts, first_ts;
-
-static void zconf_endhelp(void);
-static struct buffer *zconf_endfile(void);
-
-void new_string(void)
-{
- text = malloc(START_STRSIZE);
- text_asize = START_STRSIZE;
- text_ptr = text;
- text_size = 0;
- *text_ptr = 0;
-}
-
-void append_string(const char *str, int size)
-{
- int new_size = text_size + size + 1;
- if (new_size > text_asize) {
- text = realloc(text, new_size);
- text_asize = new_size;
- text_ptr = text + text_size;
- }
- memcpy(text_ptr, str, size);
- text_ptr += size;
- text_size += size;
- *text_ptr = 0;
-}
-
-void alloc_string(const char *str, int size)
-{
- text = malloc(size + 1);
- memcpy(text, str, size);
- text[size] = 0;
-}
-%}
-
-ws [ \n\t]
-n [A-Za-z0-9_]
-
-%%
- int str = 0;
- int ts, i;
-
-[ \t]*#.*\n current_file->lineno++;
-[ \t]*#.*
-
-[ \t]*\n current_file->lineno++; return T_EOL;
-
-[ \t]+ {
- BEGIN(COMMAND);
-}
-
-. {
- unput(yytext[0]);
- BEGIN(COMMAND);
-}
-
-
-<COMMAND>{
- "mainmenu" BEGIN(PARAM); return T_MAINMENU;
- "menu" BEGIN(PARAM); return T_MENU;
- "endmenu" BEGIN(PARAM); return T_ENDMENU;
- "source" BEGIN(PARAM); return T_SOURCE;
- "choice" BEGIN(PARAM); return T_CHOICE;
- "endchoice" BEGIN(PARAM); return T_ENDCHOICE;
- "comment" BEGIN(PARAM); return T_COMMENT;
- "config" BEGIN(PARAM); return T_CONFIG;
- "menuconfig" BEGIN(PARAM); return T_MENUCONFIG;
- "help" BEGIN(PARAM); return T_HELP;
- "if" BEGIN(PARAM); return T_IF;
- "endif" BEGIN(PARAM); return T_ENDIF;
- "depends" BEGIN(PARAM); return T_DEPENDS;
- "requires" BEGIN(PARAM); return T_REQUIRES;
- "optional" BEGIN(PARAM); return T_OPTIONAL;
- "default" BEGIN(PARAM); return T_DEFAULT;
- "prompt" BEGIN(PARAM); return T_PROMPT;
- "tristate" BEGIN(PARAM); return T_TRISTATE;
- "def_tristate" BEGIN(PARAM); return T_DEF_TRISTATE;
- "bool" BEGIN(PARAM); return T_BOOLEAN;
- "boolean" BEGIN(PARAM); return T_BOOLEAN;
- "def_bool" BEGIN(PARAM); return T_DEF_BOOLEAN;
- "def_boolean" BEGIN(PARAM); return T_DEF_BOOLEAN;
- "int" BEGIN(PARAM); return T_INT;
- "hex" BEGIN(PARAM); return T_HEX;
- "string" BEGIN(PARAM); return T_STRING;
- "select" BEGIN(PARAM); return T_SELECT;
- "enable" BEGIN(PARAM); return T_SELECT;
- "range" BEGIN(PARAM); return T_RANGE;
- {n}+ {
- alloc_string(yytext, yyleng);
- zconflval.string = text;
- return T_WORD;
- }
- .
- \n current_file->lineno++; BEGIN(INITIAL);
-}
-
-<PARAM>{
- "&&" return T_AND;
- "||" return T_OR;
- "(" return T_OPEN_PAREN;
- ")" return T_CLOSE_PAREN;
- "!" return T_NOT;
- "=" return T_EQUAL;
- "!=" return T_UNEQUAL;
- "if" return T_IF;
- "on" return T_ON;
- \"|\' {
- str = yytext[0];
- new_string();
- BEGIN(STRING);
- }
- \n BEGIN(INITIAL); current_file->lineno++; return T_EOL;
- --- /* ignore */
- ({n}|[-/.])+ {
- alloc_string(yytext, yyleng);
- zconflval.string = text;
- return T_WORD;
- }
- #.* /* comment */
- \\\n current_file->lineno++;
- .
- <<EOF>> {
- BEGIN(INITIAL);
- }
-}
-
-<STRING>{
- [^'"\\\n]+/\n {
- append_string(yytext, yyleng);
- zconflval.string = text;
- return T_WORD_QUOTE;
- }
- [^'"\\\n]+ {
- append_string(yytext, yyleng);
- }
- \\.?/\n {
- append_string(yytext + 1, yyleng - 1);
- zconflval.string = text;
- return T_WORD_QUOTE;
- }
- \\.? {
- append_string(yytext + 1, yyleng - 1);
- }
- \'|\" {
- if (str == yytext[0]) {
- BEGIN(PARAM);
- zconflval.string = text;
- return T_WORD_QUOTE;
- } else
- append_string(yytext, 1);
- }
- \n {
- printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
- current_file->lineno++;
- BEGIN(INITIAL);
- return T_EOL;
- }
- <<EOF>> {
- BEGIN(INITIAL);
- }
-}
-
-<HELP>{
- [ \t]+ {
- ts = 0;
- for (i = 0; i < yyleng; i++) {
- if (yytext[i] == '\t')
- ts = (ts & ~7) + 8;
- else
- ts++;
- }
- last_ts = ts;
- if (first_ts) {
- if (ts < first_ts) {
- zconf_endhelp();
- return T_HELPTEXT;
- }
- ts -= first_ts;
- while (ts > 8) {
- append_string(" ", 8);
- ts -= 8;
- }
- append_string(" ", ts);
- }
- }
- [ \t]*\n/[^ \t\n] {
- current_file->lineno++;
- zconf_endhelp();
- return T_HELPTEXT;
- }
- [ \t]*\n {
- current_file->lineno++;
- append_string("\n", 1);
- }
- [^ \t\n].* {
- append_string(yytext, yyleng);
- if (!first_ts)
- first_ts = last_ts;
- }
- <<EOF>> {
- zconf_endhelp();
- return T_HELPTEXT;
- }
-}
-
-<<EOF>> {
- if (current_buf) {
- zconf_endfile();
- return T_EOF;
- }
- fclose(yyin);
- yyterminate();
-}
-
-%%
-void zconf_starthelp(void)
-{
- new_string();
- last_ts = first_ts = 0;
- BEGIN(HELP);
-}
-
-static void zconf_endhelp(void)
-{
- zconflval.string = text;
- BEGIN(INITIAL);
-}
-
-
-/*
- * Try to open specified file with following names:
- * ./name
- * $(srctree)/name
- * The latter is used when srctree is separate from objtree
- * when compiling the kernel.
- * Return NULL if file is not found.
- */
-FILE *zconf_fopen(const char *name)
-{
- char *env, fullname[PATH_MAX+1];
- FILE *f;
-
- f = fopen(name, "r");
- if (!f && name[0] != '/') {
- env = getenv(SRCTREE);
- if (env) {
- sprintf(fullname, "%s/%s", env, name);
- f = fopen(fullname, "r");
- }
- }
- return f;
-}
-
-void zconf_initscan(const char *name)
-{
- yyin = zconf_fopen(name);
- if (!yyin) {
- printf("can't find file %s\n", name);
- exit(1);
- }
-
- current_buf = malloc(sizeof(*current_buf));
- memset(current_buf, 0, sizeof(*current_buf));
-
- current_file = file_lookup(name);
- current_file->lineno = 1;
- current_file->flags = FILE_BUSY;
-}
-
-void zconf_nextfile(const char *name)
-{
- size_t i;
- int retval;
- glob_t files;
- char *filename;
- struct file *file;
- struct buffer *buf;
-
- retval = glob(name, GLOB_ERR | GLOB_MARK, NULL, &files);
- if (retval == GLOB_NOSPACE || retval == GLOB_ABORTED || retval == GLOB_NOMATCH) {
- printf("%s:%d: glob failed: %s \"%s\"\n", zconf_curname(), zconf_lineno(),
- retval == GLOB_NOSPACE ? "failed to allocate memory" :
- retval == GLOB_ABORTED ? "read error" : "no match",
- name);
- exit(1);
- }
-
- for (i = files.gl_pathc-1; i != (size_t)-1; --i) {
- filename = files.gl_pathv[i];
-
- file = file_lookup(filename);
- buf = malloc(sizeof(*buf));
- memset(buf, 0, sizeof(*buf));
- current_buf->state = YY_CURRENT_BUFFER;
- zconfin = zconf_fopen(filename);
- if (!zconfin) {
- printf("%s:%d: can't open file \"%s\"\n",
- zconf_curname(), zconf_lineno(), filename);
- exit(1);
- }
- zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
- buf->parent = current_buf;
- current_buf = buf;
-
- if (file->flags & FILE_BUSY) {
- printf("recursive scan (%s)?\n", filename);
- exit(1);
- }
- if (file->flags & FILE_SCANNED) {
- printf("file %s already scanned?\n", filename);
- exit(1);
- }
- file->flags |= FILE_BUSY;
- file->lineno = 1;
- file->parent = current_file;
- current_file = file;
- }
-}
-
-static struct buffer *zconf_endfile(void)
-{
- struct buffer *parent;
-
- current_file->flags |= FILE_SCANNED;
- current_file->flags &= ~FILE_BUSY;
- current_file = current_file->parent;
-
- parent = current_buf->parent;
- if (parent) {
- fclose(yyin);
- yy_delete_buffer(YY_CURRENT_BUFFER);
- yy_switch_to_buffer(parent->state);
- }
- free(current_buf);
- current_buf = parent;
-
- return parent;
-}
-
-int zconf_lineno(void)
-{
- if (current_buf)
- return current_file->lineno - 1;
- else
- return 0;
-}
-
-char *zconf_curname(void)
-{
- if (current_buf)
- return current_file->name;
- else
- return "<none>";
-}
diff --git a/openwrt/package/config/zconf.tab.c_shipped b/openwrt/package/config/zconf.tab.c_shipped
deleted file mode 100644
index 83dbf9ed57..0000000000
--- a/openwrt/package/config/zconf.tab.c_shipped
+++ /dev/null
@@ -1,2127 +0,0 @@
-/* A Bison parser, made by GNU Bison 1.875a. */
-
-/* Skeleton parser for Yacc-like parsing with Bison,
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-
- 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, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* As a special exception, when this file is copied by Bison into a
- Bison output file, you may use that output file without restriction.
- This special exception was added by the Free Software Foundation
- in version 1.24 of Bison. */
-
-/* Written by Richard Stallman by simplifying the original so called
- ``semantic'' parser. */
-
-/* All symbols defined below should begin with yy or YY, to avoid
- infringing on user name space. This should be done even for local
- variables, as they might otherwise be expanded by user macros.
- There are some unavoidable exceptions within include files to
- define necessary library symbols; they are noted "INFRINGES ON
- USER NAME SPACE" below. */
-
-/* Identify Bison output. */
-#define YYBISON 1
-
-/* Skeleton name. */
-#define YYSKELETON_NAME "yacc.c"
-
-/* Pure parsers. */
-#define YYPURE 0
-
-/* Using locations. */
-#define YYLSP_NEEDED 0
-
-/* If NAME_PREFIX is specified substitute the variables and functions
- names. */
-#define yyparse zconfparse
-#define yylex zconflex
-#define yyerror zconferror
-#define yylval zconflval
-#define yychar zconfchar
-#define yydebug zconfdebug
-#define yynerrs zconfnerrs
-
-
-/* Tokens. */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum yytokentype {
- T_MAINMENU = 258,
- T_MENU = 259,
- T_ENDMENU = 260,
- T_SOURCE = 261,
- T_CHOICE = 262,
- T_ENDCHOICE = 263,
- T_COMMENT = 264,
- T_CONFIG = 265,
- T_MENUCONFIG = 266,
- T_HELP = 267,
- T_HELPTEXT = 268,
- T_IF = 269,
- T_ENDIF = 270,
- T_DEPENDS = 271,
- T_REQUIRES = 272,
- T_OPTIONAL = 273,
- T_PROMPT = 274,
- T_DEFAULT = 275,
- T_TRISTATE = 276,
- T_DEF_TRISTATE = 277,
- T_BOOLEAN = 278,
- T_DEF_BOOLEAN = 279,
- T_STRING = 280,
- T_INT = 281,
- T_HEX = 282,
- T_WORD = 283,
- T_WORD_QUOTE = 284,
- T_UNEQUAL = 285,
- T_EOF = 286,
- T_EOL = 287,
- T_CLOSE_PAREN = 288,
- T_OPEN_PAREN = 289,
- T_ON = 290,
- T_SELECT = 291,
- T_RANGE = 292,
- T_OR = 293,
- T_AND = 294,
- T_EQUAL = 295,
- T_NOT = 296
- };
-#endif
-#define T_MAINMENU 258
-#define T_MENU 259
-#define T_ENDMENU 260
-#define T_SOURCE 261
-#define T_CHOICE 262
-#define T_ENDCHOICE 263
-#define T_COMMENT 264
-#define T_CONFIG 265
-#define T_MENUCONFIG 266
-#define T_HELP 267
-#define T_HELPTEXT 268
-#define T_IF 269
-#define T_ENDIF 270
-#define T_DEPENDS 271
-#define T_REQUIRES 272
-#define T_OPTIONAL 273
-#define T_PROMPT 274
-#define T_DEFAULT 275
-#define T_TRISTATE 276
-#define T_DEF_TRISTATE 277
-#define T_BOOLEAN 278
-#define T_DEF_BOOLEAN 279
-#define T_STRING 280
-#define T_INT 281
-#define T_HEX 282
-#define T_WORD 283
-#define T_WORD_QUOTE 284
-#define T_UNEQUAL 285
-#define T_EOF 286
-#define T_EOL 287
-#define T_CLOSE_PAREN 288
-#define T_OPEN_PAREN 289
-#define T_ON 290
-#define T_SELECT 291
-#define T_RANGE 292
-#define T_OR 293
-#define T_AND 294
-#define T_EQUAL 295
-#define T_NOT 296
-
-
-
-
-/* Copy the first part of user declarations. */
-
-
-/*
- * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
- * Released under the terms of the GNU GPL v2.0.
- */
-
-#include <ctype.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdbool.h>
-
-#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
-
-#define PRINTD 0x0001
-#define DEBUG_PARSE 0x0002
-
-int cdebug = PRINTD;
-
-extern int zconflex(void);
-static void zconfprint(const char *err, ...);
-static void zconferror(const char *err);
-static bool zconf_endtoken(int token, int starttoken, int endtoken);
-
-struct symbol *symbol_hash[257];
-
-#define YYERROR_VERBOSE
-
-
-/* Enabling traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-
-typedef union YYSTYPE {
- int token;
- char *string;
- struct symbol *symbol;
- struct expr *expr;
- struct menu *menu;
-} YYSTYPE;
-/* Line 191 of yacc.c. */
-
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
-#endif
-
-
-
-/* Copy the second part of user declarations. */
-
-
-#define LKC_DIRECT_LINK
-#include "lkc.h"
-
-
-/* Line 214 of yacc.c. */
-
-
-#if ! defined (yyoverflow) || YYERROR_VERBOSE
-
-/* The parser invokes alloca or malloc; define the necessary symbols. */
-
-# if YYSTACK_USE_ALLOCA
-# define YYSTACK_ALLOC alloca
-# else
-# ifndef YYSTACK_USE_ALLOCA
-# if defined (alloca) || defined (_ALLOCA_H)
-# define YYSTACK_ALLOC alloca
-# else
-# ifdef __GNUC__
-# define YYSTACK_ALLOC __builtin_alloca
-# endif
-# endif
-# endif
-# endif
-
-# ifdef YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-# else
-# if defined (__STDC__) || defined (__cplusplus)
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# endif
-# define YYSTACK_ALLOC malloc
-# define YYSTACK_FREE free
-# endif
-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-
-
-#if (! defined (yyoverflow) \
- && (! defined (__cplusplus) \
- || (YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member. */
-union yyalloc
-{
- short yyss;
- YYSTYPE yyvs;
- };
-
-/* The size of the maximum gap between one aligned stack and the next. */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
- N elements. */
-# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
- + YYSTACK_GAP_MAXIMUM)
-
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- register YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (0)
-# endif
-# endif
-
-/* Relocate STACK from its old location to the new one. The
- local variables YYSIZE and YYSTACKSIZE give the old and new number of
- elements in the stack, and YYPTR gives the new location of the
- stack. Advance YYPTR to a properly aligned location for the next
- stack. */
-# define YYSTACK_RELOCATE(Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack, Stack, yysize); \
- Stack = &yyptr->Stack; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (0)
-
-#endif
-
-#if defined (__STDC__) || defined (__cplusplus)
- typedef signed char yysigned_char;
-#else
- typedef short yysigned_char;
-#endif
-
-/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 2
-/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 201
-
-/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 42
-/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 41
-/* YYNRULES -- Number of rules. */
-#define YYNRULES 104
-/* YYNRULES -- Number of states. */
-#define YYNSTATES 182
-
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
-#define YYUNDEFTOK 2
-#define YYMAXUTOK 296
-
-#define YYTRANSLATE(YYX) \
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
-static const unsigned char yytranslate[] =
-{
- 0, 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, 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, 2, 2, 2, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41
-};
-
-#if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
- YYRHS. */
-static const unsigned short yyprhs[] =
-{
- 0, 0, 3, 4, 7, 9, 11, 13, 17, 19,
- 21, 23, 26, 28, 30, 32, 34, 36, 38, 42,
- 45, 49, 52, 53, 56, 59, 62, 65, 69, 74,
- 78, 83, 87, 91, 95, 100, 105, 110, 116, 119,
- 122, 124, 128, 131, 132, 135, 138, 141, 144, 149,
- 153, 157, 160, 165, 166, 169, 173, 175, 179, 182,
- 183, 186, 189, 192, 196, 199, 201, 205, 208, 209,
- 212, 215, 218, 222, 226, 228, 232, 235, 238, 241,
- 242, 245, 248, 253, 257, 261, 262, 265, 267, 269,
- 272, 275, 278, 280, 282, 283, 286, 288, 292, 296,
- 300, 303, 307, 311, 313
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const yysigned_char yyrhs[] =
-{
- 43, 0, -1, -1, 43, 44, -1, 45, -1, 55,
- -1, 66, -1, 3, 77, 79, -1, 5, -1, 15,
- -1, 8, -1, 1, 79, -1, 61, -1, 71, -1,
- 47, -1, 49, -1, 69, -1, 79, -1, 10, 28,
- 32, -1, 46, 50, -1, 11, 28, 32, -1, 48,
- 50, -1, -1, 50, 51, -1, 50, 75, -1, 50,
- 73, -1, 50, 32, -1, 21, 76, 32, -1, 22,
- 81, 80, 32, -1, 23, 76, 32, -1, 24, 81,
- 80, 32, -1, 26, 76, 32, -1, 27, 76, 32,
- -1, 25, 76, 32, -1, 19, 77, 80, 32, -1,
- 20, 81, 80, 32, -1, 36, 28, 80, 32, -1,
- 37, 82, 82, 80, 32, -1, 7, 32, -1, 52,
- 56, -1, 78, -1, 53, 58, 54, -1, 53, 58,
- -1, -1, 56, 57, -1, 56, 75, -1, 56, 73,
- -1, 56, 32, -1, 19, 77, 80, 32, -1, 21,
- 76, 32, -1, 23, 76, 32, -1, 18, 32, -1,
- 20, 28, 80, 32, -1, -1, 58, 45, -1, 14,
- 81, 32, -1, 78, -1, 59, 62, 60, -1, 59,
- 62, -1, -1, 62, 45, -1, 62, 66, -1, 62,
- 55, -1, 4, 77, 32, -1, 63, 74, -1, 78,
- -1, 64, 67, 65, -1, 64, 67, -1, -1, 67,
- 45, -1, 67, 66, -1, 67, 55, -1, 67, 1,
- 32, -1, 6, 77, 32, -1, 68, -1, 9, 77,
- 32, -1, 70, 74, -1, 12, 32, -1, 72, 13,
- -1, -1, 74, 75, -1, 74, 32, -1, 16, 35,
- 81, 32, -1, 16, 81, 32, -1, 17, 81, 32,
- -1, -1, 77, 80, -1, 28, -1, 29, -1, 5,
- 79, -1, 8, 79, -1, 15, 79, -1, 32, -1,
- 31, -1, -1, 14, 81, -1, 82, -1, 82, 40,
- 82, -1, 82, 30, 82, -1, 34, 81, 33, -1,
- 41, 81, -1, 81, 38, 81, -1, 81, 39, 81,
- -1, 28, -1, 29, -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-static const unsigned short yyrline[] =
-{
- 0, 94, 94, 95, 98, 99, 100, 101, 102, 103,
- 104, 105, 109, 110, 111, 112, 113, 114, 120, 128,
- 134, 142, 152, 154, 155, 156, 157, 160, 166, 173,
- 179, 186, 192, 198, 204, 210, 216, 222, 230, 239,
- 245, 254, 255, 261, 263, 264, 265, 266, 269, 275,
- 281, 287, 293, 299, 301, 306, 315, 324, 325, 331,
- 333, 334, 335, 340, 347, 353, 362, 363, 369, 371,
- 372, 373, 374, 377, 383, 390, 397, 404, 410, 417,
- 418, 419, 422, 427, 432, 440, 442, 447, 448, 451,
- 452, 453, 457, 457, 459, 460, 463, 464, 465, 466,
- 467, 468, 469, 472, 473
-};
-#endif
-
-#if YYDEBUG || YYERROR_VERBOSE
-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-static const char *const yytname[] =
-{
- "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU",
- "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
- "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
- "T_REQUIRES", "T_OPTIONAL", "T_PROMPT", "T_DEFAULT", "T_TRISTATE",
- "T_DEF_TRISTATE", "T_BOOLEAN", "T_DEF_BOOLEAN", "T_STRING", "T_INT",
- "T_HEX", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", "T_EOF", "T_EOL",
- "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_ON", "T_SELECT", "T_RANGE", "T_OR",
- "T_AND", "T_EQUAL", "T_NOT", "$accept", "input", "block",
- "common_block", "config_entry_start", "config_stmt",
- "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
- "config_option", "choice", "choice_entry", "choice_end", "choice_stmt",
- "choice_option_list", "choice_option", "choice_block", "if", "if_end",
- "if_stmt", "if_block", "menu", "menu_entry", "menu_end", "menu_stmt",
- "menu_block", "source", "source_stmt", "comment", "comment_stmt",
- "help_start", "help", "depends_list", "depends", "prompt_stmt_opt",
- "prompt", "end", "nl_or_eof", "if_expr", "expr", "symbol", 0
-};
-#endif
-
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
- token YYLEX-NUM. */
-static const unsigned short yytoknum[] =
-{
- 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296
-};
-# endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const unsigned char yyr1[] =
-{
- 0, 42, 43, 43, 44, 44, 44, 44, 44, 44,
- 44, 44, 45, 45, 45, 45, 45, 45, 46, 47,
- 48, 49, 50, 50, 50, 50, 50, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51, 52, 53,
- 54, 55, 55, 56, 56, 56, 56, 56, 57, 57,
- 57, 57, 57, 58, 58, 59, 60, 61, 61, 62,
- 62, 62, 62, 63, 64, 65, 66, 66, 67, 67,
- 67, 67, 67, 68, 69, 70, 71, 72, 73, 74,
- 74, 74, 75, 75, 75, 76, 76, 77, 77, 78,
- 78, 78, 79, 79, 80, 80, 81, 81, 81, 81,
- 81, 81, 81, 82, 82
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const unsigned char yyr2[] =
-{
- 0, 2, 0, 2, 1, 1, 1, 3, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1, 3, 2,
- 3, 2, 0, 2, 2, 2, 2, 3, 4, 3,
- 4, 3, 3, 3, 4, 4, 4, 5, 2, 2,
- 1, 3, 2, 0, 2, 2, 2, 2, 4, 3,
- 3, 2, 4, 0, 2, 3, 1, 3, 2, 0,
- 2, 2, 2, 3, 2, 1, 3, 2, 0, 2,
- 2, 2, 3, 3, 1, 3, 2, 2, 2, 0,
- 2, 2, 4, 3, 3, 0, 2, 1, 1, 2,
- 2, 2, 1, 1, 0, 2, 1, 3, 3, 3,
- 2, 3, 3, 1, 1
-};
-
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
- means the default is an error. */
-static const unsigned char yydefact[] =
-{
- 2, 0, 1, 0, 0, 0, 8, 0, 0, 10,
- 0, 0, 0, 0, 9, 93, 92, 3, 4, 22,
- 14, 22, 15, 43, 53, 5, 59, 12, 79, 68,
- 6, 74, 16, 79, 13, 17, 11, 87, 88, 0,
- 0, 0, 38, 0, 0, 0, 103, 104, 0, 0,
- 0, 96, 19, 21, 39, 42, 58, 64, 0, 76,
- 7, 63, 73, 75, 18, 20, 0, 100, 55, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 85, 0,
- 85, 0, 85, 85, 85, 26, 0, 0, 23, 0,
- 25, 24, 0, 0, 0, 85, 85, 47, 44, 46,
- 45, 0, 0, 0, 54, 41, 40, 60, 62, 57,
- 61, 56, 81, 80, 0, 69, 71, 66, 70, 65,
- 99, 101, 102, 98, 97, 77, 0, 0, 0, 94,
- 94, 0, 94, 94, 0, 94, 0, 0, 0, 94,
- 0, 78, 51, 94, 94, 0, 0, 89, 90, 91,
- 72, 0, 83, 84, 0, 0, 0, 27, 86, 0,
- 29, 0, 33, 31, 32, 0, 94, 0, 0, 49,
- 50, 82, 95, 34, 35, 28, 30, 36, 0, 48,
- 52, 37
-};
-
-/* YYDEFGOTO[NTERM-NUM]. */
-static const short yydefgoto[] =
-{
- -1, 1, 17, 18, 19, 20, 21, 22, 52, 88,
- 23, 24, 105, 25, 54, 98, 55, 26, 109, 27,
- 56, 28, 29, 117, 30, 58, 31, 32, 33, 34,
- 89, 90, 57, 91, 131, 132, 106, 35, 155, 50,
- 51
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- STATE-NUM. */
-#define YYPACT_NINF -99
-static const short yypact[] =
-{
- -99, 48, -99, 38, 46, 46, -99, 46, -29, -99,
- 46, -17, -3, -11, -99, -99, -99, -99, -99, -99,
- -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
- -99, -99, -99, -99, -99, -99, -99, -99, -99, 38,
- 12, 15, -99, 18, 51, 62, -99, -99, -11, -11,
- 4, -24, 138, 138, 160, 121, 110, -4, 81, -4,
- -99, -99, -99, -99, -99, -99, -19, -99, -99, -11,
- -11, 70, 70, 73, 32, -11, 46, -11, 46, -11,
- 46, -11, 46, 46, 46, -99, 36, 70, -99, 95,
- -99, -99, 96, 46, 106, 46, 46, -99, -99, -99,
- -99, 38, 38, 38, -99, -99, -99, -99, -99, -99,
- -99, -99, -99, -99, 112, -99, -99, -99, -99, -99,
- -99, 117, -99, -99, -99, -99, -11, 33, 65, 131,
- 1, 119, 131, 1, 136, 1, 153, 154, 155, 131,
- 70, -99, -99, 131, 131, 156, 157, -99, -99, -99,
- -99, 101, -99, -99, -11, 158, 159, -99, -99, 161,
- -99, 162, -99, -99, -99, 163, 131, 164, 165, -99,
- -99, -99, 99, -99, -99, -99, -99, -99, 166, -99,
- -99, -99
-};
-
-/* YYPGOTO[NTERM-NUM]. */
-static const short yypgoto[] =
-{
- -99, -99, -99, 111, -99, -99, -99, -99, 178, -99,
- -99, -99, -99, 91, -99, -99, -99, -99, -99, -99,
- -99, -99, -99, -99, 115, -99, -99, -99, -99, -99,
- -99, 146, 168, 89, 27, 0, 126, -1, -98, -48,
- -63
-};
-
-/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
- positive, shift that token. If negative, reduce the rule which
- number is the opposite. If zero, do what YYDEFACT says.
- If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -68
-static const short yytable[] =
-{
- 66, 67, 36, 42, 39, 40, 71, 41, 123, 124,
- 43, 44, 74, 75, 120, 154, 72, 46, 47, 69,
- 70, 121, 122, 48, 140, 45, 127, 128, 112, 130,
- 49, 133, 156, 135, 158, 159, 68, 161, 60, 69,
- 70, 165, 69, 70, 61, 167, 168, 62, 2, 3,
- 63, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 46, 47, 13, 14, 139, 152, 48, 126, 178, 15,
- 16, 69, 70, 49, 37, 38, 129, 166, 151, 15,
- 16, -67, 114, 64, -67, 5, 101, 7, 8, 102,
- 10, 11, 12, 143, 65, 13, 103, 153, 46, 47,
- 147, 148, 149, 69, 70, 125, 172, 134, 141, 136,
- 137, 138, 15, 16, 5, 101, 7, 8, 102, 10,
- 11, 12, 145, 146, 13, 103, 101, 7, 142, 102,
- 10, 11, 12, 171, 144, 13, 103, 69, 70, 69,
- 70, 15, 16, 100, 150, 154, 113, 108, 113, 116,
- 73, 157, 15, 16, 74, 75, 70, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 104, 107, 160, 115,
- 85, 110, 73, 118, 86, 87, 74, 75, 92, 93,
- 94, 95, 111, 96, 119, 162, 163, 164, 169, 170,
- 173, 174, 97, 175, 176, 177, 179, 180, 181, 53,
- 99, 59
-};
-
-static const unsigned char yycheck[] =
-{
- 48, 49, 3, 32, 4, 5, 30, 7, 71, 72,
- 10, 28, 16, 17, 33, 14, 40, 28, 29, 38,
- 39, 69, 70, 34, 87, 28, 74, 75, 32, 77,
- 41, 79, 130, 81, 132, 133, 32, 135, 39, 38,
- 39, 139, 38, 39, 32, 143, 144, 32, 0, 1,
- 32, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 28, 29, 14, 15, 28, 32, 34, 35, 166, 31,
- 32, 38, 39, 41, 28, 29, 76, 140, 126, 31,
- 32, 0, 1, 32, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 93, 32, 14, 15, 32, 28, 29,
- 101, 102, 103, 38, 39, 32, 154, 80, 13, 82,
- 83, 84, 31, 32, 4, 5, 6, 7, 8, 9,
- 10, 11, 95, 96, 14, 15, 5, 6, 32, 8,
- 9, 10, 11, 32, 28, 14, 15, 38, 39, 38,
- 39, 31, 32, 54, 32, 14, 57, 56, 59, 58,
- 12, 32, 31, 32, 16, 17, 39, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 55, 56, 32, 58,
- 32, 56, 12, 58, 36, 37, 16, 17, 18, 19,
- 20, 21, 56, 23, 58, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 21,
- 54, 33
-};
-
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
-static const unsigned char yystos[] =
-{
- 0, 43, 0, 1, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 14, 15, 31, 32, 44, 45, 46,
- 47, 48, 49, 52, 53, 55, 59, 61, 63, 64,
- 66, 68, 69, 70, 71, 79, 79, 28, 29, 77,
- 77, 77, 32, 77, 28, 28, 28, 29, 34, 41,
- 81, 82, 50, 50, 56, 58, 62, 74, 67, 74,
- 79, 32, 32, 32, 32, 32, 81, 81, 32, 38,
- 39, 30, 40, 12, 16, 17, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 32, 36, 37, 51, 72,
- 73, 75, 18, 19, 20, 21, 23, 32, 57, 73,
- 75, 5, 8, 15, 45, 54, 78, 45, 55, 60,
- 66, 78, 32, 75, 1, 45, 55, 65, 66, 78,
- 33, 81, 81, 82, 82, 32, 35, 81, 81, 77,
- 81, 76, 77, 81, 76, 81, 76, 76, 76, 28,
- 82, 13, 32, 77, 28, 76, 76, 79, 79, 79,
- 32, 81, 32, 32, 14, 80, 80, 32, 80, 80,
- 32, 80, 32, 32, 32, 80, 82, 80, 80, 32,
- 32, 32, 81, 32, 32, 32, 32, 32, 80, 32,
- 32, 32
-};
-
-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-# define YYSIZE_T __SIZE_TYPE__
-#endif
-#if ! defined (YYSIZE_T) && defined (size_t)
-# define YYSIZE_T size_t
-#endif
-#if ! defined (YYSIZE_T)
-# if defined (__STDC__) || defined (__cplusplus)
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# endif
-#endif
-#if ! defined (YYSIZE_T)
-# define YYSIZE_T unsigned int
-#endif
-
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
-
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrlab1
-
-
-/* Like YYERROR except do call yyerror. This remains here temporarily
- to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
-
-#define YYFAIL goto yyerrlab
-
-#define YYRECOVERING() (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- yytoken = YYTRANSLATE (yychar); \
- YYPOPSTACK; \
- goto yybackup; \
- } \
- else \
- { \
- yyerror ("syntax error: cannot back up");\
- YYERROR; \
- } \
-while (0)
-
-#define YYTERROR 1
-#define YYERRCODE 256
-
-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
- are run). */
-
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- Current.first_line = Rhs[1].first_line; \
- Current.first_column = Rhs[1].first_column; \
- Current.last_line = Rhs[N].last_line; \
- Current.last_column = Rhs[N].last_column;
-#endif
-
-/* YYLEX -- calling `yylex' with the right arguments. */
-
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
-
-/* Enable debugging if requested. */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-# define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (0)
-
-# define YYDSYMPRINT(Args) \
-do { \
- if (yydebug) \
- yysymprint Args; \
-} while (0)
-
-# define YYDSYMPRINTF(Title, Token, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yysymprint (stderr, \
- Token, Value); \
- YYFPRINTF (stderr, "\n"); \
- } \
-} while (0)
-
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (cinluded). |
-`------------------------------------------------------------------*/
-
-#if defined (__STDC__) || defined (__cplusplus)
-static void
-yy_stack_print (short *bottom, short *top)
-#else
-static void
-yy_stack_print (bottom, top)
- short *bottom;
- short *top;
-#endif
-{
- YYFPRINTF (stderr, "Stack now");
- for (/* Nothing. */; bottom <= top; ++bottom)
- YYFPRINTF (stderr, " %d", *bottom);
- YYFPRINTF (stderr, "\n");
-}
-
-# define YY_STACK_PRINT(Bottom, Top) \
-do { \
- if (yydebug) \
- yy_stack_print ((Bottom), (Top)); \
-} while (0)
-
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced. |
-`------------------------------------------------*/
-
-#if defined (__STDC__) || defined (__cplusplus)
-static void
-yy_reduce_print (int yyrule)
-#else
-static void
-yy_reduce_print (yyrule)
- int yyrule;
-#endif
-{
- int yyi;
- unsigned int yylineno = yyrline[yyrule];
- YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
- yyrule - 1, yylineno);
- /* Print the symbols being reduced, and their result. */
- for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
- YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
- YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
-}
-
-# define YY_REDUCE_PRINT(Rule) \
-do { \
- if (yydebug) \
- yy_reduce_print (Rule); \
-} while (0)
-
-/* Nonzero means print parse trace. It is left uninitialized so that
- multiple parsers can coexist. */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YYDSYMPRINT(Args)
-# define YYDSYMPRINTF(Title, Token, Value, Location)
-# define YY_STACK_PRINT(Bottom, Top)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef YYINITDEPTH
-# define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
- if the built-in stack extension method is used).
-
- Do not make this value too large; the results are undefined if
- SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
- evaluated with infinite-precision integer arithmetic. */
-
-#if YYMAXDEPTH == 0
-# undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-# if defined (__GLIBC__) && defined (_STRING_H)
-# define yystrlen strlen
-# else
-/* Return the length of YYSTR. */
-static YYSIZE_T
-# if defined (__STDC__) || defined (__cplusplus)
-yystrlen (const char *yystr)
-# else
-yystrlen (yystr)
- const char *yystr;
-# endif
-{
- register const char *yys = yystr;
-
- while (*yys++ != '\0')
- continue;
-
- return yys - yystr - 1;
-}
-# endif
-# endif
-
-# ifndef yystpcpy
-# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-# define yystpcpy stpcpy
-# else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
-static char *
-# if defined (__STDC__) || defined (__cplusplus)
-yystpcpy (char *yydest, const char *yysrc)
-# else
-yystpcpy (yydest, yysrc)
- char *yydest;
- const char *yysrc;
-# endif
-{
- register char *yyd = yydest;
- register const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
-
-#endif /* !YYERROR_VERBOSE */
-
-
-
-#if YYDEBUG
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
-
-#if defined (__STDC__) || defined (__cplusplus)
-static void
-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yysymprint (yyoutput, yytype, yyvaluep)
- FILE *yyoutput;
- int yytype;
- YYSTYPE *yyvaluep;
-#endif
-{
- /* Pacify ``unused variable'' warnings. */
- (void) yyvaluep;
-
- if (yytype < YYNTOKENS)
- {
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-# ifdef YYPRINT
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# endif
- }
- else
- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
- switch (yytype)
- {
- default:
- break;
- }
- YYFPRINTF (yyoutput, ")");
-}
-
-#endif /* ! YYDEBUG */
-/*-----------------------------------------------.
-| Release the memory associated to this symbol. |
-`-----------------------------------------------*/
-
-#if defined (__STDC__) || defined (__cplusplus)
-static void
-yydestruct (int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yytype, yyvaluep)
- int yytype;
- YYSTYPE *yyvaluep;
-#endif
-{
- /* Pacify ``unused variable'' warnings. */
- (void) yyvaluep;
-
- switch (yytype)
- {
-
- default:
- break;
- }
-}
-
-
-/* Prevent warnings from -Wmissing-prototypes. */
-
-#ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
-int yyparse (void *YYPARSE_PARAM);
-# else
-int yyparse ();
-# endif
-#else /* ! YYPARSE_PARAM */
-#if defined (__STDC__) || defined (__cplusplus)
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
-
-
-/* The lookahead symbol. */
-int yychar;
-
-/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval;
-
-/* Number of syntax errors so far. */
-int yynerrs;
-
-
-
-/*----------.
-| yyparse. |
-`----------*/
-
-#ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
-int yyparse (void *YYPARSE_PARAM)
-# else
-int yyparse (YYPARSE_PARAM)
- void *YYPARSE_PARAM;
-# endif
-#else /* ! YYPARSE_PARAM */
-#if defined (__STDC__) || defined (__cplusplus)
-int
-yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
-{
-
- register int yystate;
- register int yyn;
- int yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Lookahead token as an internal (translated) token number. */
- int yytoken = 0;
-
- /* Three stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
- `yyls': related to locations.
-
- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- short yyssa[YYINITDEPTH];
- short *yyss = yyssa;
- register short *yyssp;
-
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs = yyvsa;
- register YYSTYPE *yyvsp;
-
-
-
-#define YYPOPSTACK (yyvsp--, yyssp--)
-
- YYSIZE_T yystacksize = YYINITDEPTH;
-
- /* The variables used to return semantic value and location from the
- action routines. */
- YYSTYPE yyval;
-
-
- /* When reducing, the number of symbols on the RHS of the reduced
- rule. */
- int yylen;
-
- YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
- yyssp = yyss;
- yyvsp = yyvs;
-
- goto yysetstate;
-
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate. |
-`------------------------------------------------------------*/
- yynewstate:
- /* In all cases, when you get here, the value and location stacks
- have just been pushed. so pushing a state here evens the stacks.
- */
- yyssp++;
-
- yysetstate:
- *yyssp = yystate;
-
- if (yyss + yystacksize - 1 <= yyssp)
- {
- /* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = yyssp - yyss + 1;
-
-#ifdef yyoverflow
- {
- /* Give user a chance to reallocate the stack. Use copies of
- these so that the &'s don't force the real ones into
- memory. */
- YYSTYPE *yyvs1 = yyvs;
- short *yyss1 = yyss;
-
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. This used to be a
- conditional around just the two extra args, but that might
- be undefined if yyoverflow is a macro. */
- yyoverflow ("parser stack overflow",
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
-
- &yystacksize);
-
- yyss = yyss1;
- yyvs = yyvs1;
- }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
- goto yyoverflowlab;
-# else
- /* Extend the stack our own way. */
- if (YYMAXDEPTH <= yystacksize)
- goto yyoverflowlab;
- yystacksize *= 2;
- if (YYMAXDEPTH < yystacksize)
- yystacksize = YYMAXDEPTH;
-
- {
- short *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyoverflowlab;
- YYSTACK_RELOCATE (yyss);
- YYSTACK_RELOCATE (yyvs);
-
-# undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
- }
-# endif
-#endif /* no yyoverflow */
-
- yyssp = yyss + yysize - 1;
- yyvsp = yyvs + yysize - 1;
-
-
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
-
- if (yyss + yystacksize - 1 <= yyssp)
- YYABORT;
- }
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
- goto yybackup;
-
-/*-----------.
-| yybackup. |
-`-----------*/
-yybackup:
-
-/* Do appropriate processing given the current state. */
-/* Read a lookahead token if we need one and don't already have one. */
-/* yyresume: */
-
- /* First try to decide what to do without reference to lookahead token. */
-
- yyn = yypact[yystate];
- if (yyn == YYPACT_NINF)
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
- if (yychar == YYEMPTY)
- {
- YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
- }
-
- if (yychar <= YYEOF)
- {
- yychar = yytoken = YYEOF;
- YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- yytoken = YYTRANSLATE (yychar);
- YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
- }
-
- /* If the proper action on seeing token YYTOKEN is to reduce or to
- detect an error, take that action. */
- yyn += yytoken;
- if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
- goto yydefault;
- yyn = yytable[yyn];
- if (yyn <= 0)
- {
- if (yyn == 0 || yyn == YYTABLE_NINF)
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- /* Shift the lookahead token. */
- YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
-
- /* Discard the token being shifted unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
-
- *++yyvsp = yylval;
-
-
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus)
- yyerrstatus--;
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state. |
-`-----------------------------------------------------------*/
-yydefault:
- yyn = yydefact[yystate];
- if (yyn == 0)
- goto yyerrlab;
- goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- Do a reduction. |
-`-----------------------------*/
-yyreduce:
- /* yyn is the number of a rule to reduce with. */
- yylen = yyr2[yyn];
-
- /* If YYLEN is nonzero, implement the default value of the action:
- `$$ = $1'.
-
- Otherwise, the following line sets YYVAL to garbage.
- This behavior is undocumented and Bison
- users should not rely upon it. Assigning to YYVAL
- unconditionally makes the parser a bit smaller, and it avoids a
- GCC warning that YYVAL may be used uninitialized. */
- yyval = yyvsp[1-yylen];
-
-
- YY_REDUCE_PRINT (yyn);
- switch (yyn)
- {
- case 8:
-
- { zconfprint("unexpected 'endmenu' statement"); ;}
- break;
-
- case 9:
-
- { zconfprint("unexpected 'endif' statement"); ;}
- break;
-
- case 10:
-
- { zconfprint("unexpected 'endchoice' statement"); ;}
- break;
-
- case 11:
-
- { zconfprint("syntax error"); yyerrok; ;}
- break;
-
- case 18:
-
- {
- struct symbol *sym = sym_lookup(yyvsp[-1].string, 0);
- sym->flags |= SYMBOL_OPTIONAL;
- menu_add_entry(sym);
- printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
-;}
- break;
-
- case 19:
-
- {
- menu_end_entry();
- printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 20:
-
- {
- struct symbol *sym = sym_lookup(yyvsp[-1].string, 0);
- sym->flags |= SYMBOL_OPTIONAL;
- menu_add_entry(sym);
- printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
-;}
- break;
-
- case 21:
-
- {
- if (current_entry->prompt)
- current_entry->prompt->type = P_MENU;
- else
- zconfprint("warning: menuconfig statement without prompt");
- menu_end_entry();
- printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 27:
-
- {
- menu_set_type(S_TRISTATE);
- printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 28:
-
- {
- menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
- menu_set_type(S_TRISTATE);
- printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 29:
-
- {
- menu_set_type(S_BOOLEAN);
- printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 30:
-
- {
- menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
- menu_set_type(S_BOOLEAN);
- printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 31:
-
- {
- menu_set_type(S_INT);
- printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 32:
-
- {
- menu_set_type(S_HEX);
- printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 33:
-
- {
- menu_set_type(S_STRING);
- printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 34:
-
- {
- menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr);
- printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 35:
-
- {
- menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
- printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 36:
-
- {
- menu_add_symbol(P_SELECT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr);
- printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 37:
-
- {
- menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,yyvsp[-3].symbol, yyvsp[-2].symbol), yyvsp[-1].expr);
- printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 38:
-
- {
- struct symbol *sym = sym_lookup(NULL, 0);
- sym->flags |= SYMBOL_CHOICE;
- menu_add_entry(sym);
- menu_add_expr(P_CHOICE, NULL, NULL);
- printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 39:
-
- {
- menu_end_entry();
- menu_add_menu();
-;}
- break;
-
- case 40:
-
- {
- if (zconf_endtoken(yyvsp[0].token, T_CHOICE, T_ENDCHOICE)) {
- menu_end_menu();
- printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
- }
-;}
- break;
-
- case 42:
-
- {
- printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno);
- zconfnerrs++;
-;}
- break;
-
- case 48:
-
- {
- menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr);
- printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 49:
-
- {
- menu_set_type(S_TRISTATE);
- printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 50:
-
- {
- menu_set_type(S_BOOLEAN);
- printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 51:
-
- {
- current_entry->sym->flags |= SYMBOL_OPTIONAL;
- printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 52:
-
- {
- menu_add_symbol(P_DEFAULT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr);
- printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 55:
-
- {
- printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
- menu_add_entry(NULL);
- menu_add_dep(yyvsp[-1].expr);
- menu_end_entry();
- menu_add_menu();
-;}
- break;
-
- case 56:
-
- {
- if (zconf_endtoken(yyvsp[0].token, T_IF, T_ENDIF)) {
- menu_end_menu();
- printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
- }
-;}
- break;
-
- case 58:
-
- {
- printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno);
- zconfnerrs++;
-;}
- break;
-
- case 63:
-
- {
- menu_add_entry(NULL);
- menu_add_prop(P_MENU, yyvsp[-1].string, NULL, NULL);
- printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 64:
-
- {
- menu_end_entry();
- menu_add_menu();
-;}
- break;
-
- case 65:
-
- {
- if (zconf_endtoken(yyvsp[0].token, T_MENU, T_ENDMENU)) {
- menu_end_menu();
- printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
- }
-;}
- break;
-
- case 67:
-
- {
- printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno);
- zconfnerrs++;
-;}
- break;
-
- case 72:
-
- { zconfprint("invalid menu option"); yyerrok; ;}
- break;
-
- case 73:
-
- {
- yyval.string = yyvsp[-1].string;
- printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
-;}
- break;
-
- case 74:
-
- {
- zconf_nextfile(yyvsp[0].string);
-;}
- break;
-
- case 75:
-
- {
- menu_add_entry(NULL);
- menu_add_prop(P_COMMENT, yyvsp[-1].string, NULL, NULL);
- printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 76:
-
- {
- menu_end_entry();
-;}
- break;
-
- case 77:
-
- {
- printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
- zconf_starthelp();
-;}
- break;
-
- case 78:
-
- {
- current_entry->sym->help = yyvsp[0].string;
-;}
- break;
-
- case 82:
-
- {
- menu_add_dep(yyvsp[-1].expr);
- printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 83:
-
- {
- menu_add_dep(yyvsp[-1].expr);
- printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 84:
-
- {
- menu_add_dep(yyvsp[-1].expr);
- printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
-;}
- break;
-
- case 86:
-
- {
- menu_add_prop(P_PROMPT, yyvsp[-1].string, NULL, yyvsp[0].expr);
-;}
- break;
-
- case 89:
-
- { yyval.token = T_ENDMENU; ;}
- break;
-
- case 90:
-
- { yyval.token = T_ENDCHOICE; ;}
- break;
-
- case 91:
-
- { yyval.token = T_ENDIF; ;}
- break;
-
- case 94:
-
- { yyval.expr = NULL; ;}
- break;
-
- case 95:
-
- { yyval.expr = yyvsp[0].expr; ;}
- break;
-
- case 96:
-
- { yyval.expr = expr_alloc_symbol(yyvsp[0].symbol); ;}
- break;
-
- case 97:
-
- { yyval.expr = expr_alloc_comp(E_EQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;}
- break;
-
- case 98:
-
- { yyval.expr = expr_alloc_comp(E_UNEQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;}
- break;
-
- case 99:
-
- { yyval.expr = yyvsp[-1].expr; ;}
- break;
-
- case 100:
-
- { yyval.expr = expr_alloc_one(E_NOT, yyvsp[0].expr); ;}
- break;
-
- case 101:
-
- { yyval.expr = expr_alloc_two(E_OR, yyvsp[-2].expr, yyvsp[0].expr); ;}
- break;
-
- case 102:
-
- { yyval.expr = expr_alloc_two(E_AND, yyvsp[-2].expr, yyvsp[0].expr); ;}
- break;
-
- case 103:
-
- { yyval.symbol = sym_lookup(yyvsp[0].string, 0); free(yyvsp[0].string); ;}
- break;
-
- case 104:
-
- { yyval.symbol = sym_lookup(yyvsp[0].string, 1); free(yyvsp[0].string); ;}
- break;
-
-
- }
-
-/* Line 999 of yacc.c. */
-
-
- yyvsp -= yylen;
- yyssp -= yylen;
-
-
- YY_STACK_PRINT (yyss, yyssp);
-
- *++yyvsp = yyval;
-
-
- /* Now `shift' the result of the reduction. Determine what state
- that goes to, based on the state we popped back to and the rule
- number reduced by. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
- if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTOKENS];
-
- goto yynewstate;
-
-
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
- /* If not already recovering from an error, report this error. */
- if (!yyerrstatus)
- {
- ++yynerrs;
-#if YYERROR_VERBOSE
- yyn = yypact[yystate];
-
- if (YYPACT_NINF < yyn && yyn < YYLAST)
- {
- YYSIZE_T yysize = 0;
- int yytype = YYTRANSLATE (yychar);
- char *yymsg;
- int yyx, yycount;
-
- yycount = 0;
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- yysize += yystrlen (yytname[yyx]) + 15, yycount++;
- yysize += yystrlen ("syntax error, unexpected ") + 1;
- yysize += yystrlen (yytname[yytype]);
- yymsg = (char *) YYSTACK_ALLOC (yysize);
- if (yymsg != 0)
- {
- char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
- yyp = yystpcpy (yyp, yytname[yytype]);
-
- if (yycount < 5)
- {
- yycount = 0;
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *));
- yyx++)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
- const char *yyq = ! yycount ? ", expecting " : " or ";
- yyp = yystpcpy (yyp, yyq);
- yyp = yystpcpy (yyp, yytname[yyx]);
- yycount++;
- }
- }
- yyerror (yymsg);
- YYSTACK_FREE (yymsg);
- }
- else
- yyerror ("syntax error; also virtual memory exhausted");
- }
- else
-#endif /* YYERROR_VERBOSE */
- yyerror ("syntax error");
- }
-
-
-
- if (yyerrstatus == 3)
- {
- /* If just tried and failed to reuse lookahead token after an
- error, discard it. */
-
- /* Return failure if at end of input. */
- if (yychar == YYEOF)
- {
- /* Pop the error token. */
- YYPOPSTACK;
- /* Pop the rest of the stack. */
- while (yyss < yyssp)
- {
- YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
- yydestruct (yystos[*yyssp], yyvsp);
- YYPOPSTACK;
- }
- YYABORT;
- }
-
- YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
- yydestruct (yytoken, &yylval);
- yychar = YYEMPTY;
-
- }
-
- /* Else will try to reuse lookahead token after shifting the error
- token. */
- goto yyerrlab1;
-
-
-/*----------------------------------------------------.
-| yyerrlab1 -- error raised explicitly by an action. |
-`----------------------------------------------------*/
-yyerrlab1:
- yyerrstatus = 3; /* Each real token shifted decrements this. */
-
- for (;;)
- {
- yyn = yypact[yystate];
- if (yyn != YYPACT_NINF)
- {
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
- {
- yyn = yytable[yyn];
- if (0 < yyn)
- break;
- }
- }
-
- /* Pop the current state because it cannot handle the error token. */
- if (yyssp == yyss)
- YYABORT;
-
- YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
- yydestruct (yystos[yystate], yyvsp);
- yyvsp--;
- yystate = *--yyssp;
-
- YY_STACK_PRINT (yyss, yyssp);
- }
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- YYDPRINTF ((stderr, "Shifting error token, "));
-
- *++yyvsp = yylval;
-
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here. |
-`-------------------------------------*/
-yyacceptlab:
- yyresult = 0;
- goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here. |
-`-----------------------------------*/
-yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
-#ifndef yyoverflow
-/*----------------------------------------------.
-| yyoverflowlab -- parser overflow comes here. |
-`----------------------------------------------*/
-yyoverflowlab:
- yyerror ("parser stack overflow");
- yyresult = 2;
- /* Fall through. */
-#endif
-
-yyreturn:
-#ifndef yyoverflow
- if (yyss != yyssa)
- YYSTACK_FREE (yyss);
-#endif
- return yyresult;
-}
-
-
-
-
-
-void conf_parse(const char *name)
-{
- struct symbol *sym;
- int i;
-
- zconf_initscan(name);
-
- sym_init();
- menu_init();
- modules_sym = sym_lookup("MODULES", 0);
- rootmenu.prompt = menu_add_prop(P_MENU, "Buildroot Configuration", NULL, NULL);
-
- //zconfdebug = 1;
- zconfparse();
- if (zconfnerrs)
- exit(1);
- menu_finalize(&rootmenu);
- for_all_symbols(i, sym) {
- if (!(sym->flags & SYMBOL_CHECKED) && sym_check_deps(sym))
- printf("\n");
- else
- sym->flags |= SYMBOL_CHECK_DONE;
- }
-
- sym_change_count = 1;
-}
-
-const char *zconf_tokenname(int token)
-{
- switch (token) {
- case T_MENU: return "menu";
- case T_ENDMENU: return "endmenu";
- case T_CHOICE: return "choice";
- case T_ENDCHOICE: return "endchoice";
- case T_IF: return "if";
- case T_ENDIF: return "endif";
- }
- return "<token>";
-}
-
-static bool zconf_endtoken(int token, int starttoken, int endtoken)
-{
- if (token != endtoken) {
- zconfprint("unexpected '%s' within %s block", zconf_tokenname(token), zconf_tokenname(starttoken));
- zconfnerrs++;
- return false;
- }
- if (current_menu->file != current_file) {
- zconfprint("'%s' in different file than '%s'", zconf_tokenname(token), zconf_tokenname(starttoken));
- zconfprint("location of the '%s'", zconf_tokenname(starttoken));
- zconfnerrs++;
- return false;
- }
- return true;
-}
-
-static void zconfprint(const char *err, ...)
-{
- va_list ap;
-
- fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno() + 1);
- va_start(ap, err);
- vfprintf(stderr, err, ap);
- va_end(ap);
- fprintf(stderr, "\n");
-}
-
-static void zconferror(const char *err)
-{
- fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
-}
-
-void print_quoted_string(FILE *out, const char *str)
-{
- const char *p;
- int len;
-
- putc('"', out);
- while ((p = strchr(str, '"'))) {
- len = p - str;
- if (len)
- fprintf(out, "%.*s", len, str);
- fputs("\\\"", out);
- str = p + 1;
- }
- fputs(str, out);
- putc('"', out);
-}
-
-void print_symbol(FILE *out, struct menu *menu)
-{
- struct symbol *sym = menu->sym;
- struct property *prop;
-
- if (sym_is_choice(sym))
- fprintf(out, "choice\n");
- else
- fprintf(out, "config %s\n", sym->name);
- switch (sym->type) {
- case S_BOOLEAN:
- fputs(" boolean\n", out);
- break;
- case S_TRISTATE:
- fputs(" tristate\n", out);
- break;
- case S_STRING:
- fputs(" string\n", out);
- break;
- case S_INT:
- fputs(" integer\n", out);
- break;
- case S_HEX:
- fputs(" hex\n", out);
- break;
- default:
- fputs(" ???\n", out);
- break;
- }
- for (prop = sym->prop; prop; prop = prop->next) {
- if (prop->menu != menu)
- continue;
- switch (prop->type) {
- case P_PROMPT:
- fputs(" prompt ", out);
- print_quoted_string(out, prop->text);
- if (!expr_is_yes(prop->visible.expr)) {
- fputs(" if ", out);
- expr_fprint(prop->visible.expr, out);
- }
- fputc('\n', out);
- break;
- case P_DEFAULT:
- fputs( " default ", out);
- expr_fprint(prop->expr, out);
- if (!expr_is_yes(prop->visible.expr)) {
- fputs(" if ", out);
- expr_fprint(prop->visible.expr, out);
- }
- fputc('\n', out);
- break;
- case P_CHOICE:
- fputs(" #choice value\n", out);
- break;
- default:
- fprintf(out, " unknown prop %d!\n", prop->type);
- break;
- }
- }
- if (sym->help) {
- int len = strlen(sym->help);
- while (sym->help[--len] == '\n')
- sym->help[len] = 0;
- fprintf(out, " help\n%s\n", sym->help);
- }
- fputc('\n', out);
-}
-
-void zconfdump(FILE *out)
-{
- struct property *prop;
- struct symbol *sym;
- struct menu *menu;
-
- menu = rootmenu.list;
- while (menu) {
- if ((sym = menu->sym))
- print_symbol(out, menu);
- else if ((prop = menu->prompt)) {
- switch (prop->type) {
- case P_COMMENT:
- fputs("\ncomment ", out);
- print_quoted_string(out, prop->text);
- fputs("\n", out);
- break;
- case P_MENU:
- fputs("\nmenu ", out);
- print_quoted_string(out, prop->text);
- fputs("\n", out);
- break;
- default:
- ;
- }
- if (!expr_is_yes(prop->visible.expr)) {
- fputs(" depends ", out);
- expr_fprint(prop->visible.expr, out);
- fputc('\n', out);
- }
- fputs("\n", out);
- }
-
- if (menu->list)
- menu = menu->list;
- else if (menu->next)
- menu = menu->next;
- else while ((menu = menu->parent)) {
- if (menu->prompt && menu->prompt->type == P_MENU)
- fputs("\nendmenu\n", out);
- if (menu->next) {
- menu = menu->next;
- break;
- }
- }
- }
-}
-
-#include "lex.zconf.c"
-#include "confdata.c"
-#include "expr.c"
-#include "symbol.c"
-#include "menu.c"
-
-
diff --git a/openwrt/package/config/zconf.tab.h_shipped b/openwrt/package/config/zconf.tab.h_shipped
deleted file mode 100644
index 3b191ef599..0000000000
--- a/openwrt/package/config/zconf.tab.h_shipped
+++ /dev/null
@@ -1,125 +0,0 @@
-/* A Bison parser, made from zconf.y, by GNU bison 1.75. */
-
-/* Skeleton parser for Yacc-like parsing with Bison,
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
-
- 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, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* As a special exception, when this file is copied by Bison into a
- Bison output file, you may use that output file without restriction.
- This special exception was added by the Free Software Foundation
- in version 1.24 of Bison. */
-
-#ifndef BISON_ZCONF_TAB_H
-# define BISON_ZCONF_TAB_H
-
-/* Tokens. */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum yytokentype {
- T_MAINMENU = 258,
- T_MENU = 259,
- T_ENDMENU = 260,
- T_SOURCE = 261,
- T_CHOICE = 262,
- T_ENDCHOICE = 263,
- T_COMMENT = 264,
- T_CONFIG = 265,
- T_HELP = 266,
- T_HELPTEXT = 267,
- T_IF = 268,
- T_ENDIF = 269,
- T_DEPENDS = 270,
- T_REQUIRES = 271,
- T_OPTIONAL = 272,
- T_PROMPT = 273,
- T_DEFAULT = 274,
- T_TRISTATE = 275,
- T_BOOLEAN = 276,
- T_INT = 277,
- T_HEX = 278,
- T_WORD = 279,
- T_STRING = 280,
- T_UNEQUAL = 281,
- T_EOF = 282,
- T_EOL = 283,
- T_CLOSE_PAREN = 284,
- T_OPEN_PAREN = 285,
- T_ON = 286,
- T_OR = 287,
- T_AND = 288,
- T_EQUAL = 289,
- T_NOT = 290
- };
-#endif
-#define T_MAINMENU 258
-#define T_MENU 259
-#define T_ENDMENU 260
-#define T_SOURCE 261
-#define T_CHOICE 262
-#define T_ENDCHOICE 263
-#define T_COMMENT 264
-#define T_CONFIG 265
-#define T_HELP 266
-#define T_HELPTEXT 267
-#define T_IF 268
-#define T_ENDIF 269
-#define T_DEPENDS 270
-#define T_REQUIRES 271
-#define T_OPTIONAL 272
-#define T_PROMPT 273
-#define T_DEFAULT 274
-#define T_TRISTATE 275
-#define T_BOOLEAN 276
-#define T_INT 277
-#define T_HEX 278
-#define T_WORD 279
-#define T_STRING 280
-#define T_UNEQUAL 281
-#define T_EOF 282
-#define T_EOL 283
-#define T_CLOSE_PAREN 284
-#define T_OPEN_PAREN 285
-#define T_ON 286
-#define T_OR 287
-#define T_AND 288
-#define T_EQUAL 289
-#define T_NOT 290
-
-
-
-
-#ifndef YYSTYPE
-#line 33 "zconf.y"
-typedef union {
- int token;
- char *string;
- struct symbol *symbol;
- struct expr *expr;
- struct menu *menu;
-} yystype;
-/* Line 1281 of /usr/share/bison/yacc.c. */
-#line 118 "zconf.tab.h"
-# define YYSTYPE yystype
-#endif
-
-extern YYSTYPE zconflval;
-
-
-#endif /* not BISON_ZCONF_TAB_H */
-
diff --git a/openwrt/package/config/zconf.y b/openwrt/package/config/zconf.y
deleted file mode 100644
index f354c89e6c..0000000000
--- a/openwrt/package/config/zconf.y
+++ /dev/null
@@ -1,687 +0,0 @@
-%{
-/*
- * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
- * Released under the terms of the GNU GPL v2.0.
- */
-
-#include <ctype.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdbool.h>
-
-#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
-
-#define PRINTD 0x0001
-#define DEBUG_PARSE 0x0002
-
-int cdebug = PRINTD;
-
-extern int zconflex(void);
-static void zconfprint(const char *err, ...);
-static void zconferror(const char *err);
-static bool zconf_endtoken(int token, int starttoken, int endtoken);
-
-struct symbol *symbol_hash[257];
-
-#define YYERROR_VERBOSE
-%}
-%expect 40
-
-%union
-{
- int token;
- char *string;
- struct symbol *symbol;
- struct expr *expr;
- struct menu *menu;
-}
-
-%token T_MAINMENU
-%token T_MENU
-%token T_ENDMENU
-%token T_SOURCE
-%token T_CHOICE
-%token T_ENDCHOICE
-%token T_COMMENT
-%token T_CONFIG
-%token T_MENUCONFIG
-%token T_HELP
-%token <string> T_HELPTEXT
-%token T_IF
-%token T_ENDIF
-%token T_DEPENDS
-%token T_REQUIRES
-%token T_OPTIONAL
-%token T_PROMPT
-%token T_DEFAULT
-%token T_TRISTATE
-%token T_DEF_TRISTATE
-%token T_BOOLEAN
-%token T_DEF_BOOLEAN
-%token T_STRING
-%token T_INT
-%token T_HEX
-%token <string> T_WORD
-%token <string> T_WORD_QUOTE
-%token T_UNEQUAL
-%token T_EOF
-%token T_EOL
-%token T_CLOSE_PAREN
-%token T_OPEN_PAREN
-%token T_ON
-%token T_SELECT
-%token T_RANGE
-
-%left T_OR
-%left T_AND
-%left T_EQUAL T_UNEQUAL
-%nonassoc T_NOT
-
-%type <string> prompt
-%type <string> source
-%type <symbol> symbol
-%type <expr> expr
-%type <expr> if_expr
-%type <token> end
-
-%{
-#define LKC_DIRECT_LINK
-#include "lkc.h"
-%}
-%%
-input: /* empty */
- | input block
-;
-
-block: common_block
- | choice_stmt
- | menu_stmt
- | T_MAINMENU prompt nl_or_eof
- | T_ENDMENU { zconfprint("unexpected 'endmenu' statement"); }
- | T_ENDIF { zconfprint("unexpected 'endif' statement"); }
- | T_ENDCHOICE { zconfprint("unexpected 'endchoice' statement"); }
- | error nl_or_eof { zconfprint("syntax error"); yyerrok; }
-;
-
-common_block:
- if_stmt
- | comment_stmt
- | config_stmt
- | menuconfig_stmt
- | source_stmt
- | nl_or_eof
-;
-
-
-/* config/menuconfig entry */
-
-config_entry_start: T_CONFIG T_WORD T_EOL
-{
- struct symbol *sym = sym_lookup($2, 0);
- sym->flags |= SYMBOL_OPTIONAL;
- menu_add_entry(sym);
- printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2);
-};
-
-config_stmt: config_entry_start config_option_list
-{
- menu_end_entry();
- printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
-};
-
-menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL
-{
- struct symbol *sym = sym_lookup($2, 0);
- sym->flags |= SYMBOL_OPTIONAL;
- menu_add_entry(sym);
- printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2);
-};
-
-menuconfig_stmt: menuconfig_entry_start config_option_list
-{
- if (current_entry->prompt)
- current_entry->prompt->type = P_MENU;
- else
- zconfprint("warning: menuconfig statement without prompt");
- menu_end_entry();
- printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
-};
-
-config_option_list:
- /* empty */
- | config_option_list config_option
- | config_option_list depends
- | config_option_list help
- | config_option_list T_EOL
-;
-
-config_option: T_TRISTATE prompt_stmt_opt T_EOL
-{
- menu_set_type(S_TRISTATE);
- printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
-};
-
-config_option: T_DEF_TRISTATE expr if_expr T_EOL
-{
- menu_add_expr(P_DEFAULT, $2, $3);
- menu_set_type(S_TRISTATE);
- printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
-};
-
-config_option: T_BOOLEAN prompt_stmt_opt T_EOL
-{
- menu_set_type(S_BOOLEAN);
- printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
-};
-
-config_option: T_DEF_BOOLEAN expr if_expr T_EOL
-{
- menu_add_expr(P_DEFAULT, $2, $3);
- menu_set_type(S_BOOLEAN);
- printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
-};
-
-config_option: T_INT prompt_stmt_opt T_EOL
-{
- menu_set_type(S_INT);
- printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno());
-};
-
-config_option: T_HEX prompt_stmt_opt T_EOL
-{
- menu_set_type(S_HEX);
- printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno());
-};
-
-config_option: T_STRING prompt_stmt_opt T_EOL
-{
- menu_set_type(S_STRING);
- printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno());
-};
-
-config_option: T_PROMPT prompt if_expr T_EOL
-{
- menu_add_prompt(P_PROMPT, $2, $3);
- printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
-};
-
-config_option: T_DEFAULT expr if_expr T_EOL
-{
- menu_add_expr(P_DEFAULT, $2, $3);
- printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
-};
-
-config_option: T_SELECT T_WORD if_expr T_EOL
-{
- menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3);
- printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
-};
-
-config_option: T_RANGE symbol symbol if_expr T_EOL
-{
- menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4);
- printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
-};
-
-/* choice entry */
-
-choice: T_CHOICE T_EOL
-{
- struct symbol *sym = sym_lookup(NULL, 0);
- sym->flags |= SYMBOL_CHOICE;
- menu_add_entry(sym);
- menu_add_expr(P_CHOICE, NULL, NULL);
- printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
-};
-
-choice_entry: choice choice_option_list
-{
- menu_end_entry();
- menu_add_menu();
-};
-
-choice_end: end
-{
- if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) {
- menu_end_menu();
- printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
- }
-};
-
-choice_stmt:
- choice_entry choice_block choice_end
- | choice_entry choice_block
-{
- printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno);
- zconfnerrs++;
-};
-
-choice_option_list:
- /* empty */
- | choice_option_list choice_option
- | choice_option_list depends
- | choice_option_list help
- | choice_option_list T_EOL
-;
-
-choice_option: T_PROMPT prompt if_expr T_EOL
-{
- menu_add_prompt(P_PROMPT, $2, $3);
- printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
-};
-
-choice_option: T_TRISTATE prompt_stmt_opt T_EOL
-{
- menu_set_type(S_TRISTATE);
- printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
-};
-
-choice_option: T_BOOLEAN prompt_stmt_opt T_EOL
-{
- menu_set_type(S_BOOLEAN);
- printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
-};
-
-choice_option: T_OPTIONAL T_EOL
-{
- current_entry->sym->flags |= SYMBOL_OPTIONAL;
- printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
-};
-
-choice_option: T_DEFAULT T_WORD if_expr T_EOL
-{
- menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3);
- printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
-};
-
-choice_block:
- /* empty */
- | choice_block common_block
-;
-
-/* if entry */
-
-if: T_IF expr T_EOL
-{
- printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
- menu_add_entry(NULL);
- menu_add_dep($2);
- menu_end_entry();
- menu_add_menu();
-};
-
-if_end: end
-{
- if (zconf_endtoken($1, T_IF, T_ENDIF)) {
- menu_end_menu();
- printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
- }
-};
-
-if_stmt:
- if if_block if_end
- | if if_block
-{
- printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno);
- zconfnerrs++;
-};
-
-if_block:
- /* empty */
- | if_block common_block
- | if_block menu_stmt
- | if_block choice_stmt
-;
-
-/* menu entry */
-
-menu: T_MENU prompt T_EOL
-{
- menu_add_entry(NULL);
- menu_add_prop(P_MENU, $2, NULL, NULL);
- printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
-};
-
-menu_entry: menu depends_list
-{
- menu_end_entry();
- menu_add_menu();
-};
-
-menu_end: end
-{
- if (zconf_endtoken($1, T_MENU, T_ENDMENU)) {
- menu_end_menu();
- printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
- }
-};
-
-menu_stmt:
- menu_entry menu_block menu_end
- | menu_entry menu_block
-{
- printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno);
- zconfnerrs++;
-};
-
-menu_block:
- /* empty */
- | menu_block common_block
- | menu_block menu_stmt
- | menu_block choice_stmt
- | menu_block error T_EOL { zconfprint("invalid menu option"); yyerrok; }
-;
-
-source: T_SOURCE prompt T_EOL
-{
- $$ = $2;
- printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2);
-};
-
-source_stmt: source
-{
- zconf_nextfile($1);
-};
-
-/* comment entry */
-
-comment: T_COMMENT prompt T_EOL
-{
- menu_add_entry(NULL);
- menu_add_prop(P_COMMENT, $2, NULL, NULL);
- printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
-};
-
-comment_stmt: comment depends_list
-{
- menu_end_entry();
-};
-
-/* help option */
-
-help_start: T_HELP T_EOL
-{
- printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
- zconf_starthelp();
-};
-
-help: help_start T_HELPTEXT
-{
- current_entry->sym->help = $2;
-};
-
-/* depends option */
-
-depends_list: /* empty */
- | depends_list depends
- | depends_list T_EOL
-;
-
-depends: T_DEPENDS T_ON expr T_EOL
-{
- menu_add_dep($3);
- printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
-}
- | T_DEPENDS expr T_EOL
-{
- menu_add_dep($2);
- printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
-}
- | T_REQUIRES expr T_EOL
-{
- menu_add_dep($2);
- printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
-};
-
-/* prompt statement */
-
-prompt_stmt_opt:
- /* empty */
- | prompt if_expr
-{
- menu_add_prop(P_PROMPT, $1, NULL, $2);
-};
-
-prompt: T_WORD
- | T_WORD_QUOTE
-;
-
-end: T_ENDMENU nl_or_eof { $$ = T_ENDMENU; }
- | T_ENDCHOICE nl_or_eof { $$ = T_ENDCHOICE; }
- | T_ENDIF nl_or_eof { $$ = T_ENDIF; }
-;
-
-nl_or_eof:
- T_EOL | T_EOF;
-
-if_expr: /* empty */ { $$ = NULL; }
- | T_IF expr { $$ = $2; }
-;
-
-expr: symbol { $$ = expr_alloc_symbol($1); }
- | symbol T_EQUAL symbol { $$ = expr_alloc_comp(E_EQUAL, $1, $3); }
- | symbol T_UNEQUAL symbol { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); }
- | T_OPEN_PAREN expr T_CLOSE_PAREN { $$ = $2; }
- | T_NOT expr { $$ = expr_alloc_one(E_NOT, $2); }
- | expr T_OR expr { $$ = expr_alloc_two(E_OR, $1, $3); }
- | expr T_AND expr { $$ = expr_alloc_two(E_AND, $1, $3); }
-;
-
-symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); }
- | T_WORD_QUOTE { $$ = sym_lookup($1, 1); free($1); }
-;
-
-%%
-
-void conf_parse(const char *name)
-{
- struct symbol *sym;
- int i;
-
- zconf_initscan(name);
-
- sym_init();
- menu_init();
- modules_sym = sym_lookup("MODULES", 0);
- rootmenu.prompt = menu_add_prop(P_MENU, "Buildroot Configuration", NULL, NULL);
-
- //zconfdebug = 1;
- zconfparse();
- if (zconfnerrs)
- exit(1);
- menu_finalize(&rootmenu);
- for_all_symbols(i, sym) {
- if (!(sym->flags & SYMBOL_CHECKED) && sym_check_deps(sym))
- printf("\n");
- else
- sym->flags |= SYMBOL_CHECK_DONE;
- }
-
- sym_change_count = 1;
-}
-
-const char *zconf_tokenname(int token)
-{
- switch (token) {
- case T_MENU: return "menu";
- case T_ENDMENU: return "endmenu";
- case T_CHOICE: return "choice";
- case T_ENDCHOICE: return "endchoice";
- case T_IF: return "if";
- case T_ENDIF: return "endif";
- }
- return "<token>";
-}
-
-static bool zconf_endtoken(int token, int starttoken, int endtoken)
-{
- if (token != endtoken) {
- zconfprint("unexpected '%s' within %s block", zconf_tokenname(token), zconf_tokenname(starttoken));
- zconfnerrs++;
- return false;
- }
- if (current_menu->file != current_file) {
- zconfprint("'%s' in different file than '%s'", zconf_tokenname(token), zconf_tokenname(starttoken));
- zconfprint("location of the '%s'", zconf_tokenname(starttoken));
- zconfnerrs++;
- return false;
- }
- return true;
-}
-
-static void zconfprint(const char *err, ...)
-{
- va_list ap;
-
- fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno() + 1);
- va_start(ap, err);
- vfprintf(stderr, err, ap);
- va_end(ap);
- fprintf(stderr, "\n");
-}
-
-static void zconferror(const char *err)
-{
- fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
-}
-
-void print_quoted_string(FILE *out, const char *str)
-{
- const char *p;
- int len;
-
- putc('"', out);
- while ((p = strchr(str, '"'))) {
- len = p - str;
- if (len)
- fprintf(out, "%.*s", len, str);
- fputs("\\\"", out);
- str = p + 1;
- }
- fputs(str, out);
- putc('"', out);
-}
-
-void print_symbol(FILE *out, struct menu *menu)
-{
- struct symbol *sym = menu->sym;
- struct property *prop;
-
- if (sym_is_choice(sym))
- fprintf(out, "choice\n");
- else
- fprintf(out, "config %s\n", sym->name);
- switch (sym->type) {
- case S_BOOLEAN:
- fputs(" boolean\n", out);
- break;
- case S_TRISTATE:
- fputs(" tristate\n", out);
- break;
- case S_STRING:
- fputs(" string\n", out);
- break;
- case S_INT:
- fputs(" integer\n", out);
- break;
- case S_HEX:
- fputs(" hex\n", out);
- break;
- default:
- fputs(" ???\n", out);
- break;
- }
- for (prop = sym->prop; prop; prop = prop->next) {
- if (prop->menu != menu)
- continue;
- switch (prop->type) {
- case P_PROMPT:
- fputs(" prompt ", out);
- print_quoted_string(out, prop->text);
- if (!expr_is_yes(prop->visible.expr)) {
- fputs(" if ", out);
- expr_fprint(prop->visible.expr, out);
- }
- fputc('\n', out);
- break;
- case P_DEFAULT:
- fputs( " default ", out);
- expr_fprint(prop->expr, out);
- if (!expr_is_yes(prop->visible.expr)) {
- fputs(" if ", out);
- expr_fprint(prop->visible.expr, out);
- }
- fputc('\n', out);
- break;
- case P_CHOICE:
- fputs(" #choice value\n", out);
- break;
- default:
- fprintf(out, " unknown prop %d!\n", prop->type);
- break;
- }
- }
- if (sym->help) {
- int len = strlen(sym->help);
- while (sym->help[--len] == '\n')
- sym->help[len] = 0;
- fprintf(out, " help\n%s\n", sym->help);
- }
- fputc('\n', out);
-}
-
-void zconfdump(FILE *out)
-{
- struct property *prop;
- struct symbol *sym;
- struct menu *menu;
-
- menu = rootmenu.list;
- while (menu) {
- if ((sym = menu->sym))
- print_symbol(out, menu);
- else if ((prop = menu->prompt)) {
- switch (prop->type) {
- case P_COMMENT:
- fputs("\ncomment ", out);
- print_quoted_string(out, prop->text);
- fputs("\n", out);
- break;
- case P_MENU:
- fputs("\nmenu ", out);
- print_quoted_string(out, prop->text);
- fputs("\n", out);
- break;
- default:
- ;
- }
- if (!expr_is_yes(prop->visible.expr)) {
- fputs(" depends ", out);
- expr_fprint(prop->visible.expr, out);
- fputc('\n', out);
- }
- fputs("\n", out);
- }
-
- if (menu->list)
- menu = menu->list;
- else if (menu->next)
- menu = menu->next;
- else while ((menu = menu->parent)) {
- if (menu->prompt && menu->prompt->type == P_MENU)
- fputs("\nendmenu\n", out);
- if (menu->next) {
- menu = menu->next;
- break;
- }
- }
- }
-}
-
-#include "lex.zconf.c"
-#include "confdata.c"
-#include "expr.c"
-#include "symbol.c"
-#include "menu.c"
diff --git a/openwrt/package/ctorrent/Config.in b/openwrt/package/ctorrent/Config.in
deleted file mode 100644
index 7295ace04f..0000000000
--- a/openwrt/package/ctorrent/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_CTORRENT
- prompt "ctorrent.......................... console-based BitTorrent client"
- tristate
- default m if CONFIG_DEVEL
- help
- CTorrent is a BitTorrent client written in the C programming language, known to
- be a very robust and mature programming language, which produces fast and
- optimized application.
-
- http://www.rahul.net/dholmes/ctorrent/
diff --git a/openwrt/package/ctorrent/Makefile b/openwrt/package/ctorrent/Makefile
deleted file mode 100755
index 3429b83af4..0000000000
--- a/openwrt/package/ctorrent/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ctorrent
-PKG_VERSION:=1.3.4-dnh2
-PKG_RELEASE:=1
-PKG_MD5SUM:=6635e2d0d0ee21faeb85d95cd93c137b
-
-PKG_SOURCE_URL:=http://www.rahul.net/dholmes/ctorrent/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-dnh2
-PKG_CAT:=zcat
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,CTORRENT,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include/openssl" \
- LDFLAGS="-static -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --program-prefix="" \
- --with-gnu-ld \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) STAGING_DIR=$(STAGING_DIR) DESTDIR=$(PKG_INSTALL_DIR) -C $(PKG_BUILD_DIR) install
-
-$(IPKG_CTORRENT):
- mkdir -p $(IDIR_CTORRENT)
- $(CP) $(PKG_INSTALL_DIR)/* $(IDIR_CTORRENT)/
- $(RSTRIP) $(IDIR_CTORRENT)/
- $(IPKG_BUILD) $(IDIR_CTORRENT) $(PACKAGE_DIR)
diff --git a/openwrt/package/ctorrent/ipkg/ctorrent.control b/openwrt/package/ctorrent/ipkg/ctorrent.control
deleted file mode 100644
index 0b7d1d59ed..0000000000
--- a/openwrt/package/ctorrent/ipkg/ctorrent.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: ctorrent
-Priority: optional
-Section: net
-Description: console-based BitTorrent client
diff --git a/openwrt/package/cups/Config.in b/openwrt/package/cups/Config.in
deleted file mode 100644
index 5358754b84..0000000000
--- a/openwrt/package/cups/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_CUPS
- prompt "cups.............................. Common UNIX Printing System"
- tristate
- default m if CONFIG_DEVEL
- help
- A printer spooling system for devices with USB or LP support
-
- http://www.cups.org/
-
diff --git a/openwrt/package/cups/Makefile b/openwrt/package/cups/Makefile
deleted file mode 100644
index bb3e9d33d7..0000000000
--- a/openwrt/package/cups/Makefile
+++ /dev/null
@@ -1,119 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=cups
-PKG_VERSION:=1.1.23
-PKG_RELEASE:=1
-PKG_MD5SUM:=4ce09b1dce09b6b9398af0daae9adf63
-
-PKG_SOURCE_URL:=http://ftp.funet.fi/pub/mirrors/ftp.easysw.com/ftp.easysw.com/pub/cups/$(PKG_VERSION) \
- http://ftp.rz.tu-bs.de/pub/mirror/ftp.easysw.com/ftp/pub/cups/$(PKG_VERSION) \
- ftp://ftp3.easysw.com/pub/cups/$(PKG_VERSION)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-source.tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,CUPS,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --with-gnu-ld \
- --with-cups-user=root \
- --with-cups-group=root \
- --without-perl \
- --without-python \
- --without-php \
- --disable-slp \
- --disable-gnutls \
- --disable-openssl \
- --disable-cdsassl \
- --disable-ssl \
- --disable-slp \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DSTROOT="$(PKG_INSTALL_DIR)" \
- STRIP="/bin/true" \
- all install
- touch $@
-
-$(IPKG_CUPS):
- rm -rf $(IDIR_CUPS)/etc/cups
- install -d -m0755 $(IDIR_CUPS)/etc/cups
- $(CP) $(PKG_INSTALL_DIR)/etc/cups/* $(IDIR_CUPS)/etc/cups/
- rm -rf $(IDIR_CUPS)/etc/cups/certs
- ln -sf /tmp $(IDIR_CUPS)/etc/cups/certs
- install -d -m0755 $(IDIR_CUPS)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(IDIR_CUPS)/usr/bin/
- rm -f $(IDIR_CUPS)/usr/bin/cups-config
- install -d -m0755 $(IDIR_CUPS)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcups.so.* $(IDIR_CUPS)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/cups $(IDIR_CUPS)/usr/lib/
- install -d -m0755 $(IDIR_CUPS)/usr/share/cups/templates
- $(CP) $(PKG_INSTALL_DIR)/usr/share/cups/templates/*.tmpl $(IDIR_CUPS)/usr/share/cups/templates/
- install -d -m0755 $(IDIR_CUPS)/usr/share/doc/cups
- $(CP) $(PKG_INSTALL_DIR)/usr/share/doc/cups/index.html $(IDIR_CUPS)/usr/share/doc/cups/
- $(CP) $(PKG_INSTALL_DIR)/usr/share/doc/cups/images $(IDIR_CUPS)/usr/share/doc/cups/
- install -d -m0755 $(IDIR_CUPS)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/* $(IDIR_CUPS)/usr/sbin/
- # overwrite default config with our own
- $(CP) ./files/etc/cups/* $(IDIR_CUPS)/etc/cups/
- # install initscript with priority 60
- install -d -m0755 $(IDIR_CUPS)/etc/init.d
- install -m0755 ./files/cupsd.init $(IDIR_CUPS)/etc/init.d/S60cupsd
- find $(IDIR_CUPS) -name CVS | xargs rm -rf
- $(RSTRIP) $(IDIR_CUPS)
- $(IPKG_BUILD) $(IDIR_CUPS) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libcups.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/cups-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/cups $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcups.{a,so*} $(STAGING_DIR)/usr/lib/
-
-install-dev: $(STAGING_DIR)/usr/lib/libcups.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/cups-config \
- $(STAGING_DIR)/usr/include/cups \
- $(STAGING_DIR)/usr/lib/libcups.{a,so*}
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
diff --git a/openwrt/package/cups/files/cupsd.init b/openwrt/package/cups/files/cupsd.init
deleted file mode 100644
index 8e5fd63c48..0000000000
--- a/openwrt/package/cups/files/cupsd.init
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-mkdir -p /tmp/cups
-mkdir -p /tmp/spool/cups/tmp
-exec /usr/sbin/cupsd
diff --git a/openwrt/package/cups/files/etc/cups/classes.conf b/openwrt/package/cups/files/etc/cups/classes.conf
deleted file mode 100644
index 15afda75a2..0000000000
--- a/openwrt/package/cups/files/etc/cups/classes.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-########################################################################
-# #
-# This is a sample class configuration file. This file is included #
-# from the main configuration file (cups.conf) and lists all of the #
-# printer classes known to the system. #
-# #
-########################################################################
diff --git a/openwrt/package/cups/files/etc/cups/client.conf b/openwrt/package/cups/files/etc/cups/client.conf
deleted file mode 100644
index c8d9f910ed..0000000000
--- a/openwrt/package/cups/files/etc/cups/client.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-########################################################################
-# #
-# This is the CUPS client configuration file. This file is used to #
-# define client-specific parameters, such as the default server or #
-# default encryption settings. #
-# #
-########################################################################
-
-Encryption Never
diff --git a/openwrt/package/cups/files/etc/cups/cupsd.conf b/openwrt/package/cups/files/etc/cups/cupsd.conf
deleted file mode 100644
index e84de453b3..0000000000
--- a/openwrt/package/cups/files/etc/cups/cupsd.conf
+++ /dev/null
@@ -1,50 +0,0 @@
-########################################################################
-# #
-# This is the CUPS configuration file. If you are familiar with #
-# Apache or any of the other popular web servers, we've followed the #
-# same format. Any configuration variable used here has the same #
-# semantics as the corresponding variable in Apache. If we need #
-# different functionality then a different name is used to avoid #
-# confusion... #
-# #
-########################################################################
-
-
-AccessLog syslog
-ErrorLog syslog
-LogLevel info
-PageLog syslog
-PreserveJobHistory No
-PreserveJobFiles No
-AutoPurgeJobs Yes
-MaxJobs 25
-MaxPrinterHistory 10
-#Printcap /etc/printcap
-#PrintcapFormat BSD
-RequestRoot /tmp/cups
-#RemoteRoot remroot
-User root
-Group root
-RIPCache 512k
-TempDir /tmp/cups
-Port 631
-HostNameLookups Off
-KeepAlive On
-Browsing On
-BrowseProtocols cups
-
-<Location />
-AuthType Basic
-AuthClass System
-Order Allow,Deny
-Allow From All
-</Location>
-
-<Location /admin>
-AuthType Basic
-AuthClass System
-
-Order Allow,Deny
-Allow From All
-</Location>
-
diff --git a/openwrt/package/cups/files/etc/cups/printers.conf b/openwrt/package/cups/files/etc/cups/printers.conf
deleted file mode 100644
index 88bba1b133..0000000000
--- a/openwrt/package/cups/files/etc/cups/printers.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-<DefaultPrinter USB>
-Info USB Printer
-Location
-DeviceURI usb:/dev/usb/lp0
-State Idle
-Accepting Yes
-JobSheets none none
-QuotaPeriod 0
-PageLimit 0
-KLimit 0
-</Printer>
-
-<Printer LP>
-Info Parallel Port Printer
-Location
-DeviceURI parallel:/dev/printers/0
-State Idle
-Accepting Yes
-JobSheets none none
-QuotaPeriod 0
-PageLimit 0
-KLimit 0
-</Printer>
diff --git a/openwrt/package/cups/ipkg/cups.conffiles b/openwrt/package/cups/ipkg/cups.conffiles
deleted file mode 100644
index bed6faa3f2..0000000000
--- a/openwrt/package/cups/ipkg/cups.conffiles
+++ /dev/null
@@ -1,4 +0,0 @@
-/etc/cups/classes.conf
-/etc/cups/client.conf
-/etc/cups/cupsd.conf
-/etc/cups/printers.conf
diff --git a/openwrt/package/cups/ipkg/cups.control b/openwrt/package/cups/ipkg/cups.control
deleted file mode 100644
index b31f929e88..0000000000
--- a/openwrt/package/cups/ipkg/cups.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: cups
-Priority: optional
-Section: net
-Depends: zlib
-Description: Common Unix Printing System
diff --git a/openwrt/package/cups/patches/100-makefile-targets.patch b/openwrt/package/cups/patches/100-makefile-targets.patch
deleted file mode 100644
index 590a304b12..0000000000
--- a/openwrt/package/cups/patches/100-makefile-targets.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- cups-1.1.23.old/Makefile 2005-01-03 20:29:44.000000000 +0100
-+++ cups-1.1.23/Makefile 2005-03-23 20:15:24.000000000 +0100
-@@ -28,7 +28,7 @@
- # Directories to make...
- #
-
--DIRS = cups backend berkeley cgi-bin filter man pdftops \
-+DIRS = cups backend berkeley cgi-bin \
- scheduler systemv
-
- #
diff --git a/openwrt/package/cups/patches/110-no-strip-on-install.patch b/openwrt/package/cups/patches/110-no-strip-on-install.patch
deleted file mode 100644
index 1addc7593c..0000000000
--- a/openwrt/package/cups/patches/110-no-strip-on-install.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN cups-1.1.23.old/Makedefs.in cups-1.1.23/Makedefs.in
---- cups-1.1.23.old/Makedefs.in 2005-01-03 20:29:44.000000000 +0100
-+++ cups-1.1.23/Makedefs.in 2005-03-23 20:28:06.000000000 +0100
-@@ -47,7 +47,7 @@
- # Installation programs...
- #
-
--INSTALL_BIN = $(LIBTOOL) $(INSTALL) -m 755 -s
-+INSTALL_BIN = $(LIBTOOL) $(INSTALL) -m 755
- INSTALL_DATA = $(INSTALL) -m 644
- INSTALL_DIR = $(INSTALL) -d
- INSTALL_LIB = $(LIBTOOL) $(INSTALL) -m 755
diff --git a/openwrt/package/cups/patches/120-documentation-url.patch b/openwrt/package/cups/patches/120-documentation-url.patch
deleted file mode 100644
index 07d090c2a2..0000000000
--- a/openwrt/package/cups/patches/120-documentation-url.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- cups-1.1.23/doc/index.html.orig 2005-01-03 21:13:59.000000000 +0100
-+++ cups-1.1.23/doc/index.html 2005-03-23 22:18:15.000000000 +0100
-@@ -6,7 +6,7 @@
- <AREA SHAPE="RECT" COORDS="12,10,50,20" HREF="http://www.easysw.com" ALT="Easy Software Products Home Page">
- <AREA SHAPE="RECT" COORDS="82,10,196,20" HREF="/admin" ALT="Do Administration Tasks">
- <AREA SHAPE="RECT" COORDS="216,10,280,20" HREF="/classes" ALT="Manage Printer Classes Status">
-- <AREA SHAPE="RECT" COORDS="300,10,336,20" HREF="/documentation.html" ALT="On-Line Help">
-+ <AREA SHAPE="RECT" COORDS="300,10,336,20" HREF="http://www.cups.org/documentation.php" ALT="On-Line Help">
- <AREA SHAPE="RECT" COORDS="356,10,394,20" HREF="/jobs" ALT="Manage Jobs">
- <AREA SHAPE="RECT" COORDS="414,10,476,20" HREF="/printers" ALT="Manage Printers">
- <AREA SHAPE="RECT" COORDS="496,10,568,20" HREF="http://www.cups.org" ALT="Download the Current CUPS Software">
-@@ -20,7 +20,7 @@
-
- <H1><A HREF="admin">Do Administration Tasks</A></H1>
- <H1><A HREF="classes">Manage Printer Classes</A></H1>
--<H1><A HREF="documentation.html">On-Line Help</A></H1>
-+<H1><A HREF="http://www.cups.org/documentation.php">On-Line Help</A></H1>
- <H1><A HREF="jobs">Manage Jobs</A></H1>
- <H1><A HREF="printers">Manage Printers</A></H1>
- <H1><A HREF="http://www.cups.org">Download the Current CUPS Software</A></H1>
diff --git a/openwrt/package/curl/Config.in b/openwrt/package/curl/Config.in
deleted file mode 100644
index 9f8768c3bd..0000000000
--- a/openwrt/package/curl/Config.in
+++ /dev/null
@@ -1,27 +0,0 @@
-config BR2_COMPILE_CURL
- tristate
- default n
- depends BR2_PACKAGE_LIBCURL
-
-config BR2_PACKAGE_LIBCURL
- prompt "libcurl........................... A client-side URL transfer library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_CURL
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- A client-side URL transfer library.
-
- http://curl.haxx.se/
-
-config BR2_PACKAGE_CURL
- prompt "curl............................ A client-side URL transfer tool"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBCURL
- help
- A client-side URL transfer tool.
-
- http://curl.haxx.se/
-
diff --git a/openwrt/package/curl/Makefile b/openwrt/package/curl/Makefile
deleted file mode 100644
index 1a4ee86771..0000000000
--- a/openwrt/package/curl/Makefile
+++ /dev/null
@@ -1,131 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=curl
-PKG_VERSION:=7.14.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=46ce665e47d37fce1a0bad935cce58a9
-
-PKG_SOURCE_URL:=http://curl.haxx.se/download/ \
- http://www.mirrorspace.org/curl/ \
- http://curl.mirror.internet.tp/download/ \
- ftp://ftp.sunet.se/pub/www/utilities/curl/ \
- ftp://ftp.planetmirror.com/pub/curl/ \
- http://www.mirrormonster.com/curl/download/ \
- http://curl.mirrors.cyberservers.net/download/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,CURL,curl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIBCURL,libcurl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- --disable-thread \
- --enable-cookies \
- --enable-crypto-auth \
- --enable-nonblocking \
- --enable-file \
- --enable-ftp \
- --enable-http \
- --enable-ipv6 \
- --disable-ares \
- --disable-debug \
- --disable-dict \
- --disable-gopher \
- --disable-ldap \
- --disable-manual \
- --disable-sspi \
- --disable-telnet \
- --disable-verbose \
- --with-random="/dev/urandom" \
- --with-ssl="$(STAGING_DIR)/usr" \
- --without-ca-bundle \
- --without-gnutls \
- --without-libidn \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_CURL):
- install -m0755 -d $(IDIR_CURL)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/curl $(IDIR_CURL)/usr/bin/
- $(RSTRIP) $(IDIR_CURL)
- $(IPKG_BUILD) $(IDIR_CURL) $(PACKAGE_DIR)
-
-$(IPKG_LIBCURL):
- install -m0755 -d $(IDIR_LIBCURL)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcurl.so.* $(IDIR_LIBCURL)/usr/lib/
- $(RSTRIP) $(IDIR_LIBCURL)
- $(IPKG_BUILD) $(IDIR_LIBCURL) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libcurl.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/curl-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/curl $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcurl.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcurl.so* $(STAGING_DIR)/usr/lib/
- $(SED) 's,-I/usr/include,,g' $(STAGING_DIR)/usr/bin/curl-config
- $(SED) 's,-L/usr/lib,,g' $(STAGING_DIR)/usr/bin/curl-config
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libcurl.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/curl-config \
- $(STAGING_DIR)/usr/include/curl \
- $(STAGING_DIR)/usr/lib/libcurl.a \
- $(STAGING_DIR)/usr/lib/libcurl.so* \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/curl/ipkg/curl.control b/openwrt/package/curl/ipkg/curl.control
deleted file mode 100644
index 17ebb4169b..0000000000
--- a/openwrt/package/curl/ipkg/curl.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: curl
-Priority: optional
-Section: net
-Depends: libcurl
-Description: a client-side URL transfer tool
diff --git a/openwrt/package/curl/ipkg/libcurl.control b/openwrt/package/curl/ipkg/libcurl.control
deleted file mode 100644
index fa73b46c11..0000000000
--- a/openwrt/package/curl/ipkg/libcurl.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libcurl
-Priority: optional
-Section: libs
-Depends: libopenssl, zlib
-Description: a client-side URL transfer library
diff --git a/openwrt/package/curl/patches/500-configure_cross.patch b/openwrt/package/curl/patches/500-configure_cross.patch
deleted file mode 100644
index 7fa921c988..0000000000
--- a/openwrt/package/curl/patches/500-configure_cross.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-diff -ruN curl-7.14.0-old/configure curl-7.14.0-new/configure
---- curl-7.14.0-old/configure 2005-05-14 00:23:47.000000000 +0200
-+++ curl-7.14.0-new/configure 2005-09-02 02:03:38.000000000 +0200
-@@ -26132,10 +26132,10 @@
-
- fi
-
-- if test "$OPENSSL_ENABLED" = "1"; then
-- LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$EXTRA_SSL/lib$libsuff"
-- export LD_LIBRARY_PATH
-- fi
-+# if test "$OPENSSL_ENABLED" = "1"; then
-+# LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$EXTRA_SSL/lib$libsuff"
-+# export LD_LIBRARY_PATH
-+# fi
-
- fi
-
-@@ -26325,8 +26325,8 @@
- echo "$as_me: detected GnuTLS version $version" >&6;}
-
-
-- LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlsprefix/lib$libsuff"
-- export LD_LIBRARY_PATH
-+# LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlsprefix/lib$libsuff"
-+# export LD_LIBRARY_PATH
- fi
-
- fi
-diff -ruN curl-7.14.0-old/configure.ac curl-7.14.0-new/configure.ac
---- curl-7.14.0-old/configure.ac 2005-05-13 23:19:21.000000000 +0200
-+++ curl-7.14.0-new/configure.ac 2005-09-02 02:03:45.000000000 +0200
-@@ -917,13 +917,13 @@
-
- fi
-
-- if test "$OPENSSL_ENABLED" = "1"; then
-- dnl when the ssl shared libs were found in a path that the run-time linker
-- dnl doesn't search through, we need to add it to LD_LIBRARY_PATH to
-- dnl prevent further configure tests to fail due to this
-- LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$EXTRA_SSL/lib$libsuff"
-- export LD_LIBRARY_PATH
-- fi
-+# if test "$OPENSSL_ENABLED" = "1"; then
-+# dnl when the ssl shared libs were found in a path that the run-time linker
-+# dnl doesn't search through, we need to add it to LD_LIBRARY_PATH to
-+# dnl prevent further configure tests to fail due to this
-+# LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$EXTRA_SSL/lib$libsuff"
-+# export LD_LIBRARY_PATH
-+# fi
-
- fi
-
-@@ -1021,8 +1021,8 @@
- dnl LD_LIBRARY_PATH to prevent further configure tests to fail
- dnl due to this
-
-- LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlsprefix/lib$libsuff"
-- export LD_LIBRARY_PATH
-+# LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlsprefix/lib$libsuff"
-+# export LD_LIBRARY_PATH
- fi
-
- fi
diff --git a/openwrt/package/cutter/Config.in b/openwrt/package/cutter/Config.in
deleted file mode 100644
index 2466df69e4..0000000000
--- a/openwrt/package/cutter/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_CUTTER
- prompt "cutter............................ allows an user to abort TCP/IP connections"
- tristate
- default m if CONFIG_DEVEL
- help
- "Cutter" is an open source program that allows Linux firewall
- administrators to abort TCP/IP connections routed over the
- firewall or router on which it is run.
-
- http://www.lowth.com/cutter/
-
diff --git a/openwrt/package/cutter/Makefile b/openwrt/package/cutter/Makefile
deleted file mode 100755
index 418718f1a5..0000000000
--- a/openwrt/package/cutter/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=cutter
-PKG_VERSION:=1.03
-PKG_RELEASE:=1
-PKG_MD5SUM:=50093db9b64277643969ee75b83ebbd1
-
-PKG_SOURCE_URL:=http://www.lowth.com/cutter/software/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=zcat
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,CUTTER,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(TARGET_CC) $(PKG_BUILD_DIR)/cutter.c -o $(PKG_BUILD_DIR)/cutter
- install -d -m0755 $(PKG_INSTALL_DIR)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/cutter $(PKG_INSTALL_DIR)/usr/sbin/
-
-$(IPKG_CUTTER):
- mkdir -p $(IDIR_CUTTER)
- $(CP) $(PKG_INSTALL_DIR)/* $(IDIR_CUTTER)/
- $(RSTRIP) $(IDIR_CUTTER)/
- $(IPKG_BUILD) $(IDIR_CUTTER) $(PACKAGE_DIR)
diff --git a/openwrt/package/cutter/ipkg/cutter.control b/openwrt/package/cutter/ipkg/cutter.control
deleted file mode 100644
index 6c9169222d..0000000000
--- a/openwrt/package/cutter/ipkg/cutter.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: cutter
-Architecture: mipsel
-Section: net
-Description: "Cutter" is an open source program that allows Linux firewall administrators to abort TCP/IP connections routed over the firewall or router on which it is run.
-Priority: optional
diff --git a/openwrt/package/cyrus-sasl/Config.in b/openwrt/package/cyrus-sasl/Config.in
deleted file mode 100644
index 599a87c5db..0000000000
--- a/openwrt/package/cyrus-sasl/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_COMPILE_CYRUS_SASL
- tristate
- default n
- depends BR2_PACKAGE_LIBSASL2
-
-config BR2_PACKAGE_LIBSASL2
- prompt "libsasl2.......................... General purpose authentication library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_CYRUS_SASL
- help
- A general purpose authentication library.
-
- http://asg.web.cmu.edu/sasl/
-
diff --git a/openwrt/package/cyrus-sasl/Makefile b/openwrt/package/cyrus-sasl/Makefile
deleted file mode 100644
index e89bee1894..0000000000
--- a/openwrt/package/cyrus-sasl/Makefile
+++ /dev/null
@@ -1,127 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=cyrus-sasl
-PKG_VERSION:=2.1.20
-PKG_RELEASE:=1
-PKG_MD5SUM:=268ead27f4ac39bcfe17d9e38e0f2977
-
-PKG_SOURCE_URL:=http://ftp.andrew.cmu.edu/pub/cyrus-mail/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBSASL2,libsasl2,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --disable-sample \
- --enable-staticdlopen \
- --disable-java \
- --disable-alwaystrue \
- --disable-checkapop \
- --enable-cram \
- --enable-digest \
- --disable-otp \
- --disable-srp \
- --disable-srp-setpass \
- --disable-krb4 \
- --disable-gssapi \
- --disable-gss_mutexes \
- --enable-plain \
- --enable-anon \
- --disable-login \
- --disable-ntlm \
- --disable-sql \
- --with-dblib="none" \
- --without-gdbm \
- --with-devrandom="/dev/urandom" \
- --without-pam \
- --without-saslauthd \
- --without-authdaemond \
- --without-pwcheck \
- --with-ipctype=unix \
- --with-openssl="$(STAGING_DIR)/usr" \
- --without-des \
- --without-opie \
- --without-ldap \
- --without-mysql \
- --without-pgsql \
- --without-sqlite \
- --without-rc4 \
- --without-dmalloc \
- --without-sfio \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR)/include \
- CC="$(HOSTCC)" \
- LINK="$(HOSTCC) -o makemd5 -lc" \
- CFLAGS="" \
- makemd5
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBSASL2):
- install -m0755 -d $(IDIR_LIBSASL2)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsasl2.so.* $(IDIR_LIBSASL2)/usr/lib/
- install -m0755 -d $(IDIR_LIBSASL2)/usr/lib/sasl2
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/sasl2/lib*.so.* $(IDIR_LIBSASL2)/usr/lib/sasl2/
- $(RSTRIP) $(IDIR_LIBSASL2)
- $(IPKG_BUILD) $(IDIR_LIBSASL2) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libsasl2.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/sasl $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsasl2.{a,so*} $(STAGING_DIR)/usr/lib/
- ln -sf libsasl2.a $(STAGING_DIR)/usr/lib/libsasl.a
- ln -sf libsasl2.so $(STAGING_DIR)/usr/lib/libsasl.so
- mkdir -p $(STAGING_DIR)/usr/lib/sasl2
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/sasl2/lib*.{a,so*} $(STAGING_DIR)/usr/lib/sasl2/
-
-install-dev: $(STAGING_DIR)/usr/lib/libsasl2.so
-
-uninstall-dev:
- rm -rf $(STAGING_DIR)/usr/include/sasl
- rm -rf $(STAGING_DIR)/usr/lib/libsasl{2,}.{a,so*}
- rm -rf $(STAGING_DIR)/usr/lib/sasl2
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/cyrus-sasl/ipkg/libsasl2.control b/openwrt/package/cyrus-sasl/ipkg/libsasl2.control
deleted file mode 100644
index 82e0f0a485..0000000000
--- a/openwrt/package/cyrus-sasl/ipkg/libsasl2.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libsasl2
-Priority: optional
-Section: libs
-Description: a general purpose authentication library
diff --git a/openwrt/package/cyrus-sasl/patches/cyrus-sasl-2.1.20-gcc4.patch b/openwrt/package/cyrus-sasl/patches/cyrus-sasl-2.1.20-gcc4.patch
deleted file mode 100644
index 118b5a4e4f..0000000000
--- a/openwrt/package/cyrus-sasl/patches/cyrus-sasl-2.1.20-gcc4.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- cyrus-sasl-2.1.20/lib/client.c~ 2003-11-11 11:26:06.000000000 -0500
-+++ cyrus-sasl-2.1.20/lib/client.c 2005-05-31 22:34:14.000000000 -0400
-@@ -61,7 +61,7 @@
-
- static cmech_list_t *cmechlist; /* global var which holds the list */
-
--static sasl_global_callbacks_t global_callbacks;
-+sasl_global_callbacks_t global_callbacks;
-
- static int _sasl_client_active = 0;
-
diff --git a/openwrt/package/deco/Config.in b/openwrt/package/deco/Config.in
deleted file mode 100644
index 3b0682d533..0000000000
--- a/openwrt/package/deco/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_DECO
- prompt "deco.............................. Text-based full featured file manager"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBNCURSES
- help
- A clone of Norton Commander for Unix. Text-based, full featured
- file manager.
-
- http://deco.sourceforge.net/
-
diff --git a/openwrt/package/deco/Makefile b/openwrt/package/deco/Makefile
deleted file mode 100644
index 081de39cd3..0000000000
--- a/openwrt/package/deco/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=deco
-PKG_VERSION:=39
-PKG_RELEASE:=1
-PKG_MD5SUM:=f77f60e8be0cae1f814cba1ef61bf4d0
-
-PKG_SOURCE_URL:=@SF/deco
-PKG_SOURCE:=$(PKG_NAME)$(PKG_VERSION).tgz
-
-PKG_CAT:=zcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,DECO,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)
- touch $@
-
-$(IPKG_DECO):
- install -m0755 -d $(IDIR_DECO)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/deco $(IDIR_DECO)/usr/bin/deco
- install -m0755 -d $(IDIR_DECO)/usr/lib/deco
- install -m0644 $(PKG_BUILD_DIR)/profile $(IDIR_DECO)/usr/lib/deco/profile
- install -m0644 $(PKG_BUILD_DIR)/menu $(IDIR_DECO)/usr/lib/deco/menu
- $(RSTRIP) $(IDIR_DECO)
- $(IPKG_BUILD) $(IDIR_DECO) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/deco/ipkg/deco.control b/openwrt/package/deco/ipkg/deco.control
deleted file mode 100644
index f7e8c4348b..0000000000
--- a/openwrt/package/deco/ipkg/deco.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: deco
-Priority: optional
-Section: misc
-Depends: libncurses
-Description: Text-based, full featured file manager
diff --git a/openwrt/package/deco/patches/100-tty.c.patch b/openwrt/package/deco/patches/100-tty.c.patch
deleted file mode 100644
index f37e4e2a6c..0000000000
--- a/openwrt/package/deco/patches/100-tty.c.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/tty.c 2005-09-25 00:23:41.671022039 -0700
-+++ str_new/tty.c 2005-09-25 01:09:37.189119615 -0700
-@@ -14,7 +14,7 @@
- #if HAVE_TERMIOS_H
- # include <sys/termios.h>
- # if HAVE_SYS_IOCTL_H
--# include <sys/ioctl.h>
-+/*# include <sys/ioctl.h>*/
- # endif
- # define HAVE_TERMIO_H 1
- # define termio termios
diff --git a/openwrt/package/depend.mk b/openwrt/package/depend.mk
deleted file mode 100644
index 8573a19dd5..0000000000
--- a/openwrt/package/depend.mk
+++ /dev/null
@@ -1,293 +0,0 @@
-amwall-compile: libamsel-compile
-arpd-compile: libpcap-compile libdnet-compile libevent-compile
-arpwatch-compile: libpcap-compile
-atftp-compile: readline-compile ncurses-compile
-avahi-compile: libdaemon-compile expat-compile libgdbm-compile
-bind-compile: openssl-compile
-bitchx-compile: ncurses-compile
-bitlbee-compile: libiconv-compile openssl-compile glib-compile
-cbtt-compile: mysql-compile zlib-compile
-clinkc-compile: expat-compile
-curl-compile: openssl-compile zlib-compile
-cyrus-sasl-compile: openssl-compile
-deco-compile: ncurses-compile
-dhcp6-compile: ncurses-compile
-dsniff-compile: libnids-compile openssl-compile libgdbm-compile
-elinks-compile: openssl-compile
-freetype-compile: zlib-compile
-fprobe-compile: libpcap-compile
-gdbserver-compile: ncurses-compile
-gmediaserver-compile: id3lib-compile libupnp-compile
-gnutls-compile: libgcrypt-compile opencdk-compile libtasn1-compile
-gpsd-compile: uclibc++-compile
-icecast-compile: curl-compile libvorbisidec-compile libxml2-compile libxslt-compile
-id3lib-compile: uclibc++-compile zlib-compile
-iftop-compile: libpcap-compile libpthread-compile ncurses-compile
-ipcad-compile: libpcap-compile
-irssi-compile: glib-compile ncurses-compile
-iperf-compile: uclibc++-compile
-iptables-snmp-compile: net-snmp-compile
-iptraf-compile: ncurses-compile
-ipsec-tools-compile: openssl-compile
-jamvm-compile: libffi-sable-compile zlib-compile sablevm-classpath-compile
-httping-compile: openssl-compile
-kismet-compile: uclibc++-compile libpcap-compile ncurses-compile
-l2tpns-compile: libcli-compile
-less-compile: ncurses-compile
-lcd4linux-compile: ncurses-compile
-libgcrypt-compile: libgpg-error-compile
-libgd-compile: libpng-compile jpeg-compile
-libid3tag-compile: zlib-compile
-libnet-compile: libpcap-compile
-libnids-compile: libnet-compile
-libpng-compile: zlib-compile
-libvorbis-compile: libogg-compile
-libxml2-compile: zlib-compile
-libxslt-compile: libxml2-compile
-lighttpd-compile: openssl-compile pcre-compile libxml2-compile sqlite-compile
-logrotate-compile: popt-compile
-madplay-compile: libid3tag-compile libmad-compile
-matrixtunnel-compile: matrixssl-compile
-miax-compile: bluez-libs-compile
-miredo-compile: uclibc++-compile
-monit-compile: openssl-compile
-mt-daapd-compile: howl-compile libgdbm-compile libid3tag-compile
-mtr-compile: ncurses-compile
-mutt-compile: ncurses-compile openssl-compile
-mysql-compile: ncurses-compile zlib-compile readline-compile
-nano-compile: ncurses-compile
-net-snmp-compile: libelf-compile
-nfs-server-compile: portmap-compile
-nmap-compile: uclibc++-compile pcre-compile libpcap-compile
-nocatsplash-compile: glib-compile
-opencdk-compile: libgcrypt-compile
-openh323-compile: pwlib-compile
-openldap-compile: cyrus-sasl-compile openssl-compile
-openssh-compile: zlib-compile openssl-compile
-openssl-compile: zlib-compile
-openswan-compile: gmp-compile
-osiris-compile: openssl-compile
-palantir-compile: jpeg-compile
-peercast-compile: uclibc++-compile
-peerguardian-compile: libpthread-compile
-portmap-compile: tcp_wrappers-compile
-postgresql-compile: zlib-compile
-ppp-compile: linux-atm-compile libpcap-compile
-privoxy-compile: pcre-compile
-ptunnel-compile: libpcap-compile
-pwlib-compile: libpthread-compile
-quagga-compile: readline-compile ncurses-compile
-raddump-compile: openssl-compile libpcap-compile
-radiusclient-ng-compile: openssl-compile
-rarpd-compile: libnet-compile
-ifneq ($(BR2_PACKAGE_LIBRRD),)
-rrdcollect-compile: rrdtool-compile
-endif
-ifneq ($(BR2_PACKAGE_LIBRRD1),)
-rrdcollect-compile: rrdtool1-compile
-endif
-rrdtool-compile: cgilib-compile freetype-compile libart-compile libpng-compile
-rrdtool1-compile: zlib-compile
-rsync-compile: popt-compile
-scanlogd-compile: libpcap-compile libnids-compile libnet-compile
-scdp-compile: libnet-compile
-screen-compile: ncurses-compile
-sipp-compile: ncurses-compile uclibc++-compile libpthread-compile
-siproxd-compile: libosip2-compile
-sipsak-compile: openssl-compile
-socat-compile: openssl-compile
-sqlite-compile: ncurses-compile readline-compile
-sqlite2-compile: ncurses-compile readline-compile
-squid-compile: openssl-compile
-ssltunnel-compile: openssl-compile ppp-compile
-syslog-ng-compile: libol-compile
-tcpdump-compile: libpcap-compile
-tinc-compile: zlib-compile openssl-compile liblzo-compile
-tor-compile: libevent-compile openssl-compile zlib-compile
-usbutils-compile: libusb-compile
-vim-compile: ncurses-compile
-vncrepeater-compile: uclibc++-compile
-vnc-reflector-compile: jpeg-compile zlib-compile
-vpnc-compile: libgcrypt-compile libgpg-error-compile
-vtun-compile: zlib-compile openssl-compile liblzo-compile
-weechat-compile: ncurses-compile gnutls-compile lua-compile
-wificonf-compile: wireless-tools-compile nvram-compile
-wiviz-compile: libpcap-compile
-wknock-compile: libpcap-compile
-wpa_supplicant-compile: openssl-compile
-wx200d-compile: postgresql-compile
-xsupplicant-compile: openssl-compile
-
-asterisk-compile: ncurses-compile openssl-compile
-ifneq ($(BR2_PACKAGE_ASTERISK_CHAN_BLUETOOTH),)
-asterisk-compile: bluez-libs-compile
-endif
-ifneq ($(BR2_PACKAGE_ASTERISK_CHAN_H323),)
-asterisk-compile: openh323-compile uclibc++-compile
-endif
-ifneq ($(BR2_PACKAGE_ASTERISK_CODEC_SPEEX),)
-asterisk-compile: speex-compile
-endif
-ifneq ($(BR2_PACKAGE_ASTERISK_PGSQL),)
-asterisk-compile: postgresql-compile
-endif
-ifneq ($(BR2_PACKAGE_ASTERISK_MYSQL),)
-asterisk-compile: mysql-compile
-endif
-ifneq ($(BR2_PACKAGE_ASTERISK_SQLITE),)
-asterisk-compile: sqlite2-compile
-endif
-
-freeradius-compile: libtool-compile openssl-compile
-ifneq ($(BR2_PACKAGE_FREERADIUS_MOD_LDAP),)
-freeradius-compile: openldap-compile
-endif
-ifneq ($(BR2_PACKAGE_FREERADIUS_MOD_SQL_MYSQL),)
-freeradius-compile: mysql-compile
-endif
-ifneq ($(BR2_PACKAGE_FREERADIUS_MOD_SQL_PGSQL),)
-freeradius-compile: postgresql-compile
-endif
-
-hostapd-compile: wireless-tools-compile
-ifneq ($(BR2_PACKAGE_HOSTAPD),)
-hostapd-compile: openssl-compile
-endif
-
-ifneq ($(BR2_PACKAGE_MINI_HTTPD_MATRIXSSL),)
-mini_httpd-compile: matrixssl-compile
-endif
-ifneq ($(BR2_PACKAGE_MINI_HTTPD_OPENSSL),)
-mini_httpd-compile: openssl-compile
-endif
-
-ifneq ($(BR2_PACKAGE_MOTION),)
-motion-compile: jpeg-compile
-endif
-
-ifneq ($(BR2_PACKAGE_MPD_MP3),)
-mpd-compile: libid3tag-compile libmad-compile
-endif
-ifneq ($(BR2_PACKAGE_MPD_OGG),)
-mpd-compile: libvorbisidec-compile
-endif
-ifneq ($(BR2_PACKAGE_MPD_FLAC),)
-mpd-compile: flac-compile
-endif
-
-ifeq ($(BR2_PACKAGE_LIBOPENSSL),y)
-openvpn-compile: openssl-compile
-endif
-ifeq ($(BR2_PACKAGE_OPENVPN_LZO),y)
-openvpn-compile: liblzo-compile
-endif
-
-php4-compile: openssl-compile zlib-compile
-ifneq ($(BR2_PACKAGE_PHP4_MOD_CURL),)
-php4-compile: curl-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_GD),)
-php4-compile: libgd-compile libpng-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_GMP),)
-php4-compile: gmp-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_LDAP),)
-php4-compile: openldap-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_MYSQL),)
-php4-compile: mysql-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_PCRE),)
-php4-compile: pcre-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_PGSQL),)
-php4-compile: postgresql-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_SQLITE),)
-php4-compile: sqlite2-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_XML),)
-php4-compile: expat-compile
-endif
-
-php5-compile: openssl-compile zlib-compile
-ifneq ($(BR2_PACKAGE_PHP5_MOD_CURL),)
-php5-compile: curl-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_GD),)
-php5-compile: libgd-compile libpng-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_GMP),)
-php5-compile: gmp-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_LDAP),)
-php5-compile: openldap-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_MYSQL),)
-php5-compile: mysql-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_PCRE),)
-php5-compile: pcre-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_PGSQL),)
-php5-compile: postgresql-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_SQLITE),)
-php5-compile: sqlite2-compile
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_XML),)
-php5-compile: expat-compile
-endif
-
-pmacct-compile: libpcap-compile
-ifneq ($(BR2_COMPILE_PMACCT_MYSQL),)
-pmacct-compile: mysql-compile
-endif
-ifneq ($(BR2_COMPILE_PMACCT_PGSQL),)
-pmacct-compile: postgresql-compile
-endif
-ifneq ($(BR2_COMPILE_PMACCT_SQLITE),)
-pmacct-compile: sqlite-compile
-endif
-
-rrs-compile: uclibc++-compile
-ifneq ($(BR2_PACKAGE_RRS),)
-rrs-compile: openssl-compile
-endif
-
-snort-compile: libnet-compile libpcap-compile pcre-compile
-ifeq ($(BR2_PACKAGE_SNORT_WITH_MYSQL),y)
-snort-compile: mysql-compile
-endif
-ifeq ($(BR2_PACKAGE_SNORT_WITH_PGSQL),y)
-snort-compile: postgresql-compile
-endif
-ifeq ($(BR2_PACKAGE_SNORT_ENABLE_INLINE),y)
-snort-compile: iptables-compile
-endif
-
-snort-wireless-compile: libnet-compile libpcap-compile pcre-compile
-ifeq ($(BR2_PACKAGE_SNORT_WIRELESS_WITH_MYSQL),y)
-snort-wireless-compile: mysql-compile
-endif
-ifeq ($(BR2_PACKAGE_SNORT_WIRELESS_WITH_PGSQL),y)
-snort-wireless-compile: postgresql-compile
-endif
-ifeq ($(BR2_PACKAGE_SNORT_WIRELESS_ENABLE_INLINE),y)
-snort-wireless-compile: iptables-compile
-endif
-
-ulogd-compile: iptables-compile
-ifneq ($(BR2_PACKAGE_ULOGD_MOD_MYSQL),)
-ulogd-compile: mysql-compile
-endif
-ifneq ($(BR2_PACKAGE_ULOGD_MOD_PCAP),)
-ulogd-compile: libpcap-compile
-endif
-ifneq ($(BR2_PACKAGE_ULOGD_MOD_PGSQL),)
-ulogd-compile: postgresql-compile
-endif
-ifneq ($(BR2_PACKAGE_ULOGD_MOD_SQLITE),)
-ulogd-compile: sqlite-compile
-endif
diff --git a/openwrt/package/dhcp-forwarder/Config.in b/openwrt/package/dhcp-forwarder/Config.in
deleted file mode 100644
index 2c99809efb..0000000000
--- a/openwrt/package/dhcp-forwarder/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_DHCP_FORWARDER
- prompt "dhcp-forwarder.................... DHCP relay agent"
- tristate
- default m if CONFIG_DEVEL
- help
- A DHCP relay agent
-
- http://www.nongnu.org/dhcp-fwd/
-
diff --git a/openwrt/package/dhcp-forwarder/Makefile b/openwrt/package/dhcp-forwarder/Makefile
deleted file mode 100644
index a7cb9098aa..0000000000
--- a/openwrt/package/dhcp-forwarder/Makefile
+++ /dev/null
@@ -1,67 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=dhcp-forwarder
-PKG_VERSION:=0.7
-PKG_RELEASE:=4
-PKG_MD5SUM:=e7f876e615ebc3f96418f6477b4451e2
-
-PKG_SOURCE_URL:=http://savannah.nongnu.org/download/dhcp-fwd
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,DHCP_FORWARDER,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ac_cv_func_malloc_0_nonnull="yes" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --disable-dietlibc \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- cfg_filename="/etc/dhcp-fwd.conf" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_DHCP_FORWARDER):
- install -m0755 -d $(IDIR_DHCP_FORWARDER)/etc
- install -m0644 $(PKG_BUILD_DIR)/contrib/dhcp-fwd.conf $(IDIR_DHCP_FORWARDER)/etc/
- install -m0755 -d $(IDIR_DHCP_FORWARDER)/etc/init.d
- install -m0755 ./files/dhcp-fwd.init $(IDIR_DHCP_FORWARDER)/etc/init.d/dhcp-fwd
- install -m0755 -d $(IDIR_DHCP_FORWARDER)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/dhcp-fwd $(IDIR_DHCP_FORWARDER)/usr/bin/
- $(RSTRIP) $(IDIR_DHCP_FORWARDER)
- $(IPKG_BUILD) $(IDIR_DHCP_FORWARDER) $(PACKAGE_DIR)
diff --git a/openwrt/package/dhcp-forwarder/files/dhcp-fwd.init b/openwrt/package/dhcp-forwarder/files/dhcp-fwd.init
deleted file mode 100644
index 6ad3858e89..0000000000
--- a/openwrt/package/dhcp-forwarder/files/dhcp-fwd.init
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-LOG_D=/var/log
-RUN_D=/var/run
-PID_F=$RUN_D/dhcpd-fwd.pid
-
-case $1 in
- start)
- [ -d $LOG_D ] || mkdir -p $LOG_D
- [ -d $RUN_D ] || mkdir -p $RUN_D
- dhcp-fwd
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/dhcp-forwarder/ipkg/dhcp-forwarder.conffiles b/openwrt/package/dhcp-forwarder/ipkg/dhcp-forwarder.conffiles
deleted file mode 100644
index 70be85a8a4..0000000000
--- a/openwrt/package/dhcp-forwarder/ipkg/dhcp-forwarder.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/dhcp-fwd.conf
diff --git a/openwrt/package/dhcp-forwarder/ipkg/dhcp-forwarder.control b/openwrt/package/dhcp-forwarder/ipkg/dhcp-forwarder.control
deleted file mode 100644
index 9958ddb397..0000000000
--- a/openwrt/package/dhcp-forwarder/ipkg/dhcp-forwarder.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: dhcp-forwarder
-Priority: optional
-Section: net
-Description: a DHCP relay agent
diff --git a/openwrt/package/dhcp-forwarder/patches/00-big_endian.patch b/openwrt/package/dhcp-forwarder/patches/00-big_endian.patch
deleted file mode 100644
index add157d3f4..0000000000
--- a/openwrt/package/dhcp-forwarder/patches/00-big_endian.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- dhcp-forwarder-0.7/src/dhcp.h 2004-06-22 03:46:56.000000000 -0700
-+++ dhcp-forwarder-0.7-x/src/dhcp.h 2005-10-06 17:04:14.000000000 -0700
-@@ -89,7 +89,7 @@
- optDHCP_COOKIE = 0x63538263u,
- flgDHCP_BCAST = 0x0080u
- #else
-- DHCP_COOKIE = 0x63825363u,
-+ optDHCP_COOKIE = 0x63825363u,
- flgDHCP_BCAST = 0x8000u
- #endif
- };
diff --git a/openwrt/package/dhcp-forwarder/patches/01-getpwnmam_getgrnam.patch b/openwrt/package/dhcp-forwarder/patches/01-getpwnmam_getgrnam.patch
deleted file mode 100644
index ef84913302..0000000000
--- a/openwrt/package/dhcp-forwarder/patches/01-getpwnmam_getgrnam.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff -pur dhcp-forwarder-0.7-orig/src/wrappers.h dhcp-forwarder-0.7-patched/src/wrappers.h
---- dhcp-forwarder-0.7-orig/src/wrappers.h 2004-06-22 12:46:56.000000000 +0200
-+++ dhcp-forwarder-0.7-patched/src/wrappers.h 2005-12-27 12:28:10.464289435 +0100
-@@ -65,7 +65,14 @@ Egetgrnam(char const *name)
- /*@*/
- {
- /*@observer@*/struct group const *res = getgrnam(name);
-- FatalErrnoError(res==0, 1, "getgrnam()");
-+
-+ FatalErrnoError((res == NULL) && (errno != 0), 1, "getgrnam()");
-+
-+ if (res == NULL)
-+ {
-+ fprintf (stderr, "No such group: `%s'\n", name);
-+ exit (1);
-+ }
-
- /*@-freshtrans@*/
- /*@-mustfreefresh@*/
-@@ -80,7 +87,14 @@ Egetpwnam(char const *name)
- /*@*/
- {
- struct passwd const *res = getpwnam(name);
-- FatalErrnoError(res==0, 1, "getpwnam()");
-+
-+ FatalErrnoError((res == NULL) && (errno != 0), 1, "getpwnam()");
-+
-+ if (res == NULL)
-+ {
-+ fprintf (stderr, "No such user: `%s'\n", name);
-+ exit (1);
-+ }
-
- return res;
- }
diff --git a/openwrt/package/dhcp/Config.in b/openwrt/package/dhcp/Config.in
deleted file mode 100644
index f29beeeda0..0000000000
--- a/openwrt/package/dhcp/Config.in
+++ /dev/null
@@ -1,30 +0,0 @@
-#menu "dhcp.............................. ISC DHCP (Dynamic Host Configuration Protocol) implementation"
-
-config BR2_COMPILE_DHCP
- tristate
- default n
- depends BR2_PACKAGE_DHCP_RELAY || BR2_PACKAGE_DHCP_SERVER
-
-config BR2_PACKAGE_DHCP_RELAY
- prompt "dhcp-relay........................ ISC DHCP relay"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_DHCP
- help
- ISC (Internet Software Consortium) DHCP (Dynamic Host Configuration
- Protocol) relay daemon.
-
- http://www.isc.org/
-
-config BR2_PACKAGE_DHCP_SERVER
- prompt "dhcp-server....................... ISC DHCP server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_DHCP
- help
- ISC (Internet Software Consortium) DHCP (Dynamic Host Configuration
- Protocol) server daemon.
-
- http://www.isc.org/
-
-#endmenu
diff --git a/openwrt/package/dhcp/Makefile b/openwrt/package/dhcp/Makefile
deleted file mode 100644
index 8ee56ff4a6..0000000000
--- a/openwrt/package/dhcp/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=dhcp
-PKG_VERSION:=3.0.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=f91416a0b8ed3fd0601688cf0b7df58f
-
-PKG_SOURCE_URL:=ftp://ftp.isc.org/isc/dhcp/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,DHCP_RELAY,dhcp-relay,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,DHCP_SERVER,dhcp-server,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR) ; \
- ./configure \
- --copts "$(TARGET_CFLAGS)" \
- linux-2.2 \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_DHCP_RELAY):
- install -d -m0755 $(IDIR_DHCP_RELAY)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/dhcrelay $(IDIR_DHCP_RELAY)/usr/sbin/
- $(RSTRIP) $(IDIR_DHCP_RELAY)
- $(IPKG_BUILD) $(IDIR_DHCP_RELAY) $(PACKAGE_DIR)
-
-$(IPKG_DHCP_SERVER):
- install -d -m0755 $(IDIR_DHCP_SERVER)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/dhcpd $(IDIR_DHCP_SERVER)/usr/sbin/
- $(RSTRIP) $(IDIR_DHCP_SERVER)
- $(IPKG_BUILD) $(IDIR_DHCP_SERVER) $(PACKAGE_DIR)
diff --git a/openwrt/package/dhcp/ipkg/dhcp-relay.control b/openwrt/package/dhcp/ipkg/dhcp-relay.control
deleted file mode 100644
index fbd3d20b85..0000000000
--- a/openwrt/package/dhcp/ipkg/dhcp-relay.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: dhcp-relay
-Priority: optional
-Section: net
-Description: ISC DHCP relay
diff --git a/openwrt/package/dhcp/ipkg/dhcp-server.control b/openwrt/package/dhcp/ipkg/dhcp-server.control
deleted file mode 100644
index a9b86a1835..0000000000
--- a/openwrt/package/dhcp/ipkg/dhcp-server.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: dhcp-server
-Priority: optional
-Section: net
-Description: ISC DHCP server
diff --git a/openwrt/package/dhcp6/Config.in b/openwrt/package/dhcp6/Config.in
deleted file mode 100644
index f00e281e4d..0000000000
--- a/openwrt/package/dhcp6/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_DHCP6
- prompt "dhcp6............................. IPv6 DHCP server and client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBNCURSES
- help
- This is the first ever open source implementation of Dynamic Host Configuration Protocol for IPv6 (DHCPv6) server and client on Linux Operating System. The server provides leases (durations or lifetimes) on IPv6 addresses to the clients who request for it
diff --git a/openwrt/package/dhcp6/Makefile b/openwrt/package/dhcp6/Makefile
deleted file mode 100755
index e007abad29..0000000000
--- a/openwrt/package/dhcp6/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=dhcp6
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=86193dfa62137db3ea459543db4f1102
-PKG_SOURCE_URL:=@SF/dhcpv6-linux
-PKG_SOURCE:=dhcpv6-linux-$(PKG_VERSION).zip
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=unzip
-
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,DHCP6,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) CC=$(TARGET_CC) STAGING_DIR=$(STAGING_DIR) -C $(PKG_BUILD_DIR)/server
- $(MAKE) CC=$(TARGET_CC) STAGING_DIR=$(STAGING_DIR) -C $(PKG_BUILD_DIR)/client
- install -d $(PKG_INSTALL_DIR)/usr/sbin $(PKG_INSTALL_DIR)/etc/dhcp{d6,6}
- install -m0755 $(PKG_BUILD_DIR)/client/cli $(PKG_INSTALL_DIR)/usr/sbin/dhcp6client
- install -m0755 $(PKG_BUILD_DIR)/server/serv $(PKG_INSTALL_DIR)/usr/sbin/dhcpd6
- install -m0755 $(PKG_BUILD_DIR)/server/*.conf $(PKG_INSTALL_DIR)/etc/dhcpd6/
- install -m0755 $(PKG_BUILD_DIR)/client/*.conf $(PKG_INSTALL_DIR)/etc/dhcp6/
- touch $@
-
-$(IPKG_DHCP6):
- mkdir -p $(IDIR_DHCP6)
- $(CP) $(PKG_INSTALL_DIR)/* $(IDIR_DHCP6)/
- $(RSTRIP) $(IDIR_DHCP6)
- $(IPKG_BUILD) $(IDIR_DHCP6) $(PACKAGE_DIR)
diff --git a/openwrt/package/dhcp6/ipkg/dhcp6.control b/openwrt/package/dhcp6/ipkg/dhcp6.control
deleted file mode 100755
index cc030a0e2b..0000000000
--- a/openwrt/package/dhcp6/ipkg/dhcp6.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: dhcp6
-Section: net
-Architecture: mipsel
-Priority: optional
-Description: This is the first ever open source implementation of Dynamic Host Configuration Protocol for IPv6 (DHCPv6) server and client on Linux Operating System. The server provides leases (durations or lifetimes) on IPv6 addresses to the clients who request for it.
diff --git a/openwrt/package/dhcp6/ipkg/files/conffiles b/openwrt/package/dhcp6/ipkg/files/conffiles
deleted file mode 100644
index 267baa94d9..0000000000
--- a/openwrt/package/dhcp6/ipkg/files/conffiles
+++ /dev/null
@@ -1,4 +0,0 @@
-/etc/dhcpd6/dhcpd6.conf
-/etc/dhcpd6/leases6.conf
-/etc/dhcpd6/partial_leases6.conf
-/etc/dhcp6/sollicit.conf
diff --git a/openwrt/package/dhcp6/patches/01-remove_debug.patch b/openwrt/package/dhcp6/patches/01-remove_debug.patch
deleted file mode 100644
index d39eeb1261..0000000000
--- a/openwrt/package/dhcp6/patches/01-remove_debug.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-diff -urN orig/dhcp6-1.0/client/Makefile dhcp6-1.0/client/Makefile
---- orig/dhcp6-1.0/client/Makefile 2025-06-28 23:21:40.000000000 +0200
-+++ dhcp6-1.0/client/Makefile 2005-12-13 13:43:11.000000000 +0100
-@@ -1,42 +1,40 @@
--
--CC = gcc
- STD_HEADERS = stdhead.h head.h struct.h options_type.h message_type.h states.h timer_val.h constants.h macros.h status_codes.h
- OBJECT_FILES = client.o solicit.o clilib.o parse.o request.o decline.o renew.o rebind.o release.o
- HEADER_FILES = solicit.h clilib.h parse.h request.h decline.h renew.h rebind.h release.h
--
-+IFLAGS = -I$(STAGING_DIR)/usr/include
-
- dhcpv6_client : dhcpv6_client.c cli
-- $(CC) -g3 dhcpv6_client.c -o dhcpv6_client
-+ $(CC) $(IFLAGS) dhcpv6_client.c -o dhcpv6_client
-
- cli : $(OBJECT_FILES)
-- $(CC) -g3 $(OBJECT_FILES) -o cli -lncurses
-+ $(CC) $(IFLAGS) $(OBJECT_FILES) -o cli -L$(STAGING_DIR)/usr/lib -lncurses
-
- client.o : client.c $(STD_HEADERS) $(HEADER_FILES)
-- $(CC) -g3 -c client.c -o client.o
-+ $(CC) $(IFLAGS) -c client.c -o client.o
-
- release.o : release.c release.h clilib.h
-- $(CC) -g3 -c release.c -o release.o
-+ $(CC) $(IFLAGS) -c release.c -o release.o
-
- rebind.o : rebind.c rebind.h clilib.h
-- $(CC) -g3 -c rebind.c -o rebind.o
-+ $(CC) $(IFLAGS) -c rebind.c -o rebind.o
-
- renew.o : renew.c renew.h clilib.h
-- $(CC) -g3 -c renew.c -o renew.o
-+ $(CC) $(IFLAGS) -c renew.c -o renew.o
-
- request.o : request.c request.h clilib.h
-- $(CC) -g3 -c request.c -o request.o
-+ $(CC) $(IFLAGS) -c request.c -o request.o
-
- decline.o : decline.c decline.h clilib.h parse.h solicit.h
-- $(CC) -g3 -c decline.c -o decline.o
-+ $(CC) $(IFLAGS) -c decline.c -o decline.o
-
- solicit.o : solicit.c solicit.h clilib.h parse.h
-- $(CC) -g3 -c solicit.c -o solicit.o
-+ $(CC) $(IFLAGS) -c solicit.c -o solicit.o
-
- clilib.o : clilib.c clilib.h parse.h
-- $(CC) -g3 -c clilib.c -o clilib.o
-+ $(CC) $(IFLAGS) -c clilib.c -o clilib.o
-
- parse.o : parse.c parse.h clilib.h
-- $(CC) -g3 -c parse.c -o parse.o
-+ $(CC) $(IFLAGS) -c parse.c -o parse.o
-
- clean :
- rm -f *.o cli dhcpv6_client
-diff -urN orig/dhcp6-1.0/client/clilib.c dhcp6-1.0/client/clilib.c
---- orig/dhcp6-1.0/client/clilib.c 2025-06-28 23:21:40.000000000 +0200
-+++ dhcp6-1.0/client/clilib.c 2005-12-13 13:42:43.000000000 +0100
-@@ -554,7 +554,7 @@
-
- void generate_trans_id (u_int32_t *trans_id)
- {
-- extern u_int32_t g_trans_id;
-+ extern int g_trans_id;
- time_t t;
- srand (time (&t));
- *trans_id = 0;
-@@ -890,9 +890,7 @@
- break;
-
- default :
--#if DEBUG == 3
- printf ("Unrecognized DUID type\n");
--#endif
- }
-
- next_opt = (struct OPTIONS *) malloc (sizeof (struct OPTIONS));
-diff -urN orig/dhcp6-1.0/server/Makefile dhcp6-1.0/server/Makefile
---- orig/dhcp6-1.0/server/Makefile 2002-06-28 14:50:04.000000000 +0200
-+++ dhcp6-1.0/server/Makefile 2005-12-13 11:35:53.000000000 +0100
-@@ -1,27 +1,26 @@
--CC = gcc
- STD_HEADERS = stdhead.h head.h struct.h options_type.h message_type.h macros.h status_codes.h constants.h
- OBJECT_FILES = server.o lib.o advertise.o parse.o leases.o reply.o
-
- serv: $(OBJECT_FILES)
-- $(CC) -g3 $(OBJECT_FILES) -o serv
-+ $(CC) $(OBJECT_FILES) -o serv
-
- lib.o: lib.c lib.h $(STD_HEADERS)
-- $(CC) -g3 -c lib.c -o lib.o
-+ $(CC) -c lib.c -o lib.o
-
- parse.o: parse.c parse.h $(STD_HEADERS)
-- $(CC) -g3 -c parse.c -o parse.o
-+ $(CC) -c parse.c -o parse.o
-
- leases.o: leases.c leases.h $(STD_HEADERS)
-- $(CC) -g3 -c leases.c -o leases.o
-+ $(CC) -c leases.c -o leases.o
-
- advertise.o: advertise.c advertise.h $(STD_HEADERS)
-- $(CC) -g3 -c advertise.c -o advertise.o
-+ $(CC) -c advertise.c -o advertise.o
-
- reply.o: reply.c reply.h $(STD_HEADERS)
-- $(CC) -g3 -c reply.c -o reply.o
-+ $(CC) -c reply.c -o reply.o
-
- server.o: server.c lib.h advertise.h reply.h leases.h parse.h $(STD_HEADERS)
-- $(CC) -g3 -c server.c -o server.o
-+ $(CC) -c server.c -o server.o
-
- clean:
- rm -f *.o serv
diff --git a/openwrt/package/dhcp6/patches/02-gcc_lvalue.patch b/openwrt/package/dhcp6/patches/02-gcc_lvalue.patch
deleted file mode 100644
index e5deda6905..0000000000
--- a/openwrt/package/dhcp6/patches/02-gcc_lvalue.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- dhcp6-1.0/client/solicit.c 2025-06-28 23:21:40.000000000 -0700
-+++ dhcp6-1.0-patched/client/solicit.c 2006-04-27 15:32:52.000000000 -0700
-@@ -18,7 +18,7 @@
- dhcp_message_ptr -> opt = add_client_id_option (interface_details);
-
- opt_ptr = (struct OPTIONS *) dhcp_message_ptr -> opt;
-- (struct OPTIONS *) ((struct DUID *) opt_ptr -> opt_data) -> opt = add_ia_option (interface_details);
-+ ((struct DUID *) opt_ptr -> opt_data) -> opt = add_ia_option (interface_details);
- return dhcp_message_ptr;
- }
-
diff --git a/openwrt/package/dnsmasq/Config.in b/openwrt/package/dnsmasq/Config.in
deleted file mode 100644
index b20bf73620..0000000000
--- a/openwrt/package/dnsmasq/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_DNSMASQ
- prompt "dnsmasq........................... Lightweight DNS and DHCP server"
- tristate
- default y
- help
- A lightweight DNS and DHCP server. It is intended to provide
- coupled DNS and DHCP service to a LAN.
-
- http://www.thekelleys.org.uk/dnsmasq/
-
diff --git a/openwrt/package/dnsmasq/Makefile b/openwrt/package/dnsmasq/Makefile
deleted file mode 100644
index 88bd9f21b9..0000000000
--- a/openwrt/package/dnsmasq/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=dnsmasq
-PKG_VERSION:=2.27
-PKG_RELEASE:=1
-PKG_MD5SUM:=489198ec87101087043adc98bbe062dc
-
-PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=zcat
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,DNSMASQ,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) CFLAGS="$(TARGET_CFLAGS)" \
- BINDIR=/usr/sbin MANDIR=/usr/man
- touch $@
-
-$(IPKG_DNSMASQ):
- install -d -m0755 $(IDIR_DNSMASQ)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/src/$(PKG_NAME) $(IDIR_DNSMASQ)/usr/sbin/
- $(STRIP) $(IDIR_DNSMASQ)/usr/sbin/*
- install -d -m0755 $(IDIR_DNSMASQ)/etc/init.d/
- install -m0644 ./files/dnsmasq.conf $(IDIR_DNSMASQ)/etc/dnsmasq.conf
- install -m0755 ./files/dnsmasq.init $(IDIR_DNSMASQ)/etc/init.d/S50dnsmasq
- $(IPKG_BUILD) $(IDIR_DNSMASQ) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/dnsmasq/files/dnsmasq.conf b/openwrt/package/dnsmasq/files/dnsmasq.conf
deleted file mode 100644
index 7aed3a3da4..0000000000
--- a/openwrt/package/dnsmasq/files/dnsmasq.conf
+++ /dev/null
@@ -1,29 +0,0 @@
-# filter what we send upstream
-domain-needed
-bogus-priv
-filterwin2k
-localise-queries
-
-# allow /etc/hosts and dhcp lookups via *.lan
-local=/lan/
-domain=lan
-expand-hosts
-
-@ifdef dhcp_enable
-dhcp-range=@@start@@,@@end@@,@@netmask@@,@@lease@@
-@endif
-@ifdef wan_ifname
-except-interface=@@wan_ifname@@
-@endif
-
-# enable dhcp (start,end,netmask,leasetime)
-dhcp-authoritative
-dhcp-leasefile=/tmp/dhcp.leases
-
-# use /etc/ethers for static hosts; same format as --dhcp-host
-# <hwaddr> <ipaddr>
-read-ethers
-
-# other useful options:
-# default route(s): dhcp-option=3,192.168.1.1,192.168.1.2
-# dns server(s): dhcp-option=6,192.168.1.1,192.168.1.2
diff --git a/openwrt/package/dnsmasq/files/dnsmasq.init b/openwrt/package/dnsmasq/files/dnsmasq.init
deleted file mode 100644
index 17ef43c3d5..0000000000
--- a/openwrt/package/dnsmasq/files/dnsmasq.init
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-. /etc/config/network
-
-# The following is to automatically configure the DHCP settings
-# based on config settings. Feel free to replace all this crap
-# with a simple "dnsmasq" and manage everything via the
-# /etc/dnsmasq.conf config file
-
-[ -f /etc/dnsmasq.conf ] || exit
-
-args=""
-iface=lan
-eval "ifname=\${${iface}_ifname}"
-
-dhcp_enable="${dhcp_enable:-1}"
-dhcp_start="${dhcp_start:-100}"
-dhcp_num="${dhcp_num:-50}"
-dhcp_lease="${dhcp_lease:-12h}"
-
-# if dhcp_enable is unset and there is a dhcp server on the network already, default to dhcp_enable=0
-[ -z "$dhcp_enable" ] && udhcpc -n -q -R -s /bin/true -i $ifname >&- && dhcp_enable="${dhcp_enable:-0}"
-
-# dhcp_enable=0 disables the dhcp server
-(
- [ -z "$dhcp_enable" -o "$dhcp_enable" -eq 1 ] && {
- # no existing DHCP server?
-
- # calculate settings
- eval "ipaddr=\${${iface}_ipaddr}"
- eval "netmask=\${${iface}_netmask}"
- eval $(ipcalc $ipaddr $netmask ${dhcp_start:-100} ${dhcp_num:-150})
-
- # and pass the args via config parser defines
- echo "@define dhcp_enable 1"
- echo "@define netmask $NETMASK"
- echo "@define start $START"
- echo "@define end $END"
- echo "@define lease ${dhcp_lease:-12h}"
- }
-
- # ignore requests from wan interface
- [ -z "$wan_proto" -o "$wan_proto" = "none" ] || echo "@define wan_ifname $wan_ifname"
-
- cat /etc/dnsmasq.conf
-) | awk -f /usr/lib/parse-config.awk | dnsmasq -C /proc/self/fd/0
diff --git a/openwrt/package/dnsmasq/ipkg/dnsmasq.conffiles b/openwrt/package/dnsmasq/ipkg/dnsmasq.conffiles
deleted file mode 100644
index e30eba8f66..0000000000
--- a/openwrt/package/dnsmasq/ipkg/dnsmasq.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/dnsmasq.conf
diff --git a/openwrt/package/dnsmasq/ipkg/dnsmasq.control b/openwrt/package/dnsmasq/ipkg/dnsmasq.control
deleted file mode 100644
index 6f61edc656..0000000000
--- a/openwrt/package/dnsmasq/ipkg/dnsmasq.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: dnsmasq
-Priority: essential
-Section: net
-Description: A lightweight DNS and DHCP server
diff --git a/openwrt/package/dnsmasq/patches/101-ipv6.patch b/openwrt/package/dnsmasq/patches/101-ipv6.patch
deleted file mode 100644
index 5cbf781744..0000000000
--- a/openwrt/package/dnsmasq/patches/101-ipv6.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- dnsmasq-2.15.orig/src/config.h 2004-09-20 15:47:57.000000000 +0200
-+++ dnsmasq-2.15/src/config.h 2004-09-20 23:21:10.000000000 +0200
-@@ -78,8 +78,9 @@
- /* We assume that systems which don't have IPv6
- headers don't have ntop and pton either */
-
--#if defined(INET6_ADDRSTRLEN) && defined(IPV6_V6ONLY) && !defined(NO_IPV6)
-+#if defined(INET6_ADDRSTRLEN) && !defined(NO_IPV6)
- # define HAVE_IPV6
-+# define IPV6_V6ONLY 26
- # define ADDRSTRLEN INET6_ADDRSTRLEN
- # if defined(SOL_IPV6)
- # define IPV6_LEVEL SOL_IPV6
diff --git a/openwrt/package/dosfstools/Config.in b/openwrt/package/dosfstools/Config.in
deleted file mode 100644
index 0e700347e1..0000000000
--- a/openwrt/package/dosfstools/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_DOSFSTOOLS
- prompt "dosfstools........................ Utilities to create and check MS-DOS FAT filesystems"
- tristate
- default m if CONFIG_DEVEL
- help
- Utilities to create and check MS-DOS FAT filesystems.
-
- ftp://ftp.uni-erlangen.de:/pub/Linux/LOCAL/dosfstools/
-
diff --git a/openwrt/package/dosfstools/Makefile b/openwrt/package/dosfstools/Makefile
deleted file mode 100644
index 91b455e9db..0000000000
--- a/openwrt/package/dosfstools/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=dosfstools
-PKG_VERSION:=2.11
-PKG_RELEASE:=1
-PKG_MD5SUM:=407d405ade410f7597d364ab5dc8c9f6
-
-PKG_SOURCE_URL:=ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/dosfstools/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).src.tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,DOSFSTOOLS,dosfstools,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- OPTFLAGS="$(TARGET_CFLAGS) -D_FILE_OFFSET_BITS=64" \
- PREFIX="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_DOSFSTOOLS):
- install -d -m0755 $(IDIR_DOSFSTOOLS)/sbin
- $(CP) $(PKG_INSTALL_DIR)/sbin/dosfsck $(IDIR_DOSFSTOOLS)/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/fsck.{msdos,vfat} $(IDIR_DOSFSTOOLS)/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/mkdosfs $(IDIR_DOSFSTOOLS)/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/mkfs.{msdos,vfat} $(IDIR_DOSFSTOOLS)/sbin/
- $(RSTRIP) $(IDIR_DOSFSTOOLS)
- $(IPKG_BUILD) $(IDIR_DOSFSTOOLS) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/dosfstools/ipkg/dosfstools.control b/openwrt/package/dosfstools/ipkg/dosfstools.control
deleted file mode 100644
index 4ec52a01fb..0000000000
--- a/openwrt/package/dosfstools/ipkg/dosfstools.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: dosfstools
-Priority: optional
-Section: admin
-Description: Utilities to create and check MS-DOS FAT filesystems
diff --git a/openwrt/package/dropbear/Config.in b/openwrt/package/dropbear/Config.in
deleted file mode 100644
index efdc70b1a6..0000000000
--- a/openwrt/package/dropbear/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_DROPBEAR
- prompt "dropbear.......................... Small SSH 2 client/server"
- tristate
- default y
- help
- A small SSH 2 server/client designed for small memory environments.
-
- http://matt.ucc.asn.au/dropbear/
-
-config BR2_PACKAGE_DBCONVERT
- prompt "dropbearconvert................. Utility for converting SSH keys"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_DROPBEAR
diff --git a/openwrt/package/dropbear/Makefile b/openwrt/package/dropbear/Makefile
deleted file mode 100644
index 75eaf6e44c..0000000000
--- a/openwrt/package/dropbear/Makefile
+++ /dev/null
@@ -1,94 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=dropbear
-PKG_VERSION:=0.48.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=ca8e53a766faec831882831364568421
-
-PKG_SOURCE_URL:=http://matt.ucc.asn.au/dropbear/releases/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,DROPBEAR,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,DBCONVERT,dropbearconvert,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- $(SED) 's,^/\* #define PKG_MULTI.*,#define PKG_MULTI,g' $(PKG_BUILD_DIR)/options.h
- $(SED) 's,^#define DO_HOST_LOOKUP,/* & */,g' $(PKG_BUILD_DIR)/options.h
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- autoconf; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --with-shared \
- --disable-pam \
- --enable-openpty \
- --enable-syslog \
- --disable-shadow \
- --disable-lastlog \
- --disable-utmp \
- --disable-utmpx \
- --disable-wtmp \
- --disable-wtmpx \
- --disable-loginfunc \
- --disable-pututline \
- --disable-pututxline \
- --disable-zlib \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- LD=$(TARGET_CC) \
- PROGRAMS="dropbear dbclient dropbearkey scp" \
- MULTI=1 SCPPROGRESS=1
- $(MAKE) -C $(PKG_BUILD_DIR) \
- LD=$(TARGET_CC) \
- PROGRAMS="dropbearconvert"
- touch $@
-
-$(IPKG_DBCONVERT):
- mkdir -p $(IDIR_DBCONVERT)/usr/bin
- install -m 755 $(PKG_BUILD_DIR)/dropbearconvert \
- $(IDIR_DBCONVERT)/usr/bin/dropbearconvert
- $(IPKG_BUILD) $(IDIR_DBCONVERT) $(PACKAGE_DIR)
-
-$(IPKG_DROPBEAR):
- mkdir -p $(IDIR_DROPBEAR)/usr/bin
- mkdir -p $(IDIR_DROPBEAR)/usr/sbin
- install -m 755 $(PKG_BUILD_DIR)/dropbearmulti \
- $(IDIR_DROPBEAR)/usr/sbin/dropbear
- $(STRIP) $(IDIR_DROPBEAR)/usr/sbin/dropbear
- ln -sf ../sbin/dropbear $(IDIR_DROPBEAR)/usr/bin/scp
- ln -sf ../sbin/dropbear $(IDIR_DROPBEAR)/usr/bin/ssh
- ln -sf ../sbin/dropbear $(IDIR_DROPBEAR)/usr/bin/dbclient
- ln -sf ../sbin/dropbear $(IDIR_DROPBEAR)/usr/bin/dropbearkey
- mkdir -p $(IDIR_DROPBEAR)/etc/init.d
- install -m 755 ./files/S50dropbear $(IDIR_DROPBEAR)/etc/init.d/
- $(IPKG_BUILD) $(IDIR_DROPBEAR) $(PACKAGE_DIR)
diff --git a/openwrt/package/dropbear/files/S50dropbear b/openwrt/package/dropbear/files/S50dropbear
deleted file mode 100755
index 88fc288491..0000000000
--- a/openwrt/package/dropbear/files/S50dropbear
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-
-for type in rsa dss; do {
- # check for keys
- key=/etc/dropbear/dropbear_${type}_host_key
- [ ! -f $key ] && {
- # generate missing keys
- mkdir -p /etc/dropbear
- [ -x /usr/bin/dropbearkey ] && {
- /usr/bin/dropbearkey -t $type -f $key 2>&- >&- && exec $0 $*
- } &
- exit 0
- }
-}; done
-
-/usr/sbin/dropbear
diff --git a/openwrt/package/dropbear/ipkg/dropbear.control b/openwrt/package/dropbear/ipkg/dropbear.control
deleted file mode 100644
index 0aa8cc5b82..0000000000
--- a/openwrt/package/dropbear/ipkg/dropbear.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: dropbear
-Priority: optional
-Section: net
-Description: a small SSH 2 server/client designed for small memory environments.
diff --git a/openwrt/package/dropbear/ipkg/dropbearconvert.control b/openwrt/package/dropbear/ipkg/dropbearconvert.control
deleted file mode 100644
index 9dd5ecd1aa..0000000000
--- a/openwrt/package/dropbear/ipkg/dropbearconvert.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: dropbearconvert
-Priority: optional
-Depends: zlib
-Section: net
-Description: Utility for converting SSH keys
diff --git a/openwrt/package/dropbear/patches/100-pubkey_path.patch b/openwrt/package/dropbear/patches/100-pubkey_path.patch
deleted file mode 100644
index cbe525bcc3..0000000000
--- a/openwrt/package/dropbear/patches/100-pubkey_path.patch
+++ /dev/null
@@ -1,45 +0,0 @@
---- dropbear.old/svr-authpubkey.c.orig 2006-06-03 14:54:43.000000000 +0000
-+++ dropbear.dev/svr-authpubkey.c 2006-06-03 15:03:19.000000000 +0000
-@@ -176,6 +176,8 @@
- goto out;
- }
-
-+ if (ses.authstate.pw->pw_uid != 0) {
-+
- /* we don't need to check pw and pw_dir for validity, since
- * its been done in checkpubkeyperms. */
- len = strlen(ses.authstate.pw->pw_dir);
-@@ -187,6 +189,9 @@
-
- /* open the file */
- authfile = fopen(filename, "r");
-+ } else {
-+ authfile = fopen("/etc/dropbear/authorized_keys","r");
-+ }
- if (authfile == NULL) {
- goto out;
- }
-@@ -274,6 +279,8 @@
- goto out;
- }
-
-+ if (ses.authstate.pw->pw_uid != 0) {
-+
- /* allocate max required pathname storage,
- * = path + "/.ssh/authorized_keys" + '\0' = pathlen + 22 */
- filename = m_malloc(len + 22);
-@@ -295,6 +302,14 @@
- if (checkfileperm(filename) != DROPBEAR_SUCCESS) {
- goto out;
- }
-+ } else {
-+ if (checkfileperm("/etc/dropbear") != DROPBEAR_SUCCESS) {
-+ goto out;
-+ }
-+ if (checkfileperm("/etc/dropbear/authorized_keys") != DROPBEAR_SUCCESS) {
-+ goto out;
-+ }
-+ }
-
- /* file looks ok, return success */
- ret = DROPBEAR_SUCCESS;
diff --git a/openwrt/package/dropbear/patches/110-change_user.patch b/openwrt/package/dropbear/patches/110-change_user.patch
deleted file mode 100644
index ac617e2806..0000000000
--- a/openwrt/package/dropbear/patches/110-change_user.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -urN dropbear.old/svr-chansession.c dropbear.dev/svr-chansession.c
---- dropbear.old/svr-chansession.c 2005-12-09 06:42:33.000000000 +0100
-+++ dropbear.dev/svr-chansession.c 2005-12-12 01:42:38.982034750 +0100
-@@ -860,12 +860,12 @@
- /* We can only change uid/gid as root ... */
- if (getuid() == 0) {
-
-- if ((setgid(ses.authstate.pw->pw_gid) < 0) ||
-+ if ((ses.authstate.pw->pw_gid != 0) && ((setgid(ses.authstate.pw->pw_gid) < 0) ||
- (initgroups(ses.authstate.pw->pw_name,
-- ses.authstate.pw->pw_gid) < 0)) {
-+ ses.authstate.pw->pw_gid) < 0))) {
- dropbear_exit("error changing user group");
- }
-- if (setuid(ses.authstate.pw->pw_uid) < 0) {
-+ if ((ses.authstate.pw->pw_uid != 0) && (setuid(ses.authstate.pw->pw_uid) < 0)) {
- dropbear_exit("error changing user");
- }
- } else {
diff --git a/openwrt/package/dropbear/patches/120-hostkey_prompt.patch b/openwrt/package/dropbear/patches/120-hostkey_prompt.patch
deleted file mode 100644
index 59639e7b97..0000000000
--- a/openwrt/package/dropbear/patches/120-hostkey_prompt.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN dropbear-0.45.old/cli-kex.c dropbear-0.45/cli-kex.c
---- dropbear-0.45.old/cli-kex.c 2005-03-07 05:27:01.000000000 +0100
-+++ dropbear-0.45/cli-kex.c 2005-03-25 11:13:57.000000000 +0100
-@@ -119,7 +119,7 @@
- char response = 'z';
-
- fp = sign_key_fingerprint(keyblob, keybloblen);
-- fprintf(stderr, "\nHost '%s' is not in the trusted hosts file.\n(fingerprint %s)\nDo you want to continue connecting? (y/n)\n",
-+ fprintf(stderr, "\nHost '%s' is not in the trusted hosts file.\n(fingerprint %s)\nDo you want to continue connecting? (y/n) ",
- cli_opts.remotehost,
- fp);
-
diff --git a/openwrt/package/dropbear/patches/130-ssh_ignore_o_and_x_args.patch b/openwrt/package/dropbear/patches/130-ssh_ignore_o_and_x_args.patch
deleted file mode 100644
index 9b79e4864e..0000000000
--- a/openwrt/package/dropbear/patches/130-ssh_ignore_o_and_x_args.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -ruN dropbear-0.48-old/cli-runopts.c dropbear-0.48-new/cli-runopts.c
---- dropbear-0.48-old/cli-runopts.c 2006-03-09 16:06:03.000000000 +0100
-+++ dropbear-0.48-new/cli-runopts.c 2006-03-11 12:28:54.000000000 +0100
-@@ -188,6 +188,10 @@
- debug_trace = 1;
- break;
- #endif
-+ case 'o':
-+ next = &dummy;
-+ case 'x':
-+ break;
- case 'F':
- case 'e':
- case 'c':
-@@ -199,7 +203,6 @@
- #ifndef ENABLE_CLI_LOCALTCPFWD
- case 'L':
- #endif
-- case 'o':
- case 'b':
- next = &dummy;
- default:
diff --git a/openwrt/package/dropbear/patches/140-use_dev_urandom.patch b/openwrt/package/dropbear/patches/140-use_dev_urandom.patch
deleted file mode 100644
index e1424f59a3..0000000000
--- a/openwrt/package/dropbear/patches/140-use_dev_urandom.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN dropbear-0.45.old/options.h dropbear-0.45/options.h
---- dropbear-0.45.old/options.h 2005-03-14 17:12:22.000000000 +0100
-+++ dropbear-0.45/options.h 2005-03-14 17:13:49.000000000 +0100
-@@ -143,7 +143,7 @@
- * however significantly reduce the security of your ssh connections
- * if the PRNG state becomes guessable - make sure you know what you are
- * doing if you change this. */
--#define DROPBEAR_RANDOM_DEV "/dev/random"
-+#define DROPBEAR_RANDOM_DEV "/dev/urandom"
-
- /* prngd must be manually set up to produce output */
- /*#define DROPBEAR_PRNGD_SOCKET "/var/run/dropbear-rng"*/
diff --git a/openwrt/package/dropbear/patches/150-dbconvert_standalone.patch b/openwrt/package/dropbear/patches/150-dbconvert_standalone.patch
deleted file mode 100644
index 50c035ae8c..0000000000
--- a/openwrt/package/dropbear/patches/150-dbconvert_standalone.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- dropbear-0.47.old/options.h 2006-01-31 13:36:25.301562500 +0100
-+++ dropbear-0.47.dev/options.h 2006-01-31 13:37:41.846346250 +0100
-@@ -5,6 +5,11 @@
- #ifndef _OPTIONS_H_
- #define _OPTIONS_H_
-
-+#if !defined(DROPBEAR_CLIENT) && !defined(DROPBEAR_SERVER)
-+#define DROPBEAR_SERVER
-+#define DROPBEAR_CLIENT
-+#endif
-+
- /******************************************************************
- * Define compile-time options below - the "#ifndef DROPBEAR_XXX .... #endif"
- * parts are to allow for commandline -DDROPBEAR_XXX options etc.
diff --git a/openwrt/package/dsniff/Config.in b/openwrt/package/dsniff/Config.in
deleted file mode 100644
index 372274e48a..0000000000
--- a/openwrt/package/dsniff/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_DSNIFF
- prompt "dsniff............................ A collection of tools for betwork auditing and penetration testing"
- tristate
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBNIDS
- select BR2_PACKAGE_LIBNET
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_LIBGDBM
- default m if CONFIG_DEVEL
- help
- A collection of tools for network auditing and penetration testing
-
- http://www.monkey.org/~dugsong/dsniff/
-
diff --git a/openwrt/package/dsniff/Makefile b/openwrt/package/dsniff/Makefile
deleted file mode 100644
index bad122210b..0000000000
--- a/openwrt/package/dsniff/Makefile
+++ /dev/null
@@ -1,76 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=dsniff
-PKG_VERSION:=2.4b1
-PKG_RELEASE:=2
-PKG_MD5SUM:=2f761fa3475682a7512b0b43568ee7d6
-
-PKG_SOURCE_URL:=http://www.monkey.org/~dugsong/dsniff/beta
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-2.4
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,DSNIFF,dsniff,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- --without-db \
- --without-x \
- --with-gdbm="$(STAGING_DIR)/usr" \
- --with-libnids="$(STAGING_DIR)/usr" \
- --with-libpcap="$(STAGING_DIR)/usr" \
- --with-libnet="$(STAGING_DIR)/usr" \
- --with-openssl="$(STAGING_DIR)/usr" \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- install_prefix="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_DSNIFF):
- install -d -m0755 $(IDIR_DSNIFF)/usr/lib
- install -d -m0755 $(IDIR_DSNIFF)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/* $(IDIR_DSNIFF)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(IDIR_DSNIFF)/usr/lib
- $(RSTRIP) $(IDIR_DSNIFF)
- $(IPKG_BUILD) $(IDIR_DSNIFF) $(PACKAGE_DIR)
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/dsniff/ipkg/dsniff.control b/openwrt/package/dsniff/ipkg/dsniff.control
deleted file mode 100644
index 5f1591a1f4..0000000000
--- a/openwrt/package/dsniff/ipkg/dsniff.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: dsniff
-Priority: optional
-Section: admin
-Depends: libnet, libpcap, libnids, libopenssl, libgdbm
-Description: collection of tools for network auditing and penetration testing
diff --git a/openwrt/package/dsniff/patches/arpspoof-fix.patch b/openwrt/package/dsniff/patches/arpspoof-fix.patch
deleted file mode 100644
index fd29227000..0000000000
--- a/openwrt/package/dsniff/patches/arpspoof-fix.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-diff -urN dsniff.old/arp.c dsniff.dev/arp.c
---- dsniff.old/arp.c 2001-03-15 09:32:58.000000000 +0100
-+++ dsniff.dev/arp.c 2006-03-03 01:41:10.000000000 +0100
-@@ -39,7 +39,7 @@
-
- #ifdef BSD
- int
--arp_cache_lookup(in_addr_t ip, struct ether_addr *ether)
-+arp_cache_lookup(in_addr_t ip, struct ether_addr *ether, const char *lif)
- {
- int mib[6];
- size_t len;
-@@ -91,7 +91,7 @@
- #endif
-
- int
--arp_cache_lookup(in_addr_t ip, struct ether_addr *ether)
-+arp_cache_lookup(in_addr_t ip, struct ether_addr *ether, const char *lif)
- {
- int sock;
- struct arpreq ar;
-@@ -99,7 +99,7 @@
-
- memset((char *)&ar, 0, sizeof(ar));
- #ifdef __linux__
-- strncpy(ar.arp_dev, "eth0", sizeof(ar.arp_dev)); /* XXX - *sigh* */
-+ strncpy(ar.arp_dev, lif, strlen(lif));
- #endif
- sin = (struct sockaddr_in *)&ar.arp_pa;
- sin->sin_family = AF_INET;
-diff -urN dsniff.old/arp.h dsniff.dev/arp.h
---- dsniff.old/arp.h 2001-03-15 09:27:08.000000000 +0100
-+++ dsniff.dev/arp.h 2006-03-03 01:42:23.000000000 +0100
-@@ -11,6 +11,6 @@
- #ifndef _ARP_H_
- #define _ARP_H_
-
--int arp_cache_lookup(in_addr_t ip, struct ether_addr *ether);
-+int arp_cache_lookup(in_addr_t ip, struct ether_addr *ether, const char *lif);
-
- #endif /* _ARP_H_ */
-diff -urN dsniff.old/arpspoof.c dsniff.dev/arpspoof.c
---- dsniff.old/arpspoof.c 2001-03-15 09:32:58.000000000 +0100
-+++ dsniff.dev/arpspoof.c 2006-03-03 01:42:00.000000000 +0100
-@@ -113,7 +113,7 @@
- int i = 0;
-
- do {
-- if (arp_cache_lookup(ip, mac) == 0)
-+ if (arp_cache_lookup(ip, mac, intf) == 0)
- return (1);
- #ifdef __linux__
- /* XXX - force the kernel to arp. feh. */
diff --git a/openwrt/package/dsniff/patches/dns.patch b/openwrt/package/dsniff/patches/dns.patch
deleted file mode 100644
index e5cf8b2afa..0000000000
--- a/openwrt/package/dsniff/patches/dns.patch
+++ /dev/null
@@ -1,704 +0,0 @@
-diff -Nur dsniff-2.3/dns.c dsniff-2.3.patched/dns.c
---- dsniff-2.3/dns.c 1970-01-01 01:00:00.000000000 +0100
-+++ dsniff-2.3.patched/dns.c 2005-06-09 14:06:36.000000000 +0200
-@@ -0,0 +1,677 @@
-+/*
-+ * 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.
-+ * 4. Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
-+ */
-+
-+/*
-+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
-+ *
-+ * Permission to use, copy, modify, and distribute this software for any
-+ * purpose with or without fee is hereby granted, provided that the above
-+ * copyright notice and this permission notice appear in all copies, and that
-+ * the name of Digital Equipment Corporation not be used in advertising or
-+ * publicity pertaining to distribution of the document or software without
-+ * specific, written prior permission.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
-+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
-+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, 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.
-+ */
-+
-+/*
-+ * Portions Copyright (c) 1996-1999 by Internet Software Consortium.
-+ *
-+ * Permission to use, copy, modify, and distribute this software for any
-+ * purpose with or without fee is hereby granted, provided that the above
-+ * copyright notice and this permission notice appear in all copies.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
-+ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
-+ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, 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.
-+ */
-+
-+/*
-+ * Copyright (c) 1996,1999 by Internet Software Consortium.
-+ *
-+ * Permission to use, copy, modify, and distribute this software for any
-+ * purpose with or without fee is hereby granted, provided that the above
-+ * copyright notice and this permission notice appear in all copies.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
-+ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
-+ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, 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.
-+ */
-+
-+/*
-+ *
-+ * DNS helper functions not implemented in uclibc
-+ *
-+ */
-+
-+
-+#include <sys/types.h>
-+#include <sys/param.h>
-+#include <netinet/in.h>
-+#include <arpa/nameser.h>
-+#include <ctype.h>
-+#include <resolv.h>
-+#include <stdio.h>
-+#include <string.h>
-+#include <unistd.h>
-+
-+static const char digits[] = "0123456789";
-+
-+/* Forward. */
-+
-+static int special(int);
-+static int printable(int);
-+static int dn_find(const u_char *, const u_char *,
-+ const u_char * const *,
-+ const u_char * const *);
-+
-+
-+/*
-+ * ns_name_ntop(src, dst, dstsiz)
-+ * Convert an encoded domain name to printable ascii as per RFC1035.
-+ * return:
-+ * Number of bytes written to buffer, or -1 (with errno set)
-+ * notes:
-+ * The root is returned as "."
-+ * All other domains are returned in non absolute form
-+ */
-+int
-+ns_name_ntop(const u_char *src, char *dst, size_t dstsiz) {
-+ const u_char *cp;
-+ char *dn, *eom;
-+ u_char c;
-+ u_int n;
-+
-+ cp = src;
-+ dn = dst;
-+ eom = dst + dstsiz;
-+
-+ while ((n = *cp++) != 0) {
-+ if ((n & NS_CMPRSFLGS) != 0) {
-+ /* Some kind of compression pointer. */
-+ return (-1);
-+ }
-+ if (dn != dst) {
-+ if (dn >= eom) {
-+ return (-1);
-+ }
-+ *dn++ = '.';
-+ }
-+ if (dn + n >= eom) {
-+ return (-1);
-+ }
-+ for ((void)NULL; n > 0; n--) {
-+ c = *cp++;
-+ if (special(c)) {
-+ if (dn + 1 >= eom) {
-+ return (-1);
-+ }
-+ *dn++ = '\\';
-+ *dn++ = (char)c;
-+ } else if (!printable(c)) {
-+ if (dn + 3 >= eom) {
-+ return (-1);
-+ }
-+ *dn++ = '\\';
-+ *dn++ = digits[c / 100];
-+ *dn++ = digits[(c % 100) / 10];
-+ *dn++ = digits[c % 10];
-+ } else {
-+ if (dn >= eom) {
-+ return (-1);
-+ }
-+ *dn++ = (char)c;
-+ }
-+ }
-+ }
-+ if (dn == dst) {
-+ if (dn >= eom) {
-+ return (-1);
-+ }
-+ *dn++ = '.';
-+ }
-+ if (dn >= eom) {
-+ return (-1);
-+ }
-+ *dn++ = '\0';
-+ return (dn - dst);
-+}
-+
-+/*
-+ * ns_name_pton(src, dst, dstsiz)
-+ * Convert a ascii string into an encoded domain name as per RFC1035.
-+ * return:
-+ * -1 if it fails
-+ * 1 if string was fully qualified
-+ * 0 is string was not fully qualified
-+ * notes:
-+ * Enforces label and domain length limits.
-+ */
-+
-+int
-+ns_name_pton(const char *src, u_char *dst, size_t dstsiz) {
-+ u_char *label, *bp, *eom;
-+ int c, n, escaped;
-+ char *cp;
-+
-+ escaped = 0;
-+ bp = dst;
-+ eom = dst + dstsiz;
-+ label = bp++;
-+
-+ while ((c = *src++) != 0) {
-+ if (escaped) {
-+ if ((cp = strchr(digits, c)) != NULL) {
-+ n = (cp - digits) * 100;
-+ if ((c = *src++) == 0 ||
-+ (cp = strchr(digits, c)) == NULL) {
-+ return (-1);
-+ }
-+ n += (cp - digits) * 10;
-+ if ((c = *src++) == 0 ||
-+ (cp = strchr(digits, c)) == NULL) {
-+ return (-1);
-+ }
-+ n += (cp - digits);
-+ if (n > 255) {
-+ return (-1);
-+ }
-+ c = n;
-+ }
-+ escaped = 0;
-+ } else if (c == '\\') {
-+ escaped = 1;
-+ continue;
-+ } else if (c == '.') {
-+ c = (bp - label - 1);
-+ if ((c & NS_CMPRSFLGS) != 0) { /* Label too big. */
-+ return (-1);
-+ }
-+ if (label >= eom) {
-+ return (-1);
-+ }
-+ *label = c;
-+ /* Fully qualified ? */
-+ if (*src == '\0') {
-+ if (c != 0) {
-+ if (bp >= eom) {
-+ return (-1);
-+ }
-+ *bp++ = '\0';
-+ }
-+ if ((bp - dst) > MAXCDNAME) {
-+ return (-1);
-+ }
-+ return (1);
-+ }
-+ if (c == 0 || *src == '.') {
-+ return (-1);
-+ }
-+ label = bp++;
-+ continue;
-+ }
-+ if (bp >= eom) {
-+ return (-1);
-+ }
-+ *bp++ = (u_char)c;
-+ }
-+ c = (bp - label - 1);
-+ if ((c & NS_CMPRSFLGS) != 0) { /* Label too big. */
-+ return (-1);
-+ }
-+ if (label >= eom) {
-+ return (-1);
-+ }
-+ *label = c;
-+ if (c != 0) {
-+ if (bp >= eom) {
-+ return (-1);
-+ }
-+ *bp++ = 0;
-+ }
-+ if ((bp - dst) > MAXCDNAME) { /* src too big */
-+ return (-1);
-+ }
-+ return (0);
-+}
-+
-+/*
-+ * ns_name_ntol(src, dst, dstsiz)
-+ * Convert a network strings labels into all lowercase.
-+ * return:
-+ * Number of bytes written to buffer, or -1 (with errno set)
-+ * notes:
-+ * Enforces label and domain length limits.
-+ */
-+
-+int
-+ns_name_ntol(const u_char *src, u_char *dst, size_t dstsiz) {
-+ const u_char *cp;
-+ u_char *dn, *eom;
-+ u_char c;
-+ u_int n;
-+
-+ cp = src;
-+ dn = dst;
-+ eom = dst + dstsiz;
-+
-+ while ((n = *cp++) != 0) {
-+ if ((n & NS_CMPRSFLGS) != 0) {
-+ /* Some kind of compression pointer. */
-+ return (-1);
-+ }
-+ *dn++ = n;
-+ if (dn + n >= eom) {
-+ return (-1);
-+ }
-+ for ((void)NULL; n > 0; n--) {
-+ c = *cp++;
-+ if (isupper(c))
-+ *dn++ = tolower(c);
-+ else
-+ *dn++ = c;
-+ }
-+ }
-+ *dn++ = '\0';
-+ return (dn - dst);
-+}
-+
-+/*
-+ * ns_name_unpack(msg, eom, src, dst, dstsiz)
-+ * Unpack a domain name from a message, source may be compressed.
-+ * return:
-+ * -1 if it fails, or consumed octets if it succeeds.
-+ */
-+int
-+ns_name_unpack(const u_char *msg, const u_char *eom, const u_char *src,
-+ u_char *dst, size_t dstsiz)
-+{
-+ const u_char *srcp, *dstlim;
-+ u_char *dstp;
-+ int n, len, checked;
-+
-+ len = -1;
-+ checked = 0;
-+ dstp = dst;
-+ srcp = src;
-+ dstlim = dst + dstsiz;
-+ if (srcp < msg || srcp >= eom) {
-+ return (-1);
-+ }
-+ /* Fetch next label in domain name. */
-+ while ((n = *srcp++) != 0) {
-+ /* Check for indirection. */
-+ switch (n & NS_CMPRSFLGS) {
-+ case 0:
-+ /* Limit checks. */
-+ if (dstp + n + 1 >= dstlim || srcp + n >= eom) {
-+ return (-1);
-+ }
-+ checked += n + 1;
-+ *dstp++ = n;
-+ memcpy(dstp, srcp, n);
-+ dstp += n;
-+ srcp += n;
-+ break;
-+
-+ case NS_CMPRSFLGS:
-+ if (srcp >= eom) {
-+ return (-1);
-+ }
-+ if (len < 0)
-+ len = srcp - src + 1;
-+ srcp = msg + (((n & 0x3f) << 8) | (*srcp & 0xff));
-+ if (srcp < msg || srcp >= eom) { /* Out of range. */
-+ return (-1);
-+ }
-+ checked += 2;
-+ /*
-+ * Check for loops in the compressed name;
-+ * if we've looked at the whole message,
-+ * there must be a loop.
-+ */
-+ if (checked >= eom - msg) {
-+ return (-1);
-+ }
-+ break;
-+
-+ default:
-+ return (-1); /* flag error */
-+ }
-+ }
-+ *dstp = '\0';
-+ if (len < 0)
-+ len = srcp - src;
-+ return (len);
-+}
-+
-+/*
-+ * ns_name_pack(src, dst, dstsiz, dnptrs, lastdnptr)
-+ * Pack domain name 'domain' into 'comp_dn'.
-+ * return:
-+ * Size of the compressed name, or -1.
-+ * notes:
-+ * 'dnptrs' is an array of pointers to previous compressed names.
-+ * dnptrs[0] is a pointer to the beginning of the message. The array
-+ * ends with NULL.
-+ * 'lastdnptr' is a pointer to the end of the array pointed to
-+ * by 'dnptrs'.
-+ * Side effects:
-+ * The list of pointers in dnptrs is updated for labels inserted into
-+ * the message as we compress the name. If 'dnptr' is NULL, we don't
-+ * try to compress names. If 'lastdnptr' is NULL, we don't update the
-+ * list.
-+ */
-+int
-+ns_name_pack(const u_char *src, u_char *dst, int dstsiz,
-+ const u_char **dnptrs, const u_char **lastdnptr)
-+{
-+ u_char *dstp;
-+ const u_char **cpp, **lpp, *eob, *msg;
-+ const u_char *srcp;
-+ int n, l, first = 1;
-+
-+ srcp = src;
-+ dstp = dst;
-+ eob = dstp + dstsiz;
-+ lpp = cpp = NULL;
-+ if (dnptrs != NULL) {
-+ if ((msg = *dnptrs++) != NULL) {
-+ for (cpp = dnptrs; *cpp != NULL; cpp++)
-+ (void)NULL;
-+ lpp = cpp; /* end of list to search */
-+ }
-+ } else
-+ msg = NULL;
-+
-+ /* make sure the domain we are about to add is legal */
-+ l = 0;
-+ do {
-+ n = *srcp;
-+ if ((n & NS_CMPRSFLGS) != 0) {
-+ return (-1);
-+ }
-+ l += n + 1;
-+ if (l > MAXCDNAME) {
-+ return (-1);
-+ }
-+ srcp += n + 1;
-+ } while (n != 0);
-+
-+ /* from here on we need to reset compression pointer array on error */
-+ srcp = src;
-+ do {
-+ /* Look to see if we can use pointers. */
-+ n = *srcp;
-+ if (n != 0 && msg != NULL) {
-+ l = dn_find(srcp, msg, (const u_char * const *)dnptrs,
-+ (const u_char * const *)lpp);
-+ if (l >= 0) {
-+ if (dstp + 1 >= eob) {
-+ goto cleanup;
-+ }
-+ *dstp++ = (l >> 8) | NS_CMPRSFLGS;
-+ *dstp++ = l % 256;
-+ return (dstp - dst);
-+ }
-+ /* Not found, save it. */
-+ if (lastdnptr != NULL && cpp < lastdnptr - 1 &&
-+ (dstp - msg) < 0x4000 && first) {
-+ *cpp++ = dstp;
-+ *cpp = NULL;
-+ first = 0;
-+ }
-+ }
-+ /* copy label to buffer */
-+ if (n & NS_CMPRSFLGS) { /* Should not happen. */
-+ goto cleanup;
-+ }
-+ if (dstp + 1 + n >= eob) {
-+ goto cleanup;
-+ }
-+ memcpy(dstp, srcp, n + 1);
-+ srcp += n + 1;
-+ dstp += n + 1;
-+ } while (n != 0);
-+
-+ if (dstp > eob) {
-+cleanup:
-+ if (msg != NULL)
-+ *lpp = NULL;
-+ return (-1);
-+ }
-+ return (dstp - dst);
-+}
-+
-+/*
-+ * ns_name_uncompress(msg, eom, src, dst, dstsiz)
-+ * Expand compressed domain name to presentation format.
-+ * return:
-+ * Number of bytes read out of `src', or -1 (with errno set).
-+ * note:
-+ * Root domain returns as "." not "".
-+ */
-+int
-+ns_name_uncompress(const u_char *msg, const u_char *eom, const u_char *src,
-+ char *dst, size_t dstsiz)
-+{
-+ u_char tmp[NS_MAXCDNAME];
-+ int n;
-+
-+ if ((n = ns_name_unpack(msg, eom, src, tmp, sizeof tmp)) == -1)
-+ return (-1);
-+ if (ns_name_ntop(tmp, dst, dstsiz) == -1)
-+ return (-1);
-+ return (n);
-+}
-+
-+/*
-+ * ns_name_compress(src, dst, dstsiz, dnptrs, lastdnptr)
-+ * Compress a domain name into wire format, using compression pointers.
-+ * return:
-+ * Number of bytes consumed in `dst' or -1 (with errno set).
-+ * notes:
-+ * 'dnptrs' is an array of pointers to previous compressed names.
-+ * dnptrs[0] is a pointer to the beginning of the message.
-+ * The list ends with NULL. 'lastdnptr' is a pointer to the end of the
-+ * array pointed to by 'dnptrs'. Side effect is to update the list of
-+ * pointers for labels inserted into the message as we compress the name.
-+ * If 'dnptr' is NULL, we don't try to compress names. If 'lastdnptr'
-+ * is NULL, we don't update the list.
-+ */
-+int
-+ns_name_compress(const char *src, u_char *dst, size_t dstsiz,
-+ const u_char **dnptrs, const u_char **lastdnptr)
-+{
-+ u_char tmp[NS_MAXCDNAME];
-+
-+ if (ns_name_pton(src, tmp, sizeof tmp) == -1)
-+ return (-1);
-+ return (ns_name_pack(tmp, dst, dstsiz, dnptrs, lastdnptr));
-+}
-+
-+/*
-+ * special(ch)
-+ * Thinking in noninternationalized USASCII (per the DNS spec),
-+ * is this characted special ("in need of quoting") ?
-+ * return:
-+ * boolean.
-+ */
-+static int
-+special(int ch) {
-+ switch (ch) {
-+ case 0x22: /* '"' */
-+ case 0x2E: /* '.' */
-+ case 0x3B: /* ';' */
-+ case 0x5C: /* '\\' */
-+ /* Special modifiers in zone files. */
-+ case 0x40: /* '@' */
-+ case 0x24: /* '$' */
-+ return (1);
-+ default:
-+ return (0);
-+ }
-+}
-+
-+/*
-+ * printable(ch)
-+ * Thinking in noninternationalized USASCII (per the DNS spec),
-+ * is this character visible and not a space when printed ?
-+ * return:
-+ * boolean.
-+ */
-+static int
-+printable(int ch) {
-+ return (ch > 0x20 && ch < 0x7f);
-+}
-+
-+/*
-+ * Thinking in noninternationalized USASCII (per the DNS spec),
-+ * convert this character to lower case if it's upper case.
-+ */
-+static int
-+mklower(int ch) {
-+ if (ch >= 0x41 && ch <= 0x5A)
-+ return (ch + 0x20);
-+ return (ch);
-+}
-+
-+/*
-+ * dn_find(domain, msg, dnptrs, lastdnptr)
-+ * Search for the counted-label name in an array of compressed names.
-+ * return:
-+ * offset from msg if found, or -1.
-+ * notes:
-+ * dnptrs is the pointer to the first name on the list,
-+ * not the pointer to the start of the message.
-+ */
-+static int
-+dn_find(const u_char *domain, const u_char *msg,
-+ const u_char * const *dnptrs,
-+ const u_char * const *lastdnptr)
-+{
-+ const u_char *dn, *cp, *sp;
-+ const u_char * const *cpp;
-+ u_int n;
-+
-+ for (cpp = dnptrs; cpp < lastdnptr; cpp++) {
-+ sp = *cpp;
-+ /*
-+ * terminate search on:
-+ * root label
-+ * compression pointer
-+ * unusable offset
-+ */
-+ while (*sp != 0 && (*sp & NS_CMPRSFLGS) == 0 &&
-+ (sp - msg) < 0x4000) {
-+ dn = domain;
-+ cp = sp;
-+ while ((n = *cp++) != 0) {
-+ /*
-+ * check for indirection
-+ */
-+ switch (n & NS_CMPRSFLGS) {
-+ case 0: /* normal case, n == len */
-+ if (n != *dn++)
-+ goto next;
-+ for ((void)NULL; n > 0; n--)
-+ if (mklower(*dn++) !=
-+ mklower(*cp++))
-+ goto next;
-+ /* Is next root for both ? */
-+ if (*dn == '\0' && *cp == '\0')
-+ return (sp - msg);
-+ if (*dn)
-+ continue;
-+ goto next;
-+
-+ case NS_CMPRSFLGS: /* indirection */
-+ cp = msg + (((n & 0x3f) << 8) | *cp);
-+ break;
-+
-+ default: /* illegal type */
-+ return (-1);
-+ }
-+ }
-+ next:
-+ sp += *sp + 1;
-+ }
-+ }
-+ return (-1);
-+}
-+
-+/*
-+ * Expand compressed domain name 'comp_dn' to full domain name.
-+ * 'msg' is a pointer to the begining of the message,
-+ * 'eomorig' points to the first location after the message,
-+ * 'exp_dn' is a pointer to a buffer of size 'length' for the result.
-+ * Return size of compressed name or -1 if there was an error.
-+ */
-+int
-+dn_expand(const u_char *msg, const u_char *eom, const u_char *src,
-+ char *dst, int dstsiz)
-+{
-+ int n = ns_name_uncompress(msg, eom, src, dst, (size_t)dstsiz);
-+
-+ if (n > 0 && dst[0] == '.')
-+ dst[0] = '\0';
-+ return (n);
-+}
-+
-+/*
-+ * Pack domain name 'exp_dn' in presentation form into 'comp_dn'.
-+ * Return the size of the compressed name or -1.
-+ * 'length' is the size of the array pointed to by 'comp_dn'.
-+ */
-+int
-+dn_comp(const char *src, u_char *dst, int dstsiz,
-+ u_char **dnptrs, u_char **lastdnptr)
-+{
-+ return (ns_name_compress(src, dst, (size_t)dstsiz,
-+ (const u_char **)dnptrs,
-+ (const u_char **)lastdnptr));
-+}
-+
-diff -Nur dsniff-2.3/Makefile.in dsniff-2.3.patched/Makefile.in
---- dsniff-2.3/Makefile.in 2000-12-15 21:03:26.000000000 +0100
-+++ dsniff-2.3.patched/Makefile.in 2005-06-09 14:03:18.000000000 +0200
-@@ -51,7 +51,7 @@
- pathnames.h pcaputil.h record.h rpc.h tcp_raw.h trigger.h \
- version.h vroot.h
-
--SRCS = asn1.c base64.c buf.c hex.c magic.c mount.c pcaputil.c rpc.c \
-+SRCS = asn1.c base64.c buf.c dns.c hex.c magic.c mount.c pcaputil.c rpc.c \
- tcp_raw.c trigger.c record.c dsniff.c decode.c decode_aim.c \
- decode_citrix.c decode_cvs.c decode_ftp.c decode_hex.c \
- decode_http.c decode_icq.c decode_imap.c decode_irc.c \
-@@ -99,8 +99,8 @@
- arpspoof: arpspoof.o arp.o
- $(CC) $(LDFLAGS) -o $@ arpspoof.o arp.o $(LIBS) $(PCAPLIB) $(LNETLIB)
-
--dnsspoof: dnsspoof.o pcaputil.o
-- $(CC) $(LDFLAGS) -o $@ dnsspoof.o pcaputil.o $(LIBS) $(PCAPLIB) $(LNETLIB)
-+dnsspoof: dnsspoof.o pcaputil.o dns.o
-+ $(CC) $(LDFLAGS) -o $@ dnsspoof.o pcaputil.o dns.o $(LIBS) $(PCAPLIB) $(LNETLIB)
-
- filesnarf: nfs_prot.o filesnarf.o pcaputil.o rpc.o
- $(CC) $(LDFLAGS) -o $@ filesnarf.o nfs_prot.o pcaputil.o rpc.o $(LIBS) $(NIDSLIB) $(PCAPLIB) $(LNETLIB)
diff --git a/openwrt/package/dsniff/patches/gdbm.patch b/openwrt/package/dsniff/patches/gdbm.patch
deleted file mode 100644
index 30190abc9e..0000000000
--- a/openwrt/package/dsniff/patches/gdbm.patch
+++ /dev/null
@@ -1,204 +0,0 @@
-diff -Nur dsniff-2.3/configure dsniff-2.3.patched/configure
---- dsniff-2.3/configure 2005-06-11 18:13:59.000000000 +0200
-+++ dsniff-2.3.patched/configure 2005-06-11 18:14:37.000000000 +0200
-@@ -16,6 +16,8 @@
- ac_help="$ac_help
- --with-db=DIR use Berkeley DB (with --enable-compat185) in DIR"
- ac_help="$ac_help
-+ --with-gdbm=DIR use GNU DBM in DIR"
-+ac_help="$ac_help
- --with-libpcap=DIR use libpcap in DIR"
- ac_help="$ac_help
- --with-libnet=DIR use libnet in DIR"
-@@ -3051,7 +3053,40 @@
-
- fi
-
-+echo $ac_n "checking for libgdbm""... $ac_c" 1>&6
-+echo "configure:3059: checking for libgdbm" >&5
-+# Check whether --with-gdbm or --without-gdbm was given.
-+if test "${with_gdbm+set}" = set; then
-+ withval="$with_gdbm"
-+ case "$withval" in
-+ yes|no)
-+ echo "$ac_t""no" 1>&6
-+ ;;
-+ *)
-+ echo "$ac_t""$withval" 1>&6
-+ if test -f $withval/include/gdbm.h -a -f $withval/lib/libgdbm.a; then
-+ owd=`pwd`
-+ if cd $withval; then withval=`pwd`; cd $owd; fi
-+ DBINC="-I$withval/include"
-+ DBLIB="-L$withval/lib -lgdbm"
-+ else
-+ { echo "configure: error: gdbm.h or libgdbm.a not found in $withval" 1>&2; exit 1; }
-+ fi
-+ ;;
-+ esac
-+else
-+ if test -f ${prefix}/include/gdbm.h; then
-+ LNETINC="-I${prefix}/include"
-+ LNETLIB="-L${prefix}/lib -lgdbm"
-+ elif test -f /usr/include/gdbm.h; then
-+ LNETLIB="-lgdbm"
-+ else
-+ echo "$ac_t""no" 1>&6
-+ { echo "configure: error: libgdbm not found" 1>&2; exit 1; }
-+ fi
-+ echo "$ac_t""yes" 1>&6
-
-+fi
-
-
- echo $ac_n "checking for libnet""... $ac_c" 1>&6
-diff -Nur dsniff-2.3/record.c dsniff-2.3.patched/record.c
---- dsniff-2.3/record.c 2000-11-14 16:51:02.000000000 +0100
-+++ dsniff-2.3.patched/record.c 2005-06-11 18:14:56.000000000 +0200
-@@ -13,12 +13,7 @@
- #include <stdio.h>
- #include <time.h>
- #include <md5.h>
--#ifdef HAVE_DB_185_H
--#define DB_LIBRARY_COMPATIBILITY_API
--#include <db_185.h>
--#elif HAVE_DB_H
--#include <db.h>
--#endif
-+#include <gdbm.h>
- #include <libnet.h>
- #include "options.h"
- #include "record.h"
-@@ -34,7 +29,7 @@
- struct netobj data;
- };
-
--static DB *db;
-+GDBM_FILE dbf;
-
- static int
- xdr_rec(XDR *xdrs, struct rec *rec)
-@@ -61,7 +56,6 @@
-
- tm = localtime(&rec->time);
- strftime(tstr, sizeof(tstr), "%x %X", tm);
--
- srcp = libnet_host_lookup(rec->src, Opt_dns);
- dstp = libnet_host_lookup(rec->dst, Opt_dns);
-
-@@ -86,10 +80,10 @@
- fflush(stdout);
- }
-
--static DBT *
-+static datum
- record_hash(struct rec *rec)
- {
-- static DBT key;
-+ static datum key;
- static u_char hash[16];
- MD5_CTX ctx;
-
-@@ -102,16 +96,16 @@
- MD5Update(&ctx, rec->data.n_bytes, rec->data.n_len);
- MD5Final(hash, &ctx);
-
-- key.data = hash;
-- key.size = sizeof(hash);
-+ key.dptr = hash;
-+ key.dsize = sizeof(hash);
-
-- return (&key);
-+ return (key);
- }
-
- static int
- record_save(struct rec *rec)
- {
-- DBT *key, data;
-+ datum key, data;
- XDR xdrs;
- u_char buf[2048];
-
-@@ -120,15 +114,15 @@
- if (!xdr_rec(&xdrs, rec))
- return (0);
-
-- data.data = buf;
-- data.size = xdr_getpos(&xdrs);
-+ data.dptr = buf;
-+ data.dsize = xdr_getpos(&xdrs);
-
- xdr_destroy(&xdrs);
-
- key = record_hash(rec);
-
-- if (db->put(db, key, &data, R_NOOVERWRITE) == 0)
-- db->sync(db, 0);
-+ if (gdbm_store(dbf, key, data, GDBM_INSERT) == 0)
-+ gdbm_sync(dbf);
-
- return (1);
- }
-@@ -136,18 +130,22 @@
- void
- record_dump(void)
- {
-- DBT key, data;
-+ datum nextkey, key, content;
- XDR xdrs;
- struct rec rec;
-
-- while (db->seq(db, &key, &data, R_NEXT) == 0) {
-+ key = gdbm_firstkey(dbf);
-+ while (key.dptr) {
-+ nextkey = gdbm_nextkey(dbf, key);
-+ content = gdbm_fetch(dbf, key);
- memset(&rec, 0, sizeof(rec));
-- xdrmem_create(&xdrs, data.data, data.size, XDR_DECODE);
--
-+ xdrmem_create(&xdrs, content.dptr, content.dsize, XDR_DECODE);
- if (xdr_rec(&xdrs, &rec)) {
- record_print(&rec);
- }
- xdr_destroy(&xdrs);
-+ free(key.dptr);
-+ key = nextkey;
- }
- }
-
-@@ -155,16 +153,23 @@
- record_init(char *file)
- {
- int flags, mode;
--
-+ // needed for gdbm_open, which does not have the option to create
-+ // a database in memory
-+ if(file == NULL) {
-+ char *record_file = "/tmp/.dsniff.db";
-+ file = record_file;
-+ }
-+
- if (Opt_read) {
-- flags = O_RDONLY;
-+ flags = GDBM_READER;
- mode = 0;
- }
- else {
-- flags = O_RDWR|O_CREAT;
-+ flags = GDBM_WRCREAT;
- mode = S_IRUSR|S_IWUSR;
- }
-- if ((db = dbopen(file, flags, mode, DB_BTREE, NULL)) == NULL)
-+
-+ if ((dbf = gdbm_open(file, 1024, flags, mode, NULL)) == NULL)
- return (0);
-
- return (1);
-@@ -203,6 +208,6 @@
- void
- record_close(void)
- {
-- db->close(db);
-+ gdbm_close(dbf);
- }
-
diff --git a/openwrt/package/dsniff/patches/noyp.patch b/openwrt/package/dsniff/patches/noyp.patch
deleted file mode 100644
index 48393e20a2..0000000000
--- a/openwrt/package/dsniff/patches/noyp.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -Nur dsniff-2.3/decode.c dsniff-2.3.patched/decode.c
---- dsniff-2.3/decode.c 2000-12-15 21:03:26.000000000 +0100
-+++ dsniff-2.3.patched/decode.c 2005-06-11 18:17:48.000000000 +0200
-@@ -49,8 +49,6 @@
- extern int decode_portmap(u_char *, int, u_char *, int);
- extern int decode_mountd(u_char *, int, u_char *, int);
- extern int decode_vrrp(u_char *, int, u_char *, int);
--extern int decode_ypserv(u_char *, int, u_char *, int);
--extern int decode_yppasswd(u_char *, int, u_char *, int);
-
- static struct decode decodes[] = {
- { "hex", decode_hex },
-@@ -86,8 +84,6 @@
- { "irc", decode_irc },
- { "portmap", decode_portmap },
- { "mountd", decode_mountd },
-- { "ypserv", decode_ypserv },
-- { "yppasswd", decode_yppasswd },
- { NULL }
- };
-
-diff -Nur dsniff-2.3/dsniff.services dsniff-2.3.patched/dsniff.services
---- dsniff-2.3/dsniff.services 2000-12-15 21:10:58.000000000 +0100
-+++ dsniff-2.3.patched/dsniff.services 2005-06-11 18:19:27.000000000 +0200
-@@ -66,5 +66,3 @@
- aim 9898/tcp
- pcanywhere 65301/tcp
- mountd 100005/rpc
--ypserv 100004/rpc
--yppasswd 100009/rpc
-diff -Nur dsniff-2.3/Makefile.in dsniff-2.3.patched/Makefile.in
---- dsniff-2.3/Makefile.in 2005-06-11 18:17:20.000000000 +0200
-+++ dsniff-2.3.patched/Makefile.in 2005-06-11 18:17:48.000000000 +0200
-@@ -60,7 +60,7 @@
- decode_pop.c decode_portmap.c decode_postgresql.c decode_pptp.c \
- decode_rip.c decode_rlogin.c decode_smb.c decode_smtp.c \
- decode_sniffer.c decode_snmp.c decode_socks.c decode_tds.c \
-- decode_telnet.c decode_vrrp.c decode_yp.c decode_x11.c
-+ decode_telnet.c decode_vrrp.c decode_x11.c
-
- GEN = mount.h mount.c nfs_prot.h nfs_prot.c
-
diff --git a/openwrt/package/dsniff/patches/openssl-fix.patch b/openwrt/package/dsniff/patches/openssl-fix.patch
deleted file mode 100644
index 1b2f9e7bed..0000000000
--- a/openwrt/package/dsniff/patches/openssl-fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- dsniff-2.4b1.orig/sshcrypto.c
-+++ dsniff-2.4b1/sshcrypto.c
-@@ -14,6 +14,8 @@
-
- #include <sys/types.h>
- #include <openssl/ssl.h>
-+#include <openssl/blowfish.h>
-+#include <openssl/des.h>
-
- #include <err.h>
- #include <stdio.h>
diff --git a/openwrt/package/dsniff/patches/pcap-header.patch b/openwrt/package/dsniff/patches/pcap-header.patch
deleted file mode 100644
index 6be3bf2d66..0000000000
--- a/openwrt/package/dsniff/patches/pcap-header.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur dsniff-2.3/configure dsniff-2.3.patched/configure
---- dsniff-2.3/configure 2000-12-03 05:35:46.000000000 +0100
-+++ dsniff-2.3.patched/configure 2005-06-09 11:44:33.000000000 +0200
-@@ -3023,7 +3023,7 @@
- PCAPINC="-I$withval -I$withval/bpf"
- PCAPLIB="-L$withval -lpcap"
- elif test -f $withval/include/pcap.h -a \
-- -f $withval/include/net/bpf.h -a \
-+ -f $withval/include/pcap-bpf.h -a \
- -f $withval/lib/libpcap.a; then
- owd=`pwd`
- if cd $withval; then withval=`pwd`; cd $owd; fi
diff --git a/openwrt/package/dsniff/patches/time_h.patch b/openwrt/package/dsniff/patches/time_h.patch
deleted file mode 100644
index 280b8c1e89..0000000000
--- a/openwrt/package/dsniff/patches/time_h.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -urNad --exclude=CVS --exclude=.svn dsniff-2.4b1/msgsnarf.c dsniff-2.4b1/msgsnarf.c
---- dsniff-2.4b1/msgsnarf.c 2001-03-15 08:33:04.000000000 +0000
-+++ dsniff-2.4b1/msgsnarf.c 2005-07-11 20:15:50.000000000 +0000
-@@ -23,6 +23,7 @@
- #include <nids.h>
- #include <pcap.h>
- #include <pcaputil.h>
-+#include <time.h>
-
- #include "buf.h"
- #include "decode.h"
-diff -urNad --exclude=CVS --exclude=.svn dsniff-2.4b1/sshow.c dsniff-2.4b1/sshow.c
---- dsniff-2.4b1/sshow.c 2005-07-11 20:14:19.000000000 +0000
-+++ dsniff-2.4b1/sshow.c 2005-07-11 20:15:26.000000000 +0000
-@@ -15,6 +15,7 @@
-
- #include <sys/types.h>
- #include <sys/times.h>
-+#include <time.h>
-
- #include <netinet/in_systm.h>
- #include <netinet/in.h>
diff --git a/openwrt/package/e2fsprogs/Config.in b/openwrt/package/e2fsprogs/Config.in
deleted file mode 100644
index 3f8b3da8d6..0000000000
--- a/openwrt/package/e2fsprogs/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_E2FSPROGS
- prompt "e2fsprogs......................... Ext2/3 filesystem utilities"
- tristate
- default m if CONFIG_DEVEL
- help
- This package contains essential ext2 filesystem utilities which consists of
- e2fsck, mke2fs, debugfs, dumpe2fs, tune2fs, and most of the other core ext2
- filesystem utilities.
-
- http://e2fsprogs.sourceforge.net/
-
diff --git a/openwrt/package/e2fsprogs/Makefile b/openwrt/package/e2fsprogs/Makefile
deleted file mode 100644
index b4393e2ebb..0000000000
--- a/openwrt/package/e2fsprogs/Makefile
+++ /dev/null
@@ -1,79 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=e2fsprogs
-PKG_VERSION:=1.38
-PKG_RELEASE:=1
-PKG_MD5SUM:=d774d4412bfb80d12cf3a4fdfd59de5a
-
-PKG_SOURCE_URL:=@SF/e2fsprogs
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,E2FSPROGS,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- --enable-elf-shlibs \
- --enable-dynamic-e2fsck \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR)/util \
- BUILDCC="$(HOSTCC)" \
- CFLAGS="" \
- subst
- $(MAKE) -C $(PKG_BUILD_DIR) \
- BUILDCC="$(HOSTCC)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
- touch $@
-
-$(IPKG_E2FSPROGS):
- mkdir -p $(IDIR_E2FSPROGS)/sbin
- $(CP) $(PKG_INSTALL_DIR)/sbin/e2fsck $(IDIR_E2FSPROGS)/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/mke2fs $(IDIR_E2FSPROGS)/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/mkfs.ext{2,3} $(IDIR_E2FSPROGS)/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/tune2fs $(IDIR_E2FSPROGS)/sbin/
- mkdir -p $(IDIR_E2FSPROGS)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{blkid,com_err,e2p,ext2fs,uuid}.so.* $(IDIR_E2FSPROGS)/usr/lib/
- $(RSTRIP) $(IDIR_E2FSPROGS)
- $(IPKG_BUILD) $(IDIR_E2FSPROGS) $(PACKAGE_DIR)
diff --git a/openwrt/package/e2fsprogs/ipkg/e2fsprogs.control b/openwrt/package/e2fsprogs/ipkg/e2fsprogs.control
deleted file mode 100644
index 73e023d456..0000000000
--- a/openwrt/package/e2fsprogs/ipkg/e2fsprogs.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: e2fsprogs
-Priority: optional
-Section: admin
-Description: Ext2/3 filesystem utilities
diff --git a/openwrt/package/ebtables/Config.in b/openwrt/package/ebtables/Config.in
deleted file mode 100644
index e8fb884f75..0000000000
--- a/openwrt/package/ebtables/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_EBTABLES
- prompt "ebtables.......................... Ethernet bridge firewall administration utility"
- tristate
- default m if CONFIG_DEVEL
- help
- Ethernet Bridge Firewalling (ebtables)
-
- http://ebtables.sourceforge.net/
-
diff --git a/openwrt/package/ebtables/Makefile b/openwrt/package/ebtables/Makefile
deleted file mode 100644
index dae932ea84..0000000000
--- a/openwrt/package/ebtables/Makefile
+++ /dev/null
@@ -1,41 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ebtables
-PKG_VERSION:=2.0.8-rc2
-PKG_RELEASE:=1
-PKG_MD5SUM:=f07111fcc1966be669278433c35dcc28
-
-PKG_SOURCE_URL:=@SF/ebtables
-PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/ebtables-v$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,EBTABLES,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld \
- CFLAGS="$(TARGET_CFLAGS) -Wall"
- touch $@
-
-$(IPKG_EBTABLES):
- install -d -m0755 $(IDIR_EBTABLES)/etc
- install -m0644 $(PKG_BUILD_DIR)/ethertypes $(IDIR_EBTABLES)/etc/
- install -d -m0755 $(IDIR_EBTABLES)/usr/lib
- install -m0755 $(PKG_BUILD_DIR)/lib*.so $(IDIR_EBTABLES)/usr/lib/
- install -d -m0755 $(IDIR_EBTABLES)/usr/lib/ebtables
- install -m0755 $(PKG_BUILD_DIR)/extensions/*.so $(IDIR_EBTABLES)/usr/lib/ebtables/
- install -d -m0755 $(IDIR_EBTABLES)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/ebtables $(IDIR_EBTABLES)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/ebtables-save $(IDIR_EBTABLES)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/ebtables-restore $(IDIR_EBTABLES)/usr/sbin/
- $(RSTRIP) $(IDIR_EBTABLES)
- $(IPKG_BUILD) $(IDIR_EBTABLES) $(PACKAGE_DIR)
diff --git a/openwrt/package/ebtables/ipkg/ebtables.control b/openwrt/package/ebtables/ipkg/ebtables.control
deleted file mode 100644
index 5dc6a14175..0000000000
--- a/openwrt/package/ebtables/ipkg/ebtables.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ebtables
-Priority: optional
-Section: net
-Description: Ethernet bridge firewalling software
-Depends: kmod-ebtables
diff --git a/openwrt/package/elhttp/Config.in b/openwrt/package/elhttp/Config.in
deleted file mode 100644
index 979a2679cb..0000000000
--- a/openwrt/package/elhttp/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_ELHTTP
- prompt "elhttp............................ The extra-light http proxy server."
- tristate
- default m if CONFIG_DEVEL
- help
- The extra-light http proxy server. Features: keep-alive
- connections, http connect method, SSL/TLS support, ACLs
- and client requests logging.
diff --git a/openwrt/package/elhttp/Makefile b/openwrt/package/elhttp/Makefile
deleted file mode 100644
index 175f1dbea7..0000000000
--- a/openwrt/package/elhttp/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=elhttp
-PKG_VERSION:=0.22
-PKG_RELEASE:=1
-PKG_MD5SUM:=b52f68c47f709e9fc9429250eb8f954c
-
-PKG_SOURCE_URL:=http://phadej.daug.net/files/ \
- http://www.cr0.net:8040/code/network/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,ELHTTP,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- mkdir -p $(PKG_INSTALL_DIR)/usr/sbin
- $(MAKE) CC=$(TARGET_CC) CROSS=$(TARGET_CROSS) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- $(RSTRIP) $(PKG_INSTALL_DIR)/usr/sbin/
- touch $@
-
-$(IPKG_ELHTTP):
- mkdir -p $(IDIR_ELHTTP)
- $(CP) $(PKG_INSTALL_DIR)/* $(IDIR_ELHTTP)/
- $(RSTRIP) $(IDIR_ELHTTP)/
- $(IPKG_BUILD) $(IDIR_ELHTTP) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/elhttp/ipkg/elhttp.control b/openwrt/package/elhttp/ipkg/elhttp.control
deleted file mode 100644
index 4492e43f1c..0000000000
--- a/openwrt/package/elhttp/ipkg/elhttp.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: elhttp
-Priority: optional
-Section: net
-Description: The extra-light http proxy server.
diff --git a/openwrt/package/elhttp/patches/01-cross-compile.patch b/openwrt/package/elhttp/patches/01-cross-compile.patch
deleted file mode 100644
index f1aba594d3..0000000000
--- a/openwrt/package/elhttp/patches/01-cross-compile.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- elhttp-0.22.orig/Makefile 2004-06-18 15:32:17.000000000 +0200
-+++ elhttp-0.22/Makefile 2006-02-13 23:11:35.000000000 +0100
-@@ -1,13 +1,7 @@
--
-+all: linux
- linux:
-- gcc -O -W -Wall -o elhttp elhttp.c
-- strip elhttp
--
--sunos:
-- gcc -O -W -Wall -o elhttp elhttp.c -lsocket -lnsl
-- strip elhttp
--
--unix:
-- cc -O -o elhttp elhttp.c
-- strip elhttp
-+ $(CC) -O -W -Wall -o elhttp elhttp.c
-
-+install:
-+ install -d -m0755 $(DESTDIR)/usr/sbin
-+ install -m0755 elhttp $(DESTDIR)/usr/sbin/
diff --git a/openwrt/package/elinks/Config.in b/openwrt/package/elinks/Config.in
deleted file mode 100644
index ed244dee28..0000000000
--- a/openwrt/package/elinks/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_ELINKS
- prompt "elinks............................ A text based web browser"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBOPENSSL
- help
- An advanced text based web browser
-
- http://elinks.or.cz/
-
diff --git a/openwrt/package/elinks/Makefile b/openwrt/package/elinks/Makefile
deleted file mode 100644
index f1385fc437..0000000000
--- a/openwrt/package/elinks/Makefile
+++ /dev/null
@@ -1,82 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=elinks
-PKG_VERSION:=0.11.1
-PKG_RELEASE:=2
-PKG_MD5SUM:=c09d726075e4b5810fa07f8654088755
-
-PKG_SOURCE_URL:=http://elinks.or.cz/download/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,ELINKS,elinks,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- x=`echo ac_cv_file_./features.conf | tr [:blank:]-/. _` && export $${x}=yes && \
- x=`echo ac_cv_file_$(PKG_BUILD_DIR)/features.conf | tr [:blank:]-/. _` && export $${x}=yes && \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-small\
- --enable-256-colors\
- --disable-backtrace\
- --disable-data\
- --disable-formhist\
- --disable-leds \
- --disable-mailcap\
- --disable-mouse \
- --disable-smb \
- --disable-uri-rewrite\
- --disable-xbel \
- --without-bzlib \
- --without-gpm \
- --without-idn \
- --without-gnutls \
- --without-libiconv \
- --without-lua \
- --with-openssl="$(STAGING_DIR)/usr" \
- --without-spidermonkey\
- --without-x\
- --without-zlib \
- --disable-ipv6 \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- $(MAKE) -C $(PKG_BUILD_DIR)\
- CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld
- touch $@
-
-$(IPKG_ELINKS):
- mkdir -p $(IDIR_ELINKS)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/src/elinks $(IDIR_ELINKS)/usr/bin/
- $(RSTRIP) $(IDIR_ELINKS)
- $(IPKG_BUILD) $(IDIR_ELINKS) $(PACKAGE_DIR)
diff --git a/openwrt/package/elinks/ipkg/elinks.control b/openwrt/package/elinks/ipkg/elinks.control
deleted file mode 100644
index bbcb216bc7..0000000000
--- a/openwrt/package/elinks/ipkg/elinks.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: elinks
-Priority: optional
-Section: text
-Description: An advanced text web browser
-Depends: libopenssl
diff --git a/openwrt/package/elinks/patches/01-missing_decl_for_off_t.patch b/openwrt/package/elinks/patches/01-missing_decl_for_off_t.patch
deleted file mode 100644
index 4393e31466..0000000000
--- a/openwrt/package/elinks/patches/01-missing_decl_for_off_t.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -ruN elinks-0.11.1-old/src/util/time.h elinks-0.11.1-new/src/util/time.h
---- elinks-0.11.1-old/src/util/time.h 2006-01-29 14:10:39.000000000 +0100
-+++ elinks-0.11.1-new/src/util/time.h 2006-03-27 23:09:08.000000000 +0200
-@@ -1,6 +1,7 @@
- #ifndef EL__UTIL_TIME_H
- #define EL__UTIL_TIME_H
-
-+#include <sys/types.h>
- #ifdef HAVE_SYS_TIME_H
- #include <sys/time.h>
- #endif
diff --git a/openwrt/package/ether-wake/Config.in b/openwrt/package/ether-wake/Config.in
deleted file mode 100644
index df3a5fb65d..0000000000
--- a/openwrt/package/ether-wake/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_ETHER_WAKE
- prompt "ether-wake........................ A Wake-On-LAN (WOL) client"
- tristate
- default m if CONFIG_DEVEL
- help
- A Wake-On-LAN (WOL) client,
- This program sends a magic packet to wake up sleeping networked machines.
-
- http://www.scyld.com/wakeonlan.html
-
diff --git a/openwrt/package/ether-wake/Makefile b/openwrt/package/ether-wake/Makefile
deleted file mode 100644
index 9618b3e3e1..0000000000
--- a/openwrt/package/ether-wake/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ether-wake
-PKG_VERSION:=1.09
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,ETHER_WAKE,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.prepared:
- mkdir -p $(PKG_BUILD_DIR)
- $(CP) ./files/$(PKG_NAME).c $(PKG_BUILD_DIR)/
- $(PATCH) $(PKG_BUILD_DIR) ./patches
- touch $@
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(TARGET_CC) $(TARGET_CFLAGS) -o $(PKG_BUILD_DIR)/$(PKG_NAME) $(PKG_BUILD_DIR)/$(PKG_NAME).c
- touch $@
-
-$(IPKG_ETHER_WAKE):
- install -d -m0755 $(IDIR_ETHER_WAKE)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/$(PKG_NAME) $(IDIR_ETHER_WAKE)/usr/sbin/
- $(RSTRIP) $(IDIR_ETHER_WAKE)
- $(IPKG_BUILD) $(IDIR_ETHER_WAKE) $(PACKAGE_DIR)
diff --git a/openwrt/package/ether-wake/files/ether-wake.c b/openwrt/package/ether-wake/files/ether-wake.c
deleted file mode 100644
index eef22a7ab2..0000000000
--- a/openwrt/package/ether-wake/files/ether-wake.c
+++ /dev/null
@@ -1,392 +0,0 @@
-/* ether-wake.c: Send a magic packet to wake up sleeping machines. */
-
-static char version_msg[] =
-"ether-wake.c: v1.09 11/12/2003 Donald Becker, http://www.scyld.com/";
-static char brief_usage_msg[] =
-"usage: ether-wake [-i <ifname>] [-p aa:bb:cc:dd[:ee:ff]] 00:11:22:33:44:55\n"
-" Use '-u' to see the complete set of options.\n";
-static char usage_msg[] =
-"usage: ether-wake [-i <ifname>] [-p aa:bb:cc:dd[:ee:ff]] 00:11:22:33:44:55\n"
-"\n"
-" This program generates and transmits a Wake-On-LAN (WOL)\n"
-" \"Magic Packet\", used for restarting machines that have been\n"
-" soft-powered-down (ACPI D3-warm state).\n"
-" It currently generates the standard AMD Magic Packet format, with\n"
-" an optional password appended.\n"
-"\n"
-" The single required parameter is the Ethernet MAC (station) address\n"
-" of the machine to wake or a host ID with known NSS 'ethers' entry.\n"
-" The MAC address may be found with the 'arp' program while the target\n"
-" machine is awake.\n"
-"\n"
-" Options:\n"
-" -b Send wake-up packet to the broadcast address.\n"
-" -D Increase the debug level.\n"
-" -i ifname Use interface IFNAME instead of the default 'eth0'.\n"
-" -p <pw> Append the four or six byte password PW to the packet.\n"
-" A password is only required for a few adapter types.\n"
-" The password may be specified in ethernet hex format\n"
-" or dotted decimal (Internet address)\n"
-" -p 00:22:44:66:88:aa\n"
-" -p 192.168.1.1\n";
-
-/*
- This program generates and transmits a Wake-On-LAN (WOL) "Magic Packet",
- used for restarting machines that have been soft-powered-down
- (ACPI D3-warm state). It currently generates the standard AMD Magic Packet
- format, with an optional password appended.
-
- This software may be used and distributed according to the terms
- of the GNU Public License, incorporated herein by reference.
- Contact the author for use under other terms.
-
- This source file was originally part of the network tricks package, and
- is now distributed to support the Scyld Beowulf system.
- Copyright 1999-2003 Donald Becker and Scyld Computing Corporation.
-
- The author may be reached as becker@scyld, or C/O
- Scyld Computing Corporation
- 914 Bay Ridge Road, Suite 220
- Annapolis MD 21403
-
- Notes:
- On some systems dropping root capability allows the process to be
- dumped, traced or debugged.
- If someone traces this program, they get control of a raw socket.
- Linux handles this safely, but beware when porting this program.
-
- An alternative to needing 'root' is using a UDP broadcast socket, however
- doing so only works with adapters configured for unicast+broadcast Rx
- filter. That configuration consumes more power.
-*/
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <ctype.h>
-#include <string.h>
-
-#if 0 /* Only exists on some versions. */
-#include <ioctls.h>
-#endif
-
-#include <sys/socket.h>
-
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <linux/if.h>
-
-#include <features.h>
-#if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1
-#include <netpacket/packet.h>
-#include <net/ethernet.h>
-#else
-#include <asm/types.h>
-#include <linux/if_packet.h>
-#include <linux/if_ether.h>
-#endif
-#include <netdb.h>
-#include <netinet/ether.h>
-
-/* Grrr, no consistency between include versions.
- Enable this if setsockopt() isn't declared with your library. */
-#if 0
-extern int setsockopt __P ((int __fd, int __level, int __optname,
- __ptr_t __optval, int __optlen));
-#else /* New, correct head files. */
-#include <sys/socket.h>
-#endif
-
-u_char outpack[1000];
-int outpack_sz = 0;
-int debug = 0;
-u_char wol_passwd[6];
-int wol_passwd_sz = 0;
-
-static int opt_no_src_addr = 0, opt_broadcast = 0;
-
-static int get_dest_addr(const char *arg, struct ether_addr *eaddr);
-static int get_fill(unsigned char *pkt, struct ether_addr *eaddr);
-static int get_wol_pw(const char *optarg);
-
-int main(int argc, char *argv[])
-{
- char *ifname = "eth0";
- int one = 1; /* True, for socket options. */
- int s; /* Raw socket */
- int errflag = 0, verbose = 0, do_version = 0;
- int perm_failure = 0;
- int i, c, pktsize;
-#if defined(PF_PACKET)
- struct sockaddr_ll whereto;
-#else
- struct sockaddr whereto; /* who to wake up */
-#endif
- struct ether_addr eaddr;
-
- while ((c = getopt(argc, argv, "bDi:p:uvV")) != -1)
- switch (c) {
- case 'b': opt_broadcast++; break;
- case 'D': debug++; break;
- case 'i': ifname = optarg; break;
- case 'p': get_wol_pw(optarg); break;
- case 'u': printf(usage_msg); return 0;
- case 'v': verbose++; break;
- case 'V': do_version++; break;
- case '?':
- errflag++;
- }
- if (verbose || do_version)
- printf("%s\n", version_msg);
- if (errflag) {
- fprintf(stderr, brief_usage_msg);
- return 3;
- }
-
- if (optind == argc) {
- fprintf(stderr, "Specify the Ethernet address as 00:11:22:33:44:55.\n");
- return 3;
- }
-
- /* Note: PF_INET, SOCK_DGRAM, IPPROTO_UDP would allow SIOCGIFHWADDR to
- work as non-root, but we need SOCK_PACKET to specify the Ethernet
- destination address. */
-#if defined(PF_PACKET)
- s = socket(PF_PACKET, SOCK_RAW, 0);
-#else
- s = socket(AF_INET, SOCK_PACKET, SOCK_PACKET);
-#endif
- if (s < 0) {
- if (errno == EPERM)
- fprintf(stderr, "ether-wake: This program must be run as root.\n");
- else
- perror("ether-wake: socket");
- perm_failure++;
- }
- /* Don't revert if debugging allows a normal user to get the raw socket. */
- setuid(getuid());
-
- /* We look up the station address before reporting failure so that
- errors may be reported even when run as a normal user.
- */
- if (get_dest_addr(argv[optind], &eaddr) != 0)
- return 3;
- if (perm_failure && ! debug)
- return 2;
-
- pktsize = get_fill(outpack, &eaddr);
-
- /* Fill in the source address, if possible.
- The code to retrieve the local station address is Linux specific. */
- if (! opt_no_src_addr) {
- struct ifreq if_hwaddr;
- unsigned char *hwaddr = if_hwaddr.ifr_hwaddr.sa_data;
-
- strcpy(if_hwaddr.ifr_name, ifname);
- if (ioctl(s, SIOCGIFHWADDR, &if_hwaddr) < 0) {
- fprintf(stderr, "SIOCGIFHWADDR on %s failed: %s\n", ifname,
- strerror(errno));
- /* Magic packets still work if our source address is bogus, but
- we fail just to be anal. */
- return 1;
- }
- memcpy(outpack+6, if_hwaddr.ifr_hwaddr.sa_data, 6);
-
- if (verbose) {
- printf("The hardware address (SIOCGIFHWADDR) of %s is type %d "
- "%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x.\n", ifname,
- if_hwaddr.ifr_hwaddr.sa_family, hwaddr[0], hwaddr[1],
- hwaddr[2], hwaddr[3], hwaddr[4], hwaddr[5]);
- }
- }
-
- if (wol_passwd_sz > 0) {
- memcpy(outpack+pktsize, wol_passwd, wol_passwd_sz);
- pktsize += wol_passwd_sz;
- }
-
- if (verbose > 1) {
- printf("The final packet is: ");
- for (i = 0; i < pktsize; i++)
- printf(" %2.2x", outpack[i]);
- printf(".\n");
- }
-
- /* This is necessary for broadcasts to work */
- if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char *)&one, sizeof(one)) < 0)
- perror("setsockopt: SO_BROADCAST");
-
-#if defined(PF_PACKET)
- {
- struct ifreq ifr;
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(s, SIOCGIFINDEX, &ifr) == -1) {
- fprintf(stderr, "SIOCGIFINDEX on %s failed: %s\n", ifname,
- strerror(errno));
- return 1;
- }
- memset(&whereto, 0, sizeof(whereto));
- whereto.sll_family = AF_PACKET;
- whereto.sll_ifindex = ifr.ifr_ifindex;
- /* The manual page incorrectly claims the address must be filled.
- We do so because the code may change to match the docs. */
- whereto.sll_halen = ETH_ALEN;
- memcpy(whereto.sll_addr, outpack, ETH_ALEN);
-
- }
-#else
- whereto.sa_family = 0;
- strcpy(whereto.sa_data, ifname);
-#endif
-
- if ((i = sendto(s, outpack, pktsize, 0, (struct sockaddr *)&whereto,
- sizeof(whereto))) < 0)
- perror("sendto");
- else if (debug)
- printf("Sendto worked ! %d.\n", i);
-
-#ifdef USE_SEND
- if (bind(s, (struct sockaddr *)&whereto, sizeof(whereto)) < 0)
- perror("bind");
- else if (send(s, outpack, 100, 0) < 0)
- perror("send");
-#endif
-#ifdef USE_SENDMSG
- {
- struct msghdr msghdr = { 0,};
- struct iovec iovector[1];
- msghdr.msg_name = &whereto;
- msghdr.msg_namelen = sizeof(whereto);
- msghdr.msg_iov = iovector;
- msghdr.msg_iovlen = 1;
- iovector[0].iov_base = outpack;
- iovector[0].iov_len = pktsize;
- if ((i = sendmsg(s, &msghdr, 0)) < 0)
- perror("sendmsg");
- else if (debug)
- printf("sendmsg worked, %d (%d).\n", i, errno);
- }
-#endif
-
- return 0;
-}
-
-/* Convert the host ID string to a MAC address.
- The string may be a
- Host name
- IP address string
- MAC address string
-*/
-
-static int get_dest_addr(const char *hostid, struct ether_addr *eaddr)
-{
- struct ether_addr *eap;
-
- eap = ether_aton(hostid);
- if (eap) {
- *eaddr = *eap;
- if (debug)
- fprintf(stderr, "The target station address is %s.\n",
- ether_ntoa(eaddr));
- } else if (ether_hostton(hostid, eaddr) == 0) {
- if (debug)
- fprintf(stderr, "Station address for hostname %s is %s.\n",
- hostid, ether_ntoa(eaddr));
- } else {
- (void)fprintf(stderr,
- "ether-wake: The Magic Packet host address must be "
- "specified as\n"
- " - a station address, 00:11:22:33:44:55, or\n"
- " - a hostname with a known 'ethers' entry.\n");
- return -1;
- }
- return 0;
-}
-
-
-static int get_fill(unsigned char *pkt, struct ether_addr *eaddr)
-{
- int offset, i;
- unsigned char *station_addr = eaddr->ether_addr_octet;
-
- if (opt_broadcast)
- memset(pkt+0, 0xff, 6);
- else
- memcpy(pkt, station_addr, 6);
- memcpy(pkt+6, station_addr, 6);
- pkt[12] = 0x08; /* Or 0x0806 for ARP, 0x8035 for RARP */
- pkt[13] = 0x42;
- offset = 14;
-
- memset(pkt+offset, 0xff, 6);
- offset += 6;
-
- for (i = 0; i < 16; i++) {
- memcpy(pkt+offset, station_addr, 6);
- offset += 6;
- }
- if (debug) {
- fprintf(stderr, "Packet is ");
- for (i = 0; i < offset; i++)
- fprintf(stderr, " %2.2x", pkt[i]);
- fprintf(stderr, ".\n");
- }
- return offset;
-}
-
-static int get_wol_pw(const char *optarg)
-{
- int passwd[6];
- int byte_cnt;
- int i;
-
- byte_cnt = sscanf(optarg, "%2x:%2x:%2x:%2x:%2x:%2x",
- &passwd[0], &passwd[1], &passwd[2],
- &passwd[3], &passwd[4], &passwd[5]);
- if (byte_cnt < 4)
- byte_cnt = sscanf(optarg, "%d.%d.%d.%d",
- &passwd[0], &passwd[1], &passwd[2], &passwd[3]);
- if (byte_cnt < 4) {
- fprintf(stderr, "Unable to read the Wake-On-LAN password.\n");
- return 0;
- }
- printf(" The Magic packet password is %2.2x %2.2x %2.2x %2.2x (%d).\n",
- passwd[0], passwd[1], passwd[2], passwd[3], byte_cnt);
- for (i = 0; i < byte_cnt; i++)
- wol_passwd[i] = passwd[i];
- return wol_passwd_sz = byte_cnt;
-}
-
-#if 0
-{
- to = (struct sockaddr_in *)&whereto;
- to->sin_family = AF_INET;
- if (inet_aton(target, &to->sin_addr)) {
- hostname = target;
- }
- memset (&sa, 0, sizeof sa);
- sa.sa_family = AF_INET;
- strncpy (sa.sa_data, interface, sizeof sa.sa_data);
- sendto (sock, buf, bufix + len, 0, &sa, sizeof sa);
- strncpy (sa.sa_data, interface, sizeof sa.sa_data);
-#if 1
- sendto (sock, buf, bufix + len, 0, &sa, sizeof sa);
-#else
- bind (sock, &sa, sizeof sa);
- connect();
- send (sock, buf, bufix + len, 0);
-#endif
-}
-#endif
-
-
-/*
- * Local variables:
- * compile-command: "gcc -O -Wall -o ether-wake ether-wake.c"
- * c-indent-level: 4
- * c-basic-offset: 4
- * c-indent-level: 4
- * tab-width: 4
- * End:
- */
diff --git a/openwrt/package/ether-wake/ipkg/ether-wake.control b/openwrt/package/ether-wake/ipkg/ether-wake.control
deleted file mode 100644
index 2c736f1504..0000000000
--- a/openwrt/package/ether-wake/ipkg/ether-wake.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ether-wake
-Priority: optional
-Section: net
-Description: A Wake-On-LAN (WOL) client,
- send a magic packet to wake up sleeping networked machines.
diff --git a/openwrt/package/ether-wake/patches/no_ether_hostton_in_uclibc.patch b/openwrt/package/ether-wake/patches/no_ether_hostton_in_uclibc.patch
deleted file mode 100644
index 91e93866d1..0000000000
--- a/openwrt/package/ether-wake/patches/no_ether_hostton_in_uclibc.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- ether-wake-1.09-orig/ether-wake.c 2005-08-10 17:19:16.000000000 +0200
-+++ ether-wake-1.09-1/ether-wake.c 2005-08-10 17:18:55.000000000 +0200
-@@ -15,7 +15,7 @@
- " an optional password appended.\n"
- "\n"
- " The single required parameter is the Ethernet MAC (station) address\n"
--" of the machine to wake or a host ID with known NSS 'ethers' entry.\n"
-+" of the machine to wake.\n"
- " The MAC address may be found with the 'arp' program while the target\n"
- " machine is awake.\n"
- "\n"
-@@ -289,16 +289,10 @@
- if (debug)
- fprintf(stderr, "The target station address is %s.\n",
- ether_ntoa(eaddr));
-- } else if (ether_hostton(hostid, eaddr) == 0) {
-- if (debug)
-- fprintf(stderr, "Station address for hostname %s is %s.\n",
-- hostid, ether_ntoa(eaddr));
- } else {
- (void)fprintf(stderr,
- "ether-wake: The Magic Packet host address must be "
-- "specified as\n"
-- " - a station address, 00:11:22:33:44:55, or\n"
-- " - a hostname with a known 'ethers' entry.\n");
-+ "specified as a station address, 00:11:22:33:44:55.\n");
- return -1;
- }
- return 0;
diff --git a/openwrt/package/ethtool/Config.in b/openwrt/package/ethtool/Config.in
deleted file mode 100644
index bd718cd98f..0000000000
--- a/openwrt/package/ethtool/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_ETHTOOL
- prompt "ethtool........................... Display or change ethernet card settings"
- tristate
- default m if CONFIG_DEVEL
- help
- ethtool is used for querying settings of an ethernet device and changing them
-
- http://sourceforge.net/projects/gkernel/
-
diff --git a/openwrt/package/ethtool/Makefile b/openwrt/package/ethtool/Makefile
deleted file mode 100644
index 4378c005ba..0000000000
--- a/openwrt/package/ethtool/Makefile
+++ /dev/null
@@ -1,63 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ethtool
-PKG_VERSION:=3
-PKG_RELEASE:=0
-PKG_MD5SUM:=b4e71f7fa2629250677eefcb338442c5
-
-PKG_SOURCE_URL:=@SF/gkernel
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,ETHTOOL,ethtool,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_ETHTOOL):
- install -d -m0755 $(IDIR_ETHTOOL)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/* $(IDIR_ETHTOOL)/usr/sbin
- $(RSTRIP) $(IDIR_ETHTOOL)
- $(IPKG_BUILD) $(IDIR_ETHTOOL) $(PACKAGE_DIR)
diff --git a/openwrt/package/ethtool/ipkg/ethtool.control b/openwrt/package/ethtool/ipkg/ethtool.control
deleted file mode 100644
index 2cc3f065c5..0000000000
--- a/openwrt/package/ethtool/ipkg/ethtool.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: ethtool
-Priority: optional
-Section: net
-Description: Display or change ethernet card settings
diff --git a/openwrt/package/expat/Config.in b/openwrt/package/expat/Config.in
deleted file mode 100644
index 9b34c52c89..0000000000
--- a/openwrt/package/expat/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_COMPILE_EXPAT
- tristate
- default n
- depends BR2_PACKAGE_LIBEXPAT
-
-config BR2_PACKAGE_LIBEXPAT
- prompt "libexpat.......................... A fast, non-validating, stream-oriented XML parsing library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_EXPAT
- help
- A fast, non-validating, stream-oriented XML parsing library
-
- http://expat.sourceforge.net/
-
diff --git a/openwrt/package/expat/Makefile b/openwrt/package/expat/Makefile
deleted file mode 100644
index 47c8e81b18..0000000000
--- a/openwrt/package/expat/Makefile
+++ /dev/null
@@ -1,89 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=expat
-PKG_VERSION:=1.95.8
-PKG_RELEASE:=1
-PKG_MD5SUM:=aff487543845a82fe262e6e2922b4c8e
-
-PKG_SOURCE_URL:=@SF/expat
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBEXPAT,libexpat,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR) ; rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBEXPAT):
- install -m0755 -d $(IDIR_LIBEXPAT)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libexpat.so.* $(IDIR_LIBEXPAT)/usr/lib/
- $(RSTRIP) $(IDIR_LIBEXPAT)
- $(IPKG_BUILD) $(IDIR_LIBEXPAT) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libexpat.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/xmlwf $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/expat*.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libexpat.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libexpat.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/xmlwf \
- $(STAGING_DIR)/usr/include/expat*.h \
- $(STAGING_DIR)/usr/lib/libexpat.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/expat/ipkg/libexpat.control b/openwrt/package/expat/ipkg/libexpat.control
deleted file mode 100644
index 9fe78fa63d..0000000000
--- a/openwrt/package/expat/ipkg/libexpat.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libexpat
-Priority: optional
-Section: net
-Description: a fast, non-validating, stream-oriented XML parsing library
diff --git a/openwrt/package/expat/patches/001-destdir.patch b/openwrt/package/expat/patches/001-destdir.patch
deleted file mode 100644
index dc1f36a169..0000000000
--- a/openwrt/package/expat/patches/001-destdir.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-diff -ruN expat-1.95.8-orig/Makefile.in expat-1.95.8-1/Makefile.in
---- expat-1.95.8-orig/Makefile.in 2004-05-07 22:00:48.000000000 +0200
-+++ expat-1.95.8-1/Makefile.in 2005-04-04 22:53:09.000000000 +0200
-@@ -34,6 +34,8 @@
-
- top_builddir = .
-
-+DESTDIR =
-+
-
- INSTALL = @INSTALL@
- INSTALL_PROGRAM = @INSTALL_PROGRAM@
-@@ -73,22 +75,22 @@
- tests/runtests
-
- install: xmlwf/xmlwf installlib
-- $(mkinstalldirs) $(bindir) $(man1dir)
-- $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf $(bindir)/xmlwf
-- $(INSTALL_DATA) $(MANFILE) $(man1dir)
-+ $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir)
-+ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf $(DESTDIR)$(bindir)/xmlwf
-+ $(INSTALL_DATA) $(MANFILE) $(DESTDIR)$(man1dir)
-
- installlib: $(LIBRARY) $(APIHEADER)
-- $(mkinstalldirs) $(libdir) $(includedir)
-- $(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(libdir)/$(LIBRARY)
-- $(INSTALL_DATA) $(APIHEADER) $(includedir)
-+ $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir)
-+ $(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(DESTDIR)$(libdir)/$(LIBRARY)
-+ $(INSTALL_DATA) $(APIHEADER) $(DESTDIR)$(includedir)
-
- uninstall: uninstalllib
-- $(LIBTOOL) --mode=uninstall rm -f $(bindir)/xmlwf
-+ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf
- rm -f $(man1dir)/xmlwf.1
-
- uninstalllib:
-- $(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(LIBRARY)
-- rm -f $(includedir)/$(APIHEADER)
-+ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(LIBRARY)
-+ rm -f $(DESTDIR)$(includedir)/$(APIHEADER)
-
- # for VPATH builds (invoked by configure)
- mkdir-init:
diff --git a/openwrt/package/ez-ipupdate/Config.in b/openwrt/package/ez-ipupdate/Config.in
deleted file mode 100644
index ff385f86c0..0000000000
--- a/openwrt/package/ez-ipupdate/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_EZIPUPDATE
- prompt "ez-ipupdate....................... Client for most dynamic DNS services"
- tristate
- default m if CONFIG_DEVEL
- help
- A client for many Dynamic DNS services.
-
- http://ez-ipupdate.com/
-
diff --git a/openwrt/package/ez-ipupdate/Makefile b/openwrt/package/ez-ipupdate/Makefile
deleted file mode 100644
index 92d7527643..0000000000
--- a/openwrt/package/ez-ipupdate/Makefile
+++ /dev/null
@@ -1,57 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ez-ipupdate
-PKG_VERSION:=3.0.11b8
-PKG_RELEASE:=2
-PKG_MD5SUM:=000211add4c4845ffa4211841bff4fb0
-
-PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/e/ez-ipupdate \
- http://ftp.de.debian.org/debian/pool/main/e/ez-ipupdate
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=zcat
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,EZIPUPDATE,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib/locate \
- --localstatedir=/var/lib \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)
- touch $@
-
-$(IPKG_EZIPUPDATE):
- install -d -m0755 $(IDIR_EZIPUPDATE)/etc
- install -m0600 ./files/$(PKG_NAME).conf $(IDIR_EZIPUPDATE)/etc/
- install -d -m0755 $(IDIR_EZIPUPDATE)/etc/hotplug.d/iface
- install -m0755 ./files/$(PKG_NAME).hotplug $(IDIR_EZIPUPDATE)/etc/hotplug.d/iface/10-$(PKG_NAME)
- install -d -m0755 $(IDIR_EZIPUPDATE)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/$(PKG_NAME) $(IDIR_EZIPUPDATE)/usr/sbin/
- $(RSTRIP) $(IDIR_EZIPUPDATE)
- $(IPKG_BUILD) $(IDIR_EZIPUPDATE) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/ez-ipupdate/files/ez-ipupdate.conf b/openwrt/package/ez-ipupdate/files/ez-ipupdate.conf
deleted file mode 100644
index cb98275fd3..0000000000
--- a/openwrt/package/ez-ipupdate/files/ez-ipupdate.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-service-type=zoneedit
-user=myname:mypassword
-host=mydomain.com
-quiet
-
-# Do not change the lines below
-cache-file=/tmp/ez-ipupdate.cache
-pid-file=/var/run/ez-ipupdate.pid
diff --git a/openwrt/package/ez-ipupdate/files/ez-ipupdate.hotplug b/openwrt/package/ez-ipupdate/files/ez-ipupdate.hotplug
deleted file mode 100644
index c305458b1a..0000000000
--- a/openwrt/package/ez-ipupdate/files/ez-ipupdate.hotplug
+++ /dev/null
@@ -1,10 +0,0 @@
-NAME=ez-ipupdate
-CONFIG=/etc/$NAME.conf
-COMMAND=/usr/sbin/$NAME
-
-[ "$ACTION" = "ifup" -a "$INTERFACE" = "wan" ] && {
- [ -x $COMMAND ] && [ -r $CONFIG ] && {
- eval "ifname=\"\${${INTERFACE}_ifname}\""
- $COMMAND -c $CONFIG -i $ifname 2>&1 | logger -t $NAME
- } &
-}
diff --git a/openwrt/package/ez-ipupdate/files/ez-ipupdate.init b/openwrt/package/ez-ipupdate/files/ez-ipupdate.init
deleted file mode 100644
index 1572175615..0000000000
--- a/openwrt/package/ez-ipupdate/files/ez-ipupdate.init
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-BIN=ez-ipupdate
-CONF=/etc/$BIN.conf
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $CONF ] || exit
-
-case $1 in
- start)
- mkdir -p $RUN_D
- $BIN -c $CONF
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/ez-ipupdate/ipkg/ez-ipupdate.conffiles b/openwrt/package/ez-ipupdate/ipkg/ez-ipupdate.conffiles
deleted file mode 100644
index 3a9041e34e..0000000000
--- a/openwrt/package/ez-ipupdate/ipkg/ez-ipupdate.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/ez-ipupdate.conf
diff --git a/openwrt/package/ez-ipupdate/ipkg/ez-ipupdate.control b/openwrt/package/ez-ipupdate/ipkg/ez-ipupdate.control
deleted file mode 100644
index 1b7dff825e..0000000000
--- a/openwrt/package/ez-ipupdate/ipkg/ez-ipupdate.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: ez-ipupdate
-Priority: optional
-Section: net
-Description: a client for dynamic DNS services
diff --git a/openwrt/package/ez-ipupdate/patches/debian-subset.patch b/openwrt/package/ez-ipupdate/patches/debian-subset.patch
deleted file mode 100644
index c24b3ea378..0000000000
--- a/openwrt/package/ez-ipupdate/patches/debian-subset.patch
+++ /dev/null
@@ -1,568 +0,0 @@
---- ez-ipupdate-3.0.11b8.orig/ez-ipupdate.c
-+++ ez-ipupdate-3.0.11b8/ez-ipupdate.c
-@@ -139,6 +139,9 @@
- #if HAVE_SIGNAL_H
- # include <signal.h>
- #endif
-+#if HAVE_TIME_H
-+# include <time.h>
-+#endif
- #if HAVE_SYS_TIME_H
- # include <sys/time.h>
- #endif
-@@ -165,7 +168,7 @@
- #endif
-
-
--#if __linux__ || __SVR4 || __OpenBSD__ || __FreeBSD__ || __NetBSD__
-+#if __GLIBC__ || __SVR4 || __OpenBSD__ || __FreeBSD__ || __NetBSD__
- # define IF_LOOKUP 1
- # include <sys/ioctl.h>
- # include <net/if.h>
-@@ -640,7 +643,7 @@
- fprintf(stdout, " -q, --quiet \t\t\tbe quiet\n");
- fprintf(stdout, " -r, --retrys <num>\t\tnumber of trys (default: 1)\n");
- fprintf(stdout, " -R, --run-as-user <user>\tchange to <user> for running, be ware\n\t\t\t\tthat this can cause problems with handeling\n\t\t\t\tSIGHUP properly if that user can't read the\n\t\t\t\tconfig file. also it can't write it's pid file \n\t\t\t\tto a root directory\n");
-- fprintf(stdout, " -Q, --run-as-euser <user>\tchange to effective <user> for running, \n\t\t\t\tthis is NOT secure but it does solve the \n\t\t\t\tproblems with run-as-user and config files and \n\t\t\t\tpid files.\n");
-+ fprintf(stdout, " -Q, --run-as-euser <user>\tchange to effective <user> for running, \n\t\t\t\tthis is NOT secure but it does solve the \n\t\t\t\tproblems with run-as-user and config files and \n\t\t\t\tpid files\n");
- fprintf(stdout, " -s, --server <server[:port]>\tthe server to connect to\n");
- fprintf(stdout, " -S, --service-type <server>\tthe type of service that you are using\n");
- width = fprintf(stdout, "\t\t\t\ttry one of: ") + 4*7;
-@@ -682,7 +685,7 @@
-
- void print_signalhelp( void )
- {
-- fprintf(stdout, "\nsignals are only really used when in daemon mode.\n\n");
-+ fprintf(stdout, "\nsignals are only really used when in daemon mode\n\n");
- fprintf(stdout, "signals: \n");
- fprintf(stdout, " HUP\t\tcauses it to re-read its config file\n");
- fprintf(stdout, " TERM\t\twake up and possibly perform an update\n");
-@@ -693,7 +696,7 @@
- #if HAVE_SIGNAL_H
- RETSIGTYPE sigint_handler(int sig)
- {
-- char message[] = "interupted.\n";
-+ char message[] = "interrupted\n";
- close(client_sockfd);
- write(2, message, sizeof(message)-1);
-
-@@ -704,6 +707,10 @@
- }
- #endif
-
-+#if HAVE_SYSLOG_H
-+ closelog();
-+#endif
-+
- exit(1);
- }
- RETSIGTYPE generic_sig_handler(int sig)
-@@ -798,7 +805,7 @@
- sprintf(buf, "message incomplete because your OS sucks: %s\n", fmt);
- #endif
-
-- syslog(LOG_NOTICE, buf);
-+ syslog(LOG_NOTICE, "%s", buf);
- }
- else
- {
-@@ -1439,7 +1446,7 @@
- if(!(options & OPT_QUIET))
- {
- fprintf(stderr,
-- "connected to %s (%s) on port %d.\n",
-+ "connected to %s (%s) on port %d\n",
- host,
- inet_ntoa(address.sin_addr),
- ntohs(address.sin_port));
-@@ -1683,7 +1690,7 @@
- close(client_sockfd);
- return(-1);
- }
-- if(strstr(buf, "\r\n") > 0)
-+ if(strstr(buf, "\n") != NULL)
- {
- break;
- }
-@@ -1702,8 +1709,8 @@
-
- if(options & OPT_DAEMON)
- {
-- fprintf(stderr, "no compile time default service was set therefor you must "
-- "specify a service type.\n");
-+ fprintf(stderr, "no compile time default service was set, you must "
-+ "specify a service type\n");
-
- return(-1);
- }
-@@ -2039,7 +2046,7 @@
- }
- else if(strstr(buf, "\nnumhost") != NULL)
- {
-- show_message("Too many or too few hosts found\n");
-+ show_message("too many or too few hosts found\n");
- retval = UPDATERES_SHUTDOWN;
- }
- else if(strstr(buf, "\ndnserr") != NULL)
-@@ -2051,17 +2058,17 @@
- }
- else if(strstr(buf, "\n911") != NULL)
- {
-- show_message("Ahhhh! call 911!\n");
-+ show_message("ahhhh! call 911!\n");
- retval = UPDATERES_SHUTDOWN;
- }
- else if(strstr(buf, "\n999") != NULL)
- {
-- show_message("Ahhhh! call 999!\n");
-+ show_message("ahhhh! call 999!\n");
- retval = UPDATERES_SHUTDOWN;
- }
- else if(strstr(buf, "\n!donator") != NULL)
- {
-- show_message("a feature requested is only available to donators, please donate.\n", host);
-+ show_message("a feature requested is only available to donators, please donate\n", host);
- retval = UPDATERES_OK;
- }
- // this one should be last as it is a stupid string to signify waits
-@@ -2095,9 +2102,9 @@
- sprintf(reason, "problem parsing reason for wait response");
- }
-
-- show_message("Wait response received, waiting for %s before next update.\n",
-+ show_message("wait response received, waiting for %s before next update\n",
- format_time(howlong));
-- show_message("Wait response reason: %d\n", N_STR(reason));
-+ show_message("wait response reason: %d\n", N_STR(reason));
- sleep(howlong);
- retval = UPDATERES_ERROR;
- }
-@@ -3370,7 +3377,7 @@
- {
- if(!(options & OPT_QUIET))
- {
-- fprintf(stderr, "warning: for GNUDIP the \"address\" parpameter is only used if set to \"0.0.0.0\" thus making an offline request.\n");
-+ fprintf(stderr, "warning: for GNUDIP the \"address\" parameter is only used if set to \"0.0.0.0\" thus making an offline request\n");
- }
- }
-
-@@ -3392,7 +3399,7 @@
-
- // send an offline request if address 0.0.0.0 is used
- // otherwise, we ignore the address and send an update request
-- gnudip_request[0] = strcmp(address, "0.0.0.0") == 0 ? '1' : '0';
-+ gnudip_request[0] = address && strcmp(address, "0.0.0.0") == 0 ? '1' : '0';
- gnudip_request[1] = '\0';
-
- // find domainname
-@@ -3943,22 +3950,22 @@
- break;
-
- case 201:
-- show_message("Last update was less than %d seconds ago.\n", 300);
-+ show_message("last update was less than %d seconds ago\n", 300);
- return(UPDATERES_ERROR);
- break;
-
- case 202:
-- show_message("Server error.\n");
-+ show_message("server error\n");
- return(UPDATERES_ERROR);
- break;
-
- case 203:
-- show_message("Failure because account is frozen (by admin).\n");
-+ show_message("failure because account is frozen (by admin)\n");
- return(UPDATERES_SHUTDOWN);
- break;
-
- case 204:
-- show_message("Failure because account is locked (by user).\n");
-+ show_message("failure because account is locked (by user)\n");
- return(UPDATERES_SHUTDOWN);
- break;
-
-@@ -4215,8 +4222,6 @@
-
- switch(ret)
- {
-- char *p;
--
- case -1:
- if(!(options & OPT_QUIET))
- {
-@@ -4349,7 +4354,7 @@
- case SIGHUP:
- if(config_file)
- {
-- show_message("SIGHUP recieved, re-reading config file\n");
-+ show_message("SIGHUP received, re-reading config file\n");
- if(parse_conf_file(config_file, conf_commands) != 0)
- {
- show_message("error parsing config file \"%s\"\n", config_file);
-@@ -4384,6 +4389,7 @@
-
- int main(int argc, char **argv)
- {
-+ char *tmp;
- int ifresolve_warned = 0;
- int i;
- int retval = 1;
-@@ -4395,9 +4401,10 @@
- mcheck(NULL);
- #endif
-
-- dprintf((stderr, "staring...\n"));
-+ dprintf((stderr, "starting...\n"));
-
-- program_name = argv[0];
-+ tmp = strrchr(argv[0], '/');
-+ program_name = tmp ? tmp + 1 : argv[0];
- options = 0;
- *user = '\0';
- timeout.tv_sec = DEFAULT_TIMEOUT;
-@@ -4417,7 +4424,7 @@
-
- if(!(options & OPT_QUIET) && !(options & OPT_DAEMON))
- {
-- fprintf(stderr, "ez-ipupdate Version %s\nCopyright (C) 1998-2001 Angus Mackay.\n", VERSION);
-+ fprintf(stderr, "%s Version %s\nCopyright (C) 1998-2001 Angus Mackay\n", program_name, VERSION);
- }
-
- dprintf((stderr, "options: 0x%04X\n", options));
-@@ -4434,7 +4441,7 @@
- {
- if(service->check_info() != 0)
- {
-- fprintf(stderr, "invalid data to perform requested action.\n");
-+ fprintf(stderr, "invalid data to perform requested action\n");
- exit(1);
- }
- }
-@@ -4456,13 +4463,13 @@
- dprintf((stderr, "user_name: %s\n", user_name));
- dprintf((stderr, "password: %s\n", password));
- }
-- if(*user_name == '\0')
-+ if(*user_name == '\0' && !(options & OPT_DAEMON))
- {
- printf("user name: ");
- fgets(user_name, sizeof(user_name), stdin);
- chomp(user_name);
- }
-- if(*password == '\0')
-+ if(*password == '\0' && !(options & OPT_DAEMON))
- {
- strncpy(password, getpass("password: "), sizeof(password));
- }
-@@ -4480,7 +4487,7 @@
-
- if(service->check_info() != 0)
- {
-- fprintf(stderr, "invalid data to perform requested action.\n");
-+ fprintf(stderr, "invalid data to perform requested action\n");
- exit(1);
- }
-
-@@ -4503,7 +4510,7 @@
-
- if(interface == NULL)
- {
-- fprintf(stderr, "invalid data to perform requested action.\n");
-+ fprintf(stderr, "invalid data to perform requested action\n");
- fprintf(stderr, "you must provide an interface for daemon mode");
- exit(1);
- }
-@@ -4519,23 +4526,25 @@
- if(fork() > 0) { exit(0); } /* parent */
- }
-
-+# if HAVE_SYSLOG_H
-+ openlog(program_name, LOG_PID, LOG_DAEMON );
-+ //options |= OPT_QUIET;
-+# endif
-+ show_message("version %s, interface %s, host %s, server %s, service %s\n",
-+ VERSION, N_STR(interface), N_STR(host), server, service->title);
-+
- #if HAVE_GETPID
- if(pid_file && pid_file_create(pid_file) != 0)
- {
-- fprintf(stderr, "exiting...\n");
-+ show_message("could not create pid file %s (%s), exiting\n",
-+ pid_file, strerror(errno));
-+#if HAVE_SYSLOG_H
-+ closelog();
-+#endif
- exit(1);
- }
- #endif
-
--# if HAVE_SYSLOG_H
-- openlog(program_name, LOG_PID, LOG_USER );
-- options |= OPT_QUIET;
--# endif
-- show_message("ez-ipupdate Version %s, Copyright (C) 1998-2001 Angus Mackay.\n",
-- VERSION);
-- show_message("%s started for interface %s host %s using server %s and service %s\n",
-- program_name, N_STR(interface), N_STR(host), server, service->title);
--
- memset(&sin, 0, sizeof(sin));
-
- if(cache_file)
-@@ -4560,7 +4569,7 @@
- strftime(timebuf, sizeof(timebuf), "%Y/%m/%d %H:%M", ts);
- show_message("got last update %s on %s from cache file\n", ipstr, timebuf);
- }
-- else
-+ else if(ipstr||ipdate)
- {
- show_message("malformed cache file: %s\n", cache_file);
- }
-@@ -4647,7 +4656,7 @@
- }
- else
- {
-- show_message("failure to update %s->%s (%s)\n",
-+ show_message("failed to update %s->%s (%s)\n",
- interface, inet_ntoa(sin.sin_addr), N_STR(host));
- memset(&sin, 0, sizeof(sin));
-
-@@ -4671,7 +4680,7 @@
- dprintf((stderr, "updateres: %d\n", updateres));
- if(updateres == UPDATERES_SHUTDOWN)
- {
-- show_message("shuting down updater for %s due to fatal error\n",
-+ show_message("shutting down updater for %s due to fatal error\n",
- N_STR(host));
-
- if(notify_email && *notify_email != '\0')
-@@ -4711,7 +4720,7 @@
- #endif
-
- #else
-- fprintf(stderr, "sorry, this mode is only available on platforms that the ");
-+ fprintf(stderr, "sorry, this mode is only available on platforms where the ");
- fprintf(stderr, "IP address \ncan be determined. feel free to hack the code");
- fprintf(stderr, " though.\n");
- exit(1);
-@@ -4799,7 +4808,7 @@
- }
- else
- {
-- show_message("could not resolve ip address for %s.\n", interface);
-+ show_message("could not resolve ip address for %s\n", interface);
- exit(1);
- }
- close(sock);
---- ez-ipupdate-3.0.11b8.orig/example.conf
-+++ ez-ipupdate-3.0.11b8/example.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
---- ez-ipupdate-3.0.11b8.orig/example-pgpow.conf
-+++ ez-ipupdate-3.0.11b8/example-pgpow.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -10,8 +10,8 @@
- host=mydomain.penguinpowered.com
- interface=eth1
-
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
-
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-dhs.conf
-+++ ez-ipupdate-3.0.11b8/example-dhs.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -10,8 +10,8 @@
- host=mydomain.whatever.com
- interface=eth1
-
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
-
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-dyndns.conf
-+++ ez-ipupdate-3.0.11b8/example-dyndns.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -12,14 +12,9 @@
- interface=eth1
- max-interval=2073600
-
--# please create this file and ensure that the user that ez-ipupdate is running
--# as has write permissions to it then uncomment this line, if you don't your
--# dyndns account will probably get banned. if you run ez-ipupdate as root (bad
--# idea, use "run-as-user") then you can just uncomment this line.
--#cache-file=/etc/ez-ipupdate.cache.eth1
--
--# for the mean time we'll just use a cache file in the temp directory
--cache-file=/tmp/ez-ipupdate.cache
-+# if you don't use a cache file your dyndns account will probably get banned.
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
-
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-ods.conf
-+++ ez-ipupdate-3.0.11b8/example-ods.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -10,8 +10,8 @@
- host=mydomain.ods.org
- interface=eth1
-
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
-
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-tzo.conf
-+++ ez-ipupdate-3.0.11b8/example-tzo.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -14,8 +14,8 @@
- max-interval=2073600
- interface=eth1
-
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
-
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-gnudip.conf
-+++ ez-ipupdate-3.0.11b8/example-gnudip.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -14,8 +14,8 @@
- # any other value is ignored
- #address=0.0.0.0
-
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
-
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-easydns.conf
-+++ ez-ipupdate-3.0.11b8/example-easydns.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -10,8 +10,8 @@
- host=mydomain.whatever.com
- interface=eth1
-
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
-
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-justlinux.conf
-+++ ez-ipupdate-3.0.11b8/example-justlinux.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -10,8 +10,8 @@
- host=mydomain.penguinpowered.com
- interface=eth1
-
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
-
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-dyns.conf
-+++ ez-ipupdate-3.0.11b8/example-dyns.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -10,8 +10,8 @@
- host=myhost
- #interface=eth1
-
--# if you use run-as ensure the user has permission to write this file
--#cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
-
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-heipv6tb.conf
-+++ ez-ipupdate-3.0.11b8/example-heipv6tb.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -11,14 +11,9 @@
- interface=eth1
- max-interval=2073600
-
--# please create this file and ensure that the user that ez-ipupdate is running
--# as has write permissions to it then uncomment this line, if you don't your
--# dyndns account will probably get banned. if you run ez-ipupdate as root (bad
--# idea, use "run-as-user") then you can just uncomment this line.
--#cache-file=/etc/ez-ipupdate.cache.eth1
--
--# for the mean time we'll just use a cache file in the temp directory
--cache-file=/tmp/ez-ipupdate.cache
-+# if you don't use a cache file your account will probably get banned.
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
-
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
diff --git a/openwrt/package/fakeidentd/Config.in b/openwrt/package/fakeidentd/Config.in
deleted file mode 100644
index ddfa3a9992..0000000000
--- a/openwrt/package/fakeidentd/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_FAKEIDENTD
- prompt "fakeidentd........................ A static, secure identd."
- tristate
- default m if CONFIG_DEVEL
- help
- A static secure identd, only one source file.
-
- http://www.guru-group.fi/~too/sw/releases/
diff --git a/openwrt/package/fakeidentd/Makefile b/openwrt/package/fakeidentd/Makefile
deleted file mode 100644
index 04459f450d..0000000000
--- a/openwrt/package/fakeidentd/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-# $Id: $
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=fakeidentd
-PKG_VERSION:=2.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=3aaf9d525da08ae18dd4133de4ff7be3
-
-PKG_SOURCE_URL:=@openwrt/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,FAKEIDENTD,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(TARGET_CC) -o $(PKG_BUILD_DIR)/$(PKG_NAME) $(PKG_BUILD_DIR)/identd.c
- touch $@
-
-$(IPKG_FAKEIDENTD):
- install -d -m0755 $(IDIR_FAKEIDENTD)/usr/sbin \
- $(IDIR_FAKEIDENTD)/etc/init.d \
- $(IDIR_FAKEIDENTD)/etc/default/
- echo $(whoami) > $(IDIR_FAKEIDENTD)/etc/default/$(PKG_NAME)
- $(CP) $(PKG_BUILD_DIR)/fakeidentd $(IDIR_FAKEIDENTD)/usr/sbin/
- $(CP) ./files/$(PKG_NAME).init $(IDIR_FAKEIDENTD)/etc/init.d/$(PKG_NAME)
- $(RSTRIP) $(IDIR_FAKEIDENTD)
- $(IPKG_BUILD) $(IDIR_FAKEIDENTD) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/fakeidentd/files/fakeidentd.init b/openwrt/package/fakeidentd/files/fakeidentd.init
deleted file mode 100644
index 954ad8c24c..0000000000
--- a/openwrt/package/fakeidentd/files/fakeidentd.init
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-NAME=fakeidentd
-case "$1" in
- start)
- [ -e $DEFAULT ] && $NAME $DEFAULT
- ;;
- stop)
- killall $NAME
- ;;
- restart)
- killall $NAME
- $NAME
- ;;
- *)
- echo "Usage: $NAME (start|stop|restart)" > 2&
- exit 1
- ;;
-esac
diff --git a/openwrt/package/fakeidentd/ipkg/fakeidentd.control b/openwrt/package/fakeidentd/ipkg/fakeidentd.control
deleted file mode 100644
index 6c528b2752..0000000000
--- a/openwrt/package/fakeidentd/ipkg/fakeidentd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: fakeidentd
-Description: A static, secure identd.
-Section: net
-Priority: optional
diff --git a/openwrt/package/fetchmail/Config.in b/openwrt/package/fetchmail/Config.in
deleted file mode 100644
index bc6cdfe8aa..0000000000
--- a/openwrt/package/fetchmail/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_FETCHMAIL
- prompt "fetchmail......................... Remote mail retriever"
- tristate
- default m if CONFIG_DEVEL
- help
- Retrieves remote mail via POP/IMAP
-
- Very useful in conjunction with mutt.
diff --git a/openwrt/package/fetchmail/Makefile b/openwrt/package/fetchmail/Makefile
deleted file mode 100644
index 049c6aecf6..0000000000
--- a/openwrt/package/fetchmail/Makefile
+++ /dev/null
@@ -1,68 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=fetchmail
-PKG_VERSION:=6.2.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=9956b30139edaa4f5f77c4d0dbd80225
-
-PKG_SOURCE_URL:=http://www.catb.org/~esr/fetchmail/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,FETCHMAIL,fetchmail,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_c_bigendian=no \
- ac_cv_sizeof_off_t=8 \
- ac_cv_sizeof_int=4 \
- ac_cv_sizeof_long=4 \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-fallback=procmail \
- --without-hesiod \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_FETCHMAIL):
- mkdir -p $(IDIR_FETCHMAIL)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/$(PKG_NAME) $(IDIR_FETCHMAIL)/usr/bin/
- $(RSTRIP) $(IDIR_FETCHMAIL)
- $(IPKG_BUILD) $(IDIR_FETCHMAIL) $(PACKAGE_DIR)
diff --git a/openwrt/package/fetchmail/ipkg/fetchmail.control b/openwrt/package/fetchmail/ipkg/fetchmail.control
deleted file mode 100644
index ea664fa6e6..0000000000
--- a/openwrt/package/fetchmail/ipkg/fetchmail.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: fetchmail
-Priority: optional
-Section: text
-Depends:
-Description: Mail text client
diff --git a/openwrt/package/fetchmail/patches/01-amd64_detection.patch b/openwrt/package/fetchmail/patches/01-amd64_detection.patch
deleted file mode 100644
index 2db43d1110..0000000000
--- a/openwrt/package/fetchmail/patches/01-amd64_detection.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-diff -urN fetchmail-6.2.5/config.sub fetchmail-6.2.5.new/config.sub
---- fetchmail-6.2.5/config.sub 2003-07-17 03:03:20.000000000 +0200
-+++ fetchmail-6.2.5.new/config.sub 2006-03-30 00:36:11.000000000 +0200
-@@ -176,7 +176,7 @@
- | 580 | i960 | h8300 \
- | x86 | ppcbe | mipsbe | mipsle | shbe | shle | armbe | armle \
- | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
-- | hppa64 \
-+ | hppa64 | x86_64 \
- | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
- | alphaev6[78] \
- | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \
-@@ -194,7 +194,7 @@
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
-- i[34567]86)
-+ i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
-@@ -209,7 +209,7 @@
- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
- | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
- | xmp-* | ymp-* \
-- | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \
-+ | x86-* | x86_64-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \
- | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
- | hppa2.0n-* | hppa64-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
-@@ -256,6 +256,12 @@
- basic_machine=a29k-none
- os=-bsd
- ;;
-+ amd64)
-+ basic_machine=x86_64-pc
-+ ;;
-+ amd64-*)
-+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
diff --git a/openwrt/package/fetchmail/patches/02-no_rej.patch b/openwrt/package/fetchmail/patches/02-no_rej.patch
deleted file mode 100644
index 64cc7cb7d9..0000000000
--- a/openwrt/package/fetchmail/patches/02-no_rej.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -ruN fetchmail-6.2.5-old/po/fr.po.rej fetchmail-6.2.5-new/po/fr.po.rej
---- fetchmail-6.2.5-old/po/fr.po.rej 2003-07-17 03:23:26.000000000 +0200
-+++ fetchmail-6.2.5-new/po/fr.po.rej 1970-01-01 01:00:00.000000000 +0100
-@@ -1,17 +0,0 @@
--***************
--*** 2166,2172 ****
-- #: rcfile_y.y:433
-- #, fuzzy, c-format
-- msgid "File %s must be a regular file.\n"
--- msgstr "Le fichier %s doit etre un lien symbolique.\n"
--
-- #: rcfile_y.y:440
-- #, c-format
----- 2166,2172 ----
-- #: rcfile_y.y:433
-- #, fuzzy, c-format
-- msgid "File %s must be a regular file.\n"
--+ msgstr "Le fichier %s doit être un fichier normal.\n"
--
-- #: rcfile_y.y:440
-- #, c-format
diff --git a/openwrt/package/flac/Config.in b/openwrt/package/flac/Config.in
deleted file mode 100644
index 87f88a3834..0000000000
--- a/openwrt/package/flac/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_COMPILE_FLAC
- tristate
- default n
- depends BR2_PACKAGE_LIBFLAC
-
-config BR2_PACKAGE_LIBFLAC
- prompt "libflac........................... Free Lossless Audio Codec library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_FLAC
- help
- Free Lossless Audio Codec library
-
- http://flac.sourceforge.net/
-
diff --git a/openwrt/package/flac/Makefile b/openwrt/package/flac/Makefile
deleted file mode 100644
index b06cf0ec4d..0000000000
--- a/openwrt/package/flac/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=flac
-PKG_VERSION:=1.1.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=2bfc127cdda02834d0491ab531a20960
-
-PKG_SOURCE_URL:=@SF/flac
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBFLAC,libflac,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) -f Makefile.lite \
- $(TARGET_CONFIGURE_OPTS) \
- RELEASE_CFLAGS="$(TARGET_CFLAGS)" \
- libFLAC
- touch $@
-
-$(IPKG_LIBFLAC):
- install -m0755 -d $(IDIR_LIBFLAC)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/obj/release/lib/libFLAC.so $(IDIR_LIBFLAC)/usr/lib/
- $(RSTRIP) $(IDIR_LIBFLAC)
- $(IPKG_BUILD) $(IDIR_LIBFLAC) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libFLAC.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_BUILD_DIR)/include/FLAC $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/obj/release/lib/libFLAC.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_BUILD_DIR)/obj/release/lib/libFLAC.so $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libFLAC.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/FLAC \
- $(STAGING_DIR)/usr/lib/libFLAC.a \
- $(STAGING_DIR)/usr/lib/libFLAC.so \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/flac/ipkg/libflac.control b/openwrt/package/flac/ipkg/libflac.control
deleted file mode 100644
index ea50795259..0000000000
--- a/openwrt/package/flac/ipkg/libflac.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libflac
-Priority: optional
-Section: libs
-Description: Free Lossless Audio Codec library
diff --git a/openwrt/package/flac/patches/no_encoder.patch b/openwrt/package/flac/patches/no_encoder.patch
deleted file mode 100644
index f1d6fe277a..0000000000
--- a/openwrt/package/flac/patches/no_encoder.patch
+++ /dev/null
@@ -1,280 +0,0 @@
-diff -ru flac-1.1.2.OLD/build/lib.mk flac-1.1.2.NEW/build/lib.mk
---- flac-1.1.2.OLD/build/lib.mk 2005-01-25 15:10:47.000000000 +1100
-+++ flac-1.1.2.NEW/build/lib.mk 2005-10-16 10:10:43.000000000 +1000
-@@ -58,7 +58,7 @@
-
- debug : CFLAGS = -g -O0 -DDEBUG $(CONFIG_CFLAGS) $(DEBUG_CFLAGS) -Wall -W -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES)
- valgrind: CFLAGS = -g -O0 -DDEBUG $(CONFIG_CFLAGS) $(DEBUG_CFLAGS) -DFLAC__VALGRIND_TESTING -Wall -W -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES)
--release : CFLAGS = -O3 -fomit-frame-pointer -funroll-loops -finline-functions -DNDEBUG $(CONFIG_CFLAGS) $(RELEASE_CFLAGS) -Wall -W -Winline -DFLaC__INLINE=__inline__ -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES)
-+release : CFLAGS = -fomit-frame-pointer -funroll-loops -finline-functions -DNDEBUG $(CONFIG_CFLAGS) $(RELEASE_CFLAGS) -Wall -W -Winline -DFLaC__INLINE=__inline__ -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES)
-
- LFLAGS = -L$(LIBPATH)
-
-diff -ru flac-1.1.2.OLD/src/libFLAC/lpc.c flac-1.1.2.NEW/src/libFLAC/lpc.c
---- flac-1.1.2.OLD/src/libFLAC/lpc.c 2005-01-26 15:31:36.000000000 +1100
-+++ flac-1.1.2.NEW/src/libFLAC/lpc.c 2005-10-16 10:44:58.000000000 +1000
-@@ -293,6 +293,209 @@
-
- void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[])
- {
-+ register const FLAC__int32 *qlp0 = &qlp_coeff[(order-1)];
-+ register FLAC__int32 sum;
-+ register const FLAC__int32 *history, *qlp;
-+
-+ history = &data[(-order)];
-+
-+ switch (order) {
-+ case 12:
-+ for( ; data_len != 0; --data_len) {
-+ sum = (qlp0[0] * history[0])
-+ + (qlp0[-1] * history[1])
-+ + (qlp0[-2] * history[2])
-+ + (qlp0[-3] * history[3])
-+ + (qlp0[-4] * history[4])
-+ + (qlp0[-5] * history[5])
-+ + (qlp0[-6] * history[6])
-+ + (qlp0[-7] * history[7])
-+ + (qlp0[-8] * history[8])
-+ + (qlp0[-9] * history[9])
-+ + (qlp0[-10] * history[10])
-+ + (qlp0[-11] * history[11])
-+ ;
-+ ++history;
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ case 11:
-+ for( ; data_len != 0; --data_len) {
-+ sum = (qlp0[0] * history[0])
-+ + (qlp0[-1] * history[1])
-+ + (qlp0[-2] * history[2])
-+ + (qlp0[-3] * history[3])
-+ + (qlp0[-4] * history[4])
-+ + (qlp0[-5] * history[5])
-+ + (qlp0[-6] * history[6])
-+ + (qlp0[-7] * history[7])
-+ + (qlp0[-8] * history[8])
-+ + (qlp0[-9] * history[9])
-+ + (qlp0[-10] * history[10])
-+ ;
-+ ++history;
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ case 10:
-+ for( ; data_len != 0; --data_len) {
-+ sum = (qlp0[0] * history[0])
-+ + (qlp0[-1] * history[1])
-+ + (qlp0[-2] * history[2])
-+ + (qlp0[-3] * history[3])
-+ + (qlp0[-4] * history[4])
-+ + (qlp0[-5] * history[5])
-+ + (qlp0[-6] * history[6])
-+ + (qlp0[-7] * history[7])
-+ + (qlp0[-8] * history[8])
-+ + (qlp0[-9] * history[9])
-+ ;
-+ ++history;
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ case 9:
-+ for( ; data_len != 0; --data_len) {
-+ sum = (qlp0[0] * history[0])
-+ + (qlp0[-1] * history[1])
-+ + (qlp0[-2] * history[2])
-+ + (qlp0[-3] * history[3])
-+ + (qlp0[-4] * history[4])
-+ + (qlp0[-5] * history[5])
-+ + (qlp0[-6] * history[6])
-+ + (qlp0[-7] * history[7])
-+ + (qlp0[-8] * history[8])
-+ ;
-+ ++history;
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ case 8:
-+ for( ; data_len != 0; --data_len) {
-+ sum = (qlp0[0] * history[0])
-+ + (qlp0[-1] * history[1])
-+ + (qlp0[-2] * history[2])
-+ + (qlp0[-3] * history[3])
-+ + (qlp0[-4] * history[4])
-+ + (qlp0[-5] * history[5])
-+ + (qlp0[-6] * history[6])
-+ + (qlp0[-7] * history[7])
-+ ;
-+ ++history;
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ case 7:
-+ for( ; data_len != 0; --data_len) {
-+ sum = (qlp0[0] * history[0])
-+ + (qlp0[-1] * history[1])
-+ + (qlp0[-2] * history[2])
-+ + (qlp0[-3] * history[3])
-+ + (qlp0[-4] * history[4])
-+ + (qlp0[-5] * history[5])
-+ + (qlp0[-6] * history[6])
-+ ;
-+ ++history;
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ case 6:
-+ for( ; data_len != 0; --data_len) {
-+ sum = (qlp0[0] * history[0])
-+ + (qlp0[-1] * history[1])
-+ + (qlp0[-2] * history[2])
-+ + (qlp0[-3] * history[3])
-+ + (qlp0[-4] * history[4])
-+ + (qlp0[-5] * history[5])
-+ ;
-+ ++history;
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ case 5:
-+ for( ; data_len != 0; --data_len) {
-+ sum = (qlp0[0] * history[0])
-+ + (qlp0[-1] * history[1])
-+ + (qlp0[-2] * history[2])
-+ + (qlp0[-3] * history[3])
-+ + (qlp0[-4] * history[4])
-+ ;
-+ ++history;
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ case 4:
-+ for( ; data_len != 0; --data_len) {
-+ sum = (qlp0[0] * history[0])
-+ + (qlp0[-1] * history[1])
-+ + (qlp0[-2] * history[2])
-+ + (qlp0[-3] * history[3])
-+ ;
-+ ++history;
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ case 3:
-+ for( ; data_len != 0; --data_len) {
-+ sum = (qlp0[0] * history[0])
-+ + (qlp0[-1] * history[1])
-+ + (qlp0[-2] * history[2])
-+ ;
-+ ++history;
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ case 2:
-+ for( ; data_len != 0; --data_len) {
-+ sum = (qlp0[0] * history[0])
-+ + (qlp0[-1] * history[1])
-+ ;
-+ ++history;
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ case 1:
-+ for( ; data_len != 0; --data_len) {
-+ sum = (qlp0[0] * (*(history++)));
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ default:
-+ {
-+ /* handle everything else: (order > 12)
-+ * with Duff's Device to reduce jumps */
-+ const unsigned n0 = (order + 7)/8;
-+ const int tmp = 0 - order - 1;
-+ register const FLAC__int32 *qlpd = &qlp_coeff[order];
-+ for( ; data_len != 0; --data_len) {
-+ register unsigned n = n0;
-+ sum = 0;
-+ qlp = qlpd;
-+ history = &data[tmp];
-+
-+ switch(order%8) {
-+ case 0: do {
-+ sum += (*(--qlp)) * (*(++history));
-+ case 7: sum += (*(--qlp)) * (*(++history));
-+ case 6: sum += (*(--qlp)) * (*(++history));
-+ case 5: sum += (*(--qlp)) * (*(++history));
-+ case 4: sum += (*(--qlp)) * (*(++history));
-+ case 3: sum += (*(--qlp)) * (*(++history));
-+ case 2: sum += (*(--qlp)) * (*(++history));
-+ case 1: sum += (*(--qlp)) * (*(++history));
-+ } while (--n);
-+ }
-+
-+ *(data++) = *(residual++) + (sum >> lp_quantization);
-+ }
-+ return;
-+ }
-+ }
-+}
-+
-+#if 0
-+void FLAC__lpc_restore_signal_orig(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[])
-+{
- #ifdef FLAC__OVERFLOW_DETECT
- FLAC__int64 sumo;
- #endif
-@@ -339,6 +542,7 @@
- }
- */
- }
-+#endif /* 0 */
-
- void FLAC__lpc_restore_signal_wide(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[])
- {
-diff -ru flac-1.1.2.OLD/src/libFLAC/Makefile.lite flac-1.1.2.NEW/src/libFLAC/Makefile.lite
---- flac-1.1.2.OLD/src/libFLAC/Makefile.lite 2005-01-27 11:08:35.000000000 +1100
-+++ flac-1.1.2.NEW/src/libFLAC/Makefile.lite 2005-10-16 10:13:29.000000000 +1000
-@@ -41,7 +41,7 @@
- ifeq ($(SOLARIS_BUILD),yes)
- DEFINES = -DFLAC__NO_ASM -DFLAC__ALIGN_MALLOC_DATA
- else
--DEFINES = -DFLAC__CPU_IA32 -DFLAC__USE_3DNOW -DFLAC__HAS_NASM -DFLAC__ALIGN_MALLOC_DATA
-+DEFINES = -DFLAC__CPU_UNKNOWN -DFLAC__NO_ASM -DFLAC__ALIGN_MALLOC_DATA -DFLAC__INTEGER_ONLY_LIBRARY
- endif
- endif
- INCLUDES = -I./include -I$(topdir)/include
-@@ -50,14 +50,6 @@
- ifeq ($(DARWIN_BUILD),yes)
- SRCS_S = \
- ppc/as/lpc_asm.s
--else
--ifeq ($(SOLARIS_BUILD),yes)
--else
--SRCS_NASM = \
-- ia32/cpu_asm.nasm \
-- ia32/fixed_asm.nasm \
-- ia32/lpc_asm.nasm
--endif
- endif
-
- SRCS_C = \
-@@ -66,7 +58,6 @@
- cpu.c \
- crc.c \
- file_decoder.c \
-- file_encoder.c \
- fixed.c \
- float.c \
- format.c \
-@@ -76,10 +67,7 @@
- metadata_iterators.c \
- metadata_object.c \
- seekable_stream_decoder.c \
-- seekable_stream_encoder.c \
-- stream_decoder.c \
-- stream_encoder.c \
-- stream_encoder_framing.c
-+ stream_decoder.c
-
- include $(topdir)/build/lib.mk
-
diff --git a/openwrt/package/fping/Config.in b/openwrt/package/fping/Config.in
deleted file mode 100644
index c9fbc6adeb..0000000000
--- a/openwrt/package/fping/Config.in
+++ /dev/null
@@ -1,16 +0,0 @@
-config BR2_PACKAGE_FPING
- prompt "fping............................. A program to ping multiple hosts in parallel"
- tristate
- default m if CONFIG_DEVEL
- help
- fping is a ping(1) like program which uses the Internet Control Message Protocol
- (ICMP) echo request to determine if a host is up. fping is different from ping in
- that you can specify any number of hosts on the command line, or specify a file
- containing the lists of hosts to ping. Instead of trying one host until it timeouts
- or replies, fping will send out a ping packet and move on to the next host in a
- round-robin fashion. If a host replies, it is noted and removed from the list of
- hosts to check. If a host does not respond within a certain time limit and/or retry
- limit it will be considered unreachable.
-
- http://www.fping.com/
-
diff --git a/openwrt/package/fping/Makefile b/openwrt/package/fping/Makefile
deleted file mode 100644
index 998d3485fc..0000000000
--- a/openwrt/package/fping/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=fping
-PKG_VERSION:=2.4b2_to-ipv6
-PKG_RELEASE:=1
-PKG_MD5SUM:=3ad516765514249a40d3c5b6caab812a
-
-PKG_SOURCE_URL:=http://www.fping.com/download/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=zcat
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,FPING,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -j1 CC=$(TARGET_CC) CFLAGS="$(TARGET_CFLAGS)" -C $(PKG_BUILD_DIR) clean $(PKG_NAME)
- mv $(PKG_BUILD_DIR)/$(PKG_NAME) $(PKG_BUILD_DIR)/$(PKG_NAME)4
- $(MAKE) -j1 CC=$(TARGET_CC) CFLAGS="$(TARGET_CFLAGS) -DIPV6=1" -C $(PKG_BUILD_DIR) clean $(PKG_NAME)
- mv $(PKG_BUILD_DIR)/$(PKG_NAME) $(PKG_BUILD_DIR)/$(PKG_NAME)6
- touch $@
-
-$(IPKG_FPING):
- mkdir -p $(IDIR_FPING)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME)4 $(IDIR_FPING)/usr/bin/$(PKG_NAME)
- $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME)6 $(IDIR_FPING)/usr/bin/
- $(STRIP) $(IDIR_FPING)/usr/bin/*
- $(IPKG_BUILD) $(IDIR_FPING) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/fping/ipkg/fping.control b/openwrt/package/fping/ipkg/fping.control
deleted file mode 100644
index 964c8dbf29..0000000000
--- a/openwrt/package/fping/ipkg/fping.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: fping
-Priority: optional
-Section: net
-Description: A program to ping hosts in parallel
diff --git a/openwrt/package/fping/patches/debian-10.patch b/openwrt/package/fping/patches/debian-10.patch
deleted file mode 100644
index a24dabbc76..0000000000
--- a/openwrt/package/fping/patches/debian-10.patch
+++ /dev/null
@@ -1,165 +0,0 @@
---- fping-2.4b2-to-ipv6.orig/fping.8
-+++ fping-2.4b2-to-ipv6/fping.8
-@@ -1,4 +1,4 @@
--.TH fping l
-+.TH fping 8
- .SH NAME
- fping \- send ICMP ECHO_REQUEST packets to network hosts
- .SH SYNOPSIS
-@@ -152,7 +152,7 @@
- example none the less.
- .nf
-
--#!/usr/local/bin/perl
-+#!/usr/bin/perl
- require 'open2.pl';
-
- $MAILTO = "root";
-@@ -178,7 +178,7 @@
- that are currently reachable.
- .nf
-
--#!/usr/local/bin/perl
-+#!/usr/bin/perl
-
- $hosts_to_backup = `cat /etc/hosts.backup | fping -a`;
-
---- fping-2.4b2-to-ipv6.orig/fping.c
-+++ fping-2.4b2-to-ipv6/fping.c
-@@ -42,7 +42,6 @@
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
--#define IPV6 1 /* This should be a compiler option, or even better be done from the Makefile... ;) */
-
- #ifndef _NO_PROTO
- #if !__STDC__ && !defined( __cplusplus ) && !defined( FUNCPROTO ) \
-@@ -101,13 +100,8 @@
- #endif
- #include <netinet/in_systm.h>
-
--/* Linux has bizarre ip.h and ip_icmp.h */
--#if defined( __linux__ )
--#include "linux.h"
--#else
- #include <netinet/ip.h>
- #include <netinet/ip_icmp.h>
--#endif /* defined(__linux__) */
-
- #include <arpa/inet.h>
- #include <netdb.h>
-@@ -150,7 +144,11 @@
- #define MIN_PING_DATA sizeof( PING_DATA )
- #define MAX_IP_PACKET 65536 /* (theoretical) max IP packet size */
- #define SIZE_IP_HDR 20
-+#ifndef IPV6
- #define SIZE_ICMP_HDR ICMP_MINLEN /* from ip_icmp.h */
-+#else
-+#define SIZE_ICMP_HDR sizeof(FPING_ICMPHDR)
-+#endif
- #define MAX_PING_DATA ( MAX_IP_PACKET - SIZE_IP_HDR - SIZE_ICMP_HDR )
-
- /* sized so as to be like traditional ping */
-@@ -474,6 +472,35 @@
- sizeof(opton)))
- err(1, "setsockopt(IPV6_RTHDR)");
- #endif
-+#ifndef USE_SIN6_SCOPE_ID
-+#ifdef IPV6_RECVPKTINFO
-+ if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &opton,
-+ sizeof(opton)))
-+ err(1, "setsockopt(IPV6_RECVPKTINFO)");
-+#else /* old adv. API */
-+ if (setsockopt(s, IPPROTO_IPV6, IPV6_PKTINFO, &opton,
-+ sizeof(opton)))
-+ err(1, "setsockopt(IPV6_PKTINFO)");
-+#endif
-+#endif /* USE_SIN6_SCOPE_ID */
-+#ifdef IPV6_RECVHOPLIMIT
-+ if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &opton,
-+ sizeof(opton)))
-+ err(1, "setsockopt(IPV6_RECVHOPLIMIT)");
-+#else /* old adv. API */
-+ if (setsockopt(s, IPPROTO_IPV6, IPV6_HOPLIMIT, &opton,
-+ sizeof(opton)))
-+ err(1, "setsockopt(IPV6_HOPLIMIT)");
-+#endif
-+#ifdef IPV6_CHECKSUM
-+#ifndef SOL_RAW
-+#define SOL_RAW IPPROTO_IPV6
-+#endif
-+ opton = 2;
-+ if (setsockopt(s, SOL_RAW, IPV6_CHECKSUM, &opton,
-+ sizeof(opton)))
-+ err(1, "setsockopt(SOL_RAW,IPV6_CHECKSUM)");
-+#endif
- #endif
-
- if( ( uid = getuid() ) )
-@@ -1112,7 +1139,7 @@
- /* but allow time for the last one to come in */
- if( count_flag )
- {
-- if( ( cursor->num_sent >= count ) && ( ht > cursor->timeout ) )
-+ if( ( cursor->num_sent >= count ) && ( cursor->num_recv >= count || ht > cursor->timeout ) )
- {
- remove_job( cursor );
- continue;
-@@ -1382,15 +1409,15 @@
- if( h->num_recv_i <= h->num_sent_i )
- {
- fprintf( stderr, " xmt/rcv/%%loss = %d/%d/%d%%",
-- h->num_sent_i, h->num_recv_i,
-- ( ( h->num_sent_i - h->num_recv_i ) * 100 ) / h->num_sent_i );
-+ h->num_sent_i, h->num_recv_i, h->num_sent_i > 0 ?
-+ ( ( h->num_sent_i - h->num_recv_i ) * 100 ) / h->num_sent_i : 0 );
-
- }/* IF */
- else
- {
- fprintf( stderr, " xmt/rcv/%%return = %d/%d/%d%%",
-- h->num_sent_i, h->num_recv_i,
-- ( ( h->num_recv_i * 100 ) / h->num_sent_i ) );
-+ h->num_sent_i, h->num_recv_i, h->num_sent_i > 0 ?
-+ ( ( h->num_recv_i * 100 ) / h->num_sent_i ) : 0 );
-
- }/* ELSE */
-
-@@ -2165,20 +2192,33 @@
- struct addrinfo *res, hints;
- int ret_ga;
- char *hostname;
-+ size_t len;
-
- /* getaddrinfo */
- bzero(&hints, sizeof(struct addrinfo));
-- hints.ai_flags = AI_CANONNAME;
-+ hints.ai_flags = name_flag ? AI_CANONNAME : 0;
- hints.ai_family = AF_INET6;
- hints.ai_socktype = SOCK_RAW;
- hints.ai_protocol = IPPROTO_ICMPV6;
-
- ret_ga = getaddrinfo(name, NULL, &hints, &res);
-- if (ret_ga) errx(1, "%s", gai_strerror(ret_ga));
-+ if (ret_ga) {
-+ if(!quiet_flag)
-+ warnx("%s", gai_strerror(ret_ga));
-+ num_noaddress++;
-+ return;
-+ }
- if (res->ai_canonname) hostname = res->ai_canonname;
- else hostname = name;
-- if (!res->ai_addr) errx(1, "getaddrinfo failed");
-- (void)memcpy(&dst, res->ai_addr, sizeof(FPING_SOCKADDR)); /*res->ai_addrlen);*/
-+ if (!res->ai_addr) {
-+ if(!quiet_flag)
-+ warnx("getaddrinfo failed");
-+ num_noaddress++;
-+ return;
-+ }
-+ len = res->ai_addrlen;
-+ if (len > sizeof(FPING_SOCKADDR)) len = sizeof(FPING_SOCKADDR);
-+ (void)memcpy(&dst, res->ai_addr, len);
- add_addr(name, name, &dst);
- #endif
- } /* add_name() */
diff --git a/openwrt/package/fprobe-ulog/Config.in b/openwrt/package/fprobe-ulog/Config.in
deleted file mode 100644
index 356b4541df..0000000000
--- a/openwrt/package/fprobe-ulog/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_FPROBE_ULOG
- prompt "fprobe-ulog....................... NetFlow probe (ulog-based)"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPTHREAD
- help
- A NetFlow probe obtaining packets through linux netfilter code
- (iptables ULOG target).
-
- http://fprobe.sourceforge.net/
-
diff --git a/openwrt/package/fprobe-ulog/Makefile b/openwrt/package/fprobe-ulog/Makefile
deleted file mode 100644
index 6ea2493090..0000000000
--- a/openwrt/package/fprobe-ulog/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=fprobe-ulog
-PKG_VERSION:=1.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=cdb2e4edc47e8a3d5479eeabfb979ebc
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=@SF/fprobe
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=bzcat
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,FPROBE_ULOG,fprobe-ulog,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR) ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --datadir=/usr/share \
- --infodir=/usr/share/info \
- --mandir=/usr/share/man \
- --localstatedir=/var \
- --sysconfdir=/etc \
- --with-piddir=/var \
- --with-membulk=index8 \
- --with-hash=xor8 \
- $(DISABLE_NLS) \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)
- touch $@
-
-$(IPKG_FPROBE_ULOG):
- mkdir -p $(IDIR_FPROBE_ULOG)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/src/fprobe-ulog $(IDIR_FPROBE_ULOG)/usr/bin/
- $(RSTRIP) $(IDIR_FPROBE_ULOG)
- $(IPKG_BUILD) $(IDIR_FPROBE_ULOG) $(PACKAGE_DIR)
diff --git a/openwrt/package/fprobe-ulog/ipkg/fprobe-ulog.control b/openwrt/package/fprobe-ulog/ipkg/fprobe-ulog.control
deleted file mode 100644
index ac1b35ed8d..0000000000
--- a/openwrt/package/fprobe-ulog/ipkg/fprobe-ulog.control
+++ /dev/null
@@ -1,8 +0,0 @@
-Package: fprobe-ulog
-Priority: optional
-Section: net
-Depends: libpthread
-Description: NetFlow probe
- networking tool obtaining packets through linux netfilter code
- (iptables ULOG target) and emit it as NetFlow flows towards the
- specified collector
diff --git a/openwrt/package/fprobe/Config.in b/openwrt/package/fprobe/Config.in
deleted file mode 100644
index 794c7e985a..0000000000
--- a/openwrt/package/fprobe/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_FPROBE
- prompt "fprobe............................ NetFlow probe (libpcap-based)"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPTHREAD
- help
- A NetFlow probe using libpcap
-
- http://fprobe.sourceforge.net/
-
diff --git a/openwrt/package/fprobe/Makefile b/openwrt/package/fprobe/Makefile
deleted file mode 100644
index fed7e3b540..0000000000
--- a/openwrt/package/fprobe/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME := fprobe
-PKG_VERSION := 1.1
-PKG_RELEASE := 1
-PKG_MD5SUM := 65850d0470078269b33eee58cba77ac2
-
-PKG_SOURCE := $(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL := @SF/fprobe
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT := bzcat
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,FPROBE,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR) ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --datadir=/usr/share \
- --infodir=/usr/share/info \
- --mandir=/usr/share/man \
- --localstatedir=/var \
- --sysconfdir=/etc \
- --with-piddir=/var \
- --with-pcap=$(STAGING_DIR)/usr/include \
- --with-libpcap=$(STAGING_DIR)/usr/lib \
- --with-membulk=index8 \
- --with-hash=xor8 \
- $(DISABLE_NLS) \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)
- touch $@
-
-$(IPKG_FPROBE):
- mkdir -p $(IDIR_FPROBE)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/src/fprobe $(IDIR_FPROBE)/usr/bin/
- $(STRIP) $(IDIR_FPROBE)/usr/bin/*
- $(IPKG_BUILD) $(IDIR_FPROBE) $(PACKAGE_DIR)
diff --git a/openwrt/package/fprobe/ipkg/fprobe.control b/openwrt/package/fprobe/ipkg/fprobe.control
deleted file mode 100644
index 97763667c9..0000000000
--- a/openwrt/package/fprobe/ipkg/fprobe.control
+++ /dev/null
@@ -1,7 +0,0 @@
-Package: fprobe
-Priority: optional
-Section: net
-Depends: libpcap, libpthread
-Description: NetFlow probe
- libpcap-based tool that collect network traffic data
- and emit it as NetFlow flows towards the specified collector
diff --git a/openwrt/package/freeradius/Config.in b/openwrt/package/freeradius/Config.in
deleted file mode 100644
index 6756652d0e..0000000000
--- a/openwrt/package/freeradius/Config.in
+++ /dev/null
@@ -1,152 +0,0 @@
-menu "freeradius........................ A Flexible RADIUS server implementation"
-
-config BR2_PACKAGE_FREERADIUS
- prompt "freeradius........................ Flexible RADIUS server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBLTDL
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_LIBPTHREAD
- help
- A flexible RADIUS server
-
- http://www.freeradius.org/
-
- Depends:
- - libltdl
- - libopenssl
- - libpthread
- - libmysqlclient (for MySQL support)
- - libopenldap (for LDAP support)
- - libpq (for PostgreSQL support)
-
-config BR2_PACKAGE_FREERADIUS_DEMOCERTS
- prompt "freeradius-democerts............ Demo certificates to test the server"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS
-
-config BR2_PACKAGE_FREERADIUS_MOD_CHAP
- prompt "freeradius-mod-chap............. CHAP module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS
-
-config BR2_PACKAGE_FREERADIUS_MOD_DETAIL
- prompt "freeradius-mod-detail........... Detailed accounting module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS
-
-config BR2_PACKAGE_FREERADIUS_MOD_EAP
- prompt "freeradius-mod-eap.............. Base EAP module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS
-
-config BR2_PACKAGE_FREERADIUS_MOD_EAP_GTC
- prompt "freeradius-mod-eap-gtc........ EAP/GTC module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS_MOD_EAP
-
-config BR2_PACKAGE_FREERADIUS_MOD_EAP_MD5
- prompt "freeradius-mod-eap-md5........ EAP/MD5 module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS_MOD_EAP
-
-config BR2_PACKAGE_FREERADIUS_MOD_EAP_MSCHAPV2
- prompt "freeradius-mod-eap-mschapv2... EAP/MS-CHAPv2 module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS_MOD_EAP
-
-config BR2_PACKAGE_FREERADIUS_MOD_EAP_PEAP
- prompt "freeradius-mod-eap-peap....... EAP/PEAP module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS_MOD_EAP
-
-config BR2_PACKAGE_FREERADIUS_MOD_EAP_TLS
- prompt "freeradius-mod-eap-tls........ EAP/TLS module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS_MOD_EAP
-
-config BR2_PACKAGE_FREERADIUS_MOD_EAP_TTLS
- prompt "freeradius-mod-eap-ttls..... EAP/TTLS module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS_MOD_EAP_TLS
-
-config BR2_PACKAGE_FREERADIUS_MOD_FILES
- prompt "freeradius-mod-files............ Module using local files for authorization"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS
-
-config BR2_PACKAGE_FREERADIUS_MOD_LDAP
- prompt "freeradius-mod-ldap............. LDAP module"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBOPENLDAP
- depends BR2_PACKAGE_FREERADIUS
-
-config BR2_PACKAGE_FREERADIUS_MOD_MSCHAP
- prompt "freeradius-mod-mschap........... MS-CHAP and MS-CHAPv2 module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS
-
-config BR2_PACKAGE_FREERADIUS_MOD_PAP
- prompt "freeradius-mod-pap.............. PAP module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS
-
-config BR2_PACKAGE_FREERADIUS_MOD_PREPROCESS
- prompt "freeradius-mod-preprocess....... Request pre-processing module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS
-
-config BR2_PACKAGE_FREERADIUS_MOD_REALM
- prompt "freeradius-mod-realm............ Realms handling module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS
-
-config BR2_PACKAGE_FREERADIUS_MOD_SQL
- prompt "freeradius-mod-sql.............. Base SQL module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS
-
-config BR2_PACKAGE_FREERADIUS_MOD_SQL_MYSQL
- prompt "freeradius-mod-sql-mysql...... MySQL module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS_MOD_SQL
- select BR2_PACKAGE_LIBMYSQLCLIENT
-
-config BR2_PACKAGE_FREERADIUS_MOD_SQL_PGSQL
- prompt "freeradius-mod-sql-pgsql...... PostgreSQL module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS_MOD_SQL
- select BR2_PACKAGE_LIBPQ
-
-config BR2_PACKAGE_FREERADIUS_MOD_SQLCOUNTER
- prompt "freeradius-mod-sqlcounter..... Generic SQL Counter module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS_MOD_SQL
-
-config BR2_PACKAGE_FREERADIUS_UTILS
- prompt "freeradius-utils................ Misc. client utilities"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_FREERADIUS
-
-endmenu
diff --git a/openwrt/package/freeradius/Makefile b/openwrt/package/freeradius/Makefile
deleted file mode 100644
index ea44b83fbb..0000000000
--- a/openwrt/package/freeradius/Makefile
+++ /dev/null
@@ -1,231 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=freeradius
-PKG_VERSION:=1.1.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=b38b24f6352090fdb571b9e8da52e12e
-
-PKG_SOURCE_URL:=ftp://ftp.freeradius.org/pub/radius/ \
- http://freeradius.portal-to-web.de/ \
- ftp://ftp.uk.freeradius.org/pub/radius/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-PKG_CONFIGURE_OPTIONS := \
- --enable-shared \
- --disable-static \
- --disable-ltdl-install \
- --with-ltdl-include="$(STAGING_DIR)/usr/include" \
- --with-ltdl-lib="$(STAGING_DIR)/usr/lib" \
- --with-openssl-includes="$(STAGING_DIR)/usr/include" \
- --with-openssl-libraries="$(STAGING_DIR)/usr/lib" \
- --enable-strict-dependencies \
- --with-raddbdir=/etc/freeradius \
- --without-edir \
- --without-snmp \
- --with-experimental-modules \
- --without-rlm_attr-rewrite \
- --without-rlm_checkval \
- --without-rlm_counter \
- --without-rlm_dbm \
- --with-rlm_eap \
- --without-rlm_eap_sim \
- --without-rlm_example \
- --without-rlm_ippool \
- --without-rlm_krb5 \
- --without-rlm_otp \
- --without-rlm_pam \
- --without-rlm_perl \
- --without-rlm_python \
- --without-rlm_radutmp \
- --without-rlm_smb \
- --with-rlm_sql \
- --with-rlm_sqlcounter \
- --without-rlm_sql_db2 \
- --without-rlm_sql_freetds \
- --without-rlm_sql_iodbc \
- --without-rlm_sql_oracle \
- --without-rlm_sql_sybase \
- --without-rlm_sql_unixodbc \
- --without-rlm_sql_log \
- --without-rlm_unix \
-
-ifneq ($(BR2_PACKAGE_FREERADIUS_MOD_LDAP),)
-PKG_CONFIGURE_LIBS += -lcrypto -lssl
-PKG_CONFIGURE_OPTIONS += \
- --with-rlm_ldap-include-dir="$(STAGING_DIR)/usr/include" \
- --with-rlm_ldap-lib-dir="$(STAGING_DIR)/usr/lib"
-else
-PKG_CONFIGURE_OPTIONS += --without-rlm_ldap
-endif
-ifneq ($(BR2_PACKAGE_FREERADIUS_MOD_SQL_MYSQL),)
-PKG_CONFIGURE_LIBS += -lz
-PKG_CONFIGURE_OPTIONS += \
- --with-mysql-include-dir="$(STAGING_DIR)/usr/include" \
- --with-mysql-lib-dir="$(STAGING_DIR)/usr/lib/mysql" \
- --without-threads
-else
-PKG_CONFIGURE_OPTIONS += --without-rlm_sql_mysql
-endif
-ifneq ($(BR2_PACKAGE_FREERADIUS_MOD_SQL_PGSQL),)
-PKG_CONFIGURE_OPTIONS += \
- --with-rlm_sql_postgresql-include-dir="$(STAGING_DIR)/usr/include" \
- --with-rlm_sql_postgresql-lib-dir="$(STAGING_DIR)/usr/lib"
-else
-PKG_CONFIGURE_OPTIONS += --without-rlm_sql_postgresql
-endif
-
-include $(TOPDIR)/package/rules.mk
-
-define PKG_mod_template
-
-$$(IPKG_$(1)):
- [ -z "$(2)" ] || install -d -m0755 $$(IDIR_$(1))/usr/lib/freeradius
- for m in $(2); do \
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/freeradius/$$$${m}{,-*}.so \
- $$(IDIR_$(1))/usr/lib/freeradius/ ; \
- done
- [ -z "$(3)" ] || install -d -m0755 $$(IDIR_$(1))/etc/freeradius
- for f in $(3); do \
- $(CP) $(PKG_INSTALL_DIR)/etc/freeradius/$$$${f} \
- $$(IDIR_$(1))/etc/freeradius/ ; \
- done
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-$(eval $(call PKG_template,FREERADIUS,freeradius,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_DEMOCERTS,freeradius-democerts,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_CHAP,freeradius-mod-chap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_DETAIL,freeradius-mod-detail,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_EAP,freeradius-mod-eap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_EAP_GTC,freeradius-mod-eap-gtc,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_EAP_MD5,freeradius-mod-eap-md5,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_EAP_MSCHAPV2,freeradius-mod-eap-mschapv2,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_EAP_PEAP,freeradius-mod-eap-peap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_EAP_TLS,freeradius-mod-eap-tls,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_EAP_TTLS,freeradius-mod-eap-ttls,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_FILES,freeradius-mod-files,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_LDAP,freeradius-mod-ldap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_MSCHAP,freeradius-mod-mschap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_PAP,freeradius-mod-pap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_PREPROCESS,freeradius-mod-preprocess,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_REALM,freeradius-mod-realm,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_SQL,freeradius-mod-sql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_SQL_MYSQL,freeradius-mod-sql-mysql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_SQL_PGSQL,freeradius-mod-sql-pgsql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_MOD_SQLCOUNTER,freeradius-mod-sqlcounter,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FREERADIUS_UTILS,freeradius-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_CHAP,rlm_chap,))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_DETAIL,rlm_detail,))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_EAP,libeap rlm_eap,eap.conf))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_EAP_GTC,rlm_eap_gtc,))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_EAP_MD5,rlm_eap_md5,))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_EAP_MSCHAPV2,rlm_eap_mschapv2,))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_EAP_PEAP,rlm_eap_peap,))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_EAP_TLS,rlm_eap_tls,))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_EAP_TTLS,rlm_eap_ttls,))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_FILES,rlm_files,acct_users preproxy_users users))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_LDAP,rlm_ldap,ldap.attrmap))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_MSCHAP,rlm_mschap,))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_PAP,rlm_pap,))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_PREPROCESS,rlm_preprocess,hints huntgroups))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_REALM,rlm_realm,proxy.conf))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_SQL,rlm_sql,sql.conf))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_SQL_MYSQL,rlm_sql_mysql,))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_SQL_PGSQL,rlm_sql_postgresql,))
-$(eval $(call PKG_mod_template,FREERADIUS_MOD_SQLCOUNTER,rlm_sqlcounter,))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib -L$(PKG_INSTALL_DIR)/usr/lib/freeradius" \
- LIBS="$(PKG_CONFIGURE_LIBS)" \
- sys_lib_search_path_spec="$(STAGING_DIR)/usr/lib $(STAGING_DIR)/lib" \
- MYSQL_CONFIG="no" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib/freeradius \
- --libexecdir=/usr/lib/freeradius \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- $(PKG_CONFIGURE_OPTIONS) \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- R="$(PKG_INSTALL_DIR)" \
- INSTALLSTRIP="" \
- all install
- touch $@
-
-$(IPKG_FREERADIUS):
- install -m0755 -d $(IDIR_FREERADIUS)/etc/init.d
- install -m0755 ./files/radiusd.init $(IDIR_FREERADIUS)/etc/init.d/radiusd
- install -m0755 -d $(IDIR_FREERADIUS)/etc/freeradius
- for f in clients.conf dictionary radiusd.conf; do \
- $(CP) $(PKG_INSTALL_DIR)/etc/freeradius/$${f} \
- $(IDIR_FREERADIUS)/etc/freeradius/ ; \
- done
- install -m0755 -d $(IDIR_FREERADIUS)/usr/share/freeradius
- $(CP) $(PKG_INSTALL_DIR)/usr/share/freeradius/dictionary \
- $(IDIR_FREERADIUS)/usr/share/freeradius/
- for f in freeradius freeradius.internal rfc2865 rfc2866 rfc2867 rfc2868 rfc2869 rfc3162 rfc3576 rfc3580 microsoft wispr; do \
- $(CP) $(PKG_INSTALL_DIR)/usr/share/freeradius/dictionary.$${f} \
- $(IDIR_FREERADIUS)/usr/share/freeradius/ ; \
- done
- install -m0755 -d $(IDIR_FREERADIUS)/usr/lib/freeradius
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/freeradius/libradius{,-*}.so \
- $(IDIR_FREERADIUS)/usr/lib/freeradius/
- install -m0755 -d $(IDIR_FREERADIUS)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/radiusd \
- $(IDIR_FREERADIUS)/usr/sbin/
- $(RSTRIP) $(IDIR_FREERADIUS)
- $(IPKG_BUILD) $(IDIR_FREERADIUS) $(PACKAGE_DIR)
-
-$(IPKG_FREERADIUS_DEMOCERTS):
- install -m0755 -d $(IDIR_FREERADIUS_DEMOCERTS)/etc/freeradius
- $(CP) $(PKG_INSTALL_DIR)/etc/freeradius/certs \
- $(IDIR_FREERADIUS_DEMOCERTS)/etc/freeradius/
- rm -rf $(IDIR_FREERADIUS_DEMOCERTS)/etc/freeradius/certs/README
- rm -rf $(IDIR_FREERADIUS_DEMOCERTS)/etc/freeradius/certs/new*
- rm -rf $(IDIR_FREERADIUS_DEMOCERTS)/etc/freeradius/certs/demoCA/index*
- rm -rf $(IDIR_FREERADIUS_DEMOCERTS)/etc/freeradius/certs/demoCA/serial*
- $(RSTRIP) $(IDIR_FREERADIUS_DEMOCERTS)
- $(IPKG_BUILD) $(IDIR_FREERADIUS_DEMOCERTS) $(PACKAGE_DIR)
-
-$(IPKG_FREERADIUS_UTILS):
- install -m0755 -d $(IDIR_FREERADIUS_UTILS)/usr/bin
- for f in radclient; do \
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/$${f} \
- $(IDIR_FREERADIUS_UTILS)/usr/bin/ ; \
- done
- $(RSTRIP) $(IDIR_FREERADIUS_UTILS)
- $(IPKG_BUILD) $(IDIR_FREERADIUS_UTILS) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/freeradius/files/radiusd.init b/openwrt/package/freeradius/files/radiusd.init
deleted file mode 100644
index 3ec16896ac..0000000000
--- a/openwrt/package/freeradius/files/radiusd.init
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/radiusd
-LOG_D=/var/log/radius
-RUN_D=/var/run
-PID_F=$RUN_D/radiusd.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- [ -d $LOG_D ] || mkdir -p $LOG_D
- [ -d $RUN_D ] || mkdir -p $RUN_D
- radiusd $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/freeradius/ipkg/freeradius-democerts.control b/openwrt/package/freeradius/ipkg/freeradius-democerts.control
deleted file mode 100644
index c77c62a7a9..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-democerts.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-democerts
-Priority: optional
-Section: net
-Description: a set of certificates to test FreeRADIUS
-Depends: freeradius
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-chap.control b/openwrt/package/freeradius/ipkg/freeradius-mod-chap.control
deleted file mode 100644
index 36f9453457..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-chap.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-chap
-Priority: optional
-Section: net
-Description: a CHAP module for FreeRADIUS
-Depends: freeradius
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-detail.control b/openwrt/package/freeradius/ipkg/freeradius-mod-detail.control
deleted file mode 100644
index 8254c0076a..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-detail.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-detail
-Priority: optional
-Section: net
-Description: a detailed accounting module for FreeRADIUS
-Depends: freeradius
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-eap-gtc.control b/openwrt/package/freeradius/ipkg/freeradius-mod-eap-gtc.control
deleted file mode 100644
index 16fd01a4bf..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-eap-gtc.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-eap-gtc
-Priority: optional
-Section: net
-Description: an EAP/GTC module for FreeRADIUS
-Depends: freeradius, freeradius-mod-eap
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-eap-md5.control b/openwrt/package/freeradius/ipkg/freeradius-mod-eap-md5.control
deleted file mode 100644
index 7c060b4655..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-eap-md5.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-eap-md5
-Priority: optional
-Section: net
-Description: an EAP/MD5 module for FreeRADIUS
-Depends: freeradius, freeradius-mod-eap
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-eap-mschapv2.control b/openwrt/package/freeradius/ipkg/freeradius-mod-eap-mschapv2.control
deleted file mode 100644
index b4e23f4836..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-eap-mschapv2.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-eap-mschapv2
-Priority: optional
-Section: net
-Description: an EAP/MS-CHAPv2 module for FreeRADIUS
-Depends: freeradius, freeradius-mod-eap
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-eap-peap.control b/openwrt/package/freeradius/ipkg/freeradius-mod-eap-peap.control
deleted file mode 100644
index cfd8aec7e8..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-eap-peap.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-eap-peap
-Priority: optional
-Section: net
-Description: an EAP/PEAP module for FreeRADIUS
-Depends: freeradius, freeradius-mod-eap, freeradius-mod-eap-tls
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-eap-tls.control b/openwrt/package/freeradius/ipkg/freeradius-mod-eap-tls.control
deleted file mode 100644
index 3f09ceb907..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-eap-tls.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-eap-tls
-Priority: optional
-Section: net
-Description: an EAP/TLS module for FreeRADIUS
-Depends: freeradius, freeradius-mod-eap
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-eap-ttls.control b/openwrt/package/freeradius/ipkg/freeradius-mod-eap-ttls.control
deleted file mode 100644
index 84be74c4ed..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-eap-ttls.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-eap-ttls
-Priority: optional
-Section: net
-Description: an EAP/TTLS module for FreeRADIUS
-Depends: freeradius, freeradius-mod-eap, freeradius-mod-eap-tls
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-eap.conffiles b/openwrt/package/freeradius/ipkg/freeradius-mod-eap.conffiles
deleted file mode 100644
index 7e0e30e738..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-eap.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/freeradius/eap.conf
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-eap.control b/openwrt/package/freeradius/ipkg/freeradius-mod-eap.control
deleted file mode 100644
index f01a045e7d..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-eap.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-eap
-Priority: optional
-Section: net
-Description: an EAP module for FreeRADIUS
-Depends: freeradius
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-files.conffiles b/openwrt/package/freeradius/ipkg/freeradius-mod-files.conffiles
deleted file mode 100644
index 4fcd92bffa..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-files.conffiles
+++ /dev/null
@@ -1,3 +0,0 @@
-/etc/freeradius/acct_users
-/etc/freeradius/preproxy_users
-/etc/freeradius/users
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-files.control b/openwrt/package/freeradius/ipkg/freeradius-mod-files.control
deleted file mode 100644
index 5126aa13c8..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-files.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-files
-Priority: optional
-Section: net
-Description: a module for FreeRADIUS, using local files for authorization
-Depends: freeradius
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-ldap.conffiles b/openwrt/package/freeradius/ipkg/freeradius-mod-ldap.conffiles
deleted file mode 100644
index ada9fafc1b..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-ldap.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/freeradius/ldap.attrmap
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-ldap.control b/openwrt/package/freeradius/ipkg/freeradius-mod-ldap.control
deleted file mode 100644
index 7649e6ec96..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-ldap.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-ldap
-Priority: optional
-Section: net
-Description: an LDAP module for FreeRADIUS
-Depends: freeradius, libopenldap, libopenssl, libsasl2
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-mschap.control b/openwrt/package/freeradius/ipkg/freeradius-mod-mschap.control
deleted file mode 100644
index 69edfd6f2f..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-mschap.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-mschap
-Priority: optional
-Section: net
-Description: an MS-CHAP and MS-CHAPv2 module for FreeRADIUS
-Depends: freeradius
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-pap.control b/openwrt/package/freeradius/ipkg/freeradius-mod-pap.control
deleted file mode 100644
index e094b6a7c3..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-pap.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-pap
-Priority: optional
-Section: net
-Description: a PAP module for FreeRADIUS
-Depends: freeradius
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-preprocess.conffiles b/openwrt/package/freeradius/ipkg/freeradius-mod-preprocess.conffiles
deleted file mode 100644
index b29cca816b..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-preprocess.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/freeradius/hints
-/etc/freeradius/huntgroups
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-preprocess.control b/openwrt/package/freeradius/ipkg/freeradius-mod-preprocess.control
deleted file mode 100644
index 7adc171a4a..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-preprocess.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-preprocess
-Priority: optional
-Section: net
-Description: a request preprocessing module for FreeRADIUS
-Depends: freeradius
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-realm.conffiles b/openwrt/package/freeradius/ipkg/freeradius-mod-realm.conffiles
deleted file mode 100644
index a4d4126122..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-realm.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/freeradius/proxy.conf
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-realm.control b/openwrt/package/freeradius/ipkg/freeradius-mod-realm.control
deleted file mode 100644
index 3f84e3621a..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-realm.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-realm
-Priority: optional
-Section: net
-Description: a realm module for FreeRADIUS
-Depends: freeradius
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-sql-mysql.control b/openwrt/package/freeradius/ipkg/freeradius-mod-sql-mysql.control
deleted file mode 100644
index 532cbd0e6c..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-sql-mysql.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-sql-mysql
-Priority: optional
-Section: net
-Description: a MySQL module for FreeRADIUS
-Depends: freeradius, freeradius-mod-sql, libmysqlclient
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-sql-pgsql.control b/openwrt/package/freeradius/ipkg/freeradius-mod-sql-pgsql.control
deleted file mode 100644
index 31e3080453..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-sql-pgsql.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-sql-pgsql
-Priority: optional
-Section: net
-Description: a PostgreSQL module for FreeRADIUS
-Depends: freeradius, freeradius-mod-sql, libpq
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-sql.conffiles b/openwrt/package/freeradius/ipkg/freeradius-mod-sql.conffiles
deleted file mode 100644
index 8ab119d075..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-sql.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/freeradius/sql.conf
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-sql.control b/openwrt/package/freeradius/ipkg/freeradius-mod-sql.control
deleted file mode 100644
index e4040acb87..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-sql.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-sql
-Priority: optional
-Section: net
-Description: an SQL module for FreeRADIUS
-Depends: freeradius
diff --git a/openwrt/package/freeradius/ipkg/freeradius-mod-sqlcounter.control b/openwrt/package/freeradius/ipkg/freeradius-mod-sqlcounter.control
deleted file mode 100644
index 456de03459..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-mod-sqlcounter.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-mod-sqlcounter
-Priority: optional
-Section: net
-Description: a Generic SQL Counter module for FreeRADIUS
-Depends: freeradius, freeradius-mod-sql
diff --git a/openwrt/package/freeradius/ipkg/freeradius-utils.control b/openwrt/package/freeradius/ipkg/freeradius-utils.control
deleted file mode 100644
index b29c94dd3f..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius-utils
-Priority: optional
-Section: net
-Description: some client utilities for FreeRADIUS
-Depends: freeradius
diff --git a/openwrt/package/freeradius/ipkg/freeradius.conffiles b/openwrt/package/freeradius/ipkg/freeradius.conffiles
deleted file mode 100644
index fac31e76ca..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius.conffiles
+++ /dev/null
@@ -1,3 +0,0 @@
-/etc/freeradius/clients.conf
-/etc/freeradius/radiusd.conf
-
diff --git a/openwrt/package/freeradius/ipkg/freeradius.control b/openwrt/package/freeradius/ipkg/freeradius.control
deleted file mode 100644
index 329d329b14..0000000000
--- a/openwrt/package/freeradius/ipkg/freeradius.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: freeradius
-Priority: optional
-Section: net
-Description: a flexible RADIUS server
-Depends: libltdl, libopenssl, libpthread
diff --git a/openwrt/package/freeradius/patches/01-freeradius-1.1.1-dict.patch b/openwrt/package/freeradius/patches/01-freeradius-1.1.1-dict.patch
deleted file mode 100644
index b80d19dfe9..0000000000
--- a/openwrt/package/freeradius/patches/01-freeradius-1.1.1-dict.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-diff -ruN freeradius-1.1.1-old/share/dictionary freeradius-1.1.1-new/share/dictionary
---- freeradius-1.1.1-old/share/dictionary 2006-03-16 23:03:11.000000000 +0100
-+++ freeradius-1.1.1-new/share/dictionary 2006-05-22 09:09:08.000000000 +0200
-@@ -52,7 +52,7 @@
- # this directive to the end of this file if you want to see the
- # old names in the logfiles, INSTEAD OF the new names.
- #
--$INCLUDE dictionary.compat
-+#$INCLUDE dictionary.compat
-
- #
- # Include the RFC dictionaries next.
-@@ -73,75 +73,75 @@
- #
- # Include vendor dictionaries after the standard ones.
- #
--$INCLUDE dictionary.3com
--$INCLUDE dictionary.3gpp
--$INCLUDE dictionary.3gpp2
--$INCLUDE dictionary.acc
--$INCLUDE dictionary.airespace
--$INCLUDE dictionary.alcatel
--$INCLUDE dictionary.alteon
--$INCLUDE dictionary.aruba
--$INCLUDE dictionary.ascend
--$INCLUDE dictionary.bay
--$INCLUDE dictionary.bintec
--$INCLUDE dictionary.cablelabs
--$INCLUDE dictionary.cabletron
--$INCLUDE dictionary.cisco
-+#$INCLUDE dictionary.3com
-+#$INCLUDE dictionary.3gpp
-+#$INCLUDE dictionary.3gpp2
-+#$INCLUDE dictionary.acc
-+#$INCLUDE dictionary.airespace
-+#$INCLUDE dictionary.alcatel
-+#$INCLUDE dictionary.alteon
-+#$INCLUDE dictionary.aruba
-+#$INCLUDE dictionary.ascend
-+#$INCLUDE dictionary.bay
-+#$INCLUDE dictionary.bintec
-+#$INCLUDE dictionary.cablelabs
-+#$INCLUDE dictionary.cabletron
-+#$INCLUDE dictionary.cisco
- #
- # The Cisco VPN300 dictionary is the same as the altiga one.
- # You shouldn't use both at the same time.
- #
- #$INCLUDE dictionary.cisco.vpn3000
--$INCLUDE dictionary.cisco.vpn5000
--$INCLUDE dictionary.cisco.bbsm
--$INCLUDE dictionary.colubris
--$INCLUDE dictionary.cosine
--$INCLUDE dictionary.epygi
--$INCLUDE dictionary.erx
--$INCLUDE dictionary.ericsson
--$INCLUDE dictionary.extreme
-+#$INCLUDE dictionary.cisco.vpn5000
-+#$INCLUDE dictionary.cisco.bbsm
-+#$INCLUDE dictionary.colubris
-+#$INCLUDE dictionary.cosine
-+#$INCLUDE dictionary.epygi
-+#$INCLUDE dictionary.erx
-+#$INCLUDE dictionary.ericsson
-+#$INCLUDE dictionary.extreme
- $INCLUDE dictionary.freeradius
--$INCLUDE dictionary.fortinet
--$INCLUDE dictionary.foundry
--$INCLUDE dictionary.gandalf
--$INCLUDE dictionary.gemtek
--$INCLUDE dictionary.issanni
--$INCLUDE dictionary.itk
--$INCLUDE dictionary.ipunplugged
--$INCLUDE dictionary.juniper
--$INCLUDE dictionary.karlnet
--$INCLUDE dictionary.livingston
--$INCLUDE dictionary.localweb
--$INCLUDE dictionary.lucent
--$INCLUDE dictionary.hp
-+#$INCLUDE dictionary.fortinet
-+#$INCLUDE dictionary.foundry
-+#$INCLUDE dictionary.gandalf
-+#$INCLUDE dictionary.gemtek
-+#$INCLUDE dictionary.issanni
-+#$INCLUDE dictionary.itk
-+#$INCLUDE dictionary.ipunplugged
-+#$INCLUDE dictionary.juniper
-+#$INCLUDE dictionary.karlnet
-+#$INCLUDE dictionary.livingston
-+#$INCLUDE dictionary.localweb
-+#$INCLUDE dictionary.lucent
-+#$INCLUDE dictionary.hp
- $INCLUDE dictionary.microsoft
--$INCLUDE dictionary.mikrotik
--$INCLUDE dictionary.navini
--$INCLUDE dictionary.netscreen
--$INCLUDE dictionary.ntua
--$INCLUDE dictionary.nomadix
--$INCLUDE dictionary.nortel
--$INCLUDE dictionary.packeteer
--$INCLUDE dictionary.propel
--$INCLUDE dictionary.quintum
--$INCLUDE dictionary.redback
--$INCLUDE dictionary.redcreek
--$INCLUDE dictionary.roaringpenguin
--$INCLUDE dictionary.shasta
--$INCLUDE dictionary.shiva
--$INCLUDE dictionary.sonicwall
--$INCLUDE dictionary.springtide
--$INCLUDE dictionary.starent
--$INCLUDE dictionary.telebit
--$INCLUDE dictionary.trapeze
--$INCLUDE dictionary.t_systems_nova
--$INCLUDE dictionary.usr
--$INCLUDE dictionary.valemount
--$INCLUDE dictionary.versanet
--$INCLUDE dictionary.waverider
-+#$INCLUDE dictionary.mikrotik
-+#$INCLUDE dictionary.navini
-+#$INCLUDE dictionary.netscreen
-+#$INCLUDE dictionary.ntua
-+#$INCLUDE dictionary.nomadix
-+#$INCLUDE dictionary.nortel
-+#$INCLUDE dictionary.packeteer
-+#$INCLUDE dictionary.propel
-+#$INCLUDE dictionary.quintum
-+#$INCLUDE dictionary.redback
-+#$INCLUDE dictionary.redcreek
-+#$INCLUDE dictionary.roaringpenguin
-+#$INCLUDE dictionary.shasta
-+#$INCLUDE dictionary.shiva
-+#$INCLUDE dictionary.sonicwall
-+#$INCLUDE dictionary.springtide
-+#$INCLUDE dictionary.starent
-+#$INCLUDE dictionary.telebit
-+#$INCLUDE dictionary.trapeze
-+#$INCLUDE dictionary.t_systems_nova
-+#$INCLUDE dictionary.usr
-+#$INCLUDE dictionary.valemount
-+#$INCLUDE dictionary.versanet
-+#$INCLUDE dictionary.waverider
- $INCLUDE dictionary.wispr
--$INCLUDE dictionary.xedia
--$INCLUDE dictionary.xylan
-+#$INCLUDE dictionary.xedia
-+#$INCLUDE dictionary.xylan
-
- #
- # And finally the server internal attributes.
diff --git a/openwrt/package/freeradius/patches/02-freeradius-1.1.1-config.patch b/openwrt/package/freeradius/patches/02-freeradius-1.1.1-config.patch
deleted file mode 100644
index 271cf56098..0000000000
--- a/openwrt/package/freeradius/patches/02-freeradius-1.1.1-config.patch
+++ /dev/null
@@ -1,302 +0,0 @@
-diff -ruN freeradius-1.1.1-old/raddb/eap.conf freeradius-1.1.1-new/raddb/eap.conf
---- freeradius-1.1.1-old/raddb/eap.conf 2006-01-04 15:29:29.000000000 +0100
-+++ freeradius-1.1.1-new/raddb/eap.conf 2006-05-22 23:29:11.000000000 +0200
-@@ -73,8 +73,8 @@
- # User-Password, or the NT-Password attributes.
- # 'System' authentication is impossible with LEAP.
- #
-- leap {
-- }
-+# leap {
-+# }
-
- # Generic Token Card.
- #
-@@ -87,7 +87,7 @@
- # the users password will go over the wire in plain-text,
- # for anyone to see.
- #
-- gtc {
-+# gtc {
- # The default challenge, which many clients
- # ignore..
- #challenge = "Password: "
-@@ -104,8 +104,8 @@
- # configured for the request, and do the
- # authentication itself.
- #
-- auth_type = PAP
-- }
-+# auth_type = PAP
-+# }
-
- ## EAP-TLS
- #
-@@ -283,7 +283,7 @@
- # of MS-CHAPv2 in EAP by Cisco, which FreeRADIUS does not
- # currently support.
- #
-- mschapv2 {
-- }
-+# mschapv2 {
-+# }
- }
-
-diff -ruN freeradius-1.1.1-old/raddb/radiusd.conf.in freeradius-1.1.1-new/raddb/radiusd.conf.in
---- freeradius-1.1.1-old/raddb/radiusd.conf.in 2006-02-10 16:12:02.000000000 +0100
-+++ freeradius-1.1.1-new/raddb/radiusd.conf.in 2006-05-22 23:33:53.000000000 +0200
-@@ -31,13 +31,13 @@
-
- # Location of config and logfiles.
- confdir = ${raddbdir}
--run_dir = ${localstatedir}/run/radiusd
-+run_dir = ${localstatedir}/run
-
- #
- # The logging messages for the server are appended to the
- # tail of this file.
- #
--log_file = ${logdir}/radius.log
-+log_file = ${logdir}/radiusd.log
-
- #
- # libdir: Where to find the rlm_* modules.
-@@ -353,7 +353,7 @@
- nospace_pass = no
-
- # The program to execute to do concurrency checks.
--checkrad = ${sbindir}/checkrad
-+#checkrad = ${sbindir}/checkrad
-
- # SECURITY CONFIGURATION
- #
-@@ -425,8 +425,8 @@
- #
- # allowed values: {no, yes}
- #
--proxy_requests = yes
--$INCLUDE ${confdir}/proxy.conf
-+proxy_requests = no
-+#$INCLUDE ${confdir}/proxy.conf
-
-
- # CLIENTS CONFIGURATION
-@@ -454,7 +454,7 @@
- # 'snmp' attribute to 'yes'
- #
- snmp = no
--$INCLUDE ${confdir}/snmp.conf
-+#$INCLUDE ${confdir}/snmp.conf
-
-
- # THREAD POOL CONFIGURATION
-@@ -657,7 +657,7 @@
- # For all EAP related authentications.
- # Now in another file, because it is very large.
- #
--$INCLUDE ${confdir}/eap.conf
-+#$INCLUDE ${confdir}/eap.conf
-
- # Microsoft CHAP authentication
- #
-@@ -1046,8 +1046,8 @@
- #
- files {
- usersfile = ${confdir}/users
-- acctusersfile = ${confdir}/acct_users
-- preproxy_usersfile = ${confdir}/preproxy_users
-+# acctusersfile = ${confdir}/acct_users
-+# preproxy_usersfile = ${confdir}/preproxy_users
-
- # If you want to use the old Cistron 'users' file
- # with FreeRADIUS, you should change the next line
-@@ -1221,7 +1221,7 @@
- # For MS-SQL, use: ${confdir}/mssql.conf
- # For Oracle, use: ${confdir}/oraclesql.conf
- #
-- $INCLUDE ${confdir}/sql.conf
-+# $INCLUDE ${confdir}/sql.conf
-
-
- # For Cisco VoIP specific accounting with Postgresql,
-@@ -1694,7 +1694,7 @@
- # The entire command line (and output) must fit into 253 bytes.
- #
- # e.g. Framed-Pool = `%{exec:/bin/echo foo}`
-- exec
-+# exec
-
- #
- # The expression module doesn't do authorization,
-@@ -1707,7 +1707,7 @@
- # listed in any other section. See 'doc/rlm_expr' for
- # more information.
- #
-- expr
-+# expr
-
- #
- # We add the counter module here so that it registers
-@@ -1734,7 +1734,7 @@
- # 'raddb/huntgroups' files.
- #
- # It also adds the %{Client-IP-Address} attribute to the request.
-- preprocess
-+# preprocess
-
- #
- # If you want to have a log of authentication requests,
-@@ -1747,7 +1747,7 @@
- #
- # The chap module will set 'Auth-Type := CHAP' if we are
- # handling a CHAP request and Auth-Type has not already been set
-- chap
-+# chap
-
- #
- # If the users are logging in with an MS-CHAP-Challenge
-@@ -1775,7 +1775,7 @@
- # Otherwise, when the first style of realm doesn't match,
- # the other styles won't be checked.
- #
-- suffix
-+# suffix
- # ntdomain
-
- #
-@@ -1784,11 +1784,11 @@
- #
- # It also sets the EAP-Type attribute in the request
- # attribute list to the EAP type from the packet.
-- eap
-+# eap
-
- #
- # Read the 'users' file
-- files
-+# files
-
- #
- # Look in an SQL database. The schema of the database
-@@ -1842,24 +1842,24 @@
- # PAP authentication, when a back-end database listed
- # in the 'authorize' section supplies a password. The
- # password can be clear-text, or encrypted.
-- Auth-Type PAP {
-- pap
-- }
-+# Auth-Type PAP {
-+# pap
-+# }
-
- #
- # Most people want CHAP authentication
- # A back-end database listed in the 'authorize' section
- # MUST supply a CLEAR TEXT password. Encrypted passwords
- # won't work.
-- Auth-Type CHAP {
-- chap
-- }
-+# Auth-Type CHAP {
-+# chap
-+# }
-
- #
- # MSCHAP authentication.
-- Auth-Type MS-CHAP {
-- mschap
-- }
-+# Auth-Type MS-CHAP {
-+# mschap
-+# }
-
- #
- # If you have a Cisco SIP server authenticating against
-@@ -1877,7 +1877,7 @@
- # containing CHAP-Password attributes CANNOT be authenticated
- # against /etc/passwd! See the FAQ for details.
- #
-- unix
-+# unix
-
- # Uncomment it if you want to use ldap for authentication
- #
-@@ -1890,7 +1890,7 @@
-
- #
- # Allow EAP authentication.
-- eap
-+# eap
- }
-
-
-@@ -1898,12 +1898,12 @@
- # Pre-accounting. Decide which accounting type to use.
- #
- preacct {
-- preprocess
-+# preprocess
-
- #
- # Ensure that we have a semi-unique identifier for every
- # request, and many NAS boxes are broken.
-- acct_unique
-+# acct_unique
-
- #
- # Look for IPASS-style 'realm/', and if not found, look for
-@@ -1913,12 +1913,12 @@
- # Accounting requests are generally proxied to the same
- # home server as authentication requests.
- # IPASS
-- suffix
-+# suffix
- # ntdomain
-
- #
- # Read the 'acct_users' file
-- files
-+# files
- }
-
- #
-@@ -1929,20 +1929,20 @@
- # Create a 'detail'ed log of the packets.
- # Note that accounting requests which are proxied
- # are also logged in the detail file.
-- detail
-+# detail
- # daily
-
- # Update the wtmp file
- #
- # If you don't use "radlast", you can delete this line.
-- unix
-+# unix
-
- #
- # For Simultaneous-Use tracking.
- #
- # Due to packet losses in the network, the data here
- # may be incorrect. There is little we can do about it.
-- radutmp
-+# radutmp
- # sradutmp
-
- # Return an address to the IP Pool when we see a stop record.
-@@ -1970,7 +1970,7 @@
- # or rlm_sql module can handle this.
- # The rlm_sql module is *much* faster
- session {
-- radutmp
-+# radutmp
-
- #
- # See "Simultaneous Use Checking Querie" in sql.conf
-@@ -2073,5 +2073,5 @@
- # hidden inside of the EAP packet, and the end server will
- # reject the EAP request.
- #
-- eap
-+# eap
- }
diff --git a/openwrt/package/freeradius/patches/03-freeradius-1.1.1-configure_cross.patch b/openwrt/package/freeradius/patches/03-freeradius-1.1.1-configure_cross.patch
deleted file mode 100644
index b561757d31..0000000000
--- a/openwrt/package/freeradius/patches/03-freeradius-1.1.1-configure_cross.patch
+++ /dev/null
@@ -1,1694 +0,0 @@
-diff -ruN freeradius-1.1.1-old/aclocal.m4 freeradius-1.1.1-new/aclocal.m4
---- freeradius-1.1.1-old/aclocal.m4 2006-02-06 13:52:10.000000000 +0100
-+++ freeradius-1.1.1-new/aclocal.m4 2006-05-21 19:27:12.000000000 +0200
-@@ -1931,7 +1931,23 @@
- version_type=none
- dynamic_linker="$host_os ld.so"
- sys_lib_dlsearch_path_spec="/lib /usr/lib"
--sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+if test "$cross_compiling" = yes; then
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries: *=*//"`
-+ if echo "$sys_lib_search_path_spec" | egrep ';' >/dev/null ; then
-+ # if the path contains ";" then we assume it to be the separator
-+ # otherwise default to the standard path separator (i.e. ":") - it is
-+ # assumed that no part of a normal pathname contains ";" but that should
-+ # okay in the real world where ";" in dirpaths is itself problematic.
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | sed -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | sed -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+else
-+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+fi
-+if test "x$lt_sys_lib_search_path_spec" != "x"; then
-+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_sys_lib_search_path_spec"
-+fi
-
- case $host_os in
- aix3*)
-diff -ruN freeradius-1.1.1-old/configure freeradius-1.1.1-new/configure
---- freeradius-1.1.1-old/configure 2006-02-06 13:55:53.000000000 +0100
-+++ freeradius-1.1.1-new/configure 2006-05-21 19:31:52.000000000 +0200
-@@ -4024,7 +4024,23 @@
- version_type=none
- dynamic_linker="$host_os ld.so"
- sys_lib_dlsearch_path_spec="/lib /usr/lib"
--sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+if test "$cross_compiling" = yes; then
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries: *=*//"`
-+ if echo "$sys_lib_search_path_spec" | egrep ';' >/dev/null ; then
-+ # if the path contains ";" then we assume it to be the separator
-+ # otherwise default to the standard path separator (i.e. ":") - it is
-+ # assumed that no part of a normal pathname contains ";" but that should
-+ # okay in the real world where ";" in dirpaths is itself problematic.
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | sed -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | sed -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
-+else
-+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+fi
-+if test "x$lt_sys_lib_search_path_spec" != "x"; then
-+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_sys_lib_search_path_spec"
-+fi
-
- case $host_os in
- aix3*)
-@@ -4412,7 +4428,7 @@
- ##
- # Report the final consequences.
- echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6
--echo "configure:4416: checking if libtool supports shared libraries" >&5
-+echo "configure:4432: checking if libtool supports shared libraries" >&5
- echo "$ac_t""$can_build_shared" 1>&6
- ##
- ## END FIXME
-@@ -4420,7 +4436,7 @@
- ## FIXME: this should be a separate macro
- ##
- echo $ac_n "checking whether to build shared libraries""... $ac_c" 1>&6
--echo "configure:4424: checking whether to build shared libraries" >&5
-+echo "configure:4440: checking whether to build shared libraries" >&5
- test "$can_build_shared" = "no" && enable_shared=no
-
- # On AIX, shared libraries and static libraries use the same namespace, and
-@@ -4447,7 +4463,7 @@
- ## FIXME: this should be a separate macro
- ##
- echo $ac_n "checking whether to build static libraries""... $ac_c" 1>&6
--echo "configure:4451: checking whether to build static libraries" >&5
-+echo "configure:4467: checking whether to build static libraries" >&5
- # Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
- echo "$ac_t""$enable_static" 1>&6
-@@ -4490,12 +4506,12 @@
-
- *)
- echo $ac_n "checking for shl_load""... $ac_c" 1>&6
--echo "configure:4494: checking for shl_load" >&5
-+echo "configure:4510: checking for shl_load" >&5
- if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 4499 "configure"
-+#line 4515 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shl_load(); below. */
-@@ -4518,7 +4534,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:4522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:4538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_shl_load=yes"
- else
-@@ -4536,7 +4552,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
--echo "configure:4540: checking for shl_load in -ldld" >&5
-+echo "configure:4556: checking for shl_load in -ldld" >&5
- ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4544,7 +4560,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldld $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4548 "configure"
-+#line 4564 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4555,7 +4571,7 @@
- shl_load()
- ; return 0; }
- EOF
--if { (eval echo configure:4559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:4575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4574,12 +4590,12 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for dlopen""... $ac_c" 1>&6
--echo "configure:4578: checking for dlopen" >&5
-+echo "configure:4594: checking for dlopen" >&5
- if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 4583 "configure"
-+#line 4599 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen(); below. */
-@@ -4602,7 +4618,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:4606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:4622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_dlopen=yes"
- else
-@@ -4620,7 +4636,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
--echo "configure:4624: checking for dlopen in -ldl" >&5
-+echo "configure:4640: checking for dlopen in -ldl" >&5
- ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4628,7 +4644,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4632 "configure"
-+#line 4648 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4639,7 +4655,7 @@
- dlopen()
- ; return 0; }
- EOF
--if { (eval echo configure:4643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:4659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4658,7 +4674,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6
--echo "configure:4662: checking for dlopen in -lsvld" >&5
-+echo "configure:4678: checking for dlopen in -lsvld" >&5
- ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4666,7 +4682,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsvld $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4670 "configure"
-+#line 4686 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4677,7 +4693,7 @@
- dlopen()
- ; return 0; }
- EOF
--if { (eval echo configure:4681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:4697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4696,7 +4712,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
--echo "configure:4700: checking for dld_link in -ldld" >&5
-+echo "configure:4716: checking for dld_link in -ldld" >&5
- ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4704,7 +4720,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldld $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4708 "configure"
-+#line 4724 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4715,7 +4731,7 @@
- dld_link()
- ; return 0; }
- EOF
--if { (eval echo configure:4719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:4735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4771,7 +4787,7 @@
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
- echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
--echo "configure:4775: checking whether a program can dlopen itself" >&5
-+echo "configure:4791: checking whether a program can dlopen itself" >&5
- if eval "test \"`echo '$''{'lt_cv_dlopen_self'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -4781,7 +4797,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 4785 "configure"
-+#line 4801 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -4842,7 +4858,7 @@
- exit (status);
- }
- EOF
-- if { (eval echo configure:4846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ if { (eval echo configure:4862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
-@@ -4865,7 +4881,7 @@
- if test "x$lt_cv_dlopen_self" = xyes; then
- LDFLAGS="$LDFLAGS $link_static_flag"
- echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
--echo "configure:4869: checking whether a statically linked program can dlopen itself" >&5
-+echo "configure:4885: checking whether a statically linked program can dlopen itself" >&5
- if eval "test \"`echo '$''{'lt_cv_dlopen_self_static'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -4875,7 +4891,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 4879 "configure"
-+#line 4895 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -4936,7 +4952,7 @@
- exit (status);
- }
- EOF
-- if { (eval echo configure:4940: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ if { (eval echo configure:4956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
-@@ -4987,14 +5003,14 @@
- # systems, -lgcc has to come before -lc. If gcc already passes -lc
- # to ld, don't add -lc before -lgcc.
- echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6
--echo "configure:4991: checking whether -lc should be explicitly linked in" >&5
-+echo "configure:5007: checking whether -lc should be explicitly linked in" >&5
- if eval "test \"`echo '$''{'lt_cv_archive_cmds_need_lc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- $rm conftest*
- echo 'static int dummy;' > conftest.$ac_ext
-
-- if { (eval echo configure:4998: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ if { (eval echo configure:5014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- soname=conftest
- lib=conftest
- libobjs=conftest.$ac_objext
-@@ -5007,7 +5023,7 @@
- libname=conftest
- save_allow_undefined_flag=$allow_undefined_flag
- allow_undefined_flag=
-- if { (eval echo configure:5011: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
-+ if { (eval echo configure:5027: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
- then
- lt_cv_archive_cmds_need_lc=no
- else
-@@ -5590,7 +5606,7 @@
- # Extract the first word of "libtool", so it can be a program name with args.
- set dummy libtool; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:5594: checking for $ac_word" >&5
-+echo "configure:5610: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_LIBTOOL'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -5650,7 +5666,7 @@
-
- logdir='${localstatedir}/log/radius'
- echo $ac_n "checking logdir""... $ac_c" 1>&6
--echo "configure:5654: checking logdir" >&5
-+echo "configure:5670: checking logdir" >&5
- # Check whether --with-logdir or --without-logdir was given.
- if test "${with_logdir+set}" = set; then
- withval="$with_logdir"
-@@ -5672,7 +5688,7 @@
-
- radacctdir='${logdir}/radacct'
- echo $ac_n "checking radacctdir""... $ac_c" 1>&6
--echo "configure:5676: checking radacctdir" >&5
-+echo "configure:5692: checking radacctdir" >&5
- # Check whether --with-radacctdir or --without-radacctdir was given.
- if test "${with_radacctdir+set}" = set; then
- withval="$with_radacctdir"
-@@ -5694,7 +5710,7 @@
-
- raddbdir='${sysconfdir}/raddb'
- echo $ac_n "checking raddbdir""... $ac_c" 1>&6
--echo "configure:5698: checking raddbdir" >&5
-+echo "configure:5714: checking raddbdir" >&5
- # Check whether --with-raddbdir or --without-raddbdir was given.
- if test "${with_raddbdir+set}" = set; then
- withval="$with_raddbdir"
-@@ -5905,7 +5921,7 @@
- # Extract the first word of "perl", so it can be a program name with args.
- set dummy perl; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:5909: checking for $ac_word" >&5
-+echo "configure:5925: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -5944,7 +5960,7 @@
- # Extract the first word of "snmpget", so it can be a program name with args.
- set dummy snmpget; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:5948: checking for $ac_word" >&5
-+echo "configure:5964: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_SNMPGET'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -5983,7 +5999,7 @@
- # Extract the first word of "snmpwalk", so it can be a program name with args.
- set dummy snmpwalk; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:5987: checking for $ac_word" >&5
-+echo "configure:6003: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_SNMPWALK'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -6022,7 +6038,7 @@
- # Extract the first word of "rusers", so it can be a program name with args.
- set dummy rusers; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:6026: checking for $ac_word" >&5
-+echo "configure:6042: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_RUSERS'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -6058,7 +6074,7 @@
-
- missing_dir=`cd $ac_aux_dir && pwd`
- echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
--echo "configure:6062: checking for working aclocal" >&5
-+echo "configure:6078: checking for working aclocal" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
-@@ -6071,7 +6087,7 @@
- fi
-
- echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
--echo "configure:6075: checking for working autoconf" >&5
-+echo "configure:6091: checking for working autoconf" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
-@@ -6084,7 +6100,7 @@
- fi
-
- echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
--echo "configure:6088: checking for working autoheader" >&5
-+echo "configure:6104: checking for working autoheader" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
-@@ -6100,7 +6116,7 @@
- # Extract the first word of "locate", so it can be a program name with args.
- set dummy locate; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:6104: checking for $ac_word" >&5
-+echo "configure:6120: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_LOCATE'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -6135,7 +6151,7 @@
- # Extract the first word of "dirname", so it can be a program name with args.
- set dummy dirname; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:6139: checking for $ac_word" >&5
-+echo "configure:6155: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_DIRNAME'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -6170,7 +6186,7 @@
- # Extract the first word of "grep", so it can be a program name with args.
- set dummy grep; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:6174: checking for $ac_word" >&5
-+echo "configure:6190: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_GREP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -6214,17 +6230,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:6218: checking for $ac_hdr" >&5
-+echo "configure:6234: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 6223 "configure"
-+#line 6239 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:6228: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:6244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -6253,7 +6269,7 @@
-
-
- echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
--echo "configure:6257: checking for pthread_create in -lpthread" >&5
-+echo "configure:6273: checking for pthread_create in -lpthread" >&5
- ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -6261,7 +6277,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpthread $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 6265 "configure"
-+#line 6281 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -6272,7 +6288,7 @@
- pthread_create()
- ; return 0; }
- EOF
--if { (eval echo configure:6276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -6292,7 +6308,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6
--echo "configure:6296: checking for pthread_create in -lc_r" >&5
-+echo "configure:6312: checking for pthread_create in -lc_r" >&5
- ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -6300,7 +6316,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lc_r $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 6304 "configure"
-+#line 6320 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -6311,7 +6327,7 @@
- pthread_create()
- ; return 0; }
- EOF
--if { (eval echo configure:6315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -6346,14 +6362,14 @@
-
-
- echo $ac_n "checking for library containing sem_init""... $ac_c" 1>&6
--echo "configure:6350: checking for library containing sem_init" >&5
-+echo "configure:6366: checking for library containing sem_init" >&5
- if eval "test \"`echo '$''{'ac_cv_search_sem_init'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- ac_func_search_save_LIBS="$LIBS"
- ac_cv_search_sem_init="no"
- cat > conftest.$ac_ext <<EOF
--#line 6357 "configure"
-+#line 6373 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -6364,7 +6380,7 @@
- sem_init()
- ; return 0; }
- EOF
--if { (eval echo configure:6368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ac_cv_search_sem_init="none required"
- else
-@@ -6375,7 +6391,7 @@
- test "$ac_cv_search_sem_init" = "no" && for i in pthread sem posix4 rt; do
- LIBS="-l$i $ac_func_search_save_LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 6379 "configure"
-+#line 6395 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -6386,7 +6402,7 @@
- sem_init()
- ; return 0; }
- EOF
--if { (eval echo configure:6390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ac_cv_search_sem_init="-l$i"
- break
-@@ -6410,7 +6426,7 @@
- fi
-
- echo $ac_n "checking for getsockname in -lsocket""... $ac_c" 1>&6
--echo "configure:6414: checking for getsockname in -lsocket" >&5
-+echo "configure:6430: checking for getsockname in -lsocket" >&5
- ac_lib_var=`echo socket'_'getsockname | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -6418,7 +6434,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsocket $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 6422 "configure"
-+#line 6438 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -6429,7 +6445,7 @@
- getsockname()
- ; return 0; }
- EOF
--if { (eval echo configure:6433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -6458,7 +6474,7 @@
-
-
- echo $ac_n "checking for inet_aton in -lresolv""... $ac_c" 1>&6
--echo "configure:6462: checking for inet_aton in -lresolv" >&5
-+echo "configure:6478: checking for inet_aton in -lresolv" >&5
- ac_lib_var=`echo resolv'_'inet_aton | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -6466,7 +6482,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lresolv $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 6470 "configure"
-+#line 6486 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -6477,7 +6493,7 @@
- inet_aton()
- ; return 0; }
- EOF
--if { (eval echo configure:6481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -6506,7 +6522,7 @@
-
-
- echo $ac_n "checking for inet_ntoa in -lnsl""... $ac_c" 1>&6
--echo "configure:6510: checking for inet_ntoa in -lnsl" >&5
-+echo "configure:6526: checking for inet_ntoa in -lnsl" >&5
- ac_lib_var=`echo nsl'_'inet_ntoa | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -6514,7 +6530,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lnsl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 6518 "configure"
-+#line 6534 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -6525,7 +6541,7 @@
- inet_ntoa()
- ; return 0; }
- EOF
--if { (eval echo configure:6529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6545: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -6559,7 +6575,7 @@
- LIBS="-L$OPENSSL_LIB_DIR $LIBS"
- fi
- echo $ac_n "checking for DH_new in -lcrypto""... $ac_c" 1>&6
--echo "configure:6563: checking for DH_new in -lcrypto" >&5
-+echo "configure:6579: checking for DH_new in -lcrypto" >&5
- ac_lib_var=`echo crypto'_'DH_new | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -6567,7 +6583,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcrypto $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 6571 "configure"
-+#line 6587 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -6578,7 +6594,7 @@
- DH_new()
- ; return 0; }
- EOF
--if { (eval echo configure:6582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -6599,7 +6615,7 @@
- EOF
-
- echo $ac_n "checking for SSL_new in -lssl""... $ac_c" 1>&6
--echo "configure:6603: checking for SSL_new in -lssl" >&5
-+echo "configure:6619: checking for SSL_new in -lssl" >&5
- ac_lib_var=`echo ssl'_'SSL_new | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -6607,7 +6623,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lssl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 6611 "configure"
-+#line 6627 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -6618,7 +6634,7 @@
- SSL_new()
- ; return 0; }
- EOF
--if { (eval echo configure:6622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6638: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -6669,12 +6685,12 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
--echo "configure:6673: checking for $ac_hdr that defines DIR" >&5
-+echo "configure:6689: checking for $ac_hdr that defines DIR" >&5
- if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 6678 "configure"
-+#line 6694 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <$ac_hdr>
-@@ -6682,7 +6698,7 @@
- DIR *dirp = 0;
- ; return 0; }
- EOF
--if { (eval echo configure:6686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:6702: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- eval "ac_cv_header_dirent_$ac_safe=yes"
- else
-@@ -6707,7 +6723,7 @@
- # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
- if test $ac_header_dirent = dirent.h; then
- echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
--echo "configure:6711: checking for opendir in -ldir" >&5
-+echo "configure:6727: checking for opendir in -ldir" >&5
- ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -6715,7 +6731,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldir $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 6719 "configure"
-+#line 6735 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -6726,7 +6742,7 @@
- opendir()
- ; return 0; }
- EOF
--if { (eval echo configure:6730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -6748,7 +6764,7 @@
-
- else
- echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
--echo "configure:6752: checking for opendir in -lx" >&5
-+echo "configure:6768: checking for opendir in -lx" >&5
- ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -6756,7 +6772,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lx $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 6760 "configure"
-+#line 6776 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -6767,7 +6783,7 @@
- opendir()
- ; return 0; }
- EOF
--if { (eval echo configure:6771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -6790,12 +6806,12 @@
- fi
-
- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
--echo "configure:6794: checking for ANSI C header files" >&5
-+echo "configure:6810: checking for ANSI C header files" >&5
- if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 6799 "configure"
-+#line 6815 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #include <stdarg.h>
-@@ -6803,7 +6819,7 @@
- #include <float.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:6807: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:6823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -6820,7 +6836,7 @@
- if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat > conftest.$ac_ext <<EOF
--#line 6824 "configure"
-+#line 6840 "configure"
- #include "confdefs.h"
- #include <string.h>
- EOF
-@@ -6838,7 +6854,7 @@
- if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat > conftest.$ac_ext <<EOF
--#line 6842 "configure"
-+#line 6858 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- EOF
-@@ -6859,7 +6875,7 @@
- :
- else
- cat > conftest.$ac_ext <<EOF
--#line 6863 "configure"
-+#line 6879 "configure"
- #include "confdefs.h"
- #include <ctype.h>
- #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-@@ -6870,7 +6886,7 @@
- exit (0); }
-
- EOF
--if { (eval echo configure:6874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- :
- else
-@@ -6894,12 +6910,12 @@
- fi
-
- echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
--echo "configure:6898: checking whether time.h and sys/time.h may both be included" >&5
-+echo "configure:6914: checking whether time.h and sys/time.h may both be included" >&5
- if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 6903 "configure"
-+#line 6919 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/time.h>
-@@ -6908,7 +6924,7 @@
- struct tm *tp;
- ; return 0; }
- EOF
--if { (eval echo configure:6912: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:6928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_header_time=yes
- else
-@@ -6929,12 +6945,12 @@
- fi
-
- echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
--echo "configure:6933: checking for sys/wait.h that is POSIX.1 compatible" >&5
-+echo "configure:6949: checking for sys/wait.h that is POSIX.1 compatible" >&5
- if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 6938 "configure"
-+#line 6954 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/wait.h>
-@@ -6950,7 +6966,7 @@
- s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
- ; return 0; }
- EOF
--if { (eval echo configure:6954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:6970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_header_sys_wait_h=yes
- else
-@@ -7005,17 +7021,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:7009: checking for $ac_hdr" >&5
-+echo "configure:7025: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7014 "configure"
-+#line 7030 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:7019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7035: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -7045,17 +7061,17 @@
- REGEX=no
- ac_safe=`echo "regex.h" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for regex.h""... $ac_c" 1>&6
--echo "configure:7049: checking for regex.h" >&5
-+echo "configure:7065: checking for regex.h" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7054 "configure"
-+#line 7070 "configure"
- #include "confdefs.h"
- #include <regex.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:7059: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -7083,7 +7099,7 @@
- REGEX_EXTENDED=no
- REGEX=yes
- cat > conftest.$ac_ext <<EOF
--#line 7087 "configure"
-+#line 7103 "configure"
- #include "confdefs.h"
- #include <regex.h>
- #ifdef REG_EXTENDED
-@@ -7138,17 +7154,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:7142: checking for $ac_hdr" >&5
-+echo "configure:7158: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7147 "configure"
-+#line 7163 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:7152: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7168: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -7178,9 +7194,9 @@
-
- if test "x$OPENSSL_LIBS" != "x"; then
- echo $ac_n "checking for OpenSSL version >= 0.9.7""... $ac_c" 1>&6
--echo "configure:7182: checking for OpenSSL version >= 0.9.7" >&5
-+echo "configure:7198: checking for OpenSSL version >= 0.9.7" >&5
- cat > conftest.$ac_ext <<EOF
--#line 7184 "configure"
-+#line 7200 "configure"
- #include "confdefs.h"
- #include <openssl/crypto.h>
- #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
-@@ -7215,12 +7231,12 @@
-
-
- echo $ac_n "checking for off_t""... $ac_c" 1>&6
--echo "configure:7219: checking for off_t" >&5
-+echo "configure:7235: checking for off_t" >&5
- if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7224 "configure"
-+#line 7240 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #if STDC_HEADERS
-@@ -7248,12 +7264,12 @@
- fi
-
- echo $ac_n "checking for pid_t""... $ac_c" 1>&6
--echo "configure:7252: checking for pid_t" >&5
-+echo "configure:7268: checking for pid_t" >&5
- if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7257 "configure"
-+#line 7273 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #if STDC_HEADERS
-@@ -7281,12 +7297,12 @@
- fi
-
- echo $ac_n "checking for size_t""... $ac_c" 1>&6
--echo "configure:7285: checking for size_t" >&5
-+echo "configure:7301: checking for size_t" >&5
- if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7290 "configure"
-+#line 7306 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #if STDC_HEADERS
-@@ -7314,12 +7330,12 @@
- fi
-
- echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
--echo "configure:7318: checking for uid_t in sys/types.h" >&5
-+echo "configure:7334: checking for uid_t in sys/types.h" >&5
- if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7323 "configure"
-+#line 7339 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- EOF
-@@ -7350,13 +7366,13 @@
-
-
- echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
--echo "configure:7354: checking for socklen_t" >&5
-+echo "configure:7370: checking for socklen_t" >&5
- if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- ac_cv_type_socklen_t=no
- cat > conftest.$ac_ext <<EOF
--#line 7360 "configure"
-+#line 7376 "configure"
- #include "confdefs.h"
- #ifdef HAVE_SYS_TYPES_H
- #include <sys/types.h>
-@@ -7369,7 +7385,7 @@
- socklen_t foo
- ; return 0; }
- EOF
--if { (eval echo configure:7373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:7389: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_type_socklen_t=yes
- else
-@@ -7393,13 +7409,13 @@
-
-
- echo $ac_n "checking for uint8_t""... $ac_c" 1>&6
--echo "configure:7397: checking for uint8_t" >&5
-+echo "configure:7413: checking for uint8_t" >&5
- if eval "test \"`echo '$''{'ac_cv_type_uint8_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- ac_cv_type_uint8_t=no
- cat > conftest.$ac_ext <<EOF
--#line 7403 "configure"
-+#line 7419 "configure"
- #include "confdefs.h"
- #ifdef HAVE_INTTYPES_H
- #include <inttypes.h>
-@@ -7412,7 +7428,7 @@
- uint8_t foo
- ; return 0; }
- EOF
--if { (eval echo configure:7416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:7432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_type_uint8_t=yes
- else
-@@ -7436,13 +7452,13 @@
-
-
- echo $ac_n "checking for uint16_t""... $ac_c" 1>&6
--echo "configure:7440: checking for uint16_t" >&5
-+echo "configure:7456: checking for uint16_t" >&5
- if eval "test \"`echo '$''{'ac_cv_type_uint16_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- ac_cv_type_uint16_t=no
- cat > conftest.$ac_ext <<EOF
--#line 7446 "configure"
-+#line 7462 "configure"
- #include "confdefs.h"
- #ifdef HAVE_INTTYPES_H
- #include <inttypes.h>
-@@ -7455,7 +7471,7 @@
- uint16_t foo
- ; return 0; }
- EOF
--if { (eval echo configure:7459: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:7475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_type_uint16_t=yes
- else
-@@ -7479,13 +7495,13 @@
-
-
- echo $ac_n "checking for uint32_t""... $ac_c" 1>&6
--echo "configure:7483: checking for uint32_t" >&5
-+echo "configure:7499: checking for uint32_t" >&5
- if eval "test \"`echo '$''{'ac_cv_type_uint32_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- ac_cv_type_uint32_t=no
- cat > conftest.$ac_ext <<EOF
--#line 7489 "configure"
-+#line 7505 "configure"
- #include "confdefs.h"
- #ifdef HAVE_INTTYPES_H
- #include <inttypes.h>
-@@ -7498,7 +7514,7 @@
- uint32_t foo
- ; return 0; }
- EOF
--if { (eval echo configure:7502: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:7518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_type_uint32_t=yes
- else
-@@ -7547,12 +7563,12 @@
-
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:7551: checking for $ac_func" >&5
-+echo "configure:7567: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7556 "configure"
-+#line 7572 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -7575,7 +7591,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:7579: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:7595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -7611,12 +7627,12 @@
-
- do
- echo $ac_n "checking whether $ac_func must be declared""... $ac_c" 1>&6
--echo "configure:7615: checking whether $ac_func must be declared" >&5
-+echo "configure:7631: checking whether $ac_func must be declared" >&5
- if eval "test \"`echo '$''{'radius_cv_decl_needed_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7620 "configure"
-+#line 7636 "configure"
- #include "confdefs.h"
-
- #include <stdio.h>
-@@ -7671,7 +7687,7 @@
- char *(*pfn) = (char *(*)) $ac_func
- ; return 0; }
- EOF
--if { (eval echo configure:7675: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:7691: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- eval "radius_cv_decl_needed_$ac_func=no"
- else
-@@ -7698,12 +7714,12 @@
-
-
- echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
--echo "configure:7702: checking return type of signal handlers" >&5
-+echo "configure:7718: checking return type of signal handlers" >&5
- if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7707 "configure"
-+#line 7723 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <signal.h>
-@@ -7720,7 +7736,7 @@
- int i;
- ; return 0; }
- EOF
--if { (eval echo configure:7724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:7740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_type_signal=void
- else
-@@ -7743,11 +7759,11 @@
- then
-
- echo $ac_n "checking for ut_xtime in struct utmpx""... $ac_c" 1>&6
--echo "configure:7747: checking for ut_xtime in struct utmpx" >&5
-+echo "configure:7763: checking for ut_xtime in struct utmpx" >&5
-
-
- cat > conftest.$ac_ext <<EOF
--#line 7751 "configure"
-+#line 7767 "configure"
- #include "confdefs.h"
-
- #include <utmpx.h>
-@@ -7759,7 +7775,7 @@
- int foo = offsetof(struct utmpx, ut_xtime)
- ; return 0; }
- EOF
--if { (eval echo configure:7763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:7779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- has_element=" "
- else
-@@ -7790,11 +7806,11 @@
-
-
- echo $ac_n "checking for ipi_addr in struct in_pktinfo""... $ac_c" 1>&6
--echo "configure:7794: checking for ipi_addr in struct in_pktinfo" >&5
-+echo "configure:7810: checking for ipi_addr in struct in_pktinfo" >&5
-
-
- cat > conftest.$ac_ext <<EOF
--#line 7798 "configure"
-+#line 7814 "configure"
- #include "confdefs.h"
-
- #include <netinet/in.h>
-@@ -7806,7 +7822,7 @@
- int foo = offsetof(struct in_pktinfo, ipi_addr)
- ; return 0; }
- EOF
--if { (eval echo configure:7810: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:7826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- has_element=" "
- else
-@@ -7836,12 +7852,12 @@
-
-
- echo $ac_n "checking for working const""... $ac_c" 1>&6
--echo "configure:7840: checking for working const" >&5
-+echo "configure:7856: checking for working const" >&5
- if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7845 "configure"
-+#line 7861 "configure"
- #include "confdefs.h"
-
- int main() {
-@@ -7890,7 +7906,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:7894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:7910: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_c_const=yes
- else
-@@ -7912,7 +7928,7 @@
-
-
- echo $ac_n "checking type of OS""... $ac_c" 1>&6
--echo "configure:7916: checking type of OS" >&5
-+echo "configure:7932: checking type of OS" >&5
- OS=`uname -s`
- echo "$ac_t""$OS" 1>&6
- if test "$OS" = "OS/2"; then
-@@ -7927,7 +7943,7 @@
- fi
-
- echo $ac_n "checking for developer gcc flags""... $ac_c" 1>&6
--echo "configure:7931: checking for developer gcc flags" >&5
-+echo "configure:7947: checking for developer gcc flags" >&5
- if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
- devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef"
- CFLAGS="$CFLAGS $devflags"
-@@ -7942,7 +7958,7 @@
-
-
- echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
--echo "configure:7946: checking for crypt in -lcrypt" >&5
-+echo "configure:7962: checking for crypt in -lcrypt" >&5
- ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -7950,7 +7966,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcrypt $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 7954 "configure"
-+#line 7970 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -7961,7 +7977,7 @@
- crypt()
- ; return 0; }
- EOF
--if { (eval echo configure:7965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:7981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -7989,12 +8005,12 @@
-
- else
- echo $ac_n "checking for crypt""... $ac_c" 1>&6
--echo "configure:7993: checking for crypt" >&5
-+echo "configure:8009: checking for crypt" >&5
- if eval "test \"`echo '$''{'ac_cv_func_crypt'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7998 "configure"
-+#line 8014 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char crypt(); below. */
-@@ -8017,7 +8033,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:8021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_crypt=yes"
- else
-@@ -8042,7 +8058,7 @@
- fi
-
- echo $ac_n "checking for setkey in -lcipher""... $ac_c" 1>&6
--echo "configure:8046: checking for setkey in -lcipher" >&5
-+echo "configure:8062: checking for setkey in -lcipher" >&5
- ac_lib_var=`echo cipher'_'setkey | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -8050,7 +8066,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcipher $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 8054 "configure"
-+#line 8070 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -8061,7 +8077,7 @@
- setkey()
- ; return 0; }
- EOF
--if { (eval echo configure:8065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -8090,10 +8106,10 @@
-
-
- echo $ac_n "checking for asn1.h,snmp.h,snmp_impl.h""... $ac_c" 1>&6
--echo "configure:8094: checking for asn1.h,snmp.h,snmp_impl.h" >&5
-+echo "configure:8110: checking for asn1.h,snmp.h,snmp_impl.h" >&5
-
- cat > conftest.$ac_ext <<EOF
--#line 8097 "configure"
-+#line 8113 "configure"
- #include "confdefs.h"
-
- #ifdef HAVE_SYS_TYPES_H
-@@ -8119,7 +8135,7 @@
- int a = 1;
- ; return 0; }
- EOF
--if { (eval echo configure:8123: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:8139: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- SNMP_INCLUDE="";ucdsnmp=yes
- else
-@@ -8135,7 +8151,7 @@
- for try in /usr/include /usr/local/include $with_snmp_include_dir; do
- CFLAGS="$old_CFLAGS -I$try"
- cat > conftest.$ac_ext <<EOF
--#line 8139 "configure"
-+#line 8155 "configure"
- #include "confdefs.h"
-
- #ifdef HAVE_SYS_TYPES_H
-@@ -8161,7 +8177,7 @@
- int a = 1;
- ; return 0; }
- EOF
--if { (eval echo configure:8165: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:8181: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- SNMP_INCLUDE="-I$try";ucdsnmp=yes
- else
-@@ -8183,7 +8199,7 @@
- for try in /usr/include/ucd-snmp /usr/local/include/ucd-snmp $with_snmp_include_dir; do
- CFLAGS="$old_CFLAGS -I$try"
- cat > conftest.$ac_ext <<EOF
--#line 8187 "configure"
-+#line 8203 "configure"
- #include "confdefs.h"
-
- #ifdef HAVE_SYS_TYPES_H
-@@ -8208,7 +8224,7 @@
- int a = 1;
- ; return 0; }
- EOF
--if { (eval echo configure:8212: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:8228: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- SNMP_INCLUDE="";ucdsnmp=no
- else
-@@ -8230,7 +8246,7 @@
- for try in /usr/include/ucd-snmp /usr/local/include/ucd-snmp $with_snmp_include_dir; do
- CFLAGS="$old_CFLAGS -I$try"
- cat > conftest.$ac_ext <<EOF
--#line 8234 "configure"
-+#line 8250 "configure"
- #include "confdefs.h"
-
- #ifdef HAVE_SYS_TYPES_H
-@@ -8255,7 +8271,7 @@
- int a = 1;
- ; return 0; }
- EOF
--if { (eval echo configure:8259: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:8275: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- SNMP_INCLUDE="-I$try";ucdsnmp=no
- else
-@@ -8289,19 +8305,19 @@
-
- fi
- echo $ac_n "checking for snmp_build_var_op in -lsnmp""... $ac_c" 1>&6
--echo "configure:8293: checking for snmp_build_var_op in -lsnmp" >&5
-+echo "configure:8309: checking for snmp_build_var_op in -lsnmp" >&5
-
- old_LIBS="$LIBS"
- LIBS="$old_LIBS -lsnmp"
- cat > conftest.$ac_ext <<EOF
--#line 8298 "configure"
-+#line 8314 "configure"
- #include "confdefs.h"
- extern char snmp_build_var_op();
- int main() {
- snmp_build_var_op()
- ; return 0; }
- EOF
--if { (eval echo configure:8305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- SNMP_LIBS="-lsnmp"
- else
-@@ -8316,14 +8332,14 @@
- for try in /usr/lib /usr/local/lib /usr/local/snmp/lib $with_snmp_lib_dir; do
- LIBS="$old_LIBS -L$try -lsnmp"
- cat > conftest.$ac_ext <<EOF
--#line 8320 "configure"
-+#line 8336 "configure"
- #include "confdefs.h"
- extern char snmp_build_var_op();
- int main() {
- snmp_build_var_op()
- ; return 0; }
- EOF
--if { (eval echo configure:8327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- SNMP_LIBS="-L$try -lsnmp"
- else
-@@ -8338,14 +8354,14 @@
- fi
- LIBS="$old_LIBS -L$try -lsnmp -lcrypto"
- cat > conftest.$ac_ext <<EOF
--#line 8342 "configure"
-+#line 8358 "configure"
- #include "confdefs.h"
- extern char snmp_build_var_op();
- int main() {
- snmp_build_var_op()
- ; return 0; }
- EOF
--if { (eval echo configure:8349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- SNMP_LIBS="-L$try -lsnmp -lcrypto"
- else
-@@ -8360,14 +8376,14 @@
- fi
- LIBS="$old_LIBS -L$try -lsnmp -lcrypto -lkstat"
- cat > conftest.$ac_ext <<EOF
--#line 8364 "configure"
-+#line 8380 "configure"
- #include "confdefs.h"
- extern char snmp_build_var_op();
- int main() {
- snmp_build_var_op()
- ; return 0; }
- EOF
--if { (eval echo configure:8371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- SNMP_LIBS="-L$try -lsnmp -lcrypto -lkstat"
- else
-@@ -8405,7 +8421,7 @@
-
- gethostbyaddrrstyle=""
- echo $ac_n "checking gethostbyaddr_r() syntax""... $ac_c" 1>&6
--echo "configure:8409: checking gethostbyaddr_r() syntax" >&5
-+echo "configure:8425: checking gethostbyaddr_r() syntax" >&5
- case "$host" in
- *-freebsd*)
- cat >> confdefs.h <<\EOF
-@@ -8418,7 +8434,7 @@
- esac
- if test "x$gethostbyaddrrstyle" = "x"; then
- cat > conftest.$ac_ext <<EOF
--#line 8422 "configure"
-+#line 8438 "configure"
- #include "confdefs.h"
-
- #include <stdio.h>
-@@ -8428,7 +8444,7 @@
- gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL)
- ; return 0; }
- EOF
--if { (eval echo configure:8432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8448: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- cat >> confdefs.h <<\EOF
-@@ -8445,7 +8461,7 @@
- fi
- if test "x$gethostbyaddrrstyle" = "x"; then
- cat > conftest.$ac_ext <<EOF
--#line 8449 "configure"
-+#line 8465 "configure"
- #include "confdefs.h"
-
- #include <stdio.h>
-@@ -8455,7 +8471,7 @@
- gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL)
- ; return 0; }
- EOF
--if { (eval echo configure:8459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- cat >> confdefs.h <<\EOF
-@@ -8472,7 +8488,7 @@
- fi
- if test "x$gethostbyaddrrstyle" = "x"; then
- cat > conftest.$ac_ext <<EOF
--#line 8476 "configure"
-+#line 8492 "configure"
- #include "confdefs.h"
-
- #include <stdio.h>
-@@ -8482,7 +8498,7 @@
- gethostbyaddr(NULL, 0, 0)
- ; return 0; }
- EOF
--if { (eval echo configure:8486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- cat >> confdefs.h <<\EOF
-@@ -8510,9 +8526,9 @@
-
- gethostbynamerstyle=""
- echo $ac_n "checking gethostbyname_r() syntax""... $ac_c" 1>&6
--echo "configure:8514: checking gethostbyname_r() syntax" >&5
-+echo "configure:8530: checking gethostbyname_r() syntax" >&5
- cat > conftest.$ac_ext <<EOF
--#line 8516 "configure"
-+#line 8532 "configure"
- #include "confdefs.h"
-
- #include <stdio.h>
-@@ -8522,7 +8538,7 @@
- gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL)
- ; return 0; }
- EOF
--if { (eval echo configure:8526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8542: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- cat >> confdefs.h <<\EOF
-@@ -8538,7 +8554,7 @@
- rm -f conftest*
- if test "x$gethostbynamerstyle" = "x"; then
- cat > conftest.$ac_ext <<EOF
--#line 8542 "configure"
-+#line 8558 "configure"
- #include "confdefs.h"
-
- #include <stdio.h>
-@@ -8548,7 +8564,7 @@
- gethostbyname_r(NULL, NULL, NULL, 0, NULL)
- ; return 0; }
- EOF
--if { (eval echo configure:8552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- cat >> confdefs.h <<\EOF
-@@ -8565,7 +8581,7 @@
- fi
- if test "x$gethostbynamerstyle" = "x"; then
- cat > conftest.$ac_ext <<EOF
--#line 8569 "configure"
-+#line 8585 "configure"
- #include "confdefs.h"
-
- #include <stdio.h>
-@@ -8575,7 +8591,7 @@
- gethostbyname(NULL)
- ; return 0; }
- EOF
--if { (eval echo configure:8579: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- cat >> confdefs.h <<\EOF
-@@ -8603,9 +8619,9 @@
-
- ctimerstyle=""
- echo $ac_n "checking ctime_r() syntax""... $ac_c" 1>&6
--echo "configure:8607: checking ctime_r() syntax" >&5
-+echo "configure:8623: checking ctime_r() syntax" >&5
- cat > conftest.$ac_ext <<EOF
--#line 8609 "configure"
-+#line 8625 "configure"
- #include "confdefs.h"
-
- #include <time.h>
-@@ -8614,7 +8630,7 @@
- ctime_r(NULL, NULL, 0)
- ; return 0; }
- EOF
--if { (eval echo configure:8618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- cat >> confdefs.h <<\EOF
-@@ -8630,7 +8646,7 @@
- rm -f conftest*
- if test "x$ctimerstyle" = "x"; then
- cat > conftest.$ac_ext <<EOF
--#line 8634 "configure"
-+#line 8650 "configure"
- #include "confdefs.h"
-
- #include <time.h>
-@@ -8639,7 +8655,7 @@
- ctime_r(NULL, NULL)
- ; return 0; }
- EOF
--if { (eval echo configure:8643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- cat >> confdefs.h <<\EOF
-@@ -8664,7 +8680,7 @@
-
- if test x"$rad_enable_largefiles" = xyes ; then
- echo $ac_n "checking for largefile linkage""... $ac_c" 1>&6
--echo "configure:8668: checking for largefile linkage" >&5
-+echo "configure:8684: checking for largefile linkage" >&5
- case "$host" in
- *-aix4.01*)
- echo "$ac_t""no" 1>&6
-@@ -8701,7 +8717,7 @@
- # Extract the first word of "getconf", so it can be a program name with args.
- set dummy getconf; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:8705: checking for $ac_word" >&5
-+echo "configure:8721: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_GETCONF'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
diff --git a/openwrt/package/freeradius/patches/04-freeradius-1.1.1-rlm_ldap-configure.patch b/openwrt/package/freeradius/patches/04-freeradius-1.1.1-rlm_ldap-configure.patch
deleted file mode 100644
index dd394e6f50..0000000000
--- a/openwrt/package/freeradius/patches/04-freeradius-1.1.1-rlm_ldap-configure.patch
+++ /dev/null
@@ -1,576 +0,0 @@
-diff -ruN freeradius-1.1.1-old/src/modules/rlm_ldap/configure freeradius-1.1.1-new/src/modules/rlm_ldap/configure
---- freeradius-1.1.1-old/src/modules/rlm_ldap/configure 2005-12-08 20:32:53.000000000 +0100
-+++ freeradius-1.1.1-new/src/modules/rlm_ldap/configure 2006-05-21 19:54:07.000000000 +0200
-@@ -929,13 +929,311 @@
- fi
-
- smart_try_dir=$rlm_ldap_lib_dir
-+
-+
-+
-+sm_lib_safe=`echo "sasl" | sed 'y%./+-%__p_%'`
-+sm_func_safe=`echo "sasl_encode" | sed 'y%./+-%__p_%'`
-+echo $ac_n "checking for sasl_encode in -lsasl""... $ac_c" 1>&6
-+echo "configure:939: checking for sasl_encode in -lsasl" >&5
-+
-+old_LIBS="$LIBS"
-+smart_lib=
-+smart_lib_dir=
-+
-+if test "x$smart_try_dir" != "x"; then
-+ for try in $smart_try_dir; do
-+ LIBS="-L$try -lsasl $old_LIBS"
-+ cat > conftest.$ac_ext <<EOF
-+#line 949 "configure"
-+#include "confdefs.h"
-+extern char sasl_encode();
-+int main() {
-+ sasl_encode()
-+; return 0; }
-+EOF
-+if { (eval echo configure:956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ smart_lib="-L$try -lsasl"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+fi
-+rm -f conftest*
-+ if test "x$smart_lib" != "x"; then
-+ break;
-+ fi
-+ done
-+ LIBS="$old_LIBS"
-+fi
-+
-+if test "x$smart_lib" = "x"; then
-+ LIBS="-lsasl $old_LIBS"
-+ cat > conftest.$ac_ext <<EOF
-+#line 974 "configure"
-+#include "confdefs.h"
-+extern char sasl_encode();
-+int main() {
-+ sasl_encode()
-+; return 0; }
-+EOF
-+if { (eval echo configure:981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ smart_lib="-lsasl"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+fi
-+rm -f conftest*
-+ LIBS="$old_LIBS"
-+fi
-+
-+if test "x$smart_lib" = "x"; then
-+
-+
-+if test "x$LOCATE" != "x"; then
-+ DIRS=
-+ file=libsasl${libltdl_cv_shlibext}
-+
-+ for x in `${LOCATE} $file 2>/dev/null`; do
-+ base=`echo $x | sed "s%/${file}%%"`
-+ if test "x$x" = "x$base"; then
-+ continue;
-+ fi
-+
-+ dir=`${DIRNAME} $x 2>/dev/null`
-+ exclude=`echo ${dir} | ${GREP} /home`
-+ if test "x$exclude" != "x"; then
-+ continue
-+ fi
-+
-+ already=`echo \$smart_lib_dir ${DIRS} | ${GREP} ${dir}`
-+ if test "x$already" = "x"; then
-+ DIRS="$DIRS $dir"
-+ fi
-+ done
-+fi
-+
-+eval "smart_lib_dir=\"\$smart_lib_dir $DIRS\""
-+
-+
-+
-+if test "x$LOCATE" != "x"; then
-+ DIRS=
-+ file=libsasl.a
-+
-+ for x in `${LOCATE} $file 2>/dev/null`; do
-+ base=`echo $x | sed "s%/${file}%%"`
-+ if test "x$x" = "x$base"; then
-+ continue;
-+ fi
-+
-+ dir=`${DIRNAME} $x 2>/dev/null`
-+ exclude=`echo ${dir} | ${GREP} /home`
-+ if test "x$exclude" != "x"; then
-+ continue
-+ fi
-+
-+ already=`echo \$smart_lib_dir ${DIRS} | ${GREP} ${dir}`
-+ if test "x$already" = "x"; then
-+ DIRS="$DIRS $dir"
-+ fi
-+ done
-+fi
-+
-+eval "smart_lib_dir=\"\$smart_lib_dir $DIRS\""
-+
-+
-+ for try in $smart_lib_dir /usr/local/lib /opt/lib; do
-+ LIBS="-L$try -lsasl $old_LIBS"
-+ cat > conftest.$ac_ext <<EOF
-+#line 1051 "configure"
-+#include "confdefs.h"
-+extern char sasl_encode();
-+int main() {
-+ sasl_encode()
-+; return 0; }
-+EOF
-+if { (eval echo configure:1058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ smart_lib="-L$try -lsasl"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+fi
-+rm -f conftest*
-+ if test "x$smart_lib" != "x"; then
-+ break;
-+ fi
-+ done
-+ LIBS="$old_LIBS"
-+fi
-+
-+if test "x$smart_lib" != "x"; then
-+ echo "$ac_t""yes" 1>&6
-+ eval "ac_cv_lib_${sm_lib_safe}_${sm_func_safe}=yes"
-+ LIBS="$smart_lib $old_LIBS"
-+ SMART_LIBS="$smart_lib $SMART_LIBS"
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+
-+
-+sm_lib_safe=`echo "lber" | sed 'y%./+-%__p_%'`
-+sm_func_safe=`echo "ber_init" | sed 'y%./+-%__p_%'`
-+echo $ac_n "checking for ber_init in -llber""... $ac_c" 1>&6
-+echo "configure:1087: checking for ber_init in -llber" >&5
-+
-+old_LIBS="$LIBS"
-+smart_lib=
-+smart_lib_dir=
-+
-+if test "x$smart_try_dir" != "x"; then
-+ for try in $smart_try_dir; do
-+ LIBS="-L$try -llber $old_LIBS"
-+ cat > conftest.$ac_ext <<EOF
-+#line 1097 "configure"
-+#include "confdefs.h"
-+extern char ber_init();
-+int main() {
-+ ber_init()
-+; return 0; }
-+EOF
-+if { (eval echo configure:1104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ smart_lib="-L$try -llber"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+fi
-+rm -f conftest*
-+ if test "x$smart_lib" != "x"; then
-+ break;
-+ fi
-+ done
-+ LIBS="$old_LIBS"
-+fi
-+
-+if test "x$smart_lib" = "x"; then
-+ LIBS="-llber $old_LIBS"
-+ cat > conftest.$ac_ext <<EOF
-+#line 1122 "configure"
-+#include "confdefs.h"
-+extern char ber_init();
-+int main() {
-+ ber_init()
-+; return 0; }
-+EOF
-+if { (eval echo configure:1129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ smart_lib="-llber"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+fi
-+rm -f conftest*
-+ LIBS="$old_LIBS"
-+fi
-+
-+if test "x$smart_lib" = "x"; then
-+
-+
-+if test "x$LOCATE" != "x"; then
-+ DIRS=
-+ file=liblber${libltdl_cv_shlibext}
-+
-+ for x in `${LOCATE} $file 2>/dev/null`; do
-+ base=`echo $x | sed "s%/${file}%%"`
-+ if test "x$x" = "x$base"; then
-+ continue;
-+ fi
-+
-+ dir=`${DIRNAME} $x 2>/dev/null`
-+ exclude=`echo ${dir} | ${GREP} /home`
-+ if test "x$exclude" != "x"; then
-+ continue
-+ fi
-+
-+ already=`echo \$smart_lib_dir ${DIRS} | ${GREP} ${dir}`
-+ if test "x$already" = "x"; then
-+ DIRS="$DIRS $dir"
-+ fi
-+ done
-+fi
-+
-+eval "smart_lib_dir=\"\$smart_lib_dir $DIRS\""
-+
-+
-+
-+if test "x$LOCATE" != "x"; then
-+ DIRS=
-+ file=liblber.a
-+
-+ for x in `${LOCATE} $file 2>/dev/null`; do
-+ base=`echo $x | sed "s%/${file}%%"`
-+ if test "x$x" = "x$base"; then
-+ continue;
-+ fi
-+
-+ dir=`${DIRNAME} $x 2>/dev/null`
-+ exclude=`echo ${dir} | ${GREP} /home`
-+ if test "x$exclude" != "x"; then
-+ continue
-+ fi
-+
-+ already=`echo \$smart_lib_dir ${DIRS} | ${GREP} ${dir}`
-+ if test "x$already" = "x"; then
-+ DIRS="$DIRS $dir"
-+ fi
-+ done
-+fi
-+
-+eval "smart_lib_dir=\"\$smart_lib_dir $DIRS\""
-+
-+
-+ for try in $smart_lib_dir /usr/local/lib /opt/lib; do
-+ LIBS="-L$try -llber $old_LIBS"
-+ cat > conftest.$ac_ext <<EOF
-+#line 1199 "configure"
-+#include "confdefs.h"
-+extern char ber_init();
-+int main() {
-+ ber_init()
-+; return 0; }
-+EOF
-+if { (eval echo configure:1206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ smart_lib="-L$try -llber"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+fi
-+rm -f conftest*
-+ if test "x$smart_lib" != "x"; then
-+ break;
-+ fi
-+ done
-+ LIBS="$old_LIBS"
-+fi
-+
-+if test "x$smart_lib" != "x"; then
-+ echo "$ac_t""yes" 1>&6
-+ eval "ac_cv_lib_${sm_lib_safe}_${sm_func_safe}=yes"
-+ LIBS="$smart_lib $old_LIBS"
-+ SMART_LIBS="$smart_lib $SMART_LIBS"
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+
- if test "x$rlm_ldap_with_threads" = "xyes"; then
-
-
- sm_lib_safe=`echo "ldap_r" | sed 'y%./+-%__p_%'`
- sm_func_safe=`echo "ldap_init" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for ldap_init in -lldap_r""... $ac_c" 1>&6
--echo "configure:939: checking for ldap_init in -lldap_r" >&5
-+echo "configure:1237: checking for ldap_init in -lldap_r" >&5
-
- old_LIBS="$LIBS"
- smart_lib=
-@@ -945,14 +1243,14 @@
- for try in $smart_try_dir; do
- LIBS="-L$try -lldap_r $old_LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 949 "configure"
-+#line 1247 "configure"
- #include "confdefs.h"
- extern char ldap_init();
- int main() {
- ldap_init()
- ; return 0; }
- EOF
--if { (eval echo configure:956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:1254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- smart_lib="-L$try -lldap_r"
- else
-@@ -970,14 +1268,14 @@
- if test "x$smart_lib" = "x"; then
- LIBS="-lldap_r $old_LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 974 "configure"
-+#line 1272 "configure"
- #include "confdefs.h"
- extern char ldap_init();
- int main() {
- ldap_init()
- ; return 0; }
- EOF
--if { (eval echo configure:981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:1279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- smart_lib="-lldap_r"
- else
-@@ -1047,14 +1345,14 @@
- for try in $smart_lib_dir /usr/local/lib /opt/lib; do
- LIBS="-L$try -lldap_r $old_LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 1051 "configure"
-+#line 1349 "configure"
- #include "confdefs.h"
- extern char ldap_init();
- int main() {
- ldap_init()
- ; return 0; }
- EOF
--if { (eval echo configure:1058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:1356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- smart_lib="-L$try -lldap_r"
- else
-@@ -1087,7 +1385,7 @@
- sm_lib_safe=`echo "ldap" | sed 'y%./+-%__p_%'`
- sm_func_safe=`echo "ldap_init" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for ldap_init in -lldap""... $ac_c" 1>&6
--echo "configure:1091: checking for ldap_init in -lldap" >&5
-+echo "configure:1389: checking for ldap_init in -lldap" >&5
-
- old_LIBS="$LIBS"
- smart_lib=
-@@ -1097,14 +1395,14 @@
- for try in $smart_try_dir; do
- LIBS="-L$try -lldap $old_LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 1101 "configure"
-+#line 1399 "configure"
- #include "confdefs.h"
- extern char ldap_init();
- int main() {
- ldap_init()
- ; return 0; }
- EOF
--if { (eval echo configure:1108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:1406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- smart_lib="-L$try -lldap"
- else
-@@ -1122,14 +1420,14 @@
- if test "x$smart_lib" = "x"; then
- LIBS="-lldap $old_LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 1126 "configure"
-+#line 1424 "configure"
- #include "confdefs.h"
- extern char ldap_init();
- int main() {
- ldap_init()
- ; return 0; }
- EOF
--if { (eval echo configure:1133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:1431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- smart_lib="-lldap"
- else
-@@ -1199,14 +1497,14 @@
- for try in $smart_lib_dir /usr/local/lib /opt/lib; do
- LIBS="-L$try -lldap $old_LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 1203 "configure"
-+#line 1501 "configure"
- #include "confdefs.h"
- extern char ldap_init();
- int main() {
- ldap_init()
- ; return 0; }
- EOF
--if { (eval echo configure:1210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:1508: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- smart_lib="-L$try -lldap"
- else
-@@ -1241,7 +1539,7 @@
-
- ac_safe=`echo "ldap.h" | sed 'y%./+-%__pm%'`
- echo $ac_n "checking for ldap.h""... $ac_c" 1>&6
--echo "configure:1245: checking for ldap.h" >&5
-+echo "configure:1543: checking for ldap.h" >&5
-
- old_CFLAGS="$CFLAGS"
- smart_include=
-@@ -1251,7 +1549,7 @@
- for try in $smart_try_dir; do
- CFLAGS="$old_CFLAGS -I$try"
- cat > conftest.$ac_ext <<EOF
--#line 1255 "configure"
-+#line 1553 "configure"
- #include "confdefs.h"
-
- #include <ldap.h>
-@@ -1259,7 +1557,7 @@
- int a = 1;
- ; return 0; }
- EOF
--if { (eval echo configure:1263: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:1561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- smart_include="-I$try"
- else
-@@ -1278,7 +1576,7 @@
-
- if test "x$smart_include" = "x"; then
- cat > conftest.$ac_ext <<EOF
--#line 1282 "configure"
-+#line 1580 "configure"
- #include "confdefs.h"
-
- #include <ldap.h>
-@@ -1286,7 +1584,7 @@
- int a = 1;
- ; return 0; }
- EOF
--if { (eval echo configure:1290: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:1588: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- smart_include=" "
- else
-@@ -1330,7 +1628,7 @@
- for try in $smart_include_dir /usr/local/include /opt/include; do
- CFLAGS="$old_CFLAGS -I$try"
- cat > conftest.$ac_ext <<EOF
--#line 1334 "configure"
-+#line 1632 "configure"
- #include "confdefs.h"
-
- #include <ldap.h>
-@@ -1338,7 +1636,7 @@
- int a = 1;
- ; return 0; }
- EOF
--if { (eval echo configure:1342: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:1640: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- smart_include="-I$try"
- else
-@@ -1371,12 +1669,12 @@
-
- if test "x$fail" = "x"; then
- echo $ac_n "checking for ldap_start_tls_s""... $ac_c" 1>&6
--echo "configure:1375: checking for ldap_start_tls_s" >&5
-+echo "configure:1673: checking for ldap_start_tls_s" >&5
- if eval "test \"`echo '$''{'ac_cv_func_ldap_start_tls_s'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 1380 "configure"
-+#line 1678 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char ldap_start_tls_s(); below. */
-@@ -1399,7 +1697,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:1403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:1701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_ldap_start_tls_s=yes"
- else
-@@ -1419,12 +1717,12 @@
- fi
-
- echo $ac_n "checking for ldap_initialize""... $ac_c" 1>&6
--echo "configure:1423: checking for ldap_initialize" >&5
-+echo "configure:1721: checking for ldap_initialize" >&5
- if eval "test \"`echo '$''{'ac_cv_func_ldap_initialize'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 1428 "configure"
-+#line 1726 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char ldap_initialize(); below. */
-@@ -1447,7 +1745,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:1451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:1749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_ldap_initialize=yes"
- else
-@@ -1467,12 +1765,12 @@
- fi
-
- echo $ac_n "checking for ldap_int_tls_config""... $ac_c" 1>&6
--echo "configure:1471: checking for ldap_int_tls_config" >&5
-+echo "configure:1769: checking for ldap_int_tls_config" >&5
- if eval "test \"`echo '$''{'ac_cv_func_ldap_int_tls_config'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 1476 "configure"
-+#line 1774 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char ldap_int_tls_config(); below. */
-@@ -1495,7 +1793,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:1499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:1797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_ldap_int_tls_config=yes"
- else
-diff -ruN freeradius-1.1.1-old/src/modules/rlm_ldap/configure.in freeradius-1.1.1-new/src/modules/rlm_ldap/configure.in
---- freeradius-1.1.1-old/src/modules/rlm_ldap/configure.in 2005-08-22 16:50:46.000000000 +0200
-+++ freeradius-1.1.1-new/src/modules/rlm_ldap/configure.in 2006-05-21 19:51:25.000000000 +0200
-@@ -90,6 +90,10 @@
- dnl Static linking will probably not work, but nobody ever
- dnl complained about it.
- smart_try_dir=$rlm_ldap_lib_dir
-+
-+ AC_SMART_CHECK_LIB(sasl, sasl_encode)
-+ AC_SMART_CHECK_LIB(lber, ber_init)
-+
- if test "x$rlm_ldap_with_threads" = "xyes"; then
- AC_SMART_CHECK_LIB(ldap_r, ldap_init)
- if test "x$ac_cv_lib_ldap_r_ldap_init" != "xyes"; then
diff --git a/openwrt/package/freeradius/patches/05-freeradius-1.1.1-create_libdir_at_install.patch b/openwrt/package/freeradius/patches/05-freeradius-1.1.1-create_libdir_at_install.patch
deleted file mode 100644
index b96864423c..0000000000
--- a/openwrt/package/freeradius/patches/05-freeradius-1.1.1-create_libdir_at_install.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -ruN freeradius-1.1.1-old/Makefile freeradius-1.1.1-new/Makefile
---- freeradius-1.1.1-old/Makefile 2005-04-11 23:18:27.000000000 +0200
-+++ freeradius-1.1.1-new/Makefile 2006-05-22 08:27:44.000000000 +0200
-@@ -38,6 +38,7 @@
- install:
- $(INSTALL) -d -m 755 $(R)$(sbindir)
- $(INSTALL) -d -m 755 $(R)$(bindir)
-+ $(INSTALL) -d -m 755 $(R)$(libdir)
- $(INSTALL) -d -m 755 $(R)$(raddbdir)
- $(INSTALL) -d -m 755 $(R)$(mandir)
- $(INSTALL) -d -m 755 $(R)$(RUNDIR)
diff --git a/openwrt/package/freeradius/patches/06-freeradius-1.1.1-no_radeapclient.patch b/openwrt/package/freeradius/patches/06-freeradius-1.1.1-no_radeapclient.patch
deleted file mode 100644
index 37edad1900..0000000000
--- a/openwrt/package/freeradius/patches/06-freeradius-1.1.1-no_radeapclient.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -ruN freeradius-1.1.1-old/src/modules/rlm_eap/Makefile.in freeradius-1.1.1-new/src/modules/rlm_eap/Makefile.in
---- freeradius-1.1.1-old/src/modules/rlm_eap/Makefile.in 2006-02-10 20:47:08.000000000 +0100
-+++ freeradius-1.1.1-new/src/modules/rlm_eap/Makefile.in 2006-05-22 08:25:44.000000000 +0200
-@@ -10,7 +10,6 @@
- RLM_LIBS = libeap/libeap.la $(LIBLTDL)
- RLM_INSTALL = install-subdirs
- RLM_SUBDIRS = libeap @eaptypes@
--RLM_UTILS = radeapclient
-
- #
- # Not using shared libraries, add in ALL known static modules
-@@ -29,15 +28,8 @@
-
- $(LT_OBJS): $(HEADERS)
-
--radeapclient: radeapclient.lo $(CLIENTLIBS)
-- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) $(RLM_LDFLAGS) -static -o radeapclient radeapclient.lo $(CLIENTLIBS) $(LIBS)
--
--radeapclient.lo: radeapclient.c $(HEADERS)
-- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(RLM_CFLAGS) -c radeapclient.c
--
- install-subdirs:
- @$(MAKE) $(MFLAGS) WHAT_TO_MAKE=install common
-- $(LIBTOOL) --mode=install $(INSTALL) -m 755 $(INSTALLSTRIP) radeapclient$(EXEEXT) $(R)$(bindir)
-
- common:
- @for dir in $(RLM_SUBDIRS); do \
diff --git a/openwrt/package/freeradius/patches/07-freeradius-1.1.1-no_openssl_engine_check.patch b/openwrt/package/freeradius/patches/07-freeradius-1.1.1-no_openssl_engine_check.patch
deleted file mode 100644
index 12f53f1f96..0000000000
--- a/openwrt/package/freeradius/patches/07-freeradius-1.1.1-no_openssl_engine_check.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN freeradius-1.1.1-old/configure freeradius-1.1.1-new/configure
---- freeradius-1.1.1-old/configure 2006-05-21 19:44:54.000000000 +0200
-+++ freeradius-1.1.1-new/configure 2006-06-02 01:07:28.000000000 +0200
-@@ -7150,7 +7150,7 @@
- openssl/ssl.h \
- openssl/crypto.h \
- openssl/err.h \
-- openssl/engine.h
-+
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-diff -ruN freeradius-1.1.1-old/configure.in freeradius-1.1.1-new/configure.in
---- freeradius-1.1.1-old/configure.in 2006-02-06 13:50:52.000000000 +0100
-+++ freeradius-1.1.1-new/configure.in 2006-06-02 01:07:19.000000000 +0200
-@@ -574,7 +574,7 @@
- openssl/ssl.h \
- openssl/crypto.h \
- openssl/err.h \
-- openssl/engine.h,
-+ ,
- [],
- OPENSSL_LIBS=
- )
diff --git a/openwrt/package/freetype/Config.in b/openwrt/package/freetype/Config.in
deleted file mode 100644
index 38531cc1de..0000000000
--- a/openwrt/package/freetype/Config.in
+++ /dev/null
@@ -1,26 +0,0 @@
-config BR2_COMPILE_FREETYPE
- tristate
- default n
- depends BR2_PACKAGE_LIBFREETYPE
-
-config BR2_PACKAGE_LIBFREETYPE
- tristate "libfreetype....................... A free, high-quality and portable font engine"
-# default m if CONFIG_DEVEL
- default n
- select BR2_COMPILE_FREETYPE
- select BR2_PACKAGE_ZLIB
- help
- The FreeType project is a team of volunteers who develop free,
- portable and high-quality software solutions for digital typography.
- They specifically target embedded systems and focus on bringing small,
- efficient and ubiquitous products.
-
- The FreeType 2 library is their new software font engine. It has been
- designed to provide the following important features:
- * A universal and simple API to manage font files
- * Support for several font formats through loadable modules
- * High-quality anti-aliasing
- * High portability & performance
-
- http://www.freetype.org/
-
diff --git a/openwrt/package/freetype/Makefile b/openwrt/package/freetype/Makefile
deleted file mode 100644
index 429df1d09e..0000000000
--- a/openwrt/package/freetype/Makefile
+++ /dev/null
@@ -1,88 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libfreetype
-PKG_VERSION:=2.1.9
-PKG_RELEASE:=1
-PKG_MD5SUM:=ec1b903e4be5f073caa72458ea58c29c
-
-PKG_SOURCE_URL:=@SF/freetype
-PKG_SOURCE:=freetype-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/freetype-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBFREETYPE,libfreetype,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- $(TARGET_CONFIGURE_OPTS) \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared=yes \
- --enable-static=yes \
- --disable-rpath \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBFREETYPE):
- install -d -m0755 $(IDIR_LIBFREETYPE)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfreetype.so.* $(IDIR_LIBFREETYPE)/usr/lib/
- $(RSTRIP) $(IDIR_LIBFREETYPE)
- $(IPKG_BUILD) $(IDIR_LIBFREETYPE) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libfreetype.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/freetype-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/freetype2 $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/ft2build.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfreetype.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/freetype2.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libfreetype.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/freetype-config \
- $(STAGING_DIR)/usr/include/freetype2 \
- $(STAGING_DIR)/usr/include/ft2build.h \
- $(STAGING_DIR)/usr/lib/libfreetype.{a,so*} \
- $(STAGING_DIR)/usr/lib/pkgconfig/freetype2.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/freetype/ipkg/libfreetype.control b/openwrt/package/freetype/ipkg/libfreetype.control
deleted file mode 100644
index c1e0ec54c3..0000000000
--- a/openwrt/package/freetype/ipkg/libfreetype.control
+++ /dev/null
@@ -1,16 +0,0 @@
-Package: libfreetype
-Priority: optional
-Section: libs
-Depends: zlib
-Description: A free, high-quality and portable font engine.
- The FreeType project is a team of volunteers who develop free,
- portable and high-quality software solutions for digital typography.
- They specifically target embedded systems and focus on bringing small,
- efficient and ubiquitous products.
- .
- The FreeType 2 library is their new software font engine. It has been
- designed to provide the following important features:
- * A universal and simple API to manage font files
- * Support for several font formats through loadable modules
- * High-quality anti-aliasing
- * High portability & performance
diff --git a/openwrt/package/frickin/Config.in b/openwrt/package/frickin/Config.in
deleted file mode 100644
index b118a111a4..0000000000
--- a/openwrt/package/frickin/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_FRICKIN
- prompt "frickin........................... PPTP (Point-to-Point Tunneling Protocol) proxy"
- tristate
- default m if CONFIG_DEVEL
- help
- Frickin PPTP Proxy allows a Point-to-Point Tunneling Protocol (PPTP)
- client to connect to a PPTP server through Network Address
- Translation (NAT).
-
- http://frickin.sourceforge.net/
-
diff --git a/openwrt/package/frickin/Makefile b/openwrt/package/frickin/Makefile
deleted file mode 100644
index a527209193..0000000000
--- a/openwrt/package/frickin/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=frickin
-PKG_VERSION:=1.3
-PKG_RELEASE:=1
-PKG_MD5SUM:= 5b2e98da2310c71c703d4617b88a173f
-
-PKG_SOURCE_URL:=@SF/frickin
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,FRICKIN,frickin,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- all
- touch $@
-
-$(IPKG_FRICKIN):
- install -d -m0755 $(IDIR_FRICKIN)/etc/default
- install -m0644 ./files/frickin.default $(IDIR_FRICKIN)/etc/default/frickin
- install -d -m0755 $(IDIR_FRICKIN)/etc/init.d
- install -m0755 ./files/frickin.init $(IDIR_FRICKIN)/etc/init.d/frickin
- install -d -m0755 $(IDIR_FRICKIN)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/frickin $(IDIR_FRICKIN)/usr/sbin/
- $(RSTRIP) $(IDIR_FRICKIN)
- $(IPKG_BUILD) $(IDIR_FRICKIN) $(PACKAGE_DIR)
diff --git a/openwrt/package/frickin/files/frickin.default b/openwrt/package/frickin/files/frickin.default
deleted file mode 100644
index 9f55d5bad2..0000000000
--- a/openwrt/package/frickin/files/frickin.default
+++ /dev/null
@@ -1,16 +0,0 @@
-# ip address of the server the proxy should connect to
-TARGET_IP=192.168.1.2
-
-# ip address the proxy should listen to for incoming connections
-#LISTEN_IP=192.168.1.1
-
-# maximum number of simultaneous connections
-#PROXY_CONN_MAX=20
-
-# user the proxy should run as
-#PROXY_USER=root
-
-[ -n "$TARGET_IP" ] && OPTIONS="$OPTIONS -s $TARGET_IP"
-[ -n "$LISTEN_IP" ] && OPTIONS="$OPTIONS -l $LISTEN_IP"
-[ -n "$PROXY_CONN_MAX" ] && OPTIONS="$OPTIONS -c $PROXY_CONN_MAX"
-[ -n "$PROXY_USER" ] && OPTIONS="$OPTIONS -u $PROXY_USER"
diff --git a/openwrt/package/frickin/files/frickin.init b/openwrt/package/frickin/files/frickin.init
deleted file mode 100644
index e07a0945b6..0000000000
--- a/openwrt/package/frickin/files/frickin.init
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-
-BIN=frickin
-DEFAULT=/etc/default/$BIN
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- $BIN $OPTIONS &
- ;;
- *)
- echo "usage: $0 (start)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/frickin/ipkg/frickin.conffiles b/openwrt/package/frickin/ipkg/frickin.conffiles
deleted file mode 100644
index f374430c3b..0000000000
--- a/openwrt/package/frickin/ipkg/frickin.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/default/frickin
diff --git a/openwrt/package/frickin/ipkg/frickin.control b/openwrt/package/frickin/ipkg/frickin.control
deleted file mode 100644
index a8b3fb4f0e..0000000000
--- a/openwrt/package/frickin/ipkg/frickin.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: frickin
-Priority: optional
-Section: net
-Description: PPTP (Point-to-Point Tunneling Protocol) proxy
diff --git a/openwrt/package/fuse/Config.in b/openwrt/package/fuse/Config.in
deleted file mode 100644
index 2d8b1775a0..0000000000
--- a/openwrt/package/fuse/Config.in
+++ /dev/null
@@ -1,56 +0,0 @@
-config BR2_COMPILE_FUSE
- tristate
- default n
- depends BR2_PACKAGE_LIBFUSE
-
-config BR2_PACKAGE_LIBFUSE
- prompt "libfuse........................... FUSE library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_FUSE
- select BR2_PACKAGE_KMOD_FUSE
- select BR2_PACKAGE_LIBPTHREAD
- help
- With FUSE it is possible to implement a fully functional
- filesystem in a userspace program.
-
- Features include:
-
- * Simple library API
- * Simple installation (no need to patch or recompile the kernel)
- * Secure implementation
- * Userspace - kernel interface is very efficient
- * Usable by non privileged users
- * Runs on Linux kernels 2.4.X and 2.6.X
- * Has proven very stable over time
-
- http://fuse.sourceforge.net/
-
- This package contains the fuse shared library, needed by other programs.
-
- Depends: libpthread
-
-config BR2_PACKAGE_FUSE_UTILS
- prompt "fuse-utils...................... FUSE utilities"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBFUSE
- select BR2_PACKAGE_LIBPTHREAD
- help
- With FUSE it is possible to implement a fully functional
- filesystem in a userspace program.
-
- Features include:
-
- * Simple library API
- * Simple installation (no need to patch or recompile the kernel)
- * Secure implementation
- * Userspace - kernel interface is very efficient
- * Usable by non privileged users
- * Runs on Linux kernels 2.4.X and 2.6.X
- * Has proven very stable over time
-
- http://fuse.sourceforge.net/
-
- This package contains the fusermount userland utility.
-
diff --git a/openwrt/package/fuse/Makefile b/openwrt/package/fuse/Makefile
deleted file mode 100644
index 646b9d22ec..0000000000
--- a/openwrt/package/fuse/Makefile
+++ /dev/null
@@ -1,108 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=fuse
-PKG_VERSION:=2.5.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=ea565debe6c7486963bef05c45c50361
-
-PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBFUSE,libfuse,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,FUSE_UTILS,fuse-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); \
- rm -rf config.{cache,status} ; \
- touch configure.in ; \
- touch aclocal.m4 ; \
- touch Makefile.in ; \
- touch include/config.h.in ; \
- touch configure ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --disable-kernel-module \
- --enable-lib \
- --enable-util \
- --disable-example \
- --disable-auto-modprobe \
- --with-kernel=$(LINUX_DIR) \
- --disable-mtab \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBFUSE):
- mkdir -p $(IDIR_LIBFUSE)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfuse.so.* $(IDIR_LIBFUSE)/usr/lib/
- $(RSTRIP) $(IDIR_LIBFUSE)
- $(IPKG_BUILD) $(IDIR_LIBFUSE) $(PACKAGE_DIR)
-
-$(IPKG_FUSE_UTILS):
- mkdir -p $(IDIR_FUSE_UTILS)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/fusermount $(IDIR_FUSE_UTILS)/usr/bin/
- $(RSTRIP) $(IDIR_FUSE_UTILS)
- $(IPKG_BUILD) $(IDIR_FUSE_UTILS) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libfuse.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/fuse $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/fuse.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfuse.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfuse.so* $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/fuse.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I$${includedir}/fuse,,g' $(STAGING_DIR)/usr/lib/pkgconfig/fuse.pc
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/fuse.pc
-
-install-dev: $(STAGING_DIR)/usr/lib/libfuse.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/fuse \
- $(STAGING_DIR)/usr/include/fuse.h \
- $(STAGING_DIR)/usr/lib/libfuse.a \
- $(STAGING_DIR)/usr/lib/libfuse.so* \
- $(STAGING_DIR)/usr/lib/pkgconfig/fuse.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/fuse/ipkg/fuse-utils.control b/openwrt/package/fuse/ipkg/fuse-utils.control
deleted file mode 100644
index c8b66b759d..0000000000
--- a/openwrt/package/fuse/ipkg/fuse-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: fuse-utils
-Priority: optional
-Section: admin
-Depends: kmod-fuse
-Description: Filesystem in Userspace (utilities)
diff --git a/openwrt/package/fuse/ipkg/libfuse.control b/openwrt/package/fuse/ipkg/libfuse.control
deleted file mode 100644
index 9c3bcb504d..0000000000
--- a/openwrt/package/fuse/ipkg/libfuse.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libfuse
-Priority: optional
-Section: libs
-Depends: libpthread
-Description: Filesystem in Userspace (library)
diff --git a/openwrt/package/fuse/patches/111-uclibc_changes.patch b/openwrt/package/fuse/patches/111-uclibc_changes.patch
deleted file mode 100644
index 69730758e6..0000000000
--- a/openwrt/package/fuse/patches/111-uclibc_changes.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -ruw fuse-2.4.0/util/fusermount.c.org fuse-2.4.0/util/fusermount.c
---- fuse-2.4.0/util/fusermount.c.org 2005-10-14 11:34:06.000000000 +0200
-+++ fuse-2.4.0/util/fusermount.c 2005-10-14 11:56:26.000000000 +0200
-@@ -42,7 +42,12 @@
- #define FUSE_COMMFD_ENV "_FUSE_COMMFD"
-
- #define FUSE_DEV_OLD "/proc/fs/fuse/dev"
-+#ifdef __UCLIBC__
-+/* /dev is mounted as devfs in OpenWRT, and device is created here */
-+#define FUSE_DEV_NEW "/dev/misc/fuse"
-+#else
- #define FUSE_DEV_NEW "/dev/fuse"
-+#endif
- #define FUSE_VERSION_FILE_OLD "/proc/fs/fuse/version"
- #define FUSE_CONF "/etc/fuse.conf"
-
diff --git a/openwrt/package/fuse/patches/112-no_break_on_mknod.patch b/openwrt/package/fuse/patches/112-no_break_on_mknod.patch
deleted file mode 100644
index 96ed70f291..0000000000
--- a/openwrt/package/fuse/patches/112-no_break_on_mknod.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN fuse-2.4.1-old/util/Makefile.in fuse-2.4.1-new/util/Makefile.in
---- fuse-2.4.1-old/util/Makefile.in 2005-10-17 12:29:20.000000000 +0200
-+++ fuse-2.4.1-new/util/Makefile.in 2005-10-19 17:11:13.000000000 +0200
-@@ -445,7 +445,7 @@
- install-exec-hook:
- -chown root $(DESTDIR)$(bindir)/fusermount
- -chmod u+s $(DESTDIR)$(bindir)/fusermount
-- @if test ! -e $(DESTDIR)/dev/fuse; then \
-+ -@if test ! -e $(DESTDIR)/dev/fuse; then \
- $(mkdir_p) $(DESTDIR)/dev; \
- echo "mknod $(DESTDIR)/dev/fuse -m 0666 c 10 229"; \
- mknod $(DESTDIR)/dev/fuse -m 0666 c 10 229; \
diff --git a/openwrt/package/gcom/Config.in b/openwrt/package/gcom/Config.in
deleted file mode 100644
index 2fedc14a34..0000000000
--- a/openwrt/package/gcom/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_GCOM
- prompt "gcom.............................. Option/Vodafone 3G/GPRS control tool"
- tristate
- default m
- help
- Option GlobeTrotter GPRS/EDGE/3G/HSDPA and Vodafone 3G/GPRS datacard control tool
-
- gcom is a scripting language interpreter useful for establishing communications
- on serial lines and through PCMCIA modems as well as GPRS and 3G datacards.
-
- http://www.pharscape.org/content/view/46/70/
diff --git a/openwrt/package/gcom/Makefile b/openwrt/package/gcom/Makefile
deleted file mode 100644
index cc739a4df6..0000000000
--- a/openwrt/package/gcom/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=gcom
-PKG_VERSION:=0.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=cd32663025ed94a0ee623a689989f3c3
-
-PKG_SOURCE_URL:=http://www.pharscape.org/3G/gcom
-PKG_SOURCE:=$(PKG_NAME)$(PKG_VERSION).tgz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,GCOM,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.prepared:
- rm -rf $(PKG_BUILD_DIR)
- mkdir -p $(PKG_BUILD_DIR)
- # the .tgz is different - no subdirectory, so do this manually
- zcat $(DL_DIR)/$(PKG_SOURCE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS) -
- if [ -d ./patches ]; then $(PATCH) $(PKG_BUILD_DIR) ./patches ; fi
- touch $@
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC="$(TARGET_CC)" \
- CFLAGS="$(TARGET_CFLAGS)" \
- gcom
- touch $@
-
-$(IPKG_GCOM):
- install -d -m0755 $(IDIR_GCOM)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/gcom $(IDIR_GCOM)/usr/bin/
- install -d -m0755 $(IDIR_GCOM)/etc/gcom
- install -m0644 ./files/setpin.gcom $(IDIR_GCOM)/etc/gcom/setpin.gcom
- install -m0644 ./files/setmode.gcom $(IDIR_GCOM)/etc/gcom/setmode.gcom
- install -m0644 ./files/getcardinfo.gcom $(IDIR_GCOM)/etc/gcom/getcardinfo.gcom
- install -m0644 ./files/getstrength.gcom $(IDIR_GCOM)/etc/gcom/getstrength.gcom
- $(RSTRIP) $(IDIR_GCOM)
- $(IPKG_BUILD) $(IDIR_GCOM) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/gcom/files/getcardinfo.gcom b/openwrt/package/gcom/files/getcardinfo.gcom
deleted file mode 100644
index 5c69a64604..0000000000
--- a/openwrt/package/gcom/files/getcardinfo.gcom
+++ /dev/null
@@ -1,14 +0,0 @@
-opengt
- set com 115200n81
- set comecho off
- set senddelay 0.02
- waitquiet 0.2 0.2
- flash 0.1
-
-:start
- send "ATI^m"
- get 1 "" $s
- print $s
-
-:continue
- exit 0
diff --git a/openwrt/package/gcom/files/getstrength.gcom b/openwrt/package/gcom/files/getstrength.gcom
deleted file mode 100644
index 2886285971..0000000000
--- a/openwrt/package/gcom/files/getstrength.gcom
+++ /dev/null
@@ -1,14 +0,0 @@
-opengt
- set com 115200n81
- set comecho off
- set senddelay 0.02
- waitquiet 0.2 0.2
- flash 0.1
-
-:start
- send "AT+CSQ^m"
- get 1 "" $s
- print $s
-
-:continue
- exit 0
diff --git a/openwrt/package/gcom/files/setmode.gcom b/openwrt/package/gcom/files/setmode.gcom
deleted file mode 100644
index 4ce0b5fa78..0000000000
--- a/openwrt/package/gcom/files/setmode.gcom
+++ /dev/null
@@ -1,26 +0,0 @@
-# set wwan mode from environment
-opengt
- set com 115200n81
- set senddelay 0.02
- waitquiet 1 0.2
- flash 0.1
-
-:start
- print "Trying to set mode\n"
- send $env("MODE")
- send "^m"
-
- waitfor 15 "OK","ERR","ERROR"
- if % = 0 goto continue
- if % = 1 goto modeerror
- if % = 2 goto modeerror
-
- print "Timeout setting WWAN mode!\n"
- exit 1
-
-:modeerror
- print "Error setting WWAN mode!\n"
- exit 1
-
-:continue
- exit 0
diff --git a/openwrt/package/gcom/files/setpin.gcom b/openwrt/package/gcom/files/setpin.gcom
deleted file mode 100644
index 66350fe20b..0000000000
--- a/openwrt/package/gcom/files/setpin.gcom
+++ /dev/null
@@ -1,55 +0,0 @@
-# set pin code from evnironment "$PINCODE"
-opengt
- set com 115200n81
- set senddelay 0.05
- waitquiet 3 0.5
- flash 0.1
-
- let c=0
-:start
- send "AT+CPIN?^m"
- waitfor 15 "SIM PUK","SIM PIN","READY","ERROR","ERR"
- if % = -1 goto timeout
- if % = 0 goto ready
- if % = 1 goto setpin
- if % = 2 goto ready
- if % = 3 goto checkrepeat
- if % = 4 goto checkrepeat
-
-:checkrepeat
- inc c
- if c>3 goto pinerror
- waitquiet 12 0.5
- goto start
-
-:timeout
- print "timeout checking for PIN."
- exit 1
-
-:ready
- print "SIM ready\n"
- goto continue
- exit 0
-
-:setpin
- # check if output was "SIM PIN2", that's ok.
- waitfor 1 "2"
- if % = 0 goto ready
-
- print "Trying to set PIN\n"
- send "AT+CPIN=\""
- send $env("PINCODE")
- send "\"^m"
-
- waitfor 20 "OK","ERR"
- if % = -1 goto pinerror
- if % = 0 goto continue
- if % = 1 goto pinerror
-
-:pinerror
- print "Error setting PIN, check card manually\n"
- exit 1
-
-:continue
- print "PIN set successfully\n"
- exit 0
diff --git a/openwrt/package/gcom/ipkg/gcom.control b/openwrt/package/gcom/ipkg/gcom.control
deleted file mode 100644
index a51d7ebcc4..0000000000
--- a/openwrt/package/gcom/ipkg/gcom.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: gcom
-Priority: optional
-Section: console
-Description: Option GlobeTrotter GPRS/EDGE/3G/HSDPA and Vodafone 3G/GPRS datacard control tool
diff --git a/openwrt/package/gcom/patches/001-Makefile.patch b/openwrt/package/gcom/patches/001-Makefile.patch
deleted file mode 100644
index 28ea2ecf27..0000000000
--- a/openwrt/package/gcom/patches/001-Makefile.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- gcom-0.3.x/Makefile 2006-01-04 17:05:28.000000000 +0200
-+++ gcom-0.3/Makefile 2006-02-26 13:02:07.000000000 +0200
-@@ -20,8 +20,6 @@
- #
- # $Id$
- #
--LIB = -L/usr/local/lib
--INC = -I/usr/local/include
- EXE = /usr/local/bin
- MAN = /usr/share/man/man1
- CPROG = gcom
-@@ -29,9 +27,6 @@
- BIN = $(CPROG) $(SCRIPT)
- MANP = gcom.1 sigmon.1
-
--CFLAGS = -c
--LDFLAGS =
--
- all: $(BIN)
-
- install:
-@@ -53,8 +48,8 @@
-
-
- gcom: gcom.o
-- cc gcom.o $(LDFLAGS) -o gcom
-+ $(CC) gcom.o $(LDFLAGS) -o gcom
-
- gcom.o: gcom.c gcom.h
-- cc gcom.c $(CFLAGS)
-+ $(CC) -c $(CFLAGS) gcom.c
-
diff --git a/openwrt/package/gdbserver/Config.in b/openwrt/package/gdbserver/Config.in
deleted file mode 100644
index df74ff6143..0000000000
--- a/openwrt/package/gdbserver/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_GDBSERVER
- prompt "gdbserver......................... Remote Server for the GNU Debugger"
- tristate
- default m if CONFIG_DEVEL
- help
- GDBSERVER is a program that allows you to run GDB on a different machine
- than the one which is running the program being debugged.
-
diff --git a/openwrt/package/gdbserver/Makefile b/openwrt/package/gdbserver/Makefile
deleted file mode 100644
index 922e631230..0000000000
--- a/openwrt/package/gdbserver/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=gdbserver
-PKG_VERSION:=6.3
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-GDB_DIR:=$(TOOL_BUILD_DIR)/gdb-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,GDBSERVER,gdbserver,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-
-$(PKG_BUILD_DIR)/.prepared:
- rm -rf $(PKG_BUILD_DIR)
- mkdir -p $(PKG_BUILD_DIR)
- touch $@
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- $(GDB_DIR)/gdb/gdbserver/configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- touch $@
-
-$(IPKG_GDBSERVER):
- install -m0755 -d $(IDIR_GDBSERVER)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/gdbserver $(IDIR_GDBSERVER)/usr/bin/
- $(RSTRIP) $(IDIR_GDBSERVER)
- $(IPKG_BUILD) $(IDIR_GDBSERVER) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/gdbserver/ipkg/gdbserver.control b/openwrt/package/gdbserver/ipkg/gdbserver.control
deleted file mode 100644
index f12eebe1cc..0000000000
--- a/openwrt/package/gdbserver/ipkg/gdbserver.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: gdbserver
-Priority: optional
-Section: devel
-Description: Remote Server for the GNU Debugger
diff --git a/openwrt/package/glib/Config.in b/openwrt/package/glib/Config.in
deleted file mode 100644
index f11c06370f..0000000000
--- a/openwrt/package/glib/Config.in
+++ /dev/null
@@ -1,18 +0,0 @@
-config BR2_COMPILE_GLIB
- tristate
- depends BR2_PACKAGE_GLIB1
-
-config BR2_PACKAGE_GLIB1
- prompt "glib1............................. The GLib library of C routines (v1.2)"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_GLIB
- select BR2_PACKAGE_LIBPTHREAD
- help
- GLib is a library containing many useful C routines for things such
- as trees, hashes, and lists.
-
- http://www.gtk.org/
-
- Depends: libpthread
-
diff --git a/openwrt/package/glib/Makefile b/openwrt/package/glib/Makefile
deleted file mode 100644
index cb697995db..0000000000
--- a/openwrt/package/glib/Makefile
+++ /dev/null
@@ -1,113 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME := glib
-PKG_VERSION := 1.2.10
-PKG_RELEASE := 1
-PKG_MD5SUM := 6fe30dad87c77b91b632def29dd69ef9
-
-PKG_SOURCE_URL := ftp://ftp.gtk.org/pub/gtk/v1.2 \
- http://ftp.gwdg.de/pub/misc/grafik/gimp/gtk/v1.2/ \
- http://ftp.esat.net/mirrors/ftp.gimp.org/pub/gtk/v1.2/ \
- http://www.mirrorservice.org/sites/ftp.gimp.org/pub/gtk/v1.2/
-PKG_SOURCE := $(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT := zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,GLIB1,glib1,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- glib_cv_sizeof_gmutex=24 \
- ac_cv_sizeof_char=1 \
- ac_cv_sizeof_short=2 \
- ac_cv_sizeof_int=4 \
- ac_cv_sizeof_long=4 \
- ac_cv_sizeof_long_long=8 \
- ac_cv_sizeof_void_p=4 \
- glib_cv_prog_cc_ansi_proto="no" \
- glib_cv_has__inline="yes" \
- glib_cv_has__inline__="yes" \
- glib_cv_hasinline="yes" \
- glib_cv_sane_realloc="yes" \
- glib_cv_va_copy="no" \
- glib_cv___va_copy="yes" \
- glib_cv_va_val_copy="yes" \
- glib_cv_rtldglobal_broken="no" \
- glib_cv_uscore="no" \
- ac_cv_func_getpwuid_r="yes" \
- glib_cv_func_pthread_mutex_trylock_posix="yes" \
- glib_cv_func_pthread_cond_timedwait_posix="yes" \
- glib_cv_sizeof_gmutex="24" \
- glib_cv_byte_contents_gmutex="0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared=yes \
- --enable-static=yes \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- touch $@
-
-$(IPKG_GLIB1):
- install -m0755 -d $(IDIR_GLIB1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libg{lib,module,thread}-1.2.so.* $(IDIR_GLIB1)/usr/lib/
- $(RSTRIP) $(IDIR_GLIB1)
- $(IPKG_BUILD) $(IDIR_GLIB1) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libglib.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/glib-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/glib-1.2 $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_BUILD_DIR)/glibconfig-sysdefs.h $(STAGING_DIR)/usr/include/glib-1.2/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libg{lib,module,thread}.{a,so} $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libg{lib,module,thread}-*.so.* $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/glib $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/g{lib,module,thread}.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- touch $(STAGING_DIR)/usr/lib/libglib.so
-
-install-dev: $(STAGING_DIR)/usr/lib/libglib.so
-
-uninstall-dev:
- rm -rf $(STAGING_DIR)/usr/bin/glib-config
- rm -rf $(STAGING_DIR)/usr/include/glib-1.2
- rm -rf $(STAGING_DIR)/usr/lib/libg{lib,module,thread}.{a,so}
- rm -rf $(STAGING_DIR)/usr/lib/libg{lib,module,thread}-*.so.*
- rm -rf $(STAGING_DIR)/usr/lib/glib
- rm -rf $(STAGING_DIR)/usr/lib/pkgconfig/g{lib,module,thread}.pc
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/glib/ipkg/glib1.control b/openwrt/package/glib/ipkg/glib1.control
deleted file mode 100644
index def028d493..0000000000
--- a/openwrt/package/glib/ipkg/glib1.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: glib1
-Priority: optional
-Section: libs
-Description: The GLib library of C routines
-Depends: libpthread
diff --git a/openwrt/package/glib/patches/01-debian-9 b/openwrt/package/glib/patches/01-debian-9
deleted file mode 100644
index 20608c0e8c..0000000000
--- a/openwrt/package/glib/patches/01-debian-9
+++ /dev/null
@@ -1,18988 +0,0 @@
---- glib1.2-1.2.10.orig/Makefile.in
-+++ glib1.2-1.2.10/Makefile.in
-@@ -1,6 +1,6 @@
--# Makefile.in generated automatically by automake 1.4 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
--# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -64,8 +64,10 @@
- AS = @AS@
- CC = @CC@
- DLLTOOL = @DLLTOOL@
-+ECHO = @ECHO@
- ENABLE_MEM_CHECK = @ENABLE_MEM_CHECK@
- ENABLE_MEM_PROFILE = @ENABLE_MEM_PROFILE@
-+EXEEXT = @EXEEXT@
- GLIB_BINARY_AGE = @GLIB_BINARY_AGE@
- GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@
- GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@
-@@ -90,8 +92,10 @@
- MAINT = @MAINT@
- MAKEINFO = @MAKEINFO@
- OBJDUMP = @OBJDUMP@
-+OBJEXT = @OBJEXT@
- PACKAGE = @PACKAGE@
- RANLIB = @RANLIB@
-+STRIP = @STRIP@
- VERSION = @VERSION@
-
- AUTOMAKE_OPTIONS = 1.4
-@@ -154,18 +158,20 @@
- gmain.lo gmem.lo gmessages.lo gmutex.lo gnode.lo gprimes.lo grel.lo \
- gscanner.lo gslist.lo gstrfuncs.lo gstring.lo gtimer.lo gtree.lo \
- gutils.lo
-+noinst_PROGRAMS = testglib$(EXEEXT) testgdate$(EXEEXT) \
-+testgdateparser$(EXEEXT)
- PROGRAMS = $(noinst_PROGRAMS)
-
- testglib_SOURCES = testglib.c
--testglib_OBJECTS = testglib.o
-+testglib_OBJECTS = testglib.$(OBJEXT)
- testglib_DEPENDENCIES = libglib.la
- testglib_LDFLAGS =
- testgdate_SOURCES = testgdate.c
--testgdate_OBJECTS = testgdate.o
-+testgdate_OBJECTS = testgdate.$(OBJEXT)
- testgdate_DEPENDENCIES = libglib.la
- testgdate_LDFLAGS =
- testgdateparser_SOURCES = testgdateparser.c
--testgdateparser_OBJECTS = testgdateparser.o
-+testgdateparser_OBJECTS = testgdateparser.$(OBJEXT)
- testgdateparser_DEPENDENCIES = libglib.la
- testgdateparser_LDFLAGS =
- SCRIPTS = $(bin_SCRIPTS)
-@@ -180,22 +186,22 @@
- HEADERS = $(glibinclude_HEADERS)
-
- DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \
--Makefile.am Makefile.in NEWS acconfig.h acinclude.m4 aclocal.m4 \
--config.guess config.h.in config.sub configure configure.in \
--glib-config.in glib.pc.in glib.spec.in gmodule.pc.in gthread.pc.in \
--install-sh ltconfig ltmain.sh missing mkinstalldirs
-+Makefile.am Makefile.in NEWS acconfig.h aclocal.m4 config.guess \
-+config.h.in config.sub configure configure.in glib-config.in glib.pc.in \
-+glib.spec.in gmodule.pc.in gthread.pc.in install-sh ltmain.sh missing \
-+mkinstalldirs
-
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- SOURCES = $(libglib_la_SOURCES) testglib.c testgdate.c testgdateparser.c
--OBJECTS = $(libglib_la_OBJECTS) testglib.o testgdate.o testgdateparser.o
-+OBJECTS = $(libglib_la_OBJECTS) testglib.$(OBJEXT) testgdate.$(OBJEXT) testgdateparser.$(OBJEXT)
-
- all: all-redirect
- .SUFFIXES:
--.SUFFIXES: .S .c .lo .o .s
-+.SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
-
-@@ -203,7 +209,7 @@
- cd $(top_builddir) \
- && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
--$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
-+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in
- cd $(srcdir) && $(ACLOCAL)
-
- config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-@@ -277,6 +283,11 @@
- .c.o:
- $(COMPILE) -c $<
-
-+# FIXME: We should only use cygpath when building on Windows,
-+# and only if it is available.
-+.c.obj:
-+ $(COMPILE) -c `cygpath -w $<`
-+
- .s.o:
- $(COMPILE) -c $<
-
-@@ -285,6 +296,7 @@
-
- mostlyclean-compile:
- -rm -f *.o core *.core
-+ -rm -f *.$(OBJEXT)
-
- clean-compile:
-
-@@ -324,16 +336,16 @@
-
- maintainer-clean-noinstPROGRAMS:
-
--testglib: $(testglib_OBJECTS) $(testglib_DEPENDENCIES)
-- @rm -f testglib
-+testglib$(EXEEXT): $(testglib_OBJECTS) $(testglib_DEPENDENCIES)
-+ @rm -f testglib$(EXEEXT)
- $(LINK) $(testglib_LDFLAGS) $(testglib_OBJECTS) $(testglib_LDADD) $(LIBS)
-
--testgdate: $(testgdate_OBJECTS) $(testgdate_DEPENDENCIES)
-- @rm -f testgdate
-+testgdate$(EXEEXT): $(testgdate_OBJECTS) $(testgdate_DEPENDENCIES)
-+ @rm -f testgdate$(EXEEXT)
- $(LINK) $(testgdate_LDFLAGS) $(testgdate_OBJECTS) $(testgdate_LDADD) $(LIBS)
-
--testgdateparser: $(testgdateparser_OBJECTS) $(testgdateparser_DEPENDENCIES)
-- @rm -f testgdateparser
-+testgdateparser$(EXEEXT): $(testgdateparser_OBJECTS) $(testgdateparser_DEPENDENCIES)
-+ @rm -f testgdateparser$(EXEEXT)
- $(LINK) $(testgdateparser_LDFLAGS) $(testgdateparser_OBJECTS) $(testgdateparser_LDADD) $(LIBS)
-
- install-binSCRIPTS: $(bin_SCRIPTS)
-@@ -463,7 +475,7 @@
- dot_seen=no; \
- rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
- rev="$$subdir $$rev"; \
-- test "$$subdir" = "." && dot_seen=yes; \
-+ test "$$subdir" != "." || dot_seen=yes; \
- done; \
- test "$$dot_seen" = "no" && rev=". $$rev"; \
- target=`echo $@ | sed s/-recursive//`; \
-@@ -505,7 +517,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -575,35 +587,6 @@
- fi; \
- done
- $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
--garray.lo garray.o : garray.c glib.h glibconfig.h
--gcache.lo gcache.o : gcache.c glib.h glibconfig.h
--gcompletion.lo gcompletion.o : gcompletion.c glib.h glibconfig.h
--gdataset.lo gdataset.o : gdataset.c glib.h glibconfig.h
--gdate.lo gdate.o : gdate.c config.h glib.h glibconfig.h
--gerror.lo gerror.o : gerror.c config.h glib.h glibconfig.h
--ghash.lo ghash.o : ghash.c glib.h glibconfig.h
--ghook.lo ghook.o : ghook.c glib.h glibconfig.h
--giochannel.lo giochannel.o : giochannel.c config.h glib.h glibconfig.h
--giounix.lo giounix.o : giounix.c glib.h glibconfig.h
--glist.lo glist.o : glist.c glib.h glibconfig.h
--gmain.lo gmain.o : gmain.c config.h glib.h glibconfig.h
--gmem.lo gmem.o : gmem.c config.h glib.h glibconfig.h
--gmessages.lo gmessages.o : gmessages.c config.h glib.h glibconfig.h
--gmutex.lo gmutex.o : gmutex.c glib.h glibconfig.h
--gnode.lo gnode.o : gnode.c glib.h glibconfig.h
--gprimes.lo gprimes.o : gprimes.c glib.h glibconfig.h
--grel.lo grel.o : grel.c glib.h glibconfig.h
--gscanner.lo gscanner.o : gscanner.c config.h glib.h glibconfig.h
--gslist.lo gslist.o : gslist.c glib.h glibconfig.h
--gstrfuncs.lo gstrfuncs.o : gstrfuncs.c config.h glib.h glibconfig.h
--gstring.lo gstring.o : gstring.c glib.h glibconfig.h
--gtimer.lo gtimer.o : gtimer.c config.h glib.h glibconfig.h
--gtree.lo gtree.o : gtree.c glib.h glibconfig.h
--gutils.lo gutils.o : gutils.c config.h glibconfig.h glib.h
--testgdate.o: testgdate.c glib.h glibconfig.h
--testgdateparser.o: testgdateparser.c glib.h glibconfig.h
--testglib.o: testglib.c glib.h glibconfig.h
--
- info-am:
- info: info-recursive
- dvi-am:
---- glib1.2-1.2.10.orig/aclocal.m4
-+++ glib1.2-1.2.10/aclocal.m4
-@@ -1,6 +1,6 @@
--dnl aclocal.m4 generated automatically by aclocal 1.4
-+dnl aclocal.m4 generated automatically by aclocal 1.4-p6
-
--dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-+dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
- dnl with or without modifications, as long as this notice is preserved.
-@@ -10,135 +10,3114 @@
- dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- dnl PARTICULAR PURPOSE.
-
-+# Do all the work for Automake. This macro actually does too much --
-+# some checks are only needed if your package does certain things.
-+# But this isn't really a big deal.
-
--# serial 40 AC_PROG_LIBTOOL
--AC_DEFUN(AC_PROG_LIBTOOL,
--[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-+# serial 1
-+
-+dnl Usage:
-+dnl AM_INIT_AUTOMAKE(package,version, [no-define])
-+
-+AC_DEFUN([AM_INIT_AUTOMAKE],
-+[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-+AC_REQUIRE([AC_PROG_INSTALL])
-+PACKAGE=[$1]
-+AC_SUBST(PACKAGE)
-+VERSION=[$2]
-+AC_SUBST(VERSION)
-+dnl test to see if srcdir already configured
-+if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
-+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-+fi
-+ifelse([$3],,
-+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
-+AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
-+AC_REQUIRE([AM_SANITY_CHECK])
-+AC_REQUIRE([AC_ARG_PROGRAM])
-+dnl FIXME This is truly gross.
-+missing_dir=`cd $ac_aux_dir && pwd`
-+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
-+AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
-+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
-+AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
-+AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
-+AC_REQUIRE([AC_PROG_MAKE_SET])])
-+
-+# Copyright 2002 Free Software Foundation, Inc.
-+
-+# 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, Inc., 59 Temple Place - Suite 330, Boston, MA
-+
-+# AM_AUTOMAKE_VERSION(VERSION)
-+# ----------------------------
-+# Automake X.Y traces this macro to ensure aclocal.m4 has been
-+# generated from the m4 files accompanying Automake X.Y.
-+AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
-+
-+# AM_SET_CURRENT_AUTOMAKE_VERSION
-+# -------------------------------
-+# 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.4-p6])])
-+
-+#
-+# Check to make sure that the build environment is sane.
-+#
-+
-+AC_DEFUN([AM_SANITY_CHECK],
-+[AC_MSG_CHECKING([whether build environment is sane])
-+# Just in case
-+sleep 1
-+echo timestamp > conftestfile
-+# Do `set' in a subshell so we don't clobber the current shell's
-+# arguments. Must try -L first in case configure is actually a
-+# symlink; some systems play weird games with the mod time of symlinks
-+# (eg FreeBSD returns the mod time of the symlink's containing
-+# directory).
-+if (
-+ set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
-+ if test "[$]*" = "X"; then
-+ # -L didn't work.
-+ set X `ls -t $srcdir/configure conftestfile`
-+ fi
-+ if test "[$]*" != "X $srcdir/configure conftestfile" \
-+ && test "[$]*" != "X conftestfile $srcdir/configure"; then
-+
-+ # If neither matched, then we have a broken ls. This can happen
-+ # if, for instance, CONFIG_SHELL is bash and it inherits a
-+ # broken ls alias from the environment. This has actually
-+ # happened. Such a system could not be considered "sane".
-+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-+alias in your environment])
-+ fi
-+
-+ test "[$]2" = conftestfile
-+ )
-+then
-+ # Ok.
-+ :
-+else
-+ AC_MSG_ERROR([newly created file is older than distributed files!
-+Check your system clock])
-+fi
-+rm -f conftest*
-+AC_MSG_RESULT(yes)])
-+
-+dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
-+dnl The program must properly implement --version.
-+AC_DEFUN([AM_MISSING_PROG],
-+[AC_MSG_CHECKING(for working $2)
-+# Run test in a subshell; some versions of sh will print an error if
-+# an executable is not found, even if stderr is redirected.
-+# Redirect stdin to placate older versions of autoconf. Sigh.
-+if ($2 --version) < /dev/null > /dev/null 2>&1; then
-+ $1=$2
-+ AC_MSG_RESULT(found)
-+else
-+ $1="$3/missing $2"
-+ AC_MSG_RESULT(missing)
-+fi
-+AC_SUBST($1)])
-+
-+# Like AC_CONFIG_HEADER, but automatically create stamp file.
-+
-+AC_DEFUN([AM_CONFIG_HEADER],
-+[AC_PREREQ([2.12])
-+AC_CONFIG_HEADER([$1])
-+dnl When config.status generates a header, we must update the stamp-h file.
-+dnl This file resides in the same directory as the config header
-+dnl that is generated. We must strip everything past the first ":",
-+dnl and everything past the last "/".
-+AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
-+ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
-+<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
-+<<am_indx=1
-+for am_file in <<$1>>; do
-+ case " <<$>>CONFIG_HEADERS " in
-+ *" <<$>>am_file "*<<)>>
-+ echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
-+ ;;
-+ esac
-+ am_indx=`expr "<<$>>am_indx" + 1`
-+done<<>>dnl>>)
-+changequote([,]))])
-
--# Save cache, so that ltconfig can load it
--AC_CACHE_SAVE
-+# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*-
-
--# Actually configure libtool. ac_aux_dir is where install-sh is found.
--CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
--LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
--LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
--DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
--${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
--$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
--|| AC_MSG_ERROR([libtool configure failed])
-+# serial 46 AC_PROG_LIBTOOL
-
--# Reload cache, that may have been modified by ltconfig
--AC_CACHE_LOAD
-+AC_DEFUN([AC_PROG_LIBTOOL],
-+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-
- # This can be used to rebuild libtool when needed
--LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
-+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
-
- # Always use our own libtool.
- LIBTOOL='$(SHELL) $(top_builddir)/libtool'
- AC_SUBST(LIBTOOL)dnl
-
--# Redirect the config.log output again, so that the ltconfig log is not
--# clobbered by the next message.
--exec 5>>./config.log
-+# Prevent multiple expansion
-+define([AC_PROG_LIBTOOL], [])
- ])
-
--AC_DEFUN(AC_LIBTOOL_SETUP,
-+AC_DEFUN([AC_LIBTOOL_SETUP],
- [AC_PREREQ(2.13)dnl
- AC_REQUIRE([AC_ENABLE_SHARED])dnl
- AC_REQUIRE([AC_ENABLE_STATIC])dnl
- AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
- AC_REQUIRE([AC_CANONICAL_HOST])dnl
- AC_REQUIRE([AC_CANONICAL_BUILD])dnl
--AC_REQUIRE([AC_PROG_RANLIB])dnl
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_PROG_LD])dnl
-+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
- AC_REQUIRE([AC_PROG_NM])dnl
-+AC_REQUIRE([LT_AC_PROG_SED])dnl
-+
- AC_REQUIRE([AC_PROG_LN_S])dnl
-+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
-+AC_REQUIRE([AC_OBJEXT])dnl
-+AC_REQUIRE([AC_EXEEXT])dnl
- dnl
-
--case "$target" in
--NONE) lt_target="$host" ;;
--*) lt_target="$target" ;;
-+_LT_AC_PROG_ECHO_BACKSLASH
-+# Only perform the check for file, if the check method requires it
-+case $deplibs_check_method in
-+file_magic*)
-+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-+ AC_PATH_MAGIC
-+ fi
-+ ;;
- esac
-
--# Check for any special flags to pass to ltconfig.
--libtool_flags="--cache-file=$cache_file"
--test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
--test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
--test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
--test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
--test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
--ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
--[libtool_flags="$libtool_flags --enable-dlopen"])
-+AC_CHECK_TOOL(RANLIB, ranlib, :)
-+AC_CHECK_TOOL(STRIP, strip, :)
-+
-+ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
- ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
--[libtool_flags="$libtool_flags --enable-win32-dll"])
-+enable_win32_dll=yes, enable_win32_dll=no)
-+
- AC_ARG_ENABLE(libtool-lock,
- [ --disable-libtool-lock avoid locking (might break parallel builds)])
--test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
--test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
-+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-+
-+# Some flags need to be propagated to the compiler or linker for good
-+# libtool support.
-+case $host in
-+*-*-irix6*)
-+ # Find out which ABI we are using.
-+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-+ if AC_TRY_EVAL(ac_compile); then
-+ case `/usr/bin/file conftest.$ac_objext` in
-+ *32-bit*)
-+ LD="${LD-ld} -32"
-+ ;;
-+ *N32*)
-+ LD="${LD-ld} -n32"
-+ ;;
-+ *64-bit*)
-+ LD="${LD-ld} -64"
-+ ;;
-+ esac
-+ fi
-+ rm -rf conftest*
-+ ;;
-+
-+*-*-sco3.2v5*)
-+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-+ SAVE_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -belf"
-+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-+ [AC_LANG_SAVE
-+ AC_LANG_C
-+ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-+ AC_LANG_RESTORE])
-+ 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"
-+ fi
-+ ;;
-+
-+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
-+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-+ AC_CHECK_TOOL(AS, as, false)
-+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
-+
-+ # recent cygwin and mingw systems supply a stub DllMain which the user
-+ # can override, but on older systems we have to supply one
-+ AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain,
-+ [AC_TRY_LINK([],
-+ [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*);
-+ DllMain (0, 0, 0);],
-+ [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])])
-+
-+ case $host/$CC in
-+ *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*)
-+ # old mingw systems require "-dll" to link a DLL, while more recent ones
-+ # require "-mdll"
-+ SAVE_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -mdll"
-+ AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch,
-+ [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])])
-+ CFLAGS="$SAVE_CFLAGS" ;;
-+ *-*-cygwin* | *-*-pw32*)
-+ # cygwin systems need to pass --dll to the linker, and not link
-+ # crt.o which will require a WinMain@16 definition.
-+ lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;;
-+ esac
-+ ;;
-+ ])
-+esac
-+
-+_LT_AC_LTCONFIG_HACK
-+
-+])
-+
-+# AC_LIBTOOL_HEADER_ASSERT
-+# ------------------------
-+AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT],
-+[AC_CACHE_CHECK([whether $CC supports assert without backlinking],
-+ [lt_cv_func_assert_works],
-+ [case $host in
-+ *-*-solaris*)
-+ if test "$GCC" = yes && test "$with_gnu_ld" != yes; then
-+ case `$CC --version 2>/dev/null` in
-+ [[12]].*) lt_cv_func_assert_works=no ;;
-+ *) lt_cv_func_assert_works=yes ;;
-+ esac
-+ fi
-+ ;;
-+ esac])
-+
-+if test "x$lt_cv_func_assert_works" = xyes; then
-+ AC_CHECK_HEADERS(assert.h)
-+fi
-+])# AC_LIBTOOL_HEADER_ASSERT
-+
-+# _LT_AC_CHECK_DLFCN
-+# --------------------
-+AC_DEFUN([_LT_AC_CHECK_DLFCN],
-+[AC_CHECK_HEADERS(dlfcn.h)
-+])# _LT_AC_CHECK_DLFCN
-+
-+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-+# ---------------------------------
-+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
-+[AC_REQUIRE([AC_CANONICAL_HOST])
-+AC_REQUIRE([AC_PROG_NM])
-+AC_REQUIRE([AC_OBJEXT])
-+# Check for command to grab the raw symbol name followed by C symbol from nm.
-+AC_MSG_CHECKING([command to parse $NM output])
-+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl
-+
-+# These are sane defaults that work on at least a few old systems.
-+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-+
-+# Character class describing NM global symbol codes.
-+symcode='[[BCDEGRST]]'
-+
-+# Regexp to match symbols that can be accessed directly from C.
-+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-+
-+# Transform the above into a raw symbol and a C symbol.
-+symxfrm='\1 \2\3 \3'
-+
-+# Transform an extracted symbol line into a proper C declaration
-+lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
-+
-+# Transform an extracted symbol line into symbol name and symbol address
-+lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+
-+# Define system-specific variables.
-+case $host_os in
-+aix*)
-+ symcode='[[BCDT]]'
-+ ;;
-+cygwin* | mingw* | pw32*)
-+ symcode='[[ABCDGISTW]]'
-+ ;;
-+hpux*) # Its linker distinguishes data from code symbols
-+ lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-+ lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+ ;;
-+irix* | nonstopux*)
-+ symcode='[[BCDEGRST]]'
-+ ;;
-+osf*)
-+ symcode='[[BCDEGQRST]]'
-+ ;;
-+solaris* | sysv5*)
-+ symcode='[[BDT]]'
-+ ;;
-+sysv4)
-+ symcode='[[DFNSTU]]'
-+ ;;
-+esac
-+
-+# Handle CRLF in mingw tool chain
-+opt_cr=
-+case $host_os in
-+mingw*)
-+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-+ ;;
-+esac
-+
-+# If we're using GNU nm, then use its standard symbol codes.
-+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
-+ symcode='[[ABCDGISTW]]'
-+fi
-+
-+# Try without a prefix undercore, then with it.
-+for ac_symprfx in "" "_"; do
-+
-+ # Write the raw and C identifiers.
-+lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
-+
-+ # Check to see that the pipe works correctly.
-+ pipe_works=no
-+ rm -f conftest*
-+ cat > conftest.$ac_ext <<EOF
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+char nm_test_var;
-+void nm_test_func(){}
-+#ifdef __cplusplus
-+}
-+#endif
-+int main(){nm_test_var='a';nm_test_func();return(0);}
-+EOF
-+
-+ if AC_TRY_EVAL(ac_compile); then
-+ # Now try to grab the symbols.
-+ nlist=conftest.nm
-+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
-+ # Try sorting and uniquifying the output.
-+ if sort "$nlist" | uniq > "$nlist"T; then
-+ mv -f "$nlist"T "$nlist"
-+ else
-+ rm -f "$nlist"T
-+ fi
-+
-+ # Make sure that we snagged all the symbols we need.
-+ if egrep ' nm_test_var$' "$nlist" >/dev/null; then
-+ if egrep ' nm_test_func$' "$nlist" >/dev/null; then
-+ cat <<EOF > conftest.$ac_ext
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+EOF
-+ # Now generate the symbol file.
-+ eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
-+
-+ cat <<EOF >> conftest.$ac_ext
-+#if defined (__STDC__) && __STDC__
-+# define lt_ptr void *
-+#else
-+# define lt_ptr char *
-+# define const
-+#endif
-+
-+/* The mapping between symbol names and symbols. */
-+const struct {
-+ const char *name;
-+ lt_ptr address;
-+}
-+lt_preloaded_symbols[[]] =
-+{
-+EOF
-+ sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
-+ cat <<\EOF >> conftest.$ac_ext
-+ {0, (lt_ptr) 0}
-+};
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+EOF
-+ # Now try linking the two files.
-+ mv conftest.$ac_objext conftstm.$ac_objext
-+ save_LIBS="$LIBS"
-+ save_CFLAGS="$CFLAGS"
-+ LIBS="conftstm.$ac_objext"
-+ CFLAGS="$CFLAGS$no_builtin_flag"
-+ if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
-+ pipe_works=yes
-+ fi
-+ LIBS="$save_LIBS"
-+ CFLAGS="$save_CFLAGS"
-+ else
-+ echo "cannot find nm_test_func in $nlist" >&AC_FD_CC
-+ fi
-+ else
-+ echo "cannot find nm_test_var in $nlist" >&AC_FD_CC
-+ fi
-+ else
-+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC
-+ fi
-+ else
-+ echo "$progname: failed program was:" >&AC_FD_CC
-+ cat conftest.$ac_ext >&5
-+ fi
-+ rm -f conftest* conftst*
-+
-+ # Do not use the global_symbol_pipe unless it works.
-+ if test "$pipe_works" = yes; then
-+ break
-+ else
-+ lt_cv_sys_global_symbol_pipe=
-+ fi
-+done
-+])
-+global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
-+if test -z "$lt_cv_sys_global_symbol_pipe"; then
-+ global_symbol_to_cdecl=
-+ global_symbol_to_c_name_address=
-+else
-+ global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
-+ global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
-+fi
-+if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
-+then
-+ AC_MSG_RESULT(failed)
-+else
-+ AC_MSG_RESULT(ok)
-+fi
-+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-+
-+# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
-+# ---------------------------------
-+AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR],
-+[# Find the correct PATH separator. Usually this is `:', but
-+# DJGPP uses `;' like DOS.
-+if test "X${PATH_SEPARATOR+set}" != Xset; then
-+ UNAME=${UNAME-`uname 2>/dev/null`}
-+ case X$UNAME in
-+ *-DOS) lt_cv_sys_path_separator=';' ;;
-+ *) lt_cv_sys_path_separator=':' ;;
-+ esac
-+ PATH_SEPARATOR=$lt_cv_sys_path_separator
-+fi
-+])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
-+
-+# _LT_AC_PROG_ECHO_BACKSLASH
-+# --------------------------
-+# Add some code to the start of the generated configure script which
-+# will find an echo command which doesn't interpret backslashes.
-+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
-+[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-+ [AC_DIVERT_PUSH(NOTICE)])
-+_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
-+
-+# Check that we are running under the correct shell.
-+SHELL=${CONFIG_SHELL-/bin/sh}
-+
-+case X$ECHO in
-+X*--fallback-echo)
-+ # Remove one level of quotation (which was required for Make).
-+ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
-+ ;;
-+esac
-+
-+echo=${ECHO-echo}
-+if test "X[$]1" = X--no-reexec; then
-+ # Discard the --no-reexec flag, and continue.
-+ shift
-+elif test "X[$]1" = X--fallback-echo; then
-+ # Avoid inline document here, it may be left over
-+ :
-+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
-+ # Yippee, $echo works!
-+ :
-+else
-+ # Restart under the correct shell.
-+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-+fi
-+
-+if test "X[$]1" = X--fallback-echo; then
-+ # used as fallback echo
-+ shift
-+ cat <<EOF
-+$*
-+EOF
-+ exit 0
-+fi
-+
-+# The HP-UX ksh and POSIX shell print the target directory to stdout
-+# if CDPATH is set.
-+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-+
-+if test -z "$ECHO"; then
-+if test "X${echo_test_string+set}" != Xset; then
-+# find a string as large as possible, as long as the shell can cope with it
-+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
-+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-+ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
-+ echo_test_string="`eval $cmd`" &&
-+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
-+ then
-+ break
-+ fi
-+ done
-+fi
-+
-+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ :
-+else
-+ # The Solaris, AIX, and Digital Unix default echo programs unquote
-+ # backslashes. This makes it impossible to quote backslashes using
-+ # echo "$something" | sed 's/\\/\\\\/g'
-+ #
-+ # So, first we look for a working echo in the user's PATH.
-+
-+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for dir in $PATH /usr/ucb; do
-+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ echo="$dir/echo"
-+ break
-+ fi
-+ done
-+ IFS="$save_ifs"
-+
-+ if test "X$echo" = Xecho; then
-+ # We didn't find a better echo, so look for alternatives.
-+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ # This shell has a builtin print -r that does the trick.
-+ echo='print -r'
-+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
-+ test "X$CONFIG_SHELL" != X/bin/ksh; then
-+ # If we have ksh, try running configure again with it.
-+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-+ export ORIGINAL_CONFIG_SHELL
-+ CONFIG_SHELL=/bin/ksh
-+ export CONFIG_SHELL
-+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
-+ else
-+ # Try using printf.
-+ echo='printf %s\n'
-+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ # Cool, printf works
-+ :
-+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-+ test "X$echo_testing_string" = 'X\t' &&
-+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-+ export CONFIG_SHELL
-+ SHELL="$CONFIG_SHELL"
-+ export SHELL
-+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
-+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-+ test "X$echo_testing_string" = 'X\t' &&
-+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
-+ else
-+ # maybe with a smaller string...
-+ prev=:
-+
-+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
-+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
-+ then
-+ break
-+ fi
-+ prev="$cmd"
-+ done
-+
-+ if test "$prev" != 'sed 50q "[$]0"'; then
-+ echo_test_string=`eval $prev`
-+ export echo_test_string
-+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
-+ else
-+ # Oops. We lost completely, so just stick with echo.
-+ echo=echo
-+ fi
-+ fi
-+ fi
-+ fi
-+fi
-+fi
-+
-+# Copy echo and quote the copy suitably for passing to libtool from
-+# the Makefile, instead of quoting the original, which is used later.
-+ECHO=$echo
-+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
-+ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-+fi
-+
-+AC_SUBST(ECHO)
-+AC_DIVERT_POP
-+])# _LT_AC_PROG_ECHO_BACKSLASH
-+
-+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-+# ------------------------------------------------------------------
-+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
-+[if test "$cross_compiling" = yes; then :
-+ [$4]
-+else
-+ AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+[#line __oline__ "configure"
-+#include "confdefs.h"
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-+
-+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-+ find out it does not work in some platform. */
-+#ifndef LT_DLLAZY_OR_NOW
-+# ifdef RTLD_LAZY
-+# define LT_DLLAZY_OR_NOW RTLD_LAZY
-+# else
-+# ifdef DL_LAZY
-+# define LT_DLLAZY_OR_NOW DL_LAZY
-+# else
-+# ifdef RTLD_NOW
-+# define LT_DLLAZY_OR_NOW RTLD_NOW
-+# else
-+# ifdef DL_NOW
-+# define LT_DLLAZY_OR_NOW DL_NOW
-+# else
-+# define LT_DLLAZY_OR_NOW 0
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" void exit (int);
-+#endif
-+
-+void fnord() { int i=42;}
-+int main ()
-+{
-+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-+ int status = $lt_dlunknown;
-+
-+ if (self)
-+ {
-+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+ /* dlclose (self); */
-+ }
-+
-+ exit (status);
-+}]
-+EOF
-+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-+ (./conftest; exit; ) 2>/dev/null
-+ lt_status=$?
-+ case x$lt_status in
-+ x$lt_dlno_uscore) $1 ;;
-+ x$lt_dlneed_uscore) $2 ;;
-+ x$lt_unknown|x*) $3 ;;
-+ esac
-+ else :
-+ # compilation failed
-+ $3
-+ fi
-+fi
-+rm -fr conftest*
-+])# _LT_AC_TRY_DLOPEN_SELF
-+
-+# AC_LIBTOOL_DLOPEN_SELF
-+# -------------------
-+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
-+[if test "x$enable_dlopen" != xyes; then
-+ enable_dlopen=unknown
-+ enable_dlopen_self=unknown
-+ enable_dlopen_self_static=unknown
-+else
-+ lt_cv_dlopen=no
-+ lt_cv_dlopen_libs=
-+
-+ case $host_os in
-+ beos*)
-+ lt_cv_dlopen="load_add_on"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ lt_cv_dlopen="LoadLibrary"
-+ lt_cv_dlopen_libs=
-+ ;;
-+
-+ *)
-+ AC_CHECK_FUNC([shl_load],
-+ [lt_cv_dlopen="shl_load"],
-+ [AC_CHECK_LIB([dld], [shl_load],
-+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
-+ [AC_CHECK_FUNC([dlopen],
-+ [lt_cv_dlopen="dlopen"],
-+ [AC_CHECK_LIB([dl], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-+ [AC_CHECK_LIB([svld], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-+ [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+ ])
-+ ])
-+ ])
-+ ])
-+ ;;
-+ esac
-+
-+ if test "x$lt_cv_dlopen" != xno; then
-+ enable_dlopen=yes
-+ else
-+ enable_dlopen=no
-+ fi
-+
-+ case $lt_cv_dlopen in
-+ dlopen)
-+ save_CPPFLAGS="$CPPFLAGS"
-+ AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
-+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-+
-+ save_LDFLAGS="$LDFLAGS"
-+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-+
-+ save_LIBS="$LIBS"
-+ LIBS="$lt_cv_dlopen_libs $LIBS"
-+
-+ AC_CACHE_CHECK([whether a program can dlopen itself],
-+ lt_cv_dlopen_self, [dnl
-+ _LT_AC_TRY_DLOPEN_SELF(
-+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-+ ])
-+
-+ if test "x$lt_cv_dlopen_self" = xyes; then
-+ LDFLAGS="$LDFLAGS $link_static_flag"
-+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-+ lt_cv_dlopen_self_static, [dnl
-+ _LT_AC_TRY_DLOPEN_SELF(
-+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
-+ ])
-+ fi
-+
-+ CPPFLAGS="$save_CPPFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+ LIBS="$save_LIBS"
-+ ;;
-+ esac
-+
-+ case $lt_cv_dlopen_self in
-+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-+ *) enable_dlopen_self=unknown ;;
-+ esac
-+
-+ case $lt_cv_dlopen_self_static in
-+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-+ *) enable_dlopen_self_static=unknown ;;
-+ esac
-+fi
-+])# AC_LIBTOOL_DLOPEN_SELF
-+
-+AC_DEFUN([_LT_AC_LTCONFIG_HACK],
-+[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl
-+# Sed substitution that helps us do robust quoting. It backslashifies
-+# metacharacters that are still active within double-quoted strings.
-+Xsed='sed -e s/^X//'
-+sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g'
-+
-+# Same as above, but do not quote variable references.
-+double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g'
-+
-+# Sed substitution to delay expansion of an escaped shell variable in a
-+# double_quote_subst'ed string.
-+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-+
-+# Constants:
-+rm="rm -f"
-+
-+# Global variables:
-+default_ofile=libtool
-+can_build_shared=yes
-+
-+# All known linkers require a `.a' archive for static linking (except M$VC,
-+# which needs '.lib').
-+libext=a
-+ltmain="$ac_aux_dir/ltmain.sh"
-+ofile="$default_ofile"
-+with_gnu_ld="$lt_cv_prog_gnu_ld"
-+need_locks="$enable_libtool_lock"
-+
-+old_CC="$CC"
-+old_CFLAGS="$CFLAGS"
-+
-+# Set sane defaults for various variables
-+test -z "$AR" && AR=ar
-+test -z "$AR_FLAGS" && AR_FLAGS=cru
-+test -z "$AS" && AS=as
-+test -z "$CC" && CC=cc
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+test -z "$LD" && LD=ld
-+test -z "$LN_S" && LN_S="ln -s"
-+test -z "$MAGIC_CMD" && MAGIC_CMD=file
-+test -z "$NM" && NM=nm
-+test -z "$OBJDUMP" && OBJDUMP=objdump
-+test -z "$RANLIB" && RANLIB=:
-+test -z "$STRIP" && STRIP=:
-+test -z "$ac_objext" && ac_objext=o
-+
-+if test x"$host" != x"$build"; then
-+ ac_tool_prefix=${host_alias}-
-+else
-+ ac_tool_prefix=
-+fi
-+
-+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
-+case $host_os in
-+linux-gnu*) ;;
-+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
-+esac
-+
-+case $host_os in
-+aix3*)
-+ # AIX sometimes has problems with the GCC collect2 program. For some
-+ # reason, if we set the COLLECT_NAMES environment variable, the problems
-+ # vanish in a puff of smoke.
-+ if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+ fi
-+ ;;
-+esac
-+
-+# Determine commands to create old-style static archives.
-+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
-+old_postinstall_cmds='chmod 644 $oldlib'
-+old_postuninstall_cmds=
-+
-+if test -n "$RANLIB"; then
-+ case $host_os in
-+ openbsd*)
-+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ *)
-+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ esac
-+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-+fi
-+
-+# Allow CC to be a program name with arguments.
-+set dummy $CC
-+compiler="[$]2"
-+
-+AC_MSG_CHECKING([for objdir])
-+rm -f .libs 2>/dev/null
-+mkdir .libs 2>/dev/null
-+if test -d .libs; then
-+ objdir=.libs
-+else
-+ # MS-DOS does not allow filenames that begin with a dot.
-+ objdir=_libs
-+fi
-+rmdir .libs 2>/dev/null
-+AC_MSG_RESULT($objdir)
-+
-+
-+AC_ARG_WITH(pic,
-+[ --with-pic try to use only PIC/non-PIC objects [default=use both]],
-+pic_mode="$withval", pic_mode=default)
-+test -z "$pic_mode" && pic_mode=default
-+
-+# We assume here that the value for lt_cv_prog_cc_pic will not be cached
-+# in isolation, and that seeing it set (from the cache) indicates that
-+# the associated values are set (in the cache) correctly too.
-+AC_MSG_CHECKING([for $compiler option to produce PIC])
-+AC_CACHE_VAL(lt_cv_prog_cc_pic,
-+[ lt_cv_prog_cc_pic=
-+ lt_cv_prog_cc_shlib=
-+ lt_cv_prog_cc_wl=
-+ lt_cv_prog_cc_static=
-+ lt_cv_prog_cc_no_builtin=
-+ lt_cv_prog_cc_can_build_shared=$can_build_shared
-+
-+ if test "$GCC" = yes; then
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-static'
-+
-+ case $host_os in
-+ aix*)
-+ # Below there is a dirty hack to force normal static linking with -ldl
-+ # The problem is because libdl dynamically linked with both libc and
-+ # libC (AIX C++ library), which obviously doesn't included in libraries
-+ # list by gcc. This cause undefined symbols with -static flags.
-+ # This hack allows C programs to be linked with "-static -ldl", but
-+ # not sure about C++ programs.
-+ lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
-+ ;;
-+ amigaos*)
-+ # FIXME: we need at least 68020 code to build shared libraries, but
-+ # adding the `-m68020' flag to GCC prevents building anything better,
-+ # like `-m68040'.
-+ lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
-+ ;;
-+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-+ # PIC is the default for these OSes.
-+ ;;
-+ darwin* | rhapsody*)
-+ # PIC is the default on this platform
-+ # Common symbols not allowed in MH_DYLIB files
-+ lt_cv_prog_cc_pic='-fno-common'
-+ ;;
-+ cygwin* | mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_cv_prog_cc_pic='-DDLL_EXPORT'
-+ ;;
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ lt_cv_prog_cc_pic=-Kconform_pic
-+ fi
-+ ;;
-+ *)
-+ lt_cv_prog_cc_pic='-fPIC'
-+ ;;
-+ esac
-+ else
-+ # PORTME Check for PIC flags for the system compiler.
-+ case $host_os in
-+ aix3* | aix4* | aix5*)
-+ lt_cv_prog_cc_wl='-Wl,'
-+ # All AIX code is PIC.
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ lt_cv_prog_cc_static='-Bstatic'
-+ else
-+ lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
-+ fi
-+ ;;
-+
-+ hpux9* | hpux10* | hpux11*)
-+ # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
-+ lt_cv_prog_cc_pic='+Z'
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-non_shared'
-+ # PIC (with -KPIC) is the default.
-+ ;;
-+
-+ cygwin* | mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_cv_prog_cc_pic='-DDLL_EXPORT'
-+ ;;
-+
-+ newsos6)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ ;;
-+
-+ osf3* | osf4* | osf5*)
-+ # All OSF/1 code is PIC.
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-non_shared'
-+ ;;
-+
-+ sco3.2v5*)
-+ lt_cv_prog_cc_pic='-Kpic'
-+ lt_cv_prog_cc_static='-dn'
-+ lt_cv_prog_cc_shlib='-belf'
-+ ;;
-+
-+ solaris*)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Wl,'
-+ ;;
-+
-+ sunos4*)
-+ lt_cv_prog_cc_pic='-PIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Qoption ld '
-+ ;;
-+
-+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Wl,'
-+ ;;
-+
-+ uts4*)
-+ lt_cv_prog_cc_pic='-pic'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ lt_cv_prog_cc_pic='-Kconform_pic'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ fi
-+ ;;
-+
-+ *)
-+ lt_cv_prog_cc_can_build_shared=no
-+ ;;
-+ esac
-+ fi
-+])
-+if test -z "$lt_cv_prog_cc_pic"; then
-+ AC_MSG_RESULT([none])
-+else
-+ AC_MSG_RESULT([$lt_cv_prog_cc_pic])
-+
-+ # Check to make sure the pic_flag actually works.
-+ AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works])
-+ AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
-+ AC_TRY_COMPILE([], [], [dnl
-+ case $host_os in
-+ hpux9* | hpux10* | hpux11*)
-+ # On HP-UX, both CC and GCC only warn that PIC is supported... then
-+ # they create non-PIC objects. So, if there were any warnings, we
-+ # assume that PIC is not supported.
-+ if test -s conftest.err; then
-+ lt_cv_prog_cc_pic_works=no
-+ else
-+ lt_cv_prog_cc_pic_works=yes
-+ fi
-+ ;;
-+ *)
-+ lt_cv_prog_cc_pic_works=yes
-+ ;;
-+ esac
-+ ], [dnl
-+ lt_cv_prog_cc_pic_works=no
-+ ])
-+ CFLAGS="$save_CFLAGS"
-+ ])
-+
-+ if test "X$lt_cv_prog_cc_pic_works" = Xno; then
-+ lt_cv_prog_cc_pic=
-+ lt_cv_prog_cc_can_build_shared=no
-+ else
-+ lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
-+ fi
-+
-+ AC_MSG_RESULT([$lt_cv_prog_cc_pic_works])
-+fi
-+
-+# Check for any special shared library compilation flags.
-+if test -n "$lt_cv_prog_cc_shlib"; then
-+ AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries])
-+ if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then :
-+ else
-+ AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure])
-+ lt_cv_prog_cc_can_build_shared=no
-+ fi
-+fi
-+
-+AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works])
-+AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl
-+ lt_cv_prog_cc_static_works=no
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
-+ AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes])
-+ LDFLAGS="$save_LDFLAGS"
-+])
-+
-+# Belt *and* braces to stop my trousers falling down:
-+test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
-+AC_MSG_RESULT([$lt_cv_prog_cc_static_works])
-+
-+pic_flag="$lt_cv_prog_cc_pic"
-+special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
-+wl="$lt_cv_prog_cc_wl"
-+link_static_flag="$lt_cv_prog_cc_static"
-+no_builtin_flag="$lt_cv_prog_cc_no_builtin"
-+can_build_shared="$lt_cv_prog_cc_can_build_shared"
-+
-+
-+# Check to see if options -o and -c are simultaneously supported by compiler
-+AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext])
-+AC_CACHE_VAL([lt_cv_compiler_c_o], [
-+$rm -r conftest 2>/dev/null
-+mkdir conftest
-+cd conftest
-+echo "int some_variable = 0;" > conftest.$ac_ext
-+mkdir out
-+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
-+# that will create temporary files in the current directory regardless of
-+# the output directory. Thus, making CWD read-only will cause this test
-+# to fail, enabling locking or at least warning the user not to do parallel
-+# builds.
-+chmod -w .
-+save_CFLAGS="$CFLAGS"
-+CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
-+compiler_c_o=no
-+if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s out/conftest.err; then
-+ lt_cv_compiler_c_o=no
-+ else
-+ lt_cv_compiler_c_o=yes
-+ fi
-+else
-+ # Append any errors to the config.log.
-+ cat out/conftest.err 1>&AC_FD_CC
-+ lt_cv_compiler_c_o=no
-+fi
-+CFLAGS="$save_CFLAGS"
-+chmod u+w .
-+$rm conftest* out/*
-+rmdir out
-+cd ..
-+rmdir conftest
-+$rm -r conftest 2>/dev/null
-+])
-+compiler_c_o=$lt_cv_compiler_c_o
-+AC_MSG_RESULT([$compiler_c_o])
-+
-+if test x"$compiler_c_o" = x"yes"; then
-+ # Check to see if we can write to a .lo
-+ AC_MSG_CHECKING([if $compiler supports -c -o file.lo])
-+ AC_CACHE_VAL([lt_cv_compiler_o_lo], [
-+ lt_cv_compiler_o_lo=no
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -c -o conftest.lo"
-+ save_objext="$ac_objext"
-+ ac_objext=lo
-+ AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s conftest.err; then
-+ lt_cv_compiler_o_lo=no
-+ else
-+ lt_cv_compiler_o_lo=yes
-+ fi
-+ ])
-+ ac_objext="$save_objext"
-+ CFLAGS="$save_CFLAGS"
-+ ])
-+ compiler_o_lo=$lt_cv_compiler_o_lo
-+ AC_MSG_RESULT([$compiler_o_lo])
-+else
-+ compiler_o_lo=no
-+fi
-+
-+# Check to see if we can do hard links to lock some files if needed
-+hard_links="nottested"
-+if test "$compiler_c_o" = no && test "$need_locks" != no; then
-+ # do not overwrite the value of need_locks provided by the user
-+ AC_MSG_CHECKING([if we can lock with hard links])
-+ hard_links=yes
-+ $rm conftest*
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ touch conftest.a
-+ ln conftest.a conftest.b 2>&5 || hard_links=no
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ AC_MSG_RESULT([$hard_links])
-+ if test "$hard_links" = no; then
-+ AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe])
-+ need_locks=warn
-+ fi
-+else
-+ need_locks=no
-+fi
-+
-+if test "$GCC" = yes; then
-+ # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
-+ AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions])
-+ echo "int some_variable = 0;" > conftest.$ac_ext
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
-+ compiler_rtti_exceptions=no
-+ AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s conftest.err; then
-+ compiler_rtti_exceptions=no
-+ else
-+ compiler_rtti_exceptions=yes
-+ fi
-+ ])
-+ CFLAGS="$save_CFLAGS"
-+ AC_MSG_RESULT([$compiler_rtti_exceptions])
-+
-+ if test "$compiler_rtti_exceptions" = "yes"; then
-+ no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
-+ else
-+ no_builtin_flag=' -fno-builtin'
-+ fi
-+fi
-+
-+# See if the linker supports building shared libraries.
-+AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries])
-+
-+allow_undefined_flag=
-+no_undefined_flag=
-+need_lib_prefix=unknown
-+need_version=unknown
-+# when you set need_version to no, make sure it does not cause -set_version
-+# flags to be left without arguments
-+archive_cmds=
-+archive_expsym_cmds=
-+old_archive_from_new_cmds=
-+old_archive_from_expsyms_cmds=
-+export_dynamic_flag_spec=
-+whole_archive_flag_spec=
-+thread_safe_flag_spec=
-+hardcode_into_libs=no
-+hardcode_libdir_flag_spec=
-+hardcode_libdir_separator=
-+hardcode_direct=no
-+hardcode_minus_L=no
-+hardcode_shlibpath_var=unsupported
-+runpath_var=
-+link_all_deplibs=unknown
-+always_export_symbols=no
-+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+# include_expsyms should be a list of space-separated symbols to be *always*
-+# included in the symbol list
-+include_expsyms=
-+# exclude_expsyms can be an egrep regular expression of symbols to exclude
-+# it will be wrapped by ` (' and `)$', so one must not match beginning or
-+# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-+# as well as any symbol that contains `d'.
-+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-+# platforms (ab)use it in PIC code, but their linkers get confused if
-+# the symbol is explicitly referenced. Since portable code cannot
-+# rely on this symbol name, it's probably fine to never include it in
-+# preloaded symbol tables.
-+extract_expsyms_cmds=
-+
-+case $host_os in
-+cygwin* | mingw* | pw32*)
-+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ if test "$GCC" != yes; then
-+ with_gnu_ld=no
-+ fi
-+ ;;
-+openbsd*)
-+ with_gnu_ld=no
-+ ;;
-+esac
-+
-+ld_shlibs=yes
-+if test "$with_gnu_ld" = yes; then
-+ # If archive_cmds runs LD, not CC, wlarc should be empty
-+ wlarc='${wl}'
-+
-+ # See if GNU ld supports shared libraries.
-+ case $host_os in
-+ aix3* | aix4* | aix5*)
-+ # On AIX, the GNU linker is very broken
-+ # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
-+ ld_shlibs=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-+*** to be unable to reliably create shared libraries on AIX.
-+*** Therefore, libtool is disabling shared libraries support. If you
-+*** really care for shared libraries, you may want to modify your PATH
-+*** so that a non-GNU linker is found, and then restart.
-+
-+EOF
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+
-+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-+ # that the semantics of dynamic libraries on AmigaOS, at least up
-+ # to version 4, is to share data among multiple programs linked
-+ # with the same dynamic library. Since this doesn't match the
-+ # behavior of shared libraries on other platforms, we can use
-+ # them.
-+ ld_shlibs=no
-+ ;;
-+
-+ beos*)
-+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ allow_undefined_flag=unsupported
-+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-+ # support --undefined. This deserves some investigation. FIXME
-+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+
-+ extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
-+ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
-+ test -f $output_objdir/impgen.exe || (cd $output_objdir && \
-+ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
-+ else $CC -o impgen impgen.c ; fi)~
-+ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
-+
-+ old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
-+
-+ # cygwin and mingw dlls have different entry points and sets of symbols
-+ # to exclude.
-+ # FIXME: what about values for MSVC?
-+ dll_entry=__cygwin_dll_entry@12
-+ dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
-+ case $host_os in
-+ mingw*)
-+ # mingw values
-+ dll_entry=_DllMainCRTStartup@12
-+ dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
-+ ;;
-+ esac
-+
-+ # mingw and cygwin differ, and it's simplest to just exclude the union
-+ # of the two symbol sets.
-+ dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
-+
-+ # recent cygwin and mingw systems supply a stub DllMain which the user
-+ # can override, but on older systems we have to supply one (in ltdll.c)
-+ if test "x$lt_cv_need_dllmain" = "xyes"; then
-+ ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
-+ ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
-+ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
-+ else
-+ ltdll_obj=
-+ ltdll_cmds=
-+ fi
-+
-+ # Extract the symbol export list from an `--export-all' def file,
-+ # then regenerate the def file from the symbol export list, so that
-+ # the compiled dll only exports the symbol export list.
-+ # Be careful not to strip the DATA tag left be newer dlltools.
-+ export_symbols_cmds="$ltdll_cmds"'
-+ $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
-+ sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
-+
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is.
-+ # If DATA tags from a recent dlltool are present, honour them!
-+ archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname-def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname-def;
-+ _lt_hint=1;
-+ cat $export_symbols | while read symbol; do
-+ set dummy \$symbol;
-+ case \[$]# in
-+ 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
-+ 4) echo " \[$]2 \[$]3 \[$]4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;;
-+ *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;;
-+ esac;
-+ _lt_hint=`expr 1 + \$_lt_hint`;
-+ done;
-+ fi~
-+ '"$ltdll_cmds"'
-+ $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
-+ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
-+ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
-+ ;;
-+
-+ netbsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-+ wlarc=
-+ else
-+ archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ fi
-+ ;;
-+
-+ solaris* | sysv5*)
-+ if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
-+ ld_shlibs=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-+*** create shared libraries on Solaris systems. Therefore, libtool
-+*** is disabling shared libraries support. We urge you to upgrade GNU
-+*** binutils to release 2.9.1 or newer. Another option is to modify
-+*** your PATH or compiler configuration so that the native linker is
-+*** used, and then restart.
-+
-+EOF
-+ elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ sunos4*)
-+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ wlarc=
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ *)
-+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+ esac
-+
-+ if test "$ld_shlibs" = yes; then
-+ runpath_var=LD_RUN_PATH
-+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
-+ export_dynamic_flag_spec='${wl}--export-dynamic'
-+ case $host_os in
-+ cygwin* | mingw* | pw32*)
-+ # dlltool doesn't understand --whole-archive et. al.
-+ whole_archive_flag_spec=
-+ ;;
-+ *)
-+ # ancient GNU ld didn't support --whole-archive et. al.
-+ if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
-+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ else
-+ whole_archive_flag_spec=
-+ fi
-+ ;;
-+ esac
-+ fi
-+else
-+ # PORTME fill in a description of your system's linker (not GNU ld)
-+ case $host_os in
-+ aix3*)
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-+ # Note: this linker hardcodes the directories in LIBPATH if there
-+ # are no directories specified by -L.
-+ hardcode_minus_L=yes
-+ if test "$GCC" = yes && test -z "$link_static_flag"; then
-+ # Neither direct hardcoding nor static linking is supported with a
-+ # broken collect2.
-+ hardcode_direct=unsupported
-+ fi
-+ ;;
-+
-+ aix4* | aix5*)
-+ if test "$host_cpu" = ia64; then
-+ # On IA64, the linker does run time linking by default, so we don't
-+ # have to do anything special.
-+ aix_use_runtimelinking=no
-+ exp_sym_flag='-Bexport'
-+ no_entry_flag=""
-+ else
-+ aix_use_runtimelinking=no
-+
-+ # Test if we are trying to use run time linking or normal
-+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-+ # need to do runtime linking.
-+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
-+ for ld_flag in $LDFLAGS; do
-+ case $ld_flag in
-+ *-brtl*)
-+ aix_use_runtimelinking=yes
-+ break
-+ ;;
-+ esac
-+ done
-+ esac
-+
-+ exp_sym_flag='-bexport'
-+ no_entry_flag='-bnoentry'
-+ fi
-+
-+ # When large executables or shared objects are built, AIX ld can
-+ # have problems creating the table of contents. If linking a library
-+ # or program results in "error TOC overflow" add -mminimal-toc to
-+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-+
-+ hardcode_direct=yes
-+ archive_cmds=''
-+ hardcode_libdir_separator=':'
-+ if test "$GCC" = yes; then
-+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
-+ collect2name=`${CC} -print-prog-name=collect2`
-+ if test -f "$collect2name" && \
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ then
-+ # We have reworked collect2
-+ hardcode_direct=yes
-+ else
-+ # We have old collect2
-+ hardcode_direct=unsupported
-+ # It fails to find uninstalled libraries when the uninstalled
-+ # path is not listed in the libpath. Setting hardcode_minus_L
-+ # to unsupported forces relinking
-+ hardcode_minus_L=yes
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_libdir_separator=
-+ fi
-+ esac
-+
-+ shared_flag='-shared'
-+ else
-+ # not using gcc
-+ if test "$host_cpu" = ia64; then
-+ shared_flag='${wl}-G'
-+ else
-+ if test "$aix_use_runtimelinking" = yes; then
-+ shared_flag='${wl}-G'
-+ else
-+ shared_flag='${wl}-bM:SRE'
-+ fi
-+ fi
-+ fi
-+
-+ # It seems that -bexpall can do strange things, so it is better to
-+ # generate a list of symbols to export.
-+ always_export_symbols=yes
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # Warning - without using the other runtime loading flags (-brtl),
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='-berok'
-+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
-+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+ else
-+ if test "$host_cpu" = ia64; then
-+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-+ allow_undefined_flag="-z nodefs"
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ else
-+ hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
-+ # Warning - without using the other run time loading flags,
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='${wl}-berok'
-+ # This is a bit strange, but is similar to how AIX traditionally builds
-+ # it's shared libraries.
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $output_objdir/$libname$release.a $output_objdir/$soname'
-+ fi
-+ fi
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ # see comment about different semantics on the GNU ld section
-+ ld_shlibs=no
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_from_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
-+ fix_srcfile_path='`cygpath -w "$srcfile"`'
-+ ;;
-+
-+ darwin* | rhapsody*)
-+ case "$host_os" in
-+ rhapsody* | darwin1.[[012]])
-+ allow_undefined_flag='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ allow_undefined_flag='-flat_namespace -undefined suppress'
-+ ;;
-+ esac
-+ # FIXME: Relying on posixy $() will cause problems for
-+ # cross-compilation, but unfortunately the echo tests do not
-+ # yet detect zsh echo's removal of \ escapes. Also zsh mangles
-+ # `"' quotes if we put them in here... so don't!
-+ archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)'
-+ # We need to add '_' to the symbols in $export_symbols first
-+ #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ whole_archive_flag_spec='-all_load $convenience'
-+ ;;
-+
-+ freebsd1*)
-+ ld_shlibs=no
-+ ;;
-+
-+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-+ # support. Future versions do this automatically, but an explicit c++rt0.o
-+ # does not break anything, and helps significantly (at the cost of a little
-+ # extra space).
-+ freebsd2.2*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-+ freebsd2*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-+ freebsd*)
-+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ hpux9* | hpux10* | hpux11*)
-+ case $host_os in
-+ hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
-+ *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
-+ esac
-+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes # Not in the search PATH, but as the default
-+ # location of the library.
-+ export_dynamic_flag_spec='${wl}-E'
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ else
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator=:
-+ link_all_deplibs=yes
-+ ;;
-+
-+ netbsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-+ else
-+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-+ fi
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ newsos6)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ openbsd*)
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ export_dynamic_flag_spec='${wl}-E'
-+ else
-+ case "$host_os" in
-+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ ;;
-+ *)
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+
-+ os2*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ allow_undefined_flag=unsupported
-+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-+ ;;
-+
-+ osf3*)
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ allow_undefined_flag=' -expect_unresolved \*'
-+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ fi
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ ;;
-+
-+ osf4* | osf5*) # as osf3* with the addition of -msym flag
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ else
-+ allow_undefined_flag=' -expect_unresolved \*'
-+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
-+
-+ #Both c and cxx compiler support -rpath directly
-+ hardcode_libdir_flag_spec='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator=:
-+ ;;
-+
-+ sco3.2v5*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ export_dynamic_flag_spec='${wl}-Bexport'
-+ ;;
-+
-+ solaris*)
-+ # gcc --version < 3.0 without binutils cannot create self contained
-+ # shared libraries reliably, requiring libgcc.a to resolve some of
-+ # the object symbols generated in some cases. Libraries that use
-+ # assert need libgcc.a to resolve __eprintf, for example. Linking
-+ # a copy of libgcc.a into every shared library to guarantee resolving
-+ # such symbols causes other problems: According to Tim Van Holder
-+ # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
-+ # (to the application) exception stack for one thing.
-+ no_undefined_flag=' -z defs'
-+ if test "$GCC" = yes; then
-+ case `$CC --version 2>/dev/null` in
-+ [[12]].*)
-+ cat <<EOF 1>&2
-+
-+*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
-+*** create self contained shared libraries on Solaris systems, without
-+*** introducing a dependency on libgcc.a. Therefore, libtool is disabling
-+*** -no-undefined support, which will at least allow you to build shared
-+*** libraries. However, you may find that when you link such libraries
-+*** into an application without using GCC, you have to manually add
-+*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to
-+*** upgrade to a newer version of GCC. Another option is to rebuild your
-+*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
-+
-+EOF
-+ no_undefined_flag=
-+ ;;
-+ esac
-+ fi
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_shlibpath_var=no
-+ case $host_os in
-+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
-+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
-+ esac
-+ link_all_deplibs=yes
-+ ;;
-+
-+ sunos4*)
-+ if test "x$host_vendor" = xsequent; then
-+ # Use $CC to link under sequent, because it throws in some extra .o
-+ # files that make .init and .fini sections work.
-+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-+ fi
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv4)
-+ case $host_vendor in
-+ sni)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes # is this really true???
-+ ;;
-+ siemens)
-+ ## LD is ld it makes a PLAMLIB
-+ ## CC just makes a GrossModule.
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ reload_cmds='$CC -r -o $output$reload_objs'
-+ hardcode_direct=no
-+ ;;
-+ motorola)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-+ ;;
-+ esac
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv4.3*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ export_dynamic_flag_spec='-Bexport'
-+ ;;
-+
-+ sysv5*)
-+ no_undefined_flag=' -z text'
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec=
-+ hardcode_shlibpath_var=no
-+ runpath_var='LD_RUN_PATH'
-+ ;;
-+
-+ uts4*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ dgux*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ ld_shlibs=yes
-+ fi
-+ ;;
-+
-+ sysv4.2uw2*)
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_minus_L=no
-+ hardcode_shlibpath_var=no
-+ hardcode_runpath_var=yes
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+
-+ sysv5uw7* | unixware7*)
-+ no_undefined_flag='${wl}-z ${wl}text'
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ fi
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ *)
-+ ld_shlibs=no
-+ ;;
-+ esac
-+fi
-+AC_MSG_RESULT([$ld_shlibs])
-+test "$ld_shlibs" = no && can_build_shared=no
-+
-+# Check hardcoding attributes.
-+AC_MSG_CHECKING([how to hardcode library paths into programs])
-+hardcode_action=
-+if test -n "$hardcode_libdir_flag_spec" || \
-+ test -n "$runpath_var"; then
-+
-+ # We can hardcode non-existant directories.
-+ if test "$hardcode_direct" != no &&
-+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
-+ # have to relink, otherwise we might link with an installed library
-+ # when we should be linking with a yet-to-be-installed one
-+ ## test "$hardcode_shlibpath_var" != no &&
-+ test "$hardcode_minus_L" != no; then
-+ # Linking always hardcodes the temporary library directory.
-+ hardcode_action=relink
-+ else
-+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
-+ hardcode_action=immediate
-+ fi
-+else
-+ # We cannot hardcode anything, or else we can only hardcode existing
-+ # directories.
-+ hardcode_action=unsupported
-+fi
-+AC_MSG_RESULT([$hardcode_action])
-+
-+striplib=
-+old_striplib=
-+AC_MSG_CHECKING([whether stripping libraries is possible])
-+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-+ AC_MSG_RESULT([yes])
-+else
-+ AC_MSG_RESULT([no])
-+fi
-+
-+reload_cmds='$LD$reload_flag -o $output$reload_objs'
-+test -z "$deplibs_check_method" && deplibs_check_method=unknown
-+
-+# PORTME Fill in your ld.so characteristics
-+AC_MSG_CHECKING([dynamic linker characteristics])
-+library_names_spec=
-+libname_spec='lib$name'
-+soname_spec=
-+postinstall_cmds=
-+postuninstall_cmds=
-+finish_cmds=
-+finish_eval=
-+shlibpath_var=
-+shlibpath_overrides_runpath=unknown
-+version_type=none
-+dynamic_linker="$host_os ld.so"
-+sys_lib_dlsearch_path_spec="/lib /usr/lib"
-+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+
-+case $host_os in
-+aix3*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix $libname.a'
-+ shlibpath_var=LIBPATH
-+
-+ # AIX has no versioning support, so we append a major version to the name.
-+ soname_spec='${libname}${release}.so$major'
-+ ;;
-+
-+aix4* | aix5*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ hardcode_into_libs=yes
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 supports IA64
-+ library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ else
-+ # With GCC up to 2.95.x, collect2 would create an import file
-+ # for dependence libraries. The import file would start with
-+ # the line `#! .'. This would cause the generated library to
-+ # depend on `.', always an invalid library. This was fixed in
-+ # development snapshots of GCC prior to 3.0.
-+ case $host_os in
-+ aix4 | aix4.[[01]] | aix4.[[01]].*)
-+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-+ echo ' yes '
-+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-+ :
-+ else
-+ can_build_shared=no
-+ fi
-+ ;;
-+ esac
-+ # AIX (on Power*) has no versioning support, so currently we can
-+ # not hardcode correct soname into executable. Probably we can
-+ # add versioning support to collect2, so additional links can
-+ # be useful in future.
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-+ # instead of lib<name>.a to let people know that these are not
-+ # typical AIX shared libraries.
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ else
-+ # We preserve .a as extension for shared libraries through AIX4.2
-+ # and later when we are not doing run time linking.
-+ library_names_spec='${libname}${release}.a $libname.a'
-+ soname_spec='${libname}${release}.so$major'
-+ fi
-+ shlibpath_var=LIBPATH
-+ fi
-+ hardcode_into_libs=yes
-+ ;;
-+
-+amigaos*)
-+ library_names_spec='$libname.ixlibrary $libname.a'
-+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
-+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
-+ ;;
-+
-+beos*)
-+ library_names_spec='${libname}.so'
-+ dynamic_linker="$host_os ld.so"
-+ shlibpath_var=LIBRARY_PATH
-+ ;;
-+
-+bsdi4*)
-+ version_type=linux
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-+ export_dynamic_flag_spec=-rdynamic
-+ # the default ld.so.conf also contains /usr/contrib/lib and
-+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-+ # libtool to hard-code these into programs
-+ ;;
-+
-+cygwin* | mingw* | pw32*)
-+ version_type=windows
-+ need_version=no
-+ need_lib_prefix=no
-+ case $GCC,$host_os in
-+ yes,cygwin*)
-+ library_names_spec='$libname.dll.a'
-+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll'
-+ postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog .libs/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $rm \$dlpath'
-+ ;;
-+ yes,mingw*)
-+ library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll'
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"`
-+ ;;
-+ yes,pw32*)
-+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
-+ ;;
-+ *)
-+ library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib'
-+ ;;
-+ esac
-+ dynamic_linker='Win32 ld.exe'
-+ # FIXME: first we should search . and the directory the executable is in
-+ shlibpath_var=PATH
-+ ;;
-+
-+darwin* | rhapsody*)
-+ dynamic_linker="$host_os dyld"
-+ version_type=darwin
-+ need_lib_prefix=no
-+ need_version=no
-+ # FIXME: Relying on posixy $() will cause problems for
-+ # cross-compilation, but unfortunately the echo tests do not
-+ # yet detect zsh echo's removal of \ escapes.
-+ library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
-+ soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
-+ shlibpath_overrides_runpath=yes
-+ shlibpath_var=DYLD_LIBRARY_PATH
-+ ;;
-+
-+freebsd1*)
-+ dynamic_linker=no
-+ ;;
-+
-+freebsd*-gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU/FreeBSD ld.so'
-+ ;;
-+
-+freebsd*)
-+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
-+ version_type=freebsd-$objformat
-+ case $version_type in
-+ freebsd-elf*)
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
-+ need_version=no
-+ need_lib_prefix=no
-+ ;;
-+ freebsd-*)
-+ library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
-+ need_version=yes
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_os in
-+ freebsd2*)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ ;;
-+ esac
-+ ;;
-+
-+gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ hardcode_into_libs=yes
-+ ;;
-+
-+hpux9* | hpux10* | hpux11*)
-+ # Give a soname corresponding to the major version so that dld.sl refuses to
-+ # link against other versions.
-+ dynamic_linker="$host_os dld.sl"
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_var=SHLIB_PATH
-+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-+ library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
-+ soname_spec='${libname}${release}.sl$major'
-+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
-+ postinstall_cmds='chmod 555 $lib'
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ nonstopux*) version_type=nonstopux ;;
-+ *) version_type=irix ;;
-+ esac
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
-+ case $host_os in
-+ irix5* | nonstopux*)
-+ libsuff= shlibsuff=
-+ ;;
-+ *)
-+ case $LD in # libtool.m4 will add one of these switches to LD
-+ *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
-+ *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
-+ *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
-+ *) libsuff= shlibsuff= libmagic=never-match;;
-+ esac
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-+ ;;
-+
-+# No shared lib support for Linux oldld, aout, or coff.
-+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
-+ dynamic_linker=no
-+ ;;
-+
-+# This must be Linux ELF.
-+linux-gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ # This implies no fast_install, which is unacceptable.
-+ # Some rework will be needed to allow for fast_install
-+ # before this can be enabled.
-+ hardcode_into_libs=yes
-+
-+ # We used to test for /lib/ld.so.1 and disable shared libraries on
-+ # powerpc, because MkLinux only supported shared libraries with the
-+ # GNU dynamic linker. Since this was broken with cross compilers,
-+ # most powerpc-linux boxes support dynamic linking these days and
-+ # people can always --disable-shared, the test was removed, and we
-+ # assume the GNU/Linux dynamic linker is in use.
-+ dynamic_linker='GNU/Linux ld.so'
-+ ;;
-+
-+netbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ dynamic_linker='NetBSD (a.out) ld.so'
-+ else
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
-+ soname_spec='${libname}${release}.so$major'
-+ dynamic_linker='NetBSD ld.elf_so'
-+ fi
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-+
-+newsos6)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+openbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ case "$host_os" in
-+ openbsd2.[[89]] | openbsd2.[[89]].*)
-+ shlibpath_overrides_runpath=no
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ esac
-+ else
-+ shlibpath_overrides_runpath=yes
-+ fi
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+os2*)
-+ libname_spec='$name'
-+ need_lib_prefix=no
-+ library_names_spec='$libname.dll $libname.a'
-+ dynamic_linker='OS/2 ld.exe'
-+ shlibpath_var=LIBPATH
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ version_type=osf
-+ need_version=no
-+ need_lib_prefix=no
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-+ hardcode_into_libs=yes
-+ ;;
-+
-+sco3.2v5*)
-+ version_type=osf
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+solaris*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ # ldd complains unless libraries are executable
-+ postinstall_cmds='chmod +x $lib'
-+ ;;
-+
-+sunos4*)
-+ version_type=sunos
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ if test "$with_gnu_ld" = yes; then
-+ need_lib_prefix=no
-+ fi
-+ need_version=yes
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_vendor in
-+ sni)
-+ shlibpath_overrides_runpath=no
-+ need_lib_prefix=no
-+ export_dynamic_flag_spec='${wl}-Blargedynsym'
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+ siemens)
-+ need_lib_prefix=no
-+ ;;
-+ motorola)
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-+ ;;
-+ esac
-+ ;;
-+
-+uts4*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+dgux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ version_type=linux
-+ library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
-+ soname_spec='$libname.so.$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ fi
-+ ;;
-+
-+*)
-+ dynamic_linker=no
-+ ;;
-+esac
-+AC_MSG_RESULT([$dynamic_linker])
-+test "$dynamic_linker" = no && can_build_shared=no
-+
-+# Report the final consequences.
-+AC_MSG_CHECKING([if libtool supports shared libraries])
-+AC_MSG_RESULT([$can_build_shared])
-+
-+AC_MSG_CHECKING([whether to build shared libraries])
-+test "$can_build_shared" = "no" && enable_shared=no
-+
-+# On AIX, shared libraries and static libraries use the same namespace, and
-+# are all built from PIC.
-+case "$host_os" in
-+aix3*)
-+ test "$enable_shared" = yes && enable_static=no
-+ if test -n "$RANLIB"; then
-+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
-+ postinstall_cmds='$RANLIB $lib'
-+ fi
-+ ;;
-+
-+aix4*)
-+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-+ test "$enable_shared" = yes && enable_static=no
-+ fi
-+ ;;
-+esac
-+AC_MSG_RESULT([$enable_shared])
-+
-+AC_MSG_CHECKING([whether to build static libraries])
-+# Make sure either enable_shared or enable_static is yes.
-+test "$enable_shared" = yes || enable_static=yes
-+AC_MSG_RESULT([$enable_static])
-+
-+if test "$hardcode_action" = relink; then
-+ # Fast installation is not supported
-+ enable_fast_install=no
-+elif test "$shlibpath_overrides_runpath" = yes ||
-+ test "$enable_shared" = no; then
-+ # Fast installation is not necessary
-+ enable_fast_install=needless
-+fi
-+
-+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-+if test "$GCC" = yes; then
-+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-+fi
-+
-+AC_LIBTOOL_DLOPEN_SELF
-+
-+if test "$enable_shared" = yes && test "$GCC" = yes; then
-+ case $archive_cmds in
-+ *'~'*)
-+ # FIXME: we may have to deal with multi-command sequences.
-+ ;;
-+ '$CC '*)
-+ # Test whether the compiler implicitly links with -lc since on some
-+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
-+ # to ld, don't add -lc before -lgcc.
-+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
-+ AC_CACHE_VAL([lt_cv_archive_cmds_need_lc],
-+ [$rm conftest*
-+ echo 'static int dummy;' > conftest.$ac_ext
-+
-+ if AC_TRY_EVAL(ac_compile); then
-+ soname=conftest
-+ lib=conftest
-+ libobjs=conftest.$ac_objext
-+ deplibs=
-+ wl=$lt_cv_prog_cc_wl
-+ compiler_flags=-v
-+ linker_flags=-v
-+ verstring=
-+ output_objdir=.
-+ libname=conftest
-+ save_allow_undefined_flag=$allow_undefined_flag
-+ allow_undefined_flag=
-+ if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
-+ then
-+ lt_cv_archive_cmds_need_lc=no
-+ else
-+ lt_cv_archive_cmds_need_lc=yes
-+ fi
-+ allow_undefined_flag=$save_allow_undefined_flag
-+ else
-+ cat conftest.err 1>&5
-+ fi])
-+ AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc])
-+ ;;
-+ esac
-+fi
-+need_lc=${lt_cv_archive_cmds_need_lc-yes}
-+
-+# The second clause should only fire when bootstrapping the
-+# libtool distribution, otherwise you forgot to ship ltmain.sh
-+# with your package, and you will get complaints that there are
-+# no rules to generate ltmain.sh.
-+if test -f "$ltmain"; then
-+ :
-+else
-+ # If there is no Makefile yet, we rely on a make rule to execute
-+ # `config.status --recheck' to rerun these tests and create the
-+ # libtool script then.
-+ test -f Makefile && make "$ltmain"
-+fi
-+
-+if test -f "$ltmain"; then
-+ trap "$rm \"${ofile}T\"; exit 1" 1 2 15
-+ $rm -f "${ofile}T"
-+
-+ echo creating $ofile
-+
-+ # Now quote all the things that may contain metacharacters while being
-+ # careful not to overquote the AC_SUBSTed values. We take copies of the
-+ # variables and quote the copies for generation of the libtool script.
-+ for var in echo old_CC old_CFLAGS SED \
-+ AR AR_FLAGS CC LD LN_S NM SHELL \
-+ reload_flag reload_cmds wl \
-+ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
-+ thread_safe_flag_spec whole_archive_flag_spec libname_spec \
-+ library_names_spec soname_spec \
-+ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
-+ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
-+ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
-+ old_striplib striplib file_magic_cmd export_symbols_cmds \
-+ deplibs_check_method allow_undefined_flag no_undefined_flag \
-+ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
-+ global_symbol_to_c_name_address \
-+ hardcode_libdir_flag_spec hardcode_libdir_separator \
-+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-+ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
-+
-+ case $var in
-+ reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
-+ old_postinstall_cmds | old_postuninstall_cmds | \
-+ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
-+ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
-+ postinstall_cmds | postuninstall_cmds | \
-+ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-+ # Double-quote double-evaled strings.
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-+ ;;
-+ *)
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-+ ;;
-+ esac
-+ done
-+
-+ cat <<__EOF__ > "${ofile}T"
-+#! $SHELL
-+
-+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-+#
-+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
-+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-+#
-+# 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.
-+#
-+# As a special exception to the GNU General Public License, if you
-+# distribute this file as part of a program that contains a
-+# configuration script generated by Autoconf, you may include it under
-+# the same distribution terms that you use for the rest of that program.
-+
-+# A sed that does not truncate output.
-+SED=$lt_SED
-+
-+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-+Xsed="${SED} -e s/^X//"
-+
-+# The HP-UX ksh and POSIX shell print the target directory to stdout
-+# if CDPATH is set.
-+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-+
-+# ### BEGIN LIBTOOL CONFIG
-+
-+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-+
-+# Shell to use when invoking shell scripts.
-+SHELL=$lt_SHELL
-+
-+# Whether or not to build shared libraries.
-+build_libtool_libs=$enable_shared
-+
-+# Whether or not to build static libraries.
-+build_old_libs=$enable_static
-+
-+# Whether or not to add -lc for building shared libraries.
-+build_libtool_need_lc=$need_lc
-+
-+# Whether or not to optimize for fast installation.
-+fast_install=$enable_fast_install
-+
-+# The host system.
-+host_alias=$host_alias
-+host=$host
-+
-+# An echo program that does not interpret backslashes.
-+echo=$lt_echo
-+
-+# The archiver.
-+AR=$lt_AR
-+AR_FLAGS=$lt_AR_FLAGS
-+
-+# The default C compiler.
-+CC=$lt_CC
-+
-+# Is the compiler the GNU C compiler?
-+with_gcc=$GCC
-+
-+# The linker used to build libraries.
-+LD=$lt_LD
-+
-+# Whether we need hard or soft links.
-+LN_S=$lt_LN_S
-+
-+# A BSD-compatible nm program.
-+NM=$lt_NM
-+
-+# A symbol stripping program
-+STRIP=$STRIP
-+
-+# Used to examine libraries when file_magic_cmd begins "file"
-+MAGIC_CMD=$MAGIC_CMD
-+
-+# Used on cygwin: DLL creation program.
-+DLLTOOL="$DLLTOOL"
-+
-+# Used on cygwin: object dumper.
-+OBJDUMP="$OBJDUMP"
-+
-+# Used on cygwin: assembler.
-+AS="$AS"
-+
-+# The name of the directory that contains temporary libtool files.
-+objdir=$objdir
-+
-+# How to create reloadable object files.
-+reload_flag=$lt_reload_flag
-+reload_cmds=$lt_reload_cmds
-+
-+# How to pass a linker flag through the compiler.
-+wl=$lt_wl
-+
-+# Object file suffix (normally "o").
-+objext="$ac_objext"
-+
-+# Old archive suffix (normally "a").
-+libext="$libext"
-+
-+# Executable file suffix (normally "").
-+exeext="$exeext"
-+
-+# Additional compiler flags for building library objects.
-+pic_flag=$lt_pic_flag
-+pic_mode=$pic_mode
-+
-+# Does compiler simultaneously support -c and -o options?
-+compiler_c_o=$lt_compiler_c_o
-+
-+# Can we write directly to a .lo ?
-+compiler_o_lo=$lt_compiler_o_lo
-+
-+# Must we lock files when doing compilation ?
-+need_locks=$lt_need_locks
-+
-+# Do we need the lib prefix for modules?
-+need_lib_prefix=$need_lib_prefix
-+
-+# Do we need a version for libraries?
-+need_version=$need_version
-+
-+# Whether dlopen is supported.
-+dlopen_support=$enable_dlopen
-+
-+# Whether dlopen of programs is supported.
-+dlopen_self=$enable_dlopen_self
-+
-+# Whether dlopen of statically linked programs is supported.
-+dlopen_self_static=$enable_dlopen_self_static
-+
-+# Compiler flag to prevent dynamic linking.
-+link_static_flag=$lt_link_static_flag
-+
-+# Compiler flag to turn off builtin functions.
-+no_builtin_flag=$lt_no_builtin_flag
-+
-+# Compiler flag to allow reflexive dlopens.
-+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-+
-+# Compiler flag to generate shared objects directly from archives.
-+whole_archive_flag_spec=$lt_whole_archive_flag_spec
-+
-+# Compiler flag to generate thread-safe objects.
-+thread_safe_flag_spec=$lt_thread_safe_flag_spec
-+
-+# Library versioning type.
-+version_type=$version_type
-+
-+# Format of library name prefix.
-+libname_spec=$lt_libname_spec
-+
-+# List of archive names. First name is the real one, the rest are links.
-+# The last name is the one that the linker finds with -lNAME.
-+library_names_spec=$lt_library_names_spec
-+
-+# The coded name of the library, if different from the real name.
-+soname_spec=$lt_soname_spec
-+
-+# Commands used to build and install an old-style archive.
-+RANLIB=$lt_RANLIB
-+old_archive_cmds=$lt_old_archive_cmds
-+old_postinstall_cmds=$lt_old_postinstall_cmds
-+old_postuninstall_cmds=$lt_old_postuninstall_cmds
-+
-+# Create an old-style archive from a shared archive.
-+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-+
-+# Create a temporary old-style archive to link instead of a shared archive.
-+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-+
-+# Commands used to build and install a shared archive.
-+archive_cmds=$lt_archive_cmds
-+archive_expsym_cmds=$lt_archive_expsym_cmds
-+postinstall_cmds=$lt_postinstall_cmds
-+postuninstall_cmds=$lt_postuninstall_cmds
-+
-+# Commands to strip libraries.
-+old_striplib=$lt_old_striplib
-+striplib=$lt_striplib
-+
-+# Method to check whether dependent libraries are shared objects.
-+deplibs_check_method=$lt_deplibs_check_method
-+
-+# Command to use when deplibs_check_method == file_magic.
-+file_magic_cmd=$lt_file_magic_cmd
-+
-+# Flag that allows shared libraries with undefined symbols to be built.
-+allow_undefined_flag=$lt_allow_undefined_flag
-+
-+# Flag that forces no undefined symbols.
-+no_undefined_flag=$lt_no_undefined_flag
-+
-+# Commands used to finish a libtool library installation in a directory.
-+finish_cmds=$lt_finish_cmds
-+
-+# Same as above, but a single script fragment to be evaled but not shown.
-+finish_eval=$lt_finish_eval
-+
-+# Take the output of nm and produce a listing of raw symbols and C names.
-+global_symbol_pipe=$lt_global_symbol_pipe
-+
-+# Transform the output of nm in a proper C declaration
-+global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
-+
-+# Transform the output of nm in a C name address pair
-+global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
-+
-+# This is the shared library runtime path variable.
-+runpath_var=$runpath_var
-+
-+# This is the shared library path variable.
-+shlibpath_var=$shlibpath_var
-+
-+# Is shlibpath searched before the hard-coded library search path?
-+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-+
-+# How to hardcode a shared library path into an executable.
-+hardcode_action=$hardcode_action
-+
-+# Whether we should hardcode library paths into libraries.
-+hardcode_into_libs=$hardcode_into_libs
-+
-+# Flag to hardcode \$libdir into a binary during linking.
-+# This must work even if \$libdir does not exist.
-+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-+
-+# Whether we need a single -rpath flag with a separated argument.
-+hardcode_libdir_separator=$lt_hardcode_libdir_separator
-+
-+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_direct=$hardcode_direct
-+
-+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_minus_L=$hardcode_minus_L
-+
-+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-+# the resulting binary.
-+hardcode_shlibpath_var=$hardcode_shlibpath_var
-+
-+# Variables whose values should be saved in libtool wrapper scripts and
-+# restored at relink time.
-+variables_saved_for_relink="$variables_saved_for_relink"
-+
-+# Whether libtool must link a program against all its dependency libraries.
-+link_all_deplibs=$link_all_deplibs
-+
-+# Compile-time system search path for libraries
-+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-+
-+# Run-time system search path for libraries
-+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-+
-+# Fix the shell variable \$srcfile for the compiler.
-+fix_srcfile_path="$fix_srcfile_path"
-+
-+# Set to yes if exported symbols are required.
-+always_export_symbols=$always_export_symbols
-+
-+# The commands to list exported symbols.
-+export_symbols_cmds=$lt_export_symbols_cmds
-+
-+# The commands to extract the exported symbol list from a shared archive.
-+extract_expsyms_cmds=$lt_extract_expsyms_cmds
-+
-+# Symbols that should not be listed in the preloaded symbols.
-+exclude_expsyms=$lt_exclude_expsyms
-+
-+# Symbols that must always be exported.
-+include_expsyms=$lt_include_expsyms
-+
-+# ### END LIBTOOL CONFIG
-+
-+__EOF__
-+
-+ case $host_os in
-+ aix3*)
-+ cat <<\EOF >> "${ofile}T"
-+
-+# AIX sometimes has problems with the GCC collect2 program. For some
-+# reason, if we set the COLLECT_NAMES environment variable, the problems
-+# vanish in a puff of smoke.
-+if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+fi
-+EOF
-+ ;;
-+ esac
-+
-+ case $host_os in
-+ cygwin* | mingw* | pw32* | os2*)
-+ cat <<'EOF' >> "${ofile}T"
-+ # This is a source program that is used to create dlls on Windows
-+ # Don't remove nor modify the starting and closing comments
-+# /* ltdll.c starts here */
-+# #define WIN32_LEAN_AND_MEAN
-+# #include <windows.h>
-+# #undef WIN32_LEAN_AND_MEAN
-+# #include <stdio.h>
-+#
-+# #ifndef __CYGWIN__
-+# # ifdef __CYGWIN32__
-+# # define __CYGWIN__ __CYGWIN32__
-+# # endif
-+# #endif
-+#
-+# #ifdef __cplusplus
-+# extern "C" {
-+# #endif
-+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-+# #ifdef __cplusplus
-+# }
-+# #endif
-+#
-+# #ifdef __CYGWIN__
-+# #include <cygwin/cygwin_dll.h>
-+# DECLARE_CYGWIN_DLL( DllMain );
-+# #endif
-+# HINSTANCE __hDllInstance_base;
-+#
-+# BOOL APIENTRY
-+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-+# {
-+# __hDllInstance_base = hInst;
-+# return TRUE;
-+# }
-+# /* ltdll.c ends here */
-+ # This is a source program that is used to create import libraries
-+ # on Windows for dlls which lack them. Don't remove nor modify the
-+ # starting and closing comments
-+# /* impgen.c starts here */
-+# /* Copyright (C) 1999-2000 Free Software Foundation, Inc.
-+#
-+# This file is part of GNU libtool.
-+#
-+# 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 <stdio.h> /* for printf() */
-+# #include <unistd.h> /* for open(), lseek(), read() */
-+# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
-+# #include <string.h> /* for strdup() */
-+#
-+# /* O_BINARY isn't required (or even defined sometimes) under Unix */
-+# #ifndef O_BINARY
-+# #define O_BINARY 0
-+# #endif
-+#
-+# static unsigned int
-+# pe_get16 (fd, offset)
-+# int fd;
-+# int offset;
-+# {
-+# unsigned char b[2];
-+# lseek (fd, offset, SEEK_SET);
-+# read (fd, b, 2);
-+# return b[0] + (b[1]<<8);
-+# }
-+#
-+# static unsigned int
-+# pe_get32 (fd, offset)
-+# int fd;
-+# int offset;
-+# {
-+# unsigned char b[4];
-+# lseek (fd, offset, SEEK_SET);
-+# read (fd, b, 4);
-+# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-+# }
-+#
-+# static unsigned int
-+# pe_as32 (ptr)
-+# void *ptr;
-+# {
-+# unsigned char *b = ptr;
-+# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-+# }
-+#
-+# int
-+# main (argc, argv)
-+# int argc;
-+# char *argv[];
-+# {
-+# int dll;
-+# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
-+# unsigned long export_rva, export_size, nsections, secptr, expptr;
-+# unsigned long name_rvas, nexp;
-+# unsigned char *expdata, *erva;
-+# char *filename, *dll_name;
-+#
-+# filename = argv[1];
-+#
-+# dll = open(filename, O_RDONLY|O_BINARY);
-+# if (dll < 1)
-+# return 1;
-+#
-+# dll_name = filename;
-+#
-+# for (i=0; filename[i]; i++)
-+# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
-+# dll_name = filename + i +1;
-+#
-+# pe_header_offset = pe_get32 (dll, 0x3c);
-+# opthdr_ofs = pe_header_offset + 4 + 20;
-+# num_entries = pe_get32 (dll, opthdr_ofs + 92);
-+#
-+# if (num_entries < 1) /* no exports */
-+# return 1;
-+#
-+# export_rva = pe_get32 (dll, opthdr_ofs + 96);
-+# export_size = pe_get32 (dll, opthdr_ofs + 100);
-+# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
-+# secptr = (pe_header_offset + 4 + 20 +
-+# pe_get16 (dll, pe_header_offset + 4 + 16));
-+#
-+# expptr = 0;
-+# for (i = 0; i < nsections; i++)
-+# {
-+# char sname[8];
-+# unsigned long secptr1 = secptr + 40 * i;
-+# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-+# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
-+# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
-+# lseek(dll, secptr1, SEEK_SET);
-+# read(dll, sname, 8);
-+# if (vaddr <= export_rva && vaddr+vsize > export_rva)
-+# {
-+# expptr = fptr + (export_rva - vaddr);
-+# if (export_rva + export_size > vaddr + vsize)
-+# export_size = vsize - (export_rva - vaddr);
-+# break;
-+# }
-+# }
-+#
-+# expdata = (unsigned char*)malloc(export_size);
-+# lseek (dll, expptr, SEEK_SET);
-+# read (dll, expdata, export_size);
-+# erva = expdata - export_rva;
-+#
-+# nexp = pe_as32 (expdata+24);
-+# name_rvas = pe_as32 (expdata+32);
-+#
-+# printf ("EXPORTS\n");
-+# for (i = 0; i<nexp; i++)
-+# {
-+# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
-+# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
-+# }
-+#
-+# return 0;
-+# }
-+# /* impgen.c ends here */
-
--# Some flags need to be propagated to the compiler or linker for good
--# libtool support.
--case "$lt_target" in
--*-*-irix6*)
-- # Find out which ABI we are using.
-- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-- if AC_TRY_EVAL(ac_compile); then
-- case "`/usr/bin/file conftest.o`" in
-- *32-bit*)
-- LD="${LD-ld} -32"
-- ;;
-- *N32*)
-- LD="${LD-ld} -n32"
-- ;;
-- *64-bit*)
-- LD="${LD-ld} -64"
-- ;;
-- esac
-- fi
-- rm -rf conftest*
-- ;;
-+EOF
-+ ;;
-+ esac
-
--*-*-sco3.2v5*)
-- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-- SAVE_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS -belf"
-- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-- [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
-- 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"
-- fi
-- ;;
-+ # We use sed instead of cat because bash on DJGPP gets confused if
-+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
-+ # text mode, it properly converts lines to CR/LF. This bash problem
-+ # is reportedly fixed, but why not run on old versions too?
-+ sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
-+
-+ mv -f "${ofile}T" "$ofile" || \
-+ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
-+ chmod +x "$ofile"
-+fi
-
--ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
--[*-*-cygwin* | *-*-mingw*)
-- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-- AC_CHECK_TOOL(AS, as, false)
-- AC_CHECK_TOOL(OBJDUMP, objdump, false)
-- ;;
--])
--esac
--])
-+])# _LT_AC_LTCONFIG_HACK
-
- # AC_LIBTOOL_DLOPEN - enable checks for dlopen support
--AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
-+AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
-
- # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
--AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
-+AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
-
- # AC_ENABLE_SHARED - implement the --enable-shared flag
- # Usage: AC_ENABLE_SHARED[(DEFAULT)]
- # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
- # `yes'.
--AC_DEFUN(AC_ENABLE_SHARED, [dnl
--define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
-+AC_DEFUN([AC_ENABLE_SHARED],
-+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
- AC_ARG_ENABLE(shared,
- changequote(<<, >>)dnl
- << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
- changequote([, ])dnl
- [p=${PACKAGE-default}
--case "$enableval" in
-+case $enableval in
- yes) enable_shared=yes ;;
- no) enable_shared=no ;;
- *)
-@@ -157,21 +3136,22 @@
- ])
-
- # AC_DISABLE_SHARED - set the default shared flag to --disable-shared
--AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+AC_DEFUN([AC_DISABLE_SHARED],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- AC_ENABLE_SHARED(no)])
-
- # AC_ENABLE_STATIC - implement the --enable-static flag
- # Usage: AC_ENABLE_STATIC[(DEFAULT)]
- # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
- # `yes'.
--AC_DEFUN(AC_ENABLE_STATIC, [dnl
--define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
-+AC_DEFUN([AC_ENABLE_STATIC],
-+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
- AC_ARG_ENABLE(static,
- changequote(<<, >>)dnl
- << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
- changequote([, ])dnl
- [p=${PACKAGE-default}
--case "$enableval" in
-+case $enableval in
- yes) enable_static=yes ;;
- no) enable_static=no ;;
- *)
-@@ -190,7 +3170,8 @@
- ])
-
- # AC_DISABLE_STATIC - set the default static flag to --disable-static
--AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+AC_DEFUN([AC_DISABLE_STATIC],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- AC_ENABLE_STATIC(no)])
-
-
-@@ -198,14 +3179,14 @@
- # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
- # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
- # `yes'.
--AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
--define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
-+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
-+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
- AC_ARG_ENABLE(fast-install,
- changequote(<<, >>)dnl
- << --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
- changequote([, ])dnl
- [p=${PACKAGE-default}
--case "$enableval" in
-+case $enableval in
- yes) enable_fast_install=yes ;;
- no) enable_fast_install=no ;;
- *)
-@@ -223,29 +3204,120 @@
- enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
- ])
-
--# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
--AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install
-+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- AC_ENABLE_FAST_INSTALL(no)])
-
-+# AC_LIBTOOL_PICMODE - implement the --with-pic flag
-+# Usage: AC_LIBTOOL_PICMODE[(MODE)]
-+# Where MODE is either `yes' or `no'. If omitted, it defaults to
-+# `both'.
-+AC_DEFUN([AC_LIBTOOL_PICMODE],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+pic_mode=ifelse($#,1,$1,default)])
-+
-+
-+# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library
-+AC_DEFUN([AC_PATH_TOOL_PREFIX],
-+[AC_MSG_CHECKING([for $1])
-+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-+[case $MAGIC_CMD in
-+ /*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-+ ;;
-+ ?:/*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-+ ;;
-+ *)
-+ ac_save_MAGIC_CMD="$MAGIC_CMD"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+dnl $ac_dummy forces splitting on constant user-supplied paths.
-+dnl POSIX.2 word splitting is done only on the output of word expansions,
-+dnl not every word. This closes a longstanding sh security hole.
-+ ac_dummy="ifelse([$2], , $PATH, [$2])"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$1; then
-+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-+ if test -n "$file_magic_test_file"; then
-+ case $deplibs_check_method in
-+ "file_magic "*)
-+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-+ egrep "$file_magic_regex" > /dev/null; then
-+ :
-+ else
-+ cat <<EOF 1>&2
-+
-+*** Warning: the command libtool uses to detect shared libraries,
-+*** $file_magic_cmd, produces output that libtool cannot recognize.
-+*** The result is that libtool may fail to recognize shared libraries
-+*** as such. This will affect the creation of libtool libraries that
-+*** depend on shared libraries, but programs linked with such libtool
-+*** libraries will work regardless of this problem. Nevertheless, you
-+*** may want to report the problem to your system manager and/or to
-+*** bug-libtool@gnu.org
-+
-+EOF
-+ fi ;;
-+ esac
-+ fi
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ MAGIC_CMD="$ac_save_MAGIC_CMD"
-+ ;;
-+esac])
-+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+if test -n "$MAGIC_CMD"; then
-+ AC_MSG_RESULT($MAGIC_CMD)
-+else
-+ AC_MSG_RESULT(no)
-+fi
-+])
-+
-+
-+# AC_PATH_MAGIC - find a file program which can recognise a shared library
-+AC_DEFUN([AC_PATH_MAGIC],
-+[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
-+AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH)
-+if test -z "$lt_cv_path_MAGIC_CMD"; then
-+ if test -n "$ac_tool_prefix"; then
-+ AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH)
-+ else
-+ MAGIC_CMD=:
-+ fi
-+fi
-+])
-+
-+
- # AC_PROG_LD - find the path to the GNU or non-GNU linker
--AC_DEFUN(AC_PROG_LD,
-+AC_DEFUN([AC_PROG_LD],
- [AC_ARG_WITH(gnu-ld,
- [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
- test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_CANONICAL_HOST])dnl
- AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-+AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl
- ac_prog=ld
--if test "$ac_cv_prog_gcc" = yes; then
-+if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
-- ac_prog=`($CC -print-prog-name=ld) 2>&5`
-- case "$ac_prog" in
-+ case $host in
-+ *-*-mingw*)
-+ # gcc leaves a trailing carriage return which upsets mingw
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-+ *)
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-+ esac
-+ case $ac_prog in
- # Accept absolute paths.
--changequote(,)dnl
-- [\\/]* | [A-Za-z]:[\\/]*)
-- re_direlt='/[^/][^/]*/\.\./'
--changequote([,])dnl
-+ [[\\/]]* | [[A-Za-z]]:[[\\/]]*)
-+ re_direlt='/[[^/]][[^/]]*/\.\./'
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-@@ -267,17 +3339,17 @@
- else
- AC_MSG_CHECKING([for non-GNU ld])
- fi
--AC_CACHE_VAL(ac_cv_path_LD,
-+AC_CACHE_VAL(lt_cv_path_LD,
- [if test -z "$LD"; then
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-- ac_cv_path_LD="$ac_dir/$ac_prog"
-+ lt_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
-- if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
-+ if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
- test "$with_gnu_ld" != no && break
- else
- test "$with_gnu_ld" != yes && break
-@@ -286,9 +3358,9 @@
- done
- IFS="$ac_save_ifs"
- else
-- ac_cv_path_LD="$LD" # Let the user override the test with a path.
-+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
- fi])
--LD="$ac_cv_path_LD"
-+LD="$lt_cv_path_LD"
- if test -n "$LD"; then
- AC_MSG_RESULT($LD)
- else
-@@ -298,56 +3370,255 @@
- AC_PROG_LD_GNU
- ])
-
--AC_DEFUN(AC_PROG_LD_GNU,
--[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
-+# AC_PROG_LD_GNU -
-+AC_DEFUN([AC_PROG_LD_GNU],
-+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
- [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
- if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
-- ac_cv_prog_gnu_ld=yes
-+ lt_cv_prog_gnu_ld=yes
- else
-- ac_cv_prog_gnu_ld=no
-+ lt_cv_prog_gnu_ld=no
- fi])
-+with_gnu_ld=$lt_cv_prog_gnu_ld
-+])
-+
-+# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker
-+# -- PORTME Some linkers may need a different reload flag.
-+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
-+[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag,
-+[lt_cv_ld_reload_flag='-r'])
-+reload_flag=$lt_cv_ld_reload_flag
-+test -n "$reload_flag" && reload_flag=" $reload_flag"
-+])
-+
-+# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies
-+# -- PORTME fill in with the dynamic library characteristics
-+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
-+[AC_CACHE_CHECK([how to recognise dependent libraries],
-+lt_cv_deplibs_check_method,
-+[lt_cv_file_magic_cmd='$MAGIC_CMD'
-+lt_cv_file_magic_test_file=
-+lt_cv_deplibs_check_method='unknown'
-+# Need to set the preceding variable on all platforms that support
-+# interlibrary dependencies.
-+# 'none' -- dependencies not supported.
-+# `unknown' -- same as none, but documents that we really don't know.
-+# 'pass_all' -- all dependencies passed with no checks.
-+# 'test_compile' -- check by making test program.
-+# 'file_magic [[regex]]' -- check by looking for files in library path
-+# which responds to the $file_magic_cmd with a given egrep regex.
-+# If you have `file' or equivalent on your system and you're not sure
-+# whether `pass_all' will *always* work, you probably want this one.
-+
-+case $host_os in
-+aix4* | aix5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+beos*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+bsdi4*)
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-+ lt_cv_file_magic_cmd='/usr/bin/file -L'
-+ lt_cv_file_magic_test_file=/shlib/libc.so
-+ ;;
-+
-+cygwin* | mingw* | pw32*)
-+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ lt_cv_file_magic_cmd='$OBJDUMP -f'
-+ ;;
-+
-+darwin* | rhapsody*)
-+ lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
-+ lt_cv_file_magic_cmd='/usr/bin/file -L'
-+ case "$host_os" in
-+ rhapsody* | darwin1.[[012]])
-+ lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
-+ ;;
-+ *) # Darwin 1.3 on
-+ lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
-+ ;;
-+ esac
-+ ;;
-+
-+freebsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-+ case $host_cpu in
-+ i*86 )
-+ # Not sure whether the presence of OpenBSD here was a mistake.
-+ # Let's accept both of them until this is cleared up.
-+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ ;;
-+ esac
-+ else
-+ lt_cv_deplibs_check_method=pass_all
-+ fi
-+ ;;
-+
-+gnu*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+hpux10.20*|hpux11*)
-+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ irix5* | nonstopux*)
-+ # this will be overridden with pass_all, but let us keep it just in case
-+ lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
-+ ;;
-+ *)
-+ case $LD in
-+ *-32|*"-32 ") libmagic=32-bit;;
-+ *-n32|*"-n32 ") libmagic=N32;;
-+ *-64|*"-64 ") libmagic=64-bit;;
-+ *) libmagic=never-match;;
-+ esac
-+ # this will be overridden with pass_all, but let us keep it just in case
-+ lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1"
-+ ;;
-+ esac
-+ lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+# This must be Linux ELF.
-+linux-gnu*)
-+ case $host_cpu in
-+ alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*)
-+ lt_cv_deplibs_check_method=pass_all ;;
-+ *)
-+ # glibc up to 2.1.1 does not perform some relocations on ARM
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
-+ esac
-+ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-+ ;;
-+
-+netbsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-+ lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$'
-+ else
-+ lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$'
-+ fi
-+ ;;
-+
-+newos6*)
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
-+ ;;
-+
-+openbsd*)
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
-+ else
-+ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
-+ fi
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ # this will be overridden with pass_all, but let us keep it just in case
-+ lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
-+ lt_cv_file_magic_test_file=/shlib/libc.so
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+sco3.2v5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+solaris*)
-+ lt_cv_deplibs_check_method=pass_all
-+ lt_cv_file_magic_test_file=/lib/libc.so
-+ ;;
-+
-+sysv5uw[[78]]* | sysv4*uw2*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ case $host_vendor in
-+ motorola)
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-+ ;;
-+ ncr)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+ sequent)
-+ lt_cv_file_magic_cmd='/bin/file'
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-+ ;;
-+ sni)
-+ lt_cv_file_magic_cmd='/bin/file'
-+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-+ lt_cv_file_magic_test_file=/lib/libc.so
-+ ;;
-+ siemens)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+ esac
-+ ;;
-+esac
- ])
-+file_magic_cmd=$lt_cv_file_magic_cmd
-+deplibs_check_method=$lt_cv_deplibs_check_method
-+])
-+
-
- # AC_PROG_NM - find the path to a BSD-compatible name lister
--AC_DEFUN(AC_PROG_NM,
--[AC_MSG_CHECKING([for BSD-compatible nm])
--AC_CACHE_VAL(ac_cv_path_NM,
-+AC_DEFUN([AC_PROG_NM],
-+[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl
-+AC_MSG_CHECKING([for BSD-compatible nm])
-+AC_CACHE_VAL(lt_cv_path_NM,
- [if test -n "$NM"; then
- # Let the user override the test.
-- ac_cv_path_NM="$NM"
-+ lt_cv_path_NM="$NM"
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
-+ tmp_nm=$ac_dir/${ac_tool_prefix}nm
-+ if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
-- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-- ac_cv_path_NM="$ac_dir/nm -B"
-+ # Tru64's nm complains that /dev/null is an invalid object file
-+ if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
-+ lt_cv_path_NM="$tmp_nm -B"
- break
-- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-- ac_cv_path_NM="$ac_dir/nm -p"
-+ elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-+ lt_cv_path_NM="$tmp_nm -p"
- break
- else
-- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
-+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
- continue # so that we can try to find one that supports BSD flags
- fi
- fi
- done
- IFS="$ac_save_ifs"
-- test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
-+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
- fi])
--NM="$ac_cv_path_NM"
-+NM="$lt_cv_path_NM"
- AC_MSG_RESULT([$NM])
- ])
-
- # AC_CHECK_LIBM - check for math library
--AC_DEFUN(AC_CHECK_LIBM,
-+AC_DEFUN([AC_CHECK_LIBM],
- [AC_REQUIRE([AC_CANONICAL_HOST])dnl
- LIBM=
--case "$lt_target" in
--*-*-beos* | *-*-cygwin*)
-+case $host in
-+*-*-beos* | *-*-cygwin* | *-*-pw32*)
- # These system don't have libm
- ;;
- *-ncr-sysv4.3*)
-@@ -361,33 +3632,41 @@
- ])
-
- # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
--# the libltdl convenience library, adds --enable-ltdl-convenience to
--# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
--# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
--# to be `${top_builddir}/libltdl'. Make sure you start DIR with
--# '${top_builddir}/' (note the single quotes!) if your package is not
--# flat, and, if you're not using automake, define top_builddir as
--# appropriate in the Makefiles.
--AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-- case "$enable_ltdl_convenience" in
-+# the libltdl convenience library and LTDLINCL to the include flags for
-+# the libltdl header and adds --enable-ltdl-convenience to the
-+# configure arguments. Note that LIBLTDL and LTDLINCL are not
-+# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not
-+# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed
-+# with '${top_builddir}/' and LTDLINCL will be prefixed with
-+# '${top_srcdir}/' (note the single quotes!). If your package is not
-+# flat and you're not using automake, define top_builddir and
-+# top_srcdir appropriately in the Makefiles.
-+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+ case $enable_ltdl_convenience in
- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
- "") enable_ltdl_convenience=yes
- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
- esac
-- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
-- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
-+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
-+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-+ # For backwards non-gettext consistent compatibility...
-+ INCLTDL="$LTDLINCL"
- ])
-
- # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
--# the libltdl installable library, and adds --enable-ltdl-install to
--# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
--# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
--# to be `${top_builddir}/libltdl'. Make sure you start DIR with
--# '${top_builddir}/' (note the single quotes!) if your package is not
--# flat, and, if you're not using automake, define top_builddir as
--# appropriate in the Makefiles.
-+# the libltdl installable library and LTDLINCL to the include flags for
-+# the libltdl header and adds --enable-ltdl-install to the configure
-+# arguments. Note that LIBLTDL and LTDLINCL are not AC_SUBSTed, nor is
-+# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed
-+# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will
-+# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed
-+# with '${top_srcdir}/' (note the single quotes!). If your package is
-+# not flat and you're not using automake, define top_builddir and
-+# top_srcdir appropriately in the Makefiles.
- # In the future, this macro may have to be called after AC_PROG_LIBTOOL.
--AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- AC_CHECK_LIB(ltdl, main,
- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
- [if test x"$enable_ltdl_install" = xno; then
-@@ -398,148 +3677,124 @@
- ])
- if test x"$enable_ltdl_install" = x"yes"; then
- ac_configure_args="$ac_configure_args --enable-ltdl-install"
-- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
-- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
-+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
-+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
- else
- ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
- LIBLTDL="-lltdl"
-- INCLTDL=
-+ LTDLINCL=
- fi
-+ # For backwards non-gettext consistent compatibility...
-+ INCLTDL="$LTDLINCL"
- ])
-
--dnl old names
--AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
--AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
--AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
--AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
--AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
--AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
--AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
--
--dnl This is just to silence aclocal about the macro not being used
--ifelse([AC_DISABLE_FAST_INSTALL])dnl
--
--# Do all the work for Automake. This macro actually does too much --
--# some checks are only needed if your package does certain things.
--# But this isn't really a big deal.
--
--# serial 1
--
--dnl Usage:
--dnl AM_INIT_AUTOMAKE(package,version, [no-define])
--
--AC_DEFUN(AM_INIT_AUTOMAKE,
--[AC_REQUIRE([AC_PROG_INSTALL])
--PACKAGE=[$1]
--AC_SUBST(PACKAGE)
--VERSION=[$2]
--AC_SUBST(VERSION)
--dnl test to see if srcdir already configured
--if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
-- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
--fi
--ifelse([$3],,
--AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
--AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
--AC_REQUIRE([AM_SANITY_CHECK])
--AC_REQUIRE([AC_ARG_PROGRAM])
--dnl FIXME This is truly gross.
--missing_dir=`cd $ac_aux_dir && pwd`
--AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
--AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
--AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
--AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
--AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
--AC_REQUIRE([AC_PROG_MAKE_SET])])
--
--#
--# Check to make sure that the build environment is sane.
--#
--
--AC_DEFUN(AM_SANITY_CHECK,
--[AC_MSG_CHECKING([whether build environment is sane])
--# Just in case
--sleep 1
--echo timestamp > conftestfile
--# Do `set' in a subshell so we don't clobber the current shell's
--# arguments. Must try -L first in case configure is actually a
--# symlink; some systems play weird games with the mod time of symlinks
--# (eg FreeBSD returns the mod time of the symlink's containing
--# directory).
--if (
-- set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
-- if test "[$]*" = "X"; then
-- # -L didn't work.
-- set X `ls -t $srcdir/configure conftestfile`
-- fi
-- if test "[$]*" != "X $srcdir/configure conftestfile" \
-- && test "[$]*" != "X conftestfile $srcdir/configure"; then
--
-- # If neither matched, then we have a broken ls. This can happen
-- # if, for instance, CONFIG_SHELL is bash and it inherits a
-- # broken ls alias from the environment. This has actually
-- # happened. Such a system could not be considered "sane".
-- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
--alias in your environment])
-- fi
-+# old names
-+AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
-+AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-+AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-+AC_DEFUN([AM_PROG_LD], [AC_PROG_LD])
-+AC_DEFUN([AM_PROG_NM], [AC_PROG_NM])
-+
-+# This is just to silence aclocal about the macro not being used
-+ifelse([AC_DISABLE_FAST_INSTALL])
-+
-+# NOTE: This macro has been submitted for inclusion into #
-+# GNU Autoconf as AC_PROG_SED. When it is available in #
-+# a released version of Autoconf we should remove this #
-+# macro and use it instead. #
-+# LT_AC_PROG_SED
-+# --------------
-+# Check for a fully-functional sed program, that truncates
-+# as few characters as possible. Prefer GNU sed if found.
-+AC_DEFUN([LT_AC_PROG_SED],
-+[AC_MSG_CHECKING([for a sed that does not truncate output])
-+AC_CACHE_VAL(lt_cv_path_SED,
-+[# Loop through the user's path and test for sed and gsed.
-+# Then use that list of sed's as ones to test for truncation.
-+as_executable_p="test -f"
-+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_prog in sed gsed; do
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-+ _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext"
-+ fi
-+ done
-+ done
-+done
-
-- test "[$]2" = conftestfile
-- )
--then
-- # Ok.
-- :
--else
-- AC_MSG_ERROR([newly created file is older than distributed files!
--Check your system clock])
--fi
--rm -f conftest*
--AC_MSG_RESULT(yes)])
-+ # Create a temporary directory, and hook for its removal unless debugging.
-+$debug ||
-+{
-+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-+ trap '{ (exit 1); exit 1; }' 1 2 13 15
-+}
-
--dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
--dnl The program must properly implement --version.
--AC_DEFUN(AM_MISSING_PROG,
--[AC_MSG_CHECKING(for working $2)
--# Run test in a subshell; some versions of sh will print an error if
--# an executable is not found, even if stderr is redirected.
--# Redirect stdin to placate older versions of autoconf. Sigh.
--if ($2 --version) < /dev/null > /dev/null 2>&1; then
-- $1=$2
-- AC_MSG_RESULT(found)
-+# Create a (secure) tmp directory for tmp files.
-+: ${TMPDIR=/tmp}
-+{
-+ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` &&
-+ test -n "$tmp" && test -d "$tmp"
-+} ||
-+{
-+ tmp=$TMPDIR/sed$$-$RANDOM
-+ (umask 077 && mkdir $tmp)
-+} ||
-+{
-+ echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-+ { (exit 1); exit 1; }
-+}
-+ _max=0
-+ _count=0
-+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
-+ # along with /bin/sed that truncates output.
-+ for _sed in $_sed_list /usr/xpg4/bin/sed; do
-+ test ! -f ${_sed} && break
-+ cat /dev/null > "$tmp/sed.in"
-+ _count=0
-+ echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in"
-+ # Check for GNU sed and select it if it is found.
-+ if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then
-+ lt_cv_path_SED=${_sed}
-+ break
-+ fi
-+ while true; do
-+ cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp"
-+ mv "$tmp/sed.tmp" "$tmp/sed.in"
-+ cp "$tmp/sed.in" "$tmp/sed.nl"
-+ echo >>"$tmp/sed.nl"
-+ ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break
-+ cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break
-+ # 40000 chars as input seems more than enough
-+ test $_count -gt 10 && break
-+ _count=`expr $_count + 1`
-+ if test $_count -gt $_max; then
-+ _max=$_count
-+ lt_cv_path_SED=$_sed
-+ fi
-+ done
-+ done
-+ rm -rf "$tmp"
-+])
-+if test "X$SED" != "X"; then
-+ lt_cv_path_SED=$SED
- else
-- $1="$3/missing $2"
-- AC_MSG_RESULT(missing)
-+ SED=$lt_cv_path_SED
- fi
--AC_SUBST($1)])
--
--# Like AC_CONFIG_HEADER, but automatically create stamp file.
--
--AC_DEFUN(AM_CONFIG_HEADER,
--[AC_PREREQ([2.12])
--AC_CONFIG_HEADER([$1])
--dnl When config.status generates a header, we must update the stamp-h file.
--dnl This file resides in the same directory as the config header
--dnl that is generated. We must strip everything past the first ":",
--dnl and everything past the last "/".
--AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
--ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
--<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
--<<am_indx=1
--for am_file in <<$1>>; do
-- case " <<$>>CONFIG_HEADERS " in
-- *" <<$>>am_file "*<<)>>
-- echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
-- ;;
-- esac
-- am_indx=`expr "<<$>>am_indx" + 1`
--done<<>>dnl>>)
--changequote([,]))])
-+AC_MSG_RESULT([$SED])
-+])
-
- # Add --enable-maintainer-mode option to configure.
- # From Jim Meyering
-
- # serial 1
-
--AC_DEFUN(AM_MAINTAINER_MODE,
-+AC_DEFUN([AM_MAINTAINER_MODE],
- [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
- dnl maintainer-mode is disabled by default
- AC_ARG_ENABLE(maintainer-mode,
-@@ -556,7 +3811,7 @@
-
- # Define a conditional.
-
--AC_DEFUN(AM_CONDITIONAL,
-+AC_DEFUN([AM_CONDITIONAL],
- [AC_SUBST($1_TRUE)
- AC_SUBST($1_FALSE)
- if $2; then
-@@ -585,7 +3840,7 @@
- # program @code{ansi2knr}, which comes with Ghostscript.
- # @end defmac
-
--AC_DEFUN(AM_PROG_CC_STDC,
-+AC_DEFUN([AM_PROG_CC_STDC],
- [AC_REQUIRE([AC_PROG_CC])
- AC_BEFORE([$0], [AC_C_INLINE])
- AC_BEFORE([$0], [AC_C_CONST])
---- glib1.2-1.2.10.orig/config.guess
-+++ glib1.2-1.2.10/config.guess
-@@ -1,8 +1,10 @@
- #! /bin/sh
- # Attempt to guess a canonical system name.
--# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999
--# Free Software Foundation, Inc.
--#
-+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+
-+timestamp='2003-05-09'
-+
- # 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
-@@ -22,99 +24,262 @@
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
-
--# Written by Per Bothner <bothner@cygnus.com>.
--# The master version of this file is at the FSF in /home/gd/gnu/lib.
--# Please send patches to <autoconf-patches@gnu.org>.
-+# Originally written by Per Bothner <per@bothner.com>.
-+# Please send patches to <config-patches@gnu.org>. Submit a context
-+# diff and a properly formatted ChangeLog entry.
- #
- # This script attempts to guess a canonical system name similar to
- # config.sub. If it succeeds, it prints the system name on stdout, and
- # exits with 0. Otherwise, it exits with 1.
- #
- # The plan is that this can be called by configure scripts if you
--# don't specify an explicit system type (host/target name).
--#
--# Only a few systems have been added to this list; please add others
--# (but try to keep the structure clean).
--#
-+# don't specify an explicit build system type.
-
--# Use $HOST_CC if defined. $CC may point to a cross-compiler
--if test x"$CC_FOR_BUILD" = x; then
-- if test x"$HOST_CC" != x; then
-- CC_FOR_BUILD="$HOST_CC"
-- else
-- if test x"$CC" != x; then
-- CC_FOR_BUILD="$CC"
-- else
-- CC_FOR_BUILD=cc
-- fi
-- fi
-+me=`echo "$0" | sed -e 's,.*/,,'`
-+
-+usage="\
-+Usage: $0 [OPTION]
-+
-+Output the configuration name of the system \`$me' is run on.
-+
-+Operation modes:
-+ -h, --help print this help, then exit
-+ -t, --time-stamp print date of last modification, then exit
-+ -v, --version print version number, then exit
-+
-+Report bugs and patches to <config-patches@gnu.org>."
-+
-+version="\
-+GNU config.guess ($timestamp)
-+
-+Originally written by Per Bothner.
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-+Free Software Foundation, Inc.
-+
-+This is free software; see the source for copying conditions. There is NO
-+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-+
-+help="
-+Try \`$me --help' for more information."
-+
-+# Parse command line
-+while test $# -gt 0 ; do
-+ case $1 in
-+ --time-stamp | --time* | -t )
-+ echo "$timestamp" ; exit 0 ;;
-+ --version | -v )
-+ echo "$version" ; exit 0 ;;
-+ --help | --h* | -h )
-+ echo "$usage"; exit 0 ;;
-+ -- ) # Stop option processing
-+ shift; break ;;
-+ - ) # Use stdin as input.
-+ break ;;
-+ -* )
-+ echo "$me: invalid option $1$help" >&2
-+ exit 1 ;;
-+ * )
-+ break ;;
-+ esac
-+done
-+
-+if test $# != 0; then
-+ echo "$me: too many arguments$help" >&2
-+ exit 1
- fi
-
-+trap 'exit 1' 1 2 15
-+
-+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-+# compiler to aid in system detection is discouraged as it requires
-+# temporary files to be created and, as you can see below, it is a
-+# headache to deal with in a portable fashion.
-+
-+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-+# use `HOST_CC' if defined, but it is deprecated.
-+
-+# Portable tmp directory creation inspired by the Autoconf team.
-+
-+set_cc_for_build='
-+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-+: ${TMPDIR=/tmp} ;
-+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
-+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
-+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-+dummy=$tmp/dummy ;
-+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-+case $CC_FOR_BUILD,$HOST_CC,$CC in
-+ ,,) echo "int x;" > $dummy.c ;
-+ for c in cc gcc c89 c99 ; do
-+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-+ CC_FOR_BUILD="$c"; break ;
-+ fi ;
-+ done ;
-+ if test x"$CC_FOR_BUILD" = x ; then
-+ CC_FOR_BUILD=no_compiler_found ;
-+ fi
-+ ;;
-+ ,,*) CC_FOR_BUILD=$CC ;;
-+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-+esac ;'
-
- # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
--# (ghazi@noc.rutgers.edu 8/24/94.)
-+# (ghazi@noc.rutgers.edu 1994-08-24)
- if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
- fi
-
- UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
- UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
--UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
- UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
--dummy=dummy-$$
--trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
--
- # Note: order is significant - the case branches are not exclusive.
-
- case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-+ *:NetBSD:*:*)
-+ # NetBSD (nbsd) targets should (where applicable) match one or
-+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
-+ # switched to ELF, *-*-netbsd* would select the old
-+ # object file format. This provides both forward
-+ # compatibility and a consistent mechanism for selecting the
-+ # object file format.
-+ #
-+ # Note: NetBSD doesn't particularly care about the vendor
-+ # portion of the name. We always set it to "unknown".
-+ sysctl="sysctl -n hw.machine_arch"
-+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-+ case "${UNAME_MACHINE_ARCH}" in
-+ armeb) machine=armeb-unknown ;;
-+ arm*) machine=arm-unknown ;;
-+ sh3el) machine=shl-unknown ;;
-+ sh3eb) machine=sh-unknown ;;
-+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-+ esac
-+ # The Operating System including object format, if it has switched
-+ # to ELF recently, or will in the future.
-+ case "${UNAME_MACHINE_ARCH}" in
-+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-+ eval $set_cc_for_build
-+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-+ | grep __ELF__ >/dev/null
-+ then
-+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-+ # Return netbsd for either. FIX?
-+ os=netbsd
-+ else
-+ os=netbsdelf
-+ fi
-+ ;;
-+ *)
-+ os=netbsd
-+ ;;
-+ esac
-+ # The OS release
-+ # Debian GNU/NetBSD machines have a different userland, and
-+ # thus, need a distinct triplet. However, they do not need
-+ # kernel version information, so it can be replaced with a
-+ # suitable tag, in the style of linux-gnu.
-+ case "${UNAME_VERSION}" in
-+ Debian*)
-+ release='-gnu'
-+ ;;
-+ *)
-+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+ ;;
-+ esac
-+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-+ # contains redundant information, the shorter form:
-+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-+ echo "${machine}-${os}${release}"
-+ exit 0 ;;
-+ amiga:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ arc:OpenBSD:*:*)
-+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ hp300:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ mac68k:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ macppc:OpenBSD:*:*)
-+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ mvme68k:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ mvme88k:OpenBSD:*:*)
-+ echo m88k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ mvmeppc:OpenBSD:*:*)
-+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ pmax:OpenBSD:*:*)
-+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ sgi:OpenBSD:*:*)
-+ echo mipseb-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ sun3:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ wgrisc:OpenBSD:*:*)
-+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:OpenBSD:*:*)
-+ echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
- alpha:OSF1:*:*)
- if test $UNAME_RELEASE = "V4.0"; then
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- fi
-+ # According to Compaq, /usr/sbin/psrinfo has been available on
-+ # OSF/1 and Tru64 systems produced since 1995. I hope that
-+ # covers most systems running today. This code pipes the CPU
-+ # types through head -n 1, so we only detect the type of CPU 0.
-+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-+ case "$ALPHA_CPU_TYPE" in
-+ "EV4 (21064)")
-+ UNAME_MACHINE="alpha" ;;
-+ "EV4.5 (21064)")
-+ UNAME_MACHINE="alpha" ;;
-+ "LCA4 (21066/21068)")
-+ UNAME_MACHINE="alpha" ;;
-+ "EV5 (21164)")
-+ UNAME_MACHINE="alphaev5" ;;
-+ "EV5.6 (21164A)")
-+ UNAME_MACHINE="alphaev56" ;;
-+ "EV5.6 (21164PC)")
-+ UNAME_MACHINE="alphapca56" ;;
-+ "EV5.7 (21164PC)")
-+ UNAME_MACHINE="alphapca57" ;;
-+ "EV6 (21264)")
-+ UNAME_MACHINE="alphaev6" ;;
-+ "EV6.7 (21264A)")
-+ UNAME_MACHINE="alphaev67" ;;
-+ "EV6.8CB (21264C)")
-+ UNAME_MACHINE="alphaev68" ;;
-+ "EV6.8AL (21264B)")
-+ UNAME_MACHINE="alphaev68" ;;
-+ "EV6.8CX (21264D)")
-+ UNAME_MACHINE="alphaev68" ;;
-+ "EV6.9A (21264/EV69A)")
-+ UNAME_MACHINE="alphaev69" ;;
-+ "EV7 (21364)")
-+ UNAME_MACHINE="alphaev7" ;;
-+ "EV7.9 (21364A)")
-+ UNAME_MACHINE="alphaev79" ;;
-+ esac
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
-- cat <<EOF >$dummy.s
-- .globl main
-- .ent main
--main:
-- .frame \$30,0,\$26,0
-- .prologue 0
-- .long 0x47e03d80 # implver $0
-- lda \$2,259
-- .long 0x47e20c21 # amask $2,$1
-- srl \$1,8,\$2
-- sll \$2,2,\$2
-- sll \$0,3,\$0
-- addl \$1,\$0,\$0
-- addl \$2,\$0,\$0
-- ret \$31,(\$26),1
-- .end main
--EOF
-- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
-- if test "$?" = 0 ; then
-- ./$dummy
-- case "$?" in
-- 7)
-- UNAME_MACHINE="alpha"
-- ;;
-- 15)
-- UNAME_MACHINE="alphaev5"
-- ;;
-- 14)
-- UNAME_MACHINE="alphaev56"
-- ;;
-- 10)
-- UNAME_MACHINE="alphapca56"
-- ;;
-- 16)
-- UNAME_MACHINE="alphaev6"
-- ;;
-- esac
-- fi
-- rm -f $dummy.s $dummy
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
- Alpha\ *:Windows_NT*:*)
-@@ -127,34 +292,13 @@
- echo alpha-dec-winnt3.5
- exit 0 ;;
- Amiga*:UNIX_System_V:4.0:*)
-- echo m68k-cbm-sysv4
-+ echo m68k-unknown-sysv4
- exit 0;;
-- amiga:NetBSD:*:*)
-- echo m68k-cbm-netbsd${UNAME_RELEASE}
-- exit 0 ;;
-- amiga:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
-- arc64:OpenBSD:*:*)
-- echo mips64el-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- arc:OpenBSD:*:*)
-- echo mipsel-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- hkmips:OpenBSD:*:*)
-- echo mips-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- pmax:OpenBSD:*:*)
-- echo mipsel-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- sgi:OpenBSD:*:*)
-- echo mips-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- wgrisc:OpenBSD:*:*)
-- echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+ *:[Mm]orph[Oo][Ss]:*:*)
-+ echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
-@@ -162,10 +306,7 @@
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
-- arm32:NetBSD:*:*)
-- echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-- exit 0 ;;
-- SR2?01:HI-UX/MPP:*:*)
-+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit 0;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-@@ -179,6 +320,10 @@
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit 0 ;;
-+ DRS?6000:UNIX_SV:4.2*:7*)
-+ case `/usr/bin/uname -p` in
-+ sparc) echo sparc-icl-nx7 && exit 0 ;;
-+ esac ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
-@@ -207,7 +352,7 @@
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
- sun*:*:4.2BSD:*)
-- UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
-@@ -221,15 +366,9 @@
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
-- atari*:NetBSD:*:*)
-- echo m68k-atari-netbsd${UNAME_RELEASE}
-- exit 0 ;;
-- atari*:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
-- # "atarist" or "atariste" at least should have a processor
-+ # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
-@@ -253,30 +392,9 @@
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
-- sun3*:NetBSD:*:*)
-- echo m68k-sun-netbsd${UNAME_RELEASE}
-- exit 0 ;;
-- sun3*:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- mac68k:NetBSD:*:*)
-- echo m68k-apple-netbsd${UNAME_RELEASE}
-- exit 0 ;;
-- mac68k:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- mvme68k:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- mvme88k:OpenBSD:*:*)
-- echo m88k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
-- macppc:NetBSD:*:*)
-- echo powerpc-apple-netbsd${UNAME_RELEASE}
-- exit 0 ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit 0 ;;
-@@ -290,8 +408,10 @@
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
-+ eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #ifdef __cplusplus
-+#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
- #else
- int main (argc, argv) int argc; char *argv[]; {
-@@ -310,12 +430,20 @@
- exit (-1);
- }
- EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy \
-- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-- && rm $dummy.c $dummy && exit 0
-- rm -f $dummy.c $dummy
-+ $CC_FOR_BUILD -o $dummy $dummy.c \
-+ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-+ && exit 0
- echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
-+ Motorola:PowerMAX_OS:*:*)
-+ echo powerpc-motorola-powermax
-+ exit 0 ;;
-+ Motorola:*:4.3:PL8-*)
-+ echo powerpc-harris-powermax
-+ exit 0 ;;
-+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-+ echo powerpc-harris-powermax
-+ exit 0 ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit 0 ;;
-@@ -331,7 +459,7 @@
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
-- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110]
-+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
-@@ -363,11 +491,20 @@
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
-- i?86:AIX:*:*)
-+ i*86:AIX:*:*)
- echo i386-ibm-aix
- exit 0 ;;
-+ ia64:AIX:*:*)
-+ if [ -x /usr/bin/oslevel ] ; then
-+ IBM_REV=`/usr/bin/oslevel`
-+ else
-+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-+ fi
-+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-+ exit 0 ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-+ eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
-@@ -379,8 +516,7 @@
- exit(0);
- }
- EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
-- rm -f $dummy.c $dummy
-+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo rs6000-ibm-aix3.2.5
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
-@@ -388,9 +524,9 @@
- echo rs6000-ibm-aix3.2
- fi
- exit 0 ;;
-- *:AIX:*:4)
-- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
-- if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
-+ *:AIX:*:[45])
-+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
-@@ -398,7 +534,7 @@
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
-- IBM_REV=4.${UNAME_RELEASE}
-+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
-@@ -408,7 +544,7 @@
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit 0 ;;
-- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
-+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
-@@ -424,11 +560,30 @@
- echo m68k-hp-bsd4.4
- exit 0 ;;
- 9000/[34678]??:HP-UX:*:*)
-+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
-- sed 's/^ //' << EOF >$dummy.c
-+ if [ -x /usr/bin/getconf ]; then
-+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-+ case "${sc_cpu_version}" in
-+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-+ 532) # CPU_PA_RISC2_0
-+ case "${sc_kernel_bits}" in
-+ 32) HP_ARCH="hppa2.0n" ;;
-+ 64) HP_ARCH="hppa2.0w" ;;
-+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
-+ esac ;;
-+ esac
-+ fi
-+ if [ "${HP_ARCH}" = "" ]; then
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+
-+ #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
-
-@@ -459,13 +614,29 @@
- exit (0);
- }
- EOF
-- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
-- rm -f $dummy.c $dummy
-+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-+ test -z "$HP_ARCH" && HP_ARCH=hppa
-+ fi ;;
- esac
-- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-+ if [ ${HP_ARCH} = "hppa2.0w" ]
-+ then
-+ # avoid double evaluation of $set_cc_for_build
-+ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
-+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
-+ then
-+ HP_ARCH="hppa2.0w"
-+ else
-+ HP_ARCH="hppa64"
-+ fi
-+ fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
-+ ia64:HP-UX:*:*)
-+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-+ echo ia64-hp-hpux${HPUX_REV}
-+ exit 0 ;;
- 3050*:HI-UX:*:*)
-+ eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
-@@ -491,8 +662,7 @@
- exit (0);
- }
- EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
-- rm -f $dummy.c $dummy
-+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo unknown-hitachi-hiuxwe2
- exit 0 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-@@ -501,7 +671,7 @@
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
-- *9??*:MPE/iX:*:*)
-+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-@@ -510,7 +680,7 @@
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit 0 ;;
-- i?86:OSF1:*:*)
-+ i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
-@@ -520,9 +690,6 @@
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit 0 ;;
-- hppa*:OpenBSD:*:*)
-- echo hppa-unknown-openbsd
-- exit 0 ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit 0 ;;
-@@ -541,41 +708,34 @@
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit 0 ;;
-- CRAY*X-MP:*:*:*)
-- echo xmp-cray-unicos
-- exit 0 ;;
- CRAY*Y-MP:*:*:*)
-- echo ymp-cray-unicos${UNAME_RELEASE}
-+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
-+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-+ -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*TS:*:*:*)
-- echo t90-cray-unicos${UNAME_RELEASE}
-+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*T3E:*:*:*)
-- echo alpha-cray-unicosmk${UNAME_RELEASE}
-+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
-- CRAY-2:*:*:*)
-- echo cray2-cray-unicos
-- exit 0 ;;
-- F300:UNIX_System_V:*:*)
-+ CRAY*SV1:*:*:*)
-+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-+ exit 0 ;;
-+ *:UNICOS/mp:*:*)
-+ echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-+ exit 0 ;;
-+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-- echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
-- F301:UNIX_System_V:*:*)
-- echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
-- exit 0 ;;
-- hp3[0-9][05]:NetBSD:*:*)
-- echo m68k-hp-netbsd${UNAME_RELEASE}
-- exit 0 ;;
-- hp300:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- i?86:BSD/386:*:* | i?86:BSD/OS:*:*)
-+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
- sparc*:BSD/OS:*:*)
-@@ -584,20 +744,19 @@
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
-- *:FreeBSD:*:*)
-- if test -x /usr/bin/objformat; then
-- if test "elf" = "`/usr/bin/objformat`"; then
-- echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
-- exit 0
-- fi
-- fi
-- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-- exit 0 ;;
-- *:NetBSD:*:*)
-- echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
-- exit 0 ;;
-- *:OpenBSD:*:*)
-- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+ *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
-+ # Determine whether the default compiler uses glibc.
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #include <features.h>
-+ #if __GLIBC__ >= 2
-+ LIBC=gnu
-+ #else
-+ LIBC=
-+ #endif
-+EOF
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
- exit 0 ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
-@@ -605,11 +764,20 @@
- i*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit 0 ;;
-+ i*:PW*:*)
-+ echo ${UNAME_MACHINE}-pc-pw32
-+ exit 0 ;;
-+ x86:Interix*:3*)
-+ echo i586-pc-interix3
-+ exit 0 ;;
-+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-+ echo i${UNAME_MACHINE}-pc-mks
-+ exit 0 ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
-- echo i386-pc-interix
-+ echo i586-pc-interix
- exit 0 ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
-@@ -623,201 +791,159 @@
- *:GNU:*:*)
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
-- *:Linux:*:*)
--
-+ i*86:Minix:*:*)
-+ echo ${UNAME_MACHINE}-pc-minix
-+ exit 0 ;;
-+ arm*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit 0 ;;
-+ ia64:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit 0 ;;
-+ m68*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit 0 ;;
-+ mips:Linux:*:*)
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #undef CPU
-+ #undef mips
-+ #undef mipsel
-+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-+ CPU=mipsel
-+ #else
-+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-+ CPU=mips
-+ #else
-+ CPU=
-+ #endif
-+ #endif
-+EOF
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
-+ ;;
-+ mips64:Linux:*:*)
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #undef CPU
-+ #undef mips64
-+ #undef mips64el
-+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-+ CPU=mips64el
-+ #else
-+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-+ CPU=mips64
-+ #else
-+ CPU=
-+ #endif
-+ #endif
-+EOF
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
-+ ;;
-+ ppc:Linux:*:*)
-+ echo powerpc-unknown-linux-gnu
-+ exit 0 ;;
-+ ppc64:Linux:*:*)
-+ echo powerpc64-unknown-linux-gnu
-+ exit 0 ;;
-+ alpha:Linux:*:*)
-+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-+ EV5) UNAME_MACHINE=alphaev5 ;;
-+ EV56) UNAME_MACHINE=alphaev56 ;;
-+ PCA56) UNAME_MACHINE=alphapca56 ;;
-+ PCA57) UNAME_MACHINE=alphapca56 ;;
-+ EV6) UNAME_MACHINE=alphaev6 ;;
-+ EV67) UNAME_MACHINE=alphaev67 ;;
-+ EV68*) UNAME_MACHINE=alphaev68 ;;
-+ esac
-+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-+ exit 0 ;;
-+ parisc:Linux:*:* | hppa:Linux:*:*)
-+ # Look for CPU level
-+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
-+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
-+ *) echo hppa-unknown-linux-gnu ;;
-+ esac
-+ exit 0 ;;
-+ parisc64:Linux:*:* | hppa64:Linux:*:*)
-+ echo hppa64-unknown-linux-gnu
-+ exit 0 ;;
-+ s390:Linux:*:* | s390x:Linux:*:*)
-+ echo ${UNAME_MACHINE}-ibm-linux
-+ exit 0 ;;
-+ sh*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit 0 ;;
-+ sparc:Linux:*:* | sparc64:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit 0 ;;
-+ x86_64:Linux:*:*)
-+ echo x86_64-unknown-linux-gnu
-+ exit 0 ;;
-+ i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
-- ld_help_string=`cd /; ld --help 2>&1`
-- ld_supported_emulations=`echo $ld_help_string \
-- | sed -ne '/supported emulations:/!d
-+ # Set LC_ALL=C to ensure ld outputs messages in English.
-+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-+ | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
-- s/.*supported emulations: *//
-+ s/.*supported targets: *//
- s/ .*//
- p'`
-- case "$ld_supported_emulations" in
-- *ia64)
-- echo "${UNAME_MACHINE}-unknown-linux"
-- exit 0
-+ case "$ld_supported_targets" in
-+ elf32-i386)
-+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
-- i?86linux)
-+ a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-- exit 0
-- ;;
-- i?86coff)
-+ exit 0 ;;
-+ coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-- exit 0
-- ;;
-- sparclinux)
-- echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
-- exit 0
-- ;;
-- armlinux)
-- echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
-- exit 0
-- ;;
-- elf32arm*)
-- echo "${UNAME_MACHINE}-unknown-linux-gnu"
-- exit 0
-- ;;
-- armelf_linux*)
-- echo "${UNAME_MACHINE}-unknown-linux-gnu"
-- exit 0
-- ;;
-- m68klinux)
-- echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
-- exit 0
-- ;;
-- elf32ppc)
-- # Determine Lib Version
-- cat >$dummy.c <<EOF
--#include <features.h>
--#if defined(__GLIBC__)
--extern char __libc_version[];
--extern char __libc_release[];
--#endif
--main(argc, argv)
-- int argc;
-- char *argv[];
--{
--#if defined(__GLIBC__)
-- printf("%s %s\n", __libc_version, __libc_release);
--#else
-- printf("unkown\n");
--#endif
-- return 0;
--}
--EOF
-- LIBC=""
-- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
-- if test "$?" = 0 ; then
-- ./$dummy | grep 1\.99 > /dev/null
-- if test "$?" = 0 ; then
-- LIBC="libc1"
-- fi
-- fi
-- rm -f $dummy.c $dummy
-- echo powerpc-unknown-linux-gnu${LIBC}
-- exit 0
-- ;;
-+ exit 0 ;;
-+ "")
-+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
-+ # one that does not give us useful --help.
-+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-+ exit 0 ;;
- esac
--
-- if test "${UNAME_MACHINE}" = "alpha" ; then
-- sed 's/^ //' <<EOF >$dummy.s
-- .globl main
-- .ent main
-- main:
-- .frame \$30,0,\$26,0
-- .prologue 0
-- .long 0x47e03d80 # implver $0
-- lda \$2,259
-- .long 0x47e20c21 # amask $2,$1
-- srl \$1,8,\$2
-- sll \$2,2,\$2
-- sll \$0,3,\$0
-- addl \$1,\$0,\$0
-- addl \$2,\$0,\$0
-- ret \$31,(\$26),1
-- .end main
--EOF
-- LIBC=""
-- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
-- if test "$?" = 0 ; then
-- ./$dummy
-- case "$?" in
-- 7)
-- UNAME_MACHINE="alpha"
-- ;;
-- 15)
-- UNAME_MACHINE="alphaev5"
-- ;;
-- 14)
-- UNAME_MACHINE="alphaev56"
-- ;;
-- 10)
-- UNAME_MACHINE="alphapca56"
-- ;;
-- 16)
-- UNAME_MACHINE="alphaev6"
-- ;;
-- esac
--
-- objdump --private-headers $dummy | \
-- grep ld.so.1 > /dev/null
-- if test "$?" = 0 ; then
-- LIBC="libc1"
-- fi
-- fi
-- rm -f $dummy.s $dummy
-- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
-- elif test "${UNAME_MACHINE}" = "mips" ; then
-- cat >$dummy.c <<EOF
--#ifdef __cplusplus
-- int main (int argc, char *argv[]) {
--#else
-- int main (argc, argv) int argc; char *argv[]; {
--#endif
--#ifdef __MIPSEB__
-- printf ("%s-unknown-linux-gnu\n", argv[1]);
--#endif
--#ifdef __MIPSEL__
-- printf ("%sel-unknown-linux-gnu\n", argv[1]);
--#endif
-- return 0;
--}
--EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
-- rm -f $dummy.c $dummy
-- else
-- # Either a pre-BFD a.out linker (linux-gnuoldld)
-- # or one that does not give us useful --help.
-- # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
-- # If ld does not provide *any* "supported emulations:"
-- # that means it is gnuoldld.
-- echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
-- test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
--
-- case "${UNAME_MACHINE}" in
-- i?86)
-- VENDOR=pc;
-- ;;
-- *)
-- VENDOR=unknown;
-- ;;
-- esac
-- # Determine whether the default compiler is a.out or elf
-- cat >$dummy.c <<EOF
--#include <features.h>
--#ifdef __cplusplus
-- int main (int argc, char *argv[]) {
--#else
-- int main (argc, argv) int argc; char *argv[]; {
--#endif
--#ifdef __ELF__
--# ifdef __GLIBC__
--# if __GLIBC__ >= 2
-- printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
--# else
-- printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
--# endif
--# else
-- printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
--# endif
--#else
-- printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
--#endif
-- return 0;
--}
-+ # Determine whether the default compiler is a.out or elf
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #include <features.h>
-+ #ifdef __ELF__
-+ # ifdef __GLIBC__
-+ # if __GLIBC__ >= 2
-+ LIBC=gnu
-+ # else
-+ LIBC=gnulibc1
-+ # endif
-+ # else
-+ LIBC=gnulibc1
-+ # endif
-+ #else
-+ #ifdef __INTEL_COMPILER
-+ LIBC=gnu
-+ #else
-+ LIBC=gnuaout
-+ #endif
-+ #endif
- EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
-- rm -f $dummy.c $dummy
-- fi ;;
--# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
--# are messed up and put the nodename in both sysname and nodename.
-- i?86:DYNIX/ptx:4*:*)
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-+ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
-+ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
-+ ;;
-+ i*86:DYNIX/ptx:4*:*)
-+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-+ # earlier versions are messed up and put the nodename in both
-+ # sysname and nodename.
- echo i386-sequent-sysv4
- exit 0 ;;
-- i?86:UNIX_SV:4.2MP:2.*)
-+ i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
-@@ -825,7 +951,24 @@
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
-- i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
-+ i*86:OS/2:*:*)
-+ # If we were able to find `uname', then EMX Unix compatibility
-+ # is probably installed.
-+ echo ${UNAME_MACHINE}-pc-os2-emx
-+ exit 0 ;;
-+ i*86:XTS-300:*:STOP)
-+ echo ${UNAME_MACHINE}-unknown-stop
-+ exit 0 ;;
-+ i*86:atheos:*:*)
-+ echo ${UNAME_MACHINE}-unknown-atheos
-+ exit 0 ;;
-+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-+ echo i386-unknown-lynxos${UNAME_RELEASE}
-+ exit 0 ;;
-+ i*86:*DOS:*:*)
-+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
-+ exit 0 ;;
-+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-@@ -833,27 +976,26 @@
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit 0 ;;
-- i?86:*:5:7*)
-- # Fixed at (any) Pentium or better
-- UNAME_MACHINE=i586
-- if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
-- echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
-- else
-- echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
-- fi
-+ i*86:*:5:[78]*)
-+ case `/bin/uname -X | grep "^Machine"` in
-+ *486*) UNAME_MACHINE=i486 ;;
-+ *Pentium) UNAME_MACHINE=i586 ;;
-+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-+ esac
-+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit 0 ;;
-- i?86:*:3.2:*)
-+ i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
-- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
-- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
-- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
-+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
-- (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
-+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- && UNAME_MACHINE=i686
-- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
-+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
-@@ -861,6 +1003,7 @@
- fi
- exit 0 ;;
- pc:*:*:*)
-+ # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
-@@ -882,9 +1025,15 @@
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
-+ mc68k:UNIX:SYSTEM5:3.51m)
-+ echo m68k-convergent-sysv
-+ exit 0 ;;
-+ M680?0:D-NIX:5.3:*)
-+ echo m68k-diab-dnix
-+ exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-- 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
-+ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-@@ -895,21 +1044,21 @@
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
-- m68*:LynxOS:2.*:*)
-+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit 0 ;;
-- i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*)
-- echo i386-unknown-lynxos${UNAME_RELEASE}
-- exit 0 ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
-- rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
-+ rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
-+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
-+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
-+ exit 0 ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
-@@ -927,8 +1076,8 @@
- echo ns32k-sni-sysv
- fi
- exit 0 ;;
-- PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-- # says <Richard.M.Bartel@ccMail.Census.GOV>
-+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-+ # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit 0 ;;
- *:UNIX_System_V:4*:FTX*)
-@@ -940,10 +1089,14 @@
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit 0 ;;
-+ *:VOS:*:*)
-+ # From Paul.Green@stratus.com.
-+ echo hppa1.1-stratus-vos
-+ exit 0 ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
-- news*:NEWS-OS:*:6*)
-+ news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit 0 ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-@@ -968,20 +1121,80 @@
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
-+ SX-6:SUPER-UX:*:*)
-+ echo sx6-nec-superux${UNAME_RELEASE}
-+ exit 0 ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
-+ *:Darwin:*:*)
-+ case `uname -p` in
-+ *86) UNAME_PROCESSOR=i686 ;;
-+ powerpc) UNAME_PROCESSOR=powerpc ;;
-+ esac
-+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
-+ UNAME_PROCESSOR=`uname -p`
-+ if test "$UNAME_PROCESSOR" = "x86"; then
-+ UNAME_PROCESSOR=i386
-+ UNAME_MACHINE=pc
-+ fi
-+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-+ exit 0 ;;
- *:QNX:*:4*)
-- echo i386-qnx-qnx${UNAME_VERSION}
-+ echo i386-pc-qnx
-+ exit 0 ;;
-+ NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
-+ echo nsr-tandem-nsk${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:NonStop-UX:*:*)
-+ echo mips-compaq-nonstopux
-+ exit 0 ;;
-+ BS2000:POSIX*:*:*)
-+ echo bs2000-siemens-sysv
-+ exit 0 ;;
-+ DS/*:UNIX_System_V:*:*)
-+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:Plan9:*:*)
-+ # "uname -m" is not consistent, so use $cputype instead. 386
-+ # is converted to i386 for consistency with other x86
-+ # operating systems.
-+ if test "$cputype" = "386"; then
-+ UNAME_MACHINE=i386
-+ else
-+ UNAME_MACHINE="$cputype"
-+ fi
-+ echo ${UNAME_MACHINE}-unknown-plan9
-+ exit 0 ;;
-+ *:TOPS-10:*:*)
-+ echo pdp10-unknown-tops10
-+ exit 0 ;;
-+ *:TENEX:*:*)
-+ echo pdp10-unknown-tenex
-+ exit 0 ;;
-+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-+ echo pdp10-dec-tops20
-+ exit 0 ;;
-+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-+ echo pdp10-xkl-tops20
-+ exit 0 ;;
-+ *:TOPS-20:*:*)
-+ echo pdp10-unknown-tops20
-+ exit 0 ;;
-+ *:ITS:*:*)
-+ echo pdp10-unknown-its
- exit 0 ;;
- esac
-
- #echo '(No uname command or uname output not recognized.)' 1>&2
- #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-+eval $set_cc_for_build
- cat >$dummy.c <<EOF
- #ifdef _SEQUENT_
- # include <sys/types.h>
-@@ -1068,11 +1281,24 @@
- #endif
-
- #if defined (vax)
--#if !defined (ultrix)
-- printf ("vax-dec-bsd\n"); exit (0);
--#else
-- printf ("vax-dec-ultrix\n"); exit (0);
--#endif
-+# if !defined (ultrix)
-+# include <sys/param.h>
-+# if defined (BSD)
-+# if BSD == 43
-+ printf ("vax-dec-bsd4.3\n"); exit (0);
-+# else
-+# if BSD == 199006
-+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
-+# else
-+ printf ("vax-dec-bsd\n"); exit (0);
-+# endif
-+# endif
-+# else
-+ printf ("vax-dec-bsd\n"); exit (0);
-+# endif
-+# else
-+ printf ("vax-dec-ultrix\n"); exit (0);
-+# endif
- #endif
-
- #if defined (alliant) && defined (i860)
-@@ -1083,8 +1309,7 @@
- }
- EOF
-
--$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
--rm -f $dummy.c $dummy
-+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
-
- # Apollos put the system type in the environment.
-
-@@ -1116,6 +1341,48 @@
- esac
- fi
-
--#echo '(Unable to guess system type)' 1>&2
-+cat >&2 <<EOF
-+$0: unable to guess system type
-+
-+This script, last modified $timestamp, has failed to recognize
-+the operating system you are using. It is advised that you
-+download the most up to date version of the config scripts from
-+
-+ ftp://ftp.gnu.org/pub/gnu/config/
-+
-+If the version you run ($0) is already up to date, please
-+send the following data and any information you think might be
-+pertinent to <config-patches@gnu.org> in order to provide the needed
-+information to handle your system.
-+
-+config.guess timestamp = $timestamp
-+
-+uname -m = `(uname -m) 2>/dev/null || echo unknown`
-+uname -r = `(uname -r) 2>/dev/null || echo unknown`
-+uname -s = `(uname -s) 2>/dev/null || echo unknown`
-+uname -v = `(uname -v) 2>/dev/null || echo unknown`
-+
-+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-+
-+hostinfo = `(hostinfo) 2>/dev/null`
-+/bin/universe = `(/bin/universe) 2>/dev/null`
-+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-+/bin/arch = `(/bin/arch) 2>/dev/null`
-+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-+
-+UNAME_MACHINE = ${UNAME_MACHINE}
-+UNAME_RELEASE = ${UNAME_RELEASE}
-+UNAME_SYSTEM = ${UNAME_SYSTEM}
-+UNAME_VERSION = ${UNAME_VERSION}
-+EOF
-
- exit 1
-+
-+# Local variables:
-+# eval: (add-hook 'write-file-hooks 'time-stamp)
-+# time-stamp-start: "timestamp='"
-+# time-stamp-format: "%:y-%02m-%02d"
-+# time-stamp-end: "'"
-+# End:
---- glib1.2-1.2.10.orig/config.sub
-+++ glib1.2-1.2.10/config.sub
-@@ -1,6 +1,10 @@
- #! /bin/sh
--# Configuration validation subroutine script, version 1.1.
--# Copyright (C) 1991, 92-97, 1998, 1999 Free Software Foundation, Inc.
-+# Configuration validation subroutine script.
-+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+
-+timestamp='2003-05-09'
-+
- # This file is (in principle) common to ALL GNU software.
- # The presence of a machine in this file suggests that SOME GNU software
- # can handle that machine. It does not imply ALL GNU software can.
-@@ -25,6 +29,9 @@
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
-
-+# Please send patches to <config-patches@gnu.org>. Submit a context
-+# diff and a properly formatted ChangeLog entry.
-+#
- # Configuration subroutine to validate and canonicalize a configuration type.
- # Supply the specified configuration type as an argument.
- # If it is invalid, we print an error message on stderr and exit with code 1.
-@@ -45,30 +52,73 @@
- # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
- # It is wrong to echo any other type of specification.
-
--if [ x$1 = x ]
--then
-- echo Configuration name missing. 1>&2
-- echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
-- echo "or $0 ALIAS" 1>&2
-- echo where ALIAS is a recognized configuration type. 1>&2
-- exit 1
--fi
-+me=`echo "$0" | sed -e 's,.*/,,'`
-
--# First pass through any local machine types.
--case $1 in
-- *local*)
-- echo $1
-- exit 0
-- ;;
-- *)
-- ;;
-+usage="\
-+Usage: $0 [OPTION] CPU-MFR-OPSYS
-+ $0 [OPTION] ALIAS
-+
-+Canonicalize a configuration name.
-+
-+Operation modes:
-+ -h, --help print this help, then exit
-+ -t, --time-stamp print date of last modification, then exit
-+ -v, --version print version number, then exit
-+
-+Report bugs and patches to <config-patches@gnu.org>."
-+
-+version="\
-+GNU config.sub ($timestamp)
-+
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-+Free Software Foundation, Inc.
-+
-+This is free software; see the source for copying conditions. There is NO
-+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-+
-+help="
-+Try \`$me --help' for more information."
-+
-+# Parse command line
-+while test $# -gt 0 ; do
-+ case $1 in
-+ --time-stamp | --time* | -t )
-+ echo "$timestamp" ; exit 0 ;;
-+ --version | -v )
-+ echo "$version" ; exit 0 ;;
-+ --help | --h* | -h )
-+ echo "$usage"; exit 0 ;;
-+ -- ) # Stop option processing
-+ shift; break ;;
-+ - ) # Use stdin as input.
-+ break ;;
-+ -* )
-+ echo "$me: invalid option $1$help"
-+ exit 1 ;;
-+
-+ *local*)
-+ # First pass through any local machine types.
-+ echo $1
-+ exit 0;;
-+
-+ * )
-+ break ;;
-+ esac
-+done
-+
-+case $# in
-+ 0) echo "$me: missing argument$help" >&2
-+ exit 1;;
-+ 1) ;;
-+ *) echo "$me: too many arguments$help" >&2
-+ exit 1;;
- esac
-
- # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
- # Here we must recognize all the valid KERNEL-OS combinations.
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
- case $maybe_os in
-- linux-gnu*)
-+ nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
-@@ -94,7 +144,7 @@
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-- -apple)
-+ -apple | -axis)
- os=
- basic_machine=$1
- ;;
-@@ -108,6 +158,14 @@
- os=-vxworks
- basic_machine=$1
- ;;
-+ -chorusos*)
-+ os=-chorusos
-+ basic_machine=$1
-+ ;;
-+ -chorusrdb)
-+ os=-chorusrdb
-+ basic_machine=$1
-+ ;;
- -hiux*)
- os=-hiuxwe2
- ;;
-@@ -166,27 +224,62 @@
- case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
-- tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
-- | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
-- | 580 | i960 | h8300 \
-- | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
-- | alpha | alphaev[4-7] | alphaev56 | alphapca5[67] \
-- | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \
-- | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \
-- | mips64orion | mips64orionel | mipstx39 | mipstx39el \
-- | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
-- | mips64vr5000 | miprs64vr5000el | mcore \
-- | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
-- | thumb | d10v | fr30)
-+ 1750a | 580 \
-+ | a29k \
-+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
-+ | clipper \
-+ | d10v | d30v | dlx | dsp16xx \
-+ | fr30 | frv \
-+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-+ | i370 | i860 | i960 | ia64 \
-+ | ip2k \
-+ | m32r | m68000 | m68k | m88k | mcore \
-+ | mips | mipsbe | mipseb | mipsel | mipsle \
-+ | mips16 \
-+ | mips64 | mips64el \
-+ | mips64vr | mips64vrel \
-+ | mips64orion | mips64orionel \
-+ | mips64vr4100 | mips64vr4100el \
-+ | mips64vr4300 | mips64vr4300el \
-+ | mips64vr5000 | mips64vr5000el \
-+ | mipsisa32 | mipsisa32el \
-+ | mipsisa32r2 | mipsisa32r2el \
-+ | mipsisa64 | mipsisa64el \
-+ | mipsisa64sb1 | mipsisa64sb1el \
-+ | mipsisa64sr71k | mipsisa64sr71kel \
-+ | mipstx39 | mipstx39el \
-+ | mn10200 | mn10300 \
-+ | msp430 \
-+ | ns16k | ns32k \
-+ | openrisc | or32 \
-+ | pdp10 | pdp11 | pj | pjl \
-+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-+ | pyramid \
-+ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
-+ | sh64 | sh64le \
-+ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
-+ | strongarm \
-+ | tahoe | thumb | tic80 | tron \
-+ | v850 | v850e \
-+ | we32k \
-+ | x86 | xscale | xstormy16 | xtensa \
-+ | z8k)
-+ basic_machine=$basic_machine-unknown
-+ ;;
-+ m6811 | m68hc11 | m6812 | m68hc12)
-+ # Motorola 68HC11/12.
- basic_machine=$basic_machine-unknown
-+ os=-none
- ;;
-- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl)
-+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
-- i[34567]86)
-+ i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
-@@ -195,24 +288,60 @@
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
-- # FIXME: clean up the formatting here.
-- vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
-- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
-- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
-- | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
-- | xmp-* | ymp-* \
-- | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \
-- | alpha-* | alphaev[4-7]-* | alphaev56-* | alphapca5[67]-* \
-- | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
-- | clipper-* | orion-* \
-- | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
-- | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
-- | mips64el-* | mips64orion-* | mips64orionel-* \
-- | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
-- | mipstx39-* | mipstx39el-* | mcore-* \
-- | f301-* | armv*-* | t3e-* \
-- | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
-- | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* )
-+ 580-* \
-+ | a29k-* \
-+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
-+ | avr-* \
-+ | bs2000-* \
-+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-+ | clipper-* | cydra-* \
-+ | d10v-* | d30v-* | dlx-* \
-+ | elxsi-* \
-+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
-+ | h8300-* | h8500-* \
-+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-+ | i*86-* | i860-* | i960-* | ia64-* \
-+ | ip2k-* \
-+ | m32r-* \
-+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-+ | m88110-* | m88k-* | mcore-* \
-+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-+ | mips16-* \
-+ | mips64-* | mips64el-* \
-+ | mips64vr-* | mips64vrel-* \
-+ | mips64orion-* | mips64orionel-* \
-+ | mips64vr4100-* | mips64vr4100el-* \
-+ | mips64vr4300-* | mips64vr4300el-* \
-+ | mips64vr5000-* | mips64vr5000el-* \
-+ | mipsisa32-* | mipsisa32el-* \
-+ | mipsisa32r2-* | mipsisa32r2el-* \
-+ | mipsisa64-* | mipsisa64el-* \
-+ | mipsisa64sb1-* | mipsisa64sb1el-* \
-+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-+ | mipstx39-* | mipstx39el-* \
-+ | msp430-* \
-+ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
-+ | orion-* \
-+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-+ | pyramid-* \
-+ | romp-* | rs6000-* \
-+ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
-+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-+ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
-+ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
-+ | tahoe-* | thumb-* \
-+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-+ | tron-* \
-+ | v850-* | v850e-* | vax-* \
-+ | we32k-* \
-+ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
-+ | xtensa-* \
-+ | ymp-* \
-+ | z8k-*)
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
-@@ -244,19 +373,22 @@
- basic_machine=a29k-none
- os=-bsd
- ;;
-+ amd64)
-+ basic_machine=x86_64-pc
-+ ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
-- basic_machine=m68k-cbm
-+ basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
-- basic_machine=m68k-cbm
-+ basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
-- basic_machine=m68k-cbm
-+ basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
-@@ -275,6 +407,10 @@
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
-+ c90)
-+ basic_machine=c90-cray
-+ os=-unicos
-+ ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
-@@ -295,27 +431,30 @@
- basic_machine=c38-convex
- os=-bsd
- ;;
-- cray | ymp)
-- basic_machine=ymp-cray
-- os=-unicos
-- ;;
-- cray2)
-- basic_machine=cray2-cray
-- os=-unicos
-- ;;
-- [ctj]90-cray)
-- basic_machine=c90-cray
-+ cray | j90)
-+ basic_machine=j90-cray
- os=-unicos
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
-+ cris | cris-* | etrax*)
-+ basic_machine=cris-axis
-+ ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
-+ decsystem10* | dec10*)
-+ basic_machine=pdp10-dec
-+ os=-tops10
-+ ;;
-+ decsystem20* | dec20*)
-+ basic_machine=pdp10-dec
-+ os=-tops20
-+ ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
-@@ -357,6 +496,10 @@
- basic_machine=tron-gmicro
- os=-sysv
- ;;
-+ go32)
-+ basic_machine=i386-pc
-+ os=-go32
-+ ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
-@@ -432,19 +575,19 @@
- basic_machine=i370-ibm
- ;;
- # I'm not sure what "Sysv32" means. Should this be sysv3.2?
-- i[34567]86v32)
-+ i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
-- i[34567]86v4*)
-+ i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
-- i[34567]86v)
-+ i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
-- i[34567]86sol2)
-+ i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
-@@ -456,17 +599,6 @@
- basic_machine=i386-unknown
- os=-vsta
- ;;
-- i386-go32 | go32)
-- basic_machine=i386-unknown
-- os=-go32
-- ;;
-- i386-mingw32 | mingw32)
-- basic_machine=i386-unknown
-- os=-mingw32
-- ;;
-- i386-qnx | qnx)
-- basic_machine=i386-qnx
-- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
-@@ -492,6 +624,10 @@
- basic_machine=ns32k-utek
- os=-sysv
- ;;
-+ mingw32)
-+ basic_machine=i386-pc
-+ os=-mingw32
-+ ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
-@@ -499,26 +635,26 @@
- basic_machine=m68k-atari
- os=-mint
- ;;
-- mipsel*-linux*)
-- basic_machine=mipsel-unknown
-- os=-linux-gnu
-- ;;
-- mips*-linux*)
-- basic_machine=mips-unknown
-- os=-linux-gnu
-- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
-+ mmix*)
-+ basic_machine=mmix-knuth
-+ os=-mmixware
-+ ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
-+ morphos)
-+ basic_machine=powerpc-unknown
-+ os=-morphos
-+ ;;
- msdos)
-- basic_machine=i386-unknown
-+ basic_machine=i386-pc
- os=-msdos
- ;;
- mvs)
-@@ -582,13 +718,28 @@
- basic_machine=i960-intel
- os=-mon960
- ;;
-+ nonstopux)
-+ basic_machine=mips-compaq
-+ os=-nonstopux
-+ ;;
- np1)
- basic_machine=np1-gould
- ;;
-+ nv1)
-+ basic_machine=nv1-cray
-+ os=-unicosmp
-+ ;;
-+ nsr-tandem)
-+ basic_machine=nsr-tandem
-+ ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
-+ or32 | or32-*)
-+ basic_machine=or32-unknown
-+ os=-coff
-+ ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
-@@ -611,45 +762,59 @@
- pbb)
- basic_machine=m68k-tti
- ;;
-- pc532 | pc532-*)
-+ pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
-- pentium | p5 | k5 | k6 | nexen)
-+ pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
-- pentiumpro | p6 | 6x86)
-+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2)
-- basic_machine=i786-pc
-+ basic_machine=i686-pc
- ;;
-- pentium-* | p5-* | k5-* | k6-* | nexen-*)
-+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
-- pentiumpro-* | p6-* | 6x86-*)
-+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-*)
-- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
-- power) basic_machine=rs6000-ibm
-+ power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
-- ;;
-+ ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
-- ;;
-+ ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
-+ ppc64) basic_machine=powerpc64-unknown
-+ ;;
-+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
-+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-+ basic_machine=powerpc64le-unknown
-+ ;;
-+ ppc64le-* | powerpc64little-*)
-+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
- ps2)
- basic_machine=i386-ibm
- ;;
-+ pw32)
-+ basic_machine=i586-unknown
-+ os=-pw32
-+ ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
-@@ -660,10 +825,22 @@
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
-+ s390 | s390-*)
-+ basic_machine=s390-ibm
-+ ;;
-+ s390x | s390x-*)
-+ basic_machine=s390x-ibm
-+ ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
-+ sb1)
-+ basic_machine=mipsisa64sb1-unknown
-+ ;;
-+ sb1el)
-+ basic_machine=mipsisa64sb1el-unknown
-+ ;;
- sequent)
- basic_machine=i386-sequent
- ;;
-@@ -671,7 +848,7 @@
- basic_machine=sh-hitachi
- os=-hms
- ;;
-- sparclite-wrs)
-+ sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
-@@ -729,20 +906,48 @@
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
-+ sv1)
-+ basic_machine=sv1-cray
-+ os=-unicos
-+ ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
-- basic_machine=t3e-cray
-+ basic_machine=alphaev5-cray
- os=-unicos
- ;;
-+ t90)
-+ basic_machine=t90-cray
-+ os=-unicos
-+ ;;
-+ tic4x | c4x*)
-+ basic_machine=tic4x-unknown
-+ os=-coff
-+ ;;
-+ tic54x | c54x*)
-+ basic_machine=tic54x-unknown
-+ os=-coff
-+ ;;
-+ tic55x | c55x*)
-+ basic_machine=tic55x-unknown
-+ os=-coff
-+ ;;
-+ tic6x | c6x*)
-+ basic_machine=tic6x-unknown
-+ os=-coff
-+ ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
-+ toad1)
-+ basic_machine=pdp10-xkl
-+ os=-tops20
-+ ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
-@@ -767,8 +972,8 @@
- os=-vms
- ;;
- vpp*|vx|vx-*)
-- basic_machine=f301-fujitsu
-- ;;
-+ basic_machine=f301-fujitsu
-+ ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
-@@ -789,13 +994,13 @@
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
-- xmp)
-- basic_machine=xmp-cray
-- os=-unicos
-- ;;
-- xps | xps100)
-+ xps | xps100)
- basic_machine=xps100-honeywell
- ;;
-+ ymp)
-+ basic_machine=ymp-cray
-+ os=-unicos
-+ ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
-@@ -816,13 +1021,6 @@
- op60c)
- basic_machine=hppa1.1-oki
- ;;
-- mips)
-- if [ x$os = x-linux-gnu ]; then
-- basic_machine=mips-unknown
-- else
-- basic_machine=mips-mips
-- fi
-- ;;
- romp)
- basic_machine=romp-ibm
- ;;
-@@ -832,16 +1030,26 @@
- vax)
- basic_machine=vax-dec
- ;;
-+ pdp10)
-+ # there are many clones, so DEC is not a safe bet
-+ basic_machine=pdp10-unknown
-+ ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
-- sparc | sparcv9)
-+ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
-+ basic_machine=sh-unknown
-+ ;;
-+ sh64)
-+ basic_machine=sh64-unknown
-+ ;;
-+ sparc | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
-- cydra)
-+ cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
-@@ -856,9 +1064,8 @@
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
-- c4x*)
-- basic_machine=c4x-none
-- os=-coff
-+ *-unknown)
-+ # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-@@ -916,14 +1123,34 @@
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-+ | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
-- | -interix* | -uwin* | -rhapsody* | -opened* | -openstep* | -oskit*)
-+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-+ | -powermax* | -dnix*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
-+ -qnx*)
-+ case $basic_machine in
-+ x86-* | i*86-*)
-+ ;;
-+ *)
-+ os=-nto$os
-+ ;;
-+ esac
-+ ;;
-+ -nto-qnx*)
-+ ;;
-+ -nto*)
-+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
-+ ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
-- | -macos* | -mpw* | -magic* | -mon960* | -lnews*)
-+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
-@@ -940,6 +1167,9 @@
- -opened*)
- os=-openedition
- ;;
-+ -wince*)
-+ os=-wince
-+ ;;
- -osfrose*)
- os=-osfrose
- ;;
-@@ -955,14 +1185,23 @@
- -acis*)
- os=-aos
- ;;
-+ -atheos*)
-+ os=-atheos
-+ ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
-+ -nova*)
-+ os=-rtmk-nova
-+ ;;
- -ns2 )
-- os=-nextstep2
-+ os=-nextstep2
-+ ;;
-+ -nsk*)
-+ os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
-@@ -977,9 +1216,6 @@
- -oss*)
- os=-sysv3
- ;;
-- -qnx)
-- os=-qnx4
-- ;;
- -svr4)
- os=-sysv4
- ;;
-@@ -1001,8 +1237,14 @@
- -xenix)
- os=-xenix
- ;;
-- -*mint | -*MiNT)
-- os=-mint
-+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-+ os=-mint
-+ ;;
-+ -aros*)
-+ os=-aros
-+ ;;
-+ -kaos*)
-+ os=-kaos
- ;;
- -none)
- ;;
-@@ -1035,7 +1277,11 @@
- arm*-semi)
- os=-aout
- ;;
-- pdp11-*)
-+ # This must come before the *-dec entry.
-+ pdp10-*)
-+ os=-tops20
-+ ;;
-+ pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
-@@ -1062,6 +1308,9 @@
- mips*-*)
- os=-elf
- ;;
-+ or32-*)
-+ os=-coff
-+ ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
-@@ -1125,25 +1374,25 @@
- *-next)
- os=-nextstep3
- ;;
-- *-gould)
-+ *-gould)
- os=-sysv
- ;;
-- *-highlevel)
-+ *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
-- *-sgi)
-+ *-sgi)
- os=-irix
- ;;
-- *-siemens)
-+ *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
-- f301-fujitsu)
-+ f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
-@@ -1209,7 +1458,7 @@
- -ptx*)
- vendor=sequent
- ;;
-- -vxsim* | -vxworks*)
-+ -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
-@@ -1221,12 +1470,23 @@
- -mpw* | -macos*)
- vendor=apple
- ;;
-- -*mint | -*MiNT)
-+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
-+ -vos*)
-+ vendor=stratus
-+ ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
- esac
-
- echo $basic_machine$os
-+exit 0
-+
-+# Local variables:
-+# eval: (add-hook 'write-file-hooks 'time-stamp)
-+# time-stamp-start: "timestamp='"
-+# time-stamp-format: "%:y-%02m-%02d"
-+# time-stamp-end: "'"
-+# End:
---- glib1.2-1.2.10.orig/configure
-+++ glib1.2-1.2.10/configure
-@@ -38,9 +38,170 @@
- --enable-fast-install[=PKGS] optimize for fast installation [default=yes]"
- ac_help="$ac_help
- --with-gnu-ld assume the C compiler uses GNU ld [default=no]"
-+
-+# Find the correct PATH separator. Usually this is `:', but
-+# DJGPP uses `;' like DOS.
-+if test "X${PATH_SEPARATOR+set}" != Xset; then
-+ UNAME=${UNAME-`uname 2>/dev/null`}
-+ case X$UNAME in
-+ *-DOS) lt_cv_sys_path_separator=';' ;;
-+ *) lt_cv_sys_path_separator=':' ;;
-+ esac
-+ PATH_SEPARATOR=$lt_cv_sys_path_separator
-+fi
-+
-+
-+# Check that we are running under the correct shell.
-+SHELL=${CONFIG_SHELL-/bin/sh}
-+
-+case X$ECHO in
-+X*--fallback-echo)
-+ # Remove one level of quotation (which was required for Make).
-+ ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
-+ ;;
-+esac
-+
-+echo=${ECHO-echo}
-+if test "X$1" = X--no-reexec; then
-+ # Discard the --no-reexec flag, and continue.
-+ shift
-+elif test "X$1" = X--fallback-echo; then
-+ # Avoid inline document here, it may be left over
-+ :
-+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
-+ # Yippee, $echo works!
-+ :
-+else
-+ # Restart under the correct shell.
-+ exec $SHELL "$0" --no-reexec ${1+"$@"}
-+fi
-+
-+if test "X$1" = X--fallback-echo; then
-+ # used as fallback echo
-+ shift
-+ cat <<EOF
-+
-+EOF
-+ exit 0
-+fi
-+
-+# The HP-UX ksh and POSIX shell print the target directory to stdout
-+# if CDPATH is set.
-+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-+
-+if test -z "$ECHO"; then
-+if test "X${echo_test_string+set}" != Xset; then
-+# find a string as large as possible, as long as the shell can cope with it
-+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
-+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-+ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
-+ echo_test_string="`eval $cmd`" &&
-+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
-+ then
-+ break
-+ fi
-+ done
-+fi
-+
-+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ :
-+else
-+ # The Solaris, AIX, and Digital Unix default echo programs unquote
-+ # backslashes. This makes it impossible to quote backslashes using
-+ # echo "$something" | sed 's/\\/\\\\/g'
-+ #
-+ # So, first we look for a working echo in the user's PATH.
-+
-+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for dir in $PATH /usr/ucb; do
-+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ echo="$dir/echo"
-+ break
-+ fi
-+ done
-+ IFS="$save_ifs"
-+
-+ if test "X$echo" = Xecho; then
-+ # We didn't find a better echo, so look for alternatives.
-+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ # This shell has a builtin print -r that does the trick.
-+ echo='print -r'
-+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
-+ test "X$CONFIG_SHELL" != X/bin/ksh; then
-+ # If we have ksh, try running configure again with it.
-+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-+ export ORIGINAL_CONFIG_SHELL
-+ CONFIG_SHELL=/bin/ksh
-+ export CONFIG_SHELL
-+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
-+ else
-+ # Try using printf.
-+ echo='printf %s\n'
-+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ # Cool, printf works
-+ :
-+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-+ test "X$echo_testing_string" = 'X\t' &&
-+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-+ export CONFIG_SHELL
-+ SHELL="$CONFIG_SHELL"
-+ export SHELL
-+ echo="$CONFIG_SHELL $0 --fallback-echo"
-+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-+ test "X$echo_testing_string" = 'X\t' &&
-+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ echo="$CONFIG_SHELL $0 --fallback-echo"
-+ else
-+ # maybe with a smaller string...
-+ prev=:
-+
-+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
-+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
-+ then
-+ break
-+ fi
-+ prev="$cmd"
-+ done
-+
-+ if test "$prev" != 'sed 50q "$0"'; then
-+ echo_test_string=`eval $prev`
-+ export echo_test_string
-+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
-+ else
-+ # Oops. We lost completely, so just stick with echo.
-+ echo=echo
-+ fi
-+ fi
-+ fi
-+ fi
-+fi
-+fi
-+
-+# Copy echo and quote the copy suitably for passing to libtool from
-+# the Makefile, instead of quoting the original, which is used later.
-+ECHO=$echo
-+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
-+ ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
-+fi
-+
-+
- ac_help="$ac_help
- --disable-libtool-lock avoid locking (might break parallel builds)"
- ac_help="$ac_help
-+ --with-pic try to use only PIC/non-PIC objects [default=use both]"
-+ac_help="$ac_help
- --enable-maintainer-mode enable make rules and dependencies not useful
- (and sometimes confusing) to the casual installer"
- if test `expr $GLIB_MINOR_VERSION \% 2` = 1 ; then
-@@ -618,6 +779,7 @@
- ac_config_sub=$ac_aux_dir/config.sub
- ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-+am__api_version="1.4"
- # Find a good install program. We prefer a C program (faster),
- # so one script is as good as another. But avoid the broken or
- # incompatible versions:
-@@ -630,7 +792,7 @@
- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
- # ./install, which can be erroneously created by make from ./install.sh.
- echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
--echo "configure:634: checking for a BSD compatible install" >&5
-+echo "configure:796: checking for a BSD compatible install" >&5
- if test -z "$INSTALL"; then
- if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -683,7 +845,7 @@
- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
- echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
--echo "configure:687: checking whether build environment is sane" >&5
-+echo "configure:849: checking whether build environment is sane" >&5
- # Just in case
- sleep 1
- echo timestamp > conftestfile
-@@ -740,7 +902,7 @@
- test "$program_transform_name" = "" && program_transform_name="s,x,x,"
-
- echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
--echo "configure:744: checking whether ${MAKE-make} sets \${MAKE}" >&5
-+echo "configure:906: checking whether ${MAKE-make} sets \${MAKE}" >&5
- set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -778,21 +940,21 @@
-
-
- missing_dir=`cd $ac_aux_dir && pwd`
--echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
--echo "configure:783: checking for working aclocal" >&5
-+echo $ac_n "checking for working aclocal-${am__api_version}""... $ac_c" 1>&6
-+echo "configure:945: checking for working aclocal-${am__api_version}" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
--if (aclocal --version) < /dev/null > /dev/null 2>&1; then
-- ACLOCAL=aclocal
-+if (aclocal-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
-+ ACLOCAL=aclocal-${am__api_version}
- echo "$ac_t""found" 1>&6
- else
-- ACLOCAL="$missing_dir/missing aclocal"
-+ ACLOCAL="$missing_dir/missing aclocal-${am__api_version}"
- echo "$ac_t""missing" 1>&6
- fi
-
- echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
--echo "configure:796: checking for working autoconf" >&5
-+echo "configure:958: checking for working autoconf" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
-@@ -804,21 +966,21 @@
- echo "$ac_t""missing" 1>&6
- fi
-
--echo $ac_n "checking for working automake""... $ac_c" 1>&6
--echo "configure:809: checking for working automake" >&5
-+echo $ac_n "checking for working automake-${am__api_version}""... $ac_c" 1>&6
-+echo "configure:971: checking for working automake-${am__api_version}" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
--if (automake --version) < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake
-+if (automake-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
-+ AUTOMAKE=automake-${am__api_version}
- echo "$ac_t""found" 1>&6
- else
-- AUTOMAKE="$missing_dir/missing automake"
-+ AUTOMAKE="$missing_dir/missing automake-${am__api_version}"
- echo "$ac_t""missing" 1>&6
- fi
-
- echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
--echo "configure:822: checking for working autoheader" >&5
-+echo "configure:984: checking for working autoheader" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
-@@ -831,7 +993,7 @@
- fi
-
- echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
--echo "configure:835: checking for working makeinfo" >&5
-+echo "configure:997: checking for working makeinfo" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
-@@ -871,11 +1033,164 @@
- EOF
-
-
-+# Find the correct PATH separator. Usually this is `:', but
-+# DJGPP uses `;' like DOS.
-+if test "X${PATH_SEPARATOR+set}" != Xset; then
-+ UNAME=${UNAME-`uname 2>/dev/null`}
-+ case X$UNAME in
-+ *-DOS) lt_cv_sys_path_separator=';' ;;
-+ *) lt_cv_sys_path_separator=':' ;;
-+ esac
-+ PATH_SEPARATOR=$lt_cv_sys_path_separator
-+fi
-+
-+echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-+echo "configure:1049: checking for Cygwin environment" >&5
-+if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1054 "configure"
-+#include "confdefs.h"
-+
-+int main() {
-+
-+#ifndef __CYGWIN__
-+#define __CYGWIN__ __CYGWIN32__
-+#endif
-+return __CYGWIN__;
-+; return 0; }
-+EOF
-+if { (eval echo configure:1065: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ rm -rf conftest*
-+ ac_cv_cygwin=yes
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ ac_cv_cygwin=no
-+fi
-+rm -f conftest*
-+rm -f conftest*
-+fi
-+
-+echo "$ac_t""$ac_cv_cygwin" 1>&6
-+CYGWIN=
-+test "$ac_cv_cygwin" = yes && CYGWIN=yes
-+echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-+echo "configure:1082: checking for mingw32 environment" >&5
-+if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1087 "configure"
-+#include "confdefs.h"
-+
-+int main() {
-+return __MINGW32__;
-+; return 0; }
-+EOF
-+if { (eval echo configure:1094: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ rm -rf conftest*
-+ ac_cv_mingw32=yes
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ ac_cv_mingw32=no
-+fi
-+rm -f conftest*
-+rm -f conftest*
-+fi
-+
-+echo "$ac_t""$ac_cv_mingw32" 1>&6
-+MINGW32=
-+test "$ac_cv_mingw32" = yes && MINGW32=yes
-+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-+echo "configure:1111: checking how to run the C preprocessor" >&5
-+# On Suns, sometimes $CPP names a directory.
-+if test -n "$CPP" && test -d "$CPP"; then
-+ CPP=
-+fi
-+if test -z "$CPP"; then
-+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ # This must be in double quotes, not single quotes, because CPP may get
-+ # substituted into the Makefile and "${CC-cc}" will confuse make.
-+ CPP="${CC-cc} -E"
-+ # On the NeXT, cc -E runs the code through the compiler's parser,
-+ # not just through cpp.
-+ cat > conftest.$ac_ext <<EOF
-+#line 1126 "configure"
-+#include "confdefs.h"
-+#include <assert.h>
-+Syntax Error
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:1132: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-+if test -z "$ac_err"; then
-+ :
-+else
-+ echo "$ac_err" >&5
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ CPP="${CC-cc} -E -traditional-cpp"
-+ cat > conftest.$ac_ext <<EOF
-+#line 1143 "configure"
-+#include "confdefs.h"
-+#include <assert.h>
-+Syntax Error
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:1149: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-+if test -z "$ac_err"; then
-+ :
-+else
-+ echo "$ac_err" >&5
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ CPP="${CC-cc} -nologo -E"
-+ cat > conftest.$ac_ext <<EOF
-+#line 1160 "configure"
-+#include "confdefs.h"
-+#include <assert.h>
-+Syntax Error
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:1166: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-+if test -z "$ac_err"; then
-+ :
-+else
-+ echo "$ac_err" >&5
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ CPP=/lib/cpp
-+fi
-+rm -f conftest*
-+fi
-+rm -f conftest*
-+fi
-+rm -f conftest*
-+ ac_cv_prog_CPP="$CPP"
-+fi
-+ CPP="$ac_cv_prog_CPP"
-+else
-+ ac_cv_prog_CPP="$CPP"
-+fi
-+echo "$ac_t""$CPP" 1>&6
-+
- # Check whether --enable-shared or --disable-shared was given.
- if test "${enable_shared+set}" = set; then
- enableval="$enable_shared"
- p=${PACKAGE-default}
--case "$enableval" in
-+case $enableval in
- yes) enable_shared=yes ;;
- no) enable_shared=no ;;
- *)
-@@ -898,7 +1213,7 @@
- if test "${enable_static+set}" = set; then
- enableval="$enable_static"
- p=${PACKAGE-default}
--case "$enableval" in
-+case $enableval in
- yes) enable_static=yes ;;
- no) enable_static=no ;;
- *)
-@@ -921,7 +1236,7 @@
- if test "${enable_fast_install+set}" = set; then
- enableval="$enable_fast_install"
- p=${PACKAGE-default}
--case "$enableval" in
-+case $enableval in
- yes) enable_fast_install=yes ;;
- no) enable_fast_install=no ;;
- *)
-@@ -947,7 +1262,7 @@
- fi
-
- echo $ac_n "checking host system type""... $ac_c" 1>&6
--echo "configure:951: checking host system type" >&5
-+echo "configure:1266: checking host system type" >&5
-
- host_alias=$host
- case "$host_alias" in
-@@ -968,7 +1283,7 @@
- echo "$ac_t""$host" 1>&6
-
- echo $ac_n "checking build system type""... $ac_c" 1>&6
--echo "configure:972: checking build system type" >&5
-+echo "configure:1287: checking build system type" >&5
-
- build_alias=$build
- case "$build_alias" in
-@@ -985,40 +1300,10 @@
- build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
- echo "$ac_t""$build" 1>&6
-
--# 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:992: 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
-- if test -n "$RANLIB"; then
-- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
--else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_RANLIB="ranlib"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-- test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
--fi
--fi
--RANLIB="$ac_cv_prog_RANLIB"
--if test -n "$RANLIB"; then
-- echo "$ac_t""$RANLIB" 1>&6
--else
-- echo "$ac_t""no" 1>&6
--fi
--
- # 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:1022: checking for $ac_word" >&5
-+echo "configure:1307: 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
-@@ -1048,7 +1333,7 @@
- # 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:1052: checking for $ac_word" >&5
-+echo "configure:1337: 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
-@@ -1099,7 +1384,7 @@
- # 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:1103: checking for $ac_word" >&5
-+echo "configure:1388: 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
-@@ -1131,7 +1416,7 @@
- fi
-
- echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
--echo "configure:1135: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-+echo "configure:1420: 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.
-@@ -1142,12 +1427,12 @@
-
- cat > conftest.$ac_ext << EOF
-
--#line 1146 "configure"
-+#line 1431 "configure"
- #include "confdefs.h"
-
- main(){return(0);}
- EOF
--if { (eval echo configure:1151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:1436: \"$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
-@@ -1173,12 +1458,12 @@
- { 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:1177: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-+echo "configure:1462: 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:1182: checking whether we are using GNU C" >&5
-+echo "configure:1467: 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
-@@ -1187,7 +1472,7 @@
- yes;
- #endif
- EOF
--if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1191: \"$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:1476: \"$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
-@@ -1206,7 +1491,7 @@
- ac_save_CFLAGS="$CFLAGS"
- CFLAGS=
- echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
--echo "configure:1210: checking whether ${CC-cc} accepts -g" >&5
-+echo "configure:1495: 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
-@@ -1246,12 +1531,18 @@
- fi
-
- ac_prog=ld
--if test "$ac_cv_prog_gcc" = yes; then
-+if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
--echo "configure:1253: checking for ld used by GCC" >&5
-- ac_prog=`($CC -print-prog-name=ld) 2>&5`
-- case "$ac_prog" in
-+echo "configure:1538: checking for ld used by GCC" >&5
-+ case $host in
-+ *-*-mingw*)
-+ # gcc leaves a trailing carriage return which upsets mingw
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-+ *)
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-+ esac
-+ case $ac_prog in
- # Accept absolute paths.
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
-@@ -1273,24 +1564,24 @@
- esac
- elif test "$with_gnu_ld" = yes; then
- echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
--echo "configure:1277: checking for GNU ld" >&5
-+echo "configure:1568: checking for GNU ld" >&5
- else
- echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
--echo "configure:1280: checking for non-GNU ld" >&5
-+echo "configure:1571: checking for non-GNU ld" >&5
- fi
--if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
-+if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test -z "$LD"; then
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-- ac_cv_path_LD="$ac_dir/$ac_prog"
-+ lt_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
-- if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
-+ if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
- test "$with_gnu_ld" != no && break
- else
- test "$with_gnu_ld" != yes && break
-@@ -1299,11 +1590,11 @@
- done
- IFS="$ac_save_ifs"
- else
-- ac_cv_path_LD="$LD" # Let the user override the test with a path.
-+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
- fi
- fi
-
--LD="$ac_cv_path_LD"
-+LD="$lt_cv_path_LD"
- if test -n "$LD"; then
- echo "$ac_t""$LD" 1>&6
- else
-@@ -1311,245 +1602,3880 @@
- fi
- test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
- echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
--echo "configure:1315: checking if the linker ($LD) is GNU ld" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
-+echo "configure:1606: checking if the linker ($LD) is GNU ld" >&5
-+if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- # I'd rather use --version here, but apparently some GNU ld's only accept -v.
- if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
-- ac_cv_prog_gnu_ld=yes
-+ lt_cv_prog_gnu_ld=yes
- else
-- ac_cv_prog_gnu_ld=no
-+ lt_cv_prog_gnu_ld=no
- fi
- fi
-
--echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
-+echo "$ac_t""$lt_cv_prog_gnu_ld" 1>&6
-+with_gnu_ld=$lt_cv_prog_gnu_ld
-+
-+
-+echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
-+echo "configure:1623: checking for $LD option to reload object files" >&5
-+if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ lt_cv_ld_reload_flag='-r'
-+fi
-
-+echo "$ac_t""$lt_cv_ld_reload_flag" 1>&6
-+reload_flag=$lt_cv_ld_reload_flag
-+test -n "$reload_flag" && reload_flag=" $reload_flag"
-
- echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
--echo "configure:1331: checking for BSD-compatible nm" >&5
--if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
-+echo "configure:1635: checking for BSD-compatible nm" >&5
-+if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test -n "$NM"; then
- # Let the user override the test.
-- ac_cv_path_NM="$NM"
-+ lt_cv_path_NM="$NM"
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
-+ tmp_nm=$ac_dir/${ac_tool_prefix}nm
-+ if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
-- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-- ac_cv_path_NM="$ac_dir/nm -B"
-+ # Tru64's nm complains that /dev/null is an invalid object file
-+ if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
-+ lt_cv_path_NM="$tmp_nm -B"
- break
-- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-- ac_cv_path_NM="$ac_dir/nm -p"
-+ elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-+ lt_cv_path_NM="$tmp_nm -p"
- break
- else
-- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
-+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
- continue # so that we can try to find one that supports BSD flags
- fi
- fi
- done
- IFS="$ac_save_ifs"
-- test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
-+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
-+fi
-+fi
-+
-+NM="$lt_cv_path_NM"
-+echo "$ac_t""$NM" 1>&6
-+
-+echo $ac_n "checking for a sed that does not truncate output""... $ac_c" 1>&6
-+echo "configure:1673: checking for a sed that does not truncate output" >&5
-+if eval "test \"`echo '$''{'lt_cv_path_SED'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ # Loop through the user's path and test for sed and gsed.
-+# Then use that list of sed's as ones to test for truncation.
-+as_executable_p="test -f"
-+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_prog in sed gsed; do
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-+ _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext"
-+ fi
-+ done
-+ done
-+done
-+
-+ # Create a temporary directory, and hook for its removal unless debugging.
-+$debug ||
-+{
-+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-+ trap '{ (exit 1); exit 1; }' 1 2 13 15
-+}
-+
-+# Create a (secure) tmp directory for tmp files.
-+: ${TMPDIR=/tmp}
-+{
-+ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` &&
-+ test -n "$tmp" && test -d "$tmp"
-+} ||
-+{
-+ tmp=$TMPDIR/sed$$-$RANDOM
-+ (umask 077 && mkdir $tmp)
-+} ||
-+{
-+ echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-+ { (exit 1); exit 1; }
-+}
-+ _max=0
-+ _count=0
-+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
-+ # along with /bin/sed that truncates output.
-+ for _sed in $_sed_list /usr/xpg4/bin/sed; do
-+ test ! -f ${_sed} && break
-+ cat /dev/null > "$tmp/sed.in"
-+ _count=0
-+ echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in"
-+ # Check for GNU sed and select it if it is found.
-+ if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then
-+ lt_cv_path_SED=${_sed}
-+ break
-+ fi
-+ while true; do
-+ cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp"
-+ mv "$tmp/sed.tmp" "$tmp/sed.in"
-+ cp "$tmp/sed.in" "$tmp/sed.nl"
-+ echo >>"$tmp/sed.nl"
-+ ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break
-+ cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break
-+ # 40000 chars as input seems more than enough
-+ test $_count -gt 10 && break
-+ _count=`expr $_count + 1`
-+ if test $_count -gt $_max; then
-+ _max=$_count
-+ lt_cv_path_SED=$_sed
-+ fi
-+ done
-+ done
-+ rm -rf "$tmp"
-+
-+fi
-+
-+if test "X$SED" != "X"; then
-+ lt_cv_path_SED=$SED
-+else
-+ SED=$lt_cv_path_SED
-+fi
-+echo "$ac_t""$SED" 1>&6
-+
-+echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-+echo "configure:1757: checking whether ln -s works" >&5
-+if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ rm -f conftestdata
-+if ln -s X conftestdata 2>/dev/null
-+then
-+ rm -f conftestdata
-+ ac_cv_prog_LN_S="ln -s"
-+else
-+ ac_cv_prog_LN_S=ln
- fi
- fi
-+LN_S="$ac_cv_prog_LN_S"
-+if test "$ac_cv_prog_LN_S" = "ln -s"; then
-+ echo "$ac_t""yes" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+echo $ac_n "checking how to recognise dependent libraries""... $ac_c" 1>&6
-+echo "configure:1778: checking how to recognise dependent libraries" >&5
-+if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ lt_cv_file_magic_cmd='$MAGIC_CMD'
-+lt_cv_file_magic_test_file=
-+lt_cv_deplibs_check_method='unknown'
-+# Need to set the preceding variable on all platforms that support
-+# interlibrary dependencies.
-+# 'none' -- dependencies not supported.
-+# `unknown' -- same as none, but documents that we really don't know.
-+# 'pass_all' -- all dependencies passed with no checks.
-+# 'test_compile' -- check by making test program.
-+# 'file_magic [[regex]]' -- check by looking for files in library path
-+# which responds to the $file_magic_cmd with a given egrep regex.
-+# If you have `file' or equivalent on your system and you're not sure
-+# whether `pass_all' will *always* work, you probably want this one.
-+
-+case $host_os in
-+aix4* | aix5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+beos*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+bsdi4*)
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-+ lt_cv_file_magic_cmd='/usr/bin/file -L'
-+ lt_cv_file_magic_test_file=/shlib/libc.so
-+ ;;
-+
-+cygwin* | mingw* | pw32*)
-+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ lt_cv_file_magic_cmd='$OBJDUMP -f'
-+ ;;
-+
-+darwin* | rhapsody*)
-+ lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
-+ lt_cv_file_magic_cmd='/usr/bin/file -L'
-+ case "$host_os" in
-+ rhapsody* | darwin1.[012])
-+ lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
-+ ;;
-+ *) # Darwin 1.3 on
-+ lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
-+ ;;
-+ esac
-+ ;;
-+
-+freebsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-+ case $host_cpu in
-+ i*86 )
-+ # Not sure whether the presence of OpenBSD here was a mistake.
-+ # Let's accept both of them until this is cleared up.
-+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ ;;
-+ esac
-+ else
-+ lt_cv_deplibs_check_method=pass_all
-+ fi
-+ ;;
-+
-+gnu*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+hpux10.20*|hpux11*)
-+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ irix5* | nonstopux*)
-+ # this will be overridden with pass_all, but let us keep it just in case
-+ lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
-+ ;;
-+ *)
-+ case $LD in
-+ *-32|*"-32 ") libmagic=32-bit;;
-+ *-n32|*"-n32 ") libmagic=N32;;
-+ *-64|*"-64 ") libmagic=64-bit;;
-+ *) libmagic=never-match;;
-+ esac
-+ # this will be overridden with pass_all, but let us keep it just in case
-+ lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
-+ ;;
-+ esac
-+ lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+# This must be Linux ELF.
-+linux-gnu*)
-+ case $host_cpu in
-+ alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*)
-+ lt_cv_deplibs_check_method=pass_all ;;
-+ *)
-+ # glibc up to 2.1.1 does not perform some relocations on ARM
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
-+ esac
-+ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-+ ;;
-+
-+netbsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-+ else
-+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
-+ fi
-+ ;;
-+
-+newos6*)
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
-+ ;;
-+
-+openbsd*)
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
-+ else
-+ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
-+ fi
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ # this will be overridden with pass_all, but let us keep it just in case
-+ lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
-+ lt_cv_file_magic_test_file=/shlib/libc.so
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+sco3.2v5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+solaris*)
-+ lt_cv_deplibs_check_method=pass_all
-+ lt_cv_file_magic_test_file=/lib/libc.so
-+ ;;
-+
-+sysv5uw[78]* | sysv4*uw2*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ case $host_vendor in
-+ motorola)
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-+ ;;
-+ ncr)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+ sequent)
-+ lt_cv_file_magic_cmd='/bin/file'
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-+ ;;
-+ sni)
-+ lt_cv_file_magic_cmd='/bin/file'
-+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-+ lt_cv_file_magic_test_file=/lib/libc.so
-+ ;;
-+ siemens)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+ esac
-+ ;;
-+esac
-+
-+fi
-+
-+echo "$ac_t""$lt_cv_deplibs_check_method" 1>&6
-+file_magic_cmd=$lt_cv_file_magic_cmd
-+deplibs_check_method=$lt_cv_deplibs_check_method
-+
-+echo $ac_n "checking for object suffix""... $ac_c" 1>&6
-+echo "configure:1964: checking for object suffix" >&5
-+if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ rm -f conftest*
-+echo 'int i = 1;' > conftest.$ac_ext
-+if { (eval echo configure:1970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ for ac_file in conftest.*; do
-+ case $ac_file in
-+ *.c) ;;
-+ *) ac_cv_objext=`echo $ac_file | sed -e s/conftest.//` ;;
-+ esac
-+ done
-+else
-+ { echo "configure: error: installation or configuration problem; compiler does not work" 1>&2; exit 1; }
-+fi
-+rm -f conftest*
-+fi
-+
-+echo "$ac_t""$ac_cv_objext" 1>&6
-+OBJEXT=$ac_cv_objext
-+ac_objext=$ac_cv_objext
-+
-+
-+
-+echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-+echo "configure:1990: checking for executable suffix" >&5
-+if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$CYGWIN" = yes || test "$MINGW32" = yes; then
-+ ac_cv_exeext=.exe
-+else
-+ rm -f conftest*
-+ echo 'int main () { return 0; }' > conftest.$ac_ext
-+ ac_cv_exeext=
-+ if { (eval echo configure:2000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-+ for file in conftest.*; do
-+ case $file in
-+ *.$ac_ext | *.c | *.o | *.obj) ;;
-+ *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
-+ esac
-+ done
-+ else
-+ { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; }
-+ fi
-+ rm -f conftest*
-+ test x"${ac_cv_exeext}" = x && ac_cv_exeext=no
-+fi
-+fi
-+
-+EXEEXT=""
-+test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext}
-+echo "$ac_t""${ac_cv_exeext}" 1>&6
-+ac_exeext=$EXEEXT
-+
-+if test $host != $build; then
-+ ac_tool_prefix=${host_alias}-
-+else
-+ ac_tool_prefix=
-+fi
-+
-+
-+
-+
-+# Check for command to grab the raw symbol name followed by C symbol from nm.
-+echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6
-+echo "configure:2031: checking command to parse $NM output" >&5
-+if eval "test \"`echo '$''{'lt_cv_sys_global_symbol_pipe'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+
-+# These are sane defaults that work on at least a few old systems.
-+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-+
-+# Character class describing NM global symbol codes.
-+symcode='[BCDEGRST]'
-+
-+# Regexp to match symbols that can be accessed directly from C.
-+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-+
-+# Transform the above into a raw symbol and a C symbol.
-+symxfrm='\1 \2\3 \3'
-+
-+# Transform an extracted symbol line into a proper C declaration
-+lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
-+
-+# Transform an extracted symbol line into symbol name and symbol address
-+lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+
-+# Define system-specific variables.
-+case $host_os in
-+aix*)
-+ symcode='[BCDT]'
-+ ;;
-+cygwin* | mingw* | pw32*)
-+ symcode='[ABCDGISTW]'
-+ ;;
-+hpux*) # Its linker distinguishes data from code symbols
-+ lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-+ lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+ ;;
-+irix* | nonstopux*)
-+ symcode='[BCDEGRST]'
-+ ;;
-+osf*)
-+ symcode='[BCDEGQRST]'
-+ ;;
-+solaris* | sysv5*)
-+ symcode='[BDT]'
-+ ;;
-+sysv4)
-+ symcode='[DFNSTU]'
-+ ;;
-+esac
-+
-+# Handle CRLF in mingw tool chain
-+opt_cr=
-+case $host_os in
-+mingw*)
-+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-+ ;;
-+esac
-+
-+# If we're using GNU nm, then use its standard symbol codes.
-+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
-+ symcode='[ABCDGISTW]'
-+fi
-+
-+# Try without a prefix undercore, then with it.
-+for ac_symprfx in "" "_"; do
-+
-+ # Write the raw and C identifiers.
-+lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
-+
-+ # Check to see that the pipe works correctly.
-+ pipe_works=no
-+ rm -f conftest*
-+ cat > conftest.$ac_ext <<EOF
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+char nm_test_var;
-+void nm_test_func(){}
-+#ifdef __cplusplus
-+}
-+#endif
-+int main(){nm_test_var='a';nm_test_func();return(0);}
-+EOF
-+
-+ if { (eval echo configure:2114: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ # Now try to grab the symbols.
-+ nlist=conftest.nm
-+ if { (eval echo configure:2117: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then
-+ # Try sorting and uniquifying the output.
-+ if sort "$nlist" | uniq > "$nlist"T; then
-+ mv -f "$nlist"T "$nlist"
-+ else
-+ rm -f "$nlist"T
-+ fi
-+
-+ # Make sure that we snagged all the symbols we need.
-+ if egrep ' nm_test_var$' "$nlist" >/dev/null; then
-+ if egrep ' nm_test_func$' "$nlist" >/dev/null; then
-+ cat <<EOF > conftest.$ac_ext
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+EOF
-+ # Now generate the symbol file.
-+ eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
-+
-+ cat <<EOF >> conftest.$ac_ext
-+#if defined (__STDC__) && __STDC__
-+# define lt_ptr void *
-+#else
-+# define lt_ptr char *
-+# define const
-+#endif
-+
-+/* The mapping between symbol names and symbols. */
-+const struct {
-+ const char *name;
-+ lt_ptr address;
-+}
-+lt_preloaded_symbols[] =
-+{
-+EOF
-+ sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
-+ cat <<\EOF >> conftest.$ac_ext
-+ {0, (lt_ptr) 0}
-+};
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+EOF
-+ # Now try linking the two files.
-+ mv conftest.$ac_objext conftstm.$ac_objext
-+ save_LIBS="$LIBS"
-+ save_CFLAGS="$CFLAGS"
-+ LIBS="conftstm.$ac_objext"
-+ CFLAGS="$CFLAGS$no_builtin_flag"
-+ if { (eval echo configure:2168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest$ac_exeext; then
-+ pipe_works=yes
-+ fi
-+ LIBS="$save_LIBS"
-+ CFLAGS="$save_CFLAGS"
-+ else
-+ echo "cannot find nm_test_func in $nlist" >&5
-+ fi
-+ else
-+ echo "cannot find nm_test_var in $nlist" >&5
-+ fi
-+ else
-+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-+ fi
-+ else
-+ echo "$progname: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ fi
-+ rm -f conftest* conftst*
-+
-+ # Do not use the global_symbol_pipe unless it works.
-+ if test "$pipe_works" = yes; then
-+ break
-+ else
-+ lt_cv_sys_global_symbol_pipe=
-+ fi
-+done
-+
-+fi
-+
-+global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
-+if test -z "$lt_cv_sys_global_symbol_pipe"; then
-+ global_symbol_to_cdecl=
-+ global_symbol_to_c_name_address=
-+else
-+ global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
-+ global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
-+fi
-+if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
-+then
-+ echo "$ac_t""failed" 1>&6
-+else
-+ echo "$ac_t""ok" 1>&6
-+fi
-+
-+for ac_hdr in dlfcn.h
-+do
-+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-+echo "configure:2217: checking for $ac_hdr" >&5
-+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 2222 "configure"
-+#include "confdefs.h"
-+#include <$ac_hdr>
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:2227: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-+if test -z "$ac_err"; then
-+ rm -rf conftest*
-+ eval "ac_cv_header_$ac_safe=yes"
-+else
-+ echo "$ac_err" >&5
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ eval "ac_cv_header_$ac_safe=no"
-+fi
-+rm -f conftest*
-+fi
-+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-+ cat >> confdefs.h <<EOF
-+#define $ac_tr_hdr 1
-+EOF
-+
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+done
-+
-+
-+
-+
-+
-+
-+# Only perform the check for file, if the check method requires it
-+case $deplibs_check_method in
-+file_magic*)
-+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-+ echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6
-+echo "configure:2263: checking for ${ac_tool_prefix}file" >&5
-+if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ case $MAGIC_CMD in
-+ /*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-+ ;;
-+ ?:/*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-+ ;;
-+ *)
-+ ac_save_MAGIC_CMD="$MAGIC_CMD"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+ ac_dummy="/usr/bin:$PATH"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/${ac_tool_prefix}file; then
-+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-+ if test -n "$file_magic_test_file"; then
-+ case $deplibs_check_method in
-+ "file_magic "*)
-+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-+ egrep "$file_magic_regex" > /dev/null; then
-+ :
-+ else
-+ cat <<EOF 1>&2
-+
-+*** Warning: the command libtool uses to detect shared libraries,
-+*** $file_magic_cmd, produces output that libtool cannot recognize.
-+*** The result is that libtool may fail to recognize shared libraries
-+*** as such. This will affect the creation of libtool libraries that
-+*** depend on shared libraries, but programs linked with such libtool
-+*** libraries will work regardless of this problem. Nevertheless, you
-+*** may want to report the problem to your system manager and/or to
-+*** bug-libtool@gnu.org
-+
-+EOF
-+ fi ;;
-+ esac
-+ fi
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ MAGIC_CMD="$ac_save_MAGIC_CMD"
-+ ;;
-+esac
-+fi
-+
-+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+if test -n "$MAGIC_CMD"; then
-+ echo "$ac_t""$MAGIC_CMD" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+if test -z "$lt_cv_path_MAGIC_CMD"; then
-+ if test -n "$ac_tool_prefix"; then
-+ echo $ac_n "checking for file""... $ac_c" 1>&6
-+echo "configure:2325: checking for file" >&5
-+if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ case $MAGIC_CMD in
-+ /*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-+ ;;
-+ ?:/*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-+ ;;
-+ *)
-+ ac_save_MAGIC_CMD="$MAGIC_CMD"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+ ac_dummy="/usr/bin:$PATH"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/file; then
-+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
-+ if test -n "$file_magic_test_file"; then
-+ case $deplibs_check_method in
-+ "file_magic "*)
-+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-+ egrep "$file_magic_regex" > /dev/null; then
-+ :
-+ else
-+ cat <<EOF 1>&2
-+
-+*** Warning: the command libtool uses to detect shared libraries,
-+*** $file_magic_cmd, produces output that libtool cannot recognize.
-+*** The result is that libtool may fail to recognize shared libraries
-+*** as such. This will affect the creation of libtool libraries that
-+*** depend on shared libraries, but programs linked with such libtool
-+*** libraries will work regardless of this problem. Nevertheless, you
-+*** may want to report the problem to your system manager and/or to
-+*** bug-libtool@gnu.org
-+
-+EOF
-+ fi ;;
-+ esac
-+ fi
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ MAGIC_CMD="$ac_save_MAGIC_CMD"
-+ ;;
-+esac
-+fi
-+
-+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+if test -n "$MAGIC_CMD"; then
-+ echo "$ac_t""$MAGIC_CMD" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+ else
-+ MAGIC_CMD=:
-+ fi
-+fi
-+
-+ fi
-+ ;;
-+esac
-+
-+# 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-+echo "configure:2396: 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
-+ if test -n "$RANLIB"; then
-+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+ ac_dummy="$PATH"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+fi
-+fi
-+RANLIB="$ac_cv_prog_RANLIB"
-+if test -n "$RANLIB"; then
-+ echo "$ac_t""$RANLIB" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+
-+if test -z "$ac_cv_prog_RANLIB"; then
-+if test -n "$ac_tool_prefix"; then
-+ # 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:2428: 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
-+ if test -n "$RANLIB"; then
-+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+ ac_dummy="$PATH"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ ac_cv_prog_RANLIB="ranlib"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-+fi
-+fi
-+RANLIB="$ac_cv_prog_RANLIB"
-+if test -n "$RANLIB"; then
-+ echo "$ac_t""$RANLIB" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+else
-+ RANLIB=":"
-+fi
-+fi
-+
-+# 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-+echo "configure:2463: 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
-+ if test -n "$STRIP"; then
-+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+ ac_dummy="$PATH"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+fi
-+fi
-+STRIP="$ac_cv_prog_STRIP"
-+if test -n "$STRIP"; then
-+ echo "$ac_t""$STRIP" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+
-+if test -z "$ac_cv_prog_STRIP"; then
-+if test -n "$ac_tool_prefix"; then
-+ # 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:2495: 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
-+ if test -n "$STRIP"; then
-+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+ ac_dummy="$PATH"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ ac_cv_prog_STRIP="strip"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ test -z "$ac_cv_prog_STRIP" && ac_cv_prog_STRIP=":"
-+fi
-+fi
-+STRIP="$ac_cv_prog_STRIP"
-+if test -n "$STRIP"; then
-+ echo "$ac_t""$STRIP" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+else
-+ STRIP=":"
-+fi
-+fi
-+
-+
-+enable_dlopen=no
-+enable_win32_dll=no
-+
-+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
-+if test "${enable_libtool_lock+set}" = set; then
-+ enableval="$enable_libtool_lock"
-+ :
-+fi
-+
-+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-+
-+# Some flags need to be propagated to the compiler or linker for good
-+# libtool support.
-+case $host in
-+*-*-irix6*)
-+ # Find out which ABI we are using.
-+ echo '#line 2544 "configure"' > conftest.$ac_ext
-+ if { (eval echo configure:2545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ case `/usr/bin/file conftest.$ac_objext` in
-+ *32-bit*)
-+ LD="${LD-ld} -32"
-+ ;;
-+ *N32*)
-+ LD="${LD-ld} -n32"
-+ ;;
-+ *64-bit*)
-+ LD="${LD-ld} -64"
-+ ;;
-+ esac
-+ fi
-+ rm -rf conftest*
-+ ;;
-+
-+*-*-sco3.2v5*)
-+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-+ SAVE_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -belf"
-+ echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-+echo "configure:2566: checking whether the C compiler needs -belf" >&5
-+if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+
-+ ac_ext=c
-+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-+cross_compiling=$ac_cv_prog_cc_cross
-+
-+ cat > conftest.$ac_ext <<EOF
-+#line 2579 "configure"
-+#include "confdefs.h"
-+
-+int main() {
-+
-+; return 0; }
-+EOF
-+if { (eval echo configure:2586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ lt_cv_cc_needs_belf=yes
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ lt_cv_cc_needs_belf=no
-+fi
-+rm -f conftest*
-+ ac_ext=c
-+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-+cross_compiling=$ac_cv_prog_cc_cross
-+
-+fi
-+
-+echo "$ac_t""$lt_cv_cc_needs_belf" 1>&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"
-+ fi
-+ ;;
-+
-+
-+esac
-+
-+# Sed substitution that helps us do robust quoting. It backslashifies
-+# metacharacters that are still active within double-quoted strings.
-+Xsed='sed -e s/^X//'
-+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
-+
-+# Same as above, but do not quote variable references.
-+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
-+
-+# Sed substitution to delay expansion of an escaped shell variable in a
-+# double_quote_subst'ed string.
-+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-+
-+# Constants:
-+rm="rm -f"
-+
-+# Global variables:
-+default_ofile=libtool
-+can_build_shared=yes
-+
-+# All known linkers require a `.a' archive for static linking (except M$VC,
-+# which needs '.lib').
-+libext=a
-+ltmain="$ac_aux_dir/ltmain.sh"
-+ofile="$default_ofile"
-+with_gnu_ld="$lt_cv_prog_gnu_ld"
-+need_locks="$enable_libtool_lock"
-+
-+old_CC="$CC"
-+old_CFLAGS="$CFLAGS"
-+
-+# Set sane defaults for various variables
-+test -z "$AR" && AR=ar
-+test -z "$AR_FLAGS" && AR_FLAGS=cru
-+test -z "$AS" && AS=as
-+test -z "$CC" && CC=cc
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+test -z "$LD" && LD=ld
-+test -z "$LN_S" && LN_S="ln -s"
-+test -z "$MAGIC_CMD" && MAGIC_CMD=file
-+test -z "$NM" && NM=nm
-+test -z "$OBJDUMP" && OBJDUMP=objdump
-+test -z "$RANLIB" && RANLIB=:
-+test -z "$STRIP" && STRIP=:
-+test -z "$ac_objext" && ac_objext=o
-+
-+if test x"$host" != x"$build"; then
-+ ac_tool_prefix=${host_alias}-
-+else
-+ ac_tool_prefix=
-+fi
-+
-+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
-+case $host_os in
-+linux-gnu*) ;;
-+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
-+esac
-+
-+case $host_os in
-+aix3*)
-+ # AIX sometimes has problems with the GCC collect2 program. For some
-+ # reason, if we set the COLLECT_NAMES environment variable, the problems
-+ # vanish in a puff of smoke.
-+ if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+ fi
-+ ;;
-+esac
-+
-+# Determine commands to create old-style static archives.
-+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
-+old_postinstall_cmds='chmod 644 $oldlib'
-+old_postuninstall_cmds=
-+
-+if test -n "$RANLIB"; then
-+ case $host_os in
-+ openbsd*)
-+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ *)
-+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ esac
-+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-+fi
-+
-+# Allow CC to be a program name with arguments.
-+set dummy $CC
-+compiler="$2"
-+
-+echo $ac_n "checking for objdir""... $ac_c" 1>&6
-+echo "configure:2706: checking for objdir" >&5
-+rm -f .libs 2>/dev/null
-+mkdir .libs 2>/dev/null
-+if test -d .libs; then
-+ objdir=.libs
-+else
-+ # MS-DOS does not allow filenames that begin with a dot.
-+ objdir=_libs
-+fi
-+rmdir .libs 2>/dev/null
-+echo "$ac_t""$objdir" 1>&6
-+
-+
-+# Check whether --with-pic or --without-pic was given.
-+if test "${with_pic+set}" = set; then
-+ withval="$with_pic"
-+ pic_mode="$withval"
-+else
-+ pic_mode=default
-+fi
-+
-+test -z "$pic_mode" && pic_mode=default
-+
-+# We assume here that the value for lt_cv_prog_cc_pic will not be cached
-+# in isolation, and that seeing it set (from the cache) indicates that
-+# the associated values are set (in the cache) correctly too.
-+echo $ac_n "checking for $compiler option to produce PIC""... $ac_c" 1>&6
-+echo "configure:2733: checking for $compiler option to produce PIC" >&5
-+if eval "test \"`echo '$''{'lt_cv_prog_cc_pic'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ lt_cv_prog_cc_pic=
-+ lt_cv_prog_cc_shlib=
-+ lt_cv_prog_cc_wl=
-+ lt_cv_prog_cc_static=
-+ lt_cv_prog_cc_no_builtin=
-+ lt_cv_prog_cc_can_build_shared=$can_build_shared
-+
-+ if test "$GCC" = yes; then
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-static'
-+
-+ case $host_os in
-+ aix*)
-+ # Below there is a dirty hack to force normal static linking with -ldl
-+ # The problem is because libdl dynamically linked with both libc and
-+ # libC (AIX C++ library), which obviously doesn't included in libraries
-+ # list by gcc. This cause undefined symbols with -static flags.
-+ # This hack allows C programs to be linked with "-static -ldl", but
-+ # not sure about C++ programs.
-+ lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
-+ ;;
-+ amigaos*)
-+ # FIXME: we need at least 68020 code to build shared libraries, but
-+ # adding the `-m68020' flag to GCC prevents building anything better,
-+ # like `-m68040'.
-+ lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
-+ ;;
-+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-+ # PIC is the default for these OSes.
-+ ;;
-+ darwin* | rhapsody*)
-+ # PIC is the default on this platform
-+ # Common symbols not allowed in MH_DYLIB files
-+ lt_cv_prog_cc_pic='-fno-common'
-+ ;;
-+ cygwin* | mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_cv_prog_cc_pic='-DDLL_EXPORT'
-+ ;;
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ lt_cv_prog_cc_pic=-Kconform_pic
-+ fi
-+ ;;
-+ *)
-+ lt_cv_prog_cc_pic='-fPIC'
-+ ;;
-+ esac
-+ else
-+ # PORTME Check for PIC flags for the system compiler.
-+ case $host_os in
-+ aix3* | aix4* | aix5*)
-+ lt_cv_prog_cc_wl='-Wl,'
-+ # All AIX code is PIC.
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ lt_cv_prog_cc_static='-Bstatic'
-+ else
-+ lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
-+ fi
-+ ;;
-+
-+ hpux9* | hpux10* | hpux11*)
-+ # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
-+ lt_cv_prog_cc_pic='+Z'
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-non_shared'
-+ # PIC (with -KPIC) is the default.
-+ ;;
-+
-+ cygwin* | mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_cv_prog_cc_pic='-DDLL_EXPORT'
-+ ;;
-+
-+ newsos6)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ ;;
-+
-+ osf3* | osf4* | osf5*)
-+ # All OSF/1 code is PIC.
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-non_shared'
-+ ;;
-+
-+ sco3.2v5*)
-+ lt_cv_prog_cc_pic='-Kpic'
-+ lt_cv_prog_cc_static='-dn'
-+ lt_cv_prog_cc_shlib='-belf'
-+ ;;
-+
-+ solaris*)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Wl,'
-+ ;;
-+
-+ sunos4*)
-+ lt_cv_prog_cc_pic='-PIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Qoption ld '
-+ ;;
-+
-+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Wl,'
-+ ;;
-+
-+ uts4*)
-+ lt_cv_prog_cc_pic='-pic'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ lt_cv_prog_cc_pic='-Kconform_pic'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ fi
-+ ;;
-+
-+ *)
-+ lt_cv_prog_cc_can_build_shared=no
-+ ;;
-+ esac
-+ fi
-+
-+fi
-+
-+if test -z "$lt_cv_prog_cc_pic"; then
-+ echo "$ac_t""none" 1>&6
-+else
-+ echo "$ac_t""$lt_cv_prog_cc_pic" 1>&6
-+
-+ # Check to make sure the pic_flag actually works.
-+ echo $ac_n "checking if $compiler PIC flag $lt_cv_prog_cc_pic works""... $ac_c" 1>&6
-+echo "configure:2881: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
-+ if eval "test \"`echo '$''{'lt_cv_prog_cc_pic_works'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
-+ cat > conftest.$ac_ext <<EOF
-+#line 2888 "configure"
-+#include "confdefs.h"
-+
-+int main() {
-+
-+; return 0; }
-+EOF
-+if { (eval echo configure:2895: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ rm -rf conftest*
-+ case $host_os in
-+ hpux9* | hpux10* | hpux11*)
-+ # On HP-UX, both CC and GCC only warn that PIC is supported... then
-+ # they create non-PIC objects. So, if there were any warnings, we
-+ # assume that PIC is not supported.
-+ if test -s conftest.err; then
-+ lt_cv_prog_cc_pic_works=no
-+ else
-+ lt_cv_prog_cc_pic_works=yes
-+ fi
-+ ;;
-+ *)
-+ lt_cv_prog_cc_pic_works=yes
-+ ;;
-+ esac
-+
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ lt_cv_prog_cc_pic_works=no
-+
-+fi
-+rm -f conftest*
-+ CFLAGS="$save_CFLAGS"
-+
-+fi
-+
-+
-+ if test "X$lt_cv_prog_cc_pic_works" = Xno; then
-+ lt_cv_prog_cc_pic=
-+ lt_cv_prog_cc_can_build_shared=no
-+ else
-+ lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
-+ fi
-+
-+ echo "$ac_t""$lt_cv_prog_cc_pic_works" 1>&6
-+fi
-+
-+# Check for any special shared library compilation flags.
-+if test -n "$lt_cv_prog_cc_shlib"; then
-+ echo "configure: warning: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" 1>&2
-+ if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then :
-+ else
-+ echo "configure: warning: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" 1>&2
-+ lt_cv_prog_cc_can_build_shared=no
-+ fi
-+fi
-+
-+echo $ac_n "checking if $compiler static flag $lt_cv_prog_cc_static works""... $ac_c" 1>&6
-+echo "configure:2947: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
-+if eval "test \"`echo '$''{'lt_cv_prog_cc_static_works'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ lt_cv_prog_cc_static_works=no
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
-+ cat > conftest.$ac_ext <<EOF
-+#line 2955 "configure"
-+#include "confdefs.h"
-+
-+int main() {
-+
-+; return 0; }
-+EOF
-+if { (eval echo configure:2962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ lt_cv_prog_cc_static_works=yes
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+fi
-+rm -f conftest*
-+ LDFLAGS="$save_LDFLAGS"
-+
-+fi
-+
-+
-+# Belt *and* braces to stop my trousers falling down:
-+test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
-+echo "$ac_t""$lt_cv_prog_cc_static_works" 1>&6
-+
-+pic_flag="$lt_cv_prog_cc_pic"
-+special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
-+wl="$lt_cv_prog_cc_wl"
-+link_static_flag="$lt_cv_prog_cc_static"
-+no_builtin_flag="$lt_cv_prog_cc_no_builtin"
-+can_build_shared="$lt_cv_prog_cc_can_build_shared"
-+
-+
-+# Check to see if options -o and -c are simultaneously supported by compiler
-+echo $ac_n "checking if $compiler supports -c -o file.$ac_objext""... $ac_c" 1>&6
-+echo "configure:2989: checking if $compiler supports -c -o file.$ac_objext" >&5
-+if eval "test \"`echo '$''{'lt_cv_compiler_c_o'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+
-+$rm -r conftest 2>/dev/null
-+mkdir conftest
-+cd conftest
-+echo "int some_variable = 0;" > conftest.$ac_ext
-+mkdir out
-+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
-+# that will create temporary files in the current directory regardless of
-+# the output directory. Thus, making CWD read-only will cause this test
-+# to fail, enabling locking or at least warning the user not to do parallel
-+# builds.
-+chmod -w .
-+save_CFLAGS="$CFLAGS"
-+CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
-+compiler_c_o=no
-+if { (eval echo configure:3008: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s out/conftest.err; then
-+ lt_cv_compiler_c_o=no
-+ else
-+ lt_cv_compiler_c_o=yes
-+ fi
-+else
-+ # Append any errors to the config.log.
-+ cat out/conftest.err 1>&5
-+ lt_cv_compiler_c_o=no
-+fi
-+CFLAGS="$save_CFLAGS"
-+chmod u+w .
-+$rm conftest* out/*
-+rmdir out
-+cd ..
-+rmdir conftest
-+$rm -r conftest 2>/dev/null
-+
-+fi
-+
-+compiler_c_o=$lt_cv_compiler_c_o
-+echo "$ac_t""$compiler_c_o" 1>&6
-+
-+if test x"$compiler_c_o" = x"yes"; then
-+ # Check to see if we can write to a .lo
-+ echo $ac_n "checking if $compiler supports -c -o file.lo""... $ac_c" 1>&6
-+echo "configure:3037: checking if $compiler supports -c -o file.lo" >&5
-+ if eval "test \"`echo '$''{'lt_cv_compiler_o_lo'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+
-+ lt_cv_compiler_o_lo=no
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -c -o conftest.lo"
-+ save_objext="$ac_objext"
-+ ac_objext=lo
-+ cat > conftest.$ac_ext <<EOF
-+#line 3048 "configure"
-+#include "confdefs.h"
-+
-+int main() {
-+int some_variable = 0;
-+; return 0; }
-+EOF
-+if { (eval echo configure:3055: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ rm -rf conftest*
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s conftest.err; then
-+ lt_cv_compiler_o_lo=no
-+ else
-+ lt_cv_compiler_o_lo=yes
-+ fi
-+
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+fi
-+rm -f conftest*
-+ ac_objext="$save_objext"
-+ CFLAGS="$save_CFLAGS"
-+
-+fi
-+
-+ compiler_o_lo=$lt_cv_compiler_o_lo
-+ echo "$ac_t""$compiler_o_lo" 1>&6
-+else
-+ compiler_o_lo=no
-+fi
-+
-+# Check to see if we can do hard links to lock some files if needed
-+hard_links="nottested"
-+if test "$compiler_c_o" = no && test "$need_locks" != no; then
-+ # do not overwrite the value of need_locks provided by the user
-+ echo $ac_n "checking if we can lock with hard links""... $ac_c" 1>&6
-+echo "configure:3086: checking if we can lock with hard links" >&5
-+ hard_links=yes
-+ $rm conftest*
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ touch conftest.a
-+ ln conftest.a conftest.b 2>&5 || hard_links=no
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ echo "$ac_t""$hard_links" 1>&6
-+ if test "$hard_links" = no; then
-+ echo "configure: warning: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" 1>&2
-+ need_locks=warn
-+ fi
-+else
-+ need_locks=no
-+fi
-+
-+if test "$GCC" = yes; then
-+ # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
-+ echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions""... $ac_c" 1>&6
-+echo "configure:3105: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-+ echo "int some_variable = 0;" > conftest.$ac_ext
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
-+ compiler_rtti_exceptions=no
-+ cat > conftest.$ac_ext <<EOF
-+#line 3111 "configure"
-+#include "confdefs.h"
-+
-+int main() {
-+int some_variable = 0;
-+; return 0; }
-+EOF
-+if { (eval echo configure:3118: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ rm -rf conftest*
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s conftest.err; then
-+ compiler_rtti_exceptions=no
-+ else
-+ compiler_rtti_exceptions=yes
-+ fi
-+
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+fi
-+rm -f conftest*
-+ CFLAGS="$save_CFLAGS"
-+ echo "$ac_t""$compiler_rtti_exceptions" 1>&6
-+
-+ if test "$compiler_rtti_exceptions" = "yes"; then
-+ no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
-+ else
-+ no_builtin_flag=' -fno-builtin'
-+ fi
-+fi
-+
-+# See if the linker supports building shared libraries.
-+echo $ac_n "checking whether the linker ($LD) supports shared libraries""... $ac_c" 1>&6
-+echo "configure:3145: checking whether the linker ($LD) supports shared libraries" >&5
-+
-+allow_undefined_flag=
-+no_undefined_flag=
-+need_lib_prefix=unknown
-+need_version=unknown
-+# when you set need_version to no, make sure it does not cause -set_version
-+# flags to be left without arguments
-+archive_cmds=
-+archive_expsym_cmds=
-+old_archive_from_new_cmds=
-+old_archive_from_expsyms_cmds=
-+export_dynamic_flag_spec=
-+whole_archive_flag_spec=
-+thread_safe_flag_spec=
-+hardcode_into_libs=no
-+hardcode_libdir_flag_spec=
-+hardcode_libdir_separator=
-+hardcode_direct=no
-+hardcode_minus_L=no
-+hardcode_shlibpath_var=unsupported
-+runpath_var=
-+link_all_deplibs=unknown
-+always_export_symbols=no
-+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+# include_expsyms should be a list of space-separated symbols to be *always*
-+# included in the symbol list
-+include_expsyms=
-+# exclude_expsyms can be an egrep regular expression of symbols to exclude
-+# it will be wrapped by ` (' and `)$', so one must not match beginning or
-+# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-+# as well as any symbol that contains `d'.
-+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-+# platforms (ab)use it in PIC code, but their linkers get confused if
-+# the symbol is explicitly referenced. Since portable code cannot
-+# rely on this symbol name, it's probably fine to never include it in
-+# preloaded symbol tables.
-+extract_expsyms_cmds=
-+
-+case $host_os in
-+cygwin* | mingw* | pw32*)
-+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ if test "$GCC" != yes; then
-+ with_gnu_ld=no
-+ fi
-+ ;;
-+openbsd*)
-+ with_gnu_ld=no
-+ ;;
-+esac
-+
-+ld_shlibs=yes
-+if test "$with_gnu_ld" = yes; then
-+ # If archive_cmds runs LD, not CC, wlarc should be empty
-+ wlarc='${wl}'
-+
-+ # See if GNU ld supports shared libraries.
-+ case $host_os in
-+ aix3* | aix4* | aix5*)
-+ # On AIX, the GNU linker is very broken
-+ # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
-+ ld_shlibs=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-+*** to be unable to reliably create shared libraries on AIX.
-+*** Therefore, libtool is disabling shared libraries support. If you
-+*** really care for shared libraries, you may want to modify your PATH
-+*** so that a non-GNU linker is found, and then restart.
-+
-+EOF
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+
-+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-+ # that the semantics of dynamic libraries on AmigaOS, at least up
-+ # to version 4, is to share data among multiple programs linked
-+ # with the same dynamic library. Since this doesn't match the
-+ # behavior of shared libraries on other platforms, we can use
-+ # them.
-+ ld_shlibs=no
-+ ;;
-+
-+ beos*)
-+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ allow_undefined_flag=unsupported
-+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-+ # support --undefined. This deserves some investigation. FIXME
-+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+
-+ extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
-+ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
-+ test -f $output_objdir/impgen.exe || (cd $output_objdir && \
-+ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
-+ else $CC -o impgen impgen.c ; fi)~
-+ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
-+
-+ old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
-+
-+ # cygwin and mingw dlls have different entry points and sets of symbols
-+ # to exclude.
-+ # FIXME: what about values for MSVC?
-+ dll_entry=__cygwin_dll_entry@12
-+ dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
-+ case $host_os in
-+ mingw*)
-+ # mingw values
-+ dll_entry=_DllMainCRTStartup@12
-+ dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
-+ ;;
-+ esac
-+
-+ # mingw and cygwin differ, and it's simplest to just exclude the union
-+ # of the two symbol sets.
-+ dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
-+
-+ # recent cygwin and mingw systems supply a stub DllMain which the user
-+ # can override, but on older systems we have to supply one (in ltdll.c)
-+ if test "x$lt_cv_need_dllmain" = "xyes"; then
-+ ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
-+ ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
-+ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
-+ else
-+ ltdll_obj=
-+ ltdll_cmds=
-+ fi
-+
-+ # Extract the symbol export list from an `--export-all' def file,
-+ # then regenerate the def file from the symbol export list, so that
-+ # the compiled dll only exports the symbol export list.
-+ # Be careful not to strip the DATA tag left be newer dlltools.
-+ export_symbols_cmds="$ltdll_cmds"'
-+ $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
-+ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
-+
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is.
-+ # If DATA tags from a recent dlltool are present, honour them!
-+ archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname-def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname-def;
-+ _lt_hint=1;
-+ cat $export_symbols | while read symbol; do
-+ set dummy \$symbol;
-+ case \$# in
-+ 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
-+ 4) echo " \$2 \$3 \$4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;;
-+ *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;;
-+ esac;
-+ _lt_hint=`expr 1 + \$_lt_hint`;
-+ done;
-+ fi~
-+ '"$ltdll_cmds"'
-+ $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
-+ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
-+ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
-+ ;;
-+
-+ netbsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-+ wlarc=
-+ else
-+ archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ fi
-+ ;;
-+
-+ solaris* | sysv5*)
-+ if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
-+ ld_shlibs=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-+*** create shared libraries on Solaris systems. Therefore, libtool
-+*** is disabling shared libraries support. We urge you to upgrade GNU
-+*** binutils to release 2.9.1 or newer. Another option is to modify
-+*** your PATH or compiler configuration so that the native linker is
-+*** used, and then restart.
-+
-+EOF
-+ elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ sunos4*)
-+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ wlarc=
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ *)
-+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+ esac
-+
-+ if test "$ld_shlibs" = yes; then
-+ runpath_var=LD_RUN_PATH
-+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
-+ export_dynamic_flag_spec='${wl}--export-dynamic'
-+ case $host_os in
-+ cygwin* | mingw* | pw32*)
-+ # dlltool doesn't understand --whole-archive et. al.
-+ whole_archive_flag_spec=
-+ ;;
-+ *)
-+ # ancient GNU ld didn't support --whole-archive et. al.
-+ if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
-+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ else
-+ whole_archive_flag_spec=
-+ fi
-+ ;;
-+ esac
-+ fi
-+else
-+ # PORTME fill in a description of your system's linker (not GNU ld)
-+ case $host_os in
-+ aix3*)
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-+ # Note: this linker hardcodes the directories in LIBPATH if there
-+ # are no directories specified by -L.
-+ hardcode_minus_L=yes
-+ if test "$GCC" = yes && test -z "$link_static_flag"; then
-+ # Neither direct hardcoding nor static linking is supported with a
-+ # broken collect2.
-+ hardcode_direct=unsupported
-+ fi
-+ ;;
-+
-+ aix4* | aix5*)
-+ if test "$host_cpu" = ia64; then
-+ # On IA64, the linker does run time linking by default, so we don't
-+ # have to do anything special.
-+ aix_use_runtimelinking=no
-+ exp_sym_flag='-Bexport'
-+ no_entry_flag=""
-+ else
-+ aix_use_runtimelinking=no
-+
-+ # Test if we are trying to use run time linking or normal
-+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-+ # need to do runtime linking.
-+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-+ for ld_flag in $LDFLAGS; do
-+ case $ld_flag in
-+ *-brtl*)
-+ aix_use_runtimelinking=yes
-+ break
-+ ;;
-+ esac
-+ done
-+ esac
-+
-+ exp_sym_flag='-bexport'
-+ no_entry_flag='-bnoentry'
-+ fi
-+
-+ # When large executables or shared objects are built, AIX ld can
-+ # have problems creating the table of contents. If linking a library
-+ # or program results in "error TOC overflow" add -mminimal-toc to
-+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-+
-+ hardcode_direct=yes
-+ archive_cmds=''
-+ hardcode_libdir_separator=':'
-+ if test "$GCC" = yes; then
-+ case $host_os in aix4.[012]|aix4.[012].*)
-+ collect2name=`${CC} -print-prog-name=collect2`
-+ if test -f "$collect2name" && \
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ then
-+ # We have reworked collect2
-+ hardcode_direct=yes
-+ else
-+ # We have old collect2
-+ hardcode_direct=unsupported
-+ # It fails to find uninstalled libraries when the uninstalled
-+ # path is not listed in the libpath. Setting hardcode_minus_L
-+ # to unsupported forces relinking
-+ hardcode_minus_L=yes
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_libdir_separator=
-+ fi
-+ esac
-+
-+ shared_flag='-shared'
-+ else
-+ # not using gcc
-+ if test "$host_cpu" = ia64; then
-+ shared_flag='${wl}-G'
-+ else
-+ if test "$aix_use_runtimelinking" = yes; then
-+ shared_flag='${wl}-G'
-+ else
-+ shared_flag='${wl}-bM:SRE'
-+ fi
-+ fi
-+ fi
-+
-+ # It seems that -bexpall can do strange things, so it is better to
-+ # generate a list of symbols to export.
-+ always_export_symbols=yes
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # Warning - without using the other runtime loading flags (-brtl),
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='-berok'
-+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
-+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+ else
-+ if test "$host_cpu" = ia64; then
-+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-+ allow_undefined_flag="-z nodefs"
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ else
-+ hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
-+ # Warning - without using the other run time loading flags,
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='${wl}-berok'
-+ # This is a bit strange, but is similar to how AIX traditionally builds
-+ # it's shared libraries.
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $output_objdir/$libname$release.a $output_objdir/$soname'
-+ fi
-+ fi
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ # see comment about different semantics on the GNU ld section
-+ ld_shlibs=no
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_from_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
-+ fix_srcfile_path='`cygpath -w "$srcfile"`'
-+ ;;
-+
-+ darwin* | rhapsody*)
-+ case "$host_os" in
-+ rhapsody* | darwin1.[012])
-+ allow_undefined_flag='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ allow_undefined_flag='-flat_namespace -undefined suppress'
-+ ;;
-+ esac
-+ # FIXME: Relying on posixy $() will cause problems for
-+ # cross-compilation, but unfortunately the echo tests do not
-+ # yet detect zsh echo's removal of \ escapes. Also zsh mangles
-+ # `"' quotes if we put them in here... so don't!
-+ archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)'
-+ # We need to add '_' to the symbols in $export_symbols first
-+ #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ whole_archive_flag_spec='-all_load $convenience'
-+ ;;
-+
-+ freebsd1*)
-+ ld_shlibs=no
-+ ;;
-+
-+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-+ # support. Future versions do this automatically, but an explicit c++rt0.o
-+ # does not break anything, and helps significantly (at the cost of a little
-+ # extra space).
-+ freebsd2.2*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-+ freebsd2*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-+ freebsd*)
-+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ hpux9* | hpux10* | hpux11*)
-+ case $host_os in
-+ hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
-+ *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
-+ esac
-+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes # Not in the search PATH, but as the default
-+ # location of the library.
-+ export_dynamic_flag_spec='${wl}-E'
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ else
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator=:
-+ link_all_deplibs=yes
-+ ;;
-+
-+ netbsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-+ else
-+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-+ fi
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ newsos6)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ openbsd*)
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ export_dynamic_flag_spec='${wl}-E'
-+ else
-+ case "$host_os" in
-+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ ;;
-+ *)
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+
-+ os2*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ allow_undefined_flag=unsupported
-+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-+ ;;
-+
-+ osf3*)
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ allow_undefined_flag=' -expect_unresolved \*'
-+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ fi
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ ;;
-+
-+ osf4* | osf5*) # as osf3* with the addition of -msym flag
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ else
-+ allow_undefined_flag=' -expect_unresolved \*'
-+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
-+
-+ #Both c and cxx compiler support -rpath directly
-+ hardcode_libdir_flag_spec='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator=:
-+ ;;
-+
-+ sco3.2v5*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ export_dynamic_flag_spec='${wl}-Bexport'
-+ ;;
-+
-+ solaris*)
-+ # gcc --version < 3.0 without binutils cannot create self contained
-+ # shared libraries reliably, requiring libgcc.a to resolve some of
-+ # the object symbols generated in some cases. Libraries that use
-+ # assert need libgcc.a to resolve __eprintf, for example. Linking
-+ # a copy of libgcc.a into every shared library to guarantee resolving
-+ # such symbols causes other problems: According to Tim Van Holder
-+ # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
-+ # (to the application) exception stack for one thing.
-+ no_undefined_flag=' -z defs'
-+ if test "$GCC" = yes; then
-+ case `$CC --version 2>/dev/null` in
-+ [12].*)
-+ cat <<EOF 1>&2
-+
-+*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
-+*** create self contained shared libraries on Solaris systems, without
-+*** introducing a dependency on libgcc.a. Therefore, libtool is disabling
-+*** -no-undefined support, which will at least allow you to build shared
-+*** libraries. However, you may find that when you link such libraries
-+*** into an application without using GCC, you have to manually add
-+*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to
-+*** upgrade to a newer version of GCC. Another option is to rebuild your
-+*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
-+
-+EOF
-+ no_undefined_flag=
-+ ;;
-+ esac
-+ fi
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_shlibpath_var=no
-+ case $host_os in
-+ solaris2.[0-5] | solaris2.[0-5].*) ;;
-+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
-+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
-+ esac
-+ link_all_deplibs=yes
-+ ;;
-+
-+ sunos4*)
-+ if test "x$host_vendor" = xsequent; then
-+ # Use $CC to link under sequent, because it throws in some extra .o
-+ # files that make .init and .fini sections work.
-+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-+ fi
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv4)
-+ case $host_vendor in
-+ sni)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes # is this really true???
-+ ;;
-+ siemens)
-+ ## LD is ld it makes a PLAMLIB
-+ ## CC just makes a GrossModule.
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ reload_cmds='$CC -r -o $output$reload_objs'
-+ hardcode_direct=no
-+ ;;
-+ motorola)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-+ ;;
-+ esac
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv4.3*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ export_dynamic_flag_spec='-Bexport'
-+ ;;
-+
-+ sysv5*)
-+ no_undefined_flag=' -z text'
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec=
-+ hardcode_shlibpath_var=no
-+ runpath_var='LD_RUN_PATH'
-+ ;;
-+
-+ uts4*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ dgux*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ ld_shlibs=yes
-+ fi
-+ ;;
-+
-+ sysv4.2uw2*)
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_minus_L=no
-+ hardcode_shlibpath_var=no
-+ hardcode_runpath_var=yes
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+
-+ sysv5uw7* | unixware7*)
-+ no_undefined_flag='${wl}-z ${wl}text'
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ fi
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ *)
-+ ld_shlibs=no
-+ ;;
-+ esac
-+fi
-+echo "$ac_t""$ld_shlibs" 1>&6
-+test "$ld_shlibs" = no && can_build_shared=no
-+
-+# Check hardcoding attributes.
-+echo $ac_n "checking how to hardcode library paths into programs""... $ac_c" 1>&6
-+echo "configure:3844: checking how to hardcode library paths into programs" >&5
-+hardcode_action=
-+if test -n "$hardcode_libdir_flag_spec" || \
-+ test -n "$runpath_var"; then
-+
-+ # We can hardcode non-existant directories.
-+ if test "$hardcode_direct" != no &&
-+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
-+ # have to relink, otherwise we might link with an installed library
-+ # when we should be linking with a yet-to-be-installed one
-+ ## test "$hardcode_shlibpath_var" != no &&
-+ test "$hardcode_minus_L" != no; then
-+ # Linking always hardcodes the temporary library directory.
-+ hardcode_action=relink
-+ else
-+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
-+ hardcode_action=immediate
-+ fi
-+else
-+ # We cannot hardcode anything, or else we can only hardcode existing
-+ # directories.
-+ hardcode_action=unsupported
-+fi
-+echo "$ac_t""$hardcode_action" 1>&6
-+
-+striplib=
-+old_striplib=
-+echo $ac_n "checking whether stripping libraries is possible""... $ac_c" 1>&6
-+echo "configure:3872: checking whether stripping libraries is possible" >&5
-+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-+ echo "$ac_t""yes" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+reload_cmds='$LD$reload_flag -o $output$reload_objs'
-+test -z "$deplibs_check_method" && deplibs_check_method=unknown
-+
-+# PORTME Fill in your ld.so characteristics
-+echo $ac_n "checking dynamic linker characteristics""... $ac_c" 1>&6
-+echo "configure:3886: checking dynamic linker characteristics" >&5
-+library_names_spec=
-+libname_spec='lib$name'
-+soname_spec=
-+postinstall_cmds=
-+postuninstall_cmds=
-+finish_cmds=
-+finish_eval=
-+shlibpath_var=
-+shlibpath_overrides_runpath=unknown
-+version_type=none
-+dynamic_linker="$host_os ld.so"
-+sys_lib_dlsearch_path_spec="/lib /usr/lib"
-+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+
-+case $host_os in
-+aix3*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix $libname.a'
-+ shlibpath_var=LIBPATH
-+
-+ # AIX has no versioning support, so we append a major version to the name.
-+ soname_spec='${libname}${release}.so$major'
-+ ;;
-+
-+aix4* | aix5*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ hardcode_into_libs=yes
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 supports IA64
-+ library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ else
-+ # With GCC up to 2.95.x, collect2 would create an import file
-+ # for dependence libraries. The import file would start with
-+ # the line `#! .'. This would cause the generated library to
-+ # depend on `.', always an invalid library. This was fixed in
-+ # development snapshots of GCC prior to 3.0.
-+ case $host_os in
-+ aix4 | aix4.[01] | aix4.[01].*)
-+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-+ echo ' yes '
-+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-+ :
-+ else
-+ can_build_shared=no
-+ fi
-+ ;;
-+ esac
-+ # AIX (on Power*) has no versioning support, so currently we can
-+ # not hardcode correct soname into executable. Probably we can
-+ # add versioning support to collect2, so additional links can
-+ # be useful in future.
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-+ # instead of lib<name>.a to let people know that these are not
-+ # typical AIX shared libraries.
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ else
-+ # We preserve .a as extension for shared libraries through AIX4.2
-+ # and later when we are not doing run time linking.
-+ library_names_spec='${libname}${release}.a $libname.a'
-+ soname_spec='${libname}${release}.so$major'
-+ fi
-+ shlibpath_var=LIBPATH
-+ fi
-+ hardcode_into_libs=yes
-+ ;;
-+
-+amigaos*)
-+ library_names_spec='$libname.ixlibrary $libname.a'
-+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
-+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
-+ ;;
-+
-+beos*)
-+ library_names_spec='${libname}.so'
-+ dynamic_linker="$host_os ld.so"
-+ shlibpath_var=LIBRARY_PATH
-+ ;;
-+
-+bsdi4*)
-+ version_type=linux
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-+ export_dynamic_flag_spec=-rdynamic
-+ # the default ld.so.conf also contains /usr/contrib/lib and
-+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-+ # libtool to hard-code these into programs
-+ ;;
-+
-+cygwin* | mingw* | pw32*)
-+ version_type=windows
-+ need_version=no
-+ need_lib_prefix=no
-+ case $GCC,$host_os in
-+ yes,cygwin*)
-+ library_names_spec='$libname.dll.a'
-+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
-+ postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog .libs/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $rm \$dlpath'
-+ ;;
-+ yes,mingw*)
-+ library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"`
-+ ;;
-+ yes,pw32*)
-+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll'
-+ ;;
-+ *)
-+ library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
-+ ;;
-+ esac
-+ dynamic_linker='Win32 ld.exe'
-+ # FIXME: first we should search . and the directory the executable is in
-+ shlibpath_var=PATH
-+ ;;
-+
-+darwin* | rhapsody*)
-+ dynamic_linker="$host_os dyld"
-+ version_type=darwin
-+ need_lib_prefix=no
-+ need_version=no
-+ # FIXME: Relying on posixy $() will cause problems for
-+ # cross-compilation, but unfortunately the echo tests do not
-+ # yet detect zsh echo's removal of \ escapes.
-+ library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
-+ soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
-+ shlibpath_overrides_runpath=yes
-+ shlibpath_var=DYLD_LIBRARY_PATH
-+ ;;
-+
-+freebsd1*)
-+ dynamic_linker=no
-+ ;;
-+
-+freebsd*-gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU/FreeBSD ld.so'
-+ ;;
-+
-+freebsd*)
-+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
-+ version_type=freebsd-$objformat
-+ case $version_type in
-+ freebsd-elf*)
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
-+ need_version=no
-+ need_lib_prefix=no
-+ ;;
-+ freebsd-*)
-+ library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
-+ need_version=yes
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_os in
-+ freebsd2*)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ ;;
-+ esac
-+ ;;
-+
-+gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ hardcode_into_libs=yes
-+ ;;
-+
-+hpux9* | hpux10* | hpux11*)
-+ # Give a soname corresponding to the major version so that dld.sl refuses to
-+ # link against other versions.
-+ dynamic_linker="$host_os dld.sl"
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_var=SHLIB_PATH
-+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-+ library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
-+ soname_spec='${libname}${release}.sl$major'
-+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
-+ postinstall_cmds='chmod 555 $lib'
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ nonstopux*) version_type=nonstopux ;;
-+ *) version_type=irix ;;
-+ esac
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
-+ case $host_os in
-+ irix5* | nonstopux*)
-+ libsuff= shlibsuff=
-+ ;;
-+ *)
-+ case $LD in # libtool.m4 will add one of these switches to LD
-+ *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
-+ *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
-+ *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
-+ *) libsuff= shlibsuff= libmagic=never-match;;
-+ esac
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-+ ;;
-+
-+# No shared lib support for Linux oldld, aout, or coff.
-+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
-+ dynamic_linker=no
-+ ;;
-+
-+# This must be Linux ELF.
-+linux-gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ # This implies no fast_install, which is unacceptable.
-+ # Some rework will be needed to allow for fast_install
-+ # before this can be enabled.
-+ hardcode_into_libs=yes
-+
-+ # We used to test for /lib/ld.so.1 and disable shared libraries on
-+ # powerpc, because MkLinux only supported shared libraries with the
-+ # GNU dynamic linker. Since this was broken with cross compilers,
-+ # most powerpc-linux boxes support dynamic linking these days and
-+ # people can always --disable-shared, the test was removed, and we
-+ # assume the GNU/Linux dynamic linker is in use.
-+ dynamic_linker='GNU/Linux ld.so'
-+ ;;
-+
-+netbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ dynamic_linker='NetBSD (a.out) ld.so'
-+ else
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
-+ soname_spec='${libname}${release}.so$major'
-+ dynamic_linker='NetBSD ld.elf_so'
-+ fi
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-+
-+newsos6)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+openbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ case "$host_os" in
-+ openbsd2.[89] | openbsd2.[89].*)
-+ shlibpath_overrides_runpath=no
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ esac
-+ else
-+ shlibpath_overrides_runpath=yes
-+ fi
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+os2*)
-+ libname_spec='$name'
-+ need_lib_prefix=no
-+ library_names_spec='$libname.dll $libname.a'
-+ dynamic_linker='OS/2 ld.exe'
-+ shlibpath_var=LIBPATH
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ version_type=osf
-+ need_version=no
-+ need_lib_prefix=no
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-+ hardcode_into_libs=yes
-+ ;;
-+
-+sco3.2v5*)
-+ version_type=osf
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+solaris*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ # ldd complains unless libraries are executable
-+ postinstall_cmds='chmod +x $lib'
-+ ;;
-+
-+sunos4*)
-+ version_type=sunos
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ if test "$with_gnu_ld" = yes; then
-+ need_lib_prefix=no
-+ fi
-+ need_version=yes
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_vendor in
-+ sni)
-+ shlibpath_overrides_runpath=no
-+ need_lib_prefix=no
-+ export_dynamic_flag_spec='${wl}-Blargedynsym'
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+ siemens)
-+ need_lib_prefix=no
-+ ;;
-+ motorola)
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-+ ;;
-+ esac
-+ ;;
-+
-+uts4*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+dgux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ version_type=linux
-+ library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
-+ soname_spec='$libname.so.$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ fi
-+ ;;
-+
-+*)
-+ dynamic_linker=no
-+ ;;
-+esac
-+echo "$ac_t""$dynamic_linker" 1>&6
-+test "$dynamic_linker" = no && can_build_shared=no
-+
-+# Report the final consequences.
-+echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6
-+echo "configure:4310: checking if libtool supports shared libraries" >&5
-+echo "$ac_t""$can_build_shared" 1>&6
-+
-+echo $ac_n "checking whether to build shared libraries""... $ac_c" 1>&6
-+echo "configure:4314: checking whether to build shared libraries" >&5
-+test "$can_build_shared" = "no" && enable_shared=no
-+
-+# On AIX, shared libraries and static libraries use the same namespace, and
-+# are all built from PIC.
-+case "$host_os" in
-+aix3*)
-+ test "$enable_shared" = yes && enable_static=no
-+ if test -n "$RANLIB"; then
-+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
-+ postinstall_cmds='$RANLIB $lib'
-+ fi
-+ ;;
-+
-+aix4*)
-+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-+ test "$enable_shared" = yes && enable_static=no
-+ fi
-+ ;;
-+esac
-+echo "$ac_t""$enable_shared" 1>&6
-+
-+echo $ac_n "checking whether to build static libraries""... $ac_c" 1>&6
-+echo "configure:4337: checking whether to build static libraries" >&5
-+# Make sure either enable_shared or enable_static is yes.
-+test "$enable_shared" = yes || enable_static=yes
-+echo "$ac_t""$enable_static" 1>&6
-+
-+if test "$hardcode_action" = relink; then
-+ # Fast installation is not supported
-+ enable_fast_install=no
-+elif test "$shlibpath_overrides_runpath" = yes ||
-+ test "$enable_shared" = no; then
-+ # Fast installation is not necessary
-+ enable_fast_install=needless
-+fi
-+
-+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-+if test "$GCC" = yes; then
-+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-+fi
-+
-+if test "x$enable_dlopen" != xyes; then
-+ enable_dlopen=unknown
-+ enable_dlopen_self=unknown
-+ enable_dlopen_self_static=unknown
-+else
-+ lt_cv_dlopen=no
-+ lt_cv_dlopen_libs=
-+
-+ case $host_os in
-+ beos*)
-+ lt_cv_dlopen="load_add_on"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ lt_cv_dlopen="LoadLibrary"
-+ lt_cv_dlopen_libs=
-+ ;;
-+
-+ *)
-+ echo $ac_n "checking for shl_load""... $ac_c" 1>&6
-+echo "configure:4378: checking for shl_load" >&5
-+if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 4383 "configure"
-+#include "confdefs.h"
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char shl_load(); below. */
-+#include <assert.h>
-+/* Override any gcc2 internal prototype to avoid an error. */
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char shl_load();
-+
-+int main() {
-+
-+/* 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_shl_load) || defined (__stub___shl_load)
-+choke me
-+#else
-+shl_load();
-+#endif
-+
-+; return 0; }
-+EOF
-+if { (eval echo configure:4406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ eval "ac_cv_func_shl_load=yes"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ eval "ac_cv_func_shl_load=no"
-+fi
-+rm -f conftest*
-+fi
-+
-+if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ lt_cv_dlopen="shl_load"
-+else
-+ echo "$ac_t""no" 1>&6
-+echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-+echo "configure:4424: checking for shl_load in -ldld" >&5
-+ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
-+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ ac_save_LIBS="$LIBS"
-+LIBS="-ldld $LIBS"
-+cat > conftest.$ac_ext <<EOF
-+#line 4432 "configure"
-+#include "confdefs.h"
-+/* Override any gcc2 internal prototype to avoid an error. */
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char shl_load();
-+
-+int main() {
-+shl_load()
-+; return 0; }
-+EOF
-+if { (eval echo configure:4443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=yes"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=no"
-+fi
-+rm -f conftest*
-+LIBS="$ac_save_LIBS"
-+
-+fi
-+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
-+else
-+ echo "$ac_t""no" 1>&6
-+echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-+echo "configure:4462: checking for dlopen" >&5
-+if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 4467 "configure"
-+#include "confdefs.h"
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char dlopen(); below. */
-+#include <assert.h>
-+/* Override any gcc2 internal prototype to avoid an error. */
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char dlopen();
-+
-+int main() {
-+
-+/* 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_dlopen) || defined (__stub___dlopen)
-+choke me
-+#else
-+dlopen();
-+#endif
-+
-+; return 0; }
-+EOF
-+if { (eval echo configure:4490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ eval "ac_cv_func_dlopen=yes"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ eval "ac_cv_func_dlopen=no"
-+fi
-+rm -f conftest*
-+fi
-+
-+if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ lt_cv_dlopen="dlopen"
-+else
-+ echo "$ac_t""no" 1>&6
-+echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-+echo "configure:4508: checking for dlopen in -ldl" >&5
-+ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
-+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ ac_save_LIBS="$LIBS"
-+LIBS="-ldl $LIBS"
-+cat > conftest.$ac_ext <<EOF
-+#line 4516 "configure"
-+#include "confdefs.h"
-+/* Override any gcc2 internal prototype to avoid an error. */
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char dlopen();
-+
-+int main() {
-+dlopen()
-+; return 0; }
-+EOF
-+if { (eval echo configure:4527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=yes"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=no"
-+fi
-+rm -f conftest*
-+LIBS="$ac_save_LIBS"
-+
-+fi
-+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-+else
-+ echo "$ac_t""no" 1>&6
-+echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6
-+echo "configure:4546: checking for dlopen in -lsvld" >&5
-+ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'`
-+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ ac_save_LIBS="$LIBS"
-+LIBS="-lsvld $LIBS"
-+cat > conftest.$ac_ext <<EOF
-+#line 4554 "configure"
-+#include "confdefs.h"
-+/* Override any gcc2 internal prototype to avoid an error. */
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char dlopen();
-+
-+int main() {
-+dlopen()
-+; return 0; }
-+EOF
-+if { (eval echo configure:4565: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=yes"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=no"
-+fi
-+rm -f conftest*
-+LIBS="$ac_save_LIBS"
-+
-+fi
-+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-+else
-+ echo "$ac_t""no" 1>&6
-+echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
-+echo "configure:4584: checking for dld_link in -ldld" >&5
-+ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
-+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ ac_save_LIBS="$LIBS"
-+LIBS="-ldld $LIBS"
-+cat > conftest.$ac_ext <<EOF
-+#line 4592 "configure"
-+#include "confdefs.h"
-+/* Override any gcc2 internal prototype to avoid an error. */
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char dld_link();
-+
-+int main() {
-+dld_link()
-+; return 0; }
-+EOF
-+if { (eval echo configure:4603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=yes"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=no"
-+fi
-+rm -f conftest*
-+LIBS="$ac_save_LIBS"
-+
-+fi
-+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+ ;;
-+ esac
-+
-+ if test "x$lt_cv_dlopen" != xno; then
-+ enable_dlopen=yes
-+ else
-+ enable_dlopen=no
-+ fi
-+
-+ case $lt_cv_dlopen in
-+ dlopen)
-+ save_CPPFLAGS="$CPPFLAGS"
-+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-+
-+ save_LDFLAGS="$LDFLAGS"
-+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-+
-+ save_LIBS="$LIBS"
-+ LIBS="$lt_cv_dlopen_libs $LIBS"
-+
-+ echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
-+echo "configure:4659: checking whether a program can dlopen itself" >&5
-+if eval "test \"`echo '$''{'lt_cv_dlopen_self'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ lt_cv_dlopen_self=cross
-+else
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+#line 4669 "configure"
-+#include "confdefs.h"
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-+
-+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-+ find out it does not work in some platform. */
-+#ifndef LT_DLLAZY_OR_NOW
-+# ifdef RTLD_LAZY
-+# define LT_DLLAZY_OR_NOW RTLD_LAZY
-+# else
-+# ifdef DL_LAZY
-+# define LT_DLLAZY_OR_NOW DL_LAZY
-+# else
-+# ifdef RTLD_NOW
-+# define LT_DLLAZY_OR_NOW RTLD_NOW
-+# else
-+# ifdef DL_NOW
-+# define LT_DLLAZY_OR_NOW DL_NOW
-+# else
-+# define LT_DLLAZY_OR_NOW 0
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" void exit (int);
-+#endif
-+
-+void fnord() { int i=42;}
-+int main ()
-+{
-+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-+ int status = $lt_dlunknown;
-+
-+ if (self)
-+ {
-+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+ /* dlclose (self); */
-+ }
-+
-+ exit (status);
-+}
-+EOF
-+ if { (eval echo configure:4730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ (./conftest; exit; ) 2>/dev/null
-+ lt_status=$?
-+ case x$lt_status in
-+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
-+ esac
-+ else :
-+ # compilation failed
-+ lt_cv_dlopen_self=no
-+ fi
-+fi
-+rm -fr conftest*
-+
-+
-+fi
-+
-+echo "$ac_t""$lt_cv_dlopen_self" 1>&6
-+
-+ if test "x$lt_cv_dlopen_self" = xyes; then
-+ LDFLAGS="$LDFLAGS $link_static_flag"
-+ echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
-+echo "configure:4753: checking whether a statically linked program can dlopen itself" >&5
-+if eval "test \"`echo '$''{'lt_cv_dlopen_self_static'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ lt_cv_dlopen_self_static=cross
-+else
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+#line 4763 "configure"
-+#include "confdefs.h"
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-+
-+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-+ find out it does not work in some platform. */
-+#ifndef LT_DLLAZY_OR_NOW
-+# ifdef RTLD_LAZY
-+# define LT_DLLAZY_OR_NOW RTLD_LAZY
-+# else
-+# ifdef DL_LAZY
-+# define LT_DLLAZY_OR_NOW DL_LAZY
-+# else
-+# ifdef RTLD_NOW
-+# define LT_DLLAZY_OR_NOW RTLD_NOW
-+# else
-+# ifdef DL_NOW
-+# define LT_DLLAZY_OR_NOW DL_NOW
-+# else
-+# define LT_DLLAZY_OR_NOW 0
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" void exit (int);
-+#endif
-+
-+void fnord() { int i=42;}
-+int main ()
-+{
-+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-+ int status = $lt_dlunknown;
-+
-+ if (self)
-+ {
-+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+ /* dlclose (self); */
-+ }
-+
-+ exit (status);
-+}
-+EOF
-+ if { (eval echo configure:4824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ (./conftest; exit; ) 2>/dev/null
-+ lt_status=$?
-+ case x$lt_status in
-+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
-+ esac
-+ else :
-+ # compilation failed
-+ lt_cv_dlopen_self_static=no
-+ fi
-+fi
-+rm -fr conftest*
-+
-+
-+fi
-+
-+echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6
-+ fi
-+
-+ CPPFLAGS="$save_CPPFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+ LIBS="$save_LIBS"
-+ ;;
-+ esac
-+
-+ case $lt_cv_dlopen_self in
-+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-+ *) enable_dlopen_self=unknown ;;
-+ esac
-+
-+ case $lt_cv_dlopen_self_static in
-+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-+ *) enable_dlopen_self_static=unknown ;;
-+ esac
-+fi
-+
-+
-+if test "$enable_shared" = yes && test "$GCC" = yes; then
-+ case $archive_cmds in
-+ *'~'*)
-+ # FIXME: we may have to deal with multi-command sequences.
-+ ;;
-+ '$CC '*)
-+ # Test whether the compiler implicitly links with -lc since on some
-+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
-+ # to ld, don't add -lc before -lgcc.
-+ echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6
-+echo "configure:4873: checking whether -lc should be explicitly linked in" >&5
-+ if eval "test \"`echo '$''{'lt_cv_archive_cmds_need_lc'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ $rm conftest*
-+ echo 'static int dummy;' > conftest.$ac_ext
-+
-+ if { (eval echo configure:4880: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ soname=conftest
-+ lib=conftest
-+ libobjs=conftest.$ac_objext
-+ deplibs=
-+ wl=$lt_cv_prog_cc_wl
-+ compiler_flags=-v
-+ linker_flags=-v
-+ verstring=
-+ output_objdir=.
-+ libname=conftest
-+ save_allow_undefined_flag=$allow_undefined_flag
-+ allow_undefined_flag=
-+ if { (eval echo configure:4893: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
-+ then
-+ lt_cv_archive_cmds_need_lc=no
-+ else
-+ lt_cv_archive_cmds_need_lc=yes
-+ fi
-+ allow_undefined_flag=$save_allow_undefined_flag
-+ else
-+ cat conftest.err 1>&5
-+ fi
-+fi
-+
-+ echo "$ac_t""$lt_cv_archive_cmds_need_lc" 1>&6
-+ ;;
-+ esac
-+fi
-+need_lc=${lt_cv_archive_cmds_need_lc-yes}
-+
-+# The second clause should only fire when bootstrapping the
-+# libtool distribution, otherwise you forgot to ship ltmain.sh
-+# with your package, and you will get complaints that there are
-+# no rules to generate ltmain.sh.
-+if test -f "$ltmain"; then
-+ :
-+else
-+ # If there is no Makefile yet, we rely on a make rule to execute
-+ # `config.status --recheck' to rerun these tests and create the
-+ # libtool script then.
-+ test -f Makefile && make "$ltmain"
-+fi
-+
-+if test -f "$ltmain"; then
-+ trap "$rm \"${ofile}T\"; exit 1" 1 2 15
-+ $rm -f "${ofile}T"
-+
-+ echo creating $ofile
-+
-+ # Now quote all the things that may contain metacharacters while being
-+ # careful not to overquote the AC_SUBSTed values. We take copies of the
-+ # variables and quote the copies for generation of the libtool script.
-+ for var in echo old_CC old_CFLAGS SED \
-+ AR AR_FLAGS CC LD LN_S NM SHELL \
-+ reload_flag reload_cmds wl \
-+ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
-+ thread_safe_flag_spec whole_archive_flag_spec libname_spec \
-+ library_names_spec soname_spec \
-+ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
-+ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
-+ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
-+ old_striplib striplib file_magic_cmd export_symbols_cmds \
-+ deplibs_check_method allow_undefined_flag no_undefined_flag \
-+ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
-+ global_symbol_to_c_name_address \
-+ hardcode_libdir_flag_spec hardcode_libdir_separator \
-+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-+ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
-+
-+ case $var in
-+ reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
-+ old_postinstall_cmds | old_postuninstall_cmds | \
-+ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
-+ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
-+ postinstall_cmds | postuninstall_cmds | \
-+ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-+ # Double-quote double-evaled strings.
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-+ ;;
-+ *)
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-+ ;;
-+ esac
-+ done
-+
-+ cat <<__EOF__ > "${ofile}T"
-+#! $SHELL
-+
-+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-+#
-+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
-+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-+#
-+# 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.
-+#
-+# As a special exception to the GNU General Public License, if you
-+# distribute this file as part of a program that contains a
-+# configuration script generated by Autoconf, you may include it under
-+# the same distribution terms that you use for the rest of that program.
-+
-+# A sed that does not truncate output.
-+SED=$lt_SED
-+
-+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-+Xsed="${SED} -e s/^X//"
-+
-+# The HP-UX ksh and POSIX shell print the target directory to stdout
-+# if CDPATH is set.
-+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-+
-+# ### BEGIN LIBTOOL CONFIG
-+
-+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-+
-+# Shell to use when invoking shell scripts.
-+SHELL=$lt_SHELL
-+
-+# Whether or not to build shared libraries.
-+build_libtool_libs=$enable_shared
-+
-+# Whether or not to build static libraries.
-+build_old_libs=$enable_static
-+
-+# Whether or not to add -lc for building shared libraries.
-+build_libtool_need_lc=$need_lc
-+
-+# Whether or not to optimize for fast installation.
-+fast_install=$enable_fast_install
-+
-+# The host system.
-+host_alias=$host_alias
-+host=$host
-+
-+# An echo program that does not interpret backslashes.
-+echo=$lt_echo
-+
-+# The archiver.
-+AR=$lt_AR
-+AR_FLAGS=$lt_AR_FLAGS
-+
-+# The default C compiler.
-+CC=$lt_CC
-+
-+# Is the compiler the GNU C compiler?
-+with_gcc=$GCC
-+
-+# The linker used to build libraries.
-+LD=$lt_LD
-+
-+# Whether we need hard or soft links.
-+LN_S=$lt_LN_S
-+
-+# A BSD-compatible nm program.
-+NM=$lt_NM
-+
-+# A symbol stripping program
-+STRIP=$STRIP
-+
-+# Used to examine libraries when file_magic_cmd begins "file"
-+MAGIC_CMD=$MAGIC_CMD
-+
-+# Used on cygwin: DLL creation program.
-+DLLTOOL="$DLLTOOL"
-+
-+# Used on cygwin: object dumper.
-+OBJDUMP="$OBJDUMP"
-+
-+# Used on cygwin: assembler.
-+AS="$AS"
-+
-+# The name of the directory that contains temporary libtool files.
-+objdir=$objdir
-+
-+# How to create reloadable object files.
-+reload_flag=$lt_reload_flag
-+reload_cmds=$lt_reload_cmds
-+
-+# How to pass a linker flag through the compiler.
-+wl=$lt_wl
-+
-+# Object file suffix (normally "o").
-+objext="$ac_objext"
-+
-+# Old archive suffix (normally "a").
-+libext="$libext"
-+
-+# Executable file suffix (normally "").
-+exeext="$exeext"
-+
-+# Additional compiler flags for building library objects.
-+pic_flag=$lt_pic_flag
-+pic_mode=$pic_mode
-+
-+# Does compiler simultaneously support -c and -o options?
-+compiler_c_o=$lt_compiler_c_o
-+
-+# Can we write directly to a .lo ?
-+compiler_o_lo=$lt_compiler_o_lo
-+
-+# Must we lock files when doing compilation ?
-+need_locks=$lt_need_locks
-+
-+# Do we need the lib prefix for modules?
-+need_lib_prefix=$need_lib_prefix
-+
-+# Do we need a version for libraries?
-+need_version=$need_version
-+
-+# Whether dlopen is supported.
-+dlopen_support=$enable_dlopen
-+
-+# Whether dlopen of programs is supported.
-+dlopen_self=$enable_dlopen_self
-+
-+# Whether dlopen of statically linked programs is supported.
-+dlopen_self_static=$enable_dlopen_self_static
-+
-+# Compiler flag to prevent dynamic linking.
-+link_static_flag=$lt_link_static_flag
-+
-+# Compiler flag to turn off builtin functions.
-+no_builtin_flag=$lt_no_builtin_flag
-+
-+# Compiler flag to allow reflexive dlopens.
-+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-+
-+# Compiler flag to generate shared objects directly from archives.
-+whole_archive_flag_spec=$lt_whole_archive_flag_spec
-+
-+# Compiler flag to generate thread-safe objects.
-+thread_safe_flag_spec=$lt_thread_safe_flag_spec
-+
-+# Library versioning type.
-+version_type=$version_type
-+
-+# Format of library name prefix.
-+libname_spec=$lt_libname_spec
-+
-+# List of archive names. First name is the real one, the rest are links.
-+# The last name is the one that the linker finds with -lNAME.
-+library_names_spec=$lt_library_names_spec
-+
-+# The coded name of the library, if different from the real name.
-+soname_spec=$lt_soname_spec
-+
-+# Commands used to build and install an old-style archive.
-+RANLIB=$lt_RANLIB
-+old_archive_cmds=$lt_old_archive_cmds
-+old_postinstall_cmds=$lt_old_postinstall_cmds
-+old_postuninstall_cmds=$lt_old_postuninstall_cmds
-+
-+# Create an old-style archive from a shared archive.
-+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
--NM="$ac_cv_path_NM"
--echo "$ac_t""$NM" 1>&6
-+# Create a temporary old-style archive to link instead of a shared archive.
-+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
--echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
--echo "configure:1367: checking whether ln -s works" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- rm -f conftestdata
--if ln -s X conftestdata 2>/dev/null
--then
-- rm -f conftestdata
-- ac_cv_prog_LN_S="ln -s"
--else
-- ac_cv_prog_LN_S=ln
--fi
--fi
--LN_S="$ac_cv_prog_LN_S"
--if test "$ac_cv_prog_LN_S" = "ln -s"; then
-- echo "$ac_t""yes" 1>&6
--else
-- echo "$ac_t""no" 1>&6
--fi
-+# Commands used to build and install a shared archive.
-+archive_cmds=$lt_archive_cmds
-+archive_expsym_cmds=$lt_archive_expsym_cmds
-+postinstall_cmds=$lt_postinstall_cmds
-+postuninstall_cmds=$lt_postuninstall_cmds
-
-+# Commands to strip libraries.
-+old_striplib=$lt_old_striplib
-+striplib=$lt_striplib
-
--case "$target" in
--NONE) lt_target="$host" ;;
--*) lt_target="$target" ;;
--esac
-+# Method to check whether dependent libraries are shared objects.
-+deplibs_check_method=$lt_deplibs_check_method
-
--# Check for any special flags to pass to ltconfig.
--libtool_flags="--cache-file=$cache_file"
--test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
--test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
--test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
--test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
--test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
-+# Command to use when deplibs_check_method == file_magic.
-+file_magic_cmd=$lt_file_magic_cmd
-
-+# Flag that allows shared libraries with undefined symbols to be built.
-+allow_undefined_flag=$lt_allow_undefined_flag
-
--# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
--if test "${enable_libtool_lock+set}" = set; then
-- enableval="$enable_libtool_lock"
-- :
--fi
-+# Flag that forces no undefined symbols.
-+no_undefined_flag=$lt_no_undefined_flag
-
--test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
--test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
-+# Commands used to finish a libtool library installation in a directory.
-+finish_cmds=$lt_finish_cmds
-
--# Some flags need to be propagated to the compiler or linker for good
--# libtool support.
--case "$lt_target" in
--*-*-irix6*)
-- # Find out which ABI we are using.
-- echo '#line 1416 "configure"' > conftest.$ac_ext
-- if { (eval echo configure:1417: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-- case "`/usr/bin/file conftest.o`" in
-- *32-bit*)
-- LD="${LD-ld} -32"
-- ;;
-- *N32*)
-- LD="${LD-ld} -n32"
-- ;;
-- *64-bit*)
-- LD="${LD-ld} -64"
-- ;;
-- esac
-- fi
-- rm -rf conftest*
-- ;;
-+# Same as above, but a single script fragment to be evaled but not shown.
-+finish_eval=$lt_finish_eval
-
--*-*-sco3.2v5*)
-- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-- SAVE_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS -belf"
-- echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
--echo "configure:1438: checking whether the C compiler needs -belf" >&5
--if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 1443 "configure"
--#include "confdefs.h"
-+# Take the output of nm and produce a listing of raw symbols and C names.
-+global_symbol_pipe=$lt_global_symbol_pipe
-
--int main() {
-+# Transform the output of nm in a proper C declaration
-+global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
-
--; return 0; }
--EOF
--if { (eval echo configure:1450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- lt_cv_cc_needs_belf=yes
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- lt_cv_cc_needs_belf=no
--fi
--rm -f conftest*
--fi
-+# Transform the output of nm in a C name address pair
-+global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
-
--echo "$ac_t""$lt_cv_cc_needs_belf" 1>&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"
-- fi
-- ;;
-+# This is the shared library runtime path variable.
-+runpath_var=$runpath_var
-
-+# This is the shared library path variable.
-+shlibpath_var=$shlibpath_var
-
--esac
-+# Is shlibpath searched before the hard-coded library search path?
-+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-+# How to hardcode a shared library path into an executable.
-+hardcode_action=$hardcode_action
-
--# Save cache, so that ltconfig can load it
--cat > confcache <<\EOF
--# This file is a shell script that caches the results of configure
--# tests run on this system so they can be shared between configure
--# scripts and configure runs. It is not useful on other systems.
--# If it contains results you don't want to keep, you may remove or edit it.
-+# Whether we should hardcode library paths into libraries.
-+hardcode_into_libs=$hardcode_into_libs
-+
-+# Flag to hardcode \$libdir into a binary during linking.
-+# This must work even if \$libdir does not exist.
-+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-+
-+# Whether we need a single -rpath flag with a separated argument.
-+hardcode_libdir_separator=$lt_hardcode_libdir_separator
-+
-+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_direct=$hardcode_direct
-+
-+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_minus_L=$hardcode_minus_L
-+
-+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-+# the resulting binary.
-+hardcode_shlibpath_var=$hardcode_shlibpath_var
-+
-+# Variables whose values should be saved in libtool wrapper scripts and
-+# restored at relink time.
-+variables_saved_for_relink="$variables_saved_for_relink"
-+
-+# Whether libtool must link a program against all its dependency libraries.
-+link_all_deplibs=$link_all_deplibs
-+
-+# Compile-time system search path for libraries
-+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-+
-+# Run-time system search path for libraries
-+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-+
-+# Fix the shell variable \$srcfile for the compiler.
-+fix_srcfile_path="$fix_srcfile_path"
-+
-+# Set to yes if exported symbols are required.
-+always_export_symbols=$always_export_symbols
-+
-+# The commands to list exported symbols.
-+export_symbols_cmds=$lt_export_symbols_cmds
-+
-+# The commands to extract the exported symbol list from a shared archive.
-+extract_expsyms_cmds=$lt_extract_expsyms_cmds
-+
-+# Symbols that should not be listed in the preloaded symbols.
-+exclude_expsyms=$lt_exclude_expsyms
-+
-+# Symbols that must always be exported.
-+include_expsyms=$lt_include_expsyms
-+
-+# ### END LIBTOOL CONFIG
-+
-+__EOF__
-+
-+ case $host_os in
-+ aix3*)
-+ cat <<\EOF >> "${ofile}T"
-+
-+# AIX sometimes has problems with the GCC collect2 program. For some
-+# reason, if we set the COLLECT_NAMES environment variable, the problems
-+# vanish in a puff of smoke.
-+if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+fi
-+EOF
-+ ;;
-+ esac
-+
-+ case $host_os in
-+ cygwin* | mingw* | pw32* | os2*)
-+ cat <<'EOF' >> "${ofile}T"
-+ # This is a source program that is used to create dlls on Windows
-+ # Don't remove nor modify the starting and closing comments
-+# /* ltdll.c starts here */
-+# #define WIN32_LEAN_AND_MEAN
-+# #include <windows.h>
-+# #undef WIN32_LEAN_AND_MEAN
-+# #include <stdio.h>
- #
--# By default, configure uses ./config.cache as the cache file,
--# creating it if it does not exist already. You can give configure
--# the --cache-file=FILE option to use a different cache file; that is
--# what configure does when it calls configure scripts in
--# subdirectories, so they share the cache.
--# Giving --cache-file=/dev/null disables caching, for debugging configure.
--# config.status only pays attention to the cache file if you give it the
--# --recheck option to rerun configure.
-+# #ifndef __CYGWIN__
-+# # ifdef __CYGWIN32__
-+# # define __CYGWIN__ __CYGWIN32__
-+# # endif
-+# #endif
-+#
-+# #ifdef __cplusplus
-+# extern "C" {
-+# #endif
-+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-+# #ifdef __cplusplus
-+# }
-+# #endif
-+#
-+# #ifdef __CYGWIN__
-+# #include <cygwin/cygwin_dll.h>
-+# DECLARE_CYGWIN_DLL( DllMain );
-+# #endif
-+# HINSTANCE __hDllInstance_base;
-+#
-+# BOOL APIENTRY
-+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-+# {
-+# __hDllInstance_base = hInst;
-+# return TRUE;
-+# }
-+# /* ltdll.c ends here */
-+ # This is a source program that is used to create import libraries
-+ # on Windows for dlls which lack them. Don't remove nor modify the
-+ # starting and closing comments
-+# /* impgen.c starts here */
-+# /* Copyright (C) 1999-2000 Free Software Foundation, Inc.
-+#
-+# This file is part of GNU libtool.
-+#
-+# 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 <stdio.h> /* for printf() */
-+# #include <unistd.h> /* for open(), lseek(), read() */
-+# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
-+# #include <string.h> /* for strdup() */
-+#
-+# /* O_BINARY isn't required (or even defined sometimes) under Unix */
-+# #ifndef O_BINARY
-+# #define O_BINARY 0
-+# #endif
-+#
-+# static unsigned int
-+# pe_get16 (fd, offset)
-+# int fd;
-+# int offset;
-+# {
-+# unsigned char b[2];
-+# lseek (fd, offset, SEEK_SET);
-+# read (fd, b, 2);
-+# return b[0] + (b[1]<<8);
-+# }
-+#
-+# static unsigned int
-+# pe_get32 (fd, offset)
-+# int fd;
-+# int offset;
-+# {
-+# unsigned char b[4];
-+# lseek (fd, offset, SEEK_SET);
-+# read (fd, b, 4);
-+# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-+# }
-+#
-+# static unsigned int
-+# pe_as32 (ptr)
-+# void *ptr;
-+# {
-+# unsigned char *b = ptr;
-+# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-+# }
-+#
-+# int
-+# main (argc, argv)
-+# int argc;
-+# char *argv[];
-+# {
-+# int dll;
-+# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
-+# unsigned long export_rva, export_size, nsections, secptr, expptr;
-+# unsigned long name_rvas, nexp;
-+# unsigned char *expdata, *erva;
-+# char *filename, *dll_name;
-+#
-+# filename = argv[1];
-+#
-+# dll = open(filename, O_RDONLY|O_BINARY);
-+# if (dll < 1)
-+# return 1;
-+#
-+# dll_name = filename;
-+#
-+# for (i=0; filename[i]; i++)
-+# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
-+# dll_name = filename + i +1;
-+#
-+# pe_header_offset = pe_get32 (dll, 0x3c);
-+# opthdr_ofs = pe_header_offset + 4 + 20;
-+# num_entries = pe_get32 (dll, opthdr_ofs + 92);
- #
-+# if (num_entries < 1) /* no exports */
-+# return 1;
-+#
-+# export_rva = pe_get32 (dll, opthdr_ofs + 96);
-+# export_size = pe_get32 (dll, opthdr_ofs + 100);
-+# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
-+# secptr = (pe_header_offset + 4 + 20 +
-+# pe_get16 (dll, pe_header_offset + 4 + 16));
-+#
-+# expptr = 0;
-+# for (i = 0; i < nsections; i++)
-+# {
-+# char sname[8];
-+# unsigned long secptr1 = secptr + 40 * i;
-+# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-+# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
-+# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
-+# lseek(dll, secptr1, SEEK_SET);
-+# read(dll, sname, 8);
-+# if (vaddr <= export_rva && vaddr+vsize > export_rva)
-+# {
-+# expptr = fptr + (export_rva - vaddr);
-+# if (export_rva + export_size > vaddr + vsize)
-+# export_size = vsize - (export_rva - vaddr);
-+# break;
-+# }
-+# }
-+#
-+# expdata = (unsigned char*)malloc(export_size);
-+# lseek (dll, expptr, SEEK_SET);
-+# read (dll, expdata, export_size);
-+# erva = expdata - export_rva;
-+#
-+# nexp = pe_as32 (expdata+24);
-+# name_rvas = pe_as32 (expdata+32);
-+#
-+# printf ("EXPORTS\n");
-+# for (i = 0; i<nexp; i++)
-+# {
-+# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
-+# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
-+# }
-+#
-+# return 0;
-+# }
-+# /* impgen.c ends here */
-+
- EOF
--# 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.
--# 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.
--(set) 2>&1 |
-- case `(ac_space=' '; set | grep ac_space) 2>&1` in
-- *ac_space=\ *)
-- # `set' does not quote correctly, so add quotes (double-quote substitution
-- # turns \\\\ into \\, and sed turns \\ into \).
-- sed -n \
-- -e "s/'/'\\\\''/g" \
-- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
-- ;;
-- *)
-- # `set' quotes correctly as required by POSIX, so do not add quotes.
-- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
- ;;
-- esac >> confcache
--if cmp -s $cache_file confcache; then
-- :
--else
-- if test -w $cache_file; then
-- echo "updating cache $cache_file"
-- cat confcache > $cache_file
-- else
-- echo "not updating unwritable cache $cache_file"
-- fi
-+ esac
-+
-+ # We use sed instead of cat because bash on DJGPP gets confused if
-+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
-+ # text mode, it properly converts lines to CR/LF. This bash problem
-+ # is reportedly fixed, but why not run on old versions too?
-+ sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
-+
-+ mv -f "${ofile}T" "$ofile" || \
-+ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
-+ chmod +x "$ofile"
- fi
--rm -f confcache
-
-
--# Actually configure libtool. ac_aux_dir is where install-sh is found.
--CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
--LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
--LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
--DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
--${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
--$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
--|| { echo "configure: error: libtool configure failed" 1>&2; exit 1; }
-
--# Reload cache, that may have been modified by ltconfig
--if test -r "$cache_file"; then
-- echo "loading cache $cache_file"
-- . $cache_file
--else
-- echo "creating cache $cache_file"
-- > $cache_file
--fi
-
-
- # This can be used to rebuild libtool when needed
--LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
-+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
-
- # Always use our own libtool.
- LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
--# Redirect the config.log output again, so that the ltconfig log is not
--# clobbered by the next message.
--exec 5>>./config.log
-+# Prevent multiple expansion
-+
-
-
- echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
--echo "configure:1553: checking whether to enable maintainer-specific portions of Makefiles" >&5
-+echo "configure:5479: 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"
-@@ -1579,7 +5505,7 @@
- fi
-
- echo $ac_n "checking host system type""... $ac_c" 1>&6
--echo "configure:1583: checking host system type" >&5
-+echo "configure:5509: checking host system type" >&5
-
- host_alias=$host
- case "$host_alias" in
-@@ -1649,7 +5575,7 @@
- mem_warn=false
-
- echo $ac_n "checking whether to enable memory checking""... $ac_c" 1>&6
--echo "configure:1653: checking whether to enable memory checking" >&5
-+echo "configure:5579: checking whether to enable memory checking" >&5
- if test "x$enable_mem_check" = "xyes"; then
- cat >> confdefs.h <<\EOF
- #define ENABLE_MEM_CHECK 1
-@@ -1663,7 +5589,7 @@
- fi
-
- echo $ac_n "checking whether to enable memory profiling""... $ac_c" 1>&6
--echo "configure:1667: checking whether to enable memory profiling" >&5
-+echo "configure:5593: checking whether to enable memory profiling" >&5
- if test "x$enable_mem_profile" = "xyes"; then
- cat >> confdefs.h <<\EOF
- #define ENABLE_MEM_PROFILE 1
-@@ -1711,7 +5637,7 @@
- # 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:1715: checking for $ac_word" >&5
-+echo "configure:5641: 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
-@@ -1741,7 +5667,7 @@
- # 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:1745: checking for $ac_word" >&5
-+echo "configure:5671: 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
-@@ -1792,7 +5718,7 @@
- # 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:1796: checking for $ac_word" >&5
-+echo "configure:5722: 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
-@@ -1824,7 +5750,7 @@
- fi
-
- echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
--echo "configure:1828: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-+echo "configure:5754: 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.
-@@ -1835,12 +5761,12 @@
-
- cat > conftest.$ac_ext << EOF
-
--#line 1839 "configure"
-+#line 5765 "configure"
- #include "confdefs.h"
-
- main(){return(0);}
- EOF
--if { (eval echo configure:1844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:5770: \"$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
-@@ -1866,12 +5792,12 @@
- { 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:1870: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-+echo "configure:5796: 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:1875: checking whether we are using GNU C" >&5
-+echo "configure:5801: 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
-@@ -1880,7 +5806,7 @@
- yes;
- #endif
- EOF
--if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1884: \"$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:5810: \"$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
-@@ -1899,7 +5825,7 @@
- ac_save_CFLAGS="$CFLAGS"
- CFLAGS=
- echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
--echo "configure:1903: checking whether ${CC-cc} accepts -g" >&5
-+echo "configure:5829: 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
-@@ -1934,7 +5860,7 @@
-
-
- echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
--echo "configure:1938: checking for ${CC-cc} option to accept ANSI C" >&5
-+echo "configure:5864: checking for ${CC-cc} option to accept ANSI C" >&5
- if eval "test \"`echo '$''{'am_cv_prog_cc_stdc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -1950,7 +5876,7 @@
- do
- CC="$ac_save_CC $ac_arg"
- cat > conftest.$ac_ext <<EOF
--#line 1954 "configure"
-+#line 5880 "configure"
- #include "confdefs.h"
- #include <stdarg.h>
- #include <stdio.h>
-@@ -1987,7 +5913,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:1991: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:5917: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- am_cv_prog_cc_stdc="$ac_arg"; break
- else
-@@ -2022,7 +5948,7 @@
- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
- # ./install, which can be erroneously created by make from ./install.sh.
- echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
--echo "configure:2026: checking for a BSD compatible install" >&5
-+echo "configure:5952: checking for a BSD compatible install" >&5
- if test -z "$INSTALL"; then
- if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -2095,19 +6021,19 @@
- fi
-
- echo $ac_n "checking for extra flags to get ANSI library prototypes""... $ac_c" 1>&6
--echo "configure:2099: checking for extra flags to get ANSI library prototypes" >&5
-+echo "configure:6025: checking for extra flags to get ANSI library prototypes" >&5
- glib_save_LIBS=$LIBS
- LIBS="$LIBS -lm"
- if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 2106 "configure"
-+#line 6032 "configure"
- #include "confdefs.h"
- #include <math.h>
- int main (void) { return (log(1) != log(1.)); }
- EOF
--if { (eval echo configure:2111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- echo "$ac_t""none needed" 1>&6
- else
-@@ -2120,12 +6046,12 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 2124 "configure"
-+#line 6050 "configure"
- #include "confdefs.h"
- #include <math.h>
- int main (void) { return (log(1) != log(1.)); }
- EOF
--if { (eval echo configure:2129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- echo "$ac_t""-std1" 1>&6
- else
-@@ -2148,16 +6074,16 @@
- LIBS=$glib_save_LIBS
-
- echo $ac_n "checking for extra flags for POSIX compliance""... $ac_c" 1>&6
--echo "configure:2152: checking for extra flags for POSIX compliance" >&5
-+echo "configure:6078: checking for extra flags for POSIX compliance" >&5
- cat > conftest.$ac_ext <<EOF
--#line 2154 "configure"
-+#line 6080 "configure"
- #include "confdefs.h"
- #include <dirent.h>
- int main() {
- DIR *dir;
- ; return 0; }
- EOF
--if { (eval echo configure:2161: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:6087: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- echo "$ac_t""none needed" 1>&6
- else
-@@ -2167,14 +6093,14 @@
- glib_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS -posix"
- cat > conftest.$ac_ext <<EOF
--#line 2171 "configure"
-+#line 6097 "configure"
- #include "confdefs.h"
- #include <dirent.h>
- int main() {
- DIR *dir;
- ; return 0; }
- EOF
--if { (eval echo configure:2178: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:6104: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- echo "$ac_t""-posix" 1>&6
- else
-@@ -2190,93 +6116,13 @@
- rm -f conftest*
-
- # Checks for header files.
--echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
--echo "configure:2195: checking how to run the C preprocessor" >&5
--# On Suns, sometimes $CPP names a directory.
--if test -n "$CPP" && test -d "$CPP"; then
-- CPP=
--fi
--if test -z "$CPP"; then
--if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- # This must be in double quotes, not single quotes, because CPP may get
-- # substituted into the Makefile and "${CC-cc}" will confuse make.
-- CPP="${CC-cc} -E"
-- # On the NeXT, cc -E runs the code through the compiler's parser,
-- # not just through cpp.
-- cat > conftest.$ac_ext <<EOF
--#line 2210 "configure"
--#include "confdefs.h"
--#include <assert.h>
--Syntax Error
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:2216: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-- :
--else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- CPP="${CC-cc} -E -traditional-cpp"
-- cat > conftest.$ac_ext <<EOF
--#line 2227 "configure"
--#include "confdefs.h"
--#include <assert.h>
--Syntax Error
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:2233: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-- :
--else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- CPP="${CC-cc} -nologo -E"
-- cat > conftest.$ac_ext <<EOF
--#line 2244 "configure"
--#include "confdefs.h"
--#include <assert.h>
--Syntax Error
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:2250: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-- :
--else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- CPP=/lib/cpp
--fi
--rm -f conftest*
--fi
--rm -f conftest*
--fi
--rm -f conftest*
-- ac_cv_prog_CPP="$CPP"
--fi
-- CPP="$ac_cv_prog_CPP"
--else
-- ac_cv_prog_CPP="$CPP"
--fi
--echo "$ac_t""$CPP" 1>&6
--
- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
--echo "configure:2275: checking for ANSI C header files" >&5
-+echo "configure:6121: checking for ANSI C header files" >&5
- if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 2280 "configure"
-+#line 6126 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #include <stdarg.h>
-@@ -2284,7 +6130,7 @@
- #include <float.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:2288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:6134: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -2301,7 +6147,7 @@
- if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat > conftest.$ac_ext <<EOF
--#line 2305 "configure"
-+#line 6151 "configure"
- #include "confdefs.h"
- #include <string.h>
- EOF
-@@ -2319,7 +6165,7 @@
- if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat > conftest.$ac_ext <<EOF
--#line 2323 "configure"
-+#line 6169 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- EOF
-@@ -2340,7 +6186,7 @@
- :
- else
- cat > conftest.$ac_ext <<EOF
--#line 2344 "configure"
-+#line 6190 "configure"
- #include "confdefs.h"
- #include <ctype.h>
- #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-@@ -2351,7 +6197,7 @@
- exit (0); }
-
- EOF
--if { (eval echo configure:2355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- :
- else
-@@ -2377,12 +6223,12 @@
-
- # Checks for library functions.
- echo $ac_n "checking for vprintf""... $ac_c" 1>&6
--echo "configure:2381: checking for vprintf" >&5
-+echo "configure:6227: checking for vprintf" >&5
- if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 2386 "configure"
-+#line 6232 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char vprintf(); below. */
-@@ -2405,7 +6251,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:2409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_vprintf=yes"
- else
-@@ -2429,12 +6275,12 @@
-
- if test "$ac_cv_func_vprintf" != yes; then
- echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
--echo "configure:2433: checking for _doprnt" >&5
-+echo "configure:6279: checking for _doprnt" >&5
- if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 2438 "configure"
-+#line 6284 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char _doprnt(); below. */
-@@ -2457,7 +6303,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:2461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func__doprnt=yes"
- else
-@@ -2485,12 +6331,12 @@
- for ac_func in atexit on_exit
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:2489: checking for $ac_func" >&5
-+echo "configure:6335: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 2494 "configure"
-+#line 6340 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -2513,7 +6359,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:2517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:6363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -2539,7 +6385,7 @@
-
-
- echo $ac_n "checking size of char""... $ac_c" 1>&6
--echo "configure:2543: checking size of char" >&5
-+echo "configure:6389: checking size of char" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_char'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2547,9 +6393,10 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 2551 "configure"
-+#line 6397 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -2558,7 +6405,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:2562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_char=`cat conftestval`
- else
-@@ -2578,7 +6425,7 @@
-
-
- echo $ac_n "checking size of short""... $ac_c" 1>&6
--echo "configure:2582: checking size of short" >&5
-+echo "configure:6429: checking size of short" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2586,9 +6433,10 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 2590 "configure"
-+#line 6437 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -2597,7 +6445,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:2601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_short=`cat conftestval`
- else
-@@ -2617,7 +6465,7 @@
-
-
- echo $ac_n "checking size of long""... $ac_c" 1>&6
--echo "configure:2621: checking size of long" >&5
-+echo "configure:6469: checking size of long" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2625,9 +6473,10 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 2629 "configure"
-+#line 6477 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -2636,7 +6485,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:2640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_long=`cat conftestval`
- else
-@@ -2656,7 +6505,7 @@
-
-
- echo $ac_n "checking size of int""... $ac_c" 1>&6
--echo "configure:2660: checking size of int" >&5
-+echo "configure:6509: checking size of int" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2664,9 +6513,10 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 2668 "configure"
-+#line 6517 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -2675,7 +6525,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:2679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_int=`cat conftestval`
- else
-@@ -2695,7 +6545,7 @@
-
-
- echo $ac_n "checking size of void *""... $ac_c" 1>&6
--echo "configure:2699: checking size of void *" >&5
-+echo "configure:6549: checking size of void *" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_void_p'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2703,9 +6553,10 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 2707 "configure"
-+#line 6557 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -2714,7 +6565,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:2718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_void_p=`cat conftestval`
- else
-@@ -2734,7 +6585,7 @@
-
-
- echo $ac_n "checking size of long long""... $ac_c" 1>&6
--echo "configure:2738: checking size of long long" >&5
-+echo "configure:6589: checking size of long long" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2742,9 +6593,10 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 2746 "configure"
-+#line 6597 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -2753,7 +6605,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:2757: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6609: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_long_long=`cat conftestval`
- else
-@@ -2774,12 +6626,12 @@
-
-
- echo $ac_n "checking for working const""... $ac_c" 1>&6
--echo "configure:2778: checking for working const" >&5
-+echo "configure:6630: checking for working const" >&5
- if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 2783 "configure"
-+#line 6635 "configure"
- #include "confdefs.h"
-
- int main() {
-@@ -2828,7 +6680,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:2832: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:6684: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_c_const=yes
- else
-@@ -2850,7 +6702,7 @@
-
-
- echo $ac_n "checking for __inline""... $ac_c" 1>&6
--echo "configure:2854: checking for __inline" >&5
-+echo "configure:6706: checking for __inline" >&5
- if eval "test \"`echo '$''{'glib_cv_has__inline'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2859,14 +6711,14 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 2863 "configure"
-+#line 6715 "configure"
- #include "confdefs.h"
-
- __inline int foo () { return 0; }
- int main () { return foo (); }
-
- EOF
--if { (eval echo configure:2870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- glib_cv_has__inline=yes
-
-@@ -2891,7 +6743,7 @@
-
- esac
- echo $ac_n "checking for __inline__""... $ac_c" 1>&6
--echo "configure:2895: checking for __inline__" >&5
-+echo "configure:6747: checking for __inline__" >&5
- if eval "test \"`echo '$''{'glib_cv_has__inline__'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2900,14 +6752,14 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 2904 "configure"
-+#line 6756 "configure"
- #include "confdefs.h"
-
- __inline__ int foo () { return 0; }
- int main () { return foo (); }
-
- EOF
--if { (eval echo configure:2911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- glib_cv_has__inline__=yes
-
-@@ -2932,7 +6784,7 @@
-
- esac
- echo $ac_n "checking for inline""... $ac_c" 1>&6
--echo "configure:2936: checking for inline" >&5
-+echo "configure:6788: checking for inline" >&5
- if eval "test \"`echo '$''{'glib_cv_hasinline'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2941,14 +6793,14 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 2945 "configure"
-+#line 6797 "configure"
- #include "confdefs.h"
-
- inline int foo () { return 0; }
- int main () { return foo (); }
-
- EOF
--if { (eval echo configure:2952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- glib_cv_hasinline=yes
-
-@@ -2974,14 +6826,14 @@
- esac
-
- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
--echo "configure:2978: checking whether byte ordering is bigendian" >&5
-+echo "configure:6830: checking whether byte ordering is bigendian" >&5
- if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- ac_cv_c_bigendian=unknown
- # See if sys/param.h defines the BYTE_ORDER macro.
- cat > conftest.$ac_ext <<EOF
--#line 2985 "configure"
-+#line 6837 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/param.h>
-@@ -2992,11 +6844,11 @@
- #endif
- ; return 0; }
- EOF
--if { (eval echo configure:2996: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:6848: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- # It does; now see whether it defined to BIG_ENDIAN or not.
- cat > conftest.$ac_ext <<EOF
--#line 3000 "configure"
-+#line 6852 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/param.h>
-@@ -3007,7 +6859,7 @@
- #endif
- ; return 0; }
- EOF
--if { (eval echo configure:3011: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:6863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_c_bigendian=yes
- else
-@@ -3027,7 +6879,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 3031 "configure"
-+#line 6883 "configure"
- #include "confdefs.h"
- main () {
- /* Are we little or big endian? From Harbison&Steele. */
-@@ -3040,7 +6892,7 @@
- exit (u.c[sizeof (long) - 1] == 1);
- }
- EOF
--if { (eval echo configure:3044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:6896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_c_bigendian=no
- else
-@@ -3068,17 +6920,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:3072: checking for $ac_hdr" >&5
-+echo "configure:6924: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3077 "configure"
-+#line 6929 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:3082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:6934: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -3111,17 +6963,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:3115: checking for $ac_hdr" >&5
-+echo "configure:6967: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3120 "configure"
-+#line 6972 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:3125: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:6977: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -3154,17 +7006,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:3158: checking for $ac_hdr" >&5
-+echo "configure:7010: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3163 "configure"
-+#line 7015 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:3168: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7020: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -3197,17 +7049,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:3201: checking for $ac_hdr" >&5
-+echo "configure:7053: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3206 "configure"
-+#line 7058 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:3211: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7063: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -3240,17 +7092,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:3244: checking for $ac_hdr" >&5
-+echo "configure:7096: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3249 "configure"
-+#line 7101 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:3254: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7106: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -3283,17 +7135,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:3287: checking for $ac_hdr" >&5
-+echo "configure:7139: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3292 "configure"
-+#line 7144 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:3297: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7149: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -3326,17 +7178,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:3330: checking for $ac_hdr" >&5
-+echo "configure:7182: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3335 "configure"
-+#line 7187 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:3340: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7192: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -3369,17 +7221,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:3373: checking for $ac_hdr" >&5
-+echo "configure:7225: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3378 "configure"
-+#line 7230 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:3383: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -3412,17 +7264,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:3416: checking for $ac_hdr" >&5
-+echo "configure:7268: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3421 "configure"
-+#line 7273 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:3426: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7278: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -3455,17 +7307,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:3459: checking for $ac_hdr" >&5
-+echo "configure:7311: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3464 "configure"
-+#line 7316 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:3469: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -3499,12 +7351,12 @@
- for ac_func in lstat strerror strsignal memmove vsnprintf strcasecmp strncasecmp poll
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:3503: checking for $ac_func" >&5
-+echo "configure:7355: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3508 "configure"
-+#line 7360 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -3527,7 +7379,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:3531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:7383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -3554,9 +7406,9 @@
-
- # Check for sys_errlist
- echo $ac_n "checking for sys_errlist""... $ac_c" 1>&6
--echo "configure:3558: checking for sys_errlist" >&5
-+echo "configure:7410: checking for sys_errlist" >&5
- cat > conftest.$ac_ext <<EOF
--#line 3560 "configure"
-+#line 7412 "configure"
- #include "confdefs.h"
-
- int main() {
-@@ -3567,7 +7419,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:3571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:7423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- glib_ok=yes
- else
-@@ -3587,9 +7439,9 @@
-
- # Check for sys_siglist
- echo $ac_n "checking for sys_siglist""... $ac_c" 1>&6
--echo "configure:3591: checking for sys_siglist" >&5
-+echo "configure:7443: checking for sys_siglist" >&5
- cat > conftest.$ac_ext <<EOF
--#line 3593 "configure"
-+#line 7445 "configure"
- #include "confdefs.h"
-
- int main() {
-@@ -3599,7 +7451,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:3603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:7455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- glib_ok=yes
- else
-@@ -3619,9 +7471,9 @@
-
- # Check for sys_siglist decl (see Tue Jan 19 00:44:24 1999 in changelog)
- echo $ac_n "checking for sys_siglist declaration""... $ac_c" 1>&6
--echo "configure:3623: checking for sys_siglist declaration" >&5
-+echo "configure:7475: checking for sys_siglist declaration" >&5
- cat > conftest.$ac_ext <<EOF
--#line 3625 "configure"
-+#line 7477 "configure"
- #include "confdefs.h"
- #include <signal.h>
- int main() {
-@@ -3630,7 +7482,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:3634: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:7486: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- glib_ok=yes
- else
-@@ -3650,16 +7502,16 @@
-
- # Check if <sys/select.h> needs to be included for fd_set
- echo $ac_n "checking for fd_set""... $ac_c" 1>&6
--echo "configure:3654: checking for fd_set" >&5
-+echo "configure:7506: checking for fd_set" >&5
- cat > conftest.$ac_ext <<EOF
--#line 3656 "configure"
-+#line 7508 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- int main() {
- fd_set readMask, writeMask;
- ; return 0; }
- EOF
--if { (eval echo configure:3663: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:7515: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- gtk_ok=yes
- else
-@@ -3673,7 +7525,7 @@
- echo "$ac_t""yes, found in sys/types.h" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3677 "configure"
-+#line 7529 "configure"
- #include "confdefs.h"
- #include <sys/select.h>
- EOF
-@@ -3707,14 +7559,14 @@
- # Check for wchar.h
-
- echo $ac_n "checking for wchar.h""... $ac_c" 1>&6
--echo "configure:3711: checking for wchar.h" >&5
-+echo "configure:7563: checking for wchar.h" >&5
- cat > conftest.$ac_ext <<EOF
--#line 3713 "configure"
-+#line 7565 "configure"
- #include "confdefs.h"
- #include <wchar.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:3718: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7570: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -3738,14 +7590,14 @@
- # Check for wctype.h (for iswalnum)
-
- echo $ac_n "checking for wctype.h""... $ac_c" 1>&6
--echo "configure:3742: checking for wctype.h" >&5
-+echo "configure:7594: checking for wctype.h" >&5
- cat > conftest.$ac_ext <<EOF
--#line 3744 "configure"
-+#line 7596 "configure"
- #include "confdefs.h"
- #include <wctype.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:3749: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -3769,12 +7621,12 @@
- oLIBS="$LIBS"
- # in Solaris 2.5, `iswalnum' is in -lw
- echo $ac_n "checking for iswalnum""... $ac_c" 1>&6
--echo "configure:3773: checking for iswalnum" >&5
-+echo "configure:7625: checking for iswalnum" >&5
- if eval "test \"`echo '$''{'ac_cv_func_iswalnum'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 3778 "configure"
-+#line 7630 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char iswalnum(); below. */
-@@ -3797,7 +7649,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:3801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:7653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_iswalnum=yes"
- else
-@@ -3815,7 +7667,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for iswalnum in -lw""... $ac_c" 1>&6
--echo "configure:3819: checking for iswalnum in -lw" >&5
-+echo "configure:7671: checking for iswalnum in -lw" >&5
- ac_lib_var=`echo w'_'iswalnum | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -3823,7 +7675,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lw $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 3827 "configure"
-+#line 7679 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -3834,7 +7686,7 @@
- iswalnum()
- ; return 0; }
- EOF
--if { (eval echo configure:3838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:7690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -3866,9 +7718,9 @@
-
- # The following is necessary for Linux libc-5.4.38
- echo $ac_n "checking if iswalnum() and friends are properly defined""... $ac_c" 1>&6
--echo "configure:3870: checking if iswalnum() and friends are properly defined" >&5
-+echo "configure:7722: checking if iswalnum() and friends are properly defined" >&5
- cat > conftest.$ac_ext <<EOF
--#line 3872 "configure"
-+#line 7724 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- int main() {
-@@ -3888,7 +7740,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:3892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:7744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- glib_working_wctype=yes
- else
-@@ -3909,7 +7761,7 @@
- echo "$ac_t""$glib_working_wctype" 1>&6
-
- echo $ac_n "checking whether realloc (NULL,) will work""... $ac_c" 1>&6
--echo "configure:3913: checking whether realloc (NULL,) will work" >&5
-+echo "configure:7765: checking whether realloc (NULL,) will work" >&5
- if eval "test \"`echo '$''{'glib_cv_sane_realloc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -3918,7 +7770,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 3922 "configure"
-+#line 7774 "configure"
- #include "confdefs.h"
-
- #include <stdlib.h>
-@@ -3926,7 +7778,7 @@
- return realloc (0, sizeof (int)) == 0;
- }
- EOF
--if { (eval echo configure:3930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:7782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- glib_cv_sane_realloc=yes
- cat >> confdefs.h <<\EOF
-@@ -3951,7 +7803,7 @@
-
-
- echo $ac_n "checking for an implementation of va_copy()""... $ac_c" 1>&6
--echo "configure:3955: checking for an implementation of va_copy()" >&5
-+echo "configure:7807: checking for an implementation of va_copy()" >&5
- if eval "test \"`echo '$''{'glib_cv_va_copy'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -3960,7 +7812,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 3964 "configure"
-+#line 7816 "configure"
- #include "confdefs.h"
-
- #include <stdarg.h>
-@@ -3977,7 +7829,7 @@
- return 0;
- }
- EOF
--if { (eval echo configure:3981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:7833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- glib_cv_va_copy=yes
-
-@@ -3996,7 +7848,7 @@
-
- echo "$ac_t""$glib_cv_va_copy" 1>&6
- echo $ac_n "checking for an implementation of __va_copy()""... $ac_c" 1>&6
--echo "configure:4000: checking for an implementation of __va_copy()" >&5
-+echo "configure:7852: checking for an implementation of __va_copy()" >&5
- if eval "test \"`echo '$''{'glib_cv___va_copy'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -4005,7 +7857,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 4009 "configure"
-+#line 7861 "configure"
- #include "confdefs.h"
-
- #include <stdarg.h>
-@@ -4022,7 +7874,7 @@
- return 0;
- }
- EOF
--if { (eval echo configure:4026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:7878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- glib_cv___va_copy=yes
-
-@@ -4041,7 +7893,7 @@
-
- echo "$ac_t""$glib_cv___va_copy" 1>&6
- echo $ac_n "checking whether va_lists can be copied by value""... $ac_c" 1>&6
--echo "configure:4045: checking whether va_lists can be copied by value" >&5
-+echo "configure:7897: checking whether va_lists can be copied by value" >&5
- if eval "test \"`echo '$''{'glib_cv_va_val_copy'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -4050,7 +7902,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 4054 "configure"
-+#line 7906 "configure"
- #include "confdefs.h"
-
- #include <stdarg.h>
-@@ -4067,7 +7919,7 @@
- return 0;
- }
- EOF
--if { (eval echo configure:4071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:7923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- glib_cv_va_val_copy=yes
-
-@@ -4112,12 +7964,12 @@
- G_MODULE_HAVE_DLERROR=0
- if test -z "$G_MODULE_IMPL"; then
- echo $ac_n "checking for dlopen""... $ac_c" 1>&6
--echo "configure:4116: checking for dlopen" >&5
-+echo "configure:7968: checking for dlopen" >&5
- if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 4121 "configure"
-+#line 7973 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen(); below. */
-@@ -4140,7 +7992,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:4144: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:7996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_dlopen=yes"
- else
-@@ -4155,12 +8007,12 @@
- if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- echo $ac_n "checking for dlsym""... $ac_c" 1>&6
--echo "configure:4159: checking for dlsym" >&5
-+echo "configure:8011: checking for dlsym" >&5
- if eval "test \"`echo '$''{'ac_cv_func_dlsym'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 4164 "configure"
-+#line 8016 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlsym(); below. */
-@@ -4183,7 +8035,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:4187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_dlsym=yes"
- else
-@@ -4211,7 +8063,7 @@
- fi
- if test -z "$G_MODULE_IMPL"; then
- echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
--echo "configure:4215: checking for dlopen in -ldl" >&5
-+echo "configure:8067: checking for dlopen in -ldl" >&5
- ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4219,7 +8071,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4223 "configure"
-+#line 8075 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4230,7 +8082,7 @@
- dlopen()
- ; return 0; }
- EOF
--if { (eval echo configure:4234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4246,7 +8098,7 @@
- if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- echo $ac_n "checking for dlsym in -ldl""... $ac_c" 1>&6
--echo "configure:4250: checking for dlsym in -ldl" >&5
-+echo "configure:8102: checking for dlsym in -ldl" >&5
- ac_lib_var=`echo dl'_'dlsym | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4254,7 +8106,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4258 "configure"
-+#line 8110 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4265,7 +8117,7 @@
- dlsym()
- ; return 0; }
- EOF
--if { (eval echo configure:4269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4295,18 +8147,18 @@
- fi
- if test -z "$G_MODULE_IMPL"; then
- echo $ac_n "checking how to export all symbols""... $ac_c" 1>&6
--echo "configure:4299: checking how to export all symbols" >&5
-+echo "configure:8151: checking how to export all symbols" >&5
- SAVED_LDFLAGS=$LDFLAGS
- LDFLAGS="$LDFLAGS -Wl,-E"
- cat > conftest.$ac_ext <<EOF
--#line 4303 "configure"
-+#line 8155 "configure"
- #include "confdefs.h"
-
- int main() {
- return 0;
- ; return 0; }
- EOF
--if { (eval echo configure:4310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- G_MODULE_LDFLAGS="-Wl,-E"
- else
-@@ -4316,14 +8168,14 @@
-
- LDFLAGS="$SAVED_LDFLAGS -bexpall"
- cat > conftest.$ac_ext <<EOF
--#line 4320 "configure"
-+#line 8172 "configure"
- #include "confdefs.h"
-
- int main() {
- return 0;
- ; return 0; }
- EOF
--if { (eval echo configure:4327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- G_MODULE_LDFLAGS="-bexpall"
- else
-@@ -4343,7 +8195,7 @@
- G_MODULE_LDFLAGS=
- fi
- echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
--echo "configure:4347: checking for shl_load in -ldld" >&5
-+echo "configure:8199: checking for shl_load in -ldld" >&5
- ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4351,7 +8203,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldld $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4355 "configure"
-+#line 8207 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4362,7 +8214,7 @@
- shl_load()
- ; return 0; }
- EOF
--if { (eval echo configure:4366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4396,7 +8248,7 @@
- LIBS="$LIBS $G_MODULE_LIBS"
- LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
- echo $ac_n "checking for RTLD_GLOBAL brokenness""... $ac_c" 1>&6
--echo "configure:4400: checking for RTLD_GLOBAL brokenness" >&5
-+echo "configure:8252: checking for RTLD_GLOBAL brokenness" >&5
- if eval "test \"`echo '$''{'glib_cv_rtldglobal_broken'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -4405,7 +8257,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 4409 "configure"
-+#line 8261 "configure"
- #include "confdefs.h"
-
- #include <dlfcn.h>
-@@ -4425,7 +8277,7 @@
- return global == local;
- }
- EOF
--if { (eval echo configure:4429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:8281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- glib_cv_rtldglobal_broken=no
- else
-@@ -4448,7 +8300,7 @@
- G_MODULE_BROKEN_RTLD_GLOBAL=0
- fi
- echo $ac_n "checking for preceeding underscore in symbols""... $ac_c" 1>&6
--echo "configure:4452: checking for preceeding underscore in symbols" >&5
-+echo "configure:8304: checking for preceeding underscore in symbols" >&5
- if eval "test \"`echo '$''{'glib_cv_uscore'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -4457,7 +8309,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 4461 "configure"
-+#line 8313 "configure"
- #include "confdefs.h"
-
- #include <dlfcn.h>
-@@ -4471,7 +8323,7 @@
- } return (!f2 || f1);
- }
- EOF
--if { (eval echo configure:4475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:8327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- glib_cv_uscore=yes
- else
-@@ -4496,12 +8348,12 @@
-
- LDFLAGS="$LDFLAGS_orig"
- echo $ac_n "checking for dlerror""... $ac_c" 1>&6
--echo "configure:4500: checking for dlerror" >&5
-+echo "configure:8352: checking for dlerror" >&5
- if eval "test \"`echo '$''{'ac_cv_func_dlerror'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 4505 "configure"
-+#line 8357 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlerror(); below. */
-@@ -4524,7 +8376,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:4528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_dlerror=yes"
- else
-@@ -4608,7 +8460,7 @@
- case $host in
- *-*-solaris*)
- echo $ac_n "checking for cond_init in -lthread""... $ac_c" 1>&6
--echo "configure:4612: checking for cond_init in -lthread" >&5
-+echo "configure:8464: checking for cond_init in -lthread" >&5
- ac_lib_var=`echo thread'_'cond_init | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4616,7 +8468,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lthread $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4620 "configure"
-+#line 8472 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4627,7 +8479,7 @@
- cond_init()
- ; return 0; }
- EOF
--if { (eval echo configure:4631: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4654,17 +8506,17 @@
- if test "x$have_threads" = xnone; then
- ac_safe=`echo "pthread.h" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for pthread.h""... $ac_c" 1>&6
--echo "configure:4658: checking for pthread.h" >&5
-+echo "configure:8510: checking for pthread.h" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 4663 "configure"
-+#line 8515 "configure"
- #include "confdefs.h"
- #include <pthread.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:4668: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:8520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -4690,7 +8542,7 @@
- if test "x$want_threads" = xyes || test "x$want_threads" = xnspr; then
- if test "x$have_threads" = xnone; then
- echo $ac_n "checking for PRP_NewNakedCondVar in -lnspr21""... $ac_c" 1>&6
--echo "configure:4694: checking for PRP_NewNakedCondVar in -lnspr21" >&5
-+echo "configure:8546: checking for PRP_NewNakedCondVar in -lnspr21" >&5
- ac_lib_var=`echo nspr21'_'PRP_NewNakedCondVar | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4698,7 +8550,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lnspr21 $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4702 "configure"
-+#line 8554 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4709,7 +8561,7 @@
- PRP_NewNakedCondVar()
- ; return 0; }
- EOF
--if { (eval echo configure:4713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8565: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4733,7 +8585,7 @@
- fi
-
- echo $ac_n "checking for thread implementation""... $ac_c" 1>&6
--echo "configure:4737: checking for thread implementation" >&5
-+echo "configure:8589: checking for thread implementation" >&5
-
- if test "x$have_threads" = xnone && test "x$want_threads" != xno; then
- echo "$ac_t""none available" 1>&6
-@@ -4752,7 +8604,7 @@
- posix)
- G_THREAD_LIBS=error
- echo $ac_n "checking for pthread_attr_init in -lpthread""... $ac_c" 1>&6
--echo "configure:4756: checking for pthread_attr_init in -lpthread" >&5
-+echo "configure:8608: checking for pthread_attr_init in -lpthread" >&5
- ac_lib_var=`echo pthread'_'pthread_attr_init | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4760,7 +8612,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpthread $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4764 "configure"
-+#line 8616 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4771,7 +8623,7 @@
- pthread_attr_init()
- ; return 0; }
- EOF
--if { (eval echo configure:4775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4793,7 +8645,7 @@
-
- if test "x$G_THREAD_LIBS" = xerror; then
- echo $ac_n "checking for pthread_attr_init in -lpthreads""... $ac_c" 1>&6
--echo "configure:4797: checking for pthread_attr_init in -lpthreads" >&5
-+echo "configure:8649: checking for pthread_attr_init in -lpthreads" >&5
- ac_lib_var=`echo pthreads'_'pthread_attr_init | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4801,7 +8653,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpthreads $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4805 "configure"
-+#line 8657 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4812,7 +8664,7 @@
- pthread_attr_init()
- ; return 0; }
- EOF
--if { (eval echo configure:4816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4835,7 +8687,7 @@
- fi
- if test "x$G_THREAD_LIBS" = xerror; then
- echo $ac_n "checking for pthread_attr_init in -lthread""... $ac_c" 1>&6
--echo "configure:4839: checking for pthread_attr_init in -lthread" >&5
-+echo "configure:8691: checking for pthread_attr_init in -lthread" >&5
- ac_lib_var=`echo thread'_'pthread_attr_init | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4843,7 +8695,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lthread $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4847 "configure"
-+#line 8699 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4854,7 +8706,7 @@
- pthread_attr_init()
- ; return 0; }
- EOF
--if { (eval echo configure:4858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4877,7 +8729,7 @@
- fi
- if test "x$G_THREAD_LIBS" = xerror; then
- echo $ac_n "checking for pthread_attr_init in -lc_r""... $ac_c" 1>&6
--echo "configure:4881: checking for pthread_attr_init in -lc_r" >&5
-+echo "configure:8733: checking for pthread_attr_init in -lc_r" >&5
- ac_lib_var=`echo c_r'_'pthread_attr_init | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4885,7 +8737,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lc_r $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4889 "configure"
-+#line 8741 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4896,7 +8748,7 @@
- pthread_attr_init()
- ; return 0; }
- EOF
--if { (eval echo configure:4900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -4919,12 +8771,12 @@
- fi
- if test "x$G_THREAD_LIBS" = xerror; then
- echo $ac_n "checking for pthread_attr_init""... $ac_c" 1>&6
--echo "configure:4923: checking for pthread_attr_init" >&5
-+echo "configure:8775: checking for pthread_attr_init" >&5
- if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_init'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 4928 "configure"
-+#line 8780 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char pthread_attr_init(); below. */
-@@ -4947,7 +8799,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:4951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_pthread_attr_init=yes"
- else
-@@ -4969,7 +8821,7 @@
- fi
- if test "x$G_THREAD_LIBS" = xerror; then
- echo $ac_n "checking for __d10_pthread_attr_init in -lthread""... $ac_c" 1>&6
--echo "configure:4973: checking for __d10_pthread_attr_init in -lthread" >&5
-+echo "configure:8825: checking for __d10_pthread_attr_init in -lthread" >&5
- ac_lib_var=`echo thread'_'__d10_pthread_attr_init | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -4977,7 +8829,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lthread $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 4981 "configure"
-+#line 8833 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -4988,7 +8840,7 @@
- __d10_pthread_attr_init()
- ; return 0; }
- EOF
--if { (eval echo configure:4992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -5012,7 +8864,7 @@
- fi
- if test "x$G_THREAD_LIBS" = xerror; then
- echo $ac_n "checking for __pthread_attr_init_system in -lpthread""... $ac_c" 1>&6
--echo "configure:5016: checking for __pthread_attr_init_system in -lpthread" >&5
-+echo "configure:8868: checking for __pthread_attr_init_system in -lpthread" >&5
- ac_lib_var=`echo pthread'_'__pthread_attr_init_system | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -5020,7 +8872,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpthread $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 5024 "configure"
-+#line 8876 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -5031,7 +8883,7 @@
- __pthread_attr_init_system()
- ; return 0; }
- EOF
--if { (eval echo configure:5035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -5061,7 +8913,7 @@
- solaris)
- G_THREAD_LIBS=error
- echo $ac_n "checking for cond_init in -lthread""... $ac_c" 1>&6
--echo "configure:5065: checking for cond_init in -lthread" >&5
-+echo "configure:8917: checking for cond_init in -lthread" >&5
- ac_lib_var=`echo thread'_'cond_init | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -5069,7 +8921,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lthread $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 5073 "configure"
-+#line 8925 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -5080,7 +8932,7 @@
- cond_init()
- ; return 0; }
- EOF
--if { (eval echo configure:5084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -5108,7 +8960,7 @@
- ;;
- nspr)
- echo $ac_n "checking for PRP_NewNakedCondVar in -lnspr21""... $ac_c" 1>&6
--echo "configure:5112: checking for PRP_NewNakedCondVar in -lnspr21" >&5
-+echo "configure:8964: checking for PRP_NewNakedCondVar in -lnspr21" >&5
- ac_lib_var=`echo nspr21'_'PRP_NewNakedCondVar | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -5116,7 +8968,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lnspr21 $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 5120 "configure"
-+#line 8972 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -5127,7 +8979,7 @@
- PRP_NewNakedCondVar()
- ; return 0; }
- EOF
--if { (eval echo configure:5131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:8983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -5163,7 +9015,7 @@
- fi
-
- echo $ac_n "checking necessary linker options""... $ac_c" 1>&6
--echo "configure:5167: checking necessary linker options" >&5
-+echo "configure:9019: checking necessary linker options" >&5
- echo "$ac_t""$G_THREAD_LIBS" 1>&6
-
-
-@@ -5191,7 +9043,7 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
- cat > conftest.$ac_ext <<EOF
--#line 5195 "configure"
-+#line 9047 "configure"
- #include "confdefs.h"
- #include <time.h>
- EOF
-@@ -5208,7 +9060,7 @@
- CPPFLAGS=$old_CPPFLAGS
-
- echo $ac_n "checking necessary compiler options""... $ac_c" 1>&6
--echo "configure:5212: checking necessary compiler options" >&5
-+echo "configure:9064: checking necessary compiler options" >&5
-
- echo "$ac_t""$G_THREAD_CFLAGS" 1>&6
- else
-@@ -5226,12 +9078,12 @@
- for ac_func in localtime_r rand_r
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:5230: checking for $ac_func" >&5
-+echo "configure:9082: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 5235 "configure"
-+#line 9087 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -5254,7 +9106,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:5258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:9110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -5280,7 +9132,7 @@
-
- if test "$ac_cv_header_pwd_h" = "yes"; then
- echo $ac_n "checking for getpwuid_r""... $ac_c" 1>&6
--echo "configure:5284: checking for getpwuid_r" >&5
-+echo "configure:9136: checking for getpwuid_r" >&5
- if eval "test \"`echo '$''{'ac_cv_func_getpwuid_r'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -5288,7 +9140,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 5292 "configure"
-+#line 9144 "configure"
- #include "confdefs.h"
- #include <errno.h>
- int main () { char buffer[10000], *pointer;
-@@ -5300,7 +9152,7 @@
- sizeof (buffer), &pointer);
- return errno == ENOSYS || error == ENOSYS;}
- EOF
--if { (eval echo configure:5304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:9156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_func_getpwuid_r=yes
- else
-@@ -5325,11 +9177,11 @@
- fi
- if test "$ac_cv_func_getpwuid_r" = "yes"; then
- echo $ac_n "checking whether getpwuid_r is posix like""... $ac_c" 1>&6
--echo "configure:5329: checking whether getpwuid_r is posix like" >&5
-+echo "configure:9181: checking whether getpwuid_r is posix like" >&5
- # The signature for the POSIX version is:
- # int getpwuid_r(uid_t, struct passwd *, char *, size_t, struct passwd **)
- cat > conftest.$ac_ext <<EOF
--#line 5333 "configure"
-+#line 9185 "configure"
- #include "confdefs.h"
- #include <pwd.h>
- #include <sys/types.h>
-@@ -5338,7 +9190,7 @@
- getpwuid_r((uid_t)0, NULL, NULL, (size_t)0, NULL);
- ; return 0; }
- EOF
--if { (eval echo configure:5342: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:9194: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- cat >> confdefs.h <<\EOF
- #define HAVE_GETPWUID_R_POSIX 1
-@@ -5357,17 +9209,17 @@
- if test x"$have_threads" = xposix; then
- LIBS="$LIBS $G_THREAD_LIBS"
- echo $ac_n "checking whether pthread_getspecific is posix like""... $ac_c" 1>&6
--echo "configure:5361: checking whether pthread_getspecific is posix like" >&5
-+echo "configure:9213: checking whether pthread_getspecific is posix like" >&5
- # PCThreads has pthread_getspecific(pthread_key_t, void **);
- cat > conftest.$ac_ext <<EOF
--#line 5364 "configure"
-+#line 9216 "configure"
- #include "confdefs.h"
- #include <pthread.h>
- int main() {
- pthread_getspecific(0,NULL);
- ; return 0; }
- EOF
--if { (eval echo configure:5371: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:9223: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- echo "$ac_t""no" 1>&6
- else
-@@ -5382,20 +9234,20 @@
- fi
- rm -f conftest*
- echo $ac_n "checking whether pthread_mutex_trylock is posix like""... $ac_c" 1>&6
--echo "configure:5386: checking whether pthread_mutex_trylock is posix like" >&5
-+echo "configure:9238: checking whether pthread_mutex_trylock is posix like" >&5
- # DCE Threads return 1 as success, posix 0. what a mess.
- if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 5392 "configure"
-+#line 9244 "configure"
- #include "confdefs.h"
- #include <pthread.h>
- pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
- int main () {
- return !pthread_mutex_trylock (&mutex); }
- EOF
--if { (eval echo configure:5399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:9251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- echo "$ac_t""no" 1>&6
- else
-@@ -5412,13 +9264,13 @@
- fi
-
- echo $ac_n "checking whether pthread_cond_timedwait is posix like""... $ac_c" 1>&6
--echo "configure:5416: checking whether pthread_cond_timedwait is posix like" >&5
-+echo "configure:9268: checking whether pthread_cond_timedwait is posix like" >&5
- # DCE Threads return -1 as failure, posix ETIMEDOUT.
- if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 5422 "configure"
-+#line 9274 "configure"
- #include "confdefs.h"
- #include <pthread.h>
- int main () {
-@@ -5432,7 +9284,7 @@
- return pthread_cond_timedwait (&cond,&mutex,&tspec)
- != -1;}
- EOF
--if { (eval echo configure:5436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:9288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- echo "$ac_t""no" 1>&6
- else
-@@ -5475,7 +9327,7 @@
- case "$mutex_has_default" in
- "yes")
- echo $ac_n "checking size of $mutex_default_type""... $ac_c" 1>&6
--echo "configure:5479: checking size of $mutex_default_type" >&5
-+echo "configure:9331: checking size of $mutex_default_type" >&5
- if eval "test \"`echo '$''{'glib_cv_sizeof_gmutex'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -5483,7 +9335,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 5487 "configure"
-+#line 9339 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- #include <$mutex_header_file>
-@@ -5495,7 +9347,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:5499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:9351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- glib_cv_sizeof_gmutex=`cat conftestval`
- else
-@@ -5515,7 +9367,7 @@
-
-
- echo $ac_n "checking byte contents of $mutex_default_type""... $ac_c" 1>&6
--echo "configure:5519: checking byte contents of $mutex_default_type" >&5
-+echo "configure:9371: checking byte contents of $mutex_default_type" >&5
- if eval "test \"`echo '$''{'glib_cv_byte_contents_gmutex'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -5523,7 +9375,7 @@
- glib_cv_byte_contents_gmutex=0
- else
- cat > conftest.$ac_ext <<EOF
--#line 5527 "configure"
-+#line 9379 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- #include <$mutex_header_file>
-@@ -5540,7 +9392,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:5544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:9396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- glib_cv_byte_contents_gmutex=`cat conftestval`
- else
-@@ -5576,7 +9428,7 @@
- glib_nl='\n'
- fi
- echo $ac_n "checking system definitions for $glib_sysdef_msg""... $ac_c" 1>&6
--echo "configure:5580: checking system definitions for $glib_sysdef_msg" >&5
-+echo "configure:9432: checking system definitions for $glib_sysdef_msg" >&5
- cat >confrun.c <<_______EOF
- #include <stdio.h>
- #include <sys/types.h>
-@@ -5603,11 +9455,11 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 5607 "configure"
-+#line 9459 "configure"
- #include "confdefs.h"
- `cat confrun.c`
- EOF
--if { (eval echo configure:5611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:9463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- echo "$ac_t""done" 1>&6
- else
-@@ -5813,16 +9665,20 @@
- s%@build_cpu@%$build_cpu%g
- s%@build_vendor@%$build_vendor%g
- s%@build_os@%$build_os%g
--s%@RANLIB@%$RANLIB%g
- s%@CC@%$CC%g
- s%@LN_S@%$LN_S%g
-+s%@OBJEXT@%$OBJEXT%g
-+s%@EXEEXT@%$EXEEXT%g
-+s%@ECHO@%$ECHO%g
-+s%@RANLIB@%$RANLIB%g
-+s%@STRIP@%$STRIP%g
-+s%@CPP@%$CPP%g
- s%@LIBTOOL@%$LIBTOOL%g
- s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g
- s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g
- s%@MAINT@%$MAINT%g
- s%@ENABLE_MEM_CHECK@%$ENABLE_MEM_CHECK%g
- s%@ENABLE_MEM_PROFILE@%$ENABLE_MEM_PROFILE%g
--s%@CPP@%$CPP%g
- s%@G_MODULE_IMPL@%$G_MODULE_IMPL%g
- s%@G_MODULE_LIBS@%$G_MODULE_LIBS%g
- s%@G_MODULE_LDFLAGS@%$G_MODULE_LDFLAGS%g
---- glib1.2-1.2.10.orig/ltmain.sh
-+++ glib1.2-1.2.10/ltmain.sh
-@@ -1,7 +1,8 @@
- # ltmain.sh - Provide generalized library-building support services.
--# NOTE: Changing this file will not affect anything until you rerun ltconfig.
-+# NOTE: Changing this file will not affect anything until you rerun configure.
- #
--# Copyright (C) 1996-1999 Free Software Foundation, Inc.
-+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
-+# Free Software Foundation, Inc.
- # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
- #
- # This program is free software; you can redistribute it and/or modify
-@@ -48,14 +49,14 @@
- fi
-
- # The name of this program.
--progname=`$echo "$0" | sed 's%^.*/%%'`
-+progname=`$echo "$0" | ${SED} 's%^.*/%%'`
- modename="$progname"
-
- # Constants.
- PROGRAM=ltmain.sh
- PACKAGE=libtool
--VERSION=1.3.4
--TIMESTAMP=" (1.385.2.196 1999/12/07 21:47:57)"
-+VERSION=1.4.3
-+TIMESTAMP=" (1.922.2.111 2002/10/23 02:54:36)"
-
- default_mode=
- help="Try \`$progname --help' for more information."
-@@ -66,10 +67,19 @@
-
- # Sed substitution that helps us do robust quoting. It backslashifies
- # metacharacters that are still active within double-quoted strings.
--Xsed='sed -e 1s/^X//'
-+Xsed="${SED}"' -e 1s/^X//'
- sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
--SP2NL='tr \040 \012'
--NL2SP='tr \015\012 \040\040'
-+# test EBCDIC or ASCII
-+case `echo A|od -x` in
-+ *[Cc]1*) # EBCDIC based system
-+ SP2NL="tr '\100' '\n'"
-+ NL2SP="tr '\r\n' '\100\100'"
-+ ;;
-+ *) # Assume ASCII based system
-+ SP2NL="tr '\040' '\012'"
-+ NL2SP="tr '\015\012' '\040\040'"
-+ ;;
-+esac
-
- # NLS nuisances.
- # Only set LANG and LC_ALL to C if already set.
-@@ -83,11 +93,8 @@
- save_LANG="$LANG"; LANG=C; export LANG
- fi
-
--if test "$LTCONFIG_VERSION" != "$VERSION"; then
-- echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
-- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
-- exit 1
--fi
-+# Make sure IFS has a sensible default
-+: ${IFS=" "}
-
- if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
- echo "$modename: not configured to build any kind of library" 1>&2
-@@ -113,16 +120,16 @@
- arg="$1"
- shift
-
-- case "$arg" in
-+ case $arg in
- -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
- *) optarg= ;;
- esac
-
- # If the previous option needs an argument, assign it.
- if test -n "$prev"; then
-- case "$prev" in
-+ case $prev in
- execute_dlfiles)
-- eval "$prev=\"\$$prev \$arg\""
-+ execute_dlfiles="$execute_dlfiles $arg"
- ;;
- *)
- eval "$prev=\$arg"
-@@ -135,7 +142,7 @@
- fi
-
- # Have we seen a non-optional argument yet?
-- case "$arg" in
-+ case $arg in
- --help)
- show_help=yes
- ;;
-@@ -146,7 +153,7 @@
- ;;
-
- --config)
-- sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
-+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
- exit 0
- ;;
-
-@@ -179,6 +186,8 @@
- --mode) prevopt="--mode" prev=mode ;;
- --mode=*) mode="$optarg" ;;
-
-+ --preserve-dup-deps) duplicate_deps="yes" ;;
-+
- --quiet | --silent)
- show=:
- ;;
-@@ -207,16 +216,21 @@
- exit 1
- fi
-
-+# If this variable is set in any of the actions, the command in it
-+# will be execed at the end. This prevents here-documents from being
-+# left over by shells.
-+exec_cmd=
-+
- if test -z "$show_help"; then
-
- # Infer the operation mode.
- if test -z "$mode"; then
-- case "$nonopt" in
-- *cc | *++ | gcc* | *-gcc*)
-+ case $nonopt in
-+ *cc | *++ | gcc* | *-gcc* | g++* | xlc*)
- mode=link
- for arg
- do
-- case "$arg" in
-+ case $arg in
- -c)
- mode=compile
- break
-@@ -261,12 +275,13 @@
- help="Try \`$modename --help --mode=$mode' for more information."
-
- # These modes are in order of execution frequency so that they run quickly.
-- case "$mode" in
-+ case $mode in
- # libtool compile mode
- compile)
- modename="$modename: compile"
- # Get the compilation command and the source file.
- base_compile=
-+ prev=
- lastarg=
- srcfile="$nonopt"
- suppress_output=
-@@ -274,8 +289,34 @@
- user_target=no
- for arg
- do
-+ case $prev in
-+ "") ;;
-+ xcompiler)
-+ # Aesthetically quote the previous argument.
-+ prev=
-+ lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-+
-+ case $arg in
-+ # Double-quote args containing other shell metacharacters.
-+ # Many Bourne shells cannot handle close brackets correctly
-+ # in scan sets, so we specify it separately.
-+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-+ arg="\"$arg\""
-+ ;;
-+ esac
-+
-+ # Add the previous argument to base_compile.
-+ if test -z "$base_compile"; then
-+ base_compile="$lastarg"
-+ else
-+ base_compile="$base_compile $lastarg"
-+ fi
-+ continue
-+ ;;
-+ esac
-+
- # Accept any command-line options.
-- case "$arg" in
-+ case $arg in
- -o)
- if test "$user_target" != "no"; then
- $echo "$modename: you cannot specify \`-o' more than once" 1>&2
-@@ -288,9 +329,53 @@
- build_old_libs=yes
- continue
- ;;
-+
-+ -prefer-pic)
-+ pic_mode=yes
-+ continue
-+ ;;
-+
-+ -prefer-non-pic)
-+ pic_mode=no
-+ continue
-+ ;;
-+
-+ -Xcompiler)
-+ prev=xcompiler
-+ continue
-+ ;;
-+
-+ -Wc,*)
-+ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
-+ lastarg=
-+ save_ifs="$IFS"; IFS=','
-+ for arg in $args; do
-+ IFS="$save_ifs"
-+
-+ # Double-quote args containing other shell metacharacters.
-+ # Many Bourne shells cannot handle close brackets correctly
-+ # in scan sets, so we specify it separately.
-+ case $arg in
-+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-+ arg="\"$arg\""
-+ ;;
-+ esac
-+ lastarg="$lastarg $arg"
-+ done
-+ IFS="$save_ifs"
-+ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
-+
-+ # Add the arguments to base_compile.
-+ if test -z "$base_compile"; then
-+ base_compile="$lastarg"
-+ else
-+ base_compile="$base_compile $lastarg"
-+ fi
-+ continue
-+ ;;
- esac
-
-- case "$user_target" in
-+ case $user_target in
- next)
- # The next one is the -o target name
- user_target=yes
-@@ -316,10 +401,10 @@
- lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
-
- # Double-quote args containing other shell metacharacters.
-- # Many Bourne shells cannot handle close brackets correctly in scan
-- # sets, so we specify it separately.
-- case "$lastarg" in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
-+ # Many Bourne shells cannot handle close brackets correctly
-+ # in scan sets, so we specify it separately.
-+ case $lastarg in
-+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- lastarg="\"$lastarg\""
- ;;
- esac
-@@ -332,7 +417,7 @@
- fi
- done
-
-- case "$user_target" in
-+ case $user_target in
- set)
- ;;
- no)
-@@ -348,7 +433,7 @@
- # Recognize several different file suffixes.
- # If the user specifies -o file.o, it is replaced with file.lo
- xform='[cCFSfmso]'
-- case "$libobj" in
-+ case $libobj in
- *.ada) xform=ada ;;
- *.adb) xform=adb ;;
- *.ads) xform=ads ;;
-@@ -363,7 +448,7 @@
-
- libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
-
-- case "$libobj" in
-+ case $libobj in
- *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
- *)
- $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
-@@ -387,10 +472,21 @@
- $run $rm $removelist
- trap "$run $rm $removelist; exit 1" 1 2 15
-
-+ # On Cygwin there's no "real" PIC flag so we must build both object types
-+ case $host_os in
-+ cygwin* | mingw* | pw32* | os2*)
-+ pic_mode=default
-+ ;;
-+ esac
-+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
-+ # non-PIC code in shared libraries is not supported
-+ pic_mode=default
-+ fi
-+
- # Calculate the filename of the output object if compiler does
- # not support -o with -c
- if test "$compiler_c_o" = no; then
-- output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext}
-+ output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
- lockfile="$output_obj.lock"
- removelist="$removelist $output_obj $lockfile"
- trap "$run $rm $removelist; exit 1" 1 2 15
-@@ -402,7 +498,7 @@
- # Lock this critical section if it is needed
- # We use this script file to make the link, it avoids creating a new file
- if test "$need_locks" = yes; then
-- until ln "$0" "$lockfile" 2>/dev/null; do
-+ until $run ln "$0" "$lockfile" 2>/dev/null; do
- $show "Waiting for $lockfile to be removed"
- sleep 2
- done
-@@ -434,8 +530,13 @@
- # Without this assignment, base_compile gets emptied.
- fbsd_hideous_sh_bug=$base_compile
-
-- # All platforms use -DPIC, to notify preprocessed assembler code.
-- command="$base_compile $srcfile $pic_flag -DPIC"
-+ if test "$pic_mode" != no; then
-+ # All platforms use -DPIC, to notify preprocessed assembler code.
-+ command="$base_compile $srcfile $pic_flag -DPIC"
-+ else
-+ # Don't build PIC code
-+ command="$base_compile $srcfile"
-+ fi
- if test "$build_old_libs" = yes; then
- lo_libobj="$libobj"
- dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
-@@ -506,7 +607,8 @@
- fi
-
- # If we have no pic_flag, then copy the object into place and finish.
-- if test -z "$pic_flag" && test "$build_old_libs" = yes; then
-+ if (test -z "$pic_flag" || test "$pic_mode" != default) &&
-+ test "$build_old_libs" = yes; then
- # Rename the .lo from within objdir to obj
- if test -f $obj; then
- $show $rm $obj
-@@ -532,6 +634,10 @@
- # Now arrange that obj and lo_libobj become the same file
- $show "(cd $xdir && $LN_S $baseobj $libobj)"
- if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
-+ # Unlock the critical section if it was locked
-+ if test "$need_locks" != no; then
-+ $run $rm "$lockfile"
-+ fi
- exit 0
- else
- error=$?
-@@ -546,7 +652,13 @@
-
- # Only build a position-dependent object if we build old libraries.
- if test "$build_old_libs" = yes; then
-- command="$base_compile $srcfile"
-+ if test "$pic_mode" != yes; then
-+ # Don't build PIC code
-+ command="$base_compile $srcfile"
-+ else
-+ # All platforms use -DPIC, to notify preprocessed assembler code.
-+ command="$base_compile $srcfile $pic_flag -DPIC"
-+ fi
- if test "$compiler_c_o" = yes; then
- command="$command -o $obj"
- output_obj="$obj"
-@@ -612,17 +724,17 @@
-
- # Unlock the critical section if it was locked
- if test "$need_locks" != no; then
-- $rm "$lockfile"
-+ $run $rm "$lockfile"
- fi
-
- exit 0
- ;;
-
- # libtool link mode
-- link)
-+ link | relink)
- modename="$modename: link"
-- case "$host" in
-- *-*-cygwin* | *-*-mingw* | *-*-os2*)
-+ case $host in
-+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
- # It is impossible to link a dll without this setting, and
- # we shouldn't force the makefile maintainer to figure out
- # which system we are compiling for in order to pass an extra
-@@ -635,179 +747,12 @@
- # -no-undefined on the libtool link line when we can be certain
- # that all symbols are satisfied, otherwise we get a static library.
- allow_undefined=yes
--
-- # This is a source program that is used to create dlls on Windows
-- # Don't remove nor modify the starting and closing comments
--# /* ltdll.c starts here */
--# #define WIN32_LEAN_AND_MEAN
--# #include <windows.h>
--# #undef WIN32_LEAN_AND_MEAN
--# #include <stdio.h>
--#
--# #ifndef __CYGWIN__
--# # ifdef __CYGWIN32__
--# # define __CYGWIN__ __CYGWIN32__
--# # endif
--# #endif
--#
--# #ifdef __cplusplus
--# extern "C" {
--# #endif
--# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
--# #ifdef __cplusplus
--# }
--# #endif
--#
--# #ifdef __CYGWIN__
--# #include <cygwin/cygwin_dll.h>
--# DECLARE_CYGWIN_DLL( DllMain );
--# #endif
--# HINSTANCE __hDllInstance_base;
--#
--# BOOL APIENTRY
--# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
--# {
--# __hDllInstance_base = hInst;
--# return TRUE;
--# }
--# /* ltdll.c ends here */
-- # This is a source program that is used to create import libraries
-- # on Windows for dlls which lack them. Don't remove nor modify the
-- # starting and closing comments
--# /* impgen.c starts here */
--# /* Copyright (C) 1999 Free Software Foundation, Inc.
--#
--# This file is part of GNU libtool.
--#
--# 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 <stdio.h> /* for printf() */
--# #include <unistd.h> /* for open(), lseek(), read() */
--# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
--# #include <string.h> /* for strdup() */
--#
--# static unsigned int
--# pe_get16 (fd, offset)
--# int fd;
--# int offset;
--# {
--# unsigned char b[2];
--# lseek (fd, offset, SEEK_SET);
--# read (fd, b, 2);
--# return b[0] + (b[1]<<8);
--# }
--#
--# static unsigned int
--# pe_get32 (fd, offset)
--# int fd;
--# int offset;
--# {
--# unsigned char b[4];
--# lseek (fd, offset, SEEK_SET);
--# read (fd, b, 4);
--# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
--# }
--#
--# static unsigned int
--# pe_as32 (ptr)
--# void *ptr;
--# {
--# unsigned char *b = ptr;
--# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
--# }
--#
--# int
--# main (argc, argv)
--# int argc;
--# char *argv[];
--# {
--# int dll;
--# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
--# unsigned long export_rva, export_size, nsections, secptr, expptr;
--# unsigned long name_rvas, nexp;
--# unsigned char *expdata, *erva;
--# char *filename, *dll_name;
--#
--# filename = argv[1];
--#
--# dll = open(filename, O_RDONLY|O_BINARY);
--# if (!dll)
--# return 1;
--#
--# dll_name = filename;
--#
--# for (i=0; filename[i]; i++)
--# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
--# dll_name = filename + i +1;
--#
--# pe_header_offset = pe_get32 (dll, 0x3c);
--# opthdr_ofs = pe_header_offset + 4 + 20;
--# num_entries = pe_get32 (dll, opthdr_ofs + 92);
--#
--# if (num_entries < 1) /* no exports */
--# return 1;
--#
--# export_rva = pe_get32 (dll, opthdr_ofs + 96);
--# export_size = pe_get32 (dll, opthdr_ofs + 100);
--# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
--# secptr = (pe_header_offset + 4 + 20 +
--# pe_get16 (dll, pe_header_offset + 4 + 16));
--#
--# expptr = 0;
--# for (i = 0; i < nsections; i++)
--# {
--# char sname[8];
--# unsigned long secptr1 = secptr + 40 * i;
--# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
--# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
--# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
--# lseek(dll, secptr1, SEEK_SET);
--# read(dll, sname, 8);
--# if (vaddr <= export_rva && vaddr+vsize > export_rva)
--# {
--# expptr = fptr + (export_rva - vaddr);
--# if (export_rva + export_size > vaddr + vsize)
--# export_size = vsize - (export_rva - vaddr);
--# break;
--# }
--# }
--#
--# expdata = (unsigned char*)malloc(export_size);
--# lseek (dll, expptr, SEEK_SET);
--# read (dll, expdata, export_size);
--# erva = expdata - export_rva;
--#
--# nexp = pe_as32 (expdata+24);
--# name_rvas = pe_as32 (expdata+32);
--#
--# printf ("EXPORTS\n");
--# for (i = 0; i<nexp; i++)
--# {
--# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
--# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
--# }
--#
--# return 0;
--# }
--# /* impgen.c ends here */
- ;;
- *)
- allow_undefined=yes
- ;;
- esac
-+ libtool_args="$nonopt"
- compile_command="$nonopt"
- finalize_command="$nonopt"
-
-@@ -818,18 +763,13 @@
- convenience=
- old_convenience=
- deplibs=
-- linkopts=
-+ old_deplibs=
-+ compiler_flags=
-+ linker_flags=
-+ dllsearchpath=
-+ lib_search_path=`pwd`
-+ inst_prefix_dir=
-
-- if test -n "$shlibpath_var"; then
-- # get the directories listed in $shlibpath_var
-- eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
-- else
-- lib_search_path=
-- fi
-- # now prepend the system-specific ones
-- eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\"
-- eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
--
- avoid_version=no
- dlfiles=
- dlprefiles=
-@@ -839,9 +779,9 @@
- export_symbols_regex=
- generated=
- libobjs=
-- link_against_libtool_libs=
- ltlibs=
- module=no
-+ no_install=no
- objs=
- prefer_static_libs=no
- preload=no
-@@ -858,7 +798,7 @@
- # We need to know -static, to get the right output filenames.
- for arg
- do
-- case "$arg" in
-+ case $arg in
- -all-static | -static)
- if test "X$arg" = "X-all-static"; then
- if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
-@@ -887,17 +827,24 @@
- while test $# -gt 0; do
- arg="$1"
- shift
-+ case $arg in
-+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-+ qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
-+ ;;
-+ *) qarg=$arg ;;
-+ esac
-+ libtool_args="$libtool_args $qarg"
-
- # If the previous option needs an argument, assign it.
- if test -n "$prev"; then
-- case "$prev" in
-+ case $prev in
- output)
- compile_command="$compile_command @OUTPUT@"
- finalize_command="$finalize_command @OUTPUT@"
- ;;
- esac
-
-- case "$prev" in
-+ case $prev in
- dlfiles|dlprefiles)
- if test "$preload" = no; then
- # Add the symbol object into the linking commands.
-@@ -905,7 +852,7 @@
- finalize_command="$finalize_command @SYMFILE@"
- preload=yes
- fi
-- case "$arg" in
-+ case $arg in
- *.la | *.lo) ;; # We handle these cases below.
- force)
- if test "$dlself" = no; then
-@@ -934,6 +881,7 @@
- dlprefiles="$dlprefiles $arg"
- fi
- prev=
-+ continue
- ;;
- esac
- ;;
-@@ -951,6 +899,11 @@
- prev=
- continue
- ;;
-+ inst_prefix)
-+ inst_prefix_dir="$arg"
-+ prev=
-+ continue
-+ ;;
- release)
- release="-$arg"
- prev=
-@@ -958,7 +911,7 @@
- ;;
- rpath | xrpath)
- # We need an absolute path.
-- case "$arg" in
-+ case $arg in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- $echo "$modename: only absolute run-paths are allowed" 1>&2
-@@ -979,17 +932,32 @@
- prev=
- continue
- ;;
-+ xcompiler)
-+ compiler_flags="$compiler_flags $qarg"
-+ prev=
-+ compile_command="$compile_command $qarg"
-+ finalize_command="$finalize_command $qarg"
-+ continue
-+ ;;
-+ xlinker)
-+ linker_flags="$linker_flags $qarg"
-+ compiler_flags="$compiler_flags $wl$qarg"
-+ prev=
-+ compile_command="$compile_command $wl$qarg"
-+ finalize_command="$finalize_command $wl$qarg"
-+ continue
-+ ;;
- *)
- eval "$prev=\"\$arg\""
- prev=
- continue
- ;;
- esac
-- fi
-+ fi # test -n $prev
-
- prevarg="$arg"
-
-- case "$arg" in
-+ case $arg in
- -all-static)
- if test -n "$link_static_flag"; then
- compile_command="$compile_command $link_static_flag"
-@@ -1026,7 +994,7 @@
-
- -export-symbols | -export-symbols-regex)
- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-- $echo "$modename: not more than one -exported-symbols argument allowed"
-+ $echo "$modename: more than one -exported-symbols argument is not allowed"
- exit 1
- fi
- if test "X$arg" = "X-export-symbols"; then
-@@ -1037,58 +1005,81 @@
- continue
- ;;
-
-+ -inst-prefix-dir)
-+ prev=inst_prefix
-+ continue
-+ ;;
-+
-+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
-+ # so, if we see these flags be careful not to treat them like -L
-+ -L[A-Z][A-Z]*:*)
-+ case $with_gcc/$host in
-+ no/*-*-irix* | no/*-*-nonstopux*)
-+ compile_command="$compile_command $arg"
-+ finalize_command="$finalize_command $arg"
-+ ;;
-+ esac
-+ continue
-+ ;;
-+
- -L*)
- dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
- # We need an absolute path.
-- case "$dir" in
-+ case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- absdir=`cd "$dir" && pwd`
- if test -z "$absdir"; then
-- $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
-- $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
-- absdir="$dir"
-+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
-+ exit 1
- fi
- dir="$absdir"
- ;;
- esac
-- case " $deplibs " in
-- *" $arg "*) ;;
-- *) deplibs="$deplibs $arg";;
-- esac
-- case " $lib_search_path " in
-- *" $dir "*) ;;
-- *) lib_search_path="$lib_search_path $dir";;
-+ case "$deplibs " in
-+ *" -L$dir "*) ;;
-+ *)
-+ deplibs="$deplibs -L$dir"
-+ lib_search_path="$lib_search_path $dir"
-+ ;;
- esac
-- case "$host" in
-- *-*-cygwin* | *-*-mingw* | *-*-os2*)
-- dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
-- case ":$dllsearchpath:" in
-- ::) dllsearchpath="$dllsearchdir";;
-- *":$dllsearchdir:"*) ;;
-- *) dllsearchpath="$dllsearchpath:$dllsearchdir";;
-+ case $host in
-+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
-+ case :$dllsearchpath: in
-+ *":$dir:"*) ;;
-+ *) dllsearchpath="$dllsearchpath:$dir";;
- esac
- ;;
- esac
-+ continue
- ;;
-
- -l*)
-- if test "$arg" = "-lc"; then
-- case "$host" in
-- *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
-- # These systems don't actually have c library (as such)
-+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
-+ case $host in
-+ *-*-cygwin* | *-*-pw32* | *-*-beos*)
-+ # These systems don't actually have a C or math library (as such)
- continue
- ;;
-+ *-*-mingw* | *-*-os2*)
-+ # These systems don't actually have a C library (as such)
-+ test "X$arg" = "X-lc" && continue
-+ ;;
-+ *-*-openbsd* | *-*-freebsd*)
-+ # Do not include libc due to us having libc/libc_r.
-+ test "X$arg" = "X-lc" && continue
-+ ;;
- esac
-- elif test "$arg" = "-lm"; then
-- case "$host" in
-- *-*-cygwin* | *-*-beos*)
-- # These systems don't actually have math library (as such)
-+ elif test "X$arg" = "X-lc_r"; then
-+ case $host in
-+ *-*-openbsd* | *-*-freebsd*)
-+ # Do not include libc_r directly, use -pthread flag.
- continue
- ;;
- esac
- fi
- deplibs="$deplibs $arg"
-+ continue
- ;;
-
- -module)
-@@ -1096,6 +1087,25 @@
- continue
- ;;
-
-+ -no-fast-install)
-+ fast_install=no
-+ continue
-+ ;;
-+
-+ -no-install)
-+ case $host in
-+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
-+ # The PATH hackery in wrapper scripts is required on Windows
-+ # in order for the loader to find any dlls it needs.
-+ $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
-+ $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
-+ fast_install=no
-+ ;;
-+ *) no_install=yes ;;
-+ esac
-+ continue
-+ ;;
-+
- -no-undefined)
- allow_undefined=no
- continue
-@@ -1121,7 +1131,7 @@
- -R*)
- dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
- # We need an absolute path.
-- case "$dir" in
-+ case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- $echo "$modename: only absolute run-paths are allowed" 1>&2
-@@ -1136,11 +1146,11 @@
- ;;
-
- -static)
-- # If we have no pic_flag, then this is the same as -all-static.
-- if test -z "$pic_flag" && test -n "$link_static_flag"; then
-- compile_command="$compile_command $link_static_flag"
-- finalize_command="$finalize_command $link_static_flag"
-- fi
-+ # The effects of -static are defined in a previous loop.
-+ # We used to do the same as -all-static on platforms that
-+ # didn't have a PIC flag, but the assumption that the effects
-+ # would be equivalent was wrong. It would break on at least
-+ # Digital Unix and AIX.
- continue
- ;;
-
-@@ -1154,28 +1164,71 @@
- continue
- ;;
-
-+ -Wc,*)
-+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
-+ arg=
-+ save_ifs="$IFS"; IFS=','
-+ for flag in $args; do
-+ IFS="$save_ifs"
-+ case $flag in
-+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-+ flag="\"$flag\""
-+ ;;
-+ esac
-+ arg="$arg $wl$flag"
-+ compiler_flags="$compiler_flags $flag"
-+ done
-+ IFS="$save_ifs"
-+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
-+ ;;
-+
-+ -Wl,*)
-+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
-+ arg=
-+ save_ifs="$IFS"; IFS=','
-+ for flag in $args; do
-+ IFS="$save_ifs"
-+ case $flag in
-+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-+ flag="\"$flag\""
-+ ;;
-+ esac
-+ arg="$arg $wl$flag"
-+ compiler_flags="$compiler_flags $wl$flag"
-+ linker_flags="$linker_flags $flag"
-+ done
-+ IFS="$save_ifs"
-+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
-+ ;;
-+
-+ -Xcompiler)
-+ prev=xcompiler
-+ continue
-+ ;;
-+
-+ -Xlinker)
-+ prev=xlinker
-+ continue
-+ ;;
-+
- # Some other compiler flag.
- -* | +*)
- # Unknown arguments in both finalize_command and compile_command need
- # to be aesthetically quoted because they are evaled later.
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-- case "$arg" in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
-+ case $arg in
-+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- arg="\"$arg\""
- ;;
- esac
- ;;
-
-- *.o | *.obj | *.a | *.lib)
-- # A standard object.
-- objs="$objs $arg"
-- ;;
--
-- *.lo)
-- # A library object.
-+ *.lo | *.$objext)
-+ # A library or standard object.
- if test "$prev" = dlfiles; then
-- dlfiles="$dlfiles $arg"
-- if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then
-+ # This file was specified with -dlopen.
-+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-+ dlfiles="$dlfiles $arg"
- prev=
- continue
- else
-@@ -1188,357 +1241,917 @@
- # Preload the old-style object.
- dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
- prev=
-+ else
-+ case $arg in
-+ *.lo) libobjs="$libobjs $arg" ;;
-+ *) objs="$objs $arg" ;;
-+ esac
- fi
-- libobjs="$libobjs $arg"
-+ ;;
-+
-+ *.$libext)
-+ # An archive.
-+ deplibs="$deplibs $arg"
-+ old_deplibs="$old_deplibs $arg"
-+ continue
- ;;
-
- *.la)
- # A libtool-controlled library.
-
-- dlname=
-- libdir=
-- library_names=
-- old_library=
--
-- # Check to see that this really is a libtool archive.
-- if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
-+ if test "$prev" = dlfiles; then
-+ # This library was specified with -dlopen.
-+ dlfiles="$dlfiles $arg"
-+ prev=
-+ elif test "$prev" = dlprefiles; then
-+ # The library was specified with -dlpreopen.
-+ dlprefiles="$dlprefiles $arg"
-+ prev=
- else
-- $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
-- exit 1
-+ deplibs="$deplibs $arg"
- fi
-+ continue
-+ ;;
-
-- # If the library was installed with an old release of libtool,
-- # it will not redefine variable installed.
-- installed=yes
--
-- # Read the .la file
-- # If there is no directory component, then add one.
-- case "$arg" in
-- */* | *\\*) . $arg ;;
-- *) . ./$arg ;;
-+ # Some other compiler argument.
-+ *)
-+ # Unknown arguments in both finalize_command and compile_command need
-+ # to be aesthetically quoted because they are evaled later.
-+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-+ case $arg in
-+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
-+ arg="\"$arg\""
-+ ;;
- esac
-+ ;;
-+ esac # arg
-
-- # Get the name of the library we link against.
-- linklib=
-- for l in $old_library $library_names; do
-- linklib="$l"
-- done
--
-- if test -z "$linklib"; then
-- $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
-- exit 1
-- fi
--
-- # Find the relevant object directory and library name.
-- name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
--
-- if test "X$installed" = Xyes; then
-- dir="$libdir"
-- else
-- dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
-- if test "X$dir" = "X$arg"; then
-- dir="$objdir"
-- else
-- dir="$dir/$objdir"
-- fi
-- fi
-+ # Now actually substitute the argument into the commands.
-+ if test -n "$arg"; then
-+ compile_command="$compile_command $arg"
-+ finalize_command="$finalize_command $arg"
-+ fi
-+ done # argument parsing loop
-
-- if test -n "$dependency_libs"; then
-- # Extract -R and -L from dependency_libs
-- temp_deplibs=
-- for deplib in $dependency_libs; do
-- case "$deplib" in
-- -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
-- case " $rpath $xrpath " in
-- *" $temp_xrpath "*) ;;
-- *) xrpath="$xrpath $temp_xrpath";;
-- esac;;
-- -L*) case "$compile_command $temp_deplibs " in
-- *" $deplib "*) ;;
-- *) temp_deplibs="$temp_deplibs $deplib";;
-- esac
-- temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'`
-- case " $lib_search_path " in
-- *" $temp_dir "*) ;;
-- *) lib_search_path="$lib_search_path $temp_dir";;
-- esac
-- ;;
-- *) temp_deplibs="$temp_deplibs $deplib";;
-- esac
-- done
-- dependency_libs="$temp_deplibs"
-- fi
-+ if test -n "$prev"; then
-+ $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
-+ $echo "$help" 1>&2
-+ exit 1
-+ fi
-
-- if test -z "$libdir"; then
-- # It is a libtool convenience library, so add in its objects.
-- convenience="$convenience $dir/$old_library"
-- old_convenience="$old_convenience $dir/$old_library"
-- deplibs="$deplibs$dependency_libs"
-- compile_command="$compile_command $dir/$old_library$dependency_libs"
-- finalize_command="$finalize_command $dir/$old_library$dependency_libs"
-- continue
-- fi
-+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
-+ eval arg=\"$export_dynamic_flag_spec\"
-+ compile_command="$compile_command $arg"
-+ finalize_command="$finalize_command $arg"
-+ fi
-
-- # This library was specified with -dlopen.
-- if test "$prev" = dlfiles; then
-- dlfiles="$dlfiles $arg"
-- if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then
-- # If there is no dlname, no dlopen support or we're linking statically,
-- # we need to preload.
-- prev=dlprefiles
-- else
-- # We should not create a dependency on this library, but we
-- # may need any libraries it requires.
-- compile_command="$compile_command$dependency_libs"
-- finalize_command="$finalize_command$dependency_libs"
-- prev=
-- continue
-- fi
-- fi
-+ # calculate the name of the file, without its directory
-+ outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
-+ libobjs_save="$libobjs"
-
-- # The library was specified with -dlpreopen.
-- if test "$prev" = dlprefiles; then
-- # Prefer using a static library (so that no silly _DYNAMIC symbols
-- # are required to link).
-- if test -n "$old_library"; then
-- dlprefiles="$dlprefiles $dir/$old_library"
-- else
-- dlprefiles="$dlprefiles $dir/$linklib"
-- fi
-- prev=
-- fi
-+ if test -n "$shlibpath_var"; then
-+ # get the directories listed in $shlibpath_var
-+ eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
-+ else
-+ shlib_search_path=
-+ fi
-+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
-- if test -n "$library_names" &&
-- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
-- link_against_libtool_libs="$link_against_libtool_libs $arg"
-- if test -n "$shlibpath_var"; then
-- # Make sure the rpath contains only unique directories.
-- case "$temp_rpath " in
-- *" $dir "*) ;;
-- *) temp_rpath="$temp_rpath $dir" ;;
-- esac
-- fi
-+ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
-+ if test "X$output_objdir" = "X$output"; then
-+ output_objdir="$objdir"
-+ else
-+ output_objdir="$output_objdir/$objdir"
-+ fi
-+ # Create the object directory.
-+ if test ! -d $output_objdir; then
-+ $show "$mkdir $output_objdir"
-+ $run $mkdir $output_objdir
-+ status=$?
-+ if test $status -ne 0 && test ! -d $output_objdir; then
-+ exit $status
-+ fi
-+ fi
-
-- # We need an absolute path.
-- case "$dir" in
-- [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;;
-- *)
-- absdir=`cd "$dir" && pwd`
-- if test -z "$absdir"; then
-- $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
-- $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
-- absdir="$dir"
-- fi
-- ;;
-- esac
--
-- # This is the magic to use -rpath.
-- # Skip directories that are in the system default run-time
-- # search path, unless they have been requested with -R.
-- case " $sys_lib_dlsearch_path " in
-- *" $absdir "*) ;;
-- *)
-- case "$compile_rpath " in
-- *" $absdir "*) ;;
-- *) compile_rpath="$compile_rpath $absdir"
-- esac
-- ;;
-- esac
-+ # Determine the type of output
-+ case $output in
-+ "")
-+ $echo "$modename: you must specify an output file" 1>&2
-+ $echo "$help" 1>&2
-+ exit 1
-+ ;;
-+ *.$libext) linkmode=oldlib ;;
-+ *.lo | *.$objext) linkmode=obj ;;
-+ *.la) linkmode=lib ;;
-+ *) linkmode=prog ;; # Anything else should be a program.
-+ esac
-
-- case " $sys_lib_dlsearch_path " in
-- *" $libdir "*) ;;
-+ specialdeplibs=
-+ libs=
-+ # Find all interdependent deplibs by searching for libraries
-+ # that are linked more than once (e.g. -la -lb -la)
-+ for deplib in $deplibs; do
-+ if test "X$duplicate_deps" = "Xyes" ; then
-+ case "$libs " in
-+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ esac
-+ fi
-+ libs="$libs $deplib"
-+ done
-+ deplibs=
-+ newdependency_libs=
-+ newlib_search_path=
-+ need_relink=no # whether we're linking any uninstalled libtool libraries
-+ notinst_deplibs= # not-installed libtool libraries
-+ notinst_path= # paths that contain not-installed libtool libraries
-+ case $linkmode in
-+ lib)
-+ passes="conv link"
-+ for file in $dlfiles $dlprefiles; do
-+ case $file in
-+ *.la) ;;
- *)
-- case "$finalize_rpath " in
-- *" $libdir "*) ;;
-- *) finalize_rpath="$finalize_rpath $libdir"
-- esac
-+ $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
-+ exit 1
- ;;
- esac
--
-- lib_linked=yes
-- case "$hardcode_action" in
-- immediate | unsupported)
-- if test "$hardcode_direct" = no; then
-- compile_command="$compile_command $dir/$linklib"
-- deplibs="$deplibs $dir/$linklib"
-- case "$host" in
-- *-*-cygwin* | *-*-mingw* | *-*-os2*)
-- dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
-- if test -n "$dllsearchpath"; then
-- dllsearchpath="$dllsearchpath:$dllsearchdir"
-- else
-- dllsearchpath="$dllsearchdir"
-- fi
-- ;;
-- esac
-- elif test "$hardcode_minus_L" = no; then
-- case "$host" in
-- *-*-sunos*)
-- compile_shlibpath="$compile_shlibpath$dir:"
-- ;;
-- esac
-- case "$compile_command " in
-- *" -L$dir "*) ;;
-- *) compile_command="$compile_command -L$dir";;
-- esac
-- compile_command="$compile_command -l$name"
-- deplibs="$deplibs -L$dir -l$name"
-- elif test "$hardcode_shlibpath_var" = no; then
-- case ":$compile_shlibpath:" in
-- *":$dir:"*) ;;
-- *) compile_shlibpath="$compile_shlibpath$dir:";;
-- esac
-- compile_command="$compile_command -l$name"
-- deplibs="$deplibs -l$name"
-+ done
-+ ;;
-+ prog)
-+ compile_deplibs=
-+ finalize_deplibs=
-+ alldeplibs=no
-+ newdlfiles=
-+ newdlprefiles=
-+ passes="conv scan dlopen dlpreopen link"
-+ ;;
-+ *) passes="conv"
-+ ;;
-+ esac
-+ for pass in $passes; do
-+ if test $linkmode = prog; then
-+ # Determine which files to process
-+ case $pass in
-+ dlopen)
-+ libs="$dlfiles"
-+ save_deplibs="$deplibs" # Collect dlpreopened libraries
-+ deplibs=
-+ ;;
-+ dlpreopen) libs="$dlprefiles" ;;
-+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
-+ esac
-+ fi
-+ for deplib in $libs; do
-+ lib=
-+ found=no
-+ case $deplib in
-+ -l*)
-+ if test $linkmode = oldlib && test $linkmode = obj; then
-+ $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
-+ continue
-+ fi
-+ if test $pass = conv; then
-+ deplibs="$deplib $deplibs"
-+ continue
-+ fi
-+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
-+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
-+ # Search the libtool library
-+ lib="$searchdir/lib${name}.la"
-+ if test -f "$lib"; then
-+ found=yes
-+ break
-+ fi
-+ done
-+ if test "$found" != yes; then
-+ # deplib doesn't seem to be a libtool library
-+ if test "$linkmode,$pass" = "prog,link"; then
-+ compile_deplibs="$deplib $compile_deplibs"
-+ finalize_deplibs="$deplib $finalize_deplibs"
- else
-- lib_linked=no
-+ deplibs="$deplib $deplibs"
-+ test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
- fi
-+ continue
-+ fi
-+ ;; # -l
-+ -L*)
-+ case $linkmode in
-+ lib)
-+ deplibs="$deplib $deplibs"
-+ test $pass = conv && continue
-+ newdependency_libs="$deplib $newdependency_libs"
-+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
- ;;
--
-- relink)
-- if test "$hardcode_direct" = yes; then
-- compile_command="$compile_command $absdir/$linklib"
-- deplibs="$deplibs $absdir/$linklib"
-- elif test "$hardcode_minus_L" = yes; then
-- case "$compile_command " in
-- *" -L$absdir "*) ;;
-- *) compile_command="$compile_command -L$absdir";;
-- esac
-- compile_command="$compile_command -l$name"
-- deplibs="$deplibs -L$absdir -l$name"
-- elif test "$hardcode_shlibpath_var" = yes; then
-- case ":$compile_shlibpath:" in
-- *":$absdir:"*) ;;
-- *) compile_shlibpath="$compile_shlibpath$absdir:";;
-- esac
-- compile_command="$compile_command -l$name"
-- deplibs="$deplibs -l$name"
-+ prog)
-+ if test $pass = conv; then
-+ deplibs="$deplib $deplibs"
-+ continue
-+ fi
-+ if test $pass = scan; then
-+ deplibs="$deplib $deplibs"
-+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
- else
-- lib_linked=no
-+ compile_deplibs="$deplib $compile_deplibs"
-+ finalize_deplibs="$deplib $finalize_deplibs"
- fi
- ;;
--
- *)
-- lib_linked=no
-+ $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2
- ;;
-- esac
-+ esac # linkmode
-+ continue
-+ ;; # -L
-+ -R*)
-+ if test $pass = link; then
-+ dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
-+ # Make sure the xrpath contains only unique directories.
-+ case "$xrpath " in
-+ *" $dir "*) ;;
-+ *) xrpath="$xrpath $dir" ;;
-+ esac
-+ fi
-+ deplibs="$deplib $deplibs"
-+ continue
-+ ;;
-+ *.la) lib="$deplib" ;;
-+ *.$libext)
-+ if test $pass = conv; then
-+ deplibs="$deplib $deplibs"
-+ continue
-+ fi
-+ case $linkmode in
-+ lib)
-+ if test "$deplibs_check_method" != pass_all; then
-+ echo
-+ echo "*** Warning: Trying to link with static lib archive $deplib."
-+ echo "*** I have the capability to make that library automatically link in when"
-+ echo "*** you link to this library. But I can only do this if you have a"
-+ echo "*** shared version of the library, which you do not appear to have"
-+ echo "*** because the file extensions .$libext of this argument makes me believe"
-+ echo "*** that it is just a static archive that I should not used here."
-+ else
-+ echo
-+ echo "*** Warning: Linking the shared library $output against the"
-+ echo "*** static library $deplib is not portable!"
-+ deplibs="$deplib $deplibs"
-+ fi
-+ continue
-+ ;;
-+ prog)
-+ if test $pass != link; then
-+ deplibs="$deplib $deplibs"
-+ else
-+ compile_deplibs="$deplib $compile_deplibs"
-+ finalize_deplibs="$deplib $finalize_deplibs"
-+ fi
-+ continue
-+ ;;
-+ esac # linkmode
-+ ;; # *.$libext
-+ *.lo | *.$objext)
-+ if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
-+ # If there is no dlopen support or we're linking statically,
-+ # we need to preload.
-+ newdlprefiles="$newdlprefiles $deplib"
-+ compile_deplibs="$deplib $compile_deplibs"
-+ finalize_deplibs="$deplib $finalize_deplibs"
-+ else
-+ newdlfiles="$newdlfiles $deplib"
-+ fi
-+ continue
-+ ;;
-+ %DEPLIBS%)
-+ alldeplibs=yes
-+ continue
-+ ;;
-+ esac # case $deplib
-+ if test $found = yes || test -f "$lib"; then :
-+ else
-+ $echo "$modename: cannot find the library \`$lib'" 1>&2
-+ exit 1
-+ fi
-+
-+ # Check to see that this really is a libtool archive.
-+ if (${SED} -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
-+ else
-+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-+ exit 1
-+ fi
-+
-+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
-+ test "X$ladir" = "X$lib" && ladir="."
-+
-+ dlname=
-+ dlopen=
-+ dlpreopen=
-+ libdir=
-+ library_names=
-+ old_library=
-+ # If the library was installed with an old release of libtool,
-+ # it will not redefine variable installed.
-+ installed=yes
-+
-+ # Read the .la file
-+ case $lib in
-+ */* | *\\*) . $lib ;;
-+ *) . ./$lib ;;
-+ esac
-+
-+ if test "$linkmode,$pass" = "lib,link" ||
-+ test "$linkmode,$pass" = "prog,scan" ||
-+ { test $linkmode = oldlib && test $linkmode = obj; }; then
-+ # Add dl[pre]opened files of deplib
-+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
-+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
-+ fi
-
-- if test "$lib_linked" != yes; then
-- $echo "$modename: configuration error: unsupported hardcode properties"
-+ if test $pass = conv; then
-+ # Only check for convenience libraries
-+ deplibs="$lib $deplibs"
-+ if test -z "$libdir"; then
-+ if test -z "$old_library"; then
-+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
-+ exit 1
-+ fi
-+ # It is a libtool convenience library, so add in its objects.
-+ convenience="$convenience $ladir/$objdir/$old_library"
-+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
-+ tmp_libs=
-+ for deplib in $dependency_libs; do
-+ deplibs="$deplib $deplibs"
-+ if test "X$duplicate_deps" = "Xyes" ; then
-+ case "$tmp_libs " in
-+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ esac
-+ fi
-+ tmp_libs="$tmp_libs $deplib"
-+ done
-+ elif test $linkmode != prog && test $linkmode != lib; then
-+ $echo "$modename: \`$lib' is not a convenience library" 1>&2
- exit 1
- fi
-+ continue
-+ fi # $pass = conv
-
-- # Finalize command for both is simple: just hardcode it.
-- if test "$hardcode_direct" = yes; then
-- finalize_command="$finalize_command $libdir/$linklib"
-- elif test "$hardcode_minus_L" = yes; then
-- case "$finalize_command " in
-- *" -L$libdir "*) ;;
-- *) finalize_command="$finalize_command -L$libdir";;
-- esac
-- finalize_command="$finalize_command -l$name"
-- elif test "$hardcode_shlibpath_var" = yes; then
-- case ":$finalize_shlibpath:" in
-- *":$libdir:"*) ;;
-- *) finalize_shlibpath="$finalize_shlibpath$libdir:";;
-- esac
-- finalize_command="$finalize_command -l$name"
-+ # Get the name of the library we link against.
-+ linklib=
-+ for l in $old_library $library_names; do
-+ linklib="$l"
-+ done
-+ if test -z "$linklib"; then
-+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
-+ exit 1
-+ fi
-+
-+ # This library was specified with -dlopen.
-+ if test $pass = dlopen; then
-+ if test -z "$libdir"; then
-+ $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
-+ exit 1
-+ fi
-+ if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
-+ # If there is no dlname, no dlopen support or we're linking
-+ # statically, we need to preload.
-+ dlprefiles="$dlprefiles $lib"
- else
-- # We cannot seem to hardcode it, guess we'll fake it.
-- case "$finalize_command " in
-- *" -L$dir "*) ;;
-- *) finalize_command="$finalize_command -L$libdir";;
-- esac
-- finalize_command="$finalize_command -l$name"
-+ newdlfiles="$newdlfiles $lib"
-+ fi
-+ continue
-+ fi # $pass = dlopen
-+
-+ # We need an absolute path.
-+ case $ladir in
-+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
-+ *)
-+ abs_ladir=`cd "$ladir" && pwd`
-+ if test -z "$abs_ladir"; then
-+ $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
-+ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
-+ abs_ladir="$ladir"
-+ fi
-+ ;;
-+ esac
-+ laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
-+
-+ # Find the relevant object directory and library name.
-+ if test "X$installed" = Xyes; then
-+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-+ $echo "$modename: warning: library \`$lib' was moved." 1>&2
-+ dir="$ladir"
-+ absdir="$abs_ladir"
-+ libdir="$abs_ladir"
-+ else
-+ dir="$libdir"
-+ absdir="$libdir"
- fi
- else
-- # Transform directly to old archives if we don't build new libraries.
-- if test -n "$pic_flag" && test -z "$old_library"; then
-- $echo "$modename: cannot find static library for \`$arg'" 1>&2
-+ dir="$ladir/$objdir"
-+ absdir="$abs_ladir/$objdir"
-+ # Remove this search path later
-+ notinst_path="$notinst_path $abs_ladir"
-+ fi # $installed = yes
-+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
-+
-+ # This library was specified with -dlpreopen.
-+ if test $pass = dlpreopen; then
-+ if test -z "$libdir"; then
-+ $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
- exit 1
- fi
-+ # Prefer using a static library (so that no silly _DYNAMIC symbols
-+ # are required to link).
-+ if test -n "$old_library"; then
-+ newdlprefiles="$newdlprefiles $dir/$old_library"
-+ # Otherwise, use the dlname, so that lt_dlopen finds it.
-+ elif test -n "$dlname"; then
-+ newdlprefiles="$newdlprefiles $dir/$dlname"
-+ else
-+ newdlprefiles="$newdlprefiles $dir/$linklib"
-+ fi
-+ fi # $pass = dlpreopen
-
-- # Here we assume that one of hardcode_direct or hardcode_minus_L
-- # is not unsupported. This is valid on all known static and
-- # shared platforms.
-- if test "$hardcode_direct" != unsupported; then
-- test -n "$old_library" && linklib="$old_library"
-- compile_command="$compile_command $dir/$linklib"
-- finalize_command="$finalize_command $dir/$linklib"
-+ if test -z "$libdir"; then
-+ # Link the convenience library
-+ if test $linkmode = lib; then
-+ deplibs="$dir/$old_library $deplibs"
-+ elif test "$linkmode,$pass" = "prog,link"; then
-+ compile_deplibs="$dir/$old_library $compile_deplibs"
-+ finalize_deplibs="$dir/$old_library $finalize_deplibs"
- else
-- case "$compile_command " in
-- *" -L$dir "*) ;;
-- *) compile_command="$compile_command -L$dir";;
-+ deplibs="$lib $deplibs"
-+ fi
-+ continue
-+ fi
-+
-+ if test $linkmode = prog && test $pass != link; then
-+ newlib_search_path="$newlib_search_path $ladir"
-+ deplibs="$lib $deplibs"
-+
-+ linkalldeplibs=no
-+ if test "$link_all_deplibs" != no || test -z "$library_names" ||
-+ test "$build_libtool_libs" = no; then
-+ linkalldeplibs=yes
-+ fi
-+
-+ tmp_libs=
-+ for deplib in $dependency_libs; do
-+ case $deplib in
-+ -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
- esac
-- compile_command="$compile_command -l$name"
-- case "$finalize_command " in
-- *" -L$dir "*) ;;
-- *) finalize_command="$finalize_command -L$dir";;
-+ # Need to link against all dependency_libs?
-+ if test $linkalldeplibs = yes; then
-+ deplibs="$deplib $deplibs"
-+ else
-+ # Need to hardcode shared library paths
-+ # or/and link against static libraries
-+ newdependency_libs="$deplib $newdependency_libs"
-+ fi
-+ if test "X$duplicate_deps" = "Xyes" ; then
-+ case "$tmp_libs " in
-+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ esac
-+ fi
-+ tmp_libs="$tmp_libs $deplib"
-+ done # for deplib
-+ continue
-+ fi # $linkmode = prog...
-+
-+ link_static=no # Whether the deplib will be linked statically
-+ if test -n "$library_names" &&
-+ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
-+ # Link against this shared library
-+
-+ if test "$linkmode,$pass" = "prog,link" ||
-+ { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
-+ # Hardcode the library path.
-+ # Skip directories that are in the system default run-time
-+ # search path.
-+ case " $sys_lib_dlsearch_path " in
-+ *" $absdir "*) ;;
-+ *)
-+ case "$compile_rpath " in
-+ *" $absdir "*) ;;
-+ *) compile_rpath="$compile_rpath $absdir"
-+ esac
-+ ;;
- esac
-- finalize_command="$finalize_command -l$name"
-+ case " $sys_lib_dlsearch_path " in
-+ *" $libdir "*) ;;
-+ *)
-+ case "$finalize_rpath " in
-+ *" $libdir "*) ;;
-+ *) finalize_rpath="$finalize_rpath $libdir"
-+ esac
-+ ;;
-+ esac
-+ if test $linkmode = prog; then
-+ # We need to hardcode the library path
-+ if test -n "$shlibpath_var"; then
-+ # Make sure the rpath contains only unique directories.
-+ case "$temp_rpath " in
-+ *" $dir "*) ;;
-+ *" $absdir "*) ;;
-+ *) temp_rpath="$temp_rpath $dir" ;;
-+ esac
-+ fi
-+ fi
-+ fi # $linkmode,$pass = prog,link...
-+
-+ if test "$alldeplibs" = yes &&
-+ { test "$deplibs_check_method" = pass_all ||
-+ { test "$build_libtool_libs" = yes &&
-+ test -n "$library_names"; }; }; then
-+ # We only need to search for static libraries
-+ continue
- fi
-- fi
-
-- # Add in any libraries that this one depends upon.
-- compile_command="$compile_command$dependency_libs"
-- finalize_command="$finalize_command$dependency_libs"
-- continue
-- ;;
-+ if test "$installed" = no; then
-+ notinst_deplibs="$notinst_deplibs $lib"
-+ need_relink=yes
-+ fi
-+
-+ if test -n "$old_archive_from_expsyms_cmds"; then
-+ # figure out the soname
-+ set dummy $library_names
-+ realname="$2"
-+ shift; shift
-+ libname=`eval \\$echo \"$libname_spec\"`
-+ # use dlname if we got it. it's perfectly good, no?
-+ if test -n "$dlname"; then
-+ soname="$dlname"
-+ elif test -n "$soname_spec"; then
-+ # bleh windows
-+ case $host in
-+ *cygwin*)
-+ major=`expr $current - $age`
-+ versuffix="-$major"
-+ ;;
-+ esac
-+ eval soname=\"$soname_spec\"
-+ else
-+ soname="$realname"
-+ fi
-
-- # Some other compiler argument.
-- *)
-- # Unknown arguments in both finalize_command and compile_command need
-- # to be aesthetically quoted because they are evaled later.
-- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-- case "$arg" in
-- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
-- arg="\"$arg\""
-- ;;
-- esac
-- ;;
-- esac
-+ # Make a new name for the extract_expsyms_cmds to use
-+ soroot="$soname"
-+ soname=`echo $soroot | ${SED} -e 's/^.*\///'`
-+ newlib="libimp-`echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
-
-- # Now actually substitute the argument into the commands.
-- if test -n "$arg"; then
-- compile_command="$compile_command $arg"
-- finalize_command="$finalize_command $arg"
-- fi
-- done
-+ # If the library has no export list, then create one now
-+ if test -f "$output_objdir/$soname-def"; then :
-+ else
-+ $show "extracting exported symbol list from \`$soname'"
-+ save_ifs="$IFS"; IFS='~'
-+ eval cmds=\"$extract_expsyms_cmds\"
-+ for cmd in $cmds; do
-+ IFS="$save_ifs"
-+ $show "$cmd"
-+ $run eval "$cmd" || exit $?
-+ done
-+ IFS="$save_ifs"
-+ fi
-
-- if test -n "$prev"; then
-- $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- fi
-+ # Create $newlib
-+ if test -f "$output_objdir/$newlib"; then :; else
-+ $show "generating import library for \`$soname'"
-+ save_ifs="$IFS"; IFS='~'
-+ eval cmds=\"$old_archive_from_expsyms_cmds\"
-+ for cmd in $cmds; do
-+ IFS="$save_ifs"
-+ $show "$cmd"
-+ $run eval "$cmd" || exit $?
-+ done
-+ IFS="$save_ifs"
-+ fi
-+ # make sure the library variables are pointing to the new library
-+ dir=$output_objdir
-+ linklib=$newlib
-+ fi # test -n $old_archive_from_expsyms_cmds
-+
-+ if test $linkmode = prog || test "$mode" != relink; then
-+ add_shlibpath=
-+ add_dir=
-+ add=
-+ lib_linked=yes
-+ case $hardcode_action in
-+ immediate | unsupported)
-+ if test "$hardcode_direct" = no; then
-+ add="$dir/$linklib"
-+ elif test "$hardcode_minus_L" = no; then
-+ case $host in
-+ *-*-sunos*) add_shlibpath="$dir" ;;
-+ esac
-+ add_dir="-L$dir"
-+ add="-l$name"
-+ elif test "$hardcode_shlibpath_var" = no; then
-+ add_shlibpath="$dir"
-+ add="-l$name"
-+ else
-+ lib_linked=no
-+ fi
-+ ;;
-+ relink)
-+ if test "$hardcode_direct" = yes; then
-+ add="$dir/$linklib"
-+ elif test "$hardcode_minus_L" = yes; then
-+ add_dir="-L$dir"
-+ # Try looking first in the location we're being installed to.
-+ if test -n "$inst_prefix_dir"; then
-+ case "$libdir" in
-+ [\/]*)
-+ add_dir="-L$inst_prefix_dir$libdir $add_dir"
-+ ;;
-+ esac
-+ fi
-+ add="-l$name"
-+ elif test "$hardcode_shlibpath_var" = yes; then
-+ add_shlibpath="$dir"
-+ add="-l$name"
-+ else
-+ lib_linked=no
-+ fi
-+ ;;
-+ *) lib_linked=no ;;
-+ esac
-
-- if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
-- eval arg=\"$export_dynamic_flag_spec\"
-- compile_command="$compile_command $arg"
-- finalize_command="$finalize_command $arg"
-- fi
-+ if test "$lib_linked" != yes; then
-+ $echo "$modename: configuration error: unsupported hardcode properties"
-+ exit 1
-+ fi
-
-- oldlibs=
-- # calculate the name of the file, without its directory
-- outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
-- libobjs_save="$libobjs"
-+ if test -n "$add_shlibpath"; then
-+ case :$compile_shlibpath: in
-+ *":$add_shlibpath:"*) ;;
-+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
-+ esac
-+ fi
-+ if test $linkmode = prog; then
-+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
-+ test -n "$add" && compile_deplibs="$add $compile_deplibs"
-+ else
-+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
-+ test -n "$add" && deplibs="$add $deplibs"
-+ if test "$hardcode_direct" != yes && \
-+ test "$hardcode_minus_L" != yes && \
-+ test "$hardcode_shlibpath_var" = yes; then
-+ case :$finalize_shlibpath: in
-+ *":$libdir:"*) ;;
-+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-+ esac
-+ fi
-+ fi
-+ fi
-
-- case "$output" in
-- "")
-- $echo "$modename: you must specify an output file" 1>&2
-- $echo "$help" 1>&2
-- exit 1
-- ;;
-+ if test $linkmode = prog || test "$mode" = relink; then
-+ add_shlibpath=
-+ add_dir=
-+ add=
-+ # Finalize command for both is simple: just hardcode it.
-+ if test "$hardcode_direct" = yes; then
-+ add="$libdir/$linklib"
-+ elif test "$hardcode_minus_L" = yes; then
-+ add_dir="-L$libdir"
-+ add="-l$name"
-+ elif test "$hardcode_shlibpath_var" = yes; then
-+ case :$finalize_shlibpath: in
-+ *":$libdir:"*) ;;
-+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-+ esac
-+ add="-l$name"
-+ else
-+ # We cannot seem to hardcode it, guess we'll fake it.
-+ add_dir="-L$libdir"
-+ # Try looking first in the location we're being installed to.
-+ if test -n "$inst_prefix_dir"; then
-+ case "$libdir" in
-+ [\/]*)
-+ add_dir="-L$inst_prefix_dir$libdir $add_dir"
-+ ;;
-+ esac
-+ fi
-+ add="-l$name"
-+ fi
-
-- *.a | *.lib)
-- if test -n "$link_against_libtool_libs"; then
-- $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
-- exit 1
-+ if test $linkmode = prog; then
-+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
-+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
-+ else
-+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
-+ test -n "$add" && deplibs="$add $deplibs"
-+ fi
-+ fi
-+ elif test $linkmode = prog; then
-+ if test "$alldeplibs" = yes &&
-+ { test "$deplibs_check_method" = pass_all ||
-+ { test "$build_libtool_libs" = yes &&
-+ test -n "$library_names"; }; }; then
-+ # We only need to search for static libraries
-+ continue
-+ fi
-+
-+ # Try to link the static library
-+ # Here we assume that one of hardcode_direct or hardcode_minus_L
-+ # is not unsupported. This is valid on all known static and
-+ # shared platforms.
-+ if test "$hardcode_direct" != unsupported; then
-+ test -n "$old_library" && linklib="$old_library"
-+ compile_deplibs="$dir/$linklib $compile_deplibs"
-+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
-+ else
-+ compile_deplibs="-l$name -L$dir $compile_deplibs"
-+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
-+ fi
-+ elif test "$build_libtool_libs" = yes; then
-+ # Not a shared library
-+ if test "$deplibs_check_method" != pass_all; then
-+ # We're trying link a shared library against a static one
-+ # but the system doesn't support it.
-+
-+ # Just print a warning and add the library to dependency_libs so
-+ # that the program can be linked against the static library.
-+ echo
-+ echo "*** Warning: This system can not link to static lib archive $lib."
-+ echo "*** I have the capability to make that library automatically link in when"
-+ echo "*** you link to this library. But I can only do this if you have a"
-+ echo "*** shared version of the library, which you do not appear to have."
-+ if test "$module" = yes; then
-+ echo "*** But as you try to build a module library, libtool will still create "
-+ echo "*** a static module, that should work as long as the dlopening application"
-+ echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
-+ if test -z "$global_symbol_pipe"; then
-+ echo
-+ echo "*** However, this would only work if libtool was able to extract symbol"
-+ echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-+ echo "*** not find such a program. So, this module is probably useless."
-+ echo "*** \`nm' from GNU binutils and a full rebuild may help."
-+ fi
-+ if test "$build_old_libs" = no; then
-+ build_libtool_libs=module
-+ build_old_libs=yes
-+ else
-+ build_libtool_libs=no
-+ fi
-+ fi
-+ else
-+ convenience="$convenience $dir/$old_library"
-+ old_convenience="$old_convenience $dir/$old_library"
-+ deplibs="$dir/$old_library $deplibs"
-+ link_static=yes
-+ fi
-+ fi # link shared/static library?
-+
-+ if test $linkmode = lib; then
-+ if test -n "$dependency_libs" &&
-+ { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
-+ test $link_static = yes; }; then
-+ # Extract -R from dependency_libs
-+ temp_deplibs=
-+ for libdir in $dependency_libs; do
-+ case $libdir in
-+ -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
-+ case " $xrpath " in
-+ *" $temp_xrpath "*) ;;
-+ *) xrpath="$xrpath $temp_xrpath";;
-+ esac;;
-+ *) temp_deplibs="$temp_deplibs $libdir";;
-+ esac
-+ done
-+ dependency_libs="$temp_deplibs"
-+ fi
-+
-+ newlib_search_path="$newlib_search_path $absdir"
-+ # Link against this library
-+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
-+ # ... and its dependency_libs
-+ tmp_libs=
-+ for deplib in $dependency_libs; do
-+ newdependency_libs="$deplib $newdependency_libs"
-+ if test "X$duplicate_deps" = "Xyes" ; then
-+ case "$tmp_libs " in
-+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ esac
-+ fi
-+ tmp_libs="$tmp_libs $deplib"
-+ done
-+
-+ if test $link_all_deplibs != no; then
-+ # Add the search paths of all dependency libraries
-+ for deplib in $dependency_libs; do
-+ case $deplib in
-+ -L*) path="$deplib" ;;
-+ *.la)
-+ dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
-+ test "X$dir" = "X$deplib" && dir="."
-+ # We need an absolute path.
-+ case $dir in
-+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
-+ *)
-+ absdir=`cd "$dir" && pwd`
-+ if test -z "$absdir"; then
-+ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
-+ absdir="$dir"
-+ fi
-+ ;;
-+ esac
-+ if grep "^installed=no" $deplib > /dev/null; then
-+ path="-L$absdir/$objdir"
-+ else
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-+ if test -z "$libdir"; then
-+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
-+ exit 1
-+ fi
-+ if test "$absdir" != "$libdir"; then
-+ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
-+ fi
-+ path="-L$absdir"
-+ fi
-+ ;;
-+ *) continue ;;
-+ esac
-+ case " $deplibs " in
-+ *" $path "*) ;;
-+ *) deplibs="$deplibs $path" ;;
-+ esac
-+ done
-+ fi # link_all_deplibs != no
-+ fi # linkmode = lib
-+ done # for deplib in $libs
-+ if test $pass = dlpreopen; then
-+ # Link the dlpreopened libraries before other libraries
-+ for deplib in $save_deplibs; do
-+ deplibs="$deplib $deplibs"
-+ done
- fi
-+ if test $pass != dlopen; then
-+ test $pass != scan && dependency_libs="$newdependency_libs"
-+ if test $pass != conv; then
-+ # Make sure lib_search_path contains only unique directories.
-+ lib_search_path=
-+ for dir in $newlib_search_path; do
-+ case "$lib_search_path " in
-+ *" $dir "*) ;;
-+ *) lib_search_path="$lib_search_path $dir" ;;
-+ esac
-+ done
-+ newlib_search_path=
-+ fi
-
-- if test -n "$deplibs"; then
-- $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
-+ if test "$linkmode,$pass" != "prog,link"; then
-+ vars="deplibs"
-+ else
-+ vars="compile_deplibs finalize_deplibs"
-+ fi
-+ for var in $vars dependency_libs; do
-+ # Add libraries to $var in reverse order
-+ eval tmp_libs=\"\$$var\"
-+ new_libs=
-+ for deplib in $tmp_libs; do
-+ case $deplib in
-+ -L*) new_libs="$deplib $new_libs" ;;
-+ *)
-+ case " $specialdeplibs " in
-+ *" $deplib "*) new_libs="$deplib $new_libs" ;;
-+ *)
-+ case " $new_libs " in
-+ *" $deplib "*) ;;
-+ *) new_libs="$deplib $new_libs" ;;
-+ esac
-+ ;;
-+ esac
-+ ;;
-+ esac
-+ done
-+ tmp_libs=
-+ for deplib in $new_libs; do
-+ case $deplib in
-+ -L*)
-+ case " $tmp_libs " in
-+ *" $deplib "*) ;;
-+ *) tmp_libs="$tmp_libs $deplib" ;;
-+ esac
-+ ;;
-+ *) tmp_libs="$tmp_libs $deplib" ;;
-+ esac
-+ done
-+ eval $var=\"$tmp_libs\"
-+ done # for var
- fi
-+ if test "$pass" = "conv" &&
-+ { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then
-+ libs="$deplibs" # reset libs
-+ deplibs=
-+ fi
-+ done # for pass
-+ if test $linkmode = prog; then
-+ dlfiles="$newdlfiles"
-+ dlprefiles="$newdlprefiles"
-+ fi
-
-+ case $linkmode in
-+ oldlib)
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
- fi
-@@ -1566,11 +2179,12 @@
- # Now set the variables for building old libraries.
- build_libtool_libs=no
- oldlibs="$output"
-+ objs="$objs$old_deplibs"
- ;;
-
-- *.la)
-+ lib)
- # Make sure we only generate libraries of the form `libNAME.la'.
-- case "$outputname" in
-+ case $outputname in
- lib*)
- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
- eval libname=\"$libname_spec\"
-@@ -1591,26 +2205,20 @@
- ;;
- esac
-
-- output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
-- if test "X$output_objdir" = "X$output"; then
-- output_objdir="$objdir"
-- else
-- output_objdir="$output_objdir/$objdir"
-- fi
--
- if test -n "$objs"; then
-- $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
-- exit 1
-- fi
--
-- # How the heck are we supposed to write a wrapper for a shared library?
-- if test -n "$link_against_libtool_libs"; then
-- $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2
-- exit 1
-+ if test "$deplibs_check_method" != pass_all; then
-+ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
-+ exit 1
-+ else
-+ echo
-+ echo "*** Warning: Linking the shared library $output against the non-libtool"
-+ echo "*** objects $objs is not portable!"
-+ libobjs="$libobjs $objs"
-+ fi
- fi
-
-- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-- $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
-+ if test "$dlself" != no; then
-+ $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
- fi
-
- set dummy $rpath
-@@ -1628,7 +2236,6 @@
- build_libtool_libs=convenience
- build_old_libs=yes
- fi
-- dependency_libs="$deplibs"
-
- if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
-@@ -1640,7 +2247,7 @@
- else
-
- # Parse the version information argument.
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
-+ save_ifs="$IFS"; IFS=':'
- set dummy $vinfo 0 0 0
- IFS="$save_ifs"
-
-@@ -1655,8 +2262,8 @@
- age="$4"
-
- # Check that each of the things are valid numbers.
-- case "$current" in
-- 0 | [1-9] | [1-9][0-9]*) ;;
-+ case $current in
-+ 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
- *)
- $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-@@ -1664,8 +2271,8 @@
- ;;
- esac
-
-- case "$revision" in
-- 0 | [1-9] | [1-9][0-9]*) ;;
-+ case $revision in
-+ 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
- *)
- $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-@@ -1673,8 +2280,8 @@
- ;;
- esac
-
-- case "$age" in
-- 0 | [1-9] | [1-9][0-9]*) ;;
-+ case $age in
-+ 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
- *)
- $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-@@ -1692,21 +2299,49 @@
- major=
- versuffix=
- verstring=
-- case "$version_type" in
-+ case $version_type in
- none) ;;
-
-- irix)
-+ darwin)
-+ # Like Linux, but with the current version available in
-+ # verstring for coding it into the library header
-+ major=.`expr $current - $age`
-+ versuffix="$major.$age.$revision"
-+ # Darwin ld doesn't like 0 for these options...
-+ minor_current=`expr $current + 1`
-+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-+ ;;
-+
-+ freebsd-aout)
-+ major=".$current"
-+ versuffix=".$current.$revision";
-+ ;;
-+
-+ freebsd-elf)
-+ major=".$current"
-+ versuffix=".$current";
-+ ;;
-+
-+ irix | nonstopux)
- major=`expr $current - $age + 1`
-- versuffix="$major.$revision"
-- verstring="sgi$major.$revision"
-+
-+ case $version_type in
-+ nonstopux) verstring_prefix=nonstopux ;;
-+ *) verstring_prefix=sgi ;;
-+ esac
-+ verstring="$verstring_prefix$major.$revision"
-
- # Add in all the interfaces that we are compatible with.
- loop=$revision
- while test $loop != 0; do
- iface=`expr $revision - $loop`
- loop=`expr $loop - 1`
-- verstring="sgi$major.$iface:$verstring"
-+ verstring="$verstring_prefix$major.$iface:$verstring"
- done
-+
-+ # Before this point, $major must not contain `.'.
-+ major=.$major
-+ versuffix="$major.$revision"
- ;;
-
- linux)
-@@ -1715,7 +2350,7 @@
- ;;
-
- osf)
-- major=`expr $current - $age`
-+ major=.`expr $current - $age`
- versuffix=".$current.$age.$revision"
- verstring="$current.$age.$revision"
-
-@@ -1736,21 +2371,11 @@
- versuffix=".$current.$revision"
- ;;
-
-- freebsd-aout)
-- major=".$current"
-- versuffix=".$current.$revision";
-- ;;
--
-- freebsd-elf)
-- major=".$current"
-- versuffix=".$current";
-- ;;
--
- windows)
-- # Like Linux, but with '-' rather than '.', since we only
-- # want one extension on Windows 95.
-+ # Use '-' rather than '.', since we only want one
-+ # extension on DOS 8.3 filesystems.
- major=`expr $current - $age`
-- versuffix="-$major-$age-$revision"
-+ versuffix="-$major"
- ;;
-
- *)
-@@ -1764,6 +2389,16 @@
- if test -z "$vinfo" && test -n "$release"; then
- major=
- verstring="0.0"
-+ case $version_type in
-+ darwin)
-+ # we can't check for "0.0" in archive_cmds due to quoting
-+ # problems, so we reset it completely
-+ verstring=""
-+ ;;
-+ *)
-+ verstring="0.0"
-+ ;;
-+ esac
- if test "$need_version" = no; then
- versuffix=
- else
-@@ -1777,7 +2412,7 @@
- versuffix=
- verstring=""
- fi
--
-+
- # Check to see if the archive will have undefined symbols.
- if test "$allow_undefined" = yes; then
- if test "$allow_undefined_flag" = unsupported; then
-@@ -1785,34 +2420,16 @@
- build_libtool_libs=no
- build_old_libs=yes
- fi
-- else
-- # Don't allow undefined symbols.
-- allow_undefined_flag="$no_undefined_flag"
-- fi
--
-- dependency_libs="$deplibs"
-- case "$host" in
-- *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
-- # these systems don't actually have a c library (as such)!
-- ;;
-- *)
-- # Add libc to deplibs on all other systems.
-- deplibs="$deplibs -lc"
-- ;;
-- esac
-+ else
-+ # Don't allow undefined symbols.
-+ allow_undefined_flag="$no_undefined_flag"
-+ fi
- fi
-
-- # Create the output directory, or remove our outputs if we need to.
-- if test -d $output_objdir; then
-+ if test "$mode" != relink; then
-+ # Remove our outputs.
- $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
- $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
-- else
-- $show "$mkdir $output_objdir"
-- $run $mkdir $output_objdir
-- status=$?
-- if test $status -ne 0 && test ! -d $output_objdir; then
-- exit $status
-- fi
- fi
-
- # Now set the variables for building old libraries.
-@@ -1823,7 +2440,73 @@
- oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
- fi
-
-+ # Eliminate all temporary directories.
-+ for path in $notinst_path; do
-+ lib_search_path=`echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
-+ deplibs=`echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
-+ dependency_libs=`echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
-+ done
-+
-+ if test -n "$xrpath"; then
-+ # If the user specified any rpath flags, then add them.
-+ temp_xrpath=
-+ for libdir in $xrpath; do
-+ temp_xrpath="$temp_xrpath -R$libdir"
-+ case "$finalize_rpath " in
-+ *" $libdir "*) ;;
-+ *) finalize_rpath="$finalize_rpath $libdir" ;;
-+ esac
-+ done
-+ if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
-+ dependency_libs="$temp_xrpath $dependency_libs"
-+ fi
-+ fi
-+
-+ # Make sure dlfiles contains only unique files that won't be dlpreopened
-+ old_dlfiles="$dlfiles"
-+ dlfiles=
-+ for lib in $old_dlfiles; do
-+ case " $dlprefiles $dlfiles " in
-+ *" $lib "*) ;;
-+ *) dlfiles="$dlfiles $lib" ;;
-+ esac
-+ done
-+
-+ # Make sure dlprefiles contains only unique files
-+ old_dlprefiles="$dlprefiles"
-+ dlprefiles=
-+ for lib in $old_dlprefiles; do
-+ case "$dlprefiles " in
-+ *" $lib "*) ;;
-+ *) dlprefiles="$dlprefiles $lib" ;;
-+ esac
-+ done
-+
- if test "$build_libtool_libs" = yes; then
-+ if test -n "$rpath"; then
-+ case $host in
-+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
-+ # these systems don't actually have a c library (as such)!
-+ ;;
-+ *-*-rhapsody* | *-*-darwin1.[012])
-+ # Rhapsody C library is in the System framework
-+ deplibs="$deplibs -framework System"
-+ ;;
-+ *-*-netbsd*)
-+ # Don't link with libc until the a.out ld.so is fixed.
-+ ;;
-+ *-*-openbsd* | *-*-freebsd*)
-+ # Do not include libc due to us having libc/libc_r.
-+ ;;
-+ *)
-+ # Add libc to deplibs on all other systems if necessary.
-+ if test $build_libtool_need_lc = "yes"; then
-+ deplibs="$deplibs -lc"
-+ fi
-+ ;;
-+ esac
-+ fi
-+
- # Transform deplibs into only deplibs that can be linked in shared.
- name_save=$name
- libname_save=$libname
-@@ -1838,7 +2521,7 @@
- major=""
- newdeplibs=
- droppeddeps=no
-- case "$deplibs_check_method" in
-+ case $deplibs_check_method in
- pass_all)
- # Don't check for shared/static. Everything works.
- # This might be a little naive. We might want to check
-@@ -1863,7 +2546,7 @@
- for i in $deplibs; do
- name="`expr $i : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
-- if test "$name" != "" ; then
-+ if test -n "$name" && test "$name" != "0"; then
- libname=`eval \\$echo \"$libname_spec\"`
- deplib_matches=`eval \\$echo \"$library_names_spec\"`
- set dummy $deplib_matches
-@@ -1873,22 +2556,24 @@
- else
- droppeddeps=yes
- echo
-- echo "*** Warning: This library needs some functionality provided by $i."
-+ echo "*** Warning: dynamic linker does not accept needed library $i."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
-- echo "*** shared version of the library, which you do not appear to have."
-+ echo "*** shared version of the library, which I believe you do not have"
-+ echo "*** because a test_compile did reveal that the linker did not use it for"
-+ echo "*** its dynamic dependency list that programs get resolved with at runtime."
- fi
- else
- newdeplibs="$newdeplibs $i"
- fi
- done
- else
-- # Error occured in the first compile. Let's try to salvage the situation:
-- # Compile a seperate program for each library.
-+ # Error occured in the first compile. Let's try to salvage
-+ # the situation: Compile a separate program for each library.
- for i in $deplibs; do
- name="`expr $i : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
-- if test "$name" != "" ; then
-+ if test -n "$name" && test "$name" != "0"; then
- $rm conftest
- $CC -o conftest conftest.c $i
- # Did it work?
-@@ -1903,10 +2588,12 @@
- else
- droppeddeps=yes
- echo
-- echo "*** Warning: This library needs some functionality provided by $i."
-+ echo "*** Warning: dynamic linker does not accept needed library $i."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
-- echo "*** shared version of the library, which you do not appear to have."
-+ echo "*** shared version of the library, which you do not appear to have"
-+ echo "*** because a test_compile did reveal that the linker did not use this one"
-+ echo "*** as a dynamic dependency that programs can get resolved with at runtime."
- fi
- else
- droppeddeps=yes
-@@ -1924,19 +2611,19 @@
- ;;
- file_magic*)
- set dummy $deplibs_check_method
-- file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`"
-+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
- for a_deplib in $deplibs; do
- name="`expr $a_deplib : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
-- if test "$name" != "" ; then
-+ if test -n "$name" && test "$name" != "0"; then
- libname=`eval \\$echo \"$libname_spec\"`
-- for i in $lib_search_path; do
-+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
- potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
- for potent_lib in $potential_libs; do
- # Follow soft links.
- if ls -lLd "$potent_lib" 2>/dev/null \
- | grep " -> " >/dev/null; then
-- continue
-+ continue
- fi
- # The statement above tries to avoid entering an
- # endless loop below, in case of cyclic links.
-@@ -1945,14 +2632,14 @@
- # but so what?
- potlib="$potent_lib"
- while test -h "$potlib" 2>/dev/null; do
-- potliblink=`ls -ld $potlib | sed 's/.* -> //'`
-- case "$potliblink" in
-+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
-+ case $potliblink in
- [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
- *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
- esac
- done
- if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
-- | sed 10q \
-+ | ${SED} 10q \
- | egrep "$file_magic_regex" > /dev/null; then
- newdeplibs="$newdeplibs $a_deplib"
- a_deplib=""
-@@ -1963,10 +2650,59 @@
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- echo
-- echo "*** Warning: This library needs some functionality provided by $a_deplib."
-+ echo "*** Warning: linker path does not have real file for library $a_deplib."
-+ echo "*** I have the capability to make that library automatically link in when"
-+ echo "*** you link to this library. But I can only do this if you have a"
-+ echo "*** shared version of the library, which you do not appear to have"
-+ echo "*** because I did check the linker path looking for a file starting"
-+ if test -z "$potlib" ; then
-+ echo "*** with $libname but no candidates were found. (...for file magic test)"
-+ else
-+ echo "*** with $libname and none of the candidates passed a file format test"
-+ echo "*** using a file magic. Last file checked: $potlib"
-+ fi
-+ fi
-+ else
-+ # Add a -L argument.
-+ newdeplibs="$newdeplibs $a_deplib"
-+ fi
-+ done # Gone through all deplibs.
-+ ;;
-+ match_pattern*)
-+ set dummy $deplibs_check_method
-+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
-+ for a_deplib in $deplibs; do
-+ name="`expr $a_deplib : '-l\(.*\)'`"
-+ # If $name is empty we are operating on a -L argument.
-+ if test -n "$name" && test "$name" != "0"; then
-+ libname=`eval \\$echo \"$libname_spec\"`
-+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-+ for potent_lib in $potential_libs; do
-+ potlib="$potent_lib" # see symlink-check below in file_magic test
-+ if eval echo \"$potent_lib\" 2>/dev/null \
-+ | ${SED} 10q \
-+ | egrep "$match_pattern_regex" > /dev/null; then
-+ newdeplibs="$newdeplibs $a_deplib"
-+ a_deplib=""
-+ break 2
-+ fi
-+ done
-+ done
-+ if test -n "$a_deplib" ; then
-+ droppeddeps=yes
-+ echo
-+ echo "*** Warning: linker path does not have real file for library $a_deplib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
-- echo "*** shared version of the library, which you do not appear to have."
-+ echo "*** shared version of the library, which you do not appear to have"
-+ echo "*** because I did check the linker path looking for a file starting"
-+ if test -z "$potlib" ; then
-+ echo "*** with $libname but no candidates were found. (...for regex pattern test)"
-+ else
-+ echo "*** with $libname and none of the candidates passed a file format test"
-+ echo "*** using a regex pattern. Last file checked: $potlib"
-+ fi
- fi
- else
- # Add a -L argument.
-@@ -1996,6 +2732,13 @@
- libname=$libname_save
- name=$name_save
-
-+ case $host in
-+ *-*-rhapsody* | *-*-darwin1.[012])
-+ # On Rhapsody replace the C library is the System framework
-+ newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
-+ ;;
-+ esac
-+
- if test "$droppeddeps" = yes; then
- if test "$module" = yes; then
- echo
-@@ -2021,6 +2764,21 @@
- echo "*** The inter-library dependencies that have been dropped here will be"
- echo "*** automatically added whenever a program is linked with this library"
- echo "*** or is declared to -dlopen it."
-+
-+ if test $allow_undefined = no; then
-+ echo
-+ echo "*** Since this library must not contain undefined symbols,"
-+ echo "*** because either the platform does not support them or"
-+ echo "*** it was explicitly requested with -no-undefined,"
-+ echo "*** libtool will only create a static version of it."
-+ if test "$build_old_libs" = no; then
-+ oldlibs="$output_objdir/$libname.$libext"
-+ build_libtool_libs=module
-+ build_old_libs=yes
-+ else
-+ build_libtool_libs=no
-+ fi
-+ fi
- fi
- fi
- # Done checking deplibs!
-@@ -2031,9 +2789,64 @@
- library_names=
- old_library=
- dlname=
--
-+
- # Test again, we may have decided not to build it any more
- if test "$build_libtool_libs" = yes; then
-+ if test $hardcode_into_libs = yes; then
-+ # Hardcode the library paths
-+ hardcode_libdirs=
-+ dep_rpath=
-+ rpath="$finalize_rpath"
-+ test "$mode" != relink && rpath="$compile_rpath$rpath"
-+ for libdir in $rpath; do
-+ if test -n "$hardcode_libdir_flag_spec"; then
-+ if test -n "$hardcode_libdir_separator"; then
-+ if test -z "$hardcode_libdirs"; then
-+ hardcode_libdirs="$libdir"
-+ else
-+ # Just accumulate the unique libdirs.
-+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-+ ;;
-+ *)
-+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-+ ;;
-+ esac
-+ fi
-+ else
-+ eval flag=\"$hardcode_libdir_flag_spec\"
-+ dep_rpath="$dep_rpath $flag"
-+ fi
-+ elif test -n "$runpath_var"; then
-+ case "$perm_rpath " in
-+ *" $libdir "*) ;;
-+ *) perm_rpath="$perm_rpath $libdir" ;;
-+ esac
-+ fi
-+ done
-+ # Substitute the hardcoded libdirs into the rpath.
-+ if test -n "$hardcode_libdir_separator" &&
-+ test -n "$hardcode_libdirs"; then
-+ libdir="$hardcode_libdirs"
-+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-+ fi
-+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
-+ # We should set the runpath_var.
-+ rpath=
-+ for dir in $perm_rpath; do
-+ rpath="$rpath$dir:"
-+ done
-+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
-+ fi
-+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
-+ fi
-+
-+ shlibpath="$finalize_shlibpath"
-+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
-+ if test -n "$shlibpath"; then
-+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
-+ fi
-+
- # Get the real and link names of the library.
- eval library_names=\"$library_names_spec\"
- set dummy $library_names
-@@ -2045,6 +2858,7 @@
- else
- soname="$realname"
- fi
-+ test -z "$dlname" && dlname=$soname
-
- lib="$output_objdir/$realname"
- for link
-@@ -2079,7 +2893,7 @@
- export_symbols="$output_objdir/$libname.exp"
- $run $rm $export_symbols
- eval cmds=\"$export_symbols_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -2116,7 +2930,7 @@
-
- for xlib in $convenience; do
- # Extract the objects.
-- case "$xlib" in
-+ case $xlib in
- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
- *) xabs=`pwd`"/$xlib" ;;
- esac
-@@ -2141,16 +2955,32 @@
-
- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
- eval flag=\"$thread_safe_flag_spec\"
-- linkopts="$linkopts $flag"
-+ linker_flags="$linker_flags $flag"
-+ fi
-+
-+ # Make a backup of the uninstalled library when relinking
-+ if test "$mode" = relink; then
-+ $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
- fi
-
- # Do each of the archive commands.
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
- eval cmds=\"$archive_expsym_cmds\"
- else
-+ save_deplibs="$deplibs"
-+ for conv in $convenience; do
-+ tmp_deplibs=
-+ for test_deplib in $deplibs; do
-+ if test "$test_deplib" != "$conv"; then
-+ tmp_deplibs="$tmp_deplibs $test_deplib"
-+ fi
-+ done
-+ deplibs="$tmp_deplibs"
-+ done
- eval cmds=\"$archive_cmds\"
-+ deplibs="$save_deplibs"
- fi
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -2158,6 +2988,12 @@
- done
- IFS="$save_ifs"
-
-+ # Restore the uninstalled library and exit
-+ if test "$mode" = relink; then
-+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
-+ exit 0
-+ fi
-+
- # Create links to the real library.
- for linkname in $linknames; do
- if test "$realname" != "$linkname"; then
-@@ -2174,12 +3010,7 @@
- fi
- ;;
-
-- *.lo | *.o | *.obj)
-- if test -n "$link_against_libtool_libs"; then
-- $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
-- exit 1
-- fi
--
-+ obj)
- if test -n "$deplibs"; then
- $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
- fi
-@@ -2204,9 +3035,9 @@
- $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
- fi
-
-- case "$output" in
-+ case $output in
- *.lo)
-- if test -n "$objs"; then
-+ if test -n "$objs$old_deplibs"; then
- $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
- exit 1
- fi
-@@ -2230,7 +3061,7 @@
- gentop=
- # reload_cmds runs $LD directly, so let us get rid of
- # -Wl from whole_archive_flag_spec
-- wl=
-+ wl=
-
- if test -n "$convenience"; then
- if test -n "$whole_archive_flag_spec"; then
-@@ -2249,7 +3080,7 @@
-
- for xlib in $convenience; do
- # Extract the objects.
-- case "$xlib" in
-+ case $xlib in
- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
- *) xabs=`pwd`"/$xlib" ;;
- esac
-@@ -2273,11 +3104,11 @@
- fi
-
- # Create the old-style object.
-- reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs"
-+ reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-
- output="$obj"
- eval cmds=\"$reload_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -2308,12 +3139,12 @@
- exit 0
- fi
-
-- if test -n "$pic_flag"; then
-+ if test -n "$pic_flag" || test "$pic_mode" != default; then
- # Only do commands if we really have different PIC objects.
- reload_objs="$libobjs $reload_conv_objs"
- output="$libobj"
- eval cmds=\"$reload_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -2344,8 +3175,10 @@
- exit 0
- ;;
-
-- # Anything else should be a program.
-- *)
-+ prog)
-+ case $host in
-+ *cygwin*) output=`echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
-+ esac
- if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
- fi
-@@ -2355,20 +3188,34 @@
- fi
-
- if test "$preload" = yes; then
-- if test "$dlopen" = unknown && test "$dlopen_self" = unknown &&
-+ if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
- test "$dlopen_self_static" = unknown; then
- $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
-- fi
-+ fi
- fi
--
-+
-+ case $host in
-+ *-*-rhapsody* | *-*-darwin1.[012])
-+ # On Rhapsody replace the C library is the System framework
-+ compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
-+ finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
-+ case $host in
-+ *darwin*)
-+ # Don't allow lazy linking, it breaks C++ global constructors
-+ compile_command="$compile_command ${wl}-bind_at_load"
-+ finalize_command="$finalize_command ${wl}-bind_at_load"
-+ ;;
-+ esac
-+ ;;
-+ esac
-+
-+ compile_command="$compile_command $compile_deplibs"
-+ finalize_command="$finalize_command $finalize_deplibs"
-+
- if test -n "$rpath$xrpath"; then
- # If the user specified any rpath flags, then add them.
- for libdir in $rpath $xrpath; do
- # This is the magic to use -rpath.
-- case "$compile_rpath " in
-- *" $libdir "*) ;;
-- *) compile_rpath="$compile_rpath $libdir" ;;
-- esac
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir" ;;
-@@ -2386,7 +3233,7 @@
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
-- case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
-+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
-@@ -2404,6 +3251,14 @@
- *) perm_rpath="$perm_rpath $libdir" ;;
- esac
- fi
-+ case $host in
-+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
-+ case :$dllsearchpath: in
-+ *":$libdir:"*) ;;
-+ *) dllsearchpath="$dllsearchpath:$libdir";;
-+ esac
-+ ;;
-+ esac
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
-@@ -2422,7 +3277,7 @@
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
-- case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
-+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
-@@ -2449,23 +3304,6 @@
- fi
- finalize_rpath="$rpath"
-
-- output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
-- if test "X$output_objdir" = "X$output"; then
-- output_objdir="$objdir"
-- else
-- output_objdir="$output_objdir/$objdir"
-- fi
--
-- # Create the binary in the object directory, then wrap it.
-- if test ! -d $output_objdir; then
-- $show "$mkdir $output_objdir"
-- $run $mkdir $output_objdir
-- status=$?
-- if test $status -ne 0 && test ! -d $output_objdir; then
-- exit $status
-- fi
-- fi
--
- if test -n "$libobjs" && test "$build_old_libs" = yes; then
- # Transform all the library objects into standard objects.
- compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-@@ -2482,7 +3320,7 @@
- fi
-
- if test -n "$dlsyms"; then
-- case "$dlsyms" in
-+ case $dlsyms in
- "") ;;
- *.c)
- # Discover the nlist of each of the dlfiles.
-@@ -2514,7 +3352,7 @@
- test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
-
- # Add our own program objects to the symbol list.
-- progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-+ progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- for arg in $progfiles; do
- $show "extracting global C symbols from \`$arg'"
- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
-@@ -2524,7 +3362,7 @@
- $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
- $run eval '$mv "$nlist"T "$nlist"'
- fi
--
-+
- if test -n "$export_symbols_regex"; then
- $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
- $run eval '$mv "$nlist"T "$nlist"'
-@@ -2534,9 +3372,9 @@
- if test -z "$export_symbols"; then
- export_symbols="$output_objdir/$output.exp"
- $run $rm $export_symbols
-- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-+ $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
- else
-- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
-+ $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
- $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
- $run eval 'mv "$nlist"T "$nlist"'
- fi
-@@ -2544,7 +3382,7 @@
-
- for arg in $dlprefiles; do
- $show "extracting global C symbols from \`$arg'"
-- name=`echo "$arg" | sed -e 's%^.*/%%'`
-+ name=`echo "$arg" | ${SED} -e 's%^.*/%%'`
- $run eval 'echo ": $name " >> "$nlist"'
- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
- done
-@@ -2559,7 +3397,13 @@
- fi
-
- # Try sorting and uniquifying the output.
-- if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
-+ if grep -v "^: " < "$nlist" |
-+ if sort -k 3 </dev/null >/dev/null 2>&1; then
-+ sort -k 3
-+ else
-+ sort +2
-+ fi |
-+ uniq > "$nlist"S; then
- :
- else
- grep -v "^: " < "$nlist" > "$nlist"S
-@@ -2576,27 +3420,25 @@
- #undef lt_preloaded_symbols
-
- #if defined (__STDC__) && __STDC__
--# define lt_ptr_t void *
-+# define lt_ptr void *
- #else
--# define lt_ptr_t char *
-+# define lt_ptr char *
- # define const
- #endif
-
- /* The mapping between symbol names and symbols. */
- const struct {
- const char *name;
-- lt_ptr_t address;
-+ lt_ptr address;
- }
- lt_preloaded_symbols[] =
- {\
- "
-
-- sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
-- -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
-- < "$nlist" >> "$output_objdir/$dlsyms"
-+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
-
- $echo >> "$output_objdir/$dlsyms" "\
-- {0, (lt_ptr_t) 0}
-+ {0, (lt_ptr) 0}
- };
-
- /* This works around a problem in FreeBSD linker */
-@@ -2658,7 +3500,7 @@
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
- fi
-
-- if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
-+ if test $need_relink = no || test "$build_libtool_libs" != yes; then
- # Replace the output file specification.
- compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
- link_command="$compile_command$compile_rpath"
-@@ -2667,7 +3509,7 @@
- $show "$link_command"
- $run eval "$link_command"
- status=$?
--
-+
- # Delete the generated files.
- if test -n "$dlsyms"; then
- $show "$rm $output_objdir/${outputname}S.${objext}"
-@@ -2681,7 +3523,7 @@
- # We should set the shlibpath_var
- rpath=
- for dir in $temp_rpath; do
-- case "$dir" in
-+ case $dir in
- [\\/]* | [A-Za-z]:[\\/]*)
- # Absolute path.
- rpath="$rpath$dir:"
-@@ -2723,11 +3565,24 @@
- fi
- fi
-
-+ if test "$no_install" = yes; then
-+ # We don't need to create a wrapper script.
-+ link_command="$compile_var$compile_command$compile_rpath"
-+ # Replace the output file specification.
-+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-+ # Delete the old output file.
-+ $run $rm $output
-+ # Link the executable and exit
-+ $show "$link_command"
-+ $run eval "$link_command" || exit $?
-+ exit 0
-+ fi
-+
- if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
--
-+
- $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
- $echo "$modename: \`$output' will be relinked during installation" 1>&2
- else
-@@ -2747,7 +3602,7 @@
-
- # Replace the output file specification.
- link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
--
-+
- # Delete the old output files.
- $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
-@@ -2759,12 +3614,24 @@
-
- # Quote the relink command for shipping.
- if test -n "$relink_command"; then
-+ # Preserve any variables that may affect compiler behavior
-+ for var in $variables_saved_for_relink; do
-+ if eval test -z \"\${$var+set}\"; then
-+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
-+ elif eval var_value=\$$var; test -z "$var_value"; then
-+ relink_command="$var=; export $var; $relink_command"
-+ else
-+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
-+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
-+ fi
-+ done
-+ relink_command="(cd `pwd`; $relink_command)"
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
- fi
-
- # Quote $echo for shipping.
- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
-- case "$0" in
-+ case $0 in
- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
- *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
- esac
-@@ -2778,7 +3645,12 @@
- # win32 will think the script is a binary if it has
- # a .exe suffix, so we strip it off here.
- case $output in
-- *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
-+ *.exe) output=`echo $output|${SED} 's,.exe$,,'` ;;
-+ esac
-+ # test for cygwin because mv fails w/o .exe extensions
-+ case $host in
-+ *cygwin*) exeext=.exe ;;
-+ *) exeext= ;;
- esac
- $rm $output
- trap "$rm $output; exit 1" 1 2 15
-@@ -2797,7 +3669,7 @@
-
- # Sed substitution that helps us do robust quoting. It backslashifies
- # metacharacters that are still active within double-quoted strings.
--Xsed='sed -e 1s/^X//'
-+Xsed="${SED}"' -e 1s/^X//'
- sed_quote_subst='$sed_quote_subst'
-
- # The HP-UX ksh and POSIX shell print the target directory to stdout
-@@ -2809,7 +3681,7 @@
- # This environment variable determines our operation mode.
- if test \"\$libtool_install_magic\" = \"$magic\"; then
- # install mode needs the following variable:
-- link_against_libtool_libs='$link_against_libtool_libs'
-+ notinst_deplibs='$notinst_deplibs'
- else
- # When we are sourced in execute mode, \$file and \$echo are already set.
- if test \"\$libtool_execute_magic\" != \"$magic\"; then
-@@ -2835,20 +3707,20 @@
- test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
- # Follow symbolic links until we get to the real thisdir.
-- file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
-+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
- while test -n \"\$file\"; do
- destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
-
- # If there was a directory component, then change thisdir.
- if test \"x\$destdir\" != \"x\$file\"; then
- case \"\$destdir\" in
-- [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;;
-+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
- *) thisdir=\"\$thisdir/\$destdir\" ;;
- esac
- fi
-
- file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
-- file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
-+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
- done
-
- # Try to get the absolute directory name.
-@@ -2858,11 +3730,11 @@
-
- if test "$fast_install" = yes; then
- echo >> $output "\
-- program=lt-'$outputname'
-+ program=lt-'$outputname'$exeext
- progdir=\"\$thisdir/$objdir\"
--
-+
- if test ! -f \"\$progdir/\$program\" || \\
-- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
-+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
- test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
- file=\"\$\$-\$program\"
-@@ -2877,8 +3749,9 @@
-
- # relink executable if necessary
- if test -n \"\$relink_command\"; then
-- if (cd \"\$thisdir\" && eval \$relink_command); then :
-+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
- else
-+ $echo \"\$relink_command_output\" >&2
- $rm \"\$progdir/\$file\"
- exit 1
- fi
-@@ -2907,7 +3780,7 @@
- $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
- # Some systems cannot cope with colon-terminated $shlibpath_var
-- # The second colon is a workaround for a bug in BeOS R4 sed
-+ # The second colon is a workaround for a bug in BeOS R4 ${SED}
- $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
-
- export $shlibpath_var
-@@ -2927,13 +3800,21 @@
- # Run the actual program with our arguments.
- "
- case $host in
-- *-*-cygwin* | *-*-mingw | *-*-os2*)
-- # win32 systems need to use the prog path for dll
-- # lookup to work
-+ # win32 systems need to use the prog path for dll
-+ # lookup to work
-+ *-*-cygwin* | *-*-pw32*)
-+ $echo >> $output "\
-+ exec \$progdir/\$program \${1+\"\$@\"}
-+"
-+ ;;
-+
-+ # Backslashes separate directories on plain windows
-+ *-*-mingw | *-*-os2*)
- $echo >> $output "\
- exec \$progdir\\\\\$program \${1+\"\$@\"}
- "
- ;;
-+
- *)
- $echo >> $output "\
- # Export the path to the program.
-@@ -2975,7 +3856,7 @@
- oldobjs="$libobjs_save"
- build_libtool_libs=no
- else
-- oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
-+ oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
- fi
- addlibs="$old_convenience"
- fi
-@@ -2991,11 +3872,11 @@
- exit $status
- fi
- generated="$generated $gentop"
--
-+
- # Add in members from convenience archives.
- for xlib in $addlibs; do
- # Extract the objects.
-- case "$xlib" in
-+ case $xlib in
- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
- *) xabs=`pwd`"/$xlib" ;;
- esac
-@@ -3041,7 +3922,7 @@
-
- eval cmds=\"$old_archive_cmds\"
- fi
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -3056,19 +3937,26 @@
- fi
-
- # Now create the libtool archive.
-- case "$output" in
-+ case $output in
- *.la)
- old_library=
- test "$build_old_libs" = yes && old_library="$libname.$libext"
- $show "creating $output"
-
-- if test -n "$xrpath"; then
-- temp_xrpath=
-- for libdir in $xrpath; do
-- temp_xrpath="$temp_xrpath -R$libdir"
-- done
-- dependency_libs="$temp_xrpath $dependency_libs"
-- fi
-+ # Preserve any variables that may affect compiler behavior
-+ for var in $variables_saved_for_relink; do
-+ if eval test -z \"\${$var+set}\"; then
-+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
-+ elif eval var_value=\$$var; test -z "$var_value"; then
-+ relink_command="$var=; export $var; $relink_command"
-+ else
-+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
-+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
-+ fi
-+ done
-+ # Quote the link command for shipping.
-+ relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)"
-+ relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-
- # Only create the output if not a dry run.
- if test -z "$run"; then
-@@ -3078,8 +3966,52 @@
- break
- fi
- output="$output_objdir/$outputname"i
-+ # Replace all uninstalled libtool libraries with the installed ones
-+ newdependency_libs=
-+ for deplib in $dependency_libs; do
-+ case $deplib in
-+ *.la)
-+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-+ if test -z "$libdir"; then
-+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
-+ exit 1
-+ fi
-+ newdependency_libs="$newdependency_libs $libdir/$name"
-+ ;;
-+ *) newdependency_libs="$newdependency_libs $deplib" ;;
-+ esac
-+ done
-+ dependency_libs="$newdependency_libs"
-+ newdlfiles=
-+ for lib in $dlfiles; do
-+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-+ if test -z "$libdir"; then
-+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-+ exit 1
-+ fi
-+ newdlfiles="$newdlfiles $libdir/$name"
-+ done
-+ dlfiles="$newdlfiles"
-+ newdlprefiles=
-+ for lib in $dlprefiles; do
-+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-+ if test -z "$libdir"; then
-+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-+ exit 1
-+ fi
-+ newdlprefiles="$newdlprefiles $libdir/$name"
-+ done
-+ dlprefiles="$newdlprefiles"
- fi
- $rm $output
-+ # place dlname in correct position for cygwin
-+ tdlname=$dlname
-+ case $host,$output,$installed,$module,$dlname in
-+ *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
-+ esac
- $echo > $output "\
- # $outputname - a libtool library file
- # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
-@@ -3088,7 +4020,7 @@
- # It is necessary for linking the library.
-
- # The name that we can dlopen(3).
--dlname='$dlname'
-+dlname='$tdlname'
-
- # Names of this library.
- library_names='$library_names'
-@@ -3107,16 +4039,23 @@
- # Is this an already installed library?
- installed=$installed
-
-+# Files to dlopen/dlpreopen
-+dlopen='$dlfiles'
-+dlpreopen='$dlprefiles'
-+
- # Directory that this library needs to be installed in:
--libdir='$install_libdir'\
--"
-+libdir='$install_libdir'"
-+ if test "$installed" = no && test $need_relink = yes; then
-+ $echo >> $output "\
-+relink_command=\"$relink_command\""
-+ fi
- done
- fi
-
- # Do a symbolic link so that the libtool archive can be found in
- # LD_LIBRARY_PATH before the program is installed.
- $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
-- $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $?
-+ $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
- ;;
- esac
- exit 0
-@@ -3128,10 +4067,12 @@
-
- # There may be an optional sh(1) argument at the beginning of
- # install_prog (especially on Windows NT).
-- if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then
-+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
-+ # Allow the use of GNU shtool's install command.
-+ $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
- # Aesthetically quote it.
- arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
-- case "$arg" in
-+ case $arg in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- arg="\"$arg\""
- ;;
-@@ -3147,7 +4088,7 @@
- # The real first argument should be the name of the installation program.
- # Aesthetically quote it.
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-- case "$arg" in
-+ case $arg in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- arg="\"$arg\""
- ;;
-@@ -3170,7 +4111,7 @@
- continue
- fi
-
-- case "$arg" in
-+ case $arg in
- -d) isdir=yes ;;
- -f) prev="-f" ;;
- -g) prev="-g" ;;
-@@ -3195,7 +4136,7 @@
-
- # Aesthetically quote the argument.
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-- case "$arg" in
-+ case $arg in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- arg="\"$arg\""
- ;;
-@@ -3246,11 +4187,11 @@
- exit 1
- fi
- fi
-- case "$destdir" in
-+ case $destdir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- for file in $files; do
-- case "$file" in
-+ case $file in
- *.lo) ;;
- *)
- $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
-@@ -3272,15 +4213,15 @@
- for file in $files; do
-
- # Do each installation.
-- case "$file" in
-- *.a | *.lib)
-+ case $file in
-+ *.$libext)
- # Do the static libraries later.
- staticlibs="$staticlibs $file"
- ;;
-
- *.la)
- # Check to see that this really is a libtool archive.
-- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
-+ if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
- else
- $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
- $echo "$help" 1>&2
-@@ -3289,8 +4230,9 @@
-
- library_names=
- old_library=
-+ relink_command=
- # If there is no directory component, then add one.
-- case "$file" in
-+ case $file in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
-@@ -3309,10 +4251,38 @@
- esac
- fi
-
-- dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
-+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
- test "X$dir" = "X$file/" && dir=
- dir="$dir$objdir"
-
-+ if test -n "$relink_command"; then
-+ # Determine the prefix the user has applied to our future dir.
-+ inst_prefix_dir=`$echo "$destdir" | sed "s%$libdir\$%%"`
-+
-+ # Don't allow the user to place us outside of our expected
-+ # location b/c this prevents finding dependent libraries that
-+ # are installed to the same prefix.
-+ if test "$inst_prefix_dir" = "$destdir"; then
-+ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
-+ exit 1
-+ fi
-+
-+ if test -n "$inst_prefix_dir"; then
-+ # Stick the inst_prefix_dir data into the link command.
-+ relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-+ else
-+ relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"`
-+ fi
-+
-+ $echo "$modename: warning: relinking \`$file'" 1>&2
-+ $show "$relink_command"
-+ if $run eval "$relink_command"; then :
-+ else
-+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
-+ exit 1
-+ fi
-+ fi
-+
- # See the names of the shared library.
- set dummy $library_names
- if test -n "$2"; then
-@@ -3320,9 +4290,16 @@
- shift
- shift
-
-+ srcname="$realname"
-+ test -n "$relink_command" && srcname="$realname"T
-+
- # Install the shared library and build the symlinks.
-- $show "$install_prog $dir/$realname $destdir/$realname"
-- $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
-+ $show "$install_prog $dir/$srcname $destdir/$realname"
-+ $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
-+ if test -n "$stripme" && test -n "$striplib"; then
-+ $show "$striplib $destdir/$realname"
-+ $run eval "$striplib $destdir/$realname" || exit $?
-+ fi
-
- if test $# -gt 0; then
- # Delete the old symlinks, and create new ones.
-@@ -3338,7 +4315,7 @@
- # Do each command in the postinstall commands.
- lib="$destdir/$realname"
- eval cmds=\"$postinstall_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -3369,11 +4346,11 @@
- fi
-
- # Deduce the name of the destination old-style object file.
-- case "$destfile" in
-+ case $destfile in
- *.lo)
- staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
- ;;
-- *.o | *.obj)
-+ *.$objext)
- staticdest="$destfile"
- destfile=
- ;;
-@@ -3411,40 +4388,55 @@
- fi
-
- # Do a test to see if this is really a libtool program.
-- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-- link_against_libtool_libs=
-+ case $host in
-+ *cygwin*|*mingw*)
-+ wrapper=`echo $file | ${SED} -e 's,.exe$,,'`
-+ ;;
-+ *)
-+ wrapper=$file
-+ ;;
-+ esac
-+ if (${SED} -e '4q' $wrapper | egrep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
-+ notinst_deplibs=
- relink_command=
-
- # If there is no directory component, then add one.
-- case "$file" in
-- */* | *\\*) . $file ;;
-- *) . ./$file ;;
-+ case $file in
-+ */* | *\\*) . $wrapper ;;
-+ *) . ./$wrapper ;;
- esac
-
- # Check the variables that should have been set.
-- if test -z "$link_against_libtool_libs"; then
-- $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
-+ if test -z "$notinst_deplibs"; then
-+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
- exit 1
- fi
-
- finalize=yes
-- for lib in $link_against_libtool_libs; do
-+ for lib in $notinst_deplibs; do
- # Check to see that each library is installed.
- libdir=
- if test -f "$lib"; then
- # If there is no directory component, then add one.
-- case "$lib" in
-+ case $lib in
- */* | *\\*) . $lib ;;
- *) . ./$lib ;;
- esac
- fi
-- libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
-+ libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
- if test -n "$libdir" && test ! -f "$libfile"; then
- $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
- finalize=no
- fi
- done
-
-+ relink_command=
-+ # If there is no directory component, then add one.
-+ case $file in
-+ */* | *\\*) . $wrapper ;;
-+ *) . ./$wrapper ;;
-+ esac
-+
- outputname=
- if test "$fast_install" = no && test -n "$relink_command"; then
- if test "$finalize" = yes && test -z "$run"; then
-@@ -3456,6 +4448,7 @@
- $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
- continue
- fi
-+ file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
- outputname="$tmpdir/$file"
- # Replace the output file specification.
- relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
-@@ -3477,6 +4470,23 @@
- fi
- fi
-
-+ # remove .exe since cygwin /usr/bin/install will append another
-+ # one anyways
-+ case $install_prog,$host in
-+ /usr/bin/install*,*cygwin*)
-+ case $file:$destfile in
-+ *.exe:*.exe)
-+ # this is ok
-+ ;;
-+ *.exe:*)
-+ destfile=$destfile.exe
-+ ;;
-+ *:*.exe)
-+ destfile=`echo $destfile | ${SED} -e 's,.exe$,,'`
-+ ;;
-+ esac
-+ ;;
-+ esac
- $show "$install_prog$stripme $file $destfile"
- $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
- test -n "$outputname" && ${rm}r "$tmpdir"
-@@ -3493,9 +4503,14 @@
- $show "$install_prog $file $oldlib"
- $run eval "$install_prog \$file \$oldlib" || exit $?
-
-+ if test -n "$stripme" && test -n "$striplib"; then
-+ $show "$old_striplib $oldlib"
-+ $run eval "$old_striplib $oldlib" || exit $?
-+ fi
-+
- # Do each command in the postinstall commands.
- eval cmds=\"$old_postinstall_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -3511,11 +4526,10 @@
- if test -n "$current_libdirs"; then
- # Maybe just do a dry run.
- test -n "$run" && current_libdirs=" -n$current_libdirs"
-- exec $SHELL $0 --finish$current_libdirs
-- exit 1
-+ exec_cmd='$SHELL $0 --finish$current_libdirs'
-+ else
-+ exit 0
- fi
--
-- exit 0
- ;;
-
- # libtool finish mode
-@@ -3534,7 +4548,7 @@
- if test -n "$finish_cmds"; then
- # Do each command in the finish commands.
- eval cmds=\"$finish_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -3553,7 +4567,7 @@
- fi
-
- # Exit here if they wanted silent mode.
-- test "$show" = : && exit 0
-+ test "$show" = ":" && exit 0
-
- echo "----------------------------------------------------------------------"
- echo "Libraries have been installed in:"
-@@ -3563,7 +4577,7 @@
- echo
- echo "If you ever happen to want to link against installed libraries"
- echo "in a given directory, LIBDIR, you must either use libtool, and"
-- echo "specify the full pathname of the library, or use \`-LLIBDIR'"
-+ echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
- echo "flag during linking and do at least one of the following:"
- if test -n "$shlibpath_var"; then
- echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
-@@ -3613,10 +4627,10 @@
- fi
-
- dir=
-- case "$file" in
-+ case $file in
- *.la)
- # Check to see that this really is a libtool archive.
-- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
-+ if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
- else
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
- $echo "$help" 1>&2
-@@ -3628,7 +4642,7 @@
- library_names=
-
- # If there is no directory component, then add one.
-- case "$file" in
-+ case $file in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
-@@ -3683,13 +4697,13 @@
- args=
- for file
- do
-- case "$file" in
-+ case $file in
- -*) ;;
- *)
- # Do a test to see if this is really a libtool program.
-- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-+ if (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- # If there is no directory component, then add one.
-- case "$file" in
-+ case $file in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
-@@ -3706,8 +4720,8 @@
-
- if test -z "$run"; then
- if test -n "$shlibpath_var"; then
-- # Export the shlibpath_var.
-- eval "export $shlibpath_var"
-+ # Export the shlibpath_var.
-+ eval "export $shlibpath_var"
- fi
-
- # Restore saved enviroment variables
-@@ -3718,31 +4732,35 @@
- LANG="$save_LANG"; export LANG
- fi
-
-- # Now actually exec the command.
-- eval "exec \$cmd$args"
--
-- $echo "$modename: cannot exec \$cmd$args"
-- exit 1
-+ # Now prepare to actually exec the command.
-+ exec_cmd="\$cmd$args"
- else
- # Display what would be done.
- if test -n "$shlibpath_var"; then
-- eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
-- $echo "export $shlibpath_var"
-+ eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
-+ $echo "export $shlibpath_var"
- fi
- $echo "$cmd$args"
- exit 0
- fi
- ;;
-
-- # libtool uninstall mode
-- uninstall)
-- modename="$modename: uninstall"
-+ # libtool clean and uninstall mode
-+ clean | uninstall)
-+ modename="$modename: $mode"
- rm="$nonopt"
- files=
-+ rmforce=
-+ exit_status=0
-+
-+ # This variable tells wrapper scripts just to set variables rather
-+ # than running their programs.
-+ libtool_install_magic="$magic"
-
- for arg
- do
-- case "$arg" in
-+ case $arg in
-+ -f) rm="$rm $arg"; rmforce=yes ;;
- -*) rm="$rm $arg" ;;
- *) files="$files $arg" ;;
- esac
-@@ -3754,53 +4772,86 @@
- exit 1
- fi
-
-+ rmdirs=
-+
- for file in $files; do
- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
-- test "X$dir" = "X$file" && dir=.
-+ if test "X$dir" = "X$file"; then
-+ dir=.
-+ objdir="$objdir"
-+ else
-+ objdir="$dir/$objdir"
-+ fi
- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-+ test $mode = uninstall && objdir="$dir"
-+
-+ # Remember objdir for removal later, being careful to avoid duplicates
-+ if test $mode = clean; then
-+ case " $rmdirs " in
-+ *" $objdir "*) ;;
-+ *) rmdirs="$rmdirs $objdir" ;;
-+ esac
-+ fi
-+
-+ # Don't error if the file doesn't exist and rm -f was used.
-+ if (test -L "$file") >/dev/null 2>&1 \
-+ || (test -h "$file") >/dev/null 2>&1 \
-+ || test -f "$file"; then
-+ :
-+ elif test -d "$file"; then
-+ exit_status=1
-+ continue
-+ elif test "$rmforce" = yes; then
-+ continue
-+ fi
-
- rmfiles="$file"
-
-- case "$name" in
-+ case $name in
- *.la)
- # Possibly a libtool archive, so verify it.
-- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-+ if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- . $dir/$name
-
- # Delete the libtool libraries and symlinks.
- for n in $library_names; do
-- rmfiles="$rmfiles $dir/$n"
-+ rmfiles="$rmfiles $objdir/$n"
- done
-- test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
-+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
-+ test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
-
-- $show "$rm $rmfiles"
-- $run $rm $rmfiles
--
-- if test -n "$library_names"; then
-- # Do each command in the postuninstall commands.
-- eval cmds=\"$postuninstall_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-+ if test $mode = uninstall; then
-+ if test -n "$library_names"; then
-+ # Do each command in the postuninstall commands.
-+ eval cmds=\"$postuninstall_cmds\"
-+ save_ifs="$IFS"; IFS='~'
-+ for cmd in $cmds; do
-+ IFS="$save_ifs"
-+ $show "$cmd"
-+ $run eval "$cmd"
-+ if test $? != 0 && test "$rmforce" != yes; then
-+ exit_status=1
-+ fi
-+ done
- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd"
-- done
-- IFS="$save_ifs"
-- fi
-+ fi
-
-- if test -n "$old_library"; then
-- # Do each command in the old_postuninstall commands.
-- eval cmds=\"$old_postuninstall_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-- for cmd in $cmds; do
-+ if test -n "$old_library"; then
-+ # Do each command in the old_postuninstall commands.
-+ eval cmds=\"$old_postuninstall_cmds\"
-+ save_ifs="$IFS"; IFS='~'
-+ for cmd in $cmds; do
-+ IFS="$save_ifs"
-+ $show "$cmd"
-+ $run eval "$cmd"
-+ if test $? != 0 && test "$rmforce" != yes; then
-+ exit_status=1
-+ fi
-+ done
- IFS="$save_ifs"
-- $show "$cmd"
-- $run eval "$cmd"
-- done
-- IFS="$save_ifs"
-+ fi
-+ # FIXME: should reinstall the best remaining shared library.
- fi
--
-- # FIXME: should reinstall the best remaining shared library.
- fi
- ;;
-
-@@ -3809,17 +4860,35 @@
- oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
- rmfiles="$rmfiles $dir/$oldobj"
- fi
-- $show "$rm $rmfiles"
-- $run $rm $rmfiles
- ;;
-
- *)
-- $show "$rm $rmfiles"
-- $run $rm $rmfiles
-+ # Do a test to see if this is a libtool program.
-+ if test $mode = clean &&
-+ (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-+ relink_command=
-+ . $dir/$file
-+
-+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
-+ if test "$fast_install" = yes && test -n "$relink_command"; then
-+ rmfiles="$rmfiles $objdir/lt-$name"
-+ fi
-+ fi
- ;;
- esac
-+ $show "$rm $rmfiles"
-+ $run $rm $rmfiles || exit_status=1
- done
-- exit 0
-+
-+ # Try to remove the ${objdir}s in the directories where we deleted files
-+ for dir in $rmdirs; do
-+ if test -d "$dir"; then
-+ $show "rmdir $dir"
-+ $run rmdir $dir >/dev/null 2>&1
-+ fi
-+ done
-+
-+ exit $exit_status
- ;;
-
- "")
-@@ -3829,13 +4898,20 @@
- ;;
- esac
-
-- $echo "$modename: invalid operation mode \`$mode'" 1>&2
-- $echo "$generic_help" 1>&2
-- exit 1
-+ if test -z "$exec_cmd"; then
-+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
-+ $echo "$generic_help" 1>&2
-+ exit 1
-+ fi
- fi # test -z "$show_help"
-
-+if test -n "$exec_cmd"; then
-+ eval exec $exec_cmd
-+ exit 1
-+fi
-+
- # We need to display help for each of the modes.
--case "$mode" in
-+case $mode in
- "") $echo \
- "Usage: $modename [OPTION]... [MODE-ARG]...
-
-@@ -3854,6 +4930,7 @@
-
- MODE must be one of the following:
-
-+ clean remove files from the build directory
- compile compile a source file into a libtool object
- execute automatically set library path, then run a program
- finish complete the installation of libtool libraries
-@@ -3866,6 +4943,20 @@
- exit 0
- ;;
-
-+clean)
-+ $echo \
-+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-+
-+Remove files from the build directory.
-+
-+RM is the name of the program to use to delete files associated with each FILE
-+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
-+to RM.
-+
-+If FILE is a libtool library, object or program, all the files associated
-+with it are deleted. Otherwise, only FILE itself is deleted using RM."
-+ ;;
-+
- compile)
- $echo \
- "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-@@ -3875,6 +4966,8 @@
- This mode accepts the following additional options:
-
- -o OUTPUT-FILE set the output file name to OUTPUT-FILE
-+ -prefer-pic try to building PIC objects only
-+ -prefer-non-pic try to building non-PIC objects only
- -static always build a \`.o' file suitable for static linking
-
- COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-@@ -3954,6 +5047,8 @@
- -LLIBDIR search LIBDIR for required installed libraries
- -lNAME OUTPUT-FILE requires the installed library libNAME
- -module build a library that can dlopened
-+ -no-fast-install disable the fast-install mode
-+ -no-install link a not-installable executable
- -no-undefined declare that a library does not refer to external symbols
- -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
- -release RELEASE specify package release information
---- glib1.2-1.2.10.orig/gmodule/Makefile.in
-+++ glib1.2-1.2.10/gmodule/Makefile.in
-@@ -1,6 +1,6 @@
--# Makefile.in generated automatically by automake 1.4 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
--# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -62,8 +62,10 @@
- AS = @AS@
- CC = @CC@
- DLLTOOL = @DLLTOOL@
-+ECHO = @ECHO@
- ENABLE_MEM_CHECK = @ENABLE_MEM_CHECK@
- ENABLE_MEM_PROFILE = @ENABLE_MEM_PROFILE@
-+EXEEXT = @EXEEXT@
- GLIB_BINARY_AGE = @GLIB_BINARY_AGE@
- GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@
- GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@
-@@ -88,8 +90,10 @@
- MAINT = @MAINT@
- MAKEINFO = @MAKEINFO@
- OBJDUMP = @OBJDUMP@
-+OBJEXT = @OBJEXT@
- PACKAGE = @PACKAGE@
- RANLIB = @RANLIB@
-+STRIP = @STRIP@
- VERSION = @VERSION@
-
- INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/gmodule -DG_LOG_DOMAIN=\"GModule\" @GLIB_DEBUG_FLAGS@
-@@ -112,17 +116,17 @@
- libgmodule_la_LDFLAGS = @G_MODULE_LDFLAGS@ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -release $(LT_RELEASE) -export-dynamic
-
-
--libgmodule_la_LIBADD = @G_MODULE_LIBS@ # $(libglib)
-+libgmodule_la_LIBADD = @G_MODULE_LIBS@ $(libglib)
- # we should really depend on $(libglib) for libgmodule.la, but libtool has a
- # problem with this ;(
-
- libgplugin_a_la_SOURCES = libgplugin_a.c
- libgplugin_a_la_LDFLAGS = @G_MODULE_LDFLAGS@ -avoid-version -module
--libgplugin_a_la_LIBADD = @G_MODULE_LIBS@ # $(libglib)
-+libgplugin_a_la_LIBADD = @G_MODULE_LIBS@ $(libglib)
-
- libgplugin_b_la_SOURCES = libgplugin_b.c
- libgplugin_b_la_LDFLAGS = @G_MODULE_LDFLAGS@ -avoid-version -module
--libgplugin_b_la_LIBADD = @G_MODULE_LIBS@ # $(libglib)
-+libgplugin_b_la_LIBADD = @G_MODULE_LIBS@ $(libglib)
-
- noinst_PROGRAMS = testgmodule
- testgmodule_LDFLAGS = @G_MODULE_LDFLAGS@
-@@ -143,10 +147,11 @@
- libgplugin_a_la_OBJECTS = libgplugin_a.lo
- libgplugin_b_la_DEPENDENCIES =
- libgplugin_b_la_OBJECTS = libgplugin_b.lo
-+noinst_PROGRAMS = testgmodule$(EXEEXT)
- PROGRAMS = $(noinst_PROGRAMS)
-
- testgmodule_SOURCES = testgmodule.c
--testgmodule_OBJECTS = testgmodule.o
-+testgmodule_OBJECTS = testgmodule.$(OBJEXT)
- testgmodule_DEPENDENCIES = libgmodule.la $(top_builddir)/libglib.la
- CFLAGS = @CFLAGS@
- COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-@@ -161,14 +166,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- SOURCES = $(libgmodule_la_SOURCES) $(libgplugin_a_la_SOURCES) $(libgplugin_b_la_SOURCES) testgmodule.c
--OBJECTS = $(libgmodule_la_OBJECTS) $(libgplugin_a_la_OBJECTS) $(libgplugin_b_la_OBJECTS) testgmodule.o
-+OBJECTS = $(libgmodule_la_OBJECTS) $(libgplugin_a_la_OBJECTS) $(libgplugin_b_la_OBJECTS) testgmodule.$(OBJEXT)
-
- all: all-redirect
- .SUFFIXES:
--.SUFFIXES: .S .c .lo .o .s
-+.SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps gmodule/Makefile
-
-@@ -197,6 +202,11 @@
- .c.o:
- $(COMPILE) -c $<
-
-+# FIXME: We should only use cygpath when building on Windows,
-+# and only if it is available.
-+.c.obj:
-+ $(COMPILE) -c `cygpath -w $<`
-+
- .s.o:
- $(COMPILE) -c $<
-
-@@ -205,6 +215,7 @@
-
- mostlyclean-compile:
- -rm -f *.o core *.core
-+ -rm -f *.$(OBJEXT)
-
- clean-compile:
-
-@@ -250,8 +261,8 @@
-
- maintainer-clean-noinstPROGRAMS:
-
--testgmodule: $(testgmodule_OBJECTS) $(testgmodule_DEPENDENCIES)
-- @rm -f testgmodule
-+testgmodule$(EXEEXT): $(testgmodule_OBJECTS) $(testgmodule_DEPENDENCIES)
-+ @rm -f testgmodule$(EXEEXT)
- $(LINK) $(testgmodule_LDFLAGS) $(testgmodule_OBJECTS) $(testgmodule_LDADD) $(LIBS)
-
- install-glibincludeHEADERS: $(glibinclude_HEADERS)
-@@ -287,7 +298,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -313,15 +324,6 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--gmodule.lo gmodule.o : gmodule.c gmodule.h ../glib.h ../glibconfig.h \
-- gmoduleconf.h gmodule-dl.c
--libgplugin_a.lo libgplugin_a.o : libgplugin_a.c gmodule.h ../glib.h \
-- ../glibconfig.h
--libgplugin_b.lo libgplugin_b.o : libgplugin_b.c gmodule.h ../glib.h \
-- ../glibconfig.h
--testgmodule.o: testgmodule.c gmodule.h ../glib.h ../glibconfig.h \
-- gmoduleconf.h
--
- info-am:
- info: info-am
- dvi-am:
---- glib1.2-1.2.10.orig/gmodule/Makefile.am
-+++ glib1.2-1.2.10/gmodule/Makefile.am
-@@ -29,17 +29,17 @@
- -release $(LT_RELEASE) \
- -export-dynamic
-
--libgmodule_la_LIBADD = @G_MODULE_LIBS@ # $(libglib)
-+libgmodule_la_LIBADD = @G_MODULE_LIBS@ $(libglib)
- # we should really depend on $(libglib) for libgmodule.la, but libtool has a
- # problem with this ;(
-
- libgplugin_a_la_SOURCES = libgplugin_a.c
- libgplugin_a_la_LDFLAGS = @G_MODULE_LDFLAGS@ -avoid-version -module
--libgplugin_a_la_LIBADD = @G_MODULE_LIBS@ # $(libglib)
-+libgplugin_a_la_LIBADD = @G_MODULE_LIBS@ $(libglib)
-
- libgplugin_b_la_SOURCES = libgplugin_b.c
- libgplugin_b_la_LDFLAGS = @G_MODULE_LDFLAGS@ -avoid-version -module
--libgplugin_b_la_LIBADD = @G_MODULE_LIBS@ # $(libglib)
-+libgplugin_b_la_LIBADD = @G_MODULE_LIBS@ $(libglib)
-
- noinst_PROGRAMS = testgmodule
- testgmodule_LDFLAGS += @G_MODULE_LDFLAGS@
---- glib1.2-1.2.10.orig/gthread/Makefile.in
-+++ glib1.2-1.2.10/gthread/Makefile.in
-@@ -1,6 +1,6 @@
--# Makefile.in generated automatically by automake 1.4 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
--# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -62,8 +62,10 @@
- AS = @AS@
- CC = @CC@
- DLLTOOL = @DLLTOOL@
-+ECHO = @ECHO@
- ENABLE_MEM_CHECK = @ENABLE_MEM_CHECK@
- ENABLE_MEM_PROFILE = @ENABLE_MEM_PROFILE@
-+EXEEXT = @EXEEXT@
- GLIB_BINARY_AGE = @GLIB_BINARY_AGE@
- GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@
- GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@
-@@ -88,8 +90,10 @@
- MAINT = @MAINT@
- MAKEINFO = @MAKEINFO@
- OBJDUMP = @OBJDUMP@
-+OBJEXT = @OBJEXT@
- PACKAGE = @PACKAGE@
- RANLIB = @RANLIB@
-+STRIP = @STRIP@
- VERSION = @VERSION@
-
- INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/gthread -DG_LOG_DOMAIN=\"GThread\"
-@@ -105,7 +109,7 @@
- libgthread_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -release $(LT_RELEASE) -export-dynamic
-
-
--libgthread_la_LIBADD = @G_THREAD_LIBS@
-+libgthread_la_LIBADD = @G_THREAD_LIBS@ $(libglib)
-
- noinst_PROGRAMS = testgthread
- testgthread_LDADD = ../libglib.la libgthread.la
-@@ -121,10 +125,11 @@
- LIBS = @LIBS@
- libgthread_la_DEPENDENCIES =
- libgthread_la_OBJECTS = gthread.lo
-+noinst_PROGRAMS = testgthread$(EXEEXT)
- PROGRAMS = $(noinst_PROGRAMS)
-
- testgthread_SOURCES = testgthread.c
--testgthread_OBJECTS = testgthread.o
-+testgthread_OBJECTS = testgthread.$(OBJEXT)
- testgthread_DEPENDENCIES = ../libglib.la libgthread.la
- testgthread_LDFLAGS =
- CFLAGS = @CFLAGS@
-@@ -137,14 +142,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- SOURCES = $(libgthread_la_SOURCES) testgthread.c
--OBJECTS = $(libgthread_la_OBJECTS) testgthread.o
-+OBJECTS = $(libgthread_la_OBJECTS) testgthread.$(OBJEXT)
-
- all: all-redirect
- .SUFFIXES:
--.SUFFIXES: .S .c .lo .o .s
-+.SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps gthread/Makefile
-
-@@ -181,6 +186,11 @@
- .c.o:
- $(COMPILE) -c $<
-
-+# FIXME: We should only use cygpath when building on Windows,
-+# and only if it is available.
-+.c.obj:
-+ $(COMPILE) -c `cygpath -w $<`
-+
- .s.o:
- $(COMPILE) -c $<
-
-@@ -189,6 +199,7 @@
-
- mostlyclean-compile:
- -rm -f *.o core *.core
-+ -rm -f *.$(OBJEXT)
-
- clean-compile:
-
-@@ -228,8 +239,8 @@
-
- maintainer-clean-noinstPROGRAMS:
-
--testgthread: $(testgthread_OBJECTS) $(testgthread_DEPENDENCIES)
-- @rm -f testgthread
-+testgthread$(EXEEXT): $(testgthread_OBJECTS) $(testgthread_DEPENDENCIES)
-+ @rm -f testgthread$(EXEEXT)
- $(LINK) $(testgthread_LDFLAGS) $(testgthread_OBJECTS) $(testgthread_LDADD) $(LIBS)
-
- tags: TAGS
-@@ -250,7 +261,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -276,11 +287,6 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--gthread.lo gthread.o : gthread.c ../config.h ../glib.h ../glibconfig.h \
-- gthread-posix.c
--testgthread.o: testgthread.c ../config.h ../testglib.c ../glib.h \
-- ../glibconfig.h
--
- info-am:
- info: info-am
- dvi-am:
---- glib1.2-1.2.10.orig/gthread/Makefile.am
-+++ glib1.2-1.2.10/gthread/Makefile.am
-@@ -19,7 +19,7 @@
- -release $(LT_RELEASE) \
- -export-dynamic
-
--libgthread_la_LIBADD = @G_THREAD_LIBS@
-+libgthread_la_LIBADD = @G_THREAD_LIBS@ $(libglib)
-
- noinst_PROGRAMS = testgthread
- testgthread_LDADD = ../libglib.la libgthread.la
---- glib1.2-1.2.10.orig/docs/Makefile.in
-+++ glib1.2-1.2.10/docs/Makefile.in
-@@ -1,6 +1,6 @@
--# Makefile.in generated automatically by automake 1.4 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
--# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -62,8 +62,10 @@
- AS = @AS@
- CC = @CC@
- DLLTOOL = @DLLTOOL@
-+ECHO = @ECHO@
- ENABLE_MEM_CHECK = @ENABLE_MEM_CHECK@
- ENABLE_MEM_PROFILE = @ENABLE_MEM_PROFILE@
-+EXEEXT = @EXEEXT@
- GLIB_BINARY_AGE = @GLIB_BINARY_AGE@
- GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@
- GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@
-@@ -88,8 +90,10 @@
- MAINT = @MAINT@
- MAKEINFO = @MAKEINFO@
- OBJDUMP = @OBJDUMP@
-+OBJEXT = @OBJEXT@
- PACKAGE = @PACKAGE@
- RANLIB = @RANLIB@
-+STRIP = @STRIP@
- VERSION = @VERSION@
-
- info_TEXINFOS = glib.texi
-@@ -114,7 +118,7 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- all: all-redirect
- .SUFFIXES:
-@@ -208,7 +212,7 @@
- else ii=; fi; \
- list='$(INFO_DEPS)'; \
- for file in $$list; do \
-- test -z "$ii" \
-+ test -z "$$ii" \
- || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \
- done
- @$(NORMAL_UNINSTALL)
---- glib1.2-1.2.10.orig/tests/Makefile.in
-+++ glib1.2-1.2.10/tests/Makefile.in
-@@ -1,6 +1,6 @@
--# Makefile.in generated automatically by automake 1.4 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
--# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -62,8 +62,10 @@
- AS = @AS@
- CC = @CC@
- DLLTOOL = @DLLTOOL@
-+ECHO = @ECHO@
- ENABLE_MEM_CHECK = @ENABLE_MEM_CHECK@
- ENABLE_MEM_PROFILE = @ENABLE_MEM_PROFILE@
-+EXEEXT = @EXEEXT@
- GLIB_BINARY_AGE = @GLIB_BINARY_AGE@
- GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@
- GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@
-@@ -88,8 +90,10 @@
- MAINT = @MAINT@
- MAKEINFO = @MAKEINFO@
- OBJDUMP = @OBJDUMP@
-+OBJEXT = @OBJEXT@
- PACKAGE = @PACKAGE@
- RANLIB = @RANLIB@
-+STRIP = @STRIP@
- VERSION = @VERSION@
-
- INCLUDES = -I$(top_srcdir)
-@@ -116,6 +120,10 @@
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
- CONFIG_HEADER = ../config.h
- CONFIG_CLEAN_FILES =
-+noinst_PROGRAMS = array-test$(EXEEXT) dirname-test$(EXEEXT) \
-+hash-test$(EXEEXT) list-test$(EXEEXT) node-test$(EXEEXT) \
-+relation-test$(EXEEXT) slist-test$(EXEEXT) string-test$(EXEEXT) \
-+strfunc-test$(EXEEXT) tree-test$(EXEEXT) type-test$(EXEEXT)
- PROGRAMS = $(noinst_PROGRAMS)
-
-
-@@ -124,47 +132,47 @@
- LDFLAGS = @LDFLAGS@
- LIBS = @LIBS@
- array_test_SOURCES = array-test.c
--array_test_OBJECTS = array-test.o
-+array_test_OBJECTS = array-test.$(OBJEXT)
- array_test_DEPENDENCIES = $(top_builddir)/libglib.la
- array_test_LDFLAGS =
- dirname_test_SOURCES = dirname-test.c
--dirname_test_OBJECTS = dirname-test.o
-+dirname_test_OBJECTS = dirname-test.$(OBJEXT)
- dirname_test_DEPENDENCIES = $(top_builddir)/libglib.la
- dirname_test_LDFLAGS =
- hash_test_SOURCES = hash-test.c
--hash_test_OBJECTS = hash-test.o
-+hash_test_OBJECTS = hash-test.$(OBJEXT)
- hash_test_DEPENDENCIES = $(top_builddir)/libglib.la
- hash_test_LDFLAGS =
- list_test_SOURCES = list-test.c
--list_test_OBJECTS = list-test.o
-+list_test_OBJECTS = list-test.$(OBJEXT)
- list_test_DEPENDENCIES = $(top_builddir)/libglib.la
- list_test_LDFLAGS =
- node_test_SOURCES = node-test.c
--node_test_OBJECTS = node-test.o
-+node_test_OBJECTS = node-test.$(OBJEXT)
- node_test_DEPENDENCIES = $(top_builddir)/libglib.la
- node_test_LDFLAGS =
- relation_test_SOURCES = relation-test.c
--relation_test_OBJECTS = relation-test.o
-+relation_test_OBJECTS = relation-test.$(OBJEXT)
- relation_test_DEPENDENCIES = $(top_builddir)/libglib.la
- relation_test_LDFLAGS =
- slist_test_SOURCES = slist-test.c
--slist_test_OBJECTS = slist-test.o
-+slist_test_OBJECTS = slist-test.$(OBJEXT)
- slist_test_DEPENDENCIES = $(top_builddir)/libglib.la
- slist_test_LDFLAGS =
- string_test_SOURCES = string-test.c
--string_test_OBJECTS = string-test.o
-+string_test_OBJECTS = string-test.$(OBJEXT)
- string_test_DEPENDENCIES = $(top_builddir)/libglib.la
- string_test_LDFLAGS =
- strfunc_test_SOURCES = strfunc-test.c
--strfunc_test_OBJECTS = strfunc-test.o
-+strfunc_test_OBJECTS = strfunc-test.$(OBJEXT)
- strfunc_test_DEPENDENCIES = $(top_builddir)/libglib.la
- strfunc_test_LDFLAGS =
- tree_test_SOURCES = tree-test.c
--tree_test_OBJECTS = tree-test.o
-+tree_test_OBJECTS = tree-test.$(OBJEXT)
- tree_test_DEPENDENCIES = $(top_builddir)/libglib.la
- tree_test_LDFLAGS =
- type_test_SOURCES = type-test.c
--type_test_OBJECTS = type-test.o
-+type_test_OBJECTS = type-test.$(OBJEXT)
- type_test_DEPENDENCIES = $(top_builddir)/libglib.la
- type_test_LDFLAGS =
- CFLAGS = @CFLAGS@
-@@ -177,14 +185,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- SOURCES = array-test.c dirname-test.c hash-test.c list-test.c node-test.c relation-test.c slist-test.c string-test.c strfunc-test.c tree-test.c type-test.c
--OBJECTS = array-test.o dirname-test.o hash-test.o list-test.o node-test.o relation-test.o slist-test.o string-test.o strfunc-test.o tree-test.o type-test.o
-+OBJECTS = array-test.$(OBJEXT) dirname-test.$(OBJEXT) hash-test.$(OBJEXT) list-test.$(OBJEXT) node-test.$(OBJEXT) relation-test.$(OBJEXT) slist-test.$(OBJEXT) string-test.$(OBJEXT) strfunc-test.$(OBJEXT) tree-test.$(OBJEXT) type-test.$(OBJEXT)
-
- all: all-redirect
- .SUFFIXES:
--.SUFFIXES: .S .c .lo .o .s
-+.SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps tests/Makefile
-
-@@ -205,6 +213,11 @@
- .c.o:
- $(COMPILE) -c $<
-
-+# FIXME: We should only use cygpath when building on Windows,
-+# and only if it is available.
-+.c.obj:
-+ $(COMPILE) -c `cygpath -w $<`
-+
- .s.o:
- $(COMPILE) -c $<
-
-@@ -213,6 +226,7 @@
-
- mostlyclean-compile:
- -rm -f *.o core *.core
-+ -rm -f *.$(OBJEXT)
-
- clean-compile:
-
-@@ -240,48 +254,48 @@
-
- maintainer-clean-libtool:
-
--array-test: $(array_test_OBJECTS) $(array_test_DEPENDENCIES)
-- @rm -f array-test
-+array-test$(EXEEXT): $(array_test_OBJECTS) $(array_test_DEPENDENCIES)
-+ @rm -f array-test$(EXEEXT)
- $(LINK) $(array_test_LDFLAGS) $(array_test_OBJECTS) $(array_test_LDADD) $(LIBS)
-
--dirname-test: $(dirname_test_OBJECTS) $(dirname_test_DEPENDENCIES)
-- @rm -f dirname-test
-+dirname-test$(EXEEXT): $(dirname_test_OBJECTS) $(dirname_test_DEPENDENCIES)
-+ @rm -f dirname-test$(EXEEXT)
- $(LINK) $(dirname_test_LDFLAGS) $(dirname_test_OBJECTS) $(dirname_test_LDADD) $(LIBS)
-
--hash-test: $(hash_test_OBJECTS) $(hash_test_DEPENDENCIES)
-- @rm -f hash-test
-+hash-test$(EXEEXT): $(hash_test_OBJECTS) $(hash_test_DEPENDENCIES)
-+ @rm -f hash-test$(EXEEXT)
- $(LINK) $(hash_test_LDFLAGS) $(hash_test_OBJECTS) $(hash_test_LDADD) $(LIBS)
-
--list-test: $(list_test_OBJECTS) $(list_test_DEPENDENCIES)
-- @rm -f list-test
-+list-test$(EXEEXT): $(list_test_OBJECTS) $(list_test_DEPENDENCIES)
-+ @rm -f list-test$(EXEEXT)
- $(LINK) $(list_test_LDFLAGS) $(list_test_OBJECTS) $(list_test_LDADD) $(LIBS)
-
--node-test: $(node_test_OBJECTS) $(node_test_DEPENDENCIES)
-- @rm -f node-test
-+node-test$(EXEEXT): $(node_test_OBJECTS) $(node_test_DEPENDENCIES)
-+ @rm -f node-test$(EXEEXT)
- $(LINK) $(node_test_LDFLAGS) $(node_test_OBJECTS) $(node_test_LDADD) $(LIBS)
-
--relation-test: $(relation_test_OBJECTS) $(relation_test_DEPENDENCIES)
-- @rm -f relation-test
-+relation-test$(EXEEXT): $(relation_test_OBJECTS) $(relation_test_DEPENDENCIES)
-+ @rm -f relation-test$(EXEEXT)
- $(LINK) $(relation_test_LDFLAGS) $(relation_test_OBJECTS) $(relation_test_LDADD) $(LIBS)
-
--slist-test: $(slist_test_OBJECTS) $(slist_test_DEPENDENCIES)
-- @rm -f slist-test
-+slist-test$(EXEEXT): $(slist_test_OBJECTS) $(slist_test_DEPENDENCIES)
-+ @rm -f slist-test$(EXEEXT)
- $(LINK) $(slist_test_LDFLAGS) $(slist_test_OBJECTS) $(slist_test_LDADD) $(LIBS)
-
--string-test: $(string_test_OBJECTS) $(string_test_DEPENDENCIES)
-- @rm -f string-test
-+string-test$(EXEEXT): $(string_test_OBJECTS) $(string_test_DEPENDENCIES)
-+ @rm -f string-test$(EXEEXT)
- $(LINK) $(string_test_LDFLAGS) $(string_test_OBJECTS) $(string_test_LDADD) $(LIBS)
-
--strfunc-test: $(strfunc_test_OBJECTS) $(strfunc_test_DEPENDENCIES)
-- @rm -f strfunc-test
-+strfunc-test$(EXEEXT): $(strfunc_test_OBJECTS) $(strfunc_test_DEPENDENCIES)
-+ @rm -f strfunc-test$(EXEEXT)
- $(LINK) $(strfunc_test_LDFLAGS) $(strfunc_test_OBJECTS) $(strfunc_test_LDADD) $(LIBS)
-
--tree-test: $(tree_test_OBJECTS) $(tree_test_DEPENDENCIES)
-- @rm -f tree-test
-+tree-test$(EXEEXT): $(tree_test_OBJECTS) $(tree_test_DEPENDENCIES)
-+ @rm -f tree-test$(EXEEXT)
- $(LINK) $(tree_test_LDFLAGS) $(tree_test_OBJECTS) $(tree_test_LDADD) $(LIBS)
-
--type-test: $(type_test_OBJECTS) $(type_test_DEPENDENCIES)
-- @rm -f type-test
-+type-test$(EXEEXT): $(type_test_OBJECTS) $(type_test_DEPENDENCIES)
-+ @rm -f type-test$(EXEEXT)
- $(LINK) $(type_test_LDFLAGS) $(type_test_OBJECTS) $(type_test_LDADD) $(LIBS)
-
- tags: TAGS
-@@ -302,7 +316,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -328,18 +342,6 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--array-test.o: array-test.c ../glib.h ../glibconfig.h
--dirname-test.o: dirname-test.c ../glib.h ../glibconfig.h
--hash-test.o: hash-test.c ../config.h ../glib.h ../glibconfig.h
--list-test.o: list-test.c ../glib.h ../glibconfig.h
--node-test.o: node-test.c ../config.h ../glib.h ../glibconfig.h
--relation-test.o: relation-test.c ../glib.h ../glibconfig.h
--slist-test.o: slist-test.c ../glib.h ../glibconfig.h
--strfunc-test.o: strfunc-test.c ../glib.h ../glibconfig.h
--string-test.o: string-test.c ../glib.h ../glibconfig.h
--tree-test.o: tree-test.c ../glib.h ../glibconfig.h
--type-test.o: type-test.c ../glib.h ../glibconfig.h
--
- check-TESTS: $(TESTS)
- @failed=0; all=0; \
- srcdir=$(srcdir); export srcdir; \
---- glib1.2-1.2.10.orig/debian/rules
-+++ glib1.2-1.2.10/debian/rules
-@@ -0,0 +1,137 @@
-+#!/usr/bin/make -f
-+# Sample debian/rules that uses debhelper.
-+# GNU copyright 1997 to 1999 by Joey Hess.
-+
-+# Uncomment this to turn on verbose mode.
-+#export DH_VERBOSE=1
-+
-+# These are used for cross-compiling and for saving the configure script
-+# from having to guess our platform (since we know it already)
-+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-+
-+CFLAGS = -Wall -g
-+
-+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-+ CFLAGS += -O0
-+else
-+ CFLAGS += -O2
-+endif
-+ifeq (,$(findstring,nostrip,$(DEB_BUILD_OPTIONS)))
-+ INSTALL_PROGRAM += -s
-+endif
-+
-+# shared library versions, option 1
-+version=2.0.5
-+major=2
-+# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so
-+#version=`ls src/.libs/lib*.so.* | \
-+# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'`
-+#major=`ls src/.libs/lib*.so.* | \
-+# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'`
-+
-+config.status: configure
-+ dh_testdir
-+
-+ # Add here commands to configure the package.
-+ ./configure --host=$(DEB_HOST_GNU_TYPE) \
-+ --build=$(DEB_BUILD_GNU_TYPE) \
-+ --prefix=/usr \
-+ --mandir=\$${prefix}/share/man \
-+ --infodir=\$${prefix}/share/info \
-+ --enable-debug=yes
-+
-+build: build-stamp
-+build-stamp: config.status
-+ dh_testdir
-+
-+ # Add here commands to compile the package.
-+ $(MAKE)
-+
-+ touch $@
-+
-+clean:
-+ dh_testdir
-+ dh_testroot
-+ rm -f build-stamp
-+
-+ # Add here commands to clean up after the build process.
-+ -$(MAKE) distclean
-+
-+ -test -r /usr/share/misc/config.sub && \
-+ cp -r /usr/share/misc/config.sub config.sub
-+ -test -r /usr/share/misc/config.guess && \
-+ cp -r /usr/share/misc/config.guess config.guess
-+
-+ dh_clean
-+
-+install: build
-+ dh_testdir
-+ dh_testroot
-+ dh_clean -k
-+ dh_installdirs
-+
-+ # Add here commands to install the package into debian/tmp
-+ $(MAKE) install prefix=$(CURDIR)/debian/libglib1.2/usr
-+
-+ # for -dbg
-+ mkdir -p $(CURDIR)/debian/libglib1.2/usr/lib/debug
-+ for l in `find $(CURDIR)/debian/libglib1.2/usr/lib -name '*.so*'`; do \
-+ cp -vdf $$l \
-+ $(CURDIR)/debian/libglib1.2/usr/lib/debug/; \
-+ done
-+
-+ dh_movefiles --sourcedir=debian/libglib1.2
-+ -find $(CURDIR)/debian/ -type d -empty | xargs rmdir -p 2>&1 > /dev/null
-+
-+# Build architecture-independent files here.
-+binary-indep: build install
-+ dh_testdir -i
-+ dh_testroot -i
-+
-+ dh_installdocs -i
-+
-+ dh_installexamples -i
-+ dh_installinfo -i
-+ dh_installchangelogs -i ChangeLog
-+ dh_compress -i
-+ dh_fixperms -i
-+ dh_installdeb -i
-+ dh_gencontrol -i
-+ dh_md5sums -i
-+ dh_builddeb -i
-+
-+# Build architecture-dependent files here.
-+binary-arch: build install
-+ dh_testdir -a
-+ dh_testroot -a
-+
-+# dh_installdebconf
-+ dh_installdocs -a
-+ dh_installexamples -a
-+ dh_installmenu -a
-+# dh_installlogrotate
-+# dh_installemacsen
-+# dh_installpam
-+# dh_installmime
-+# dh_installinit
-+# dh_installcron
-+ dh_installman -a
-+ dh_installinfo -a
-+# dh_undocumented
-+ dh_installchangelogs -a ChangeLog
-+ dh_link -a
-+ dh_strip -a -Nlibglib1.2-dbg
-+ dh_compress -a
-+ dh_fixperms -a
-+ dh_makeshlibs -a -Nlibglib1.2-dbg
-+ dh_makeshlibs -n -plibglib1.2 -V 'libglib1.2 (>= 1.2.0)'
-+ dh_installdeb -a
-+# dh_perl
-+ dh_shlibdeps -a
-+ dh_gencontrol -a
-+ dh_md5sums -a
-+ dh_builddeb -a
-+
-+binary: binary-indep binary-arch
-+.PHONY: build clean binary-indep binary-arch binary install
---- glib1.2-1.2.10.orig/debian/docs
-+++ glib1.2-1.2.10/debian/docs
-@@ -0,0 +1,2 @@
-+NEWS
-+README
---- glib1.2-1.2.10.orig/debian/README.Debian
-+++ glib1.2-1.2.10/debian/README.Debian
-@@ -0,0 +1,25 @@
-+glib for Debian
-+----------------------
-+
-+This is GLib version 1.2. GLib, is a library which includes support
-+routines for C such as lists, trees, hashes, memory allocation, and
-+many other things.
-+
-+Versions of GLib prior to 1.1 are distributed with GTK+ versions 1.1.0
-+and earlier.
-+
-+The GIMP Tool Kit (gtk) is a set of widgets to help you program
-+programs for the X Windowing System easily and powerfully.
-+
-+gtk is the moving force behind The GNU Image Manipulation Program (The
-+GIMP) -- the number one freely-available image editing and creation
-+program available.
-+
-+gtk is rapidly under development, and the source tree has officially
-+been separated from The GIMP now, as other teams of programmers
-+are beginning to write software using its great widget set -- like
-+GNOME, a desktop interface for X, and gzilla, a freely available
-+web browser for X.
-+
-+Ben Gertzfield <che@debian.org>, Mon, 29 Sep 1997 13:11:45 -0700
-+
---- glib1.2-1.2.10.orig/debian/changelog
-+++ glib1.2-1.2.10/debian/changelog
-@@ -0,0 +1,298 @@
-+glib1.2 (1.2.10-9) unstable; urgency=low
-+
-+ * debian/control:
-+ - bumped Standards-Version to 3.5.10.0.
-+ - changed the sections for libglib1.2-dev and libglib1.2-dbg to libdevel.
-+ * debian/compat:
-+ - use it instead of DH_COMPAT.
-+ * gmodule/Makefile.in, gthread/Makefile.in:
-+ fix the undefined non-weak symbols. (closes: Bug#193347)
-+
-+ -- Akira TAGOH <tagoh@debian.org> Sun, 18 May 2003 00:00:17 +0900
-+
-+glib1.2 (1.2.10-8) unstable; urgency=low
-+
-+ * Fixed libtool issue on mispel. (closes: Bug#183793)
-+ * acinclude.m4, ltconfig:
-+ - removed. it contained the old libtool stuff.
-+
-+ -- Akira TAGOH <tagoh@debian.org> Tue, 11 Mar 2003 23:36:10 +0900
-+
-+glib1.2 (1.2.10-7) unstable; urgency=low
-+
-+ * debian/rules:
-+ - fix twice modified the maintainer script for dh_installdocs.
-+ - support DEB_HOST_GNU_TYPE and DEB_BUILD_GNU_TYPE.
-+ - support noopt and nostrip for DEB_BUILD_OPTIONS.
-+ - copy the latest config.sub and config.guess. (closes: Bug#181942)
-+ - don't call ldconfig for -dbg package.
-+ * debian/control:
-+ - bumped Standards-Version to 3.5.8.
-+ - updated Build-Depends.
-+ - split the documentation files into libglib1.2-doc.
-+ * debian/libglib1.2-doc.info: add glib.info. (closes: Bug#159677)
-+
-+ -- Akira TAGOH <tagoh@debian.org> Thu, 27 Feb 2003 00:12:39 +0900
-+
-+glib1.2 (1.2.10-6) unstable; urgency=low
-+
-+ * debian/control:
-+ - removed libc6-dev from Build-Depends.
-+ - changed libc6-dev to libc6-dev | libc-dev in -dev's Depends.
-+
-+ -- Akira TAGOH <tagoh@debian.org> Thu, 22 Aug 2002 02:02:32 +0900
-+
-+glib1.2 (1.2.10-5) unstable; urgency=low
-+
-+ * debian/control: add libc6-dev to Depends for -dev (closes: Bug#147653)
-+
-+ -- Akira TAGOH <tagoh@debian.org> Wed, 22 May 2002 23:58:14 +0900
-+
-+glib1.2 (1.2.10-4) unstable; urgency=low
-+
-+ * debian/control: Fixed build-depends for NetBSD/i386 (closes: Bug#133443)
-+
-+ -- Akira TAGOH <tagoh@debian.org> Wed, 13 Feb 2002 02:22:20 +0900
-+
-+glib1.2 (1.2.10-3) unstable; urgency=low
-+
-+ * Closed a NMU bug. (closes: Bug#93932)
-+ * Fixed description typo (closes: Bug#102988)
-+ * -dbg package contains shared libraries for debugging. so if you
-+ need static link, add -static to compiler option and use
-+ static libraries which is included in libglib1.2-dev.
-+
-+ -- Akira TAGOH <tagoh@debian.org> Sat, 24 Nov 2001 20:54:25 +0900
-+
-+glib1.2 (1.2.10-2) unstable; urgency=low
-+
-+ * I took over this package from Ben.
-+ * Closed a bug because it is already fixed in the latest release.
-+ (closes: Bug#62463)
-+
-+ -- Akira TAGOH <tagoh@debian.org> Sat, 10 Nov 2001 19:49:14 +0900
-+
-+glib1.2 (1.2.10-1.2) unstable; urgency=low
-+
-+ * Non-Maintainer Upload, approved by Ben.
-+ * Updated config.sub and config.guess for ia64 (closes: #93932).
-+ * If -dev's postinst fails at install-info, have a look at Bug#99816.
-+
-+ -- Jordi Mallach <jordi@debian.org> Sat, 23 Jun 2001 05:28:15 +0200
-+
-+glib1.2 (1.2.10-1.1) unstable; urgency=low
-+
-+ * Binary-only rebuild because of gcc 2.95 atexit() problem on i386.
-+ (Closes: #93052)
-+
-+ -- Ben Gertzfield <che@debian.org> Wed, 11 Apr 2001 19:46:27 -0700
-+
-+glib1.2 (1.2.10-1) unstable; urgency=low
-+
-+ * New upstream version.
-+ * Patch config.sub for s390 architecture. (Closes: #88553)
-+
-+ -- Ben Gertzfield <che@debian.org> Sun, 1 Apr 2001 21:44:47 -0700
-+
-+glib1.2 (1.2.9-1) unstable; urgency=low
-+
-+ * New upstream version.
-+ * Include upstream changelog. (Closes: #59744)
-+ * Note that the include files have been moved (according to
-+ upstream) to /usr/include/glib-1.2/, but this should not be a
-+ problem for anything using glib-config. Please, PLEASE, don't
-+ submit bugs on my poor packages because your program isn't using
-+ glib-config!
-+ * Fix bashisms in debian/rules. (Hah, caught 'em on my own..)
-+
-+ -- Ben Gertzfield <che@debian.org> Fri, 2 Mar 2001 16:18:36 -0800
-+
-+glib1.2 (1.2.8-2) unstable; urgency=low
-+
-+ * Bump Standards-Version to 3.2.1.
-+
-+ -- Ben Gertzfield <che@debian.org> Sat, 23 Dec 2000 01:31:39 -0800
-+
-+glib1.2 (1.2.8-1) unstable; urgency=low
-+
-+ * New upstream version.
-+
-+ -- Ben Gertzfield <che@debian.org> Wed, 24 May 2000 19:41:54 -0700
-+
-+glib1.2 (1.2.7-2) frozen unstable; urgency=medium
-+
-+ * Fix "guard code" in configure.in that tests for gcc version
-+ greater than 2.8 (will fail when 3.0 comes out.) This fixes
-+ *half* of the release-critical bug report #55246.
-+ * The other half of RC bug #55246 is not really a glib problem;
-+ G_GNUC_EXTENSION arguably should be defined on all platforms, but
-+ that's up to upstream to change this. It's been reported upstream as
-+ gnome bug #6328, http://bugs.gnome.org/db/63/6328.html. In any case,
-+ gentoo should be using G_GINT64_CONSTANT(12345) for portably declaring
-+ 64-bit constants, instead of the undocumented, internal,
-+ not-defined-on-all-platforms G_GNUC_EXTENSION. I will be reassigning
-+ the remainder of RC bug #55246 to gentoo.
-+
-+ -- Ben Gertzfield <che@debian.org> Mon, 28 Feb 2000 12:33:57 -0800
-+
-+glib1.2 (1.2.7-1) frozen unstable; urgency=low
-+
-+ * To fix i18n problems with GTK+, glib 1.2.7 and gtk+ 1.2.7
-+ must both make it into frozen.
-+ * (New upstream version, too. :)
-+
-+ -- Ben Gertzfield <che@debian.org> Thu, 17 Feb 2000 09:12:20 -0800
-+
-+glib1.2 (1.2.6-1) unstable; urgency=low
-+
-+ * New upstream version.
-+ * Make sure docs are in /usr/share/doc/libglib1.2 etc.
-+
-+ -- Ben Gertzfield <che@debian.org> Fri, 15 Oct 1999 09:44:19 -0700
-+
-+glib1.2 (1.2.5-1) unstable; urgency=low
-+
-+ * New upstream version.
-+
-+ -- Ben Gertzfield <che@debian.org> Fri, 24 Sep 1999 09:27:25 -0700
-+
-+glib1.2 (1.2.4-1) unstable; urgency=low
-+
-+ * New upstream version.
-+
-+ -- Ben Gertzfield <che@debian.org> Tue, 24 Aug 1999 11:10:11 -0700
-+
-+glib1.2 (1.2.3-2) unstable; urgency=low
-+
-+ * Erg. Make sure -dev depends on exact version of lib, and -dbg
-+ depends on exact version of -dev and lib.
-+
-+ -- Ben Gertzfield <che@debian.org> Tue, 27 Jul 1999 15:24:33 -0700
-+
-+glib1.2 (1.2.3-1) unstable; urgency=low
-+
-+ * New upstream version.
-+
-+ -- Ben Gertzfield <che@debian.org> Tue, 11 May 1999 20:55:00 -0700
-+
-+glib1.2 (1.2.2-1) unstable; urgency=low
-+
-+ * New upstream version.
-+
-+ -- Ben Gertzfield <che@debian.org> Mon, 26 Apr 1999 18:15:06 -0700
-+
-+glib1.2 (1.2.1-2) unstable; urgency=low
-+
-+ * Recompile with GNU libc 2.1.
-+
-+ -- Ben Gertzfield <che@debian.org> Thu, 15 Apr 1999 13:26:50 -0700
-+
-+glib1.2 (1.2.1-1) unstable; urgency=low
-+
-+ * New upstream version.
-+ * Make the shlibs looser; now packages depend on libglib1.2 (>= 1.2.0)
-+
-+ -- Ben Gertzfield <che@debian.org> Thu, 25 Mar 1999 10:33:26 -0800
-+
-+glib1.2 (1.2.0-1) unstable; urgency=low
-+
-+ * Hallelujah! :) We made it.
-+
-+ -- Ben Gertzfield <che@debian.org> Thu, 25 Feb 1999 22:17:36 -0800
-+
-+glib1.1.16 (1.1.16-1) unstable; urgency=low
-+
-+ * New upstream version.
-+
-+ -- Ben Gertzfield <che@debian.org> Tue, 16 Feb 1999 16:55:07 -0800
-+
-+glib1.1.13 (1.1.13-1) unstable; urgency=low
-+
-+ * New upstream version.
-+
-+ -- Ben Gertzfield <che@debian.org> Wed, 20 Jan 1999 18:25:48 -0800
-+
-+glib1.1.12 (1.1.12-1) unstable; urgency=low
-+
-+ * New upstream version.
-+
-+ -- Ben Gertzfield <che@debian.org> Mon, 4 Jan 1999 14:13:59 -0800
-+
-+glib1.1.11 (1.1.11-1) unstable; urgency=low
-+
-+ * New upstream version. (They skipped .10.)
-+
-+ -- Ben Gertzfield <che@debian.org> Wed, 30 Dec 1998 21:46:40 -0800
-+
-+glib1.1.9 (1.1.9-1) unstable; urgency=low
-+
-+ * New upstream version.
-+ * Now debian/rules uses a $(version) variable to make my life easier.
-+
-+ -- Ben Gertzfield <che@debian.org> Thu, 17 Dec 1998 10:36:27 -0800
-+
-+glib1.1.6 (1.1.6-1) unstable; urgency=low
-+
-+ * New upstream version.
-+
-+ -- Ben Gertzfield <che@debian.org> Tue, 8 Dec 1998 20:54:59 -0800
-+
-+glib1.1.5 (1.1.5-2) unstable; urgency=low
-+
-+ * Now libglib1.1.5-dev Provides: libglib-dev and libglib1.1-dev.
-+
-+ -- Ben Gertzfield <che@debian.org> Sun, 29 Nov 1998 17:59:52 -0800
-+
-+glib1.1.5 (1.1.5-1) unstable; urgency=low
-+
-+ * Now the source and binary packages *all* specifically have the version
-+ number in them. This is so a new release of glib or gtk+ does not break
-+ all apps dependant upon glib or gtk+'s unstable branch.
-+ * Removed --enable-debug=no from libglib1.1 build; it was causing problems
-+
-+ -- Ben Gertzfield <che@debian.org> Tue, 24 Nov 1998 14:25:15 -0800
-+
-+glib (1.1.4-1) unstable; urgency=low
-+
-+ * New upstream version.
-+ * debian/control: libglib-dev and libglib-dbg now depend on ${Source-Version}
-+ of libglib1.1 to make upgrades force you to have one version of the library
-+ and -dev and -dbg, no more multiple versions allowed.
-+
-+ -- Ben Gertzfield <che@debian.org> Thu, 5 Nov 1998 10:50:03 -0800
-+
-+glib (1.1.3-2) unstable; urgency=low
-+
-+ * Rebuild with new clean-dbg target to fix my error helped along by
-+ an old broken debhelper.
-+
-+ -- Ben Gertzfield <che@debian.org> Tue, 29 Sep 1998 13:01:24 -0700
-+
-+glib (1.1.3-1) unstable; urgency=low
-+
-+ * New upstream version.
-+ * New libglib-dbg package.
-+
-+ -- Ben Gertzfield <che@debian.org> Mon, 21 Sep 1998 22:30:46 -0700
-+
-+glib (1.1.2-1) unstable; urgency=low
-+
-+ * New upstream version (that was fast!).
-+
-+ -- Ben Gertzfield <che@debian.org> Wed, 5 Aug 1998 12:13:59 -0700
-+
-+glib (1.1.1-1) unstable; urgency=low
-+
-+ * New upstream version.
-+
-+ -- Ben Gertzfield <che@debian.org> Tue, 4 Aug 1998 22:42:09 -0700
-+
-+glib (1.1.0-1) unstable; urgency=low
-+
-+ * Split off of GTK+ package upstream. New package.
-+
-+ -- Ben Gertzfield <che@debian.org> Mon, 27 Jul 1998 14:11:04 -0700
-+
-+Local variables:
-+mode: debian-changelog
-+End:
---- glib1.2-1.2.10.orig/debian/control
-+++ glib1.2-1.2.10/debian/control
-@@ -0,0 +1,73 @@
-+Source: glib1.2
-+Priority: optional
-+Section: libs
-+Maintainer: Akira TAGOH <tagoh@debian.org>
-+Standards-Version: 3.5.10.0
-+Build-Depends: debhelper (>> 4.0.0), libpth-dev [netbsd-i386], autotools-dev
-+
-+Package: libglib1.2
-+Architecture: any
-+Section: libs
-+Depends: ${shlibs:Depends}
-+Replaces: libgtk-doc
-+Description: The GLib library of C routines
-+ GLib is a library containing many useful C routines for things such
-+ as trees, hashes, and lists. GLib was previously distributed with
-+ the GTK+ toolkit, but has been split off as of the developers' version
-+ 1.1.0.
-+ .
-+ You do not need to install this package if you have libgtk1 (note 1,
-+ not 1.1 or 1.2) installed. libgtk1 included libglib in it. libgtk1.1
-+ and libgtk1.2, however, do need libglib1.1 to be installed separately.
-+
-+Package: libglib1.2-dev
-+Architecture: any
-+Section: libdevel
-+Depends: libglib1.2 (= ${Source-Version}), libc6-dev | libc-dev, pkg-config
-+Conflicts: libglib-dev, libglib1.1.5-dev, libglib1.1.7-dev, libglib1.1.8-dev, libglib1.1.9-dev, libglib1.1.10-dev, libglib1.1.11-dev, libglib1.1.12-dev, libglib1.1.13-dev, libglib1.1.16-dev, libglib1.2 (<< 1.2.10-3)
-+Provides: libglib-dev, libglib1.1-dev
-+Replaces: libgtk-doc, libglib1.1.5-dev, libglib1.1.6-dev, libglib1.1.9-dev, libglib1.1.11-dev, libglib1.1.12-dev, libglib1.1.13-dev, libglib1.1.16-dev, libglib1.2 (<< 1.2.10-3)
-+Suggests: libglib1.2-doc
-+Description: Development files for GLib library
-+ GLib is a library containing many useful C routines for things such
-+ as trees, hashes, and lists. GLib was previously distributed with
-+ the GTK+ toolkit, but has been split off as of the developers' version
-+ 1.1.0.
-+ .
-+ This package contains the header files and static libraries for the
-+ GLib C library
-+
-+Package: libglib1.2-dbg
-+Architecture: any
-+Section: libdevel
-+Priority: extra
-+Conflicts: libgtk-dev
-+Depends: libglib1.2 (= ${Source-Version})
-+Conflicts: libglib-dbg, libglib1.1.5-dbg, libglib1.1.7-dbg, libglib1.1.8-dbg, libglib1.1.9-dbg, libglib1.1.11-dbg, libglib1.1.12-dbg, libglib1.1.13-dbg, libglib1.1.16-dbg
-+Replaces: libglib1.1.5-dbg, libglib1.1.6-dbg, libglib1.1.9-dbg, libglib1.1.11-dbg, libglib1.1.12-dbg, libglib1.1.13-dbg, libglib1.1.16-dbg
-+Description: GLib libraries and debugging symbols
-+ GLib is a library containing many useful C routines for things such
-+ as trees, hashes, and lists. GLib was previously distributed with
-+ the GTK+ toolkit, but has been split off as of the developers' version
-+ 1.1.0.
-+ .
-+ This package contains unstripped shared libraries. it is provided
-+ primarily to provide a backtrace with names in a debugger, this makes
-+ it somewhat easier to interpret core dumps. The libraries are installed
-+ in /usr/lib/debug and can be used by placing that directory in
-+ LD_LIBRARY_PATH.
-+ Most people will not need this package.
-+
-+Package: libglib1.2-doc
-+Architecture: all
-+Section: doc
-+Depends: lynx | www-browser
-+Description: Documentation files for the GLib library version 1.2
-+ GLib is a library containing many useful C routines for things such
-+ as trees, hashes, and lists. GLib was previously distributed with
-+ the GTK+ toolkit, but has been split off as of the developers' version
-+ 1.1.0.
-+ .
-+ This package contains the documentation files for the GLib library
-+ in /usr/share/doc/libglib1.2-doc/ .
-+
---- glib1.2-1.2.10.orig/debian/copyright
-+++ glib1.2-1.2.10/debian/copyright
-@@ -0,0 +1,8 @@
-+This package was debianized by Ben Gertzfield <che@debian.org>
-+on Mon, 27 Jul 1998 14:17:44 -0700
-+
-+GIMP's source may be fetched from http://www.gimp.org/ .
-+
-+It may be redistributed under the terms of the GNU LGPL, Version 2 or
-+later, found on Debian systems in the file /usr/share/common-licenses/LGPL-2.
-+
---- glib1.2-1.2.10.orig/debian/compat
-+++ glib1.2-1.2.10/debian/compat
-@@ -0,0 +1 @@
-+4
---- glib1.2-1.2.10.orig/debian/libglib1.2-dbg.dirs
-+++ glib1.2-1.2.10/debian/libglib1.2-dbg.dirs
-@@ -0,0 +1 @@
-+usr/lib/debug
---- glib1.2-1.2.10.orig/debian/libglib1.2-dbg.files
-+++ glib1.2-1.2.10/debian/libglib1.2-dbg.files
-@@ -0,0 +1 @@
-+usr/lib/debug/*.so*
---- glib1.2-1.2.10.orig/debian/libglib1.2-dev.dirs
-+++ glib1.2-1.2.10/debian/libglib1.2-dev.dirs
-@@ -0,0 +1,4 @@
-+usr/include
-+usr/lib
-+usr/lib/pkgconfig
-+
---- glib1.2-1.2.10.orig/debian/libglib1.2-doc.doc-base
-+++ glib1.2-1.2.10/debian/libglib1.2-doc.doc-base
-@@ -0,0 +1,16 @@
-+Document: glib-docs
-+Title: GLib C library documentation
-+Author: Gregory McLean
-+Abstract: Library reference for GLib C library of useful functions
-+ This document goes into detail on each function of the GLib C
-+ library of useful functions to deal with common structures like
-+ lists, trees, et cetera.
-+Section: Apps/Programming
-+
-+Format: texinfo
-+Files: /usr/share/doc/libglib1.2-doc/glib.texi.gz
-+
-+Format: HTML
-+Index: /usr/share/doc/libglib1.2-doc/glib_toc.html
-+Files: /usr/share/doc/libglib1.2-doc/glib.html
-+
---- glib1.2-1.2.10.orig/debian/libglib1.2-dev.files
-+++ glib1.2-1.2.10/debian/libglib1.2-dev.files
-@@ -0,0 +1,7 @@
-+usr/bin/glib-config
-+usr/include/*
-+usr/lib/lib*.{so,la,a}
-+usr/lib/glib/include/*
-+usr/lib/pkgconfig/*.pc
-+usr/share/aclocal/*m4
-+usr/share/man/man1/glib-config.1*
---- glib1.2-1.2.10.orig/debian/libglib1.2-doc.dirs
-+++ glib1.2-1.2.10/debian/libglib1.2-doc.dirs
-@@ -0,0 +1 @@
-+usr/share/doc/libglib1.2-doc
---- glib1.2-1.2.10.orig/debian/libglib1.2-doc.files
-+++ glib1.2-1.2.10/debian/libglib1.2-doc.files
-@@ -0,0 +1,2 @@
-+usr/share/doc/libglib1.2-doc/*
-+usr/share/info/*
---- glib1.2-1.2.10.orig/debian/libglib1.2-doc.docs
-+++ glib1.2-1.2.10/debian/libglib1.2-doc.docs
-@@ -0,0 +1,2 @@
-+docs/*.html
-+docs/*.texi
---- glib1.2-1.2.10.orig/debian/libglib1.2-doc.info
-+++ glib1.2-1.2.10/debian/libglib1.2-doc.info
-@@ -0,0 +1 @@
-+docs/glib.info
---- glib1.2-1.2.10.orig/glibconfig.h
-+++ glib1.2-1.2.10/glibconfig.h
-@@ -0,0 +1,131 @@
-+/* glibconfig.h
-+ *
-+ * This is a generated file. Please modify `configure.in'
-+ */
-+
-+#ifndef GLIBCONFIG_H
-+#define GLIBCONFIG_H
-+
-+#include <limits.h>
-+#include <float.h>
-+#define GLIB_HAVE_SYS_POLL_H
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif /* __cplusplus */
-+
-+#define G_MINFLOAT FLT_MIN
-+#define G_MAXFLOAT FLT_MAX
-+#define G_MINDOUBLE DBL_MIN
-+#define G_MAXDOUBLE DBL_MAX
-+#define G_MINSHORT SHRT_MIN
-+#define G_MAXSHORT SHRT_MAX
-+#define G_MININT INT_MIN
-+#define G_MAXINT INT_MAX
-+#define G_MINLONG LONG_MIN
-+#define G_MAXLONG LONG_MAX
-+
-+typedef signed char gint8;
-+typedef unsigned char guint8;
-+typedef signed short gint16;
-+typedef unsigned short guint16;
-+typedef signed int gint32;
-+typedef unsigned int guint32;
-+
-+#if defined (__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8))
-+# define G_GNUC_EXTENSION __extension__
-+#else
-+# define G_GNUC_EXTENSION
-+#endif
-+
-+#define G_HAVE_GINT64 1
-+
-+G_GNUC_EXTENSION typedef signed long long gint64;
-+G_GNUC_EXTENSION typedef unsigned long long guint64;
-+
-+#define G_GINT64_CONSTANT(val) (G_GNUC_EXTENSION (val##LL))
-+
-+#define GPOINTER_TO_INT(p) ((gint) (p))
-+#define GPOINTER_TO_UINT(p) ((guint) (p))
-+
-+#define GINT_TO_POINTER(i) ((gpointer) (i))
-+#define GUINT_TO_POINTER(u) ((gpointer) (u))
-+
-+#ifdef NeXT /* @#%@! NeXTStep */
-+# define g_ATEXIT(proc) (!atexit (proc))
-+#else
-+# define g_ATEXIT(proc) (atexit (proc))
-+#endif
-+
-+#define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END
-+
-+#define GLIB_MAJOR_VERSION 1
-+#define GLIB_MINOR_VERSION 2
-+#define GLIB_MICRO_VERSION 10
-+
-+
-+#define G_VA_COPY __va_copy
-+
-+#ifdef __cplusplus
-+#define G_HAVE_INLINE 1
-+#else /* !__cplusplus */
-+#define G_HAVE_INLINE 1
-+#define G_HAVE___INLINE 1
-+#define G_HAVE___INLINE__ 1
-+#endif /* !__cplusplus */
-+
-+#define G_THREADS_ENABLED
-+#define G_THREADS_IMPL_POSIX
-+typedef struct _GStaticMutex GStaticMutex;
-+struct _GStaticMutex
-+{
-+ struct _GMutex *runtime_mutex;
-+ union {
-+ char pad[24];
-+ double dummy_double;
-+ void *dummy_pointer;
-+ long dummy_long;
-+ } aligned_pad_u;
-+};
-+#define G_STATIC_MUTEX_INIT { NULL, { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} } }
-+#define g_static_mutex_get_mutex(mutex) (g_thread_use_default_impl ? ((GMutex*) &((mutex)->aligned_pad_u)) : g_static_mutex_get_mutex_impl (&((mutex)->runtime_mutex)))
-+
-+#define GINT16_TO_LE(val) ((gint16) (val))
-+#define GUINT16_TO_LE(val) ((guint16) (val))
-+#define GINT16_TO_BE(val) ((gint16) GUINT16_SWAP_LE_BE (val))
-+#define GUINT16_TO_BE(val) (GUINT16_SWAP_LE_BE (val))
-+#define GINT32_TO_LE(val) ((gint32) (val))
-+#define GUINT32_TO_LE(val) ((guint32) (val))
-+#define GINT32_TO_BE(val) ((gint32) GUINT32_SWAP_LE_BE (val))
-+#define GUINT32_TO_BE(val) (GUINT32_SWAP_LE_BE (val))
-+#define GINT64_TO_LE(val) ((gint64) (val))
-+#define GUINT64_TO_LE(val) ((guint64) (val))
-+#define GINT64_TO_BE(val) ((gint64) GUINT64_SWAP_LE_BE (val))
-+#define GUINT64_TO_BE(val) (GUINT64_SWAP_LE_BE (val))
-+#define GLONG_TO_LE(val) ((glong) GINT32_TO_LE (val))
-+#define GULONG_TO_LE(val) ((gulong) GUINT32_TO_LE (val))
-+#define GLONG_TO_BE(val) ((glong) GINT32_TO_BE (val))
-+#define GULONG_TO_BE(val) ((gulong) GUINT32_TO_BE (val))
-+#define GINT_TO_LE(val) ((gint) GINT32_TO_LE (val))
-+#define GUINT_TO_LE(val) ((guint) GUINT32_TO_LE (val))
-+#define GINT_TO_BE(val) ((gint) GINT32_TO_BE (val))
-+#define GUINT_TO_BE(val) ((guint) GUINT32_TO_BE (val))
-+#define G_BYTE_ORDER G_LITTLE_ENDIAN
-+
-+#define GLIB_SYSDEF_POLLIN =1
-+#define GLIB_SYSDEF_POLLOUT =4
-+#define GLIB_SYSDEF_POLLPRI =2
-+#define GLIB_SYSDEF_POLLERR =8
-+#define GLIB_SYSDEF_POLLHUP =16
-+#define GLIB_SYSDEF_POLLNVAL =32
-+
-+
-+#define G_HAVE_WCHAR_H 1
-+#define G_HAVE_WCTYPE_H 1
-+
-+
-+#ifdef __cplusplus
-+}
-+#endif /* __cplusplus */
-+
-+#endif /* GLIBCONFIG_H */
---- glib1.2-1.2.10.orig/stamp-gc-h
-+++ glib1.2-1.2.10/stamp-gc-h
-@@ -0,0 +1 @@
-+timestamp
---- glib1.2-1.2.10.orig/glibconfig-sysdefs.h
-+++ glib1.2-1.2.10/glibconfig-sysdefs.h
-@@ -0,0 +1,6 @@
-+#define GLIB_SYSDEF_POLLIN =1
-+#define GLIB_SYSDEF_POLLOUT =4
-+#define GLIB_SYSDEF_POLLPRI =2
-+#define GLIB_SYSDEF_POLLERR =8
-+#define GLIB_SYSDEF_POLLHUP =16
-+#define GLIB_SYSDEF_POLLNVAL =32
diff --git a/openwrt/package/glib/patches/02-cross-compile-fix.patch b/openwrt/package/glib/patches/02-cross-compile-fix.patch
deleted file mode 100644
index e3d68a0159..0000000000
--- a/openwrt/package/glib/patches/02-cross-compile-fix.patch
+++ /dev/null
@@ -1,210 +0,0 @@
-diff -urN glib-1.2.10.old/configure glib-1.2.10/configure
---- glib-1.2.10.old/configure 2005-04-03 01:09:18.000000000 +0200
-+++ glib-1.2.10/configure 2005-04-03 01:09:37.000000000 +0200
-@@ -6025,7 +6025,7 @@
- glib_save_LIBS=$LIBS
- LIBS="$LIBS -lm"
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 6032 "configure"
-@@ -6043,7 +6043,7 @@
- glib_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS -std1"
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 6050 "configure"
-@@ -6390,7 +6390,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 6397 "configure"
-@@ -6430,7 +6430,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 6437 "configure"
-@@ -6470,7 +6470,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 6477 "configure"
-@@ -6510,7 +6510,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 6517 "configure"
-@@ -6550,7 +6550,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 6557 "configure"
-@@ -6590,7 +6590,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 6597 "configure"
-@@ -6708,7 +6708,7 @@
- else
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 6715 "configure"
-@@ -6749,7 +6749,7 @@
- else
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 6756 "configure"
-@@ -6790,7 +6790,7 @@
- else
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 6797 "configure"
-@@ -6876,7 +6876,7 @@
- rm -f conftest*
- if test $ac_cv_c_bigendian = unknown; then
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 6883 "configure"
-@@ -7767,7 +7767,7 @@
- else
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 7774 "configure"
-@@ -7809,7 +7809,7 @@
- else
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 7816 "configure"
-@@ -7854,7 +7854,7 @@
- else
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 7861 "configure"
-@@ -7899,7 +7899,7 @@
- else
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 7906 "configure"
-@@ -8254,7 +8254,7 @@
- else
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 8261 "configure"
-@@ -8306,7 +8306,7 @@
- else
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 8313 "configure"
-@@ -9137,7 +9137,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 9144 "configure"
-@@ -9237,7 +9237,7 @@
- echo "configure:9238: checking whether pthread_mutex_trylock is posix like" >&5
- # DCE Threads return 1 as success, posix 0. what a mess.
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 9244 "configure"
-@@ -9267,7 +9267,7 @@
- echo "configure:9268: checking whether pthread_cond_timedwait is posix like" >&5
- # DCE Threads return -1 as failure, posix ETIMEDOUT.
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 9274 "configure"
-@@ -9332,7 +9332,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 9339 "configure"
-@@ -9452,7 +9452,7 @@
- done
- echo "return 0; }" >>confrun.c
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 9459 "configure"
diff --git a/openwrt/package/glib/patches/03-use-glibconfig-sysdefs b/openwrt/package/glib/patches/03-use-glibconfig-sysdefs
deleted file mode 100644
index 932d7c3800..0000000000
--- a/openwrt/package/glib/patches/03-use-glibconfig-sysdefs
+++ /dev/null
@@ -1,31 +0,0 @@
-diff -urN glib-1.2.10.old/glib.h glib-1.2.10/glib.h
---- glib-1.2.10.old/glib.h 2001-02-27 04:44:38.000000000 +0100
-+++ glib-1.2.10/glib.h 2005-04-03 01:43:17.000000000 +0200
-@@ -63,6 +63,7 @@
- * exist. The prototype looks like the above, give or take a const,
- * or size_t.
- */
-+#include <glibconfig-sysdefs.h>
- #include <glibconfig.h>
-
- /* include varargs functions for assertment macros
-diff -urN glib-1.2.10.old/configure glib-1.2.10/configure
---- glib-1.2.10.old/configure 2005-04-03 01:43:49.000000000 +0200
-+++ glib-1.2.10/configure 2005-04-03 01:45:47.000000000 +0200
-@@ -575,16 +575,6 @@
- # Save this value here, since automake will set cflags later
- cflags_set=${CFLAGS+set}
-
--# we rewrite this file
--rm -f glibconfig-sysdefs.h
--
--
--
--
--
--
--
--
-
- # libtool versioning
- LT_RELEASE=$GLIB_MAJOR_VERSION.$GLIB_MINOR_VERSION
diff --git a/openwrt/package/glib/patches/04-gcc3.4-fix b/openwrt/package/glib/patches/04-gcc3.4-fix
deleted file mode 100644
index 96f10b7fa7..0000000000
--- a/openwrt/package/glib/patches/04-gcc3.4-fix
+++ /dev/null
@@ -1,22 +0,0 @@
-Submitted By: Uwe Düffert (lfs at uwe-dueffert dot de)
-Date: 2004-05-15
-Initial Package Version: 1.2.10
-Origin: self-created, http://www.uwe-dueffert.de/lfs/ownpatches/glib-1.2.10-gcc34-1.patch
-Upstream Status: not reported
-Description: fix compilation of glib1 with gcc34
-
-$LastChangedBy$
-$Date$
-
-diff -Naur glib-1.2.10.orig/gstrfuncs.c glib-1.2.10/gstrfuncs.c
---- glib-1.2.10.orig/gstrfuncs.c 2004-05-15 13:40:03.556092792 +0000
-+++ glib-1.2.10/gstrfuncs.c 2004-05-15 13:40:36.712052320 +0000
-@@ -47,6 +47,8 @@
- * inteferes with g_strsignal() on some OSes
- */
-
-+#define G_GNUC_PRETTY_FUNCTION
-+
- typedef union _GDoubleIEEE754 GDoubleIEEE754;
- #define G_IEEE754_DOUBLE_BIAS (1023)
- /* multiply with base2 exponent to get base10 exponent (nomal numbers) */
diff --git a/openwrt/package/gmediaserver/Config.in b/openwrt/package/gmediaserver/Config.in
deleted file mode 100644
index e9b6ed5049..0000000000
--- a/openwrt/package/gmediaserver/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_GMEDIASERVER
- prompt "gmediaserver...................... An UPnP music media server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_ID3LIB
- select BR2_PACKAGE_LIBUPNP
- help
- An UPnP music media server.
-
- http://www.nongnu.org/gmediaserver/
-
- Depends: id3lib, libupnp
-
diff --git a/openwrt/package/gmediaserver/Makefile b/openwrt/package/gmediaserver/Makefile
deleted file mode 100644
index bbadfb1129..0000000000
--- a/openwrt/package/gmediaserver/Makefile
+++ /dev/null
@@ -1,75 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=gmediaserver
-PKG_VERSION:=0.9.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=93de0f8dcbc1353a0d0dd5b5ab4b3142
-
-PKG_SOURCE_URL:=http://savannah.nongnu.org/download/gmediaserver/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,GMEDIASERVER,gmediaserver,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS=" -lixml -lthreadutil -lupnp -luClibc++ -lz" \
- am_cv_func_iconv=no \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --disable-rpath \
- --with-gnu-ld \
- --with-id3lib="$(STAGING_DIR)/usr" \
- --with-libupnp="$(STAGING_DIR)/usr" \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_GMEDIASERVER):
- install -m0755 -d $(IDIR_GMEDIASERVER)/etc/default
- install -m0644 ./files/gmediaserver.default $(IDIR_GMEDIASERVER)/etc/default/gmediaserver
- install -m0755 -d $(IDIR_GMEDIASERVER)/etc/init.d
- install -m0755 ./files/gmediaserver.init $(IDIR_GMEDIASERVER)/etc/init.d/gmediaserver
- install -m0755 -d $(IDIR_GMEDIASERVER)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/gmediaserver $(IDIR_GMEDIASERVER)/usr/sbin/
- $(RSTRIP) $(IDIR_GMEDIASERVER)
- $(IPKG_BUILD) $(IDIR_GMEDIASERVER) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/gmediaserver/files/gmediaserver.default b/openwrt/package/gmediaserver/files/gmediaserver.default
deleted file mode 100644
index d130f912d5..0000000000
--- a/openwrt/package/gmediaserver/files/gmediaserver.default
+++ /dev/null
@@ -1 +0,0 @@
-OPTIONS="--background --interface=br0 --pid-file=$PID_F"
diff --git a/openwrt/package/gmediaserver/files/gmediaserver.init b/openwrt/package/gmediaserver/files/gmediaserver.init
deleted file mode 100644
index 1582b37cc9..0000000000
--- a/openwrt/package/gmediaserver/files/gmediaserver.init
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-BIN=gmediaserver
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/gmediaserver/ipkg/gmediaserver.conffiles b/openwrt/package/gmediaserver/ipkg/gmediaserver.conffiles
deleted file mode 100644
index d915334a35..0000000000
--- a/openwrt/package/gmediaserver/ipkg/gmediaserver.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/default/gmediaserver
diff --git a/openwrt/package/gmediaserver/ipkg/gmediaserver.control b/openwrt/package/gmediaserver/ipkg/gmediaserver.control
deleted file mode 100644
index 6ba003f5a5..0000000000
--- a/openwrt/package/gmediaserver/ipkg/gmediaserver.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: gmediaserver
-Priority: optional
-Section: net
-Depends: id3lib, libupnp
-Description: An UPnP music media server.
diff --git a/openwrt/package/gmediaserver/patches/no_iconv.patch b/openwrt/package/gmediaserver/patches/no_iconv.patch
deleted file mode 100644
index 2e61211711..0000000000
--- a/openwrt/package/gmediaserver/patches/no_iconv.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-diff -ruN gmediaserver-0.8.0-old/src/main.c gmediaserver-0.8.0-new/src/main.c
---- gmediaserver-0.8.0-old/src/main.c 2005-09-10 09:26:00.000000000 +0200
-+++ gmediaserver-0.8.0-new/src/main.c 2005-09-17 20:48:01.000000000 +0200
-@@ -32,8 +32,10 @@
- #include <stdbool.h> /* Gnulib, C99 */
- #include <signal.h> /* ? */
- #include <locale.h> /* ? */
-+#ifdef HAVE_ICONV
- #include <iconv.h> /* Gnulib, POSIX */
- #include "iconvme.h" /* Gnulib */
-+#endif
- #ifdef HAVE_NL_LANGINFO
- #include <langinfo.h>
- #endif
-@@ -71,8 +73,10 @@
- #ifdef HAVE_ID3LIB
- { "disable-id3", no_argument, NULL, OPT_DISABLE_ID3 },
- #endif
-+#ifdef HAVE_ICONV
- { "in-charset", required_argument, NULL, OPT_IN_CHARSET },
- { "device-charset", required_argument, NULL, OPT_DEVICE_CHARSET },
-+#endif
- { "friendly-name", required_argument, NULL, OPT_FRIENDLY_NAME },
- { "pid-file", required_argument, NULL, OPT_PIDFILE },
- { "profile", required_argument, NULL, OPT_PROFILE, },
-@@ -90,15 +94,21 @@
- { NULL, 0, NULL, 0 }
- };
-
-+#ifdef HAVE_ICONV
- iconv_t charset_convert = (iconv_t) -1;
-+#endif
- const char version_etc_copyright[] = "Copyright (C) 2005 Oskar Liljeblad.";
-
- char *
- convert_string(const char *str)
- {
-+#ifdef HAVE_ICONV
- if (charset_convert == (iconv_t) -1)
- return xstrdup(str);
- return iconv_alloc(charset_convert, str);
-+#else
-+ return xstrdup(str);
-+#endif
- }
-
- static void
-@@ -140,13 +150,17 @@
- char *logfilename = NULL;
- char *timestamp_format = NULL;
- uint32_t expire_time;
-+#ifdef HAVE_ICONV
- char *in_charset = NULL;
- char *device_charset = NULL;
-+#endif
-
- set_program_name(argv[0]);
-
-+#ifdef LOCALE
- if (setlocale(LC_ALL, "") == NULL)
- warn(_("cannot set locale: %s\n"), errstr);
-+#endif
- #ifdef ENABLE_NLS
- if (bindtextdomain(PACKAGE, LOCALEDIR) == NULL)
- warn(_("cannot bind message domain: %s\n"), errstr);
-@@ -174,12 +188,14 @@
- id3_enabled = false;
- break;
- #endif
-+#ifdef HAVE_ICONV
- case OPT_IN_CHARSET:
- in_charset = optarg;
- break;
- case OPT_DEVICE_CHARSET:
- device_charset = optarg;
- break;
-+#endif
- case OPT_FRIENDLY_NAME:
- if (optarg[0] == '\0')
- die(_("friendly name cannot be empty\n"));
-@@ -320,6 +336,7 @@
-
- init_logging(logfilename, timestamp_format);
-
-+#ifdef HAVE_ICONV
- if (device_charset != NULL) {
- if (in_charset == NULL) {
- #ifdef HAVE_NL_LANGINFO
-@@ -336,6 +353,7 @@
- if (charset_convert == (iconv_t) -1)
- die(_("cannot create character set convertor\nTry using another value for --in-charset or --device-charset\n"));
- }
-+#endif
-
- /* We could write pid before initiating logging too.
- */
-@@ -409,8 +427,10 @@
- if (pidfilename != NULL)
- unlink(pidfilename); /* ignore errors */
-
-+#ifdef HAVE_ICONV
- if (charset_convert != (iconv_t) -1)
- iconv_close(charset_convert); /* ignore errors (only EINVAL) */
-+#endif
-
- finish_logging(true);
-
diff --git a/openwrt/package/gmp/Config.in b/openwrt/package/gmp/Config.in
deleted file mode 100644
index 1e995a7340..0000000000
--- a/openwrt/package/gmp/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_COMPILE_GMP
- tristate
- default n
- depends BR2_PACKAGE_LIBGMP
-
-config BR2_PACKAGE_LIBGMP
- prompt "libgmp............................ GNU multiprecision arithmetic library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_GMP
- help
- GNU multiprecision arithmetic library
-
- http://www.swox.com/gmp/
-
diff --git a/openwrt/package/gmp/Makefile b/openwrt/package/gmp/Makefile
deleted file mode 100644
index 53db9451bc..0000000000
--- a/openwrt/package/gmp/Makefile
+++ /dev/null
@@ -1,79 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=gmp
-PKG_VERSION:=4.1.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=0aa7d3b3f5b5ec5951e7dddd6f65e891
-
-PKG_SOURCE_URL:=@GNU/gmp
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBGMP,libgmp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBGMP):
- install -m0755 -d $(IDIR_LIBGMP)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgmp.so.* $(IDIR_LIBGMP)/usr/lib/
- $(RSTRIP) $(IDIR_LIBGMP)
- $(IPKG_BUILD) $(IDIR_LIBGMP) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libgmp.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/gmp* $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgmp.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libgmp.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/gmp* \
- $(STAGING_DIR)/usr/lib/libgmp.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/gmp/ipkg/libgmp.control b/openwrt/package/gmp/ipkg/libgmp.control
deleted file mode 100644
index 1690028561..0000000000
--- a/openwrt/package/gmp/ipkg/libgmp.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libgmp
-Priority: optional
-Section: net
-Description: GNU multiprecision arithmetic library
diff --git a/openwrt/package/gnutls/Config.in b/openwrt/package/gnutls/Config.in
deleted file mode 100644
index bb3ea99e7b..0000000000
--- a/openwrt/package/gnutls/Config.in
+++ /dev/null
@@ -1,99 +0,0 @@
-config BR2_COMPILE_GNUTLS
- tristate
- default n
- depends BR2_PACKAGE_LIBGNUTLS
-
-config BR2_PACKAGE_LIBGNUTLS
- prompt "libgnutls......................... The GNU TLS library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_GNUTLS
- select BR2_PACKAGE_LIBGCRYPT
- help
- GnuTLS is a project that aims to develop a library which provides a
- secure layer, over a reliable transport layer. Currently the GnuTLS
- library implements the proposed standards by the IETF's TLS working
- group.
-
- Quoting from RFC2246 - the TLS 1.0 protocol specification:
-
- "The TLS protocol provides communications privacy over the Internet.
- The protocol allows client/server applications to communicate in a
- way that is designed to prevent eavesdropping, tampering, or message
- forgery."
-
- Features
-
- * Support for TLS 1.1 and SSL 3.0 protocols
- * Support for TLS extensions
- * Support for authentication using the SRP protocol
- * Support for authentication using both X.509 certificates
- * and OpenPGP keys Support for X.509 and OpenPGP certificate handling.
- * Supports all the strong encryption algorithms
-
- http://www.gnu.org/software/gnutls/
-
- This packages contains the GnuTLS shared libraries, needed by other programs.
-
-config BR2_PACKAGE_GNUTLS_UTILS
- prompt "gnutls-utils.................... The GNU TLS utilities"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBGNUTLS
- help
- GnuTLS is a project that aims to develop a library which provides a
- secure layer, over a reliable transport layer. Currently the GnuTLS
- library implements the proposed standards by the IETF's TLS working
- group.
-
- Quoting from RFC2246 - the TLS 1.0 protocol specification:
-
- "The TLS protocol provides communications privacy over the Internet.
- The protocol allows client/server applications to communicate in a
- way that is designed to prevent eavesdropping, tampering, or message
- forgery."
-
- Features
-
- * Support for TLS 1.1 and SSL 3.0 protocols
- * Support for TLS extensions
- * Support for authentication using the SRP protocol
- * Support for authentication using both X.509 certificates
- * and OpenPGP keys Support for X.509 and OpenPGP certificate handling.
- * Supports all the strong encryption algorithms
-
- http://www.gnu.org/software/gnutls/
-
- This packages contains some GnuTLS utilities.
-
-config BR2_PACKAGE_LIBGNUTLS_OPENSSL
- prompt "libgnutls-openssl............... The GNU TLS OpenSSL compatibility layer library"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBGNUTLS
- help
- GnuTLS is a project that aims to develop a library which provides a
- secure layer, over a reliable transport layer. Currently the GnuTLS
- library implements the proposed standards by the IETF's TLS working
- group.
-
- Quoting from RFC2246 - the TLS 1.0 protocol specification:
-
- "The TLS protocol provides communications privacy over the Internet.
- The protocol allows client/server applications to communicate in a
- way that is designed to prevent eavesdropping, tampering, or message
- forgery."
-
- Features
-
- * Support for TLS 1.1 and SSL 3.0 protocols
- * Support for TLS extensions
- * Support for authentication using the SRP protocol
- * Support for authentication using both X.509 certificates
- * and OpenPGP keys Support for X.509 and OpenPGP certificate handling.
- * Supports all the strong encryption algorithms
-
- http://www.gnu.org/software/gnutls/
-
- This packages contains the GnuTLS OpenSSL compatibility layer shared library.
-
diff --git a/openwrt/package/gnutls/Makefile b/openwrt/package/gnutls/Makefile
deleted file mode 100644
index b02199fce1..0000000000
--- a/openwrt/package/gnutls/Makefile
+++ /dev/null
@@ -1,130 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=gnutls
-PKG_VERSION:=1.0.25
-PKG_RELEASE:=0
-PKG_MD5SUM:=3585b5b204135e51e0efc9084b3e028b
-
-PKG_SOURCE_URL:=ftp://ftp.gnutls.org/pub/gnutls/ \
- ftp://ftp.gnupg.org/gcrypt/alpha/gnutls/ \
- http://www.mirrors.wiretapped.net/security/network-security/gnutls/ \
- ftp://ftp.mirrors.wiretapped.net/pub/security/network-security/gnutls/ \
- http://josefsson.org/gnutls/releases/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBGNUTLS,libgnutls,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,GNUTLS_UTILS,gnutls-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIBGNUTLS_OPENSSL,libgnutls-openssl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- touch configure.in ; \
- touch acinclude.m4 ; \
- touch aclocal.m4 ; \
- touch Makefile.in ; \
- touch config.h.in ; \
- touch configure ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --disable-srp-authentication \
- --disable-anon-authentication \
- --disable-openpgp-authentication \
- --with-included-opencdk=yes \
- --with-included-libtasn1=yes \
- --with-included-libcfg=yes \
- --without-zlib \
- --without-lzo \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBGNUTLS):
- install -m0755 -d $(IDIR_LIBGNUTLS)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnutls{,-extra}.so.* $(IDIR_LIBGNUTLS)/usr/lib/
- $(RSTRIP) $(IDIR_LIBGNUTLS)
- $(IPKG_BUILD) $(IDIR_LIBGNUTLS) $(PACKAGE_DIR)
-
-$(IPKG_LIBGNUTLS_OPENSSL):
- install -m0755 -d $(IDIR_LIBGNUTLS_OPENSSL)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnutls-openssl.so.* $(IDIR_LIBGNUTLS_OPENSSL)/usr/lib/
- $(RSTRIP) $(IDIR_LIBGNUTLS_OPENSSL)
- $(IPKG_BUILD) $(IDIR_LIBGNUTLS_OPENSSL) $(PACKAGE_DIR)
-
-$(IPKG_GNUTLS_UTILS):
- install -m0755 -d $(IDIR_GNUTLS_UTILS)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/certtool $(IDIR_GNUTLS_UTILS)/usr/bin/
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/gnutls-{cli,serv} $(IDIR_GNUTLS_UTILS)/usr/bin/
- $(RSTRIP) $(IDIR_GNUTLS_UTILS)
- $(IPKG_BUILD) $(IDIR_GNUTLS_UTILS) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libgnutls.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/libgnutls{,-extra}-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/gnutls $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnutls{,-extra,-openssl}.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/gnutls{,-extra}.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- mkdir -p $(STAGING_DIR)/usr/share/aclocal
- $(CP) $(PKG_INSTALL_DIR)/usr/share/aclocal/libgnutls{,-extra}.m4 $(STAGING_DIR)/usr/share/aclocal/
- $(SED) 's,-I$${includedir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/gnutls{,-extra}.pc
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/gnutls{,-extra}.pc
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libgnutls.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/libgnutls{,-extra}-config \
- $(STAGING_DIR)/usr/include/gnutls \
- $(STAGING_DIR)/usr/lib/libgnutls{,-extra,-openssl}.{a,so*} \
- $(STAGING_DIR)/usr/lib/pkgconfig/gnutls{,-extra}.pc \
- $(STAGING_DIR)/usr/share/aclocal/libgnutls{,-extra}.m4 \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/gnutls/ipkg/gnutls-utils.control b/openwrt/package/gnutls/ipkg/gnutls-utils.control
deleted file mode 100644
index 0353a54b15..0000000000
--- a/openwrt/package/gnutls/ipkg/gnutls-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: gnutls-utils
-Priority: optional
-Section: admin
-Description: GNU TLS utilities
-Depends: libgnutls
diff --git a/openwrt/package/gnutls/ipkg/libgnutls-openssl.control b/openwrt/package/gnutls/ipkg/libgnutls-openssl.control
deleted file mode 100644
index ea06e1522c..0000000000
--- a/openwrt/package/gnutls/ipkg/libgnutls-openssl.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libgnutls-openssl
-Priority: optional
-Section: libs
-Description: GNU TLS OpenSSL compatibility layer library
-Depends: libgnutls
diff --git a/openwrt/package/gnutls/ipkg/libgnutls.control b/openwrt/package/gnutls/ipkg/libgnutls.control
deleted file mode 100644
index e6d015ddb1..0000000000
--- a/openwrt/package/gnutls/ipkg/libgnutls.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libgnutls
-Priority: optional
-Section: libs
-Description: GNU TLS library
-Depends: libgcrypt
diff --git a/openwrt/package/gnutls/patches/500-cross-compile.patch b/openwrt/package/gnutls/patches/500-cross-compile.patch
deleted file mode 100644
index 5694bb25f4..0000000000
--- a/openwrt/package/gnutls/patches/500-cross-compile.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-diff -ruN gnutls-1.0.24-orig/configure gnutls-1.0.24-1/configure
---- gnutls-1.0.24-orig/configure 2005-01-18 19:31:03.000000000 +0100
-+++ gnutls-1.0.24-1/configure 2005-03-15 23:23:12.000000000 +0100
-@@ -3633,7 +3633,7 @@
- if test x$opt_developer_mode = xyes; then
- CFLAGS="${CFLAGS} -g -Wno-format-y2k -Wall -Wcast-align -W -Wpointer-arith -Wchar-subscripts -Wformat-security -Wmissing-braces -Winline -Wstrict-prototypes"
- else
-- CFLAGS="${CFLAGS} -O2 -finline-functions"
-+ CFLAGS="${CFLAGS} -finline-functions"
- fi
-
- if test x$opt_dmalloc_mode = xyes; then
-@@ -25004,8 +25004,8 @@
-
-
-
--LIBGNUTLS_LIBS="-L${libdir} -lgnutls $LIBTASN1_LIBS $LIBGCRYPT_LIBS $LIBS"
--LIBGNUTLS_CFLAGS="$LIBGCRYPT_CFLAGS $LIBTASN1_CFLAGS -I${includedir}"
-+LIBGNUTLS_LIBS="-lgnutls $LIBTASN1_LIBS $LIBGCRYPT_LIBS $LIBS"
-+LIBGNUTLS_CFLAGS="$LIBGCRYPT_CFLAGS $LIBTASN1_CFLAGS"
-
- CFLAGS="${CFLAGS} ${LIBGCRYPT_CFLAGS}"
-
-@@ -25015,8 +25015,8 @@
- SERV_LIBS="$LIBS $SERV_LIBS"
-
-
--LIBGNUTLS_EXTRA_LIBS="-L${libdir} -lgnutls-extra $LIBOPENCDK_LIBS $LZO_LIBS $LIBGNUTLS_LIBS"
--LIBGNUTLS_EXTRA_CFLAGS="$LIBOPENCDK_CFLAGS -I${includedir}"
-+LIBGNUTLS_EXTRA_LIBS="-lgnutls-extra $LIBOPENCDK_LIBS $LZO_LIBS $LIBGNUTLS_LIBS"
-+LIBGNUTLS_EXTRA_CFLAGS="$LIBOPENCDK_CFLAGS $LIBGNUTLS_CFLAGS"
-
-
-
-diff -ruN gnutls-1.0.24-orig/configure.in gnutls-1.0.24-1/configure.in
---- gnutls-1.0.24-orig/configure.in 2004-11-14 00:06:57.000000000 +0100
-+++ gnutls-1.0.24-1/configure.in 2005-03-15 23:24:35.000000000 +0100
-@@ -137,7 +137,7 @@
- if test x$opt_developer_mode = xyes; then
- CFLAGS="${CFLAGS} -g -Wno-format-y2k -Wall -Wcast-align -W -Wpointer-arith -Wchar-subscripts -Wformat-security -Wmissing-braces -Winline -Wstrict-prototypes"
- else
-- CFLAGS="${CFLAGS} -O2 -finline-functions"
-+ CFLAGS="${CFLAGS} -finline-functions"
- fi
-
- if test x$opt_dmalloc_mode = xyes; then
-@@ -489,8 +489,8 @@
- ])
- AM_PROG_LIBTOOL
-
--LIBGNUTLS_LIBS="-L${libdir} -lgnutls $LIBTASN1_LIBS $LIBGCRYPT_LIBS $LIBS"
--LIBGNUTLS_CFLAGS="$LIBGCRYPT_CFLAGS $LIBTASN1_CFLAGS -I${includedir}"
-+LIBGNUTLS_LIBS="-lgnutls $LIBTASN1_LIBS $LIBGCRYPT_LIBS $LIBS"
-+LIBGNUTLS_CFLAGS="$LIBGCRYPT_CFLAGS $LIBTASN1_CFLAGS"
-
- CFLAGS="${CFLAGS} ${LIBGCRYPT_CFLAGS}"
-
-@@ -500,8 +500,8 @@
- SERV_LIBS="$LIBS $SERV_LIBS"
- AC_SUBST(SERV_LIBS)
-
--LIBGNUTLS_EXTRA_LIBS="-L${libdir} -lgnutls-extra $LIBOPENCDK_LIBS $LZO_LIBS $LIBGNUTLS_LIBS"
--LIBGNUTLS_EXTRA_CFLAGS="$LIBOPENCDK_CFLAGS -I${includedir}"
-+LIBGNUTLS_EXTRA_LIBS="-lgnutls-extra $LIBOPENCDK_LIBS $LZO_LIBS $LIBGNUTLS_LIBS"
-+LIBGNUTLS_EXTRA_CFLAGS="$LIBOPENCDK_CFLAGS $LIBGNUTLS_CFLAGS"
-
- AC_SUBST(LIBGNUTLS_EXTRA_LIBS)
- AC_SUBST(LIBGNUTLS_EXTRA_CFLAGS)
diff --git a/openwrt/package/gnutls/patches/501-certtool-libs.patch b/openwrt/package/gnutls/patches/501-certtool-libs.patch
deleted file mode 100644
index db39f88a92..0000000000
--- a/openwrt/package/gnutls/patches/501-certtool-libs.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN gnutls-1.0.24-orig/src/Makefile.am gnutls-1.0.24-1/src/Makefile.am
---- gnutls-1.0.24-orig/src/Makefile.am 2004-09-17 11:08:24.000000000 +0200
-+++ gnutls-1.0.24-1/src/Makefile.am 2005-03-15 23:28:19.000000000 +0100
-@@ -31,7 +31,7 @@
- cfg/cfg+.c cfg/cfgfile.c cfg/cmdline.c cfg/parse.c cfg/props.c \
- cfg/shared.c cfg/platon/str/dynfgets.c cfg/platon/str/strctype.c \
- cfg/platon/str/strdyn.c cfg/platon/str/strplus.c
--certtool_LDADD = ../lib/libgnutls.la $(LIBGCRYPT_LIBS)
-+certtool_LDADD = ../lib/libgnutls.la $(LIBGCRYPT_LIBS) $(LIBTASN1_LIBS)
- endif
-
-
-diff -ruN gnutls-1.0.24-orig/src/Makefile.in gnutls-1.0.24-1/src/Makefile.in
---- gnutls-1.0.24-orig/src/Makefile.in 2005-01-18 19:31:14.000000000 +0100
-+++ gnutls-1.0.24-1/src/Makefile.in 2005-03-15 23:28:41.000000000 +0100
-@@ -308,7 +308,7 @@
- @HAVE_LIBCFG_FALSE@ cfg/platon/str/strdyn.c cfg/platon/str/strplus.c
-
- @HAVE_LIBCFG_TRUE@certtool_SOURCES = certtool-gaa.c certtool.c prime.c getpass.c certtool-cfg.c
--@HAVE_LIBCFG_FALSE@certtool_LDADD = ../lib/libgnutls.la $(LIBGCRYPT_LIBS)
-+@HAVE_LIBCFG_FALSE@certtool_LDADD = ../lib/libgnutls.la $(LIBGCRYPT_LIBS) $(LIBTASN1_LIBS)
- @HAVE_LIBCFG_TRUE@certtool_LDADD = ../lib/libgnutls.la $(LIBGCRYPT_LIBS) $(LIBTASN1_LIBS) -lcfg+
- all: all-recursive
-
diff --git a/openwrt/package/gpg/Config.in b/openwrt/package/gpg/Config.in
deleted file mode 100644
index 10f3ba9acd..0000000000
--- a/openwrt/package/gpg/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_GPG
- prompt "gpg .............................. Gnu Privacy Guard"
- tristate
- default m if CONFIG_DEVEL
- help
- GPG is an encryption program
-
- http://www.gnupg.org
-
diff --git a/openwrt/package/gpg/Makefile b/openwrt/package/gpg/Makefile
deleted file mode 100644
index f9769e3d08..0000000000
--- a/openwrt/package/gpg/Makefile
+++ /dev/null
@@ -1,76 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=gnupg
-PKG_VERSION:=1.4.2.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=2d59ed50d92f69994dbfbe00fe1612e4
-
-PKG_SOURCE_URL:=ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt/gnupg \
- ftp://ftp.gnupg.org/gcrypt/gnupg
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,GPG,gpg,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_c_bigendian=no \
- ac_cv_sizeof_off_t=8 \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --disable-asm \
- --disable-gnupg-iconv \
- --disable-card-support \
- --disable-agent-support \
- --disable-bzip2 \
- --disable-exec \
- --disable-ldap \
- --disable-hkp \
- --disable-finger \
- --disable-ftp \
- --disable-dns-srv \
- --enable-fake-curl \
- --disable-nls \
- --disable-rpath \
- --disable-regex \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC)
- touch $@
-
-$(IPKG_GPG):
- mkdir -p $(IDIR_GPG)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/g10/gpg $(IDIR_GPG)/usr/bin/
- $(RSTRIP) $(IDIR_GPG)
- $(IPKG_BUILD) $(IDIR_GPG) $(PACKAGE_DIR)
diff --git a/openwrt/package/gpg/ipkg/gpg.control b/openwrt/package/gpg/ipkg/gpg.control
deleted file mode 100644
index 4cca7e8f91..0000000000
--- a/openwrt/package/gpg/ipkg/gpg.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: gpg
-Priority: optional
-Section: text
-Description: Gnu Privacy Guard
diff --git a/openwrt/package/gpsd/Config.in b/openwrt/package/gpsd/Config.in
deleted file mode 100644
index 7b5791917a..0000000000
--- a/openwrt/package/gpsd/Config.in
+++ /dev/null
@@ -1,18 +0,0 @@
-config BR2_PACKAGE_GPSD
- prompt "gpsd.............................. An interface daemon for GPS receivers"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPTHREAD
- select BR2_PACKAGE_UCLIBCXX
- help
- gpsd is a monitor daemon that watches a TCP/IP port (2947 by default),
- waiting for applications to request information from GPSes or
- differential-GPS radios attached to the host machine. Each GPS or
- radio is expected to be direct-connected to the host via a USB or
- RS232C serial port. The port may be specified to gpsd at startup, or
- it may be set via a command shipped down a local control socket (e.g.
- by a USB hotplug script). Given a GPS device by either means, gpsd
- discovers the correct port speed and protocol for it.
-
- http://gpsd.berlios.de/
-
diff --git a/openwrt/package/gpsd/Makefile b/openwrt/package/gpsd/Makefile
deleted file mode 100644
index cd45b4ccb0..0000000000
--- a/openwrt/package/gpsd/Makefile
+++ /dev/null
@@ -1,90 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=gpsd
-PKG_VERSION:=2.30
-PKG_RELEASE:=1
-PKG_MD5SUM:=dde177174878e8ae6db15f8010da46dd
-
-PKG_SOURCE_URL:=http://download.berlios.de/gpsd/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,GPSD,gpsd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- ( cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti -nostdinc++" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-nodefaultlibs -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-luClibc++ -lc -lm -lnotimpl" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --with-gnu-ld \
- --without-x \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CXXLINK="\$$(LINK)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_GPSD):
- install -d -m0755 $(IDIR_GPSD)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgps.so.* $(IDIR_GPSD)/usr/lib/
- install -d -m0755 $(IDIR_GPSD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/gpsd $(IDIR_GPSD)/usr/sbin/
- $(RSTRIP) $(IDIR_GPSD)
- $(IPKG_BUILD) $(IDIR_GPSD) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libgps.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/gps{,d}.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libgpsmm.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgps.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libgps.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/gps{,d}.h \
- $(STAGING_DIR)/usr/include/libgpsmm.h \
- $(STAGING_DIR)/usr/lib/libgps.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/gpsd/ipkg/gpsd.control b/openwrt/package/gpsd/ipkg/gpsd.control
deleted file mode 100644
index 94618b69ca..0000000000
--- a/openwrt/package/gpsd/ipkg/gpsd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: gpsd
-Priority: optional
-Section: net
-Depends: libpthread, uclibc++
-Description: An interface daemon for GPS receivers.
diff --git a/openwrt/package/gsm/Config.in b/openwrt/package/gsm/Config.in
deleted file mode 100644
index 32ff68e79f..0000000000
--- a/openwrt/package/gsm/Config.in
+++ /dev/null
@@ -1,30 +0,0 @@
-config BR2_COMPILE_GSM
- tristate
- default n
- depends BR2_PACKAGE_LIBGSM
-
-config BR2_PACKAGE_LIBGSM
- prompt "libgsm............................ A GSM 06.10 full-rate speech transcoding implementation (library)"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_GSM
- help
- An implementation of the European GSM 06.10 provisional standard
- for full-rate speech transcoding, prI-ETS 300 036, which uses
- RPE/LTP (residual pulse excitation/long term prediction) coding
- at 13 kbit/s.
-
- ftp://ftp.cs.tu-berlin.de/pub/local/kbs/tubmik/gsm/
-
-config BR2_PACKAGE_GSM_UTILS
- prompt "gsm-utils....................... A GSM 06.10 full-rate speech transcoding implementation (utilities)"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBGSM
- help
- An implementation of the European GSM 06.10 provisional standard
- for full-rate speech transcoding, prI-ETS 300 036, which uses
- RPE/LTP (residual pulse excitation/long term prediction) coding
- at 13 kbit/s.
-
- ftp://ftp.cs.tu-berlin.de/pub/local/kbs/tubmik/gsm/
diff --git a/openwrt/package/gsm/Makefile b/openwrt/package/gsm/Makefile
deleted file mode 100644
index bc906af1ff..0000000000
--- a/openwrt/package/gsm/Makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=gsm
-PKG_VERSION:=1.0.10
-PKG_RELEASE:=1
-PKG_MD5SUM:=4b148480f82e96d274248e13880ec873
-
-PKG_SOURCE_URL:=ftp://ftp.cs.tu-berlin.de/pub/local/kbs/tubmik/gsm/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-1.0-pl10
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBGSM,libgsm,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,GSM_UTILS,gsm-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- LD="$(TARGET_CC)" \
- COPTS="$(TARGET_CFLAGS)" \
- INSTALL_ROOT="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBGSM):
- install -d -m0755 $(IDIR_LIBGSM)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgsm.so.* $(IDIR_LIBGSM)/usr/lib/
- $(RSTRIP) $(IDIR_LIBGSM)
- $(IPKG_BUILD) $(IDIR_LIBGSM) $(PACKAGE_DIR)
-
-$(IPKG_GSM_UTILS):
- install -d -m0755 $(IDIR_GSM_UTILS)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(IDIR_GSM_UTILS)/usr/bin/
- $(RSTRIP) $(IDIR_GSM_UTILS)
- $(IPKG_BUILD) $(IDIR_GSM_UTILS) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libgsm.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/gsm.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgsm.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgsm.so* $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libgsm.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/gsm.h \
- $(STAGING_DIR)/usr/lib/libgsm.a \
- $(STAGING_DIR)/usr/lib/libgsm.so* \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/gsm/ipkg/gsm-utils.control b/openwrt/package/gsm/ipkg/gsm-utils.control
deleted file mode 100644
index b022f71544..0000000000
--- a/openwrt/package/gsm/ipkg/gsm-utils.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: gsm-utils
-Priority: optional
-Section: admin
-Description: A GSM 06.10 full-rate speech transcoding implementation (utilities)
diff --git a/openwrt/package/gsm/ipkg/libgsm.control b/openwrt/package/gsm/ipkg/libgsm.control
deleted file mode 100644
index 922f696569..0000000000
--- a/openwrt/package/gsm/ipkg/libgsm.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libgsm
-Priority: optional
-Section: libs
-Description: A GSM 06.10 full-rate speech transcoding implementation (library)
diff --git a/openwrt/package/gsm/patches/01-debian-libsgm-1.0.10-13.patch b/openwrt/package/gsm/patches/01-debian-libsgm-1.0.10-13.patch
deleted file mode 100644
index 4e6e71cce6..0000000000
--- a/openwrt/package/gsm/patches/01-debian-libsgm-1.0.10-13.patch
+++ /dev/null
@@ -1,434 +0,0 @@
-diff -ruN gsm-1.0.10-orig/Makefile gsm-1.0.10-1/Makefile
---- gsm-1.0.10-orig/Makefile 1996-07-02 16:36:06.000000000 +0200
-+++ gsm-1.0.10-1/Makefile 2005-04-08 18:47:52.000000000 +0200
-@@ -7,11 +7,13 @@
- SASR = -DSASR
- ######### Define SASR if >> is a signed arithmetic shift (-1 >> 1 == -1)
-
--MULHACK = -DUSE_FLOAT_MUL
-+#MULHACK = -DUSE_FLOAT_MUL
-+MULHACK =
- ######### Define this if your host multiplies floats faster than integers,
- ######### e.g. on a SPARCstation.
-
--FAST = -DFAST
-+#FAST = -DFAST
-+FAST =
- ######### Define together with USE_FLOAT_MUL to enable the GSM library's
- ######### approximation option for incorrect, but good-enough results.
-
-@@ -44,7 +46,8 @@
- # CCFLAGS = -c -O
-
- CC = gcc -ansi -pedantic
--CCFLAGS = -c -O2 -DNeedFunctionPrototypes=1
-+COPTS = -O2
-+CCFLAGS = -c $(COPTS) -DNeedFunctionPrototypes=1
-
- LD = $(CC)
-
-@@ -78,10 +81,10 @@
- # Leave GSM_INSTALL_ROOT empty to not install the GSM library outside of
- # this directory.
-
--GSM_INSTALL_ROOT = $(INSTALL_ROOT)
-+GSM_INSTALL_ROOT = $(INSTALL_ROOT)/usr
- GSM_INSTALL_LIB = $(GSM_INSTALL_ROOT)/lib
--GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/inc
--GSM_INSTALL_MAN = $(GSM_INSTALL_ROOT)/man/man3
-+GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/include
-+GSM_INSTALL_MAN = $(GSM_INSTALL_ROOT)/share/man/man3
-
-
- # Where do you want to install the toast binaries and their manpage?
-@@ -89,14 +92,14 @@
- # Leave TOAST_INSTALL_ROOT empty to not install the toast binaries outside
- # of this directory.
-
--TOAST_INSTALL_ROOT = $(INSTALL_ROOT)
-+TOAST_INSTALL_ROOT = $(INSTALL_ROOT)/usr
- TOAST_INSTALL_BIN = $(TOAST_INSTALL_ROOT)/bin
--TOAST_INSTALL_MAN = $(TOAST_INSTALL_ROOT)/man/man1
-+TOAST_INSTALL_MAN = $(TOAST_INSTALL_ROOT)/share/man/man1
-
- # Other tools
-
- SHELL = /bin/sh
--LN = ln
-+LN = ln -s
- BASENAME = basename
- AR = ar
- ARFLAGS = cr
-@@ -126,7 +129,7 @@
-
- # Flags
-
--# DEBUG = -DNDEBUG
-+DEBUG = -DNDEBUG
- ######### Remove -DNDEBUG to enable assertions.
-
- CFLAGS = $(CCFLAGS) $(SASR) $(DEBUG) $(MULHACK) $(FAST) $(LTP_CUT) \
-@@ -140,6 +143,7 @@
- # Targets
-
- LIBGSM = $(LIB)/libgsm.a
-+LIBGSMSO= $(LIB)/libgsm.so
-
- TOAST = $(BIN)/toast
- UNTOAST = $(BIN)/untoast
-@@ -258,6 +262,9 @@
-
- GSM_INSTALL_TARGETS = \
- $(GSM_INSTALL_LIB)/libgsm.a \
-+ $(GSM_INSTALL_LIB)/libgsm.so \
-+ $(GSM_INSTALL_LIB)/libgsm.so.1 \
-+ $(GSM_INSTALL_LIB)/libgsm.so.1.0.10 \
- $(GSM_INSTALL_INC)/gsm.h \
- $(GSM_INSTALL_MAN)/gsm.3 \
- $(GSM_INSTALL_MAN)/gsm_explode.3 \
-@@ -279,7 +286,7 @@
-
- # Target rules
-
--all: $(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST)
-+all: $(LIBGSM) $(LIBGSMSO) $(TOAST) $(TCAT) $(UNTOAST)
- @-echo $(ROOT): Done.
-
- tst: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result
-@@ -299,6 +306,11 @@
-
- # The basic API: libgsm
-
-+$(LIBGSMSO): $(LIB) $(GSM_OBJECTS)
-+ $(LD) -o $@.1.0.10 -shared -Xlinker -soname -Xlinker libgsm.so.1 $(GSM_OBJECTS) -lc
-+ ln -fs libgsm.so.1.0.10 lib/libgsm.so.1
-+ ln -fs libgsm.so.1.0.10 lib/libgsm.so
-+
- $(LIBGSM): $(LIB) $(GSM_OBJECTS)
- -rm $(RMFLAGS) $(LIBGSM)
- $(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS)
-@@ -308,15 +320,15 @@
- # Toast, Untoast and Tcat -- the compress-like frontends to gsm.
-
- $(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSM)
-- $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB)
-+ $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSMSO) $(LDLIB)
-
- $(UNTOAST): $(BIN) $(TOAST)
- -rm $(RMFLAGS) $(UNTOAST)
-- $(LN) $(TOAST) $(UNTOAST)
-+ $(LN) toast $(UNTOAST)
-
- $(TCAT): $(BIN) $(TOAST)
- -rm $(RMFLAGS) $(TCAT)
-- $(LN) $(TOAST) $(TCAT)
-+ $(LN) toast $(TCAT)
-
-
- # The local bin and lib directories
-@@ -351,53 +363,66 @@
- fi
-
- $(TOAST_INSTALL_BIN)/toast: $(TOAST)
-- -rm $@
-- cp $(TOAST) $@
-+ mkdir -p $(TOAST_INSTALL_BIN)
-+ cp -f $(TOAST) $@
- chmod 755 $@
-
- $(TOAST_INSTALL_BIN)/untoast: $(TOAST_INSTALL_BIN)/toast
-- -rm $@
-- ln $? $@
-+ mkdir -p $(TOAST_INSTALL_BIN)
-+ ln -sf $? $@
-
- $(TOAST_INSTALL_BIN)/tcat: $(TOAST_INSTALL_BIN)/toast
-- -rm $@
-- ln $? $@
-+ mkdir -p $(TOAST_INSTALL_BIN)
-+ ln -sf $? $@
-
- $(TOAST_INSTALL_MAN)/toast.1: $(MAN)/toast.1
-- -rm $@
-- cp $? $@
-+ mkdir -p $(TOAST_INSTALL_MAN)
-+ cp -f $? $@
- chmod 444 $@
-
- $(GSM_INSTALL_MAN)/gsm.3: $(MAN)/gsm.3
-- -rm $@
-- cp $? $@
-+ mkdir -p $(GSM_INSTALL_MAN)
-+ cp -f $? $@
- chmod 444 $@
-
- $(GSM_INSTALL_MAN)/gsm_option.3: $(MAN)/gsm_option.3
-- -rm $@
-- cp $? $@
-+ mkdir -p $(GSM_INSTALL_MAN)
-+ cp -f $? $@
- chmod 444 $@
-
- $(GSM_INSTALL_MAN)/gsm_explode.3: $(MAN)/gsm_explode.3
-- -rm $@
-- cp $? $@
-+ mkdir -p $(GSM_INSTALL_MAN)
-+ cp -f $? $@
- chmod 444 $@
-
- $(GSM_INSTALL_MAN)/gsm_print.3: $(MAN)/gsm_print.3
-- -rm $@
-- cp $? $@
-+ mkdir -p $(GSM_INSTALL_MAN)
-+ cp -f $? $@
- chmod 444 $@
-
- $(GSM_INSTALL_INC)/gsm.h: $(INC)/gsm.h
-- -rm $@
-- cp $? $@
-+ mkdir -p $(GSM_INSTALL_INC)
-+ cp -f $? $@
- chmod 444 $@
-
- $(GSM_INSTALL_LIB)/libgsm.a: $(LIBGSM)
-- -rm $@
-- cp $? $@
-+ mkdir -p $(GSM_INSTALL_LIB)
-+ cp -f $? $@
- chmod 444 $@
-
-+$(GSM_INSTALL_LIB)/libgsm.so: $(LIBGSMSO)
-+ mkdir -p $(GSM_INSTALL_LIB)
-+ cp -f $? $@
-+
-+$(GSM_INSTALL_LIB)/libgsm.so.1: $(LIBGSMSO)
-+ mkdir -p $(GSM_INSTALL_LIB)
-+ cp -f $? $@
-+
-+$(GSM_INSTALL_LIB)/libgsm.so.1.0.10: $(LIBGSMSO)
-+ mkdir -p $(GSM_INSTALL_LIB)
-+ cp -f $? $@
-+ chmod 755 $@
-+
-
- # Distribution
-
-@@ -426,7 +451,9 @@
-
- clean: semi-clean
- -rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add \
-- $(TOAST) $(TCAT) $(UNTOAST) \
-+ $(LIBGSMSO) $(LIB)/libgsm.so.1.0.10 \
-+ $(LIB)libgsm.so.1 \
-+ $(TOAST) $(TCAT) $(UNTOAST) \
- $(ROOT)/gsm-1.0.tar.Z
-
-
-diff -ruN gsm-1.0.10-orig/inc/config.h gsm-1.0.10-1/inc/config.h
---- gsm-1.0.10-orig/inc/config.h 1996-07-02 16:32:27.000000000 +0200
-+++ gsm-1.0.10-1/inc/config.h 2005-04-08 18:24:31.000000000 +0200
-@@ -9,29 +9,29 @@
- #ifndef CONFIG_H
- #define CONFIG_H
-
--/*efine SIGHANDLER_T int /* signal handlers are void */
--/*efine HAS_SYSV_SIGNAL 1 /* sigs not blocked/reset? */
-+/*efine SIGHANDLER_T int -* signal handlers are void */
-+/*efine HAS_SYSV_SIGNAL 1 -* sigs not blocked/reset? */
-
- #define HAS_STDLIB_H 1 /* /usr/include/stdlib.h */
--/*efine HAS_LIMITS_H 1 /* /usr/include/limits.h */
-+#define HAS_STDIO_H 1 /* /usr/include/stdio.h */
-+/*efine HAS_LIMITS_H 1 -* /usr/include/limits.h */
- #define HAS_FCNTL_H 1 /* /usr/include/fcntl.h */
--/*efine HAS_ERRNO_DECL 1 /* errno.h declares errno */
-
- #define HAS_FSTAT 1 /* fstat syscall */
- #define HAS_FCHMOD 1 /* fchmod syscall */
- #define HAS_CHMOD 1 /* chmod syscall */
- #define HAS_FCHOWN 1 /* fchown syscall */
- #define HAS_CHOWN 1 /* chown syscall */
--/*efine HAS__FSETMODE 1 /* _fsetmode -- set file mode */
-+/*efine HAS__FSETMODE 1 -* _fsetmode -- set file mode */
-
- #define HAS_STRING_H 1 /* /usr/include/string.h */
--/*efine HAS_STRINGS_H 1 /* /usr/include/strings.h */
-+/*efine HAS_STRINGS_H 1 -* /usr/include/strings.h */
-
- #define HAS_UNISTD_H 1 /* /usr/include/unistd.h */
- #define HAS_UTIME 1 /* POSIX utime(path, times) */
--/*efine HAS_UTIMES 1 /* use utimes() syscall instead */
-+/*efine HAS_UTIMES 1 -* use utimes() syscall instead */
- #define HAS_UTIME_H 1 /* UTIME header file */
--/*efine HAS_UTIMBUF 1 /* struct utimbuf */
--/*efine HAS_UTIMEUSEC 1 /* microseconds in utimbuf? */
-+/*efine HAS_UTIMBUF 1 -* struct utimbuf */
-+/*efine HAS_UTIMEUSEC 1 -* microseconds in utimbuf? */
-
- #endif /* CONFIG_H */
-diff -ruN gsm-1.0.10-orig/inc/gsm.h gsm-1.0.10-1/inc/gsm.h
---- gsm-1.0.10-orig/inc/gsm.h 1996-07-05 20:31:51.000000000 +0200
-+++ gsm-1.0.10-1/inc/gsm.h 2005-04-08 18:24:31.000000000 +0200
-@@ -54,6 +54,10 @@
- #define GSM_OPT_FRAME_INDEX 5
- #define GSM_OPT_FRAME_CHAIN 6
-
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
- extern gsm gsm_create GSM_P((void));
- extern void gsm_destroy GSM_P((gsm));
-
-@@ -66,6 +70,10 @@
- extern int gsm_explode GSM_P((gsm, gsm_byte *, gsm_signal *));
- extern void gsm_implode GSM_P((gsm, gsm_signal *, gsm_byte *));
-
-+#ifdef __cplusplus
-+}
-+#endif
-+
- #undef GSM_P
-
- #endif /* GSM_H */
-diff -ruN gsm-1.0.10-orig/inc/toast.h gsm-1.0.10-1/inc/toast.h
---- gsm-1.0.10-orig/inc/toast.h 1996-07-02 16:32:29.000000000 +0200
-+++ gsm-1.0.10-1/inc/toast.h 2005-04-08 18:24:31.000000000 +0200
-@@ -16,11 +16,12 @@
-
- #include <stdio.h>
- #include <ctype.h>
-+#include <pthread.h>
- #include <signal.h>
-
- #include <errno.h>
--#ifndef HAS_ERRNO_DECL
-- extern int errno;
-+#ifndef errno
-+ extern int errno;
- #endif
-
- #ifdef HAS_LIMITS_H
-@@ -37,6 +38,10 @@
- # endif
- #endif
-
-+#ifdef HAS_STDIO_H
-+# include <stdio.h>
-+#endif
-+
- #include "gsm.h"
-
- #ifndef S_ISREG
-diff -ruN gsm-1.0.10-orig/src/code.c gsm-1.0.10-1/src/code.c
---- gsm-1.0.10-orig/src/code.c 1996-07-02 16:32:36.000000000 +0200
-+++ gsm-1.0.10-1/src/code.c 2005-04-08 18:24:31.000000000 +0200
-@@ -9,8 +9,8 @@
- #include "config.h"
-
-
--#ifdef HAS_STDLIB_H
--#include <stdlib.h>
-+#ifdef HAS_STRING_H
-+#include <string.h>
- #else
- # include "proto.h"
- extern char * memcpy P((char *, char *, int));
-diff -ruN gsm-1.0.10-orig/src/debug.c gsm-1.0.10-1/src/debug.c
---- gsm-1.0.10-orig/src/debug.c 1996-07-02 16:32:37.000000000 +0200
-+++ gsm-1.0.10-1/src/debug.c 2005-04-08 18:24:31.000000000 +0200
-@@ -49,7 +49,7 @@
- fprintf( stderr, "%s [%d .. %d]: ", name, from, to );
- while (from <= to) {
-
-- fprintf(stderr, "%d ", ptr[ from ] );
-+ fprintf(stderr, "%ld ", ptr[ from ] );
- from++;
- if (nprinted++ >= 7) {
- nprinted = 0;
-@@ -63,14 +63,14 @@
- char * name,
- longword value )
- {
-- fprintf(stderr, "%s: %d\n", name, (long)value );
-+ fprintf(stderr, "%s: %ld\n", name, (long)value );
- }
-
- void gsm_debug_word P2( (name, value),
- char * name,
- word value )
- {
-- fprintf(stderr, "%s: %d\n", name, (long)value);
-+ fprintf(stderr, "%s: %ld\n", name, (long)value);
- }
-
- #endif
-diff -ruN gsm-1.0.10-orig/src/toast.c gsm-1.0.10-1/src/toast.c
---- gsm-1.0.10-orig/src/toast.c 1996-07-02 16:32:55.000000000 +0200
-+++ gsm-1.0.10-1/src/toast.c 2005-04-08 18:24:31.000000000 +0200
-@@ -251,8 +251,8 @@
- {
- char * s;
- if (!(s = malloc(len))) {
-- fprintf(stderr, "%s: failed to malloc %d bytes -- abort\n",
-- progname, len);
-+ fprintf(stderr, "%s: failed to malloc %ld bytes -- abort\n",
-+ progname, (long) len);
- onintr();
- exit(1);
- }
-@@ -270,7 +270,7 @@
- maxlen = strlen(name) + 1 + strlen(want) + strlen(cut);
- p = strcpy(emalloc(maxlen), name);
-
-- if (s = suffix(p, cut)) strcpy(s, want);
-+ if ((s = suffix(p, cut))) strcpy(s, want);
- else if (*want && !suffix(p, want)) strcat(p, want);
-
- return p;
-@@ -386,7 +386,7 @@
- ut[0] = instat.st_atime;
- ut[1] = instat.st_mtime;
-
-- (void) utime(outname, ut);
-+ (void) utime(outname, (struct utimbuf *)ut);
-
- #endif /* UTIMBUF */
- }
-@@ -416,7 +416,7 @@
- }
- if (st->st_nlink > 1 && !f_cat && !f_precious) {
- fprintf(stderr,
-- "%s: \"%s\" has %s other link%s -- unchanged.\n",
-+ "%s: \"%s\" has %d other link%s -- unchanged.\n",
- progname,name,st->st_nlink - 1,"s" + (st->st_nlink<=2));
- return 0;
- }
-@@ -585,8 +585,8 @@
-
- if (cc != sizeof(s)) {
- if (cc >= 0) fprintf(stderr,
-- "%s: incomplete frame (%d byte%s missing) from %s\n",
-- progname, sizeof(s) - cc,
-+ "%s: incomplete frame (%ld byte%s missing) from %s\n",
-+ progname, (long) sizeof(s) - cc,
- "s" + (sizeof(s) - cc == 1),
- inname ? inname : "stdin" );
- gsm_destroy(r);
-@@ -624,8 +624,6 @@
-
- static int process P1((name), char * name)
- {
-- int step = 0;
--
- out = (FILE *)0;
- in = (FILE *)0;
-
-@@ -779,7 +777,6 @@
- case 'h': help(); exit(0);
-
- default:
-- usage:
- fprintf(stderr,
- "Usage: %s [-fcpdhvuaslFC] [files...] (-h for help)\n",
- progname);
diff --git a/openwrt/package/haserl/Config.in b/openwrt/package/haserl/Config.in
deleted file mode 100644
index a766be73ff..0000000000
--- a/openwrt/package/haserl/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_HASERL
- prompt "haserl............................ A CGI wrapper to embed shell scripts in HTML documents"
- tristate
- default m if CONFIG_DEVEL
- help
- A CGI wrapper to embed shell scripts in HTML documents.
-
- http://haserl.sourceforge.net/
-
diff --git a/openwrt/package/haserl/Makefile b/openwrt/package/haserl/Makefile
deleted file mode 100644
index 05c6b47b1e..0000000000
--- a/openwrt/package/haserl/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=haserl
-PKG_VERSION:=0.8.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=bd9195d086566f56634c0bcbbbcbebea
-
-PKG_SOURCE_URL:=@SF/haserl
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,HASERL,haserl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -DMAX_UPLOAD_KB=8192" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_HASERL):
- install -m0755 -d $(IDIR_HASERL)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/haserl $(IDIR_HASERL)/usr/bin/
- $(RSTRIP) $(IDIR_HASERL)
- $(IPKG_BUILD) $(IDIR_HASERL) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/haserl/ipkg/haserl.control b/openwrt/package/haserl/ipkg/haserl.control
deleted file mode 100644
index 0243b6d754..0000000000
--- a/openwrt/package/haserl/ipkg/haserl.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: haserl
-Priority: optional
-Section: web
-Description: a CGI wrapper to embed shell scripts in HTML documents
diff --git a/openwrt/package/hdparm/Config.in b/openwrt/package/hdparm/Config.in
deleted file mode 100644
index d119ac6e52..0000000000
--- a/openwrt/package/hdparm/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_HDPARM
- prompt "hdparm............................ get/set ATA drive parameters"
- tristate
- default m if CONFIG_DEVEL
- help
-
- tune hard disk parameters for high performance
- Get/set hard disk parameters for Linux IDE drives.
- Primary use is for enabling irq-unmasking and IDE multiplemode.
-
- The original website:
- http://sourceforge.net/projects/hdparm/
diff --git a/openwrt/package/hdparm/Makefile b/openwrt/package/hdparm/Makefile
deleted file mode 100644
index 485fb59e07..0000000000
--- a/openwrt/package/hdparm/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=hdparm
-PKG_VERSION:=6.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=ecea69f775396e4ab6112dcf9066239f
-
-PKG_SOURCE_URL:=@SF/hdparm
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,HDPARM,hdparm,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC)
- touch $@
-
-$(IPKG_HDPARM):
- install -d -m0755 $(IDIR_HDPARM)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/hdparm $(IDIR_HDPARM)/usr/sbin
- $(RSTRIP) $(IDIR_HDPARM)
- $(IPKG_BUILD) $(IDIR_HDPARM) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/hdparm/ipkg/hdparm.control b/openwrt/package/hdparm/ipkg/hdparm.control
deleted file mode 100644
index 4db1002d17..0000000000
--- a/openwrt/package/hdparm/ipkg/hdparm.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: hdparm
-Priority: optional
-Section: misc
-Description: get/set ATA drive parameters
diff --git a/openwrt/package/heyu/Config.in b/openwrt/package/heyu/Config.in
deleted file mode 100644
index c8e178391b..0000000000
--- a/openwrt/package/heyu/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_HEYU
- prompt "heyu.............................. X10 home automation control using a CM11A"
- tristate
- default m if CONFIG_DEVEL
- help
- X10 home automation control using the CM11A serial device.
-
- See http://heyu.tanj.com/heyu2/ for details.
diff --git a/openwrt/package/heyu/Makefile b/openwrt/package/heyu/Makefile
deleted file mode 100644
index 195d119bbf..0000000000
--- a/openwrt/package/heyu/Makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=heyu
-PKG_VERSION:=2.0beta.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=8289d5ca5b972333a72bc0fc3e640c13
-PKG_SOURCE_URL:=http://heyu.tanj.com/download/
-PKG_SOURCE:=heyu-$(PKG_VERSION).tgz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=zcat
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,HEYU,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld \
- CFLAGS="$(TARGET_CFLAGS) -I$(PKG_BUILD_DIR) -DSYSV -DPOSIX -DHAS_ITIMER -DLINUX -DHASSELECT -DHASTZ"
- touch $@
-
-$(IPKG_HEYU):
- install -d -m0755 $(IDIR_HEYU)/etc/$(PKG_NAME)
- install -m0644 ./files/x10.conf $(IDIR_HEYU)/etc/$(PKG_NAME)/x10.conf
- install -d -m0755 $(IDIR_HEYU)/usr/bin
- install -m0644 $(PKG_BUILD_DIR)/heyu $(IDIR_HEYU)/usr/bin/
- $(RSTRIP) $(IDIR_HEYU)
- $(IPKG_BUILD) $(IDIR_HEYU) $(PACKAGE_DIR)
diff --git a/openwrt/package/heyu/files/x10.conf b/openwrt/package/heyu/files/x10.conf
deleted file mode 100644
index 3cacaf5e8a..0000000000
--- a/openwrt/package/heyu/files/x10.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-# this file should contain x10 appliance aliases, one per line, as:
-# appliance-name housecode modulenumber
-# for example:
-# mydesklamp A 4
-# atticfan B 3
-# sumppump C 3
-# manythings J 1-4
-#
-# IMPORTANT! disable the serial console if you need to use heyu
-# on /dev/tts/0. Read http://forum.openwrt.org/viewtopic.php?id=1767
-#
-# NOTE: using /dev/tts/1 requires the setserial package to
-# set the port to use irq 3, otherwise performance will be
-# unbearable as it is polled.
-#
-TTY /dev/tts/1
-#
-# give your location - for computing sunrise and sunset times
-# Boston, MA USA:
-#LATITUDE N42:20
-#LONGITUDE W71:05
-# Menlo Park, CA USA:
-LATITUDE N37:43
-LONGITUDE W122:20
diff --git a/openwrt/package/heyu/ipkg/files/heyu.conffiles b/openwrt/package/heyu/ipkg/files/heyu.conffiles
deleted file mode 100644
index f3c36bc00f..0000000000
--- a/openwrt/package/heyu/ipkg/files/heyu.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/heyu/x10.conf
diff --git a/openwrt/package/heyu/ipkg/heyu.control b/openwrt/package/heyu/ipkg/heyu.control
deleted file mode 100644
index c2800f6018..0000000000
--- a/openwrt/package/heyu/ipkg/heyu.control
+++ /dev/null
@@ -1,7 +0,0 @@
-Package: heyu
-Priority: optional
-Section: misc
-Maintainer: Gregory P. Smith <greg@electricrain.com>
-Source: buildroot internal
-Description: X10 home automation control using the CM11A
-Depends: setserial
diff --git a/openwrt/package/heyu/patches/01-avoid_configure.patch b/openwrt/package/heyu/patches/01-avoid_configure.patch
deleted file mode 100644
index 110602f5dc..0000000000
--- a/openwrt/package/heyu/patches/01-avoid_configure.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-diff -urN orig/heyu-2.0beta.2/Makefile heyu-2.0beta.2/Makefile
---- orig/heyu-2.0beta.2/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ heyu-2.0beta.2/Makefile 2006-01-07 01:53:25.000000000 +0100
-@@ -0,0 +1,183 @@
-+# Makefile for HEYU, a program to control an X10 CM11A computer interface.
-+# This makefile is generated by the Configure program.
-+#
-+BIN = /usr/bin
-+MAN = /usr/man/man1
-+MAN5 = /usr/man/man5
-+GROUP = sys
-+OWNER = root
-+
-+# set DFLAGS equal to:
-+# -DSYSV if using SYSTEM V
-+# -DVOID if compiler doesn't understand 'void'
-+
-+#This makefile is built for linux
-+DFLAGS = -DSYSV -DPOSIX -DHAS_ITIMER -DLINUX -DHASSELECT -DHASTZ -DHASCM17A
-+LIBS = -lm -lc
-+# # The rest of the makefile should need no changes
-+
-+## Makefile template for Heyu, a program to control an X10 CM11A computer
-+## interface. From this point on the Makefile is copied from Makefile.in
-+## by the Configure program
-+
-+SRCS = date.c erase.c info.c message.c relay.c \
-+ monitor.c reset.c setclock.c stop.c \
-+ tty.c turn.c x10.c xread.c xwrite.c status.c cm11a.c \
-+ eeprom.c preset.c process.c sun.c cmd.c config.c x10state.c \
-+ poll.c modules.c cm17a.c xsync.c timing.c
-+
-+OBJS = date.o erase.o info.o message.o relay.o \
-+ monitor.o reset.o setclock.o stop.o \
-+ tty.o turn.o x10.o xread.o xwrite.o status.o cm11a.o \
-+ eeprom.o preset.o process.o sun.o cmd.o config.o x10state.o \
-+ poll.o modules.o cm17a.o xsync.o timing.o
-+
-+OTHERSRC = README README2 Makefile x10config.sample protocol.txt eeprom.h \
-+ x10.sched.sample heyu.1 x10.h x10config.5 x10cm17a.5 \
-+ history.txt version.h heyufaq.txt x10sched.5 process.h sun.h \
-+ x10scripts.5 Configure Makefile.in install.sh INSTALL LICENSE
-+
-+EVERYTHING = $(OTHERSRC) $(SRCS)
-+
-+all: heyu
-+
-+heyu: $(OBJS) version.h
-+ $(CC) $(LDFLAGS) -o heyu $(OBJS) $(LIBS)
-+ @echo `id` >usergroup.tmp
-+ @echo ${HOME} >userhome.tmp
-+ @echo "** Now become root and run 'make install' **"
-+
-+$(OBJS): x10.h process.h sun.h
-+
-+eeprom.o: eeprom.h
-+
-+install: $(BIN)/heyu $(MAN)/heyu.1 $(MAN5)/x10config.5 $(MAN5)/x10sched.5 \
-+ $(MAN5)/x10scripts.5
-+
-+uninstall:
-+ rm -f $(BIN)/heyu
-+ rm -f $(MAN)/heyu.1
-+ rm -f $(MAN5)/x10config.5
-+ rm -f $(MAN5)/x10sched.5
-+ rm -f $(MAN5)/x10scripts.5
-+
-+$(BIN)/heyu: heyu
-+ mkdir -p -m 755 $(BIN)
-+ cp heyu $(BIN)
-+ chgrp $(GROUP) $(BIN)/heyu
-+ chmod 755 $(BIN)/heyu
-+ chown $(OWNER) $(BIN)/heyu
-+ ./install.sh
-+
-+$(MAN)/heyu.1: heyu.1
-+ mkdir -p -m 755 $(MAN)
-+ cp heyu.1 $(MAN)
-+ chmod 644 $(MAN)/heyu.1
-+
-+$(MAN5)/x10config.5: x10config.5
-+ mkdir -p -m 755 $(MAN5)
-+ cp x10config.5 $(MAN5)
-+ chmod 644 $(MAN5)/x10config.5
-+
-+$(MAN5)/x10sched.5: x10sched.5
-+ mkdir -p -m 755 $(MAN5)
-+ cp x10sched.5 $(MAN5)
-+ chmod 644 $(MAN5)/x10sched.5
-+
-+$(MAN5)/x10scripts.5: x10scripts.5
-+ mkdir -p -m 755 $(MAN5)
-+ cp x10scripts.5 $(MAN5)
-+ chmod 644 $(MAN5)/x10scripts.5
-+
-+lint:
-+ lint $(DFLAGS) $(SRCS)
-+
-+shar: x10_heyu.shar.1 x10_heyu.shar.2
-+
-+x10.o: x10.c version.h
-+
-+ci: $(SRCS) index.html Makefile
-+ @ for FL in $+ ; do \
-+ if test -w $$FL ; then \
-+ ci -l $$FL ;\
-+ fi ;\
-+ done
-+
-+x10_heyu.shar.1:
-+ shar $(OTHERSRC) >x10_heyu.shar.1
-+
-+x10_heyu.shar.2:
-+ shar $(SRCS) > x10_heyu.shar.2
-+
-+bigshar:
-+ shar $(EVERYTHING) > x10_heyu.shar
-+
-+tar: x10_heyu.tgz
-+
-+x10_heyu.tgz: $(EVERYTHING)
-+ rm -fr heyu.dir
-+ mkdir heyu.dir
-+ cp -p $(EVERYTHING) heyu.dir
-+ cp Makefile.dist heyu.dir/Makefile
-+ tar -czvf x10_heyu.tgz heyu.dir
-+
-+heyudistro: $(EVERYTHING)
-+ rm -rf distro.dir
-+ mkdir distro.dir
-+ cp -p $(EVERYTHING) distro.dir
-+ cp -p release_notes.txt distro.dir
-+ rm distro.dir/Makefile
-+
-+
-+beta: x10_beta.tgz
-+
-+x10_beta.tgz: $(EVERYTHING)
-+ rm -fr heyu.beta
-+ mkdir heyu.beta
-+ cp -p $(EVERYTHING) heyu.beta
-+ cp Makefile.dist heyu.dir/Makefile
-+ tar -czvf x10_beta.tgz heyu.beta
-+
-+zip: x10_heyu.zip
-+
-+x10_heyu.zip: $(EVERYTHING)
-+ rm -f x10_heyu.zip
-+ zip -kl x10_heyu.zip $(EVERYTHING)
-+
-+touch:
-+ touch $(OTHERSRC)
-+ touch $(SRCS)
-+
-+clean:
-+ rm -f *.o
-+
-+clobber: clean
-+ rm -f heyu
-+
-+upload: heyu index.html x10_heyu.tgz x10_heyu.zip
-+ /bin/sh -c ./upload.sh
-+
-+rcsdiffrw:
-+ @-for x in `$(MAKE) rw` ;\
-+ do \
-+ echo ;\
-+ echo $$x ;\
-+ echo ========= ;\
-+ rcsdiff $$x ;\
-+ done 2>&1 ;\
-+ echo ;\
-+ echo all done
-+
-+list:
-+ @ls $(EVERYTHING) | more
-+
-+rw:
-+ @ls -l $(EVERYTHING) | \
-+ egrep '^[^l].w' | \
-+ sed 's;.* ;;' # strip to last space
-+
-+populate: $(EVERYTHING)
-+
-+$(EVERYTHING):
-+## co -r$(revision) $@
-+
-diff -urN orig/heyu-2.0beta.2/local.h heyu-2.0beta.2/local.h
---- orig/heyu-2.0beta.2/local.h 1970-01-01 01:00:00.000000000 +0100
-+++ heyu-2.0beta.2/local.h 2006-01-07 01:54:13.000000000 +0100
-@@ -0,0 +1,3 @@
-+#define USESIGINT 1'
-+#define SPOOLDIR "/tmp"
-+#define LOCKDIR "/tmp"
diff --git a/openwrt/package/hostap-utils/Config.in b/openwrt/package/hostap-utils/Config.in
deleted file mode 100644
index d2a9f06347..0000000000
--- a/openwrt/package/hostap-utils/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_HOSTAP_UTILS
- prompt "hostap-utils...................... Host AP driver utility programs"
- tristate
- default m if CONFIG_DEVEL
- help
- Host AP driver utility programs
-
- http://hostap.epitest.fi/
-
diff --git a/openwrt/package/hostap-utils/Makefile b/openwrt/package/hostap-utils/Makefile
deleted file mode 100644
index 3833504f62..0000000000
--- a/openwrt/package/hostap-utils/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=hostap-utils
-PKG_VERSION:=0.4.7
-PKG_RELEASE:=1
-PKG_MD5SUM:=afe041581b8f01666e353bec20917c85
-
-PKG_SOURCE_URL:=http://hostap.epitest.fi/releases/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,HOSTAP_UTILS,hostap-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -Wall" \
- all
- touch $@
-
-$(IPKG_HOSTAP_UTILS):
- install -m0755 -d $(IDIR_HOSTAP_UTILS)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/hostap_crypt_conf $(IDIR_HOSTAP_UTILS)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/hostap_diag $(IDIR_HOSTAP_UTILS)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/hostap_io_debug $(IDIR_HOSTAP_UTILS)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/hostap_rid $(IDIR_HOSTAP_UTILS)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/prism2_srec $(IDIR_HOSTAP_UTILS)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/split_combined_hex $(IDIR_HOSTAP_UTILS)/usr/sbin/
- $(RSTRIP) $(IDIR_HOSTAP_UTILS)
- $(IPKG_BUILD) $(IDIR_HOSTAP_UTILS) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/hostap-utils/ipkg/hostap-utils.control b/openwrt/package/hostap-utils/ipkg/hostap-utils.control
deleted file mode 100644
index c7e1270cb3..0000000000
--- a/openwrt/package/hostap-utils/ipkg/hostap-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: hostap-utils
-Priority: optional
-Section: net
-Depends:
-Description: Host AP driver utility programs
diff --git a/openwrt/package/hostapd/Config.in b/openwrt/package/hostapd/Config.in
deleted file mode 100644
index 7a66d876dd..0000000000
--- a/openwrt/package/hostapd/Config.in
+++ /dev/null
@@ -1,61 +0,0 @@
-config BR2_COMPILE_HOSTAPD
- tristate
- default n
- depends BR2_PACKAGE_HOSTAPD || BR2_PACKAGE_HOSTAPD_MINI || BR2_PACKAGE_HOSTAPD_UTILS
- select BR2_PACKAGE_KMOD_MADWIFI
-
-config BR2_PACKAGE_HOSTAPD
- prompt "hostapd........................... An IEEE 802.11 AP, IEEE 802.1x/WPA/WPA2/EAP/RADIUS Authenticator"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_HOSTAPD
- select BR2_PACKAGE_LIBOPENSSL
- help
-
- hostapd is a user space daemon for access point and
- authentication servers. It implements IEEE 802.11 access point
- management, IEEE 802.1X/WPA/WPA2/EAP Authenticators, RADIUS
- client, EAP server, and RADIUS authentication server.
-
- http://hostap.epitest.fi/hostapd/
-
- Includes:
- - hostapd
-
-config BR2_PACKAGE_HOSTAPD_MINI
- prompt "hostapd-mini...................... An IEEE 802.11 AP, IEEE 802.1x/WPA/WPA2/EAP/RADIUS Authenticator (without EAP TLS/TTLS support)"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_HOSTAPD
- help
-
- hostapd is a user space daemon for access point and
- authentication servers. It implements IEEE 802.11 access point
- management, IEEE 802.1X/WPA/WPA2/EAP Authenticators, RADIUS
- client, EAP server, and RADIUS authentication server.
-
- http://hostap.epitest.fi/hostapd/
-
- Includes:
- - hostapd (built with WPA support only)
-
-config BR2_PACKAGE_HOSTAPD_UTILS
- prompt "hostapd-utils..................... An IEEE 802.11 AP, IEEE 802.1x/WPA/WPA2/EAP/RADIUS Authenticator (CLI utility)"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_HOSTAPD
- help
-
- hostapd is a user space daemon for access point and
- authentication servers. It implements IEEE 802.11 access point
- management, IEEE 802.1X/WPA/WPA2/EAP Authenticators, RADIUS
- client, EAP server, and RADIUS authentication server.
-
- http://hostap.epitest.fi/hostapd/
-
- Includes:
- - hostapd_cli
-
-if (BR2_PACKAGE_HOSTAPD = y) && (BR2_PACKAGE_HOSTAPD_MINI = y)
- comment "WARNING: both hostapd and hostapd-mini are selected for installation !"
-endif
diff --git a/openwrt/package/hostapd/Makefile b/openwrt/package/hostapd/Makefile
deleted file mode 100644
index ac45e7f7bc..0000000000
--- a/openwrt/package/hostapd/Makefile
+++ /dev/null
@@ -1,77 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=hostapd
-PKG_VERSION:=0.5.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=b7f4739ca4758798f8dc3b1ea9fd00d0
-
-PKG_SOURCE_URL:=http://hostap.epitest.fi/releases/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-define PKG_build
-
-ifneq ($(BR2_PACKAGE_$(1)),)
-BUILD_TARGETS += $(PKG_INSTALL_DIR)/$(2)/hostapd
-endif
-
-$(PKG_INSTALL_DIR)/$(2)/hostapd: $(PKG_BUILD_DIR)/.prepared
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- $(CP) ./files/$(2).config $(PKG_BUILD_DIR)/.config
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- OPTFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include/madwifi" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- hostapd
- mkdir -p $(PKG_INSTALL_DIR)/$(2)
- $(CP) $(PKG_BUILD_DIR)/hostapd $(PKG_INSTALL_DIR)/$(2)/
- touch $$@
-
-$$(IPKG_$(1)): $(PKG_INSTALL_DIR)/$(2)/hostapd
- install -m0755 -d $$(IDIR_$(1))/etc
- install -m0600 $(PKG_BUILD_DIR)/madwifi.conf $$(IDIR_$(1))/etc/hostapd.conf
- install -m0755 -d $$(IDIR_$(1))/usr/sbin
- install -m0755 $(PKG_INSTALL_DIR)/$(2)/hostapd $$(IDIR_$(1))/usr/sbin/
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-$(eval $(call PKG_template,HOSTAPD,hostapd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,HOSTAPD_MINI,hostapd-mini,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,HOSTAPD_UTILS,hostapd-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_build,HOSTAPD,hostapd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_build,HOSTAPD_MINI,hostapd-mini,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- $(CP) ./files/hostapd.config $(PKG_BUILD_DIR)/.config
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(BUILD_TARGETS)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- OPTFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include/madwifi" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- hostapd_cli
- touch $@
-
-$(IPKG_HOSTAPD_UTILS): $(PKG_BUILD_DIR)/.built
- install -m0755 -d $(IDIR_HOSTAPD_UTILS)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/hostapd_cli $(IDIR_HOSTAPD_UTILS)/usr/sbin/
- $(RSTRIP) $(IDIR_HOSTAPD_UTILS)
- $(IPKG_BUILD) $(IDIR_HOSTAPD_UTILS) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/hostapd/files/hostapd-mini.config b/openwrt/package/hostapd/files/hostapd-mini.config
deleted file mode 100644
index 912bee8d7f..0000000000
--- a/openwrt/package/hostapd/files/hostapd-mini.config
+++ /dev/null
@@ -1,69 +0,0 @@
-# Example hostapd build time configuration
-#
-# This file lists the configuration options that are used when building the
-# hostapd binary. All lines starting with # are ignored. Configuration option
-# lines must be commented out complete, if they are not to be included, i.e.,
-# just setting VARIABLE=n is not disabling that variable.
-#
-# This file is included in Makefile, so variables like CFLAGS and LIBS can also
-# be modified from here. In most cass, these lines should use += in order not
-# to override previous values of the variables.
-
-# Driver interface for Host AP driver
-CONFIG_DRIVER_HOSTAP=y
-
-# Driver interface for wired authenticator
-#CONFIG_DRIVER_WIRED=y
-
-# Driver interface for madwifi driver
-CONFIG_DRIVER_MADWIFI=y
-#CFLAGS += -I../head # change to reflect local setup; directory for madwifi src
-
-# Driver interface for Prism54 driver
-#CONFIG_DRIVER_PRISM54=y
-
-# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
-#CONFIG_DRIVER_BSD=y
-#CFLAGS += -I/usr/local/include
-#LIBS += -L/usr/local/lib
-
-# IEEE 802.11F/IAPP
-CONFIG_IAPP=y
-
-# WPA2/IEEE 802.11i RSN pre-authentication
-CONFIG_RSN_PREAUTH=y
-
-# Integrated EAP authenticator
-CONFIG_EAP=y
-
-# EAP-MD5 for the integrated EAP authenticator
-#CONFIG_EAP_MD5=y
-
-# EAP-TLS for the integrated EAP authenticator
-#CONFIG_EAP_TLS=y
-
-# EAP-MSCHAPv2 for the integrated EAP authenticator
-#CONFIG_EAP_MSCHAPV2=y
-
-# EAP-PEAP for the integrated EAP authenticator
-#CONFIG_EAP_PEAP=y
-
-# EAP-PSK for the integrated EAP authenticator
-CONFIG_EAP_PSK=y
-
-# EAP-GTC for the integrated EAP authenticator
-#CONFIG_EAP_GTC=y
-
-# EAP-TTLS for the integrated EAP authenticator
-#CONFIG_EAP_TTLS=y
-
-# EAP-SIM for the integrated EAP authenticator
-#CONFIG_EAP_SIM=y
-
-# PKCS#12 (PFX) support (used to read private key and certificate file from
-# a file that usually has extension .p12 or .pfx)
-#CONFIG_PKCS12=y
-
-# RADIUS authentication server. This provides access to the integrated EAP
-# authenticator from external hosts using RADIUS.
-#CONFIG_RADIUS_SERVER=y
diff --git a/openwrt/package/hostapd/files/hostapd.config b/openwrt/package/hostapd/files/hostapd.config
deleted file mode 100644
index e2237d6d8d..0000000000
--- a/openwrt/package/hostapd/files/hostapd.config
+++ /dev/null
@@ -1,69 +0,0 @@
-# Example hostapd build time configuration
-#
-# This file lists the configuration options that are used when building the
-# hostapd binary. All lines starting with # are ignored. Configuration option
-# lines must be commented out complete, if they are not to be included, i.e.,
-# just setting VARIABLE=n is not disabling that variable.
-#
-# This file is included in Makefile, so variables like CFLAGS and LIBS can also
-# be modified from here. In most cass, these lines should use += in order not
-# to override previous values of the variables.
-
-# Driver interface for Host AP driver
-CONFIG_DRIVER_HOSTAP=y
-
-# Driver interface for wired authenticator
-#CONFIG_DRIVER_WIRED=y
-
-# Driver interface for madwifi driver
-CONFIG_DRIVER_MADWIFI=y
-#CFLAGS += -I../head # change to reflect local setup; directory for madwifi src
-
-# Driver interface for Prism54 driver
-#CONFIG_DRIVER_PRISM54=y
-
-# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
-#CONFIG_DRIVER_BSD=y
-#CFLAGS += -I/usr/local/include
-#LIBS += -L/usr/local/lib
-
-# IEEE 802.11F/IAPP
-CONFIG_IAPP=y
-
-# WPA2/IEEE 802.11i RSN pre-authentication
-CONFIG_RSN_PREAUTH=y
-
-# Integrated EAP authenticator
-CONFIG_EAP=y
-
-# EAP-MD5 for the integrated EAP authenticator
-CONFIG_EAP_MD5=y
-
-# EAP-TLS for the integrated EAP authenticator
-CONFIG_EAP_TLS=y
-
-# EAP-MSCHAPv2 for the integrated EAP authenticator
-CONFIG_EAP_MSCHAPV2=y
-
-# EAP-PEAP for the integrated EAP authenticator
-CONFIG_EAP_PEAP=y
-
-# EAP-PSK for the integrated EAP authenticator
-CONFIG_EAP_PSK=y
-
-# EAP-GTC for the integrated EAP authenticator
-CONFIG_EAP_GTC=y
-
-# EAP-TTLS for the integrated EAP authenticator
-CONFIG_EAP_TTLS=y
-
-# EAP-SIM for the integrated EAP authenticator
-#CONFIG_EAP_SIM=y
-
-# PKCS#12 (PFX) support (used to read private key and certificate file from
-# a file that usually has extension .p12 or .pfx)
-CONFIG_PKCS12=y
-
-# RADIUS authentication server. This provides access to the integrated EAP
-# authenticator from external hosts using RADIUS.
-#CONFIG_RADIUS_SERVER=y
diff --git a/openwrt/package/hostapd/ipkg/hostapd-mini.conffiles b/openwrt/package/hostapd/ipkg/hostapd-mini.conffiles
deleted file mode 100644
index f61980010e..0000000000
--- a/openwrt/package/hostapd/ipkg/hostapd-mini.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/hostapd.conf
diff --git a/openwrt/package/hostapd/ipkg/hostapd-mini.control b/openwrt/package/hostapd/ipkg/hostapd-mini.control
deleted file mode 100644
index 5118ba76ac..0000000000
--- a/openwrt/package/hostapd/ipkg/hostapd-mini.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: hostapd-mini
-Priority: optional
-Section: net
-Depends: kmod-madwifi
-Description: an IEEE 802.11 AP, IEEE 802.1x/WPA/WPA2/EAP/RADIUS Authenticator (with EAP/PSK only)
diff --git a/openwrt/package/hostapd/ipkg/hostapd-utils.control b/openwrt/package/hostapd/ipkg/hostapd-utils.control
deleted file mode 100644
index 5f8d82d9c4..0000000000
--- a/openwrt/package/hostapd/ipkg/hostapd-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: hostapd-utils
-Priority: optional
-Section: net
-Depends: hostapd
-Description: an IEEE 802.11 AP, IEEE 802.1x/WPA/WPA2/EAP/RADIUS Authenticator (CLI utility)
diff --git a/openwrt/package/hostapd/ipkg/hostapd.conffiles b/openwrt/package/hostapd/ipkg/hostapd.conffiles
deleted file mode 100644
index f61980010e..0000000000
--- a/openwrt/package/hostapd/ipkg/hostapd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/hostapd.conf
diff --git a/openwrt/package/hostapd/ipkg/hostapd.control b/openwrt/package/hostapd/ipkg/hostapd.control
deleted file mode 100644
index cb2dac672b..0000000000
--- a/openwrt/package/hostapd/ipkg/hostapd.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: hostapd
-Priority: optional
-Section: net
-Depends: kmod-madwifi, libopenssl
-Provides: hostpad
-Description: an IEEE 802.11 AP, IEEE 802.1x/WPA/WPA2/EAP/RADIUS Authenticator
diff --git a/openwrt/package/hostapd/patches/001-cross_compile_fix.patch b/openwrt/package/hostapd/patches/001-cross_compile_fix.patch
deleted file mode 100644
index 8b5ca681d2..0000000000
--- a/openwrt/package/hostapd/patches/001-cross_compile_fix.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Common subdirectories: hostapd-0.5.2/logwatch and hostapd-0.5.2.new/logwatch
-diff -u hostapd-0.5.2/Makefile hostapd-0.5.2.new/Makefile
---- hostapd-0.5.2/Makefile 2006-03-20 03:20:09.000000000 +0000
-+++ hostapd-0.5.2.new/Makefile 2006-03-21 22:25:23.803473592 +0000
-@@ -3,7 +3,7 @@
- DIR_HOSTAP=.
-
- ifndef CFLAGS
--CFLAGS = -MMD -O2 -Wall -g
-+CFLAGS = -MMD $(OPTFLAGS) $(CPPFLAGS)
- endif
-
- # define HOSTAPD_DUMP_STATE to include SIGUSR1 handler for dumping state to
-@@ -266,7 +266,7 @@
- for i in $(ALL); do cp $$i /usr/local/bin/$$i; done
-
- hostapd: $(OBJS)
-- $(CC) -o hostapd $(OBJS) $(LIBS)
-+ $(CC) -o hostapd $(OBJS) $(LDFLAGS) $(LIBS)
-
- driver_conf.c: Makefile .config
- rm -f driver_conf.c
-@@ -330,10 +330,10 @@
- endif
-
- nt_password_hash: $(NOBJS)
-- $(CC) -o nt_password_hash $(NOBJS) $(LIBS_n)
-+ $(CC) -o nt_password_hash $(NOBJS) $(LDFLAGS) $(LIBS_n)
-
- hlr_auc_gw: $(HOBJS)
-- $(CC) -o hlr_auc_gw $(HOBJS) $(LIBS_h)
-+ $(CC) -o hlr_auc_gw $(HOBJS) $(LDFLAGS) $(LIBS_h)
-
- clean:
- rm -f core *~ *.o hostapd hostapd_cli nt_password_hash hlr_auc_gw
diff --git a/openwrt/package/howl/Config.in b/openwrt/package/howl/Config.in
deleted file mode 100644
index a409dd2a64..0000000000
--- a/openwrt/package/howl/Config.in
+++ /dev/null
@@ -1,62 +0,0 @@
-menu "howl.............................. A Zeroconf networking implementation"
-
-config BR2_COMPILE_HOWL
- tristate
- default n
- depends BR2_PACKAGE_LIBHOWL
-
-config BR2_PACKAGE_LIBHOWL
- prompt "libhowl........................... The howl library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_HOWL
- help
- A cross-platform implementation of Zeroconf networking.
-
- http://www.porchdogsoft.com/products/howl/
-
- This package contains shared libraries, needed by other programs.
-
-config BR2_PACKAGE_HOWL_UTILS
- prompt "howl-utils...................... The howl client utilities"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBHOWL
- help
- A cross-platform implementation of Zeroconf networking.
-
- http://www.porchdogsoft.com/products/howl/
-
-comment "Daemons ---"
-
-config BR2_PACKAGE_AUTOIPD
- prompt "autoipd........................... An IPv4 Link-Local address self-assigner daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBHOWL
- help
- A cross-platform implementation of Zeroconf networking.
-
- http://www.porchdogsoft.com/products/howl/
-
-config BR2_PACKAGE_MDNSRESPONDER
- prompt "mdnsresponder..................... An mDNS (Multicast DNS) service responder daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBHOWL
- help
- A cross-platform implementation of Zeroconf networking.
-
- http://www.porchdogsoft.com/products/howl/
-
-config BR2_PACKAGE_NIFD
- prompt "nifd.............................. A network interface monitor daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBHOWL
- help
- A cross-platform implementation of Zeroconf networking.
-
- http://www.porchdogsoft.com/products/howl/
-
-endmenu
diff --git a/openwrt/package/howl/Makefile b/openwrt/package/howl/Makefile
deleted file mode 100644
index 32557c5f18..0000000000
--- a/openwrt/package/howl/Makefile
+++ /dev/null
@@ -1,122 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=howl
-PKG_VERSION:=1.0.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=c389d3ffba0e69a179de2ec650f1fdcc
-
-PKG_SOURCE_URL:=http://www.porchdogsoft.com/download/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBHOWL,libhowl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,MDNSRESPONDER,mdnsresponder,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,HOWL_UTILS,howl-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,AUTOIPD,autoipd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,NIFD,nifd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBHOWL):
- install -m0755 -d $(IDIR_LIBHOWL)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{howl,mDNSResponder}.so.* $(IDIR_LIBHOWL)/usr/lib/
- $(RSTRIP) $(IDIR_LIBHOWL)
- $(IPKG_BUILD) $(IDIR_LIBHOWL) $(PACKAGE_DIR)
-
-$(IPKG_HOWL_UTILS):
- install -m0755 -d $(IDIR_HOWL_UTILS)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/mDNS{Browse,Publish,Query,Resolve} $(IDIR_HOWL_UTILS)/usr/bin/
- $(RSTRIP) $(IDIR_HOWL_UTILS)
- $(IPKG_BUILD) $(IDIR_HOWL_UTILS) $(PACKAGE_DIR)
-
-$(IPKG_MDNSRESPONDER):
- install -m0755 -d $(IDIR_MDNSRESPONDER)/etc
- install -m0644 ./files/mDNSResponder.conf $(IDIR_MDNSRESPONDER)/etc/mDNSResponder.conf
- install -m0755 -d $(IDIR_MDNSRESPONDER)/etc/init.d
- install -m0644 ./files/mDNSResponder.init $(IDIR_MDNSRESPONDER)/etc/init.d/mDNSResponder
- install -m0755 -d $(IDIR_MDNSRESPONDER)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/mDNSResponder $(IDIR_MDNSRESPONDER)/usr/sbin/
- $(RSTRIP) $(IDIR_MDNSRESPONDER)
- $(IPKG_BUILD) $(IDIR_MDNSRESPONDER) $(PACKAGE_DIR)
-
-$(IPKG_AUTOIPD):
- install -m0755 -d $(IDIR_AUTOIPD)/etc/init.d
- install -m0644 ./files/autoipd.init $(IDIR_AUTOIPD)/etc/init.d/autoipd
- install -m0755 -d $(IDIR_AUTOIPD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/autoipd $(IDIR_AUTOIPD)/usr/sbin/
- $(RSTRIP) $(IDIR_AUTOIPD)
- $(IPKG_BUILD) $(IDIR_AUTOIPD) $(PACKAGE_DIR)
-
-$(IPKG_NIFD):
- install -m0755 -d $(IDIR_NIFD)/etc/init.d
- install -m0644 ./files/nifd.init $(IDIR_NIFD)/etc/init.d/nifd
- install -m0755 -d $(IDIR_NIFD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/nifd $(IDIR_NIFD)/usr/sbin/
- $(RSTRIP) $(IDIR_NIFD)
- $(IPKG_BUILD) $(IDIR_NIFD) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libhowl.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/howl $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{howl,mDNSResponder}.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/howl.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I/usr/include/howl,,g' $(STAGING_DIR)/usr/lib/pkgconfig/howl.pc
- $(SED) 's,-L/usr/lib,,g' $(STAGING_DIR)/usr/lib/pkgconfig/howl.pc
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libhowl.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/howl \
- $(STAGING_DIR)/usr/lib/lib{howl,mDNSResponder}.{a,so*} \
- $(STAGING_DIR)/usr/lib/pkgconfig/howl.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/howl/files/autoipd.init b/openwrt/package/howl/files/autoipd.init
deleted file mode 100644
index eed593603c..0000000000
--- a/openwrt/package/howl/files/autoipd.init
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/autopid
-RUN_D=/var/run
-PID_F=$RUN_D/autoipd.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- [ -d $RUN_D ] || mkdir -p $RUN_D
- autoipd $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-exit $?
diff --git a/openwrt/package/howl/files/mDNSResponder.conf b/openwrt/package/howl/files/mDNSResponder.conf
deleted file mode 100644
index eac712f9e5..0000000000
--- a/openwrt/package/howl/files/mDNSResponder.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-#name #type #domain #port #text
-"My Router" _http._tcp local. 80 "txtvers=1" "path=/P" "note=My Router"
diff --git a/openwrt/package/howl/files/mDNSResponder.init b/openwrt/package/howl/files/mDNSResponder.init
deleted file mode 100644
index 292280f7c1..0000000000
--- a/openwrt/package/howl/files/mDNSResponder.init
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/mDNSResponder
-RUN_D=/var/run
-PID_F=$RUN_D/mDNSResponder.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- [ -d $RUN_D ] || mkdir -p $RUN_D
- mDNSResponder $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-exit $?
diff --git a/openwrt/package/howl/files/nifd.init b/openwrt/package/howl/files/nifd.init
deleted file mode 100644
index b67861eb26..0000000000
--- a/openwrt/package/howl/files/nifd.init
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/nifd
-RUN_D=/var/run
-PID_F=$RUN_D/nifd.pid
-
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- [ -d $RUN_D ] || mkdir -p $RUN_D
- nifd $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-exit $?
diff --git a/openwrt/package/howl/ipkg/autoipd.control b/openwrt/package/howl/ipkg/autoipd.control
deleted file mode 100644
index 5d8af85e91..0000000000
--- a/openwrt/package/howl/ipkg/autoipd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: autoipd
-Priority: optional
-Section: net
-Description: an IPv4 Link-Local address self-assigner daemon
-Depends: libhowl, libpthread
diff --git a/openwrt/package/howl/ipkg/howl-utils.control b/openwrt/package/howl/ipkg/howl-utils.control
deleted file mode 100644
index ed6695b764..0000000000
--- a/openwrt/package/howl/ipkg/howl-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: howl-utils
-Priority: optional
-Section: net
-Description: a ZeroConf (aka RendezVous) implementation (utilities)
-Depends: libhowl, libpthread
diff --git a/openwrt/package/howl/ipkg/libhowl.control b/openwrt/package/howl/ipkg/libhowl.control
deleted file mode 100644
index 390862d5ca..0000000000
--- a/openwrt/package/howl/ipkg/libhowl.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libhowl
-Priority: optional
-Section: net
-Description: a ZeroConf (aka RendezVous) implementation (library)
diff --git a/openwrt/package/howl/ipkg/mdnsresponder.conffiles b/openwrt/package/howl/ipkg/mdnsresponder.conffiles
deleted file mode 100644
index eaf1aead95..0000000000
--- a/openwrt/package/howl/ipkg/mdnsresponder.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/mDNSResponder.conf
diff --git a/openwrt/package/howl/ipkg/mdnsresponder.control b/openwrt/package/howl/ipkg/mdnsresponder.control
deleted file mode 100644
index e2312e338f..0000000000
--- a/openwrt/package/howl/ipkg/mdnsresponder.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: mdnsresponder
-Priority: optional
-Section: net
-Description: an mDNS (Multicast DNS) service responder daemon
-Depends: libhowl, libpthread
diff --git a/openwrt/package/howl/ipkg/nifd.control b/openwrt/package/howl/ipkg/nifd.control
deleted file mode 100644
index 20f47e3f24..0000000000
--- a/openwrt/package/howl/ipkg/nifd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: nifd
-Priority: optional
-Section: net
-Description: a network interface monitor daemon
-Depends: libhowl, libpthread
diff --git a/openwrt/package/howl/patches/config-path.patch b/openwrt/package/howl/patches/config-path.patch
deleted file mode 100644
index a0c26d1e27..0000000000
--- a/openwrt/package/howl/patches/config-path.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- howl-0.9.10-orig/src/mDNSResponder/Posix/posix_main.c 2005-01-27 04:11:20.000000000 +0100
-+++ howl-0.9.10-2/src/mDNSResponder/Posix/posix_main.c 2005-03-19 13:04:42.000000000 +0100
-@@ -249,9 +249,9 @@
- {
- sw_mdns_servant_load_file(servant, conf_file);
- }
-- else if (sw_mdns_servant_load_file(servant, "/etc/howl/mDNSResponder.conf") != SW_OKAY)
-+ else
- {
-- sw_mdns_servant_load_file(servant, "/usr/local/etc/howl/mDNSResponder.conf");
-+ sw_mdns_servant_load_file(servant, "/etc/mDNSResponder.conf");
- }
-
- write_pidfile("mDNSResponder", &pidfd);
diff --git a/openwrt/package/howl/patches/debug-log.patch b/openwrt/package/howl/patches/debug-log.patch
deleted file mode 100644
index 91410b8e94..0000000000
--- a/openwrt/package/howl/patches/debug-log.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- howl-0.9.10-orig/src/mDNSResponder/Posix/posix_main.c 2005-01-27 04:11:20.000000000 +0100
-+++ howl-0.9.10-2/src/mDNSResponder/Posix/posix_main.c 2005-03-19 13:04:42.000000000 +0100
-@@ -186,6 +186,7 @@
- case 'd':
- {
- make_daemon = SW_FALSE;
-+ sw_debug_set_level(SW_LOG_VERBOSE);
- }
- break;
-
diff --git a/openwrt/package/howl/patches/proto-fix.patch b/openwrt/package/howl/patches/proto-fix.patch
deleted file mode 100644
index 0b9d105dd6..0000000000
--- a/openwrt/package/howl/patches/proto-fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- howl-0.9.10-orig/include/salt/platform.h 2005-01-28 21:46:14.000000000 +0100
-+++ howl-0.9.10-2/include/salt/platform.h 2005-03-19 13:04:42.000000000 +0100
-@@ -409,7 +409,7 @@
- */
-
- sw_const_string
--sw_strerror();
-+sw_strerror(void);
-
-
- /*
diff --git a/openwrt/package/htpdate/Config.in b/openwrt/package/htpdate/Config.in
deleted file mode 100644
index 89f19d297c..0000000000
--- a/openwrt/package/htpdate/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_HTPDATE
- prompt "htpdate........................... HTP (Hypertext Time Protocol) implementation"
- tristate
- default m if CONFIG_DEVEL
- help
- An HTP (Hypertext Time Protocol) implementation
-
- http://www.clevervest.com/htp/
-
diff --git a/openwrt/package/htpdate/Makefile b/openwrt/package/htpdate/Makefile
deleted file mode 100644
index 8eb04c5a50..0000000000
--- a/openwrt/package/htpdate/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=htpdate
-PKG_VERSION:=0.9.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=12cf883c5619cf4c13a62f77f1a55b54
-
-PKG_SOURCE_URL:=http://www.clevervest.com/htp/archive/c/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,HTPDATE,htpdate,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)"
- touch $@
-
-$(IPKG_HTPDATE):
- install -d -m0755 $(IDIR_HTPDATE)/etc/default/
- install -m0644 ./files/htpdate.default $(IDIR_HTPDATE)/etc/default/htpdate
- install -d -m0755 $(IDIR_HTPDATE)/etc/init.d/
- install -m0755 ./files/htpdate.init $(IDIR_HTPDATE)/etc/init.d/htpdate
- ln -sf htpdate $(IDIR_HTPDATE)/etc/init.d/S49htpdate
- install -d -m0755 $(IDIR_HTPDATE)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/htpdate $(IDIR_HTPDATE)/usr/sbin/
- $(RSTRIP) $(IDIR_HTPDATE)
- $(IPKG_BUILD) $(IDIR_HTPDATE) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/htpdate/files/htpdate.default b/openwrt/package/htpdate/files/htpdate.default
deleted file mode 100644
index 94674fdd3c..0000000000
--- a/openwrt/package/htpdate/files/htpdate.default
+++ /dev/null
@@ -1 +0,0 @@
-OPTIONS="www.google.com www.yahoo.com www.linux.org www.freebsd.org"
diff --git a/openwrt/package/htpdate/files/htpdate.init b/openwrt/package/htpdate/files/htpdate.init
deleted file mode 100644
index 97a413f774..0000000000
--- a/openwrt/package/htpdate/files/htpdate.init
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-BIN=htpdate
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- mkdir -p $RUN_D
- $BIN -l -s -t $OPTIONS && $BIN -D $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/htpdate/ipkg/htpdate.conffiles b/openwrt/package/htpdate/ipkg/htpdate.conffiles
deleted file mode 100644
index cbbc558a1a..0000000000
--- a/openwrt/package/htpdate/ipkg/htpdate.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/default/htpdate
diff --git a/openwrt/package/htpdate/ipkg/htpdate.control b/openwrt/package/htpdate/ipkg/htpdate.control
deleted file mode 100644
index cdb470c2d8..0000000000
--- a/openwrt/package/htpdate/ipkg/htpdate.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: htpdate
-Priority: optional
-Section: net
-Description: an HTP (Hypertext Time Protocol) implementation
diff --git a/openwrt/package/httping/Config.in b/openwrt/package/httping/Config.in
deleted file mode 100644
index 8c84ec7c9f..0000000000
--- a/openwrt/package/httping/Config.in
+++ /dev/null
@@ -1,21 +0,0 @@
-menu "httping........................... Httping is like 'ping' but for http-requests."
-
-config BR2_PACKAGE_HTTPING
- prompt "httping............................ Httping is like 'ping' but for http-requests."
- tristate
- default m if CONFIG_DEVEL
- help
- Httping is like 'ping' but for http-requests.
- Give it an url, and it'll show you how long it takes to connect, send a
- request and retrieve the reply (only the headers). Be aware that the
- transmission across the network also takes time!
-
- http://www.vanheusden.com/httping/
-
-config BR2_PACKAGE_HTTPING_WITH_SSL
- prompt "Enable SSL support"
- bool
- default y
- depends BR2_PACKAGE_HTTPING
-
-endmenu
diff --git a/openwrt/package/httping/Makefile b/openwrt/package/httping/Makefile
deleted file mode 100644
index dbd92087f3..0000000000
--- a/openwrt/package/httping/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=httping
-PKG_VERSION:=1.0.10
-PKG_RELEASE:=1
-PKG_MD5SUM:=998b00b8babeb3196d28c20ad87d9c15
-
-PKG_SOURCE_URL:=http://www.vanheusden.com/httping/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-PKG_DEPEND=libopenssl
-ifneq ($(BR2_PACKAGE_HTTPING_WITH_SSL),y)
-SSL_ENABLE:=".nossl"
-PKG_DEPEND:=""
-endif
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,HTTPING,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) -f $(PKG_BUILD_DIR)/Makefile$(SSL_ENABLE) \
- CC=$(TARGET_CC) STAGING_DIR=$(STAGING_DIR)
- touch $@
-
-$(IPKG_HTTPING):
- mkdir -p $(IDIR_HTTPING)/usr/sbin
- echo "Depends: $(PKG_DEPEND)" >> $(IDIR_HTTPING)/CONTROL/control
- $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME) $(IDIR_HTTPING)/usr/sbin/
- $(STRIP) $(IDIR_HTTPING)/usr/sbin/*
- $(IPKG_BUILD) $(IDIR_HTTPING) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/httping/ipkg/httping.control b/openwrt/package/httping/ipkg/httping.control
deleted file mode 100644
index 5ab31d9621..0000000000
--- a/openwrt/package/httping/ipkg/httping.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: httping
-Section: net
-Priority: optional
-Description: Httping is like 'ping' but for http-requests.
diff --git a/openwrt/package/httping/patches/01-honor_includes_lib-paths.patch b/openwrt/package/httping/patches/01-honor_includes_lib-paths.patch
deleted file mode 100644
index 92817c7b3a..0000000000
--- a/openwrt/package/httping/patches/01-honor_includes_lib-paths.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -urN httping-1.0.10.orig/io.c httping-1.0.10/io.c
---- httping-1.0.10.orig/io.c 2006-02-13 13:48:37.645232976 +0100
-+++ httping-1.0.10/io.c 2006-02-13 13:48:24.083294704 +0100
-@@ -37,7 +37,7 @@
- struct timeval to;
- fd_set rfds;
-
-- FD_ZERO(&rfds);
-+ //FD_ZERO(&rfds);
- FD_SET(fd, &rfds);
-
- to.tv_sec = timeout / 1000;
-diff -urN httping-1.0.10.orig/Makefile httping-1.0.10/Makefile
---- httping-1.0.10.orig/Makefile 2006-01-02 17:07:29.000000000 +0100
-+++ httping-1.0.10/Makefile 2006-02-13 13:44:45.066590304 +0100
-@@ -15,8 +15,8 @@
- VERSION=1.0.10
-
- DEBUG=-g
--LDFLAGS+=-lssl -lcrypto $(DEBUG)
--CFLAGS+=-O2 -Wall -DVERSION=\"$(VERSION)\" $(DEBUG)
-+LDFLAGS+=-lssl -lcrypto $(DEBUG) -L$(STAGING_DIR)/usr/lib
-+CFLAGS+=-O2 -Wall -DVERSION=\"$(VERSION)\" $(DEBUG) -I$(STAGING_DIR)/usr/include
-
- OBJS=http.o io.o str.o error.o utils.o main.o tcp.o mssl.o res.o
-
diff --git a/openwrt/package/icecast/Config.in b/openwrt/package/icecast/Config.in
deleted file mode 100644
index 90c75c7cff..0000000000
--- a/openwrt/package/icecast/Config.in
+++ /dev/null
@@ -1,24 +0,0 @@
-config BR2_PACKAGE_ICECAST
- prompt "icecast........................... A streaming media server for Ogg/Vorbis and MP3 audio streams"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBCURL
- select BR2_PACKAGE_LIBVORBISIDEC
- select BR2_PACKAGE_LIBXML2
- select BR2_PACKAGE_LIBXSLT
- help
- Icecast is a streaming media server which currently supports Ogg
- Vorbis and MP3 audio streams. It can be used to create an Internet
- radio station or a privately running jukebox and many things in
- between. It is very versatile in that new formats can be added
- relatively easily and supports open standards for commuincation and
- interaction.
-
- http://www.icecast.org/
-
- Depends:
- * libcurl
- * libvorbisidec
- * libxml2
- * libxslt
-
diff --git a/openwrt/package/icecast/Makefile b/openwrt/package/icecast/Makefile
deleted file mode 100644
index ec2ed2405c..0000000000
--- a/openwrt/package/icecast/Makefile
+++ /dev/null
@@ -1,80 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=icecast
-PKG_VERSION:=2.3.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=35256fbc4a93571662af2ed18fbbfcc5
-
-PKG_SOURCE_URL:=http://downloads.us.xiph.org/releases/icecast/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,ICECAST,icecast,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include/libxml2 " \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --disable-rpath \
- --with-gnu-ld \
- --enable-yp \
- --with-curl="yes" \
- --with-curl-config="$(STAGING_DIR)/usr/bin/curl-config" \
- --with-ogg="$(STAGING_DIR)/usr" \
- --with-speex="no" \
- --with-theora="no" \
- --with-vorbis="$(STAGING_DIR)/usr" \
- --with-xslt-config="$(STAGING_DIR)/usr/bin/xslt-config" \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_ICECAST):
- install -d -m0755 $(IDIR_ICECAST)/etc
- $(CP) $(PKG_INSTALL_DIR)/etc/icecast.xml $(IDIR_ICECAST)/etc/
- install -d -m0755 $(IDIR_ICECAST)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/icecast $(IDIR_ICECAST)/usr/bin/
- install -d -m0755 $(IDIR_ICECAST)/usr/share/icecast
- $(CP) $(PKG_INSTALL_DIR)/usr/share/icecast/admin $(IDIR_ICECAST)/usr/share/icecast/
- $(CP) $(PKG_INSTALL_DIR)/usr/share/icecast/web $(IDIR_ICECAST)/usr/share/icecast/
- $(RSTRIP) $(IDIR_ICECAST)
- $(IPKG_BUILD) $(IDIR_ICECAST) $(PACKAGE_DIR)
diff --git a/openwrt/package/icecast/ipkg/icecast.conffiles b/openwrt/package/icecast/ipkg/icecast.conffiles
deleted file mode 100644
index 1203e9dc44..0000000000
--- a/openwrt/package/icecast/ipkg/icecast.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/icecast.xml
diff --git a/openwrt/package/icecast/ipkg/icecast.control b/openwrt/package/icecast/ipkg/icecast.control
deleted file mode 100644
index 4df9d507f5..0000000000
--- a/openwrt/package/icecast/ipkg/icecast.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: icecast
-Priority: optional
-Section: net
-Depends: libcurl, libvorbisidec, libpthread, libxml2, libxslt
-Description: A streaming media server
diff --git a/openwrt/package/icecast/patches/01-icecast-2.3.0-tremor.patch b/openwrt/package/icecast/patches/01-icecast-2.3.0-tremor.patch
deleted file mode 100644
index ed170846ff..0000000000
--- a/openwrt/package/icecast/patches/01-icecast-2.3.0-tremor.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-diff -rNu icecast-2.3.0.old/configure icecast-2.3.0.new/configure
---- icecast-2.3.0.old/configure 2005-09-24 07:18:46.000000000 +1000
-+++ icecast-2.3.0.new/configure 2005-10-07 22:08:29.000000000 +1000
-@@ -21967,7 +21967,7 @@
- if test "${xt_cv_lib_ogg+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- OGG_LIBS="-logg"
-+ OGG_LIBS="-lvorbisidec"
-
- #
- # check if the installed Ogg is sufficiently new.
-@@ -22033,7 +22033,7 @@
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
--#include <ogg/ogg.h>
-+#include <tremor/ogg.h>
- int
- main ()
- {
-@@ -22188,9 +22188,9 @@
-
- fi
-
--VORBIS_LIBS="-lvorbis"
--VORBISFILE_LIBS="-lvorbisfile"
--VORBISENC_LIBS="-lvorbisenc"
-+VORBIS_LIBS="-lvorbisidec"
-+VORBISFILE_LIBS="-lvorbisidec"
-+VORBISENC_LIBS="-lvorbisidec"
-
- xt_save_LIBS="$LIBS"
- xt_save_LDFLAGS="$LDFLAGS"
-@@ -22327,17 +22327,18 @@
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
-
--#include <vorbis/codec.h>
--#include <vorbis/vorbisenc.h>
-+#include <tremor/ivorbiscodec.h>
-
-
- int
- main ()
- {
-+/*
- if ((struct ovectl_ratemanage_arg *) 0)
- return 0;
- if (sizeof (struct ovectl_ratemanage_arg))
- return 0;
-+*/
- ;
- return 0;
- }
-diff -rNu icecast-2.3.0.old/src/format_flac.c icecast-2.3.0.new/src/format_flac.c
---- icecast-2.3.0.old/src/format_flac.c 2005-08-19 12:01:58.000000000 +1000
-+++ icecast-2.3.0.new/src/format_flac.c 2005-10-07 22:10:24.000000000 +1000
-@@ -18,7 +18,7 @@
- #endif
-
- #include <stdlib.h>
--#include <ogg/ogg.h>
-+#include <tremor/ogg.h>
- #include <string.h>
-
- typedef struct source_tag source_t;
-diff -rNu icecast-2.3.0.old/src/format_midi.c icecast-2.3.0.new/src/format_midi.c
---- icecast-2.3.0.old/src/format_midi.c 2005-08-19 12:01:58.000000000 +1000
-+++ icecast-2.3.0.new/src/format_midi.c 2005-10-07 22:10:12.000000000 +1000
-@@ -18,7 +18,7 @@
- #endif
-
- #include <stdlib.h>
--#include <ogg/ogg.h>
-+#include <tremor/ogg.h>
- #include <string.h>
-
- typedef struct source_tag source_t;
-diff -rNu icecast-2.3.0.old/src/format_ogg.c icecast-2.3.0.new/src/format_ogg.c
---- icecast-2.3.0.old/src/format_ogg.c 2005-08-19 12:01:58.000000000 +1000
-+++ icecast-2.3.0.new/src/format_ogg.c 2005-10-07 22:10:02.000000000 +1000
-@@ -24,7 +24,7 @@
- #include <stdlib.h>
- #include <string.h>
-
--#include <ogg/ogg.h>
-+#include <tremor/ogg.h>
-
- #include "refbuf.h"
- #include "source.h"
-diff -rNu icecast-2.3.0.old/src/format_ogg.h icecast-2.3.0.new/src/format_ogg.h
---- icecast-2.3.0.old/src/format_ogg.h 2005-08-19 12:01:58.000000000 +1000
-+++ icecast-2.3.0.new/src/format_ogg.h 2005-10-07 22:09:51.000000000 +1000
-@@ -18,7 +18,7 @@
- #ifndef __FORMAT_OGG_H__
- #define __FORMAT_OGG_H__
-
--#include <ogg/ogg.h>
-+#include <tremor/ogg.h>
- #include "refbuf.h"
- #include "format.h"
-
-diff -rNu icecast-2.3.0.old/src/format_speex.c icecast-2.3.0.new/src/format_speex.c
---- icecast-2.3.0.old/src/format_speex.c 2005-08-19 12:01:58.000000000 +1000
-+++ icecast-2.3.0.new/src/format_speex.c 2005-10-07 22:09:44.000000000 +1000
-@@ -18,7 +18,7 @@
- #endif
-
- #include <stdlib.h>
--#include <ogg/ogg.h>
-+#include <tremor/ogg.h>
- #include <speex/speex_header.h>
-
- typedef struct source_tag source_t;
-diff -rNu icecast-2.3.0.old/src/format_theora.c icecast-2.3.0.new/src/format_theora.c
---- icecast-2.3.0.old/src/format_theora.c 2005-08-19 12:01:58.000000000 +1000
-+++ icecast-2.3.0.new/src/format_theora.c 2005-10-07 22:09:38.000000000 +1000
-@@ -18,7 +18,7 @@
- #endif
-
- #include <stdlib.h>
--#include <ogg/ogg.h>
-+#include <tremor/ogg.h>
- #include <theora/theora.h>
-
- typedef struct source_tag source_t;
-diff -rNu icecast-2.3.0.old/src/format_vorbis.c icecast-2.3.0.new/src/format_vorbis.c
---- icecast-2.3.0.old/src/format_vorbis.c 2005-08-19 12:01:58.000000000 +1000
-+++ icecast-2.3.0.new/src/format_vorbis.c 2005-10-07 22:09:29.000000000 +1000
-@@ -18,8 +18,8 @@
- #endif
-
- #include <stdlib.h>
--#include <ogg/ogg.h>
--#include <vorbis/codec.h>
-+#include <tremor/ogg.h>
-+#include <tremor/ivorbiscodec.h>
- #include <memory.h>
- #include <string.h>
-
-diff -rNu icecast-2.3.0.old/src/source.c icecast-2.3.0.new/src/source.c
---- icecast-2.3.0.old/src/source.c 2005-09-23 06:19:28.000000000 +1000
-+++ icecast-2.3.0.new/src/source.c 2005-10-07 22:09:17.000000000 +1000
-@@ -19,7 +19,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <sys/types.h>
--#include <ogg/ogg.h>
-+#include <tremor/ogg.h>
- #include <errno.h>
-
- #ifndef _WIN32
diff --git a/openwrt/package/icecast/patches/icecast-2.3.0-curl_config.patch b/openwrt/package/icecast/patches/icecast-2.3.0-curl_config.patch
deleted file mode 100644
index eb9f46f2a1..0000000000
--- a/openwrt/package/icecast/patches/icecast-2.3.0-curl_config.patch
+++ /dev/null
@@ -1,27127 +0,0 @@
-diff -ruN icecast-2.3.0-old/aclocal.m4 icecast-2.3.0-new/aclocal.m4
---- icecast-2.3.0-old/aclocal.m4 2005-09-23 23:18:41.000000000 +0200
-+++ icecast-2.3.0-new/aclocal.m4 2005-10-02 13:02:52.000000000 +0200
-@@ -871,63 +871,13 @@
- ]
- )
-
--# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-+# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*-
-
--# serial 47 AC_PROG_LIBTOOL
-+# serial 46 AC_PROG_LIBTOOL
-+# Debian $Rev$
-
--
--# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
--# -----------------------------------------------------------
--# If this macro is not defined by Autoconf, define it here.
--m4_ifdef([AC_PROVIDE_IFELSE],
-- [],
-- [m4_define([AC_PROVIDE_IFELSE],
-- [m4_ifdef([AC_PROVIDE_$1],
-- [$2], [$3])])])
--
--
--# AC_PROG_LIBTOOL
--# ---------------
- AC_DEFUN([AC_PROG_LIBTOOL],
--[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
--dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
--dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
-- AC_PROVIDE_IFELSE([AC_PROG_CXX],
-- [AC_LIBTOOL_CXX],
-- [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
-- ])])
--dnl And a similar setup for Fortran 77 support
-- AC_PROVIDE_IFELSE([AC_PROG_F77],
-- [AC_LIBTOOL_F77],
-- [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
--])])
--
--dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
--dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
--dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
-- AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-- [AC_LIBTOOL_GCJ],
-- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-- [AC_LIBTOOL_GCJ],
-- [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
-- [AC_LIBTOOL_GCJ],
-- [ifdef([AC_PROG_GCJ],
-- [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
-- ifdef([A][M_PROG_GCJ],
-- [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
-- ifdef([LT_AC_PROG_GCJ],
-- [define([LT_AC_PROG_GCJ],
-- defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
--])])# AC_PROG_LIBTOOL
--
--
--# _AC_PROG_LIBTOOL
--# ----------------
--AC_DEFUN([_AC_PROG_LIBTOOL],
- [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
--AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
--AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
--AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
-
- # This can be used to rebuild libtool when needed
- LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
-@@ -938,13 +888,10 @@
-
- # Prevent multiple expansion
- define([AC_PROG_LIBTOOL], [])
--])# _AC_PROG_LIBTOOL
--
-+])
-
--# AC_LIBTOOL_SETUP
--# ----------------
- AC_DEFUN([AC_LIBTOOL_SETUP],
--[AC_PREREQ(2.50)dnl
-+[AC_PREREQ(2.13)dnl
- AC_REQUIRE([AC_ENABLE_SHARED])dnl
- AC_REQUIRE([AC_ENABLE_STATIC])dnl
- AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
-@@ -954,294 +901,410 @@
- AC_REQUIRE([AC_PROG_LD])dnl
- AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
- AC_REQUIRE([AC_PROG_NM])dnl
-+AC_REQUIRE([LT_AC_PROG_SED])dnl
-
- AC_REQUIRE([AC_PROG_LN_S])dnl
- AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
--# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
- AC_REQUIRE([AC_OBJEXT])dnl
- AC_REQUIRE([AC_EXEEXT])dnl
- dnl
-
--AC_LIBTOOL_SYS_MAX_CMD_LEN
--AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
--AC_LIBTOOL_OBJDIR
--
--AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
- _LT_AC_PROG_ECHO_BACKSLASH
--
--case $host_os in
--aix3*)
-- # AIX sometimes has problems with the GCC collect2 program. For some
-- # reason, if we set the COLLECT_NAMES environment variable, the problems
-- # vanish in a puff of smoke.
-- if test "X${COLLECT_NAMES+set}" != Xset; then
-- COLLECT_NAMES=
-- export COLLECT_NAMES
-+# Only perform the check for file, if the check method requires it
-+case $deplibs_check_method in
-+file_magic*)
-+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-+ AC_PATH_MAGIC
- fi
- ;;
- esac
-
--# Sed substitution that helps us do robust quoting. It backslashifies
--# metacharacters that are still active within double-quoted strings.
--Xsed='sed -e 1s/^X//'
--[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
--
--# Same as above, but do not quote variable references.
--[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
--
--# Sed substitution to delay expansion of an escaped shell variable in a
--# double_quote_subst'ed string.
--delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
--
--# Sed substitution to avoid accidental globbing in evaled expressions
--no_glob_subst='s/\*/\\\*/g'
--
--# Constants:
--rm="rm -f"
--
--# Global variables:
--default_ofile=libtool
--can_build_shared=yes
--
--# All known linkers require a `.a' archive for static linking (except MSVC,
--# which needs '.lib').
--libext=a
--ltmain="$ac_aux_dir/ltmain.sh"
--ofile="$default_ofile"
--with_gnu_ld="$lt_cv_prog_gnu_ld"
--
--AC_CHECK_TOOL(AR, ar, false)
- AC_CHECK_TOOL(RANLIB, ranlib, :)
- AC_CHECK_TOOL(STRIP, strip, :)
-
--old_CC="$CC"
--old_CFLAGS="$CFLAGS"
-+ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
-+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-+enable_win32_dll=yes, enable_win32_dll=no)
-
--# Set sane defaults for various variables
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
--test -z "$AS" && AS=as
--test -z "$CC" && CC=cc
--test -z "$LTCC" && LTCC=$CC
--test -z "$DLLTOOL" && DLLTOOL=dlltool
--test -z "$LD" && LD=ld
--test -z "$LN_S" && LN_S="ln -s"
--test -z "$MAGIC_CMD" && MAGIC_CMD=file
--test -z "$NM" && NM=nm
--test -z "$SED" && SED=sed
--test -z "$OBJDUMP" && OBJDUMP=objdump
--test -z "$RANLIB" && RANLIB=:
--test -z "$STRIP" && STRIP=:
--test -z "$ac_objext" && ac_objext=o
-+AC_ARG_ENABLE(libtool-lock,
-+ [ --disable-libtool-lock avoid locking (might break parallel builds)])
-+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
--# Determine commands to create old-style static archives.
--old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
--old_postinstall_cmds='chmod 644 $oldlib'
--old_postuninstall_cmds=
-+# Some flags need to be propagated to the compiler or linker for good
-+# libtool support.
-+case $host in
-+*-*-irix6*)
-+ # Find out which ABI we are using.
-+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-+ if AC_TRY_EVAL(ac_compile); then
-+ case `/usr/bin/file conftest.$ac_objext` in
-+ *32-bit*)
-+ LD="${LD-ld} -32"
-+ ;;
-+ *N32*)
-+ LD="${LD-ld} -n32"
-+ ;;
-+ *64-bit*)
-+ LD="${LD-ld} -64"
-+ ;;
-+ esac
-+ fi
-+ rm -rf conftest*
-+ ;;
-
--if test -n "$RANLIB"; then
-- case $host_os in
-- openbsd*)
-- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
-- ;;
-- *)
-- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-- ;;
-- esac
-- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
--fi
-+*-*-sco3.2v5*)
-+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-+ SAVE_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -belf"
-+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-+ [AC_LANG_SAVE
-+ AC_LANG_C
-+ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-+ AC_LANG_RESTORE])
-+ 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"
-+ fi
-+ ;;
-
--_LT_CC_BASENAME([$compiler])
-+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
-+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-+ AC_CHECK_TOOL(AS, as, false)
-+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
-
--# Only perform the check for file, if the check method requires it
--case $deplibs_check_method in
--file_magic*)
-- if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-- AC_PATH_MAGIC
-- fi
-+ # recent cygwin and mingw systems supply a stub DllMain which the user
-+ # can override, but on older systems we have to supply one
-+ AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain,
-+ [AC_TRY_LINK([],
-+ [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*);
-+ DllMain (0, 0, 0);],
-+ [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])])
-+
-+ case $host/$CC in
-+ *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*)
-+ # old mingw systems require "-dll" to link a DLL, while more recent ones
-+ # require "-mdll"
-+ SAVE_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -mdll"
-+ AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch,
-+ [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])])
-+ CFLAGS="$SAVE_CFLAGS" ;;
-+ *-*-cygwin* | *-*-pw32*)
-+ # cygwin systems need to pass --dll to the linker, and not link
-+ # crt.o which will require a WinMain@16 definition.
-+ lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;;
-+ esac
- ;;
-+ ])
- esac
-
--AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
--AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
--enable_win32_dll=yes, enable_win32_dll=no)
--
--AC_ARG_ENABLE([libtool-lock],
-- [AC_HELP_STRING([--disable-libtool-lock],
-- [avoid locking (might break parallel builds)])])
--test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-+_LT_AC_LTCONFIG_HACK
-
--AC_ARG_WITH([pic],
-- [AC_HELP_STRING([--with-pic],
-- [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-- [pic_mode="$withval"],
-- [pic_mode=default])
--test -z "$pic_mode" && pic_mode=default
-+])
-
--# Use C for the default configuration in the libtool script
--tagname=
--AC_LIBTOOL_LANG_C_CONFIG
--_LT_AC_TAGCONFIG
--])# AC_LIBTOOL_SETUP
-+# AC_LIBTOOL_HEADER_ASSERT
-+# ------------------------
-+AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT],
-+[AC_CACHE_CHECK([whether $CC supports assert without backlinking],
-+ [lt_cv_func_assert_works],
-+ [case $host in
-+ *-*-solaris*)
-+ if test "$GCC" = yes && test "$with_gnu_ld" != yes; then
-+ case `$CC --version 2>/dev/null` in
-+ [[12]].*) lt_cv_func_assert_works=no ;;
-+ *) lt_cv_func_assert_works=yes ;;
-+ esac
-+ fi
-+ ;;
-+ esac])
-
-+if test "x$lt_cv_func_assert_works" = xyes; then
-+ AC_CHECK_HEADERS(assert.h)
-+fi
-+])# AC_LIBTOOL_HEADER_ASSERT
-
--# _LT_AC_SYS_COMPILER
--# -------------------
--AC_DEFUN([_LT_AC_SYS_COMPILER],
--[AC_REQUIRE([AC_PROG_CC])dnl
-+# _LT_AC_CHECK_DLFCN
-+# --------------------
-+AC_DEFUN([_LT_AC_CHECK_DLFCN],
-+[AC_CHECK_HEADERS(dlfcn.h)
-+])# _LT_AC_CHECK_DLFCN
-
--# If no C compiler was specified, use CC.
--LTCC=${LTCC-"$CC"}
-+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-+# ---------------------------------
-+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
-+[AC_REQUIRE([AC_CANONICAL_HOST])
-+AC_REQUIRE([AC_PROG_NM])
-+AC_REQUIRE([AC_OBJEXT])
-+# Check for command to grab the raw symbol name followed by C symbol from nm.
-+AC_MSG_CHECKING([command to parse $NM output])
-+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl
-
--# Allow CC to be a program name with arguments.
--compiler=$CC
--])# _LT_AC_SYS_COMPILER
-+# These are sane defaults that work on at least a few old systems.
-+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-
-+# Character class describing NM global symbol codes.
-+symcode='[[BCDEGRST]]'
-
--# _LT_CC_BASENAME(CC)
--# -------------------
--# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
--AC_DEFUN([_LT_CC_BASENAME],
--[for cc_temp in $1""; do
-- case $cc_temp in
-- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-- \-*) ;;
-- *) break;;
-- esac
--done
--cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
--])
-+# Regexp to match symbols that can be accessed directly from C.
-+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-+# Transform the above into a raw symbol and a C symbol.
-+symxfrm='\1 \2\3 \3'
-
--# _LT_COMPILER_BOILERPLATE
--# ------------------------
--# Check for compiler boilerplate output or warnings with
--# the simple compiler test code.
--AC_DEFUN([_LT_COMPILER_BOILERPLATE],
--[ac_outfile=conftest.$ac_objext
--printf "$lt_simple_compile_test_code" >conftest.$ac_ext
--eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
--_lt_compiler_boilerplate=`cat conftest.err`
--$rm conftest*
--])# _LT_COMPILER_BOILERPLATE
--
--
--# _LT_LINKER_BOILERPLATE
--# ----------------------
--# Check for linker boilerplate output or warnings with
--# the simple link test code.
--AC_DEFUN([_LT_LINKER_BOILERPLATE],
--[ac_outfile=conftest.$ac_objext
--printf "$lt_simple_link_test_code" >conftest.$ac_ext
--eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
--_lt_linker_boilerplate=`cat conftest.err`
--$rm conftest*
--])# _LT_LINKER_BOILERPLATE
--
--
--# _LT_AC_SYS_LIBPATH_AIX
--# ----------------------
--# Links a minimal program and checks the executable
--# for the system default hardcoded library path. In most cases,
--# this is /usr/lib:/lib, but when the MPI compilers are used
--# the location of the communication and MPI libs are included too.
--# If we don't find anything, use the default library path according
--# to the aix ld manual.
--AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
--[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`; fi],[])
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
--])# _LT_AC_SYS_LIBPATH_AIX
--
--
--# _LT_AC_SHELL_INIT(ARG)
--# ----------------------
--AC_DEFUN([_LT_AC_SHELL_INIT],
--[ifdef([AC_DIVERSION_NOTICE],
-- [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-- [AC_DIVERT_PUSH(NOTICE)])
--$1
--AC_DIVERT_POP
--])# _LT_AC_SHELL_INIT
-+# Transform an extracted symbol line into a proper C declaration
-+lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
-
-+# Transform an extracted symbol line into symbol name and symbol address
-+lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-
--# _LT_AC_PROG_ECHO_BACKSLASH
--# --------------------------
--# Add some code to the start of the generated configure script which
--# will find an echo command which doesn't interpret backslashes.
--AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
--[_LT_AC_SHELL_INIT([
--# Check that we are running under the correct shell.
--SHELL=${CONFIG_SHELL-/bin/sh}
-+# Define system-specific variables.
-+case $host_os in
-+aix*)
-+ symcode='[[BCDT]]'
-+ ;;
-+cygwin* | mingw* | pw32*)
-+ symcode='[[ABCDGISTW]]'
-+ ;;
-+hpux*) # Its linker distinguishes data from code symbols
-+ lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-+ lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+ ;;
-+irix* | nonstopux*)
-+ symcode='[[BCDEGRST]]'
-+ ;;
-+osf*)
-+ symcode='[[BCDEGQRST]]'
-+ ;;
-+solaris* | sysv5*)
-+ symcode='[[BDT]]'
-+ ;;
-+sysv4)
-+ symcode='[[DFNSTU]]'
-+ ;;
-+esac
-
--case X$ECHO in
--X*--fallback-echo)
-- # Remove one level of quotation (which was required for Make).
-- ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
-+# Handle CRLF in mingw tool chain
-+opt_cr=
-+case $host_os in
-+mingw*)
-+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
- ;;
- esac
-
--echo=${ECHO-echo}
--if test "X[$]1" = X--no-reexec; then
-- # Discard the --no-reexec flag, and continue.
-- shift
--elif test "X[$]1" = X--fallback-echo; then
-- # Avoid inline document here, it may be left over
-- :
--elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
-- # Yippee, $echo works!
-- :
--else
-- # Restart under the correct shell.
-- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-+# If we're using GNU nm, then use its standard symbol codes.
-+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
-+ symcode='[[ABCDGISTW]]'
- fi
-
--if test "X[$]1" = X--fallback-echo; then
-- # used as fallback echo
-- shift
-- cat <<EOF
--[$]*
--EOF
-- exit 0
--fi
-+# Try without a prefix undercore, then with it.
-+for ac_symprfx in "" "_"; do
-
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-+ # Write the raw and C identifiers.
-+lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
-
--if test -z "$ECHO"; then
--if test "X${echo_test_string+set}" != Xset; then
--# find a string as large as possible, as long as the shell can cope with it
-- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
-- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-- if (echo_test_string=`eval $cmd`) 2>/dev/null &&
-- echo_test_string=`eval $cmd` &&
-- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
-- then
-- break
-- fi
-- done
--fi
-+ # Check to see that the pipe works correctly.
-+ pipe_works=no
-+ rm -f conftest*
-+ cat > conftest.$ac_ext <<EOF
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+char nm_test_var;
-+void nm_test_func(){}
-+#ifdef __cplusplus
-+}
-+#endif
-+int main(){nm_test_var='a';nm_test_func();return(0);}
-+EOF
-
--if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-- test "X$echo_testing_string" = "X$echo_test_string"; then
-- :
--else
-- # The Solaris, AIX, and Digital Unix default echo programs unquote
-- # backslashes. This makes it impossible to quote backslashes using
-- # echo "$something" | sed 's/\\/\\\\/g'
-- #
-+ if AC_TRY_EVAL(ac_compile); then
-+ # Now try to grab the symbols.
-+ nlist=conftest.nm
-+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
-+ # Try sorting and uniquifying the output.
-+ if sort "$nlist" | uniq > "$nlist"T; then
-+ mv -f "$nlist"T "$nlist"
-+ else
-+ rm -f "$nlist"T
-+ fi
-+
-+ # Make sure that we snagged all the symbols we need.
-+ if egrep ' nm_test_var$' "$nlist" >/dev/null; then
-+ if egrep ' nm_test_func$' "$nlist" >/dev/null; then
-+ cat <<EOF > conftest.$ac_ext
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+EOF
-+ # Now generate the symbol file.
-+ eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
-+
-+ cat <<EOF >> conftest.$ac_ext
-+#if defined (__STDC__) && __STDC__
-+# define lt_ptr void *
-+#else
-+# define lt_ptr char *
-+# define const
-+#endif
-+
-+/* The mapping between symbol names and symbols. */
-+const struct {
-+ const char *name;
-+ lt_ptr address;
-+}
-+lt_preloaded_symbols[[]] =
-+{
-+EOF
-+ sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
-+ cat <<\EOF >> conftest.$ac_ext
-+ {0, (lt_ptr) 0}
-+};
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+EOF
-+ # Now try linking the two files.
-+ mv conftest.$ac_objext conftstm.$ac_objext
-+ save_LIBS="$LIBS"
-+ save_CFLAGS="$CFLAGS"
-+ LIBS="conftstm.$ac_objext"
-+ CFLAGS="$CFLAGS$no_builtin_flag"
-+ if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
-+ pipe_works=yes
-+ fi
-+ LIBS="$save_LIBS"
-+ CFLAGS="$save_CFLAGS"
-+ else
-+ echo "cannot find nm_test_func in $nlist" >&AC_FD_CC
-+ fi
-+ else
-+ echo "cannot find nm_test_var in $nlist" >&AC_FD_CC
-+ fi
-+ else
-+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC
-+ fi
-+ else
-+ echo "$progname: failed program was:" >&AC_FD_CC
-+ cat conftest.$ac_ext >&5
-+ fi
-+ rm -f conftest* conftst*
-+
-+ # Do not use the global_symbol_pipe unless it works.
-+ if test "$pipe_works" = yes; then
-+ break
-+ else
-+ lt_cv_sys_global_symbol_pipe=
-+ fi
-+done
-+])
-+global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
-+if test -z "$lt_cv_sys_global_symbol_pipe"; then
-+ global_symbol_to_cdecl=
-+ global_symbol_to_c_name_address=
-+else
-+ global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
-+ global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
-+fi
-+if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
-+then
-+ AC_MSG_RESULT(failed)
-+else
-+ AC_MSG_RESULT(ok)
-+fi
-+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-+
-+# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
-+# ---------------------------------
-+AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR],
-+[# Find the correct PATH separator. Usually this is `:', but
-+# DJGPP uses `;' like DOS.
-+if test "X${PATH_SEPARATOR+set}" != Xset; then
-+ UNAME=${UNAME-`uname 2>/dev/null`}
-+ case X$UNAME in
-+ *-DOS) lt_cv_sys_path_separator=';' ;;
-+ *) lt_cv_sys_path_separator=':' ;;
-+ esac
-+ PATH_SEPARATOR=$lt_cv_sys_path_separator
-+fi
-+])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
-+
-+# _LT_AC_PROG_ECHO_BACKSLASH
-+# --------------------------
-+# Add some code to the start of the generated configure script which
-+# will find an echo command which doesn't interpret backslashes.
-+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
-+[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-+ [AC_DIVERT_PUSH(NOTICE)])
-+_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
-+
-+# Check that we are running under the correct shell.
-+SHELL=${CONFIG_SHELL-/bin/sh}
-+
-+case X$ECHO in
-+X*--fallback-echo)
-+ # Remove one level of quotation (which was required for Make).
-+ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
-+ ;;
-+esac
-+
-+echo=${ECHO-echo}
-+if test "X[$]1" = X--no-reexec; then
-+ # Discard the --no-reexec flag, and continue.
-+ shift
-+elif test "X[$]1" = X--fallback-echo; then
-+ # Avoid inline document here, it may be left over
-+ :
-+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
-+ # Yippee, $echo works!
-+ :
-+else
-+ # Restart under the correct shell.
-+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-+fi
-+
-+if test "X[$]1" = X--fallback-echo; then
-+ # used as fallback echo
-+ shift
-+ cat <<EOF
-+$*
-+EOF
-+ exit 0
-+fi
-+
-+# The HP-UX ksh and POSIX shell print the target directory to stdout
-+# if CDPATH is set.
-+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-+
-+if test -z "$ECHO"; then
-+if test "X${echo_test_string+set}" != Xset; then
-+# find a string as large as possible, as long as the shell can cope with it
-+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
-+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-+ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
-+ echo_test_string="`eval $cmd`" &&
-+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
-+ then
-+ break
-+ fi
-+ done
-+fi
-+
-+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ :
-+else
-+ # The Solaris, AIX, and Digital Unix default echo programs unquote
-+ # backslashes. This makes it impossible to quote backslashes using
-+ # echo "$something" | sed 's/\\/\\\\/g'
-+ #
- # So, first we look for a working echo in the user's PATH.
-
-- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for dir in $PATH /usr/ucb; do
-- IFS="$lt_save_ifs"
- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-@@ -1250,7 +1313,7 @@
- break
- fi
- done
-- IFS="$lt_save_ifs"
-+ IFS="$save_ifs"
-
- if test "X$echo" = Xecho; then
- # We didn't find a better echo, so look for alternatives.
-@@ -1323,353 +1386,38 @@
- fi
-
- AC_SUBST(ECHO)
--])])# _LT_AC_PROG_ECHO_BACKSLASH
--
--
--# _LT_AC_LOCK
--# -----------
--AC_DEFUN([_LT_AC_LOCK],
--[AC_ARG_ENABLE([libtool-lock],
-- [AC_HELP_STRING([--disable-libtool-lock],
-- [avoid locking (might break parallel builds)])])
--test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
--
--# Some flags need to be propagated to the compiler or linker for good
--# libtool support.
--case $host in
--ia64-*-hpux*)
-- # Find out which ABI we are using.
-- echo 'int i;' > conftest.$ac_ext
-- if AC_TRY_EVAL(ac_compile); then
-- case `/usr/bin/file conftest.$ac_objext` in
-- *ELF-32*)
-- HPUX_IA64_MODE="32"
-- ;;
-- *ELF-64*)
-- HPUX_IA64_MODE="64"
-- ;;
-- esac
-- fi
-- rm -rf conftest*
-- ;;
--*-*-irix6*)
-- # Find out which ABI we are using.
-- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-- if AC_TRY_EVAL(ac_compile); then
-- if test "$lt_cv_prog_gnu_ld" = yes; then
-- case `/usr/bin/file conftest.$ac_objext` in
-- *32-bit*)
-- LD="${LD-ld} -melf32bsmip"
-- ;;
-- *N32*)
-- LD="${LD-ld} -melf32bmipn32"
-- ;;
-- *64-bit*)
-- LD="${LD-ld} -melf64bmip"
-- ;;
-- esac
-- else
-- case `/usr/bin/file conftest.$ac_objext` in
-- *32-bit*)
-- LD="${LD-ld} -32"
-- ;;
-- *N32*)
-- LD="${LD-ld} -n32"
-- ;;
-- *64-bit*)
-- LD="${LD-ld} -64"
-- ;;
-- esac
-- fi
-- fi
-- rm -rf conftest*
-- ;;
--
--x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
-- # Find out which ABI we are using.
-- echo 'int i;' > conftest.$ac_ext
-- if AC_TRY_EVAL(ac_compile); then
-- case `/usr/bin/file conftest.o` in
-- *32-bit*)
-- case $host in
-- x86_64-*linux*)
-- LD="${LD-ld} -m elf_i386"
-- ;;
-- ppc64-*linux*|powerpc64-*linux*)
-- LD="${LD-ld} -m elf32ppclinux"
-- ;;
-- s390x-*linux*)
-- LD="${LD-ld} -m elf_s390"
-- ;;
-- sparc64-*linux*)
-- LD="${LD-ld} -m elf32_sparc"
-- ;;
-- esac
-- ;;
-- *64-bit*)
-- case $host in
-- x86_64-*linux*)
-- LD="${LD-ld} -m elf_x86_64"
-- ;;
-- ppc*-*linux*|powerpc*-*linux*)
-- LD="${LD-ld} -m elf64ppc"
-- ;;
-- s390*-*linux*)
-- LD="${LD-ld} -m elf64_s390"
-- ;;
-- sparc*-*linux*)
-- LD="${LD-ld} -m elf64_sparc"
-- ;;
-- esac
-- ;;
-- esac
-- fi
-- rm -rf conftest*
-- ;;
--
--*-*-sco3.2v5*)
-- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-- SAVE_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS -belf"
-- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-- [AC_LANG_PUSH(C)
-- AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-- AC_LANG_POP])
-- 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"
-- fi
-- ;;
--AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
--[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
-- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-- AC_CHECK_TOOL(AS, as, false)
-- AC_CHECK_TOOL(OBJDUMP, objdump, false)
-- ;;
-- ])
--esac
--
--need_locks="$enable_libtool_lock"
--
--])# _LT_AC_LOCK
--
--
--# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
--# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
--# ----------------------------------------------------------------
--# Check whether the given compiler option works
--AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
--[AC_REQUIRE([LT_AC_PROG_SED])
--AC_CACHE_CHECK([$1], [$2],
-- [$2=no
-- ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-- lt_compiler_flag="$3"
-- # Insert the option either (1) after the last *FLAGS variable, or
-- # (2) before a word containing "conftest.", or (3) at the end.
-- # Note that $ac_compile itself does not contain backslashes and begins
-- # with a dollar sign (not a hyphen), so the echo should work correctly.
-- # The option is referenced via a variable to avoid confusing sed.
-- lt_compile=`echo "$ac_compile" | $SED \
-- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-- (eval "$lt_compile" 2>conftest.err)
-- ac_status=$?
-- cat conftest.err >&AS_MESSAGE_LOG_FD
-- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-- if (exit $ac_status) && test -s "$ac_outfile"; then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings other than the usual output.
-- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-- $SED '/^$/d' conftest.err >conftest.er2
-- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
-- $2=yes
-- fi
-- fi
-- $rm conftest*
--])
-+AC_DIVERT_POP
-+])# _LT_AC_PROG_ECHO_BACKSLASH
-
--if test x"[$]$2" = xyes; then
-- ifelse([$5], , :, [$5])
-+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-+# ------------------------------------------------------------------
-+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
-+[if test "$cross_compiling" = yes; then :
-+ [$4]
- else
-- ifelse([$6], , :, [$6])
--fi
--])# AC_LIBTOOL_COMPILER_OPTION
--
--
--# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
--# [ACTION-SUCCESS], [ACTION-FAILURE])
--# ------------------------------------------------------------
--# Check whether the given compiler option works
--AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
--[AC_CACHE_CHECK([$1], [$2],
-- [$2=no
-- save_LDFLAGS="$LDFLAGS"
-- LDFLAGS="$LDFLAGS $3"
-- printf "$lt_simple_link_test_code" > conftest.$ac_ext
-- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-- # The linker can only warn and ignore the option if not recognized
-- # So say no if there are warnings
-- if test -s conftest.err; then
-- # Append any errors to the config.log.
-- cat conftest.err 1>&AS_MESSAGE_LOG_FD
-- $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
-- $SED '/^$/d' conftest.err >conftest.er2
-- if diff conftest.exp conftest.er2 >/dev/null; then
-- $2=yes
-- fi
-- else
-- $2=yes
-- fi
-- fi
-- $rm conftest*
-- LDFLAGS="$save_LDFLAGS"
--])
-+ AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+[#line __oline__ "configure"
-+#include "confdefs.h"
-
--if test x"[$]$2" = xyes; then
-- ifelse([$4], , :, [$4])
--else
-- ifelse([$5], , :, [$5])
--fi
--])# AC_LIBTOOL_LINKER_OPTION
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-
-+#include <stdio.h>
-
--# AC_LIBTOOL_SYS_MAX_CMD_LEN
--# --------------------------
--AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
--[# find the maximum length of command line arguments
--AC_MSG_CHECKING([the maximum length of command line arguments])
--AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-- i=0
-- teststring="ABCD"
--
-- case $build_os in
-- msdosdjgpp*)
-- # On DJGPP, this test can blow up pretty badly due to problems in libc
-- # (any single argument exceeding 2000 bytes causes a buffer overrun
-- # during glob expansion). Even if it were fixed, the result of this
-- # check would be larger than it should be.
-- lt_cv_sys_max_cmd_len=12288; # 12K is about right
-- ;;
--
-- gnu*)
-- # Under GNU Hurd, this test is not required because there is
-- # no limit to the length of command line arguments.
-- # Libtool will interpret -1 as no limit whatsoever
-- lt_cv_sys_max_cmd_len=-1;
-- ;;
--
-- cygwin* | mingw*)
-- # On Win9x/ME, this test blows up -- it succeeds, but takes
-- # about 5 minutes as the teststring grows exponentially.
-- # Worse, since 9x/ME are not pre-emptively multitasking,
-- # you end up with a "frozen" computer, even though with patience
-- # the test eventually succeeds (with a max line length of 256k).
-- # Instead, let's just punt: use the minimum linelength reported by
-- # all of the supported platforms: 8192 (on NT/2K/XP).
-- lt_cv_sys_max_cmd_len=8192;
-- ;;
--
-- amigaos*)
-- # On AmigaOS with pdksh, this test takes hours, literally.
-- # So we just punt and use a minimum line length of 8192.
-- lt_cv_sys_max_cmd_len=8192;
-- ;;
--
-- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-- # This has been around since 386BSD, at least. Likely further.
-- if test -x /sbin/sysctl; then
-- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-- elif test -x /usr/sbin/sysctl; then
-- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-- else
-- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
-- fi
-- # And add a safety zone
-- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-- ;;
-- osf*)
-- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-- # nice to cause kernel panics so lets avoid the loop below.
-- # First set a reasonable default.
-- lt_cv_sys_max_cmd_len=16384
-- #
-- if test -x /sbin/sysconfig; then
-- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-- *1*) lt_cv_sys_max_cmd_len=-1 ;;
-- esac
-- fi
-- ;;
-- *)
-- # If test is not a shell built-in, we'll probably end up computing a
-- # maximum length that is only half of the actual maximum length, but
-- # we can't tell.
-- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-- while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
-- = "XX$teststring") >/dev/null 2>&1 &&
-- new_result=`expr "X$teststring" : ".*" 2>&1` &&
-- lt_cv_sys_max_cmd_len=$new_result &&
-- test $i != 17 # 1/2 MB should be enough
-- do
-- i=`expr $i + 1`
-- teststring=$teststring$teststring
-- done
-- teststring=
-- # Add a significant safety factor because C++ compilers can tack on massive
-- # amounts of additional arguments before passing them to the linker.
-- # It appears as though 1/2 is a usable value.
-- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-- ;;
-- esac
--])
--if test -n $lt_cv_sys_max_cmd_len ; then
-- AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
--else
-- AC_MSG_RESULT(none)
--fi
--])# AC_LIBTOOL_SYS_MAX_CMD_LEN
--
--
--# _LT_AC_CHECK_DLFCN
--# --------------------
--AC_DEFUN([_LT_AC_CHECK_DLFCN],
--[AC_CHECK_HEADERS(dlfcn.h)dnl
--])# _LT_AC_CHECK_DLFCN
--
--
--# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
--# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
--# ------------------------------------------------------------------
--AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
--[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
--if test "$cross_compiling" = yes; then :
-- [$4]
--else
-- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-- lt_status=$lt_dlunknown
-- cat > conftest.$ac_ext <<EOF
--[#line __oline__ "configure"
--#include "confdefs.h"
--
--#if HAVE_DLFCN_H
--#include <dlfcn.h>
--#endif
--
--#include <stdio.h>
--
--#ifdef RTLD_GLOBAL
--# define LT_DLGLOBAL RTLD_GLOBAL
--#else
--# ifdef DL_GLOBAL
--# define LT_DLGLOBAL DL_GLOBAL
--# else
--# define LT_DLGLOBAL 0
--# endif
--#endif
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-
- /* We may have to define LT_DLLAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-@@ -1714,7 +1462,7 @@
- }]
- EOF
- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-- (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
-+ (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) $1 ;;
-@@ -1729,12 +1477,10 @@
- rm -fr conftest*
- ])# _LT_AC_TRY_DLOPEN_SELF
-
--
- # AC_LIBTOOL_DLOPEN_SELF
- # -------------------
- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
--[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
--if test "x$enable_dlopen" != xyes; then
-+[if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
- enable_dlopen_self_static=unknown
-@@ -1749,39 +1495,24 @@
- lt_cv_dlopen_self=yes
- ;;
-
-- mingw* | pw32*)
-+ cygwin* | mingw* | pw32*)
- lt_cv_dlopen="LoadLibrary"
- lt_cv_dlopen_libs=
- ;;
-
-- cygwin*)
-- lt_cv_dlopen="dlopen"
-- lt_cv_dlopen_libs=
-- ;;
--
-- darwin*)
-- # if libdl is installed we need to link against it
-- AC_CHECK_LIB([dl], [dlopen],
-- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-- lt_cv_dlopen="dyld"
-- lt_cv_dlopen_libs=
-- lt_cv_dlopen_self=yes
-- ])
-- ;;
--
- *)
- AC_CHECK_FUNC([shl_load],
-- [lt_cv_dlopen="shl_load"],
-+ [lt_cv_dlopen="shl_load"],
- [AC_CHECK_LIB([dld], [shl_load],
-- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
-+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
- [AC_CHECK_FUNC([dlopen],
- [lt_cv_dlopen="dlopen"],
- [AC_CHECK_LIB([dl], [dlopen],
-- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
- [AC_CHECK_LIB([svld], [dlopen],
-- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
- [AC_CHECK_LIB([dld], [dld_link],
-- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
- ])
- ])
- ])
-@@ -1799,6 +1530,7 @@
- case $lt_cv_dlopen in
- dlopen)
- save_CPPFLAGS="$CPPFLAGS"
-+ AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
- save_LDFLAGS="$LDFLAGS"
-@@ -1842,1833 +1574,707 @@
- fi
- ])# AC_LIBTOOL_DLOPEN_SELF
-
-+AC_DEFUN([_LT_AC_LTCONFIG_HACK],
-+[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl
-+# Sed substitution that helps us do robust quoting. It backslashifies
-+# metacharacters that are still active within double-quoted strings.
-+Xsed='sed -e s/^X//'
-+sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g'
-
--# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
--# ---------------------------------
--# Check to see if options -c and -o are simultaneously supported by compiler
--AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
--[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
--AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-- [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-- [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-- $rm -r conftest 2>/dev/null
-- mkdir conftest
-- cd conftest
-- mkdir out
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
--
-- lt_compiler_flag="-o out/conftest2.$ac_objext"
-- # Insert the option either (1) after the last *FLAGS variable, or
-- # (2) before a word containing "conftest.", or (3) at the end.
-- # Note that $ac_compile itself does not contain backslashes and begins
-- # with a dollar sign (not a hyphen), so the echo should work correctly.
-- lt_compile=`echo "$ac_compile" | $SED \
-- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-- (eval "$lt_compile" 2>out/conftest.err)
-- ac_status=$?
-- cat out/conftest.err >&AS_MESSAGE_LOG_FD
-- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-- if (exit $ac_status) && test -s out/conftest2.$ac_objext
-- then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings
-- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
-- $SED '/^$/d' out/conftest.err >out/conftest.er2
-- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-- _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-- fi
-- fi
-- chmod u+w . 2>&AS_MESSAGE_LOG_FD
-- $rm conftest*
-- # SGI C++ compiler will create directory out/ii_files/ for
-- # template instantiation
-- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-- $rm out/* && rmdir out
-- cd ..
-- rmdir conftest
-- $rm conftest*
--])
--])# AC_LIBTOOL_PROG_CC_C_O
--
-+# Same as above, but do not quote variable references.
-+double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g'
-
--# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
--# -----------------------------------------
--# Check to see if we can do hard links to lock some files if needed
--AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
--[AC_REQUIRE([_LT_AC_LOCK])dnl
-+# Sed substitution to delay expansion of an escaped shell variable in a
-+# double_quote_subst'ed string.
-+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
--hard_links="nottested"
--if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
-- # do not overwrite the value of need_locks provided by the user
-- AC_MSG_CHECKING([if we can lock with hard links])
-- hard_links=yes
-- $rm conftest*
-- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- touch conftest.a
-- ln conftest.a conftest.b 2>&5 || hard_links=no
-- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- AC_MSG_RESULT([$hard_links])
-- if test "$hard_links" = no; then
-- AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
-- need_locks=warn
-- fi
--else
-- need_locks=no
--fi
--])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
-+# Constants:
-+rm="rm -f"
-
-+# Global variables:
-+default_ofile=libtool
-+can_build_shared=yes
-
--# AC_LIBTOOL_OBJDIR
--# -----------------
--AC_DEFUN([AC_LIBTOOL_OBJDIR],
--[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
--[rm -f .libs 2>/dev/null
--mkdir .libs 2>/dev/null
--if test -d .libs; then
-- lt_cv_objdir=.libs
--else
-- # MS-DOS does not allow filenames that begin with a dot.
-- lt_cv_objdir=_libs
--fi
--rmdir .libs 2>/dev/null])
--objdir=$lt_cv_objdir
--])# AC_LIBTOOL_OBJDIR
-+# All known linkers require a `.a' archive for static linking (except M$VC,
-+# which needs '.lib').
-+libext=a
-+ltmain="$ac_aux_dir/ltmain.sh"
-+ofile="$default_ofile"
-+with_gnu_ld="$lt_cv_prog_gnu_ld"
-+need_locks="$enable_libtool_lock"
-
-+old_CC="$CC"
-+old_CFLAGS="$CFLAGS"
-
--# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
--# ----------------------------------------------
--# Check hardcoding attributes.
--AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
--[AC_MSG_CHECKING([how to hardcode library paths into programs])
--_LT_AC_TAGVAR(hardcode_action, $1)=
--if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
-- test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
-- test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-+# Set sane defaults for various variables
-+test -z "$AR" && AR=ar
-+test -z "$AR_FLAGS" && AR_FLAGS=cru
-+test -z "$AS" && AS=as
-+test -z "$CC" && CC=cc
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+test -z "$LD" && LD=ld
-+test -z "$LN_S" && LN_S="ln -s"
-+test -z "$MAGIC_CMD" && MAGIC_CMD=file
-+test -z "$NM" && NM=nm
-+test -z "$OBJDUMP" && OBJDUMP=objdump
-+test -z "$RANLIB" && RANLIB=:
-+test -z "$STRIP" && STRIP=:
-+test -z "$ac_objext" && ac_objext=o
-
-- # We can hardcode non-existant directories.
-- if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
-- # If the only mechanism to avoid hardcoding is shlibpath_var, we
-- # have to relink, otherwise we might link with an installed library
-- # when we should be linking with a yet-to-be-installed one
-- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-- test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
-- # Linking always hardcodes the temporary library directory.
-- _LT_AC_TAGVAR(hardcode_action, $1)=relink
-- else
-- # We can link without hardcoding, and we can hardcode nonexisting dirs.
-- _LT_AC_TAGVAR(hardcode_action, $1)=immediate
-- fi
-+if test x"$host" != x"$build"; then
-+ ac_tool_prefix=${host_alias}-
- else
-- # We cannot hardcode anything, or else we can only hardcode existing
-- # directories.
-- _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
-+ ac_tool_prefix=
- fi
--AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
-
--if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
-- # Fast installation is not supported
-- enable_fast_install=no
--elif test "$shlibpath_overrides_runpath" = yes ||
-- test "$enable_shared" = no; then
-- # Fast installation is not necessary
-- enable_fast_install=needless
--fi
--])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
-+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
-+case $host_os in
-+linux-gnu*) ;;
-+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
-+esac
-
-+case $host_os in
-+aix3*)
-+ # AIX sometimes has problems with the GCC collect2 program. For some
-+ # reason, if we set the COLLECT_NAMES environment variable, the problems
-+ # vanish in a puff of smoke.
-+ if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+ fi
-+ ;;
-+esac
-
--# AC_LIBTOOL_SYS_LIB_STRIP
--# ------------------------
--AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
--[striplib=
--old_striplib=
--AC_MSG_CHECKING([whether stripping libraries is possible])
--if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-- AC_MSG_RESULT([yes])
--else
--# FIXME - insert some real tests, host_os isn't really good enough
-+# Determine commands to create old-style static archives.
-+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
-+old_postinstall_cmds='chmod 644 $oldlib'
-+old_postuninstall_cmds=
-+
-+if test -n "$RANLIB"; then
- case $host_os in
-- darwin*)
-- if test -n "$STRIP" ; then
-- striplib="$STRIP -x"
-- AC_MSG_RESULT([yes])
-- else
-- AC_MSG_RESULT([no])
--fi
-- ;;
-- *)
-- AC_MSG_RESULT([no])
-+ openbsd*)
-+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ *)
-+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
- ;;
- esac
-+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
- fi
--])# AC_LIBTOOL_SYS_LIB_STRIP
-
-+# Allow CC to be a program name with arguments.
-+set dummy $CC
-+compiler="[$]2"
-
--# AC_LIBTOOL_SYS_DYNAMIC_LINKER
--# -----------------------------
--# PORTME Fill in your ld.so characteristics
--AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
--[AC_MSG_CHECKING([dynamic linker characteristics])
--library_names_spec=
--libname_spec='lib$name'
--soname_spec=
--shrext_cmds=".so"
--postinstall_cmds=
--postuninstall_cmds=
--finish_cmds=
--finish_eval=
--shlibpath_var=
--shlibpath_overrides_runpath=unknown
--version_type=none
--dynamic_linker="$host_os ld.so"
--sys_lib_dlsearch_path_spec="/lib /usr/lib"
--if test "$GCC" = yes; then
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-- # if the path contains ";" then we assume it to be the separator
-- # otherwise default to the standard path separator (i.e. ":") - it is
-- # assumed that no part of a normal pathname contains ";" but that should
-- # okay in the real world where ";" in dirpaths is itself problematic.
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-- else
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-- fi
-+AC_MSG_CHECKING([for objdir])
-+rm -f .libs 2>/dev/null
-+mkdir .libs 2>/dev/null
-+if test -d .libs; then
-+ objdir=.libs
- else
-- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+ # MS-DOS does not allow filenames that begin with a dot.
-+ objdir=_libs
- fi
--need_lib_prefix=unknown
--hardcode_into_libs=no
-+rmdir .libs 2>/dev/null
-+AC_MSG_RESULT($objdir)
-
--# when you set need_version to no, make sure it does not cause -set_version
--# flags to be left without arguments
--need_version=unknown
-
--case $host_os in
--aix3*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-- shlibpath_var=LIBPATH
-+AC_ARG_WITH(pic,
-+[ --with-pic try to use only PIC/non-PIC objects [default=use both]],
-+pic_mode="$withval", pic_mode=default)
-+test -z "$pic_mode" && pic_mode=default
-
-- # AIX 3 has no versioning support, so we append a major version to the name.
-- soname_spec='${libname}${release}${shared_ext}$major'
-- ;;
-+# We assume here that the value for lt_cv_prog_cc_pic will not be cached
-+# in isolation, and that seeing it set (from the cache) indicates that
-+# the associated values are set (in the cache) correctly too.
-+AC_MSG_CHECKING([for $compiler option to produce PIC])
-+AC_CACHE_VAL(lt_cv_prog_cc_pic,
-+[ lt_cv_prog_cc_pic=
-+ lt_cv_prog_cc_shlib=
-+ lt_cv_prog_cc_wl=
-+ lt_cv_prog_cc_static=
-+ lt_cv_prog_cc_no_builtin=
-+ lt_cv_prog_cc_can_build_shared=$can_build_shared
-
--aix4* | aix5*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- hardcode_into_libs=yes
-- if test "$host_cpu" = ia64; then
-- # AIX 5 supports IA64
-- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-+ if test "$GCC" = yes; then
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-static'
-+
-+ case $host_os in
-+ aix*)
-+ # Below there is a dirty hack to force normal static linking with -ldl
-+ # The problem is because libdl dynamically linked with both libc and
-+ # libC (AIX C++ library), which obviously doesn't included in libraries
-+ # list by gcc. This cause undefined symbols with -static flags.
-+ # This hack allows C programs to be linked with "-static -ldl", but
-+ # not sure about C++ programs.
-+ lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
-+ ;;
-+ amigaos*)
-+ # FIXME: we need at least 68020 code to build shared libraries, but
-+ # adding the `-m68020' flag to GCC prevents building anything better,
-+ # like `-m68040'.
-+ lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
-+ ;;
-+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-+ # PIC is the default for these OSes.
-+ ;;
-+ darwin* | rhapsody*)
-+ # PIC is the default on this platform
-+ # Common symbols not allowed in MH_DYLIB files
-+ lt_cv_prog_cc_pic='-fno-common'
-+ ;;
-+ cygwin* | mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_cv_prog_cc_pic='-DDLL_EXPORT'
-+ ;;
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ lt_cv_prog_cc_pic=-Kconform_pic
-+ fi
-+ ;;
-+ *)
-+ lt_cv_prog_cc_pic='-fPIC'
-+ ;;
-+ esac
- else
-- # With GCC up to 2.95.x, collect2 would create an import file
-- # for dependence libraries. The import file would start with
-- # the line `#! .'. This would cause the generated library to
-- # depend on `.', always an invalid library. This was fixed in
-- # development snapshots of GCC prior to 3.0.
-+ # PORTME Check for PIC flags for the system compiler.
- case $host_os in
-- aix4 | aix4.[[01]] | aix4.[[01]].*)
-- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-- echo ' yes '
-- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-- :
-+ aix3* | aix4* | aix5*)
-+ lt_cv_prog_cc_wl='-Wl,'
-+ # All AIX code is PIC.
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ lt_cv_prog_cc_static='-Bstatic'
- else
-- can_build_shared=no
-+ lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
- fi
- ;;
-- esac
-- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-- # soname into executable. Probably we can add versioning support to
-- # collect2, so additional links can be useful in future.
-- if test "$aix_use_runtimelinking" = yes; then
-- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-- # instead of lib<name>.a to let people know that these are not
-- # typical AIX shared libraries.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- else
-- # We preserve .a as extension for shared libraries through AIX4.2
-- # and later when we are not doing run time linking.
-- library_names_spec='${libname}${release}.a $libname.a'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- fi
-- shlibpath_var=LIBPATH
-- fi
-- ;;
-
--amigaos*)
-- library_names_spec='$libname.ixlibrary $libname.a'
-- # Create ${libname}_ixlibrary.a entries in /sys/libs.
-- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-- ;;
-+ hpux9* | hpux10* | hpux11*)
-+ # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
-+ lt_cv_prog_cc_pic='+Z'
-+ ;;
-
--beos*)
-- library_names_spec='${libname}${shared_ext}'
-- dynamic_linker="$host_os ld.so"
-- shlibpath_var=LIBRARY_PATH
-- ;;
-+ irix5* | irix6* | nonstopux*)
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-non_shared'
-+ # PIC (with -KPIC) is the default.
-+ ;;
-
--bsdi[[45]]*)
-- version_type=linux
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-- # the default ld.so.conf also contains /usr/contrib/lib and
-- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-- # libtool to hard-code these into programs
-- ;;
-+ cygwin* | mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_cv_prog_cc_pic='-DDLL_EXPORT'
-+ ;;
-
--cygwin* | mingw* | pw32*)
-- version_type=windows
-- shrext_cmds=".dll"
-- need_version=no
-- need_lib_prefix=no
-+ newsos6)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ ;;
-
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32*)
-- library_names_spec='$libname.dll.a'
-- # DLL is installed to $(libdir)/../bin by postinstall_cmds
-- postinstall_cmds='base_file=`basename \${file}`~
-- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-- dldir=$destdir/`dirname \$dlpath`~
-- test -d \$dldir || mkdir -p \$dldir~
-- $install_prog $dir/$dlname \$dldir/$dlname~
-- chmod a+x \$dldir/$dlname'
-- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-- dlpath=$dir/\$dldll~
-- $rm \$dlpath'
-- shlibpath_overrides_runpath=yes
-+ osf3* | osf4* | osf5*)
-+ # All OSF/1 code is PIC.
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-non_shared'
-+ ;;
-
-- case $host_os in
-- cygwin*)
-- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-+ sco3.2v5*)
-+ lt_cv_prog_cc_pic='-Kpic'
-+ lt_cv_prog_cc_static='-dn'
-+ lt_cv_prog_cc_shlib='-belf'
- ;;
-- mingw*)
-- # MinGW DLLs use traditional 'lib' prefix
-- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-- if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
-- # It is most probably a Windows format PATH printed by
-- # mingw gcc, but we are running on Cygwin. Gcc prints its search
-- # path with ; separators, and with drive letters. We can handle the
-- # drive letters (cygwin fileutils understands them), so leave them,
-- # especially as we might pass files found there to a mingw objdump,
-- # which wouldn't understand a cygwinified path. Ahh.
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-- else
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+
-+ solaris*)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Wl,'
-+ ;;
-+
-+ sunos4*)
-+ lt_cv_prog_cc_pic='-PIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Qoption ld '
-+ ;;
-+
-+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Wl,'
-+ ;;
-+
-+ uts4*)
-+ lt_cv_prog_cc_pic='-pic'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ lt_cv_prog_cc_pic='-Kconform_pic'
-+ lt_cv_prog_cc_static='-Bstatic'
- fi
- ;;
-- pw32*)
-- # pw32 DLLs use 'pw' prefix rather than 'lib'
-- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-+
-+ *)
-+ lt_cv_prog_cc_can_build_shared=no
- ;;
- esac
-- ;;
-+ fi
-+])
-+if test -z "$lt_cv_prog_cc_pic"; then
-+ AC_MSG_RESULT([none])
-+else
-+ AC_MSG_RESULT([$lt_cv_prog_cc_pic])
-
-- *)
-- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-- ;;
-- esac
-- dynamic_linker='Win32 ld.exe'
-- # FIXME: first we should search . and the directory the executable is in
-- shlibpath_var=PATH
-- ;;
-+ # Check to make sure the pic_flag actually works.
-+ AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works])
-+ AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
-+ AC_TRY_COMPILE([], [], [dnl
-+ case $host_os in
-+ hpux9* | hpux10* | hpux11*)
-+ # On HP-UX, both CC and GCC only warn that PIC is supported... then
-+ # they create non-PIC objects. So, if there were any warnings, we
-+ # assume that PIC is not supported.
-+ if test -s conftest.err; then
-+ lt_cv_prog_cc_pic_works=no
-+ else
-+ lt_cv_prog_cc_pic_works=yes
-+ fi
-+ ;;
-+ *)
-+ lt_cv_prog_cc_pic_works=yes
-+ ;;
-+ esac
-+ ], [dnl
-+ lt_cv_prog_cc_pic_works=no
-+ ])
-+ CFLAGS="$save_CFLAGS"
-+ ])
-
--darwin* | rhapsody*)
-- dynamic_linker="$host_os dyld"
-- version_type=darwin
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-- soname_spec='${libname}${release}${major}$shared_ext'
-- shlibpath_overrides_runpath=yes
-- shlibpath_var=DYLD_LIBRARY_PATH
-- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-- if test "$GCC" = yes; then
-- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-+ if test "X$lt_cv_prog_cc_pic_works" = Xno; then
-+ lt_cv_prog_cc_pic=
-+ lt_cv_prog_cc_can_build_shared=no
- else
-- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-+ lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
- fi
-- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-- ;;
-
--dgux*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
-+ AC_MSG_RESULT([$lt_cv_prog_cc_pic_works])
-+fi
-
--freebsd1*)
-- dynamic_linker=no
-- ;;
-+# Check for any special shared library compilation flags.
-+if test -n "$lt_cv_prog_cc_shlib"; then
-+ AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries])
-+ if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then :
-+ else
-+ AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure])
-+ lt_cv_prog_cc_can_build_shared=no
-+ fi
-+fi
-
--kfreebsd*-gnu)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-- dynamic_linker='GNU ld.so'
-- ;;
-+AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works])
-+AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl
-+ lt_cv_prog_cc_static_works=no
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
-+ AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes])
-+ LDFLAGS="$save_LDFLAGS"
-+])
-
--freebsd* | dragonfly*)
-- # DragonFly does not have aout. When/if they implement a new
-- # versioning mechanism, adjust this.
-- if test -x /usr/bin/objformat; then
-- objformat=`/usr/bin/objformat`
-+# Belt *and* braces to stop my trousers falling down:
-+test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
-+AC_MSG_RESULT([$lt_cv_prog_cc_static_works])
-+
-+pic_flag="$lt_cv_prog_cc_pic"
-+special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
-+wl="$lt_cv_prog_cc_wl"
-+link_static_flag="$lt_cv_prog_cc_static"
-+no_builtin_flag="$lt_cv_prog_cc_no_builtin"
-+can_build_shared="$lt_cv_prog_cc_can_build_shared"
-+
-+
-+# Check to see if options -o and -c are simultaneously supported by compiler
-+AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext])
-+AC_CACHE_VAL([lt_cv_compiler_c_o], [
-+$rm -r conftest 2>/dev/null
-+mkdir conftest
-+cd conftest
-+echo "int some_variable = 0;" > conftest.$ac_ext
-+mkdir out
-+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
-+# that will create temporary files in the current directory regardless of
-+# the output directory. Thus, making CWD read-only will cause this test
-+# to fail, enabling locking or at least warning the user not to do parallel
-+# builds.
-+chmod -w .
-+save_CFLAGS="$CFLAGS"
-+CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
-+compiler_c_o=no
-+if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s out/conftest.err; then
-+ lt_cv_compiler_c_o=no
- else
-- case $host_os in
-- freebsd[[123]]*) objformat=aout ;;
-- *) objformat=elf ;;
-- esac
-+ lt_cv_compiler_c_o=yes
- fi
-- version_type=freebsd-$objformat
-- case $version_type in
-- freebsd-elf*)
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-- need_version=no
-- need_lib_prefix=no
-- ;;
-- freebsd-*)
-- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-- need_version=yes
-- ;;
-- esac
-- shlibpath_var=LD_LIBRARY_PATH
-+else
-+ # Append any errors to the config.log.
-+ cat out/conftest.err 1>&AC_FD_CC
-+ lt_cv_compiler_c_o=no
-+fi
-+CFLAGS="$save_CFLAGS"
-+chmod u+w .
-+$rm conftest* out/*
-+rmdir out
-+cd ..
-+rmdir conftest
-+$rm -r conftest 2>/dev/null
-+])
-+compiler_c_o=$lt_cv_compiler_c_o
-+AC_MSG_RESULT([$compiler_c_o])
-+
-+if test x"$compiler_c_o" = x"yes"; then
-+ # Check to see if we can write to a .lo
-+ AC_MSG_CHECKING([if $compiler supports -c -o file.lo])
-+ AC_CACHE_VAL([lt_cv_compiler_o_lo], [
-+ lt_cv_compiler_o_lo=no
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -c -o conftest.lo"
-+ save_objext="$ac_objext"
-+ ac_objext=lo
-+ AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s conftest.err; then
-+ lt_cv_compiler_o_lo=no
-+ else
-+ lt_cv_compiler_o_lo=yes
-+ fi
-+ ])
-+ ac_objext="$save_objext"
-+ CFLAGS="$save_CFLAGS"
-+ ])
-+ compiler_o_lo=$lt_cv_compiler_o_lo
-+ AC_MSG_RESULT([$compiler_o_lo])
-+else
-+ compiler_o_lo=no
-+fi
-+
-+# Check to see if we can do hard links to lock some files if needed
-+hard_links="nottested"
-+if test "$compiler_c_o" = no && test "$need_locks" != no; then
-+ # do not overwrite the value of need_locks provided by the user
-+ AC_MSG_CHECKING([if we can lock with hard links])
-+ hard_links=yes
-+ $rm conftest*
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ touch conftest.a
-+ ln conftest.a conftest.b 2>&5 || hard_links=no
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ AC_MSG_RESULT([$hard_links])
-+ if test "$hard_links" = no; then
-+ AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe])
-+ need_locks=warn
-+ fi
-+else
-+ need_locks=no
-+fi
-+
-+if test "$GCC" = yes; then
-+ # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
-+ AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions])
-+ echo "int some_variable = 0;" > conftest.$ac_ext
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
-+ compiler_rtti_exceptions=no
-+ AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s conftest.err; then
-+ compiler_rtti_exceptions=no
-+ else
-+ compiler_rtti_exceptions=yes
-+ fi
-+ ])
-+ CFLAGS="$save_CFLAGS"
-+ AC_MSG_RESULT([$compiler_rtti_exceptions])
-+
-+ if test "$compiler_rtti_exceptions" = "yes"; then
-+ no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
-+ else
-+ no_builtin_flag=' -fno-builtin'
-+ fi
-+fi
-+
-+# See if the linker supports building shared libraries.
-+AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries])
-+
-+allow_undefined_flag=
-+no_undefined_flag=
-+need_lib_prefix=unknown
-+need_version=unknown
-+# when you set need_version to no, make sure it does not cause -set_version
-+# flags to be left without arguments
-+archive_cmds=
-+archive_expsym_cmds=
-+old_archive_from_new_cmds=
-+old_archive_from_expsyms_cmds=
-+export_dynamic_flag_spec=
-+whole_archive_flag_spec=
-+thread_safe_flag_spec=
-+hardcode_into_libs=no
-+hardcode_libdir_flag_spec=
-+hardcode_libdir_separator=
-+hardcode_direct=no
-+hardcode_minus_L=no
-+hardcode_shlibpath_var=unsupported
-+runpath_var=
-+link_all_deplibs=unknown
-+always_export_symbols=no
-+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+# include_expsyms should be a list of space-separated symbols to be *always*
-+# included in the symbol list
-+include_expsyms=
-+# exclude_expsyms can be an egrep regular expression of symbols to exclude
-+# it will be wrapped by ` (' and `)$', so one must not match beginning or
-+# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-+# as well as any symbol that contains `d'.
-+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-+# platforms (ab)use it in PIC code, but their linkers get confused if
-+# the symbol is explicitly referenced. Since portable code cannot
-+# rely on this symbol name, it's probably fine to never include it in
-+# preloaded symbol tables.
-+extract_expsyms_cmds=
-+
-+case $host_os in
-+cygwin* | mingw* | pw32*)
-+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ if test "$GCC" != yes; then
-+ with_gnu_ld=no
-+ fi
-+ ;;
-+openbsd*)
-+ with_gnu_ld=no
-+ ;;
-+esac
-+
-+ld_shlibs=yes
-+if test "$with_gnu_ld" = yes; then
-+ # If archive_cmds runs LD, not CC, wlarc should be empty
-+ wlarc='${wl}'
-+
-+ # See if GNU ld supports shared libraries.
- case $host_os in
-- freebsd2*)
-- shlibpath_overrides_runpath=yes
-+ aix3* | aix4* | aix5*)
-+ # On AIX, the GNU linker is very broken
-+ # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
-+ ld_shlibs=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-+*** to be unable to reliably create shared libraries on AIX.
-+*** Therefore, libtool is disabling shared libraries support. If you
-+*** really care for shared libraries, you may want to modify your PATH
-+*** so that a non-GNU linker is found, and then restart.
-+
-+EOF
- ;;
-- freebsd3.[[01]]* | freebsdelf3.[[01]]*)
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-+
-+ amigaos*)
-+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+
-+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-+ # that the semantics of dynamic libraries on AmigaOS, at least up
-+ # to version 4, is to share data among multiple programs linked
-+ # with the same dynamic library. Since this doesn't match the
-+ # behavior of shared libraries on other platforms, we can use
-+ # them.
-+ ld_shlibs=no
- ;;
-- *) # from 3.2 on
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-+
-+ beos*)
-+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ allow_undefined_flag=unsupported
-+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-+ # support --undefined. This deserves some investigation. FIXME
-+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
- ;;
-- esac
-- ;;
-
--gnu*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- hardcode_into_libs=yes
-- ;;
-+ cygwin* | mingw* | pw32*)
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+
-+ extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
-+ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
-+ test -f $output_objdir/impgen.exe || (cd $output_objdir && \
-+ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
-+ else $CC -o impgen impgen.c ; fi)~
-+ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
-+
-+ old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
-+
-+ # cygwin and mingw dlls have different entry points and sets of symbols
-+ # to exclude.
-+ # FIXME: what about values for MSVC?
-+ dll_entry=__cygwin_dll_entry@12
-+ dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
-+ case $host_os in
-+ mingw*)
-+ # mingw values
-+ dll_entry=_DllMainCRTStartup@12
-+ dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
-+ ;;
-+ esac
-
--hpux9* | hpux10* | hpux11*)
-- # Give a soname corresponding to the major version so that dld.sl refuses to
-- # link against other versions.
-- version_type=sunos
-- need_lib_prefix=no
-- need_version=no
-- case $host_cpu in
-- ia64*)
-- shrext_cmds='.so'
-- hardcode_into_libs=yes
-- dynamic_linker="$host_os dld.so"
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- if test "X$HPUX_IA64_MODE" = X32; then
-- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-+ # mingw and cygwin differ, and it's simplest to just exclude the union
-+ # of the two symbol sets.
-+ dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
-+
-+ # recent cygwin and mingw systems supply a stub DllMain which the user
-+ # can override, but on older systems we have to supply one (in ltdll.c)
-+ if test "x$lt_cv_need_dllmain" = "xyes"; then
-+ ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
-+ ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
-+ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
- else
-- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-+ ltdll_obj=
-+ ltdll_cmds=
- fi
-- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-+
-+ # Extract the symbol export list from an `--export-all' def file,
-+ # then regenerate the def file from the symbol export list, so that
-+ # the compiled dll only exports the symbol export list.
-+ # Be careful not to strip the DATA tag left be newer dlltools.
-+ export_symbols_cmds="$ltdll_cmds"'
-+ $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
-+ sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
-+
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is.
-+ # If DATA tags from a recent dlltool are present, honour them!
-+ archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname-def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname-def;
-+ _lt_hint=1;
-+ cat $export_symbols | while read symbol; do
-+ set dummy \$symbol;
-+ case \[$]# in
-+ 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
-+ 4) echo " \[$]2 \[$]3 \[$]4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;;
-+ *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;;
-+ esac;
-+ _lt_hint=`expr 1 + \$_lt_hint`;
-+ done;
-+ fi~
-+ '"$ltdll_cmds"'
-+ $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
-+ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
-+ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
- ;;
-- hppa*64*)
-- shrext_cmds='.sl'
-- hardcode_into_libs=yes
-- dynamic_linker="$host_os dld.sl"
-- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-- ;;
-- *)
-- shrext_cmds='.sl'
-- dynamic_linker="$host_os dld.sl"
-- shlibpath_var=SHLIB_PATH
-- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-+
-+ netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-+ wlarc=
-+ else
-+ archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ fi
- ;;
-- esac
-- # HP-UX runs *really* slowly unless shared libraries are mode 555.
-- postinstall_cmds='chmod 555 $lib'
-- ;;
--
--irix5* | irix6* | nonstopux*)
-- case $host_os in
-- nonstopux*) version_type=nonstopux ;;
-- *)
-- if test "$lt_cv_prog_gnu_ld" = yes; then
-- version_type=linux
-- else
-- version_type=irix
-- fi ;;
-- esac
-- need_lib_prefix=no
-- need_version=no
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-- case $host_os in
-- irix5* | nonstopux*)
-- libsuff= shlibsuff=
-- ;;
-- *)
-- case $LD in # libtool.m4 will add one of these switches to LD
-- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-- libsuff= shlibsuff= libmagic=32-bit;;
-- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-- libsuff=32 shlibsuff=N32 libmagic=N32;;
-- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-- libsuff=64 shlibsuff=64 libmagic=64-bit;;
-- *) libsuff= shlibsuff= libmagic=never-match;;
-- esac
-- ;;
-- esac
-- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-- shlibpath_overrides_runpath=no
-- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-- hardcode_into_libs=yes
-- ;;
--
--# No shared lib support for Linux oldld, aout, or coff.
--linux*oldld* | linux*aout* | linux*coff*)
-- dynamic_linker=no
-- ;;
--
--# This must be Linux ELF.
--linux*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- # This implies no fast_install, which is unacceptable.
-- # Some rework will be needed to allow for fast_install
-- # before this can be enabled.
-- hardcode_into_libs=yes
--
-- # Append ld.so.conf contents to the search path
-- if test -f /etc/ld.so.conf; then
-- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-- fi
--
-- # We used to test for /lib/ld.so.1 and disable shared libraries on
-- # powerpc, because MkLinux only supported shared libraries with the
-- # GNU dynamic linker. Since this was broken with cross compilers,
-- # most powerpc-linux boxes support dynamic linking these days and
-- # people can always --disable-shared, the test was removed, and we
-- # assume the GNU/Linux dynamic linker is in use.
-- dynamic_linker='GNU/Linux ld.so'
-- ;;
--
--knetbsd*-gnu)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-- dynamic_linker='GNU ld.so'
-- ;;
--
--netbsd*)
-- version_type=sunos
-- need_lib_prefix=no
-- need_version=no
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-- dynamic_linker='NetBSD (a.out) ld.so'
-- else
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- dynamic_linker='NetBSD ld.elf_so'
-- fi
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- ;;
--
--newsos6)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- ;;
--
--nto-qnx*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- ;;
--
--openbsd*)
-- version_type=sunos
-- need_lib_prefix=no
-- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-- case $host_os in
-- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-- *) need_version=no ;;
-- esac
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- case $host_os in
-- openbsd2.[[89]] | openbsd2.[[89]].*)
-- shlibpath_overrides_runpath=no
-- ;;
-- *)
-- shlibpath_overrides_runpath=yes
-- ;;
-- esac
-- else
-- shlibpath_overrides_runpath=yes
-- fi
-- ;;
--
--os2*)
-- libname_spec='$name'
-- shrext_cmds=".dll"
-- need_lib_prefix=no
-- library_names_spec='$libname${shared_ext} $libname.a'
-- dynamic_linker='OS/2 ld.exe'
-- shlibpath_var=LIBPATH
-- ;;
--
--osf3* | osf4* | osf5*)
-- version_type=osf
-- need_lib_prefix=no
-- need_version=no
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-- ;;
--
--sco3.2v5*)
-- version_type=osf
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
--solaris*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- # ldd complains unless libraries are executable
-- postinstall_cmds='chmod +x $lib'
-- ;;
--
--sunos4*)
-- version_type=sunos
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- if test "$with_gnu_ld" = yes; then
-- need_lib_prefix=no
-- fi
-- need_version=yes
-- ;;
--
--sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- case $host_vendor in
-- sni)
-- shlibpath_overrides_runpath=no
-- need_lib_prefix=no
-- export_dynamic_flag_spec='${wl}-Blargedynsym'
-- runpath_var=LD_RUN_PATH
-- ;;
-- siemens)
-- need_lib_prefix=no
-- ;;
-- motorola)
-- need_lib_prefix=no
-- need_version=no
-- shlibpath_overrides_runpath=no
-- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-- ;;
-- esac
-- ;;
--
--sysv4*MP*)
-- if test -d /usr/nec ;then
-- version_type=linux
-- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-- soname_spec='$libname${shared_ext}.$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- fi
-- ;;
--
--uts4*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
--*)
-- dynamic_linker=no
-- ;;
--esac
--AC_MSG_RESULT([$dynamic_linker])
--test "$dynamic_linker" = no && can_build_shared=no
--])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
--
--
--# _LT_AC_TAGCONFIG
--# ----------------
--AC_DEFUN([_LT_AC_TAGCONFIG],
--[AC_ARG_WITH([tags],
-- [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
-- [include additional configurations @<:@automatic@:>@])],
-- [tagnames="$withval"])
--
--if test -f "$ltmain" && test -n "$tagnames"; then
-- if test ! -f "${ofile}"; then
-- AC_MSG_WARN([output file `$ofile' does not exist])
-- fi
--
-- if test -z "$LTCC"; then
-- eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
-- if test -z "$LTCC"; then
-- AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
-- else
-- AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
-- fi
-- fi
--
-- # Extract list of available tagged configurations in $ofile.
-- # Note that this assumes the entire list is on one line.
-- available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
--
-- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-- for tagname in $tagnames; do
-- IFS="$lt_save_ifs"
-- # Check whether tagname contains only valid characters
-- case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
-- "") ;;
-- *) AC_MSG_ERROR([invalid tag name: $tagname])
-- ;;
-- esac
--
-- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
-- then
-- AC_MSG_ERROR([tag name \"$tagname\" already exists])
-- fi
--
-- # Update the list of available tags.
-- if test -n "$tagname"; then
-- echo appending configuration tag \"$tagname\" to $ofile
--
-- case $tagname in
-- CXX)
-- if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-- (test "X$CXX" != "Xg++"))) ; then
-- AC_LIBTOOL_LANG_CXX_CONFIG
-- else
-- tagname=""
-- fi
-- ;;
--
-- F77)
-- if test -n "$F77" && test "X$F77" != "Xno"; then
-- AC_LIBTOOL_LANG_F77_CONFIG
-- else
-- tagname=""
-- fi
-- ;;
--
-- GCJ)
-- if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
-- AC_LIBTOOL_LANG_GCJ_CONFIG
-- else
-- tagname=""
-- fi
-- ;;
--
-- RC)
-- AC_LIBTOOL_LANG_RC_CONFIG
-- ;;
--
-- *)
-- AC_MSG_ERROR([Unsupported tag name: $tagname])
-- ;;
-- esac
--
-- # Append the new tag name to the list of available tags.
-- if test -n "$tagname" ; then
-- available_tags="$available_tags $tagname"
-- fi
-- fi
-- done
-- IFS="$lt_save_ifs"
--
-- # Now substitute the updated list of available tags.
-- if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
-- mv "${ofile}T" "$ofile"
-- chmod +x "$ofile"
-- else
-- rm -f "${ofile}T"
-- AC_MSG_ERROR([unable to update list of available tagged configurations.])
-- fi
--fi
--])# _LT_AC_TAGCONFIG
--
--
--# AC_LIBTOOL_DLOPEN
--# -----------------
--# enable checks for dlopen support
--AC_DEFUN([AC_LIBTOOL_DLOPEN],
-- [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
--])# AC_LIBTOOL_DLOPEN
--
--
--# AC_LIBTOOL_WIN32_DLL
--# --------------------
--# declare package support for building win32 DLLs
--AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
--[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
--])# AC_LIBTOOL_WIN32_DLL
--
--
--# AC_ENABLE_SHARED([DEFAULT])
--# ---------------------------
--# implement the --enable-shared flag
--# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
--AC_DEFUN([AC_ENABLE_SHARED],
--[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
--AC_ARG_ENABLE([shared],
-- [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
-- [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
-- [p=${PACKAGE-default}
-- case $enableval in
-- yes) enable_shared=yes ;;
-- no) enable_shared=no ;;
-- *)
-- enable_shared=no
-- # Look at the argument we got. We use all the common list separators.
-- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-- for pkg in $enableval; do
-- IFS="$lt_save_ifs"
-- if test "X$pkg" = "X$p"; then
-- enable_shared=yes
-- fi
-- done
-- IFS="$lt_save_ifs"
-- ;;
-- esac],
-- [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
--])# AC_ENABLE_SHARED
--
--
--# AC_DISABLE_SHARED
--# -----------------
--#- set the default shared flag to --disable-shared
--AC_DEFUN([AC_DISABLE_SHARED],
--[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
--AC_ENABLE_SHARED(no)
--])# AC_DISABLE_SHARED
--
--
--# AC_ENABLE_STATIC([DEFAULT])
--# ---------------------------
--# implement the --enable-static flag
--# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
--AC_DEFUN([AC_ENABLE_STATIC],
--[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
--AC_ARG_ENABLE([static],
-- [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
-- [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
-- [p=${PACKAGE-default}
-- case $enableval in
-- yes) enable_static=yes ;;
-- no) enable_static=no ;;
-- *)
-- enable_static=no
-- # Look at the argument we got. We use all the common list separators.
-- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-- for pkg in $enableval; do
-- IFS="$lt_save_ifs"
-- if test "X$pkg" = "X$p"; then
-- enable_static=yes
-- fi
-- done
-- IFS="$lt_save_ifs"
-- ;;
-- esac],
-- [enable_static=]AC_ENABLE_STATIC_DEFAULT)
--])# AC_ENABLE_STATIC
--
--
--# AC_DISABLE_STATIC
--# -----------------
--# set the default static flag to --disable-static
--AC_DEFUN([AC_DISABLE_STATIC],
--[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
--AC_ENABLE_STATIC(no)
--])# AC_DISABLE_STATIC
--
--
--# AC_ENABLE_FAST_INSTALL([DEFAULT])
--# ---------------------------------
--# implement the --enable-fast-install flag
--# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
--AC_DEFUN([AC_ENABLE_FAST_INSTALL],
--[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
--AC_ARG_ENABLE([fast-install],
-- [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
-- [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
-- [p=${PACKAGE-default}
-- case $enableval in
-- yes) enable_fast_install=yes ;;
-- no) enable_fast_install=no ;;
-- *)
-- enable_fast_install=no
-- # Look at the argument we got. We use all the common list separators.
-- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-- for pkg in $enableval; do
-- IFS="$lt_save_ifs"
-- if test "X$pkg" = "X$p"; then
-- enable_fast_install=yes
-- fi
-- done
-- IFS="$lt_save_ifs"
-- ;;
-- esac],
-- [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
--])# AC_ENABLE_FAST_INSTALL
--
--
--# AC_DISABLE_FAST_INSTALL
--# -----------------------
--# set the default to --disable-fast-install
--AC_DEFUN([AC_DISABLE_FAST_INSTALL],
--[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
--AC_ENABLE_FAST_INSTALL(no)
--])# AC_DISABLE_FAST_INSTALL
--
--
--# AC_LIBTOOL_PICMODE([MODE])
--# --------------------------
--# implement the --with-pic flag
--# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
--AC_DEFUN([AC_LIBTOOL_PICMODE],
--[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
--pic_mode=ifelse($#,1,$1,default)
--])# AC_LIBTOOL_PICMODE
--
--
--# AC_PROG_EGREP
--# -------------
--# This is predefined starting with Autoconf 2.54, so this conditional
--# definition can be removed once we require Autoconf 2.54 or later.
--m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
--[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
-- [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
-- then ac_cv_prog_egrep='grep -E'
-- else ac_cv_prog_egrep='egrep'
-- fi])
-- EGREP=$ac_cv_prog_egrep
-- AC_SUBST([EGREP])
--])])
--
--
--# AC_PATH_TOOL_PREFIX
--# -------------------
--# find a file program which can recognise shared library
--AC_DEFUN([AC_PATH_TOOL_PREFIX],
--[AC_REQUIRE([AC_PROG_EGREP])dnl
--AC_MSG_CHECKING([for $1])
--AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
--[case $MAGIC_CMD in
--[[\\/*] | ?:[\\/]*])
-- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-- ;;
--*)
-- lt_save_MAGIC_CMD="$MAGIC_CMD"
-- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
--dnl $ac_dummy forces splitting on constant user-supplied paths.
--dnl POSIX.2 word splitting is done only on the output of word expansions,
--dnl not every word. This closes a longstanding sh security hole.
-- ac_dummy="ifelse([$2], , $PATH, [$2])"
-- for ac_dir in $ac_dummy; do
-- IFS="$lt_save_ifs"
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$1; then
-- lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-- if test -n "$file_magic_test_file"; then
-- case $deplibs_check_method in
-- "file_magic "*)
-- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-- $EGREP "$file_magic_regex" > /dev/null; then
-- :
-- else
-- cat <<EOF 1>&2
--
--*** Warning: the command libtool uses to detect shared libraries,
--*** $file_magic_cmd, produces output that libtool cannot recognize.
--*** The result is that libtool may fail to recognize shared libraries
--*** as such. This will affect the creation of libtool libraries that
--*** depend on shared libraries, but programs linked with such libtool
--*** libraries will work regardless of this problem. Nevertheless, you
--*** may want to report the problem to your system manager and/or to
--*** bug-libtool@gnu.org
--
--EOF
-- fi ;;
-- esac
-- fi
-- break
-- fi
-- done
-- IFS="$lt_save_ifs"
-- MAGIC_CMD="$lt_save_MAGIC_CMD"
-- ;;
--esac])
--MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
--if test -n "$MAGIC_CMD"; then
-- AC_MSG_RESULT($MAGIC_CMD)
--else
-- AC_MSG_RESULT(no)
--fi
--])# AC_PATH_TOOL_PREFIX
--
--
--# AC_PATH_MAGIC
--# -------------
--# find a file program which can recognise a shared library
--AC_DEFUN([AC_PATH_MAGIC],
--[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
--if test -z "$lt_cv_path_MAGIC_CMD"; then
-- if test -n "$ac_tool_prefix"; then
-- AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
-- else
-- MAGIC_CMD=:
-- fi
--fi
--])# AC_PATH_MAGIC
--
--
--# AC_PROG_LD
--# ----------
--# find the pathname to the GNU or non-GNU linker
--AC_DEFUN([AC_PROG_LD],
--[AC_ARG_WITH([gnu-ld],
-- [AC_HELP_STRING([--with-gnu-ld],
-- [assume the C compiler uses GNU ld @<:@default=no@:>@])],
-- [test "$withval" = no || with_gnu_ld=yes],
-- [with_gnu_ld=no])
--AC_REQUIRE([LT_AC_PROG_SED])dnl
--AC_REQUIRE([AC_PROG_CC])dnl
--AC_REQUIRE([AC_CANONICAL_HOST])dnl
--AC_REQUIRE([AC_CANONICAL_BUILD])dnl
--ac_prog=ld
--if test "$GCC" = yes; then
-- # Check if gcc -print-prog-name=ld gives a path.
-- AC_MSG_CHECKING([for ld used by $CC])
-- case $host in
-- *-*-mingw*)
-- # gcc leaves a trailing carriage return which upsets mingw
-- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-- *)
-- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-- esac
-- case $ac_prog in
-- # Accept absolute paths.
-- [[\\/]]* | ?:[[\\/]]*)
-- re_direlt='/[[^/]][[^/]]*/\.\./'
-- # Canonicalize the pathname of ld
-- ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
-- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-- ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
-- done
-- test -z "$LD" && LD="$ac_prog"
-- ;;
-- "")
-- # If it fails, then pretend we aren't using GCC.
-- ac_prog=ld
-- ;;
-- *)
-- # If it is relative, then search for the first ld in PATH.
-- with_gnu_ld=unknown
-- ;;
-- esac
--elif test "$with_gnu_ld" = yes; then
-- AC_MSG_CHECKING([for GNU ld])
--else
-- AC_MSG_CHECKING([for non-GNU ld])
--fi
--AC_CACHE_VAL(lt_cv_path_LD,
--[if test -z "$LD"; then
-- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-- for ac_dir in $PATH; do
-- IFS="$lt_save_ifs"
-- test -z "$ac_dir" && ac_dir=.
-- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-- lt_cv_path_LD="$ac_dir/$ac_prog"
-- # Check to see if the program is GNU ld. I'd rather use --version,
-- # but apparently some variants of GNU ld only accept -v.
-- # Break only if it was the GNU/non-GNU ld that we prefer.
-- case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-- *GNU* | *'with BFD'*)
-- test "$with_gnu_ld" != no && break
-- ;;
-- *)
-- test "$with_gnu_ld" != yes && break
-- ;;
-- esac
-- fi
-- done
-- IFS="$lt_save_ifs"
--else
-- lt_cv_path_LD="$LD" # Let the user override the test with a path.
--fi])
--LD="$lt_cv_path_LD"
--if test -n "$LD"; then
-- AC_MSG_RESULT($LD)
--else
-- AC_MSG_RESULT(no)
--fi
--test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
--AC_PROG_LD_GNU
--])# AC_PROG_LD
--
--
--# AC_PROG_LD_GNU
--# --------------
--AC_DEFUN([AC_PROG_LD_GNU],
--[AC_REQUIRE([AC_PROG_EGREP])dnl
--AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
--[# I'd rather use --version here, but apparently some GNU lds only accept -v.
--case `$LD -v 2>&1 </dev/null` in
--*GNU* | *'with BFD'*)
-- lt_cv_prog_gnu_ld=yes
-- ;;
--*)
-- lt_cv_prog_gnu_ld=no
-- ;;
--esac])
--with_gnu_ld=$lt_cv_prog_gnu_ld
--])# AC_PROG_LD_GNU
--
--
--# AC_PROG_LD_RELOAD_FLAG
--# ----------------------
--# find reload flag for linker
--# -- PORTME Some linkers may need a different reload flag.
--AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
--[AC_CACHE_CHECK([for $LD option to reload object files],
-- lt_cv_ld_reload_flag,
-- [lt_cv_ld_reload_flag='-r'])
--reload_flag=$lt_cv_ld_reload_flag
--case $reload_flag in
--"" | " "*) ;;
--*) reload_flag=" $reload_flag" ;;
--esac
--reload_cmds='$LD$reload_flag -o $output$reload_objs'
--case $host_os in
-- darwin*)
-- if test "$GCC" = yes; then
-- reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
-- else
-- reload_cmds='$LD$reload_flag -o $output$reload_objs'
-- fi
-- ;;
--esac
--])# AC_PROG_LD_RELOAD_FLAG
--
--
--# AC_DEPLIBS_CHECK_METHOD
--# -----------------------
--# how to check for library dependencies
--# -- PORTME fill in with the dynamic library characteristics
--AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
--[AC_CACHE_CHECK([how to recognise dependent libraries],
--lt_cv_deplibs_check_method,
--[lt_cv_file_magic_cmd='$MAGIC_CMD'
--lt_cv_file_magic_test_file=
--lt_cv_deplibs_check_method='unknown'
--# Need to set the preceding variable on all platforms that support
--# interlibrary dependencies.
--# 'none' -- dependencies not supported.
--# `unknown' -- same as none, but documents that we really don't know.
--# 'pass_all' -- all dependencies passed with no checks.
--# 'test_compile' -- check by making test program.
--# 'file_magic [[regex]]' -- check by looking for files in library path
--# which responds to the $file_magic_cmd with a given extended regex.
--# If you have `file' or equivalent on your system and you're not sure
--# whether `pass_all' will *always* work, you probably want this one.
--
--case $host_os in
--aix4* | aix5*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
--
--beos*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
--
--bsdi[[45]]*)
-- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-- lt_cv_file_magic_cmd='/usr/bin/file -L'
-- lt_cv_file_magic_test_file=/shlib/libc.so
-- ;;
--
--cygwin*)
-- # func_win32_libid is a shell function defined in ltmain.sh
-- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-- lt_cv_file_magic_cmd='func_win32_libid'
-- ;;
--
--mingw* | pw32*)
-- # Base MSYS/MinGW do not provide the 'file' command needed by
-- # func_win32_libid shell function, so use a weaker test based on 'objdump'.
-- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-- lt_cv_file_magic_cmd='$OBJDUMP -f'
-- ;;
--
--darwin* | rhapsody*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
--
--freebsd* | kfreebsd*-gnu | dragonfly*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-- case $host_cpu in
-- i*86 )
-- # Not sure whether the presence of OpenBSD here was a mistake.
-- # Let's accept both of them until this is cleared up.
-- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-- lt_cv_file_magic_cmd=/usr/bin/file
-- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-- ;;
-- esac
-- else
-- lt_cv_deplibs_check_method=pass_all
-- fi
-- ;;
--
--gnu*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
--
--hpux10.20* | hpux11*)
-- lt_cv_file_magic_cmd=/usr/bin/file
-- case $host_cpu in
-- ia64*)
-- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-- ;;
-- hppa*64*)
-- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
-- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-- ;;
-- *)
-- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
-- lt_cv_file_magic_test_file=/usr/lib/libc.sl
-- ;;
-- esac
-- ;;
--
--irix5* | irix6* | nonstopux*)
-- case $LD in
-- *-32|*"-32 ") libmagic=32-bit;;
-- *-n32|*"-n32 ") libmagic=N32;;
-- *-64|*"-64 ") libmagic=64-bit;;
-- *) libmagic=never-match;;
-- esac
-- lt_cv_deplibs_check_method=pass_all
-- ;;
--
--# This must be Linux ELF.
--linux*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
--
--netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-- else
-- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-- fi
-- ;;
--
--newos6*)
-- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-- lt_cv_file_magic_cmd=/usr/bin/file
-- lt_cv_file_magic_test_file=/usr/lib/libnls.so
-- ;;
--
--nto-qnx*)
-- lt_cv_deplibs_check_method=unknown
-- ;;
--
--openbsd*)
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
-- else
-- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-- fi
-- ;;
--
--osf3* | osf4* | osf5*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
--
--sco3.2v5*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
--
--solaris*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
--
--sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-- case $host_vendor in
-- motorola)
-- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-- ;;
-- ncr)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
-- sequent)
-- lt_cv_file_magic_cmd='/bin/file'
-- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-- ;;
-- sni)
-- lt_cv_file_magic_cmd='/bin/file'
-- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-- lt_cv_file_magic_test_file=/lib/libc.so
-- ;;
-- siemens)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
-- esac
-- ;;
--
--sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
--esac
--])
--file_magic_cmd=$lt_cv_file_magic_cmd
--deplibs_check_method=$lt_cv_deplibs_check_method
--test -z "$deplibs_check_method" && deplibs_check_method=unknown
--])# AC_DEPLIBS_CHECK_METHOD
--
--
--# AC_PROG_NM
--# ----------
--# find the pathname to a BSD-compatible name lister
--AC_DEFUN([AC_PROG_NM],
--[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
--[if test -n "$NM"; then
-- # Let the user override the test.
-- lt_cv_path_NM="$NM"
--else
-- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
-- IFS="$lt_save_ifs"
-- test -z "$ac_dir" && ac_dir=.
-- tmp_nm="$ac_dir/${ac_tool_prefix}nm"
-- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-- # Check to see if the nm accepts a BSD-compat flag.
-- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-- # nm: unknown option "B" ignored
-- # Tru64's nm complains that /dev/null is an invalid object file
-- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-- */dev/null* | *'Invalid file or object type'*)
-- lt_cv_path_NM="$tmp_nm -B"
-- break
-- ;;
-- *)
-- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-- */dev/null*)
-- lt_cv_path_NM="$tmp_nm -p"
-- break
-- ;;
-- *)
-- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-- continue # so that we can try to find one that supports BSD flags
-- ;;
-- esac
-- esac
-- fi
-- done
-- IFS="$lt_save_ifs"
-- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
--fi])
--NM="$lt_cv_path_NM"
--])# AC_PROG_NM
--
--
--# AC_CHECK_LIBM
--# -------------
--# check for math library
--AC_DEFUN([AC_CHECK_LIBM],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--LIBM=
--case $host in
--*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
-- # These system don't have libm, or don't need it
-- ;;
--*-ncr-sysv4.3*)
-- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-- AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-- ;;
--*)
-- AC_CHECK_LIB(m, cos, LIBM="-lm")
-- ;;
--esac
--])# AC_CHECK_LIBM
--
--
--# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
--# -----------------------------------
--# sets LIBLTDL to the link flags for the libltdl convenience library and
--# LTDLINCL to the include flags for the libltdl header and adds
--# --enable-ltdl-convenience to the configure arguments. Note that
--# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
--# it is assumed to be `libltdl'. LIBLTDL will be prefixed with
--# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
--# (note the single quotes!). If your package is not flat and you're not
--# using automake, define top_builddir and top_srcdir appropriately in
--# the Makefiles.
--AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
--[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-- case $enable_ltdl_convenience in
-- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
-- "") enable_ltdl_convenience=yes
-- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
-- esac
-- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
-- LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-- # For backwards non-gettext consistent compatibility...
-- INCLTDL="$LTDLINCL"
--])# AC_LIBLTDL_CONVENIENCE
--
--
--# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
--# -----------------------------------
--# sets LIBLTDL to the link flags for the libltdl installable library and
--# LTDLINCL to the include flags for the libltdl header and adds
--# --enable-ltdl-install to the configure arguments. Note that
--# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
--# and an installed libltdl is not found, it is assumed to be `libltdl'.
--# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
--# '${top_srcdir}/' (note the single quotes!). If your package is not
--# flat and you're not using automake, define top_builddir and top_srcdir
--# appropriately in the Makefiles.
--# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
--AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
--[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-- AC_CHECK_LIB(ltdl, lt_dlinit,
-- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
-- [if test x"$enable_ltdl_install" = xno; then
-- AC_MSG_WARN([libltdl not installed, but installation disabled])
-- else
-- enable_ltdl_install=yes
-- fi
-- ])
-- if test x"$enable_ltdl_install" = x"yes"; then
-- ac_configure_args="$ac_configure_args --enable-ltdl-install"
-- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
-- LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-- else
-- ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
-- LIBLTDL="-lltdl"
-- LTDLINCL=
-- fi
-- # For backwards non-gettext consistent compatibility...
-- INCLTDL="$LTDLINCL"
--])# AC_LIBLTDL_INSTALLABLE
--
--
--# AC_LIBTOOL_CXX
--# --------------
--# enable support for C++ libraries
--AC_DEFUN([AC_LIBTOOL_CXX],
--[AC_REQUIRE([_LT_AC_LANG_CXX])
--])# AC_LIBTOOL_CXX
--
--
--# _LT_AC_LANG_CXX
--# ---------------
--AC_DEFUN([_LT_AC_LANG_CXX],
--[AC_REQUIRE([AC_PROG_CXX])
--AC_REQUIRE([_LT_AC_PROG_CXXCPP])
--_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
--])# _LT_AC_LANG_CXX
--
--# _LT_AC_PROG_CXXCPP
--# ---------------
--AC_DEFUN([_LT_AC_PROG_CXXCPP],
--[
--AC_REQUIRE([AC_PROG_CXX])
--if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-- (test "X$CXX" != "Xg++"))) ; then
-- AC_PROG_CXXCPP
--fi
--])# _LT_AC_PROG_CXXCPP
--
--# AC_LIBTOOL_F77
--# --------------
--# enable support for Fortran 77 libraries
--AC_DEFUN([AC_LIBTOOL_F77],
--[AC_REQUIRE([_LT_AC_LANG_F77])
--])# AC_LIBTOOL_F77
--
--
--# _LT_AC_LANG_F77
--# ---------------
--AC_DEFUN([_LT_AC_LANG_F77],
--[AC_REQUIRE([AC_PROG_F77])
--_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
--])# _LT_AC_LANG_F77
--
--
--# AC_LIBTOOL_GCJ
--# --------------
--# enable support for GCJ libraries
--AC_DEFUN([AC_LIBTOOL_GCJ],
--[AC_REQUIRE([_LT_AC_LANG_GCJ])
--])# AC_LIBTOOL_GCJ
--
--
--# _LT_AC_LANG_GCJ
--# ---------------
--AC_DEFUN([_LT_AC_LANG_GCJ],
--[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
-- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
-- [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
-- [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
-- [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
-- [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
--_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
--])# _LT_AC_LANG_GCJ
--
--
--# AC_LIBTOOL_RC
--# --------------
--# enable support for Windows resource files
--AC_DEFUN([AC_LIBTOOL_RC],
--[AC_REQUIRE([LT_AC_PROG_RC])
--_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
--])# AC_LIBTOOL_RC
-
-+ solaris* | sysv5*)
-+ if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
-+ ld_shlibs=no
-+ cat <<EOF 1>&2
-
--# AC_LIBTOOL_LANG_C_CONFIG
--# ------------------------
--# Ensure that the configuration vars for the C compiler are
--# suitably defined. Those variables are subsequently used by
--# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
--AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
--AC_DEFUN([_LT_AC_LANG_C_CONFIG],
--[lt_save_CC="$CC"
--AC_LANG_PUSH(C)
--
--# Source file extension for C test sources.
--ac_ext=c
--
--# Object file extension for compiled C test sources.
--objext=o
--_LT_AC_TAGVAR(objext, $1)=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code="int some_variable = 0;\n"
--
--# Code to be used in simple link tests
--lt_simple_link_test_code='int main(){return(0);}\n'
--
--_LT_AC_SYS_COMPILER
--
--# save warnings/boilerplate of simple test code
--_LT_COMPILER_BOILERPLATE
--_LT_LINKER_BOILERPLATE
-+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-+*** create shared libraries on Solaris systems. Therefore, libtool
-+*** is disabling shared libraries support. We urge you to upgrade GNU
-+*** binutils to release 2.9.1 or newer. Another option is to modify
-+*** your PATH or compiler configuration so that the native linker is
-+*** used, and then restart.
-
--#
--# Check for any special shared library compilation flags.
--#
--_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
--if test "$GCC" = no; then
-- case $host_os in
-- sco3.2v5*)
-- _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
-+EOF
-+ elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
- ;;
-- esac
--fi
--if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
-- AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
-- if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then :
-- else
-- AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
-- _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
-- fi
--fi
--
--
--#
--# Check to make sure the static flag actually works.
--#
--AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
-- _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
-- $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
-- [],
-- [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
--
--
--AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
--AC_LIBTOOL_PROG_COMPILER_PIC($1)
--AC_LIBTOOL_PROG_CC_C_O($1)
--AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
--AC_LIBTOOL_PROG_LD_SHLIBS($1)
--AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
--AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
--AC_LIBTOOL_SYS_LIB_STRIP
--AC_LIBTOOL_DLOPEN_SELF($1)
--
--# Report which librarie types wil actually be built
--AC_MSG_CHECKING([if libtool supports shared libraries])
--AC_MSG_RESULT([$can_build_shared])
--
--AC_MSG_CHECKING([whether to build shared libraries])
--test "$can_build_shared" = "no" && enable_shared=no
--
--# On AIX, shared libraries and static libraries use the same namespace, and
--# are all built from PIC.
--case $host_os in
--aix3*)
-- test "$enable_shared" = yes && enable_static=no
-- if test -n "$RANLIB"; then
-- archive_cmds="$archive_cmds~\$RANLIB \$lib"
-- postinstall_cmds='$RANLIB $lib'
-- fi
-- ;;
-
--aix4* | aix5*)
-- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-- test "$enable_shared" = yes && enable_static=no
-- fi
-+ sunos4*)
-+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ wlarc=
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
- ;;
--esac
--AC_MSG_RESULT([$enable_shared])
--
--AC_MSG_CHECKING([whether to build static libraries])
--# Make sure either enable_shared or enable_static is yes.
--test "$enable_shared" = yes || enable_static=yes
--AC_MSG_RESULT([$enable_static])
-
--AC_LIBTOOL_CONFIG($1)
--
--AC_LANG_POP
--CC="$lt_save_CC"
--])# AC_LIBTOOL_LANG_C_CONFIG
--
--
--# AC_LIBTOOL_LANG_CXX_CONFIG
--# --------------------------
--# Ensure that the configuration vars for the C compiler are
--# suitably defined. Those variables are subsequently used by
--# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
--AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
--AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
--[AC_LANG_PUSH(C++)
--AC_REQUIRE([AC_PROG_CXX])
--AC_REQUIRE([_LT_AC_PROG_CXXCPP])
--
--_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
--_LT_AC_TAGVAR(allow_undefined_flag, $1)=
--_LT_AC_TAGVAR(always_export_symbols, $1)=no
--_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
--_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
--_LT_AC_TAGVAR(hardcode_direct, $1)=no
--_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
--_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
--_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
--_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
--_LT_AC_TAGVAR(hardcode_automatic, $1)=no
--_LT_AC_TAGVAR(module_cmds, $1)=
--_LT_AC_TAGVAR(module_expsym_cmds, $1)=
--_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
--_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
--_LT_AC_TAGVAR(no_undefined_flag, $1)=
--_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
--_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
--
--# Dependencies to place before and after the object being linked:
--_LT_AC_TAGVAR(predep_objects, $1)=
--_LT_AC_TAGVAR(postdep_objects, $1)=
--_LT_AC_TAGVAR(predeps, $1)=
--_LT_AC_TAGVAR(postdeps, $1)=
--_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
--
--# Source file extension for C++ test sources.
--ac_ext=cpp
--
--# Object file extension for compiled C++ test sources.
--objext=o
--_LT_AC_TAGVAR(objext, $1)=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code="int some_variable = 0;\n"
--
--# Code to be used in simple link tests
--lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
--
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
--_LT_AC_SYS_COMPILER
--
--# save warnings/boilerplate of simple test code
--_LT_COMPILER_BOILERPLATE
--_LT_LINKER_BOILERPLATE
--
--# Allow CC to be a program name with arguments.
--lt_save_CC=$CC
--lt_save_LD=$LD
--lt_save_GCC=$GCC
--GCC=$GXX
--lt_save_with_gnu_ld=$with_gnu_ld
--lt_save_path_LD=$lt_cv_path_LD
--if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
--else
-- unset lt_cv_prog_gnu_ld
--fi
--if test -n "${lt_cv_path_LDCXX+set}"; then
-- lt_cv_path_LD=$lt_cv_path_LDCXX
--else
-- unset lt_cv_path_LD
--fi
--test -z "${LDCXX+set}" || LD=$LDCXX
--CC=${CXX-"c++"}
--compiler=$CC
--_LT_AC_TAGVAR(compiler, $1)=$CC
--_LT_CC_BASENAME([$compiler])
--
--# We don't want -fno-exception wen compiling C++ code, so set the
--# no_builtin_flag separately
--if test "$GXX" = yes; then
-- _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
--else
-- _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
--fi
--
--if test "$GXX" = yes; then
-- # Set up default GNU C++ configuration
--
-- AC_PROG_LD
--
-- # Check if GNU C++ uses GNU ld as the underlying linker, since the
-- # archiving commands below assume that GNU ld is being used.
-- if test "$with_gnu_ld" = yes; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--
-- # If archive_cmds runs LD, not CC, wlarc should be empty
-- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-- # investigate it a little bit more. (MM)
-- wlarc='${wl}'
--
-- # ancient GNU ld didn't support --whole-archive et. al.
-- if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
-- grep 'no-whole-archive' > /dev/null; then
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ *)
-+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-+ ld_shlibs=no
- fi
-- else
-- with_gnu_ld=no
-- wlarc=
-+ ;;
-+ esac
-
-- # A generic and very simple default shared library creation
-- # command for GNU C++ for the case where it uses the native
-- # linker, instead of GNU ld. If possible, this setting should
-- # overridden to take advantage of the native linker features on
-- # the platform it is being used on.
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-+ if test "$ld_shlibs" = yes; then
-+ runpath_var=LD_RUN_PATH
-+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
-+ export_dynamic_flag_spec='${wl}--export-dynamic'
-+ case $host_os in
-+ cygwin* | mingw* | pw32*)
-+ # dlltool doesn't understand --whole-archive et. al.
-+ whole_archive_flag_spec=
-+ ;;
-+ *)
-+ # ancient GNU ld didn't support --whole-archive et. al.
-+ if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
-+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ else
-+ whole_archive_flag_spec=
-+ fi
-+ ;;
-+ esac
- fi
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
--
- else
-- GXX=no
-- with_gnu_ld=no
-- wlarc=
--fi
--
--# PORTME: fill in a description of your system's C++ link characteristics
--AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
--_LT_AC_TAGVAR(ld_shlibs, $1)=yes
--case $host_os in
-+ # PORTME fill in a description of your system's linker (not GNU ld)
-+ case $host_os in
- aix3*)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-+ # Note: this linker hardcodes the directories in LIBPATH if there
-+ # are no directories specified by -L.
-+ hardcode_minus_L=yes
-+ if test "$GCC" = yes && test -z "$link_static_flag"; then
-+ # Neither direct hardcoding nor static linking is supported with a
-+ # broken collect2.
-+ hardcode_direct=unsupported
-+ fi
- ;;
-+
- aix4* | aix5*)
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
-@@ -3688,7 +2294,7 @@
- *-brtl*)
- aix_use_runtimelinking=yes
- break
-- ;;
-+ ;;
- esac
- done
- esac
-@@ -3703,42 +2309,34 @@
- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-- _LT_AC_TAGVAR(archive_cmds, $1)=''
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
-- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
--
-- if test "$GXX" = yes; then
-+ hardcode_direct=yes
-+ archive_cmds=''
-+ hardcode_libdir_separator=':'
-+ if test "$GCC" = yes; then
- case $host_os in aix4.[[012]]|aix4.[[012]].*)
-- # We only want to do this on AIX 4.2 and lower, the check
-- # below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" && \
-- strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
- then
- # We have reworked collect2
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ hardcode_direct=yes
- else
- # We have old collect2
-- _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
-+ hardcode_direct=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-+ hardcode_minus_L=yes
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_libdir_separator=
- fi
- esac
-+
- shared_flag='-shared'
-- if test "$aix_use_runtimelinking" = yes; then
-- shared_flag="$shared_flag "'${wl}-G'
-- fi
- else
- # not using gcc
- if test "$host_cpu" = ia64; then
-- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-- # chokes on -Wl,-G. The following line is correct:
-- shared_flag='-G'
-+ shared_flag='${wl}-G'
- else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
-@@ -3748,935 +2346,845 @@
- fi
- fi
-
-- # It seems that -bexpall does not export symbols beginning with
-- # underscore (_), so it is better to generate a list of symbols to export.
-- _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-+ # It seems that -bexpall can do strange things, so it is better to
-+ # generate a list of symbols to export.
-+ always_export_symbols=yes
- if test "$aix_use_runtimelinking" = yes; then
- # Warning - without using the other runtime loading flags (-brtl),
- # -berok will link without error, but may produce a broken library.
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
-- # Determine the default libpath from the value encoded in an empty executable.
-- _LT_AC_SYS_LIBPATH_AIX
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
--
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-- else
-+ allow_undefined_flag='-berok'
-+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
-+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+ else
- if test "$host_cpu" = ia64; then
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-+ allow_undefined_flag="-z nodefs"
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
- else
-- # Determine the default libpath from the value encoded in an empty executable.
-- _LT_AC_SYS_LIBPATH_AIX
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-+ hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
- # Warning - without using the other run time loading flags,
- # -berok will link without error, but may produce a broken library.
-- _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-- # -bexpall does not export symbols beginning with underscore (_)
-- _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-- # Exported symbols can be pulled into shared objects from archives
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
-- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-- # This is similar to how AIX traditionally builds its shared libraries.
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-+ allow_undefined_flag='${wl}-berok'
-+ # This is a bit strange, but is similar to how AIX traditionally builds
-+ # it's shared libraries.
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $output_objdir/$libname$release.a $output_objdir/$soname'
- fi
- fi
- ;;
-- chorus*)
-- case $cc_basename in
-- *)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-+
-+ amigaos*)
-+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ # see comment about different semantics on the GNU ld section
-+ ld_shlibs=no
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_from_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
-+ fix_srcfile_path='`cygpath -w "$srcfile"`'
-+ ;;
-+
-+ darwin* | rhapsody*)
-+ case "$host_os" in
-+ rhapsody* | darwin1.[[012]])
-+ allow_undefined_flag='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ allow_undefined_flag='-flat_namespace -undefined suppress'
-+ ;;
- esac
-+ # FIXME: Relying on posixy $() will cause problems for
-+ # cross-compilation, but unfortunately the echo tests do not
-+ # yet detect zsh echo's removal of \ escapes. Also zsh mangles
-+ # `"' quotes if we put them in here... so don't!
-+ archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)'
-+ # We need to add '_' to the symbols in $export_symbols first
-+ #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ whole_archive_flag_spec='-all_load $convenience'
-+ ;;
-+
-+ freebsd1*)
-+ ld_shlibs=no
-+ ;;
-+
-+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-+ # support. Future versions do this automatically, but an explicit c++rt0.o
-+ # does not break anything, and helps significantly (at the cost of a little
-+ # extra space).
-+ freebsd2.2*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
- ;;
-
-+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-+ freebsd2*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-
-- cygwin* | mingw* | pw32*)
-- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-- # as there is no search path for DLLs.
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-- _LT_AC_TAGVAR(always_export_symbols, $1)=no
-- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--
-- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-- # If the export-symbols file already is a .def file (1st line
-- # is EXPORTS), use it as is; otherwise, prepend...
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-- cp $export_symbols $output_objdir/$soname.def;
-- else
-- echo EXPORTS > $output_objdir/$soname.def;
-- cat $export_symbols >> $output_objdir/$soname.def;
-- fi~
-- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-+ freebsd*)
-+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ hpux9* | hpux10* | hpux11*)
-+ case $host_os in
-+ hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
-+ *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
-+ esac
-+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes # Not in the search PATH, but as the default
-+ # location of the library.
-+ export_dynamic_flag_spec='${wl}-E'
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- else
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='-rpath $libdir'
- fi
-- ;;
-- darwin* | rhapsody*)
-- case $host_os in
-- rhapsody* | darwin1.[[012]])
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
-- ;;
-- *) # Darwin 1.3 on
-- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-- else
-- case ${MACOSX_DEPLOYMENT_TARGET} in
-- 10.[[012]])
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-- ;;
-- 10.*)
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
-- ;;
-- esac
-- fi
-- ;;
-- esac
-- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-- _LT_AC_TAGVAR(hardcode_direct, $1)=no
-- _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
-- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
--
-- if test "$GXX" = yes ; then
-- lt_int_apple_cc_single_mod=no
-- output_verbose_link_cmd='echo'
-- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
-- lt_int_apple_cc_single_mod=yes
-- fi
-- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-- else
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-- fi
-- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- else
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- fi
-- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- else
-- case $cc_basename in
-- xlc*)
-- output_verbose_link_cmd='echo'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
-- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- ;;
-- *)
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- esac
-- fi
-- ;;
-+ hardcode_libdir_separator=:
-+ link_all_deplibs=yes
-+ ;;
-
-- dgux*)
-- case $cc_basename in
-- ec++*)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- ghcx*)
-- # Green Hills C++ Compiler
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- *)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- esac
-+ netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-+ else
-+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-+ fi
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
- ;;
-- freebsd[[12]]*)
-- # C++ shared libraries reported to be fairly broken before switch to ELF
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- freebsd-elf*)
-- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-- ;;
-- freebsd* | kfreebsd*-gnu | dragonfly*)
-- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-- # conventions
-- _LT_AC_TAGVAR(ld_shlibs, $1)=yes
-- ;;
-- gnu*)
-- ;;
-- hpux9*)
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-- # but as the default
-- # location of the library.
--
-- case $cc_basename in
-- CC*)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- aCC*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- #
-- # There doesn't appear to be a way to prevent this compiler from
-- # explicitly linking system object files so we need to strip them
-- # from the output so that they don't get included in the library
-- # dependencies.
-- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-- ;;
-- *)
-- if test "$GXX" = yes; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-- else
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- fi
-- ;;
-- esac
-+
-+ newsos6)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_shlibpath_var=no
- ;;
-- hpux10*|hpux11*)
-- if test $with_gnu_ld = no; then
-- case $host_cpu in
-- hppa*64*)
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-- ;;
-- ia64*)
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+
-+ openbsd*)
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ export_dynamic_flag_spec='${wl}-E'
-+ else
-+ case "$host_os" in
-+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
- ;;
- *)
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- ;;
- esac
- fi
-- case $host_cpu in
-- hppa*64*)
-- _LT_AC_TAGVAR(hardcode_direct, $1)=no
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- ;;
-- ia64*)
-- _LT_AC_TAGVAR(hardcode_direct, $1)=no
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-- # but as the default
-- # location of the library.
-- ;;
-- *)
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-- # but as the default
-- # location of the library.
-- ;;
-- esac
-+ ;;
-+
-+ os2*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ allow_undefined_flag=unsupported
-+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-+ ;;
-+
-+ osf3*)
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ allow_undefined_flag=' -expect_unresolved \*'
-+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ fi
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ ;;
-+
-+ osf4* | osf5*) # as osf3* with the addition of -msym flag
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ else
-+ allow_undefined_flag=' -expect_unresolved \*'
-+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
-+
-+ #Both c and cxx compiler support -rpath directly
-+ hardcode_libdir_flag_spec='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator=:
-+ ;;
-+
-+ sco3.2v5*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ export_dynamic_flag_spec='${wl}-Bexport'
-+ ;;
-
-- case $cc_basename in
-- CC*)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- aCC*)
-- case $host_cpu in
-- hppa*64*|ia64*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
-- ;;
-- *)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-- ;;
-- esac
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- #
-- # There doesn't appear to be a way to prevent this compiler from
-- # explicitly linking system object files so we need to strip them
-- # from the output so that they don't get included in the library
-- # dependencies.
-- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-- ;;
-- *)
-- if test "$GXX" = yes; then
-- if test $with_gnu_ld = no; then
-- case $host_cpu in
-- ia64*|hppa*64*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
-- ;;
-- *)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-- ;;
-- esac
-- fi
-- else
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- fi
-+ solaris*)
-+ # gcc --version < 3.0 without binutils cannot create self contained
-+ # shared libraries reliably, requiring libgcc.a to resolve some of
-+ # the object symbols generated in some cases. Libraries that use
-+ # assert need libgcc.a to resolve __eprintf, for example. Linking
-+ # a copy of libgcc.a into every shared library to guarantee resolving
-+ # such symbols causes other problems: According to Tim Van Holder
-+ # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
-+ # (to the application) exception stack for one thing.
-+ no_undefined_flag=' -z defs'
-+ if test "$GCC" = yes; then
-+ case `$CC --version 2>/dev/null` in
-+ [[12]].*)
-+ cat <<EOF 1>&2
-+
-+*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
-+*** create self contained shared libraries on Solaris systems, without
-+*** introducing a dependency on libgcc.a. Therefore, libtool is disabling
-+*** -no-undefined support, which will at least allow you to build shared
-+*** libraries. However, you may find that when you link such libraries
-+*** into an application without using GCC, you have to manually add
-+*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to
-+*** upgrade to a newer version of GCC. Another option is to rebuild your
-+*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
-+
-+EOF
-+ no_undefined_flag=
- ;;
-+ esac
-+ fi
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_shlibpath_var=no
-+ case $host_os in
-+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
-+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
- esac
-+ link_all_deplibs=yes
- ;;
-- irix5* | irix6*)
-- case $cc_basename in
-- CC*)
-- # SGI C++
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
--
-- # Archives containing C++ object files must be created using
-- # "CC -ar", where "CC" is the IRIX C++ compiler. This is
-- # necessary to make sure instantiated templates are included
-- # in the archive.
-- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-- ;;
-- *)
-- if test "$GXX" = yes; then
-- if test "$with_gnu_ld" = no; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- else
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
-- fi
-- fi
-- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-- ;;
-- esac
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+
-+ sunos4*)
-+ if test "x$host_vendor" = xsequent; then
-+ # Use $CC to link under sequent, because it throws in some extra .o
-+ # files that make .init and .fini sections work.
-+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-+ fi
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ hardcode_shlibpath_var=no
- ;;
-- linux*)
-- case $cc_basename in
-- KCC*)
-- # Kuck and Associates, Inc. (KAI) C++ Compiler
--
-- # KCC will only create a shared library if the output file
-- # ends with ".so" (or ".sl" for HP-UX), so rename the library
-- # to its proper name (with version) after linking.
-- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- #
-- # There doesn't appear to be a way to prevent this compiler from
-- # explicitly linking system object files so we need to strip them
-- # from the output so that they don't get included in the library
-- # dependencies.
-- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
--
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--
-- # Archives containing C++ object files must be created using
-- # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-- ;;
-- icpc*)
-- # Intel C++
-- with_gnu_ld=yes
-- # version 8.0 and above of icpc choke on multiply defined symbols
-- # if we add $predep_objects and $postdep_objects, however 7.1 and
-- # earlier do not add the objects themselves.
-- case `$CC -V 2>&1` in
-- *"Version 7."*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- ;;
-- *) # Version 8.0 or newer
-- tmp_idyn=
-- case $host_cpu in
-- ia64*) tmp_idyn=' -i_dynamic';;
-- esac
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- ;;
-- esac
-- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-- ;;
-- pgCC*)
-- # Portland Group C++ compiler
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
--
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-+
-+ sysv4)
-+ case $host_vendor in
-+ sni)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes # is this really true???
-+ ;;
-+ siemens)
-+ ## LD is ld it makes a PLAMLIB
-+ ## CC just makes a GrossModule.
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ reload_cmds='$CC -r -o $output$reload_objs'
-+ hardcode_direct=no
-+ ;;
-+ motorola)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
- ;;
-- cxx*)
-- # Compaq C++
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
--
-- runpath_var=LD_RUN_PATH
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- #
-- # There doesn't appear to be a way to prevent this compiler from
-- # explicitly linking system object files so we need to strip them
-- # from the output so that they don't get included in the library
-- # dependencies.
-- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-- ;;
- esac
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var=no
- ;;
-- lynxos*)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- m88k*)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- mvs*)
-- case $cc_basename in
-- cxx*)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- *)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- esac
-+
-+ sysv4.3*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ export_dynamic_flag_spec='-Bexport'
-+ ;;
-+
-+ sysv5*)
-+ no_undefined_flag=' -z text'
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec=
-+ hardcode_shlibpath_var=no
-+ runpath_var='LD_RUN_PATH'
-+ ;;
-+
-+ uts4*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_shlibpath_var=no
- ;;
-- netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-- wlarc=
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+
-+ dgux*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ ld_shlibs=yes
- fi
-- # Workaround some broken pre-1.5 toolchains
-- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
- ;;
-- openbsd2*)
-- # C++ shared libraries are fairly broken
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+
-+ sysv4.2uw2*)
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_minus_L=no
-+ hardcode_shlibpath_var=no
-+ hardcode_runpath_var=yes
-+ runpath_var=LD_RUN_PATH
- ;;
-- openbsd*)
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+
-+ sysv5uw7* | unixware7*)
-+ no_undefined_flag='${wl}-z ${wl}text'
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- fi
-- output_verbose_link_cmd='echo'
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var=no
- ;;
-- osf3*)
-- case $cc_basename in
-- KCC*)
-- # Kuck and Associates, Inc. (KAI) C++ Compiler
--
-- # KCC will only create a shared library if the output file
-- # ends with ".so" (or ".sl" for HP-UX), so rename the library
-- # to its proper name (with version) after linking.
-- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
--
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
--
-- # Archives containing C++ object files must be created using
-- # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
--
-- ;;
-- RCC*)
-- # Rational C++ 2.4.1
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- cxx*)
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
--
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- #
-- # There doesn't appear to be a way to prevent this compiler from
-- # explicitly linking system object files so we need to strip them
-- # from the output so that they don't get included in the library
-- # dependencies.
-- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-- ;;
-- *)
-- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
-- else
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- fi
-- ;;
-- esac
-+ *)
-+ ld_shlibs=no
- ;;
-- osf4* | osf5*)
-- case $cc_basename in
-- KCC*)
-- # Kuck and Associates, Inc. (KAI) C++ Compiler
--
-- # KCC will only create a shared library if the output file
-- # ends with ".so" (or ".sl" for HP-UX), so rename the library
-- # to its proper name (with version) after linking.
-- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
--
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
--
-- # Archives containing C++ object files must be created using
-- # the KAI C++ compiler.
-- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
-- ;;
-- RCC*)
-- # Rational C++ 2.4.1
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- cxx*)
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-- echo "-hidden">> $lib.exp~
-- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
-- $rm $lib.exp'
--
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- #
-- # There doesn't appear to be a way to prevent this compiler from
-- # explicitly linking system object files so we need to strip them
-- # from the output so that they don't get included in the library
-- # dependencies.
-- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-- ;;
-- *)
-- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-+ esac
-+fi
-+AC_MSG_RESULT([$ld_shlibs])
-+test "$ld_shlibs" = no && can_build_shared=no
-+
-+# Check hardcoding attributes.
-+AC_MSG_CHECKING([how to hardcode library paths into programs])
-+hardcode_action=
-+if test -n "$hardcode_libdir_flag_spec" || \
-+ test -n "$runpath_var"; then
-+
-+ # We can hardcode non-existant directories.
-+ if test "$hardcode_direct" != no &&
-+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
-+ # have to relink, otherwise we might link with an installed library
-+ # when we should be linking with a yet-to-be-installed one
-+ ## test "$hardcode_shlibpath_var" != no &&
-+ test "$hardcode_minus_L" != no; then
-+ # Linking always hardcodes the temporary library directory.
-+ hardcode_action=relink
-+ else
-+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
-+ hardcode_action=immediate
-+ fi
-+else
-+ # We cannot hardcode anything, or else we can only hardcode existing
-+ # directories.
-+ hardcode_action=unsupported
-+fi
-+AC_MSG_RESULT([$hardcode_action])
-+
-+striplib=
-+old_striplib=
-+AC_MSG_CHECKING([whether stripping libraries is possible])
-+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-+ AC_MSG_RESULT([yes])
-+else
-+ AC_MSG_RESULT([no])
-+fi
-+
-+reload_cmds='$LD$reload_flag -o $output$reload_objs'
-+test -z "$deplibs_check_method" && deplibs_check_method=unknown
-+
-+# PORTME Fill in your ld.so characteristics
-+AC_MSG_CHECKING([dynamic linker characteristics])
-+library_names_spec=
-+libname_spec='lib$name'
-+soname_spec=
-+postinstall_cmds=
-+postuninstall_cmds=
-+finish_cmds=
-+finish_eval=
-+shlibpath_var=
-+shlibpath_overrides_runpath=unknown
-+version_type=none
-+dynamic_linker="$host_os ld.so"
-+sys_lib_dlsearch_path_spec="/lib /usr/lib"
-+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+
-+case $host_os in
-+aix3*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix $libname.a'
-+ shlibpath_var=LIBPATH
-
-+ # AIX has no versioning support, so we append a major version to the name.
-+ soname_spec='${libname}${release}.so$major'
-+ ;;
-+
-+aix4* | aix5*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ hardcode_into_libs=yes
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 supports IA64
-+ library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ else
-+ # With GCC up to 2.95.x, collect2 would create an import file
-+ # for dependence libraries. The import file would start with
-+ # the line `#! .'. This would cause the generated library to
-+ # depend on `.', always an invalid library. This was fixed in
-+ # development snapshots of GCC prior to 3.0.
-+ case $host_os in
-+ aix4 | aix4.[[01]] | aix4.[[01]].*)
-+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-+ echo ' yes '
-+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-+ :
- else
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ can_build_shared=no
- fi
- ;;
- esac
-+ # AIX (on Power*) has no versioning support, so currently we can
-+ # not hardcode correct soname into executable. Probably we can
-+ # add versioning support to collect2, so additional links can
-+ # be useful in future.
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-+ # instead of lib<name>.a to let people know that these are not
-+ # typical AIX shared libraries.
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ else
-+ # We preserve .a as extension for shared libraries through AIX4.2
-+ # and later when we are not doing run time linking.
-+ library_names_spec='${libname}${release}.a $libname.a'
-+ soname_spec='${libname}${release}.so$major'
-+ fi
-+ shlibpath_var=LIBPATH
-+ fi
-+ hardcode_into_libs=yes
-+ ;;
-+
-+amigaos*)
-+ library_names_spec='$libname.ixlibrary $libname.a'
-+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
-+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
-+ ;;
-+
-+beos*)
-+ library_names_spec='${libname}.so'
-+ dynamic_linker="$host_os ld.so"
-+ shlibpath_var=LIBRARY_PATH
-+ ;;
-+
-+bsdi4*)
-+ version_type=linux
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-+ export_dynamic_flag_spec=-rdynamic
-+ # the default ld.so.conf also contains /usr/contrib/lib and
-+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-+ # libtool to hard-code these into programs
-+ ;;
-+
-+cygwin* | mingw* | pw32*)
-+ version_type=windows
-+ need_version=no
-+ need_lib_prefix=no
-+ case $GCC,$host_os in
-+ yes,cygwin*)
-+ library_names_spec='$libname.dll.a'
-+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll'
-+ postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog .libs/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $rm \$dlpath'
- ;;
-- psos*)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- sco*)
-- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-- case $cc_basename in
-- CC*)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- *)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- esac
-+ yes,mingw*)
-+ library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll'
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"`
- ;;
-- sunos4*)
-- case $cc_basename in
-- CC*)
-- # Sun C++ 4.x
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- lcc*)
-- # Lucid
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- *)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- esac
-+ yes,pw32*)
-+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
- ;;
-- solaris*)
-- case $cc_basename in
-- CC*)
-- # Sun C++ 4.2, 5.x and Centerline C++
-- _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
-- _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
--
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- case $host_os in
-- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-- *)
-- # The C++ compiler is used as linker so we must use $wl
-- # flag to pass the commands to the underlying system
-- # linker. We must also pass each convience library through
-- # to the system linker between allextract/defaultextract.
-- # The C++ compiler will combine linker options so we
-- # cannot just pass the convience library names through
-- # without $wl.
-- # Supported since Solaris 2.6 (maybe 2.5.1?)
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
-- ;;
-- esac
-- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-+ *)
-+ library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib'
-+ ;;
-+ esac
-+ dynamic_linker='Win32 ld.exe'
-+ # FIXME: first we should search . and the directory the executable is in
-+ shlibpath_var=PATH
-+ ;;
-+
-+darwin* | rhapsody*)
-+ dynamic_linker="$host_os dyld"
-+ version_type=darwin
-+ need_lib_prefix=no
-+ need_version=no
-+ # FIXME: Relying on posixy $() will cause problems for
-+ # cross-compilation, but unfortunately the echo tests do not
-+ # yet detect zsh echo's removal of \ escapes.
-+ library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
-+ soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
-+ shlibpath_overrides_runpath=yes
-+ shlibpath_var=DYLD_LIBRARY_PATH
-+ ;;
-
-- output_verbose_link_cmd='echo'
-+freebsd1*)
-+ dynamic_linker=no
-+ ;;
-
-- # Archives containing C++ object files must be created using
-- # "CC -xar", where "CC" is the Sun C++ compiler. This is
-- # necessary to make sure instantiated templates are included
-- # in the archive.
-- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-- ;;
-- gcx*)
-- # Green Hills C++ Compiler
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-+kfreebsd*-gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU/FreeBSD ld.so'
-+ ;;
-+
-+freebsd*)
-+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
-+ version_type=freebsd-$objformat
-+ case $version_type in
-+ freebsd-elf*)
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
-+ need_version=no
-+ need_lib_prefix=no
-+ ;;
-+ freebsd-*)
-+ library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
-+ need_version=yes
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_os in
-+ freebsd2*)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ ;;
-+ esac
-+ ;;
-+
-+gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ hardcode_into_libs=yes
-+ ;;
-
-- # The C++ compiler must be used to create the archive.
-- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-- ;;
-- *)
-- # GNU C++ compiler with Solaris linker
-- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-- _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-- if $CC --version | grep -v '^2\.7' > /dev/null; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-- else
-- # g++ 2.7 appears to require `-G' NOT `-shared' on this
-- # platform.
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-- fi
-+hpux9* | hpux10* | hpux11*)
-+ # Give a soname corresponding to the major version so that dld.sl refuses to
-+ # link against other versions.
-+ dynamic_linker="$host_os dld.sl"
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_var=SHLIB_PATH
-+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-+ library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
-+ soname_spec='${libname}${release}.sl$major'
-+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
-+ postinstall_cmds='chmod 555 $lib'
-+ ;;
-
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-- fi
-- ;;
-- esac
-- ;;
-- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
-- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-- ;;
-- tandem*)
-- case $cc_basename in
-- NCC*)
-- # NonStop-UX NCC 3.20
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- *)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- esac
-- ;;
-- vxworks*)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ nonstopux*) version_type=nonstopux ;;
-+ *) version_type=irix ;;
-+ esac
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
-+ case $host_os in
-+ irix5* | nonstopux*)
-+ libsuff= shlibsuff=
- ;;
- *)
-- # FIXME: insert proper C++ library support
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ case $LD in # libtool.m4 will add one of these switches to LD
-+ *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
-+ *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
-+ *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
-+ *) libsuff= shlibsuff= libmagic=never-match;;
-+ esac
- ;;
--esac
--AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
--test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-+ esac
-+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-+ ;;
-
--_LT_AC_TAGVAR(GCC, $1)="$GXX"
--_LT_AC_TAGVAR(LD, $1)="$LD"
-+# No shared lib support for Linux oldld, aout, or coff.
-+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
-+ dynamic_linker=no
-+ ;;
-
--AC_LIBTOOL_POSTDEP_PREDEP($1)
--AC_LIBTOOL_PROG_COMPILER_PIC($1)
--AC_LIBTOOL_PROG_CC_C_O($1)
--AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
--AC_LIBTOOL_PROG_LD_SHLIBS($1)
--AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
--AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
--AC_LIBTOOL_SYS_LIB_STRIP
--AC_LIBTOOL_DLOPEN_SELF($1)
--
--AC_LIBTOOL_CONFIG($1)
--
--AC_LANG_POP
--CC=$lt_save_CC
--LDCXX=$LD
--LD=$lt_save_LD
--GCC=$lt_save_GCC
--with_gnu_ldcxx=$with_gnu_ld
--with_gnu_ld=$lt_save_with_gnu_ld
--lt_cv_path_LDCXX=$lt_cv_path_LD
--lt_cv_path_LD=$lt_save_path_LD
--lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
--lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
--])# AC_LIBTOOL_LANG_CXX_CONFIG
-+# This must be Linux ELF.
-+linux-gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ # This implies no fast_install, which is unacceptable.
-+ # Some rework will be needed to allow for fast_install
-+ # before this can be enabled.
-+ hardcode_into_libs=yes
-
--# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
--# ------------------------
--# Figure out "hidden" library dependencies from verbose
--# compiler output when linking a shared library.
--# Parse the compiler output and extract the necessary
--# objects, libraries and library flags.
--AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
--dnl we can't use the lt_simple_compile_test_code here,
--dnl because it contains code intended for an executable,
--dnl not a library. It's possible we should let each
--dnl tag define a new lt_????_link_test_code variable,
--dnl but it's only used here...
--ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
--int a;
--void foo (void) { a = 0; }
--EOF
--],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
--class Foo
--{
--public:
-- Foo (void) { a = 0; }
--private:
-- int a;
--};
--EOF
--],[$1],[F77],[cat > conftest.$ac_ext <<EOF
-- subroutine foo
-- implicit none
-- integer*4 a
-- a=0
-- return
-- end
--EOF
--],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
--public class foo {
-- private int a;
-- public void bar (void) {
-- a = 0;
-- }
--};
--EOF
--])
--dnl Parse the compiler output and extract the necessary
--dnl objects, libraries and library flags.
--if AC_TRY_EVAL(ac_compile); then
-- # Parse the compiler output and extract the necessary
-- # objects, libraries and library flags.
--
-- # Sentinel used to keep track of whether or not we are before
-- # the conftest object file.
-- pre_test_object_deps_done=no
--
-- # The `*' in the case matches for architectures that use `case' in
-- # $output_verbose_cmd can trigger glob expansion during the loop
-- # eval without this substitution.
-- output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
--
-- for p in `eval $output_verbose_link_cmd`; do
-- case $p in
--
-- -L* | -R* | -l*)
-- # Some compilers place space between "-{L,R}" and the path.
-- # Remove the space.
-- if test $p = "-L" \
-- || test $p = "-R"; then
-- prev=$p
-- continue
-- else
-- prev=
-- fi
--
-- if test "$pre_test_object_deps_done" = no; then
-- case $p in
-- -L* | -R*)
-- # Internal compiler library paths should come after those
-- # provided the user. The postdeps already come after the
-- # user supplied libs so there is no need to process them.
-- if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
-- _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
-- else
-- _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
-- fi
-- ;;
-- # The "-l" case would never come before the object being
-- # linked, so don't bother handling this case.
-- esac
-- else
-- if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
-- _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
-- else
-- _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
-- fi
-- fi
-- ;;
--
-- *.$objext)
-- # This assumes that the test object file only shows up
-- # once in the compiler output.
-- if test "$p" = "conftest.$objext"; then
-- pre_test_object_deps_done=yes
-- continue
-- fi
--
-- if test "$pre_test_object_deps_done" = no; then
-- if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
-- _LT_AC_TAGVAR(predep_objects, $1)="$p"
-- else
-- _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
-- fi
-- else
-- if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
-- _LT_AC_TAGVAR(postdep_objects, $1)="$p"
-- else
-- _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
-- fi
-- fi
-- ;;
-+ # We used to test for /lib/ld.so.1 and disable shared libraries on
-+ # powerpc, because MkLinux only supported shared libraries with the
-+ # GNU dynamic linker. Since this was broken with cross compilers,
-+ # most powerpc-linux boxes support dynamic linking these days and
-+ # people can always --disable-shared, the test was removed, and we
-+ # assume the GNU/Linux dynamic linker is in use.
-+ dynamic_linker='GNU/Linux ld.so'
-+ ;;
-+
-+knetbsd*-gnu)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU ld.so'
-+ ;;
-+
-+netbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ dynamic_linker='NetBSD (a.out) ld.so'
-+ else
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
-+ soname_spec='${libname}${release}.so$major'
-+ dynamic_linker='NetBSD ld.elf_so'
-+ fi
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-
-- *) ;; # Ignore the rest.
-+newsos6)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-
-+openbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ case "$host_os" in
-+ openbsd2.[[89]] | openbsd2.[[89]].*)
-+ shlibpath_overrides_runpath=no
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=yes
-+ ;;
- esac
-- done
-+ else
-+ shlibpath_overrides_runpath=yes
-+ fi
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-
-- # Clean up.
-- rm -f a.out a.exe
--else
-- echo "libtool.m4: error: problem compiling $1 test program"
--fi
-+os2*)
-+ libname_spec='$name'
-+ need_lib_prefix=no
-+ library_names_spec='$libname.dll $libname.a'
-+ dynamic_linker='OS/2 ld.exe'
-+ shlibpath_var=LIBPATH
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ version_type=osf
-+ need_version=no
-+ need_lib_prefix=no
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-+ hardcode_into_libs=yes
-+ ;;
-
--$rm -f confest.$objext
-+sco3.2v5*)
-+ version_type=osf
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-
--# PORTME: override above test on systems where it is broken
--ifelse([$1],[CXX],
--[case $host_os in
- solaris*)
-- case $cc_basename in
-- CC*)
-- # Adding this requires a known-good setup of shared libraries for
-- # Sun compiler versions before 5.6, else PIC objects from an old
-- # archive will be linked into the output, leading to subtle bugs.
-- _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
-- ;;
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ # ldd complains unless libraries are executable
-+ postinstall_cmds='chmod +x $lib'
-+ ;;
-+
-+sunos4*)
-+ version_type=sunos
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ if test "$with_gnu_ld" = yes; then
-+ need_lib_prefix=no
-+ fi
-+ need_version=yes
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_vendor in
-+ sni)
-+ shlibpath_overrides_runpath=no
-+ need_lib_prefix=no
-+ export_dynamic_flag_spec='${wl}-Blargedynsym'
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+ siemens)
-+ need_lib_prefix=no
-+ ;;
-+ motorola)
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-+ ;;
- esac
--esac
--])
-+ ;;
-
--case " $_LT_AC_TAGVAR(postdeps, $1) " in
--*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
--esac
--])# AC_LIBTOOL_POSTDEP_PREDEP
-+uts4*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-
--# AC_LIBTOOL_LANG_F77_CONFIG
--# ------------------------
--# Ensure that the configuration vars for the C compiler are
--# suitably defined. Those variables are subsequently used by
--# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
--AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
--AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
--[AC_REQUIRE([AC_PROG_F77])
--AC_LANG_PUSH(Fortran 77)
--
--_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
--_LT_AC_TAGVAR(allow_undefined_flag, $1)=
--_LT_AC_TAGVAR(always_export_symbols, $1)=no
--_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
--_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
--_LT_AC_TAGVAR(hardcode_direct, $1)=no
--_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
--_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
--_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
--_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
--_LT_AC_TAGVAR(hardcode_automatic, $1)=no
--_LT_AC_TAGVAR(module_cmds, $1)=
--_LT_AC_TAGVAR(module_expsym_cmds, $1)=
--_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
--_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
--_LT_AC_TAGVAR(no_undefined_flag, $1)=
--_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
--_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
--
--# Source file extension for f77 test sources.
--ac_ext=f
--
--# Object file extension for compiled f77 test sources.
--objext=o
--_LT_AC_TAGVAR(objext, $1)=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code=" subroutine t\n return\n end\n"
--
--# Code to be used in simple link tests
--lt_simple_link_test_code=" program t\n end\n"
--
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
--_LT_AC_SYS_COMPILER
--
--# save warnings/boilerplate of simple test code
--_LT_COMPILER_BOILERPLATE
--_LT_LINKER_BOILERPLATE
-+dgux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-
--# Allow CC to be a program name with arguments.
--lt_save_CC="$CC"
--CC=${F77-"f77"}
--compiler=$CC
--_LT_AC_TAGVAR(compiler, $1)=$CC
--_LT_CC_BASENAME([$compiler])
-+sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ version_type=linux
-+ library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
-+ soname_spec='$libname.so.$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ fi
-+ ;;
-+
-+*)
-+ dynamic_linker=no
-+ ;;
-+esac
-+AC_MSG_RESULT([$dynamic_linker])
-+test "$dynamic_linker" = no && can_build_shared=no
-
-+# Report the final consequences.
- AC_MSG_CHECKING([if libtool supports shared libraries])
- AC_MSG_RESULT([$can_build_shared])
-
-@@ -4685,7 +3193,7 @@
-
- # On AIX, shared libraries and static libraries use the same namespace, and
- # are all built from PIC.
--case $host_os in
-+case "$host_os" in
- aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
-@@ -4693,7 +3201,8 @@
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
--aix4* | aix5*)
-+
-+aix4*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
- fi
-@@ -4706,207 +3215,114 @@
- test "$enable_shared" = yes || enable_static=yes
- AC_MSG_RESULT([$enable_static])
-
--test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
--
--_LT_AC_TAGVAR(GCC, $1)="$G77"
--_LT_AC_TAGVAR(LD, $1)="$LD"
--
--AC_LIBTOOL_PROG_COMPILER_PIC($1)
--AC_LIBTOOL_PROG_CC_C_O($1)
--AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
--AC_LIBTOOL_PROG_LD_SHLIBS($1)
--AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
--AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
--AC_LIBTOOL_SYS_LIB_STRIP
--
--
--AC_LIBTOOL_CONFIG($1)
--
--AC_LANG_POP
--CC="$lt_save_CC"
--])# AC_LIBTOOL_LANG_F77_CONFIG
--
--
--# AC_LIBTOOL_LANG_GCJ_CONFIG
--# --------------------------
--# Ensure that the configuration vars for the C compiler are
--# suitably defined. Those variables are subsequently used by
--# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
--AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
--AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
--[AC_LANG_SAVE
--
--# Source file extension for Java test sources.
--ac_ext=java
--
--# Object file extension for compiled Java test sources.
--objext=o
--_LT_AC_TAGVAR(objext, $1)=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code="class foo {}\n"
--
--# Code to be used in simple link tests
--lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
--
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
--_LT_AC_SYS_COMPILER
--
--# save warnings/boilerplate of simple test code
--_LT_COMPILER_BOILERPLATE
--_LT_LINKER_BOILERPLATE
--
--# Allow CC to be a program name with arguments.
--lt_save_CC="$CC"
--CC=${GCJ-"gcj"}
--compiler=$CC
--_LT_AC_TAGVAR(compiler, $1)=$CC
--_LT_CC_BASENAME([$compiler])
--
--# GCJ did not exist at the time GCC didn't implicitly link libc in.
--_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
--
--_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
--
--AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
--AC_LIBTOOL_PROG_COMPILER_PIC($1)
--AC_LIBTOOL_PROG_CC_C_O($1)
--AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
--AC_LIBTOOL_PROG_LD_SHLIBS($1)
--AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
--AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
--AC_LIBTOOL_SYS_LIB_STRIP
--AC_LIBTOOL_DLOPEN_SELF($1)
--
--AC_LIBTOOL_CONFIG($1)
--
--AC_LANG_RESTORE
--CC="$lt_save_CC"
--])# AC_LIBTOOL_LANG_GCJ_CONFIG
-+if test "$hardcode_action" = relink; then
-+ # Fast installation is not supported
-+ enable_fast_install=no
-+elif test "$shlibpath_overrides_runpath" = yes ||
-+ test "$enable_shared" = no; then
-+ # Fast installation is not necessary
-+ enable_fast_install=needless
-+fi
-
-+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-+if test "$GCC" = yes; then
-+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-+fi
-
--# AC_LIBTOOL_LANG_RC_CONFIG
--# --------------------------
--# Ensure that the configuration vars for the Windows resource compiler are
--# suitably defined. Those variables are subsequently used by
--# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
--AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
--AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
--[AC_LANG_SAVE
--
--# Source file extension for RC test sources.
--ac_ext=rc
--
--# Object file extension for compiled RC test sources.
--objext=o
--_LT_AC_TAGVAR(objext, $1)=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
--
--# Code to be used in simple link tests
--lt_simple_link_test_code="$lt_simple_compile_test_code"
--
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
--_LT_AC_SYS_COMPILER
--
--# save warnings/boilerplate of simple test code
--_LT_COMPILER_BOILERPLATE
--_LT_LINKER_BOILERPLATE
-+AC_LIBTOOL_DLOPEN_SELF
-
--# Allow CC to be a program name with arguments.
--lt_save_CC="$CC"
--CC=${RC-"windres"}
--compiler=$CC
--_LT_AC_TAGVAR(compiler, $1)=$CC
--_LT_CC_BASENAME([$compiler])
--_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-+if test "$enable_shared" = yes && test "$GCC" = yes; then
-+ case $archive_cmds in
-+ *'~'*)
-+ # FIXME: we may have to deal with multi-command sequences.
-+ ;;
-+ '$CC '*)
-+ # Test whether the compiler implicitly links with -lc since on some
-+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
-+ # to ld, don't add -lc before -lgcc.
-+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
-+ AC_CACHE_VAL([lt_cv_archive_cmds_need_lc],
-+ [$rm conftest*
-+ echo 'static int dummy;' > conftest.$ac_ext
-+
-+ if AC_TRY_EVAL(ac_compile); then
-+ soname=conftest
-+ lib=conftest
-+ libobjs=conftest.$ac_objext
-+ deplibs=
-+ wl=$lt_cv_prog_cc_wl
-+ compiler_flags=-v
-+ linker_flags=-v
-+ verstring=
-+ output_objdir=.
-+ libname=conftest
-+ save_allow_undefined_flag=$allow_undefined_flag
-+ allow_undefined_flag=
-+ if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
-+ then
-+ lt_cv_archive_cmds_need_lc=no
-+ else
-+ lt_cv_archive_cmds_need_lc=yes
-+ fi
-+ allow_undefined_flag=$save_allow_undefined_flag
-+ else
-+ cat conftest.err 1>&5
-+ fi])
-+ AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc])
-+ ;;
-+ esac
-+fi
-+need_lc=${lt_cv_archive_cmds_need_lc-yes}
-
--AC_LIBTOOL_CONFIG($1)
-+# The second clause should only fire when bootstrapping the
-+# libtool distribution, otherwise you forgot to ship ltmain.sh
-+# with your package, and you will get complaints that there are
-+# no rules to generate ltmain.sh.
-+if test -f "$ltmain"; then
-+ :
-+else
-+ # If there is no Makefile yet, we rely on a make rule to execute
-+ # `config.status --recheck' to rerun these tests and create the
-+ # libtool script then.
-+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-+ if test -f "$ltmain_in"; then
-+ test -f Makefile && make "$ltmain"
-+ fi
-+fi
-
--AC_LANG_RESTORE
--CC="$lt_save_CC"
--])# AC_LIBTOOL_LANG_RC_CONFIG
-+if test -f "$ltmain"; then
-+ trap "$rm \"${ofile}T\"; exit 1" 1 2 15
-+ $rm -f "${ofile}T"
-
-+ echo creating $ofile
-
--# AC_LIBTOOL_CONFIG([TAGNAME])
--# ----------------------------
--# If TAGNAME is not passed, then create an initial libtool script
--# with a default configuration from the untagged config vars. Otherwise
--# add code to config.status for appending the configuration named by
--# TAGNAME from the matching tagged config vars.
--AC_DEFUN([AC_LIBTOOL_CONFIG],
--[# The else clause should only fire when bootstrapping the
--# libtool distribution, otherwise you forgot to ship ltmain.sh
--# with your package, and you will get complaints that there are
--# no rules to generate ltmain.sh.
--if test -f "$ltmain"; then
-- # See if we are running on zsh, and set the options which allow our commands through
-- # without removal of \ escapes.
-- if test -n "${ZSH_VERSION+set}" ; then
-- setopt NO_GLOB_SUBST
-- fi
- # Now quote all the things that may contain metacharacters while being
- # careful not to overquote the AC_SUBSTed values. We take copies of the
- # variables and quote the copies for generation of the libtool script.
-- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-- SED SHELL STRIP \
-- libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-- old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-- deplibs_check_method reload_flag reload_cmds need_locks \
-- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-- lt_cv_sys_global_symbol_to_c_name_address \
-+ for var in echo old_CC old_CFLAGS SED \
-+ AR AR_FLAGS CC LD LN_S NM SHELL STRIP \
-+ reload_flag reload_cmds wl \
-+ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
-+ thread_safe_flag_spec whole_archive_flag_spec libname_spec \
-+ library_names_spec soname_spec \
-+ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
-+ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
-+ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
-+ old_striplib striplib file_magic_cmd export_symbols_cmds \
-+ deplibs_check_method allow_undefined_flag no_undefined_flag \
-+ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
-+ global_symbol_to_c_name_address \
-+ hardcode_libdir_flag_spec hardcode_libdir_separator \
- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-- old_postinstall_cmds old_postuninstall_cmds \
-- _LT_AC_TAGVAR(compiler, $1) \
-- _LT_AC_TAGVAR(CC, $1) \
-- _LT_AC_TAGVAR(LD, $1) \
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
-- _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
-- _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
-- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
-- _LT_AC_TAGVAR(old_archive_cmds, $1) \
-- _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
-- _LT_AC_TAGVAR(predep_objects, $1) \
-- _LT_AC_TAGVAR(postdep_objects, $1) \
-- _LT_AC_TAGVAR(predeps, $1) \
-- _LT_AC_TAGVAR(postdeps, $1) \
-- _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
-- _LT_AC_TAGVAR(archive_cmds, $1) \
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
-- _LT_AC_TAGVAR(postinstall_cmds, $1) \
-- _LT_AC_TAGVAR(postuninstall_cmds, $1) \
-- _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
-- _LT_AC_TAGVAR(allow_undefined_flag, $1) \
-- _LT_AC_TAGVAR(no_undefined_flag, $1) \
-- _LT_AC_TAGVAR(export_symbols_cmds, $1) \
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
-- _LT_AC_TAGVAR(hardcode_automatic, $1) \
-- _LT_AC_TAGVAR(module_cmds, $1) \
-- _LT_AC_TAGVAR(module_expsym_cmds, $1) \
-- _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
-- _LT_AC_TAGVAR(exclude_expsyms, $1) \
-- _LT_AC_TAGVAR(include_expsyms, $1); do
-+ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
-
- case $var in
-- _LT_AC_TAGVAR(old_archive_cmds, $1) | \
-- _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
-- _LT_AC_TAGVAR(archive_cmds, $1) | \
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
-- _LT_AC_TAGVAR(module_cmds, $1) | \
-- _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
-- _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
-- _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
-- extract_expsyms_cmds | reload_cmds | finish_cmds | \
-- postinstall_cmds | postuninstall_cmds | \
-+ reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
- old_postinstall_cmds | old_postuninstall_cmds | \
-- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-+ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
-+ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
-+ postinstall_cmds | postuninstall_cmds | \
-+ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
- # Double-quote double-evaled strings.
- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
- ;;
-@@ -4916,31 +3332,14 @@
- esac
- done
-
-- case $lt_echo in
-- *'\[$]0 --fallback-echo"')
-- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
-- ;;
-- esac
--
--ifelse([$1], [],
-- [cfgfile="${ofile}T"
-- trap "$rm \"$cfgfile\"; exit 1" 1 2 15
-- $rm -f "$cfgfile"
-- AC_MSG_NOTICE([creating $ofile])],
-- [cfgfile="$ofile"])
--
-- cat <<__EOF__ >> "$cfgfile"
--ifelse([$1], [],
--[#! $SHELL
-+ cat <<__EOF__ > "${ofile}T"
-+#! $SHELL
-
--# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
- # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
- # NOTE: Changes made to this file will be lost: look at ltmain.sh.
- #
--# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
--# Free Software Foundation, Inc.
--#
--# This file is part of GNU Libtool:
-+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
- # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
- #
- # This program is free software; you can redistribute it and/or modify
-@@ -4955,28 +3354,24 @@
- #
- # 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.
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- #
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
-
--# A sed program that does not truncate output.
-+# A sed that does not truncate output.
- SED=$lt_SED
-
- # Sed that helps us avoid accidentally triggering echo(1) options like -n.
--Xsed="$SED -e 1s/^X//"
-+Xsed="${SED} -e s/^X//"
-
- # The HP-UX ksh and POSIX shell print the target directory to stdout
- # if CDPATH is set.
--(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-
--# The names of the tagged configurations supported by this script.
--available_tags=
--
--# ### BEGIN LIBTOOL CONFIG],
--[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
-+# ### BEGIN LIBTOOL CONFIG
-
- # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-
-@@ -4990,10 +3385,7 @@
- build_old_libs=$enable_static
-
- # Whether or not to add -lc for building shared libraries.
--build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
--
--# Whether or not to disallow shared libs when runtime libs are static
--allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
-+build_libtool_need_lc=$need_lc
-
- # Whether or not to optimize for fast installation.
- fast_install=$enable_fast_install
-@@ -5001,12 +3393,6 @@
- # The host system.
- host_alias=$host_alias
- host=$host
--host_os=$host_os
--
--# The build system.
--build_alias=$build_alias
--build=$build
--build_os=$build_os
-
- # An echo program that does not interpret backslashes.
- echo=$lt_echo
-@@ -5015,20 +3401,14 @@
- AR=$lt_AR
- AR_FLAGS=$lt_AR_FLAGS
-
--# A C compiler.
--LTCC=$lt_LTCC
--
--# A language-specific compiler.
--CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
-+# The default C compiler.
-+CC=$lt_CC
-
- # Is the compiler the GNU C compiler?
--with_gcc=$_LT_AC_TAGVAR(GCC, $1)
--
--# An ERE matcher.
--EGREP=$lt_EGREP
-+with_gcc=$GCC
-
- # The linker used to build libraries.
--LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
-+LD=$lt_LD
-
- # Whether we need hard or soft links.
- LN_S=$lt_LN_S
-@@ -5059,7 +3439,7 @@
- reload_cmds=$lt_reload_cmds
-
- # How to pass a linker flag through the compiler.
--wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
-+wl=$lt_wl
-
- # Object file suffix (normally "o").
- objext="$ac_objext"
-@@ -5067,23 +3447,20 @@
- # Old archive suffix (normally "a").
- libext="$libext"
-
--# Shared library suffix (normally ".so").
--shrext_cmds='$shrext_cmds'
--
- # Executable file suffix (normally "").
- exeext="$exeext"
-
- # Additional compiler flags for building library objects.
--pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
-+pic_flag=$lt_pic_flag
- pic_mode=$pic_mode
-
--# What is the maximum length of a command?
--max_cmd_len=$lt_cv_sys_max_cmd_len
--
- # Does compiler simultaneously support -c and -o options?
--compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
-+compiler_c_o=$lt_compiler_c_o
-+
-+# Can we write directly to a .lo ?
-+compiler_o_lo=$lt_compiler_o_lo
-
--# Must we lock files when doing compilation?
-+# Must we lock files when doing compilation ?
- need_locks=$lt_need_locks
-
- # Do we need the lib prefix for modules?
-@@ -5093,1864 +3470,933 @@
- need_version=$need_version
-
- # Whether dlopen is supported.
--dlopen_support=$enable_dlopen
--
--# Whether dlopen of programs is supported.
--dlopen_self=$enable_dlopen_self
--
--# Whether dlopen of statically linked programs is supported.
--dlopen_self_static=$enable_dlopen_self_static
--
--# Compiler flag to prevent dynamic linking.
--link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
--
--# Compiler flag to turn off builtin functions.
--no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
--
--# Compiler flag to allow reflexive dlopens.
--export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
--
--# Compiler flag to generate shared objects directly from archives.
--whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
--
--# Compiler flag to generate thread-safe objects.
--thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
--
--# Library versioning type.
--version_type=$version_type
--
--# Format of library name prefix.
--libname_spec=$lt_libname_spec
--
--# List of archive names. First name is the real one, the rest are links.
--# The last name is the one that the linker finds with -lNAME.
--library_names_spec=$lt_library_names_spec
--
--# The coded name of the library, if different from the real name.
--soname_spec=$lt_soname_spec
--
--# Commands used to build and install an old-style archive.
--RANLIB=$lt_RANLIB
--old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
--old_postinstall_cmds=$lt_old_postinstall_cmds
--old_postuninstall_cmds=$lt_old_postuninstall_cmds
--
--# Create an old-style archive from a shared archive.
--old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
--
--# Create a temporary old-style archive to link instead of a shared archive.
--old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
--
--# Commands used to build and install a shared archive.
--archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
--archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
--postinstall_cmds=$lt_postinstall_cmds
--postuninstall_cmds=$lt_postuninstall_cmds
--
--# Commands used to build a loadable module (assumed same as above if empty)
--module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
--module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
--
--# Commands to strip libraries.
--old_striplib=$lt_old_striplib
--striplib=$lt_striplib
--
--# Dependencies to place before the objects being linked to create a
--# shared library.
--predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
--
--# Dependencies to place after the objects being linked to create a
--# shared library.
--postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
--
--# Dependencies to place before the objects being linked to create a
--# shared library.
--predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
--
--# Dependencies to place after the objects being linked to create a
--# shared library.
--postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
--
--# The library search path used internally by the compiler when linking
--# a shared library.
--compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
--
--# Method to check whether dependent libraries are shared objects.
--deplibs_check_method=$lt_deplibs_check_method
--
--# Command to use when deplibs_check_method == file_magic.
--file_magic_cmd=$lt_file_magic_cmd
--
--# Flag that allows shared libraries with undefined symbols to be built.
--allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
--
--# Flag that forces no undefined symbols.
--no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
--
--# Commands used to finish a libtool library installation in a directory.
--finish_cmds=$lt_finish_cmds
--
--# Same as above, but a single script fragment to be evaled but not shown.
--finish_eval=$lt_finish_eval
--
--# Take the output of nm and produce a listing of raw symbols and C names.
--global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
--
--# Transform the output of nm in a proper C declaration
--global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
--
--# Transform the output of nm in a C name address pair
--global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
--
--# This is the shared library runtime path variable.
--runpath_var=$runpath_var
--
--# This is the shared library path variable.
--shlibpath_var=$shlibpath_var
--
--# Is shlibpath searched before the hard-coded library search path?
--shlibpath_overrides_runpath=$shlibpath_overrides_runpath
--
--# How to hardcode a shared library path into an executable.
--hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
--
--# Whether we should hardcode library paths into libraries.
--hardcode_into_libs=$hardcode_into_libs
--
--# Flag to hardcode \$libdir into a binary during linking.
--# This must work even if \$libdir does not exist.
--hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
--
--# If ld is used when linking, flag to hardcode \$libdir into
--# a binary during linking. This must work even if \$libdir does
--# not exist.
--hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
--
--# Whether we need a single -rpath flag with a separated argument.
--hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
--
--# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
--# resulting binary.
--hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
--
--# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
--# resulting binary.
--hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
--
--# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
--# the resulting binary.
--hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
--
--# Set to yes if building a shared library automatically hardcodes DIR into the library
--# and all subsequent libraries and executables linked against it.
--hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
--
--# Variables whose values should be saved in libtool wrapper scripts and
--# restored at relink time.
--variables_saved_for_relink="$variables_saved_for_relink"
--
--# Whether libtool must link a program against all its dependency libraries.
--link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
--
--# Compile-time system search path for libraries
--sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
--
--# Run-time system search path for libraries
--sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
--
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
--
--# Set to yes if exported symbols are required.
--always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
--
--# The commands to list exported symbols.
--export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
--
--# The commands to extract the exported symbol list from a shared archive.
--extract_expsyms_cmds=$lt_extract_expsyms_cmds
--
--# Symbols that should not be listed in the preloaded symbols.
--exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
--
--# Symbols that must always be exported.
--include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
--
--ifelse([$1],[],
--[# ### END LIBTOOL CONFIG],
--[# ### END LIBTOOL TAG CONFIG: $tagname])
--
--__EOF__
--
--ifelse([$1],[], [
-- case $host_os in
-- aix3*)
-- cat <<\EOF >> "$cfgfile"
--
--# AIX sometimes has problems with the GCC collect2 program. For some
--# reason, if we set the COLLECT_NAMES environment variable, the problems
--# vanish in a puff of smoke.
--if test "X${COLLECT_NAMES+set}" != Xset; then
-- COLLECT_NAMES=
-- export COLLECT_NAMES
--fi
--EOF
-- ;;
-- esac
--
-- # We use sed instead of cat because bash on DJGPP gets confused if
-- # if finds mixed CR/LF and LF-only lines. Since sed operates in
-- # text mode, it properly converts lines to CR/LF. This bash problem
-- # is reportedly fixed, but why not run on old versions too?
-- sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
--
-- mv -f "$cfgfile" "$ofile" || \
-- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-- chmod +x "$ofile"
--])
--else
-- # If there is no Makefile yet, we rely on a make rule to execute
-- # `config.status --recheck' to rerun these tests and create the
-- # libtool script then.
-- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-- if test -f "$ltmain_in"; then
-- test -f Makefile && make "$ltmain"
-- fi
--fi
--])# AC_LIBTOOL_CONFIG
--
--
--# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
--# -------------------------------------------
--AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
--[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
--
--_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
--
--if test "$GCC" = yes; then
-- _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
--
-- AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-- lt_cv_prog_compiler_rtti_exceptions,
-- [-fno-rtti -fno-exceptions], [],
-- [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
--fi
--])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
--
--
--# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
--# ---------------------------------
--AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
--[AC_REQUIRE([AC_CANONICAL_HOST])
--AC_REQUIRE([AC_PROG_NM])
--AC_REQUIRE([AC_OBJEXT])
--# Check for command to grab the raw symbol name followed by C symbol from nm.
--AC_MSG_CHECKING([command to parse $NM output from $compiler object])
--AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
--[
--# These are sane defaults that work on at least a few old systems.
--# [They come from Ultrix. What could be older than Ultrix?!! ;)]
--
--# Character class describing NM global symbol codes.
--symcode='[[BCDEGRST]]'
--
--# Regexp to match symbols that can be accessed directly from C.
--sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
--
--# Transform an extracted symbol line into a proper C declaration
--lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
--
--# Transform an extracted symbol line into symbol name and symbol address
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
--
--# Define system-specific variables.
--case $host_os in
--aix*)
-- symcode='[[BCDT]]'
-- ;;
--cygwin* | mingw* | pw32*)
-- symcode='[[ABCDGISTW]]'
-- ;;
--hpux*) # Its linker distinguishes data from code symbols
-- if test "$host_cpu" = ia64; then
-- symcode='[[ABCDEGRST]]'
-- fi
-- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-- ;;
--linux*)
-- if test "$host_cpu" = ia64; then
-- symcode='[[ABCDGIRSTW]]'
-- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-- fi
-- ;;
--irix* | nonstopux*)
-- symcode='[[BCDEGRST]]'
-- ;;
--osf*)
-- symcode='[[BCDEGQRST]]'
-- ;;
--solaris* | sysv5*)
-- symcode='[[BDRT]]'
-- ;;
--sysv4)
-- symcode='[[DFNSTU]]'
-- ;;
--esac
--
--# Handle CRLF in mingw tool chain
--opt_cr=
--case $build_os in
--mingw*)
-- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-- ;;
--esac
--
--# If we're using GNU nm, then use its standard symbol codes.
--case `$NM -V 2>&1` in
--*GNU* | *'with BFD'*)
-- symcode='[[ABCDGIRSTW]]' ;;
--esac
--
--# Try without a prefix undercore, then with it.
--for ac_symprfx in "" "_"; do
--
-- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-- symxfrm="\\1 $ac_symprfx\\2 \\2"
-+dlopen_support=$enable_dlopen
-
-- # Write the raw and C identifiers.
-- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-+# Whether dlopen of programs is supported.
-+dlopen_self=$enable_dlopen_self
-
-- # Check to see that the pipe works correctly.
-- pipe_works=no
-+# Whether dlopen of statically linked programs is supported.
-+dlopen_self_static=$enable_dlopen_self_static
-
-- rm -f conftest*
-- cat > conftest.$ac_ext <<EOF
--#ifdef __cplusplus
--extern "C" {
--#endif
--char nm_test_var;
--void nm_test_func(){}
--#ifdef __cplusplus
--}
--#endif
--int main(){nm_test_var='a';nm_test_func();return(0);}
--EOF
-+# Compiler flag to prevent dynamic linking.
-+link_static_flag=$lt_link_static_flag
-
-- if AC_TRY_EVAL(ac_compile); then
-- # Now try to grab the symbols.
-- nlist=conftest.nm
-- if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
-- # Try sorting and uniquifying the output.
-- if sort "$nlist" | uniq > "$nlist"T; then
-- mv -f "$nlist"T "$nlist"
-- else
-- rm -f "$nlist"T
-- fi
-+# Compiler flag to turn off builtin functions.
-+no_builtin_flag=$lt_no_builtin_flag
-
-- # Make sure that we snagged all the symbols we need.
-- if grep ' nm_test_var$' "$nlist" >/dev/null; then
-- if grep ' nm_test_func$' "$nlist" >/dev/null; then
-- cat <<EOF > conftest.$ac_ext
--#ifdef __cplusplus
--extern "C" {
--#endif
-+# Compiler flag to allow reflexive dlopens.
-+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
--EOF
-- # Now generate the symbol file.
-- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
-+# Compiler flag to generate shared objects directly from archives.
-+whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-- cat <<EOF >> conftest.$ac_ext
--#if defined (__STDC__) && __STDC__
--# define lt_ptr_t void *
--#else
--# define lt_ptr_t char *
--# define const
--#endif
-+# Compiler flag to generate thread-safe objects.
-+thread_safe_flag_spec=$lt_thread_safe_flag_spec
-
--/* The mapping between symbol names and symbols. */
--const struct {
-- const char *name;
-- lt_ptr_t address;
--}
--lt_preloaded_symbols[[]] =
--{
--EOF
-- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
-- cat <<\EOF >> conftest.$ac_ext
-- {0, (lt_ptr_t) 0}
--};
-+# Library versioning type.
-+version_type=$version_type
-
--#ifdef __cplusplus
--}
--#endif
--EOF
-- # Now try linking the two files.
-- mv conftest.$ac_objext conftstm.$ac_objext
-- lt_save_LIBS="$LIBS"
-- lt_save_CFLAGS="$CFLAGS"
-- LIBS="conftstm.$ac_objext"
-- CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
-- pipe_works=yes
-- fi
-- LIBS="$lt_save_LIBS"
-- CFLAGS="$lt_save_CFLAGS"
-- else
-- echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
-- fi
-- else
-- echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-- fi
-- else
-- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-- fi
-- else
-- echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
-- cat conftest.$ac_ext >&5
-- fi
-- rm -f conftest* conftst*
-+# Format of library name prefix.
-+libname_spec=$lt_libname_spec
-
-- # Do not use the global_symbol_pipe unless it works.
-- if test "$pipe_works" = yes; then
-- break
-- else
-- lt_cv_sys_global_symbol_pipe=
-- fi
--done
--])
--if test -z "$lt_cv_sys_global_symbol_pipe"; then
-- lt_cv_sys_global_symbol_to_cdecl=
--fi
--if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-- AC_MSG_RESULT(failed)
--else
-- AC_MSG_RESULT(ok)
--fi
--]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-+# List of archive names. First name is the real one, the rest are links.
-+# The last name is the one that the linker finds with -lNAME.
-+library_names_spec=$lt_library_names_spec
-
-+# The coded name of the library, if different from the real name.
-+soname_spec=$lt_soname_spec
-
--# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
--# ---------------------------------------
--AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
--[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
--_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
--_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
-+# Commands used to build and install an old-style archive.
-+RANLIB=$lt_RANLIB
-+old_archive_cmds=$lt_old_archive_cmds
-+old_postinstall_cmds=$lt_old_postinstall_cmds
-+old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
--AC_MSG_CHECKING([for $compiler option to produce PIC])
-- ifelse([$1],[CXX],[
-- # C++ specific cases for pic, static, wl, etc.
-- if test "$GXX" = yes; then
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-+# Create an old-style archive from a shared archive.
-+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-- case $host_os in
-- aix*)
-- # All AIX code is PIC.
-- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- fi
-- ;;
-- amigaos*)
-- # FIXME: we need at least 68020 code to build shared libraries, but
-- # adding the `-m68020' flag to GCC prevents building anything better,
-- # like `-m68040'.
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-- ;;
-- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-- # PIC is the default for these OSes.
-- ;;
-- mingw* | os2* | pw32*)
-- # This hack is so that the source file can tell whether it is being
-- # built for inclusion in a dll (and should export symbols for example).
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
-- ;;
-- darwin* | rhapsody*)
-- # PIC is the default on this platform
-- # Common symbols not allowed in MH_DYLIB files
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-- ;;
-- *djgpp*)
-- # DJGPP does not support shared libraries at all
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-- ;;
-- sysv4*MP*)
-- if test -d /usr/nec; then
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-- fi
-- ;;
-- hpux*)
-- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-- # not for PA HP-UX.
-- case $host_cpu in
-- hppa*64*|ia64*)
-- ;;
-- *)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-- ;;
-- esac
-- ;;
-- *)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-- ;;
-- esac
-- else
-- case $host_os in
-- aix4* | aix5*)
-- # All AIX code is PIC.
-- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- else
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-- fi
-- ;;
-- chorus*)
-- case $cc_basename in
-- cxch68*)
-- # Green Hills C++ Compiler
-- # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-- ;;
-- esac
-- ;;
-- darwin*)
-- # PIC is the default on this platform
-- # Common symbols not allowed in MH_DYLIB files
-- case $cc_basename in
-- xlc*)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- ;;
-- esac
-- ;;
-- dgux*)
-- case $cc_basename in
-- ec++*)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-- ;;
-- ghcx*)
-- # Green Hills C++ Compiler
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- freebsd* | kfreebsd*-gnu | dragonfly*)
-- # FreeBSD uses GNU C++
-- ;;
-- hpux9* | hpux10* | hpux11*)
-- case $cc_basename in
-- CC*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
-- if test "$host_cpu" != ia64; then
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-- fi
-- ;;
-- aCC*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
-- case $host_cpu in
-- hppa*64*|ia64*)
-- # +Z the default
-- ;;
-- *)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-- ;;
-- esac
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- irix5* | irix6* | nonstopux*)
-- case $cc_basename in
-- CC*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-- # CC pic flag -KPIC is the default.
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- linux*)
-- case $cc_basename in
-- KCC*)
-- # KAI C++ Compiler
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-- ;;
-- icpc* | ecpc*)
-- # Intel C++
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-- ;;
-- pgCC*)
-- # Portland Group C++ compiler.
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- ;;
-- cxx*)
-- # Compaq C++
-- # Make sure the PIC flag is empty. It appears that all Alpha
-- # Linux and Compaq Tru64 Unix objects are PIC.
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- lynxos*)
-- ;;
-- m88k*)
-- ;;
-- mvs*)
-- case $cc_basename in
-- cxx*)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- netbsd*)
-- ;;
-- osf3* | osf4* | osf5*)
-- case $cc_basename in
-- KCC*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-- ;;
-- RCC*)
-- # Rational C++ 2.4.1
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-- ;;
-- cxx*)
-- # Digital/Compaq C++
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- # Make sure the PIC flag is empty. It appears that all Alpha
-- # Linux and Compaq Tru64 Unix objects are PIC.
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- psos*)
-- ;;
-- sco*)
-- case $cc_basename in
-- CC*)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- solaris*)
-- case $cc_basename in
-- CC*)
-- # Sun C++ 4.2, 5.x and Centerline C++
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-- ;;
-- gcx*)
-- # Green Hills C++ Compiler
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- sunos4*)
-- case $cc_basename in
-- CC*)
-- # Sun C++ 4.x
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- ;;
-- lcc*)
-- # Lucid
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- tandem*)
-- case $cc_basename in
-- NCC*)
-- # NonStop-UX NCC 3.20
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- unixware*)
-- ;;
-- vxworks*)
-- ;;
-- *)
-- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-- ;;
-- esac
-- fi
--],
--[
-- if test "$GCC" = yes; then
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-+# Create a temporary old-style archive to link instead of a shared archive.
-+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-- case $host_os in
-- aix*)
-- # All AIX code is PIC.
-- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- fi
-- ;;
-+# Commands used to build and install a shared archive.
-+archive_cmds=$lt_archive_cmds
-+archive_expsym_cmds=$lt_archive_expsym_cmds
-+postinstall_cmds=$lt_postinstall_cmds
-+postuninstall_cmds=$lt_postuninstall_cmds
-
-- amigaos*)
-- # FIXME: we need at least 68020 code to build shared libraries, but
-- # adding the `-m68020' flag to GCC prevents building anything better,
-- # like `-m68040'.
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-- ;;
-+# Commands to strip libraries.
-+old_striplib=$lt_old_striplib
-+striplib=$lt_striplib
-
-- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-- # PIC is the default for these OSes.
-- ;;
-+# Method to check whether dependent libraries are shared objects.
-+deplibs_check_method=$lt_deplibs_check_method
-
-- mingw* | pw32* | os2*)
-- # This hack is so that the source file can tell whether it is being
-- # built for inclusion in a dll (and should export symbols for example).
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
-- ;;
-+# Command to use when deplibs_check_method == file_magic.
-+file_magic_cmd=$lt_file_magic_cmd
-
-- darwin* | rhapsody*)
-- # PIC is the default on this platform
-- # Common symbols not allowed in MH_DYLIB files
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-- ;;
-+# Flag that allows shared libraries with undefined symbols to be built.
-+allow_undefined_flag=$lt_allow_undefined_flag
-
-- msdosdjgpp*)
-- # Just because we use GCC doesn't mean we suddenly get shared libraries
-- # on systems that don't support them.
-- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-- enable_shared=no
-- ;;
-+# Flag that forces no undefined symbols.
-+no_undefined_flag=$lt_no_undefined_flag
-
-- sysv4*MP*)
-- if test -d /usr/nec; then
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-- fi
-- ;;
-+# Commands used to finish a libtool library installation in a directory.
-+finish_cmds=$lt_finish_cmds
-
-- hpux*)
-- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-- # not for PA HP-UX.
-- case $host_cpu in
-- hppa*64*|ia64*)
-- # +Z the default
-- ;;
-- *)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-- ;;
-- esac
-- ;;
-+# Same as above, but a single script fragment to be evaled but not shown.
-+finish_eval=$lt_finish_eval
-
-- *)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-- ;;
-- esac
-- else
-- # PORTME Check for flag to pass linker flags through the system compiler.
-- case $host_os in
-- aix*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- else
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-- fi
-- ;;
-- darwin*)
-- # PIC is the default on this platform
-- # Common symbols not allowed in MH_DYLIB files
-- case $cc_basename in
-- xlc*)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- ;;
-- esac
-- ;;
-+# Take the output of nm and produce a listing of raw symbols and C names.
-+global_symbol_pipe=$lt_global_symbol_pipe
-
-- mingw* | pw32* | os2*)
-- # This hack is so that the source file can tell whether it is being
-- # built for inclusion in a dll (and should export symbols for example).
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
-- ;;
-+# Transform the output of nm in a proper C declaration
-+global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
-
-- hpux9* | hpux10* | hpux11*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-- # not for PA HP-UX.
-- case $host_cpu in
-- hppa*64*|ia64*)
-- # +Z the default
-- ;;
-- *)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-- ;;
-- esac
-- # Is there a better lt_prog_compiler_static that works with the bundled CC?
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-- ;;
-+# Transform the output of nm in a C name address pair
-+global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
-
-- irix5* | irix6* | nonstopux*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- # PIC (with -KPIC) is the default.
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-- ;;
-+# This is the shared library runtime path variable.
-+runpath_var=$runpath_var
-
-- newsos6)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- ;;
-+# This is the shared library path variable.
-+shlibpath_var=$shlibpath_var
-
-- linux*)
-- case $cc_basename in
-- icc* | ecc*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-- ;;
-- pgcc* | pgf77* | pgf90* | pgf95*)
-- # Portland Group compilers (*not* the Pentium gcc compiler,
-- # which looks to be a dead project)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- ;;
-- ccc*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- # All Alpha code is PIC.
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-- ;;
-- esac
-- ;;
-+# Is shlibpath searched before the hard-coded library search path?
-+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-- osf3* | osf4* | osf5*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- # All OSF/1 code is PIC.
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-- ;;
-+# How to hardcode a shared library path into an executable.
-+hardcode_action=$hardcode_action
-
-- sco3.2v5*)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
-- ;;
-+# Whether we should hardcode library paths into libraries.
-+hardcode_into_libs=$hardcode_into_libs
-
-- solaris*)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- case $cc_basename in
-- f77* | f90* | f95*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-- *)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-- esac
-- ;;
-+# Flag to hardcode \$libdir into a binary during linking.
-+# This must work even if \$libdir does not exist.
-+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-- sunos4*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- ;;
-+# Whether we need a single -rpath flag with a separated argument.
-+hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- ;;
-+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_direct=$hardcode_direct
-
-- sysv4*MP*)
-- if test -d /usr/nec ;then
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- fi
-- ;;
-+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_minus_L=$hardcode_minus_L
-
-- unicos*)
-- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-- ;;
-+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-+# the resulting binary.
-+hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-- uts4*)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-- ;;
-+# Variables whose values should be saved in libtool wrapper scripts and
-+# restored at relink time.
-+variables_saved_for_relink="$variables_saved_for_relink"
-
-- *)
-- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-- ;;
-- esac
-- fi
--])
--AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
-+# Whether libtool must link a program against all its dependency libraries.
-+link_all_deplibs=$link_all_deplibs
-
--#
--# Check to make sure the PIC flag actually works.
--#
--if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
-- AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
-- _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
-- [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
-- [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
-- "" | " "*) ;;
-- *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-- esac],
-- [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
--fi
--case $host_os in
-- # For platforms which do not support PIC, -DPIC is meaningless:
-- *djgpp*)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-- ;;
-- *)
-- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
-- ;;
--esac
--])
-+# Compile-time system search path for libraries
-+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-+# Run-time system search path for libraries
-+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
--# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
--# ------------------------------------
--# See if the linker supports building shared libraries.
--AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
--[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
--ifelse([$1],[CXX],[
-- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-- case $host_os in
-- aix4* | aix5*)
-- # If we're using GNU nm, then we don't want the "-C" option.
-- # -C means demangle to AIX nm, but means don't demangle with GNU nm
-- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-- else
-- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-- fi
-- ;;
-- pw32*)
-- _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-- ;;
-- cygwin* | mingw*)
-- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
-- ;;
-- *)
-- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-- ;;
-- esac
--],[
-- runpath_var=
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=
-- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-- _LT_AC_TAGVAR(archive_cmds, $1)=
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
-- _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
-- _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-- _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-- _LT_AC_TAGVAR(hardcode_direct, $1)=no
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-- _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
-- _LT_AC_TAGVAR(hardcode_automatic, $1)=no
-- _LT_AC_TAGVAR(module_cmds, $1)=
-- _LT_AC_TAGVAR(module_expsym_cmds, $1)=
-- _LT_AC_TAGVAR(always_export_symbols, $1)=no
-- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-- # include_expsyms should be a list of space-separated symbols to be *always*
-- # included in the symbol list
-- _LT_AC_TAGVAR(include_expsyms, $1)=
-- # exclude_expsyms can be an extended regexp of symbols to exclude
-- # it will be wrapped by ` (' and `)$', so one must not match beginning or
-- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-- # as well as any symbol that contains `d'.
-- _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
-- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-- # platforms (ab)use it in PIC code, but their linkers get confused if
-- # the symbol is explicitly referenced. Since portable code cannot
-- # rely on this symbol name, it's probably fine to never include it in
-- # preloaded symbol tables.
-- extract_expsyms_cmds=
-- # Just being paranoid about ensuring that cc_basename is set.
-- _LT_CC_BASENAME([$compiler])
-- case $host_os in
-- cygwin* | mingw* | pw32*)
-- # FIXME: the MSVC++ port hasn't been tested in a loooong time
-- # When not using gcc, we currently assume that we are using
-- # Microsoft Visual C++.
-- if test "$GCC" != yes; then
-- with_gnu_ld=no
-- fi
-- ;;
-- openbsd*)
-- with_gnu_ld=no
-- ;;
-- esac
-+# Fix the shell variable \$srcfile for the compiler.
-+fix_srcfile_path="$fix_srcfile_path"
-
-- _LT_AC_TAGVAR(ld_shlibs, $1)=yes
-- if test "$with_gnu_ld" = yes; then
-- # If archive_cmds runs LD, not CC, wlarc should be empty
-- wlarc='${wl}'
-+# Set to yes if exported symbols are required.
-+always_export_symbols=$always_export_symbols
-
-- # Set some defaults for GNU ld with shared library support. These
-- # are reset later if shared libraries are not supported. Putting them
-- # here allows them to be overridden if necessary.
-- runpath_var=LD_RUN_PATH
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-- # ancient GNU ld didn't support --whole-archive et. al.
-- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-- else
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-- fi
-- supports_anon_versioning=no
-- case `$LD -v 2>/dev/null` in
-- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-- *\ 2.11.*) ;; # other 2.11 versions
-- *) supports_anon_versioning=yes ;;
-- esac
-+# The commands to list exported symbols.
-+export_symbols_cmds=$lt_export_symbols_cmds
-
-- # See if GNU ld supports shared libraries.
-- case $host_os in
-- aix3* | aix4* | aix5*)
-- # On AIX/PPC, the GNU linker is very broken
-- if test "$host_cpu" != ia64; then
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- cat <<EOF 1>&2
-+# The commands to extract the exported symbol list from a shared archive.
-+extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
--*** Warning: the GNU linker, at least up to release 2.9.1, is reported
--*** to be unable to reliably create shared libraries on AIX.
--*** Therefore, libtool is disabling shared libraries support. If you
--*** really care for shared libraries, you may want to modify your PATH
--*** so that a non-GNU linker is found, and then restart.
-+# Symbols that should not be listed in the preloaded symbols.
-+exclude_expsyms=$lt_exclude_expsyms
-
--EOF
-- fi
-- ;;
-+# Symbols that must always be exported.
-+include_expsyms=$lt_include_expsyms
-
-- amigaos*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
--
-- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-- # that the semantics of dynamic libraries on AmigaOS, at least up
-- # to version 4, is to share data among multiple programs linked
-- # with the same dynamic library. Since this doesn't match the
-- # behavior of shared libraries on other platforms, we can't use
-- # them.
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-+# ### END LIBTOOL CONFIG
-
-- beos*)
-- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-- # support --undefined. This deserves some investigation. FIXME
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- else
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- fi
-- ;;
-+__EOF__
-
-- cygwin* | mingw* | pw32*)
-- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-- # as there is no search path for DLLs.
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-- _LT_AC_TAGVAR(always_export_symbols, $1)=no
-- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
--
-- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-- # If the export-symbols file already is a .def file (1st line
-- # is EXPORTS), use it as is; otherwise, prepend...
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-- cp $export_symbols $output_objdir/$soname.def;
-- else
-- echo EXPORTS > $output_objdir/$soname.def;
-- cat $export_symbols >> $output_objdir/$soname.def;
-- fi~
-- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-- else
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- fi
-- ;;
-+ case $host_os in
-+ aix3*)
-+ cat <<\EOF >> "${ofile}T"
-
-- linux*)
-- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- tmp_addflag=
-- case $cc_basename,$host_cpu in
-- pgcc*) # Portland Group C compiler
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-- tmp_addflag=' $pic_flag'
-- ;;
-- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-- tmp_addflag=' $pic_flag -Mnomain' ;;
-- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
-- tmp_addflag=' -i_dynamic' ;;
-- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
-- tmp_addflag=' -i_dynamic -nofor_main' ;;
-- ifc* | ifort*) # Intel Fortran compiler
-- tmp_addflag=' -nofor_main' ;;
-- esac
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+# AIX sometimes has problems with the GCC collect2 program. For some
-+# reason, if we set the COLLECT_NAMES environment variable, the problems
-+# vanish in a puff of smoke.
-+if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+fi
-+EOF
-+ ;;
-+ esac
-
-- if test $supports_anon_versioning = yes; then
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
-- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-- $echo "local: *; };" >> $output_objdir/$libname.ver~
-- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-- fi
-- else
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- fi
-- ;;
-+ case $host_os in
-+ cygwin* | mingw* | pw32* | os2*)
-+ cat <<'EOF' >> "${ofile}T"
-+ # This is a source program that is used to create dlls on Windows
-+ # Don't remove nor modify the starting and closing comments
-+# /* ltdll.c starts here */
-+# #define WIN32_LEAN_AND_MEAN
-+# #include <windows.h>
-+# #undef WIN32_LEAN_AND_MEAN
-+# #include <stdio.h>
-+#
-+# #ifndef __CYGWIN__
-+# # ifdef __CYGWIN32__
-+# # define __CYGWIN__ __CYGWIN32__
-+# # endif
-+# #endif
-+#
-+# #ifdef __cplusplus
-+# extern "C" {
-+# #endif
-+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-+# #ifdef __cplusplus
-+# }
-+# #endif
-+#
-+# #ifdef __CYGWIN__
-+# #include <cygwin/cygwin_dll.h>
-+# DECLARE_CYGWIN_DLL( DllMain );
-+# #endif
-+# HINSTANCE __hDllInstance_base;
-+#
-+# BOOL APIENTRY
-+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-+# {
-+# __hDllInstance_base = hInst;
-+# return TRUE;
-+# }
-+# /* ltdll.c ends here */
-+ # This is a source program that is used to create import libraries
-+ # on Windows for dlls which lack them. Don't remove nor modify the
-+ # starting and closing comments
-+# /* impgen.c starts here */
-+# /* Copyright (C) 1999-2000 Free Software Foundation, Inc.
-+#
-+# This file is part of GNU libtool.
-+#
-+# 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 <stdio.h> /* for printf() */
-+# #include <unistd.h> /* for open(), lseek(), read() */
-+# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
-+# #include <string.h> /* for strdup() */
-+#
-+# /* O_BINARY isn't required (or even defined sometimes) under Unix */
-+# #ifndef O_BINARY
-+# #define O_BINARY 0
-+# #endif
-+#
-+# static unsigned int
-+# pe_get16 (fd, offset)
-+# int fd;
-+# int offset;
-+# {
-+# unsigned char b[2];
-+# lseek (fd, offset, SEEK_SET);
-+# read (fd, b, 2);
-+# return b[0] + (b[1]<<8);
-+# }
-+#
-+# static unsigned int
-+# pe_get32 (fd, offset)
-+# int fd;
-+# int offset;
-+# {
-+# unsigned char b[4];
-+# lseek (fd, offset, SEEK_SET);
-+# read (fd, b, 4);
-+# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-+# }
-+#
-+# static unsigned int
-+# pe_as32 (ptr)
-+# void *ptr;
-+# {
-+# unsigned char *b = ptr;
-+# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-+# }
-+#
-+# int
-+# main (argc, argv)
-+# int argc;
-+# char *argv[];
-+# {
-+# int dll;
-+# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
-+# unsigned long export_rva, export_size, nsections, secptr, expptr;
-+# unsigned long name_rvas, nexp;
-+# unsigned char *expdata, *erva;
-+# char *filename, *dll_name;
-+#
-+# filename = argv[1];
-+#
-+# dll = open(filename, O_RDONLY|O_BINARY);
-+# if (dll < 1)
-+# return 1;
-+#
-+# dll_name = filename;
-+#
-+# for (i=0; filename[i]; i++)
-+# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
-+# dll_name = filename + i +1;
-+#
-+# pe_header_offset = pe_get32 (dll, 0x3c);
-+# opthdr_ofs = pe_header_offset + 4 + 20;
-+# num_entries = pe_get32 (dll, opthdr_ofs + 92);
-+#
-+# if (num_entries < 1) /* no exports */
-+# return 1;
-+#
-+# export_rva = pe_get32 (dll, opthdr_ofs + 96);
-+# export_size = pe_get32 (dll, opthdr_ofs + 100);
-+# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
-+# secptr = (pe_header_offset + 4 + 20 +
-+# pe_get16 (dll, pe_header_offset + 4 + 16));
-+#
-+# expptr = 0;
-+# for (i = 0; i < nsections; i++)
-+# {
-+# char sname[8];
-+# unsigned long secptr1 = secptr + 40 * i;
-+# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-+# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
-+# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
-+# lseek(dll, secptr1, SEEK_SET);
-+# read(dll, sname, 8);
-+# if (vaddr <= export_rva && vaddr+vsize > export_rva)
-+# {
-+# expptr = fptr + (export_rva - vaddr);
-+# if (export_rva + export_size > vaddr + vsize)
-+# export_size = vsize - (export_rva - vaddr);
-+# break;
-+# }
-+# }
-+#
-+# expdata = (unsigned char*)malloc(export_size);
-+# lseek (dll, expptr, SEEK_SET);
-+# read (dll, expdata, export_size);
-+# erva = expdata - export_rva;
-+#
-+# nexp = pe_as32 (expdata+24);
-+# name_rvas = pe_as32 (expdata+32);
-+#
-+# printf ("EXPORTS\n");
-+# for (i = 0; i<nexp; i++)
-+# {
-+# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
-+# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
-+# }
-+#
-+# return 0;
-+# }
-+# /* impgen.c ends here */
-
-- netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-- wlarc=
-- else
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- fi
-- ;;
-+EOF
-+ ;;
-+ esac
-
-- solaris* | sysv5*)
-- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- cat <<EOF 1>&2
-+ # We use sed instead of cat because bash on DJGPP gets confused if
-+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
-+ # text mode, it properly converts lines to CR/LF. This bash problem
-+ # is reportedly fixed, but why not run on old versions too?
-+ sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
-
--*** Warning: The releases 2.8.* of the GNU linker cannot reliably
--*** create shared libraries on Solaris systems. Therefore, libtool
--*** is disabling shared libraries support. We urge you to upgrade GNU
--*** binutils to release 2.9.1 or newer. Another option is to modify
--*** your PATH or compiler configuration so that the native linker is
--*** used, and then restart.
-+ mv -f "${ofile}T" "$ofile" || \
-+ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
-+ chmod +x "$ofile"
-+fi
-
--EOF
-- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- else
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- fi
-- ;;
-+])# _LT_AC_LTCONFIG_HACK
-
-- sunos4*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- wlarc=
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- ;;
-+# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
-+AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
-
-- *)
-- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- else
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- fi
-- ;;
-- esac
-+# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
-+AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
-
-- if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
-- runpath_var=
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-+# AC_ENABLE_SHARED - implement the --enable-shared flag
-+# Usage: AC_ENABLE_SHARED[(DEFAULT)]
-+# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-+# `yes'.
-+AC_DEFUN([AC_ENABLE_SHARED],
-+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
-+AC_ARG_ENABLE(shared,
-+changequote(<<, >>)dnl
-+<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
-+changequote([, ])dnl
-+[p=${PACKAGE-default}
-+case $enableval in
-+yes) enable_shared=yes ;;
-+no) enable_shared=no ;;
-+*)
-+ enable_shared=no
-+ # Look at the argument we got. We use all the common list separators.
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-+ for pkg in $enableval; do
-+ if test "X$pkg" = "X$p"; then
-+ enable_shared=yes
- fi
-- else
-- # PORTME fill in a description of your system's linker (not GNU ld)
-- case $host_os in
-- aix3*)
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-- _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-- # Note: this linker hardcodes the directories in LIBPATH if there
-- # are no directories specified by -L.
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-- if test "$GCC" = yes && test -z "$link_static_flag"; then
-- # Neither direct hardcoding nor static linking is supported with a
-- # broken collect2.
-- _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
-- fi
-- ;;
-+ done
-+ IFS="$ac_save_ifs"
-+ ;;
-+esac],
-+enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
-+])
-
-- aix4* | aix5*)
-- if test "$host_cpu" = ia64; then
-- # On IA64, the linker does run time linking by default, so we don't
-- # have to do anything special.
-- aix_use_runtimelinking=no
-- exp_sym_flag='-Bexport'
-- no_entry_flag=""
-- else
-- # If we're using GNU nm, then we don't want the "-C" option.
-- # -C means demangle to AIX nm, but means don't demangle with GNU nm
-- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-- else
-- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-- fi
-- aix_use_runtimelinking=no
-+# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
-+AC_DEFUN([AC_DISABLE_SHARED],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+AC_ENABLE_SHARED(no)])
-+
-+# AC_ENABLE_STATIC - implement the --enable-static flag
-+# Usage: AC_ENABLE_STATIC[(DEFAULT)]
-+# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-+# `yes'.
-+AC_DEFUN([AC_ENABLE_STATIC],
-+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
-+AC_ARG_ENABLE(static,
-+changequote(<<, >>)dnl
-+<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
-+changequote([, ])dnl
-+[p=${PACKAGE-default}
-+case $enableval in
-+yes) enable_static=yes ;;
-+no) enable_static=no ;;
-+*)
-+ enable_static=no
-+ # Look at the argument we got. We use all the common list separators.
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-+ for pkg in $enableval; do
-+ if test "X$pkg" = "X$p"; then
-+ enable_static=yes
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ ;;
-+esac],
-+enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
-+])
-
-- # Test if we are trying to use run time linking or normal
-- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-- # need to do runtime linking.
-- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
-- for ld_flag in $LDFLAGS; do
-- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-- aix_use_runtimelinking=yes
-- break
-- fi
-- done
-- esac
-+# AC_DISABLE_STATIC - set the default static flag to --disable-static
-+AC_DEFUN([AC_DISABLE_STATIC],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+AC_ENABLE_STATIC(no)])
-
-- exp_sym_flag='-bexport'
-- no_entry_flag='-bnoentry'
-- fi
-
-- # When large executables or shared objects are built, AIX ld can
-- # have problems creating the table of contents. If linking a library
-- # or program results in "error TOC overflow" add -mminimal-toc to
-- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
--
-- _LT_AC_TAGVAR(archive_cmds, $1)=''
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
-- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
--
-- if test "$GCC" = yes; then
-- case $host_os in aix4.[[012]]|aix4.[[012]].*)
-- # We only want to do this on AIX 4.2 and lower, the check
-- # below for broken collect2 doesn't work under 4.3+
-- collect2name=`${CC} -print-prog-name=collect2`
-- if test -f "$collect2name" && \
-- strings "$collect2name" | grep resolve_lib_name >/dev/null
-- then
-- # We have reworked collect2
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- else
-- # We have old collect2
-- _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
-- # It fails to find uninstalled libraries when the uninstalled
-- # path is not listed in the libpath. Setting hardcode_minus_L
-- # to unsupported forces relinking
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-- fi
-- esac
-- shared_flag='-shared'
-- if test "$aix_use_runtimelinking" = yes; then
-- shared_flag="$shared_flag "'${wl}-G'
-- fi
-- else
-- # not using gcc
-- if test "$host_cpu" = ia64; then
-- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-- # chokes on -Wl,-G. The following line is correct:
-- shared_flag='-G'
-- else
-- if test "$aix_use_runtimelinking" = yes; then
-- shared_flag='${wl}-G'
-- else
-- shared_flag='${wl}-bM:SRE'
-- fi
-- fi
-- fi
-+# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
-+# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
-+# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-+# `yes'.
-+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
-+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
-+AC_ARG_ENABLE(fast-install,
-+changequote(<<, >>)dnl
-+<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
-+changequote([, ])dnl
-+[p=${PACKAGE-default}
-+case $enableval in
-+yes) enable_fast_install=yes ;;
-+no) enable_fast_install=no ;;
-+*)
-+ enable_fast_install=no
-+ # Look at the argument we got. We use all the common list separators.
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-+ for pkg in $enableval; do
-+ if test "X$pkg" = "X$p"; then
-+ enable_fast_install=yes
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ ;;
-+esac],
-+enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
-+])
-
-- # It seems that -bexpall does not export symbols beginning with
-- # underscore (_), so it is better to generate a list of symbols to export.
-- _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-- if test "$aix_use_runtimelinking" = yes; then
-- # Warning - without using the other runtime loading flags (-brtl),
-- # -berok will link without error, but may produce a broken library.
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
-- # Determine the default libpath from the value encoded in an empty executable.
-- _LT_AC_SYS_LIBPATH_AIX
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-- else
-- if test "$host_cpu" = ia64; then
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-- else
-- # Determine the default libpath from the value encoded in an empty executable.
-- _LT_AC_SYS_LIBPATH_AIX
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-- # Warning - without using the other run time loading flags,
-- # -berok will link without error, but may produce a broken library.
-- _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-- # -bexpall does not export symbols beginning with underscore (_)
-- _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-- # Exported symbols can be pulled into shared objects from archives
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
-- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-- # This is similar to how AIX traditionally builds its shared libraries.
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-- fi
-- fi
-- ;;
-+# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install
-+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+AC_ENABLE_FAST_INSTALL(no)])
-
-- amigaos*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-- # see comment about different semantics on the GNU ld section
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-+# AC_LIBTOOL_PICMODE - implement the --with-pic flag
-+# Usage: AC_LIBTOOL_PICMODE[(MODE)]
-+# Where MODE is either `yes' or `no'. If omitted, it defaults to
-+# `both'.
-+AC_DEFUN([AC_LIBTOOL_PICMODE],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+pic_mode=ifelse($#,1,$1,default)])
-
-- bsdi[[45]]*)
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-- ;;
-
-- cygwin* | mingw* | pw32*)
-- # When not using gcc, we currently assume that we are using
-- # Microsoft Visual C++.
-- # hardcode_libdir_flag_spec is actually meaningless, as there is
-- # no search path for DLLs.
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # Tell ltmain to make .dll files, not .so files.
-- shrext_cmds=".dll"
-- # FIXME: Setting linknames here is a bad hack.
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
-- # FIXME: Should let the user specify the lib program.
-- _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
-- _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
-- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-- ;;
-+# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library
-+AC_DEFUN([AC_PATH_TOOL_PREFIX],
-+[AC_MSG_CHECKING([for $1])
-+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-+[case $MAGIC_CMD in
-+ /*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-+ ;;
-+ ?:/*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-+ ;;
-+ *)
-+ ac_save_MAGIC_CMD="$MAGIC_CMD"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+dnl $ac_dummy forces splitting on constant user-supplied paths.
-+dnl POSIX.2 word splitting is done only on the output of word expansions,
-+dnl not every word. This closes a longstanding sh security hole.
-+ ac_dummy="ifelse([$2], , $PATH, [$2])"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$1; then
-+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-+ if test -n "$file_magic_test_file"; then
-+ case $deplibs_check_method in
-+ "file_magic "*)
-+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-+ egrep "$file_magic_regex" > /dev/null; then
-+ :
-+ else
-+ cat <<EOF 1>&2
-
-- darwin* | rhapsody*)
-- case $host_os in
-- rhapsody* | darwin1.[[012]])
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
-- ;;
-- *) # Darwin 1.3 on
-- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-- else
-- case ${MACOSX_DEPLOYMENT_TARGET} in
-- 10.[[012]])
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-- ;;
-- 10.*)
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
-- ;;
-- esac
-- fi
-- ;;
-- esac
-- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-- _LT_AC_TAGVAR(hardcode_direct, $1)=no
-- _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
-- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-- if test "$GCC" = yes ; then
-- output_verbose_link_cmd='echo'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- else
-- case $cc_basename in
-- xlc*)
-- output_verbose_link_cmd='echo'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
-- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- ;;
-- *)
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- esac
-- fi
-- ;;
-+*** Warning: the command libtool uses to detect shared libraries,
-+*** $file_magic_cmd, produces output that libtool cannot recognize.
-+*** The result is that libtool may fail to recognize shared libraries
-+*** as such. This will affect the creation of libtool libraries that
-+*** depend on shared libraries, but programs linked with such libtool
-+*** libraries will work regardless of this problem. Nevertheless, you
-+*** may want to report the problem to your system manager and/or to
-+*** bug-libtool@gnu.org
-
-- dgux*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- ;;
-+EOF
-+ fi ;;
-+ esac
-+ fi
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ MAGIC_CMD="$ac_save_MAGIC_CMD"
-+ ;;
-+esac])
-+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+if test -n "$MAGIC_CMD"; then
-+ AC_MSG_RESULT($MAGIC_CMD)
-+else
-+ AC_MSG_RESULT(no)
-+fi
-+])
-
-- freebsd1*)
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-
-- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-- # support. Future versions do this automatically, but an explicit c++rt0.o
-- # does not break anything, and helps significantly (at the cost of a little
-- # extra space).
-- freebsd2.2*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- ;;
-+# AC_PATH_MAGIC - find a file program which can recognise a shared library
-+AC_DEFUN([AC_PATH_MAGIC],
-+[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
-+AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH)
-+if test -z "$lt_cv_path_MAGIC_CMD"; then
-+ if test -n "$ac_tool_prefix"; then
-+ AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH)
-+ else
-+ MAGIC_CMD=:
-+ fi
-+fi
-+])
-
-- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-- freebsd2*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- ;;
-
-- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-- freebsd* | kfreebsd*-gnu | dragonfly*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+# AC_PROG_LD - find the path to the GNU or non-GNU linker
-+AC_DEFUN([AC_PROG_LD],
-+[AC_ARG_WITH(gnu-ld,
-+[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-+AC_REQUIRE([AC_PROG_CC])dnl
-+AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-+AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl
-+ac_prog=ld
-+if test "$GCC" = yes; then
-+ # Check if gcc -print-prog-name=ld gives a path.
-+ AC_MSG_CHECKING([for ld used by GCC])
-+ case $host in
-+ *-*-mingw*)
-+ # gcc leaves a trailing carriage return which upsets mingw
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-+ *)
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-+ esac
-+ case $ac_prog in
-+ # Accept absolute paths.
-+ [[\\/]]* | [[A-Za-z]]:[[\\/]]*)
-+ re_direlt='/[[^/]][[^/]]*/\.\./'
-+ # Canonicalize the path of ld
-+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
-+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
-+ done
-+ test -z "$LD" && LD="$ac_prog"
- ;;
--
-- hpux9*)
-- if test "$GCC" = yes; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ "")
-+ # If it fails, then pretend we aren't using GCC.
-+ ac_prog=ld
-+ ;;
-+ *)
-+ # If it is relative, then search for the first ld in PATH.
-+ with_gnu_ld=unknown
-+ ;;
-+ esac
-+elif test "$with_gnu_ld" = yes; then
-+ AC_MSG_CHECKING([for GNU ld])
-+else
-+ AC_MSG_CHECKING([for non-GNU ld])
-+fi
-+AC_CACHE_VAL(lt_cv_path_LD,
-+[if test -z "$LD"; then
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-+ lt_cv_path_LD="$ac_dir/$ac_prog"
-+ # Check to see if the program is GNU ld. I'd rather use --version,
-+ # but apparently some GNU ld's only accept -v.
-+ # Break only if it was the GNU/non-GNU ld that we prefer.
-+ if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
-+ test "$with_gnu_ld" != no && break
- else
-- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ test "$with_gnu_ld" != yes && break
- fi
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
--
-- # hardcode_minus_L: Not really in the search PATH,
-- # but as the default location of the library.
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-- ;;
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+else
-+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
-+fi])
-+LD="$lt_cv_path_LD"
-+if test -n "$LD"; then
-+ AC_MSG_RESULT($LD)
-+else
-+ AC_MSG_RESULT(no)
-+fi
-+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-+AC_PROG_LD_GNU
-+])
-
-- hpux10* | hpux11*)
-- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-- case $host_cpu in
-- hppa*64*|ia64*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- ;;
-- *)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-- ;;
-- esac
-- else
-- case $host_cpu in
-- hppa*64*|ia64*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
-- ;;
-- *)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-- ;;
-- esac
-- fi
-- if test "$with_gnu_ld" = no; then
-- case $host_cpu in
-- hppa*64*)
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-- _LT_AC_TAGVAR(hardcode_direct, $1)=no
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- ;;
-- ia64*)
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=no
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
--
-- # hardcode_minus_L: Not really in the search PATH,
-- # but as the default location of the library.
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-- ;;
-- *)
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--
-- # hardcode_minus_L: Not really in the search PATH,
-- # but as the default location of the library.
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-- ;;
-- esac
-- fi
-- ;;
-+# AC_PROG_LD_GNU -
-+AC_DEFUN([AC_PROG_LD_GNU],
-+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
-+ lt_cv_prog_gnu_ld=yes
-+else
-+ lt_cv_prog_gnu_ld=no
-+fi])
-+with_gnu_ld=$lt_cv_prog_gnu_ld
-+])
-
-- irix5* | irix6* | nonstopux*)
-- if test "$GCC" = yes; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- else
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
-- fi
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-- ;;
-+# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker
-+# -- PORTME Some linkers may need a different reload flag.
-+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
-+[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag,
-+[lt_cv_ld_reload_flag='-r'])
-+reload_flag=$lt_cv_ld_reload_flag
-+test -n "$reload_flag" && reload_flag=" $reload_flag"
-+])
-
-- netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-- else
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-- fi
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- ;;
-+# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies
-+# -- PORTME fill in with the dynamic library characteristics
-+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
-+[AC_CACHE_CHECK([how to recognise dependent libraries],
-+lt_cv_deplibs_check_method,
-+[lt_cv_file_magic_cmd='$MAGIC_CMD'
-+lt_cv_file_magic_test_file=
-+lt_cv_deplibs_check_method='unknown'
-+# Need to set the preceding variable on all platforms that support
-+# interlibrary dependencies.
-+# 'none' -- dependencies not supported.
-+# `unknown' -- same as none, but documents that we really don't know.
-+# 'pass_all' -- all dependencies passed with no checks.
-+# 'test_compile' -- check by making test program.
-+# 'file_magic [[regex]]' -- check by looking for files in library path
-+# which responds to the $file_magic_cmd with a given egrep regex.
-+# If you have `file' or equivalent on your system and you're not sure
-+# whether `pass_all' will *always* work, you probably want this one.
-
-- newsos6)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- ;;
-+case $host_os in
-+aix4* | aix5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-
-- openbsd*)
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-- else
-- case $host_os in
-- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-- ;;
-- *)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-- ;;
-- esac
-- fi
-- ;;
-+beos*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-
-- os2*)
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-- _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-- _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-- ;;
-+bsdi4*)
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-+ lt_cv_file_magic_cmd='/usr/bin/file -L'
-+ lt_cv_file_magic_test_file=/shlib/libc.so
-+ ;;
-
-- osf3*)
-- if test "$GCC" = yes; then
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- else
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- fi
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-- ;;
-+cygwin* | mingw* | pw32*)
-+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ lt_cv_file_magic_cmd='$OBJDUMP -f'
-+ ;;
-
-- osf4* | osf5*) # as osf3* with the addition of -msym flag
-- if test "$GCC" = yes; then
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-- else
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
-+darwin* | rhapsody*)
-+ lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
-+ lt_cv_file_magic_cmd='/usr/bin/file -L'
-+ case "$host_os" in
-+ rhapsody* | darwin1.[[012]])
-+ lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
-+ ;;
-+ *) # Darwin 1.3 on
-+ lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
-+ ;;
-+ esac
-+ ;;
-+
-+freebsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-+ case $host_cpu in
-+ i*86 )
-+ # Not sure whether the presence of OpenBSD here was a mistake.
-+ # Let's accept both of them until this is cleared up.
-+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ ;;
-+ esac
-+ else
-+ lt_cv_deplibs_check_method=pass_all
-+ fi
-+ ;;
-
-- # Both c and cxx compiler support -rpath directly
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-- fi
-- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-- ;;
-+gnu*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-
-- sco3.2v5*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-- runpath_var=LD_RUN_PATH
-- hardcode_runpath_var=yes
-- ;;
-+hpux10.20*|hpux11*)
-+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
-+ ;;
-
-- solaris*)
-- _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
-- if test "$GCC" = yes; then
-- wlarc='${wl}'
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-- else
-- wlarc=''
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-- fi
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- case $host_os in
-- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-- *)
-- # The compiler driver will combine linker options so we
-- # cannot just pass the convience library names through
-- # without $wl, iff we do not link with $LD.
-- # Luckily, gcc supports the same syntax we need for Sun Studio.
-- # Supported since Solaris 2.6 (maybe 2.5.1?)
-- case $wlarc in
-- '')
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
-- *)
-- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
-- esac ;;
-- esac
-- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-- ;;
-+irix5* | irix6* | nonstopux*)
-+ case $LD in
-+ *-32|*"-32 ") libmagic=32-bit;;
-+ *-n32|*"-n32 ") libmagic=N32;;
-+ *-64|*"-64 ") libmagic=64-bit;;
-+ *) libmagic=never-match;;
-+ esac
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-
-- sunos4*)
-- if test "x$host_vendor" = xsequent; then
-- # Use $CC to link under sequent, because it throws in some extra .o
-- # files that make .init and .fini sections work.
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-- else
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-- fi
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- ;;
-+# This must be Linux ELF.
-+linux-gnu*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-
-- sysv4)
-- case $host_vendor in
-- sni)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-- ;;
-- siemens)
-- ## LD is ld it makes a PLAMLIB
-- ## CC just makes a GrossModule.
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=no
-- ;;
-- motorola)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-- ;;
-- esac
-- runpath_var='LD_RUN_PATH'
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- ;;
-+netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-+ lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$'
-+ else
-+ lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$'
-+ fi
-+ ;;
-
-- sysv4.3*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-- ;;
-+newos6*)
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
-+ ;;
-
-- sysv4*MP*)
-- if test -d /usr/nec; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- runpath_var=LD_RUN_PATH
-- hardcode_runpath_var=yes
-- _LT_AC_TAGVAR(ld_shlibs, $1)=yes
-- fi
-- ;;
-+openbsd*)
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
-+ else
-+ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
-+ fi
-+ ;;
-
-- sysv4.2uw2*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-- _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- hardcode_runpath_var=yes
-- runpath_var=LD_RUN_PATH
-- ;;
-+osf3* | osf4* | osf5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-
-- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
-- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
-- if test "$GCC" = yes; then
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- else
-- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- fi
-- runpath_var='LD_RUN_PATH'
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- ;;
-+sco3.2v5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-
-- sysv5*)
-- _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
-- # $CC -shared without GNU ld will not create a library from C++
-- # object files and a static libstdc++, better avoid it by now
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- runpath_var='LD_RUN_PATH'
-- ;;
-+solaris*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-
-- uts4*)
-- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-- ;;
-+sysv5uw[[78]]* | sysv4*uw2*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-
-- *)
-- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-- ;;
-- esac
-- fi
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ case $host_vendor in
-+ motorola)
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-+ ;;
-+ ncr)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+ sequent)
-+ lt_cv_file_magic_cmd='/bin/file'
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-+ ;;
-+ sni)
-+ lt_cv_file_magic_cmd='/bin/file'
-+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-+ lt_cv_file_magic_test_file=/lib/libc.so
-+ ;;
-+ siemens)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+ esac
-+ ;;
-+esac
-+])
-+file_magic_cmd=$lt_cv_file_magic_cmd
-+deplibs_check_method=$lt_cv_deplibs_check_method
- ])
--AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
--test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
--variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
--if test "$GCC" = yes; then
-- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
--fi
-
--#
--# Do we need to explicitly link libc?
--#
--case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
--x|xyes)
-- # Assume -lc should be added
-- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
--
-- if test "$enable_shared" = yes && test "$GCC" = yes; then
-- case $_LT_AC_TAGVAR(archive_cmds, $1) in
-- *'~'*)
-- # FIXME: we may have to deal with multi-command sequences.
-- ;;
-- '$CC '*)
-- # Test whether the compiler implicitly links with -lc since on some
-- # systems, -lgcc has to come before -lc. If gcc already passes -lc
-- # to ld, don't add -lc before -lgcc.
-- AC_MSG_CHECKING([whether -lc should be explicitly linked in])
-- $rm conftest*
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
--
-- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-- soname=conftest
-- lib=conftest
-- libobjs=conftest.$ac_objext
-- deplibs=
-- wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
-- compiler_flags=-v
-- linker_flags=-v
-- verstring=
-- output_objdir=.
-- libname=conftest
-- lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=
-- if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
-- then
-- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-- else
-- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-- fi
-- _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-+# AC_PROG_NM - find the path to a BSD-compatible name lister
-+AC_DEFUN([AC_PROG_NM],
-+[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl
-+AC_MSG_CHECKING([for BSD-compatible nm])
-+AC_CACHE_VAL(lt_cv_path_NM,
-+[if test -n "$NM"; then
-+ # Let the user override the test.
-+ lt_cv_path_NM="$NM"
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
-+ test -z "$ac_dir" && ac_dir=.
-+ tmp_nm=$ac_dir/${ac_tool_prefix}nm
-+ if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
-+ # Check to see if the nm accepts a BSD-compat flag.
-+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-+ # nm: unknown option "B" ignored
-+ # Tru64's nm complains that /dev/null is an invalid object file
-+ if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
-+ lt_cv_path_NM="$tmp_nm -B"
-+ break
-+ elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-+ lt_cv_path_NM="$tmp_nm -p"
-+ break
- else
-- cat conftest.err 1>&5
-+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-+ continue # so that we can try to find one that supports BSD flags
- fi
-- $rm conftest*
-- AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
-- ;;
-- esac
-- fi
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
-+fi])
-+NM="$lt_cv_path_NM"
-+AC_MSG_RESULT([$NM])
-+])
-+
-+# AC_CHECK_LIBM - check for math library
-+AC_DEFUN([AC_CHECK_LIBM],
-+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+LIBM=
-+case $host in
-+*-*-beos* | *-*-cygwin* | *-*-pw32*)
-+ # These system don't have libm
-+ ;;
-+*-ncr-sysv4.3*)
-+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-+ AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
-+ ;;
-+*)
-+ AC_CHECK_LIB(m, main, LIBM="-lm")
- ;;
- esac
--])# AC_LIBTOOL_PROG_LD_SHLIBS
--
--
--# _LT_AC_FILE_LTDLL_C
--# -------------------
--# Be careful that the start marker always follows a newline.
--AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
--# /* ltdll.c starts here */
--# #define WIN32_LEAN_AND_MEAN
--# #include <windows.h>
--# #undef WIN32_LEAN_AND_MEAN
--# #include <stdio.h>
--#
--# #ifndef __CYGWIN__
--# # ifdef __CYGWIN32__
--# # define __CYGWIN__ __CYGWIN32__
--# # endif
--# #endif
--#
--# #ifdef __cplusplus
--# extern "C" {
--# #endif
--# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
--# #ifdef __cplusplus
--# }
--# #endif
--#
--# #ifdef __CYGWIN__
--# #include <cygwin/cygwin_dll.h>
--# DECLARE_CYGWIN_DLL( DllMain );
--# #endif
--# HINSTANCE __hDllInstance_base;
--#
--# BOOL APIENTRY
--# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
--# {
--# __hDllInstance_base = hInst;
--# return TRUE;
--# }
--# /* ltdll.c ends here */
--])# _LT_AC_FILE_LTDLL_C
--
-+])
-
--# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
--# ---------------------------------
--AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
-+# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
-+# the libltdl convenience library and LTDLINCL to the include flags for
-+# the libltdl header and adds --enable-ltdl-convenience to the
-+# configure arguments. Note that LIBLTDL and LTDLINCL are not
-+# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not
-+# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed
-+# with '${top_builddir}/' and LTDLINCL will be prefixed with
-+# '${top_srcdir}/' (note the single quotes!). If your package is not
-+# flat and you're not using automake, define top_builddir and
-+# top_srcdir appropriately in the Makefiles.
-+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+ case $enable_ltdl_convenience in
-+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
-+ "") enable_ltdl_convenience=yes
-+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
-+ esac
-+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
-+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-+ # For backwards non-gettext consistent compatibility...
-+ INCLTDL="$LTDLINCL"
-+])
-
-+# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
-+# the libltdl installable library and LTDLINCL to the include flags for
-+# the libltdl header and adds --enable-ltdl-install to the configure
-+# arguments. Note that LIBLTDL and LTDLINCL are not AC_SUBSTed, nor is
-+# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed
-+# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will
-+# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed
-+# with '${top_srcdir}/' (note the single quotes!). If your package is
-+# not flat and you're not using automake, define top_builddir and
-+# top_srcdir appropriately in the Makefiles.
-+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+ AC_CHECK_LIB(ltdl, main,
-+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
-+ [if test x"$enable_ltdl_install" = xno; then
-+ AC_MSG_WARN([libltdl not installed, but installation disabled])
-+ else
-+ enable_ltdl_install=yes
-+ fi
-+ ])
-+ if test x"$enable_ltdl_install" = x"yes"; then
-+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
-+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
-+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-+ else
-+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
-+ LIBLTDL="-lltdl"
-+ LTDLINCL=
-+ fi
-+ # For backwards non-gettext consistent compatibility...
-+ INCLTDL="$LTDLINCL"
-+])
-
- # old names
- AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
-@@ -6964,16 +4410,6 @@
- # This is just to silence aclocal about the macro not being used
- ifelse([AC_DISABLE_FAST_INSTALL])
-
--AC_DEFUN([LT_AC_PROG_GCJ],
--[AC_CHECK_TOOL(GCJ, gcj, no)
-- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-- AC_SUBST(GCJFLAGS)
--])
--
--AC_DEFUN([LT_AC_PROG_RC],
--[AC_CHECK_TOOL(RC, windres, no)
--])
--
- # NOTE: This macro has been submitted for inclusion into #
- # GNU Autoconf as AC_PROG_SED. When it is available in #
- # a released version of Autoconf we should remove this #
-@@ -6987,51 +4423,79 @@
- AC_CACHE_VAL(lt_cv_path_SED,
- [# Loop through the user's path and test for sed and gsed.
- # Then use that list of sed's as ones to test for truncation.
-+as_executable_p="test -f"
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
-- for lt_ac_prog in sed gsed; do
-+ for ac_prog in sed gsed; do
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-+ _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext"
- fi
- done
- done
- done
--lt_ac_max=0
--lt_ac_count=0
--# Add /usr/xpg4/bin/sed as it is typically found on Solaris
--# along with /bin/sed that truncates output.
--for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-- test ! -f $lt_ac_sed && continue
-- cat /dev/null > conftest.in
-- lt_ac_count=0
-- echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-- # Check for GNU sed and select it if it is found.
-- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-- lt_cv_path_SED=$lt_ac_sed
-- break
-- fi
-- while true; do
-- cat conftest.in conftest.in >conftest.tmp
-- mv conftest.tmp conftest.in
-- cp conftest.in conftest.nl
-- echo >>conftest.nl
-- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-- cmp -s conftest.out conftest.nl || break
-- # 10000 chars as input seems more than enough
-- test $lt_ac_count -gt 10 && break
-- lt_ac_count=`expr $lt_ac_count + 1`
-- if test $lt_ac_count -gt $lt_ac_max; then
-- lt_ac_max=$lt_ac_count
-- lt_cv_path_SED=$lt_ac_sed
-+
-+ # Create a temporary directory, and hook for its removal unless debugging.
-+$debug ||
-+{
-+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-+ trap '{ (exit 1); exit 1; }' 1 2 13 15
-+}
-+
-+# Create a (secure) tmp directory for tmp files.
-+: ${TMPDIR=/tmp}
-+{
-+ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` &&
-+ test -n "$tmp" && test -d "$tmp"
-+} ||
-+{
-+ tmp=$TMPDIR/sed$$-$RANDOM
-+ (umask 077 && mkdir $tmp)
-+} ||
-+{
-+ echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-+ { (exit 1); exit 1; }
-+}
-+ _max=0
-+ _count=0
-+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
-+ # along with /bin/sed that truncates output.
-+ for _sed in $_sed_list /usr/xpg4/bin/sed; do
-+ test ! -f ${_sed} && break
-+ cat /dev/null > "$tmp/sed.in"
-+ _count=0
-+ echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in"
-+ # Check for GNU sed and select it if it is found.
-+ if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then
-+ lt_cv_path_SED=${_sed}
-+ break
- fi
-+ while true; do
-+ cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp"
-+ mv "$tmp/sed.tmp" "$tmp/sed.in"
-+ cp "$tmp/sed.in" "$tmp/sed.nl"
-+ echo >>"$tmp/sed.nl"
-+ ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break
-+ cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break
-+ # 40000 chars as input seems more than enough
-+ test $_count -gt 10 && break
-+ _count=`expr $_count + 1`
-+ if test $_count -gt $_max; then
-+ _max=$_count
-+ lt_cv_path_SED=$_sed
-+ fi
-+ done
- done
--done
-+ rm -rf "$tmp"
- ])
--SED=$lt_cv_path_SED
-+if test "X$SED" != "X"; then
-+ lt_cv_path_SED=$SED
-+else
-+ SED=$lt_cv_path_SED
-+fi
- AC_MSG_RESULT([$SED])
- ])
-
-@@ -7898,7 +5362,11 @@
- AC_HELP_STRING([--with-curl-config=curl-config],[Use curl-config to find libcurl]),
- CURL_CONFIG="$withval", [AC_PATH_PROGS(CURL_CONFIG, [curl-config], "")])
-
--if test "x$curl_prefix" != "x" -a "x$curl_prefix" != "xyes"; then
-+curl_ok="yes"
-+
-+if test "x$curl_prefix" == "xno"; then
-+ curl_ok="no"
-+elif test "x$curl_prefix" != "x" -a "x$curl_prefix" != "xyes"; then
- CURL_LIBS="-L$curl_prefix/lib -lcurl"
- CURL_CFLAGS="-I$curl_prefix/include"
- elif test "x$CURL_CONFIG" != "x"; then
-@@ -7917,8 +5385,8 @@
- CURL_CFLAGS="-I$curl_prefix/include"
- fi
-
--curl_ok="yes"
--
-+if test "$curl_ok" = "yes"
-+then
- xt_curl_CPPFLAGS="$CPPFLAGS"
- xt_curl_LIBS="$LIBS"
- CPPFLAGS="$CPPFLAGS $CURL_CFLAGS"
-@@ -7928,16 +5396,13 @@
- dnl
- AC_CHECK_HEADERS([curl/curl.h],, curl_ok="no")
- AC_MSG_CHECKING(for libcurl)
--if test "$curl_ok" = "yes"
--then
-- AC_RUN_IFELSE(AC_LANG_SOURCE([
-+AC_LINK_IFELSE(AC_LANG_SOURCE([
- #include <curl/curl.h>
- int main()
- {
- return 0;
- }
- ]),,[curl_ok="no"])
--fi
- if test "$curl_ok" = "yes"; then
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_CURL, 1, [Define if you have libcurl.])
-@@ -7950,5 +5415,6 @@
- fi
- CPPFLAGS="$xt_curl_CPPFLAGS"
- LIBS="$xt_curl_LIBS"
-+fi
- ])
-
-diff -ruN icecast-2.3.0-old/configure icecast-2.3.0-new/configure
---- icecast-2.3.0-old/configure 2005-09-23 23:18:46.000000000 +0200
-+++ icecast-2.3.0-new/configure 2005-10-02 13:05:14.000000000 +0200
-@@ -243,6 +243,17 @@
- $as_unset CDPATH
-
-
-+# Find the correct PATH separator. Usually this is `:', but
-+# DJGPP uses `;' like DOS.
-+if test "X${PATH_SEPARATOR+set}" != Xset; then
-+ UNAME=${UNAME-`uname 2>/dev/null`}
-+ case X$UNAME in
-+ *-DOS) lt_cv_sys_path_separator=';' ;;
-+ *) lt_cv_sys_path_separator=':' ;;
-+ esac
-+ PATH_SEPARATOR=$lt_cv_sys_path_separator
-+fi
-+
-
- # Check that we are running under the correct shell.
- SHELL=${CONFIG_SHELL-/bin/sh}
-@@ -261,7 +272,7 @@
- elif test "X$1" = X--fallback-echo; then
- # Avoid inline document here, it may be left over
- :
--elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
-+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
- # Yippee, $echo works!
- :
- else
-@@ -273,22 +284,22 @@
- # used as fallback echo
- shift
- cat <<EOF
--$*
-+
- EOF
- exit 0
- fi
-
- # The HP-UX ksh and POSIX shell print the target directory to stdout
- # if CDPATH is set.
--(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-
- if test -z "$ECHO"; then
- if test "X${echo_test_string+set}" != Xset; then
- # find a string as large as possible, as long as the shell can cope with it
- for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-- if (echo_test_string=`eval $cmd`) 2>/dev/null &&
-- echo_test_string=`eval $cmd` &&
-+ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
-+ echo_test_string="`eval $cmd`" &&
- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
- then
- break
-@@ -307,9 +318,8 @@
- #
- # So, first we look for a working echo in the user's PATH.
-
-- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for dir in $PATH /usr/ucb; do
-- IFS="$lt_save_ifs"
- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-@@ -318,7 +328,7 @@
- break
- fi
- done
-- IFS="$lt_save_ifs"
-+ IFS="$save_ifs"
-
- if test "X$echo" = Xecho; then
- # We didn't find a better echo, so look for alternatives.
-@@ -392,11 +402,6 @@
-
-
-
--
--tagnames=${tagnames+${tagnames},}CXX
--
--tagnames=${tagnames+${tagnames},}F77
--
- # Name of the host.
- # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
- # so uname gets run too.
-@@ -465,7 +470,7 @@
- # 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 INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL XSLTCONFIG FGREP OGG_PREFIX OGG_LIBS OGG_CFLAGS OGG_LDFLAGS VORBIS_PREFIX VORBIS_CFLAGS VORBIS_LDFLAGS VORBIS_LIBS VORBISFILE_LIBS VORBISENC_LIBS THEORA THEORA_CFLAGS THEORA_LDFLAGS THEORA_LIBS SPEEX SPEEX_CFLAGS SPEEX_LDFLAGS SPEEX_LIBS acx_pthread_config PTHREAD_CC PTHREAD_LIBS PTHREAD_CFLAGS PTHREAD_CPPFLAGS CURL_CONFIG XIPH_CPPFLAGS XIPH_CFLAGS XIPH_LIBS XIPH_LDFLAGS LIBTOOL_DEPS DEBUG PROFILE ICECAST_OPTIONAL 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 datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE build build_cpu build_vendor build_os host host_cpu host_vendor host_os LN_S ECHO RANLIB ac_ct_RANLIB CPP EGREP LIBTOOL XSLTCONFIG FGREP OGG_PREFIX OGG_LIBS OGG_CFLAGS OGG_LDFLAGS VORBIS_PREFIX VORBIS_CFLAGS VORBIS_LDFLAGS VORBIS_LIBS VORBISFILE_LIBS VORBISENC_LIBS THEORA THEORA_CFLAGS THEORA_LDFLAGS THEORA_LIBS SPEEX SPEEX_CFLAGS SPEEX_LDFLAGS SPEEX_LIBS acx_pthread_config PTHREAD_CC PTHREAD_LIBS PTHREAD_CFLAGS PTHREAD_CPPFLAGS CURL_CONFIG XIPH_CPPFLAGS XIPH_CFLAGS XIPH_LIBS XIPH_LDFLAGS LIBTOOL_DEPS DEBUG PROFILE ICECAST_OPTIONAL LIBOBJS LTLIBOBJS'
- ac_subst_files=''
-
- # Initialize some variables set by options.
-@@ -926,26 +931,6 @@
- ac_env_CPP_value=$CPP
- ac_cv_env_CPP_set=${CPP+set}
- ac_cv_env_CPP_value=$CPP
--ac_env_CXX_set=${CXX+set}
--ac_env_CXX_value=$CXX
--ac_cv_env_CXX_set=${CXX+set}
--ac_cv_env_CXX_value=$CXX
--ac_env_CXXFLAGS_set=${CXXFLAGS+set}
--ac_env_CXXFLAGS_value=$CXXFLAGS
--ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
--ac_cv_env_CXXFLAGS_value=$CXXFLAGS
--ac_env_CXXCPP_set=${CXXCPP+set}
--ac_env_CXXCPP_value=$CXXCPP
--ac_cv_env_CXXCPP_set=${CXXCPP+set}
--ac_cv_env_CXXCPP_value=$CXXCPP
--ac_env_F77_set=${F77+set}
--ac_env_F77_value=$F77
--ac_cv_env_F77_set=${F77+set}
--ac_cv_env_F77_value=$F77
--ac_env_FFLAGS_set=${FFLAGS+set}
--ac_env_FFLAGS_value=$FFLAGS
--ac_cv_env_FFLAGS_set=${FFLAGS+set}
--ac_cv_env_FFLAGS_value=$FFLAGS
- ac_env_XSLTCONFIG_set=${XSLTCONFIG+set}
- ac_env_XSLTCONFIG_value=$XSLTCONFIG
- ac_cv_env_XSLTCONFIG_set=${XSLTCONFIG+set}
-@@ -1051,23 +1036,17 @@
- (and sometimes confusing) to the casual installer
- --disable-dependency-tracking Speeds up one-time builds
- --enable-dependency-tracking Do not reject slow dependency extractors
-- --enable-shared[=PKGS]
-- build shared libraries [default=yes]
-- --enable-static[=PKGS]
-- build static libraries [default=yes]
-- --enable-fast-install[=PKGS]
-- optimize for fast installation [default=yes]
-+ --enable-shared=PKGS build shared libraries default=yes
-+ --enable-static=PKGS build static libraries default=yes
-+ --enable-fast-install=PKGS optimize for fast installation default=yes
- --disable-libtool-lock avoid locking (might break parallel builds)
- --disable-yp disable YP directory support
-
- Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
-- --with-gnu-ld assume the C compiler uses GNU ld [default=no]
-- --with-pic try to use only PIC/non-PIC objects [default=use
-- both]
-- --with-tags[=TAGS]
-- include additional configurations [automatic]
-+ --with-gnu-ld assume the C compiler uses GNU ld default=no
-+ --with-pic try to use only PIC/non-PIC objects default=use both
- --with-xslt-config=PATH use xslt-config in PATH to find libxslt
- --with-ogg=PREFIX Prefix where libogg is installed (optional)
- --with-vorbis=PREFIX Prefix where libvorbis is installed (optional)
-@@ -1085,11 +1064,6 @@
- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
- headers in a nonstandard directory <include dir>
- CPP C preprocessor
-- CXX C++ compiler command
-- CXXFLAGS C++ compiler flags
-- CXXCPP C++ preprocessor
-- F77 Fortran 77 compiler command
-- FFLAGS Fortran 77 compiler flags
- XSLTCONFIG XSLT configuration program
- OGG_PREFIX path to ogg installation
- VORBIS_PREFIX
-@@ -1189,7 +1163,7 @@
- else
- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi
-- cd $ac_popdir
-+ cd "$ac_popdir"
- done
- fi
-
-@@ -2531,8 +2505,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -2590,8 +2563,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -2707,8 +2679,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -2762,8 +2733,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -2808,8 +2778,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -2853,8 +2822,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -3093,145 +3061,78 @@
- if test "${enable_shared+set}" = set; then
- enableval="$enable_shared"
- p=${PACKAGE-default}
-- case $enableval in
-- yes) enable_shared=yes ;;
-- no) enable_shared=no ;;
-- *)
-- enable_shared=no
-- # Look at the argument we got. We use all the common list separators.
-- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-- for pkg in $enableval; do
-- IFS="$lt_save_ifs"
-- if test "X$pkg" = "X$p"; then
-- enable_shared=yes
-- fi
-- done
-- IFS="$lt_save_ifs"
-- ;;
-- esac
-+case $enableval in
-+yes) enable_shared=yes ;;
-+no) enable_shared=no ;;
-+*)
-+ enable_shared=no
-+ # Look at the argument we got. We use all the common list separators.
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-+ for pkg in $enableval; do
-+ if test "X$pkg" = "X$p"; then
-+ enable_shared=yes
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ ;;
-+esac
- else
- enable_shared=yes
- fi;
--
- # Check whether --enable-static or --disable-static was given.
- if test "${enable_static+set}" = set; then
- enableval="$enable_static"
- p=${PACKAGE-default}
-- case $enableval in
-- yes) enable_static=yes ;;
-- no) enable_static=no ;;
-- *)
-- enable_static=no
-- # Look at the argument we got. We use all the common list separators.
-- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-- for pkg in $enableval; do
-- IFS="$lt_save_ifs"
-- if test "X$pkg" = "X$p"; then
-- enable_static=yes
-- fi
-- done
-- IFS="$lt_save_ifs"
-- ;;
-- esac
-+case $enableval in
-+yes) enable_static=yes ;;
-+no) enable_static=no ;;
-+*)
-+ enable_static=no
-+ # Look at the argument we got. We use all the common list separators.
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-+ for pkg in $enableval; do
-+ if test "X$pkg" = "X$p"; then
-+ enable_static=yes
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ ;;
-+esac
- else
- enable_static=yes
- fi;
--
- # Check whether --enable-fast-install or --disable-fast-install was given.
- if test "${enable_fast_install+set}" = set; then
- enableval="$enable_fast_install"
- p=${PACKAGE-default}
-- case $enableval in
-- yes) enable_fast_install=yes ;;
-- no) enable_fast_install=no ;;
-- *)
-- enable_fast_install=no
-- # Look at the argument we got. We use all the common list separators.
-- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-- for pkg in $enableval; do
-- IFS="$lt_save_ifs"
-- if test "X$pkg" = "X$p"; then
-- enable_fast_install=yes
-- fi
-- done
-- IFS="$lt_save_ifs"
-- ;;
-- esac
--else
-- enable_fast_install=yes
--fi;
--
--echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
--echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
--if test "${lt_cv_path_SED+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- # Loop through the user's path and test for sed and gsed.
--# Then use that list of sed's as ones to test for truncation.
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for lt_ac_prog in sed gsed; do
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-- fi
-- done
-- done
--done
--lt_ac_max=0
--lt_ac_count=0
--# Add /usr/xpg4/bin/sed as it is typically found on Solaris
--# along with /bin/sed that truncates output.
--for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-- test ! -f $lt_ac_sed && continue
-- cat /dev/null > conftest.in
-- lt_ac_count=0
-- echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-- # Check for GNU sed and select it if it is found.
-- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-- lt_cv_path_SED=$lt_ac_sed
-- break
-- fi
-- while true; do
-- cat conftest.in conftest.in >conftest.tmp
-- mv conftest.tmp conftest.in
-- cp conftest.in conftest.nl
-- echo >>conftest.nl
-- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-- cmp -s conftest.out conftest.nl || break
-- # 10000 chars as input seems more than enough
-- test $lt_ac_count -gt 10 && break
-- lt_ac_count=`expr $lt_ac_count + 1`
-- if test $lt_ac_count -gt $lt_ac_max; then
-- lt_ac_max=$lt_ac_count
-- lt_cv_path_SED=$lt_ac_sed
-+case $enableval in
-+yes) enable_fast_install=yes ;;
-+no) enable_fast_install=no ;;
-+*)
-+ enable_fast_install=no
-+ # Look at the argument we got. We use all the common list separators.
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-+ for pkg in $enableval; do
-+ if test "X$pkg" = "X$p"; then
-+ enable_fast_install=yes
- fi
- done
--done
--
--fi
--
--SED=$lt_cv_path_SED
--echo "$as_me:$LINENO: result: $SED" >&5
--echo "${ECHO_T}$SED" >&6
--
--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 $ECHO_N "(cached) $ECHO_C" >&6
-+ IFS="$ac_save_ifs"
-+ ;;
-+esac
- 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'
-- fi
-+ enable_fast_install=yes
-+fi;
-+# Find the correct PATH separator. Usually this is `:', but
-+# DJGPP uses `;' like DOS.
-+if test "X${PATH_SEPARATOR+set}" != Xset; then
-+ UNAME=${UNAME-`uname 2>/dev/null`}
-+ case X$UNAME in
-+ *-DOS) lt_cv_sys_path_separator=';' ;;
-+ *) lt_cv_sys_path_separator=':' ;;
-+ esac
-+ PATH_SEPARATOR=$lt_cv_sys_path_separator
- fi
--echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
--echo "${ECHO_T}$ac_cv_prog_egrep" >&6
-- EGREP=$ac_cv_prog_egrep
--
-
-
- # Check whether --with-gnu-ld or --without-gnu-ld was given.
-@@ -3244,8 +3145,8 @@
- 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 $CC" >&5
--echo $ECHO_N "checking for ld used by $CC... $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
-@@ -3255,12 +3156,12 @@
- esac
- case $ac_prog in
- # Accept absolute paths.
-- [\\/]* | ?:[\\/]*)
-+ [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
-- # Canonicalize the pathname of ld
-- ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
-+ # Canonicalize the path of ld
-+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-- ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
-+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
-@@ -3284,26 +3185,22 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- if test -z "$LD"; then
-- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
-- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- lt_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
-- # but apparently some variants of GNU ld only accept -v.
-+ # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
-- case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-- *GNU* | *'with BFD'*)
-+ if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
- test "$with_gnu_ld" != no && break
-- ;;
-- *)
-+ else
- test "$with_gnu_ld" != yes && break
-- ;;
-- esac
-+ fi
- fi
- done
-- IFS="$lt_save_ifs"
-+ IFS="$ac_save_ifs"
- else
- lt_cv_path_LD="$LD" # Let the user override the test with a path.
- fi
-@@ -3325,15 +3222,12 @@
- if test "${lt_cv_prog_gnu_ld+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- # I'd rather use --version here, but apparently some GNU lds only accept -v.
--case `$LD -v 2>&1 </dev/null` in
--*GNU* | *'with BFD'*)
-+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
-+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- lt_cv_prog_gnu_ld=yes
-- ;;
--*)
-+else
- lt_cv_prog_gnu_ld=no
-- ;;
--esac
-+fi
- fi
- echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
- echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
-@@ -3350,20 +3244,7 @@
- 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
--case $reload_flag in
--"" | " "*) ;;
--*) reload_flag=" $reload_flag" ;;
--esac
--reload_cmds='$LD$reload_flag -o $output$reload_objs'
--case $host_os in
-- darwin*)
-- if test "$GCC" = yes; then
-- reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
-- else
-- reload_cmds='$LD$reload_flag -o $output$reload_objs'
-- fi
-- ;;
--esac
-+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
-@@ -3374,42 +3255,120 @@
- # Let the user override the test.
- lt_cv_path_NM="$NM"
- else
-- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
-- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
-- tmp_nm="$ac_dir/${ac_tool_prefix}nm"
-- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-+ tmp_nm=$ac_dir/${ac_tool_prefix}nm
-+ if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
- # Tru64's nm complains that /dev/null is an invalid object file
-- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-- */dev/null* | *'Invalid file or object type'*)
-+ if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
- lt_cv_path_NM="$tmp_nm -B"
- break
-- ;;
-- *)
-- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-- */dev/null*)
-- lt_cv_path_NM="$tmp_nm -p"
-- break
-- ;;
-- *)
-- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-- continue # so that we can try to find one that supports BSD flags
-- ;;
-- esac
-- esac
-+ elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-+ lt_cv_path_NM="$tmp_nm -p"
-+ break
-+ else
-+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-+ continue # so that we can try to find one that supports BSD flags
-+ fi
- fi
- done
-- IFS="$lt_save_ifs"
-+ IFS="$ac_save_ifs"
- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
- fi
- fi
--echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
--echo "${ECHO_T}$lt_cv_path_NM" >&6
-+
- NM="$lt_cv_path_NM"
-+echo "$as_me:$LINENO: result: $NM" >&5
-+echo "${ECHO_T}$NM" >&6
-+
-+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
-+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
-+if test "${lt_cv_path_SED+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Loop through the user's path and test for sed and gsed.
-+# Then use that list of sed's as ones to test for truncation.
-+as_executable_p="test -f"
-+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_prog in sed gsed; do
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-+ _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext"
-+ fi
-+ done
-+ done
-+done
-+
-+ # Create a temporary directory, and hook for its removal unless debugging.
-+$debug ||
-+{
-+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-+ trap '{ (exit 1); exit 1; }' 1 2 13 15
-+}
-+
-+# Create a (secure) tmp directory for tmp files.
-+: ${TMPDIR=/tmp}
-+{
-+ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` &&
-+ test -n "$tmp" && test -d "$tmp"
-+} ||
-+{
-+ tmp=$TMPDIR/sed$$-$RANDOM
-+ (umask 077 && mkdir $tmp)
-+} ||
-+{
-+ echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-+ { (exit 1); exit 1; }
-+}
-+ _max=0
-+ _count=0
-+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
-+ # along with /bin/sed that truncates output.
-+ for _sed in $_sed_list /usr/xpg4/bin/sed; do
-+ test ! -f ${_sed} && break
-+ cat /dev/null > "$tmp/sed.in"
-+ _count=0
-+ echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in"
-+ # Check for GNU sed and select it if it is found.
-+ if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then
-+ lt_cv_path_SED=${_sed}
-+ break
-+ fi
-+ while true; do
-+ cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp"
-+ mv "$tmp/sed.tmp" "$tmp/sed.in"
-+ cp "$tmp/sed.in" "$tmp/sed.nl"
-+ echo >>"$tmp/sed.nl"
-+ ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break
-+ cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break
-+ # 40000 chars as input seems more than enough
-+ test $_count -gt 10 && break
-+ _count=`expr $_count + 1`
-+ if test $_count -gt $_max; then
-+ _max=$_count
-+ lt_cv_path_SED=$_sed
-+ fi
-+ done
-+ done
-+ rm -rf "$tmp"
-+
-+fi
-+
-+if test "X$SED" != "X"; then
-+ lt_cv_path_SED=$SED
-+else
-+ SED=$lt_cv_path_SED
-+fi
-+echo "$as_me:$LINENO: result: $SED" >&5
-+echo "${ECHO_T}$SED" >&6
-
- echo "$as_me:$LINENO: checking whether ln -s works" >&5
- echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
-@@ -3437,7 +3396,7 @@
- # 'pass_all' -- all dependencies passed with no checks.
- # 'test_compile' -- check by making test program.
- # 'file_magic [[regex]]' -- check by looking for files in library path
--# which responds to the $file_magic_cmd with a given extended regex.
-+# which responds to the $file_magic_cmd with a given egrep regex.
- # If you have `file' or equivalent on your system and you're not sure
- # whether `pass_all' will *always* work, you probably want this one.
-
-@@ -3450,36 +3409,37 @@
- lt_cv_deplibs_check_method=pass_all
- ;;
-
--bsdi[45]*)
-+bsdi4*)
- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
- lt_cv_file_magic_cmd='/usr/bin/file -L'
- lt_cv_file_magic_test_file=/shlib/libc.so
- ;;
-
--cygwin*)
-- # func_win32_libid is a shell function defined in ltmain.sh
-- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-- lt_cv_file_magic_cmd='func_win32_libid'
-- ;;
--
--mingw* | pw32*)
-- # Base MSYS/MinGW do not provide the 'file' command needed by
-- # func_win32_libid shell function, so use a weaker test based on 'objdump'.
-+cygwin* | mingw* | pw32*)
- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- ;;
-
- darwin* | rhapsody*)
-- lt_cv_deplibs_check_method=pass_all
-+ lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
-+ lt_cv_file_magic_cmd='/usr/bin/file -L'
-+ case "$host_os" in
-+ rhapsody* | darwin1.[012])
-+ lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
-+ ;;
-+ *) # Darwin 1.3 on
-+ lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
-+ ;;
-+ esac
- ;;
-
--freebsd* | kfreebsd*-gnu | dragonfly*)
-+freebsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
- case $host_cpu in
- i*86 )
- # Not sure whether the presence of OpenBSD here was a mistake.
- # Let's accept both of them until this is cleared up.
-- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
- ;;
-@@ -3493,22 +3453,10 @@
- lt_cv_deplibs_check_method=pass_all
- ;;
-
--hpux10.20* | hpux11*)
-+hpux10.20*|hpux11*)
-+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
- lt_cv_file_magic_cmd=/usr/bin/file
-- case $host_cpu in
-- ia64*)
-- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-- ;;
-- hppa*64*)
-- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
-- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-- ;;
-- *)
-- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
-- lt_cv_file_magic_test_file=/usr/lib/libc.sl
-- ;;
-- esac
-+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
- ;;
-
- irix5* | irix6* | nonstopux*)
-@@ -3522,15 +3470,15 @@
- ;;
-
- # This must be Linux ELF.
--linux*)
-+linux-gnu*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
--netbsd*)
-+netbsd* | knetbsd*-gnu)
- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
- else
-- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
- fi
- ;;
-
-@@ -3540,15 +3488,13 @@
- lt_cv_file_magic_test_file=/usr/lib/libnls.so
- ;;
-
--nto-qnx*)
-- lt_cv_deplibs_check_method=unknown
-- ;;
--
- openbsd*)
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
- else
-- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-+ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
- fi
- ;;
-
-@@ -3564,6 +3510,10 @@
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-+sysv5uw[78]* | sysv4*uw2*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- case $host_vendor in
- motorola)
-@@ -3587,10 +3537,6 @@
- ;;
- esac
- ;;
--
--sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
- esac
-
- fi
-@@ -3598,210 +3544,211 @@
- 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
--test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
--# If no C compiler was specified, use CC.
--LTCC=${LTCC-"$CC"}
-
--# Allow CC to be a program name with arguments.
--compiler=$CC
-
-
--# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
--if test "${enable_libtool_lock+set}" = set; then
-- enableval="$enable_libtool_lock"
-
--fi;
--test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-+# Check for command to grab the raw symbol name followed by C symbol from nm.
-+echo "$as_me:$LINENO: checking command to parse $NM output" >&5
-+echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6
-+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-
--# Some flags need to be propagated to the compiler or linker for good
--# libtool support.
--case $host in
--ia64-*-hpux*)
-- # Find out which ABI we are using.
-- echo 'int i;' > conftest.$ac_ext
-- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; then
-- case `/usr/bin/file conftest.$ac_objext` in
-- *ELF-32*)
-- HPUX_IA64_MODE="32"
-- ;;
-- *ELF-64*)
-- HPUX_IA64_MODE="64"
-- ;;
-- esac
-- fi
-- rm -rf conftest*
-- ;;
--*-*-irix6*)
-- # Find out which ABI we are using.
-- echo '#line 3644 "configure"' > conftest.$ac_ext
-- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; then
-- if test "$lt_cv_prog_gnu_ld" = yes; then
-- case `/usr/bin/file conftest.$ac_objext` in
-- *32-bit*)
-- LD="${LD-ld} -melf32bsmip"
-- ;;
-- *N32*)
-- LD="${LD-ld} -melf32bmipn32"
-- ;;
-- *64-bit*)
-- LD="${LD-ld} -melf64bmip"
-- ;;
-- esac
-- else
-- case `/usr/bin/file conftest.$ac_objext` in
-- *32-bit*)
-- LD="${LD-ld} -32"
-- ;;
-- *N32*)
-- LD="${LD-ld} -n32"
-- ;;
-- *64-bit*)
-- LD="${LD-ld} -64"
-- ;;
-- esac
-- fi
-- fi
-- rm -rf conftest*
-- ;;
-+# These are sane defaults that work on at least a few old systems.
-+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-
--x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
-- # Find out which ABI we are using.
-- echo 'int i;' > conftest.$ac_ext
-- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; then
-- case `/usr/bin/file conftest.o` in
-- *32-bit*)
-- case $host in
-- x86_64-*linux*)
-- LD="${LD-ld} -m elf_i386"
-- ;;
-- ppc64-*linux*|powerpc64-*linux*)
-- LD="${LD-ld} -m elf32ppclinux"
-- ;;
-- s390x-*linux*)
-- LD="${LD-ld} -m elf_s390"
-- ;;
-- sparc64-*linux*)
-- LD="${LD-ld} -m elf32_sparc"
-- ;;
-- esac
-- ;;
-- *64-bit*)
-- case $host in
-- x86_64-*linux*)
-- LD="${LD-ld} -m elf_x86_64"
-- ;;
-- ppc*-*linux*|powerpc*-*linux*)
-- LD="${LD-ld} -m elf64ppc"
-- ;;
-- s390*-*linux*)
-- LD="${LD-ld} -m elf64_s390"
-- ;;
-- sparc*-*linux*)
-- LD="${LD-ld} -m elf64_sparc"
-- ;;
-- esac
-- ;;
-- esac
-- fi
-- rm -rf conftest*
-+# Character class describing NM global symbol codes.
-+symcode='[BCDEGRST]'
-+
-+# Regexp to match symbols that can be accessed directly from C.
-+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-+
-+# Transform the above into a raw symbol and a C symbol.
-+symxfrm='\1 \2\3 \3'
-+
-+# Transform an extracted symbol line into a proper C declaration
-+lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
-+
-+# Transform an extracted symbol line into symbol name and symbol address
-+lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+
-+# Define system-specific variables.
-+case $host_os in
-+aix*)
-+ symcode='[BCDT]'
-+ ;;
-+cygwin* | mingw* | pw32*)
-+ symcode='[ABCDGISTW]'
-+ ;;
-+hpux*) # Its linker distinguishes data from code symbols
-+ lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-+ lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+ ;;
-+irix* | nonstopux*)
-+ symcode='[BCDEGRST]'
-+ ;;
-+osf*)
-+ symcode='[BCDEGQRST]'
-+ ;;
-+solaris* | sysv5*)
-+ symcode='[BDT]'
-+ ;;
-+sysv4)
-+ symcode='[DFNSTU]'
- ;;
-+esac
-
--*-*-sco3.2v5*)
-- # 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
--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'
--ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
--ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+# Handle CRLF in mingw tool chain
-+opt_cr=
-+case $host_os in
-+mingw*)
-+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-+ ;;
-+esac
-
-- cat >conftest.$ac_ext <<_ACEOF
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+# If we're using GNU nm, then use its standard symbol codes.
-+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
-+ symcode='[ABCDGISTW]'
-+fi
-
--int
--main ()
--{
-+# Try without a prefix undercore, then with it.
-+for ac_symprfx in "" "_"; do
-
-- ;
-- return 0;
-+ # Write the raw and C identifiers.
-+lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
-+
-+ # Check to see that the pipe works correctly.
-+ pipe_works=no
-+ rm -f conftest*
-+ cat > conftest.$ac_ext <<EOF
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+char nm_test_var;
-+void nm_test_func(){}
-+#ifdef __cplusplus
- }
--_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
-+#endif
-+int main(){nm_test_var='a';nm_test_func();return(0);}
-+EOF
-+
-+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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
-+ (exit $ac_status); }; then
-+ # Now try to grab the symbols.
-+ nlist=conftest.nm
-+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
-+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-- lt_cv_cc_needs_belf=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
-+ (exit $ac_status); } && test -s "$nlist"; then
-+ # Try sorting and uniquifying the output.
-+ if sort "$nlist" | uniq > "$nlist"T; then
-+ mv -f "$nlist"T "$nlist"
-+ else
-+ rm -f "$nlist"T
-+ fi
-
--lt_cv_cc_needs_belf=no
--fi
--rm -f conftest.err conftest.$ac_objext \
-- conftest$ac_exeext 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
-+ # Make sure that we snagged all the symbols we need.
-+ if egrep ' nm_test_var$' "$nlist" >/dev/null; then
-+ if egrep ' nm_test_func$' "$nlist" >/dev/null; then
-+ cat <<EOF > conftest.$ac_ext
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
--fi
--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"
-+EOF
-+ # Now generate the symbol file.
-+ eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
-+
-+ cat <<EOF >> conftest.$ac_ext
-+#if defined (__STDC__) && __STDC__
-+# define lt_ptr void *
-+#else
-+# define lt_ptr char *
-+# define const
-+#endif
-+
-+/* The mapping between symbol names and symbols. */
-+const struct {
-+ const char *name;
-+ lt_ptr address;
-+}
-+lt_preloaded_symbols[] =
-+{
-+EOF
-+ sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
-+ cat <<\EOF >> conftest.$ac_ext
-+ {0, (lt_ptr) 0}
-+};
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+EOF
-+ # Now try linking the two files.
-+ mv conftest.$ac_objext conftstm.$ac_objext
-+ save_LIBS="$LIBS"
-+ save_CFLAGS="$CFLAGS"
-+ LIBS="conftstm.$ac_objext"
-+ CFLAGS="$CFLAGS$no_builtin_flag"
-+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && test -s conftest$ac_exeext; then
-+ pipe_works=yes
-+ fi
-+ LIBS="$save_LIBS"
-+ CFLAGS="$save_CFLAGS"
-+ else
-+ echo "cannot find nm_test_func in $nlist" >&5
-+ fi
-+ else
-+ echo "cannot find nm_test_var in $nlist" >&5
-+ fi
-+ else
-+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-+ fi
-+ else
-+ echo "$progname: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
- fi
-- ;;
-+ rm -f conftest* conftst*
-
--esac
-+ # Do not use the global_symbol_pipe unless it works.
-+ if test "$pipe_works" = yes; then
-+ break
-+ else
-+ lt_cv_sys_global_symbol_pipe=
-+ fi
-+done
-
--need_locks="$enable_libtool_lock"
-+fi
-
-+global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
-+if test -z "$lt_cv_sys_global_symbol_pipe"; then
-+ global_symbol_to_cdecl=
-+ global_symbol_to_c_name_address=
-+else
-+ global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
-+ global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
-+fi
-+if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
-+then
-+ echo "$as_me:$LINENO: result: failed" >&5
-+echo "${ECHO_T}failed" >&6
-+else
-+ echo "$as_me:$LINENO: result: ok" >&5
-+echo "${ECHO_T}ok" >&6
-+fi
-
- ac_ext=c
- ac_cpp='$CPP $CPPFLAGS'
-@@ -4038,6 +3985,21 @@
- 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 $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'
-+ 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: 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
-@@ -4071,8 +4033,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4242,8 +4203,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4310,8 +4270,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4426,65 +4385,160 @@
-
- done
-
--ac_ext=cc
--ac_cpp='$CXXCPP $CPPFLAGS'
--ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
--ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
--ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
--if test -n "$ac_tool_prefix"; then
-- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
-- 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
--if test "${ac_cv_prog_CXX+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$CXX"; then
-- ac_cv_prog_CXX="$CXX" # 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_CXX="$ac_tool_prefix$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
-
--fi
--fi
--CXX=$ac_cv_prog_CXX
--if test -n "$CXX"; then
-- echo "$as_me:$LINENO: result: $CXX" >&5
--echo "${ECHO_T}$CXX" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
-
-- test -n "$CXX" && break
-- done
--fi
--if test -z "$CXX"; then
-- ac_ct_CXX=$CXX
-- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
--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
--if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+
-+
-+
-+# Only perform the check for file, if the check method requires it
-+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
-+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $MAGIC_CMD in
-+ /*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-+ ;;
-+ ?:/*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-+ ;;
-+ *)
-+ ac_save_MAGIC_CMD="$MAGIC_CMD"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+ ac_dummy="/usr/bin:$PATH"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/${ac_tool_prefix}file; then
-+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-+ if test -n "$file_magic_test_file"; then
-+ case $deplibs_check_method in
-+ "file_magic "*)
-+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-+ egrep "$file_magic_regex" > /dev/null; then
-+ :
-+ else
-+ cat <<EOF 1>&2
-+
-+*** Warning: the command libtool uses to detect shared libraries,
-+*** $file_magic_cmd, produces output that libtool cannot recognize.
-+*** The result is that libtool may fail to recognize shared libraries
-+*** as such. This will affect the creation of libtool libraries that
-+*** depend on shared libraries, but programs linked with such libtool
-+*** libraries will work regardless of this problem. Nevertheless, you
-+*** may want to report the problem to your system manager and/or to
-+*** bug-libtool@gnu.org
-+
-+EOF
-+ fi ;;
-+ esac
-+ fi
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ MAGIC_CMD="$ac_save_MAGIC_CMD"
-+ ;;
-+esac
-+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
-+else
-+ 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
-+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $MAGIC_CMD in
-+ /*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-+ ;;
-+ ?:/*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-+ ;;
-+ *)
-+ ac_save_MAGIC_CMD="$MAGIC_CMD"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+ ac_dummy="/usr/bin:$PATH"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/file; then
-+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
-+ if test -n "$file_magic_test_file"; then
-+ case $deplibs_check_method in
-+ "file_magic "*)
-+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-+ egrep "$file_magic_regex" > /dev/null; then
-+ :
-+ else
-+ cat <<EOF 1>&2
-+
-+*** Warning: the command libtool uses to detect shared libraries,
-+*** $file_magic_cmd, produces output that libtool cannot recognize.
-+*** The result is that libtool may fail to recognize shared libraries
-+*** as such. This will affect the creation of libtool libraries that
-+*** depend on shared libraries, but programs linked with such libtool
-+*** libraries will work regardless of this problem. Nevertheless, you
-+*** may want to report the problem to your system manager and/or to
-+*** bug-libtool@gnu.org
-+
-+EOF
-+ fi ;;
-+ esac
-+ fi
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ MAGIC_CMD="$ac_save_MAGIC_CMD"
-+ ;;
-+esac
-+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
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ else
-+ MAGIC_CMD=:
-+ fi
-+fi
-+
-+ fi
-+ ;;
-+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
-+if test "${ac_cv_prog_RANLIB+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- if test -n "$ac_ct_CXX"; then
-- ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-+ if test -n "$RANLIB"; then
-+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
-@@ -4493,7 +4547,7 @@
- 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_CXX="$ac_prog"
-+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -4502,12050 +4556,751 @@
-
- fi
- fi
--ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
--if test -n "$ac_ct_CXX"; then
-- echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
--echo "${ECHO_T}$ac_ct_CXX" >&6
-+RANLIB=$ac_cv_prog_RANLIB
-+if test -n "$RANLIB"; then
-+ 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
- fi
-
-- test -n "$ac_ct_CXX" && break
--done
--test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
--
-- CXX=$ac_ct_CXX
- fi
--
--
--# Provide some information about the compiler.
--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_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_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_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
--if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
-+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
-+if test "${ac_cv_prog_ac_ct_RANLIB+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. */
--
--int
--main ()
--{
--#ifndef __GNUC__
-- choke me
--#endif
--
-- ;
-- 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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_compiler_gnu=yes
-+ if test -n "$ac_ct_RANLIB"; then
-+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
- else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
-+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_RANLIB="ranlib"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-
--ac_compiler_gnu=no
-+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
--
- fi
--echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
--echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
--GXX=`test $ac_compiler_gnu = yes && echo yes`
--ac_test_CXXFLAGS=${CXXFLAGS+set}
--ac_save_CXXFLAGS=$CXXFLAGS
--CXXFLAGS="-g"
--echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
--echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
--if test "${ac_cv_prog_cxx_g+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+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
- else
-- cat >conftest.$ac_ext <<_ACEOF
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-
--int
--main ()
--{
-+ RANLIB=$ac_ct_RANLIB
-+else
-+ RANLIB="$ac_cv_prog_RANLIB"
-+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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_cxx_g=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_prog_cxx_g=no
--fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--fi
--echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
--echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
--if test "$ac_test_CXXFLAGS" = set; then
-- CXXFLAGS=$ac_save_CXXFLAGS
--elif test $ac_cv_prog_cxx_g = yes; then
-- if test "$GXX" = yes; then
-- CXXFLAGS="-g -O2"
-- else
-- CXXFLAGS="-g"
-- fi
--else
-- if test "$GXX" = yes; then
-- CXXFLAGS="-O2"
-- else
-- CXXFLAGS=
-- fi
--fi
--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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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
--
--ac_ext=cc
--ac_cpp='$CXXCPP $CPPFLAGS'
--ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
--ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
--ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
--
--depcc="$CXX" am_compiler_list=
--
--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_CXX_dependencies_compiler_type+set}" = set; 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
-+if test "${ac_cv_prog_STRIP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-- # We make a subdir and do the tests there. Otherwise we can end up
-- # making bogus files that we don't know about and never remove. For
-- # instance it was reported that on HP-UX the gcc test will end up
-- # making a dummy file named `D' -- because `-MD' means `put the output
-- # in D'.
-- mkdir conftest.dir
-- # Copy depcomp to subdir because otherwise we won't find it if we're
-- # using a relative directory.
-- cp "$am_depcomp" conftest.dir
-- cd conftest.dir
--
-- am_cv_CXX_dependencies_compiler_type=none
-- if test "$am_compiler_list" = ""; then
-- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-- fi
-- for depmode in $am_compiler_list; do
-- # We need to recreate these files for each test, as the compiler may
-- # overwrite some of them when testing with obscure command lines.
-- # This happens at least with the AIX C compiler.
-- echo '#include "conftest.h"' > conftest.c
-- echo 'int i;' > conftest.h
-- echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf
--
-- case $depmode in
-- nosideeffect)
-- # after this tag, mechanisms are not by side-effect, so they'll
-- # only be used when explicitly requested
-- if test "x$enable_dependency_tracking" = xyes; then
-- continue
-- else
-- break
-- fi
-- ;;
-- none) break ;;
-- esac
-- # We check with `-c' and `-o' for the sake of the "dashmstdout"
-- # mode. It turns out that the SunPro C++ compiler does not properly
-- # handle `-M -o', and we need to detect this.
-- if depmode=$depmode \
-- source=conftest.c object=conftest.o \
-- depfile=conftest.Po tmpdepfile=conftest.TPo \
-- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 &&
-- grep conftest.h conftest.Po > /dev/null 2>&1 &&
-- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-- am_cv_CXX_dependencies_compiler_type=$depmode
-- break
-- fi
-- done
--
-- cd ..
-- rm -rf conftest.dir
--else
-- am_cv_CXX_dependencies_compiler_type=none
--fi
--
--fi
--echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
--echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
--CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
--
--
--
--
--if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-- (test "X$CXX" != "Xg++"))) ; then
-- ac_ext=cc
--ac_cpp='$CXXCPP $CPPFLAGS'
--ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
--ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
--ac_compiler_gnu=$ac_cv_cxx_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
--if test -z "$CXXCPP"; then
-- if test "${ac_cv_prog_CXXCPP+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ if test -n "$STRIP"; then
-+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
- else
-- # Double quotes because CXXCPP needs to be expanded
-- for CXXCPP in "$CXX -E" "/lib/cpp"
-- do
-- ac_preproc_ok=false
--for ac_cxx_preproc_warn_flag in '' yes
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
- do
-- # Use a header file that comes with gcc, so configuring glibc
-- # with a fresh cross-compiler works.
-- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-- # <limits.h> exists even on freestanding compilers.
-- # On the NeXT, cc -E runs the code through the compiler's parser,
-- # not just through cpp. "Syntax error" is here to catch this case.
-- cat >conftest.$ac_ext <<_ACEOF
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--#ifdef __STDC__
--# include <limits.h>
--#else
--# include <assert.h>
--#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
-- ac_status=$?
-- 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_cxx_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-- else
-- ac_cpp_err=
-+ 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_STRIP="${ac_tool_prefix}strip"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-- :
--else
-- echo "$as_me: failed program was:" >&5
--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
-- # can be detected and how.
-- cat >conftest.$ac_ext <<_ACEOF
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--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
-- ac_status=$?
-- 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_cxx_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-- # Broken: success on invalid input.
--continue
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-- # Passes both tests.
--ac_preproc_ok=:
--break
--fi
--rm -f conftest.err conftest.$ac_ext
--
--done
--# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
--rm -f conftest.err conftest.$ac_ext
--if $ac_preproc_ok; then
-- break
--fi
--
-- done
-- ac_cv_prog_CXXCPP=$CXXCPP
--
--fi
-- CXXCPP=$ac_cv_prog_CXXCPP
--else
-- ac_cv_prog_CXXCPP=$CXXCPP
--fi
--echo "$as_me:$LINENO: result: $CXXCPP" >&5
--echo "${ECHO_T}$CXXCPP" >&6
--ac_preproc_ok=false
--for ac_cxx_preproc_warn_flag in '' yes
--do
-- # Use a header file that comes with gcc, so configuring glibc
-- # with a fresh cross-compiler works.
-- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-- # <limits.h> exists even on freestanding compilers.
-- # On the NeXT, cc -E runs the code through the compiler's parser,
-- # not just through cpp. "Syntax error" is here to catch this case.
-- cat >conftest.$ac_ext <<_ACEOF
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--#ifdef __STDC__
--# include <limits.h>
--#else
--# include <assert.h>
--#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
-- ac_status=$?
-- 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_cxx_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-- :
--else
-- echo "$as_me: failed program was:" >&5
--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
-- # can be detected and how.
-- cat >conftest.$ac_ext <<_ACEOF
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--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
-- ac_status=$?
-- 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_cxx_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-- # Broken: success on invalid input.
--continue
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-- # Passes both tests.
--ac_preproc_ok=:
--break
--fi
--rm -f conftest.err conftest.$ac_ext
--
--done
--# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
--rm -f conftest.err conftest.$ac_ext
--if $ac_preproc_ok; then
-- :
--else
-- { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
--See \`config.log' for more details." >&5
--echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
--See \`config.log' for more details." >&2;}
-- { (exit 1); exit 1; }; }
--fi
--
--ac_ext=cc
--ac_cpp='$CXXCPP $CPPFLAGS'
--ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
--ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
--ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
--
--fi
--
--
--ac_ext=f
--ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
--ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
--ac_compiler_gnu=$ac_cv_f77_compiler_gnu
--if test -n "$ac_tool_prefix"; then
-- for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
-- 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
--if test "${ac_cv_prog_F77+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$F77"; then
-- ac_cv_prog_F77="$F77" # 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_F77="$ac_tool_prefix$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--F77=$ac_cv_prog_F77
--if test -n "$F77"; then
-- echo "$as_me:$LINENO: result: $F77" >&5
--echo "${ECHO_T}$F77" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$F77" && break
-- done
--fi
--if test -z "$F77"; then
-- ac_ct_F77=$F77
-- for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
--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
--if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$ac_ct_F77"; then
-- ac_cv_prog_ac_ct_F77="$ac_ct_F77" # 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_F77="$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--ac_ct_F77=$ac_cv_prog_ac_ct_F77
--if test -n "$ac_ct_F77"; then
-- echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
--echo "${ECHO_T}$ac_ct_F77" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$ac_ct_F77" && break
-+done
- done
-
-- F77=$ac_ct_F77
--fi
--
--
--# Provide some information about the compiler.
--echo "$as_me:5183:" \
-- "checking for Fortran 77 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_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_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_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }
--rm -f a.out
--
--# If we don't use `.F' as extension, the preprocessor is not run on the
--# input file. (Note that this only needs to work for GNU compilers.)
--ac_save_ext=$ac_ext
--ac_ext=F
--echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
--echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
--if test "${ac_cv_f77_compiler_gnu+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- cat >conftest.$ac_ext <<_ACEOF
-- program main
--#ifndef __GNUC__
-- choke me
--#endif
--
-- end
--_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_f77_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_compiler_gnu=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_compiler_gnu=no
--fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--ac_cv_f77_compiler_gnu=$ac_compiler_gnu
--
--fi
--echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
--echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
--ac_ext=$ac_save_ext
--ac_test_FFLAGS=${FFLAGS+set}
--ac_save_FFLAGS=$FFLAGS
--FFLAGS=
--echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
--echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
--if test "${ac_cv_prog_f77_g+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- FFLAGS=-g
--cat >conftest.$ac_ext <<_ACEOF
-- program main
--
-- end
--_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_f77_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_f77_g=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_prog_f77_g=no
--fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--
--fi
--echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
--echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
--if test "$ac_test_FFLAGS" = set; then
-- FFLAGS=$ac_save_FFLAGS
--elif test $ac_cv_prog_f77_g = yes; then
-- if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-- FFLAGS="-g -O2"
-- else
-- FFLAGS="-g"
-- fi
--else
-- if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-- FFLAGS="-O2"
-- else
-- FFLAGS=
-- fi
--fi
--
--G77=`test $ac_compiler_gnu = yes && echo yes`
--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
--
--
--
--# 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
--if test "${lt_cv_sys_max_cmd_len+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- i=0
-- teststring="ABCD"
--
-- case $build_os in
-- msdosdjgpp*)
-- # On DJGPP, this test can blow up pretty badly due to problems in libc
-- # (any single argument exceeding 2000 bytes causes a buffer overrun
-- # during glob expansion). Even if it were fixed, the result of this
-- # check would be larger than it should be.
-- lt_cv_sys_max_cmd_len=12288; # 12K is about right
-- ;;
--
-- gnu*)
-- # Under GNU Hurd, this test is not required because there is
-- # no limit to the length of command line arguments.
-- # Libtool will interpret -1 as no limit whatsoever
-- lt_cv_sys_max_cmd_len=-1;
-- ;;
--
-- cygwin* | mingw*)
-- # On Win9x/ME, this test blows up -- it succeeds, but takes
-- # about 5 minutes as the teststring grows exponentially.
-- # Worse, since 9x/ME are not pre-emptively multitasking,
-- # you end up with a "frozen" computer, even though with patience
-- # the test eventually succeeds (with a max line length of 256k).
-- # Instead, let's just punt: use the minimum linelength reported by
-- # all of the supported platforms: 8192 (on NT/2K/XP).
-- lt_cv_sys_max_cmd_len=8192;
-- ;;
--
-- amigaos*)
-- # On AmigaOS with pdksh, this test takes hours, literally.
-- # So we just punt and use a minimum line length of 8192.
-- lt_cv_sys_max_cmd_len=8192;
-- ;;
--
-- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-- # This has been around since 386BSD, at least. Likely further.
-- if test -x /sbin/sysctl; then
-- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-- elif test -x /usr/sbin/sysctl; then
-- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-- else
-- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
-- fi
-- # And add a safety zone
-- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-- ;;
-- osf*)
-- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-- # nice to cause kernel panics so lets avoid the loop below.
-- # First set a reasonable default.
-- lt_cv_sys_max_cmd_len=16384
-- #
-- if test -x /sbin/sysconfig; then
-- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-- *1*) lt_cv_sys_max_cmd_len=-1 ;;
-- esac
-- fi
-- ;;
-- *)
-- # If test is not a shell built-in, we'll probably end up computing a
-- # maximum length that is only half of the actual maximum length, but
-- # we can't tell.
-- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-- while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
-- = "XX$teststring") >/dev/null 2>&1 &&
-- new_result=`expr "X$teststring" : ".*" 2>&1` &&
-- lt_cv_sys_max_cmd_len=$new_result &&
-- test $i != 17 # 1/2 MB should be enough
-- do
-- i=`expr $i + 1`
-- teststring=$teststring$teststring
-- done
-- teststring=
-- # Add a significant safety factor because C++ compilers can tack on massive
-- # amounts of additional arguments before passing them to the linker.
-- # It appears as though 1/2 is a usable value.
-- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-- ;;
-- esac
--
--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
--else
-- echo "$as_me:$LINENO: result: none" >&5
--echo "${ECHO_T}none" >&6
--fi
--
--
--
--
--# Check for command to grab the raw symbol name followed by C symbol from nm.
--echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
--echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
--if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
--
--# These are sane defaults that work on at least a few old systems.
--# [They come from Ultrix. What could be older than Ultrix?!! ;)]
--
--# Character class describing NM global symbol codes.
--symcode='[BCDEGRST]'
--
--# Regexp to match symbols that can be accessed directly from C.
--sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
--
--# Transform an extracted symbol line into a proper C declaration
--lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
--
--# Transform an extracted symbol line into symbol name and symbol address
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
--
--# Define system-specific variables.
--case $host_os in
--aix*)
-- symcode='[BCDT]'
-- ;;
--cygwin* | mingw* | pw32*)
-- symcode='[ABCDGISTW]'
-- ;;
--hpux*) # Its linker distinguishes data from code symbols
-- if test "$host_cpu" = ia64; then
-- symcode='[ABCDEGRST]'
-- fi
-- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-- ;;
--linux*)
-- if test "$host_cpu" = ia64; then
-- symcode='[ABCDGIRSTW]'
-- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-- fi
-- ;;
--irix* | nonstopux*)
-- symcode='[BCDEGRST]'
-- ;;
--osf*)
-- symcode='[BCDEGQRST]'
-- ;;
--solaris* | sysv5*)
-- symcode='[BDRT]'
-- ;;
--sysv4)
-- symcode='[DFNSTU]'
-- ;;
--esac
--
--# Handle CRLF in mingw tool chain
--opt_cr=
--case $build_os in
--mingw*)
-- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-- ;;
--esac
--
--# If we're using GNU nm, then use its standard symbol codes.
--case `$NM -V 2>&1` in
--*GNU* | *'with BFD'*)
-- symcode='[ABCDGIRSTW]' ;;
--esac
--
--# Try without a prefix undercore, then with it.
--for ac_symprfx in "" "_"; do
--
-- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-- symxfrm="\\1 $ac_symprfx\\2 \\2"
--
-- # Write the raw and C identifiers.
-- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
--
-- # Check to see that the pipe works correctly.
-- pipe_works=no
--
-- rm -f conftest*
-- cat > conftest.$ac_ext <<EOF
--#ifdef __cplusplus
--extern "C" {
--#endif
--char nm_test_var;
--void nm_test_func(){}
--#ifdef __cplusplus
--}
--#endif
--int main(){nm_test_var='a';nm_test_func();return(0);}
--EOF
--
-- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; then
-- # Now try to grab the symbols.
-- nlist=conftest.nm
-- if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
-- (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } && test -s "$nlist"; then
-- # Try sorting and uniquifying the output.
-- if sort "$nlist" | uniq > "$nlist"T; then
-- mv -f "$nlist"T "$nlist"
-- else
-- rm -f "$nlist"T
-- fi
--
-- # Make sure that we snagged all the symbols we need.
-- if grep ' nm_test_var$' "$nlist" >/dev/null; then
-- if grep ' nm_test_func$' "$nlist" >/dev/null; then
-- cat <<EOF > conftest.$ac_ext
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--EOF
-- # Now generate the symbol file.
-- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
--
-- cat <<EOF >> conftest.$ac_ext
--#if defined (__STDC__) && __STDC__
--# define lt_ptr_t void *
--#else
--# define lt_ptr_t char *
--# define const
--#endif
--
--/* The mapping between symbol names and symbols. */
--const struct {
-- const char *name;
-- lt_ptr_t address;
--}
--lt_preloaded_symbols[] =
--{
--EOF
-- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
-- cat <<\EOF >> conftest.$ac_ext
-- {0, (lt_ptr_t) 0}
--};
--
--#ifdef __cplusplus
--}
--#endif
--EOF
-- # Now try linking the two files.
-- mv conftest.$ac_objext conftstm.$ac_objext
-- lt_save_LIBS="$LIBS"
-- lt_save_CFLAGS="$CFLAGS"
-- LIBS="conftstm.$ac_objext"
-- CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } && test -s conftest${ac_exeext}; then
-- pipe_works=yes
-- fi
-- LIBS="$lt_save_LIBS"
-- CFLAGS="$lt_save_CFLAGS"
-- else
-- echo "cannot find nm_test_func in $nlist" >&5
-- fi
-- else
-- echo "cannot find nm_test_var in $nlist" >&5
-- fi
-- else
-- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-- fi
-- else
-- echo "$progname: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- fi
-- rm -f conftest* conftst*
--
-- # Do not use the global_symbol_pipe unless it works.
-- if test "$pipe_works" = yes; then
-- break
-- else
-- lt_cv_sys_global_symbol_pipe=
-- fi
--done
--
--fi
--
--if test -z "$lt_cv_sys_global_symbol_pipe"; then
-- lt_cv_sys_global_symbol_to_cdecl=
--fi
--if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-- echo "$as_me:$LINENO: result: failed" >&5
--echo "${ECHO_T}failed" >&6
--else
-- echo "$as_me:$LINENO: result: ok" >&5
--echo "${ECHO_T}ok" >&6
--fi
--
--echo "$as_me:$LINENO: checking for objdir" >&5
--echo $ECHO_N "checking for objdir... $ECHO_C" >&6
--if test "${lt_cv_objdir+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- rm -f .libs 2>/dev/null
--mkdir .libs 2>/dev/null
--if test -d .libs; then
-- lt_cv_objdir=.libs
--else
-- # MS-DOS does not allow filenames that begin with a dot.
-- lt_cv_objdir=_libs
--fi
--rmdir .libs 2>/dev/null
--fi
--echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
--echo "${ECHO_T}$lt_cv_objdir" >&6
--objdir=$lt_cv_objdir
--
--
--
--
--
--case $host_os in
--aix3*)
-- # AIX sometimes has problems with the GCC collect2 program. For some
-- # reason, if we set the COLLECT_NAMES environment variable, the problems
-- # vanish in a puff of smoke.
-- if test "X${COLLECT_NAMES+set}" != Xset; then
-- COLLECT_NAMES=
-- export COLLECT_NAMES
-- fi
-- ;;
--esac
--
--# Sed substitution that helps us do robust quoting. It backslashifies
--# metacharacters that are still active within double-quoted strings.
--Xsed='sed -e 1s/^X//'
--sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
--
--# Same as above, but do not quote variable references.
--double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
--
--# Sed substitution to delay expansion of an escaped shell variable in a
--# double_quote_subst'ed string.
--delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
--
--# Sed substitution to avoid accidental globbing in evaled expressions
--no_glob_subst='s/\*/\\\*/g'
--
--# Constants:
--rm="rm -f"
--
--# Global variables:
--default_ofile=libtool
--can_build_shared=yes
--
--# All known linkers require a `.a' archive for static linking (except MSVC,
--# which needs '.lib').
--libext=a
--ltmain="$ac_aux_dir/ltmain.sh"
--ofile="$default_ofile"
--with_gnu_ld="$lt_cv_prog_gnu_ld"
--
--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
--if test "${ac_cv_prog_AR+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$AR"; then
-- ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--AR=$ac_cv_prog_AR
--if test -n "$AR"; then
-- 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
--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
--if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$ac_ct_AR"; then
-- ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_AR="ar"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
-- test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
--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
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- AR=$ac_ct_AR
--else
-- AR="$ac_cv_prog_AR"
--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
--if test "${ac_cv_prog_RANLIB+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$RANLIB"; then
-- ac_cv_prog_RANLIB="$RANLIB" # 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_RANLIB="${ac_tool_prefix}ranlib"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--RANLIB=$ac_cv_prog_RANLIB
--if test -n "$RANLIB"; then
-- 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
--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
--if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$ac_ct_RANLIB"; then
-- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_RANLIB="ranlib"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
-- 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
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- RANLIB=$ac_ct_RANLIB
--else
-- RANLIB="$ac_cv_prog_RANLIB"
--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
--if test "${ac_cv_prog_STRIP+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$STRIP"; then
-- ac_cv_prog_STRIP="$STRIP" # 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_STRIP="${ac_tool_prefix}strip"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--STRIP=$ac_cv_prog_STRIP
--if test -n "$STRIP"; then
-- 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
--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
--if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$ac_ct_STRIP"; then
-- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # 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_STRIP="strip"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
-- 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
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- STRIP=$ac_ct_STRIP
--else
-- STRIP="$ac_cv_prog_STRIP"
--fi
--
--
--old_CC="$CC"
--old_CFLAGS="$CFLAGS"
--
--# Set sane defaults for various variables
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
--test -z "$AS" && AS=as
--test -z "$CC" && CC=cc
--test -z "$LTCC" && LTCC=$CC
--test -z "$DLLTOOL" && DLLTOOL=dlltool
--test -z "$LD" && LD=ld
--test -z "$LN_S" && LN_S="ln -s"
--test -z "$MAGIC_CMD" && MAGIC_CMD=file
--test -z "$NM" && NM=nm
--test -z "$SED" && SED=sed
--test -z "$OBJDUMP" && OBJDUMP=objdump
--test -z "$RANLIB" && RANLIB=:
--test -z "$STRIP" && STRIP=:
--test -z "$ac_objext" && ac_objext=o
--
--# Determine commands to create old-style static archives.
--old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
--old_postinstall_cmds='chmod 644 $oldlib'
--old_postuninstall_cmds=
--
--if test -n "$RANLIB"; then
-- case $host_os in
-- openbsd*)
-- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
-- ;;
-- *)
-- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-- ;;
-- esac
-- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
--fi
--
--for cc_temp in $compiler""; do
-- case $cc_temp in
-- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-- \-*) ;;
-- *) break;;
-- esac
--done
--cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
--
--
--# Only perform the check for file, if the check method requires it
--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
--if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- case $MAGIC_CMD in
--[\\/*] | ?:[\\/]*)
-- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-- ;;
--*)
-- lt_save_MAGIC_CMD="$MAGIC_CMD"
-- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-- ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-- for ac_dir in $ac_dummy; do
-- IFS="$lt_save_ifs"
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/${ac_tool_prefix}file; then
-- lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-- if test -n "$file_magic_test_file"; then
-- case $deplibs_check_method in
-- "file_magic "*)
-- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-- $EGREP "$file_magic_regex" > /dev/null; then
-- :
-- else
-- cat <<EOF 1>&2
--
--*** Warning: the command libtool uses to detect shared libraries,
--*** $file_magic_cmd, produces output that libtool cannot recognize.
--*** The result is that libtool may fail to recognize shared libraries
--*** as such. This will affect the creation of libtool libraries that
--*** depend on shared libraries, but programs linked with such libtool
--*** libraries will work regardless of this problem. Nevertheless, you
--*** may want to report the problem to your system manager and/or to
--*** bug-libtool@gnu.org
--
--EOF
-- fi ;;
-- esac
-- fi
-- break
-- fi
-- done
-- IFS="$lt_save_ifs"
-- MAGIC_CMD="$lt_save_MAGIC_CMD"
-- ;;
--esac
--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
--else
-- 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
--if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- case $MAGIC_CMD in
--[\\/*] | ?:[\\/]*)
-- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-- ;;
--*)
-- lt_save_MAGIC_CMD="$MAGIC_CMD"
-- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-- ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-- for ac_dir in $ac_dummy; do
-- IFS="$lt_save_ifs"
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/file; then
-- lt_cv_path_MAGIC_CMD="$ac_dir/file"
-- if test -n "$file_magic_test_file"; then
-- case $deplibs_check_method in
-- "file_magic "*)
-- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-- $EGREP "$file_magic_regex" > /dev/null; then
-- :
-- else
-- cat <<EOF 1>&2
--
--*** Warning: the command libtool uses to detect shared libraries,
--*** $file_magic_cmd, produces output that libtool cannot recognize.
--*** The result is that libtool may fail to recognize shared libraries
--*** as such. This will affect the creation of libtool libraries that
--*** depend on shared libraries, but programs linked with such libtool
--*** libraries will work regardless of this problem. Nevertheless, you
--*** may want to report the problem to your system manager and/or to
--*** bug-libtool@gnu.org
--
--EOF
-- fi ;;
-- esac
-- fi
-- break
-- fi
-- done
-- IFS="$lt_save_ifs"
-- MAGIC_CMD="$lt_save_MAGIC_CMD"
-- ;;
--esac
--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
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- else
-- MAGIC_CMD=:
-- fi
--fi
--
-- fi
-- ;;
--esac
--
--enable_dlopen=no
--enable_win32_dll=no
--
--# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
--if test "${enable_libtool_lock+set}" = set; then
-- enableval="$enable_libtool_lock"
--
--fi;
--test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
--
--
--# Check whether --with-pic or --without-pic was given.
--if test "${with_pic+set}" = set; then
-- withval="$with_pic"
-- pic_mode="$withval"
--else
-- pic_mode=default
--fi;
--test -z "$pic_mode" && pic_mode=default
--
--# Use C for the default configuration in the libtool script
--tagname=
--lt_save_CC="$CC"
--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
--
--
--# Source file extension for C test sources.
--ac_ext=c
--
--# Object file extension for compiled C test sources.
--objext=o
--objext=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code="int some_variable = 0;\n"
--
--# Code to be used in simple link tests
--lt_simple_link_test_code='int main(){return(0);}\n'
--
--
--# If no C compiler was specified, use CC.
--LTCC=${LTCC-"$CC"}
--
--# Allow CC to be a program name with arguments.
--compiler=$CC
--
--
--# save warnings/boilerplate of simple test code
--ac_outfile=conftest.$ac_objext
--printf "$lt_simple_compile_test_code" >conftest.$ac_ext
--eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
--_lt_compiler_boilerplate=`cat conftest.err`
--$rm conftest*
--
--ac_outfile=conftest.$ac_objext
--printf "$lt_simple_link_test_code" >conftest.$ac_ext
--eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
--_lt_linker_boilerplate=`cat conftest.err`
--$rm conftest*
--
--
--#
--# Check for any special shared library compilation flags.
--#
--lt_prog_cc_shlib=
--if test "$GCC" = no; then
-- case $host_os in
-- sco3.2v5*)
-- lt_prog_cc_shlib='-belf'
-- ;;
-- esac
--fi
--if test -n "$lt_prog_cc_shlib"; then
-- { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
--echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
-- if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then :
-- else
-- { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
--echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
-- lt_cv_prog_cc_can_build_shared=no
-- fi
--fi
--
--
--#
--# Check to make sure the static flag actually works.
--#
--echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
--echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
--if test "${lt_prog_compiler_static_works+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- lt_prog_compiler_static_works=no
-- save_LDFLAGS="$LDFLAGS"
-- LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
-- printf "$lt_simple_link_test_code" > conftest.$ac_ext
-- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-- # The linker can only warn and ignore the option if not recognized
-- # So say no if there are warnings
-- if test -s conftest.err; then
-- # Append any errors to the config.log.
-- cat conftest.err 1>&5
-- $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
-- $SED '/^$/d' conftest.err >conftest.er2
-- if diff conftest.exp conftest.er2 >/dev/null; then
-- lt_prog_compiler_static_works=yes
-- fi
-- else
-- lt_prog_compiler_static_works=yes
-- fi
-- fi
-- $rm conftest*
-- LDFLAGS="$save_LDFLAGS"
--
--fi
--echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
--echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
--
--if test x"$lt_prog_compiler_static_works" = xyes; then
-- :
--else
-- lt_prog_compiler_static=
--fi
--
--
--
--
--lt_prog_compiler_no_builtin_flag=
--
--if test "$GCC" = yes; then
-- lt_prog_compiler_no_builtin_flag=' -fno-builtin'
--
--
--echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
--echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
--if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- lt_cv_prog_compiler_rtti_exceptions=no
-- ac_outfile=conftest.$ac_objext
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-- lt_compiler_flag="-fno-rtti -fno-exceptions"
-- # Insert the option either (1) after the last *FLAGS variable, or
-- # (2) before a word containing "conftest.", or (3) at the end.
-- # Note that $ac_compile itself does not contain backslashes and begins
-- # with a dollar sign (not a hyphen), so the echo should work correctly.
-- # The option is referenced via a variable to avoid confusing sed.
-- lt_compile=`echo "$ac_compile" | $SED \
-- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:6281: $lt_compile\"" >&5)
-- (eval "$lt_compile" 2>conftest.err)
-- ac_status=$?
-- cat conftest.err >&5
-- echo "$as_me:6285: \$? = $ac_status" >&5
-- if (exit $ac_status) && test -s "$ac_outfile"; then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings other than the usual output.
-- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-- $SED '/^$/d' conftest.err >conftest.er2
-- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
-- lt_cv_prog_compiler_rtti_exceptions=yes
-- fi
-- fi
-- $rm conftest*
--
--fi
--echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
--echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
--
--if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-- lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
--else
-- :
--fi
--
--fi
--
--lt_prog_compiler_wl=
--lt_prog_compiler_pic=
--lt_prog_compiler_static=
--
--echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
--echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
--
-- if test "$GCC" = yes; then
-- lt_prog_compiler_wl='-Wl,'
-- lt_prog_compiler_static='-static'
--
-- case $host_os in
-- aix*)
-- # All AIX code is PIC.
-- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- lt_prog_compiler_static='-Bstatic'
-- fi
-- ;;
--
-- amigaos*)
-- # FIXME: we need at least 68020 code to build shared libraries, but
-- # adding the `-m68020' flag to GCC prevents building anything better,
-- # like `-m68040'.
-- lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-- ;;
--
-- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-- # PIC is the default for these OSes.
-- ;;
--
-- mingw* | pw32* | os2*)
-- # This hack is so that the source file can tell whether it is being
-- # built for inclusion in a dll (and should export symbols for example).
-- lt_prog_compiler_pic='-DDLL_EXPORT'
-- ;;
--
-- darwin* | rhapsody*)
-- # PIC is the default on this platform
-- # Common symbols not allowed in MH_DYLIB files
-- lt_prog_compiler_pic='-fno-common'
-- ;;
--
-- msdosdjgpp*)
-- # Just because we use GCC doesn't mean we suddenly get shared libraries
-- # on systems that don't support them.
-- lt_prog_compiler_can_build_shared=no
-- enable_shared=no
-- ;;
--
-- sysv4*MP*)
-- if test -d /usr/nec; then
-- lt_prog_compiler_pic=-Kconform_pic
-- fi
-- ;;
--
-- hpux*)
-- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-- # not for PA HP-UX.
-- case $host_cpu in
-- hppa*64*|ia64*)
-- # +Z the default
-- ;;
-- *)
-- lt_prog_compiler_pic='-fPIC'
-- ;;
-- esac
-- ;;
--
-- *)
-- lt_prog_compiler_pic='-fPIC'
-- ;;
-- esac
-- else
-- # PORTME Check for flag to pass linker flags through the system compiler.
-- case $host_os in
-- aix*)
-- lt_prog_compiler_wl='-Wl,'
-- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- lt_prog_compiler_static='-Bstatic'
-- else
-- lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-- fi
-- ;;
-- darwin*)
-- # PIC is the default on this platform
-- # Common symbols not allowed in MH_DYLIB files
-- case $cc_basename in
-- xlc*)
-- lt_prog_compiler_pic='-qnocommon'
-- lt_prog_compiler_wl='-Wl,'
-- ;;
-- esac
-- ;;
--
-- mingw* | pw32* | os2*)
-- # This hack is so that the source file can tell whether it is being
-- # built for inclusion in a dll (and should export symbols for example).
-- lt_prog_compiler_pic='-DDLL_EXPORT'
-- ;;
--
-- hpux9* | hpux10* | hpux11*)
-- lt_prog_compiler_wl='-Wl,'
-- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-- # not for PA HP-UX.
-- case $host_cpu in
-- hppa*64*|ia64*)
-- # +Z the default
-- ;;
-- *)
-- lt_prog_compiler_pic='+Z'
-- ;;
-- esac
-- # Is there a better lt_prog_compiler_static that works with the bundled CC?
-- lt_prog_compiler_static='${wl}-a ${wl}archive'
-- ;;
--
-- irix5* | irix6* | nonstopux*)
-- lt_prog_compiler_wl='-Wl,'
-- # PIC (with -KPIC) is the default.
-- lt_prog_compiler_static='-non_shared'
-- ;;
--
-- newsos6)
-- lt_prog_compiler_pic='-KPIC'
-- lt_prog_compiler_static='-Bstatic'
-- ;;
--
-- linux*)
-- case $cc_basename in
-- icc* | ecc*)
-- lt_prog_compiler_wl='-Wl,'
-- lt_prog_compiler_pic='-KPIC'
-- lt_prog_compiler_static='-static'
-- ;;
-- pgcc* | pgf77* | pgf90* | pgf95*)
-- # Portland Group compilers (*not* the Pentium gcc compiler,
-- # which looks to be a dead project)
-- lt_prog_compiler_wl='-Wl,'
-- lt_prog_compiler_pic='-fpic'
-- lt_prog_compiler_static='-Bstatic'
-- ;;
-- ccc*)
-- lt_prog_compiler_wl='-Wl,'
-- # All Alpha code is PIC.
-- lt_prog_compiler_static='-non_shared'
-- ;;
-- esac
-- ;;
--
-- osf3* | osf4* | osf5*)
-- lt_prog_compiler_wl='-Wl,'
-- # All OSF/1 code is PIC.
-- lt_prog_compiler_static='-non_shared'
-- ;;
--
-- sco3.2v5*)
-- lt_prog_compiler_pic='-Kpic'
-- lt_prog_compiler_static='-dn'
-- ;;
--
-- solaris*)
-- lt_prog_compiler_pic='-KPIC'
-- lt_prog_compiler_static='-Bstatic'
-- case $cc_basename in
-- f77* | f90* | f95*)
-- lt_prog_compiler_wl='-Qoption ld ';;
-- *)
-- lt_prog_compiler_wl='-Wl,';;
-- esac
-- ;;
--
-- sunos4*)
-- lt_prog_compiler_wl='-Qoption ld '
-- lt_prog_compiler_pic='-PIC'
-- lt_prog_compiler_static='-Bstatic'
-- ;;
--
-- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-- lt_prog_compiler_wl='-Wl,'
-- lt_prog_compiler_pic='-KPIC'
-- lt_prog_compiler_static='-Bstatic'
-- ;;
--
-- sysv4*MP*)
-- if test -d /usr/nec ;then
-- lt_prog_compiler_pic='-Kconform_pic'
-- lt_prog_compiler_static='-Bstatic'
-- fi
-- ;;
--
-- unicos*)
-- lt_prog_compiler_wl='-Wl,'
-- lt_prog_compiler_can_build_shared=no
-- ;;
--
-- uts4*)
-- lt_prog_compiler_pic='-pic'
-- lt_prog_compiler_static='-Bstatic'
-- ;;
--
-- *)
-- lt_prog_compiler_can_build_shared=no
-- ;;
-- esac
-- fi
--
--echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
--echo "${ECHO_T}$lt_prog_compiler_pic" >&6
--
--#
--# Check to make sure the PIC flag actually works.
--#
--if test -n "$lt_prog_compiler_pic"; then
--
--echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
--echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
--if test "${lt_prog_compiler_pic_works+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- lt_prog_compiler_pic_works=no
-- ac_outfile=conftest.$ac_objext
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-- lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
-- # Insert the option either (1) after the last *FLAGS variable, or
-- # (2) before a word containing "conftest.", or (3) at the end.
-- # Note that $ac_compile itself does not contain backslashes and begins
-- # with a dollar sign (not a hyphen), so the echo should work correctly.
-- # The option is referenced via a variable to avoid confusing sed.
-- lt_compile=`echo "$ac_compile" | $SED \
-- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:6543: $lt_compile\"" >&5)
-- (eval "$lt_compile" 2>conftest.err)
-- ac_status=$?
-- cat conftest.err >&5
-- echo "$as_me:6547: \$? = $ac_status" >&5
-- if (exit $ac_status) && test -s "$ac_outfile"; then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings other than the usual output.
-- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-- $SED '/^$/d' conftest.err >conftest.er2
-- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
-- lt_prog_compiler_pic_works=yes
-- fi
-- fi
-- $rm conftest*
--
--fi
--echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
--echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
--
--if test x"$lt_prog_compiler_pic_works" = xyes; then
-- case $lt_prog_compiler_pic in
-- "" | " "*) ;;
-- *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-- esac
--else
-- lt_prog_compiler_pic=
-- lt_prog_compiler_can_build_shared=no
--fi
--
--fi
--case $host_os in
-- # For platforms which do not support PIC, -DPIC is meaningless:
-- *djgpp*)
-- lt_prog_compiler_pic=
-- ;;
-- *)
-- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-- ;;
--esac
--
--echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
--echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
--if test "${lt_cv_prog_compiler_c_o+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- lt_cv_prog_compiler_c_o=no
-- $rm -r conftest 2>/dev/null
-- mkdir conftest
-- cd conftest
-- mkdir out
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
--
-- lt_compiler_flag="-o out/conftest2.$ac_objext"
-- # Insert the option either (1) after the last *FLAGS variable, or
-- # (2) before a word containing "conftest.", or (3) at the end.
-- # Note that $ac_compile itself does not contain backslashes and begins
-- # with a dollar sign (not a hyphen), so the echo should work correctly.
-- lt_compile=`echo "$ac_compile" | $SED \
-- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:6605: $lt_compile\"" >&5)
-- (eval "$lt_compile" 2>out/conftest.err)
-- ac_status=$?
-- cat out/conftest.err >&5
-- echo "$as_me:6609: \$? = $ac_status" >&5
-- if (exit $ac_status) && test -s out/conftest2.$ac_objext
-- then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings
-- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
-- $SED '/^$/d' out/conftest.err >out/conftest.er2
-- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-- lt_cv_prog_compiler_c_o=yes
-- fi
-- fi
-- chmod u+w . 2>&5
-- $rm conftest*
-- # SGI C++ compiler will create directory out/ii_files/ for
-- # template instantiation
-- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-- $rm out/* && rmdir out
-- cd ..
-- rmdir conftest
-- $rm conftest*
--
--fi
--echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
--echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
--
--
--hard_links="nottested"
--if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-- # do not overwrite the value of need_locks provided by the user
-- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
--echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-- hard_links=yes
-- $rm conftest*
-- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- touch conftest.a
-- ln conftest.a conftest.b 2>&5 || hard_links=no
-- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- echo "$as_me:$LINENO: result: $hard_links" >&5
--echo "${ECHO_T}$hard_links" >&6
-- if test "$hard_links" = no; then
-- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
--echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-- need_locks=warn
-- fi
--else
-- need_locks=no
--fi
--
--echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
--echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
--
-- runpath_var=
-- allow_undefined_flag=
-- enable_shared_with_static_runtimes=no
-- archive_cmds=
-- archive_expsym_cmds=
-- old_archive_From_new_cmds=
-- old_archive_from_expsyms_cmds=
-- export_dynamic_flag_spec=
-- whole_archive_flag_spec=
-- thread_safe_flag_spec=
-- hardcode_libdir_flag_spec=
-- hardcode_libdir_flag_spec_ld=
-- hardcode_libdir_separator=
-- hardcode_direct=no
-- hardcode_minus_L=no
-- hardcode_shlibpath_var=unsupported
-- link_all_deplibs=unknown
-- hardcode_automatic=no
-- module_cmds=
-- module_expsym_cmds=
-- always_export_symbols=no
-- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-- # include_expsyms should be a list of space-separated symbols to be *always*
-- # included in the symbol list
-- include_expsyms=
-- # exclude_expsyms can be an extended regexp of symbols to exclude
-- # it will be wrapped by ` (' and `)$', so one must not match beginning or
-- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-- # as well as any symbol that contains `d'.
-- exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-- # platforms (ab)use it in PIC code, but their linkers get confused if
-- # the symbol is explicitly referenced. Since portable code cannot
-- # rely on this symbol name, it's probably fine to never include it in
-- # preloaded symbol tables.
-- extract_expsyms_cmds=
-- # Just being paranoid about ensuring that cc_basename is set.
-- for cc_temp in $compiler""; do
-- case $cc_temp in
-- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-- \-*) ;;
-- *) break;;
-- esac
--done
--cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
--
-- case $host_os in
-- cygwin* | mingw* | pw32*)
-- # FIXME: the MSVC++ port hasn't been tested in a loooong time
-- # When not using gcc, we currently assume that we are using
-- # Microsoft Visual C++.
-- if test "$GCC" != yes; then
-- with_gnu_ld=no
-- fi
-- ;;
-- openbsd*)
-- with_gnu_ld=no
-- ;;
-- esac
--
-- ld_shlibs=yes
-- if test "$with_gnu_ld" = yes; then
-- # If archive_cmds runs LD, not CC, wlarc should be empty
-- wlarc='${wl}'
--
-- # Set some defaults for GNU ld with shared library support. These
-- # are reset later if shared libraries are not supported. Putting them
-- # here allows them to be overridden if necessary.
-- runpath_var=LD_RUN_PATH
-- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
-- export_dynamic_flag_spec='${wl}--export-dynamic'
-- # ancient GNU ld didn't support --whole-archive et. al.
-- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-- else
-- whole_archive_flag_spec=
-- fi
-- supports_anon_versioning=no
-- case `$LD -v 2>/dev/null` in
-- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-- *\ 2.11.*) ;; # other 2.11 versions
-- *) supports_anon_versioning=yes ;;
-- esac
--
-- # See if GNU ld supports shared libraries.
-- case $host_os in
-- aix3* | aix4* | aix5*)
-- # On AIX/PPC, the GNU linker is very broken
-- if test "$host_cpu" != ia64; then
-- ld_shlibs=no
-- cat <<EOF 1>&2
--
--*** Warning: the GNU linker, at least up to release 2.9.1, is reported
--*** to be unable to reliably create shared libraries on AIX.
--*** Therefore, libtool is disabling shared libraries support. If you
--*** really care for shared libraries, you may want to modify your PATH
--*** so that a non-GNU linker is found, and then restart.
--
--EOF
-- fi
-- ;;
--
-- amigaos*)
-- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_minus_L=yes
--
-- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-- # that the semantics of dynamic libraries on AmigaOS, at least up
-- # to version 4, is to share data among multiple programs linked
-- # with the same dynamic library. Since this doesn't match the
-- # behavior of shared libraries on other platforms, we can't use
-- # them.
-- ld_shlibs=no
-- ;;
--
-- beos*)
-- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- allow_undefined_flag=unsupported
-- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-- # support --undefined. This deserves some investigation. FIXME
-- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- else
-- ld_shlibs=no
-- fi
-- ;;
--
-- cygwin* | mingw* | pw32*)
-- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-- # as there is no search path for DLLs.
-- hardcode_libdir_flag_spec='-L$libdir'
-- allow_undefined_flag=unsupported
-- always_export_symbols=no
-- enable_shared_with_static_runtimes=yes
-- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
--
-- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-- # If the export-symbols file already is a .def file (1st line
-- # is EXPORTS), use it as is; otherwise, prepend...
-- archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-- cp $export_symbols $output_objdir/$soname.def;
-- else
-- echo EXPORTS > $output_objdir/$soname.def;
-- cat $export_symbols >> $output_objdir/$soname.def;
-- fi~
-- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-- else
-- ld_shlibs=no
-- fi
-- ;;
--
-- linux*)
-- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- tmp_addflag=
-- case $cc_basename,$host_cpu in
-- pgcc*) # Portland Group C compiler
-- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-- tmp_addflag=' $pic_flag'
-- ;;
-- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
-- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-- tmp_addflag=' $pic_flag -Mnomain' ;;
-- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
-- tmp_addflag=' -i_dynamic' ;;
-- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
-- tmp_addflag=' -i_dynamic -nofor_main' ;;
-- ifc* | ifort*) # Intel Fortran compiler
-- tmp_addflag=' -nofor_main' ;;
-- esac
-- archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--
-- if test $supports_anon_versioning = yes; then
-- archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
-- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-- $echo "local: *; };" >> $output_objdir/$libname.ver~
-- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-- fi
-- else
-- ld_shlibs=no
-- fi
-- ;;
--
-- netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-- wlarc=
-- else
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- fi
-- ;;
--
-- solaris* | sysv5*)
-- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-- ld_shlibs=no
-- cat <<EOF 1>&2
--
--*** Warning: The releases 2.8.* of the GNU linker cannot reliably
--*** create shared libraries on Solaris systems. Therefore, libtool
--*** is disabling shared libraries support. We urge you to upgrade GNU
--*** binutils to release 2.9.1 or newer. Another option is to modify
--*** your PATH or compiler configuration so that the native linker is
--*** used, and then restart.
--
--EOF
-- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- else
-- ld_shlibs=no
-- fi
-- ;;
--
-- sunos4*)
-- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- wlarc=
-- hardcode_direct=yes
-- hardcode_shlibpath_var=no
-- ;;
--
-- *)
-- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- else
-- ld_shlibs=no
-- fi
-- ;;
-- esac
--
-- if test "$ld_shlibs" = no; then
-- runpath_var=
-- hardcode_libdir_flag_spec=
-- export_dynamic_flag_spec=
-- whole_archive_flag_spec=
-- fi
-- else
-- # PORTME fill in a description of your system's linker (not GNU ld)
-- case $host_os in
-- aix3*)
-- allow_undefined_flag=unsupported
-- always_export_symbols=yes
-- archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-- # Note: this linker hardcodes the directories in LIBPATH if there
-- # are no directories specified by -L.
-- hardcode_minus_L=yes
-- if test "$GCC" = yes && test -z "$link_static_flag"; then
-- # Neither direct hardcoding nor static linking is supported with a
-- # broken collect2.
-- hardcode_direct=unsupported
-- fi
-- ;;
--
-- aix4* | aix5*)
-- if test "$host_cpu" = ia64; then
-- # On IA64, the linker does run time linking by default, so we don't
-- # have to do anything special.
-- aix_use_runtimelinking=no
-- exp_sym_flag='-Bexport'
-- no_entry_flag=""
-- else
-- # If we're using GNU nm, then we don't want the "-C" option.
-- # -C means demangle to AIX nm, but means don't demangle with GNU nm
-- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-- export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-- else
-- export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-- fi
-- aix_use_runtimelinking=no
--
-- # Test if we are trying to use run time linking or normal
-- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-- # need to do runtime linking.
-- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-- for ld_flag in $LDFLAGS; do
-- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-- aix_use_runtimelinking=yes
-- break
-- fi
-- done
-- esac
--
-- exp_sym_flag='-bexport'
-- no_entry_flag='-bnoentry'
-- fi
--
-- # When large executables or shared objects are built, AIX ld can
-- # have problems creating the table of contents. If linking a library
-- # or program results in "error TOC overflow" add -mminimal-toc to
-- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
--
-- archive_cmds=''
-- hardcode_direct=yes
-- hardcode_libdir_separator=':'
-- link_all_deplibs=yes
--
-- if test "$GCC" = yes; then
-- case $host_os in aix4.[012]|aix4.[012].*)
-- # We only want to do this on AIX 4.2 and lower, the check
-- # below for broken collect2 doesn't work under 4.3+
-- collect2name=`${CC} -print-prog-name=collect2`
-- if test -f "$collect2name" && \
-- strings "$collect2name" | grep resolve_lib_name >/dev/null
-- then
-- # We have reworked collect2
-- hardcode_direct=yes
-- else
-- # We have old collect2
-- hardcode_direct=unsupported
-- # It fails to find uninstalled libraries when the uninstalled
-- # path is not listed in the libpath. Setting hardcode_minus_L
-- # to unsupported forces relinking
-- hardcode_minus_L=yes
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_libdir_separator=
-- fi
-- esac
-- shared_flag='-shared'
-- if test "$aix_use_runtimelinking" = yes; then
-- shared_flag="$shared_flag "'${wl}-G'
-- fi
-- else
-- # not using gcc
-- if test "$host_cpu" = ia64; then
-- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-- # chokes on -Wl,-G. The following line is correct:
-- shared_flag='-G'
-- else
-- if test "$aix_use_runtimelinking" = yes; then
-- shared_flag='${wl}-G'
-- else
-- shared_flag='${wl}-bM:SRE'
-- fi
-- fi
-- fi
--
-- # It seems that -bexpall does not export symbols beginning with
-- # underscore (_), so it is better to generate a list of symbols to export.
-- always_export_symbols=yes
-- if test "$aix_use_runtimelinking" = yes; then
-- # Warning - without using the other runtime loading flags (-brtl),
-- # -berok will link without error, but may produce a broken library.
-- allow_undefined_flag='-berok'
-- # Determine the default libpath from the value encoded in an empty executable.
-- 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 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
--
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`; 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_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
--
-- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-- else
-- if test "$host_cpu" = ia64; then
-- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-- allow_undefined_flag="-z nodefs"
-- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-- else
-- # Determine the default libpath from the value encoded in an empty executable.
-- 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 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
--
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`; 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_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
--
-- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-- # Warning - without using the other run time loading flags,
-- # -berok will link without error, but may produce a broken library.
-- no_undefined_flag=' ${wl}-bernotok'
-- allow_undefined_flag=' ${wl}-berok'
-- # -bexpall does not export symbols beginning with underscore (_)
-- always_export_symbols=yes
-- # Exported symbols can be pulled into shared objects from archives
-- whole_archive_flag_spec=' '
-- archive_cmds_need_lc=yes
-- # This is similar to how AIX traditionally builds its shared libraries.
-- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-- fi
-- fi
-- ;;
--
-- amigaos*)
-- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_minus_L=yes
-- # see comment about different semantics on the GNU ld section
-- ld_shlibs=no
-- ;;
--
-- bsdi[45]*)
-- export_dynamic_flag_spec=-rdynamic
-- ;;
--
-- cygwin* | mingw* | pw32*)
-- # When not using gcc, we currently assume that we are using
-- # Microsoft Visual C++.
-- # hardcode_libdir_flag_spec is actually meaningless, as there is
-- # no search path for DLLs.
-- hardcode_libdir_flag_spec=' '
-- allow_undefined_flag=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # Tell ltmain to make .dll files, not .so files.
-- shrext_cmds=".dll"
-- # FIXME: Setting linknames here is a bad hack.
-- archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- old_archive_From_new_cmds='true'
-- # FIXME: Should let the user specify the lib program.
-- old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
-- fix_srcfile_path='`cygpath -w "$srcfile"`'
-- enable_shared_with_static_runtimes=yes
-- ;;
--
-- darwin* | rhapsody*)
-- case $host_os in
-- rhapsody* | darwin1.[012])
-- allow_undefined_flag='${wl}-undefined ${wl}suppress'
-- ;;
-- *) # Darwin 1.3 on
-- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-- allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-- else
-- case ${MACOSX_DEPLOYMENT_TARGET} in
-- 10.[012])
-- allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-- ;;
-- 10.*)
-- allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
-- ;;
-- esac
-- fi
-- ;;
-- esac
-- archive_cmds_need_lc=no
-- hardcode_direct=no
-- hardcode_automatic=yes
-- hardcode_shlibpath_var=unsupported
-- whole_archive_flag_spec=''
-- link_all_deplibs=yes
-- if test "$GCC" = yes ; then
-- output_verbose_link_cmd='echo'
-- archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-- module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- else
-- case $cc_basename in
-- xlc*)
-- output_verbose_link_cmd='echo'
-- archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
-- module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- ;;
-- *)
-- ld_shlibs=no
-- ;;
-- esac
-- fi
-- ;;
--
-- dgux*)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_shlibpath_var=no
-- ;;
--
-- freebsd1*)
-- ld_shlibs=no
-- ;;
--
-- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-- # support. Future versions do this automatically, but an explicit c++rt0.o
-- # does not break anything, and helps significantly (at the cost of a little
-- # extra space).
-- freebsd2.2*)
-- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-- hardcode_libdir_flag_spec='-R$libdir'
-- hardcode_direct=yes
-- hardcode_shlibpath_var=no
-- ;;
--
-- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-- freebsd2*)
-- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct=yes
-- hardcode_minus_L=yes
-- hardcode_shlibpath_var=no
-- ;;
--
-- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-- freebsd* | kfreebsd*-gnu | dragonfly*)
-- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-- hardcode_libdir_flag_spec='-R$libdir'
-- hardcode_direct=yes
-- hardcode_shlibpath_var=no
-- ;;
--
-- hpux9*)
-- if test "$GCC" = yes; then
-- archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-- else
-- archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-- fi
-- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-- hardcode_libdir_separator=:
-- hardcode_direct=yes
--
-- # hardcode_minus_L: Not really in the search PATH,
-- # but as the default location of the library.
-- hardcode_minus_L=yes
-- export_dynamic_flag_spec='${wl}-E'
-- ;;
--
-- hpux10* | hpux11*)
-- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-- case $host_cpu in
-- hppa*64*|ia64*)
-- archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- ;;
-- *)
-- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-- ;;
-- esac
-- else
-- case $host_cpu in
-- hppa*64*|ia64*)
-- archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
-- ;;
-- *)
-- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-- ;;
-- esac
-- fi
-- if test "$with_gnu_ld" = no; then
-- case $host_cpu in
-- hppa*64*)
-- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-- hardcode_libdir_flag_spec_ld='+b $libdir'
-- hardcode_libdir_separator=:
-- hardcode_direct=no
-- hardcode_shlibpath_var=no
-- ;;
-- ia64*)
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_direct=no
-- hardcode_shlibpath_var=no
--
-- # hardcode_minus_L: Not really in the search PATH,
-- # but as the default location of the library.
-- hardcode_minus_L=yes
-- ;;
-- *)
-- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-- hardcode_libdir_separator=:
-- hardcode_direct=yes
-- export_dynamic_flag_spec='${wl}-E'
--
-- # hardcode_minus_L: Not really in the search PATH,
-- # but as the default location of the library.
-- hardcode_minus_L=yes
-- ;;
-- esac
-- fi
-- ;;
--
-- irix5* | irix6* | nonstopux*)
-- if test "$GCC" = yes; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- else
-- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- hardcode_libdir_flag_spec_ld='-rpath $libdir'
-- fi
-- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator=:
-- link_all_deplibs=yes
-- ;;
--
-- netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-- else
-- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-- fi
-- hardcode_libdir_flag_spec='-R$libdir'
-- hardcode_direct=yes
-- hardcode_shlibpath_var=no
-- ;;
--
-- newsos6)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct=yes
-- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator=:
-- hardcode_shlibpath_var=no
-- ;;
--
-- openbsd*)
-- hardcode_direct=yes
-- hardcode_shlibpath_var=no
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-- archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-- export_dynamic_flag_spec='${wl}-E'
-- else
-- case $host_os in
-- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec='-R$libdir'
-- ;;
-- *)
-- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-- ;;
-- esac
-- fi
-- ;;
--
-- os2*)
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_minus_L=yes
-- allow_undefined_flag=unsupported
-- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-- old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-- ;;
--
-- osf3*)
-- if test "$GCC" = yes; then
-- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- else
-- allow_undefined_flag=' -expect_unresolved \*'
-- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- fi
-- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator=:
-- ;;
--
-- osf4* | osf5*) # as osf3* with the addition of -msym flag
-- if test "$GCC" = yes; then
-- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-- else
-- allow_undefined_flag=' -expect_unresolved \*'
-- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
--
-- # Both c and cxx compiler support -rpath directly
-- hardcode_libdir_flag_spec='-rpath $libdir'
-- fi
-- hardcode_libdir_separator=:
-- ;;
--
-- sco3.2v5*)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_shlibpath_var=no
-- export_dynamic_flag_spec='${wl}-Bexport'
-- runpath_var=LD_RUN_PATH
-- hardcode_runpath_var=yes
-- ;;
--
-- solaris*)
-- no_undefined_flag=' -z text'
-- if test "$GCC" = yes; then
-- wlarc='${wl}'
-- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-- else
-- wlarc=''
-- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-- fi
-- hardcode_libdir_flag_spec='-R$libdir'
-- hardcode_shlibpath_var=no
-- case $host_os in
-- solaris2.[0-5] | solaris2.[0-5].*) ;;
-- *)
-- # The compiler driver will combine linker options so we
-- # cannot just pass the convience library names through
-- # without $wl, iff we do not link with $LD.
-- # Luckily, gcc supports the same syntax we need for Sun Studio.
-- # Supported since Solaris 2.6 (maybe 2.5.1?)
-- case $wlarc in
-- '')
-- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
-- *)
-- whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
-- esac ;;
-- esac
-- link_all_deplibs=yes
-- ;;
--
-- sunos4*)
-- if test "x$host_vendor" = xsequent; then
-- # Use $CC to link under sequent, because it throws in some extra .o
-- # files that make .init and .fini sections work.
-- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-- else
-- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-- fi
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_direct=yes
-- hardcode_minus_L=yes
-- hardcode_shlibpath_var=no
-- ;;
--
-- sysv4)
-- case $host_vendor in
-- sni)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct=yes # is this really true???
-- ;;
-- siemens)
-- ## LD is ld it makes a PLAMLIB
-- ## CC just makes a GrossModule.
-- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-- reload_cmds='$CC -r -o $output$reload_objs'
-- hardcode_direct=no
-- ;;
-- motorola)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-- ;;
-- esac
-- runpath_var='LD_RUN_PATH'
-- hardcode_shlibpath_var=no
-- ;;
--
-- sysv4.3*)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_shlibpath_var=no
-- export_dynamic_flag_spec='-Bexport'
-- ;;
--
-- sysv4*MP*)
-- if test -d /usr/nec; then
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_shlibpath_var=no
-- runpath_var=LD_RUN_PATH
-- hardcode_runpath_var=yes
-- ld_shlibs=yes
-- fi
-- ;;
--
-- sysv4.2uw2*)
-- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct=yes
-- hardcode_minus_L=no
-- hardcode_shlibpath_var=no
-- hardcode_runpath_var=yes
-- runpath_var=LD_RUN_PATH
-- ;;
--
-- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
-- no_undefined_flag='${wl}-z ${wl}text'
-- if test "$GCC" = yes; then
-- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- else
-- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- fi
-- runpath_var='LD_RUN_PATH'
-- hardcode_shlibpath_var=no
-- ;;
--
-- sysv5*)
-- no_undefined_flag=' -z text'
-- # $CC -shared without GNU ld will not create a library from C++
-- # object files and a static libstdc++, better avoid it by now
-- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-- hardcode_libdir_flag_spec=
-- hardcode_shlibpath_var=no
-- runpath_var='LD_RUN_PATH'
-- ;;
--
-- uts4*)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_shlibpath_var=no
-- ;;
--
-- *)
-- ld_shlibs=no
-- ;;
-- esac
-- fi
--
--echo "$as_me:$LINENO: result: $ld_shlibs" >&5
--echo "${ECHO_T}$ld_shlibs" >&6
--test "$ld_shlibs" = no && can_build_shared=no
--
--variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
--if test "$GCC" = yes; then
-- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
--fi
--
--#
--# Do we need to explicitly link libc?
--#
--case "x$archive_cmds_need_lc" in
--x|xyes)
-- # Assume -lc should be added
-- archive_cmds_need_lc=yes
--
-- if test "$enable_shared" = yes && test "$GCC" = yes; then
-- case $archive_cmds in
-- *'~'*)
-- # FIXME: we may have to deal with multi-command sequences.
-- ;;
-- '$CC '*)
-- # Test whether the compiler implicitly links with -lc since on some
-- # systems, -lgcc has to come before -lc. If gcc already passes -lc
-- # to ld, don't add -lc before -lgcc.
-- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
--echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-- $rm conftest*
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
--
-- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } 2>conftest.err; then
-- soname=conftest
-- lib=conftest
-- libobjs=conftest.$ac_objext
-- deplibs=
-- wl=$lt_prog_compiler_wl
-- compiler_flags=-v
-- linker_flags=-v
-- verstring=
-- output_objdir=.
-- libname=conftest
-- lt_save_allow_undefined_flag=$allow_undefined_flag
-- allow_undefined_flag=
-- if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-- (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }
-- then
-- archive_cmds_need_lc=no
-- else
-- archive_cmds_need_lc=yes
-- fi
-- allow_undefined_flag=$lt_save_allow_undefined_flag
-- else
-- cat conftest.err 1>&5
-- fi
-- $rm conftest*
-- echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
--echo "${ECHO_T}$archive_cmds_need_lc" >&6
-- ;;
-- esac
-- fi
-- ;;
--esac
--
--echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
--echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
--library_names_spec=
--libname_spec='lib$name'
--soname_spec=
--shrext_cmds=".so"
--postinstall_cmds=
--postuninstall_cmds=
--finish_cmds=
--finish_eval=
--shlibpath_var=
--shlibpath_overrides_runpath=unknown
--version_type=none
--dynamic_linker="$host_os ld.so"
--sys_lib_dlsearch_path_spec="/lib /usr/lib"
--if test "$GCC" = yes; then
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-- # if the path contains ";" then we assume it to be the separator
-- # otherwise default to the standard path separator (i.e. ":") - it is
-- # assumed that no part of a normal pathname contains ";" but that should
-- # okay in the real world where ";" in dirpaths is itself problematic.
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-- else
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-- fi
--else
-- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
--fi
--need_lib_prefix=unknown
--hardcode_into_libs=no
--
--# when you set need_version to no, make sure it does not cause -set_version
--# flags to be left without arguments
--need_version=unknown
--
--case $host_os in
--aix3*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-- shlibpath_var=LIBPATH
--
-- # AIX 3 has no versioning support, so we append a major version to the name.
-- soname_spec='${libname}${release}${shared_ext}$major'
-- ;;
--
--aix4* | aix5*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- hardcode_into_libs=yes
-- if test "$host_cpu" = ia64; then
-- # AIX 5 supports IA64
-- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- else
-- # With GCC up to 2.95.x, collect2 would create an import file
-- # for dependence libraries. The import file would start with
-- # the line `#! .'. This would cause the generated library to
-- # depend on `.', always an invalid library. This was fixed in
-- # development snapshots of GCC prior to 3.0.
-- case $host_os in
-- aix4 | aix4.[01] | aix4.[01].*)
-- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-- echo ' yes '
-- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-- :
-- else
-- can_build_shared=no
-- fi
-- ;;
-- esac
-- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-- # soname into executable. Probably we can add versioning support to
-- # collect2, so additional links can be useful in future.
-- if test "$aix_use_runtimelinking" = yes; then
-- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-- # instead of lib<name>.a to let people know that these are not
-- # typical AIX shared libraries.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- else
-- # We preserve .a as extension for shared libraries through AIX4.2
-- # and later when we are not doing run time linking.
-- library_names_spec='${libname}${release}.a $libname.a'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- fi
-- shlibpath_var=LIBPATH
-- fi
-- ;;
--
--amigaos*)
-- library_names_spec='$libname.ixlibrary $libname.a'
-- # Create ${libname}_ixlibrary.a entries in /sys/libs.
-- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-- ;;
--
--beos*)
-- library_names_spec='${libname}${shared_ext}'
-- dynamic_linker="$host_os ld.so"
-- shlibpath_var=LIBRARY_PATH
-- ;;
--
--bsdi[45]*)
-- version_type=linux
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-- # the default ld.so.conf also contains /usr/contrib/lib and
-- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-- # libtool to hard-code these into programs
-- ;;
--
--cygwin* | mingw* | pw32*)
-- version_type=windows
-- shrext_cmds=".dll"
-- need_version=no
-- need_lib_prefix=no
--
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32*)
-- library_names_spec='$libname.dll.a'
-- # DLL is installed to $(libdir)/../bin by postinstall_cmds
-- postinstall_cmds='base_file=`basename \${file}`~
-- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-- dldir=$destdir/`dirname \$dlpath`~
-- test -d \$dldir || mkdir -p \$dldir~
-- $install_prog $dir/$dlname \$dldir/$dlname~
-- chmod a+x \$dldir/$dlname'
-- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-- dlpath=$dir/\$dldll~
-- $rm \$dlpath'
-- shlibpath_overrides_runpath=yes
--
-- case $host_os in
-- cygwin*)
-- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-- ;;
-- mingw*)
-- # MinGW DLLs use traditional 'lib' prefix
-- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-- # It is most probably a Windows format PATH printed by
-- # mingw gcc, but we are running on Cygwin. Gcc prints its search
-- # path with ; separators, and with drive letters. We can handle the
-- # drive letters (cygwin fileutils understands them), so leave them,
-- # especially as we might pass files found there to a mingw objdump,
-- # which wouldn't understand a cygwinified path. Ahh.
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-- else
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-- fi
-- ;;
-- pw32*)
-- # pw32 DLLs use 'pw' prefix rather than 'lib'
-- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-- ;;
-- esac
-- ;;
--
-- *)
-- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-- ;;
-- esac
-- dynamic_linker='Win32 ld.exe'
-- # FIXME: first we should search . and the directory the executable is in
-- shlibpath_var=PATH
-- ;;
--
--darwin* | rhapsody*)
-- dynamic_linker="$host_os dyld"
-- version_type=darwin
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-- soname_spec='${libname}${release}${major}$shared_ext'
-- shlibpath_overrides_runpath=yes
-- shlibpath_var=DYLD_LIBRARY_PATH
-- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-- if test "$GCC" = yes; then
-- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-- else
-- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-- fi
-- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-- ;;
--
--dgux*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
--freebsd1*)
-- dynamic_linker=no
-- ;;
--
--kfreebsd*-gnu)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-- dynamic_linker='GNU ld.so'
-- ;;
--
--freebsd* | dragonfly*)
-- # DragonFly does not have aout. When/if they implement a new
-- # versioning mechanism, adjust this.
-- if test -x /usr/bin/objformat; then
-- objformat=`/usr/bin/objformat`
-- else
-- case $host_os in
-- freebsd[123]*) objformat=aout ;;
-- *) objformat=elf ;;
-- esac
-- fi
-- version_type=freebsd-$objformat
-- case $version_type in
-- freebsd-elf*)
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-- need_version=no
-- need_lib_prefix=no
-- ;;
-- freebsd-*)
-- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-- need_version=yes
-- ;;
-- esac
-- shlibpath_var=LD_LIBRARY_PATH
-- case $host_os in
-- freebsd2*)
-- shlibpath_overrides_runpath=yes
-- ;;
-- freebsd3.[01]* | freebsdelf3.[01]*)
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- ;;
-- *) # from 3.2 on
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-- ;;
-- esac
-- ;;
--
--gnu*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- hardcode_into_libs=yes
-- ;;
--
--hpux9* | hpux10* | hpux11*)
-- # Give a soname corresponding to the major version so that dld.sl refuses to
-- # link against other versions.
-- version_type=sunos
-- need_lib_prefix=no
-- need_version=no
-- case $host_cpu in
-- ia64*)
-- shrext_cmds='.so'
-- hardcode_into_libs=yes
-- dynamic_linker="$host_os dld.so"
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- if test "X$HPUX_IA64_MODE" = X32; then
-- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-- else
-- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-- fi
-- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-- ;;
-- hppa*64*)
-- shrext_cmds='.sl'
-- hardcode_into_libs=yes
-- dynamic_linker="$host_os dld.sl"
-- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-- ;;
-- *)
-- shrext_cmds='.sl'
-- dynamic_linker="$host_os dld.sl"
-- shlibpath_var=SHLIB_PATH
-- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- ;;
-- esac
-- # HP-UX runs *really* slowly unless shared libraries are mode 555.
-- postinstall_cmds='chmod 555 $lib'
-- ;;
--
--irix5* | irix6* | nonstopux*)
-- case $host_os in
-- nonstopux*) version_type=nonstopux ;;
-- *)
-- if test "$lt_cv_prog_gnu_ld" = yes; then
-- version_type=linux
-- else
-- version_type=irix
-- fi ;;
-- esac
-- need_lib_prefix=no
-- need_version=no
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-- case $host_os in
-- irix5* | nonstopux*)
-- libsuff= shlibsuff=
-- ;;
-- *)
-- case $LD in # libtool.m4 will add one of these switches to LD
-- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-- libsuff= shlibsuff= libmagic=32-bit;;
-- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-- libsuff=32 shlibsuff=N32 libmagic=N32;;
-- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-- libsuff=64 shlibsuff=64 libmagic=64-bit;;
-- *) libsuff= shlibsuff= libmagic=never-match;;
-- esac
-- ;;
-- esac
-- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-- shlibpath_overrides_runpath=no
-- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-- hardcode_into_libs=yes
-- ;;
--
--# No shared lib support for Linux oldld, aout, or coff.
--linux*oldld* | linux*aout* | linux*coff*)
-- dynamic_linker=no
-- ;;
--
--# This must be Linux ELF.
--linux*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- # This implies no fast_install, which is unacceptable.
-- # Some rework will be needed to allow for fast_install
-- # before this can be enabled.
-- hardcode_into_libs=yes
--
-- # Append ld.so.conf contents to the search path
-- if test -f /etc/ld.so.conf; then
-- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-- fi
--
-- # We used to test for /lib/ld.so.1 and disable shared libraries on
-- # powerpc, because MkLinux only supported shared libraries with the
-- # GNU dynamic linker. Since this was broken with cross compilers,
-- # most powerpc-linux boxes support dynamic linking these days and
-- # people can always --disable-shared, the test was removed, and we
-- # assume the GNU/Linux dynamic linker is in use.
-- dynamic_linker='GNU/Linux ld.so'
-- ;;
--
--knetbsd*-gnu)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-- dynamic_linker='GNU ld.so'
-- ;;
--
--netbsd*)
-- version_type=sunos
-- need_lib_prefix=no
-- need_version=no
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-- dynamic_linker='NetBSD (a.out) ld.so'
-- else
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- dynamic_linker='NetBSD ld.elf_so'
-- fi
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- ;;
--
--newsos6)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- ;;
--
--nto-qnx*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- ;;
--
--openbsd*)
-- version_type=sunos
-- need_lib_prefix=no
-- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-- case $host_os in
-- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-- *) need_version=no ;;
-- esac
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- case $host_os in
-- openbsd2.[89] | openbsd2.[89].*)
-- shlibpath_overrides_runpath=no
-- ;;
-- *)
-- shlibpath_overrides_runpath=yes
-- ;;
-- esac
-- else
-- shlibpath_overrides_runpath=yes
-- fi
-- ;;
--
--os2*)
-- libname_spec='$name'
-- shrext_cmds=".dll"
-- need_lib_prefix=no
-- library_names_spec='$libname${shared_ext} $libname.a'
-- dynamic_linker='OS/2 ld.exe'
-- shlibpath_var=LIBPATH
-- ;;
--
--osf3* | osf4* | osf5*)
-- version_type=osf
-- need_lib_prefix=no
-- need_version=no
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-- ;;
--
--sco3.2v5*)
-- version_type=osf
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
--solaris*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- # ldd complains unless libraries are executable
-- postinstall_cmds='chmod +x $lib'
-- ;;
--
--sunos4*)
-- version_type=sunos
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- if test "$with_gnu_ld" = yes; then
-- need_lib_prefix=no
-- fi
-- need_version=yes
-- ;;
--
--sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- case $host_vendor in
-- sni)
-- shlibpath_overrides_runpath=no
-- need_lib_prefix=no
-- export_dynamic_flag_spec='${wl}-Blargedynsym'
-- runpath_var=LD_RUN_PATH
-- ;;
-- siemens)
-- need_lib_prefix=no
-- ;;
-- motorola)
-- need_lib_prefix=no
-- need_version=no
-- shlibpath_overrides_runpath=no
-- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-- ;;
-- esac
-- ;;
--
--sysv4*MP*)
-- if test -d /usr/nec ;then
-- version_type=linux
-- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-- soname_spec='$libname${shared_ext}.$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- fi
-- ;;
--
--uts4*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
--*)
-- dynamic_linker=no
-- ;;
--esac
--echo "$as_me:$LINENO: result: $dynamic_linker" >&5
--echo "${ECHO_T}$dynamic_linker" >&6
--test "$dynamic_linker" = no && can_build_shared=no
--
--echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
--echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
--hardcode_action=
--if test -n "$hardcode_libdir_flag_spec" || \
-- test -n "$runpath_var" || \
-- test "X$hardcode_automatic" = "Xyes" ; then
--
-- # We can hardcode non-existant directories.
-- if test "$hardcode_direct" != no &&
-- # If the only mechanism to avoid hardcoding is shlibpath_var, we
-- # have to relink, otherwise we might link with an installed library
-- # when we should be linking with a yet-to-be-installed one
-- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
-- test "$hardcode_minus_L" != no; then
-- # Linking always hardcodes the temporary library directory.
-- hardcode_action=relink
-- else
-- # We can link without hardcoding, and we can hardcode nonexisting dirs.
-- hardcode_action=immediate
-- fi
--else
-- # We cannot hardcode anything, or else we can only hardcode existing
-- # directories.
-- hardcode_action=unsupported
--fi
--echo "$as_me:$LINENO: result: $hardcode_action" >&5
--echo "${ECHO_T}$hardcode_action" >&6
--
--if test "$hardcode_action" = relink; then
-- # Fast installation is not supported
-- enable_fast_install=no
--elif test "$shlibpath_overrides_runpath" = yes ||
-- test "$enable_shared" = no; then
-- # Fast installation is not necessary
-- enable_fast_install=needless
--fi
--
--striplib=
--old_striplib=
--echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
--echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
--if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
--else
--# FIXME - insert some real tests, host_os isn't really good enough
-- case $host_os in
-- darwin*)
-- if test -n "$STRIP" ; then
-- striplib="$STRIP -x"
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
-- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
-- ;;
-- *)
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-- ;;
-- esac
--fi
--
--if test "x$enable_dlopen" != xyes; then
-- enable_dlopen=unknown
-- enable_dlopen_self=unknown
-- enable_dlopen_self_static=unknown
--else
-- lt_cv_dlopen=no
-- lt_cv_dlopen_libs=
--
-- case $host_os in
-- beos*)
-- lt_cv_dlopen="load_add_on"
-- lt_cv_dlopen_libs=
-- lt_cv_dlopen_self=yes
-- ;;
--
-- mingw* | pw32*)
-- lt_cv_dlopen="LoadLibrary"
-- lt_cv_dlopen_libs=
-- ;;
--
-- cygwin*)
-- lt_cv_dlopen="dlopen"
-- lt_cv_dlopen_libs=
-- ;;
--
-- darwin*)
-- # if libdl is installed we need to link against it
-- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
--echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
--if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-ldl $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 dlopen ();
--int
--main ()
--{
--dlopen ();
-- ;
-- 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_lib_dl_dlopen=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_dl_dlopen=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_dl_dlopen" >&5
--echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
--if test $ac_cv_lib_dl_dlopen = yes; then
-- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
--else
--
-- lt_cv_dlopen="dyld"
-- lt_cv_dlopen_libs=
-- lt_cv_dlopen_self=yes
--
--fi
--
-- ;;
--
-- *)
-- echo "$as_me:$LINENO: checking for shl_load" >&5
--echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
--if test "${ac_cv_func_shl_load+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. */
--/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-- For example, HP-UX 11i <limits.h> declares gettimeofday. */
--#define shl_load innocuous_shl_load
--
--/* System header to define __stub macros and hopefully few prototypes,
-- which can conflict with char shl_load (); below.
-- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-- <limits.h> exists even on freestanding compilers. */
--
--#ifdef __STDC__
--# include <limits.h>
--#else
--# include <assert.h>
--#endif
--
--#undef shl_load
--
--/* 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 shl_load ();
--/* 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_shl_load) || defined (__stub___shl_load)
--choke me
--#else
--char (*f) () = shl_load;
--#endif
--#ifdef __cplusplus
--}
--#endif
--
--int
--main ()
--{
--return f != shl_load;
-- ;
-- 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_func_shl_load=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_func_shl_load=no
--fi
--rm -f conftest.err conftest.$ac_objext \
-- conftest$ac_exeext conftest.$ac_ext
--fi
--echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
--echo "${ECHO_T}$ac_cv_func_shl_load" >&6
--if test $ac_cv_func_shl_load = yes; then
-- lt_cv_dlopen="shl_load"
--else
-- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
--echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
--if test "${ac_cv_lib_dld_shl_load+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-ldld $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 shl_load ();
--int
--main ()
--{
--shl_load ();
-- ;
-- 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_lib_dld_shl_load=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_dld_shl_load=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_dld_shl_load" >&5
--echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
--if test $ac_cv_lib_dld_shl_load = yes; then
-- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
--else
-- echo "$as_me:$LINENO: checking for dlopen" >&5
--echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
--if test "${ac_cv_func_dlopen+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. */
--/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-- For example, HP-UX 11i <limits.h> declares gettimeofday. */
--#define dlopen innocuous_dlopen
--
--/* System header to define __stub macros and hopefully few prototypes,
-- which can conflict with char dlopen (); below.
-- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-- <limits.h> exists even on freestanding compilers. */
--
--#ifdef __STDC__
--# include <limits.h>
--#else
--# include <assert.h>
--#endif
--
--#undef dlopen
--
--/* 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 dlopen ();
--/* 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_dlopen) || defined (__stub___dlopen)
--choke me
--#else
--char (*f) () = dlopen;
--#endif
--#ifdef __cplusplus
--}
--#endif
--
--int
--main ()
--{
--return f != dlopen;
-- ;
-- 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_func_dlopen=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_func_dlopen=no
--fi
--rm -f conftest.err conftest.$ac_objext \
-- conftest$ac_exeext conftest.$ac_ext
--fi
--echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
--echo "${ECHO_T}$ac_cv_func_dlopen" >&6
--if test $ac_cv_func_dlopen = yes; then
-- lt_cv_dlopen="dlopen"
--else
-- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
--echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
--if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-ldl $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 dlopen ();
--int
--main ()
--{
--dlopen ();
-- ;
-- 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_lib_dl_dlopen=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_dl_dlopen=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_dl_dlopen" >&5
--echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
--if test $ac_cv_lib_dl_dlopen = yes; then
-- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
--else
-- echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
--echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
--if test "${ac_cv_lib_svld_dlopen+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-lsvld $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 dlopen ();
--int
--main ()
--{
--dlopen ();
-- ;
-- 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_lib_svld_dlopen=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_svld_dlopen=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_svld_dlopen" >&5
--echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
--if test $ac_cv_lib_svld_dlopen = yes; then
-- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
--else
-- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
--echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
--if test "${ac_cv_lib_dld_dld_link+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-ldld $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 dld_link ();
--int
--main ()
--{
--dld_link ();
-- ;
-- 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_lib_dld_dld_link=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_dld_dld_link=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_dld_dld_link" >&5
--echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
--if test $ac_cv_lib_dld_dld_link = yes; then
-- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
--fi
--
--
--fi
--
--
--fi
--
--
--fi
--
--
--fi
--
--
--fi
--
-- ;;
-- esac
--
-- if test "x$lt_cv_dlopen" != xno; then
-- enable_dlopen=yes
-- else
-- enable_dlopen=no
-- fi
--
-- case $lt_cv_dlopen in
-- dlopen)
-- save_CPPFLAGS="$CPPFLAGS"
-- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
--
-- save_LDFLAGS="$LDFLAGS"
-- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
--
-- save_LIBS="$LIBS"
-- LIBS="$lt_cv_dlopen_libs $LIBS"
--
-- echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
--echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
--if test "${lt_cv_dlopen_self+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test "$cross_compiling" = yes; then :
-- lt_cv_dlopen_self=cross
--else
-- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-- lt_status=$lt_dlunknown
-- cat > conftest.$ac_ext <<EOF
--#line 8853 "configure"
--#include "confdefs.h"
--
--#if HAVE_DLFCN_H
--#include <dlfcn.h>
--#endif
--
--#include <stdio.h>
--
--#ifdef RTLD_GLOBAL
--# define LT_DLGLOBAL RTLD_GLOBAL
--#else
--# ifdef DL_GLOBAL
--# define LT_DLGLOBAL DL_GLOBAL
--# else
--# define LT_DLGLOBAL 0
--# endif
--#endif
--
--/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-- find out it does not work in some platform. */
--#ifndef LT_DLLAZY_OR_NOW
--# ifdef RTLD_LAZY
--# define LT_DLLAZY_OR_NOW RTLD_LAZY
--# else
--# ifdef DL_LAZY
--# define LT_DLLAZY_OR_NOW DL_LAZY
--# else
--# ifdef RTLD_NOW
--# define LT_DLLAZY_OR_NOW RTLD_NOW
--# else
--# ifdef DL_NOW
--# define LT_DLLAZY_OR_NOW DL_NOW
--# else
--# define LT_DLLAZY_OR_NOW 0
--# endif
--# endif
--# endif
--# endif
--#endif
--
--#ifdef __cplusplus
--extern "C" void exit (int);
--#endif
--
--void fnord() { int i=42;}
--int main ()
--{
-- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-- int status = $lt_dlunknown;
--
-- if (self)
-- {
-- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-- /* dlclose (self); */
-- }
--
-- exit (status);
--}
--EOF
-- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-- (./conftest; exit; ) >&5 2>/dev/null
-- lt_status=$?
-- case x$lt_status in
-- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-- x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
-- esac
-- else :
-- # compilation failed
-- lt_cv_dlopen_self=no
-- fi
--fi
--rm -fr conftest*
--
--
--fi
--echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
--echo "${ECHO_T}$lt_cv_dlopen_self" >&6
--
-- if test "x$lt_cv_dlopen_self" = xyes; then
-- LDFLAGS="$LDFLAGS $link_static_flag"
-- echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
--echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
--if test "${lt_cv_dlopen_self_static+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test "$cross_compiling" = yes; then :
-- lt_cv_dlopen_self_static=cross
--else
-- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-- lt_status=$lt_dlunknown
-- cat > conftest.$ac_ext <<EOF
--#line 8951 "configure"
--#include "confdefs.h"
--
--#if HAVE_DLFCN_H
--#include <dlfcn.h>
--#endif
--
--#include <stdio.h>
--
--#ifdef RTLD_GLOBAL
--# define LT_DLGLOBAL RTLD_GLOBAL
--#else
--# ifdef DL_GLOBAL
--# define LT_DLGLOBAL DL_GLOBAL
--# else
--# define LT_DLGLOBAL 0
--# endif
--#endif
--
--/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-- find out it does not work in some platform. */
--#ifndef LT_DLLAZY_OR_NOW
--# ifdef RTLD_LAZY
--# define LT_DLLAZY_OR_NOW RTLD_LAZY
--# else
--# ifdef DL_LAZY
--# define LT_DLLAZY_OR_NOW DL_LAZY
--# else
--# ifdef RTLD_NOW
--# define LT_DLLAZY_OR_NOW RTLD_NOW
--# else
--# ifdef DL_NOW
--# define LT_DLLAZY_OR_NOW DL_NOW
--# else
--# define LT_DLLAZY_OR_NOW 0
--# endif
--# endif
--# endif
--# endif
--#endif
--
--#ifdef __cplusplus
--extern "C" void exit (int);
--#endif
--
--void fnord() { int i=42;}
--int main ()
--{
-- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-- int status = $lt_dlunknown;
--
-- if (self)
-- {
-- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-- /* dlclose (self); */
-- }
--
-- exit (status);
--}
--EOF
-- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-- (./conftest; exit; ) >&5 2>/dev/null
-- lt_status=$?
-- case x$lt_status in
-- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
-- esac
-- else :
-- # compilation failed
-- lt_cv_dlopen_self_static=no
-- fi
--fi
--rm -fr conftest*
--
--
--fi
--echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
--echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
-- fi
--
-- CPPFLAGS="$save_CPPFLAGS"
-- LDFLAGS="$save_LDFLAGS"
-- LIBS="$save_LIBS"
-- ;;
-- esac
--
-- case $lt_cv_dlopen_self in
-- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-- *) enable_dlopen_self=unknown ;;
-- esac
--
-- case $lt_cv_dlopen_self_static in
-- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-- *) enable_dlopen_self_static=unknown ;;
-- esac
--fi
--
--
--# Report which librarie types wil actually be built
--echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
--echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
--echo "$as_me:$LINENO: result: $can_build_shared" >&5
--echo "${ECHO_T}$can_build_shared" >&6
--
--echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
--echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
--test "$can_build_shared" = "no" && enable_shared=no
--
--# On AIX, shared libraries and static libraries use the same namespace, and
--# are all built from PIC.
--case $host_os in
--aix3*)
-- test "$enable_shared" = yes && enable_static=no
-- if test -n "$RANLIB"; then
-- archive_cmds="$archive_cmds~\$RANLIB \$lib"
-- postinstall_cmds='$RANLIB $lib'
-- fi
-- ;;
--
--aix4* | aix5*)
-- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-- test "$enable_shared" = yes && enable_static=no
-- fi
-- ;;
--esac
--echo "$as_me:$LINENO: result: $enable_shared" >&5
--echo "${ECHO_T}$enable_shared" >&6
--
--echo "$as_me:$LINENO: checking whether to build static libraries" >&5
--echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
--# Make sure either enable_shared or enable_static is yes.
--test "$enable_shared" = yes || enable_static=yes
--echo "$as_me:$LINENO: result: $enable_static" >&5
--echo "${ECHO_T}$enable_static" >&6
--
--# The else clause should only fire when bootstrapping the
--# libtool distribution, otherwise you forgot to ship ltmain.sh
--# with your package, and you will get complaints that there are
--# no rules to generate ltmain.sh.
--if test -f "$ltmain"; then
-- # See if we are running on zsh, and set the options which allow our commands through
-- # without removal of \ escapes.
-- if test -n "${ZSH_VERSION+set}" ; then
-- setopt NO_GLOB_SUBST
-- fi
-- # Now quote all the things that may contain metacharacters while being
-- # careful not to overquote the AC_SUBSTed values. We take copies of the
-- # variables and quote the copies for generation of the libtool script.
-- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-- SED SHELL STRIP \
-- libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-- old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-- deplibs_check_method reload_flag reload_cmds need_locks \
-- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-- lt_cv_sys_global_symbol_to_c_name_address \
-- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-- old_postinstall_cmds old_postuninstall_cmds \
-- compiler \
-- CC \
-- LD \
-- lt_prog_compiler_wl \
-- lt_prog_compiler_pic \
-- lt_prog_compiler_static \
-- lt_prog_compiler_no_builtin_flag \
-- export_dynamic_flag_spec \
-- thread_safe_flag_spec \
-- whole_archive_flag_spec \
-- enable_shared_with_static_runtimes \
-- old_archive_cmds \
-- old_archive_from_new_cmds \
-- predep_objects \
-- postdep_objects \
-- predeps \
-- postdeps \
-- compiler_lib_search_path \
-- archive_cmds \
-- archive_expsym_cmds \
-- postinstall_cmds \
-- postuninstall_cmds \
-- old_archive_from_expsyms_cmds \
-- allow_undefined_flag \
-- no_undefined_flag \
-- export_symbols_cmds \
-- hardcode_libdir_flag_spec \
-- hardcode_libdir_flag_spec_ld \
-- hardcode_libdir_separator \
-- hardcode_automatic \
-- module_cmds \
-- module_expsym_cmds \
-- lt_cv_prog_compiler_c_o \
-- exclude_expsyms \
-- include_expsyms; do
--
-- case $var in
-- old_archive_cmds | \
-- old_archive_from_new_cmds | \
-- archive_cmds | \
-- archive_expsym_cmds | \
-- module_cmds | \
-- module_expsym_cmds | \
-- old_archive_from_expsyms_cmds | \
-- export_symbols_cmds | \
-- extract_expsyms_cmds | reload_cmds | finish_cmds | \
-- postinstall_cmds | postuninstall_cmds | \
-- old_postinstall_cmds | old_postuninstall_cmds | \
-- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-- # Double-quote double-evaled strings.
-- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-- ;;
-- *)
-- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-- ;;
-- esac
-- done
--
-- case $lt_echo in
-- *'\$0 --fallback-echo"')
-- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-- ;;
-- esac
--
--cfgfile="${ofile}T"
-- trap "$rm \"$cfgfile\"; exit 1" 1 2 15
-- $rm -f "$cfgfile"
-- { echo "$as_me:$LINENO: creating $ofile" >&5
--echo "$as_me: creating $ofile" >&6;}
--
-- cat <<__EOF__ >> "$cfgfile"
--#! $SHELL
--
--# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
--# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
--# NOTE: Changes made to this file will be lost: look at ltmain.sh.
--#
--# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
--# Free Software Foundation, Inc.
--#
--# This file is part of GNU Libtool:
--# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
--#
--# 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.
--#
--# As a special exception to the GNU General Public License, if you
--# distribute this file as part of a program that contains a
--# configuration script generated by Autoconf, you may include it under
--# the same distribution terms that you use for the rest of that program.
--
--# A sed program that does not truncate output.
--SED=$lt_SED
--
--# Sed that helps us avoid accidentally triggering echo(1) options like -n.
--Xsed="$SED -e 1s/^X//"
--
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
--
--# The names of the tagged configurations supported by this script.
--available_tags=
--
--# ### BEGIN LIBTOOL CONFIG
--
--# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
--
--# Shell to use when invoking shell scripts.
--SHELL=$lt_SHELL
--
--# Whether or not to build shared libraries.
--build_libtool_libs=$enable_shared
--
--# Whether or not to build static libraries.
--build_old_libs=$enable_static
--
--# Whether or not to add -lc for building shared libraries.
--build_libtool_need_lc=$archive_cmds_need_lc
--
--# Whether or not to disallow shared libs when runtime libs are static
--allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
--
--# Whether or not to optimize for fast installation.
--fast_install=$enable_fast_install
--
--# The host system.
--host_alias=$host_alias
--host=$host
--host_os=$host_os
--
--# The build system.
--build_alias=$build_alias
--build=$build
--build_os=$build_os
--
--# An echo program that does not interpret backslashes.
--echo=$lt_echo
--
--# The archiver.
--AR=$lt_AR
--AR_FLAGS=$lt_AR_FLAGS
--
--# A C compiler.
--LTCC=$lt_LTCC
--
--# A language-specific compiler.
--CC=$lt_compiler
--
--# Is the compiler the GNU C compiler?
--with_gcc=$GCC
--
--# An ERE matcher.
--EGREP=$lt_EGREP
--
--# The linker used to build libraries.
--LD=$lt_LD
--
--# Whether we need hard or soft links.
--LN_S=$lt_LN_S
--
--# A BSD-compatible nm program.
--NM=$lt_NM
--
--# A symbol stripping program
--STRIP=$lt_STRIP
--
--# Used to examine libraries when file_magic_cmd begins "file"
--MAGIC_CMD=$MAGIC_CMD
--
--# Used on cygwin: DLL creation program.
--DLLTOOL="$DLLTOOL"
--
--# Used on cygwin: object dumper.
--OBJDUMP="$OBJDUMP"
--
--# Used on cygwin: assembler.
--AS="$AS"
--
--# The name of the directory that contains temporary libtool files.
--objdir=$objdir
--
--# How to create reloadable object files.
--reload_flag=$lt_reload_flag
--reload_cmds=$lt_reload_cmds
--
--# How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl
--
--# Object file suffix (normally "o").
--objext="$ac_objext"
--
--# Old archive suffix (normally "a").
--libext="$libext"
--
--# Shared library suffix (normally ".so").
--shrext_cmds='$shrext_cmds'
--
--# Executable file suffix (normally "").
--exeext="$exeext"
--
--# Additional compiler flags for building library objects.
--pic_flag=$lt_lt_prog_compiler_pic
--pic_mode=$pic_mode
--
--# What is the maximum length of a command?
--max_cmd_len=$lt_cv_sys_max_cmd_len
--
--# Does compiler simultaneously support -c and -o options?
--compiler_c_o=$lt_lt_cv_prog_compiler_c_o
--
--# Must we lock files when doing compilation?
--need_locks=$lt_need_locks
--
--# Do we need the lib prefix for modules?
--need_lib_prefix=$need_lib_prefix
--
--# Do we need a version for libraries?
--need_version=$need_version
--
--# Whether dlopen is supported.
--dlopen_support=$enable_dlopen
--
--# Whether dlopen of programs is supported.
--dlopen_self=$enable_dlopen_self
--
--# Whether dlopen of statically linked programs is supported.
--dlopen_self_static=$enable_dlopen_self_static
--
--# Compiler flag to prevent dynamic linking.
--link_static_flag=$lt_lt_prog_compiler_static
--
--# Compiler flag to turn off builtin functions.
--no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
--
--# Compiler flag to allow reflexive dlopens.
--export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
--
--# Compiler flag to generate shared objects directly from archives.
--whole_archive_flag_spec=$lt_whole_archive_flag_spec
--
--# Compiler flag to generate thread-safe objects.
--thread_safe_flag_spec=$lt_thread_safe_flag_spec
--
--# Library versioning type.
--version_type=$version_type
--
--# Format of library name prefix.
--libname_spec=$lt_libname_spec
--
--# List of archive names. First name is the real one, the rest are links.
--# The last name is the one that the linker finds with -lNAME.
--library_names_spec=$lt_library_names_spec
--
--# The coded name of the library, if different from the real name.
--soname_spec=$lt_soname_spec
--
--# Commands used to build and install an old-style archive.
--RANLIB=$lt_RANLIB
--old_archive_cmds=$lt_old_archive_cmds
--old_postinstall_cmds=$lt_old_postinstall_cmds
--old_postuninstall_cmds=$lt_old_postuninstall_cmds
--
--# Create an old-style archive from a shared archive.
--old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
--
--# Create a temporary old-style archive to link instead of a shared archive.
--old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
--
--# Commands used to build and install a shared archive.
--archive_cmds=$lt_archive_cmds
--archive_expsym_cmds=$lt_archive_expsym_cmds
--postinstall_cmds=$lt_postinstall_cmds
--postuninstall_cmds=$lt_postuninstall_cmds
--
--# Commands used to build a loadable module (assumed same as above if empty)
--module_cmds=$lt_module_cmds
--module_expsym_cmds=$lt_module_expsym_cmds
--
--# Commands to strip libraries.
--old_striplib=$lt_old_striplib
--striplib=$lt_striplib
--
--# Dependencies to place before the objects being linked to create a
--# shared library.
--predep_objects=$lt_predep_objects
--
--# Dependencies to place after the objects being linked to create a
--# shared library.
--postdep_objects=$lt_postdep_objects
--
--# Dependencies to place before the objects being linked to create a
--# shared library.
--predeps=$lt_predeps
--
--# Dependencies to place after the objects being linked to create a
--# shared library.
--postdeps=$lt_postdeps
--
--# The library search path used internally by the compiler when linking
--# a shared library.
--compiler_lib_search_path=$lt_compiler_lib_search_path
--
--# Method to check whether dependent libraries are shared objects.
--deplibs_check_method=$lt_deplibs_check_method
--
--# Command to use when deplibs_check_method == file_magic.
--file_magic_cmd=$lt_file_magic_cmd
--
--# Flag that allows shared libraries with undefined symbols to be built.
--allow_undefined_flag=$lt_allow_undefined_flag
--
--# Flag that forces no undefined symbols.
--no_undefined_flag=$lt_no_undefined_flag
--
--# Commands used to finish a libtool library installation in a directory.
--finish_cmds=$lt_finish_cmds
--
--# Same as above, but a single script fragment to be evaled but not shown.
--finish_eval=$lt_finish_eval
--
--# Take the output of nm and produce a listing of raw symbols and C names.
--global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
--
--# Transform the output of nm in a proper C declaration
--global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
--
--# Transform the output of nm in a C name address pair
--global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
--
--# This is the shared library runtime path variable.
--runpath_var=$runpath_var
--
--# This is the shared library path variable.
--shlibpath_var=$shlibpath_var
--
--# Is shlibpath searched before the hard-coded library search path?
--shlibpath_overrides_runpath=$shlibpath_overrides_runpath
--
--# How to hardcode a shared library path into an executable.
--hardcode_action=$hardcode_action
--
--# Whether we should hardcode library paths into libraries.
--hardcode_into_libs=$hardcode_into_libs
--
--# Flag to hardcode \$libdir into a binary during linking.
--# This must work even if \$libdir does not exist.
--hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
--
--# If ld is used when linking, flag to hardcode \$libdir into
--# a binary during linking. This must work even if \$libdir does
--# not exist.
--hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
--
--# Whether we need a single -rpath flag with a separated argument.
--hardcode_libdir_separator=$lt_hardcode_libdir_separator
--
--# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
--# resulting binary.
--hardcode_direct=$hardcode_direct
--
--# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
--# resulting binary.
--hardcode_minus_L=$hardcode_minus_L
--
--# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
--# the resulting binary.
--hardcode_shlibpath_var=$hardcode_shlibpath_var
--
--# Set to yes if building a shared library automatically hardcodes DIR into the library
--# and all subsequent libraries and executables linked against it.
--hardcode_automatic=$hardcode_automatic
--
--# Variables whose values should be saved in libtool wrapper scripts and
--# restored at relink time.
--variables_saved_for_relink="$variables_saved_for_relink"
--
--# Whether libtool must link a program against all its dependency libraries.
--link_all_deplibs=$link_all_deplibs
--
--# Compile-time system search path for libraries
--sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
--
--# Run-time system search path for libraries
--sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
--
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path="$fix_srcfile_path"
--
--# Set to yes if exported symbols are required.
--always_export_symbols=$always_export_symbols
--
--# The commands to list exported symbols.
--export_symbols_cmds=$lt_export_symbols_cmds
--
--# The commands to extract the exported symbol list from a shared archive.
--extract_expsyms_cmds=$lt_extract_expsyms_cmds
--
--# Symbols that should not be listed in the preloaded symbols.
--exclude_expsyms=$lt_exclude_expsyms
--
--# Symbols that must always be exported.
--include_expsyms=$lt_include_expsyms
--
--# ### END LIBTOOL CONFIG
--
--__EOF__
--
--
-- case $host_os in
-- aix3*)
-- cat <<\EOF >> "$cfgfile"
--
--# AIX sometimes has problems with the GCC collect2 program. For some
--# reason, if we set the COLLECT_NAMES environment variable, the problems
--# vanish in a puff of smoke.
--if test "X${COLLECT_NAMES+set}" != Xset; then
-- COLLECT_NAMES=
-- export COLLECT_NAMES
--fi
--EOF
-- ;;
-- esac
--
-- # We use sed instead of cat because bash on DJGPP gets confused if
-- # if finds mixed CR/LF and LF-only lines. Since sed operates in
-- # text mode, it properly converts lines to CR/LF. This bash problem
-- # is reportedly fixed, but why not run on old versions too?
-- sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
--
-- mv -f "$cfgfile" "$ofile" || \
-- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-- chmod +x "$ofile"
--
--else
-- # If there is no Makefile yet, we rely on a make rule to execute
-- # `config.status --recheck' to rerun these tests and create the
-- # libtool script then.
-- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-- if test -f "$ltmain_in"; then
-- test -f Makefile && make "$ltmain"
-- fi
--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
--
--CC="$lt_save_CC"
--
--
--# Check whether --with-tags or --without-tags was given.
--if test "${with_tags+set}" = set; then
-- withval="$with_tags"
-- tagnames="$withval"
--fi;
--
--if test -f "$ltmain" && test -n "$tagnames"; then
-- if test ! -f "${ofile}"; then
-- { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
--echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
-- fi
--
-- if test -z "$LTCC"; then
-- eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
-- if test -z "$LTCC"; then
-- { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
--echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
-- else
-- { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
--echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
-- fi
-- fi
--
-- # Extract list of available tagged configurations in $ofile.
-- # Note that this assumes the entire list is on one line.
-- available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
--
-- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-- for tagname in $tagnames; do
-- IFS="$lt_save_ifs"
-- # Check whether tagname contains only valid characters
-- case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
-- "") ;;
-- *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
--echo "$as_me: error: invalid tag name: $tagname" >&2;}
-- { (exit 1); exit 1; }; }
-- ;;
-- esac
--
-- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
-- then
-- { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
--echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
-- { (exit 1); exit 1; }; }
-- fi
--
-- # Update the list of available tags.
-- if test -n "$tagname"; then
-- echo appending configuration tag \"$tagname\" to $ofile
--
-- case $tagname in
-- CXX)
-- if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-- (test "X$CXX" != "Xg++"))) ; then
-- ac_ext=cc
--ac_cpp='$CXXCPP $CPPFLAGS'
--ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
--ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
--ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
--
--
--
--
--archive_cmds_need_lc_CXX=no
--allow_undefined_flag_CXX=
--always_export_symbols_CXX=no
--archive_expsym_cmds_CXX=
--export_dynamic_flag_spec_CXX=
--hardcode_direct_CXX=no
--hardcode_libdir_flag_spec_CXX=
--hardcode_libdir_flag_spec_ld_CXX=
--hardcode_libdir_separator_CXX=
--hardcode_minus_L_CXX=no
--hardcode_automatic_CXX=no
--module_cmds_CXX=
--module_expsym_cmds_CXX=
--link_all_deplibs_CXX=unknown
--old_archive_cmds_CXX=$old_archive_cmds
--no_undefined_flag_CXX=
--whole_archive_flag_spec_CXX=
--enable_shared_with_static_runtimes_CXX=no
--
--# Dependencies to place before and after the object being linked:
--predep_objects_CXX=
--postdep_objects_CXX=
--predeps_CXX=
--postdeps_CXX=
--compiler_lib_search_path_CXX=
--
--# Source file extension for C++ test sources.
--ac_ext=cpp
--
--# Object file extension for compiled C++ test sources.
--objext=o
--objext_CXX=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code="int some_variable = 0;\n"
--
--# Code to be used in simple link tests
--lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
--
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
--
--# If no C compiler was specified, use CC.
--LTCC=${LTCC-"$CC"}
--
--# Allow CC to be a program name with arguments.
--compiler=$CC
--
--
--# save warnings/boilerplate of simple test code
--ac_outfile=conftest.$ac_objext
--printf "$lt_simple_compile_test_code" >conftest.$ac_ext
--eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
--_lt_compiler_boilerplate=`cat conftest.err`
--$rm conftest*
--
--ac_outfile=conftest.$ac_objext
--printf "$lt_simple_link_test_code" >conftest.$ac_ext
--eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
--_lt_linker_boilerplate=`cat conftest.err`
--$rm conftest*
--
--
--# Allow CC to be a program name with arguments.
--lt_save_CC=$CC
--lt_save_LD=$LD
--lt_save_GCC=$GCC
--GCC=$GXX
--lt_save_with_gnu_ld=$with_gnu_ld
--lt_save_path_LD=$lt_cv_path_LD
--if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
--else
-- unset lt_cv_prog_gnu_ld
--fi
--if test -n "${lt_cv_path_LDCXX+set}"; then
-- lt_cv_path_LD=$lt_cv_path_LDCXX
--else
-- unset lt_cv_path_LD
--fi
--test -z "${LDCXX+set}" || LD=$LDCXX
--CC=${CXX-"c++"}
--compiler=$CC
--compiler_CXX=$CC
--for cc_temp in $compiler""; do
-- case $cc_temp in
-- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-- \-*) ;;
-- *) break;;
-- esac
--done
--cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
--
--
--# We don't want -fno-exception wen compiling C++ code, so set the
--# no_builtin_flag separately
--if test "$GXX" = yes; then
-- lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
--else
-- lt_prog_compiler_no_builtin_flag_CXX=
--fi
--
--if test "$GXX" = yes; then
-- # Set up default GNU C++ configuration
--
--
--# Check whether --with-gnu-ld or --without-gnu-ld was given.
--if test "${with_gnu_ld+set}" = set; then
-- withval="$with_gnu_ld"
-- test "$withval" = no || with_gnu_ld=yes
--else
-- with_gnu_ld=no
--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 $CC" >&5
--echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
-- case $host in
-- *-*-mingw*)
-- # gcc leaves a trailing carriage return which upsets mingw
-- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-- *)
-- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-- esac
-- case $ac_prog in
-- # Accept absolute paths.
-- [\\/]* | ?:[\\/]*)
-- re_direlt='/[^/][^/]*/\.\./'
-- # Canonicalize the pathname of ld
-- ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
-- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-- ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
-- done
-- test -z "$LD" && LD="$ac_prog"
-- ;;
-- "")
-- # If it fails, then pretend we aren't using GCC.
-- ac_prog=ld
-- ;;
-- *)
-- # If it is relative, then search for the first ld in PATH.
-- with_gnu_ld=unknown
-- ;;
-- 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
--else
-- 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
--else
-- if test -z "$LD"; then
-- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-- for ac_dir in $PATH; do
-- IFS="$lt_save_ifs"
-- test -z "$ac_dir" && ac_dir=.
-- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-- lt_cv_path_LD="$ac_dir/$ac_prog"
-- # Check to see if the program is GNU ld. I'd rather use --version,
-- # but apparently some variants of GNU ld only accept -v.
-- # Break only if it was the GNU/non-GNU ld that we prefer.
-- case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-- *GNU* | *'with BFD'*)
-- test "$with_gnu_ld" != no && break
-- ;;
-- *)
-- test "$with_gnu_ld" != yes && break
-- ;;
-- esac
-- fi
-- done
-- IFS="$lt_save_ifs"
--else
-- lt_cv_path_LD="$LD" # Let the user override the test with a path.
--fi
--fi
--
--LD="$lt_cv_path_LD"
--if test -n "$LD"; then
-- 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
--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
--if test "${lt_cv_prog_gnu_ld+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- # I'd rather use --version here, but apparently some GNU lds only accept -v.
--case `$LD -v 2>&1 </dev/null` in
--*GNU* | *'with BFD'*)
-- lt_cv_prog_gnu_ld=yes
-- ;;
--*)
-- lt_cv_prog_gnu_ld=no
-- ;;
--esac
--fi
--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
--
--
--
-- # Check if GNU C++ uses GNU ld as the underlying linker, since the
-- # archiving commands below assume that GNU ld is being used.
-- if test "$with_gnu_ld" = yes; then
-- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--
-- hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-- export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
--
-- # If archive_cmds runs LD, not CC, wlarc should be empty
-- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-- # investigate it a little bit more. (MM)
-- wlarc='${wl}'
--
-- # ancient GNU ld didn't support --whole-archive et. al.
-- if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
-- grep 'no-whole-archive' > /dev/null; then
-- whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-- else
-- whole_archive_flag_spec_CXX=
-- fi
-- else
-- with_gnu_ld=no
-- wlarc=
--
-- # A generic and very simple default shared library creation
-- # command for GNU C++ for the case where it uses the native
-- # linker, instead of GNU ld. If possible, this setting should
-- # overridden to take advantage of the native linker features on
-- # the platform it is being used on.
-- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-- fi
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
--
--else
-- GXX=no
-- with_gnu_ld=no
-- wlarc=
--fi
--
--# PORTME: fill in a description of your system's C++ link characteristics
--echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
--echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
--ld_shlibs_CXX=yes
--case $host_os in
-- aix3*)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- aix4* | aix5*)
-- if test "$host_cpu" = ia64; then
-- # On IA64, the linker does run time linking by default, so we don't
-- # have to do anything special.
-- aix_use_runtimelinking=no
-- exp_sym_flag='-Bexport'
-- no_entry_flag=""
-- else
-- aix_use_runtimelinking=no
--
-- # Test if we are trying to use run time linking or normal
-- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-- # need to do runtime linking.
-- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-- for ld_flag in $LDFLAGS; do
-- case $ld_flag in
-- *-brtl*)
-- aix_use_runtimelinking=yes
-- break
-- ;;
-- esac
-- done
-- esac
--
-- exp_sym_flag='-bexport'
-- no_entry_flag='-bnoentry'
-- fi
--
-- # When large executables or shared objects are built, AIX ld can
-- # have problems creating the table of contents. If linking a library
-- # or program results in "error TOC overflow" add -mminimal-toc to
-- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
--
-- archive_cmds_CXX=''
-- hardcode_direct_CXX=yes
-- hardcode_libdir_separator_CXX=':'
-- link_all_deplibs_CXX=yes
--
-- if test "$GXX" = yes; then
-- case $host_os in aix4.[012]|aix4.[012].*)
-- # We only want to do this on AIX 4.2 and lower, the check
-- # below for broken collect2 doesn't work under 4.3+
-- collect2name=`${CC} -print-prog-name=collect2`
-- if test -f "$collect2name" && \
-- strings "$collect2name" | grep resolve_lib_name >/dev/null
-- then
-- # We have reworked collect2
-- hardcode_direct_CXX=yes
-- else
-- # We have old collect2
-- hardcode_direct_CXX=unsupported
-- # It fails to find uninstalled libraries when the uninstalled
-- # path is not listed in the libpath. Setting hardcode_minus_L
-- # to unsupported forces relinking
-- hardcode_minus_L_CXX=yes
-- hardcode_libdir_flag_spec_CXX='-L$libdir'
-- hardcode_libdir_separator_CXX=
-- fi
-- esac
-- shared_flag='-shared'
-- if test "$aix_use_runtimelinking" = yes; then
-- shared_flag="$shared_flag "'${wl}-G'
-- fi
-- else
-- # not using gcc
-- if test "$host_cpu" = ia64; then
-- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-- # chokes on -Wl,-G. The following line is correct:
-- shared_flag='-G'
-- else
-- if test "$aix_use_runtimelinking" = yes; then
-- shared_flag='${wl}-G'
-- else
-- shared_flag='${wl}-bM:SRE'
-- fi
-- fi
-- fi
--
-- # It seems that -bexpall does not export symbols beginning with
-- # underscore (_), so it is better to generate a list of symbols to export.
-- always_export_symbols_CXX=yes
-- if test "$aix_use_runtimelinking" = yes; then
-- # Warning - without using the other runtime loading flags (-brtl),
-- # -berok will link without error, but may produce a broken library.
-- allow_undefined_flag_CXX='-berok'
-- # Determine the default libpath from the value encoded in an empty executable.
-- 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 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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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
--
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`; 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_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
--
-- hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
--
-- archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-- else
-- if test "$host_cpu" = ia64; then
-- hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
-- allow_undefined_flag_CXX="-z nodefs"
-- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-- else
-- # Determine the default libpath from the value encoded in an empty executable.
-- 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 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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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
--
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`; 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_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
--
-- hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-- # Warning - without using the other run time loading flags,
-- # -berok will link without error, but may produce a broken library.
-- no_undefined_flag_CXX=' ${wl}-bernotok'
-- allow_undefined_flag_CXX=' ${wl}-berok'
-- # -bexpall does not export symbols beginning with underscore (_)
-- always_export_symbols_CXX=yes
-- # Exported symbols can be pulled into shared objects from archives
-- whole_archive_flag_spec_CXX=' '
-- archive_cmds_need_lc_CXX=yes
-- # This is similar to how AIX traditionally builds its shared libraries.
-- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-- fi
-- fi
-- ;;
-- chorus*)
-- case $cc_basename in
-- *)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- esac
-- ;;
--
--
-- cygwin* | mingw* | pw32*)
-- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-- # as there is no search path for DLLs.
-- hardcode_libdir_flag_spec_CXX='-L$libdir'
-- allow_undefined_flag_CXX=unsupported
-- always_export_symbols_CXX=no
-- enable_shared_with_static_runtimes_CXX=yes
--
-- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-- # If the export-symbols file already is a .def file (1st line
-- # is EXPORTS), use it as is; otherwise, prepend...
-- archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-- cp $export_symbols $output_objdir/$soname.def;
-- else
-- echo EXPORTS > $output_objdir/$soname.def;
-- cat $export_symbols >> $output_objdir/$soname.def;
-- fi~
-- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-- else
-- ld_shlibs_CXX=no
-- fi
-- ;;
-- darwin* | rhapsody*)
-- case $host_os in
-- rhapsody* | darwin1.[012])
-- allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
-- ;;
-- *) # Darwin 1.3 on
-- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-- allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-- else
-- case ${MACOSX_DEPLOYMENT_TARGET} in
-- 10.[012])
-- allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-- ;;
-- 10.*)
-- allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
-- ;;
-- esac
-- fi
-- ;;
-- esac
-- archive_cmds_need_lc_CXX=no
-- hardcode_direct_CXX=no
-- hardcode_automatic_CXX=yes
-- hardcode_shlibpath_var_CXX=unsupported
-- whole_archive_flag_spec_CXX=''
-- link_all_deplibs_CXX=yes
--
-- if test "$GXX" = yes ; then
-- lt_int_apple_cc_single_mod=no
-- output_verbose_link_cmd='echo'
-- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
-- lt_int_apple_cc_single_mod=yes
-- fi
-- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-- archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-- else
-- archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-- fi
-- module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-- archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- else
-- archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- fi
-- module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- else
-- case $cc_basename in
-- xlc*)
-- output_verbose_link_cmd='echo'
-- archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
-- module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- ;;
-- *)
-- ld_shlibs_CXX=no
-- ;;
-- esac
-- fi
-- ;;
--
-- dgux*)
-- case $cc_basename in
-- ec++*)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- ghcx*)
-- # Green Hills C++ Compiler
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- *)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- esac
-- ;;
-- freebsd[12]*)
-- # C++ shared libraries reported to be fairly broken before switch to ELF
-- ld_shlibs_CXX=no
-- ;;
-- freebsd-elf*)
-- archive_cmds_need_lc_CXX=no
-- ;;
-- freebsd* | kfreebsd*-gnu | dragonfly*)
-- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-- # conventions
-- ld_shlibs_CXX=yes
-- ;;
-- gnu*)
-- ;;
-- hpux9*)
-- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-- hardcode_libdir_separator_CXX=:
-- export_dynamic_flag_spec_CXX='${wl}-E'
-- hardcode_direct_CXX=yes
-- hardcode_minus_L_CXX=yes # Not in the search PATH,
-- # but as the default
-- # location of the library.
--
-- case $cc_basename in
-- CC*)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- aCC*)
-- archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- #
-- # There doesn't appear to be a way to prevent this compiler from
-- # explicitly linking system object files so we need to strip them
-- # from the output so that they don't get included in the library
-- # dependencies.
-- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-- ;;
-- *)
-- if test "$GXX" = yes; then
-- archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-- else
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- fi
-- ;;
-- esac
-- ;;
-- hpux10*|hpux11*)
-- if test $with_gnu_ld = no; then
-- case $host_cpu in
-- hppa*64*)
-- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-- hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
-- hardcode_libdir_separator_CXX=:
-- ;;
-- ia64*)
-- hardcode_libdir_flag_spec_CXX='-L$libdir'
-- ;;
-- *)
-- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-- hardcode_libdir_separator_CXX=:
-- export_dynamic_flag_spec_CXX='${wl}-E'
-- ;;
-- esac
-- fi
-- case $host_cpu in
-- hppa*64*)
-- hardcode_direct_CXX=no
-- hardcode_shlibpath_var_CXX=no
-- ;;
-- ia64*)
-- hardcode_direct_CXX=no
-- hardcode_shlibpath_var_CXX=no
-- hardcode_minus_L_CXX=yes # Not in the search PATH,
-- # but as the default
-- # location of the library.
-- ;;
-- *)
-- hardcode_direct_CXX=yes
-- hardcode_minus_L_CXX=yes # Not in the search PATH,
-- # but as the default
-- # location of the library.
-- ;;
-- esac
--
-- case $cc_basename in
-- CC*)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- aCC*)
-- case $host_cpu in
-- hppa*64*|ia64*)
-- archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
-- ;;
-- *)
-- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-- ;;
-- esac
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- #
-- # There doesn't appear to be a way to prevent this compiler from
-- # explicitly linking system object files so we need to strip them
-- # from the output so that they don't get included in the library
-- # dependencies.
-- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-- ;;
-- *)
-- if test "$GXX" = yes; then
-- if test $with_gnu_ld = no; then
-- case $host_cpu in
-- ia64*|hppa*64*)
-- archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
-- ;;
-- *)
-- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-- ;;
-- esac
-- fi
-- else
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- fi
-- ;;
-- esac
-- ;;
-- irix5* | irix6*)
-- case $cc_basename in
-- CC*)
-- # SGI C++
-- archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
--
-- # Archives containing C++ object files must be created using
-- # "CC -ar", where "CC" is the IRIX C++ compiler. This is
-- # necessary to make sure instantiated templates are included
-- # in the archive.
-- old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
-- ;;
-- *)
-- if test "$GXX" = yes; then
-- if test "$with_gnu_ld" = no; then
-- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- else
-- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
-- fi
-- fi
-- link_all_deplibs_CXX=yes
-- ;;
-- esac
-- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator_CXX=:
-- ;;
-- linux*)
-- case $cc_basename in
-- KCC*)
-- # Kuck and Associates, Inc. (KAI) C++ Compiler
--
-- # KCC will only create a shared library if the output file
-- # ends with ".so" (or ".sl" for HP-UX), so rename the library
-- # to its proper name (with version) after linking.
-- archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-- archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- #
-- # There doesn't appear to be a way to prevent this compiler from
-- # explicitly linking system object files so we need to strip them
-- # from the output so that they don't get included in the library
-- # dependencies.
-- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
--
-- hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
-- export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
--
-- # Archives containing C++ object files must be created using
-- # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-- old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
-- ;;
-- icpc*)
-- # Intel C++
-- with_gnu_ld=yes
-- # version 8.0 and above of icpc choke on multiply defined symbols
-- # if we add $predep_objects and $postdep_objects, however 7.1 and
-- # earlier do not add the objects themselves.
-- case `$CC -V 2>&1` in
-- *"Version 7."*)
-- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- ;;
-- *) # Version 8.0 or newer
-- tmp_idyn=
-- case $host_cpu in
-- ia64*) tmp_idyn=' -i_dynamic';;
-- esac
-- archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- ;;
-- esac
-- archive_cmds_need_lc_CXX=no
-- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-- export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-- whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-- ;;
-- pgCC*)
-- # Portland Group C++ compiler
-- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
--
-- hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-- export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-- whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-- ;;
-- cxx*)
-- # Compaq C++
-- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
--
-- runpath_var=LD_RUN_PATH
-- hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-- hardcode_libdir_separator_CXX=:
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- #
-- # There doesn't appear to be a way to prevent this compiler from
-- # explicitly linking system object files so we need to strip them
-- # from the output so that they don't get included in the library
-- # dependencies.
-- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-- ;;
-- esac
-- ;;
-- lynxos*)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- m88k*)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- mvs*)
-- case $cc_basename in
-- cxx*)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- *)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- esac
-- ;;
-- netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-- wlarc=
-- hardcode_libdir_flag_spec_CXX='-R$libdir'
-- hardcode_direct_CXX=yes
-- hardcode_shlibpath_var_CXX=no
-- fi
-- # Workaround some broken pre-1.5 toolchains
-- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-- ;;
-- openbsd2*)
-- # C++ shared libraries are fairly broken
-- ld_shlibs_CXX=no
-- ;;
-- openbsd*)
-- hardcode_direct_CXX=yes
-- hardcode_shlibpath_var_CXX=no
-- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-- export_dynamic_flag_spec_CXX='${wl}-E'
-- whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-- fi
-- output_verbose_link_cmd='echo'
-- ;;
-- osf3*)
-- case $cc_basename in
-- KCC*)
-- # Kuck and Associates, Inc. (KAI) C++ Compiler
--
-- # KCC will only create a shared library if the output file
-- # ends with ".so" (or ".sl" for HP-UX), so rename the library
-- # to its proper name (with version) after linking.
-- archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
--
-- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-- hardcode_libdir_separator_CXX=:
--
-- # Archives containing C++ object files must be created using
-- # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-- old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
--
-- ;;
-- RCC*)
-- # Rational C++ 2.4.1
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- cxx*)
-- allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
--
-- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator_CXX=:
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- #
-- # There doesn't appear to be a way to prevent this compiler from
-- # explicitly linking system object files so we need to strip them
-- # from the output so that they don't get included in the library
-- # dependencies.
-- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-- ;;
-- *)
-- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-- allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--
-- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator_CXX=:
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
--
-- else
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- fi
-- ;;
-- esac
-- ;;
-- osf4* | osf5*)
-- case $cc_basename in
-- KCC*)
-- # Kuck and Associates, Inc. (KAI) C++ Compiler
--
-- # KCC will only create a shared library if the output file
-- # ends with ".so" (or ".sl" for HP-UX), so rename the library
-- # to its proper name (with version) after linking.
-- archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
--
-- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-- hardcode_libdir_separator_CXX=:
--
-- # Archives containing C++ object files must be created using
-- # the KAI C++ compiler.
-- old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
-- ;;
-- RCC*)
-- # Rational C++ 2.4.1
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- cxx*)
-- allow_undefined_flag_CXX=' -expect_unresolved \*'
-- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-- echo "-hidden">> $lib.exp~
-- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
-- $rm $lib.exp'
--
-- hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-- hardcode_libdir_separator_CXX=:
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- #
-- # There doesn't appear to be a way to prevent this compiler from
-- # explicitly linking system object files so we need to strip them
-- # from the output so that they don't get included in the library
-- # dependencies.
-- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-- ;;
-- *)
-- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-- allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--
-- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator_CXX=:
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
--
-- else
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- fi
-- ;;
-- esac
-- ;;
-- psos*)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- sco*)
-- archive_cmds_need_lc_CXX=no
-- case $cc_basename in
-- CC*)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- *)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- esac
-- ;;
-- sunos4*)
-- case $cc_basename in
-- CC*)
-- # Sun C++ 4.x
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- lcc*)
-- # Lucid
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- *)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- esac
-- ;;
-- solaris*)
-- case $cc_basename in
-- CC*)
-- # Sun C++ 4.2, 5.x and Centerline C++
-- archive_cmds_need_lc_CXX=yes
-- no_undefined_flag_CXX=' -zdefs'
-- archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-- archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
--
-- hardcode_libdir_flag_spec_CXX='-R$libdir'
-- hardcode_shlibpath_var_CXX=no
-- case $host_os in
-- solaris2.[0-5] | solaris2.[0-5].*) ;;
-- *)
-- # The C++ compiler is used as linker so we must use $wl
-- # flag to pass the commands to the underlying system
-- # linker. We must also pass each convience library through
-- # to the system linker between allextract/defaultextract.
-- # The C++ compiler will combine linker options so we
-- # cannot just pass the convience library names through
-- # without $wl.
-- # Supported since Solaris 2.6 (maybe 2.5.1?)
-- whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
-- ;;
-- esac
-- link_all_deplibs_CXX=yes
--
-- output_verbose_link_cmd='echo'
--
-- # Archives containing C++ object files must be created using
-- # "CC -xar", where "CC" is the Sun C++ compiler. This is
-- # necessary to make sure instantiated templates are included
-- # in the archive.
-- old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-- ;;
-- gcx*)
-- # Green Hills C++ Compiler
-- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
--
-- # The C++ compiler must be used to create the archive.
-- old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-- ;;
-- *)
-- # GNU C++ compiler with Solaris linker
-- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-- no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
-- if $CC --version | grep -v '^2\.7' > /dev/null; then
-- archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-- archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-- else
-- # g++ 2.7 appears to require `-G' NOT `-shared' on this
-- # platform.
-- archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-- archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
--
-- # Commands to make compiler produce verbose output that lists
-- # what "hidden" libraries, object files and flags are used when
-- # linking a shared library.
-- output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-- fi
--
-- hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
-- fi
-- ;;
-- esac
-- ;;
-- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
-- archive_cmds_need_lc_CXX=no
-- ;;
-- tandem*)
-- case $cc_basename in
-- NCC*)
-- # NonStop-UX NCC 3.20
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- *)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- esac
-- ;;
-- vxworks*)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
-- *)
-- # FIXME: insert proper C++ library support
-- ld_shlibs_CXX=no
-- ;;
--esac
--echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
--echo "${ECHO_T}$ld_shlibs_CXX" >&6
--test "$ld_shlibs_CXX" = no && can_build_shared=no
--
--GCC_CXX="$GXX"
--LD_CXX="$LD"
--
--
--cat > conftest.$ac_ext <<EOF
--class Foo
--{
--public:
-- Foo (void) { a = 0; }
--private:
-- int a;
--};
--EOF
--
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; then
-- # Parse the compiler output and extract the necessary
-- # objects, libraries and library flags.
--
-- # Sentinel used to keep track of whether or not we are before
-- # the conftest object file.
-- pre_test_object_deps_done=no
--
-- # The `*' in the case matches for architectures that use `case' in
-- # $output_verbose_cmd can trigger glob expansion during the loop
-- # eval without this substitution.
-- output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
--
-- for p in `eval $output_verbose_link_cmd`; do
-- case $p in
--
-- -L* | -R* | -l*)
-- # Some compilers place space between "-{L,R}" and the path.
-- # Remove the space.
-- if test $p = "-L" \
-- || test $p = "-R"; then
-- prev=$p
-- continue
-- else
-- prev=
-- fi
--
-- if test "$pre_test_object_deps_done" = no; then
-- case $p in
-- -L* | -R*)
-- # Internal compiler library paths should come after those
-- # provided the user. The postdeps already come after the
-- # user supplied libs so there is no need to process them.
-- if test -z "$compiler_lib_search_path_CXX"; then
-- compiler_lib_search_path_CXX="${prev}${p}"
-- else
-- compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
-- fi
-- ;;
-- # The "-l" case would never come before the object being
-- # linked, so don't bother handling this case.
-- esac
-- else
-- if test -z "$postdeps_CXX"; then
-- postdeps_CXX="${prev}${p}"
-- else
-- postdeps_CXX="${postdeps_CXX} ${prev}${p}"
-- fi
-- fi
-- ;;
--
-- *.$objext)
-- # This assumes that the test object file only shows up
-- # once in the compiler output.
-- if test "$p" = "conftest.$objext"; then
-- pre_test_object_deps_done=yes
-- continue
-- fi
--
-- if test "$pre_test_object_deps_done" = no; then
-- if test -z "$predep_objects_CXX"; then
-- predep_objects_CXX="$p"
-- else
-- predep_objects_CXX="$predep_objects_CXX $p"
-- fi
-- else
-- if test -z "$postdep_objects_CXX"; then
-- postdep_objects_CXX="$p"
-- else
-- postdep_objects_CXX="$postdep_objects_CXX $p"
-- fi
-- fi
-- ;;
--
-- *) ;; # Ignore the rest.
--
-- esac
-- done
--
-- # Clean up.
-- rm -f a.out a.exe
--else
-- echo "libtool.m4: error: problem compiling CXX test program"
--fi
--
--$rm -f confest.$objext
--
--# PORTME: override above test on systems where it is broken
--case $host_os in
--solaris*)
-- case $cc_basename in
-- CC*)
-- # Adding this requires a known-good setup of shared libraries for
-- # Sun compiler versions before 5.6, else PIC objects from an old
-- # archive will be linked into the output, leading to subtle bugs.
-- postdeps_CXX='-lCstd -lCrun'
-- ;;
-- esac
--esac
--
--
--case " $postdeps_CXX " in
--*" -lc "*) archive_cmds_need_lc_CXX=no ;;
--esac
--
--lt_prog_compiler_wl_CXX=
--lt_prog_compiler_pic_CXX=
--lt_prog_compiler_static_CXX=
--
--echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
--echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
--
-- # C++ specific cases for pic, static, wl, etc.
-- if test "$GXX" = yes; then
-- lt_prog_compiler_wl_CXX='-Wl,'
-- lt_prog_compiler_static_CXX='-static'
--
-- case $host_os in
-- aix*)
-- # All AIX code is PIC.
-- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- lt_prog_compiler_static_CXX='-Bstatic'
-- fi
-- ;;
-- amigaos*)
-- # FIXME: we need at least 68020 code to build shared libraries, but
-- # adding the `-m68020' flag to GCC prevents building anything better,
-- # like `-m68040'.
-- lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
-- ;;
-- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-- # PIC is the default for these OSes.
-- ;;
-- mingw* | os2* | pw32*)
-- # This hack is so that the source file can tell whether it is being
-- # built for inclusion in a dll (and should export symbols for example).
-- lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-- ;;
-- darwin* | rhapsody*)
-- # PIC is the default on this platform
-- # Common symbols not allowed in MH_DYLIB files
-- lt_prog_compiler_pic_CXX='-fno-common'
-- ;;
-- *djgpp*)
-- # DJGPP does not support shared libraries at all
-- lt_prog_compiler_pic_CXX=
-- ;;
-- sysv4*MP*)
-- if test -d /usr/nec; then
-- lt_prog_compiler_pic_CXX=-Kconform_pic
-- fi
-- ;;
-- hpux*)
-- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-- # not for PA HP-UX.
-- case $host_cpu in
-- hppa*64*|ia64*)
-- ;;
-- *)
-- lt_prog_compiler_pic_CXX='-fPIC'
-- ;;
-- esac
-- ;;
-- *)
-- lt_prog_compiler_pic_CXX='-fPIC'
-- ;;
-- esac
-- else
-- case $host_os in
-- aix4* | aix5*)
-- # All AIX code is PIC.
-- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- lt_prog_compiler_static_CXX='-Bstatic'
-- else
-- lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
-- fi
-- ;;
-- chorus*)
-- case $cc_basename in
-- cxch68*)
-- # Green Hills C++ Compiler
-- # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-- ;;
-- esac
-- ;;
-- darwin*)
-- # PIC is the default on this platform
-- # Common symbols not allowed in MH_DYLIB files
-- case $cc_basename in
-- xlc*)
-- lt_prog_compiler_pic_CXX='-qnocommon'
-- lt_prog_compiler_wl_CXX='-Wl,'
-- ;;
-- esac
-- ;;
-- dgux*)
-- case $cc_basename in
-- ec++*)
-- lt_prog_compiler_pic_CXX='-KPIC'
-- ;;
-- ghcx*)
-- # Green Hills C++ Compiler
-- lt_prog_compiler_pic_CXX='-pic'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- freebsd* | kfreebsd*-gnu | dragonfly*)
-- # FreeBSD uses GNU C++
-- ;;
-- hpux9* | hpux10* | hpux11*)
-- case $cc_basename in
-- CC*)
-- lt_prog_compiler_wl_CXX='-Wl,'
-- lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
-- if test "$host_cpu" != ia64; then
-- lt_prog_compiler_pic_CXX='+Z'
-- fi
-- ;;
-- aCC*)
-- lt_prog_compiler_wl_CXX='-Wl,'
-- lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
-- case $host_cpu in
-- hppa*64*|ia64*)
-- # +Z the default
-- ;;
-- *)
-- lt_prog_compiler_pic_CXX='+Z'
-- ;;
-- esac
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- irix5* | irix6* | nonstopux*)
-- case $cc_basename in
-- CC*)
-- lt_prog_compiler_wl_CXX='-Wl,'
-- lt_prog_compiler_static_CXX='-non_shared'
-- # CC pic flag -KPIC is the default.
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- linux*)
-- case $cc_basename in
-- KCC*)
-- # KAI C++ Compiler
-- lt_prog_compiler_wl_CXX='--backend -Wl,'
-- lt_prog_compiler_pic_CXX='-fPIC'
-- ;;
-- icpc* | ecpc*)
-- # Intel C++
-- lt_prog_compiler_wl_CXX='-Wl,'
-- lt_prog_compiler_pic_CXX='-KPIC'
-- lt_prog_compiler_static_CXX='-static'
-- ;;
-- pgCC*)
-- # Portland Group C++ compiler.
-- lt_prog_compiler_wl_CXX='-Wl,'
-- lt_prog_compiler_pic_CXX='-fpic'
-- lt_prog_compiler_static_CXX='-Bstatic'
-- ;;
-- cxx*)
-- # Compaq C++
-- # Make sure the PIC flag is empty. It appears that all Alpha
-- # Linux and Compaq Tru64 Unix objects are PIC.
-- lt_prog_compiler_pic_CXX=
-- lt_prog_compiler_static_CXX='-non_shared'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- lynxos*)
-- ;;
-- m88k*)
-- ;;
-- mvs*)
-- case $cc_basename in
-- cxx*)
-- lt_prog_compiler_pic_CXX='-W c,exportall'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- netbsd*)
-- ;;
-- osf3* | osf4* | osf5*)
-- case $cc_basename in
-- KCC*)
-- lt_prog_compiler_wl_CXX='--backend -Wl,'
-- ;;
-- RCC*)
-- # Rational C++ 2.4.1
-- lt_prog_compiler_pic_CXX='-pic'
-- ;;
-- cxx*)
-- # Digital/Compaq C++
-- lt_prog_compiler_wl_CXX='-Wl,'
-- # Make sure the PIC flag is empty. It appears that all Alpha
-- # Linux and Compaq Tru64 Unix objects are PIC.
-- lt_prog_compiler_pic_CXX=
-- lt_prog_compiler_static_CXX='-non_shared'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- psos*)
-- ;;
-- sco*)
-- case $cc_basename in
-- CC*)
-- lt_prog_compiler_pic_CXX='-fPIC'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- solaris*)
-- case $cc_basename in
-- CC*)
-- # Sun C++ 4.2, 5.x and Centerline C++
-- lt_prog_compiler_pic_CXX='-KPIC'
-- lt_prog_compiler_static_CXX='-Bstatic'
-- lt_prog_compiler_wl_CXX='-Qoption ld '
-- ;;
-- gcx*)
-- # Green Hills C++ Compiler
-- lt_prog_compiler_pic_CXX='-PIC'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- sunos4*)
-- case $cc_basename in
-- CC*)
-- # Sun C++ 4.x
-- lt_prog_compiler_pic_CXX='-pic'
-- lt_prog_compiler_static_CXX='-Bstatic'
-- ;;
-- lcc*)
-- # Lucid
-- lt_prog_compiler_pic_CXX='-pic'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- tandem*)
-- case $cc_basename in
-- NCC*)
-- # NonStop-UX NCC 3.20
-- lt_prog_compiler_pic_CXX='-KPIC'
-- ;;
-- *)
-- ;;
-- esac
-- ;;
-- unixware*)
-- ;;
-- vxworks*)
-- ;;
-- *)
-- lt_prog_compiler_can_build_shared_CXX=no
-- ;;
-- esac
-- fi
--
--echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
--echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
--
--#
--# Check to make sure the PIC flag actually works.
--#
--if test -n "$lt_prog_compiler_pic_CXX"; then
--
--echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
--echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
--if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- lt_prog_compiler_pic_works_CXX=no
-- ac_outfile=conftest.$ac_objext
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-- lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
-- # Insert the option either (1) after the last *FLAGS variable, or
-- # (2) before a word containing "conftest.", or (3) at the end.
-- # Note that $ac_compile itself does not contain backslashes and begins
-- # with a dollar sign (not a hyphen), so the echo should work correctly.
-- # The option is referenced via a variable to avoid confusing sed.
-- lt_compile=`echo "$ac_compile" | $SED \
-- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:11206: $lt_compile\"" >&5)
-- (eval "$lt_compile" 2>conftest.err)
-- ac_status=$?
-- cat conftest.err >&5
-- echo "$as_me:11210: \$? = $ac_status" >&5
-- if (exit $ac_status) && test -s "$ac_outfile"; then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings other than the usual output.
-- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-- $SED '/^$/d' conftest.err >conftest.er2
-- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
-- lt_prog_compiler_pic_works_CXX=yes
-- fi
-- fi
-- $rm conftest*
--
--fi
--echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
--echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
--
--if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
-- case $lt_prog_compiler_pic_CXX in
-- "" | " "*) ;;
-- *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
-- esac
--else
-- lt_prog_compiler_pic_CXX=
-- lt_prog_compiler_can_build_shared_CXX=no
--fi
--
--fi
--case $host_os in
-- # For platforms which do not support PIC, -DPIC is meaningless:
-- *djgpp*)
-- lt_prog_compiler_pic_CXX=
-- ;;
-- *)
-- lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
-- ;;
--esac
--
--echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
--echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
--if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- lt_cv_prog_compiler_c_o_CXX=no
-- $rm -r conftest 2>/dev/null
-- mkdir conftest
-- cd conftest
-- mkdir out
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
--
-- lt_compiler_flag="-o out/conftest2.$ac_objext"
-- # Insert the option either (1) after the last *FLAGS variable, or
-- # (2) before a word containing "conftest.", or (3) at the end.
-- # Note that $ac_compile itself does not contain backslashes and begins
-- # with a dollar sign (not a hyphen), so the echo should work correctly.
-- lt_compile=`echo "$ac_compile" | $SED \
-- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:11268: $lt_compile\"" >&5)
-- (eval "$lt_compile" 2>out/conftest.err)
-- ac_status=$?
-- cat out/conftest.err >&5
-- echo "$as_me:11272: \$? = $ac_status" >&5
-- if (exit $ac_status) && test -s out/conftest2.$ac_objext
-- then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings
-- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
-- $SED '/^$/d' out/conftest.err >out/conftest.er2
-- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-- lt_cv_prog_compiler_c_o_CXX=yes
-- fi
-- fi
-- chmod u+w . 2>&5
-- $rm conftest*
-- # SGI C++ compiler will create directory out/ii_files/ for
-- # template instantiation
-- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-- $rm out/* && rmdir out
-- cd ..
-- rmdir conftest
-- $rm conftest*
--
--fi
--echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
--echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
--
--
--hard_links="nottested"
--if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
-- # do not overwrite the value of need_locks provided by the user
-- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
--echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-- hard_links=yes
-- $rm conftest*
-- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- touch conftest.a
-- ln conftest.a conftest.b 2>&5 || hard_links=no
-- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- echo "$as_me:$LINENO: result: $hard_links" >&5
--echo "${ECHO_T}$hard_links" >&6
-- if test "$hard_links" = no; then
-- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
--echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-- need_locks=warn
-- fi
--else
-- need_locks=no
--fi
--
--echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
--echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
--
-- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-- case $host_os in
-- aix4* | aix5*)
-- # If we're using GNU nm, then we don't want the "-C" option.
-- # -C means demangle to AIX nm, but means don't demangle with GNU nm
-- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-- export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-- else
-- export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-- fi
-- ;;
-- pw32*)
-- export_symbols_cmds_CXX="$ltdll_cmds"
-- ;;
-- cygwin* | mingw*)
-- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
-- ;;
-- *)
-- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-- ;;
-- esac
--
--echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
--echo "${ECHO_T}$ld_shlibs_CXX" >&6
--test "$ld_shlibs_CXX" = no && can_build_shared=no
--
--variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
--if test "$GCC" = yes; then
-- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
--fi
--
--#
--# Do we need to explicitly link libc?
--#
--case "x$archive_cmds_need_lc_CXX" in
--x|xyes)
-- # Assume -lc should be added
-- archive_cmds_need_lc_CXX=yes
--
-- if test "$enable_shared" = yes && test "$GCC" = yes; then
-- case $archive_cmds_CXX in
-- *'~'*)
-- # FIXME: we may have to deal with multi-command sequences.
-- ;;
-- '$CC '*)
-- # Test whether the compiler implicitly links with -lc since on some
-- # systems, -lgcc has to come before -lc. If gcc already passes -lc
-- # to ld, don't add -lc before -lgcc.
-- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
--echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-- $rm conftest*
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
--
-- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } 2>conftest.err; then
-- soname=conftest
-- lib=conftest
-- libobjs=conftest.$ac_objext
-- deplibs=
-- wl=$lt_prog_compiler_wl_CXX
-- compiler_flags=-v
-- linker_flags=-v
-- verstring=
-- output_objdir=.
-- libname=conftest
-- lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
-- allow_undefined_flag_CXX=
-- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-- (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }
-- then
-- archive_cmds_need_lc_CXX=no
-- else
-- archive_cmds_need_lc_CXX=yes
-- fi
-- allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
-- else
-- cat conftest.err 1>&5
-- fi
-- $rm conftest*
-- echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
--echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
-- ;;
-- esac
-- fi
-- ;;
--esac
--
--echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
--echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
--library_names_spec=
--libname_spec='lib$name'
--soname_spec=
--shrext_cmds=".so"
--postinstall_cmds=
--postuninstall_cmds=
--finish_cmds=
--finish_eval=
--shlibpath_var=
--shlibpath_overrides_runpath=unknown
--version_type=none
--dynamic_linker="$host_os ld.so"
--sys_lib_dlsearch_path_spec="/lib /usr/lib"
--if test "$GCC" = yes; then
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-- # if the path contains ";" then we assume it to be the separator
-- # otherwise default to the standard path separator (i.e. ":") - it is
-- # assumed that no part of a normal pathname contains ";" but that should
-- # okay in the real world where ";" in dirpaths is itself problematic.
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-- else
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-- fi
--else
-- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
--fi
--need_lib_prefix=unknown
--hardcode_into_libs=no
--
--# when you set need_version to no, make sure it does not cause -set_version
--# flags to be left without arguments
--need_version=unknown
--
--case $host_os in
--aix3*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-- shlibpath_var=LIBPATH
--
-- # AIX 3 has no versioning support, so we append a major version to the name.
-- soname_spec='${libname}${release}${shared_ext}$major'
-- ;;
--
--aix4* | aix5*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- hardcode_into_libs=yes
-- if test "$host_cpu" = ia64; then
-- # AIX 5 supports IA64
-- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- else
-- # With GCC up to 2.95.x, collect2 would create an import file
-- # for dependence libraries. The import file would start with
-- # the line `#! .'. This would cause the generated library to
-- # depend on `.', always an invalid library. This was fixed in
-- # development snapshots of GCC prior to 3.0.
-- case $host_os in
-- aix4 | aix4.[01] | aix4.[01].*)
-- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-- echo ' yes '
-- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-- :
-- else
-- can_build_shared=no
-- fi
-- ;;
-- esac
-- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-- # soname into executable. Probably we can add versioning support to
-- # collect2, so additional links can be useful in future.
-- if test "$aix_use_runtimelinking" = yes; then
-- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-- # instead of lib<name>.a to let people know that these are not
-- # typical AIX shared libraries.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- else
-- # We preserve .a as extension for shared libraries through AIX4.2
-- # and later when we are not doing run time linking.
-- library_names_spec='${libname}${release}.a $libname.a'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- fi
-- shlibpath_var=LIBPATH
-- fi
-- ;;
--
--amigaos*)
-- library_names_spec='$libname.ixlibrary $libname.a'
-- # Create ${libname}_ixlibrary.a entries in /sys/libs.
-- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-- ;;
--
--beos*)
-- library_names_spec='${libname}${shared_ext}'
-- dynamic_linker="$host_os ld.so"
-- shlibpath_var=LIBRARY_PATH
-- ;;
--
--bsdi[45]*)
-- version_type=linux
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-- # the default ld.so.conf also contains /usr/contrib/lib and
-- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-- # libtool to hard-code these into programs
-- ;;
--
--cygwin* | mingw* | pw32*)
-- version_type=windows
-- shrext_cmds=".dll"
-- need_version=no
-- need_lib_prefix=no
--
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32*)
-- library_names_spec='$libname.dll.a'
-- # DLL is installed to $(libdir)/../bin by postinstall_cmds
-- postinstall_cmds='base_file=`basename \${file}`~
-- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-- dldir=$destdir/`dirname \$dlpath`~
-- test -d \$dldir || mkdir -p \$dldir~
-- $install_prog $dir/$dlname \$dldir/$dlname~
-- chmod a+x \$dldir/$dlname'
-- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-- dlpath=$dir/\$dldll~
-- $rm \$dlpath'
-- shlibpath_overrides_runpath=yes
--
-- case $host_os in
-- cygwin*)
-- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-- ;;
-- mingw*)
-- # MinGW DLLs use traditional 'lib' prefix
-- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-- # It is most probably a Windows format PATH printed by
-- # mingw gcc, but we are running on Cygwin. Gcc prints its search
-- # path with ; separators, and with drive letters. We can handle the
-- # drive letters (cygwin fileutils understands them), so leave them,
-- # especially as we might pass files found there to a mingw objdump,
-- # which wouldn't understand a cygwinified path. Ahh.
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-- else
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-- fi
-- ;;
-- pw32*)
-- # pw32 DLLs use 'pw' prefix rather than 'lib'
-- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-- ;;
-- esac
-- ;;
--
-- *)
-- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-- ;;
-- esac
-- dynamic_linker='Win32 ld.exe'
-- # FIXME: first we should search . and the directory the executable is in
-- shlibpath_var=PATH
-- ;;
--
--darwin* | rhapsody*)
-- dynamic_linker="$host_os dyld"
-- version_type=darwin
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-- soname_spec='${libname}${release}${major}$shared_ext'
-- shlibpath_overrides_runpath=yes
-- shlibpath_var=DYLD_LIBRARY_PATH
-- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-- if test "$GCC" = yes; then
-- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-- else
-- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-- fi
-- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-- ;;
--
--dgux*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
--freebsd1*)
-- dynamic_linker=no
-- ;;
--
--kfreebsd*-gnu)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-- dynamic_linker='GNU ld.so'
-- ;;
--
--freebsd* | dragonfly*)
-- # DragonFly does not have aout. When/if they implement a new
-- # versioning mechanism, adjust this.
-- if test -x /usr/bin/objformat; then
-- objformat=`/usr/bin/objformat`
-- else
-- case $host_os in
-- freebsd[123]*) objformat=aout ;;
-- *) objformat=elf ;;
-- esac
-- fi
-- version_type=freebsd-$objformat
-- case $version_type in
-- freebsd-elf*)
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-- need_version=no
-- need_lib_prefix=no
-- ;;
-- freebsd-*)
-- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-- need_version=yes
-- ;;
-- esac
-- shlibpath_var=LD_LIBRARY_PATH
-- case $host_os in
-- freebsd2*)
-- shlibpath_overrides_runpath=yes
-- ;;
-- freebsd3.[01]* | freebsdelf3.[01]*)
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- ;;
-- *) # from 3.2 on
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-- ;;
-- esac
-- ;;
--
--gnu*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- hardcode_into_libs=yes
-- ;;
--
--hpux9* | hpux10* | hpux11*)
-- # Give a soname corresponding to the major version so that dld.sl refuses to
-- # link against other versions.
-- version_type=sunos
-- need_lib_prefix=no
-- need_version=no
-- case $host_cpu in
-- ia64*)
-- shrext_cmds='.so'
-- hardcode_into_libs=yes
-- dynamic_linker="$host_os dld.so"
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- if test "X$HPUX_IA64_MODE" = X32; then
-- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-- else
-- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-- fi
-- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-- ;;
-- hppa*64*)
-- shrext_cmds='.sl'
-- hardcode_into_libs=yes
-- dynamic_linker="$host_os dld.sl"
-- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-- ;;
-- *)
-- shrext_cmds='.sl'
-- dynamic_linker="$host_os dld.sl"
-- shlibpath_var=SHLIB_PATH
-- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- ;;
-- esac
-- # HP-UX runs *really* slowly unless shared libraries are mode 555.
-- postinstall_cmds='chmod 555 $lib'
-- ;;
--
--irix5* | irix6* | nonstopux*)
-- case $host_os in
-- nonstopux*) version_type=nonstopux ;;
-- *)
-- if test "$lt_cv_prog_gnu_ld" = yes; then
-- version_type=linux
-- else
-- version_type=irix
-- fi ;;
-- esac
-- need_lib_prefix=no
-- need_version=no
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-- case $host_os in
-- irix5* | nonstopux*)
-- libsuff= shlibsuff=
-- ;;
-- *)
-- case $LD in # libtool.m4 will add one of these switches to LD
-- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-- libsuff= shlibsuff= libmagic=32-bit;;
-- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-- libsuff=32 shlibsuff=N32 libmagic=N32;;
-- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-- libsuff=64 shlibsuff=64 libmagic=64-bit;;
-- *) libsuff= shlibsuff= libmagic=never-match;;
-- esac
-- ;;
-- esac
-- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-- shlibpath_overrides_runpath=no
-- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-- hardcode_into_libs=yes
-- ;;
--
--# No shared lib support for Linux oldld, aout, or coff.
--linux*oldld* | linux*aout* | linux*coff*)
-- dynamic_linker=no
-- ;;
--
--# This must be Linux ELF.
--linux*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- # This implies no fast_install, which is unacceptable.
-- # Some rework will be needed to allow for fast_install
-- # before this can be enabled.
-- hardcode_into_libs=yes
--
-- # Append ld.so.conf contents to the search path
-- if test -f /etc/ld.so.conf; then
-- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-- fi
--
-- # We used to test for /lib/ld.so.1 and disable shared libraries on
-- # powerpc, because MkLinux only supported shared libraries with the
-- # GNU dynamic linker. Since this was broken with cross compilers,
-- # most powerpc-linux boxes support dynamic linking these days and
-- # people can always --disable-shared, the test was removed, and we
-- # assume the GNU/Linux dynamic linker is in use.
-- dynamic_linker='GNU/Linux ld.so'
-- ;;
--
--knetbsd*-gnu)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-- dynamic_linker='GNU ld.so'
-- ;;
--
--netbsd*)
-- version_type=sunos
-- need_lib_prefix=no
-- need_version=no
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-- dynamic_linker='NetBSD (a.out) ld.so'
-- else
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- dynamic_linker='NetBSD ld.elf_so'
-- fi
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- ;;
--
--newsos6)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- ;;
--
--nto-qnx*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- ;;
--
--openbsd*)
-- version_type=sunos
-- need_lib_prefix=no
-- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-- case $host_os in
-- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-- *) need_version=no ;;
-- esac
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- case $host_os in
-- openbsd2.[89] | openbsd2.[89].*)
-- shlibpath_overrides_runpath=no
-- ;;
-- *)
-- shlibpath_overrides_runpath=yes
-- ;;
-- esac
-- else
-- shlibpath_overrides_runpath=yes
-- fi
-- ;;
--
--os2*)
-- libname_spec='$name'
-- shrext_cmds=".dll"
-- need_lib_prefix=no
-- library_names_spec='$libname${shared_ext} $libname.a'
-- dynamic_linker='OS/2 ld.exe'
-- shlibpath_var=LIBPATH
-- ;;
--
--osf3* | osf4* | osf5*)
-- version_type=osf
-- need_lib_prefix=no
-- need_version=no
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-- ;;
--
--sco3.2v5*)
-- version_type=osf
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
--solaris*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- # ldd complains unless libraries are executable
-- postinstall_cmds='chmod +x $lib'
-- ;;
--
--sunos4*)
-- version_type=sunos
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- if test "$with_gnu_ld" = yes; then
-- need_lib_prefix=no
-- fi
-- need_version=yes
-- ;;
--
--sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- case $host_vendor in
-- sni)
-- shlibpath_overrides_runpath=no
-- need_lib_prefix=no
-- export_dynamic_flag_spec='${wl}-Blargedynsym'
-- runpath_var=LD_RUN_PATH
-- ;;
-- siemens)
-- need_lib_prefix=no
-- ;;
-- motorola)
-- need_lib_prefix=no
-- need_version=no
-- shlibpath_overrides_runpath=no
-- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-- ;;
-- esac
-- ;;
--
--sysv4*MP*)
-- if test -d /usr/nec ;then
-- version_type=linux
-- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-- soname_spec='$libname${shared_ext}.$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- fi
-- ;;
--
--uts4*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
--*)
-- dynamic_linker=no
-- ;;
--esac
--echo "$as_me:$LINENO: result: $dynamic_linker" >&5
--echo "${ECHO_T}$dynamic_linker" >&6
--test "$dynamic_linker" = no && can_build_shared=no
--
--echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
--echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
--hardcode_action_CXX=
--if test -n "$hardcode_libdir_flag_spec_CXX" || \
-- test -n "$runpath_var_CXX" || \
-- test "X$hardcode_automatic_CXX" = "Xyes" ; then
--
-- # We can hardcode non-existant directories.
-- if test "$hardcode_direct_CXX" != no &&
-- # If the only mechanism to avoid hardcoding is shlibpath_var, we
-- # have to relink, otherwise we might link with an installed library
-- # when we should be linking with a yet-to-be-installed one
-- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
-- test "$hardcode_minus_L_CXX" != no; then
-- # Linking always hardcodes the temporary library directory.
-- hardcode_action_CXX=relink
-- else
-- # We can link without hardcoding, and we can hardcode nonexisting dirs.
-- hardcode_action_CXX=immediate
-- fi
--else
-- # We cannot hardcode anything, or else we can only hardcode existing
-- # directories.
-- hardcode_action_CXX=unsupported
--fi
--echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
--echo "${ECHO_T}$hardcode_action_CXX" >&6
--
--if test "$hardcode_action_CXX" = relink; then
-- # Fast installation is not supported
-- enable_fast_install=no
--elif test "$shlibpath_overrides_runpath" = yes ||
-- test "$enable_shared" = no; then
-- # Fast installation is not necessary
-- enable_fast_install=needless
--fi
--
--striplib=
--old_striplib=
--echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
--echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
--if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
--else
--# FIXME - insert some real tests, host_os isn't really good enough
-- case $host_os in
-- darwin*)
-- if test -n "$STRIP" ; then
-- striplib="$STRIP -x"
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
-- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
-- ;;
-- *)
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-- ;;
-- esac
--fi
--
--if test "x$enable_dlopen" != xyes; then
-- enable_dlopen=unknown
-- enable_dlopen_self=unknown
-- enable_dlopen_self_static=unknown
--else
-- lt_cv_dlopen=no
-- lt_cv_dlopen_libs=
--
-- case $host_os in
-- beos*)
-- lt_cv_dlopen="load_add_on"
-- lt_cv_dlopen_libs=
-- lt_cv_dlopen_self=yes
-- ;;
--
-- mingw* | pw32*)
-- lt_cv_dlopen="LoadLibrary"
-- lt_cv_dlopen_libs=
-- ;;
--
-- cygwin*)
-- lt_cv_dlopen="dlopen"
-- lt_cv_dlopen_libs=
-- ;;
--
-- darwin*)
-- # if libdl is installed we need to link against it
-- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
--echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
--if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-ldl $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 dlopen ();
--int
--main ()
--{
--dlopen ();
-- ;
-- 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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_dl_dlopen=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_dl_dlopen=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_dl_dlopen" >&5
--echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
--if test $ac_cv_lib_dl_dlopen = yes; then
-- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
--else
--
-- lt_cv_dlopen="dyld"
-- lt_cv_dlopen_libs=
-- lt_cv_dlopen_self=yes
--
--fi
--
-- ;;
--
-- *)
-- echo "$as_me:$LINENO: checking for shl_load" >&5
--echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
--if test "${ac_cv_func_shl_load+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. */
--/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-- For example, HP-UX 11i <limits.h> declares gettimeofday. */
--#define shl_load innocuous_shl_load
--
--/* System header to define __stub macros and hopefully few prototypes,
-- which can conflict with char shl_load (); below.
-- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-- <limits.h> exists even on freestanding compilers. */
--
--#ifdef __STDC__
--# include <limits.h>
--#else
--# include <assert.h>
--#endif
--
--#undef shl_load
--
--/* 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 shl_load ();
--/* 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_shl_load) || defined (__stub___shl_load)
--choke me
--#else
--char (*f) () = shl_load;
--#endif
--#ifdef __cplusplus
--}
--#endif
--
--int
--main ()
--{
--return f != shl_load;
-- ;
-- 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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_func_shl_load=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_func_shl_load=no
--fi
--rm -f conftest.err conftest.$ac_objext \
-- conftest$ac_exeext conftest.$ac_ext
--fi
--echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
--echo "${ECHO_T}$ac_cv_func_shl_load" >&6
--if test $ac_cv_func_shl_load = yes; then
-- lt_cv_dlopen="shl_load"
--else
-- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
--echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
--if test "${ac_cv_lib_dld_shl_load+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-ldld $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 shl_load ();
--int
--main ()
--{
--shl_load ();
-- ;
-- 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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_dld_shl_load=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_dld_shl_load=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_dld_shl_load" >&5
--echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
--if test $ac_cv_lib_dld_shl_load = yes; then
-- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
--else
-- echo "$as_me:$LINENO: checking for dlopen" >&5
--echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
--if test "${ac_cv_func_dlopen+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. */
--/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-- For example, HP-UX 11i <limits.h> declares gettimeofday. */
--#define dlopen innocuous_dlopen
--
--/* System header to define __stub macros and hopefully few prototypes,
-- which can conflict with char dlopen (); below.
-- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-- <limits.h> exists even on freestanding compilers. */
--
--#ifdef __STDC__
--# include <limits.h>
--#else
--# include <assert.h>
--#endif
--
--#undef dlopen
--
--/* 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 dlopen ();
--/* 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_dlopen) || defined (__stub___dlopen)
--choke me
--#else
--char (*f) () = dlopen;
--#endif
--#ifdef __cplusplus
--}
--#endif
--
--int
--main ()
--{
--return f != dlopen;
-- ;
-- 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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_func_dlopen=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_func_dlopen=no
--fi
--rm -f conftest.err conftest.$ac_objext \
-- conftest$ac_exeext conftest.$ac_ext
--fi
--echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
--echo "${ECHO_T}$ac_cv_func_dlopen" >&6
--if test $ac_cv_func_dlopen = yes; then
-- lt_cv_dlopen="dlopen"
--else
-- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
--echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
--if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-ldl $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 dlopen ();
--int
--main ()
--{
--dlopen ();
-- ;
-- 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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_dl_dlopen=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_dl_dlopen=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_dl_dlopen" >&5
--echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
--if test $ac_cv_lib_dl_dlopen = yes; then
-- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
--else
-- echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
--echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
--if test "${ac_cv_lib_svld_dlopen+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-lsvld $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 dlopen ();
--int
--main ()
--{
--dlopen ();
-- ;
-- 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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_svld_dlopen=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_svld_dlopen=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_svld_dlopen" >&5
--echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
--if test $ac_cv_lib_svld_dlopen = yes; then
-- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
--else
-- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
--echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
--if test "${ac_cv_lib_dld_dld_link+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-ldld $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 dld_link ();
--int
--main ()
--{
--dld_link ();
-- ;
-- 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_cxx_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_dld_dld_link=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_dld_dld_link=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_dld_dld_link" >&5
--echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
--if test $ac_cv_lib_dld_dld_link = yes; then
-- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
--fi
--
--
--fi
--
--
--fi
--
--
--fi
--
--
--fi
--
--
--fi
--
-- ;;
-- esac
--
-- if test "x$lt_cv_dlopen" != xno; then
-- enable_dlopen=yes
-- else
-- enable_dlopen=no
-- fi
--
-- case $lt_cv_dlopen in
-- dlopen)
-- save_CPPFLAGS="$CPPFLAGS"
-- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
--
-- save_LDFLAGS="$LDFLAGS"
-- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
--
-- save_LIBS="$LIBS"
-- LIBS="$lt_cv_dlopen_libs $LIBS"
--
-- echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
--echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
--if test "${lt_cv_dlopen_self+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test "$cross_compiling" = yes; then :
-- lt_cv_dlopen_self=cross
--else
-- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-- lt_status=$lt_dlunknown
-- cat > conftest.$ac_ext <<EOF
--#line 12645 "configure"
--#include "confdefs.h"
--
--#if HAVE_DLFCN_H
--#include <dlfcn.h>
--#endif
--
--#include <stdio.h>
--
--#ifdef RTLD_GLOBAL
--# define LT_DLGLOBAL RTLD_GLOBAL
--#else
--# ifdef DL_GLOBAL
--# define LT_DLGLOBAL DL_GLOBAL
--# else
--# define LT_DLGLOBAL 0
--# endif
--#endif
--
--/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-- find out it does not work in some platform. */
--#ifndef LT_DLLAZY_OR_NOW
--# ifdef RTLD_LAZY
--# define LT_DLLAZY_OR_NOW RTLD_LAZY
--# else
--# ifdef DL_LAZY
--# define LT_DLLAZY_OR_NOW DL_LAZY
--# else
--# ifdef RTLD_NOW
--# define LT_DLLAZY_OR_NOW RTLD_NOW
--# else
--# ifdef DL_NOW
--# define LT_DLLAZY_OR_NOW DL_NOW
--# else
--# define LT_DLLAZY_OR_NOW 0
--# endif
--# endif
--# endif
--# endif
--#endif
--
--#ifdef __cplusplus
--extern "C" void exit (int);
--#endif
--
--void fnord() { int i=42;}
--int main ()
--{
-- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-- int status = $lt_dlunknown;
--
-- if (self)
-- {
-- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-- /* dlclose (self); */
-- }
--
-- exit (status);
--}
--EOF
-- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-- (./conftest; exit; ) >&5 2>/dev/null
-- lt_status=$?
-- case x$lt_status in
-- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-- x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
-- esac
-- else :
-- # compilation failed
-- lt_cv_dlopen_self=no
-- fi
--fi
--rm -fr conftest*
--
--
--fi
--echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
--echo "${ECHO_T}$lt_cv_dlopen_self" >&6
--
-- if test "x$lt_cv_dlopen_self" = xyes; then
-- LDFLAGS="$LDFLAGS $link_static_flag"
-- echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
--echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
--if test "${lt_cv_dlopen_self_static+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test "$cross_compiling" = yes; then :
-- lt_cv_dlopen_self_static=cross
--else
-- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-- lt_status=$lt_dlunknown
-- cat > conftest.$ac_ext <<EOF
--#line 12743 "configure"
--#include "confdefs.h"
--
--#if HAVE_DLFCN_H
--#include <dlfcn.h>
--#endif
--
--#include <stdio.h>
--
--#ifdef RTLD_GLOBAL
--# define LT_DLGLOBAL RTLD_GLOBAL
--#else
--# ifdef DL_GLOBAL
--# define LT_DLGLOBAL DL_GLOBAL
--# else
--# define LT_DLGLOBAL 0
--# endif
--#endif
--
--/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-- find out it does not work in some platform. */
--#ifndef LT_DLLAZY_OR_NOW
--# ifdef RTLD_LAZY
--# define LT_DLLAZY_OR_NOW RTLD_LAZY
--# else
--# ifdef DL_LAZY
--# define LT_DLLAZY_OR_NOW DL_LAZY
--# else
--# ifdef RTLD_NOW
--# define LT_DLLAZY_OR_NOW RTLD_NOW
--# else
--# ifdef DL_NOW
--# define LT_DLLAZY_OR_NOW DL_NOW
--# else
--# define LT_DLLAZY_OR_NOW 0
--# endif
--# endif
--# endif
--# endif
--#endif
--
--#ifdef __cplusplus
--extern "C" void exit (int);
--#endif
--
--void fnord() { int i=42;}
--int main ()
--{
-- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-- int status = $lt_dlunknown;
--
-- if (self)
-- {
-- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-- /* dlclose (self); */
-- }
--
-- exit (status);
--}
--EOF
-- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-- (./conftest; exit; ) >&5 2>/dev/null
-- lt_status=$?
-- case x$lt_status in
-- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
-- esac
-- else :
-- # compilation failed
-- lt_cv_dlopen_self_static=no
-- fi
--fi
--rm -fr conftest*
--
--
--fi
--echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
--echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
-- fi
--
-- CPPFLAGS="$save_CPPFLAGS"
-- LDFLAGS="$save_LDFLAGS"
-- LIBS="$save_LIBS"
-- ;;
-- esac
--
-- case $lt_cv_dlopen_self in
-- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-- *) enable_dlopen_self=unknown ;;
-- esac
--
-- case $lt_cv_dlopen_self_static in
-- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-- *) enable_dlopen_self_static=unknown ;;
-- esac
--fi
--
--
--# The else clause should only fire when bootstrapping the
--# libtool distribution, otherwise you forgot to ship ltmain.sh
--# with your package, and you will get complaints that there are
--# no rules to generate ltmain.sh.
--if test -f "$ltmain"; then
-- # See if we are running on zsh, and set the options which allow our commands through
-- # without removal of \ escapes.
-- if test -n "${ZSH_VERSION+set}" ; then
-- setopt NO_GLOB_SUBST
-- fi
-- # Now quote all the things that may contain metacharacters while being
-- # careful not to overquote the AC_SUBSTed values. We take copies of the
-- # variables and quote the copies for generation of the libtool script.
-- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-- SED SHELL STRIP \
-- libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-- old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-- deplibs_check_method reload_flag reload_cmds need_locks \
-- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-- lt_cv_sys_global_symbol_to_c_name_address \
-- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-- old_postinstall_cmds old_postuninstall_cmds \
-- compiler_CXX \
-- CC_CXX \
-- LD_CXX \
-- lt_prog_compiler_wl_CXX \
-- lt_prog_compiler_pic_CXX \
-- lt_prog_compiler_static_CXX \
-- lt_prog_compiler_no_builtin_flag_CXX \
-- export_dynamic_flag_spec_CXX \
-- thread_safe_flag_spec_CXX \
-- whole_archive_flag_spec_CXX \
-- enable_shared_with_static_runtimes_CXX \
-- old_archive_cmds_CXX \
-- old_archive_from_new_cmds_CXX \
-- predep_objects_CXX \
-- postdep_objects_CXX \
-- predeps_CXX \
-- postdeps_CXX \
-- compiler_lib_search_path_CXX \
-- archive_cmds_CXX \
-- archive_expsym_cmds_CXX \
-- postinstall_cmds_CXX \
-- postuninstall_cmds_CXX \
-- old_archive_from_expsyms_cmds_CXX \
-- allow_undefined_flag_CXX \
-- no_undefined_flag_CXX \
-- export_symbols_cmds_CXX \
-- hardcode_libdir_flag_spec_CXX \
-- hardcode_libdir_flag_spec_ld_CXX \
-- hardcode_libdir_separator_CXX \
-- hardcode_automatic_CXX \
-- module_cmds_CXX \
-- module_expsym_cmds_CXX \
-- lt_cv_prog_compiler_c_o_CXX \
-- exclude_expsyms_CXX \
-- include_expsyms_CXX; do
--
-- case $var in
-- old_archive_cmds_CXX | \
-- old_archive_from_new_cmds_CXX | \
-- archive_cmds_CXX | \
-- archive_expsym_cmds_CXX | \
-- module_cmds_CXX | \
-- module_expsym_cmds_CXX | \
-- old_archive_from_expsyms_cmds_CXX | \
-- export_symbols_cmds_CXX | \
-- extract_expsyms_cmds | reload_cmds | finish_cmds | \
-- postinstall_cmds | postuninstall_cmds | \
-- old_postinstall_cmds | old_postuninstall_cmds | \
-- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-- # Double-quote double-evaled strings.
-- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-- ;;
-- *)
-- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-- ;;
-- esac
-- done
--
-- case $lt_echo in
-- *'\$0 --fallback-echo"')
-- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-- ;;
-- esac
--
--cfgfile="$ofile"
--
-- cat <<__EOF__ >> "$cfgfile"
--# ### BEGIN LIBTOOL TAG CONFIG: $tagname
--
--# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
--
--# Shell to use when invoking shell scripts.
--SHELL=$lt_SHELL
--
--# Whether or not to build shared libraries.
--build_libtool_libs=$enable_shared
--
--# Whether or not to build static libraries.
--build_old_libs=$enable_static
--
--# Whether or not to add -lc for building shared libraries.
--build_libtool_need_lc=$archive_cmds_need_lc_CXX
--
--# Whether or not to disallow shared libs when runtime libs are static
--allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
--
--# Whether or not to optimize for fast installation.
--fast_install=$enable_fast_install
--
--# The host system.
--host_alias=$host_alias
--host=$host
--host_os=$host_os
--
--# The build system.
--build_alias=$build_alias
--build=$build
--build_os=$build_os
--
--# An echo program that does not interpret backslashes.
--echo=$lt_echo
--
--# The archiver.
--AR=$lt_AR
--AR_FLAGS=$lt_AR_FLAGS
--
--# A C compiler.
--LTCC=$lt_LTCC
--
--# A language-specific compiler.
--CC=$lt_compiler_CXX
--
--# Is the compiler the GNU C compiler?
--with_gcc=$GCC_CXX
--
--# An ERE matcher.
--EGREP=$lt_EGREP
--
--# The linker used to build libraries.
--LD=$lt_LD_CXX
--
--# Whether we need hard or soft links.
--LN_S=$lt_LN_S
--
--# A BSD-compatible nm program.
--NM=$lt_NM
--
--# A symbol stripping program
--STRIP=$lt_STRIP
--
--# Used to examine libraries when file_magic_cmd begins "file"
--MAGIC_CMD=$MAGIC_CMD
--
--# Used on cygwin: DLL creation program.
--DLLTOOL="$DLLTOOL"
--
--# Used on cygwin: object dumper.
--OBJDUMP="$OBJDUMP"
--
--# Used on cygwin: assembler.
--AS="$AS"
--
--# The name of the directory that contains temporary libtool files.
--objdir=$objdir
--
--# How to create reloadable object files.
--reload_flag=$lt_reload_flag
--reload_cmds=$lt_reload_cmds
--
--# How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl_CXX
--
--# Object file suffix (normally "o").
--objext="$ac_objext"
--
--# Old archive suffix (normally "a").
--libext="$libext"
--
--# Shared library suffix (normally ".so").
--shrext_cmds='$shrext_cmds'
--
--# Executable file suffix (normally "").
--exeext="$exeext"
--
--# Additional compiler flags for building library objects.
--pic_flag=$lt_lt_prog_compiler_pic_CXX
--pic_mode=$pic_mode
--
--# What is the maximum length of a command?
--max_cmd_len=$lt_cv_sys_max_cmd_len
--
--# Does compiler simultaneously support -c and -o options?
--compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
--
--# Must we lock files when doing compilation?
--need_locks=$lt_need_locks
--
--# Do we need the lib prefix for modules?
--need_lib_prefix=$need_lib_prefix
--
--# Do we need a version for libraries?
--need_version=$need_version
--
--# Whether dlopen is supported.
--dlopen_support=$enable_dlopen
--
--# Whether dlopen of programs is supported.
--dlopen_self=$enable_dlopen_self
--
--# Whether dlopen of statically linked programs is supported.
--dlopen_self_static=$enable_dlopen_self_static
--
--# Compiler flag to prevent dynamic linking.
--link_static_flag=$lt_lt_prog_compiler_static_CXX
--
--# Compiler flag to turn off builtin functions.
--no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
--
--# Compiler flag to allow reflexive dlopens.
--export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
--
--# Compiler flag to generate shared objects directly from archives.
--whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
--
--# Compiler flag to generate thread-safe objects.
--thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
--
--# Library versioning type.
--version_type=$version_type
--
--# Format of library name prefix.
--libname_spec=$lt_libname_spec
--
--# List of archive names. First name is the real one, the rest are links.
--# The last name is the one that the linker finds with -lNAME.
--library_names_spec=$lt_library_names_spec
--
--# The coded name of the library, if different from the real name.
--soname_spec=$lt_soname_spec
--
--# Commands used to build and install an old-style archive.
--RANLIB=$lt_RANLIB
--old_archive_cmds=$lt_old_archive_cmds_CXX
--old_postinstall_cmds=$lt_old_postinstall_cmds
--old_postuninstall_cmds=$lt_old_postuninstall_cmds
--
--# Create an old-style archive from a shared archive.
--old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
--
--# Create a temporary old-style archive to link instead of a shared archive.
--old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
--
--# Commands used to build and install a shared archive.
--archive_cmds=$lt_archive_cmds_CXX
--archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
--postinstall_cmds=$lt_postinstall_cmds
--postuninstall_cmds=$lt_postuninstall_cmds
--
--# Commands used to build a loadable module (assumed same as above if empty)
--module_cmds=$lt_module_cmds_CXX
--module_expsym_cmds=$lt_module_expsym_cmds_CXX
--
--# Commands to strip libraries.
--old_striplib=$lt_old_striplib
--striplib=$lt_striplib
--
--# Dependencies to place before the objects being linked to create a
--# shared library.
--predep_objects=$lt_predep_objects_CXX
--
--# Dependencies to place after the objects being linked to create a
--# shared library.
--postdep_objects=$lt_postdep_objects_CXX
--
--# Dependencies to place before the objects being linked to create a
--# shared library.
--predeps=$lt_predeps_CXX
--
--# Dependencies to place after the objects being linked to create a
--# shared library.
--postdeps=$lt_postdeps_CXX
--
--# The library search path used internally by the compiler when linking
--# a shared library.
--compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
--
--# Method to check whether dependent libraries are shared objects.
--deplibs_check_method=$lt_deplibs_check_method
--
--# Command to use when deplibs_check_method == file_magic.
--file_magic_cmd=$lt_file_magic_cmd
--
--# Flag that allows shared libraries with undefined symbols to be built.
--allow_undefined_flag=$lt_allow_undefined_flag_CXX
--
--# Flag that forces no undefined symbols.
--no_undefined_flag=$lt_no_undefined_flag_CXX
--
--# Commands used to finish a libtool library installation in a directory.
--finish_cmds=$lt_finish_cmds
--
--# Same as above, but a single script fragment to be evaled but not shown.
--finish_eval=$lt_finish_eval
--
--# Take the output of nm and produce a listing of raw symbols and C names.
--global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
--
--# Transform the output of nm in a proper C declaration
--global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
--
--# Transform the output of nm in a C name address pair
--global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
--
--# This is the shared library runtime path variable.
--runpath_var=$runpath_var
--
--# This is the shared library path variable.
--shlibpath_var=$shlibpath_var
--
--# Is shlibpath searched before the hard-coded library search path?
--shlibpath_overrides_runpath=$shlibpath_overrides_runpath
--
--# How to hardcode a shared library path into an executable.
--hardcode_action=$hardcode_action_CXX
--
--# Whether we should hardcode library paths into libraries.
--hardcode_into_libs=$hardcode_into_libs
--
--# Flag to hardcode \$libdir into a binary during linking.
--# This must work even if \$libdir does not exist.
--hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
--
--# If ld is used when linking, flag to hardcode \$libdir into
--# a binary during linking. This must work even if \$libdir does
--# not exist.
--hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
--
--# Whether we need a single -rpath flag with a separated argument.
--hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
--
--# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
--# resulting binary.
--hardcode_direct=$hardcode_direct_CXX
--
--# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
--# resulting binary.
--hardcode_minus_L=$hardcode_minus_L_CXX
--
--# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
--# the resulting binary.
--hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
--
--# Set to yes if building a shared library automatically hardcodes DIR into the library
--# and all subsequent libraries and executables linked against it.
--hardcode_automatic=$hardcode_automatic_CXX
--
--# Variables whose values should be saved in libtool wrapper scripts and
--# restored at relink time.
--variables_saved_for_relink="$variables_saved_for_relink"
--
--# Whether libtool must link a program against all its dependency libraries.
--link_all_deplibs=$link_all_deplibs_CXX
--
--# Compile-time system search path for libraries
--sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
--
--# Run-time system search path for libraries
--sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
--
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path="$fix_srcfile_path_CXX"
--
--# Set to yes if exported symbols are required.
--always_export_symbols=$always_export_symbols_CXX
--
--# The commands to list exported symbols.
--export_symbols_cmds=$lt_export_symbols_cmds_CXX
--
--# The commands to extract the exported symbol list from a shared archive.
--extract_expsyms_cmds=$lt_extract_expsyms_cmds
--
--# Symbols that should not be listed in the preloaded symbols.
--exclude_expsyms=$lt_exclude_expsyms_CXX
--
--# Symbols that must always be exported.
--include_expsyms=$lt_include_expsyms_CXX
--
--# ### END LIBTOOL TAG CONFIG: $tagname
--
--__EOF__
--
--
--else
-- # If there is no Makefile yet, we rely on a make rule to execute
-- # `config.status --recheck' to rerun these tests and create the
-- # libtool script then.
-- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-- if test -f "$ltmain_in"; then
-- test -f Makefile && make "$ltmain"
-- fi
--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
--
--CC=$lt_save_CC
--LDCXX=$LD
--LD=$lt_save_LD
--GCC=$lt_save_GCC
--with_gnu_ldcxx=$with_gnu_ld
--with_gnu_ld=$lt_save_with_gnu_ld
--lt_cv_path_LDCXX=$lt_cv_path_LD
--lt_cv_path_LD=$lt_save_path_LD
--lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
--lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
--
-- else
-- tagname=""
-- fi
-- ;;
--
-- F77)
-- if test -n "$F77" && test "X$F77" != "Xno"; then
--
--ac_ext=f
--ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
--ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
--ac_compiler_gnu=$ac_cv_f77_compiler_gnu
--
--
--archive_cmds_need_lc_F77=no
--allow_undefined_flag_F77=
--always_export_symbols_F77=no
--archive_expsym_cmds_F77=
--export_dynamic_flag_spec_F77=
--hardcode_direct_F77=no
--hardcode_libdir_flag_spec_F77=
--hardcode_libdir_flag_spec_ld_F77=
--hardcode_libdir_separator_F77=
--hardcode_minus_L_F77=no
--hardcode_automatic_F77=no
--module_cmds_F77=
--module_expsym_cmds_F77=
--link_all_deplibs_F77=unknown
--old_archive_cmds_F77=$old_archive_cmds
--no_undefined_flag_F77=
--whole_archive_flag_spec_F77=
--enable_shared_with_static_runtimes_F77=no
--
--# Source file extension for f77 test sources.
--ac_ext=f
--
--# Object file extension for compiled f77 test sources.
--objext=o
--objext_F77=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code=" subroutine t\n return\n end\n"
--
--# Code to be used in simple link tests
--lt_simple_link_test_code=" program t\n end\n"
--
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
--
--# If no C compiler was specified, use CC.
--LTCC=${LTCC-"$CC"}
--
--# Allow CC to be a program name with arguments.
--compiler=$CC
--
--
--# save warnings/boilerplate of simple test code
--ac_outfile=conftest.$ac_objext
--printf "$lt_simple_compile_test_code" >conftest.$ac_ext
--eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
--_lt_compiler_boilerplate=`cat conftest.err`
--$rm conftest*
--
--ac_outfile=conftest.$ac_objext
--printf "$lt_simple_link_test_code" >conftest.$ac_ext
--eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
--_lt_linker_boilerplate=`cat conftest.err`
--$rm conftest*
--
--
--# Allow CC to be a program name with arguments.
--lt_save_CC="$CC"
--CC=${F77-"f77"}
--compiler=$CC
--compiler_F77=$CC
--for cc_temp in $compiler""; do
-- case $cc_temp in
-- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-- \-*) ;;
-- *) break;;
-- esac
--done
--cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
--
--
--echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
--echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
--echo "$as_me:$LINENO: result: $can_build_shared" >&5
--echo "${ECHO_T}$can_build_shared" >&6
--
--echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
--echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
--test "$can_build_shared" = "no" && enable_shared=no
--
--# On AIX, shared libraries and static libraries use the same namespace, and
--# are all built from PIC.
--case $host_os in
--aix3*)
-- test "$enable_shared" = yes && enable_static=no
-- if test -n "$RANLIB"; then
-- archive_cmds="$archive_cmds~\$RANLIB \$lib"
-- postinstall_cmds='$RANLIB $lib'
-- fi
-- ;;
--aix4* | aix5*)
-- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-- test "$enable_shared" = yes && enable_static=no
-- fi
-- ;;
--esac
--echo "$as_me:$LINENO: result: $enable_shared" >&5
--echo "${ECHO_T}$enable_shared" >&6
--
--echo "$as_me:$LINENO: checking whether to build static libraries" >&5
--echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
--# Make sure either enable_shared or enable_static is yes.
--test "$enable_shared" = yes || enable_static=yes
--echo "$as_me:$LINENO: result: $enable_static" >&5
--echo "${ECHO_T}$enable_static" >&6
--
--test "$ld_shlibs_F77" = no && can_build_shared=no
--
--GCC_F77="$G77"
--LD_F77="$LD"
--
--lt_prog_compiler_wl_F77=
--lt_prog_compiler_pic_F77=
--lt_prog_compiler_static_F77=
--
--echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
--echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
--
-- if test "$GCC" = yes; then
-- lt_prog_compiler_wl_F77='-Wl,'
-- lt_prog_compiler_static_F77='-static'
--
-- case $host_os in
-- aix*)
-- # All AIX code is PIC.
-- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- lt_prog_compiler_static_F77='-Bstatic'
-- fi
-- ;;
--
-- amigaos*)
-- # FIXME: we need at least 68020 code to build shared libraries, but
-- # adding the `-m68020' flag to GCC prevents building anything better,
-- # like `-m68040'.
-- lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
-- ;;
--
-- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-- # PIC is the default for these OSes.
-- ;;
--
-- mingw* | pw32* | os2*)
-- # This hack is so that the source file can tell whether it is being
-- # built for inclusion in a dll (and should export symbols for example).
-- lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-- ;;
--
-- darwin* | rhapsody*)
-- # PIC is the default on this platform
-- # Common symbols not allowed in MH_DYLIB files
-- lt_prog_compiler_pic_F77='-fno-common'
-- ;;
--
-- msdosdjgpp*)
-- # Just because we use GCC doesn't mean we suddenly get shared libraries
-- # on systems that don't support them.
-- lt_prog_compiler_can_build_shared_F77=no
-- enable_shared=no
-- ;;
--
-- sysv4*MP*)
-- if test -d /usr/nec; then
-- lt_prog_compiler_pic_F77=-Kconform_pic
-- fi
-- ;;
--
-- hpux*)
-- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-- # not for PA HP-UX.
-- case $host_cpu in
-- hppa*64*|ia64*)
-- # +Z the default
-- ;;
-- *)
-- lt_prog_compiler_pic_F77='-fPIC'
-- ;;
-- esac
-- ;;
--
-- *)
-- lt_prog_compiler_pic_F77='-fPIC'
-- ;;
-- esac
-- else
-- # PORTME Check for flag to pass linker flags through the system compiler.
-- case $host_os in
-- aix*)
-- lt_prog_compiler_wl_F77='-Wl,'
-- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- lt_prog_compiler_static_F77='-Bstatic'
-- else
-- lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
-- fi
-- ;;
-- darwin*)
-- # PIC is the default on this platform
-- # Common symbols not allowed in MH_DYLIB files
-- case $cc_basename in
-- xlc*)
-- lt_prog_compiler_pic_F77='-qnocommon'
-- lt_prog_compiler_wl_F77='-Wl,'
-- ;;
-- esac
-- ;;
--
-- mingw* | pw32* | os2*)
-- # This hack is so that the source file can tell whether it is being
-- # built for inclusion in a dll (and should export symbols for example).
-- lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-- ;;
--
-- hpux9* | hpux10* | hpux11*)
-- lt_prog_compiler_wl_F77='-Wl,'
-- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-- # not for PA HP-UX.
-- case $host_cpu in
-- hppa*64*|ia64*)
-- # +Z the default
-- ;;
-- *)
-- lt_prog_compiler_pic_F77='+Z'
-- ;;
-- esac
-- # Is there a better lt_prog_compiler_static that works with the bundled CC?
-- lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
-- ;;
--
-- irix5* | irix6* | nonstopux*)
-- lt_prog_compiler_wl_F77='-Wl,'
-- # PIC (with -KPIC) is the default.
-- lt_prog_compiler_static_F77='-non_shared'
-- ;;
--
-- newsos6)
-- lt_prog_compiler_pic_F77='-KPIC'
-- lt_prog_compiler_static_F77='-Bstatic'
-- ;;
--
-- linux*)
-- case $cc_basename in
-- icc* | ecc*)
-- lt_prog_compiler_wl_F77='-Wl,'
-- lt_prog_compiler_pic_F77='-KPIC'
-- lt_prog_compiler_static_F77='-static'
-- ;;
-- pgcc* | pgf77* | pgf90* | pgf95*)
-- # Portland Group compilers (*not* the Pentium gcc compiler,
-- # which looks to be a dead project)
-- lt_prog_compiler_wl_F77='-Wl,'
-- lt_prog_compiler_pic_F77='-fpic'
-- lt_prog_compiler_static_F77='-Bstatic'
-- ;;
-- ccc*)
-- lt_prog_compiler_wl_F77='-Wl,'
-- # All Alpha code is PIC.
-- lt_prog_compiler_static_F77='-non_shared'
-- ;;
-- esac
-- ;;
--
-- osf3* | osf4* | osf5*)
-- lt_prog_compiler_wl_F77='-Wl,'
-- # All OSF/1 code is PIC.
-- lt_prog_compiler_static_F77='-non_shared'
-- ;;
--
-- sco3.2v5*)
-- lt_prog_compiler_pic_F77='-Kpic'
-- lt_prog_compiler_static_F77='-dn'
-- ;;
--
-- solaris*)
-- lt_prog_compiler_pic_F77='-KPIC'
-- lt_prog_compiler_static_F77='-Bstatic'
-- case $cc_basename in
-- f77* | f90* | f95*)
-- lt_prog_compiler_wl_F77='-Qoption ld ';;
-- *)
-- lt_prog_compiler_wl_F77='-Wl,';;
-- esac
-- ;;
--
-- sunos4*)
-- lt_prog_compiler_wl_F77='-Qoption ld '
-- lt_prog_compiler_pic_F77='-PIC'
-- lt_prog_compiler_static_F77='-Bstatic'
-- ;;
--
-- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-- lt_prog_compiler_wl_F77='-Wl,'
-- lt_prog_compiler_pic_F77='-KPIC'
-- lt_prog_compiler_static_F77='-Bstatic'
-- ;;
--
-- sysv4*MP*)
-- if test -d /usr/nec ;then
-- lt_prog_compiler_pic_F77='-Kconform_pic'
-- lt_prog_compiler_static_F77='-Bstatic'
-- fi
-- ;;
--
-- unicos*)
-- lt_prog_compiler_wl_F77='-Wl,'
-- lt_prog_compiler_can_build_shared_F77=no
-- ;;
--
-- uts4*)
-- lt_prog_compiler_pic_F77='-pic'
-- lt_prog_compiler_static_F77='-Bstatic'
-- ;;
--
-- *)
-- lt_prog_compiler_can_build_shared_F77=no
-- ;;
-- esac
-- fi
--
--echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
--echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
--
--#
--# Check to make sure the PIC flag actually works.
--#
--if test -n "$lt_prog_compiler_pic_F77"; then
--
--echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
--echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
--if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- lt_prog_compiler_pic_works_F77=no
-- ac_outfile=conftest.$ac_objext
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-- lt_compiler_flag="$lt_prog_compiler_pic_F77"
-- # Insert the option either (1) after the last *FLAGS variable, or
-- # (2) before a word containing "conftest.", or (3) at the end.
-- # Note that $ac_compile itself does not contain backslashes and begins
-- # with a dollar sign (not a hyphen), so the echo should work correctly.
-- # The option is referenced via a variable to avoid confusing sed.
-- lt_compile=`echo "$ac_compile" | $SED \
-- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:13628: $lt_compile\"" >&5)
-- (eval "$lt_compile" 2>conftest.err)
-- ac_status=$?
-- cat conftest.err >&5
-- echo "$as_me:13632: \$? = $ac_status" >&5
-- if (exit $ac_status) && test -s "$ac_outfile"; then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings other than the usual output.
-- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-- $SED '/^$/d' conftest.err >conftest.er2
-- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
-- lt_prog_compiler_pic_works_F77=yes
-- fi
-- fi
-- $rm conftest*
--
--fi
--echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
--echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
--
--if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
-- case $lt_prog_compiler_pic_F77 in
-- "" | " "*) ;;
-- *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
-- esac
--else
-- lt_prog_compiler_pic_F77=
-- lt_prog_compiler_can_build_shared_F77=no
--fi
--
--fi
--case $host_os in
-- # For platforms which do not support PIC, -DPIC is meaningless:
-- *djgpp*)
-- lt_prog_compiler_pic_F77=
-- ;;
-- *)
-- lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
-- ;;
--esac
--
--echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
--echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
--if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- lt_cv_prog_compiler_c_o_F77=no
-- $rm -r conftest 2>/dev/null
-- mkdir conftest
-- cd conftest
-- mkdir out
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
--
-- lt_compiler_flag="-o out/conftest2.$ac_objext"
-- # Insert the option either (1) after the last *FLAGS variable, or
-- # (2) before a word containing "conftest.", or (3) at the end.
-- # Note that $ac_compile itself does not contain backslashes and begins
-- # with a dollar sign (not a hyphen), so the echo should work correctly.
-- lt_compile=`echo "$ac_compile" | $SED \
-- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:13690: $lt_compile\"" >&5)
-- (eval "$lt_compile" 2>out/conftest.err)
-- ac_status=$?
-- cat out/conftest.err >&5
-- echo "$as_me:13694: \$? = $ac_status" >&5
-- if (exit $ac_status) && test -s out/conftest2.$ac_objext
-- then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings
-- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
-- $SED '/^$/d' out/conftest.err >out/conftest.er2
-- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-- lt_cv_prog_compiler_c_o_F77=yes
-- fi
-- fi
-- chmod u+w . 2>&5
-- $rm conftest*
-- # SGI C++ compiler will create directory out/ii_files/ for
-- # template instantiation
-- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-- $rm out/* && rmdir out
-- cd ..
-- rmdir conftest
-- $rm conftest*
--
--fi
--echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
--echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
--
--
--hard_links="nottested"
--if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
-- # do not overwrite the value of need_locks provided by the user
-- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
--echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-- hard_links=yes
-- $rm conftest*
-- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- touch conftest.a
-- ln conftest.a conftest.b 2>&5 || hard_links=no
-- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- echo "$as_me:$LINENO: result: $hard_links" >&5
--echo "${ECHO_T}$hard_links" >&6
-- if test "$hard_links" = no; then
-- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
--echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-- need_locks=warn
-- fi
--else
-- need_locks=no
--fi
--
--echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
--echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
--
-- runpath_var=
-- allow_undefined_flag_F77=
-- enable_shared_with_static_runtimes_F77=no
-- archive_cmds_F77=
-- archive_expsym_cmds_F77=
-- old_archive_From_new_cmds_F77=
-- old_archive_from_expsyms_cmds_F77=
-- export_dynamic_flag_spec_F77=
-- whole_archive_flag_spec_F77=
-- thread_safe_flag_spec_F77=
-- hardcode_libdir_flag_spec_F77=
-- hardcode_libdir_flag_spec_ld_F77=
-- hardcode_libdir_separator_F77=
-- hardcode_direct_F77=no
-- hardcode_minus_L_F77=no
-- hardcode_shlibpath_var_F77=unsupported
-- link_all_deplibs_F77=unknown
-- hardcode_automatic_F77=no
-- module_cmds_F77=
-- module_expsym_cmds_F77=
-- always_export_symbols_F77=no
-- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-- # include_expsyms should be a list of space-separated symbols to be *always*
-- # included in the symbol list
-- include_expsyms_F77=
-- # exclude_expsyms can be an extended regexp of symbols to exclude
-- # it will be wrapped by ` (' and `)$', so one must not match beginning or
-- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-- # as well as any symbol that contains `d'.
-- exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
-- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-- # platforms (ab)use it in PIC code, but their linkers get confused if
-- # the symbol is explicitly referenced. Since portable code cannot
-- # rely on this symbol name, it's probably fine to never include it in
-- # preloaded symbol tables.
-- extract_expsyms_cmds=
-- # Just being paranoid about ensuring that cc_basename is set.
-- for cc_temp in $compiler""; do
-- case $cc_temp in
-- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-- \-*) ;;
-- *) break;;
-- esac
--done
--cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
--
-- case $host_os in
-- cygwin* | mingw* | pw32*)
-- # FIXME: the MSVC++ port hasn't been tested in a loooong time
-- # When not using gcc, we currently assume that we are using
-- # Microsoft Visual C++.
-- if test "$GCC" != yes; then
-- with_gnu_ld=no
-- fi
-- ;;
-- openbsd*)
-- with_gnu_ld=no
-- ;;
-- esac
--
-- ld_shlibs_F77=yes
-- if test "$with_gnu_ld" = yes; then
-- # If archive_cmds runs LD, not CC, wlarc should be empty
-- wlarc='${wl}'
--
-- # Set some defaults for GNU ld with shared library support. These
-- # are reset later if shared libraries are not supported. Putting them
-- # here allows them to be overridden if necessary.
-- runpath_var=LD_RUN_PATH
-- hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
-- export_dynamic_flag_spec_F77='${wl}--export-dynamic'
-- # ancient GNU ld didn't support --whole-archive et. al.
-- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-- whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-- else
-- whole_archive_flag_spec_F77=
-- fi
-- supports_anon_versioning=no
-- case `$LD -v 2>/dev/null` in
-- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-- *\ 2.11.*) ;; # other 2.11 versions
-- *) supports_anon_versioning=yes ;;
-- esac
--
-- # See if GNU ld supports shared libraries.
-- case $host_os in
-- aix3* | aix4* | aix5*)
-- # On AIX/PPC, the GNU linker is very broken
-- if test "$host_cpu" != ia64; then
-- ld_shlibs_F77=no
-- cat <<EOF 1>&2
--
--*** Warning: the GNU linker, at least up to release 2.9.1, is reported
--*** to be unable to reliably create shared libraries on AIX.
--*** Therefore, libtool is disabling shared libraries support. If you
--*** really care for shared libraries, you may want to modify your PATH
--*** so that a non-GNU linker is found, and then restart.
--
--EOF
-- fi
-- ;;
--
-- amigaos*)
-- archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-- hardcode_libdir_flag_spec_F77='-L$libdir'
-- hardcode_minus_L_F77=yes
--
-- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-- # that the semantics of dynamic libraries on AmigaOS, at least up
-- # to version 4, is to share data among multiple programs linked
-- # with the same dynamic library. Since this doesn't match the
-- # behavior of shared libraries on other platforms, we can't use
-- # them.
-- ld_shlibs_F77=no
-- ;;
--
-- beos*)
-- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- allow_undefined_flag_F77=unsupported
-- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-- # support --undefined. This deserves some investigation. FIXME
-- archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- else
-- ld_shlibs_F77=no
-- fi
-- ;;
--
-- cygwin* | mingw* | pw32*)
-- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
-- # as there is no search path for DLLs.
-- hardcode_libdir_flag_spec_F77='-L$libdir'
-- allow_undefined_flag_F77=unsupported
-- always_export_symbols_F77=no
-- enable_shared_with_static_runtimes_F77=yes
-- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
--
-- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-- # If the export-symbols file already is a .def file (1st line
-- # is EXPORTS), use it as is; otherwise, prepend...
-- archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-- cp $export_symbols $output_objdir/$soname.def;
-- else
-- echo EXPORTS > $output_objdir/$soname.def;
-- cat $export_symbols >> $output_objdir/$soname.def;
-- fi~
-- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-- else
-- ld_shlibs_F77=no
-- fi
-- ;;
--
-- linux*)
-- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- tmp_addflag=
-- case $cc_basename,$host_cpu in
-- pgcc*) # Portland Group C compiler
-- whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-- tmp_addflag=' $pic_flag'
-- ;;
-- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
-- whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-- tmp_addflag=' $pic_flag -Mnomain' ;;
-- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
-- tmp_addflag=' -i_dynamic' ;;
-- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
-- tmp_addflag=' -i_dynamic -nofor_main' ;;
-- ifc* | ifort*) # Intel Fortran compiler
-- tmp_addflag=' -nofor_main' ;;
-- esac
-- archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--
-- if test $supports_anon_versioning = yes; then
-- archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
-- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-- $echo "local: *; };" >> $output_objdir/$libname.ver~
-- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-- fi
-- else
-- ld_shlibs_F77=no
-- fi
-- ;;
--
-- netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-- wlarc=
-- else
-- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- fi
-- ;;
--
-- solaris* | sysv5*)
-- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-- ld_shlibs_F77=no
-- cat <<EOF 1>&2
--
--*** Warning: The releases 2.8.* of the GNU linker cannot reliably
--*** create shared libraries on Solaris systems. Therefore, libtool
--*** is disabling shared libraries support. We urge you to upgrade GNU
--*** binutils to release 2.9.1 or newer. Another option is to modify
--*** your PATH or compiler configuration so that the native linker is
--*** used, and then restart.
--
--EOF
-- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- else
-- ld_shlibs_F77=no
-- fi
-- ;;
--
-- sunos4*)
-- archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- wlarc=
-- hardcode_direct_F77=yes
-- hardcode_shlibpath_var_F77=no
-- ;;
--
-- *)
-- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- else
-- ld_shlibs_F77=no
-- fi
-- ;;
-- esac
--
-- if test "$ld_shlibs_F77" = no; then
-- runpath_var=
-- hardcode_libdir_flag_spec_F77=
-- export_dynamic_flag_spec_F77=
-- whole_archive_flag_spec_F77=
-- fi
-- else
-- # PORTME fill in a description of your system's linker (not GNU ld)
-- case $host_os in
-- aix3*)
-- allow_undefined_flag_F77=unsupported
-- always_export_symbols_F77=yes
-- archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-- # Note: this linker hardcodes the directories in LIBPATH if there
-- # are no directories specified by -L.
-- hardcode_minus_L_F77=yes
-- if test "$GCC" = yes && test -z "$link_static_flag"; then
-- # Neither direct hardcoding nor static linking is supported with a
-- # broken collect2.
-- hardcode_direct_F77=unsupported
-- fi
-- ;;
--
-- aix4* | aix5*)
-- if test "$host_cpu" = ia64; then
-- # On IA64, the linker does run time linking by default, so we don't
-- # have to do anything special.
-- aix_use_runtimelinking=no
-- exp_sym_flag='-Bexport'
-- no_entry_flag=""
-- else
-- # If we're using GNU nm, then we don't want the "-C" option.
-- # -C means demangle to AIX nm, but means don't demangle with GNU nm
-- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-- export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-- else
-- export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-- fi
-- aix_use_runtimelinking=no
--
-- # Test if we are trying to use run time linking or normal
-- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-- # need to do runtime linking.
-- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-- for ld_flag in $LDFLAGS; do
-- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-- aix_use_runtimelinking=yes
-- break
-- fi
-- done
-- esac
--
-- exp_sym_flag='-bexport'
-- no_entry_flag='-bnoentry'
-- fi
--
-- # When large executables or shared objects are built, AIX ld can
-- # have problems creating the table of contents. If linking a library
-- # or program results in "error TOC overflow" add -mminimal-toc to
-- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
--
-- archive_cmds_F77=''
-- hardcode_direct_F77=yes
-- hardcode_libdir_separator_F77=':'
-- link_all_deplibs_F77=yes
--
-- if test "$GCC" = yes; then
-- case $host_os in aix4.[012]|aix4.[012].*)
-- # We only want to do this on AIX 4.2 and lower, the check
-- # below for broken collect2 doesn't work under 4.3+
-- collect2name=`${CC} -print-prog-name=collect2`
-- if test -f "$collect2name" && \
-- strings "$collect2name" | grep resolve_lib_name >/dev/null
-- then
-- # We have reworked collect2
-- hardcode_direct_F77=yes
-- else
-- # We have old collect2
-- hardcode_direct_F77=unsupported
-- # It fails to find uninstalled libraries when the uninstalled
-- # path is not listed in the libpath. Setting hardcode_minus_L
-- # to unsupported forces relinking
-- hardcode_minus_L_F77=yes
-- hardcode_libdir_flag_spec_F77='-L$libdir'
-- hardcode_libdir_separator_F77=
-- fi
-- esac
-- shared_flag='-shared'
-- if test "$aix_use_runtimelinking" = yes; then
-- shared_flag="$shared_flag "'${wl}-G'
-- fi
-- else
-- # not using gcc
-- if test "$host_cpu" = ia64; then
-- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-- # chokes on -Wl,-G. The following line is correct:
-- shared_flag='-G'
-- else
-- if test "$aix_use_runtimelinking" = yes; then
-- shared_flag='${wl}-G'
-- else
-- shared_flag='${wl}-bM:SRE'
-- fi
-- fi
-- fi
--
-- # It seems that -bexpall does not export symbols beginning with
-- # underscore (_), so it is better to generate a list of symbols to export.
-- always_export_symbols_F77=yes
-- if test "$aix_use_runtimelinking" = yes; then
-- # Warning - without using the other runtime loading flags (-brtl),
-- # -berok will link without error, but may produce a broken library.
-- allow_undefined_flag_F77='-berok'
-- # Determine the default libpath from the value encoded in an empty executable.
-- cat >conftest.$ac_ext <<_ACEOF
-- program main
--
-- end
--_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_f77_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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
--
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`; 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_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
--
-- hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-- archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-- else
-- if test "$host_cpu" = ia64; then
-- hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
-- allow_undefined_flag_F77="-z nodefs"
-- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-- else
-- # Determine the default libpath from the value encoded in an empty executable.
-- cat >conftest.$ac_ext <<_ACEOF
-- program main
--
-- end
--_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_f77_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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
--
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`; 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_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
--
-- hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-- # Warning - without using the other run time loading flags,
-- # -berok will link without error, but may produce a broken library.
-- no_undefined_flag_F77=' ${wl}-bernotok'
-- allow_undefined_flag_F77=' ${wl}-berok'
-- # -bexpall does not export symbols beginning with underscore (_)
-- always_export_symbols_F77=yes
-- # Exported symbols can be pulled into shared objects from archives
-- whole_archive_flag_spec_F77=' '
-- archive_cmds_need_lc_F77=yes
-- # This is similar to how AIX traditionally builds its shared libraries.
-- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-- fi
-- fi
-- ;;
--
-- amigaos*)
-- archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-- hardcode_libdir_flag_spec_F77='-L$libdir'
-- hardcode_minus_L_F77=yes
-- # see comment about different semantics on the GNU ld section
-- ld_shlibs_F77=no
-- ;;
--
-- bsdi[45]*)
-- export_dynamic_flag_spec_F77=-rdynamic
-- ;;
--
-- cygwin* | mingw* | pw32*)
-- # When not using gcc, we currently assume that we are using
-- # Microsoft Visual C++.
-- # hardcode_libdir_flag_spec is actually meaningless, as there is
-- # no search path for DLLs.
-- hardcode_libdir_flag_spec_F77=' '
-- allow_undefined_flag_F77=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # Tell ltmain to make .dll files, not .so files.
-- shrext_cmds=".dll"
-- # FIXME: Setting linknames here is a bad hack.
-- archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- old_archive_From_new_cmds_F77='true'
-- # FIXME: Should let the user specify the lib program.
-- old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
-- fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
-- enable_shared_with_static_runtimes_F77=yes
-- ;;
--
-- darwin* | rhapsody*)
-- case $host_os in
-- rhapsody* | darwin1.[012])
-- allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
-- ;;
-- *) # Darwin 1.3 on
-- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-- allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-- else
-- case ${MACOSX_DEPLOYMENT_TARGET} in
-- 10.[012])
-- allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-- ;;
-- 10.*)
-- allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
-- ;;
-- esac
-- fi
-- ;;
-- esac
-- archive_cmds_need_lc_F77=no
-- hardcode_direct_F77=no
-- hardcode_automatic_F77=yes
-- hardcode_shlibpath_var_F77=unsupported
-- whole_archive_flag_spec_F77=''
-- link_all_deplibs_F77=yes
-- if test "$GCC" = yes ; then
-- output_verbose_link_cmd='echo'
-- archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-- module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- else
-- case $cc_basename in
-- xlc*)
-- output_verbose_link_cmd='echo'
-- archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
-- module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- ;;
-- *)
-- ld_shlibs_F77=no
-- ;;
-- esac
-- fi
-- ;;
--
-- dgux*)
-- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec_F77='-L$libdir'
-- hardcode_shlibpath_var_F77=no
-- ;;
--
-- freebsd1*)
-- ld_shlibs_F77=no
-- ;;
--
-- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-- # support. Future versions do this automatically, but an explicit c++rt0.o
-- # does not break anything, and helps significantly (at the cost of a little
-- # extra space).
-- freebsd2.2*)
-- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-- hardcode_libdir_flag_spec_F77='-R$libdir'
-- hardcode_direct_F77=yes
-- hardcode_shlibpath_var_F77=no
-- ;;
--
-- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-- freebsd2*)
-- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct_F77=yes
-- hardcode_minus_L_F77=yes
-- hardcode_shlibpath_var_F77=no
-- ;;
--
-- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-- freebsd* | kfreebsd*-gnu | dragonfly*)
-- archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-- hardcode_libdir_flag_spec_F77='-R$libdir'
-- hardcode_direct_F77=yes
-- hardcode_shlibpath_var_F77=no
-- ;;
--
-- hpux9*)
-- if test "$GCC" = yes; then
-- archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-- else
-- archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-- fi
-- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-- hardcode_libdir_separator_F77=:
-- hardcode_direct_F77=yes
--
-- # hardcode_minus_L: Not really in the search PATH,
-- # but as the default location of the library.
-- hardcode_minus_L_F77=yes
-- export_dynamic_flag_spec_F77='${wl}-E'
-- ;;
--
-- hpux10* | hpux11*)
-- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-- case $host_cpu in
-- hppa*64*|ia64*)
-- archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- ;;
-- *)
-- archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-- ;;
-- esac
-- else
-- case $host_cpu in
-- hppa*64*|ia64*)
-- archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
-- ;;
-- *)
-- archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-- ;;
-- esac
-- fi
-- if test "$with_gnu_ld" = no; then
-- case $host_cpu in
-- hppa*64*)
-- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-- hardcode_libdir_flag_spec_ld_F77='+b $libdir'
-- hardcode_libdir_separator_F77=:
-- hardcode_direct_F77=no
-- hardcode_shlibpath_var_F77=no
-- ;;
-- ia64*)
-- hardcode_libdir_flag_spec_F77='-L$libdir'
-- hardcode_direct_F77=no
-- hardcode_shlibpath_var_F77=no
--
-- # hardcode_minus_L: Not really in the search PATH,
-- # but as the default location of the library.
-- hardcode_minus_L_F77=yes
-- ;;
-- *)
-- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-- hardcode_libdir_separator_F77=:
-- hardcode_direct_F77=yes
-- export_dynamic_flag_spec_F77='${wl}-E'
--
-- # hardcode_minus_L: Not really in the search PATH,
-- # but as the default location of the library.
-- hardcode_minus_L_F77=yes
-- ;;
-- esac
-- fi
-- ;;
--
-- irix5* | irix6* | nonstopux*)
-- if test "$GCC" = yes; then
-- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- else
-- archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
-- fi
-- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator_F77=:
-- link_all_deplibs_F77=yes
-- ;;
--
-- netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-- else
-- archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-- fi
-- hardcode_libdir_flag_spec_F77='-R$libdir'
-- hardcode_direct_F77=yes
-- hardcode_shlibpath_var_F77=no
-- ;;
--
-- newsos6)
-- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct_F77=yes
-- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator_F77=:
-- hardcode_shlibpath_var_F77=no
-- ;;
--
-- openbsd*)
-- hardcode_direct_F77=yes
-- hardcode_shlibpath_var_F77=no
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-- archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-- export_dynamic_flag_spec_F77='${wl}-E'
-- else
-- case $host_os in
-- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec_F77='-R$libdir'
-- ;;
-- *)
-- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-- ;;
-- esac
-- fi
-- ;;
--
-- os2*)
-- hardcode_libdir_flag_spec_F77='-L$libdir'
-- hardcode_minus_L_F77=yes
-- allow_undefined_flag_F77=unsupported
-- archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-- old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-- ;;
--
-- osf3*)
-- if test "$GCC" = yes; then
-- allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- else
-- allow_undefined_flag_F77=' -expect_unresolved \*'
-- archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- fi
-- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator_F77=:
-- ;;
--
-- osf4* | osf5*) # as osf3* with the addition of -msym flag
-- if test "$GCC" = yes; then
-- allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-- else
-- allow_undefined_flag_F77=' -expect_unresolved \*'
-- archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
--
-- # Both c and cxx compiler support -rpath directly
-- hardcode_libdir_flag_spec_F77='-rpath $libdir'
-- fi
-- hardcode_libdir_separator_F77=:
-- ;;
--
-- sco3.2v5*)
-- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_shlibpath_var_F77=no
-- export_dynamic_flag_spec_F77='${wl}-Bexport'
-- runpath_var=LD_RUN_PATH
-- hardcode_runpath_var=yes
-- ;;
--
-- solaris*)
-- no_undefined_flag_F77=' -z text'
-- if test "$GCC" = yes; then
-- wlarc='${wl}'
-- archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-- else
-- wlarc=''
-- archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-- fi
-- hardcode_libdir_flag_spec_F77='-R$libdir'
-- hardcode_shlibpath_var_F77=no
-- case $host_os in
-- solaris2.[0-5] | solaris2.[0-5].*) ;;
-- *)
-- # The compiler driver will combine linker options so we
-- # cannot just pass the convience library names through
-- # without $wl, iff we do not link with $LD.
-- # Luckily, gcc supports the same syntax we need for Sun Studio.
-- # Supported since Solaris 2.6 (maybe 2.5.1?)
-- case $wlarc in
-- '')
-- whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
-- *)
-- whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
-- esac ;;
-- esac
-- link_all_deplibs_F77=yes
-- ;;
--
-- sunos4*)
-- if test "x$host_vendor" = xsequent; then
-- # Use $CC to link under sequent, because it throws in some extra .o
-- # files that make .init and .fini sections work.
-- archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-- else
-- archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-- fi
-- hardcode_libdir_flag_spec_F77='-L$libdir'
-- hardcode_direct_F77=yes
-- hardcode_minus_L_F77=yes
-- hardcode_shlibpath_var_F77=no
-- ;;
--
-- sysv4)
-- case $host_vendor in
-- sni)
-- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct_F77=yes # is this really true???
-- ;;
-- siemens)
-- ## LD is ld it makes a PLAMLIB
-- ## CC just makes a GrossModule.
-- archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-- reload_cmds_F77='$CC -r -o $output$reload_objs'
-- hardcode_direct_F77=no
-- ;;
-- motorola)
-- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
-- ;;
-- esac
-- runpath_var='LD_RUN_PATH'
-- hardcode_shlibpath_var_F77=no
-- ;;
--
-- sysv4.3*)
-- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_shlibpath_var_F77=no
-- export_dynamic_flag_spec_F77='-Bexport'
-- ;;
--
-- sysv4*MP*)
-- if test -d /usr/nec; then
-- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_shlibpath_var_F77=no
-- runpath_var=LD_RUN_PATH
-- hardcode_runpath_var=yes
-- ld_shlibs_F77=yes
-- fi
-- ;;
--
-- sysv4.2uw2*)
-- archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct_F77=yes
-- hardcode_minus_L_F77=no
-- hardcode_shlibpath_var_F77=no
-- hardcode_runpath_var=yes
-- runpath_var=LD_RUN_PATH
-- ;;
--
-- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
-- no_undefined_flag_F77='${wl}-z ${wl}text'
-- if test "$GCC" = yes; then
-- archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- else
-- archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- fi
-- runpath_var='LD_RUN_PATH'
-- hardcode_shlibpath_var_F77=no
-- ;;
--
-- sysv5*)
-- no_undefined_flag_F77=' -z text'
-- # $CC -shared without GNU ld will not create a library from C++
-- # object files and a static libstdc++, better avoid it by now
-- archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-- hardcode_libdir_flag_spec_F77=
-- hardcode_shlibpath_var_F77=no
-- runpath_var='LD_RUN_PATH'
-- ;;
--
-- uts4*)
-- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec_F77='-L$libdir'
-- hardcode_shlibpath_var_F77=no
-- ;;
--
-- *)
-- ld_shlibs_F77=no
-- ;;
-- esac
-- fi
--
--echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
--echo "${ECHO_T}$ld_shlibs_F77" >&6
--test "$ld_shlibs_F77" = no && can_build_shared=no
--
--variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
--if test "$GCC" = yes; then
-- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
--fi
--
--#
--# Do we need to explicitly link libc?
--#
--case "x$archive_cmds_need_lc_F77" in
--x|xyes)
-- # Assume -lc should be added
-- archive_cmds_need_lc_F77=yes
--
-- if test "$enable_shared" = yes && test "$GCC" = yes; then
-- case $archive_cmds_F77 in
-- *'~'*)
-- # FIXME: we may have to deal with multi-command sequences.
-- ;;
-- '$CC '*)
-- # Test whether the compiler implicitly links with -lc since on some
-- # systems, -lgcc has to come before -lc. If gcc already passes -lc
-- # to ld, don't add -lc before -lgcc.
-- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
--echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-- $rm conftest*
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
--
-- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } 2>conftest.err; then
-- soname=conftest
-- lib=conftest
-- libobjs=conftest.$ac_objext
-- deplibs=
-- wl=$lt_prog_compiler_wl_F77
-- compiler_flags=-v
-- linker_flags=-v
-- verstring=
-- output_objdir=.
-- libname=conftest
-- lt_save_allow_undefined_flag=$allow_undefined_flag_F77
-- allow_undefined_flag_F77=
-- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-- (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }
-- then
-- archive_cmds_need_lc_F77=no
-- else
-- archive_cmds_need_lc_F77=yes
-- fi
-- allow_undefined_flag_F77=$lt_save_allow_undefined_flag
-- else
-- cat conftest.err 1>&5
-- fi
-- $rm conftest*
-- echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
--echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
-- ;;
-- esac
-- fi
-- ;;
--esac
--
--echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
--echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
--library_names_spec=
--libname_spec='lib$name'
--soname_spec=
--shrext_cmds=".so"
--postinstall_cmds=
--postuninstall_cmds=
--finish_cmds=
--finish_eval=
--shlibpath_var=
--shlibpath_overrides_runpath=unknown
--version_type=none
--dynamic_linker="$host_os ld.so"
--sys_lib_dlsearch_path_spec="/lib /usr/lib"
--if test "$GCC" = yes; then
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-- # if the path contains ";" then we assume it to be the separator
-- # otherwise default to the standard path separator (i.e. ":") - it is
-- # assumed that no part of a normal pathname contains ";" but that should
-- # okay in the real world where ";" in dirpaths is itself problematic.
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-- else
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-- fi
--else
-- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
--fi
--need_lib_prefix=unknown
--hardcode_into_libs=no
--
--# when you set need_version to no, make sure it does not cause -set_version
--# flags to be left without arguments
--need_version=unknown
--
--case $host_os in
--aix3*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-- shlibpath_var=LIBPATH
--
-- # AIX 3 has no versioning support, so we append a major version to the name.
-- soname_spec='${libname}${release}${shared_ext}$major'
-- ;;
--
--aix4* | aix5*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- hardcode_into_libs=yes
-- if test "$host_cpu" = ia64; then
-- # AIX 5 supports IA64
-- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- else
-- # With GCC up to 2.95.x, collect2 would create an import file
-- # for dependence libraries. The import file would start with
-- # the line `#! .'. This would cause the generated library to
-- # depend on `.', always an invalid library. This was fixed in
-- # development snapshots of GCC prior to 3.0.
-- case $host_os in
-- aix4 | aix4.[01] | aix4.[01].*)
-- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-- echo ' yes '
-- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-- :
-- else
-- can_build_shared=no
-- fi
-- ;;
-- esac
-- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-- # soname into executable. Probably we can add versioning support to
-- # collect2, so additional links can be useful in future.
-- if test "$aix_use_runtimelinking" = yes; then
-- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-- # instead of lib<name>.a to let people know that these are not
-- # typical AIX shared libraries.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- else
-- # We preserve .a as extension for shared libraries through AIX4.2
-- # and later when we are not doing run time linking.
-- library_names_spec='${libname}${release}.a $libname.a'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- fi
-- shlibpath_var=LIBPATH
-- fi
-- ;;
--
--amigaos*)
-- library_names_spec='$libname.ixlibrary $libname.a'
-- # Create ${libname}_ixlibrary.a entries in /sys/libs.
-- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-- ;;
--
--beos*)
-- library_names_spec='${libname}${shared_ext}'
-- dynamic_linker="$host_os ld.so"
-- shlibpath_var=LIBRARY_PATH
-- ;;
--
--bsdi[45]*)
-- version_type=linux
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-- # the default ld.so.conf also contains /usr/contrib/lib and
-- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-- # libtool to hard-code these into programs
-- ;;
--
--cygwin* | mingw* | pw32*)
-- version_type=windows
-- shrext_cmds=".dll"
-- need_version=no
-- need_lib_prefix=no
--
-- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32*)
-- library_names_spec='$libname.dll.a'
-- # DLL is installed to $(libdir)/../bin by postinstall_cmds
-- postinstall_cmds='base_file=`basename \${file}`~
-- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-- dldir=$destdir/`dirname \$dlpath`~
-- test -d \$dldir || mkdir -p \$dldir~
-- $install_prog $dir/$dlname \$dldir/$dlname~
-- chmod a+x \$dldir/$dlname'
-- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-- dlpath=$dir/\$dldll~
-- $rm \$dlpath'
-- shlibpath_overrides_runpath=yes
--
-- case $host_os in
-- cygwin*)
-- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-- ;;
-- mingw*)
-- # MinGW DLLs use traditional 'lib' prefix
-- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-- # It is most probably a Windows format PATH printed by
-- # mingw gcc, but we are running on Cygwin. Gcc prints its search
-- # path with ; separators, and with drive letters. We can handle the
-- # drive letters (cygwin fileutils understands them), so leave them,
-- # especially as we might pass files found there to a mingw objdump,
-- # which wouldn't understand a cygwinified path. Ahh.
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-- else
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-- fi
-- ;;
-- pw32*)
-- # pw32 DLLs use 'pw' prefix rather than 'lib'
-- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-- ;;
-- esac
-- ;;
--
-- *)
-- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-- ;;
-- esac
-- dynamic_linker='Win32 ld.exe'
-- # FIXME: first we should search . and the directory the executable is in
-- shlibpath_var=PATH
-- ;;
--
--darwin* | rhapsody*)
-- dynamic_linker="$host_os dyld"
-- version_type=darwin
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-- soname_spec='${libname}${release}${major}$shared_ext'
-- shlibpath_overrides_runpath=yes
-- shlibpath_var=DYLD_LIBRARY_PATH
-- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-- if test "$GCC" = yes; then
-- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-- else
-- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-- fi
-- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-- ;;
--
--dgux*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
--freebsd1*)
-- dynamic_linker=no
-- ;;
--
--kfreebsd*-gnu)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-- dynamic_linker='GNU ld.so'
-- ;;
--
--freebsd* | dragonfly*)
-- # DragonFly does not have aout. When/if they implement a new
-- # versioning mechanism, adjust this.
-- if test -x /usr/bin/objformat; then
-- objformat=`/usr/bin/objformat`
-- else
-- case $host_os in
-- freebsd[123]*) objformat=aout ;;
-- *) objformat=elf ;;
-- esac
-- fi
-- version_type=freebsd-$objformat
-- case $version_type in
-- freebsd-elf*)
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-- need_version=no
-- need_lib_prefix=no
-- ;;
-- freebsd-*)
-- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-- need_version=yes
-- ;;
-- esac
-- shlibpath_var=LD_LIBRARY_PATH
-- case $host_os in
-- freebsd2*)
-- shlibpath_overrides_runpath=yes
-- ;;
-- freebsd3.[01]* | freebsdelf3.[01]*)
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- ;;
-- *) # from 3.2 on
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-- ;;
-- esac
-- ;;
--
--gnu*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- hardcode_into_libs=yes
-- ;;
--
--hpux9* | hpux10* | hpux11*)
-- # Give a soname corresponding to the major version so that dld.sl refuses to
-- # link against other versions.
-- version_type=sunos
-- need_lib_prefix=no
-- need_version=no
-- case $host_cpu in
-- ia64*)
-- shrext_cmds='.so'
-- hardcode_into_libs=yes
-- dynamic_linker="$host_os dld.so"
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- if test "X$HPUX_IA64_MODE" = X32; then
-- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-- else
-- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-- fi
-- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-- ;;
-- hppa*64*)
-- shrext_cmds='.sl'
-- hardcode_into_libs=yes
-- dynamic_linker="$host_os dld.sl"
-- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-- ;;
-- *)
-- shrext_cmds='.sl'
-- dynamic_linker="$host_os dld.sl"
-- shlibpath_var=SHLIB_PATH
-- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- ;;
-- esac
-- # HP-UX runs *really* slowly unless shared libraries are mode 555.
-- postinstall_cmds='chmod 555 $lib'
-- ;;
--
--irix5* | irix6* | nonstopux*)
-- case $host_os in
-- nonstopux*) version_type=nonstopux ;;
-- *)
-- if test "$lt_cv_prog_gnu_ld" = yes; then
-- version_type=linux
-- else
-- version_type=irix
-- fi ;;
-- esac
-- need_lib_prefix=no
-- need_version=no
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-- case $host_os in
-- irix5* | nonstopux*)
-- libsuff= shlibsuff=
-- ;;
-- *)
-- case $LD in # libtool.m4 will add one of these switches to LD
-- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-- libsuff= shlibsuff= libmagic=32-bit;;
-- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-- libsuff=32 shlibsuff=N32 libmagic=N32;;
-- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-- libsuff=64 shlibsuff=64 libmagic=64-bit;;
-- *) libsuff= shlibsuff= libmagic=never-match;;
-- esac
-- ;;
-- esac
-- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-- shlibpath_overrides_runpath=no
-- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-- hardcode_into_libs=yes
-- ;;
--
--# No shared lib support for Linux oldld, aout, or coff.
--linux*oldld* | linux*aout* | linux*coff*)
-- dynamic_linker=no
-- ;;
--
--# This must be Linux ELF.
--linux*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- # This implies no fast_install, which is unacceptable.
-- # Some rework will be needed to allow for fast_install
-- # before this can be enabled.
-- hardcode_into_libs=yes
--
-- # Append ld.so.conf contents to the search path
-- if test -f /etc/ld.so.conf; then
-- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-- fi
--
-- # We used to test for /lib/ld.so.1 and disable shared libraries on
-- # powerpc, because MkLinux only supported shared libraries with the
-- # GNU dynamic linker. Since this was broken with cross compilers,
-- # most powerpc-linux boxes support dynamic linking these days and
-- # people can always --disable-shared, the test was removed, and we
-- # assume the GNU/Linux dynamic linker is in use.
-- dynamic_linker='GNU/Linux ld.so'
-- ;;
--
--knetbsd*-gnu)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-- dynamic_linker='GNU ld.so'
-- ;;
--
--netbsd*)
-- version_type=sunos
-- need_lib_prefix=no
-- need_version=no
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-- dynamic_linker='NetBSD (a.out) ld.so'
-- else
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- dynamic_linker='NetBSD ld.elf_so'
-- fi
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- ;;
--
--newsos6)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- ;;
--
--nto-qnx*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- ;;
--
--openbsd*)
-- version_type=sunos
-- need_lib_prefix=no
-- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-- case $host_os in
-- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-- *) need_version=no ;;
-- esac
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- case $host_os in
-- openbsd2.[89] | openbsd2.[89].*)
-- shlibpath_overrides_runpath=no
-- ;;
-- *)
-- shlibpath_overrides_runpath=yes
-- ;;
-- esac
-- else
-- shlibpath_overrides_runpath=yes
-- fi
-- ;;
--
--os2*)
-- libname_spec='$name'
-- shrext_cmds=".dll"
-- need_lib_prefix=no
-- library_names_spec='$libname${shared_ext} $libname.a'
-- dynamic_linker='OS/2 ld.exe'
-- shlibpath_var=LIBPATH
-- ;;
--
--osf3* | osf4* | osf5*)
-- version_type=osf
-- need_lib_prefix=no
-- need_version=no
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-- ;;
--
--sco3.2v5*)
-- version_type=osf
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
--solaris*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- # ldd complains unless libraries are executable
-- postinstall_cmds='chmod +x $lib'
-- ;;
--
--sunos4*)
-- version_type=sunos
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- if test "$with_gnu_ld" = yes; then
-- need_lib_prefix=no
-- fi
-- need_version=yes
-- ;;
--
--sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- case $host_vendor in
-- sni)
-- shlibpath_overrides_runpath=no
-- need_lib_prefix=no
-- export_dynamic_flag_spec='${wl}-Blargedynsym'
-- runpath_var=LD_RUN_PATH
-- ;;
-- siemens)
-- need_lib_prefix=no
-- ;;
-- motorola)
-- need_lib_prefix=no
-- need_version=no
-- shlibpath_overrides_runpath=no
-- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-- ;;
-- esac
-- ;;
--
--sysv4*MP*)
-- if test -d /usr/nec ;then
-- version_type=linux
-- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-- soname_spec='$libname${shared_ext}.$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- fi
-- ;;
--
--uts4*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
--*)
-- dynamic_linker=no
-- ;;
--esac
--echo "$as_me:$LINENO: result: $dynamic_linker" >&5
--echo "${ECHO_T}$dynamic_linker" >&6
--test "$dynamic_linker" = no && can_build_shared=no
--
--echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
--echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
--hardcode_action_F77=
--if test -n "$hardcode_libdir_flag_spec_F77" || \
-- test -n "$runpath_var_F77" || \
-- test "X$hardcode_automatic_F77" = "Xyes" ; then
--
-- # We can hardcode non-existant directories.
-- if test "$hardcode_direct_F77" != no &&
-- # If the only mechanism to avoid hardcoding is shlibpath_var, we
-- # have to relink, otherwise we might link with an installed library
-- # when we should be linking with a yet-to-be-installed one
-- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
-- test "$hardcode_minus_L_F77" != no; then
-- # Linking always hardcodes the temporary library directory.
-- hardcode_action_F77=relink
-- else
-- # We can link without hardcoding, and we can hardcode nonexisting dirs.
-- hardcode_action_F77=immediate
-- fi
--else
-- # We cannot hardcode anything, or else we can only hardcode existing
-- # directories.
-- hardcode_action_F77=unsupported
--fi
--echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
--echo "${ECHO_T}$hardcode_action_F77" >&6
--
--if test "$hardcode_action_F77" = relink; then
-- # Fast installation is not supported
-- enable_fast_install=no
--elif test "$shlibpath_overrides_runpath" = yes ||
-- test "$enable_shared" = no; then
-- # Fast installation is not necessary
-- enable_fast_install=needless
--fi
--
--striplib=
--old_striplib=
--echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
--echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
--if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
--else
--# FIXME - insert some real tests, host_os isn't really good enough
-- case $host_os in
-- darwin*)
-- if test -n "$STRIP" ; then
-- striplib="$STRIP -x"
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
-- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
-- ;;
-- *)
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-- ;;
-- esac
--fi
--
--
--
--# The else clause should only fire when bootstrapping the
--# libtool distribution, otherwise you forgot to ship ltmain.sh
--# with your package, and you will get complaints that there are
--# no rules to generate ltmain.sh.
--if test -f "$ltmain"; then
-- # See if we are running on zsh, and set the options which allow our commands through
-- # without removal of \ escapes.
-- if test -n "${ZSH_VERSION+set}" ; then
-- setopt NO_GLOB_SUBST
-- fi
-- # Now quote all the things that may contain metacharacters while being
-- # careful not to overquote the AC_SUBSTed values. We take copies of the
-- # variables and quote the copies for generation of the libtool script.
-- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-- SED SHELL STRIP \
-- libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-- old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-- deplibs_check_method reload_flag reload_cmds need_locks \
-- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-- lt_cv_sys_global_symbol_to_c_name_address \
-- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-- old_postinstall_cmds old_postuninstall_cmds \
-- compiler_F77 \
-- CC_F77 \
-- LD_F77 \
-- lt_prog_compiler_wl_F77 \
-- lt_prog_compiler_pic_F77 \
-- lt_prog_compiler_static_F77 \
-- lt_prog_compiler_no_builtin_flag_F77 \
-- export_dynamic_flag_spec_F77 \
-- thread_safe_flag_spec_F77 \
-- whole_archive_flag_spec_F77 \
-- enable_shared_with_static_runtimes_F77 \
-- old_archive_cmds_F77 \
-- old_archive_from_new_cmds_F77 \
-- predep_objects_F77 \
-- postdep_objects_F77 \
-- predeps_F77 \
-- postdeps_F77 \
-- compiler_lib_search_path_F77 \
-- archive_cmds_F77 \
-- archive_expsym_cmds_F77 \
-- postinstall_cmds_F77 \
-- postuninstall_cmds_F77 \
-- old_archive_from_expsyms_cmds_F77 \
-- allow_undefined_flag_F77 \
-- no_undefined_flag_F77 \
-- export_symbols_cmds_F77 \
-- hardcode_libdir_flag_spec_F77 \
-- hardcode_libdir_flag_spec_ld_F77 \
-- hardcode_libdir_separator_F77 \
-- hardcode_automatic_F77 \
-- module_cmds_F77 \
-- module_expsym_cmds_F77 \
-- lt_cv_prog_compiler_c_o_F77 \
-- exclude_expsyms_F77 \
-- include_expsyms_F77; do
--
-- case $var in
-- old_archive_cmds_F77 | \
-- old_archive_from_new_cmds_F77 | \
-- archive_cmds_F77 | \
-- archive_expsym_cmds_F77 | \
-- module_cmds_F77 | \
-- module_expsym_cmds_F77 | \
-- old_archive_from_expsyms_cmds_F77 | \
-- export_symbols_cmds_F77 | \
-- extract_expsyms_cmds | reload_cmds | finish_cmds | \
-- postinstall_cmds | postuninstall_cmds | \
-- old_postinstall_cmds | old_postuninstall_cmds | \
-- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-- # Double-quote double-evaled strings.
-- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-- ;;
-- *)
-- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-- ;;
-- esac
-- done
--
-- case $lt_echo in
-- *'\$0 --fallback-echo"')
-- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-- ;;
-- esac
--
--cfgfile="$ofile"
--
-- cat <<__EOF__ >> "$cfgfile"
--# ### BEGIN LIBTOOL TAG CONFIG: $tagname
--
--# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
--
--# Shell to use when invoking shell scripts.
--SHELL=$lt_SHELL
--
--# Whether or not to build shared libraries.
--build_libtool_libs=$enable_shared
--
--# Whether or not to build static libraries.
--build_old_libs=$enable_static
--
--# Whether or not to add -lc for building shared libraries.
--build_libtool_need_lc=$archive_cmds_need_lc_F77
--
--# Whether or not to disallow shared libs when runtime libs are static
--allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
--
--# Whether or not to optimize for fast installation.
--fast_install=$enable_fast_install
--
--# The host system.
--host_alias=$host_alias
--host=$host
--host_os=$host_os
--
--# The build system.
--build_alias=$build_alias
--build=$build
--build_os=$build_os
--
--# An echo program that does not interpret backslashes.
--echo=$lt_echo
--
--# The archiver.
--AR=$lt_AR
--AR_FLAGS=$lt_AR_FLAGS
--
--# A C compiler.
--LTCC=$lt_LTCC
--
--# A language-specific compiler.
--CC=$lt_compiler_F77
--
--# Is the compiler the GNU C compiler?
--with_gcc=$GCC_F77
--
--# An ERE matcher.
--EGREP=$lt_EGREP
--
--# The linker used to build libraries.
--LD=$lt_LD_F77
--
--# Whether we need hard or soft links.
--LN_S=$lt_LN_S
--
--# A BSD-compatible nm program.
--NM=$lt_NM
--
--# A symbol stripping program
--STRIP=$lt_STRIP
--
--# Used to examine libraries when file_magic_cmd begins "file"
--MAGIC_CMD=$MAGIC_CMD
--
--# Used on cygwin: DLL creation program.
--DLLTOOL="$DLLTOOL"
--
--# Used on cygwin: object dumper.
--OBJDUMP="$OBJDUMP"
--
--# Used on cygwin: assembler.
--AS="$AS"
--
--# The name of the directory that contains temporary libtool files.
--objdir=$objdir
--
--# How to create reloadable object files.
--reload_flag=$lt_reload_flag
--reload_cmds=$lt_reload_cmds
--
--# How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl_F77
--
--# Object file suffix (normally "o").
--objext="$ac_objext"
--
--# Old archive suffix (normally "a").
--libext="$libext"
--
--# Shared library suffix (normally ".so").
--shrext_cmds='$shrext_cmds'
--
--# Executable file suffix (normally "").
--exeext="$exeext"
--
--# Additional compiler flags for building library objects.
--pic_flag=$lt_lt_prog_compiler_pic_F77
--pic_mode=$pic_mode
--
--# What is the maximum length of a command?
--max_cmd_len=$lt_cv_sys_max_cmd_len
--
--# Does compiler simultaneously support -c and -o options?
--compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
--
--# Must we lock files when doing compilation?
--need_locks=$lt_need_locks
--
--# Do we need the lib prefix for modules?
--need_lib_prefix=$need_lib_prefix
--
--# Do we need a version for libraries?
--need_version=$need_version
--
--# Whether dlopen is supported.
--dlopen_support=$enable_dlopen
--
--# Whether dlopen of programs is supported.
--dlopen_self=$enable_dlopen_self
--
--# Whether dlopen of statically linked programs is supported.
--dlopen_self_static=$enable_dlopen_self_static
--
--# Compiler flag to prevent dynamic linking.
--link_static_flag=$lt_lt_prog_compiler_static_F77
--
--# Compiler flag to turn off builtin functions.
--no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
--
--# Compiler flag to allow reflexive dlopens.
--export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
--
--# Compiler flag to generate shared objects directly from archives.
--whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
--
--# Compiler flag to generate thread-safe objects.
--thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
--
--# Library versioning type.
--version_type=$version_type
--
--# Format of library name prefix.
--libname_spec=$lt_libname_spec
--
--# List of archive names. First name is the real one, the rest are links.
--# The last name is the one that the linker finds with -lNAME.
--library_names_spec=$lt_library_names_spec
--
--# The coded name of the library, if different from the real name.
--soname_spec=$lt_soname_spec
--
--# Commands used to build and install an old-style archive.
--RANLIB=$lt_RANLIB
--old_archive_cmds=$lt_old_archive_cmds_F77
--old_postinstall_cmds=$lt_old_postinstall_cmds
--old_postuninstall_cmds=$lt_old_postuninstall_cmds
--
--# Create an old-style archive from a shared archive.
--old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
--
--# Create a temporary old-style archive to link instead of a shared archive.
--old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
--
--# Commands used to build and install a shared archive.
--archive_cmds=$lt_archive_cmds_F77
--archive_expsym_cmds=$lt_archive_expsym_cmds_F77
--postinstall_cmds=$lt_postinstall_cmds
--postuninstall_cmds=$lt_postuninstall_cmds
--
--# Commands used to build a loadable module (assumed same as above if empty)
--module_cmds=$lt_module_cmds_F77
--module_expsym_cmds=$lt_module_expsym_cmds_F77
--
--# Commands to strip libraries.
--old_striplib=$lt_old_striplib
--striplib=$lt_striplib
--
--# Dependencies to place before the objects being linked to create a
--# shared library.
--predep_objects=$lt_predep_objects_F77
--
--# Dependencies to place after the objects being linked to create a
--# shared library.
--postdep_objects=$lt_postdep_objects_F77
--
--# Dependencies to place before the objects being linked to create a
--# shared library.
--predeps=$lt_predeps_F77
--
--# Dependencies to place after the objects being linked to create a
--# shared library.
--postdeps=$lt_postdeps_F77
--
--# The library search path used internally by the compiler when linking
--# a shared library.
--compiler_lib_search_path=$lt_compiler_lib_search_path_F77
--
--# Method to check whether dependent libraries are shared objects.
--deplibs_check_method=$lt_deplibs_check_method
--
--# Command to use when deplibs_check_method == file_magic.
--file_magic_cmd=$lt_file_magic_cmd
--
--# Flag that allows shared libraries with undefined symbols to be built.
--allow_undefined_flag=$lt_allow_undefined_flag_F77
--
--# Flag that forces no undefined symbols.
--no_undefined_flag=$lt_no_undefined_flag_F77
--
--# Commands used to finish a libtool library installation in a directory.
--finish_cmds=$lt_finish_cmds
--
--# Same as above, but a single script fragment to be evaled but not shown.
--finish_eval=$lt_finish_eval
--
--# Take the output of nm and produce a listing of raw symbols and C names.
--global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
--
--# Transform the output of nm in a proper C declaration
--global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
--
--# Transform the output of nm in a C name address pair
--global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
--
--# This is the shared library runtime path variable.
--runpath_var=$runpath_var
--
--# This is the shared library path variable.
--shlibpath_var=$shlibpath_var
--
--# Is shlibpath searched before the hard-coded library search path?
--shlibpath_overrides_runpath=$shlibpath_overrides_runpath
--
--# How to hardcode a shared library path into an executable.
--hardcode_action=$hardcode_action_F77
--
--# Whether we should hardcode library paths into libraries.
--hardcode_into_libs=$hardcode_into_libs
--
--# Flag to hardcode \$libdir into a binary during linking.
--# This must work even if \$libdir does not exist.
--hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
--
--# If ld is used when linking, flag to hardcode \$libdir into
--# a binary during linking. This must work even if \$libdir does
--# not exist.
--hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
--
--# Whether we need a single -rpath flag with a separated argument.
--hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
--
--# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
--# resulting binary.
--hardcode_direct=$hardcode_direct_F77
--
--# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
--# resulting binary.
--hardcode_minus_L=$hardcode_minus_L_F77
--
--# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
--# the resulting binary.
--hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
--
--# Set to yes if building a shared library automatically hardcodes DIR into the library
--# and all subsequent libraries and executables linked against it.
--hardcode_automatic=$hardcode_automatic_F77
--
--# Variables whose values should be saved in libtool wrapper scripts and
--# restored at relink time.
--variables_saved_for_relink="$variables_saved_for_relink"
--
--# Whether libtool must link a program against all its dependency libraries.
--link_all_deplibs=$link_all_deplibs_F77
--
--# Compile-time system search path for libraries
--sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
--
--# Run-time system search path for libraries
--sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
--
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path="$fix_srcfile_path_F77"
-+fi
-+fi
-+STRIP=$ac_cv_prog_STRIP
-+if test -n "$STRIP"; then
-+ 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
-+fi
-
--# Set to yes if exported symbols are required.
--always_export_symbols=$always_export_symbols_F77
-+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
-+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_STRIP"; then
-+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # 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_STRIP="strip"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-
--# The commands to list exported symbols.
--export_symbols_cmds=$lt_export_symbols_cmds_F77
-+ 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
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-
--# The commands to extract the exported symbol list from a shared archive.
--extract_expsyms_cmds=$lt_extract_expsyms_cmds
-+ STRIP=$ac_ct_STRIP
-+else
-+ STRIP="$ac_cv_prog_STRIP"
-+fi
-
--# Symbols that should not be listed in the preloaded symbols.
--exclude_expsyms=$lt_exclude_expsyms_F77
-
--# Symbols that must always be exported.
--include_expsyms=$lt_include_expsyms_F77
-+enable_dlopen=no
-+enable_win32_dll=no
-
--# ### END LIBTOOL TAG CONFIG: $tagname
-+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
-+if test "${enable_libtool_lock+set}" = set; then
-+ enableval="$enable_libtool_lock"
-
--__EOF__
-+fi;
-+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-+# Some flags need to be propagated to the compiler or linker for good
-+# libtool support.
-+case $host in
-+*-*-irix6*)
-+ # Find out which ABI we are using.
-+ echo '#line 4708 "configure"' > conftest.$ac_ext
-+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
-+ case `/usr/bin/file conftest.$ac_objext` in
-+ *32-bit*)
-+ LD="${LD-ld} -32"
-+ ;;
-+ *N32*)
-+ LD="${LD-ld} -n32"
-+ ;;
-+ *64-bit*)
-+ LD="${LD-ld} -64"
-+ ;;
-+ esac
-+ fi
-+ rm -rf conftest*
-+ ;;
-
-+*-*-sco3.2v5*)
-+ # 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
-+if test "${lt_cv_cc_needs_belf+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- # If there is no Makefile yet, we rely on a make rule to execute
-- # `config.status --recheck' to rerun these tests and create the
-- # libtool script then.
-- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-- if test -f "$ltmain_in"; then
-- test -f Makefile && make "$ltmain"
-- fi
--fi
-
-
--ac_ext=c
-+ 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
-
--CC="$lt_save_CC"
--
-- else
-- tagname=""
-- fi
-- ;;
--
-- GCJ)
-- if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
-+ 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 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
-+ lt_cv_cc_needs_belf=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
--# Source file extension for Java test sources.
--ac_ext=java
-+lt_cv_cc_needs_belf=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext 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
-
--# Object file extension for compiled Java test sources.
--objext=o
--objext_GCJ=$objext
-+fi
-+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"
-+ fi
-+ ;;
-
--# Code to be used in simple compile tests
--lt_simple_compile_test_code="class foo {}\n"
-
--# Code to be used in simple link tests
--lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
-+esac
-
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-+# Sed substitution that helps us do robust quoting. It backslashifies
-+# metacharacters that are still active within double-quoted strings.
-+Xsed='sed -e s/^X//'
-+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
-
--# If no C compiler was specified, use CC.
--LTCC=${LTCC-"$CC"}
-+# Same as above, but do not quote variable references.
-+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
-
--# Allow CC to be a program name with arguments.
--compiler=$CC
-+# Sed substitution to delay expansion of an escaped shell variable in a
-+# double_quote_subst'ed string.
-+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-+# Constants:
-+rm="rm -f"
-
--# save warnings/boilerplate of simple test code
--ac_outfile=conftest.$ac_objext
--printf "$lt_simple_compile_test_code" >conftest.$ac_ext
--eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
--_lt_compiler_boilerplate=`cat conftest.err`
--$rm conftest*
--
--ac_outfile=conftest.$ac_objext
--printf "$lt_simple_link_test_code" >conftest.$ac_ext
--eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
--_lt_linker_boilerplate=`cat conftest.err`
--$rm conftest*
-+# Global variables:
-+default_ofile=libtool
-+can_build_shared=yes
-
-+# All known linkers require a `.a' archive for static linking (except M$VC,
-+# which needs '.lib').
-+libext=a
-+ltmain="$ac_aux_dir/ltmain.sh"
-+ofile="$default_ofile"
-+with_gnu_ld="$lt_cv_prog_gnu_ld"
-+need_locks="$enable_libtool_lock"
-
--# Allow CC to be a program name with arguments.
--lt_save_CC="$CC"
--CC=${GCJ-"gcj"}
--compiler=$CC
--compiler_GCJ=$CC
--for cc_temp in $compiler""; do
-- case $cc_temp in
-- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-- \-*) ;;
-- *) break;;
-- esac
--done
--cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-+old_CC="$CC"
-+old_CFLAGS="$CFLAGS"
-
-+# Set sane defaults for various variables
-+test -z "$AR" && AR=ar
-+test -z "$AR_FLAGS" && AR_FLAGS=cru
-+test -z "$AS" && AS=as
-+test -z "$CC" && CC=cc
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+test -z "$LD" && LD=ld
-+test -z "$LN_S" && LN_S="ln -s"
-+test -z "$MAGIC_CMD" && MAGIC_CMD=file
-+test -z "$NM" && NM=nm
-+test -z "$OBJDUMP" && OBJDUMP=objdump
-+test -z "$RANLIB" && RANLIB=:
-+test -z "$STRIP" && STRIP=:
-+test -z "$ac_objext" && ac_objext=o
-
--# GCJ did not exist at the time GCC didn't implicitly link libc in.
--archive_cmds_need_lc_GCJ=no
-+if test x"$host" != x"$build"; then
-+ ac_tool_prefix=${host_alias}-
-+else
-+ ac_tool_prefix=
-+fi
-
--old_archive_cmds_GCJ=$old_archive_cmds
-+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
-+case $host_os in
-+linux-gnu*) ;;
-+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
-+esac
-
-+case $host_os in
-+aix3*)
-+ # AIX sometimes has problems with the GCC collect2 program. For some
-+ # reason, if we set the COLLECT_NAMES environment variable, the problems
-+ # vanish in a puff of smoke.
-+ if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+ fi
-+ ;;
-+esac
-
--lt_prog_compiler_no_builtin_flag_GCJ=
-+# Determine commands to create old-style static archives.
-+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
-+old_postinstall_cmds='chmod 644 $oldlib'
-+old_postuninstall_cmds=
-
--if test "$GCC" = yes; then
-- lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
-+if test -n "$RANLIB"; then
-+ case $host_os in
-+ openbsd*)
-+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ *)
-+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ esac
-+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-+fi
-
-+# Allow CC to be a program name with arguments.
-+set dummy $CC
-+compiler="$2"
-
--echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
--echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
--if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+echo "$as_me:$LINENO: checking for objdir" >&5
-+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
-+rm -f .libs 2>/dev/null
-+mkdir .libs 2>/dev/null
-+if test -d .libs; then
-+ objdir=.libs
- else
-- lt_cv_prog_compiler_rtti_exceptions=no
-- ac_outfile=conftest.$ac_objext
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-- lt_compiler_flag="-fno-rtti -fno-exceptions"
-- # Insert the option either (1) after the last *FLAGS variable, or
-- # (2) before a word containing "conftest.", or (3) at the end.
-- # Note that $ac_compile itself does not contain backslashes and begins
-- # with a dollar sign (not a hyphen), so the echo should work correctly.
-- # The option is referenced via a variable to avoid confusing sed.
-- lt_compile=`echo "$ac_compile" | $SED \
-- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:15820: $lt_compile\"" >&5)
-- (eval "$lt_compile" 2>conftest.err)
-- ac_status=$?
-- cat conftest.err >&5
-- echo "$as_me:15824: \$? = $ac_status" >&5
-- if (exit $ac_status) && test -s "$ac_outfile"; then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings other than the usual output.
-- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-- $SED '/^$/d' conftest.err >conftest.er2
-- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
-- lt_cv_prog_compiler_rtti_exceptions=yes
-- fi
-- fi
-- $rm conftest*
--
-+ # MS-DOS does not allow filenames that begin with a dot.
-+ objdir=_libs
- fi
--echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
--echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
-+rmdir .libs 2>/dev/null
-+echo "$as_me:$LINENO: result: $objdir" >&5
-+echo "${ECHO_T}$objdir" >&6
-
--if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-- lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
--else
-- :
--fi
-
--fi
-
--lt_prog_compiler_wl_GCJ=
--lt_prog_compiler_pic_GCJ=
--lt_prog_compiler_static_GCJ=
-+# Check whether --with-pic or --without-pic was given.
-+if test "${with_pic+set}" = set; then
-+ withval="$with_pic"
-+ pic_mode="$withval"
-+else
-+ pic_mode=default
-+fi;
-+test -z "$pic_mode" && pic_mode=default
-
-+# We assume here that the value for lt_cv_prog_cc_pic will not be cached
-+# in isolation, and that seeing it set (from the cache) indicates that
-+# the associated values are set (in the cache) correctly too.
- echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
- echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
-+if test "${lt_cv_prog_cc_pic+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_prog_cc_pic=
-+ lt_cv_prog_cc_shlib=
-+ lt_cv_prog_cc_wl=
-+ lt_cv_prog_cc_static=
-+ lt_cv_prog_cc_no_builtin=
-+ lt_cv_prog_cc_can_build_shared=$can_build_shared
-
- if test "$GCC" = yes; then
-- lt_prog_compiler_wl_GCJ='-Wl,'
-- lt_prog_compiler_static_GCJ='-static'
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-static'
-
- case $host_os in
-- aix*)
-- # All AIX code is PIC.
-- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- lt_prog_compiler_static_GCJ='-Bstatic'
-- fi
-+ aix*)
-+ # Below there is a dirty hack to force normal static linking with -ldl
-+ # The problem is because libdl dynamically linked with both libc and
-+ # libC (AIX C++ library), which obviously doesn't included in libraries
-+ # list by gcc. This cause undefined symbols with -static flags.
-+ # This hack allows C programs to be linked with "-static -ldl", but
-+ # not sure about C++ programs.
-+ lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
- ;;
--
- amigaos*)
- # FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
-- lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
-+ lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
- ;;
--
-- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
--
-- mingw* | pw32* | os2*)
-- # This hack is so that the source file can tell whether it is being
-- # built for inclusion in a dll (and should export symbols for example).
-- lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
-- ;;
--
- darwin* | rhapsody*)
- # PIC is the default on this platform
- # Common symbols not allowed in MH_DYLIB files
-- lt_prog_compiler_pic_GCJ='-fno-common'
-+ lt_cv_prog_cc_pic='-fno-common'
- ;;
--
-- msdosdjgpp*)
-- # Just because we use GCC doesn't mean we suddenly get shared libraries
-- # on systems that don't support them.
-- lt_prog_compiler_can_build_shared_GCJ=no
-- enable_shared=no
-+ cygwin* | mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_cv_prog_cc_pic='-DDLL_EXPORT'
- ;;
--
- sysv4*MP*)
- if test -d /usr/nec; then
-- lt_prog_compiler_pic_GCJ=-Kconform_pic
-+ lt_cv_prog_cc_pic=-Kconform_pic
- fi
- ;;
--
-- hpux*)
-- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-- # not for PA HP-UX.
-- case $host_cpu in
-- hppa*64*|ia64*)
-- # +Z the default
-- ;;
-- *)
-- lt_prog_compiler_pic_GCJ='-fPIC'
-- ;;
-- esac
-- ;;
--
- *)
-- lt_prog_compiler_pic_GCJ='-fPIC'
-+ lt_cv_prog_cc_pic='-fPIC'
- ;;
- esac
- else
-- # PORTME Check for flag to pass linker flags through the system compiler.
-+ # PORTME Check for PIC flags for the system compiler.
- case $host_os in
-- aix*)
-- lt_prog_compiler_wl_GCJ='-Wl,'
-+ aix3* | aix4* | aix5*)
-+ lt_cv_prog_cc_wl='-Wl,'
-+ # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
-- lt_prog_compiler_static_GCJ='-Bstatic'
-+ lt_cv_prog_cc_static='-Bstatic'
- else
-- lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
-+ lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
- fi
- ;;
-- darwin*)
-- # PIC is the default on this platform
-- # Common symbols not allowed in MH_DYLIB files
-- case $cc_basename in
-- xlc*)
-- lt_prog_compiler_pic_GCJ='-qnocommon'
-- lt_prog_compiler_wl_GCJ='-Wl,'
-- ;;
-- esac
-- ;;
--
-- mingw* | pw32* | os2*)
-- # This hack is so that the source file can tell whether it is being
-- # built for inclusion in a dll (and should export symbols for example).
-- lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
-- ;;
-
- hpux9* | hpux10* | hpux11*)
-- lt_prog_compiler_wl_GCJ='-Wl,'
-- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-- # not for PA HP-UX.
-- case $host_cpu in
-- hppa*64*|ia64*)
-- # +Z the default
-- ;;
-- *)
-- lt_prog_compiler_pic_GCJ='+Z'
-- ;;
-- esac
-- # Is there a better lt_prog_compiler_static that works with the bundled CC?
-- lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
-+ # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
-+ lt_cv_prog_cc_pic='+Z'
- ;;
-
- irix5* | irix6* | nonstopux*)
-- lt_prog_compiler_wl_GCJ='-Wl,'
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-non_shared'
- # PIC (with -KPIC) is the default.
-- lt_prog_compiler_static_GCJ='-non_shared'
- ;;
-
-- newsos6)
-- lt_prog_compiler_pic_GCJ='-KPIC'
-- lt_prog_compiler_static_GCJ='-Bstatic'
-+ cygwin* | mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_cv_prog_cc_pic='-DDLL_EXPORT'
- ;;
-
-- linux*)
-- case $cc_basename in
-- icc* | ecc*)
-- lt_prog_compiler_wl_GCJ='-Wl,'
-- lt_prog_compiler_pic_GCJ='-KPIC'
-- lt_prog_compiler_static_GCJ='-static'
-- ;;
-- pgcc* | pgf77* | pgf90* | pgf95*)
-- # Portland Group compilers (*not* the Pentium gcc compiler,
-- # which looks to be a dead project)
-- lt_prog_compiler_wl_GCJ='-Wl,'
-- lt_prog_compiler_pic_GCJ='-fpic'
-- lt_prog_compiler_static_GCJ='-Bstatic'
-- ;;
-- ccc*)
-- lt_prog_compiler_wl_GCJ='-Wl,'
-- # All Alpha code is PIC.
-- lt_prog_compiler_static_GCJ='-non_shared'
-- ;;
-- esac
-+ newsos6)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
- ;;
-
- osf3* | osf4* | osf5*)
-- lt_prog_compiler_wl_GCJ='-Wl,'
- # All OSF/1 code is PIC.
-- lt_prog_compiler_static_GCJ='-non_shared'
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-non_shared'
- ;;
-
- sco3.2v5*)
-- lt_prog_compiler_pic_GCJ='-Kpic'
-- lt_prog_compiler_static_GCJ='-dn'
-+ lt_cv_prog_cc_pic='-Kpic'
-+ lt_cv_prog_cc_static='-dn'
-+ lt_cv_prog_cc_shlib='-belf'
- ;;
-
- solaris*)
-- lt_prog_compiler_pic_GCJ='-KPIC'
-- lt_prog_compiler_static_GCJ='-Bstatic'
-- case $cc_basename in
-- f77* | f90* | f95*)
-- lt_prog_compiler_wl_GCJ='-Qoption ld ';;
-- *)
-- lt_prog_compiler_wl_GCJ='-Wl,';;
-- esac
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Wl,'
- ;;
-
- sunos4*)
-- lt_prog_compiler_wl_GCJ='-Qoption ld '
-- lt_prog_compiler_pic_GCJ='-PIC'
-- lt_prog_compiler_static_GCJ='-Bstatic'
-+ lt_cv_prog_cc_pic='-PIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Qoption ld '
- ;;
-
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-- lt_prog_compiler_wl_GCJ='-Wl,'
-- lt_prog_compiler_pic_GCJ='-KPIC'
-- lt_prog_compiler_static_GCJ='-Bstatic'
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Wl,'
-+ ;;
-+
-+ uts4*)
-+ lt_cv_prog_cc_pic='-pic'
-+ lt_cv_prog_cc_static='-Bstatic'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec ;then
-- lt_prog_compiler_pic_GCJ='-Kconform_pic'
-- lt_prog_compiler_static_GCJ='-Bstatic'
-+ lt_cv_prog_cc_pic='-Kconform_pic'
-+ lt_cv_prog_cc_static='-Bstatic'
- fi
- ;;
-
-- unicos*)
-- lt_prog_compiler_wl_GCJ='-Wl,'
-- lt_prog_compiler_can_build_shared_GCJ=no
-- ;;
--
-- uts4*)
-- lt_prog_compiler_pic_GCJ='-pic'
-- lt_prog_compiler_static_GCJ='-Bstatic'
-- ;;
--
- *)
-- lt_prog_compiler_can_build_shared_GCJ=no
-+ lt_cv_prog_cc_can_build_shared=no
- ;;
- esac
- fi
-
--echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
--echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
--
--#
--# Check to make sure the PIC flag actually works.
--#
--if test -n "$lt_prog_compiler_pic_GCJ"; then
--
--echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
--echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
--if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- lt_prog_compiler_pic_works_GCJ=no
-- ac_outfile=conftest.$ac_objext
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-- lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
-- # Insert the option either (1) after the last *FLAGS variable, or
-- # (2) before a word containing "conftest.", or (3) at the end.
-- # Note that $ac_compile itself does not contain backslashes and begins
-- # with a dollar sign (not a hyphen), so the echo should work correctly.
-- # The option is referenced via a variable to avoid confusing sed.
-- lt_compile=`echo "$ac_compile" | $SED \
-- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:16082: $lt_compile\"" >&5)
-- (eval "$lt_compile" 2>conftest.err)
-- ac_status=$?
-- cat conftest.err >&5
-- echo "$as_me:16086: \$? = $ac_status" >&5
-- if (exit $ac_status) && test -s "$ac_outfile"; then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings other than the usual output.
-- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-- $SED '/^$/d' conftest.err >conftest.er2
-- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
-- lt_prog_compiler_pic_works_GCJ=yes
-- fi
-- fi
-- $rm conftest*
--
- fi
--echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
--echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
-
--if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
-- case $lt_prog_compiler_pic_GCJ in
-- "" | " "*) ;;
-- *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
-- esac
-+if test -z "$lt_cv_prog_cc_pic"; then
-+ echo "$as_me:$LINENO: result: none" >&5
-+echo "${ECHO_T}none" >&6
- else
-- lt_prog_compiler_pic_GCJ=
-- lt_prog_compiler_can_build_shared_GCJ=no
--fi
--
--fi
--case $host_os in
-- # For platforms which do not support PIC, -DPIC is meaningless:
-- *djgpp*)
-- lt_prog_compiler_pic_GCJ=
-- ;;
-- *)
-- lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
-- ;;
--esac
-+ echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5
-+echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6
-
--echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
--echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
--if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
-+ # Check to make sure the pic_flag actually works.
-+ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
-+echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6
-+ if test "${lt_cv_prog_cc_pic_works+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- lt_cv_prog_compiler_c_o_GCJ=no
-- $rm -r conftest 2>/dev/null
-- mkdir conftest
-- cd conftest
-- mkdir out
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
--
-- lt_compiler_flag="-o out/conftest2.$ac_objext"
-- # Insert the option either (1) after the last *FLAGS variable, or
-- # (2) before a word containing "conftest.", or (3) at the end.
-- # Note that $ac_compile itself does not contain backslashes and begins
-- # with a dollar sign (not a hyphen), so the echo should work correctly.
-- lt_compile=`echo "$ac_compile" | $SED \
-- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:16144: $lt_compile\"" >&5)
-- (eval "$lt_compile" 2>out/conftest.err)
-- ac_status=$?
-- cat out/conftest.err >&5
-- echo "$as_me:16148: \$? = $ac_status" >&5
-- if (exit $ac_status) && test -s out/conftest2.$ac_objext
-- then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings
-- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
-- $SED '/^$/d' out/conftest.err >out/conftest.er2
-- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-- lt_cv_prog_compiler_c_o_GCJ=yes
-- fi
-- fi
-- chmod u+w . 2>&5
-- $rm conftest*
-- # SGI C++ compiler will create directory out/ii_files/ for
-- # template instantiation
-- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-- $rm out/* && rmdir out
-- cd ..
-- rmdir conftest
-- $rm conftest*
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--fi
--echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
--echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
-+int
-+main ()
-+{
-
-+ ;
-+ 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
-+ case $host_os in
-+ hpux9* | hpux10* | hpux11*)
-+ # On HP-UX, both CC and GCC only warn that PIC is supported... then
-+ # they create non-PIC objects. So, if there were any warnings, we
-+ # assume that PIC is not supported.
-+ if test -s conftest.err; then
-+ lt_cv_prog_cc_pic_works=no
-+ else
-+ lt_cv_prog_cc_pic_works=yes
-+ fi
-+ ;;
-+ *)
-+ lt_cv_prog_cc_pic_works=yes
-+ ;;
-+ esac
-
--hard_links="nottested"
--if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
-- # do not overwrite the value of need_locks provided by the user
-- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
--echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-- hard_links=yes
-- $rm conftest*
-- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- touch conftest.a
-- ln conftest.a conftest.b 2>&5 || hard_links=no
-- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- echo "$as_me:$LINENO: result: $hard_links" >&5
--echo "${ECHO_T}$hard_links" >&6
-- if test "$hard_links" = no; then
-- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
--echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-- need_locks=warn
-- fi
- else
-- need_locks=no
--fi
--
--echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
--echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
--
-- runpath_var=
-- allow_undefined_flag_GCJ=
-- enable_shared_with_static_runtimes_GCJ=no
-- archive_cmds_GCJ=
-- archive_expsym_cmds_GCJ=
-- old_archive_From_new_cmds_GCJ=
-- old_archive_from_expsyms_cmds_GCJ=
-- export_dynamic_flag_spec_GCJ=
-- whole_archive_flag_spec_GCJ=
-- thread_safe_flag_spec_GCJ=
-- hardcode_libdir_flag_spec_GCJ=
-- hardcode_libdir_flag_spec_ld_GCJ=
-- hardcode_libdir_separator_GCJ=
-- hardcode_direct_GCJ=no
-- hardcode_minus_L_GCJ=no
-- hardcode_shlibpath_var_GCJ=unsupported
-- link_all_deplibs_GCJ=unknown
-- hardcode_automatic_GCJ=no
-- module_cmds_GCJ=
-- module_expsym_cmds_GCJ=
-- always_export_symbols_GCJ=no
-- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-- # include_expsyms should be a list of space-separated symbols to be *always*
-- # included in the symbol list
-- include_expsyms_GCJ=
-- # exclude_expsyms can be an extended regexp of symbols to exclude
-- # it will be wrapped by ` (' and `)$', so one must not match beginning or
-- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-- # as well as any symbol that contains `d'.
-- exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
-- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-- # platforms (ab)use it in PIC code, but their linkers get confused if
-- # the symbol is explicitly referenced. Since portable code cannot
-- # rely on this symbol name, it's probably fine to never include it in
-- # preloaded symbol tables.
-- extract_expsyms_cmds=
-- # Just being paranoid about ensuring that cc_basename is set.
-- for cc_temp in $compiler""; do
-- case $cc_temp in
-- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-- \-*) ;;
-- *) break;;
-- esac
--done
--cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
--
-- case $host_os in
-- cygwin* | mingw* | pw32*)
-- # FIXME: the MSVC++ port hasn't been tested in a loooong time
-- # When not using gcc, we currently assume that we are using
-- # Microsoft Visual C++.
-- if test "$GCC" != yes; then
-- with_gnu_ld=no
-- fi
-- ;;
-- openbsd*)
-- with_gnu_ld=no
-- ;;
-- esac
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
-- ld_shlibs_GCJ=yes
-- if test "$with_gnu_ld" = yes; then
-- # If archive_cmds runs LD, not CC, wlarc should be empty
-- wlarc='${wl}'
-+ lt_cv_prog_cc_pic_works=no
-
-- # Set some defaults for GNU ld with shared library support. These
-- # are reset later if shared libraries are not supported. Putting them
-- # here allows them to be overridden if necessary.
-- runpath_var=LD_RUN_PATH
-- hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
-- export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
-- # ancient GNU ld didn't support --whole-archive et. al.
-- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-- whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-- else
-- whole_archive_flag_spec_GCJ=
-- fi
-- supports_anon_versioning=no
-- case `$LD -v 2>/dev/null` in
-- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-- *\ 2.11.*) ;; # other 2.11 versions
-- *) supports_anon_versioning=yes ;;
-- esac
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ CFLAGS="$save_CFLAGS"
-
-- # See if GNU ld supports shared libraries.
-- case $host_os in
-- aix3* | aix4* | aix5*)
-- # On AIX/PPC, the GNU linker is very broken
-- if test "$host_cpu" != ia64; then
-- ld_shlibs_GCJ=no
-- cat <<EOF 1>&2
-+fi
-
--*** Warning: the GNU linker, at least up to release 2.9.1, is reported
--*** to be unable to reliably create shared libraries on AIX.
--*** Therefore, libtool is disabling shared libraries support. If you
--*** really care for shared libraries, you may want to modify your PATH
--*** so that a non-GNU linker is found, and then restart.
-
--EOF
-- fi
-- ;;
-+ if test "X$lt_cv_prog_cc_pic_works" = Xno; then
-+ lt_cv_prog_cc_pic=
-+ lt_cv_prog_cc_can_build_shared=no
-+ else
-+ lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
-+ fi
-
-- amigaos*)
-- archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-- hardcode_libdir_flag_spec_GCJ='-L$libdir'
-- hardcode_minus_L_GCJ=yes
--
-- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-- # that the semantics of dynamic libraries on AmigaOS, at least up
-- # to version 4, is to share data among multiple programs linked
-- # with the same dynamic library. Since this doesn't match the
-- # behavior of shared libraries on other platforms, we can't use
-- # them.
-- ld_shlibs_GCJ=no
-- ;;
-+ echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5
-+echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6
-+fi
-
-- beos*)
-- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- allow_undefined_flag_GCJ=unsupported
-- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-- # support --undefined. This deserves some investigation. FIXME
-- archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- else
-- ld_shlibs_GCJ=no
-- fi
-- ;;
-+# Check for any special shared library compilation flags.
-+if test -n "$lt_cv_prog_cc_shlib"; then
-+ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5
-+echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;}
-+ if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then :
-+ else
-+ { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
-+echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
-+ lt_cv_prog_cc_can_build_shared=no
-+ fi
-+fi
-
-- cygwin* | mingw* | pw32*)
-- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
-- # as there is no search path for DLLs.
-- hardcode_libdir_flag_spec_GCJ='-L$libdir'
-- allow_undefined_flag_GCJ=unsupported
-- always_export_symbols_GCJ=no
-- enable_shared_with_static_runtimes_GCJ=yes
-- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
--
-- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-- # If the export-symbols file already is a .def file (1st line
-- # is EXPORTS), use it as is; otherwise, prepend...
-- archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-- cp $export_symbols $output_objdir/$soname.def;
-- else
-- echo EXPORTS > $output_objdir/$soname.def;
-- cat $export_symbols >> $output_objdir/$soname.def;
-- fi~
-- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-- else
-- ld_shlibs_GCJ=no
-- fi
-- ;;
-+echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
-+echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6
-+if test "${lt_cv_prog_cc_static_works+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_prog_cc_static_works=no
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
-- linux*)
-- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- tmp_addflag=
-- case $cc_basename,$host_cpu in
-- pgcc*) # Portland Group C compiler
-- whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-- tmp_addflag=' $pic_flag'
-- ;;
-- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
-- whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-- tmp_addflag=' $pic_flag -Mnomain' ;;
-- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
-- tmp_addflag=' -i_dynamic' ;;
-- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
-- tmp_addflag=' -i_dynamic -nofor_main' ;;
-- ifc* | ifort*) # Intel Fortran compiler
-- tmp_addflag=' -nofor_main' ;;
-- esac
-- archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+int
-+main ()
-+{
-
-- if test $supports_anon_versioning = yes; then
-- archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
-- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-- $echo "local: *; };" >> $output_objdir/$libname.ver~
-- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-- fi
-- else
-- ld_shlibs_GCJ=no
-- fi
-- ;;
-+ ;
-+ 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
-+ lt_cv_prog_cc_static_works=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
-- netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-- wlarc=
-- else
-- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- fi
-- ;;
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+ LDFLAGS="$save_LDFLAGS"
-
-- solaris* | sysv5*)
-- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-- ld_shlibs_GCJ=no
-- cat <<EOF 1>&2
-+fi
-
--*** Warning: The releases 2.8.* of the GNU linker cannot reliably
--*** create shared libraries on Solaris systems. Therefore, libtool
--*** is disabling shared libraries support. We urge you to upgrade GNU
--*** binutils to release 2.9.1 or newer. Another option is to modify
--*** your PATH or compiler configuration so that the native linker is
--*** used, and then restart.
-
--EOF
-- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- else
-- ld_shlibs_GCJ=no
-- fi
-- ;;
-+# Belt *and* braces to stop my trousers falling down:
-+test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
-+echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5
-+echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6
-
-- sunos4*)
-- archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- wlarc=
-- hardcode_direct_GCJ=yes
-- hardcode_shlibpath_var_GCJ=no
-- ;;
-+pic_flag="$lt_cv_prog_cc_pic"
-+special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
-+wl="$lt_cv_prog_cc_wl"
-+link_static_flag="$lt_cv_prog_cc_static"
-+no_builtin_flag="$lt_cv_prog_cc_no_builtin"
-+can_build_shared="$lt_cv_prog_cc_can_build_shared"
-
-- *)
-- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- else
-- ld_shlibs_GCJ=no
-- fi
-- ;;
-- esac
-
-- if test "$ld_shlibs_GCJ" = no; then
-- runpath_var=
-- hardcode_libdir_flag_spec_GCJ=
-- export_dynamic_flag_spec_GCJ=
-- whole_archive_flag_spec_GCJ=
-- fi
-- else
-- # PORTME fill in a description of your system's linker (not GNU ld)
-- case $host_os in
-- aix3*)
-- allow_undefined_flag_GCJ=unsupported
-- always_export_symbols_GCJ=yes
-- archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-- # Note: this linker hardcodes the directories in LIBPATH if there
-- # are no directories specified by -L.
-- hardcode_minus_L_GCJ=yes
-- if test "$GCC" = yes && test -z "$link_static_flag"; then
-- # Neither direct hardcoding nor static linking is supported with a
-- # broken collect2.
-- hardcode_direct_GCJ=unsupported
-- fi
-- ;;
-+# Check to see if options -o and -c are simultaneously supported by compiler
-+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-+if test "${lt_cv_compiler_c_o+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-
-- aix4* | aix5*)
-- if test "$host_cpu" = ia64; then
-- # On IA64, the linker does run time linking by default, so we don't
-- # have to do anything special.
-- aix_use_runtimelinking=no
-- exp_sym_flag='-Bexport'
-- no_entry_flag=""
-- else
-- # If we're using GNU nm, then we don't want the "-C" option.
-- # -C means demangle to AIX nm, but means don't demangle with GNU nm
-- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-- export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-- else
-- export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-- fi
-- aix_use_runtimelinking=no
-+$rm -r conftest 2>/dev/null
-+mkdir conftest
-+cd conftest
-+echo "int some_variable = 0;" > conftest.$ac_ext
-+mkdir out
-+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
-+# that will create temporary files in the current directory regardless of
-+# the output directory. Thus, making CWD read-only will cause this test
-+# to fail, enabling locking or at least warning the user not to do parallel
-+# builds.
-+chmod -w .
-+save_CFLAGS="$CFLAGS"
-+CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
-+compiler_c_o=no
-+if { (eval echo configure:5263: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s out/conftest.err; then
-+ lt_cv_compiler_c_o=no
-+ else
-+ lt_cv_compiler_c_o=yes
-+ fi
-+else
-+ # Append any errors to the config.log.
-+ cat out/conftest.err 1>&5
-+ lt_cv_compiler_c_o=no
-+fi
-+CFLAGS="$save_CFLAGS"
-+chmod u+w .
-+$rm conftest* out/*
-+rmdir out
-+cd ..
-+rmdir conftest
-+$rm -r conftest 2>/dev/null
-
-- # Test if we are trying to use run time linking or normal
-- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-- # need to do runtime linking.
-- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-- for ld_flag in $LDFLAGS; do
-- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-- aix_use_runtimelinking=yes
-- break
-- fi
-- done
-- esac
-+fi
-
-- exp_sym_flag='-bexport'
-- no_entry_flag='-bnoentry'
-- fi
-+compiler_c_o=$lt_cv_compiler_c_o
-+echo "$as_me:$LINENO: result: $compiler_c_o" >&5
-+echo "${ECHO_T}$compiler_c_o" >&6
-
-- # When large executables or shared objects are built, AIX ld can
-- # have problems creating the table of contents. If linking a library
-- # or program results in "error TOC overflow" add -mminimal-toc to
-- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
--
-- archive_cmds_GCJ=''
-- hardcode_direct_GCJ=yes
-- hardcode_libdir_separator_GCJ=':'
-- link_all_deplibs_GCJ=yes
--
-- if test "$GCC" = yes; then
-- case $host_os in aix4.[012]|aix4.[012].*)
-- # We only want to do this on AIX 4.2 and lower, the check
-- # below for broken collect2 doesn't work under 4.3+
-- collect2name=`${CC} -print-prog-name=collect2`
-- if test -f "$collect2name" && \
-- strings "$collect2name" | grep resolve_lib_name >/dev/null
-- then
-- # We have reworked collect2
-- hardcode_direct_GCJ=yes
-- else
-- # We have old collect2
-- hardcode_direct_GCJ=unsupported
-- # It fails to find uninstalled libraries when the uninstalled
-- # path is not listed in the libpath. Setting hardcode_minus_L
-- # to unsupported forces relinking
-- hardcode_minus_L_GCJ=yes
-- hardcode_libdir_flag_spec_GCJ='-L$libdir'
-- hardcode_libdir_separator_GCJ=
-- fi
-- esac
-- shared_flag='-shared'
-- if test "$aix_use_runtimelinking" = yes; then
-- shared_flag="$shared_flag "'${wl}-G'
-- fi
-- else
-- # not using gcc
-- if test "$host_cpu" = ia64; then
-- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-- # chokes on -Wl,-G. The following line is correct:
-- shared_flag='-G'
-- else
-- if test "$aix_use_runtimelinking" = yes; then
-- shared_flag='${wl}-G'
-- else
-- shared_flag='${wl}-bM:SRE'
-- fi
-- fi
-- fi
-+if test x"$compiler_c_o" = x"yes"; then
-+ # Check to see if we can write to a .lo
-+ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5
-+echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6
-+ if test "${lt_cv_compiler_o_lo+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-
-- # It seems that -bexpall does not export symbols beginning with
-- # underscore (_), so it is better to generate a list of symbols to export.
-- always_export_symbols_GCJ=yes
-- if test "$aix_use_runtimelinking" = yes; then
-- # Warning - without using the other runtime loading flags (-brtl),
-- # -berok will link without error, but may produce a broken library.
-- allow_undefined_flag_GCJ='-berok'
-- # Determine the default libpath from the value encoded in an empty executable.
-- cat >conftest.$ac_ext <<_ACEOF
-+ lt_cv_compiler_o_lo=no
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -c -o conftest.lo"
-+ save_objext="$ac_objext"
-+ ac_objext=lo
-+ cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -16555,58 +5310,90 @@
- int
- main ()
- {
--
-+int some_variable = 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
-+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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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'
-+ { 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
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s conftest.err; then
-+ lt_cv_compiler_o_lo=no
-+ else
-+ lt_cv_compiler_o_lo=yes
-+ fi
-
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`; 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_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ ac_objext="$save_objext"
-+ CFLAGS="$save_CFLAGS"
-
-- hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
-- archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-- else
-- if test "$host_cpu" = ia64; then
-- hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
-- allow_undefined_flag_GCJ="-z nodefs"
-- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-- else
-- # Determine the default libpath from the value encoded in an empty executable.
-- cat >conftest.$ac_ext <<_ACEOF
-+fi
-+
-+ compiler_o_lo=$lt_cv_compiler_o_lo
-+ echo "$as_me:$LINENO: result: $compiler_o_lo" >&5
-+echo "${ECHO_T}$compiler_o_lo" >&6
-+else
-+ compiler_o_lo=no
-+fi
-+
-+# Check to see if we can do hard links to lock some files if needed
-+hard_links="nottested"
-+if test "$compiler_c_o" = no && test "$need_locks" != no; then
-+ # do not overwrite the value of need_locks provided by the user
-+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-+ hard_links=yes
-+ $rm conftest*
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ touch conftest.a
-+ ln conftest.a conftest.b 2>&5 || hard_links=no
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ echo "$as_me:$LINENO: result: $hard_links" >&5
-+echo "${ECHO_T}$hard_links" >&6
-+ if test "$hard_links" = no; then
-+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-+ need_locks=warn
-+ fi
-+else
-+ need_locks=no
-+fi
-+
-+if test "$GCC" = yes; then
-+ # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
-+ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
-+ echo "int some_variable = 0;" > conftest.$ac_ext
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
-+ compiler_rtti_exceptions=no
-+ cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -16616,556 +5403,808 @@
- int
- main ()
- {
--
-+int some_variable = 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
-+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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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'
-+ { 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
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s conftest.err; then
-+ compiler_rtti_exceptions=no
-+ else
-+ compiler_rtti_exceptions=yes
-+ fi
-
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
--}'`; 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_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ CFLAGS="$save_CFLAGS"
-+ echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5
-+echo "${ECHO_T}$compiler_rtti_exceptions" >&6
-+
-+ if test "$compiler_rtti_exceptions" = "yes"; then
-+ no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
-+ else
-+ no_builtin_flag=' -fno-builtin'
-+ fi
-+fi
-+
-+# See if the linker supports building shared libraries.
-+echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5
-+echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6
-+
-+allow_undefined_flag=
-+no_undefined_flag=
-+need_lib_prefix=unknown
-+need_version=unknown
-+# when you set need_version to no, make sure it does not cause -set_version
-+# flags to be left without arguments
-+archive_cmds=
-+archive_expsym_cmds=
-+old_archive_from_new_cmds=
-+old_archive_from_expsyms_cmds=
-+export_dynamic_flag_spec=
-+whole_archive_flag_spec=
-+thread_safe_flag_spec=
-+hardcode_into_libs=no
-+hardcode_libdir_flag_spec=
-+hardcode_libdir_separator=
-+hardcode_direct=no
-+hardcode_minus_L=no
-+hardcode_shlibpath_var=unsupported
-+runpath_var=
-+link_all_deplibs=unknown
-+always_export_symbols=no
-+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+# include_expsyms should be a list of space-separated symbols to be *always*
-+# included in the symbol list
-+include_expsyms=
-+# exclude_expsyms can be an egrep regular expression of symbols to exclude
-+# it will be wrapped by ` (' and `)$', so one must not match beginning or
-+# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-+# as well as any symbol that contains `d'.
-+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-+# platforms (ab)use it in PIC code, but their linkers get confused if
-+# the symbol is explicitly referenced. Since portable code cannot
-+# rely on this symbol name, it's probably fine to never include it in
-+# preloaded symbol tables.
-+extract_expsyms_cmds=
-+
-+case $host_os in
-+cygwin* | mingw* | pw32*)
-+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ if test "$GCC" != yes; then
-+ with_gnu_ld=no
-+ fi
-+ ;;
-+openbsd*)
-+ with_gnu_ld=no
-+ ;;
-+esac
-+
-+ld_shlibs=yes
-+if test "$with_gnu_ld" = yes; then
-+ # If archive_cmds runs LD, not CC, wlarc should be empty
-+ wlarc='${wl}'
-+
-+ # See if GNU ld supports shared libraries.
-+ case $host_os in
-+ aix3* | aix4* | aix5*)
-+ # On AIX, the GNU linker is very broken
-+ # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
-+ ld_shlibs=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-+*** to be unable to reliably create shared libraries on AIX.
-+*** Therefore, libtool is disabling shared libraries support. If you
-+*** really care for shared libraries, you may want to modify your PATH
-+*** so that a non-GNU linker is found, and then restart.
-+
-+EOF
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+
-+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-+ # that the semantics of dynamic libraries on AmigaOS, at least up
-+ # to version 4, is to share data among multiple programs linked
-+ # with the same dynamic library. Since this doesn't match the
-+ # behavior of shared libraries on other platforms, we can use
-+ # them.
-+ ld_shlibs=no
-+ ;;
-+
-+ beos*)
-+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ allow_undefined_flag=unsupported
-+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-+ # support --undefined. This deserves some investigation. FIXME
-+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+
-+ extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
-+ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
-+ test -f $output_objdir/impgen.exe || (cd $output_objdir && \
-+ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
-+ else $CC -o impgen impgen.c ; fi)~
-+ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
-+
-+ old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
-+
-+ # cygwin and mingw dlls have different entry points and sets of symbols
-+ # to exclude.
-+ # FIXME: what about values for MSVC?
-+ dll_entry=__cygwin_dll_entry@12
-+ dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
-+ case $host_os in
-+ mingw*)
-+ # mingw values
-+ dll_entry=_DllMainCRTStartup@12
-+ dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
-+ ;;
-+ esac
-+
-+ # mingw and cygwin differ, and it's simplest to just exclude the union
-+ # of the two symbol sets.
-+ dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
-+
-+ # recent cygwin and mingw systems supply a stub DllMain which the user
-+ # can override, but on older systems we have to supply one (in ltdll.c)
-+ if test "x$lt_cv_need_dllmain" = "xyes"; then
-+ ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
-+ ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
-+ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
-+ else
-+ ltdll_obj=
-+ ltdll_cmds=
-+ fi
-+
-+ # Extract the symbol export list from an `--export-all' def file,
-+ # then regenerate the def file from the symbol export list, so that
-+ # the compiled dll only exports the symbol export list.
-+ # Be careful not to strip the DATA tag left be newer dlltools.
-+ export_symbols_cmds="$ltdll_cmds"'
-+ $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
-+ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
-+
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is.
-+ # If DATA tags from a recent dlltool are present, honour them!
-+ archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname-def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname-def;
-+ _lt_hint=1;
-+ cat $export_symbols | while read symbol; do
-+ set dummy \$symbol;
-+ case \$# in
-+ 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
-+ 4) echo " \$2 \$3 \$4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;;
-+ *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;;
-+ esac;
-+ _lt_hint=`expr 1 + \$_lt_hint`;
-+ done;
-+ fi~
-+ '"$ltdll_cmds"'
-+ $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
-+ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
-+ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
-+ ;;
-+
-+ netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-+ wlarc=
-+ else
-+ archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ fi
-+ ;;
-+
-+ solaris* | sysv5*)
-+ if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
-+ ld_shlibs=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-+*** create shared libraries on Solaris systems. Therefore, libtool
-+*** is disabling shared libraries support. We urge you to upgrade GNU
-+*** binutils to release 2.9.1 or newer. Another option is to modify
-+*** your PATH or compiler configuration so that the native linker is
-+*** used, and then restart.
-+
-+EOF
-+ elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ sunos4*)
-+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ wlarc=
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ *)
-+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+ esac
-+
-+ if test "$ld_shlibs" = yes; then
-+ runpath_var=LD_RUN_PATH
-+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
-+ export_dynamic_flag_spec='${wl}--export-dynamic'
-+ case $host_os in
-+ cygwin* | mingw* | pw32*)
-+ # dlltool doesn't understand --whole-archive et. al.
-+ whole_archive_flag_spec=
-+ ;;
-+ *)
-+ # ancient GNU ld didn't support --whole-archive et. al.
-+ if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
-+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ else
-+ whole_archive_flag_spec=
-+ fi
-+ ;;
-+ esac
-+ fi
-+else
-+ # PORTME fill in a description of your system's linker (not GNU ld)
-+ case $host_os in
-+ aix3*)
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-+ # Note: this linker hardcodes the directories in LIBPATH if there
-+ # are no directories specified by -L.
-+ hardcode_minus_L=yes
-+ if test "$GCC" = yes && test -z "$link_static_flag"; then
-+ # Neither direct hardcoding nor static linking is supported with a
-+ # broken collect2.
-+ hardcode_direct=unsupported
-+ fi
-+ ;;
-+
-+ aix4* | aix5*)
-+ if test "$host_cpu" = ia64; then
-+ # On IA64, the linker does run time linking by default, so we don't
-+ # have to do anything special.
-+ aix_use_runtimelinking=no
-+ exp_sym_flag='-Bexport'
-+ no_entry_flag=""
-+ else
-+ aix_use_runtimelinking=no
-+
-+ # Test if we are trying to use run time linking or normal
-+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-+ # need to do runtime linking.
-+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-+ for ld_flag in $LDFLAGS; do
-+ case $ld_flag in
-+ *-brtl*)
-+ aix_use_runtimelinking=yes
-+ break
-+ ;;
-+ esac
-+ done
-+ esac
-+
-+ exp_sym_flag='-bexport'
-+ no_entry_flag='-bnoentry'
-+ fi
-+
-+ # When large executables or shared objects are built, AIX ld can
-+ # have problems creating the table of contents. If linking a library
-+ # or program results in "error TOC overflow" add -mminimal-toc to
-+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-+
-+ hardcode_direct=yes
-+ archive_cmds=''
-+ hardcode_libdir_separator=':'
-+ if test "$GCC" = yes; then
-+ case $host_os in aix4.[012]|aix4.[012].*)
-+ collect2name=`${CC} -print-prog-name=collect2`
-+ if test -f "$collect2name" && \
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ then
-+ # We have reworked collect2
-+ hardcode_direct=yes
-+ else
-+ # We have old collect2
-+ hardcode_direct=unsupported
-+ # It fails to find uninstalled libraries when the uninstalled
-+ # path is not listed in the libpath. Setting hardcode_minus_L
-+ # to unsupported forces relinking
-+ hardcode_minus_L=yes
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_libdir_separator=
-+ fi
-+ esac
-
-- hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
-- # Warning - without using the other run time loading flags,
-- # -berok will link without error, but may produce a broken library.
-- no_undefined_flag_GCJ=' ${wl}-bernotok'
-- allow_undefined_flag_GCJ=' ${wl}-berok'
-- # -bexpall does not export symbols beginning with underscore (_)
-- always_export_symbols_GCJ=yes
-- # Exported symbols can be pulled into shared objects from archives
-- whole_archive_flag_spec_GCJ=' '
-- archive_cmds_need_lc_GCJ=yes
-- # This is similar to how AIX traditionally builds its shared libraries.
-- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-+ shared_flag='-shared'
-+ else
-+ # not using gcc
-+ if test "$host_cpu" = ia64; then
-+ shared_flag='${wl}-G'
-+ else
-+ if test "$aix_use_runtimelinking" = yes; then
-+ shared_flag='${wl}-G'
-+ else
-+ shared_flag='${wl}-bM:SRE'
- fi
- fi
-- ;;
--
-- amigaos*)
-- archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-- hardcode_libdir_flag_spec_GCJ='-L$libdir'
-- hardcode_minus_L_GCJ=yes
-- # see comment about different semantics on the GNU ld section
-- ld_shlibs_GCJ=no
-- ;;
--
-- bsdi[45]*)
-- export_dynamic_flag_spec_GCJ=-rdynamic
-- ;;
--
-- cygwin* | mingw* | pw32*)
-- # When not using gcc, we currently assume that we are using
-- # Microsoft Visual C++.
-- # hardcode_libdir_flag_spec is actually meaningless, as there is
-- # no search path for DLLs.
-- hardcode_libdir_flag_spec_GCJ=' '
-- allow_undefined_flag_GCJ=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # Tell ltmain to make .dll files, not .so files.
-- shrext_cmds=".dll"
-- # FIXME: Setting linknames here is a bad hack.
-- archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- old_archive_From_new_cmds_GCJ='true'
-- # FIXME: Should let the user specify the lib program.
-- old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
-- fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
-- enable_shared_with_static_runtimes_GCJ=yes
-- ;;
-+ fi
-
-- darwin* | rhapsody*)
-- case $host_os in
-- rhapsody* | darwin1.[012])
-- allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
-- ;;
-- *) # Darwin 1.3 on
-- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-- allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-- else
-- case ${MACOSX_DEPLOYMENT_TARGET} in
-- 10.[012])
-- allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-- ;;
-- 10.*)
-- allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
-- ;;
-- esac
-- fi
-- ;;
-- esac
-- archive_cmds_need_lc_GCJ=no
-- hardcode_direct_GCJ=no
-- hardcode_automatic_GCJ=yes
-- hardcode_shlibpath_var_GCJ=unsupported
-- whole_archive_flag_spec_GCJ=''
-- link_all_deplibs_GCJ=yes
-- if test "$GCC" = yes ; then
-- output_verbose_link_cmd='echo'
-- archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-- module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ # It seems that -bexpall can do strange things, so it is better to
-+ # generate a list of symbols to export.
-+ always_export_symbols=yes
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # Warning - without using the other runtime loading flags (-brtl),
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='-berok'
-+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
-+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
- else
-- case $cc_basename in
-- xlc*)
-- output_verbose_link_cmd='echo'
-- archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
-- module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- ;;
-- *)
-- ld_shlibs_GCJ=no
-- ;;
-- esac
-+ if test "$host_cpu" = ia64; then
-+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-+ allow_undefined_flag="-z nodefs"
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ else
-+ hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
-+ # Warning - without using the other run time loading flags,
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='${wl}-berok'
-+ # This is a bit strange, but is similar to how AIX traditionally builds
-+ # it's shared libraries.
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $output_objdir/$libname$release.a $output_objdir/$soname'
-+ fi
- fi
-- ;;
-+ ;;
-
-- dgux*)
-- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec_GCJ='-L$libdir'
-- hardcode_shlibpath_var_GCJ=no
-- ;;
-+ amigaos*)
-+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ # see comment about different semantics on the GNU ld section
-+ ld_shlibs=no
-+ ;;
-
-- freebsd1*)
-- ld_shlibs_GCJ=no
-- ;;
-+ cygwin* | mingw* | pw32*)
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_from_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
-+ fix_srcfile_path='`cygpath -w "$srcfile"`'
-+ ;;
-+
-+ darwin* | rhapsody*)
-+ case "$host_os" in
-+ rhapsody* | darwin1.[012])
-+ allow_undefined_flag='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ allow_undefined_flag='-flat_namespace -undefined suppress'
-+ ;;
-+ esac
-+ # FIXME: Relying on posixy $() will cause problems for
-+ # cross-compilation, but unfortunately the echo tests do not
-+ # yet detect zsh echo's removal of \ escapes. Also zsh mangles
-+ # `"' quotes if we put them in here... so don't!
-+ archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)'
-+ # We need to add '_' to the symbols in $export_symbols first
-+ #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ whole_archive_flag_spec='-all_load $convenience'
-+ ;;
-+
-+ freebsd1*)
-+ ld_shlibs=no
-+ ;;
-+
-+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-+ # support. Future versions do this automatically, but an explicit c++rt0.o
-+ # does not break anything, and helps significantly (at the cost of a little
-+ # extra space).
-+ freebsd2.2*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-
-- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-- # support. Future versions do this automatically, but an explicit c++rt0.o
-- # does not break anything, and helps significantly (at the cost of a little
-- # extra space).
-- freebsd2.2*)
-- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-- hardcode_libdir_flag_spec_GCJ='-R$libdir'
-- hardcode_direct_GCJ=yes
-- hardcode_shlibpath_var_GCJ=no
-- ;;
-+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-+ freebsd2*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-
-- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-- freebsd2*)
-- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct_GCJ=yes
-- hardcode_minus_L_GCJ=yes
-- hardcode_shlibpath_var_GCJ=no
-- ;;
-+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-+ freebsd*)
-+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-
-- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-- freebsd* | kfreebsd*-gnu | dragonfly*)
-- archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-- hardcode_libdir_flag_spec_GCJ='-R$libdir'
-- hardcode_direct_GCJ=yes
-- hardcode_shlibpath_var_GCJ=no
-- ;;
-+ hpux9* | hpux10* | hpux11*)
-+ case $host_os in
-+ hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
-+ *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
-+ esac
-+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes # Not in the search PATH, but as the default
-+ # location of the library.
-+ export_dynamic_flag_spec='${wl}-E'
-+ ;;
-
-- hpux9*)
-- if test "$GCC" = yes; then
-- archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-- else
-- archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-- fi
-- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
-- hardcode_libdir_separator_GCJ=:
-- hardcode_direct_GCJ=yes
--
-- # hardcode_minus_L: Not really in the search PATH,
-- # but as the default location of the library.
-- hardcode_minus_L_GCJ=yes
-- export_dynamic_flag_spec_GCJ='${wl}-E'
-- ;;
-+ irix5* | irix6* | nonstopux*)
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ else
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator=:
-+ link_all_deplibs=yes
-+ ;;
-
-- hpux10* | hpux11*)
-- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-- case $host_cpu in
-- hppa*64*|ia64*)
-- archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- ;;
-- *)
-- archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-- ;;
-- esac
-- else
-- case $host_cpu in
-- hppa*64*|ia64*)
-- archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
-- ;;
-- *)
-- archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-- ;;
-- esac
-- fi
-- if test "$with_gnu_ld" = no; then
-- case $host_cpu in
-- hppa*64*)
-- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
-- hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
-- hardcode_libdir_separator_GCJ=:
-- hardcode_direct_GCJ=no
-- hardcode_shlibpath_var_GCJ=no
-- ;;
-- ia64*)
-- hardcode_libdir_flag_spec_GCJ='-L$libdir'
-- hardcode_direct_GCJ=no
-- hardcode_shlibpath_var_GCJ=no
--
-- # hardcode_minus_L: Not really in the search PATH,
-- # but as the default location of the library.
-- hardcode_minus_L_GCJ=yes
-- ;;
-- *)
-- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
-- hardcode_libdir_separator_GCJ=:
-- hardcode_direct_GCJ=yes
-- export_dynamic_flag_spec_GCJ='${wl}-E'
--
-- # hardcode_minus_L: Not really in the search PATH,
-- # but as the default location of the library.
-- hardcode_minus_L_GCJ=yes
-- ;;
-- esac
-- fi
-- ;;
-+ netbsd* | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-+ else
-+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-+ fi
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-
-- irix5* | irix6* | nonstopux*)
-- if test "$GCC" = yes; then
-- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- else
-- archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
-- fi
-- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator_GCJ=:
-- link_all_deplibs_GCJ=yes
-- ;;
-+ newsos6)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_shlibpath_var=no
-+ ;;
-
-- netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-- else
-- archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-- fi
-- hardcode_libdir_flag_spec_GCJ='-R$libdir'
-- hardcode_direct_GCJ=yes
-- hardcode_shlibpath_var_GCJ=no
-- ;;
-+ openbsd*)
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ export_dynamic_flag_spec='${wl}-E'
-+ else
-+ case "$host_os" in
-+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ ;;
-+ *)
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ ;;
-+ esac
-+ fi
-+ ;;
-
-- newsos6)
-- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct_GCJ=yes
-- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator_GCJ=:
-- hardcode_shlibpath_var_GCJ=no
-- ;;
-+ os2*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ allow_undefined_flag=unsupported
-+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-+ ;;
-
-- openbsd*)
-- hardcode_direct_GCJ=yes
-- hardcode_shlibpath_var_GCJ=no
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-- archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
-- export_dynamic_flag_spec_GCJ='${wl}-E'
-- else
-- case $host_os in
-- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec_GCJ='-R$libdir'
-- ;;
-- *)
-- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
-- ;;
-- esac
-- fi
-- ;;
-+ osf3*)
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ allow_undefined_flag=' -expect_unresolved \*'
-+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ fi
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ ;;
-
-- os2*)
-- hardcode_libdir_flag_spec_GCJ='-L$libdir'
-- hardcode_minus_L_GCJ=yes
-- allow_undefined_flag_GCJ=unsupported
-- archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-- old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-- ;;
-+ osf4* | osf5*) # as osf3* with the addition of -msym flag
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ else
-+ allow_undefined_flag=' -expect_unresolved \*'
-+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
-
-- osf3*)
-- if test "$GCC" = yes; then
-- allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- else
-- allow_undefined_flag_GCJ=' -expect_unresolved \*'
-- archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- fi
-- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator_GCJ=:
-- ;;
-+ #Both c and cxx compiler support -rpath directly
-+ hardcode_libdir_flag_spec='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator=:
-+ ;;
-
-- osf4* | osf5*) # as osf3* with the addition of -msym flag
-- if test "$GCC" = yes; then
-- allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
-- else
-- allow_undefined_flag_GCJ=' -expect_unresolved \*'
-- archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
-+ sco3.2v5*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ export_dynamic_flag_spec='${wl}-Bexport'
-+ ;;
-
-- # Both c and cxx compiler support -rpath directly
-- hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
-- fi
-- hardcode_libdir_separator_GCJ=:
-- ;;
-+ solaris*)
-+ # gcc --version < 3.0 without binutils cannot create self contained
-+ # shared libraries reliably, requiring libgcc.a to resolve some of
-+ # the object symbols generated in some cases. Libraries that use
-+ # assert need libgcc.a to resolve __eprintf, for example. Linking
-+ # a copy of libgcc.a into every shared library to guarantee resolving
-+ # such symbols causes other problems: According to Tim Van Holder
-+ # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
-+ # (to the application) exception stack for one thing.
-+ no_undefined_flag=' -z defs'
-+ if test "$GCC" = yes; then
-+ case `$CC --version 2>/dev/null` in
-+ [12].*)
-+ cat <<EOF 1>&2
-
-- sco3.2v5*)
-- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_shlibpath_var_GCJ=no
-- export_dynamic_flag_spec_GCJ='${wl}-Bexport'
-- runpath_var=LD_RUN_PATH
-- hardcode_runpath_var=yes
-- ;;
-+*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
-+*** create self contained shared libraries on Solaris systems, without
-+*** introducing a dependency on libgcc.a. Therefore, libtool is disabling
-+*** -no-undefined support, which will at least allow you to build shared
-+*** libraries. However, you may find that when you link such libraries
-+*** into an application without using GCC, you have to manually add
-+*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to
-+*** upgrade to a newer version of GCC. Another option is to rebuild your
-+*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
-
-- solaris*)
-- no_undefined_flag_GCJ=' -z text'
-- if test "$GCC" = yes; then
-- wlarc='${wl}'
-- archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-- else
-- wlarc=''
-- archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-- fi
-- hardcode_libdir_flag_spec_GCJ='-R$libdir'
-- hardcode_shlibpath_var_GCJ=no
-- case $host_os in
-- solaris2.[0-5] | solaris2.[0-5].*) ;;
-- *)
-- # The compiler driver will combine linker options so we
-- # cannot just pass the convience library names through
-- # without $wl, iff we do not link with $LD.
-- # Luckily, gcc supports the same syntax we need for Sun Studio.
-- # Supported since Solaris 2.6 (maybe 2.5.1?)
-- case $wlarc in
-- '')
-- whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
-- *)
-- whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
-- esac ;;
-+EOF
-+ no_undefined_flag=
-+ ;;
- esac
-- link_all_deplibs_GCJ=yes
-- ;;
-+ fi
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_shlibpath_var=no
-+ case $host_os in
-+ solaris2.[0-5] | solaris2.[0-5].*) ;;
-+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
-+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
-+ esac
-+ link_all_deplibs=yes
-+ ;;
-
-- sunos4*)
-- if test "x$host_vendor" = xsequent; then
-- # Use $CC to link under sequent, because it throws in some extra .o
-- # files that make .init and .fini sections work.
-- archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-- else
-- archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-- fi
-- hardcode_libdir_flag_spec_GCJ='-L$libdir'
-- hardcode_direct_GCJ=yes
-- hardcode_minus_L_GCJ=yes
-- hardcode_shlibpath_var_GCJ=no
-- ;;
-+ sunos4*)
-+ if test "x$host_vendor" = xsequent; then
-+ # Use $CC to link under sequent, because it throws in some extra .o
-+ # files that make .init and .fini sections work.
-+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-+ fi
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-
-- sysv4)
-- case $host_vendor in
-- sni)
-- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct_GCJ=yes # is this really true???
-- ;;
-- siemens)
-- ## LD is ld it makes a PLAMLIB
-- ## CC just makes a GrossModule.
-- archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-- reload_cmds_GCJ='$CC -r -o $output$reload_objs'
-- hardcode_direct_GCJ=no
-+ sysv4)
-+ case $host_vendor in
-+ sni)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes # is this really true???
- ;;
-- motorola)
-- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
-- ;;
-- esac
-- runpath_var='LD_RUN_PATH'
-- hardcode_shlibpath_var_GCJ=no
-- ;;
-+ siemens)
-+ ## LD is ld it makes a PLAMLIB
-+ ## CC just makes a GrossModule.
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ reload_cmds='$CC -r -o $output$reload_objs'
-+ hardcode_direct=no
-+ ;;
-+ motorola)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-+ ;;
-+ esac
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var=no
-+ ;;
-
-- sysv4.3*)
-- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_shlibpath_var_GCJ=no
-- export_dynamic_flag_spec_GCJ='-Bexport'
-- ;;
-+ sysv4.3*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ export_dynamic_flag_spec='-Bexport'
-+ ;;
-+
-+ sysv5*)
-+ no_undefined_flag=' -z text'
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec=
-+ hardcode_shlibpath_var=no
-+ runpath_var='LD_RUN_PATH'
-+ ;;
-+
-+ uts4*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_shlibpath_var=no
-+ ;;
-
-- sysv4*MP*)
-- if test -d /usr/nec; then
-- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_shlibpath_var_GCJ=no
-- runpath_var=LD_RUN_PATH
-- hardcode_runpath_var=yes
-- ld_shlibs_GCJ=yes
-- fi
-- ;;
-+ dgux*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_shlibpath_var=no
-+ ;;
-
-- sysv4.2uw2*)
-- archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct_GCJ=yes
-- hardcode_minus_L_GCJ=no
-- hardcode_shlibpath_var_GCJ=no
-- hardcode_runpath_var=yes
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
-- ;;
--
-- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
-- no_undefined_flag_GCJ='${wl}-z ${wl}text'
-- if test "$GCC" = yes; then
-- archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- else
-- archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- fi
-- runpath_var='LD_RUN_PATH'
-- hardcode_shlibpath_var_GCJ=no
-- ;;
-+ hardcode_runpath_var=yes
-+ ld_shlibs=yes
-+ fi
-+ ;;
-
-- sysv5*)
-- no_undefined_flag_GCJ=' -z text'
-- # $CC -shared without GNU ld will not create a library from C++
-- # object files and a static libstdc++, better avoid it by now
-- archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-- hardcode_libdir_flag_spec_GCJ=
-- hardcode_shlibpath_var_GCJ=no
-- runpath_var='LD_RUN_PATH'
-- ;;
-+ sysv4.2uw2*)
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_minus_L=no
-+ hardcode_shlibpath_var=no
-+ hardcode_runpath_var=yes
-+ runpath_var=LD_RUN_PATH
-+ ;;
-
-- uts4*)
-- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec_GCJ='-L$libdir'
-- hardcode_shlibpath_var_GCJ=no
-- ;;
-+ sysv5uw7* | unixware7*)
-+ no_undefined_flag='${wl}-z ${wl}text'
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ fi
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var=no
-+ ;;
-
-- *)
-- ld_shlibs_GCJ=no
-- ;;
-- esac
-- fi
-+ *)
-+ ld_shlibs=no
-+ ;;
-+ esac
-+fi
-+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
-+echo "${ECHO_T}$ld_shlibs" >&6
-+test "$ld_shlibs" = no && can_build_shared=no
-
--echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
--echo "${ECHO_T}$ld_shlibs_GCJ" >&6
--test "$ld_shlibs_GCJ" = no && can_build_shared=no
-+# Check hardcoding attributes.
-+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
-+hardcode_action=
-+if test -n "$hardcode_libdir_flag_spec" || \
-+ test -n "$runpath_var"; then
-
--variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
--if test "$GCC" = yes; then
-- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-+ # We can hardcode non-existant directories.
-+ if test "$hardcode_direct" != no &&
-+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
-+ # have to relink, otherwise we might link with an installed library
-+ # when we should be linking with a yet-to-be-installed one
-+ ## test "$hardcode_shlibpath_var" != no &&
-+ test "$hardcode_minus_L" != no; then
-+ # Linking always hardcodes the temporary library directory.
-+ hardcode_action=relink
-+ else
-+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
-+ hardcode_action=immediate
-+ fi
-+else
-+ # We cannot hardcode anything, or else we can only hardcode existing
-+ # directories.
-+ hardcode_action=unsupported
- fi
-+echo "$as_me:$LINENO: result: $hardcode_action" >&5
-+echo "${ECHO_T}$hardcode_action" >&6
-
--#
--# Do we need to explicitly link libc?
--#
--case "x$archive_cmds_need_lc_GCJ" in
--x|xyes)
-- # Assume -lc should be added
-- archive_cmds_need_lc_GCJ=yes
--
-- if test "$enable_shared" = yes && test "$GCC" = yes; then
-- case $archive_cmds_GCJ in
-- *'~'*)
-- # FIXME: we may have to deal with multi-command sequences.
-- ;;
-- '$CC '*)
-- # Test whether the compiler implicitly links with -lc since on some
-- # systems, -lgcc has to come before -lc. If gcc already passes -lc
-- # to ld, don't add -lc before -lgcc.
-- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
--echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-- $rm conftest*
-- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+striplib=
-+old_striplib=
-+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-
-- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } 2>conftest.err; then
-- soname=conftest
-- lib=conftest
-- libobjs=conftest.$ac_objext
-- deplibs=
-- wl=$lt_prog_compiler_wl_GCJ
-- compiler_flags=-v
-- linker_flags=-v
-- verstring=
-- output_objdir=.
-- libname=conftest
-- lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
-- allow_undefined_flag_GCJ=
-- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-- (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }
-- then
-- archive_cmds_need_lc_GCJ=no
-- else
-- archive_cmds_need_lc_GCJ=yes
-- fi
-- allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
-- else
-- cat conftest.err 1>&5
-- fi
-- $rm conftest*
-- echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
--echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
-- ;;
-- esac
-- fi
-- ;;
--esac
-+reload_cmds='$LD$reload_flag -o $output$reload_objs'
-+test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-+# PORTME Fill in your ld.so characteristics
- echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
- echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
- library_names_spec=
- libname_spec='lib$name'
- soname_spec=
--shrext_cmds=".so"
- postinstall_cmds=
- postuninstall_cmds=
- finish_cmds=
-@@ -17175,35 +6214,16 @@
- version_type=none
- dynamic_linker="$host_os ld.so"
- sys_lib_dlsearch_path_spec="/lib /usr/lib"
--if test "$GCC" = yes; then
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-- # if the path contains ";" then we assume it to be the separator
-- # otherwise default to the standard path separator (i.e. ":") - it is
-- # assumed that no part of a normal pathname contains ";" but that should
-- # okay in the real world where ";" in dirpaths is itself problematic.
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-- else
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-- fi
--else
-- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
--fi
--need_lib_prefix=unknown
--hardcode_into_libs=no
--
--# when you set need_version to no, make sure it does not cause -set_version
--# flags to be left without arguments
--need_version=unknown
-+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-
- case $host_os in
- aix3*)
- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-+ library_names_spec='${libname}${release}.so$versuffix $libname.a'
- shlibpath_var=LIBPATH
-
-- # AIX 3 has no versioning support, so we append a major version to the name.
-- soname_spec='${libname}${release}${shared_ext}$major'
-+ # AIX has no versioning support, so we append a major version to the name.
-+ soname_spec='${libname}${release}.so$major'
- ;;
-
- aix4* | aix5*)
-@@ -17213,7 +6233,7 @@
- hardcode_into_libs=yes
- if test "$host_cpu" = ia64; then
- # AIX 5 supports IA64
-- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-+ library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- else
- # With GCC up to 2.95.x, collect2 would create an import file
-@@ -17223,54 +6243,57 @@
- # development snapshots of GCC prior to 3.0.
- case $host_os in
- aix4 | aix4.[01] | aix4.[01].*)
-- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-- echo ' yes '
-- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-- :
-- else
-- can_build_shared=no
-- fi
-- ;;
-+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-+ echo ' yes '
-+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-+ :
-+ else
-+ can_build_shared=no
-+ fi
-+ ;;
- esac
-- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-- # soname into executable. Probably we can add versioning support to
-- # collect2, so additional links can be useful in future.
-+ # AIX (on Power*) has no versioning support, so currently we can
-+ # not hardcode correct soname into executable. Probably we can
-+ # add versioning support to collect2, so additional links can
-+ # be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
- # instead of lib<name>.a to let people know that these are not
- # typical AIX shared libraries.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- else
- # We preserve .a as extension for shared libraries through AIX4.2
- # and later when we are not doing run time linking.
- library_names_spec='${libname}${release}.a $libname.a'
-- soname_spec='${libname}${release}${shared_ext}$major'
-+ soname_spec='${libname}${release}.so$major'
- fi
- shlibpath_var=LIBPATH
- fi
-+ hardcode_into_libs=yes
- ;;
-
- amigaos*)
- library_names_spec='$libname.ixlibrary $libname.a'
- # Create ${libname}_ixlibrary.a entries in /sys/libs.
-- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
- ;;
-
- beos*)
-- library_names_spec='${libname}${shared_ext}'
-+ library_names_spec='${libname}.so'
- dynamic_linker="$host_os ld.so"
- shlibpath_var=LIBRARY_PATH
- ;;
-
--bsdi[45]*)
-+bsdi4*)
- version_type=linux
- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-+ export_dynamic_flag_spec=-rdynamic
- # the default ld.so.conf also contains /usr/contrib/lib and
- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
- # libtool to hard-code these into programs
-@@ -17278,56 +6301,29 @@
-
- cygwin* | mingw* | pw32*)
- version_type=windows
-- shrext_cmds=".dll"
- need_version=no
- need_lib_prefix=no
--
- case $GCC,$host_os in
-- yes,cygwin* | yes,mingw* | yes,pw32*)
-+ yes,cygwin*)
- library_names_spec='$libname.dll.a'
-- # DLL is installed to $(libdir)/../bin by postinstall_cmds
-- postinstall_cmds='base_file=`basename \${file}`~
-- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
-+ postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
- dldir=$destdir/`dirname \$dlpath`~
- test -d \$dldir || mkdir -p \$dldir~
-- $install_prog $dir/$dlname \$dldir/$dlname~
-- chmod a+x \$dldir/$dlname'
-- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ $install_prog .libs/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
- dlpath=$dir/\$dldll~
- $rm \$dlpath'
-- shlibpath_overrides_runpath=yes
--
-- case $host_os in
-- cygwin*)
-- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-- ;;
-- mingw*)
-- # MinGW DLLs use traditional 'lib' prefix
-- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-- # It is most probably a Windows format PATH printed by
-- # mingw gcc, but we are running on Cygwin. Gcc prints its search
-- # path with ; separators, and with drive letters. We can handle the
-- # drive letters (cygwin fileutils understands them), so leave them,
-- # especially as we might pass files found there to a mingw objdump,
-- # which wouldn't understand a cygwinified path. Ahh.
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-- else
-- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-- fi
-- ;;
-- pw32*)
-- # pw32 DLLs use 'pw' prefix rather than 'lib'
-- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-- ;;
-- esac
- ;;
--
-+ yes,mingw*)
-+ library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"`
-+ ;;
-+ yes,pw32*)
-+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll'
-+ ;;
- *)
-- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
- ;;
- esac
- dynamic_linker='Win32 ld.exe'
-@@ -17340,65 +6336,42 @@
- version_type=darwin
- need_lib_prefix=no
- need_version=no
-- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-- soname_spec='${libname}${release}${major}$shared_ext'
-+ # FIXME: Relying on posixy $() will cause problems for
-+ # cross-compilation, but unfortunately the echo tests do not
-+ # yet detect zsh echo's removal of \ escapes.
-+ library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
-+ soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
- shlibpath_overrides_runpath=yes
- shlibpath_var=DYLD_LIBRARY_PATH
-- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-- if test "$GCC" = yes; then
-- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-- else
-- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-- fi
-- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-- ;;
--
--dgux*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
- freebsd1*)
- dynamic_linker=no
- ;;
-
--kfreebsd*-gnu)
-+kfreebsd*-gnu*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
-- dynamic_linker='GNU ld.so'
-+ dynamic_linker='GNU/FreeBSD ld.so'
- ;;
-
--freebsd* | dragonfly*)
-- # DragonFly does not have aout. When/if they implement a new
-- # versioning mechanism, adjust this.
-- if test -x /usr/bin/objformat; then
-- objformat=`/usr/bin/objformat`
-- else
-- case $host_os in
-- freebsd[123]*) objformat=aout ;;
-- *) objformat=elf ;;
-- esac
-- fi
-+freebsd*)
-+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
- version_type=freebsd-$objformat
- case $version_type in
- freebsd-elf*)
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
- need_version=no
- need_lib_prefix=no
- ;;
- freebsd-*)
-- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-+ library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
- need_version=yes
- ;;
- esac
-@@ -17407,11 +6380,7 @@
- freebsd2*)
- shlibpath_overrides_runpath=yes
- ;;
-- freebsd3.[01]* | freebsdelf3.[01]*)
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- ;;
-- *) # from 3.2 on
-+ *)
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
-@@ -17422,8 +6391,8 @@
- version_type=linux
- need_lib_prefix=no
- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
-+ soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- hardcode_into_libs=yes
- ;;
-@@ -17431,45 +6400,14 @@
- hpux9* | hpux10* | hpux11*)
- # Give a soname corresponding to the major version so that dld.sl refuses to
- # link against other versions.
-+ dynamic_linker="$host_os dld.sl"
- version_type=sunos
- need_lib_prefix=no
- need_version=no
-- case $host_cpu in
-- ia64*)
-- shrext_cmds='.so'
-- hardcode_into_libs=yes
-- dynamic_linker="$host_os dld.so"
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- if test "X$HPUX_IA64_MODE" = X32; then
-- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-- else
-- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-- fi
-- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-- ;;
-- hppa*64*)
-- shrext_cmds='.sl'
-- hardcode_into_libs=yes
-- dynamic_linker="$host_os dld.sl"
-- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-- ;;
-- *)
-- shrext_cmds='.sl'
-- dynamic_linker="$host_os dld.sl"
-- shlibpath_var=SHLIB_PATH
-- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- ;;
-- esac
-+ shlibpath_var=SHLIB_PATH
-+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-+ library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
-+ soname_spec='${libname}${release}.sl$major'
- # HP-UX runs *really* slowly unless shared libraries are mode 555.
- postinstall_cmds='chmod 555 $lib'
- ;;
-@@ -17477,29 +6415,21 @@
- irix5* | irix6* | nonstopux*)
- case $host_os in
- nonstopux*) version_type=nonstopux ;;
-- *)
-- if test "$lt_cv_prog_gnu_ld" = yes; then
-- version_type=linux
-- else
-- version_type=irix
-- fi ;;
-+ *) version_type=irix ;;
- esac
- need_lib_prefix=no
- need_version=no
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
- case $host_os in
- irix5* | nonstopux*)
- libsuff= shlibsuff=
- ;;
- *)
- case $LD in # libtool.m4 will add one of these switches to LD
-- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-- libsuff= shlibsuff= libmagic=32-bit;;
-- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-- libsuff=32 shlibsuff=N32 libmagic=N32;;
-- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-- libsuff=64 shlibsuff=64 libmagic=64-bit;;
-+ *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
-+ *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
-+ *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
- *) libsuff= shlibsuff= libmagic=never-match;;
- esac
- ;;
-@@ -17508,21 +6438,20 @@
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-- hardcode_into_libs=yes
- ;;
-
- # No shared lib support for Linux oldld, aout, or coff.
--linux*oldld* | linux*aout* | linux*coff*)
-+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
- dynamic_linker=no
- ;;
-
- # This must be Linux ELF.
--linux*)
-+linux-gnu*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
-@@ -17531,12 +6460,6 @@
- # before this can be enabled.
- hardcode_into_libs=yes
-
-- # Append ld.so.conf contents to the search path
-- if test -f /etc/ld.so.conf; then
-- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-- fi
--
- # We used to test for /lib/ld.so.1 and disable shared libraries on
- # powerpc, because MkLinux only supported shared libraries with the
- # GNU dynamic linker. Since this was broken with cross compilers,
-@@ -17550,8 +6473,8 @@
- version_type=linux
- need_lib_prefix=no
- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
-@@ -17563,12 +6486,12 @@
- need_lib_prefix=no
- need_version=no
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- dynamic_linker='NetBSD (a.out) ld.so'
- else
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
-+ soname_spec='${libname}${release}.so$major'
- dynamic_linker='NetBSD ld.elf_so'
- fi
- shlibpath_var=LD_LIBRARY_PATH
-@@ -17578,17 +6501,7 @@
-
- newsos6)
- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- ;;
--
--nto-qnx*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- ;;
-@@ -17596,52 +6509,48 @@
- openbsd*)
- version_type=sunos
- need_lib_prefix=no
-- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-- case $host_os in
-- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-- *) need_version=no ;;
-- esac
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-+ need_version=no
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- case $host_os in
-- openbsd2.[89] | openbsd2.[89].*)
-- shlibpath_overrides_runpath=no
-- ;;
-- *)
-- shlibpath_overrides_runpath=yes
-- ;;
-- esac
-+ case "$host_os" in
-+ openbsd2.[89] | openbsd2.[89].*)
-+ shlibpath_overrides_runpath=no
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ esac
- else
- shlibpath_overrides_runpath=yes
- fi
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
- ;;
-
- os2*)
- libname_spec='$name'
-- shrext_cmds=".dll"
- need_lib_prefix=no
-- library_names_spec='$libname${shared_ext} $libname.a'
-+ library_names_spec='$libname.dll $libname.a'
- dynamic_linker='OS/2 ld.exe'
- shlibpath_var=LIBPATH
- ;;
-
- osf3* | osf4* | osf5*)
- version_type=osf
-- need_lib_prefix=no
- need_version=no
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ need_lib_prefix=no
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-+ hardcode_into_libs=yes
- ;;
-
- sco3.2v5*)
- version_type=osf
-- soname_spec='${libname}${release}${shared_ext}$major'
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-@@ -17649,8 +6558,8 @@
- version_type=linux
- need_lib_prefix=no
- need_version=no
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
-@@ -17660,7 +6569,7 @@
-
- sunos4*)
- version_type=sunos
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
-@@ -17672,8 +6581,8 @@
-
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- case $host_vendor in
- sni)
-@@ -17694,22 +6603,31 @@
- esac
- ;;
-
-+uts4*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+dgux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
- sysv4*MP*)
- if test -d /usr/nec ;then
- version_type=linux
-- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-- soname_spec='$libname${shared_ext}.$major'
-+ library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
-+ soname_spec='$libname.so.$major'
- shlibpath_var=LD_LIBRARY_PATH
- fi
- ;;
-
--uts4*)
-- version_type=linux
-- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-- soname_spec='${libname}${release}${shared_ext}$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
- *)
- dynamic_linker=no
- ;;
-@@ -17718,35 +6636,44 @@
- echo "${ECHO_T}$dynamic_linker" >&6
- test "$dynamic_linker" = no && can_build_shared=no
-
--echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
--echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
--hardcode_action_GCJ=
--if test -n "$hardcode_libdir_flag_spec_GCJ" || \
-- test -n "$runpath_var_GCJ" || \
-- test "X$hardcode_automatic_GCJ" = "Xyes" ; then
-+# Report the final consequences.
-+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
-+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
-+echo "$as_me:$LINENO: result: $can_build_shared" >&5
-+echo "${ECHO_T}$can_build_shared" >&6
-
-- # We can hardcode non-existant directories.
-- if test "$hardcode_direct_GCJ" != no &&
-- # If the only mechanism to avoid hardcoding is shlibpath_var, we
-- # have to relink, otherwise we might link with an installed library
-- # when we should be linking with a yet-to-be-installed one
-- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
-- test "$hardcode_minus_L_GCJ" != no; then
-- # Linking always hardcodes the temporary library directory.
-- hardcode_action_GCJ=relink
-- else
-- # We can link without hardcoding, and we can hardcode nonexisting dirs.
-- hardcode_action_GCJ=immediate
-+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
-+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
-+test "$can_build_shared" = "no" && enable_shared=no
-+
-+# On AIX, shared libraries and static libraries use the same namespace, and
-+# are all built from PIC.
-+case "$host_os" in
-+aix3*)
-+ test "$enable_shared" = yes && enable_static=no
-+ if test -n "$RANLIB"; then
-+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
-+ postinstall_cmds='$RANLIB $lib'
- fi
--else
-- # We cannot hardcode anything, or else we can only hardcode existing
-- # directories.
-- hardcode_action_GCJ=unsupported
--fi
--echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
--echo "${ECHO_T}$hardcode_action_GCJ" >&6
-+ ;;
-+
-+aix4*)
-+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-+ test "$enable_shared" = yes && enable_static=no
-+ fi
-+ ;;
-+esac
-+echo "$as_me:$LINENO: result: $enable_shared" >&5
-+echo "${ECHO_T}$enable_shared" >&6
-+
-+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
-+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
-+# Make sure either enable_shared or enable_static is yes.
-+test "$enable_shared" = yes || enable_static=yes
-+echo "$as_me:$LINENO: result: $enable_static" >&5
-+echo "${ECHO_T}$enable_static" >&6
-
--if test "$hardcode_action_GCJ" = relink; then
-+if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- enable_fast_install=no
- elif test "$shlibpath_overrides_runpath" = yes ||
-@@ -17755,33 +6682,9 @@
- enable_fast_install=needless
- fi
-
--striplib=
--old_striplib=
--echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
--echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
--if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
--else
--# FIXME - insert some real tests, host_os isn't really good enough
-- case $host_os in
-- darwin*)
-- if test -n "$STRIP" ; then
-- striplib="$STRIP -x"
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
-- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
-- ;;
-- *)
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-- ;;
-- esac
-+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-+if test "$GCC" = yes; then
-+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
- fi
-
- if test "x$enable_dlopen" != xyes; then
-@@ -17792,99 +6695,16 @@
- lt_cv_dlopen=no
- lt_cv_dlopen_libs=
-
-- case $host_os in
-- beos*)
-- lt_cv_dlopen="load_add_on"
-- lt_cv_dlopen_libs=
-- lt_cv_dlopen_self=yes
-- ;;
--
-- mingw* | pw32*)
-- lt_cv_dlopen="LoadLibrary"
-- lt_cv_dlopen_libs=
-- ;;
--
-- cygwin*)
-- lt_cv_dlopen="dlopen"
-- lt_cv_dlopen_libs=
-- ;;
--
-- darwin*)
-- # if libdl is installed we need to link against it
-- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
--echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
--if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-ldl $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 dlopen ();
--int
--main ()
--{
--dlopen ();
-- ;
-- 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_lib_dl_dlopen=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_dl_dlopen=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_dl_dlopen" >&5
--echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
--if test $ac_cv_lib_dl_dlopen = yes; then
-- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
--else
--
-- lt_cv_dlopen="dyld"
-+ case $host_os in
-+ beos*)
-+ lt_cv_dlopen="load_add_on"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
-+ ;;
-
--fi
--
-+ cygwin* | mingw* | pw32*)
-+ lt_cv_dlopen="LoadLibrary"
-+ lt_cv_dlopen_libs=
- ;;
-
- *)
-@@ -17953,8 +6773,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -18019,8 +6838,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -18113,8 +6931,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -18179,8 +6996,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -18246,8 +7062,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -18313,8 +7128,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -18370,7 +7184,7 @@
- case $lt_cv_dlopen in
- dlopen)
- save_CPPFLAGS="$CPPFLAGS"
-- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
- save_LDFLAGS="$LDFLAGS"
- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-@@ -18386,10 +7200,10 @@
- if test "$cross_compiling" = yes; then :
- lt_cv_dlopen_self=cross
- else
-- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 18392 "configure"
-+#line 7206 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -18455,7 +7269,7 @@
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-- (./conftest; exit; ) >&5 2>/dev/null
-+ (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-@@ -18484,10 +7298,10 @@
- if test "$cross_compiling" = yes; then :
- lt_cv_dlopen_self_static=cross
- else
-- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 18490 "configure"
-+#line 7304 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -18553,7 +7367,7 @@
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-- (./conftest; exit; ) >&5 2>/dev/null
-+ (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-@@ -18584,407 +7398,76 @@
- *) enable_dlopen_self=unknown ;;
- esac
-
-- case $lt_cv_dlopen_self_static in
-- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-- *) enable_dlopen_self_static=unknown ;;
-- esac
--fi
--
--
--# The else clause should only fire when bootstrapping the
--# libtool distribution, otherwise you forgot to ship ltmain.sh
--# with your package, and you will get complaints that there are
--# no rules to generate ltmain.sh.
--if test -f "$ltmain"; then
-- # See if we are running on zsh, and set the options which allow our commands through
-- # without removal of \ escapes.
-- if test -n "${ZSH_VERSION+set}" ; then
-- setopt NO_GLOB_SUBST
-- fi
-- # Now quote all the things that may contain metacharacters while being
-- # careful not to overquote the AC_SUBSTed values. We take copies of the
-- # variables and quote the copies for generation of the libtool script.
-- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-- SED SHELL STRIP \
-- libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-- old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-- deplibs_check_method reload_flag reload_cmds need_locks \
-- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-- lt_cv_sys_global_symbol_to_c_name_address \
-- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-- old_postinstall_cmds old_postuninstall_cmds \
-- compiler_GCJ \
-- CC_GCJ \
-- LD_GCJ \
-- lt_prog_compiler_wl_GCJ \
-- lt_prog_compiler_pic_GCJ \
-- lt_prog_compiler_static_GCJ \
-- lt_prog_compiler_no_builtin_flag_GCJ \
-- export_dynamic_flag_spec_GCJ \
-- thread_safe_flag_spec_GCJ \
-- whole_archive_flag_spec_GCJ \
-- enable_shared_with_static_runtimes_GCJ \
-- old_archive_cmds_GCJ \
-- old_archive_from_new_cmds_GCJ \
-- predep_objects_GCJ \
-- postdep_objects_GCJ \
-- predeps_GCJ \
-- postdeps_GCJ \
-- compiler_lib_search_path_GCJ \
-- archive_cmds_GCJ \
-- archive_expsym_cmds_GCJ \
-- postinstall_cmds_GCJ \
-- postuninstall_cmds_GCJ \
-- old_archive_from_expsyms_cmds_GCJ \
-- allow_undefined_flag_GCJ \
-- no_undefined_flag_GCJ \
-- export_symbols_cmds_GCJ \
-- hardcode_libdir_flag_spec_GCJ \
-- hardcode_libdir_flag_spec_ld_GCJ \
-- hardcode_libdir_separator_GCJ \
-- hardcode_automatic_GCJ \
-- module_cmds_GCJ \
-- module_expsym_cmds_GCJ \
-- lt_cv_prog_compiler_c_o_GCJ \
-- exclude_expsyms_GCJ \
-- include_expsyms_GCJ; do
--
-- case $var in
-- old_archive_cmds_GCJ | \
-- old_archive_from_new_cmds_GCJ | \
-- archive_cmds_GCJ | \
-- archive_expsym_cmds_GCJ | \
-- module_cmds_GCJ | \
-- module_expsym_cmds_GCJ | \
-- old_archive_from_expsyms_cmds_GCJ | \
-- export_symbols_cmds_GCJ | \
-- extract_expsyms_cmds | reload_cmds | finish_cmds | \
-- postinstall_cmds | postuninstall_cmds | \
-- old_postinstall_cmds | old_postuninstall_cmds | \
-- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-- # Double-quote double-evaled strings.
-- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-- ;;
-- *)
-- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-- ;;
-- esac
-- done
--
-- case $lt_echo in
-- *'\$0 --fallback-echo"')
-- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-- ;;
-- esac
--
--cfgfile="$ofile"
--
-- cat <<__EOF__ >> "$cfgfile"
--# ### BEGIN LIBTOOL TAG CONFIG: $tagname
--
--# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
--
--# Shell to use when invoking shell scripts.
--SHELL=$lt_SHELL
--
--# Whether or not to build shared libraries.
--build_libtool_libs=$enable_shared
--
--# Whether or not to build static libraries.
--build_old_libs=$enable_static
--
--# Whether or not to add -lc for building shared libraries.
--build_libtool_need_lc=$archive_cmds_need_lc_GCJ
--
--# Whether or not to disallow shared libs when runtime libs are static
--allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
--
--# Whether or not to optimize for fast installation.
--fast_install=$enable_fast_install
--
--# The host system.
--host_alias=$host_alias
--host=$host
--host_os=$host_os
--
--# The build system.
--build_alias=$build_alias
--build=$build
--build_os=$build_os
--
--# An echo program that does not interpret backslashes.
--echo=$lt_echo
--
--# The archiver.
--AR=$lt_AR
--AR_FLAGS=$lt_AR_FLAGS
--
--# A C compiler.
--LTCC=$lt_LTCC
--
--# A language-specific compiler.
--CC=$lt_compiler_GCJ
--
--# Is the compiler the GNU C compiler?
--with_gcc=$GCC_GCJ
--
--# An ERE matcher.
--EGREP=$lt_EGREP
--
--# The linker used to build libraries.
--LD=$lt_LD_GCJ
--
--# Whether we need hard or soft links.
--LN_S=$lt_LN_S
--
--# A BSD-compatible nm program.
--NM=$lt_NM
--
--# A symbol stripping program
--STRIP=$lt_STRIP
--
--# Used to examine libraries when file_magic_cmd begins "file"
--MAGIC_CMD=$MAGIC_CMD
--
--# Used on cygwin: DLL creation program.
--DLLTOOL="$DLLTOOL"
--
--# Used on cygwin: object dumper.
--OBJDUMP="$OBJDUMP"
--
--# Used on cygwin: assembler.
--AS="$AS"
--
--# The name of the directory that contains temporary libtool files.
--objdir=$objdir
--
--# How to create reloadable object files.
--reload_flag=$lt_reload_flag
--reload_cmds=$lt_reload_cmds
--
--# How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl_GCJ
--
--# Object file suffix (normally "o").
--objext="$ac_objext"
--
--# Old archive suffix (normally "a").
--libext="$libext"
--
--# Shared library suffix (normally ".so").
--shrext_cmds='$shrext_cmds'
--
--# Executable file suffix (normally "").
--exeext="$exeext"
--
--# Additional compiler flags for building library objects.
--pic_flag=$lt_lt_prog_compiler_pic_GCJ
--pic_mode=$pic_mode
--
--# What is the maximum length of a command?
--max_cmd_len=$lt_cv_sys_max_cmd_len
--
--# Does compiler simultaneously support -c and -o options?
--compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
--
--# Must we lock files when doing compilation?
--need_locks=$lt_need_locks
--
--# Do we need the lib prefix for modules?
--need_lib_prefix=$need_lib_prefix
--
--# Do we need a version for libraries?
--need_version=$need_version
--
--# Whether dlopen is supported.
--dlopen_support=$enable_dlopen
--
--# Whether dlopen of programs is supported.
--dlopen_self=$enable_dlopen_self
--
--# Whether dlopen of statically linked programs is supported.
--dlopen_self_static=$enable_dlopen_self_static
--
--# Compiler flag to prevent dynamic linking.
--link_static_flag=$lt_lt_prog_compiler_static_GCJ
--
--# Compiler flag to turn off builtin functions.
--no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
--
--# Compiler flag to allow reflexive dlopens.
--export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
--
--# Compiler flag to generate shared objects directly from archives.
--whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
--
--# Compiler flag to generate thread-safe objects.
--thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
--
--# Library versioning type.
--version_type=$version_type
--
--# Format of library name prefix.
--libname_spec=$lt_libname_spec
--
--# List of archive names. First name is the real one, the rest are links.
--# The last name is the one that the linker finds with -lNAME.
--library_names_spec=$lt_library_names_spec
--
--# The coded name of the library, if different from the real name.
--soname_spec=$lt_soname_spec
--
--# Commands used to build and install an old-style archive.
--RANLIB=$lt_RANLIB
--old_archive_cmds=$lt_old_archive_cmds_GCJ
--old_postinstall_cmds=$lt_old_postinstall_cmds
--old_postuninstall_cmds=$lt_old_postuninstall_cmds
--
--# Create an old-style archive from a shared archive.
--old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
--
--# Create a temporary old-style archive to link instead of a shared archive.
--old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
--
--# Commands used to build and install a shared archive.
--archive_cmds=$lt_archive_cmds_GCJ
--archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
--postinstall_cmds=$lt_postinstall_cmds
--postuninstall_cmds=$lt_postuninstall_cmds
--
--# Commands used to build a loadable module (assumed same as above if empty)
--module_cmds=$lt_module_cmds_GCJ
--module_expsym_cmds=$lt_module_expsym_cmds_GCJ
--
--# Commands to strip libraries.
--old_striplib=$lt_old_striplib
--striplib=$lt_striplib
--
--# Dependencies to place before the objects being linked to create a
--# shared library.
--predep_objects=$lt_predep_objects_GCJ
--
--# Dependencies to place after the objects being linked to create a
--# shared library.
--postdep_objects=$lt_postdep_objects_GCJ
--
--# Dependencies to place before the objects being linked to create a
--# shared library.
--predeps=$lt_predeps_GCJ
--
--# Dependencies to place after the objects being linked to create a
--# shared library.
--postdeps=$lt_postdeps_GCJ
--
--# The library search path used internally by the compiler when linking
--# a shared library.
--compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
--
--# Method to check whether dependent libraries are shared objects.
--deplibs_check_method=$lt_deplibs_check_method
--
--# Command to use when deplibs_check_method == file_magic.
--file_magic_cmd=$lt_file_magic_cmd
--
--# Flag that allows shared libraries with undefined symbols to be built.
--allow_undefined_flag=$lt_allow_undefined_flag_GCJ
--
--# Flag that forces no undefined symbols.
--no_undefined_flag=$lt_no_undefined_flag_GCJ
--
--# Commands used to finish a libtool library installation in a directory.
--finish_cmds=$lt_finish_cmds
--
--# Same as above, but a single script fragment to be evaled but not shown.
--finish_eval=$lt_finish_eval
--
--# Take the output of nm and produce a listing of raw symbols and C names.
--global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
--
--# Transform the output of nm in a proper C declaration
--global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
--
--# Transform the output of nm in a C name address pair
--global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
--
--# This is the shared library runtime path variable.
--runpath_var=$runpath_var
--
--# This is the shared library path variable.
--shlibpath_var=$shlibpath_var
--
--# Is shlibpath searched before the hard-coded library search path?
--shlibpath_overrides_runpath=$shlibpath_overrides_runpath
--
--# How to hardcode a shared library path into an executable.
--hardcode_action=$hardcode_action_GCJ
--
--# Whether we should hardcode library paths into libraries.
--hardcode_into_libs=$hardcode_into_libs
--
--# Flag to hardcode \$libdir into a binary during linking.
--# This must work even if \$libdir does not exist.
--hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
--
--# If ld is used when linking, flag to hardcode \$libdir into
--# a binary during linking. This must work even if \$libdir does
--# not exist.
--hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
--
--# Whether we need a single -rpath flag with a separated argument.
--hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
--
--# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
--# resulting binary.
--hardcode_direct=$hardcode_direct_GCJ
--
--# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
--# resulting binary.
--hardcode_minus_L=$hardcode_minus_L_GCJ
--
--# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
--# the resulting binary.
--hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
--
--# Set to yes if building a shared library automatically hardcodes DIR into the library
--# and all subsequent libraries and executables linked against it.
--hardcode_automatic=$hardcode_automatic_GCJ
--
--# Variables whose values should be saved in libtool wrapper scripts and
--# restored at relink time.
--variables_saved_for_relink="$variables_saved_for_relink"
--
--# Whether libtool must link a program against all its dependency libraries.
--link_all_deplibs=$link_all_deplibs_GCJ
--
--# Compile-time system search path for libraries
--sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
--
--# Run-time system search path for libraries
--sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
--
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path="$fix_srcfile_path_GCJ"
--
--# Set to yes if exported symbols are required.
--always_export_symbols=$always_export_symbols_GCJ
--
--# The commands to list exported symbols.
--export_symbols_cmds=$lt_export_symbols_cmds_GCJ
--
--# The commands to extract the exported symbol list from a shared archive.
--extract_expsyms_cmds=$lt_extract_expsyms_cmds
--
--# Symbols that should not be listed in the preloaded symbols.
--exclude_expsyms=$lt_exclude_expsyms_GCJ
-+ case $lt_cv_dlopen_self_static in
-+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-+ *) enable_dlopen_self_static=unknown ;;
-+ esac
-+fi
-
--# Symbols that must always be exported.
--include_expsyms=$lt_include_expsyms_GCJ
-
--# ### END LIBTOOL TAG CONFIG: $tagname
-+if test "$enable_shared" = yes && test "$GCC" = yes; then
-+ case $archive_cmds in
-+ *'~'*)
-+ # FIXME: we may have to deal with multi-command sequences.
-+ ;;
-+ '$CC '*)
-+ # Test whether the compiler implicitly links with -lc since on some
-+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
-+ # to ld, don't add -lc before -lgcc.
-+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-+ if test "${lt_cv_archive_cmds_need_lc+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ $rm conftest*
-+ echo 'static int dummy;' > conftest.$ac_ext
-
--__EOF__
-+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
-+ soname=conftest
-+ lib=conftest
-+ libobjs=conftest.$ac_objext
-+ deplibs=
-+ wl=$lt_cv_prog_cc_wl
-+ compiler_flags=-v
-+ linker_flags=-v
-+ verstring=
-+ output_objdir=.
-+ libname=conftest
-+ save_allow_undefined_flag=$allow_undefined_flag
-+ allow_undefined_flag=
-+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-+ (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+ then
-+ lt_cv_archive_cmds_need_lc=no
-+ else
-+ lt_cv_archive_cmds_need_lc=yes
-+ fi
-+ allow_undefined_flag=$save_allow_undefined_flag
-+ else
-+ cat conftest.err 1>&5
-+ fi
-+fi
-
-+ echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5
-+echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6
-+ ;;
-+ esac
-+fi
-+need_lc=${lt_cv_archive_cmds_need_lc-yes}
-
-+# The second clause should only fire when bootstrapping the
-+# libtool distribution, otherwise you forgot to ship ltmain.sh
-+# with your package, and you will get complaints that there are
-+# no rules to generate ltmain.sh.
-+if test -f "$ltmain"; then
-+ :
- else
- # If there is no Makefile yet, we rely on a make rule to execute
- # `config.status --recheck' to rerun these tests and create the
-@@ -18995,148 +7478,39 @@
- fi
- fi
-
-+if test -f "$ltmain"; then
-+ trap "$rm \"${ofile}T\"; exit 1" 1 2 15
-+ $rm -f "${ofile}T"
-
--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
--
--CC="$lt_save_CC"
--
-- else
-- tagname=""
-- fi
-- ;;
--
-- RC)
--
--
--
--# Source file extension for RC test sources.
--ac_ext=rc
--
--# Object file extension for compiled RC test sources.
--objext=o
--objext_RC=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
--
--# Code to be used in simple link tests
--lt_simple_link_test_code="$lt_simple_compile_test_code"
--
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
--
--# If no C compiler was specified, use CC.
--LTCC=${LTCC-"$CC"}
--
--# Allow CC to be a program name with arguments.
--compiler=$CC
--
--
--# save warnings/boilerplate of simple test code
--ac_outfile=conftest.$ac_objext
--printf "$lt_simple_compile_test_code" >conftest.$ac_ext
--eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
--_lt_compiler_boilerplate=`cat conftest.err`
--$rm conftest*
--
--ac_outfile=conftest.$ac_objext
--printf "$lt_simple_link_test_code" >conftest.$ac_ext
--eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
--_lt_linker_boilerplate=`cat conftest.err`
--$rm conftest*
--
--
--# Allow CC to be a program name with arguments.
--lt_save_CC="$CC"
--CC=${RC-"windres"}
--compiler=$CC
--compiler_RC=$CC
--for cc_temp in $compiler""; do
-- case $cc_temp in
-- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-- \-*) ;;
-- *) break;;
-- esac
--done
--cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
--
--lt_cv_prog_compiler_c_o_RC=yes
-+ echo creating $ofile
-
--# The else clause should only fire when bootstrapping the
--# libtool distribution, otherwise you forgot to ship ltmain.sh
--# with your package, and you will get complaints that there are
--# no rules to generate ltmain.sh.
--if test -f "$ltmain"; then
-- # See if we are running on zsh, and set the options which allow our commands through
-- # without removal of \ escapes.
-- if test -n "${ZSH_VERSION+set}" ; then
-- setopt NO_GLOB_SUBST
-- fi
- # Now quote all the things that may contain metacharacters while being
- # careful not to overquote the AC_SUBSTed values. We take copies of the
- # variables and quote the copies for generation of the libtool script.
-- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-- SED SHELL STRIP \
-- libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-- old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-- deplibs_check_method reload_flag reload_cmds need_locks \
-- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-- lt_cv_sys_global_symbol_to_c_name_address \
-+ for var in echo old_CC old_CFLAGS SED \
-+ AR AR_FLAGS CC LD LN_S NM SHELL STRIP \
-+ reload_flag reload_cmds wl \
-+ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
-+ thread_safe_flag_spec whole_archive_flag_spec libname_spec \
-+ library_names_spec soname_spec \
-+ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
-+ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
-+ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
-+ old_striplib striplib file_magic_cmd export_symbols_cmds \
-+ deplibs_check_method allow_undefined_flag no_undefined_flag \
-+ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
-+ global_symbol_to_c_name_address \
-+ hardcode_libdir_flag_spec hardcode_libdir_separator \
- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-- old_postinstall_cmds old_postuninstall_cmds \
-- compiler_RC \
-- CC_RC \
-- LD_RC \
-- lt_prog_compiler_wl_RC \
-- lt_prog_compiler_pic_RC \
-- lt_prog_compiler_static_RC \
-- lt_prog_compiler_no_builtin_flag_RC \
-- export_dynamic_flag_spec_RC \
-- thread_safe_flag_spec_RC \
-- whole_archive_flag_spec_RC \
-- enable_shared_with_static_runtimes_RC \
-- old_archive_cmds_RC \
-- old_archive_from_new_cmds_RC \
-- predep_objects_RC \
-- postdep_objects_RC \
-- predeps_RC \
-- postdeps_RC \
-- compiler_lib_search_path_RC \
-- archive_cmds_RC \
-- archive_expsym_cmds_RC \
-- postinstall_cmds_RC \
-- postuninstall_cmds_RC \
-- old_archive_from_expsyms_cmds_RC \
-- allow_undefined_flag_RC \
-- no_undefined_flag_RC \
-- export_symbols_cmds_RC \
-- hardcode_libdir_flag_spec_RC \
-- hardcode_libdir_flag_spec_ld_RC \
-- hardcode_libdir_separator_RC \
-- hardcode_automatic_RC \
-- module_cmds_RC \
-- module_expsym_cmds_RC \
-- lt_cv_prog_compiler_c_o_RC \
-- exclude_expsyms_RC \
-- include_expsyms_RC; do
-+ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
-
- case $var in
-- old_archive_cmds_RC | \
-- old_archive_from_new_cmds_RC | \
-- archive_cmds_RC | \
-- archive_expsym_cmds_RC | \
-- module_cmds_RC | \
-- module_expsym_cmds_RC | \
-- old_archive_from_expsyms_cmds_RC | \
-- export_symbols_cmds_RC | \
-- extract_expsyms_cmds | reload_cmds | finish_cmds | \
-- postinstall_cmds | postuninstall_cmds | \
-+ reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
- old_postinstall_cmds | old_postuninstall_cmds | \
-- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-+ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
-+ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
-+ postinstall_cmds | postuninstall_cmds | \
-+ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
- # Double-quote double-evaled strings.
- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
- ;;
-@@ -19146,16 +7520,46 @@
- esac
- done
-
-- case $lt_echo in
-- *'\$0 --fallback-echo"')
-- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-- ;;
-- esac
-+ cat <<__EOF__ > "${ofile}T"
-+#! $SHELL
-+
-+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-+#
-+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
-+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-+#
-+# 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.
-+#
-+# As a special exception to the GNU General Public License, if you
-+# distribute this file as part of a program that contains a
-+# configuration script generated by Autoconf, you may include it under
-+# the same distribution terms that you use for the rest of that program.
-
--cfgfile="$ofile"
-+# A sed that does not truncate output.
-+SED=$lt_SED
-+
-+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-+Xsed="${SED} -e s/^X//"
-+
-+# The HP-UX ksh and POSIX shell print the target directory to stdout
-+# if CDPATH is set.
-+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-
-- cat <<__EOF__ >> "$cfgfile"
--# ### BEGIN LIBTOOL TAG CONFIG: $tagname
-+# ### BEGIN LIBTOOL CONFIG
-
- # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-
-@@ -19169,10 +7573,7 @@
- build_old_libs=$enable_static
-
- # Whether or not to add -lc for building shared libraries.
--build_libtool_need_lc=$archive_cmds_need_lc_RC
--
--# Whether or not to disallow shared libs when runtime libs are static
--allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
-+build_libtool_need_lc=$need_lc
-
- # Whether or not to optimize for fast installation.
- fast_install=$enable_fast_install
-@@ -19180,12 +7581,6 @@
- # The host system.
- host_alias=$host_alias
- host=$host
--host_os=$host_os
--
--# The build system.
--build_alias=$build_alias
--build=$build
--build_os=$build_os
-
- # An echo program that does not interpret backslashes.
- echo=$lt_echo
-@@ -19194,20 +7589,14 @@
- AR=$lt_AR
- AR_FLAGS=$lt_AR_FLAGS
-
--# A C compiler.
--LTCC=$lt_LTCC
--
--# A language-specific compiler.
--CC=$lt_compiler_RC
-+# The default C compiler.
-+CC=$lt_CC
-
- # Is the compiler the GNU C compiler?
--with_gcc=$GCC_RC
--
--# An ERE matcher.
--EGREP=$lt_EGREP
-+with_gcc=$GCC
-
- # The linker used to build libraries.
--LD=$lt_LD_RC
-+LD=$lt_LD
-
- # Whether we need hard or soft links.
- LN_S=$lt_LN_S
-@@ -19238,7 +7627,7 @@
- reload_cmds=$lt_reload_cmds
-
- # How to pass a linker flag through the compiler.
--wl=$lt_lt_prog_compiler_wl_RC
-+wl=$lt_wl
-
- # Object file suffix (normally "o").
- objext="$ac_objext"
-@@ -19246,23 +7635,20 @@
- # Old archive suffix (normally "a").
- libext="$libext"
-
--# Shared library suffix (normally ".so").
--shrext_cmds='$shrext_cmds'
--
- # Executable file suffix (normally "").
- exeext="$exeext"
-
- # Additional compiler flags for building library objects.
--pic_flag=$lt_lt_prog_compiler_pic_RC
-+pic_flag=$lt_pic_flag
- pic_mode=$pic_mode
-
--# What is the maximum length of a command?
--max_cmd_len=$lt_cv_sys_max_cmd_len
--
- # Does compiler simultaneously support -c and -o options?
--compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
-+compiler_c_o=$lt_compiler_c_o
-+
-+# Can we write directly to a .lo ?
-+compiler_o_lo=$lt_compiler_o_lo
-
--# Must we lock files when doing compilation?
-+# Must we lock files when doing compilation ?
- need_locks=$lt_need_locks
-
- # Do we need the lib prefix for modules?
-@@ -19281,19 +7667,19 @@
- dlopen_self_static=$enable_dlopen_self_static
-
- # Compiler flag to prevent dynamic linking.
--link_static_flag=$lt_lt_prog_compiler_static_RC
-+link_static_flag=$lt_link_static_flag
-
- # Compiler flag to turn off builtin functions.
--no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
-+no_builtin_flag=$lt_no_builtin_flag
-
- # Compiler flag to allow reflexive dlopens.
--export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
-+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
- # Compiler flag to generate shared objects directly from archives.
--whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
-+whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
- # Compiler flag to generate thread-safe objects.
--thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
-+thread_safe_flag_spec=$lt_thread_safe_flag_spec
-
- # Library versioning type.
- version_type=$version_type
-@@ -19310,50 +7696,26 @@
-
- # Commands used to build and install an old-style archive.
- RANLIB=$lt_RANLIB
--old_archive_cmds=$lt_old_archive_cmds_RC
-+old_archive_cmds=$lt_old_archive_cmds
- old_postinstall_cmds=$lt_old_postinstall_cmds
- old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
- # Create an old-style archive from a shared archive.
--old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
-+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
- # Create a temporary old-style archive to link instead of a shared archive.
--old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
-+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
- # Commands used to build and install a shared archive.
--archive_cmds=$lt_archive_cmds_RC
--archive_expsym_cmds=$lt_archive_expsym_cmds_RC
-+archive_cmds=$lt_archive_cmds
-+archive_expsym_cmds=$lt_archive_expsym_cmds
- postinstall_cmds=$lt_postinstall_cmds
- postuninstall_cmds=$lt_postuninstall_cmds
-
--# Commands used to build a loadable module (assumed same as above if empty)
--module_cmds=$lt_module_cmds_RC
--module_expsym_cmds=$lt_module_expsym_cmds_RC
--
- # Commands to strip libraries.
- old_striplib=$lt_old_striplib
- striplib=$lt_striplib
-
--# Dependencies to place before the objects being linked to create a
--# shared library.
--predep_objects=$lt_predep_objects_RC
--
--# Dependencies to place after the objects being linked to create a
--# shared library.
--postdep_objects=$lt_postdep_objects_RC
--
--# Dependencies to place before the objects being linked to create a
--# shared library.
--predeps=$lt_predeps_RC
--
--# Dependencies to place after the objects being linked to create a
--# shared library.
--postdeps=$lt_postdeps_RC
--
--# The library search path used internally by the compiler when linking
--# a shared library.
--compiler_lib_search_path=$lt_compiler_lib_search_path_RC
--
- # Method to check whether dependent libraries are shared objects.
- deplibs_check_method=$lt_deplibs_check_method
-
-@@ -19361,10 +7723,10 @@
- file_magic_cmd=$lt_file_magic_cmd
-
- # Flag that allows shared libraries with undefined symbols to be built.
--allow_undefined_flag=$lt_allow_undefined_flag_RC
-+allow_undefined_flag=$lt_allow_undefined_flag
-
- # Flag that forces no undefined symbols.
--no_undefined_flag=$lt_no_undefined_flag_RC
-+no_undefined_flag=$lt_no_undefined_flag
-
- # Commands used to finish a libtool library installation in a directory.
- finish_cmds=$lt_finish_cmds
-@@ -19373,13 +7735,13 @@
- finish_eval=$lt_finish_eval
-
- # Take the output of nm and produce a listing of raw symbols and C names.
--global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-+global_symbol_pipe=$lt_global_symbol_pipe
-
- # Transform the output of nm in a proper C declaration
--global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-+global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
-
- # Transform the output of nm in a C name address pair
--global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-+global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
-
- # This is the shared library runtime path variable.
- runpath_var=$runpath_var
-@@ -19391,45 +7753,36 @@
- shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
- # How to hardcode a shared library path into an executable.
--hardcode_action=$hardcode_action_RC
-+hardcode_action=$hardcode_action
-
- # Whether we should hardcode library paths into libraries.
- hardcode_into_libs=$hardcode_into_libs
-
- # Flag to hardcode \$libdir into a binary during linking.
- # This must work even if \$libdir does not exist.
--hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
--
--# If ld is used when linking, flag to hardcode \$libdir into
--# a binary during linking. This must work even if \$libdir does
--# not exist.
--hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
-+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
- # Whether we need a single -rpath flag with a separated argument.
--hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
-+hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
--# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
- # resulting binary.
--hardcode_direct=$hardcode_direct_RC
-+hardcode_direct=$hardcode_direct
-
- # Set to yes if using the -LDIR flag during linking hardcodes DIR into the
- # resulting binary.
--hardcode_minus_L=$hardcode_minus_L_RC
-+hardcode_minus_L=$hardcode_minus_L
-
- # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
- # the resulting binary.
--hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
--
--# Set to yes if building a shared library automatically hardcodes DIR into the library
--# and all subsequent libraries and executables linked against it.
--hardcode_automatic=$hardcode_automatic_RC
-+hardcode_shlibpath_var=$hardcode_shlibpath_var
-
- # Variables whose values should be saved in libtool wrapper scripts and
- # restored at relink time.
- variables_saved_for_relink="$variables_saved_for_relink"
-
- # Whether libtool must link a program against all its dependency libraries.
--link_all_deplibs=$link_all_deplibs_RC
-+link_all_deplibs=$link_all_deplibs
-
- # Compile-time system search path for libraries
- sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-@@ -19438,75 +7791,234 @@
- sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
- # Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path="$fix_srcfile_path_RC"
-+fix_srcfile_path="$fix_srcfile_path"
-
- # Set to yes if exported symbols are required.
--always_export_symbols=$always_export_symbols_RC
-+always_export_symbols=$always_export_symbols
-
- # The commands to list exported symbols.
--export_symbols_cmds=$lt_export_symbols_cmds_RC
-+export_symbols_cmds=$lt_export_symbols_cmds
-
- # The commands to extract the exported symbol list from a shared archive.
- extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
- # Symbols that should not be listed in the preloaded symbols.
--exclude_expsyms=$lt_exclude_expsyms_RC
-+exclude_expsyms=$lt_exclude_expsyms
-
- # Symbols that must always be exported.
--include_expsyms=$lt_include_expsyms_RC
-+include_expsyms=$lt_include_expsyms
-
--# ### END LIBTOOL TAG CONFIG: $tagname
-+# ### END LIBTOOL CONFIG
-
- __EOF__
-
-+ case $host_os in
-+ aix3*)
-+ cat <<\EOF >> "${ofile}T"
-
--else
-- # If there is no Makefile yet, we rely on a make rule to execute
-- # `config.status --recheck' to rerun these tests and create the
-- # libtool script then.
-- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-- if test -f "$ltmain_in"; then
-- test -f Makefile && make "$ltmain"
-- fi
-+# AIX sometimes has problems with the GCC collect2 program. For some
-+# reason, if we set the COLLECT_NAMES environment variable, the problems
-+# vanish in a puff of smoke.
-+if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
- fi
-+EOF
-+ ;;
-+ esac
-
-+ case $host_os in
-+ cygwin* | mingw* | pw32* | os2*)
-+ cat <<'EOF' >> "${ofile}T"
-+ # This is a source program that is used to create dlls on Windows
-+ # Don't remove nor modify the starting and closing comments
-+# /* ltdll.c starts here */
-+# #define WIN32_LEAN_AND_MEAN
-+# #include <windows.h>
-+# #undef WIN32_LEAN_AND_MEAN
-+# #include <stdio.h>
-+#
-+# #ifndef __CYGWIN__
-+# # ifdef __CYGWIN32__
-+# # define __CYGWIN__ __CYGWIN32__
-+# # endif
-+# #endif
-+#
-+# #ifdef __cplusplus
-+# extern "C" {
-+# #endif
-+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-+# #ifdef __cplusplus
-+# }
-+# #endif
-+#
-+# #ifdef __CYGWIN__
-+# #include <cygwin/cygwin_dll.h>
-+# DECLARE_CYGWIN_DLL( DllMain );
-+# #endif
-+# HINSTANCE __hDllInstance_base;
-+#
-+# BOOL APIENTRY
-+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-+# {
-+# __hDllInstance_base = hInst;
-+# return TRUE;
-+# }
-+# /* ltdll.c ends here */
-+ # This is a source program that is used to create import libraries
-+ # on Windows for dlls which lack them. Don't remove nor modify the
-+ # starting and closing comments
-+# /* impgen.c starts here */
-+# /* Copyright (C) 1999-2000 Free Software Foundation, Inc.
-+#
-+# This file is part of GNU libtool.
-+#
-+# 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 <stdio.h> /* for printf() */
-+# #include <unistd.h> /* for open(), lseek(), read() */
-+# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
-+# #include <string.h> /* for strdup() */
-+#
-+# /* O_BINARY isn't required (or even defined sometimes) under Unix */
-+# #ifndef O_BINARY
-+# #define O_BINARY 0
-+# #endif
-+#
-+# static unsigned int
-+# pe_get16 (fd, offset)
-+# int fd;
-+# int offset;
-+# {
-+# unsigned char b[2];
-+# lseek (fd, offset, SEEK_SET);
-+# read (fd, b, 2);
-+# return b[0] + (b[1]<<8);
-+# }
-+#
-+# static unsigned int
-+# pe_get32 (fd, offset)
-+# int fd;
-+# int offset;
-+# {
-+# unsigned char b[4];
-+# lseek (fd, offset, SEEK_SET);
-+# read (fd, b, 4);
-+# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-+# }
-+#
-+# static unsigned int
-+# pe_as32 (ptr)
-+# void *ptr;
-+# {
-+# unsigned char *b = ptr;
-+# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-+# }
-+#
-+# int
-+# main (argc, argv)
-+# int argc;
-+# char *argv[];
-+# {
-+# int dll;
-+# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
-+# unsigned long export_rva, export_size, nsections, secptr, expptr;
-+# unsigned long name_rvas, nexp;
-+# unsigned char *expdata, *erva;
-+# char *filename, *dll_name;
-+#
-+# filename = argv[1];
-+#
-+# dll = open(filename, O_RDONLY|O_BINARY);
-+# if (dll < 1)
-+# return 1;
-+#
-+# dll_name = filename;
-+#
-+# for (i=0; filename[i]; i++)
-+# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
-+# dll_name = filename + i +1;
-+#
-+# pe_header_offset = pe_get32 (dll, 0x3c);
-+# opthdr_ofs = pe_header_offset + 4 + 20;
-+# num_entries = pe_get32 (dll, opthdr_ofs + 92);
-+#
-+# if (num_entries < 1) /* no exports */
-+# return 1;
-+#
-+# export_rva = pe_get32 (dll, opthdr_ofs + 96);
-+# export_size = pe_get32 (dll, opthdr_ofs + 100);
-+# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
-+# secptr = (pe_header_offset + 4 + 20 +
-+# pe_get16 (dll, pe_header_offset + 4 + 16));
-+#
-+# expptr = 0;
-+# for (i = 0; i < nsections; i++)
-+# {
-+# char sname[8];
-+# unsigned long secptr1 = secptr + 40 * i;
-+# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-+# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
-+# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
-+# lseek(dll, secptr1, SEEK_SET);
-+# read(dll, sname, 8);
-+# if (vaddr <= export_rva && vaddr+vsize > export_rva)
-+# {
-+# expptr = fptr + (export_rva - vaddr);
-+# if (export_rva + export_size > vaddr + vsize)
-+# export_size = vsize - (export_rva - vaddr);
-+# break;
-+# }
-+# }
-+#
-+# expdata = (unsigned char*)malloc(export_size);
-+# lseek (dll, expptr, SEEK_SET);
-+# read (dll, expdata, export_size);
-+# erva = expdata - export_rva;
-+#
-+# nexp = pe_as32 (expdata+24);
-+# name_rvas = pe_as32 (expdata+32);
-+#
-+# printf ("EXPORTS\n");
-+# for (i = 0; i<nexp; i++)
-+# {
-+# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
-+# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
-+# }
-+#
-+# return 0;
-+# }
-+# /* impgen.c ends here */
-
--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
--
--CC="$lt_save_CC"
-+EOF
-+ ;;
-+ esac
-
-- ;;
-+ # We use sed instead of cat because bash on DJGPP gets confused if
-+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
-+ # text mode, it properly converts lines to CR/LF. This bash problem
-+ # is reportedly fixed, but why not run on old versions too?
-+ sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
-
-- *)
-- { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
--echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
-- { (exit 1); exit 1; }; }
-- ;;
-- esac
-+ mv -f "${ofile}T" "$ofile" || \
-+ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
-+ chmod +x "$ofile"
-+fi
-
-- # Append the new tag name to the list of available tags.
-- if test -n "$tagname" ; then
-- available_tags="$available_tags $tagname"
-- fi
-- fi
-- done
-- IFS="$lt_save_ifs"
-
-- # Now substitute the updated list of available tags.
-- if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
-- mv "${ofile}T" "$ofile"
-- chmod +x "$ofile"
-- else
-- rm -f "${ofile}T"
-- { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
--echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
-- { (exit 1); exit 1; }; }
-- fi
--fi
-
-
-
-@@ -19521,24 +8033,6 @@
-
-
-
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
- DEBUG="-g"
- if test -z "$GCC"; then
- XIPH_CPPFLAGS="-D_REENTRANT"
-@@ -19614,8 +8108,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -19782,8 +8275,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -19932,8 +8424,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -20086,8 +8577,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -20279,8 +8769,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -20350,8 +8839,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -20405,8 +8893,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -20476,8 +8963,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -20631,8 +9117,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -20693,8 +9178,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -20738,8 +9222,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -20813,8 +9296,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -20959,8 +9441,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -21116,8 +9597,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -21171,8 +9651,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -21246,8 +9725,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -21301,8 +9779,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -21410,8 +9887,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -21478,8 +9954,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -21524,8 +9999,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -21625,8 +10099,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -21802,8 +10275,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -21930,8 +10402,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22009,8 +10480,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22051,8 +10521,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22154,8 +10623,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22232,8 +10700,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22282,8 +10749,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22351,8 +10817,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22513,8 +10978,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22586,8 +11050,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22639,8 +11102,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22792,8 +11254,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22866,8 +11327,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22917,8 +11377,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22969,8 +11428,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23118,8 +11576,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23299,8 +11756,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23371,8 +11827,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23448,8 +11903,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23654,7 +12108,11 @@
-
- fi;
-
--if test "x$curl_prefix" != "x" -a "x$curl_prefix" != "xyes"; then
-+curl_ok="yes"
-+
-+if test "x$curl_prefix" == "xno"; then
-+ curl_ok="no"
-+elif test "x$curl_prefix" != "x" -a "x$curl_prefix" != "xyes"; then
- CURL_LIBS="-L$curl_prefix/lib -lcurl"
- CURL_CFLAGS="-I$curl_prefix/include"
- elif test "x$CURL_CONFIG" != "x"; then
-@@ -23675,8 +12133,8 @@
- CURL_CFLAGS="-I$curl_prefix/include"
- fi
-
--curl_ok="yes"
--
-+if test "$curl_ok" = "yes"
-+then
- xt_curl_CPPFLAGS="$CPPFLAGS"
- xt_curl_LIBS="$LIBS"
- CPPFLAGS="$CPPFLAGS $CURL_CFLAGS"
-@@ -23715,8 +12173,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23835,16 +12292,7 @@
-
- echo "$as_me:$LINENO: checking for libcurl" >&5
- echo $ECHO_N "checking for libcurl... $ECHO_C" >&6
--if test "$curl_ok" = "yes"
--then
-- 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
-+cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -23858,12 +12306,22 @@
- }
-
- _ACEOF
--rm -f conftest$ac_exeext
-+rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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='./conftest$ac_exeext'
-+ (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=$?
-@@ -23871,16 +12329,13 @@
- (exit $ac_status); }; }; then
- :
- else
-- echo "$as_me: program exited with status $ac_status" >&5
--echo "$as_me: failed program was:" >&5
-+ echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--( exit $ac_status )
- curl_ok="no"
- fi
--rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
--fi
--fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
- if test "$curl_ok" = "yes"; then
- echo "$as_me:$LINENO: result: yes" >&5
- echo "${ECHO_T}yes" >&6
-@@ -23924,8 +12379,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24003,6 +12457,7 @@
- fi
- CPPFLAGS="$xt_curl_CPPFLAGS"
- LIBS="$xt_curl_LIBS"
-+fi
-
- # Check whether --enable-yp or --disable-yp was given.
- if test "${enable_yp+set}" = set; then
-@@ -24734,22 +13189,12 @@
- s,@host_cpu@,$host_cpu,;t t
- s,@host_vendor@,$host_vendor,;t t
- s,@host_os@,$host_os,;t t
--s,@EGREP@,$EGREP,;t t
- s,@LN_S@,$LN_S,;t t
- s,@ECHO@,$ECHO,;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,@CPP@,$CPP,;t t
--s,@CXX@,$CXX,;t t
--s,@CXXFLAGS@,$CXXFLAGS,;t t
--s,@ac_ct_CXX@,$ac_ct_CXX,;t t
--s,@CXXDEPMODE@,$CXXDEPMODE,;t t
--s,@CXXCPP@,$CXXCPP,;t t
--s,@F77@,$F77,;t t
--s,@FFLAGS@,$FFLAGS,;t t
--s,@ac_ct_F77@,$ac_ct_F77,;t t
-+s,@EGREP@,$EGREP,;t t
- s,@LIBTOOL@,$LIBTOOL,;t t
- s,@XSLTCONFIG@,$XSLTCONFIG,;t t
- s,@FGREP@,$FGREP,;t t
-@@ -24953,11 +13398,6 @@
- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
- esac
-
-- 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. */
-@@ -24996,6 +13436,12 @@
- fi;;
- esac
- done` || { (exit 1); exit 1; }
-+
-+ 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
- _ACEOF
- cat >>$CONFIG_STATUS <<_ACEOF
- sed "$ac_vpsub
-diff -ruN icecast-2.3.0-old/m4/xiph_curl.m4 icecast-2.3.0-new/m4/xiph_curl.m4
---- icecast-2.3.0-old/m4/xiph_curl.m4 2005-08-19 04:02:00.000000000 +0200
-+++ icecast-2.3.0-new/m4/xiph_curl.m4 2005-10-02 12:34:19.000000000 +0200
-@@ -14,7 +14,11 @@
- AC_HELP_STRING([--with-curl-config=curl-config],[Use curl-config to find libcurl]),
- CURL_CONFIG="$withval", [AC_PATH_PROGS(CURL_CONFIG, [curl-config], "")])
-
--if test "x$curl_prefix" != "x" -a "x$curl_prefix" != "xyes"; then
-+curl_ok="yes"
-+
-+if test "x$curl_prefix" == "xno"; then
-+ curl_ok="no"
-+elif test "x$curl_prefix" != "x" -a "x$curl_prefix" != "xyes"; then
- CURL_LIBS="-L$curl_prefix/lib -lcurl"
- CURL_CFLAGS="-I$curl_prefix/include"
- elif test "x$CURL_CONFIG" != "x"; then
-@@ -33,8 +37,8 @@
- CURL_CFLAGS="-I$curl_prefix/include"
- fi
-
--curl_ok="yes"
--
-+if test "$curl_ok" = "yes"
-+then
- xt_curl_CPPFLAGS="$CPPFLAGS"
- xt_curl_LIBS="$LIBS"
- CPPFLAGS="$CPPFLAGS $CURL_CFLAGS"
-@@ -44,16 +48,13 @@
- dnl
- AC_CHECK_HEADERS([curl/curl.h],, curl_ok="no")
- AC_MSG_CHECKING(for libcurl)
--if test "$curl_ok" = "yes"
--then
-- AC_RUN_IFELSE(AC_LANG_SOURCE([
-+AC_LINK_IFELSE(AC_LANG_SOURCE([
- #include <curl/curl.h>
- int main()
- {
- return 0;
- }
- ]),,[curl_ok="no"])
--fi
- if test "$curl_ok" = "yes"; then
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_CURL, 1, [Define if you have libcurl.])
-@@ -66,4 +67,5 @@
- fi
- CPPFLAGS="$xt_curl_CPPFLAGS"
- LIBS="$xt_curl_LIBS"
-+fi
- ])
diff --git a/openwrt/package/id3lib/Config.in b/openwrt/package/id3lib/Config.in
deleted file mode 100644
index 6bca99aa60..0000000000
--- a/openwrt/package/id3lib/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_ID3LIB
- prompt "id3lib............................ An ID3v1/ID3v2 tagging library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_UCLIBCXX
- select BR2_PACKAGE_ZLIB
- help
- An ID3v1/ID3v2 tagging library.
-
- http://www.id3lib.org/
-
- Depends: uClibc++, zlib
-
diff --git a/openwrt/package/id3lib/Makefile b/openwrt/package/id3lib/Makefile
deleted file mode 100644
index fd02bef87c..0000000000
--- a/openwrt/package/id3lib/Makefile
+++ /dev/null
@@ -1,90 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=id3lib
-PKG_VERSION:=3.8.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=19f27ddd2dda4b2d26a559a4f0f402a7
-
-PKG_SOURCE_URL:=@SF/id3lib
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,ID3LIB,id3lib,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(LINUX_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-Wl,-Bdynamic,-luClibc++,-Bstatic,-lstdc++,-Bdynamic,-lz,-lm,-lc" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_ID3LIB):
- install -d -m0755 $(IDIR_ID3LIB)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libid3-*.so.* $(IDIR_ID3LIB)/usr/lib/
- $(IPKG_BUILD) $(IDIR_ID3LIB) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libid3.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/id3 $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/id3.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libid3.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libid3.so $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libid3-*.so.* $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libid3.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/id3 \
- $(STAGING_DIR)/usr/include/id3.h \
- $(STAGING_DIR)/usr/lib/libid3.a \
- $(STAGING_DIR)/usr/lib/libid3.so \
- $(STAGING_DIR)/usr/lib/libid3-*.so.* \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/id3lib/ipkg/id3lib.control b/openwrt/package/id3lib/ipkg/id3lib.control
deleted file mode 100644
index c49b70ea6a..0000000000
--- a/openwrt/package/id3lib/ipkg/id3lib.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: id3lib
-Priority: optional
-Section: libs
-Depends: uclibc++, zlib
-Description: An ID3v1/ID3v2 tagging library.
diff --git a/openwrt/package/iftop/Config.in b/openwrt/package/iftop/Config.in
deleted file mode 100644
index f2d41d5321..0000000000
--- a/openwrt/package/iftop/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_IFTOP
- prompt "iftop............................. display bandwith usage on an interface"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBNCURSES
- select BR2_PACKAGE_LIBPTHREAD
- help
- iftop does for network usage what top(1) does for CPU usage. It
- listens to network traffic on a named interface and displays a
- table of current bandwidth usage by pairs of hosts. Handy for
- answering the question "why is our ADSL link so slow?".
-
- http://www.ex-parrot.com/~pdw/iftop/
diff --git a/openwrt/package/iftop/Makefile b/openwrt/package/iftop/Makefile
deleted file mode 100644
index a42d58d526..0000000000
--- a/openwrt/package/iftop/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=iftop
-PKG_VERSION:=0.17
-PKG_RELEASE:=1
-PKG_MD5SUM:=062bc8fb3856580319857326e0b8752d
-
-PKG_SOURCE_URL:=http://www.ex-parrot.com/~pdw/iftop/download
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,IFTOP,iftop,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --bindir=/usr/bin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- touch $@
-
-$(IPKG_IFTOP):
- install -d -m0755 $(IDIR_IFTOP)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/$(PKG_NAME) $(IDIR_IFTOP)/usr/bin/
- $(STRIP) $(IDIR_IFTOP)/usr/bin/*
- $(IPKG_BUILD) $(IDIR_IFTOP) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/iftop/ipkg/iftop.control b/openwrt/package/iftop/ipkg/iftop.control
deleted file mode 100644
index ce2cbadd5e..0000000000
--- a/openwrt/package/iftop/ipkg/iftop.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iftop
-Priority: optional
-Section: net
-Depends: libncurses, libpcap, libpthread
-Description: display bandwith usage on an interface
diff --git a/openwrt/package/igmpproxy/Config.in b/openwrt/package/igmpproxy/Config.in
deleted file mode 100644
index c66258a23e..0000000000
--- a/openwrt/package/igmpproxy/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_IGMPPROXY
- prompt "igmpproxy......................... Multicast Routing Daemon"
- tristate
- default m if CONFIG_DEVEL
- help
- IGMPproxy is a simple dynamic Multicast Routing Daemon using
- only IGMP signalling (Internet Group Management Protocol).
-
- http://sourceforge.net/projects/igmpproxy
diff --git a/openwrt/package/igmpproxy/Makefile b/openwrt/package/igmpproxy/Makefile
deleted file mode 100644
index eecfb6317b..0000000000
--- a/openwrt/package/igmpproxy/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=igmpproxy
-PKG_VERSION:=0.1-beta2
-PKG_RELEASE:=1
-PKG_MD5SUM:=2a5a59480f44d4b14077a6b5319e9940
-
-PKG_SOURCE_URL:=@SF/igmpproxy
-PKG_SOURCE:=$(PKG_NAME)-src-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-PKG_CAT:=zcat
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,IGMPPROXY,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) CC=$(TARGET_CC) CFLAGS="$(TARGET_CFLAGS)" -C $(PKG_BUILD_DIR)/src
- touch $@
-
-$(IPKG_IGMPPROXY):
- mkdir -p $(IDIR_IGMPPROXY)/usr/sbin $(IDIR_IGMPPROXY)/etc
- $(CP) $(PKG_BUILD_DIR)/src/$(PKG_NAME) $(IDIR_IGMPPROXY)/usr/sbin/
- $(CP) $(PKG_BUILD_DIR)/src/$(PKG_NAME).conf $(IDIR_IGMPPROXY)/etc
- $(STRIP) $(IDIR_IGMPPROXY)/usr/sbin/*
- $(IPKG_BUILD) $(IDIR_IGMPPROXY) $(PACKAGE_DIR)
diff --git a/openwrt/package/igmpproxy/ipkg/igmpproxy.control b/openwrt/package/igmpproxy/ipkg/igmpproxy.control
deleted file mode 100644
index 26bfe15639..0000000000
--- a/openwrt/package/igmpproxy/ipkg/igmpproxy.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: igmpproxy
-Section: net
-Priority: optional
-Description: IGMPproxy is a simple dynamic Multicast Routing Daemon.
diff --git a/openwrt/package/ipcad/Config.in b/openwrt/package/ipcad/Config.in
deleted file mode 100644
index fa5d0e91fd..0000000000
--- a/openwrt/package/ipcad/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_IPCAD
- prompt "ipcad............................. listens for traffic on the specified interfaces"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPCAP
- help
- This daemon listens for traffic on the specified interfaces.
- It has the built-in RSH and NetFlow engines to allow exporting
- the accounting data the same way as Cisco routers do.
-
- http://lionet.info/ipcad/
-
diff --git a/openwrt/package/ipcad/Makefile b/openwrt/package/ipcad/Makefile
deleted file mode 100644
index 21231d4c1c..0000000000
--- a/openwrt/package/ipcad/Makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ipcad
-PKG_VERSION:=3.7
-PKG_RELEASE:=1
-PKG_MD5SUM:=34c542c99593dfe9d5b408deffcfe70e
-
-PKG_SOURCE_URL:=@SF/ipcad
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,IPCAD,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- touch cfglex.c cslex.c; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --disable-rpath \
- --with-gnu-ld \
- --with-psrc=pcap \
- --with-pcap-include="$(STAGING_DIR)/usr/include" \
- --with-pcap-libraries="$(STAGING_DIR)/usr/lib" \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR=$(PKG_INSTALL_DIR) \
- all install
- touch $@
-
-$(IPKG_IPCAD):
- install -d -m0755 $(IDIR_IPCAD)/etc
- $(CP) $(PKG_INSTALL_DIR)/etc/ipcad.conf $(IDIR_IPCAD)/etc/
- install -d -m0755 $(IDIR_IPCAD)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/ipcad $(IDIR_IPCAD)/usr/bin/
- $(RSTRIP) $(IDIR_IPCAD)
- $(IPKG_BUILD) $(IDIR_IPCAD) $(PACKAGE_DIR)
diff --git a/openwrt/package/ipcad/ipkg/ipcad.conffiles b/openwrt/package/ipcad/ipkg/ipcad.conffiles
deleted file mode 100644
index f6843d846d..0000000000
--- a/openwrt/package/ipcad/ipkg/ipcad.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/ipcad.conf
diff --git a/openwrt/package/ipcad/ipkg/ipcad.control b/openwrt/package/ipcad/ipkg/ipcad.control
deleted file mode 100644
index 93df70c1d5..0000000000
--- a/openwrt/package/ipcad/ipkg/ipcad.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: ipcad
-Depends: libpcap
-Section: net
-Architecture: mipsel
-Priority: optional
-Description: IPCAD stands for IP Cisco Accounting Daemon. It runs in background, listens traffic on the specified interfaces, and records the traffic for later retrieval and analysis. IPCAD can use raw BPF devices, PCAP library, divert, tee or Linux iptables' ULOG & IPQ packet sources to capture the packets.
diff --git a/openwrt/package/ipcad/patches/01-honor_cppflags.patch b/openwrt/package/ipcad/patches/01-honor_cppflags.patch
deleted file mode 100644
index 55f9888412..0000000000
--- a/openwrt/package/ipcad/patches/01-honor_cppflags.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -ruN ipcad-3.7-old/Makefile.in ipcad-3.7-new/Makefile.in
---- ipcad-3.7-old/Makefile.in 2005-11-21 05:41:07.000000000 +0100
-+++ ipcad-3.7-new/Makefile.in 2005-12-20 10:27:07.000000000 +0100
-@@ -9,6 +9,7 @@
- LDFLAGS+= @LDFLAGS@
- LIBS+= @LIBS@
- CFLAGS+= @CFLAGS@ @DEFS@ -W -Wall
-+CPPFLAGS+= @CPPFLAGS@
- CPPFLAGS+=-DIPCAD_VERSION=\"@IPCAD_VERSION@\"
- CPPFLAGS+=-DCONFIG_FILE=\"${sysconfdir}/ipcad.conf\"
- CPPFLAGS+=@DEFS@ -D_REENTRANT -D_THREAD_SAFE
diff --git a/openwrt/package/iperf/Config.in b/openwrt/package/iperf/Config.in
deleted file mode 100644
index 2e939ad190..0000000000
--- a/openwrt/package/iperf/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_IPERF
- prompt "iperf............................. Internet Protocol bandwidth measuring tool"
- tristate
- default m if CONFIG_DEVEL
- help
- Iperf is a modern alternative for measuring TCP and UDP bandwidth
- performance, allowing the tuning of various parameters and
- characteristics.
-
- http://dast.nlanr.net/Projects/Iperf/
-
diff --git a/openwrt/package/iperf/Makefile b/openwrt/package/iperf/Makefile
deleted file mode 100644
index dc12dc0f4d..0000000000
--- a/openwrt/package/iperf/Makefile
+++ /dev/null
@@ -1,72 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=iperf
-PKG_VERSION:=2.0.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=bb658aba58a5af0356f5b1342dfe8f53
-
-PKG_SOURCE_URL:=http://dast.nlanr.net/Projects/Iperf2.0
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,IPERF,iperf,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti -nostdinc++" \
- LDFLAGS="-nodefaultlibs -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-luClibc++ -lc -lm -lgcc_s" \
- ac_cv_func_malloc_0_nonnull=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --disable-rpath \
- --disable-multicast \
- --disable-threads \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" install
- touch $@
-
-$(IPKG_IPERF):
- install -d -m0755 $(IDIR_IPERF)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/iperf $(IDIR_IPERF)/usr/bin
- $(RSTRIP) $(IDIR_IPERF)
- $(IPKG_BUILD) $(IDIR_IPERF) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/iperf/ipkg/iperf.control b/openwrt/package/iperf/ipkg/iperf.control
deleted file mode 100644
index 16a82217ba..0000000000
--- a/openwrt/package/iperf/ipkg/iperf.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iperf
-Priority: optional
-Section: net
-Depends: uclibc++
-Description: Internet Protocol bandwidth measuring tool.
diff --git a/openwrt/package/ipkg/Config.in b/openwrt/package/ipkg/Config.in
deleted file mode 100644
index 4cbd295001..0000000000
--- a/openwrt/package/ipkg/Config.in
+++ /dev/null
@@ -1,18 +0,0 @@
-config BR2_PACKAGE_IPKG
- prompt "ipkg.............................. The itsy package management system"
- tristate
- default n if BUSYBOX_CONFIG_IPKG
- default y if ! BUSYBOX_CONFIG_IPKG
- help
- Lightweight package management system
- ipkg is the Itsy Package Management System, for handling
- installation and removal of packages on a system. It can
- recursively follow dependencies and download all packages
- necessary to install a particular package.
-
- ipkg knows how to install both .ipk and .deb packages.
-
- ipkg is intended to serve the same functions (and more) for
- Familiar that dpkg and apt serve for Debian, (while taking
- up much less space).
-
diff --git a/openwrt/package/ipkg/Makefile b/openwrt/package/ipkg/Makefile
deleted file mode 100644
index 3dddcc5556..0000000000
--- a/openwrt/package/ipkg/Makefile
+++ /dev/null
@@ -1,67 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ipkg
-PKG_VERSION:=0.99.154
-PKG_RELEASE:=1
-PKG_MD5SUM:=b60aeea3b86cecf0eb26b161d122fbcc
-
-PKG_SOURCE_URL:=http://www.handhelds.org/packages/ipkg \
- http://www.gtlib.gatech.edu/pub/handhelds.org/packages/ipkg \
- http://ftp.gwdg.de/pub/linux/handhelds/packages/ipkg
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,IPKG,ipkg,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_IPKG):
- install -d -m0755 $(IDIR_IPKG)/bin
- $(CP) $(PKG_INSTALL_DIR)/bin/ipkg-cl $(IDIR_IPKG)/bin/ipkg
- install -d -m0755 $(IDIR_IPKG)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libipkg.so.* $(IDIR_IPKG)/usr/lib/
- $(RSTRIP) $(IDIR_IPKG)
- $(IPKG_BUILD) $(IDIR_IPKG) $(PACKAGE_DIR)
diff --git a/openwrt/package/ipkg/ipkg/ipkg.control b/openwrt/package/ipkg/ipkg/ipkg.control
deleted file mode 100644
index 7bf87d1dd6..0000000000
--- a/openwrt/package/ipkg/ipkg/ipkg.control
+++ /dev/null
@@ -1,16 +0,0 @@
-Package: ipkg
-Section: base
-Priority: required
-Essential: yes
-Description: lightweight package management system
- ipkg is the Itsy Package Management System, for handling
- installation and removal of packages on a system. It can
- recursively follow dependencies and download all packages
- necessary to install a particular package.
- .
- ipkg knows how to install both .ipk and .deb packages.
- .
- ipkg is intended to serve the same functions (and more) for
- Familiar that dpkg and apt serve for Debian, (while taking
- up much less space).
-
diff --git a/openwrt/package/iproute2/Config.in b/openwrt/package/iproute2/Config.in
deleted file mode 100644
index 349e3b7df2..0000000000
--- a/openwrt/package/iproute2/Config.in
+++ /dev/null
@@ -1,21 +0,0 @@
-menu "iproute2.......................... A collection of utilites for controlling TCP/IP networking and Traffic Control"
-
-config BR2_COMPILE_IPROUTE2
- tristate
- default n
- depends BR2_PACKAGE_IPROUTE2_IP || BR2_PACKAGE_IPROUTE2_TC
-
-config BR2_PACKAGE_IP
- prompt "ip.............................. A routing control utility"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_IPROUTE2
-
-config BR2_PACKAGE_TC
- prompt "tc.............................. A traffic control utility"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_IPROUTE2
- select BR2_PACKAGE_KMOD_SCHED
-
-endmenu
diff --git a/openwrt/package/iproute2/Makefile b/openwrt/package/iproute2/Makefile
deleted file mode 100644
index f829293f4a..0000000000
--- a/openwrt/package/iproute2/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=iproute2
-PKG_VERSION:=2.6.15-060110
-PKG_RELEASE:=1
-PKG_MD5SUM:=04f57a6d366d36426d276178b600f5c5
-
-PKG_SOURCE_URL:=http://developer.osdl.org/dev/iproute2/download/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/iproute2-$(PKG_VERSION)
-PKG_CAT:=zcat
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,IP,ip,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,TC,tc,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- $(SED) "s:-O2:${TARGET_CFLAGS}:g" $(PKG_BUILD_DIR)/Makefile
- $(SED) "s,-I/usr/include/db3,," $(PKG_BUILD_DIR)/Makefile
- $(SED) "s,^KERNEL_INCLUDE.*,KERNEL_INCLUDE=$(LINUX_DIR)/include," \
- $(PKG_BUILD_DIR)/Makefile
- $(SED) "s,^LIBC_INCLUDE.*,LIBC_INCLUDE=$(STAGING_DIR)/include," \
- $(PKG_BUILD_DIR)/Makefile
- # For now disable compiling of the misc directory because it seems to fail
- rm -rf $(PKG_BUILD_DIR)/misc
- $(SED) "s, misc,," $(PKG_BUILD_DIR)/Makefile
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -j1 -C $(PKG_BUILD_DIR)/netem HOSTCC=$(HOSTCC) CFLAGS="-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -I ../include -DRESOLVE_HOSTNAMES"
- $(MAKE) -j1 -C $(PKG_BUILD_DIR) $(TARGET_CONFIGURE_OPTS) KERNEL_INCLUDE=$(LINUX_DIR)/include all tc/tc ip/ip
- touch $@
-
-$(IPKG_IP):
- mkdir -p $(IDIR_IP)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/ip/ip $(IDIR_IP)/usr/sbin/
- $(STRIP) $(IDIR_IP)/usr/sbin/*
- $(IPKG_BUILD) $(IDIR_IP) $(PACKAGE_DIR)
-
-$(IPKG_TC):
- mkdir -p $(IDIR_TC)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/tc/tc $(IDIR_TC)/usr/sbin/
- $(STRIP) $(IDIR_TC)/usr/sbin/*
- $(IPKG_BUILD) $(IDIR_TC) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/iproute2/ipkg/ip.control b/openwrt/package/iproute2/ipkg/ip.control
deleted file mode 100644
index 8206dd37a0..0000000000
--- a/openwrt/package/iproute2/ipkg/ip.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: ip
-Section: net
-Priority: optional
-Description: iproute2 routing control utility
diff --git a/openwrt/package/iproute2/ipkg/tc.control b/openwrt/package/iproute2/ipkg/tc.control
deleted file mode 100644
index 8950da394d..0000000000
--- a/openwrt/package/iproute2/ipkg/tc.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: tc
-Section: net
-Priority: optional
-Description: iproute2 traffic control utility
-Depends: kmod-sched
diff --git a/openwrt/package/iproute2/patches/000-debian_patches_3.patch b/openwrt/package/iproute2/patches/000-debian_patches_3.patch
deleted file mode 100644
index c6b1bd6bb7..0000000000
--- a/openwrt/package/iproute2/patches/000-debian_patches_3.patch
+++ /dev/null
@@ -1,1425 +0,0 @@
-diff -Nur iproute2-2.6.15-060110/doc/ip-cref.tex iproute2-2.6.15-060110-owrt/doc/ip-cref.tex
---- iproute2-2.6.15-060110/doc/ip-cref.tex 2004-04-15 22:56:59.000000000 +0200
-+++ iproute2-2.6.15-060110-owrt/doc/ip-cref.tex 2006-03-22 12:49:35.000000000 +0100
-@@ -1322,6 +1322,19 @@
- If it is not given, Linux uses the value selected with \verb|sysctl|
- variable \verb|net/ipv4/tcp_reordering|.
-
-+\item \verb|hoplimit NUMBER|
-+
-+--- [2.5.74+ only] Hop limit on the path to this destination. If it is not
-+ given, Linux uses the value selected with \verb|sysctl| variable
-+ \verb|net/ipv4/ip_default_ttl|.
-+
-+\item \verb|initcwnd NUMBER|
-+
-+--- [2.5.70+ only] Initial congestion window size when establishing
-+ connections to this destination. This value is multiplied with the
-+ MSS (``Maximal Segment Size'') for the connection to get the actual
-+ window size. If it is not given (or set to zero), Linux uses the
-+ values specified in~\cite{RFC2414}.
-
-
- \item \verb|nexthop NEXTHOP|
-@@ -2651,6 +2664,9 @@
- \bibitem{RFC-DHCP} R.~Droms.
- ``Dynamic Host Configuration Protocol.'', RFC-2131
-
-+\bibitem{RFC2414} M.~Allman, S.~Floyd, C.~Partridge.
-+``Increasing TCP's Initial Window'', RFC-2414.
-+
- \end{thebibliography}
-
-
-diff -Nur iproute2-2.6.15-060110/doc/Makefile iproute2-2.6.15-060110-owrt/doc/Makefile
---- iproute2-2.6.15-060110/doc/Makefile 2005-03-10 20:01:36.000000000 +0100
-+++ iproute2-2.6.15-060110-owrt/doc/Makefile 2006-03-22 12:49:35.000000000 +0100
-@@ -14,6 +14,7 @@
- PAGESPERPAGE=2
-
- HTMLFILES=$(subst .sgml,.html,$(shell echo *.sgml))
-+TXTFILES=$(subst .sgml,.txt,$(shell echo *.sgml))
- DVIFILES=$(subst .ps,.dvi,$(PSFILES))
-
-
-@@ -23,6 +24,8 @@
-
- html: $(HTMLFILES)
-
-+txt: $(TXTFILES)
-+
- dvi: $(DVIFILES)
-
- print: $(PSFILES)
-@@ -47,9 +50,12 @@
- %.html: %.sgml
- $(SGML2HTML) $<
-
-+%.txt: %.html
-+ lynx -nolist -dump $< > $@
-+
- install:
- install -m 0644 $(shell echo *.tex) $(DESTDIR)$(DOCDIR)
- install -m 0644 $(shell echo *.sgml) $(DESTDIR)$(DOCDIR)
-
- clean:
-- rm -f *.aux *.log *.toc $(PSFILES) $(DVIFILES) *.html
-+ rm -f *.aux *.log *.toc $(PSFILES) $(DVIFILES) *.html $(TXTFILES)
-diff -Nur iproute2-2.6.15-060110/include/linux/pkt_sched.h iproute2-2.6.15-060110-owrt/include/linux/pkt_sched.h
---- iproute2-2.6.15-060110/include/linux/pkt_sched.h 2005-12-10 00:27:44.000000000 +0100
-+++ iproute2-2.6.15-060110-owrt/include/linux/pkt_sched.h 2006-03-22 12:49:35.000000000 +0100
-@@ -1,3 +1,409 @@
-+#if 0
-+#ifndef __LINUX_PKT_SCHED_H
-+#define __LINUX_PKT_SCHED_H
-+
-+/* Logical priority bands not depending on specific packet scheduler.
-+ Every scheduler will map them to real traffic classes, if it has
-+ no more precise mechanism to classify packets.
-+
-+ These numbers have no special meaning, though their coincidence
-+ with obsolete IPv6 values is not occasional :-). New IPv6 drafts
-+ preferred full anarchy inspired by diffserv group.
-+
-+ Note: TC_PRIO_BESTEFFORT does not mean that it is the most unhappy
-+ class, actually, as rule it will be handled with more care than
-+ filler or even bulk.
-+ */
-+
-+#define TC_PRIO_BESTEFFORT 0
-+#define TC_PRIO_FILLER 1
-+#define TC_PRIO_BULK 2
-+#define TC_PRIO_INTERACTIVE_BULK 4
-+#define TC_PRIO_INTERACTIVE 6
-+#define TC_PRIO_CONTROL 7
-+
-+#define TC_PRIO_MAX 15
-+
-+/* Generic queue statistics, available for all the elements.
-+ Particular schedulers may have also their private records.
-+ */
-+
-+struct tc_stats
-+{
-+ __u64 bytes; /* NUmber of enqueues bytes */
-+ __u32 packets; /* Number of enqueued packets */
-+ __u32 drops; /* Packets dropped because of lack of resources */
-+ __u32 overlimits; /* Number of throttle events when this
-+ * flow goes out of allocated bandwidth */
-+ __u32 bps; /* Current flow byte rate */
-+ __u32 pps; /* Current flow packet rate */
-+ __u32 qlen;
-+ __u32 backlog;
-+#ifdef __KERNEL__
-+ spinlock_t *lock;
-+#endif
-+};
-+
-+struct tc_estimator
-+{
-+ char interval;
-+ unsigned char ewma_log;
-+};
-+
-+/* "Handles"
-+ ---------
-+
-+ All the traffic control objects have 32bit identifiers, or "handles".
-+
-+ They can be considered as opaque numbers from user API viewpoint,
-+ but actually they always consist of two fields: major and
-+ minor numbers, which are interpreted by kernel specially,
-+ that may be used by applications, though not recommended.
-+
-+ F.e. qdisc handles always have minor number equal to zero,
-+ classes (or flows) have major equal to parent qdisc major, and
-+ minor uniquely identifying class inside qdisc.
-+
-+ Macros to manipulate handles:
-+ */
-+
-+#define TC_H_MAJ_MASK (0xFFFF0000U)
-+#define TC_H_MIN_MASK (0x0000FFFFU)
-+#define TC_H_MAJ(h) ((h)&TC_H_MAJ_MASK)
-+#define TC_H_MIN(h) ((h)&TC_H_MIN_MASK)
-+#define TC_H_MAKE(maj,min) (((maj)&TC_H_MAJ_MASK)|((min)&TC_H_MIN_MASK))
-+
-+#define TC_H_UNSPEC (0U)
-+#define TC_H_ROOT (0xFFFFFFFFU)
-+#define TC_H_INGRESS (0xFFFFFFF1U)
-+
-+struct tc_ratespec
-+{
-+ unsigned char cell_log;
-+ unsigned char __reserved;
-+ unsigned short feature;
-+ short addend;
-+ unsigned short mpu;
-+ __u32 rate;
-+};
-+
-+/* FIFO section */
-+
-+struct tc_fifo_qopt
-+{
-+ __u32 limit; /* Queue length: bytes for bfifo, packets for pfifo */
-+};
-+
-+/* PRIO section */
-+
-+#define TCQ_PRIO_BANDS 16
-+
-+struct tc_prio_qopt
-+{
-+ int bands; /* Number of bands */
-+ __u8 priomap[TC_PRIO_MAX+1]; /* Map: logical priority -> PRIO band */
-+};
-+
-+/* CSZ section */
-+
-+struct tc_csz_qopt
-+{
-+ int flows; /* Maximal number of guaranteed flows */
-+ unsigned char R_log; /* Fixed point position for round number */
-+ unsigned char delta_log; /* Log of maximal managed time interval */
-+ __u8 priomap[TC_PRIO_MAX+1]; /* Map: logical priority -> CSZ band */
-+};
-+
-+struct tc_csz_copt
-+{
-+ struct tc_ratespec slice;
-+ struct tc_ratespec rate;
-+ struct tc_ratespec peakrate;
-+ __u32 limit;
-+ __u32 buffer;
-+ __u32 mtu;
-+};
-+
-+enum
-+{
-+ TCA_CSZ_UNSPEC,
-+ TCA_CSZ_PARMS,
-+ TCA_CSZ_RTAB,
-+ TCA_CSZ_PTAB,
-+};
-+
-+/* TBF section */
-+
-+struct tc_tbf_qopt
-+{
-+ struct tc_ratespec rate;
-+ struct tc_ratespec peakrate;
-+ __u32 limit;
-+ __u32 buffer;
-+ __u32 mtu;
-+};
-+
-+enum
-+{
-+ TCA_TBF_UNSPEC,
-+ TCA_TBF_PARMS,
-+ TCA_TBF_RTAB,
-+ TCA_TBF_PTAB,
-+};
-+
-+
-+/* TEQL section */
-+
-+/* TEQL does not require any parameters */
-+
-+/* SFQ section */
-+
-+struct tc_sfq_qopt
-+{
-+ unsigned quantum; /* Bytes per round allocated to flow */
-+ int perturb_period; /* Period of hash perturbation */
-+ __u32 limit; /* Maximal packets in queue */
-+ unsigned divisor; /* Hash divisor */
-+ unsigned flows; /* Maximal number of flows */
-+};
-+
-+/*
-+ * NOTE: limit, divisor and flows are hardwired to code at the moment.
-+ *
-+ * limit=flows=128, divisor=1024;
-+ *
-+ * The only reason for this is efficiency, it is possible
-+ * to change these parameters in compile time.
-+ */
-+
-+/* RED section */
-+
-+enum
-+{
-+ TCA_RED_UNSPEC,
-+ TCA_RED_PARMS,
-+ TCA_RED_STAB,
-+};
-+
-+struct tc_red_qopt
-+{
-+ __u32 limit; /* HARD maximal queue length (bytes) */
-+ __u32 qth_min; /* Min average length threshold (bytes) */
-+ __u32 qth_max; /* Max average length threshold (bytes) */
-+ unsigned char Wlog; /* log(W) */
-+ unsigned char Plog; /* log(P_max/(qth_max-qth_min)) */
-+ unsigned char Scell_log; /* cell size for idle damping */
-+ unsigned char flags;
-+#define TC_RED_ECN 1
-+};
-+
-+struct tc_red_xstats
-+{
-+ __u32 early; /* Early drops */
-+ __u32 pdrop; /* Drops due to queue limits */
-+ __u32 other; /* Drops due to drop() calls */
-+ __u32 marked; /* Marked packets */
-+};
-+
-+/* GRED section */
-+
-+#define MAX_DPs 16
-+
-+enum
-+{
-+ TCA_GRED_UNSPEC,
-+ TCA_GRED_PARMS,
-+ TCA_GRED_STAB,
-+ TCA_GRED_DPS,
-+};
-+
-+#define TCA_SET_OFF TCA_GRED_PARMS
-+struct tc_gred_qopt
-+{
-+ __u32 limit; /* HARD maximal queue length (bytes)
-+*/
-+ __u32 qth_min; /* Min average length threshold (bytes)
-+*/
-+ __u32 qth_max; /* Max average length threshold (bytes)
-+*/
-+ __u32 DP; /* upto 2^32 DPs */
-+ __u32 backlog;
-+ __u32 qave;
-+ __u32 forced;
-+ __u32 early;
-+ __u32 other;
-+ __u32 pdrop;
-+
-+ unsigned char Wlog; /* log(W) */
-+ unsigned char Plog; /* log(P_max/(qth_max-qth_min)) */
-+ unsigned char Scell_log; /* cell size for idle damping */
-+ __u8 prio; /* prio of this VQ */
-+ __u32 packets;
-+ __u32 bytesin;
-+};
-+/* gred setup */
-+struct tc_gred_sopt
-+{
-+ __u32 DPs;
-+ __u32 def_DP;
-+ __u8 grio;
-+};
-+
-+/* HTB section */
-+#define TC_HTB_NUMPRIO 8
-+#define TC_HTB_MAXDEPTH 8
-+#define TC_HTB_PROTOVER 3 /* the same as HTB and TC's major */
-+
-+struct tc_htb_opt
-+{
-+ struct tc_ratespec rate;
-+ struct tc_ratespec ceil;
-+ __u32 buffer;
-+ __u32 cbuffer;
-+ __u32 quantum;
-+ __u32 level; /* out only */
-+ __u32 prio;
-+};
-+struct tc_htb_glob
-+{
-+ __u32 version; /* to match HTB/TC */
-+ __u32 rate2quantum; /* bps->quantum divisor */
-+ __u32 defcls; /* default class number */
-+ __u32 debug; /* debug flags */
-+
-+ /* stats */
-+ __u32 direct_pkts; /* count of non shapped packets */
-+};
-+enum
-+{
-+ TCA_HTB_UNSPEC,
-+ TCA_HTB_PARMS,
-+ TCA_HTB_INIT,
-+ TCA_HTB_CTAB,
-+ TCA_HTB_RTAB,
-+};
-+struct tc_htb_xstats
-+{
-+ __u32 lends;
-+ __u32 borrows;
-+ __u32 giants; /* too big packets (rate will not be accurate) */
-+ __u32 tokens;
-+ __u32 ctokens;
-+};
-+
-+/* CBQ section */
-+
-+#define TC_CBQ_MAXPRIO 8
-+#define TC_CBQ_MAXLEVEL 8
-+#define TC_CBQ_DEF_EWMA 5
-+
-+struct tc_cbq_lssopt
-+{
-+ unsigned char change;
-+ unsigned char flags;
-+#define TCF_CBQ_LSS_BOUNDED 1
-+#define TCF_CBQ_LSS_ISOLATED 2
-+ unsigned char ewma_log;
-+ unsigned char level;
-+#define TCF_CBQ_LSS_FLAGS 1
-+#define TCF_CBQ_LSS_EWMA 2
-+#define TCF_CBQ_LSS_MAXIDLE 4
-+#define TCF_CBQ_LSS_MINIDLE 8
-+#define TCF_CBQ_LSS_OFFTIME 0x10
-+#define TCF_CBQ_LSS_AVPKT 0x20
-+ __u32 maxidle;
-+ __u32 minidle;
-+ __u32 offtime;
-+ __u32 avpkt;
-+};
-+
-+struct tc_cbq_wrropt
-+{
-+ unsigned char flags;
-+ unsigned char priority;
-+ unsigned char cpriority;
-+ unsigned char __reserved;
-+ __u32 allot;
-+ __u32 weight;
-+};
-+
-+struct tc_cbq_ovl
-+{
-+ unsigned char strategy;
-+#define TC_CBQ_OVL_CLASSIC 0
-+#define TC_CBQ_OVL_DELAY 1
-+#define TC_CBQ_OVL_LOWPRIO 2
-+#define TC_CBQ_OVL_DROP 3
-+#define TC_CBQ_OVL_RCLASSIC 4
-+ unsigned char priority2;
-+ __u32 penalty;
-+};
-+
-+struct tc_cbq_police
-+{
-+ unsigned char police;
-+ unsigned char __res1;
-+ unsigned short __res2;
-+};
-+
-+struct tc_cbq_fopt
-+{
-+ __u32 split;
-+ __u32 defmap;
-+ __u32 defchange;
-+};
-+
-+struct tc_cbq_xstats
-+{
-+ __u32 borrows;
-+ __u32 overactions;
-+ __s32 avgidle;
-+ __s32 undertime;
-+};
-+
-+enum
-+{
-+ TCA_CBQ_UNSPEC,
-+ TCA_CBQ_LSSOPT,
-+ TCA_CBQ_WRROPT,
-+ TCA_CBQ_FOPT,
-+ TCA_CBQ_OVL_STRATEGY,
-+ TCA_CBQ_RATE,
-+ TCA_CBQ_RTAB,
-+ TCA_CBQ_POLICE,
-+};
-+
-+#define TCA_CBQ_MAX TCA_CBQ_POLICE
-+
-+/* dsmark section */
-+
-+enum {
-+ TCA_DSMARK_UNSPEC,
-+ TCA_DSMARK_INDICES,
-+ TCA_DSMARK_DEFAULT_INDEX,
-+ TCA_DSMARK_SET_TC_INDEX,
-+ TCA_DSMARK_MASK,
-+ TCA_DSMARK_VALUE
-+};
-+
-+#define TCA_DSMARK_MAX TCA_DSMARK_VALUE
-+
-+/* ATM section */
-+
-+enum {
-+ TCA_ATM_UNSPEC,
-+ TCA_ATM_FD, /* file/socket descriptor */
-+ TCA_ATM_PTR, /* pointer to descriptor - later */
-+ TCA_ATM_HDR, /* LL header */
-+ TCA_ATM_EXCESS, /* excess traffic class (0 for CLP) */
-+ TCA_ATM_ADDR, /* PVC address (for output only) */
-+ TCA_ATM_STATE /* VC state (ATM_VS_*; for output only) */
-+};
-+
-+#define TCA_ATM_MAX TCA_ATM_STATE
-+
-+#endif
-+#endif
- #ifndef __LINUX_PKT_SCHED_H
- #define __LINUX_PKT_SCHED_H
-
-@@ -466,4 +872,116 @@
-
- #define NETEM_DIST_SCALE 8192
-
-+/* WRR section */
-+
-+/* Other includes */
-+#include <linux/if_ether.h>
-+
-+// A sub weight and of a class
-+// All numbers are represented as parts of (2^64-1).
-+struct tc_wrr_class_weight {
-+ __u64 val; // Current value (0 is not valid)
-+ __u64 decr; // Value pr bytes (2^64-1 is not valid)
-+ __u64 incr; // Value pr seconds (2^64-1 is not valid)
-+ __u64 min; // Minimal value (0 is not valid)
-+ __u64 max; // Minimal value (0 is not valid)
-+
-+// The time where the above information was correct:
-+ time_t tim;
-+};
-+
-+// Packet send when modifying a class:
-+struct tc_wrr_class_modf {
-+ // Not-valid values are ignored.
-+ struct tc_wrr_class_weight weight1;
-+ struct tc_wrr_class_weight weight2;
-+};
-+
-+// Packet returned when quering a class:
-+struct tc_wrr_class_stats {
-+ char used; // If this is false the information below is invalid
-+
-+ struct tc_wrr_class_modf class_modf;
-+
-+ unsigned char addr[ETH_ALEN];
-+ char usemac; // True if addr is a MAC address, else it is an IP address
-+ // (this value is only for convience, it is always the same
-+ // value as in the qdisc)
-+ int heappos; // Current heap position or 0 if not in heap
-+ __u64 penal_ls; // Penalty value in heap (ls)
-+ __u64 penal_ms; // Penalty value in heap (ms)
-+};
-+
-+// Qdisc-wide penalty information (boolean values - 2 not valid)
-+struct tc_wrr_qdisc_weight {
-+ char weight_mode; // 0=No automatic change to weight
-+ // 1=Decrease normally
-+ // 2=Also multiply with number of machines
-+ // 3=Instead multiply with priority divided
-+ // with priority of the other.
-+ // -1=no change
-+};
-+
-+// Packet send when modifing a qdisc:
-+struct tc_wrr_qdisc_modf {
-+ // Not-valid values are ignored:
-+ struct tc_wrr_qdisc_weight weight1;
-+ struct tc_wrr_qdisc_weight weight2;
-+};
-+
-+// Packet send when creating a qdisc:
-+struct tc_wrr_qdisc_crt {
-+ struct tc_wrr_qdisc_modf qdisc_modf;
-+
-+ char srcaddr; // 1=lookup source, 0=lookup destination
-+ char usemac; // 1=Classify on MAC addresses, 0=classify on IP
-+ char usemasq; // 1=Classify based on masqgrading - only valid
-+ // if usemac is zero
-+ int bands_max; // Maximal number of bands (i.e.: classes)
-+ int proxy_maxconn;// If differnt from 0 then we support proxy remapping
-+ // of packets. And this is the number of maximal
-+ // concurrent proxy connections.
-+};
-+
-+// Packet returned when quering a qdisc:
-+struct tc_wrr_qdisc_stats {
-+ struct tc_wrr_qdisc_crt qdisc_crt;
-+ int proxy_curconn;
-+ int nodes_in_heap; // Current number of bands wanting to send something
-+ int bands_cur; // Current number of bands used (i.e.: MAC/IP addresses seen)
-+ int bands_reused; // Number of times this band has been reused.
-+ int packets_requed; // Number of times packets have been requeued.
-+ __u64 priosum; // Sum of priorities in heap where 1 is 2^32
-+};
-+
-+struct tc_wrr_qdisc_modf_std {
-+ // This indicates which of the tc_wrr_qdisc_modf structers this is:
-+ char proxy; // 0=This struct
-+
-+ // Should we also change a class?
-+ char change_class;
-+
-+ // Only valid if change_class is false
-+ struct tc_wrr_qdisc_modf qdisc_modf;
-+
-+ // Only valid if change_class is true:
-+ unsigned char addr[ETH_ALEN]; // Class to change (non-used bytes should be 0)
-+ struct tc_wrr_class_modf class_modf; // The change
-+};
-+
-+// Used for proxyrempping:
-+struct tc_wrr_qdisc_modf_proxy {
-+ // This indicates which of the tc_wrr_qdisc_modf structers this is:
-+ char proxy; // 1=This struct
-+
-+ // This is 1 if the proxyremap information should be reset
-+ char reset;
-+
-+ // changec is the number of elements in changes.
-+ int changec;
-+
-+ // This is an array of type ProxyRemapBlock:
-+ long changes[0];
-+};
-+
- #endif
-diff -Nur iproute2-2.6.15-060110/ip/iproute.c iproute2-2.6.15-060110-owrt/ip/iproute.c
---- iproute2-2.6.15-060110/ip/iproute.c 2005-10-13 00:49:50.000000000 +0200
-+++ iproute2-2.6.15-060110-owrt/ip/iproute.c 2006-03-22 12:49:35.000000000 +0100
-@@ -60,7 +60,7 @@
- fprintf(stderr, "OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]\n");
- fprintf(stderr, " [ rtt NUMBER ] [ rttvar NUMBER ]\n");
- fprintf(stderr, " [ window NUMBER] [ cwnd NUMBER ] [ ssthresh NUMBER ]\n");
-- fprintf(stderr, " [ realms REALM ]\n");
-+ fprintf(stderr, " [ realms REALM ] [ hoplimit NUMBER ] [ initcwnd NUMBER ]\n");
- fprintf(stderr, "TYPE := [ unicast | local | broadcast | multicast | throw |\n");
- fprintf(stderr, " unreachable | prohibit | blackhole | nat ]\n");
- fprintf(stderr, "TABLE_ID := [ local | main | default | all | NUMBER ]\n");
-@@ -497,6 +497,8 @@
- "cwnd",
- "advmss",
- "reordering",
-+ "hoplimit",
-+ "initcwnd",
- };
- static int hz;
- if (mxrta[i] == NULL)
-@@ -764,6 +766,30 @@
- invarg("\"reordering\" value is invalid\n", *argv);
- rta_addattr32(mxrta, sizeof(mxbuf), RTAX_REORDERING, reord);
- #endif
-+#ifdef RTAX_HOPLIMIT
-+ } else if (strcmp(*argv, "hoplimit") == 0) {
-+ unsigned hoplim;
-+ NEXT_ARG();
-+ if (strcmp(*argv, "lock") == 0) {
-+ mxlock |= (1<<RTAX_HOPLIMIT);
-+ NEXT_ARG();
-+ }
-+ if (get_unsigned(&hoplim, *argv, 0))
-+ invarg("\"hoplimit\" value is invalid\n", *argv);
-+ rta_addattr32(mxrta, sizeof(mxbuf), RTAX_HOPLIMIT, hoplim);
-+#endif
-+#ifdef RTAX_INITCWND
-+ } else if (strcmp(*argv, "initcwnd") == 0) {
-+ unsigned initcwnd;
-+ NEXT_ARG();
-+ if (strcmp(*argv, "lock") == 0) {
-+ mxlock |= (1<<RTAX_HOPLIMIT);
-+ NEXT_ARG();
-+ }
-+ if (get_unsigned(&initcwnd, *argv, 0))
-+ invarg("\"initcwnd\" value is invalid\n", *argv);
-+ rta_addattr32(mxrta, sizeof(mxbuf), RTAX_INITCWND, initcwnd);
-+#endif
- } else if (strcmp(*argv, "rtt") == 0) {
- unsigned rtt;
- NEXT_ARG();
-diff -Nur iproute2-2.6.15-060110/ip/iptunnel.c iproute2-2.6.15-060110-owrt/ip/iptunnel.c
---- iproute2-2.6.15-060110/ip/iptunnel.c 2005-02-10 19:31:18.000000000 +0100
-+++ iproute2-2.6.15-060110-owrt/ip/iptunnel.c 2006-03-22 12:49:35.000000000 +0100
-@@ -225,7 +225,7 @@
- NEXT_ARG();
- p->i_flags |= GRE_KEY;
- if (strchr(*argv, '.'))
-- p->o_key = get_addr32(*argv);
-+ p->i_key = get_addr32(*argv);
- else {
- if (get_unsigned(&uval, *argv, 0)<0) {
- fprintf(stderr, "invalid value of \"ikey\"\n");
-diff -Nur iproute2-2.6.15-060110/Makefile iproute2-2.6.15-060110-owrt/Makefile
---- iproute2-2.6.15-060110/Makefile 2005-07-09 00:08:47.000000000 +0200
-+++ iproute2-2.6.15-060110-owrt/Makefile 2006-03-22 12:51:29.000000000 +0100
-@@ -32,7 +32,7 @@
- LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a
-
- all: Config
-- @for i in $(SUBDIRS); \
-+ @set -e; for i in $(SUBDIRS); \
- do $(MAKE) $(MFLAGS) -C $$i; done
-
- Config:
-@@ -47,7 +47,7 @@
- $(DESTDIR)$(DOCDIR)/examples
- install -m 0644 $(shell find examples/diffserv -maxdepth 1 -type f) \
- $(DESTDIR)$(DOCDIR)/examples/diffserv
-- @for i in $(SUBDIRS) doc; do $(MAKE) -C $$i install; done
-+ @set -e; for i in $(SUBDIRS) doc; do $(MAKE) -C $$i install; done
- install -m 0644 $(shell find etc/iproute2 -maxdepth 1 -type f) $(DESTDIR)$(CONFDIR)
- install -m 0755 -d $(DESTDIR)$(MANDIR)/man8
- install -m 0644 $(shell find man/man8 -maxdepth 1 -type f) $(DESTDIR)$(MANDIR)/man8
-@@ -58,7 +58,7 @@
-
- clean:
- rm -f cscope.*
-- @for i in $(SUBDIRS) doc; \
-+ @set -e; for i in $(SUBDIRS) doc; \
- do $(MAKE) $(MFLAGS) -C $$i clean; done
-
- clobber: clean
-diff -Nur iproute2-2.6.15-060110/man/man8/ip.8 iproute2-2.6.15-060110-owrt/man/man8/ip.8
---- iproute2-2.6.15-060110/man/man8/ip.8 2006-01-03 20:25:29.000000000 +0100
-+++ iproute2-2.6.15-060110-owrt/man/man8/ip.8 2006-03-22 12:49:35.000000000 +0100
-@@ -1808,6 +1808,8 @@
- .RB "IP Command reference " ip-cref.ps
- .br
- .RB "IP tunnels " ip-cref.ps
-+.br
-+.RB http://lartc.org/
-
- .SH AUTHOR
- Original Manpage by Michail Litvak <mci@owl.openwall.com>
-diff -Nur iproute2-2.6.15-060110/man/man8/tc.8 iproute2-2.6.15-060110-owrt/man/man8/tc.8
---- iproute2-2.6.15-060110/man/man8/tc.8 2004-06-08 22:34:17.000000000 +0200
-+++ iproute2-2.6.15-060110-owrt/man/man8/tc.8 2006-03-22 12:49:35.000000000 +0100
-@@ -341,7 +341,7 @@
- .BR tc-pfifo (8),
- .BR tc-bfifo (8),
- .BR tc-pfifo_fast (8),
--.BR tc-filters (8)
-+.BR http://lartc.org/
-
- .SH AUTHOR
- Manpage maintained by bert hubert (ahu@ds9a.nl)
-diff -Nur iproute2-2.6.15-060110/misc/Makefile iproute2-2.6.15-060110-owrt/misc/Makefile
---- iproute2-2.6.15-060110/misc/Makefile 2005-06-23 19:39:57.000000000 +0200
-+++ iproute2-2.6.15-060110-owrt/misc/Makefile 2006-03-22 12:49:35.000000000 +0100
-@@ -1,7 +1,8 @@
- SSOBJ=ss.o ssfilter.o
- LNSTATOBJ=lnstat.o lnstat_util.o
-
--TARGETS=ss nstat ifstat rtacct arpd lnstat
-+#TARGETS=ss nstat ifstat rtacct arpd lnstat
-+TARGETS=ss nstat rtacct lnstat
-
- include ../Config
-
-diff -Nur iproute2-2.6.15-060110/misc/netbug iproute2-2.6.15-060110-owrt/misc/netbug
---- iproute2-2.6.15-060110/misc/netbug 2004-04-15 22:56:59.000000000 +0200
-+++ iproute2-2.6.15-060110-owrt/misc/netbug 2006-03-22 12:49:35.000000000 +0100
-@@ -1,23 +1,16 @@
- #! /bin/bash
-
-+set -e
-+
- echo -n "Send network configuration summary to [ENTER means kuznet@ms2.inr.ac.ru] "
- IFS="" read mail || exit 1
- [ -z "$mail" ] && mail=kuznet@ms2.inr.ac.ru
-
-+netbug=`mktemp -d -t netbug.XXXXXX` || {echo "$0: Cannot create temporary directory" >&2; exit 1; }
-+netbugtar=`tempfile -d $netbug --suffix=tar.gz` || {echo "$0: Cannot create temporary file" >&2; exit 1; }
-+tmppath=$netbug
-+trap "/bin/rm -rf $netbug $netbugtar" 0 1 2 3 13 15
-
--netbug=""
--while [ "$netbug" = "" ]; do
-- netbug=`echo netbug.$$.$RANDOM`
-- if [ -e /tmp/$netbug ]; then
-- netbug=""
-- fi
--done
--
--tmppath=/tmp/$netbug
--
--trap "rm -rf $tmppath $tmppath.tar.gz" 0 SIGINT
--
--mkdir $tmppath
- mkdir $tmppath/net
-
- cat /proc/slabinfo > $tmppath/slabinfo
-@@ -44,9 +37,8 @@
- fi
-
- cd /tmp
--tar c $netbug | gzip -9c > $netbug.tar.gz
--
--uuencode $netbug.tar.gz $netbug.tar.gz | mail -s $netbug "$mail"
-+tar c $tmppath | gzip -9c > $netbugtar
-+uuencode $netbugtar $netbugtar | mail -s $netbug "$mail"
-
- echo "Sending to <$mail>; subject is $netbug"
-
-diff -Nur iproute2-2.6.15-060110/tc/Makefile iproute2-2.6.15-060110-owrt/tc/Makefile
---- iproute2-2.6.15-060110/tc/Makefile 2005-07-06 00:11:37.000000000 +0200
-+++ iproute2-2.6.15-060110-owrt/tc/Makefile 2006-03-22 12:49:35.000000000 +0100
-@@ -11,6 +11,7 @@
- TCMODULES += q_prio.o
- TCMODULES += q_tbf.o
- TCMODULES += q_cbq.o
-+TCMODULES += q_wrr.o
- TCMODULES += f_rsvp.o
- TCMODULES += f_u32.o
- TCMODULES += f_route.o
-diff -Nur iproute2-2.6.15-060110/tc/q_htb.c iproute2-2.6.15-060110-owrt/tc/q_htb.c
---- iproute2-2.6.15-060110/tc/q_htb.c 2005-01-18 23:11:58.000000000 +0100
-+++ iproute2-2.6.15-060110-owrt/tc/q_htb.c 2006-03-22 12:49:35.000000000 +0100
-@@ -1,3 +1,311 @@
-+#if 0
-+/*
-+ * q_htb.c HTB.
-+ *
-+ * 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.
-+ *
-+ * Authors: Martin Devera, devik@cdi.cz
-+ *
-+ */
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <syslog.h>
-+#include <fcntl.h>
-+#include <sys/socket.h>
-+#include <netinet/in.h>
-+#include <arpa/inet.h>
-+#include <string.h>
-+
-+#include "utils.h"
-+#include "tc_util.h"
-+
-+#define HTB_TC_VER 0x30003
-+#if HTB_TC_VER >> 16 != TC_HTB_PROTOVER
-+#error "Different kernel and TC HTB versions"
-+#endif
-+
-+static void explain(void)
-+{
-+ fprintf(stderr, "Usage: ... qdisc add ... htb [default N] [r2q N]\n"
-+ " default minor id of class to which unclassified packets are sent {0}\n"
-+ " r2q DRR quantums are computed as rate in Bps/r2q {10}\n"
-+ " debug string of 16 numbers each 0-3 {0}\n\n"
-+ "... class add ... htb rate R1 burst B1 [prio P] [slot S] [pslot PS]\n"
-+ " [ceil R2] [cburst B2] [mtu MTU] [quantum Q]\n"
-+ " rate rate allocated to this class (class can still borrow)\n"
-+ " burst max bytes burst which can be accumulated during idle period {computed}\n"
-+ " ceil definite upper class rate (no borrows) {rate}\n"
-+ " cburst burst but for ceil {computed}\n"
-+ " mtu max packet size we create rate map for {1600}\n"
-+ " prio priority of leaf; lower are served first {0}\n"
-+ " quantum how much bytes to serve from leaf at once {use r2q}\n"
-+ "\nTC HTB version %d.%d\n",HTB_TC_VER>>16,HTB_TC_VER&0xffff
-+ );
-+}
-+
-+static void explain1(char *arg)
-+{
-+ fprintf(stderr, "Illegal \"%s\"\n", arg);
-+ explain();
-+}
-+
-+
-+#define usage() return(-1)
-+
-+static int htb_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n)
-+{
-+ struct tc_htb_glob opt;
-+ struct rtattr *tail;
-+ unsigned i; char *p;
-+ memset(&opt,0,sizeof(opt));
-+ opt.rate2quantum = 10;
-+ opt.version = 3;
-+
-+ while (argc > 0) {
-+ if (matches(*argv, "r2q") == 0) {
-+ NEXT_ARG();
-+ if (get_u32(&opt.rate2quantum, *argv, 10)) {
-+ explain1("r2q"); return -1;
-+ }
-+ } else if (matches(*argv, "default") == 0) {
-+ NEXT_ARG();
-+ if (get_u32(&opt.defcls, *argv, 16)) {
-+ explain1("default"); return -1;
-+ }
-+ } else if (matches(*argv, "debug") == 0) {
-+ NEXT_ARG(); p = *argv;
-+ for (i=0; i<16; i++,p++) {
-+ if (*p<'0' || *p>'3') break;
-+ opt.debug |= (*p-'0')<<(2*i);
-+ }
-+ } else {
-+ fprintf(stderr, "What is \"%s\"?\n", *argv);
-+ explain();
-+ return -1;
-+ }
-+ argc--; argv++;
-+ }
-+ tail = (struct rtattr*)(((void*)n)+NLMSG_ALIGN(n->nlmsg_len));
-+ addattr_l(n, 1024, TCA_OPTIONS, NULL, 0);
-+ addattr_l(n, 2024, TCA_HTB_INIT, &opt, NLMSG_ALIGN(sizeof(opt)));
-+ tail->rta_len = (((void*)n)+NLMSG_ALIGN(n->nlmsg_len)) - (void*)tail;
-+ return 0;
-+}
-+
-+static int htb_parse_class_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n)
-+{
-+ int ok=0;
-+ struct tc_htb_opt opt;
-+ __u32 rtab[256],ctab[256];
-+ unsigned buffer=0,cbuffer=0;
-+ int cell_log=-1,ccell_log = -1,mtu;
-+ struct rtattr *tail;
-+
-+ memset(&opt, 0, sizeof(opt)); mtu = 1600; /* eth packet len */
-+
-+ while (argc > 0) {
-+ if (matches(*argv, "prio") == 0) {
-+ NEXT_ARG();
-+ if (get_u32(&opt.prio, *argv, 10)) {
-+ explain1("prio"); return -1;
-+ }
-+ ok++;
-+ } else if (matches(*argv, "mtu") == 0) {
-+ NEXT_ARG();
-+ if (get_u32(&mtu, *argv, 10)) {
-+ explain1("mtu"); return -1;
-+ }
-+ } else if (matches(*argv, "quantum") == 0) {
-+ NEXT_ARG();
-+ if (get_u32(&opt.quantum, *argv, 10)) {
-+ explain1("quantum"); return -1;
-+ }
-+ } else if (matches(*argv, "burst") == 0 ||
-+ strcmp(*argv, "buffer") == 0 ||
-+ strcmp(*argv, "maxburst") == 0) {
-+ NEXT_ARG();
-+ if (get_size_and_cell(&buffer, &cell_log, *argv) < 0) {
-+ explain1("buffer");
-+ return -1;
-+ }
-+ ok++;
-+ } else if (matches(*argv, "cburst") == 0 ||
-+ strcmp(*argv, "cbuffer") == 0 ||
-+ strcmp(*argv, "cmaxburst") == 0) {
-+ NEXT_ARG();
-+ if (get_size_and_cell(&cbuffer, &ccell_log, *argv) < 0) {
-+ explain1("cbuffer");
-+ return -1;
-+ }
-+ ok++;
-+ } else if (strcmp(*argv, "ceil") == 0) {
-+ NEXT_ARG();
-+ if (opt.ceil.rate) {
-+ fprintf(stderr, "Double \"ceil\" spec\n");
-+ return -1;
-+ }
-+ if (get_rate(&opt.ceil.rate, *argv)) {
-+ explain1("ceil");
-+ return -1;
-+ }
-+ ok++;
-+ } else if (strcmp(*argv, "rate") == 0) {
-+ NEXT_ARG();
-+ if (opt.rate.rate) {
-+ fprintf(stderr, "Double \"rate\" spec\n");
-+ return -1;
-+ }
-+ if (get_rate(&opt.rate.rate, *argv)) {
-+ explain1("rate");
-+ return -1;
-+ }
-+ ok++;
-+ } else if (strcmp(*argv, "help") == 0) {
-+ explain();
-+ return -1;
-+ } else {
-+ fprintf(stderr, "What is \"%s\"?\n", *argv);
-+ explain();
-+ return -1;
-+ }
-+ argc--; argv++;
-+ }
-+
-+/* if (!ok)
-+ return 0;*/
-+
-+ if (opt.rate.rate == 0) {
-+ fprintf(stderr, "\"rate\" is required.\n");
-+ return -1;
-+ }
-+ /* if ceil params are missing, use the same as rate */
-+ if (!opt.ceil.rate) opt.ceil = opt.rate;
-+
-+ /* compute minimal allowed burst from rate; mtu is added here to make
-+ sute that buffer is larger than mtu and to have some safeguard space */
-+ if (!buffer) buffer = opt.rate.rate / HZ + mtu;
-+ if (!cbuffer) cbuffer = opt.ceil.rate / HZ + mtu;
-+
-+ if ((cell_log = tc_calc_rtable(opt.rate.rate, rtab, cell_log, mtu, 0)) < 0) {
-+ fprintf(stderr, "htb: failed to calculate rate table.\n");
-+ return -1;
-+ }
-+ opt.buffer = tc_calc_xmittime(opt.rate.rate, buffer);
-+ opt.rate.cell_log = cell_log;
-+
-+ if ((ccell_log = tc_calc_rtable(opt.ceil.rate, ctab, cell_log, mtu, 0)) < 0) {
-+ fprintf(stderr, "htb: failed to calculate ceil rate table.\n");
-+ return -1;
-+ }
-+ opt.cbuffer = tc_calc_xmittime(opt.ceil.rate, cbuffer);
-+ opt.ceil.cell_log = ccell_log;
-+
-+ tail = (struct rtattr*)(((void*)n)+NLMSG_ALIGN(n->nlmsg_len));
-+ addattr_l(n, 1024, TCA_OPTIONS, NULL, 0);
-+ addattr_l(n, 2024, TCA_HTB_PARMS, &opt, sizeof(opt));
-+ addattr_l(n, 3024, TCA_HTB_RTAB, rtab, 1024);
-+ addattr_l(n, 4024, TCA_HTB_CTAB, ctab, 1024);
-+ tail->rta_len = (((void*)n)+NLMSG_ALIGN(n->nlmsg_len)) - (void*)tail;
-+ return 0;
-+}
-+
-+static int htb_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
-+{
-+ struct rtattr *tb[TCA_HTB_RTAB+1];
-+ struct tc_htb_opt *hopt;
-+ struct tc_htb_glob *gopt;
-+ double buffer,cbuffer;
-+ SPRINT_BUF(b1);
-+ SPRINT_BUF(b2);
-+
-+ if (opt == NULL)
-+ return 0;
-+
-+ memset(tb, 0, sizeof(tb));
-+ parse_rtattr(tb, TCA_HTB_RTAB, RTA_DATA(opt), RTA_PAYLOAD(opt));
-+
-+ if (tb[TCA_HTB_PARMS]) {
-+
-+ hopt = RTA_DATA(tb[TCA_HTB_PARMS]);
-+ if (RTA_PAYLOAD(tb[TCA_HTB_PARMS]) < sizeof(*hopt)) return -1;
-+
-+ if (!hopt->level) {
-+ fprintf(f, "prio %d ", (int)hopt->prio);
-+ if (show_details)
-+ fprintf(f, "quantum %d ", (int)hopt->quantum);
-+ }
-+ fprintf(f, "rate %s ", sprint_rate(hopt->rate.rate, b1));
-+ buffer = ((double)hopt->rate.rate*tc_core_tick2usec(hopt->buffer))/1000000;
-+ fprintf(f, "ceil %s ", sprint_rate(hopt->ceil.rate, b1));
-+ cbuffer = ((double)hopt->ceil.rate*tc_core_tick2usec(hopt->cbuffer))/1000000;
-+ if (show_details) {
-+ fprintf(f, "burst %s/%u mpu %s ", sprint_size(buffer, b1),
-+ 1<<hopt->rate.cell_log, sprint_size(hopt->rate.mpu, b2));
-+ fprintf(f, "cburst %s/%u mpu %s ", sprint_size(cbuffer, b1),
-+ 1<<hopt->ceil.cell_log, sprint_size(hopt->ceil.mpu, b2));
-+ fprintf(f, "level %d ", (int)hopt->level);
-+ } else {
-+ fprintf(f, "burst %s ", sprint_size(buffer, b1));
-+ fprintf(f, "cburst %s ", sprint_size(cbuffer, b1));
-+ }
-+ if (show_raw)
-+ fprintf(f, "buffer [%08x] cbuffer [%08x] ",
-+ hopt->buffer,hopt->cbuffer);
-+ }
-+ if (tb[TCA_HTB_INIT]) {
-+ gopt = RTA_DATA(tb[TCA_HTB_INIT]);
-+ if (RTA_PAYLOAD(tb[TCA_HTB_INIT]) < sizeof(*gopt)) return -1;
-+
-+ fprintf(f, "r2q %d default %x direct_packets_stat %u",
-+ gopt->rate2quantum,gopt->defcls,gopt->direct_pkts);
-+ if (show_details)
-+ fprintf(f," ver %d.%d",gopt->version >> 16,gopt->version & 0xffff);
-+ }
-+ return 0;
-+}
-+
-+static int htb_print_xstats(struct qdisc_util *qu, FILE *f, struct rtattr *xstats)
-+{
-+ struct tc_htb_xstats *st;
-+ if (xstats == NULL)
-+ return 0;
-+
-+ if (RTA_PAYLOAD(xstats) < sizeof(*st))
-+ return -1;
-+
-+ st = RTA_DATA(xstats);
-+ fprintf(f, " lended: %u borrowed: %u giants: %u\n",
-+ st->lends,st->borrows,st->giants);
-+ fprintf(f, " tokens: %d ctokens: %d\n", st->tokens,st->ctokens);
-+ return 0;
-+}
-+
-+struct qdisc_util htb_util = {
-+ NULL,
-+ "htb",
-+ htb_parse_opt,
-+ htb_print_opt,
-+ htb_print_xstats,
-+ htb_parse_class_opt,
-+ htb_print_opt,
-+};
-+
-+/* for testing of old one */
-+struct qdisc_util htb2_util = {
-+ NULL,
-+ "htb2",
-+ htb_parse_opt,
-+ htb_print_opt,
-+ htb_print_xstats,
-+ htb_parse_class_opt,
-+ htb_print_opt,
-+};
-+#endif
- /*
- * q_htb.c HTB.
- *
-diff -Nur iproute2-2.6.15-060110/tc/q_wrr.c iproute2-2.6.15-060110-owrt/tc/q_wrr.c
---- iproute2-2.6.15-060110/tc/q_wrr.c 1970-01-01 01:00:00.000000000 +0100
-+++ iproute2-2.6.15-060110-owrt/tc/q_wrr.c 2006-03-22 12:49:35.000000000 +0100
-@@ -0,0 +1,322 @@
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <syslog.h>
-+#include <fcntl.h>
-+#include <sys/socket.h>
-+#include <netinet/in.h>
-+#include <arpa/inet.h>
-+#include <string.h>
-+#include <math.h>
-+
-+#include "utils.h"
-+#include "tc_util.h"
-+
-+#define usage() return(-1)
-+
-+// Returns -1 on error
-+static int wrr_parse_qdisc_weight(int argc, char** argv,
-+ struct tc_wrr_qdisc_modf* opt) {
-+ int i;
-+
-+ opt->weight1.weight_mode=-1;
-+ opt->weight2.weight_mode=-1;
-+
-+ for(i=0; i<argc; i++) {
-+ if(!memcmp(argv[i],"wmode1=",7)) {
-+ opt->weight1.weight_mode=atoi(argv[i]+7);
-+ } else if(!memcmp(argv[i],"wmode2=",7)) {
-+ opt->weight2.weight_mode=atoi(argv[i]+7);
-+ } else {
-+ printf("Usage: ... [wmode1=0|1|2|3] [wmode2=0|1|2|3]\n");
-+ return -1;
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int wrr_parse_class_modf(int argc, char** argv,
-+ struct tc_wrr_class_modf* modf) {
-+ int i;
-+
-+ if(argc<1) {
-+ fprintf(stderr, "Usage: ... [weight1=val] [decr1=val] [incr1=val] [min1=val] [max1=val] [val2=val] ...\n");
-+ fprintf(stderr, " The values can be floating point like 0.42 or divisions like 42/100\n");
-+ return -1;
-+ }
-+
-+ // Set meaningless values:
-+ modf->weight1.val=0;
-+ modf->weight1.decr=(__u64)-1;
-+ modf->weight1.incr=(__u64)-1;
-+ modf->weight1.min=0;
-+ modf->weight1.max=0;
-+ modf->weight2.val=0;
-+ modf->weight2.decr=(__u64)-1;
-+ modf->weight2.incr=(__u64)-1;
-+ modf->weight2.min=0;
-+ modf->weight2.max=0;
-+
-+ // And read values:
-+ for(i=0; i<argc; i++) {
-+ char arg[80];
-+ char* name,*value1=0,*value2=0;
-+ long double f_val1,f_val2=1,value;
-+ if(strlen(argv[i])>=sizeof(arg)) {
-+ fprintf(stderr,"Argument too long: %s\n",argv[i]);
-+ return -1;
-+ }
-+ strcpy(arg,argv[i]);
-+
-+ name=strtok(arg,"=");
-+ if(name) value1=strtok(0,"/");
-+ if(value1) value2=strtok(0,"");
-+
-+ if(!value1) {
-+ fprintf(stderr,"No = found in argument: %s\n",argv[i]);
-+ return -1;
-+ }
-+
-+ f_val1=atof(value1);
-+ if(value2) f_val2=atof(value2);
-+
-+ if(f_val2==0) {
-+ fprintf(stderr,"Division by 0\n");
-+ return -1;
-+ }
-+
-+ value=f_val1/f_val2;
-+ if(value>1) value=1;
-+ if(value<0) value=0;
-+ value*=((__u64)-1);
-+
-+ // And find the value set
-+ if(!strcmp(name,"weight1")) modf->weight1.val=value;
-+ else if(!strcmp(name,"decr1")) modf->weight1.decr=value;
-+ else if(!strcmp(name,"incr1")) modf->weight1.incr=value;
-+ else if(!strcmp(name,"min1")) modf->weight1.min=value;
-+ else if(!strcmp(name,"max1")) modf->weight1.max=value;
-+ else if(!strcmp(name,"weight2")) modf->weight2.val=value;
-+ else if(!strcmp(name,"decr2")) modf->weight2.decr=value;
-+ else if(!strcmp(name,"incr2")) modf->weight2.incr=value;
-+ else if(!strcmp(name,"min2")) modf->weight2.min=value;
-+ else if(!strcmp(name,"max2")) modf->weight2.max=value;
-+ else {
-+ fprintf(stderr,"illegal value: %s\n",name);
-+ return -1;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+static int wrr_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n)
-+{
-+ if(n->nlmsg_flags & NLM_F_CREATE) {
-+ // This is a create request:
-+ struct tc_wrr_qdisc_crt opt;
-+
-+ int sour,dest,ip,mac,masq;
-+
-+ if(argc<4) {
-+ fprintf(stderr, "Usage: ... wrr sour|dest ip|masq|mac maxclasses proxymaxcon [penalty-setup]\n");
-+ return -1;
-+ }
-+
-+ // Read sour/dest:
-+ memset(&opt,0,sizeof(opt));
-+ sour=!strcmp(argv[0],"sour");
-+ dest=!strcmp(argv[0],"dest");
-+
-+ if(!sour && !dest) {
-+ fprintf(stderr,"sour or dest must be specified\n");
-+ return -1;
-+ }
-+
-+ // Read ip/mac
-+ ip=!strcmp(argv[1],"ip");
-+ mac=!strcmp(argv[1],"mac");
-+ masq=!strcmp(argv[1],"masq");
-+
-+ if(!ip && !mac && !masq) {
-+ fprintf(stderr,"ip, masq or mac must be specified\n");
-+ return -1;
-+ }
-+
-+ opt.srcaddr=sour;
-+ opt.usemac=mac;
-+ opt.usemasq=masq;
-+ opt.bands_max=atoi(argv[2]);
-+
-+ opt.proxy_maxconn=atoi(argv[3]);
-+
-+ // Read weights:
-+ if(wrr_parse_qdisc_weight(argc-4,argv+4,&opt.qdisc_modf)<0) return -1;
-+ if(opt.qdisc_modf.weight1.weight_mode==-1) opt.qdisc_modf.weight1.weight_mode=0;
-+ if(opt.qdisc_modf.weight2.weight_mode==-1) opt.qdisc_modf.weight2.weight_mode=0;
-+
-+ addattr_l(n, 1024, TCA_OPTIONS, &opt, sizeof(opt));
-+ } else {
-+ struct tc_wrr_qdisc_modf_std opt;
-+ char qdisc,class;
-+
-+ // This is a modify request:
-+ if(argc<1) {
-+ fprintf(stderr,"... qdisc ... or ... class ...\n");
-+ return -1;
-+ }
-+
-+ qdisc=!strcmp(argv[0],"qdisc");
-+ class=!strcmp(argv[0],"class");
-+
-+ if(!qdisc && !class) {
-+ fprintf(stderr,"qdisc or class must be specified\n");
-+ return -1;
-+ }
-+
-+ argc--;
-+ argv++;
-+
-+ opt.proxy=0;
-+
-+ if(qdisc) {
-+ opt.change_class=0;
-+ if(wrr_parse_qdisc_weight(argc, argv, &opt.qdisc_modf)<0) return -1;
-+ } else {
-+ int a0,a1,a2,a3,a4=0,a5=0;
-+
-+ opt.change_class=1;
-+
-+ if(argc<1) {
-+ fprintf(stderr,"... <mac>|<ip>|<masq> ...\n");
-+ return -1;
-+ }
-+ memset(opt.addr,0,sizeof(opt.addr));
-+
-+ if((sscanf(argv[0],"%i.%i.%i.%i",&a0,&a1,&a2,&a3)!=4) &&
-+ (sscanf(argv[0],"%x:%x:%x:%x:%x:%x",&a0,&a1,&a2,&a3,&a4,&a5)!=6)) {
-+ fprintf(stderr,"Wrong format of mac or ip address\n");
-+ return -1;
-+ }
-+
-+ opt.addr[0]=a0; opt.addr[1]=a1; opt.addr[2]=a2;
-+ opt.addr[3]=a3; opt.addr[4]=a4; opt.addr[5]=a5;
-+
-+ if(wrr_parse_class_modf(argc-1, argv+1, &opt.class_modf)<0) return -1;
-+ }
-+
-+ addattr_l(n, 1024, TCA_OPTIONS, &opt, sizeof(opt));
-+ }
-+ return 0;
-+}
-+
-+static int wrr_parse_copt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n) {
-+ struct tc_wrr_class_modf opt;
-+
-+ memset(&opt,0,sizeof(opt));
-+ if(wrr_parse_class_modf(argc,argv,&opt)<0) return -1;
-+
-+ addattr_l(n, 1024, TCA_OPTIONS, &opt, sizeof(opt));
-+ return 0;
-+}
-+
-+static int wrr_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
-+{
-+ struct tc_wrr_qdisc_stats *qopt;
-+
-+ if (opt == NULL)
-+ return 0;
-+
-+ if (RTA_PAYLOAD(opt) < sizeof(*qopt))
-+ return -1;
-+ qopt = RTA_DATA(opt);
-+
-+ fprintf(f,"\n (%s/%s) (maxclasses %i) (usedclasses %i) (reused classes %i)\n",
-+ qopt->qdisc_crt.srcaddr ? "sour" : "dest",
-+ qopt->qdisc_crt.usemac ? "mac" : (qopt->qdisc_crt.usemasq ? "masq" : "ip"),
-+ qopt->qdisc_crt.bands_max,
-+ qopt->bands_cur,
-+ qopt->bands_reused
-+ );
-+
-+ if(qopt->qdisc_crt.proxy_maxconn) {
-+ fprintf(f," (proxy maxcon %i) (proxy curcon %i)\n",
-+ qopt->qdisc_crt.proxy_maxconn,qopt->proxy_curconn);
-+ }
-+
-+ fprintf(f," (waiting classes %i) (packets requeued %i) (priosum: %Lg)\n",
-+ qopt->nodes_in_heap,
-+ qopt->packets_requed,
-+ qopt->priosum/((long double)((__u32)-1))
-+ );
-+
-+ fprintf(f," (wmode1 %i) (wmode2 %i) \n",
-+ qopt->qdisc_crt.qdisc_modf.weight1.weight_mode,
-+ qopt->qdisc_crt.qdisc_modf.weight2.weight_mode);
-+
-+ return 0;
-+}
-+
-+static int wrr_print_copt(struct qdisc_util *qu, FILE *f, struct rtattr *opt) {
-+ struct tc_wrr_class_stats *copt;
-+ long double d=(__u64)-1;
-+
-+ if (opt == NULL) return 0;
-+
-+ if (RTA_PAYLOAD(opt) < sizeof(*copt))
-+ return -1;
-+ copt = RTA_DATA(opt);
-+
-+ if(!copt->used) {
-+ fprintf(f,"(unused)");
-+ return 0;
-+ }
-+
-+ if(copt->usemac) {
-+ fprintf(f,"\n (address: %.2X:%.2X:%.2X:%.2X:%.2X:%.2X)\n",
-+ copt->addr[0],copt->addr[1],copt->addr[2],
-+ copt->addr[3],copt->addr[4],copt->addr[5]);
-+ } else {
-+ fprintf(f,"\n (address: %i.%i.%i.%i)\n",copt->addr[0],copt->addr[1],copt->addr[2],copt->addr[3]);
-+ }
-+
-+ fprintf(f," (total weight: %Lg) (current position: %i) (counters: %u %u : %u %u)\n",
-+ (copt->class_modf.weight1.val/d)*(copt->class_modf.weight2.val/d),
-+ copt->heappos,
-+ (unsigned)(copt->penal_ms>>32),
-+ (unsigned)(copt->penal_ms & 0xffffffffU),
-+ (unsigned)(copt->penal_ls>>32),
-+ (unsigned)(copt->penal_ls & 0xffffffffU)
-+ );
-+
-+ fprintf(f," Pars 1: (weight %Lg) (decr: %Lg) (incr: %Lg) (min: %Lg) (max: %Lg)\n",
-+ copt->class_modf.weight1.val/d,
-+ copt->class_modf.weight1.decr/d,
-+ copt->class_modf.weight1.incr/d,
-+ copt->class_modf.weight1.min/d,
-+ copt->class_modf.weight1.max/d);
-+
-+ fprintf(f," Pars 2: (weight %Lg) (decr: %Lg) (incr: %Lg) (min: %Lg) (max: %Lg)",
-+ copt->class_modf.weight2.val/d,
-+ copt->class_modf.weight2.decr/d,
-+ copt->class_modf.weight2.incr/d,
-+ copt->class_modf.weight2.min/d,
-+ copt->class_modf.weight2.max/d);
-+
-+ return 0;
-+}
-+
-+static int wrr_print_xstats(struct qdisc_util *qu, FILE *f, struct rtattr *xstats)
-+{
-+ return 0;
-+}
-+
-+
-+struct qdisc_util wrr_qdisc_util = {
-+ .id = "wrr",
-+ .parse_qopt = wrr_parse_opt,
-+ .print_qopt = wrr_print_opt,
-+ .print_xstats = wrr_print_xstats,
-+ .parse_copt = wrr_parse_copt,
-+ .print_copt = wrr_print_copt
-+};
diff --git a/openwrt/package/iproute2/patches/001-iproute2-2.6.11_Config.patch b/openwrt/package/iproute2/patches/001-iproute2-2.6.11_Config.patch
deleted file mode 100644
index c1491f455f..0000000000
--- a/openwrt/package/iproute2/patches/001-iproute2-2.6.11_Config.patch
+++ /dev/null
@@ -1,8 +0,0 @@
-diff -ruN iproute2-2.6.9-old/Config iproute2-2.6.9-new/Config
---- iproute2-2.6.9-old/Config 1970-01-01 01:00:00.000000000 +0100
-+++ iproute2-2.6.9-new/Config 2005-03-22 23:56:56.000000000 +0100
-@@ -0,0 +1,4 @@
-+# Fixed config to disable ATM support even if present on host system
-+TC_CONFIG_ATM:=n
-+TC_CONFIG_ACTION_GACT=y
-+TC_CONFIG_ACTION_PROB=y
diff --git a/openwrt/package/iproute2/patches/002-iproute2-ipxfrm_no_sctp.patch b/openwrt/package/iproute2/patches/002-iproute2-ipxfrm_no_sctp.patch
deleted file mode 100644
index 34eaeb0553..0000000000
--- a/openwrt/package/iproute2/patches/002-iproute2-ipxfrm_no_sctp.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -Nur iproute2-2.6.11-050330/ip/ipxfrm.c iproute2-2.6.11-050330.new/ip/ipxfrm.c
---- iproute2-2.6.11-050330/ip/ipxfrm.c 2005-04-01 21:58:11.000000000 +0200
-+++ iproute2-2.6.11-050330.new/ip/ipxfrm.c 2005-05-27 12:27:44.000000000 +0200
-@@ -444,7 +444,6 @@
- switch (sel->proto) {
- case IPPROTO_TCP:
- case IPPROTO_UDP:
-- case IPPROTO_SCTP:
- default: /* XXX */
- if (sel->sport_mask)
- fprintf(fp, "sport %u ", ntohs(sel->sport));
-@@ -998,7 +997,6 @@
- switch (sel->proto) {
- case IPPROTO_TCP:
- case IPPROTO_UDP:
-- case IPPROTO_SCTP:
- break;
- default:
- fprintf(stderr, "\"sport\" and \"dport\" are invalid with proto=%s\n", strxf_proto(sel->proto));
diff --git a/openwrt/package/iproute2/patches/003-iproute2-htb_overhead.patch b/openwrt/package/iproute2/patches/003-iproute2-htb_overhead.patch
deleted file mode 100644
index 77ab983835..0000000000
--- a/openwrt/package/iproute2/patches/003-iproute2-htb_overhead.patch
+++ /dev/null
@@ -1,96 +0,0 @@
---- iproute2-2.6.11-050330.new/tc/q_htb.c Sun May 12 22:18:27 2002
-+++ iproute2-2.6.11-050330.new/tc/q_htb.c Sat Oct 18 00:05:18 2003
-@@ -34,10 +34,14 @@
- " default minor id of class to which unclassified packets are sent {0}\n"
- " r2q DRR quantums are computed as rate in Bps/r2q {10}\n"
- " debug string of 16 numbers each 0-3 {0}\n\n"
-- "... class add ... htb rate R1 burst B1 [prio P] [slot S] [pslot PS]\n"
-+ "... class add ... htb rate R1 [burst B1] [mpu B] [overhead O]\n"
-+ " [prio P] [slot S] [pslot PS]\n"
- " [ceil R2] [cburst B2] [mtu MTU] [quantum Q]\n"
- " rate rate allocated to this class (class can still borrow)\n"
- " burst max bytes burst which can be accumulated during idle period {computed}\n"
-+ " mpu minimum packet size used in rate computations\n"
-+ " overhead per-packet size overhead used in rate computations\n"
-+
- " ceil definite upper class rate (no borrows) {rate}\n"
- " cburst burst but for ceil {computed}\n"
- " mtu max packet size we create rate map for {1600}\n"
-@@ -102,7 +106,9 @@
- struct tc_htb_opt opt;
- __u32 rtab[256],ctab[256];
- unsigned buffer=0,cbuffer=0;
-- int cell_log=-1,ccell_log = -1,mtu;
-+ int cell_log=-1,ccell_log = -1;
-+ unsigned mtu, mpu;
-+ unsigned char mpu8 = 0, overhead = 0;
- struct rtattr *tail;
-
- memset(&opt, 0, sizeof(opt)); mtu = 1600; /* eth packet len */
-@@ -119,6 +125,16 @@
- if (get_u32(&mtu, *argv, 10)) {
- explain1("mtu"); return -1;
- }
-+ } else if (matches(*argv, "mpu") == 0) {
-+ NEXT_ARG();
-+ if (get_u8(&mpu8, *argv, 10)) {
-+ explain1("mpu"); return -1;
-+ }
-+ } else if (matches(*argv, "overhead") == 0) {
-+ NEXT_ARG();
-+ if (get_u8(&overhead, *argv, 10)) {
-+ explain1("overhead"); return -1;
-+ }
- } else if (matches(*argv, "quantum") == 0) {
- NEXT_ARG();
- if (get_u32(&opt.quantum, *argv, 10)) {
-@@ -190,14 +206,18 @@
- if (!buffer) buffer = opt.rate.rate / HZ + mtu;
- if (!cbuffer) cbuffer = opt.ceil.rate / HZ + mtu;
-
-- if ((cell_log = tc_calc_rtable(opt.rate.rate, rtab, cell_log, mtu, 0)) < 0) {
-+/* encode overhead and mpu, 8 bits each, into lower 16 bits */
-+ mpu = (unsigned)mpu8 | (unsigned)overhead << 8;
-+ opt.ceil.mpu = mpu; opt.rate.mpu = mpu;
-+
-+ if ((cell_log = tc_calc_rtable(opt.rate.rate, rtab, cell_log, mtu, mpu)) < 0) {
- fprintf(stderr, "htb: failed to calculate rate table.\n");
- return -1;
- }
- opt.buffer = tc_calc_xmittime(opt.rate.rate, buffer);
- opt.rate.cell_log = cell_log;
-
-- if ((ccell_log = tc_calc_rtable(opt.ceil.rate, ctab, cell_log, mtu, 0)) < 0) {
-+ if ((ccell_log = tc_calc_rtable(opt.ceil.rate, ctab, cell_log, mtu, mpu)) < 0) {
- fprintf(stderr, "htb: failed to calculate ceil rate table.\n");
- return -1;
- }
-@@ -221,6 +241,7 @@
- double buffer,cbuffer;
- SPRINT_BUF(b1);
- SPRINT_BUF(b2);
-+ SPRINT_BUF(b3);
-
- if (opt == NULL)
- return 0;
-@@ -243,10 +264,16 @@
- fprintf(f, "ceil %s ", sprint_rate(hopt->ceil.rate, b1));
- cbuffer = ((double)hopt->ceil.rate*tc_core_tick2usec(hopt->cbuffer))/1000000;
- if (show_details) {
-- fprintf(f, "burst %s/%u mpu %s ", sprint_size(buffer, b1),
-- 1<<hopt->rate.cell_log, sprint_size(hopt->rate.mpu, b2));
-- fprintf(f, "cburst %s/%u mpu %s ", sprint_size(cbuffer, b1),
-- 1<<hopt->ceil.cell_log, sprint_size(hopt->ceil.mpu, b2));
-+ fprintf(f, "burst %s/%u mpu %s overhead %s ",
-+ sprint_size(buffer, b1),
-+ 1<<hopt->rate.cell_log,
-+ sprint_size(hopt->rate.mpu&0xFF, b2),
-+ sprint_size((hopt->rate.mpu>>8)&0xFF, b3));
-+ fprintf(f, "cburst %s/%u mpu %s overhead %s ",
-+ sprint_size(cbuffer, b1),
-+ 1<<hopt->ceil.cell_log,
-+ sprint_size(hopt->ceil.mpu&0xFF, b2),
-+ sprint_size((hopt->ceil.mpu>>8)&0xFF, b3));
- fprintf(f, "level %d ", (int)hopt->level);
- } else {
- fprintf(f, "burst %s ", sprint_size(buffer, b1));
diff --git a/openwrt/package/ipsec-tools/Config.in b/openwrt/package/ipsec-tools/Config.in
deleted file mode 100644
index bdd3e210f6..0000000000
--- a/openwrt/package/ipsec-tools/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_IPSEC_TOOLS
- prompt "ipsec-tools....................... IPsec management tools"
- tristate
- depends BR2_LINUX_2_6
- select BR2_PACKAGE_LIBOPENSSL
- default m if CONFIG_DEVEL
- help
- IPsec management tools
-
- http://ipsec-tools.sourceforge.net/
-
diff --git a/openwrt/package/ipsec-tools/Makefile b/openwrt/package/ipsec-tools/Makefile
deleted file mode 100644
index 06d49e9686..0000000000
--- a/openwrt/package/ipsec-tools/Makefile
+++ /dev/null
@@ -1,85 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ipsec-tools
-PKG_VERSION:=0.6.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=d0242a943c82c0cbf28005966ff35e21
-
-PKG_SOURCE_URL:=@SF/ipsec-tools
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,IPSEC_TOOLS,ipsec-tools,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- touch configure.ac; \
- touch aclocal.m4; \
- touch Makefile.in; \
- touch config.h.in; \
- touch configure; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- --with-kernel-headers="$(LINUX_DIR)/include" \
- --without-readline \
- --with-openssl="$(STAGING_DIR)/usr" \
- --without-libradius \
- --without-libpam \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CFLAGS="$(TARGET_CFLAGS) -Wall" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_IPSEC_TOOLS):
- install -d -m0755 $(IDIR_IPSEC_TOOLS)/etc
- $(CP) $(PKG_BUILD_DIR)/src/racoon/samples/racoon.conf $(IDIR_IPSEC_TOOLS)/etc/
- install -d -m0755 $(IDIR_IPSEC_TOOLS)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libipsec.so.* $(IDIR_IPSEC_TOOLS)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libracoon.so.* $(IDIR_IPSEC_TOOLS)/usr/lib/
- install -d -m0755 $(IDIR_IPSEC_TOOLS)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/plainrsa-gen $(IDIR_IPSEC_TOOLS)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/racoon $(IDIR_IPSEC_TOOLS)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/racoonctl $(IDIR_IPSEC_TOOLS)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/setkey $(IDIR_IPSEC_TOOLS)/usr/sbin/
- $(RSTRIP) $(IDIR_IPSEC_TOOLS)
- $(IPKG_BUILD) $(IDIR_IPSEC_TOOLS) $(PACKAGE_DIR)
diff --git a/openwrt/package/ipsec-tools/ipkg/ipsec-tools.conffiles b/openwrt/package/ipsec-tools/ipkg/ipsec-tools.conffiles
deleted file mode 100644
index 434045463a..0000000000
--- a/openwrt/package/ipsec-tools/ipkg/ipsec-tools.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/racoon.conf
diff --git a/openwrt/package/ipsec-tools/ipkg/ipsec-tools.control b/openwrt/package/ipsec-tools/ipkg/ipsec-tools.control
deleted file mode 100644
index c1cade10bd..0000000000
--- a/openwrt/package/ipsec-tools/ipkg/ipsec-tools.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ipsec-tools
-Priority: optional
-Section: net
-Depends: libopenssl
-Description: IPsec management tools
diff --git a/openwrt/package/ipsec-tools/patches/01-no_libfl.patch b/openwrt/package/ipsec-tools/patches/01-no_libfl.patch
deleted file mode 100644
index c842e229ed..0000000000
--- a/openwrt/package/ipsec-tools/patches/01-no_libfl.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN ipsec-tools-0.6.3-old/src/racoon/cftoken.l ipsec-tools-0.6.3-new/src/racoon/cftoken.l
---- ipsec-tools-0.6.3-old/src/racoon/cftoken.l 2005-11-06 18:18:26.000000000 +0100
-+++ ipsec-tools-0.6.3-new/src/racoon/cftoken.l 2005-12-09 01:27:27.000000000 +0100
-@@ -105,6 +105,8 @@
- static int incstackp = 0;
-
- static int yy_first_time = 1;
-+
-+int yywrap(void) { return 1; }
- %}
-
- /* common seciton */
-diff -ruN ipsec-tools-0.6.3-old/src/setkey/token.l ipsec-tools-0.6.3-new/src/setkey/token.l
---- ipsec-tools-0.6.3-old/src/setkey/token.l 2005-06-29 15:01:30.000000000 +0200
-+++ ipsec-tools-0.6.3-new/src/setkey/token.l 2005-12-09 01:27:31.000000000 +0100
-@@ -84,6 +84,8 @@
- #ifndef SADB_X_EALG_AESCTR
- #define SADB_X_EALG_AESCTR (-1)
- #endif
-+
-+int yywrap(void) { return 1; }
- %}
-
- /* common section */
diff --git a/openwrt/package/ipsec-tools/patches/02-configure_cppflags_typo.patch b/openwrt/package/ipsec-tools/patches/02-configure_cppflags_typo.patch
deleted file mode 100644
index f725ebdeed..0000000000
--- a/openwrt/package/ipsec-tools/patches/02-configure_cppflags_typo.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN ipsec-tools-0.6.3-old/configure.ac ipsec-tools-0.6.3-new/configure.ac
---- ipsec-tools-0.6.3-old/configure.ac 2005-11-21 12:11:41.000000000 +0100
-+++ ipsec-tools-0.6.3-new/configure.ac 2005-12-09 02:09:06.000000000 +0100
-@@ -180,7 +180,7 @@
-
- if test "x$crypto_dir" != "x"; then
- LIBS="$LIBS -L${crypto_dir}/lib"
-- CPPFLAGS="-I${crypto_dir}/include $CPPLAGS"
-+ CPPFLAGS="-I${crypto_dir}/include $CPPFLAGS"
- fi
- AC_MSG_CHECKING(openssl version)
-
-diff -ruN ipsec-tools-0.6.3-old/configure ipsec-tools-0.6.3-new/configure
---- ipsec-tools-0.6.3-old/configure 2005-11-21 12:15:12.000000000 +0100
-+++ ipsec-tools-0.6.3-new/configure 2005-12-09 02:09:13.000000000 +0100
-@@ -23680,7 +23680,7 @@
-
- if test "x$crypto_dir" != "x"; then
- LIBS="$LIBS -L${crypto_dir}/lib"
-- CPPFLAGS="-I${crypto_dir}/include $CPPLAGS"
-+ CPPFLAGS="-I${crypto_dir}/include $CPPFLAGS"
- fi
- echo "$as_me:$LINENO: checking openssl version" >&5
- echo $ECHO_N "checking openssl version... $ECHO_C" >&6
diff --git a/openwrt/package/ipset/Config.in b/openwrt/package/ipset/Config.in
deleted file mode 100644
index 293292cfea..0000000000
--- a/openwrt/package/ipset/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_IPSET
- prompt "ipset............................. Netfilter ip sets administration utility"
- tristate
- default m if CONFIG_DEVEL
- help
- Netfilter ip sets administration utility
-
- http://ipset.netfilter.org/
-
diff --git a/openwrt/package/ipset/Makefile b/openwrt/package/ipset/Makefile
deleted file mode 100644
index 8369b29bfd..0000000000
--- a/openwrt/package/ipset/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-# $Id$
-#
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ipset
-PKG_VERSION:=2.2.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=1709424cc2cdb925d4fb6fd5fcaefc26
-
-PKG_SOURCE_URL:=http://ipset.netfilter.org
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-20050914.tar.bz2
-PKG_BUILD_DIR:=$(BUILD_DIR)/ipset-$(PKG_VERSION)
-PKG_CAT:=bzcat
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,IPSET,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld \
- CFLAGS="$(TARGET_CFLAGS) -Wall -I$(LINUX_DIR)/include -I." \
- KERNEL_DIR=$(LINUX_DIR) PREFIX=/usr
- touch $@
-
-$(IPKG_IPSET):
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR=$(IDIR_IPSET) PREFIX=/usr install
- rm -rf $(IDIR_IPSET)/usr/man
- $(IPKG_BUILD) $(IDIR_IPSET) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/ipset/ipkg/ipset.control b/openwrt/package/ipset/ipkg/ipset.control
deleted file mode 100644
index f7f6ae0e63..0000000000
--- a/openwrt/package/ipset/ipkg/ipset.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ipset
-Priority: optional
-Section: net
-Description: Netfilter ip sets administration utility
-Depends: kmod-iptables-extra
diff --git a/openwrt/package/ipset/patches/kernel26.patch b/openwrt/package/ipset/patches/kernel26.patch
deleted file mode 100644
index 46112ab25f..0000000000
--- a/openwrt/package/ipset/patches/kernel26.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-diff -Nur ipset-2.2.3.orig/ipset.c ipset-2.2.3/ipset.c
---- ipset-2.2.3.orig/ipset.c 2005-04-05 09:56:02.000000000 +0200
-+++ ipset-2.2.3/ipset.c 2005-09-29 13:07:07.446923250 +0200
-@@ -21,7 +21,6 @@
- #include <stdarg.h>
- #include <netdb.h>
- #include <dlfcn.h>
--#include <asm/bitops.h>
-
- #include "ipset.h"
-
-diff -Nur ipset-2.2.3.orig/ipset_iphash.c ipset-2.2.3/ipset_iphash.c
---- ipset-2.2.3.orig/ipset_iphash.c 2005-01-19 14:38:57.000000000 +0100
-+++ ipset-2.2.3/ipset_iphash.c 2005-09-29 13:07:26.308102000 +0200
-@@ -25,7 +25,6 @@
- #include <sys/types.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
--#include <asm/bitops.h>
- #include <asm/types.h>
-
- #include <linux/netfilter_ipv4/ip_set_iphash.h>
-diff -Nur ipset-2.2.3.orig/ipset_ipmap.c ipset-2.2.3/ipset_ipmap.c
---- ipset-2.2.3.orig/ipset_ipmap.c 2005-01-19 14:38:57.000000000 +0100
-+++ ipset-2.2.3/ipset_ipmap.c 2005-09-29 13:07:07.446923250 +0200
-@@ -22,7 +22,6 @@
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
--#include <asm/bitops.h>
-
- #include <linux/netfilter_ipv4/ip_set_ipmap.h>
- #include "ipset.h"
-diff -Nur ipset-2.2.3.orig/ipset_macipmap.c ipset-2.2.3/ipset_macipmap.c
---- ipset-2.2.3.orig/ipset_macipmap.c 2005-01-19 14:38:57.000000000 +0100
-+++ ipset-2.2.3/ipset_macipmap.c 2005-09-29 13:07:07.446923250 +0200
-@@ -24,7 +24,6 @@
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
--#include <asm/bitops.h>
- #include <linux/if_ether.h>
-
- #include <linux/netfilter_ipv4/ip_set_macipmap.h>
-diff -Nur ipset-2.2.3.orig/ipset_nethash.c ipset-2.2.3/ipset_nethash.c
---- ipset-2.2.3.orig/ipset_nethash.c 2005-05-09 07:44:25.000000000 +0200
-+++ ipset-2.2.3/ipset_nethash.c 2005-09-29 13:07:07.446923250 +0200
-@@ -25,7 +25,6 @@
- #include <sys/types.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
--#include <asm/bitops.h>
- #include <asm/types.h>
-
- #include <linux/netfilter_ipv4/ip_set_nethash.h>
-diff -Nur ipset-2.2.3.orig/ipset_portmap.c ipset-2.2.3/ipset_portmap.c
---- ipset-2.2.3.orig/ipset_portmap.c 2005-01-19 14:38:57.000000000 +0100
-+++ ipset-2.2.3/ipset_portmap.c 2005-09-29 13:07:07.446923250 +0200
-@@ -21,7 +21,6 @@
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
--#include <asm/bitops.h>
-
- #include <linux/netfilter_ipv4/ip_set_portmap.h>
- #include "ipset.h"
diff --git a/openwrt/package/iptables-snmp/Config.in b/openwrt/package/iptables-snmp/Config.in
deleted file mode 100644
index 7232abb14f..0000000000
--- a/openwrt/package/iptables-snmp/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_IPTABLES_SNMP
- prompt "iptables-snmp..................... An snmpd plugin to access iptables rules"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_IPTABLES
- select BR2_PACKAGE_SNMPD
- help
- This is a plugin that makes iptables rules accessable from snmpd.
-
- http://www.nobiscuit.com/iptables-snmp/
-
diff --git a/openwrt/package/iptables-snmp/Makefile b/openwrt/package/iptables-snmp/Makefile
deleted file mode 100644
index dbf35c8f94..0000000000
--- a/openwrt/package/iptables-snmp/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=iptables-snmp
-PKG_VERSION:=0.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=8370d2f0c899461a053da491400119d1
-
-PKG_SOURCE_URL:=http://www.nobiscuit.com/iptables-snmp
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,IPTABLES_SNMP,iptables-snmp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); rm -f config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) " \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_IPTABLES_SNMP):
- install -d -m0755 $(IDIR_IPTABLES_SNMP)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/iptables-snmp.so $(IDIR_IPTABLES_SNMP)/usr/lib
- $(RSTRIP) $(IDIR_IPTABLES_SNMP)
- $(IPKG_BUILD) $(IDIR_IPTABLES_SNMP) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built \ No newline at end of file
diff --git a/openwrt/package/iptables-snmp/ipkg/iptables-snmp.control b/openwrt/package/iptables-snmp/ipkg/iptables-snmp.control
deleted file mode 100644
index cd92ffeb58..0000000000
--- a/openwrt/package/iptables-snmp/ipkg/iptables-snmp.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iptables-snmp
-Priority: optional
-Section: net
-Depends: snmpd
-Description: An snmpd plugin to access iptables rules \ No newline at end of file
diff --git a/openwrt/package/iptables/Config.in b/openwrt/package/iptables/Config.in
deleted file mode 100644
index 6a2a85616b..0000000000
--- a/openwrt/package/iptables/Config.in
+++ /dev/null
@@ -1,167 +0,0 @@
-menu "iptables.......................... IPv4 / IPv6 firewall administration"
-
-config BR2_COMPILE_IPTABLES
- bool
- default n
- depends BR2_PACKAGE_IPTABLES || BR2_PACKAGE_IP6TABLES
-
-config BR2_PACKAGE_IPTABLES
- prompt "iptables.......................... IPv4 firewall administration tool"
- tristate
- default y
- select BR2_COMPILE_IPTABLES
- help
- IPv4 firewall, NAT, and packet mangling tools.
-
- http://www.iptables.org/
-
-config BR2_PACKAGE_IPTABLES_EXTRA
- prompt "iptables-extra.................. Extra Iptables extensions for IPv4 firewalling (meta-package)"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_IPTABLES
- select BR2_PACKAGE_KMOD_IPTABLES_EXTRA
- select BR2_PACKAGE_IPTABLES_MOD_CONNTRACK
- select BR2_PACKAGE_IPTABLES_MOD_EXTRA
- select BR2_PACKAGE_IPTABLES_MOD_FILTER
- select BR2_PACKAGE_IPTABLES_MOD_IMQ
- select BR2_PACKAGE_IPTABLES_MOD_IPOPT
- select BR2_PACKAGE_IPTABLES_MOD_IPSEC
- select BR2_PACKAGE_IPTABLES_MOD_NAT
- select BR2_PACKAGE_IPTABLES_MOD_ULOG
- help
- Extra Iptables extensions for IPv4 firewalling (meta-package)
-
-config BR2_PACKAGE_IPTABLES_MOD_CONNTRACK
- prompt "iptables-mod-conntrack.......... Iptables extensions for connection tracking"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_IPTABLES
- select BR2_PACKAGE_KMOD_IPT_CONNTRACK
- help
- Iptables (IPv4) extensions for connection tracking
-
- Includes:
- * libipt_conntrack
- * libipt_helper
- * libipt_connmark/CONNMARK
-
-config BR2_PACKAGE_IPTABLES_MOD_FILTER
- prompt "iptables-mod-filter............. Iptables extension for packet content inspection"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_IPTABLES
- select BR2_PACKAGE_KMOD_IPT_FILTER
- help
- Iptables (IPv4) extension for packet content inspection
-
- Includes:
- * libipt_ipp2p
- * libipt_layer7
-
-config BR2_PACKAGE_IPTABLES_MOD_IMQ
- prompt "iptables-mod-imq................ Iptables extensions for Intermediate Queuing Device QoS-support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_IPTABLES
- select BR2_PACKAGE_KMOD_IMQ
- help
- Iptables (IPv4) extensions for Intermediate Queuing Device QoS-support
-
- Includes:
- * libipt_IMQ
-
-config BR2_PACKAGE_IPTABLES_MOD_IPOPT
- prompt "iptables-mod-ipopt.............. Iptables extensions for matching/changing IP packet options"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_IPTABLES
- select BR2_PACKAGE_KMOD_IPT_IPOPT
- help
- Extra Iptables (IPv4) extensions for matching/changing IP packet options
-
- Includes:
- * libipt_dscp/DSCP
- * libipt_ecn/ECN
- * libipt_length
- * libipt_mac
- * libipt_tos/TOS
- * libipt_tcpmms
- * libipt_ttl/TTL
- * libipt_unclean
-
-config BR2_PACKAGE_IPTABLES_MOD_IPSEC
- prompt "iptables-mod-ipsec.............. Iptables extensions for matching special IPsec packets"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_IPTABLES
- select BR2_PACKAGE_KMOD_IPT_IPSEC
- help
- Iptables (IPv4) extensions for matching special IPsec packets
-
- Includes:
- * libipt_ah
- * libipt_esp
-
-config BR2_PACKAGE_IPTABLES_MOD_NAT
- prompt "iptables-mod-nat................ Iptables extensions for different NAT targets"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_IPTABLES
- select BR2_PACKAGE_KMOD_IPT_NAT
- help
- Iptables (IPv4) extensions for different NAT targets
-
- Includes:
- * libipt_REDIRECT
-
-config BR2_PACKAGE_IPTABLES_MOD_ULOG
- prompt "iptables-mod-ulog............... Iptables extensions for user-space packet logging"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_IPTABLES
- select BR2_PACKAGE_KMOD_IPT_ULOG
- help
- Iptables (IPv4) extensions for user-space packet logging
-
- Includes:
- * libipt_ULOG
-
-config BR2_PACKAGE_IPTABLES_MOD_EXTRA
- prompt "iptables-mod-extra.............. Other extra Iptables extensions"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_IPTABLES
- select BR2_PACKAGE_KMOD_IPT_EXTRA
- help
- Other extra Iptables (IPv4) extensions
-
- Includes:
- * libipt_limit
- * libipt_owner
- * libipt_physdev
- * libipt_pkttype
- * libipt_recent
-
-config BR2_PACKAGE_IPTABLES_UTILS
- prompt "iptables-utils.................. Save and restore utilities"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_IPTABLES
- help
- iptables-save and iptables-restore for Iptables (IPv4)
-
- http://www.iptables.org/
-
-config BR2_PACKAGE_IP6TABLES
- prompt "ip6tables......................... IPv6 firewall administration tool"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_IPTABLES
- select BR2_PACKAGE_KMOD_IPV6
- help
- IPv6 firewall, NAT, and packet mangling tools.
-
- http://www.iptables.org/
-
-endmenu
diff --git a/openwrt/package/iptables/Makefile b/openwrt/package/iptables/Makefile
deleted file mode 100644
index 73156b9c68..0000000000
--- a/openwrt/package/iptables/Makefile
+++ /dev/null
@@ -1,129 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=iptables
-PKG_VERSION:=1.3.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=00fb916fa8040ca992a5ace56d905ea5
-
-PKG_SOURCE_URL:=http://www.netfilter.org/projects/iptables/files \
- ftp://ftp.be.netfilter.org/pub/netfilter/iptables/ \
- ftp://ftp.de.netfilter.org/pub/netfilter/iptables/ \
- ftp://ftp.no.netfilter.org/pub/netfilter/iptables/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-define IPKG_plugin_template
-
-$$(IPKG_$(1)):
- install -m0755 -d $$(IDIR_$(1))/usr/lib/iptables
- for m in $$(patsubst xt_%,ipt_%,$(2)); do \
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/iptables/lib$$$${m}.so $$(IDIR_$(1))/usr/lib/iptables/ ; \
- done
- @[ -z "$(3)" ] || $(MAKE) $(3)
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-include $(TOPDIR)/package/rules.mk
-include $(LINUX_DIR)/.config
-include $(TOPDIR)/target/linux/netfilter.mk
-
-$(eval $(call PKG_template,IPTABLES,iptables,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,IPTABLES_EXTRA,iptables-extra,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,IPTABLES_UTILS,iptables-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,IP6TABLES,ip6tables,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_template,IPTABLES_MOD_CONNTRACK,iptables-mod-conntrack,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,IPTABLES_MOD_EXTRA,iptables-mod-extra,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,IPTABLES_MOD_FILTER,iptables-mod-filter,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,IPTABLES_MOD_IMQ,iptables-mod-imq,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,IPTABLES_MOD_IPOPT,iptables-mod-ipopt,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,IPTABLES_MOD_IPSEC,iptables-mod-ipsec,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,IPTABLES_MOD_NAT,iptables-mod-nat,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,IPTABLES_MOD_ULOG,iptables-mod-ulog,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call IPKG_plugin_template,IPTABLES_MOD_CONNTRACK,$(IPT_CONNTRACK-m)))
-$(eval $(call IPKG_plugin_template,IPTABLES_MOD_EXTRA,$(IPT_EXTRA-m)))
-$(eval $(call IPKG_plugin_template,IPTABLES_MOD_FILTER,$(IPT_FILTER-m),layer7-install))
-$(eval $(call IPKG_plugin_template,IPTABLES_MOD_IMQ,$(IPT_IMQ-m)))
-$(eval $(call IPKG_plugin_template,IPTABLES_MOD_IPOPT,$(IPT_IPOPT-m)))
-$(eval $(call IPKG_plugin_template,IPTABLES_MOD_IPSEC,$(IPT_IPSEC-m)))
-$(eval $(call IPKG_plugin_template,IPTABLES_MOD_NAT,$(IPT_NAT-m)))
-$(eval $(call IPKG_plugin_template,IPTABLES_MOD_ULOG,$(IPT_ULOG-m)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- chmod a+x $(PKG_BUILD_DIR)/extensions/.*-test*
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CC=$(TARGET_CC) COPT_FLAGS="$(TARGET_CFLAGS)" \
- KERNEL_DIR=$(LINUX_DIR) PREFIX=/usr \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install install-devel
- touch $@
-
-$(IPKG_IPTABLES):
- install -d -m0755 $(IDIR_IPTABLES)/etc/config
- install -m0644 ./files/firewall.config $(IDIR_IPTABLES)/etc/config/firewall
- install -d -m0755 $(IDIR_IPTABLES)/etc/init.d
- install -m0755 ./files/firewall.init $(IDIR_IPTABLES)/etc/init.d/S45firewall
- install -m0755 ./files/firewall.user $(IDIR_IPTABLES)/etc/
- install -d -m0755 $(IDIR_IPTABLES)/usr/lib
- install -m0644 ./files/firewall.awk $(IDIR_IPTABLES)/usr/lib
- install -d -m0755 $(IDIR_IPTABLES)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/iptables $(IDIR_IPTABLES)/usr/sbin/
- install -d -m0755 $(IDIR_IPTABLES)/usr/lib/iptables
- (cd $(PKG_INSTALL_DIR)/usr/lib/iptables ; \
- $(CP) $(patsubst %,lib%.so,$(IPT_BUILTIN:xt_%=ipt_%)) $(IDIR_IPTABLES)/usr/lib/iptables/ \
- )
- $(RSTRIP) $(IDIR_IPTABLES)
- $(IPKG_BUILD) $(IDIR_IPTABLES) $(PACKAGE_DIR)
-
-$(IPKG_IPTABLES_EXTRA):
- $(IPKG_BUILD) $(IDIR_IPTABLES_EXTRA) $(PACKAGE_DIR)
-
-$(IPKG_IPTABLES_UTILS):
- install -d -m0755 $(IDIR_IPTABLES_UTILS)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/iptables-{save,restore} $(IDIR_IPTABLES_UTILS)/usr/sbin/
- $(RSTRIP) $(IDIR_IPTABLES_UTILS)
- $(IPKG_BUILD) $(IDIR_IPTABLES_UTILS) $(PACKAGE_DIR)
-
-$(IPKG_IP6TABLES):
- install -d -m0755 $(IDIR_IP6TABLES)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/ip6tables $(IDIR_IP6TABLES)/usr/sbin/
- install -d -m0755 $(IDIR_IP6TABLES)/usr/lib/iptables
- (cd $(PKG_INSTALL_DIR)/usr/lib/iptables ; \
- $(CP) libip6t_*.so $(IDIR_IP6TABLES)/usr/lib/iptables/ \
- )
- $(RSTRIP) $(IDIR_IP6TABLES)
- $(IPKG_BUILD) $(IDIR_IP6TABLES) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libipq.a: $(PKG_BUILD_DIR)/.built
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CC=$(TARGET_CC) COPT_FLAGS="$(TARGET_CFLAGS)" \
- KERNEL_DIR=$(LINUX_DIR) PREFIX=/usr \
- DESTDIR="$(STAGING_DIR)" \
- install install-devel
-
-layer7-install:
- mkdir -p $(IDIR_IPTABLES_MOD_FILTER)/etc/l7-protocols
- $(CP) files/l7/*.pat $(IDIR_IPTABLES_MOD_FILTER)/etc/l7-protocols/
-
-install-dev: $(STAGING_DIR)/usr/lib/libipq.a
-
-uninstall-dev:
- rm -rf $(STAGING_DIR)/usr/include/libipq.h
- rm -rf $(STAGING_DIR)/usr/lib/libipq.a
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/iptables/files/firewall.awk b/openwrt/package/iptables/files/firewall.awk
deleted file mode 100644
index 1a201a0bce..0000000000
--- a/openwrt/package/iptables/files/firewall.awk
+++ /dev/null
@@ -1,65 +0,0 @@
-BEGIN {
- print ". /etc/config/network"
- print "proto=\"$wan_proto\""
- print "[ -z \"$proto\" -o \"$proto\" = \"none\" ] && exit"
- print "ifname=\"$wan_ifname\""
- print "[ -z \"$ifname\" ] && exit"
- print ""
- print "iptables -X input_$ifname 2>&- >&-"
- print "iptables -N input_$ifname"
- print "iptables -X forward_$ifname 2>&- >&-"
- print "iptables -N forward_$ifname"
- print "iptables -t nat -X prerouting_$ifname 2>&- >&-"
- print "iptables -t nat -N prerouting_$ifname"
- print ""
- print "iptables -A input_rule -i \"$ifname\" -j input_$ifname"
- print "iptables -A forwarding_rule -i \"$ifname\" -j forward_$ifname"
- print "iptables -t nat -A prerouting_rule -i \"$ifname\" -j prerouting_$ifname"
- print ""
- FS=":"
-}
-
-($1 == "accept") || ($1 == "drop") || ($1 == "forward") {
- delete _opt
- str2data($2)
- if ((_l["proto"] == "") && (_l["sport"] _l["dport"] != "")) {
- _opt[0] = " -p tcp"
- _opt[1] = " -p udp"
- } else {
- _opt[0] = ""
- }
-}
-
-($1 == "accept") {
- target = " -j ACCEPT"
- for (o in _opt) {
- print "iptables -t nat -A prerouting_$ifname" _opt[o] str2ipt($2) target
- print "iptables -A input_$ifname " _opt[o] str2ipt($2) target
- print ""
- }
-}
-
-($1 == "drop") {
- for (o in _opt) {
- print "iptables -t nat -A prerouting_$ifname" _opt[o] str2ipt($2) " -j DROP"
- print ""
- }
-}
-
-($1 == "forward") {
- target = " -j DNAT --to " $3
- fwopts = ""
- if ($4 != "") {
- if ((_l["proto"] == "tcp") || (_l["proto"] == "udp") || (_l["proto"] == "")) {
- if (_l["proto"] != "") fwopts = " -p " _l["proto"]
- fwopts = fwopts " --dport " $4
- target = target ":" $4
- }
- else fwopts = ""
- }
- for (o in _opt) {
- print "iptables -t nat -A prerouting_$ifname" _opt[o] str2ipt($2) target
- print "iptables -A forward_$ifname " _opt[o] " -d " $3 fwopts " -j ACCEPT"
- print ""
- }
-}
diff --git a/openwrt/package/iptables/files/firewall.config b/openwrt/package/iptables/files/firewall.config
deleted file mode 100644
index 7edd4ba4e4..0000000000
--- a/openwrt/package/iptables/files/firewall.config
+++ /dev/null
@@ -1,46 +0,0 @@
-# RULE SYNTAX:
-#
-# forward:<match>:<target>[:<port>]
-# - forwards all packets matched by <match> to <target>,
-# optionally changing the port to <port>
-#
-# accept:<match>
-# - accepts all traffic matched by <match>
-#
-# drop:<match>
-# - drops all traffic matched by <match>
-#
-#
-# MATCHING OPTIONS:
-#
-# src=<ip>
-# - match the source ip <ip>
-#
-# dest=<ip>
-# - match the destination ip <ip>
-#
-# proto=<proto>
-# - match the protocol by name or number
-#
-# sport=<port(s)>
-# - match the source port(s), see below for syntax
-#
-# dport=<port(s)>
-# - match the destination port(s), see below for syntax
-#
-#
-#
-# PORT SYNTAX:
-#
-# You can enter an arbitrary list of ports and port ranges in the following format:
-# - 22,53,993,1000-1024
-#
-# If you don't set the protocol to tcp or udp, it will apply to both
-#
-#
-#
-# EXAMPLES:
-#
-# drop:dport=22 src=1.3.3.7
-# accept:proto=tcp dport=22
-# forward:dport=60168:192.168.1.2:60169
diff --git a/openwrt/package/iptables/files/firewall.init b/openwrt/package/iptables/files/firewall.init
deleted file mode 100755
index ad014cbaa3..0000000000
--- a/openwrt/package/iptables/files/firewall.init
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/bin/sh
-
-## Please make changes in /etc/firewall.user
-
-. /etc/config/network
-WAN="$wan_ifname"
-LAN="$lan_ifname"
-
-## CLEAR TABLES
-for T in filter nat; do
- iptables -t $T -F
- iptables -t $T -X
-done
-
-iptables -N input_rule
-iptables -N output_rule
-iptables -N forwarding_rule
-
-iptables -t nat -N prerouting_rule
-iptables -t nat -N postrouting_rule
-
-### INPUT
-### (connections with the router as destination)
-
- # base case
- iptables -P INPUT DROP
- iptables -A INPUT -m state --state INVALID -j DROP
- iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
- iptables -A INPUT -p tcp --tcp-flags SYN SYN --tcp-option \! 2 -j DROP
-
- #
- # insert accept rule or to jump to new accept-check table here
- #
- iptables -A INPUT -j input_rule
-
- # allow
- iptables -A INPUT ${WAN:+\! -i $WAN} -j ACCEPT # allow from all interfaces except for wan
- iptables -A INPUT -p icmp -j ACCEPT # allow ICMP
- iptables -A INPUT -p gre -j ACCEPT # allow GRE
-
- # reject (what to do with anything not allowed earlier)
- iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
- iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable
-
-### OUTPUT
-### (connections with the router as source)
-
- # base case
- iptables -P OUTPUT DROP
- iptables -A OUTPUT -m state --state INVALID -j DROP
- iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-
- #
- # insert accept rule or to jump to new accept-check table here
- #
- iptables -A OUTPUT -j output_rule
-
- # allow
- iptables -A OUTPUT -j ACCEPT #allow everything out
-
- # reject (what to do with anything not allowed earlier)
- iptables -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset
- iptables -A OUTPUT -j REJECT --reject-with icmp-port-unreachable
-
-### FORWARDING
-### (connections routed through the router)
-
- # base case
- iptables -P FORWARD DROP
- iptables -A FORWARD -m state --state INVALID -j DROP
- iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
- iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-
- #
- # insert accept rule or to jump to new accept-check table here
- #
- iptables -A FORWARD -j forwarding_rule
-
- # allow
- iptables -A FORWARD -i br0 -o br0 -j ACCEPT
- [ -z "$WAN" ] || iptables -A FORWARD -i $LAN -o $WAN -j ACCEPT
-
- # reject (what to do with anything not allowed earlier)
- # uses the default -P DROP
-
-### MASQ
- iptables -t nat -A PREROUTING -j prerouting_rule
- iptables -t nat -A POSTROUTING -j postrouting_rule
- [ -z "$WAN" ] || iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
-
-## USER RULES
-[ -f /etc/firewall.user ] && . /etc/firewall.user
-[ -n "$WAN" -a -e /etc/config/firewall ] && {
- awk -f /usr/lib/common.awk -f /usr/lib/firewall.awk /etc/config/firewall | ash
-}
diff --git a/openwrt/package/iptables/files/firewall.user b/openwrt/package/iptables/files/firewall.user
deleted file mode 100755
index f13f50bf66..0000000000
--- a/openwrt/package/iptables/files/firewall.user
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-. /etc/config/network
-
-WAN="$wan_ifname"
-LAN="$lan_ifname"
-
-iptables -F input_rule
-iptables -F output_rule
-iptables -F forwarding_rule
-iptables -t nat -F prerouting_rule
-iptables -t nat -F postrouting_rule
-
-### BIG FAT DISCLAIMER
-## The "-i $WAN" is used to match packets that come in via the $WAN interface.
-## it WILL NOT MATCH packets sent from the $WAN ip address -- you won't be able
-## to see the effects from within the LAN.
-
-### Open port to WAN
-## -- This allows port 22 to be answered by (dropbear on) the router
-# iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT
-# iptables -A input_rule -i $WAN -p tcp --dport 22 -j ACCEPT
-
-### Port forwarding
-## -- This forwards port 8080 on the WAN to port 80 on 192.168.1.2
-# iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 8080 -j DNAT --to 192.168.1.2:80
-# iptables -A forwarding_rule -i $WAN -p tcp --dport 80 -d 192.168.1.2 -j ACCEPT
-
-### DMZ
-## -- Connections to ports not handled above will be forwarded to 192.168.1.2
-# iptables -t nat -A prerouting_rule -i $WAN -j DNAT --to 192.168.1.2
-# iptables -A forwarding_rule -i $WAN -d 192.168.1.2 -j ACCEPT
diff --git a/openwrt/package/iptables/files/l7/aim.pat b/openwrt/package/iptables/files/l7/aim.pat
deleted file mode 100644
index 9768dbbdc8..0000000000
--- a/openwrt/package/iptables/files/l7/aim.pat
+++ /dev/null
@@ -1,27 +0,0 @@
-# AIM - AOL instant messenger (OSCAR and TOC)
-# Pattern quality: good notsofast
-# Usually runs on port 5190
-#
-# This may also match ICQ traffic.
-#
-# This pattern has been tested and is believed to work well. If it does not
-# work for you, or you believe it could be improved, please post to
-# l7-filter-developers@lists.sf.net . This list may be subscribed to at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-
-aim
-# See http://gridley.acns.carleton.edu/~straitm/final (and various other places)
-# The first bit matches OSCAR signon and data commands, but not sure what
-# \x03\x0b matches, but it works apparently.
-# The next three bits match various parts of the TOC signon process.
-# The third one is the magic number "*", then 0x01 for "signon", then up to four
-# bytes ("up to" because l7-filter strips out nulls) which contain a sequence
-# number (2 bytes) the data length (2 more) and 3 nulls (which don't count),
-# then 0x01 for the version number (not sure if there ever has been another
-# version)
-# The fourth one is a command string, followed by some stuff, then the
-# beginning of the "roasted" password
-
-# This pattern is too slow!
-
-^(\*[\x01\x02].*\x03\x0b|\*\x01.?.?.?.?\x01)|flapon|toc_signon.*0x
diff --git a/openwrt/package/iptables/files/l7/bittorrent.pat b/openwrt/package/iptables/files/l7/bittorrent.pat
deleted file mode 100644
index c1804ee4ba..0000000000
--- a/openwrt/package/iptables/files/l7/bittorrent.pat
+++ /dev/null
@@ -1,14 +0,0 @@
-# Bittorrent - P2P filesharing / publishing tool - http://www.bittorrent.com
-# Pattern quality: great veryfast
-#
-# This pattern has been tested and is believed to work well. If it does not
-# work for you, or you believe it could be improved, please post to
-# l7-filter-developers@lists.sf.net . This list may be subscribed to at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-bittorrent
-
-# Does not attempt to match the HTTP download of the tracker
-# 0x13 is the length of "bittorrent protocol"
-# Second two bits match UDP wierdness, commented out until it's tested
-#^(\x13bittorrent protocol|d1:ad2:id20:|\x08'7P\)[RP])
-^\x13bittorrent protocol
diff --git a/openwrt/package/iptables/files/l7/edonkey-dl.pat b/openwrt/package/iptables/files/l7/edonkey-dl.pat
deleted file mode 100644
index d344d169d0..0000000000
--- a/openwrt/package/iptables/files/l7/edonkey-dl.pat
+++ /dev/null
@@ -1,8 +0,0 @@
-# eDonkey2000 - P2P filesharing (download part) - http://edonkey2000.com
-# Pattern quality: good veryfast overmatch usepacket
-
-edonkey-dl
-
-^[\xe3\xe4\xc5\xe5\xd4](....)?[\x01\x0a\x0e\x0f\x10\x18\x19\x1b\x1c\x47\x4a\x4f\x51\x53\x54\x58\x60\x81\x90\x96\x9a\x9c\xa2]
-
-
diff --git a/openwrt/package/iptables/files/l7/edonkey.pat b/openwrt/package/iptables/files/l7/edonkey.pat
deleted file mode 100644
index efbc3f361e..0000000000
--- a/openwrt/package/iptables/files/l7/edonkey.pat
+++ /dev/null
@@ -1,29 +0,0 @@
-# eDonkey2000 - P2P filesharing - http://edonkey2000.com
-# Pattern quality: good veryfast overmatch
-#
-# Please post to l7-filter-developers@lists.sf.net as to whether this pattern
-# works for you or not. If you believe it could be improved please post your
-# suggestions to that list as well. You may subscribe to this list at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-
-# Thanks to Matt Skidmore <fox AT woozle.org>
-
-edonkey
-
-# http://gd.tuwien.ac.at/opsys/linux/sf/p/pdonkey/eDonkey-protocol-0.6
-#
-# In addition to \xe3, \xc5 and \xd4, I see a lot of \xe5
-#
-# God this is a mess. What an irritating protocol.
-# This will match about 1% of streams with random data in them!
-
-^[\xe3\xc5\xe5\xd4](....)?([\x01\x02\x05\x14\x15\x16\x18\x19\x1a\x1b\x1c\x20\x21\x32\x33\x34\x35\x36\x38\x40\x41\x42\x43\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x5b\x5c\x60\x81\x82\x90\x91\x93\x96\x97\x98\x99\x9a\x9b\x9c\x9e\xa0\xa1\xa2\xa3\xa4]|\x59................?[ -~]|\x96....$)
-
-# matches everything and too much
-# ^(\xe3|\xc5|\xd4)
-
-# ipp2p essentially uses "\xe3....\x47", which doesn't seem at all right to me.
-
-# bandwidtharbitrator uses
-# e0.*@.*6[a-z].*p$|e0.*@.*[a-z]6[a-z].*p0$|e.*@.*[0-9]6.*p$|emule|edonkey
-# no comments to explain what all the mush is, of course...
diff --git a/openwrt/package/iptables/files/l7/fasttrack.pat b/openwrt/package/iptables/files/l7/fasttrack.pat
deleted file mode 100644
index 46295c6bbe..0000000000
--- a/openwrt/package/iptables/files/l7/fasttrack.pat
+++ /dev/null
@@ -1,25 +0,0 @@
-# FastTrack - P2P filesharing (Kazaa, Morpheus, iMesh, Grokster, etc)
-# Pattern quality: good notsofast
-#
-# Tested with Kazaa Lite Resurrection 0.0.7.6F
-#
-# This appears to match the download connections well, but not the search
-# connections (I think they are encrypted :-( ).
-#
-# Please post to l7-filter-developers@lists.sf.net as to whether it works
-# for you or not. If you believe it could be improved please post your
-# suggestions to that list as well. You may subscribe to this list at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-
-fasttrack
-# while this is a valid http request, this will be caught because
-# the http pattern matches the response (and therefore the next packet)
-# Even so, it's best to put this match earlier in the chain.
-# http://cvs.berlios.de/cgi-bin/viewcvs.cgi/gift-fasttrack/giFT-FastTrack/PROTOCOL?rev=HEAD&content-type=text/vnd.viewcvs-markup
-
-# This pattern is kinda slow, but not too bad.
-^get (/.download/[ -~]*|/.supernode[ -~]|/.status[ -~]|/.network[ -~]*|/.files|/.hash=[0-9a-f]*/[ -~]*) http/1.1|user-agent: kazaa|x-kazaa(-username|-network|-ip|-supernodeip|-xferid|-xferuid|tag)|^give [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]?[0-9]?[0-9]?
-
-# This isn't much faster:
-#^get (/.download/.*|/.supernode.|/.status.|/.network.*|/.files|/.hash=[0-9a-f]*/.*) http/1.1|user-agent: kazaa|x-kazaa(-username|-network|-ip|-supernodeip|-xferid|-xferuid|tag)|^give [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]?[0-9]?[0-9]?
-
diff --git a/openwrt/package/iptables/files/l7/ftp.pat b/openwrt/package/iptables/files/l7/ftp.pat
deleted file mode 100644
index 9593ffd1bd..0000000000
--- a/openwrt/package/iptables/files/l7/ftp.pat
+++ /dev/null
@@ -1,34 +0,0 @@
-# FTP - File Transfer Protocol - RFC 959
-# Pattern quality: great fast
-#
-# Usually runs on port 21. Note that the data stream is on a dynamically
-# assigned port, which means that you will need the FTP connection
-# tracking module in your kernel to usefully match FTP data transfers.
-#
-# This pattern is well tested. If it does not
-# work for you, or you believe it could be improved, please post to
-# l7-filter-developers@lists.sf.net . This list may be subscribed to at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-#
-# Matches the first two things a server should say. Most servers say
-# something after 220, even though they don't have to, and it usually
-# includes the string "ftp" (l7-filter is case insensitive).
-# This includes proftpd, vsftpd, wuftpd, warftpd, pureftpd, Bulletproof
-# FTP Server, and whatever ftp.microsoft.com uses. Just in case, the next
-# thing the server sends is a 331. All the above servers also send
-# something including "password" after this code.
-ftp
-# actually, let's just do the first for now, it's faster
-^220[\x09-\x0d -~]*ftp
-
-# This is ~10x faster if the stream starts with "220"
-#^220.*ftp
-
-# This will match more, but much slower
-#^220[\x09-\x0d -~]*ftp|331[\x09-\x0d -~]*password
-
-# This pattern is more precise, but takes longer to match. (3 packets vs. 1)
-#^220[\x09-\x0d -~]*\x0d\x0aUSER[\x09-\x0d -~]*\x0d\x0a331
-
-# same as above, but slightly less precise and only takes 2 packets.
-#^220[\x09-\x0d -~]*\x0d\x0aUSER[\x09-\x0d -~]*\x0d\x0a
diff --git a/openwrt/package/iptables/files/l7/gnutella.pat b/openwrt/package/iptables/files/l7/gnutella.pat
deleted file mode 100644
index ebbd5c621d..0000000000
--- a/openwrt/package/iptables/files/l7/gnutella.pat
+++ /dev/null
@@ -1,36 +0,0 @@
-# Gnutella - P2P filesharing
-# Pattern quality: good fast
-#
-# This should match both Gnutella and "Gnutella2" ("Mike's protocol")
-#
-# Various clients use this protocol including Mactella, Shareaza,
-# GTK-gnutella, Gnucleus, Gnotella, LimeWire, BearShare, and iMesh.
-#
-# This is tested with gtk-gnutella and Shareaza.
-#
-# Please report on how this pattern works for you at
-# l7-filter-developers@lists.sf.net . If you can improve on this
-# pattern, please also post to that list. You may subscribe at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-
-# http://www.gnutella2.com/tiki-index.php?page=UDP%20Transceiver
-# http://rfc-gnutella.sf.net/
-# http://www.gnutella2.com/tiki-index.php?page=Gnutella2%20Specification
-# http://en.wikipedia.org/wiki/Shareaza
-
-gnutella
-
-# The first part matches UDP messages - All start with "GND", then have
-# a flag byte which is either \x00, \x01 or \x02, then two sequence bytes
-# that can be anything, then a fragment number, which must start at 1.
-# The rest matches TCP first client message or first server message (in case
-# we can't see client messages). Some parts of this are empirical rather than
-# document based. Assumes version is between 0.0 and 2.9. (usually is
-# 0.4 or 0.6). I'm guessing at many of the user-agents.
-# The last bit is emprical and probably only matches Limewire.
-^(gnd[\x01\x02]?.?.?\x01|gnutella connect/[012]\.[0-9]\x0d\x0a|get /uri-res/n2r\?urn:sha1:|get /.*user-agent: (gtk-gnutella|bearshare|mactella|gnucleus|gnotella|limewire|imesh)|get /.*content-type: application/x-gnutella-packets|giv [0-9]*:[0-9a-f]*/|queue [0-9a-f]* [1-9][0-9]?[0-9]?\.[1-9][0-9]?[0-9]?\.[1-9][0-9]?[0-9]?\.[1-9][0-9]?[0-9]?:[1-9][0-9]?[0-9]?[0-9]?|gnutella.*content-type: application/x-gnutella|..................lime)
-
-# Needlessly precise, at the expense of time
-#^(gnd[\x01\x02]?.?.?\x01|gnutella connect/[012]\.[0-9]\x0d\x0a|get /uri-res/n2r\?urn:sha1:|get /[\x09-\x0d -~]*user-agent: (gtk-gnutella|bearshare|mactella|gnucleus|gnotella|limewire|imesh)|get /[\x09-\x0d -~]*content-type: application/x-gnutella-packets|giv [0-9]*:[0-9a-f]*/|queue [0-9a-f]* [1-9][0-9]?[0-9]?\.[1-9][0-9]?[0-9]?\.[1-9][0-9]?[0-9]?\.[1-9][0-9]?[0-9]?:[1-9][0-9]?[0-9]?[0-9]?|gnutella[\x09-\x0d -~]*content-type: application/x-gnutella|..................lime)
-
-
diff --git a/openwrt/package/iptables/files/l7/http.pat b/openwrt/package/iptables/files/l7/http.pat
deleted file mode 100644
index 520e7fe212..0000000000
--- a/openwrt/package/iptables/files/l7/http.pat
+++ /dev/null
@@ -1,28 +0,0 @@
-# HTTP - HyperText Transfer Protocol - RFC 2616
-# Pattern quality: great notsofast
-# Usually runs on port 80
-#
-# This pattern has been tested and is believed to work well. If it does not
-# work for you, or you believe it could be improved, please post to
-# l7-filter-developers@lists.sf.net . This list may be subscribed to at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-#
-# this intentionally catches the response from the server
-# rather than the request so that other protocols which use
-# http (like kazaa) can be caught based on specific http requests
-# regardless of the ordering of filters...
-# also matches posts
-
-# Sites that serve really long cookies may break this by pushing the
-# server response too far away from the beginning of the connection. To
-# fix this, increase the kernel's data buffer length.
-
-http
-# Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF (rfc 2616)
-# As specified in rfc 2616 a status code is preceeded and followed by a
-# space.
-http/(0\.9|1\.0|1\.1) [1-5][0-9][0-9] [\x09-\x0d -~]*(connection:|content-type:|content-length:|date:)|post [\x09-\x0d -~]* http/[01]\.[019]
-# A slightly faster version that might be good enough:
-#http/(0\.9|1\.0|1\.1) [1-5][0-9][0-9]|post [\x09-\x0d -~]* http/[01]\.[019]
-# old pattern(s):
-#(http[\x09-\x0d -~]*(200 ok|302 |304 )[\x09-\x0d -~]*(connection:|content-type:|content-length:))|^(post [\x09-\x0d -~]* http/)
diff --git a/openwrt/package/iptables/files/l7/ident.pat b/openwrt/package/iptables/files/l7/ident.pat
deleted file mode 100644
index 672b0753ce..0000000000
--- a/openwrt/package/iptables/files/l7/ident.pat
+++ /dev/null
@@ -1,14 +0,0 @@
-# Ident - Identification Protocol - RFC 1413
-# Pattern quality: good veryfast
-# Usually runs on port 113
-#
-# This pattern is believed to work. If it does not
-# work for you, or you believe it could be improved, please post to
-# l7-filter-developers@lists.sf.net . This list may be subscribed to at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-
-ident
-# "number , numberCRLF" possibly without the CR and/or LF.
-# ^$ is appropriate because the first packet should never have anything
-# else in it.
-^[1-9][0-9]?[0-9]?[0-9]?[0-9]?[\x09-\x0d]*,[\x09-\x0d]*[1-9][0-9]?[0-9]?[0-9]?[0-9]?(\x0d\x0a|[\x0d\x0a])?$
diff --git a/openwrt/package/iptables/files/l7/irc.pat b/openwrt/package/iptables/files/l7/irc.pat
deleted file mode 100644
index 6643f6c2f7..0000000000
--- a/openwrt/package/iptables/files/l7/irc.pat
+++ /dev/null
@@ -1,20 +0,0 @@
-# IRC - Internet Relay Chat - RFC 1459
-# Pattern quality: good veryfast
-#
-# Usually runs on port 6666 or 6667
-# Note that chat traffic runs on these ports, but IRC-DCC traffic (which
-# can use much more bandwidth) uses a dynamically assigned port, so you
-# must have the IRC connection tracking module in your kernel to classify
-# this.
-#
-# This pattern has been tested and is believed to work well. If it does not
-# work for you, or you believe it could be improved, please post to
-# l7-filter-developers@lists.sf.net . This list may be subscribed to at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-
-irc
-# First thing that happens is that the client sends NICK and USER, in
-# either order. This allows MIRC color codes (\x02-\x0d instead of
-# \x09-\x0d).
-^(nick[\x09-\x0d -~]*user[\x09-\x0d -~]*:|user[\x09-\x0d -~]*:[\x02-\x0d -~]*nick[\x09-\x0d -~]*\x0d\x0a)
-
diff --git a/openwrt/package/iptables/files/l7/jabber.pat b/openwrt/package/iptables/files/l7/jabber.pat
deleted file mode 100644
index 7a0c6840e1..0000000000
--- a/openwrt/package/iptables/files/l7/jabber.pat
+++ /dev/null
@@ -1,24 +0,0 @@
-# Jabber (XMPP) - an open instant messenger protocol - http://jabber.org
-# Pattern quality: good fast
-#
-# This pattern has been tested with Gaim and Gabber. It is only tested
-# with non-SSL mode Jabber with no proxies. If it does not
-# work for you, or you believe it could be improved, please post to
-# l7-filter-developers@lists.sf.net . This list may be subscribed to at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-
-# Thanks to Jan Hudec for some improvements.
-
-# Jabber seems to take a long time to set up a connection. I'm
-# connecting with Gabber 0.8.8 to 12jabber.org and the first 8 packets
-# is this:
-# <stream:stream to='12jabber.com' xmlns='jabber:client'
-# xmlns:stream='http://etherx.jabber.org/streams'><?xml
-# version='1.0'?><stream:stream
-# xmlns:stream='http://etherx.jabber.org/streams' id='3f73e951'
-# xmlns='jabber:client' from='12jabber.com'>
-#
-# No mention of my username or password yet, you'll note.
-
-jabber
-<stream:stream[\x09-\x0d ][ -~]*[\x09-\x0d ]xmlns=['"]jabber
diff --git a/openwrt/package/iptables/files/l7/msnmessenger.pat b/openwrt/package/iptables/files/l7/msnmessenger.pat
deleted file mode 100644
index e07f71f311..0000000000
--- a/openwrt/package/iptables/files/l7/msnmessenger.pat
+++ /dev/null
@@ -1,15 +0,0 @@
-# MSN Messenger - Microsoft Network chat client
-# Pattern quality: good veryfast
-#
-# Usually uses port 1863
-# http://www.hypothetic.org/docs/msn/index.php
-#
-# This pattern has been tested and is believed to work well. If it does not
-# work for you, or you believe it could be improved, please post to
-# l7-filter-developers@lists.sf.net . This list may be subscribed to at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-
-msnmessenger
-# ver: allow versions up to 99.
-# usr (in case ver didn't work):
-^(ver [0-9]+ msnp[1-9][0-9]? [\x09-\x0d -~]* cvr|usr md5 i [ -~]*)
diff --git a/openwrt/package/iptables/files/l7/ntp.pat b/openwrt/package/iptables/files/l7/ntp.pat
deleted file mode 100644
index b7e443e21f..0000000000
--- a/openwrt/package/iptables/files/l7/ntp.pat
+++ /dev/null
@@ -1,17 +0,0 @@
-# (S)NTP - (Simple) Network Time Protocol - RFCs 1305 and 2030
-# Pattern quality: good veryfast overmatch
-#
-# This pattern is tested and is believed to work. If this does not work
-# for you, or you believe it could be improved, please post to
-# l7-filter-developers@lists.sf.net . Subscribe at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-
-# client|server
-# Requires the server's timestamp to be in the present or future (of 2005).
-# Tested with ntpdate on Linux.
-# Assumes version 2, 3 or 4.
-
-# Note that ntp packets are always 48 bytes, so you should match on that too.
-
-ntp
-^([\x13\x1b\x23\xd3\xdb\xe3]|[\x14\x1c$].......?.?.?.?.?.?.?.?.?[\xc6-\xff])
diff --git a/openwrt/package/iptables/files/l7/pop3.pat b/openwrt/package/iptables/files/l7/pop3.pat
deleted file mode 100644
index f6bb630614..0000000000
--- a/openwrt/package/iptables/files/l7/pop3.pat
+++ /dev/null
@@ -1,50 +0,0 @@
-# POP3 - Post Office Protocol version 3 (popular e-mail protocol) - RFC 1939
-# Pattern quality: good veryfast
-#
-# This pattern has been tested somewhat. If it does not
-# work for you, or you believe it could be improved, please post to
-# l7-filter-developers@lists.sf.net . This list may be subscribed to at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-
-# this is a difficult protocol to match because of the relative lack of
-# distinguishing information. Read on.
-pop3
-
-# this the most conservative pattern. It should definitely work.
-#^(\+ok|-err)
-
-# this pattern assumes that the server says _something_ after +ok or -err
-# I think this is probably the way to go.
-^(\+ok |-err )
-
-# more that 90% of servers seem to say "pop" after "+ok", but not all.
-#^(\+ok .*pop)
-
-# Here's another tack. I think this is my second favorite.
-#^(\+ok [\x09-\x0d -~]*(ready|hello|pop|starting)|-err [\x09-\x0d -~]*(invalid|unknown|unimplemented|unrecognized|command))
-
-# this matches the server saying "you have N messages that are M bytes",
-# which the client probably asks for early in the session (not tested)
-#\+ok [0-9]+ [0-9]+
-
-# some sample servers:
-# RFC example: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
-# mail.dreamhost.com: +OK Hello there.
-# pop.carleton.edu: +OK POP3D(*) Server PMDFV6.2.2 at Fri, 12 Sep 2003 19:28:10 -0500 (CDT) (APOP disabled)
-# mail.earthlink.net: +OK NGPopper vEL_4_38 at earthlink.net ready <25509.1063412951@falcon>
-# *.email.umn.edu: +OK Cubic Circle's v1.22 1998/04/11 POP3 ready <7d1e0000da67623f@aquamarine.tc.umn.edu>
-# mail.yale.edu: +OK POP3 pantheon-po01 v2002.81 server ready
-# mail.gustavus.edu: +OK POP3 solen v2001.78 server ready
-# mail.reed.edu: +OK POP3 letra.reed.edu v2002.81 server ready
-# mail.bowdoin.edu: +OK mail.bowdoin.edu POP3 service (iPlanet Messaging Server 5.2 HotFix 1.15 (built Apr 28 2003))
-# pop.colby.edu: +OK Qpopper (version 4.0.5) at basalt starting.
-# mail.mac.com: +OK Netscape Messaging Multiplexor ready
-
-# various error strings:
-#-ERR Invalid command.
-#-ERR invalid command
-#-ERR unimplemented
-#-ERR Invalid command, try one of: USER name, PASS string, QUIT
-#-ERR Unknown AUTHORIZATION state command
-#-ERR Unrecognized command
-#-ERR Unknown command: "sadf'".
diff --git a/openwrt/package/iptables/files/l7/smtp.pat b/openwrt/package/iptables/files/l7/smtp.pat
deleted file mode 100644
index 1bab7a1df4..0000000000
--- a/openwrt/package/iptables/files/l7/smtp.pat
+++ /dev/null
@@ -1,39 +0,0 @@
-# SMTP - Simple Mail Transfer Protocol - RFC 2821 (See also RFC 1869)
-# Pattern quality: great fast
-# usually runs on port 25
-#
-# This pattern has been tested and is believed to work well. If it does not
-# work for you, or you believe it could be improved, please post to
-# l7-filter-developers@lists.sf.net . This list may be subscribed to at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-
-smtp
-# As usual, no text is required after "220", but all known servers have some
-# there. It (almost?) always has string "smtp" in it. The RFC examples
-# does not, so we match those too, just in case anyone has copied them
-# literally.
-^220[\x09-\x0d -~]* (e?smtp|simple mail)
-
-# This is ~3x faster if the stream starts with "220"
-#^220.* (e?smtp|simple mail)
-
-# Some examples:
-# 220 mail.stalker.com ESMTP CommuniGate Pro 4.1.3
-# 220 mail.vieodata.com ESMTP Merak 6.1.0; Mon, 15 Sep 2003 13:48:11 -0400
-# 220 mail.ut.caldera.com ESMTP
-# 220 persephone.pmail.gen.nz ESMTP server ready.
-# 220 smtp1.superb.net ESMTP
-# 220 mail.kerio.com Kerio MailServer 5.6.7 ESMTP ready
-# 220-mail.deerfield.com ESMTP VisNetic.MailServer.v6.0.9.0; Mon, 15 Sep 2003 13:4
-# 220 altn.com ESMTP MDaemon 6.8.5; Mon, 15 Sep 2003 12:46:42 -0500
-# 220 X1 NT-ESMTP Server ipsmin0165atl2.interland.net (IMail 6.06 73062-3)
-# 220 mail.icewarp.com ESMTP Merak 6.1.1; Mon, 15 Sep 2003 19:43:23 +0200
-# 220-mail.email-scan.com ESMTP
-# 220 smaug.dreamhost.com ESMTP
-# 220 kona.carleton.edu -- Server ESMTP (PMDF V6.2#30648)
-# 220 letra.reed.edu ESMTP Sendmail 8.12.9/8.12.9; Mon, 15 Sep 2003 10:35:57 -0700 (PDT)
-# 220-swan.mail.pas.earthlink.net ESMTP Exim 3.33 #1 Mon, 15 Sep 2003 10:32:15 -0700
-#
-# RFC examples:
-# 220 xyz.com Simple Mail Transfer Service Ready (RFC example)
-# 220 dbc.mtview.ca.us SMTP service ready
diff --git a/openwrt/package/iptables/files/l7/ssl.pat b/openwrt/package/iptables/files/l7/ssl.pat
deleted file mode 100644
index ab5f62caa7..0000000000
--- a/openwrt/package/iptables/files/l7/ssl.pat
+++ /dev/null
@@ -1,15 +0,0 @@
-# SSL and TLS - Secure Socket Layer / Transport Layer Security - RFC 2246
-# Pattern quality: good fast
-# Usually runs on port 443
-#
-# This is a superset validcertssl. For it to match, it must be first.
-#
-# This pattern has been tested and is believed to work well. If it does not
-# work for you, or you believe it could be improved, please post to
-# l7-filter-developers@lists.sf.net . This list may be subscribed to at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-
-ssl
-# Client Hello | Server Hello with certificate
-# This allows SSL 3.X, which includes TLS 1.0, known internally as SSL 3.1
-^(.?.?\x16\x03.*\x16\x03|.?.?\x01\x03\x01?.*\x0b)
diff --git a/openwrt/package/iptables/files/l7/vnc.pat b/openwrt/package/iptables/files/l7/vnc.pat
deleted file mode 100644
index 35bfbd4bad..0000000000
--- a/openwrt/package/iptables/files/l7/vnc.pat
+++ /dev/null
@@ -1,23 +0,0 @@
-# VNC - Virtual Network Computing. Also known as RFB - Remote Frame Buffer
-# Pattern quality: good fast
-# http://www.realvnc.com/documentation.html
-#
-# This pattern has been verified with vnc v3.3.7 on WinXP and Linux
-# Please report on how this pattern works for you at
-# l7-filter-developers@lists.sf.net . If you can improve on this pattern,
-# please also post to that list. You may subscribe at
-# http://lists.sourceforge.net/lists/listinfo/l7-filter-developers
-#
-# Thanks to Trevor Paskett <tpaskett AT cymphonix.com> for this pattern.
-
-vnc
-# Assumes single digit major and minor version numbers
-# This message should be all alone in the first packet, so ^$ is appropriate
-^rfb 00[1-9]\.00[0-9]\x0a$
-
-# This is a more restrictive version which assumes the version numbers
-# are ones actually in existance at the time of this writing, i.e. 3.3,
-# 3.7 and 3.8 (with some clients wrongly reporting 3.5). It should be
-# slightly faster, but probably not worth the extra maintenance.
-# ^rfb 003\.00[3578]\x0a$
-
diff --git a/openwrt/package/iptables/ipkg/ip6tables.control b/openwrt/package/iptables/ipkg/ip6tables.control
deleted file mode 100644
index c6d63936e3..0000000000
--- a/openwrt/package/iptables/ipkg/ip6tables.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ip6tables
-Priority: optional
-Depends: kmod-ip6tables
-Section: net
-Description: The netfilter firewalling software for IPv6
diff --git a/openwrt/package/iptables/ipkg/iptables-extra.control b/openwrt/package/iptables/ipkg/iptables-extra.control
deleted file mode 100644
index afd4235c42..0000000000
--- a/openwrt/package/iptables/ipkg/iptables-extra.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iptables-extra
-Priority: optional
-Section: net
-Depends: iptables, iptables-mod-conntrack, iptables-mod-extra, iptables-mod-filter, iptables-mod-ipopt, iptables-mod-ipsec, iptables-mod-nat, iptables-mod-ulog
-Description: Other extra Iptables extensions (meta-package)
diff --git a/openwrt/package/iptables/ipkg/iptables-mod-conntrack.control b/openwrt/package/iptables/ipkg/iptables-mod-conntrack.control
deleted file mode 100644
index 840992e677..0000000000
--- a/openwrt/package/iptables/ipkg/iptables-mod-conntrack.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iptables-mod-conntrack
-Priority: optional
-Section: net
-Depends: iptables, kmod-ipt-conntrack
-Description: Iptables (IPv4) extensions for connection tracking
diff --git a/openwrt/package/iptables/ipkg/iptables-mod-extra.control b/openwrt/package/iptables/ipkg/iptables-mod-extra.control
deleted file mode 100644
index f26b4a4582..0000000000
--- a/openwrt/package/iptables/ipkg/iptables-mod-extra.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iptables-mod-extra
-Priority: optional
-Section: net
-Depends: iptables, kmod-ipt-extra
-Description: Other extra Iptables (IPv4) extensions
diff --git a/openwrt/package/iptables/ipkg/iptables-mod-filter.control b/openwrt/package/iptables/ipkg/iptables-mod-filter.control
deleted file mode 100644
index 43ec799557..0000000000
--- a/openwrt/package/iptables/ipkg/iptables-mod-filter.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iptables-mod-filter
-Priority: optional
-Section: net
-Depends: iptables, kmod-ipt-filter
-Description: Iptables (IPv4) extension for packet content inspection
diff --git a/openwrt/package/iptables/ipkg/iptables-mod-imq.control b/openwrt/package/iptables/ipkg/iptables-mod-imq.control
deleted file mode 100644
index d1e46d28a0..0000000000
--- a/openwrt/package/iptables/ipkg/iptables-mod-imq.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iptables-mod-imq
-Priority: optional
-Section: net
-Depends: kmod-imq
-Description: Iptables (IPv4) extensions for Intermediate Queuing Device QoS-support
diff --git a/openwrt/package/iptables/ipkg/iptables-mod-ipopt.control b/openwrt/package/iptables/ipkg/iptables-mod-ipopt.control
deleted file mode 100644
index 51ec6b20ab..0000000000
--- a/openwrt/package/iptables/ipkg/iptables-mod-ipopt.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iptables-mod-ipopt
-Priority: optional
-Section: net
-Depends: iptables, kmod-ipt-ipopt
-Description: Iptables (IPv4) extensions for matching/changing IP packet options
diff --git a/openwrt/package/iptables/ipkg/iptables-mod-ipsec.control b/openwrt/package/iptables/ipkg/iptables-mod-ipsec.control
deleted file mode 100644
index 4b4d2e6383..0000000000
--- a/openwrt/package/iptables/ipkg/iptables-mod-ipsec.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iptables-mod-ipsec
-Priority: optional
-Section: net
-Depends: iptables, kmod-ipt-ipsec
-Description: Iptables (IPv4) extensions for matching special IPsec packets
diff --git a/openwrt/package/iptables/ipkg/iptables-mod-nat.control b/openwrt/package/iptables/ipkg/iptables-mod-nat.control
deleted file mode 100644
index 2ebbb1cf77..0000000000
--- a/openwrt/package/iptables/ipkg/iptables-mod-nat.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iptables-mod-nat
-Priority: optional
-Section: net
-Depends: iptables, kmod-ipt-nat
-Description: Iptables (IPv4) extensions for different NAT targets
diff --git a/openwrt/package/iptables/ipkg/iptables-mod-ulog.control b/openwrt/package/iptables/ipkg/iptables-mod-ulog.control
deleted file mode 100644
index 3fcd26fedf..0000000000
--- a/openwrt/package/iptables/ipkg/iptables-mod-ulog.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iptables-mod-ulog
-Priority: optional
-Section: net
-Depends: iptables, kmod-ipt-ulog
-Description: Iptables (IPv4) extension for user-space packet logging
diff --git a/openwrt/package/iptables/ipkg/iptables-utils.control b/openwrt/package/iptables/ipkg/iptables-utils.control
deleted file mode 100644
index aff5f4d778..0000000000
--- a/openwrt/package/iptables/ipkg/iptables-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iptables-utils
-Priority: optional
-Section: net
-Depends: iptables
-Description: iptables-save and iptables-restore for Iptables (IPv4)
diff --git a/openwrt/package/iptables/ipkg/iptables.conffiles b/openwrt/package/iptables/ipkg/iptables.conffiles
deleted file mode 100644
index 06194ca679..0000000000
--- a/openwrt/package/iptables/ipkg/iptables.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/config/firewall
-/etc/firewall.user
diff --git a/openwrt/package/iptables/ipkg/iptables.control b/openwrt/package/iptables/ipkg/iptables.control
deleted file mode 100644
index 40a6523b75..0000000000
--- a/openwrt/package/iptables/ipkg/iptables.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: iptables
-Priority: optional
-Section: net
-Description: The netfilter firewalling software for IPv4
diff --git a/openwrt/package/iptables/patches/01-ipp2p-0.8.1rc1.patch b/openwrt/package/iptables/patches/01-ipp2p-0.8.1rc1.patch
deleted file mode 100644
index f7129b4560..0000000000
--- a/openwrt/package/iptables/patches/01-ipp2p-0.8.1rc1.patch
+++ /dev/null
@@ -1,454 +0,0 @@
-diff -urN iptables.old/extensions/Makefile iptables.dev/extensions/Makefile
---- iptables.old/extensions/Makefile 2005-07-20 04:22:56.000000000 +0200
-+++ iptables.dev/extensions/Makefile 2006-03-23 14:42:28.000000000 +0100
-@@ -8,6 +8,10 @@
- PF_EXT_SLIB:=ah addrtype comment connlimit connmark conntrack dscp ecn esp hashlimit helper icmp iprange length limit mac mark multiport owner physdev pkttype realm rpc sctp standard state tcp tcpmss tos ttl udp unclean CLASSIFY CONNMARK DNAT DSCP ECN LOG MARK MASQUERADE MIRROR NETMAP NFQUEUE NOTRACK REDIRECT REJECT SAME SNAT TARPIT TCPMSS TOS TRACE TTL ULOG
- PF6_EXT_SLIB:=eui64 hl icmpv6 length limit mac mark multiport owner physdev standard tcp udp HL LOG NFQUEUE MARK TRACE
-
-+
-+# ipp2p
-+PF_EXT_SLIB += ipp2p
-+
- # Optionals
- PF_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
- PF6_EXT_SLIB_OPTS:=$(foreach T,$(wildcard extensions/.*-test6),$(shell KERNEL_DIR=$(KERNEL_DIR) $(T)))
-diff -urN iptables.old/extensions/libipt_ipp2p.c iptables.dev/extensions/libipt_ipp2p.c
---- iptables.old/extensions/libipt_ipp2p.c 1970-01-01 01:00:00.000000000 +0100
-+++ iptables.dev/extensions/libipt_ipp2p.c 2006-03-23 14:43:26.000000000 +0100
-@@ -0,0 +1,401 @@
-+
-+#include <stdio.h>
-+#include <netdb.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include <getopt.h>
-+#include <ctype.h>
-+
-+#include <iptables.h>
-+
-+#include <linux/netfilter_ipv4/ipt_ipp2p.h>
-+
-+static void
-+help(void)
-+{
-+ printf(
-+ "IPP2P v%s options:\n"
-+ " --ipp2p Grab all known p2p packets\n"
-+ " --edk [TCP&UDP] All known eDonkey/eMule/Overnet packets\n"
-+ " --dc [TCP] All known Direct Connect packets\n"
-+ " --kazaa [TCP&UDP] All known KaZaA packets\n"
-+ " --gnu [TCP&UDP] All known Gnutella packets\n"
-+ " --bit [TCP&UDP] All known BitTorrent packets\n"
-+ " --apple [TCP] All known AppleJuice packets\n"
-+ " --winmx [TCP] All known WinMX\n"
-+ " --soul [TCP] All known SoulSeek\n"
-+ " --ares [TCP] All known Ares\n\n"
-+ " EXPERIMENTAL protocols (please send feedback to: ipp2p@ipp2p.org) :\n"
-+ " --mute [TCP] All known Mute packets\n"
-+ " --waste [TCP] All known Waste packets\n"
-+ " --xdcc [TCP] All known XDCC packets (only xdcc login)\n\n"
-+ " DEBUG SUPPPORT, use only if you know why\n"
-+ " --debug Generate kernel debug output, THIS WILL SLOW DOWN THE FILTER\n"
-+ "\nNote that the follwing options will have the same meaning:\n"
-+ " '--ipp2p' is equal to '--edk --dc --kazaa --gnu --bit --apple --winmx --soul --ares'\n"
-+ "\nIPP2P was intended for TCP only. Due to increasing usage of UDP we needed to change this.\n"
-+ "You can now use -p udp to search UDP packets only or without -p switch to search UDP and TCP packets.\n"
-+ "\nSee README included with this package for more details or visit http://www.ipp2p.org\n"
-+ "\nExamples:\n"
-+ " iptables -A FORWARD -m ipp2p --ipp2p -j MARK --set-mark 0x01\n"
-+ " iptables -A FORWARD -p udp -m ipp2p --kazaa --bit -j DROP\n"
-+ " iptables -A FORWARD -p tcp -m ipp2p --edk --soul -j DROP\n\n"
-+ , IPP2P_VERSION);
-+}
-+
-+static struct option opts[] = {
-+ { "ipp2p", 0, 0, '1' },
-+ { "edk", 0, 0, '2' },
-+ { "dc", 0, 0, '7' },
-+ { "gnu", 0, 0, '9' },
-+ { "kazaa", 0, 0, 'a' },
-+ { "bit", 0, 0, 'b' },
-+ { "apple", 0, 0, 'c' },
-+ { "soul", 0, 0, 'd' },
-+ { "winmx", 0, 0, 'e' },
-+ { "ares", 0, 0, 'f' },
-+ { "mute", 0, 0, 'g' },
-+ { "waste", 0, 0, 'h' },
-+ { "xdcc", 0, 0, 'i' },
-+ { "debug", 0, 0, 'j' },
-+ {0}
-+};
-+
-+
-+
-+static void
-+init(struct ipt_entry_match *m, unsigned int *nfcache)
-+{
-+ struct ipt_p2p_info *info = (struct ipt_p2p_info *)m->data;
-+
-+ *nfcache |= NFC_UNKNOWN;
-+
-+ /*init the module with default values*/
-+ info->cmd = 0;
-+ info->debug = 0;
-+
-+}
-+
-+
-+static int
-+parse(int c, char **argv, int invert, unsigned int *flags,
-+ const struct ipt_entry *entry,
-+ unsigned int *nfcache,
-+ struct ipt_entry_match **match)
-+{
-+ struct ipt_p2p_info *info = (struct ipt_p2p_info *)(*match)->data;
-+
-+ switch (c) {
-+ case '1': /*cmd: ipp2p*/
-+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p' may only be "
-+ "specified once!");
-+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p-data' may only be "
-+ "specified alone!");*/
-+ if ((*flags) != 0)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p' may only be "
-+ "specified alone!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += SHORT_HAND_IPP2P;
-+ info->cmd = *flags;
-+ break;
-+
-+ case '2': /*cmd: edk*/
-+ if ((*flags & IPP2P_EDK) == IPP2P_EDK)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--edk' may only be "
-+ "specified once");
-+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p' may only be "
-+ "specified alone!");
-+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p-data' may only be "
-+ "specified alone!");*/
-+ if ((*flags & IPP2P_DATA_EDK) == IPP2P_DATA_EDK)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: use `--edk' OR `--edk-data' but not both of them!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += IPP2P_EDK;
-+ info->cmd = *flags;
-+ break;
-+
-+
-+ case '7': /*cmd: dc*/
-+ if ((*flags & IPP2P_DC) == IPP2P_DC)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--dc' may only be "
-+ "specified once!");
-+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p' may only be "
-+ "specified alone!");
-+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p-data' may only be "
-+ "specified alone!");*/
-+ if ((*flags & IPP2P_DATA_DC) == IPP2P_DATA_DC)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: use `--dc' OR `--dc-data' but not both of them!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += IPP2P_DC;
-+ info->cmd = *flags;
-+ break;
-+
-+
-+ case '9': /*cmd: gnu*/
-+ if ((*flags & IPP2P_GNU) == IPP2P_GNU)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--gnu' may only be "
-+ "specified once!");
-+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p-data' may only be "
-+ "specified alone!");*/
-+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p' may only be "
-+ "specified alone!");
-+ if ((*flags & IPP2P_DATA_GNU) == IPP2P_DATA_GNU)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: use `--gnu' OR `--gnu-data' but not both of them!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += IPP2P_GNU;
-+ info->cmd = *flags;
-+ break;
-+
-+ case 'a': /*cmd: kazaa*/
-+ if ((*flags & IPP2P_KAZAA) == IPP2P_KAZAA)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--kazaa' may only be "
-+ "specified once!");
-+/* if ((*flags & SHORT_HAND_DATA) == SHORT_HAND_DATA)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p-data' may only be "
-+ "specified alone!");*/
-+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p' may only be "
-+ "specified alone!");
-+ if ((*flags & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: use `--kazaa' OR `--kazaa-data' but not both of them!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += IPP2P_KAZAA;
-+ info->cmd = *flags;
-+ break;
-+
-+ case 'b': /*cmd: bit*/
-+ if ((*flags & IPP2P_BIT) == IPP2P_BIT)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--bit' may only be "
-+ "specified once!");
-+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p' may only be "
-+ "specified alone!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += IPP2P_BIT;
-+ info->cmd = *flags;
-+ break;
-+
-+ case 'c': /*cmd: apple*/
-+ if ((*flags & IPP2P_APPLE) == IPP2P_APPLE)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--apple' may only be "
-+ "specified once!");
-+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p' may only be "
-+ "specified alone!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += IPP2P_APPLE;
-+ info->cmd = *flags;
-+ break;
-+
-+
-+ case 'd': /*cmd: soul*/
-+ if ((*flags & IPP2P_SOUL) == IPP2P_SOUL)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--soul' may only be "
-+ "specified once!");
-+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p' may only be "
-+ "specified alone!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += IPP2P_SOUL;
-+ info->cmd = *flags;
-+ break;
-+
-+
-+ case 'e': /*cmd: winmx*/
-+ if ((*flags & IPP2P_WINMX) == IPP2P_WINMX)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--winmx' may only be "
-+ "specified once!");
-+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p' may only be "
-+ "specified alone!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += IPP2P_WINMX;
-+ info->cmd = *flags;
-+ break;
-+
-+ case 'f': /*cmd: ares*/
-+ if ((*flags & IPP2P_ARES) == IPP2P_ARES)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ares' may only be "
-+ "specified once!");
-+ if ((*flags & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ipp2p' may only be "
-+ "specified alone!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += IPP2P_ARES;
-+ info->cmd = *flags;
-+ break;
-+
-+ case 'g': /*cmd: mute*/
-+ if ((*flags & IPP2P_MUTE) == IPP2P_MUTE)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--mute' may only be "
-+ "specified once!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += IPP2P_MUTE;
-+ info->cmd = *flags;
-+ break;
-+ case 'h': /*cmd: waste*/
-+ if ((*flags & IPP2P_WASTE) == IPP2P_WASTE)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--waste' may only be "
-+ "specified once!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += IPP2P_WASTE;
-+ info->cmd = *flags;
-+ break;
-+ case 'i': /*cmd: xdcc*/
-+ if ((*flags & IPP2P_XDCC) == IPP2P_XDCC)
-+ exit_error(PARAMETER_PROBLEM,
-+ "ipp2p: `--ares' may only be "
-+ "specified once!");
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ *flags += IPP2P_XDCC;
-+ info->cmd = *flags;
-+ break;
-+
-+ case 'j': /*cmd: debug*/
-+ if (invert) exit_error(PARAMETER_PROBLEM, "ipp2p: invert [!] is not allowed!");
-+ info->debug = 1;
-+ break;
-+
-+ default:
-+// exit_error(PARAMETER_PROBLEM,
-+// "\nipp2p-parameter problem: for ipp2p usage type: iptables -m ipp2p --help\n");
-+ return 0;
-+ }
-+ return 1;
-+}
-+
-+
-+static void
-+final_check(unsigned int flags)
-+{
-+ if (!flags)
-+ exit_error(PARAMETER_PROBLEM,
-+ "\nipp2p-parameter problem: for ipp2p usage type: iptables -m ipp2p --help\n");
-+}
-+
-+
-+
-+static void
-+print(const struct ipt_ip *ip,
-+ const struct ipt_entry_match *match,
-+ int numeric)
-+{
-+ struct ipt_p2p_info *info = (struct ipt_p2p_info *)match->data;
-+
-+ printf("ipp2p v%s", IPP2P_VERSION);
-+ if ((info->cmd & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P) printf(" --ipp2p");
-+// if ((info->cmd & SHORT_HAND_DATA) == SHORT_HAND_DATA) printf(" --ipp2p-data");
-+ if ((info->cmd & IPP2P_KAZAA) == IPP2P_KAZAA) printf(" --kazaa");
-+// if ((info->cmd & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA) printf(" --kazaa-data");
-+// if ((info->cmd & IPP2P_DATA_GNU) == IPP2P_DATA_GNU) printf(" --gnu-data");
-+ if ((info->cmd & IPP2P_GNU) == IPP2P_GNU) printf(" --gnu");
-+ if ((info->cmd & IPP2P_EDK) == IPP2P_EDK) printf(" --edk");
-+// if ((info->cmd & IPP2P_DATA_EDK) == IPP2P_DATA_EDK) printf(" --edk-data");
-+// if ((info->cmd & IPP2P_DATA_DC) == IPP2P_DATA_DC) printf(" --dc-data");
-+ if ((info->cmd & IPP2P_DC) == IPP2P_DC) printf(" --dc");
-+ if ((info->cmd & IPP2P_BIT) == IPP2P_BIT) printf(" --bit");
-+ if ((info->cmd & IPP2P_APPLE) == IPP2P_APPLE) printf(" --apple");
-+ if ((info->cmd & IPP2P_SOUL) == IPP2P_SOUL) printf(" --soul");
-+ if ((info->cmd & IPP2P_WINMX) == IPP2P_WINMX) printf(" --winmx");
-+ if ((info->cmd & IPP2P_ARES) == IPP2P_ARES) printf(" --ares");
-+ if ((info->cmd & IPP2P_MUTE) == IPP2P_MUTE) printf(" --mute");
-+ if ((info->cmd & IPP2P_WASTE) == IPP2P_WASTE) printf(" --waste");
-+ if ((info->cmd & IPP2P_XDCC) == IPP2P_XDCC) printf(" --xdcc");
-+ if (info->debug != 0) printf(" --debug");
-+ printf(" ");
-+}
-+
-+
-+
-+static void
-+save(const struct ipt_ip *ip, const struct ipt_entry_match *match)
-+{
-+ struct ipt_p2p_info *info = (struct ipt_p2p_info *)match->data;
-+
-+ if ((info->cmd & SHORT_HAND_IPP2P) == SHORT_HAND_IPP2P) printf("--ipp2p ");
-+// if ((info->cmd & SHORT_HAND_DATA) == SHORT_HAND_DATA) printf("--ipp2p-data ");
-+ if ((info->cmd & IPP2P_KAZAA) == IPP2P_KAZAA) printf("--kazaa ");
-+// if ((info->cmd & IPP2P_DATA_KAZAA) == IPP2P_DATA_KAZAA) printf("--kazaa-data ");
-+// if ((info->cmd & IPP2P_DATA_GNU) == IPP2P_DATA_GNU) printf("--gnu-data ");
-+ if ((info->cmd & IPP2P_GNU) == IPP2P_GNU) printf("--gnu ");
-+ if ((info->cmd & IPP2P_EDK) == IPP2P_EDK) printf("--edk ");
-+// if ((info->cmd & IPP2P_DATA_EDK) == IPP2P_DATA_EDK) printf("--edk-data ");
-+// if ((info->cmd & IPP2P_DATA_DC) == IPP2P_DATA_DC) printf("--dc-data ");
-+ if ((info->cmd & IPP2P_DC) == IPP2P_DC) printf("--dc ");
-+ if ((info->cmd & IPP2P_BIT) == IPP2P_BIT) printf("--bit ");
-+ if ((info->cmd & IPP2P_APPLE) == IPP2P_APPLE) printf("--apple ");
-+ if ((info->cmd & IPP2P_SOUL) == IPP2P_SOUL) printf("--soul ");
-+ if ((info->cmd & IPP2P_WINMX) == IPP2P_WINMX) printf("--winmx ");
-+ if ((info->cmd & IPP2P_ARES) == IPP2P_ARES) printf("--ares ");
-+ if ((info->cmd & IPP2P_MUTE) == IPP2P_MUTE) printf(" --mute");
-+ if ((info->cmd & IPP2P_WASTE) == IPP2P_WASTE) printf(" --waste");
-+ if ((info->cmd & IPP2P_XDCC) == IPP2P_XDCC) printf(" --xdcc");
-+ if (info->debug != 0) printf("--debug ");
-+}
-+
-+
-+
-+
-+static
-+struct iptables_match ipp2p=
-+{
-+ .next = NULL,
-+ .name = "ipp2p",
-+ .version = IPTABLES_VERSION,
-+ .size = IPT_ALIGN(sizeof(struct ipt_p2p_info)),
-+ .userspacesize = IPT_ALIGN(sizeof(struct ipt_p2p_info)),
-+ .help = &help,
-+ .init = &init,
-+ .parse = &parse,
-+ .final_check = &final_check,
-+ .print = &print,
-+ .save = &save,
-+ .extra_opts = opts
-+};
-+
-+
-+
-+void _init(void)
-+{
-+ register_match(&ipp2p);
-+}
-+
-diff -urN iptables.old/include/linux/netfilter_ipv4/ipt_ipp2p.h iptables.dev/include/linux/netfilter_ipv4/ipt_ipp2p.h
---- iptables.old/include/linux/netfilter_ipv4/ipt_ipp2p.h 1970-01-01 01:00:00.000000000 +0100
-+++ iptables.dev/include/linux/netfilter_ipv4/ipt_ipp2p.h 2006-03-23 14:44:26.000000000 +0100
-@@ -0,0 +1,31 @@
-+#ifndef __IPT_IPP2P_H
-+#define __IPT_IPP2P_H
-+#define IPP2P_VERSION "0.8.1_rc1"
-+
-+struct ipt_p2p_info {
-+ int cmd;
-+ int debug;
-+};
-+
-+#endif //__IPT_IPP2P_H
-+
-+#define SHORT_HAND_IPP2P 1 /* --ipp2p switch*/
-+//#define SHORT_HAND_DATA 4 /* --ipp2p-data switch*/
-+#define SHORT_HAND_NONE 5 /* no short hand*/
-+
-+#define IPP2P_EDK (1 << 1)
-+#define IPP2P_DATA_KAZAA (1 << 2)
-+#define IPP2P_DATA_EDK (1 << 3)
-+#define IPP2P_DATA_DC (1 << 4)
-+#define IPP2P_DC (1 << 5)
-+#define IPP2P_DATA_GNU (1 << 6)
-+#define IPP2P_GNU (1 << 7)
-+#define IPP2P_KAZAA (1 << 8)
-+#define IPP2P_BIT (1 << 9)
-+#define IPP2P_APPLE (1 << 10)
-+#define IPP2P_SOUL (1 << 11)
-+#define IPP2P_WINMX (1 << 12)
-+#define IPP2P_ARES (1 << 13)
-+#define IPP2P_MUTE (1 << 14)
-+#define IPP2P_WASTE (1 << 15)
-+#define IPP2P_XDCC (1 << 16)
diff --git a/openwrt/package/iptables/patches/02-layer7-1.5nbd.patch b/openwrt/package/iptables/patches/02-layer7-1.5nbd.patch
deleted file mode 100644
index 95c62a860a..0000000000
--- a/openwrt/package/iptables/patches/02-layer7-1.5nbd.patch
+++ /dev/null
@@ -1,416 +0,0 @@
-diff -urN iptables.old/extensions/.layer7-test iptables.dev/extensions/.layer7-test
---- iptables.old/extensions/.layer7-test 1970-01-01 01:00:00.000000000 +0100
-+++ iptables.dev/extensions/.layer7-test 2005-11-10 16:57:51.819381000 +0100
-@@ -0,0 +1,2 @@
-+#! /bin/sh
-+[ -f $KERNEL_DIR/include/linux/netfilter_ipv4/ipt_layer7.h ] && echo layer7
-diff -urN iptables.old/extensions/ipt_layer7.h iptables.dev/extensions/ipt_layer7.h
---- iptables.old/extensions/ipt_layer7.h 1970-01-01 01:00:00.000000000 +0100
-+++ iptables.dev/extensions/ipt_layer7.h 2005-11-10 17:46:32.933599750 +0100
-@@ -0,0 +1,27 @@
-+/*
-+ By Matthew Strait <quadong@users.sf.net>, Dec 2003.
-+ http://l7-filter.sf.net
-+
-+ This program is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU General Public License
-+ as published by the Free Software Foundation; either version
-+ 2 of the License, or (at your option) any later version.
-+ http://www.gnu.org/licenses/gpl.txt
-+*/
-+
-+#ifndef _IPT_LAYER7_H
-+#define _IPT_LAYER7_H
-+
-+#define MAX_PATTERN_LEN 8192
-+#define MAX_PROTOCOL_LEN 256
-+
-+typedef char *(*proc_ipt_search) (char *, char, char *);
-+
-+struct ipt_layer7_info {
-+ char protocol[MAX_PROTOCOL_LEN];
-+ char invert:1;
-+ char pattern[MAX_PATTERN_LEN];
-+ char pkt;
-+};
-+
-+#endif /* _IPT_LAYER7_H */
-diff -urN iptables.old/extensions/libipt_layer7.c iptables.dev/extensions/libipt_layer7.c
---- iptables.old/extensions/libipt_layer7.c 1970-01-01 01:00:00.000000000 +0100
-+++ iptables.dev/extensions/libipt_layer7.c 2005-11-10 17:47:01.399378750 +0100
-@@ -0,0 +1,358 @@
-+/*
-+ Shared library add-on to iptables to add layer 7 matching support.
-+
-+ By Matthew Strait <quadong@users.sf.net>, Oct 2003.
-+
-+ http://l7-filter.sf.net
-+
-+ This program is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU General Public License
-+ as published by the Free Software Foundation; either version
-+ 2 of the License, or (at your option) any later version.
-+ http://www.gnu.org/licenses/gpl.txt
-+
-+ Based on libipt_string.c (C) 2000 Emmanuel Roger <winfield@freegates.be>
-+*/
-+
-+#define _GNU_SOURCE
-+#include <stdio.h>
-+#include <netdb.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include <getopt.h>
-+#include <ctype.h>
-+#include <dirent.h>
-+
-+#include <iptables.h>
-+#include "ipt_layer7.h"
-+
-+#define MAX_FN_LEN 256
-+
-+static char l7dir[MAX_FN_LEN] = "\0";
-+
-+/* Function which prints out usage message. */
-+static void help(void)
-+{
-+ printf(
-+ "LAYER7 match v%s options:\n"
-+ "--l7dir <directory> : Look for patterns here instead of /etc/l7-protocols/\n"
-+ " (--l7dir must be specified before --l7proto if used!)\n"
-+ "--l7proto [!] <name> : Match the protocol defined in /etc/l7-protocols/name.pat\n"
-+ "--l7pkt : Skip connection tracking and match individual packets\n",
-+ IPTABLES_VERSION);
-+ fputc('\n', stdout);
-+}
-+
-+static struct option opts[] = {
-+ { .name = "l7proto", .has_arg = 1, .flag = 0, .val = '1' },
-+ { .name = "l7dir", .has_arg = 1, .flag = 0, .val = '2' },
-+ { .name = "l7pkt", .has_arg = 0, .flag = 0, .val = '3' },
-+ { .name = 0 }
-+};
-+
-+/* reads filename, puts protocol info into layer7_protocol_info, number of protocols to numprotos */
-+int parse_protocol_file(char * filename, const unsigned char * protoname, struct ipt_layer7_info *info)
-+{
-+ FILE * f;
-+ char * line = NULL;
-+ size_t len = 0;
-+
-+ enum { protocol, pattern, done } datatype = protocol;
-+
-+ f = fopen(filename, "r");
-+
-+ if(!f)
-+ return 0;
-+
-+ while(getline(&line, &len, f) != -1)
-+ {
-+ if(strlen(line) < 2 || line[0] == '#')
-+ continue;
-+
-+ /* strip the pesky newline... */
-+ if(line[strlen(line) - 1] == '\n')
-+ line[strlen(line) - 1] = '\0';
-+
-+ if(datatype == protocol)
-+ {
-+ if(strcmp(line, protoname))
-+ exit_error(OTHER_PROBLEM,
-+ "Protocol name (%s) doesn't match file name (%s). Bailing out\n",
-+ protoname, filename);
-+
-+ if(strlen(line) >= MAX_PROTOCOL_LEN)
-+ exit_error(PARAMETER_PROBLEM,
-+ "Protocol name in %s too long!", filename);
-+ strncpy(info->protocol, line, MAX_PROTOCOL_LEN);
-+
-+ datatype = pattern;
-+ }
-+ else if(datatype == pattern)
-+ {
-+ if(strlen(line) >= MAX_PATTERN_LEN)
-+ exit_error(PARAMETER_PROBLEM, "Pattern in %s too long!", filename);
-+ strncpy(info->pattern, line, MAX_PATTERN_LEN);
-+
-+ datatype = done;
-+ break;
-+ }
-+ else
-+ exit_error(OTHER_PROBLEM, "Internal error");
-+ }
-+
-+ if(datatype != done)
-+ exit_error(OTHER_PROBLEM, "Failed to get all needed data from %s", filename);
-+
-+ if(line) free(line);
-+ fclose(f);
-+
-+ return 1;
-+
-+/*
-+ fprintf(stderr, "protocol: %s\npattern: %s\n\n",
-+ info->protocol,
-+ info->pattern);
-+*/
-+}
-+
-+static int hex2dec(char c)
-+{
-+ switch (c)
-+ {
-+ case '0' ... '9':
-+ return c - '0';
-+ case 'a' ... 'f':
-+ return c - 'a' + 10;
-+ case 'A' ... 'F':
-+ return c - 'A' + 10;
-+ default:
-+ exit_error(OTHER_PROBLEM, "hex2dec: bad value!\n");
-+ return 0;
-+ }
-+}
-+
-+/* takes a string with \xHH escapes and returns one with the characters
-+they stand for */
-+static char * pre_process(char * s)
-+{
-+ char * result = malloc(strlen(s) + 1);
-+ int sindex = 0, rindex = 0;
-+ while( sindex < strlen(s) )
-+ {
-+ if( sindex + 3 < strlen(s) &&
-+ s[sindex] == '\\' && s[sindex+1] == 'x' &&
-+ isxdigit(s[sindex + 2]) && isxdigit(s[sindex + 3]) )
-+ {
-+ /* carefully remember to call tolower here... */
-+ result[rindex] = tolower( hex2dec(s[sindex + 2])*16 +
-+ hex2dec(s[sindex + 3] ) );
-+ sindex += 3; /* 4 total */
-+ }
-+ else
-+ result[rindex] = tolower(s[sindex]);
-+
-+ sindex++;
-+ rindex++;
-+ }
-+ result[rindex] = '\0';
-+
-+ return result;
-+}
-+
-+#define MAX_SUBDIRS 128
-+char ** readl7dir(char * dirname)
-+{
-+ DIR * scratchdir;
-+ struct dirent ** namelist;
-+ char ** subdirs = malloc(MAX_SUBDIRS * sizeof(char *));
-+
-+ int n, d = 1;
-+ subdirs[0] = "";
-+
-+ n = scandir(dirname, &namelist, 0, alphasort);
-+
-+ if (n < 0)
-+ {
-+ perror("scandir");
-+ exit_error(OTHER_PROBLEM, "Couldn't open %s\n", dirname);
-+ }
-+ else
-+ {
-+ while(n--)
-+ {
-+ char fulldirname[MAX_FN_LEN];
-+
-+ snprintf(fulldirname, MAX_FN_LEN, "%s/%s", dirname, namelist[n]->d_name);
-+
-+ if((scratchdir = opendir(fulldirname)) != NULL)
-+ {
-+ closedir(scratchdir);
-+
-+ if(!strcmp(namelist[n]->d_name, ".") ||
-+ !strcmp(namelist[n]->d_name, ".."))
-+ /* do nothing */ ;
-+ else
-+ {
-+ subdirs[d] = malloc(strlen(namelist[n]->d_name) + 1);
-+ strcpy(subdirs[d], namelist[n]->d_name);
-+ d++;
-+ if(d >= MAX_SUBDIRS - 1)
-+ {
-+ fprintf(stderr,
-+ "Too many subdirectories, skipping the rest!\n");
-+ break;
-+ }
-+ }
-+ }
-+ free(namelist[n]);
-+ }
-+ free(namelist);
-+ }
-+
-+ subdirs[d] = NULL;
-+
-+ return subdirs;
-+}
-+
-+static void
-+parse_layer7_protocol(const unsigned char *s, struct ipt_layer7_info *info)
-+{
-+ char filename[MAX_FN_LEN];
-+ char * dir = NULL;
-+ char ** subdirs;
-+ int n = 0, done = 0;
-+
-+ if(strlen(l7dir) > 0)
-+ dir = l7dir;
-+ else
-+ dir = "/etc/l7-protocols";
-+
-+ subdirs = readl7dir(dir);
-+
-+ while(subdirs[n] != NULL)
-+ {
-+ int c = snprintf(filename, MAX_FN_LEN, "%s/%s/%s.pat", dir, subdirs[n], s);
-+
-+ //fprintf(stderr, "Trying to find pattern in %s ... ", filename);
-+
-+ if(c > MAX_FN_LEN)
-+ {
-+ exit_error(OTHER_PROBLEM,
-+ "Filename beginning with %s is too long!\n", filename);
-+ }
-+
-+ /* read in the pattern from the file */
-+ if(parse_protocol_file(filename, s, info))
-+ {
-+ //fprintf(stderr, "found\n");
-+ done = 1;
-+ break;
-+ }
-+
-+ //fprintf(stderr, "not found\n");
-+
-+ n++;
-+ }
-+
-+ if(!done)
-+ exit_error(OTHER_PROBLEM,
-+ "Couldn't find a pattern definition file for %s.\n", s);
-+
-+ /* process \xHH escapes and tolower everything. (our regex lib has no
-+ case insensitivity option.) */
-+ strncpy(info->pattern, pre_process(info->pattern), MAX_PATTERN_LEN);
-+}
-+
-+/* Function which parses command options; returns true if it ate an option */
-+static int parse(int c, char **argv, int invert, unsigned int *flags,
-+ const struct ipt_entry *entry, unsigned int *nfcache,
-+ struct ipt_entry_match **match)
-+{
-+ struct ipt_layer7_info *layer7info =
-+ (struct ipt_layer7_info *)(*match)->data;
-+
-+ switch (c) {
-+ case '1':
-+ check_inverse(optarg, &invert, &optind, 0);
-+ parse_layer7_protocol(argv[optind-1], layer7info);
-+ if (invert)
-+ layer7info->invert = 1;
-+ *flags = 1;
-+ break;
-+
-+ case '2':
-+ /* not going to use this, but maybe we need to strip a ! anyway (?) */
-+ check_inverse(optarg, &invert, &optind, 0);
-+
-+ if(strlen(argv[optind-1]) >= MAX_FN_LEN)
-+ exit_error(PARAMETER_PROBLEM, "directory name too long\n");
-+
-+ strncpy(l7dir, argv[optind-1], MAX_FN_LEN);
-+
-+ *flags = 1;
-+ break;
-+ case '3':
-+ layer7info->pkt = 1;
-+ break;
-+
-+ default:
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
-+/* Final check; must have specified --pattern. */
-+static void final_check(unsigned int flags)
-+{
-+ if (!flags)
-+ exit_error(PARAMETER_PROBLEM,
-+ "LAYER7 match: You must specify `--pattern'");
-+}
-+
-+static void print_protocol(char s[], int invert, int numeric)
-+{
-+ fputs("l7proto ", stdout);
-+ if (invert) fputc('!', stdout);
-+ printf("%s ", s);
-+}
-+
-+/* Prints out the matchinfo. */
-+static void print(const struct ipt_ip *ip,
-+ const struct ipt_entry_match *match,
-+ int numeric)
-+{
-+ printf("LAYER7 ");
-+
-+ print_protocol(((struct ipt_layer7_info *)match->data)->protocol,
-+ ((struct ipt_layer7_info *)match->data)->invert, numeric);
-+
-+ if (((struct ipt_layer7_info *)match->data)->pkt)
-+ printf("l7pkt ");
-+}
-+/* Saves the union ipt_matchinfo in parsable form to stdout. */
-+static void save(const struct ipt_ip *ip, const struct ipt_entry_match *match)
-+{
-+ const struct ipt_layer7_info *info =
-+ (const struct ipt_layer7_info*) match->data;
-+
-+ printf("--l7proto %s%s ", (info->invert) ? "! ": "", info->protocol);
-+}
-+
-+static struct iptables_match layer7 = {
-+ .name = "layer7",
-+ .version = IPTABLES_VERSION,
-+ .size = IPT_ALIGN(sizeof(struct ipt_layer7_info)),
-+ .userspacesize = IPT_ALIGN(sizeof(struct ipt_layer7_info)),
-+ .help = &help,
-+ .parse = &parse,
-+ .final_check = &final_check,
-+ .print = &print,
-+ .save = &save,
-+ .extra_opts = opts
-+};
-+
-+void _init(void)
-+{
-+ register_match(&layer7);
-+}
-diff -urN iptables.old/extensions/libipt_layer7.man iptables.dev/extensions/libipt_layer7.man
---- iptables.old/extensions/libipt_layer7.man 1970-01-01 01:00:00.000000000 +0100
-+++ iptables.dev/extensions/libipt_layer7.man 2005-11-10 16:57:51.823381250 +0100
-@@ -0,0 +1,13 @@
-+This module matches packets based on the application layer data of
-+their connections. It uses regular expression matching to compare
-+the application layer data to regular expressions found it the layer7
-+configuration files. This is an experimental module which can be found at
-+http://l7-filter.sf.net. It takes two options.
-+.TP
-+.BI "--l7proto " "\fIprotocol\fP"
-+Match the specified protocol. The protocol name must match a file
-+name in /etc/l7-protocols/
-+.TP
-+.BI "--l7dir " "\fIdirectory\fP"
-+Use \fIdirectory\fP instead of /etc/l7-protocols/
-+
diff --git a/openwrt/package/iptables/patches/04-multiport_v1.patch b/openwrt/package/iptables/patches/04-multiport_v1.patch
deleted file mode 100644
index 90b5144c75..0000000000
--- a/openwrt/package/iptables/patches/04-multiport_v1.patch
+++ /dev/null
@@ -1,221 +0,0 @@
-diff -urN iptables.old/extensions/libipt_multiport.c iptables.dev/extensions/libipt_multiport.c
---- iptables.old/extensions/libipt_multiport.c 2005-02-19 20:19:17.000000000 +0100
-+++ iptables.dev/extensions/libipt_multiport.c 2006-02-04 05:46:12.154127750 +0100
-@@ -8,24 +8,6 @@
- /* To ensure that iptables compiles with an old kernel */
- #include "../include/linux/netfilter_ipv4/ipt_multiport.h"
-
--/* Function which prints out usage message. */
--static void
--help(void)
--{
-- printf(
--"multiport v%s options:\n"
--" --source-ports port[,port,port...]\n"
--" --sports ...\n"
--" match source port(s)\n"
--" --destination-ports port[,port,port...]\n"
--" --dports ...\n"
--" match destination port(s)\n"
--" --ports port[,port,port]\n"
--" match both source and destination port(s)\n"
--" NOTE: this kernel does not support port ranges in multiport.\n",
--IPTABLES_VERSION);
--}
--
- static void
- help_v1(void)
- {
-@@ -75,26 +57,6 @@
- "invalid port/service `%s' specified", port);
- }
-
--static unsigned int
--parse_multi_ports(const char *portstring, u_int16_t *ports, const char *proto)
--{
-- char *buffer, *cp, *next;
-- unsigned int i;
--
-- buffer = strdup(portstring);
-- if (!buffer) exit_error(OTHER_PROBLEM, "strdup failed");
--
-- for (cp=buffer, i=0; cp && i<IPT_MULTI_PORTS; cp=next,i++)
-- {
-- next=strchr(cp, ',');
-- if (next) *next++='\0';
-- ports[i] = parse_port(cp, proto);
-- }
-- if (cp) exit_error(PARAMETER_PROBLEM, "too many ports specified");
-- free(buffer);
-- return i;
--}
--
- static void
- parse_multi_ports_v1(const char *portstring,
- struct ipt_multiport_v1 *multiinfo,
-@@ -160,58 +122,6 @@
- "multiport only works with TCP or UDP");
- }
-
--/* Function which parses command options; returns true if it
-- ate an option */
--static int
--parse(int c, char **argv, int invert, unsigned int *flags,
-- const struct ipt_entry *entry,
-- unsigned int *nfcache,
-- struct ipt_entry_match **match)
--{
-- const char *proto;
-- struct ipt_multiport *multiinfo
-- = (struct ipt_multiport *)(*match)->data;
--
-- switch (c) {
-- case '1':
-- check_inverse(argv[optind-1], &invert, &optind, 0);
-- proto = check_proto(entry);
-- multiinfo->count = parse_multi_ports(argv[optind-1],
-- multiinfo->ports, proto);
-- multiinfo->flags = IPT_MULTIPORT_SOURCE;
-- break;
--
-- case '2':
-- check_inverse(argv[optind-1], &invert, &optind, 0);
-- proto = check_proto(entry);
-- multiinfo->count = parse_multi_ports(argv[optind-1],
-- multiinfo->ports, proto);
-- multiinfo->flags = IPT_MULTIPORT_DESTINATION;
-- break;
--
-- case '3':
-- check_inverse(argv[optind-1], &invert, &optind, 0);
-- proto = check_proto(entry);
-- multiinfo->count = parse_multi_ports(argv[optind-1],
-- multiinfo->ports, proto);
-- multiinfo->flags = IPT_MULTIPORT_EITHER;
-- break;
--
-- default:
-- return 0;
-- }
--
-- if (invert)
-- exit_error(PARAMETER_PROBLEM,
-- "multiport does not support invert");
--
-- if (*flags)
-- exit_error(PARAMETER_PROBLEM,
-- "multiport can only have one option");
-- *flags = 1;
-- return 1;
--}
--
- static int
- parse_v1(int c, char **argv, int invert, unsigned int *flags,
- const struct ipt_entry *entry,
-@@ -289,43 +199,6 @@
- printf("%s", service);
- }
-
--/* Prints out the matchinfo. */
--static void
--print(const struct ipt_ip *ip,
-- const struct ipt_entry_match *match,
-- int numeric)
--{
-- const struct ipt_multiport *multiinfo
-- = (const struct ipt_multiport *)match->data;
-- unsigned int i;
--
-- printf("multiport ");
--
-- switch (multiinfo->flags) {
-- case IPT_MULTIPORT_SOURCE:
-- printf("sports ");
-- break;
--
-- case IPT_MULTIPORT_DESTINATION:
-- printf("dports ");
-- break;
--
-- case IPT_MULTIPORT_EITHER:
-- printf("ports ");
-- break;
--
-- default:
-- printf("ERROR ");
-- break;
-- }
--
-- for (i=0; i < multiinfo->count; i++) {
-- printf("%s", i ? "," : "");
-- print_port(multiinfo->ports[i], ip->proto, numeric);
-- }
-- printf(" ");
--}
--
- static void
- print_v1(const struct ipt_ip *ip,
- const struct ipt_entry_match *match,
-@@ -369,34 +242,6 @@
- printf(" ");
- }
-
--/* Saves the union ipt_matchinfo in parsable form to stdout. */
--static void save(const struct ipt_ip *ip, const struct ipt_entry_match *match)
--{
-- const struct ipt_multiport *multiinfo
-- = (const struct ipt_multiport *)match->data;
-- unsigned int i;
--
-- switch (multiinfo->flags) {
-- case IPT_MULTIPORT_SOURCE:
-- printf("--sports ");
-- break;
--
-- case IPT_MULTIPORT_DESTINATION:
-- printf("--dports ");
-- break;
--
-- case IPT_MULTIPORT_EITHER:
-- printf("--ports ");
-- break;
-- }
--
-- for (i=0; i < multiinfo->count; i++) {
-- printf("%s", i ? "," : "");
-- print_port(multiinfo->ports[i], ip->proto, 1);
-- }
-- printf(" ");
--}
--
- static void save_v1(const struct ipt_ip *ip,
- const struct ipt_entry_match *match)
- {
-@@ -432,19 +277,20 @@
- printf(" ");
- }
-
-+
- static struct iptables_match multiport = {
- .next = NULL,
- .name = "multiport",
-- .revision = 0,
- .version = IPTABLES_VERSION,
-- .size = IPT_ALIGN(sizeof(struct ipt_multiport)),
-- .userspacesize = IPT_ALIGN(sizeof(struct ipt_multiport)),
-- .help = &help,
-+ .revision = 0,
-+ .size = IPT_ALIGN(sizeof(struct ipt_multiport_v1)),
-+ .userspacesize = IPT_ALIGN(sizeof(struct ipt_multiport_v1)),
-+ .help = &help_v1,
- .init = &init,
-- .parse = &parse,
-+ .parse = &parse_v1,
- .final_check = &final_check,
-- .print = &print,
-- .save = &save,
-+ .print = &print_v1,
-+ .save = &save_v1,
- .extra_opts = opts
- };
-
diff --git a/openwrt/package/iptables/patches/05-imq1.patch b/openwrt/package/iptables/patches/05-imq1.patch
deleted file mode 100644
index 4591890304..0000000000
--- a/openwrt/package/iptables/patches/05-imq1.patch
+++ /dev/null
@@ -1,224 +0,0 @@
-diff -urN iptables.old/extensions/.IMQ-test iptables.dev/extensions/.IMQ-test
---- iptables.old/extensions/.IMQ-test 1970-01-01 01:00:00.000000000 +0100
-+++ iptables.dev/extensions/.IMQ-test 2005-10-09 01:00:36.358959750 +0200
-@@ -0,0 +1,3 @@
-+#!/bin/sh
-+# True if IMQ target patch is applied.
-+[ -f $KERNEL_DIR/net/ipv4/netfilter/ipt_IMQ.c ] && echo IMQ
-diff -urN iptables.old/extensions/.IMQ-test6 iptables.dev/extensions/.IMQ-test6
---- iptables.old/extensions/.IMQ-test6 1970-01-01 01:00:00.000000000 +0100
-+++ iptables.dev/extensions/.IMQ-test6 2005-10-09 01:00:36.358959750 +0200
-@@ -0,0 +1,3 @@
-+#!/bin/sh
-+# True if IMQ target patch is applied.
-+[ -f $KERNEL_DIR/net/ipv6/netfilter/ip6t_IMQ.c ] && echo IMQ
-diff -urN iptables.old/extensions/libip6t_IMQ.c iptables.dev/extensions/libip6t_IMQ.c
---- iptables.old/extensions/libip6t_IMQ.c 1970-01-01 01:00:00.000000000 +0100
-+++ iptables.dev/extensions/libip6t_IMQ.c 2005-10-09 01:00:36.358959750 +0200
-@@ -0,0 +1,101 @@
-+/* Shared library add-on to iptables to add IMQ target support. */
-+#include <stdio.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include <getopt.h>
-+
-+#include <ip6tables.h>
-+#include <linux/netfilter_ipv6/ip6_tables.h>
-+#include <linux/netfilter_ipv6/ip6t_IMQ.h>
-+
-+/* Function which prints out usage message. */
-+static void
-+help(void)
-+{
-+ printf(
-+"IMQ target v%s options:\n"
-+" --todev <N> enqueue to imq<N>, defaults to 0\n",
-+IPTABLES_VERSION);
-+}
-+
-+static struct option opts[] = {
-+ { "todev", 1, 0, '1' },
-+ { 0 }
-+};
-+
-+/* Initialize the target. */
-+static void
-+init(struct ip6t_entry_target *t, unsigned int *nfcache)
-+{
-+ struct ip6t_imq_info *mr = (struct ip6t_imq_info*)t->data;
-+
-+ mr->todev = 0;
-+ *nfcache |= NFC_UNKNOWN;
-+}
-+
-+/* Function which parses command options; returns true if it
-+ ate an option */
-+static int
-+parse(int c, char **argv, int invert, unsigned int *flags,
-+ const struct ip6t_entry *entry,
-+ struct ip6t_entry_target **target)
-+{
-+ struct ip6t_imq_info *mr = (struct ip6t_imq_info*)(*target)->data;
-+
-+ switch(c) {
-+ case '1':
-+ if (check_inverse(optarg, &invert, NULL, 0))
-+ exit_error(PARAMETER_PROBLEM,
-+ "Unexpected `!' after --todev");
-+ mr->todev=atoi(optarg);
-+ break;
-+ default:
-+ return 0;
-+ }
-+ return 1;
-+}
-+
-+static void
-+final_check(unsigned int flags)
-+{
-+}
-+
-+/* Prints out the targinfo. */
-+static void
-+print(const struct ip6t_ip6 *ip,
-+ const struct ip6t_entry_target *target,
-+ int numeric)
-+{
-+ struct ip6t_imq_info *mr = (struct ip6t_imq_info*)target->data;
-+
-+ printf("IMQ: todev %u ", mr->todev);
-+}
-+
-+/* Saves the union ipt_targinfo in parsable form to stdout. */
-+static void
-+save(const struct ip6t_ip6 *ip, const struct ip6t_entry_target *target)
-+{
-+ struct ip6t_imq_info *mr = (struct ip6t_imq_info*)target->data;
-+
-+ printf("--todev %u", mr->todev);
-+}
-+
-+static struct ip6tables_target imq = {
-+ .next = NULL,
-+ .name = "IMQ",
-+ .version = IPTABLES_VERSION,
-+ .size = IP6T_ALIGN(sizeof(struct ip6t_imq_info)),
-+ .userspacesize = IP6T_ALIGN(sizeof(struct ip6t_imq_info)),
-+ .help = &help,
-+ .init = &init,
-+ .parse = &parse,
-+ .final_check = &final_check,
-+ .print = &print,
-+ .save = &save,
-+ .extra_opts = opts
-+};
-+
-+void _init(void)
-+{
-+ register_target6(&imq);
-+}
-diff -urN iptables.old/extensions/libipt_IMQ.c iptables.dev/extensions/libipt_IMQ.c
---- iptables.old/extensions/libipt_IMQ.c 1970-01-01 01:00:00.000000000 +0100
-+++ iptables.dev/extensions/libipt_IMQ.c 2005-10-09 01:00:36.358959750 +0200
-@@ -0,0 +1,101 @@
-+/* Shared library add-on to iptables to add IMQ target support. */
-+#include <stdio.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include <getopt.h>
-+
-+#include <iptables.h>
-+#include <linux/netfilter_ipv4/ip_tables.h>
-+#include <linux/netfilter_ipv4/ipt_IMQ.h>
-+
-+/* Function which prints out usage message. */
-+static void
-+help(void)
-+{
-+ printf(
-+"IMQ target v%s options:\n"
-+" --todev <N> enqueue to imq<N>, defaults to 0\n",
-+IPTABLES_VERSION);
-+}
-+
-+static struct option opts[] = {
-+ { "todev", 1, 0, '1' },
-+ { 0 }
-+};
-+
-+/* Initialize the target. */
-+static void
-+init(struct ipt_entry_target *t, unsigned int *nfcache)
-+{
-+ struct ipt_imq_info *mr = (struct ipt_imq_info*)t->data;
-+
-+ mr->todev = 0;
-+ *nfcache |= NFC_UNKNOWN;
-+}
-+
-+/* Function which parses command options; returns true if it
-+ ate an option */
-+static int
-+parse(int c, char **argv, int invert, unsigned int *flags,
-+ const struct ipt_entry *entry,
-+ struct ipt_entry_target **target)
-+{
-+ struct ipt_imq_info *mr = (struct ipt_imq_info*)(*target)->data;
-+
-+ switch(c) {
-+ case '1':
-+ if (check_inverse(optarg, &invert, NULL, 0))
-+ exit_error(PARAMETER_PROBLEM,
-+ "Unexpected `!' after --todev");
-+ mr->todev=atoi(optarg);
-+ break;
-+ default:
-+ return 0;
-+ }
-+ return 1;
-+}
-+
-+static void
-+final_check(unsigned int flags)
-+{
-+}
-+
-+/* Prints out the targinfo. */
-+static void
-+print(const struct ipt_ip *ip,
-+ const struct ipt_entry_target *target,
-+ int numeric)
-+{
-+ struct ipt_imq_info *mr = (struct ipt_imq_info*)target->data;
-+
-+ printf("IMQ: todev %u ", mr->todev);
-+}
-+
-+/* Saves the union ipt_targinfo in parsable form to stdout. */
-+static void
-+save(const struct ipt_ip *ip, const struct ipt_entry_target *target)
-+{
-+ struct ipt_imq_info *mr = (struct ipt_imq_info*)target->data;
-+
-+ printf("--todev %u", mr->todev);
-+}
-+
-+static struct iptables_target imq = {
-+ .next = NULL,
-+ .name = "IMQ",
-+ .version = IPTABLES_VERSION,
-+ .size = IPT_ALIGN(sizeof(struct ipt_imq_info)),
-+ .userspacesize = IPT_ALIGN(sizeof(struct ipt_imq_info)),
-+ .help = &help,
-+ .init = &init,
-+ .parse = &parse,
-+ .final_check = &final_check,
-+ .print = &print,
-+ .save = &save,
-+ .extra_opts = opts
-+};
-+
-+void _init(void)
-+{
-+ register_target(&imq);
-+}
diff --git a/openwrt/package/iptraf/Config.in b/openwrt/package/iptraf/Config.in
deleted file mode 100644
index 3f15165d00..0000000000
--- a/openwrt/package/iptraf/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_IPTRAF
- prompt "iptraf............................ A console-based network monitoring program"
- tristate
- default m if CONFIG_DEVEL
- help
- IPTraf is a console-based network statistics utility for Linux. It gathers
- a variety of figures such as TCP connection packet and byte counts,
- interface statistics and activity indicators, TCP/UDP traffic breakdowns,
- and LAN station packet and byte counts.
-
- http://iptraf.seul.org/
-
diff --git a/openwrt/package/iptraf/Makefile b/openwrt/package/iptraf/Makefile
deleted file mode 100644
index 45377c604d..0000000000
--- a/openwrt/package/iptraf/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=iptraf
-PKG_VERSION:=3.0.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=377371c28ee3c21a76f7024920649ea8
-
-PKG_SOURCE_URL:=ftp://iptraf.seul.org/pub/iptraf/ \
- ftp://the.wiretapped.net/pub/security/network-monitoring/iptraf/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,IPTRAF,iptraf,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- $(MAKE) -C $(PKG_BUILD_DIR)/src \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- DEBUG="" \
- INCLUDEDIR="-I../support -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDOPTS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- PLATFORM="-DPLATFORM=\\\"Linux/$(ARCH)\\\"" \
- TARGET="/usr/bin" \
- WORKDIR="/var/lib/iptraf" \
- all
- touch $@
-
-$(IPKG_IPTRAF):
- install -d -m0755 $(IDIR_IPTRAF)/usr/bin \
- $(IDIR_IPTRAF)/var/run/iptraf \
- $(IDIR_IPTRAF)/var/lib/iptraf
- install -m0755 $(PKG_BUILD_DIR)/src/iptraf $(IDIR_IPTRAF)/usr/bin/
- $(RSTRIP) $(IDIR_IPTRAF)
- $(IPKG_BUILD) $(IDIR_IPTRAF) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/iptraf/ipkg/iptraf.control b/openwrt/package/iptraf/ipkg/iptraf.control
deleted file mode 100644
index 840c9d1e03..0000000000
--- a/openwrt/package/iptraf/ipkg/iptraf.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: iptraf
-Priority: optional
-Section: net
-Depends: libncurses
-Description: A console-based network monitoring program.
diff --git a/openwrt/package/iptraf/patches/01-cross_compile.patch b/openwrt/package/iptraf/patches/01-cross_compile.patch
deleted file mode 100644
index c12719d25a..0000000000
--- a/openwrt/package/iptraf/patches/01-cross_compile.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -urN iptraf-3.0.0/support/Makefile iptraf-3.0.0.new/support/Makefile
---- iptraf-3.0.0/support/Makefile 2002-07-19 18:31:48.000000000 +0200
-+++ iptraf-3.0.0.new/support/Makefile 2006-04-16 16:07:58.000000000 +0200
-@@ -3,16 +3,14 @@
- OBJS = input.o menurt.o listbox.o winops.o labels.o \
- msgboxes.o txbox.o
-
--all: libtextbox.a
--
- libtextbox.a: $(OBJS)
- rm -rf libtextbox.a
-- ar cq libtextbox.a $(OBJS)
-- ranlib libtextbox.a
--# gcc -shared -o libtextbox.so $(OBJS)
-+ $(AR) cq libtextbox.a $(OBJS)
-+ $(RANLIB) libtextbox.a
-+# $(CC) -shared -o libtextbox.so $(OBJS)
-
- %.o: %.c *.h
-- gcc -O2 -g -Wall -fPIC $(INCLUDEDIR) -c -o $*.o $<
-+ $(CC) -O2 -g -Wall -fPIC $(INCLUDEDIR) -c -o $*.o $<
-
- clean:
- rm -rf *.o *~ libtextbox.a libtextbox.so
diff --git a/openwrt/package/iptraf/patches/02-ifaces.patch b/openwrt/package/iptraf/patches/02-ifaces.patch
deleted file mode 100644
index 0b70022f09..0000000000
--- a/openwrt/package/iptraf/patches/02-ifaces.patch
+++ /dev/null
@@ -1,294 +0,0 @@
-diff -urN iptraf-3.0.0/src/dirs.h iptraf-3.0.0.new/src/dirs.h
---- iptraf-3.0.0/src/dirs.h 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/dirs.h 2006-04-16 16:08:27.000000000 +0200
-@@ -155,7 +155,6 @@
- */
-
- #define ETHFILE get_path(T_WORKDIR, "ethernet.desc")
--#define FDDIFILE get_path(T_WORKDIR, "fddi.desc")
-
- /*
- * The rvnamed program file
-diff -urN iptraf-3.0.0/src/hostmon.c iptraf-3.0.0.new/src/hostmon.c
---- iptraf-3.0.0/src/hostmon.c 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/hostmon.c 2006-04-16 16:29:27.000000000 +0200
-@@ -30,7 +30,6 @@
- #include <netinet/in.h>
- #include <linux/if_packet.h>
- #include <linux/if_ether.h>
--#include <linux/if_fddi.h>
- #include <linux/if_tr.h>
- #include <net/if_arp.h>
- #include <stdlib.h>
-@@ -293,8 +292,6 @@
- wprintw(table->tabwin, "Ethernet");
- else if (entry->un.desc.linktype == LINK_PLIP)
- wprintw(table->tabwin, "PLIP");
-- else if (entry->un.desc.linktype == LINK_FDDI)
-- wprintw(table->tabwin, "FDDI");
-
- wprintw(table->tabwin, " HW addr: %s", entry->un.desc.ascaddr);
-
-@@ -722,7 +719,7 @@
- unsigned long long updtime_usec = 0;
-
- struct desclist elist; /* Ethernet description list */
-- struct desclist flist; /* FDDI description list */
-+ struct desclist flist; /* Other links description list */
- struct desclist *list = NULL;
-
- FILE *logfile = NULL;
-@@ -786,7 +783,6 @@
-
- initethtab(&table, options->actmode);
- loaddesclist(&elist, LINK_ETHERNET, WITHETCETHERS);
-- loaddesclist(&flist, LINK_FDDI, WITHETCETHERS);
-
- if (logging) {
- if (strcmp(current_logfile, "") == 0) {
-@@ -900,9 +896,7 @@
- if (pkt_result != PACKET_OK)
- continue;
-
-- if ((linktype == LINK_ETHERNET) || (linktype == LINK_FDDI)
-- || (linktype == LINK_PLIP) || (linktype == LINK_TR) ||
-- (linktype == LINK_VLAN)) {
-+ if ((linktype == LINK_ETHERNET) || (linktype == LINK_PLIP) || (linktype == LINK_TR) || (linktype == LINK_VLAN)) {
-
- if (fromaddr.sll_protocol == htons(ETH_P_IP))
- is_ip = 1;
-@@ -920,12 +914,6 @@
- memcpy(scratch_daddr, ((struct ethhdr *) buf)->h_dest,
- ETH_ALEN);
- list = &elist;
-- } else if (linktype == LINK_FDDI) {
-- memcpy(scratch_saddr, ((struct fddihdr *) buf)->saddr,
-- FDDI_K_ALEN);
-- memcpy(scratch_daddr, ((struct fddihdr *) buf)->daddr,
-- FDDI_K_ALEN);
-- list = &flist;
- } else if (linktype == LINK_TR) {
- memcpy(scratch_saddr, ((struct trh_hdr *) buf)->saddr,
- TR_ALEN);
-diff -urN iptraf-3.0.0/src/ifaces.c iptraf-3.0.0.new/src/ifaces.c
---- iptraf-3.0.0/src/ifaces.c 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/ifaces.c 2006-04-16 16:10:10.000000000 +0200
-@@ -37,7 +37,7 @@
- extern int daemonized;
-
- char ifaces[][6] =
-- { "lo", "eth", "sl", "ppp", "ippp", "plip", "fddi", "isdn", "dvb",
-+ { "lo", "eth", "sl", "ppp", "ippp", "plip", "isdn", "dvb",
- "pvc", "hdlc", "ipsec", "sbni", "tr", "wvlan", "wlan", "sm2", "sm3",
- "pent", "lec", "brg", "tun", "tap", "cipcb", "tunl", "vlan"
- };
-diff -urN iptraf-3.0.0/src/landesc.c iptraf-3.0.0.new/src/landesc.c
---- iptraf-3.0.0/src/landesc.c 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/landesc.c 2006-04-16 16:10:29.000000000 +0200
-@@ -83,8 +83,6 @@
-
- if (linktype == LINK_ETHERNET)
- fd = fopen(ETHFILE, "r");
-- else if (linktype == LINK_FDDI)
-- fd = fopen(FDDIFILE, "r");
-
- if (fd == NULL) {
- return;
-@@ -205,8 +203,6 @@
-
- if (linktype == LINK_ETHERNET)
- fd = fopen(ETHFILE, "w");
-- else if (linktype == LINK_FDDI)
-- fd = fopen(FDDIFILE, "w");
-
- if (fd < 0) {
- etherr();
-diff -urN iptraf-3.0.0/src/links.h iptraf-3.0.0.new/src/links.h
---- iptraf-3.0.0/src/links.h 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/links.h 2006-04-16 16:10:39.000000000 +0200
-@@ -6,7 +6,6 @@
- #define LINK_ISDN_RAWIP 6
- #define LINK_ISDN_CISCOHDLC 7
- #define LINK_CISCOHDLC 7
--#define LINK_FDDI 8
- #define LINK_FRAD 9
- #define LINK_DLCI 10
- #define LINK_TR 11
-diff -urN iptraf-3.0.0/src/log.c iptraf-3.0.0.new/src/log.c
---- iptraf-3.0.0/src/log.c 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/log.c 2006-04-16 16:10:53.000000000 +0200
-@@ -491,8 +491,6 @@
- ptmp->un.desc.ascaddr);
- else if (ptmp->un.desc.linktype == LINK_PLIP)
- fprintf(fd, "\nPLIP address: %s", ptmp->un.desc.ascaddr);
-- else if (ptmp->un.desc.linktype == LINK_FDDI)
-- fprintf(fd, "\nFDDI address: %s", ptmp->un.desc.ascaddr);
-
- if (ptmp->un.desc.withdesc)
- fprintf(fd, " (%s)", ptmp->un.desc.desc);
-diff -urN iptraf-3.0.0/src/options.c iptraf-3.0.0.new/src/options.c
---- iptraf-3.0.0/src/options.c 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/options.c 2006-04-16 16:23:52.000000000 +0200
-@@ -68,8 +68,6 @@
- tx_additem(menu, NULL, NULL);
- tx_additem(menu, " ^E^thernet/PLIP host descriptions...",
- "Manages descriptions for Ethernet and PLIP addresses");
-- tx_additem(menu, " ^F^DDI/Token Ring host descriptions...",
-- "Manages descriptions for FDDI and FDDI addresses");
- tx_additem(menu, NULL, NULL);
- tx_additem(menu, " E^x^it configuration", "Returns to main menu");
- }
-@@ -371,9 +369,6 @@
- case 14:
- ethdescmgr(LINK_ETHERNET);
- break;
-- case 15:
-- ethdescmgr(LINK_FDDI);
-- break;
- }
-
- indicatesetting(row, options, statwin);
-diff -urN iptraf-3.0.0/src/othptab.c iptraf-3.0.0.new/src/othptab.c
---- iptraf-3.0.0/src/othptab.c 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/othptab.c 2006-04-16 16:24:21.000000000 +0200
-@@ -19,7 +19,6 @@
- #include <asm/types.h>
- #include <linux/if_ether.h>
- #include <linux/if_tr.h>
--#include <linux/if_fddi.h>
- #include <winops.h>
- #include "arphdr.h"
- #include "options.h"
-@@ -139,11 +138,6 @@
- new_entry->smacaddr);
- convmacaddr(((struct ethhdr *) packet)->h_dest,
- new_entry->dmacaddr);
-- } else if (linkproto == LINK_FDDI) {
-- convmacaddr(((struct fddihdr *) packet)->saddr,
-- new_entry->smacaddr);
-- convmacaddr(((struct fddihdr *) packet)->daddr,
-- new_entry->dmacaddr);
- } else if (linkproto == LINK_TR) {
- convmacaddr(((struct trh_hdr *) packet)->saddr,
- new_entry->smacaddr);
-@@ -373,8 +367,7 @@
- strcat(msgstring, scratchpad);
-
- if ((entry->linkproto == LINK_ETHERNET) ||
-- (entry->linkproto == LINK_PLIP) ||
-- (entry->linkproto == LINK_FDDI)) {
-+ (entry->linkproto == LINK_PLIP)) {
- sprintf(scratchpad, " from %s to %s on %s",
- entry->smacaddr, entry->dmacaddr, entry->iface);
-
-diff -urN iptraf-3.0.0/src/packet.c iptraf-3.0.0.new/src/packet.c
---- iptraf-3.0.0/src/packet.c 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/packet.c 2006-04-16 16:11:55.000000000 +0200
-@@ -35,7 +35,6 @@
- #include <sys/ioctl.h>
- #include <linux/if_packet.h>
- #include <linux/if_ether.h>
--#include <linux/if_fddi.h>
- #include <linux/if_tr.h>
- #include <linux/isdn.h>
- #include <linux/sockios.h>
-@@ -81,8 +80,6 @@
- result = LINK_ETHERNET;
- else if (strncmp(ifname, "plip", 4) == 0)
- result = LINK_PLIP;
-- else if (strncmp(ifname, "fddi", 4) == 0) /* For some Ethernet- */
-- result = LINK_ETHERNET; /* emulated FDDI ifaces */
- else if (strncmp(ifname, "dvb", 3) == 0)
- result = LINK_ETHERNET;
- else if (strncmp(ifname, "sbni", 4) == 0)
-@@ -136,9 +133,6 @@
- case ARPHRD_PPP:
- result = LINK_PPP;
- break;
-- case ARPHRD_FDDI:
-- result = LINK_FDDI;
-- break;
- case ARPHRD_IEEE802:
- case ARPHRD_IEEE802_TR:
- result = LINK_TR;
-@@ -194,19 +188,6 @@
- *packet = tpacket + 4;
- *readlen -= 4;
- break;
-- case LINK_FDDI:
-- *packet = tpacket + sizeof(struct fddihdr);
-- *readlen -= sizeof(struct fddihdr);
--
-- /*
-- * Move IP data into an aligned buffer. 96 bytes should be sufficient
-- * for IP and TCP headers with reasonable numbers of options and some
-- * data.
-- */
--
-- memmove(aligned_buf, *packet, min(SNAPSHOT_LEN, *readlen));
-- *packet = aligned_buf;
-- break;
- case LINK_TR:
- /*
- * Token Ring patch supplied by Tomas Dvorak
-diff -urN iptraf-3.0.0/src/promisc.c iptraf-3.0.0.new/src/promisc.c
---- iptraf-3.0.0/src/promisc.c 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/promisc.c 2006-04-16 16:12:56.000000000 +0200
-@@ -81,8 +81,8 @@
- */
-
- if ((strncmp(buf, "eth", 3) == 0) ||
-- (strncmp(buf, "fddi", 4) == 0) ||
- (strncmp(buf, "tr", 2) == 0) ||
-+ (strncmp(buf, "vlan", 4) == 0) ||
- (strncmp(ptmp->params.ifname, "wvlan", 4) == 0) ||
- (strncmp(ptmp->params.ifname, "lec", 3) == 0) ||
- (accept_unsupported_interfaces)) {
-@@ -195,7 +195,7 @@
-
- while (ptmp != NULL) {
- if (((strncmp(ptmp->params.ifname, "eth", 3) == 0) ||
-- (strncmp(ptmp->params.ifname, "fddi", 4) == 0) ||
-+ (strncmp(ptmp->params.ifname, "vlan", 4) == 0) ||
- (strncmp(ptmp->params.ifname, "tr", 2) == 0) ||
- (strncmp(ptmp->params.ifname, "wvlan", 4) == 0) ||
- (strncmp(ptmp->params.ifname, "lec", 3) == 0)) &&
-diff -urN iptraf-3.0.0/src/rvnamed.h iptraf-3.0.0.new/src/rvnamed.h
---- iptraf-3.0.0/src/rvnamed.h 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/rvnamed.h 2006-04-16 16:13:39.000000000 +0200
-@@ -1,9 +1,9 @@
- #include <netinet/in.h>
- #include <arpa/inet.h>
-
--#define CHILDSOCKNAME "/dev/rvndcldcomsk"
--#define PARENTSOCKNAME "/dev/rvndpntcomsk"
--#define IPTSOCKNAME "/dev/rvndiptcomsk"
-+#define CHILDSOCKNAME "/tmp/rvndcldcomsk"
-+#define PARENTSOCKNAME "/tmp/rvndpntcomsk"
-+#define IPTSOCKNAME "/tmp/rvndiptcomsk"
-
- #define SOCKET_PREFIX "isock"
-
-diff -urN iptraf-3.0.0/src/tcptable.c iptraf-3.0.0.new/src/tcptable.c
---- iptraf-3.0.0/src/tcptable.c 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/tcptable.c 2006-04-16 16:13:54.000000000 +0200
-@@ -600,8 +600,6 @@
-
- if ((linkproto == LINK_ETHERNET) || (linkproto == LINK_PLIP)) {
- convmacaddr(((struct ethhdr *) packet)->h_source, newmacaddr);
-- } else if (linkproto == LINK_FDDI) {
-- convmacaddr(((struct fddihdr *) packet)->saddr, newmacaddr);
- } else if (linkproto == LINK_TR) {
- convmacaddr(((struct trh_hdr *) packet)->saddr, newmacaddr);
- }
-diff -urN iptraf-3.0.0/src/tcptable.h iptraf-3.0.0.new/src/tcptable.h
---- iptraf-3.0.0/src/tcptable.h 2005-09-13 08:42:54.000000000 +0200
-+++ iptraf-3.0.0.new/src/tcptable.h 2006-04-16 16:14:03.000000000 +0200
-@@ -22,7 +22,6 @@
- #include <asm/types.h>
- #include <linux/if_packet.h>
- #include <linux/if_ether.h>
--#include <linux/if_fddi.h>
- #include <linux/if_tr.h>
- #include <net/if.h>
- #include <netinet/ip.h>
diff --git a/openwrt/package/irssi/Config.in b/openwrt/package/irssi/Config.in
deleted file mode 100644
index 8a150f23ae..0000000000
--- a/openwrt/package/irssi/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_IRSSI
- prompt "irssi............................. console irc client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_GLIB1
- select BR2_PACKAGE_LIBNCURSES
- help
- IRC client for the text console
-
- http://irssi.org
-
diff --git a/openwrt/package/irssi/Makefile b/openwrt/package/irssi/Makefile
deleted file mode 100644
index 505c8010c0..0000000000
--- a/openwrt/package/irssi/Makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=irssi
-PKG_VERSION:=0.8.10
-PKG_RELEASE:=1
-
-PKG_SOURCE_URL:=http://irssi.org/files/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)a.tar.bz2
-PKG_MD5SUM:=38e616bccb6a34ff6d91690317c2fa19
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,IRSSI,irssi,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include" \
- ac_cv_c_bigendian=no \
- ac_cv_sizeof_off_t=8 \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --program-prefix="" \
- --with-perl=no \
- --with-glib1 \
- --with-gnu-ld \
- --with-textui \
- --without-terminfo \
- --without-bot \
- --without-file-offset-size \
- --without-ssl \
- $(DISABLE_NLS) \
- --disable-ssl \
- --disable-ipv6 \
- --disable-proxy \
- --with-glib-prefix=$(STAGING_DIR)/usr \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC)
- touch $@
-
-$(IPKG_IRSSI):
- mkdir -p $(IDIR_IRSSI)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/src/fe-text/$(PKG_NAME) $(IDIR_IRSSI)/usr/bin/
- $(STRIP) $(IDIR_IRSSI)/usr/bin/*
- $(IPKG_BUILD) $(IDIR_IRSSI) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/irssi/ipkg/irssi.control b/openwrt/package/irssi/ipkg/irssi.control
deleted file mode 100644
index a6d2566a77..0000000000
--- a/openwrt/package/irssi/ipkg/irssi.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: irssi
-Priority: optional
-Section: text
-Depends: glib1, libpthread, libncurses
-Description: IRC text client
diff --git a/openwrt/package/irssi/patches/100-cross_compiling_fix.patch b/openwrt/package/irssi/patches/100-cross_compiling_fix.patch
deleted file mode 100644
index 2b45ceac51..0000000000
--- a/openwrt/package/irssi/patches/100-cross_compiling_fix.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-diff -ruN irssi-0.8.10.orig/configure irssi-0.8.10/configure
---- irssi-0.8.10.orig/configure 2005-12-11 23:46:06.000000000 +0100
-+++ irssi-0.8.10/configure 2006-02-24 13:19:21.570891250 +0100
-@@ -21848,13 +21848,6 @@
-
- echo "$as_me:$LINENO: checking size of off_t" >&5
- echo $ECHO_N "checking size of off_t... $ECHO_C" >&6
--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
-@@ -21872,35 +21865,8 @@
- }
-
- _ACEOF
--rm -f conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
--
-- sizeof_off_t=`cat conftestval`
-- rm -f conftestval
--
--else
-- echo "$as_me: program exited with status $ac_status" >&5
--echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--( exit $ac_status )
--
-- { { echo "$as_me:$LINENO: error: Unsupported off_t size" >&5
--echo "$as_me: error: Unsupported off_t size" >&2;}
-- { (exit 1); exit 1; }; }
--
--fi
-+ sizeof_off_t=8
- rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
--fi
- echo "$as_me:$LINENO: result: $sizeof_off_t" >&5
- echo "${ECHO_T}$sizeof_off_t" >&6
-
diff --git a/openwrt/package/jamvm/Config.in b/openwrt/package/jamvm/Config.in
deleted file mode 100644
index 5f713150f2..0000000000
--- a/openwrt/package/jamvm/Config.in
+++ /dev/null
@@ -1,17 +0,0 @@
-config BR2_PACKAGE_JAMVM
- prompt "jamvm............................. A compact Java Virtual Machine"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_ZLIB
- select BR2_PACKAGE_LIBFFI_SABLE
- select BR2_PACKAGE_LIBSABLEVM_CLASSPATH
- help
- JamVM is a new Java Virtual Machine which conforms to the JVM
- specification version (blue book). In comparison to most other VM's
- (free and commercial) it is extremely small.However, unlike other
- small VMs (e.g. KVM) it is designed to support the full
- specification, and includes support for object finalisation,
- Soft/Weak/Phantom References, the Java Native Interface (JNI) and the
- Reflection API.
-
- http://sourceforge.net/projects/jamvm
diff --git a/openwrt/package/jamvm/Makefile b/openwrt/package/jamvm/Makefile
deleted file mode 100644
index 137a4e9722..0000000000
--- a/openwrt/package/jamvm/Makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=jamvm
-PKG_VERSION:=1.4.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=ed79d6b60e50b007614831f8c28321ac
-
-PKG_SOURCE_URL:=@SF/jamvm
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,JAMVM,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- --enable-ffi \
- );
- touch $@
-
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)/usr/bin
- mkdir -p $(PKG_INSTALL_DIR)/usr/share/jamvm
- $(MAKE) -C $(PKG_BUILD_DIR)/src \
- $(TARGET_CONFIGURE_OPTS)
- $(CP) $(PKG_BUILD_DIR)/src/jamvm $(PKG_INSTALL_DIR)/usr/bin
- $(MAKE) -C $(PKG_BUILD_DIR)/lib
- $(CP) $(PKG_BUILD_DIR)/lib/classes.zip $(PKG_INSTALL_DIR)/usr/share/jamvm
- touch $@
-
-$(IPKG_JAMVM):
- install -d -m0755 $(IDIR_JAMVM)/usr/bin
- install -d -m0755 $(IDIR_JAMVM)/usr/share/jamvm
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/jamvm $(IDIR_JAMVM)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/share/jamvm/classes.zip $(IDIR_JAMVM)/usr/share/jamvm
- $(RSTRIP) $(IDIR_JAMVM)
- $(IPKG_BUILD) $(IDIR_JAMVM) $(PACKAGE_DIR)
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/jamvm/ipkg/jamvm.control b/openwrt/package/jamvm/ipkg/jamvm.control
deleted file mode 100644
index aee8fb88f8..0000000000
--- a/openwrt/package/jamvm/ipkg/jamvm.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: jamvm
-Priority: optional
-Section: misc
-Description: A Java Virtual Machine (JVM) implementation
-Depends: libffi-sable, zlib, libsablevm-classpath
diff --git a/openwrt/package/jamvm/patches/100-jamvm-mips.patch b/openwrt/package/jamvm/patches/100-jamvm-mips.patch
deleted file mode 100644
index 8feebc4f7a..0000000000
--- a/openwrt/package/jamvm/patches/100-jamvm-mips.patch
+++ /dev/null
@@ -1,593 +0,0 @@
-diff -urN jamvm-1.4.0-orig/configure jamvm-1.4.0/configure
---- jamvm-1.4.0-orig/configure 2005-11-20 08:18:52.000000000 +0100
-+++ jamvm-1.4.0/configure 2005-11-27 17:02:15.000000000 +0100
-@@ -1934,6 +1934,7 @@
- i[456]86-*-openbsd*) host_cpu=i386 host_os=linux libdl_needed=no ;;
- x86_64-*-linux*) host_os=linux ;;
- arm*-*-linux*) host_cpu=arm host_os=linux ;;
-+mips*-linux*) host_cpu=mips host_os=linux ;;
- powerpc*-*-linux*) host_cpu=powerpc host_os=linux ;;
- powerpc-*-darwin*) host_os=darwin ;;
- *) { { echo "$as_me:$LINENO: error: $host not supported" >&5
-@@ -5742,7 +5743,7 @@
- ac_config_links="$ac_config_links src/arch.h:src/arch/$arch.h"
-
-
-- ac_config_files="$ac_config_files Makefile src/Makefile src/arch/Makefile src/os/Makefile src/os/linux/Makefile src/os/darwin/Makefile src/os/linux/powerpc/Makefile src/os/linux/arm/Makefile src/os/linux/i386/Makefile src/os/linux/x86_64/Makefile src/os/darwin/powerpc/Makefile lib/Makefile lib/java/Makefile lib/java/lang/Makefile lib/jamvm/Makefile lib/jamvm/java/Makefile lib/jamvm/java/lang/Makefile lib/java/lang/reflect/Makefile lib/java/security/Makefile lib/gnu/Makefile lib/gnu/classpath/Makefile"
-+ ac_config_files="$ac_config_files Makefile src/Makefile src/arch/Makefile src/os/Makefile src/os/linux/Makefile src/os/darwin/Makefile src/os/linux/powerpc/Makefile src/os/linux/arm/Makefile src/os/linux/i386/Makefile src/os/linux/x86_64/Makefile src/os/linux/mips/Makefile src/os/darwin/powerpc/Makefile lib/Makefile lib/java/Makefile lib/java/lang/Makefile lib/jamvm/Makefile lib/jamvm/java/Makefile lib/jamvm/java/lang/Makefile lib/java/lang/reflect/Makefile lib/java/security/Makefile lib/gnu/Makefile lib/gnu/classpath/Makefile"
-
-
- cat >confcache <<\_ACEOF
-@@ -6340,6 +6341,7 @@
- "src/os/linux/arm/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/os/linux/arm/Makefile" ;;
- "src/os/linux/i386/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/os/linux/i386/Makefile" ;;
- "src/os/linux/x86_64/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/os/linux/x86_64/Makefile" ;;
-+ "src/os/linux/mips/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/os/linux/mips/Makefile" ;;
- "src/os/darwin/powerpc/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/os/darwin/powerpc/Makefile" ;;
- "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
- "lib/java/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/java/Makefile" ;;
-diff -urN jamvm-1.4.0-orig/configure.ac jamvm-1.4.0/configure.ac
---- jamvm-1.4.0-orig/configure.ac 2005-11-20 08:18:33.000000000 +0100
-+++ jamvm-1.4.0/configure.ac 2005-11-27 16:29:53.000000000 +0100
-@@ -60,6 +60,7 @@
- i[[456]]86-*-openbsd*) host_cpu=i386 host_os=linux libdl_needed=no ;;
- x86_64-*-linux*) host_os=linux ;;
- arm*-*-linux*) host_cpu=arm host_os=linux ;;
-+mips*-linux*) host_cpu=mips host_os=linux ;;
- powerpc*-*-linux*) host_cpu=powerpc host_os=linux ;;
- powerpc-*-darwin*) host_os=darwin ;;
- *) AC_MSG_ERROR($host not supported) ;;
-@@ -202,6 +203,7 @@
- src/os/linux/arm/Makefile \
- src/os/linux/i386/Makefile \
- src/os/linux/x86_64/Makefile \
-+ src/os/linux/mips/Makefile \
- src/os/darwin/powerpc/Makefile \
- lib/Makefile \
- lib/java/Makefile \
-diff -urN jamvm-1.4.0-orig/src/arch/Makefile.am jamvm-1.4.0/src/arch/Makefile.am
---- jamvm-1.4.0-orig/src/arch/Makefile.am 2005-09-05 02:02:58.000000000 +0200
-+++ jamvm-1.4.0/src/arch/Makefile.am 2005-11-24 23:09:02.000000000 +0100
-@@ -1,3 +1,3 @@
- # used by automake to generate Makefile.in
-
--EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h
-+EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h mips.h
-diff -urN jamvm-1.4.0-orig/src/arch/Makefile.in jamvm-1.4.0/src/arch/Makefile.in
---- jamvm-1.4.0-orig/src/arch/Makefile.in 2005-11-20 08:18:49.000000000 +0100
-+++ jamvm-1.4.0/src/arch/Makefile.in 2005-11-27 17:04:08.000000000 +0100
-@@ -141,7 +141,7 @@
- use_zip_no = @use_zip_no@
- use_zip_yes = @use_zip_yes@
- with_classpath_install_dir = @with_classpath_install_dir@
--EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h
-+EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h mips.h
- all: all-am
-
- .SUFFIXES:
-diff -urN jamvm-1.4.0-orig/src/arch/mips.h jamvm-1.4.0/src/arch/mips.h
---- jamvm-1.4.0-orig/src/arch/mips.h 1970-01-01 01:00:00.000000000 +0100
-+++ jamvm-1.4.0/src/arch/mips.h 2005-11-29 22:31:08.000000000 +0100
-@@ -0,0 +1,70 @@
-+/*
-+ * Copyright (C) 2003, 2004, 2005 Robert Lougher <rob@lougher.demon.co.uk>.
-+ *
-+ * This file is part of JamVM.
-+ *
-+ * 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+ */
-+
-+#define OS_ARCH "mips"
-+
-+#include <bits/atomicity.h>
-+#include <asm/atomic.h>
-+
-+/* Override default min and max heap sizes. mips machines are
-+ usually embedded, and the standard defaults are too large. */
-+#define DEFAULT_MAX_HEAP 16*MB
-+#define DEFAULT_MIN_HEAP 1*MB
-+
-+#ifdef DIRECT
-+#define HANDLER_TABLE_T static const void
-+#else
-+#define HANDLER_TABLE_T void
-+#endif
-+
-+#if defined(__MIPSEL__)
-+#define DOUBLE_1_BITS 0x3ff0000000000000LL
-+#else
-+#error DOUBLE_1_BITS was not tested on a big endian mips!
-+#define DOUBLE_1_BITS 0x000000003ff00000LL
-+#endif
-+
-+#if defined(__MIPSEL__)
-+#define READ_DBL(v,p,l) v = ((u8)p[0]<<56)|((u8)p[1]<<48)|((u8)p[2]<<40) \
-+ |((u8)p[3]<<32)|((u8)p[4]<<24)|((u8)p[5]<<16) \
-+ |((u8)p[6]<<8)|(u8)p[7]; p+=8
-+#else
-+#error READ_DBL was not tested on a big endian mips!
-+#define READ_DBL(v,p,l) v = ((u8)p[4]<<56)|((u8)p[5]<<48)|((u8)p[6]<<40) \
-+ |((u8)p[7]<<32)|((u8)p[0]<<24)|((u8)p[1]<<16) \
-+ |((u8)p[2]<<8)|(u8)p[3]; p+=8
-+#endif
-+
-+/* Needed for i386 -- empty here */
-+#define FPU_HACK
-+
-+#define COMPARE_AND_SWAP(addr, old_val, new_val) compare_and_swap(addr,old_val,new_val)
-+
-+
-+#define ATOMIC_READ(addr) *addr
-+#define ATOMIC_WRITE(addr, new_val) *addr = new_val
-+
-+
-+
-+#define MBARRIER() __asm__ __volatile__ ("" ::: "memory")
-+#define UNLOCK_MBARRIER() __asm__ __volatile__ ("" ::: "memory")
-+#define JMM_LOCK_MBARRIER() __asm__ __volatile__ ("" ::: "memory")
-+#define JMM_UNLOCK_MBARRIER() __asm__ __volatile__ ("" ::: "memory")
-+
-diff -urN jamvm-1.4.0-orig/src/os/linux/Makefile.am jamvm-1.4.0/src/os/linux/Makefile.am
---- jamvm-1.4.0-orig/src/os/linux/Makefile.am 2005-09-08 22:53:16.000000000 +0200
-+++ jamvm-1.4.0/src/os/linux/Makefile.am 2005-11-24 23:05:44.000000000 +0100
-@@ -1,5 +1,5 @@
- SUBDIRS = @arch@
--DIST_SUBDIRS = powerpc arm i386 x86_64
-+DIST_SUBDIRS = powerpc arm i386 x86_64 mips
-
- noinst_LIBRARIES = libos.a
- libos_a_SOURCES = dll_os.c
-diff -urN jamvm-1.4.0-orig/src/os/linux/Makefile.in jamvm-1.4.0/src/os/linux/Makefile.in
---- jamvm-1.4.0-orig/src/os/linux/Makefile.in 2005-11-20 08:18:50.000000000 +0100
-+++ jamvm-1.4.0/src/os/linux/Makefile.in 2005-11-27 17:04:10.000000000 +0100
-@@ -163,7 +163,7 @@
- use_zip_yes = @use_zip_yes@
- with_classpath_install_dir = @with_classpath_install_dir@
- SUBDIRS = @arch@
--DIST_SUBDIRS = powerpc arm i386 x86_64
-+DIST_SUBDIRS = powerpc arm i386 x86_64 mips
- noinst_LIBRARIES = libos.a
- libos_a_SOURCES = dll_os.c
- EXTRA_DIST = dll_os.c
-diff -urN jamvm-1.4.0-orig/src/os/linux/mips/init.c jamvm-1.4.0/src/os/linux/mips/init.c
---- jamvm-1.4.0-orig/src/os/linux/mips/init.c 1970-01-01 01:00:00.000000000 +0100
-+++ jamvm-1.4.0/src/os/linux/mips/init.c 2005-11-02 22:42:21.000000000 +0100
-@@ -0,0 +1,23 @@
-+/*
-+ * Copyright (C) 2003, 2004 Robert Lougher <rob@lougher.demon.co.uk>.
-+ *
-+ * This file is part of JamVM.
-+ *
-+ * 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+ */
-+
-+void initialisePlatform() {
-+ /* Nothing to do for mips */
-+}
-diff -urN jamvm-1.4.0-orig/src/os/linux/mips/Makefile.am jamvm-1.4.0/src/os/linux/mips/Makefile.am
---- jamvm-1.4.0-orig/src/os/linux/mips/Makefile.am 1970-01-01 01:00:00.000000000 +0100
-+++ jamvm-1.4.0/src/os/linux/mips/Makefile.am 2005-09-05 02:03:01.000000000 +0200
-@@ -0,0 +1,4 @@
-+noinst_LIBRARIES = libnative.a
-+libnative_a_SOURCES = init.c
-+
-+AM_CPPFLAGS = -I$(top_builddir)/src
-diff -urN jamvm-1.4.0-orig/src/os/linux/mips/Makefile.in jamvm-1.4.0/src/os/linux/mips/Makefile.in
---- jamvm-1.4.0-orig/src/os/linux/mips/Makefile.in 1970-01-01 01:00:00.000000000 +0100
-+++ jamvm-1.4.0/src/os/linux/mips/Makefile.in 2005-11-27 17:04:11.000000000 +0100
-@@ -0,0 +1,391 @@
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
-+# @configure_input@
-+
-+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-+# 2003, 2004, 2005 Free Software Foundation, Inc.
-+# This Makefile.in is free software; the Free Software Foundation
-+# gives unlimited permission to copy and/or distribute it,
-+# with or without modifications, as long as this notice is preserved.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-+# PARTICULAR PURPOSE.
-+
-+@SET_MAKE@
-+
-+srcdir = @srcdir@
-+top_srcdir = @top_srcdir@
-+VPATH = @srcdir@
-+pkgdatadir = $(datadir)/@PACKAGE@
-+pkglibdir = $(libdir)/@PACKAGE@
-+pkgincludedir = $(includedir)/@PACKAGE@
-+top_builddir = ../../../..
-+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-+INSTALL = @INSTALL@
-+install_sh_DATA = $(install_sh) -c -m 644
-+install_sh_PROGRAM = $(install_sh) -c
-+install_sh_SCRIPT = $(install_sh) -c
-+INSTALL_HEADER = $(INSTALL_DATA)
-+transform = $(program_transform_name)
-+NORMAL_INSTALL = :
-+PRE_INSTALL = :
-+POST_INSTALL = :
-+NORMAL_UNINSTALL = :
-+PRE_UNINSTALL = :
-+POST_UNINSTALL = :
-+build_triplet = @build@
-+host_triplet = @host@
-+subdir = src/os/linux/mips
-+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-+ $(top_srcdir)/configure.ac
-+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-+ $(ACLOCAL_M4)
-+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+CONFIG_CLEAN_FILES =
-+LIBRARIES = $(noinst_LIBRARIES)
-+AR = ar
-+ARFLAGS = cru
-+libnative_a_AR = $(AR) $(ARFLAGS)
-+libnative_a_LIBADD =
-+am_libnative_a_OBJECTS = init.$(OBJEXT)
-+libnative_a_OBJECTS = $(am_libnative_a_OBJECTS)
-+DEFAULT_INCLUDES = -I. -I$(srcdir)
-+depcomp = $(SHELL) $(top_srcdir)/depcomp
-+am__depfiles_maybe = depfiles
-+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CCLD = $(CC)
-+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+SOURCES = $(libnative_a_SOURCES)
-+DIST_SOURCES = $(libnative_a_SOURCES)
-+ETAGS = etags
-+CTAGS = ctags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-+ACLOCAL = @ACLOCAL@
-+ALLOCA = @ALLOCA@
-+AMDEP_FALSE = @AMDEP_FALSE@
-+AMDEP_TRUE = @AMDEP_TRUE@
-+AMTAR = @AMTAR@
-+AUTOCONF = @AUTOCONF@
-+AUTOHEADER = @AUTOHEADER@
-+AUTOMAKE = @AUTOMAKE@
-+AWK = @AWK@
-+CC = @CC@
-+CCAS = @CCAS@
-+CCASFLAGS = @CCASFLAGS@
-+CCDEPMODE = @CCDEPMODE@
-+CFLAGS = @CFLAGS@
-+CPP = @CPP@
-+CPPFLAGS = @CPPFLAGS@
-+CYGPATH_W = @CYGPATH_W@
-+DEFS = @DEFS@
-+DEPDIR = @DEPDIR@
-+ECHO_C = @ECHO_C@
-+ECHO_N = @ECHO_N@
-+ECHO_T = @ECHO_T@
-+EGREP = @EGREP@
-+EXEEXT = @EXEEXT@
-+INSTALL_DATA = @INSTALL_DATA@
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@
-+INSTALL_SCRIPT = @INSTALL_SCRIPT@
-+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-+LDFLAGS = @LDFLAGS@
-+LIBOBJS = @LIBOBJS@
-+LIBS = @LIBS@
-+LTLIBOBJS = @LTLIBOBJS@
-+MAINT = @MAINT@
-+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-+MAKEINFO = @MAKEINFO@
-+OBJEXT = @OBJEXT@
-+PACKAGE = @PACKAGE@
-+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-+PACKAGE_NAME = @PACKAGE_NAME@
-+PACKAGE_STRING = @PACKAGE_STRING@
-+PACKAGE_TARNAME = @PACKAGE_TARNAME@
-+PACKAGE_VERSION = @PACKAGE_VERSION@
-+PATH_SEPARATOR = @PATH_SEPARATOR@
-+RANLIB = @RANLIB@
-+SET_MAKE = @SET_MAKE@
-+SHELL = @SHELL@
-+STRIP = @STRIP@
-+VERSION = @VERSION@
-+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@
-+am__leading_dot = @am__leading_dot@
-+am__quote = @am__quote@
-+am__tar = @am__tar@
-+am__untar = @am__untar@
-+arch = @arch@
-+bindir = @bindir@
-+build = @build@
-+build_alias = @build_alias@
-+build_cpu = @build_cpu@
-+build_os = @build_os@
-+build_vendor = @build_vendor@
-+datadir = @datadir@
-+exec_prefix = @exec_prefix@
-+host = @host@
-+host_alias = @host_alias@
-+host_cpu = @host_cpu@
-+host_os = @host_os@
-+host_vendor = @host_vendor@
-+includedir = @includedir@
-+infodir = @infodir@
-+install_sh = @install_sh@
-+libdir = @libdir@
-+libexecdir = @libexecdir@
-+localstatedir = @localstatedir@
-+mandir = @mandir@
-+mkdir_p = @mkdir_p@
-+oldincludedir = @oldincludedir@
-+os = @os@
-+prefix = @prefix@
-+program_transform_name = @program_transform_name@
-+sbindir = @sbindir@
-+sharedstatedir = @sharedstatedir@
-+sysconfdir = @sysconfdir@
-+target_alias = @target_alias@
-+use_zip_no = @use_zip_no@
-+use_zip_yes = @use_zip_yes@
-+with_classpath_install_dir = @with_classpath_install_dir@
-+noinst_LIBRARIES = libnative.a
-+libnative_a_SOURCES = init.c
-+AM_CPPFLAGS = -I$(top_builddir)/src
-+all: all-am
-+
-+.SUFFIXES:
-+.SUFFIXES: .c .o .obj
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
-+ @for dep in $?; do \
-+ case '$(am__configure_deps)' in \
-+ *$$dep*) \
-+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-+ && exit 0; \
-+ exit 1;; \
-+ esac; \
-+ done; \
-+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/os/linux/mips/Makefile'; \
-+ cd $(top_srcdir) && \
-+ $(AUTOMAKE) --gnu src/os/linux/mips/Makefile
-+.PRECIOUS: Makefile
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+ @case '$?' in \
-+ *config.status*) \
-+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-+ *) \
-+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-+ esac;
-+
-+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+
-+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+
-+clean-noinstLIBRARIES:
-+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-+libnative.a: $(libnative_a_OBJECTS) $(libnative_a_DEPENDENCIES)
-+ -rm -f libnative.a
-+ $(libnative_a_AR) libnative.a $(libnative_a_OBJECTS) $(libnative_a_LIBADD)
-+ $(RANLIB) libnative.a
-+
-+mostlyclean-compile:
-+ -rm -f *.$(OBJEXT)
-+
-+distclean-compile:
-+ -rm -f *.tab.c
-+
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Po@am__quote@
-+
-+.c.o:
-+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-+
-+.c.obj:
-+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-+uninstall-info-am:
-+
-+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ mkid -fID $$unique
-+tags: TAGS
-+
-+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
-+ tags=; \
-+ here=`pwd`; \
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-+ test -n "$$unique" || unique=$$empty_fix; \
-+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+ $$tags $$unique; \
-+ fi
-+ctags: CTAGS
-+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
-+ $(TAGS_FILES) $(LISP)
-+ tags=; \
-+ here=`pwd`; \
-+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-+ unique=`for i in $$list; do \
-+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+ done | \
-+ $(AWK) ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
-+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-+ $$tags $$unique
-+
-+GTAGS:
-+ here=`$(am__cd) $(top_builddir) && pwd` \
-+ && cd $(top_srcdir) \
-+ && gtags -i $(GTAGS_ARGS) $$here
-+
-+distclean-tags:
-+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-+
-+distdir: $(DISTFILES)
-+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-+ list='$(DISTFILES)'; for file in $$list; do \
-+ case $$file in \
-+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-+ esac; \
-+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-+ dir="/$$dir"; \
-+ $(mkdir_p) "$(distdir)$$dir"; \
-+ else \
-+ dir=''; \
-+ fi; \
-+ if test -d $$d/$$file; then \
-+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-+ fi; \
-+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-+ else \
-+ test -f $(distdir)/$$file \
-+ || cp -p $$d/$$file $(distdir)/$$file \
-+ || exit 1; \
-+ fi; \
-+ done
-+check-am: all-am
-+check: check-am
-+all-am: Makefile $(LIBRARIES)
-+installdirs:
-+install: install-am
-+install-exec: install-exec-am
-+install-data: install-data-am
-+uninstall: uninstall-am
-+
-+install-am: all-am
-+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-+
-+installcheck: installcheck-am
-+install-strip:
-+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+ `test -z '$(STRIP)' || \
-+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-+mostlyclean-generic:
-+
-+clean-generic:
-+
-+distclean-generic:
-+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-+
-+maintainer-clean-generic:
-+ @echo "This command is intended for maintainers to use"
-+ @echo "it deletes files that may require special tools to rebuild."
-+clean: clean-am
-+
-+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
-+
-+distclean: distclean-am
-+ -rm -rf ./$(DEPDIR)
-+ -rm -f Makefile
-+distclean-am: clean-am distclean-compile distclean-generic \
-+ distclean-tags
-+
-+dvi: dvi-am
-+
-+dvi-am:
-+
-+html: html-am
-+
-+info: info-am
-+
-+info-am:
-+
-+install-data-am:
-+
-+install-exec-am:
-+
-+install-info: install-info-am
-+
-+install-man:
-+
-+installcheck-am:
-+
-+maintainer-clean: maintainer-clean-am
-+ -rm -rf ./$(DEPDIR)
-+ -rm -f Makefile
-+maintainer-clean-am: distclean-am maintainer-clean-generic
-+
-+mostlyclean: mostlyclean-am
-+
-+mostlyclean-am: mostlyclean-compile mostlyclean-generic
-+
-+pdf: pdf-am
-+
-+pdf-am:
-+
-+ps: ps-am
-+
-+ps-am:
-+
-+uninstall-am: uninstall-info-am
-+
-+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-+ clean-noinstLIBRARIES ctags distclean distclean-compile \
-+ distclean-generic distclean-tags distdir dvi dvi-am html \
-+ html-am info info-am install install-am install-data \
-+ install-data-am install-exec install-exec-am install-info \
-+ install-info-am install-man install-strip installcheck \
-+ installcheck-am installdirs maintainer-clean \
-+ maintainer-clean-generic mostlyclean mostlyclean-compile \
-+ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
-+ uninstall-am uninstall-info-am
-+
-+# Tell versions [3.59,3.63) of GNU make to not export all variables.
-+# Otherwise a system limit (for SysV at least) may be exceeded.
-+.NOEXPORT:
diff --git a/openwrt/package/jpeg/Config.in b/openwrt/package/jpeg/Config.in
deleted file mode 100644
index 326fa8b5f4..0000000000
--- a/openwrt/package/jpeg/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_COMPILE_JPEG
- tristate
- default n
- depends BR2_PACKAGE_LIBJPEG
-
-config BR2_PACKAGE_LIBJPEG
- prompt "libjpeg........................... The Independent JPEG Group's JPEG runtime library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_JPEG
- help
- The Independent JPEG Group's JPEG runtime library.
-
- http://www.ijg.org/
-
diff --git a/openwrt/package/jpeg/Makefile b/openwrt/package/jpeg/Makefile
deleted file mode 100644
index 11fd017a4d..0000000000
--- a/openwrt/package/jpeg/Makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=jpeg
-PKG_VERSION:=6b
-PKG_RELEASE:=1
-PKG_MD5SUM:=dbd5f3b47ed13132f04c685d608a7547
-
-PKG_SOURCE_URL:=http://www.ijg.org/files/ \
- ftp://ftp.uu.net/graphics/jpeg/
-PKG_SOURCE:=$(PKG_NAME)src.v$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBJPEG,libjpeg,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)/usr/{include,lib}
- $(MAKE) -C $(PKG_BUILD_DIR) \
- all
- $(MAKE) -C $(PKG_BUILD_DIR) \
- prefix="$(PKG_INSTALL_DIR)/usr" \
- exec_prefix="$(PKG_INSTALL_DIR)/usr" \
- install-headers install-lib
- touch $@
-
-$(IPKG_LIBJPEG):
- install -d -m0755 $(IDIR_LIBJPEG)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libjpeg.so.* $(IDIR_LIBJPEG)/usr/lib/
- $(RSTRIP) $(IDIR_LIBJPEG)
- $(IPKG_BUILD) $(IDIR_LIBJPEG) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libjpeg.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/jpeglib.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/j{config,error,morecfg}.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libjpeg.{a,so*} $(STAGING_DIR)/usr/lib/
-
-install-dev: $(STAGING_DIR)/usr/lib/libjpeg.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/jpeglib.h \
- $(STAGING_DIR)/usr/include/j{config,error,morecfg}.h \
- $(STAGING_DIR)/usr/lib/libjpeg.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
diff --git a/openwrt/package/jpeg/ipkg/libjpeg.control b/openwrt/package/jpeg/ipkg/libjpeg.control
deleted file mode 100644
index 83111d7c7c..0000000000
--- a/openwrt/package/jpeg/ipkg/libjpeg.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: libjpeg
-Priority: optional
-Section: libs
-Depends:
-Description: The Independent JPEG Group's JPEG runtime library
-
diff --git a/openwrt/package/jpeg/patches/jpeg-6b-config_guess.patch b/openwrt/package/jpeg/patches/jpeg-6b-config_guess.patch
deleted file mode 100644
index de8141f1b0..0000000000
--- a/openwrt/package/jpeg/patches/jpeg-6b-config_guess.patch
+++ /dev/null
@@ -1,2854 +0,0 @@
-diff -urN jpeg.old/config.guess jpeg.dev/config.guess
---- jpeg.old/config.guess 1998-03-25 16:25:38.000000000 +0100
-+++ jpeg.dev/config.guess 2006-04-21 16:22:05.000000000 +0200
-@@ -1,7 +1,10 @@
- #! /bin/sh
- # Attempt to guess a canonical system name.
--# Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
--#
-+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-+# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+
-+timestamp='2004-11-12'
-+
- # 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
-@@ -21,125 +24,314 @@
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
-
--# Written by Per Bothner <bothner@cygnus.com>.
--# The master version of this file is at the FSF in /home/gd/gnu/lib.
-+# Originally written by Per Bothner <per@bothner.com>.
-+# Please send patches to <config-patches@gnu.org>. Submit a context
-+# diff and a properly formatted ChangeLog entry.
- #
- # This script attempts to guess a canonical system name similar to
- # config.sub. If it succeeds, it prints the system name on stdout, and
- # exits with 0. Otherwise, it exits with 1.
- #
- # The plan is that this can be called by configure scripts if you
--# don't specify an explicit system type (host/target name).
--#
--# Only a few systems have been added to this list; please add others
--# (but try to keep the structure clean).
--#
-+# don't specify an explicit build system type.
-+
-+me=`echo "$0" | sed -e 's,.*/,,'`
-+
-+usage="\
-+Usage: $0 [OPTION]
-+
-+Output the configuration name of the system \`$me' is run on.
-+
-+Operation modes:
-+ -h, --help print this help, then exit
-+ -t, --time-stamp print date of last modification, then exit
-+ -v, --version print version number, then exit
-+
-+Report bugs and patches to <config-patches@gnu.org>."
-+
-+version="\
-+GNU config.guess ($timestamp)
-+
-+Originally written by Per Bothner.
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-+Free Software Foundation, Inc.
-+
-+This is free software; see the source for copying conditions. There is NO
-+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-+
-+help="
-+Try \`$me --help' for more information."
-+
-+# Parse command line
-+while test $# -gt 0 ; do
-+ case $1 in
-+ --time-stamp | --time* | -t )
-+ echo "$timestamp" ; exit 0 ;;
-+ --version | -v )
-+ echo "$version" ; exit 0 ;;
-+ --help | --h* | -h )
-+ echo "$usage"; exit 0 ;;
-+ -- ) # Stop option processing
-+ shift; break ;;
-+ - ) # Use stdin as input.
-+ break ;;
-+ -* )
-+ echo "$me: invalid option $1$help" >&2
-+ exit 1 ;;
-+ * )
-+ break ;;
-+ esac
-+done
-+
-+if test $# != 0; then
-+ echo "$me: too many arguments$help" >&2
-+ exit 1
-+fi
-+
-+trap 'exit 1' 1 2 15
-+
-+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-+# compiler to aid in system detection is discouraged as it requires
-+# temporary files to be created and, as you can see below, it is a
-+# headache to deal with in a portable fashion.
-+
-+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-+# use `HOST_CC' if defined, but it is deprecated.
-+
-+# Portable tmp directory creation inspired by the Autoconf team.
-+
-+set_cc_for_build='
-+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-+: ${TMPDIR=/tmp} ;
-+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
-+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
-+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
-+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-+dummy=$tmp/dummy ;
-+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-+case $CC_FOR_BUILD,$HOST_CC,$CC in
-+ ,,) echo "int x;" > $dummy.c ;
-+ for c in cc gcc c89 c99 ; do
-+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-+ CC_FOR_BUILD="$c"; break ;
-+ fi ;
-+ done ;
-+ if test x"$CC_FOR_BUILD" = x ; then
-+ CC_FOR_BUILD=no_compiler_found ;
-+ fi
-+ ;;
-+ ,,*) CC_FOR_BUILD=$CC ;;
-+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-+esac ;'
-
- # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
--# (ghazi@noc.rutgers.edu 8/24/94.)
-+# (ghazi@noc.rutgers.edu 1994-08-24)
- if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
- fi
-
- UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
- UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
--UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
- UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
--trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
--
- # Note: order is significant - the case branches are not exclusive.
-
- case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-+ *:NetBSD:*:*)
-+ # NetBSD (nbsd) targets should (where applicable) match one or
-+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
-+ # switched to ELF, *-*-netbsd* would select the old
-+ # object file format. This provides both forward
-+ # compatibility and a consistent mechanism for selecting the
-+ # object file format.
-+ #
-+ # Note: NetBSD doesn't particularly care about the vendor
-+ # portion of the name. We always set it to "unknown".
-+ sysctl="sysctl -n hw.machine_arch"
-+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-+ case "${UNAME_MACHINE_ARCH}" in
-+ armeb) machine=armeb-unknown ;;
-+ arm*) machine=arm-unknown ;;
-+ sh3el) machine=shl-unknown ;;
-+ sh3eb) machine=sh-unknown ;;
-+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-+ esac
-+ # The Operating System including object format, if it has switched
-+ # to ELF recently, or will in the future.
-+ case "${UNAME_MACHINE_ARCH}" in
-+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-+ eval $set_cc_for_build
-+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-+ | grep __ELF__ >/dev/null
-+ then
-+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-+ # Return netbsd for either. FIX?
-+ os=netbsd
-+ else
-+ os=netbsdelf
-+ fi
-+ ;;
-+ *)
-+ os=netbsd
-+ ;;
-+ esac
-+ # The OS release
-+ # Debian GNU/NetBSD machines have a different userland, and
-+ # thus, need a distinct triplet. However, they do not need
-+ # kernel version information, so it can be replaced with a
-+ # suitable tag, in the style of linux-gnu.
-+ case "${UNAME_VERSION}" in
-+ Debian*)
-+ release='-gnu'
-+ ;;
-+ *)
-+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+ ;;
-+ esac
-+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-+ # contains redundant information, the shorter form:
-+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-+ echo "${machine}-${os}${release}"
-+ exit 0 ;;
-+ amd64:OpenBSD:*:*)
-+ echo x86_64-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ amiga:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ cats:OpenBSD:*:*)
-+ echo arm-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ hp300:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ luna88k:OpenBSD:*:*)
-+ echo m88k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ mac68k:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ macppc:OpenBSD:*:*)
-+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ mvme68k:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ mvme88k:OpenBSD:*:*)
-+ echo m88k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ mvmeppc:OpenBSD:*:*)
-+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ sgi:OpenBSD:*:*)
-+ echo mips64-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ sun3:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:OpenBSD:*:*)
-+ echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:ekkoBSD:*:*)
-+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ macppc:MirBSD:*:*)
-+ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:MirBSD:*:*)
-+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-+ exit 0 ;;
- alpha:OSF1:*:*)
-- if test $UNAME_RELEASE = "V4.0"; then
-+ case $UNAME_RELEASE in
-+ *4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-- fi
-+ ;;
-+ *5.*)
-+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-+ ;;
-+ esac
-+ # According to Compaq, /usr/sbin/psrinfo has been available on
-+ # OSF/1 and Tru64 systems produced since 1995. I hope that
-+ # covers most systems running today. This code pipes the CPU
-+ # types through head -n 1, so we only detect the type of CPU 0.
-+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-+ case "$ALPHA_CPU_TYPE" in
-+ "EV4 (21064)")
-+ UNAME_MACHINE="alpha" ;;
-+ "EV4.5 (21064)")
-+ UNAME_MACHINE="alpha" ;;
-+ "LCA4 (21066/21068)")
-+ UNAME_MACHINE="alpha" ;;
-+ "EV5 (21164)")
-+ UNAME_MACHINE="alphaev5" ;;
-+ "EV5.6 (21164A)")
-+ UNAME_MACHINE="alphaev56" ;;
-+ "EV5.6 (21164PC)")
-+ UNAME_MACHINE="alphapca56" ;;
-+ "EV5.7 (21164PC)")
-+ UNAME_MACHINE="alphapca57" ;;
-+ "EV6 (21264)")
-+ UNAME_MACHINE="alphaev6" ;;
-+ "EV6.7 (21264A)")
-+ UNAME_MACHINE="alphaev67" ;;
-+ "EV6.8CB (21264C)")
-+ UNAME_MACHINE="alphaev68" ;;
-+ "EV6.8AL (21264B)")
-+ UNAME_MACHINE="alphaev68" ;;
-+ "EV6.8CX (21264D)")
-+ UNAME_MACHINE="alphaev68" ;;
-+ "EV6.9A (21264/EV69A)")
-+ UNAME_MACHINE="alphaev69" ;;
-+ "EV7 (21364)")
-+ UNAME_MACHINE="alphaev7" ;;
-+ "EV7.9 (21364A)")
-+ UNAME_MACHINE="alphaev79" ;;
-+ esac
-+ # A Pn.n version is a patched version.
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
-- cat <<EOF >dummy.s
-- .globl main
-- .ent main
--main:
-- .frame \$30,0,\$26,0
-- .prologue 0
-- .long 0x47e03d80 # implver $0
-- lda \$2,259
-- .long 0x47e20c21 # amask $2,$1
-- srl \$1,8,\$2
-- sll \$2,2,\$2
-- sll \$0,3,\$0
-- addl \$1,\$0,\$0
-- addl \$2,\$0,\$0
-- ret \$31,(\$26),1
-- .end main
--EOF
-- ${CC-cc} dummy.s -o dummy 2>/dev/null
-- if test "$?" = 0 ; then
-- ./dummy
-- case "$?" in
-- 7)
-- UNAME_MACHINE="alpha"
-- ;;
-- 15)
-- UNAME_MACHINE="alphaev5"
-- ;;
-- 14)
-- UNAME_MACHINE="alphaev56"
-- ;;
-- 10)
-- UNAME_MACHINE="alphapca56"
-- ;;
-- 16)
-- UNAME_MACHINE="alphaev6"
-- ;;
-- esac
-- fi
-- rm -f dummy.s dummy
-- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
-+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-+ exit 0 ;;
-+ Alpha\ *:Windows_NT*:*)
-+ # How do we know it's Interix rather than the generic POSIX subsystem?
-+ # Should we change UNAME_MACHINE based on the output of uname instead
-+ # of the specific Alpha model?
-+ echo alpha-pc-interix
- exit 0 ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit 0 ;;
- Amiga*:UNIX_System_V:4.0:*)
-- echo m68k-cbm-sysv4
-+ echo m68k-unknown-sysv4
- exit 0;;
-- amiga:NetBSD:*:*)
-- echo m68k-cbm-netbsd${UNAME_RELEASE}
-- exit 0 ;;
-- amiga:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- arc64:OpenBSD:*:*)
-- echo mips64el-unknown-openbsd${UNAME_RELEASE}
-+ *:[Aa]miga[Oo][Ss]:*:*)
-+ echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
-- arc:OpenBSD:*:*)
-- echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+ *:[Mm]orph[Oo][Ss]:*:*)
-+ echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
-- hkmips:OpenBSD:*:*)
-- echo mips-unknown-openbsd${UNAME_RELEASE}
-+ *:OS/390:*:*)
-+ echo i370-ibm-openedition
- exit 0 ;;
-- pmax:OpenBSD:*:*)
-- echo mipsel-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- sgi:OpenBSD:*:*)
-- echo mips-unknown-openbsd${UNAME_RELEASE}
-+ *:z/VM:*:*)
-+ echo s390-ibm-zvmoe
- exit 0 ;;
-- wgrisc:OpenBSD:*:*)
-- echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+ *:OS400:*:*)
-+ echo powerpc-ibm-os400
- exit 0 ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
-- arm32:NetBSD:*:*)
-- echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-- exit 0 ;;
-- SR2?01:HI-UX/MPP:*:*)
-+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit 0;;
-- Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
-+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
-@@ -147,9 +339,19 @@
- echo pyramid-pyramid-bsd
- fi
- exit 0 ;;
-- NILE:*:*:dcosx)
-+ NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit 0 ;;
-+ DRS?6000:unix:4.0:6*)
-+ echo sparc-icl-nx6
-+ exit 0 ;;
-+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-+ case `/usr/bin/uname -p` in
-+ sparc) echo sparc-icl-nx7 && exit 0 ;;
-+ esac ;;
-+ sun4H:SunOS:5.*:*)
-+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-+ exit 0 ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
-@@ -175,7 +377,7 @@
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
- sun*:*:4.2BSD:*)
-- UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
-@@ -189,29 +391,34 @@
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
-- atari*:NetBSD:*:*)
-- echo m68k-atari-netbsd${UNAME_RELEASE}
-+ # The situation for MiNT is a little confusing. The machine name
-+ # can be virtually everything (everything which is not
-+ # "atarist" or "atariste" at least should have a processor
-+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
-+ # to the lowercase version "mint" (or "freemint"). Finally
-+ # the system name "TOS" denotes a system which is actually not
-+ # MiNT. But MiNT is downward compatible to TOS, so this should
-+ # be no problem.
-+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-+ echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
-- atari*:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- sun3*:NetBSD:*:*)
-- echo m68k-sun-netbsd${UNAME_RELEASE}
-- exit 0 ;;
-- sun3*:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- mac68k:NetBSD:*:*)
-- echo m68k-apple-netbsd${UNAME_RELEASE}
-- exit 0 ;;
-- mac68k:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- mvme68k:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-+ echo m68k-atari-mint${UNAME_RELEASE}
-+ exit 0 ;;
-+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-+ echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
-- mvme88k:OpenBSD:*:*)
-- echo m88k-unknown-openbsd${UNAME_RELEASE}
-+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-+ echo m68k-milan-mint${UNAME_RELEASE}
-+ exit 0 ;;
-+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-+ echo m68k-hades-mint${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-+ echo m68k-unknown-mint${UNAME_RELEASE}
-+ exit 0 ;;
-+ m68k:machten:*:*)
-+ echo m68k-apple-machten${UNAME_RELEASE}
- exit 0 ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
-@@ -225,12 +432,18 @@
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
-- 2020:CLIX:*:*)
-+ 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
-- sed 's/^ //' << EOF >dummy.c
-- int main (argc, argv) int argc; char **argv; {
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+#ifdef __cplusplus
-+#include <stdio.h> /* for printf() prototype */
-+ int main (int argc, char *argv[]) {
-+#else
-+ int main (argc, argv) int argc; char *argv[]; {
-+#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-@@ -245,12 +458,20 @@
- exit (-1);
- }
- EOF
-- ${CC-cc} dummy.c -o dummy \
-- && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-- && rm dummy.c dummy && exit 0
-- rm -f dummy.c dummy
-+ $CC_FOR_BUILD -o $dummy $dummy.c \
-+ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-+ && exit 0
- echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
-+ Motorola:PowerMAX_OS:*:*)
-+ echo powerpc-motorola-powermax
-+ exit 0 ;;
-+ Motorola:*:4.3:PL8-*)
-+ echo powerpc-harris-powermax
-+ exit 0 ;;
-+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-+ echo powerpc-harris-powermax
-+ exit 0 ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit 0 ;;
-@@ -266,15 +487,18 @@
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
-- if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
-- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
-- -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
-+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-+ then
-+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-+ [ ${TARGET_BINARY_INTERFACE}x = x ]
-+ then
- echo m88k-dg-dgux${UNAME_RELEASE}
-- else
-+ else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
-+ fi
-+ else
-+ echo i586-dg-dgux${UNAME_RELEASE}
- fi
-- else echo i586-dg-dgux${UNAME_RELEASE}
-- fi
- exit 0 ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
-@@ -295,12 +519,21 @@
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
-- i?86:AIX:*:*)
-+ i*86:AIX:*:*)
- echo i386-ibm-aix
- exit 0 ;;
-+ ia64:AIX:*:*)
-+ if [ -x /usr/bin/oslevel ] ; then
-+ IBM_REV=`/usr/bin/oslevel`
-+ else
-+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-+ fi
-+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-+ exit 0 ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-- sed 's/^ //' << EOF >dummy.c
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
-@@ -311,8 +544,7 @@
- exit(0);
- }
- EOF
-- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
-- rm -f dummy.c dummy
-+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo rs6000-ibm-aix3.2.5
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
-@@ -320,8 +552,9 @@
- echo rs6000-ibm-aix3.2
- fi
- exit 0 ;;
-- *:AIX:*:4)
-- if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
-+ *:AIX:*:[45])
-+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
-@@ -329,7 +562,7 @@
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
-- IBM_REV=4.${UNAME_RELEASE}
-+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
-@@ -339,7 +572,7 @@
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit 0 ;;
-- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
-+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
-@@ -354,18 +587,85 @@
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit 0 ;;
-- 9000/[3478]??:HP-UX:*:*)
-+ 9000/[34678]??:HP-UX:*:*)
-+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
-- 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;;
-- 9000/8?? ) HP_ARCH=hppa1.0 ;;
-+ 9000/[678][0-9][0-9])
-+ if [ -x /usr/bin/getconf ]; then
-+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-+ case "${sc_cpu_version}" in
-+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-+ 532) # CPU_PA_RISC2_0
-+ case "${sc_kernel_bits}" in
-+ 32) HP_ARCH="hppa2.0n" ;;
-+ 64) HP_ARCH="hppa2.0w" ;;
-+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
-+ esac ;;
-+ esac
-+ fi
-+ if [ "${HP_ARCH}" = "" ]; then
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+
-+ #define _HPUX_SOURCE
-+ #include <stdlib.h>
-+ #include <unistd.h>
-+
-+ int main ()
-+ {
-+ #if defined(_SC_KERNEL_BITS)
-+ long bits = sysconf(_SC_KERNEL_BITS);
-+ #endif
-+ long cpu = sysconf (_SC_CPU_VERSION);
-+
-+ switch (cpu)
-+ {
-+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-+ case CPU_PA_RISC2_0:
-+ #if defined(_SC_KERNEL_BITS)
-+ switch (bits)
-+ {
-+ case 64: puts ("hppa2.0w"); break;
-+ case 32: puts ("hppa2.0n"); break;
-+ default: puts ("hppa2.0"); break;
-+ } break;
-+ #else /* !defined(_SC_KERNEL_BITS) */
-+ puts ("hppa2.0"); break;
-+ #endif
-+ default: puts ("hppa1.0"); break;
-+ }
-+ exit (0);
-+ }
-+EOF
-+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-+ test -z "$HP_ARCH" && HP_ARCH=hppa
-+ fi ;;
- esac
-- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-+ if [ ${HP_ARCH} = "hppa2.0w" ]
-+ then
-+ # avoid double evaluation of $set_cc_for_build
-+ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
-+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
-+ then
-+ HP_ARCH="hppa2.0w"
-+ else
-+ HP_ARCH="hppa64"
-+ fi
-+ fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
-+ ia64:HP-UX:*:*)
-+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-+ echo ia64-hp-hpux${HPUX_REV}
-+ exit 0 ;;
- 3050*:HI-UX:*:*)
-- sed 's/^ //' << EOF >dummy.c
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
-@@ -390,8 +690,7 @@
- exit (0);
- }
- EOF
-- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
-- rm -f dummy.c dummy
-+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo unknown-hitachi-hiuxwe2
- exit 0 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-@@ -400,13 +699,16 @@
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
-+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-+ echo hppa1.0-hp-mpeix
-+ exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit 0 ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit 0 ;;
-- i?86:OSF1:*:*)
-+ i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
-@@ -434,196 +736,259 @@
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit 0 ;;
-- CRAY*X-MP:*:*:*)
-- echo xmp-cray-unicos
-- exit 0 ;;
- CRAY*Y-MP:*:*:*)
-- echo ymp-cray-unicos${UNAME_RELEASE}
-+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
-+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-+ -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*TS:*:*:*)
-- echo t90-cray-unicos${UNAME_RELEASE}
-+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
-- CRAY-2:*:*:*)
-- echo cray2-cray-unicos
-- exit 0 ;;
-- F300:UNIX_System_V:*:*)
-- FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
-+ CRAY*T3E:*:*:*)
-+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-+ exit 0 ;;
-+ CRAY*SV1:*:*:*)
-+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-+ exit 0 ;;
-+ *:UNICOS/mp:*:*)
-+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-+ exit 0 ;;
-+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-- echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
-- F301:UNIX_System_V:*:*)
-- echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
-- exit 0 ;;
-- hp3[0-9][05]:NetBSD:*:*)
-- echo m68k-hp-netbsd${UNAME_RELEASE}
-+ 5000:UNIX_System_V:4.*:*)
-+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
-- hp300:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- i?86:BSD/386:*:* | *:BSD/OS:*:*)
-+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
-- *:FreeBSD:*:*)
-- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-+ sparc*:BSD/OS:*:*)
-+ echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
-- *:NetBSD:*:*)
-- echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+ *:BSD/OS:*:*)
-+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
-- *:OpenBSD:*:*)
-- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+ *:FreeBSD:*:*)
-+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
- i*:CYGWIN*:*)
-- echo i386-pc-cygwin32
-+ echo ${UNAME_MACHINE}-pc-cygwin
- exit 0 ;;
- i*:MINGW*:*)
-- echo i386-pc-mingw32
-+ echo ${UNAME_MACHINE}-pc-mingw32
-+ exit 0 ;;
-+ i*:PW*:*)
-+ echo ${UNAME_MACHINE}-pc-pw32
-+ exit 0 ;;
-+ x86:Interix*:[34]*)
-+ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
-+ exit 0 ;;
-+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-+ echo i${UNAME_MACHINE}-pc-mks
-+ exit 0 ;;
-+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-+ # How do we know it's Interix rather than the generic POSIX subsystem?
-+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-+ # UNAME_MACHINE based on the output of uname instead of i386?
-+ echo i586-pc-interix
-+ exit 0 ;;
-+ i*:UWIN*:*)
-+ echo ${UNAME_MACHINE}-pc-uwin
- exit 0 ;;
- p*:CYGWIN*:*)
-- echo powerpcle-unknown-cygwin32
-+ echo powerpcle-unknown-cygwin
- exit 0 ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- *:GNU:*:*)
-+ # the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
-- *:Linux:*:*)
-+ *:GNU/*:*:*)
-+ # other systems with GNU libc and userland
-+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-+ exit 0 ;;
-+ i*86:Minix:*:*)
-+ echo ${UNAME_MACHINE}-pc-minix
-+ exit 0 ;;
-+ arm*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit 0 ;;
-+ cris:Linux:*:*)
-+ echo cris-axis-linux-gnu
-+ exit 0 ;;
-+ crisv32:Linux:*:*)
-+ echo crisv32-axis-linux-gnu
-+ exit 0 ;;
-+ frv:Linux:*:*)
-+ echo frv-unknown-linux-gnu
-+ exit 0 ;;
-+ ia64:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit 0 ;;
-+ m32r*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit 0 ;;
-+ m68*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit 0 ;;
-+ mips:Linux:*:*)
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #undef CPU
-+ #undef mips
-+ #undef mipsel
-+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-+ CPU=mipsel
-+ #else
-+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-+ CPU=mips
-+ #else
-+ CPU=
-+ #endif
-+ #endif
-+EOF
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
-+ ;;
-+ mips64:Linux:*:*)
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #undef CPU
-+ #undef mips64
-+ #undef mips64el
-+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-+ CPU=mips64el
-+ #else
-+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-+ CPU=mips64
-+ #else
-+ CPU=
-+ #endif
-+ #endif
-+EOF
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
-+ ;;
-+ ppc:Linux:*:*)
-+ echo powerpc-unknown-linux-gnu
-+ exit 0 ;;
-+ ppc64:Linux:*:*)
-+ echo powerpc64-unknown-linux-gnu
-+ exit 0 ;;
-+ alpha:Linux:*:*)
-+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-+ EV5) UNAME_MACHINE=alphaev5 ;;
-+ EV56) UNAME_MACHINE=alphaev56 ;;
-+ PCA56) UNAME_MACHINE=alphapca56 ;;
-+ PCA57) UNAME_MACHINE=alphapca56 ;;
-+ EV6) UNAME_MACHINE=alphaev6 ;;
-+ EV67) UNAME_MACHINE=alphaev67 ;;
-+ EV68*) UNAME_MACHINE=alphaev68 ;;
-+ esac
-+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-+ exit 0 ;;
-+ parisc:Linux:*:* | hppa:Linux:*:*)
-+ # Look for CPU level
-+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
-+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
-+ *) echo hppa-unknown-linux-gnu ;;
-+ esac
-+ exit 0 ;;
-+ parisc64:Linux:*:* | hppa64:Linux:*:*)
-+ echo hppa64-unknown-linux-gnu
-+ exit 0 ;;
-+ s390:Linux:*:* | s390x:Linux:*:*)
-+ echo ${UNAME_MACHINE}-ibm-linux
-+ exit 0 ;;
-+ sh64*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit 0 ;;
-+ sh*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit 0 ;;
-+ sparc:Linux:*:* | sparc64:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit 0 ;;
-+ x86_64:Linux:*:*)
-+ echo x86_64-unknown-linux-gnu
-+ exit 0 ;;
-+ i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
-- # first see if it will tell us.
-- ld_help_string=`ld --help 2>&1`
-- ld_supported_emulations=`echo $ld_help_string \
-- | sed -ne '/supported emulations:/!d
-+ # first see if it will tell us. cd to the root directory to prevent
-+ # problems with other programs or directories called `ld' in the path.
-+ # Set LC_ALL=C to ensure ld outputs messages in English.
-+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-+ | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
-- s/.*supported emulations: *//
-+ s/.*supported targets: *//
- s/ .*//
- p'`
-- case "$ld_supported_emulations" in
-- i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;;
-- i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;;
-- sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
-- m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
-- elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;;
-- esac
--
-- if test "${UNAME_MACHINE}" = "alpha" ; then
-- sed 's/^ //' <<EOF >dummy.s
-- .globl main
-- .ent main
-- main:
-- .frame \$30,0,\$26,0
-- .prologue 0
-- .long 0x47e03d80 # implver $0
-- lda \$2,259
-- .long 0x47e20c21 # amask $2,$1
-- srl \$1,8,\$2
-- sll \$2,2,\$2
-- sll \$0,3,\$0
-- addl \$1,\$0,\$0
-- addl \$2,\$0,\$0
-- ret \$31,(\$26),1
-- .end main
--EOF
-- LIBC=""
-- ${CC-cc} dummy.s -o dummy 2>/dev/null
-- if test "$?" = 0 ; then
-- ./dummy
-- case "$?" in
-- 7)
-- UNAME_MACHINE="alpha"
-- ;;
-- 15)
-- UNAME_MACHINE="alphaev5"
-- ;;
-- 14)
-- UNAME_MACHINE="alphaev56"
-- ;;
-- 10)
-- UNAME_MACHINE="alphapca56"
-- ;;
-- 16)
-- UNAME_MACHINE="alphaev6"
-- ;;
-- esac
--
-- objdump --private-headers dummy | \
-- grep ld.so.1 > /dev/null
-- if test "$?" = 0 ; then
-- LIBC="libc1"
-- fi
-- fi
-- rm -f dummy.s dummy
-- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
-- elif test "${UNAME_MACHINE}" = "mips" ; then
-- cat >dummy.c <<EOF
--main(argc, argv)
-- int argc;
-- char *argv[];
--{
--#ifdef __MIPSEB__
-- printf ("%s-unknown-linux-gnu\n", argv[1]);
--#endif
--#ifdef __MIPSEL__
-- printf ("%sel-unknown-linux-gnu\n", argv[1]);
--#endif
-- return 0;
--}
--EOF
-- ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
-- rm -f dummy.c dummy
-- else
-- # Either a pre-BFD a.out linker (linux-gnuoldld)
-- # or one that does not give us useful --help.
-- # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
-- # If ld does not provide *any* "supported emulations:"
-- # that means it is gnuoldld.
-- echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
-- test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
--
-- case "${UNAME_MACHINE}" in
-- i?86)
-- VENDOR=pc;
-- ;;
-- *)
-- VENDOR=unknown;
-- ;;
-- esac
-- # Determine whether the default compiler is a.out or elf
-- cat >dummy.c <<EOF
--#include <features.h>
--main(argc, argv)
-- int argc;
-- char *argv[];
--{
--#ifdef __ELF__
--# ifdef __GLIBC__
--# if __GLIBC__ >= 2
-- printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
--# else
-- printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
--# endif
--# else
-- printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
--# endif
--#else
-- printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
--#endif
-- return 0;
--}
-+ case "$ld_supported_targets" in
-+ elf32-i386)
-+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-+ ;;
-+ a.out-i386-linux)
-+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-+ exit 0 ;;
-+ coff-i386)
-+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-+ exit 0 ;;
-+ "")
-+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
-+ # one that does not give us useful --help.
-+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-+ exit 0 ;;
-+ esac
-+ # Determine whether the default compiler is a.out or elf
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #include <features.h>
-+ #ifdef __ELF__
-+ # ifdef __GLIBC__
-+ # if __GLIBC__ >= 2
-+ LIBC=gnu
-+ # else
-+ LIBC=gnulibc1
-+ # endif
-+ # else
-+ LIBC=gnulibc1
-+ # endif
-+ #else
-+ #ifdef __INTEL_COMPILER
-+ LIBC=gnu
-+ #else
-+ LIBC=gnuaout
-+ #endif
-+ #endif
-+ #ifdef __dietlibc__
-+ LIBC=dietlibc
-+ #endif
- EOF
-- ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
-- rm -f dummy.c dummy
-- fi ;;
--# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
--# are messed up and put the nodename in both sysname and nodename.
-- i?86:DYNIX/ptx:4*:*)
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-+ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
-+ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
-+ ;;
-+ i*86:DYNIX/ptx:4*:*)
-+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-+ # earlier versions are messed up and put the nodename in both
-+ # sysname and nodename.
- echo i386-sequent-sysv4
- exit 0 ;;
-- i?86:UNIX_SV:4.2MP:2.*)
-+ i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
-@@ -631,28 +996,62 @@
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
-- i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
-+ i*86:OS/2:*:*)
-+ # If we were able to find `uname', then EMX Unix compatibility
-+ # is probably installed.
-+ echo ${UNAME_MACHINE}-pc-os2-emx
-+ exit 0 ;;
-+ i*86:XTS-300:*:STOP)
-+ echo ${UNAME_MACHINE}-unknown-stop
-+ exit 0 ;;
-+ i*86:atheos:*:*)
-+ echo ${UNAME_MACHINE}-unknown-atheos
-+ exit 0 ;;
-+ i*86:syllable:*:*)
-+ echo ${UNAME_MACHINE}-pc-syllable
-+ exit 0 ;;
-+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-+ echo i386-unknown-lynxos${UNAME_RELEASE}
-+ exit 0 ;;
-+ i*86:*DOS:*:*)
-+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
-+ exit 0 ;;
-+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-- echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
-+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- else
-- echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
-+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit 0 ;;
-- i?86:*:3.2:*)
-+ i*86:*:5:[78]*)
-+ case `/bin/uname -X | grep "^Machine"` in
-+ *486*) UNAME_MACHINE=i486 ;;
-+ *Pentium) UNAME_MACHINE=i586 ;;
-+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-+ esac
-+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-+ exit 0 ;;
-+ i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
-- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
-- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
-- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
-+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
-+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-+ && UNAME_MACHINE=i686
-+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-+ && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit 0 ;;
- pc:*:*:*)
-+ # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
-@@ -674,9 +1073,15 @@
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
-- M68*:*:R3V[567]*:*)
-+ mc68k:UNIX:SYSTEM5:3.51m)
-+ echo m68k-convergent-sysv
-+ exit 0 ;;
-+ M680?0:D-NIX:5.3:*)
-+ echo m68k-diab-dnix
-+ exit 0 ;;
-+ M68*:*:R3V[5678]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-- 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
-+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-@@ -687,24 +1092,27 @@
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
-- m68*:LynxOS:2.*:*)
-+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit 0 ;;
-- i?86:LynxOS:2.*:*)
-- echo i386-unknown-lynxos${UNAME_RELEASE}
-- exit 0 ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
-- rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
-+ rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
-+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
-+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
-+ exit 0 ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
-+ RM*:ReliantUNIX-*:*:*)
-+ echo mips-sni-sysv4
-+ exit 0 ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
-@@ -716,8 +1124,8 @@
- echo ns32k-sni-sysv
- fi
- exit 0 ;;
-- PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-- # says <Richard.M.Bartel@ccMail.Census.GOV>
-+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-+ # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit 0 ;;
- *:UNIX_System_V:4*:FTX*)
-@@ -729,25 +1137,130 @@
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit 0 ;;
-+ *:VOS:*:*)
-+ # From Paul.Green@stratus.com.
-+ echo hppa1.1-stratus-vos
-+ exit 0 ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
-- news*:NEWS-OS:*:6*)
-+ news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit 0 ;;
-- R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)
-+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
-+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
-+ echo powerpc-be-beos
-+ exit 0 ;;
-+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
-+ echo powerpc-apple-beos
-+ exit 0 ;;
-+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
-+ echo i586-pc-beos
-+ exit 0 ;;
-+ SX-4:SUPER-UX:*:*)
-+ echo sx4-nec-superux${UNAME_RELEASE}
-+ exit 0 ;;
-+ SX-5:SUPER-UX:*:*)
-+ echo sx5-nec-superux${UNAME_RELEASE}
-+ exit 0 ;;
-+ SX-6:SUPER-UX:*:*)
-+ echo sx6-nec-superux${UNAME_RELEASE}
-+ exit 0 ;;
-+ Power*:Rhapsody:*:*)
-+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:Rhapsody:*:*)
-+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:Darwin:*:*)
-+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-+ case $UNAME_PROCESSOR in
-+ *86) UNAME_PROCESSOR=i686 ;;
-+ unknown) UNAME_PROCESSOR=powerpc ;;
-+ esac
-+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
-+ UNAME_PROCESSOR=`uname -p`
-+ if test "$UNAME_PROCESSOR" = "x86"; then
-+ UNAME_PROCESSOR=i386
-+ UNAME_MACHINE=pc
-+ fi
-+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:QNX:*:4*)
-+ echo i386-pc-qnx
-+ exit 0 ;;
-+ NSR-?:NONSTOP_KERNEL:*:*)
-+ echo nsr-tandem-nsk${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:NonStop-UX:*:*)
-+ echo mips-compaq-nonstopux
-+ exit 0 ;;
-+ BS2000:POSIX*:*:*)
-+ echo bs2000-siemens-sysv
-+ exit 0 ;;
-+ DS/*:UNIX_System_V:*:*)
-+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:Plan9:*:*)
-+ # "uname -m" is not consistent, so use $cputype instead. 386
-+ # is converted to i386 for consistency with other x86
-+ # operating systems.
-+ if test "$cputype" = "386"; then
-+ UNAME_MACHINE=i386
-+ else
-+ UNAME_MACHINE="$cputype"
-+ fi
-+ echo ${UNAME_MACHINE}-unknown-plan9
-+ exit 0 ;;
-+ *:TOPS-10:*:*)
-+ echo pdp10-unknown-tops10
-+ exit 0 ;;
-+ *:TENEX:*:*)
-+ echo pdp10-unknown-tenex
-+ exit 0 ;;
-+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-+ echo pdp10-dec-tops20
-+ exit 0 ;;
-+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-+ echo pdp10-xkl-tops20
-+ exit 0 ;;
-+ *:TOPS-20:*:*)
-+ echo pdp10-unknown-tops20
-+ exit 0 ;;
-+ *:ITS:*:*)
-+ echo pdp10-unknown-its
-+ exit 0 ;;
-+ SEI:*:*:SEIUX)
-+ echo mips-sei-seiux${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:DragonFly:*:*)
-+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-+ exit 0 ;;
-+ *:*VMS:*:*)
-+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
-+ case "${UNAME_MACHINE}" in
-+ A*) echo alpha-dec-vms && exit 0 ;;
-+ I*) echo ia64-dec-vms && exit 0 ;;
-+ V*) echo vax-dec-vms && exit 0 ;;
-+ esac ;;
-+ *:XENIX:*:SysV)
-+ echo i386-pc-xenix
-+ exit 0 ;;
- esac
-
- #echo '(No uname command or uname output not recognized.)' 1>&2
- #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
--cat >dummy.c <<EOF
-+eval $set_cc_for_build
-+cat >$dummy.c <<EOF
- #ifdef _SEQUENT_
- # include <sys/types.h>
- # include <sys/utsname.h>
-@@ -785,7 +1298,10 @@
- #endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-+ if (version < 4)
-+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-+ else
-+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
- #endif
-
-@@ -830,11 +1346,24 @@
- #endif
-
- #if defined (vax)
--#if !defined (ultrix)
-- printf ("vax-dec-bsd\n"); exit (0);
--#else
-- printf ("vax-dec-ultrix\n"); exit (0);
--#endif
-+# if !defined (ultrix)
-+# include <sys/param.h>
-+# if defined (BSD)
-+# if BSD == 43
-+ printf ("vax-dec-bsd4.3\n"); exit (0);
-+# else
-+# if BSD == 199006
-+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
-+# else
-+ printf ("vax-dec-bsd\n"); exit (0);
-+# endif
-+# endif
-+# else
-+ printf ("vax-dec-bsd\n"); exit (0);
-+# endif
-+# else
-+ printf ("vax-dec-ultrix\n"); exit (0);
-+# endif
- #endif
-
- #if defined (alliant) && defined (i860)
-@@ -845,8 +1374,7 @@
- }
- EOF
-
--${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
--rm -f dummy.c dummy
-+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
-
- # Apollos put the system type in the environment.
-
-@@ -878,6 +1406,48 @@
- esac
- fi
-
--#echo '(Unable to guess system type)' 1>&2
-+cat >&2 <<EOF
-+$0: unable to guess system type
-+
-+This script, last modified $timestamp, has failed to recognize
-+the operating system you are using. It is advised that you
-+download the most up to date version of the config scripts from
-+
-+ ftp://ftp.gnu.org/pub/gnu/config/
-+
-+If the version you run ($0) is already up to date, please
-+send the following data and any information you think might be
-+pertinent to <config-patches@gnu.org> in order to provide the needed
-+information to handle your system.
-+
-+config.guess timestamp = $timestamp
-+
-+uname -m = `(uname -m) 2>/dev/null || echo unknown`
-+uname -r = `(uname -r) 2>/dev/null || echo unknown`
-+uname -s = `(uname -s) 2>/dev/null || echo unknown`
-+uname -v = `(uname -v) 2>/dev/null || echo unknown`
-+
-+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-+
-+hostinfo = `(hostinfo) 2>/dev/null`
-+/bin/universe = `(/bin/universe) 2>/dev/null`
-+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-+/bin/arch = `(/bin/arch) 2>/dev/null`
-+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-+
-+UNAME_MACHINE = ${UNAME_MACHINE}
-+UNAME_RELEASE = ${UNAME_RELEASE}
-+UNAME_SYSTEM = ${UNAME_SYSTEM}
-+UNAME_VERSION = ${UNAME_VERSION}
-+EOF
-
- exit 1
-+
-+# Local variables:
-+# eval: (add-hook 'write-file-hooks 'time-stamp)
-+# time-stamp-start: "timestamp='"
-+# time-stamp-format: "%:y-%02m-%02d"
-+# time-stamp-end: "'"
-+# End:
-diff -urN jpeg.old/config.sub jpeg.dev/config.sub
---- jpeg.old/config.sub 1998-03-25 16:25:39.000000000 +0100
-+++ jpeg.dev/config.sub 2006-04-21 16:16:34.000000000 +0200
-@@ -1,6 +1,10 @@
- #! /bin/sh
--# Configuration validation subroutine script, version 1.1.
--# Copyright (C) 1991, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
-+# Configuration validation subroutine script.
-+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-+# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+
-+timestamp='2004-11-30'
-+
- # This file is (in principle) common to ALL GNU software.
- # The presence of a machine in this file suggests that SOME GNU software
- # can handle that machine. It does not imply ALL GNU software can.
-@@ -25,6 +29,9 @@
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
-
-+# Please send patches to <config-patches@gnu.org>. Submit a context
-+# diff and a properly formatted ChangeLog entry.
-+#
- # Configuration subroutine to validate and canonicalize a configuration type.
- # Supply the specified configuration type as an argument.
- # If it is invalid, we print an error message on stderr and exit with code 1.
-@@ -45,30 +52,74 @@
- # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
- # It is wrong to echo any other type of specification.
-
--if [ x$1 = x ]
--then
-- echo Configuration name missing. 1>&2
-- echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
-- echo "or $0 ALIAS" 1>&2
-- echo where ALIAS is a recognized configuration type. 1>&2
-- exit 1
--fi
-+me=`echo "$0" | sed -e 's,.*/,,'`
-
--# First pass through any local machine types.
--case $1 in
-- *local*)
-- echo $1
-- exit 0
-- ;;
-- *)
-- ;;
-+usage="\
-+Usage: $0 [OPTION] CPU-MFR-OPSYS
-+ $0 [OPTION] ALIAS
-+
-+Canonicalize a configuration name.
-+
-+Operation modes:
-+ -h, --help print this help, then exit
-+ -t, --time-stamp print date of last modification, then exit
-+ -v, --version print version number, then exit
-+
-+Report bugs and patches to <config-patches@gnu.org>."
-+
-+version="\
-+GNU config.sub ($timestamp)
-+
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-+Free Software Foundation, Inc.
-+
-+This is free software; see the source for copying conditions. There is NO
-+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-+
-+help="
-+Try \`$me --help' for more information."
-+
-+# Parse command line
-+while test $# -gt 0 ; do
-+ case $1 in
-+ --time-stamp | --time* | -t )
-+ echo "$timestamp" ; exit 0 ;;
-+ --version | -v )
-+ echo "$version" ; exit 0 ;;
-+ --help | --h* | -h )
-+ echo "$usage"; exit 0 ;;
-+ -- ) # Stop option processing
-+ shift; break ;;
-+ - ) # Use stdin as input.
-+ break ;;
-+ -* )
-+ echo "$me: invalid option $1$help"
-+ exit 1 ;;
-+
-+ *local*)
-+ # First pass through any local machine types.
-+ echo $1
-+ exit 0;;
-+
-+ * )
-+ break ;;
-+ esac
-+done
-+
-+case $# in
-+ 0) echo "$me: missing argument$help" >&2
-+ exit 1;;
-+ 1) ;;
-+ *) echo "$me: too many arguments$help" >&2
-+ exit 1;;
- esac
-
- # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
- # Here we must recognize all the valid KERNEL-OS combinations.
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
- case $maybe_os in
-- linux-gnu*)
-+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
-+ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
-@@ -94,15 +145,33 @@
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-- -apple)
-+ -apple | -axis | -knuth | -cray)
- os=
- basic_machine=$1
- ;;
-+ -sim | -cisco | -oki | -wec | -winbond)
-+ os=
-+ basic_machine=$1
-+ ;;
-+ -scout)
-+ ;;
-+ -wrs)
-+ os=-vxworks
-+ basic_machine=$1
-+ ;;
-+ -chorusos*)
-+ os=-chorusos
-+ basic_machine=$1
-+ ;;
-+ -chorusrdb)
-+ os=-chorusrdb
-+ basic_machine=$1
-+ ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco5)
-- os=sco3.2v5
-+ os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
-@@ -121,6 +190,9 @@
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
-+ -udk*)
-+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-+ ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-@@ -143,26 +215,74 @@
- -psos*)
- os=-psos
- ;;
-+ -mint | -mint[0-9]*)
-+ basic_machine=m68k-atari
-+ os=-mint
-+ ;;
- esac
-
- # Decode aliases for certain CPU-COMPANY combinations.
- case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
-- tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
-- | arme[lb] | pyramid | mn10200 | mn10300 \
-- | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
-- | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
-- | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
-- | mips64 | mipsel | mips64el | mips64orion | mips64orionel \
-- | mipstx39 | mipstx39el \
-- | sparc | sparclet | sparclite | sparc64 | v850)
-+ 1750a | 580 \
-+ | a29k \
-+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-+ | am33_2.0 \
-+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
-+ | c4x | clipper \
-+ | d10v | d30v | dlx | dsp16xx \
-+ | fr30 | frv \
-+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-+ | i370 | i860 | i960 | ia64 \
-+ | ip2k | iq2000 \
-+ | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
-+ | mips | mipsbe | mipseb | mipsel | mipsle \
-+ | mips16 \
-+ | mips64 | mips64el \
-+ | mips64vr | mips64vrel \
-+ | mips64orion | mips64orionel \
-+ | mips64vr4100 | mips64vr4100el \
-+ | mips64vr4300 | mips64vr4300el \
-+ | mips64vr5000 | mips64vr5000el \
-+ | mipsisa32 | mipsisa32el \
-+ | mipsisa32r2 | mipsisa32r2el \
-+ | mipsisa64 | mipsisa64el \
-+ | mipsisa64r2 | mipsisa64r2el \
-+ | mipsisa64sb1 | mipsisa64sb1el \
-+ | mipsisa64sr71k | mipsisa64sr71kel \
-+ | mipstx39 | mipstx39el \
-+ | mn10200 | mn10300 \
-+ | msp430 \
-+ | ns16k | ns32k \
-+ | openrisc | or32 \
-+ | pdp10 | pdp11 | pj | pjl \
-+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-+ | pyramid \
-+ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
-+ | sh64 | sh64le \
-+ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
-+ | strongarm \
-+ | tahoe | thumb | tic4x | tic80 | tron \
-+ | v850 | v850e \
-+ | we32k \
-+ | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
-+ | z8k)
- basic_machine=$basic_machine-unknown
- ;;
-+ m6811 | m68hc11 | m6812 | m68hc12)
-+ # Motorola 68HC11/12.
-+ basic_machine=$basic_machine-unknown
-+ os=-none
-+ ;;
-+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-+ ;;
-+
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
-- i[3456]86)
-+ i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
-@@ -171,27 +291,86 @@
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
-- vax-* | tahoe-* | i[3456]86-* | i860-* | m32r-* | m68k-* | m68000-* \
-- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
-- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
-- | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
-- | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* \
-- | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
-- | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
-- | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
-- | sparc64-* | mips64-* | mipsel-* \
-- | mips64el-* | mips64orion-* | mips64orionel-* \
-- | mipstx39-* | mipstx39el-* \
-- | f301-*)
-+ 580-* \
-+ | a29k-* \
-+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
-+ | avr-* \
-+ | bs2000-* \
-+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-+ | clipper-* | craynv-* | cydra-* \
-+ | d10v-* | d30v-* | dlx-* \
-+ | elxsi-* \
-+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
-+ | h8300-* | h8500-* \
-+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-+ | i*86-* | i860-* | i960-* | ia64-* \
-+ | ip2k-* | iq2000-* \
-+ | m32r-* | m32rle-* \
-+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-+ | m88110-* | m88k-* | maxq-* | mcore-* \
-+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-+ | mips16-* \
-+ | mips64-* | mips64el-* \
-+ | mips64vr-* | mips64vrel-* \
-+ | mips64orion-* | mips64orionel-* \
-+ | mips64vr4100-* | mips64vr4100el-* \
-+ | mips64vr4300-* | mips64vr4300el-* \
-+ | mips64vr5000-* | mips64vr5000el-* \
-+ | mipsisa32-* | mipsisa32el-* \
-+ | mipsisa32r2-* | mipsisa32r2el-* \
-+ | mipsisa64-* | mipsisa64el-* \
-+ | mipsisa64r2-* | mipsisa64r2el-* \
-+ | mipsisa64sb1-* | mipsisa64sb1el-* \
-+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-+ | mipstx39-* | mipstx39el-* \
-+ | mmix-* \
-+ | msp430-* \
-+ | none-* | np1-* | ns16k-* | ns32k-* \
-+ | orion-* \
-+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-+ | pyramid-* \
-+ | romp-* | rs6000-* \
-+ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
-+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-+ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
-+ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
-+ | tahoe-* | thumb-* \
-+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-+ | tron-* \
-+ | v850-* | v850e-* | vax-* \
-+ | we32k-* \
-+ | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
-+ | xstormy16-* | xtensa-* \
-+ | ymp-* \
-+ | z8k-*)
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
-+ 386bsd)
-+ basic_machine=i386-unknown
-+ os=-bsd
-+ ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
-+ a29khif)
-+ basic_machine=a29k-amd
-+ os=-udi
-+ ;;
-+ abacus)
-+ basic_machine=abacus-unknown
-+ ;;
-+ adobe68k)
-+ basic_machine=m68010-adobe
-+ os=-scout
-+ ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
-@@ -202,25 +381,35 @@
- basic_machine=a29k-none
- os=-bsd
- ;;
-+ amd64)
-+ basic_machine=x86_64-pc
-+ ;;
-+ amd64-*)
-+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
-- basic_machine=m68k-cbm
-+ basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
-- basic_machine=m68k-cbm
-+ basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
-- basic_machine=m68k-cbm
-+ basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
-+ apollo68bsd)
-+ basic_machine=m68k-apollo
-+ os=-bsd
-+ ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
-@@ -229,6 +418,10 @@
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
-+ c90)
-+ basic_machine=c90-cray
-+ os=-unicos
-+ ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
-@@ -249,27 +442,45 @@
- basic_machine=c38-convex
- os=-bsd
- ;;
-- cray | ymp)
-- basic_machine=ymp-cray
-- os=-unicos
-- ;;
-- cray2)
-- basic_machine=cray2-cray
-+ cray | j90)
-+ basic_machine=j90-cray
- os=-unicos
- ;;
-- [ctj]90-cray)
-- basic_machine=c90-cray
-- os=-unicos
-+ craynv)
-+ basic_machine=craynv-cray
-+ os=-unicosmp
-+ ;;
-+ cr16c)
-+ basic_machine=cr16c-unknown
-+ os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
-+ crisv32 | crisv32-* | etraxfs*)
-+ basic_machine=crisv32-axis
-+ ;;
-+ cris | cris-* | etrax*)
-+ basic_machine=cris-axis
-+ ;;
-+ crx)
-+ basic_machine=crx-unknown
-+ os=-elf
-+ ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
-+ decsystem10* | dec10*)
-+ basic_machine=pdp10-dec
-+ os=-tops10
-+ ;;
-+ decsystem20* | dec20*)
-+ basic_machine=pdp10-dec
-+ os=-tops20
-+ ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
-@@ -278,6 +489,10 @@
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
-+ djgpp)
-+ basic_machine=i586-pc
-+ os=-msdosdjgpp
-+ ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
-@@ -297,6 +512,10 @@
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
-+ es1800 | OSE68k | ose68k | ose | OSE)
-+ basic_machine=m68k-ericsson
-+ os=-ose
-+ ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
-@@ -307,6 +526,10 @@
- basic_machine=tron-gmicro
- os=-sysv
- ;;
-+ go32)
-+ basic_machine=i386-pc
-+ os=-go32
-+ ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
-@@ -315,6 +538,14 @@
- basic_machine=h8300-hitachi
- os=-hms
- ;;
-+ h8300xray)
-+ basic_machine=h8300-hitachi
-+ os=-xray
-+ ;;
-+ h8500hms)
-+ basic_machine=h8500-hitachi
-+ os=-hms
-+ ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
-@@ -330,13 +561,30 @@
- basic_machine=m68k-hp
- os=-hpux
- ;;
-+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
-+ basic_machine=hppa1.0-hp
-+ ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
-- hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
-+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
-+ basic_machine=hppa1.0-hp
-+ ;;
-+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
-+ basic_machine=hppa1.1-hp
-+ ;;
-+ hp9k78[0-9] | hp78[0-9])
-+ # FIXME: really hppa2.0-hp
-+ basic_machine=hppa1.1-hp
-+ ;;
-+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-+ # FIXME: really hppa2.0-hp
-+ basic_machine=hppa1.1-hp
-+ ;;
-+ hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
-@@ -345,27 +593,42 @@
- hppa-next)
- os=-nextstep3
- ;;
-+ hppaosf)
-+ basic_machine=hppa1.1-hp
-+ os=-osf
-+ ;;
-+ hppro)
-+ basic_machine=hppa1.1-hp
-+ os=-proelf
-+ ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
-- os=-mvs
- ;;
- # I'm not sure what "Sysv32" means. Should this be sysv3.2?
-- i[3456]86v32)
-+ i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
-- i[3456]86v4*)
-+ i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
-- i[3456]86v)
-+ i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
-- i[3456]86sol2)
-+ i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
-+ i386mach)
-+ basic_machine=i386-mach
-+ os=-mach
-+ ;;
-+ i386-vsta | vsta)
-+ basic_machine=i386-unknown
-+ os=-vsta
-+ ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
-@@ -391,16 +654,16 @@
- basic_machine=ns32k-utek
- os=-sysv
- ;;
-+ mingw32)
-+ basic_machine=i386-pc
-+ os=-mingw32
-+ ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
-- mipsel*-linux*)
-- basic_machine=mipsel-unknown
-- os=-linux-gnu
-- ;;
-- mips*-linux*)
-- basic_machine=mips-unknown
-- os=-linux-gnu
-+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-+ basic_machine=m68k-atari
-+ os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-@@ -408,10 +671,34 @@
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
-+ monitor)
-+ basic_machine=m68k-rom68k
-+ os=-coff
-+ ;;
-+ morphos)
-+ basic_machine=powerpc-unknown
-+ os=-morphos
-+ ;;
-+ msdos)
-+ basic_machine=i386-pc
-+ os=-msdos
-+ ;;
-+ mvs)
-+ basic_machine=i370-ibm
-+ os=-mvs
-+ ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
-+ netbsd386)
-+ basic_machine=i386-unknown
-+ os=-netbsd
-+ ;;
-+ netwinder)
-+ basic_machine=armv4l-rebel
-+ os=-linux
-+ ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
-@@ -424,6 +711,10 @@
- basic_machine=mips-sony
- os=-newsos
- ;;
-+ necv70)
-+ basic_machine=v70-nec
-+ os=-sysv
-+ ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
-@@ -449,9 +740,40 @@
- basic_machine=i960-intel
- os=-nindy
- ;;
-+ mon960)
-+ basic_machine=i960-intel
-+ os=-mon960
-+ ;;
-+ nonstopux)
-+ basic_machine=mips-compaq
-+ os=-nonstopux
-+ ;;
- np1)
- basic_machine=np1-gould
- ;;
-+ nsr-tandem)
-+ basic_machine=nsr-tandem
-+ ;;
-+ op50n-* | op60c-*)
-+ basic_machine=hppa1.1-oki
-+ os=-proelf
-+ ;;
-+ or32 | or32-*)
-+ basic_machine=or32-unknown
-+ os=-coff
-+ ;;
-+ os400)
-+ basic_machine=powerpc-ibm
-+ os=-os400
-+ ;;
-+ OSE68000 | ose68000)
-+ basic_machine=m68000-ericsson
-+ os=-ose
-+ ;;
-+ os68k)
-+ basic_machine=m68k-none
-+ os=-os68k
-+ ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
-@@ -466,53 +788,95 @@
- pbb)
- basic_machine=m68k-tti
- ;;
-- pc532 | pc532-*)
-+ pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
-- pentium | p5)
-- basic_machine=i586-intel
-+ pentium | p5 | k5 | k6 | nexgen | viac3)
-+ basic_machine=i586-pc
-+ ;;
-+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
-+ basic_machine=i686-pc
- ;;
-- pentiumpro | p6)
-- basic_machine=i686-intel
-+ pentiumii | pentium2 | pentiumiii | pentium3)
-+ basic_machine=i686-pc
- ;;
-- pentium-* | p5-*)
-+ pentium4)
-+ basic_machine=i786-pc
-+ ;;
-+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
-- pentiumpro-* | p6-*)
-+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
-+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
-+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
-- k5)
-- # We don't have specific support for AMD's K5 yet, so just call it a Pentium
-- basic_machine=i586-amd
-- ;;
-- nexen)
-- # We don't have specific support for Nexgen yet, so just call it a Pentium
-- basic_machine=i586-nexgen
-+ pentium4-*)
-+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
-- power) basic_machine=rs6000-ibm
-+ power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
-- ;;
-+ ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
-- ;;
-+ ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
-+ ppc64) basic_machine=powerpc64-unknown
-+ ;;
-+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
-+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-+ basic_machine=powerpc64le-unknown
-+ ;;
-+ ppc64le-* | powerpc64little-*)
-+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
- ps2)
- basic_machine=i386-ibm
- ;;
-+ pw32)
-+ basic_machine=i586-unknown
-+ os=-pw32
-+ ;;
-+ rom68k)
-+ basic_machine=m68k-rom68k
-+ os=-coff
-+ ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
-+ s390 | s390-*)
-+ basic_machine=s390-ibm
-+ ;;
-+ s390x | s390x-*)
-+ basic_machine=s390x-ibm
-+ ;;
-+ sa29200)
-+ basic_machine=a29k-amd
-+ os=-udi
-+ ;;
-+ sb1)
-+ basic_machine=mipsisa64sb1-unknown
-+ ;;
-+ sb1el)
-+ basic_machine=mipsisa64sb1el-unknown
-+ ;;
-+ sei)
-+ basic_machine=mips-sei
-+ os=-seiux
-+ ;;
- sequent)
- basic_machine=i386-sequent
- ;;
-@@ -520,6 +884,13 @@
- basic_machine=sh-hitachi
- os=-hms
- ;;
-+ sh64)
-+ basic_machine=sh64-unknown
-+ ;;
-+ sparclite-wrs | simso-wrs)
-+ basic_machine=sparclite-wrs
-+ os=-vxworks
-+ ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
-@@ -527,6 +898,13 @@
- spur)
- basic_machine=spur-unknown
- ;;
-+ st2000)
-+ basic_machine=m68k-tandem
-+ ;;
-+ stratus)
-+ basic_machine=i860-stratus
-+ os=-sysv4
-+ ;;
- sun2)
- basic_machine=m68000-sun
- ;;
-@@ -567,19 +945,51 @@
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
-+ sv1)
-+ basic_machine=sv1-cray
-+ os=-unicos
-+ ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
-+ t3e)
-+ basic_machine=alphaev5-cray
-+ os=-unicos
-+ ;;
-+ t90)
-+ basic_machine=t90-cray
-+ os=-unicos
-+ ;;
-+ tic54x | c54x*)
-+ basic_machine=tic54x-unknown
-+ os=-coff
-+ ;;
-+ tic55x | c55x*)
-+ basic_machine=tic55x-unknown
-+ os=-coff
-+ ;;
-+ tic6x | c6x*)
-+ basic_machine=tic6x-unknown
-+ os=-coff
-+ ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
-+ toad1)
-+ basic_machine=pdp10-xkl
-+ os=-tops20
-+ ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
-+ tpf)
-+ basic_machine=s390x-ibm
-+ os=-tpf
-+ ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
-@@ -588,6 +998,10 @@
- basic_machine=a29k-nyu
- os=-sym1
- ;;
-+ v810 | necv810)
-+ basic_machine=v810-nec
-+ os=-none
-+ ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
-@@ -597,8 +1011,8 @@
- os=-vms
- ;;
- vpp*|vx|vx-*)
-- basic_machine=f301-fujitsu
-- ;;
-+ basic_machine=f301-fujitsu
-+ ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
-@@ -611,13 +1025,29 @@
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
-- xmp)
-- basic_machine=xmp-cray
-- os=-unicos
-+ w65*)
-+ basic_machine=w65-wdc
-+ os=-none
-+ ;;
-+ w89k-*)
-+ basic_machine=hppa1.1-winbond
-+ os=-proelf
-+ ;;
-+ xbox)
-+ basic_machine=i686-pc
-+ os=-mingw32
- ;;
-- xps | xps100)
-+ xps | xps100)
- basic_machine=xps100-honeywell
- ;;
-+ ymp)
-+ basic_machine=ymp-cray
-+ os=-unicos
-+ ;;
-+ z8k-*-coff)
-+ basic_machine=z8k-unknown
-+ os=-sim
-+ ;;
- none)
- basic_machine=none-none
- os=-none
-@@ -625,32 +1055,47 @@
-
- # Here we handle the default manufacturer of certain CPU types. It is in
- # some cases the only manufacturer, in others, it is the most popular.
-- mips)
-- if [ x$os = x-linux-gnu ]; then
-- basic_machine=mips-unknown
-- else
-- basic_machine=mips-mips
-- fi
-+ w89k)
-+ basic_machine=hppa1.1-winbond
-+ ;;
-+ op50n)
-+ basic_machine=hppa1.1-oki
-+ ;;
-+ op60c)
-+ basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
-+ mmix)
-+ basic_machine=mmix-knuth
-+ ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
-+ pdp10)
-+ # there are many clones, so DEC is not a safe bet
-+ basic_machine=pdp10-unknown
-+ ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
-- sparc)
-+ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
-+ basic_machine=sh-unknown
-+ ;;
-+ sh64)
-+ basic_machine=sh64-unknown
-+ ;;
-+ sparc | sparcv8 | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
-- cydra)
-+ cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
-@@ -659,6 +1104,15 @@
- orion105)
- basic_machine=clipper-highlevel
- ;;
-+ mac | mpw | mac-mpw)
-+ basic_machine=m68k-apple
-+ ;;
-+ pmac | pmac-mpw)
-+ basic_machine=powerpc-apple
-+ ;;
-+ *-unknown)
-+ # Make sure to match an already-canonicalized machine name.
-+ ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
-@@ -711,14 +1165,46 @@
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
-- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
-+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
-+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-- | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-- | -mingw32* | -linux-gnu* | -uxpv*)
-+ | -chorusos* | -chorusrdb* \
-+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-+ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
-+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
-+ -qnx*)
-+ case $basic_machine in
-+ x86-* | i*86-*)
-+ ;;
-+ *)
-+ os=-nto$os
-+ ;;
-+ esac
-+ ;;
-+ -nto-qnx*)
-+ ;;
-+ -nto*)
-+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
-+ ;;
-+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
-+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-+ ;;
-+ -mac*)
-+ os=`echo $os | sed -e 's|mac|macos|'`
-+ ;;
-+ -linux-dietlibc)
-+ os=-linux-dietlibc
-+ ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
-@@ -728,6 +1214,15 @@
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
-+ -opened*)
-+ os=-openedition
-+ ;;
-+ -os400*)
-+ os=-os400
-+ ;;
-+ -wince*)
-+ os=-wince
-+ ;;
- -osfrose*)
- os=-osfrose
- ;;
-@@ -743,11 +1238,26 @@
- -acis*)
- os=-aos
- ;;
-+ -atheos*)
-+ os=-atheos
-+ ;;
-+ -syllable*)
-+ os=-syllable
-+ ;;
-+ -386bsd)
-+ os=-bsd
-+ ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
-+ -nova*)
-+ os=-rtmk-nova
-+ ;;
- -ns2 )
-- os=-nextstep2
-+ os=-nextstep2
-+ ;;
-+ -nsk*)
-+ os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
-@@ -756,6 +1266,9 @@
- -sinix*)
- os=-sysv4
- ;;
-+ -tpf*)
-+ os=-tpf
-+ ;;
- -triton*)
- os=-sysv3
- ;;
-@@ -774,9 +1287,27 @@
- # This must come after -sysvr4.
- -sysv*)
- ;;
-+ -ose*)
-+ os=-ose
-+ ;;
-+ -es1800*)
-+ os=-ose
-+ ;;
- -xenix)
- os=-xenix
- ;;
-+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-+ os=-mint
-+ ;;
-+ -aros*)
-+ os=-aros
-+ ;;
-+ -kaos*)
-+ os=-kaos
-+ ;;
-+ -zvmoe)
-+ os=-zvmoe
-+ ;;
- -none)
- ;;
- *)
-@@ -802,10 +1333,20 @@
- *-acorn)
- os=-riscix1.2
- ;;
-+ arm*-rebel)
-+ os=-linux
-+ ;;
- arm*-semi)
- os=-aout
- ;;
-- pdp11-*)
-+ c4x-* | tic4x-*)
-+ os=-coff
-+ ;;
-+ # This must come before the *-dec entry.
-+ pdp10-*)
-+ os=-tops20
-+ ;;
-+ pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
-@@ -823,15 +1364,42 @@
- # default.
- # os=-sunos4
- ;;
-+ m68*-cisco)
-+ os=-aout
-+ ;;
-+ mips*-cisco)
-+ os=-elf
-+ ;;
-+ mips*-*)
-+ os=-elf
-+ ;;
-+ or32-*)
-+ os=-coff
-+ ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
-+ *-be)
-+ os=-beos
-+ ;;
- *-ibm)
- os=-aix
- ;;
-+ *-knuth)
-+ os=-mmixware
-+ ;;
-+ *-wec)
-+ os=-proelf
-+ ;;
-+ *-winbond)
-+ os=-proelf
-+ ;;
-+ *-oki)
-+ os=-proelf
-+ ;;
- *-hp)
- os=-hpux
- ;;
-@@ -874,27 +1442,39 @@
- *-next)
- os=-nextstep3
- ;;
-- *-gould)
-+ *-gould)
- os=-sysv
- ;;
-- *-highlevel)
-+ *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
-- *-sgi)
-+ *-sgi)
- os=-irix
- ;;
-- *-siemens)
-+ *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
-- f301-fujitsu)
-+ f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
-+ *-rom68k)
-+ os=-coff
-+ ;;
-+ *-*bug)
-+ os=-coff
-+ ;;
-+ *-apple)
-+ os=-macos
-+ ;;
-+ *-atari*)
-+ os=-mint
-+ ;;
- *)
- os=-none
- ;;
-@@ -916,9 +1496,15 @@
- -aix*)
- vendor=ibm
- ;;
-+ -beos*)
-+ vendor=be
-+ ;;
- -hpux*)
- vendor=hp
- ;;
-+ -mpeix*)
-+ vendor=hp
-+ ;;
- -hiux*)
- vendor=hitachi
- ;;
-@@ -934,21 +1520,47 @@
- -genix*)
- vendor=ns
- ;;
-- -mvs*)
-+ -mvs* | -opened*)
-+ vendor=ibm
-+ ;;
-+ -os400*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
-- -vxsim* | -vxworks*)
-+ -tpf*)
-+ vendor=ibm
-+ ;;
-+ -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
-+ -hms*)
-+ vendor=hitachi
-+ ;;
-+ -mpw* | -macos*)
-+ vendor=apple
-+ ;;
-+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-+ vendor=atari
-+ ;;
-+ -vos*)
-+ vendor=stratus
-+ ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
- esac
-
- echo $basic_machine$os
-+exit 0
-+
-+# Local variables:
-+# eval: (add-hook 'write-file-hooks 'time-stamp)
-+# time-stamp-start: "timestamp='"
-+# time-stamp-format: "%:y-%02m-%02d"
-+# time-stamp-end: "'"
-+# End:
diff --git a/openwrt/package/kismet/Config.in b/openwrt/package/kismet/Config.in
deleted file mode 100644
index 425ec6c511..0000000000
--- a/openwrt/package/kismet/Config.in
+++ /dev/null
@@ -1,66 +0,0 @@
-#menu "kismet............................ An 802.11 layer2 wireless network detector, sniffer, and intrusion detection system"
-
-config BR2_COMPILE_KISMET
- tristate
- default n
- depends BR2_PACKAGE_KISMET_CLIENT || BR2_PACKAGE_KISMET_DRONE || BR2_PACKAGE_KISMET_SERVER
-
-config BR2_PACKAGE_KISMET_CLIENT
- prompt "kismet-client..................... The Kismet client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_KISMET
- select BR2_PACKAGE_LIBNCURSES
- select BR2_PACKAGE_UCLIBCXX
- help
-
- An 802.11 layer2 wireless network detector, sniffer, and intrusion detection system.
-
- http://www.kismetwireless.net/
-
- This package contains the kismet text interface client.
-
- Depends:
- - libncurses
- - libpcap
- - uClibc++
-
-config BR2_PACKAGE_KISMET_DRONE
- prompt "kismet-drone...................... The Kismet drone"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_KISMET
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_UCLIBCXX
- help
-
- An 802.11 layer2 wireless network detector, sniffer, and intrusion detection system.
-
- http://www.kismetwireless.net/
-
- This package contains the kismet remote sniffing.and monitoring drone.
-
- Depends:
- - libpcap
- - uClibc++
-
-config BR2_PACKAGE_KISMET_SERVER
- prompt "kismet-server..................... The Kismet server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_KISMET
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_UCLIBCXX
- help
-
- An 802.11 layer2 wireless network detector, sniffer, and intrusion detection system.
-
- http://www.kismetwireless.net/
-
- This package contains the kismet server.
-
- Depends:
- - libpcap
- - uClibc++
-
-#endmenu
diff --git a/openwrt/package/kismet/Makefile b/openwrt/package/kismet/Makefile
deleted file mode 100644
index 9ac7753e8e..0000000000
--- a/openwrt/package/kismet/Makefile
+++ /dev/null
@@ -1,101 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=kismet
-PKG_VERSION:=2006-04-R1
-PKG_RELEASE:=1
-PKG_MD5SUM:=8ec2de513f2911df1b7edfcba5ad1c26
-
-PKG_SOURCE_URL:=http://www.kismetwireless.net/code
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,KISMET,kismet,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,KISMET_CLIENT,kismet-client,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,KISMET_DRONE,kismet-drone,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,KISMET_SERVER,kismet-server,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti -nostdinc++" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -I$(LINUX_DIR)/include" \
- LDFLAGS="-nodefaultlibs -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-luClibc++ -lc -lm -lgcc" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc/kismet \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-syspcap=yes \
- --disable-setuid \
- --disable-wsp100 \
- --disable-gpsmap \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- LIBS="-luClibc++ -lc -lm -lgcc" \
- all
- touch $@
-
-$(IPKG_KISMET):
- install -d -m0755 $(IDIR_KISMET)/usr/bin/
- install -m0755 $(PKG_BUILD_DIR)/scripts/kismet $(IDIR_KISMET)/usr/bin/kismet
- $(IPKG_BUILD) $(IDIR_KISMET) $(PACKAGE_DIR)
-
-$(IPKG_KISMET_CLIENT):
- install -d -m0755 $(IDIR_KISMET_CLIENT)/etc/kismet/
- install -m0644 ./files/ap_manuf $(IDIR_KISMET_CLIENT)/etc/kismet/
- install -m0644 ./files/client_manuf $(IDIR_KISMET_CLIENT)/etc/kismet/
- install -m0644 ./files/kismet.conf $(IDIR_KISMET_CLIENT)/etc/kismet/
- install -m0644 ./files/kismet_ui.conf $(IDIR_KISMET_CLIENT)/etc/kismet/
- install -d -m0755 $(IDIR_KISMET_CLIENT)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/kismet_client $(IDIR_KISMET_CLIENT)/usr/bin/
- $(RSTRIP) $(IDIR_KISMET_CLIENT)
- $(IPKG_BUILD) $(IDIR_KISMET_CLIENT) $(PACKAGE_DIR)
-
-$(IPKG_KISMET_DRONE):
- install -d -m0755 $(IDIR_KISMET_DRONE)/etc/kismet/
- install -m0644 ./files/kismet_drone.conf $(IDIR_KISMET_DRONE)/etc/kismet/
- install -d -m0755 $(IDIR_KISMET_DRONE)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/kismet_drone $(IDIR_KISMET_DRONE)/usr/bin/
- $(RSTRIP) $(IDIR_KISMET_DRONE)
- $(IPKG_BUILD) $(IDIR_KISMET_DRONE) $(PACKAGE_DIR)
-
-$(IPKG_KISMET_SERVER):
- install -d -m0755 $(IDIR_KISMET_SERVER)/etc/kismet/
- install -m0644 ./files/ap_manuf $(IDIR_KISMET_SERVER)/etc/kismet/
- install -m0644 ./files/client_manuf $(IDIR_KISMET_SERVER)/etc/kismet/
- install -m0644 ./files/kismet.conf $(IDIR_KISMET_SERVER)/etc/kismet/
- mkdir -p $(IDIR_KISMET_SERVER)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/kismet_server $(IDIR_KISMET_SERVER)/usr/bin/
- $(RSTRIP) $(IDIR_KISMET_SERVER)
- $(IPKG_BUILD) $(IDIR_KISMET_SERVER) $(PACKAGE_DIR)
-
-mostlyclean:
-# $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/kismet/files/ap_manuf b/openwrt/package/kismet/files/ap_manuf
deleted file mode 100644
index 7561b6d5bd..0000000000
--- a/openwrt/package/kismet/files/ap_manuf
+++ /dev/null
@@ -1,79 +0,0 @@
-00:01:03:00:00:00/FF:FF:FF:00:00:00 3Com Unknown 0
-00:01:24:00:00:00/FF:FF:FF:00:00:00 SMC Unknown default 6 192.168.2.1
-00:01:24:24:00:00/FF:FF:FF:FF:00:00 SMC SMC7004AWBR default 6 192.168.2.1
-00:02:2D:00:00:00/FF:FF:FF:00:00:00 Lucent Unknown 0
-00:02:6F:00:00:00/FF:FF:FF:00:00:00 Senao Unknown 0
-00:02:A5:00:00:00/FF:FF:FF:00:00:00 Compaq Unknown 0
-00:03:2F:00:00:00/FF:FF:FF:00:00:00 Linksys Unknown 0
-00:04:3A:3A:00:00/FF:FF:FF:FF:00:00 Avaya ad-01444 0
-00:04:5A:0E:00:00/FF:FF:FF:FF:00:00 Linksys WAP11 linksys 6 192.168.1.1
-00:04:5A:5A:00:00/FF:FF:FF:FF:00:00 Linksys BEFW11S4 linksys 6 192.168.1.1
-00:04:5A:2E:00:00/FF:FF:FF:FF:00:00 Linksys BEFW11S4 linksys 6 192.168.1.1
-00:04:5A:00:00:00/FF:FF:FF:00:00:00 Linksys Unknown linksys 6 192.168.1.1
-00:04:75:00:00:00/FF:FF:FF:00:00:00 3Com Unknown 0
-00:04:75:75:00:00/FF:FF:FF:FF:00:00 3Com 3CRWE20096A AP2000 Version 1 3Com 0 169.254.0.1
-00:04:E2:00:00:00/FF:FF:FF:00:00:00 SMC Unknown 0
-00:04:E2:E2:00:00/FF:FF:FF:FF:00:00 SMC 7004AWBR default 6 192.168.2.1
-00:05:5D:00:00:00/FF:FF:FF:00:00:00 D-Link Unknown default 6
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 D-Link DWL-1000AP default 6
-00:06:25:00:00:00/FF:FF:FF:00:00:00 Linksys Unknown linksys 6 192.168.1.1
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys BEFW11S4 v2 linksys 6 192.168.1.1
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WET11 linksys 6 192.168.1.225
-00:07:0E:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:07:50:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:08:21:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:09:43:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:09:5B:00:00:00/FF:FF:FF:00:00:00 Netgear Unknown 0
-00:09:7C:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:09:92:92:00:00/FF:FF:FF:FF:00:00 Sweex LC000010 wireless 11 192.168.0.1
-00:09:E8:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:0A:41:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:0A:8A:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:0A:8A:8A:00:00/FF:FF:FF:FF:00:00 Cisco AIR-AP1200 0
-00:30:65:00:00:00/FF:FF:FF:00:00:00 Apple Unknown 0
-00:30:65:65:00:00/FF:FF:FF:FF:00:00 Apple Snow Base Station 1
-00:30:AB:00:00:00/FF:FF:FF:00:00:00 Netgear Unknown 0
-00:30:AB:AB:00:00/FF:FF:FF:FF:00:00 Netgear MR314NA Wireless 1 192.168.0.1
-00:30:BD:00:00:00/FF:FF:FF:00:00:00 Belkin Unknown 0
-00:30:BD:BD:00:00/FF:FF:FF:FF:00:00 Belkin F5D6230-3 0
-00:40:05:05:00:00/FF:FF:FF:FF:00:00 D-Link DI-614+ default 6 192.168.0.1
-00:40:05:05:00:00/FF:FF:FF:FF:00:00 D-Link DWL-900AP+ default 6 192.168.0.50
-00:40:26:00:00:00/FF:FF:FF:00:00:00 Buffalo Unknown 0
-00:40:26:26:00:00/FF:FF:FF:FF:00:00 Buffalo WLAR-L11G-L 0
-00:40:96:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown tsunami 6
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco AIR-AP342E2R tsunami 6 192.168.1.1
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco AP-350 tsunami 7
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco Aironet 350 tsunami 6
-00:50:08:00:00:00/FF:FF:FF:00:00:00 Compaq Unknown 0
-00:50:8B:8B:00:00/FF:FF:FF:FF:00:00 Compaq WL400 - ETSI region compaq 11
-00:50:DA:00:00:00/FF:FF:FF:00:00:00 3Com Unknown 0
-00:50:DA:DA:00:00/FF:FF:FF:FF:00:00 3Com 3CRWE747A 0
-00:50:F2:F2:00:00/FF:FF:FF:FF:00:00 Microsoft MN-500 MSHOME 6 192.168.0.1
-00:60:01:00:00:00/FF:FF:FF:00:00:00 Lucent Unknown 0
-00:60:1D:00:00:00/FF:FF:FF:00:00:00 Orinoco Unknown 0
-00:60:1D:1D:00:00/FF:FF:FF:FF:00:00 Orinoco RG1000 0
-00:60:6D:00:00:00/FF:FF:FF:00:00:00 Cabletron Unknown 0
-00:60:B3:00:00:00/FF:FF:FF:00:00:00 Proxim Unknown 0
-00:80:37:37:00:00/FF:FF:FF:FF:00:00 Ericsson A11 (AP-4121-105M-ER-EU) 0
-00:80:C6:00:00:00/FF:FF:FF:00:00:00 SOHOware Unknown
-00:80:C6:C6:00:00/FF:FF:FF:FF:00:00 SOHOware NetBlaster II
-00:90:4B:4B:00:00/FF:FF:FF:FF:00:00 Linksys BEFW11S4 linksys 6 192.168.1.1
-00:90:D1:00:00:00/FF:FF:FF:00:00:00 SMC Unknown WLAN 11
-00:90:D1:D1:00:00/FF:FF:FF:FF:00:00 SMC SMC2652W WLAN 11
-00:90:D1:D1:00:00/FF:FF:FF:FF:00:00 SMC SMC2682W BRIDGE 11
-00:A0:04:00:00:00/FF:FF:FF:00:00:00 3Com Unknown
-00:A0:04:04:00:00/FF:FF:FF:FF:00:00 3Com 3CRWE51196
-00:A0:F8:00:00:00/FF:FF:FF:00:00:00 Symbol Unknown
-00:E0:29:00:00:00/FF:FF:FF:00:00:00 OEM Unknown
-08:00:46:00:00:00/FF:FF:FF:00:00:00 Sony Unknown
-00:50:F2:00:00:00/FF:FF:FF:00:00:00 Microsoft Unknown MSHOME 6 192.168.2.1
-00:09:5B:00:00:00/FF:FF:FF:00:00:00 Netgear Unknwon NETGEAR 11 192.168.0.1
-00:30:BD:00:00:00/FF:FF:FF:00:00:00 Belkin Unknown WLAN 11 0.0.0.0
-00:09:5B:00:00:00/FF:FF:FF:00:00:00 Netgear Unknown Wireless 11 192.168.0.2
-00:30:BD:00:00:00/FF:FF:FF:00:00:00 Belkin Unknown belkin54g 11 0.0.0.0
-00:0D:88:00:00:00/FF:FF:FF:00:00:00 D-Link Unknown default 6 192.168.0.1
-00:80:C8:00:00:00/FF:FF:FF:00:00:00 D-Link Unknown default 6 192.168.0.1
-00:40:05:00:00:00/FF:FF:FF:00:00:00 ANI Unknown default 6 192.168.0.1
-00:0C:41:00:00:00/FF:FF:FF:00:00:00 Linksys Unknown linksys 6 192.168.1.1
-00:04:E2:00:00:00/FF:FF:FF:00:00:00 SMC Unknown SMC 6 192.168.2.1
-00:06:25:00:00:00/FF:FF:FF:00:00:00 Linksys Unknown linksys-g 6 192.168.1.1
diff --git a/openwrt/package/kismet/files/client_manuf b/openwrt/package/kismet/files/client_manuf
deleted file mode 100644
index b1c5ef4258..0000000000
--- a/openwrt/package/kismet/files/client_manuf
+++ /dev/null
@@ -1,249 +0,0 @@
-00:00:22:22:00:00/FF:FF:FF:FF:00:00 Lucent Orinoco Silver 0
-00:00:8F:8F:00:00/FF:FF:FF:FF:00:00 BreezeCOM Breezenet Pro SA-PC 0
-00:01:03:00:00:00/FF:FF:FF:00:00:00 3Com Unknown 0
-00:01:03:03:00:00/FF:FF:FF:FF:00:00 3Com 3CRWE62092A
-00:01:03:03:00:00/FF:FF:FF:FF:00:00 3Com 3CRWE777A 0
-00:01:24:00:00:00/FF:FF:FF:00:00:00 SMC Unknown default 6 192.168.2.1
-00:01:F4:F4:00:00/FF:FF:FF:FF:00:00 Entrasys CSIBD-AB-S Roamabout 0
-00:02:2D:00:00:00/FF:FF:FF:00:00:00 Lucent Unknown 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Agere Orinoco Gold
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Agere PC24E-H-FC 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Avaya PC24E-H-ET
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Avaya PC24E-H-FC 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Avaya World Card Silver
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Buffalo WLI-PCM-L11
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Buffalo WLI-PCM-L11
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Buffalo WLI-PCM-L11GP 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Dell TrueMobile 1150
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Dell TrueMobile 1150 Mini-PCI 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Dell Truemobile 1150 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Dell true mobile 1150 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Lucent Orinoco Gold
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Lucent Orinoco Silver
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Lucent Orinoco Silver
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Lucent Orinoco Silver
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Lucent Orinoco Silver
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Lucent PC24E-H-FC 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Lucent PC24E-H-FC 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Lucent PC24E-H-FC 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Lucent WaveLAN Silver 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Lucent WaveLAN Silver (PC24E-H-FC) 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Lucent WaveLAN-Silver
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Lucent WaveLAN/IEEE Version 01.01 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Orinoco MiniPCI Card (embedded in Sony Laptop) 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Orinoco Orinoco Gold wireless 3
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Orinoco Orinoco Gold
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Orinoco Orinoco Mini PCI Card 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Orinoco PC Card T2 Extended ORiNOCO Europe 128RC4 Kit Gold 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Orinoco PC24E-H-ET
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Orinoco PC24E-H-FC 0
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Orinoco Silver
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Orinoco Silver
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Orinoco Silver
-00:02:2D:2D:00:00/FF:FF:FF:FF:00:00 Orinoco Silver
-00:02:6F:00:00:00/FF:FF:FF:00:00:00 Senao Unknown 0
-00:02:6F:6F:00:00/FF:FF:FF:FF:00:00 Senao SL-2011 CD
-00:02:6F:6F:00:00/FF:FF:FF:FF:00:00 Senao SL-2011CD 0
-00:02:6F:6F:00:00/FF:FF:FF:FF:00:00 Senao SL-2011CD
-00:02:6F:6F:00:00/FF:FF:FF:FF:00:00 Senao SL-2511CD PLUS EXT2(F200) 0
-00:02:A5:00:00:00/FF:FF:FF:00:00:00 Compaq Unknown 0
-00:02:A5:A5:00:00/FF:FF:FF:FF:00:00 Compaq WL110
-00:02:A5:A5:00:00/FF:FF:FF:FF:00:00 Compaq WL110 REV.0A 0
-00:02:B3:B3:00:00/FF:FF:FF:FF:00:00 Intel WPC-2011BWW 0
-00:03:2F:00:00:00/FF:FF:FF:00:00:00 Linksys Unknown 0
-00:03:2F:2F:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 0
-00:03:2F:2F:00:00/FF:FF:FF:FF:00:00 Linksys WPC11
-00:03:2F:2F:00:00/FF:FF:FF:FF:00:00 Repotec GL241101
-00:04:5A:00:00:00/FF:FF:FF:00:00:00 Linksys Unknown 0
-00:04:5A:00:00:00/FF:FF:FF:00:00:00 Linksys Unknown Linksys 6 192.168.1.1
-00:04:5A:00:00:00/FF:FF:FF:00:00:00 Linksys Unknown linksys 6 192.168.1.1
-00:04:5A:5A:00:00/FF:FF:FF:FF:00:00 Linksys BEFW11S4 linksys 0
-00:04:5A:5A:00:00/FF:FF:FF:FF:00:00 Linksys WPC11
-00:04:5A:5A:00:00/FF:FF:FF:FF:00:00 Linksys WPC11
-00:04:5A:5A:00:00/FF:FF:FF:FF:00:00 Linksys WPC11
-00:04:5A:5A:00:00/FF:FF:FF:FF:00:00 Linksys WUSB11
-00:04:75:00:00:00/FF:FF:FF:00:00:00 3Com Unknown 0
-00:04:75:75:00:00/FF:FF:FF:FF:00:00 3Com 3CRSHPW696 0
-00:04:75:75:00:00/FF:FF:FF:FF:00:00 3Com 3CRWE62092B 0
-00:04:75:75:00:00/FF:FF:FF:FF:00:00 3Com 3CRWE62092B
-00:04:DB:DB:00:00/FF:FF:FF:FF:00:00 Tellus TWL-C11 0
-00:04:E2:00:00:00/FF:FF:FF:00:00:00 SMC Unknown 0
-00:04:E2:E2:00:00/FF:FF:FF:FF:00:00 SMC SMC2632W 0
-00:04:E2:E2:00:00/FF:FF:FF:FF:00:00 SMC SMC2632W
-00:04:E2:E2:00:00/FF:FF:FF:FF:00:00 SMC SMC2632W
-00:04:E2:E2:00:00/FF:FF:FF:FF:00:00 SMC SMC2632W
-00:04:E2:E2:00:00/FF:FF:FF:FF:00:00 SMC SMC2632W
-00:05:3C:3C:00:00/FF:FF:FF:FF:00:00 Intel Intel MiniPCI High Rate Wireless (ISL3874A) 0
-00:05:5D:00:00:00/FF:FF:FF:00:00:00 D-Link Unknown 0
-00:05:5D:00:00:00/FF:FF:FF:00:00:00 D-Link Unknown default 6
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 Compaq HNW-100 0
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 D-Link DCF-650W
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 D-Link DWL-650 0
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 D-Link DWL-650 0
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 D-Link DWL-650 0
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 D-Link DWL-650
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 D-Link DWL-650
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 D-Link DWL-650
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 D-Link DWL-650
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 D-Link DWL-650
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 D-Link DWL-650H
-00:05:5D:5D:00:00/FF:FF:FF:FF:00:00 D-Link DWL-660 H/W:A1 F/W:4.04 0
-00:06:25:00:00:00/FF:FF:FF:00:00:00 Linksys Unknown 0
-00:06:25:00:00:00/FF:FF:FF:00:00:00 Linksys Unknown linksys 6 192.168.1.1
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM340 0
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 D-Link DCF-650W
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Dell True Mobile 1150 6
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys BEFW11S4 v2 linksys 6 192.168.1.1
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WCF11 0
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WCF11
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WCF12 0
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WCF12
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WCF12
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WMP11 0
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WMP11 v2.5 0
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 V.3 0
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 v2.5
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 v2.5
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 v3 0
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 v3 0
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 v3
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 v3
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 v3
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 v3
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 v3
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 v3
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 v3.0 0
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WPC11 ver.3 (FCC-ID: PKW-WPC11-V31[suggests V3.1]) 0
-00:06:25:25:00:00/FF:FF:FF:FF:00:00 Linksys WUSB11 v2.6 0
-00:07:0E:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:07:0E:0E:00:00/FF:FF:FF:FF:00:00 Cisco AIR-LMC352
-00:07:0E:0E:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM352
-00:07:50:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:07:50:50:00:00/FF:FF:FF:FF:00:00 Cisco AIR-LMC352
-00:07:50:50:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM350 0
-00:08:21:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:08:21:21:00:00/FF:FF:FF:FF:00:00 Cisco AIR-LMC352
-00:08:21:21:00:00/FF:FF:FF:FF:00:00 Cisco AIR-LMC352
-00:08:21:21:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM352
-00:08:21:21:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM352
-00:09:43:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:09:43:43:00:00/FF:FF:FF:FF:00:00 Cisco AIR-LMC352
-00:09:5B:00:00:00/FF:FF:FF:00:00:00 Netgear Unknown 0
-00:09:5B:5B:00:00/FF:FF:FF:FF:00:00 Netgear MA401 0
-00:09:5B:5B:00:00/FF:FF:FF:FF:00:00 Netgear MA401RA 0
-00:09:5B:5B:00:00/FF:FF:FF:FF:00:00 Netgear MA401RA
-00:09:5B:5B:00:00/FF:FF:FF:FF:00:00 Netgear MA701 0
-00:09:5B:5B:00:00/FF:FF:FF:FF:00:00 Netgear MA701
-00:09:5B:5B:00:00/FF:FF:FF:FF:00:00 Netgear ma101 0
-00:09:5B:5B:00:00/FF:FF:FF:FF:00:00 Netgear wab501 0
-00:09:7C:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:09:7C:7C:00:00/FF:FF:FF:FF:00:00 Cisco AIR-LMC352
-00:09:7C:7C:00:00/FF:FF:FF:FF:00:00 Cisco Cisco Aironet 352 802.11b pcmcia card 0
-00:09:92:92:00:00/FF:FF:FF:FF:00:00 Sweex LC500010 ATMEL PCMCIA FastVNET (502A-D) 0
-00:09:B7:B7:00:00/FF:FF:FF:FF:00:00 Cisco AIR-LMC352 0
-00:09:B7:B7:00:00/FF:FF:FF:FF:00:00 Cisco AIR-LMC352 0
-00:09:E8:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:09:E8:E8:00:00/FF:FF:FF:FF:00:00 Cisco AIR-LMC352
-00:0A:41:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:0A:41:41:00:00/FF:FF:FF:FF:00:00 Cisco AIR-LMC352 0
-00:0A:41:41:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM352 0
-00:0A:41:41:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM352 0
-00:0A:41:41:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM352
-00:0A:41:41:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM352
-00:0A:8A:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:0A:8A:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:0A:8A:8A:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM352
-00:0B:5F:5F:00:00/FF:FF:FF:FF:00:00 Cisco AIR-CB20A-A-K9 0
-00:20:A6:A6:00:00/FF:FF:FF:FF:00:00 Proxim Symphony (PC Card 4430) 0
-00:20:D6:D6:00:00/FF:FF:FF:FF:00:00 BreezeCOM Breezenet Pro.11 SA-PCR 0
-00:30:65:00:00:00/FF:FF:FF:00:00:00 Apple Unknown 0
-00:30:65:00:00:00/FF:FF:FF:00:00:00 Apple Unknown 0
-00:30:65:65:00:00/FF:FF:FF:FF:00:00 Apple Airport Card 2002
-00:30:AB:00:00:00/FF:FF:FF:00:00:00 Netgear Unknown 0
-00:30:AB:AB:00:00/FF:FF:FF:FF:00:00 Netgear MA401 0
-00:30:AB:AB:00:00/FF:FF:FF:FF:00:00 Netgear MA401
-00:30:AB:AB:00:00/FF:FF:FF:FF:00:00 Netgear MA401
-00:30:AB:AB:00:00/FF:FF:FF:FF:00:00 Netgear MA401
-00:30:AB:AB:00:00/FF:FF:FF:FF:00:00 Netgear MA401
-00:30:AB:AB:00:00/FF:FF:FF:FF:00:00 Netgear MR314 Wireless 1 192.168.0.1
-00:30:AB:AB:00:00/FF:FF:FF:FF:00:00 Netgear Netgear ma401 0
-00:30:BD:00:00:00/FF:FF:FF:00:00:00 Belkin Unknown 0
-00:30:BD:00:00:00/FF:FF:FF:00:00:00 Belkin Unknown 0
-00:30:BD:BD:00:00/FF:FF:FF:FF:00:00 Belkin F5D6020 0
-00:30:BD:BD:00:00/FF:FF:FF:FF:00:00 Belkin F5D6020 0
-00:30:BD:BD:00:00/FF:FF:FF:FF:00:00 Belkin F5D6020
-00:30:BD:BD:00:00/FF:FF:FF:FF:00:00 Belkin F5D6020
-00:30:BD:BD:00:00/FF:FF:FF:FF:00:00 Belkin F5D6020 (Version 01.02) 0
-00:30:BD:BD:00:00/FF:FF:FF:FF:00:00 Belkin F5D6020u 0
-00:40:05:05:00:00/FF:FF:FF:FF:00:00 D-Link DI-614+ default 6 192.168.0.1
-00:40:05:05:00:00/FF:FF:FF:FF:00:00 D-Link DI-614+ 22Mbps router/AP/switch default 6 192.168.0.1
-00:40:05:05:00:00/FF:FF:FF:FF:00:00 D-Link DWL-520+ 0
-00:40:05:05:00:00/FF:FF:FF:FF:00:00 D-Link DWL-650 0
-00:40:05:05:00:00/FF:FF:FF:FF:00:00 D-Link DWL-650 internet 8
-00:40:05:05:00:00/FF:FF:FF:FF:00:00 D-Link DWL-650+ wireless 6 192.168.0.1
-00:40:26:00:00:00/FF:FF:FF:00:00:00 Buffalo Unknown 0
-00:40:96:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown 0
-00:40:96:00:00:00/FF:FF:FF:00:00:00 Cisco Unknown tsunami 6
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco 350
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PC4800
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM340 0
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM340 0
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM340
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM340
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM340
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM340 (Dell Rebrand) 0
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM352
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco AIR-PCM352
-00:40:96:96:00:00/FF:FF:FF:FF:00:00 Cisco PC 4800 DS PCI Adapter 0
-00:50:08:00:00:00/FF:FF:FF:00:00:00 Compaq Unknown 0
-00:50:08:08:00:00/FF:FF:FF:FF:00:00 Compaq WL100 0
-00:50:08:08:00:00/FF:FF:FF:FF:00:00 Compaq WL100
-00:50:8B:8B:00:00/FF:FF:FF:FF:00:00 Compaq Compaq WL100 compaq 0
-00:50:8B:8B:00:00/FF:FF:FF:FF:00:00 Compaq WL200 - ETSI region 0
-00:50:DA:00:00:00/FF:FF:FF:00:00:00 3Com Unknown 0
-00:50:DA:00:00:00/FF:FF:FF:00:00:00 3Com Unknown 0
-00:50:DA:DA:00:00/FF:FF:FF:FF:00:00 3Com 3CRWE73796B
-00:50:F2:F2:00:00/FF:FF:FF:FF:00:00 Microsoft MN-510 0
-00:50:F2:F2:00:00/FF:FF:FF:FF:00:00 Microsoft Wireless Notebook Adapter MN-520 0
-00:60:01:00:00:00/FF:FF:FF:00:00:00 Lucent Unknown 0
-00:60:01:01:00:00/FF:FF:FF:FF:00:00 Lucent WaveLAN Silver
-00:60:1D:00:00:00/FF:FF:FF:00:00:00 Lucent Unknown 0
-00:60:1D:00:00:00/FF:FF:FF:00:00:00 Orinoco Unknown 0
-00:60:1D:1D:00:00/FF:FF:FF:FF:00:00 Lucent Lucent WaveLAN Turbo - Bronze, P/N: 011498/A 0
-00:60:1D:1D:00:00/FF:FF:FF:FF:00:00 Lucent Orinoco Gold
-00:60:1D:1D:00:00/FF:FF:FF:FF:00:00 Lucent PC24E-00-FC 0
-00:60:1D:1D:00:00/FF:FF:FF:FF:00:00 Lucent Silver
-00:60:1D:1D:00:00/FF:FF:FF:FF:00:00 Lucent WaveLAN Bronze
-00:60:1D:1D:00:00/FF:FF:FF:FF:00:00 Lucent WaveLAN Gold
-00:60:1D:1D:00:00/FF:FF:FF:FF:00:00 Lucent Wavelan Turbo Bronze 0
-00:60:6D:00:00:00/FF:FF:FF:00:00:00 Cabletron Unknown 0
-00:60:6D:6D:00:00/FF:FF:FF:FF:00:00 Cabletron CSIBB-AA
-00:60:6D:6D:00:00/FF:FF:FF:FF:00:00 Cabletron CSIBB-AA
-00:60:6D:6D:00:00/FF:FF:FF:FF:00:00 Cabletron RoamAbout 802.11DS 0
-00:60:B3:00:00:00/FF:FF:FF:00:00:00 Proxim Unknown 0
-00:60:B3:B3:00:00/FF:FF:FF:FF:00:00 3Com XI-815 0
-00:60:B3:B3:00:00/FF:FF:FF:FF:00:00 3Com Zcom WL2000D 0
-00:60:B3:B3:00:00/FF:FF:FF:FF:00:00 Proxim RangeLAN DS 0
-00:60:B3:B3:00:00/FF:FF:FF:FF:00:00 Proxim RangeLan DS 8430
-00:60:B3:B3:00:00/FF:FF:FF:FF:00:00 SMC SMC2642W
-00:80:37:37:00:00/FF:FF:FF:FF:00:00 Ericsson C11 (LA-4121-102M-ER-EU) 0
-00:80:C6:00:00:00/FF:FF:FF:00:00:00 SOHOware Unknown 0
-00:90:4B:4B:00:00/FF:FF:FF:FF:00:00 Dell 1180 True Mobile PCI 0
-00:90:96:96:00:00/FF:FF:FF:FF:00:00 Yakumo WLAN PCMCIA Card 11 Mbps 0
-00:90:D1:00:00:00/FF:FF:FF:00:00:00 LeArtery Unknown 0
-00:90:D1:00:00:00/FF:FF:FF:00:00:00 SMC Unknown WLAN 11
-00:90:D1:D1:00:00/FF:FF:FF:FF:00:00 LeArtery SyncByAir LN101
-00:90:D1:D1:00:00/FF:FF:FF:FF:00:00 SMC 2662W 0
-00:90:D1:D1:00:00/FF:FF:FF:FF:00:00 SMC SMC2632W 0
-00:A0:04:00:00:00/FF:FF:FF:00:00:00 3Com Unknown 0
-00:A0:65:65:00:00/FF:FF:FF:FF:00:00 Nexland Zcom XI-300 0
-00:A0:F8:00:00:00/FF:FF:FF:00:00:00 Symbol Unknown 0
-00:A0:F8:F8:00:00/FF:FF:FF:FF:00:00 Symbol Spectrum 24 High Rate 11MBps wireless LAN adapter 0
-00:A0:F8:F8:00:00/FF:FF:FF:FF:00:00 Symbol Spectrum24
-00:C0:49:49:00:00/FF:FF:FF:FF:00:00 US Robotics USR1120 0
-00:E0:29:00:00:00/FF:FF:FF:00:00:00 OEM Unknown 0
-00:E0:29:29:00:00/FF:FF:FF:FF:00:00 OEM OEM
-00:E0:29:29:00:00/FF:FF:FF:FF:00:00 SMC 2632W 0
-00:E0:29:29:00:00/FF:FF:FF:FF:00:00 SMC EZ-Connect Wireless 0
-08:00:46:00:00:00/FF:FF:FF:00:00:00 Sony Unknown 0
-08:00:46:46:00:00/FF:FF:FF:FF:00:00 Sony PCWA-C100
diff --git a/openwrt/package/kismet/files/kismet.conf b/openwrt/package/kismet/files/kismet.conf
deleted file mode 100644
index a417d2885b..0000000000
--- a/openwrt/package/kismet/files/kismet.conf
+++ /dev/null
@@ -1,281 +0,0 @@
-# Kismet config file
-# Most of the "static" configs have been moved to here -- the command line
-# config was getting way too crowded and cryptic. We want functionality,
-# not continually reading --help!
-
-# Version of Kismet config
-version=2005.01.R1
-
-# Name of server (Purely for organiational purposes)
-servername=Kismet
-
-# User to setid to (should be your normal user)
-suiduser=nobody
-
-# Sources are defined as:
-# source=cardtype,interface,name[,initialchannel]
-# Card types and required drivers are listed in the README.
-# The initial channel is optional, if hopping is not enabled it can be used
-# to set the channel the interface listens on.
-# YOU MUST CHANGE THIS TO BE THE SOURCE YOU WANT TO USE
-source=wrt54g,eth1,wireless
-# For v1 hardware uncomment this:
-# source=wrt54g,eth2,wireless
-
-# Comma-separated list of sources to enable. This is only needed if you defined
-# multiple sources and only want to enable some of them. By default, all defined
-# sources are enabled.
-# For example:
-# enablesources=prismsource,ciscosource
-
-# Do we channelhop?
-channelhop=true
-
-# How many channels per second do we hop? (1-10)
-channelvelocity=5
-
-# By setting the dwell time for channel hopping we override the channelvelocity
-# setting above and dwell on each channel for the given number of seconds.
-#channeldwell=10
-
-# Do we split channels between cards on the same spectrum? This means if
-# multiple 802.11b capture sources are defined, they will be offset to cover
-# the most possible spectrum at a given time. This also controls splitting
-# fine-tuned sourcechannels lines which cover multiple interfaces (see below)
-channelsplit=true
-
-# Basic channel hopping control:
-# These define the channels the cards hop through for various frequency ranges
-# supported by Kismet. More finegrain control is available via the
-# "sourcechannels" configuration option.
-#
-# Don't change the IEEE80211<x> identifiers or channel hopping won't work.
-
-# Users outside the US might want to use this list:
-# defaultchannels=IEEE80211b:1,7,13,2,8,3,14,9,4,10,5,11,6,12
-defaultchannels=IEEE80211b:1,6,11,2,7,3,8,4,9,5,10
-
-# 802.11g uses the same channels as 802.11b...
-defaultchannels=IEEE80211g:1,6,11,2,7,3,8,4,9,5,10
-
-# 802.11a channels are non-overlapping so sequential is fine. You may want to
-# adjust the list depending on the channels your card actually supports.
-# defaultchannels=IEEE80211a:36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,149,153,157,161,184,188,192,196,200,204,208,212,216
-defaultchannels=IEEE80211a:36,40,44,48,52,56,60,64
-
-# Combo cards like Atheros use both 'a' and 'b/g' channels. Of course, you
-# can also explicitly override a given source. You can use the script
-# extras/listchan.pl to extract all the channels your card supports.
-defaultchannels=IEEE80211ab:1,6,11,2,7,3,8,4,9,5,10,36,40,44,48,52,56,60,64
-
-# Fine-tuning channel hopping control:
-# The sourcechannels option can be used to set the channel hopping for
-# specific interfaces, and to control what interfaces share a list of
-# channels for split hopping. This can also be used to easily lock
-# one card on a single channel while hopping with other cards.
-# Any card without a sourcechannel definition will use the standard hopping
-# list.
-# sourcechannels=sourcename[,sourcename]:ch1,ch2,ch3,...chN
-
-# ie, for us channels on the source 'prism2source' (same as normal channel
-# hopping behavior):
-# sourcechannels=prism2source:1,6,11,2,7,3,8,4,9,5,10
-
-# Given two capture sources, "prism2a" and "prism2b", we want prism2a to stay
-# on channel 6 and prism2b to hop normally. By not setting a sourcechannels
-# line for prism2b, it will use the standard hopping.
-# sourcechannels=prism2a:6
-
-# To assign the same custom hop channel to multiple sources, or to split the
-# same custom hop channel over two sources (if splitchannels is true), list
-# them all on the same sourcechannels line:
-# sourcechannels=prism2a,prism2b,prism2c:1,6,11
-
-# Port to serve GUI data
-tcpport=2501
-# People allowed to connect, comma seperated IP addresses or network/mask
-# blocks. Netmasks can be expressed as dotted quad (/255.255.255.0) or as
-# numbers (/24)
-allowedhosts=127.0.0.1
-# Maximum number of concurrent GUI's
-maxclients=5
-
-# Do we have a GPS?
-gps=false
-# Host:port that GPSD is running on. This can be localhost OR remote!
-gpshost=localhost:2947
-# Do we lock the mode? This overrides coordinates of lock "0", which will
-# generate some bad information until you get a GPS lock, but it will
-# fix problems with GPS units with broken NMEA that report lock 0
-gpsmodelock=false
-
-# Packet filtering options:
-# filter_tracker - Packets filtered from the tracker are not processed or
-# recorded in any way.
-# filter_dump - Packets filtered at the dump level are tracked, displayed,
-# and written to the csv/xml/network/etc files, but not
-# recorded in the packet dump
-# filter_export - Controls what packets influence the exported CSV, network,
-# xml, gps, etc files.
-# All filtering options take arguments containing the type of address and
-# addresses to be filtered. Valid address types are 'ANY', 'BSSID',
-# 'SOURCE', and 'DEST'. Filtering can be inverted by the use of '!' before
-# the address. For example,
-# filter_tracker=ANY(!00:00:DE:AD:BE:EF)
-# has the same effect as the previous mac_filter config file option.
-# filter_tracker=...
-# filter_dump=...
-# filter_export=...
-
-# Alerts to be reported and the throttling rates.
-# alert=name,throttle/unit,burst
-# The throttle/unit describes the number of alerts of this type that are
-# sent per time unit. Valid time units are second, minute, hour, and day.
-# Burst describes the number of alerts sent before throttling takes place.
-# For example:
-# alert=FOO,10/min,5
-# Would allow 5 alerts through before throttling is enabled, and will then
-# limit the number of alerts to 10 per minute.
-# A throttle rate of 0 disables throttling of the alert.
-# See the README for a list of alert types.
-alert=NETSTUMBLER,5/min,2
-alert=WELLENREITER,5/min,2
-alert=LUCENTTEST,5/min,2
-alert=DEAUTHFLOOD,5/min,4
-alert=BCASTDISCON,5/min,4
-alert=CHANCHANGE,5/min,4
-alert=AIRJACKSSID,5/min,2
-alert=PROBENOJOIN,5/min,2
-alert=DISASSOCTRAFFIC,5/min,2
-alert=NULLPROBERESP,5/min,5
-alert=BSSTIMESTAMP,5/min,5
-
-# Known WEP keys to decrypt, bssid,hexkey. This is only for networks where
-# the keys are already known, and it may impact throughput on slower hardware.
-# Multiple wepkey lines may be used for multiple BSSIDs.
-# wepkey=00:DE:AD:C0:DE:00,FEEDFACEDEADBEEF01020304050607080900
-
-# Is transmission of the keys to the client allowed? This may be a security
-# risk for some. If you disable this, you will not be able to query keys from
-# a client.
-allowkeytransmit=true
-
-# How often (in seconds) do we write all our data files (0 to disable)
-writeinterval=300
-
-# Where do we get our manufacturer fingerprints from? Assumed to be in the
-# default config directory if an absolute path is not given.
-ap_manuf=ap_manuf
-client_manuf=client_manuf
-
-# Use metric measurements in the output?
-metric=false
-
-# Do we write waypoints for gpsdrive to load? Note: This is NOT related to
-# recent versions of GPSDrive's native support of Kismet.
-waypoints=false
-# GPSMap waypoint file. This WILL be truncated.
-waypointdata=%h/.gpsdrive/way_kismet.txt
-
-# How many alerts do we backlog for new clients? Only change this if you have
-# a -very- low memory system and need those extra bytes, or if you have a high
-# memory system and a huge number of alert conditions.
-alertbacklog=50
-
-# File types to log, comma seperated
-# dump - raw packet dump
-# network - plaintext detected networks
-# csv - plaintext detected networks in CSV format
-# xml - XML formatted network and cisco log
-# weak - weak packets (in airsnort format)
-# cisco - cisco equipment CDP broadcasts
-# gps - gps coordinates
-logtypes=dump,network,csv,xml,weak,cisco,gps
-
-# Do we track probe responses and merge probe networks into their owners?
-# This isn't always desireable, depending on the type of monitoring you're
-# trying to do.
-trackprobenets=true
-
-# Do we log "noise" packets that we can't decipher? I tend to not, since
-# they don't have anything interesting at all in them.
-noiselog=false
-
-# Do we log corrupt packets? Corrupt packets have enough header information
-# to see what they are, but someting is wrong with them that prevents us from
-# completely dissecting them. Logging these is usually not a bad idea.
-corruptlog=true
-
-# Do we log beacon packets or do we filter them out of the dumpfile
-beaconlog=true
-
-# Do we log PHY layer packets or do we filter them out of the dumpfile
-phylog=true
-
-# Do we mangle packets if we can decrypt them or if they're fuzzy-detected
-mangledatalog=true
-
-# Do we do "fuzzy" crypt detection? (byte-based detection instead of 802.11
-# frame headers)
-# valid option: Comma seperated list of card types to perform fuzzy detection
-# on, or 'all'
-fuzzycrypt=wtapfile,wlanng,wlanng_legacy,wlanng_avs,hostap,wlanng_wext
-
-# What type of dump do we generate?
-# valid option: "wiretap"
-dumptype=wiretap
-# Do we limit the size of dump logs? Sometimes ethereal can't handle big ones.
-# 0 = No limit
-# Anything else = Max number of packets to log to a single file before closing
-# and opening a new one.
-dumplimit=0
-
-# Do we write data packets to a FIFO for an external data-IDS (such as Snort)?
-# See the docs before enabling this.
-#fifo=/tmp/kismet_dump
-
-# Default log title
-logdefault=Kismet
-
-# logtemplate - Filename logging template.
-# This is, at first glance, really nasty and ugly, but you'll hardly ever
-# have to touch it so don't complain too much.
-#
-# %n is replaced by the logging instance name
-# %d is replaced by the current date as Mon-DD-YYYY
-# %D is replaced by the current date as YYYYMMDD
-# %t is replaced by the starting log time
-# %i is replaced by the increment log in the case of multiple logs
-# %l is replaced by the log type (dump, status, crypt, etc)
-# %h is replaced by the home directory
-# ie, "netlogs/%n-%d-%i.dump" called with a logging name of "Pok" could expand
-# to something like "netlogs/Pok-Dec-20-01-1.dump" for the first instance and
-# "netlogs/Pok-Dec-20-01-2.%l" for the second logfile generated.
-# %h/netlots/%n-%d-%i.dump could expand to
-# /home/foo/netlogs/Pok-Dec-20-01-2.dump
-#
-# Other possibilities: Sorting by directory
-# logtemplate=%l/%n-%d-%i
-# Would expand to, for example,
-# dump/Pok-Dec-20-01-1
-# crypt/Pok-Dec-20-01-1
-# and so on. The "dump", "crypt", etc, dirs must exist before kismet is run
-# in this case.
-logtemplate=%n-%d-%i.%l
-
-# Where do we store the pid file of the server?
-piddir=/var/run/
-
-# Where state info, etc, is stored. You shouldnt ever need to change this.
-# This is a directory.
-configdir=%h/.kismet/
-
-# cloaked SSID file. You shouldn't ever need to change this.
-ssidmap=ssid_map
-
-# Group map file. You shouldn't ever need to change this.
-groupmap=group_map
-
-# IP range map file. You shouldn't ever need to change this.
-ipmap=ip_map
-
diff --git a/openwrt/package/kismet/files/kismet_drone.conf b/openwrt/package/kismet/files/kismet_drone.conf
deleted file mode 100644
index 901b5b83e1..0000000000
--- a/openwrt/package/kismet/files/kismet_drone.conf
+++ /dev/null
@@ -1,121 +0,0 @@
-# Kismet drone config file
-
-version=2005.04.R1
-
-# Name of server (Purely for organiational purposes)
-servername=Kismet
-
-# User to setid to (should be your normal user)
-suiduser=nobody
-
-# Port to serve packet data... This probably shouldn't be the same as the port
-# you configured kismet_server for, or else you'll have problems running them
-# on the same system.
-tcpport=3501
-# People allowed to connect, comma seperated IP addresses or network/mask
-# blocks. Netmasks can be expressed as dotted quad (/255.255.255.0) or as
-# numbers (/24)
-allowedhosts=127.0.0.1
-# Maximum number of concurrent stream attachments
-maxclients=5
-
-# Packet sources:
-# source=capture_cardtype,capture_interface,capture_name
-# Card type - Specifies the type of device. It can be one of:
-# cisco - Cisco card with Linux Kernel drivers
-# cisco_cvs - Cisco card with CVS Linux drivers
-# cisco_bsd - Cisco on *BSD
-# prism2 - Prism2 using wlan-ng drivers with pcap support (all
-# current versions support pcap)
-# prism2_hostap - Prism2 using hostap drivers
-# prism2_legacy - Prism2 using wlan-ng drivers without pcap support (0.1.9)
-# prism2_bsd - Prism2 on *BSD
-# orinoco - Orinoco cards using Snax's patched driers
-# generic - Generic card with no specific support. You will have
-# to put this into monitor mode yourself!
-# wsp100 - WSP100 embedded remote sensor.
-# wtapfile - Saved file of packets readable by libwiretap
-# ar5k - ar5k 802.11a using the vt_ar5k drivers
-# Capture interface - Specifies the network interface Kismet will watch for
-# packets to come in on. Typically "ethX" or "wlanX". For the WSP100 capture
-# engine, the WSP100 device sends packets via a UDP stream, so the capture
-# interface should be in the form of host:port where 'host' is the WSP100 and
-# 'port' is the local UDP port that it will send data to.
-# Capture Name - The name Kismet uses for this capture source. This is the
-# name used to specify what sources to enable.
-#
-# To enable multiple sources, specify a source line for each and then use the
-# enablesources line to enable them. For example:
-# source=prism2,wlan0,prism
-# source=cisco,eth0,cisco
-source=wrt54g,eth1,wireless
-# For v1 hardware uncomment this:
-# source=wrt54g,eth2,wireless
-
-# Comma-separated list of sources to enable. This is only needed if you wish
-# to selectively enable multiple sources.
-# enablesources=prism,cisco
-
-# Do we channelhop?
-channelhop=true
-
-# How many channels per second do we hop? (1-10)
-channelvelocity=5
-
-# By setting the dwell time for channel hopping we override the channelvelocity
-# setting above and dwell on each channel for the given number of seconds.
-#channeldwell=10
-
-# Do we split channels between cards on the same spectrum? This means if
-# multiple 802.11b capture sources are defined, they will be offset to cover
-# the most possible spectrum at a given time. This also controls splitting
-# fine-tuned sourcechannels lines which cover multiple interfaces (see below)
-splitchannels=true
-
-# Basic channel hopping control:
-# These define the channels the cards hop through for various frequency ranges
-# supported by Kismet. More finegrain control is available via the
-# "sourcechannels" configuration option.
-#
-# Don't change the IEEE80211<x> identifiers or channel hopping won't work.
-
-# Users outside the US might want to use this list:
-# defaultchannels=IEEE80211b:1,7,13,2,8,3,14,9,4,10,5,11,6,12
-defaultchannels=IEEE80211b:1,6,11,2,7,3,8,4,9,5,10
-
-# 802.11g uses the same channels as 802.11b...
-defaultchannels=IEEE80211g:1,6,11,2,7,3,8,4,9,5,10
-
-# 802.11a channels are non-overlapping so sequential is fine. You may want to
-# adjust the list depending on the channels your card actually supports.
-# defaultchannels=IEEE80211a:36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,149,153,157,161,184,188,192,196,200,204,208,212,216
-defaultchannels=IEEE80211a:36,40,44,48,52,56,60,64
-
-# Combo cards like Atheros use both 'a' and 'b/g' channels. Of course, you
-# can also explicitly override a given source. You can use the script
-# extras/listchan.pl to extract all the channels your card supports.
-defaultchannels=IEEE80211ab:1,6,11,2,7,3,8,4,9,5,10,36,40,44,48,52,56,60,64
-
-# Fine-tuning channel hopping control:
-# The sourcechannels option can be used to set the channel hopping for
-# specific interfaces, and to control what interfaces share a list of
-# channels for split hopping. This can also be used to easily lock
-# one card on a single channel while hopping with other cards.
-# Any card without a sourcechannel definition will use the standard hopping
-# list.
-# sourcechannels=sourcename[,sourcename]:ch1,ch2,ch3,...chN
-
-# ie, for us channels on the source 'prism2source' (same as normal channel
-# hopping behavior):
-# sourcechannels=prism2source:1,6,11,2,7,3,8,4,9,5,10
-
-# Given two capture sources, "prism2a" and "prism2b", we want prism2a to stay
-# on channel 6 and prism2b to hop normally. By not setting a sourcechannels
-# line for prism2b, it will use the standard hopping.
-# sourcechannels=prism2a:6
-
-# To assign the same custom hop channel to multiple sources, or to split the
-# same custom hop channel over two sources (if splitchannels is true), list
-# them all on the same sourcechannels line:
-# sourcechannels=prism2a,prism2b,prism2c:1,6,11
-
diff --git a/openwrt/package/kismet/files/kismet_ui.conf b/openwrt/package/kismet/files/kismet_ui.conf
deleted file mode 100644
index e704b37e51..0000000000
--- a/openwrt/package/kismet/files/kismet_ui.conf
+++ /dev/null
@@ -1,61 +0,0 @@
-# Kismet GUI config file
-
-# Version of Kismet config
-version=2005.04.R1
-
-# Do we show the intro window?
-showintro=false
-
-# Gui type to use
-# Valid types: curses, panel
-gui=panel
-# Server to connect to (host:port)
-host=localhost:2501
-# Network traffic decay (active/recent/inactive) and packet click rate - increase
-# this if you are doing prism2 channel hopping.
-decay=3
-# What columns do we display? Comma seperated. Read the documentation for what
-# columns are valid.
-columns=decay,name,type,wep,channel,packets,flags,ip,size
-# What columns do we display for clients? Comma seperated.
-clientcolumns=decay,type,mac,manuf,data,crypt,size,ip,signal,quality,noise
-
-# Do we auotmatically make a group for probed networks or do we show them
-# amidst other networks?
-autogroup_probe=true
-# Do we autogroup data-only networks?
-autogroup_data=true
-
-# Display battery status?
-apm=false
-
-# Simple borders (use - and | instead of smooth vertical and horizontal
-# lines. This is required on Zaurus, and might be needed elsewhere if your
-# terminal doesn't display the border characters correctly.
-simpleborders=false
-
-# Colors (front, back) of text in the panel front. Valid colors are:
-# black, red, yellow, green, blue, magenta, cyan, white
-# optionally prefixed with "hi-" for bold/bright colors, ie
-# hi-red, hi-yellow, hi-green, etc.
-
-# Enable colors?
-color=true
-# Background
-backgroundcolor=black
-# Default text
-textcolor=white
-# Window borders
-bordercolor=green
-# Titles
-titlecolor=hi-white
-# GPS and APM info
-monitorcolor=hi-white
-# WEP network color
-wepcolor=hi-green
-# Factory network color
-factorycolor=hi-red
-# Open color
-opencolor=hi-yellow
-# Decloaked network color
-cloakcolor=hi-blue
diff --git a/openwrt/package/kismet/ipkg/kismet-client.conffiles b/openwrt/package/kismet/ipkg/kismet-client.conffiles
deleted file mode 100644
index b849ce1ce3..0000000000
--- a/openwrt/package/kismet/ipkg/kismet-client.conffiles
+++ /dev/null
@@ -1,4 +0,0 @@
-/etc/kismet/ap_manuf
-/etc/kismet/client_manuf
-/etc/kismet/kismet.conf
-/etc/kismet/kismet_ui.conf \ No newline at end of file
diff --git a/openwrt/package/kismet/ipkg/kismet-client.control b/openwrt/package/kismet/ipkg/kismet-client.control
deleted file mode 100644
index e5c8f512ce..0000000000
--- a/openwrt/package/kismet/ipkg/kismet-client.control
+++ /dev/null
@@ -1,9 +0,0 @@
-Package: kismet-client
-Priority: optional
-Section: net
-Depends: uclibc++, libncurses
-Description: The kismet client
- Kismet is an 802.11 layer2 wireless network detector,
- sniffer, and intrusion detection system. Kismet will work with any
- wireless card which supports raw monitoring (rfmon) mode, and can
- sniff 802.11b, 802.11a, and 802.11g traffic.
diff --git a/openwrt/package/kismet/ipkg/kismet-drone.conffiles b/openwrt/package/kismet/ipkg/kismet-drone.conffiles
deleted file mode 100644
index 744e244732..0000000000
--- a/openwrt/package/kismet/ipkg/kismet-drone.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/kismet/kismet_drone.conf
diff --git a/openwrt/package/kismet/ipkg/kismet-drone.control b/openwrt/package/kismet/ipkg/kismet-drone.control
deleted file mode 100644
index 9d8ac0df39..0000000000
--- a/openwrt/package/kismet/ipkg/kismet-drone.control
+++ /dev/null
@@ -1,9 +0,0 @@
-Package: kismet-drone
-Priority: optional
-Section: net
-Depends: uclibc++, libpcap
-Description: The kismet drone
- Kismet is an 802.11 layer2 wireless network detector,
- sniffer, and intrusion detection system. Kismet will work with any
- wireless card which supports raw monitoring (rfmon) mode, and can
- sniff 802.11b, 802.11a, and 802.11g traffic.
diff --git a/openwrt/package/kismet/ipkg/kismet-server.conffiles b/openwrt/package/kismet/ipkg/kismet-server.conffiles
deleted file mode 100644
index 0fdf437639..0000000000
--- a/openwrt/package/kismet/ipkg/kismet-server.conffiles
+++ /dev/null
@@ -1,3 +0,0 @@
-/etc/kismet/ap_manuf
-/etc/kismet/client_manuf
-/etc/kismet/kismet.conf
diff --git a/openwrt/package/kismet/ipkg/kismet-server.control b/openwrt/package/kismet/ipkg/kismet-server.control
deleted file mode 100644
index 3c416be83c..0000000000
--- a/openwrt/package/kismet/ipkg/kismet-server.control
+++ /dev/null
@@ -1,9 +0,0 @@
-Package: kismet-server
-Priority: optional
-Section: net
-Depends: uclibc++, libpcap
-Description: The kismet server
- Kismet is an 802.11 layer2 wireless network detector,
- sniffer, and intrusion detection system. Kismet will work with any
- wireless card which supports raw monitoring (rfmon) mode, and can
- sniff 802.11b, 802.11a, and 802.11g traffic.
diff --git a/openwrt/package/kismet/ipkg/kismet.control b/openwrt/package/kismet/ipkg/kismet.control
deleted file mode 100644
index 193328563c..0000000000
--- a/openwrt/package/kismet/ipkg/kismet.control
+++ /dev/null
@@ -1,9 +0,0 @@
-Package: kismet
-Priority: optional
-Section: net
-Depends: libgcc, kismet-client, kismet-server
-Description: kismet
- Kismet is an 802.11 layer2 wireless network detector,
- sniffer, and intrusion detection system. Kismet will work with any
- wireless card which supports raw monitoring (rfmon) mode, and can
- sniff 802.11b, 802.11a, and 802.11g traffic.
diff --git a/openwrt/package/kismet/patches/100-wrt54g_source.patch b/openwrt/package/kismet/patches/100-wrt54g_source.patch
deleted file mode 100644
index 3336a8f429..0000000000
--- a/openwrt/package/kismet/patches/100-wrt54g_source.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-diff -urN kismet.old/kis_packsources.cc kismet.dev/kis_packsources.cc
---- kismet.old/kis_packsources.cc 2005-08-16 03:22:51.000000000 +0200
-+++ kismet.dev/kis_packsources.cc 2005-08-23 00:59:04.465379568 +0200
-@@ -192,7 +192,7 @@
- chancontrol_wlanng_avs, 1);
- sourcetracker->RegisterPacketsource("wrt54g", 1, "na", 0,
- pcapsource_wrt54g_registrant,
-- monitor_wrt54g, NULL, NULL, 0);
-+ monitor_wrt54g, unmonitor_wrt54g, chancontrol_wext, 0);
- #else
- REG_EMPTY_CARD(sourcetracker, "wlanng");
- REG_EMPTY_CARD(sourcetracker, "wlanng_avs");
-diff -urN kismet.old/packetsourcetracker.cc kismet.dev/packetsourcetracker.cc
---- kismet.old/packetsourcetracker.cc 2005-08-16 03:22:51.000000000 +0200
-+++ kismet.dev/packetsourcetracker.cc 2005-08-23 00:59:39.969982048 +0200
-@@ -986,6 +986,7 @@
- (meta_packsources[chanpak.meta_num]->device.c_str(),
- chanpak.channel, errstr,
- (void *) (meta_packsources[chanpak.meta_num]->capsource)) < 0) {
-+#if 0
-
- meta_packsources[chanpak.meta_num]->consec_errors++;
-
-@@ -1007,6 +1008,7 @@
- CHANFLAG_FATAL));
- continue;
- }
-+#endif
- } else {
- // Otherwise reset the error count
- meta_packsources[chanpak.meta_num]->consec_errors = 0;
-diff -urN kismet.old/pcapsource.cc kismet.dev/pcapsource.cc
---- kismet.old/pcapsource.cc 2005-08-16 03:22:51.000000000 +0200
-+++ kismet.dev/pcapsource.cc 2005-08-23 01:03:45.652632608 +0200
-@@ -115,6 +115,53 @@
- u_char callback_data[MAX_PACKET_LEN];
-
- // Open a source
-+int PcapSourceWrt54g::OpenSource() {
-+ channel = 0;
-+
-+ errstr[0] = '\0';
-+
-+ char *unconst = strdup("prism0");
-+
-+ pd = pcap_open_live(unconst, MAX_PACKET_LEN, 1, 1000, errstr);
-+
-+ #if defined (SYS_OPENBSD) || defined(SYS_NETBSD) && defined(HAVE_RADIOTAP)
-+ /* Request desired DLT on multi-DLT systems that default to EN10MB. We do this
-+ later anyway but doing it here ensures we have the desired DLT from the get go. */
-+ pcap_set_datalink(pd, DLT_IEEE802_11_RADIO);
-+ #endif
-+
-+ free(unconst);
-+
-+ if (strlen(errstr) > 0)
-+ return -1; // Error is already in errstr
-+
-+ paused = 0;
-+
-+ errstr[0] = '\0';
-+
-+ num_packets = 0;
-+
-+ if (DatalinkType() < 0)
-+ return -1;
-+
-+#ifdef HAVE_PCAP_NONBLOCK
-+ pcap_setnonblock(pd, 1, errstr);
-+#elif !defined(SYS_OPENBSD)
-+ // do something clever (Thanks to Guy Harris for suggesting this).
-+ int save_mode = fcntl(pcap_get_selectable_fd(pd), F_GETFL, 0);
-+ if (fcntl(pcap_get_selectable_fd(pd), F_SETFL, save_mode | O_NONBLOCK) < 0) {
-+ snprintf(errstr, 1024, "fcntl failed, errno %d (%s)",
-+ errno, strerror(errno));
-+ }
-+#endif
-+
-+ if (strlen(errstr) > 0)
-+ return -1; // Ditto
-+
-+ return 1;
-+}
-+
-+// Open a source
- int PcapSource::OpenSource() {
- channel = 0;
-
-@@ -1928,63 +1975,32 @@
- int monitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if,
- void *in_ext) {
- char cmdline[2048];
-- int mode;
-- int wlmode = 0;
--
--#ifdef HAVE_LINUX_WIRELESS
-- vector<string> devbits = StrTokenize(in_dev, ":");
-
-- if (devbits.size() < 2) {
-- snprintf(cmdline, 2048, "/usr/sbin/wl monitor 1");
-+ snprintf(cmdline, 2048, "/usr/sbin/iwpriv %s set_monitor 1", in_dev);
- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to set mode using 'wl monitor 1'. Some "
-- "custom firmware images require you to specify the origial "
-+ snprintf(in_err, 1024, "Unable to set mode using 'iwpriv %s set_monitor 1'. "
-+ "Some custom firmware images require you to specify the origial "
- "device and a new dynamic device and use the iwconfig controls. "
- "see the README for how to configure your capture source.");
- return -1;
- }
-- } else {
-- // Get the mode ... If this doesn't work, try the old wl method.
-- if (Iwconfig_Get_Mode(devbits[0].c_str(), in_err, &mode) < 0) {
-- fprintf(stderr, "WARNING: Getting wireless mode via ioctls failed, "
-- "defaulting to trying the 'wl' command.\n");
-- wlmode = 1;
-- }
-
-- if (wlmode == 1) {
-- snprintf(cmdline, 2048, "/usr/sbin/wl monitor 1");
-- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-- return -1;
-- }
-- } else if (mode != LINUX_WLEXT_MONITOR) {
-- // Set it
-- if (Iwconfig_Set_Mode(devbits[0].c_str(), in_err,
-- LINUX_WLEXT_MONITOR) < 0) {
-- snprintf(in_err, STATUS_MAX, "Unable to set iwconfig monitor "
-- "mode. If you are using an older wrt54g, try specifying "
-- "only the ethernet device, not ethX:prismX");
-- return -1;
-- }
-+ return 1;
-+}
-+
-+
-+int unmonitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if,
-+ void *in_ext) {
-+ char cmdline[2048];
-+
-+ snprintf(cmdline, 2048, "/usr/sbin/iwpriv %s set_monitor 0", in_dev);
-+ if (RunSysCmd(cmdline) < 0) {
-+ snprintf(in_err, 1024, "Unable to set mode using 'iwpriv %s set_monitor 0'. "
-+ "Some custom firmware images require you to specify the origial "
-+ "device and a new dynamic device and use the iwconfig controls. "
-+ "see the README for how to configure your capture source.");
-+ return -1;
- }
-- }
--#else
-- snprintf(cmdline, 2048, "/usr/sbin/wl monitor 1");
-- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to set mode using 'wl monitor 1'. Some "
-- "custom firmware images require you to specify the origial "
-- "device and a new dynamic device and use the iwconfig controls. "
-- "see the README for how to configure your capture source. "
-- "Support for wireless extensions was not compiled in, so more "
-- "advanced modes of setting monitor mode are not available.");
-- return -1;
-- }
-- fprintf(stderr, "WARNING: Support for wireless extensions was not compiled "
-- "into this binary. Using the iw* tools to set monitor mode will not "
-- "be available. This may cause opening the source to fail on some "
-- "firmware versions. To fix this, make sure wireless extensions are "
-- "available and found by the configure script when building Kismet.");
--#endif
-
- return 1;
- }
-diff -urN kismet.old/pcapsource.h kismet.dev/pcapsource.h
---- kismet.old/pcapsource.h 2005-08-16 03:22:51.000000000 +0200
-+++ kismet.dev/pcapsource.h 2005-08-23 01:04:26.057490136 +0200
-@@ -265,6 +265,7 @@
- PcapSourceWrt54g(string in_name, string in_dev) : PcapSource(in_name, in_dev) {
- fcsbytes = 4;
- }
-+ int OpenSource();
- int FetchPacket(kis_packet *packet, uint8_t *data, uint8_t *moddata);
- protected:
- carrier_type IEEE80211Carrier();
-@@ -412,6 +413,7 @@
- int monitor_wlanng_avs(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext);
- // linksys wrt54g monitoring
- int monitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext);
-+int unmonitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext);
- #endif
-
- // This should be expanded to handle BSD...
diff --git a/openwrt/package/kismet/patches/110-uclibc++_fixes.patch b/openwrt/package/kismet/patches/110-uclibc++_fixes.patch
deleted file mode 100644
index 7325ac1612..0000000000
--- a/openwrt/package/kismet/patches/110-uclibc++_fixes.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -urN kismet-2005-04-R1.old/configfile.cc kismet-2005-04-R1.dev/configfile.cc
---- kismet-2005-04-R1.old/configfile.cc 2005-04-03 07:33:42.000000000 +0200
-+++ kismet-2005-04-R1.dev/configfile.cc 2005-04-26 01:37:32.000000000 +0200
-@@ -24,6 +24,7 @@
- #include <stdlib.h>
- #include <stdio.h>
- #include <errno.h>
-+#include <time.h>
- #include "configfile.h"
- #include "util.h"
-
diff --git a/openwrt/package/kismet/patches/120-cleanup.patch b/openwrt/package/kismet/patches/120-cleanup.patch
deleted file mode 100644
index 691492e840..0000000000
--- a/openwrt/package/kismet/patches/120-cleanup.patch
+++ /dev/null
@@ -1,3287 +0,0 @@
-diff -urN kismet.dev/cursesfront.cc kismet.dev2/cursesfront.cc
---- kismet.dev/cursesfront.cc 2005-03-10 17:49:34.000000000 +0100
-+++ kismet.dev2/cursesfront.cc 2006-04-14 19:31:55.000000000 +0200
-@@ -30,7 +30,6 @@
- // Enable the protocols we can use
- void NCurseFront::AddClient(TcpClient *in_client) {
- client = in_client;
-- client->EnableProtocol("GPS");
- client->EnableProtocol("INFO");
- client->EnableProtocol("REMOVE");
- client->EnableProtocol("NETWORK");
-@@ -88,32 +87,8 @@
- mvwaddstr(netborder, 1, 2, " SSID T W Ch Data LLC Crypt Wk Flags");
- }
-
-- char gpsdata[1024];
-- float lat, lon, alt, spd, heading;
- int mode;
-
-- client->FetchLoc(&lat, &lon, &alt, &spd, &heading, &mode);
--
-- if (!(lat == 0 && lon == 0 && alt == 0 && spd == 0 && mode == 0)) {
--
-- char fix[16];
--
-- if (mode == -1)
-- snprintf(fix, 16, "No signal");
-- else if (mode == 2)
-- snprintf(fix, 5, "2D");
-- else if (mode == 3)
-- snprintf(fix, 5, "3D");
-- else
-- snprintf(fix, 5, "NONE");
--
-- snprintf(gpsdata, 1024, "Lat %.3f Lon %.3f Alt %.3f Spd %.3f Fix %s",
-- lat, lon, alt, spd, fix);
--
-- mvwaddstr(netborder, LINES-statheight-1, 2, gpsdata);
--
-- }
--
- box(infoborder, '|', '-');
- mvwaddstr(infoborder, 0, 2, "Info");
-
-diff -urN kismet.dev/dronesource.cc kismet.dev2/dronesource.cc
---- kismet.dev/dronesource.cc 2005-05-26 16:51:45.000000000 +0200
-+++ kismet.dev2/dronesource.cc 2006-04-14 19:31:55.000000000 +0200
-@@ -201,9 +201,6 @@
- return -1;
- }
-
-- // Grab the GPS info
-- gps_enabled = vpkt.gps_enabled;
--
- stream_recv_bytes = 0;
-
- // printf("debug - version packet valid\n\n");
-@@ -336,25 +333,6 @@
- packet->encoding = (encoding_type) phdr.encoding;
- packet->datarate = (uint32_t) ntohl(phdr.datarate);
-
-- if (gps_enabled) {
-- // If the drone is sending us GPS data, use it
-- packet->gps_lat = Pair2Float((int16_t) ntohs(phdr.gps_lat),
-- (int64_t) kis_ntoh64(phdr.gps_lat_mant));
-- packet->gps_lon = Pair2Float((int16_t) ntohs(phdr.gps_lon),
-- (int64_t) kis_ntoh64(phdr.gps_lon_mant));
-- packet->gps_alt = Pair2Float((int16_t) ntohs(phdr.gps_alt),
-- (int64_t) kis_ntoh64(phdr.gps_alt_mant));
-- packet->gps_spd = Pair2Float((int16_t) ntohs(phdr.gps_spd),
-- (int64_t) kis_ntoh64(phdr.gps_spd_mant));
-- packet->gps_heading = Pair2Float((int16_t) ntohs(phdr.gps_heading),
-- (int64_t) kis_ntoh64(phdr.gps_heading_mant));
-- packet->gps_fix = phdr.gps_fix;
-- } else if (gpsd != NULL) {
-- // Otherwise, no
-- gpsd->FetchLoc(&packet->gps_lat, &packet->gps_lon, &packet->gps_alt,
-- &packet->gps_spd, &packet->gps_heading, &packet->gps_fix);
-- }
--
- packet->data = data;
- packet->moddata = moddata;
- packet->modified = 0;
-diff -urN kismet.dev/dronesource.h kismet.dev2/dronesource.h
---- kismet.dev/dronesource.h 2005-05-26 16:51:45.000000000 +0200
-+++ kismet.dev2/dronesource.h 2006-04-14 19:31:55.000000000 +0200
-@@ -79,9 +79,6 @@
- uint8_t databuf[MAX_PACKET_LEN];
-
- unsigned int resyncing;
--
-- // Is the drone pushing GPS data to us?
-- int gps_enabled;
- };
-
- // Nothing but a registrant for us
-diff -urN kismet.dev/frontend.cc kismet.dev2/frontend.cc
---- kismet.dev/frontend.cc 2005-06-29 20:04:43.000000000 +0200
-+++ kismet.dev2/frontend.cc 2006-04-14 19:31:55.000000000 +0200
-@@ -248,33 +248,6 @@
-
- }
-
-- // Aggregate the GPS data
-- if (wnet->aggregate_points > 0) {
-- dnet->virtnet->aggregate_lat += wnet->aggregate_lat;
-- dnet->virtnet->aggregate_lon += wnet->aggregate_lon;
-- dnet->virtnet->aggregate_alt += wnet->aggregate_alt;
-- dnet->virtnet->aggregate_points += wnet->aggregate_points;
-- }
--
-- if (wnet->gps_fixed > dnet->virtnet->gps_fixed)
-- dnet->virtnet->gps_fixed = wnet->gps_fixed;
-- if (wnet->min_lat < dnet->virtnet->min_lat || dnet->virtnet->min_lat == 0)
-- dnet->virtnet->min_lat = wnet->min_lat;
-- if (wnet->min_lon < dnet->virtnet->min_lon || dnet->virtnet->min_lon == 0)
-- dnet->virtnet->min_lon = wnet->min_lon;
-- if (wnet->min_alt < dnet->virtnet->min_alt || dnet->virtnet->min_alt == 0)
-- dnet->virtnet->min_alt = wnet->min_alt;
-- if (wnet->min_spd < dnet->virtnet->min_spd || dnet->virtnet->min_spd == 0)
-- dnet->virtnet->min_spd = wnet->min_spd;
-- if (wnet->max_lat > dnet->virtnet->max_lat || dnet->virtnet->max_lat == 0)
-- dnet->virtnet->max_lat = wnet->max_lat;
-- if (wnet->max_lon > dnet->virtnet->max_lon || dnet->virtnet->max_lon == 0)
-- dnet->virtnet->max_lon = wnet->max_lon;
-- if (wnet->max_alt > dnet->virtnet->max_alt || dnet->virtnet->max_alt == 0)
-- dnet->virtnet->max_alt = wnet->max_alt;
-- if (wnet->max_spd > dnet->virtnet->max_spd || dnet->virtnet->max_spd == 0)
-- dnet->virtnet->max_spd = wnet->max_spd;
--
- // Aggregate the carriers and encodings
- dnet->virtnet->carrier_set |= wnet->carrier_set;
- dnet->virtnet->encoding_set |= wnet->encoding_set;
-diff -urN kismet.dev/kismet_client.cc kismet.dev2/kismet_client.cc
---- kismet.dev/kismet_client.cc 2005-06-10 04:02:24.000000000 +0200
-+++ kismet.dev2/kismet_client.cc 2006-04-14 19:31:55.000000000 +0200
-@@ -28,7 +28,6 @@
- #include "cursesfront.h"
- #include "panelfront.h"
- #include "configfile.h"
--#include "speech.h"
-
- #ifndef exec_name
- char *exec_name;
-@@ -47,11 +46,7 @@
- char *configfile;
- char *uiconfigfile;
- char *server = NULL;
--int sound = -1;
--int speech = -1;
- int flite = 0;
--int speech_encoding = 0;
--string speech_sentence_encrypted, speech_sentence_unencrypted;
- unsigned int metric = 0;
- unsigned int reconnect = 0;
-
-@@ -59,20 +54,9 @@
- string configdir, groupfile;
- FILE *group_file = NULL;
-
--// Pipe file descriptor pairs and fd's
--int soundpair[2];
--int speechpair[2];
--pid_t soundpid = -1, speechpid = -1;
--
- // Catch our interrupt
- void CatchShutdown(int sig) {
-
-- // Kill our sound players
-- if (soundpid > 0)
-- kill(soundpid, 9);
-- if (speechpid > 0)
-- kill(speechpid, 9);
--
- if (group_track) {
- if ((group_file = fopen(groupfile.c_str(), "w")) == NULL) {
- fprintf(stderr, "WARNING: Unable to open '%s' for writing, groups will not be saved.\n",
-@@ -116,215 +100,6 @@
- exit(0);
- }
-
--// Subprocess sound handler
--void SoundHandler(int *fds, const char *player, map<string, string> soundmap) {
-- int read_sock = fds[0];
--
-- close(fds[1]);
--
-- signal(SIGPIPE, PipeHandler);
--
-- fd_set rset;
--
-- char data[1024];
--
-- pid_t sndpid = -1;
-- int harvested = 1;
--
-- while (1) {
-- FD_ZERO(&rset);
-- FD_SET(read_sock, &rset);
-- char *end;
--
-- memset(data, 0, 1024);
--
-- if (harvested == 0) {
-- // We consider a wait error to be a sign that the child pid died
-- // so we flag it as harvested and keep on going
-- pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
-- if (harvestpid == -1 || harvestpid == sndpid)
-- harvested = 1;
-- }
--
-- struct timeval tim;
-- tim.tv_sec = 1;
-- tim.tv_usec = 0;
--
-- if (select(read_sock + 1, &rset, NULL, NULL, &tim) < 0) {
-- if (errno != EINTR) {
-- exit(1);
-- }
-- }
--
-- if (FD_ISSET(read_sock, &rset)) {
-- int ret;
-- ret = read(read_sock, data, 1024);
--
-- // We'll die off if we get a read error, and we'll let kismet on the
-- // other side detact that it died
-- if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
-- exit(1);
--
-- if ((end = strstr(data, "\n")) == NULL)
-- continue;
--
-- end[0] = '\0';
-- }
--
-- if (data[0] == '\0')
-- continue;
--
-- // If we've harvested the process, spawn a new one and watch it
-- // instead. Otherwise, we just let go of the data we read
-- if (harvested == 1) {
-- // Only take the first line
-- char *nl;
-- if ((nl = strchr(data, '\n')) != NULL)
-- *nl = '\0';
--
-- char snd[1024];
--
-- if (soundmap.size() == 0)
-- snprintf(snd, 1024, "%s", data);
-- if (soundmap.find(data) != soundmap.end())
-- snprintf(snd, 1024, "%s", soundmap[data].c_str());
-- else
-- continue;
--
-- char plr[1024];
-- snprintf(plr, 1024, "%s", player);
--
-- harvested = 0;
-- if ((sndpid = fork()) == 0) {
-- // Suppress errors
-- int nulfd = open("/dev/null", O_RDWR);
-- dup2(nulfd, 1);
-- dup2(nulfd, 2);
--
-- char * const echoarg[] = { plr, snd, NULL };
-- execve(echoarg[0], echoarg, NULL);
-- }
-- }
--
-- data[0] = '\0';
-- }
--}
--
--// Subprocess speech handler
--void SpeechHandler(int *fds, const char *player) {
-- int read_sock = fds[0];
-- close(fds[1]);
--
-- fd_set rset;
--
-- char data[1024];
--
-- pid_t sndpid = -1;
-- int harvested = 1;
--
-- while (1) {
-- FD_ZERO(&rset);
-- FD_SET(read_sock, &rset);
-- //char *end;
--
-- memset(data, 0, 1024);
--
-- struct timeval tim;
-- tim.tv_sec = 1;
-- tim.tv_usec = 0;
--
-- if (select(read_sock + 1, &rset, NULL, NULL, &tim) < 0) {
-- if (errno != EINTR) {
-- exit(1);
-- }
-- }
--
-- if (harvested == 0) {
-- // We consider a wait error to be a sign that the child pid died
-- // so we flag it as harvested and keep on going
-- pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
-- if (harvestpid == -1 || harvestpid == sndpid)
-- harvested = 1;
-- }
--
-- if (FD_ISSET(read_sock, &rset)) {
-- int ret;
-- ret = read(read_sock, data, 1024);
--
-- // We'll die off if we get a read error, and we'll let kismet on the
-- // other side detact that it died
-- if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
-- exit(1);
--
-- data[ret] = '\0';
--
-- }
--
-- if (data[0] == '\0')
-- continue;
--
-- // If we've harvested the process, spawn a new one and watch it
-- // instead. Otherwise, we just let go of the data we read
-- if (harvested == 1) {
-- harvested = 0;
-- if ((sndpid = fork()) == 0) {
-- // Only take the first line
-- char *nl;
-- if ((nl = strchr(data, '\n')) != NULL)
-- *nl = '\0';
--
-- // Make sure it's shell-clean
-- MungeToShell(data, strlen(data));
-- char spk_call[1024];
-- snprintf(spk_call, 1024, "echo \"(%s\\\"%s\\\")\" | %s "
-- ">/dev/null 2>/dev/null",
-- flite ? "": "SayText ", data, player);
--
-- system(spk_call);
--
-- exit(0);
-- }
-- }
--
-- data[0] = '\0';
-- }
--}
--
--
--int PlaySound(string in_sound) {
--
-- char snd[1024];
--
-- snprintf(snd, 1024, "%s\n", in_sound.c_str());
--
-- if (write(soundpair[1], snd, strlen(snd)) < 0) {
-- char status[STATUS_MAX];
-- snprintf(status, STATUS_MAX,
-- "ERROR: Could not write to sound pipe. Stopping sound.");
-- gui->WriteStatus(status);
--
-- return 0;
-- }
--
-- return 1;
--}
--
--int SayText(string in_text) {
-- char snd[1024];
--
-- snprintf(snd, 1024, "%s\n", in_text.c_str());
--
-- if (write(speechpair[1], snd, strlen(snd)) < 0) {
-- char status[STATUS_MAX];
-- snprintf(status, STATUS_MAX,
-- "ERROR: Could not write to speech pipe. Stopping speech.");
-- gui->WriteStatus(status);
--
-- return 0;
-- }
--
-- return 1;
--}
-
- int main(int argc, char *argv[]) {
- exec_name = argv[0];
-@@ -345,8 +120,6 @@
- char guihost[1024];
- int guiport = -1;
-
-- int gpsmode = -1;
--
- configfile = NULL;
- uiconfigfile = NULL;
-
-@@ -391,7 +164,6 @@
- fprintf(stderr, "Using alternate UI config file: %s\n", uiconfigfile);
- break;
- case 'q':
-- sound = 0;
- break;
- case 'g':
- reqgui = strdup(optarg);
-@@ -515,70 +287,6 @@
- server = strdup(gui_conf->FetchOpt("host").c_str());
- }
-
-- if (gui_conf->FetchOpt("sound") == "true" && sound == -1) {
-- if (gui_conf->FetchOpt("soundplay") != "") {
-- sndplay = gui_conf->FetchOpt("soundplay");
-- sound = 1;
--
-- if (gui_conf->FetchOpt("soundopts") != "")
-- sndplay += " " + gui_conf->FetchOpt("soundopts");
--
-- if (gui_conf->FetchOpt("sound_new") != "")
-- wav_map["new"] = gui_conf->FetchOpt("sound_new");
-- if (gui_conf->FetchOpt("sound_new_wep") != "")
-- wav_map["new_wep"] = gui_conf->FetchOpt("sound_new_wep");
-- if (gui_conf->FetchOpt("sound_traffic") != "")
-- wav_map["traffic"] = gui_conf->FetchOpt("sound_traffic");
-- if (gui_conf->FetchOpt("sound_junktraffic") != "")
-- wav_map["junktraffic"] = gui_conf->FetchOpt("sound_junktraffic");
-- if (gui_conf->FetchOpt("sound_gpslock") != "")
-- wav_map["gpslock"] = gui_conf->FetchOpt("sound_gpslock");
-- if (gui_conf->FetchOpt("sound_gpslost") != "")
-- wav_map["gpslost"] = gui_conf->FetchOpt("sound_gpslost");
-- if (gui_conf->FetchOpt("sound_alert") != "")
-- wav_map["alert"] = gui_conf->FetchOpt("sound_alert");
--
-- } else {
-- fprintf(stderr, "ERROR: Sound alerts enabled but no sound playing binary specified.\n");
-- sound = 0;
-- }
-- } else if (sound == -1)
-- sound = 0;
--
-- /* Added by Shaw Innes 17/2/02 */
-- if (gui_conf->FetchOpt("speech") == "true" && speech == -1) {
-- if (gui_conf->FetchOpt("festival") != "") {
-- festival = strdup(gui_conf->FetchOpt("festival").c_str());
-- speech = 1;
--
-- if (gui_conf->FetchOpt("flite") == "true")
-- flite = 1;
--
-- string speechtype = gui_conf->FetchOpt("speech_type");
--
-- if (!strcasecmp(speechtype.c_str(), "nato"))
-- speech_encoding = SPEECH_ENCODING_NATO;
-- else if (!strcasecmp(speechtype.c_str(), "spell"))
-- speech_encoding = SPEECH_ENCODING_SPELL;
-- else
-- speech_encoding = SPEECH_ENCODING_NORMAL;
--
-- // Make sure we have encrypted text lines
-- if (gui_conf->FetchOpt("speech_encrypted") == "" || gui_conf->FetchOpt("speech_unencrypted") == "") {
-- fprintf(stderr, "ERROR: Speech request but speech_encrypted or speech_unencrypted line missing.\n");
-- speech = 0;
-- }
--
-- speech_sentence_encrypted = gui_conf->FetchOpt("speech_encrypted");
-- speech_sentence_unencrypted = gui_conf->FetchOpt("speech_unencrypted");
--
-- } else {
-- fprintf(stderr, "ERROR: Speech alerts enabled but no path to festival has been specified.\n");
-- speech = 0;
-- }
-- } else if (speech == -1)
-- speech = 0;
--
- if (gui_conf->FetchOpt("decay") != "") {
- if (sscanf(gui_conf->FetchOpt("decay").c_str(), "%d", &decay) != 1) {
- fprintf(stderr, "FATAL: Illegal config file value for decay.\n");
-@@ -636,45 +344,6 @@
- }
- }
-
-- // Fork and find the sound options
-- if (sound) {
-- if (pipe(soundpair) == -1) {
-- fprintf(stderr, "WARNING: Unable to create pipe for audio. Disabling sound.\n");
-- sound = 0;
-- } else {
-- soundpid = fork();
--
-- if (soundpid < 0) {
-- fprintf(stderr, "WARNING: Unable to fork for audio. Disabling sound.\n");
-- sound = 0;
-- } else if (soundpid == 0) {
-- SoundHandler(soundpair, sndplay.c_str(), wav_map);
-- exit(0);
-- }
--
-- close(soundpair[0]);
-- }
-- }
--
-- if (speech) {
-- if (pipe(speechpair) == -1) {
-- fprintf(stderr, "WARNING: Unable to create pipe for speech. Disabling speech.\n");
-- speech = 0;
-- } else {
-- speechpid = fork();
--
-- if (speechpid < 0) {
-- fprintf(stderr, "WARNING: Unable to fork for speech. Disabling speech.\n");
-- speech = 0;
-- } else if (speechpid == 0) {
-- SpeechHandler(speechpair, festival);
-- exit(0);
-- }
--
-- close(speechpair[0]);
-- }
-- }
--
- if (kismet_serv.Connect(guiport, guihost) < 0) {
- fprintf(stderr, "FATAL: Could not connect to %s:%d.\n", guihost, guiport);
- CatchShutdown(-1);
-@@ -884,53 +553,13 @@
- }
-
- if (pollret != 0) {
-- if (pollret == CLIENT_ALERT)
-- if (sound == 1)
-- sound = PlaySound("alert");
--
- if (strlen(tcpcli->FetchStatus()) != 0) {
- gui->WriteStatus(tcpcli->FetchStatus());
- // gui->DrawDisplay();
- }
-
-- // The GPS only gets updated for the primary client
-- if (tcpcli == primary_client) {
-- if (tcpcli->FetchMode() == 0 && gpsmode != 0) {
-- if (sound == 1 && gpsmode != -1)
-- sound = PlaySound("gpslost");
-- gpsmode = 0;
-- } else if (tcpcli->FetchMode() != 0 && gpsmode == 0) {
-- if (sound == 1 && gpsmode != -1)
-- sound = PlaySound("gpslock");
-- gpsmode = 1;
-- }
-- }
--
- if (tcpcli->FetchDeltaNumNetworks() > 0) {
- wireless_network *newnet = tcpcli->FetchLastNewNetwork();
--
-- if (sound == 1 && newnet != lastspoken) {
-- if (newnet->crypt_set &&
-- wav_map.find("new_wep") != wav_map.end())
-- sound = PlaySound("new_wep");
-- else
-- sound = PlaySound("new");
-- }
--
-- if (speech == 1 && newnet != lastspoken) {
-- string text;
--
-- if (newnet != NULL) {
-- if (newnet->crypt_set)
-- text = ExpandSpeechString(speech_sentence_encrypted, newnet, speech_encoding);
-- else
-- text = ExpandSpeechString(speech_sentence_unencrypted, newnet, speech_encoding);
--
-- speech = SayText(text.c_str());
-- }
-- }
--
-- lastspoken = newnet;
- }
-
- num_networks += tcpcli->FetchNumNetworks();
-@@ -938,17 +567,7 @@
- num_noise += tcpcli->FetchNumNoise();
- num_dropped += tcpcli->FetchNumDropped();
-
-- if (tcpcli->FetchDeltaNumPackets() != 0) {
-- if (time(0) - last_click >= decay && sound == 1) {
-- if (tcpcli->FetchDeltaNumPackets() > tcpcli->FetchDeltaNumDropped()) {
-- sound = PlaySound("traffic");
-- } else {
-- sound = PlaySound("junktraffic");
-- }
--
-- last_click = time(0);
-- }
-- }
-+ tcpcli->FetchDeltaNumPackets();
- }
- }
- } else {
-diff -urN kismet.dev/kismet_drone.cc kismet.dev2/kismet_drone.cc
---- kismet.dev/kismet_drone.cc 2006-04-13 00:42:59.000000000 +0200
-+++ kismet.dev2/kismet_drone.cc 2006-04-14 20:21:46.000000000 +0200
-@@ -32,16 +32,11 @@
- #include "packet.h"
-
- #include "packetsource.h"
--#include "prism2source.h"
- #include "pcapsource.h"
--#include "wtapfilesource.h"
--#include "wsp100source.h"
--#include "vihasource.h"
- #include "dronesource.h"
- #include "packetsourcetracker.h"
- #include "kis_packsources.h"
-
--#include "gpsd.h"
- #include "tcpstreamer.h"
- #include "configfile.h"
-
-@@ -53,10 +48,6 @@
-
- const char *config_base = "kismet_drone.conf";
-
--GPSD *gps = NULL;
--int gpsmode = 0;
--int gps_enable = 0;
--
- // Unused, only here to make packetsourcetracker link
- int retain_monitor = 0;
-
-@@ -84,26 +75,6 @@
- exit(0);
- }
-
--int GpsEvent(Timetracker::timer_event *evt, void *parm) {
-- // The GPS only provides us a new update once per second we might
-- // as well only update it here once a second
-- if (gps_enable) {
-- int gpsret;
-- gpsret = gps->Scan();
-- if (gpsret < 0) {
-- if (!silent)
-- fprintf(stderr, "GPS error fetching data: %s\n",
-- gps->FetchError());
--
-- gps_enable = 0;
-- }
--
-- }
--
-- // We want to be rescheduled
-- return 1;
--}
--
- // Handle channel hopping... this is actually really simple.
- int ChannelHopEvent(Timetracker::timer_event *evt, void *parm) {
- sourcetracker.AdvanceChannel();
-@@ -151,9 +122,6 @@
-
- TcpStreamer streamer;
-
-- char gpshost[1024];
-- int gpsport = -1;
--
- int channel_hop = -1;
- int channel_velocity = 1;
- int channel_dwell = 0;
-@@ -354,46 +322,6 @@
- exit(1);
- }
-
-- if (conf->FetchOpt("gps") == "true") {
-- if (sscanf(conf->FetchOpt("gpshost").c_str(), "%1023[^:]:%d", gpshost, &gpsport) != 2) {
-- fprintf(stderr, "Invalid GPS host in config (host:port required)\n");
-- exit(1);
-- }
--
-- gps_enable = 1;
-- } else {
-- gps_enable = 0;
-- }
--
-- if (gps_enable == 1) {
-- // Open the GPS
-- gps = new GPSD(gpshost, gpsport);
--
-- // Lock GPS position
-- if (conf->FetchOpt("gpsmodelock") == "true") {
-- fprintf(stderr, "Enabling GPS position lock override (broken GPS unit reports 0 always)\n");
-- gps->SetOptions(GPSD_OPT_FORCEMODE);
-- }
--
-- if (gps->OpenGPSD() < 0) {
-- fprintf(stderr, "%s\n", gps->FetchError());
--
-- gps_enable = 0;
-- } else {
-- fprintf(stderr, "Opened GPS connection to %s port %d\n",
-- gpshost, gpsport);
--
-- }
-- }
--
-- // Update GPS coordinates and handle signal loss if defined
-- timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &GpsEvent, NULL);
--
-- // Add the GPS to the tcpstreamer
-- streamer.AddGpstracker(gps);
--
-- // Register the gps and timetracker with the sourcetracker
-- sourcetracker.AddGpstracker(gps);
- sourcetracker.AddTimetracker(&timetracker);
-
- // Register the sources
-diff -urN kismet.dev/kismet_server.cc kismet.dev2/kismet_server.cc
---- kismet.dev/kismet_server.cc 2006-04-13 00:42:59.000000000 +0200
-+++ kismet.dev2/kismet_server.cc 2006-04-14 19:31:55.000000000 +0200
-@@ -37,11 +37,7 @@
- #include "packet.h"
-
- #include "packetsource.h"
--#include "prism2source.h"
- #include "pcapsource.h"
--#include "wtapfilesource.h"
--#include "wsp100source.h"
--#include "vihasource.h"
- #include "dronesource.h"
- #include "packetsourcetracker.h"
- #include "kis_packsources.h"
-@@ -51,15 +47,11 @@
- #include "wtaplocaldump.h"
- #include "airsnortdump.h"
- #include "fifodump.h"
--#include "gpsdump.h"
--
--#include "gpsd.h"
-
- #include "packetracker.h"
- #include "timetracker.h"
- #include "alertracker.h"
-
--#include "speech.h"
- #include "tcpserver.h"
- #include "server_globals.h"
- #include "kismet_server.h"
-@@ -89,17 +81,8 @@
- Alertracker alertracker;
- Timetracker timetracker;
-
--GPSD *gps = NULL;
--int gpsmode = 0;
--GPSDump gpsdump;
--
--// Last time we tried to reconnect to the gps
--time_t last_gpsd_reconnect = 0;
--int gpsd_reconnect_attempt = 0;
--
- FifoDumpFile fifodump;
- TcpServer ui_server;
--int sound = -1;
- packet_info last_info;
- int decay;
- channel_power channel_graph[CHANNEL_MAX];
-@@ -112,11 +95,8 @@
- // Wep keys
- macmap<wep_key_info *> bssid_wep_map;
-
--// Pipe file descriptor pairs and fd's
--int soundpair[2];
--int speechpair[2];
- int chanpair[2];
--pid_t soundpid = -1, speechpid = -1, chanpid = -1;
-+pid_t chanpid = -1;
-
- // Past alerts
- unsigned int max_alerts = 50;
-@@ -177,17 +157,6 @@
- int tcpport = -1;
- int tcpmax;
-
--//const char *sndplay = NULL;
--string sndplay;
--
--const char *festival = NULL;
--int speech = -1;
--int flite = 0;
--int speech_encoding = 0;
--string speech_sentence_encrypted, speech_sentence_unencrypted;
--
--map<string, string> wav_map;
--
- int beacon_log = 1;
- int phy_log = 1;
- int mangle_log = 0;
-@@ -348,17 +317,6 @@
- // delete cryptfile;
- }
-
-- if (gps_log == 1) {
-- if (gpsdump.CloseDump(1) < 0)
-- fprintf(stderr, "Didn't log any GPS coordinates, unlinking gps file\n");
-- }
--
-- // Kill our sound players
-- if (soundpid > 0)
-- kill(soundpid, 9);
-- if (speechpid > 0)
-- kill(speechpid, 9);
--
- // Shut down the packet sources
- sourcetracker.CloseSources();
-
-@@ -369,228 +327,10 @@
- exit(0);
- }
-
--// Subprocess sound handler
--void SoundHandler(int *fds, const char *player, map<string, string> soundmap) {
-- int read_sock = fds[0];
-- close(fds[1]);
--
-- fd_set rset;
--
-- char data[1024];
--
-- pid_t sndpid = -1;
-- int harvested = 1;
--
-- while (1) {
-- FD_ZERO(&rset);
-- FD_SET(read_sock, &rset);
-- char *end;
--
-- memset(data, 0, 1024);
--
-- struct timeval tm;
-- tm.tv_sec = 1;
-- tm.tv_usec = 0;
--
-- if (select(read_sock + 1, &rset, NULL, NULL, &tm) < 0) {
-- if (errno != EINTR) {
-- exit(1);
-- }
-- }
--
-- if (harvested == 0) {
-- // We consider a wait error to be a sign that the child pid died
-- // so we flag it as harvested and keep on going
-- pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
-- if (harvestpid == -1 || harvestpid == sndpid)
-- harvested = 1;
-- }
--
-- if (FD_ISSET(read_sock, &rset)) {
-- int ret;
-- ret = read(read_sock, data, 1024);
--
-- // We'll die off if we get a read error, and we'll let kismet on the
-- // other side detact that it died
-- if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
-- exit(1);
--
-- if ((end = strstr(data, "\n")) == NULL)
-- continue;
--
-- end[0] = '\0';
-- }
--
-- if (data[0] == '\0')
-- continue;
--
--
-- // If we've harvested the process, spawn a new one and watch it
-- // instead. Otherwise, we just let go of the data we read
-- if (harvested == 1) {
-- // Only take the first line
-- char *nl;
-- if ((nl = strchr(data, '\n')) != NULL)
-- *nl = '\0';
--
-- // Make sure it's shell-clean
--
-- char snd[1024];
--
-- if (soundmap.size() == 0)
-- snprintf(snd, 1024, "%s", data);
-- if (soundmap.find(data) != soundmap.end())
-- snprintf(snd, 1024, "%s", soundmap[data].c_str());
-- else
-- continue;
--
-- char plr[1024];
-- snprintf(plr, 1024, "%s", player);
--
-- harvested = 0;
-- if ((sndpid = fork()) == 0) {
-- // Suppress errors
-- if (silent) {
-- int nulfd = open("/dev/null", O_RDWR);
-- dup2(nulfd, 1);
-- dup2(nulfd, 2);
-- }
--
-- char * const echoarg[] = { plr, snd, NULL };
-- execve(echoarg[0], echoarg, NULL);
-- }
-- }
-- data[0] = '\0';
-- }
--}
--
--// Subprocess speech handler
--void SpeechHandler(int *fds, const char *player) {
-- int read_sock = fds[0];
-- close(fds[1]);
--
-- fd_set rset;
--
-- char data[1024];
--
-- pid_t sndpid = -1;
-- int harvested = 1;
--
-- while (1) {
-- FD_ZERO(&rset);
-- FD_SET(read_sock, &rset);
-- //char *end;
--
-- memset(data, 0, 1024);
--
-- if (harvested == 0) {
-- // We consider a wait error to be a sign that the child pid died
-- // so we flag it as harvested and keep on going
-- pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
-- if (harvestpid == -1 || harvestpid == sndpid)
-- harvested = 1;
-- }
--
-- struct timeval tm;
-- tm.tv_sec = 1;
-- tm.tv_usec = 0;
--
-- if (select(read_sock + 1, &rset, NULL, NULL, &tm) < 0) {
-- if (errno != EINTR) {
-- exit(1);
-- }
-- }
--
-- if (FD_ISSET(read_sock, &rset)) {
-- int ret;
-- ret = read(read_sock, data, 1024);
--
-- // We'll die off if we get a read error, and we'll let kismet on the
-- // other side detact that it died
-- if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
-- exit(1);
--
-- data[ret] = '\0';
-- }
--
-- if (data[0] == '\0')
-- continue;
--
-- // If we've harvested the process, spawn a new one and watch it
-- // instead. Otherwise, we just let go of the data we read
-- if (harvested == 1) {
-- harvested = 0;
-- if ((sndpid = fork()) == 0) {
-- // Only take the first line
-- char *nl;
-- if ((nl = strchr(data, '\n')) != NULL)
-- *nl = '\0';
--
-- // Make sure it's shell-clean
-- MungeToShell(data, strlen(data));
-- char spk_call[1024];
-- snprintf(spk_call, 1024, "echo \"(%s\\\"%s\\\")\" | %s "
-- ">/dev/null 2>/dev/null",
-- flite ? "" : "SayText ", data, player);
-- system(spk_call);
--
-- exit(0);
-- }
-- }
--
-- data[0] = '\0';
-- }
--}
--
--
--// Fork and run a system call to play a sound
--int PlaySound(string in_sound) {
--
-- char snd[1024];
--
-- snprintf(snd, 1024, "%s\n", in_sound.c_str());
--
-- if (write(soundpair[1], snd, strlen(snd)) < 0) {
-- char status[STATUS_MAX];
-- if (!silent)
-- fprintf(stderr, "ERROR: Write error, closing sound pipe.\n");
-- snprintf(status, STATUS_MAX, "ERROR: Write error on sound pipe, closing sound connection");
-- NetWriteStatus(status);
--
-- return 0;
-- }
--
-- return 1;
--}
--
--int SayText(string in_text) {
--
-- char snd[1024];
--
-- snprintf(snd, 1024, "%s\n", in_text.c_str());
-- MungeToShell(snd, 1024);
--
-- if (write(speechpair[1], snd, strlen(snd)) < 0) {
-- char status[STATUS_MAX];
-- if (!silent)
-- fprintf(stderr, "ERROR: Write error, closing speech pipe.\n");
-- snprintf(status, STATUS_MAX, "ERROR: Write error on speech pipe, closing speech connection");
-- NetWriteStatus(status);
--
-- return 0;
-- }
--
-- return 1;
--}
--
- void KisLocalAlert(const char *in_text) {
- time_t now = time(0);
- if (!silent)
- fprintf(stderr, "ALERT %.24s %s\n", ctime(&now), in_text);
--
-- if (sound == 1)
-- sound = PlaySound("alert");
--
- }
-
- void KisLocalStatus(const char *in_status) {
-@@ -639,37 +379,6 @@
-
- char tmpstr[32];
-
-- GPS_data gdata;
--
-- if (gps_enable) {
-- float lat, lon, alt, spd, hed;
-- int mode;
--
-- gps->FetchLoc(&lat, &lon, &alt, &spd, &hed, &mode);
--
-- snprintf(tmpstr, 32, "%f", lat);
-- gdata.lat = tmpstr;
-- snprintf(tmpstr, 32, "%f", lon);
-- gdata.lon = tmpstr;
-- snprintf(tmpstr, 32, "%f", alt);
-- gdata.alt = tmpstr;
-- snprintf(tmpstr, 32, "%f", spd);
-- gdata.spd = tmpstr;
-- snprintf(tmpstr, 32, "%f", hed);
-- gdata.heading = tmpstr;
-- snprintf(tmpstr, 32, "%d", mode);
-- gdata.mode = tmpstr;
-- } else {
-- gdata.lat = "0.0";
-- gdata.lon = "0.0";
-- gdata.alt = "0.0";
-- gdata.spd = "0.0";
-- gdata.heading = "0.0";
-- gdata.mode = "0";
-- }
--
-- ui_server.SendToAll(gps_ref, (void *) &gdata);
--
- INFO_data idata;
- snprintf(tmpstr, 32, "%d", tracker.FetchNumNetworks());
- idata.networks = tmpstr;
-@@ -790,81 +499,6 @@
- }
- }
-
--int GpsEvent(Timetracker::timer_event *evt, void *parm) {
-- char status[STATUS_MAX];
--
-- // The GPS only provides us a new update once per second we might
-- // as well only update it here once a second
--
-- // If we're disconnected, try to reconnect.
-- if (gpsd_reconnect_attempt > 0) {
-- // Increment the time between connection attempts
-- if (last_gpsd_reconnect + ((gpsd_reconnect_attempt - 1) * 2) < time(0)) {
-- if (gps->OpenGPSD() < 0) {
-- last_gpsd_reconnect = time(0);
--
-- if (gpsd_reconnect_attempt < 20)
-- gpsd_reconnect_attempt++;
--
-- snprintf(status, STATUS_MAX, "Unable to reconnect to GPSD, trying "
-- "again in %d seconds.", ((gpsd_reconnect_attempt - 1) * 2));
--
-- if (!silent || NetWriteStatus(status) == 0)
-- fprintf(stderr, "WARNING: %s\n", status);
--
-- return 1;
-- } else {
-- gpsd_reconnect_attempt = 0;
--
-- snprintf(status, STATUS_MAX, "Reopened connection to GPSD");
-- if (!silent || NetWriteStatus(status) == 0)
-- fprintf(stderr, "NOTICE: %s\n", status);
-- }
-- } else {
-- // Don't process more if we haven't woken up yet
-- return 1;
-- }
--
-- }
--
-- if (gps_enable) {
-- int gpsret;
-- gpsret = gps->Scan();
--
-- if (gpsret < 0) {
-- snprintf(status, STATUS_MAX, "GPS error requesting data: %s",
-- gps->FetchError());
--
-- if (!silent || NetWriteStatus(status) == 0)
-- fprintf(stderr, "WARNING: %s\n", status);
--
-- gpsd_reconnect_attempt = 1;
-- }
--
-- if (gpsret == 0 && gpsmode != 0) {
-- if (!silent || NetWriteStatus("Lost GPS signal.") == 0)
-- fprintf(stderr, "Lost GPS signal.\n");
-- if (sound == 1)
-- sound = PlaySound("gpslost");
--
-- gpsmode = 0;
-- } else if (gpsret != 0 && gpsmode == 0) {
-- if (!silent || NetWriteStatus("Acquired GPS signal.") == 0)
-- fprintf(stderr, "Acquired GPS signal.\n");
-- if (sound == 1)
-- sound = PlaySound("gpslock");
--
-- gpsmode = 1;
-- }
-- }
--
-- if (gps_log == 1 && gpsmode != 0 && gps != NULL) {
-- gpsdump.DumpTrack(gps);
-- }
--
-- // We want to be rescheduled
-- return 1;
--}
-
- // Simple redirect to the network info drawer. We don't want to change netwriteinfo to a
- // timer event since we call it un-timed too
-@@ -885,13 +519,6 @@
- return 1;
- }
-
--// Write the waypoints for gpsdrive
--int WaypointSyncEvent(Timetracker::timer_event *evt, void *parm) {
-- tracker.WriteGpsdriveWaypt(waypoint_file);
--
-- return 1;
--}
--
- // Handle tracker maintenance
- int TrackerTickEvent(Timetracker::timer_event *evt, void *parm) {
- tracker.Tick();
-@@ -1160,11 +787,9 @@
- " -c, --capture-source <src> Packet capture source line (type,interface,name)\n"
- " -C, --enable-capture-sources Comma separated list of named packet sources to use.\n"
- " -l, --log-types <types> Comma separated list of types to log,\n"
-- " (ie, dump,cisco,weak,network,gps)\n"
-+ " (ie, dump,cisco,weak,network)\n"
- " -d, --dump-type <type> Dumpfile type (wiretap)\n"
- " -m, --max-packets <num> Maximum number of packets before starting new dump\n"
-- " -q, --quiet Don't play sounds\n"
-- " -g, --gps <host:port> GPS server (host:port or off)\n"
- " -p, --port <port> TCPIP server port for GUI connections\n"
- " -a, --allowed-hosts <hosts> Comma separated list of hosts allowed to connect\n"
- " -b, --bind-address <address> Bind to this address. Default INADDR_ANY\n."
-@@ -1289,23 +914,6 @@
- ip_track = 1;
- }
-
--
-- if (conf->FetchOpt("waypoints") == "true") {
-- if(conf->FetchOpt("waypointdata") == "") {
-- fprintf(stderr, "WARNING: Waypoint logging requested but no waypoint data file given.\n"
-- "Waypoint logging will be disabled.\n");
-- waypoint = 0;
-- } else {
-- waypointfile = conf->ExpandLogPath(conf->FetchOpt("waypointdata"), "", "", 0, 1);
-- waypoint = 1;
-- }
-- if(conf->FetchOpt("waypoint_essid") == "true") {
-- waypointformat = 1;
-- } else {
-- waypointformat = 0;
-- }
-- }
--
- if (conf->FetchOpt("metric") == "true") {
- fprintf(stderr, "Using metric measurements.\n");
- metric = 1;
-@@ -1423,26 +1031,6 @@
- }
-
- }
--
-- if (strstr(logtypes, "gps")) {
-- if (gps_log == 0) {
-- fprintf(stderr, "WARNING: Disabling GPS logging.\n");
-- } else {
-- gps_log = 1;
--
-- if (conf->FetchOpt("logtemplate") == "") {
-- fprintf(stderr, "FATAL: Logging (gps coordinates) enabled but no logtemplate given in config.\n");
-- ErrorShutdown();
-- }
-- }
--
-- }
--
-- if (gps_log == 1 && !net_log) {
-- fprintf(stderr, "WARNING: Logging (gps coordinates) enabled but XML logging (networks) was not.\n"
-- "It will be enabled now.\n");
-- xml_log = 1;
-- }
- }
-
- if (conf->FetchOpt("decay") != "") {
-@@ -1563,72 +1151,6 @@
- legal_ipblock_vec.push_back(ipb);
- }
-
-- // Process sound stuff
-- if (conf->FetchOpt("sound") == "true" && sound == -1) {
-- if (conf->FetchOpt("soundplay") != "") {
-- sndplay = conf->FetchOpt("soundplay");
--
-- if (conf->FetchOpt("soundopts") != "")
-- sndplay += " " + conf->FetchOpt("soundopts");
--
-- sound = 1;
--
-- if (conf->FetchOpt("sound_new") != "")
-- wav_map["new"] = conf->FetchOpt("sound_new");
-- if (conf->FetchOpt("sound_new_wep") != "")
-- wav_map["new_wep"] = conf->FetchOpt("sound_new_wep");
-- if (conf->FetchOpt("sound_traffic") != "")
-- wav_map["traffic"] = conf->FetchOpt("sound_traffic");
-- if (conf->FetchOpt("sound_junktraffic") != "")
-- wav_map["junktraffic"] = conf->FetchOpt("sound_traffic");
-- if (conf->FetchOpt("sound_gpslock") != "")
-- wav_map["gpslock"] = conf->FetchOpt("sound_gpslock");
-- if (conf->FetchOpt("sound_gpslost") != "")
-- wav_map["gpslost"] = conf->FetchOpt("sound_gpslost");
-- if (conf->FetchOpt("sound_alert") != "")
-- wav_map["alert"] = conf->FetchOpt("sound_alert");
--
-- } else {
-- fprintf(stderr, "ERROR: Sound alerts enabled but no sound playing binary specified.\n");
-- sound = 0;
-- }
-- } else if (sound == -1)
-- sound = 0;
--
-- /* Added by Shaw Innes 17/2/02 */
-- /* Modified by Andrew Etter 15/9/02 */
-- if (conf->FetchOpt("speech") == "true" && speech == -1) {
-- if (conf->FetchOpt("festival") != "") {
-- festival = strdup(conf->FetchOpt("festival").c_str());
-- speech = 1;
--
-- if (conf->FetchOpt("flite") == "true")
-- flite = 1;
--
-- string speechtype = conf->FetchOpt("speech_type");
--
-- if (!strcasecmp(speechtype.c_str(), "nato"))
-- speech_encoding = SPEECH_ENCODING_NATO;
-- else if (!strcasecmp(speechtype.c_str(), "spell"))
-- speech_encoding = SPEECH_ENCODING_SPELL;
-- else
-- speech_encoding = SPEECH_ENCODING_NORMAL;
--
-- // Make sure we have encrypted text lines
-- if (conf->FetchOpt("speech_encrypted") == "" || conf->FetchOpt("speech_unencrypted") == "") {
-- fprintf(stderr, "ERROR: Speech request but speech_encrypted or speech_unencrypted line missing.\n");
-- speech = 0;
-- }
--
-- speech_sentence_encrypted = conf->FetchOpt("speech_encrypted");
-- speech_sentence_unencrypted = conf->FetchOpt("speech_unencrypted");
-- } else {
-- fprintf(stderr, "ERROR: Speech alerts enabled but no path to festival has been specified.\n");
-- speech = 0;
-- }
-- } else if (speech == -1)
-- speech = 0;
--
- if (conf->FetchOpt("writeinterval") != "") {
- if (sscanf(conf->FetchOpt("writeinterval").c_str(), "%d", &datainterval) != 1) {
- fprintf(stderr, "FATAL: Illegal config file value for data interval.\n");
-@@ -1648,45 +1170,6 @@
- fprintf(stderr, "WARNING: No client_manuf file specified. Client manufacturers will not be detected.\n");
- }
-
-- // Fork and find the sound options
-- if (sound) {
-- if (pipe(soundpair) == -1) {
-- fprintf(stderr, "WARNING: Unable to create pipe for audio. Disabling sound.\n");
-- sound = 0;
-- } else {
-- soundpid = fork();
--
-- if (soundpid < 0) {
-- fprintf(stderr, "WARNING: Unable to fork for audio. Disabling sound.\n");
-- sound = 0;
-- } else if (soundpid == 0) {
-- SoundHandler(soundpair, sndplay.c_str(), wav_map);
-- exit(0);
-- }
--
-- close(soundpair[0]);
-- }
-- }
--
-- if (speech) {
-- if (pipe(speechpair) == -1) {
-- fprintf(stderr, "WARNING: Unable to create pipe for speech. Disabling speech.\n");
-- speech = 0;
-- } else {
-- speechpid = fork();
--
-- if (speechpid < 0) {
-- fprintf(stderr, "WARNING: Unable to fork for speech. Disabling speech.\n");
-- speech = 0;
-- } else if (speechpid == 0) {
-- SpeechHandler(speechpair, festival);
-- exit(0);
-- }
--
-- close(speechpair[0]);
-- }
-- }
--
- // Grab the filtering
- string filter_bit;
-
-@@ -1712,7 +1195,7 @@
- }
-
- if ((filter_bit = conf->FetchOpt("filter_export")) != "") {
-- fprintf(stderr, "Enabling filtering on exported (csv, xml, network, gps) files.\n");
-+ fprintf(stderr, "Enabling filtering on exported (csv, xml, network) files.\n");
- filter_export = 1;
- if (ConfigFile::ParseFilterLine(filter_bit, &filter_export_bssid, &filter_export_source,
- &filter_export_dest, &filter_export_bssid_invert,
-@@ -1818,14 +1301,6 @@
-
- }
-
-- if (waypoint) {
-- if ((waypoint_file = fopen(waypointfile.c_str(), "a")) == NULL) {
-- fprintf(stderr, "WARNING: Could not open waypoint file '%s' for writing: %s\n",
-- waypointfile.c_str(), strerror(errno));
-- waypoint = 0;
-- }
-- }
--
- // Create all the logs and title/number them appropriately
- // We need to save this for after we toast the conf record
- int logfile_matched = 0;
-@@ -1873,13 +1348,6 @@
- continue;
- }
-
-- if (gps_log == 1) {
-- gpslogfile = conf->ExpandLogPath(conf->FetchOpt("logtemplate"), logname, "gps", run_num);
--
-- if (gpslogfile == "")
-- continue;
-- }
--
- // if we made it this far we're cool -- all the logfiles we're writing to matched
- // this number
- logfile_matched = 1;
-@@ -1908,9 +1376,6 @@
- if (cisco_log)
- fprintf(stderr, "Logging cisco product information to %s\n", ciscologfile.c_str());
-
-- if (gps_log == 1)
-- fprintf(stderr, "Logging gps coordinates to %s\n", gpslogfile.c_str());
--
- if (data_log)
- fprintf(stderr, "Logging data to %s\n", dumplogfile.c_str());
-
-@@ -2058,7 +1523,6 @@
- { "dump-type", required_argument, 0, 'd' },
- { "max-packets", required_argument, 0, 'm' },
- { "quiet", no_argument, 0, 'q' },
-- { "gps", required_argument, 0, 'g' },
- { "port", required_argument, 0, 'p' },
- { "allowed-hosts", required_argument, 0, 'a' },
- { "bind-address", required_argument, 0, 'b'},
-@@ -2140,18 +1604,6 @@
- Usage(argv[0]);
- }
- break;
-- case 'g':
-- // GPS
-- if (strcmp(optarg, "off") == 0) {
-- gps_enable = 0;
-- }
-- else if (sscanf(optarg, "%1023[^:]:%d", gpshost, &gpsport) < 2) {
-- fprintf(stderr, "Invalid GPS host '%s' (host:port or off required)\n",
-- optarg);
-- gps_enable = 1;
-- Usage(argv[0]);
-- }
-- break;
- case 'p':
- // Port
- if (sscanf(optarg, "%d", &tcpport) != 1) {
-@@ -2173,7 +1625,6 @@
- break;
- case 'q':
- // Quiet
-- sound = 0;
- break;
- case 'v':
- // version
-@@ -2331,39 +1782,6 @@
- // And we're done
- fclose(pid_file);
-
--
-- // Set up the GPS object to give to the children
-- if (gpsport == -1 && gps_enable) {
-- if (conf->FetchOpt("gps") == "true") {
-- if (sscanf(conf->FetchOpt("gpshost").c_str(), "%1023[^:]:%d", gpshost,
-- &gpsport) != 2) {
-- fprintf(stderr, "Invalid GPS host in config (host:port required)\n");
-- exit(1);
-- }
--
-- gps_enable = 1;
-- } else {
-- gps_enable = 0;
-- gps_log = 0;
-- }
-- }
--
-- if (gps_enable == 1) {
-- gps = new GPSD(gpshost, gpsport);
--
-- // Lock GPS position
-- if (conf->FetchOpt("gpsmodelock") == "true") {
-- fprintf(stderr, "Enabling GPS position lock override (broken GPS unit "
-- "reports 0 always)\n");
-- gps->SetOptions(GPSD_OPT_FORCEMODE);
-- }
--
-- } else {
-- gps_log = 0;
-- }
--
-- // Register the gps and timetracker with the sourcetracker
-- sourcetracker.AddGpstracker(gps);
- sourcetracker.AddTimetracker(&timetracker);
-
- // Handle errors here maybe in the future
-@@ -2530,13 +1948,6 @@
- fprintf(stderr, "Dump file format: %s\n", dumpfile->FetchType());
- }
-
-- if (gps_enable && gps_log == 1) {
-- if (gpsdump.OpenDump(gpslogfile.c_str(), xmllogfile.c_str()) < 0) {
-- fprintf(stderr, "FATAL: GPS dump error: %s\n", gpsdump.FetchError());
-- ErrorShutdown();
-- }
-- }
--
- // Open our files first to make sure we can, we'll unlink the empties later.
- FILE *testfile = NULL;
- if (net_log) {
-@@ -2608,14 +2019,13 @@
- */
-
- if (data_log || net_log || crypt_log) {
-- snprintf(status, STATUS_MAX, "Logging%s%s%s%s%s%s%s",
-+ snprintf(status, STATUS_MAX, "Logging%s%s%s%s%s%s",
- data_log ? " data" : "" ,
- net_log ? " networks" : "" ,
- csv_log ? " CSV" : "" ,
- xml_log ? " XML" : "" ,
- crypt_log ? " weak" : "",
-- cisco_log ? " cisco" : "",
-- gps_log == 1 ? " gps" : "");
-+ cisco_log ? " cisco" : "");
- fprintf(stderr, "%s\n", status);
- } else if (no_log) {
- snprintf(status, STATUS_MAX, "Not logging any data.");
-@@ -2633,23 +2043,6 @@
- }
- }
-
-- if (gps_enable) {
-- // Open the GPS
-- if (gps->OpenGPSD() < 0) {
-- fprintf(stderr, "%s\n", gps->FetchError());
--
-- gps_enable = 0;
-- gps_log = 0;
-- } else {
-- fprintf(stderr, "Opened GPS connection to %s port %d\n",
-- gpshost, gpsport);
--
-- gpsmode = gps->FetchMode();
--
-- last_gpsd_reconnect = time(0);
-- }
-- }
--
- fprintf(stderr, "Listening on port %d.\n", tcpport);
- for (unsigned int ipvi = 0; ipvi < legal_ipblock_vec.size(); ipvi++) {
- char *netaddr = strdup(inet_ntoa(legal_ipblock_vec[ipvi]->network));
-@@ -2690,8 +2083,6 @@
- &Protocol_NETWORK, &ProtocolNetworkEnable);
- client_ref = ui_server.RegisterProtocol("CLIENT", 0, CLIENT_fields_text,
- &Protocol_CLIENT, &ProtocolClientEnable);
-- gps_ref = ui_server.RegisterProtocol("GPS", 0, GPS_fields_text,
-- &Protocol_GPS, NULL);
- info_ref = ui_server.RegisterProtocol("INFO", 0, INFO_fields_text,
- &Protocol_INFO, NULL);
- remove_ref = ui_server.RegisterProtocol("REMOVE", 0, REMOVE_fields_text,
-@@ -2746,14 +2137,9 @@
- // Write network info and tick the tracker once per second
- timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &NetWriteEvent, NULL);
- timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &TrackerTickEvent, NULL);
-- // Update GPS coordinates and handle signal loss if defined
-- timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &GpsEvent, NULL);
- // Sync the data files if requested
- if (datainterval > 0 && no_log == 0)
- timetracker.RegisterTimer(datainterval * SERVER_TIMESLICES_SEC, NULL, 1, &ExportSyncEvent, NULL);
-- // Write waypoints if requested
-- if (waypoint)
-- timetracker.RegisterTimer(decay * SERVER_TIMESLICES_SEC, NULL, 1, &WaypointSyncEvent, NULL);
- // Channel hop if requested
- if (channel_hop) {
- if (channel_dwell)
-@@ -2777,7 +2163,6 @@
- snprintf(status, 1024, "%s", TIMESTAMP);
- kdata.timestamp = status;
-
-- time_t last_click = 0;
- int num_networks = 0, num_packets = 0, num_noise = 0, num_dropped = 0;
-
-
-@@ -2926,54 +2311,13 @@
-
- }
-
-- if (gps_log == 1 && info.type != packet_noise &&
-- info.type != packet_unknown && info.type != packet_phy &&
-- info.corrupt == 0) {
-- if (gpsdump.DumpPacket(&info) < 0) {
-- snprintf(status, STATUS_MAX, "%s", gpsdump.FetchError());
-- if (!silent || NetWriteStatus(status) == 0)
-- fprintf(stderr, "%s\n", status);
-- }
-- }
--
- // tracker.ProcessPacket(info);
- tracker.ProcessPacket(&packet, &info, &bssid_wep_map,
- wep_identity);
-
-- if (tracker.FetchNumNetworks() > num_networks) {
-- if (sound == 1)
-- if (info.crypt_set &&
-- wav_map.find("new_wep") != wav_map.end())
-- sound = PlaySound("new_wep");
-- else
-- sound = PlaySound("new");
-- if (speech == 1) {
-- string text;
--
-- if (info.crypt_set)
-- text = ExpandSpeechString(speech_sentence_encrypted, &info,
-- speech_encoding);
-- else
-- text = ExpandSpeechString(speech_sentence_unencrypted,
-- &info, speech_encoding);
--
-- speech = SayText(MungeToShell(text).c_str());
-- }
-- }
- num_networks = tracker.FetchNumNetworks();
-
- if (tracker.FetchNumPackets() != num_packets) {
-- if (cur_time - last_click >= decay && sound == 1) {
-- if (tracker.FetchNumPackets() - num_packets >
-- tracker.FetchNumDropped() + localdropnum - num_dropped) {
-- sound = PlaySound("traffic");
-- } else {
-- sound = PlaySound("junktraffic");
-- }
--
-- last_click = cur_time;
-- }
--
- num_packets = tracker.FetchNumPackets();
- num_noise = tracker.FetchNumNoise();
- num_dropped = tracker.FetchNumDropped() + localdropnum;
-diff -urN kismet.dev/kismet_server.h kismet.dev2/kismet_server.h
---- kismet.dev/kismet_server.h 2004-03-07 22:28:01.000000000 +0100
-+++ kismet.dev2/kismet_server.h 2006-04-14 19:31:55.000000000 +0200
-@@ -33,10 +33,6 @@
- void handle_command(TcpServer *tcps, client_command *cc);
- int NetWriteStatus(const char *in_status);
- void NetWriteInfo();
--int SayText(string in_text);
--int PlaySound(string in_sound);
--void SpeechHandler(int *fds, const char *player);
--void SoundHandler(int *fds, const char *player, map<string, string> soundmap);
- void ProtocolAlertEnable(int in_fd);
- void ProtocolNetworkEnable(int in_fd);
- void ProtocolClientEnable(int in_fd);
-diff -urN kismet.dev/kis_packsources.cc kismet.dev2/kis_packsources.cc
---- kismet.dev/kis_packsources.cc 2006-04-14 23:43:01.694817572 +0200
-+++ kismet.dev2/kis_packsources.cc 2006-04-14 20:21:12.000000000 +0200
-@@ -64,13 +64,8 @@
- pcapsource_11g_registrant,
- monitor_wext, unmonitor_wext,
- chancontrol_wext, 1);
-- sourcetracker->RegisterPacketsource("cisco", 1, "IEEE80211b", 6,
-- pcapsource_wext_registrant,
-- monitor_cisco, unmonitor_cisco,
-- chancontrol_wext, 1);
-- sourcetracker->RegisterPacketsource("cisco_wifix", 1, "IEEE80211b", 6,
-- pcapsource_ciscowifix_registrant,
-- monitor_cisco_wifix, NULL, NULL, 1);
-+ REG_EMPTY_CARD(sourcetracker, "cisco");
-+ REG_EMPTY_CARD(sourcetracker, "cisco_wifix");
- sourcetracker->RegisterPacketsource("hostap", 1, "IEEE80211b", 6,
- pcapsource_wext_registrant,
- monitor_hostap, unmonitor_hostap,
-@@ -83,21 +78,10 @@
- pcapsource_wext_registrant,
- monitor_orinoco, unmonitor_orinoco,
- chancontrol_orinoco, 1);
-- sourcetracker->RegisterPacketsource("acx100", 1, "IEEE80211b", 6,
-- pcapsource_wext_registrant,
-- monitor_acx100, unmonitor_acx100,
-- chancontrol_wext, 1);
-- sourcetracker->RegisterPacketsource("admtek", 1, "IEEE80211b", 6,
-- pcapsource_wext_registrant,
-- monitor_admtek, unmonitor_admtek,
-- chancontrol_wext, 1);
-- sourcetracker->RegisterPacketsource("vtar5k", 1, "IEEE80211a", 36,
-- pcapsource_wext_registrant,
-- monitor_vtar5k, NULL, chancontrol_wext, 1);
-- sourcetracker->RegisterPacketsource("atmel_usb", 1, "IEEE80211b", 6,
-- pcapsource_wext_registrant,
-- monitor_wext, unmonitor_wext,
-- chancontrol_wext, 1);
-+ REG_EMPTY_CARD(sourcetracker, "acx100");
-+ REG_EMPTY_CARD(sourcetracker, "admtek");
-+ REG_EMPTY_CARD(sourcetracker, "vtar5k");
-+ REG_EMPTY_CARD(sourcetracker, "atmel_usb");
-
- sourcetracker->RegisterPacketsource("madwifi_a", 1, "IEEE80211a", 36,
- pcapsource_wextfcs_registrant,
-@@ -146,50 +130,17 @@
- monitor_prism54g, unmonitor_prism54g,
- chancontrol_prism54g, 1);
-
-- sourcetracker->RegisterPacketsource("wlanng_wext", 1, "IEEE80211b", 6,
-- pcapsource_wlanng_registrant,
-- monitor_wlanng_avs, NULL,
-- chancontrol_wext, 1);
--
-- sourcetracker->RegisterPacketsource("ipw2100", 1, "IEEE80211b", 6,
-- pcapsource_wext_registrant,
-- monitor_ipw2100, unmonitor_ipw2100,
-- chancontrol_ipw2100, 1);
--
-- sourcetracker->RegisterPacketsource("ipw2200", 1, "IEEE80211g", 6,
-- pcapsource_wext_registrant,
-- monitor_ipw2200, unmonitor_ipw2200,
-- chancontrol_ipw2200, 1);
--
-- sourcetracker->RegisterPacketsource("ipw2915", 1, "IEEE80211ab", 6,
-- pcapsource_wext_registrant,
-- monitor_ipw2200, unmonitor_ipw2200,
-- chancontrol_ipw2200, 1);
--
-- sourcetracker->RegisterPacketsource("ipw3945", 1, "IEEE80211ab", 6,
-- pcapsource_wext_registrant,
-- monitor_ipw3945, unmonitor_ipw3945,
-- chancontrol_ipw2200, 1);
--
-- sourcetracker->RegisterPacketsource("ipwlivetap", 1, "IEEE80211b", 0,
-- pcapsource_wext_registrant,
-- monitor_ipwlivetap,
-- unmonitor_ipwlivetap,
-- NULL, 1);
--
-- sourcetracker->RegisterPacketsource("rt2400", 1, "IEEE80211b", 6,
-- pcapsource_wext_registrant,
-- monitor_wext, unmonitor_wext,
-- chancontrol_wext, 1);
-- sourcetracker->RegisterPacketsource("rt2500", 1, "IEEE80211g", 6,
-- pcapsource_11g_registrant,
-- monitor_wext, unmonitor_wext,
-- chancontrol_wext, 1);
-- sourcetracker->RegisterPacketsource("rt8180", 1, "IEEE80211b", 6,
-- pcapsource_wext_registrant,
-- monitor_wext, unmonitor_wext,
-- chancontrol_wext, 1);
-+ REG_EMPTY_CARD(sourcetracker, "wlanng_wext");
-+ REG_EMPTY_CARD(sourcetracker, "ipw2100");
-+ REG_EMPTY_CARD(sourcetracker, "ipw2200");
-+ REG_EMPTY_CARD(sourcetracker, "ipw2915");
-+ REG_EMPTY_CARD(sourcetracker, "ipw3945");
-+ REG_EMPTY_CARD(sourcetracker, "ipwlivetap");
-
-+ REG_EMPTY_CARD(sourcetracker, "rt2400");
-+ REG_EMPTY_CARD(sourcetracker, "rt2500");
-+ REG_EMPTY_CARD(sourcetracker, "rt8180");
-+
- sourcetracker->RegisterPacketsource("zd1211", 1, "IEEE80211g", 6,
- pcapsource_wext_registrant,
- monitor_wext, unmonitor_wext,
-@@ -233,31 +184,13 @@
- REG_EMPTY_CARD(sourcetracker, "zd1211");
- #endif
-
--#if defined(HAVE_LIBPCAP) && defined(SYS_LINUX)
-- sourcetracker->RegisterPacketsource("wlanng", 1, "IEEE80211b", 6,
-- pcapsource_wlanng_registrant,
-- monitor_wlanng, NULL, chancontrol_wlanng, 1);
-- sourcetracker->RegisterPacketsource("wlanng_avs", 1, "IEEE80211b", 6,
-- pcapsource_wlanng_registrant,
-- monitor_wlanng_avs, NULL,
-- chancontrol_wlanng_avs, 1);
- sourcetracker->RegisterPacketsource("wrt54g", 1, "na", 0,
- pcapsource_wrt54g_registrant,
-- monitor_wrt54g, unmonitor_wrt54g, chancontrol_wext, 0);
--#else
-+ monitor_wrt54g, unmonitor_wrt54g, chancontrol_wext, 0);
-+
- REG_EMPTY_CARD(sourcetracker, "wlanng");
- REG_EMPTY_CARD(sourcetracker, "wlanng_avs");
-- REG_EMPTY_CARD(sourcetracker, "wrt54g");
--#endif
--
--#if defined(SYS_LINUX) && defined(HAVE_LINUX_NETLINK)
-- sourcetracker->RegisterPacketsource("wlanng_legacy", 1, "IEEE80211b", 6,
-- prism2source_registrant,
-- monitor_wlanng_legacy, NULL,
-- chancontrol_wlanng_legacy, 1);
--#else
- REG_EMPTY_CARD(sourcetracker, "wlanng_legacy");
--#endif
-
- #if defined(HAVE_LIBPCAP) && defined(SYS_OPENBSD)
- sourcetracker->RegisterPacketsource("cisco_openbsd", 1, "IEEE80211b", 6,
-@@ -291,29 +224,11 @@
- REG_EMPTY_CARD(sourcetracker, "radiotap_bsd_b");
- #endif
-
--#if defined(HAVE_LIBWIRETAP)
-- sourcetracker->RegisterPacketsource("wtapfile", 0, "na", 0,
-- wtapfilesource_registrant,
-- NULL, NULL, NULL, 0);
--#else
- REG_EMPTY_CARD(sourcetracker, "wtapfile");
--#endif
-
--#if defined(HAVE_WSP100)
-- sourcetracker->RegisterPacketsource("wsp100", 0, "IEEE80211b", 6,
-- wsp100source_registrant,
-- monitor_wsp100, NULL, chancontrol_wsp100, 0);
--#else
- REG_EMPTY_CARD(sourcetracker, "wsp100");
--#endif
-
--#if defined(HAVE_VIHAHEADERS)
-- sourcetracker->RegisterPacketsource("viha", 1, "IEEE80211b", 6,
-- vihasource_registrant,
-- NULL, NULL, chancontrol_viha, 0);
--#else
- REG_EMPTY_CARD(sourcetracker, "viha");
--#endif
-
- return 1;
- }
-diff -urN kismet.dev/kis_packsources.h kismet.dev2/kis_packsources.h
---- kismet.dev/kis_packsources.h 2004-06-09 21:09:29.000000000 +0200
-+++ kismet.dev2/kis_packsources.h 2006-04-14 19:31:55.000000000 +0200
-@@ -22,11 +22,7 @@
- #include "config.h"
-
- #include "packetsource.h"
--#include "prism2source.h"
- #include "pcapsource.h"
--#include "wtapfilesource.h"
--#include "wsp100source.h"
--#include "vihasource.h"
- #include "dronesource.h"
- #include "packetsourcetracker.h"
-
-diff -urN kismet.dev/Makefile.in kismet.dev2/Makefile.in
---- kismet.dev/Makefile.in 2006-04-13 00:49:15.000000000 +0200
-+++ kismet.dev2/Makefile.in 2006-04-14 19:31:55.000000000 +0200
-@@ -39,26 +39,25 @@
- DEPEND = .depend
-
- # Objects
--PSO = util.o ringbuf.o configfile.o speech.o ifcontrol.o iwcontrol.o packet.o \
-- pcapsource.o prism2source.o wtapfilesource.o wsp100source.o \
-- dronesource.o vihasource.o packetsourcetracker.o kis_packsources.o \
-- wtapdump.o wtaplocaldump.o gpsdump.o airsnortdump.o fifodump.o \
-- gpsd.o manuf.o \
-+PSO = util.o ringbuf.o configfile.o ifcontrol.o iwcontrol.o packet.o \
-+ pcapsource.o manuf.o \
-+ dronesource.o packetsourcetracker.o kis_packsources.o \
-+ wtapdump.o wtaplocaldump.o airsnortdump.o fifodump.o \
- packetracker.o timetracker.o alertracker.o finitestate.o \
- getopt.o \
- tcpserver.o server_protocols.o server_globals.o kismet_server.o
- PS = kismet_server
-
- DRONEO = util.o ringbuf.o configfile.o getopt.o ifcontrol.o iwcontrol.o packet.o \
-- tcpstreamer.o prism2source.o pcapsource.o wtapfilesource.o wsp100source.o \
-- dronesource.o vihasource.o packetsourcetracker.o kis_packsources.o \
-- timetracker.o gpsd.o server_globals.o kismet_drone.o
-+ tcpstreamer.o pcapsource.o \
-+ dronesource.o packetsourcetracker.o kis_packsources.o \
-+ timetracker.o server_globals.o kismet_drone.o
- DRONE = kismet_drone
-
--NCO = util.o configfile.o speech.o manuf.o tcpclient.o \
-+NCO = util.o configfile.o manuf.o tcpclient.o \
- frontend.o cursesfront.o \
- panelfront.o panelfront_display.o panelfront_input.o \
-- gpsd.o getopt.o kismet_client.o
-+ getopt.o kismet_client.o
- NC = kismet_client
-
- GPSLO = getopt.o util.o configfile.o expat.o manuf.o \
-diff -urN kismet.dev/packetracker.cc kismet.dev2/packetracker.cc
---- kismet.dev/packetracker.cc 2006-04-01 18:37:07.000000000 +0200
-+++ kismet.dev2/packetracker.cc 2006-04-14 19:31:55.000000000 +0200
-@@ -2443,23 +2443,3 @@
-
- }
-
--// Write a gpsdrive compatable waypoint file
--int Packetracker::WriteGpsdriveWaypt(FILE *in_file) {
-- fseek(in_file, 0L, SEEK_SET);
-- ftruncate(fileno(in_file), 0);
--
-- // Convert the map to a vector and sort it
-- for (map<mac_addr, wireless_network *>::const_iterator i = bssid_map.begin();
-- i != bssid_map.end(); ++i) {
-- wireless_network *net = i->second;
--
-- float lat, lon;
-- lat = (net->min_lat + net->max_lat) / 2;
-- lon = (net->min_lon + net->max_lon) / 2;
-- fprintf(in_file, "%s\t%f %f\n", waypointformat == 1 ? net->ssid.c_str() : net->bssid.Mac2String().c_str(), lat, lon);
-- }
--
-- fflush(in_file);
--
-- return 1;
--}
-diff -urN kismet.dev/packetracker.h kismet.dev2/packetracker.h
---- kismet.dev/packetracker.h 2005-06-01 05:46:18.000000000 +0200
-+++ kismet.dev2/packetracker.h 2006-04-14 19:31:55.000000000 +0200
-@@ -30,7 +30,6 @@
- #include <string>
-
- #include "util.h"
--#include "gpsd.h"
- #include "packet.h"
- #include "tracktypes.h"
- #include "manuf.h"
-@@ -85,8 +84,6 @@
- int WriteXMLNetworks(string in_fname);
- int WriteCisco(string in_fname);
-
-- int WriteGpsdriveWaypt(FILE *in_file);
--
- void WriteSSIDMap(FILE *in_file);
- void ReadSSIDMap(FILE *in_file);
-
-diff -urN kismet.dev/packetsourcetracker.cc kismet.dev2/packetsourcetracker.cc
---- kismet.dev/packetsourcetracker.cc 2006-04-14 23:43:01.695817542 +0200
-+++ kismet.dev2/packetsourcetracker.cc 2006-04-14 19:31:55.000000000 +0200
-@@ -27,7 +27,6 @@
- Packetsourcetracker::Packetsourcetracker() {
- next_packsource_id = 0;
- next_meta_id = 0;
-- gpsd = NULL;
- timetracker = NULL;
- chanchild_pid = 0;
- sockpair[0] = sockpair[1] = 0;
-@@ -694,7 +693,6 @@
-
- // Register the trackers with it
- meta->capsource->AddTimetracker(timetracker);
-- meta->capsource->AddGpstracker(gpsd);
-
- // Open it
- fprintf(stderr, "Source %d (%s): Opening %s source interface %s...\n",
-diff -urN kismet.dev/packetsourcetracker.h kismet.dev2/packetsourcetracker.h
---- kismet.dev/packetsourcetracker.h 2005-03-21 20:47:26.000000000 +0100
-+++ kismet.dev2/packetsourcetracker.h 2006-04-14 19:31:55.000000000 +0200
-@@ -30,7 +30,6 @@
- #include <string>
-
- #include "timetracker.h"
--#include "gpsd.h"
- #include "packetsource.h"
-
- // Sentinel for starting a new packet
-@@ -144,9 +143,6 @@
- // Register a timer event handler for us to use
- void AddTimetracker(Timetracker *in_tracker) { timetracker = in_tracker; }
-
-- // Register the GPS server for us to use
-- void AddGpstracker(GPSD *in_gpsd) { gpsd = in_gpsd; }
--
- // Register a packet prototype source... Card type string, root binding requirement,
- // function to generate an instance of the source, and function to change channel
- // for this card type. This fills out the prototype. Sources that don't hop
-@@ -221,7 +217,6 @@
- uint16_t channel;
- } chanchild_changepacket;
-
-- GPSD *gpsd;
- Timetracker *timetracker;
-
- char errstr[1024];
-diff -urN kismet.dev/panelfront.cc kismet.dev2/panelfront.cc
---- kismet.dev/panelfront.cc 2005-06-29 20:04:43.000000000 +0200
-+++ kismet.dev2/panelfront.cc 2006-04-14 19:31:55.000000000 +0200
-@@ -37,7 +37,6 @@
- " Key Action",
- " e List Kismet servers",
- " z Toggle fullscreen zoom of network view",
-- " m Toggle muting of sound and speech",
- " t Tag (or untag) selected network",
- " g Group tagged networks",
- " u Ungroup current group",
-@@ -121,7 +120,6 @@
- "Key Action",
- " e List Kismet servers",
- " z Toggle fullscreen net list",
-- " m Toggle muting",
- " t Tag (or untag) selected",
- " g Group tagged networks",
- " u Ungroup current group",
-@@ -237,19 +235,6 @@
- };
-
-
--char *KismetHelpGps[] = {
-- "KISMET NETWORK FOLLOW",
-- "This panel estimates the center of a network, the current",
-- "direction of travel, and the direction of the network center",
-- "and distance relative to the current direction of movement.",
-- " Key Action",
-- " s Follow location of strongest packet",
-- " c Follow location of estimated network center",
-- " q Close popup",
-- NULL
--};
--
--
- char *KismetHelpStats[] = {
- "KISMET NETWORK STATISTICS",
- "This panel displays overall statistics about the wireless",
-@@ -678,7 +663,6 @@
- }
-
- // Enable all the protocols we handle
-- in_client->EnableProtocol("GPS");
- in_client->EnableProtocol("INFO");
- in_client->EnableProtocol("REMOVE");
- in_client->EnableProtocol("NETWORK");
-@@ -1282,27 +1266,6 @@
- if (con->client == NULL)
- continue;
-
-- // Update GPS
-- float newlat, newlon, newalt, newspd, newheading;
-- int newfix;
-- con->client->FetchLoc(&newlat, &newlon, &newalt, &newspd, &newheading, &newfix);
--
-- if (GPSD::EarthDistance(newlat, newlon, last_lat, last_lon) > 10) {
-- con->last_lat = con->lat;
-- con->last_lon = con->lon;
-- con->last_spd = con->spd;
-- con->last_alt = con->alt;
-- con->last_fix = con->fix;
-- con->last_heading = con->heading;
-- }
--
-- con->lat = newlat;
-- con->lon = newlon;
-- con->alt = newalt;
-- con->spd = newspd;
-- con->heading = newheading;
-- con->fix = newfix;
--
- // Update quality
- con->quality = con->client->FetchQuality();
- con->power = con->client->FetchPower();
-diff -urN kismet.dev/panelfront_display.cc kismet.dev2/panelfront_display.cc
---- kismet.dev/panelfront_display.cc 2005-08-15 17:52:16.000000000 +0200
-+++ kismet.dev2/panelfront_display.cc 2006-04-14 19:31:55.000000000 +0200
-@@ -727,7 +727,7 @@
- mvwaddstr(netwin, netwin->_maxy, netwin->_maxx - 14, ptxt);
- }
-
--#ifdef HAVE_GPS
-+#if 0
-
-
- if (!(lat == 0 && lon == 0 && alt == 0 && spd == 0 && fix == 0)) {
-@@ -1496,51 +1496,6 @@
- snprintf(output, print_width, "Networks: %d", (int) details_network->networks.size());
- kwin->text.push_back(output);
-
-- if (details_network->virtnet->gps_fixed != -1) {
-- if ((details_network->virtnet->min_lat == 90) && (details_network->virtnet->min_lon == 180) &&
-- (details_network->virtnet->max_lat == -90) && (details_network->virtnet->max_lon == -180)) {
-- snprintf(output, print_width, "Min Loc : N/A");
-- kwin->text.push_back(output);
-- snprintf(output, print_width, "Max Loc : N/A");
-- kwin->text.push_back(output);
-- snprintf(output, print_width, "Range : N/A");
-- kwin->text.push_back(output);
-- }
-- else {
-- snprintf(output, print_width, "Min Loc : Lat %f Lon %f Alt %f Spd %f",
-- details_network->virtnet->min_lat, details_network->virtnet->min_lon,
-- metric ? details_network->virtnet->min_alt / 3.3 : details_network->virtnet->min_alt,
-- metric ? details_network->virtnet->min_spd * 1.6093 : details_network->virtnet->min_spd);
-- kwin->text.push_back(output);
-- snprintf(output, print_width, "Max Loc : Lat %f Lon %f Alt %f Spd %f",
-- details_network->virtnet->max_lat, details_network->virtnet->max_lon,
-- metric ? details_network->virtnet->max_alt / 3.3 : details_network->virtnet->max_alt,
-- metric ? details_network->virtnet->max_spd * 1.6093 : details_network->virtnet->max_spd);
-- kwin->text.push_back(output);
--
-- double diagdist = GPSD::EarthDistance(details_network->virtnet->min_lat,
-- details_network->virtnet->min_lon,
-- details_network->virtnet->max_lat,
-- details_network->virtnet->max_lon);
--
-- if (finite(diagdist)) {
-- if (metric) {
-- if (diagdist < 1000)
-- snprintf(output, print_width, "Range : %.3f meters", diagdist);
-- else
-- snprintf(output, print_width, "Range : %.3f kilometers", diagdist / 1000);
-- } else {
-- diagdist *= 3.3;
-- if (diagdist < 5280)
-- snprintf(output, print_width, "Range : %.3f feet", diagdist);
-- else
-- snprintf(output, print_width, "Range : %.3f miles", diagdist / 5280);
-- }
-- kwin->text.push_back(output);
-- }
-- }
-- }
--
- if (details_network->virtnet->carrier_set & (1 << (int) carrier_80211b)) {
- snprintf(output, print_width, "Carrier : IEEE 802.11b");
- kwin->text.push_back(output);
-@@ -1853,49 +1808,6 @@
- dnet->ipdata.range_ip[2], dnet->ipdata.range_ip[3]);
- kwin->text.push_back(output);
- }
--
-- if (dnet->gps_fixed != -1) {
-- if ((dnet->min_lat == 90) && (dnet->min_lon == 180) &&
-- (dnet->max_lat == -90) && (dnet->max_lon == -180)) {
-- snprintf(output, print_width, "Min Loc : N/A");
-- kwin->text.push_back(output);
-- snprintf(output, print_width, "Max Loc : N/A");
-- kwin->text.push_back(output);
-- snprintf(output, print_width, "Range : N/A");
-- kwin->text.push_back(output);
-- }
-- else {
-- snprintf(output, print_width, "Min Loc : Lat %f Lon %f Alt %f Spd %f",
-- dnet->min_lat, dnet->min_lon,
-- metric ? dnet->min_alt / 3.3 : dnet->min_alt,
-- metric ? dnet->min_spd * 1.6093 : dnet->min_spd);
-- kwin->text.push_back(output);
-- snprintf(output, print_width, "Max Loc : Lat %f Lon %f Alt %f Spd %f",
-- dnet->max_lat, dnet->max_lon,
-- metric ? dnet->max_alt / 3.3 : dnet->max_alt,
-- metric ? dnet->max_spd * 1.6093 : dnet->max_spd);
-- kwin->text.push_back(output);
--
-- double diagdist = GPSD::EarthDistance(dnet->min_lat, dnet->min_lon,
-- dnet->max_lat, dnet->max_lon);
--
-- if (finite(diagdist)) {
-- if (metric) {
-- if (diagdist < 1000)
-- snprintf(output, print_width, "Range : %f meters", diagdist);
-- else
-- snprintf(output, print_width, "Range : %f kilometers", diagdist / 1000);
-- } else {
-- diagdist *= 3.3;
-- if (diagdist < 5280)
-- snprintf(output, print_width, "Range : %f feet", diagdist);
-- else
-- snprintf(output, print_width, "Range : %f miles", diagdist / 5280);
-- }
-- kwin->text.push_back(output);
-- }
-- }
-- }
- }
-
- // Now we just use the text printer to handle the rest for us
-@@ -1903,184 +1815,6 @@
- return TextPrinter(in_window);
- }
-
--int PanelFront::GpsPrinter(void *in_window) {
-- kis_window *kwin = (kis_window *) in_window;
--
-- char output[1024];
-- kwin->text.clear();
--
-- if (details_network == NULL) {
-- kwin->text.push_back("The network or group being displayed");
-- kwin->text.push_back("has been deleted. Please select a ");
-- kwin->text.push_back("different network.");
-- return TextPrinter(in_window);
-- }
--
-- wireless_network *dnet = details_network->virtnet;
--
-- int print_width = kwin->print_width;
-- if (print_width > 1024)
-- print_width = 1023;
--
-- if (print_width < 32) {
-- kwin->text.push_back("Display not wide enough");
-- return TextPrinter(in_window);
-- }
--
-- if (dnet->aggregate_points == 0) {
-- kwin->text.push_back("No GPS data.");
-- return TextPrinter(in_window);
-- }
--
-- float center_lat, center_lon;
--
-- // We hijack the "selected" field as a toggle
-- if (kwin->selected == 1) {
-- center_lat = dnet->best_lat;
-- center_lon = dnet->best_lon;
-- } else {
-- center_lat = dnet->aggregate_lat / dnet->aggregate_points;
-- center_lon = dnet->aggregate_lon / dnet->aggregate_points;
-- }
--
-- // Get bearing to the center
-- float center_angle = GPSD::CalcHeading(center_lat, center_lon, lat, lon);
--
-- float difference_angle = heading - center_angle;
-- if (difference_angle < 0)
-- difference_angle += 360;
--
-- double diagdist = GPSD::EarthDistance(lat, lon, center_lat, center_lon);
--
-- // Now we know everything - where we are, where we are headed, where we SHOULD be headed
-- // to get to the supposed center of the network, how far it is, and the orientation on our
-- // compass to get to it. Time to start drawing our output.
--
-- char compass[5][10];
-- memset(compass, 0, sizeof(char) * 5 * 10);
--
-- // | 41.12345x-74.12345 .-|-/ |
-- // | Bearing: / |/ \ |
-- // | 123.23 degrees | O | |
-- // | \ \ / |
-- // | Estimated center: '---\ |
--
--
-- // Find the orientation on our compass:
-- if (difference_angle > 330 || difference_angle <= 22) {
-- snprintf(compass[0], 10, " .-|-. ");
-- snprintf(compass[1], 10, " / | \\ ");
-- snprintf(compass[2], 10, "| O |");
-- snprintf(compass[3], 10, " \\ / ");
-- snprintf(compass[4], 10, " '---' ");
-- } else if (difference_angle > 22 && difference_angle <= 66) {
-- snprintf(compass[0], 10, " .---/ ");
-- snprintf(compass[1], 10, " / / \\ ");
-- snprintf(compass[2], 10, "| O |");
-- snprintf(compass[3], 10, " \\ / ");
-- snprintf(compass[4], 10, " '---' ");
-- } else if (difference_angle > 66 && difference_angle <= 110) {
-- snprintf(compass[0], 10, " .---. ");
-- snprintf(compass[1], 10, " / \\ ");
-- snprintf(compass[2], 10, "| O----");
-- snprintf(compass[3], 10, " \\ / ");
-- snprintf(compass[4], 10, " '---' ");
-- } else if (difference_angle > 110 && difference_angle <= 154) {
-- snprintf(compass[0], 10, " .---. ");
-- snprintf(compass[1], 10, " / \\ ");
-- snprintf(compass[2], 10, "| O |");
-- snprintf(compass[3], 10, " \\ \\ / ");
-- snprintf(compass[4], 10, " '---\\ ");
-- } else if (difference_angle > 154 && difference_angle <= 198) {
-- snprintf(compass[0], 10, " .---. ");
-- snprintf(compass[1], 10, " / \\ ");
-- snprintf(compass[2], 10, "| O |");
-- snprintf(compass[3], 10, " \\ | / ");
-- snprintf(compass[4], 10, " '-|-' ");
-- } else if (difference_angle > 198 && difference_angle <= 242) {
-- snprintf(compass[0], 10, " .---. ");
-- snprintf(compass[1], 10, " / \\ ");
-- snprintf(compass[2], 10, "| O |");
-- snprintf(compass[3], 10, " \\ / / ");
-- snprintf(compass[4], 10, " /---' ");
-- } else if (difference_angle > 242 && difference_angle <= 286) {
-- snprintf(compass[0], 10, " .---. ");
-- snprintf(compass[1], 10, " / \\ ");
-- snprintf(compass[2], 10, "----O |");
-- snprintf(compass[3], 10, " \\ / ");
-- snprintf(compass[4], 10, " '---' ");
-- } else if (difference_angle > 286 && difference_angle <= 330) {
-- snprintf(compass[0], 10, " \\---. ");
-- snprintf(compass[1], 10, " / \\ \\ ");
-- snprintf(compass[2], 10, "| O |");
-- snprintf(compass[3], 10, " \\ / ");
-- snprintf(compass[4], 10, " '---' ");
-- } else {
-- snprintf(compass[0], 10, "%f\n", difference_angle);
-- }
--
--
-- // - Network GPS ---------------------|
-- // | Current: |
-- // | 41.12345x-74.12345 .-|-. |
-- // | Bearing: / | \ |
-- // | 123.23 degrees | O | |
-- // | \ \ / |
-- // | Estimated center: '---\ |
-- // | -73.12345x43.12345 |
-- // | 120 feet |
-- // ------------------------------------
-- char textfrag[23];
--
-- snprintf(output, print_width, "Current:");
-- kwin->text.push_back(output);
--
-- snprintf(textfrag, 23, "%.3f x %.3f", lat, lon);
-- snprintf(output, print_width, "%-22s%s", textfrag, compass[0]);
-- kwin->text.push_back(output);
--
-- snprintf(textfrag, 23, " Bearing:");
-- snprintf(output, print_width, "%-22s%s", textfrag, compass[1]);
-- kwin->text.push_back(output);
--
-- snprintf(textfrag, 23, " %.2f*", heading);
-- snprintf(output, print_width, "%-22s%s", textfrag, compass[2]);
-- kwin->text.push_back(output);
--
-- snprintf(textfrag, 23, " ");
-- snprintf(output, print_width, "%-22s%s", textfrag, compass[3]);
-- kwin->text.push_back(output);
--
-- if (kwin->selected == 1)
-- snprintf(textfrag, 23, "Strongest signal:");
-- else
-- snprintf(textfrag, 23, "Estimated Center:");
-- snprintf(output, print_width, "%-22s%s", textfrag, compass[4]);
-- kwin->text.push_back(output);
--
-- snprintf(textfrag, 23, "%.3f x %.3f", center_lat, center_lon);
-- snprintf(output, print_width, "%-22s%.2f*", textfrag, difference_angle);
-- kwin->text.push_back(output);
--
-- if (metric) {
-- if (diagdist < 1000)
-- snprintf(textfrag, 23, "%.2f m", diagdist);
-- else
-- snprintf(textfrag, 23, "%.2f km", diagdist / 1000);
-- } else {
-- diagdist *= 3.3;
-- if (diagdist < 5280)
-- snprintf(textfrag, 23, "%.2f ft", diagdist);
-- else
-- snprintf(textfrag, 23, "%.2f mi", diagdist / 5280);
-- }
--
-- snprintf(output, print_width, "%-22s%s", "", textfrag);
-- kwin->text.push_back(output);
--
-- return TextPrinter(in_window);
--}
--
- int PanelFront::PackPrinter(void *in_window) {
- kis_window *kwin = (kis_window *) in_window;
-
-@@ -3049,53 +2783,6 @@
- details_client->ipdata.ip[2], details_client->ipdata.ip[3]);
- kwin->text.push_back(output);
-
-- if (details_client->gps_fixed != -1) {
-- kwin->text.push_back("");
--
-- if ((details_client->min_lat == 90) && (details_client->min_lon == 180) &&
-- (details_client->max_lat == -90) && (details_client->max_lon == -180)) {
-- snprintf(output, print_width, "Min Loc : N/A");
-- kwin->text.push_back(output);
-- snprintf(output, print_width, "Max Loc : N/A");
-- kwin->text.push_back(output);
-- snprintf(output, print_width, "Range : N/A");
-- kwin->text.push_back(output);
-- }
-- else {
-- snprintf(output, print_width, "Min Loc : Lat %f Lon %f Alt %f Spd %f",
-- details_client->min_lat, details_client->min_lon,
-- metric ? details_client->min_alt / 3.3 : details_client->min_alt,
-- metric ? details_client->min_spd * 1.6093 : details_client->min_spd);
-- kwin->text.push_back(output);
-- snprintf(output, print_width, "Max Loc : Lat %f Lon %f Alt %f Spd %f",
-- details_client->max_lat, details_client->max_lon,
-- metric ? details_client->max_alt / 3.3 : details_client->max_alt,
-- metric ? details_client->max_spd * 1.6093 : details_client->max_spd);
-- kwin->text.push_back(output);
--
-- double diagdist = GPSD::EarthDistance(details_client->min_lat,
-- details_client->min_lon,
-- details_client->max_lat,
-- details_client->max_lon);
--
-- if (finite(diagdist)) {
-- if (metric) {
-- if (diagdist < 1000)
-- snprintf(output, print_width, "Range : %f meters", diagdist);
-- else
-- snprintf(output, print_width, "Range : %f kilometers", diagdist / 1000);
-- } else {
-- diagdist *= 3.3;
-- if (diagdist < 5280)
-- snprintf(output, print_width, "Range : %f feet", diagdist);
-- else
-- snprintf(output, print_width, "Range : %f miles", diagdist / 5280);
-- }
-- kwin->text.push_back(output);
-- }
-- }
-- kwin->text.push_back("");
-- }
-
- snprintf(output, print_width, "Packets :");
- kwin->text.push_back(output);
-diff -urN kismet.dev/panelfront.h kismet.dev2/panelfront.h
---- kismet.dev/panelfront.h 2005-06-29 14:50:09.000000000 +0200
-+++ kismet.dev2/panelfront.h 2006-04-14 19:31:55.000000000 +0200
-@@ -65,7 +65,6 @@
- #define SORT_SIZE 10
- extern char *KismetHelpPower[];
- extern char *KismetHelpRate[];
--extern char *KismetHelpGps[];
- extern char *KismetHelpStats[];
- extern char *KismetHelpDump[];
- extern char *KismetHelpPack[];
-@@ -269,7 +268,6 @@
- int RatePrinter(void *in_window);
- int StatsPrinter(void *in_window);
- int PackPrinter(void *in_window);
-- int GpsPrinter(void *in_window);
- int AlertPrinter(void *in_window);
-
- int MainClientPrinter(void *in_window);
-@@ -298,7 +296,6 @@
- int PackInput(void *in_window, int in_chr);
- // Help has a generic handler
- int TextInput(void *in_window, int in_chr);
-- int GpsInput(void *in_window, int in_chr);
- int AlertInput(void *in_window, int in_chr);
-
- int MainClientInput(void *in_window, int in_chr);
-diff -urN kismet.dev/panelfront_input.cc kismet.dev2/panelfront_input.cc
---- kismet.dev/panelfront_input.cc 2005-06-29 14:50:09.000000000 +0200
-+++ kismet.dev2/panelfront_input.cc 2006-04-14 19:31:56.000000000 +0200
-@@ -300,16 +300,9 @@
- break;
- case 'f':
- case 'F':
-- if (sortby != sort_auto && last_displayed.size() > 0) {
-- details_network = last_displayed[kwin->selected];
-- SpawnWindow("Network Location", &PanelFront::GpsPrinter, &PanelFront::GpsInput, 8, 34);
-- } else {
-- WriteStatus("Cannot view network GPS info in autofit sort mode. Sort by a different method.");
-- }
- break;
- case 'm':
- case 'M':
-- MuteToggle();
- break;
- case 'e':
- case 'E':
-@@ -447,7 +440,6 @@
- switch(in_chr) {
- case 'm':
- case 'M':
-- MuteToggle();
- break;
- case 'p':
- case 'P':
-@@ -546,33 +538,6 @@
- return 1;
- }
-
--int PanelFront::GpsInput(void *in_window, int in_chr) {
-- kis_window *kwin = (kis_window *) in_window;
--
-- switch (in_chr) {
-- case 's':
-- case 'S':
-- kwin->selected = 1;
-- break;
-- case 'c':
-- case 'C':
-- kwin->selected = 0;
-- break;
-- case 'h':
-- case 'H':
-- SpawnHelp(KismetHelpGps);
-- break;
-- case 'x':
-- case 'X':
-- case 'q':
-- case 'Q':
-- return 0;
-- break;
-- }
--
-- return 1;
--}
--
- int PanelFront::RateInput(void *in_window, int in_chr) {
- switch (in_chr) {
- case 'h':
-@@ -645,24 +610,6 @@
- return 1;
- }
-
--void PanelFront::MuteToggle() {
-- if (muted) {
-- speech = old_speech;
-- sound = old_sound;
-- muted = 0;
-- WriteStatus("Restoring sound");
-- } else if (sound != 0 || speech != 0) {
-- old_speech = speech;
-- old_sound = sound;
-- sound = 0;
-- speech = 0;
-- muted = 1;
-- WriteStatus("Muting sound");
-- } else if (sound == 0 && speech == 0) {
-- WriteStatus("Sound not enabled.");
-- }
--}
--
- int PanelFront::AlertInput(void *in_window, int in_chr) {
- kis_window *kwin = (kis_window *) in_window;
-
-diff -urN kismet.dev/pcapsource.cc kismet.dev2/pcapsource.cc
---- kismet.dev/pcapsource.cc 2006-04-14 23:43:01.697817483 +0200
-+++ kismet.dev2/pcapsource.cc 2006-04-14 20:25:06.000000000 +0200
-@@ -343,11 +343,6 @@
- packet->moddata = moddata;
- packet->modified = 0;
-
-- if (gpsd != NULL) {
-- gpsd->FetchLoc(&packet->gps_lat, &packet->gps_lon, &packet->gps_alt,
-- &packet->gps_spd, &packet->gps_heading, &packet->gps_fix);
-- }
--
- if (datalink_type == DLT_PRISM_HEADER) {
- ret = Prism2KisPack(packet, data, moddata);
- } else if (datalink_type == KDLT_BSD802_11) {
-@@ -1157,133 +1152,6 @@
-
- // Monitor commands
- #ifdef HAVE_LINUX_WIRELESS
--// Cisco uses its own config file in /proc to control modes
--int monitor_cisco(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-- FILE *cisco_config;
-- char cisco_path[128];
--
-- linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
-- (*in_if) = ifparm;
--
-- if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
-- return -1;
-- }
--
-- if (Iwconfig_Get_SSID(in_dev, in_err, ifparm->essid) < 0)
-- return -1;
--
-- if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
-- return -1;
--
-- if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
-- return -1;
--
-- if (Ifconfig_Delta_Flags(in_dev, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
-- return -1;
--
-- // Try the iwpriv
-- if (Iwconfig_Set_IntPriv(in_dev, "setRFMonitor", 1, 0, in_err) >= 0) {
-- return 0;
-- }
--
-- // Zero the ssid - nonfatal
-- Iwconfig_Set_SSID(in_dev, in_err, NULL);
--
-- // Build the proc control path
-- snprintf(cisco_path, 128, "/proc/driver/aironet/%s/Config", in_dev);
--
-- if ((cisco_config = fopen(cisco_path, "w")) == NULL) {
-- snprintf(in_err, STATUS_MAX, "Unable to open cisco control file '%s' %d:%s",
-- cisco_path, errno, strerror(errno));
-- return -1;
-- }
--
-- fprintf(cisco_config, "Mode: r\n");
-- fprintf(cisco_config, "Mode: y\n");
-- fprintf(cisco_config, "XmitPower: 1\n");
--
-- fclose(cisco_config);
--
-- // Channel can't be set on cisco with these drivers.
--
-- return 0;
--}
--
--int unmonitor_cisco(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-- linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
-- int ret = -1;
--
-- // Try the iwpriv
-- if (Iwconfig_Set_IntPriv(in_dev, "setRFMonitor", 0, 0, in_err) >= 0) {
-- // If we're the new drivers, unmonitor
-- if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
-- return -1;
-- }
--
-- // Reset the SSID since monitor mode nukes it
-- if (Iwconfig_Set_SSID(in_dev, in_err, ifparm->essid) < 0)
-- return -1;
--
-- if (ifparm->channel > 0) {
-- if (Iwconfig_Set_Channel(in_dev, ifparm->channel, in_err) < 0)
-- return -1;
-- }
--
-- ret = 1;
-- }
--
-- free(ifparm);
--
-- return ret;
--}
--
--// Cisco uses its own config file in /proc to control modes
--//
--// I was doing this with ioctls but that seems to cause lockups while
--// this method doesn't. I don't think I like these drivers.
--int monitor_cisco_wifix(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-- FILE *cisco_config;
-- char cisco_path[128];
-- vector<string> devbits = StrTokenize(in_dev, ":");
--
-- if (devbits.size() < 2) {
-- snprintf(in_err, STATUS_MAX, "Invalid device pair '%s'. Proper device "
-- "for cisco_wifix is eth?:wifi?.", in_dev);
-- return -1;
-- }
--
-- // Bring the device up, zero its ip, and set promisc
-- if (Ifconfig_Delta_Flags(devbits[0].c_str(), in_err,
-- IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
-- return -1;
-- if (Ifconfig_Delta_Flags(devbits[1].c_str(), in_err,
-- IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
-- return -1;
--
-- // Zero the ssid, nonfatally
-- Iwconfig_Set_SSID(devbits[0].c_str(), in_err, NULL);
-- Iwconfig_Set_SSID(devbits[1].c_str(), in_err, NULL);
--
-- // Build the proc control path
-- snprintf(cisco_path, 128, "/proc/driver/aironet/%s/Config", devbits[0].c_str());
--
-- if ((cisco_config = fopen(cisco_path, "w")) == NULL) {
-- snprintf(in_err, STATUS_MAX, "Unable to open cisco control file '%s' %d:%s",
-- cisco_path, errno, strerror(errno));
-- return -1;
-- }
--
-- fprintf(cisco_config, "Mode: r\n");
-- fprintf(cisco_config, "Mode: y\n");
-- fprintf(cisco_config, "XmitPower: 1\n");
--
-- fclose(cisco_config);
--
-- // Channel can't be set on cisco with these drivers.
--
-- return 0;
--}
--
- // Hostap uses iwpriv and iwcontrol settings to control monitor mode
- int monitor_hostap(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
- int ret;
-@@ -1433,132 +1301,6 @@
-
- }
-
--// Acx100 uses the packhdr iwpriv control to set link state, rest is normal
--int monitor_acx100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-- int ret;
--
-- // Allocate a tracking record for the interface settings and remember our
-- // setup
-- linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
-- (*in_if) = ifparm;
--
-- if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
-- return -1;
-- }
--
-- if (Iwconfig_Get_SSID(in_dev, in_err, ifparm->essid) < 0)
-- return -1;
--
-- if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
-- return -1;
--
-- if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
-- return -1;
--
-- // it looks like an orinoco now, apparently
-- if ((ret = Iwconfig_Set_IntPriv(in_dev, "monitor", 1, initch, in_err)) < 0) {
-- if (ret == -2)
-- snprintf(in_err, 1024, "Could not find 'monitor' private ioctl "
-- "Make sure you have the latest ACX100 development release.");
-- return -1;
-- }
--
-- if (chancontrol_wext(in_dev, initch, in_err, NULL) < 0)
-- return -1;
--
-- return 0;
--}
--
--int unmonitor_acx100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-- // Restore the IP settings
-- linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
--
-- if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
-- return -1;
-- }
--
-- Iwconfig_Set_IntPriv(in_dev, "monitor", 0, ifparm->channel, in_err);
-- Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode);
--
-- if (Iwconfig_Set_SSID(in_dev, in_err, ifparm->essid) < 0)
-- return -1;
--
-- free(ifparm);
--
-- return 1;
--}
--
--int monitor_admtek(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-- // Allocate a tracking record for the interface settings and remember our
-- // setup
-- linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
-- (*in_if) = ifparm;
--
-- // Try to figure out the name so we know if we have fcs bytes or not
-- char iwname[IFNAMSIZ+1];
-- if (Iwconfig_Get_Name(in_dev, in_err, iwname) < 0)
-- return -1;
--
-- if (strncmp(iwname, "IEEE 802.11b", IFNAMSIZ) == 0) {
-- // Looks like the GPL driver, we need to adjust the fcsbytes
-- PcapSource *psrc = (PcapSource *) in_ext;
-- psrc->fcsbytes = 4;
-- }
--
-- if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
-- return -1;
-- }
--
-- if ((ifparm->flags & IFF_UP)) {
-- if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
-- return -1;
--
-- if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
-- return -1;
--
-- if (Iwconfig_Get_SSID(in_dev, in_err, ifparm->essid) < 0)
-- return -1;
--
-- } else {
-- ifparm->channel = -1;
-- ifparm->mode = -1;
-- }
--
-- int ret = monitor_wext(in_dev, initch, in_err, in_if, in_ext);
--
-- if (ret < 0 && ret != -2)
-- return ret;
--
-- if (Iwconfig_Set_SSID(in_dev, in_err, "") < 0)
-- return -1;
--
-- return 0;
--}
--
--int unmonitor_admtek(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-- linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
--
-- if (unmonitor_wext(in_dev, initch, in_err, in_if, in_ext))
-- return -1;
--
-- if (Iwconfig_Set_SSID(in_dev, in_err, ifparm->essid) < 0)
-- return -1;
--
-- return 1;
--}
--// vtar5k iwpriv control to set link state, rest is normal
--int monitor_vtar5k(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-- // Set the prism iwpriv control to 1
-- if (Iwconfig_Set_IntPriv(in_dev, "prism", 1, 0, in_err) < 0) {
-- return -1;
-- }
--
-- // The rest is standard wireless extensions
-- if (monitor_wext(in_dev, initch, in_err, in_if, in_ext) < 0)
-- return -1;
--
-- return 0;
--}
-
- /* Madwifi NG ioctls from net80211 */
- #define SIOC80211IFCREATE (SIOCDEVPRIVATE+7)
-@@ -1927,249 +1669,6 @@
- return unmonitor_wext(in_dev, initch, in_err, in_if, in_ext);
- }
-
--int monitor_ipw2100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-- // Allocate a tracking record for the interface settings and remember our
-- // setup
-- linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
-- (*in_if) = ifparm;
--
-- if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
-- return -1;
-- }
--
-- if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
-- return -1;
--
-- if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
-- return -1;
--
-- // Call the normal monitor mode
-- return (monitor_wext(in_dev, initch, in_err, in_if, in_ext));
--}
--
--int unmonitor_ipw2100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-- // Restore initial monitor header
-- // linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
--
-- linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
--
-- if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
-- return -1;
-- }
--
-- if (Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode) < 0)
-- return -1;
--
-- free(ifparm);
--
-- return 1;
--}
--
--int monitor_ipw2200(const char *in_dev, int initch, char *in_err,
-- void **in_if, void *in_ext) {
-- // Allocate a tracking record for the interface settings and remember our
-- // setup
-- linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
-- (*in_if) = ifparm;
--
-- if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
-- return -1;
-- }
--
-- if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
-- return -1;
--
-- if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
-- return -1;
--
-- // Call the normal monitor mode
-- return (monitor_wext(in_dev, initch, in_err, in_if, in_ext));
--}
--
--int unmonitor_ipw2200(const char *in_dev, int initch, char *in_err,
-- void **in_if, void *in_ext) {
-- // Restore initial monitor header
-- // linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
--
-- linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
--
-- if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
-- return -1;
-- }
--
-- if (Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode) < 0)
-- return -1;
--
-- // James says this wants to be set to channel 0 for proper scanning operation
-- if (Iwconfig_Set_Channel(in_dev, 0, in_err) < 0)
-- return -1;
--
-- free(ifparm);
--
-- return 1;
--}
--
--// (Unless we learn different) the 3945 in full rfmon acts the same as
--// an ipw2200, so we'll use the same control mechanisms
--int monitor_ipw3945(const char *in_dev, int initch, char *in_err,
-- void **in_if, void *in_ext) {
-- // Allocate a tracking record for the interface settings and remember our
-- // setup
-- linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
-- (*in_if) = ifparm;
--
-- if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
-- return -1;
-- }
--
-- if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
-- return -1;
--
-- if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
-- return -1;
--
-- // Call the normal monitor mode
-- return (monitor_wext(in_dev, initch, in_err, in_if, in_ext));
--}
--
--int unmonitor_ipw3945(const char *in_dev, int initch, char *in_err,
-- void **in_if, void *in_ext) {
-- // Restore initial monitor header
-- // linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
--
-- linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
--
-- if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
-- return -1;
-- }
--
-- if (Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode) < 0)
-- return -1;
--
-- // James says this wants to be set to channel 0 for proper scanning operation
-- if (Iwconfig_Set_Channel(in_dev, 0, in_err) < 0)
-- return -1;
--
-- free(ifparm);
--
-- return 1;
--}
--
--// The 3945 in "parasite" mode (until James names it) is a different
--// beast entirely. It uses a dynamically added tap interface to give us
--// realtime rtap formatted frames off the interface, so we need to
--// turn it on via sysfs and then push the new rtapX interface into the source
--// before the open happens
--int monitor_ipwlivetap(const char *in_dev, int initch, char *in_err,
-- void **in_if, void *in_ext) {
-- // We don't try to remember settings because we aren't going to do
-- // anything with them, we're leeching off a dynamic interface made
-- // just for us.
-- char dynif[32];
-- FILE *sysf;
-- char path[1024];
-- short int ifflags;
--
-- // Try to get the flags off the master interface
-- if (Ifconfig_Get_Flags(in_dev, in_err, &ifflags) < 0) {
-- return -1;
-- }
--
-- // If the master interface isn't even up, blow up.
-- if ((ifflags & IFF_UP) == 0) {
-- snprintf(in_err, 1024, "The ipw control interface (%s) is not "
-- "configured as 'up'. The ipwlivetap mode reports "
-- "traffic from a currently running interface. For pure "
-- "rfmon monitor mode, use ipwXXXX instead.", in_dev);
-- return -1;
-- }
--
-- // Use the .../net/foo/device symlink into the .../bus/pci/drivers/
-- // ipw3945/foo/ pci bus interface
-- snprintf(path, 1024, "/sys/class/net/%s/device/rtap_iface",
-- in_dev);
--
-- // Open it in RO mode first and get the current state. I'm not sure
-- // how well frewind works on a dynamic system file so we'll just
-- // close it off and re-open it when we go to set modes, if we need
-- // to.
-- if ((sysf = fopen(path, "r")) == NULL) {
-- snprintf(in_err, 1024, "Failed to open ipw sysfs tap control file, "
-- "check that the version of the ipw drivers you are running "
-- "is recent enough, and that your system has sysfs properly "
-- "set up.");
-- return -1;
-- }
--
-- fgets(dynif, 32, sysf);
--
-- // We're done with the RO
-- fclose(sysf);
--
-- // If it's -1, we aren't turned on and we need to.
-- if (strncmp(dynif, "-1", 32) == 0) {
-- if ((sysf = fopen(path, "w")) == NULL) {
-- snprintf(in_err, 1024, "Failed to open the ipw sysfs tap control "
-- "file for writing (%s). Check that Kismet has the proper "
-- "privilege levels and that you are running a version of the "
-- "ipw drivers which supports associated rfmon.", strerror(errno));
-- return -1;
-- }
--
-- fprintf(sysf, "1\n");
-- fclose(sysf);
--
-- // Reopen it again for reading for the last time, and get the
-- // interface we changed to. Do some minor error checking to make
-- // sure the new interface isn't called -1, 0, or 1, which I'm going
-- // to guess would imply an older driver
-- if ((sysf = fopen(path, "r")) == NULL) {
-- snprintf(in_err, 1024, "Failed to open the ipw sysfs tap "
-- "control to find the interface allocated. Something strange "
-- "has happened, because the control file was available "
-- "previously for setting. Check your system messages.");
-- return -1;
-- }
--
-- fgets(dynif, 32, sysf);
--
-- fclose(sysf);
--
-- // Wait for the distro to settle if its going to rename an interface
-- sleep(1);
-- }
--
-- // Sanity check the interface we were told to use. A 0, 1, -1 probably
-- // means a bad driver version.
-- if (strncmp(dynif, "-1", 32) == 0 || strncmp(dynif, "0", 32) == 0 ||
-- strncmp(dynif, "1", 32) == 0) {
-- snprintf(in_err, 1024, "Got a nonsense interface from the ipw "
-- "sysfs tap control file. This probably means your ipw "
-- "drivers are out of date, or that there is something strange "
-- "happening in the drivers. Check your system messages.");
-- return -1;
-- }
--
-- // Now that we've gone through that nonsense, make sure the
-- // dynamic rtap interface is up
-- if (Ifconfig_Delta_Flags(dynif, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
-- return -1;
--
-- // And push the config into the packetsoure
-- ((KisPacketSource *) in_ext)->SetInterface(dynif);
--
-- return 1;
--}
--
--int unmonitor_ipwlivetap(const char *in_dev, int initch, char *in_err,
-- void **in_if, void *in_ext) {
-- // Actually there isn't anything to do here. Right now, I don't
-- // think I care if we leave the parasite rtap interface hanging around.
-- // Newcore might do this better, but this isn't newcore.
--
-- return 1;
--}
--
- // "standard" wireless extension monitor mode
- int monitor_wext(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
- int mode;
-@@ -2231,108 +1730,6 @@
- #endif
-
- #ifdef SYS_LINUX
--// wlan-ng modern standard
--int monitor_wlanng(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-- // I really didn't want to do this...
-- char cmdline[2048];
--
-- // Sanitize the device just to be safe. The ifconfig should fail if
-- // the device is invalid, but why take risks
-- for (unsigned int x = 0; x < strlen(in_dev); x++) {
-- if (!isalnum(in_dev[x])) {
-- snprintf(in_err, STATUS_MAX, "Invalid device '%s'", in_dev);
-- return -1;
-- }
-- }
--
-- if (Ifconfig_Delta_Flags(in_dev, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
-- return -1;
--
-- // Enable the interface
-- snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_ifstate ifstate=enable >/dev/null 2>/dev/null", in_dev);
-- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-- return -1;
-- }
--
-- // Turn off WEP
-- snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset "
-- "mibattribute=dot11PrivacyInvoked=false >/dev/null 2>/dev/null", in_dev);
-- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-- return -1;
-- }
--
-- // Don't exclude packets
-- snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset "
-- "mibattribute=dot11ExcludeUnencrypted=false >/dev/null 2>/dev/null", in_dev);
-- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-- return -1;
-- }
--
-- // Turn on rfmon on the initial channel
-- snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d "
-- "enable=true prismheader=true >/dev/null 2>/dev/null", in_dev, initch);
-- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-- return -1;
-- }
--
-- return 0;
--}
--
--// wlan-ng avs
--int monitor_wlanng_avs(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-- // I really didn't want to do this...
-- char cmdline[2048];
--
-- // Sanitize the device just to be safe. The ifconfig should fail if
-- // the device is invalid, but why take risks
-- for (unsigned int x = 0; x < strlen(in_dev); x++) {
-- if (!isalnum(in_dev[x])) {
-- snprintf(in_err, STATUS_MAX, "Invalid device '%s'", in_dev);
-- return -1;
-- }
-- }
--
-- if (Ifconfig_Delta_Flags(in_dev, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
-- return -1;
--
-- // Enable the interface
-- snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_ifstate ifstate=enable >/dev/null 2>/dev/null", in_dev);
-- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-- return -1;
-- }
--
-- // Turn off WEP
-- snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset "
-- "mibattribute=dot11PrivacyInvoked=false >/dev/null 2>/dev/null", in_dev);
-- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-- return -1;
-- }
--
-- // Don't exclude packets
-- snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset "
-- "mibattribute=dot11ExcludeUnencrypted=false >/dev/null 2>/dev/null", in_dev);
-- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-- return -1;
-- }
--
-- // Turn on rfmon on the initial channel
-- snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d prismheader=false "
-- "wlanheader=true stripfcs=false keepwepflags=false enable=true >/dev/null 2>/dev/null", in_dev, initch);
-- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-- return -1;
-- }
--
-- return 0;
--}
--
- int monitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if,
- void *in_ext) {
- char cmdline[2048];
-@@ -2342,7 +1739,7 @@
- snprintf(in_err, 1024, "Unable to set mode using 'iwpriv %s set_monitor 1'. "
- "Some custom firmware images require you to specify the origial "
- "device and a new dynamic device and use the iwconfig controls. "
-- "see the README for how to configure your capture source.");
-+ "see the README for how to configure your capture source.", in_dev);
- return -1;
- }
-
-@@ -2359,7 +1756,7 @@
- snprintf(in_err, 1024, "Unable to set mode using 'iwpriv %s set_monitor 0'. "
- "Some custom firmware images require you to specify the origial "
- "device and a new dynamic device and use the iwconfig controls. "
-- "see the README for how to configure your capture source.");
-+ "see the README for how to configure your capture source.", in_dev);
- return -1;
- }
-
-@@ -2607,75 +2004,6 @@
- return 0;
- }
-
--int chancontrol_ipw2100(const char *in_dev, int in_ch, char *in_err, void *in_ext) {
-- // Introduce a slight delay to let the driver settle, a la orinoco. I don't
-- // like doing this at all since it introduces hiccups into the channel control
-- // process, but....
--
-- int ret = 0;
--
-- ret = chancontrol_wext(in_dev, in_ch, in_err, in_ext);
-- usleep(5000);
--
-- return ret;
--}
--
--int chancontrol_ipw2200(const char *in_dev, int in_ch, char *in_err, void *in_ext) {
-- // Lets see if this really needs the channel change delay like the 2100 did
-- int ret = 0;
--
-- ret = chancontrol_wext(in_dev, in_ch, in_err, in_ext);
-- // Drop a tiny sleep in here to let the channel set settle, otherwise we
-- // run the risk of the card freaking out
-- usleep(7000);
--
-- return ret;
--}
--
--#endif
--
--#ifdef SYS_LINUX
--int chancontrol_wlanng(const char *in_dev, int in_ch, char *in_err, void *in_ext) {
-- // I really didn't want to do this...
-- char cmdline[2048];
--
-- // Turn on rfmon on the initial channel
-- snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d enable=true "
-- "prismheader=true >/dev/null 2>&1", in_dev, in_ch);
-- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-- return -1;
-- }
--
-- if (in_ext != NULL) {
-- PcapSourceWlanng *src = (PcapSourceWlanng *) in_ext;
-- src->last_channel = in_ch;
-- }
--
-- return 0;
--}
--
--int chancontrol_wlanng_avs(const char *in_dev, int in_ch, char *in_err, void *in_ext) {
-- // I really didn't want to do this...
-- char cmdline[2048];
--
-- // Turn on rfmon on the initial channel
-- snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d "
-- "prismheader=false wlanheader=true stripfcs=false keepwepflags=false "
-- "enable=true >/dev/null 2>&1", in_dev, in_ch);
--
-- if (RunSysCmd(cmdline) < 0) {
-- snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-- return -1;
-- }
--
-- if (in_ext != NULL) {
-- PcapSourceWlanng *src = (PcapSourceWlanng *) in_ext;
-- src->last_channel = in_ch;
-- }
--
-- return 0;
--}
- #endif
-
- #ifdef SYS_OPENBSD
-diff -urN kismet.dev/tcpstreamer.cc kismet.dev2/tcpstreamer.cc
---- kismet.dev/tcpstreamer.cc 2005-05-26 16:51:45.000000000 +0200
-+++ kismet.dev2/tcpstreamer.cc 2006-04-14 19:31:56.000000000 +0200
-@@ -30,8 +30,6 @@
- serv_fd = 0;
-
- max_fd = 0;
--
-- gpsd = NULL;
- }
-
- TcpStreamer::~TcpStreamer()
-@@ -287,10 +285,6 @@
- hdr.frame_len = (uint32_t) htonl(sizeof(struct stream_version_packet));
-
- vpkt.drone_version = (uint16_t) htons(STREAM_DRONE_VERSION);
-- if (gpsd != NULL)
-- vpkt.gps_enabled = 1;
-- else
-- vpkt.gps_enabled = 0;
-
- if (!FD_ISSET(in_fd, &client_fds))
- return -1;
-diff -urN kismet.dev/tcpstreamer.h kismet.dev2/tcpstreamer.h
---- kismet.dev/tcpstreamer.h 2005-05-26 16:51:45.000000000 +0200
-+++ kismet.dev2/tcpstreamer.h 2006-04-14 19:31:56.000000000 +0200
-@@ -42,7 +42,6 @@
- #include "ringbuf.h"
- #include "packet.h"
- #include "packetstream.h"
--#include "gpsd.h"
-
- // Global in kismet_drone.cc
- extern int silent;
-@@ -76,9 +75,6 @@
-
- int FetchDescriptor() { return serv_fd; }
-
-- // Register the GPS server for us to use
-- void AddGpstracker(GPSD *in_gpsd) { gpsd = in_gpsd; }
--
- void Kill(int in_fd);
-
- int Poll(fd_set& in_rset, fd_set& in_wset);
-@@ -124,8 +120,6 @@
- fd_set client_fds;
-
- unsigned int max_fd;
--
-- GPSD *gpsd;
- };
-
- #endif
diff --git a/openwrt/package/knock/Config.in b/openwrt/package/knock/Config.in
deleted file mode 100644
index 3f90b496d5..0000000000
--- a/openwrt/package/knock/Config.in
+++ /dev/null
@@ -1,41 +0,0 @@
-config BR2_COMPILE_KNOCK
- tristate
- default n
- depends BR2_PACKAGE_KNOCK || BR2_PACKAGE_KNOCKD
-
-config BR2_PACKAGE_KNOCK
- prompt "knock............................. A port-knocking client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_KNOCK
- help
- It listens to all traffic on an ethernet (or PPP) interface,
- looking for special "knock" sequences of port-hits. A client
- makes these port-hits by sending a TCP (or UDP) packet to a
- port on the server. This port need not be open -- since
- knockd listens at the link-layer level, it sees all traffic
- even if it's destined for a closed port. When the server
- detects a specific sequence of port-hits, it runs a command
- defined in its configuration file. This can be used to open
- up holes in a firewall for quick access.
-
- http://www.zeroflux.org/cgi-bin/cvstrac/knock/wiki
-
-config BR2_PACKAGE_KNOCKD
- prompt "knockd............................ A port-knocking server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_KNOCK
- help
- It listens to all traffic on an ethernet (or PPP) interface,
- looking for special "knock" sequences of port-hits. A client
- makes these port-hits by sending a TCP (or UDP) packet to a
- port on the server. This port need not be open -- since
- knockd listens at the link-layer level, it sees all traffic
- even if it's destined for a closed port. When the server
- detects a specific sequence of port-hits, it runs a command
- defined in its configuration file. This can be used to open
- up holes in a firewall for quick access.
-
- http://www.zeroflux.org/cgi-bin/cvstrac/knock/wiki
-
diff --git a/openwrt/package/knock/Makefile b/openwrt/package/knock/Makefile
deleted file mode 100644
index d8d6262e86..0000000000
--- a/openwrt/package/knock/Makefile
+++ /dev/null
@@ -1,75 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=knock
-PKG_VERSION:=0.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=ca09d61458974cff90a700aba6120891
-
-PKG_SOURCE_URL:=http://www.zeroflux.org/knock/files/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,KNOCK,knock,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,KNOCKD,knockd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_lib_pcap_pcap_open_live=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc/kismet \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --disable-rpath \
- --with-gnu-ld \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_KNOCK):
- install -d -m0755 $(IDIR_KNOCK)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/knock $(IDIR_KNOCK)/usr/bin/
- $(RSTRIP) $(IDIR_KNOCK)
- $(IPKG_BUILD) $(IDIR_KNOCK) $(PACKAGE_DIR)
-
-$(IPKG_KNOCKD):
- install -d -m0755 $(IDIR_KNOCKD)/etc
- install -m0600 $(PKG_INSTALL_DIR)/etc/knockd.conf $(IDIR_KNOCKD)/etc/
- install -d -m0755 $(IDIR_KNOCKD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/knockd $(IDIR_KNOCKD)/usr/sbin/
- $(RSTRIP) $(IDIR_KNOCKD)
- $(IPKG_BUILD) $(IDIR_KNOCKD) $(PACKAGE_DIR)
diff --git a/openwrt/package/knock/ipkg/knock.control b/openwrt/package/knock/ipkg/knock.control
deleted file mode 100644
index 72e635ff49..0000000000
--- a/openwrt/package/knock/ipkg/knock.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: knock
-Priority: optional
-Section: net
-Depends:
-Description: A port-knocking client
diff --git a/openwrt/package/knock/ipkg/knockd.conffiles b/openwrt/package/knock/ipkg/knockd.conffiles
deleted file mode 100644
index e191bfd70a..0000000000
--- a/openwrt/package/knock/ipkg/knockd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/knockd.conf \ No newline at end of file
diff --git a/openwrt/package/knock/ipkg/knockd.control b/openwrt/package/knock/ipkg/knockd.control
deleted file mode 100644
index e0c9439152..0000000000
--- a/openwrt/package/knock/ipkg/knockd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: knockd
-Priority: optional
-Section: net
-Depends: libpcap
-Description: A port-knocking server
diff --git a/openwrt/package/l2tpd/Config.in b/openwrt/package/l2tpd/Config.in
deleted file mode 100644
index 47d83ed741..0000000000
--- a/openwrt/package/l2tpd/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_L2TPD
- prompt "l2tpd............................. An L2TP (Layer 2 Tunneling Protocol) daemon"
- tristate
- default m if CONFIG_DEVEL
- help
- A layer 2 tunneling protocol implementation.
- l2tpd is the open source implementation of the L2TP tunneling
- protocol (RFC2661). It does implement both LAC and LNS role
- in a L2TP networking architecture. The main goal of this protocol is
- to tunnel PPP frame trough an ip network.
-
- http://l2tpd.sourceforge.net/
-
diff --git a/openwrt/package/l2tpd/Makefile b/openwrt/package/l2tpd/Makefile
deleted file mode 100644
index 6435f35a7d..0000000000
--- a/openwrt/package/l2tpd/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=l2tpd
-PKG_VERSION:=0.70pre
-PKG_UPSTREAM_VERSION:=0.70-pre20031121
-PKG_RELEASE:=4.1
-PKG_MD5SUM:=3f2707b6e16a8cb72e7bf64f574202fa
-
-PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/l/l2tpd
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_UPSTREAM_VERSION).orig.tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).orig
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,L2TPD,l2tpd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CC=$(TARGET_CC) \
- CFLAGS="$(TARGET_CFLAGS) -I. -DLINUX -DSANITY -DIP_ALLOCATION"
- touch $@
-
-$(IPKG_L2TPD):
- install -d -m0755 $(IDIR_L2TPD)/etc/l2tpd
- install -m0644 ./files/l2tpd.conf $(IDIR_L2TPD)/etc/l2tpd/
- install -d -m0755 $(IDIR_L2TPD)/etc/ppp
- install -m0644 ./files/options.l2tpd $(IDIR_L2TPD)/etc/ppp/
- install -d -m0755 $(IDIR_L2TPD)/etc/init.d
- install -m0755 ./files/l2tpd.init $(IDIR_L2TPD)/etc/init.d/l2tpd
- install -d -m0755 $(IDIR_L2TPD)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/$(PKG_NAME) $(IDIR_L2TPD)/usr/sbin/
- $(RSTRIP) $(IDIR_L2TPD)
- $(IPKG_BUILD) $(IDIR_L2TPD) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/l2tpd/files/l2tpd.conf b/openwrt/package/l2tpd/files/l2tpd.conf
deleted file mode 100644
index 2a9ba1cc63..0000000000
--- a/openwrt/package/l2tpd/files/l2tpd.conf
+++ /dev/null
@@ -1,29 +0,0 @@
-;
-; This is a minimal sample l2tpd configuration file for use
-; with L2TP over IPsec.
-;
-; The idea is to provide an L2TP daemon to which remote Windows L2TP/IPsec
-; clients connect. In this example, the internal (protected) network
-; is 192.168.1.0/24. A special IP range within this network is reserved
-; for the remote clients: 192.168.1.128/25
-; (i.e. 192.168.1.128 ... 192.168.1.254)
-;
-; The listen-addr parameter can be used if you want to bind the L2TP daemon
-; to a specific IP address instead of to all interfaces. For instance,
-; you could bind it to the interface of the internal LAN (e.g. 192.168.1.98
-; in the example below). Yet another IP address (local ip, e.g. 192.168.1.99)
-; will be used by l2tpd as its address on pppX interfaces.
-
-[global]
-; listen-addr = 192.168.1.98
-
-[lns default]
-ip range = 192.168.1.128-192.168.1.254
-local ip = 192.168.1.99
-require chap = yes
-refuse pap = yes
-require authentication = yes
-name = LinuxVPNserver
-ppp debug = yes
-pppoptfile = /etc/ppp/options.l2tpd
-length bit = yes
diff --git a/openwrt/package/l2tpd/files/l2tpd.init b/openwrt/package/l2tpd/files/l2tpd.init
deleted file mode 100644
index f531757993..0000000000
--- a/openwrt/package/l2tpd/files/l2tpd.init
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-BIN=l2tpd
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/l2tpd/files/options.l2tpd b/openwrt/package/l2tpd/files/options.l2tpd
deleted file mode 100644
index 425a56e087..0000000000
--- a/openwrt/package/l2tpd/files/options.l2tpd
+++ /dev/null
@@ -1,17 +0,0 @@
-ipcp-accept-local
-ipcp-accept-remote
-ms-dns 192.168.1.1
-ms-dns 192.168.1.3
-ms-wins 192.168.1.2
-ms-wins 192.168.1.4
-noccp
-auth
-crtscts
-idle 1800
-mtu 1410
-mru 1410
-nodefaultroute
-debug
-lock
-proxyarp
-connect-delay 5000
diff --git a/openwrt/package/l2tpd/ipkg/l2tpd.conffiles b/openwrt/package/l2tpd/ipkg/l2tpd.conffiles
deleted file mode 100644
index 1607479cb0..0000000000
--- a/openwrt/package/l2tpd/ipkg/l2tpd.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/l2tpd/l2tpd.conf
-/etc/ppp/options.l2tpd
diff --git a/openwrt/package/l2tpd/ipkg/l2tpd.control b/openwrt/package/l2tpd/ipkg/l2tpd.control
deleted file mode 100644
index b2552dcd76..0000000000
--- a/openwrt/package/l2tpd/ipkg/l2tpd.control
+++ /dev/null
@@ -1,8 +0,0 @@
-Package: l2tpd
-Priority: optional
-Section: net
-Description: A layer 2 tunneling protocol implementation.
- l2tpd is the open source implementation of the L2TP tunneling
- protocol (RFC2661). It does implement both LAC and LNS role
- in a L2TP networking architecture. The main goal of this protocol is
- to tunnel PPP frame trough an ip network.
diff --git a/openwrt/package/l2tpd/patches/01-debian-2.patch b/openwrt/package/l2tpd/patches/01-debian-2.patch
deleted file mode 100644
index 8a6e204c4d..0000000000
--- a/openwrt/package/l2tpd/patches/01-debian-2.patch
+++ /dev/null
@@ -1,3394 +0,0 @@
---- l2tpd-0.70-pre20031121.orig/Makefile
-+++ l2tpd-0.70-pre20031121/Makefile
-@@ -28,7 +28,8 @@
- # become runtime options) debugging flags
- #
- #DFLAGS= -g -O2 -DDEBUG_PPPD
--DFLAGS= -g -O2 -DDEBUG_PPPD -DDEBUG_CONTROL -DDEBUG_ENTROPY
-+#DFLAGS= -g -O2 -Wall -DDEBUG_PPPD -DDEBUG_CONTROL -DDEBUG_ENTROPY
-+DFLAGS= -ggdb -Wall -DDEBUG_PPPD -DDEBUG_CONTROL -DDEBUG_ENTROPY
- #
- # Uncomment the next line for Linux
- #
-@@ -58,7 +59,7 @@
-
- FFLAGS= -DIP_ALLOCATION
-
--CFLAGS= $(DFLAGS) -Wall -DSANITY $(OSFLAGS) $(FFLAGS)
-+CFLAGS= $(DFLAGS) -Wall -DSANITY $(OSFLAGS) $(FFLAGS)
- HDRS=l2tp.h avp.h misc.h control.h call.h scheduler.h file.h aaa.h md5.h
- OBJS=l2tpd.o pty.o misc.o control.o avp.o call.o network.o avpsend.o scheduler.o file.o aaa.o md5.o
- LIBS= $(OSLIB) # -lefence # efence for malloc checking
---- l2tpd-0.70-pre20031121.orig/control.c
-+++ l2tpd-0.70-pre20031121/control.c
-@@ -227,7 +227,7 @@
- add_bearer_caps_avp (buf, t->ourbc);
- /* FIXME: Tie breaker */
- add_firmware_avp (buf);
-- add_hostname_avp (buf);
-+ add_hostname_avp (buf, t);
- add_vendor_avp (buf);
- add_tunnelid_avp (buf, t->ourtid);
- if (t->ourrws >= 0)
-@@ -346,7 +346,6 @@
- "%s: Peer did not specify assigned tunnel ID. Closing.\n",
- __FUNCTION__);
- set_error (c, VENDOR_ERROR, "Specify your assigned tunnel ID");
-- c->needclose = -1;
- return -EINVAL;
- }
- if (!(t->lns = get_lns (t)))
-@@ -356,7 +355,6 @@
- "%s: Denied connection to unauthorized peer %s\n",
- __FUNCTION__, IPADDY (t->peer.sin_addr));
- set_error (c, VENDOR_ERROR, "No Authorization");
-- c->needclose = -1;
- return -EINVAL;
- }
- t->ourrws = t->lns->tun_rws;
-@@ -368,7 +366,6 @@
- "%s: Peer did not specify framing capability. Closing.\n",
- __FUNCTION__);
- set_error (c, VENDOR_ERROR, "Specify framing capability");
-- c->needclose = -1;
- return -EINVAL;
- }
- /* FIXME: Do we need to be sure they specified a version number?
-@@ -380,7 +377,6 @@
- if (DEBUG) log(LOG_DEBUG,
- "%s: Peer did not specify bearer capability. Closing.\n",__FUNCTION__);
- set_error(c, VENDOR_ERROR, "Specify bearer capability");
-- c->needclose = -1;
- return -EINVAL;
- } */
- if ((!strlen (t->hostname)) && ((t->chal_us.state) || ((t->lns->challenge))))
-@@ -390,7 +386,6 @@
- "%s: Peer did not specify hostname. Closing.\n",
- __FUNCTION__);
- set_error (c, VENDOR_ERROR, "Specify your hostname");
-- c->needclose = -1;
- return -EINVAL;
- }
- y = tunnels.head;
-@@ -427,7 +422,7 @@
- add_frame_caps_avp (buf, t->ourfc);
- add_bearer_caps_avp (buf, t->ourbc);
- add_firmware_avp (buf);
-- add_hostname_avp (buf);
-+ add_hostname_avp (buf, t);
- add_vendor_avp (buf);
- add_tunnelid_avp (buf, t->ourtid);
- if (t->ourrws >= 0)
-@@ -481,7 +476,6 @@
- "%s: Peer did not specify framing capability. Closing.\n",
- __FUNCTION__);
- set_error (c, VENDOR_ERROR, "Specify framing capability");
-- c->needclose = -1;
- return -EINVAL;
- }
- /* FIXME: Do we need to be sure they specified a version number?
-@@ -493,7 +487,6 @@
- if (DEBUG) log(LOG_DEBUG,
- "%s: Peer did not specify bearer capability. Closing.\n",__FUNCTION__);
- set_error(c, VENDOR_ERROR, "Specify bearer capability");
-- c->needclose = -1;
- return -EINVAL;
- } */
- if ((!strlen (t->hostname)) && ((t->chal_them.state) || ((t->chal_us.state))))
-@@ -503,7 +496,6 @@
- "%s: Peer did not specify hostname. Closing.\n",
- __FUNCTION__);
- set_error (c, VENDOR_ERROR, "Specify your hostname");
-- c->needclose = -1;
- return -EINVAL;
- }
- if (t->tid <= 0)
-@@ -513,7 +505,6 @@
- "%s: Peer did not specify assigned tunnel ID. Closing.\n",
- __FUNCTION__);
- set_error (c, VENDOR_ERROR, "Specify your assigned tunnel ID");
-- c->needclose = -1;
- return -EINVAL;
- }
- if (t->chal_them.state)
-@@ -524,7 +515,6 @@
- set_error (c, VENDOR_ERROR, "No secret key on our side");
- log (LOG_WARN, "%s: No secret key for authenticating '%s'\n",
- __FUNCTION__, t->hostname);
-- c->needclose = -1;
- return -EINVAL;
- }
- if (memcmp
-@@ -534,7 +524,6 @@
- "Invalid challenge authentication");
- log (LOG_DEBUG, "%s: Invalid authentication for host '%s'\n",
- __FUNCTION__, t->hostname);
-- c->needclose = -1;
- return -EINVAL;
- }
- }
-@@ -546,7 +535,6 @@
- log (LOG_WARN, "%s: No secret for authenticating to '%s'\n",
- __FUNCTION__, t->hostname);
- set_error (c, VENDOR_ERROR, "No secret key on our end");
-- c->needclose = -1;
- return -EINVAL;
- };
- }
-@@ -606,7 +594,6 @@
- "Invalid challenge authentication");
- log (LOG_DEBUG, "%s: Invalid authentication for host '%s'\n",
- __FUNCTION__, t->hostname);
-- c->needclose = -1;
- return -EINVAL;
- }
- }
-@@ -1584,6 +1571,14 @@
- wbuf[pos++] = e;
- for (x = 0; x < buf->len; x++)
- {
-+ // we must at least still have 4 bytes left in the worst case scenario:
-+ // 1 for a possible escape, 1 for the value and 1 to end the PPP stream.
-+ if(pos >= (sizeof(wbuf) - 4)) {
-+ if(DEBUG)
-+ log(LOG_CRIT, "%s: rx packet is too big after PPP encoding (size %u, max is %u)\n",
-+ __FUNCTION__, buf->len, MAX_RECV_SIZE);
-+ return -EINVAL;
-+ }
- e = *((char *) buf->start + x);
- if ((e < 0x20) || (e == PPP_ESCAPE) || (e == PPP_FLAG))
- {
-@@ -1592,7 +1587,6 @@
- wbuf[pos++] = PPP_ESCAPE;
- }
- wbuf[pos++] = e;
--
- }
- wbuf[pos++] = PPP_FLAG;
- x = write (c->fd, wbuf, pos);
---- l2tpd-0.70-pre20031121.orig/misc.h
-+++ l2tpd-0.70-pre20031121/misc.h
-@@ -80,4 +80,11 @@
- extern void safe_copy (char *, char *, int);
- extern void opt_destroy (struct ppp_opts *);
- extern struct ppp_opts *add_opt (struct ppp_opts *, char *, ...);
-+extern u_int16_t get16(u_int8_t *);
-+extern u_int32_t get32(u_int8_t *);
-+extern u_int64_t get64(u_int8_t *);
-+extern void set16(u_int8_t *, u_int16_t);
-+extern void set32(u_int8_t *, u_int32_t);
-+extern void set64(u_int8_t *, u_int64_t);
-+
- #endif
---- l2tpd-0.70-pre20031121.orig/avp.h
-+++ l2tpd-0.70-pre20031121/avp.h
-@@ -19,22 +19,35 @@
-
- struct avp_hdr
- {
-- _u16 length;
-- _u16 vendorid;
-- _u16 attr;
-+ u_int16_t length;
-+ u_int16_t vendorid;
-+ u_int16_t attr;
- };
-
-+#define AVP_F_MANDATORY 0x1
-+#define AVP_F_FIXLEN 0x2
-+#define AVP_F_ASCII 0x4
-+
- struct avp
- {
-- int num; /* Number of AVP */
-- int m; /* Set M? */
-- int (*handler) (struct tunnel *, struct call *, void *, int);
-- /* This should handle the AVP
-- taking a tunnel, call, the data,
-- and the length of the AVP as
-- parameters. Should return 0
-- upon success */
-- char *description; /* A name, for debugging */
-+ u_int32_t num; /* Number of AVP */
-+ u_int32_t flags;
-+ u_int32_t sz; /* expected avp payload size as
-+ * (AVP_F_FIXLEN) ? (==) : (!>=)
-+ * note: size checked is performed
-+ * after unhiding */
-+ u_int8_t allowed_states[8]; /* List of allowed message types for
-+ * a particular avp. Fixed len for
-+ * alignement issues. */
-+
-+ /* This should handle the AVP taking a tunnel, call,
-+ * the data, and the length of the AVP as parameters.
-+ * Should return 0 upon success */
-+ int (*handle) (struct tunnel *, struct call *, void *, int);
-+
-+ /* This should handle avp specifics sanity checks */
-+ int (*validate) (int, struct tunnel *, struct call *, void *, int);
-+ char *description; /* A name, for debugging */
- };
-
- extern int handle_avps (struct buffer *buf, struct tunnel *t, struct call *c);
-@@ -84,8 +97,56 @@
- #define RESULT_CLEAR 1
- #define RESULT_ERROR 2
- #define RESULT_EXISTS 3
-+
-+/* avp id's */
-+#define MESSAGE_TYPE_AVP 0
-+#define RESULT_CODE_AVP 1
-+#define PROTOCOL_VERSION_AVP 2
-+#define FRAMING_CAP_AVP 3
-+#define BEARER_CAP_AVP 4
-+#define TIE_BREAKER_AVP 5
-+#define FIRMWARE_REV_AVP 6
-+#define HOSTNAME_AVP 7
-+#define VENDOR_NAME_AVP 8
-+#define ASSIGNED_TUN_ID_AVP 9
-+#define RX_WIN_SIZE_AVP 10
-+#define CHALLENGE_AVP 11
-+#define CHALLENGE_RESP_AVP 12
-+#define CAUSE_ERROR_AVP 13
-+#define ASSIGNED_SES_ID_AVP 14
-+#define SERIAL_NUMBER_AVP 15
-+#define MIN_BPS_AVP 16
-+#define MAX_BPS_AVP 17
-+#define BEARER_TYPE_AVP 18
-+#define FRAMING_TYPE_AVP 19
-+#define PACKET_DELAY_AVP 20
-+#define CALLED_NUMBER_AVP 21
-+#define CALLING_NUMBER_AVP 22
-+#define SUB_ADDRESS_AVP 23
-+#define TX_CONNECT_SPEED_AVP 24
-+#define PHYS_CHAN_ID_AVP 25
-+#define INIT_RX_LCP_AVP 26
-+#define LAST_TX_LCP_AVP 27
-+#define LAST_RX_LCP_AVP 28
-+#define PROXY_AUTH_TYPE_AVP 29
-+#define PROXY_AUTH_NAME_AVP 30
-+#define PROXY_AUTH_CHAL_AVP 31
-+#define PROXY_AUTH_ID_AVP 32
-+#define PROXY_AUTH_CHAL_RESP_AVP 33
-+#define CALL_ERROR_AVP 34
-+#define ACCM_AVP 35
-+#define RANDOM_VECTOR_AVP 36
-+#define PRIV_GROUP_ID_AVP 37
-+#define RX_CONNECT_SPEED_AVP 38
-+#define SEQ_REQUIRED_AVP 39
-+#define AVP_MAX SEQ_REQUIRED_AVP
-+
-+extern int validate_msgtype_avp(int, struct tunnel *, struct call *, void *, int);
-+extern int validate_gen_avp(int, struct tunnel *, struct call *, void *, int);
-+
- extern void encrypt_avp (struct buffer *, _u16, struct tunnel *);
- extern int decrypt_avp (char *, struct tunnel *);
-+
- extern int message_type_avp (struct tunnel *, struct call *, void *, int);
- extern int protocol_version_avp (struct tunnel *, struct call *, void *, int);
- extern int framing_caps_avp (struct tunnel *, struct call *, void *, int);
-@@ -97,12 +158,12 @@
- extern int receive_window_size_avp (struct tunnel *, struct call *, void *,
- int);
- extern int result_code_avp (struct tunnel *, struct call *, void *, int);
--extern int assigned_call_avp (struct tunnel *, struct call *, void *, int);
-+extern int assigned_session_avp (struct tunnel *, struct call *, void *, int);
- extern int call_serno_avp (struct tunnel *, struct call *, void *, int);
- extern int bearer_type_avp (struct tunnel *, struct call *, void *, int);
- extern int call_physchan_avp (struct tunnel *, struct call *, void *, int);
--extern int dialed_number_avp (struct tunnel *, struct call *, void *, int);
--extern int dialing_number_avp (struct tunnel *, struct call *, void *, int);
-+extern int called_number_avp (struct tunnel *, struct call *, void *, int);
-+extern int calling_number_avp (struct tunnel *, struct call *, void *, int);
- extern int sub_address_avp (struct tunnel *, struct call *, void *, int);
- extern int frame_type_avp (struct tunnel *, struct call *, void *, int);
- extern int rx_speed_avp (struct tunnel *, struct call *, void *, int);
-@@ -118,7 +179,7 @@
- extern int add_avp_rws (struct buffer *, _u16);
- extern int add_tunnelid_avp (struct buffer *, _u16);
- extern int add_vendor_avp (struct buffer *);
--extern int add_hostname_avp (struct buffer *);
-+extern int add_hostname_avp (struct buffer *, struct tunnel*);
- extern int add_firmware_avp (struct buffer *);
- extern int add_bearer_caps_avp (struct buffer *buf, _u16 caps);
- extern int add_frame_caps_avp (struct buffer *buf, _u16 caps);
---- l2tpd-0.70-pre20031121.orig/network.c
-+++ l2tpd-0.70-pre20031121/network.c
-@@ -214,6 +214,8 @@
- t->self->needclose = -1;
- }
- }
-+ free(buf->rstart);
-+ free(buf);
- }
- else
- {
-@@ -371,7 +373,9 @@
- if (debug_network)
- {
- log (LOG_DEBUG, "%s: recv packet from %s, size = %d," \
--"tunnel = %d, call = %d\n", __FUNCTION__, inet_ntoa (from.sin_addr), recvsize, tunnel, call);
-+ "tunnel = %d, call = %d\n", __func__,
-+ inet_ntoa (from.sin_addr), recvsize,
-+ tunnel, call);
- }
- if (packet_dump)
- {
---- l2tpd-0.70-pre20031121.orig/aaa.c
-+++ l2tpd-0.70-pre20031121/aaa.c
-@@ -209,9 +209,11 @@
- __FUNCTION__, u, t, s);
- #endif
- strncpy (secret, s, size);
-+ fclose(f);
- return -1;
- }
- }
-+ fclose(f);
- return 0;
- }
-
---- l2tpd-0.70-pre20031121.orig/l2tpd.c
-+++ l2tpd-0.70-pre20031121/l2tpd.c
-@@ -266,6 +266,9 @@
- /* erase pid file */
- unlink (gconfig.pidfile);
-
-+ /* erase control pipe */
-+ unlink(CONTROL_PIPE);
-+
- exit (1);
- }
-
-@@ -333,13 +336,17 @@
- tcgetattr (c->fd, &ptyconf);
- *(c->oldptyconf) = ptyconf;
- ptyconf.c_cflag &= ~(ICANON | ECHO);
-- ptyconf.c_lflag &= ~ECHO;
-+ ptyconf.c_lflag &= ~ECHO;
- tcsetattr (c->fd, TCSANOW, &ptyconf);
-
- snprintf (tty, sizeof (tty), "/dev/tty%c%c", a, b);
- fd2 = open (tty, O_RDWR);
-- stropt[pos++] = strdup(tty);
-- stropt[pos] = NULL;
-+ if(!fd2)
-+ log(LOG_WARN, "unable to open tty %s", tty);
-+
-+ /* XXX JEF: CHECK ME */
-+ stropt[pos++] = strdup(tty);
-+ stropt[pos] = NULL;
-
- #ifdef USE_KERNEL
- }
-@@ -623,7 +630,13 @@
- {
- struct lac *lac;
- lac = (struct lac *) data;
-- if (!lac->active)
-+
-+ if (!lac)
-+ {
-+ log (LOG_WARN, "%s : called on NULL lac!\n", __FUNCTION__);
-+ return;
-+ }
-+ if (!lac->active)
- {
- log (LOG_DEBUG, "%s: LAC %s not active", __FUNCTION__, lac->entname);
- return;
-@@ -635,11 +648,6 @@
- log (LOG_LOG, "%s: maximum retries exceeded.\n", __FUNCTION__);
- return;
- }
-- if (!lac)
-- {
-- log (LOG_WARN, "%s : called on NULL lac!\n", __FUNCTION__);
-- return;
-- }
- if (!lac->t)
- {
- #ifdef DEGUG_MAGIC
-@@ -774,12 +782,7 @@
- void do_control ()
- {
- char buf[1024];
-- char *host;
-- char *tunstr;
-- char *callstr;
--
-- char *sub_str; /* jz: use by the strtok function */
-- char *tmp_ptr; /* jz: use by the strtok function */
-+ char *host, *tunstr, *callstr, *tmpstr;
- struct lac *lac;
- int call;
- int tunl;
-@@ -792,24 +795,39 @@
- if (buf[cnt - 1] == '\n')
- buf[--cnt] = 0;
- #ifdef DEBUG_CONTROL
-- log (LOG_DEBUG, "%s: Got message %s (%d bytes long)\n",
-+ log (LOG_DEBUG, "%s: Got message \"%s\" (%d bytes long)\n",
- __FUNCTION__, buf, cnt);
- #endif
- switch (buf[0])
- {
- case 't':
-- host = strchr (buf, ' ') + 1;
-+ host = strchr (buf, ' ');
-+ if(!host)
-+ goto out;
-+ host++;
- #ifdef DEBUG_CONTROL
- log (LOG_DEBUG, "%s: Attempting to tunnel to %s\n",
- __FUNCTION__, host);
- #endif
- l2tp_call (host, UDP_LISTEN_PORT, NULL, NULL);
- break;
-- case 'c':
--
-- switch_io = 1; /* jz: Switch for Incoming - Outgoing Calls */
--
-- tunstr = strchr (buf, ' ') + 1;
-+ case 'c': /* option 'c' for incoming call */
-+ case 'o': /* option 'o' for outgoing call */
-+ tunstr = strchr (buf, ' ');
-+ if(!tunstr)
-+ goto out;
-+ tunstr++;
-+
-+ if(buf[0] == 'c')
-+ switch_io = 1; /* Switch for Incoming Calls */
-+ else {
-+ switch_io = 0; /* Switch for Outgoing Calls */
-+ tmpstr = strchr(tunstr, ' ');
-+ if(!tmpstr)
-+ goto out;
-+ strncpy(dial_no_tmp,tmpstr, sizeof(*dial_no_tmp));
-+ }
-+
- lac = laclist;
- while (lac)
- {
-@@ -842,52 +860,12 @@
- #endif
- lac_call (tunl, NULL, NULL);
- break;
--
-- case 'o': /* jz: option 'o' for doing a outgoing call */
--
-- switch_io = 0; /* jz: Switch for incoming - outgoing Calls */
--
-- sub_str = strchr (buf, ' ') + 1;
--
-- tunstr = strtok (sub_str, " "); /* jz: using strtok function to get */
-- tmp_ptr = strtok (NULL, " "); /* params out of the pipe */
-- strcpy (dial_no_tmp, tmp_ptr);
--
-- lac = laclist;
-- while (lac)
-- {
-- if (!strcasecmp (lac->entname, tunstr))
-- {
-- lac->active = -1;
-- lac->rtries = 0;
-- if (!lac->c)
-- magic_lac_dial (lac);
-- else
-- log (LOG_DEBUG,
-- "%s: Session '%s' already active!\n",
-- __FUNCTION__, lac->entname);
-- break;
-- }
-- lac = lac->next;
-- }
-- if (lac)
-- break;
-- tunl = atoi (tunstr);
-- if (!tunl)
-- {
-- log (LOG_DEBUG, "%s: No such tunnel '%s'\n", __FUNCTION__,
-- tunstr);
-- break;
-- }
--#ifdef DEBUG_CONTROL
-- log (LOG_DEBUG, "%s: Attempting to call on tunnel %d\n",
-- __FUNCTION__, tunl);
--#endif
-- lac_call (tunl, NULL, NULL);
-- break;
--
- case 'h':
-- callstr = strchr (buf, ' ') + 1;
-+ callstr = strchr (buf, ' ');
-+ if(!callstr)
-+ goto out;
-+ callstr++;
-+
- call = atoi (callstr);
- #ifdef DEBUG_CONTROL
- log (LOG_DEBUG, "%s: Attempting to call %d\n", __FUNCTION__,
-@@ -896,7 +874,11 @@
- lac_hangup (call);
- break;
- case 'd':
-- tunstr = strchr (buf, ' ') + 1;
-+ tunstr = strchr (buf, ' ');
-+ if(!tunstr)
-+ goto out;
-+ tunstr++;
-+
- lac = laclist;
- while (lac)
- {
-@@ -937,6 +919,8 @@
- }
- }
- }
-+
-+out:
- /* Otherwise select goes nuts */
- close (control_fd);
- control_fd = open (CONTROL_PIPE, O_RDONLY | O_NONBLOCK, 0600);
-@@ -1002,7 +986,6 @@
- int pid=0;
- int i,l;
- char buf[STRLEN];
-- int pidfilewritten=0;
-
- if((pid = fork()) < 0) {
- log(LOG_LOG, "%s: Unable to fork ()\n",__FUNCTION__);
-@@ -1012,56 +995,52 @@
- else if (pid)
- exit(0);
-
-- close(0);
-- close(1);
-- close(2);
-+
-+ close(0);
-+ close(1);
-+ close(2);
-+ dup2(open("/dev/null", O_RDONLY), 0);
-+ dup2(open("/dev/null", O_RDONLY), 1);
-+ dup2(open("/dev/null", O_RDONLY), 2);
-
- /* Read previous pid file. */
-- if ((i = open(gconfig.pidfile,O_RDONLY)) > 0) {
-- l=read(i,buf,sizeof(buf)-1);
-- if (i < 0) {
-- log(LOG_LOG, "%s: Unable to read pid file [%s]\n",
-- __FUNCTION__, gconfig.pidfile);
-- }
-- buf[i] = '\0';
-- pid = atoi(buf);
--
-- /* If the previous server process is not still running,
-- write a new pid file immediately. */
-- if (pid && (pid == getpid () || kill (pid, 0) < 0)) {
-- unlink (gconfig.pidfile);
-- if ((i = open (gconfig.pidfile, O_WRONLY | O_CREAT, 0640)) >= 0)
-- {
-- snprintf (buf, sizeof(buf), "%d\n", (int)getpid());
-- write (i, buf, strlen(buf));
-- close (i);
-- pidfilewritten = 1;
-- }
-+ if((i = open(gconfig.pidfile,O_RDONLY)) > 0) {
-+ l=read(i,buf,sizeof(buf)-1);
-+ if (l >= 0) {
-+ buf[l] = '\0';
-+ pid = atoi(buf);
- }
-- else
-- {
-+ close(i);
-+
-+ /* if pid is read and process exist exit */
-+ if(pid && !kill(pid, 0)) {
- log(LOG_LOG, "%s: There's already a l2tpd server running.\n",
- __FUNCTION__);
- close(server_socket);
- exit(1);
- }
-+
-+ /* remove stalled pid file */
-+ unlink(gconfig.pidfile);
- }
-
- pid = setsid();
-
-- if(! pidfilewritten) {
-- unlink(gconfig.pidfile);
-- if ((i = open (gconfig.pidfile, O_WRONLY | O_CREAT, 0640)) >= 0) {
-- snprintf (buf, strlen(buf), "%d\n", (int)getpid());
-- write (i, buf, strlen(buf));
-- close (i);
-- pidfilewritten = 1;
-- }
-- }
-+ /* create new pid file */
-+ if ((i = open (gconfig.pidfile, O_WRONLY | O_CREAT, 0644)) >= 0) {
-+ snprintf (buf, sizeof(buf), "%d", (int)getpid());
-+ write (i, buf, strlen(buf));
-+ close (i);
-+ }
-+ else {
-+ log(LOG_LOG, "%s: could not write pid file %s error %d",
-+ __FUNCTION__, gconfig.pidfile, i);
-+ close(server_socket);
-+ exit(1);
-+ }
- }
-
-
--
- void init (int argc,char *argv[])
- {
- struct lac *lac;
-@@ -1103,10 +1082,6 @@
- }
- log (LOG_LOG, "l2tpd version " SERVER_VERSION " started on %s PID:%d\n",
- hostname, getpid ());
-- log (LOG_LOG,
-- "Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc.\n");
-- log (LOG_LOG, "Forked by Scott Balmos and David Stipp, (C) 2001\n");
-- log (LOG_LOG, "Inherited by Jeff McAdams, (C) 2002\n");
- listenaddr.s_addr = gconfig.listenaddr;
- log (LOG_LOG, "%s version %s on a %s, listening on IP address %s, port %d\n", uts.sysname,
- uts.release, uts.machine, inet_ntoa(listenaddr), gconfig.port);
---- l2tpd-0.70-pre20031121.orig/misc.c
-+++ l2tpd-0.70-pre20031121/misc.c
-@@ -301,3 +301,42 @@
- return -1;
- }
- }
-+
-+u_int16_t get16(u_int8_t *p) {
-+ return p[0] << 8 | p[1];
-+}
-+
-+u_int32_t get32(u_int8_t *p) {
-+ return p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3];
-+}
-+
-+u_int64_t get64(u_int8_t *p) {
-+ return (u_int64_t)p[0] << 56 | (u_int64_t)p[1] << 48 |
-+ (u_int64_t)p[2] << 40 | (u_int64_t)p[3] << 32 |
-+ (u_int64_t)p[4] << 24 | (u_int64_t)p[5] << 16 |
-+ (u_int64_t)p[6] << 8 | (u_int64_t)p[7];
-+}
-+
-+void set16(u_int8_t *cp, u_int16_t x) {
-+ *cp++ = x >> 8;
-+ *cp = x & 0xff;
-+}
-+
-+void set32(u_int8_t *cp, u_int32_t x) {
-+ *cp++ = x >> 24;
-+ *cp++ = (x >> 16) & 0xff;
-+ *cp++ = (x >> 8) & 0xff;
-+ *cp = x & 0xff;
-+}
-+
-+void set64(u_int8_t *cp, u_int64_t x) {
-+ *cp++ = x >> 56;
-+ *cp++ = (x >> 48) & 0xff;
-+ *cp++ = (x >> 40) & 0xff;
-+ *cp++ = (x >> 32) & 0xff;
-+ *cp++ = (x >> 24) & 0xff;
-+ *cp++ = (x >> 16) & 0xff;
-+ *cp++ = (x >> 8) & 0xff;
-+ *cp = x & 0xff;
-+}
-+
---- l2tpd-0.70-pre20031121.orig/avp.c
-+++ l2tpd-0.70-pre20031121/avp.c
-@@ -4,9 +4,12 @@
- * Layer Two Tunnelling Protocol Daemon
- * Copyright (C) 1998 Adtran, Inc.
- * Copyright (C) 2002 Jeff McAdams
-+ * Copyright (C) 2003 Jean-Francois Dive
- *
- * Mark Spencer
- *
-+ * 12/2003 parsing sanitization, Jean-Francois Dive
-+ *
- * This software is distributed under the terms
- * of the GPL, which you should have received
- * along with this source.
-@@ -20,50 +23,53 @@
- #include <netinet/in.h>
- #include "l2tp.h"
-
--#define AVP_MAX 39
-+/* TODO:
-+ * - Tie breaker.
-+ * - Clean Proxy Authentication solution.
-+ */
-
-+/*****************************************************************************/
- struct avp avps[] = {
--
-- {0, 1, &message_type_avp, "Message Type"},
-- {1, 1, &result_code_avp, "Result Code"},
-- {2, 1, &protocol_version_avp, "Protocol Version"},
-- {3, 1, &framing_caps_avp, "Framing Capabilities"},
-- {4, 1, &bearer_caps_avp, "Bearer Capabilities"},
-- {5, 0, NULL, "Tie Breaker"},
-- {6, 0, &firmware_rev_avp, "Firmware Revision"},
-- {7, 0, &hostname_avp, "Host Name"},
-- {8, 1, &vendor_avp, "Vendor Name"},
-- {9, 1, &assigned_tunnel_avp, "Assigned Tunnel ID"},
-- {10, 1, &receive_window_size_avp, "Receive Window Size"},
-- {11, 1, &challenge_avp, "Challenge"},
-- {12, 0, NULL, "Q.931 Cause Code"},
-- {13, 1, &chalresp_avp, "Challenge Response"},
-- {14, 1, &assigned_call_avp, "Assigned Call ID"},
-- {15, 1, &call_serno_avp, "Call Serial Number"},
-- {16, 1, NULL, "Minimum BPS"},
-- {17, 1, NULL, "Maximum BPS"},
-- {18, 1, &bearer_type_avp, "Bearer Type"},
-- {19, 1, &frame_type_avp, "Framing Type"},
-- {20, 1, &packet_delay_avp, "Packet Processing Delay"},
-- {21, 1, &dialed_number_avp, "Dialed Number"},
-- {22, 1, &dialing_number_avp, "Dialing Number"},
-- {23, 1, &sub_address_avp, "Sub-Address"},
-- {24, 1, &tx_speed_avp, "Transmit Connect Speed"},
-- {25, 1, &call_physchan_avp, "Physical channel ID"},
-- {26, 0, NULL, "Initial Received LCP Confreq"},
-- {27, 0, NULL, "Last Sent LCP Confreq"},
-- {28, 0, NULL, "Last Received LCP Confreq"},
-- {29, 1, &ignore_avp, "Proxy Authen Type"},
-- {30, 0, &ignore_avp, "Proxy Authen Name"},
-- {31, 0, &ignore_avp, "Proxy Authen Challenge"},
-- {32, 0, &ignore_avp, "Proxy Authen ID"},
-- {33, 1, &ignore_avp, "Proxy Authen Response"},
-- {34, 1, NULL, "Call Errors"},
-- {35, 1, &ignore_avp, "ACCM"},
-- {36, 1, &rand_vector_avp, "Random Vector"},
-- {37, 1, NULL, "Private Group ID"},
-- {38, 0, &rx_speed_avp, "Receive Connect Speed"},
-- {39, 1, &seq_reqd_avp, "Sequencing Required"}
-+ {0, AVP_F_MANDATORY|AVP_F_FIXLEN, 2, {0}, &message_type_avp, &validate_msgtype_avp, "Message Type"},
-+ {1, AVP_F_MANDATORY, MAXSTRLEN, {CDN, StopCCN}, &result_code_avp, &validate_gen_avp, "Result Code"},
-+ {2, AVP_F_MANDATORY|AVP_F_FIXLEN, 2, {SCCRP, SCCRQ}, &protocol_version_avp, &validate_gen_avp, "Protocol Version"},
-+ {3, AVP_F_MANDATORY|AVP_F_FIXLEN, 4, {SCCRP, SCCRQ}, &framing_caps_avp, &validate_gen_avp, "Framing Capabilities"},
-+ {4, AVP_F_MANDATORY|AVP_F_FIXLEN, 4, {SCCRP, SCCRQ}, &bearer_caps_avp, &validate_gen_avp, "Bearer Capabilities"},
-+ {5, 0, 0, {0}, NULL, NULL, "Tie Breaker"},
-+ {6, AVP_F_FIXLEN, 2, {SCCRP, SCCRQ}, &firmware_rev_avp, &validate_gen_avp, "Firmware Revision"},
-+ {7, AVP_F_ASCII, MAXSTRLEN, {SCCRP, SCCRQ}, &hostname_avp, &validate_gen_avp, "Host Name"},
-+ {8, AVP_F_MANDATORY|AVP_F_ASCII, MAXSTRLEN, {SCCRP, SCCRQ}, &vendor_avp, &validate_gen_avp, "Vendor Name"},
-+ {9, AVP_F_MANDATORY|AVP_F_FIXLEN, 2, {SCCRP, SCCRQ, StopCCN}, &assigned_tunnel_avp, &validate_gen_avp, "Assigned Tunnel ID"},
-+ {10, AVP_F_MANDATORY|AVP_F_FIXLEN, 2,{SCCRP, SCCRQ, OCRP, OCCN, StopCCN}, &receive_window_size_avp, &validate_gen_avp, "Receive Window Size"},
-+ {11, AVP_F_MANDATORY, 128, {SCCRP, SCCRQ}, &challenge_avp, &validate_gen_avp, "Challenge"},
-+ {12, 0, 0, {0}, NULL, NULL, "Q.931 Cause Code"},
-+ {13, AVP_F_MANDATORY, MD_SIG_SIZE, {SCCRP, SCCCN}, &chalresp_avp, &validate_gen_avp, "Challenge Response"},
-+ {14, AVP_F_MANDATORY|AVP_F_FIXLEN, 2, {CDN, ICRP, ICRQ, OCRP, OCRQ}, &assigned_session_avp, &validate_gen_avp, "Assigned Session ID"},
-+ {15, AVP_F_MANDATORY|AVP_F_FIXLEN, 4, {ICRQ, OCRQ}, &call_serno_avp, &validate_gen_avp, "Call Serial Number"},
-+ {16, AVP_F_MANDATORY|AVP_F_FIXLEN, 4, {0}, NULL, NULL, "Minimum BPS"},
-+ {17, AVP_F_MANDATORY|AVP_F_FIXLEN, 4, {0}, NULL, NULL, "Maximum BPS"},
-+ {18, AVP_F_MANDATORY|AVP_F_FIXLEN, 4, {ICRQ, OCRQ}, &bearer_type_avp, &validate_gen_avp, "Bearer Type"},
-+ {19, AVP_F_MANDATORY|AVP_F_FIXLEN, 4, {ICCN, OCRQ, OCCN}, &frame_type_avp, &validate_gen_avp, "Framing Type"},
-+ {20, AVP_F_MANDATORY|AVP_F_FIXLEN, 2, {ICRP, OCRQ, ICCN, OCRP, OCCN}, &packet_delay_avp, &validate_gen_avp, "Packet Processing Delay"},
-+ {21, AVP_F_MANDATORY|AVP_F_ASCII, MAXSTRLEN, {ICRQ, OCRQ}, &called_number_avp, &validate_gen_avp, "Called Number"},
-+ {22, AVP_F_MANDATORY|AVP_F_ASCII, MAXSTRLEN, {ICRQ}, &calling_number_avp, &validate_gen_avp, "Calling Number"},
-+ {23, AVP_F_MANDATORY|AVP_F_ASCII, MAXSTRLEN, {OCRP, ICRQ}, &sub_address_avp, &validate_gen_avp, "Sub-Address"},
-+ {24, AVP_F_MANDATORY|AVP_F_FIXLEN, 4, {ICCN, OCCN, OCRP}, &tx_speed_avp, &validate_gen_avp, "Transmit Connect Speed"},
-+ {25, AVP_F_MANDATORY|AVP_F_FIXLEN, 4, {ICRQ, OCRQ, OCRP, OCCN}, &call_physchan_avp, &validate_gen_avp, "Physical channel ID"},
-+ {26, 0, 0, {0}, NULL, NULL, "Initial Received LCP Confreq"},
-+ {27, 0, 0, {0}, NULL, NULL, "Last Sent LCP Confreq"},
-+ {28, 0, 0, {0}, NULL, NULL, "Last Received LCP Confreq"},
-+ {29, AVP_F_MANDATORY, 0, {0}, &ignore_avp, NULL, "Proxy Authen Type"},
-+ {30, 0, 0, {0}, &ignore_avp, NULL, "Proxy Authen Name"},
-+ {31, 0, 0, {0}, &ignore_avp, NULL, "Proxy Authen Challenge"},
-+ {32, 0, 0, {0}, &ignore_avp, NULL, "Proxy Authen ID"},
-+ {33, AVP_F_MANDATORY, 0, {0}, &ignore_avp, NULL, "Proxy Authen Response"},
-+ {34, AVP_F_MANDATORY|AVP_F_FIXLEN, 26, {0}, NULL, NULL, "Call Errors"},
-+ {35, AVP_F_MANDATORY|AVP_F_FIXLEN, 10, {0}, &ignore_avp, NULL, "ACCM"},
-+ {36, AVP_F_MANDATORY, 1024, {0}, &rand_vector_avp, &validate_gen_avp, "Random Vector"},
-+ {37, AVP_F_MANDATORY, 0, {0}, NULL, NULL, "Private Group ID"},
-+ {38, AVP_F_FIXLEN, 4, {ICCN, OCCN, OCRP}, &rx_speed_avp, &validate_gen_avp, "Receive Connect Speed"},
-+ {39, AVP_F_MANDATORY, 0, {ICCN, OCCN, OCRP}, &seq_reqd_avp, &validate_gen_avp, "Sequencing Required"}
- };
-
- char *msgtypes[] = {
-@@ -111,6 +117,7 @@
- "Call was connected but no appropriate framing was detect"
- };
-
-+/*****************************************************************************/
- void wrong_length (struct call *c, char *field, int expected, int found,
- int min)
- {
-@@ -126,12 +133,9 @@
- c->needclose = -1;
- }
-
--/*
-- * t, c, data, and datalen may be assumed to be defined for all avp's
-- */
--
--int message_type_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+/*****************************************************************************/
-+int validate_msgtype_avp(int attr, struct tunnel *t, struct call *c,
-+ void *data, int datalen)
- {
- /*
- * This will be with every control message. It is critical that this
-@@ -139,28 +143,9 @@
- * (assuming sanity check)
- */
-
-- _u16 *raw = data;
-- c->msgtype = ntohs (raw[3]);
-- if (datalen != 8)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG, "%s: wrong size (%d != 8)\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Message Type", 8, datalen, 0);
-- return -EINVAL;
-- }
-- if ((c->msgtype > MAX_MSG) || (!msgtypes[c->msgtype]))
-- {
-- if (DEBUG)
-- log (LOG_DEBUG, "%s: unknown message type %d\n", __FUNCTION__,
-- c->msgtype);
-- return -EINVAL;
-- }
-- if (debug_avp)
-- if (DEBUG)
-- log (LOG_DEBUG, "%s: message type %d (%s)\n", __FUNCTION__,
-- c->msgtype, msgtypes[c->msgtype]);
--#ifdef SANITY
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ c->msgtype = get16(p);
-+
- if (t->sanity)
- {
- /*
-@@ -172,11 +157,11 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate tunnel inside a call!\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
-
-- switch (c->msgtype)
-+ switch (get16(p))
- {
- case SCCRQ:
- if ((t->state != 0) && (t->state != SCCRQ))
-@@ -189,7 +174,7 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate SCCRQ with state != 0\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
- break;
-@@ -199,7 +184,7 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate SCCRP with state != SCCRQ!\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
- break;
-@@ -209,7 +194,7 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate SCCCN with state != SCCRP!\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
- break;
-@@ -219,7 +204,7 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate ICRQ when state != SCCCN\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
- if (c != t->self)
-@@ -227,7 +212,7 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate ICRQ on a call!\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
- break;
-@@ -237,7 +222,7 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate ICRP on tunnel!=SCCCN\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
- if (c->state != ICRQ)
-@@ -245,7 +230,7 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate ICRP when state != ICRQ\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
- break;
-@@ -255,7 +240,7 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate ICCN when state != ICRP\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
- break;
-@@ -265,7 +250,7 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate SLI when state != ICCN\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
- break;
-@@ -275,7 +260,7 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate OCRP on tunnel!=SCCCN\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
- if (c->state != OCRQ)
-@@ -283,7 +268,7 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate OCRP when state != OCRQ\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
- break;
-@@ -294,7 +279,7 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: attempting to negotiate OCCN when state != OCRQ\n",
-- __FUNCTION__);
-+ __func__);
- return -EINVAL;
- }
- break;
-@@ -303,72 +288,33 @@
- case Hello:
- break;
- default:
-- log (LOG_WARN, "%s: i don't know how to handle %s messages\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return -EINVAL;
-- }
-- }
--#endif
-- if (c->msgtype == ICRQ)
-- {
-- struct call *tmp;
-- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG, "%s: new incoming call\n", __FUNCTION__);
-- }
-- tmp = new_call (t);
-- if (!tmp)
-- {
-- log (LOG_WARN, "%s: unable to create new call\n", __FUNCTION__);
-+ log (LOG_WARN, "%s: unknown messages type %d\n",
-+ __func__, get16(p));
- return -EINVAL;
- }
-- tmp->next = t->call_head;
-- t->call_head = tmp;
-- t->count++;
-- /*
-- * Is this still safe to assume that the head will always
-- * be the most recent call being negotiated?
-- * Probably... FIXME anyway...
-- */
--
- }
-- return 0;
-+ return 0;
- }
-
--int rand_vector_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
--{
-- int size;
-- _u16 *raw = (_u16 *) data;
-- size = (raw[0] & 0x0FFF) - 6;
-- if (t->sanity)
-- {
-- if (size < 0)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG, "%s: Random vector too small (%d < 0)\n",
-- __FUNCTION__, size);
-- wrong_length (c, "Random Vector", 6, datalen, 1);
-- return -EINVAL;
-- }
-- if (size > MAX_VECTOR_SIZE)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG, "%s: Random vector too large (%d > %d)\n",
-- __FUNCTION__, datalen, MAX_VECTOR_SIZE);
-- wrong_length (c, "Random Vector", 6, datalen, 1);
-- return -EINVAL;
-- }
-- }
-- if (debug_avp)
-- log (LOG_DEBUG, "%s: Random Vector of %d octets\n", __FUNCTION__,
-- size);
-- t->chal_us.vector = (unsigned char *) &raw[3];
-- t->chal_us.vector_len = size;
-- return 0;
-+/*****************************************************************************/
-+int validate_gen_avp(int attr, struct tunnel *t, struct call *c,
-+ void *data, int datalen) {
-+ (void)data; (void)datalen;
-+ int i = 0, found = 0;
-+
-+ if(t->sanity) {
-+ for(i = 0; i < 8; i++) {
-+ if(c->msgtype == avps[attr].allowed_states[i])
-+ found++;
-+ }
-+ if(!found)
-+ return -EINVAL;
-+ }
-+ return 0;
- }
-
-+/* t, c, data, and datalen may be assumed to be defined for all avp's */
-+/*****************************************************************************/
- int ignore_avp (struct tunnel *t, struct call *c, void *data, int datalen)
- {
- /*
-@@ -383,94 +329,88 @@
- *
- */
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG, "%s : Ignoring AVP\n", __FUNCTION__);
-- }
-+ log (LOG_DEBUG, "%s : Ignoring AVP\n", __func__);
- return 0;
- }
-
--int seq_reqd_avp (struct tunnel *t, struct call *c, void *data, int datalen)
-+/*****************************************************************************/
-+int message_type_avp (struct tunnel *t, struct call *c, void *data,
-+ int avplen)
- {
--#ifdef SANITY
-- if (t->sanity)
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+
-+ if(!c->msgtype)
-+ c->msgtype = get16(p);
-+
-+ if ((c->msgtype > MAX_MSG) || (!msgtypes[c->msgtype]))
- {
-- if (datalen != 6)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is incorrect size. %d != 6\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Sequencing Required", 6, datalen, 1);
-- return -EINVAL;
-- }
-- switch (c->msgtype)
-+ log (LOG_DEBUG, "%s: unknown message type %d\n", __func__,
-+ c->msgtype);
-+ return -EINVAL;
-+ }
-+ if (debug_avp)
-+ log (LOG_DEBUG, "%s: message type %d (%s)\n", __func__,
-+ c->msgtype, msgtypes[c->msgtype]);
-+ if (c->msgtype == ICRQ)
-+ {
-+ struct call *tmp;
-+ if (debug_avp)
-+ log (LOG_DEBUG, "%s: new incoming call\n", __func__);
-+ tmp = new_call (t);
-+ if (!tmp)
- {
-- case ICCN:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: sequencing required not appropriate for %s!\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-+ log (LOG_WARN, "%s: unable to create new call\n", __func__);
- return -EINVAL;
- }
-+ tmp->next = t->call_head;
-+ t->call_head = tmp;
-+ t->count++;
-+ /*
-+ * Is this still safe to assume that the head will always
-+ * be the most recent call being negotiated?
-+ * Probably... FIXME anyway...
-+ */
- }
--#endif
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int rand_vector_avp (struct tunnel *t, struct call *c, void *data,
-+ int avplen)
-+{
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ int datalen = avplen - sizeof(struct avp_hdr);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG, "%s: peer requires sequencing.\n", __FUNCTION__);
-- }
-+ log (LOG_DEBUG, "%s: random vector len %d\n", __func__, datalen);
-+ t->chal_us.vector = (unsigned char *)p;
-+ t->chal_us.vector_len = datalen;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int seq_reqd_avp (struct tunnel *t, struct call *c, void *data, int datalen)
-+{
-+ if (debug_avp)
-+ log (LOG_DEBUG, "%s: peer requires sequencing.\n", __func__);
- c->seq_reqd = -1;
- return 0;
- }
-
-+/*****************************************************************************/
- int result_code_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+ int avplen)
- {
-- /*
-- * Find out what version of l2tp the other side is using.
-- * I'm not sure what we're supposed to do with this but whatever..
-- */
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ int datalen = avplen - sizeof(struct avp_hdr);
-+ u_int16_t result = get16(p);
-+ u_int16_t error = get16(p + 2);
-
-- int error;
-- int result;
-- _u16 *raw = data;
--#ifdef SANITY
-- if (t->sanity)
-- {
-- if (datalen < 10)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is incorrect size. %d < 10\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Result Code", 10, datalen, 1);
-- return -EINVAL;
-- }
-- switch (c->msgtype)
-- {
-- case CDN:
-- case StopCCN:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: result code not appropriate for %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- }
--#endif
-- result = ntohs (raw[3]);
-- error = ntohs (raw[4]);
- if ((c->msgtype == StopCCN) && ((result > 7) || (result < 1)))
- {
- if (DEBUG)
- log (LOG_DEBUG,
-- "%s: result code out of range (%d %d %d). Ignoring.\n",
-- __FUNCTION__, result, error, datalen);
-+ "%s: (StopCCN) result code out of range ! (1 < %d < 7)\n",
-+ __func__, result);
- return 0;
- }
-
-@@ -478,1112 +418,348 @@
- {
- if (DEBUG)
- log (LOG_DEBUG,
-- "%s: result code out of range (%d %d %d). Ignoring.\n",
-- __FUNCTION__, result, error, datalen);
-+ "%s: (CDN) result code out of range !(1 < %d < 11)\n",
-+ __func__, result);
- return 0;
- }
-
- c->error = error;
- c->result = result;
-- safe_copy (c->errormsg, (char *) &raw[5], datalen - 10);
-+ memcpy(c->errormsg, (char*)p + 4, datalen - 4);
-+ c->errormsg[datalen - 4] = '\0';
-+
- if (debug_avp)
- {
-- if (DEBUG && (c->msgtype == StopCCN))
-+ if(c->msgtype == StopCCN)
- {
- log (LOG_DEBUG,
- "%s: peer closing for reason %d (%s), error = %d (%s)\n",
-- __FUNCTION__, result, stopccn_result_codes[result], error,
-+ __func__, result, stopccn_result_codes[result], error,
- c->errormsg);
- }
- else
- {
- log (LOG_DEBUG,
- "%s: peer closing for reason %d (%s), error = %d (%s)\n",
-- __FUNCTION__, result, cdn_result_codes[result], error,
-+ __func__, result, cdn_result_codes[result], error,
- c->errormsg);
- }
- }
- return 0;
- }
-
-+/*****************************************************************************/
- int protocol_version_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+ int avplen)
- {
-- /*
-- * Find out what version of l2tp the other side is using.
-- * I'm not sure what we're supposed to do with this but whatever..
-- */
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-
-- int ver;
-- _u16 *raw = data;
--#ifdef SANITY
-- if (t->sanity)
-- {
-- if (datalen != 8)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is incorrect size. %d != 8\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Protocol Version", 8, datalen, 1);
-- return -EINVAL;
-- }
-- switch (c->msgtype)
-- {
-- case SCCRP:
-- case SCCRQ:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: protocol version not appropriate for %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- }
--#endif
-- ver = ntohs (raw[3]);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: peer is using version %d, revision %d.\n", __FUNCTION__,
-- (ver >> 8), ver & 0xFF);
-- }
-+ log (LOG_DEBUG, "%s: peer is using version %d, revision %d.\n",
-+ __func__,*p, *(p+1));
- return 0;
- }
-
-+/*****************************************************************************/
- int framing_caps_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+ int avplen)
- {
-- /*
-- * Retrieve the framing capabilities
-- * from the peer
-- */
--
-- int caps;
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ u_int16_t caps = get16(p + 2);
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case SCCRP:
-- case SCCRQ:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: framing capabilities not appropriate for %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 10)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is incorrect size. %d != 10\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Framming Capabilities", 10, datalen, 0);
-- return -EINVAL;
-- }
-- }
--#endif
-- caps = ntohs (raw[4]);
- if (debug_avp)
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: supported peer frames:%s%s\n", __FUNCTION__,
-- caps & ASYNC_FRAMING ? " async" : "",
-- caps & SYNC_FRAMING ? " sync" : "");
-+ log (LOG_DEBUG, "%s: supported peer frames:%s %s\n", __func__,
-+ caps & ASYNC_FRAMING ? "async" : "",
-+ caps & SYNC_FRAMING ? "sync" : "");
-+
- t->fc = caps & (ASYNC_FRAMING | SYNC_FRAMING);
- return 0;
- }
-
-+/*****************************************************************************/
- int bearer_caps_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+ int avplen)
- {
-- /*
-- * What kind of bearer channels does our peer support?
-- */
-- int caps;
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ u_int16_t caps = get16(p + 2);
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case SCCRP:
-- case SCCRQ:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: bearer capabilities not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 10)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is incorrect size. %d != 10\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Bearer Capabilities", 10, datalen, 0);
-- return -EINVAL;
-- }
-- }
--#endif
-- caps = ntohs (raw[4]);
- if (debug_avp)
-- {
-- if (DEBUG)
-- {
-- log (LOG_DEBUG,
-- "%s: supported peer bearers:%s%s\n",
-- __FUNCTION__,
-- caps & ANALOG_BEARER ? " analog" : "",
-- caps & DIGITAL_BEARER ? " digital" : "");
-- }
-+ log (LOG_DEBUG, "%s: supported peer bearers:%s %s\n",
-+ __func__,
-+ caps & ANALOG_BEARER ? "analog" : "",
-+ caps & DIGITAL_BEARER ? "digital" : "");
-
-- }
- t->bc = caps & (ANALOG_BEARER | DIGITAL_BEARER);
- return 0;
- }
-
--
--/* FIXME: I need to handle tie breakers eventually */
--
-+/*****************************************************************************/
- int firmware_rev_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+ int avplen)
- {
-- /*
-- * Report and record remote firmware version
-- */
-- int ver;
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case SCCRP:
-- case SCCRQ:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: firmware revision not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 8)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is incorrect size. %d != 8\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Firmware Revision", 8, datalen, 0);
-- return -EINVAL;
-- }
-- }
--#endif
-- ver = ntohs (raw[3]);
-+ t->firmware = get16(p);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: peer reports firmware version %d (0x%.4x)\n",
-- __FUNCTION__, ver, ver);
-- }
-- t->firmware = ver;
-+ log (LOG_DEBUG, "%s: peer reports firmware version %d (0x%.4X)\n",
-+ __func__, t->firmware, t->firmware);
- return 0;
- }
-
-+/*****************************************************************************/
- int bearer_type_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+ int avplen)
- {
-- /*
-- * What kind of bearer channel is the call on?
-- */
-- int b;
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case ICRQ:
-- case OCRQ:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: bearer type not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 10)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is incorrect size. %d != 10\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Bearer Type", 10, datalen, 0);
-- return -EINVAL;
-- }
-- }
--#endif
-- b = ntohs (raw[4]);
-+ t->call_head->bearer = get16(p + 2);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: peer bears:%s\n", __FUNCTION__,
-- b & ANALOG_BEARER ? " analog" : "digital");
-- }
-- t->call_head->bearer = b;
-+ log (LOG_DEBUG, "%s: peer bears: %s\n", __func__,
-+ (t->call_head->bearer & ANALOG_BEARER) ? "analog" : "digital");
- return 0;
- }
-
--int frame_type_avp (struct tunnel *t, struct call *c, void *data, int datalen)
-+/*****************************************************************************/
-+int frame_type_avp (struct tunnel *t, struct call *c, void *data, int avplen)
- {
-- /*
-- * What kind of frame channel is the call on?
-- */
-- int b;
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case ICCN:
-- case OCRQ:
-- case OCCN:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: frame type not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 10)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is incorrect size. %d != 10\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Frame Type", 10, datalen, 0);
-- return -EINVAL;
-- }
-- }
--#endif
-- b = ntohs (raw[4]);
-+ c->frame = get16(p + 2);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: peer uses:%s frames\n", __FUNCTION__,
-- b & ASYNC_FRAMING ? " async" : "sync");
-- }
-- c->frame = b;
-+ log (LOG_DEBUG, "%s: peer uses:%s frames\n", __func__,
-+ (c->frame & ASYNC_FRAMING) ? "async" : "sync");
- return 0;
- }
-
--int hostname_avp (struct tunnel *t, struct call *c, void *data, int datalen)
-+/*****************************************************************************/
-+int hostname_avp (struct tunnel *t, struct call *c, void *data, int avplen)
- {
-- /*
-- * What is the peer's name?
-- */
-- int size;
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ int datalen = avplen - sizeof(struct avp_hdr);
-+
-+ memcpy(t->hostname, p, datalen);
-+ t->hostname[datalen] = '\0';
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case SCCRP:
-- case SCCRQ:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: hostname not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen < 6)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is too small. %d < 6\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Hostname", 6, datalen, 1);
-- return -EINVAL;
-- }
-- }
--#endif
-- size = raw[0] & 0x0FFF;
-- if (size > MAXSTRLEN - 1)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG, "%s: truncating reported hostname (size is %d)\n",
-- __FUNCTION__, size);
-- size = MAXSTRLEN - 1;
-- }
-- safe_copy (t->hostname, (char *) &raw[3], size - 6);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: peer reports hostname '%s'\n", __FUNCTION__,
-- t->hostname);
-- }
-+ log (LOG_DEBUG, "%s: peer reports hostname '%s'\n", __func__,
-+ t->hostname);
-+
- return 0;
- }
-
--int dialing_number_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+/*****************************************************************************/
-+int calling_number_avp (struct tunnel *t, struct call *c, void *data,
-+ int avplen)
- {
-- /*
-- * What is the peer's name?
-- */
-- int size;
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ int datalen = avplen - sizeof(struct avp_hdr);
-+
-+ memcpy(t->call_head->dialing, p, datalen);
-+ t->call_head->dialing[datalen] = '\0';
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case ICRQ:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: dialing number not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen < 6)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is too small. %d < 6\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Dialing Number", 6, datalen, 1);
-- return -EINVAL;
-- }
-- }
--#endif
-- size = raw[0] & 0x0FFF;
-- if (size > MAXSTRLEN - 1)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: truncating reported dialing number (size is %d)\n",
-- __FUNCTION__, size);
-- size = MAXSTRLEN - 1;
-- }
-- safe_copy (t->call_head->dialing, (char *) &raw[3], size);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: peer reports dialing number '%s'\n", __FUNCTION__,
-- t->call_head->dialing);
-- }
-+ log (LOG_DEBUG, "%s: peer reports dialing number '%s'\n", __func__,
-+ t->call_head->dialing);
-+
- return 0;
- }
-
--int dialed_number_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+/*****************************************************************************/
-+int called_number_avp (struct tunnel *t, struct call *c, void *data,
-+ int avplen)
- {
-- /*
-- * What is the peer's name?
-- */
-- int size;
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ int datalen = avplen - sizeof(struct avp_hdr);
-+
-+ memcpy(t->call_head->dialed, p, datalen);
-+ t->call_head->dialed[datalen] = '\0';
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case OCRQ:
-- case ICRQ:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: dialed number not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen < 6)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is too small. %d < 6\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Dialed Number", 6, datalen, 1);
-- return -EINVAL;
-- }
-- }
--#endif
-- size = raw[0] & 0x0FFF;
-- if (size > MAXSTRLEN - 1)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: truncating reported dialed number (size is %d)\n",
-- __FUNCTION__, size);
-- size = MAXSTRLEN - 1;
-- }
-- safe_copy (t->call_head->dialed, (char *) &raw[3], size);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: peer reports dialed number '%s'\n", __FUNCTION__,
-- t->call_head->dialed);
-- }
-+ log (LOG_DEBUG, "%s: peer reports dialed number '%s'\n", __func__,
-+ t->call_head->dialed);
-+
- return 0;
- }
-
-+/*****************************************************************************/
- int sub_address_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+ int avplen)
- {
-- /*
-- * What is the peer's name?
-- */
-- int size;
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ int datalen = avplen - sizeof(struct avp_hdr);
-+
-+ memcpy(t->call_head->subaddy, p, datalen);
-+ t->call_head->subaddy[datalen] = '\0';
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case OCRP:
-- case ICRQ:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: sub_address not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen < 6)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is too small. %d < 6\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Sub-address", 6, datalen, 1);
-- return -EINVAL;
-- }
-- }
--#endif
-- size = raw[0] & 0x0FFF;
-- if (size > MAXSTRLEN - 1)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: truncating reported sub address (size is %d)\n",
-- __FUNCTION__, size);
-- size = MAXSTRLEN - 1;
-- }
-- safe_copy (t->call_head->subaddy, (char *) &raw[3], size);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: peer reports subaddress '%s'\n", __FUNCTION__,
-- t->call_head->subaddy);
-- }
-+ log (LOG_DEBUG, "%s: peer reports subaddress '%s'\n", __func__,
-+ t->call_head->subaddy);
- return 0;
- }
-
--int vendor_avp (struct tunnel *t, struct call *c, void *data, int datalen)
-+/*****************************************************************************/
-+int vendor_avp (struct tunnel *t, struct call *c, void *data, int avplen)
- {
-- /*
-- * What vendor makes the other end?
-- */
-- int size;
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ int datalen = avplen - sizeof(struct avp_hdr);
-+
-+ memcpy(t->vendor, p, datalen);
-+ t->vendor[datalen] = '\0';
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case SCCRP:
-- case SCCRQ:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: vendor not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen < 6)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is too small. %d < 6\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Vendor", 6, datalen, 1);
-- return -EINVAL;
-- }
-- }
--#endif
-- size = raw[0] & 0x0FFF;
-- if (size > MAXSTRLEN - 1)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG, "%s: truncating reported vendor (size is %d)\n",
-- __FUNCTION__, size);
-- size = MAXSTRLEN - 1;
-- }
-- safe_copy (t->vendor, (char *) &raw[3], size);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: peer reports vendor '%s'\n", __FUNCTION__, t->vendor);
-- }
-+ log (LOG_DEBUG, "%s: peer reports vendor '%s'\n", __func__, t->vendor);
- return 0;
- }
-
--int challenge_avp (struct tunnel *t, struct call *c, void *data, int datalen)
-+/*****************************************************************************/
-+int challenge_avp (struct tunnel *t, struct call *c, void *data, int avplen)
- {
-- /*
-- * We are sent a challenge
-- */
-- _u16 *raw = data;
-- int size;
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case SCCRP:
-- case SCCRQ:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: challenge not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen < 6)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is too small. %d < 6\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "challenge", 6, datalen, 1);
-- return -EINVAL;
-- }
-- }
--#endif
-- /* size = raw[0] & 0x0FFF; */
-- /* length field of AVP's is only 10 bits long, not 12 */
-- size = raw[0] & 0x03FF;
-- size -= sizeof (struct avp_hdr);
-- /* if (size != MD_SIG_SIZE)
-- {
-- log (LOG_DEBUG, "%s: Challenge is not the right length (%d != %d)\n",
-- __FUNCTION__, size, MD_SIG_SIZE);
-- return -EINVAL;
-- } */
-- t->chal_us.challenge = malloc(size+1);
-- if (t->chal_us.challenge == NULL)
-- {
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ int datalen = avplen - sizeof(struct avp_hdr);
-+
-+ t->chal_us.challenge = calloc(datalen, 1);
-+ if (!t->chal_us.challenge)
- return -ENOMEM;
-- }
-- memset(t->chal_us.challenge, 0, size+1);
-- bcopy (&raw[3], (t->chal_us.challenge), size);
-+ memcpy(t->chal_us.challenge, p, datalen);
- t->chal_us.state = STATE_CHALLENGED;
-+
- if (debug_avp)
-- {
-- log (LOG_DEBUG, "%s: challenge avp found\n", __FUNCTION__);
-- }
-+ log (LOG_DEBUG, "%s: challenge avp found\n", __func__);
-+
- return 0;
- }
-
--int chalresp_avp (struct tunnel *t, struct call *c, void *data, int datalen)
-+/*****************************************************************************/
-+int chalresp_avp (struct tunnel *t, struct call *c, void *data, int avplen)
- {
-- /*
-- * We are sent a challenge
-- */
-- _u16 *raw = data;
-- int size;
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case SCCRP:
-- case SCCCN:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: challenge response not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen < 6)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is too small. %d < 6\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "challenge", 6, datalen, 1);
-- return -EINVAL;
-- }
-- }
--#endif
-- size = raw[0] & 0x0FFF;
-- size -= sizeof (struct avp_hdr);
-- if (size != MD_SIG_SIZE)
-- {
-- log (LOG_DEBUG, "%s: Challenge is not the right length (%d != %d)\n",
-- __FUNCTION__, size, MD_SIG_SIZE);
-- return -EINVAL;
-- }
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-
-- bcopy (&raw[3], t->chal_them.reply, MD_SIG_SIZE);
-- if (debug_avp)
-- {
-- log (LOG_DEBUG, "%s: Challenge reply found\n", __FUNCTION__);
-- }
-+ memcpy(t->chal_them.reply, p, MD_SIG_SIZE);
-+ if(debug_avp)
-+ log(LOG_DEBUG, "%s: Challenge reply found\n", __func__);
- return 0;
- }
-
-+/*****************************************************************************/
- int assigned_tunnel_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+ int avplen)
- {
-- /*
-- * What is their TID that we must use from now on?
-- */
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ u_int16_t id = get16(p);
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case SCCRP:
-- case SCCRQ:
-- case StopCCN:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: tunnel ID not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 8)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is wrong size. %d != 8\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Assigned Tunnel ID", 8, datalen, 0);
-- return -EINVAL;
-- }
-- }
--#endif
- if (c->msgtype == StopCCN)
-- {
-- t->qtid = ntohs (raw[3]);
-- }
-+ t->qtid = id;
- else
-- {
-- t->tid = ntohs (raw[3]);
-- }
-+ t->tid = id;
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: using peer's tunnel %d\n", __FUNCTION__,
-- ntohs (raw[3]));
-- }
-+ log (LOG_DEBUG, "%s: using peer's tunnel %d\n", __func__, id);
- return 0;
- }
-
--int assigned_call_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+/*****************************************************************************/
-+int assigned_session_avp (struct tunnel *t, struct call *c, void *data,
-+ int avplen)
- {
-- /*
-- * What is their CID that we must use from now on?
-- */
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-+ u_int16_t id = get16(p);
-+
-+ switch(c->msgtype) {
-+ case CDN:
-+ case ICRP:
-+ case OCRP:
-+ c->cid = id;
-+ break;
-+ case ICRQ:
-+ t->call_head->cid = id;
-+ break;
-+ };
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case CDN:
-- case ICRP:
-- case ICRQ:
-- case OCRP: /* jz: deleting the debug message */
-- break;
-- case OCRQ:
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: call ID not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 8)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is wrong size. %d != 8\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Assigned Call ID", 8, datalen, 0);
-- return -EINVAL;
-- }
-- }
--#endif
-- if (c->msgtype == CDN)
-- {
-- c->qcid = ntohs (raw[3]);
-- }
-- else if (c->msgtype == ICRQ)
-- {
-- t->call_head->cid = ntohs (raw[3]);
-- }
-- else if (c->msgtype == ICRP)
-- {
-- c->cid = ntohs (raw[3]);
-- }
-- else if (c->msgtype == OCRP)
-- { /* jz: copy callid to c->cid */
-- c->cid = ntohs (raw[3]);
-- }
-- else
-- {
-- log (LOG_DEBUG, "%s: Dunno what to do when it's state %s!\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- }
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: using peer's call %d\n", __FUNCTION__, ntohs (raw[3]));
-- }
-+ log (LOG_DEBUG, "%s: assigned session id: %d\n", __func__, id);
- return 0;
- }
-
-+/*****************************************************************************/
- int packet_delay_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+ int avplen)
- {
-- /*
-- * What is their CID that we must use from now on?
-- */
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case ICRP:
-- case OCRQ:
-- case ICCN:
-- case OCRP:
-- case OCCN:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: packet delay not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 8)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is wrong size. %d != 8\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Assigned Call ID", 8, datalen, 0);
-- return -EINVAL;
-- }
-- }
--#endif
-- c->ppd = ntohs (raw[3]);
-+ c->ppd = get16(p);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: peer's delay is %d 1/10's of a second\n", __FUNCTION__,
-- ntohs (raw[3]));
-- }
-+ log (LOG_DEBUG, "%s: peer's delay is %d 1/10's of a second\n", __func__,
-+ c->ppd);
- return 0;
- }
-
--int call_serno_avp (struct tunnel *t, struct call *c, void *data, int datalen)
-+/*****************************************************************************/
-+int call_serno_avp (struct tunnel *t, struct call *c, void *data, int avplen)
- {
- /*
- * What is the serial number of the call?
- */
-- _u16 *raw = data;
--
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case ICRQ:
-- case OCRQ:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: call ID not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 10)
-- {
--#ifdef STRICT
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is wrong size. %d != 10\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Serial Number", 10, datalen, 0);
-- return -EINVAL;
--#else
-- log (LOG_DEBUG,
-- "%s: peer is using old style serial number. Will be invalid.\n",
-- __FUNCTION__);
--#endif
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-
-- }
-- }
--#endif
-- t->call_head->serno = (((unsigned int) ntohs (raw[3])) << 16) |
-- ((unsigned int) ntohs (raw[4]));
-+ t->call_head->serno = get32(p);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: serial number is %d\n", __FUNCTION__,
-- t->call_head->serno);
-- }
-+ log (LOG_DEBUG, "%s: serial number is %d\n", __func__,
-+ t->call_head->serno);
- return 0;
- }
-
--int rx_speed_avp (struct tunnel *t, struct call *c, void *data, int datalen)
-+/*****************************************************************************/
-+int rx_speed_avp (struct tunnel *t, struct call *c, void *data, int avplen)
- {
-- /*
-- * What is the received baud rate of the call?
-- */
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case ICCN:
-- case OCCN:
-- case OCRP:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: rx connect speed not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 10)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is wrong size. %d != 10\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Connect Speed (RX)", 10, datalen, 0);
-- return -EINVAL;
-- }
-- }
--#endif
-- c->rxspeed = (((unsigned int) ntohs (raw[3])) << 16) |
-- ((unsigned int) ntohs (raw[4]));
-- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: receive baud rate is %d\n", __FUNCTION__, c->rxspeed);
-- }
-+ c->rxspeed = get32(p);
-+ if(debug_avp)
-+ log(LOG_DEBUG, "%s: receive baud rate is %d\n", __func__, c->rxspeed);
- return 0;
- }
-
--int tx_speed_avp (struct tunnel *t, struct call *c, void *data, int datalen)
-+/*****************************************************************************/
-+int tx_speed_avp (struct tunnel *t, struct call *c, void *data, int avplen)
- {
-- /*
-- * What is the tranmsit baud rate of the call?
-- */
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case ICCN:
-- case OCCN:
-- case OCRP:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: tx connect speed not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 10)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is wrong size. %d != 10\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Connect Speed (tx)", 10, datalen, 0);
-- return -EINVAL;
-- }
-- }
--#endif
-- c->txspeed = (((unsigned int) ntohs (raw[3])) << 16) |
-- ((unsigned int) ntohs (raw[4]));
-+ c->txspeed = get32(p);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: transmit baud rate is %d\n", __FUNCTION__, c->txspeed);
-- }
-+ log (LOG_DEBUG, "%s: transmit baud rate is %d\n",
-+ __func__, c->txspeed);
- return 0;
- }
-+
-+/*****************************************************************************/
- int call_physchan_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+ int avplen)
- {
-- /*
-- * What is the physical channel?
-- */
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case ICRQ:
-- case OCRQ:
-- case OCRP:
-- case OCCN:
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: physical channel not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 10)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is wrong size. %d != 10\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Physical Channel", 10, datalen, 0);
-- return -EINVAL;
-- }
-- }
--#endif
-- t->call_head->physchan = (((unsigned int) ntohs (raw[3])) << 16) |
-- ((unsigned int) ntohs (raw[4]));
-+ t->call_head->physchan = get32(p);
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: physical channel is %d\n", __FUNCTION__,
-- t->call_head->physchan);
-- }
-+ log(LOG_DEBUG, "%s: physical channel is %d\n", __func__,
-+ t->call_head->physchan);
- return 0;
- }
-
-+/*****************************************************************************/
- int receive_window_size_avp (struct tunnel *t, struct call *c, void *data,
-- int datalen)
-+ int avplen)
- {
-- /*
-- * What is their RWS?
-- */
-- _u16 *raw = data;
-+ u_int8_t *p = data + sizeof(struct avp_hdr);
-
--#ifdef SANITY
-- if (t->sanity)
-- {
-- switch (c->msgtype)
-- {
-- case SCCRP:
-- case SCCRQ:
-- case OCRP: /* jz */
-- case OCCN: /* jz */
-- case StopCCN:
--/* case ICRP:
-- case ICCN: */
-- break;
-- default:
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: RWS not appropriate for message %s. Ignoring.\n",
-- __FUNCTION__, msgtypes[c->msgtype]);
-- return 0;
-- }
-- if (datalen != 8)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: avp is wrong size. %d != 8\n", __FUNCTION__,
-- datalen);
-- wrong_length (c, "Receive Window Size", 8, datalen, 0);
-- return -EINVAL;
-- }
-- }
--#endif
-- t->rws = ntohs (raw[3]);
-+ t->rws = get16(p);
- /* if (c->rws >= 0)
- c->fbit = FBIT; */
- if (debug_avp)
-- {
-- if (DEBUG)
-- log (LOG_DEBUG,
-- "%s: peer wants RWS of %d. Will use flow control.\n",
-- __FUNCTION__, t->rws);
-- }
-+ log (LOG_DEBUG, "%s: peer wants RWS of %d. Will use flow control.\n",
-+ __func__, t->rws);
- return 0;
- }
-
-
-+/*****************************************************************************/
- int handle_avps (struct buffer *buf, struct tunnel *t, struct call *c)
- {
- /*
-@@ -1594,82 +770,100 @@
-
- struct avp_hdr *avp;
- int len = buf->len - sizeof (struct control_hdr);
-+ u_int16_t rlen = 0;
-+ u_int16_t attr = 0;
- int firstavp = -1;
-- int hidlen;
-+ int hidlen = 0;
- char *data = buf->start + sizeof (struct control_hdr);
- avp = (struct avp_hdr *) data;
-+
- if (debug_avp)
- log (LOG_DEBUG, "%s: handling avp's for tunnel %d, call %d\n",
-- __FUNCTION__, t->ourtid, c->ourcid);
-+ __func__, t->ourtid, c->ourcid);
-+
-+ if(len < 6) {
-+ log (LOG_WARN, "%s: packet too small\n", __func__);
-+ set_error(c, ERROR_LENGTH, "Invalid message length");
-+ return -EINVAL;
-+ }
-+
- while (len > 0)
- {
-- /* Go ahead and byte-swap the header */
-- swaps (avp, sizeof (struct avp_hdr));
-- if (avp->attr > AVP_MAX)
-+ rlen = get16((u_int8_t*)&avp->length);
-+ attr = get16((u_int8_t*)&avp->attr);
-+
-+ /* AVP header checks */
-+ if (attr > AVP_MAX)
- {
-- if (AMBIT (avp->length))
-+ if (AMBIT(rlen))
- {
- log (LOG_WARN,
-- "%s: dont know how to handle mandatory attribute %d. Closing %s.\n"
-- __FUNCTION__, avp->attr,
-- (c != t->self) ? "call" : "tunnel");
-- set_error (c, VENDOR_ERROR,
-- "mandatory attribute %d cannot be handled",
-- avp->attr);
-- c->needclose = -1;
-+ "%s: unhandeled mandatory attribute %d. Closing %s.\n",
-+ __func__, attr, (c != t->self) ? "call" : "tunnel");
-+ set_error (c, VENDOR_ERROR,
-+ "mandatory attribute %d cannot be handled", attr);
- return -EINVAL;
- }
- else
- {
- if (DEBUG)
- log (LOG_WARN,
-- "%s: dont know how to handle atribute %d.\n",
-- __FUNCTION__, avp->attr);
-+ "%s: handeled attribute %d.\n",
-+ __func__, attr);
- goto next;
- }
- }
-- if (ALENGTH (avp->length) > len)
-+ if (ALENGTH (rlen) > len)
- {
- log (LOG_WARN,
-- "%s: AVP received with length > remaining packet length!\n",
-- __FUNCTION__);
-+ "%s: AVP reported length > remaining packet length\n",
-+ __func__);
- set_error (c, ERROR_LENGTH, "Invalid AVP length");
-- c->needclose = -1;
- return -EINVAL;
- }
-- if (avp->attr && firstavp)
-+ if (ALENGTH (rlen) < sizeof (struct avp_hdr))
- {
-- log (LOG_WARN, "%s: First AVP was not message type.\n",
-- __FUNCTION__);
-- set_error (c, VENDOR_ERROR, "First AVP must be message type");
-- c->needclose = -1;
-+ log (LOG_WARN, "%s: AVP reported length too small (%d).\n",
-+ __func__, ALENGTH (rlen));
-+ set_error (c, ERROR_LENGTH, "AVP too small");
- return -EINVAL;
- }
-- if (ALENGTH (avp->length) < sizeof (struct avp_hdr))
-+ if (avps[attr].sz) {
-+ if((avps[attr].flags & AVP_F_FIXLEN) ?
-+ (ALENGTH(rlen) - sizeof(struct avp_hdr)) != avps[attr].sz :
-+ (ALENGTH(rlen) - sizeof(struct avp_hdr)) > avps[attr].sz) {
-+ log (LOG_DEBUG, "%s: %s avp size mismatch (%d %s %d)\n",
-+ __func__,
-+ avps[attr].description,
-+ (avps[attr].flags & AVP_F_FIXLEN) ? "!=" : "<",
-+ ALENGTH(rlen), avps[attr].sz);
-+ set_error (c, ERROR_LENGTH, "AVP size check failed");
-+ return -EINVAL;
-+ }
-+ }
-+ if (attr && firstavp)
- {
-- log (LOG_WARN, "%s: AVP with too small of size (%d).\n",
-- __FUNCTION__, ALENGTH (avp->length));
-- set_error (c, ERROR_LENGTH, "AVP too small");
-- c->needclose = -1;
-+ log (LOG_WARN, "%s: First AVP was not message type.\n",
-+ __func__);
-+ set_error (c, VENDOR_ERROR, "First AVP must be message type");
- return -EINVAL;
- }
-- if (AZBITS (avp->length))
-+ if (AZBITS (rlen))
- {
-- log (LOG_WARN, "%s: %sAVP has reserved bits set.\n", __FUNCTION__,
-- AMBIT (avp->length) ? "Mandatory " : "");
-- if (AMBIT (avp->length))
-+ log (LOG_WARN, "%s: %sAVP has reserved bits set.\n", __func__,
-+ AMBIT (rlen) ? "Mandatory " : "");
-+ if (AMBIT (rlen))
- {
- set_error (c, ERROR_RESERVED, "reserved bits set in AVP");
-- c->needclose = -1;
- return -EINVAL;
- }
- goto next;
- }
-- if (AHBIT (avp->length))
-+
-+ /* decryption */
-+ if (AHBIT (rlen))
- {
--#ifdef DEBUG_HIDDEN
-- log (LOG_DEBUG, "%s: Hidden bit set on AVP.\n", __FUNCTION__);
--#endif
-+ log (LOG_DEBUG, "%s: Hidden bit set on AVP.\n", __func__);
- /* We want to rewrite the AVP as an unhidden AVP
- and then pass it along as normal. Remeber how
- long the AVP was in the first place though! */
-@@ -1678,12 +872,11 @@
- {
- if (debug_avp)
- log (LOG_WARN, "%s: Unable to handle hidden %sAVP\n:",
-- __FUNCTION__,
-- (AMBIT (avp->length) ? "mandatory " : ""));
-- if (AMBIT (avp->length))
-+ __func__,
-+ (AMBIT (rlen) ? "mandatory " : ""));
-+ if (AMBIT (rlen))
- {
- set_error (c, VENDOR_ERROR, "Invalid Hidden AVP");
-- c->needclose = -1;
- return -EINVAL;
- }
- goto next;
-@@ -1696,17 +889,43 @@
- }
- else
- hidlen = 0;
-- if (avps[avp->attr].handler)
-+
-+ /* validate */
-+ if (avps[attr].validate)
-+ {
-+ if(avps[attr].validate(attr, t, c, avp, ALENGTH (rlen))) {
-+ if (AMBIT (rlen))
-+ {
-+ log (LOG_WARN,
-+ "%s: verification of AVP %d (%s) failed.\n",
-+ __func__, attr,
-+ avps[attr].description);
-+ set_error (c, VENDOR_ERROR, "processing failed on mandatory AVP");
-+ return -EINVAL;
-+ }
-+ else
-+ {
-+ if (DEBUG)
-+ log (LOG_DEBUG,
-+ "%s: Bad exit status handling attribute %d (%s).\n",
-+ __func__, attr,
-+ avps[attr].description);
-+ }
-+ }
-+ }
-+
-+ /* handling */
-+ if (avps[attr].handle)
- {
-- if (avps[avp->attr].handler (t, c, avp, ALENGTH (avp->length)))
-+ if (avps[attr].handle(t, c, avp, ALENGTH (rlen)))
- {
-- if (AMBIT (avp->length))
-+ if (AMBIT (rlen))
- {
- log (LOG_WARN,
-- "%s: Bad exit status handling attribute %d (%s) on mandatory packet.\n",
-- __FUNCTION__, avp->attr,
-- avps[avp->attr].description);
-- c->needclose = -1;
-+ "%s: Bad exit status handling mandatory attribute %d (%s).\n",
-+ __func__, attr,
-+ avps[attr].description);
-+ set_error (c, VENDOR_ERROR, "processing failed on mandatory AVP");
- return -EINVAL;
- }
- else
-@@ -1714,29 +933,31 @@
- if (DEBUG)
- log (LOG_DEBUG,
- "%s: Bad exit status handling attribute %d (%s).\n",
-- __FUNCTION__, avp->attr,
-- avps[avp->attr].description);
-+ __func__, attr,
-+ avps[attr].description);
- }
- }
- }
- else
- {
-- if (AMBIT (avp->length))
-+ if (AMBIT (rlen))
- {
- log (LOG_WARN,
- "%s: No handler for mandatory attribute %d (%s). Closing %s.\n",
-- __FUNCTION__, avp->attr, avps[avp->attr].description,
-+ __func__, attr,
-+ avps[attr].description,
- (c != t->self) ? "call" : "tunnel");
- set_error (c, VENDOR_ERROR, "No handler for attr %d (%s)\n",
-- avp->attr, avps[avp->attr].description);
-+ attr,
-+ avps[attr].description);
- return -EINVAL;
- }
- else
- {
- if (DEBUG)
- log (LOG_WARN, "%s: no handler for atribute %d (%s).\n",
-- __FUNCTION__, avp->attr,
-- avps[avp->attr].description);
-+ __func__, attr,
-+ avps[attr].description);
- }
- }
- next:
-@@ -1748,16 +969,17 @@
- }
- else
- {
-- len -= ALENGTH (avp->length);
-- data += ALENGTH (avp->length); /* Next AVP, please */
-+ len -= ALENGTH (rlen);
-+ data += ALENGTH (rlen); /* Next AVP, please */
- }
- avp = (struct avp_hdr *) data;
- firstavp = 0;
- }
- if (len != 0)
- {
-- log (LOG_WARN, "%s: negative overall packet length\n", __FUNCTION__);
-+ log (LOG_WARN, "%s: negative overall packet length\n", __func__);
- return -EINVAL;
- }
-+
- return 0;
- }
---- l2tpd-0.70-pre20031121.orig/avpsend.c
-+++ l2tpd-0.70-pre20031121/avpsend.c
-@@ -1,11 +1,5 @@
- /*
-- * $Id$
-- *
-- * Layer Two Tunnelling Protocol Daemon
-- * Copyright (C) 1998 Adtran, Inc.
-- * Copyright (C) 2002 Jeff McAdams
-- *
-- * Mark Spencer
-+ * Copyright (C) 2004 Jean-Francois Dive
- *
- * This software is distributed under the terms
- * of the GPL, which you should have received
-@@ -14,337 +8,288 @@
- * Attribute Value Pair creating routines
- */
-
-+/* TODO: Handle Tie break */
-+/* TODO: Get real hostname / config */
-+/* TODO: There should be an overflow check on
-+ * the buffer size. (safe for now as
-+ * packet size = 4k
-+ */
-+
- #include <stdlib.h>
- #include <string.h>
--#include <netinet/in.h>
-+#include <unistd.h>
- #include "l2tp.h"
-
--/*
-- * These routines should add avp's to a buffer
-- * to be sent
-- */
-+extern struct avp avps[];
-
-+/* We could add here padding support which would allow
-+ * to keep alignemnt straight <jdive> */
-+static int add_avp(struct buffer *buf, u_int32_t avpid, unsigned char *v,
-+ u_int32_t sz, u_int8_t setpayload) {
-+ u_int8_t *p = buf->start + buf->len;
-+
-+ if(avpid > AVP_MAX || !avps[avpid].flags) {
-+ log(LOG_DEBUG, "%s: invalid avp id %d\n", __func__, avpid);
-+ return 1;
-+ }
-+
-+ set16(p, (sz + 6) | (avps[avpid].flags & AVP_F_MANDATORY ? MBIT : 0));
-+ set16(p + 2, VENDOR_ID);
-+ set16(p + 4, avpid);
-+ if(setpayload)
-+ memcpy(p + 6, v, sz);
-
--/* FIXME: If SANITY is on, we should check for buffer overruns */
-+ buf->len += (sz + 6);
-+ return 0;
-+}
-
--/* FIXME: Can't this be condensed alot? */
-+/*****************************************************************************/
-+int add_message_type_avp(struct buffer *buf, _u16 type) {
-+ u_int8_t t[2];
-+ set16(t, type);
-+ if(add_avp(buf, MESSAGE_TYPE_AVP, t, 2, 1))
-+ return 1;
-+ return 0;
-+}
-
--int add_message_type_avp (struct buffer *buf, _u16 type)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0x8 | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = 0;
-- raw[3] = htons (type);
-- buf->len += 8;
-+/*****************************************************************************/
-+int add_protocol_avp(struct buffer *buf) {
-+ u_int8_t t[2];
-+ set16(t, OUR_L2TP_VERSION);
-+ if(add_avp(buf, PROTOCOL_VERSION_AVP, t, 2, 1))
-+ return 1;
- return 0;
- }
-
--int add_protocol_avp (struct buffer *buf)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0x8 | MBIT); /* Length and M bit */
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x2); /* Value of our AVP */
-- raw[3] = htons (OUR_L2TP_VERSION);
-- buf->len += 8;
-+/*****************************************************************************/
-+int add_frame_caps_avp(struct buffer *buf, _u16 caps) {
-+ u_int8_t t[4];
-+ t[0] = 0;
-+ t[1] = 0;
-+ set16(&t[2], caps);
-+ if(add_avp(buf, FRAMING_CAP_AVP, t, 4, 1))
-+ return 1;
- return 0;
- }
-
--int add_frame_caps_avp (struct buffer *buf, _u16 caps)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0xA | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x3);
-- raw[3] = 0;
-- raw[4] = htons (caps);
-- buf->len += 10;
-+/*****************************************************************************/
-+int add_bearer_caps_avp(struct buffer *buf, _u16 caps) {
-+ u_int8_t t[4];
-+ t[0] = 0;
-+ t[1] = 0;
-+ set16(&t[2], caps);
-+ if(add_avp(buf, BEARER_CAP_AVP, t, 4, 1))
-+ return 1;
- return 0;
- }
-
--int add_bearer_caps_avp (struct buffer *buf, _u16 caps)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0xA | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x4);
-- raw[3] = 0;
-- raw[4] = htons (caps);
-- buf->len += 10;
-+/*****************************************************************************/
-+int add_firmware_avp(struct buffer *buf) {
-+ u_int8_t t[2];
-+ set16(t, OUR_L2TP_VERSION);
-+ if(add_avp(buf, FIRMWARE_REV_AVP, t, 2, 1))
-+ return 1;
- return 0;
- }
-
--/* FIXME: I need to send tie breaker AVP's */
--
--int add_firmware_avp (struct buffer *buf)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0x8);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x6);
-- raw[3] = htons (FIRMWARE_REV);
-- buf->len += 8;
-+/*****************************************************************************/
-+int add_hostname_avp(struct buffer *buf, struct tunnel *t) {
-+ char n[STRLEN];
-+ int sz = 0;
-+ if(t->lac && t->lac->hostname[0]) {
-+ strncpy(n,t->lac->hostname, sizeof(n));
-+ sz = strnlen(t->lac->hostname, sizeof(t->lac->hostname));
-+ }
-+ else if(t->lns && t->lns->hostname[0]) {
-+ strncpy(n,t->lns->hostname, sizeof(n));
-+ sz = strnlen(t->lns->hostname, sizeof(t->lns->hostname));
-+ }
-+ else {
-+ if(gethostname(n, STRLEN)) {
-+ strcpy(n,"eriwan");
-+ sz = 6;
-+ }
-+ else
-+ sz = strnlen(n, sizeof(n));
-+ }
-+ if(add_avp(buf, HOSTNAME_AVP, n, sz, 1))
-+ return 1;
- return 0;
- }
-
--/*
--int add_hostname_avp(struct buffer *buf) {
-- _u16 *raw = (_u16 *)(buf->start + buf->len);
-- raw[0] = htons((0x6 + strlen(hostname)) | MBIT);
-- raw[1] = htons(VENDOR_ID);
-- raw[2] = htons(0x7);
-- strcpy((char *)(&raw[3]), hostname);
-- buf->len += 6 + strlen(hostname);
-- return 0;
-+/*****************************************************************************/
-+int add_vendor_avp(struct buffer *buf) {
-+ if(add_avp(buf, VENDOR_NAME_AVP, VENDOR_NAME, strlen(VENDOR_NAME), 1))
-+ return 1;
-+ return 0;
- }
--*/
-
--int add_hostname_avp (struct buffer *buf)
--{
-- char names[6] = "eriwan";
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0xC | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x7);
-- strcpy ((char *) (&raw[3]), names);
-- buf->len += 12;
-- return 0;
--}
--
--int add_vendor_avp (struct buffer *buf)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0x6 + strlen (VENDOR_NAME));
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x8);
-- strcpy ((char *) (&raw[3]), VENDOR_NAME);
-- buf->len += 6 + strlen (VENDOR_NAME);
-- return 0;
--}
--
--int add_tunnelid_avp (struct buffer *buf, _u16 tid)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0x8 | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x9);
-- raw[3] = htons (tid);
-- buf->len += 8;
-- return 0;
--}
--
--int add_avp_rws (struct buffer *buf, _u16 rws)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0x8 | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0xA);
-- raw[3] = htons (rws);
-- buf->len += 8;
-- return 0;
--}
--
--int add_challenge_avp (struct buffer *buf, char *c, int len)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons ((0x6 + len) | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0xB);
-- bcopy (c, (char *) (&raw[3]), len);
-- buf->len += 6 + len;
-- return 0;
--}
--
--int add_chalresp_avp (struct buffer *buf, char *c, int len)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons ((0x6 + len) | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0xD);
-- bcopy (c, (char *) (&raw[3]), len);
-- buf->len += 6 + len;
-- return 0;
--}
--
--int add_randvect_avp (struct buffer *buf, char *c, int len)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons ((0x6 + len) | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x24);
-- bcopy (c, (char *) (&raw[3]), len);
-- buf->len += 6 + len;
-- return 0;
--}
--
--int add_result_code_avp (struct buffer *buf, _u16 result, _u16 error,
-- char *msg, int len)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons ((0xA + len) | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x1);
-- raw[3] = htons (result);
-- raw[4] = htons (error);
-- bcopy (msg, (char *) &raw[5], len);
-- buf->len += (10 + len);
-+/*****************************************************************************/
-+int add_tunnelid_avp(struct buffer *buf, _u16 tid) {
-+ u_int8_t t[2];
-+ set16(t, tid);
-+ if(add_avp(buf, ASSIGNED_TUN_ID_AVP, t, 2, 1))
-+ return 1;
- return 0;
- }
-
-+/*****************************************************************************/
-+int add_avp_rws(struct buffer *buf, _u16 rws) {
-+ u_int8_t t[2];
-+ set16(t, rws);
-+ if(add_avp(buf, RX_WIN_SIZE_AVP, t, 2, 1))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int add_challenge_avp(struct buffer *buf, char *c, int len) {
-+ if(add_avp(buf, CHALLENGE_AVP, c, len, 1))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int add_chalresp_avp(struct buffer *buf, char *c, int len) {
-+ if(add_avp(buf, CHALLENGE_RESP_AVP, c, len, 1))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int add_randvect_avp(struct buffer *buf, char *c, int len) {
-+ if(add_avp(buf, RANDOM_VECTOR_AVP, c, len, 1))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int add_result_code_avp(struct buffer *buf, _u16 result, _u16 error,
-+ char *msg, int len) {
-+ u_int8_t t[4];
-+ set16(t, result);
-+ set16(&t[2], error);
-+ memcpy((u_int8_t*)(buf->start + buf->len + 10), msg, len);
-+ memcpy((u_int8_t*)(buf->start + buf->len + 6), t, 4);
-+ if(add_avp(buf, RESULT_CODE_AVP, 0, 4 + len, 0))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
- #ifdef TEST_HIDDEN
--int add_callid_avp (struct buffer *buf, _u16 callid, struct tunnel *t)
--{
--#else
--int add_callid_avp (struct buffer *buf, _u16 callid)
--{
--#endif
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
--#ifdef TEST_HIDDEN
-+int add_callid_avp(struct buffer *buf, _u16 callid, struct tunnel *t) {
-+ u_int8_t t[2];
- if (t->hbit)
- raw++;
--#endif
-- raw[0] = htons (0x8 | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0xE);
-- raw[3] = htons (callid);
-- buf->len += 8;
--#ifdef TEST_HIDDEN
-+ set16(t, callid);
-+ if(add_avp(buf, ASSIGNED_SES_ID_AVP, t, 2, 1))
-+ return 1;
- if (t->hbit)
- encrypt_avp (buf, 8, t);
-+ return 0;
-+}
-+#else
-+int add_callid_avp(struct buffer *buf, _u16 callid) {
-+ u_int8_t t[2];
-+ set16(t, callid);
-+ if(add_avp(buf, ASSIGNED_SES_ID_AVP, t, 2, 1))
-+ return 1;
-+ return 0;
-+}
- #endif
-+
-+/*****************************************************************************/
-+int add_serno_avp(struct buffer *buf, unsigned int serno) {
-+ u_int8_t t[4];
-+ set32(t, serno);
-+ if(add_avp(buf, SERIAL_NUMBER_AVP, t, 4, 1))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int add_bearer_avp(struct buffer *buf, int bearer) {
-+ u_int8_t t[4];
-+ set32(t, bearer);
-+ if(add_avp(buf, BEARER_TYPE_AVP, t, 4, 1))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int add_frame_avp(struct buffer *buf, int frame) {
-+ u_int8_t t[4];
-+ set32(t, frame);
-+ if(add_avp(buf, FRAMING_TYPE_AVP, t, 4, 1))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int add_txspeed_avp(struct buffer *buf, int speed) {
-+ u_int8_t t[4];
-+ set32(t, speed);
-+ if(add_avp(buf, TX_CONNECT_SPEED_AVP, t, 4, 1))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int add_rxspeed_avp(struct buffer *buf, int speed) {
-+ u_int8_t t[4];
-+ set32(t, speed);
-+ if(add_avp(buf, RX_CONNECT_SPEED_AVP, t, 4, 1))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int add_physchan_avp(struct buffer *buf, unsigned int physchan) {
-+ u_int8_t t[4];
-+ set32(t, physchan);
-+ if(add_avp(buf, PHYS_CHAN_ID_AVP, t, 4, 1))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int add_ppd_avp(struct buffer *buf, _u16 ppd) {
-+ u_int8_t t[2];
-+ set16(t, ppd);
-+ if(add_avp(buf, PACKET_DELAY_AVP, t, 2, 1))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int add_seqreqd_avp(struct buffer *buf) {
-+ if(add_avp(buf, SEQ_REQUIRED_AVP, 0, 0, 0))
-+ return 1;
-+ return 0;
-+}
-+
-+/*****************************************************************************/
-+int add_minbps_avp(struct buffer *buf, int speed) {
-+ u_int8_t t[4];
-+ set32(t, speed);
-+ if(add_avp(buf, MIN_BPS_AVP, t, 4, 1))
-+ return 1;
- return 0;
- }
-
--int add_serno_avp (struct buffer *buf, unsigned int serno)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0xA | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0xF);
-- raw[3] = htons ((serno >> 16) & 0xFFFF);
-- raw[4] = htons (serno & 0xFFFF);
-- buf->len += 10;
-- return 0;
--}
--
--int add_bearer_avp (struct buffer *buf, int bearer)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0xA | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x12);
-- raw[3] = htons ((bearer >> 16) & 0xFFFF);
-- raw[4] = htons (bearer & 0xFFFF);
-- buf->len += 10;
-- return 0;
--}
--
--int add_frame_avp (struct buffer *buf, int frame)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0xA | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x13);
-- raw[3] = htons ((frame >> 16) & 0xFFFF);
-- raw[4] = htons (frame & 0xFFFF);
-- buf->len += 10;
-- return 0;
--}
--
--int add_txspeed_avp (struct buffer *buf, int speed)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0xA | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x18);
-- raw[3] = htons ((speed >> 16) & 0xFFFF);
-- raw[4] = htons (speed & 0xFFFF);
-- buf->len += 10;
-- return 0;
--}
--
--int add_rxspeed_avp (struct buffer *buf, int speed)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0xA | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x26);
-- raw[3] = htons ((speed >> 16) & 0xFFFF);
-- raw[4] = htons (speed & 0xFFFF);
-- buf->len += 10;
-- return 0;
--}
--
--int add_physchan_avp (struct buffer *buf, unsigned int physchan)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0x8 | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x19);
-- raw[3] = htons ((physchan >> 16) & 0xFFFF);
-- raw[4] = htons (physchan & 0xFFFF);
-- buf->len += 10;
-- return 0;
--}
--
--int add_ppd_avp (struct buffer *buf, _u16 ppd)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0x8 | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x14);
-- raw[3] = htons (ppd);
-- buf->len += 8;
-- return 0;
--}
--
--int add_seqreqd_avp (struct buffer *buf)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0x6 | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x27);
-- buf->len += 6;
-- return 0;
--}
--
--/* jz: options dor the outgoing call */
--
--/* jz: Minimum BPS - 16 */
--int add_minbps_avp (struct buffer *buf, int speed)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0xA | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x10);
-- raw[3] = htons ((speed >> 16) & 0xFFFF);
-- raw[4] = htons (speed & 0xFFFF);
-- buf->len += 10;
-- return 0;
--}
--
--/* jz: Maximum BPS - 17 */
--int add_maxbps_avp (struct buffer *buf, int speed)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons (0xA | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x11);
-- raw[3] = htons ((speed >> 16) & 0xFFFF);
-- raw[4] = htons (speed & 0xFFFF);
-- buf->len += 10;
-- return 0;
--}
--
--/* jz: Dialed Number 21 */
--int add_number_avp (struct buffer *buf, char *no)
--{
-- _u16 *raw = (_u16 *) (buf->start + buf->len);
-- raw[0] = htons ((0x6 + strlen (no)) | MBIT);
-- raw[1] = htons (VENDOR_ID);
-- raw[2] = htons (0x15);
-- strncpy ((char *) (&(raw[3])), no, strlen (no));
-- buf->len += 6 + strlen (no);
-+/*****************************************************************************/
-+int add_maxbps_avp(struct buffer *buf, int speed) {
-+ u_int8_t t[4];
-+ set32(t, speed);
-+ if(add_avp(buf, MAX_BPS_AVP, t, 4, 1))
-+ return 1;
- return 0;
- }
-+
-+/*****************************************************************************/
-+int add_number_avp(struct buffer *buf, char *no) {
-+ if(add_avp(buf, CALLED_NUMBER_AVP, no, strlen(no), 1))
-+ return 1;
-+ return 0;
-+}
diff --git a/openwrt/package/l2tpd/patches/02-debian-2-pty-rev.patch b/openwrt/package/l2tpd/patches/02-debian-2-pty-rev.patch
deleted file mode 100644
index 135e17e183..0000000000
--- a/openwrt/package/l2tpd/patches/02-debian-2-pty-rev.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -ruN l2tpd-0.70pre-old/l2tpd.c l2tpd-0.70pre-new/l2tpd.c
---- l2tpd-0.70pre-old/l2tpd.c 2005-12-16 12:02:02.000000000 +0100
-+++ l2tpd-0.70pre-new/l2tpd.c 2005-12-16 12:14:24.000000000 +0100
-@@ -336,17 +336,10 @@
- tcgetattr (c->fd, &ptyconf);
- *(c->oldptyconf) = ptyconf;
- ptyconf.c_cflag &= ~(ICANON | ECHO);
-- ptyconf.c_lflag &= ~ECHO;
- tcsetattr (c->fd, TCSANOW, &ptyconf);
-
- snprintf (tty, sizeof (tty), "/dev/tty%c%c", a, b);
- fd2 = open (tty, O_RDWR);
-- if(!fd2)
-- log(LOG_WARN, "unable to open tty %s", tty);
--
-- /* XXX JEF: CHECK ME */
-- stropt[pos++] = strdup(tty);
-- stropt[pos] = NULL;
-
- #ifdef USE_KERNEL
- }
diff --git a/openwrt/package/l2tpd/patches/03-jacco-pty.patch b/openwrt/package/l2tpd/patches/03-jacco-pty.patch
deleted file mode 100644
index 67169b8ead..0000000000
--- a/openwrt/package/l2tpd/patches/03-jacco-pty.patch
+++ /dev/null
@@ -1,1194 +0,0 @@
-diff -ruN l2tpd-0.70pre-old/l2tpd.c l2tpd-0.70pre-new/l2tpd.c
---- l2tpd-0.70pre-old/l2tpd.c 2005-12-16 12:34:12.000000000 +0100
-+++ l2tpd-0.70pre-new/l2tpd.c 2005-12-16 12:34:54.000000000 +0100
-@@ -16,6 +16,7 @@
- */
-
- #include <stdlib.h>
-+#include <sys/types.h>
- #include <sys/utsname.h>
- #include <sys/stat.h>
- #include <sys/wait.h>
-@@ -274,8 +275,8 @@
-
- int start_pppd (struct call *c, struct ppp_opts *opts)
- {
-- char a, b;
-- char tty[80];
-+ /* char a, b; */
-+ char *tty;
- char *stropt[80];
- struct ppp_opts *p;
- #ifdef USE_KERNEL
-@@ -324,12 +325,45 @@
- else
- {
- #endif
-- if ((c->fd = getPtyMaster (&a, &b)) < 0)
-+ c->fd = open("/dev/ptmx", O_RDWR);
-+ if (c->fd == -1)
-+ {
-+ log (LOG_WARN, "%s: unable to open /dev/ptmx to allocate pty\n",
-+ __FUNCTION__);
-+ return -EINVAL;
-+ } else
-+ {
-+ if (grantpt(c->fd))
-+ {
-+ log (LOG_WARN, "%s: unable to grantpt() on pty\n",
-+ __FUNCTION__);
-+ close(c->fd);
-+ return -EINVAL;
-+ }
-+ if (unlockpt(c->fd))
-+ {
-+ log (LOG_WARN, "%s: unable to unlockpt() on pty\n",
-+ __FUNCTION__);
-+ close(c->fd);
-+ return -EINVAL;
-+ }
-+ tty = ptsname(c->fd);
-+ if (tty == NULL)
-+ {
-+ log (LOG_WARN, "%s: unable to obtain name of slave tty\n",
-+ __FUNCTION__);
-+ close(c->fd);
-+ return -EINVAL;
-+ }
-+ }
-+
-+
-+ /* if ((c->fd = getPtyMaster (&a, &b)) < 0)
- {
- log (LOG_WARN, "%s: unable to allocate pty, abandoning!\n",
- __FUNCTION__);
- return -EINVAL;
-- }
-+ } */
-
- /* set fd opened above to not echo so we don't see read our own packets
- back of the file descriptor that we just wrote them to */
-@@ -338,8 +372,14 @@
- ptyconf.c_cflag &= ~(ICANON | ECHO);
- tcsetattr (c->fd, TCSANOW, &ptyconf);
-
-- snprintf (tty, sizeof (tty), "/dev/tty%c%c", a, b);
-+/* snprintf (tty, sizeof (tty), "/dev/tty%c%c", a, b); */
- fd2 = open (tty, O_RDWR);
-+ if (fd2 == -1)
-+ {
-+ log (LOG_WARN, "%s: unable to open slave tty %s\n", __FUNCTION__, tty);
-+ close(c->fd);
-+ return -EINVAL;
-+ }
-
- #ifdef USE_KERNEL
- }
-diff -ruN l2tpd-0.70pre-old/l2tpd.c.orig l2tpd-0.70pre-new/l2tpd.c.orig
---- l2tpd-0.70pre-old/l2tpd.c.orig 1970-01-01 01:00:00.000000000 +0100
-+++ l2tpd-0.70pre-new/l2tpd.c.orig 2005-12-16 12:14:24.000000000 +0100
-@@ -0,0 +1,1104 @@
-+/*
-+ * $Id$
-+ *
-+ * Layer Two Tunnelling Protocol Daemon
-+ * Copyright (C) 1998 Adtran, Inc.
-+ * Copyright (C) 2002 Jeff McAdams
-+ *
-+ * Mark Spencer
-+ *
-+ * This software is distributed under the terms
-+ * of the GPL, which you should have received
-+ * along with this source.
-+ *
-+ * Main Daemon source.
-+ *
-+ */
-+
-+#include <stdlib.h>
-+#include <sys/utsname.h>
-+#include <sys/stat.h>
-+#include <sys/wait.h>
-+#include <stdio.h>
-+#include <errno.h>
-+#include <unistd.h>
-+#include <time.h>
-+#if (__GLIBC__ < 2)
-+# if defined(FREEBSD)
-+# include <sys/signal.h>
-+# elif defined(LINUX)
-+# include <bsd/signal.h>
-+# elif defined(SOLARIS)
-+# include <signal.h>
-+# endif
-+#else
-+# include <signal.h>
-+#endif
-+#include <netdb.h>
-+#include <string.h>
-+#include <fcntl.h>
-+#include <netinet/in.h>
-+#include <arpa/inet.h>
-+#ifdef USE_KERNEL
-+#include <sys/ioctl.h>
-+#endif
-+#include "l2tp.h"
-+
-+struct tunnel_list tunnels;
-+int max_tunnels = DEF_MAX_TUNNELS;
-+struct utsname uts;
-+int ppd = 1; /* Packet processing delay */
-+int control_fd; /* descriptor of control area */
-+char *args;
-+
-+char *dial_no_tmp; /* jz: Dialnumber for Outgoing Call */
-+int switch_io = 0; /* jz: Switch for Incoming or Outgoing Call */
-+
-+void init_tunnel_list (struct tunnel_list *t)
-+{
-+ t->head = NULL;
-+ t->count = 0;
-+ t->calls = 0;
-+}
-+
-+/* Now sends to syslog instead - MvO */
-+void show_status (void)
-+{
-+ struct schedule_entry *se;
-+ struct tunnel *t;
-+ struct call *c;
-+ struct lns *tlns;
-+ struct lac *tlac;
-+ struct host *h;
-+ int s = 0;
-+ log (LOG_WARN, "====== l2tpd statistics ========\n");
-+ log (LOG_WARN, " Scheduler entries:\n");
-+ se = events;
-+ while (se)
-+ {
-+ s++;
-+ t = (struct tunnel *) se->data;
-+ tlac = (struct lac *) se->data;
-+ c = (struct call *) se->data;
-+ if (se->func == &hello)
-+ {
-+ log (LOG_WARN, "%d: HELLO to %d\n", s, t->tid);
-+ }
-+ else if (se->func == &magic_lac_dial)
-+ {
-+ log (LOG_WARN, "%d: Magic dial on %s\n", s, tlac->entname);
-+ }
-+ else if (se->func == &send_zlb)
-+ {
-+ log (LOG_WARN, "%d: Send payload ZLB on call %d:%d\n", s,
-+ c->container->tid, c->cid);
-+ }
-+ else if (se->func == &dethrottle)
-+ {
-+ log (LOG_WARN, "%d: Dethrottle call %d:%d\n", s, c->container->tid,
-+ c->cid);
-+ }
-+ else
-+ log (LOG_WARN, "%d: Unknown event\n", s);
-+ se = se->next;
-+ };
-+ log (LOG_WARN, "Total Events scheduled: %d\n", s);
-+ log (LOG_WARN, "Number of tunnels open: %d\n", tunnels.count);
-+ t = tunnels.head;
-+ while (t)
-+ {
-+ log (LOG_WARN, "Tunnel %s, ID = %d (local), %d (remote) to %s:%d\n"
-+ " control_seq_num = %d, control_rec_seq_num = %d,\n"
-+ " cLr = %d\n",
-+ (t->lac ? t->lac->entname : (t->lns ? t->lns->entname : "")),
-+ t->ourtid, t->tid, IPADDY (t->peer.sin_addr),
-+ ntohs (t->peer.sin_port), t->control_seq_num,
-+ t->control_rec_seq_num, t->cLr);
-+ c = t->call_head;
-+ while (c)
-+ {
-+ log (LOG_WARN,
-+ "Call %s, ID = %d (local), %d (remote), serno = %u,\n"
-+ " data_seq_num = %d, data_rec_seq_num = %d,\n"
-+ " pLr = %d, tx = %u bytes (%u), rx= %u bytes (%u)\n",
-+ (c->lac ? c->lac->
-+ entname : (c->lns ? c->lns->entname : "")), c->ourcid,
-+ c->cid, c->serno, c->data_seq_num, c->data_rec_seq_num,
-+ c->pLr, c->tx_bytes, c->tx_pkts, c->rx_bytes, c->rx_pkts);
-+ c = c->next;
-+ }
-+ t = t->next;
-+ }
-+ log (LOG_WARN, "==========Config File===========\n");
-+ tlns = lnslist;
-+ while (tlns)
-+ {
-+ log (LOG_WARN, "LNS entry %s\n",
-+ tlns->entname[0] ? tlns->entname : "(unnamed)");
-+ tlns = tlns->next;
-+ };
-+ tlac = laclist;
-+ while (tlac)
-+ {
-+ log (LOG_WARN, "LAC entry %s, LNS is/are:",
-+ tlac->entname[0] ? tlac->entname : "(unnamed)");
-+ h = tlac->lns;
-+ if (h)
-+ {
-+ while (h)
-+ {
-+ log (LOG_WARN, " %s", h->hostname);
-+ h = h->next;
-+ }
-+ }
-+ else
-+ log (LOG_WARN, " [none]");
-+ log (LOG_WARN, "\n");
-+ tlac = tlac->next;
-+ };
-+ log (LOG_WARN, "================================\n");
-+}
-+
-+void null_handler(int sig)
-+{
-+ /* FIXME
-+ * A sighup is received when a call is terminated, unknown origine ..
-+ * I catch it and ll looks good, but ..
-+ */
-+}
-+
-+void status_handler (int sig)
-+{
-+ show_status ();
-+}
-+
-+void child_handler (int signal)
-+{
-+ /*
-+ * Oops, somebody we launched was killed.
-+ * It's time to reap them and close that call.
-+ * But first, we have to find out what PID died.
-+ * unfortunately, pppd will
-+ */
-+ struct tunnel *t;
-+ struct call *c;
-+ pid_t pid;
-+ int status;
-+ t = tunnels.head;
-+ /* Keep looping until all are cleared */
-+ for(;;)
-+ {
-+ pid = waitpid (-1, &status, WNOHANG);
-+ if (pid < 1)
-+ {
-+ /*
-+ * Oh well, nobody there. Maybe we reaped it
-+ * somewhere else already
-+ */
-+ return;
-+ }
-+ while (t)
-+ {
-+ c = t->call_head;
-+ while (c)
-+ {
-+ if (c->pppd == pid)
-+ {
-+ if ( WIFEXITED( status ) )
-+ {
-+ log (LOG_DEBUG, "%s : pppd exited for call %d with code %d\n", __FUNCTION__,
-+ c->cid, WEXITSTATUS( status ) );
-+ }
-+ else if( WIFSIGNALED( status ) )
-+ {
-+ log (LOG_DEBUG, "%s : pppd terminated for call %d by signal %d\n", __FUNCTION__,
-+ c->cid, WTERMSIG( status ) );
-+ }
-+ else
-+ {
-+ log (LOG_DEBUG, "%s : pppd exited for call %d for unknown reason\n", __FUNCTION__,
-+ c->cid );
-+ }
-+ c->needclose = -1;
-+ /*
-+ * OK...pppd died, we can go ahead and close the pty for
-+ * it
-+ */
-+ close (c->fd);
-+ c->fd = -1;
-+ return;
-+ }
-+ c = c->next;
-+ }
-+ t = t->next;
-+ }
-+ }
-+}
-+
-+void death_handler (int signal)
-+{
-+ /*
-+ * If we get here, somebody terminated us with a kill or a control-c.
-+ * we call call_close on each tunnel twice to get a StopCCN out
-+ * for each one (we can't pause to make sure it's received.
-+ * Then we close the connections
-+ */
-+ struct tunnel *st, *st2;
-+ int sec;
-+ log (LOG_CRIT, "%s: Fatal signal %d received\n", __FUNCTION__, signal);
-+ st = tunnels.head;
-+ while (st)
-+ {
-+ st2 = st->next;
-+ strcpy (st->self->errormsg, "Server closing");
-+ sec = st->self->closing;
-+ if (st->lac)
-+ st->lac->redial = 0;
-+ call_close (st->self);
-+ if (!sec)
-+ {
-+ st->self->closing = -1;
-+ call_close (st->self);
-+ }
-+ st = st2;
-+ }
-+
-+ /* erase pid file */
-+ unlink (gconfig.pidfile);
-+
-+ /* erase control pipe */
-+ unlink(CONTROL_PIPE);
-+
-+ exit (1);
-+}
-+
-+int start_pppd (struct call *c, struct ppp_opts *opts)
-+{
-+ char a, b;
-+ char tty[80];
-+ char *stropt[80];
-+ struct ppp_opts *p;
-+#ifdef USE_KERNEL
-+ struct l2tp_call_opts co;
-+#endif
-+ int pos = 1;
-+ int fd2;
-+#ifdef DEBUG_PPPD
-+ int x;
-+#endif
-+ struct termios ptyconf;
-+ char *str;
-+ p = opts;
-+ stropt[0] = strdup (PPPD);
-+ while (p)
-+ {
-+ stropt[pos] = (char *) malloc (strlen (p->option) + 1);
-+ strncpy (stropt[pos], p->option, strlen (p->option) + 1);
-+ pos++;
-+ p = p->next;
-+ }
-+ stropt[pos] = NULL;
-+ if (c->pppd > 0)
-+ {
-+ log (LOG_WARN, "%s: PPP already started on call!\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+ if (c->fd > -1)
-+ {
-+ log (LOG_WARN, "%s: file descriptor already assigned!\n",
-+ __FUNCTION__);
-+ return -EINVAL;
-+ }
-+#ifdef USE_KERNEL
-+ if (kernel_support)
-+ {
-+ co.ourtid = c->container->ourtid;
-+ co.ourcid = c->ourcid;
-+ ioctl (server_socket, L2TPIOCGETCALLOPTS, &co);
-+ stropt[pos++] = strdup ("channel");
-+ stropt[pos] = (char *) malloc (10);
-+ snprintf (stropt[pos], 10, "%d", co.id);
-+ pos++;
-+ stropt[pos] = NULL;
-+ }
-+ else
-+ {
-+#endif
-+ if ((c->fd = getPtyMaster (&a, &b)) < 0)
-+ {
-+ log (LOG_WARN, "%s: unable to allocate pty, abandoning!\n",
-+ __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ /* set fd opened above to not echo so we don't see read our own packets
-+ back of the file descriptor that we just wrote them to */
-+ tcgetattr (c->fd, &ptyconf);
-+ *(c->oldptyconf) = ptyconf;
-+ ptyconf.c_cflag &= ~(ICANON | ECHO);
-+ tcsetattr (c->fd, TCSANOW, &ptyconf);
-+
-+ snprintf (tty, sizeof (tty), "/dev/tty%c%c", a, b);
-+ fd2 = open (tty, O_RDWR);
-+
-+#ifdef USE_KERNEL
-+ }
-+#endif
-+ str = stropt[0];
-+#ifdef DEBUG_PPPD
-+ log (LOG_DEBUG, "%s: I'm running: ", __FUNCTION__);
-+ for (x = 0; stropt[x]; x++)
-+ {
-+ log (LOG_DEBUG, "\"%s\" ", stropt[x]);
-+ };
-+ log (LOG_DEBUG, "\n");
-+#endif
-+ c->pppd = fork ();
-+ if (c->pppd < 0)
-+ {
-+ log (LOG_WARN, "%s: unable to fork(), abandoning!\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+ else if (!c->pppd)
-+ {
-+ struct call *sc;
-+ struct tunnel *st;
-+
-+ close (0);
-+ close (1);
-+ close (2);
-+#ifdef USE_KERNEL
-+ if (!kernel_support && (fd2 < 0))
-+#else
-+ if (fd2 < 0)
-+#endif
-+ {
-+ log (LOG_WARN, "%s: Unable to open %s to launch pppd!\n",
-+ __FUNCTION__, tty);
-+ exit (1);
-+ }
-+ dup2 (fd2, 0);
-+ dup2 (fd2, 1);
-+
-+
-+ /* close all the calls pty fds */
-+ st = tunnels.head;
-+ while (st)
-+ {
-+ sc = st->call_head;
-+ while (sc)
-+ {
-+ close (sc->fd);
-+ sc = sc->next;
-+ }
-+ st = st->next;
-+ }
-+
-+ /* close the UDP socket fd */
-+ close (server_socket);
-+
-+ /* close the control pipe fd */
-+ close (control_fd);
-+
-+ if( c->dialing[0] )
-+ {
-+ setenv( "CALLER_ID", c->dialing, 1 );
-+ }
-+ execv (PPPD, stropt);
-+ log (LOG_WARN, "%s: Exec of %s failed!\n", __FUNCTION__, PPPD);
-+ exit (1);
-+ };
-+ close (fd2);
-+ pos = 0;
-+ while (stropt[pos])
-+ {
-+ free (stropt[pos]);
-+ pos++;
-+ };
-+ return 0;
-+}
-+
-+void destroy_tunnel (struct tunnel *t)
-+{
-+ /*
-+ * Immediately destroy a tunnel (and all its calls)
-+ * and free its resources. This may be called
-+ * by the tunnel itself,so it needs to be
-+ * "suicide safe"
-+ */
-+
-+ struct call *c, *me;
-+ struct tunnel *p;
-+ struct timeval tv;
-+ if (!t)
-+ return;
-+
-+ /*
-+ * Save ourselves until the very
-+ * end, since we might be calling this ourselves.
-+ * We must divorce ourself from the tunnel
-+ * structure, however, to avoid recursion
-+ * because of the logic of the destroy_call
-+ */
-+ me = t->self;
-+
-+ /*
-+ * Destroy all the member calls
-+ */
-+ c = t->call_head;
-+ while (c)
-+ {
-+ destroy_call (c);
-+ c = c->next;
-+ };
-+ /*
-+ * Remove ourselves from the list of tunnels
-+ */
-+
-+ if (tunnels.head == t)
-+ {
-+ tunnels.head = t->next;
-+ tunnels.count--;
-+ }
-+ else
-+ {
-+ p = tunnels.head;
-+ if (p)
-+ {
-+ while (p->next && (p->next != t))
-+ p = p->next;
-+ if (p->next)
-+ {
-+ p->next = t->next;
-+ tunnels.count--;
-+ }
-+ else
-+ {
-+ log (LOG_WARN,
-+ "%s: unable to locate tunnel in tunnel list\n",
-+ __FUNCTION__);
-+ }
-+ }
-+ else
-+ {
-+ log (LOG_WARN, "%s: tunnel list is empty!\n", __FUNCTION__);
-+ }
-+ }
-+ if (t->lac)
-+ {
-+ t->lac->t = NULL;
-+ if (t->lac->redial && (t->lac->rtimeout > 0) && !t->lac->rsched &&
-+ t->lac->active)
-+ {
-+ log (LOG_LOG, "%s: Will redial in %d seconds\n", __FUNCTION__,
-+ t->lac->rtimeout);
-+ tv.tv_sec = t->lac->rtimeout;
-+ tv.tv_usec = 0;
-+ t->lac->rsched = schedule (tv, magic_lac_dial, t->lac);
-+ }
-+ }
-+ /* XXX L2TP/IPSec: remove relevant SAs here? NTB 20011010
-+ * XXX But what if another tunnel is using same SA?
-+ */
-+ if (t->lns)
-+ t->lns->t = NULL;
-+ free (t);
-+ free (me);
-+}
-+
-+struct tunnel *l2tp_call (char *host, int port, struct lac *lac,
-+ struct lns *lns)
-+{
-+ /*
-+ * Establish a tunnel from us to host
-+ * on port port
-+ */
-+ struct call *tmp = NULL;
-+ struct hostent *hp;
-+ unsigned int addr;
-+ port = htons (port);
-+ hp = gethostbyname (host);
-+ if (!hp)
-+ {
-+ log (LOG_WARN, "%s: gethostbyname() failed for %s.\n", __FUNCTION__,
-+ host);
-+ return NULL;
-+ }
-+ bcopy (hp->h_addr, &addr, hp->h_length);
-+ /* Force creation of a new tunnel
-+ and set it's tid to 0 to cause
-+ negotiation to occur */
-+ /* XXX L2TP/IPSec: Set up SA to addr:port here? NTB 20011010
-+ */
-+ tmp = get_call (0, 0, addr, port);
-+ if (!tmp)
-+ {
-+ log (LOG_WARN, "%s: Unable to create tunnel to %s.\n", __FUNCTION__,
-+ host);
-+ return NULL;
-+ }
-+ tmp->container->tid = 0;
-+ tmp->container->lac = lac;
-+ tmp->container->lns = lns;
-+ tmp->lac = lac;
-+ tmp->lns = lns;
-+ if (lac)
-+ lac->t = tmp->container;
-+ if (lns)
-+ lns->t = tmp->container;
-+ /*
-+ * Since our state is 0, we will establish a tunnel now
-+ */
-+ log (LOG_LOG, "%s:Connecting to host %s, port %d\n", __FUNCTION__, host,
-+ ntohs (port));
-+ control_finish (tmp->container, tmp);
-+ return tmp->container;
-+}
-+
-+void magic_lac_tunnel (void *data)
-+{
-+ struct lac *lac;
-+ lac = (struct lac *) data;
-+ if (!lac)
-+ {
-+ log (LOG_WARN, "%s: magic_lac_tunnel: called on NULL lac!\n",
-+ __FUNCTION__);
-+ return;
-+ }
-+ if (lac->lns)
-+ {
-+ /* FIXME: I should try different LNS's if I get failures */
-+ l2tp_call (lac->lns->hostname, lac->lns->port, lac, NULL);
-+ return;
-+ }
-+ else if (deflac && deflac->lns)
-+ {
-+ l2tp_call (deflac->lns->hostname, deflac->lns->port, lac, NULL);
-+ return;
-+ }
-+ else
-+ {
-+ log (LOG_WARN, "%s: Unable to find hostname to dial for '%s'\n",
-+ __FUNCTION__, lac->entname);
-+ return;
-+ }
-+}
-+
-+struct call *lac_call (int tid, struct lac *lac, struct lns *lns)
-+{
-+ struct tunnel *t = tunnels.head;
-+ struct call *tmp;
-+ while (t)
-+ {
-+ if (t->ourtid == tid)
-+ {
-+ tmp = new_call (t);
-+ if (!tmp)
-+ {
-+ log (LOG_WARN, "%s: unable to create new call\n",
-+ __FUNCTION__);
-+ return NULL;
-+ }
-+ tmp->next = t->call_head;
-+ t->call_head = tmp;
-+ t->count++;
-+ tmp->cid = 0;
-+ tmp->lac = lac;
-+ tmp->lns = lns;
-+ if (lac)
-+ lac->c = tmp;
-+ log (LOG_LOG, "%s: Calling on tunnel %d\n", __FUNCTION__, tid);
-+ strcpy (tmp->dial_no, dial_no_tmp); /* jz: copy dialnumber to tmp->dial_no */
-+ control_finish (t, tmp);
-+ return tmp;
-+ }
-+ t = t->next;
-+ };
-+ log (LOG_DEBUG, "%s: No such tunnel %d to generate call.\n", __FUNCTION__,
-+ tid);
-+ return NULL;
-+}
-+
-+void magic_lac_dial (void *data)
-+{
-+ struct lac *lac;
-+ lac = (struct lac *) data;
-+
-+ if (!lac)
-+ {
-+ log (LOG_WARN, "%s : called on NULL lac!\n", __FUNCTION__);
-+ return;
-+ }
-+ if (!lac->active)
-+ {
-+ log (LOG_DEBUG, "%s: LAC %s not active", __FUNCTION__, lac->entname);
-+ return;
-+ }
-+ lac->rsched = NULL;
-+ lac->rtries++;
-+ if (lac->rmax && (lac->rtries > lac->rmax))
-+ {
-+ log (LOG_LOG, "%s: maximum retries exceeded.\n", __FUNCTION__);
-+ return;
-+ }
-+ if (!lac->t)
-+ {
-+#ifdef DEGUG_MAGIC
-+ log (LOG_DEBUG, "%s : tunnel not up! Connecting!\n", __FUNCTION__);
-+#endif
-+ magic_lac_tunnel (lac);
-+ return;
-+ }
-+ lac_call (lac->t->ourtid, lac, NULL);
-+}
-+
-+void lac_hangup (int cid)
-+{
-+ struct tunnel *t = tunnels.head;
-+ struct call *tmp;
-+ while (t)
-+ {
-+ tmp = t->call_head;
-+ while (tmp)
-+ {
-+ if (tmp->ourcid == cid)
-+ {
-+ log (LOG_LOG,
-+ "%s :Hanging up call %d, Local: %d, Remote: %d\n",
-+ __FUNCTION__, tmp->serno, tmp->ourcid, tmp->cid);
-+ strcpy (tmp->errormsg, "Goodbye!");
-+/* tmp->needclose = -1; */
-+ kill (tmp->pppd, SIGTERM);
-+ return;
-+ }
-+ tmp = tmp->next;
-+ }
-+ t = t->next;
-+ };
-+ log (LOG_DEBUG, "%s : No such call %d to hang up.\n", __FUNCTION__, cid);
-+ return;
-+}
-+
-+void lac_disconnect (int tid)
-+{
-+ struct tunnel *t = tunnels.head;
-+ while (t)
-+ {
-+ if (t->ourtid == tid)
-+ {
-+ log (LOG_LOG,
-+ "%s: Disconnecting from %s, Local: %d, Remote: %d\n",
-+ __FUNCTION__, IPADDY (t->peer.sin_addr), t->ourtid, t->tid);
-+ t->self->needclose = -1;
-+ strcpy (t->self->errormsg, "Goodbye!");
-+ call_close (t->self);
-+ return;
-+ }
-+ t = t->next;
-+ };
-+ log (LOG_DEBUG, "%s: No such tunnel %d to hang up.\n", __FUNCTION__, tid);
-+ return;
-+}
-+
-+struct tunnel *new_tunnel ()
-+{
-+ struct tunnel *tmp = malloc (sizeof (struct tunnel));
-+ char entropy_buf[2] = "\0";
-+ if (!tmp)
-+ return NULL;
-+ tmp->control_seq_num = 0;
-+ tmp->control_rec_seq_num = 0;
-+ tmp->cLr = 0;
-+ tmp->call_head = NULL;
-+ tmp->next = NULL;
-+ tmp->debug = -1;
-+ tmp->tid = -1;
-+ tmp->hello = NULL;
-+#ifndef TESTING
-+/* while(get_call((tmp->ourtid = rand() & 0xFFFF),0,0,0)); */
-+#ifdef USE_KERNEL
-+ if (kernel_support)
-+ tmp->ourtid = ioctl (server_socket, L2TPIOCADDTUNNEL, 0);
-+ else
-+#endif
-+/* tmp->ourtid = rand () & 0xFFFF; */
-+ /* get_entropy((char *)&tmp->ourtid, 2); */
-+ get_entropy(entropy_buf, 2);
-+ {
-+ int *temp;
-+ temp = (int *)entropy_buf;
-+ tmp->ourtid = *temp & 0xFFFF;
-+#ifdef DEBUG_ENTROPY
-+ log(LOG_DEBUG, "ourtid = %u, entropy_buf = %hx\n", tmp->ourtid, *temp);
-+#endif
-+ }
-+#else
-+ tmp->ourtid = 0x6227;
-+#endif
-+ tmp->nego = 0;
-+ tmp->count = 0;
-+ tmp->state = 0; /* Nothing */
-+ tmp->peer.sin_family = AF_INET;
-+ tmp->peer.sin_port = 0;
-+ bzero (&(tmp->peer.sin_addr), sizeof (tmp->peer.sin_addr));
-+ tmp->sanity = -1;
-+ tmp->qtid = -1;
-+ tmp->ourfc = ASYNC_FRAMING | SYNC_FRAMING;
-+ tmp->ourbc = 0;
-+ tmp->ourtb = (((_u64) rand ()) << 32) | ((_u64) rand ());
-+ tmp->fc = -1; /* These really need to be specified by the peer */
-+ tmp->bc = -1; /* And we want to know if they forgot */
-+ tmp->hostname[0] = 0;
-+ tmp->vendor[0] = 0;
-+ tmp->secret[0] = 0;
-+ if (!(tmp->self = new_call (tmp)))
-+ {
-+ free (tmp);
-+ return NULL;
-+ };
-+ tmp->ourrws = DEFAULT_RWS_SIZE;
-+ tmp->self->ourfbit = FBIT;
-+ tmp->lac = NULL;
-+ tmp->lns = NULL;
-+ tmp->chal_us.state = 0;
-+ tmp->chal_us.secret[0] = 0;
-+ memset (tmp->chal_us.reply, 0, MD_SIG_SIZE);
-+ tmp->chal_them.state = 0;
-+ tmp->chal_them.secret[0] = 0;
-+ memset (tmp->chal_them.reply, 0, MD_SIG_SIZE);
-+ tmp->chal_them.vector = (unsigned char *) malloc (VECTOR_SIZE);
-+ tmp->chal_us.vector = NULL;
-+ tmp->hbit = 0;
-+ return tmp;
-+}
-+
-+void do_control ()
-+{
-+ char buf[1024];
-+ char *host, *tunstr, *callstr, *tmpstr;
-+ struct lac *lac;
-+ int call;
-+ int tunl;
-+ int cnt = -1;
-+ while (cnt)
-+ {
-+ cnt = read (control_fd, buf, sizeof (buf));
-+ if (cnt > 0)
-+ {
-+ if (buf[cnt - 1] == '\n')
-+ buf[--cnt] = 0;
-+#ifdef DEBUG_CONTROL
-+ log (LOG_DEBUG, "%s: Got message \"%s\" (%d bytes long)\n",
-+ __FUNCTION__, buf, cnt);
-+#endif
-+ switch (buf[0])
-+ {
-+ case 't':
-+ host = strchr (buf, ' ');
-+ if(!host)
-+ goto out;
-+ host++;
-+#ifdef DEBUG_CONTROL
-+ log (LOG_DEBUG, "%s: Attempting to tunnel to %s\n",
-+ __FUNCTION__, host);
-+#endif
-+ l2tp_call (host, UDP_LISTEN_PORT, NULL, NULL);
-+ break;
-+ case 'c': /* option 'c' for incoming call */
-+ case 'o': /* option 'o' for outgoing call */
-+ tunstr = strchr (buf, ' ');
-+ if(!tunstr)
-+ goto out;
-+ tunstr++;
-+
-+ if(buf[0] == 'c')
-+ switch_io = 1; /* Switch for Incoming Calls */
-+ else {
-+ switch_io = 0; /* Switch for Outgoing Calls */
-+ tmpstr = strchr(tunstr, ' ');
-+ if(!tmpstr)
-+ goto out;
-+ strncpy(dial_no_tmp,tmpstr, sizeof(*dial_no_tmp));
-+ }
-+
-+ lac = laclist;
-+ while (lac)
-+ {
-+ if (!strcasecmp (lac->entname, tunstr))
-+ {
-+ lac->active = -1;
-+ lac->rtries = 0;
-+ if (!lac->c)
-+ magic_lac_dial (lac);
-+ else
-+ log (LOG_DEBUG,
-+ "%s: Session '%s' already active!\n",
-+ __FUNCTION__, lac->entname);
-+ break;
-+ }
-+ lac = lac->next;
-+ }
-+ if (lac)
-+ break;
-+ tunl = atoi (tunstr);
-+ if (!tunl)
-+ {
-+ log (LOG_DEBUG, "%s: No such tunnel '%s'\n", __FUNCTION__,
-+ tunstr);
-+ break;
-+ }
-+#ifdef DEBUG_CONTROL
-+ log (LOG_DEBUG, "%s: Attempting to call on tunnel %d\n",
-+ __FUNCTION__, tunl);
-+#endif
-+ lac_call (tunl, NULL, NULL);
-+ break;
-+ case 'h':
-+ callstr = strchr (buf, ' ');
-+ if(!callstr)
-+ goto out;
-+ callstr++;
-+
-+ call = atoi (callstr);
-+#ifdef DEBUG_CONTROL
-+ log (LOG_DEBUG, "%s: Attempting to call %d\n", __FUNCTION__,
-+ call);
-+#endif
-+ lac_hangup (call);
-+ break;
-+ case 'd':
-+ tunstr = strchr (buf, ' ');
-+ if(!tunstr)
-+ goto out;
-+ tunstr++;
-+
-+ lac = laclist;
-+ while (lac)
-+ {
-+ if (!strcasecmp (lac->entname, tunstr))
-+ {
-+ lac->active = 0;
-+ lac->rtries = 0;
-+ if (lac->t)
-+ lac_disconnect (lac->t->ourtid);
-+ else
-+ log (LOG_DEBUG, "%s: Session '%s' not up\n",
-+ __FUNCTION__, lac->entname);
-+ break;
-+ }
-+ lac = lac->next;
-+ }
-+ if (lac)
-+ break;
-+ tunl = atoi (tunstr);
-+ if (!tunl)
-+ {
-+ log (LOG_DEBUG, "%s: No such tunnel '%s'\n", __FUNCTION__,
-+ tunstr);
-+ break;
-+ }
-+#ifdef DEBUG_CONTROL
-+ log (LOG_DEBUG, "%s: Attempting to disconnect tunnel %d\n",
-+ __FUNCTION__, tunl);
-+#endif
-+ lac_disconnect (tunl);
-+ break;
-+ case 's':
-+ show_status ();
-+ break;
-+ default:
-+ log (LOG_DEBUG, "%s: Unknown command %c\n", __FUNCTION__,
-+ buf[0]);
-+ }
-+ }
-+ }
-+
-+out:
-+ /* Otherwise select goes nuts */
-+ close (control_fd);
-+ control_fd = open (CONTROL_PIPE, O_RDONLY | O_NONBLOCK, 0600);
-+}
-+
-+void usage(void) {
-+ printf("Usage: l2tpd -D -c [config file] -s [secret file] -p [pid file]\n");
-+ printf("\n");
-+ exit(1);
-+}
-+
-+void init_args(int argc, char *argv[]) {
-+ int i=0;
-+ gconfig.daemon=1;
-+ memset(gconfig.altauthfile,0,STRLEN);
-+ memset(gconfig.altconfigfile,0,STRLEN);
-+ memset(gconfig.authfile,0,STRLEN);
-+ memset(gconfig.configfile,0,STRLEN);
-+ memset(gconfig.pidfile,0,STRLEN);
-+ strncpy(gconfig.altauthfile,ALT_DEFAULT_AUTH_FILE,
-+ sizeof(gconfig.altauthfile) - 1);
-+ strncpy(gconfig.altconfigfile,ALT_DEFAULT_CONFIG_FILE,
-+ sizeof(gconfig.altconfigfile) - 1);
-+ strncpy(gconfig.authfile,DEFAULT_AUTH_FILE,
-+ sizeof(gconfig.authfile) - 1);
-+ strncpy(gconfig.configfile,DEFAULT_CONFIG_FILE,
-+ sizeof(gconfig.configfile) - 1);
-+ strncpy(gconfig.pidfile,DEFAULT_PID_FILE,
-+ sizeof(gconfig.pidfile) - 1);
-+ for (i = 1; i < argc; i++) {
-+ if(! strncmp(argv[i],"-c",2)) {
-+ if(++i == argc)
-+ usage();
-+ else
-+ strncpy(gconfig.configfile,argv[i],
-+ sizeof(gconfig.configfile) - 1);
-+ }
-+ else if (! strncmp(argv[i],"-D",2)) {
-+ gconfig.daemon=0;
-+ }
-+ else if (! strncmp(argv[i],"-s",2)) {
-+ if(++i == argc)
-+ usage();
-+ else
-+ strncpy(gconfig.authfile,argv[i],
-+ sizeof(gconfig.authfile) - 1);
-+ }
-+ else if (! strncmp(argv[i],"-p",2)) {
-+ if(++i == argc)
-+ usage();
-+ else
-+ strncpy(gconfig.pidfile,argv[i],
-+ sizeof(gconfig.pidfile) - 1);
-+ }
-+ else {
-+ usage();
-+ }
-+ }
-+}
-+
-+
-+void daemonize() {
-+ int pid=0;
-+ int i,l;
-+ char buf[STRLEN];
-+
-+ if((pid = fork()) < 0) {
-+ log(LOG_LOG, "%s: Unable to fork ()\n",__FUNCTION__);
-+ close(server_socket);
-+ exit(1);
-+ }
-+ else if (pid)
-+ exit(0);
-+
-+
-+ close(0);
-+ close(1);
-+ close(2);
-+ dup2(open("/dev/null", O_RDONLY), 0);
-+ dup2(open("/dev/null", O_RDONLY), 1);
-+ dup2(open("/dev/null", O_RDONLY), 2);
-+
-+ /* Read previous pid file. */
-+ if((i = open(gconfig.pidfile,O_RDONLY)) > 0) {
-+ l=read(i,buf,sizeof(buf)-1);
-+ if (l >= 0) {
-+ buf[l] = '\0';
-+ pid = atoi(buf);
-+ }
-+ close(i);
-+
-+ /* if pid is read and process exist exit */
-+ if(pid && !kill(pid, 0)) {
-+ log(LOG_LOG, "%s: There's already a l2tpd server running.\n",
-+ __FUNCTION__);
-+ close(server_socket);
-+ exit(1);
-+ }
-+
-+ /* remove stalled pid file */
-+ unlink(gconfig.pidfile);
-+ }
-+
-+ pid = setsid();
-+
-+ /* create new pid file */
-+ if ((i = open (gconfig.pidfile, O_WRONLY | O_CREAT, 0644)) >= 0) {
-+ snprintf (buf, sizeof(buf), "%d", (int)getpid());
-+ write (i, buf, strlen(buf));
-+ close (i);
-+ }
-+ else {
-+ log(LOG_LOG, "%s: could not write pid file %s error %d",
-+ __FUNCTION__, gconfig.pidfile, i);
-+ close(server_socket);
-+ exit(1);
-+ }
-+}
-+
-+
-+void init (int argc,char *argv[])
-+{
-+ struct lac *lac;
-+ struct in_addr listenaddr;
-+
-+ init_args (argc,argv);
-+ srand( time(NULL) );
-+ rand_source = 0;
-+ init_addr ();
-+ if (init_config ())
-+ {
-+ log (LOG_CRIT, "%s: Unable to load config file\n", __FUNCTION__);
-+ exit (1);
-+ }
-+ if (uname (&uts))
-+ {
-+ log (LOG_CRIT, "%s : Unable to determine host system\n",
-+ __FUNCTION__);
-+ exit (1);
-+ }
-+ init_tunnel_list (&tunnels);
-+ if (init_network ())
-+ exit (1);
-+ if (gconfig.daemon)
-+ daemonize ();
-+ signal (SIGTERM, &death_handler);
-+ signal (SIGINT, &death_handler);
-+ signal (SIGCHLD, &child_handler);
-+ signal (SIGUSR1, &status_handler);
-+ signal (SIGHUP, &null_handler);
-+ init_scheduler ();
-+ mkfifo (CONTROL_PIPE, 0600);
-+ control_fd = open (CONTROL_PIPE, O_RDONLY | O_NONBLOCK, 0600);
-+ if (control_fd < 0)
-+ {
-+ log (LOG_CRIT, "%s: Unable to open " CONTROL_PIPE " for reading.",
-+ __FUNCTION__);
-+ exit (1);
-+ }
-+ log (LOG_LOG, "l2tpd version " SERVER_VERSION " started on %s PID:%d\n",
-+ hostname, getpid ());
-+ listenaddr.s_addr = gconfig.listenaddr;
-+ log (LOG_LOG, "%s version %s on a %s, listening on IP address %s, port %d\n", uts.sysname,
-+ uts.release, uts.machine, inet_ntoa(listenaddr), gconfig.port);
-+ lac = laclist;
-+ while (lac)
-+ {
-+ if (lac->autodial)
-+ {
-+#ifdef DEBUG_MAGIC
-+ log (LOG_DEBUG, "%s: Autodialing '%s'\n", __FUNCTION__,
-+ lac->entname[0] ? lac->entname : "(unnamed)");
-+#endif
-+ lac->active = -1;
-+ switch_io = 1; /* If we're a LAC, autodials will be ICRQ's */
-+ magic_lac_dial (lac);
-+ }
-+ lac = lac->next;
-+ }
-+}
-+
-+int main (int argc, char *argv[])
-+{
-+ init(argc,argv);
-+ dial_no_tmp = calloc (128, sizeof (char));
-+ network_thread ();
-+ return 0;
-+}
diff --git a/openwrt/package/l2tpd/patches/04-gcc4.patch b/openwrt/package/l2tpd/patches/04-gcc4.patch
deleted file mode 100644
index c4a906eace..0000000000
--- a/openwrt/package/l2tpd/patches/04-gcc4.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN ../tmp-orig/l2tpd-0.70-pre20031121/aaa.c ./aaa.c
---- ../tmp-orig/l2tpd-0.70-pre20031121/aaa.c 2004-12-09 09:54:10.159417376 +0100
-+++ ./aaa.c 2004-12-09 09:54:01.918670160 +0100
-@@ -27,7 +27,7 @@
-
- /* FIXME: Accounting? */
-
--static struct addr_ent *uaddr[ADDR_HASH_SIZE];
-+struct addr_ent *uaddr[ADDR_HASH_SIZE];
-
- void init_addr ()
- {
diff --git a/openwrt/package/l2tpd/patches/04-nonblock.patch b/openwrt/package/l2tpd/patches/04-nonblock.patch
deleted file mode 100644
index 7fc2226acd..0000000000
--- a/openwrt/package/l2tpd/patches/04-nonblock.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- l2tpd-0.70-pre20031121.orig/l2tpd.c.orig 2006-04-05 13:28:36.000000000 +0100
-+++ l2tpd-0.70-pre20031121.orig/l2tpd.c 2006-04-05 13:33:39.000000000 +0100
-@@ -289,6 +289,8 @@
- #endif
- struct termios ptyconf;
- char *str;
-+ int flags;
-+
- p = opts;
- stropt[0] = strdup (PPPD);
- while (p)
-@@ -347,6 +349,14 @@
- close(c->fd);
- return -EINVAL;
- }
-+ flags = fcntl(c->fd, F_GETFL);
-+ if (flags < 0 || fcntl(c->fd, F_SETFL, flags | O_NONBLOCK) < 0)
-+ {
-+ log (LOG_WARN, "%s: unable to fcntl(O_NONBLOCK) on pty\n",
-+ __FUNCTION__);
-+ close(c->fd);
-+ return -EINVAL;
-+ }
- tty = ptsname(c->fd);
- if (tty == NULL)
- {
diff --git a/openwrt/package/l2tpd/patches/05-df-disable.patch b/openwrt/package/l2tpd/patches/05-df-disable.patch
deleted file mode 100644
index 806c48d128..0000000000
--- a/openwrt/package/l2tpd/patches/05-df-disable.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Patch to stop l2tpd setting the DF bit on each of the packets it sends.
-Apart from not being useful with L2TP, this also prevents interoperating
-with Cisco IOS over IPSEC.
-
---- l2tpd-0.70-pre20031121.orig/network.c.orig 2006-04-11 08:50:38.000000000 +0100
-+++ l2tpd-0.70-pre20031121.orig/network.c 2006-04-11 08:58:18.000000000 +0100
-@@ -56,6 +56,18 @@
- __FUNCTION__);
- return -EINVAL;
- };
-+#ifdef IP_MTU_DISCOVER
-+#ifdef IP_PMTUDISC_DONT
-+ {
-+ /* Don't set DF bit on outbound packets */
-+ int val = IP_PMTUDISC_DONT;
-+ if (setsockopt(server_socket, IPPROTO_IP, IP_MTU_DISCOVER, &val, sizeof(val)) < 0)
-+ {
-+ log (LOG_LOG, "Failed to disable PMTU discovery\n");
-+ }
-+ }
-+#endif
-+#endif
- /* L2TP/IPSec: Set up SA for listening port here? NTB 20011015
- */
- if (bind (server_socket, (struct sockaddr *) &server, sizeof (server)))
diff --git a/openwrt/package/l2tpns/Config.in b/openwrt/package/l2tpns/Config.in
deleted file mode 100644
index e78b46b1c9..0000000000
--- a/openwrt/package/l2tpns/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_L2TPNS
- prompt "l2tpns............................ An L2TP enhanced server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBCLI
- help
- l2tpns is a layer 2 tunneling protocol network server (LNS).
- It supports up to 65535 concurrent sessions per server/cluster
- plus ISP features such as rate limiting, walled garden, usage
- accounting, and more.
-
- http://sourceforge.net/projects/l2tpns
diff --git a/openwrt/package/l2tpns/Makefile b/openwrt/package/l2tpns/Makefile
deleted file mode 100644
index 278ecdd297..0000000000
--- a/openwrt/package/l2tpns/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=l2tpns
-PKG_VERSION:=2.1.14
-PKG_RELEASE:=1
-PKG_MD5SUM:=2a0ee2a3678160c335f1d68c17c4f871
-
-PKG_SOURCE_URL:=@SF/l2tpns
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,L2TPNS,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- LD=$(TARGET_CC) \
- OPTIM="$(TARGET_CFLAGS)" \
- DESTDIR=$(PKG_INSTALL_DIR) \
- STAGING_DIR=$(STAGING_DIR) \
- all install
- touch $@
-
-$(IPKG_L2TPNS):
- install -d -m0755 $(IDIR_L2TPNS)/etc/l2tpns
- $(CP) $(PKG_INSTALL_DIR)/etc/l2tpns/* $(IDIR_L2TPNS)/etc/l2tpns/
- install -d -m0755 $(IDIR_L2TPNS)/usr/lib/l2tpns
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/l2tpns/* $(IDIR_L2TPNS)/usr/lib/l2tpns/
- install -d -m0755 $(IDIR_L2TPNS)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/* $(IDIR_L2TPNS)/usr/sbin/
- $(RSTRIP) $(IDIR_L2TPNS)
- $(IPKG_BUILD) $(IDIR_L2TPNS) $(PACKAGE_DIR)
diff --git a/openwrt/package/l2tpns/ipkg/l2tpns.conffiles b/openwrt/package/l2tpns/ipkg/l2tpns.conffiles
deleted file mode 100644
index eaf3a50954..0000000000
--- a/openwrt/package/l2tpns/ipkg/l2tpns.conffiles
+++ /dev/null
@@ -1,3 +0,0 @@
-/etc/l2tpns/ip_pool
-/etc/l2tpns/startup-config
-/etc/l2tpns/users
diff --git a/openwrt/package/l2tpns/ipkg/l2tpns.control b/openwrt/package/l2tpns/ipkg/l2tpns.control
deleted file mode 100644
index 1946f88880..0000000000
--- a/openwrt/package/l2tpns/ipkg/l2tpns.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: l2tpns
-Section: net
-Priority: optional
-Description: A layer 2 tunneling protocol network server (LNS).
diff --git a/openwrt/package/l2tpns/patches/01-honor_includes_remove_backtrace.patch b/openwrt/package/l2tpns/patches/01-honor_includes_remove_backtrace.patch
deleted file mode 100644
index a8e4d754a5..0000000000
--- a/openwrt/package/l2tpns/patches/01-honor_includes_remove_backtrace.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-diff -urN orig/l2tpns-2.1.14/Makefile l2tpns-2.1.14/Makefile
---- orig/l2tpns-2.1.14/Makefile 2005-12-07 06:21:37.000000000 +0100
-+++ l2tpns-2.1.14/Makefile 2005-12-14 12:50:49.000000000 +0100
-@@ -11,17 +11,14 @@
- DEFINES += -DETCDIR='"$(etcdir)"'
-
- OPTIM =
--OPTIM += -g
- OPTIM += -O3
-
--CC = gcc
--LD = gcc
--INCLUDES = -I.
-+INCLUDES = -I. -I$(STAGING_DIR)/usr/include
- CPPFLAGS = $(INCLUDES) $(DEFINES)
- CFLAGS = -Wall -Wformat-security -Wno-format-zero-length $(OPTIM)
--LDFLAGS =
-+LDFLAGS = -L$(STAGING_DIR)/usr/lib
- LDLIBS =
--INSTALL = install -c -D -o root -g root
-+INSTALL = install -c -D
-
- l2tpns.LIBS = -lm -lcli -ldl
-
-diff -urN orig/l2tpns-2.1.14/l2tpns.c l2tpns-2.1.14/l2tpns.c
---- orig/l2tpns-2.1.14/l2tpns.c 2005-12-07 06:21:37.000000000 +0100
-+++ l2tpns-2.1.14/l2tpns.c 2005-12-14 12:50:36.000000000 +0100
-@@ -940,18 +940,14 @@
-
- if (!t)
- {
-- static int backtrace_count = 0;
- LOG(0, 0, t, "tunnelsend called with 0 as tunnel id\n");
- STAT(tunnel_tx_errors);
-- log_backtrace(backtrace_count, 5)
- return;
- }
-
- if (!tunnel[t].ip)
- {
-- static int backtrace_count = 0;
- LOG(1, 0, t, "Error sending data out tunnel: no remote endpoint (tunnel not set up)\n");
-- log_backtrace(backtrace_count, 5)
- STAT(tunnel_tx_errors);
- return;
- }
-@@ -4125,23 +4121,8 @@
- struct sched_param params = {0};
- params.sched_priority = 1;
-
-- if (get_nprocs() < 2)
-- {
-- LOG(0, 0, 0, "Not using FIFO scheduler, there is only 1 processor in the system.\n");
-- config->scheduler_fifo = 0;
-- }
-- else
-- {
-- if ((ret = sched_setscheduler(0, SCHED_FIFO, &params)) == 0)
-- {
-- LOG(1, 0, 0, "Using FIFO scheduler. Say goodbye to any other processes running\n");
-- }
-- else
-- {
-- LOG(0, 0, 0, "Error setting scheduler to FIFO: %s\n", strerror(errno));
-- config->scheduler_fifo = 0;
-- }
-- }
-+ LOG(0, 0, 0, "Not using FIFO scheduler, there is only 1 processor in the system.\n");
-+ config->scheduler_fifo = 0;
- }
-
- /* Set up the cluster communications port. */
-diff -urN orig/l2tpns-2.1.14/l2tpns.h l2tpns-2.1.14/l2tpns.h
---- orig/l2tpns-2.1.14/l2tpns.h 2005-12-09 01:43:17.000000000 +0100
-+++ l2tpns-2.1.14/l2tpns.h 2005-12-14 07:43:51.000000000 +0100
-@@ -5,7 +5,6 @@
- #define __L2TPNS_H__
-
- #include <netinet/in.h>
--#include <execinfo.h>
- #include <stdio.h>
- #include <signal.h>
- #include <stdlib.h>
-@@ -766,21 +765,6 @@
- extern ippoolt *ip_address_pool;
- #define sessionfree (session[0].next)
-
--#define log_backtrace(count, max) \
--if (count++ < max) { \
-- void *array[20]; \
-- char **strings; \
-- int size, i; \
-- LOG(0, 0, t, "Backtrace follows:\n"); \
-- size = backtrace(array, 10); \
-- strings = backtrace_symbols(array, size); \
-- if (strings) for (i = 0; i < size; i++) \
-- { \
-- LOG(0, 0, t, " %s\n", strings[i]); \
-- } \
-- free(strings); \
--}
--
-
- extern configt *config;
- extern time_t basetime; // Time when this process started.
-diff -urN orig/l2tpns-2.1.14/ppp.c l2tpns-2.1.14/ppp.c
---- orig/l2tpns-2.1.14/ppp.c 2005-12-07 06:21:37.000000000 +0100
-+++ l2tpns-2.1.14/ppp.c 2005-12-14 07:43:08.000000000 +0100
-@@ -1755,9 +1755,7 @@
- {
- if (size < 12) // Need more space than this!!
- {
-- static int backtrace_count = 0;
- LOG(0, s, t, "makeppp buffer too small for L2TP header (size=%d)\n", size);
-- log_backtrace(backtrace_count, 5)
- return NULL;
- }
-
-@@ -1780,9 +1778,7 @@
-
- if (l + 12 > size)
- {
-- static int backtrace_count = 0;
- LOG(2, s, t, "makeppp would overflow buffer (size=%d, header+payload=%d)\n", size, l + 12);
-- log_backtrace(backtrace_count, 5)
- return NULL;
- }
-
diff --git a/openwrt/package/lcd4linux/Config.in b/openwrt/package/lcd4linux/Config.in
deleted file mode 100644
index 9dbb1dad64..0000000000
--- a/openwrt/package/lcd4linux/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_LCD4LINUX
- prompt "lcd4linux......................... Program to access an external LCD"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBNCURSES
- help
- LCD4Linux
-
- https://ssl.bulix.org/projects/lcd4linux/wiki/Howto
-
diff --git a/openwrt/package/lcd4linux/Makefile b/openwrt/package/lcd4linux/Makefile
deleted file mode 100644
index 09d329b9dc..0000000000
--- a/openwrt/package/lcd4linux/Makefile
+++ /dev/null
@@ -1,64 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=lcd4linux
-PKG_VERSION:=0.10.0+cvs20051015
-PKG_RELEASE:=1
-PKG_MD5SUM:=5b5ac629be4bb5c29104fb8f6b7fa444
-
-PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/l/lcd4linux/ \
- http://ftp.de.debian.org/debian/pool/main/l/lcd4linux/
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION).orig
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LCD4LINUX,lcd4linux,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --without-x \
- --with-drivers='all,!PNG,!RouterBoard,!X11' \
- --with-plugins=wireless \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld \
- CFLAGS="$(TARGET_CFLAGS) -Wall"
- touch $@
-
-$(IPKG_LCD4LINUX):
- install -d -m0755 $(IDIR_LCD4LINUX)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/lcd4linux $(IDIR_LCD4LINUX)/usr/bin/
- $(RSTRIP) $(IDIR_LCD4LINUX)
- $(IPKG_BUILD) $(IDIR_LCD4LINUX) $(PACKAGE_DIR)
diff --git a/openwrt/package/lcd4linux/ipkg/lcd4linux.control b/openwrt/package/lcd4linux/ipkg/lcd4linux.control
deleted file mode 100644
index f4809f0126..0000000000
--- a/openwrt/package/lcd4linux/ipkg/lcd4linux.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lcd4linux
-Priority: optional
-Section: apps
-Description: lcd software
-Depends: libncurses
diff --git a/openwrt/package/lcd4linux/patches/100-drv_RouterBoard.patch b/openwrt/package/lcd4linux/patches/100-drv_RouterBoard.patch
deleted file mode 100644
index fc9cbb43a9..0000000000
--- a/openwrt/package/lcd4linux/patches/100-drv_RouterBoard.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- lcd4linux-0.10.0-RC1/drv_RouterBoard.c 2004-08-30 15:20:45.000000000 +0200
-+++ lcd-patched/drv_RouterBoard.c 2005-03-19 16:03:26.849650830 +0100
-@@ -113,7 +113,7 @@
- #include <string.h>
- #include <errno.h>
- #include <unistd.h>
--#include <sys/io.h>
-+#include <asm/io.h>
-
- #include "debug.h"
- #include "cfg.h"
diff --git a/openwrt/package/lcd4linux/patches/110-ucdelay.patch b/openwrt/package/lcd4linux/patches/110-ucdelay.patch
deleted file mode 100644
index 0908973b72..0000000000
--- a/openwrt/package/lcd4linux/patches/110-ucdelay.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN lcd4linux.old/udelay.h lcd4linux.dev/udelay.h
---- lcd4linux.old/udelay.h 2005-05-08 06:32:45.000000000 +0200
-+++ lcd4linux.dev/udelay.h 2006-01-20 03:50:36.806897500 +0100
-@@ -76,7 +76,7 @@
- /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
- static inline void rep_nop(void)
- {
-- __asm__ __volatile__("rep; nop");
-+ __asm__ __volatile__("nop");
- }
-
-
diff --git a/openwrt/package/lcd4linux/patches/120-remove_parport_outb.patch b/openwrt/package/lcd4linux/patches/120-remove_parport_outb.patch
deleted file mode 100644
index 37693241a0..0000000000
--- a/openwrt/package/lcd4linux/patches/120-remove_parport_outb.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -urN lcd4linux.old/drv_generic_parport.c lcd4linux.dev/drv_generic_parport.c
---- lcd4linux.old/drv_generic_parport.c 2006-01-20 03:52:18.426419500 +0100
-+++ lcd4linux.dev/drv_generic_parport.c 2006-01-20 03:57:59.205263500 +0100
-@@ -134,6 +134,11 @@
- #define PARPORT_STATUS_BUSY 0x80
- #endif
-
-+#ifndef WITH_OUTB
-+#define inb(foo) 0
-+#define outb(foo,bar) 0
-+#endif
-+
- #if !defined(WITH_OUTB) && !defined(WITH_PPDEV)
- #error neither outb() nor ppdev() possible
- #error cannot compile parallel port driver
diff --git a/openwrt/package/less/Config.in b/openwrt/package/less/Config.in
deleted file mode 100644
index 2581bd923b..0000000000
--- a/openwrt/package/less/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_LESS
- prompt "less.............................. A text file viewer."
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBNCURSES
- help
- less - less is a pager. A pager usually displays text files.
-
- http://www.greenwoodsoftware.com/less/
-
diff --git a/openwrt/package/less/Makefile b/openwrt/package/less/Makefile
deleted file mode 100644
index 51e0a5e482..0000000000
--- a/openwrt/package/less/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=less
-PKG_VERSION:=381
-PKG_RELEASE:=1
-PKG_MD5SUM:=40c2dd4ac137b61b6a55a6478817daf4
-
-PKG_SOURCE_URL:=http://www.greenwoodsoftware.com/less
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LESS,less,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="-I$(STAGING_DIR)/usr/include $(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --without-regex \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)
- touch $@
-
-$(IPKG_LESS):
- install -d -m0755 $(IDIR_LESS)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/less $(IDIR_LESS)/usr/bin/
- $(RSTRIP) $(IDIR_LESS)
- $(IPKG_BUILD) $(IDIR_LESS) $(PACKAGE_DIR)
diff --git a/openwrt/package/less/ipkg/less.control b/openwrt/package/less/ipkg/less.control
deleted file mode 100644
index dbf4e4fa77..0000000000
--- a/openwrt/package/less/ipkg/less.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: less
-Priority: optional
-Section: misc
-Depends: libncurses
-Description: A text mode pager
diff --git a/openwrt/package/libamsel/Config.in b/openwrt/package/libamsel/Config.in
deleted file mode 100644
index 60738b4ef6..0000000000
--- a/openwrt/package/libamsel/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_LIBAMSEL
- prompt "libamsel.......................... The amwall library"
- tristate
- default m if CONFIG_DEVEL
- help
- A library for amwall configuration files
-
- http://amselinux.de/
-
diff --git a/openwrt/package/libamsel/Makefile b/openwrt/package/libamsel/Makefile
deleted file mode 100644
index 0a32c73eaf..0000000000
--- a/openwrt/package/libamsel/Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libamsel
-PKG_VERSION:=20040621-cvs
-PKG_RELEASE:=1
-PKG_MD5SUM:=2077e620047404881a65d39c53c9917e
-
-PKG_SOURCE_URL:=ftp://ftp.amselinux.net/source/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBAMSEL,libamsel,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- LDIR=$(PKG_BUILD_DIR) \
- PREFIX="$(PKG_INSTALL_DIR)/usr" \
- all install
- touch $@
-
-$(IPKG_LIBAMSEL):
- install -d -m0755 $(IDIR_LIBAMSEL)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(IDIR_LIBAMSEL)/usr/lib
- $(RSTRIP) $(IDIR_LIBAMSEL)
- $(IPKG_BUILD) $(IDIR_LIBAMSEL) $(PACKAGE_DIR)
-
-
-$(STAGING_DIR)/usr/lib/libamsel.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/amsel/compat.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/include/compat
- $(CP) $(PKG_INSTALL_DIR)/usr/include/amsel/compat/queue.h $(STAGING_DIR)/usr/include/compat
- mkdir -p $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libamsel.so $(STAGING_DIR)/usr/lib/
- touch $(STAGING_DIR)/usr/lib/libamsel.so
-
-install-dev: $(STAGING_DIR)/usr/lib/libamsel.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/compat.h \
- $(STAGING_DIR)/usr/include/compat \
- $(STAGING_DIR)/usr/lib/libamsel.so \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
diff --git a/openwrt/package/libamsel/ipkg/libamsel.control b/openwrt/package/libamsel/ipkg/libamsel.control
deleted file mode 100644
index 9629fa3995..0000000000
--- a/openwrt/package/libamsel/ipkg/libamsel.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libamsel
-Priority: optional
-Section: libs
-Description: library for amwall
diff --git a/openwrt/package/libao/Config.in b/openwrt/package/libao/Config.in
deleted file mode 100644
index 67403aece2..0000000000
--- a/openwrt/package/libao/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_LIBAO
- prompt "libao............................. A cross platform audio library"
- tristate
- default m if CONFIG_DEVEL
- help
- Libao is a cross-platform audio library that allows programs to
- output audio using a simple API on a wide variety of platforms.
-
- http://www.xiph.org/ao/
-
diff --git a/openwrt/package/libao/Makefile b/openwrt/package/libao/Makefile
deleted file mode 100644
index dee885ea2d..0000000000
--- a/openwrt/package/libao/Makefile
+++ /dev/null
@@ -1,100 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libao
-PKG_VERSION:=0.8.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=12e136a4c0995068ff134997c84421ed
-
-PKG_SOURCE_URL:=http://downloads.xiph.org/releases/ao/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBAO,libao,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- --disable-esd \
- --disable-arts \
- --disable-nas \
- --disable-polyp \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBAO):
- install -m0755 -d $(IDIR_LIBAO)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libao.so.* $(IDIR_LIBAO)/usr/lib/
- $(RSTRIP) $(IDIR_LIBAO)
- $(IPKG_BUILD) $(IDIR_LIBAO) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libao.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/ao $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libao.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libao.so* $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/ao.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I$${includedir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/ao.pc
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/ao.pc
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libao.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/ao \
- $(STAGING_DIR)/usr/lib/libao.a \
- $(STAGING_DIR)/usr/lib/libao.so* \
- $(STAGING_DIR)/usr/lib/pkgconfig/ao.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/libao/ipkg/libao.control b/openwrt/package/libao/ipkg/libao.control
deleted file mode 100644
index 510392922d..0000000000
--- a/openwrt/package/libao/ipkg/libao.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libao
-Priority: optional
-Section: libs
-Description: A cross platform audio library
diff --git a/openwrt/package/libart/Config.in b/openwrt/package/libart/Config.in
deleted file mode 100644
index 562e77f68b..0000000000
--- a/openwrt/package/libart/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_LIBART
- prompt "libart............................ An high-performance 2D graphics library"
- tristate
-# default m if CONFIG_DEVEL
- default n
- help
- A library of functions for 2D graphics supporting a superset of the
- PostScript imaging model, designed to be integrated with graphics, artwork,
- and illustration programs. It is written in optimized C, and is fully
- compatible with C++. With a small footprint of 10,000 lines of code, it is
- especially suitable for embedded applications.
-
- http://www.levien.com/libart/
-
diff --git a/openwrt/package/libart/Makefile b/openwrt/package/libart/Makefile
deleted file mode 100644
index 558ff21235..0000000000
--- a/openwrt/package/libart/Makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libart
-PKG_VERSION:=2.3.17
-PKG_RELEASE:=1
-PKG_MD5SUM:=f1f6b3e5490f382535dccb288f5d8b14
-
-PKG_SOURCE_URL:=http://ftp.gnome.org/pub/gnome/sources/libart_lgpl/2.3
-PKG_SOURCE:=$(PKG_NAME)_lgpl-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_lgpl-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBART,libart,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- $(TARGET_CONFIGURE_OPTS) \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared=yes \
- --enable-static=yes \
- --disable-rpath \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- HOSTCC="$(HOSTCC)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBART):
- install -d -m0755 $(IDIR_LIBART)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libart_lgpl_2.so.* $(IDIR_LIBART)/usr/lib/
- $(RSTRIP) $(IDIR_LIBART)
- $(IPKG_BUILD) $(IDIR_LIBART) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libart_lgpl_2.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/libart2-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libart-2.0 $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libart_lgpl_2.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libart-2.0.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libart_lgpl_2.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/libart2-config \
- $(STAGING_DIR)/usr/include/libart-2.0 \
- $(STAGING_DIR)/usr/lib/libart_lgpl_2.{a,so*} \
- $(STAGING_DIR)/usr/lib/pkgconfig/libart-2.0.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libart/ipkg/libart.control b/openwrt/package/libart/ipkg/libart.control
deleted file mode 100644
index 42d9523adf..0000000000
--- a/openwrt/package/libart/ipkg/libart.control
+++ /dev/null
@@ -1,9 +0,0 @@
-Package: libart
-Priority: optional
-Section: libs
-Description: An high-performance 2D graphics library.
- A library of functions for 2D graphics supporting a superset of the
- PostScript imaging model, designed to be integrated with graphics, artwork,
- and illustration programs. It is written in optimized C, and is fully
- compatible with C++. With a small footprint of 10,000 lines of code, it is
- especially suitable for embedded applications.
diff --git a/openwrt/package/libart/patches/100-cross_compile_fix.patch b/openwrt/package/libart/patches/100-cross_compile_fix.patch
deleted file mode 100644
index aae1acccfa..0000000000
--- a/openwrt/package/libart/patches/100-cross_compile_fix.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -urN libart.old/Makefile.in libart.dev/Makefile.in
---- libart.old/Makefile.in 2005-01-21 10:52:11.000000000 +0100
-+++ libart.dev/Makefile.in 2005-07-17 19:31:05.000000000 +0200
-@@ -440,9 +440,9 @@
- @rm -f testuta$(EXEEXT)
- $(LINK) $(testuta_LDFLAGS) $(testuta_OBJECTS) $(testuta_LDADD) $(LIBS)
-
--gen_art_config$(EXEEXT): $(gen_art_config_OBJECTS) $(gen_art_config_DEPENDENCIES)
-+gen_art_config$(EXEEXT):
- @rm -f gen_art_config$(EXEEXT)
-- $(LINK) $(gen_art_config_LDFLAGS) $(gen_art_config_OBJECTS) $(gen_art_config_LDADD) $(LIBS)
-+ $(HOSTCC) -I. -DLIBART_COMPILATION -DHAVE_CONFIG_H -o $@ gen_art_config.c
-
- install-binSCRIPTS: $(bin_SCRIPTS)
- @$(NORMAL_INSTALL)
diff --git a/openwrt/package/libaudiofile/Config.in b/openwrt/package/libaudiofile/Config.in
deleted file mode 100644
index f9a89de1e3..0000000000
--- a/openwrt/package/libaudiofile/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_LIBAUDIOFILE
- prompt "libaudiofile...................... An open-source version of SGI's audiofile library"
- tristate
- help
- The audiofile library allows the processing of audio data to and from audio
- files of many common formats (currently AIFF, AIFF-C, WAVE, NeXT/Sun, BICS,
- and raw data).
diff --git a/openwrt/package/libaudiofile/Makefile b/openwrt/package/libaudiofile/Makefile
deleted file mode 100644
index 308bf169c3..0000000000
--- a/openwrt/package/libaudiofile/Makefile
+++ /dev/null
@@ -1,102 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libaudiofile
-PKG_VERSION:=0.2.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=460f848ce5f4a33ae66b15a4fb7720ec
-
-PKG_SOURCE_URL:=http://www.cti.ecp.fr/~beauxir5/peercast
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBAUDIOFILE,libaudiofile,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_linux_vers=$(BR2_DEFAULT_KERNEL_HEADERS) \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --with-build-cc=$(HOSTCC) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CCOPT="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBAUDIOFILE):
- install -m0755 -d $(IDIR_LIBAUDIOFILE)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libaudiofile.so.* $(IDIR_LIBAUDIOFILE)/usr/lib/
- $(RSTRIP) $(IDIR_LIBAUDIOFILE)
- $(IPKG_BUILD) $(IDIR_LIBAUDIOFILE) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libaudiofile.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/audiofile-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/af_vfs.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/audiofile.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/aupvlist.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libaudiofile.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libaudiofile.so* $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/audiofile.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I$${includedir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/audiofile.pc
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/audiofile.pc
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libaudiofile.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/af_vfs.h \
- $(STAGING_DIR)/usr/include/audiofile.h \
- $(STAGING_DIR)/usr/include/aupvlist.h \
- $(STAGING_DIR)/usr/lib/libaudiofile.a \
- $(STAGING_DIR)/usr/lib/libaudiofile.so* \
- $(STAGING_DIR)/usr/lib/pkgconfig/libaudiofile.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/libaudiofile/ipkg/libaudiofile.control b/openwrt/package/libaudiofile/ipkg/libaudiofile.control
deleted file mode 100644
index b9ba5e1845..0000000000
--- a/openwrt/package/libaudiofile/ipkg/libaudiofile.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libaudiofile
-Priority: optional
-Section: libs
-Description: Open-source version of SGI's audiofile library
diff --git a/openwrt/package/libaudiofile/patches/001-audiofile-config-libdirs.patch b/openwrt/package/libaudiofile/patches/001-audiofile-config-libdirs.patch
deleted file mode 100644
index ba92d7d4ef..0000000000
--- a/openwrt/package/libaudiofile/patches/001-audiofile-config-libdirs.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- libaudiofile-0.2.6/audiofile-config.in.orig 2004-03-06 07:39:23.000000000 +0100
-+++ libaudiofile-0.2.6/audiofile-config.in 2005-12-13 14:15:52.000000000 +0100
-@@ -45,7 +45,9 @@
- echo $includes
- ;;
- --libs)
-- libdirs=-L@libdir@
-+ if test @libdir@ != /usr/libdir ; then
-+ libdirs=-L@libdir@
-+ fi
- echo $libdirs -laudiofile -lm
- ;;
- *)
diff --git a/openwrt/package/libcli/Config.in b/openwrt/package/libcli/Config.in
deleted file mode 100644
index a7a187cca8..0000000000
--- a/openwrt/package/libcli/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_LIBCLI
- prompt "libcli............................ A Cisco-like command line interface"
- tristate
- default m if CONFIG_DEVEL
- help
- Provides a shared library for including a Cisco-like
- command-line interface into other software. It's a telnet
- interface which supports command-line editing, history,
- authentication and callbacks for a user-definable function tree
-
- http://libcli.sourceforge.net/
diff --git a/openwrt/package/libcli/Makefile b/openwrt/package/libcli/Makefile
deleted file mode 100755
index 398ee092d2..0000000000
--- a/openwrt/package/libcli/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libcli
-PKG_VERSION:=1.8.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=0fdd30df5a8c1388a4549751ba61247a
-
-PKG_SOURCE_URL:=@SF/libcli
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBCLI,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) CC=$(TARGET_CC) LD=$(TARGET_CC) \
- DESTDIR=$(PKG_INSTALL_DIR) \
- -C $(PKG_BUILD_DIR) install
- touch $@
-
-$(IPKG_LIBCLI):
- install -d -m0755 $(IDIR_LIBCLI)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcli* $(IDIR_LIBCLI)/usr/lib
- $(RSTRIP) $(IDIR_LIBCLI)
- $(IPKG_BUILD) $(IDIR_LIBCLI) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libcli.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libcli.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcli.so* $(STAGING_DIR)/usr/lib/
-
-install-dev: $(STAGING_DIR)/usr/lib/libcli.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/libcli.h \
- $(STAGING_DIR)/usr/lib/libcli.so*
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
diff --git a/openwrt/package/libcli/ipkg/libcli.control b/openwrt/package/libcli/ipkg/libcli.control
deleted file mode 100755
index 6ef456b597..0000000000
--- a/openwrt/package/libcli/ipkg/libcli.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libcli
-Section: libs
-Architecture: mipsel
-Priority: optional
-Description: Provides a shared library for including a Cisco-like command-line interface into other software. \ No newline at end of file
diff --git a/openwrt/package/libcli/patches/01-remove_debug_honor_prefix.patch b/openwrt/package/libcli/patches/01-remove_debug_honor_prefix.patch
deleted file mode 100644
index 830baa0720..0000000000
--- a/openwrt/package/libcli/patches/01-remove_debug_honor_prefix.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -urN orig/libcli-1.8.5/Makefile libcli-1.8.5/Makefile
---- orig/libcli-1.8.5/Makefile 2005-05-02 11:57:39.000000000 +0200
-+++ libcli-1.8.5/Makefile 2005-12-13 17:42:46.000000000 +0100
-@@ -1,13 +1,12 @@
- DESTDIR =
--PREFIX = /usr/local
-+PREFIX = /usr/
-
- MAJOR = 1
- MINOR = 8
- REVISION = 5
- LIB = libcli.so
-
--CC = gcc
--DEBUG = -g
-+DEBUG =
- OPTIM = -O3
- CFLAGS += $(DEBUG) $(OPTIM) -Wall -Wformat-security -Wno-format-zero-length
- LDFLAGS += -shared -Wl,-soname,$(LIB).$(MAJOR).$(MINOR)
diff --git a/openwrt/package/libdaemon/Config.in b/openwrt/package/libdaemon/Config.in
deleted file mode 100644
index 3cda2d0728..0000000000
--- a/openwrt/package/libdaemon/Config.in
+++ /dev/null
@@ -1,19 +0,0 @@
-config BR2_PACKAGE_LIBDAEMON
- prompt "libdaemon......................... A lightweight C library that eases the writing of UNIX daemons"
- tristate
- default m if CONFIG_DEVEL
- help
- libdaemon is a lightweight C library that eases the writing of UNIX daemons.
- It consists of the following parts:
-
- * A wrapper around fork() which does the correct daemonization procedure of a process
- * A wrapper around syslog() for simpler and compatible log output to Syslog or STDERR
- * An API for writing PID files
- * An API for serializing UNIX signals into a pipe for usage with select() or poll()
- * An API for running subprocesses with STDOUT and STDERR redirected to syslog.
-
- APIs like these are used in most daemon software available. It is not that
- simple to get it done right and code duplication is not a goal.
-
- http://0pointer.de/lennart/projects/libdaemon/
-
diff --git a/openwrt/package/libdaemon/Makefile b/openwrt/package/libdaemon/Makefile
deleted file mode 100644
index 272e8c2b75..0000000000
--- a/openwrt/package/libdaemon/Makefile
+++ /dev/null
@@ -1,97 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libdaemon
-PKG_VERSION:=0.10
-PKG_RELEASE:=1
-PKG_MD5SUM:=6812a5e4063b5016f25e9a0cebbd3dd9
-
-PKG_SOURCE_URL:=http://0pointer.de/lennart/projects/libdaemon/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBDAEMON,libdaemon,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_func_setpgrp_void=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- --disable-lynx \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBDAEMON):
- install -d -m0755 $(IDIR_LIBDAEMON)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdaemon.so.* $(IDIR_LIBDAEMON)/usr/lib/
- $(RSTRIP) $(IDIR_LIBDAEMON)
- $(IPKG_BUILD) $(IDIR_LIBDAEMON) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libdaemon.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libdaemon $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdaemon.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdaemon.so* $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libdaemon.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I$${includedir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/libdaemon.pc
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/libdaemon.pc
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libdaemon.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/libdaemon \
- $(STAGING_DIR)/usr/lib/libdaemon.a \
- $(STAGING_DIR)/usr/lib/libdaemon.so* \
- $(STAGING_DIR)/usr/lib/pkgconfig/libdaemon.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/libdaemon/ipkg/libdaemon.control b/openwrt/package/libdaemon/ipkg/libdaemon.control
deleted file mode 100644
index 3f53422246..0000000000
--- a/openwrt/package/libdaemon/ipkg/libdaemon.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libdaemon
-Priority: optional
-Section: libs
-Description: A lightweight C library that eases the writing of UNIX daemons.
diff --git a/openwrt/package/libdb/Config.in b/openwrt/package/libdb/Config.in
deleted file mode 100644
index 5871032a8a..0000000000
--- a/openwrt/package/libdb/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_COMPILE_DB
- tristate
- default n
- depends BR2_PACKAGE_LIBDB
-
-config BR2_PACKAGE_LIBDB
- prompt "libdb............................. Berkeley DB"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_DB
- help
- disk file format database which stores key/data-pairs in single files.
-
- http://www.sleepycat.com/products/db.shtml
-
diff --git a/openwrt/package/libdb/Makefile b/openwrt/package/libdb/Makefile
deleted file mode 100644
index d2ecf93f1b..0000000000
--- a/openwrt/package/libdb/Makefile
+++ /dev/null
@@ -1,91 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libdb
-PKG_VERSION:=4.2.52
-PKG_RELEASE:=1
-PKG_MD5SUM:=x
-
-PKG_SOURCE_URL:=ftp://ftp.sleepycat.com/releases/ \
- http://downloads.sleepycat.com/
-PKG_SOURCE:=db-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/db-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBDB,libdb,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR)/build_unix ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ../dist/configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --disable-java \
- --enable-cxx \
- --disable-posixmutexes \
- --disable-uimutexes \
- --disable-tcl \
- --disable-rpc \
- --enable-compat185 \
- --enable-debug \
- --enable-statistics \
- --enable-replication \
- --enable-cryptography \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR)/build_unix \
- DESTDIR="$(PKG_INSTALL_DIR)" install
- touch $@
-
-$(IPKG_LIBDB):
- install -m0755 -d $(IDIR_LIBDB)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdb*.so $(IDIR_LIBDB)/usr/lib/
- $(RSTRIP) $(IDIR_LIBDB)
- $(IPKG_BUILD) $(IDIR_LIBDB) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libdb.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/db.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdb*.{a,so} $(STAGING_DIR)/usr/lib/
- touch $(STAGING_DIR)/usr/lib/libdb.so
-
-install-dev: $(STAGING_DIR)/usr/lib/libdb.so
-
-uninstall-dev:
- rm -rf $(STAGING_DIR)/usr/include/db.h
- rm -rf $(STAGING_DIR)/usr/lib/libdb*.{a,so}
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libdb/ipkg/libdb.control b/openwrt/package/libdb/ipkg/libdb.control
deleted file mode 100644
index 28605c38f6..0000000000
--- a/openwrt/package/libdb/ipkg/libdb.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libdb
-Priority: optional
-Section: libs
-Description: disk file format database which stores key/data-pairs in single files
diff --git a/openwrt/package/libdnet/Config.in b/openwrt/package/libdnet/Config.in
deleted file mode 100644
index de7c3548d4..0000000000
--- a/openwrt/package/libdnet/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_LIBDNET
- prompt "libdnet........................... Low-level network library"
- tristate
- default m if CONFIG_DEVEL
- help
- simplified, portable interface to several low-level networking routines
-
- http://sourceforge.net/projects/libdnet/
-
diff --git a/openwrt/package/libdnet/Makefile b/openwrt/package/libdnet/Makefile
deleted file mode 100644
index d325a05335..0000000000
--- a/openwrt/package/libdnet/Makefile
+++ /dev/null
@@ -1,95 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libdnet
-PKG_VERSION:=1.10
-PKG_RELEASE:=1
-PKG_MD5SUM:=416b765e9d9961501ac85e9a366fd219
-
-PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/libdnet-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBDNET,libdnet,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- touch configure.in; \
- touch include.m4; \
- touch aclocal.m4; \
- touch Makefile.in; \
- touch configure; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var/run \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBDNET):
- install -m0755 -d $(IDIR_LIBDNET)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdnet.so.* $(IDIR_LIBDNET)/usr/lib/
- install -m0755 -d $(IDIR_LIBDNET)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/dnet $(IDIR_LIBDNET)/usr/sbin/
- $(RSTRIP) $(IDIR_LIBDNET)
- $(IPKG_BUILD) $(IDIR_LIBDNET) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libdnet.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnet-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/dnet.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/dnet $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdnet.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libdnet.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/dnet-config \
- $(STAGING_DIR)/usr/include/dnet.h \
- $(STAGING_DIR)/usr/include/dnet \
- $(STAGING_DIR)/usr/lib/libdnet.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libdnet/ipkg/libdnet.control b/openwrt/package/libdnet/ipkg/libdnet.control
deleted file mode 100644
index cb7c6ac672..0000000000
--- a/openwrt/package/libdnet/ipkg/libdnet.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libdnet
-Priority: optional
-Section: libs
-Description: a low-level networking library
diff --git a/openwrt/package/libdnet/patches/libdnet-1.10-dnet_config.patch b/openwrt/package/libdnet/patches/libdnet-1.10-dnet_config.patch
deleted file mode 100644
index 005ac3305c..0000000000
--- a/openwrt/package/libdnet/patches/libdnet-1.10-dnet_config.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- libdnet-1.10/dnet-config.in.orig 2001-10-19 03:29:00.000000000 +0200
-+++ libdnet-1.10/dnet-config.in 2005-09-20 09:32:53.000000000 +0200
-@@ -45,10 +45,18 @@
- done
-
- if test "$echo_cflags" = "yes"; then
-- echo -I@includedir@
-+ includes=
-+ if test "@includedir@" != "/usr/include" ; then
-+ includes=-I@includedir@
-+ fi
-+ echo $includes
- fi
-
- if test "$echo_libs" = "yes"; then
-- echo -L@libdir@ -ldnet @LIBS@
-+ libs=
-+ if test "@libdir@" != "/usr/lib" ; then
-+ libs=-I@libdir@
-+ fi
-+ echo $libs -ldnet @LIBS@
- fi
-
diff --git a/openwrt/package/libelf/Config.in b/openwrt/package/libelf/Config.in
deleted file mode 100644
index 915632ebf4..0000000000
--- a/openwrt/package/libelf/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_LIBELF
- prompt "libelf............................ ELF object file access library"
- tristate
- default m if CONFIG_DEVEL
- help
- This is the public release of libelf-0.8.5, a free ELF object
- file access library.
-
- http://www.stud.uni-hannover.de/~michael/software/
-
diff --git a/openwrt/package/libelf/Makefile b/openwrt/package/libelf/Makefile
deleted file mode 100644
index 29057b74f4..0000000000
--- a/openwrt/package/libelf/Makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libelf
-PKG_VERSION:=0.8.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=c1daf069367871350ece779b7de20047
-
-PKG_SOURCE_URL:=http://www.mr511.de/software/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBELF,libelf,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- mr_cv_target_elf=yes \
- libelf_64bit=yes \
- libelf_cv_struct_elf64_ehdr=yes \
- libelf_cv_type_elf64_addr=no \
- libelf_cv_struct_elf64_rel=yes \
- ac_cv_sizeof_long_long=8 \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --enable-elf64=yes \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) -j1 \
- CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld ARCH=$(ARCH) \
- instroot="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBELF):
- install -d -m0755 $(IDIR_LIBELF)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelf.so.* $(IDIR_LIBELF)/usr/lib/
- $(RSTRIP) $(IDIR_LIBELF)
- $(IPKG_BUILD) $(IDIR_LIBELF) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libelf.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libelf* $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelf.{a,so*} $(STAGING_DIR)/usr/lib/
-
-install-dev: $(STAGING_DIR)/usr/lib/libelf.so
-
-uninstall-dev:
- rm -rf $(STAGING_DIR)/usr/include/libelf*
- rm -rf $(STAGING_DIR)/usr/lib/libelf.{a,so*}
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libelf/ipkg/libelf.control b/openwrt/package/libelf/ipkg/libelf.control
deleted file mode 100644
index 804b02fd7f..0000000000
--- a/openwrt/package/libelf/ipkg/libelf.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libelf
-Priority: optional
-Section: libs
-Description: a library for accessing ELF objects
diff --git a/openwrt/package/libevent/Config.in b/openwrt/package/libevent/Config.in
deleted file mode 100644
index 6f1eafcc32..0000000000
--- a/openwrt/package/libevent/Config.in
+++ /dev/null
@@ -1,17 +0,0 @@
-config BR2_PACKAGE_LIBEVENT
- prompt "libevent.......................... Event notification library for event-driven network servers"
- tristate
- default m if CONFIG_DEVEL
- help
- The libevent API provides a mechanism to execute a callback function
- when a specific event occurs on a file descriptor or after a timeout
- has been reached. Furthermore, libevent also support callbacks due
- to signals or regular timeouts.
-
- libevent is meant to replace the event loop found in event driven
- network servers. An application just needs to call event_dispatch()
- and then add or remove events dynamically without having to change
- the event loop.
-
- http://www.monkey.org/~provos/libevent/
-
diff --git a/openwrt/package/libevent/Makefile b/openwrt/package/libevent/Makefile
deleted file mode 100644
index 487fe559a1..0000000000
--- a/openwrt/package/libevent/Makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libevent
-PKG_VERSION:=1.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=a5bd281aeb41bdaa48fbbf0495423d20
-
-PKG_SOURCE_URL:=http://www.monkey.org/~provos/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBEVENT,libevent,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBEVENT):
- install -d -m0755 $(IDIR_LIBEVENT)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libevent-$(PKG_VERSION).so.* $(IDIR_LIBEVENT)/usr/lib/
- $(RSTRIP) $(IDIR_LIBEVENT)
- $(IPKG_BUILD) $(IDIR_LIBEVENT) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libevent.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/event.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libevent.{a,so} $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libevent-$(PKG_VERSION).so* $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libevent.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/event.h \
- $(STAGING_DIR)/usr/lib/libevent.{a,so} \
- $(STAGING_DIR)/usr/lib/libevent-$(PKG_VERSION).so* \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libevent/ipkg/libevent.control b/openwrt/package/libevent/ipkg/libevent.control
deleted file mode 100644
index 31da5b27ef..0000000000
--- a/openwrt/package/libevent/ipkg/libevent.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libevent
-Priority: optional
-Section: libs
-Description: Event notification library for event-driven network servers
diff --git a/openwrt/package/libffi-sable/Config.in b/openwrt/package/libffi-sable/Config.in
deleted file mode 100644
index 18db3def73..0000000000
--- a/openwrt/package/libffi-sable/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_LIBFFI_SABLE
- prompt "libffi-sable...................... Foreign Function Interface library (for sablevm)"
- tristate
- default m if CONFIG_DEVEL
- help
- The libffi library provides a portable, high level programming
- interface to various calling conventions. This allows a programmer to
- call any function specified by a call interface description at run
- time.
-
- http://sources.redhat.com/libffi/
-
diff --git a/openwrt/package/libffi-sable/Makefile b/openwrt/package/libffi-sable/Makefile
deleted file mode 100644
index 402ce56f9e..0000000000
--- a/openwrt/package/libffi-sable/Makefile
+++ /dev/null
@@ -1,84 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libffi-sable
-PKG_VERSION:=3325
-PKG_RELEASE:=3
-PKG_MD5SUM:=0c32eaaea0269c5fbe156fcd0be3e5bd
-
-PKG_SOURCE_URL:=http://sablevm.org/download/snapshot/2005-01-21/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-BR2_PACKAGE_LIBFFI_SABLE=m
-
-$(eval $(call PKG_template,LIBFFI_SABLE,libffi-sable,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-debug \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBFFI_SABLE):
- install -m0755 -d $(IDIR_LIBFFI_SABLE)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libffi.so.* $(IDIR_LIBFFI_SABLE)/usr/lib/
- $(RSTRIP) $(IDIR_LIBFFI_SABLE)
- $(IPKG_BUILD) $(IDIR_LIBFFI_SABLE) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libffi.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/ffi{,target}.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libffi.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libffi.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/ffi{,target}.h \
- $(STAGING_DIR)/usr/lib/libffi.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libffi-sable/ipkg/libffi-sable.control b/openwrt/package/libffi-sable/ipkg/libffi-sable.control
deleted file mode 100644
index 697b3e82ba..0000000000
--- a/openwrt/package/libffi-sable/ipkg/libffi-sable.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libffi-sable
-Priority: optional
-Section: libs
-Description: Foreign Function Interface library
diff --git a/openwrt/package/libgcrypt/Config.in b/openwrt/package/libgcrypt/Config.in
deleted file mode 100644
index e75c7744a3..0000000000
--- a/openwrt/package/libgcrypt/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_PACKAGE_LIBGCRYPT
- prompt "libgcrypt......................... The GNU crypto library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBGPG_ERROR
- help
- This is a general purpose cryptographic library based on the code from
- GnuPG. It provides functions for all cryptograhic building blocks:
- symmetric ciphers (AES, DES, Blowfish, CAST5, Twofish, Arcfour), hash
- algorithms (MD4, MD5, RIPE-MD160, SHA-1, TIGER-192), MACs (HMAC for all
- hash algorithms), public key algorithms (RSA, ElGamal, DSA), large
- integer functions, random numbers and a lot of supporting functions.
-
- http://directory.fsf.org/security/libgcrypt.html
-
diff --git a/openwrt/package/libgcrypt/Makefile b/openwrt/package/libgcrypt/Makefile
deleted file mode 100644
index bf35eef234..0000000000
--- a/openwrt/package/libgcrypt/Makefile
+++ /dev/null
@@ -1,94 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libgcrypt
-PKG_VERSION:=1.2.1
-PKG_RELEASE:=0
-PKG_MD5SUM:=b6d3217c9333c520fe54d2e8dc5e60ec
-
-PKG_SOURCE_URL:=http://ftp.gnupg.org/gcrypt/libgcrypt/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBGCRYPT,libgcrypt,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --disable-asm \
- --with-gpg-error-prefix="$(STAGING_DIR)/usr" \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBGCRYPT):
- install -m0755 -d $(IDIR_LIBGCRYPT)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgcrypt.so.* $(IDIR_LIBGCRYPT)/usr/lib/
- $(RSTRIP) $(IDIR_LIBGCRYPT)
- $(IPKG_BUILD) $(IDIR_LIBGCRYPT) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libgcrypt.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/libgcrypt-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/gcrypt*.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgcrypt.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/share/aclocal
- $(CP) $(PKG_INSTALL_DIR)/usr/share/aclocal/libgcrypt.m4 $(STAGING_DIR)/usr/share/aclocal/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libgcrypt.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/libgcrypt-config \
- $(STAGING_DIR)/usr/include/gcrypt*.h \
- $(STAGING_DIR)/usr/lib/libgcrypt.{a,so*} \
- $(STAGING_DIR)/usr/share/aclocal/libgcrypt.m4 \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/libgcrypt/ipkg/libgcrypt.control b/openwrt/package/libgcrypt/ipkg/libgcrypt.control
deleted file mode 100644
index 8cf2b303fd..0000000000
--- a/openwrt/package/libgcrypt/ipkg/libgcrypt.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: libgcrypt
-Priority: optional
-Section: libs
-Description: GNU crypto library
-Depends: libgpg-error
-
diff --git a/openwrt/package/libgcrypt/patches/500-cross-compile.patch b/openwrt/package/libgcrypt/patches/500-cross-compile.patch
deleted file mode 100644
index e7d4d5877b..0000000000
--- a/openwrt/package/libgcrypt/patches/500-cross-compile.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN libgcrypt-1.2.1-orig/tests/Makefile.am libgcrypt-1.2.1-1/tests/Makefile.am
---- libgcrypt-1.2.1-orig/tests/Makefile.am 2004-03-03 09:08:05.000000000 +0100
-+++ libgcrypt-1.2.1-1/tests/Makefile.am 2005-03-15 21:36:49.000000000 +0100
-@@ -21,7 +21,7 @@
- TESTS = prime register ac basic tsexp keygen pubkey benchmark
-
- INCLUDES = -I$(top_srcdir)/src
--LDADD = ../src/libgcrypt.la
-+LDADD = ../src/libgcrypt.la @LTLIBOBJS@ @GPG_ERROR_LIBS@
-
- EXTRA_PROGRAMS = testapi
- noinst_PROGRAMS = $(TESTS)
-diff -ruN libgcrypt-1.2.1-orig/tests/Makefile.in libgcrypt-1.2.1-1/tests/Makefile.in
---- libgcrypt-1.2.1-orig/tests/Makefile.in 2005-01-05 14:53:23.000000000 +0100
-+++ libgcrypt-1.2.1-1/tests/Makefile.in 2005-03-15 21:37:12.000000000 +0100
-@@ -258,7 +258,7 @@
- target_vendor = @target_vendor@
- TESTS = prime register ac basic tsexp keygen pubkey benchmark
- INCLUDES = -I$(top_srcdir)/src
--LDADD = ../src/libgcrypt.la
-+LDADD = ../src/libgcrypt.la @LTLIBOBJS@ @GPG_ERROR_LIBS@
- AM_CFLAGS = @GPG_ERROR_CFLAGS@
- all: all-am
-
diff --git a/openwrt/package/libgd/Config.in b/openwrt/package/libgd/Config.in
deleted file mode 100644
index 8c513bda78..0000000000
--- a/openwrt/package/libgd/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_LIBGD
- prompt "libgd............................. The GD Graphics Library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBJPEG
- select BR2_PACKAGE_LIBPNG
- help
- The GD Graphics Library
-
- http://www.boutell.com/gd/
-
diff --git a/openwrt/package/libgd/Makefile b/openwrt/package/libgd/Makefile
deleted file mode 100644
index 88933e7021..0000000000
--- a/openwrt/package/libgd/Makefile
+++ /dev/null
@@ -1,95 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=gd
-PKG_VERSION:=2.0.33
-PKG_RELEASE:=2
-PKG_MD5SUM:=be0a6d326cd8567e736fbc75df0a5c45
-
-PKG_SOURCE_URL:=http://www.boutell.com/gd/http
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBGD,libgd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBPNG12_CONFIG="$(STAGING_DIR)/usr/bin/libpng12-config" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- --without-x \
- --without-freetype \
- --with-jpeg=$(STAGING_DIR)/usr \
- --with-png=$(STAGING_DIR)/usr \
- --without-xpm \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBGD):
- install -d -m0755 $(IDIR_LIBGD)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgd.so.* $(IDIR_LIBGD)/usr/lib/
- $(RSTRIP) $(IDIR_LIBGD)
- $(IPKG_BUILD) $(IDIR_LIBGD) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libgd.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/gdlib-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/entities.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/gd*.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgd.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libgd.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/gdlib-config \
- $(STAGING_DIR)/usr/include/entities.h \
- $(STAGING_DIR)/usr/include/gd*.h \
- $(STAGING_DIR)/usr/lib/libgd.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
diff --git a/openwrt/package/libgd/ipkg/libgd.control b/openwrt/package/libgd/ipkg/libgd.control
deleted file mode 100644
index f6a78e5c3a..0000000000
--- a/openwrt/package/libgd/ipkg/libgd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libgd
-Priority: optional
-Section: libs
-Depends: libjpeg, libpng
-Description: A library for the dynamic creation of images
diff --git a/openwrt/package/libgd/patches/100-configure_fix.patch b/openwrt/package/libgd/patches/100-configure_fix.patch
deleted file mode 100644
index dd7d6bc457..0000000000
--- a/openwrt/package/libgd/patches/100-configure_fix.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff -urN gd-2.0.33.old/configure gd-2.0.33.dev/configure
---- gd-2.0.33.old/configure 2004-11-04 00:14:47.000000000 +0100
-+++ gd-2.0.33.dev/configure 2005-05-05 15:06:26.000000000 +0200
-@@ -7217,8 +7217,6 @@
- shlibpath_overrides_runpath=unknown
- version_type=none
- dynamic_linker="$host_os ld.so"
--sys_lib_dlsearch_path_spec="/lib /usr/lib"
--sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-
- case $host_os in
- aix3*)
-@@ -7481,8 +7479,6 @@
- *)
- ;;
- esac
-- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
-- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
- ;;
-
- netbsd*)
-@@ -11032,14 +11028,14 @@
- fi
-
- if test -n "$LIBPNG12_CONFIG"; then
-- libpng_CPPFLAGS=`libpng12-config --cflags`
-+ libpng_CPPFLAGS=`$LIBPNG12_CONFIG --cflags`
- # should be --ldopts, but it's currently broken
-- libpng_LDFLAGS=`libpng12-config --ldflags`
-+ libpng_LDFLAGS=`$LIBPNG12_CONFIG --ldflags`
- libpng_LDFLAGS=`echo " $libpng_LDFLAGS" | sed 's/ -l[^ ][^ ]*//g'`
- elif test -n "$LIBPNG_CONFIG"; then
-- libpng_CPPFLAGS=`libpng-config --cflags`
-+ libpng_CPPFLAGS=`$LIBPNG_CONFIG --cflags`
- # should be --ldopts, but it's currently broken
-- libpng_LDFLAGS=`libpng-config --ldflags`
-+ libpng_LDFLAGS=`$LIBPNG_CONFIG --ldflags`
- libpng_LDFLAGS=`echo " $libpng_LDFLAGS" | sed 's/ -l[^ ][^ ]*//g'`
- elif test -d "$withval"; then
- libpng_CPPFLAGS="-I$withval/include"
diff --git a/openwrt/package/libgdbm/Config.in b/openwrt/package/libgdbm/Config.in
deleted file mode 100644
index c969a947cf..0000000000
--- a/openwrt/package/libgdbm/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_LIBGDBM
- prompt "libgdbm........................... The GNU database manager"
- tristate
- default m if CONFIG_DEVEL
- help
- disk file format database which stores key/data-pairs in single files.
-
- http://www.gnu.org
-
diff --git a/openwrt/package/libgdbm/Makefile b/openwrt/package/libgdbm/Makefile
deleted file mode 100644
index 9611e843ad..0000000000
--- a/openwrt/package/libgdbm/Makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libgdbm
-PKG_VERSION:=1.8.3
-PKG_RELEASE:=0
-PKG_MD5SUM:=1d1b1d5c0245b1c00aff92da751e9aa1
-
-PKG_SOURCE_URL:=@GNU/gdbm
-PKG_SOURCE:=gdbm-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/gdbm-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBGDBM,libgdbm,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- BINOWN=`id -u` \
- BINGRP=`id -g` \
- $(TARGET_CONFIGURE_OPTS) \
- INSTALL_ROOT="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBGDBM): $(STAGING_DIR)/usr/lib/libgdbm.so
- install -m0755 -d $(IDIR_LIBGDBM)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgdbm.so.* $(IDIR_LIBGDBM)/usr/lib/
- $(RSTRIP) $(IDIR_LIBGDBM)
- $(IPKG_BUILD) $(IDIR_LIBGDBM) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libgdbm.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/gdbm.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgdbm.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $(STAGING_DIR)/usr/lib/libgdbm.so
-
-install-dev: $(STAGING_DIR)/usr/lib/libgdbm.so
-
-uninstall-dev:
- rm -rf $(STAGING_DIR)/usr/include/gdbm.h
- rm -rf $(STAGING_DIR)/usr/lib/libgdbm.{a,so*}
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libgdbm/ipkg/libgdbm.control b/openwrt/package/libgdbm/ipkg/libgdbm.control
deleted file mode 100644
index a05a7ac37b..0000000000
--- a/openwrt/package/libgdbm/ipkg/libgdbm.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libgdbm
-Priority: optional
-Section: libs
-Description: disk file format database which stores key/data-pairs in single files
diff --git a/openwrt/package/libgpg-error/Config.in b/openwrt/package/libgpg-error/Config.in
deleted file mode 100644
index 1a6b003742..0000000000
--- a/openwrt/package/libgpg-error/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_LIBGPG_ERROR
- prompt "libgpg-error...................... An helper library for common error codes and descriptions"
- tristate
- default m if CONFIG_DEVEL
- help
- This is a library that defines common error values for all GnuPG
- components. Among these are GPG, GPGSM, GPGME, GPG-Agent, libgcrypt,
- Libksba, DirMngr, Pinentry, SmartCard Daemon and possibly more in the
- future.
-
- http://www.gnupg.org/related_software/libgpg-error/
-
diff --git a/openwrt/package/libgpg-error/Makefile b/openwrt/package/libgpg-error/Makefile
deleted file mode 100644
index eb127d3f17..0000000000
--- a/openwrt/package/libgpg-error/Makefile
+++ /dev/null
@@ -1,95 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libgpg-error
-PKG_VERSION:=1.0
-PKG_RELEASE:=0
-PKG_MD5SUM:=ff409db977e4a4897aa09ea420a28a2f
-
-PKG_SOURCE_URL:=ftp://ftp.gnupg.org/gcrypt/libgpg-error/ \
- http://mirrors.rootmode.com/ftp.gnupg.org/libgpg-error/ \
- http://gulus.usherbrooke.ca/pub/appl/GnuPG/libgpg-error/ \
- http://gnupg.unixmexico.org/ftp/libgpg-error/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBGPG_ERROR,libgpg-error,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBGPG_ERROR):
- install -m0755 -d $(IDIR_LIBGPG_ERROR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgpg-error.so.* $(IDIR_LIBGPG_ERROR)/usr/lib/
- $(RSTRIP) $(IDIR_LIBGPG_ERROR)
- $(IPKG_BUILD) $(IDIR_LIBGPG_ERROR) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libgpg-error.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/gpg-error-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/gpg-error.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgpg-error.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/share/aclocal
- $(CP) $(PKG_INSTALL_DIR)/usr/share/aclocal/gpg-error.m4 $(STAGING_DIR)/usr/share/aclocal/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libgpg-error.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/gpg-error-config \
- $(STAGING_DIR)/usr/include/gpg-error.h \
- $(STAGING_DIR)/usr/lib/libgpg-error.{a,so*} \
- $(STAGING_DIR)/usr/share/aclocal/gpg-error.m4 \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/libgpg-error/ipkg/libgpg-error.control b/openwrt/package/libgpg-error/ipkg/libgpg-error.control
deleted file mode 100644
index 6a08c01abc..0000000000
--- a/openwrt/package/libgpg-error/ipkg/libgpg-error.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libgpg-error
-Priority: optional
-Section: libs
-Description: an helper library for common error codes and descriptions
diff --git a/openwrt/package/libiconv/Config.in b/openwrt/package/libiconv/Config.in
deleted file mode 100644
index a3247c9112..0000000000
--- a/openwrt/package/libiconv/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_LIBICONV
- prompt "libiconv.......................... character set conversion library"
- tristate
- default m if CONFIG_DEVEL
- help
-
- This package contains a _very_ stripped down version of GNU Libiconv,
- all charsets have been removed, except ASCII, various unicode charsets
- and iso8896-1.
-
- The original website:
- http://www.gnu.org/software/libiconv/
-
diff --git a/openwrt/package/libiconv/Makefile b/openwrt/package/libiconv/Makefile
deleted file mode 100644
index e72742101b..0000000000
--- a/openwrt/package/libiconv/Makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libiconv
-PKG_VERSION:=1.9.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=0c99a05e0c3c153bac1c960f78711155
-
-PKG_SOURCE_URL:=@GNU/libiconv
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBICONV,libiconv,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC)
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- libdir="$(PKG_INSTALL_DIR)/usr/lib" \
- includedir="$(PKG_INSTALL_DIR)/usr/include" \
- install-lib
- touch $@
-
-$(IPKG_LIBICONV):
- install -d -m0755 $(IDIR_LIBICONV)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libiconv.so* $(IDIR_LIBICONV)/usr/lib/
- chmod 0644 $(IDIR_LIBICONV)/usr/lib/*
- $(RSTRIP) $(IDIR_LIBICONV)
- $(IPKG_BUILD) $(IDIR_LIBICONV) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/iconv/libiconv.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include/iconv
- $(CP) $(PKG_INSTALL_DIR)/usr/include/iconv.h $(STAGING_DIR)/usr/include/iconv
- mkdir -p $(STAGING_DIR)/usr/lib/iconv
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libiconv.* $(STAGING_DIR)/usr/lib/iconv
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/iconv/libiconv.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/iconv \
- $(STAGING_DIR)/usr/lib/iconv \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libiconv/ipkg/libiconv.control b/openwrt/package/libiconv/ipkg/libiconv.control
deleted file mode 100644
index 21306f1d75..0000000000
--- a/openwrt/package/libiconv/ipkg/libiconv.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libiconv
-Priority: optional
-Section: libs
-Description: character set conversion library
diff --git a/openwrt/package/libiconv/patches/100-strip_charsets.patch b/openwrt/package/libiconv/patches/100-strip_charsets.patch
deleted file mode 100644
index 1b8b0fd0bc..0000000000
--- a/openwrt/package/libiconv/patches/100-strip_charsets.patch
+++ /dev/null
@@ -1,2962 +0,0 @@
-diff -Nur libiconv-1.9.1-orig/lib/aliases.gperf libiconv-1.9.1-nocompile/lib/aliases.gperf
---- libiconv-1.9.1-orig/lib/aliases.gperf 2003-05-22 22:17:15.000000000 +0200
-+++ libiconv-1.9.1-nocompile/lib/aliases.gperf 2006-03-05 15:50:42.000000000 +0100
-@@ -48,8 +48,6 @@
- UCS-2-SWAPPED, ei_ucs2swapped
- UCS-4-INTERNAL, ei_ucs4internal
- UCS-4-SWAPPED, ei_ucs4swapped
--C99, ei_c99
--JAVA, ei_java
- ISO-8859-1, ei_iso8859_1
- ISO_8859-1, ei_iso8859_1
- ISO_8859-1:1987, ei_iso8859_1
-@@ -60,276 +58,5 @@
- L1, ei_iso8859_1
- CSISOLATIN1, ei_iso8859_1
- ISO8859-1, ei_iso8859_1
--ISO-8859-2, ei_iso8859_2
--ISO_8859-2, ei_iso8859_2
--ISO_8859-2:1987, ei_iso8859_2
--ISO-IR-101, ei_iso8859_2
--LATIN2, ei_iso8859_2
--L2, ei_iso8859_2
--CSISOLATIN2, ei_iso8859_2
--ISO8859-2, ei_iso8859_2
--ISO-8859-3, ei_iso8859_3
--ISO_8859-3, ei_iso8859_3
--ISO_8859-3:1988, ei_iso8859_3
--ISO-IR-109, ei_iso8859_3
--LATIN3, ei_iso8859_3
--L3, ei_iso8859_3
--CSISOLATIN3, ei_iso8859_3
--ISO8859-3, ei_iso8859_3
--ISO-8859-4, ei_iso8859_4
--ISO_8859-4, ei_iso8859_4
--ISO_8859-4:1988, ei_iso8859_4
--ISO-IR-110, ei_iso8859_4
--LATIN4, ei_iso8859_4
--L4, ei_iso8859_4
--CSISOLATIN4, ei_iso8859_4
--ISO8859-4, ei_iso8859_4
--ISO-8859-5, ei_iso8859_5
--ISO_8859-5, ei_iso8859_5
--ISO_8859-5:1988, ei_iso8859_5
--ISO-IR-144, ei_iso8859_5
--CYRILLIC, ei_iso8859_5
--CSISOLATINCYRILLIC, ei_iso8859_5
--ISO8859-5, ei_iso8859_5
--ISO-8859-6, ei_iso8859_6
--ISO_8859-6, ei_iso8859_6
--ISO_8859-6:1987, ei_iso8859_6
--ISO-IR-127, ei_iso8859_6
--ECMA-114, ei_iso8859_6
--ASMO-708, ei_iso8859_6
--ARABIC, ei_iso8859_6
--CSISOLATINARABIC, ei_iso8859_6
--ISO8859-6, ei_iso8859_6
--ISO-8859-7, ei_iso8859_7
--ISO_8859-7, ei_iso8859_7
--ISO_8859-7:1987, ei_iso8859_7
--ISO-IR-126, ei_iso8859_7
--ECMA-118, ei_iso8859_7
--ELOT_928, ei_iso8859_7
--GREEK8, ei_iso8859_7
--GREEK, ei_iso8859_7
--CSISOLATINGREEK, ei_iso8859_7
--ISO8859-7, ei_iso8859_7
--ISO-8859-8, ei_iso8859_8
--ISO_8859-8, ei_iso8859_8
--ISO_8859-8:1988, ei_iso8859_8
--ISO-IR-138, ei_iso8859_8
--HEBREW, ei_iso8859_8
--CSISOLATINHEBREW, ei_iso8859_8
--ISO8859-8, ei_iso8859_8
--ISO-8859-9, ei_iso8859_9
--ISO_8859-9, ei_iso8859_9
--ISO_8859-9:1989, ei_iso8859_9
--ISO-IR-148, ei_iso8859_9
--LATIN5, ei_iso8859_9
--L5, ei_iso8859_9
--CSISOLATIN5, ei_iso8859_9
--ISO8859-9, ei_iso8859_9
--ISO-8859-10, ei_iso8859_10
--ISO_8859-10, ei_iso8859_10
--ISO_8859-10:1992, ei_iso8859_10
--ISO-IR-157, ei_iso8859_10
--LATIN6, ei_iso8859_10
--L6, ei_iso8859_10
--CSISOLATIN6, ei_iso8859_10
--ISO8859-10, ei_iso8859_10
--ISO-8859-13, ei_iso8859_13
--ISO_8859-13, ei_iso8859_13
--ISO-IR-179, ei_iso8859_13
--LATIN7, ei_iso8859_13
--L7, ei_iso8859_13
--ISO8859-13, ei_iso8859_13
--ISO-8859-14, ei_iso8859_14
--ISO_8859-14, ei_iso8859_14
--ISO_8859-14:1998, ei_iso8859_14
--ISO-IR-199, ei_iso8859_14
--LATIN8, ei_iso8859_14
--L8, ei_iso8859_14
--ISO-CELTIC, ei_iso8859_14
--ISO8859-14, ei_iso8859_14
--ISO-8859-15, ei_iso8859_15
--ISO_8859-15, ei_iso8859_15
--ISO_8859-15:1998, ei_iso8859_15
--ISO-IR-203, ei_iso8859_15
--ISO8859-15, ei_iso8859_15
--ISO-8859-16, ei_iso8859_16
--ISO_8859-16, ei_iso8859_16
--ISO_8859-16:2000, ei_iso8859_16
--ISO-IR-226, ei_iso8859_16
--ISO8859-16, ei_iso8859_16
--KOI8-R, ei_koi8_r
--CSKOI8R, ei_koi8_r
--KOI8-U, ei_koi8_u
--KOI8-RU, ei_koi8_ru
--CP1250, ei_cp1250
--WINDOWS-1250, ei_cp1250
--MS-EE, ei_cp1250
--CP1251, ei_cp1251
--WINDOWS-1251, ei_cp1251
--MS-CYRL, ei_cp1251
--CP1252, ei_cp1252
--WINDOWS-1252, ei_cp1252
--MS-ANSI, ei_cp1252
--CP1253, ei_cp1253
--WINDOWS-1253, ei_cp1253
--MS-GREEK, ei_cp1253
--CP1254, ei_cp1254
--WINDOWS-1254, ei_cp1254
--MS-TURK, ei_cp1254
--CP1255, ei_cp1255
--WINDOWS-1255, ei_cp1255
--MS-HEBR, ei_cp1255
--CP1256, ei_cp1256
--WINDOWS-1256, ei_cp1256
--MS-ARAB, ei_cp1256
--CP1257, ei_cp1257
--WINDOWS-1257, ei_cp1257
--WINBALTRIM, ei_cp1257
--CP1258, ei_cp1258
--WINDOWS-1258, ei_cp1258
--CP850, ei_cp850
--IBM850, ei_cp850
--850, ei_cp850
--CSPC850MULTILINGUAL, ei_cp850
--CP862, ei_cp862
--IBM862, ei_cp862
--862, ei_cp862
--CSPC862LATINHEBREW, ei_cp862
--CP866, ei_cp866
--IBM866, ei_cp866
--866, ei_cp866
--CSIBM866, ei_cp866
--MACROMAN, ei_mac_roman
--MACINTOSH, ei_mac_roman
--MAC, ei_mac_roman
--CSMACINTOSH, ei_mac_roman
--MACCENTRALEUROPE, ei_mac_centraleurope
--MACICELAND, ei_mac_iceland
--MACCROATIAN, ei_mac_croatian
--MACROMANIA, ei_mac_romania
--MACCYRILLIC, ei_mac_cyrillic
--MACUKRAINE, ei_mac_ukraine
--MACGREEK, ei_mac_greek
--MACTURKISH, ei_mac_turkish
--MACHEBREW, ei_mac_hebrew
--MACARABIC, ei_mac_arabic
--MACTHAI, ei_mac_thai
--HP-ROMAN8, ei_hp_roman8
--ROMAN8, ei_hp_roman8
--R8, ei_hp_roman8
--CSHPROMAN8, ei_hp_roman8
--NEXTSTEP, ei_nextstep
--ARMSCII-8, ei_armscii_8
--GEORGIAN-ACADEMY, ei_georgian_academy
--GEORGIAN-PS, ei_georgian_ps
--KOI8-T, ei_koi8_t
--MULELAO-1, ei_mulelao
--CP1133, ei_cp1133
--IBM-CP1133, ei_cp1133
--TIS-620, ei_tis620
--TIS620, ei_tis620
--TIS620-0, ei_tis620
--TIS620.2529-1, ei_tis620
--TIS620.2533-0, ei_tis620
--TIS620.2533-1, ei_tis620
--ISO-IR-166, ei_tis620
--CP874, ei_cp874
--WINDOWS-874, ei_cp874
--VISCII, ei_viscii
--VISCII1.1-1, ei_viscii
--CSVISCII, ei_viscii
--TCVN, ei_tcvn
--TCVN-5712, ei_tcvn
--TCVN5712-1, ei_tcvn
--TCVN5712-1:1993, ei_tcvn
--JIS_C6220-1969-RO, ei_iso646_jp
--ISO646-JP, ei_iso646_jp
--ISO-IR-14, ei_iso646_jp
--JP, ei_iso646_jp
--CSISO14JISC6220RO, ei_iso646_jp
--JIS_X0201, ei_jisx0201
--JISX0201-1976, ei_jisx0201
--X0201, ei_jisx0201
--CSHALFWIDTHKATAKANA, ei_jisx0201
--JIS_X0208, ei_jisx0208
--JIS_X0208-1983, ei_jisx0208
--JIS_X0208-1990, ei_jisx0208
--JIS0208, ei_jisx0208
--X0208, ei_jisx0208
--ISO-IR-87, ei_jisx0208
--JIS_C6226-1983, ei_jisx0208
--CSISO87JISX0208, ei_jisx0208
--JIS_X0212, ei_jisx0212
--JIS_X0212.1990-0, ei_jisx0212
--JIS_X0212-1990, ei_jisx0212
--X0212, ei_jisx0212
--ISO-IR-159, ei_jisx0212
--CSISO159JISX02121990, ei_jisx0212
--GB_1988-80, ei_iso646_cn
--ISO646-CN, ei_iso646_cn
--ISO-IR-57, ei_iso646_cn
--CN, ei_iso646_cn
--CSISO57GB1988, ei_iso646_cn
--GB_2312-80, ei_gb2312
--ISO-IR-58, ei_gb2312
--CSISO58GB231280, ei_gb2312
--CHINESE, ei_gb2312
--ISO-IR-165, ei_isoir165
--CN-GB-ISOIR165, ei_isoir165
--KSC_5601, ei_ksc5601
--KS_C_5601-1987, ei_ksc5601
--KS_C_5601-1989, ei_ksc5601
--ISO-IR-149, ei_ksc5601
--CSKSC56011987, ei_ksc5601
--KOREAN, ei_ksc5601
--EUC-JP, ei_euc_jp
--EUCJP, ei_euc_jp
--EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE, ei_euc_jp
--CSEUCPKDFMTJAPANESE, ei_euc_jp
--SHIFT_JIS, ei_sjis
--SHIFT-JIS, ei_sjis
--SJIS, ei_sjis
--MS_KANJI, ei_sjis
--CSSHIFTJIS, ei_sjis
--CP932, ei_cp932
--ISO-2022-JP, ei_iso2022_jp
--CSISO2022JP, ei_iso2022_jp
--ISO-2022-JP-1, ei_iso2022_jp1
--ISO-2022-JP-2, ei_iso2022_jp2
--CSISO2022JP2, ei_iso2022_jp2
--EUC-CN, ei_euc_cn
--EUCCN, ei_euc_cn
--GB2312, ei_euc_cn
--CN-GB, ei_euc_cn
--CSGB2312, ei_euc_cn
--GBK, ei_ces_gbk
--CP936, ei_ces_gbk
--GB18030, ei_gb18030
--ISO-2022-CN, ei_iso2022_cn
--CSISO2022CN, ei_iso2022_cn
--ISO-2022-CN-EXT, ei_iso2022_cn_ext
--HZ, ei_hz
--HZ-GB-2312, ei_hz
--EUC-TW, ei_euc_tw
--EUCTW, ei_euc_tw
--CSEUCTW, ei_euc_tw
--BIG5, ei_ces_big5
--BIG-5, ei_ces_big5
--BIG-FIVE, ei_ces_big5
--BIGFIVE, ei_ces_big5
--CN-BIG5, ei_ces_big5
--CSBIG5, ei_ces_big5
--CP950, ei_cp950
--BIG5-HKSCS, ei_big5hkscs
--BIG5HKSCS, ei_big5hkscs
--EUC-KR, ei_euc_kr
--EUCKR, ei_euc_kr
--CSEUCKR, ei_euc_kr
--CP949, ei_cp949
--UHC, ei_cp949
--JOHAB, ei_johab
--CP1361, ei_johab
--ISO-2022-KR, ei_iso2022_kr
--CSISO2022KR, ei_iso2022_kr
- CHAR, ei_local_char
- WCHAR_T, ei_local_wchar_t
-diff -Nur libiconv-1.9.1-orig/lib/aliases.h libiconv-1.9.1-nocompile/lib/aliases.h
---- libiconv-1.9.1-orig/lib/aliases.h 2003-05-22 22:17:17.000000000 +0200
-+++ libiconv-1.9.1-nocompile/lib/aliases.h 2006-03-05 15:50:42.000000000 +0100
-@@ -1,6 +1,6 @@
--/* ANSI-C code produced by gperf version 3.0 */
--/* Command-line: gperf -m 10 lib/aliases.gperf */
--/* Computed positions: -k'1,3-11,$' */
-+/* ANSI-C code produced by gperf version 3.0.1 */
-+/* Command-line: gperf -m 10 aliases.gperf */
-+/* Computed positions: -k'4-7,$' */
-
- #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
- && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
-@@ -29,15 +29,15 @@
- #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
- #endif
-
--#line 1 "lib/aliases.gperf"
-+#line 1 "aliases.gperf"
- struct alias { int name; unsigned int encoding_index; };
-
--#define TOTAL_KEYWORDS 324
-+#define TOTAL_KEYWORDS 51
- #define MIN_WORD_LENGTH 2
--#define MAX_WORD_LENGTH 45
--#define MIN_HASH_VALUE 15
--#define MAX_HASH_VALUE 879
--/* maximum key range = 865, duplicates = 0 */
-+#define MAX_WORD_LENGTH 17
-+#define MIN_HASH_VALUE 4
-+#define MAX_HASH_VALUE 67
-+/* maximum key range = 64, duplicates = 0 */
-
- #ifdef __GNUC__
- __inline
-@@ -49,39 +49,27 @@
- static unsigned int
- aliases_hash (register const char *str, register unsigned int len)
- {
-- static const unsigned short asso_values[] =
-+ static const unsigned char asso_values[] =
- {
-- 880, 880, 880, 880, 880, 880, 880, 880, 880, 880,
-- 880, 880, 880, 880, 880, 880, 880, 880, 880, 880,
-- 880, 880, 880, 880, 880, 880, 880, 880, 880, 880,
-- 880, 880, 880, 880, 880, 880, 880, 880, 880, 880,
-- 880, 880, 880, 880, 880, 6, 69, 880, 44, 5,
-- 6, 18, 60, 9, 8, 50, 14, 13, 271, 880,
-- 880, 880, 880, 880, 880, 107, 152, 5, 29, 7,
-- 43, 112, 42, 5, 341, 106, 10, 158, 8, 5,
-- 6, 880, 61, 38, 98, 152, 194, 112, 30, 10,
-- 6, 880, 880, 880, 880, 60, 880, 880, 880, 880,
-- 880, 880, 880, 880, 880, 880, 880, 880, 880, 880,
-- 880, 880, 880, 880, 880, 880, 880, 880, 880, 880,
-- 880, 880, 880, 880, 880, 880, 880, 880
-+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
-+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
-+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
-+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
-+ 68, 68, 68, 68, 68, 3, 68, 68, 32, 2,
-+ 3, 27, 2, 13, 5, 10, 4, 18, 68, 68,
-+ 68, 68, 68, 68, 68, 33, 24, 2, 5, 2,
-+ 68, 4, 68, 2, 68, 68, 2, 68, 11, 11,
-+ 68, 68, 3, 5, 2, 68, 68, 68, 2, 68,
-+ 68, 68, 68, 68, 68, 16, 68, 68, 68, 68,
-+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
-+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
-+ 68, 68, 68, 68, 68, 68, 68, 68
- };
- register int hval = len;
-
- switch (hval)
- {
- default:
-- hval += asso_values[(unsigned char)str[10]];
-- /*FALLTHROUGH*/
-- case 10:
-- hval += asso_values[(unsigned char)str[9]];
-- /*FALLTHROUGH*/
-- case 9:
-- hval += asso_values[(unsigned char)str[8]];
-- /*FALLTHROUGH*/
-- case 8:
-- hval += asso_values[(unsigned char)str[7]];
-- /*FALLTHROUGH*/
-- case 7:
- hval += asso_values[(unsigned char)str[6]];
- /*FALLTHROUGH*/
- case 6:
-@@ -94,11 +82,7 @@
- hval += asso_values[(unsigned char)str[3]];
- /*FALLTHROUGH*/
- case 3:
-- hval += asso_values[(unsigned char)str[2]];
-- /*FALLTHROUGH*/
- case 2:
-- case 1:
-- hval += asso_values[(unsigned char)str[0]];
- break;
- }
- return hval + asso_values[(unsigned char)str[len - 1]];
-@@ -106,1479 +90,227 @@
-
- struct stringpool_t
- {
-- char stringpool_str15[sizeof("CN")];
-- char stringpool_str17[sizeof("L1")];
-- char stringpool_str18[sizeof("L2")];
-- char stringpool_str20[sizeof("L6")];
-- char stringpool_str21[sizeof("L5")];
-- char stringpool_str26[sizeof("L8")];
-- char stringpool_str29[sizeof("862")];
-- char stringpool_str30[sizeof("L3")];
-- char stringpool_str33[sizeof("866")];
-- char stringpool_str34[sizeof("C99")];
-- char stringpool_str38[sizeof("EUCCN")];
-- char stringpool_str41[sizeof("CP1251")];
-- char stringpool_str43[sizeof("CP1252")];
-- char stringpool_str44[sizeof("CP862")];
-- char stringpool_str45[sizeof("EUC-CN")];
-- char stringpool_str47[sizeof("CP1256")];
-- char stringpool_str48[sizeof("CP866")];
-- char stringpool_str49[sizeof("CP1255")];
-- char stringpool_str50[sizeof("HZ")];
-- char stringpool_str52[sizeof("CP1361")];
-- char stringpool_str53[sizeof("CP932")];
-- char stringpool_str55[sizeof("CP819")];
-- char stringpool_str57[sizeof("CP936")];
-- char stringpool_str58[sizeof("X0212")];
-- char stringpool_str59[sizeof("CP1258")];
-- char stringpool_str62[sizeof("L7")];
-- char stringpool_str67[sizeof("CP1253")];
-- char stringpool_str72[sizeof("L4")];
-- char stringpool_str75[sizeof("CP1133")];
-- char stringpool_str77[sizeof("R8")];
-- char stringpool_str84[sizeof("CHINESE")];
-- char stringpool_str85[sizeof("ISO8859-1")];
-- char stringpool_str87[sizeof("ISO8859-2")];
-- char stringpool_str91[sizeof("ISO8859-6")];
-- char stringpool_str92[sizeof("ISO-8859-1")];
-- char stringpool_str93[sizeof("ISO8859-5")];
-- char stringpool_str94[sizeof("ISO-8859-2")];
-- char stringpool_str95[sizeof("X0201")];
-- char stringpool_str97[sizeof("ISO8859-16")];
-- char stringpool_str98[sizeof("ISO-8859-6")];
-- char stringpool_str99[sizeof("ISO8859-15")];
-- char stringpool_str100[sizeof("ISO-8859-5")];
-- char stringpool_str101[sizeof("ISO8859-9")];
-- char stringpool_str103[sizeof("ISO8859-8")];
-- char stringpool_str104[sizeof("ISO-8859-16")];
-- char stringpool_str105[sizeof("850")];
-- char stringpool_str106[sizeof("ISO-8859-15")];
-- char stringpool_str108[sizeof("ISO-8859-9")];
-- char stringpool_str109[sizeof("CP949")];
-- char stringpool_str110[sizeof("ISO-8859-8")];
-- char stringpool_str111[sizeof("ISO8859-3")];
-- char stringpool_str112[sizeof("ISO-IR-6")];
-- char stringpool_str113[sizeof("X0208")];
-- char stringpool_str114[sizeof("CYRILLIC")];
-- char stringpool_str116[sizeof("ISO-2022-CN")];
-- char stringpool_str117[sizeof("ISO8859-13")];
-- char stringpool_str118[sizeof("ISO-8859-3")];
-- char stringpool_str119[sizeof("CP1250")];
-- char stringpool_str120[sizeof("CP950")];
-- char stringpool_str121[sizeof("CP850")];
-- char stringpool_str122[sizeof("ISO646-CN")];
-- char stringpool_str123[sizeof("SJIS")];
-- char stringpool_str124[sizeof("ISO-8859-13")];
-- char stringpool_str125[sizeof("ISO-IR-126")];
-- char stringpool_str126[sizeof("ISO-IR-226")];
-- char stringpool_str127[sizeof("ISO-IR-166")];
-- char stringpool_str129[sizeof("ISO-IR-165")];
-- char stringpool_str131[sizeof("CP1257")];
-- char stringpool_str132[sizeof("ASCII")];
-- char stringpool_str134[sizeof("ISO-IR-58")];
-- char stringpool_str136[sizeof("CP367")];
-- char stringpool_str137[sizeof("LATIN1")];
-- char stringpool_str138[sizeof("ISO-IR-159")];
-- char stringpool_str139[sizeof("LATIN2")];
-- char stringpool_str142[sizeof("ISO-IR-199")];
-- char stringpool_str143[sizeof("LATIN6")];
-- char stringpool_str145[sizeof("LATIN5")];
-- char stringpool_str146[sizeof("ISO_8859-1")];
-- char stringpool_str147[sizeof("CSISO2022CN")];
-- char stringpool_str148[sizeof("ISO_8859-2")];
-- char stringpool_str149[sizeof("ISO-IR-138")];
-- char stringpool_str151[sizeof("CP1254")];
-- char stringpool_str152[sizeof("ISO_8859-6")];
-- char stringpool_str154[sizeof("ISO_8859-5")];
-- char stringpool_str155[sizeof("LATIN8")];
-- char stringpool_str157[sizeof("ISO-IR-101")];
-- char stringpool_str158[sizeof("ISO_8859-16")];
-- char stringpool_str159[sizeof("GB2312")];
-- char stringpool_str160[sizeof("ISO_8859-15")];
-- char stringpool_str161[sizeof("ISO-CELTIC")];
-- char stringpool_str162[sizeof("ISO_8859-9")];
-- char stringpool_str163[sizeof("LATIN3")];
-- char stringpool_str164[sizeof("ISO_8859-8")];
-- char stringpool_str165[sizeof("UHC")];
-- char stringpool_str169[sizeof("ISO8859-10")];
-- char stringpool_str170[sizeof("ISO_8859-15:1998")];
-- char stringpool_str171[sizeof("MAC")];
-- char stringpool_str172[sizeof("ISO_8859-3")];
-- char stringpool_str173[sizeof("ISO-IR-109")];
-- char stringpool_str175[sizeof("ISO8859-7")];
-- char stringpool_str176[sizeof("ISO-8859-10")];
-- char stringpool_str177[sizeof("CSASCII")];
-- char stringpool_str178[sizeof("ISO_8859-13")];
-- char stringpool_str179[sizeof("ISO-IR-179")];
-- char stringpool_str182[sizeof("ISO-8859-7")];
-- char stringpool_str184[sizeof("ISO-IR-203")];
-- char stringpool_str189[sizeof("ISO-IR-149")];
-- char stringpool_str190[sizeof("MS-EE")];
-- char stringpool_str191[sizeof("ISO-IR-148")];
-- char stringpool_str192[sizeof("US")];
-- char stringpool_str194[sizeof("CP874")];
-- char stringpool_str195[sizeof("ISO8859-4")];
-- char stringpool_str196[sizeof("ISO-IR-110")];
-- char stringpool_str197[sizeof("ISO_8859-10:1992")];
-- char stringpool_str199[sizeof("ISO_8859-16:2000")];
-- char stringpool_str201[sizeof("ISO8859-14")];
-- char stringpool_str202[sizeof("ISO-8859-4")];
-- char stringpool_str203[sizeof("IBM862")];
-- char stringpool_str206[sizeof("ISO-IR-57")];
-- char stringpool_str207[sizeof("IBM866")];
-- char stringpool_str208[sizeof("ISO-8859-14")];
-- char stringpool_str209[sizeof("ISO-IR-127")];
-- char stringpool_str210[sizeof("ISO-2022-CN-EXT")];
-- char stringpool_str211[sizeof("ISO-IR-87")];
-- char stringpool_str212[sizeof("ISO-IR-157")];
-- char stringpool_str213[sizeof("UCS-2")];
-- char stringpool_str214[sizeof("IBM819")];
-- char stringpool_str221[sizeof("ISO_8859-14:1998")];
-- char stringpool_str222[sizeof("ISO-IR-14")];
-- char stringpool_str225[sizeof("ELOT_928")];
-- char stringpool_str227[sizeof("LATIN7")];
-- char stringpool_str228[sizeof("UTF-16")];
-- char stringpool_str230[sizeof("ISO_8859-10")];
-- char stringpool_str232[sizeof("CSUNICODE")];
-- char stringpool_str233[sizeof("UCS-2LE")];
-- char stringpool_str234[sizeof("UTF-8")];
-- char stringpool_str235[sizeof("ISO-IR-100")];
-- char stringpool_str236[sizeof("ISO_8859-7")];
-- char stringpool_str237[sizeof("UTF-32")];
-- char stringpool_str238[sizeof("CHAR")];
-- char stringpool_str241[sizeof("UNICODE-1-1")];
-- char stringpool_str242[sizeof("CSUNICODE11")];
-- char stringpool_str244[sizeof("TIS620")];
-- char stringpool_str245[sizeof("EUCKR")];
-- char stringpool_str246[sizeof("UTF-16LE")];
-- char stringpool_str247[sizeof("LATIN4")];
-- char stringpool_str250[sizeof("KSC_5601")];
-- char stringpool_str251[sizeof("TIS-620")];
-- char stringpool_str252[sizeof("EUC-KR")];
-- char stringpool_str254[sizeof("IBM-CP1133")];
-- char stringpool_str256[sizeof("ISO_8859-4")];
-- char stringpool_str257[sizeof("UTF-32LE")];
-- char stringpool_str258[sizeof("VISCII")];
-- char stringpool_str259[sizeof("KOI8-R")];
-- char stringpool_str262[sizeof("ISO_8859-14")];
-- char stringpool_str264[sizeof("CSKOI8R")];
-- char stringpool_str266[sizeof("GREEK8")];
-- char stringpool_str267[sizeof("MS-CYRL")];
-- char stringpool_str270[sizeof("CSVISCII")];
-- char stringpool_str280[sizeof("IBM850")];
-- char stringpool_str283[sizeof("ISO-IR-144")];
-- char stringpool_str286[sizeof("BIG5")];
-- char stringpool_str287[sizeof("UCS-4LE")];
-- char stringpool_str288[sizeof("GB18030")];
-- char stringpool_str290[sizeof("MACCYRILLIC")];
-- char stringpool_str291[sizeof("CSUNICODE11UTF7")];
-- char stringpool_str292[sizeof("UNICODE-1-1-UTF-7")];
-- char stringpool_str293[sizeof("BIG-5")];
-- char stringpool_str295[sizeof("IBM367")];
-- char stringpool_str296[sizeof("TIS620-0")];
-- char stringpool_str298[sizeof("CSBIG5")];
-- char stringpool_str299[sizeof("NEXTSTEP")];
-- char stringpool_str301[sizeof("CSKSC56011987")];
-- char stringpool_str302[sizeof("CSISOLATIN1")];
-- char stringpool_str303[sizeof("KOREAN")];
-- char stringpool_str304[sizeof("CSISOLATIN2")];
-- char stringpool_str305[sizeof("CN-BIG5")];
-- char stringpool_str306[sizeof("UTF-7")];
-- char stringpool_str308[sizeof("CSISOLATIN6")];
-- char stringpool_str309[sizeof("CSISOLATINCYRILLIC")];
-- char stringpool_str310[sizeof("CSISOLATIN5")];
-- char stringpool_str312[sizeof("TCVN")];
-- char stringpool_str315[sizeof("TIS620.2529-1")];
-- char stringpool_str318[sizeof("CSGB2312")];
-- char stringpool_str320[sizeof("ISO-10646-UCS-2")];
-- char stringpool_str321[sizeof("UCS-4")];
-- char stringpool_str322[sizeof("MULELAO-1")];
-- char stringpool_str323[sizeof("ISO-2022-KR")];
-- char stringpool_str324[sizeof("ECMA-118")];
-- char stringpool_str325[sizeof("GB_2312-80")];
-- char stringpool_str326[sizeof("CSUCS4")];
-- char stringpool_str327[sizeof("GBK")];
-- char stringpool_str328[sizeof("CSISOLATIN3")];
-- char stringpool_str329[sizeof("ISO646-US")];
-- char stringpool_str331[sizeof("US-ASCII")];
-- char stringpool_str332[sizeof("TIS620.2533-1")];
-- char stringpool_str333[sizeof("KOI8-T")];
-- char stringpool_str334[sizeof("MS-ANSI")];
-- char stringpool_str335[sizeof("KS_C_5601-1989")];
-- char stringpool_str336[sizeof("GB_1988-80")];
-- char stringpool_str339[sizeof("EUCTW")];
-- char stringpool_str343[sizeof("GREEK")];
-- char stringpool_str346[sizeof("EUC-TW")];
-- char stringpool_str347[sizeof("WINDOWS-1251")];
-- char stringpool_str348[sizeof("WINDOWS-1252")];
-- char stringpool_str349[sizeof("JP")];
-- char stringpool_str350[sizeof("WINDOWS-1256")];
-- char stringpool_str351[sizeof("WINDOWS-1255")];
-- char stringpool_str353[sizeof("VISCII1.1-1")];
-- char stringpool_str354[sizeof("CSISO2022KR")];
-- char stringpool_str356[sizeof("WINDOWS-1258")];
-- char stringpool_str360[sizeof("WINDOWS-1253")];
-- char stringpool_str361[sizeof("ARMSCII-8")];
-- char stringpool_str366[sizeof("CSIBM866")];
-- char stringpool_str368[sizeof("ROMAN8")];
-- char stringpool_str369[sizeof("HZ-GB-2312")];
-- char stringpool_str370[sizeof("EUCJP")];
-- char stringpool_str371[sizeof("TIS620.2533-0")];
-- char stringpool_str372[sizeof("KS_C_5601-1987")];
-- char stringpool_str373[sizeof("MACICELAND")];
-- char stringpool_str374[sizeof("ISO-10646-UCS-4")];
-- char stringpool_str375[sizeof("UCS-2BE")];
-- char stringpool_str377[sizeof("EUC-JP")];
-- char stringpool_str386[sizeof("WINDOWS-1250")];
-- char stringpool_str387[sizeof("ARABIC")];
-- char stringpool_str388[sizeof("UTF-16BE")];
-- char stringpool_str391[sizeof("TCVN-5712")];
-- char stringpool_str392[sizeof("WINDOWS-1257")];
-- char stringpool_str394[sizeof("CSPC862LATINHEBREW")];
-- char stringpool_str396[sizeof("TCVN5712-1")];
-- char stringpool_str399[sizeof("UTF-32BE")];
-- char stringpool_str402[sizeof("WINDOWS-1254")];
-- char stringpool_str404[sizeof("CSEUCKR")];
-- char stringpool_str406[sizeof("ASMO-708")];
-- char stringpool_str409[sizeof("CSISOLATINARABIC")];
-- char stringpool_str410[sizeof("MACINTOSH")];
-- char stringpool_str411[sizeof("UCS-2-INTERNAL")];
-- char stringpool_str412[sizeof("CSISOLATIN4")];
-- char stringpool_str416[sizeof("ECMA-114")];
-- char stringpool_str418[sizeof("CN-GB-ISOIR165")];
-- char stringpool_str420[sizeof("ANSI_X3.4-1986")];
-- char stringpool_str421[sizeof("CSISO57GB1988")];
-- char stringpool_str423[sizeof("CSISO58GB231280")];
-- char stringpool_str424[sizeof("HP-ROMAN8")];
-- char stringpool_str426[sizeof("ANSI_X3.4-1968")];
-- char stringpool_str427[sizeof("MACTHAI")];
-- char stringpool_str429[sizeof("UCS-4BE")];
-- char stringpool_str430[sizeof("CSHPROMAN8")];
-- char stringpool_str432[sizeof("CN-GB")];
-- char stringpool_str434[sizeof("UNICODELITTLE")];
-- char stringpool_str435[sizeof("ISO_8859-5:1988")];
-- char stringpool_str438[sizeof("ISO_8859-9:1989")];
-- char stringpool_str440[sizeof("ISO_8859-8:1988")];
-- char stringpool_str441[sizeof("KOI8-U")];
-- char stringpool_str444[sizeof("ISO_8859-3:1988")];
-- char stringpool_str448[sizeof("ISO-2022-JP")];
-- char stringpool_str449[sizeof("ISO-2022-JP-1")];
-- char stringpool_str450[sizeof("ISO-2022-JP-2")];
-- char stringpool_str451[sizeof("CSISOLATINHEBREW")];
-- char stringpool_str454[sizeof("ISO646-JP")];
-- char stringpool_str457[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")];
-- char stringpool_str465[sizeof("UCS-4-INTERNAL")];
-- char stringpool_str467[sizeof("ISO_8859-1:1987")];
-- char stringpool_str468[sizeof("ISO_8859-2:1987")];
-- char stringpool_str470[sizeof("ISO_8859-6:1987")];
-- char stringpool_str479[sizeof("CSISO2022JP")];
-- char stringpool_str480[sizeof("CSISO2022JP2")];
-- char stringpool_str486[sizeof("ISO_8859-4:1988")];
-- char stringpool_str489[sizeof("MACCENTRALEUROPE")];
-- char stringpool_str492[sizeof("HEBREW")];
-- char stringpool_str494[sizeof("MS-HEBR")];
-- char stringpool_str496[sizeof("ISO_646.IRV:1991")];
-- char stringpool_str498[sizeof("CSEUCTW")];
-- char stringpool_str503[sizeof("KOI8-RU")];
-- char stringpool_str505[sizeof("WINDOWS-874")];
-- char stringpool_str508[sizeof("JIS0208")];
-- char stringpool_str509[sizeof("GEORGIAN-PS")];
-- char stringpool_str512[sizeof("ISO_8859-7:1987")];
-- char stringpool_str514[sizeof("CSISOLATINGREEK")];
-- char stringpool_str515[sizeof("JIS_C6226-1983")];
-- char stringpool_str518[sizeof("MACROMAN")];
-- char stringpool_str519[sizeof("UCS-2-SWAPPED")];
-- char stringpool_str524[sizeof("CSMACINTOSH")];
-- char stringpool_str527[sizeof("BIGFIVE")];
-- char stringpool_str528[sizeof("CSISO159JISX02121990")];
-- char stringpool_str529[sizeof("CSISO14JISC6220RO")];
-- char stringpool_str530[sizeof("CSPC850MULTILINGUAL")];
-- char stringpool_str534[sizeof("BIG-FIVE")];
-- char stringpool_str541[sizeof("JIS_C6220-1969-RO")];
-- char stringpool_str545[sizeof("JIS_X0212")];
-- char stringpool_str549[sizeof("BIG5HKSCS")];
-- char stringpool_str553[sizeof("JISX0201-1976")];
-- char stringpool_str554[sizeof("GEORGIAN-ACADEMY")];
-- char stringpool_str556[sizeof("BIG5-HKSCS")];
-- char stringpool_str560[sizeof("CSISO87JISX0208")];
-- char stringpool_str570[sizeof("MACGREEK")];
-- char stringpool_str571[sizeof("MS-GREEK")];
-- char stringpool_str573[sizeof("UCS-4-SWAPPED")];
-- char stringpool_str578[sizeof("MACCROATIAN")];
-- char stringpool_str582[sizeof("JIS_X0201")];
-- char stringpool_str585[sizeof("WCHAR_T")];
-- char stringpool_str594[sizeof("UNICODEBIG")];
-- char stringpool_str599[sizeof("JIS_X0212-1990")];
-- char stringpool_str600[sizeof("JIS_X0208")];
-- char stringpool_str614[sizeof("MACARABIC")];
-- char stringpool_str619[sizeof("CSHALFWIDTHKATAKANA")];
-- char stringpool_str620[sizeof("JIS_X0208-1983")];
-- char stringpool_str621[sizeof("SHIFT-JIS")];
-- char stringpool_str626[sizeof("MACUKRAINE")];
-- char stringpool_str635[sizeof("CSEUCPKDFMTJAPANESE")];
-- char stringpool_str646[sizeof("JIS_X0208-1990")];
-- char stringpool_str663[sizeof("CSSHIFTJIS")];
-- char stringpool_str664[sizeof("JIS_X0212.1990-0")];
-- char stringpool_str665[sizeof("MACHEBREW")];
-- char stringpool_str675[sizeof("SHIFT_JIS")];
-- char stringpool_str685[sizeof("TCVN5712-1:1993")];
-- char stringpool_str694[sizeof("MS-TURK")];
-- char stringpool_str717[sizeof("MACTURKISH")];
-- char stringpool_str731[sizeof("MACROMANIA")];
-- char stringpool_str750[sizeof("MS-ARAB")];
-- char stringpool_str753[sizeof("JAVA")];
-- char stringpool_str798[sizeof("MS_KANJI")];
-- char stringpool_str799[sizeof("JOHAB")];
-- char stringpool_str879[sizeof("WINBALTRIM")];
-+ char stringpool_str4[sizeof("L1")];
-+ char stringpool_str7[sizeof("US")];
-+ char stringpool_str10[sizeof("CHAR")];
-+ char stringpool_str11[sizeof("ASCII")];
-+ char stringpool_str12[sizeof("UCS-4")];
-+ char stringpool_str14[sizeof("UCS-2")];
-+ char stringpool_str16[sizeof("UTF-8")];
-+ char stringpool_str17[sizeof("CSUCS4")];
-+ char stringpool_str18[sizeof("UCS-4LE")];
-+ char stringpool_str19[sizeof("UCS-2LE")];
-+ char stringpool_str20[sizeof("CSASCII")];
-+ char stringpool_str21[sizeof("UTF-16")];
-+ char stringpool_str22[sizeof("UTF-16LE")];
-+ char stringpool_str23[sizeof("LATIN1")];
-+ char stringpool_str24[sizeof("ISO-IR-6")];
-+ char stringpool_str26[sizeof("UCS-4-INTERNAL")];
-+ char stringpool_str27[sizeof("UCS-2-INTERNAL")];
-+ char stringpool_str28[sizeof("UTF-7")];
-+ char stringpool_str29[sizeof("ISO646-US")];
-+ char stringpool_str30[sizeof("CP367")];
-+ char stringpool_str31[sizeof("UCS-4-SWAPPED")];
-+ char stringpool_str32[sizeof("UCS-2-SWAPPED")];
-+ char stringpool_str33[sizeof("UNICODE-1-1")];
-+ char stringpool_str34[sizeof("UNICODEBIG")];
-+ char stringpool_str35[sizeof("UNICODELITTLE")];
-+ char stringpool_str36[sizeof("ISO-8859-1")];
-+ char stringpool_str37[sizeof("CSUNICODE")];
-+ char stringpool_str39[sizeof("CSUNICODE11")];
-+ char stringpool_str40[sizeof("UCS-4BE")];
-+ char stringpool_str41[sizeof("UCS-2BE")];
-+ char stringpool_str42[sizeof("UTF-32")];
-+ char stringpool_str43[sizeof("CP819")];
-+ char stringpool_str44[sizeof("UTF-16BE")];
-+ char stringpool_str45[sizeof("UTF-32LE")];
-+ char stringpool_str46[sizeof("ISO_646.IRV:1991")];
-+ char stringpool_str47[sizeof("UNICODE-1-1-UTF-7")];
-+ char stringpool_str48[sizeof("IBM819")];
-+ char stringpool_str49[sizeof("ISO_8859-1")];
-+ char stringpool_str50[sizeof("ISO8859-1")];
-+ char stringpool_str51[sizeof("CSUNICODE11UTF7")];
-+ char stringpool_str52[sizeof("US-ASCII")];
-+ char stringpool_str53[sizeof("ISO-IR-100")];
-+ char stringpool_str58[sizeof("IBM367")];
-+ char stringpool_str59[sizeof("ISO-10646-UCS-4")];
-+ char stringpool_str60[sizeof("ISO-10646-UCS-2")];
-+ char stringpool_str62[sizeof("ISO_8859-1:1987")];
-+ char stringpool_str63[sizeof("WCHAR_T")];
-+ char stringpool_str64[sizeof("CSISOLATIN1")];
-+ char stringpool_str65[sizeof("ANSI_X3.4-1968")];
-+ char stringpool_str66[sizeof("ANSI_X3.4-1986")];
-+ char stringpool_str67[sizeof("UTF-32BE")];
- };
- static const struct stringpool_t stringpool_contents =
- {
-- "CN",
- "L1",
-- "L2",
-- "L6",
-- "L5",
-- "L8",
-- "862",
-- "L3",
-- "866",
-- "C99",
-- "EUCCN",
-- "CP1251",
-- "CP1252",
-- "CP862",
-- "EUC-CN",
-- "CP1256",
-- "CP866",
-- "CP1255",
-- "HZ",
-- "CP1361",
-- "CP932",
-- "CP819",
-- "CP936",
-- "X0212",
-- "CP1258",
-- "L7",
-- "CP1253",
-- "L4",
-- "CP1133",
-- "R8",
-- "CHINESE",
-- "ISO8859-1",
-- "ISO8859-2",
-- "ISO8859-6",
-- "ISO-8859-1",
-- "ISO8859-5",
-- "ISO-8859-2",
-- "X0201",
-- "ISO8859-16",
-- "ISO-8859-6",
-- "ISO8859-15",
-- "ISO-8859-5",
-- "ISO8859-9",
-- "ISO8859-8",
-- "ISO-8859-16",
-- "850",
-- "ISO-8859-15",
-- "ISO-8859-9",
-- "CP949",
-- "ISO-8859-8",
-- "ISO8859-3",
-- "ISO-IR-6",
-- "X0208",
-- "CYRILLIC",
-- "ISO-2022-CN",
-- "ISO8859-13",
-- "ISO-8859-3",
-- "CP1250",
-- "CP950",
-- "CP850",
-- "ISO646-CN",
-- "SJIS",
-- "ISO-8859-13",
-- "ISO-IR-126",
-- "ISO-IR-226",
-- "ISO-IR-166",
-- "ISO-IR-165",
-- "CP1257",
-- "ASCII",
-- "ISO-IR-58",
-- "CP367",
-- "LATIN1",
-- "ISO-IR-159",
-- "LATIN2",
-- "ISO-IR-199",
-- "LATIN6",
-- "LATIN5",
-- "ISO_8859-1",
-- "CSISO2022CN",
-- "ISO_8859-2",
-- "ISO-IR-138",
-- "CP1254",
-- "ISO_8859-6",
-- "ISO_8859-5",
-- "LATIN8",
-- "ISO-IR-101",
-- "ISO_8859-16",
-- "GB2312",
-- "ISO_8859-15",
-- "ISO-CELTIC",
-- "ISO_8859-9",
-- "LATIN3",
-- "ISO_8859-8",
-- "UHC",
-- "ISO8859-10",
-- "ISO_8859-15:1998",
-- "MAC",
-- "ISO_8859-3",
-- "ISO-IR-109",
-- "ISO8859-7",
-- "ISO-8859-10",
-- "CSASCII",
-- "ISO_8859-13",
-- "ISO-IR-179",
-- "ISO-8859-7",
-- "ISO-IR-203",
-- "ISO-IR-149",
-- "MS-EE",
-- "ISO-IR-148",
- "US",
-- "CP874",
-- "ISO8859-4",
-- "ISO-IR-110",
-- "ISO_8859-10:1992",
-- "ISO_8859-16:2000",
-- "ISO8859-14",
-- "ISO-8859-4",
-- "IBM862",
-- "ISO-IR-57",
-- "IBM866",
-- "ISO-8859-14",
-- "ISO-IR-127",
-- "ISO-2022-CN-EXT",
-- "ISO-IR-87",
-- "ISO-IR-157",
-+ "CHAR",
-+ "ASCII",
-+ "UCS-4",
- "UCS-2",
-- "IBM819",
-- "ISO_8859-14:1998",
-- "ISO-IR-14",
-- "ELOT_928",
-- "LATIN7",
-- "UTF-16",
-- "ISO_8859-10",
-- "CSUNICODE",
-- "UCS-2LE",
- "UTF-8",
-- "ISO-IR-100",
-- "ISO_8859-7",
-- "UTF-32",
-- "CHAR",
-+ "CSUCS4",
-+ "UCS-4LE",
-+ "UCS-2LE",
-+ "CSASCII",
-+ "UTF-16",
-+ "UTF-16LE",
-+ "LATIN1",
-+ "ISO-IR-6",
-+ "UCS-4-INTERNAL",
-+ "UCS-2-INTERNAL",
-+ "UTF-7",
-+ "ISO646-US",
-+ "CP367",
-+ "UCS-4-SWAPPED",
-+ "UCS-2-SWAPPED",
- "UNICODE-1-1",
-+ "UNICODEBIG",
-+ "UNICODELITTLE",
-+ "ISO-8859-1",
-+ "CSUNICODE",
- "CSUNICODE11",
-- "TIS620",
-- "EUCKR",
-- "UTF-16LE",
-- "LATIN4",
-- "KSC_5601",
-- "TIS-620",
-- "EUC-KR",
-- "IBM-CP1133",
-- "ISO_8859-4",
-+ "UCS-4BE",
-+ "UCS-2BE",
-+ "UTF-32",
-+ "CP819",
-+ "UTF-16BE",
- "UTF-32LE",
-- "VISCII",
-- "KOI8-R",
-- "ISO_8859-14",
-- "CSKOI8R",
-- "GREEK8",
-- "MS-CYRL",
-- "CSVISCII",
-- "IBM850",
-- "ISO-IR-144",
-- "BIG5",
-- "UCS-4LE",
-- "GB18030",
-- "MACCYRILLIC",
-- "CSUNICODE11UTF7",
-+ "ISO_646.IRV:1991",
- "UNICODE-1-1-UTF-7",
-- "BIG-5",
-- "IBM367",
-- "TIS620-0",
-- "CSBIG5",
-- "NEXTSTEP",
-- "CSKSC56011987",
-- "CSISOLATIN1",
-- "KOREAN",
-- "CSISOLATIN2",
-- "CN-BIG5",
-- "UTF-7",
-- "CSISOLATIN6",
-- "CSISOLATINCYRILLIC",
-- "CSISOLATIN5",
-- "TCVN",
-- "TIS620.2529-1",
-- "CSGB2312",
-- "ISO-10646-UCS-2",
-- "UCS-4",
-- "MULELAO-1",
-- "ISO-2022-KR",
-- "ECMA-118",
-- "GB_2312-80",
-- "CSUCS4",
-- "GBK",
-- "CSISOLATIN3",
-- "ISO646-US",
-+ "IBM819",
-+ "ISO_8859-1",
-+ "ISO8859-1",
-+ "CSUNICODE11UTF7",
- "US-ASCII",
-- "TIS620.2533-1",
-- "KOI8-T",
-- "MS-ANSI",
-- "KS_C_5601-1989",
-- "GB_1988-80",
-- "EUCTW",
-- "GREEK",
-- "EUC-TW",
-- "WINDOWS-1251",
-- "WINDOWS-1252",
-- "JP",
-- "WINDOWS-1256",
-- "WINDOWS-1255",
-- "VISCII1.1-1",
-- "CSISO2022KR",
-- "WINDOWS-1258",
-- "WINDOWS-1253",
-- "ARMSCII-8",
-- "CSIBM866",
-- "ROMAN8",
-- "HZ-GB-2312",
-- "EUCJP",
-- "TIS620.2533-0",
-- "KS_C_5601-1987",
-- "MACICELAND",
-+ "ISO-IR-100",
-+ "IBM367",
- "ISO-10646-UCS-4",
-- "UCS-2BE",
-- "EUC-JP",
-- "WINDOWS-1250",
-- "ARABIC",
-- "UTF-16BE",
-- "TCVN-5712",
-- "WINDOWS-1257",
-- "CSPC862LATINHEBREW",
-- "TCVN5712-1",
-- "UTF-32BE",
-- "WINDOWS-1254",
-- "CSEUCKR",
-- "ASMO-708",
-- "CSISOLATINARABIC",
-- "MACINTOSH",
-- "UCS-2-INTERNAL",
-- "CSISOLATIN4",
-- "ECMA-114",
-- "CN-GB-ISOIR165",
-- "ANSI_X3.4-1986",
-- "CSISO57GB1988",
-- "CSISO58GB231280",
-- "HP-ROMAN8",
-- "ANSI_X3.4-1968",
-- "MACTHAI",
-- "UCS-4BE",
-- "CSHPROMAN8",
-- "CN-GB",
-- "UNICODELITTLE",
-- "ISO_8859-5:1988",
-- "ISO_8859-9:1989",
-- "ISO_8859-8:1988",
-- "KOI8-U",
-- "ISO_8859-3:1988",
-- "ISO-2022-JP",
-- "ISO-2022-JP-1",
-- "ISO-2022-JP-2",
-- "CSISOLATINHEBREW",
-- "ISO646-JP",
-- "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE",
-- "UCS-4-INTERNAL",
-+ "ISO-10646-UCS-2",
- "ISO_8859-1:1987",
-- "ISO_8859-2:1987",
-- "ISO_8859-6:1987",
-- "CSISO2022JP",
-- "CSISO2022JP2",
-- "ISO_8859-4:1988",
-- "MACCENTRALEUROPE",
-- "HEBREW",
-- "MS-HEBR",
-- "ISO_646.IRV:1991",
-- "CSEUCTW",
-- "KOI8-RU",
-- "WINDOWS-874",
-- "JIS0208",
-- "GEORGIAN-PS",
-- "ISO_8859-7:1987",
-- "CSISOLATINGREEK",
-- "JIS_C6226-1983",
-- "MACROMAN",
-- "UCS-2-SWAPPED",
-- "CSMACINTOSH",
-- "BIGFIVE",
-- "CSISO159JISX02121990",
-- "CSISO14JISC6220RO",
-- "CSPC850MULTILINGUAL",
-- "BIG-FIVE",
-- "JIS_C6220-1969-RO",
-- "JIS_X0212",
-- "BIG5HKSCS",
-- "JISX0201-1976",
-- "GEORGIAN-ACADEMY",
-- "BIG5-HKSCS",
-- "CSISO87JISX0208",
-- "MACGREEK",
-- "MS-GREEK",
-- "UCS-4-SWAPPED",
-- "MACCROATIAN",
-- "JIS_X0201",
- "WCHAR_T",
-- "UNICODEBIG",
-- "JIS_X0212-1990",
-- "JIS_X0208",
-- "MACARABIC",
-- "CSHALFWIDTHKATAKANA",
-- "JIS_X0208-1983",
-- "SHIFT-JIS",
-- "MACUKRAINE",
-- "CSEUCPKDFMTJAPANESE",
-- "JIS_X0208-1990",
-- "CSSHIFTJIS",
-- "JIS_X0212.1990-0",
-- "MACHEBREW",
-- "SHIFT_JIS",
-- "TCVN5712-1:1993",
-- "MS-TURK",
-- "MACTURKISH",
-- "MACROMANIA",
-- "MS-ARAB",
-- "JAVA",
-- "MS_KANJI",
-- "JOHAB",
-- "WINBALTRIM"
-+ "CSISOLATIN1",
-+ "ANSI_X3.4-1968",
-+ "ANSI_X3.4-1986",
-+ "UTF-32BE"
- };
- #define stringpool ((const char *) &stringpool_contents)
-
- static const struct alias aliases[] =
- {
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 271 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, ei_iso646_cn},
-- {-1},
--#line 60 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, ei_iso8859_1},
--#line 68 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str18, ei_iso8859_2},
-- {-1},
--#line 133 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, ei_iso8859_10},
--#line 125 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, ei_iso8859_9},
-- {-1}, {-1}, {-1}, {-1},
--#line 147 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str26, ei_iso8859_14},
-- {-1}, {-1},
--#line 196 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str29, ei_cp862},
--#line 76 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str30, ei_iso8859_3},
-- {-1}, {-1},
--#line 200 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str33, ei_cp866},
--#line 51 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str34, ei_c99},
-- {-1}, {-1}, {-1},
--#line 301 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str38, ei_euc_cn},
-- {-1}, {-1},
--#line 167 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str41, ei_cp1251},
-- {-1},
--#line 170 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str43, ei_cp1252},
--#line 194 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str44, ei_cp862},
--#line 300 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str45, ei_euc_cn},
-- {-1},
--#line 182 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str47, ei_cp1256},
--#line 198 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str48, ei_cp866},
--#line 179 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str49, ei_cp1255},
--#line 311 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str50, ei_hz},
-- {-1},
--#line 331 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str52, ei_johab},
--#line 294 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str53, ei_cp932},
-- {-1},
--#line 57 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str55, ei_iso8859_1},
-- {-1},
--#line 306 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str57, ei_ces_gbk},
--#line 265 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str58, ei_jisx0212},
--#line 188 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str59, ei_cp1258},
-- {-1}, {-1},
--#line 140 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str62, ei_iso8859_13},
-- {-1}, {-1}, {-1}, {-1},
--#line 173 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str67, ei_cp1253},
- {-1}, {-1}, {-1}, {-1},
--#line 84 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str72, ei_iso8859_4},
-+#line 58 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str4, ei_iso8859_1},
- {-1}, {-1},
--#line 227 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str75, ei_cp1133},
-- {-1},
--#line 219 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str77, ei_hp_roman8},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 276 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str84, ei_gb2312},
--#line 62 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str85, ei_iso8859_1},
-- {-1},
--#line 70 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str87, ei_iso8859_2},
-- {-1}, {-1}, {-1},
--#line 102 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str91, ei_iso8859_6},
--#line 53 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str92, ei_iso8859_1},
--#line 93 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str93, ei_iso8859_5},
--#line 63 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str94, ei_iso8859_2},
--#line 252 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str95, ei_jisx0201},
-- {-1},
--#line 159 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str97, ei_iso8859_16},
--#line 94 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str98, ei_iso8859_6},
--#line 154 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str99, ei_iso8859_15},
--#line 87 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str100, ei_iso8859_5},
--#line 127 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str101, ei_iso8859_9},
-- {-1},
--#line 119 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str103, ei_iso8859_8},
--#line 155 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str104, ei_iso8859_16},
--#line 192 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str105, ei_cp850},
--#line 150 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str106, ei_iso8859_15},
-- {-1},
--#line 120 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str108, ei_iso8859_9},
--#line 328 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str109, ei_cp949},
--#line 113 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str110, ei_iso8859_8},
--#line 78 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str111, ei_iso8859_3},
--#line 16 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str112, ei_ascii},
--#line 258 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str113, ei_jisx0208},
--#line 91 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str114, ei_iso8859_5},
-- {-1},
--#line 308 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str116, ei_iso2022_cn},
--#line 141 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str117, ei_iso8859_13},
--#line 71 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str118, ei_iso8859_3},
--#line 164 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str119, ei_cp1250},
--#line 322 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str120, ei_cp950},
--#line 190 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str121, ei_cp850},
--#line 269 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str122, ei_iso646_cn},
--#line 291 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str123, ei_sjis},
--#line 136 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str124, ei_iso8859_13},
--#line 106 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str125, ei_iso8859_7},
--#line 158 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str126, ei_iso8859_16},
--#line 235 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str127, ei_tis620},
-- {-1},
--#line 277 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str129, ei_isoir165},
-- {-1},
--#line 185 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str131, ei_cp1257},
--#line 13 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str132, ei_ascii},
-- {-1},
--#line 274 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str134, ei_gb2312},
-- {-1},
--#line 19 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str136, ei_ascii},
--#line 59 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str137, ei_iso8859_1},
--#line 266 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str138, ei_jisx0212},
--#line 67 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str139, ei_iso8859_2},
-- {-1}, {-1},
--#line 145 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str142, ei_iso8859_14},
--#line 132 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str143, ei_iso8859_10},
-- {-1},
--#line 124 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str145, ei_iso8859_9},
--#line 54 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str146, ei_iso8859_1},
--#line 309 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str147, ei_iso2022_cn},
--#line 64 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str148, ei_iso8859_2},
--#line 116 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str149, ei_iso8859_8},
-- {-1},
--#line 176 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str151, ei_cp1254},
--#line 95 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str152, ei_iso8859_6},
-- {-1},
--#line 88 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str154, ei_iso8859_5},
--#line 146 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str155, ei_iso8859_14},
-- {-1},
--#line 66 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str157, ei_iso8859_2},
--#line 156 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str158, ei_iso8859_16},
--#line 302 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str159, ei_euc_cn},
--#line 151 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str160, ei_iso8859_15},
--#line 148 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str161, ei_iso8859_14},
--#line 121 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str162, ei_iso8859_9},
--#line 75 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str163, ei_iso8859_3},
--#line 114 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str164, ei_iso8859_8},
--#line 329 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str165, ei_cp949},
-- {-1}, {-1}, {-1},
--#line 135 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str169, ei_iso8859_10},
--#line 152 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str170, ei_iso8859_15},
--#line 204 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str171, ei_mac_roman},
--#line 72 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str172, ei_iso8859_3},
--#line 74 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str173, ei_iso8859_3},
-- {-1},
--#line 112 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str175, ei_iso8859_7},
--#line 128 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str176, ei_iso8859_10},
--#line 22 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str177, ei_ascii},
--#line 137 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str178, ei_iso8859_13},
--#line 138 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str179, ei_iso8859_13},
-- {-1}, {-1},
--#line 103 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str182, ei_iso8859_7},
-- {-1},
--#line 153 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str184, ei_iso8859_15},
-- {-1}, {-1}, {-1}, {-1},
--#line 282 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str189, ei_ksc5601},
--#line 166 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str190, ei_cp1250},
--#line 123 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str191, ei_iso8859_9},
--#line 21 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str192, ei_ascii},
-- {-1},
--#line 236 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str194, ei_cp874},
--#line 86 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str195, ei_iso8859_4},
--#line 82 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str196, ei_iso8859_4},
--#line 130 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str197, ei_iso8859_10},
-- {-1},
--#line 157 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str199, ei_iso8859_16},
-- {-1},
--#line 149 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str201, ei_iso8859_14},
--#line 79 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str202, ei_iso8859_4},
--#line 195 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str203, ei_cp862},
-- {-1}, {-1},
--#line 270 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str206, ei_iso646_cn},
--#line 199 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str207, ei_cp866},
--#line 142 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str208, ei_iso8859_14},
--#line 97 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str209, ei_iso8859_6},
--#line 310 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str210, ei_iso2022_cn_ext},
--#line 259 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str211, ei_jisx0208},
--#line 131 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str212, ei_iso8859_10},
--#line 24 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str213, ei_ucs2},
--#line 58 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str214, ei_iso8859_1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 144 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str221, ei_iso8859_14},
--#line 247 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str222, ei_iso646_jp},
-- {-1}, {-1},
--#line 108 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str225, ei_iso8859_7},
-- {-1},
--#line 139 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str227, ei_iso8859_13},
--#line 38 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str228, ei_utf16},
-- {-1},
--#line 129 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str230, ei_iso8859_10},
-- {-1},
--#line 26 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str232, ei_ucs2},
--#line 31 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str233, ei_ucs2le},
--#line 23 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str234, ei_utf8},
--#line 56 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str235, ei_iso8859_1},
--#line 104 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str236, ei_iso8859_7},
--#line 41 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str237, ei_utf32},
--#line 334 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str238, ei_local_char},
-- {-1}, {-1},
--#line 29 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str241, ei_ucs2be},
--#line 30 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str242, ei_ucs2be},
-- {-1},
--#line 230 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str244, ei_tis620},
--#line 326 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str245, ei_euc_kr},
--#line 40 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str246, ei_utf16le},
--#line 83 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str247, ei_iso8859_4},
-- {-1}, {-1},
--#line 279 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str250, ei_ksc5601},
--#line 229 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str251, ei_tis620},
--#line 325 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str252, ei_euc_kr},
-- {-1},
--#line 228 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str254, ei_cp1133},
-- {-1},
--#line 80 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str256, ei_iso8859_4},
--#line 43 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str257, ei_utf32le},
--#line 238 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str258, ei_viscii},
--#line 160 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str259, ei_koi8_r},
-- {-1}, {-1},
--#line 143 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str262, ei_iso8859_14},
-- {-1},
--#line 161 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str264, ei_koi8_r},
-- {-1},
--#line 109 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str266, ei_iso8859_7},
--#line 169 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str267, ei_cp1251},
-- {-1}, {-1},
--#line 240 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str270, ei_viscii},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 191 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str280, ei_cp850},
-- {-1}, {-1},
--#line 90 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str283, ei_iso8859_5},
-- {-1}, {-1},
--#line 316 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str286, ei_ces_big5},
--#line 37 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str287, ei_ucs4le},
--#line 307 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str288, ei_gb18030},
-- {-1},
--#line 210 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str290, ei_mac_cyrillic},
--#line 46 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str291, ei_utf7},
--#line 45 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str292, ei_utf7},
--#line 317 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str293, ei_ces_big5},
-- {-1},
--#line 20 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str295, ei_ascii},
--#line 231 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str296, ei_tis620},
-- {-1},
--#line 321 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str298, ei_ces_big5},
--#line 221 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str299, ei_nextstep},
-- {-1},
--#line 283 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str301, ei_ksc5601},
--#line 61 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str302, ei_iso8859_1},
--#line 284 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str303, ei_ksc5601},
--#line 69 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str304, ei_iso8859_2},
--#line 320 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str305, ei_ces_big5},
--#line 44 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str306, ei_utf7},
-- {-1},
--#line 134 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str308, ei_iso8859_10},
--#line 92 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str309, ei_iso8859_5},
--#line 126 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str310, ei_iso8859_9},
-- {-1},
--#line 241 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str312, ei_tcvn},
-- {-1}, {-1},
--#line 232 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str315, ei_tis620},
-- {-1}, {-1},
--#line 304 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str318, ei_euc_cn},
-- {-1},
--#line 25 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str320, ei_ucs2},
--#line 33 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str321, ei_ucs4},
--#line 226 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str322, ei_mulelao},
--#line 332 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str323, ei_iso2022_kr},
--#line 107 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str324, ei_iso8859_7},
--#line 273 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str325, ei_gb2312},
--#line 35 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str326, ei_ucs4},
--#line 305 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str327, ei_ces_gbk},
--#line 77 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str328, ei_iso8859_3},
--#line 14 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str329, ei_ascii},
-- {-1},
--#line 12 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str331, ei_ascii},
--#line 234 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str332, ei_tis620},
--#line 225 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str333, ei_koi8_t},
--#line 172 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str334, ei_cp1252},
--#line 281 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str335, ei_ksc5601},
--#line 268 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str336, ei_iso646_cn},
-- {-1}, {-1},
--#line 314 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str339, ei_euc_tw},
-- {-1}, {-1}, {-1},
--#line 110 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str343, ei_iso8859_7},
-- {-1}, {-1},
--#line 313 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str346, ei_euc_tw},
--#line 168 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str347, ei_cp1251},
--#line 171 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str348, ei_cp1252},
--#line 248 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str349, ei_iso646_jp},
--#line 183 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str350, ei_cp1256},
--#line 180 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str351, ei_cp1255},
-- {-1},
--#line 239 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str353, ei_viscii},
--#line 333 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str354, ei_iso2022_kr},
-- {-1},
--#line 189 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str356, ei_cp1258},
-- {-1}, {-1}, {-1},
--#line 174 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str360, ei_cp1253},
--#line 222 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str361, ei_armscii_8},
-- {-1}, {-1}, {-1}, {-1},
--#line 201 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str366, ei_cp866},
-- {-1},
--#line 218 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str368, ei_hp_roman8},
--#line 312 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str369, ei_hz},
--#line 286 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str370, ei_euc_jp},
--#line 233 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str371, ei_tis620},
--#line 280 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str372, ei_ksc5601},
--#line 207 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str373, ei_mac_iceland},
--#line 34 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str374, ei_ucs4},
--#line 27 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str375, ei_ucs2be},
-- {-1},
--#line 285 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str377, ei_euc_jp},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 165 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str386, ei_cp1250},
--#line 100 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str387, ei_iso8859_6},
--#line 39 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str388, ei_utf16be},
-- {-1}, {-1},
--#line 242 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str391, ei_tcvn},
--#line 186 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str392, ei_cp1257},
-- {-1},
--#line 197 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str394, ei_cp862},
-- {-1},
--#line 243 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str396, ei_tcvn},
-- {-1}, {-1},
--#line 42 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str399, ei_utf32be},
-- {-1}, {-1},
--#line 177 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str402, ei_cp1254},
-- {-1},
--#line 327 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str404, ei_euc_kr},
-- {-1},
--#line 99 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str406, ei_iso8859_6},
-- {-1}, {-1},
--#line 101 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str409, ei_iso8859_6},
--#line 203 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str410, ei_mac_roman},
--#line 47 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str411, ei_ucs2internal},
--#line 85 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str412, ei_iso8859_4},
-- {-1}, {-1}, {-1},
--#line 98 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str416, ei_iso8859_6},
-- {-1},
--#line 278 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str418, ei_isoir165},
-- {-1},
--#line 18 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str420, ei_ascii},
--#line 272 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str421, ei_iso646_cn},
-- {-1},
--#line 275 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str423, ei_gb2312},
--#line 217 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str424, ei_hp_roman8},
-- {-1},
--#line 17 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str426, ei_ascii},
--#line 216 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str427, ei_mac_thai},
-- {-1},
--#line 36 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str429, ei_ucs4be},
--#line 220 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str430, ei_hp_roman8},
-- {-1},
--#line 303 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str432, ei_euc_cn},
-- {-1},
--#line 32 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str434, ei_ucs2le},
--#line 89 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str435, ei_iso8859_5},
-- {-1}, {-1},
--#line 122 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str438, ei_iso8859_9},
-- {-1},
--#line 115 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str440, ei_iso8859_8},
--#line 162 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str441, ei_koi8_u},
-- {-1}, {-1},
--#line 73 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str444, ei_iso8859_3},
-- {-1}, {-1}, {-1},
--#line 295 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str448, ei_iso2022_jp},
--#line 297 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str449, ei_iso2022_jp1},
--#line 298 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str450, ei_iso2022_jp2},
--#line 118 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str451, ei_iso8859_8},
-- {-1}, {-1},
--#line 246 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str454, ei_iso646_jp},
-- {-1}, {-1},
--#line 287 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str457, ei_euc_jp},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 49 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str465, ei_ucs4internal},
-- {-1},
--#line 55 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str467, ei_iso8859_1},
--#line 65 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str468, ei_iso8859_2},
-- {-1},
--#line 96 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str470, ei_iso8859_6},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 296 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str479, ei_iso2022_jp},
--#line 299 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str480, ei_iso2022_jp2},
-- {-1}, {-1}, {-1}, {-1}, {-1},
--#line 81 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str486, ei_iso8859_4},
-- {-1}, {-1},
--#line 206 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str489, ei_mac_centraleurope},
-- {-1}, {-1},
--#line 117 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str492, ei_iso8859_8},
-- {-1},
--#line 181 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str494, ei_cp1255},
-- {-1},
--#line 15 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str496, ei_ascii},
-- {-1},
--#line 315 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str498, ei_euc_tw},
-- {-1}, {-1}, {-1}, {-1},
--#line 163 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str503, ei_koi8_ru},
-- {-1},
--#line 237 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str505, ei_cp874},
-- {-1}, {-1},
--#line 257 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str508, ei_jisx0208},
--#line 224 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str509, ei_georgian_ps},
-- {-1}, {-1},
--#line 105 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str512, ei_iso8859_7},
-- {-1},
--#line 111 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str514, ei_iso8859_7},
--#line 260 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str515, ei_jisx0208},
-- {-1}, {-1},
--#line 202 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str518, ei_mac_roman},
--#line 48 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str519, ei_ucs2swapped},
-- {-1}, {-1}, {-1}, {-1},
--#line 205 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str524, ei_mac_roman},
-- {-1}, {-1},
--#line 319 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str527, ei_ces_big5},
--#line 267 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str528, ei_jisx0212},
--#line 249 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str529, ei_iso646_jp},
--#line 193 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str530, ei_cp850},
-- {-1}, {-1}, {-1},
--#line 318 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str534, ei_ces_big5},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 245 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str541, ei_iso646_jp},
-- {-1}, {-1}, {-1},
--#line 262 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str545, ei_jisx0212},
-- {-1}, {-1}, {-1},
--#line 324 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str549, ei_big5hkscs},
-- {-1}, {-1}, {-1},
--#line 251 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str553, ei_jisx0201},
--#line 223 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str554, ei_georgian_academy},
-- {-1},
--#line 323 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str556, ei_big5hkscs},
-- {-1}, {-1}, {-1},
--#line 261 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str560, ei_jisx0208},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 212 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str570, ei_mac_greek},
--#line 175 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str571, ei_cp1253},
-- {-1},
--#line 50 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str573, ei_ucs4swapped},
-- {-1}, {-1}, {-1}, {-1},
--#line 208 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str578, ei_mac_croatian},
-- {-1}, {-1}, {-1},
--#line 250 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str582, ei_jisx0201},
-- {-1}, {-1},
--#line 335 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str585, ei_local_wchar_t},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 28 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str594, ei_ucs2be},
-- {-1}, {-1}, {-1}, {-1},
--#line 264 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str599, ei_jisx0212},
--#line 254 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str600, ei_jisx0208},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1},
--#line 215 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str614, ei_mac_arabic},
-- {-1}, {-1}, {-1}, {-1},
--#line 253 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str619, ei_jisx0201},
--#line 255 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str620, ei_jisx0208},
--#line 290 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str621, ei_sjis},
-- {-1}, {-1}, {-1}, {-1},
--#line 211 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str626, ei_mac_ukraine},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 288 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str635, ei_euc_jp},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1},
--#line 256 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str646, ei_jisx0208},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 293 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str663, ei_sjis},
--#line 263 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str664, ei_jisx0212},
--#line 214 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str665, ei_mac_hebrew},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 289 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str675, ei_sjis},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 244 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str685, ei_tcvn},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 178 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str694, ei_cp1254},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1},
--#line 213 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str717, ei_mac_turkish},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1},
--#line 209 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str731, ei_mac_romania},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 184 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str750, ei_cp1256},
-+#line 21 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, ei_ascii},
- {-1}, {-1},
--#line 52 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str753, ei_java},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 292 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str798, ei_sjis},
--#line 330 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str799, ei_johab},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
--#line 187 "lib/aliases.gperf"
-- {(int)(long)&((struct stringpool_t *)0)->stringpool_str879, ei_cp1257}
-+#line 61 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, ei_local_char},
-+#line 13 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, ei_ascii},
-+#line 33 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, ei_ucs4},
-+ {-1},
-+#line 24 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, ei_ucs2},
-+ {-1},
-+#line 23 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, ei_utf8},
-+#line 35 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, ei_ucs4},
-+#line 37 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str18, ei_ucs4le},
-+#line 31 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, ei_ucs2le},
-+#line 22 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, ei_ascii},
-+#line 38 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, ei_utf16},
-+#line 40 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, ei_utf16le},
-+#line 57 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, ei_iso8859_1},
-+#line 16 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str24, ei_ascii},
-+ {-1},
-+#line 49 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str26, ei_ucs4internal},
-+#line 47 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str27, ei_ucs2internal},
-+#line 44 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str28, ei_utf7},
-+#line 14 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str29, ei_ascii},
-+#line 19 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str30, ei_ascii},
-+#line 50 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str31, ei_ucs4swapped},
-+#line 48 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str32, ei_ucs2swapped},
-+#line 29 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str33, ei_ucs2be},
-+#line 28 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str34, ei_ucs2be},
-+#line 32 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str35, ei_ucs2le},
-+#line 51 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str36, ei_iso8859_1},
-+#line 26 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str37, ei_ucs2},
-+ {-1},
-+#line 30 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str39, ei_ucs2be},
-+#line 36 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str40, ei_ucs4be},
-+#line 27 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str41, ei_ucs2be},
-+#line 41 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str42, ei_utf32},
-+#line 55 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str43, ei_iso8859_1},
-+#line 39 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str44, ei_utf16be},
-+#line 43 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str45, ei_utf32le},
-+#line 15 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str46, ei_ascii},
-+#line 45 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str47, ei_utf7},
-+#line 56 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str48, ei_iso8859_1},
-+#line 52 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str49, ei_iso8859_1},
-+#line 60 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str50, ei_iso8859_1},
-+#line 46 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str51, ei_utf7},
-+#line 12 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str52, ei_ascii},
-+#line 54 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str53, ei_iso8859_1},
-+ {-1}, {-1}, {-1}, {-1},
-+#line 20 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str58, ei_ascii},
-+#line 34 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str59, ei_ucs4},
-+#line 25 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str60, ei_ucs2},
-+ {-1},
-+#line 53 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str62, ei_iso8859_1},
-+#line 62 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str63, ei_local_wchar_t},
-+#line 59 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str64, ei_iso8859_1},
-+#line 17 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str65, ei_ascii},
-+#line 18 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str66, ei_ascii},
-+#line 42 "aliases.gperf"
-+ {(int)(long)&((struct stringpool_t *)0)->stringpool_str67, ei_utf32be}
- };
-
- #ifdef __GNUC__
-diff -Nur libiconv-1.9.1-orig/lib/converters.h libiconv-1.9.1-nocompile/lib/converters.h
---- libiconv-1.9.1-orig/lib/converters.h 2002-05-29 16:06:52.000000000 +0200
-+++ libiconv-1.9.1-nocompile/lib/converters.h 2006-03-05 15:50:36.000000000 +0100
-@@ -125,154 +125,7 @@
- #include "ucs2swapped.h"
- #include "ucs4internal.h"
- #include "ucs4swapped.h"
--#include "c99.h"
--#include "java.h"
-
- /* 8-bit encodings */
- #include "iso8859_1.h"
--#include "iso8859_2.h"
--#include "iso8859_3.h"
--#include "iso8859_4.h"
--#include "iso8859_5.h"
--#include "iso8859_6.h"
--#include "iso8859_7.h"
--#include "iso8859_8.h"
--#include "iso8859_9.h"
--#include "iso8859_10.h"
--#include "iso8859_13.h"
--#include "iso8859_14.h"
--#include "iso8859_15.h"
--#include "iso8859_16.h"
--#include "koi8_r.h"
--#include "koi8_u.h"
--#include "koi8_ru.h"
--#include "cp1250.h"
--#include "cp1251.h"
--#include "cp1252.h"
--#include "cp1253.h"
--#include "cp1254.h"
--#include "cp1255.h"
--#include "cp1256.h"
--#include "cp1257.h"
--#include "cp1258.h"
--#include "cp850.h"
--#include "cp862.h"
--#include "cp866.h"
--#include "mac_roman.h"
--#include "mac_centraleurope.h"
--#include "mac_iceland.h"
--#include "mac_croatian.h"
--#include "mac_romania.h"
--#include "mac_cyrillic.h"
--#include "mac_ukraine.h"
--#include "mac_greek.h"
--#include "mac_turkish.h"
--#include "mac_hebrew.h"
--#include "mac_arabic.h"
--#include "mac_thai.h"
--#include "hp_roman8.h"
--#include "nextstep.h"
--#include "armscii_8.h"
--#include "georgian_academy.h"
--#include "georgian_ps.h"
--#include "koi8_t.h"
--#include "mulelao.h"
--#include "cp1133.h"
--#include "tis620.h"
--#include "cp874.h"
--#include "viscii.h"
--#include "tcvn.h"
--
--/* CJK character sets [CCS = coded character set] [CJKV.INF chapter 3] */
--
--typedef struct {
-- unsigned short indx; /* index into big table */
-- unsigned short used; /* bitmask of used entries */
--} Summary16;
--
--#include "iso646_jp.h"
--#include "jisx0201.h"
--#include "jisx0208.h"
--#include "jisx0212.h"
--
--#include "iso646_cn.h"
--#include "gb2312.h"
--#include "isoir165.h"
--/*#include "gb12345.h"*/
--#include "gbk.h"
--#include "cns11643.h"
--#include "big5.h"
--
--#include "ksc5601.h"
--#include "johab_hangul.h"
--
--/* CJK encodings [CES = character encoding scheme] [CJKV.INF chapter 4] */
--
--#include "euc_jp.h"
--#include "sjis.h"
--#include "cp932.h"
--#include "iso2022_jp.h"
--#include "iso2022_jp1.h"
--#include "iso2022_jp2.h"
--
--#include "euc_cn.h"
--#include "ces_gbk.h"
--#include "gb18030.h"
--#include "iso2022_cn.h"
--#include "iso2022_cnext.h"
--#include "hz.h"
--#include "euc_tw.h"
--#include "ces_big5.h"
--#include "cp950.h"
--#include "big5hkscs.h"
--
--#include "euc_kr.h"
--#include "cp949.h"
--#include "johab.h"
--#include "iso2022_kr.h"
--
--/* Encodings used by system dependent locales. */
--
--#ifdef USE_AIX
--#include "cp856.h"
--#include "cp922.h"
--#include "cp943.h"
--#include "cp1046.h"
--#include "cp1124.h"
--#include "cp1129.h"
--#include "cp1161.h"
--#include "cp1162.h"
--#include "cp1163.h"
--#endif
--
--#ifdef USE_OSF1
--#include "dec_kanji.h"
--#include "dec_hanyu.h"
--#endif
--
--#ifdef USE_DOS
--#include "cp437.h"
--#include "cp737.h"
--#include "cp775.h"
--#include "cp852.h"
--#include "cp853.h"
--#include "cp855.h"
--#include "cp857.h"
--#include "cp858.h"
--#include "cp860.h"
--#include "cp861.h"
--#include "cp863.h"
--#include "cp864.h"
--#include "cp865.h"
--#include "cp869.h"
--#include "cp1125.h"
--#endif
--
--#ifdef USE_EXTRA
--#include "euc_jisx0213.h"
--#include "shift_jisx0213.h"
--#include "iso2022_jp3.h"
--#include "tds565.h"
--#include "riscos1.h"
--#endif
-
-diff -Nur libiconv-1.9.1-orig/lib/encodings.def libiconv-1.9.1-nocompile/lib/encodings.def
---- libiconv-1.9.1-orig/lib/encodings.def 2003-04-24 12:48:06.000000000 +0200
-+++ libiconv-1.9.1-nocompile/lib/encodings.def 2006-03-05 15:52:21.000000000 +0100
-@@ -155,16 +155,6 @@
- ucs4swapped,
- { ucs4swapped_mbtowc, NULL }, { ucs4swapped_wctomb, NULL })
-
--DEFENCODING(( "C99",
-- ),
-- c99,
-- { c99_mbtowc, NULL }, { c99_wctomb, NULL })
--
--DEFENCODING(( "JAVA",
-- ),
-- java,
-- { java_mbtowc, NULL }, { java_wctomb, NULL })
--
- /* Standard 8-bit encodings */
-
- DEFENCODING(( "ISO-8859-1", /* IANA */
-@@ -182,635 +172,3 @@
- iso8859_1,
- { iso8859_1_mbtowc, NULL }, { iso8859_1_wctomb, NULL })
-
--DEFENCODING(( "ISO-8859-2", /* IANA */
-- "ISO_8859-2", /* IANA */
-- "ISO_8859-2:1987", /* IANA */
-- "ISO-IR-101", /* IANA */
-- "LATIN2", /* IANA */
-- "L2", /* IANA */
-- "csISOLatin2", /* IANA */
-- "ISO8859-2", /* X11R6.4, glibc, FreeBSD */
-- /*"ISO8859_2", JDK 1.1 */
-- ),
-- iso8859_2,
-- { iso8859_2_mbtowc, NULL }, { iso8859_2_wctomb, NULL })
--
--DEFENCODING(( "ISO-8859-3", /* IANA */
-- "ISO_8859-3", /* IANA */
-- "ISO_8859-3:1988", /* IANA */
-- "ISO-IR-109", /* IANA */
-- "LATIN3", /* IANA */
-- "L3", /* IANA */
-- "csISOLatin3", /* IANA */
-- "ISO8859-3", /* X11R6.4, glibc, FreeBSD */
-- /*"ISO8859_3", JDK 1.1 */
-- ),
-- iso8859_3,
-- { iso8859_3_mbtowc, NULL }, { iso8859_3_wctomb, NULL })
--
--DEFENCODING(( "ISO-8859-4", /* IANA */
-- "ISO_8859-4", /* IANA */
-- "ISO_8859-4:1988", /* IANA */
-- "ISO-IR-110", /* IANA */
-- "LATIN4", /* IANA */
-- "L4", /* IANA */
-- "csISOLatin4", /* IANA */
-- "ISO8859-4", /* X11R6.4, glibc, FreeBSD */
-- /*"ISO8859_4", JDK 1.1 */
-- ),
-- iso8859_4,
-- { iso8859_4_mbtowc, NULL }, { iso8859_4_wctomb, NULL })
--
--DEFENCODING(( "ISO-8859-5", /* IANA */
-- "ISO_8859-5", /* IANA */
-- "ISO_8859-5:1988", /* IANA */
-- "ISO-IR-144", /* IANA */
-- "CYRILLIC", /* IANA */
-- "csISOLatinCyrillic", /* IANA */
-- "ISO8859-5", /* X11R6.4, glibc, FreeBSD */
-- /*"ISO8859_5", JDK 1.1 */
-- ),
-- iso8859_5,
-- { iso8859_5_mbtowc, NULL }, { iso8859_5_wctomb, NULL })
--
--DEFENCODING(( "ISO-8859-6", /* IANA */
-- "ISO_8859-6", /* IANA */
-- "ISO_8859-6:1987", /* IANA */
-- "ISO-IR-127", /* IANA */
-- "ECMA-114", /* IANA */
-- "ASMO-708", /* IANA */
-- "ARABIC", /* IANA */
-- "csISOLatinArabic", /* IANA */
-- "ISO8859-6", /* X11R6.4, glibc, FreeBSD */
-- /*"ISO8859_6", JDK 1.1 */
-- ),
-- iso8859_6,
-- { iso8859_6_mbtowc, NULL }, { iso8859_6_wctomb, NULL })
--
--DEFENCODING(( "ISO-8859-7", /* IANA, RFC 1947 */
-- "ISO_8859-7", /* IANA */
-- "ISO_8859-7:1987", /* IANA */
-- "ISO-IR-126", /* IANA */
-- "ECMA-118", /* IANA */
-- "ELOT_928", /* IANA */
-- "GREEK8", /* IANA */
-- "GREEK", /* IANA */
-- "csISOLatinGreek", /* IANA */
-- "ISO8859-7", /* X11R6.4, glibc, FreeBSD */
-- /*"ISO8859_7", JDK 1.1 */
-- ),
-- iso8859_7,
-- { iso8859_7_mbtowc, NULL }, { iso8859_7_wctomb, NULL })
--
--DEFENCODING(( "ISO-8859-8", /* IANA */
-- "ISO_8859-8", /* IANA */
-- "ISO_8859-8:1988", /* IANA */
-- "ISO-IR-138", /* IANA */
-- "HEBREW", /* IANA */
-- "csISOLatinHebrew", /* IANA */
-- "ISO8859-8", /* X11R6.4, glibc, FreeBSD */
-- /*"ISO8859_8", JDK 1.1 */
-- ),
-- iso8859_8,
-- { iso8859_8_mbtowc, NULL }, { iso8859_8_wctomb, NULL })
--
--DEFENCODING(( "ISO-8859-9", /* IANA */
-- "ISO_8859-9", /* IANA */
-- "ISO_8859-9:1989", /* IANA */
-- "ISO-IR-148", /* IANA */
-- "LATIN5", /* IANA */
-- "L5", /* IANA */
-- "csISOLatin5", /* IANA */
-- "ISO8859-9", /* X11R6.4, glibc, FreeBSD */
-- /*"ISO8859_9", JDK 1.1 */
-- ),
-- iso8859_9,
-- { iso8859_9_mbtowc, NULL }, { iso8859_9_wctomb, NULL })
--
--DEFENCODING(( "ISO-8859-10", /* IANA */
-- "ISO_8859-10",
-- "ISO_8859-10:1992", /* IANA */
-- "ISO-IR-157", /* IANA */
-- "LATIN6", /* IANA */
-- "L6", /* IANA */
-- "csISOLatin6", /* IANA */
-- "ISO8859-10", /* X11R6.4, glibc, FreeBSD */
-- ),
-- iso8859_10,
-- { iso8859_10_mbtowc, NULL }, { iso8859_10_wctomb, NULL })
--
--DEFENCODING(( "ISO-8859-13", /* IANA, glibc */
-- "ISO_8859-13",
-- "ISO-IR-179", /* glibc */
-- "LATIN7", /* glibc */
-- "L7", /* glibc */
-- "ISO8859-13", /* glibc, FreeBSD */
-- ),
-- iso8859_13,
-- { iso8859_13_mbtowc, NULL }, { iso8859_13_wctomb, NULL })
--
--DEFENCODING(( "ISO-8859-14", /* IANA, glibc */
-- "ISO_8859-14", /* IANA */
-- "ISO_8859-14:1998", /* IANA, glibc */
-- "ISO-IR-199", /* IANA */
-- "LATIN8", /* IANA, glibc */
-- "L8", /* IANA, glibc */
-- "ISO-CELTIC", /* IANA */
-- "ISO8859-14", /* glibc, FreeBSD */
-- ),
-- iso8859_14,
-- { iso8859_14_mbtowc, NULL }, { iso8859_14_wctomb, NULL })
--
--DEFENCODING(( "ISO-8859-15", /* IANA, glibc */
-- "ISO_8859-15", /* IANA */
-- "ISO_8859-15:1998", /* glibc */
-- "ISO-IR-203",
-- "ISO8859-15", /* glibc, FreeBSD */
-- ),
-- iso8859_15,
-- { iso8859_15_mbtowc, NULL }, { iso8859_15_wctomb, NULL })
--
--DEFENCODING(( "ISO-8859-16",
-- "ISO_8859-16",
-- "ISO_8859-16:2000",
-- "ISO-IR-226",
-- "ISO8859-16", /* glibc, FreeBSD */
-- ),
-- iso8859_16,
-- { iso8859_16_mbtowc, NULL }, { iso8859_16_wctomb, NULL })
--
--DEFENCODING(( "KOI8-R", /* IANA, RFC 1489, X11R6.4, JDK 1.1 */
-- "csKOI8R", /* IANA */
-- ),
-- koi8_r,
-- { koi8_r_mbtowc, NULL }, { koi8_r_wctomb, NULL })
--
--DEFENCODING(( "KOI8-U", /* IANA, RFC 2319 */
-- ),
-- koi8_u,
-- { koi8_u_mbtowc, NULL }, { koi8_u_wctomb, NULL })
--
--DEFENCODING(( "KOI8-RU",
-- ),
-- koi8_ru,
-- { koi8_ru_mbtowc, NULL }, { koi8_ru_wctomb, NULL })
--
--/* Windows 8-bit encodings */
--
--DEFENCODING(( "CP1250", /* JDK 1.1 */
-- "WINDOWS-1250", /* IANA */
-- "MS-EE",
-- ),
-- cp1250,
-- { cp1250_mbtowc, NULL }, { cp1250_wctomb, NULL })
--
--DEFENCODING(( "CP1251", /* JDK 1.1 */
-- "WINDOWS-1251", /* IANA */
-- "MS-CYRL",
-- ),
-- cp1251,
-- { cp1251_mbtowc, NULL }, { cp1251_wctomb, NULL })
--
--DEFENCODING(( "CP1252", /* JDK 1.1 */
-- "WINDOWS-1252", /* IANA */
-- "MS-ANSI",
-- ),
-- cp1252,
-- { cp1252_mbtowc, NULL }, { cp1252_wctomb, NULL })
--
--DEFENCODING(( "CP1253", /* JDK 1.1 */
-- "WINDOWS-1253", /* IANA */
-- "MS-GREEK",
-- ),
-- cp1253,
-- { cp1253_mbtowc, NULL }, { cp1253_wctomb, NULL })
--
--DEFENCODING(( "CP1254", /* JDK 1.1 */
-- "WINDOWS-1254", /* IANA */
-- "MS-TURK",
-- ),
-- cp1254,
-- { cp1254_mbtowc, NULL }, { cp1254_wctomb, NULL })
--
--DEFENCODING(( "CP1255", /* JDK 1.1 */
-- "WINDOWS-1255", /* IANA */
-- "MS-HEBR",
-- ),
-- cp1255,
-- { cp1255_mbtowc, cp1255_flushwc }, { cp1255_wctomb, NULL })
--
--DEFENCODING(( "CP1256", /* JDK 1.1 */
-- "WINDOWS-1256", /* IANA */
-- "MS-ARAB",
-- ),
-- cp1256,
-- { cp1256_mbtowc, NULL }, { cp1256_wctomb, NULL })
--
--DEFENCODING(( "CP1257", /* JDK 1.1 */
-- "WINDOWS-1257", /* IANA */
-- "WINBALTRIM",
-- ),
-- cp1257,
-- { cp1257_mbtowc, NULL }, { cp1257_wctomb, NULL })
--
--DEFENCODING(( "CP1258", /* JDK 1.1 */
-- "WINDOWS-1258", /* IANA */
-- ),
-- cp1258,
-- { cp1258_mbtowc, cp1258_flushwc }, { cp1258_wctomb, NULL })
--
--/* DOS 8-bit encodings */
--
--DEFENCODING(( "CP850", /* IANA, JDK 1.1 */
-- "IBM850", /* IANA */
-- "850", /* IANA */
-- "csPC850Multilingual", /* IANA */
-- ),
-- cp850,
-- { cp850_mbtowc, NULL }, { cp850_wctomb, NULL })
--
--DEFENCODING(( "CP862", /* IANA, JDK 1.1 */
-- "IBM862", /* IANA */
-- "862", /* IANA */
-- "csPC862LatinHebrew", /* IANA */
-- ),
-- cp862,
-- { cp862_mbtowc, NULL }, { cp862_wctomb, NULL })
--
--DEFENCODING(( "CP866", /* IANA, JDK 1.1 */
-- "IBM866", /* IANA */
-- "866", /* IANA */
-- "csIBM866", /* IANA */
-- ),
-- cp866,
-- { cp866_mbtowc, NULL }, { cp866_wctomb, NULL })
--
--/* Macintosh 8-bit encodings */
--
--DEFENCODING(( "MacRoman", /* JDK 1.1 */
-- /* This is the best table for MACINTOSH. The ones */
-- /* in glibc and FreeBSD-iconv are bad quality. */
-- "MACINTOSH", /* IANA */
-- "MAC", /* IANA */
-- "csMacintosh", /* IANA */
-- ),
-- mac_roman,
-- { mac_roman_mbtowc, NULL }, { mac_roman_wctomb, NULL })
--
--DEFENCODING(( "MacCentralEurope", /* JDK 1.1 */
-- ),
-- mac_centraleurope,
-- { mac_centraleurope_mbtowc, NULL }, { mac_centraleurope_wctomb, NULL })
--
--DEFENCODING(( "MacIceland", /* JDK 1.1 */
-- ),
-- mac_iceland,
-- { mac_iceland_mbtowc, NULL }, { mac_iceland_wctomb, NULL })
--
--DEFENCODING(( "MacCroatian", /* JDK 1.1 */
-- ),
-- mac_croatian,
-- { mac_croatian_mbtowc, NULL }, { mac_croatian_wctomb, NULL })
--
--DEFENCODING(( "MacRomania", /* JDK 1.1 */
-- ),
-- mac_romania,
-- { mac_romania_mbtowc, NULL }, { mac_romania_wctomb, NULL })
--
--DEFENCODING(( "MacCyrillic", /* JDK 1.1 */
-- ),
-- mac_cyrillic,
-- { mac_cyrillic_mbtowc, NULL }, { mac_cyrillic_wctomb, NULL })
--
--DEFENCODING(( "MacUkraine", /* JDK 1.1 */
-- ),
-- mac_ukraine,
-- { mac_ukraine_mbtowc, NULL }, { mac_ukraine_wctomb, NULL })
--
--DEFENCODING(( "MacGreek", /* JDK 1.1 */
-- ),
-- mac_greek,
-- { mac_greek_mbtowc, NULL }, { mac_greek_wctomb, NULL })
--
--DEFENCODING(( "MacTurkish", /* JDK 1.1 */
-- ),
-- mac_turkish,
-- { mac_turkish_mbtowc, NULL }, { mac_turkish_wctomb, NULL })
--
--DEFENCODING(( "MacHebrew", /* JDK 1.1 */
-- ),
-- mac_hebrew,
-- { mac_hebrew_mbtowc, NULL }, { mac_hebrew_wctomb, NULL })
--
--DEFENCODING(( "MacArabic", /* JDK 1.1 */
-- ),
-- mac_arabic,
-- { mac_arabic_mbtowc, NULL }, { mac_arabic_wctomb, NULL })
--
--DEFENCODING(( "MacThai", /* JDK 1.1 */
-- ),
-- mac_thai,
-- { mac_thai_mbtowc, NULL }, { mac_thai_wctomb, NULL })
--
--/* Other platform specific 8-bit encodings */
--
--DEFENCODING(( "HP-ROMAN8", /* IANA, X11R6.4 */
-- "ROMAN8", /* IANA */
-- "R8", /* IANA */
-- "csHPRoman8", /* IANA */
-- ),
-- hp_roman8,
-- { hp_roman8_mbtowc, NULL }, { hp_roman8_wctomb, NULL })
--
--DEFENCODING(( "NEXTSTEP",
-- ),
-- nextstep,
-- { nextstep_mbtowc, NULL }, { nextstep_wctomb, NULL })
--
--/* Regional 8-bit encodings used for a single language */
--
--DEFENCODING(( "ARMSCII-8",
-- ),
-- armscii_8,
-- { armscii_8_mbtowc, NULL }, { armscii_8_wctomb, NULL })
--
--DEFENCODING(( "GEORGIAN-ACADEMY",
-- ),
-- georgian_academy,
-- { georgian_academy_mbtowc, NULL }, { georgian_academy_wctomb, NULL })
--
--DEFENCODING(( "GEORGIAN-PS",
-- ),
-- georgian_ps,
-- { georgian_ps_mbtowc, NULL }, { georgian_ps_wctomb, NULL })
--
--DEFENCODING(( "KOI8-T",
-- ),
-- koi8_t,
-- { koi8_t_mbtowc, NULL }, { koi8_t_wctomb, NULL })
--
--DEFENCODING(( "MULELAO-1",
-- ),
-- mulelao,
-- { mulelao_mbtowc, NULL }, { mulelao_wctomb, NULL })
--
--DEFENCODING(( "CP1133",
-- "IBM-CP1133",
-- ),
-- cp1133,
-- { cp1133_mbtowc, NULL }, { cp1133_wctomb, NULL })
--
--DEFENCODING(( "TIS-620", /* IANA */
-- "TIS620", /* glibc */
-- "TIS620-0", /* glibc */
-- "TIS620.2529-1", /* glibc */
-- "TIS620.2533-0", /* glibc */
-- "TIS620.2533-1",
-- "ISO-IR-166", /* glibc */
-- ),
-- tis620,
-- { tis620_mbtowc, NULL }, { tis620_wctomb, NULL })
--
--DEFENCODING(( "CP874", /* JDK 1.1 */
-- "WINDOWS-874",
-- ),
-- cp874,
-- { cp874_mbtowc, NULL }, { cp874_wctomb, NULL })
--
--DEFENCODING(( "VISCII", /* IANA, RFC 1456 */
-- "VISCII1.1-1",
-- "csVISCII", /* IANA */
-- ),
-- viscii,
-- { viscii_mbtowc, NULL }, { viscii_wctomb, NULL })
--
--DEFENCODING(( "TCVN",
-- "TCVN-5712",
-- "TCVN5712-1",
-- "TCVN5712-1:1993",
-- ),
-- tcvn,
-- { tcvn_mbtowc, tcvn_flushwc }, { tcvn_wctomb, NULL })
--
--/* CJK character sets (not documented) */
--
--DEFENCODING(( "JIS_C6220-1969-RO", /* IANA */
-- "ISO646-JP", /* IANA */
-- "ISO-IR-14", /* IANA */
-- "JP", /* IANA */
-- "csISO14JISC6220ro", /* IANA */
-- ),
-- iso646_jp,
-- { iso646_jp_mbtowc, NULL }, { iso646_jp_wctomb, NULL })
--
--DEFENCODING(( "JIS_X0201", /* IANA */
-- "JISX0201-1976",
-- "X0201", /* IANA */
-- "csHalfWidthKatakana", /* IANA */
-- /*"JISX0201.1976-0", X11R6.4 */
-- /*"JIS0201", JDK 1.1 */
-- ),
-- jisx0201,
-- { jisx0201_mbtowc, NULL }, { jisx0201_wctomb, NULL })
--
--DEFENCODING(( "JIS_X0208",
-- "JIS_X0208-1983", /* IANA */
-- "JIS_X0208-1990",
-- "JIS0208",
-- "X0208", /* IANA */
-- "ISO-IR-87", /* IANA */
-- "JIS_C6226-1983", /* IANA */
-- "csISO87JISX0208", /* IANA */
-- /*"JISX0208.1983-0", X11R6.4 */
-- /*"JISX0208.1990-0", X11R6.4 */
-- /*"JIS0208", JDK 1.1 */
-- ),
-- jisx0208,
-- { jisx0208_mbtowc, NULL }, { jisx0208_wctomb, NULL })
--
--DEFENCODING(( "JIS_X0212",
-- "JIS_X0212.1990-0",
-- "JIS_X0212-1990", /* IANA */
-- "X0212", /* IANA */
-- "ISO-IR-159", /* IANA */
-- "csISO159JISX02121990", /* IANA */
-- /*"JISX0212.1990-0", X11R6.4 */
-- /*"JIS0212", JDK 1.1 */
-- ),
-- jisx0212,
-- { jisx0212_mbtowc, NULL }, { jisx0212_wctomb, NULL })
--
--DEFENCODING(( "GB_1988-80", /* IANA */
-- "ISO646-CN", /* IANA */
-- "ISO-IR-57", /* IANA */
-- "CN", /* IANA */
-- "csISO57GB1988", /* IANA */
-- ),
-- iso646_cn,
-- { iso646_cn_mbtowc, NULL }, { iso646_cn_wctomb, NULL })
--
--DEFENCODING(( "GB_2312-80", /* IANA */
-- "ISO-IR-58", /* IANA */
-- "csISO58GB231280", /* IANA */
-- "CHINESE", /* IANA */
-- /*"GB2312.1980-0", X11R6.4 */
-- ),
-- gb2312,
-- { gb2312_mbtowc, NULL }, { gb2312_wctomb, NULL })
--
--DEFENCODING(( "ISO-IR-165",
-- "CN-GB-ISOIR165", /* RFC 1922 */
-- ),
-- isoir165,
-- { isoir165_mbtowc, NULL }, { isoir165_wctomb, NULL })
--
--DEFENCODING(( "KSC_5601", /* IANA */
-- "KS_C_5601-1987", /* IANA */
-- "KS_C_5601-1989", /* IANA */
-- "ISO-IR-149", /* IANA */
-- "csKSC56011987", /* IANA */
-- "KOREAN", /* IANA */
-- /*"KSC5601.1987-0", X11R6.4 */
-- /*"KSX1001:1992", Ken Lunde */
-- ),
-- ksc5601,
-- { ksc5601_mbtowc, NULL }, { ksc5601_wctomb, NULL })
--
--/* CJK encodings */
--
--DEFENCODING(( "EUC-JP", /* IANA */
-- "EUCJP", /* glibc */
-- "Extended_UNIX_Code_Packed_Format_for_Japanese", /* IANA */
-- "csEUCPkdFmtJapanese", /* IANA */
-- /*"EUC_JP", JDK 1.1 */
-- ),
-- euc_jp,
-- { euc_jp_mbtowc, NULL }, { euc_jp_wctomb, NULL })
--
--DEFENCODING(( "SHIFT_JIS", /* IANA */
-- "SHIFT-JIS", /* glibc */
-- "SJIS", /* JDK 1.1 */
-- "MS_KANJI", /* IANA */
-- "csShiftJIS", /* IANA */
-- ),
-- sjis,
-- { sjis_mbtowc, NULL }, { sjis_wctomb, NULL })
--
--DEFENCODING(( "CP932", /* glibc */
-- ),
-- cp932,
-- { cp932_mbtowc, NULL }, { cp932_wctomb, NULL })
--
--DEFENCODING(( "ISO-2022-JP", /* IANA, RFC 1468 */
-- "csISO2022JP", /* IANA */
-- /*"ISO2022JP", JDK 1.1 */
-- ),
-- iso2022_jp,
-- { iso2022_jp_mbtowc, NULL }, { iso2022_jp_wctomb, iso2022_jp_reset })
--
--DEFENCODING(( "ISO-2022-JP-1", /* RFC 2237 */
-- ),
-- iso2022_jp1,
-- { iso2022_jp1_mbtowc, NULL }, { iso2022_jp1_wctomb, iso2022_jp1_reset })
--
--DEFENCODING(( "ISO-2022-JP-2", /* IANA, RFC 1554 */
-- "csISO2022JP2", /* IANA */
-- ),
-- iso2022_jp2,
-- { iso2022_jp2_mbtowc, NULL }, { iso2022_jp2_wctomb, iso2022_jp2_reset })
--
--DEFENCODING(( "EUC-CN", /* glibc */
-- "EUCCN", /* glibc */
-- "GB2312", /* IANA */
-- "CN-GB", /* RFC 1922 */
-- "csGB2312", /* IANA */
-- /*"EUC_CN", JDK 1.1 */
-- ),
-- euc_cn,
-- { euc_cn_mbtowc, NULL }, { euc_cn_wctomb, NULL })
--
--DEFENCODING(( "GBK", /* JDK 1.1 */
-- "CP936",
-- ),
-- ces_gbk,
-- { ces_gbk_mbtowc, NULL }, { ces_gbk_wctomb, NULL })
--
--DEFENCODING(( "GB18030", /* glibc */
-- ),
-- gb18030,
-- { gb18030_mbtowc, NULL }, { gb18030_wctomb, NULL })
--
--DEFENCODING(( "ISO-2022-CN", /* IANA, RFC 1922 */
-- "csISO2022CN",
-- /*"ISO2022CN", JDK 1.1 */
-- ),
-- iso2022_cn,
-- { iso2022_cn_mbtowc, NULL }, { iso2022_cn_wctomb, iso2022_cn_reset })
--
--DEFENCODING(( "ISO-2022-CN-EXT", /* IANA, RFC 1922 */
-- ),
-- iso2022_cn_ext,
-- { iso2022_cn_ext_mbtowc, NULL }, { iso2022_cn_ext_wctomb, iso2022_cn_ext_reset })
--
--DEFENCODING(( "HZ", /* RFC 1843 */
-- "HZ-GB-2312", /* IANA, RFC 1842 */
-- ),
-- hz,
-- { hz_mbtowc, NULL }, { hz_wctomb, hz_reset })
--
--DEFENCODING(( "EUC-TW", /* glibc */
-- "EUCTW", /* glibc */
-- "csEUCTW",
-- /*"EUC_TW", JDK 1.1 */
-- ),
-- euc_tw,
-- { euc_tw_mbtowc, NULL }, { euc_tw_wctomb, NULL })
--
--DEFENCODING(( "BIG5", /* IANA, JDK 1.1 */
-- "BIG-5", /* glibc */
-- "BIG-FIVE", /* glibc */
-- "BIGFIVE", /* glibc */
-- "CN-BIG5", /* RFC 1922 */
-- "csBig5", /* IANA */
-- ),
-- ces_big5,
-- { ces_big5_mbtowc, NULL }, { ces_big5_wctomb, NULL })
--
--DEFENCODING(( "CP950", /* JDK 1.1 */
-- ),
-- cp950,
-- { cp950_mbtowc, NULL }, { cp950_wctomb, NULL })
--
--DEFENCODING(( "BIG5-HKSCS", /* IANA */
-- "BIG5HKSCS", /* glibc */
-- ),
-- big5hkscs,
-- { big5hkscs_mbtowc, NULL }, { big5hkscs_wctomb, NULL })
--
--DEFENCODING(( "EUC-KR", /* IANA, RFC 1557 */
-- "EUCKR", /* glibc */
-- "csEUCKR", /* IANA */
-- /*"EUC_KR", JDK 1.1 */
-- ),
-- euc_kr,
-- { euc_kr_mbtowc, NULL }, { euc_kr_wctomb, NULL })
--
--DEFENCODING(( "CP949", /* JDK 1.1 */
-- "UHC", /* glibc */
-- ),
-- cp949,
-- { cp949_mbtowc, NULL }, { cp949_wctomb, NULL })
--
--DEFENCODING(( "JOHAB", /* glibc */
-- "CP1361", /* glibc */
-- ),
-- johab,
-- { johab_mbtowc, NULL }, { johab_wctomb, NULL })
--
--DEFENCODING(( "ISO-2022-KR", /* IANA, RFC 1557 */
-- "csISO2022KR", /* IANA */
-- /*"ISO2022KR", JDK 1.1 */
-- ),
-- iso2022_kr,
-- { iso2022_kr_mbtowc, NULL }, { iso2022_kr_wctomb, iso2022_kr_reset })
--
-diff -Nur libiconv-1.9.1-orig/lib/loop_unicode.h libiconv-1.9.1-nocompile/lib/loop_unicode.h
---- libiconv-1.9.1-orig/lib/loop_unicode.h 2003-04-16 12:08:22.000000000 +0200
-+++ libiconv-1.9.1-nocompile/lib/loop_unicode.h 2006-03-05 15:52:29.000000000 +0100
-@@ -21,17 +21,19 @@
- /* This file defines the conversion loop via Unicode as a pivot encoding. */
-
- /* Attempt to transliterate wc. Return code as in xxx_wctomb. */
-+
- static int unicode_transliterate (conv_t cd, ucs4_t wc,
- unsigned char* outptr, size_t outleft)
- {
-+/*
- if (cd->oflags & HAVE_HANGUL_JAMO) {
-- /* Decompose Hangul into Jamo. Use double-width Jamo (contained
-+ /-* Decompose Hangul into Jamo. Use double-width Jamo (contained
- in all Korean encodings and ISO-2022-JP-2), not half-width Jamo
-- (contained in Unicode only). */
-+ (contained in Unicode only). *-/
- ucs4_t buf[3];
- int ret = johab_hangul_decompose(cd,buf,wc);
- if (ret != RET_ILUNI) {
-- /* we know 1 <= ret <= 3 */
-+ /-* we know 1 <= ret <= 3 *-/
- state_t backup_state = cd->ostate;
- unsigned char* backup_outptr = outptr;
- size_t backup_outleft = outleft;
-@@ -57,9 +59,9 @@
- }
- }
- {
-- /* Try to use a variant, but postfix it with
-+ /-* Try to use a variant, but postfix it with
- U+303E IDEOGRAPHIC VARIATION INDICATOR
-- (cf. Ken Lunde's "CJKV information processing", p. 188). */
-+ (cf. Ken Lunde's "CJKV information processing", p. 188). *-/
- int indx = -1;
- if (wc == 0x3006)
- indx = 0;
-@@ -105,20 +107,20 @@
- }
- }
- if (wc >= 0x2018 && wc <= 0x201a) {
-- /* Special case for quotation marks 0x2018, 0x2019, 0x201a */
-+ /-* Special case for quotation marks 0x2018, 0x2019, 0x201a *-/
- ucs4_t substitute =
- (cd->oflags & HAVE_QUOTATION_MARKS
- ? (wc == 0x201a ? 0x2018 : wc)
- : (cd->oflags & HAVE_ACCENTS
-- ? (wc==0x2019 ? 0x00b4 : 0x0060) /* use accents */
-- : 0x0027 /* use apostrophe */
-+ ? (wc==0x2019 ? 0x00b4 : 0x0060) /-* use accents *-/
-+ : 0x0027 /-* use apostrophe *-/
- ) );
- int outcount = cd->ofuncs.xxx_wctomb(cd,outptr,substitute,outleft);
- if (outcount != RET_ILUNI)
- return outcount;
- }
- {
-- /* Use the transliteration table. */
-+ /-* Use the transliteration table. *-/
- int indx = translit_index(wc);
- if (indx >= 0) {
- const unsigned int * cp = &translit_data[indx];
-@@ -135,7 +137,7 @@
- }
- sub_outcount = cd->ofuncs.xxx_wctomb(cd,outptr,cp[i],outleft);
- if (sub_outcount == RET_ILUNI)
-- /* Recursive transliteration. */
-+ /-* Recursive transliteration. *-/
- sub_outcount = unicode_transliterate(cd,cp[i],outptr,outleft);
- if (sub_outcount <= RET_ILUNI)
- goto translit_failed;
-@@ -151,6 +153,7 @@
- return RET_TOOSMALL;
- }
- }
-+*/
- return RET_ILUNI;
- }
-
diff --git a/openwrt/package/libid3tag/Config.in b/openwrt/package/libid3tag/Config.in
deleted file mode 100644
index 8ee04ab9ee..0000000000
--- a/openwrt/package/libid3tag/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_LIBID3TAG
- prompt "libid3tag......................... An ID3 tag manipulation library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_ZLIB
- help
- libid3tag is a library for reading and (eventually) writing ID3 tags, both
- ID3v1 and the various versions of ID3v2.
-
- http://mad.sourceforge.net/
-
- Depends: zlib
-
diff --git a/openwrt/package/libid3tag/Makefile b/openwrt/package/libid3tag/Makefile
deleted file mode 100644
index b4281652c4..0000000000
--- a/openwrt/package/libid3tag/Makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libid3tag
-PKG_VERSION:=0.15.1b
-PKG_RELEASE:=1
-PKG_MD5SUM:=e5808ad997ba32c498803822078748c3
-
-PKG_SOURCE_URL:=@SF/mad
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBID3TAG,libid3tag,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- --disable-debugging \
- --disable-profiling \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBID3TAG):
- install -m0755 -d $(IDIR_LIBID3TAG)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libid3tag.so.* $(IDIR_LIBID3TAG)/usr/lib/
- $(RSTRIP) $(IDIR_LIBID3TAG)
- $(IPKG_BUILD) $(IDIR_LIBID3TAG) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libid3tag.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/id3tag.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libid3tag.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libid3tag.so* $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libid3tag.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/id3tag.h \
- $(STAGING_DIR)/usr/lib/libid3tag.a \
- $(STAGING_DIR)/usr/lib/libid3tag.so* \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libid3tag/ipkg/libid3tag.control b/openwrt/package/libid3tag/ipkg/libid3tag.control
deleted file mode 100644
index ec9a754701..0000000000
--- a/openwrt/package/libid3tag/ipkg/libid3tag.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libid3tag
-Priority: optional
-Section: libs
-Depends: zlib
-Description: an ID3 tag manipulation library
diff --git a/openwrt/package/liblzo/Config.in b/openwrt/package/liblzo/Config.in
deleted file mode 100644
index b63a09a919..0000000000
--- a/openwrt/package/liblzo/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_LIBLZO
- prompt "liblzo............................ Real-time data compression library"
- tristate
- default m if CONFIG_DEVEL
- help
- A real-time data compression library
-
- http://www.oberhumer.com/opensource/lzo/
-
diff --git a/openwrt/package/liblzo/Makefile b/openwrt/package/liblzo/Makefile
deleted file mode 100644
index 60b3710c99..0000000000
--- a/openwrt/package/liblzo/Makefile
+++ /dev/null
@@ -1,82 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=lzo
-PKG_VERSION:=1.08
-PKG_RELEASE:=1
-PKG_MD5SUM:=ab94d3da364c7cbd5b78d76f1875b0f6
-
-PKG_SOURCE_URL:=http://www.oberhumer.com/opensource/lzo/download/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBLZO,liblzo,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CFLAGS_O="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBLZO):
- install -d -m0755 $(IDIR_LIBLZO)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblzo.so.* $(IDIR_LIBLZO)/usr/lib
- $(RSTRIP) $(IDIR_LIBLZO)
- $(IPKG_BUILD) $(IDIR_LIBLZO) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/liblzo.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/lzo*.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblzo.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $(STAGING_DIR)/usr/lib/liblzo.so
-
-install-dev: $(STAGING_DIR)/usr/lib/liblzo.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/lzo*.h \
- $(STAGING_DIR)/usr/lib/liblzo.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/liblzo/ipkg/liblzo.control b/openwrt/package/liblzo/ipkg/liblzo.control
deleted file mode 100644
index 3f84ee6f2a..0000000000
--- a/openwrt/package/liblzo/ipkg/liblzo.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: liblzo
-Priority: optional
-Section: libs
-Description: a real-time data compression library
diff --git a/openwrt/package/liblzo/patches/lzo-cross-compile.patch b/openwrt/package/liblzo/patches/lzo-cross-compile.patch
deleted file mode 100644
index 68a3d0449e..0000000000
--- a/openwrt/package/liblzo/patches/lzo-cross-compile.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-For some reason the lzo autoconf script uses a local macro that does
-a test for cross-compiles, and assumes that if the build target name
-and the host target name are the same that --host was not specified to
-the configure script. In the uClibc buildroot, this is not the case.
-
---- lzo-1.08/aclocal.m4 2002-07-12 18:31:52.000000000 -0700
-+++ lzo-1.08/aclocal.m4.new 2004-03-10 15:32:42.000000000 -0700
-@@ -205,12 +205,6 @@
- [
- AC_REQUIRE([AC_PROG_CC])
-
--if test "X$cross_compiling" = Xyes; then
-- if test "X$build" = "X$host"; then
-- AC_MSG_ERROR([you are cross compiling - please use the \`--host=' option])
-- fi
--fi
--
- ])
-
-
---- lzo-1.08/configure-dist 2004-03-11 02:18:28.000000000 -0600
-+++ lzo-1.08/configure 2004-03-11 02:19:16.000000000 -0600
-@@ -2282,13 +2282,13 @@
-
-
-
--if test "X$cross_compiling" = Xyes; then
-- if test "X$build" = "X$host"; then
-- { { echo "$as_me:$LINENO: error: you are cross compiling - please use the \`--host=' option" >&5
--echo "$as_me: error: you are cross compiling - please use the \`--host=' option" >&2;}
-- { (exit 1); exit 1; }; }
-- fi
--fi
-+#if test "X$cross_compiling" = Xyes; then
-+# if test "X$build" = "X$host"; then
-+# { { echo "$as_me:$LINENO: error: you are cross compiling - please use the \`--host=' option" >&5
-+#echo "$as_me: error: you are cross compiling - please use the \`--host=' option" >&2;}
-+# { (exit 1); exit 1; }; }
-+# fi
-+#fi
-
-
-
diff --git a/openwrt/package/libmad/Config.in b/openwrt/package/libmad/Config.in
deleted file mode 100644
index 480b0e1284..0000000000
--- a/openwrt/package/libmad/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_LIBMAD
- prompt "libmad............................ An high-quality MPEG audio decoding library"
- tristate
- default m if CONFIG_DEVEL
- help
- MAD is a high-quality MPEG audio decoder. It currently supports
- MPEG-1 and the MPEG-2 extension to lower sampling frequencies,
- as well as the de facto MPEG 2.5 format. All three audio layers -
- Layer I, Layer II, and Layer III (i.e. MP3) - are fully implemented.
-
- http://www.underbit.com/products/mad/
-
diff --git a/openwrt/package/libmad/Makefile b/openwrt/package/libmad/Makefile
deleted file mode 100644
index 91983eac53..0000000000
--- a/openwrt/package/libmad/Makefile
+++ /dev/null
@@ -1,103 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libmad
-PKG_VERSION:=0.15.1b
-PKG_RELEASE:=1
-PKG_MD5SUM:=1be543bc30c56fb6bea1d7bf6a64e66c
-
-PKG_SOURCE_URL:=@SF/mad \
- ftp://ftp.mars.org/pub/mpeg/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBMAD,libmad,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-FPM:=default
-ifeq ($(ARCH),i386)
-FPM:=intel
-endif
-ifeq ($(ARCH),mipsel)
-FPM:=mips
-endif
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- --enable-fpm=$(FPM) \
- --disable-debugging \
- --enable-speed \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBMAD):
- install -m0755 -d $(IDIR_LIBMAD)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmad.so.* $(IDIR_LIBMAD)/usr/lib/
- $(RSTRIP) $(IDIR_LIBMAD)
- $(IPKG_BUILD) $(IDIR_LIBMAD) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libmad.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/mad.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmad.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmad.so* $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libmad.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/mad.h \
- $(STAGING_DIR)/usr/lib/libmad.a \
- $(STAGING_DIR)/usr/lib/libmad.so* \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/libmad/ipkg/libmad.control b/openwrt/package/libmad/ipkg/libmad.control
deleted file mode 100644
index e81fea2dc0..0000000000
--- a/openwrt/package/libmad/ipkg/libmad.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libmad
-Priority: optional
-Section: libs
-Description: An high-quality MPEG audio decoding library
diff --git a/openwrt/package/libmcrypt/Config.in b/openwrt/package/libmcrypt/Config.in
deleted file mode 100644
index 59d44ffeab..0000000000
--- a/openwrt/package/libmcrypt/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_LIBMCRYPT
- prompt "libmcrypt....................... Cryptographic library"
- tristate
- default m if CONFIG_DEVEL
- help
- libmcrypt is a cryptographic library that conveniently brings
- together a variety of ciphers for convenient use.
-
- http://mcrypt.sourceforge.net/
diff --git a/openwrt/package/libmcrypt/Makefile b/openwrt/package/libmcrypt/Makefile
deleted file mode 100644
index 19b65face2..0000000000
--- a/openwrt/package/libmcrypt/Makefile
+++ /dev/null
@@ -1,94 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libmcrypt
-PKG_VERSION:=2.5.7
-PKG_RELEASE:=1
-PKG_MD5SUM:=b1be163143f8e8ed0474beeb642b3bad
-
-PKG_SOURCE_URL:=@SF/mcrypt
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBMCRYPT,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib -lm" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=$(PKG_INSTALL_DIR) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBMCRYPT):
- install -d -m0755 $(IDIR_LIBMCRYPT)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmcrypt.so.* $(IDIR_LIBMCRYPT)/usr/lib
- $(RSTRIP) $(IDIR_LIBMCRYPT)
- $(IPKG_BUILD) $(IDIR_LIBMCRYPT) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libmcrypt.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/mcrypt.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmcrypt.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmcrypt.so* $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/libmcrypt-config $(STAGING_DIR)/usr/bin/
- $(SED) 's,-I/usr/include,,g' $(STAGING_DIR)/usr/bin/libmcrypt-config
- $(SED) 's,-L/usr/lib,,g' $(STAGING_DIR)/usr/bin/libmcrypt-config
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libmcrypt.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/mcrypt.h \
- $(STAGING_DIR)/usr/lib/libmcrypt.a \
- $(STAGING_DIR)/usr/lib/libmcrypt.so* \
- $(STAGING_DIR)/usr/bin/mcrypt-config \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/libmcrypt/ipkg/libmcrypt.control b/openwrt/package/libmcrypt/ipkg/libmcrypt.control
deleted file mode 100644
index 6eb79da0fb..0000000000
--- a/openwrt/package/libmcrypt/ipkg/libmcrypt.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libmcrypt
-Priority: optional
-Section: net
-Description: Cryptographic Library
diff --git a/openwrt/package/libnet/Config.in b/openwrt/package/libnet/Config.in
deleted file mode 100644
index a3cb965c3a..0000000000
--- a/openwrt/package/libnet/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_LIBNET
- prompt "libnet............................ Low-level packet creation library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPCAP
- help
- A low-level packet creation library.
-
- http://www.packetfactory.net/libnet/
-
- Depends: libpcap
-
diff --git a/openwrt/package/libnet/Makefile b/openwrt/package/libnet/Makefile
deleted file mode 100644
index 4e89b35411..0000000000
--- a/openwrt/package/libnet/Makefile
+++ /dev/null
@@ -1,100 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libnet
-PKG_VERSION:=1.0.2a
-PKG_RELEASE:=7
-PKG_MD5SUM:=ddf53f0f484184390e8c2a1bd0853667
-
-PKG_SOURCE_URL:=http://www.packetfactory.net/libnet/dist/deprecated/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/Libnet-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-ENDIAN:=lil
-ifeq ($(ARCH),mips)
-ENDIAN:=big
-endif
-
-$(eval $(call PKG_template,LIBNET,libnet,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- touch configure.in; \
- touch include.m4; \
- touch aclocal.m4; \
- touch Makefile.in; \
- touch configure; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ac_libnet_have_pf_packet=yes \
- ac_cv_lbl_unaligned_fail=no \
- ac_cv_libnet_endianess=$(ENDIAN) \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --with-pf_packet=yes \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBNET):
- install -m0755 -d $(IDIR_LIBNET)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnet.so.* $(IDIR_LIBNET)/usr/lib/
- $(RSTRIP) $(IDIR_LIBNET)
- $(IPKG_BUILD) $(IDIR_LIBNET) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libnet.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/libnet-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libnet* $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnet.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libnet.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/libnet-config \
- $(STAGING_DIR)/usr/include/libnet* \
- $(STAGING_DIR)/usr/lib/libnet.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libnet/ipkg/libnet.control b/openwrt/package/libnet/ipkg/libnet.control
deleted file mode 100644
index 65a2b5e848..0000000000
--- a/openwrt/package/libnet/ipkg/libnet.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libnet
-Priority: optional
-Section: libs
-Description: a low-level packet creation library
-Depends: libpcap
diff --git a/openwrt/package/libnet/patches/500-debian-subset.patch.gz b/openwrt/package/libnet/patches/500-debian-subset.patch.gz
deleted file mode 100644
index 0c1d676ca4..0000000000
--- a/openwrt/package/libnet/patches/500-debian-subset.patch.gz
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/libnids/Config.in b/openwrt/package/libnids/Config.in
deleted file mode 100644
index 0c98be21ad..0000000000
--- a/openwrt/package/libnids/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_LIBNIDS
- prompt "libnids........................... A network intrusion detection library"
- tristate
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBNET
- default m if CONFIG_DEVEL
- help
- An implementation of an E-component of Network Intrusion Detection System.
-
- http://www.packetfactory.net/projects/libnids/
-
diff --git a/openwrt/package/libnids/Makefile b/openwrt/package/libnids/Makefile
deleted file mode 100644
index c7e271e5ef..0000000000
--- a/openwrt/package/libnids/Makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libnids
-PKG_VERSION:=1.18
-PKG_RELEASE:=0
-PKG_MD5SUM:=9ee6dcdfac97bae6fe611aa27d2594a5
-
-PKG_SOURCE_URL:=http://www.packetfactory.net/projects/libnids/dist/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBNIDS,libnids,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --with-libnet="$(STAGING_DIR)/usr" \
- --with-libpcap="$(STAGING_DIR)/usr" \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- install_prefix="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBNIDS):
- install -m0755 -d $(IDIR_LIBNIDS)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnids.so.* $(IDIR_LIBNIDS)/usr/lib/
- $(RSTRIP) $(IDIR_LIBNIDS)
- $(IPKG_BUILD) $(IDIR_LIBNIDS) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libnids.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/nids.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnids.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $(STAGING_DIR)/usr/lib/libnids.so
-
-install-dev: $(STAGING_DIR)/usr/lib/libnids.so
-
-uninstall-dev:
- rm -rf $(STAGING_DIR)/usr/include/nids.h
- rm -rf $(STAGING_DIR)/usr/lib/libnids.{a,so*}
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libnids/ipkg/libnids.control b/openwrt/package/libnids/ipkg/libnids.control
deleted file mode 100644
index f342742690..0000000000
--- a/openwrt/package/libnids/ipkg/libnids.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libnids
-Priority: optional
-Section: libs
-Description: implementation of an E-component of Network Intrusion Detection System.
-Depends: libpcap, libnet
diff --git a/openwrt/package/libnids/patches/configure.patch b/openwrt/package/libnids/patches/configure.patch
deleted file mode 100644
index 3b56aba8f0..0000000000
--- a/openwrt/package/libnids/patches/configure.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-diff -Nur libnids-1.18/configure libnids-1.18.patched/configure
---- libnids-1.18/configure 2003-10-15 01:40:09.000000000 +0200
-+++ libnids-1.18.patched/configure 2005-06-09 12:37:42.000000000 +0200
-@@ -3253,7 +3253,7 @@
- esac
-
-
--CFLAGS="$CFLAGS -D_BSD_SOURCE"
-+CFLAGS="$CFLAGS"
-
- for ac_func in gettimeofday
- do
-@@ -3489,17 +3489,21 @@
- echo "${ECHO_T}no" >&6
- ;;
- *)
-- echo "$as_me:$LINENO: result: $withval" >&5
--echo "${ECHO_T}$withval" >&6
-+ echo "$ac_t""$withval" 1>&6
- if test -f $withval/pcap.h -a -f $withval/libpcap.a; then
- owd=`pwd`
- if cd $withval; then withval=`pwd`; cd $owd; fi
-- PCAP_CFLAGS="-I$withval -I$withval/bpf"
-+ PCAPINC="-I$withval -I$withval/bpf"
- PCAPLIB="-L$withval -lpcap"
-+ elif test -f $withval/include/pcap.h -a \
-+ -f $withval/include/pcap-bpf.h -a \
-+ -f $withval/lib/libpcap.a; then
-+ owd=`pwd`
-+ if cd $withval; then withval=`pwd`; cd $owd; fi
-+ PCAPINC="-I$withval/include"
-+ PCAPLIB="-L$withval/lib -lpcap"
- else
-- { { echo "$as_me:$LINENO: error: pcap.h or libpcap.a not found in $withval" >&5
--echo "$as_me: error: pcap.h or libpcap.a not found in $withval" >&2;}
-- { (exit 1); exit 1; }; }
-+ { echo "configure: error: pcap.h" 1>&2; exit 1; }
- fi
- ;;
- esac
-@@ -3605,10 +3609,10 @@
- *)
- echo "$as_me:$LINENO: result: $withval" >&5
- echo "${ECHO_T}$withval" >&6
-- if test -f $withval/include/libnet.h -a -f $withval/lib/libnet.a -a -f $withval/libnet-config ; then
-+ if test -f $withval/include/libnet.h -a -f $withval/lib/libnet.a -a -f $withval/bin/libnet-config ; then
- owd=`pwd`
- if cd $withval; then withval=`pwd`; cd $owd; fi
-- LNET_CFLAGS="-I$withval/include `$withval/libnet-config --defines`"
-+ LNET_CFLAGS="-I$withval/include `$withval/bin/libnet-config --defines`"
- LNETLIB="-L$withval/lib -lnet"
- elif test -f $withval/include/libnet.h -a -f $withval/src/libnet.a; then
- owd=`pwd`
-@@ -3861,7 +3865,7 @@
- else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
--HAVE_BSD_UDPHDR=0
-+HAVE_BSD_UDPHDR=1
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
-
diff --git a/openwrt/package/libnids/patches/no_asm_for_i386.patch b/openwrt/package/libnids/patches/no_asm_for_i386.patch
deleted file mode 100644
index ff6fde7b12..0000000000
--- a/openwrt/package/libnids/patches/no_asm_for_i386.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN libnids-1.18-orig/src/checksum.c libnids-1.18/src/checksum.c
---- libnids-1.18-orig/src/checksum.c 2003-09-20 22:40:44.000000000 +0200
-+++ libnids-1.18/src/checksum.c 2005-08-09 23:55:00.000000000 +0200
-@@ -4,7 +4,7 @@
- #include <netinet/tcp.h>
- #include <netinet/udp.h>
-
--#if ( __i386__ || __i386 )
-+#if 0
- // all asm procedures are copied from Linux 2.0.36 and 2.2.10 kernels
-
- /*
diff --git a/openwrt/package/libogg/Config.in b/openwrt/package/libogg/Config.in
deleted file mode 100644
index b27f1a90ff..0000000000
--- a/openwrt/package/libogg/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_LIBOGG
- prompt "libogg............................ The Ogg bitstream handling library"
- tristate
- default n
- help
- The Ogg bitstream handling library.
-
- http://www.vorbis.com/
-
diff --git a/openwrt/package/libogg/Makefile b/openwrt/package/libogg/Makefile
deleted file mode 100644
index 4459aa25f3..0000000000
--- a/openwrt/package/libogg/Makefile
+++ /dev/null
@@ -1,96 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libogg
-PKG_VERSION:=1.1.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=4d82996517bf33bb912c97e9d0b635c4
-
-PKG_SOURCE_URL:=http://downloads.xiph.org/releases/ogg/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBOGG,libogg,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBOGG):
- install -m0755 -d $(IDIR_LIBOGG)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libogg.so.* $(IDIR_LIBOGG)/usr/lib/
- $(RSTRIP) $(IDIR_LIBOGG)
- $(IPKG_BUILD) $(IDIR_LIBOGG) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libogg.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/ogg $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libogg.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libogg.so* $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/ogg.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I$${includedir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/ogg.pc
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/ogg.pc
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libogg.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/ogg \
- $(STAGING_DIR)/usr/lib/libogg.a \
- $(STAGING_DIR)/usr/lib/libogg.so* \
- $(STAGING_DIR)/usr/lib/pkgconfig/ogg.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/libogg/ipkg/libogg.control b/openwrt/package/libogg/ipkg/libogg.control
deleted file mode 100644
index dd816f3c2f..0000000000
--- a/openwrt/package/libogg/ipkg/libogg.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libogg
-Priority: optional
-Section: libs
-Description: The Ogg bitstream handling library
diff --git a/openwrt/package/libol/Config.in b/openwrt/package/libol/Config.in
deleted file mode 100644
index 3037283f8c..0000000000
--- a/openwrt/package/libol/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_LIBOL
- prompt "libol............................. Support library for syslog-ng"
- tristate
- default n
- help
- Support library for syslog-ng
-
- http://www.balabit.com
diff --git a/openwrt/package/libol/Makefile b/openwrt/package/libol/Makefile
deleted file mode 100644
index c0431392fe..0000000000
--- a/openwrt/package/libol/Makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libol
-PKG_VERSION:=0.3.17
-PKG_RELEASE:=1
-PKG_MD5SUM:=28cc52e84bdb472b7830f9ad120a62a7
-
-PKG_SOURCE_URL:=http://www.balabit.com/downloads/libol/0.3
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBOL,libol,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- # pass CFLAGS again to override -O2 set by configure
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CFLAGS="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBOL):
- install -d -m0755 $(IDIR_LIBOL)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libol.so.* $(IDIR_LIBOL)/usr/lib/
- $(RSTRIP) $(IDIR_LIBOL)
- $(IPKG_BUILD) $(IDIR_LIBOL) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libol.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/libol-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libol $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libol.{*a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libol.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/libol-config \
- $(STAGING_DIR)/usr/include/libol \
- $(STAGING_DIR)/usr/lib/libol.{*a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
diff --git a/openwrt/package/libol/ipkg/libol.control b/openwrt/package/libol/ipkg/libol.control
deleted file mode 100644
index c65ae38591..0000000000
--- a/openwrt/package/libol/ipkg/libol.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libol
-Section: libs
-Description: Support library for syslog-ng
-Priority: optional
diff --git a/openwrt/package/libosip2/Config.in b/openwrt/package/libosip2/Config.in
deleted file mode 100644
index 456865c7b3..0000000000
--- a/openwrt/package/libosip2/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_LIBOSIP2
- prompt "libosip2.......................... The GNU oSIP library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPTHREAD
- help
- GNU oSIP library, a Session Initiation Protocol (SIP) implementation
-
- http://www.gnu.org/software/osip/
diff --git a/openwrt/package/libosip2/Makefile b/openwrt/package/libosip2/Makefile
deleted file mode 100644
index bacf072872..0000000000
--- a/openwrt/package/libosip2/Makefile
+++ /dev/null
@@ -1,90 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libosip2
-PKG_VERSION:=2.2.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=f1237af0250c59b318bd64a59f5750ea
-
-PKG_SOURCE_URL:=@GNU/osip
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBOSIP2,libosip2,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --with-gnu-ld \
- --disable-debug \
- --disable-trace \
- --enable-pthread \
- --enable-semaphore \
- --enable-ntimer \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBOSIP2):
- install -m0755 -d $(IDIR_LIBOSIP2)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libosip{,parser}2.so.* $(IDIR_LIBOSIP2)/usr/lib/
- $(RSTRIP) $(IDIR_LIBOSIP2)
- $(IPKG_BUILD) $(IDIR_LIBOSIP2) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libosip2.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/osip{,parser}2 $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libosip{,parser}2.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libosip2.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libosip2.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/osip{,parser}2 \
- $(STAGING_DIR)/usr/lib/libosip{,parser}2.{a,so*} \
- $(STAGING_DIR)/usr/lib/pkgconfig/libosip2.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libosip2/ipkg/libosip2.control b/openwrt/package/libosip2/ipkg/libosip2.control
deleted file mode 100644
index 706c3e465e..0000000000
--- a/openwrt/package/libosip2/ipkg/libosip2.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libosip2
-Priority: optional
-Section: libs
-Description: GNU oSIP library, a SIP (Session Initiation Protocol) implementation
-Depends: libpthread
diff --git a/openwrt/package/libpcap/Config.in b/openwrt/package/libpcap/Config.in
deleted file mode 100644
index d2075647e1..0000000000
--- a/openwrt/package/libpcap/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_LIBPCAP
- prompt "libpcap........................... Low-level packet capture library"
- tristate
- default m if CONFIG_DEVEL
- help
- A system-independent library for user-level network packet capture.
-
- http://www.tcpdump.org/
-
diff --git a/openwrt/package/libpcap/Makefile b/openwrt/package/libpcap/Makefile
deleted file mode 100644
index 67bc3f7fdc..0000000000
--- a/openwrt/package/libpcap/Makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libpcap
-PKG_VERSION:=0.9.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=79025766e8027df154cb1f32de8a7974
-
-PKG_SOURCE_URL:=http://www.tcpdump.org/release/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBPCAP,libpcap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ac_cv_linux_vers=$(BR2_DEFAULT_KERNEL_HEADERS) \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --disable-yydebug \
- --enable-ipv6 \
- --with-build-cc=$(HOSTCC) \
- --with-pcap=linux \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CCOPT="$(TARGET_CFLAGS) -I$(BUILD_DIR)/linux/include" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBPCAP):
- install -m0755 -d $(IDIR_LIBPCAP)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcap.so.* $(IDIR_LIBPCAP)/usr/lib/
- $(RSTRIP) $(IDIR_LIBPCAP)
- $(IPKG_BUILD) $(IDIR_LIBPCAP) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libpcap.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/pcap* $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcap.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $(STAGING_DIR)/usr/lib/libpcap.so
-
-install-dev: $(STAGING_DIR)/usr/lib/libpcap.so
-
-uninstall-dev:
- rm -rf $(STAGING_DIR)/usr/include/pcap*
- rm -rf $(STAGING_DIR)/usr/lib/libpcap.{a,so*}
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libpcap/ipkg/libpcap.control b/openwrt/package/libpcap/ipkg/libpcap.control
deleted file mode 100644
index a743ea4fcb..0000000000
--- a/openwrt/package/libpcap/ipkg/libpcap.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libpcap
-Priority: optional
-Section: libs
-Description: a low-level packet capture library
diff --git a/openwrt/package/libpcap/patches/100-shared-lib.patch b/openwrt/package/libpcap/patches/100-shared-lib.patch
deleted file mode 100644
index 54cc774a37..0000000000
--- a/openwrt/package/libpcap/patches/100-shared-lib.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-diff -urN libpcap-0.9.4.orig/Makefile.in libpcap-0.9.4/Makefile.in
---- libpcap-0.9.4.orig/Makefile.in 2003-12-15 02:35:03.000000000 +0100
-+++ libpcap-0.9.4/Makefile.in 2006-02-05 16:56:18.000000000 +0100
-@@ -37,6 +37,15 @@
- srcdir = @srcdir@
- VPATH = @srcdir@
-
-+# some defines for shared library compilation
-+MAJ=0.9
-+MIN=4
-+VERSION=$(MAJ).$(MIN)
-+LIBNAME=pcap
-+LIBRARY=lib$(LIBNAME).a
-+SOLIBRARY=lib$(LIBNAME).so
-+SHAREDLIB=$(SOLIBRARY).$(VERSION)
-+
- #
- # You shouldn't need to edit anything below.
- #
-@@ -50,6 +59,7 @@
-
- # Standard CFLAGS
- CFLAGS = $(CCOPT) $(INCLS) $(DEFS)
-+CFLAGS_SHARED = -shared -Wl,-soname,$(SOLIBRARY).$(MAJ)
-
- INSTALL = @INSTALL@
- INSTALL_PROGRAM = @INSTALL_PROGRAM@
-@@ -70,7 +80,12 @@
- .c.o:
- @rm -f $@
- $(CC) $(CFLAGS) -c $(srcdir)/$*.c
-+ $(CC) $(CFLAGS) -c -o $@ $(srcdir)/$*.c
-
-+%_pic.o: %.c
-+ @rm -f $@
-+ $(CC) -fPIC $(CFLAGS) -c -o $@ $(srcdir)/$*.c
-+
- PSRC = pcap-@V_PCAP@.c
- FSRC = fad-@V_FINDALLDEVS@.c
- SSRC = @SSRC@
-@@ -84,6 +99,7 @@
- # We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot
- # hack the extra indirection
- OBJ = $(PSRC:.c=.o) $(FSRC:.c=.o) $(CSRC:.c=.o) $(SSRC:.c=.o) $(GENSRC:.c=.o) $(LIBOBJS)
-+OBJ_PIC = $(PSRC:.c=_pic.o) $(FSRC:.c=_pic.o) $(CSRC:.c=_pic.o) $(SSRC:.c=_pic.o) $(GENSRC:.c=_pic.o)
- HDR = pcap.h pcap-int.h pcap-namedb.h pcap-nit.h pcap-pf.h \
- ethertype.h gencode.h gnuc.h
- GENHDR = \
-@@ -95,15 +111,23 @@
- TAGFILES = \
- $(SRC) $(HDR) $(TAGHDR)
-
--CLEANFILES = $(OBJ) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c
-+CLEANFILES = $(OBJ) $(OBJ_PIC) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c libpcap.so*
-
--all: libpcap.a
-+all: libpcap.a $(SHAREDLIB)
-
- libpcap.a: $(OBJ)
- @rm -f $@
- ar rc $@ $(OBJ) $(LIBS)
- $(RANLIB) $@
-
-+$(SHAREDLIB): $(OBJ_PIC)
-+ -@rm -f $@
-+ -@rm -f $(SOLIBRARY) $(SOLIBRARY).$(MAJ)
-+ $(CC) $(CFLAGS_SHARED) -o $(SHAREDLIB) $(OBJ_PIC) -lc
-+ ln -s $(SHAREDLIB) $(SOLIBRARY).$(MAJ)
-+ ln -s $(SOLIBRARY).$(MAJ) $(SOLIBRARY)
-+
-+
- shared: libpcap.$(DYEXT)
-
- #
-@@ -129,6 +153,10 @@
- scanner.o: scanner.c tokdefs.h
- $(CC) $(CFLAGS) -c scanner.c
-
-+scanner_pic.o: scanner.c tokdefs.h
-+ $(CC) -fPIC $(CFLAGS) -o $@ -c scanner.c
-+
-+
- pcap.o: version.h
-
- tokdefs.h: grammar.c
-@@ -142,9 +170,16 @@
- @rm -f $@
- $(CC) $(CFLAGS) -Dyylval=pcap_lval -c grammar.c
-
-+grammar_pic.o: grammar.c
-+ @rm -f $@
-+ $(CC) -fPIC $(CFLAGS) -Dyylval=pcap_lval -o $@ -c grammar.c
-+
- version.o: version.c
- $(CC) $(CFLAGS) -c version.c
-
-+version_pic.o: version.c
-+ $(CC) -fPIC $(CFLAGS) -c version.c -o $@
-+
- snprintf.o: $(srcdir)/missing/snprintf.c
- $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c
-
-@@ -170,10 +205,17 @@
- bpf_filter.o: bpf_filter.c
- $(CC) $(CFLAGS) -c bpf_filter.c
-
-+bpf_filter_pic.o: bpf_filter.c
-+ $(CC) -fPIC $(CFLAGS) -c bpf_filter.c -o $@
-+
-+
- install: libpcap.a
- [ -d $(DESTDIR)$(libdir) ] || \
- (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir))
- $(INSTALL_DATA) libpcap.a $(DESTDIR)$(libdir)/libpcap.a
-+ $(INSTALL_DATA) $(SHAREDLIB) $(DESTDIR)$(libdir)/
-+ ln -sf $(SHAREDLIB) $(DESTDIR)$(libdir)/$(SOLIBRARY).$(MAJ)
-+ ln -sf $(SOLIBRARY).$(MAJ) $(DESTDIR)$(libdir)/$(SOLIBRARY)
- $(RANLIB) $(DESTDIR)$(libdir)/libpcap.a
- [ -d $(DESTDIR)$(includedir) ] || \
- (mkdir -p $(DESTDIR)$(includedir); chmod 755 $(DESTDIR)$(includedir))
diff --git a/openwrt/package/libpcap/patches/101-cross-compile-fix.patch b/openwrt/package/libpcap/patches/101-cross-compile-fix.patch
deleted file mode 100644
index 5ba78adaef..0000000000
--- a/openwrt/package/libpcap/patches/101-cross-compile-fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN libpcap-0.9.4.orig/Makefile.in libpcap-0.9.4/Makefile.in
---- libpcap-0.9.4.orig/Makefile.in 2006-02-05 16:57:16.000000000 +0100
-+++ libpcap-0.9.4/Makefile.in 2006-02-05 16:57:03.000000000 +0100
-@@ -117,7 +117,7 @@
-
- libpcap.a: $(OBJ)
- @rm -f $@
-- ar rc $@ $(OBJ) $(LIBS)
-+ $(AR) rc $@ $(OBJ) $(LIBS)
- $(RANLIB) $@
-
- $(SHAREDLIB): $(OBJ_PIC)
diff --git a/openwrt/package/libpcap/patches/102-alt-ether.patch b/openwrt/package/libpcap/patches/102-alt-ether.patch
deleted file mode 100644
index 347265d6e9..0000000000
--- a/openwrt/package/libpcap/patches/102-alt-ether.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff -urN libpcap-0.9.4.orig/nametoaddr.c libpcap-0.9.4/nametoaddr.c
---- libpcap-0.9.4.orig/nametoaddr.c 2005-04-20 13:13:51.000000000 +0200
-+++ libpcap-0.9.4/nametoaddr.c 2006-02-05 16:58:46.000000000 +0100
-@@ -410,7 +410,7 @@
- e = ep = (u_char *)malloc(6);
-
- while (*s) {
-- if (*s == ':')
-+ if (*s == ':' || *s == '.')
- s += 1;
- d = xdtoi(*s++);
- if (isxdigit((unsigned char)*s)) {
-diff -urN libpcap-0.9.4.orig/scanner.l libpcap-0.9.4/scanner.l
---- libpcap-0.9.4.orig/scanner.l 2005-09-05 11:08:07.000000000 +0200
-+++ libpcap-0.9.4/scanner.l 2006-02-05 17:00:13.000000000 +0100
-@@ -80,6 +80,7 @@
- N ([0-9]+|(0X|0x)[0-9A-Fa-f]+)
- B ([0-9A-Fa-f][0-9A-Fa-f]?)
- W ([0-9A-Fa-f][0-9A-Fa-f]?[0-9A-Fa-f]?[0-9A-Fa-f]?)
-+X [0-9A-Fa-f]
-
- %a 16000
- %o 19000
-@@ -306,7 +307,7 @@
- {N} { yylval.i = stoi((char *)yytext); return NUM; }
- ({N}\.{N})|({N}\.{N}\.{N})|({N}\.{N}\.{N}\.{N}) {
- yylval.s = sdup((char *)yytext); return HID; }
--{B}:{B}:{B}:{B}:{B}:{B} { yylval.e = pcap_ether_aton((char *)yytext);
-+({B}:{B}:{B}:{B}:{B}:{B})|({B}\.{B}\.{B}\.{B}\.{B}\.{B}) { yylval.e = pcap_ether_aton((char *)yytext);
- return EID; }
- {V6} {
- #ifdef INET6
-@@ -324,6 +325,7 @@
- #endif /*INET6*/
- }
- {B}:+({B}:+)+ { bpf_error("bogus ethernet address %s", yytext); }
-+{X}{12} { yylval.e = pcap_ether_aton((char *)yytext); return EID;}
- icmptype { yylval.i = 0; return NUM; }
- icmpcode { yylval.i = 1; return NUM; }
- icmp-echoreply { yylval.i = 0; return NUM; }
diff --git a/openwrt/package/libpng/Config.in b/openwrt/package/libpng/Config.in
deleted file mode 100644
index 1b51de1751..0000000000
--- a/openwrt/package/libpng/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_LIBPNG
- prompt "libpng............................ PNG (Portable Network Graphics) format files handling library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_ZLIB
- help
- A library for reading/writing PNG files
-
- http://www.libpng.org/pub/png/libpng.html
-
diff --git a/openwrt/package/libpng/Makefile b/openwrt/package/libpng/Makefile
deleted file mode 100644
index 2c6aebba0e..0000000000
--- a/openwrt/package/libpng/Makefile
+++ /dev/null
@@ -1,93 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libpng
-PKG_VERSION:=1.2.8
-PKG_RELEASE:=1
-PKG_MD5SUM:=e5a39003eed16103cbbd3b6a8bc6b1f9
-
-PKG_SOURCE_URL:=@SF/libpng
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-config.tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-config
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBPNG,libpng,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --with-zlib=$(STAGING_DIR)/usr/ \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBPNG):
- install -d -m0755 $(IDIR_LIBPNG)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpng{,12}.so.* $(IDIR_LIBPNG)/usr/lib/
- $(RSTRIP) $(IDIR_LIBPNG)
- $(IPKG_BUILD) $(IDIR_LIBPNG) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libpng.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/libpng{,12}-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/png{,conf}.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libpng $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpng{,12}.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpng{,12}.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I$${includedir}/libpng12,,g' $(STAGING_DIR)/usr/lib/pkgconfig/libpng{,12}.pc
- $(SED) 's,^[ILR]_opts=".\+",,g' $(STAGING_DIR)/usr/bin/libpng*-config
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libpng.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/libpng{,12}-config \
- $(STAGING_DIR)/usr/include/png{,conf}.h \
- $(STAGING_DIR)/usr/include/libpng \
- $(STAGING_DIR)/usr/lib/libpng{,12}.{a,so*} \
- $(STAGING_DIR)/usr/lib/pkgconfig/libpng{,12}.pc
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
diff --git a/openwrt/package/libpng/ipkg/libpng.control b/openwrt/package/libpng/ipkg/libpng.control
deleted file mode 100644
index 96c91b4de2..0000000000
--- a/openwrt/package/libpng/ipkg/libpng.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libpng
-Priority: optional
-Section: libs
-Depends: zlib
-Description: A library for reading/writing PNG images
diff --git a/openwrt/package/libpng/patches/100-config_fix.patch b/openwrt/package/libpng/patches/100-config_fix.patch
deleted file mode 100644
index 453d271096..0000000000
--- a/openwrt/package/libpng/patches/100-config_fix.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- libpng3-1.2.5.0.orig/scripts/libpng-config-body.in
-+++ libpng3-1.2.5.0/scripts/libpng-config-body.in
-@@ -83,6 +83,7 @@
-
- --static)
- R_opts=""
-+ libs=${all_libs}
- ;;
-
- *)
---- libpng3-1.2.5.0.orig/scripts/libpng.pc.in
-+++ libpng3-1.2.5.0/scripts/libpng.pc.in
-@@ -7,5 +7,5 @@
- Name: libpng12
- Description: Loads and saves PNG files
- Version: 1.2.8
--Libs: -L${libdir} -lpng12 -lz -lm
-+Libs: -lpng12
- Cflags: -I${includedir}/libpng12
diff --git a/openwrt/package/libpng/patches/101-pkgconfig-install.patch b/openwrt/package/libpng/patches/101-pkgconfig-install.patch
deleted file mode 100644
index 7f362fbc3b..0000000000
--- a/openwrt/package/libpng/patches/101-pkgconfig-install.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- libpng-1.2.8-config/Makefile.in.orig 2004-12-03 01:14:51.000000000 +0100
-+++ libpng-1.2.8-config/Makefile.in 2005-05-18 14:17:31.000000000 +0200
-@@ -874,13 +874,13 @@
- cp libpng.pc libpng12.pc
-
- install-data-local: libpng.pc libpng12.pc
-- @INSTALL@ -d @PKGCONFIGDIR@
-- @INSTALL_DATA@ libpng.pc @PKGCONFIGDIR@
-- @INSTALL_DATA@ libpng12.pc @PKGCONFIGDIR@
-+ @INSTALL@ -d $(DESTDIR)@PKGCONFIGDIR@
-+ @INSTALL_DATA@ libpng.pc $(DESTDIR)@PKGCONFIGDIR@
-+ @INSTALL_DATA@ libpng12.pc $(DESTDIR)@PKGCONFIGDIR@
-
- uninstall-local:
-- rm -f @PKGCONFIGDIR@/libpng.pc
-- rm -f @PKGCONFIGDIR@/libpng12.pc
-+ rm -f $(DESTDIR)@PKGCONFIGDIR@/libpng.pc
-+ rm -f $(DESTDIR)@PKGCONFIGDIR@/libpng12.pc
-
- libpng-config:
- ( cat ${srcdir}/scripts/libpng-config-head.in; \
diff --git a/openwrt/package/libpthread/Config.in b/openwrt/package/libpthread/Config.in
deleted file mode 100644
index fb6cb58416..0000000000
--- a/openwrt/package/libpthread/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_LIBPTHREAD
- prompt "libpthread........................ POSIX threads library"
- tristate
- default m if CONFIG_DEVEL
- help
- POSIX threads library
-
diff --git a/openwrt/package/libpthread/Makefile b/openwrt/package/libpthread/Makefile
deleted file mode 100644
index 7e6b8d42e1..0000000000
--- a/openwrt/package/libpthread/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libpthread
-PKG_VERSION:=0.9.28
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBPTHREAD,libpthread,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.prepared:
- mkdir -p $(PKG_BUILD_DIR)
- touch $@
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- touch $@
-
-$(IPKG_LIBPTHREAD): $(PKG_BUILD_DIR)/.built
- mkdir -p $(IDIR_LIBPTHREAD)/lib
- $(CP) $(STAGING_DIR)/lib/libpthread.so.* $(IDIR_LIBPTHREAD)/lib/
- $(CP) $(STAGING_DIR)/lib/libpthread-*.so $(IDIR_LIBPTHREAD)/lib/
- $(RSTRIP) $(IDIR_LIBPTHREAD)
- $(IPKG_BUILD) $(IDIR_LIBPTHREAD) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/libpthread/ipkg/libpthread.control b/openwrt/package/libpthread/ipkg/libpthread.control
deleted file mode 100644
index 73978c2ccc..0000000000
--- a/openwrt/package/libpthread/ipkg/libpthread.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libpthread
-Priority: optional
-Section: libs
-Description: POSIX threads library
diff --git a/openwrt/package/libtasn1/Config.in b/openwrt/package/libtasn1/Config.in
deleted file mode 100644
index 4553c25b23..0000000000
--- a/openwrt/package/libtasn1/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_LIBTASN1
- prompt "libtasn1.......................... An ASN.1 and DER structures manipulation library"
- tristate
-# default m if CONFIG_DEVEL
- default n
- help
- This is a library for Abstract Syntax Notation One (ASN.1) and
- Distinguish Encoding Rules (DER) manipulation.
-
- ftp://ftp.gnutls.org/pub/gnutls/libtasn1/
-
diff --git a/openwrt/package/libtasn1/Makefile b/openwrt/package/libtasn1/Makefile
deleted file mode 100644
index 9402aa53a9..0000000000
--- a/openwrt/package/libtasn1/Makefile
+++ /dev/null
@@ -1,102 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libtasn1
-PKG_VERSION:=0.2.13
-PKG_RELEASE:=0
-PKG_MD5SUM:=d124b11908cfb88883fe71472c25d53a
-
-PKG_SOURCE_URL:=ftp://ftp.gnutls.org/pub/gnutls/libtasn1/ \
- ftp://ftp.gnupg.org/gcrypt/alpha/gnutls/libtasn1/ \
- http://www.mirrors.wiretapped.net/security/network-security/gnutls/libtasn1/ \
- ftp://ftp.mirrors.wiretapped.net/pub/security/network-security/gnutls/libtasn1/ \
- http://josefsson.org/gnutls/releases/libtasn1/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBTASN1,libtasn1,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- touch configure.ac ; \
- touch acinclude.m4 ; \
- touch aclocal.m4 ; \
- touch Makefile.in ; \
- touch config.h.in ; \
- touch configure ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBTASN1):
- install -m0755 -d $(IDIR_LIBTASN1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libtasn1.so.* $(IDIR_LIBTASN1)/usr/lib/
- $(RSTRIP) $(IDIR_LIBTASN1)
- $(IPKG_BUILD) $(IDIR_LIBTASN1) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libtasn1.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/libtasn1-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libtasn1.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libtasn1.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/share/aclocal
- $(CP) $(PKG_INSTALL_DIR)/usr/share/aclocal/libtasn1.m4 $(STAGING_DIR)/usr/share/aclocal/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libtasn1.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/libtasn1-config \
- $(STAGING_DIR)/usr/include/libtasn1.h \
- $(STAGING_DIR)/usr/lib/libtasn1.{a,so*} \
- $(STAGING_DIR)/usr/share/aclocal/libtasn1.m4 \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/libtasn1/ipkg/libtasn1.control b/openwrt/package/libtasn1/ipkg/libtasn1.control
deleted file mode 100644
index 4a5c1f6f3d..0000000000
--- a/openwrt/package/libtasn1/ipkg/libtasn1.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libtasn1
-Priority: optional
-Section: libs
-Description: an ASN.1 and DER structures manipulation library
diff --git a/openwrt/package/libtasn1/patches/500-cross-compile.patch b/openwrt/package/libtasn1/patches/500-cross-compile.patch
deleted file mode 100644
index dadbf2b845..0000000000
--- a/openwrt/package/libtasn1/patches/500-cross-compile.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -ruN libtasn1-0.2.13-orig/configure libtasn1-0.2.13-1/configure
---- libtasn1-0.2.13-orig/configure 2004-12-15 19:40:02.000000000 +0100
-+++ libtasn1-0.2.13-1/configure 2005-03-15 22:35:56.000000000 +0100
-@@ -22448,8 +22448,8 @@
-
-
-
--LIBTASN1_LIBS="-L${libdir} -ltasn1 $LIBS"
--LIBTASN1_CFLAGS="-I${includedir}"
-+LIBTASN1_LIBS="-ltasn1 $LIBS"
-+LIBTASN1_CFLAGS=""
-
-
-
-diff -ruN libtasn1-0.2.13-orig/configure.in libtasn1-0.2.13-1/configure.in
---- libtasn1-0.2.13-orig/configure.in 2004-12-15 19:39:01.000000000 +0100
-+++ libtasn1-0.2.13-1/configure.in 2005-03-15 22:35:46.000000000 +0100
-@@ -85,8 +85,8 @@
- ])
- AM_PROG_LIBTOOL
-
--LIBTASN1_LIBS="-L${libdir} -ltasn1 $LIBS"
--LIBTASN1_CFLAGS="-I${includedir}"
-+LIBTASN1_LIBS="-ltasn1 $LIBS"
-+LIBTASN1_CFLAGS=""
-
- AC_SUBST(LIBTASN1_LIBS)
- AC_SUBST(LIBTASN1_CFLAGS)
diff --git a/openwrt/package/libtool/Config.in b/openwrt/package/libtool/Config.in
deleted file mode 100644
index 4cc721379b..0000000000
--- a/openwrt/package/libtool/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_COMPILE_LIBTOOL
- tristate
- depends BR2_PACKAGE_LIBLTDL
-
-config BR2_PACKAGE_LIBLTDL
- prompt "libltdl........................... A generic dynamic object loading library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_LIBTOOL
- help
- A generic dynamic object loading library.
-
- http://www.gnu.org/software/libtool/
-
diff --git a/openwrt/package/libtool/Makefile b/openwrt/package/libtool/Makefile
deleted file mode 100644
index f84d1711ee..0000000000
--- a/openwrt/package/libtool/Makefile
+++ /dev/null
@@ -1,79 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libtool
-PKG_VERSION:=1.5.14
-PKG_RELEASE:=1
-PKG_MD5SUM:=049bf67de9b0eb75cd943dafe3d749ec
-
-PKG_SOURCE_URL:=@GNU/libtool
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBLTDL,libltdl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBLTDL):
- install -m0755 -d $(IDIR_LIBLTDL)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libltdl.so.* $(IDIR_LIBLTDL)/usr/lib/
- $(RSTRIP) $(IDIR_LIBLTDL)
- $(IPKG_BUILD) $(IDIR_LIBLTDL) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libltdl.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/ltdl.h $(STAGING_DIR)/usr/include/
- mkdir -p $(I_LIBLTDL_DEV)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libltdl.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libltdl.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/ltdl.h \
- $(STAGING_DIR)/usr/lib/libltdl.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libtool/ipkg/libltdl.control b/openwrt/package/libtool/ipkg/libltdl.control
deleted file mode 100644
index d6a1777d3a..0000000000
--- a/openwrt/package/libtool/ipkg/libltdl.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libltdl
-Priority: optional
-Section: libs
-Description: a generic dynamic object loading library
diff --git a/openwrt/package/libtool/patches/01-force_dlopen_deplibs.patch b/openwrt/package/libtool/patches/01-force_dlopen_deplibs.patch
deleted file mode 100644
index dfcf56b320..0000000000
--- a/openwrt/package/libtool/patches/01-force_dlopen_deplibs.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -urN libtool-1.5.14/libltdl/acinclude.m4 libtool-1.5.14.new/libltdl/acinclude.m4
---- libtool-1.5.14/libltdl/acinclude.m4 2005-02-12 13:20:02.000000000 +0100
-+++ libtool-1.5.14.new/libltdl/acinclude.m4 2006-04-17 23:00:24.000000000 +0200
-@@ -6228,10 +6228,8 @@
- ;;
- esac
- ])
--if test "$libltdl_cv_sys_dlopen_deplibs" != yes; then
- AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
- [Define if the OS needs help to load dependent libraries for dlopen().])
--fi
- ])# AC_LTDL_SYS_DLOPEN_DEPLIBS
-
-
diff --git a/openwrt/package/libupnp/Config.in b/openwrt/package/libupnp/Config.in
deleted file mode 100644
index bbe822efe5..0000000000
--- a/openwrt/package/libupnp/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_LIBUPNP
- prompt "libupnp........................... Universal Plug and Play (UPnP) SDK library"
- tristate
- default m if CONFIG_DEVEL
- help
- The Universal Plug and Play (UPnP) SDK for Linux provides support
- for building UPnP-compliant control points, devices, and bridges
- on Linux.
-
- http://upnp.sourceforge.net/
-
- Depends: libpthread
-
diff --git a/openwrt/package/libupnp/Makefile b/openwrt/package/libupnp/Makefile
deleted file mode 100644
index 6e862722e6..0000000000
--- a/openwrt/package/libupnp/Makefile
+++ /dev/null
@@ -1,58 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libupnp
-PKG_VERSION:=1.2.1a
-PKG_RELEASE:=1
-PKG_MD5SUM:=e72b3550bf064eedf080f16f09688891
-
-PKG_SOURCE_URL:=@SF/upnp
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBUPNP,libupnp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- $(MAKE) -C $(PKG_BUILD_DIR)/upnp \
- $(TARGET_CONFIGURE_OPTS) \
- OPT_FLAGS="$(TARGET_CFLAGS)" \
- STRIP=/bin/true
- touch $@
-
-$(IPKG_LIBUPNP):
- install -m0755 -d $(IDIR_LIBUPNP)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/upnp/bin/libixml.so $(IDIR_LIBUPNP)/usr/lib/ ; \
- $(CP) $(PKG_BUILD_DIR)/upnp/bin/libthreadutil.so $(IDIR_LIBUPNP)/usr/lib/ ; \
- $(CP) $(PKG_BUILD_DIR)/upnp/bin/libupnp.so $(IDIR_LIBUPNP)/usr/lib/ ; \
- $(RSTRIP) $(IDIR_LIBUPNP)
- $(IPKG_BUILD) $(IDIR_LIBUPNP) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libupnp.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include/upnp
- $(CP) $(PKG_BUILD_DIR)/upnp/inc/*.h $(STAGING_DIR)/usr/include/upnp/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/upnp/bin/libixml.so $(STAGING_DIR)/usr/lib/ ; \
- $(CP) $(PKG_BUILD_DIR)/upnp/bin/libthreadutil.so $(STAGING_DIR)/usr/lib/ ; \
- $(CP) $(PKG_BUILD_DIR)/upnp/bin/libupnp.so $(STAGING_DIR)/usr/lib/ ; \
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libupnp.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/upnp \
- $(STAGING_DIR)/usr/lib/libixml.so \
- $(STAGING_DIR)/usr/lib/libthreadutil.so \
- $(STAGING_DIR)/usr/lib/libupnp.so \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libupnp/ipkg/libupnp.control b/openwrt/package/libupnp/ipkg/libupnp.control
deleted file mode 100644
index 2ebe4f7a80..0000000000
--- a/openwrt/package/libupnp/ipkg/libupnp.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libupnp
-Priority: optional
-Section: libs
-Depends: libpthread
-Description: The Universal Plug and Play (UPnP) SDK library.
diff --git a/openwrt/package/libupnp/patches/libupnp-1.2.1a-gcc4.patch b/openwrt/package/libupnp/patches/libupnp-1.2.1a-gcc4.patch
deleted file mode 100644
index 2ea3f88052..0000000000
--- a/openwrt/package/libupnp/patches/libupnp-1.2.1a-gcc4.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Index: libupnp-1.2.1a/ixml/src/element.c
-===================================================================
---- libupnp-1.2.1a.orig/ixml/src/element.c
-+++ libupnp-1.2.1a/ixml/src/element.c
-@@ -454,9 +454,9 @@ ixmlElement_removeAttributeNode( IN IXML
- element->n.firstAttr = nextSib;
- }
-
-- ( IXML_Attr * ) attrNode->parentNode = NULL;
-- ( IXML_Attr * ) attrNode->prevSibling = NULL;
-- ( IXML_Attr * ) attrNode->nextSibling = NULL;
-+ attrNode->parentNode = NULL;
-+ attrNode->prevSibling = NULL;
-+ attrNode->nextSibling = NULL;
- *rtAttr = ( IXML_Attr * ) attrNode;
- return IXML_SUCCESS;
-
diff --git a/openwrt/package/libupnp/patches/opt-flags.patch b/openwrt/package/libupnp/patches/opt-flags.patch
deleted file mode 100644
index c6a8ce5996..0000000000
--- a/openwrt/package/libupnp/patches/opt-flags.patch
+++ /dev/null
@@ -1,315 +0,0 @@
-diff -ruN libupnp-1.2.1-orig/ixml/src/Makefile libupnp-1.2.1-1/ixml/src/Makefile
---- libupnp-1.2.1-orig/ixml/src/Makefile 2003-01-14 23:06:12.000000000 +0100
-+++ libupnp-1.2.1-1/ixml/src/Makefile 2005-05-15 19:32:46.000000000 +0200
-@@ -47,6 +47,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- ifeq ($(INSURE), 1)
- CC = insure
- endif
-@@ -71,7 +73,7 @@
- ifeq ($(DEBUG),1)
- DEBUG_FLAGS = -O -g -DDEBUG
- else
-- DEBUG_FLAGS = -Os -DNDEBUG
-+ DEBUG_FLAGS = $(OPT_FLAGS) -DNDEBUG
- STRIPU = $(STRIP) $(OBJ_DIR)/$(TARGET_OUTPUT)
- endif
-
-diff -ruN libupnp-1.2.1-orig/threadutil/src/Makefile libupnp-1.2.1-1/threadutil/src/Makefile
---- libupnp-1.2.1-orig/threadutil/src/Makefile 2003-01-14 23:06:12.000000000 +0100
-+++ libupnp-1.2.1-1/threadutil/src/Makefile 2005-05-15 19:32:33.000000000 +0200
-@@ -44,6 +44,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- DEPDIR = .deps
- df = $(DEPDIR)/$(*F)
-
-@@ -74,7 +76,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- CLEAN_PATH=debug/$(DIR_PATH)
- else
--DEBUG_FLAGS += -Os -DNO_DEBUG -DNDEBUG
-+DEBUG_FLAGS += $(OPT_FLAGS) -DNO_DEBUG -DNDEBUG
- LOCALDIR +=../bin/$(DIR_PATH)
- TARGET_OUTPUT = libthreadutil.so
- OBJ_DIR = obj/$(DIR_PATH)
-diff -ruN libupnp-1.2.1-orig/upnp/src/api/makefile libupnp-1.2.1-1/upnp/src/api/makefile
---- libupnp-1.2.1-orig/upnp/src/api/makefile 2003-01-14 23:06:13.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/api/makefile 2005-05-15 19:33:04.000000000 +0200
-@@ -43,6 +43,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- ifeq ($(INSURE), 1)
- CC = insure
- endif
-@@ -64,7 +66,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- UPNP_LIB_DIR = ../lib/debug/$(DIR_PATH)
- else
--CFLAGS += -Os -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -DNDEBUG
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = ../lib/$(DIR_PATH)
- endif
-diff -ruN libupnp-1.2.1-orig/upnp/src/gena/Makefile libupnp-1.2.1-1/upnp/src/gena/Makefile
---- libupnp-1.2.1-orig/upnp/src/gena/Makefile 2003-01-14 23:06:13.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/gena/Makefile 2005-05-15 19:33:32.000000000 +0200
-@@ -43,6 +43,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- ifeq ($(INSURE),1)
- CC=insure
- endif
-@@ -60,7 +62,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/debug/$(DIR_PATH)
- else
--CFLAGS += -Os -DNO_DEBUG -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -DNO_DEBUG -DNDEBUG
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/$(DIR_PATH)
- endif
-diff -ruN libupnp-1.2.1-orig/upnp/src/genlib/client_table/Makefile libupnp-1.2.1-1/upnp/src/genlib/client_table/Makefile
---- libupnp-1.2.1-orig/upnp/src/genlib/client_table/Makefile 2003-01-14 23:06:13.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/genlib/client_table/Makefile 2005-05-15 19:33:41.000000000 +0200
-@@ -44,6 +44,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- ifeq ($(INSURE),1)
- CC=insure
- endif
-@@ -73,7 +75,7 @@
- else
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = ../../lib/$(DIR_PATH)
--CFLAGS += -Os -D_REENTRANT -DNO_DEBUG -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -D_REENTRANT -DNO_DEBUG -DNDEBUG
- endif
-
- TARGET_OUTPUT = $(UPNP_LIB_DIR)client_table.o
-diff -ruN libupnp-1.2.1-orig/upnp/src/genlib/miniserver/Makefile libupnp-1.2.1-1/upnp/src/genlib/miniserver/Makefile
---- libupnp-1.2.1-orig/upnp/src/genlib/miniserver/Makefile 2003-01-14 23:06:13.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/genlib/miniserver/Makefile 2005-05-15 19:33:56.000000000 +0200
-@@ -44,6 +44,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- ifeq ($(INSURE),1)
- CC=insure
- endif
-@@ -60,7 +62,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- UPNP_LIB_DIR = ../../lib/debug/$(DIR_PATH)
- else
--CFLAGS += -Os -DNO_DEBUG -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -DNO_DEBUG -DNDEBUG
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = ../../lib/$(DIR_PATH)
- endif
-diff -ruN libupnp-1.2.1-orig/upnp/src/genlib/net/Makefile libupnp-1.2.1-1/upnp/src/genlib/net/Makefile
---- libupnp-1.2.1-orig/upnp/src/genlib/net/Makefile 2003-01-14 23:06:13.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/genlib/net/Makefile 2005-05-15 19:34:07.000000000 +0200
-@@ -44,6 +44,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- LIBS=../../lib
- UPNP_INC_DIR = -I../../inc -I../../../inc -I ../../../../threadutil/src/win32 \
- -I ../../../../threadutil/src -I ../../../../ixml/inc
-@@ -59,7 +61,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/debug/$(DIR_PATH)
- else
--CFLAGS += -Os -DNO_DEBUG -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -DNO_DEBUG -DNDEBUG
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/$(DIR_PATH)
- endif
-diff -ruN libupnp-1.2.1-orig/upnp/src/genlib/net/http/Makefile libupnp-1.2.1-1/upnp/src/genlib/net/http/Makefile
---- libupnp-1.2.1-orig/upnp/src/genlib/net/http/Makefile 2003-01-14 23:06:13.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/genlib/net/http/Makefile 2005-05-15 19:34:18.000000000 +0200
-@@ -44,6 +44,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- UPNP_INC_DIR = -I ../../../../inc -I ../../../inc \
- -I ../../../../../threadutil/src/win32 \
- -I ../../../../../threadutil/src -I ../../../../../ixml/inc
-@@ -57,7 +59,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/debug/$(DIR_PATH)
- else
--CFLAGS += -Os -DNO_DEBUG -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -DNO_DEBUG -DNDEBUG
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/$(DIR_PATH)
- endif
-diff -ruN libupnp-1.2.1-orig/upnp/src/genlib/net/uri/makefile libupnp-1.2.1-1/upnp/src/genlib/net/uri/makefile
---- libupnp-1.2.1-orig/upnp/src/genlib/net/uri/makefile 2003-01-14 23:06:13.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/genlib/net/uri/makefile 2005-05-15 19:35:22.000000000 +0200
-@@ -44,6 +44,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- LIBS = ../../../lib
-
-
-@@ -59,7 +61,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/debug/$(DIR_PATH)
- else
--CFLAGS += -Os -DNO_DEBUG -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -DNO_DEBUG -DNDEBUG
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/$(DIR_PATH)
- endif
-diff -ruN libupnp-1.2.1-orig/upnp/src/genlib/service_table/Makefile libupnp-1.2.1-1/upnp/src/genlib/service_table/Makefile
---- libupnp-1.2.1-orig/upnp/src/genlib/service_table/Makefile 2003-01-14 23:06:14.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/genlib/service_table/Makefile 2005-05-15 19:35:33.000000000 +0200
-@@ -44,6 +44,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- ifeq ($(INSURE),1)
- CC=insure
- endif
-@@ -61,7 +63,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/debug/$(DIR_PATH)
- else
--CFLAGS += -Os -DNO_DEBUG -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -DNO_DEBUG -DNDEBUG
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/$(DIR_PATH)
- endif
-diff -ruN libupnp-1.2.1-orig/upnp/src/genlib/util/Makefile libupnp-1.2.1-1/upnp/src/genlib/util/Makefile
---- libupnp-1.2.1-orig/upnp/src/genlib/util/Makefile 2003-01-14 23:06:14.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/genlib/util/Makefile 2005-05-15 19:35:44.000000000 +0200
-@@ -44,6 +44,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- ifeq ($(INSURE),1)
- CC=insure
- endif
-@@ -62,7 +64,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/debug/$(DIR_PATH)
- else
--CFLAGS += -Os -DNO_DEBUG -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -DNO_DEBUG -DNDEBUG
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/$(DIR_PATH)
- endif
-diff -ruN libupnp-1.2.1-orig/upnp/src/soap/makefile libupnp-1.2.1-1/upnp/src/soap/makefile
---- libupnp-1.2.1-orig/upnp/src/soap/makefile 2003-01-14 23:06:14.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/soap/makefile 2005-05-15 19:35:55.000000000 +0200
-@@ -44,6 +44,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- ifeq ($(INSURE),1)
- CC = insure
- endif
-@@ -61,7 +63,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/debug/$(DIR_PATH)
- else
--CFLAGS += -Os -DNO_DEBUG -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -DNO_DEBUG -DNDEBUG
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/$(DIR_PATH)
- endif
-diff -ruN libupnp-1.2.1-orig/upnp/src/ssdp/makefile libupnp-1.2.1-1/upnp/src/ssdp/makefile
---- libupnp-1.2.1-orig/upnp/src/ssdp/makefile 2003-01-14 23:06:14.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/ssdp/makefile 2005-05-15 19:36:04.000000000 +0200
-@@ -44,6 +44,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- ifeq ($(INSURE),1)
- CC = insure
- endif
-@@ -61,7 +63,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/debug/$(DIR_PATH)
- else
--CFLAGS += -Os -DNO_DEBUG -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -DNO_DEBUG -DNDEBUG
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/$(DIR_PATH)
- endif
-diff -ruN libupnp-1.2.1-orig/upnp/src/urlconfig/Makefile libupnp-1.2.1-1/upnp/src/urlconfig/Makefile
---- libupnp-1.2.1-orig/upnp/src/urlconfig/Makefile 2003-01-14 23:06:14.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/urlconfig/Makefile 2005-05-15 19:36:30.000000000 +0200
-@@ -43,6 +43,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- ifeq ($(INSURE),1)
- CC = insure
- endif
-@@ -60,7 +62,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/debug/$(DIR_PATH)
- else
--CFLAGS += -Os -DNO_DEBUG -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -DNO_DEBUG -DNDEBUG
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/$(DIR_PATH)
- endif
-diff -ruN libupnp-1.2.1-orig/upnp/src/uuid/Makefile libupnp-1.2.1-1/upnp/src/uuid/Makefile
---- libupnp-1.2.1-orig/upnp/src/uuid/Makefile 2003-01-14 23:06:14.000000000 +0100
-+++ libupnp-1.2.1-1/upnp/src/uuid/Makefile 2005-05-15 19:36:53.000000000 +0200
-@@ -44,6 +44,8 @@
- STRIP = strip
- endif
-
-+OPT_FLAGS = -Os
-+
- ifeq ($(INSURE),1)
- CC = insure
- endif
-@@ -61,7 +63,7 @@
- OBJ_DIR = obj/debug/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/debug/$(DIR_PATH)
- else
--CFLAGS += -Os -DNO_DEBUG -DNDEBUG
-+CFLAGS += $(OPT_FLAGS) -DNO_DEBUG -DNDEBUG
- OBJ_DIR = obj/$(DIR_PATH)
- UPNP_LIB_DIR = $(LIBS)/$(DIR_PATH)
- endif
diff --git a/openwrt/package/libusb/Config.in b/openwrt/package/libusb/Config.in
deleted file mode 100644
index d38581a9e3..0000000000
--- a/openwrt/package/libusb/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_LIBUSB
- prompt "libusb............................ A library for accessing Linux USB devices"
- tristate
- default m if CONFIG_DEVEL
- help
- A library for accessing Linux USB devices
-
- http://libusb.sourceforge.net/
-
diff --git a/openwrt/package/libusb/Makefile b/openwrt/package/libusb/Makefile
deleted file mode 100644
index e6cf4ba2bb..0000000000
--- a/openwrt/package/libusb/Makefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libusb
-PKG_VERSION:=0.1.10a
-PKG_RELEASE:=1
-PKG_MD5SUM:=c6062b29acd2cef414bcc34e0decbdd1
-
-PKG_SOURCE_URL:=@SF/libusb
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBUSB,libusb,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ac_cv_c_bigendian=no \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) -j1 \
- CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld ARCH=$(ARCH) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBUSB):
- install -m0755 -d $(IDIR_LIBUSB)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libusb*.so.* $(IDIR_LIBUSB)/usr/lib/
- $(RSTRIP) $(IDIR_LIBUSB)
- $(IPKG_BUILD) $(IDIR_LIBUSB) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libusb.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/libusb-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/usb.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libusb*.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libusb.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/libusb-config \
- $(STAGING_DIR)/usr/include/usb.h \
- $(STAGING_DIR)/usr/lib/libusb*.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/libusb/ipkg/libusb.control b/openwrt/package/libusb/ipkg/libusb.control
deleted file mode 100644
index 599a217fc5..0000000000
--- a/openwrt/package/libusb/ipkg/libusb.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libusb
-Priority: optional
-Section: libs
-Description: a Library for accessing Linux USB devices
diff --git a/openwrt/package/libusb/patches/no-libusbpp.patch b/openwrt/package/libusb/patches/no-libusbpp.patch
deleted file mode 100644
index e9f48f14db..0000000000
--- a/openwrt/package/libusb/patches/no-libusbpp.patch
+++ /dev/null
@@ -1,105 +0,0 @@
---- libusb-0.1.10a.dev/Makefile.in.old 2005-04-20 21:49:04.000000000 +0200
-+++ libusb-0.1.10a.dev/Makefile.in 2005-04-20 21:50:23.000000000 +0200
-@@ -16,7 +16,7 @@
-
-
-
--SOURCES = $(libusb_la_SOURCES) $(libusbpp_la_SOURCES)
-+SOURCES = $(libusb_la_SOURCES)
-
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
-@@ -71,8 +71,8 @@
- am_libusb_la_OBJECTS = usb.lo error.lo descriptors.lo $(am__objects_1)
- libusb_la_OBJECTS = $(am_libusb_la_OBJECTS)
- libusbpp_la_LIBADD =
--am_libusbpp_la_OBJECTS = usbpp.lo
--libusbpp_la_OBJECTS = $(am_libusbpp_la_OBJECTS)
-+am_libusbpp_la_OBJECTS =
-+libusbpp_la_OBJECTS =
- binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
- SCRIPTS = $(bin_SCRIPTS)
- DEFAULT_INCLUDES =
-@@ -80,8 +80,7 @@
- am__depfiles_maybe = depfiles
- @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/bsd.Plo ./$(DEPDIR)/darwin.Plo \
- @AMDEP_TRUE@ ./$(DEPDIR)/descriptors.Plo ./$(DEPDIR)/error.Plo \
--@AMDEP_TRUE@ ./$(DEPDIR)/linux.Plo ./$(DEPDIR)/usb.Plo \
--@AMDEP_TRUE@ ./$(DEPDIR)/usbpp.Plo
-+@AMDEP_TRUE@ ./$(DEPDIR)/linux.Plo ./$(DEPDIR)/usb.Plo
- COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
- LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
-@@ -98,8 +97,8 @@
- CXXLD = $(CXX)
- CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
--SOURCES = $(libusb_la_SOURCES) $(libusbpp_la_SOURCES)
--DIST_SOURCES = $(am__libusb_la_SOURCES_DIST) $(libusbpp_la_SOURCES)
-+SOURCES = $(libusb_la_SOURCES)
-+DIST_SOURCES = $(am__libusb_la_SOURCES_DIST)
- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-exec-recursive install-info-recursive \
-@@ -250,7 +249,7 @@
- # require automake 1.4
- # gnu strictness chokes on README being autogenerated
- AUTOMAKE_OPTIONS = 1.4 foreign
--SUBDIRS = . tests doc
-+SUBDIRS = .
- AM_CFLAGS = $(CFLAGS_EXT)
- configincludedir = $(pkglibdir)/include
- bin_SCRIPTS = libusb-config
-@@ -259,7 +258,7 @@
- apidocs/footer.html apidocs/doxygen.css apidocs/doxygen.png
-
- EXTRA_libusb_la_SOURCE = linux.c linux.h bsd.c darwin.c
--lib_LTLIBRARIES = libusb.la libusbpp.la
-+lib_LTLIBRARIES = libusb.la
- @BSD_API_FALSE@@DARWIN_API_FALSE@@LINUX_API_FALSE@OS_SUPPORT =
- @BSD_API_FALSE@@DARWIN_API_TRUE@@LINUX_API_FALSE@OS_SUPPORT = darwin.c
- @BSD_API_TRUE@@LINUX_API_FALSE@OS_SUPPORT = bsd.c
-@@ -269,24 +268,18 @@
- AM_CPPFLAGS = -I.
- AM_CXXFLAGS =
- libusb_la_SOURCES = usb.c usbi.h error.c error.h descriptors.c $(OS_SUPPORT)
--libusbpp_la_SOURCES = usbpp.cpp usbpp.h
-+libusbpp_la_SOURCES =
-
- # Do not add usb.h to *_SOURCES, regardless of dependencies.
- # It would be added to the dist tarball, which it shouldn't be.
- nodist_include_HEADERS = usb.h
--include_HEADERS = usbpp.h
-+include_HEADERS =
- libusb_la_LDFLAGS = \
- -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
- -release $(LT_RELEASE) \
- -export-dynamic \
- $(LDADDS)
-
--libusbpp_la_LDFLAGS = \
-- -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
-- -release $(LT_RELEASE) \
-- -export-dynamic \
-- $(LDADDS) -lusb $(QT_LDFLAGS)
--
- all: config.h
- $(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-@@ -381,8 +374,6 @@
- done
- libusb.la: $(libusb_la_OBJECTS) $(libusb_la_DEPENDENCIES)
- $(LINK) -rpath $(libdir) $(libusb_la_LDFLAGS) $(libusb_la_OBJECTS) $(libusb_la_LIBADD) $(LIBS)
--libusbpp.la: $(libusbpp_la_OBJECTS) $(libusbpp_la_DEPENDENCIES)
-- $(CXXLINK) -rpath $(libdir) $(libusbpp_la_LDFLAGS) $(libusbpp_la_OBJECTS) $(libusbpp_la_LIBADD) $(LIBS)
- install-binSCRIPTS: $(bin_SCRIPTS)
- @$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
-@@ -415,7 +406,6 @@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linux.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usb.Plo@am__quote@
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usbpp.Plo@am__quote@
-
- .c.o:
- @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
diff --git a/openwrt/package/libvorbis/Config.in b/openwrt/package/libvorbis/Config.in
deleted file mode 100644
index 805f1f8ba7..0000000000
--- a/openwrt/package/libvorbis/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_LIBVORBIS
- prompt "libvorbis......................... The Vorbis General Audio Compression Codec library"
- tristate
- default n
- select BR2_PACKAGE_LIBOGG
- help
- The Vorbis General Audio Compression Codec library.
-
- http://www.vorbis.com/
-
diff --git a/openwrt/package/libvorbis/Makefile b/openwrt/package/libvorbis/Makefile
deleted file mode 100644
index ec36018f1c..0000000000
--- a/openwrt/package/libvorbis/Makefile
+++ /dev/null
@@ -1,104 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libvorbis
-PKG_VERSION:=1.1.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=37847626b8e1b53ae79a34714c7b3211
-
-PKG_SOURCE_URL:=http://downloads.xiph.org/releases/vorbis/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBVORBIS,libvorbis,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-# NOTE: check ./toolchain/libnotimpl
-# it implements those functions missing from the version of uClibc we're currently using
-# for libvorbis, they are cosf/sinf
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-lm -logg -lnotimpl" \
- PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- --with-ogg="$(STAGING_DIR)/usr" \
- --with-ogg-includes="$(STAGING_DIR)/usr/include" \
- --with-ogg-libraries="$(STAGING_DIR)/usr/lib" \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBVORBIS):
- install -m0755 -d $(IDIR_LIBVORBIS)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvorbis.so.* $(IDIR_LIBVORBIS)/usr/lib/
- $(RSTRIP) $(IDIR_LIBVORBIS)
- $(IPKG_BUILD) $(IDIR_LIBVORBIS) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libvorbis.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/vorbis $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvorbis.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvorbis{,enc,file}.so* $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/vorbis{,enc,file}.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I$${includedir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/vorbis{,enc,file}.pc
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/vorbis{,enc,file}.pc
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libvorbis.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/vorbis \
- $(STAGING_DIR)/usr/lib/libvorbis{,enc,file}.a \
- $(STAGING_DIR)/usr/lib/libvorbis{,enc,file}.so* \
- $(STAGING_DIR)/usr/lib/pkgconfig/vorbis{,enc,file}.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/libvorbis/ipkg/libvorbis.control b/openwrt/package/libvorbis/ipkg/libvorbis.control
deleted file mode 100644
index d122faa2e0..0000000000
--- a/openwrt/package/libvorbis/ipkg/libvorbis.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libvorbis
-Priority: optional
-Section: libs
-Description: The Vorbis General Audio Compression Codec library
diff --git a/openwrt/package/libvorbis/patches/100-no_examples.patch b/openwrt/package/libvorbis/patches/100-no_examples.patch
deleted file mode 100644
index 35c50a4c59..0000000000
--- a/openwrt/package/libvorbis/patches/100-no_examples.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur libvorbis-1.1.2/Makefile.in libvorbis-1.1.2-owrt/Makefile.in
---- libvorbis-1.1.2/Makefile.in 2005-11-28 06:43:44.000000000 +0100
-+++ libvorbis-1.1.2-owrt/Makefile.in 2006-01-29 21:55:23.000000000 +0100
-@@ -217,7 +217,7 @@
- target_os = @target_os@
- target_vendor = @target_vendor@
- AUTOMAKE_OPTIONS = foreign dist-zip
--SUBDIRS = lib include doc examples vq
-+SUBDIRS = lib include doc vq
- m4datadir = $(datadir)/aclocal
- m4data_DATA = vorbis.m4
- pkgconfigdir = $(libdir)/pkgconfig
diff --git a/openwrt/package/libvorbisidec/Config.in b/openwrt/package/libvorbisidec/Config.in
deleted file mode 100644
index 640e3e2aee..0000000000
--- a/openwrt/package/libvorbisidec/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_LIBVORBISIDEC
- prompt "libvorbisidec..................... A fixed-point implementation (Tremor) of libogg/libvorbis"
- tristate
- default m if CONFIG_DEVEL
- help
- libvorbisidec is "tremor", a fixed-point implementation of libvorbis.
- It also has libogg built-in. It is suitable as a replacement for
- libvorbis and libogg in tremor-aware applications.
- Tremor is a decoder only.
-
- http://http://wiki.xiph.org/index.php/Tremor
-
diff --git a/openwrt/package/libvorbisidec/Makefile b/openwrt/package/libvorbisidec/Makefile
deleted file mode 100644
index d668a0e9b7..0000000000
--- a/openwrt/package/libvorbisidec/Makefile
+++ /dev/null
@@ -1,91 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libvorbisidec
-PKG_VERSION:=1.2.0-dave
-PKG_RELEASE:=1
-PKG_MD5SUM:=cb8e51aab92ef164f8e0e8853f7164fa
-
-PKG_SOURCE_URL:=http://users.tpg.com.au/davico/openwrt/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBVORBISIDEC,libvorbisidec,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBVORBISIDEC):
- install -m0755 -d $(IDIR_LIBVORBISIDEC)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvorbisidec.so.* $(IDIR_LIBVORBISIDEC)/usr/lib/
- $(RSTRIP) $(IDIR_LIBVORBISIDEC)
- $(IPKG_BUILD) $(IDIR_LIBVORBISIDEC) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libvorbisidec.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/tremor $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvorbisidec.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvorbisidec.so* $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libvorbisidec.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/tremor \
- $(STAGING_DIR)/usr/lib/libvorbisidec.a \
- $(STAGING_DIR)/usr/lib/libvorbisidec.so* \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/libvorbisidec/ipkg/libvorbisidec.control b/openwrt/package/libvorbisidec/ipkg/libvorbisidec.control
deleted file mode 100644
index 41cd1e0378..0000000000
--- a/openwrt/package/libvorbisidec/ipkg/libvorbisidec.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libvorbisidec
-Priority: optional
-Section: libs
-Description: A fixed-point implementation (Tremor) of libogg/libvorbis"
diff --git a/openwrt/package/libxml2/Config.in b/openwrt/package/libxml2/Config.in
deleted file mode 100644
index f4632eb068..0000000000
--- a/openwrt/package/libxml2/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_LIBXML2
- prompt "libxml2........................... Gnome XML library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPTHREAD
- select BR2_PACKAGE_ZLIB
- help
- A library for manipulating XML and HTML resources.
-
- http://xmlsoft.org/
-
diff --git a/openwrt/package/libxml2/Makefile b/openwrt/package/libxml2/Makefile
deleted file mode 100644
index bf71ef70c6..0000000000
--- a/openwrt/package/libxml2/Makefile
+++ /dev/null
@@ -1,129 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libxml2
-PKG_VERSION:=2.6.20
-PKG_RELEASE:=1
-PKG_MD5SUM:=8f0b3ce721bda11401e656b90ba4e78c
-
-PKG_SOURCE_URL:=http://xmlsoft.org/sources/ \
- ftp://fr.rpmfind.net/pub/libxml/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBXML2,libxml2,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- --without-c14n \
- --without-catalog \
- --without-debug \
- --without-docbook \
- --with-html \
- --without-ftp \
- --without-http \
- --without-iconv \
- --without-iso8859x \
- --without-legacy \
- --with-output \
- --without-pattern \
- --without-push \
- --without-python \
- --with-reader \
- --without-readline \
- --without-regexps \
- --with-sax1 \
- --with-schemas \
- --with-threads \
- --with-tree \
- --with-valid \
- --with-writer \
- --with-xinclude \
- --with-xpath \
- --with-xptr \
- --with-zlib \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBXML2):
- install -m0755 -d $(IDIR_LIBXML2)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxml2.so.* $(IDIR_LIBXML2)/usr/lib/
- $(RSTRIP) $(IDIR_LIBXML2)
- $(IPKG_BUILD) $(IDIR_LIBXML2) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libxml2.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/xml2-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libxml2 $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxml2.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libxml-2.0.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I$${includedir}/libxml2,,g' $(STAGING_DIR)/usr/bin/xml2-config
- $(SED) 's,-I$${includedir},,g' $(STAGING_DIR)/usr/bin/xml2-config
- $(SED) 's,-I$(STAGING_DIR)/usr/include,,g' $(STAGING_DIR)/usr/bin/xml2-config
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/bin/xml2-config
- $(SED) 's,-L$(STAGING_DIR)/usr/lib,,g' $(STAGING_DIR)/usr/bin/xml2-config
- $(SED) 's,-I$${includedir}/libxml2,,g' $(STAGING_DIR)/usr/lib/pkgconfig/libxml-2.0.pc
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/libxml-2.0.pc
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libxml2.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/xml2-config \
- $(STAGING_DIR)/usr/include/libxml2 \
- $(STAGING_DIR)/usr/lib/libxml2.{a,so*} \
- $(STAGING_DIR)/usr/lib/pkgconfig/libxml-2.0.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/libxml2/ipkg/libxml2.control b/openwrt/package/libxml2/ipkg/libxml2.control
deleted file mode 100644
index 9274091879..0000000000
--- a/openwrt/package/libxml2/ipkg/libxml2.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libxml2
-Priority: optional
-Section: libs
-Description: Gnome XML library
-Depends: zlib
diff --git a/openwrt/package/libxslt/Config.in b/openwrt/package/libxslt/Config.in
deleted file mode 100644
index e4857fc12e..0000000000
--- a/openwrt/package/libxslt/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_LIBXSLT
- prompt "libxslt........................... Gnome XSLT library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBXML2
- help
- A library for XML transformation using XSLT.
-
- http://xmlsoft.org/XSLT/
-
diff --git a/openwrt/package/libxslt/Makefile b/openwrt/package/libxslt/Makefile
deleted file mode 100644
index a187f538cd..0000000000
--- a/openwrt/package/libxslt/Makefile
+++ /dev/null
@@ -1,110 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libxslt
-PKG_VERSION:=1.1.14
-PKG_RELEASE:=1
-PKG_MD5SUM:=db71660bb7d01ccd4e6be990af8d813b
-
-PKG_SOURCE_URL:=http://xmlsoft.org/sources/ \
- ftp://fr.rpmfind.net/pub/libxml/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBXSLT,libxslt,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include/libxml2" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- --with-libxml-prefix="$(STAGING_DIR)/usr" \
- --with-libxml-include-prefix="$(STAGING_DIR)/usr/include" \
- --with-libxml-libs-prefix="$(STAGING_DIR)/usr/lib" \
- --without-python \
- --without-crypto \
- --without-debug \
- --without-mem-debug \
- --without-debugger \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBXSLT):
- install -m0755 -d $(IDIR_LIBXSLT)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxslt.so.* $(IDIR_LIBXSLT)/usr/lib/
- $(RSTRIP) $(IDIR_LIBXSLT)
- $(IPKG_BUILD) $(IDIR_LIBXSLT) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libxslt.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/xslt-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libxslt $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxslt.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libxslt.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I$${includedir},,g' $(STAGING_DIR)/usr/bin/xslt-config
- $(SED) 's,-I$(STAGING_DIR)/usr/include,,g' $(STAGING_DIR)/usr/bin/xslt-config
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/bin/xslt-config
- $(SED) 's,-L$(STAGING_DIR)/usr/lib,,g' $(STAGING_DIR)/usr/bin/xslt-config
- $(SED) 's,-I$${includedir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/libxslt.pc
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/libxslt.pc
- $(SED) 's,-L$(STAGING_DIR)/usr/lib,,g' $(STAGING_DIR)/usr/lib/pkgconfig/libxslt.pc
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libxslt.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/xslt-config \
- $(STAGING_DIR)/usr/include/libxslt \
- $(STAGING_DIR)/usr/lib/libxslt.{a,so*} \
- $(STAGING_DIR)/usr/lib/pkgconfig/libxslt.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/libxslt/ipkg/libxslt.control b/openwrt/package/libxslt/ipkg/libxslt.control
deleted file mode 100644
index 7236bb147f..0000000000
--- a/openwrt/package/libxslt/ipkg/libxslt.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libxslt
-Priority: optional
-Section: libs
-Description: Gnome XML library
-Depends: libxml2
diff --git a/openwrt/package/lighttpd/Config.in b/openwrt/package/lighttpd/Config.in
deleted file mode 100644
index a083928241..0000000000
--- a/openwrt/package/lighttpd/Config.in
+++ /dev/null
@@ -1,106 +0,0 @@
-menu "lighttpd.......................... Flexible and lightweight web server"
-
-config BR2_PACKAGE_LIGHTTPD
- prompt "lighttpd.......................... Flexible and lightweight web server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_LIBPCRE
- help
- A flexible and lightweight web server.
-
- http://www.lighttpd.net/
-
- Depends: libopenssl, libpcre
-
-config BR2_PACKAGE_LIGHTTPD_MOD_ACCESSLOG
- prompt "lighttpd-mod-accesslog.......... Access logging module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_ALIAS
- prompt "lighttpd-mod-alias.............. Directory alias module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_AUTH
- prompt "lighttpd-mod-auth............... Authentication module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_CGI
- prompt "lighttpd-mod-cgi................ CGI module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_EVASIVE
- prompt "lighttpd-mod-evasive............ Evasive module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_EXPIRE
- prompt "lighttpd-mod-expire............. Expire module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_FASTCGI
- prompt "lighttpd-mod-fastcgi............ FastCGI module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_PROXY
- prompt "lighttpd-mod-proxy.............. Proxy module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_REDIRECT
- prompt "lighttpd-mod-redirect........... URL redirection module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_REWRITE
- prompt "lighttpd-mod-rewrite............ URL rewriting module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_SETENV
- prompt "lighttpd-mod-setenv............. Environment variable setting module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_SIMPLE_VHOST
- prompt "lighttpd-mod-simple-vhost....... Simple virtual hosting module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_SSI
- prompt "lighttpd-mod-ssi................ SSI module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_STATUS
- prompt "lighttpd-mod-status............. Server status display module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-config BR2_PACKAGE_LIGHTTPD_MOD_USERTRACK
- prompt "lighttpd-mod-usertrack.......... User tracking module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIGHTTPD
-
-endmenu
diff --git a/openwrt/package/lighttpd/Makefile b/openwrt/package/lighttpd/Makefile
deleted file mode 100644
index d0a88a65a2..0000000000
--- a/openwrt/package/lighttpd/Makefile
+++ /dev/null
@@ -1,133 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=lighttpd
-PKG_VERSION:=1.4.11
-PKG_RELEASE:=1
-PKG_MD5SUM:=f55eebb9815c94a7de35906bb557ecd3
-
-PKG_SOURCE_URL:=http://www.lighttpd.net/download/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-define PKG_mod_template
-
-$$(IPKG_$(1)):
- install -d -m0755 $$(IDIR_$(1))/usr/lib/lighttpd
- install -m0755 $(PKG_INSTALL_DIR)/usr/lib/lighttpd/mod_$(2).so $$(IDIR_$(1))/usr/lib/lighttpd/
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-$(eval $(call PKG_template,LIGHTTPD,lighttpd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_ACCESSLOG,lighttpd-mod-accesslog,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_ALIAS,lighttpd-mod-alias,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_AUTH,lighttpd-mod-auth,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_CGI,lighttpd-mod-cgi,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_EVASIVE,lighttpd-mod-evasive,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_EXPIRE,lighttpd-mod-expire,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_FASTCGI,lighttpd-mod-fastcgi,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_PROXY,lighttpd-mod-proxy,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_REDIRECT,lighttpd-mod-redirect,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_REWRITE,lighttpd-mod-rewrite,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_SETENV,lighttpd-mod-setenv,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_SIMPLE_VHOST,lighttpd-mod-simple-vhost,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_SSI,lighttpd-mod-ssi,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_STATUS,lighttpd-mod-status,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_USERTRACK,lighttpd-mod-usertrack,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIGHTTPD_MOD_WEBDAV,lighttpd-mod-webdav,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_ACCESSLOG,accesslog))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_ALIAS,alias))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_AUTH,auth))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_CGI,cgi))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_EVASIVE,evasive))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_EXPIRE,expire))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_FASTCGI,fastcgi))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_PROXY,proxy))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_REDIRECT,redirect))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_REWRITE,rewrite))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_SETENV,setenv))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_SIMPLE_VHOST,simple_vhost))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_SSI,ssi))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_STATUS,status))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_USERTRACK,usertrack))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_WEBDAV,webdav))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include/libxml2 -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- PCRE_LIB="-lpcre" \
- PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib/lighttpd \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc/lighttpd \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --without-attr \
- --without-bzip2 \
- --without-fam \
- --without-gdbm \
- --without-ldap \
- --without-lua \
- --without-memcache \
- --without-mysql \
- --with-openssl="$(STAGING_DIR)/usr" \
- --with-pcre \
- --without-valgrind \
- --with-webdav-props \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIGHTTPD):
- install -m0755 -d $(IDIR_LIGHTTPD)/etc
- install -m0644 ./files/lighttpd.conf $(IDIR_LIGHTTPD)/etc/
- install -m0755 -d $(IDIR_LIGHTTPD)/etc/default
- install -m0644 ./files/lighttpd.default $(IDIR_LIGHTTPD)/etc/default/lighttpd
- install -m0755 -d $(IDIR_LIGHTTPD)/etc/init.d
- install -m0755 ./files/lighttpd.init $(IDIR_LIGHTTPD)/etc/init.d/lighttpd
- install -m0755 -d $(IDIR_LIGHTTPD)/usr/lib/lighttpd
- for m in dirlisting indexfile staticfile; do \
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lighttpd/mod_$$m.so $(IDIR_LIGHTTPD)/usr/lib/lighttpd/ ; \
- done
- install -m0755 -d $(IDIR_LIGHTTPD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/lighttpd $(IDIR_LIGHTTPD)/usr/sbin/
- $(RSTRIP) $(IDIR_LIGHTTPD)
- $(IPKG_BUILD) $(IDIR_LIGHTTPD) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/lighttpd/files/lighttpd.conf b/openwrt/package/lighttpd/files/lighttpd.conf
deleted file mode 100644
index 6e5137740e..0000000000
--- a/openwrt/package/lighttpd/files/lighttpd.conf
+++ /dev/null
@@ -1,217 +0,0 @@
-# lighttpd configuration file
-#
-## modules to load
-# all other module should only be loaded if really neccesary
-# - saves some time
-# - saves memory
-#server.modules = (
-# "mod_rewrite",
-# "mod_redirect",
-# "mod_alias",
-# "mod_auth",
-# "mod_status",
-# "mod_setenv",
-# "mod_fastcgi",
-# "mod_proxy",
-# "mod_simple_vhost",
-# "mod_cgi",
-# "mod_ssi",
-# "mod_usertrack",
-# "mod_expire"
-#)
-
-## a static document-root, for virtual-hosting take look at the
-## server.virtual-* options
-server.document-root = "/www/"
-
-## where to send error-messages to
-#server.errorlog = "/var/log/lighttpd/error.log"
-
-## files to check for if .../ is requested
-index-file.names = ( "index.html", "default.html", "index.htm", "default.htm" )
-
-## mimetype mapping
-mimetype.assign = (
- ".pdf" => "application/pdf",
- ".class" => "application/octet-stream",
- ".pac" => "application/x-ns-proxy-autoconfig",
- ".swf" => "application/x-shockwave-flash",
- ".wav" => "audio/x-wav",
- ".gif" => "image/gif",
- ".jpg" => "image/jpeg",
- ".jpeg" => "image/jpeg",
- ".png" => "image/png",
- ".css" => "text/css",
- ".html" => "text/html",
- ".htm" => "text/html",
- ".js" => "text/javascript",
- ".txt" => "text/plain",
- ".dtd" => "text/xml",
- ".xml" => "text/xml"
- )
-
-## Use the "Content-Type" extended attribute to obtain mime type if possible
-#mimetypes.use-xattr = "enable"
-
-## send a different Server: header
-## be nice and keep it at lighttpd
-#server.tag = "lighttpd"
-
-$HTTP["url"] =~ "\.pdf$" {
- server.range-requests = "disable"
-}
-
-##
-# which extensions should not be handle via static-file transfer
-#
-# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
-static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
-
-######### Options that are good to be but not neccesary to be changed #######
-
-## bind to port (default: 80)
-#server.port = 81
-
-## bind to localhost (default: all interfaces)
-#server.bind = "localhost"
-
-## error-handler for status 404
-#server.error-handler-404 = "/error-handler.html"
-#server.error-handler-404 = "/error-handler.php"
-
-## to help the rc.scripts
-server.pid-file = "/var/run/lighttpd.pid"
-
-
-###### virtual hosts
-##
-## If you want name-based virtual hosting add the next three settings and load
-## mod_simple_vhost
-##
-## document-root =
-## virtual-server-root + virtual-server-default-host + virtual-server-docroot or
-## virtual-server-root + http-host + virtual-server-docroot
-##
-#simple-vhost.server-root = "/home/weigon/wwwroot/servers/"
-#simple-vhost.default-host = "grisu.home.kneschke.de"
-#simple-vhost.document-root = "/pages/"
-
-
-##
-## Format: <errorfile-prefix><status>.html
-## -> ..../status-404.html for 'File not found'
-#server.errorfile-prefix = "/www/error-"
-
-## virtual directory listings
-#server.dir-listing = "enable"
-
-## send unhandled HTTP-header headers to error-log
-#debug.dump-unknown-headers = "enable"
-
-### only root can use these options
-#
-# chroot() to directory (default: no chroot() )
-#server.chroot = "/"
-
-## change uid to <uid> (default: don't care)
-#server.username = "nobody"
-
-## change uid to <uid> (default: don't care)
-#server.groupname = "nobody"
-
-#### compress module
-#compress.cache-dir = "/dev/null/"
-#compress.filetype = ("text/plain", "text/html")
-
-#### proxy module
-## read proxy.txt for more info
-#proxy.server = (
-# ".php" => (
-# "localhost" => (
-# "host" => "192.168.0.101",
-# "port" => 80
-# )
-# )
-#)
-
-#### fastcgi module
-## read fastcgi.txt for more info
-#fastcgi.server = (
-# ".php" => (
-# "localhost" => (
-# "socket" => "/tmp/php-fastcgi.socket",
-# "bin-path" => "/usr/local/bin/php"
-# )
-# )
-#)
-
-#### CGI module
-#cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl" )
-
-#### SSL engine
-#ssl.engine = "enable"
-#ssl.pemfile = "server.pem"
-
-#### status module
-#status.status-url = "/server-status"
-#status.config-url = "/server-config"
-
-#### auth module
-## read authentification.txt for more info
-#auth.backend = "plain"
-#auth.backend.plain.userfile = "lighttpd.user"
-#auth.backend.plain.groupfile = "lighttpd.group"
-#auth.require = (
-# "/server-status" => (
-# "method" => "digest",
-# "realm" => "download archiv",
-# "require" => "group=www|user=jan|host=192.168.2.10"
-# ),
-# "/server-info" => (
-# "method" => "digest",
-# "realm" => "download archiv",
-# "require" => "group=www|user=jan|host=192.168.2.10"
-# )
-#)
-
-#### url handling modules (rewrite, redirect, access)
-#url.rewrite = ( "^/$" => "/server-status" )
-#url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
-
-#### both rewrite/redirect support back reference to regex conditional using %n
-#$HTTP["host"] =~ "^www\.(.*)" {
-# url.redirect = ( "^/(.*)" => "http://%1/$1" )
-#}
-
-#### expire module
-#expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
-
-#### ssi
-#ssi.extension = ( ".shtml" )
-
-#### setenv
-#setenv.add-request-header = ( "TRAV_ENV" => "mysql://user@host/db" )
-#setenv.add-response-header = ( "X-Secret-Message" => "42" )
-
-#### variable usage:
-## variable name without "." is auto prefixed by "var." and becomes "var.bar"
-#bar = 1
-#var.mystring = "foo"
-
-## integer add
-#bar += 1
-## string concat, with integer cast as string, result: "www.foo1.com"
-#server.name = "www." + mystring + var.bar + ".com"
-## array merge
-#index-file.names = (foo + ".php") + index-file.names
-#index-file.names += (foo + ".php")
-
-#### include
-#include /etc/lighttpd/lighttpd-inc.conf
-## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
-#include "lighttpd-inc.conf"
-
-#### include_shell
-#include_shell "echo var.a=1"
-## the above is same as:
-#var.a=1
diff --git a/openwrt/package/lighttpd/files/lighttpd.default b/openwrt/package/lighttpd/files/lighttpd.default
deleted file mode 100644
index 649571e640..0000000000
--- a/openwrt/package/lighttpd/files/lighttpd.default
+++ /dev/null
@@ -1 +0,0 @@
-OPTIONS="-f /etc/lighttpd.conf" \ No newline at end of file
diff --git a/openwrt/package/lighttpd/files/lighttpd.init b/openwrt/package/lighttpd/files/lighttpd.init
deleted file mode 100644
index ca7a3f97f5..0000000000
--- a/openwrt/package/lighttpd/files/lighttpd.init
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-BIN=lighttpd
-DEFAULT=/etc/default/$BIN
-LOG_D=/var/log/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- mkdir -p $LOG_D
- mkdir -p $RUN_D
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-accesslog.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-accesslog.control
deleted file mode 100644
index 640122652c..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-accesslog.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-accesslog
-Priority: optional
-Section: net
-Description: an access logging module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-alias.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-alias.control
deleted file mode 100644
index c1e12e3737..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-alias.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-alias
-Priority: optional
-Section: net
-Description: a directory alias module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-auth.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-auth.control
deleted file mode 100644
index 179501fbf5..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-auth.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-auth
-Priority: optional
-Section: net
-Description: an authentication module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-cgi.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-cgi.control
deleted file mode 100644
index 18c574a9b4..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-cgi.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-cgi
-Priority: optional
-Section: net
-Description: a CGI module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-evasive.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-evasive.control
deleted file mode 100644
index dd00165eaa..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-evasive.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-evasive
-Priority: optional
-Section: net
-Description: Evasive module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-expire.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-expire.control
deleted file mode 100644
index 8d5c5546c0..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-expire.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-expire
-Priority: optional
-Section: net
-Description: Expire module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-fastcgi.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-fastcgi.control
deleted file mode 100644
index 123e9b6362..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-fastcgi.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-fastcgi
-Priority: optional
-Section: net
-Description: FASTCGI module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-proxy.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-proxy.control
deleted file mode 100644
index 5578d1a537..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-proxy.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-proxy
-Priority: optional
-Section: net
-Description: a proxy module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-redirect.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-redirect.control
deleted file mode 100644
index 80f3a574c6..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-redirect.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-redirect
-Priority: optional
-Section: net
-Description: an url redirection module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-rewrite.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-rewrite.control
deleted file mode 100644
index 19c5b1a769..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-rewrite.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-rewrite
-Priority: optional
-Section: net
-Description: an url rewriting module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-setenv.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-setenv.control
deleted file mode 100644
index 0506b7a4cd..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-setenv.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-setenv
-Priority: optional
-Section: net
-Description: an environment variable setting module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-simple-vhost.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-simple-vhost.control
deleted file mode 100644
index 58550e1244..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-simple-vhost.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-simple-vhost
-Priority: optional
-Section: net
-Description: a simple virtual hosting module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-ssi.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-ssi.control
deleted file mode 100644
index 266d4ea688..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-ssi.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-ssi
-Priority: optional
-Section: net
-Description: SSI module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-status.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-status.control
deleted file mode 100644
index 081d21c4e5..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-status.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-status
-Priority: optional
-Section: net
-Description: a server status display module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-usertrack.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-usertrack.control
deleted file mode 100644
index 32a0e79a08..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-usertrack.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-usertrack
-Priority: optional
-Section: net
-Description: an user tracking module for lighttpd
-Depends: lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd-mod-webdav.control b/openwrt/package/lighttpd/ipkg/lighttpd-mod-webdav.control
deleted file mode 100644
index 0d5110ce6f..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd-mod-webdav.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lighttpd-mod-webdav
-Priority: optional
-Section: net
-Description: a webdav module for lighttpd
-Depends: lighttpd, libxml2, sqlite
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd.conffiles b/openwrt/package/lighttpd/ipkg/lighttpd.conffiles
deleted file mode 100644
index 6c127a4089..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd.conffiles
+++ /dev/null
@@ -1,3 +0,0 @@
-/etc/lighttpd.conf
-/etc/default/lighttpd
-/etc/init.d/lighttpd
diff --git a/openwrt/package/lighttpd/ipkg/lighttpd.control b/openwrt/package/lighttpd/ipkg/lighttpd.control
deleted file mode 100644
index 3fdfcb0edf..0000000000
--- a/openwrt/package/lighttpd/ipkg/lighttpd.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: lighttpd
-Priority: optional
-Section: net
-Description: a flexible and lightweight web server,
- built with SSL support.
-Depends: libopenssl, libpcre
diff --git a/openwrt/package/lighttpd/patches/500-configure_cross.patch b/openwrt/package/lighttpd/patches/500-configure_cross.patch
deleted file mode 100644
index 8f8099823f..0000000000
--- a/openwrt/package/lighttpd/patches/500-configure_cross.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN lighttpd-1.4.2-old/configure lighttpd-1.4.2-new/configure
---- lighttpd-1.4.2-old/configure 2005-08-29 14:18:11.000000000 +0200
-+++ lighttpd-1.4.2-new/configure 2005-09-01 09:06:29.000000000 +0200
-@@ -23849,7 +23849,7 @@
- echo "$as_me:$LINENO: result: $WITH_PCRE" >&5
- echo "${ECHO_T}$WITH_PCRE" >&6
-
--if test "x$cross_compiling" = xno -a "$WITH_PCRE" != "no"; then
-+if test "$WITH_PCRE" != "no"; then
- # Extract the first word of "pcre-config", so it can be a program name with args.
- set dummy pcre-config; ac_word=$2
- echo "$as_me:$LINENO: checking for $ac_word" >&5
-diff -ruN lighttpd-1.4.2-old/configure.in lighttpd-1.4.2-new/configure.in
---- lighttpd-1.4.2-old/configure.in 2005-08-29 14:06:03.000000000 +0200
-+++ lighttpd-1.4.2-new/configure.in 2005-09-01 09:05:39.000000000 +0200
-@@ -222,7 +222,7 @@
- [WITH_PCRE=$withval],[WITH_PCRE=yes])
- AC_MSG_RESULT([$WITH_PCRE])
-
--if test "x$cross_compiling" = xno -a "$WITH_PCRE" != "no"; then
-+if test "$WITH_PCRE" != "no"; then
- AC_PATH_PROG(PCRECONFIG, pcre-config)
-
- if test x"$PCRECONFIG" != x; then
diff --git a/openwrt/package/linux-atm/Config.in b/openwrt/package/linux-atm/Config.in
deleted file mode 100644
index bf7ff35c0b..0000000000
--- a/openwrt/package/linux-atm/Config.in
+++ /dev/null
@@ -1,22 +0,0 @@
-config BR2_PACKAGE_LINUX_ATM
- prompt "linux-atm......................... ATM Library/Utilities for Linux"
- tristate
- default y if BR2_LINUX_2_4_AR7
- default n
- help
- ATM Library for linux
-
- http://ftp.debian.org/debian/pool/main/l/linux-atm/
-
-config BR2_PACKAGE_BR2684CTL
- prompt "br2684ctl....................... RFC2684 bridging utility"
- tristate
- default y if BR2_LINUX_2_4_AR7
- default n
- depends BR2_PACKAGE_LINUX_ATM
- help
- Utility for setting up ATM RFC2684 bridging mode
- Useful for PPPoE
-
- http://ftp.debian.org/debian/pool/main/l/linux-atm/
-
diff --git a/openwrt/package/linux-atm/Makefile b/openwrt/package/linux-atm/Makefile
deleted file mode 100644
index 43dd6910e2..0000000000
--- a/openwrt/package/linux-atm/Makefile
+++ /dev/null
@@ -1,91 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=linux-atm
-PKG_VERSION:=2.4.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=84fef49cc39ff2605204246666f65864
-
-PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/l/linux-atm/
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LINUX_ATM,linux-atm,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,BR2684CTL,br2684ctl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include/ \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LINUX_ATM):
- install -d -m0755 $(IDIR_LINUX_ATM)/usr/lib
- cp -f $(PKG_INSTALL_DIR)/usr/lib/libatm.so.1 $(IDIR_LINUX_ATM)/usr/lib
- $(RSTRIP) $(IDIR_LINUX_ATM)/
- $(IPKG_BUILD) $(IDIR_LINUX_ATM) $(PACKAGE_DIR)
-
-$(IPKG_BR2684CTL):
- install -d -m0755 $(IDIR_BR2684CTL)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/br2684ctl $(IDIR_BR2684CTL)/usr/sbin/
- install -d -m0755 $(IDIR_BR2684CTL)/etc/hotplug.d/net
- install -m0644 ./files/br2684.init $(IDIR_BR2684CTL)/etc/hotplug.d/net/30-br2684
- $(RSTRIP) $(IDIR_BR2684CTL)/
- $(IPKG_BUILD) $(IDIR_BR2684CTL) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libatm.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/atm{,d,sap}.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libatm.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libatm.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/atm{,d,sap}.h \
- $(STAGING_DIR)/usr/lib/libatm.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/linux-atm/files/br2684.init b/openwrt/package/linux-atm/files/br2684.init
deleted file mode 100644
index 242e7e5152..0000000000
--- a/openwrt/package/linux-atm/files/br2684.init
+++ /dev/null
@@ -1,19 +0,0 @@
-[ "${INTERFACE%%[0-9]*}" = "atm" ] && {
- case "$ACTION" in
- register)
- [ "$pppoe_atm" = 1 ] && {
- case "$atm_encaps" in
- 0|vc) ENCAPS=0 ;;
- 1|llc) ENCAPS=1 ;;
- *) ENCAPS=0 ;;
- esac
- insmod br2684 2>&- >&-
- br2684ctl -c0 -e${ENCAPS} -a${atm_vpi:-8}.${atm_vci:-35} &
- }
- ;;
- unregister)
- killall br2684ctl 2>&- >&-
- rmmod br2684
- ;;
- esac
-}
diff --git a/openwrt/package/linux-atm/ipkg/br2684ctl.control b/openwrt/package/linux-atm/ipkg/br2684ctl.control
deleted file mode 100644
index 444dc07ab2..0000000000
--- a/openwrt/package/linux-atm/ipkg/br2684ctl.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: br2684ctl
-Priority: optional
-Section: net
-Description: Utility for configuring the ATM RFC2684 bridging
diff --git a/openwrt/package/linux-atm/ipkg/linux-atm.control b/openwrt/package/linux-atm/ipkg/linux-atm.control
deleted file mode 100644
index 616471a2b4..0000000000
--- a/openwrt/package/linux-atm/ipkg/linux-atm.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: linux-atm
-Priority: optional
-Section: net
-Description: ATM library for linux
diff --git a/openwrt/package/linux-atm/patches/000-debian_16.patch b/openwrt/package/linux-atm/patches/000-debian_16.patch
deleted file mode 100644
index 41dc437ca4..0000000000
--- a/openwrt/package/linux-atm/patches/000-debian_16.patch
+++ /dev/null
@@ -1,35073 +0,0 @@
---- linux-atm-2.4.1.orig/Makefile.in
-+++ linux-atm-2.4.1/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -100,14 +100,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- all: all-redirect
- .SUFFIXES:
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -225,7 +225,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -274,6 +274,11 @@
- -rm -rf $(distdir)
- mkdir $(distdir)
- -chmod 777 $(distdir)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
---- linux-atm-2.4.1.orig/aclocal.m4
-+++ linux-atm-2.4.1/aclocal.m4
-@@ -1,4 +1,4 @@
--dnl aclocal.m4 generated automatically by aclocal 1.4-p5
-+dnl aclocal.m4 generated automatically by aclocal 1.4-p6
-
- dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- dnl This file is free software; the Free Software Foundation
-@@ -43,7 +43,8 @@
- dnl AM_INIT_AUTOMAKE(package,version, [no-define])
-
- AC_DEFUN([AM_INIT_AUTOMAKE],
--[AC_REQUIRE([AC_PROG_INSTALL])
-+[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-+AC_REQUIRE([AC_PROG_INSTALL])
- PACKAGE=[$1]
- AC_SUBST(PACKAGE)
- VERSION=[$2]
-@@ -59,13 +60,42 @@
- AC_REQUIRE([AC_ARG_PROGRAM])
- dnl FIXME This is truly gross.
- missing_dir=`cd $ac_aux_dir && pwd`
--AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
-+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
- AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
--AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
-+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
- AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
- AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
- AC_REQUIRE([AC_PROG_MAKE_SET])])
-
-+# Copyright 2002 Free Software Foundation, Inc.
-+
-+# 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, Inc., 59 Temple Place - Suite 330, Boston, MA
-+
-+# AM_AUTOMAKE_VERSION(VERSION)
-+# ----------------------------
-+# Automake X.Y traces this macro to ensure aclocal.m4 has been
-+# generated from the m4 files accompanying Automake X.Y.
-+AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
-+
-+# AM_SET_CURRENT_AUTOMAKE_VERSION
-+# -------------------------------
-+# 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.4-p6])])
-+
- #
- # Check to make sure that the build environment is sane.
- #
-@@ -130,13 +160,14 @@
- dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT
- AC_DEFUN([AM_PROG_LEX],
- [missing_dir=ifelse([$1],,`cd $ac_aux_dir && pwd`,$1)
--AC_CHECK_PROGS(LEX, flex lex, "$missing_dir/missing flex")
-+AC_CHECK_PROGS(LEX, flex lex, $missing_dir/missing flex)
- AC_PROG_LEX
- AC_DECL_YYTEXT])
-
- # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*-
-
- # serial 46 AC_PROG_LIBTOOL
-+
- AC_DEFUN([AC_PROG_LIBTOOL],
- [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-
-@@ -162,6 +193,8 @@
- AC_REQUIRE([AC_PROG_LD])dnl
- AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
- AC_REQUIRE([AC_PROG_NM])dnl
-+AC_REQUIRE([LT_AC_PROG_SED])dnl
-+
- AC_REQUIRE([AC_PROG_LN_S])dnl
- AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
- AC_REQUIRE([AC_OBJEXT])dnl
-@@ -262,9 +295,30 @@
-
- ])
-
-+# AC_LIBTOOL_HEADER_ASSERT
-+# ------------------------
-+AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT],
-+[AC_CACHE_CHECK([whether $CC supports assert without backlinking],
-+ [lt_cv_func_assert_works],
-+ [case $host in
-+ *-*-solaris*)
-+ if test "$GCC" = yes && test "$with_gnu_ld" != yes; then
-+ case `$CC --version 2>/dev/null` in
-+ [[12]].*) lt_cv_func_assert_works=no ;;
-+ *) lt_cv_func_assert_works=yes ;;
-+ esac
-+ fi
-+ ;;
-+ esac])
-+
-+if test "x$lt_cv_func_assert_works" = xyes; then
-+ AC_CHECK_HEADERS(assert.h)
-+fi
-+])# AC_LIBTOOL_HEADER_ASSERT
-+
- # _LT_AC_CHECK_DLFCN
- # --------------------
--AC_DEFUN(_LT_AC_CHECK_DLFCN,
-+AC_DEFUN([_LT_AC_CHECK_DLFCN],
- [AC_CHECK_HEADERS(dlfcn.h)
- ])# _LT_AC_CHECK_DLFCN
-
-@@ -282,10 +336,10 @@
- # [They come from Ultrix. What could be older than Ultrix?!! ;)]
-
- # Character class describing NM global symbol codes.
--[symcode='[BCDEGRST]']
-+symcode='[[BCDEGRST]]'
-
- # Regexp to match symbols that can be accessed directly from C.
--[sympat='\([_A-Za-z][_A-Za-z0-9]*\)']
-+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
- # Transform the above into a raw symbol and a C symbol.
- symxfrm='\1 \2\3 \3'
-@@ -293,25 +347,32 @@
- # Transform an extracted symbol line into a proper C declaration
- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
-
-+# Transform an extracted symbol line into symbol name and symbol address
-+lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+
- # Define system-specific variables.
- case $host_os in
- aix*)
-- [symcode='[BCDT]']
-+ symcode='[[BCDT]]'
- ;;
- cygwin* | mingw* | pw32*)
-- [symcode='[ABCDGISTW]']
-+ symcode='[[ABCDGISTW]]'
- ;;
- hpux*) # Its linker distinguishes data from code symbols
- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-+ lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+ ;;
-+irix* | nonstopux*)
-+ symcode='[[BCDEGRST]]'
- ;;
--irix*)
-- [symcode='[BCDEGRST]']
-+osf*)
-+ symcode='[[BCDEGQRST]]'
- ;;
- solaris* | sysv5*)
-- [symcode='[BDT]']
-+ symcode='[[BDT]]'
- ;;
- sysv4)
-- [symcode='[DFNSTU]']
-+ symcode='[[DFNSTU]]'
- ;;
- esac
-
-@@ -325,14 +386,14 @@
-
- # If we're using GNU nm, then use its standard symbol codes.
- if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
-- [symcode='[ABCDGISTW]']
-+ symcode='[[ABCDGISTW]]'
- fi
-
- # Try without a prefix undercore, then with it.
- for ac_symprfx in "" "_"; do
-
- # Write the raw and C identifiers.
--[lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"]
-+lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-@@ -374,23 +435,23 @@
-
- cat <<EOF >> conftest.$ac_ext
- #if defined (__STDC__) && __STDC__
--# define lt_ptr_t void *
-+# define lt_ptr void *
- #else
--# define lt_ptr_t char *
-+# define lt_ptr char *
- # define const
- #endif
-
- /* The mapping between symbol names and symbols. */
- const struct {
- const char *name;
-- lt_ptr_t address;
-+ lt_ptr address;
- }
--[lt_preloaded_symbols[] =]
-+lt_preloaded_symbols[[]] =
- {
- EOF
-- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" >> conftest.$ac_ext
-+ sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
- cat <<\EOF >> conftest.$ac_ext
-- {0, (lt_ptr_t) 0}
-+ {0, (lt_ptr) 0}
- };
-
- #ifdef __cplusplus
-@@ -403,7 +464,7 @@
- save_CFLAGS="$CFLAGS"
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$no_builtin_flag"
-- if AC_TRY_EVAL(ac_link) && test -s conftest; then
-+ if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
- pipe_works=yes
- fi
- LIBS="$save_LIBS"
-@@ -434,10 +495,13 @@
- global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
- if test -z "$lt_cv_sys_global_symbol_pipe"; then
- global_symbol_to_cdecl=
-+ global_symbol_to_c_name_address=
- else
- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
-+ global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
- fi
--if test -z "$global_symbol_pipe$global_symbol_to_cdecl"; then
-+if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
-+then
- AC_MSG_RESULT(failed)
- else
- AC_MSG_RESULT(ok)
-@@ -455,16 +519,17 @@
- *-DOS) lt_cv_sys_path_separator=';' ;;
- *) lt_cv_sys_path_separator=':' ;;
- esac
-+ PATH_SEPARATOR=$lt_cv_sys_path_separator
- fi
- ])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
-
- # _LT_AC_PROG_ECHO_BACKSLASH
- # --------------------------
- # Add some code to the start of the generated configure script which
--# will find an echo command which doesn;t interpret backslashes.
-+# will find an echo command which doesn't interpret backslashes.
- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
- [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-- [AC_DIVERT_PUSH(NOTICE)])
-+ [AC_DIVERT_PUSH(NOTICE)])
- _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
-
- # Check that we are running under the correct shell.
-@@ -530,7 +595,7 @@
- #
- # So, first we look for a working echo in the user's PATH.
-
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
-+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for dir in $PATH /usr/ucb; do
- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-@@ -619,7 +684,7 @@
- # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
- # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
- # ------------------------------------------------------------------
--AC_DEFUN(_LT_AC_TRY_DLOPEN_SELF,
-+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
- [if test "$cross_compiling" = yes; then :
- [$4]
- else
-@@ -706,7 +771,7 @@
-
- # AC_LIBTOOL_DLOPEN_SELF
- # -------------------
--AC_DEFUN(AC_LIBTOOL_DLOPEN_SELF,
-+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
- [if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
-@@ -728,16 +793,22 @@
- ;;
-
- *)
-- AC_CHECK_LIB(dl, dlopen, [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-- [AC_CHECK_FUNC(dlopen, lt_cv_dlopen="dlopen",
-- [AC_CHECK_FUNC(shl_load, lt_cv_dlopen="shl_load",
-- [AC_CHECK_LIB(svld, dlopen,
-- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-- [AC_CHECK_LIB(dld, shl_load,
-- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ AC_CHECK_FUNC([shl_load],
-+ [lt_cv_dlopen="shl_load"],
-+ [AC_CHECK_LIB([dld], [shl_load],
-+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
-+ [AC_CHECK_FUNC([dlopen],
-+ [lt_cv_dlopen="dlopen"],
-+ [AC_CHECK_LIB([dl], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-+ [AC_CHECK_LIB([svld], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-+ [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
- ])
-- ])
-- ])
-+ ])
-+ ])
- ])
- ;;
- esac
-@@ -800,10 +871,10 @@
- # Sed substitution that helps us do robust quoting. It backslashifies
- # metacharacters that are still active within double-quoted strings.
- Xsed='sed -e s/^X//'
--[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
-+sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g'
-
- # Same as above, but do not quote variable references.
--[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
-+double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g'
-
- # Sed substitution to delay expansion of an escaped shell variable in a
- # double_quote_subst'ed string.
-@@ -872,8 +943,15 @@
- old_postuninstall_cmds=
-
- if test -n "$RANLIB"; then
-+ case $host_os in
-+ openbsd*)
-+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ *)
-+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
- fi
-
- # Allow CC to be a program name with arguments.
-@@ -893,7 +971,7 @@
- AC_MSG_RESULT($objdir)
-
-
--AC_ARG_WITH(pic,
-+AC_ARG_WITH(pic,
- [ --with-pic try to use only PIC/non-PIC objects [default=use both]],
- pic_mode="$withval", pic_mode=default)
- test -z "$pic_mode" && pic_mode=default
-@@ -921,7 +999,7 @@
- # libC (AIX C++ library), which obviously doesn't included in libraries
- # list by gcc. This cause undefined symbols with -static flags.
- # This hack allows C programs to be linked with "-static -ldl", but
-- # we not sure about C++ programs.
-+ # not sure about C++ programs.
- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
- ;;
- amigaos*)
-@@ -930,7 +1008,7 @@
- # like `-m68040'.
- lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
- ;;
-- beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
-+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
- darwin* | rhapsody*)
-@@ -956,13 +1034,13 @@
- # PORTME Check for PIC flags for the system compiler.
- case $host_os in
- aix3* | aix4* | aix5*)
-+ lt_cv_prog_cc_wl='-Wl,'
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- lt_cv_prog_cc_static='-Bstatic'
-- lt_cv_prog_cc_wl='-Wl,'
-+ # AIX 5 now supports IA64 processor
-+ lt_cv_prog_cc_static='-Bstatic'
- else
-- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
-+ lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
- fi
- ;;
-
-@@ -973,7 +1051,7 @@
- lt_cv_prog_cc_pic='+Z'
- ;;
-
-- irix5* | irix6*)
-+ irix5* | irix6* | nonstopux*)
- lt_cv_prog_cc_wl='-Wl,'
- lt_cv_prog_cc_static='-non_shared'
- # PIC (with -KPIC) is the default.
-@@ -1017,11 +1095,7 @@
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- lt_cv_prog_cc_pic='-KPIC'
- lt_cv_prog_cc_static='-Bstatic'
-- if test "x$host_vendor" = xsni; then
-- lt_cv_prog_cc_wl='-LD'
-- else
-- lt_cv_prog_cc_wl='-Wl,'
-- fi
-+ lt_cv_prog_cc_wl='-Wl,'
- ;;
-
- uts4*)
-@@ -1087,7 +1161,7 @@
- # Check for any special shared library compilation flags.
- if test -n "$lt_cv_prog_cc_shlib"; then
- AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries])
-- if echo "$old_CC $old_CFLAGS " | [egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]"] >/dev/null; then :
-+ if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then :
- else
- AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure])
- lt_cv_prog_cc_can_build_shared=no
-@@ -1163,6 +1237,8 @@
- lt_cv_compiler_o_lo=no
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -c -o conftest.lo"
-+ save_objext="$ac_objext"
-+ ac_objext=lo
- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
-@@ -1172,6 +1248,7 @@
- lt_cv_compiler_o_lo=yes
- fi
- ])
-+ ac_objext="$save_objext"
- CFLAGS="$save_CFLAGS"
- ])
- compiler_o_lo=$lt_cv_compiler_o_lo
-@@ -1268,7 +1345,7 @@
- extract_expsyms_cmds=
-
- case $host_os in
--cygwin* | mingw* | pw32* )
-+cygwin* | mingw* | pw32*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
-@@ -1276,7 +1353,9 @@
- with_gnu_ld=no
- fi
- ;;
--
-+openbsd*)
-+ with_gnu_ld=no
-+ ;;
- esac
-
- ld_shlibs=yes
-@@ -1363,7 +1442,7 @@
- # can override, but on older systems we have to supply one (in ltdll.c)
- if test "x$lt_cv_need_dllmain" = "xyes"; then
- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
-- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < [$]0 > $output_objdir/$soname-ltdll.c~
-+ ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
- else
- ltdll_obj=
-@@ -1376,24 +1455,25 @@
- # Be careful not to strip the DATA tag left be newer dlltools.
- export_symbols_cmds="$ltdll_cmds"'
- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
-- [sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//"] < $output_objdir/$soname-def > $export_symbols'
-+ sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
-
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is.
- # If DATA tags from a recent dlltool are present, honour them!
-- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then
-- cp $export_symbols $output_objdir/$soname-def;
-+ archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname-def;
- else
-- echo EXPORTS > $output_objdir/$soname-def;
-- _lt_hint=1;
-- cat $export_symbols | while read symbol; do
-- set dummy \$symbol;
-- case \[$]# in
-- 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
-- *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;;
-- esac;
-- _lt_hint=`expr 1 + \$_lt_hint`;
-- done;
-+ echo EXPORTS > $output_objdir/$soname-def;
-+ _lt_hint=1;
-+ cat $export_symbols | while read symbol; do
-+ set dummy \$symbol;
-+ case \[$]# in
-+ 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
-+ 4) echo " \[$]2 \[$]3 \[$]4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;;
-+ *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;;
-+ esac;
-+ _lt_hint=`expr 1 + \$_lt_hint`;
-+ done;
- fi~
- '"$ltdll_cmds"'
- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-@@ -1488,80 +1568,98 @@
- ;;
-
- aix4* | aix5*)
-+ if test "$host_cpu" = ia64; then
-+ # On IA64, the linker does run time linking by default, so we don't
-+ # have to do anything special.
-+ aix_use_runtimelinking=no
-+ exp_sym_flag='-Bexport'
-+ no_entry_flag=""
-+ else
-+ aix_use_runtimelinking=no
-+
-+ # Test if we are trying to use run time linking or normal
-+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-+ # need to do runtime linking.
-+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
-+ for ld_flag in $LDFLAGS; do
-+ case $ld_flag in
-+ *-brtl*)
-+ aix_use_runtimelinking=yes
-+ break
-+ ;;
-+ esac
-+ done
-+ esac
-+
-+ exp_sym_flag='-bexport'
-+ no_entry_flag='-bnoentry'
-+ fi
-+
- # When large executables or shared objects are built, AIX ld can
- # have problems creating the table of contents. If linking a library
- # or program results in "error TOC overflow" add -mminimal-toc to
- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-+ hardcode_direct=yes
- archive_cmds=''
- hardcode_libdir_separator=':'
- if test "$GCC" = yes; then
-- collect2name=`${CC} -print-prog-name=collect2`
-- if test -f "$collect2name" && \
-- strings "$collect2name" | grep resolve_lib_name >/dev/null
-- then
-- # We have reworked collect2
-- hardcode_direct=yes
-- else
-- # We have old collect2
-- hardcode_direct=unsupported
-- # It fails to find uninstalled libraries when the uninstalled
-- # path is not listed in the libpath. Setting hardcode_minus_L
-- # to unsupported forces relinking
-- hardcode_minus_L=yes
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_libdir_separator=
-- fi
-+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
-+ collect2name=`${CC} -print-prog-name=collect2`
-+ if test -f "$collect2name" && \
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ then
-+ # We have reworked collect2
-+ hardcode_direct=yes
-+ else
-+ # We have old collect2
-+ hardcode_direct=unsupported
-+ # It fails to find uninstalled libraries when the uninstalled
-+ # path is not listed in the libpath. Setting hardcode_minus_L
-+ # to unsupported forces relinking
-+ hardcode_minus_L=yes
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_libdir_separator=
-+ fi
-+ esac
-+
- shared_flag='-shared'
- else
-+ # not using gcc
- if test "$host_cpu" = ia64; then
-- shared_flag='-G'
-+ shared_flag='${wl}-G'
- else
-- shared_flag='${wl}-bM:SRE'
-+ if test "$aix_use_runtimelinking" = yes; then
-+ shared_flag='${wl}-G'
-+ else
-+ shared_flag='${wl}-bM:SRE'
-+ fi
- fi
-- hardcode_direct=yes
- fi
-
-- if test "$host_cpu" = ia64; then
-- # On IA64, the linker does run time linking by default, so we don't
-- # have to do anything special.
-- aix_use_runtimelinking=no
-- exp_sym_flag='-Bexport'
-- no_entry_flag=""
-- else
-- # Test if we are trying to use run time linking, or normal AIX style linking.
-- # If -brtl is somewhere in LDFLAGS, we need to do run time linking.
-- aix_use_runtimelinking=no
-- for ld_flag in $LDFLAGS; do
-- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
-- aix_use_runtimelinking=yes
-- break
-- fi
-- done
-- exp_sym_flag='-bexport'
-- no_entry_flag='-bnoentry'
-- fi
- # It seems that -bexpall can do strange things, so it is better to
- # generate a list of symbols to export.
- always_export_symbols=yes
- if test "$aix_use_runtimelinking" = yes; then
-+ # Warning - without using the other runtime loading flags (-brtl),
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='-berok'
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
-- allow_undefined_flag=' -Wl,-G'
-- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
- else
- if test "$host_cpu" = ia64; then
-- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-- allow_undefined_flag="-znodefs"
-- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-+ allow_undefined_flag="-z nodefs"
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
- else
-- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
-- # Warning - without using the other run time loading flags, -berok will
-- # link without error, but may produce a broken library.
-- allow_undefined_flag='${wl}-berok'
-- # This is a bit strange, but is similar to how AIX traditionally builds
-- # it's shared libraries.
-- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname'
-+ hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
-+ # Warning - without using the other run time loading flags,
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='${wl}-berok'
-+ # This is a bit strange, but is similar to how AIX traditionally builds
-+ # it's shared libraries.
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $output_objdir/$libname$release.a $output_objdir/$soname'
- fi
- fi
- ;;
-@@ -1593,11 +1691,19 @@
- ;;
-
- darwin* | rhapsody*)
-- allow_undefined_flag='-undefined suppress'
-+ case "$host_os" in
-+ rhapsody* | darwin1.[[012]])
-+ allow_undefined_flag='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ allow_undefined_flag='-flat_namespace -undefined suppress'
-+ ;;
-+ esac
- # FIXME: Relying on posixy $() will cause problems for
- # cross-compilation, but unfortunately the echo tests do not
-- # yet detect zsh echo's removal of \ escapes.
-- archive_cmds='$CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linkopts -install_name $rpath/$soname $(test -n "$verstring" -a x$verstring != x0.0 && echo $verstring)'
-+ # yet detect zsh echo's removal of \ escapes. Also zsh mangles
-+ # `"' quotes if we put them in here... so don't!
-+ archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)'
- # We need to add '_' to the symbols in $export_symbols first
- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
- hardcode_direct=yes
-@@ -1649,13 +1755,14 @@
- export_dynamic_flag_spec='${wl}-E'
- ;;
-
-- irix5* | irix6*)
-+ irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- else
- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='-rpath $libdir'
- fi
-- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- link_all_deplibs=yes
- ;;
-@@ -1672,7 +1779,7 @@
- ;;
-
- newsos6)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
-@@ -1680,10 +1787,24 @@
- ;;
-
- openbsd*)
-- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ export_dynamic_flag_spec='${wl}-E'
-+ else
-+ case "$host_os" in
-+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ ;;
-+ *)
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ ;;
-+ esac
-+ fi
- ;;
-
- os2*)
-@@ -1728,10 +1849,39 @@
- hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
-+ export_dynamic_flag_spec='${wl}-Bexport'
- ;;
-
- solaris*)
-+ # gcc --version < 3.0 without binutils cannot create self contained
-+ # shared libraries reliably, requiring libgcc.a to resolve some of
-+ # the object symbols generated in some cases. Libraries that use
-+ # assert need libgcc.a to resolve __eprintf, for example. Linking
-+ # a copy of libgcc.a into every shared library to guarantee resolving
-+ # such symbols causes other problems: According to Tim Van Holder
-+ # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
-+ # (to the application) exception stack for one thing.
- no_undefined_flag=' -z defs'
-+ if test "$GCC" = yes; then
-+ case `$CC --version 2>/dev/null` in
-+ [[12]].*)
-+ cat <<EOF 1>&2
-+
-+*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
-+*** create self contained shared libraries on Solaris systems, without
-+*** introducing a dependency on libgcc.a. Therefore, libtool is disabling
-+*** -no-undefined support, which will at least allow you to build shared
-+*** libraries. However, you may find that when you link such libraries
-+*** into an application without using GCC, you have to manually add
-+*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to
-+*** upgrade to a newer version of GCC. Another option is to rebuild your
-+*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
-+
-+EOF
-+ no_undefined_flag=
-+ ;;
-+ esac
-+ fi
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-@@ -1740,7 +1890,7 @@
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_shlibpath_var=no
- case $host_os in
-- [solaris2.[0-5] | solaris2.[0-5].*]) ;;
-+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
- *) # Supported since Solaris 2.6 (maybe 2.5.1?)
- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
- esac
-@@ -1762,13 +1912,23 @@
- ;;
-
- sysv4)
-- if test "x$host_vendor" = xsno; then
-- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linkopts'
-- hardcode_direct=yes # is this really true???
-- else
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-- fi
-+ case $host_vendor in
-+ sni)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes # is this really true???
-+ ;;
-+ siemens)
-+ ## LD is ld it makes a PLAMLIB
-+ ## CC just makes a GrossModule.
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ reload_cmds='$CC -r -o $output$reload_objs'
-+ hardcode_direct=no
-+ ;;
-+ motorola)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-+ ;;
-+ esac
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
- ;;
-@@ -1909,6 +2069,9 @@
-
- aix4* | aix5*)
- version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ hardcode_into_libs=yes
- if test "$host_cpu" = ia64; then
- # AIX 5 supports IA64
- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
-@@ -1920,22 +2083,24 @@
- # depend on `.', always an invalid library. This was fixed in
- # development snapshots of GCC prior to 3.0.
- case $host_os in
-- [ aix4 | aix4.[01] | aix4.[01].*)]
-- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-- echo ' yes '
-- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-- :
-- else
-- can_build_shared=no
-- fi
-- ;;
-+ aix4 | aix4.[[01]] | aix4.[[01]].*)
-+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-+ echo ' yes '
-+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-+ :
-+ else
-+ can_build_shared=no
-+ fi
-+ ;;
- esac
-- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-- # soname into executable. Probably we can add versioning support to
-- # collect2, so additional links can be useful in future.
-+ # AIX (on Power*) has no versioning support, so currently we can
-+ # not hardcode correct soname into executable. Probably we can
-+ # add versioning support to collect2, so additional links can
-+ # be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
-- # If using run time linking (on AIX 4.2 or later) use lib<name>.so instead of
-- # lib<name>.a to let people know that these are not typical AIX shared libraries.
-+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-+ # instead of lib<name>.a to let people know that these are not
-+ # typical AIX shared libraries.
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- else
- # We preserve .a as extension for shared libraries through AIX4.2
-@@ -1944,14 +2109,14 @@
- soname_spec='${libname}${release}.so$major'
- fi
- shlibpath_var=LIBPATH
-- deplibs_check_method=pass_all
- fi
-+ hardcode_into_libs=yes
- ;;
-
- amigaos*)
- library_names_spec='$libname.ixlibrary $libname.a'
- # Create ${libname}_ixlibrary.a entries in /sys/libs.
-- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | [$Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\'']`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
-+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
- ;;
-
- beos*)
-@@ -1982,7 +2147,7 @@
- case $GCC,$host_os in
- yes,cygwin*)
- library_names_spec='$libname.dll.a'
-- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll'
-+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll'
- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
- dldir=$destdir/`dirname \$dlpath`~
- test -d \$dldir || mkdir -p \$dldir~
-@@ -1992,14 +2157,14 @@
- $rm \$dlpath'
- ;;
- yes,mingw*)
-- library_names_spec='${libname}`echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll'
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
-+ library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll'
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"`
- ;;
- yes,pw32*)
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
- ;;
- *)
-- library_names_spec='${libname}`echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll $libname.lib'
-+ library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib'
- ;;
- esac
- dynamic_linker='Win32 ld.exe'
-@@ -2025,6 +2190,18 @@
- dynamic_linker=no
- ;;
-
-+freebsd*-gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU/FreeBSD ld.so'
-+ ;;
-+
- freebsd*)
- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
- version_type=freebsd-$objformat
-@@ -2076,14 +2253,17 @@
- postinstall_cmds='chmod 555 $lib'
- ;;
-
--irix5* | irix6*)
-- version_type=irix
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ nonstopux*) version_type=nonstopux ;;
-+ *) version_type=irix ;;
-+ esac
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}.so$major'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
- case $host_os in
-- irix5*)
-+ irix5* | nonstopux*)
- libsuff= shlibsuff=
- ;;
- *)
-@@ -2157,9 +2337,19 @@
-
- openbsd*)
- version_type=sunos
-- if test "$with_gnu_ld" = yes; then
-- need_lib_prefix=no
-- need_version=no
-+ need_lib_prefix=no
-+ need_version=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ case "$host_os" in
-+ openbsd2.[[89]] | openbsd2.[[89]].*)
-+ shlibpath_overrides_runpath=no
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ esac
-+ else
-+ shlibpath_overrides_runpath=yes
- fi
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-@@ -2177,11 +2367,13 @@
- osf3* | osf4* | osf5*)
- version_type=osf
- need_version=no
-- soname_spec='${libname}${release}.so'
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
-+ need_lib_prefix=no
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-+ hardcode_into_libs=yes
- ;;
-
- sco3.2v5*)
-@@ -2224,6 +2416,12 @@
- case $host_vendor in
- sni)
- shlibpath_overrides_runpath=no
-+ need_lib_prefix=no
-+ export_dynamic_flag_spec='${wl}-Blargedynsym'
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+ siemens)
-+ need_lib_prefix=no
- ;;
- motorola)
- need_lib_prefix=no
-@@ -2270,6 +2468,33 @@
- AC_MSG_CHECKING([if libtool supports shared libraries])
- AC_MSG_RESULT([$can_build_shared])
-
-+AC_MSG_CHECKING([whether to build shared libraries])
-+test "$can_build_shared" = "no" && enable_shared=no
-+
-+# On AIX, shared libraries and static libraries use the same namespace, and
-+# are all built from PIC.
-+case "$host_os" in
-+aix3*)
-+ test "$enable_shared" = yes && enable_static=no
-+ if test -n "$RANLIB"; then
-+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
-+ postinstall_cmds='$RANLIB $lib'
-+ fi
-+ ;;
-+
-+aix4*)
-+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-+ test "$enable_shared" = yes && enable_static=no
-+ fi
-+ ;;
-+esac
-+AC_MSG_RESULT([$enable_shared])
-+
-+AC_MSG_CHECKING([whether to build static libraries])
-+# Make sure either enable_shared or enable_static is yes.
-+test "$enable_shared" = yes || enable_static=yes
-+AC_MSG_RESULT([$enable_static])
-+
- if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- enable_fast_install=no
-@@ -2351,7 +2576,7 @@
- # Now quote all the things that may contain metacharacters while being
- # careful not to overquote the AC_SUBSTed values. We take copies of the
- # variables and quote the copies for generation of the libtool script.
-- for var in echo old_CC old_CFLAGS \
-+ for var in echo old_CC old_CFLAGS SED \
- AR AR_FLAGS CC LD LN_S NM SHELL \
- reload_flag reload_cmds wl \
- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
-@@ -2363,6 +2588,7 @@
- old_striplib striplib file_magic_cmd export_symbols_cmds \
- deplibs_check_method allow_undefined_flag no_undefined_flag \
- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
-+ global_symbol_to_c_name_address \
- hardcode_libdir_flag_spec hardcode_libdir_separator \
- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
-@@ -2412,8 +2638,11 @@
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
-
-+# A sed that does not truncate output.
-+SED=$lt_SED
-+
- # Sed that helps us avoid accidentally triggering echo(1) options like -n.
--Xsed="sed -e s/^X//"
-+Xsed="${SED} -e s/^X//"
-
- # The HP-UX ksh and POSIX shell print the target directory to stdout
- # if CDPATH is set.
-@@ -2429,12 +2658,12 @@
- # Whether or not to build shared libraries.
- build_libtool_libs=$enable_shared
-
--# Whether or not to add -lc for building shared libraries.
--build_libtool_need_lc=$need_lc
--
- # Whether or not to build static libraries.
- build_old_libs=$enable_static
-
-+# Whether or not to add -lc for building shared libraries.
-+build_libtool_need_lc=$need_lc
-+
- # Whether or not to optimize for fast installation.
- fast_install=$enable_fast_install
-
-@@ -2600,6 +2829,9 @@
- # Transform the output of nm in a proper C declaration
- global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
-
-+# Transform the output of nm in a C name address pair
-+global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
-+
- # This is the shared library runtime path variable.
- runpath_var=$runpath_var
-
-@@ -2722,9 +2954,9 @@
- # return TRUE;
- # }
- # /* ltdll.c ends here */
-- # This is a source program that is used to create import libraries
-- # on Windows for dlls which lack them. Don't remove nor modify the
-- # starting and closing comments
-+ # This is a source program that is used to create import libraries
-+ # on Windows for dlls which lack them. Don't remove nor modify the
-+ # starting and closing comments
- # /* impgen.c starts here */
- # /* Copyright (C) 1999-2000 Free Software Foundation, Inc.
- #
-@@ -3079,6 +3311,7 @@
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_CANONICAL_HOST])dnl
- AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-+AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl
- ac_prog=ld
- if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
-@@ -3092,8 +3325,8 @@
- esac
- case $ac_prog in
- # Accept absolute paths.
-- [[\\/]* | [A-Za-z]:[\\/]*)]
-- [re_direlt='/[^/][^/]*/\.\./']
-+ [[\\/]]* | [[A-Za-z]]:[[\\/]]*)
-+ re_direlt='/[[^/]][[^/]]*/\.\./'
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-@@ -3117,7 +3350,7 @@
- fi
- AC_CACHE_VAL(lt_cv_path_LD,
- [if test -z "$LD"; then
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-@@ -3170,7 +3403,7 @@
- # AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies
- # -- PORTME fill in with the dynamic library characteristics
- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
--[AC_CACHE_CHECK([how to recognise dependant libraries],
-+[AC_CACHE_CHECK([how to recognise dependent libraries],
- lt_cv_deplibs_check_method,
- [lt_cv_file_magic_cmd='$MAGIC_CMD'
- lt_cv_file_magic_test_file=
-@@ -3181,7 +3414,7 @@
- # `unknown' -- same as none, but documents that we really don't know.
- # 'pass_all' -- all dependencies passed with no checks.
- # 'test_compile' -- check by making test program.
--# ['file_magic [regex]'] -- check by looking for files in library path
-+# 'file_magic [[regex]]' -- check by looking for files in library path
- # which responds to the $file_magic_cmd with a given egrep regex.
- # If you have `file' or equivalent on your system and you're not sure
- # whether `pass_all' will *always* work, you probably want this one.
-@@ -3196,7 +3429,7 @@
- ;;
-
- bsdi4*)
-- [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)']
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
- lt_cv_file_magic_cmd='/usr/bin/file -L'
- lt_cv_file_magic_test_file=/shlib/libc.so
- ;;
-@@ -3210,7 +3443,7 @@
- lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
- lt_cv_file_magic_cmd='/usr/bin/file -L'
- case "$host_os" in
-- rhapsody* | darwin1.[012])
-+ rhapsody* | darwin1.[[012]])
- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
- ;;
- *) # Darwin 1.3 on
-@@ -3225,7 +3458,7 @@
- i*86 )
- # Not sure whether the presence of OpenBSD here was a mistake.
- # Let's accept both of them until this is cleared up.
-- [lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library']
-+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
- ;;
-@@ -3240,14 +3473,14 @@
- ;;
-
- hpux10.20*|hpux11*)
-- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library']
-+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=/usr/lib/libc.sl
- ;;
-
--irix5* | irix6*)
-+irix5* | irix6* | nonstopux*)
- case $host_os in
-- irix5*)
-+ irix5* | nonstopux*)
- # this will be overridden with pass_all, but let us keep it just in case
- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
- ;;
-@@ -3259,7 +3492,7 @@
- *) libmagic=never-match;;
- esac
- # this will be overridden with pass_all, but let us keep it just in case
-- [lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"]
-+ lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1"
- ;;
- esac
- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
-@@ -3269,29 +3502,39 @@
- # This must be Linux ELF.
- linux-gnu*)
- case $host_cpu in
-- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* )
-+ alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64* | arm* | m68k)
- lt_cv_deplibs_check_method=pass_all ;;
- *)
- # glibc up to 2.1.1 does not perform some relocations on ARM
-- [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;]
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
- esac
- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-- [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
-+ lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$'
- else
-- [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$']
-+ lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$'
- fi
- ;;
-
- newos6*)
-- [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)']
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=/usr/lib/libnls.so
- ;;
-
-+openbsd*)
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
-+ else
-+ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
-+ fi
-+ ;;
-+
- osf3* | osf4* | osf5*)
- # this will be overridden with pass_all, but let us keep it just in case
- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
-@@ -3308,14 +3551,14 @@
- lt_cv_file_magic_test_file=/lib/libc.so
- ;;
-
--[sysv5uw[78]* | sysv4*uw2*)]
-+sysv5uw[[78]]* | sysv4*uw2*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- case $host_vendor in
- motorola)
-- [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]']
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
- ;;
- ncr)
-@@ -3323,13 +3566,16 @@
- ;;
- sequent)
- lt_cv_file_magic_cmd='/bin/file'
-- [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )']
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
- ;;
- sni)
- lt_cv_file_magic_cmd='/bin/file'
-- [lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"]
-+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
- lt_cv_file_magic_test_file=/lib/libc.so
- ;;
-+ siemens)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
- esac
- ;;
- esac
-@@ -3341,13 +3587,14 @@
-
- # AC_PROG_NM - find the path to a BSD-compatible name lister
- AC_DEFUN([AC_PROG_NM],
--[AC_MSG_CHECKING([for BSD-compatible nm])
-+[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl
-+AC_MSG_CHECKING([for BSD-compatible nm])
- AC_CACHE_VAL(lt_cv_path_NM,
- [if test -n "$NM"; then
- # Let the user override the test.
- lt_cv_path_NM="$NM"
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
- test -z "$ac_dir" && ac_dir=.
- tmp_nm=$ac_dir/${ac_tool_prefix}nm
-@@ -3394,12 +3641,12 @@
- ])
-
- # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
--# the libltdl convenience library and INCLTDL to the include flags for
-+# the libltdl convenience library and LTDLINCL to the include flags for
- # the libltdl header and adds --enable-ltdl-convenience to the
--# configure arguments. Note that LIBLTDL and INCLTDL are not
-+# configure arguments. Note that LIBLTDL and LTDLINCL are not
- # AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not
- # provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed
--# with '${top_builddir}/' and INCLTDL will be prefixed with
-+# with '${top_builddir}/' and LTDLINCL will be prefixed with
- # '${top_srcdir}/' (note the single quotes!). If your package is not
- # flat and you're not using automake, define top_builddir and
- # top_srcdir appropriately in the Makefiles.
-@@ -3411,16 +3658,18 @@
- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
- esac
- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
-- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-+ # For backwards non-gettext consistent compatibility...
-+ INCLTDL="$LTDLINCL"
- ])
-
- # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
--# the libltdl installable library and INCLTDL to the include flags for
-+# the libltdl installable library and LTDLINCL to the include flags for
- # the libltdl header and adds --enable-ltdl-install to the configure
--# arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is
-+# arguments. Note that LIBLTDL and LTDLINCL are not AC_SUBSTed, nor is
- # AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed
- # libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will
--# be prefixed with '${top_builddir}/' and INCLTDL will be prefixed
-+# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed
- # with '${top_srcdir}/' (note the single quotes!). If your package is
- # not flat and you're not using automake, define top_builddir and
- # top_srcdir appropriately in the Makefiles.
-@@ -3438,12 +3687,14 @@
- if test x"$enable_ltdl_install" = x"yes"; then
- ac_configure_args="$ac_configure_args --enable-ltdl-install"
- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
-- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
- else
- ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
- LIBLTDL="-lltdl"
-- INCLTDL=
-+ LTDLINCL=
- fi
-+ # For backwards non-gettext consistent compatibility...
-+ INCLTDL="$LTDLINCL"
- ])
-
- # old names
-@@ -3458,3 +3709,92 @@
- # This is just to silence aclocal about the macro not being used
- ifelse([AC_DISABLE_FAST_INSTALL])
-
-+# NOTE: This macro has been submitted for inclusion into #
-+# GNU Autoconf as AC_PROG_SED. When it is available in #
-+# a released version of Autoconf we should remove this #
-+# macro and use it instead. #
-+# LT_AC_PROG_SED
-+# --------------
-+# Check for a fully-functional sed program, that truncates
-+# as few characters as possible. Prefer GNU sed if found.
-+AC_DEFUN([LT_AC_PROG_SED],
-+[AC_MSG_CHECKING([for a sed that does not truncate output])
-+AC_CACHE_VAL(lt_cv_path_SED,
-+[# Loop through the user's path and test for sed and gsed.
-+# Then use that list of sed's as ones to test for truncation.
-+as_executable_p="test -f"
-+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_prog in sed gsed; do
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-+ _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext"
-+ fi
-+ done
-+ done
-+done
-+
-+ # Create a temporary directory, and hook for its removal unless debugging.
-+$debug ||
-+{
-+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-+ trap '{ (exit 1); exit 1; }' 1 2 13 15
-+}
-+
-+# Create a (secure) tmp directory for tmp files.
-+: ${TMPDIR=/tmp}
-+{
-+ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` &&
-+ test -n "$tmp" && test -d "$tmp"
-+} ||
-+{
-+ tmp=$TMPDIR/sed$$-$RANDOM
-+ (umask 077 && mkdir $tmp)
-+} ||
-+{
-+ echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-+ { (exit 1); exit 1; }
-+}
-+ _max=0
-+ _count=0
-+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
-+ # along with /bin/sed that truncates output.
-+ for _sed in $_sed_list /usr/xpg4/bin/sed; do
-+ test ! -f ${_sed} && break
-+ cat /dev/null > "$tmp/sed.in"
-+ _count=0
-+ echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in"
-+ # Check for GNU sed and select it if it is found.
-+ if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then
-+ lt_cv_path_SED=${_sed}
-+ break
-+ fi
-+ while true; do
-+ cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp"
-+ mv "$tmp/sed.tmp" "$tmp/sed.in"
-+ cp "$tmp/sed.in" "$tmp/sed.nl"
-+ echo >>"$tmp/sed.nl"
-+ ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break
-+ cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break
-+ # 40000 chars as input seems more than enough
-+ test $_count -gt 10 && break
-+ _count=`expr $_count + 1`
-+ if test $_count -gt $_max; then
-+ _max=$_count
-+ lt_cv_path_SED=$_sed
-+ fi
-+ done
-+ done
-+ rm -rf "$tmp"
-+])
-+if test "X$SED" != "X"; then
-+ lt_cv_path_SED=$SED
-+else
-+ SED=$lt_cv_path_SED
-+fi
-+AC_MSG_RESULT([$SED])
-+])
-+
---- linux-atm-2.4.1.orig/config.guess
-+++ linux-atm-2.4.1/config.guess
-@@ -1,9 +1,9 @@
- #! /bin/sh
- # Attempt to guess a canonical system name.
--# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
--# Free Software Foundation, Inc.
-+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-
--timestamp='2001-04-20'
-+timestamp='2003-05-19'
-
- # 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
-@@ -24,8 +24,9 @@
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
-
--# Written by Per Bothner <bothner@cygnus.com>.
--# Please send patches to <config-patches@gnu.org>.
-+# Originally written by Per Bothner <per@bothner.com>.
-+# Please send patches to <config-patches@gnu.org>. Submit a context
-+# diff and a properly formatted ChangeLog entry.
- #
- # This script attempts to guess a canonical system name similar to
- # config.sub. If it succeeds, it prints the system name on stdout, and
-@@ -52,7 +53,7 @@
- GNU config.guess ($timestamp)
-
- Originally written by Per Bothner.
--Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
- Free Software Foundation, Inc.
-
- This is free software; see the source for copying conditions. There is NO
-@@ -87,33 +88,44 @@
- exit 1
- fi
-
-+trap 'exit 1' 1 2 15
-
--dummy=dummy-$$
--trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
-+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-+# compiler to aid in system detection is discouraged as it requires
-+# temporary files to be created and, as you can see below, it is a
-+# headache to deal with in a portable fashion.
-
--# CC_FOR_BUILD -- compiler used by this script.
- # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
- # use `HOST_CC' if defined, but it is deprecated.
-
-+# Portable tmp directory creation inspired by the Autoconf team.
-+
-+set_cc_for_build='
-+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-+: ${TMPDIR=/tmp} ;
-+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
-+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
-+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-+dummy=$tmp/dummy ;
-+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
- case $CC_FOR_BUILD,$HOST_CC,$CC in
-- ,,) echo "int dummy(){}" > $dummy.c
-- for c in cc gcc c89 ; do
-- ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1
-- if test $? = 0 ; then
-- CC_FOR_BUILD="$c"; break
-- fi
-- done
-- rm -f $dummy.c $dummy.o $dummy.rel
-+ ,,) echo "int x;" > $dummy.c ;
-+ for c in cc gcc c89 c99 ; do
-+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-+ CC_FOR_BUILD="$c"; break ;
-+ fi ;
-+ done ;
- if test x"$CC_FOR_BUILD" = x ; then
-- CC_FOR_BUILD=no_compiler_found
-+ CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
--esac
-+esac ;'
-
- # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
--# (ghazi@noc.rutgers.edu 8/24/94.)
-+# (ghazi@noc.rutgers.edu 1994-08-24)
- if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
- fi
-@@ -127,29 +139,31 @@
-
- case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
-- # Netbsd (nbsd) targets should (where applicable) match one or
-+ # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
-- # Determine the machine/vendor (is the vendor relevant).
-- case "${UNAME_MACHINE}" in
-- amiga) machine=m68k-unknown ;;
-- arm32) machine=arm-unknown ;;
-- atari*) machine=m68k-atari ;;
-- sun3*) machine=m68k-sun ;;
-- mac68k) machine=m68k-apple ;;
-- macppc) machine=powerpc-apple ;;
-- hp3[0-9][05]) machine=m68k-hp ;;
-- ibmrt|romp-ibm) machine=romp-ibm ;;
-- *) machine=${UNAME_MACHINE}-unknown ;;
-+ #
-+ # Note: NetBSD doesn't particularly care about the vendor
-+ # portion of the name. We always set it to "unknown".
-+ sysctl="sysctl -n hw.machine_arch"
-+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-+ case "${UNAME_MACHINE_ARCH}" in
-+ armeb) machine=armeb-unknown ;;
-+ arm*) machine=arm-unknown ;;
-+ sh3el) machine=shl-unknown ;;
-+ sh3eb) machine=sh-unknown ;;
-+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
-- case "${UNAME_MACHINE}" in
-- i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k)
-+ case "${UNAME_MACHINE_ARCH}" in
-+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-+ eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
- then
-@@ -165,69 +179,107 @@
- ;;
- esac
- # The OS release
-- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+ # Debian GNU/NetBSD machines have a different userland, and
-+ # thus, need a distinct triplet. However, they do not need
-+ # kernel version information, so it can be replaced with a
-+ # suitable tag, in the style of linux-gnu.
-+ case "${UNAME_VERSION}" in
-+ Debian*)
-+ release='-gnu'
-+ ;;
-+ *)
-+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+ ;;
-+ esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit 0 ;;
-+ amiga:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ arc:OpenBSD:*:*)
-+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ hp300:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ mac68k:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ macppc:OpenBSD:*:*)
-+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ mvme68k:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ mvme88k:OpenBSD:*:*)
-+ echo m88k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ mvmeppc:OpenBSD:*:*)
-+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ pmax:OpenBSD:*:*)
-+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ sgi:OpenBSD:*:*)
-+ echo mipseb-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ sun3:OpenBSD:*:*)
-+ echo m68k-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ wgrisc:OpenBSD:*:*)
-+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
-+ *:OpenBSD:*:*)
-+ echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
-+ exit 0 ;;
- alpha:OSF1:*:*)
- if test $UNAME_RELEASE = "V4.0"; then
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- fi
-+ # According to Compaq, /usr/sbin/psrinfo has been available on
-+ # OSF/1 and Tru64 systems produced since 1995. I hope that
-+ # covers most systems running today. This code pipes the CPU
-+ # types through head -n 1, so we only detect the type of CPU 0.
-+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-+ case "$ALPHA_CPU_TYPE" in
-+ "EV4 (21064)")
-+ UNAME_MACHINE="alpha" ;;
-+ "EV4.5 (21064)")
-+ UNAME_MACHINE="alpha" ;;
-+ "LCA4 (21066/21068)")
-+ UNAME_MACHINE="alpha" ;;
-+ "EV5 (21164)")
-+ UNAME_MACHINE="alphaev5" ;;
-+ "EV5.6 (21164A)")
-+ UNAME_MACHINE="alphaev56" ;;
-+ "EV5.6 (21164PC)")
-+ UNAME_MACHINE="alphapca56" ;;
-+ "EV5.7 (21164PC)")
-+ UNAME_MACHINE="alphapca57" ;;
-+ "EV6 (21264)")
-+ UNAME_MACHINE="alphaev6" ;;
-+ "EV6.7 (21264A)")
-+ UNAME_MACHINE="alphaev67" ;;
-+ "EV6.8CB (21264C)")
-+ UNAME_MACHINE="alphaev68" ;;
-+ "EV6.8AL (21264B)")
-+ UNAME_MACHINE="alphaev68" ;;
-+ "EV6.8CX (21264D)")
-+ UNAME_MACHINE="alphaev68" ;;
-+ "EV6.9A (21264/EV69A)")
-+ UNAME_MACHINE="alphaev69" ;;
-+ "EV7 (21364)")
-+ UNAME_MACHINE="alphaev7" ;;
-+ "EV7.9 (21364A)")
-+ UNAME_MACHINE="alphaev79" ;;
-+ esac
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
-- cat <<EOF >$dummy.s
-- .data
--\$Lformat:
-- .byte 37,100,45,37,120,10,0 # "%d-%x\n"
--
-- .text
-- .globl main
-- .align 4
-- .ent main
--main:
-- .frame \$30,16,\$26,0
-- ldgp \$29,0(\$27)
-- .prologue 1
-- .long 0x47e03d80 # implver \$0
-- lda \$2,-1
-- .long 0x47e20c21 # amask \$2,\$1
-- lda \$16,\$Lformat
-- mov \$0,\$17
-- not \$1,\$18
-- jsr \$26,printf
-- ldgp \$29,0(\$26)
-- mov 0,\$16
-- jsr \$26,exit
-- .end main
--EOF
-- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
-- if test "$?" = 0 ; then
-- case `./$dummy` in
-- 0-0)
-- UNAME_MACHINE="alpha"
-- ;;
-- 1-0)
-- UNAME_MACHINE="alphaev5"
-- ;;
-- 1-1)
-- UNAME_MACHINE="alphaev56"
-- ;;
-- 1-101)
-- UNAME_MACHINE="alphapca56"
-- ;;
-- 2-303)
-- UNAME_MACHINE="alphaev6"
-- ;;
-- 2-307)
-- UNAME_MACHINE="alphaev67"
-- ;;
-- esac
-- fi
-- rm -f $dummy.s $dummy
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
- Alpha\ *:Windows_NT*:*)
-@@ -242,29 +294,11 @@
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit 0;;
-- amiga:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
-- arc64:OpenBSD:*:*)
-- echo mips64el-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- arc:OpenBSD:*:*)
-- echo mipsel-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- hkmips:OpenBSD:*:*)
-- echo mips-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- pmax:OpenBSD:*:*)
-- echo mipsel-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- sgi:OpenBSD:*:*)
-- echo mips-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- wgrisc:OpenBSD:*:*)
-- echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+ *:[Mm]orph[Oo][Ss]:*:*)
-+ echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
-@@ -286,6 +320,10 @@
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit 0 ;;
-+ DRS?6000:UNIX_SV:4.2*:7*)
-+ case `/usr/bin/uname -p` in
-+ sparc) echo sparc-icl-nx7 && exit 0 ;;
-+ esac ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
-@@ -314,7 +352,7 @@
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
- sun*:*:4.2BSD:*)
-- UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
-@@ -328,9 +366,6 @@
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
-- atari*:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
-@@ -357,18 +392,6 @@
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
-- sun3*:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- mac68k:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- mvme68k:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
-- mvme88k:OpenBSD:*:*)
-- echo m88k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
-@@ -385,6 +408,7 @@
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
-+ eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #ifdef __cplusplus
- #include <stdio.h> /* for printf() prototype */
-@@ -406,15 +430,20 @@
- exit (-1);
- }
- EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy \
-- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-- && rm -f $dummy.c $dummy && exit 0
-- rm -f $dummy.c $dummy
-+ $CC_FOR_BUILD -o $dummy $dummy.c \
-+ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-+ && exit 0
- echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit 0 ;;
-+ Motorola:*:4.3:PL8-*)
-+ echo powerpc-harris-powermax
-+ exit 0 ;;
-+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-+ echo powerpc-harris-powermax
-+ exit 0 ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit 0 ;;
-@@ -475,6 +504,7 @@
- exit 0 ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-+ eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
-@@ -486,8 +516,7 @@
- exit(0);
- }
- EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
-- rm -f $dummy.c $dummy
-+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo rs6000-ibm-aix3.2.5
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
-@@ -496,7 +525,7 @@
- fi
- exit 0 ;;
- *:AIX:*:[45])
-- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
-+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
-@@ -536,10 +565,8 @@
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
-- case "${HPUX_REV}" in
-- 11.[0-9][0-9])
-- if [ -x /usr/bin/getconf ]; then
-- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-+ if [ -x /usr/bin/getconf ]; then
-+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-@@ -548,12 +575,13 @@
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
-+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
-- fi ;;
-- esac
-- if [ "${HP_ARCH}" = "" ]; then
-- sed 's/^ //' << EOF >$dummy.c
-+ fi
-+ if [ "${HP_ARCH}" = "" ]; then
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-
- #define _HPUX_SOURCE
- #include <stdlib.h>
-@@ -586,11 +614,21 @@
- exit (0);
- }
- EOF
-- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
-- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
-- rm -f $dummy.c $dummy
-- fi ;;
-+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-+ test -z "$HP_ARCH" && HP_ARCH=hppa
-+ fi ;;
- esac
-+ if [ ${HP_ARCH} = "hppa2.0w" ]
-+ then
-+ # avoid double evaluation of $set_cc_for_build
-+ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
-+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
-+ then
-+ HP_ARCH="hppa2.0w"
-+ else
-+ HP_ARCH="hppa64"
-+ fi
-+ fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
- ia64:HP-UX:*:*)
-@@ -598,6 +636,7 @@
- echo ia64-hp-hpux${HPUX_REV}
- exit 0 ;;
- 3050*:HI-UX:*:*)
-+ eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
-@@ -623,8 +662,7 @@
- exit (0);
- }
- EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
-- rm -f $dummy.c $dummy
-+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo unknown-hitachi-hiuxwe2
- exit 0 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-@@ -633,7 +671,7 @@
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
-- *9??*:MPE/iX:*:*)
-+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-@@ -652,9 +690,6 @@
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit 0 ;;
-- hppa*:OpenBSD:*:*)
-- echo hppa-unknown-openbsd
-- exit 0 ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit 0 ;;
-@@ -673,41 +708,33 @@
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit 0 ;;
-- CRAY*X-MP:*:*:*)
-- echo xmp-cray-unicos
-- exit 0 ;;
- CRAY*Y-MP:*:*:*)
-- echo ymp-cray-unicos${UNAME_RELEASE}
-+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
-+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-+ -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
-- CRAY*T3D:*:*:*)
-- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-- exit 0 ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
-- CRAY-2:*:*:*)
-- echo cray2-cray-unicos
-- exit 0 ;;
-+ *:UNICOS/mp:*:*)
-+ echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-+ exit 0 ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
-- hp300:OpenBSD:*:*)
-- echo m68k-unknown-openbsd${UNAME_RELEASE}
-- exit 0 ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
-@@ -717,11 +744,19 @@
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
-- *:FreeBSD:*:*)
-- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-- exit 0 ;;
-- *:OpenBSD:*:*)
-- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+ *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
-+ # Determine whether the default compiler uses glibc.
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #include <features.h>
-+ #if __GLIBC__ >= 2
-+ LIBC=gnu
-+ #else
-+ LIBC=
-+ #endif
-+EOF
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
- exit 0 ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
-@@ -732,11 +767,17 @@
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit 0 ;;
-+ x86:Interix*:3*)
-+ echo i586-pc-interix3
-+ exit 0 ;;
-+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-+ echo i${UNAME_MACHINE}-pc-mks
-+ exit 0 ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
-- echo i386-pc-interix
-+ echo i586-pc-interix
- exit 0 ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
-@@ -756,104 +797,71 @@
- arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
-+ cris:Linux:*:*)
-+ echo cris-axis-linux-gnu
-+ exit 0 ;;
- ia64:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- mips:Linux:*:*)
-- cat >$dummy.c <<EOF
--#ifdef __cplusplus
--#include <stdio.h> /* for printf() prototype */
--int main (int argc, char *argv[]) {
--#else
--int main (argc, argv) int argc; char *argv[]; {
--#endif
--#ifdef __MIPSEB__
-- printf ("%s-unknown-linux-gnu\n", argv[1]);
--#endif
--#ifdef __MIPSEL__
-- printf ("%sel-unknown-linux-gnu\n", argv[1]);
--#endif
-- return 0;
--}
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #undef CPU
-+ #undef mips
-+ #undef mipsel
-+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-+ CPU=mipsel
-+ #else
-+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-+ CPU=mips
-+ #else
-+ CPU=
-+ #endif
-+ #endif
- EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
-- rm -f $dummy.c $dummy
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
- ;;
-- ppc:Linux:*:*)
-- # Determine Lib Version
-- cat >$dummy.c <<EOF
--#include <features.h>
--#if defined(__GLIBC__)
--extern char __libc_version[];
--extern char __libc_release[];
--#endif
--main(argc, argv)
-- int argc;
-- char *argv[];
--{
--#if defined(__GLIBC__)
-- printf("%s %s\n", __libc_version, __libc_release);
--#else
-- printf("unknown\n");
--#endif
-- return 0;
--}
-+ mips64:Linux:*:*)
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #undef CPU
-+ #undef mips64
-+ #undef mips64el
-+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-+ CPU=mips64el
-+ #else
-+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-+ CPU=mips64
-+ #else
-+ CPU=
-+ #endif
-+ #endif
- EOF
-- LIBC=""
-- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
-- if test "$?" = 0 ; then
-- ./$dummy | grep 1\.99 > /dev/null
-- if test "$?" = 0 ; then LIBC="libc1" ; fi
-- fi
-- rm -f $dummy.c $dummy
-- echo powerpc-unknown-linux-gnu${LIBC}
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
-+ ;;
-+ ppc:Linux:*:*)
-+ echo powerpc-unknown-linux-gnu
-+ exit 0 ;;
-+ ppc64:Linux:*:*)
-+ echo powerpc64-unknown-linux-gnu
- exit 0 ;;
- alpha:Linux:*:*)
-- cat <<EOF >$dummy.s
-- .data
-- \$Lformat:
-- .byte 37,100,45,37,120,10,0 # "%d-%x\n"
-- .text
-- .globl main
-- .align 4
-- .ent main
-- main:
-- .frame \$30,16,\$26,0
-- ldgp \$29,0(\$27)
-- .prologue 1
-- .long 0x47e03d80 # implver \$0
-- lda \$2,-1
-- .long 0x47e20c21 # amask \$2,\$1
-- lda \$16,\$Lformat
-- mov \$0,\$17
-- not \$1,\$18
-- jsr \$26,printf
-- ldgp \$29,0(\$26)
-- mov 0,\$16
-- jsr \$26,exit
-- .end main
--EOF
-- LIBC=""
-- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
-- if test "$?" = 0 ; then
-- case `./$dummy` in
-- 0-0) UNAME_MACHINE="alpha" ;;
-- 1-0) UNAME_MACHINE="alphaev5" ;;
-- 1-1) UNAME_MACHINE="alphaev56" ;;
-- 1-101) UNAME_MACHINE="alphapca56" ;;
-- 2-303) UNAME_MACHINE="alphaev6" ;;
-- 2-307) UNAME_MACHINE="alphaev67" ;;
-- esac
-- objdump --private-headers $dummy | \
-- grep ld.so.1 > /dev/null
-- if test "$?" = 0 ; then
-- LIBC="libc1"
-- fi
-- fi
-- rm -f $dummy.s $dummy
-+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-+ EV5) UNAME_MACHINE=alphaev5 ;;
-+ EV56) UNAME_MACHINE=alphaev56 ;;
-+ PCA56) UNAME_MACHINE=alphapca56 ;;
-+ PCA57) UNAME_MACHINE=alphapca56 ;;
-+ EV6) UNAME_MACHINE=alphaev6 ;;
-+ EV67) UNAME_MACHINE=alphaev67 ;;
-+ EV68*) UNAME_MACHINE=alphaev68 ;;
-+ esac
-+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit 0 ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
-@@ -883,71 +891,59 @@
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
-- ld_supported_emulations=`cd /; ld --help 2>&1 \
-- | sed -ne '/supported emulations:/!d
-+ # Set LC_ALL=C to ensure ld outputs messages in English.
-+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-+ | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
-- s/.*supported emulations: *//
-+ s/.*supported targets: *//
- s/ .*//
- p'`
-- case "$ld_supported_emulations" in
-- i*86linux)
-- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-- exit 0
-- ;;
-- elf_i*86)
-+ case "$ld_supported_targets" in
-+ elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
-- i*86coff)
-+ a.out-i386-linux)
-+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-+ exit 0 ;;
-+ coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-- exit 0
-- ;;
-- esac
-- # Either a pre-BFD a.out linker (linux-gnuoldld)
-- # or one that does not give us useful --help.
-- # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
-- # If ld does not provide *any* "supported emulations:"
-- # that means it is gnuoldld.
-- test -z "$ld_supported_emulations" && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
-- case "${UNAME_MACHINE}" in
-- i*86)
-- VENDOR=pc;
-- ;;
-- *)
-- VENDOR=unknown;
-- ;;
-+ exit 0 ;;
-+ "")
-+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
-+ # one that does not give us useful --help.
-+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-+ exit 0 ;;
- esac
- # Determine whether the default compiler is a.out or elf
-- cat >$dummy.c <<EOF
--#include <features.h>
--#ifdef __cplusplus
--#include <stdio.h> /* for printf() prototype */
-- int main (int argc, char *argv[]) {
--#else
-- int main (argc, argv) int argc; char *argv[]; {
--#endif
--#ifdef __ELF__
--# ifdef __GLIBC__
--# if __GLIBC__ >= 2
-- printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
--# else
-- printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
--# endif
--# else
-- printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
--# endif
--#else
-- printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
--#endif
-- return 0;
--}
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #include <features.h>
-+ #ifdef __ELF__
-+ # ifdef __GLIBC__
-+ # if __GLIBC__ >= 2
-+ LIBC=gnu
-+ # else
-+ LIBC=gnulibc1
-+ # endif
-+ # else
-+ LIBC=gnulibc1
-+ # endif
-+ #else
-+ #ifdef __INTEL_COMPILER
-+ LIBC=gnu
-+ #else
-+ LIBC=gnuaout
-+ #endif
-+ #endif
- EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
-- rm -f $dummy.c $dummy
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-+ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
- ;;
--# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
--# are messed up and put the nodename in both sysname and nodename.
- i*86:DYNIX/ptx:4*:*)
-+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-+ # earlier versions are messed up and put the nodename in both
-+ # sysname and nodename.
- echo i386-sequent-sysv4
- exit 0 ;;
- i*86:UNIX_SV:4.2MP:2.*)
-@@ -958,6 +954,23 @@
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
-+ i*86:OS/2:*:*)
-+ # If we were able to find `uname', then EMX Unix compatibility
-+ # is probably installed.
-+ echo ${UNAME_MACHINE}-pc-os2-emx
-+ exit 0 ;;
-+ i*86:XTS-300:*:STOP)
-+ echo ${UNAME_MACHINE}-unknown-stop
-+ exit 0 ;;
-+ i*86:atheos:*:*)
-+ echo ${UNAME_MACHINE}-unknown-atheos
-+ exit 0 ;;
-+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-+ echo i386-unknown-lynxos${UNAME_RELEASE}
-+ exit 0 ;;
-+ i*86:*DOS:*:*)
-+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
-+ exit 0 ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-@@ -966,36 +979,32 @@
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit 0 ;;
-- i*86:*:5:7*)
-- # Fixed at (any) Pentium or better
-- UNAME_MACHINE=i586
-- if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
-- echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
-- else
-- echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
-- fi
-+ i*86:*:5:[78]*)
-+ case `/bin/uname -X | grep "^Machine"` in
-+ *486*) UNAME_MACHINE=i486 ;;
-+ *Pentium) UNAME_MACHINE=i586 ;;
-+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-+ esac
-+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit 0 ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
-- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
-- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
-- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
-+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
-- (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
-+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- && UNAME_MACHINE=i686
-- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
-+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit 0 ;;
-- i*86:*DOS:*:*)
-- echo ${UNAME_MACHINE}-pc-msdosdjgpp
-- exit 0 ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
-@@ -1019,9 +1028,15 @@
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
-+ mc68k:UNIX:SYSTEM5:3.51m)
-+ echo m68k-convergent-sysv
-+ exit 0 ;;
-+ M680?0:D-NIX:5.3:*)
-+ echo m68k-diab-dnix
-+ exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
-+ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-@@ -1038,9 +1053,6 @@
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit 0 ;;
-- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-- echo i386-unknown-lynxos${UNAME_RELEASE}
-- exit 0 ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
-@@ -1067,8 +1079,8 @@
- echo ns32k-sni-sysv
- fi
- exit 0 ;;
-- PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-- # says <Richard.M.Bartel@ccMail.Census.GOV>
-+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-+ # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit 0 ;;
- *:UNIX_System_V:4*:FTX*)
-@@ -1080,6 +1092,10 @@
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit 0 ;;
-+ *:VOS:*:*)
-+ # From Paul.Green@stratus.com.
-+ echo hppa1.1-stratus-vos
-+ exit 0 ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
-@@ -1108,6 +1124,9 @@
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
-+ SX-6:SUPER-UX:*:*)
-+ echo sx6-nec-superux${UNAME_RELEASE}
-+ exit 0 ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
-@@ -1115,18 +1134,24 @@
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Darwin:*:*)
-- echo `uname -p`-apple-darwin${UNAME_RELEASE}
-+ case `uname -p` in
-+ *86) UNAME_PROCESSOR=i686 ;;
-+ powerpc) UNAME_PROCESSOR=powerpc ;;
-+ esac
-+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
-- if test "${UNAME_MACHINE}" = "x86pc"; then
-+ UNAME_PROCESSOR=`uname -p`
-+ if test "$UNAME_PROCESSOR" = "x86"; then
-+ UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
-- echo `uname -p`-${UNAME_MACHINE}-nto-qnx
-+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit 0 ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit 0 ;;
-- NSR-[KW]:NONSTOP_KERNEL:*:*)
-+ NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit 0 ;;
- *:NonStop-UX:*:*)
-@@ -1149,11 +1174,6 @@
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit 0 ;;
-- i*86:OS/2:*:*)
-- # If we were able to find `uname', then EMX Unix compatibility
-- # is probably installed.
-- echo ${UNAME_MACHINE}-pc-os2-emx
-- exit 0 ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit 0 ;;
-@@ -1177,6 +1197,7 @@
- #echo '(No uname command or uname output not recognized.)' 1>&2
- #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-+eval $set_cc_for_build
- cat >$dummy.c <<EOF
- #ifdef _SEQUENT_
- # include <sys/types.h>
-@@ -1291,8 +1312,7 @@
- }
- EOF
-
--$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
--rm -f $dummy.c $dummy
-+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
-
- # Apollos put the system type in the environment.
-
---- linux-atm-2.4.1.orig/config.h.in
-+++ linux-atm-2.4.1/config.h.in
-@@ -1,4 +1,4 @@
--/* config.h.in. Generated automatically from configure.in by autoheader. */
-+/* config.h.in. Generated automatically from configure.in by autoheader 2.13. */
- #ifndef _ATM_CONFIG_H
- #define _ATM_CONFIG_H
-
---- linux-atm-2.4.1.orig/config.sub
-+++ linux-atm-2.4.1/config.sub
-@@ -1,9 +1,9 @@
- #! /bin/sh
- # Configuration validation subroutine script.
--# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
--# Free Software Foundation, Inc.
-+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-
--timestamp='2001-04-20'
-+timestamp='2003-05-09'
-
- # This file is (in principle) common to ALL GNU software.
- # The presence of a machine in this file suggests that SOME GNU software
-@@ -29,7 +29,8 @@
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
-
--# Please send patches to <config-patches@gnu.org>.
-+# Please send patches to <config-patches@gnu.org>. Submit a context
-+# diff and a properly formatted ChangeLog entry.
- #
- # Configuration subroutine to validate and canonicalize a configuration type.
- # Supply the specified configuration type as an argument.
-@@ -117,7 +118,7 @@
- # Here we must recognize all the valid KERNEL-OS combinations.
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
- case $maybe_os in
-- nto-qnx* | linux-gnu* | storm-chaos* | os2-emx*)
-+ nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
-@@ -157,6 +158,14 @@
- os=-vxworks
- basic_machine=$1
- ;;
-+ -chorusos*)
-+ os=-chorusos
-+ basic_machine=$1
-+ ;;
-+ -chorusrdb)
-+ os=-chorusrdb
-+ basic_machine=$1
-+ ;;
- -hiux*)
- os=-hiuxwe2
- ;;
-@@ -215,26 +224,48 @@
- case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
-- tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \
-- | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \
-- | pyramid | mn10200 | mn10300 | tron | a29k \
-- | 580 | i960 | h8300 \
-- | x86 | ppcbe | mipsbe | mipsle | shbe | shle \
-- | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
-- | hppa64 \
-- | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
-- | alphaev6[78] \
-- | we32k | ns16k | clipper | i370 | sh | sh[34] \
-- | powerpc | powerpcle \
-- | 1750a | dsp16xx | pdp10 | pdp11 \
-- | mips16 | mips64 | mipsel | mips64el \
-- | mips64orion | mips64orionel | mipstx39 | mipstx39el \
-- | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
-- | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \
-- | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \
-- | v850 | c4x \
-- | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \
-- | pj | pjl | h8500)
-+ 1750a | 580 \
-+ | a29k \
-+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
-+ | clipper \
-+ | d10v | d30v | dlx | dsp16xx \
-+ | fr30 | frv \
-+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-+ | i370 | i860 | i960 | ia64 \
-+ | ip2k \
-+ | m32r | m68000 | m68k | m88k | mcore \
-+ | mips | mipsbe | mipseb | mipsel | mipsle \
-+ | mips16 \
-+ | mips64 | mips64el \
-+ | mips64vr | mips64vrel \
-+ | mips64orion | mips64orionel \
-+ | mips64vr4100 | mips64vr4100el \
-+ | mips64vr4300 | mips64vr4300el \
-+ | mips64vr5000 | mips64vr5000el \
-+ | mipsisa32 | mipsisa32el \
-+ | mipsisa32r2 | mipsisa32r2el \
-+ | mipsisa64 | mipsisa64el \
-+ | mipsisa64sb1 | mipsisa64sb1el \
-+ | mipsisa64sr71k | mipsisa64sr71kel \
-+ | mipstx39 | mipstx39el \
-+ | mn10200 | mn10300 \
-+ | msp430 \
-+ | ns16k | ns32k \
-+ | openrisc | or32 \
-+ | pdp10 | pdp11 | pj | pjl \
-+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-+ | pyramid \
-+ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
-+ | sh64 | sh64le \
-+ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
-+ | strongarm \
-+ | tahoe | thumb | tic80 | tron \
-+ | v850 | v850e \
-+ | we32k \
-+ | x86 | xscale | xstormy16 | xtensa \
-+ | z8k)
- basic_machine=$basic_machine-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12)
-@@ -242,7 +273,7 @@
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
-- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | w65)
-+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
-
- # We use `pc' rather than `unknown'
-@@ -257,31 +288,60 @@
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
-- # FIXME: clean up the formatting here.
-- vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
-- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \
-- | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \
-- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
-- | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
-- | xmp-* | ymp-* \
-- | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \
-- | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
-- | hppa2.0n-* | hppa64-* \
-- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
-- | alphaev6[78]-* \
-- | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
-- | clipper-* | orion-* \
-- | sparclite-* | pdp10-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
-- | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \
-- | mips16-* | mips64-* | mipsel-* \
-- | mips64el-* | mips64orion-* | mips64orionel-* \
-- | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
-- | mipstx39-* | mipstx39el-* | mcore-* \
-- | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \
-- | [cjt]90-* \
-- | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
-- | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \
-- | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*)
-+ 580-* \
-+ | a29k-* \
-+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
-+ | avr-* \
-+ | bs2000-* \
-+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-+ | clipper-* | cydra-* \
-+ | d10v-* | d30v-* | dlx-* \
-+ | elxsi-* \
-+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
-+ | h8300-* | h8500-* \
-+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-+ | i*86-* | i860-* | i960-* | ia64-* \
-+ | ip2k-* \
-+ | m32r-* \
-+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-+ | m88110-* | m88k-* | mcore-* \
-+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-+ | mips16-* \
-+ | mips64-* | mips64el-* \
-+ | mips64vr-* | mips64vrel-* \
-+ | mips64orion-* | mips64orionel-* \
-+ | mips64vr4100-* | mips64vr4100el-* \
-+ | mips64vr4300-* | mips64vr4300el-* \
-+ | mips64vr5000-* | mips64vr5000el-* \
-+ | mipsisa32-* | mipsisa32el-* \
-+ | mipsisa32r2-* | mipsisa32r2el-* \
-+ | mipsisa64-* | mipsisa64el-* \
-+ | mipsisa64sb1-* | mipsisa64sb1el-* \
-+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-+ | mipstx39-* | mipstx39el-* \
-+ | msp430-* \
-+ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
-+ | orion-* \
-+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-+ | pyramid-* \
-+ | romp-* | rs6000-* \
-+ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
-+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-+ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
-+ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
-+ | tahoe-* | thumb-* \
-+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-+ | tron-* \
-+ | v850-* | v850e-* | vax-* \
-+ | we32k-* \
-+ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
-+ | xtensa-* \
-+ | ymp-* \
-+ | z8k-*)
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
-@@ -313,6 +373,9 @@
- basic_machine=a29k-none
- os=-bsd
- ;;
-+ amd64)
-+ basic_machine=x86_64-pc
-+ ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
-@@ -344,6 +407,10 @@
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
-+ c90)
-+ basic_machine=c90-cray
-+ os=-unicos
-+ ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
-@@ -364,16 +431,8 @@
- basic_machine=c38-convex
- os=-bsd
- ;;
-- cray | ymp)
-- basic_machine=ymp-cray
-- os=-unicos
-- ;;
-- cray2)
-- basic_machine=cray2-cray
-- os=-unicos
-- ;;
-- [cjt]90)
-- basic_machine=${basic_machine}-cray
-+ cray | j90)
-+ basic_machine=j90-cray
- os=-unicos
- ;;
- crds | unos)
-@@ -388,6 +447,14 @@
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
-+ decsystem10* | dec10*)
-+ basic_machine=pdp10-dec
-+ os=-tops10
-+ ;;
-+ decsystem20* | dec20*)
-+ basic_machine=pdp10-dec
-+ os=-tops20
-+ ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
-@@ -568,14 +635,6 @@
- basic_machine=m68k-atari
- os=-mint
- ;;
-- mipsel*-linux*)
-- basic_machine=mipsel-unknown
-- os=-linux-gnu
-- ;;
-- mips*-linux*)
-- basic_machine=mips-unknown
-- os=-linux-gnu
-- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
-@@ -590,6 +649,10 @@
- basic_machine=m68k-rom68k
- os=-coff
- ;;
-+ morphos)
-+ basic_machine=powerpc-unknown
-+ os=-morphos
-+ ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
-@@ -662,6 +725,10 @@
- np1)
- basic_machine=np1-gould
- ;;
-+ nv1)
-+ basic_machine=nv1-cray
-+ os=-unicosmp
-+ ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
-@@ -669,6 +736,10 @@
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
-+ or32 | or32-*)
-+ basic_machine=or32-unknown
-+ os=-coff
-+ ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
-@@ -691,19 +762,19 @@
- pbb)
- basic_machine=m68k-tti
- ;;
-- pc532 | pc532-*)
-+ pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
-- pentium | p5 | k5 | k6 | nexgen)
-+ pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
-- pentiumpro | p6 | 6x86 | athlon)
-+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2)
- basic_machine=i686-pc
- ;;
-- pentium-* | p5-* | k5-* | k6-* | nexgen-*)
-+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
-@@ -718,15 +789,25 @@
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
-- ;;
-+ ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
-- ;;
-+ ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
-+ ppc64) basic_machine=powerpc64-unknown
-+ ;;
-+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
-+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-+ basic_machine=powerpc64le-unknown
-+ ;;
-+ ppc64le-* | powerpc64little-*)
-+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
- ps2)
- basic_machine=i386-ibm
- ;;
-@@ -744,10 +825,22 @@
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
-+ s390 | s390-*)
-+ basic_machine=s390-ibm
-+ ;;
-+ s390x | s390x-*)
-+ basic_machine=s390x-ibm
-+ ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
-+ sb1)
-+ basic_machine=mipsisa64sb1-unknown
-+ ;;
-+ sb1el)
-+ basic_machine=mipsisa64sb1el-unknown
-+ ;;
- sequent)
- basic_machine=i386-sequent
- ;;
-@@ -755,7 +848,7 @@
- basic_machine=sh-hitachi
- os=-hms
- ;;
-- sparclite-wrs)
-+ sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
-@@ -822,19 +915,39 @@
- os=-dynix
- ;;
- t3e)
-- basic_machine=t3e-cray
-+ basic_machine=alphaev5-cray
- os=-unicos
- ;;
-+ t90)
-+ basic_machine=t90-cray
-+ os=-unicos
-+ ;;
-+ tic4x | c4x*)
-+ basic_machine=tic4x-unknown
-+ os=-coff
-+ ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
-+ tic55x | c55x*)
-+ basic_machine=tic55x-unknown
-+ os=-coff
-+ ;;
-+ tic6x | c6x*)
-+ basic_machine=tic6x-unknown
-+ os=-coff
-+ ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
-+ toad1)
-+ basic_machine=pdp10-xkl
-+ os=-tops20
-+ ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
-@@ -859,8 +972,8 @@
- os=-vms
- ;;
- vpp*|vx|vx-*)
-- basic_machine=f301-fujitsu
-- ;;
-+ basic_machine=f301-fujitsu
-+ ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
-@@ -881,13 +994,13 @@
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
-- xmp)
-- basic_machine=xmp-cray
-- os=-unicos
-- ;;
-- xps | xps100)
-+ xps | xps100)
- basic_machine=xps100-honeywell
- ;;
-+ ymp)
-+ basic_machine=ymp-cray
-+ os=-unicos
-+ ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
-@@ -908,13 +1021,6 @@
- op60c)
- basic_machine=hppa1.1-oki
- ;;
-- mips)
-- if [ x$os = x-linux-gnu ]; then
-- basic_machine=mips-unknown
-- else
-- basic_machine=mips-mips
-- fi
-- ;;
- romp)
- basic_machine=romp-ibm
- ;;
-@@ -934,13 +1040,16 @@
- we32k)
- basic_machine=we32k-att
- ;;
-- sh3 | sh4)
-+ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
- ;;
-+ sh64)
-+ basic_machine=sh64-unknown
-+ ;;
- sparc | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
-- cydra)
-+ cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
-@@ -955,10 +1064,6 @@
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
-- c4x*)
-- basic_machine=c4x-none
-- os=-coff
-- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
-@@ -1018,11 +1123,15 @@
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-+ | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
-- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
-+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*)
-+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-+ | -powermax* | -dnix*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
-@@ -1034,8 +1143,10 @@
- ;;
- esac
- ;;
-+ -nto-qnx*)
-+ ;;
- -nto*)
-- os=-nto-qnx
-+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
-@@ -1074,14 +1185,20 @@
- -acis*)
- os=-aos
- ;;
-+ -atheos*)
-+ os=-atheos
-+ ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
-+ -nova*)
-+ os=-rtmk-nova
-+ ;;
- -ns2 )
-- os=-nextstep2
-+ os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
-@@ -1120,8 +1237,14 @@
- -xenix)
- os=-xenix
- ;;
-- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-- os=-mint
-+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-+ os=-mint
-+ ;;
-+ -aros*)
-+ os=-aros
-+ ;;
-+ -kaos*)
-+ os=-kaos
- ;;
- -none)
- ;;
-@@ -1154,10 +1277,11 @@
- arm*-semi)
- os=-aout
- ;;
-+ # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
-- pdp11-*)
-+ pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
-@@ -1184,6 +1308,9 @@
- mips*-*)
- os=-elf
- ;;
-+ or32-*)
-+ os=-coff
-+ ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
-@@ -1247,19 +1374,19 @@
- *-next)
- os=-nextstep3
- ;;
-- *-gould)
-+ *-gould)
- os=-sysv
- ;;
-- *-highlevel)
-+ *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
-- *-sgi)
-+ *-sgi)
- os=-irix
- ;;
-- *-siemens)
-+ *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
-@@ -1331,7 +1458,7 @@
- -ptx*)
- vendor=sequent
- ;;
-- -vxsim* | -vxworks*)
-+ -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
-@@ -1346,6 +1473,9 @@
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
-+ -vos*)
-+ vendor=stratus
-+ ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
---- linux-atm-2.4.1.orig/configure
-+++ linux-atm-2.4.1/configure
-@@ -1,24 +1,244 @@
- #! /bin/sh
--
- # Guess values for system-dependent variables and create Makefiles.
--# Generated automatically using autoconf version 2.13
--# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-+# Generated by GNU Autoconf 2.57.
- #
-+# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-+# 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
-+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
-+fi
-+
-+# Support unset when possible.
-+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
-+ as_unset=unset
-+else
-+ as_unset=false
-+fi
-+
-+
-+# Work around bugs in pre-3.0 UWIN ksh.
-+$as_unset ENV MAIL MAILPATH
-+PS1='$ '
-+PS2='> '
-+PS4='+ '
-+
-+# NLS nuisances.
-+for as_var in \
-+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-+ LC_TELEPHONE LC_TIME
-+do
-+ if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
-+ eval $as_var=C; export $as_var
-+ else
-+ $as_unset $as_var
-+ fi
-+done
-+
-+# Required to use basename.
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
-+ as_basename=basename
-+else
-+ as_basename=false
-+fi
-+
-+
-+# Name of the executable.
-+as_me=`$as_basename "$0" ||
-+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ 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
-+
-+# 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: 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
-+
-+ # 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.
-+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
-+ sed '=' <$as_myself |
-+ sed '
-+ N
-+ s,$,-,
-+ : loop
-+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-+ t loop
-+ s,-$,,
-+ s,^['$as_cr_digits']*\n,,
-+ ' >$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
-+ # 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= ;;
-+esac
-+
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+rm -f conf$$ conf$$.exe conf$$.file
-+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='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
-+
-+if mkdir -p . 2>/dev/null; then
-+ as_mkdir_p=:
-+else
-+ as_mkdir_p=false
-+fi
-+
-+as_executable_p="test -f"
-+
-+# Sed expression to map a string onto a valid CPP name.
-+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-+
-+# Sed expression to map a string onto a valid variable name.
-+as_tr_sh="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
-
--# Defaults:
--ac_help=
--ac_default_prefix=/usr/local
--# Any additions from configure.in:
--ac_help="$ac_help
-- --enable-shared[=PKGS] build shared libraries [default=yes]"
--ac_help="$ac_help
-- --enable-static[=PKGS] build static libraries [default=yes]"
--ac_help="$ac_help
-- --enable-fast-install[=PKGS] optimize for fast installation [default=yes]"
--ac_help="$ac_help
-- --with-gnu-ld assume the C compiler uses GNU ld [default=no]"
-
- # Find the correct PATH separator. Usually this is `:', but
- # DJGPP uses `;' like DOS.
-@@ -28,6 +248,7 @@
- *-DOS) lt_cv_sys_path_separator=';' ;;
- *) lt_cv_sys_path_separator=':' ;;
- esac
-+ PATH_SEPARATOR=$lt_cv_sys_path_separator
- fi
-
-
-@@ -94,7 +315,7 @@
- #
- # So, first we look for a working echo in the user's PATH.
-
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
-+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for dir in $PATH /usr/ucb; do
- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-@@ -177,34 +398,86 @@
- fi
-
-
--ac_help="$ac_help
-- --disable-libtool-lock avoid locking (might break parallel builds)"
--ac_help="$ac_help
-- --with-pic try to use only PIC/non-PIC objects [default=use both]"
--ac_help="$ac_help
-- --with-uni=VERSION UNI version to use (3.0,3.1,4.0) [default=dynamic]"
--ac_help="$ac_help
-- --enable-allow_uni30 Allow UNI 3.0 backwards-compatible extensions (if using UNI 3.1)"
--ac_help="$ac_help
-- --enable-q2963_1 Enable peak cell rate modification as specified in Q.2963.1 (if using UNI 4.0)"
--ac_help="$ac_help
-- --enable-cisco Enable work around for point-to-multipoint signaling bug in Cisco LS100 or LS7010 switches"
--ac_help="$ac_help
-- --enable-thomflex Some versions of the Thomson Thomflex 5000 won't do any signaling before they get a RESTART. Enable sending of a RESTART whenever SAAL comes up."
--ac_help="$ac_help
-- --enable-mpoa_1_1 Enable proposed MPOA 1.1 features"
--ac_help="$ac_help
-- --enable-mpr Enable memory debugging (if MPR is installed)"
-+
-+# 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_config_libobj_dir=.
-+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=
-+PACKAGE_VERSION=
-+PACKAGE_STRING=
-+PACKAGE_BUGREPORT=
-+
-+ac_unique_file="src/include/atm.h"
-+# Factoring default headers for most tests.
-+ac_includes_default="\
-+#include <stdio.h>
-+#if HAVE_SYS_TYPES_H
-+# include <sys/types.h>
-+#endif
-+#if HAVE_SYS_STAT_H
-+# include <sys/stat.h>
-+#endif
-+#if STDC_HEADERS
-+# include <stdlib.h>
-+# include <stddef.h>
-+#else
-+# if HAVE_STDLIB_H
-+# include <stdlib.h>
-+# endif
-+#endif
-+#if HAVE_STRING_H
-+# if !STDC_HEADERS && HAVE_MEMORY_H
-+# include <memory.h>
-+# endif
-+# include <string.h>
-+#endif
-+#if HAVE_STRINGS_H
-+# include <strings.h>
-+#endif
-+#if HAVE_INTTYPES_H
-+# include <inttypes.h>
-+#else
-+# if HAVE_STDINT_H
-+# include <stdint.h>
-+# endif
-+#endif
-+#if 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 INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO SET_MAKE LIBVER_CURRENT LIBVER_REVISION LIBVER_AGE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LEX LEXLIB LEX_OUTPUT_ROOT YACC LN_S ECHO RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP CPP EGREP LIBTOOL LIBTOOL_DEPS PERL LIBOBJS LTLIBOBJS'
-+ac_subst_files=''
-
- # Initialize some variables set by options.
-+ac_init_help=
-+ac_init_version=false
- # The variables have the same names as the options, with
- # dashes changed to underlines.
--build=NONE
--cache_file=./config.cache
-+cache_file=/dev/null
- exec_prefix=NONE
--host=NONE
- no_create=
--nonopt=NONE
- no_recursion=
- prefix=NONE
- program_prefix=NONE
-@@ -213,10 +486,15 @@
- silent=
- site=
- srcdir=
--target=NONE
- verbose=
- x_includes=NONE
- x_libraries=NONE
-+
-+# Installation directory options.
-+# These are left unexpanded so users can "make install exec_prefix=/foo"
-+# 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.
- bindir='${exec_prefix}/bin'
- sbindir='${exec_prefix}/sbin'
- libexecdir='${exec_prefix}/libexec'
-@@ -230,17 +508,9 @@
- infodir='${prefix}/info'
- mandir='${prefix}/man'
-
--# Initialize some other variables.
--subdirs=
--MFLAGS= MAKEFLAGS=
--SHELL=${CONFIG_SHELL-/bin/sh}
--# Maximum number of lines to put in a shell here document.
--ac_max_here_lines=12
--
- ac_prev=
- for ac_option
- do
--
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
-@@ -248,59 +518,59 @@
- continue
- fi
-
-- case "$ac_option" in
-- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-- *) ac_optarg= ;;
-- esac
-+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
-- case "$ac_option" in
-+ case $ac_option in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-- bindir="$ac_optarg" ;;
-+ bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
-- ac_prev=build ;;
-+ ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-- build="$ac_optarg" ;;
-+ build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-- cache_file="$ac_optarg" ;;
-+ cache_file=$ac_optarg ;;
-+
-+ --config-cache | -C)
-+ cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
-- datadir="$ac_optarg" ;;
-+ datadir=$ac_optarg ;;
-
- -disable-* | --disable-*)
-- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
-- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-- fi
-- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-- eval "enable_${ac_feature}=no" ;;
-+ 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" ;;
-
- -enable-* | --enable-*)
-- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
-- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-- fi
-- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-- case "$ac_option" in
-- *=*) ;;
-+ 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'" ;;
-+ eval "enable_$ac_feature='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-@@ -309,95 +579,47 @@
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
-- exec_prefix="$ac_optarg" ;;
-+ exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
-- -help | --help | --hel | --he)
-- # Omit some internal or obsolete options to make the list less imposing.
-- # This message is too long to be a string in the A/UX 3.1 sh.
-- cat << EOF
--Usage: configure [options] [host]
--Options: [defaults in brackets after descriptions]
--Configuration:
-- --cache-file=FILE cache test results in FILE
-- --help print this message
-- --no-create do not create output files
-- --quiet, --silent do not print \`checking...' messages
-- --version print the version of autoconf that created configure
--Directory and file names:
-- --prefix=PREFIX install architecture-independent files in PREFIX
-- [$ac_default_prefix]
-- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
-- [same as prefix]
-- --bindir=DIR user executables in DIR [EPREFIX/bin]
-- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
-- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
-- --datadir=DIR read-only architecture-independent data in DIR
-- [PREFIX/share]
-- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
-- --sharedstatedir=DIR modifiable architecture-independent data in DIR
-- [PREFIX/com]
-- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
-- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
-- --includedir=DIR C header files in DIR [PREFIX/include]
-- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
-- --infodir=DIR info documentation in DIR [PREFIX/info]
-- --mandir=DIR man documentation in DIR [PREFIX/man]
-- --srcdir=DIR find the sources in DIR [configure dir or ..]
-- --program-prefix=PREFIX prepend PREFIX to installed program names
-- --program-suffix=SUFFIX append SUFFIX to installed program names
-- --program-transform-name=PROGRAM
-- run sed PROGRAM on installed program names
--EOF
-- cat << EOF
--Host type:
-- --build=BUILD configure for building on BUILD [BUILD=HOST]
-- --host=HOST configure for HOST [guessed]
-- --target=TARGET configure for TARGET [TARGET=HOST]
--Features and packages:
-- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
-- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
-- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
-- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
-- --x-includes=DIR X include files are in DIR
-- --x-libraries=DIR X library files are in DIR
--EOF
-- if test -n "$ac_help"; then
-- echo "--enable and --with options recognized:$ac_help"
-- fi
-- exit 0 ;;
-+ -help | --help | --hel | --he | -h)
-+ ac_init_help=long ;;
-+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-+ ac_init_help=recursive ;;
-+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-+ ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
-- ac_prev=host ;;
-+ ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
-- host="$ac_optarg" ;;
-+ host_alias=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
-- includedir="$ac_optarg" ;;
-+ includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-- infodir="$ac_optarg" ;;
-+ infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
-- libdir="$ac_optarg" ;;
-+ libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
-- libexecdir="$ac_optarg" ;;
-+ libexecdir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
-@@ -406,19 +628,19 @@
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-- localstatedir="$ac_optarg" ;;
-+ localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-- mandir="$ac_optarg" ;;
-+ mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-- | --no-cr | --no-c)
-+ | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-@@ -432,26 +654,26 @@
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-- oldincludedir="$ac_optarg" ;;
-+ oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-- prefix="$ac_optarg" ;;
-+ prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-- program_prefix="$ac_optarg" ;;
-+ program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-- program_suffix="$ac_optarg" ;;
-+ program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
-@@ -468,7 +690,7 @@
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
-- program_transform_name="$ac_optarg" ;;
-+ program_transform_name=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
-@@ -478,7 +700,7 @@
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
-- sbindir="$ac_optarg" ;;
-+ sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-@@ -489,58 +711,57 @@
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
-- sharedstatedir="$ac_optarg" ;;
-+ sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
-- site="$ac_optarg" ;;
-+ site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-- srcdir="$ac_optarg" ;;
-+ srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-- sysconfdir="$ac_optarg" ;;
-+ sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
-- ac_prev=target ;;
-+ ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-- target="$ac_optarg" ;;
-+ target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
-- -version | --version | --versio | --versi | --vers)
-- echo "configure generated by autoconf version 2.13"
-- exit 0 ;;
-+ -version | --version | --versio | --versi | --vers | -V)
-+ ac_init_version=: ;;
-
- -with-* | --with-*)
-- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
-- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-- fi
-+ 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
-- *=*) ;;
-+ case $ac_option in
-+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
- *) ac_optarg=yes ;;
- esac
-- eval "with_${ac_package}='$ac_optarg'" ;;
-+ eval "with_$ac_package='$ac_optarg'" ;;
-
- -without-* | --without-*)
-- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
-- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-- fi
-- ac_package=`echo $ac_package| sed 's/-/_/g'`
-- eval "with_${ac_package}=no" ;;
-+ 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" ;;
-
- --x)
- # Obsolete; use --with-x.
-@@ -551,99 +772,110 @@
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-- x_includes="$ac_optarg" ;;
-+ x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-- x_libraries="$ac_optarg" ;;
-+ x_libraries=$ac_optarg ;;
-
-- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
-+ -*) { echo "$as_me: error: unrecognized option: $ac_option
-+Try \`$0 --help' for more information." >&2
-+ { (exit 1); exit 1; }; }
- ;;
-
-+ *=*)
-+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-+ # Reject names that are not valid shell variable names.
-+ 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'"
-+ export $ac_envvar ;;
-+
- *)
-- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-- echo "configure: warning: $ac_option: invalid host type" 1>&2
-- fi
-- if test "x$nonopt" != xNONE; then
-- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-- fi
-- nonopt="$ac_option"
-+ # FIXME: should be removed in autoconf 3.0.
-+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
- ;;
-
- esac
- done
-
- if test -n "$ac_prev"; then
-- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
--fi
--
--trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
--
--# File descriptor usage:
--# 0 standard input
--# 1 file creation
--# 2 errors and warnings
--# 3 some systems may open it to /dev/tty
--# 4 used on the Kubota Titan
--# 6 checking for... messages and results
--# 5 compiler messages saved in config.log
--if test "$silent" = yes; then
-- exec 6>/dev/null
--else
-- exec 6>&1
-+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-+ { echo "$as_me: error: missing argument to $ac_option" >&2
-+ { (exit 1); exit 1; }; }
- fi
--exec 5>./config.log
-
--echo "\
--This file contains any messages produced by compilers while
--running configure, to aid debugging if configure makes a mistake.
--" 1>&5
-+# 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
-
--# Strip out --no-create and --no-recursion so they do not pile up.
--# Also quote any args containing shell metacharacters.
--ac_configure_args=
--for ac_arg
-+# Be sure to have absolute paths.
-+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
-+ localstatedir libdir includedir oldincludedir infodir mandir
- do
-- case "$ac_arg" in
-- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-- | --no-cr | --no-c) ;;
-- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-+ 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; }; };;
- esac
- done
-
--# NLS nuisances.
--# Only set these to C if already set. These must not be set unconditionally
--# because not all systems understand e.g. LANG=C (notably SCO).
--# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
--# Non-C LC_CTYPE values break the ctype check.
--if test "${LANG+set}" = set; then LANG=C; export LANG; fi
--if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
--if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
--if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
-+# There might be people who depend on the old broken behavior: `$host'
-+# used to hold the argument of --host etc.
-+# FIXME: To remove some day.
-+build=$build_alias
-+host=$host_alias
-+target=$target_alias
-+
-+# FIXME: To remove some day.
-+if test "x$host_alias" != x; then
-+ if test "x$build_alias" = x; then
-+ cross_compiling=maybe
-+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-+ If a cross compiler is detected then cross compile mode will be used." >&2
-+ elif test "x$build_alias" != "x$host_alias"; then
-+ cross_compiling=yes
-+ fi
-+fi
-
--# 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
-+ac_tool_prefix=
-+test -n "$host_alias" && ac_tool_prefix=$host_alias-
-+
-+test "$silent" = yes && exec 6>/dev/null
-
--# A filename unique to this package, relative to the directory that
--# configure is in, which we can look for to find out if srcdir is correct.
--ac_unique_file=src/include/atm.h
-
- # 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_prog=$0
-- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-+ ac_confdir=`(dirname "$0") 2>/dev/null ||
-+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$0" : 'X\(//\)[^/]' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ 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'`
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
-@@ -653,13 +885,453 @@
- fi
- if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
-- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
-+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
-+ { (exit 1); exit 1; }; }
- else
-- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-+ { (exit 1); exit 1; }; }
- fi
- fi
--srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-+(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
-+
-+#
-+# Report the --help message.
-+#
-+if test "$ac_init_help" = "long"; then
-+ # Omit some internal or obsolete options to make the list less imposing.
-+ # This message is too long to be a string in the A/UX 3.1 sh.
-+ cat <<_ACEOF
-+\`configure' configures this package to adapt to many kinds of systems.
-+
-+Usage: $0 [OPTION]... [VAR=VALUE]...
-+
-+To assign environment variables (e.g., CC, CFLAGS...), specify them as
-+VAR=VALUE. See below for descriptions of some of the useful variables.
-+
-+Defaults for the options are specified in brackets.
-+
-+Configuration:
-+ -h, --help display this help and exit
-+ --help=short display options specific to this package
-+ --help=recursive display the short help of all the included packages
-+ -V, --version display version information and exit
-+ -q, --quiet, --silent do not print \`checking...' messages
-+ --cache-file=FILE cache test results in FILE [disabled]
-+ -C, --config-cache alias for \`--cache-file=config.cache'
-+ -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]
-+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
-+ [PREFIX]
-+
-+By default, \`make install' will install all the files in
-+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-+for instance \`--prefix=\$HOME'.
-+
-+For better control, use the options below.
-+
-+Fine tuning of the installation directories:
-+ --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]
-+_ACEOF
-+
-+ cat <<\_ACEOF
-+
-+Program names:
-+ --program-prefix=PREFIX prepend PREFIX to installed program names
-+ --program-suffix=SUFFIX append SUFFIX to installed program names
-+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-+
-+System types:
-+ --build=BUILD configure for building on BUILD [guessed]
-+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
-+ --target=TARGET configure for building compilers for TARGET [HOST]
-+_ACEOF
-+fi
-+
-+if test -n "$ac_init_help"; then
-+
-+ cat <<\_ACEOF
-+
-+Optional Features:
-+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
-+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
-+ --enable-shared=PKGS build shared libraries default=yes
-+ --enable-static=PKGS build static libraries default=yes
-+ --enable-fast-install=PKGS optimize for fast installation default=yes
-+ --disable-libtool-lock avoid locking (might break parallel builds)
-+ --enable-allow_uni30 Allow UNI 3.0 backwards-compatible extensions (if using UNI 3.1)
-+ --enable-q2963_1 Enable peak cell rate modification as specified in Q.2963.1 (if using UNI 4.0)
-+ --enable-cisco Enable work around for point-to-multipoint signaling bug in Cisco LS100 or LS7010 switches
-+ --enable-thomflex Some versions of the Thomson Thomflex 5000 won't do any signaling before they get a RESTART. Enable sending of a RESTART whenever SAAL comes up.
-+ --enable-mpoa_1_1 Enable proposed MPOA 1.1 features
-+ --enable-mpr Enable memory debugging (if MPR is installed)
-+
-+Optional Packages:
-+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
-+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
-+ --with-gnu-ld assume the C compiler uses GNU ld default=no
-+ --with-pic try to use only PIC/non-PIC objects default=use both
-+ --with-uni=VERSION UNI version to use (3.0,3.1,4.0) default=dynamic
-+
-+Some influential environment variables:
-+ CC C compiler command
-+ 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>
-+ 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
-+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
-+ 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
-+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-+# absolute.
-+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-+
-+ 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
-+ else
-+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-+ fi
-+ cd $ac_popdir
-+ done
-+fi
-+
-+test -n "$ac_init_help" && exit 0
-+if $ac_init_version; then
-+ cat <<\_ACEOF
-+
-+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-+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
-+fi
-+exec 5>config.log
-+cat >&5 <<_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.57. Invocation command line was
-+
-+ $ $0 $@
-+
-+_ACEOF
-+{
-+cat <<_ASUNAME
-+## --------- ##
-+## Platform. ##
-+## --------- ##
-+
-+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-+uname -m = `(uname -m) 2>/dev/null || echo unknown`
-+uname -r = `(uname -r) 2>/dev/null || echo unknown`
-+uname -s = `(uname -s) 2>/dev/null || echo unknown`
-+uname -v = `(uname -v) 2>/dev/null || echo unknown`
-+
-+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-+
-+/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`
-+/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`
-+
-+_ASUNAME
-+
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ echo "PATH: $as_dir"
-+done
-+
-+} >&5
-+
-+cat >&5 <<_ACEOF
-+
-+
-+## ----------- ##
-+## Core tests. ##
-+## ----------- ##
-+
-+_ACEOF
-+
-+
-+# Keep a trace of the command line.
-+# Strip out --no-create and --no-recursion so they do not pile up.
-+# Strip out --silent because we don't want to record it for future runs.
-+# Also quote any args containing shell meta-characters.
-+# Make two passes to allow for proper duplicate-argument suppression.
-+ac_configure_args=
-+ac_configure_args0=
-+ac_configure_args1=
-+ac_sep=
-+ac_must_keep_next=false
-+for ac_pass in 1 2
-+do
-+ for ac_arg
-+ do
-+ case $ac_arg in
-+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-+ -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
-+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
-+ 2)
-+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
-+ if test $ac_must_keep_next = true; then
-+ ac_must_keep_next=false # Got value, back to normal.
-+ else
-+ case $ac_arg in
-+ *=* | --config-cache | -C | -disable-* | --disable-* \
-+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-+ | -with-* | --with-* | -without-* | --without-* | --x)
-+ case "$ac_configure_args0 " in
-+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-+ esac
-+ ;;
-+ -* ) 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=" "
-+ ;;
-+ esac
-+ done
-+done
-+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
-+
-+# 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.
-+trap 'exit_status=$?
-+ # Save into config.log some information that might help in debugging.
-+ {
-+ echo
-+
-+ cat <<\_ASBOX
-+## ---------------- ##
-+## Cache variables. ##
-+## ---------------- ##
-+_ASBOX
-+ echo
-+ # The following way of writing the cache mishandles newlines in values,
-+{
-+ (set) 2>&1 |
-+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
-+ *ac_space=\ *)
-+ sed -n \
-+ "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"
-+ ;;
-+ esac;
-+}
-+ echo
-+
-+ cat <<\_ASBOX
-+## ----------------- ##
-+## Output variables. ##
-+## ----------------- ##
-+_ASBOX
-+ echo
-+ for ac_var in $ac_subst_vars
-+ do
-+ eval ac_val=$`echo $ac_var`
-+ echo "$ac_var='"'"'$ac_val'"'"'"
-+ done | sort
-+ echo
-+
-+ if test -n "$ac_subst_files"; then
-+ cat <<\_ASBOX
-+## ------------- ##
-+## Output files. ##
-+## ------------- ##
-+_ASBOX
-+ echo
-+ for ac_var in $ac_subst_files
-+ do
-+ eval ac_val=$`echo $ac_var`
-+ echo "$ac_var='"'"'$ac_val'"'"'"
-+ done | sort
-+ echo
-+ fi
-+
-+ if test -s confdefs.h; then
-+ cat <<\_ASBOX
-+## ----------- ##
-+## confdefs.h. ##
-+## ----------- ##
-+_ASBOX
-+ echo
-+ sed "/^$/d" confdefs.h | sort
-+ 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 &&
-+ exit $exit_status
-+ ' 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
-+
-+# Predefined preprocessor variables.
-
-+cat >>confdefs.h <<_ACEOF
-+#define PACKAGE_NAME "$PACKAGE_NAME"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+#define PACKAGE_VERSION "$PACKAGE_VERSION"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+#define PACKAGE_STRING "$PACKAGE_STRING"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-+_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
-@@ -670,45 +1342,111 @@
- fi
- for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
-- echo "loading site script $ac_site_file"
-+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-+echo "$as_me: loading site script $ac_site_file" >&6;}
-+ sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file"
- fi
- done
-
- if test -r "$cache_file"; then
-- echo "loading cache $cache_file"
-- . $cache_file
-+ # Some versions of bash will fail to source /dev/null (special
-+ # files actually), so we avoid doing that.
-+ if test -f "$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;;
-+ esac
-+ fi
- else
-- echo "creating cache $cache_file"
-- > $cache_file
-+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-+echo "$as_me: creating cache $cache_file" >&6;}
-+ >$cache_file
-+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
-+ 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"
-+ 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
-+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-+ ac_cache_corrupted=: ;;
-+ ,set)
-+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-+ ac_cache_corrupted=: ;;
-+ ,);;
-+ *)
-+ if test "x$ac_old_val" != "x$ac_new_val"; then
-+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
-+echo "$as_me: former value: $ac_old_val" >&2;}
-+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
-+echo "$as_me: current value: $ac_new_val" >&2;}
-+ ac_cache_corrupted=:
-+ fi;;
-+ esac
-+ # 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=$ac_new_val ;;
-+ esac
-+ case " $ac_configure_args " in
-+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
-+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-+ esac
-+ fi
-+done
-+if $ac_cache_corrupted; then
-+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-+ { (exit 1); exit 1; }; }
- fi
-
- ac_ext=c
--# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
- ac_cpp='$CPP $CPPFLAGS'
--ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
--cross_compiling=$ac_cv_prog_cc_cross
--
--ac_exeext=
--ac_objext=o
--if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-- ac_n= ac_c='
--' ac_t=' '
-- else
-- ac_n=-n ac_c= ac_t=
-- fi
--else
-- ac_n= ac_c='\c' ac_t=
--fi
-+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_config_headers="$ac_config_headers config.h"
-+
-+ ac_config_commands="$ac_config_commands default-1"
-+
-+
- ac_aux_dir=
- for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
-@@ -719,105 +1457,105 @@
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
-+ 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 "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
--fi
--ac_config_guess=$ac_aux_dir/config.guess
--ac_config_sub=$ac_aux_dir/config.sub
--ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
--
--
--# Do some error checking and defaulting for the host and target type.
--# The inputs are:
--# configure --host=HOST --target=TARGET --build=BUILD NONOPT
--#
--# The rules are:
--# 1. You are not allowed to specify --host, --target, and nonopt at the
--# same time.
--# 2. Host defaults to nonopt.
--# 3. If nonopt is not specified, then host defaults to the current host,
--# as determined by config.guess.
--# 4. Target and build default to nonopt.
--# 5. If nonopt is not specified, then target and build default to host.
--
--# The aliases save the names the user supplied, while $host etc.
--# will get canonicalized.
--case $host---$target---$nonopt in
--NONE---*---* | *---NONE---* | *---*---NONE) ;;
--*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
--esac
--
-+ { { 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.
-
- # Make sure we can run config.sub.
--if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
--else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
--fi
-+$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;}
-+ { (exit 1); exit 1; }; }
-+
-+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" &&
-+ { { 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;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-+echo "${ECHO_T}$ac_cv_build" >&6
-+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/'`
-+
-+
-+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;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-+echo "${ECHO_T}$ac_cv_host" >&6
-+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/'`
-+
-+
-+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;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_target" >&5
-+echo "${ECHO_T}$ac_cv_target" >&6
-+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/'`
-
--echo $ac_n "checking host system type""... $ac_c" 1>&6
--echo "configure:760: checking host system type" >&5
-
--host_alias=$host
--case "$host_alias" in
--NONE)
-- case $nonopt in
-- NONE)
-- if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
-- else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
-- fi ;;
-- *) host_alias=$nonopt ;;
-- esac ;;
--esac
--
--host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
--host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
--host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
--host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
--echo "$ac_t""$host" 1>&6
--
--echo $ac_n "checking target system type""... $ac_c" 1>&6
--echo "configure:781: checking target system type" >&5
--
--target_alias=$target
--case "$target_alias" in
--NONE)
-- case $nonopt in
-- NONE) target_alias=$host_alias ;;
-- *) target_alias=$nonopt ;;
-- esac ;;
--esac
--
--target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
--target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
--target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
--target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
--echo "$ac_t""$target" 1>&6
--
--echo $ac_n "checking build system type""... $ac_c" 1>&6
--echo "configure:799: checking build system type" >&5
--
--build_alias=$build
--case "$build_alias" in
--NONE)
-- case $nonopt in
-- NONE) build_alias=$host_alias ;;
-- *) build_alias=$nonopt ;;
-- esac ;;
--esac
--
--build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
--build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
--build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
--build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
--echo "$ac_t""$build" 1>&6
--
--test "$host_alias" != "$target_alias" &&
-+# The aliases save the names the user supplied, while $host etc.
-+# will get canonicalized.
-+test -n "$target_alias" &&
- test "$program_prefix$program_suffix$program_transform_name" = \
- NONENONEs,x,x, &&
- program_prefix=${target_alias}-
-
--
-+am__api_version="1.4"
- # Find a good install program. We prefer a C program (faster),
- # so one script is as good as another. But avoid the broken or
- # incompatible versions:
-@@ -825,65 +1563,78 @@
- # SunOS /usr/etc/install
- # IRIX /sbin/install
- # AIX /bin/install
-+# AmigaOS /C/install, which installs bootblocks on floppy discs
- # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
- # AFS /usr/afsws/bin/install, which mishandles nonexistent args
- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
- # ./install, which can be erroneously created by make from ./install.sh.
--echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
--echo "configure:834: checking for a BSD compatible install" >&5
-+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 eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+if test "${ac_cv_path_install+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
-- for ac_dir in $PATH; do
-- # Account for people who put trailing slashes in PATH elements.
-- case "$ac_dir/" in
-- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-- *)
-- # OSF1 and SCO ODT 3.0 have their own names for install.
-- # Don't use installbsd from OSF since it installs stuff as root
-- # by default.
-- for ac_prog in ginstall scoinst install; do
-- if test -f $ac_dir/$ac_prog; then
-- if test $ac_prog = install &&
-- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-- # AIX install. It has an incompatible calling convention.
-- :
-- else
-- ac_cv_path_install="$ac_dir/$ac_prog -c"
-- break 2
-- fi
-- fi
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ # Account for people who put trailing slashes in PATH elements.
-+case $as_dir/ in
-+ ./ | .// | /cC/* | \
-+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-+ /usr/ucb/* ) ;;
-+ *)
-+ # OSF1 and SCO ODT 3.0 have their own names for install.
-+ # Don't use installbsd from OSF since it installs stuff as root
-+ # 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 $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.
-+ :
-+ elif test $ac_prog = install &&
-+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-+ # program-specific install script used by HP pwplus--don't use.
-+ :
-+ else
-+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-+ break 3
-+ fi
-+ fi
- done
-- ;;
-- esac
-- done
-- IFS="$ac_save_IFS"
-+ done
-+ ;;
-+esac
-+done
-+
-
- fi
- if test "${ac_cv_path_install+set}" = set; then
-- INSTALL="$ac_cv_path_install"
-+ 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
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
-- INSTALL="$ac_install_sh"
-+ INSTALL=$ac_install_sh
- fi
- fi
--echo "$ac_t""$INSTALL" 1>&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.
- test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
--test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
--echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
--echo "configure:887: checking whether build environment is sane" >&5
-+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 > conftestfile
-@@ -905,8 +1656,11 @@
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
-- { echo "configure: error: ls -t appears to fail. Make sure there is not a broken
--alias in your environment" 1>&2; exit 1; }
-+ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
-+alias in your environment" >&5
-+echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
-+alias in your environment" >&2;}
-+ { (exit 1); exit 1; }; }
- fi
-
- test "$2" = conftestfile
-@@ -915,54 +1669,54 @@
- # Ok.
- :
- else
-- { echo "configure: error: newly created file is older than distributed files!
--Check your system clock" 1>&2; exit 1; }
-+ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-+Check your system clock" >&5
-+echo "$as_me: error: newly created file is older than distributed files!
-+Check your system clock" >&2;}
-+ { (exit 1); exit 1; }; }
- fi
- rm -f conftest*
--echo "$ac_t""yes" 1>&6
--if test "$program_transform_name" = s,x,x,; then
-- program_transform_name=
--else
-- # Double any \ or $. echo might interpret backslashes.
-- cat <<\EOF_SED > conftestsed
--s,\\,\\\\,g; s,\$,$$,g
--EOF_SED
-- program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
-- rm -f conftestsed
--fi
-+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"
--
--# sed with no file args requires a program.
--test "$program_transform_name" = "" && program_transform_name="s,x,x,"
--
--echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
--echo "configure:944: checking whether ${MAKE-make} sets \${MAKE}" >&5
--set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ 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
-+
-+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 $ECHO_N "(cached) $ECHO_C" >&6
- else
-- cat > conftestmake <<\EOF
-+ cat >conftest.make <<\_ACEOF
- all:
-- @echo 'ac_maketemp="${MAKE}"'
--EOF
-+ @echo 'ac_maketemp="$(MAKE)"'
-+_ACEOF
- # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
--eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
-+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
--rm -f conftestmake
-+rm -f conftest.make
- fi
- if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
- SET_MAKE=
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- SET_MAKE="MAKE=${MAKE-make}"
- fi
-
-@@ -972,82 +1726,96 @@
- VERSION=2.4.1
-
- if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
-- { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
-+ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
-+ { (exit 1); exit 1; }; }
- fi
--cat >> confdefs.h <<EOF
-+
-+cat >>confdefs.h <<_ACEOF
- #define PACKAGE "$PACKAGE"
--EOF
-+_ACEOF
-
--cat >> confdefs.h <<EOF
-+
-+cat >>confdefs.h <<_ACEOF
- #define VERSION "$VERSION"
--EOF
-+_ACEOF
-
-
-
- missing_dir=`cd $ac_aux_dir && pwd`
--echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
--echo "configure:990: checking for working aclocal" >&5
-+echo "$as_me:$LINENO: checking for working aclocal-${am__api_version}" >&5
-+echo $ECHO_N "checking for working aclocal-${am__api_version}... $ECHO_C" >&6
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
--if (aclocal --version) < /dev/null > /dev/null 2>&1; then
-- ACLOCAL=aclocal
-- echo "$ac_t""found" 1>&6
--else
-- ACLOCAL="$missing_dir/missing aclocal"
-- echo "$ac_t""missing" 1>&6
-+if (aclocal-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
-+ ACLOCAL=aclocal-${am__api_version}
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
-+else
-+ ACLOCAL="$missing_dir/missing aclocal-${am__api_version}"
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
- fi
-
--echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
--echo "configure:1003: checking for working autoconf" >&5
-+echo "$as_me:$LINENO: checking for working autoconf" >&5
-+echo $ECHO_N "checking for working autoconf... $ECHO_C" >&6
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
- if (autoconf --version) < /dev/null > /dev/null 2>&1; then
- AUTOCONF=autoconf
-- echo "$ac_t""found" 1>&6
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
- else
- AUTOCONF="$missing_dir/missing autoconf"
-- echo "$ac_t""missing" 1>&6
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
- fi
-
--echo $ac_n "checking for working automake""... $ac_c" 1>&6
--echo "configure:1016: checking for working automake" >&5
-+echo "$as_me:$LINENO: checking for working automake-${am__api_version}" >&5
-+echo $ECHO_N "checking for working automake-${am__api_version}... $ECHO_C" >&6
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
--if (automake --version) < /dev/null > /dev/null 2>&1; then
-- AUTOMAKE=automake
-- echo "$ac_t""found" 1>&6
--else
-- AUTOMAKE="$missing_dir/missing automake"
-- echo "$ac_t""missing" 1>&6
-+if (automake-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
-+ AUTOMAKE=automake-${am__api_version}
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
-+else
-+ AUTOMAKE="$missing_dir/missing automake-${am__api_version}"
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
- fi
-
--echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
--echo "configure:1029: checking for working autoheader" >&5
-+echo "$as_me:$LINENO: checking for working autoheader" >&5
-+echo $ECHO_N "checking for working autoheader... $ECHO_C" >&6
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
- if (autoheader --version) < /dev/null > /dev/null 2>&1; then
- AUTOHEADER=autoheader
-- echo "$ac_t""found" 1>&6
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
- else
- AUTOHEADER="$missing_dir/missing autoheader"
-- echo "$ac_t""missing" 1>&6
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
- fi
-
--echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
--echo "configure:1042: checking for working makeinfo" >&5
-+echo "$as_me:$LINENO: checking for working makeinfo" >&5
-+echo $ECHO_N "checking for working makeinfo... $ECHO_C" >&6
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf. Sigh.
- if (makeinfo --version) < /dev/null > /dev/null 2>&1; then
- MAKEINFO=makeinfo
-- echo "$ac_t""found" 1>&6
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
- else
- MAKEINFO="$missing_dir/missing makeinfo"
-- echo "$ac_t""missing" 1>&6
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
- fi
-
-
-@@ -1059,214 +1827,643 @@
-
-
-
--# Extract the first word of "gcc", so it can be a program name with args.
-+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
-+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
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$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_CC="${ac_tool_prefix}gcc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+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 "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:1066: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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
-+ 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="gcc"
-+ 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
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ CC=$ac_ct_CC
-+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.
-+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
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_CC="gcc"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+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_CC="${ac_tool_prefix}cc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
- fi
- fi
--CC="$ac_cv_prog_CC"
-+CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- echo "$ac_t""$CC" 1>&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
-+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
- else
-- echo "$ac_t""no" 1>&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
- 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:1096: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_prog_rejected=no
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-- ac_prog_rejected=yes
-- continue
-- fi
-- ac_cv_prog_CC="cc"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+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
-+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-+ ac_prog_rejected=yes
-+ continue
-+ fi
-+ ac_cv_prog_CC="cc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
- if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
-- if test $# -gt 0; then
-+ if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
-- set dummy "$ac_dir/$ac_word" "$@"
-- shift
-- ac_cv_prog_CC="$@"
-+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
- fi
- fi
- fi
--CC="$ac_cv_prog_CC"
-+CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- echo "$ac_t""$CC" 1>&6
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
-- if test -z "$CC"; then
-- case "`uname -s`" in
-- *win32* | *WIN32*)
-- # 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:1147: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+fi
-+if test -z "$CC"; then
-+ if test -n "$ac_tool_prefix"; then
-+ for ac_prog in cl
-+ 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
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_CC="cl"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+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_CC="$ac_tool_prefix$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
- fi
- fi
--CC="$ac_cv_prog_CC"
-+CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- echo "$ac_t""$CC" 1>&6
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-- ;;
-- esac
-+
-+ test -n "$CC" && break
-+ done
-+fi
-+if test -z "$CC"; then
-+ ac_ct_CC=$CC
-+ for ac_prog in cl
-+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
-+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="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
- fi
-- test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-+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
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$ac_ct_CC" && break
-+done
-
--echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
--echo "configure:1179: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-+ CC=$ac_ct_CC
-+fi
-
--ac_ext=c
--# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
--ac_cpp='$CPP $CPPFLAGS'
--ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
--cross_compiling=$ac_cv_prog_cc_cross
-+fi
-
--cat > conftest.$ac_ext << EOF
-
--#line 1190 "configure"
--#include "confdefs.h"
-+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: no acceptable C compiler found in \$PATH
-+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
-+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_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_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_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--main(){return(0);}
--EOF
--if { (eval echo configure:1195: \"$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
-- ac_cv_prog_cc_cross=no
-- else
-- ac_cv_prog_cc_cross=yes
-- fi
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+ac_clean_files_save=$ac_clean_files
-+ac_clean_files="$ac_clean_files a.out a.exe b.out"
-+# 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" >&5
-+echo $ECHO_N "checking for C compiler default output... $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
-+ 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
-+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.
-+ ;;
-+ [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
-+ break;;
-+ * )
-+ break;;
-+ esac
-+done
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- ac_cv_prog_cc_works=no
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: C compiler cannot create executables
-+See \`config.log' for more details." >&2;}
-+ { (exit 77); exit 77; }; }
-+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
-+# 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
-+# 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
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ cross_compiling=no
-+ else
-+ if test "$cross_compiling" = maybe; then
-+ cross_compiling=yes
-+ else
-+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
-+If you meant to cross compile, use \`--host'.
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot run C compiled programs.
-+If you meant to cross compile, use \`--host'.
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+ fi
- fi
--rm -fr conftest*
--ac_ext=c
--# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
--ac_cpp='$CPP $CPPFLAGS'
--ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
--cross_compiling=$ac_cv_prog_cc_cross
--
--echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
--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:1221: 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:1226: 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
-- cat > conftest.c <<EOF
--#ifdef __GNUC__
-- yes;
--#endif
--EOF
--if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-- ac_cv_prog_gcc=yes
-+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
-+# 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
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
-+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
-+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-+# work properly (i.e., refer to `conftest.exe'), while it won't with
-+# `rm'.
-+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_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-+ export ac_cv_exeext
-+ break;;
-+ * ) break;;
-+ esac
-+done
- else
-- ac_cv_prog_gcc=no
--fi
-+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
- fi
-
--echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-+rm -f conftest$ac_cv_exeext
-+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
-+if test "${ac_cv_objext+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-
--if test $ac_cv_prog_gcc = yes; then
-- GCC=yes
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.o conftest.obj
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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
-+ case $ac_file in
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
-+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-+ break;;
-+ esac
-+done
- else
-- GCC=
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute suffix of object files: cannot compile
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
- fi
-
--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:1254: 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
-- echo 'void f(){}' > conftest.c
--if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-+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
-+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
-+if test "${ac_cv_c_compiler_gnu+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+#ifndef __GNUC__
-+ choke me
-+#endif
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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_compiler_gnu=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_compiler_gnu=no
-+fi
-+rm -f 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
-+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
-+if test "${ac_cv_prog_cc_g+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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_g=yes
- else
-- ac_cv_prog_cc_g=no
--fi
--rm -f conftest*
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
-+ac_cv_prog_cc_g=no
- fi
--
--echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-+rm -f 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"
-+ CFLAGS=$ac_save_CFLAGS
- elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
-@@ -1280,295 +2477,548 @@
- 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
-+#line $LINENO "configure"
-+/* 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;
-+}
-+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>&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
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.$ac_objext
-+done
-+rm -f conftest.$ac_ext conftest.$ac_objext
-+CC=$ac_save_CC
-
--echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
--echo "configure:1286: checking how to run the C preprocessor" >&5
--# On Suns, sometimes $CPP names a directory.
--if test -n "$CPP" && test -d "$CPP"; then
-- CPP=
- fi
--if test -z "$CPP"; then
--if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- # This must be in double quotes, not single quotes, because CPP may get
-- # substituted into the Makefile and "${CC-cc}" will confuse make.
-- CPP="${CC-cc} -E"
-- # On the NeXT, cc -E runs the code through the compiler's parser,
-- # not just through cpp.
-- cat > conftest.$ac_ext <<EOF
--#line 1301 "configure"
--#include "confdefs.h"
--#include <assert.h>
--Syntax Error
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:1307: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-- :
--else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- CPP="${CC-cc} -E -traditional-cpp"
-- cat > conftest.$ac_ext <<EOF
--#line 1318 "configure"
--#include "confdefs.h"
--#include <assert.h>
--Syntax Error
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:1324: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-- :
--else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- CPP="${CC-cc} -nologo -E"
-- cat > conftest.$ac_ext <<EOF
--#line 1335 "configure"
--#include "confdefs.h"
--#include <assert.h>
--Syntax Error
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:1341: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-+
-+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>&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
-+#line $LINENO "configure"
-+/* 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>&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 "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- CPP=/lib/cpp
--fi
--rm -f conftest*
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+continue
- fi
--rm -f conftest*
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* 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>&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.$ac_objext conftest.$ac_ext
-+done
- rm -f conftest*
-- ac_cv_prog_CPP="$CPP"
-+if test -n "$ac_declaration"; then
-+ echo '#ifdef __cplusplus' >>confdefs.h
-+ echo $ac_declaration >>confdefs.h
-+ echo '#endif' >>confdefs.h
- fi
-- CPP="$ac_cv_prog_CPP"
-+
- else
-- ac_cv_prog_CPP="$CPP"
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- fi
--echo "$ac_t""$CPP" 1>&6
-+rm -f 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
-+
-
- missing_dir=`cd $ac_aux_dir && pwd`
- for ac_prog in flex lex
- do
--# Extract the first word of "$ac_prog", so it can be a program name with args.
-+ # 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:1371: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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
- if test -n "$LEX"; then
- ac_cv_prog_LEX="$LEX" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_LEX="$ac_prog"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+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_LEX="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
- fi
- fi
--LEX="$ac_cv_prog_LEX"
-+LEX=$ac_cv_prog_LEX
- if test -n "$LEX"; then
-- echo "$ac_t""$LEX" 1>&6
-+ echo "$as_me:$LINENO: result: $LEX" >&5
-+echo "${ECHO_T}$LEX" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
--test -n "$LEX" && break
-+ test -n "$LEX" && break
- done
--test -n "$LEX" || LEX=""$missing_dir/missing flex""
-+test -n "$LEX" || LEX="$missing_dir/missing flex"
-
--# Extract the first word of "flex", so it can be a program name with args.
--set dummy flex; ac_word=$2
--echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:1404: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+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
-+if test "${ac_cv_prog_LEX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- if test -n "$LEX"; then
- ac_cv_prog_LEX="$LEX" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_LEX="flex"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-- test -z "$ac_cv_prog_LEX" && ac_cv_prog_LEX="lex"
-+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_LEX="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
- fi
- fi
--LEX="$ac_cv_prog_LEX"
-+LEX=$ac_cv_prog_LEX
- if test -n "$LEX"; then
-- echo "$ac_t""$LEX" 1>&6
-+ echo "$as_me:$LINENO: result: $LEX" >&5
-+echo "${ECHO_T}$LEX" >&6
- else
-- echo "$ac_t""no" 1>&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
-- case "$LEX" in
-- flex*) ac_lib=fl ;;
-- *) ac_lib=l ;;
-- esac
-- echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6
--echo "configure:1438: checking for yywrap in -l$ac_lib" >&5
--ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- ac_save_LIBS="$LIBS"
--LIBS="-l$ac_lib $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 1446 "configure"
--#include "confdefs.h"
-+ 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
-+#line $LINENO "configure"
-+/* 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();
-+ builtin and then its argument prototype would still apply. */
-+char yywrap ();
-+int
-+main ()
-+{
-+yywrap ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_fl_yywrap=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_fl_yywrap=no
-+fi
-+rm -f 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 $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ll $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--int main() {
--yywrap()
--; return 0; }
--EOF
--if { (eval echo configure:1457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
-+/* 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;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
-+ac_cv_lib_l_yywrap=no
- fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- LEXLIB="-l$ac_lib"
--else
-- echo "$ac_t""no" 1>&6
-+rm -f 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
-
--echo $ac_n "checking lex output file root""... $ac_c" 1>&6
--echo "configure:1480: checking lex output file root" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+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.
--echo '%%
--%%' | $LEX
-+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 "configure: error: cannot find output from $LEX; giving up" 1>&2; exit 1; }
-+ { { 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
- fi
--
--echo "$ac_t""$ac_cv_prog_lex_root" 1>&6
-+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 $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6
--echo "configure:1501: checking whether yytext is a pointer" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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
- # 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"
-+ac_save_LIBS=$LIBS
- LIBS="$LIBS $LEXLIB"
--cat > conftest.$ac_ext <<EOF
--#line 1513 "configure"
--#include "confdefs.h"
-+cat >conftest.$ac_ext <<_ACEOF
- `cat $LEX_OUTPUT_ROOT.c`
--int main() {
--
--; return 0; }
--EOF
--if { (eval echo configure:1520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_prog_lex_yytext_pointer=yes
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_save_LIBS
- rm -f "${LEX_OUTPUT_ROOT}.c"
-
- fi
--
--echo "$ac_t""$ac_cv_prog_lex_yytext_pointer" 1>&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 <<\EOF
-+
-+cat >>confdefs.h <<\_ACEOF
- #define YYTEXT_POINTER 1
--EOF
-+_ACEOF
-+
-+fi
-
- fi
-
- for ac_prog in 'bison -y' byacc
- do
--# Extract the first word of "$ac_prog", so it can be a program name with args.
-+ # 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:1546: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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
- if test -n "$YACC"; then
- ac_cv_prog_YACC="$YACC" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_YACC="$ac_prog"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+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_YACC="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
- fi
- fi
--YACC="$ac_cv_prog_YACC"
-+YACC=$ac_cv_prog_YACC
- if test -n "$YACC"; then
-- echo "$ac_t""$YACC" 1>&6
-+ echo "$as_me:$LINENO: result: $YACC" >&5
-+echo "${ECHO_T}$YACC" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
--test -n "$YACC" && break
-+ test -n "$YACC" && break
- done
- test -n "$YACC" || YACC="yacc"
-
-@@ -1579,126 +3029,77 @@
- # SunOS /usr/etc/install
- # IRIX /sbin/install
- # AIX /bin/install
-+# AmigaOS /C/install, which installs bootblocks on floppy discs
- # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
- # AFS /usr/afsws/bin/install, which mishandles nonexistent args
- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
- # ./install, which can be erroneously created by make from ./install.sh.
--echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
--echo "configure:1588: checking for a BSD compatible install" >&5
-+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 eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+if test "${ac_cv_path_install+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
-- for ac_dir in $PATH; do
-- # Account for people who put trailing slashes in PATH elements.
-- case "$ac_dir/" in
-- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-- *)
-- # OSF1 and SCO ODT 3.0 have their own names for install.
-- # Don't use installbsd from OSF since it installs stuff as root
-- # by default.
-- for ac_prog in ginstall scoinst install; do
-- if test -f $ac_dir/$ac_prog; then
-- if test $ac_prog = install &&
-- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-- # AIX install. It has an incompatible calling convention.
-- :
-- else
-- ac_cv_path_install="$ac_dir/$ac_prog -c"
-- break 2
-- fi
-- fi
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ # Account for people who put trailing slashes in PATH elements.
-+case $as_dir/ in
-+ ./ | .// | /cC/* | \
-+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-+ /usr/ucb/* ) ;;
-+ *)
-+ # OSF1 and SCO ODT 3.0 have their own names for install.
-+ # Don't use installbsd from OSF since it installs stuff as root
-+ # 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 $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.
-+ :
-+ elif test $ac_prog = install &&
-+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-+ # program-specific install script used by HP pwplus--don't use.
-+ :
-+ else
-+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-+ break 3
-+ fi
-+ fi
- done
-- ;;
-- esac
-- done
-- IFS="$ac_save_IFS"
-+ done
-+ ;;
-+esac
-+done
-+
-
- fi
- if test "${ac_cv_path_install+set}" = set; then
-- INSTALL="$ac_cv_path_install"
-+ 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
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
-- INSTALL="$ac_install_sh"
-+ INSTALL=$ac_install_sh
- fi
- fi
--echo "$ac_t""$INSTALL" 1>&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.
- test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
--test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
--echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
--echo "configure:1642: checking for Cygwin environment" >&5
--if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 1647 "configure"
--#include "confdefs.h"
--
--int main() {
--
--#ifndef __CYGWIN__
--#define __CYGWIN__ __CYGWIN32__
--#endif
--return __CYGWIN__;
--; return 0; }
--EOF
--if { (eval echo configure:1658: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-- rm -rf conftest*
-- ac_cv_cygwin=yes
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- ac_cv_cygwin=no
--fi
--rm -f conftest*
--rm -f conftest*
--fi
--
--echo "$ac_t""$ac_cv_cygwin" 1>&6
--CYGWIN=
--test "$ac_cv_cygwin" = yes && CYGWIN=yes
--echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
--echo "configure:1675: checking for mingw32 environment" >&5
--if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 1680 "configure"
--#include "confdefs.h"
--
--int main() {
--return __MINGW32__;
--; return 0; }
--EOF
--if { (eval echo configure:1687: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-- rm -rf conftest*
-- ac_cv_mingw32=yes
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- ac_cv_mingw32=no
--fi
--rm -f conftest*
--rm -f conftest*
--fi
--
--echo "$ac_t""$ac_cv_mingw32" 1>&6
--MINGW32=
--test "$ac_cv_mingw32" = yes && MINGW32=yes
- # Check whether --enable-shared or --disable-shared was given.
- if test "${enable_shared+set}" = set; then
- enableval="$enable_shared"
-@@ -1720,8 +3121,7 @@
- esac
- else
- enable_shared=yes
--fi
--
-+fi;
- # Check whether --enable-static or --disable-static was given.
- if test "${enable_static+set}" = set; then
- enableval="$enable_static"
-@@ -1743,8 +3143,7 @@
- esac
- else
- enable_static=yes
--fi
--
-+fi;
- # Check whether --enable-fast-install or --disable-fast-install was given.
- if test "${enable_fast_install+set}" = set; then
- enableval="$enable_fast_install"
-@@ -1766,21 +3165,31 @@
- esac
- else
- enable_fast_install=yes
-+fi;
-+# Find the correct PATH separator. Usually this is `:', but
-+# DJGPP uses `;' like DOS.
-+if test "X${PATH_SEPARATOR+set}" != Xset; then
-+ UNAME=${UNAME-`uname 2>/dev/null`}
-+ case X$UNAME in
-+ *-DOS) lt_cv_sys_path_separator=';' ;;
-+ *) lt_cv_sys_path_separator=':' ;;
-+ esac
-+ PATH_SEPARATOR=$lt_cv_sys_path_separator
- fi
-
-+
- # Check whether --with-gnu-ld or --without-gnu-ld was given.
- if test "${with_gnu_ld+set}" = set; then
- 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 $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
--echo "configure:1784: checking for ld used by GCC" >&5
-+ 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
-@@ -1809,17 +3218,17 @@
- ;;
- esac
- elif test "$with_gnu_ld" = yes; then
-- echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
--echo "configure:1814: checking for GNU ld" >&5
-+ echo "$as_me:$LINENO: checking for GNU ld" >&5
-+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
- else
-- echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
--echo "configure:1817: checking for non-GNU ld" >&5
-+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
- fi
--if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+if test "${lt_cv_path_LD+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- if test -z "$LD"; then
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-@@ -1842,15 +3251,19 @@
-
- LD="$lt_cv_path_LD"
- if test -n "$LD"; then
-- echo "$ac_t""$LD" 1>&6
-+ echo "$as_me:$LINENO: result: $LD" >&5
-+echo "${ECHO_T}$LD" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
--test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
--echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
--echo "configure:1852: checking if the linker ($LD) is GNU ld" >&5
--if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+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
-+if test "${lt_cv_prog_gnu_ld+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- # I'd rather use --version here, but apparently some GNU ld's only accept -v.
- if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
-@@ -1859,33 +3272,33 @@
- lt_cv_prog_gnu_ld=no
- fi
- fi
--
--echo "$ac_t""$lt_cv_prog_gnu_ld" 1>&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 $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
--echo "configure:1869: checking for $LD option to reload object files" >&5
--if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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 "$ac_t""$lt_cv_ld_reload_flag" 1>&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 $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
--echo "configure:1881: checking for BSD-compatible nm" >&5
--if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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
- if test -n "$NM"; then
- # Let the user override the test.
- lt_cv_path_NM="$NM"
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
- test -z "$ac_dir" && ac_dir=.
- tmp_nm=$ac_dir/${ac_tool_prefix}nm
-@@ -1912,33 +3325,109 @@
- fi
-
- NM="$lt_cv_path_NM"
--echo "$ac_t""$NM" 1>&6
-+echo "$as_me:$LINENO: result: $NM" >&5
-+echo "${ECHO_T}$NM" >&6
-+
-+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
-+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
-+if test "${lt_cv_path_SED+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Loop through the user's path and test for sed and gsed.
-+# Then use that list of sed's as ones to test for truncation.
-+as_executable_p="test -f"
-+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_prog in sed gsed; do
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-+ _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext"
-+ fi
-+ done
-+ done
-+done
-+
-+ # Create a temporary directory, and hook for its removal unless debugging.
-+$debug ||
-+{
-+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-+ trap '{ (exit 1); exit 1; }' 1 2 13 15
-+}
-+
-+# Create a (secure) tmp directory for tmp files.
-+: ${TMPDIR=/tmp}
-+{
-+ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` &&
-+ test -n "$tmp" && test -d "$tmp"
-+} ||
-+{
-+ tmp=$TMPDIR/sed$$-$RANDOM
-+ (umask 077 && mkdir $tmp)
-+} ||
-+{
-+ echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-+ { (exit 1); exit 1; }
-+}
-+ _max=0
-+ _count=0
-+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
-+ # along with /bin/sed that truncates output.
-+ for _sed in $_sed_list /usr/xpg4/bin/sed; do
-+ test ! -f ${_sed} && break
-+ cat /dev/null > "$tmp/sed.in"
-+ _count=0
-+ echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in"
-+ # Check for GNU sed and select it if it is found.
-+ if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then
-+ lt_cv_path_SED=${_sed}
-+ break
-+ fi
-+ while true; do
-+ cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp"
-+ mv "$tmp/sed.tmp" "$tmp/sed.in"
-+ cp "$tmp/sed.in" "$tmp/sed.nl"
-+ echo >>"$tmp/sed.nl"
-+ ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break
-+ cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break
-+ # 40000 chars as input seems more than enough
-+ test $_count -gt 10 && break
-+ _count=`expr $_count + 1`
-+ if test $_count -gt $_max; then
-+ _max=$_count
-+ lt_cv_path_SED=$_sed
-+ fi
-+ done
-+ done
-+ rm -rf "$tmp"
-
--echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
--echo "configure:1919: checking whether ln -s works" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- rm -f conftestdata
--if ln -s X conftestdata 2>/dev/null
--then
-- rm -f conftestdata
-- ac_cv_prog_LN_S="ln -s"
--else
-- ac_cv_prog_LN_S=ln
- fi
-+
-+if test "X$SED" != "X"; then
-+ lt_cv_path_SED=$SED
-+else
-+ SED=$lt_cv_path_SED
- fi
--LN_S="$ac_cv_prog_LN_S"
--if test "$ac_cv_prog_LN_S" = "ln -s"; then
-- echo "$ac_t""yes" 1>&6
-+echo "$as_me:$LINENO: result: $SED" >&5
-+echo "${ECHO_T}$SED" >&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
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
-+echo "${ECHO_T}no, using $LN_S" >&6
- fi
-
--echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
--echo "configure:1940: checking how to recognise dependant libraries" >&5
--if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
-+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
-+if test "${lt_cv_deplibs_check_method+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- lt_cv_file_magic_cmd='$MAGIC_CMD'
- lt_cv_file_magic_test_file=
-@@ -1949,7 +3438,7 @@
- # `unknown' -- same as none, but documents that we really don't know.
- # 'pass_all' -- all dependencies passed with no checks.
- # 'test_compile' -- check by making test program.
--# ['file_magic [regex]'] -- check by looking for files in library path
-+# 'file_magic [[regex]]' -- check by looking for files in library path
- # which responds to the $file_magic_cmd with a given egrep regex.
- # If you have `file' or equivalent on your system and you're not sure
- # whether `pass_all' will *always* work, you probably want this one.
-@@ -1978,7 +3467,7 @@
- lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
- lt_cv_file_magic_cmd='/usr/bin/file -L'
- case "$host_os" in
-- rhapsody* | darwin1.012)
-+ rhapsody* | darwin1.[012])
- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
- ;;
- *) # Darwin 1.3 on
-@@ -2013,9 +3502,9 @@
- lt_cv_file_magic_test_file=/usr/lib/libc.sl
- ;;
-
--irix5* | irix6*)
-+irix5* | irix6* | nonstopux*)
- case $host_os in
-- irix5*)
-+ irix5* | nonstopux*)
- # this will be overridden with pass_all, but let us keep it just in case
- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
- ;;
-@@ -2037,7 +3526,7 @@
- # This must be Linux ELF.
- linux-gnu*)
- case $host_cpu in
-- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* )
-+ alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64* | arm* | m68k)
- lt_cv_deplibs_check_method=pass_all ;;
- *)
- # glibc up to 2.1.1 does not perform some relocations on ARM
-@@ -2060,6 +3549,16 @@
- lt_cv_file_magic_test_file=/usr/lib/libnls.so
- ;;
-
-+openbsd*)
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
-+ else
-+ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
-+ fi
-+ ;;
-+
- osf3* | osf4* | osf5*)
- # this will be overridden with pass_all, but let us keep it just in case
- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
-@@ -2098,89 +3597,32 @@
- lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
- lt_cv_file_magic_test_file=/lib/libc.so
- ;;
-+ siemens)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
- esac
- ;;
- esac
-
- fi
--
--echo "$ac_t""$lt_cv_deplibs_check_method" 1>&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
-
--echo $ac_n "checking for object suffix""... $ac_c" 1>&6
--echo "configure:2113: checking for object suffix" >&5
--if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- rm -f conftest*
--echo 'int i = 1;' > conftest.$ac_ext
--if { (eval echo configure:2119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-- for ac_file in conftest.*; do
-- case $ac_file in
-- *.c) ;;
-- *) ac_cv_objext=`echo $ac_file | sed -e s/conftest.//` ;;
-- esac
-- done
--else
-- { echo "configure: error: installation or configuration problem; compiler does not work" 1>&2; exit 1; }
--fi
--rm -f conftest*
--fi
--
--echo "$ac_t""$ac_cv_objext" 1>&6
--OBJEXT=$ac_cv_objext
--ac_objext=$ac_cv_objext
--
--
--
--echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
--echo "configure:2139: checking for executable suffix" >&5
--if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- if test "$CYGWIN" = yes || test "$MINGW32" = yes; then
-- ac_cv_exeext=.exe
--else
-- rm -f conftest*
-- echo 'int main () { return 0; }' > conftest.$ac_ext
-- ac_cv_exeext=
-- if { (eval echo configure:2149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-- for file in conftest.*; do
-- case $file in
-- *.c | *.o | *.obj) ;;
-- *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
-- esac
-- done
-- else
-- { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; }
-- fi
-- rm -f conftest*
-- test x"${ac_cv_exeext}" = x && ac_cv_exeext=no
--fi
--fi
-
--EXEEXT=""
--test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext}
--echo "$ac_t""${ac_cv_exeext}" 1>&6
--ac_exeext=$EXEEXT
-
--if test $host != $build; then
-- ac_tool_prefix=${host_alias}-
--else
-- ac_tool_prefix=
--fi
-
-
-
-
- # Check for command to grab the raw symbol name followed by C symbol from nm.
--echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6
--echo "configure:2180: checking command to parse $NM output" >&5
--if eval "test \"`echo '$''{'lt_cv_sys_global_symbol_pipe'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+echo "$as_me:$LINENO: checking command to parse $NM output" >&5
-+echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6
-+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
--
-+
- # These are sane defaults that work on at least a few old systems.
- # [They come from Ultrix. What could be older than Ultrix?!! ;)]
-
-@@ -2196,6 +3638,9 @@
- # Transform an extracted symbol line into a proper C declaration
- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
-
-+# Transform an extracted symbol line into symbol name and symbol address
-+lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+
- # Define system-specific variables.
- case $host_os in
- aix*)
-@@ -2206,10 +3651,14 @@
- ;;
- hpux*) # Its linker distinguishes data from code symbols
- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-+ lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
- ;;
--irix*)
-+irix* | nonstopux*)
- symcode='[BCDEGRST]'
- ;;
-+osf*)
-+ symcode='[BCDEGQRST]'
-+ ;;
- solaris* | sysv5*)
- symcode='[BDT]'
- ;;
-@@ -2252,10 +3701,18 @@
- int main(){nm_test_var='a';nm_test_func();return(0);}
- EOF
-
-- if { (eval echo configure:2256: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
- # Now try to grab the symbols.
- nlist=conftest.nm
-- if { (eval echo configure:2259: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then
-+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
-+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && test -s "$nlist"; then
- # Try sorting and uniquifying the output.
- if sort "$nlist" | uniq > "$nlist"T; then
- mv -f "$nlist"T "$nlist"
-@@ -2277,23 +3734,23 @@
-
- cat <<EOF >> conftest.$ac_ext
- #if defined (__STDC__) && __STDC__
--# define lt_ptr_t void *
-+# define lt_ptr void *
- #else
--# define lt_ptr_t char *
-+# define lt_ptr char *
- # define const
- #endif
-
- /* The mapping between symbol names and symbols. */
- const struct {
- const char *name;
-- lt_ptr_t address;
-+ lt_ptr address;
- }
- lt_preloaded_symbols[] =
- {
- EOF
-- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" >> conftest.$ac_ext
-+ sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
- cat <<\EOF >> conftest.$ac_ext
-- {0, (lt_ptr_t) 0}
-+ {0, (lt_ptr) 0}
- };
-
- #ifdef __cplusplus
-@@ -2306,7 +3763,11 @@
- save_CFLAGS="$CFLAGS"
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$no_builtin_flag"
-- if { (eval echo configure:2310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && test -s conftest$ac_exeext; then
- pipe_works=yes
- fi
- LIBS="$save_LIBS"
-@@ -2339,84 +3800,665 @@
- global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
- if test -z "$lt_cv_sys_global_symbol_pipe"; then
- global_symbol_to_cdecl=
-+ global_symbol_to_c_name_address=
- else
- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
-+ global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
- fi
--if test -z "$global_symbol_pipe$global_symbol_to_cdecl"; then
-- echo "$ac_t""failed" 1>&6
-+if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
-+then
-+ echo "$as_me:$LINENO: result: failed" >&5
-+echo "${ECHO_T}failed" >&6
- else
-- echo "$ac_t""ok" 1>&6
-+ echo "$as_me:$LINENO: result: ok" >&5
-+echo "${ECHO_T}ok" >&6
- fi
-
--for ac_hdr in dlfcn.h
-+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 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=
-+fi
-+if test -z "$CPP"; then
-+ if test "${ac_cv_prog_CPP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Double quotes because CPP needs to be expanded
-+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-+ do
-+ ac_preproc_ok=false
-+for ac_c_preproc_warn_flag in '' yes
- do
--ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
--echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:2356: checking for $ac_hdr" >&5
--if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ # Use a header file that comes with gcc, so configuring glibc
-+ # with a fresh cross-compiler works.
-+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ # <limits.h> exists even on freestanding compilers.
-+ # On the NeXT, cc -E runs the code through the compiler's parser,
-+ # not just through cpp. "Syntax error" is here to catch this case.
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#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
-+ ac_status=$?
-+ 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
-+ else
-+ ac_cpp_err=
-+ fi
- else
-- cat > conftest.$ac_ext <<EOF
--#line 2361 "configure"
--#include "confdefs.h"
--#include <$ac_hdr>
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:2366: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-- rm -rf conftest*
-- eval "ac_cv_header_$ac_safe=yes"
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ :
- else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_header_$ac_safe=no"
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Broken: fails on valid input.
-+continue
- fi
--rm -f conftest*
-+rm -f conftest.err conftest.$ac_ext
-+
-+ # OK, works on sane cases. Now check whether non-existent headers
-+ # can be detected and how.
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+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
-+ ac_status=$?
-+ 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
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
- fi
--if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-- cat >> confdefs.h <<EOF
--#define $ac_tr_hdr 1
--EOF
--
-+if test -z "$ac_cpp_err"; then
-+ # Broken: success on invalid input.
-+continue
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Passes both tests.
-+ac_preproc_ok=:
-+break
- fi
-+rm -f conftest.err conftest.$ac_ext
-+
- done
-+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-+rm -f conftest.err conftest.$ac_ext
-+if $ac_preproc_ok; then
-+ break
-+fi
-
-+ done
-+ ac_cv_prog_CPP=$CPP
-+
-+fi
-+ CPP=$ac_cv_prog_CPP
-+else
-+ ac_cv_prog_CPP=$CPP
-+fi
-+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
-+ # Use a header file that comes with gcc, so configuring glibc
-+ # with a fresh cross-compiler works.
-+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ # <limits.h> exists even on freestanding compilers.
-+ # On the NeXT, cc -E runs the code through the compiler's parser,
-+ # not just through cpp. "Syntax error" is here to catch this case.
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#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
-+ ac_status=$?
-+ 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
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+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
-+ # can be detected and how.
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+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
-+ ac_status=$?
-+ 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
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ # Broken: success on invalid input.
-+continue
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-
-+ # Passes both tests.
-+ac_preproc_ok=:
-+break
-+fi
-+rm -f conftest.err conftest.$ac_ext
-
--# Only perform the check for file, if the check method requires it
--case $deplibs_check_method in
--file_magic*)
-- if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-- echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6
--echo "configure:2401: checking for ${ac_tool_prefix}file" >&5
--if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+done
-+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-+rm -f conftest.err conftest.$ac_ext
-+if $ac_preproc_ok; then
-+ :
- else
-- case $MAGIC_CMD in
-- /*)
-- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-- ;;
-- ?:/*)
-- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-- ;;
-- *)
-- ac_save_MAGIC_CMD="$MAGIC_CMD"
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="/usr/bin:$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/${ac_tool_prefix}file; then
-- lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-- if test -n "$file_magic_test_file"; then
-+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-+See \`config.log' for more details." >&2;}
-+ { (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
-+
-+
-+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 $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'
-+ 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: 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
-+#line $LINENO "configure"
-+/* 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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.$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
-+#line $LINENO "configure"
-+/* 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
-+ :
-+else
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <stdlib.h>
-+
-+_ACEOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ $EGREP "free" >/dev/null 2>&1; then
-+ :
-+else
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-+ if test "$cross_compiling" = yes; then
-+ :
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <ctype.h>
-+#if ((' ' & 0x0FF) == 0x020)
-+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-+#else
-+# define ISLOWER(c) \
-+ (('a' <= (c) && (c) <= 'i') \
-+ || ('j' <= (c) && (c) <= 'r') \
-+ || ('s' <= (c) && (c) <= 'z'))
-+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-+#endif
-+
-+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-+int
-+main ()
-+{
-+ int i;
-+ for (i = 0; i < 256; i++)
-+ if (XOR (islower (i), ISLOWER (i))
-+ || toupper (i) != TOUPPER (i))
-+ exit(2);
-+ exit (0);
-+}
-+_ACEOF
-+rm -f conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ :
-+else
-+ echo "$as_me: program exited with status $ac_status" >&5
-+echo "$as_me: failed program was:" >&5
-+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
-+fi
-+fi
-+fi
-+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
-+#define STDC_HEADERS 1
-+_ACEOF
-+
-+fi
-+
-+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.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 $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$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>&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
-+ eval "$as_ac_Header=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_Header=no"
-+fi
-+rm -f 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
-+if test `eval echo '${'$as_ac_Header'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+
-+done
-+
-+
-+
-+for ac_header in dlfcn.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
-+ 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
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$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>&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_header_compiler=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f 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
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+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
-+ ac_status=$?
-+ 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
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ ac_header_preproc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+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
-+
-+# So? What about this header?
-+case $ac_header_compiler:$ac_header_preproc in
-+ yes:no )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-+ (
-+ cat <<\_ASBOX
-+## ------------------------------------ ##
-+## Report this to bug-autoconf@gnu.org. ##
-+## ------------------------------------ ##
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+ no:yes )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-+ (
-+ cat <<\_ASBOX
-+## ------------------------------------ ##
-+## Report this to bug-autoconf@gnu.org. ##
-+## ------------------------------------ ##
-+_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 $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
-+
-+fi
-+if test `eval echo '${'$as_ac_Header'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+
-+done
-+
-+
-+
-+
-+
-+
-+# Only perform the check for file, if the check method requires it
-+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
-+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $MAGIC_CMD in
-+ /*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-+ ;;
-+ ?:/*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-+ ;;
-+ *)
-+ ac_save_MAGIC_CMD="$MAGIC_CMD"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+ ac_dummy="/usr/bin:$PATH"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/${ac_tool_prefix}file; then
-+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-+ if test -n "$file_magic_test_file"; then
- case $deplibs_check_method in
- "file_magic "*)
- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-@@ -2451,17 +4493,19 @@
-
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
- if test -n "$MAGIC_CMD"; then
-- echo "$ac_t""$MAGIC_CMD" 1>&6
-+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-+echo "${ECHO_T}$MAGIC_CMD" >&6
- else
-- echo "$ac_t""no" 1>&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 $ac_n "checking for file""... $ac_c" 1>&6
--echo "configure:2463: checking for file" >&5
--if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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
- case $MAGIC_CMD in
- /*)
-@@ -2513,9 +4557,11 @@
-
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
- if test -n "$MAGIC_CMD"; then
-- echo "$ac_t""$MAGIC_CMD" 1>&6
-+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-+echo "${ECHO_T}$MAGIC_CMD" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
- else
-@@ -2527,138 +4573,164 @@
- ;;
- esac
-
--# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-+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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:2534: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+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_RANLIB="${ac_tool_prefix}ranlib"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
- fi
- fi
--RANLIB="$ac_cv_prog_RANLIB"
-+RANLIB=$ac_cv_prog_RANLIB
- if test -n "$RANLIB"; then
-- echo "$ac_t""$RANLIB" 1>&6
-+ echo "$as_me:$LINENO: result: $RANLIB" >&5
-+echo "${ECHO_T}$RANLIB" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
--
-+fi
- if test -z "$ac_cv_prog_RANLIB"; then
--if test -n "$ac_tool_prefix"; 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:2566: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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
-- if test -n "$RANLIB"; then
-- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-+ if test -n "$ac_ct_RANLIB"; then
-+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_RANLIB="ranlib"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-- test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-+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_RANLIB="ranlib"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
- fi
- fi
--RANLIB="$ac_cv_prog_RANLIB"
--if test -n "$RANLIB"; then
-- echo "$ac_t""$RANLIB" 1>&6
-+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
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
-+ RANLIB=$ac_ct_RANLIB
- else
-- RANLIB=":"
--fi
-+ RANLIB="$ac_cv_prog_RANLIB"
- fi
-
--# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-+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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:2601: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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
- if test -n "$STRIP"; then
- ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+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_STRIP="${ac_tool_prefix}strip"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
- fi
- fi
--STRIP="$ac_cv_prog_STRIP"
-+STRIP=$ac_cv_prog_STRIP
- if test -n "$STRIP"; then
-- echo "$ac_t""$STRIP" 1>&6
-+ echo "$as_me:$LINENO: result: $STRIP" >&5
-+echo "${ECHO_T}$STRIP" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
--
-+fi
- if test -z "$ac_cv_prog_STRIP"; then
--if test -n "$ac_tool_prefix"; 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:2633: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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
-- if test -n "$STRIP"; then
-- ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-+ if test -n "$ac_ct_STRIP"; then
-+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
- else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_prog_STRIP="strip"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-- test -z "$ac_cv_prog_STRIP" && ac_cv_prog_STRIP=":"
-+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_STRIP="strip"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
- fi
- fi
--STRIP="$ac_cv_prog_STRIP"
--if test -n "$STRIP"; then
-- echo "$ac_t""$STRIP" 1>&6
-+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
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
-+ STRIP=$ac_ct_STRIP
- else
-- STRIP=":"
--fi
-+ STRIP="$ac_cv_prog_STRIP"
- fi
-
-
-@@ -2668,9 +4740,8 @@
- # Check whether --enable-libtool-lock or --disable-libtool-lock was given.
- if test "${enable_libtool_lock+set}" = set; then
- enableval="$enable_libtool_lock"
-- :
--fi
-
-+fi;
- test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
- # Some flags need to be propagated to the compiler or linker for good
-@@ -2678,8 +4749,12 @@
- case $host in
- *-*-irix6*)
- # Find out which ABI we are using.
-- echo '#line 2682 "configure"' > conftest.$ac_ext
-- if { (eval echo configure:2683: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ echo '#line 4752 "configure"' > conftest.$ac_ext
-+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
- case `/usr/bin/file conftest.$ac_objext` in
- *32-bit*)
- LD="${LD-ld} -32"
-@@ -2699,47 +4774,64 @@
- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -belf"
-- echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
--echo "configure:2704: checking whether the C compiler needs -belf" >&5
--if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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
--# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
- ac_cpp='$CPP $CPPFLAGS'
--ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
--cross_compiling=$ac_cv_prog_cc_cross
-+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
-+
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
-- cat > conftest.$ac_ext <<EOF
--#line 2717 "configure"
--#include "confdefs.h"
--
--int main() {
-+int
-+main ()
-+{
-
--; return 0; }
--EOF
--if { (eval echo configure:2724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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
- lt_cv_cc_needs_belf=yes
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- lt_cv_cc_needs_belf=no
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+lt_cv_cc_needs_belf=no
- fi
--rm -f conftest*
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- ac_ext=c
--# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
- ac_cpp='$CPP $CPPFLAGS'
--ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
--cross_compiling=$ac_cv_prog_cc_cross
-+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
-
- fi
--
--echo "$ac_t""$lt_cv_cc_needs_belf" 1>&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"
-@@ -2824,16 +4916,23 @@
- old_postuninstall_cmds=
-
- if test -n "$RANLIB"; then
-+ case $host_os in
-+ openbsd*)
-+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ *)
-+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
- fi
-
- # Allow CC to be a program name with arguments.
- set dummy $CC
- compiler="$2"
-
--echo $ac_n "checking for objdir""... $ac_c" 1>&6
--echo "configure:2837: checking for objdir" >&5
-+echo "$as_me:$LINENO: checking for objdir" >&5
-+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
- rm -f .libs 2>/dev/null
- mkdir .libs 2>/dev/null
- if test -d .libs; then
-@@ -2843,7 +4942,9 @@
- objdir=_libs
- fi
- rmdir .libs 2>/dev/null
--echo "$ac_t""$objdir" 1>&6
-+echo "$as_me:$LINENO: result: $objdir" >&5
-+echo "${ECHO_T}$objdir" >&6
-+
-
-
- # Check whether --with-pic or --without-pic was given.
-@@ -2852,17 +4953,16 @@
- pic_mode="$withval"
- else
- pic_mode=default
--fi
--
-+fi;
- test -z "$pic_mode" && pic_mode=default
-
- # We assume here that the value for lt_cv_prog_cc_pic will not be cached
- # in isolation, and that seeing it set (from the cache) indicates that
- # the associated values are set (in the cache) correctly too.
--echo $ac_n "checking for $compiler option to produce PIC""... $ac_c" 1>&6
--echo "configure:2864: checking for $compiler option to produce PIC" >&5
--if eval "test \"`echo '$''{'lt_cv_prog_cc_pic'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
-+if test "${lt_cv_prog_cc_pic+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- lt_cv_prog_cc_pic=
- lt_cv_prog_cc_shlib=
-@@ -2882,7 +4982,7 @@
- # libC (AIX C++ library), which obviously doesn't included in libraries
- # list by gcc. This cause undefined symbols with -static flags.
- # This hack allows C programs to be linked with "-static -ldl", but
-- # we not sure about C++ programs.
-+ # not sure about C++ programs.
- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
- ;;
- amigaos*)
-@@ -2891,7 +4991,7 @@
- # like `-m68040'.
- lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
- ;;
-- beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
-+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
- darwin* | rhapsody*)
-@@ -2917,13 +5017,13 @@
- # PORTME Check for PIC flags for the system compiler.
- case $host_os in
- aix3* | aix4* | aix5*)
-+ lt_cv_prog_cc_wl='-Wl,'
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- lt_cv_prog_cc_static='-Bstatic'
-- lt_cv_prog_cc_wl='-Wl,'
-+ # AIX 5 now supports IA64 processor
-+ lt_cv_prog_cc_static='-Bstatic'
- else
-- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
-+ lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
- fi
- ;;
-
-@@ -2934,7 +5034,7 @@
- lt_cv_prog_cc_pic='+Z'
- ;;
-
-- irix5* | irix6*)
-+ irix5* | irix6* | nonstopux*)
- lt_cv_prog_cc_wl='-Wl,'
- lt_cv_prog_cc_static='-non_shared'
- # PIC (with -KPIC) is the default.
-@@ -2978,11 +5078,7 @@
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- lt_cv_prog_cc_pic='-KPIC'
- lt_cv_prog_cc_static='-Bstatic'
-- if test "x$host_vendor" = xsni; then
-- lt_cv_prog_cc_wl='-LD'
-- else
-- lt_cv_prog_cc_wl='-Wl,'
-- fi
-+ lt_cv_prog_cc_wl='-Wl,'
- ;;
-
- uts4*)
-@@ -3006,28 +5102,48 @@
- fi
-
- if test -z "$lt_cv_prog_cc_pic"; then
-- echo "$ac_t""none" 1>&6
-+ echo "$as_me:$LINENO: result: none" >&5
-+echo "${ECHO_T}none" >&6
- else
-- echo "$ac_t""$lt_cv_prog_cc_pic" 1>&6
-+ echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5
-+echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6
-
- # Check to make sure the pic_flag actually works.
-- echo $ac_n "checking if $compiler PIC flag $lt_cv_prog_cc_pic works""... $ac_c" 1>&6
--echo "configure:3016: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
-- if eval "test \"`echo '$''{'lt_cv_prog_cc_pic_works'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
-+echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6
-+ if test "${lt_cv_prog_cc_pic_works+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
-- cat > conftest.$ac_ext <<EOF
--#line 3023 "configure"
--#include "confdefs.h"
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--int main() {
-+int
-+main ()
-+{
-
--; return 0; }
--EOF
--if { (eval echo configure:3030: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-- rm -rf conftest*
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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
- case $host_os in
- hpux9* | hpux10* | hpux11*)
- # On HP-UX, both CC and GCC only warn that PIC is supported... then
-@@ -3043,17 +5159,17 @@
- lt_cv_prog_cc_pic_works=yes
- ;;
- esac
--
-+
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- lt_cv_prog_cc_pic_works=no
--
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ lt_cv_prog_cc_pic_works=no
-+
- fi
--rm -f conftest*
-+rm -f conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$save_CFLAGS"
--
-+
- fi
-
-
-@@ -3064,43 +5180,65 @@
- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
- fi
-
-- echo "$ac_t""$lt_cv_prog_cc_pic_works" 1>&6
-+ echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5
-+echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6
- fi
-
- # Check for any special shared library compilation flags.
- if test -n "$lt_cv_prog_cc_shlib"; then
-- echo "configure: warning: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" 1>&2
-+ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5
-+echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;}
- if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then :
- else
-- echo "configure: warning: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" 1>&2
-+ { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
-+echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
- lt_cv_prog_cc_can_build_shared=no
- fi
- fi
-
--echo $ac_n "checking if $compiler static flag $lt_cv_prog_cc_static works""... $ac_c" 1>&6
--echo "configure:3082: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
--if eval "test \"`echo '$''{'lt_cv_prog_cc_static_works'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
-+echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6
-+if test "${lt_cv_prog_cc_static_works+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- lt_cv_prog_cc_static_works=no
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
-- cat > conftest.$ac_ext <<EOF
--#line 3090 "configure"
--#include "confdefs.h"
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--int main() {
-+int
-+main ()
-+{
-
--; return 0; }
--EOF
--if { (eval echo configure:3097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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
- lt_cv_prog_cc_static_works=yes
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- fi
--rm -f conftest*
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$save_LDFLAGS"
-
- fi
-@@ -3108,7 +5246,8 @@
-
- # Belt *and* braces to stop my trousers falling down:
- test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
--echo "$ac_t""$lt_cv_prog_cc_static_works" 1>&6
-+echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5
-+echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6
-
- pic_flag="$lt_cv_prog_cc_pic"
- special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
-@@ -3119,12 +5258,12 @@
-
-
- # Check to see if options -o and -c are simultaneously supported by compiler
--echo $ac_n "checking if $compiler supports -c -o file.$ac_objext""... $ac_c" 1>&6
--echo "configure:3124: checking if $compiler supports -c -o file.$ac_objext" >&5
--if eval "test \"`echo '$''{'lt_cv_compiler_c_o'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-+if test "${lt_cv_compiler_c_o+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
--
-+
- $rm -r conftest 2>/dev/null
- mkdir conftest
- cd conftest
-@@ -3139,7 +5278,7 @@
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
- compiler_c_o=no
--if { (eval echo configure:3143: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
-+if { (eval echo configure:5281: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s out/conftest.err; then
-@@ -3163,29 +5302,50 @@
- fi
-
- compiler_c_o=$lt_cv_compiler_c_o
--echo "$ac_t""$compiler_c_o" 1>&6
-+echo "$as_me:$LINENO: result: $compiler_c_o" >&5
-+echo "${ECHO_T}$compiler_c_o" >&6
-
- if test x"$compiler_c_o" = x"yes"; then
- # Check to see if we can write to a .lo
-- echo $ac_n "checking if $compiler supports -c -o file.lo""... $ac_c" 1>&6
--echo "configure:3172: checking if $compiler supports -c -o file.lo" >&5
-- if eval "test \"`echo '$''{'lt_cv_compiler_o_lo'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5
-+echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6
-+ if test "${lt_cv_compiler_o_lo+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
--
-+
- lt_cv_compiler_o_lo=no
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -c -o conftest.lo"
-- cat > conftest.$ac_ext <<EOF
--#line 3181 "configure"
--#include "confdefs.h"
-+ save_objext="$ac_objext"
-+ ac_objext=lo
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--int main() {
-+int
-+main ()
-+{
- int some_variable = 0;
--; return 0; }
--EOF
--if { (eval echo configure:3188: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-- rm -rf conftest*
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
-@@ -3193,18 +5353,21 @@
- else
- lt_cv_compiler_o_lo=yes
- fi
--
-+
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- fi
--rm -f conftest*
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+ ac_objext="$save_objext"
- CFLAGS="$save_CFLAGS"
--
-+
- fi
-
- compiler_o_lo=$lt_cv_compiler_o_lo
-- echo "$ac_t""$compiler_o_lo" 1>&6
-+ echo "$as_me:$LINENO: result: $compiler_o_lo" >&5
-+echo "${ECHO_T}$compiler_o_lo" >&6
- else
- compiler_o_lo=no
- fi
-@@ -3213,17 +5376,19 @@
- hard_links="nottested"
- if test "$compiler_c_o" = no && test "$need_locks" != no; then
- # do not overwrite the value of need_locks provided by the user
-- echo $ac_n "checking if we can lock with hard links""... $ac_c" 1>&6
--echo "configure:3218: checking if we can lock with hard links" >&5
-+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
- hard_links=yes
- $rm conftest*
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- touch conftest.a
- ln conftest.a conftest.b 2>&5 || hard_links=no
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- echo "$ac_t""$hard_links" 1>&6
-+ echo "$as_me:$LINENO: result: $hard_links" >&5
-+echo "${ECHO_T}$hard_links" >&6
- if test "$hard_links" = no; then
-- echo "configure: warning: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" 1>&2
-+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
- need_locks=warn
- fi
- else
-@@ -3232,22 +5397,40 @@
-
- if test "$GCC" = yes; then
- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
-- echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions""... $ac_c" 1>&6
--echo "configure:3237: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-+ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
- echo "int some_variable = 0;" > conftest.$ac_ext
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
- compiler_rtti_exceptions=no
-- cat > conftest.$ac_ext <<EOF
--#line 3243 "configure"
--#include "confdefs.h"
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--int main() {
-+int
-+main ()
-+{
- int some_variable = 0;
--; return 0; }
--EOF
--if { (eval echo configure:3250: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-- rm -rf conftest*
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
-@@ -3255,14 +5438,16 @@
- else
- compiler_rtti_exceptions=yes
- fi
--
-+
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- fi
--rm -f conftest*
-+rm -f conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$save_CFLAGS"
-- echo "$ac_t""$compiler_rtti_exceptions" 1>&6
-+ echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5
-+echo "${ECHO_T}$compiler_rtti_exceptions" >&6
-
- if test "$compiler_rtti_exceptions" = "yes"; then
- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
-@@ -3272,8 +5457,8 @@
- fi
-
- # See if the linker supports building shared libraries.
--echo $ac_n "checking whether the linker ($LD) supports shared libraries""... $ac_c" 1>&6
--echo "configure:3277: checking whether the linker ($LD) supports shared libraries" >&5
-+echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5
-+echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6
-
- allow_undefined_flag=
- no_undefined_flag=
-@@ -3314,7 +5499,7 @@
- extract_expsyms_cmds=
-
- case $host_os in
--cygwin* | mingw* | pw32* )
-+cygwin* | mingw* | pw32*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
-@@ -3322,7 +5507,9 @@
- with_gnu_ld=no
- fi
- ;;
--
-+openbsd*)
-+ with_gnu_ld=no
-+ ;;
- esac
-
- ld_shlibs=yes
-@@ -3409,7 +5596,7 @@
- # can override, but on older systems we have to supply one (in ltdll.c)
- if test "x$lt_cv_need_dllmain" = "xyes"; then
- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
-- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < [$]0 > $output_objdir/$soname-ltdll.c~
-+ ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
- else
- ltdll_obj=
-@@ -3427,19 +5614,20 @@
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is.
- # If DATA tags from a recent dlltool are present, honour them!
-- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then
-- cp $export_symbols $output_objdir/$soname-def;
-+ archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname-def;
- else
-- echo EXPORTS > $output_objdir/$soname-def;
-- _lt_hint=1;
-- cat $export_symbols | while read symbol; do
-- set dummy \$symbol;
-- case \$# in
-- 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
-- *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;;
-- esac;
-- _lt_hint=`expr 1 + \$_lt_hint`;
-- done;
-+ echo EXPORTS > $output_objdir/$soname-def;
-+ _lt_hint=1;
-+ cat $export_symbols | while read symbol; do
-+ set dummy \$symbol;
-+ case \$# in
-+ 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
-+ 4) echo " \$2 \$3 \$4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;;
-+ *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;;
-+ esac;
-+ _lt_hint=`expr 1 + \$_lt_hint`;
-+ done;
- fi~
- '"$ltdll_cmds"'
- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-@@ -3534,80 +5722,98 @@
- ;;
-
- aix4* | aix5*)
-+ if test "$host_cpu" = ia64; then
-+ # On IA64, the linker does run time linking by default, so we don't
-+ # have to do anything special.
-+ aix_use_runtimelinking=no
-+ exp_sym_flag='-Bexport'
-+ no_entry_flag=""
-+ else
-+ aix_use_runtimelinking=no
-+
-+ # Test if we are trying to use run time linking or normal
-+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-+ # need to do runtime linking.
-+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-+ for ld_flag in $LDFLAGS; do
-+ case $ld_flag in
-+ *-brtl*)
-+ aix_use_runtimelinking=yes
-+ break
-+ ;;
-+ esac
-+ done
-+ esac
-+
-+ exp_sym_flag='-bexport'
-+ no_entry_flag='-bnoentry'
-+ fi
-+
- # When large executables or shared objects are built, AIX ld can
- # have problems creating the table of contents. If linking a library
- # or program results in "error TOC overflow" add -mminimal-toc to
- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-+ hardcode_direct=yes
- archive_cmds=''
- hardcode_libdir_separator=':'
- if test "$GCC" = yes; then
-- collect2name=`${CC} -print-prog-name=collect2`
-- if test -f "$collect2name" && \
-- strings "$collect2name" | grep resolve_lib_name >/dev/null
-- then
-- # We have reworked collect2
-- hardcode_direct=yes
-- else
-- # We have old collect2
-- hardcode_direct=unsupported
-- # It fails to find uninstalled libraries when the uninstalled
-- # path is not listed in the libpath. Setting hardcode_minus_L
-- # to unsupported forces relinking
-- hardcode_minus_L=yes
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_libdir_separator=
-- fi
-- shared_flag='-shared'
-- else
-+ case $host_os in aix4.[012]|aix4.[012].*)
-+ collect2name=`${CC} -print-prog-name=collect2`
-+ if test -f "$collect2name" && \
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ then
-+ # We have reworked collect2
-+ hardcode_direct=yes
-+ else
-+ # We have old collect2
-+ hardcode_direct=unsupported
-+ # It fails to find uninstalled libraries when the uninstalled
-+ # path is not listed in the libpath. Setting hardcode_minus_L
-+ # to unsupported forces relinking
-+ hardcode_minus_L=yes
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_libdir_separator=
-+ fi
-+ esac
-+
-+ shared_flag='-shared'
-+ else
-+ # not using gcc
- if test "$host_cpu" = ia64; then
-- shared_flag='-G'
-+ shared_flag='${wl}-G'
- else
-- shared_flag='${wl}-bM:SRE'
-+ if test "$aix_use_runtimelinking" = yes; then
-+ shared_flag='${wl}-G'
-+ else
-+ shared_flag='${wl}-bM:SRE'
-+ fi
- fi
-- hardcode_direct=yes
- fi
-
-- if test "$host_cpu" = ia64; then
-- # On IA64, the linker does run time linking by default, so we don't
-- # have to do anything special.
-- aix_use_runtimelinking=no
-- exp_sym_flag='-Bexport'
-- no_entry_flag=""
-- else
-- # Test if we are trying to use run time linking, or normal AIX style linking.
-- # If -brtl is somewhere in LDFLAGS, we need to do run time linking.
-- aix_use_runtimelinking=no
-- for ld_flag in $LDFLAGS; do
-- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
-- aix_use_runtimelinking=yes
-- break
-- fi
-- done
-- exp_sym_flag='-bexport'
-- no_entry_flag='-bnoentry'
-- fi
- # It seems that -bexpall can do strange things, so it is better to
- # generate a list of symbols to export.
- always_export_symbols=yes
- if test "$aix_use_runtimelinking" = yes; then
-+ # Warning - without using the other runtime loading flags (-brtl),
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='-berok'
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
-- allow_undefined_flag=' -Wl,-G'
-- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
- else
- if test "$host_cpu" = ia64; then
-- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-- allow_undefined_flag="-znodefs"
-- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-+ allow_undefined_flag="-z nodefs"
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
- else
-- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
-- # Warning - without using the other run time loading flags, -berok will
-- # link without error, but may produce a broken library.
-- allow_undefined_flag='${wl}-berok'
-- # This is a bit strange, but is similar to how AIX traditionally builds
-- # it's shared libraries.
-- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname'
-+ hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
-+ # Warning - without using the other run time loading flags,
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='${wl}-berok'
-+ # This is a bit strange, but is similar to how AIX traditionally builds
-+ # it's shared libraries.
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $output_objdir/$libname$release.a $output_objdir/$soname'
- fi
- fi
- ;;
-@@ -3639,11 +5845,19 @@
- ;;
-
- darwin* | rhapsody*)
-- allow_undefined_flag='-undefined suppress'
-+ case "$host_os" in
-+ rhapsody* | darwin1.[012])
-+ allow_undefined_flag='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ allow_undefined_flag='-flat_namespace -undefined suppress'
-+ ;;
-+ esac
- # FIXME: Relying on posixy $() will cause problems for
- # cross-compilation, but unfortunately the echo tests do not
-- # yet detect zsh echo's removal of \ escapes.
-- archive_cmds='$CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linkopts -install_name $rpath/$soname $(test -n "$verstring" -a x$verstring != x0.0 && echo $verstring)'
-+ # yet detect zsh echo's removal of \ escapes. Also zsh mangles
-+ # `"' quotes if we put them in here... so don't!
-+ archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)'
- # We need to add '_' to the symbols in $export_symbols first
- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
- hardcode_direct=yes
-@@ -3695,13 +5909,14 @@
- export_dynamic_flag_spec='${wl}-E'
- ;;
-
-- irix5* | irix6*)
-+ irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- else
- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='-rpath $libdir'
- fi
-- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- link_all_deplibs=yes
- ;;
-@@ -3718,7 +5933,7 @@
- ;;
-
- newsos6)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
-@@ -3726,10 +5941,24 @@
- ;;
-
- openbsd*)
-- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ export_dynamic_flag_spec='${wl}-E'
-+ else
-+ case "$host_os" in
-+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ ;;
-+ *)
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ ;;
-+ esac
-+ fi
- ;;
-
- os2*)
-@@ -3774,10 +6003,39 @@
- hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
-+ export_dynamic_flag_spec='${wl}-Bexport'
- ;;
-
- solaris*)
-+ # gcc --version < 3.0 without binutils cannot create self contained
-+ # shared libraries reliably, requiring libgcc.a to resolve some of
-+ # the object symbols generated in some cases. Libraries that use
-+ # assert need libgcc.a to resolve __eprintf, for example. Linking
-+ # a copy of libgcc.a into every shared library to guarantee resolving
-+ # such symbols causes other problems: According to Tim Van Holder
-+ # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
-+ # (to the application) exception stack for one thing.
- no_undefined_flag=' -z defs'
-+ if test "$GCC" = yes; then
-+ case `$CC --version 2>/dev/null` in
-+ [12].*)
-+ cat <<EOF 1>&2
-+
-+*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
-+*** create self contained shared libraries on Solaris systems, without
-+*** introducing a dependency on libgcc.a. Therefore, libtool is disabling
-+*** -no-undefined support, which will at least allow you to build shared
-+*** libraries. However, you may find that when you link such libraries
-+*** into an application without using GCC, you have to manually add
-+*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to
-+*** upgrade to a newer version of GCC. Another option is to rebuild your
-+*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
-+
-+EOF
-+ no_undefined_flag=
-+ ;;
-+ esac
-+ fi
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-@@ -3808,13 +6066,23 @@
- ;;
-
- sysv4)
-- if test "x$host_vendor" = xsno; then
-- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linkopts'
-- hardcode_direct=yes # is this really true???
-- else
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-- fi
-+ case $host_vendor in
-+ sni)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes # is this really true???
-+ ;;
-+ siemens)
-+ ## LD is ld it makes a PLAMLIB
-+ ## CC just makes a GrossModule.
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ reload_cmds='$CC -r -o $output$reload_objs'
-+ hardcode_direct=no
-+ ;;
-+ motorola)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-+ ;;
-+ esac
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
- ;;
-@@ -3884,12 +6152,13 @@
- ;;
- esac
- fi
--echo "$ac_t""$ld_shlibs" 1>&6
-+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
-+echo "${ECHO_T}$ld_shlibs" >&6
- test "$ld_shlibs" = no && can_build_shared=no
-
- # Check hardcoding attributes.
--echo $ac_n "checking how to hardcode library paths into programs""... $ac_c" 1>&6
--echo "configure:3893: checking how to hardcode library paths into programs" >&5
-+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
- hardcode_action=
- if test -n "$hardcode_libdir_flag_spec" || \
- test -n "$runpath_var"; then
-@@ -3912,26 +6181,29 @@
- # directories.
- hardcode_action=unsupported
- fi
--echo "$ac_t""$hardcode_action" 1>&6
-+echo "$as_me:$LINENO: result: $hardcode_action" >&5
-+echo "${ECHO_T}$hardcode_action" >&6
-
- striplib=
- old_striplib=
--echo $ac_n "checking whether stripping libraries is possible""... $ac_c" 1>&6
--echo "configure:3921: checking whether stripping libraries is possible" >&5
-+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
- if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-- echo "$ac_t""yes" 1>&6
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
- # PORTME Fill in your ld.so characteristics
--echo $ac_n "checking dynamic linker characteristics""... $ac_c" 1>&6
--echo "configure:3935: checking dynamic linker characteristics" >&5
-+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
- library_names_spec=
- libname_spec='lib$name'
- soname_spec=
-@@ -3958,6 +6230,9 @@
-
- aix4* | aix5*)
- version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ hardcode_into_libs=yes
- if test "$host_cpu" = ia64; then
- # AIX 5 supports IA64
- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
-@@ -3969,22 +6244,24 @@
- # depend on `.', always an invalid library. This was fixed in
- # development snapshots of GCC prior to 3.0.
- case $host_os in
-- aix4 | aix4.[01] | aix4.[01].*)
-- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-- echo ' yes '
-- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-- :
-- else
-- can_build_shared=no
-- fi
-- ;;
-+ aix4 | aix4.[01] | aix4.[01].*)
-+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-+ echo ' yes '
-+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-+ :
-+ else
-+ can_build_shared=no
-+ fi
-+ ;;
- esac
-- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-- # soname into executable. Probably we can add versioning support to
-- # collect2, so additional links can be useful in future.
-+ # AIX (on Power*) has no versioning support, so currently we can
-+ # not hardcode correct soname into executable. Probably we can
-+ # add versioning support to collect2, so additional links can
-+ # be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
-- # If using run time linking (on AIX 4.2 or later) use lib<name>.so instead of
-- # lib<name>.a to let people know that these are not typical AIX shared libraries.
-+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-+ # instead of lib<name>.a to let people know that these are not
-+ # typical AIX shared libraries.
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- else
- # We preserve .a as extension for shared libraries through AIX4.2
-@@ -3993,8 +6270,8 @@
- soname_spec='${libname}${release}.so$major'
- fi
- shlibpath_var=LIBPATH
-- deplibs_check_method=pass_all
- fi
-+ hardcode_into_libs=yes
- ;;
-
- amigaos*)
-@@ -4042,7 +6319,7 @@
- ;;
- yes,mingw*)
- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"`
- ;;
- yes,pw32*)
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll'
-@@ -4074,6 +6351,18 @@
- dynamic_linker=no
- ;;
-
-+freebsd*-gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU/FreeBSD ld.so'
-+ ;;
-+
- freebsd*)
- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
- version_type=freebsd-$objformat
-@@ -4125,14 +6414,17 @@
- postinstall_cmds='chmod 555 $lib'
- ;;
-
--irix5* | irix6*)
-- version_type=irix
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ nonstopux*) version_type=nonstopux ;;
-+ *) version_type=irix ;;
-+ esac
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}.so$major'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
- case $host_os in
-- irix5*)
-+ irix5* | nonstopux*)
- libsuff= shlibsuff=
- ;;
- *)
-@@ -4206,9 +6498,19 @@
-
- openbsd*)
- version_type=sunos
-- if test "$with_gnu_ld" = yes; then
-- need_lib_prefix=no
-- need_version=no
-+ need_lib_prefix=no
-+ need_version=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ case "$host_os" in
-+ openbsd2.[89] | openbsd2.[89].*)
-+ shlibpath_overrides_runpath=no
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ esac
-+ else
-+ shlibpath_overrides_runpath=yes
- fi
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-@@ -4226,11 +6528,13 @@
- osf3* | osf4* | osf5*)
- version_type=osf
- need_version=no
-- soname_spec='${libname}${release}.so'
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
-+ need_lib_prefix=no
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-+ hardcode_into_libs=yes
- ;;
-
- sco3.2v5*)
-@@ -4273,6 +6577,12 @@
- case $host_vendor in
- sni)
- shlibpath_overrides_runpath=no
-+ need_lib_prefix=no
-+ export_dynamic_flag_spec='${wl}-Blargedynsym'
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+ siemens)
-+ need_lib_prefix=no
- ;;
- motorola)
- need_lib_prefix=no
-@@ -4312,13 +6622,46 @@
- dynamic_linker=no
- ;;
- esac
--echo "$ac_t""$dynamic_linker" 1>&6
-+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-+echo "${ECHO_T}$dynamic_linker" >&6
- test "$dynamic_linker" = no && can_build_shared=no
-
- # Report the final consequences.
--echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6
--echo "configure:4321: checking if libtool supports shared libraries" >&5
--echo "$ac_t""$can_build_shared" 1>&6
-+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
-+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
-+echo "$as_me:$LINENO: result: $can_build_shared" >&5
-+echo "${ECHO_T}$can_build_shared" >&6
-+
-+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
-+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
-+test "$can_build_shared" = "no" && enable_shared=no
-+
-+# On AIX, shared libraries and static libraries use the same namespace, and
-+# are all built from PIC.
-+case "$host_os" in
-+aix3*)
-+ test "$enable_shared" = yes && enable_static=no
-+ if test -n "$RANLIB"; then
-+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
-+ postinstall_cmds='$RANLIB $lib'
-+ fi
-+ ;;
-+
-+aix4*)
-+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-+ test "$enable_shared" = yes && enable_static=no
-+ fi
-+ ;;
-+esac
-+echo "$as_me:$LINENO: result: $enable_shared" >&5
-+echo "${ECHO_T}$enable_shared" >&6
-+
-+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
-+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
-+# Make sure either enable_shared or enable_static is yes.
-+test "$enable_shared" = yes || enable_static=yes
-+echo "$as_me:$LINENO: result: $enable_static" >&5
-+echo "${ECHO_T}$enable_static" >&6
-
- if test "$hardcode_action" = relink; then
- # Fast installation is not supported
-@@ -4355,224 +6698,398 @@
- ;;
-
- *)
-- echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
--echo "configure:4360: checking for dlopen in -ldl" >&5
--ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- ac_save_LIBS="$LIBS"
--LIBS="-ldl $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 4368 "configure"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error. */
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
--char dlopen();
--
--int main() {
--dlopen()
--; return 0; }
--EOF
--if { (eval echo configure:4379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
--
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
--else
-- echo "$ac_t""no" 1>&6
--echo $ac_n "checking for dlopen""... $ac_c" 1>&6
--echo "configure:4398: checking for dlopen" >&5
--if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 4403 "configure"
--#include "confdefs.h"
-+ echo "$as_me:$LINENO: checking for shl_load" >&5
-+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
-+if test "${ac_cv_func_shl_load+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- /* System header to define __stub macros and hopefully few prototypes,
-- which can conflict with char dlopen(); below. */
--#include <assert.h>
-+ which can conflict with char shl_load (); below.
-+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ <limits.h> exists even on freestanding compilers. */
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
- /* 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 dlopen();
--
--int main() {
--
-+ builtin and then its argument prototype would still apply. */
-+char shl_load ();
- /* 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_dlopen) || defined (__stub___dlopen)
-+#if defined (__stub_shl_load) || defined (__stub___shl_load)
- choke me
- #else
--dlopen();
-+char (*f) () = shl_load;
-+#endif
-+#ifdef __cplusplus
-+}
- #endif
-
--; return 0; }
--EOF
--if { (eval echo configure:4426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_func_dlopen=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_func_dlopen=no"
--fi
--rm -f conftest*
--fi
--
--if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- lt_cv_dlopen="dlopen"
-+int
-+main ()
-+{
-+return f != shl_load;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_func_shl_load=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_func_shl_load=no
-+fi
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
-+if test $ac_cv_func_shl_load = yes; then
-+ lt_cv_dlopen="shl_load"
- else
-- echo "$ac_t""no" 1>&6
--echo $ac_n "checking for shl_load""... $ac_c" 1>&6
--echo "configure:4444: checking for shl_load" >&5
--if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
-+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- cat > conftest.$ac_ext <<EOF
--#line 4449 "configure"
--#include "confdefs.h"
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldld $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* 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 shl_load ();
-+int
-+main ()
-+{
-+shl_load ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_dld_shl_load=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dld_shl_load=no
-+fi
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
-+if test $ac_cv_lib_dld_shl_load = yes; then
-+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen" >&5
-+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
-+if test "${ac_cv_func_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- /* System header to define __stub macros and hopefully few prototypes,
-- which can conflict with char shl_load(); below. */
--#include <assert.h>
-+ which can conflict with char dlopen (); below.
-+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ <limits.h> exists even on freestanding compilers. */
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
- /* 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 shl_load();
--
--int main() {
--
-+ builtin and then its argument prototype would still apply. */
-+char dlopen ();
- /* 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_shl_load) || defined (__stub___shl_load)
-+#if defined (__stub_dlopen) || defined (__stub___dlopen)
- choke me
- #else
--shl_load();
-+char (*f) () = dlopen;
-+#endif
-+#ifdef __cplusplus
-+}
- #endif
-
--; return 0; }
--EOF
--if { (eval echo configure:4472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_func_shl_load=yes"
-+int
-+main ()
-+{
-+return f != dlopen;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_func_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_func_dlopen=no
-+fi
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
-+if test $ac_cv_func_dlopen = yes; then
-+ lt_cv_dlopen="dlopen"
- else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_func_shl_load=no"
--fi
--rm -f conftest*
--fi
-+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldl $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- lt_cv_dlopen="shl_load"
-+/* 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 dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_dl_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dl_dlopen=no
-+fi
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-+if test $ac_cv_lib_dl_dlopen = yes; then
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
- else
-- echo "$ac_t""no" 1>&6
--echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6
--echo "configure:4490: checking for dlopen in -lsvld" >&5
--ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
-+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-lsvld $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 4498 "configure"
--#include "confdefs.h"
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* 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 dlopen();
--
--int main() {
--dlopen()
--; return 0; }
--EOF
--if { (eval echo configure:4509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
--
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+ builtin and then its argument prototype would still apply. */
-+char dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_svld_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_svld_dlopen=no
-+fi
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
-+if test $ac_cv_lib_svld_dlopen = yes; then
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
- else
-- echo "$ac_t""no" 1>&6
--echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
--echo "configure:4528: checking for shl_load in -ldld" >&5
--ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
-+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-ldld $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 4536 "configure"
--#include "confdefs.h"
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* 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 shl_load();
--
--int main() {
--shl_load()
--; return 0; }
--EOF
--if { (eval echo configure:4547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
-+ builtin and then its argument prototype would still apply. */
-+char dld_link ();
-+int
-+main ()
-+{
-+dld_link ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_dld_dld_link=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dld_dld_link=no
-+fi
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
-+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
-+if test $ac_cv_lib_dld_dld_link = yes; then
-+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
- fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
--else
-- echo "$ac_t""no" 1>&6
-+
- fi
-
--
-+
- fi
-
--
-+
- fi
-
--
-+
- fi
-
--
-+
- fi
-
- ;;
-@@ -4595,10 +7112,10 @@
- save_LIBS="$LIBS"
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
-- echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
--echo "configure:4600: checking whether a program can dlopen itself" >&5
--if eval "test \"`echo '$''{'lt_cv_dlopen_self'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
-+if test "${lt_cv_dlopen_self+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- if test "$cross_compiling" = yes; then :
- lt_cv_dlopen_self=cross
-@@ -4606,7 +7123,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 4610 "configure"
-+#line 7126 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -4667,7 +7184,11 @@
- exit (status);
- }
- EOF
-- if { (eval echo configure:4671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
-@@ -4682,17 +7203,17 @@
- fi
- rm -fr conftest*
-
--
--fi
-
--echo "$ac_t""$lt_cv_dlopen_self" 1>&6
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
-
- if test "x$lt_cv_dlopen_self" = xyes; then
- LDFLAGS="$LDFLAGS $link_static_flag"
-- echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
--echo "configure:4694: checking whether a statically linked program can dlopen itself" >&5
--if eval "test \"`echo '$''{'lt_cv_dlopen_self_static'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
-+if test "${lt_cv_dlopen_self_static+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- if test "$cross_compiling" = yes; then :
- lt_cv_dlopen_self_static=cross
-@@ -4700,7 +7221,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 4704 "configure"
-+#line 7224 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -4761,7 +7282,11 @@
- exit (status);
- }
- EOF
-- if { (eval echo configure:4765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
-@@ -4776,10 +7301,10 @@
- fi
- rm -fr conftest*
-
--
--fi
-
--echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
- fi
-
- CPPFLAGS="$save_CPPFLAGS"
-@@ -4809,15 +7334,19 @@
- # Test whether the compiler implicitly links with -lc since on some
- # systems, -lgcc has to come before -lc. If gcc already passes -lc
- # to ld, don't add -lc before -lgcc.
-- echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6
--echo "configure:4814: checking whether -lc should be explicitly linked in" >&5
-- if eval "test \"`echo '$''{'lt_cv_archive_cmds_need_lc'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-+ if test "${lt_cv_archive_cmds_need_lc+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- $rm conftest*
- echo 'static int dummy;' > conftest.$ac_ext
-
-- if { (eval echo configure:4821: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
- soname=conftest
- lib=conftest
- libobjs=conftest.$ac_objext
-@@ -4830,7 +7359,11 @@
- libname=conftest
- save_allow_undefined_flag=$allow_undefined_flag
- allow_undefined_flag=
-- if { (eval echo configure:4834: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
-+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-+ (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
- then
- lt_cv_archive_cmds_need_lc=no
- else
-@@ -4842,7 +7375,8 @@
- fi
- fi
-
-- echo "$ac_t""$lt_cv_archive_cmds_need_lc" 1>&6
-+ echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5
-+echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6
- ;;
- esac
- fi
-@@ -4870,7 +7404,7 @@
- # Now quote all the things that may contain metacharacters while being
- # careful not to overquote the AC_SUBSTed values. We take copies of the
- # variables and quote the copies for generation of the libtool script.
-- for var in echo old_CC old_CFLAGS \
-+ for var in echo old_CC old_CFLAGS SED \
- AR AR_FLAGS CC LD LN_S NM SHELL \
- reload_flag reload_cmds wl \
- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
-@@ -4882,6 +7416,7 @@
- old_striplib striplib file_magic_cmd export_symbols_cmds \
- deplibs_check_method allow_undefined_flag no_undefined_flag \
- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
-+ global_symbol_to_c_name_address \
- hardcode_libdir_flag_spec hardcode_libdir_separator \
- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
-@@ -4931,8 +7466,11 @@
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
-
-+# A sed that does not truncate output.
-+SED=$lt_SED
-+
- # Sed that helps us avoid accidentally triggering echo(1) options like -n.
--Xsed="sed -e s/^X//"
-+Xsed="${SED} -e s/^X//"
-
- # The HP-UX ksh and POSIX shell print the target directory to stdout
- # if CDPATH is set.
-@@ -4948,12 +7486,12 @@
- # Whether or not to build shared libraries.
- build_libtool_libs=$enable_shared
-
--# Whether or not to add -lc for building shared libraries.
--build_libtool_need_lc=$need_lc
--
- # Whether or not to build static libraries.
- build_old_libs=$enable_static
-
-+# Whether or not to add -lc for building shared libraries.
-+build_libtool_need_lc=$need_lc
-+
- # Whether or not to optimize for fast installation.
- fast_install=$enable_fast_install
-
-@@ -5119,6 +7657,9 @@
- # Transform the output of nm in a proper C declaration
- global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
-
-+# Transform the output of nm in a C name address pair
-+global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
-+
- # This is the shared library runtime path variable.
- runpath_var=$runpath_var
-
-@@ -5241,9 +7782,9 @@
- # return TRUE;
- # }
- # /* ltdll.c ends here */
-- # This is a source program that is used to create import libraries
-- # on Windows for dlls which lack them. Don't remove nor modify the
-- # starting and closing comments
-+ # This is a source program that is used to create import libraries
-+ # on Windows for dlls which lack them. Don't remove nor modify the
-+ # starting and closing comments
- # /* impgen.c starts here */
- # /* Copyright (C) 1999-2000 Free Software Foundation, Inc.
- #
-@@ -5411,156 +7952,386 @@
-
- # Extract the first word of "perl", so it can be a program name with args.
- set dummy perl; ac_word=$2
--echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:5416: checking for $ac_word" >&5
--if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&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_PERL+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- case "$PERL" in
-- /*)
-+ case $PERL in
-+ [\\/]* | ?:[\\/]*)
- ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
- ;;
-- ?:/*)
-- ac_cv_path_PERL="$PERL" # Let the user override the test with a dos path.
-- ;;
- *)
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-- ac_dummy="$PATH"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$ac_word; then
-- ac_cv_path_PERL="$ac_dir/$ac_word"
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-+ 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_path_PERL="$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
-+
- ;;
- esac
- fi
--PERL="$ac_cv_path_PERL"
-+PERL=$ac_cv_path_PERL
-+
- if test -n "$PERL"; then
-- echo "$ac_t""$PERL" 1>&6
-+ echo "$as_me:$LINENO: result: $PERL" >&5
-+echo "${ECHO_T}$PERL" >&6
- else
-- echo "$ac_t""no" 1>&6
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
-
-
-
-
--ac_safe=`echo "asm/errno.h" | sed 'y%./+-%__p_%'`
--echo $ac_n "checking for asm/errno.h""... $ac_c" 1>&6
--echo "configure:5453: checking for asm/errno.h" >&5
--if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+if test "${ac_cv_header_asm_errno_h+set}" = set; then
-+ echo "$as_me:$LINENO: checking for asm/errno.h" >&5
-+echo $ECHO_N "checking for asm/errno.h... $ECHO_C" >&6
-+if test "${ac_cv_header_asm_errno_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_asm_errno_h" >&5
-+echo "${ECHO_T}$ac_cv_header_asm_errno_h" >&6
- else
-- cat > conftest.$ac_ext <<EOF
--#line 5458 "configure"
--#include "confdefs.h"
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking asm/errno.h usability" >&5
-+echo $ECHO_N "checking asm/errno.h usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
- #include <asm/errno.h>
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:5463: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-- rm -rf conftest*
-- eval "ac_cv_header_$ac_safe=yes"
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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_header_compiler=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f 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 asm/errno.h presence" >&5
-+echo $ECHO_N "checking asm/errno.h presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <asm/errno.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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
-+ else
-+ ac_cpp_err=
-+ fi
- else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_header_$ac_safe=no"
-+ ac_cpp_err=yes
- fi
--rm -f conftest*
-+if test -z "$ac_cpp_err"; then
-+ ac_header_preproc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+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
-+
-+# So? What about this header?
-+case $ac_header_compiler:$ac_header_preproc in
-+ yes:no )
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: asm/errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&2;}
-+ (
-+ cat <<\_ASBOX
-+## ------------------------------------ ##
-+## Report this to bug-autoconf@gnu.org. ##
-+## ------------------------------------ ##
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+ no:yes )
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: asm/errno.h: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: asm/errno.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&2;}
-+ (
-+ cat <<\_ASBOX
-+## ------------------------------------ ##
-+## Report this to bug-autoconf@gnu.org. ##
-+## ------------------------------------ ##
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+esac
-+echo "$as_me:$LINENO: checking for asm/errno.h" >&5
-+echo $ECHO_N "checking for asm/errno.h... $ECHO_C" >&6
-+if test "${ac_cv_header_asm_errno_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_header_asm_errno_h=$ac_header_preproc
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_asm_errno_h" >&5
-+echo "${ECHO_T}$ac_cv_header_asm_errno_h" >&6
-+
- fi
--if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+if test $ac_cv_header_asm_errno_h = yes; then
- :
- else
-- echo "$ac_t""no" 1>&6
--{ echo "configure: error: *** Unable to find asm/errno.h!!!" 1>&2; exit 1; }
-+ { { echo "$as_me:$LINENO: error: *** Unable to find asm/errno.h!!!" >&5
-+echo "$as_me: error: *** Unable to find asm/errno.h!!!" >&2;}
-+ { (exit 1); exit 1; }; }
-
- fi
-
-
--ac_safe=`echo "linux/atmsap.h" | sed 'y%./+-%__p_%'`
--echo $ac_n "checking for linux/atmsap.h""... $ac_c" 1>&6
--echo "configure:5489: checking for linux/atmsap.h" >&5
--if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
--else
-- cat > conftest.$ac_ext <<EOF
--#line 5494 "configure"
--#include "confdefs.h"
-+
-+if test "${ac_cv_header_linux_atmsap_h+set}" = set; then
-+ echo "$as_me:$LINENO: checking for linux/atmsap.h" >&5
-+echo $ECHO_N "checking for linux/atmsap.h... $ECHO_C" >&6
-+if test "${ac_cv_header_linux_atmsap_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_linux_atmsap_h" >&5
-+echo "${ECHO_T}$ac_cv_header_linux_atmsap_h" >&6
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking linux/atmsap.h usability" >&5
-+echo $ECHO_N "checking linux/atmsap.h usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
- #include <linux/atmsap.h>
--EOF
--ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:5499: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
-- rm -rf conftest*
-- eval "ac_cv_header_$ac_safe=yes"
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 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_header_compiler=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f 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/atmsap.h presence" >&5
-+echo $ECHO_N "checking linux/atmsap.h presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <linux/atmsap.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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
-+ else
-+ ac_cpp_err=
-+ fi
- else
-- echo "$ac_err" >&5
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_header_$ac_safe=no"
-+ ac_cpp_err=yes
- fi
--rm -f conftest*
-+if test -z "$ac_cpp_err"; then
-+ ac_header_preproc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+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
-+
-+# So? What about this header?
-+case $ac_header_compiler:$ac_header_preproc in
-+ yes:no )
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&2;}
-+ (
-+ cat <<\_ASBOX
-+## ------------------------------------ ##
-+## Report this to bug-autoconf@gnu.org. ##
-+## ------------------------------------ ##
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+ no:yes )
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&2;}
-+ (
-+ cat <<\_ASBOX
-+## ------------------------------------ ##
-+## Report this to bug-autoconf@gnu.org. ##
-+## ------------------------------------ ##
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+esac
-+echo "$as_me:$LINENO: checking for linux/atmsap.h" >&5
-+echo $ECHO_N "checking for linux/atmsap.h... $ECHO_C" >&6
-+if test "${ac_cv_header_linux_atmsap_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_header_linux_atmsap_h=$ac_header_preproc
- fi
--if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-+echo "$as_me:$LINENO: result: $ac_cv_header_linux_atmsap_h" >&5
-+echo "${ECHO_T}$ac_cv_header_linux_atmsap_h" >&6
-+
-+fi
-+if test $ac_cv_header_linux_atmsap_h = yes; then
- :
- else
-- echo "$ac_t""no" 1>&6
--{ echo "configure: error: *** Unable to find linux/atmsap.h!!!" 1>&2; exit 1; }
-+ { { echo "$as_me:$LINENO: error: *** Unable to find linux/atmsap.h!!!" >&5
-+echo "$as_me: error: *** Unable to find linux/atmsap.h!!!" >&2;}
-+ { (exit 1); exit 1; }; }
-
- fi
-
-
--echo $ac_n "checking for main in -lresolv""... $ac_c" 1>&6
--echo "configure:5524: checking for main in -lresolv" >&5
--ac_lib_var=`echo resolv'_'main | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+
-+
-+echo "$as_me:$LINENO: checking for main in -lresolv" >&5
-+echo $ECHO_N "checking for main in -lresolv... $ECHO_C" >&6
-+if test "${ac_cv_lib_resolv_main+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-lresolv $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 5532 "configure"
--#include "confdefs.h"
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--int main() {
--main()
--; return 0; }
--EOF
--if { (eval echo configure:5539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- ac_tr_lib=HAVE_LIB`echo resolv | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-- cat >> confdefs.h <<EOF
--#define $ac_tr_lib 1
--EOF
-+int
-+main ()
-+{
-+main ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_resolv_main=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_resolv_main=no
-+fi
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_main" >&5
-+echo "${ECHO_T}$ac_cv_lib_resolv_main" >&6
-+if test $ac_cv_lib_resolv_main = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define HAVE_LIBRESOLV 1
-+_ACEOF
-
- LIBS="-lresolv $LIBS"
-
- else
-- echo "$ac_t""no" 1>&6
--{ echo "configure: error: *** Unable to find libresolv!!!" 1>&2; exit 1; }
-+ { { echo "$as_me:$LINENO: error: *** Unable to find libresolv!!!" >&5
-+echo "$as_me: error: *** Unable to find libresolv!!!" >&2;}
-+ { (exit 1); exit 1; }; }
-
- fi
-
-@@ -5571,639 +8342,1417 @@
- CFLAGS="$INCLUDES $CFLAGS -Wall -Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes"
- YACC="$YACC -d"
-
--cat >> confdefs.h <<\EOF
-+cat >>confdefs.h <<\_ACEOF
- #define YY_USE_CONST 1
--EOF
-+_ACEOF
-
-
- atmsigd_conf_dir=` test "x$exec_prefix" = xNONE && exec_prefix=$ac_default_prefix
- test "x$prefix" = xNONE && prefix=${exec_prefix}
- eval echo "$sysconfdir"`
--cat >> confdefs.h <<EOF
-+cat >>confdefs.h <<_ACEOF
- #define ATMSIGD_CONF "$atmsigd_conf_dir/atmsigd.conf"
--EOF
-+_ACEOF
-+
-
-
- # Check whether --with-uni or --without-uni was given.
- if test "${with_uni+set}" = set; then
- withval="$with_uni"
--
-+
- case "$with_uni" in
-- "3.0" ) cat >> confdefs.h <<\EOF
-+ "3.0" ) cat >>confdefs.h <<\_ACEOF
- #define UNI30 1
--EOF
-+_ACEOF
-
- ;;
-- "3.1" ) cat >> confdefs.h <<\EOF
-+ "3.1" ) cat >>confdefs.h <<\_ACEOF
- #define UNI31 1
--EOF
-+_ACEOF
-
- ;;
-- "4.0" ) cat >> confdefs.h <<\EOF
-+ "4.0" ) cat >>confdefs.h <<\_ACEOF
- #define UNI40 1
--EOF
-+_ACEOF
-
- ;;
- *)
-- cat >> confdefs.h <<\EOF
-+ cat >>confdefs.h <<\_ACEOF
- #define DYNAMIC_UNI 1
--EOF
-+_ACEOF
-
-- echo "configure: warning: *** UNI version not specified correctly. Defaulting to dynamic UNI." 1>&2
-+ { echo "$as_me:$LINENO: WARNING: *** UNI version not specified correctly. Defaulting to dynamic UNI." >&5
-+echo "$as_me: WARNING: *** UNI version not specified correctly. Defaulting to dynamic UNI." >&2;}
- esac
--
-+
- else
-- cat >> confdefs.h <<\EOF
-+ cat >>confdefs.h <<\_ACEOF
- #define DYNAMIC_UNI 1
--EOF
-+_ACEOF
-
-
--fi
--
-+fi;
-
- # Check whether --enable-allow_uni30 or --disable-allow_uni30 was given.
- if test "${enable_allow_uni30+set}" = set; then
- enableval="$enable_allow_uni30"
--
-+
- if test "$with_uni" = "3.1" ; then
-- cat >> confdefs.h <<\EOF
-+ cat >>confdefs.h <<\_ACEOF
- #define ALLOW_UNI30 1
--EOF
-+_ACEOF
-
- else
-- echo "configure: warning: *** Allow UNI 3.0 was not enabled. It is only valid when UNI 3.1 is specified as the default via --with-uni." 1>&2
-+ { echo "$as_me:$LINENO: WARNING: *** Allow UNI 3.0 was not enabled. It is only valid when UNI 3.1 is specified as the default via --with-uni." >&5
-+echo "$as_me: WARNING: *** Allow UNI 3.0 was not enabled. It is only valid when UNI 3.1 is specified as the default via --with-uni." >&2;}
- fi
--
-
--fi
-
-+fi;
-
- # Check whether --enable-q2963_1 or --disable-q2963_1 was given.
- if test "${enable_q2963_1+set}" = set; then
- enableval="$enable_q2963_1"
--
-+
- if test "$with_uni" = "4.0" ; then
-- cat >> confdefs.h <<\EOF
-+ cat >>confdefs.h <<\_ACEOF
- #define Q2963_1 1
--EOF
-+_ACEOF
-
- else
-- echo "configure: warning: *** Q.2963.1 was not enabled. It is only valid when UNI 4.0 is specified as the default via --with-uni." 1>&2
-+ { echo "$as_me:$LINENO: WARNING: *** Q.2963.1 was not enabled. It is only valid when UNI 4.0 is specified as the default via --with-uni." >&5
-+echo "$as_me: WARNING: *** Q.2963.1 was not enabled. It is only valid when UNI 4.0 is specified as the default via --with-uni." >&2;}
- fi
--
-
--fi
-
-+fi;
-
- # Check whether --enable-cisco or --disable-cisco was given.
- if test "${enable_cisco+set}" = set; then
- enableval="$enable_cisco"
-- cat >> confdefs.h <<\EOF
-+ cat >>confdefs.h <<\_ACEOF
- #define CISCO 1
--EOF
-+_ACEOF
-
-
--fi
--
-+fi;
-
- # Check whether --enable-thomflex or --disable-thomflex was given.
- if test "${enable_thomflex+set}" = set; then
- enableval="$enable_thomflex"
-- cat >> confdefs.h <<\EOF
-+ cat >>confdefs.h <<\_ACEOF
- #define THOMFLEX 1
--EOF
--
-+_ACEOF
-
--fi
-
-+fi;
-
--cat >> confdefs.h <<\EOF
-+cat >>confdefs.h <<\_ACEOF
- #define BROKEN_POLL 1
--EOF
-+_ACEOF
-
-
- # Check whether --enable-mpoa_1_1 or --disable-mpoa_1_1 was given.
- if test "${enable_mpoa_1_1+set}" = set; then
- enableval="$enable_mpoa_1_1"
-- cat >> confdefs.h <<\EOF
-+ cat >>confdefs.h <<\_ACEOF
- #define MPOA_1_1 1
--EOF
--
-+_ACEOF
-
--fi
-
-+fi;
-
- # Check whether --enable-mpr or --disable-mpr was given.
- if test "${enable_mpr+set}" = set; then
- enableval="$enable_mpr"
--
-+
- case "$enable_mpr" in
- "" | y | ye | yes | Y | YE | YES )
-- echo $ac_n "checking for main in -lmpr""... $ac_c" 1>&6
--echo "configure:5704: checking for main in -lmpr" >&5
--ac_lib_var=`echo mpr'_'main | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-- echo $ac_n "(cached) $ac_c" 1>&6
-+
-+echo "$as_me:$LINENO: checking for main in -lmpr" >&5
-+echo $ECHO_N "checking for main in -lmpr... $ECHO_C" >&6
-+if test "${ac_cv_lib_mpr_main+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_save_LIBS="$LIBS"
-+ ac_check_lib_save_LIBS=$LIBS
- LIBS="-lmpr $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 5712 "configure"
--#include "confdefs.h"
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-
--int main() {
--main()
--; return 0; }
--EOF
--if { (eval echo configure:5719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=yes"
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
-
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-- echo "$ac_t""yes" 1>&6
-- ac_tr_lib=HAVE_LIB`echo mpr | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-- cat >> confdefs.h <<EOF
--#define $ac_tr_lib 1
--EOF
-+int
-+main ()
-+{
-+main ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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_mpr_main=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_mpr_main=no
-+fi
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_mpr_main" >&5
-+echo "${ECHO_T}$ac_cv_lib_mpr_main" >&6
-+if test $ac_cv_lib_mpr_main = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define HAVE_LIBMPR 1
-+_ACEOF
-
- LIBS="-lmpr $LIBS"
-
- else
-- echo "$ac_t""no" 1>&6
-
-- echo "configure: warning: *** Could not find libmpr! Is MPR installed?" 1>&2
--
--
-+ { echo "$as_me:$LINENO: WARNING: *** Could not find libmpr! Is MPR installed?" >&5
-+echo "$as_me: WARNING: *** Could not find libmpr! Is MPR installed?" >&2;}
-+
-+
- fi
-
- ;;
- esac
--
-
--fi
-
-+fi;
-
-
--trap '' 1 2 15
--cat > confcache <<\EOF
-+ ac_config_files="$ac_config_files Makefile doc/Makefile m4/Makefile src/Makefile src/include/Makefile src/lib/Makefile src/test/Makefile src/debug/Makefile src/qgen/Makefile src/saal/Makefile src/sigd/Makefile src/maint/Makefile src/arpd/Makefile src/ilmid/Makefile src/ilmid/asn1/Makefile src/man/Makefile src/led/Makefile src/lane/Makefile src/mpoad/Makefile src/switch/Makefile src/switch/debug/Makefile src/switch/tcp/Makefile src/config/Makefile src/config/init-redhat/Makefile src/extra/Makefile src/extra/linux-atm.spec src/extra/ANS/Makefile"
-+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
--# scripts and configure runs. It is not useful on other systems.
--# If it contains results you don't want to keep, you may remove or edit it.
-+# scripts and configure runs, see configure's option --config-cache.
-+# It is not useful on other systems. If it contains results you don't
-+# want to keep, you may remove or edit it.
- #
--# By default, configure uses ./config.cache as the cache file,
--# creating it if it does not exist already. You can give configure
--# the --cache-file=FILE option to use a different cache file; that is
--# what configure does when it calls configure scripts in
--# subdirectories, so they share the cache.
--# Giving --cache-file=/dev/null disables caching, for debugging configure.
--# config.status only pays attention to the cache file if you give it the
--# --recheck option to rerun configure.
-+# config.status only pays attention to the cache file if you give it
-+# the --recheck option to rerun configure.
- #
--EOF
-+# `ac_cv_env_foo' variables (set or unset) will be overridden when
-+# loading this file, other *unset* `ac_cv_foo' will be assigned the
-+# following values.
-+
-+_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.
- # 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.
--(set) 2>&1 |
-- case `(ac_space=' '; set | grep ac_space) 2>&1` in
-- *ac_space=\ *)
-- # `set' does not quote correctly, so add quotes (double-quote substitution
-- # turns \\\\ into \\, and sed turns \\ into \).
-- sed -n \
-- -e "s/'/'\\\\''/g" \
-- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
-- ;;
-- *)
-- # `set' quotes correctly as required by POSIX, so do not add quotes.
-- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
-- ;;
-- esac >> confcache
--if cmp -s $cache_file confcache; then
-- :
--else
-+{
-+ (set) 2>&1 |
-+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
-+ *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"
-+ ;;
-+ esac;
-+} |
-+ sed '
-+ t 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
-- echo "updating cache $cache_file"
-- cat confcache > $cache_file
-+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
-+ cat confcache >$cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
- fi
- rm -f confcache
-
--trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
--
- test "x$prefix" = xNONE && prefix=$ac_default_prefix
- # Let make expand exec_prefix.
- test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
--# Any assignment to VPATH causes Sun make to only execute
--# the first set of double-colon rules, so remove it if not needed.
--# If there is a colon in the path, we need to keep it.
-+# 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[ ]*=[^:]*$/d'
-+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
-+s/:*\$(srcdir):*/:/;
-+s/:*\${srcdir}:*/:/;
-+s/:*@srcdir@:*/:/;
-+s/^\([^=]*=[ ]*\):*/\1/;
-+s/:*$//;
-+s/^[^=]*=[ ]*$//;
-+}'
- fi
-
--trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
--
- DEFS=-DHAVE_CONFIG_H
-
--# Without the "./", some shells look in PATH for config.status.
--: ${CONFIG_STATUS=./config.status}
-+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'
-+done
-+LIBOBJS=$ac_libobjs
-
--echo creating $CONFIG_STATUS
--rm -f $CONFIG_STATUS
--cat > $CONFIG_STATUS <<EOF
--#! /bin/sh
--# Generated automatically by configure.
-+LTLIBOBJS=$ac_ltlibobjs
-+
-+
-+
-+: ${CONFIG_STATUS=./config.status}
-+ac_clean_files_save=$ac_clean_files
-+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-+echo "$as_me: creating $CONFIG_STATUS" >&6;}
-+cat >$CONFIG_STATUS <<_ACEOF
-+#! $SHELL
-+# Generated by $as_me.
- # Run this file to recreate the current configuration.
--# This directory was configured as follows,
--# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
--#
--# $0 $ac_configure_args
--#
- # Compiler output produced by configure, useful for debugging
--# configure, is in ./config.log if it exists.
-+# configure, is in config.log if it exists.
-
--ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
--for ac_option
-+debug=false
-+ac_cs_recheck=false
-+ac_cs_silent=false
-+SHELL=\${CONFIG_SHELL-$SHELL}
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+## --------------------- ##
-+## M4sh Initialization. ##
-+## --------------------- ##
-+
-+# Be Bourne compatible
-+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
-+fi
-+
-+# Support unset when possible.
-+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
-+ as_unset=unset
-+else
-+ as_unset=false
-+fi
-+
-+
-+# Work around bugs in pre-3.0 UWIN ksh.
-+$as_unset ENV MAIL MAILPATH
-+PS1='$ '
-+PS2='> '
-+PS4='+ '
-+
-+# NLS nuisances.
-+for as_var in \
-+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-+ LC_TELEPHONE LC_TIME
- do
-- case "\$ac_option" in
-- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-- echo "$CONFIG_STATUS generated by autoconf version 2.13"
-- exit 0 ;;
-- -help | --help | --hel | --he | --h)
-- echo "\$ac_cs_usage"; exit 0 ;;
-- *) echo "\$ac_cs_usage"; exit 1 ;;
-+ if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
-+ eval $as_var=C; export $as_var
-+ else
-+ $as_unset $as_var
-+ fi
-+done
-+
-+# Required to use basename.
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
-+ as_basename=basename
-+else
-+ as_basename=false
-+fi
-+
-+
-+# Name of the executable.
-+as_me=`$as_basename "$0" ||
-+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ 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
-+
-+# 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
-
--ac_given_srcdir=$srcdir
--ac_given_INSTALL="$INSTALL"
--
--trap 'rm -fr `echo "Makefile \
-- doc/Makefile \
-- m4/Makefile \
-- src/Makefile \
-- src/include/Makefile \
-- src/lib/Makefile \
-- src/test/Makefile \
-- src/debug/Makefile \
-- src/qgen/Makefile \
-- src/saal/Makefile \
-- src/sigd/Makefile \
-- src/maint/Makefile \
-- src/arpd/Makefile \
-- src/ilmid/Makefile \
-- src/ilmid/asn1/Makefile \
-- src/man/Makefile \
-- src/led/Makefile \
-- src/lane/Makefile \
-- src/mpoad/Makefile \
-- src/switch/Makefile \
-- src/switch/debug/Makefile \
-- src/switch/tcp/Makefile \
-- src/config/Makefile \
-- src/config/init-redhat/Makefile \
-- src/extra/Makefile \
-- src/extra/linux-atm.spec \
-- src/extra/ANS/Makefile
-- config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
--EOF
--cat >> $CONFIG_STATUS <<EOF
-+ # 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.
-+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
-+ sed '=' <$as_myself |
-+ sed '
-+ N
-+ s,$,-,
-+ : loop
-+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-+ t loop
-+ s,-$,,
-+ s,^['$as_cr_digits']*\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;}
-+ { (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
-+ # Exit status is that of the last command.
-+ exit
-+}
-
--# Protect against being on the right side of a sed subst in config.status.
--sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
-- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
--$ac_vpsub
--$extrasub
--s%@SHELL@%$SHELL%g
--s%@CFLAGS@%$CFLAGS%g
--s%@CPPFLAGS@%$CPPFLAGS%g
--s%@CXXFLAGS@%$CXXFLAGS%g
--s%@FFLAGS@%$FFLAGS%g
--s%@DEFS@%$DEFS%g
--s%@LDFLAGS@%$LDFLAGS%g
--s%@LIBS@%$LIBS%g
--s%@exec_prefix@%$exec_prefix%g
--s%@prefix@%$prefix%g
--s%@program_transform_name@%$program_transform_name%g
--s%@bindir@%$bindir%g
--s%@sbindir@%$sbindir%g
--s%@libexecdir@%$libexecdir%g
--s%@datadir@%$datadir%g
--s%@sysconfdir@%$sysconfdir%g
--s%@sharedstatedir@%$sharedstatedir%g
--s%@localstatedir@%$localstatedir%g
--s%@libdir@%$libdir%g
--s%@includedir@%$includedir%g
--s%@oldincludedir@%$oldincludedir%g
--s%@infodir@%$infodir%g
--s%@mandir@%$mandir%g
--s%@host@%$host%g
--s%@host_alias@%$host_alias%g
--s%@host_cpu@%$host_cpu%g
--s%@host_vendor@%$host_vendor%g
--s%@host_os@%$host_os%g
--s%@target@%$target%g
--s%@target_alias@%$target_alias%g
--s%@target_cpu@%$target_cpu%g
--s%@target_vendor@%$target_vendor%g
--s%@target_os@%$target_os%g
--s%@build@%$build%g
--s%@build_alias@%$build_alias%g
--s%@build_cpu@%$build_cpu%g
--s%@build_vendor@%$build_vendor%g
--s%@build_os@%$build_os%g
--s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
--s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
--s%@INSTALL_DATA@%$INSTALL_DATA%g
--s%@PACKAGE@%$PACKAGE%g
--s%@VERSION@%$VERSION%g
--s%@ACLOCAL@%$ACLOCAL%g
--s%@AUTOCONF@%$AUTOCONF%g
--s%@AUTOMAKE@%$AUTOMAKE%g
--s%@AUTOHEADER@%$AUTOHEADER%g
--s%@MAKEINFO@%$MAKEINFO%g
--s%@SET_MAKE@%$SET_MAKE%g
--s%@LIBVER_CURRENT@%$LIBVER_CURRENT%g
--s%@LIBVER_REVISION@%$LIBVER_REVISION%g
--s%@LIBVER_AGE@%$LIBVER_AGE%g
--s%@CC@%$CC%g
--s%@LEX@%$LEX%g
--s%@LEXLIB@%$LEXLIB%g
--s%@CPP@%$CPP%g
--s%@LEX_OUTPUT_ROOT@%$LEX_OUTPUT_ROOT%g
--s%@YACC@%$YACC%g
--s%@LN_S@%$LN_S%g
--s%@OBJEXT@%$OBJEXT%g
--s%@EXEEXT@%$EXEEXT%g
--s%@ECHO@%$ECHO%g
--s%@RANLIB@%$RANLIB%g
--s%@STRIP@%$STRIP%g
--s%@LIBTOOL@%$LIBTOOL%g
--s%@LIBTOOL_DEPS@%$LIBTOOL_DEPS%g
--s%@PERL@%$PERL%g
-
--CEOF
--EOF
-+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= ;;
-+esac
-
--cat >> $CONFIG_STATUS <<\EOF
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-
--# 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_cmds=90 # Maximum number of lines to put in a sed script.
--ac_file=1 # Number of current file.
--ac_beg=1 # First line for current file.
--ac_end=$ac_max_sed_cmds # 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" conftest.subs > conftest.s$ac_file
-- else
-- sed "${ac_end}q" conftest.subs > conftest.s$ac_file
-- fi
-- if test ! -s conftest.s$ac_file; then
-- ac_more_lines=false
-- rm -f conftest.s$ac_file
-+rm -f conf$$ conf$$.exe conf$$.file
-+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='cp -p'
- else
-- if test -z "$ac_sed_cmds"; then
-- ac_sed_cmds="sed -f conftest.s$ac_file"
-- else
-- ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
-- fi
-- ac_file=`expr $ac_file + 1`
-- ac_beg=$ac_end
-- ac_end=`expr $ac_end + $ac_max_sed_cmds`
-+ 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
-+
-+if mkdir -p . 2>/dev/null; then
-+ as_mkdir_p=:
-+else
-+ as_mkdir_p=false
-+fi
-+
-+as_executable_p="test -f"
-+
-+# Sed expression to map a string onto a valid CPP name.
-+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-+
-+# Sed expression to map a string onto a valid variable name.
-+as_tr_sh="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
-+# 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
-+
-+This file was extended by $as_me, which was
-+generated by GNU Autoconf 2.57. Invocation command line was
-+
-+ CONFIG_FILES = $CONFIG_FILES
-+ CONFIG_HEADERS = $CONFIG_HEADERS
-+ CONFIG_LINKS = $CONFIG_LINKS
-+ CONFIG_COMMANDS = $CONFIG_COMMANDS
-+ $ $0 $@
-+
-+_CSEOF
-+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
-+echo >&5
-+_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
-+
-+if test -n "$ac_config_commands"; then
-+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-+fi
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+ac_cs_usage="\
-+\`$as_me' instantiates files from templates according to the
-+current configuration.
-+
-+Usage: $0 [OPTIONS] [FILE]...
-+
-+ -h, --help print this help, then exit
-+ -V, --version print version number, 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
-+ --file=FILE[:TEMPLATE]
-+ instantiate the configuration file FILE
-+ --header=FILE[:TEMPLATE]
-+ instantiate the configuration header FILE
-+
-+Configuration files:
-+$config_files
-+
-+Configuration headers:
-+$config_headers
-+
-+Configuration commands:
-+$config_commands
-+
-+Report bugs to <bug-autoconf@gnu.org>."
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<_ACEOF
-+ac_cs_version="\\
-+config.status
-+configured by $0, generated by GNU Autoconf 2.57,
-+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-+
-+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-+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"
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+# If no file are specified by the user, then we need to provide default
-+# value. By we need to know if files were specified by the user.
-+ac_need_defaults=:
-+while test $# != 0
-+do
-+ case $1 in
-+ --*=*)
-+ 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 )
-+ debug=: ;;
-+ --file | --fil | --fi | --f )
-+ $ac_shift
-+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
-+ ac_need_defaults=false;;
-+ --header | --heade | --head | --hea )
-+ $ac_shift
-+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
-+ ac_need_defaults=false;;
-+ -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;}
-+ { (exit 1); exit 1; }; } ;;
-+
-+ *) ac_config_targets="$ac_config_targets $1" ;;
-+
-+ esac
-+ shift
-+done
-+
-+ac_configure_extra_args=
-+
-+if $ac_cs_silent; then
-+ exec 6>/dev/null
-+ ac_configure_extra_args="$ac_configure_extra_args --silent"
-+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
-+fi
-+
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<_ACEOF
-+#
-+# INIT-COMMANDS section.
-+#
-+
-+
-+
-+_ACEOF
-+
-+
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+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" ;;
-+ "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;;
-+ "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-+ "src/include/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/include/Makefile" ;;
-+ "src/lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/lib/Makefile" ;;
-+ "src/test/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/test/Makefile" ;;
-+ "src/debug/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/debug/Makefile" ;;
-+ "src/qgen/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/qgen/Makefile" ;;
-+ "src/saal/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/saal/Makefile" ;;
-+ "src/sigd/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/sigd/Makefile" ;;
-+ "src/maint/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/maint/Makefile" ;;
-+ "src/arpd/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/arpd/Makefile" ;;
-+ "src/ilmid/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/ilmid/Makefile" ;;
-+ "src/ilmid/asn1/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/ilmid/asn1/Makefile" ;;
-+ "src/man/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/man/Makefile" ;;
-+ "src/led/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/led/Makefile" ;;
-+ "src/lane/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/lane/Makefile" ;;
-+ "src/mpoad/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/mpoad/Makefile" ;;
-+ "src/switch/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/switch/Makefile" ;;
-+ "src/switch/debug/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/switch/debug/Makefile" ;;
-+ "src/switch/tcp/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/switch/tcp/Makefile" ;;
-+ "src/config/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/config/Makefile" ;;
-+ "src/config/init-redhat/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/config/init-redhat/Makefile" ;;
-+ "src/extra/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/Makefile" ;;
-+ "src/extra/linux-atm.spec" ) CONFIG_FILES="$CONFIG_FILES src/extra/linux-atm.spec" ;;
-+ "src/extra/ANS/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/ANS/Makefile" ;;
-+ "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
-+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-+ *) { { 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 test -z "$ac_sed_cmds"; then
-- ac_sed_cmds=cat
-+
-+# 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
-+# bizarre bug on SunOS 4.1.3.
-+if $ac_need_defaults; then
-+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
- fi
--EOF
-
--cat >> $CONFIG_STATUS <<EOF
-+# 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,
-+# creating and moving files from /tmp can sometimes cause problems.
-+# Create a temporary directory, and hook for its removal unless debugging.
-+$debug ||
-+{
-+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-+ trap '{ (exit 1); exit 1; }' 1 2 13 15
-+}
-
--CONFIG_FILES=\${CONFIG_FILES-"Makefile \
-- doc/Makefile \
-- m4/Makefile \
-- src/Makefile \
-- src/include/Makefile \
-- src/lib/Makefile \
-- src/test/Makefile \
-- src/debug/Makefile \
-- src/qgen/Makefile \
-- src/saal/Makefile \
-- src/sigd/Makefile \
-- src/maint/Makefile \
-- src/arpd/Makefile \
-- src/ilmid/Makefile \
-- src/ilmid/asn1/Makefile \
-- src/man/Makefile \
-- src/led/Makefile \
-- src/lane/Makefile \
-- src/mpoad/Makefile \
-- src/switch/Makefile \
-- src/switch/debug/Makefile \
-- src/switch/tcp/Makefile \
-- src/config/Makefile \
-- src/config/init-redhat/Makefile \
-- src/extra/Makefile \
-- src/extra/linux-atm.spec \
-- src/extra/ANS/Makefile
-- "}
--EOF
--cat >> $CONFIG_STATUS <<\EOF
--for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-+# Create a (secure) tmp directory for tmp files.
-+
-+{
-+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
-+ test -n "$tmp" && test -d "$tmp"
-+} ||
-+{
-+ tmp=./confstat$$-$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.
-+#
-+
-+# 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,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-+s,@INSTALL_DATA@,$INSTALL_DATA,;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,@SET_MAKE@,$SET_MAKE,;t t
-+s,@LIBVER_CURRENT@,$LIBVER_CURRENT,;t t
-+s,@LIBVER_REVISION@,$LIBVER_REVISION,;t t
-+s,@LIBVER_AGE@,$LIBVER_AGE,;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,@LEX@,$LEX,;t t
-+s,@LEXLIB@,$LEXLIB,;t t
-+s,@LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t
-+s,@YACC@,$YACC,;t t
-+s,@LN_S@,$LN_S,;t t
-+s,@ECHO@,$ECHO,;t t
-+s,@RANLIB@,$RANLIB,;t t
-+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
-+s,@STRIP@,$STRIP,;t t
-+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
-+s,@CPP@,$CPP,;t t
-+s,@EGREP@,$EGREP,;t t
-+s,@LIBTOOL@,$LIBTOOL,;t t
-+s,@LIBTOOL_DEPS@,$LIBTOOL_DEPS,;t t
-+s,@PERL@,$PERL,;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
-+ fi
-+fi # test -n "$CONFIG_FILES"
-+
-+_ACEOF
-+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
-- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-- *) ac_file_in="${ac_file}.in" ;;
-- esac
--
-- # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
--
-- # Remove last slash and all that follows it. Not all systems have dirname.
-- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-- # The file is in a subdirectory.
-- test ! -d "$ac_dir" && mkdir "$ac_dir"
-- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-- # A "../" for each directory in $ac_dir_suffix.
-- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-- else
-- ac_dir_suffix= ac_dots=
-- fi
--
-- case "$ac_given_srcdir" in
-- .) srcdir=.
-- if test -z "$ac_dots"; then top_srcdir=.
-- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-+ 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 ;;
-+ esac
-+
-+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
-+ 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; }; }; }
-+
-+ 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.
-- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-- top_srcdir="$ac_dots$ac_given_srcdir" ;;
-+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
-+esac
-+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-+# absolute.
-+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-+
-+
-+ case $INSTALL in
-+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
- esac
-
-- case "$ac_given_INSTALL" in
-- [/$]*) INSTALL="$ac_given_INSTALL" ;;
-- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
-- esac
--
-- echo creating "$ac_file"
-- rm -f "$ac_file"
-- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-- case "$ac_file" in
-- *Makefile*) ac_comsub="1i\\
--# $configure_input" ;;
-- *) ac_comsub= ;;
-- esac
--
-- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-- sed -e "$ac_comsub
--s%@configure_input@%$configure_input%g
--s%@srcdir@%$srcdir%g
--s%@top_srcdir@%$top_srcdir%g
--s%@INSTALL@%$INSTALL%g
--" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
--fi; done
--rm -f conftest.s*
-+ 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; }
-+_ACEOF
-+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='\3'
--ac_dD='%g'
--# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
--ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
--ac_uB='\([ ]\)%\1#\2define\3'
-+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='\4%g'
--# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
--ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
--ac_eB='$%\1#\2define\3'
--ac_eC=' '
--ac_eD='%g'
-+ac_uD=',;t'
-
--if test "${CONFIG_HEADERS+set}" != set; then
--EOF
--cat >> $CONFIG_STATUS <<EOF
-- CONFIG_HEADERS="config.h"
--EOF
--cat >> $CONFIG_STATUS <<\EOF
--fi
--for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
-+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-- case "$ac_file" in
-- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-- *) ac_file_in="${ac_file}.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 ;;
- esac
-
-- echo creating $ac_file
--
-- rm -f conftest.frag conftest.in conftest.out
-- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-- cat $ac_file_inputs > conftest.in
--
--EOF
-+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
-+echo "$as_me: creating $ac_file" >&6;}
-
--# Transform confdefs.h into a sed script conftest.vals that substitutes
--# the proper values into config.h.in to produce config.h. 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.vals
--cat > conftest.hdr <<\EOF
--s/[\\&%]/\\&/g
--s%[\\$`]%\\&%g
--s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
--s%ac_d%ac_u%gp
--s%ac_u%ac_e%gp
--EOF
--sed -n -f conftest.hdr confdefs.h > conftest.vals
--rm -f conftest.hdr
-+ # 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; }
-+ # 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
-
- # This sed command replaces #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.vals <<\EOF
--s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
--EOF
--
--# Break up conftest.vals because some shells have a limit on
--# the size of here documents, and old seds have small limits too.
--
-+cat >>conftest.undefs <<\_ACEOF
-+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
-+_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
-+ 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
-+ 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 :
-+while grep . conftest.undefs >/dev/null
- do
-- ac_lines=`grep -c . conftest.vals`
-- # grep -c gives empty output for an empty file on some AIX systems.
-- if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
-- # Write a limited-size here document to conftest.frag.
-- echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
-- sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
-+ # 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 conftest.frag conftest.in > conftest.out
-- rm -f conftest.in
-- mv conftest.out conftest.in
--' >> $CONFIG_STATUS
-- sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
-- rm -f conftest.vals
-- mv conftest.tail conftest.vals
--done
--rm -f conftest.vals
--
--cat >> $CONFIG_STATUS <<\EOF
-- rm -f conftest.frag conftest.h
-- echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
-- cat conftest.in >> conftest.h
-- rm -f conftest.in
-- if cmp -s $ac_file conftest.h 2>/dev/null; then
-- echo "$ac_file is unchanged"
-- rm -f conftest.h
-- else
-- # Remove last slash and all that follows it. Not all systems have dirname.
-- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-- # The file is in a subdirectory.
-- test ! -d "$ac_dir" && mkdir "$ac_dir"
-+ 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
-+
-+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 "$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
- fi
-- rm -f $ac_file
-- mv conftest.h $ac_file
-+ else
-+ cat $tmp/config.h
-+ rm -f $tmp/config.h
- fi
--fi; done
-+done
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-
--EOF
--cat >> $CONFIG_STATUS <<EOF
-+#
-+# 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'`
-+ 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
-+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-+# absolute.
-+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-
-
--EOF
--cat >> $CONFIG_STATUS <<\EOF
--test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
-+ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
-+echo "$as_me: executing $ac_dest commands" >&6;}
-+ case $ac_dest in
-+ default-1 ) test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h ;;
-+ esac
-+done
-+_ACEOF
-
--exit 0
--EOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+{ (exit 0); exit 0; }
-+_ACEOF
- chmod +x $CONFIG_STATUS
--rm -fr confdefs* $ac_clean_files
--test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-+ac_clean_files=$ac_clean_files_save
-+
-+
-+# configure is writing to config.log, and then calls config.status.
-+# config.status does its own redirection, appending to config.log.
-+# Unfortunately, on DOS this fails, as config.log is still kept open
-+# by configure, so config.status won't be able to write to it; its
-+# output is simply discarded. So we exec the FD to /dev/null,
-+# effectively closing config.log, so it can be properly (re)opened and
-+# appended to by config.status. When coming back to configure, we
-+# need to make the FD available again.
-+if test "$no_create" != yes; then
-+ ac_cs_success=:
-+ ac_config_status_args=
-+ test "$silent" = yes &&
-+ ac_config_status_args="$ac_config_status_args --quiet"
-+ exec 5>/dev/null
-+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-+ exec 5>>config.log
-+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-+ # would make configure fail if this is the last instruction.
-+ $ac_cs_success || { (exit 1); exit 1; }
-+fi
-
-
---- linux-atm-2.4.1.orig/ltmain.sh
-+++ linux-atm-2.4.1/ltmain.sh
-@@ -49,14 +49,14 @@
- fi
-
- # The name of this program.
--progname=`$echo "$0" | sed 's%^.*/%%'`
-+progname=`$echo "$0" | ${SED} 's%^.*/%%'`
- modename="$progname"
-
- # Constants.
- PROGRAM=ltmain.sh
- PACKAGE=libtool
--VERSION=1.4
--TIMESTAMP=" (1.920 2001/04/24 23:26:18)"
-+VERSION=1.4.3
-+TIMESTAMP=" (1.922.2.111 2002/10/23 02:54:36)"
-
- default_mode=
- help="Try \`$progname --help' for more information."
-@@ -67,10 +67,19 @@
-
- # Sed substitution that helps us do robust quoting. It backslashifies
- # metacharacters that are still active within double-quoted strings.
--Xsed='sed -e 1s/^X//'
-+Xsed="${SED}"' -e 1s/^X//'
- sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
--SP2NL='tr \040 \012'
--NL2SP='tr \015\012 \040\040'
-+# test EBCDIC or ASCII
-+case `echo A|od -x` in
-+ *[Cc]1*) # EBCDIC based system
-+ SP2NL="tr '\100' '\n'"
-+ NL2SP="tr '\r\n' '\100\100'"
-+ ;;
-+ *) # Assume ASCII based system
-+ SP2NL="tr '\040' '\012'"
-+ NL2SP="tr '\015\012' '\040\040'"
-+ ;;
-+esac
-
- # NLS nuisances.
- # Only set LANG and LC_ALL to C if already set.
-@@ -84,6 +93,9 @@
- save_LANG="$LANG"; LANG=C; export LANG
- fi
-
-+# Make sure IFS has a sensible default
-+: ${IFS=" "}
-+
- if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
- echo "$modename: not configured to build any kind of library" 1>&2
- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
-@@ -141,7 +153,7 @@
- ;;
-
- --config)
-- sed -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
-+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
- exit 0
- ;;
-
-@@ -174,6 +186,8 @@
- --mode) prevopt="--mode" prev=mode ;;
- --mode=*) mode="$optarg" ;;
-
-+ --preserve-dup-deps) duplicate_deps="yes" ;;
-+
- --quiet | --silent)
- show=:
- ;;
-@@ -202,12 +216,17 @@
- exit 1
- fi
-
-+# If this variable is set in any of the actions, the command in it
-+# will be execed at the end. This prevents here-documents from being
-+# left over by shells.
-+exec_cmd=
-+
- if test -z "$show_help"; then
-
- # Infer the operation mode.
- if test -z "$mode"; then
- case $nonopt in
-- *cc | *++ | gcc* | *-gcc*)
-+ *cc | *++ | gcc* | *-gcc* | g++* | xlc*)
- mode=link
- for arg
- do
-@@ -329,7 +348,7 @@
- -Wc,*)
- args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
- lastarg=
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
-+ save_ifs="$IFS"; IFS=','
- for arg in $args; do
- IFS="$save_ifs"
-
-@@ -615,6 +634,10 @@
- # Now arrange that obj and lo_libobj become the same file
- $show "(cd $xdir && $LN_S $baseobj $libobj)"
- if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
-+ # Unlock the critical section if it was locked
-+ if test "$need_locks" != no; then
-+ $run $rm "$lockfile"
-+ fi
- exit 0
- else
- error=$?
-@@ -745,6 +768,7 @@
- linker_flags=
- dllsearchpath=
- lib_search_path=`pwd`
-+ inst_prefix_dir=
-
- avoid_version=no
- dlfiles=
-@@ -875,6 +899,11 @@
- prev=
- continue
- ;;
-+ inst_prefix)
-+ inst_prefix_dir="$arg"
-+ prev=
-+ continue
-+ ;;
- release)
- release="-$arg"
- prev=
-@@ -976,11 +1005,16 @@
- continue
- ;;
-
-+ -inst-prefix-dir)
-+ prev=inst_prefix
-+ continue
-+ ;;
-+
- # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
- # so, if we see these flags be careful not to treat them like -L
- -L[A-Z][A-Z]*:*)
- case $with_gcc/$host in
-- no/*-*-irix*)
-+ no/*-*-irix* | no/*-*-nonstopux*)
- compile_command="$compile_command $arg"
- finalize_command="$finalize_command $arg"
- ;;
-@@ -1031,6 +1065,17 @@
- # These systems don't actually have a C library (as such)
- test "X$arg" = "X-lc" && continue
- ;;
-+ *-*-openbsd* | *-*-freebsd*)
-+ # Do not include libc due to us having libc/libc_r.
-+ test "X$arg" = "X-lc" && continue
-+ ;;
-+ esac
-+ elif test "X$arg" = "X-lc_r"; then
-+ case $host in
-+ *-*-openbsd* | *-*-freebsd*)
-+ # Do not include libc_r directly, use -pthread flag.
-+ continue
-+ ;;
- esac
- fi
- deplibs="$deplibs $arg"
-@@ -1122,7 +1167,7 @@
- -Wc,*)
- args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
- arg=
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
-+ save_ifs="$IFS"; IFS=','
- for flag in $args; do
- IFS="$save_ifs"
- case $flag in
-@@ -1140,7 +1185,7 @@
- -Wl,*)
- args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
- arg=
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
-+ save_ifs="$IFS"; IFS=','
- for flag in $args; do
- IFS="$save_ifs"
- case $flag in
-@@ -1307,9 +1352,11 @@
- # Find all interdependent deplibs by searching for libraries
- # that are linked more than once (e.g. -la -lb -la)
- for deplib in $deplibs; do
-- case "$libs " in
-- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-- esac
-+ if test "X$duplicate_deps" = "Xyes" ; then
-+ case "$libs " in
-+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ esac
-+ fi
- libs="$libs $deplib"
- done
- deplibs=
-@@ -1343,7 +1390,7 @@
- ;;
- esac
- for pass in $passes; do
-- if test "$linkmode" = prog; then
-+ if test $linkmode = prog; then
- # Determine which files to process
- case $pass in
- dlopen)
-@@ -1360,11 +1407,11 @@
- found=no
- case $deplib in
- -l*)
-- if test "$linkmode" = oldlib && test "$linkmode" = obj; then
-+ if test $linkmode = oldlib && test $linkmode = obj; then
- $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
- continue
- fi
-- if test "$pass" = conv; then
-+ if test $pass = conv; then
- deplibs="$deplib $deplibs"
- continue
- fi
-@@ -1384,7 +1431,7 @@
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- deplibs="$deplib $deplibs"
-- test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-+ test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
- fi
- continue
- fi
-@@ -1393,16 +1440,16 @@
- case $linkmode in
- lib)
- deplibs="$deplib $deplibs"
-- test "$pass" = conv && continue
-+ test $pass = conv && continue
- newdependency_libs="$deplib $newdependency_libs"
- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
- ;;
- prog)
-- if test "$pass" = conv; then
-+ if test $pass = conv; then
- deplibs="$deplib $deplibs"
- continue
- fi
-- if test "$pass" = scan; then
-+ if test $pass = scan; then
- deplibs="$deplib $deplibs"
- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
- else
-@@ -1417,7 +1464,7 @@
- continue
- ;; # -L
- -R*)
-- if test "$pass" = link; then
-+ if test $pass = link; then
- dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
- # Make sure the xrpath contains only unique directories.
- case "$xrpath " in
-@@ -1430,7 +1477,7 @@
- ;;
- *.la) lib="$deplib" ;;
- *.$libext)
-- if test "$pass" = conv; then
-+ if test $pass = conv; then
- deplibs="$deplib $deplibs"
- continue
- fi
-@@ -1438,10 +1485,12 @@
- lib)
- if test "$deplibs_check_method" != pass_all; then
- echo
-- echo "*** Warning: This library needs some functionality provided by $deplib."
-+ echo "*** Warning: Trying to link with static lib archive $deplib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
-- echo "*** shared version of the library, which you do not appear to have."
-+ echo "*** shared version of the library, which you do not appear to have"
-+ echo "*** because the file extensions .$libext of this argument makes me believe"
-+ echo "*** that it is just a static archive that I should not used here."
- else
- echo
- echo "*** Warning: Linking the shared library $output against the"
-@@ -1451,7 +1500,7 @@
- continue
- ;;
- prog)
-- if test "$pass" != link; then
-+ if test $pass != link; then
- deplibs="$deplib $deplibs"
- else
- compile_deplibs="$deplib $compile_deplibs"
-@@ -1462,7 +1511,7 @@
- esac # linkmode
- ;; # *.$libext
- *.lo | *.$objext)
-- if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
-+ if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
- # If there is no dlopen support or we're linking statically,
- # we need to preload.
- newdlprefiles="$newdlprefiles $deplib"
-@@ -1485,7 +1534,7 @@
- fi
-
- # Check to see that this really is a libtool archive.
-- if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
-+ if (${SED} -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
- else
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
- exit 1
-@@ -1512,13 +1561,13 @@
-
- if test "$linkmode,$pass" = "lib,link" ||
- test "$linkmode,$pass" = "prog,scan" ||
-- { test "$linkmode" = oldlib && test "$linkmode" = obj; }; then
-+ { test $linkmode = oldlib && test $linkmode = obj; }; then
- # Add dl[pre]opened files of deplib
- test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
- test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
- fi
-
-- if test "$pass" = conv; then
-+ if test $pass = conv; then
- # Only check for convenience libraries
- deplibs="$lib $deplibs"
- if test -z "$libdir"; then
-@@ -1532,12 +1581,14 @@
- tmp_libs=
- for deplib in $dependency_libs; do
- deplibs="$deplib $deplibs"
-- case "$tmp_libs " in
-- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-- esac
-+ if test "X$duplicate_deps" = "Xyes" ; then
-+ case "$tmp_libs " in
-+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ esac
-+ fi
- tmp_libs="$tmp_libs $deplib"
- done
-- elif test "$linkmode" != prog && test "$linkmode" != lib; then
-+ elif test $linkmode != prog && test $linkmode != lib; then
- $echo "$modename: \`$lib' is not a convenience library" 1>&2
- exit 1
- fi
-@@ -1555,7 +1606,7 @@
- fi
-
- # This library was specified with -dlopen.
-- if test "$pass" = dlopen; then
-+ if test $pass = dlopen; then
- if test -z "$libdir"; then
- $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
- exit 1
-@@ -1604,7 +1655,7 @@
- name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
-
- # This library was specified with -dlpreopen.
-- if test "$pass" = dlpreopen; then
-+ if test $pass = dlpreopen; then
- if test -z "$libdir"; then
- $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
- exit 1
-@@ -1623,7 +1674,7 @@
-
- if test -z "$libdir"; then
- # Link the convenience library
-- if test "$linkmode" = lib; then
-+ if test $linkmode = lib; then
- deplibs="$dir/$old_library $deplibs"
- elif test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$dir/$old_library $compile_deplibs"
-@@ -1634,7 +1685,7 @@
- continue
- fi
-
-- if test "$linkmode" = prog && test "$pass" != link; then
-+ if test $linkmode = prog && test $pass != link; then
- newlib_search_path="$newlib_search_path $ladir"
- deplibs="$lib $deplibs"
-
-@@ -1657,9 +1708,11 @@
- # or/and link against static libraries
- newdependency_libs="$deplib $newdependency_libs"
- fi
-- case "$tmp_libs " in
-- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-- esac
-+ if test "X$duplicate_deps" = "Xyes" ; then
-+ case "$tmp_libs " in
-+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ esac
-+ fi
- tmp_libs="$tmp_libs $deplib"
- done # for deplib
- continue
-@@ -1671,7 +1724,7 @@
- # Link against this shared library
-
- if test "$linkmode,$pass" = "prog,link" ||
-- { test "$linkmode" = lib && test "$hardcode_into_libs" = yes; }; then
-+ { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
- # Hardcode the library path.
- # Skip directories that are in the system default run-time
- # search path.
-@@ -1693,7 +1746,7 @@
- esac
- ;;
- esac
-- if test "$linkmode" = prog; then
-+ if test $linkmode = prog; then
- # We need to hardcode the library path
- if test -n "$shlibpath_var"; then
- # Make sure the rpath contains only unique directories.
-@@ -1743,14 +1796,14 @@
-
- # Make a new name for the extract_expsyms_cmds to use
- soroot="$soname"
-- soname=`echo $soroot | sed -e 's/^.*\///'`
-- newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
-+ soname=`echo $soroot | ${SED} -e 's/^.*\///'`
-+ newlib="libimp-`echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
-
- # If the library has no export list, then create one now
- if test -f "$output_objdir/$soname-def"; then :
- else
- $show "extracting exported symbol list from \`$soname'"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- eval cmds=\"$extract_expsyms_cmds\"
- for cmd in $cmds; do
- IFS="$save_ifs"
-@@ -1763,7 +1816,7 @@
- # Create $newlib
- if test -f "$output_objdir/$newlib"; then :; else
- $show "generating import library for \`$soname'"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- eval cmds=\"$old_archive_from_expsyms_cmds\"
- for cmd in $cmds; do
- IFS="$save_ifs"
-@@ -1777,7 +1830,7 @@
- linklib=$newlib
- fi # test -n $old_archive_from_expsyms_cmds
-
-- if test "$linkmode" = prog || test "$mode" != relink; then
-+ if test $linkmode = prog || test "$mode" != relink; then
- add_shlibpath=
- add_dir=
- add=
-@@ -1804,6 +1857,14 @@
- add="$dir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$dir"
-+ # Try looking first in the location we're being installed to.
-+ if test -n "$inst_prefix_dir"; then
-+ case "$libdir" in
-+ [\/]*)
-+ add_dir="-L$inst_prefix_dir$libdir $add_dir"
-+ ;;
-+ esac
-+ fi
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- add_shlibpath="$dir"
-@@ -1826,7 +1887,7 @@
- *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
- esac
- fi
-- if test "$linkmode" = prog; then
-+ if test $linkmode = prog; then
- test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
- test -n "$add" && compile_deplibs="$add $compile_deplibs"
- else
-@@ -1843,7 +1904,7 @@
- fi
- fi
-
-- if test "$linkmode" = prog || test "$mode" = relink; then
-+ if test $linkmode = prog || test "$mode" = relink; then
- add_shlibpath=
- add_dir=
- add=
-@@ -1862,10 +1923,18 @@
- else
- # We cannot seem to hardcode it, guess we'll fake it.
- add_dir="-L$libdir"
-+ # Try looking first in the location we're being installed to.
-+ if test -n "$inst_prefix_dir"; then
-+ case "$libdir" in
-+ [\/]*)
-+ add_dir="-L$inst_prefix_dir$libdir $add_dir"
-+ ;;
-+ esac
-+ fi
- add="-l$name"
- fi
-
-- if test "$linkmode" = prog; then
-+ if test $linkmode = prog; then
- test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
- test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
- else
-@@ -1873,7 +1942,7 @@
- test -n "$add" && deplibs="$add $deplibs"
- fi
- fi
-- elif test "$linkmode" = prog; then
-+ elif test $linkmode = prog; then
- if test "$alldeplibs" = yes &&
- { test "$deplibs_check_method" = pass_all ||
- { test "$build_libtool_libs" = yes &&
-@@ -1903,25 +1972,26 @@
- # Just print a warning and add the library to dependency_libs so
- # that the program can be linked against the static library.
- echo
-- echo "*** Warning: This library needs some functionality provided by $lib."
-+ echo "*** Warning: This system can not link to static lib archive $lib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
- if test "$module" = yes; then
-- echo "*** Therefore, libtool will create a static module, that should work "
-- echo "*** as long as the dlopening application is linked with the -dlopen flag."
-+ echo "*** But as you try to build a module library, libtool will still create "
-+ echo "*** a static module, that should work as long as the dlopening application"
-+ echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
- if test -z "$global_symbol_pipe"; then
-- echo
-- echo "*** However, this would only work if libtool was able to extract symbol"
-- echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-- echo "*** not find such a program. So, this module is probably useless."
-- echo "*** \`nm' from GNU binutils and a full rebuild may help."
-+ echo
-+ echo "*** However, this would only work if libtool was able to extract symbol"
-+ echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-+ echo "*** not find such a program. So, this module is probably useless."
-+ echo "*** \`nm' from GNU binutils and a full rebuild may help."
- fi
- if test "$build_old_libs" = no; then
-- build_libtool_libs=module
-- build_old_libs=yes
-+ build_libtool_libs=module
-+ build_old_libs=yes
- else
-- build_libtool_libs=no
-+ build_libtool_libs=no
- fi
- fi
- else
-@@ -1932,9 +2002,9 @@
- fi
- fi # link shared/static library?
-
-- if test "$linkmode" = lib; then
-+ if test $linkmode = lib; then
- if test -n "$dependency_libs" &&
-- { test "$hardcode_into_libs" != yes || test $build_old_libs = yes ||
-+ { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
- test $link_static = yes; }; then
- # Extract -R from dependency_libs
- temp_deplibs=
-@@ -1958,13 +2028,15 @@
- tmp_libs=
- for deplib in $dependency_libs; do
- newdependency_libs="$deplib $newdependency_libs"
-- case "$tmp_libs " in
-- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-- esac
-+ if test "X$duplicate_deps" = "Xyes" ; then
-+ case "$tmp_libs " in
-+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+ esac
-+ fi
- tmp_libs="$tmp_libs $deplib"
- done
-
-- if test "$link_all_deplibs" != no; then
-+ if test $link_all_deplibs != no; then
- # Add the search paths of all dependency libraries
- for deplib in $dependency_libs; do
- case $deplib in
-@@ -1986,7 +2058,7 @@
- if grep "^installed=no" $deplib > /dev/null; then
- path="-L$absdir/$objdir"
- else
-- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
- if test -z "$libdir"; then
- $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
- exit 1
-@@ -2007,15 +2079,15 @@
- fi # link_all_deplibs != no
- fi # linkmode = lib
- done # for deplib in $libs
-- if test "$pass" = dlpreopen; then
-+ if test $pass = dlpreopen; then
- # Link the dlpreopened libraries before other libraries
- for deplib in $save_deplibs; do
- deplibs="$deplib $deplibs"
- done
- fi
-- if test "$pass" != dlopen; then
-- test "$pass" != scan && dependency_libs="$newdependency_libs"
-- if test "$pass" != conv; then
-+ if test $pass != dlopen; then
-+ test $pass != scan && dependency_libs="$newdependency_libs"
-+ if test $pass != conv; then
- # Make sure lib_search_path contains only unique directories.
- lib_search_path=
- for dir in $newlib_search_path; do
-@@ -2073,7 +2145,7 @@
- deplibs=
- fi
- done # for pass
-- if test "$linkmode" = prog; then
-+ if test $linkmode = prog; then
- dlfiles="$newdlfiles"
- dlprefiles="$newdlprefiles"
- fi
-@@ -2175,7 +2247,7 @@
- else
-
- # Parse the version information argument.
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
-+ save_ifs="$IFS"; IFS=':'
- set dummy $vinfo 0 0 0
- IFS="$save_ifs"
-
-@@ -2250,16 +2322,21 @@
- versuffix=".$current";
- ;;
-
-- irix)
-+ irix | nonstopux)
- major=`expr $current - $age + 1`
-- verstring="sgi$major.$revision"
-+
-+ case $version_type in
-+ nonstopux) verstring_prefix=nonstopux ;;
-+ *) verstring_prefix=sgi ;;
-+ esac
-+ verstring="$verstring_prefix$major.$revision"
-
- # Add in all the interfaces that we are compatible with.
- loop=$revision
- while test $loop != 0; do
- iface=`expr $revision - $loop`
- loop=`expr $loop - 1`
-- verstring="sgi$major.$iface:$verstring"
-+ verstring="$verstring_prefix$major.$iface:$verstring"
- done
-
- # Before this point, $major must not contain `.'.
-@@ -2273,7 +2350,7 @@
- ;;
-
- osf)
-- major=`expr $current - $age`
-+ major=.`expr $current - $age`
- versuffix=".$current.$age.$revision"
- verstring="$current.$age.$revision"
-
-@@ -2312,6 +2389,16 @@
- if test -z "$vinfo" && test -n "$release"; then
- major=
- verstring="0.0"
-+ case $version_type in
-+ darwin)
-+ # we can't check for "0.0" in archive_cmds due to quoting
-+ # problems, so we reset it completely
-+ verstring=""
-+ ;;
-+ *)
-+ verstring="0.0"
-+ ;;
-+ esac
- if test "$need_version" = no; then
- versuffix=
- else
-@@ -2355,9 +2442,9 @@
-
- # Eliminate all temporary directories.
- for path in $notinst_path; do
-- lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'`
-- deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
-- dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'`
-+ lib_search_path=`echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
-+ deplibs=`echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
-+ dependency_libs=`echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
- done
-
- if test -n "$xrpath"; then
-@@ -2408,9 +2495,12 @@
- *-*-netbsd*)
- # Don't link with libc until the a.out ld.so is fixed.
- ;;
-+ *-*-openbsd* | *-*-freebsd*)
-+ # Do not include libc due to us having libc/libc_r.
-+ ;;
- *)
- # Add libc to deplibs on all other systems if necessary.
-- if test "$build_libtool_need_lc" = "yes"; then
-+ if test $build_libtool_need_lc = "yes"; then
- deplibs="$deplibs -lc"
- fi
- ;;
-@@ -2466,18 +2556,20 @@
- else
- droppeddeps=yes
- echo
-- echo "*** Warning: This library needs some functionality provided by $i."
-+ echo "*** Warning: dynamic linker does not accept needed library $i."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
-- echo "*** shared version of the library, which you do not appear to have."
-+ echo "*** shared version of the library, which I believe you do not have"
-+ echo "*** because a test_compile did reveal that the linker did not use it for"
-+ echo "*** its dynamic dependency list that programs get resolved with at runtime."
- fi
- else
- newdeplibs="$newdeplibs $i"
- fi
- done
- else
-- # Error occured in the first compile. Let's try to salvage the situation:
-- # Compile a seperate program for each library.
-+ # Error occured in the first compile. Let's try to salvage
-+ # the situation: Compile a separate program for each library.
- for i in $deplibs; do
- name="`expr $i : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
-@@ -2496,10 +2588,12 @@
- else
- droppeddeps=yes
- echo
-- echo "*** Warning: This library needs some functionality provided by $i."
-+ echo "*** Warning: dynamic linker does not accept needed library $i."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
-- echo "*** shared version of the library, which you do not appear to have."
-+ echo "*** shared version of the library, which you do not appear to have"
-+ echo "*** because a test_compile did reveal that the linker did not use this one"
-+ echo "*** as a dynamic dependency that programs can get resolved with at runtime."
- fi
- else
- droppeddeps=yes
-@@ -2538,14 +2632,14 @@
- # but so what?
- potlib="$potent_lib"
- while test -h "$potlib" 2>/dev/null; do
-- potliblink=`ls -ld $potlib | sed 's/.* -> //'`
-+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
- case $potliblink in
- [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
- *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
- esac
- done
- if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
-- | sed 10q \
-+ | ${SED} 10q \
- | egrep "$file_magic_regex" > /dev/null; then
- newdeplibs="$newdeplibs $a_deplib"
- a_deplib=""
-@@ -2556,10 +2650,17 @@
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- echo
-- echo "*** Warning: This library needs some functionality provided by $a_deplib."
-+ echo "*** Warning: linker path does not have real file for library $a_deplib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
-- echo "*** shared version of the library, which you do not appear to have."
-+ echo "*** shared version of the library, which you do not appear to have"
-+ echo "*** because I did check the linker path looking for a file starting"
-+ if test -z "$potlib" ; then
-+ echo "*** with $libname but no candidates were found. (...for file magic test)"
-+ else
-+ echo "*** with $libname and none of the candidates passed a file format test"
-+ echo "*** using a file magic. Last file checked: $potlib"
-+ fi
- fi
- else
- # Add a -L argument.
-@@ -2578,8 +2679,9 @@
- for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
- potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
- for potent_lib in $potential_libs; do
-+ potlib="$potent_lib" # see symlink-check below in file_magic test
- if eval echo \"$potent_lib\" 2>/dev/null \
-- | sed 10q \
-+ | ${SED} 10q \
- | egrep "$match_pattern_regex" > /dev/null; then
- newdeplibs="$newdeplibs $a_deplib"
- a_deplib=""
-@@ -2590,10 +2692,17 @@
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- echo
-- echo "*** Warning: This library needs some functionality provided by $a_deplib."
-+ echo "*** Warning: linker path does not have real file for library $a_deplib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
-- echo "*** shared version of the library, which you do not appear to have."
-+ echo "*** shared version of the library, which you do not appear to have"
-+ echo "*** because I did check the linker path looking for a file starting"
-+ if test -z "$potlib" ; then
-+ echo "*** with $libname but no candidates were found. (...for regex pattern test)"
-+ else
-+ echo "*** with $libname and none of the candidates passed a file format test"
-+ echo "*** using a regex pattern. Last file checked: $potlib"
-+ fi
- fi
- else
- # Add a -L argument.
-@@ -2683,7 +2792,7 @@
-
- # Test again, we may have decided not to build it any more
- if test "$build_libtool_libs" = yes; then
-- if test "$hardcode_into_libs" = yes; then
-+ if test $hardcode_into_libs = yes; then
- # Hardcode the library paths
- hardcode_libdirs=
- dep_rpath=
-@@ -2784,7 +2893,7 @@
- export_symbols="$output_objdir/$libname.exp"
- $run $rm $export_symbols
- eval cmds=\"$export_symbols_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -2858,9 +2967,20 @@
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
- eval cmds=\"$archive_expsym_cmds\"
- else
-+ save_deplibs="$deplibs"
-+ for conv in $convenience; do
-+ tmp_deplibs=
-+ for test_deplib in $deplibs; do
-+ if test "$test_deplib" != "$conv"; then
-+ tmp_deplibs="$tmp_deplibs $test_deplib"
-+ fi
-+ done
-+ deplibs="$tmp_deplibs"
-+ done
- eval cmds=\"$archive_cmds\"
-+ deplibs="$save_deplibs"
- fi
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -2988,7 +3108,7 @@
-
- output="$obj"
- eval cmds=\"$reload_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -3024,7 +3144,7 @@
- reload_objs="$libobjs $reload_conv_objs"
- output="$libobj"
- eval cmds=\"$reload_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -3057,7 +3177,7 @@
-
- prog)
- case $host in
-- *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;;
-+ *cygwin*) output=`echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
- esac
- if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
-@@ -3079,6 +3199,13 @@
- # On Rhapsody replace the C library is the System framework
- compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
- finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
-+ case $host in
-+ *darwin*)
-+ # Don't allow lazy linking, it breaks C++ global constructors
-+ compile_command="$compile_command ${wl}-bind_at_load"
-+ finalize_command="$finalize_command ${wl}-bind_at_load"
-+ ;;
-+ esac
- ;;
- esac
-
-@@ -3245,9 +3372,9 @@
- if test -z "$export_symbols"; then
- export_symbols="$output_objdir/$output.exp"
- $run $rm $export_symbols
-- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-+ $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
- else
-- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
-+ $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
- $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
- $run eval 'mv "$nlist"T "$nlist"'
- fi
-@@ -3255,7 +3382,7 @@
-
- for arg in $dlprefiles; do
- $show "extracting global C symbols from \`$arg'"
-- name=`echo "$arg" | sed -e 's%^.*/%%'`
-+ name=`echo "$arg" | ${SED} -e 's%^.*/%%'`
- $run eval 'echo ": $name " >> "$nlist"'
- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
- done
-@@ -3270,7 +3397,13 @@
- fi
-
- # Try sorting and uniquifying the output.
-- if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
-+ if grep -v "^: " < "$nlist" |
-+ if sort -k 3 </dev/null >/dev/null 2>&1; then
-+ sort -k 3
-+ else
-+ sort +2
-+ fi |
-+ uniq > "$nlist"S; then
- :
- else
- grep -v "^: " < "$nlist" > "$nlist"S
-@@ -3287,27 +3420,25 @@
- #undef lt_preloaded_symbols
-
- #if defined (__STDC__) && __STDC__
--# define lt_ptr_t void *
-+# define lt_ptr void *
- #else
--# define lt_ptr_t char *
-+# define lt_ptr char *
- # define const
- #endif
-
- /* The mapping between symbol names and symbols. */
- const struct {
- const char *name;
-- lt_ptr_t address;
-+ lt_ptr address;
- }
- lt_preloaded_symbols[] =
- {\
- "
-
-- sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
-- -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
-- < "$nlist" >> "$output_objdir/$dlsyms"
-+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
-
- $echo >> "$output_objdir/$dlsyms" "\
-- {0, (lt_ptr_t) 0}
-+ {0, (lt_ptr) 0}
- };
-
- /* This works around a problem in FreeBSD linker */
-@@ -3494,7 +3625,7 @@
- relink_command="$var=\"$var_value\"; export $var; $relink_command"
- fi
- done
-- relink_command="cd `pwd`; $relink_command"
-+ relink_command="(cd `pwd`; $relink_command)"
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
- fi
-
-@@ -3514,7 +3645,7 @@
- # win32 will think the script is a binary if it has
- # a .exe suffix, so we strip it off here.
- case $output in
-- *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
-+ *.exe) output=`echo $output|${SED} 's,.exe$,,'` ;;
- esac
- # test for cygwin because mv fails w/o .exe extensions
- case $host in
-@@ -3538,7 +3669,7 @@
-
- # Sed substitution that helps us do robust quoting. It backslashifies
- # metacharacters that are still active within double-quoted strings.
--Xsed='sed -e 1s/^X//'
-+Xsed="${SED}"' -e 1s/^X//'
- sed_quote_subst='$sed_quote_subst'
-
- # The HP-UX ksh and POSIX shell print the target directory to stdout
-@@ -3576,7 +3707,7 @@
- test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
- # Follow symbolic links until we get to the real thisdir.
-- file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
-+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
- while test -n \"\$file\"; do
- destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
-
-@@ -3589,7 +3720,7 @@
- fi
-
- file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
-- file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
-+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
- done
-
- # Try to get the absolute directory name.
-@@ -3603,7 +3734,7 @@
- progdir=\"\$thisdir/$objdir\"
-
- if test ! -f \"\$progdir/\$program\" || \\
-- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
-+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
- test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
- file=\"\$\$-\$program\"
-@@ -3618,8 +3749,9 @@
-
- # relink executable if necessary
- if test -n \"\$relink_command\"; then
-- if (eval \$relink_command); then :
-+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
- else
-+ $echo \"\$relink_command_output\" >&2
- $rm \"\$progdir/\$file\"
- exit 1
- fi
-@@ -3648,7 +3780,7 @@
- $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
- # Some systems cannot cope with colon-terminated $shlibpath_var
-- # The second colon is a workaround for a bug in BeOS R4 sed
-+ # The second colon is a workaround for a bug in BeOS R4 ${SED}
- $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
-
- export $shlibpath_var
-@@ -3790,7 +3922,7 @@
-
- eval cmds=\"$old_archive_cmds\"
- fi
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -3823,7 +3955,7 @@
- fi
- done
- # Quote the link command for shipping.
-- relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args"
-+ relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)"
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-
- # Only create the output if not a dry run.
-@@ -3840,7 +3972,7 @@
- case $deplib in
- *.la)
- name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
-- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
- if test -z "$libdir"; then
- $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
- exit 1
-@@ -3854,7 +3986,7 @@
- newdlfiles=
- for lib in $dlfiles; do
- name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
-- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
- if test -z "$libdir"; then
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
- exit 1
-@@ -3865,7 +3997,7 @@
- newdlprefiles=
- for lib in $dlprefiles; do
- name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
-- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
- if test -z "$libdir"; then
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
- exit 1
-@@ -4089,7 +4221,7 @@
-
- *.la)
- # Check to see that this really is a libtool archive.
-- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
-+ if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
- else
- $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
- $echo "$help" 1>&2
-@@ -4124,12 +4256,30 @@
- dir="$dir$objdir"
-
- if test -n "$relink_command"; then
-+ # Determine the prefix the user has applied to our future dir.
-+ inst_prefix_dir=`$echo "$destdir" | sed "s%$libdir\$%%"`
-+
-+ # Don't allow the user to place us outside of our expected
-+ # location b/c this prevents finding dependent libraries that
-+ # are installed to the same prefix.
-+ if test "$inst_prefix_dir" = "$destdir"; then
-+ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
-+ exit 1
-+ fi
-+
-+ if test -n "$inst_prefix_dir"; then
-+ # Stick the inst_prefix_dir data into the link command.
-+ relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-+ else
-+ relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"`
-+ fi
-+
- $echo "$modename: warning: relinking \`$file'" 1>&2
- $show "$relink_command"
- if $run eval "$relink_command"; then :
- else
- $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
-- continue
-+ exit 1
- fi
- fi
-
-@@ -4165,7 +4315,7 @@
- # Do each command in the postinstall commands.
- lib="$destdir/$realname"
- eval cmds=\"$postinstall_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -4238,19 +4388,27 @@
- fi
-
- # Do a test to see if this is really a libtool program.
-- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-+ case $host in
-+ *cygwin*|*mingw*)
-+ wrapper=`echo $file | ${SED} -e 's,.exe$,,'`
-+ ;;
-+ *)
-+ wrapper=$file
-+ ;;
-+ esac
-+ if (${SED} -e '4q' $wrapper | egrep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
- notinst_deplibs=
- relink_command=
-
- # If there is no directory component, then add one.
- case $file in
-- */* | *\\*) . $file ;;
-- *) . ./$file ;;
-+ */* | *\\*) . $wrapper ;;
-+ *) . ./$wrapper ;;
- esac
-
- # Check the variables that should have been set.
- if test -z "$notinst_deplibs"; then
-- $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
-+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
- exit 1
- fi
-
-@@ -4275,8 +4433,8 @@
- relink_command=
- # If there is no directory component, then add one.
- case $file in
-- */* | *\\*) . $file ;;
-- *) . ./$file ;;
-+ */* | *\\*) . $wrapper ;;
-+ *) . ./$wrapper ;;
- esac
-
- outputname=
-@@ -4324,7 +4482,7 @@
- destfile=$destfile.exe
- ;;
- *:*.exe)
-- destfile=`echo $destfile | sed -e 's,.exe$,,'`
-+ destfile=`echo $destfile | ${SED} -e 's,.exe$,,'`
- ;;
- esac
- ;;
-@@ -4352,7 +4510,7 @@
-
- # Do each command in the postinstall commands.
- eval cmds=\"$old_postinstall_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -4368,11 +4526,10 @@
- if test -n "$current_libdirs"; then
- # Maybe just do a dry run.
- test -n "$run" && current_libdirs=" -n$current_libdirs"
-- exec $SHELL $0 --finish$current_libdirs
-- exit 1
-+ exec_cmd='$SHELL $0 --finish$current_libdirs'
-+ else
-+ exit 0
- fi
--
-- exit 0
- ;;
-
- # libtool finish mode
-@@ -4391,7 +4548,7 @@
- if test -n "$finish_cmds"; then
- # Do each command in the finish commands.
- eval cmds=\"$finish_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -4473,7 +4630,7 @@
- case $file in
- *.la)
- # Check to see that this really is a libtool archive.
-- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
-+ if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
- else
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
- $echo "$help" 1>&2
-@@ -4544,7 +4701,7 @@
- -*) ;;
- *)
- # Do a test to see if this is really a libtool program.
-- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-+ if (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- # If there is no directory component, then add one.
- case $file in
- */* | *\\*) . $file ;;
-@@ -4575,11 +4732,8 @@
- LANG="$save_LANG"; export LANG
- fi
-
-- # Now actually exec the command.
-- eval "exec \$cmd$args"
--
-- $echo "$modename: cannot exec \$cmd$args"
-- exit 1
-+ # Now prepare to actually exec the command.
-+ exec_cmd="\$cmd$args"
- else
- # Display what would be done.
- if test -n "$shlibpath_var"; then
-@@ -4641,14 +4795,14 @@
-
- # Don't error if the file doesn't exist and rm -f was used.
- if (test -L "$file") >/dev/null 2>&1 \
-- || (test -h "$file") >/dev/null 2>&1 \
-+ || (test -h "$file") >/dev/null 2>&1 \
- || test -f "$file"; then
-- :
-+ :
- elif test -d "$file"; then
-- exit_status=1
-+ exit_status=1
- continue
- elif test "$rmforce" = yes; then
-- continue
-+ continue
- fi
-
- rmfiles="$file"
-@@ -4656,7 +4810,7 @@
- case $name in
- *.la)
- # Possibly a libtool archive, so verify it.
-- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-+ if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- . $dir/$name
-
- # Delete the libtool libraries and symlinks.
-@@ -4670,7 +4824,7 @@
- if test -n "$library_names"; then
- # Do each command in the postuninstall commands.
- eval cmds=\"$postuninstall_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -4685,7 +4839,7 @@
- if test -n "$old_library"; then
- # Do each command in the old_postuninstall commands.
- eval cmds=\"$old_postuninstall_cmds\"
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
-+ save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
-@@ -4711,7 +4865,7 @@
- *)
- # Do a test to see if this is a libtool program.
- if test $mode = clean &&
-- (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-+ (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- relink_command=
- . $dir/$file
-
-@@ -4744,11 +4898,18 @@
- ;;
- esac
-
-- $echo "$modename: invalid operation mode \`$mode'" 1>&2
-- $echo "$generic_help" 1>&2
-- exit 1
-+ if test -z "$exec_cmd"; then
-+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
-+ $echo "$generic_help" 1>&2
-+ exit 1
-+ fi
- fi # test -z "$show_help"
-
-+if test -n "$exec_cmd"; then
-+ eval exec $exec_cmd
-+ exit 1
-+fi
-+
- # We need to display help for each of the modes.
- case $mode in
- "") $echo \
---- linux-atm-2.4.1.orig/m4/Makefile.in
-+++ linux-atm-2.4.1/m4/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -92,14 +92,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- all: all-redirect
- .SUFFIXES:
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps m4/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -112,6 +112,11 @@
- subdir = m4
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu m4/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
---- linux-atm-2.4.1.orig/src/Makefile.in
-+++ linux-atm-2.4.1/src/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -85,8 +85,7 @@
- VERSION = @VERSION@
- YACC = @YACC@
-
--SUBDIRS = include lib test debug qgen saal sigd maint arpd ilmid man led lane \
-- mpoad switch config extra
-+SUBDIRS = include lib
-
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
- CONFIG_HEADER = ../config.h
-@@ -96,14 +95,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- all: all-redirect
- .SUFFIXES:
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -186,7 +185,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -202,6 +201,11 @@
- subdir = src
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
---- linux-atm-2.4.1.orig/src/include/Makefile.in
-+++ linux-atm-2.4.1/src/include/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -97,14 +97,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- all: all-redirect
- .SUFFIXES:
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/include/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/include/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -142,7 +142,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -158,6 +158,11 @@
- subdir = src/include
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/include/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
---- linux-atm-2.4.1.orig/src/include/atmd.h
-+++ linux-atm-2.4.1/src/include/atmd.h
-@@ -24,6 +24,10 @@
- (i)->prev = (b)->prev; if ((b)->prev) (b)->prev->next = i; else r = i; \
- (b)->prev = i; } else { (i)->next = r; (i)->prev = NULL; \
- if (r) (r)->prev = i; r = i; } })
-+#define Q_INSERT_BEFORE_TYPED(r,t,i,b) ({ if (b) { (i)->next = b; \
-+ (i)->prev = (b)->prev; if ((b)->prev) (b)->prev->next = i; else r = i; \
-+ (b)->prev = i; } else { (i)->next = t r; (i)->prev = NULL; \
-+ if (t r) (t r)->prev = i; r = i; } })
- #define Q_REMOVE(r,i) ({ if ((i)->next) (i)->next->prev = (i)->prev; \
- if ((i)->prev) (i)->prev->next = (i)->next; else r = (i)->next; })
-
---- linux-atm-2.4.1.orig/src/lib/Makefile.in
-+++ linux-atm-2.4.1/src/lib/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -92,16 +92,10 @@
- # ATMLIBS_VERSION comes from configure.in in the toplevel directory
- LDFLAGS = -version-info @LIBVER_CURRENT@:@LIBVER_REVISION@:@LIBVER_AGE@
-
--libatm_la_SOURCES = text2atm.c atm2text.c atmequal.c sdu2cell.c text2qos.c \
-- qos2text.c qosequal.c sap2text.c text2sap.c sapequal.c \
-- misc.c atmres.h ans.c \
-- common.c diag.c kptr.c text2ip.c timer.c unix.c
-+libatm_la_SOURCES = text2atm.c atm2text.c atmequal.c sdu2cell.c text2qos.c qos2text.c qosequal.c sap2text.c text2sap.c sapequal.c misc.c atmres.h ans.c common.c diag.c kptr.c text2ip.c timer.c unix.c
-
- libatm_la_LIBADD = -lresolv
--libatm_la_DEPENDENCIES = $(top_builddir)/src/include/atm.h \
-- $(top_builddir)/src/include/atmsap.h \
-- $(top_builddir)/src/include/stdint.h \
-- $(top_builddir)/src/include/atmd.h
-+libatm_la_DEPENDENCIES = $(top_builddir)/src/include/atm.h $(top_builddir)/src/include/atmsap.h $(top_builddir)/src/include/stdint.h $(top_builddir)/src/include/atmd.h
-
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
- CONFIG_HEADER = ../../config.h
-@@ -126,8 +120,13 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/ans.P .deps/atm2text.P .deps/atmequal.P \
-+.deps/common.P .deps/diag.P .deps/kptr.P .deps/misc.P .deps/qos2text.P \
-+.deps/qosequal.P .deps/sap2text.P .deps/sapequal.P .deps/sdu2cell.P \
-+.deps/text2atm.P .deps/text2ip.P .deps/text2qos.P .deps/text2sap.P \
-+.deps/timer.P .deps/unix.P
- SOURCES = $(libatm_la_SOURCES)
- OBJECTS = $(libatm_la_OBJECTS)
-
-@@ -135,9 +134,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/lib/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/lib/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -167,9 +166,6 @@
- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
- done
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -192,9 +188,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -232,7 +225,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -248,6 +241,11 @@
- subdir = src/lib
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/lib/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -258,48 +256,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--ans.lo ans.o : ans.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h atmres.h
--atm2text.lo atm2text.o : atm2text.c ../../config.h \
-- ../../src/include/atm.h ../../src/include/stdint.h atmres.h
--atmequal.lo atmequal.o : atmequal.c ../../config.h \
-- ../../src/include/atm.h ../../src/include/stdint.h
--common.lo common.o : common.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atmd.h ../../src/include/atm.h
--diag.lo diag.o : diag.c ../../config.h ../../src/include/atmd.h \
-- ../../src/include/stdint.h ../../src/include/atm.h
--kptr.lo kptr.o : kptr.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h
--misc.lo misc.o : misc.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h ../../src/include/atmsap.h
--qos2text.lo qos2text.o : qos2text.c ../../config.h \
-- ../../src/include/atm.h ../../src/include/stdint.h
--qosequal.lo qosequal.o : qosequal.c ../../config.h \
-- ../../src/include/atm.h ../../src/include/stdint.h
--sap2text.lo sap2text.o : sap2text.c ../../config.h \
-- ../../src/include/atmsap.h ../../src/include/stdint.h \
-- ../../src/include/atm.h
--sapequal.lo sapequal.o : sapequal.c ../../config.h \
-- ../../src/include/atm.h ../../src/include/stdint.h \
-- ../../src/include/atmsap.h
--sdu2cell.lo sdu2cell.o : sdu2cell.c ../../config.h \
-- ../../src/include/atm.h ../../src/include/stdint.h
--text2atm.lo text2atm.o : text2atm.c ../../config.h \
-- ../../src/include/atm.h ../../src/include/stdint.h \
-- ../../src/include/atmsap.h atmres.h
--text2ip.lo text2ip.o : text2ip.c ../../config.h \
-- ../../src/include/stdint.h ../../src/include/atm.h \
-- ../../src/include/atmd.h
--text2qos.lo text2qos.o : text2qos.c ../../config.h \
-- ../../src/include/atm.h ../../src/include/stdint.h
--text2sap.lo text2sap.o : text2sap.c ../../config.h \
-- ../../src/include/atmsap.h ../../src/include/stdint.h \
-- ../../src/include/atm.h
--timer.lo timer.o : timer.c ../../config.h ../../src/include/atmd.h \
-- ../../src/include/stdint.h ../../src/include/atm.h
--unix.lo unix.o : unix.c ../../config.h ../../src/include/atmd.h \
-- ../../src/include/stdint.h ../../src/include/atm.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -337,27 +325,27 @@
-
- maintainer-clean-generic:
- mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+ clean-depend clean-generic mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-libLTLIBRARIES distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-
- maintainer-clean-am: maintainer-clean-libLTLIBRARIES \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -369,12 +357,13 @@
- distclean-compile clean-compile maintainer-clean-compile \
- mostlyclean-libtool distclean-libtool clean-libtool \
- maintainer-clean-libtool tags mostlyclean-tags distclean-tags \
--clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \
--check-am installcheck-am installcheck install-exec-am install-exec \
--install-data-am install-data install-am install uninstall-am uninstall \
--all-redirect all-am all installdirs mostlyclean-generic \
--distclean-generic clean-generic maintainer-clean-generic clean \
--mostlyclean distclean maintainer-clean
-+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
-+distclean-depend clean-depend maintainer-clean-depend info-am info \
-+dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
-+install-exec install-data-am install-data install-am install \
-+uninstall-am uninstall all-redirect all-am all installdirs \
-+mostlyclean-generic distclean-generic clean-generic \
-+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-
-
- #libatm_la_SOURCES = text2atm.c atm2text.c atmequal.c sdu2cell.c text2qos.c \
---- linux-atm-2.4.1.orig/src/lib/sapequal.c
-+++ linux-atm-2.4.1/src/lib/sapequal.c
-@@ -65,6 +65,7 @@
- CHECK(l2.itu.window,a.l2.itu.window > b.l2.itu.window);
- break;
- default:
-+ break;
- }
- switch (a.l3_proto) {
- case ATM_L3_X25:
-@@ -83,6 +84,7 @@
- if (a.l3.user != b.l3.user) return 0;
- break;
- default:
-+ break;
- }
- return 1;
- }
---- linux-atm-2.4.1.orig/src/test/Makefile.in
-+++ linux-atm-2.4.1/src/test/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -168,8 +168,11 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/align.P .deps/aping.P .deps/aread.P .deps/awrite.P \
-+.deps/br.P .deps/bw.P .deps/isp.P .deps/ispl_l.P .deps/ispl_y.P \
-+.deps/ttcp.P .deps/window.P
- SOURCES = $(aread_SOURCES) $(awrite_SOURCES) $(ttcp_atm_SOURCES) $(align_SOURCES) $(aping_SOURCES) $(br_SOURCES) $(bw_SOURCES) $(isp_SOURCES) $(window_SOURCES)
- OBJECTS = $(aread_OBJECTS) $(awrite_OBJECTS) $(ttcp_atm_OBJECTS) $(align_OBJECTS) $(aping_OBJECTS) $(br_OBJECTS) $(bw_OBJECTS) $(isp_OBJECTS) $(window_OBJECTS)
-
-@@ -177,9 +180,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .l .lo .o .obj .s .y
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/test/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/test/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -218,9 +221,6 @@
-
- maintainer-clean-noinstPROGRAMS:
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -243,9 +243,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -325,7 +322,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -341,6 +338,11 @@
- subdir = src/test
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/test/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -351,30 +353,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--align.o: align.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--aping.o: aping.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--aread.o: aread.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--awrite.o: awrite.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--br.o: br.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--bw.o: bw.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--isp.o: isp.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h isp.h \
-- errnos.inc
--ispl_l.o: ispl_l.c ../../config.h ../../src/include/stdint.h isp.h \
-- ../../src/include/atm.h ispl_y.h
--ispl_y.o: ispl_y.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h isp.h
--ttcp.o: ttcp.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h ../../src/include/atmsap.h
--window.o: window.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -412,21 +422,22 @@
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-
- maintainer-clean-generic:
-- -test -z "ispl_llispl_yhispl_yc" || rm -f ispl_ll ispl_yh ispl_yc
-+ -test -z "ispl_lcispl_yhispl_yc" || rm -f ispl_lc ispl_yh ispl_yc
- mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-noinstPROGRAMS \
- mostlyclean-compile mostlyclean-libtool \
-- mostlyclean-tags mostlyclean-generic
-+ mostlyclean-tags mostlyclean-depend mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-binPROGRAMS clean-noinstPROGRAMS clean-compile \
-- clean-libtool clean-tags clean-generic mostlyclean-am
-+ clean-libtool clean-tags clean-depend clean-generic \
-+ mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-binPROGRAMS distclean-noinstPROGRAMS \
- distclean-compile distclean-libtool distclean-tags \
-- distclean-generic clean-am
-+ distclean-depend distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-@@ -434,8 +445,8 @@
- maintainer-clean-am: maintainer-clean-binPROGRAMS \
- maintainer-clean-noinstPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -448,19 +459,22 @@
- mostlyclean-compile distclean-compile clean-compile \
- maintainer-clean-compile mostlyclean-libtool distclean-libtool \
- clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- isp.o: errnos.inc
-
- errnos.inc: mkerrnos.pl
-- @PERL@ ./mkerrnos.pl </usr/include/asm/errno.h \
-- >errnos.inc || { rm -f errnos.inc; exit 1; }
-+ cpp -I/usr/include/ -dM /usr/include/asm/errno.h | grep "^#define E" \
-+ | @PERL@ ./mkerrnos.pl | grep -v EMAXERRNO >errnos.inc \
-+ || { rm -f errnos.inc; exit 1; }
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
---- linux-atm-2.4.1.orig/src/test/Makefile.am
-+++ linux-atm-2.4.1/src/test/Makefile.am
-@@ -26,6 +26,7 @@
- isp.o: errnos.inc
-
- errnos.inc: mkerrnos.pl
-- @PERL@ ./mkerrnos.pl </usr/include/asm/errno.h \
-- >errnos.inc || { rm -f errnos.inc; exit 1; }
--
-+ cpp -I/usr/include/ -dM /usr/include/asm/errno.h | grep "^#define E" \
-+ | @PERL@ ./mkerrnos.pl | grep -v EMAXERRNO >errnos.inc \
-+ || { rm -f errnos.inc; exit 1; }
-+
---- linux-atm-2.4.1.orig/src/test/ttcp.c
-+++ linux-atm-2.4.1/src/test/ttcp.c
-@@ -55,6 +55,8 @@
- /* #define SYSV */ /* required on SGI IRIX releases before 3.3 */
-
- #include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
- #include <signal.h>
- #include <ctype.h>
- #include <errno.h>
-@@ -67,6 +69,7 @@
- #include <sys/time.h> /* struct timeval */
- #include <atm.h>
- #include <atmsap.h>
-+#include <unistd.h>
-
- #if defined(SYSV)
- #include <sys/times.h>
-@@ -85,7 +88,8 @@
- struct sockaddr_atmsvc satm;
- struct atm_qos qos;
-
--int domain, fromlen;
-+int domain;
-+socklen_t fromlen;
- int fd; /* fd of network socket */
-
- int buflen = 8 * 1024; /* length of buffer */
-@@ -120,7 +124,6 @@
- static struct rusage ru0; /* Resource utilization at the start */
-
- struct hostent *addr;
--extern int errno;
- extern int optind;
- extern char *optarg;
-
-@@ -158,23 +161,21 @@
- unsigned long numCalls; /* # of I/O system calls */
- double cput, realt; /* user, real time (seconds) */
-
--void err();
--void mes();
--int pattern();
--void prep_timer();
--double read_timer();
--int Nread();
--int Nwrite();
--void delay();
--int mread();
--char *outfmt();
--static void prusage();
--static void tvadd();
--static void tvsub();
--static void psecs();
-+void err(const char *s);
-+void mes(const char *s);
-+void prep_timer(void);
-+void pattern(char *cp, int cnt);
-+int Nread(int nfd, char *Nbuf, int count);
-+int Nwrite(int nfd, char *Nbuf, int count);
-+void delay(int us);
-+int mread(int mfd, char *bufp, unsigned n);
-+char *outfmt(double b);
-+static void prusage(struct rusage *r0, struct rusage *r1, struct timeval *e, struct timeval *b, char *outp);
-+static void tvadd(struct timeval *tsum, struct timeval *t0, struct timeval *t1);
-+static void tvsub(struct timeval *tdiff, struct timeval *t1, struct timeval *t0);
-+static void psecs(long l, char *cp);
-
--void
--sigpipe()
-+void sigpipe(int unused)
- {
- }
-
-@@ -183,16 +184,14 @@
- * main -
- *-------------------------------------------------------------------------
- */
--main(argc,argv)
--int argc;
--char **argv;
-+int main(int argc,char **argv)
- {
- struct timeval td;
- unsigned long addr_tmp;
- const char *port_name = NULL,*tos = NULL;
- int c;
- double mbps;
--int no_check = 0;
-+ int no_check = 0;
-
- if (argc < 2) goto usage;
-
-@@ -275,7 +274,7 @@
- }
- }
-
-- if (port_name)
-+ if (port_name) {
- if (atm) goto usage;
- else {
- struct servent *se;
-@@ -283,13 +282,13 @@
- se = getservbyname(port_name,udp ? "udp" : "tcp");
- if (se) port = ntohs(se->s_port);
- else {
-- const char *end;
-+ char *end;
-
- port = strtoul(port_name,&end,0);
- if (*end) goto usage;
- }
- }
--
-+ }
- host = argv[optind];
-
- if (atm) {
-@@ -435,9 +434,9 @@
- #endif
-
- if (!atm || satm.sas_family == AF_ATMPVC || !trans)
-- if (bind(fd, atm ? &satm : &sinme, atm ? satm.sas_family == AF_ATMPVC ?
-- sizeof(struct sockaddr_atmpvc) : sizeof(struct sockaddr_atmsvc) :
-- sizeof(sinme)) < 0)
-+ if (bind(fd, atm ?
-+ (struct sockaddr *)&satm : (struct sockaddr *)&sinme,
-+ atm ? satm.sas_family == AF_ATMPVC ? sizeof(struct sockaddr_atmpvc) : sizeof(struct sockaddr_atmsvc) : sizeof(sinme)) < 0)
- err("bind");
-
- if (!udp || (atm && satm.sas_family == AF_ATMSVC)) {
-@@ -453,8 +452,8 @@
- err("setsockopt");
- }
-
-- if (connect(fd, atm ? &satm : &sinhim, atm ? sizeof(satm) :
-- sizeof(sinhim)) < 0)
-+ if (connect(fd,
-+ atm ? (struct sockaddr *)&satm : (struct sockaddr *)&sinhim, atm ? sizeof(satm) : sizeof(sinhim)) < 0)
- err("connect");
-
- mes("connect");
-@@ -482,13 +481,13 @@
- fromlen = sizeof(frominet);
- domain = AF_INET;
-
-- if ((fd=accept(fd, &frominet, &fromlen) ) < 0)
-+ if ((fd=accept(fd, (struct sockaddr *)&frominet, &fromlen) ) < 0)
- err("accept");
-
- {
- struct sockaddr_atmsvc peer;
- int peerlen = sizeof(peer);
-- if (getpeername(fd, (struct sockaddr_in *) &peer,
-+ if (getpeername(fd, (struct sockaddr *) &peer,
- &peerlen) < 0) {
- err("getpeername");
- }
-@@ -638,13 +637,13 @@
- nbytes, cput, outfmt((double)nbytes/cput));
-
- fprintf(stdout,
-- "ttcp%s: %d I/O calls, msec/call = %.2f, calls/sec = %.2f\n",
-+ "ttcp%s: %lu I/O calls, msec/call = %.2f, calls/sec = %.2f\n",
- trans?"-t":"-r",
- numCalls,
- 1000.0 * realt/((double)numCalls),
- ((double)numCalls)/realt);
- fprintf(stdout,
-- "ttcp%s: buffer address %#x\n",
-+ "ttcp%s: buffer address %p\n",
- trans?"-t":"-r",
- buf);
- }
-@@ -656,8 +655,7 @@
- }
-
- void
--err(s)
--char *s;
-+err(const char *s)
- {
- int en = errno;
-
-@@ -670,8 +668,7 @@
- }
-
- void
--mes(s)
--char *s;
-+mes(const char *s)
- {
- fprintf(stderr,"ttcp%s: %s\n", trans?"-t":"-r", s);
- }
-@@ -681,9 +678,7 @@
- * pattern -
- *-------------------------------------------------------------------------
- */
--pattern(cp, cnt)
--register char *cp;
--register int cnt;
-+void pattern(char *cp, int cnt)
- {
- register char c;
- c = 0;
-@@ -694,9 +689,7 @@
- }
-
-
--char *
--outfmt(b)
--double b;
-+char *outfmt(double b)
- {
- static char obuf[50];
- switch (fmt) {
-@@ -758,7 +751,7 @@
- * P R E P _ T I M E R
- */
- void
--prep_timer()
-+prep_timer(void)
- {
- gettimeofday(&start_time, (struct timezone *)0);
- getrusage(RUSAGE_SELF, &ru0);
-@@ -768,8 +761,7 @@
- * read_timer -
- *-------------------------------------------------------------------------
- */
--double read_timer(str,len)
--char *str;
-+double read_timer(char *str,int len)
- {
- struct rusage ru1;
- struct timeval tend, tstart, td;
-@@ -788,15 +780,11 @@
- return( cput );
- }
-
--static void
--prusage(r0, r1, e, b, outp)
-- register struct rusage *r0, *r1;
-- struct timeval *e, *b;
-- char *outp;
-+static void prusage(struct rusage *r0, struct rusage *r1, struct timeval *e, struct timeval *b, char *outp)
- {
- struct timeval tdiff;
- register time_t t;
-- register char *cp;
-+ register const char *cp;
- register int i;
- int ms;
-
-@@ -823,13 +811,13 @@
-
- case 'U':
- tvsub(&tdiff, &r1->ru_utime, &r0->ru_utime);
-- sprintf(outp,"%d.%01d", tdiff.tv_sec, tdiff.tv_usec/100000);
-+ sprintf(outp,"%ld.%01ld", tdiff.tv_sec, tdiff.tv_usec/100000);
- END(outp);
- break;
-
- case 'S':
- tvsub(&tdiff, &r1->ru_stime, &r0->ru_stime);
-- sprintf(outp,"%d.%01d", tdiff.tv_sec, tdiff.tv_usec/100000);
-+ sprintf(outp,"%ld.%01ld", tdiff.tv_sec, tdiff.tv_usec/100000);
- END(outp);
- break;
-
-@@ -851,49 +839,49 @@
- break;
-
- case 'X':
-- sprintf(outp,"%d", t == 0 ? 0 : (r1->ru_ixrss-r0->ru_ixrss)/t);
-+ sprintf(outp,"%ld", t == 0 ? 0 : (r1->ru_ixrss-r0->ru_ixrss)/t);
- END(outp);
- break;
-
- case 'D':
-- sprintf(outp,"%d", t == 0 ? 0 :
-+ sprintf(outp,"%ld", t == 0 ? 0 :
- (r1->ru_idrss+r1->ru_isrss-(r0->ru_idrss+r0->ru_isrss))/t);
- END(outp);
- break;
-
- case 'K':
-- sprintf(outp,"%d", t == 0 ? 0 :
-+ sprintf(outp,"%ld", t == 0 ? 0 :
- ((r1->ru_ixrss+r1->ru_isrss+r1->ru_idrss) -
- (r0->ru_ixrss+r0->ru_idrss+r0->ru_isrss))/t);
- END(outp);
- break;
-
- case 'M':
-- sprintf(outp,"%d", r1->ru_maxrss/2);
-+ sprintf(outp,"%ld", r1->ru_maxrss/2);
- END(outp);
- break;
-
- case 'F':
-- sprintf(outp,"%d", r1->ru_majflt-r0->ru_majflt);
-+ sprintf(outp,"%ld", r1->ru_majflt-r0->ru_majflt);
- END(outp);
- break;
-
- case 'R':
-- sprintf(outp,"%d", r1->ru_minflt-r0->ru_minflt);
-+ sprintf(outp,"%ld", r1->ru_minflt-r0->ru_minflt);
- END(outp);
- break;
-
- case 'I':
-- sprintf(outp,"%d", r1->ru_inblock-r0->ru_inblock);
-+ sprintf(outp,"%ld", r1->ru_inblock-r0->ru_inblock);
- END(outp);
- break;
-
- case 'O':
-- sprintf(outp,"%d", r1->ru_oublock-r0->ru_oublock);
-+ sprintf(outp,"%ld", r1->ru_oublock-r0->ru_oublock);
- END(outp);
- break;
- case 'C':
-- sprintf(outp,"%d+%d", r1->ru_nvcsw-r0->ru_nvcsw,
-+ sprintf(outp,"%ld+%ld", r1->ru_nvcsw-r0->ru_nvcsw,
- r1->ru_nivcsw-r0->ru_nivcsw );
- END(outp);
- break;
-@@ -903,9 +891,7 @@
- *outp = '\0';
- }
-
--static void
--tvadd(tsum, t0, t1)
-- struct timeval *tsum, *t0, *t1;
-+static void tvadd(struct timeval *tsum, struct timeval *t0, struct timeval *t1)
- {
-
- tsum->tv_sec = t0->tv_sec + t1->tv_sec;
-@@ -919,8 +905,7 @@
- * tvsub - tdiff = t1 - t0
- *-------------------------------------------------------------------------
- */
--static void tvsub(tdiff, t1, t0)
-- struct timeval *tdiff, *t1, *t0;
-+static void tvsub(struct timeval *tdiff, struct timeval *t1, struct timeval *t0)
- {
-
- tdiff->tv_sec = t1->tv_sec - t0->tv_sec;
-@@ -931,10 +916,7 @@
- }
- }
-
--static void
--psecs(l,cp)
--long l;
--register char *cp;
-+static void psecs(long l, char *cp)
- {
- register int i;
-
-@@ -958,26 +940,23 @@
- /*
- * N R E A D
- */
--Nread( fd, buf, count )
--int fd;
--char *buf;
--int count;
-+int Nread( int nfd, char *Nbuf, int count )
- {
- struct sockaddr_in from;
- int len = sizeof(from);
- register int cnt;
- if( udp ) {
- #if 0
-- cnt = recvfrom( fd, buf, count, 0, &from, &len );
-+ cnt = recvfrom( nfd, Nbuf, count, 0, &from, &len );
- #else
-- cnt = recv( fd, buf, count, 0);
-+ cnt = recv( nfd, Nbuf, count, 0);
- #endif
- numCalls++;
- } else {
- if( b_flag )
-- cnt = mread( fd, buf, count ); /* fill buf */
-+ cnt = mread( nfd, Nbuf, count ); /* fill buf */
- else {
-- cnt = read( fd, buf, count );
-+ cnt = read( nfd, Nbuf, count );
- numCalls++;
- }
- if (touchdata && cnt > 0) {
-@@ -994,17 +973,15 @@
- * Nwrite -
- *-------------------------------------------------------------------------
- */
--Nwrite(fd, buf, count)
--int fd;
--char *buf;
--int count;
-+int Nwrite(int nfd, char *Nbuf, int count)
- {
- register int cnt;
-
- if (udp) {
- again:
-- if (atm) cnt = write(fd, buf, count);
-- else cnt = sendto(fd, buf, count, 0, &sinhim, sizeof(sinhim));
-+ if (atm) cnt = write(nfd, Nbuf, count);
-+ else cnt = sendto(nfd, Nbuf, count, 0, (struct sockaddr *)&sinhim,
-+ sizeof(sinhim));
- numCalls++;
- if ( cnt<0 && errno == ENOBUFS ) {
- delay(18000);
-@@ -1012,7 +989,7 @@
- goto again;
- }
- } else {
-- cnt = write(fd, buf, count);
-+ cnt = write(nfd, Nbuf, count);
- numCalls++;
- }
- if (cnt < 0) perror("WA:write");
-@@ -1020,13 +997,13 @@
- }
-
- void
--delay(us)
-+delay(int us)
- {
- struct timeval tv;
-
- tv.tv_sec = 0;
- tv.tv_usec = us;
-- (void)select( 1, (char *)0, (char *)0, (char *)0, &tv );
-+ (void)select( 1, NULL, NULL, NULL, &tv );
- }
-
- /*
-@@ -1038,17 +1015,13 @@
- * network connections don't deliver data with the same
- * grouping as it is written with. Written by Robert S. Miles, BRL.
- */
--int
--mread(fd, bufp, n)
--int fd;
--register char *bufp;
--unsigned n;
-+int mread(int mfd, char *bufp, unsigned n)
- {
- register unsigned count = 0;
- register int nread;
-
- do {
-- nread = read(fd, bufp, n-count);
-+ nread = read(mfd, bufp, n-count);
- numCalls++;
- if(nread < 0) {
- perror("ttcp_mread");
---- linux-atm-2.4.1.orig/src/debug/Makefile.in
-+++ linux-atm-2.4.1/src/debug/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -129,8 +129,9 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/delay.P .deps/svctor.P
- SOURCES = $(delay_SOURCES) $(svctor_SOURCES)
- OBJECTS = $(delay_OBJECTS) $(svctor_OBJECTS)
-
-@@ -138,9 +139,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/debug/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/debug/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -154,9 +155,6 @@
-
- maintainer-clean-noinstPROGRAMS:
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -179,9 +177,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -224,7 +219,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -240,6 +235,11 @@
- subdir = src/debug
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/debug/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -250,11 +250,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--delay.o: delay.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--svctor.o: svctor.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -291,27 +318,27 @@
-
- maintainer-clean-generic:
- mostlyclean-am: mostlyclean-noinstPROGRAMS mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-noinstPROGRAMS clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+ clean-depend clean-generic mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-noinstPROGRAMS distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-
- maintainer-clean-am: maintainer-clean-noinstPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -322,12 +349,14 @@
- mostlyclean-compile distclean-compile clean-compile \
- maintainer-clean-compile mostlyclean-libtool distclean-libtool \
- clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
---- linux-atm-2.4.1.orig/src/qgen/Makefile.in
-+++ linux-atm-2.4.1/src/qgen/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -88,8 +88,7 @@
- noinst_PROGRAMS = qgen q.dump # q40.out.o
- check_PROGRAMS = q.test
-
--qgen_SOURCES = common.c common.h file.c file.h first.c ql_y.y ql_l.l qgen.c \
-- qgen.h second.c third.c
-+qgen_SOURCES = common.c common.h file.c file.h first.c ql_y.y ql_l.l qgen.c qgen.h second.c third.c
-
- qgen_LDADD = -lfl
-
-@@ -108,17 +107,10 @@
-
- EXTRA_DIST = ql_y.h incl.pl mknl.pl msg.fmt TODO
-
--CLEANFILES = q.out.h q.out.c q.test.c qd.out.h qd.out.c qd.dump.c qd.test.c \
-- default.nl # q40.out.h q40.out.c q40.test.c
-+CLEANFILES = q.out.h q.out.c q.test.c qd.out.h qd.out.c qd.dump.c qd.test.c default.nl # q40.out.h q40.out.c q40.test.c
-
-
--NLS = atm_ai_msg atm_ai_ie atm_loc atm_cv atm_pu atm_na atm_cond atm_ie \
-- atm_msg atm_np atm_ton atm_sat atm_prs atm_scrn atm_vpa atm_poe \
-- q2931_cs atm_td atm_bc atm_tc atm_stc atm_upcc q2931_proto atm_flag \
-- atm_aalp atm_fd atm_tag atm_l2 atm_l3 atm_tt atm_mc atm_hl atm_imd \
-- atm_tdl atm_tni atm_nip atm_shi atm_oci atm_unfm atm_ofi atm_irs \
-- atm_it atm_lit atm_lsi atm_tcs atm_css atm_eqo atm_eqp atm_aap \
-- atm_asp atm_tor
-+NLS = atm_ai_msg atm_ai_ie atm_loc atm_cv atm_pu atm_na atm_cond atm_ie atm_msg atm_np atm_ton atm_sat atm_prs atm_scrn atm_vpa atm_poe q2931_cs atm_td atm_bc atm_tc atm_stc atm_upcc q2931_proto atm_flag atm_aalp atm_fd atm_tag atm_l2 atm_l3 atm_tt atm_mc atm_hl atm_imd atm_tdl atm_tni atm_nip atm_shi atm_oci atm_unfm atm_ofi atm_irs atm_it atm_lit atm_lsi atm_tcs atm_css atm_eqo atm_eqp atm_aap atm_asp atm_tor
-
- SYMFILES = uni.h $(shell @PERL@ incl.pl $(CFLAGS) linux/atmsap.h)
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-@@ -155,8 +147,11 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/common.P .deps/file.P .deps/first.P .deps/qgen.P \
-+.deps/ql_l.P .deps/ql_y.P .deps/qlib.P .deps/qtest.P .deps/second.P \
-+.deps/third.P
- SOURCES = $(q_test_SOURCES) $(qgen_SOURCES) $(q_dump_SOURCES) $(EXTRA_q_dump_SOURCES)
- OBJECTS = $(q_test_OBJECTS) $(qgen_OBJECTS) $(q_dump_OBJECTS)
-
-@@ -164,9 +159,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .l .lo .o .obj .s .y
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/qgen/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/qgen/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -189,9 +184,6 @@
-
- maintainer-clean-noinstPROGRAMS:
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -214,9 +206,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -272,7 +261,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -288,6 +277,11 @@
- subdir = src/qgen
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/qgen/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -298,15 +292,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--common.o: common.c ../../config.h common.h
--file.o: file.c ../../config.h common.h file.h
--first.o: first.c ../../config.h common.h qgen.h file.h
--qgen.o: qgen.c ../../config.h common.h file.h qgen.h
--ql_l.o: ql_l.c ../../config.h common.h qgen.h ql_y.h
--ql_y.o: ql_y.c ../../config.h common.h qgen.h file.h
--second.o: second.c ../../config.h common.h qgen.h file.h
--third.o: third.c ../../config.h common.h qgen.h file.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -344,21 +361,22 @@
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-
- maintainer-clean-generic:
-- -test -z "ql_llql_yhql_yc" || rm -f ql_ll ql_yh ql_yc
-+ -test -z "ql_lcql_yhql_yc" || rm -f ql_lc ql_yh ql_yc
- mostlyclean-am: mostlyclean-checkPROGRAMS mostlyclean-noinstPROGRAMS \
- mostlyclean-compile mostlyclean-libtool \
-- mostlyclean-tags mostlyclean-generic
-+ mostlyclean-tags mostlyclean-depend mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-checkPROGRAMS clean-noinstPROGRAMS clean-compile \
-- clean-libtool clean-tags clean-generic mostlyclean-am
-+ clean-libtool clean-tags clean-depend clean-generic \
-+ mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-checkPROGRAMS distclean-noinstPROGRAMS \
- distclean-compile distclean-libtool distclean-tags \
-- distclean-generic clean-am
-+ distclean-depend distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-@@ -366,8 +384,8 @@
- maintainer-clean-am: maintainer-clean-checkPROGRAMS \
- maintainer-clean-noinstPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -380,12 +398,14 @@
- mostlyclean-compile distclean-compile clean-compile \
- maintainer-clean-compile mostlyclean-libtool distclean-libtool \
- clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- default.nl: mknl.pl $(SYMFILES)
---- linux-atm-2.4.1.orig/src/qgen/ql_l.c
-+++ linux-atm-2.4.1/src/qgen/ql_l.c
-@@ -1,32 +1,85 @@
--/* A lexical scanner generated by flex */
-
--/* Scanner skeleton version:
-- * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
-- */
-+#line 3 "lex.yy.c"
-+
-+#define YY_INT_ALIGNED short int
-+
-+/* A lexical scanner generated by flex */
-
- #define FLEX_SCANNER
- #define YY_FLEX_MAJOR_VERSION 2
- #define YY_FLEX_MINOR_VERSION 5
-+#define YY_FLEX_SUBMINOR_VERSION 31
-+#if YY_FLEX_SUBMINOR_VERSION > 0
-+#define FLEX_BETA
-+#endif
-
-+/* First, we deal with platform-specific or compiler-specific issues. */
-+
-+/* begin standard C headers. */
- #include <stdio.h>
--#include <unistd.h>
-+#include <string.h>
-+#include <errno.h>
-+#include <stdlib.h>
-
-+/* end standard C headers. */
-
--/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
--#ifdef c_plusplus
--#ifndef __cplusplus
--#define __cplusplus
-+/* flex integer type definitions */
-+
-+#ifndef FLEXINT_H
-+#define FLEXINT_H
-+
-+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-+
-+#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
-+#include <inttypes.h>
-+typedef int8_t flex_int8_t;
-+typedef uint8_t flex_uint8_t;
-+typedef int16_t flex_int16_t;
-+typedef uint16_t flex_uint16_t;
-+typedef int32_t flex_int32_t;
-+typedef uint32_t flex_uint32_t;
-+#else
-+typedef signed char flex_int8_t;
-+typedef short int flex_int16_t;
-+typedef int flex_int32_t;
-+typedef unsigned char flex_uint8_t;
-+typedef unsigned short int flex_uint16_t;
-+typedef unsigned int flex_uint32_t;
-+#endif /* ! C99 */
-+
-+/* Limits of integral types. */
-+#ifndef INT8_MIN
-+#define INT8_MIN (-128)
-+#endif
-+#ifndef INT16_MIN
-+#define INT16_MIN (-32767-1)
-+#endif
-+#ifndef INT32_MIN
-+#define INT32_MIN (-2147483647-1)
- #endif
-+#ifndef INT8_MAX
-+#define INT8_MAX (127)
-+#endif
-+#ifndef INT16_MAX
-+#define INT16_MAX (32767)
-+#endif
-+#ifndef INT32_MAX
-+#define INT32_MAX (2147483647)
-+#endif
-+#ifndef UINT8_MAX
-+#define UINT8_MAX (255U)
-+#endif
-+#ifndef UINT16_MAX
-+#define UINT16_MAX (65535U)
-+#endif
-+#ifndef UINT32_MAX
-+#define UINT32_MAX (4294967295U)
- #endif
-
-+#endif /* ! FLEXINT_H */
-
- #ifdef __cplusplus
-
--#include <stdlib.h>
--
--/* Use prototypes in function declarations. */
--#define YY_USE_PROTOS
--
- /* The "const" storage-class-modifier is valid. */
- #define YY_USE_CONST
-
-@@ -34,34 +87,17 @@
-
- #if __STDC__
-
--#define YY_USE_PROTOS
- #define YY_USE_CONST
-
- #endif /* __STDC__ */
- #endif /* ! __cplusplus */
-
--#ifdef __TURBOC__
-- #pragma warn -rch
-- #pragma warn -use
--#include <io.h>
--#include <stdlib.h>
--#define YY_USE_CONST
--#define YY_USE_PROTOS
--#endif
--
- #ifdef YY_USE_CONST
- #define yyconst const
- #else
- #define yyconst
- #endif
-
--
--#ifdef YY_USE_PROTOS
--#define YY_PROTO(proto) proto
--#else
--#define YY_PROTO(proto) ()
--#endif
--
- /* Returned upon end-of-file. */
- #define YY_NULL 0
-
-@@ -76,71 +112,71 @@
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
--#define BEGIN yy_start = 1 + 2 *
-+#define BEGIN (yy_start) = 1 + 2 *
-
- /* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state. The YYSTATE alias is for lex
- * compatibility.
- */
--#define YY_START ((yy_start - 1) / 2)
-+#define YY_START (((yy_start) - 1) / 2)
- #define YYSTATE YY_START
-
- /* Action number for EOF rule of a given start state. */
- #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
- /* Special action meaning "start processing a new file". */
--#define YY_NEW_FILE yyrestart( yyin )
-+#define YY_NEW_FILE yyrestart(yyin )
-
- #define YY_END_OF_BUFFER_CHAR 0
-
- /* Size of default input buffer. */
-+#ifndef YY_BUF_SIZE
- #define YY_BUF_SIZE 16384
-+#endif
-
-+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-+#define YY_TYPEDEF_YY_BUFFER_STATE
- typedef struct yy_buffer_state *YY_BUFFER_STATE;
-+#endif
-
- extern int yyleng;
-+
- extern FILE *yyin, *yyout;
-
- #define EOB_ACT_CONTINUE_SCAN 0
- #define EOB_ACT_END_OF_FILE 1
- #define EOB_ACT_LAST_MATCH 2
-
--/* The funky do-while in the following #define is used to turn the definition
-- * int a single C statement (which needs a semi-colon terminator). This
-- * avoids problems with code like:
-- *
-- * if ( condition_holds )
-- * yyless( 5 );
-- * else
-- * do_something_else();
-- *
-- * Prior to using the do-while the compiler would get upset at the
-- * "else" because it interpreted the "if" statement as being all
-- * done when it reached the ';' after the yyless() call.
-- */
--
--/* Return all but the first 'n' matched characters back to the input stream. */
--
-+ #define YY_LESS_LINENO(n)
-+
-+/* Return all but the first "n" matched characters back to the input stream. */
- #define yyless(n) \
- do \
- { \
- /* Undo effects of setting up yytext. */ \
-- *yy_cp = yy_hold_char; \
-+ int yyless_macro_arg = (n); \
-+ YY_LESS_LINENO(yyless_macro_arg);\
-+ *yy_cp = (yy_hold_char); \
- YY_RESTORE_YY_MORE_OFFSET \
-- yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
-+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
- YY_DO_BEFORE_ACTION; /* set up yytext again */ \
- } \
- while ( 0 )
-
--#define unput(c) yyunput( c, yytext_ptr )
-+#define unput(c) yyunput( c, (yytext_ptr) )
-
- /* The following is because we cannot portably get our hands on size_t
- * (without autoconf's help, which isn't available because we want
- * flex-generated scanners to compile on their own).
- */
--typedef unsigned int yy_size_t;
-
-+#ifndef YY_TYPEDEF_YY_SIZE_T
-+#define YY_TYPEDEF_YY_SIZE_T
-+typedef unsigned int yy_size_t;
-+#endif
-
-+#ifndef YY_STRUCT_YY_BUFFER_STATE
-+#define YY_STRUCT_YY_BUFFER_STATE
- struct yy_buffer_state
- {
- FILE *yy_input_file;
-@@ -177,12 +213,16 @@
- */
- int yy_at_bol;
-
-+ int yy_bs_lineno; /**< The line count. */
-+ int yy_bs_column; /**< The column count. */
-+
- /* Whether to try to fill the input buffer when we reach the
- * end of it.
- */
- int yy_fill_buffer;
-
- int yy_buffer_status;
-+
- #define YY_BUFFER_NEW 0
- #define YY_BUFFER_NORMAL 1
- /* When an EOF's been seen but there's still some text to process
-@@ -196,23 +236,33 @@
- * just pointing yyin at a new input file.
- */
- #define YY_BUFFER_EOF_PENDING 2
-+
- };
-+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
--static YY_BUFFER_STATE yy_current_buffer = 0;
-+/* Stack of input buffers. */
-+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
-+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
-
- /* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
-+ *
-+ * Returns the top of the stack, or NULL.
- */
--#define YY_CURRENT_BUFFER yy_current_buffer
-+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
-+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
-+ : NULL)
-
-+/* Same as previous macro, but useful when we know that the buffer stack is not
-+ * NULL or when we need an lvalue. For internal use only.
-+ */
-+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-
- /* yy_hold_char holds the character lost when yytext is formed. */
- static char yy_hold_char;
--
- static int yy_n_chars; /* number of characters read into yy_ch_buf */
--
--
- int yyleng;
-
- /* Points to current character in buffer. */
-@@ -225,66 +275,92 @@
- */
- static int yy_did_buffer_switch_on_eof;
-
--void yyrestart YY_PROTO(( FILE *input_file ));
--
--void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
--void yy_load_buffer_state YY_PROTO(( void ));
--YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
--void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
--void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
--void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
--#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
--
--YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
--YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
--YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
--
--static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
--static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
--static void yy_flex_free YY_PROTO(( void * ));
-+void yyrestart (FILE *input_file );
-+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
-+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
-+void yy_delete_buffer (YY_BUFFER_STATE b );
-+void yy_flush_buffer (YY_BUFFER_STATE b );
-+void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
-+void yypop_buffer_state (void );
-+
-+static void yyensure_buffer_stack (void );
-+static void yy_load_buffer_state (void );
-+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
-+
-+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
-+
-+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
-+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
-+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
-+
-+void *yyalloc (yy_size_t );
-+void *yyrealloc (void *,yy_size_t );
-+void yyfree (void * );
-
- #define yy_new_buffer yy_create_buffer
-
- #define yy_set_interactive(is_interactive) \
- { \
-- if ( ! yy_current_buffer ) \
-- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-- yy_current_buffer->yy_is_interactive = is_interactive; \
-+ if ( ! YY_CURRENT_BUFFER ){ \
-+ yyensure_buffer_stack (); \
-+ YY_CURRENT_BUFFER_LVALUE = \
-+ yy_create_buffer(yyin,YY_BUF_SIZE ); \
-+ } \
-+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
- }
-
- #define yy_set_bol(at_bol) \
- { \
-- if ( ! yy_current_buffer ) \
-- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-- yy_current_buffer->yy_at_bol = at_bol; \
-+ if ( ! YY_CURRENT_BUFFER ){\
-+ yyensure_buffer_stack (); \
-+ YY_CURRENT_BUFFER_LVALUE = \
-+ yy_create_buffer(yyin,YY_BUF_SIZE ); \
-+ } \
-+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
- }
-
--#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
-+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-+
-+/* Begin user sect3 */
-
- typedef unsigned char YY_CHAR;
-+
- FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-+
- typedef int yy_state_type;
-+
-+extern int yylineno;
-+
-+int yylineno = 1;
-+
- extern char *yytext;
- #define yytext_ptr yytext
-
--static yy_state_type yy_get_previous_state YY_PROTO(( void ));
--static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
--static int yy_get_next_buffer YY_PROTO(( void ));
--static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
-+static yy_state_type yy_get_previous_state (void );
-+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
-+static int yy_get_next_buffer (void );
-+static void yy_fatal_error (yyconst char msg[] );
-
- /* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
- #define YY_DO_BEFORE_ACTION \
-- yytext_ptr = yy_bp; \
-- yyleng = (int) (yy_cp - yy_bp); \
-- yy_hold_char = *yy_cp; \
-+ (yytext_ptr) = yy_bp; \
-+ yyleng = (size_t) (yy_cp - yy_bp); \
-+ (yy_hold_char) = *yy_cp; \
- *yy_cp = '\0'; \
-- yy_c_buf_p = yy_cp;
-+ (yy_c_buf_p) = yy_cp;
-
- #define YY_NUM_RULES 16
- #define YY_END_OF_BUFFER 17
--static yyconst short int yy_accept[70] =
-+/* This struct is not used in this scanner,
-+ but its presence is necessary. */
-+struct yy_trans_info
-+ {
-+ flex_int32_t yy_verify;
-+ flex_int32_t yy_nxt;
-+ };
-+static yyconst flex_int16_t yy_accept[70] =
- { 0,
- 10, 10, 17, 15, 10, 10, 15, 15, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 10, 0, 0,
-@@ -295,7 +371,7 @@
- 7, 0, 0, 0, 0, 0, 11, 12, 0
- } ;
-
--static yyconst int yy_ec[256] =
-+static yyconst flex_int32_t yy_ec[256] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-@@ -327,14 +403,14 @@
- 1, 1, 1, 1, 1
- } ;
-
--static yyconst int yy_meta[29] =
-+static yyconst flex_int32_t yy_meta[29] =
- { 0,
- 1, 2, 2, 1, 3, 1, 4, 5, 5, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4
- } ;
-
--static yyconst short int yy_base[75] =
-+static yyconst flex_int16_t yy_base[75] =
- { 0,
- 0, 0, 99, 100, 27, 28, 0, 95, 0, 86,
- 72, 85, 80, 71, 78, 64, 76, 31, 84, 85,
-@@ -346,7 +422,7 @@
- 48, 34, 53, 58
- } ;
-
--static yyconst short int yy_def[75] =
-+static yyconst flex_int16_t yy_def[75] =
- { 0,
- 69, 1, 69, 69, 69, 69, 70, 71, 72, 72,
- 72, 72, 72, 72, 72, 72, 72, 69, 70, 71,
-@@ -358,7 +434,7 @@
- 69, 69, 69, 69
- } ;
-
--static yyconst short int yy_nxt[129] =
-+static yyconst flex_int16_t yy_nxt[129] =
- { 0,
- 4, 5, 6, 5, 7, 8, 9, 4, 4, 10,
- 11, 12, 13, 9, 9, 9, 9, 14, 9, 15,
-@@ -376,7 +452,7 @@
- 69, 69, 69, 69, 69, 69, 69, 69
- } ;
-
--static yyconst short int yy_chk[129] =
-+static yyconst flex_int16_t yy_chk[129] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-@@ -397,6 +473,9 @@
- static yy_state_type yy_last_accepting_state;
- static char *yy_last_accepting_cpos;
-
-+extern int yy_flex_debug;
-+int yy_flex_debug = 0;
-+
- /* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-@@ -406,7 +485,6 @@
- #define YY_RESTORE_YY_MORE_OFFSET
- char *yytext;
- #line 1 "ql_l.l"
--#define INITIAL 0
- #line 2 "ql_l.l"
- /* ql.l - Q.2931 data structures description language */
-
-@@ -451,7 +529,21 @@
- return (*walk)->str;
- }
-
--#line 455 "lex.yy.c"
-+#line 533 "lex.yy.c"
-+
-+#define INITIAL 0
-+
-+#ifndef YY_NO_UNISTD_H
-+/* Special case for "unistd.h", since it is non-ANSI. We include it way
-+ * down here because we want the user's section 1 to have been scanned first.
-+ * The user has a chance to override it with an option.
-+ */
-+#include <unistd.h>
-+#endif
-+
-+#ifndef YY_EXTRA_TYPE
-+#define YY_EXTRA_TYPE void *
-+#endif
-
- /* Macros after this point can all be overridden by user definitions in
- * section 1.
-@@ -459,65 +551,30 @@
-
- #ifndef YY_SKIP_YYWRAP
- #ifdef __cplusplus
--extern "C" int yywrap YY_PROTO(( void ));
-+extern "C" int yywrap (void );
- #else
--extern int yywrap YY_PROTO(( void ));
-+extern int yywrap (void );
- #endif
- #endif
-
--#ifndef YY_NO_UNPUT
--static void yyunput YY_PROTO(( int c, char *buf_ptr ));
--#endif
--
-+ static void yyunput (int c,char *buf_ptr );
-+
- #ifndef yytext_ptr
--static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
-+static void yy_flex_strncpy (char *,yyconst char *,int );
- #endif
-
- #ifdef YY_NEED_STRLEN
--static int yy_flex_strlen YY_PROTO(( yyconst char * ));
-+static int yy_flex_strlen (yyconst char * );
- #endif
-
- #ifndef YY_NO_INPUT
-+
- #ifdef __cplusplus
--static int yyinput YY_PROTO(( void ));
-+static int yyinput (void );
- #else
--static int input YY_PROTO(( void ));
--#endif
--#endif
--
--#if YY_STACK_USED
--static int yy_start_stack_ptr = 0;
--static int yy_start_stack_depth = 0;
--static int *yy_start_stack = 0;
--#ifndef YY_NO_PUSH_STATE
--static void yy_push_state YY_PROTO(( int new_state ));
--#endif
--#ifndef YY_NO_POP_STATE
--static void yy_pop_state YY_PROTO(( void ));
--#endif
--#ifndef YY_NO_TOP_STATE
--static int yy_top_state YY_PROTO(( void ));
-+static int input (void );
- #endif
-
--#else
--#define YY_NO_PUSH_STATE 1
--#define YY_NO_POP_STATE 1
--#define YY_NO_TOP_STATE 1
--#endif
--
--#ifdef YY_MALLOC_DECL
--YY_MALLOC_DECL
--#else
--#if __STDC__
--#ifndef __cplusplus
--#include <stdlib.h>
--#endif
--#else
--/* Just try to get by without declaring the routines. This will fail
-- * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
-- * or sizeof(void*) != sizeof(int).
-- */
--#endif
- #endif
-
- /* Amount of stuff to slurp up with each read. */
-@@ -526,7 +583,6 @@
- #endif
-
- /* Copy whatever the last rule matched to the standard output. */
--
- #ifndef ECHO
- /* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
-@@ -539,9 +595,10 @@
- */
- #ifndef YY_INPUT
- #define YY_INPUT(buf,result,max_size) \
-- if ( yy_current_buffer->yy_is_interactive ) \
-+ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
- { \
-- int c = '*', n; \
-+ int c = '*'; \
-+ size_t n; \
- for ( n = 0; n < max_size && \
- (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
- buf[n] = (char) c; \
-@@ -551,9 +608,22 @@
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- result = n; \
- } \
-- else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
-- && ferror( yyin ) ) \
-- YY_FATAL_ERROR( "input in flex scanner failed" );
-+ else \
-+ { \
-+ errno=0; \
-+ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
-+ { \
-+ if( errno != EINTR) \
-+ { \
-+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
-+ break; \
-+ } \
-+ errno=0; \
-+ clearerr(yyin); \
-+ } \
-+ }\
-+\
-+
- #endif
-
- /* No semi-colon after return; correct usage is to write "yyterminate();" -
-@@ -574,12 +644,18 @@
- #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
- #endif
-
-+/* end tables serialization structures and prototypes */
-+
- /* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
- #ifndef YY_DECL
--#define YY_DECL int yylex YY_PROTO(( void ))
--#endif
-+#define YY_DECL_IS_OURS 1
-+
-+extern int yylex (void);
-+
-+#define YY_DECL int yylex (void)
-+#endif /* !YY_DECL */
-
- /* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
-@@ -596,27 +672,29 @@
- #define YY_RULE_SETUP \
- YY_USER_ACTION
-
-+/** The main scanner function which does all the work.
-+ */
- YY_DECL
-- {
-+{
- register yy_state_type yy_current_state;
-- register char *yy_cp = NULL, *yy_bp = NULL;
-+ register char *yy_cp, *yy_bp;
- register int yy_act;
--
-+
- #line 47 "ql_l.l"
-
-
--#line 609 "lex.yy.c"
-+#line 687 "lex.yy.c"
-
-- if ( yy_init )
-+ if ( (yy_init) )
- {
-- yy_init = 0;
-+ (yy_init) = 0;
-
- #ifdef YY_USER_INIT
- YY_USER_INIT;
- #endif
-
-- if ( ! yy_start )
-- yy_start = 1; /* first start state */
-+ if ( ! (yy_start) )
-+ (yy_start) = 1; /* first start state */
-
- if ( ! yyin )
- yyin = stdin;
-@@ -624,34 +702,36 @@
- if ( ! yyout )
- yyout = stdout;
-
-- if ( ! yy_current_buffer )
-- yy_current_buffer =
-- yy_create_buffer( yyin, YY_BUF_SIZE );
-+ if ( ! YY_CURRENT_BUFFER ) {
-+ yyensure_buffer_stack ();
-+ YY_CURRENT_BUFFER_LVALUE =
-+ yy_create_buffer(yyin,YY_BUF_SIZE );
-+ }
-
-- yy_load_buffer_state();
-+ yy_load_buffer_state( );
- }
-
- while ( 1 ) /* loops until end-of-file is reached */
- {
-- yy_cp = yy_c_buf_p;
-+ yy_cp = (yy_c_buf_p);
-
- /* Support of yytext. */
-- *yy_cp = yy_hold_char;
-+ *yy_cp = (yy_hold_char);
-
- /* yy_bp points to the position in yy_ch_buf of the start of
- * the current run.
- */
- yy_bp = yy_cp;
-
-- yy_current_state = yy_start;
-+ yy_current_state = (yy_start);
- yy_match:
- do
- {
- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
- if ( yy_accept[yy_current_state] )
- {
-- yy_last_accepting_state = yy_current_state;
-- yy_last_accepting_cpos = yy_cp;
-+ (yy_last_accepting_state) = yy_current_state;
-+ (yy_last_accepting_cpos) = yy_cp;
- }
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
-@@ -668,24 +748,22 @@
- yy_act = yy_accept[yy_current_state];
- if ( yy_act == 0 )
- { /* have to back up */
-- yy_cp = yy_last_accepting_cpos;
-- yy_current_state = yy_last_accepting_state;
-+ yy_cp = (yy_last_accepting_cpos);
-+ yy_current_state = (yy_last_accepting_state);
- yy_act = yy_accept[yy_current_state];
- }
-
- YY_DO_BEFORE_ACTION;
-
--
- do_action: /* This label is used only to access EOF actions. */
-
--
- switch ( yy_act )
- { /* beginning of action switch */
- case 0: /* must back up */
- /* undo the effects of YY_DO_BEFORE_ACTION */
-- *yy_cp = yy_hold_char;
-- yy_cp = yy_last_accepting_cpos;
-- yy_current_state = yy_last_accepting_state;
-+ *yy_cp = (yy_hold_char);
-+ yy_cp = (yy_last_accepting_cpos);
-+ yy_current_state = (yy_last_accepting_state);
- goto yy_find_action;
-
- case 1:
-@@ -735,6 +813,7 @@
- return TOK_ID; }
- YY_BREAK
- case 10:
-+/* rule 10 can match eol */
- YY_RULE_SETUP
- #line 59 "ql_l.l"
- lineno += *yytext == '\n';
-@@ -755,6 +834,7 @@
- return TOK_STRING; }
- YY_BREAK
- case 14:
-+/* rule 14 can match eol */
- YY_RULE_SETUP
- #line 66 "ql_l.l"
- lineno++;
-@@ -769,33 +849,33 @@
- #line 69 "ql_l.l"
- ECHO;
- YY_BREAK
--#line 773 "lex.yy.c"
-+#line 853 "lex.yy.c"
- case YY_STATE_EOF(INITIAL):
- yyterminate();
-
- case YY_END_OF_BUFFER:
- {
- /* Amount of text matched not including the EOB char. */
-- int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
-+ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
-
- /* Undo the effects of YY_DO_BEFORE_ACTION. */
-- *yy_cp = yy_hold_char;
-+ *yy_cp = (yy_hold_char);
- YY_RESTORE_YY_MORE_OFFSET
-
-- if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
-+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
- {
- /* We're scanning a new file or input source. It's
- * possible that this happened because the user
- * just pointed yyin at a new source and called
- * yylex(). If so, then we have to assure
-- * consistency between yy_current_buffer and our
-+ * consistency between YY_CURRENT_BUFFER and our
- * globals. Here is the right place to do so, because
- * this is the first action (other than possibly a
- * back-up) that will match for the new input source.
- */
-- yy_n_chars = yy_current_buffer->yy_n_chars;
-- yy_current_buffer->yy_input_file = yyin;
-- yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
-+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
-+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
- }
-
- /* Note that here we test for yy_c_buf_p "<=" to the position
-@@ -805,13 +885,13 @@
- * end-of-buffer state). Contrast this with the test
- * in input().
- */
-- if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-+ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
- { /* This was really a NUL. */
- yy_state_type yy_next_state;
-
-- yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
-+ (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
-
-- yy_current_state = yy_get_previous_state();
-+ yy_current_state = yy_get_previous_state( );
-
- /* Okay, we're now positioned to make the NUL
- * transition. We couldn't have
-@@ -824,30 +904,30 @@
-
- yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-- yy_bp = yytext_ptr + YY_MORE_ADJ;
-+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-
- if ( yy_next_state )
- {
- /* Consume the NUL. */
-- yy_cp = ++yy_c_buf_p;
-+ yy_cp = ++(yy_c_buf_p);
- yy_current_state = yy_next_state;
- goto yy_match;
- }
-
- else
- {
-- yy_cp = yy_c_buf_p;
-+ yy_cp = (yy_c_buf_p);
- goto yy_find_action;
- }
- }
-
-- else switch ( yy_get_next_buffer() )
-+ else switch ( yy_get_next_buffer( ) )
- {
- case EOB_ACT_END_OF_FILE:
- {
-- yy_did_buffer_switch_on_eof = 0;
-+ (yy_did_buffer_switch_on_eof) = 0;
-
-- if ( yywrap() )
-+ if ( yywrap( ) )
- {
- /* Note: because we've taken care in
- * yy_get_next_buffer() to have set up
-@@ -858,7 +938,7 @@
- * YY_NULL, it'll still work - another
- * YY_NULL will get returned.
- */
-- yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
-+ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
-
- yy_act = YY_STATE_EOF(YY_START);
- goto do_action;
-@@ -866,30 +946,30 @@
-
- else
- {
-- if ( ! yy_did_buffer_switch_on_eof )
-+ if ( ! (yy_did_buffer_switch_on_eof) )
- YY_NEW_FILE;
- }
- break;
- }
-
- case EOB_ACT_CONTINUE_SCAN:
-- yy_c_buf_p =
-- yytext_ptr + yy_amount_of_matched_text;
-+ (yy_c_buf_p) =
-+ (yytext_ptr) + yy_amount_of_matched_text;
-
-- yy_current_state = yy_get_previous_state();
-+ yy_current_state = yy_get_previous_state( );
-
-- yy_cp = yy_c_buf_p;
-- yy_bp = yytext_ptr + YY_MORE_ADJ;
-+ yy_cp = (yy_c_buf_p);
-+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
- goto yy_match;
-
- case EOB_ACT_LAST_MATCH:
-- yy_c_buf_p =
-- &yy_current_buffer->yy_ch_buf[yy_n_chars];
-+ (yy_c_buf_p) =
-+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
-
-- yy_current_state = yy_get_previous_state();
-+ yy_current_state = yy_get_previous_state( );
-
-- yy_cp = yy_c_buf_p;
-- yy_bp = yytext_ptr + YY_MORE_ADJ;
-+ yy_cp = (yy_c_buf_p);
-+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
- goto yy_find_action;
- }
- break;
-@@ -900,8 +980,7 @@
- "fatal flex scanner internal error--no action found" );
- } /* end of action switch */
- } /* end of scanning one token */
-- } /* end of yylex */
--
-+} /* end of yylex */
-
- /* yy_get_next_buffer - try to read in a new buffer
- *
-@@ -910,21 +989,20 @@
- * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- * EOB_ACT_END_OF_FILE - end of file
- */
--
--static int yy_get_next_buffer()
-- {
-- register char *dest = yy_current_buffer->yy_ch_buf;
-- register char *source = yytext_ptr;
-+static int yy_get_next_buffer (void)
-+{
-+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-+ register char *source = (yytext_ptr);
- register int number_to_move, i;
- int ret_val;
-
-- if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
-+ if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--end of buffer missed" );
-
-- if ( yy_current_buffer->yy_fill_buffer == 0 )
-+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
- { /* Don't try to fill the buffer, so this is an EOF. */
-- if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
-+ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
- {
- /* We matched a single character, the EOB, so
- * treat this as a final EOF.
-@@ -944,34 +1022,30 @@
- /* Try to read more data. */
-
- /* First move last chars to start of buffer. */
-- number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
-+ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
-
- for ( i = 0; i < number_to_move; ++i )
- *(dest++) = *(source++);
-
-- if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
- /* don't do the read, it's not guaranteed to return an EOF,
- * just force an EOF
- */
-- yy_current_buffer->yy_n_chars = yy_n_chars = 0;
-+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
-
- else
- {
-- int num_to_read =
-- yy_current_buffer->yy_buf_size - number_to_move - 1;
-+ size_t num_to_read =
-+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
- while ( num_to_read <= 0 )
- { /* Not enough room in the buffer - grow it. */
--#ifdef YY_USES_REJECT
-- YY_FATAL_ERROR(
--"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
--#else
-
- /* just a shorter name for the current buffer */
-- YY_BUFFER_STATE b = yy_current_buffer;
-+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
-
- int yy_c_buf_p_offset =
-- (int) (yy_c_buf_p - b->yy_ch_buf);
-+ (int) ((yy_c_buf_p) - b->yy_ch_buf);
-
- if ( b->yy_is_our_buffer )
- {
-@@ -984,8 +1058,7 @@
-
- b->yy_ch_buf = (char *)
- /* Include room in for 2 EOB chars. */
-- yy_flex_realloc( (void *) b->yy_ch_buf,
-- b->yy_buf_size + 2 );
-+ yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
- }
- else
- /* Can't grow it, we don't own it. */
-@@ -995,35 +1068,35 @@
- YY_FATAL_ERROR(
- "fatal error - scanner input buffer overflow" );
-
-- yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
-+ (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-- num_to_read = yy_current_buffer->yy_buf_size -
-+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
- number_to_move - 1;
--#endif
-+
- }
-
- if ( num_to_read > YY_READ_BUF_SIZE )
- num_to_read = YY_READ_BUF_SIZE;
-
- /* Read in more data. */
-- YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
-- yy_n_chars, num_to_read );
-+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-+ (yy_n_chars), num_to_read );
-
-- yy_current_buffer->yy_n_chars = yy_n_chars;
-+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
- }
-
-- if ( yy_n_chars == 0 )
-+ if ( (yy_n_chars) == 0 )
- {
- if ( number_to_move == YY_MORE_ADJ )
- {
- ret_val = EOB_ACT_END_OF_FILE;
-- yyrestart( yyin );
-+ yyrestart(yyin );
- }
-
- else
- {
- ret_val = EOB_ACT_LAST_MATCH;
-- yy_current_buffer->yy_buffer_status =
-+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
- YY_BUFFER_EOF_PENDING;
- }
- }
-@@ -1031,32 +1104,31 @@
- else
- ret_val = EOB_ACT_CONTINUE_SCAN;
-
-- yy_n_chars += number_to_move;
-- yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
-- yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
-+ (yy_n_chars) += number_to_move;
-+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
-+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
-
-- yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
-+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
- return ret_val;
-- }
--
-+}
-
- /* yy_get_previous_state - get the state just before the EOB char was reached */
-
--static yy_state_type yy_get_previous_state()
-- {
-+ static yy_state_type yy_get_previous_state (void)
-+{
- register yy_state_type yy_current_state;
- register char *yy_cp;
-+
-+ yy_current_state = (yy_start);
-
-- yy_current_state = yy_start;
--
-- for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
-+ for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
- {
- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
- if ( yy_accept[yy_current_state] )
- {
-- yy_last_accepting_state = yy_current_state;
-- yy_last_accepting_cpos = yy_cp;
-+ (yy_last_accepting_state) = yy_current_state;
-+ (yy_last_accepting_cpos) = yy_cp;
- }
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
-@@ -1068,30 +1140,23 @@
- }
-
- return yy_current_state;
-- }
--
-+}
-
- /* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- * next_state = yy_try_NUL_trans( current_state );
- */
--
--#ifdef YY_USE_PROTOS
--static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
--#else
--static yy_state_type yy_try_NUL_trans( yy_current_state )
--yy_state_type yy_current_state;
--#endif
-- {
-+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
-+{
- register int yy_is_jam;
-- register char *yy_cp = yy_c_buf_p;
-+ register char *yy_cp = (yy_c_buf_p);
-
- register YY_CHAR yy_c = 1;
- if ( yy_accept[yy_current_state] )
- {
-- yy_last_accepting_state = yy_current_state;
-- yy_last_accepting_cpos = yy_cp;
-+ (yy_last_accepting_state) = yy_current_state;
-+ (yy_last_accepting_cpos) = yy_cp;
- }
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
-@@ -1103,80 +1168,73 @@
- yy_is_jam = (yy_current_state == 69);
-
- return yy_is_jam ? 0 : yy_current_state;
-- }
--
-+}
-
--#ifndef YY_NO_UNPUT
--#ifdef YY_USE_PROTOS
--static void yyunput( int c, register char *yy_bp )
--#else
--static void yyunput( c, yy_bp )
--int c;
--register char *yy_bp;
--#endif
-- {
-- register char *yy_cp = yy_c_buf_p;
-+ static void yyunput (int c, register char * yy_bp )
-+{
-+ register char *yy_cp;
-+
-+ yy_cp = (yy_c_buf_p);
-
- /* undo effects of setting up yytext */
-- *yy_cp = yy_hold_char;
-+ *yy_cp = (yy_hold_char);
-
-- if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
- { /* need to shift things up to make room */
- /* +2 for EOB chars. */
-- register int number_to_move = yy_n_chars + 2;
-- register char *dest = &yy_current_buffer->yy_ch_buf[
-- yy_current_buffer->yy_buf_size + 2];
-+ register int number_to_move = (yy_n_chars) + 2;
-+ register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
-+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
- register char *source =
-- &yy_current_buffer->yy_ch_buf[number_to_move];
-+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
-
-- while ( source > yy_current_buffer->yy_ch_buf )
-+ while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
- *--dest = *--source;
-
- yy_cp += (int) (dest - source);
- yy_bp += (int) (dest - source);
-- yy_current_buffer->yy_n_chars =
-- yy_n_chars = yy_current_buffer->yy_buf_size;
-+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-
-- if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
- YY_FATAL_ERROR( "flex scanner push-back overflow" );
- }
-
- *--yy_cp = (char) c;
-
-+ (yytext_ptr) = yy_bp;
-+ (yy_hold_char) = *yy_cp;
-+ (yy_c_buf_p) = yy_cp;
-+}
-
-- yytext_ptr = yy_bp;
-- yy_hold_char = *yy_cp;
-- yy_c_buf_p = yy_cp;
-- }
--#endif /* ifndef YY_NO_UNPUT */
--
--
-+#ifndef YY_NO_INPUT
- #ifdef __cplusplus
--static int yyinput()
-+ static int yyinput (void)
- #else
--static int input()
-+ static int input (void)
- #endif
-- {
-- int c;
-
-- *yy_c_buf_p = yy_hold_char;
-+{
-+ int c;
-+
-+ *(yy_c_buf_p) = (yy_hold_char);
-
-- if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
-+ if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
- {
- /* yy_c_buf_p now points to the character we want to return.
- * If this occurs *before* the EOB characters, then it's a
- * valid NUL; if not, then we've hit the end of the buffer.
- */
-- if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-+ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
- /* This was really a NUL. */
-- *yy_c_buf_p = '\0';
-+ *(yy_c_buf_p) = '\0';
-
- else
- { /* need more input */
-- int offset = yy_c_buf_p - yytext_ptr;
-- ++yy_c_buf_p;
-+ int offset = (yy_c_buf_p) - (yytext_ptr);
-+ ++(yy_c_buf_p);
-
-- switch ( yy_get_next_buffer() )
-+ switch ( yy_get_next_buffer( ) )
- {
- case EOB_ACT_LAST_MATCH:
- /* This happens because yy_g_n_b()
-@@ -1190,16 +1248,16 @@
- */
-
- /* Reset buffer status. */
-- yyrestart( yyin );
-+ yyrestart(yyin );
-
-- /* fall through */
-+ /*FALLTHROUGH*/
-
- case EOB_ACT_END_OF_FILE:
- {
-- if ( yywrap() )
-+ if ( yywrap( ) )
- return EOF;
-
-- if ( ! yy_did_buffer_switch_on_eof )
-+ if ( ! (yy_did_buffer_switch_on_eof) )
- YY_NEW_FILE;
- #ifdef __cplusplus
- return yyinput();
-@@ -1209,90 +1267,92 @@
- }
-
- case EOB_ACT_CONTINUE_SCAN:
-- yy_c_buf_p = yytext_ptr + offset;
-+ (yy_c_buf_p) = (yytext_ptr) + offset;
- break;
- }
- }
- }
-
-- c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
-- *yy_c_buf_p = '\0'; /* preserve yytext */
-- yy_hold_char = *++yy_c_buf_p;
--
-+ c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
-+ *(yy_c_buf_p) = '\0'; /* preserve yytext */
-+ (yy_hold_char) = *++(yy_c_buf_p);
-
- return c;
-- }
--
--
--#ifdef YY_USE_PROTOS
--void yyrestart( FILE *input_file )
--#else
--void yyrestart( input_file )
--FILE *input_file;
--#endif
-- {
-- if ( ! yy_current_buffer )
-- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
-+}
-+#endif /* ifndef YY_NO_INPUT */
-
-- yy_init_buffer( yy_current_buffer, input_file );
-- yy_load_buffer_state();
-+/** Immediately switch to a different input stream.
-+ * @param input_file A readable stream.
-+ *
-+ * @note This function does not reset the start condition to @c INITIAL .
-+ */
-+ void yyrestart (FILE * input_file )
-+{
-+
-+ if ( ! YY_CURRENT_BUFFER ){
-+ yyensure_buffer_stack ();
-+ YY_CURRENT_BUFFER_LVALUE =
-+ yy_create_buffer(yyin,YY_BUF_SIZE );
- }
-
-+ yy_init_buffer(YY_CURRENT_BUFFER,input_file );
-+ yy_load_buffer_state( );
-+}
-
--#ifdef YY_USE_PROTOS
--void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
--#else
--void yy_switch_to_buffer( new_buffer )
--YY_BUFFER_STATE new_buffer;
--#endif
-- {
-- if ( yy_current_buffer == new_buffer )
-+/** Switch to a different input buffer.
-+ * @param new_buffer The new input buffer.
-+ *
-+ */
-+ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
-+{
-+
-+ /* TODO. We should be able to replace this entire function body
-+ * with
-+ * yypop_buffer_state();
-+ * yypush_buffer_state(new_buffer);
-+ */
-+ yyensure_buffer_stack ();
-+ if ( YY_CURRENT_BUFFER == new_buffer )
- return;
-
-- if ( yy_current_buffer )
-+ if ( YY_CURRENT_BUFFER )
- {
- /* Flush out information for old buffer. */
-- *yy_c_buf_p = yy_hold_char;
-- yy_current_buffer->yy_buf_pos = yy_c_buf_p;
-- yy_current_buffer->yy_n_chars = yy_n_chars;
-+ *(yy_c_buf_p) = (yy_hold_char);
-+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
- }
-
-- yy_current_buffer = new_buffer;
-- yy_load_buffer_state();
-+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
-+ yy_load_buffer_state( );
-
- /* We don't actually know whether we did this switch during
- * EOF (yywrap()) processing, but the only time this flag
- * is looked at is after yywrap() is called, so it's safe
- * to go ahead and always set it.
- */
-- yy_did_buffer_switch_on_eof = 1;
-- }
--
--
--#ifdef YY_USE_PROTOS
--void yy_load_buffer_state( void )
--#else
--void yy_load_buffer_state()
--#endif
-- {
-- yy_n_chars = yy_current_buffer->yy_n_chars;
-- yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
-- yyin = yy_current_buffer->yy_input_file;
-- yy_hold_char = *yy_c_buf_p;
-- }
-+ (yy_did_buffer_switch_on_eof) = 1;
-+}
-
-+static void yy_load_buffer_state (void)
-+{
-+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-+ yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-+ (yy_hold_char) = *(yy_c_buf_p);
-+}
-
--#ifdef YY_USE_PROTOS
--YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
--#else
--YY_BUFFER_STATE yy_create_buffer( file, size )
--FILE *file;
--int size;
--#endif
-- {
-+/** Allocate and initialize an input buffer state.
-+ * @param file A readable stream.
-+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
-+ *
-+ * @return the allocated buffer state.
-+ */
-+ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
-+{
- YY_BUFFER_STATE b;
--
-- b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-+
-+ b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-@@ -1301,75 +1361,75 @@
- /* yy_ch_buf has to be 2 characters longer than the size given because
- * we need to put in 2 end-of-buffer characters.
- */
-- b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
-+ b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
- if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
- b->yy_is_our_buffer = 1;
-
-- yy_init_buffer( b, file );
-+ yy_init_buffer(b,file );
-
- return b;
-- }
--
-+}
-
--#ifdef YY_USE_PROTOS
--void yy_delete_buffer( YY_BUFFER_STATE b )
--#else
--void yy_delete_buffer( b )
--YY_BUFFER_STATE b;
--#endif
-- {
-+/** Destroy the buffer.
-+ * @param b a buffer created with yy_create_buffer()
-+ *
-+ */
-+ void yy_delete_buffer (YY_BUFFER_STATE b )
-+{
-+
- if ( ! b )
- return;
-
-- if ( b == yy_current_buffer )
-- yy_current_buffer = (YY_BUFFER_STATE) 0;
-+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
-+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
- if ( b->yy_is_our_buffer )
-- yy_flex_free( (void *) b->yy_ch_buf );
-+ yyfree((void *) b->yy_ch_buf );
-
-- yy_flex_free( (void *) b );
-- }
--
--
--
--#ifdef YY_USE_PROTOS
--void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
--#else
--void yy_init_buffer( b, file )
--YY_BUFFER_STATE b;
--FILE *file;
--#endif
-+ yyfree((void *) b );
-+}
-
-+#ifndef __cplusplus
-+extern int isatty (int );
-+#endif /* __cplusplus */
-+
-+/* Initializes or reinitializes a buffer.
-+ * This function is sometimes called more than once on the same buffer,
-+ * such as during a yyrestart() or at EOF.
-+ */
-+ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
-
-- {
-- yy_flush_buffer( b );
-+{
-+ int oerrno = errno;
-+
-+ yy_flush_buffer(b );
-
- b->yy_input_file = file;
- b->yy_fill_buffer = 1;
-
--#if YY_ALWAYS_INTERACTIVE
-- b->yy_is_interactive = 1;
--#else
--#if YY_NEVER_INTERACTIVE
-- b->yy_is_interactive = 0;
--#else
-- b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
--#endif
--#endif
-- }
--
-+ /* If b is the current buffer, then yy_init_buffer was _probably_
-+ * called from yyrestart() or through yy_get_next_buffer.
-+ * In that case, we don't want to reset the lineno or column.
-+ */
-+ if (b != YY_CURRENT_BUFFER){
-+ b->yy_bs_lineno = 1;
-+ b->yy_bs_column = 0;
-+ }
-
--#ifdef YY_USE_PROTOS
--void yy_flush_buffer( YY_BUFFER_STATE b )
--#else
--void yy_flush_buffer( b )
--YY_BUFFER_STATE b;
--#endif
-+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-+
-+ errno = oerrno;
-+}
-
-- {
-- if ( ! b )
-+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
-+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
-+ *
-+ */
-+ void yy_flush_buffer (YY_BUFFER_STATE b )
-+{
-+ if ( ! b )
- return;
-
- b->yy_n_chars = 0;
-@@ -1386,29 +1446,121 @@
- b->yy_at_bol = 1;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
-- if ( b == yy_current_buffer )
-- yy_load_buffer_state();
-+ if ( b == YY_CURRENT_BUFFER )
-+ yy_load_buffer_state( );
-+}
-+
-+/** Pushes the new state onto the stack. The new state becomes
-+ * the current state. This function will allocate the stack
-+ * if necessary.
-+ * @param new_buffer The new state.
-+ *
-+ */
-+void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
-+{
-+ if (new_buffer == NULL)
-+ return;
-+
-+ yyensure_buffer_stack();
-+
-+ /* This block is copied from yy_switch_to_buffer. */
-+ if ( YY_CURRENT_BUFFER )
-+ {
-+ /* Flush out information for old buffer. */
-+ *(yy_c_buf_p) = (yy_hold_char);
-+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-+ }
-+
-+ /* Only push if top exists. Otherwise, replace top. */
-+ if (YY_CURRENT_BUFFER)
-+ (yy_buffer_stack_top)++;
-+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
-+
-+ /* copied from yy_switch_to_buffer. */
-+ yy_load_buffer_state( );
-+ (yy_did_buffer_switch_on_eof) = 1;
-+}
-+
-+/** Removes and deletes the top of the stack, if present.
-+ * The next element becomes the new top.
-+ *
-+ */
-+void yypop_buffer_state (void)
-+{
-+ if (!YY_CURRENT_BUFFER)
-+ return;
-+
-+ yy_delete_buffer(YY_CURRENT_BUFFER );
-+ YY_CURRENT_BUFFER_LVALUE = NULL;
-+ if ((yy_buffer_stack_top) > 0)
-+ --(yy_buffer_stack_top);
-+
-+ if (YY_CURRENT_BUFFER) {
-+ yy_load_buffer_state( );
-+ (yy_did_buffer_switch_on_eof) = 1;
- }
-+}
-
-+/* Allocates the stack if it does not exist.
-+ * Guarantees space for at least one push.
-+ */
-+static void yyensure_buffer_stack (void)
-+{
-+ int num_to_alloc;
-+
-+ if (!(yy_buffer_stack)) {
-+
-+ /* First allocation is just for 2 elements, since we don't know if this
-+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
-+ * immediate realloc on the next call.
-+ */
-+ num_to_alloc = 1;
-+ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
-+ (num_to_alloc * sizeof(struct yy_buffer_state*)
-+ );
-+
-+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-+
-+ (yy_buffer_stack_max) = num_to_alloc;
-+ (yy_buffer_stack_top) = 0;
-+ return;
-+ }
-
--#ifndef YY_NO_SCAN_BUFFER
--#ifdef YY_USE_PROTOS
--YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
--#else
--YY_BUFFER_STATE yy_scan_buffer( base, size )
--char *base;
--yy_size_t size;
--#endif
-- {
-- YY_BUFFER_STATE b;
-+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-+
-+ /* Increase the buffer to prepare for a possible push. */
-+ int grow_size = 8 /* arbitrary grow size */;
-
-+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
-+ (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
-+ ((yy_buffer_stack),
-+ num_to_alloc * sizeof(struct yy_buffer_state*)
-+ );
-+
-+ /* zero only the new slots.*/
-+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
-+ (yy_buffer_stack_max) = num_to_alloc;
-+ }
-+}
-+
-+/** Setup the input buffer state to scan directly from a user-specified character buffer.
-+ * @param base the character buffer
-+ * @param size the size in bytes of the character buffer
-+ *
-+ * @return the newly allocated buffer state object.
-+ */
-+YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
-+{
-+ YY_BUFFER_STATE b;
-+
- if ( size < 2 ||
- base[size-2] != YY_END_OF_BUFFER_CHAR ||
- base[size-1] != YY_END_OF_BUFFER_CHAR )
- /* They forgot to leave room for the EOB's. */
- return 0;
-
-- b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-+ b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
-@@ -1422,47 +1574,42 @@
- b->yy_fill_buffer = 0;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
-- yy_switch_to_buffer( b );
-+ yy_switch_to_buffer(b );
-
- return b;
-- }
--#endif
--
--
--#ifndef YY_NO_SCAN_STRING
--#ifdef YY_USE_PROTOS
--YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
--#else
--YY_BUFFER_STATE yy_scan_string( yy_str )
--yyconst char *yy_str;
--#endif
-- {
-- int len;
-- for ( len = 0; yy_str[len]; ++len )
-- ;
--
-- return yy_scan_bytes( yy_str, len );
-- }
--#endif
-+}
-
-+/** Setup the input buffer state to scan a string. The next call to yylex() will
-+ * scan from a @e copy of @a str.
-+ * @param str a NUL-terminated string to scan
-+ *
-+ * @return the newly allocated buffer state object.
-+ * @note If you want to scan bytes that may contain NUL values, then use
-+ * yy_scan_bytes() instead.
-+ */
-+YY_BUFFER_STATE yy_scan_string (yyconst char * yy_str )
-+{
-+
-+ return yy_scan_bytes(yy_str,strlen(yy_str) );
-+}
-
--#ifndef YY_NO_SCAN_BYTES
--#ifdef YY_USE_PROTOS
--YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
--#else
--YY_BUFFER_STATE yy_scan_bytes( bytes, len )
--yyconst char *bytes;
--int len;
--#endif
-- {
-+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
-+ * scan from a @e copy of @a bytes.
-+ * @param bytes the byte buffer to scan
-+ * @param len the number of bytes in the buffer pointed to by @a bytes.
-+ *
-+ * @return the newly allocated buffer state object.
-+ */
-+YY_BUFFER_STATE yy_scan_bytes (yyconst char * bytes, int len )
-+{
- YY_BUFFER_STATE b;
- char *buf;
- yy_size_t n;
- int i;
--
-+
- /* Get memory for full buffer, including space for trailing EOB's. */
- n = len + 2;
-- buf = (char *) yy_flex_alloc( n );
-+ buf = (char *) yyalloc(n );
- if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
-@@ -1471,7 +1618,7 @@
-
- buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
-
-- b = yy_scan_buffer( buf, n );
-+ b = yy_scan_buffer(buf,n );
- if ( ! b )
- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
-@@ -1481,148 +1628,164 @@
- b->yy_is_our_buffer = 1;
-
- return b;
-- }
--#endif
--
-+}
-
--#ifndef YY_NO_PUSH_STATE
--#ifdef YY_USE_PROTOS
--static void yy_push_state( int new_state )
--#else
--static void yy_push_state( new_state )
--int new_state;
-+#ifndef YY_EXIT_FAILURE
-+#define YY_EXIT_FAILURE 2
- #endif
-- {
-- if ( yy_start_stack_ptr >= yy_start_stack_depth )
-- {
-- yy_size_t new_size;
-
-- yy_start_stack_depth += YY_START_STACK_INCR;
-- new_size = yy_start_stack_depth * sizeof( int );
-+static void yy_fatal_error (yyconst char* msg )
-+{
-+ (void) fprintf( stderr, "%s\n", msg );
-+ exit( YY_EXIT_FAILURE );
-+}
-
-- if ( ! yy_start_stack )
-- yy_start_stack = (int *) yy_flex_alloc( new_size );
-+/* Redefine yyless() so it works in section 3 code. */
-
-- else
-- yy_start_stack = (int *) yy_flex_realloc(
-- (void *) yy_start_stack, new_size );
-+#undef yyless
-+#define yyless(n) \
-+ do \
-+ { \
-+ /* Undo effects of setting up yytext. */ \
-+ int yyless_macro_arg = (n); \
-+ YY_LESS_LINENO(yyless_macro_arg);\
-+ yytext[yyleng] = (yy_hold_char); \
-+ (yy_c_buf_p) = yytext + yyless_macro_arg; \
-+ (yy_hold_char) = *(yy_c_buf_p); \
-+ *(yy_c_buf_p) = '\0'; \
-+ yyleng = yyless_macro_arg; \
-+ } \
-+ while ( 0 )
-
-- if ( ! yy_start_stack )
-- YY_FATAL_ERROR(
-- "out of memory expanding start-condition stack" );
-- }
-+/* Accessor methods (get/set functions) to struct members. */
-
-- yy_start_stack[yy_start_stack_ptr++] = YY_START;
-+/** Get the current line number.
-+ *
-+ */
-+int yyget_lineno (void)
-+{
-+
-+ return yylineno;
-+}
-
-- BEGIN(new_state);
-- }
--#endif
-+/** Get the input stream.
-+ *
-+ */
-+FILE *yyget_in (void)
-+{
-+ return yyin;
-+}
-
-+/** Get the output stream.
-+ *
-+ */
-+FILE *yyget_out (void)
-+{
-+ return yyout;
-+}
-
--#ifndef YY_NO_POP_STATE
--static void yy_pop_state()
-- {
-- if ( --yy_start_stack_ptr < 0 )
-- YY_FATAL_ERROR( "start-condition stack underflow" );
-+/** Get the length of the current token.
-+ *
-+ */
-+int yyget_leng (void)
-+{
-+ return yyleng;
-+}
-
-- BEGIN(yy_start_stack[yy_start_stack_ptr]);
-- }
--#endif
-+/** Get the current token.
-+ *
-+ */
-
-+char *yyget_text (void)
-+{
-+ return yytext;
-+}
-
--#ifndef YY_NO_TOP_STATE
--static int yy_top_state()
-- {
-- return yy_start_stack[yy_start_stack_ptr - 1];
-- }
--#endif
-+/** Set the current line number.
-+ * @param line_number
-+ *
-+ */
-+void yyset_lineno (int line_number )
-+{
-+
-+ yylineno = line_number;
-+}
-
--#ifndef YY_EXIT_FAILURE
--#define YY_EXIT_FAILURE 2
--#endif
-+/** Set the input stream. This does not discard the current
-+ * input buffer.
-+ * @param in_str A readable stream.
-+ *
-+ * @see yy_switch_to_buffer
-+ */
-+void yyset_in (FILE * in_str )
-+{
-+ yyin = in_str ;
-+}
-
--#ifdef YY_USE_PROTOS
--static void yy_fatal_error( yyconst char msg[] )
--#else
--static void yy_fatal_error( msg )
--char msg[];
--#endif
-- {
-- (void) fprintf( stderr, "%s\n", msg );
-- exit( YY_EXIT_FAILURE );
-- }
-+void yyset_out (FILE * out_str )
-+{
-+ yyout = out_str ;
-+}
-
-+int yyget_debug (void)
-+{
-+ return yy_flex_debug;
-+}
-
-+void yyset_debug (int bdebug )
-+{
-+ yy_flex_debug = bdebug ;
-+}
-
--/* Redefine yyless() so it works in section 3 code. */
-+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
-+int yylex_destroy (void)
-+{
-+
-+ /* Pop the buffer stack, destroying each element. */
-+ while(YY_CURRENT_BUFFER){
-+ yy_delete_buffer(YY_CURRENT_BUFFER );
-+ YY_CURRENT_BUFFER_LVALUE = NULL;
-+ yypop_buffer_state();
-+ }
-
--#undef yyless
--#define yyless(n) \
-- do \
-- { \
-- /* Undo effects of setting up yytext. */ \
-- yytext[yyleng] = yy_hold_char; \
-- yy_c_buf_p = yytext + n; \
-- yy_hold_char = *yy_c_buf_p; \
-- *yy_c_buf_p = '\0'; \
-- yyleng = n; \
-- } \
-- while ( 0 )
-+ /* Destroy the stack itself. */
-+ yyfree((yy_buffer_stack) );
-+ (yy_buffer_stack) = NULL;
-
-+ return 0;
-+}
-
--/* Internal utility routines. */
-+/*
-+ * Internal utility routines.
-+ */
-
- #ifndef yytext_ptr
--#ifdef YY_USE_PROTOS
--static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
--#else
--static void yy_flex_strncpy( s1, s2, n )
--char *s1;
--yyconst char *s2;
--int n;
--#endif
-- {
-+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
-+{
- register int i;
-- for ( i = 0; i < n; ++i )
-+ for ( i = 0; i < n; ++i )
- s1[i] = s2[i];
-- }
-+}
- #endif
-
- #ifdef YY_NEED_STRLEN
--#ifdef YY_USE_PROTOS
--static int yy_flex_strlen( yyconst char *s )
--#else
--static int yy_flex_strlen( s )
--yyconst char *s;
--#endif
-- {
-+static int yy_flex_strlen (yyconst char * s )
-+{
- register int n;
-- for ( n = 0; s[n]; ++n )
-+ for ( n = 0; s[n]; ++n )
- ;
-
- return n;
-- }
-+}
- #endif
-
--
--#ifdef YY_USE_PROTOS
--static void *yy_flex_alloc( yy_size_t size )
--#else
--static void *yy_flex_alloc( size )
--yy_size_t size;
--#endif
-- {
-+void *yyalloc (yy_size_t size )
-+{
- return (void *) malloc( size );
-- }
-+}
-
--#ifdef YY_USE_PROTOS
--static void *yy_flex_realloc( void *ptr, yy_size_t size )
--#else
--static void *yy_flex_realloc( ptr, size )
--void *ptr;
--yy_size_t size;
--#endif
-- {
-+void *yyrealloc (void * ptr, yy_size_t size )
-+{
- /* The cast to (char *) in the following accommodates both
- * implementations that use char* generic pointers, and those
- * that use void* generic pointers. It works with the latter
-@@ -1631,30 +1794,34 @@
- * as though doing an assignment.
- */
- return (void *) realloc( (char *) ptr, size );
-- }
-+}
-
--#ifdef YY_USE_PROTOS
--static void yy_flex_free( void *ptr )
--#else
--static void yy_flex_free( ptr )
--void *ptr;
--#endif
-- {
-- free( ptr );
-- }
-+void yyfree (void * ptr )
-+{
-+ free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
-+}
-
--#if YY_MAIN
--int main()
-- {
-- yylex();
-- return 0;
-- }
-+#define YYTABLES_NAME "yytables"
-+
-+#undef YY_NEW_FILE
-+#undef YY_FLUSH_BUFFER
-+#undef yy_set_bol
-+#undef yy_new_buffer
-+#undef yy_set_interactive
-+#undef yytext_ptr
-+#undef YY_DO_BEFORE_ACTION
-+
-+#ifdef YY_DECL_IS_OURS
-+#undef YY_DECL_IS_OURS
-+#undef YY_DECL
- #endif
- #line 69 "ql_l.l"
-
-
--void yyerror(char *s)
-+
-+void yyerror(const char *s)
- {
- fprintf(stderr,"line %d: %s near \"%s\"\n",lineno,s,yytext);
- exit(1);
- }
-+
---- linux-atm-2.4.1.orig/src/qgen/ql_y.c
-+++ linux-atm-2.4.1/src/qgen/ql_y.c
-@@ -1,21 +1,87 @@
-+/* A Bison parser, made by GNU Bison 1.875d. */
-
--/* A Bison parser, made from ql_y.y
-- by GNU Bison version 1.28 */
-+/* Skeleton parser for Yacc-like parsing with Bison,
-+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-
--#define YYBISON 1 /* Identify Bison output. */
-+ 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.
-
--#define TOK_BREAK 257
--#define TOK_CASE 258
--#define TOK_DEF 259
--#define TOK_DEFAULT 260
--#define TOK_LENGTH 261
--#define TOK_MULTI 262
--#define TOK_RECOVER 263
--#define TOK_ABORT 264
--#define TOK_ID 265
--#define TOK_INCLUDE 266
--#define TOK_STRING 267
-+ 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. */
-+
-+/* As a special exception, when this file is copied by Bison into a
-+ Bison output file, you may use that output file without restriction.
-+ This special exception was added by the Free Software Foundation
-+ in version 1.24 of Bison. */
-+
-+/* Written by Richard Stallman by simplifying the original so called
-+ ``semantic'' parser. */
-+
-+/* All symbols defined below should begin with yy or YY, to avoid
-+ infringing on user name space. This should be done even for local
-+ variables, as they might otherwise be expanded by user macros.
-+ There are some unavoidable exceptions within include files to
-+ define necessary library symbols; they are noted "INFRINGES ON
-+ USER NAME SPACE" below. */
-+
-+/* Identify Bison output. */
-+#define YYBISON 1
-+
-+/* Skeleton name. */
-+#define YYSKELETON_NAME "yacc.c"
-+
-+/* Pure parsers. */
-+#define YYPURE 0
-+
-+/* Using locations. */
-+#define YYLSP_NEEDED 0
-+
-+
-+
-+/* Tokens. */
-+#ifndef YYTOKENTYPE
-+# define YYTOKENTYPE
-+ /* Put the tokens into the symbol table, so that GDB and other debuggers
-+ know about them. */
-+ enum yytokentype {
-+ TOK_BREAK = 258,
-+ TOK_CASE = 259,
-+ TOK_DEF = 260,
-+ TOK_DEFAULT = 261,
-+ TOK_LENGTH = 262,
-+ TOK_MULTI = 263,
-+ TOK_RECOVER = 264,
-+ TOK_ABORT = 265,
-+ TOK_ID = 266,
-+ TOK_INCLUDE = 267,
-+ TOK_STRING = 268
-+ };
-+#endif
-+#define TOK_BREAK 258
-+#define TOK_CASE 259
-+#define TOK_DEF 260
-+#define TOK_DEFAULT 261
-+#define TOK_LENGTH 262
-+#define TOK_MULTI 263
-+#define TOK_RECOVER 264
-+#define TOK_ABORT 265
-+#define TOK_ID 266
-+#define TOK_INCLUDE 267
-+#define TOK_STRING 268
-+
-+
-+
-+
-+/* Copy the first part of user declarations. */
- #line 1 "ql_y.y"
-
- /* ql.y - Q.2931 data structures description language */
-@@ -36,6 +102,8 @@
- #include "qgen.h"
- #include "file.h"
-
-+extern void yyerror(const char *s);
-+
-
- #define MAX_TOKEN 256
- #define DEFAULT_NAMELIST_FILE "default.nl"
-@@ -77,9 +145,10 @@
- for (walk = strchr(start,0)-1; walk > start && isspace(*walk); walk--)
- *walk = 0;
- if (*start == ':') {
-- if (!(searching = strcmp(start+1,name)))
-+ if (!(searching = strcmp(start+1,name))) {
- if (found) yyerror("multiple entries");
- else found = 1;
-+ }
- continue;
- }
- if (searching) continue;
-@@ -154,8 +223,23 @@
-
-
-
--#line 139 "ql_y.y"
--typedef union {
-+
-+/* Enabling traces. */
-+#ifndef YYDEBUG
-+# define YYDEBUG 0
-+#endif
-+
-+/* Enabling verbose error messages. */
-+#ifdef YYERROR_VERBOSE
-+# undef YYERROR_VERBOSE
-+# define YYERROR_VERBOSE 1
-+#else
-+# define YYERROR_VERBOSE 0
-+#endif
-+
-+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#line 142 "ql_y.y"
-+typedef union YYSTYPE {
- const char *str;
- int num;
- FIELD *field;
-@@ -164,470 +248,762 @@
- TAG *tag;
- NAME_LIST *nlist;
- } YYSTYPE;
--#include <stdio.h>
-+/* Line 191 of yacc.c. */
-+#line 253 "y.tab.c"
-+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-+# define YYSTYPE_IS_DECLARED 1
-+# define YYSTYPE_IS_TRIVIAL 1
-+#endif
-+
-+
-+
-+/* Copy the second part of user declarations. */
-+
-+
-+/* Line 214 of yacc.c. */
-+#line 265 "y.tab.c"
-+
-+#if ! defined (yyoverflow) || YYERROR_VERBOSE
-+
-+# ifndef YYFREE
-+# define YYFREE free
-+# endif
-+# ifndef YYMALLOC
-+# define YYMALLOC malloc
-+# endif
-+
-+/* The parser invokes alloca or malloc; define the necessary symbols. */
-+
-+# ifdef YYSTACK_USE_ALLOCA
-+# if YYSTACK_USE_ALLOCA
-+# define YYSTACK_ALLOC alloca
-+# endif
-+# else
-+# if defined (alloca) || defined (_ALLOCA_H)
-+# define YYSTACK_ALLOC alloca
-+# else
-+# ifdef __GNUC__
-+# define YYSTACK_ALLOC __builtin_alloca
-+# endif
-+# endif
-+# endif
-+
-+# ifdef YYSTACK_ALLOC
-+ /* Pacify GCC's `empty if-body' warning. */
-+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-+# else
-+# if defined (__STDC__) || defined (__cplusplus)
-+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+# define YYSIZE_T size_t
-+# endif
-+# define YYSTACK_ALLOC YYMALLOC
-+# define YYSTACK_FREE YYFREE
-+# endif
-+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-+
-+
-+#if (! defined (yyoverflow) \
-+ && (! defined (__cplusplus) \
-+ || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-+
-+/* A type that is properly aligned for any stack member. */
-+union yyalloc
-+{
-+ short int yyss;
-+ YYSTYPE yyvs;
-+ };
-+
-+/* The size of the maximum gap between one aligned stack and the next. */
-+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-+
-+/* The size of an array large to enough to hold all stacks, each with
-+ N elements. */
-+# define YYSTACK_BYTES(N) \
-+ ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
-+ + YYSTACK_GAP_MAXIMUM)
-+
-+/* Copy COUNT objects from FROM to TO. The source and destination do
-+ not overlap. */
-+# ifndef YYCOPY
-+# if defined (__GNUC__) && 1 < __GNUC__
-+# define YYCOPY(To, From, Count) \
-+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-+# else
-+# define YYCOPY(To, From, Count) \
-+ do \
-+ { \
-+ register YYSIZE_T yyi; \
-+ for (yyi = 0; yyi < (Count); yyi++) \
-+ (To)[yyi] = (From)[yyi]; \
-+ } \
-+ while (0)
-+# endif
-+# endif
-+
-+/* Relocate STACK from its old location to the new one. The
-+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
-+ elements in the stack, and YYPTR gives the new location of the
-+ stack. Advance YYPTR to a properly aligned location for the next
-+ stack. */
-+# define YYSTACK_RELOCATE(Stack) \
-+ do \
-+ { \
-+ YYSIZE_T yynewbytes; \
-+ YYCOPY (&yyptr->Stack, Stack, yysize); \
-+ Stack = &yyptr->Stack; \
-+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-+ yyptr += yynewbytes / sizeof (*yyptr); \
-+ } \
-+ while (0)
-
--#ifndef __cplusplus
--#ifndef __STDC__
--#define const
--#endif
- #endif
-
-+#if defined (__STDC__) || defined (__cplusplus)
-+ typedef signed char yysigned_char;
-+#else
-+ typedef short int yysigned_char;
-+#endif
-
--
--#define YYFINAL 86
--#define YYFLAG -32768
--#define YYNTBASE 23
--
--#define YYTRANSLATE(x) ((unsigned)(x) <= 267 ? yytranslate[x] : 47)
--
--static const char yytranslate[] = { 0,
-- 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, 21, 18, 2, 2, 2, 2, 2,
-- 2, 2, 2, 2, 2, 2, 2, 22, 2, 17,
-- 14, 19, 2, 20, 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, 15, 2, 16, 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, 2, 2, 2, 2, 1, 3, 4, 5, 6,
-- 7, 8, 9, 10, 11, 12, 13
-+/* YYFINAL -- State number of the termination state. */
-+#define YYFINAL 5
-+/* YYLAST -- Last index in YYTABLE. */
-+#define YYLAST 65
-+
-+/* YYNTOKENS -- Number of terminals. */
-+#define YYNTOKENS 23
-+/* YYNNTS -- Number of nonterminals. */
-+#define YYNNTS 25
-+/* YYNRULES -- Number of rules. */
-+#define YYNRULES 46
-+/* YYNRULES -- Number of states. */
-+#define YYNSTATES 86
-+
-+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
-+#define YYUNDEFTOK 2
-+#define YYMAXUTOK 268
-+
-+#define YYTRANSLATE(YYX) \
-+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-+
-+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
-+static const unsigned char yytranslate[] =
-+{
-+ 0, 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, 21, 18, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 22, 2,
-+ 17, 14, 19, 2, 20, 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, 15, 2, 16, 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, 2, 2, 2, 2, 1, 2, 3, 4,
-+ 5, 6, 7, 8, 9, 10, 11, 12, 13
- };
-
--#if YYDEBUG != 0
--static const short yyprhs[] = { 0,
-- 0, 4, 5, 8, 9, 12, 17, 18, 21, 23,
-- 27, 30, 31, 34, 40, 41, 43, 47, 53, 54,
-- 57, 59, 60, 63, 64, 67, 69, 74, 79, 83,
-- 84, 87, 88, 90, 91, 97, 98, 105, 106, 112,
-- 113, 120, 121, 124, 125
-+#if YYDEBUG
-+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-+ YYRHS. */
-+static const unsigned char yyprhs[] =
-+{
-+ 0, 0, 3, 7, 8, 11, 12, 15, 20, 21,
-+ 24, 26, 30, 33, 34, 37, 43, 44, 46, 50,
-+ 56, 57, 60, 62, 63, 66, 67, 70, 72, 77,
-+ 82, 86, 87, 90, 91, 93, 94, 100, 101, 108,
-+ 109, 115, 116, 123, 124, 127, 128
- };
-
--static const short yyrhs[] = { 24,
-- 25, 29, 0, 0, 12, 24, 0, 0, 25, 26,
-- 0, 5, 11, 14, 29, 0, 0, 28, 29, 0,
-- 11, 0, 15, 30, 16, 0, 10, 11, 0, 0,
-- 31, 30, 0, 32, 11, 40, 17, 33, 0, 0,
-- 3, 0, 18, 35, 19, 0, 35, 34, 36, 19,
-- 37, 0, 0, 20, 35, 0, 11, 0, 0, 21,
-- 11, 0, 0, 14, 38, 0, 11, 0, 4, 15,
-- 41, 16, 0, 8, 15, 43, 16, 0, 39, 7,
-- 29, 0, 0, 9, 11, 0, 0, 13, 0, 0,
-- 6, 11, 45, 46, 29, 0, 0, 11, 45, 46,
-- 29, 42, 41, 0, 0, 6, 11, 45, 46, 27,
-- 0, 0, 11, 45, 46, 27, 44, 43, 0, 0,
-- 22, 11, 0, 0, 21, 11, 46, 0
-+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-+static const yysigned_char yyrhs[] =
-+{
-+ 24, 0, -1, 25, 26, 30, -1, -1, 12, 25,
-+ -1, -1, 26, 27, -1, 5, 11, 14, 30, -1,
-+ -1, 29, 30, -1, 11, -1, 15, 31, 16, -1,
-+ 10, 11, -1, -1, 32, 31, -1, 33, 11, 41,
-+ 17, 34, -1, -1, 3, -1, 18, 36, 19, -1,
-+ 36, 35, 37, 19, 38, -1, -1, 20, 36, -1,
-+ 11, -1, -1, 21, 11, -1, -1, 14, 39, -1,
-+ 11, -1, 4, 15, 42, 16, -1, 8, 15, 44,
-+ 16, -1, 40, 7, 30, -1, -1, 9, 11, -1,
-+ -1, 13, -1, -1, 6, 11, 46, 47, 30, -1,
-+ -1, 11, 46, 47, 30, 43, 42, -1, -1, 6,
-+ 11, 46, 47, 28, -1, -1, 11, 46, 47, 28,
-+ 45, 44, -1, -1, 22, 11, -1, -1, 21, 11,
-+ 47, -1
- };
-
--#endif
--
--#if YYDEBUG != 0
--static const short yyrline[] = { 0,
-- 163, 175, 176, 184, 185, 188, 202, 207, 212, 231,
-- 236, 243, 247, 254, 278, 282, 288, 301, 318, 322,
-- 329, 339, 343, 350, 354, 360, 367, 374, 380, 390,
-- 394, 400, 404, 410, 414, 431, 437, 454, 458, 474,
-- 480, 497, 501, 507, 511
-+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-+static const unsigned short int yyrline[] =
-+{
-+ 0, 167, 167, 178, 179, 187, 188, 192, 206, 206,
-+ 216, 234, 239, 247, 250, 258, 282, 285, 292, 304,
-+ 323, 326, 334, 344, 347, 355, 358, 365, 371, 378,
-+ 384, 395, 398, 405, 408, 415, 418, 436, 435, 459,
-+ 462, 479, 478, 502, 505, 512, 515
- };
- #endif
-
--
--#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
--
--static const char * const yytname[] = { "$","error","$undefined.","TOK_BREAK",
--"TOK_CASE","TOK_DEF","TOK_DEFAULT","TOK_LENGTH","TOK_MULTI","TOK_RECOVER","TOK_ABORT",
--"TOK_ID","TOK_INCLUDE","TOK_STRING","'='","'{'","'}'","'<'","'-'","'>'","'@'",
--"','","':'","all","includes","structures","structure","rep_block","@1","block",
--"fields","field","opt_break","field_cont","opt_pos","decimal","opt_more","opt_val",
--"value","opt_recover","opt_name_list","tags","@2","rep_tags","@3","opt_id","list", NULL
-+#if YYDEBUG || YYERROR_VERBOSE
-+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-+static const char *const yytname[] =
-+{
-+ "$end", "error", "$undefined", "TOK_BREAK", "TOK_CASE", "TOK_DEF",
-+ "TOK_DEFAULT", "TOK_LENGTH", "TOK_MULTI", "TOK_RECOVER", "TOK_ABORT",
-+ "TOK_ID", "TOK_INCLUDE", "TOK_STRING", "'='", "'{'", "'}'", "'<'", "'-'",
-+ "'>'", "'@'", "','", "':'", "$accept", "all", "includes", "structures",
-+ "structure", "rep_block", "@1", "block", "fields", "field", "opt_break",
-+ "field_cont", "opt_pos", "decimal", "opt_more", "opt_val", "value",
-+ "opt_recover", "opt_name_list", "tags", "@2", "rep_tags", "@3", "opt_id",
-+ "list", 0
- };
- #endif
-
--static const short yyr1[] = { 0,
-- 23, 24, 24, 25, 25, 26, 28, 27, 29, 29,
-- 29, 30, 30, 31, 32, 32, 33, 33, 34, 34,
-- 35, 36, 36, 37, 37, 38, 38, 38, 38, 39,
-- 39, 40, 40, 41, 41, 42, 41, 43, 43, 44,
-- 43, 45, 45, 46, 46
-+# ifdef YYPRINT
-+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-+ token YYLEX-NUM. */
-+static const unsigned short int yytoknum[] =
-+{
-+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
-+ 265, 266, 267, 268, 61, 123, 125, 60, 45, 62,
-+ 64, 44, 58
- };
-+# endif
-
--static const short yyr2[] = { 0,
-- 3, 0, 2, 0, 2, 4, 0, 2, 1, 3,
-- 2, 0, 2, 5, 0, 1, 3, 5, 0, 2,
-- 1, 0, 2, 0, 2, 1, 4, 4, 3, 0,
-- 2, 0, 1, 0, 5, 0, 6, 0, 5, 0,
-- 6, 0, 2, 0, 3
-+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-+static const unsigned char yyr1[] =
-+{
-+ 0, 23, 24, 25, 25, 26, 26, 27, 29, 28,
-+ 30, 30, 30, 31, 31, 32, 33, 33, 34, 34,
-+ 35, 35, 36, 37, 37, 38, 38, 39, 39, 39,
-+ 39, 40, 40, 41, 41, 42, 42, 43, 42, 44,
-+ 44, 45, 44, 46, 46, 47, 47
- };
-
--static const short yydefact[] = { 2,
-- 2, 4, 3, 0, 0, 0, 9, 12, 5, 1,
-- 0, 11, 16, 0, 12, 0, 0, 10, 13, 32,
-- 6, 33, 0, 0, 21, 0, 14, 19, 0, 0,
-- 22, 17, 20, 0, 0, 23, 24, 30, 18, 0,
-- 0, 0, 26, 25, 0, 34, 38, 31, 0, 0,
-- 42, 0, 0, 42, 0, 29, 42, 0, 44, 27,
-- 42, 44, 28, 44, 43, 0, 0, 44, 7, 0,
-- 44, 36, 7, 40, 0, 35, 45, 34, 39, 38,
-- 8, 37, 41, 0, 0, 0
-+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-+static const unsigned char yyr2[] =
-+{
-+ 0, 2, 3, 0, 2, 0, 2, 4, 0, 2,
-+ 1, 3, 2, 0, 2, 5, 0, 1, 3, 5,
-+ 0, 2, 1, 0, 2, 0, 2, 1, 4, 4,
-+ 3, 0, 2, 0, 1, 0, 5, 0, 6, 0,
-+ 5, 0, 6, 0, 2, 0, 3
- };
-
--static const short yydefgoto[] = { 84,
-- 2, 4, 9, 74, 75, 10, 14, 15, 16, 27,
-- 31, 28, 35, 39, 44, 45, 23, 52, 78, 55,
-- 80, 59, 67
-+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
-+ means the default is an error. */
-+static const unsigned char yydefact[] =
-+{
-+ 3, 3, 0, 5, 4, 1, 0, 0, 0, 10,
-+ 13, 6, 2, 0, 12, 17, 0, 13, 0, 0,
-+ 11, 14, 33, 7, 34, 0, 0, 22, 0, 15,
-+ 20, 0, 0, 23, 18, 21, 0, 0, 24, 25,
-+ 31, 19, 0, 0, 0, 27, 26, 0, 35, 39,
-+ 32, 0, 0, 43, 0, 0, 43, 0, 30, 43,
-+ 0, 45, 28, 43, 45, 29, 45, 44, 0, 0,
-+ 45, 8, 0, 45, 37, 8, 41, 0, 36, 46,
-+ 35, 40, 39, 9, 38, 42
- };
-
--static const short yypact[] = { -8,
-- -8,-32768,-32768, -4, 3, 17,-32768, -1,-32768,-32768,
-- 20,-32768,-32768, 21, -1, 22, 11,-32768,-32768, 23,
---32768,-32768, 24, -3,-32768, 27,-32768, 15, 25, 27,
-- 26,-32768,-32768, 28, 29,-32768, 31, 9,-32768, 34,
-- 36, 32,-32768,-32768, 33, 18, 19,-32768, 11, 35,
-- 30, 38, 44, 30, 40,-32768, 30, 46, 39,-32768,
-- 30, 39,-32768, 39,-32768, 48, 11, 39,-32768, 11,
-- 39,-32768,-32768,-32768, 11,-32768,-32768, 18,-32768, 19,
---32768,-32768,-32768, 42, 61,-32768
-+/* YYDEFGOTO[NTERM-NUM]. */
-+static const yysigned_char yydefgoto[] =
-+{
-+ -1, 2, 3, 6, 11, 76, 77, 12, 16, 17,
-+ 18, 29, 33, 30, 37, 41, 46, 47, 25, 54,
-+ 80, 57, 82, 61, 69
- };
-
--static const short yypgoto[] = {-32768,
-- 62,-32768,-32768, -11,-32768, -17, 49,-32768,-32768,-32768,
---32768, 1,-32768,-32768,-32768,-32768,-32768, -13,-32768, -14,
---32768, -38, -59
-+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-+ STATE-NUM. */
-+#define YYPACT_NINF -62
-+static const yysigned_char yypact[] =
-+{
-+ -8, -8, 14, -62, -62, -62, -4, 16, 17, -62,
-+ -1, -62, -62, 20, -62, -62, 21, -1, 22, 11,
-+ -62, -62, 23, -62, -62, 24, -3, -62, 27, -62,
-+ 25, 28, 27, 30, -62, -62, 29, 33, -62, 32,
-+ 9, -62, 34, 39, 31, -62, -62, 36, 18, 19,
-+ -62, 11, 37, 35, 40, 44, 35, 43, -62, 35,
-+ 49, 41, -62, 35, 41, -62, 41, -62, 50, 11,
-+ 41, -62, 11, 41, -62, -62, -62, 11, -62, -62,
-+ 18, -62, 19, -62, -62, -62
- };
-
--
--#define YYLAST 66
--
--
--static const short yytable[] = { 21,
-- 5, 13, 69, 1, 70, 6, 7, 25, 73, -15,
-- 8, 77, 40, 11, 26, 62, 41, 42, 64, 43,
-- 6, 7, 68, 50, 53, 8, 29, 12, 51, 54,
-- 33, 56, 20, 17, 30, 22, 18, 25, 36, 49,
-- 24, 85, 48, 32, 38, 57, 34, 37, 46, 72,
-- 47, 58, 76, 60, 61, 63, 65, 81, 71, 66,
-- 86, 79, 3, 19, 82, 83
-+/* YYPGOTO[NTERM-NUM]. */
-+static const yysigned_char yypgoto[] =
-+{
-+ -62, -62, 38, -62, -62, -31, -62, -19, 46, -62,
-+ -62, -62, -62, 3, -62, -62, -62, -62, -62, -16,
-+ -62, -17, -62, -40, -61
- };
-
--static const short yycheck[] = { 17,
-- 5, 3, 62, 12, 64, 10, 11, 11, 68, 11,
-- 15, 71, 4, 11, 18, 54, 8, 9, 57, 11,
-- 10, 11, 61, 6, 6, 15, 26, 11, 11, 11,
-- 30, 49, 11, 14, 20, 13, 16, 11, 11, 7,
-- 17, 0, 11, 19, 14, 11, 21, 19, 15, 67,
-- 15, 22, 70, 16, 11, 16, 11, 75, 11, 21,
-- 0, 73, 1, 15, 78, 80
-+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
-+ positive, shift that token. If negative, reduce the rule which
-+ number is the opposite. If zero, do what YYDEFACT says.
-+ If YYTABLE_NINF, syntax error. */
-+#define YYTABLE_NINF -17
-+static const yysigned_char yytable[] =
-+{
-+ 23, 7, 15, 71, 1, 72, 8, 9, 27, 75,
-+ -16, 10, 79, 42, 5, 28, 64, 43, 44, 66,
-+ 45, 8, 9, 70, 52, 55, 10, 13, 14, 53,
-+ 56, 31, 58, 22, 19, 35, 24, 20, 27, 4,
-+ 38, 26, 50, 51, 81, 32, 40, 34, 59, 48,
-+ 74, 36, 39, 78, 49, 63, 62, 60, 83, 65,
-+ 67, 73, 68, 21, 84, 85
- };
--/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
--#line 3 "/usr/lib/bison.simple"
--/* This file comes from bison-1.28. */
-
--/* Skeleton output parser for bison,
-- Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
--
-- 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, Inc., 59 Temple Place - Suite 330,
-- Boston, MA 02111-1307, USA. */
--
--/* As a special exception, when this file is copied by Bison into a
-- Bison output file, you may use that output file without restriction.
-- This special exception was added by the Free Software Foundation
-- in version 1.24 of Bison. */
-+static const unsigned char yycheck[] =
-+{
-+ 19, 5, 3, 64, 12, 66, 10, 11, 11, 70,
-+ 11, 15, 73, 4, 0, 18, 56, 8, 9, 59,
-+ 11, 10, 11, 63, 6, 6, 15, 11, 11, 11,
-+ 11, 28, 51, 11, 14, 32, 13, 16, 11, 1,
-+ 11, 17, 11, 7, 75, 20, 14, 19, 11, 15,
-+ 69, 21, 19, 72, 15, 11, 16, 22, 77, 16,
-+ 11, 11, 21, 17, 80, 82
-+};
-
--/* This is the parser code that is written into each bison parser
-- when the %semantic_parser declaration is not specified in the grammar.
-- It was written by Richard Stallman by simplifying the hairy parser
-- used when %semantic_parser is specified. */
--
--#ifndef YYSTACK_USE_ALLOCA
--#ifdef alloca
--#define YYSTACK_USE_ALLOCA
--#else /* alloca not defined */
--#ifdef __GNUC__
--#define YYSTACK_USE_ALLOCA
--#define alloca __builtin_alloca
--#else /* not GNU C. */
--#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
--#define YYSTACK_USE_ALLOCA
--#include <alloca.h>
--#else /* not sparc */
--/* We think this test detects Watcom and Microsoft C. */
--/* This used to test MSDOS, but that is a bad idea
-- since that symbol is in the user namespace. */
--#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
--#if 0 /* No need for malloc.h, which pollutes the namespace;
-- instead, just don't use alloca. */
--#include <malloc.h>
--#endif
--#else /* not MSDOS, or __TURBOC__ */
--#if defined(_AIX)
--/* I don't know what this was needed for, but it pollutes the namespace.
-- So I turned it off. rms, 2 May 1997. */
--/* #include <malloc.h> */
-- #pragma alloca
--#define YYSTACK_USE_ALLOCA
--#else /* not MSDOS, or __TURBOC__, or _AIX */
--#if 0
--#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-- and on HPUX 10. Eventually we can turn this on. */
--#define YYSTACK_USE_ALLOCA
--#define alloca __builtin_alloca
--#endif /* __hpux */
--#endif
--#endif /* not _AIX */
--#endif /* not MSDOS, or __TURBOC__ */
--#endif /* not sparc */
--#endif /* not GNU C */
--#endif /* alloca not defined */
--#endif /* YYSTACK_USE_ALLOCA not defined */
-+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-+ symbol of state STATE-NUM. */
-+static const unsigned char yystos[] =
-+{
-+ 0, 12, 24, 25, 25, 0, 26, 5, 10, 11,
-+ 15, 27, 30, 11, 11, 3, 31, 32, 33, 14,
-+ 16, 31, 11, 30, 13, 41, 17, 11, 18, 34,
-+ 36, 36, 20, 35, 19, 36, 21, 37, 11, 19,
-+ 14, 38, 4, 8, 9, 11, 39, 40, 15, 15,
-+ 11, 7, 6, 11, 42, 6, 11, 44, 30, 11,
-+ 22, 46, 16, 11, 46, 16, 46, 11, 21, 47,
-+ 46, 47, 47, 11, 30, 47, 28, 29, 30, 47,
-+ 43, 28, 45, 30, 42, 44
-+};
-
--#ifdef YYSTACK_USE_ALLOCA
--#define YYSTACK_ALLOC alloca
--#else
--#define YYSTACK_ALLOC malloc
-+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-+# define YYSIZE_T __SIZE_TYPE__
-+#endif
-+#if ! defined (YYSIZE_T) && defined (size_t)
-+# define YYSIZE_T size_t
-+#endif
-+#if ! defined (YYSIZE_T)
-+# if defined (__STDC__) || defined (__cplusplus)
-+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-+# define YYSIZE_T size_t
-+# endif
-+#endif
-+#if ! defined (YYSIZE_T)
-+# define YYSIZE_T unsigned int
- #endif
--
--/* Note: there must be only one dollar sign in this file.
-- It is replaced by the list of actions, each action
-- as one case of the switch. */
-
- #define yyerrok (yyerrstatus = 0)
- #define yyclearin (yychar = YYEMPTY)
--#define YYEMPTY -2
-+#define YYEMPTY (-2)
- #define YYEOF 0
-+
- #define YYACCEPT goto yyacceptlab
--#define YYABORT goto yyabortlab
--#define YYERROR goto yyerrlab1
--/* Like YYERROR except do call yyerror.
-- This remains here temporarily to ease the
-- transition to the new meaning of YYERROR, for GCC.
-+#define YYABORT goto yyabortlab
-+#define YYERROR goto yyerrorlab
-+
-+
-+/* Like YYERROR except do call yyerror. This remains here temporarily
-+ to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
-+
- #define YYFAIL goto yyerrlab
-+
- #define YYRECOVERING() (!!yyerrstatus)
--#define YYBACKUP(token, value) \
-+
-+#define YYBACKUP(Token, Value) \
- do \
- if (yychar == YYEMPTY && yylen == 1) \
-- { yychar = (token), yylval = (value); \
-- yychar1 = YYTRANSLATE (yychar); \
-+ { \
-+ yychar = (Token); \
-+ yylval = (Value); \
-+ yytoken = YYTRANSLATE (yychar); \
- YYPOPSTACK; \
- goto yybackup; \
- } \
- else \
-- { yyerror ("syntax error: cannot back up"); YYERROR; } \
-+ { \
-+ yyerror ("syntax error: cannot back up");\
-+ YYERROR; \
-+ } \
- while (0)
-
- #define YYTERROR 1
- #define YYERRCODE 256
-
--#ifndef YYPURE
--#define YYLEX yylex()
--#endif
-+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
-+ are run). */
-
--#ifdef YYPURE
--#ifdef YYLSP_NEEDED
--#ifdef YYLEX_PARAM
--#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
--#else
--#define YYLEX yylex(&yylval, &yylloc)
-+#ifndef YYLLOC_DEFAULT
-+# define YYLLOC_DEFAULT(Current, Rhs, N) \
-+ ((Current).first_line = (Rhs)[1].first_line, \
-+ (Current).first_column = (Rhs)[1].first_column, \
-+ (Current).last_line = (Rhs)[N].last_line, \
-+ (Current).last_column = (Rhs)[N].last_column)
- #endif
--#else /* not YYLSP_NEEDED */
-+
-+/* YYLEX -- calling `yylex' with the right arguments. */
-+
- #ifdef YYLEX_PARAM
--#define YYLEX yylex(&yylval, YYLEX_PARAM)
-+# define YYLEX yylex (YYLEX_PARAM)
- #else
--#define YYLEX yylex(&yylval)
--#endif
--#endif /* not YYLSP_NEEDED */
-+# define YYLEX yylex ()
- #endif
-
--/* If nonreentrant, generate the variables here */
-+/* Enable debugging if requested. */
-+#if YYDEBUG
-
--#ifndef YYPURE
-+# ifndef YYFPRINTF
-+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-+# define YYFPRINTF fprintf
-+# endif
-+
-+# define YYDPRINTF(Args) \
-+do { \
-+ if (yydebug) \
-+ YYFPRINTF Args; \
-+} while (0)
-+
-+# define YYDSYMPRINT(Args) \
-+do { \
-+ if (yydebug) \
-+ yysymprint Args; \
-+} while (0)
-+
-+# define YYDSYMPRINTF(Title, Token, Value, Location) \
-+do { \
-+ if (yydebug) \
-+ { \
-+ YYFPRINTF (stderr, "%s ", Title); \
-+ yysymprint (stderr, \
-+ Token, Value); \
-+ YYFPRINTF (stderr, "\n"); \
-+ } \
-+} while (0)
-
--int yychar; /* the lookahead symbol */
--YYSTYPE yylval; /* the semantic value of the */
-- /* lookahead symbol */
-+/*------------------------------------------------------------------.
-+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-+| TOP (included). |
-+`------------------------------------------------------------------*/
-
--#ifdef YYLSP_NEEDED
--YYLTYPE yylloc; /* location data for the lookahead */
-- /* symbol */
-+#if defined (__STDC__) || defined (__cplusplus)
-+static void
-+yy_stack_print (short int *bottom, short int *top)
-+#else
-+static void
-+yy_stack_print (bottom, top)
-+ short int *bottom;
-+ short int *top;
- #endif
-+{
-+ YYFPRINTF (stderr, "Stack now");
-+ for (/* Nothing. */; bottom <= top; ++bottom)
-+ YYFPRINTF (stderr, " %d", *bottom);
-+ YYFPRINTF (stderr, "\n");
-+}
-
--int yynerrs; /* number of parse errors so far */
--#endif /* not YYPURE */
-+# define YY_STACK_PRINT(Bottom, Top) \
-+do { \
-+ if (yydebug) \
-+ yy_stack_print ((Bottom), (Top)); \
-+} while (0)
-
--#if YYDEBUG != 0
--int yydebug; /* nonzero means print parse trace */
--/* Since this is uninitialized, it does not stop multiple parsers
-- from coexisting. */
-+
-+/*------------------------------------------------.
-+| Report that the YYRULE is going to be reduced. |
-+`------------------------------------------------*/
-+
-+#if defined (__STDC__) || defined (__cplusplus)
-+static void
-+yy_reduce_print (int yyrule)
-+#else
-+static void
-+yy_reduce_print (yyrule)
-+ int yyrule;
- #endif
-+{
-+ int yyi;
-+ unsigned int yylno = yyrline[yyrule];
-+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
-+ yyrule - 1, yylno);
-+ /* Print the symbols being reduced, and their result. */
-+ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
-+ YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
-+ YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
-+}
-
--/* YYINITDEPTH indicates the initial size of the parser's stacks */
-+# define YY_REDUCE_PRINT(Rule) \
-+do { \
-+ if (yydebug) \
-+ yy_reduce_print (Rule); \
-+} while (0)
-+
-+/* Nonzero means print parse trace. It is left uninitialized so that
-+ multiple parsers can coexist. */
-+int yydebug;
-+#else /* !YYDEBUG */
-+# define YYDPRINTF(Args)
-+# define YYDSYMPRINT(Args)
-+# define YYDSYMPRINTF(Title, Token, Value, Location)
-+# define YY_STACK_PRINT(Bottom, Top)
-+# define YY_REDUCE_PRINT(Rule)
-+#endif /* !YYDEBUG */
-
-+
-+/* YYINITDEPTH -- initial size of the parser's stacks. */
- #ifndef YYINITDEPTH
--#define YYINITDEPTH 200
-+# define YYINITDEPTH 200
- #endif
-
--/* YYMAXDEPTH is the maximum size the stacks can grow to
-- (effective only if the built-in stack extension method is used). */
-+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
-+ if the built-in stack extension method is used).
-+
-+ Do not make this value too large; the results are undefined if
-+ SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
-+ evaluated with infinite-precision integer arithmetic. */
-
--#if YYMAXDEPTH == 0
--#undef YYMAXDEPTH
-+#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
-+# undef YYMAXDEPTH
- #endif
-
- #ifndef YYMAXDEPTH
--#define YYMAXDEPTH 10000
-+# define YYMAXDEPTH 10000
- #endif
-+
-
--/* Define __yy_memcpy. Note that the size argument
-- should be passed with type unsigned int, because that is what the non-GCC
-- definitions require. With GCC, __builtin_memcpy takes an arg
-- of type size_t, but it can handle unsigned int. */
--
--#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
--#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
--#else /* not GNU C or C++ */
--#ifndef __cplusplus
-
--/* This is the most reliable way to avoid incompatibilities
-- in available built-in functions on various systems. */
--static void
--__yy_memcpy (to, from, count)
-- char *to;
-- char *from;
-- unsigned int count;
--{
-- register char *f = from;
-- register char *t = to;
-- register int i = count;
-+#if YYERROR_VERBOSE
-+
-+# ifndef yystrlen
-+# if defined (__GLIBC__) && defined (_STRING_H)
-+# define yystrlen strlen
-+# else
-+/* Return the length of YYSTR. */
-+static YYSIZE_T
-+# if defined (__STDC__) || defined (__cplusplus)
-+yystrlen (const char *yystr)
-+# else
-+yystrlen (yystr)
-+ const char *yystr;
-+# endif
-+{
-+ register const char *yys = yystr;
-+
-+ while (*yys++ != '\0')
-+ continue;
-
-- while (i-- > 0)
-- *t++ = *f++;
-+ return yys - yystr - 1;
- }
-+# endif
-+# endif
-
--#else /* __cplusplus */
-+# ifndef yystpcpy
-+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-+# define yystpcpy stpcpy
-+# else
-+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-+ YYDEST. */
-+static char *
-+# if defined (__STDC__) || defined (__cplusplus)
-+yystpcpy (char *yydest, const char *yysrc)
-+# else
-+yystpcpy (yydest, yysrc)
-+ char *yydest;
-+ const char *yysrc;
-+# endif
-+{
-+ register char *yyd = yydest;
-+ register const char *yys = yysrc;
-+
-+ while ((*yyd++ = *yys++) != '\0')
-+ continue;
-+
-+ return yyd - 1;
-+}
-+# endif
-+# endif
-+
-+#endif /* !YYERROR_VERBOSE */
-+
-+
-+
-+#if YYDEBUG
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT. |
-+`--------------------------------*/
-
--/* This is the most reliable way to avoid incompatibilities
-- in available built-in functions on various systems. */
-+#if defined (__STDC__) || defined (__cplusplus)
- static void
--__yy_memcpy (char *to, char *from, unsigned int count)
-+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
-+#else
-+static void
-+yysymprint (yyoutput, yytype, yyvaluep)
-+ FILE *yyoutput;
-+ int yytype;
-+ YYSTYPE *yyvaluep;
-+#endif
- {
-- register char *t = to;
-- register char *f = from;
-- register int i = count;
-+ /* Pacify ``unused variable'' warnings. */
-+ (void) yyvaluep;
-+
-+ if (yytype < YYNTOKENS)
-+ {
-+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-+# ifdef YYPRINT
-+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+# endif
-+ }
-+ else
-+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
-- while (i-- > 0)
-- *t++ = *f++;
-+ switch (yytype)
-+ {
-+ default:
-+ break;
-+ }
-+ YYFPRINTF (yyoutput, ")");
- }
-
-+#endif /* ! YYDEBUG */
-+/*-----------------------------------------------.
-+| Release the memory associated to this symbol. |
-+`-----------------------------------------------*/
-+
-+#if defined (__STDC__) || defined (__cplusplus)
-+static void
-+yydestruct (int yytype, YYSTYPE *yyvaluep)
-+#else
-+static void
-+yydestruct (yytype, yyvaluep)
-+ int yytype;
-+ YYSTYPE *yyvaluep;
- #endif
--#endif
-+{
-+ /* Pacify ``unused variable'' warnings. */
-+ (void) yyvaluep;
-+
-+ switch (yytype)
-+ {
-+
-+ default:
-+ break;
-+ }
-+}
-
--#line 217 "/usr/lib/bison.simple"
-
--/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-- into yyparse. The argument should have type void *.
-- It should actually point to an object.
-- Grammar actions can access the variable by casting it
-- to the proper pointer type. */
-+/* Prevent warnings from -Wmissing-prototypes. */
-
- #ifdef YYPARSE_PARAM
--#ifdef __cplusplus
--#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
--#define YYPARSE_PARAM_DECL
--#else /* not __cplusplus */
--#define YYPARSE_PARAM_ARG YYPARSE_PARAM
--#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
--#endif /* not __cplusplus */
--#else /* not YYPARSE_PARAM */
--#define YYPARSE_PARAM_ARG
--#define YYPARSE_PARAM_DECL
--#endif /* not YYPARSE_PARAM */
-+# if defined (__STDC__) || defined (__cplusplus)
-+int yyparse (void *YYPARSE_PARAM);
-+# else
-+int yyparse ();
-+# endif
-+#else /* ! YYPARSE_PARAM */
-+#if defined (__STDC__) || defined (__cplusplus)
-+int yyparse (void);
-+#else
-+int yyparse ();
-+#endif
-+#endif /* ! YYPARSE_PARAM */
-+
-+
-+
-+/* The lookahead symbol. */
-+int yychar;
-+
-+/* The semantic value of the lookahead symbol. */
-+YYSTYPE yylval;
-+
-+/* Number of syntax errors so far. */
-+int yynerrs;
-+
-+
-+
-+/*----------.
-+| yyparse. |
-+`----------*/
-
--/* Prevent warning if -Wstrict-prototypes. */
--#ifdef __GNUC__
- #ifdef YYPARSE_PARAM
--int yyparse (void *);
-+# if defined (__STDC__) || defined (__cplusplus)
-+int yyparse (void *YYPARSE_PARAM)
-+# else
-+int yyparse (YYPARSE_PARAM)
-+ void *YYPARSE_PARAM;
-+# endif
-+#else /* ! YYPARSE_PARAM */
-+#if defined (__STDC__) || defined (__cplusplus)
-+int
-+yyparse (void)
- #else
--int yyparse (void);
-+int
-+yyparse ()
-+
- #endif
- #endif
--
--int
--yyparse(YYPARSE_PARAM_ARG)
-- YYPARSE_PARAM_DECL
- {
-+
- register int yystate;
- register int yyn;
-- register short *yyssp;
-+ int yyresult;
-+ /* Number of tokens to shift before error messages enabled. */
-+ int yyerrstatus;
-+ /* Lookahead token as an internal (translated) token number. */
-+ int yytoken = 0;
-+
-+ /* Three stacks and their tools:
-+ `yyss': related to states,
-+ `yyvs': related to semantic values,
-+ `yyls': related to locations.
-+
-+ Refer to the stacks thru separate pointers, to allow yyoverflow
-+ to reallocate them elsewhere. */
-+
-+ /* The state stack. */
-+ short int yyssa[YYINITDEPTH];
-+ short int *yyss = yyssa;
-+ register short int *yyssp;
-+
-+ /* The semantic value stack. */
-+ YYSTYPE yyvsa[YYINITDEPTH];
-+ YYSTYPE *yyvs = yyvsa;
- register YYSTYPE *yyvsp;
-- int yyerrstatus; /* number of tokens to shift before error messages enabled */
-- int yychar1 = 0; /* lookahead token as an internal (translated) token number */
-
-- short yyssa[YYINITDEPTH]; /* the state stack */
-- YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
-
-- short *yyss = yyssa; /* refer to the stacks thru separate pointers */
-- YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
-
--#ifdef YYLSP_NEEDED
-- YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
-- YYLTYPE *yyls = yylsa;
-- YYLTYPE *yylsp;
--
--#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
--#else
- #define YYPOPSTACK (yyvsp--, yyssp--)
--#endif
-
-- int yystacksize = YYINITDEPTH;
-- int yyfree_stacks = 0;
-+ YYSIZE_T yystacksize = YYINITDEPTH;
-
--#ifdef YYPURE
-- int yychar;
-- YYSTYPE yylval;
-- int yynerrs;
--#ifdef YYLSP_NEEDED
-- YYLTYPE yylloc;
--#endif
--#endif
-+ /* The variables used to return semantic value and location from the
-+ action routines. */
-+ YYSTYPE yyval;
-
-- YYSTYPE yyval; /* the variable used to return */
-- /* semantic values from the action */
-- /* routines */
-
-+ /* When reducing, the number of symbols on the RHS of the reduced
-+ rule. */
- int yylen;
-
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Starting parse\n");
--#endif
-+ YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
-@@ -639,110 +1015,97 @@
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
-- yyssp = yyss - 1;
-+ yyssp = yyss;
- yyvsp = yyvs;
--#ifdef YYLSP_NEEDED
-- yylsp = yyls;
--#endif
-
--/* Push a new state, which is found in yystate . */
--/* In all cases, when you get here, the value and location stacks
-- have just been pushed. so pushing a state here evens the stacks. */
--yynewstate:
-
-- *++yyssp = yystate;
-+ goto yysetstate;
-
-- if (yyssp >= yyss + yystacksize - 1)
-- {
-- /* Give user a chance to reallocate the stack */
-- /* Use copies of these so that the &'s don't force the real ones into memory. */
-- YYSTYPE *yyvs1 = yyvs;
-- short *yyss1 = yyss;
--#ifdef YYLSP_NEEDED
-- YYLTYPE *yyls1 = yyls;
--#endif
-+/*------------------------------------------------------------.
-+| yynewstate -- Push a new state, which is found in yystate. |
-+`------------------------------------------------------------*/
-+ yynewstate:
-+ /* In all cases, when you get here, the value and location stacks
-+ have just been pushed. so pushing a state here evens the stacks.
-+ */
-+ yyssp++;
-
-+ yysetstate:
-+ *yyssp = yystate;
-+
-+ if (yyss + yystacksize - 1 <= yyssp)
-+ {
- /* Get the current used size of the three stacks, in elements. */
-- int size = yyssp - yyss + 1;
-+ YYSIZE_T yysize = yyssp - yyss + 1;
-
- #ifdef yyoverflow
-- /* Each stack pointer address is followed by the size of
-- the data in use in that stack, in bytes. */
--#ifdef YYLSP_NEEDED
-- /* This used to be a conditional around just the two extra args,
-- but that might be undefined if yyoverflow is a macro. */
-- yyoverflow("parser stack overflow",
-- &yyss1, size * sizeof (*yyssp),
-- &yyvs1, size * sizeof (*yyvsp),
-- &yyls1, size * sizeof (*yylsp),
-- &yystacksize);
--#else
-- yyoverflow("parser stack overflow",
-- &yyss1, size * sizeof (*yyssp),
-- &yyvs1, size * sizeof (*yyvsp),
-- &yystacksize);
--#endif
--
-- yyss = yyss1; yyvs = yyvs1;
--#ifdef YYLSP_NEEDED
-- yyls = yyls1;
--#endif
-+ {
-+ /* Give user a chance to reallocate the stack. Use copies of
-+ these so that the &'s don't force the real ones into
-+ memory. */
-+ YYSTYPE *yyvs1 = yyvs;
-+ short int *yyss1 = yyss;
-+
-+
-+ /* Each stack pointer address is followed by the size of the
-+ data in use in that stack, in bytes. This used to be a
-+ conditional around just the two extra args, but that might
-+ be undefined if yyoverflow is a macro. */
-+ yyoverflow ("parser stack overflow",
-+ &yyss1, yysize * sizeof (*yyssp),
-+ &yyvs1, yysize * sizeof (*yyvsp),
-+
-+ &yystacksize);
-+
-+ yyss = yyss1;
-+ yyvs = yyvs1;
-+ }
- #else /* no yyoverflow */
-+# ifndef YYSTACK_RELOCATE
-+ goto yyoverflowlab;
-+# else
- /* Extend the stack our own way. */
-- if (yystacksize >= YYMAXDEPTH)
-- {
-- yyerror("parser stack overflow");
-- if (yyfree_stacks)
-- {
-- free (yyss);
-- free (yyvs);
--#ifdef YYLSP_NEEDED
-- free (yyls);
--#endif
-- }
-- return 2;
-- }
-+ if (YYMAXDEPTH <= yystacksize)
-+ goto yyoverflowlab;
- yystacksize *= 2;
-- if (yystacksize > YYMAXDEPTH)
-+ if (YYMAXDEPTH < yystacksize)
- yystacksize = YYMAXDEPTH;
--#ifndef YYSTACK_USE_ALLOCA
-- yyfree_stacks = 1;
--#endif
-- yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-- __yy_memcpy ((char *)yyss, (char *)yyss1,
-- size * (unsigned int) sizeof (*yyssp));
-- yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-- __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-- size * (unsigned int) sizeof (*yyvsp));
--#ifdef YYLSP_NEEDED
-- yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-- __yy_memcpy ((char *)yyls, (char *)yyls1,
-- size * (unsigned int) sizeof (*yylsp));
--#endif
-+
-+ {
-+ short int *yyss1 = yyss;
-+ union yyalloc *yyptr =
-+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-+ if (! yyptr)
-+ goto yyoverflowlab;
-+ YYSTACK_RELOCATE (yyss);
-+ YYSTACK_RELOCATE (yyvs);
-+
-+# undef YYSTACK_RELOCATE
-+ if (yyss1 != yyssa)
-+ YYSTACK_FREE (yyss1);
-+ }
-+# endif
- #endif /* no yyoverflow */
-
-- yyssp = yyss + size - 1;
-- yyvsp = yyvs + size - 1;
--#ifdef YYLSP_NEEDED
-- yylsp = yyls + size - 1;
--#endif
-+ yyssp = yyss + yysize - 1;
-+ yyvsp = yyvs + yysize - 1;
-
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Stack size increased to %d\n", yystacksize);
--#endif
-
-- if (yyssp >= yyss + yystacksize - 1)
-+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-+ (unsigned long int) yystacksize));
-+
-+ if (yyss + yystacksize - 1 <= yyssp)
- YYABORT;
- }
-
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Entering state %d\n", yystate);
--#endif
-+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
- goto yybackup;
-- yybackup:
-+
-+/*-----------.
-+| yybackup. |
-+`-----------*/
-+yybackup:
-
- /* Do appropriate processing given the current state. */
- /* Read a lookahead token if we need one and don't already have one. */
-@@ -751,154 +1114,120 @@
- /* First try to decide what to do without reference to lookahead token. */
-
- yyn = yypact[yystate];
-- if (yyn == YYFLAG)
-+ if (yyn == YYPACT_NINF)
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
-- /* yychar is either YYEMPTY or YYEOF
-- or a valid token in external form. */
--
-+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
- if (yychar == YYEMPTY)
- {
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Reading a token: ");
--#endif
-+ YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
- }
-
-- /* Convert token to internal form (in yychar1) for indexing tables with */
--
-- if (yychar <= 0) /* This means end of input. */
-+ if (yychar <= YYEOF)
- {
-- yychar1 = 0;
-- yychar = YYEOF; /* Don't call YYLEX any more */
--
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Now at end of input.\n");
--#endif
-+ yychar = yytoken = YYEOF;
-+ YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
-- yychar1 = YYTRANSLATE(yychar);
--
--#if YYDEBUG != 0
-- if (yydebug)
-- {
-- fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-- /* Give the individual parser a way to print the precise meaning
-- of a token, for further debugging info. */
--#ifdef YYPRINT
-- YYPRINT (stderr, yychar, yylval);
--#endif
-- fprintf (stderr, ")\n");
-- }
--#endif
-+ yytoken = YYTRANSLATE (yychar);
-+ YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
- }
-
-- yyn += yychar1;
-- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
-+ /* If the proper action on seeing token YYTOKEN is to reduce or to
-+ detect an error, take that action. */
-+ yyn += yytoken;
-+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
- goto yydefault;
--
- yyn = yytable[yyn];
--
-- /* yyn is what to do for this token type in this state.
-- Negative => reduce, -yyn is rule number.
-- Positive => shift, yyn is new state.
-- New state is final state => don't bother to shift,
-- just return success.
-- 0, or most negative number => error. */
--
-- if (yyn < 0)
-+ if (yyn <= 0)
- {
-- if (yyn == YYFLAG)
-+ if (yyn == 0 || yyn == YYTABLE_NINF)
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
-- else if (yyn == 0)
-- goto yyerrlab;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- /* Shift the lookahead token. */
--
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
--#endif
-+ YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
-
- /* Discard the token being shifted unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
-
- *++yyvsp = yylval;
--#ifdef YYLSP_NEEDED
-- *++yylsp = yylloc;
--#endif
-
-- /* count tokens shifted since error; after three, turn off error status. */
-- if (yyerrstatus) yyerrstatus--;
-+
-+ /* Count tokens shifted since error; after three, turn off error
-+ status. */
-+ if (yyerrstatus)
-+ yyerrstatus--;
-
- yystate = yyn;
- goto yynewstate;
-
--/* Do the default action for the current state. */
--yydefault:
-
-+/*-----------------------------------------------------------.
-+| yydefault -- do the default action for the current state. |
-+`-----------------------------------------------------------*/
-+yydefault:
- yyn = yydefact[yystate];
- if (yyn == 0)
- goto yyerrlab;
-+ goto yyreduce;
-
--/* Do a reduction. yyn is the number of a rule to reduce with. */
-+
-+/*-----------------------------.
-+| yyreduce -- Do a reduction. |
-+`-----------------------------*/
- yyreduce:
-+ /* yyn is the number of a rule to reduce with. */
- yylen = yyr2[yyn];
-- if (yylen > 0)
-- yyval = yyvsp[1-yylen]; /* implement default value of the action */
-
--#if YYDEBUG != 0
-- if (yydebug)
-- {
-- int i;
-+ /* If YYLEN is nonzero, implement the default value of the action:
-+ `$$ = $1'.
-
-- fprintf (stderr, "Reducing via rule %d (line %d), ",
-- yyn, yyrline[yyn]);
-+ Otherwise, the following line sets YYVAL to garbage.
-+ This behavior is undocumented and Bison
-+ users should not rely upon it. Assigning to YYVAL
-+ unconditionally makes the parser a bit smaller, and it avoids a
-+ GCC warning that YYVAL may be used uninitialized. */
-+ yyval = yyvsp[1-yylen];
-
-- /* Print the symbols being reduced, and their result. */
-- for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-- fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-- fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-- }
--#endif
-
--
-- switch (yyn) {
--
--case 1:
--#line 165 "ql_y.y"
--{
-+ YY_REDUCE_PRINT (yyn);
-+ switch (yyn)
-+ {
-+ case 2:
-+#line 168 "ql_y.y"
-+ {
- STRUCTURE *walk;
-
- def = yyvsp[0].field;
- for (walk = structures; walk; walk = walk->next)
- if (!walk->instances)
- fprintf(stderr,"unused structure: %s\n",walk->id);
-- ;
-- break;}
--case 3:
--#line 177 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 4:
-+#line 180 "ql_y.y"
-+ {
- to_c("#%s\n",yyvsp[-1].str);
- to_test("#%s\n",yyvsp[-1].str);
- if (dump) to_dump("#%s\n",yyvsp[-1].str);
-- ;
-- break;}
--case 6:
--#line 190 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 7:
-+#line 193 "ql_y.y"
-+ {
- STRUCTURE *n;
-
- n = alloc_t(STRUCTURE);
-@@ -907,23 +1236,26 @@
- n->instances = 0;
- n->next = structures;
- structures = n;
-- ;
-- break;}
--case 7:
--#line 203 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 8:
-+#line 206 "ql_y.y"
-+ {
- abort_id = NULL;
-- ;
-- break;}
--case 8:
--#line 207 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 9:
-+#line 210 "ql_y.y"
-+ {
- yyval.field = yyvsp[0].field;
-- ;
-- break;}
--case 9:
--#line 214 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 10:
-+#line 217 "ql_y.y"
-+ {
- STRUCTURE *walk;
-
- for (walk = structures; walk; walk = walk->next)
-@@ -939,38 +1271,43 @@
- yyval.field->my_block = copy_block(walk->block);
- yyval.field->next = NULL;
- abort_id = NULL;
-- ;
-- break;}
--case 10:
--#line 232 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 11:
-+#line 235 "ql_y.y"
-+ {
- yyval.field = yyvsp[-1].field;
- abort_id = NULL;
-- ;
-- break;}
--case 11:
--#line 237 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 12:
-+#line 240 "ql_y.y"
-+ {
- yyval.field = NULL;
- abort_id = yyvsp[0].str;
-- ;
-- break;}
--case 12:
--#line 244 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 13:
-+#line 247 "ql_y.y"
-+ {
- yyval.field = NULL;
-- ;
-- break;}
--case 13:
--#line 248 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 14:
-+#line 251 "ql_y.y"
-+ {
- yyval.field = yyvsp[-1].field;
- yyvsp[-1].field->next = yyvsp[0].field;
-- ;
-- break;}
--case 14:
--#line 256 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 15:
-+#line 259 "ql_y.y"
-+ {
- TAG *walk;
-
- yyval.field = yyvsp[0].field;
-@@ -989,23 +1326,26 @@
- "selections");
- if (*yyval.field->id != '_' && yyval.field->value && yyval.field->value->type == vt_multi)
- yyerror("multi selectors must be unnamed");
-- ;
-- break;}
--case 15:
--#line 279 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 16:
-+#line 282 "ql_y.y"
-+ {
- yyval.num = 0;
-- ;
-- break;}
--case 16:
--#line 283 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 17:
-+#line 286 "ql_y.y"
-+ {
- yyval.num = 1;
-- ;
-- break;}
--case 17:
--#line 290 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 18:
-+#line 293 "ql_y.y"
-+ {
- yyval.field = alloc_t(FIELD);
- yyval.field->size = yyvsp[-1].num;
- yyval.field->var_len = -2; /* hack */
-@@ -1015,140 +1355,159 @@
- yyval.field->value = NULL;
- yyval.field->structure = NULL;
- yyval.field->next = NULL;
-- ;
-- break;}
--case 18:
--#line 302 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 19:
-+#line 305 "ql_y.y"
-+ {
- yyval.field = alloc_t(FIELD);
- yyval.field->size = yyvsp[-4].num;
- yyval.field->var_len = -1;
- yyval.field->pos = yyvsp[-3].num;
- yyval.field->flush = !yyvsp[-2].num;
-- if (yyval.field->pos == -1)
-+ if (yyval.field->pos == -1) {
- if (yyval.field->size & 7)
- yyerror("position required for small fields");
- else yyval.field->pos = 0;
-+ }
- yyval.field->value = yyvsp[0].value;
- yyval.field->structure = NULL;
- yyval.field->next = NULL;
-- ;
-- break;}
--case 19:
--#line 319 "ql_y.y"
--{
-- yyval.num = -1;
-- ;
-- break;}
--case 20:
-+ }
-+ break;
-+
-+ case 20:
- #line 323 "ql_y.y"
--{
-+ {
-+ yyval.num = -1;
-+ }
-+ break;
-+
-+ case 21:
-+#line 327 "ql_y.y"
-+ {
- yyval.num = yyvsp[0].num-1;
- if (yyval.num < 0 || yyval.num > 7) yyerror("invalid position");
-- ;
-- break;}
--case 21:
--#line 331 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 22:
-+#line 335 "ql_y.y"
-+ {
- char *end;
-
- yyval.num = strtoul(yyvsp[0].str,&end,10);
- if (*end) yyerror("no a decimal number");
-- ;
-- break;}
--case 22:
--#line 340 "ql_y.y"
--{
-- yyval.num = 0;
-- ;
-- break;}
--case 23:
-+ }
-+ break;
-+
-+ case 23:
- #line 344 "ql_y.y"
--{
-+ {
-+ yyval.num = 0;
-+ }
-+ break;
-+
-+ case 24:
-+#line 348 "ql_y.y"
-+ {
- if (strcmp(yyvsp[0].str,"more")) yyerror("\"more\" expected");
- yyval.num = 1;
-- ;
-- break;}
--case 24:
--#line 351 "ql_y.y"
--{
-- yyval.value = NULL;
-- ;
-- break;}
--case 25:
-+ }
-+ break;
-+
-+ case 25:
- #line 355 "ql_y.y"
--{
-+ {
-+ yyval.value = NULL;
-+ }
-+ break;
-+
-+ case 26:
-+#line 359 "ql_y.y"
-+ {
- yyval.value = yyvsp[0].value;
-- ;
-- break;}
--case 26:
--#line 362 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 27:
-+#line 366 "ql_y.y"
-+ {
- yyval.value = alloc_t(VALUE);
- yyval.value->type = vt_id;
- yyval.value->id = yyvsp[0].str;
-- ;
-- break;}
--case 27:
--#line 368 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 28:
-+#line 372 "ql_y.y"
-+ {
- yyval.value = alloc_t(VALUE);
- yyval.value->type = vt_case;
- yyval.value->id = NULL;
- yyval.value->tags = yyvsp[-1].tag;
-- ;
-- break;}
--case 28:
--#line 375 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 29:
-+#line 379 "ql_y.y"
-+ {
- yyval.value = alloc_t(VALUE);
- yyval.value->type = vt_multi;
- yyval.value->tags = yyvsp[-1].tag;
-- ;
-- break;}
--case 29:
--#line 381 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 30:
-+#line 385 "ql_y.y"
-+ {
- yyval.value = alloc_t(VALUE);
- yyval.value->type = vt_length;
- yyval.value->recovery = yyvsp[-2].str;
- yyval.value->block = yyvsp[0].field;
- yyval.value->abort_id = abort_id;
-- ;
-- break;}
--case 30:
--#line 391 "ql_y.y"
--{
-- yyval.str = NULL;
-- ;
-- break;}
--case 31:
-+ }
-+ break;
-+
-+ case 31:
- #line 395 "ql_y.y"
--{
-+ {
-+ yyval.str = NULL;
-+ }
-+ break;
-+
-+ case 32:
-+#line 399 "ql_y.y"
-+ {
- yyval.str = yyvsp[0].str;
-- ;
-- break;}
--case 32:
--#line 401 "ql_y.y"
--{
-- yyval.nlist = NULL;
-- ;
-- break;}
--case 33:
-+ }
-+ break;
-+
-+ case 33:
- #line 405 "ql_y.y"
--{
-+ {
-+ yyval.nlist = NULL;
-+ }
-+ break;
-+
-+ case 34:
-+#line 409 "ql_y.y"
-+ {
- yyval.nlist = get_name_list(yyvsp[0].str);
-- ;
-- break;}
--case 34:
--#line 411 "ql_y.y"
--{
-- yyval.tag = NULL;
-- ;
-- break;}
--case 35:
-+ }
-+ break;
-+
-+ case 35:
- #line 415 "ql_y.y"
--{
-+ {
-+ yyval.tag = NULL;
-+ }
-+ break;
-+
-+ case 36:
-+#line 419 "ql_y.y"
-+ {
- yyval.tag = alloc_t(TAG);
- yyval.tag->deflt = 1;
- if (yyvsp[-2].str) {
-@@ -1163,18 +1522,20 @@
- yyval.tag->block = yyvsp[0].field;
- yyval.tag->next = NULL;
- yyval.tag->abort_id = abort_id;
-- ;
-- break;}
--case 36:
--#line 432 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 37:
-+#line 436 "ql_y.y"
-+ {
- yyval.tag = alloc_t(TAG);
- yyval.tag->abort_id = abort_id;
-- ;
-- break;}
--case 37:
--#line 437 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 38:
-+#line 441 "ql_y.y"
-+ {
- yyval.tag = yyvsp[-1].tag;
- yyval.tag->deflt = 0;
- if (yyvsp[-4].str) {
-@@ -1188,17 +1549,19 @@
- yyval.tag->more = yyvsp[-3].list;
- yyval.tag->block = yyvsp[-2].field;
- yyval.tag->next = yyvsp[0].tag;
-- ;
-- break;}
--case 38:
--#line 455 "ql_y.y"
--{
-- yyval.tag = NULL;
-- ;
-- break;}
--case 39:
-+ }
-+ break;
-+
-+ case 39:
- #line 459 "ql_y.y"
--{
-+ {
-+ yyval.tag = NULL;
-+ }
-+ break;
-+
-+ case 40:
-+#line 463 "ql_y.y"
-+ {
- yyval.tag = alloc_t(TAG);
- yyval.tag->deflt = 1;
- if (yyvsp[-2].str) {
-@@ -1212,18 +1575,20 @@
- yyval.tag->more = yyvsp[-1].list;
- yyval.tag->block = yyvsp[0].field;
- yyval.tag->next = NULL;
-- ;
-- break;}
--case 40:
--#line 475 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 41:
-+#line 479 "ql_y.y"
-+ {
- yyval.tag = alloc_t(TAG);
- yyval.tag->abort_id = abort_id;
-- ;
-- break;}
--case 41:
--#line 480 "ql_y.y"
--{
-+ }
-+ break;
-+
-+ case 42:
-+#line 484 "ql_y.y"
-+ {
- yyval.tag = yyvsp[-1].tag;
- yyval.tag->deflt = 0;
- if (yyvsp[-4].str) {
-@@ -1237,254 +1602,266 @@
- yyval.tag->more = yyvsp[-3].list;
- yyval.tag->block = yyvsp[-2].field;
- yyval.tag->next = yyvsp[0].tag;
-- ;
-- break;}
--case 42:
--#line 498 "ql_y.y"
--{
-- yyval.str = NULL;
-- ;
-- break;}
--case 43:
-+ }
-+ break;
-+
-+ case 43:
- #line 502 "ql_y.y"
--{
-+ {
-+ yyval.str = NULL;
-+ }
-+ break;
-+
-+ case 44:
-+#line 506 "ql_y.y"
-+ {
- yyval.str = yyvsp[0].str;
-- ;
-- break;}
--case 44:
--#line 508 "ql_y.y"
--{
-- yyval.list = NULL;
-- ;
-- break;}
--case 45:
-+ }
-+ break;
-+
-+ case 45:
- #line 512 "ql_y.y"
--{
-+ {
-+ yyval.list = NULL;
-+ }
-+ break;
-+
-+ case 46:
-+#line 516 "ql_y.y"
-+ {
- yyval.list = alloc_t(VALUE_LIST);
- yyval.list->value = yyvsp[-1].str;
- yyval.list->next = yyvsp[0].list;
-- ;
-- break;}
--}
-- /* the action file gets copied in in place of this dollarsign */
--#line 543 "/usr/lib/bison.simple"
-+ }
-+ break;
-+
-+
-+ }
-+
-+/* Line 1010 of yacc.c. */
-+#line 1643 "y.tab.c"
-
- yyvsp -= yylen;
- yyssp -= yylen;
--#ifdef YYLSP_NEEDED
-- yylsp -= yylen;
--#endif
-
--#if YYDEBUG != 0
-- if (yydebug)
-- {
-- short *ssp1 = yyss - 1;
-- fprintf (stderr, "state stack now");
-- while (ssp1 != yyssp)
-- fprintf (stderr, " %d", *++ssp1);
-- fprintf (stderr, "\n");
-- }
--#endif
-+
-+ YY_STACK_PRINT (yyss, yyssp);
-
- *++yyvsp = yyval;
-
--#ifdef YYLSP_NEEDED
-- yylsp++;
-- if (yylen == 0)
-- {
-- yylsp->first_line = yylloc.first_line;
-- yylsp->first_column = yylloc.first_column;
-- yylsp->last_line = (yylsp-1)->last_line;
-- yylsp->last_column = (yylsp-1)->last_column;
-- yylsp->text = 0;
-- }
-- else
-- {
-- yylsp->last_line = (yylsp+yylen-1)->last_line;
-- yylsp->last_column = (yylsp+yylen-1)->last_column;
-- }
--#endif
-
-- /* Now "shift" the result of the reduction.
-- Determine what state that goes to,
-- based on the state we popped back to
-- and the rule number reduced by. */
-+ /* Now `shift' the result of the reduction. Determine what state
-+ that goes to, based on the state we popped back to and the rule
-+ number reduced by. */
-
- yyn = yyr1[yyn];
-
-- yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-- if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
-- yystate = yydefgoto[yyn - YYNTBASE];
-+ yystate = yydefgoto[yyn - YYNTOKENS];
-
- goto yynewstate;
-
--yyerrlab: /* here on detecting error */
-
-- if (! yyerrstatus)
-- /* If not already recovering from an error, report this error. */
-+/*------------------------------------.
-+| yyerrlab -- here on detecting error |
-+`------------------------------------*/
-+yyerrlab:
-+ /* If not already recovering from an error, report this error. */
-+ if (!yyerrstatus)
- {
- ++yynerrs;
--
--#ifdef YYERROR_VERBOSE
-+#if YYERROR_VERBOSE
- yyn = yypact[yystate];
-
-- if (yyn > YYFLAG && yyn < YYLAST)
-+ if (YYPACT_NINF < yyn && yyn < YYLAST)
- {
-- int size = 0;
-- char *msg;
-- int x, count;
--
-- count = 0;
-- /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
-- for (x = (yyn < 0 ? -yyn : 0);
-- x < (sizeof(yytname) / sizeof(char *)); x++)
-- if (yycheck[x + yyn] == x)
-- size += strlen(yytname[x]) + 15, count++;
-- msg = (char *) malloc(size + 15);
-- if (msg != 0)
-+ YYSIZE_T yysize = 0;
-+ int yytype = YYTRANSLATE (yychar);
-+ const char* yyprefix;
-+ char *yymsg;
-+ int yyx;
-+
-+ /* Start YYX at -YYN if negative to avoid negative indexes in
-+ YYCHECK. */
-+ int yyxbegin = yyn < 0 ? -yyn : 0;
-+
-+ /* Stay within bounds of both yycheck and yytname. */
-+ int yychecklim = YYLAST - yyn;
-+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-+ int yycount = 0;
-+
-+ yyprefix = ", expecting ";
-+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+ {
-+ yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
-+ yycount += 1;
-+ if (yycount == 5)
-+ {
-+ yysize = 0;
-+ break;
-+ }
-+ }
-+ yysize += (sizeof ("syntax error, unexpected ")
-+ + yystrlen (yytname[yytype]));
-+ yymsg = (char *) YYSTACK_ALLOC (yysize);
-+ if (yymsg != 0)
- {
-- strcpy(msg, "parse error");
-+ char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
-+ yyp = yystpcpy (yyp, yytname[yytype]);
-
-- if (count < 5)
-+ if (yycount < 5)
- {
-- count = 0;
-- for (x = (yyn < 0 ? -yyn : 0);
-- x < (sizeof(yytname) / sizeof(char *)); x++)
-- if (yycheck[x + yyn] == x)
-+ yyprefix = ", expecting ";
-+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
-- strcat(msg, count == 0 ? ", expecting `" : " or `");
-- strcat(msg, yytname[x]);
-- strcat(msg, "'");
-- count++;
-+ yyp = yystpcpy (yyp, yyprefix);
-+ yyp = yystpcpy (yyp, yytname[yyx]);
-+ yyprefix = " or ";
- }
- }
-- yyerror(msg);
-- free(msg);
-+ yyerror (yymsg);
-+ YYSTACK_FREE (yymsg);
- }
- else
-- yyerror ("parse error; also virtual memory exceeded");
-+ yyerror ("syntax error; also virtual memory exhausted");
- }
- else
- #endif /* YYERROR_VERBOSE */
-- yyerror("parse error");
-+ yyerror ("syntax error");
- }
-
-- goto yyerrlab1;
--yyerrlab1: /* here on error raised explicitly by an action */
-+
-
- if (yyerrstatus == 3)
- {
-- /* if just tried and failed to reuse lookahead token after an error, discard it. */
-+ /* If just tried and failed to reuse lookahead token after an
-+ error, discard it. */
-
-- /* return failure if at end of input */
-- if (yychar == YYEOF)
-- YYABORT;
--
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
--#endif
-+ if (yychar <= YYEOF)
-+ {
-+ /* If at end of input, pop the error token,
-+ then the rest of the stack, then return failure. */
-+ if (yychar == YYEOF)
-+ for (;;)
-+ {
-+ YYPOPSTACK;
-+ if (yyssp == yyss)
-+ YYABORT;
-+ YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
-+ yydestruct (yystos[*yyssp], yyvsp);
-+ }
-+ }
-+ else
-+ {
-+ YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
-+ yydestruct (yytoken, &yylval);
-+ yychar = YYEMPTY;
-
-- yychar = YYEMPTY;
-+ }
- }
-
-- /* Else will try to reuse lookahead token
-- after shifting the error token. */
--
-- yyerrstatus = 3; /* Each real token shifted decrements this */
-+ /* Else will try to reuse lookahead token after shifting the error
-+ token. */
-+ goto yyerrlab1;
-
-- goto yyerrhandle;
-
--yyerrdefault: /* current state does not do anything special for the error token. */
-+/*---------------------------------------------------.
-+| yyerrorlab -- error raised explicitly by YYERROR. |
-+`---------------------------------------------------*/
-+yyerrorlab:
-
--#if 0
-- /* This is wrong; only states that explicitly want error tokens
-- should shift them. */
-- yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
-- if (yyn) goto yydefault;
-+#ifdef __GNUC__
-+ /* Pacify GCC when the user code never invokes YYERROR and the label
-+ yyerrorlab therefore never appears in user code. */
-+ if (0)
-+ goto yyerrorlab;
- #endif
-
--yyerrpop: /* pop the current state because it cannot handle the error token */
--
-- if (yyssp == yyss) YYABORT;
-- yyvsp--;
-- yystate = *--yyssp;
--#ifdef YYLSP_NEEDED
-- yylsp--;
--#endif
-+ yyvsp -= yylen;
-+ yyssp -= yylen;
-+ yystate = *yyssp;
-+ goto yyerrlab1;
-
--#if YYDEBUG != 0
-- if (yydebug)
-- {
-- short *ssp1 = yyss - 1;
-- fprintf (stderr, "Error: state stack now");
-- while (ssp1 != yyssp)
-- fprintf (stderr, " %d", *++ssp1);
-- fprintf (stderr, "\n");
-- }
--#endif
-
--yyerrhandle:
-+/*-------------------------------------------------------------.
-+| yyerrlab1 -- common code for both syntax error and YYERROR. |
-+`-------------------------------------------------------------*/
-+yyerrlab1:
-+ yyerrstatus = 3; /* Each real token shifted decrements this. */
-
-- yyn = yypact[yystate];
-- if (yyn == YYFLAG)
-- goto yyerrdefault;
-+ for (;;)
-+ {
-+ yyn = yypact[yystate];
-+ if (yyn != YYPACT_NINF)
-+ {
-+ yyn += YYTERROR;
-+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-+ {
-+ yyn = yytable[yyn];
-+ if (0 < yyn)
-+ break;
-+ }
-+ }
-
-- yyn += YYTERROR;
-- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-- goto yyerrdefault;
-+ /* Pop the current state because it cannot handle the error token. */
-+ if (yyssp == yyss)
-+ YYABORT;
-
-- yyn = yytable[yyn];
-- if (yyn < 0)
-- {
-- if (yyn == YYFLAG)
-- goto yyerrpop;
-- yyn = -yyn;
-- goto yyreduce;
-+ YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
-+ yydestruct (yystos[yystate], yyvsp);
-+ YYPOPSTACK;
-+ yystate = *yyssp;
-+ YY_STACK_PRINT (yyss, yyssp);
- }
-- else if (yyn == 0)
-- goto yyerrpop;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Shifting error token, ");
--#endif
-+ YYDPRINTF ((stderr, "Shifting error token, "));
-
- *++yyvsp = yylval;
--#ifdef YYLSP_NEEDED
-- *++yylsp = yylloc;
--#endif
-+
-
- yystate = yyn;
- goto yynewstate;
-
-- yyacceptlab:
-- /* YYACCEPT comes here. */
-- if (yyfree_stacks)
-- {
-- free (yyss);
-- free (yyvs);
--#ifdef YYLSP_NEEDED
-- free (yyls);
--#endif
-- }
-- return 0;
-
-- yyabortlab:
-- /* YYABORT comes here. */
-- if (yyfree_stacks)
-- {
-- free (yyss);
-- free (yyvs);
--#ifdef YYLSP_NEEDED
-- free (yyls);
-+/*-------------------------------------.
-+| yyacceptlab -- YYACCEPT comes here. |
-+`-------------------------------------*/
-+yyacceptlab:
-+ yyresult = 0;
-+ goto yyreturn;
-+
-+/*-----------------------------------.
-+| yyabortlab -- YYABORT comes here. |
-+`-----------------------------------*/
-+yyabortlab:
-+ yyresult = 1;
-+ goto yyreturn;
-+
-+#ifndef yyoverflow
-+/*----------------------------------------------.
-+| yyoverflowlab -- parser overflow comes here. |
-+`----------------------------------------------*/
-+yyoverflowlab:
-+ yyerror ("parser stack overflow");
-+ yyresult = 2;
-+ /* Fall through. */
-+#endif
-+
-+yyreturn:
-+#ifndef yyoverflow
-+ if (yyss != yyssa)
-+ YYSTACK_FREE (yyss);
- #endif
-- }
-- return 1;
-+ return yyresult;
- }
--#line 518 "ql_y.y"
-+
-+
-+
---- linux-atm-2.4.1.orig/src/qgen/ql_y.y
-+++ linux-atm-2.4.1/src/qgen/ql_y.y
-@@ -17,6 +17,8 @@
- #include "qgen.h"
- #include "file.h"
-
-+extern void yyerror(const char *s);
-+
-
- #define MAX_TOKEN 256
- #define DEFAULT_NAMELIST_FILE "default.nl"
-@@ -58,9 +60,10 @@
- for (walk = strchr(start,0)-1; walk > start && isspace(*walk); walk--)
- *walk = 0;
- if (*start == ':') {
-- if (!(searching = strcmp(start+1,name)))
-+ if (!(searching = strcmp(start+1,name))) {
- if (found) yyerror("multiple entries");
- else found = 1;
-+ }
- continue;
- }
- if (searching) continue;
-@@ -305,10 +308,11 @@
- $$->var_len = -1;
- $$->pos = $2;
- $$->flush = !$3;
-- if ($$->pos == -1)
-+ if ($$->pos == -1) {
- if ($$->size & 7)
- yyerror("position required for small fields");
- else $$->pos = 0;
-+ }
- $$->value = $5;
- $$->structure = NULL;
- $$->next = NULL;
---- linux-atm-2.4.1.orig/src/qgen/ql_l.l
-+++ linux-atm-2.4.1/src/qgen/ql_l.l
-@@ -68,7 +68,7 @@
-
- %%
-
--void yyerror(char *s)
-+void yyerror(const char *s)
- {
- fprintf(stderr,"line %d: %s near \"%s\"\n",lineno,s,yytext);
- exit(1);
---- linux-atm-2.4.1.orig/src/qgen/qlib.c
-+++ linux-atm-2.4.1/src/qgen/qlib.c
-@@ -26,14 +26,14 @@
- #include "op.h"
-
-
--static int debug = 0;
-+static int q_debug = 0;
-
-
- void PREFIX(report)(int severity,const char *msg,...)
- {
- va_list ap;
-
-- if (!debug && severity > Q_ERROR) return;
-+ if (!q_debug && severity > Q_ERROR) return;
- va_start(ap,msg);
- vprintf(msg,ap);
- printf("\n");
-@@ -836,7 +836,7 @@
- Q_DSC dsc;
- int len,c;
-
-- debug = argc != 1;
-+ q_debug = argc != 1;
- len = 0;
- while (scanf("%x",&c) == 1) msg[len++] = c;
- qd_start();
---- linux-atm-2.4.1.orig/src/qgen/qlib.h
-+++ linux-atm-2.4.1/src/qgen/qlib.h
-@@ -23,7 +23,9 @@
- #define Q_FATAL -1
-
-
-+#ifndef DUMP_MODE
- extern int q_dump;
-+#endif
- extern void q_report(int severity,const char *msg,...);
-
- #ifdef DUMP_MODE
---- linux-atm-2.4.1.orig/src/qgen/ql_y.h
-+++ linux-atm-2.4.1/src/qgen/ql_y.h
-@@ -1,4 +1,65 @@
--typedef union {
-+/* A Bison parser, made by GNU Bison 1.875d. */
-+
-+/* Skeleton parser for Yacc-like parsing with Bison,
-+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+
-+ 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, Inc., 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA. */
-+
-+/* As a special exception, when this file is copied by Bison into a
-+ Bison output file, you may use that output file without restriction.
-+ This special exception was added by the Free Software Foundation
-+ in version 1.24 of Bison. */
-+
-+/* Tokens. */
-+#ifndef YYTOKENTYPE
-+# define YYTOKENTYPE
-+ /* Put the tokens into the symbol table, so that GDB and other debuggers
-+ know about them. */
-+ enum yytokentype {
-+ TOK_BREAK = 258,
-+ TOK_CASE = 259,
-+ TOK_DEF = 260,
-+ TOK_DEFAULT = 261,
-+ TOK_LENGTH = 262,
-+ TOK_MULTI = 263,
-+ TOK_RECOVER = 264,
-+ TOK_ABORT = 265,
-+ TOK_ID = 266,
-+ TOK_INCLUDE = 267,
-+ TOK_STRING = 268
-+ };
-+#endif
-+#define TOK_BREAK 258
-+#define TOK_CASE 259
-+#define TOK_DEF 260
-+#define TOK_DEFAULT 261
-+#define TOK_LENGTH 262
-+#define TOK_MULTI 263
-+#define TOK_RECOVER 264
-+#define TOK_ABORT 265
-+#define TOK_ID 266
-+#define TOK_INCLUDE 267
-+#define TOK_STRING 268
-+
-+
-+
-+
-+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#line 142 "ql_y.y"
-+typedef union YYSTYPE {
- const char *str;
- int num;
- FIELD *field;
-@@ -7,17 +68,14 @@
- TAG *tag;
- NAME_LIST *nlist;
- } YYSTYPE;
--#define TOK_BREAK 257
--#define TOK_CASE 258
--#define TOK_DEF 259
--#define TOK_DEFAULT 260
--#define TOK_LENGTH 261
--#define TOK_MULTI 262
--#define TOK_RECOVER 263
--#define TOK_ABORT 264
--#define TOK_ID 265
--#define TOK_INCLUDE 266
--#define TOK_STRING 267
--
-+/* Line 1285 of yacc.c. */
-+#line 73 "y.tab.h"
-+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-+# define YYSTYPE_IS_DECLARED 1
-+# define YYSTYPE_IS_TRIVIAL 1
-+#endif
-
- extern YYSTYPE yylval;
-+
-+
-+
---- linux-atm-2.4.1.orig/src/qgen/incl.pl
-+++ linux-atm-2.4.1/src/qgen/incl.pl
-@@ -24,7 +24,7 @@
- }
- die "no include file specified" unless defined $last;
- for (@STD,@USR) {
-- next unless defined stat $_."/".$last;
-+ next unless -e "$_/$last";
- print $_."/".$last."\n" || die "print STDOUT: $!";
- exit 0;
- }
---- linux-atm-2.4.1.orig/src/qgen/msg.fmt
-+++ linux-atm-2.4.1/src/qgen/msg.fmt
-@@ -53,7 +53,7 @@
- ATM_TD_FW_PCR_0 { p##fw_pcr_0 <24> } \
- ATM_TD_BW_PCR_0 { p##bw_pcr_0 <24> } \
- ATM_TD_FW_PCR_01 { p##fw_pcr_01 <24> } \
-- ATM_TD_BW_PCR_01 { p##bw_pcr_01 <24> } \
-+ ATM_TD_BW_PCR_01 { p##bw_pcr_01 <24> }
-
- #define TRAFFIC_DESCRIPTOR_VBR(p) \
- ATM_TD_FW_SCR_0 { p##fw_scr_0 <24> } \
-@@ -63,15 +63,15 @@
- ATM_TD_FW_MBS_0 { p##fw_mbs_0 <24> } \
- ATM_TD_BW_MBS_0 { p##bw_mbs_0 <24> } \
- ATM_TD_FW_MBS_01 { p##fw_mbs_01 <24> } \
-- ATM_TD_BW_MBS_01 { p##bw_mbs_01 <24> } \
-+ ATM_TD_BW_MBS_01 { p##bw_mbs_01 <24> }
-
- #define TRAFFIC_DESCRIPTOR_BE(p) \
-- ATM_TD_BEST_EFFORT { p##best_effort <0> } \
-+ ATM_TD_BEST_EFFORT { p##best_effort <0> }
-
- #if defined(UNI40) || defined(DYNAMIC_UNI)
- #define TRAFFIC_DESCRIPTOR_ABR(p) \
- ATM_TD_FW_MCR_01 { p##fw_mcr_01 <24> } \
-- ATM_TD_BW_MCR_01 { p##bw_mcr_01 <24> } \
-+ ATM_TD_BW_MCR_01 { p##bw_mcr_01 <24> }
-
- #else
- #define TRAFFIC_DESCRIPTOR_ABR(p) /* not yet */
---- linux-atm-2.4.1.orig/src/qgen/output
-+++ linux-atm-2.4.1/src/qgen/output
-@@ -0,0 +1,704 @@
-+# 1 "<stdin>"
-+# 1 "<built-in>"
-+# 1 "<command line>"
-+# 1 "<stdin>"
-+
-+
-+
-+
-+
-+# 1 "../../config.h" 1
-+# 7 "<stdin>" 2
-+
-+
-+
-+
-+include "atmsap.h"
-+include "uni.h"
-+# 26 "<stdin>"
-+def ie_aal = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ aal_type <8> = case {
-+ 5 {
-+ _id "atm_aalp" <8> = multi {
-+ ATM_AALP_FW_MAX_SDU {
-+ fw_max_sdu <16>
-+ }
-+ ATM_AALP_BW_MAX_SDU {
-+ bw_max_sdu <16>
-+ }
-+
-+ ATM_AALP_AAL_MODE {
-+ aal_mode <8> # UNI 3.0 only
-+ }
-+
-+ ATM_AALP_SSCS {
-+ sscs_type <8>
-+ }
-+ }
-+ }
-+ }
-+ }
-+}
-+# 90 "<stdin>"
-+def ie_td = { # UNI 3.0 calls this "User Cell Rate"
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _id "atm_td" <8> = multi {
-+ ATM_TD_FW_PCR_0 { _dummy <0> = length {}fw_pcr_0 <24> } ATM_TD_BW_PCR_0 { _dummy <0> = length {}bw_pcr_0 <24> } ATM_TD_FW_PCR_01 { _dummy <0> = length {}fw_pcr_01 <24> } ATM_TD_BW_PCR_01 { _dummy <0> = length {}bw_pcr_01 <24> } ATM_TD_FW_SCR_0 { _dummy <0> = length {}fw_scr_0 <24> } ATM_TD_BW_SCR_0 { _dummy <0> = length {}bw_scr_0 <24> } ATM_TD_FW_SCR_01 { _dummy <0> = length {}fw_scr_01 <24> } ATM_TD_BW_SCR_01 { _dummy <0> = length {}bw_scr_01 <24> } ATM_TD_FW_MBS_0 { _dummy <0> = length {}fw_mbs_0 <24> } ATM_TD_BW_MBS_0 { _dummy <0> = length {}bw_mbs_0 <24> } ATM_TD_FW_MBS_01 { _dummy <0> = length {}fw_mbs_01 <24> } ATM_TD_BW_MBS_01 { _dummy <0> = length {}bw_mbs_01 <24> } ATM_TD_BEST_EFFORT { _dummy <0> = length {}best_effort <0> }
-+# 104 "<stdin>"
-+ ATM_TD_TM_OPT { # @@@ should this also go into the TD macro ?
-+
-+ fw_fdisc "atm_fd" <1@8,more> = ATM_FD_NO
-+ bw_fdisc "atm_fd" <1@7,more> = ATM_FD_NO
-+
-+ bw_tag "atm_tag" <1@2,more> = ATM_TAG_NO
-+ fw_tag "atm_tag" <1@1> = ATM_TAG_NO
-+ }
-+ }
-+ }
-+}
-+
-+
-+def ie_bbcap = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ bearer_class "atm_bc" <5@1,more>
-+ _ext <1@8> = case {
-+ 0 {
-+ _ext <1@8,more> = 1
-+ trans_cap "atm_tc" <7@1>
-+ }
-+ default 1 {}
-+ }
-+ _ext <1@8,more> = 1
-+ susc_clip "atm_stc" <2@6,more> = ATM_STC_NO
-+ upcc "atm_upcc" <2@1> = ATM_UPCC_P2P
-+ }
-+}
-+
-+
-+def ie_bhli = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _ext <1@8,more> = 1
-+ hli_type <7@1> = case {
-+
-+
-+ 0 { # ISO
-+ iso_hli <-64>
-+ }
-+ 1 { # User Specific
-+ user_hli <-64>
-+ }
-+
-+ 2 { # High layer profile - UNI 3.0 only
-+ hlp <32>
-+ }
-+
-+ 3 { # Vendor-Specific Application identifier
-+ hli_oui <24>
-+ app_id <32>
-+ }
-+
-+ 4 { # Reference to ITU-T SG 1 B-ISDN Teleservice Recommendation
-+ tobedefined <8>
-+ }
-+
-+ }
-+ }
-+}
-+
-+
-+def ie_blli = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _lid <2@6,more> = multi {
-+ 1 {
-+ _ext <1@8,more> = 1
-+ uil1_proto <5@1>
-+ }
-+ 2 {
-+ uil2_proto "atm_l2" <5@1,more> = case {
-+ ATM_L2_X25_LL,ATM_L2_X25_ML,ATM_L2_HDLC_ARM,
-+ ATM_L2_HDLC_NRM,ATM_L2_HDLC_ABM,ATM_L2_Q922,
-+ ATM_L2_ISO7776 { # CCITT encoding
-+ _ext <1@8> = case {
-+ 0 {
-+ l2_mode "atm_imd" <2@6,more> = ATM_IMD_NORMAL
-+ q933 <2@1,more> = 0
-+ _ext <1@8> = case {
-+ 0 {
-+ window_size <7@1,more>
-+ _ext <1@8> = 1
-+ }
-+ default 1 {}
-+ }
-+ }
-+ default 1 {}
-+ }
-+ }
-+ ATM_L2_USER { # User specified
-+ _ext <1@8> = 0
-+ user_l2 <7@1,more>
-+ _ext <1@8> = 1
-+ }
-+ default ATM_L2_ISO1745,ATM_L2_Q291,ATM_L2_LAPB,
-+ ATM_L2_ISO8802,ATM_L2_X75 { # No additional data
-+ _ext <1@8> = 1
-+ }
-+ }
-+ }
-+ 3 {
-+ uil3_proto "atm_l3" <5@1,more> = case {
-+ ATM_L3_X25,ATM_L3_ISO8208,ATM_L3_X223 { # CCITT coding
-+ _ext <1@8> = case {
-+ 0 {
-+ l3_mode "atm_imd" <2@6,more> = ATM_IMD_NORMAL
-+ _ext <1@8> = case {
-+ 0 {
-+ def_pck_size <4@1,more>
-+ _ext <1@8> = case {
-+ 0 {
-+ _ext <1@8> = 1
-+ pck_win_size <7@1>
-+ }
-+ default 1 {}
-+ }
-+ }
-+ default 1 {}
-+ }
-+ }
-+ default 1 {}
-+ }
-+ }
-+
-+ ATM_L3_H310 { # ITU-T Rec. H.310
-+ _ext <1@8> = case {
-+ 0 {
-+ term_type "atm_tt" <4@1,more> = ATM_TT_RXTX
-+ _ext <1@8> = case {
-+ 0 {
-+ _ext <1@8,more> = 1
-+ fw_mpx_cap "atm_mc" <3@4,more> =
-+ ATM_MC_NONE
-+ bw_mpx_cap "atm_mc" <3@1> = ATM_MC_NONE
-+ }
-+ default 1 {}
-+ }
-+ }
-+ default 1 {}
-+ }
-+ }
-+
-+ ATM_L3_TR9577 { # ISO/IEC TR9577
-+ _ext <1@8> = case {
-+ 0 {
-+ _ext <1@8,more> = 0
-+ ipi_high <7@1> = case {
-+ 0x40 { # SNAP hack
-+ _ext <1@8,more> = 1
-+ _ipi_low <1@7> = case { # ugly
-+ 0 {
-+ _ext <1@8,more> = 1
-+ _snap_id <2@6> = 0
-+ oui <24>
-+ pid <16>
-+ }
-+ default 1 {}
-+ }
-+ }
-+ default 0x0 { # ugly
-+ _ext <1@8,more> = 1
-+ ipi_low <1@7>
-+ }
-+ }
-+ }
-+ default 1 {}
-+ }
-+ }
-+ ATM_L3_USER { # User specified
-+ _ext <1@8> = 0
-+ user_l3 <7@1,more>
-+ _ext <1@8> = 1
-+ }
-+ }
-+ }
-+ }
-+ }
-+}
-+
-+
-+def ie_call_state = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ call_state <6@1>
-+ }
-+}
-+
-+
-+def ie_cdpn = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _ext <1@8,more> = 1
-+ _plan "atm_np" <4@1,more> = case {
-+ ATM_NP_E164 {
-+ _type "atm_ton" <3@5> = ATM_TON_INTRNTNL
-+ cdpn_e164 <-96>
-+ }
-+ ATM_NP_AEA { # ATM Endsystem Address
-+ _type "atm_ton" <3@5> = ATM_TON_UNKNOWN
-+ cdpn_esa <-160>
-+ }
-+ }
-+ }
-+}
-+
-+
-+def ie_cdps = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _ext <1@8,more> = 1
-+
-+
-+
-+
-+ cdps_type "atm_sat" <3@5,more> = ATM_SAT_AEA
-+
-+ _oddeven <1@4> = 0
-+ cdps <-160>
-+ }
-+}
-+
-+
-+def ie_cgpn = { # @@@ extend language to allow same trick as for cdpn
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ cgpn_plan "atm_np" <4@1,more>
-+ cgpn_type "atm_ton" <3@5,more>
-+ _ext <1@8> = case {
-+ 0 {
-+ _ext <1@8,more> = 1
-+ pres_ind "atm_prs" <2@6,more> = ATM_PRS_ALLOW
-+ scr_ind "atm_scrn" <2@1> = ATM_SCRN_UP_NS
-+ }
-+ default 1 {}
-+ }
-+ cgpn <-160>
-+ }
-+}
-+
-+
-+def ie_cgps = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _ext <1@8,more> = 1
-+
-+
-+
-+
-+ cgps_type "atm_sat" <3@5,more> = ATM_SAT_AEA
-+
-+ _oddeven <1@4> = 0
-+ cgps <-160>
-+ }
-+}
-+
-+
-+def ie_cause = {
-+ _ext <1@8,more> = 1 cause_cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _ext <1@8,more> = 1
-+ location "atm_loc" <4@1> = ATM_LOC_USER
-+ _ext <1@8,more> = 1
-+ cause "atm_cv" <7@1> = case {
-+ ATM_CV_UNALLOC,ATM_CV_NO_ROUTE_DEST,ATM_CV_QOS_UNAVAIL { # Note 2
-+ break
-+ _ext <1@8,more> = 1
-+ pu "atm_pu" <1@4,more> = ATM_PU_USER
-+ na "atm_na" <1@3,more> = ATM_NA_NORMAL
-+ cond2 "atm_cond" <2@1> = ATM_COND_UNKNOWN
-+ }
-+ ATM_CV_CALL_REJ { # Note 3
-+ break
-+ _ext <1@8,more> = 1
-+ cond3 "atm_cond" <2@1,more> = ATM_COND_UNKNOWN
-+ reason <5@3> = case {
-+ ATM_RSN_USER {
-+ user_diag <-216>
-+ }
-+ ATM_RSN_IE_MISS,ATM_RSN_IE_INSUFF {
-+ ie_id3 "atm_ie" <8>
-+ }
-+ }
-+ }
-+ ATM_CV_NUM_CHANGED { # Note 4
-+ break
-+ new_dest <-224> # good luck ...
-+ }
-+ ATM_CV_REJ_CLIR { # Note 5
-+ break
-+ invalid <8> # not supported
-+ }
-+ ATM_CV_ACC_INF_DISC,ATM_CV_INCOMP_DEST,ATM_CV_MAND_IE_MISSING,
-+ ATM_CV_UNKNOWN_IE,ATM_CV_INVALID_IE { # Note 6
-+ break
-+ ie_id6 <-224>
-+ }
-+
-+ ATM_CV_UCR_UNAVAIL_OLD,ATM_CV_UCR_UNAVAIL_NEW { # Note 8
-+
-+
-+
-+
-+
-+
-+
-+ break
-+ ucr_id <-224>
-+ }
-+ ATM_CV_NO_SUCH_CHAN { # Note 9
-+ break
-+ unav_vpci <16>
-+ unav_vci <16>
-+ }
-+ ATM_CV_UNKNOWN_MSG_TYPE,ATM_CV_INCOMP_MSG { # Note 10
-+ break
-+ bad_msg_type "atm_msg" <8>
-+ }
-+ ATM_CV_TIMER_EXP { # Note 11
-+ break
-+ timer <24>
-+ }
-+ default 0 {}
-+ }
-+ }
-+}
-+
-+
-+def ie_conn_id = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _ext <1@8,more> = 1
-+ _vp_ass "atm_vpa" <2@4,more> = ATM_VPA_EXPL
-+ _pref_exc "atm_poe" <3@1> = 0
-+ vpi <16>
-+ vci <16>
-+ }
-+}
-+
-+
-+
-+
-+def ie_e2e_tdl = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _id "atm_tdl" <8> = multi {
-+ ATM_TDL_CUM {
-+ cum_delay <16>
-+ }
-+ ATM_TDL_E2EMAX {
-+ max_delay <16>
-+ }
-+ ATM_TDL_NGI {}
-+ }
-+
-+ }
-+}
-+
-+
-+
-+
-+def ie_qos = {
-+# 467 "<stdin>"
-+ _ext <1@8,more> = 1 qos_cs "q2931_cs" <2@6,more> = Q2931_CS_NET _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+
-+ qos_fw <8> = 0
-+ qos_bw <8> = 0
-+ }
-+}
-+
-+
-+def ie_bbrep = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _ext <1@8,more> = 1
-+ rep_ind <4@1> = 2
-+ }
-+}
-+
-+
-+def ie_restart = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _ext <1@8,more> = 1
-+ rst_class <3@1>
-+ }
-+}
-+
-+
-+def ie_bbs_comp = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _ext <1@8,more> = 1
-+ bbsc_ind <7@1> = 0x21
-+ }
-+}
-+
-+
-+def ie_tns = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _ext <1@8,more> = 1
-+ _net_type "atm_tni" <3@5,more> = ATM_TNI_NNI
-+ _carrier_id "atm_nip" <4@1> = ATM_NIP_CARRIER
-+ net_id <-32>
-+ }
-+}
-+
-+
-+
-+
-+def ie_notify = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ notification <-32> # @@@ how many actually ?
-+ }
-+}
-+
-+
-+def ie_oam_td = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _ext <1@8,more> = 1
-+ shaping "atm_shi" <2@6,more> = ATM_SHI_NONE
-+ compliance "atm_oci" <1@5,more> = ATM_OCI_OPT
-+ fault "atm_unfm" <3@1> = ATM_UNFM_NONE
-+ _ext <1@8,more> = 1
-+ fwd_ofi "atm_ofi" <3@5,more> = ATM_OFI_0_0
-+ bwd_ofi "atm_ofi" <3@1> = ATM_OFI_0_0
-+ }
-+}
-+
-+
-+def ie_git = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_NET _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length { # @@@ UNI 4.0 does not specify the coding
-+ _dummy <1@8> = 0 # bit is "spare", although not indicated in spec
-+ id_std_app "atm_irs" <7@1> = case {
-+ ATM_IRS_DSMCC,ATM_IRS_H245 {
-+ _type "atm_it" <8> = ATM_IT_SESSION
-+ _length <8> = length {
-+ session_id <-160>
-+ }
-+ _type "atm_it" <8> = ATM_IT_RESOURCE
-+ _length <8> = length {
-+ resource_id <-32>
-+ }
-+ }
-+ default 0 {
-+ unrecognized_git_identifiers <-224> # 33-5 bytes
-+ }
-+ }
-+ }
-+}
-+
-+
-+def ie_lij_id = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_NET _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length { # @@@ UNI 4.0 does not specify the coding
-+ _ext <1@8,more> = 1
-+ lij_id_type "atm_lit" <7@1> = ATM_LIT_ROOT
-+ lij_id <32>
-+ }
-+}
-+
-+
-+def ie_lij_prm = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_NET _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length { # @@@ UNI 4.0 does not specify the coding
-+ _ext <1@8,more> = 1
-+ lij_scr_ind "atm_lsi" <2@1>
-+ }
-+}
-+
-+
-+def ie_leaf_sn = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_NET _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length { # @@@ UNI 4.0 does not specify the coding
-+ leaf_sn <32>
-+ }
-+}
-+
-+
-+def ie_scope_sel = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_NET _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length { # @@@ UNI 4.0 does not specify the coding
-+ _ext <1@8,more> = 1
-+ scope_type "atm_tcs" <4@1> = ATM_TCS_ORGANIZATIONAL
-+ scope_sel "atm_css" <8>
-+ }
-+}
-+
-+
-+def ie_alt_td = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _id "atm_td" <8> = multi {
-+ ATM_TD_FW_PCR_0 { altfw_pcr_0 <24> } ATM_TD_BW_PCR_0 { altbw_pcr_0 <24> } ATM_TD_FW_PCR_01 { altfw_pcr_01 <24> } ATM_TD_BW_PCR_01 { altbw_pcr_01 <24> } ATM_TD_FW_SCR_0 { altfw_scr_0 <24> } ATM_TD_BW_SCR_0 { altbw_scr_0 <24> } ATM_TD_FW_SCR_01 { altfw_scr_01 <24> } ATM_TD_BW_SCR_01 { altbw_scr_01 <24> } ATM_TD_FW_MBS_0 { altfw_mbs_0 <24> } ATM_TD_BW_MBS_0 { altbw_mbs_0 <24> } ATM_TD_FW_MBS_01 { altfw_mbs_01 <24> } ATM_TD_BW_MBS_01 { altbw_mbs_01 <24> } ATM_TD_BEST_EFFORT { altbest_effort <0> }
-+ }
-+ }
-+}
-+
-+
-+def ie_min_td = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_NET _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length { # @@@ UNI 4.0 does not specify the coding
-+ _id "atm_td" <8> = multi {
-+ ATM_TD_FW_PCR_0 { minfw_pcr_0 <24> } ATM_TD_BW_PCR_0 { minbw_pcr_0 <24> } ATM_TD_FW_PCR_01 { minfw_pcr_01 <24> } ATM_TD_BW_PCR_01 { minbw_pcr_01 <24> }
-+ ATM_TD_FW_MCR_01 { minfw_mcr_01 <24> } ATM_TD_BW_MCR_01 { minbw_mcr_01 <24> }
-+ }
-+ }
-+}
-+
-+
-+def ie_eqos = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_NET _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ eqos_origin "atm_eqo" <8>
-+ _id "atm_eqp" <8> = multi {
-+ ATM_EQP_ACC_FW_CDV {
-+ acc_fw_cdv <24>
-+ }
-+ ATM_EQP_ACC_BW_CDV {
-+ acc_bw_cdv <24>
-+ }
-+ ATM_EQP_CUM_FW_CDV {
-+ cum_fw_cdv <24>
-+ }
-+ ATM_EQP_CUM_BW_CDV {
-+ cum_bw_cdv <24>
-+ }
-+ ATM_EQP_ACC_FW_CLR {
-+ acc_fw_clr <8>
-+ }
-+ ATM_EQP_ACC_BW_CLR {
-+ acc_bw_clr <8>
-+ }
-+ }
-+ }
-+}
-+
-+
-+def ie_abr_add_prm = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_NET _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _id "atm_aap" <8> = multi {
-+ ATM_AAP_FW_REC {
-+ abr_fw_add_rec <32>
-+ }
-+ ATM_AAP_BW_REC {
-+ abr_bw_add_rec <32>
-+ }
-+ }
-+ }
-+}
-+
-+
-+def ie_abr_set_prm = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_NET _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length { # @@@ UNI 4.0 does not specify the coding
-+ _id "atm_asp" <8> = multi {
-+ ATM_ASP_FW_ICR {
-+ abr_fw_icr <24>
-+ }
-+ ATM_ASP_BW_ICR {
-+ abr_bw_icr <24>
-+ }
-+ ATM_ASP_FW_TBE {
-+ abr_fw_tbe <24>
-+ }
-+ ATM_ASP_BW_TBE {
-+ abr_bw_tbe <24>
-+ }
-+ ATM_ASP_CRF_RTT {
-+ atm_crf_rtt <24>
-+ }
-+ ATM_ASP_FW_RIF {
-+ atm_fw_rif <8>
-+ }
-+ ATM_ASP_BW_RIF {
-+ atm_bw_rif <8>
-+ }
-+ ATM_ASP_FW_RDF {
-+ atm_fw_rdf <8>
-+ }
-+ ATM_ASP_BW_RDF {
-+ atm_bw_rdf <8>
-+ }
-+ }
-+ }
-+}
-+
-+
-+
-+
-+def ie_ep_ref = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ _ep_type <8> = 0
-+ ep_ref <16>
-+ }
-+}
-+
-+
-+def ie_ep_state = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ ep_state <6@1>
-+ }
-+}
-+
-+
-+
-+
-+def ie_bbrt = {
-+ _ext <1@8,more> = 1 _cs "q2931_cs" <2@6,more> = Q2931_CS_ITU _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length {
-+ type_of_report "atm_tor" <8>
-+ }
-+}
-+
-+
-+
-+
-+{
-+ _pdsc "q2931_proto" <8> = Q2931_PROTO_DSC
-+ _cr_len <8> = 3
-+ call_ref <24>
-+ msg_type "atm_msg" <8>
-+ _ext <1@8,more> = 1
-+ _flag "atm_flag" <1@5,more> = ATM_FLAG_NO
-+ _action_ind "atm_ai_msg" <2@1> = 0
-+ msg_len <16> = length {
-+ _ie_id "atm_ie" <8> = multi {
-+ aal: ATM_IE_AAL ie_aal
-+ td: ATM_IE_TD ie_td
-+ bbcap: ATM_IE_BBCAP ie_bbcap
-+ bhli: ATM_IE_BHLI ie_bhli
-+ blli1: ATM_IE_BLLI ie_blli
-+ blli2: ATM_IE_BLLI ie_blli
-+ blli3: ATM_IE_BLLI ie_blli
-+ call_state: ATM_IE_CALL_STATE ie_call_state
-+ cdpn: ATM_IE_CDPN ie_cdpn
-+ cdps: ATM_IE_CDPS ie_cdps
-+ cgpn: ATM_IE_CGPN ie_cgpn
-+ cgps: ATM_IE_CGPS ie_cgps
-+ cause: ATM_IE_CAUSE ie_cause
-+ cause2: ATM_IE_CAUSE ie_cause
-+ conn_id: ATM_IE_CONN_ID ie_conn_id
-+
-+ e2e_tdl: ATM_IE_E2E_TDL ie_e2e_tdl
-+
-+ qos: ATM_IE_QOS ie_qos
-+ bbrep: ATM_IE_BBREP ie_bbrep
-+ restart: ATM_IE_RESTART ie_restart
-+ bbs_comp: ATM_IE_BBS_COMP ie_bbs_comp
-+ tns: ATM_IE_TNS ie_tns
-+
-+ notify: ATM_IE_NOTIFY ie_notify
-+ oam_td: ATM_IE_OAM_TD ie_oam_td
-+ git: ATM_IE_GIT ie_git
-+ git2: ATM_IE_GIT ie_git
-+ git3: ATM_IE_GIT ie_git
-+ lij_id: ATM_IE_LIJ_ID ie_lij_id
-+ lij_prm: ATM_IE_LIJ_PRM ie_lij_prm
-+ leaf_sn: ATM_IE_LEAF_SN ie_leaf_sn
-+ scope_sel: ATM_IE_SCOPE_SEL ie_scope_sel
-+ alt_td: ATM_IE_ALT_TD ie_alt_td
-+ min_td: ATM_IE_MIN_TD ie_min_td
-+ eqos: ATM_IE_EQOS ie_eqos
-+ abr_add_prm:ATM_IE_ABR_ADD_PRM ie_abr_add_prm
-+ abr_set_prm:ATM_IE_ABR_SET_PRM ie_abr_set_prm
-+
-+ ep_ref: ATM_IE_EPR ie_ep_ref
-+ ep_state: ATM_IE_EP_STATE ie_ep_state
-+
-+ bbrt: ATM_IE_BBRT ie_bbrt
-+
-+ default 0 {
-+ _ext <1@8,more> = 1 __cs "q2931_cs" <2@6,more> = 0 _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_ie" <3@1> = 0 _ie_len <16> = recover RECOV_IND_IE length
-+ abort RECOV_ASE_UNKNOWN_IE
-+ }
-+ }
-+ }
-+}
---- linux-atm-2.4.1.orig/src/saal/Makefile.in
-+++ linux-atm-2.4.1/src/saal/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -87,8 +87,7 @@
-
- noinst_LIBRARIES = libsaal.a
-
--libsaal_a_SOURCES = pdu.h queue.h saal.h sscf.h sscop.h pdu.c queue.c saal.c \
-- sscf.c sscop.c
-+libsaal_a_SOURCES = pdu.h queue.h saal.h sscf.h sscop.h pdu.c queue.c saal.c sscf.c sscop.c
-
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
- CONFIG_HEADER = ../../config.h
-@@ -114,8 +113,10 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/pdu.P .deps/queue.P .deps/saal.P .deps/sscf.P \
-+.deps/sscop.P
- SOURCES = $(libsaal_a_SOURCES)
- OBJECTS = $(libsaal_a_OBJECTS)
-
-@@ -123,9 +124,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/saal/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/saal/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -139,9 +140,6 @@
-
- maintainer-clean-noinstLIBRARIES:
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -164,9 +162,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -206,7 +201,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -222,6 +217,11 @@
- subdir = src/saal
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/saal/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -232,20 +232,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--pdu.o: pdu.c ../../config.h ../../src/include/stdint.h pdu.h \
-- ../../src/include/atmd.h ../../src/include/atm.h
--queue.o: queue.c ../../config.h ../../src/include/atmd.h \
-- ../../src/include/stdint.h ../../src/include/atm.h queue.h
--saal.o: saal.c ../../config.h sscop.h ../../src/include/stdint.h \
-- ../../src/include/atmd.h ../../src/include/atm.h queue.h saal.h \
-- sscf.h
--sscf.o: sscf.c ../../config.h ../../src/include/atmd.h \
-- ../../src/include/stdint.h ../../src/include/atm.h sscop.h \
-- queue.h sscf.h
--sscop.o: sscop.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atmd.h ../../src/include/atm.h sscop.h \
-- queue.h pdu.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -282,27 +300,27 @@
-
- maintainer-clean-generic:
- mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-noinstLIBRARIES clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+ clean-depend clean-generic mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-noinstLIBRARIES distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-
- maintainer-clean-am: maintainer-clean-noinstLIBRARIES \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -313,12 +331,14 @@
- mostlyclean-compile distclean-compile clean-compile \
- maintainer-clean-compile mostlyclean-libtool distclean-libtool \
- clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
---- linux-atm-2.4.1.orig/src/sigd/Makefile.in
-+++ linux-atm-2.4.1/src/sigd/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -88,14 +88,9 @@
- INCLUDES = -I$(top_builddir)/src/qgen -I$(top_builddir)/src/saal -I.
-
- sbin_PROGRAMS = atmsigd
--atmsigd_SOURCES = atmsigd.c io.c io.h kernel.c proto.c proto.h uni.c \
-- sap.c sap.h timeout.c timeout.h trace.c trace.h \
-- policy.c policy.h cfg_y.y cfg_l.l
--
--atmsigd_XTRAS = mess.o $(top_builddir)/src/qgen/q.out.o \
-- $(top_builddir)/src/qgen/qd.dump.o \
-- $(top_builddir)/src/lib/libatm.la \
-- $(top_builddir)/src/saal/libsaal.a
-+atmsigd_SOURCES = atmsigd.c io.c io.h kernel.c proto.c proto.h uni.c sap.c sap.h timeout.c timeout.h trace.c trace.h policy.c policy.h cfg_y.y cfg_l.l
-+
-+atmsigd_XTRAS = mess.o $(top_builddir)/src/qgen/q.out.o $(top_builddir)/src/qgen/qd.dump.o $(top_builddir)/src/lib/libatm.la $(top_builddir)/src/saal/libsaal.a
-
- atmsigd_LDADD = $(atmsigd_XTRAS) -lfl
- atmsigd_DEPENDENCIES = mess.c $(atmsigd_XTRAS)
-@@ -140,8 +135,11 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/atmsigd.P .deps/cfg_l.P .deps/cfg_y.P .deps/io.P \
-+.deps/kernel.P .deps/policy.P .deps/proto.P .deps/sap.P .deps/timeout.P \
-+.deps/trace.P .deps/uni.P
- SOURCES = $(atmsigd_SOURCES)
- OBJECTS = $(atmsigd_OBJECTS)
-
-@@ -149,9 +147,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .l .lo .o .obj .s .y
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/sigd/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/sigd/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -181,9 +179,6 @@
- rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
- done
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -206,9 +201,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -347,7 +339,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -363,6 +355,11 @@
- subdir = src/sigd
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/sigd/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -373,69 +370,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--atmsigd.o: atmsigd.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h \
-- ../../src/qgen/qlib.h io.h proto.h ../../src/include/atmsap.h \
-- ../../src/saal/saal.h ../../src/saal/sscf.h \
-- ../../src/saal/sscop.h ../../src/saal/queue.h trace.h
--cfg_l.o: cfg_l.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h cfg_y.h
--cfg_y.o: cfg_y.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h proto.h \
-- ../../src/include/atmsap.h ../../src/saal/saal.h \
-- ../../src/saal/sscf.h ../../src/saal/sscop.h \
-- ../../src/saal/queue.h io.h trace.h policy.h
--io.o: io.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h \
-- ../../src/qgen/uni.h ../../src/saal/pdu.h proto.h \
-- ../../src/include/atmsap.h ../../src/saal/saal.h \
-- ../../src/saal/sscf.h ../../src/saal/sscop.h \
-- ../../src/saal/queue.h io.h trace.h
--kernel.o: kernel.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h \
-- ../../src/qgen/uni.h ../../src/qgen/qlib.h \
-- ../../src/qgen/q.out.h proto.h ../../src/include/atmsap.h \
-- ../../src/saal/saal.h ../../src/saal/sscf.h \
-- ../../src/saal/sscop.h ../../src/saal/queue.h sap.h io.h \
-- policy.h timeout.h
--mess.o: mess.c ../../config.h
--policy.o: policy.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h proto.h \
-- ../../src/include/atmsap.h ../../src/saal/saal.h \
-- ../../src/saal/sscf.h ../../src/saal/sscop.h \
-- ../../src/saal/queue.h policy.h
--proto.o: proto.c ../../config.h ../../src/include/atmd.h \
-- ../../src/include/stdint.h ../../src/include/atm.h \
-- ../../src/qgen/uni.h ../../src/qgen/qlib.h \
-- ../../src/qgen/q.out.h io.h proto.h ../../src/include/atmsap.h \
-- ../../src/saal/saal.h ../../src/saal/sscf.h \
-- ../../src/saal/sscop.h ../../src/saal/queue.h sap.h
--sap.o: sap.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h \
-- ../../src/qgen/uni.h ../../src/qgen/qlib.h \
-- ../../src/qgen/q.out.h ../../src/qgen/common.h proto.h \
-- ../../src/include/atmsap.h ../../src/saal/saal.h \
-- ../../src/saal/sscf.h ../../src/saal/sscop.h \
-- ../../src/saal/queue.h sap.h
--timeout.o: timeout.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h \
-- ../../src/qgen/uni.h proto.h ../../src/include/atmsap.h \
-- ../../src/saal/saal.h ../../src/saal/sscf.h \
-- ../../src/saal/sscop.h ../../src/saal/queue.h timeout.h
--trace.o: trace.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h \
-- ../../src/include/atmsap.h trace.h proto.h \
-- ../../src/saal/saal.h ../../src/saal/sscf.h \
-- ../../src/saal/sscop.h ../../src/saal/queue.h \
-- ../../src/qgen/qlib.h
--uni.o: uni.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h \
-- ../../src/qgen/uni.h ../../src/qgen/qlib.h \
-- ../../src/qgen/q.out.h proto.h ../../src/include/atmsap.h \
-- ../../src/saal/saal.h ../../src/saal/sscf.h \
-- ../../src/saal/sscop.h ../../src/saal/queue.h sap.h io.h \
-- policy.h timeout.h trace.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -474,29 +440,29 @@
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-
- maintainer-clean-generic:
-- -test -z "cfg_llcfg_yhcfg_yc" || rm -f cfg_ll cfg_yh cfg_yc
-+ -test -z "cfg_lccfg_yhcfg_yc" || rm -f cfg_lc cfg_yh cfg_yc
- mostlyclean-am: mostlyclean-sbinPROGRAMS mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-sbinPROGRAMS clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+ clean-depend clean-generic mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-sbinPROGRAMS distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-
- maintainer-clean-am: maintainer-clean-sbinPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -509,12 +475,14 @@
- distclean-libtool clean-libtool maintainer-clean-libtool install-man4 \
- uninstall-man4 install-man8 uninstall-man8 install-man uninstall-man \
- uninstall-sysconfDATA install-sysconfDATA tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- mess.c: $(top_builddir)/src/qgen/uni.h mkmess.pl
---- linux-atm-2.4.1.orig/src/sigd/cfg_y.c
-+++ linux-atm-2.4.1/src/sigd/cfg_y.c
-@@ -1,46 +1,137 @@
-+/* A Bison parser, made by GNU Bison 1.875d. */
-
--/* A Bison parser, made from cfg_y.y
-- by GNU Bison version 1.28 */
-+/* Skeleton parser for Yacc-like parsing with Bison,
-+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-
--#define YYBISON 1 /* Identify Bison output. */
-+ 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.
-
--#define TOK_LEVEL 257
--#define TOK_DEBUG 258
--#define TOK_INFO 259
--#define TOK_WARN 260
--#define TOK_ERROR 261
--#define TOK_FATAL 262
--#define TOK_SIG 263
--#define TOK_UNI30 264
--#define TOK_UNI31 265
--#define TOK_UNI40 266
--#define TOK_Q2963_1 267
--#define TOK_SAAL 268
--#define TOK_VC 269
--#define TOK_IO 270
--#define TOK_MODE 271
--#define TOK_USER 272
--#define TOK_NET 273
--#define TOK_SWITCH 274
--#define TOK_VPCI 275
--#define TOK_ITF 276
--#define TOK_PCR 277
--#define TOK_TRACE 278
--#define TOK_POLICY 279
--#define TOK_ALLOW 280
--#define TOK_REJECT 281
--#define TOK_ENTITY 282
--#define TOK_DEFAULT 283
--#define TOK_NUMBER 284
--#define TOK_MAX_RATE 285
--#define TOK_DUMP_DIR 286
--#define TOK_LOGFILE 287
--#define TOK_QOS 288
--#define TOK_FROM 289
--#define TOK_TO 290
--#define TOK_ROUTE 291
--#define TOK_PVC 292
-+ 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. */
-+
-+/* As a special exception, when this file is copied by Bison into a
-+ Bison output file, you may use that output file without restriction.
-+ This special exception was added by the Free Software Foundation
-+ in version 1.24 of Bison. */
-+
-+/* Written by Richard Stallman by simplifying the original so called
-+ ``semantic'' parser. */
-+
-+/* All symbols defined below should begin with yy or YY, to avoid
-+ infringing on user name space. This should be done even for local
-+ variables, as they might otherwise be expanded by user macros.
-+ There are some unavoidable exceptions within include files to
-+ define necessary library symbols; they are noted "INFRINGES ON
-+ USER NAME SPACE" below. */
-+
-+/* Identify Bison output. */
-+#define YYBISON 1
-+
-+/* Skeleton name. */
-+#define YYSKELETON_NAME "yacc.c"
-+
-+/* Pure parsers. */
-+#define YYPURE 0
-+
-+/* Using locations. */
-+#define YYLSP_NEEDED 0
-+
-+
-+
-+/* Tokens. */
-+#ifndef YYTOKENTYPE
-+# define YYTOKENTYPE
-+ /* Put the tokens into the symbol table, so that GDB and other debuggers
-+ know about them. */
-+ enum yytokentype {
-+ TOK_LEVEL = 258,
-+ TOK_DEBUG = 259,
-+ TOK_INFO = 260,
-+ TOK_WARN = 261,
-+ TOK_ERROR = 262,
-+ TOK_FATAL = 263,
-+ TOK_SIG = 264,
-+ TOK_UNI30 = 265,
-+ TOK_UNI31 = 266,
-+ TOK_UNI40 = 267,
-+ TOK_Q2963_1 = 268,
-+ TOK_SAAL = 269,
-+ TOK_VC = 270,
-+ TOK_IO = 271,
-+ TOK_MODE = 272,
-+ TOK_USER = 273,
-+ TOK_NET = 274,
-+ TOK_SWITCH = 275,
-+ TOK_VPCI = 276,
-+ TOK_ITF = 277,
-+ TOK_PCR = 278,
-+ TOK_TRACE = 279,
-+ TOK_POLICY = 280,
-+ TOK_ALLOW = 281,
-+ TOK_REJECT = 282,
-+ TOK_ENTITY = 283,
-+ TOK_DEFAULT = 284,
-+ TOK_NUMBER = 285,
-+ TOK_MAX_RATE = 286,
-+ TOK_DUMP_DIR = 287,
-+ TOK_LOGFILE = 288,
-+ TOK_QOS = 289,
-+ TOK_FROM = 290,
-+ TOK_TO = 291,
-+ TOK_ROUTE = 292,
-+ TOK_PVC = 293
-+ };
-+#endif
-+#define TOK_LEVEL 258
-+#define TOK_DEBUG 259
-+#define TOK_INFO 260
-+#define TOK_WARN 261
-+#define TOK_ERROR 262
-+#define TOK_FATAL 263
-+#define TOK_SIG 264
-+#define TOK_UNI30 265
-+#define TOK_UNI31 266
-+#define TOK_UNI40 267
-+#define TOK_Q2963_1 268
-+#define TOK_SAAL 269
-+#define TOK_VC 270
-+#define TOK_IO 271
-+#define TOK_MODE 272
-+#define TOK_USER 273
-+#define TOK_NET 274
-+#define TOK_SWITCH 275
-+#define TOK_VPCI 276
-+#define TOK_ITF 277
-+#define TOK_PCR 278
-+#define TOK_TRACE 279
-+#define TOK_POLICY 280
-+#define TOK_ALLOW 281
-+#define TOK_REJECT 282
-+#define TOK_ENTITY 283
-+#define TOK_DEFAULT 284
-+#define TOK_NUMBER 285
-+#define TOK_MAX_RATE 286
-+#define TOK_DUMP_DIR 287
-+#define TOK_LOGFILE 288
-+#define TOK_QOS 289
-+#define TOK_FROM 290
-+#define TOK_TO 291
-+#define TOK_ROUTE 292
-+#define TOK_PVC 293
-+
-+
-+
-+
-+/* Copy the first part of user declarations. */
- #line 1 "cfg_y.y"
-
- /* cfg.y - configuration language */
-@@ -51,6 +142,7 @@
- #include <config.h>
- #endif
-
-+#include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include <limits.h>
-@@ -63,6 +155,8 @@
- #include "trace.h"
- #include "policy.h"
-
-+extern void yywarn(const char *s);
-+extern void yyerror(const char *s);
-
- static RULE *rule;
- static SIG_ENTITY *curr_sig = &_entity;
-@@ -93,516 +187,830 @@
- }
-
-
--#line 53 "cfg_y.y"
--typedef union {
-+
-+/* Enabling traces. */
-+#ifndef YYDEBUG
-+# define YYDEBUG 0
-+#endif
-+
-+/* Enabling verbose error messages. */
-+#ifdef YYERROR_VERBOSE
-+# undef YYERROR_VERBOSE
-+# define YYERROR_VERBOSE 1
-+#else
-+# define YYERROR_VERBOSE 0
-+#endif
-+
-+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#line 56 "cfg_y.y"
-+typedef union YYSTYPE {
- int num;
- char *str;
- struct sockaddr_atmpvc pvc;
- } YYSTYPE;
--#include <stdio.h>
-+/* Line 191 of yacc.c. */
-+#line 213 "y.tab.c"
-+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-+# define YYSTYPE_IS_DECLARED 1
-+# define YYSTYPE_IS_TRIVIAL 1
-+#endif
-+
-+
-+
-+/* Copy the second part of user declarations. */
-+
-+
-+/* Line 214 of yacc.c. */
-+#line 225 "y.tab.c"
-+
-+#if ! defined (yyoverflow) || YYERROR_VERBOSE
-+
-+# ifndef YYFREE
-+# define YYFREE free
-+# endif
-+# ifndef YYMALLOC
-+# define YYMALLOC malloc
-+# endif
-+
-+/* The parser invokes alloca or malloc; define the necessary symbols. */
-+
-+# ifdef YYSTACK_USE_ALLOCA
-+# if YYSTACK_USE_ALLOCA
-+# define YYSTACK_ALLOC alloca
-+# endif
-+# else
-+# if defined (alloca) || defined (_ALLOCA_H)
-+# define YYSTACK_ALLOC alloca
-+# else
-+# ifdef __GNUC__
-+# define YYSTACK_ALLOC __builtin_alloca
-+# endif
-+# endif
-+# endif
-+
-+# ifdef YYSTACK_ALLOC
-+ /* Pacify GCC's `empty if-body' warning. */
-+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-+# else
-+# if defined (__STDC__) || defined (__cplusplus)
-+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+# define YYSIZE_T size_t
-+# endif
-+# define YYSTACK_ALLOC YYMALLOC
-+# define YYSTACK_FREE YYFREE
-+# endif
-+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-+
-+
-+#if (! defined (yyoverflow) \
-+ && (! defined (__cplusplus) \
-+ || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-+
-+/* A type that is properly aligned for any stack member. */
-+union yyalloc
-+{
-+ short int yyss;
-+ YYSTYPE yyvs;
-+ };
-+
-+/* The size of the maximum gap between one aligned stack and the next. */
-+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-+
-+/* The size of an array large to enough to hold all stacks, each with
-+ N elements. */
-+# define YYSTACK_BYTES(N) \
-+ ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
-+ + YYSTACK_GAP_MAXIMUM)
-+
-+/* Copy COUNT objects from FROM to TO. The source and destination do
-+ not overlap. */
-+# ifndef YYCOPY
-+# if defined (__GNUC__) && 1 < __GNUC__
-+# define YYCOPY(To, From, Count) \
-+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-+# else
-+# define YYCOPY(To, From, Count) \
-+ do \
-+ { \
-+ register YYSIZE_T yyi; \
-+ for (yyi = 0; yyi < (Count); yyi++) \
-+ (To)[yyi] = (From)[yyi]; \
-+ } \
-+ while (0)
-+# endif
-+# endif
-+
-+/* Relocate STACK from its old location to the new one. The
-+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
-+ elements in the stack, and YYPTR gives the new location of the
-+ stack. Advance YYPTR to a properly aligned location for the next
-+ stack. */
-+# define YYSTACK_RELOCATE(Stack) \
-+ do \
-+ { \
-+ YYSIZE_T yynewbytes; \
-+ YYCOPY (&yyptr->Stack, Stack, yysize); \
-+ Stack = &yyptr->Stack; \
-+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-+ yyptr += yynewbytes / sizeof (*yyptr); \
-+ } \
-+ while (0)
-
--#ifndef __cplusplus
--#ifndef __STDC__
--#define const
--#endif
- #endif
-
-+#if defined (__STDC__) || defined (__cplusplus)
-+ typedef signed char yysigned_char;
-+#else
-+ typedef short int yysigned_char;
-+#endif
-
--
--#define YYFINAL 117
--#define YYFLAG -32768
--#define YYNTBASE 41
--
--#define YYTRANSLATE(x) ((unsigned)(x) <= 292 ? yytranslate[x] : 71)
--
--static const char yytranslate[] = { 0,
-- 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, 39, 2, 40, 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, 2, 2, 2, 2, 1, 3, 4, 5, 6,
-- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
-- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
-- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
-- 37, 38
-+/* YYFINAL -- State number of the termination state. */
-+#define YYFINAL 53
-+/* YYLAST -- Last index in YYTABLE. */
-+#define YYLAST 108
-+
-+/* YYNTOKENS -- Number of terminals. */
-+#define YYNTOKENS 41
-+/* YYNNTS -- Number of nonterminals. */
-+#define YYNNTS 31
-+/* YYNRULES -- Number of rules. */
-+#define YYNRULES 79
-+/* YYNRULES -- Number of states. */
-+#define YYNSTATES 117
-+
-+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
-+#define YYUNDEFTOK 2
-+#define YYMAXUTOK 293
-+
-+#define YYTRANSLATE(YYX) \
-+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-+
-+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
-+static const unsigned char yytranslate[] =
-+{
-+ 0, 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, 39, 2, 40, 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, 2, 2, 2, 2, 1, 2, 3, 4,
-+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
-+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
-+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
-+ 35, 36, 37, 38
- };
-
--#if YYDEBUG != 0
--static const short yyprhs[] = { 0,
-- 0, 3, 4, 7, 8, 11, 14, 17, 20, 23,
-- 26, 29, 30, 35, 36, 40, 41, 44, 49, 52,
-- 54, 56, 58, 60, 62, 66, 67, 70, 72, 76,
-- 77, 80, 82, 86, 87, 90, 92, 96, 97, 100,
-- 102, 106, 107, 110, 113, 118, 120, 122, 124, 126,
-- 128, 131, 134, 137, 140, 143, 145, 147, 150, 152,
-- 154, 157, 158, 160, 162, 164, 166, 168, 170, 172,
-- 174, 176, 179, 180, 184, 186, 188, 190
-+#if YYDEBUG
-+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-+ YYRHS. */
-+static const unsigned char yyprhs[] =
-+{
-+ 0, 0, 3, 6, 7, 10, 11, 14, 17, 20,
-+ 23, 26, 29, 32, 33, 38, 39, 43, 44, 47,
-+ 52, 55, 57, 59, 61, 63, 65, 69, 70, 73,
-+ 75, 79, 80, 83, 85, 89, 90, 93, 95, 99,
-+ 100, 103, 105, 109, 110, 113, 116, 121, 123, 125,
-+ 127, 129, 131, 134, 137, 140, 143, 146, 148, 150,
-+ 153, 155, 157, 160, 161, 163, 165, 167, 169, 171,
-+ 173, 175, 177, 179, 182, 183, 187, 189, 191, 193
- };
-
--static const short yyrhs[] = { 42,
-- 43, 0, 0, 44, 42, 0, 0, 45, 43, 0,
-- 3, 65, 0, 9, 50, 0, 14, 52, 0, 16,
-- 54, 0, 4, 56, 0, 25, 58, 0, 0, 28,
-- 38, 46, 47, 0, 0, 39, 48, 40, 0, 0,
-- 49, 48, 0, 21, 30, 22, 30, 0, 17, 66,
-- 0, 34, 0, 31, 0, 37, 0, 29, 0, 60,
-- 0, 39, 51, 40, 0, 0, 60, 51, 0, 61,
-- 0, 39, 53, 40, 0, 0, 61, 53, 0, 62,
-- 0, 39, 55, 40, 0, 0, 62, 55, 0, 63,
-- 0, 39, 57, 40, 0, 0, 63, 57, 0, 67,
-- 0, 39, 59, 40, 0, 0, 67, 59, 0, 3,
-- 65, 0, 21, 30, 22, 30, 0, 10, 0, 11,
-- 0, 12, 0, 13, 0, 19, 0, 17, 66, 0,
-- 3, 65, 0, 3, 65, 0, 15, 38, 0, 23,
-- 30, 0, 34, 0, 31, 0, 3, 65, 0, 32,
-- 0, 33, 0, 24, 64, 0, 0, 30, 0, 4,
-- 0, 5, 0, 6, 0, 7, 0, 8, 0, 18,
-- 0, 19, 0, 20, 0, 3, 65, 0, 0, 69,
-- 68, 70, 0, 26, 0, 27, 0, 35, 0, 36,
-- 0
-+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-+static const yysigned_char yyrhs[] =
-+{
-+ 42, 0, -1, 43, 44, -1, -1, 45, 43, -1,
-+ -1, 46, 44, -1, 3, 66, -1, 9, 51, -1,
-+ 14, 53, -1, 16, 55, -1, 4, 57, -1, 25,
-+ 59, -1, -1, 28, 38, 47, 48, -1, -1, 39,
-+ 49, 40, -1, -1, 50, 49, -1, 21, 30, 22,
-+ 30, -1, 17, 67, -1, 34, -1, 31, -1, 37,
-+ -1, 29, -1, 61, -1, 39, 52, 40, -1, -1,
-+ 61, 52, -1, 62, -1, 39, 54, 40, -1, -1,
-+ 62, 54, -1, 63, -1, 39, 56, 40, -1, -1,
-+ 63, 56, -1, 64, -1, 39, 58, 40, -1, -1,
-+ 64, 58, -1, 68, -1, 39, 60, 40, -1, -1,
-+ 68, 60, -1, 3, 66, -1, 21, 30, 22, 30,
-+ -1, 10, -1, 11, -1, 12, -1, 13, -1, 19,
-+ -1, 17, 67, -1, 3, 66, -1, 3, 66, -1,
-+ 15, 38, -1, 23, 30, -1, 34, -1, 31, -1,
-+ 3, 66, -1, 32, -1, 33, -1, 24, 65, -1,
-+ -1, 30, -1, 4, -1, 5, -1, 6, -1, 7,
-+ -1, 8, -1, 18, -1, 19, -1, 20, -1, 3,
-+ 66, -1, -1, 70, 69, 71, -1, 26, -1, 27,
-+ -1, 35, -1, 36, -1
- };
-
--#endif
--
--#if YYDEBUG != 0
--static const short yyrline[] = { 0,
-- 73, 77, 78, 81, 82, 105, 110, 111, 112, 113,
-- 114, 117, 138, 140, 141, 144, 145, 148, 153, 154,
-- 158, 162, 176, 182, 184, 187, 188, 191, 193, 196,
-- 197, 200, 202, 205, 206, 209, 211, 214, 215, 218,
-- 220, 223, 224, 227, 234, 238, 247, 256, 265, 274,
-- 279, 282, 290, 295, 299, 304, 308, 314, 319, 324,
-- 328, 334, 338, 344, 349, 353, 357, 361, 367, 372,
-- 376, 382, 387, 393, 395, 400, 406, 412
-+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-+static const unsigned short int yyrline[] =
-+{
-+ 0, 77, 77, 80, 81, 84, 85, 109, 113, 114,
-+ 115, 116, 117, 122, 121, 151, 152, 155, 156, 160,
-+ 164, 165, 169, 173, 187, 194, 195, 198, 199, 203,
-+ 204, 207, 208, 212, 213, 216, 217, 221, 222, 225,
-+ 226, 230, 231, 234, 235, 239, 245, 249, 258, 267,
-+ 276, 285, 290, 294, 302, 306, 310, 315, 319, 326,
-+ 330, 335, 339, 346, 349, 356, 360, 364, 368, 372,
-+ 379, 383, 387, 394, 399, 398, 407, 411, 418, 423
- };
- #endif
-
--
--#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
--
--static const char * const yytname[] = { "$","error","$undefined.","TOK_LEVEL",
--"TOK_DEBUG","TOK_INFO","TOK_WARN","TOK_ERROR","TOK_FATAL","TOK_SIG","TOK_UNI30",
--"TOK_UNI31","TOK_UNI40","TOK_Q2963_1","TOK_SAAL","TOK_VC","TOK_IO","TOK_MODE",
--"TOK_USER","TOK_NET","TOK_SWITCH","TOK_VPCI","TOK_ITF","TOK_PCR","TOK_TRACE",
--"TOK_POLICY","TOK_ALLOW","TOK_REJECT","TOK_ENTITY","TOK_DEFAULT","TOK_NUMBER",
--"TOK_MAX_RATE","TOK_DUMP_DIR","TOK_LOGFILE","TOK_QOS","TOK_FROM","TOK_TO","TOK_ROUTE",
--"TOK_PVC","'{'","'}'","all","global","local","item","entity","@1","opt_options",
--"options","option","sig","sig_items","saal","saal_items","io","io_items","debug",
--"debug_items","policy","policy_items","sig_item","saal_item","io_item","debug_item",
--"opt_trace_size","level","mode","policy_item","@2","action","direction", NULL
-+#if YYDEBUG || YYERROR_VERBOSE
-+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-+static const char *const yytname[] =
-+{
-+ "$end", "error", "$undefined", "TOK_LEVEL", "TOK_DEBUG", "TOK_INFO",
-+ "TOK_WARN", "TOK_ERROR", "TOK_FATAL", "TOK_SIG", "TOK_UNI30",
-+ "TOK_UNI31", "TOK_UNI40", "TOK_Q2963_1", "TOK_SAAL", "TOK_VC", "TOK_IO",
-+ "TOK_MODE", "TOK_USER", "TOK_NET", "TOK_SWITCH", "TOK_VPCI", "TOK_ITF",
-+ "TOK_PCR", "TOK_TRACE", "TOK_POLICY", "TOK_ALLOW", "TOK_REJECT",
-+ "TOK_ENTITY", "TOK_DEFAULT", "TOK_NUMBER", "TOK_MAX_RATE",
-+ "TOK_DUMP_DIR", "TOK_LOGFILE", "TOK_QOS", "TOK_FROM", "TOK_TO",
-+ "TOK_ROUTE", "TOK_PVC", "'{'", "'}'", "$accept", "all", "global",
-+ "local", "item", "entity", "@1", "opt_options", "options", "option",
-+ "sig", "sig_items", "saal", "saal_items", "io", "io_items", "debug",
-+ "debug_items", "policy", "policy_items", "sig_item", "saal_item",
-+ "io_item", "debug_item", "opt_trace_size", "level", "mode",
-+ "policy_item", "@2", "action", "direction", 0
- };
- #endif
-
--static const short yyr1[] = { 0,
-- 41, 42, 42, 43, 43, 44, 44, 44, 44, 44,
-- 44, 46, 45, 47, 47, 48, 48, 49, 49, 49,
-- 49, 49, 49, 50, 50, 51, 51, 52, 52, 53,
-- 53, 54, 54, 55, 55, 56, 56, 57, 57, 58,
-- 58, 59, 59, 60, 60, 60, 60, 60, 60, 60,
-- 60, 61, 62, 62, 62, 62, 62, 63, 63, 63,
-- 63, 64, 64, 65, 65, 65, 65, 65, 66, 66,
-- 66, 67, 68, 67, 69, 69, 70, 70
-+# ifdef YYPRINT
-+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-+ token YYLEX-NUM. */
-+static const unsigned short int yytoknum[] =
-+{
-+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
-+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
-+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
-+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 123,
-+ 125
- };
-+# endif
-
--static const short yyr2[] = { 0,
-- 2, 0, 2, 0, 2, 2, 2, 2, 2, 2,
-- 2, 0, 4, 0, 3, 0, 2, 4, 2, 1,
-- 1, 1, 1, 1, 3, 0, 2, 1, 3, 0,
-- 2, 1, 3, 0, 2, 1, 3, 0, 2, 1,
-- 3, 0, 2, 2, 4, 1, 1, 1, 1, 1,
-- 2, 2, 2, 2, 2, 1, 1, 2, 1, 1,
-- 2, 0, 1, 1, 1, 1, 1, 1, 1, 1,
-- 1, 2, 0, 3, 1, 1, 1, 1
-+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-+static const unsigned char yyr1[] =
-+{
-+ 0, 41, 42, 43, 43, 44, 44, 45, 45, 45,
-+ 45, 45, 45, 47, 46, 48, 48, 49, 49, 50,
-+ 50, 50, 50, 50, 50, 51, 51, 52, 52, 53,
-+ 53, 54, 54, 55, 55, 56, 56, 57, 57, 58,
-+ 58, 59, 59, 60, 60, 61, 61, 61, 61, 61,
-+ 61, 61, 61, 62, 63, 63, 63, 63, 63, 64,
-+ 64, 64, 64, 65, 65, 66, 66, 66, 66, 66,
-+ 67, 67, 67, 68, 69, 68, 70, 70, 71, 71
- };
-
--static const short yydefact[] = { 2,
-- 0, 0, 0, 0, 0, 0, 4, 2, 64, 65,
-- 66, 67, 68, 6, 0, 62, 59, 60, 38, 10,
-- 36, 0, 46, 47, 48, 49, 0, 50, 0, 26,
-- 7, 24, 0, 30, 8, 28, 0, 0, 0, 57,
-- 56, 34, 9, 32, 0, 75, 76, 42, 11, 40,
-- 73, 0, 1, 4, 3, 58, 63, 61, 0, 38,
-- 44, 69, 70, 71, 51, 0, 0, 26, 52, 0,
-- 30, 53, 54, 55, 0, 34, 72, 0, 42, 0,
-- 12, 5, 37, 39, 0, 25, 27, 29, 31, 33,
-- 35, 41, 43, 77, 78, 74, 14, 45, 16, 13,
-- 0, 0, 23, 21, 20, 22, 0, 16, 19, 0,
-- 15, 17, 0, 18, 0, 0, 0
-+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-+static const unsigned char yyr2[] =
-+{
-+ 0, 2, 2, 0, 2, 0, 2, 2, 2, 2,
-+ 2, 2, 2, 0, 4, 0, 3, 0, 2, 4,
-+ 2, 1, 1, 1, 1, 1, 3, 0, 2, 1,
-+ 3, 0, 2, 1, 3, 0, 2, 1, 3, 0,
-+ 2, 1, 3, 0, 2, 2, 4, 1, 1, 1,
-+ 1, 1, 2, 2, 2, 2, 2, 1, 1, 2,
-+ 1, 1, 2, 0, 1, 1, 1, 1, 1, 1,
-+ 1, 1, 1, 2, 0, 3, 1, 1, 1, 1
- };
-
--static const short yydefgoto[] = { 115,
-- 7, 53, 8, 54, 97, 100, 107, 108, 31, 67,
-- 35, 70, 43, 75, 20, 59, 49, 78, 68, 71,
-- 76, 60, 58, 14, 65, 79, 80, 51, 96
-+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
-+ means the default is an error. */
-+static const unsigned char yydefact[] =
-+{
-+ 3, 0, 0, 0, 0, 0, 0, 0, 5, 3,
-+ 65, 66, 67, 68, 69, 7, 0, 63, 60, 61,
-+ 39, 11, 37, 0, 47, 48, 49, 50, 0, 51,
-+ 0, 27, 8, 25, 0, 31, 9, 29, 0, 0,
-+ 0, 58, 57, 35, 10, 33, 0, 76, 77, 43,
-+ 12, 41, 74, 1, 0, 2, 5, 4, 59, 64,
-+ 62, 0, 39, 45, 70, 71, 72, 52, 0, 0,
-+ 27, 53, 0, 31, 54, 55, 56, 0, 35, 73,
-+ 0, 43, 0, 13, 6, 38, 40, 0, 26, 28,
-+ 30, 32, 34, 36, 42, 44, 78, 79, 75, 15,
-+ 46, 17, 14, 0, 0, 24, 22, 21, 23, 0,
-+ 17, 20, 0, 16, 18, 0, 19
- };
-
--static const short yypact[] = { 52,
-- 100, 1, -3, -1, -2, 0, -17, 52,-32768,-32768,
---32768,-32768,-32768,-32768, 100, -18,-32768,-32768, 25,-32768,
---32768, 100,-32768,-32768,-32768,-32768, 60,-32768, -15, 82,
---32768,-32768, 100, 14,-32768,-32768, 100, -19, -10,-32768,
---32768, 20,-32768,-32768, 100,-32768,-32768, 19,-32768,-32768,
---32768, -14,-32768, -17,-32768,-32768,-32768,-32768, -9, 25,
---32768,-32768,-32768,-32768,-32768, 8, 2, 82,-32768, 4,
-- 14,-32768,-32768,-32768, 7, 20,-32768, 10, 19, -30,
---32768,-32768,-32768,-32768, 22,-32768,-32768,-32768,-32768,-32768,
---32768,-32768,-32768,-32768,-32768,-32768, 21,-32768, 53,-32768,
-- 60, 23,-32768,-32768,-32768,-32768, 24, 53,-32768, 40,
---32768,-32768, 35,-32768, 67, 69,-32768
-+/* YYDEFGOTO[NTERM-NUM]. */
-+static const yysigned_char yydefgoto[] =
-+{
-+ -1, 7, 8, 55, 9, 56, 99, 102, 109, 110,
-+ 32, 69, 36, 72, 44, 77, 21, 61, 50, 80,
-+ 70, 73, 78, 62, 60, 15, 67, 81, 82, 52,
-+ 98
- };
-
--static const short yypgoto[] = {-32768,
-- 64, 27,-32768,-32768,-32768,-32768, -35,-32768,-32768, 15,
---32768, 5,-32768, 12,-32768, 29,-32768, -4, 83, 87,
-- 91, 95,-32768, 26, 9, 92,-32768,-32768,-32768
-+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-+ STATE-NUM. */
-+#define YYPACT_NINF -31
-+static const yysigned_char yypact[] =
-+{
-+ 53, 69, 1, -3, -1, -2, 0, 11, -16, 53,
-+ -31, -31, -31, -31, -31, -31, 69, -15, -31, -31,
-+ 28, -31, -31, 69, -31, -31, -31, -31, 46, -31,
-+ -13, 80, -31, -31, 69, 16, -31, -31, 69, -18,
-+ -6, -31, -31, 20, -31, -31, 69, -31, -31, 19,
-+ -31, -31, -31, -31, -10, -31, -16, -31, -31, -31,
-+ -31, 2, 28, -31, -31, -31, -31, -31, 8, 4,
-+ 80, -31, 7, 16, -31, -31, -31, 9, 20, -31,
-+ 10, 19, -30, -31, -31, -31, -31, 23, -31, -31,
-+ -31, -31, -31, -31, -31, -31, -31, -31, -31, 31,
-+ -31, 51, -31, 46, 49, -31, -31, -31, -31, 15,
-+ 51, -31, 36, -31, -31, 54, -31
- };
-
--
--#define YYLAST 110
--
--
--static const short yytable[] = { 22,
-- 37, 33, 45, 15, 94, 95, 23, 24, 25, 26,
-- 52, 57, 38, 27, 66, 28, 33, 29, 73, 74,
-- 39, 45, 37, 81, 16, 46, 47, 15, 40, 85,
-- 83, 41, 17, 18, 38, 30, 42, 34, 48, 19,
-- 56, 86, 39, 88, 46, 47, 90, 61, 16, 92,
-- 40, 98, 110, 41, 1, 2, 17, 18, 69, 99,
-- 3, 113, 72, 111, 114, 4, 116, 5, 117, 101,
-- 77, 55, 112, 102, 93, 89, 6, 62, 63, 64,
-- 82, 103, 87, 104, 22, 32, 105, 91, 84, 106,
-- 36, 23, 24, 25, 26, 44, 21, 50, 27, 0,
-- 28, 0, 29, 9, 10, 11, 12, 13, 0, 109
-+/* YYPGOTO[NTERM-NUM]. */
-+static const yysigned_char yypgoto[] =
-+{
-+ -31, -31, 72, 30, -31, -31, -31, -31, -23, -31,
-+ -31, 24, -31, 22, -31, 18, -31, 27, -31, 17,
-+ 97, 98, 99, 101, -31, 25, 3, 102, -31, -31,
-+ -31
- };
-
--static const short yycheck[] = { 3,
-- 3, 3, 3, 3, 35, 36, 10, 11, 12, 13,
-- 28, 30, 15, 17, 30, 19, 3, 21, 38, 30,
-- 23, 3, 3, 38, 24, 26, 27, 3, 31, 22,
-- 40, 34, 32, 33, 15, 39, 39, 39, 39, 39,
-- 15, 40, 23, 40, 26, 27, 40, 22, 24, 40,
-- 31, 30, 30, 34, 3, 4, 32, 33, 33, 39,
-- 9, 22, 37, 40, 30, 14, 0, 16, 0, 17,
-- 45, 8, 108, 21, 79, 71, 25, 18, 19, 20,
-- 54, 29, 68, 31, 3, 3, 34, 76, 60, 37,
-- 4, 10, 11, 12, 13, 5, 2, 6, 17, -1,
-- 19, -1, 21, 4, 5, 6, 7, 8, -1, 101
-+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
-+ positive, shift that token. If negative, reduce the rule which
-+ number is the opposite. If zero, do what YYDEFACT says.
-+ If YYTABLE_NINF, syntax error. */
-+#define YYTABLE_NINF -1
-+static const unsigned char yytable[] =
-+{
-+ 23, 38, 34, 46, 16, 96, 97, 24, 25, 26,
-+ 27, 53, 54, 39, 28, 59, 29, 68, 30, 34,
-+ 75, 40, 46, 38, 76, 17, 47, 48, 83, 41,
-+ 87, 16, 42, 18, 19, 39, 31, 43, 35, 49,
-+ 20, 58, 85, 40, 88, 47, 48, 90, 63, 92,
-+ 94, 41, 17, 100, 42, 113, 1, 2, 115, 71,
-+ 18, 19, 3, 74, 64, 65, 66, 4, 103, 5,
-+ 101, 79, 104, 10, 11, 12, 13, 14, 6, 112,
-+ 105, 57, 106, 23, 116, 107, 84, 114, 108, 86,
-+ 24, 25, 26, 27, 89, 91, 93, 28, 95, 29,
-+ 33, 30, 37, 22, 45, 0, 111, 0, 51
- };
--/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
--#line 3 "/usr/lib/bison.simple"
--/* This file comes from bison-1.28. */
--
--/* Skeleton output parser for bison,
-- Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
--
-- 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, Inc., 59 Temple Place - Suite 330,
-- Boston, MA 02111-1307, USA. */
--
--/* As a special exception, when this file is copied by Bison into a
-- Bison output file, you may use that output file without restriction.
-- This special exception was added by the Free Software Foundation
-- in version 1.24 of Bison. */
-+static const yysigned_char yycheck[] =
-+{
-+ 3, 3, 3, 3, 3, 35, 36, 10, 11, 12,
-+ 13, 0, 28, 15, 17, 30, 19, 30, 21, 3,
-+ 38, 23, 3, 3, 30, 24, 26, 27, 38, 31,
-+ 22, 3, 34, 32, 33, 15, 39, 39, 39, 39,
-+ 39, 16, 40, 23, 40, 26, 27, 40, 23, 40,
-+ 40, 31, 24, 30, 34, 40, 3, 4, 22, 34,
-+ 32, 33, 9, 38, 18, 19, 20, 14, 17, 16,
-+ 39, 46, 21, 4, 5, 6, 7, 8, 25, 30,
-+ 29, 9, 31, 3, 30, 34, 56, 110, 37, 62,
-+ 10, 11, 12, 13, 70, 73, 78, 17, 81, 19,
-+ 3, 21, 4, 2, 5, -1, 103, -1, 6
-+};
-
--/* This is the parser code that is written into each bison parser
-- when the %semantic_parser declaration is not specified in the grammar.
-- It was written by Richard Stallman by simplifying the hairy parser
-- used when %semantic_parser is specified. */
--
--#ifndef YYSTACK_USE_ALLOCA
--#ifdef alloca
--#define YYSTACK_USE_ALLOCA
--#else /* alloca not defined */
--#ifdef __GNUC__
--#define YYSTACK_USE_ALLOCA
--#define alloca __builtin_alloca
--#else /* not GNU C. */
--#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
--#define YYSTACK_USE_ALLOCA
--#include <alloca.h>
--#else /* not sparc */
--/* We think this test detects Watcom and Microsoft C. */
--/* This used to test MSDOS, but that is a bad idea
-- since that symbol is in the user namespace. */
--#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
--#if 0 /* No need for malloc.h, which pollutes the namespace;
-- instead, just don't use alloca. */
--#include <malloc.h>
--#endif
--#else /* not MSDOS, or __TURBOC__ */
--#if defined(_AIX)
--/* I don't know what this was needed for, but it pollutes the namespace.
-- So I turned it off. rms, 2 May 1997. */
--/* #include <malloc.h> */
-- #pragma alloca
--#define YYSTACK_USE_ALLOCA
--#else /* not MSDOS, or __TURBOC__, or _AIX */
--#if 0
--#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-- and on HPUX 10. Eventually we can turn this on. */
--#define YYSTACK_USE_ALLOCA
--#define alloca __builtin_alloca
--#endif /* __hpux */
--#endif
--#endif /* not _AIX */
--#endif /* not MSDOS, or __TURBOC__ */
--#endif /* not sparc */
--#endif /* not GNU C */
--#endif /* alloca not defined */
--#endif /* YYSTACK_USE_ALLOCA not defined */
-+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-+ symbol of state STATE-NUM. */
-+static const unsigned char yystos[] =
-+{
-+ 0, 3, 4, 9, 14, 16, 25, 42, 43, 45,
-+ 4, 5, 6, 7, 8, 66, 3, 24, 32, 33,
-+ 39, 57, 64, 3, 10, 11, 12, 13, 17, 19,
-+ 21, 39, 51, 61, 3, 39, 53, 62, 3, 15,
-+ 23, 31, 34, 39, 55, 63, 3, 26, 27, 39,
-+ 59, 68, 70, 0, 28, 44, 46, 43, 66, 30,
-+ 65, 58, 64, 66, 18, 19, 20, 67, 30, 52,
-+ 61, 66, 54, 62, 66, 38, 30, 56, 63, 66,
-+ 60, 68, 69, 38, 44, 40, 58, 22, 40, 52,
-+ 40, 54, 40, 56, 40, 60, 35, 36, 71, 47,
-+ 30, 39, 48, 17, 21, 29, 31, 34, 37, 49,
-+ 50, 67, 30, 40, 49, 22, 30
-+};
-
--#ifdef YYSTACK_USE_ALLOCA
--#define YYSTACK_ALLOC alloca
--#else
--#define YYSTACK_ALLOC malloc
-+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-+# define YYSIZE_T __SIZE_TYPE__
-+#endif
-+#if ! defined (YYSIZE_T) && defined (size_t)
-+# define YYSIZE_T size_t
-+#endif
-+#if ! defined (YYSIZE_T)
-+# if defined (__STDC__) || defined (__cplusplus)
-+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-+# define YYSIZE_T size_t
-+# endif
-+#endif
-+#if ! defined (YYSIZE_T)
-+# define YYSIZE_T unsigned int
- #endif
--
--/* Note: there must be only one dollar sign in this file.
-- It is replaced by the list of actions, each action
-- as one case of the switch. */
-
- #define yyerrok (yyerrstatus = 0)
- #define yyclearin (yychar = YYEMPTY)
--#define YYEMPTY -2
-+#define YYEMPTY (-2)
- #define YYEOF 0
-+
- #define YYACCEPT goto yyacceptlab
--#define YYABORT goto yyabortlab
--#define YYERROR goto yyerrlab1
--/* Like YYERROR except do call yyerror.
-- This remains here temporarily to ease the
-- transition to the new meaning of YYERROR, for GCC.
-+#define YYABORT goto yyabortlab
-+#define YYERROR goto yyerrorlab
-+
-+
-+/* Like YYERROR except do call yyerror. This remains here temporarily
-+ to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
-+
- #define YYFAIL goto yyerrlab
-+
- #define YYRECOVERING() (!!yyerrstatus)
--#define YYBACKUP(token, value) \
-+
-+#define YYBACKUP(Token, Value) \
- do \
- if (yychar == YYEMPTY && yylen == 1) \
-- { yychar = (token), yylval = (value); \
-- yychar1 = YYTRANSLATE (yychar); \
-+ { \
-+ yychar = (Token); \
-+ yylval = (Value); \
-+ yytoken = YYTRANSLATE (yychar); \
- YYPOPSTACK; \
- goto yybackup; \
- } \
- else \
-- { yyerror ("syntax error: cannot back up"); YYERROR; } \
-+ { \
-+ yyerror ("syntax error: cannot back up");\
-+ YYERROR; \
-+ } \
- while (0)
-
- #define YYTERROR 1
- #define YYERRCODE 256
-
--#ifndef YYPURE
--#define YYLEX yylex()
--#endif
-+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
-+ are run). */
-
--#ifdef YYPURE
--#ifdef YYLSP_NEEDED
--#ifdef YYLEX_PARAM
--#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
--#else
--#define YYLEX yylex(&yylval, &yylloc)
-+#ifndef YYLLOC_DEFAULT
-+# define YYLLOC_DEFAULT(Current, Rhs, N) \
-+ ((Current).first_line = (Rhs)[1].first_line, \
-+ (Current).first_column = (Rhs)[1].first_column, \
-+ (Current).last_line = (Rhs)[N].last_line, \
-+ (Current).last_column = (Rhs)[N].last_column)
- #endif
--#else /* not YYLSP_NEEDED */
-+
-+/* YYLEX -- calling `yylex' with the right arguments. */
-+
- #ifdef YYLEX_PARAM
--#define YYLEX yylex(&yylval, YYLEX_PARAM)
-+# define YYLEX yylex (YYLEX_PARAM)
- #else
--#define YYLEX yylex(&yylval)
--#endif
--#endif /* not YYLSP_NEEDED */
-+# define YYLEX yylex ()
- #endif
-
--/* If nonreentrant, generate the variables here */
-+/* Enable debugging if requested. */
-+#if YYDEBUG
-
--#ifndef YYPURE
-+# ifndef YYFPRINTF
-+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-+# define YYFPRINTF fprintf
-+# endif
-+
-+# define YYDPRINTF(Args) \
-+do { \
-+ if (yydebug) \
-+ YYFPRINTF Args; \
-+} while (0)
-+
-+# define YYDSYMPRINT(Args) \
-+do { \
-+ if (yydebug) \
-+ yysymprint Args; \
-+} while (0)
-+
-+# define YYDSYMPRINTF(Title, Token, Value, Location) \
-+do { \
-+ if (yydebug) \
-+ { \
-+ YYFPRINTF (stderr, "%s ", Title); \
-+ yysymprint (stderr, \
-+ Token, Value); \
-+ YYFPRINTF (stderr, "\n"); \
-+ } \
-+} while (0)
-
--int yychar; /* the lookahead symbol */
--YYSTYPE yylval; /* the semantic value of the */
-- /* lookahead symbol */
-+/*------------------------------------------------------------------.
-+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-+| TOP (included). |
-+`------------------------------------------------------------------*/
-
--#ifdef YYLSP_NEEDED
--YYLTYPE yylloc; /* location data for the lookahead */
-- /* symbol */
-+#if defined (__STDC__) || defined (__cplusplus)
-+static void
-+yy_stack_print (short int *bottom, short int *top)
-+#else
-+static void
-+yy_stack_print (bottom, top)
-+ short int *bottom;
-+ short int *top;
- #endif
-+{
-+ YYFPRINTF (stderr, "Stack now");
-+ for (/* Nothing. */; bottom <= top; ++bottom)
-+ YYFPRINTF (stderr, " %d", *bottom);
-+ YYFPRINTF (stderr, "\n");
-+}
-+
-+# define YY_STACK_PRINT(Bottom, Top) \
-+do { \
-+ if (yydebug) \
-+ yy_stack_print ((Bottom), (Top)); \
-+} while (0)
-
--int yynerrs; /* number of parse errors so far */
--#endif /* not YYPURE */
-
--#if YYDEBUG != 0
--int yydebug; /* nonzero means print parse trace */
--/* Since this is uninitialized, it does not stop multiple parsers
-- from coexisting. */
-+/*------------------------------------------------.
-+| Report that the YYRULE is going to be reduced. |
-+`------------------------------------------------*/
-+
-+#if defined (__STDC__) || defined (__cplusplus)
-+static void
-+yy_reduce_print (int yyrule)
-+#else
-+static void
-+yy_reduce_print (yyrule)
-+ int yyrule;
- #endif
-+{
-+ int yyi;
-+ unsigned int yylno = yyrline[yyrule];
-+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
-+ yyrule - 1, yylno);
-+ /* Print the symbols being reduced, and their result. */
-+ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
-+ YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
-+ YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
-+}
-+
-+# define YY_REDUCE_PRINT(Rule) \
-+do { \
-+ if (yydebug) \
-+ yy_reduce_print (Rule); \
-+} while (0)
-+
-+/* Nonzero means print parse trace. It is left uninitialized so that
-+ multiple parsers can coexist. */
-+int yydebug;
-+#else /* !YYDEBUG */
-+# define YYDPRINTF(Args)
-+# define YYDSYMPRINT(Args)
-+# define YYDSYMPRINTF(Title, Token, Value, Location)
-+# define YY_STACK_PRINT(Bottom, Top)
-+# define YY_REDUCE_PRINT(Rule)
-+#endif /* !YYDEBUG */
-
--/* YYINITDEPTH indicates the initial size of the parser's stacks */
-
-+/* YYINITDEPTH -- initial size of the parser's stacks. */
- #ifndef YYINITDEPTH
--#define YYINITDEPTH 200
-+# define YYINITDEPTH 200
- #endif
-
--/* YYMAXDEPTH is the maximum size the stacks can grow to
-- (effective only if the built-in stack extension method is used). */
-+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
-+ if the built-in stack extension method is used).
-
--#if YYMAXDEPTH == 0
--#undef YYMAXDEPTH
-+ Do not make this value too large; the results are undefined if
-+ SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
-+ evaluated with infinite-precision integer arithmetic. */
-+
-+#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
-+# undef YYMAXDEPTH
- #endif
-
- #ifndef YYMAXDEPTH
--#define YYMAXDEPTH 10000
-+# define YYMAXDEPTH 10000
- #endif
-+
-
--/* Define __yy_memcpy. Note that the size argument
-- should be passed with type unsigned int, because that is what the non-GCC
-- definitions require. With GCC, __builtin_memcpy takes an arg
-- of type size_t, but it can handle unsigned int. */
--
--#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
--#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
--#else /* not GNU C or C++ */
--#ifndef __cplusplus
-
--/* This is the most reliable way to avoid incompatibilities
-- in available built-in functions on various systems. */
--static void
--__yy_memcpy (to, from, count)
-- char *to;
-- char *from;
-- unsigned int count;
--{
-- register char *f = from;
-- register char *t = to;
-- register int i = count;
-+#if YYERROR_VERBOSE
-
-- while (i-- > 0)
-- *t++ = *f++;
-+# ifndef yystrlen
-+# if defined (__GLIBC__) && defined (_STRING_H)
-+# define yystrlen strlen
-+# else
-+/* Return the length of YYSTR. */
-+static YYSIZE_T
-+# if defined (__STDC__) || defined (__cplusplus)
-+yystrlen (const char *yystr)
-+# else
-+yystrlen (yystr)
-+ const char *yystr;
-+# endif
-+{
-+ register const char *yys = yystr;
-+
-+ while (*yys++ != '\0')
-+ continue;
-+
-+ return yys - yystr - 1;
- }
-+# endif
-+# endif
-
--#else /* __cplusplus */
-+# ifndef yystpcpy
-+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-+# define yystpcpy stpcpy
-+# else
-+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-+ YYDEST. */
-+static char *
-+# if defined (__STDC__) || defined (__cplusplus)
-+yystpcpy (char *yydest, const char *yysrc)
-+# else
-+yystpcpy (yydest, yysrc)
-+ char *yydest;
-+ const char *yysrc;
-+# endif
-+{
-+ register char *yyd = yydest;
-+ register const char *yys = yysrc;
-+
-+ while ((*yyd++ = *yys++) != '\0')
-+ continue;
-+
-+ return yyd - 1;
-+}
-+# endif
-+# endif
-
--/* This is the most reliable way to avoid incompatibilities
-- in available built-in functions on various systems. */
-+#endif /* !YYERROR_VERBOSE */
-+
-+
-+
-+#if YYDEBUG
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT. |
-+`--------------------------------*/
-+
-+#if defined (__STDC__) || defined (__cplusplus)
- static void
--__yy_memcpy (char *to, char *from, unsigned int count)
-+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
-+#else
-+static void
-+yysymprint (yyoutput, yytype, yyvaluep)
-+ FILE *yyoutput;
-+ int yytype;
-+ YYSTYPE *yyvaluep;
-+#endif
- {
-- register char *t = to;
-- register char *f = from;
-- register int i = count;
-+ /* Pacify ``unused variable'' warnings. */
-+ (void) yyvaluep;
-
-- while (i-- > 0)
-- *t++ = *f++;
-+ if (yytype < YYNTOKENS)
-+ {
-+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-+# ifdef YYPRINT
-+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+# endif
-+ }
-+ else
-+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+
-+ switch (yytype)
-+ {
-+ default:
-+ break;
-+ }
-+ YYFPRINTF (yyoutput, ")");
- }
-
-+#endif /* ! YYDEBUG */
-+/*-----------------------------------------------.
-+| Release the memory associated to this symbol. |
-+`-----------------------------------------------*/
-+
-+#if defined (__STDC__) || defined (__cplusplus)
-+static void
-+yydestruct (int yytype, YYSTYPE *yyvaluep)
-+#else
-+static void
-+yydestruct (yytype, yyvaluep)
-+ int yytype;
-+ YYSTYPE *yyvaluep;
- #endif
--#endif
-+{
-+ /* Pacify ``unused variable'' warnings. */
-+ (void) yyvaluep;
-+
-+ switch (yytype)
-+ {
-+
-+ default:
-+ break;
-+ }
-+}
-
--#line 217 "/usr/lib/bison.simple"
-
--/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-- into yyparse. The argument should have type void *.
-- It should actually point to an object.
-- Grammar actions can access the variable by casting it
-- to the proper pointer type. */
-+/* Prevent warnings from -Wmissing-prototypes. */
-
- #ifdef YYPARSE_PARAM
--#ifdef __cplusplus
--#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
--#define YYPARSE_PARAM_DECL
--#else /* not __cplusplus */
--#define YYPARSE_PARAM_ARG YYPARSE_PARAM
--#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
--#endif /* not __cplusplus */
--#else /* not YYPARSE_PARAM */
--#define YYPARSE_PARAM_ARG
--#define YYPARSE_PARAM_DECL
--#endif /* not YYPARSE_PARAM */
-+# if defined (__STDC__) || defined (__cplusplus)
-+int yyparse (void *YYPARSE_PARAM);
-+# else
-+int yyparse ();
-+# endif
-+#else /* ! YYPARSE_PARAM */
-+#if defined (__STDC__) || defined (__cplusplus)
-+int yyparse (void);
-+#else
-+int yyparse ();
-+#endif
-+#endif /* ! YYPARSE_PARAM */
-+
-+
-+
-+/* The lookahead symbol. */
-+int yychar;
-+
-+/* The semantic value of the lookahead symbol. */
-+YYSTYPE yylval;
-+
-+/* Number of syntax errors so far. */
-+int yynerrs;
-+
-+
-+
-+/*----------.
-+| yyparse. |
-+`----------*/
-
--/* Prevent warning if -Wstrict-prototypes. */
--#ifdef __GNUC__
- #ifdef YYPARSE_PARAM
--int yyparse (void *);
-+# if defined (__STDC__) || defined (__cplusplus)
-+int yyparse (void *YYPARSE_PARAM)
-+# else
-+int yyparse (YYPARSE_PARAM)
-+ void *YYPARSE_PARAM;
-+# endif
-+#else /* ! YYPARSE_PARAM */
-+#if defined (__STDC__) || defined (__cplusplus)
-+int
-+yyparse (void)
- #else
--int yyparse (void);
-+int
-+yyparse ()
-+
- #endif
- #endif
--
--int
--yyparse(YYPARSE_PARAM_ARG)
-- YYPARSE_PARAM_DECL
- {
-+
- register int yystate;
- register int yyn;
-- register short *yyssp;
-+ int yyresult;
-+ /* Number of tokens to shift before error messages enabled. */
-+ int yyerrstatus;
-+ /* Lookahead token as an internal (translated) token number. */
-+ int yytoken = 0;
-+
-+ /* Three stacks and their tools:
-+ `yyss': related to states,
-+ `yyvs': related to semantic values,
-+ `yyls': related to locations.
-+
-+ Refer to the stacks thru separate pointers, to allow yyoverflow
-+ to reallocate them elsewhere. */
-+
-+ /* The state stack. */
-+ short int yyssa[YYINITDEPTH];
-+ short int *yyss = yyssa;
-+ register short int *yyssp;
-+
-+ /* The semantic value stack. */
-+ YYSTYPE yyvsa[YYINITDEPTH];
-+ YYSTYPE *yyvs = yyvsa;
- register YYSTYPE *yyvsp;
-- int yyerrstatus; /* number of tokens to shift before error messages enabled */
-- int yychar1 = 0; /* lookahead token as an internal (translated) token number */
-
-- short yyssa[YYINITDEPTH]; /* the state stack */
-- YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
-
-- short *yyss = yyssa; /* refer to the stacks thru separate pointers */
-- YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
-
--#ifdef YYLSP_NEEDED
-- YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
-- YYLTYPE *yyls = yylsa;
-- YYLTYPE *yylsp;
--
--#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
--#else
- #define YYPOPSTACK (yyvsp--, yyssp--)
--#endif
-
-- int yystacksize = YYINITDEPTH;
-- int yyfree_stacks = 0;
-+ YYSIZE_T yystacksize = YYINITDEPTH;
-
--#ifdef YYPURE
-- int yychar;
-- YYSTYPE yylval;
-- int yynerrs;
--#ifdef YYLSP_NEEDED
-- YYLTYPE yylloc;
--#endif
--#endif
-+ /* The variables used to return semantic value and location from the
-+ action routines. */
-+ YYSTYPE yyval;
-
-- YYSTYPE yyval; /* the variable used to return */
-- /* semantic values from the action */
-- /* routines */
-
-+ /* When reducing, the number of symbols on the RHS of the reduced
-+ rule. */
- int yylen;
-
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Starting parse\n");
--#endif
-+ YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
-@@ -614,110 +1022,97 @@
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
-- yyssp = yyss - 1;
-+ yyssp = yyss;
- yyvsp = yyvs;
--#ifdef YYLSP_NEEDED
-- yylsp = yyls;
--#endif
-
--/* Push a new state, which is found in yystate . */
--/* In all cases, when you get here, the value and location stacks
-- have just been pushed. so pushing a state here evens the stacks. */
--yynewstate:
-
-- *++yyssp = yystate;
-+ goto yysetstate;
-
-- if (yyssp >= yyss + yystacksize - 1)
-- {
-- /* Give user a chance to reallocate the stack */
-- /* Use copies of these so that the &'s don't force the real ones into memory. */
-- YYSTYPE *yyvs1 = yyvs;
-- short *yyss1 = yyss;
--#ifdef YYLSP_NEEDED
-- YYLTYPE *yyls1 = yyls;
--#endif
-+/*------------------------------------------------------------.
-+| yynewstate -- Push a new state, which is found in yystate. |
-+`------------------------------------------------------------*/
-+ yynewstate:
-+ /* In all cases, when you get here, the value and location stacks
-+ have just been pushed. so pushing a state here evens the stacks.
-+ */
-+ yyssp++;
-
-+ yysetstate:
-+ *yyssp = yystate;
-+
-+ if (yyss + yystacksize - 1 <= yyssp)
-+ {
- /* Get the current used size of the three stacks, in elements. */
-- int size = yyssp - yyss + 1;
-+ YYSIZE_T yysize = yyssp - yyss + 1;
-
- #ifdef yyoverflow
-- /* Each stack pointer address is followed by the size of
-- the data in use in that stack, in bytes. */
--#ifdef YYLSP_NEEDED
-- /* This used to be a conditional around just the two extra args,
-- but that might be undefined if yyoverflow is a macro. */
-- yyoverflow("parser stack overflow",
-- &yyss1, size * sizeof (*yyssp),
-- &yyvs1, size * sizeof (*yyvsp),
-- &yyls1, size * sizeof (*yylsp),
-- &yystacksize);
--#else
-- yyoverflow("parser stack overflow",
-- &yyss1, size * sizeof (*yyssp),
-- &yyvs1, size * sizeof (*yyvsp),
-- &yystacksize);
--#endif
--
-- yyss = yyss1; yyvs = yyvs1;
--#ifdef YYLSP_NEEDED
-- yyls = yyls1;
--#endif
-+ {
-+ /* Give user a chance to reallocate the stack. Use copies of
-+ these so that the &'s don't force the real ones into
-+ memory. */
-+ YYSTYPE *yyvs1 = yyvs;
-+ short int *yyss1 = yyss;
-+
-+
-+ /* Each stack pointer address is followed by the size of the
-+ data in use in that stack, in bytes. This used to be a
-+ conditional around just the two extra args, but that might
-+ be undefined if yyoverflow is a macro. */
-+ yyoverflow ("parser stack overflow",
-+ &yyss1, yysize * sizeof (*yyssp),
-+ &yyvs1, yysize * sizeof (*yyvsp),
-+
-+ &yystacksize);
-+
-+ yyss = yyss1;
-+ yyvs = yyvs1;
-+ }
- #else /* no yyoverflow */
-+# ifndef YYSTACK_RELOCATE
-+ goto yyoverflowlab;
-+# else
- /* Extend the stack our own way. */
-- if (yystacksize >= YYMAXDEPTH)
-- {
-- yyerror("parser stack overflow");
-- if (yyfree_stacks)
-- {
-- free (yyss);
-- free (yyvs);
--#ifdef YYLSP_NEEDED
-- free (yyls);
--#endif
-- }
-- return 2;
-- }
-+ if (YYMAXDEPTH <= yystacksize)
-+ goto yyoverflowlab;
- yystacksize *= 2;
-- if (yystacksize > YYMAXDEPTH)
-+ if (YYMAXDEPTH < yystacksize)
- yystacksize = YYMAXDEPTH;
--#ifndef YYSTACK_USE_ALLOCA
-- yyfree_stacks = 1;
--#endif
-- yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-- __yy_memcpy ((char *)yyss, (char *)yyss1,
-- size * (unsigned int) sizeof (*yyssp));
-- yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-- __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-- size * (unsigned int) sizeof (*yyvsp));
--#ifdef YYLSP_NEEDED
-- yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-- __yy_memcpy ((char *)yyls, (char *)yyls1,
-- size * (unsigned int) sizeof (*yylsp));
--#endif
-+
-+ {
-+ short int *yyss1 = yyss;
-+ union yyalloc *yyptr =
-+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-+ if (! yyptr)
-+ goto yyoverflowlab;
-+ YYSTACK_RELOCATE (yyss);
-+ YYSTACK_RELOCATE (yyvs);
-+
-+# undef YYSTACK_RELOCATE
-+ if (yyss1 != yyssa)
-+ YYSTACK_FREE (yyss1);
-+ }
-+# endif
- #endif /* no yyoverflow */
-
-- yyssp = yyss + size - 1;
-- yyvsp = yyvs + size - 1;
--#ifdef YYLSP_NEEDED
-- yylsp = yyls + size - 1;
--#endif
-+ yyssp = yyss + yysize - 1;
-+ yyvsp = yyvs + yysize - 1;
-
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Stack size increased to %d\n", yystacksize);
--#endif
-
-- if (yyssp >= yyss + yystacksize - 1)
-+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-+ (unsigned long int) yystacksize));
-+
-+ if (yyss + yystacksize - 1 <= yyssp)
- YYABORT;
- }
-
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Entering state %d\n", yystate);
--#endif
-+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
- goto yybackup;
-- yybackup:
-+
-+/*-----------.
-+| yybackup. |
-+`-----------*/
-+yybackup:
-
- /* Do appropriate processing given the current state. */
- /* Read a lookahead token if we need one and don't already have one. */
-@@ -726,135 +1121,99 @@
- /* First try to decide what to do without reference to lookahead token. */
-
- yyn = yypact[yystate];
-- if (yyn == YYFLAG)
-+ if (yyn == YYPACT_NINF)
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
-- /* yychar is either YYEMPTY or YYEOF
-- or a valid token in external form. */
--
-+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
- if (yychar == YYEMPTY)
- {
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Reading a token: ");
--#endif
-+ YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
- }
-
-- /* Convert token to internal form (in yychar1) for indexing tables with */
--
-- if (yychar <= 0) /* This means end of input. */
-+ if (yychar <= YYEOF)
- {
-- yychar1 = 0;
-- yychar = YYEOF; /* Don't call YYLEX any more */
--
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Now at end of input.\n");
--#endif
-+ yychar = yytoken = YYEOF;
-+ YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
-- yychar1 = YYTRANSLATE(yychar);
--
--#if YYDEBUG != 0
-- if (yydebug)
-- {
-- fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-- /* Give the individual parser a way to print the precise meaning
-- of a token, for further debugging info. */
--#ifdef YYPRINT
-- YYPRINT (stderr, yychar, yylval);
--#endif
-- fprintf (stderr, ")\n");
-- }
--#endif
-+ yytoken = YYTRANSLATE (yychar);
-+ YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
- }
-
-- yyn += yychar1;
-- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
-+ /* If the proper action on seeing token YYTOKEN is to reduce or to
-+ detect an error, take that action. */
-+ yyn += yytoken;
-+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
- goto yydefault;
--
- yyn = yytable[yyn];
--
-- /* yyn is what to do for this token type in this state.
-- Negative => reduce, -yyn is rule number.
-- Positive => shift, yyn is new state.
-- New state is final state => don't bother to shift,
-- just return success.
-- 0, or most negative number => error. */
--
-- if (yyn < 0)
-+ if (yyn <= 0)
- {
-- if (yyn == YYFLAG)
-+ if (yyn == 0 || yyn == YYTABLE_NINF)
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
-- else if (yyn == 0)
-- goto yyerrlab;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- /* Shift the lookahead token. */
--
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
--#endif
-+ YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
-
- /* Discard the token being shifted unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
-
- *++yyvsp = yylval;
--#ifdef YYLSP_NEEDED
-- *++yylsp = yylloc;
--#endif
-
-- /* count tokens shifted since error; after three, turn off error status. */
-- if (yyerrstatus) yyerrstatus--;
-+
-+ /* Count tokens shifted since error; after three, turn off error
-+ status. */
-+ if (yyerrstatus)
-+ yyerrstatus--;
-
- yystate = yyn;
- goto yynewstate;
-
--/* Do the default action for the current state. */
--yydefault:
-
-+/*-----------------------------------------------------------.
-+| yydefault -- do the default action for the current state. |
-+`-----------------------------------------------------------*/
-+yydefault:
- yyn = yydefact[yystate];
- if (yyn == 0)
- goto yyerrlab;
-+ goto yyreduce;
-+
-
--/* Do a reduction. yyn is the number of a rule to reduce with. */
-+/*-----------------------------.
-+| yyreduce -- Do a reduction. |
-+`-----------------------------*/
- yyreduce:
-+ /* yyn is the number of a rule to reduce with. */
- yylen = yyr2[yyn];
-- if (yylen > 0)
-- yyval = yyvsp[1-yylen]; /* implement default value of the action */
-
--#if YYDEBUG != 0
-- if (yydebug)
-- {
-- int i;
--
-- fprintf (stderr, "Reducing via rule %d (line %d), ",
-- yyn, yyrline[yyn]);
-+ /* If YYLEN is nonzero, implement the default value of the action:
-+ `$$ = $1'.
-
-- /* Print the symbols being reduced, and their result. */
-- for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-- fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-- fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-- }
--#endif
-+ Otherwise, the following line sets YYVAL to garbage.
-+ This behavior is undocumented and Bison
-+ users should not rely upon it. Assigning to YYVAL
-+ unconditionally makes the parser a bit smaller, and it avoids a
-+ GCC warning that YYVAL may be used uninitialized. */
-+ yyval = yyvsp[1-yylen];
-
-
-- switch (yyn) {
--
--case 5:
--#line 83 "cfg_y.y"
--{
-+ YY_REDUCE_PRINT (yyn);
-+ switch (yyn)
-+ {
-+ case 6:
-+#line 86 "cfg_y.y"
-+ {
- if (!curr_sig->uni)
- curr_sig->uni =
- #if defined(UNI30) || defined(DYNAMIC_UNI)
-@@ -873,17 +1232,19 @@
- #endif
- #endif
- ;
-- ;
-- break;}
--case 6:
--#line 107 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 7:
-+#line 110 "cfg_y.y"
-+ {
- set_verbosity(NULL,yyvsp[0].num);
-- ;
-- break;}
--case 12:
--#line 119 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 13:
-+#line 122 "cfg_y.y"
-+ {
- SIG_ENTITY *sig,**walk;
-
- if (atmpvc_addr_in_use(_entity.signaling_pvc))
-@@ -892,37 +1253,49 @@
- if (entities == &_entity) entities = NULL;
- for (sig = entities; sig; sig = sig->next)
- if (atm_equal((struct sockaddr *) &sig->signaling_pvc,
-- (struct sockaddr *) &yyvsp[0].pvc,0,0))
-- yyerror("duplicate PVC address %d.%d.%d",S_PVC(sig));
-+ (struct sockaddr *) &yyvsp[0].pvc,0,0)) {
-+ const char *err;
-+ asprintf(&err,"duplicate PVC address %d.%d.%d",S_PVC(sig));
-+ if(err) {
-+ yyerror(err);
-+ free(err);
-+ }
-+ else
-+ yyerror("duplicate PVC address");
-+ }
- curr_sig = alloc_t(SIG_ENTITY);
- *curr_sig = _entity;
- curr_sig->signaling_pvc = yyvsp[0].pvc;
- curr_sig->next = NULL;
- for (walk = &entities; *walk; walk = &(*walk)->next);
- *walk = curr_sig;
-- ;
-- break;}
--case 18:
--#line 150 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 19:
-+#line 161 "cfg_y.y"
-+ {
- enter_vpci(curr_sig,yyvsp[-2].num,yyvsp[0].num);
-- ;
-- break;}
--case 20:
--#line 155 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 21:
-+#line 166 "cfg_y.y"
-+ {
- curr_sig->sig_qos = yyvsp[0].str;
-- ;
-- break;}
--case 21:
--#line 159 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 22:
-+#line 170 "cfg_y.y"
-+ {
- curr_sig->max_rate = yyvsp[0].num;
-- ;
-- break;}
--case 22:
--#line 163 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 23:
-+#line 174 "cfg_y.y"
-+ {
- struct sockaddr_atmsvc addr;
- char *mask;
-
-@@ -931,464 +1304,506 @@
- if (text2atm(yyvsp[0].str,(struct sockaddr *) &addr,sizeof(addr),
- T2A_SVC | T2A_WILDCARD | T2A_NAME | T2A_LOCAL) < 0) {
- yyerror("invalid address");
-- return;
-+ return 0;
- }
- add_route(curr_sig,&addr,mask ? strtol(mask,NULL,10) : INT_MAX);
-- ;
-- break;}
--case 23:
--#line 177 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 24:
-+#line 188 "cfg_y.y"
-+ {
- add_route(curr_sig,NULL,0);
-- ;
-- break;}
--case 44:
--#line 229 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 45:
-+#line 240 "cfg_y.y"
-+ {
- set_verbosity("UNI",yyvsp[0].num);
- set_verbosity("KERNEL",yyvsp[0].num);
- set_verbosity("SAP",yyvsp[0].num);
-- ;
-- break;}
--case 45:
--#line 235 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 46:
-+#line 246 "cfg_y.y"
-+ {
- enter_vpci(curr_sig,yyvsp[-2].num,yyvsp[0].num);
-- ;
-- break;}
--case 46:
--#line 239 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 47:
-+#line 250 "cfg_y.y"
-+ {
- #if defined(UNI30) || defined(ALLOW_UNI30) || defined(DYNAMIC_UNI)
- if (curr_sig->uni & ~S_UNI31) yyerror("UNI mode is already set");
- curr_sig->uni |= S_UNI30;
- #else
- yyerror("Sorry, not supported yet");
- #endif
-- ;
-- break;}
--case 47:
--#line 248 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 48:
-+#line 259 "cfg_y.y"
-+ {
- #if defined(UNI31) || defined(ALLOW_UNI30) || defined(DYNAMIC_UNI)
- if (curr_sig->uni & ~S_UNI30) yyerror("UNI mode is already set");
- curr_sig->uni |= S_UNI31;
- #else
- yyerror("Sorry, not supported yet");
- #endif
-- ;
-- break;}
--case 48:
--#line 257 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 49:
-+#line 268 "cfg_y.y"
-+ {
- #if defined(UNI40) || defined(DYNAMIC_UNI)
- if (curr_sig->uni) yyerror("UNI mode is already set");
- curr_sig->uni = S_UNI40;
- #else
- yyerror("Sorry, not supported yet");
- #endif
-- ;
-- break;}
--case 49:
--#line 266 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 50:
-+#line 277 "cfg_y.y"
-+ {
- #if defined(Q2963_1) || defined(DYNAMIC_UNI)
- if (!(curr_sig->uni & S_UNI40)) yyerror("Incompatible UNI mode");
- curr_sig->uni |= S_Q2963_1;
- #else
- yyerror("Sorry, not supported yet");
- #endif
-- ;
-- break;}
--case 50:
--#line 275 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 51:
-+#line 286 "cfg_y.y"
-+ {
- yywarn("sig net is obsolete, please use sig mode net instead");
- curr_sig->mode = sm_net;
-- ;
-- break;}
--case 52:
--#line 284 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 53:
-+#line 295 "cfg_y.y"
-+ {
- set_verbosity("SSCF",yyvsp[0].num);
- set_verbosity("SSCOP",yyvsp[0].num);
-- ;
-- break;}
--case 53:
--#line 292 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 54:
-+#line 303 "cfg_y.y"
-+ {
- set_verbosity("IO",yyvsp[0].num);
-- ;
-- break;}
--case 54:
--#line 296 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 55:
-+#line 307 "cfg_y.y"
-+ {
- curr_sig->signaling_pvc = yyvsp[0].pvc;
-- ;
-- break;}
--case 55:
--#line 300 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 56:
-+#line 311 "cfg_y.y"
-+ {
- yywarn("io pcr is obsolete, please use io qos instead");
- curr_sig->sig_pcr = yyvsp[0].num;
-- ;
-- break;}
--case 56:
--#line 305 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 57:
-+#line 316 "cfg_y.y"
-+ {
- curr_sig->sig_qos = yyvsp[0].str;
-- ;
-- break;}
--case 57:
--#line 309 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 58:
-+#line 320 "cfg_y.y"
-+ {
- curr_sig->max_rate = yyvsp[0].num;
-- ;
-- break;}
--case 58:
--#line 316 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 59:
-+#line 327 "cfg_y.y"
-+ {
- set_verbosity(NULL,yyvsp[0].num);
-- ;
-- break;}
--case 59:
--#line 320 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 60:
-+#line 331 "cfg_y.y"
-+ {
- dump_dir = yyvsp[0].str;
- if (!trace_size) trace_size = DEFAULT_TRACE_SIZE;
-- ;
-- break;}
--case 60:
--#line 325 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 61:
-+#line 336 "cfg_y.y"
-+ {
- set_logfile(yyvsp[0].str);
-- ;
-- break;}
--case 61:
--#line 329 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 62:
-+#line 340 "cfg_y.y"
-+ {
- trace_size = yyvsp[0].num;
-- ;
-- break;}
--case 62:
--#line 335 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 63:
-+#line 346 "cfg_y.y"
-+ {
- yyval.num = DEFAULT_TRACE_SIZE;
-- ;
-- break;}
--case 63:
--#line 339 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 64:
-+#line 350 "cfg_y.y"
-+ {
- yyval.num = yyvsp[0].num;
-- ;
-- break;}
--case 64:
--#line 346 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 65:
-+#line 357 "cfg_y.y"
-+ {
- yyval.num = DIAG_DEBUG;
-- ;
-- break;}
--case 65:
--#line 350 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 66:
-+#line 361 "cfg_y.y"
-+ {
- yyval.num = DIAG_INFO;
-- ;
-- break;}
--case 66:
--#line 354 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 67:
-+#line 365 "cfg_y.y"
-+ {
- yyval.num = DIAG_WARN;
-- ;
-- break;}
--case 67:
--#line 358 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 68:
-+#line 369 "cfg_y.y"
-+ {
- yyval.num = DIAG_ERROR;
-- ;
-- break;}
--case 68:
--#line 362 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 69:
-+#line 373 "cfg_y.y"
-+ {
- yyval.num = DIAG_FATAL;
-- ;
-- break;}
--case 69:
--#line 369 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 70:
-+#line 380 "cfg_y.y"
-+ {
- curr_sig->mode = sm_user;
-- ;
-- break;}
--case 70:
--#line 373 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 71:
-+#line 384 "cfg_y.y"
-+ {
- curr_sig->mode = sm_net;
-- ;
-- break;}
--case 71:
--#line 377 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 72:
-+#line 388 "cfg_y.y"
-+ {
- curr_sig->mode = sm_switch;
-- ;
-- break;}
--case 72:
--#line 384 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 73:
-+#line 395 "cfg_y.y"
-+ {
- set_verbosity("POLICY",yyvsp[0].num);
-- ;
-- break;}
--case 73:
--#line 388 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 74:
-+#line 399 "cfg_y.y"
-+ {
- rule = alloc_t(RULE);
- rule->type = yyvsp[0].num;
-- ;
-- break;}
--case 75:
--#line 397 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 76:
-+#line 408 "cfg_y.y"
-+ {
- yyval.num = ACL_ALLOW;
-- ;
-- break;}
--case 76:
--#line 401 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 77:
-+#line 412 "cfg_y.y"
-+ {
- yyval.num = ACL_REJECT;
-- ;
-- break;}
--case 77:
--#line 408 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 78:
-+#line 419 "cfg_y.y"
-+ {
- rule->type |= ACL_IN;
- put_address(yyvsp[0].str);
-- ;
-- break;}
--case 78:
--#line 413 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 79:
-+#line 424 "cfg_y.y"
-+ {
- rule->type |= ACL_OUT;
- put_address(yyvsp[0].str);
-- ;
-- break;}
--}
-- /* the action file gets copied in in place of this dollarsign */
--#line 543 "/usr/lib/bison.simple"
-+ }
-+ break;
-+
-+
-+ }
-+
-+/* Line 1010 of yacc.c. */
-+#line 1585 "y.tab.c"
-
- yyvsp -= yylen;
- yyssp -= yylen;
--#ifdef YYLSP_NEEDED
-- yylsp -= yylen;
--#endif
-
--#if YYDEBUG != 0
-- if (yydebug)
-- {
-- short *ssp1 = yyss - 1;
-- fprintf (stderr, "state stack now");
-- while (ssp1 != yyssp)
-- fprintf (stderr, " %d", *++ssp1);
-- fprintf (stderr, "\n");
-- }
--#endif
-+
-+ YY_STACK_PRINT (yyss, yyssp);
-
- *++yyvsp = yyval;
-
--#ifdef YYLSP_NEEDED
-- yylsp++;
-- if (yylen == 0)
-- {
-- yylsp->first_line = yylloc.first_line;
-- yylsp->first_column = yylloc.first_column;
-- yylsp->last_line = (yylsp-1)->last_line;
-- yylsp->last_column = (yylsp-1)->last_column;
-- yylsp->text = 0;
-- }
-- else
-- {
-- yylsp->last_line = (yylsp+yylen-1)->last_line;
-- yylsp->last_column = (yylsp+yylen-1)->last_column;
-- }
--#endif
-
-- /* Now "shift" the result of the reduction.
-- Determine what state that goes to,
-- based on the state we popped back to
-- and the rule number reduced by. */
-+ /* Now `shift' the result of the reduction. Determine what state
-+ that goes to, based on the state we popped back to and the rule
-+ number reduced by. */
-
- yyn = yyr1[yyn];
-
-- yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-- if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
-- yystate = yydefgoto[yyn - YYNTBASE];
-+ yystate = yydefgoto[yyn - YYNTOKENS];
-
- goto yynewstate;
-
--yyerrlab: /* here on detecting error */
-
-- if (! yyerrstatus)
-- /* If not already recovering from an error, report this error. */
-+/*------------------------------------.
-+| yyerrlab -- here on detecting error |
-+`------------------------------------*/
-+yyerrlab:
-+ /* If not already recovering from an error, report this error. */
-+ if (!yyerrstatus)
- {
- ++yynerrs;
--
--#ifdef YYERROR_VERBOSE
-+#if YYERROR_VERBOSE
- yyn = yypact[yystate];
-
-- if (yyn > YYFLAG && yyn < YYLAST)
-+ if (YYPACT_NINF < yyn && yyn < YYLAST)
- {
-- int size = 0;
-- char *msg;
-- int x, count;
--
-- count = 0;
-- /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
-- for (x = (yyn < 0 ? -yyn : 0);
-- x < (sizeof(yytname) / sizeof(char *)); x++)
-- if (yycheck[x + yyn] == x)
-- size += strlen(yytname[x]) + 15, count++;
-- msg = (char *) malloc(size + 15);
-- if (msg != 0)
-+ YYSIZE_T yysize = 0;
-+ int yytype = YYTRANSLATE (yychar);
-+ const char* yyprefix;
-+ char *yymsg;
-+ int yyx;
-+
-+ /* Start YYX at -YYN if negative to avoid negative indexes in
-+ YYCHECK. */
-+ int yyxbegin = yyn < 0 ? -yyn : 0;
-+
-+ /* Stay within bounds of both yycheck and yytname. */
-+ int yychecklim = YYLAST - yyn;
-+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-+ int yycount = 0;
-+
-+ yyprefix = ", expecting ";
-+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+ {
-+ yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
-+ yycount += 1;
-+ if (yycount == 5)
-+ {
-+ yysize = 0;
-+ break;
-+ }
-+ }
-+ yysize += (sizeof ("syntax error, unexpected ")
-+ + yystrlen (yytname[yytype]));
-+ yymsg = (char *) YYSTACK_ALLOC (yysize);
-+ if (yymsg != 0)
- {
-- strcpy(msg, "parse error");
-+ char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
-+ yyp = yystpcpy (yyp, yytname[yytype]);
-
-- if (count < 5)
-+ if (yycount < 5)
- {
-- count = 0;
-- for (x = (yyn < 0 ? -yyn : 0);
-- x < (sizeof(yytname) / sizeof(char *)); x++)
-- if (yycheck[x + yyn] == x)
-+ yyprefix = ", expecting ";
-+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
-- strcat(msg, count == 0 ? ", expecting `" : " or `");
-- strcat(msg, yytname[x]);
-- strcat(msg, "'");
-- count++;
-+ yyp = yystpcpy (yyp, yyprefix);
-+ yyp = yystpcpy (yyp, yytname[yyx]);
-+ yyprefix = " or ";
- }
- }
-- yyerror(msg);
-- free(msg);
-+ yyerror (yymsg);
-+ YYSTACK_FREE (yymsg);
- }
- else
-- yyerror ("parse error; also virtual memory exceeded");
-+ yyerror ("syntax error; also virtual memory exhausted");
- }
- else
- #endif /* YYERROR_VERBOSE */
-- yyerror("parse error");
-+ yyerror ("syntax error");
- }
-
-- goto yyerrlab1;
--yyerrlab1: /* here on error raised explicitly by an action */
-+
-
- if (yyerrstatus == 3)
- {
-- /* if just tried and failed to reuse lookahead token after an error, discard it. */
-+ /* If just tried and failed to reuse lookahead token after an
-+ error, discard it. */
-
-- /* return failure if at end of input */
-- if (yychar == YYEOF)
-- YYABORT;
--
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
--#endif
-+ if (yychar <= YYEOF)
-+ {
-+ /* If at end of input, pop the error token,
-+ then the rest of the stack, then return failure. */
-+ if (yychar == YYEOF)
-+ for (;;)
-+ {
-+ YYPOPSTACK;
-+ if (yyssp == yyss)
-+ YYABORT;
-+ YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
-+ yydestruct (yystos[*yyssp], yyvsp);
-+ }
-+ }
-+ else
-+ {
-+ YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
-+ yydestruct (yytoken, &yylval);
-+ yychar = YYEMPTY;
-
-- yychar = YYEMPTY;
-+ }
- }
-
-- /* Else will try to reuse lookahead token
-- after shifting the error token. */
--
-- yyerrstatus = 3; /* Each real token shifted decrements this */
-+ /* Else will try to reuse lookahead token after shifting the error
-+ token. */
-+ goto yyerrlab1;
-
-- goto yyerrhandle;
-
--yyerrdefault: /* current state does not do anything special for the error token. */
-+/*---------------------------------------------------.
-+| yyerrorlab -- error raised explicitly by YYERROR. |
-+`---------------------------------------------------*/
-+yyerrorlab:
-
--#if 0
-- /* This is wrong; only states that explicitly want error tokens
-- should shift them. */
-- yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
-- if (yyn) goto yydefault;
-+#ifdef __GNUC__
-+ /* Pacify GCC when the user code never invokes YYERROR and the label
-+ yyerrorlab therefore never appears in user code. */
-+ if (0)
-+ goto yyerrorlab;
- #endif
-
--yyerrpop: /* pop the current state because it cannot handle the error token */
--
-- if (yyssp == yyss) YYABORT;
-- yyvsp--;
-- yystate = *--yyssp;
--#ifdef YYLSP_NEEDED
-- yylsp--;
--#endif
-+ yyvsp -= yylen;
-+ yyssp -= yylen;
-+ yystate = *yyssp;
-+ goto yyerrlab1;
-
--#if YYDEBUG != 0
-- if (yydebug)
-- {
-- short *ssp1 = yyss - 1;
-- fprintf (stderr, "Error: state stack now");
-- while (ssp1 != yyssp)
-- fprintf (stderr, " %d", *++ssp1);
-- fprintf (stderr, "\n");
-- }
--#endif
-
--yyerrhandle:
-+/*-------------------------------------------------------------.
-+| yyerrlab1 -- common code for both syntax error and YYERROR. |
-+`-------------------------------------------------------------*/
-+yyerrlab1:
-+ yyerrstatus = 3; /* Each real token shifted decrements this. */
-
-- yyn = yypact[yystate];
-- if (yyn == YYFLAG)
-- goto yyerrdefault;
-+ for (;;)
-+ {
-+ yyn = yypact[yystate];
-+ if (yyn != YYPACT_NINF)
-+ {
-+ yyn += YYTERROR;
-+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-+ {
-+ yyn = yytable[yyn];
-+ if (0 < yyn)
-+ break;
-+ }
-+ }
-
-- yyn += YYTERROR;
-- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-- goto yyerrdefault;
-+ /* Pop the current state because it cannot handle the error token. */
-+ if (yyssp == yyss)
-+ YYABORT;
-
-- yyn = yytable[yyn];
-- if (yyn < 0)
-- {
-- if (yyn == YYFLAG)
-- goto yyerrpop;
-- yyn = -yyn;
-- goto yyreduce;
-+ YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
-+ yydestruct (yystos[yystate], yyvsp);
-+ YYPOPSTACK;
-+ yystate = *yyssp;
-+ YY_STACK_PRINT (yyss, yyssp);
- }
-- else if (yyn == 0)
-- goto yyerrpop;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Shifting error token, ");
--#endif
-+ YYDPRINTF ((stderr, "Shifting error token, "));
-
- *++yyvsp = yylval;
--#ifdef YYLSP_NEEDED
-- *++yylsp = yylloc;
--#endif
-+
-
- yystate = yyn;
- goto yynewstate;
-
-- yyacceptlab:
-- /* YYACCEPT comes here. */
-- if (yyfree_stacks)
-- {
-- free (yyss);
-- free (yyvs);
--#ifdef YYLSP_NEEDED
-- free (yyls);
--#endif
-- }
-- return 0;
-
-- yyabortlab:
-- /* YYABORT comes here. */
-- if (yyfree_stacks)
-- {
-- free (yyss);
-- free (yyvs);
--#ifdef YYLSP_NEEDED
-- free (yyls);
-+/*-------------------------------------.
-+| yyacceptlab -- YYACCEPT comes here. |
-+`-------------------------------------*/
-+yyacceptlab:
-+ yyresult = 0;
-+ goto yyreturn;
-+
-+/*-----------------------------------.
-+| yyabortlab -- YYABORT comes here. |
-+`-----------------------------------*/
-+yyabortlab:
-+ yyresult = 1;
-+ goto yyreturn;
-+
-+#ifndef yyoverflow
-+/*----------------------------------------------.
-+| yyoverflowlab -- parser overflow comes here. |
-+`----------------------------------------------*/
-+yyoverflowlab:
-+ yyerror ("parser stack overflow");
-+ yyresult = 2;
-+ /* Fall through. */
-+#endif
-+
-+yyreturn:
-+#ifndef yyoverflow
-+ if (yyss != yyssa)
-+ YYSTACK_FREE (yyss);
- #endif
-- }
-- return 1;
-+ return yyresult;
- }
--#line 418 "cfg_y.y"
-+
-+
-+
---- linux-atm-2.4.1.orig/src/sigd/proto.c
-+++ linux-atm-2.4.1/src/sigd/proto.c
-@@ -259,6 +259,7 @@
- break;
- }
- default:
-+ break;
- }
- va_end(ap);
- if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size);
-@@ -288,6 +289,7 @@
- }
- break;
- default:
-+ break;
- }
- va_end(ap);
- }
---- linux-atm-2.4.1.orig/src/sigd/cfg_y.y
-+++ linux-atm-2.4.1/src/sigd/cfg_y.y
-@@ -7,6 +7,7 @@
- #include <config.h>
- #endif
-
-+#include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include <limits.h>
-@@ -19,6 +20,8 @@
- #include "trace.h"
- #include "policy.h"
-
-+extern void yywarn(const char *s);
-+extern void yyerror(const char *s);
-
- static RULE *rule;
- static SIG_ENTITY *curr_sig = &_entity;
-@@ -125,8 +128,16 @@
- if (entities == &_entity) entities = NULL;
- for (sig = entities; sig; sig = sig->next)
- if (atm_equal((struct sockaddr *) &sig->signaling_pvc,
-- (struct sockaddr *) &$2,0,0))
-- yyerror("duplicate PVC address %d.%d.%d",S_PVC(sig));
-+ (struct sockaddr *) &$2,0,0)) {
-+ const char *err;
-+ asprintf(&err,"duplicate PVC address %d.%d.%d",S_PVC(sig));
-+ if(err) {
-+ yyerror(err);
-+ free(err);
-+ }
-+ else
-+ yyerror("duplicate PVC address");
-+ }
- curr_sig = alloc_t(SIG_ENTITY);
- *curr_sig = _entity;
- curr_sig->signaling_pvc = $2;
-@@ -169,7 +180,7 @@
- if (text2atm($1,(struct sockaddr *) &addr,sizeof(addr),
- T2A_SVC | T2A_WILDCARD | T2A_NAME | T2A_LOCAL) < 0) {
- yyerror("invalid address");
-- return;
-+ return 0;
- }
- add_route(curr_sig,&addr,mask ? strtol(mask,NULL,10) : INT_MAX);
- }
---- linux-atm-2.4.1.orig/src/sigd/cfg_y.h
-+++ linux-atm-2.4.1/src/sigd/cfg_y.h
-@@ -1,44 +1,127 @@
--typedef union {
-+/* A Bison parser, made by GNU Bison 1.875d. */
-+
-+/* Skeleton parser for Yacc-like parsing with Bison,
-+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+
-+ 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, Inc., 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA. */
-+
-+/* As a special exception, when this file is copied by Bison into a
-+ Bison output file, you may use that output file without restriction.
-+ This special exception was added by the Free Software Foundation
-+ in version 1.24 of Bison. */
-+
-+/* Tokens. */
-+#ifndef YYTOKENTYPE
-+# define YYTOKENTYPE
-+ /* Put the tokens into the symbol table, so that GDB and other debuggers
-+ know about them. */
-+ enum yytokentype {
-+ TOK_LEVEL = 258,
-+ TOK_DEBUG = 259,
-+ TOK_INFO = 260,
-+ TOK_WARN = 261,
-+ TOK_ERROR = 262,
-+ TOK_FATAL = 263,
-+ TOK_SIG = 264,
-+ TOK_UNI30 = 265,
-+ TOK_UNI31 = 266,
-+ TOK_UNI40 = 267,
-+ TOK_Q2963_1 = 268,
-+ TOK_SAAL = 269,
-+ TOK_VC = 270,
-+ TOK_IO = 271,
-+ TOK_MODE = 272,
-+ TOK_USER = 273,
-+ TOK_NET = 274,
-+ TOK_SWITCH = 275,
-+ TOK_VPCI = 276,
-+ TOK_ITF = 277,
-+ TOK_PCR = 278,
-+ TOK_TRACE = 279,
-+ TOK_POLICY = 280,
-+ TOK_ALLOW = 281,
-+ TOK_REJECT = 282,
-+ TOK_ENTITY = 283,
-+ TOK_DEFAULT = 284,
-+ TOK_NUMBER = 285,
-+ TOK_MAX_RATE = 286,
-+ TOK_DUMP_DIR = 287,
-+ TOK_LOGFILE = 288,
-+ TOK_QOS = 289,
-+ TOK_FROM = 290,
-+ TOK_TO = 291,
-+ TOK_ROUTE = 292,
-+ TOK_PVC = 293
-+ };
-+#endif
-+#define TOK_LEVEL 258
-+#define TOK_DEBUG 259
-+#define TOK_INFO 260
-+#define TOK_WARN 261
-+#define TOK_ERROR 262
-+#define TOK_FATAL 263
-+#define TOK_SIG 264
-+#define TOK_UNI30 265
-+#define TOK_UNI31 266
-+#define TOK_UNI40 267
-+#define TOK_Q2963_1 268
-+#define TOK_SAAL 269
-+#define TOK_VC 270
-+#define TOK_IO 271
-+#define TOK_MODE 272
-+#define TOK_USER 273
-+#define TOK_NET 274
-+#define TOK_SWITCH 275
-+#define TOK_VPCI 276
-+#define TOK_ITF 277
-+#define TOK_PCR 278
-+#define TOK_TRACE 279
-+#define TOK_POLICY 280
-+#define TOK_ALLOW 281
-+#define TOK_REJECT 282
-+#define TOK_ENTITY 283
-+#define TOK_DEFAULT 284
-+#define TOK_NUMBER 285
-+#define TOK_MAX_RATE 286
-+#define TOK_DUMP_DIR 287
-+#define TOK_LOGFILE 288
-+#define TOK_QOS 289
-+#define TOK_FROM 290
-+#define TOK_TO 291
-+#define TOK_ROUTE 292
-+#define TOK_PVC 293
-+
-+
-+
-+
-+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#line 56 "cfg_y.y"
-+typedef union YYSTYPE {
- int num;
- char *str;
- struct sockaddr_atmpvc pvc;
- } YYSTYPE;
--#define TOK_LEVEL 257
--#define TOK_DEBUG 258
--#define TOK_INFO 259
--#define TOK_WARN 260
--#define TOK_ERROR 261
--#define TOK_FATAL 262
--#define TOK_SIG 263
--#define TOK_UNI30 264
--#define TOK_UNI31 265
--#define TOK_UNI40 266
--#define TOK_Q2963_1 267
--#define TOK_SAAL 268
--#define TOK_VC 269
--#define TOK_IO 270
--#define TOK_MODE 271
--#define TOK_USER 272
--#define TOK_NET 273
--#define TOK_SWITCH 274
--#define TOK_VPCI 275
--#define TOK_ITF 276
--#define TOK_PCR 277
--#define TOK_TRACE 278
--#define TOK_POLICY 279
--#define TOK_ALLOW 280
--#define TOK_REJECT 281
--#define TOK_ENTITY 282
--#define TOK_DEFAULT 283
--#define TOK_NUMBER 284
--#define TOK_MAX_RATE 285
--#define TOK_DUMP_DIR 286
--#define TOK_LOGFILE 287
--#define TOK_QOS 288
--#define TOK_FROM 289
--#define TOK_TO 290
--#define TOK_ROUTE 291
--#define TOK_PVC 292
--
-+/* Line 1285 of yacc.c. */
-+#line 119 "y.tab.h"
-+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-+# define YYSTYPE_IS_DECLARED 1
-+# define YYSTYPE_IS_TRIVIAL 1
-+#endif
-
- extern YYSTYPE yylval;
-+
-+
-+
---- linux-atm-2.4.1.orig/src/maint/Makefile.in
-+++ linux-atm-2.4.1/src/maint/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -181,8 +181,11 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/atmaddr.P .deps/atmdiag.P .deps/atmdump.P \
-+.deps/atmloop.P .deps/atmtcp.P .deps/enitune.P .deps/esi.P \
-+.deps/saaldump.P .deps/sonetdiag.P .deps/zntune.P
- SOURCES = $(atmdiag_SOURCES) $(atmdump_SOURCES) $(sonetdiag_SOURCES) $(saaldump_SOURCES) $(atmaddr_SOURCES) $(esi_SOURCES) $(atmloop_SOURCES) $(atmtcp_SOURCES) $(enitune_SOURCES) $(zntune_SOURCES)
- OBJECTS = $(atmdiag_OBJECTS) $(atmdump_OBJECTS) $(sonetdiag_OBJECTS) $(saaldump_OBJECTS) $(atmaddr_OBJECTS) $(esi_OBJECTS) $(atmloop_OBJECTS) $(atmtcp_OBJECTS) $(enitune_OBJECTS) $(zntune_OBJECTS)
-
-@@ -190,9 +193,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/maint/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/maint/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -247,9 +250,6 @@
- rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
- done
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -272,9 +272,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -388,7 +385,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -404,6 +401,11 @@
- subdir = src/maint
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/maint/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -414,28 +416,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--atmaddr.o: atmaddr.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--atmdiag.o: atmdiag.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--atmdump.o: atmdump.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h
--atmloop.o: atmloop.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--atmtcp.o: atmtcp.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h ../../src/include/atmd.h
--enitune.o: enitune.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--esi.o: esi.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--saaldump.o: saaldump.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/saal/pdu.h \
-- ../../src/include/atmd.h ../../src/qgen/qlib.h
--sonetdiag.o: sonetdiag.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
--zntune.o: zntune.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -475,18 +487,19 @@
- maintainer-clean-generic:
- mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-sbinPROGRAMS \
- mostlyclean-compile mostlyclean-libtool \
-- mostlyclean-tags mostlyclean-generic
-+ mostlyclean-tags mostlyclean-depend mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-binPROGRAMS clean-sbinPROGRAMS clean-compile \
-- clean-libtool clean-tags clean-generic mostlyclean-am
-+ clean-libtool clean-tags clean-depend clean-generic \
-+ mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-binPROGRAMS distclean-sbinPROGRAMS \
- distclean-compile distclean-libtool distclean-tags \
-- distclean-generic clean-am
-+ distclean-depend distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-@@ -494,7 +507,8 @@
- maintainer-clean-am: maintainer-clean-binPROGRAMS \
- maintainer-clean-sbinPROGRAMS maintainer-clean-compile \
- maintainer-clean-libtool maintainer-clean-tags \
-- maintainer-clean-generic distclean-am
-+ maintainer-clean-depend maintainer-clean-generic \
-+ distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -508,12 +522,14 @@
- clean-compile maintainer-clean-compile mostlyclean-libtool \
- distclean-libtool clean-libtool maintainer-clean-libtool install-man8 \
- uninstall-man8 install-man uninstall-man tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
---- linux-atm-2.4.1.orig/src/maint/atmtcp.c
-+++ linux-atm-2.4.1/src/maint/atmtcp.c
-@@ -60,7 +60,7 @@
- static IN *inputs = NULL;
- static fd_set in_set;
- static int fds = 0;
--static int debug = 0;
-+static int atmtcp_debug = 0;
- static int links = 0;
-
-
-@@ -86,7 +86,7 @@
- {
- OUT *out;
-
-- if (debug)
-+ if (atmtcp_debug)
- fprintf(stderr,"Emit: %d.%d, %d bytes\n",ntohs(hdr->vpi),
- ntohs(hdr->vci),(int) ntohl(hdr->length));
- for (out = outputs; out; out = out->next)
-@@ -99,7 +99,7 @@
- OUT *out;
- int changed = 0;
-
-- if (debug)
-+ if (atmtcp_debug)
- fprintf(stderr,"Control: (%d.%d) %s %d.%d, vcc %s\n",
- ntohs(msg->hdr.vpi),ntohs(msg->hdr.vci),
- msg->type == ATMTCP_CTRL_OPEN ? "OPEN" :
-@@ -295,19 +295,19 @@
- }
- if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) {
- msg->result = -errno;
-- if (debug) perror("socket");
-+ if (atmtcp_debug) perror("socket");
- return 1;
- }
- if (setsockopt(s,SOL_ATM,SO_ATMQOS,&msg->qos,sizeof(msg->qos)) < 0) {
- msg->result = -errno;
-- if (debug) perror("setsockopt SO_ATMQOS");
-+ if (atmtcp_debug) perror("setsockopt SO_ATMQOS");
- return 1;
- }
- msg->addr.sap_addr.itf = data->itf;
- if (connect(s,(struct sockaddr *) &msg->addr,
- sizeof(struct sockaddr_atmpvc)) < 0) {
- msg->result = -errno;
-- if (debug) perror("connect");
-+ if (atmtcp_debug) perror("connect");
- return 1;
- }
- (*vcc) = alloc_t(VCC);
-@@ -333,7 +333,7 @@
- addr.sap_addr.vci = ntohs(hdr->vci);
- vcc = real_lookup(data,&addr);
- if (!*vcc) {
-- if (debug)
-+ if (atmtcp_debug)
- fprintf(stderr,"VCC %d.%d not found\n",addr.sap_addr.vpi,
- addr.sap_addr.vci);
- return;
-@@ -430,7 +430,7 @@
- exit(1);
- }
- if (in->bytes < sizeof(*hdr)+ntohl(hdr->length)) return;
-- if (debug)
-+ if (atmtcp_debug)
- fprintf(stderr,"TCP %d.%d, %d bytes\n",ntohs(hdr->vpi),
- ntohs(hdr->vci),(unsigned int) ntohl(hdr->length));
- in->bytes = 0;
-@@ -447,7 +447,7 @@
- fprintf(stderr,"unrecognized control message \"%s\"\n",msg);
- return;
- }
-- if (debug) fprintf(stderr,"received control \"%s\"\n",msg);
-+ if (atmtcp_debug) fprintf(stderr,"received control \"%s\"\n",msg);
- ctl.hdr.vpi = htons(vpi);
- ctl.hdr.vci = htons(vci);
- ctl.hdr.length = htonl(ATMTCP_HDR_MAGIC);
-@@ -508,7 +508,7 @@
- }
- hdr->vpi = hdr->vci = htons(0);
- hdr->length = htonl(pos-start);
-- if (debug) fprintf(stderr,"sending control \"%s\"\n",start);
-+ if (atmtcp_debug) fprintf(stderr,"sending control \"%s\"\n",start);
- tcp_do_send(*(int *) out->user,buf,pos-buf);
- return 0;
- }
-@@ -555,7 +555,7 @@
- exit(1);
- }
- if (in->bytes < sizeof(int)+sizeof(*hdr)+ntohl(hdr->length)) return;
-- if (debug)
-+ if (atmtcp_debug)
- fprintf(stderr,"File %d.%d, %d bytes\n",ntohs(hdr->vpi),
- ntohs(hdr->vci),(unsigned int) ntohl(hdr->length));
- }
-@@ -708,7 +708,7 @@
- while ((c = getopt(argc,argv,"dvV")) != EOF)
- switch (c) {
- case 'd':
-- debug = 1;
-+ atmtcp_debug = 1;
- break;
- case 'v':
- verbose = 1;
-@@ -817,7 +817,8 @@
- }
- else if (!strcmp(ARG,"listen") ||
- (do_background = !strcmp(ARG,"listen-bg"))) {
-- int fd,port,addr_len;
-+ int fd,port;
-+ size_t addr_len;
- int *fd2 = alloc_t(int);
-
- if ((fd = socket(PF_INET,SOCK_STREAM,0)) < 0) {
---- linux-atm-2.4.1.orig/src/maint/enitune.c
-+++ linux-atm-2.4.1/src/maint/enitune.c
-@@ -44,6 +44,7 @@
- if (*end || mult.rx <= 100) usage(name);
- break;
- default:
-+ break;
- }
- if (argc != optind+1) usage(name);
- sioc.number = strtol(argv[optind],&end,0);
---- linux-atm-2.4.1.orig/src/arpd/Makefile.in
-+++ linux-atm-2.4.1/src/arpd/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -90,8 +90,7 @@
- sbin_PROGRAMS = atmarp atmarpd
-
- atmarp_SOURCES = atmarp.c atmarp.h atmarpd.h
--atmarpd_SOURCES = atmarpd.c atmarpd.h arp.c arp.h io.c io.h itf.c itf.h \
-- table.c table.h atmarp.h
-+atmarpd_SOURCES = atmarpd.c atmarpd.h arp.c arp.h io.c io.h itf.c itf.h table.c table.h atmarp.h
-
-
- include_HEADERS = atmarp.h atmarpd.h
-@@ -135,8 +134,10 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/arp.P .deps/atmarp.P .deps/atmarpd.P .deps/io.P \
-+.deps/itf.P .deps/table.P
- SOURCES = $(atmarp_SOURCES) $(atmarpd_SOURCES)
- OBJECTS = $(atmarp_OBJECTS) $(atmarpd_OBJECTS)
-
-@@ -144,9 +145,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/arpd/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/arpd/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -176,9 +177,6 @@
- rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
- done
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -201,9 +199,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -300,7 +295,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -316,6 +311,11 @@
- subdir = src/arpd
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/arpd/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -326,24 +326,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--arp.o: arp.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h ../../src/include/atmd.h atmarp.h \
-- atmarpd.h table.h itf.h io.h arp.h
--atmarp.o: atmarp.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h ../../src/include/atmd.h atmarpd.h
--atmarpd.o: atmarpd.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h atmarpd.h \
-- io.h table.h
--io.o: io.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h ../../src/include/atmd.h atmarpd.h \
-- table.h arp.h atmarp.h itf.h io.h
--itf.o: itf.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atmd.h ../../src/include/atm.h table.h io.h \
-- itf.h arp.h atmarp.h atmarpd.h
--table.o: table.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h ../../src/include/atmd.h atmarpd.h \
-- table.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -383,27 +397,27 @@
-
- maintainer-clean-generic:
- mostlyclean-am: mostlyclean-sbinPROGRAMS mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-sbinPROGRAMS clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+ clean-depend clean-generic mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-sbinPROGRAMS distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-
- maintainer-clean-am: maintainer-clean-sbinPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -416,8 +430,9 @@
- distclean-libtool clean-libtool maintainer-clean-libtool install-man8 \
- uninstall-man8 install-man uninstall-man uninstall-includeHEADERS \
- install-includeHEADERS tags mostlyclean-tags distclean-tags clean-tags \
--maintainer-clean-tags distdir info-am info dvi-am dvi check check-am \
--installcheck-am installcheck install-exec-am install-exec \
-+maintainer-clean-tags distdir mostlyclean-depend distclean-depend \
-+clean-depend maintainer-clean-depend info-am info dvi-am dvi check \
-+check-am installcheck-am installcheck install-exec-am install-exec \
- install-data-am install-data install-am install uninstall-am uninstall \
- all-redirect all-am all installdirs mostlyclean-generic \
- distclean-generic clean-generic maintainer-clean-generic clean \
---- linux-atm-2.4.1.orig/src/arpd/atmarp.c
-+++ linux-atm-2.4.1/src/arpd/atmarp.c
-@@ -92,7 +92,7 @@
- perror("read " ATMARP_DUMP_DIR "/" ATMARP_DUMP_FILE);
- return 1;
- }
-- if (write(0,buffer,size) < 0) {
-+ if (write(1,buffer,size) < 0) {
- perror("write stdout");
- return 1;
- }
---- linux-atm-2.4.1.orig/src/ilmid/Makefile.in
-+++ linux-atm-2.4.1/src/ilmid/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -91,13 +91,9 @@
-
- sbin_PROGRAMS = ilmid
-
--ilmid_SOURCES = rfc1157_snmp.c rfc1157_snmp.h rfc1155_smi.c rfc1155_smi.h \
-- util.c util.h io.c io.h message.c message.h \
-- atmf_uni.c atmf_uni.h mib.c mib.h \
-- sysgroup.c sysgroup.h ilmid.c
-+ilmid_SOURCES = rfc1157_snmp.c rfc1157_snmp.h rfc1155_smi.c rfc1155_smi.h util.c util.h io.c io.h message.c message.h atmf_uni.c atmf_uni.h mib.c mib.h sysgroup.c sysgroup.h ilmid.c
-
--ilmid_LDADD = $(top_builddir)/src/lib/libatm.la \
-- $(top_builddir)/src/ilmid/asn1/libasn1.a
-+ilmid_LDADD = $(top_builddir)/src/lib/libatm.la $(top_builddir)/src/ilmid/asn1/libasn1.a
-
- ilmid_DEPENDENCIES = $(ilmid_LDADD)
-
-@@ -127,8 +123,11 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/atmf_uni.P .deps/ilmid.P .deps/io.P .deps/message.P \
-+.deps/mib.P .deps/rfc1155_smi.P .deps/rfc1157_snmp.P .deps/sysgroup.P \
-+.deps/util.P
- SOURCES = $(ilmid_SOURCES)
- OBJECTS = $(ilmid_OBJECTS)
-
-@@ -136,9 +135,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/ilmid/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/ilmid/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -168,9 +167,6 @@
- rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
- done
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -193,9 +189,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -294,7 +287,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -310,6 +303,11 @@
- subdir = src/ilmid
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/ilmid/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -330,62 +328,38 @@
- || exit 1; \
- fi; \
- done
--atmf_uni.o: atmf_uni.c ../../config.h atmf_uni.h asn1/asn_incl.h \
-- asn1/asn_config.h asn1/nibble_alloc.h asn1/sbuf.h asn1/print.h \
-- asn1/asn_len.h asn1/asn_tag.h asn1/asn_int.h asn1/asn_octs.h \
-- asn1/asn_bits.h asn1/asn_oid.h asn1/asn_null.h asn1/asn_list.h \
-- rfc1155_smi.h rfc1157_snmp.h mib.h ../../src/include/atmd.h \
-- ../../src/include/stdint.h ../../src/include/atm.h util.h
--ilmid.o: ilmid.c ../../config.h asn1/asn_incl.h asn1/asn_config.h \
-- asn1/nibble_alloc.h asn1/sbuf.h asn1/print.h asn1/asn_len.h \
-- asn1/asn_tag.h asn1/asn_int.h asn1/asn_octs.h asn1/asn_bits.h \
-- asn1/asn_oid.h asn1/asn_null.h asn1/asn_list.h rfc1155_smi.h \
-- rfc1157_snmp.h message.h util.h ../../src/include/atmd.h \
-- ../../src/include/stdint.h ../../src/include/atm.h io.h mib.h \
-- atmf_uni.h sysgroup.h
--io.o: io.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h io.h asn1/asn_incl.h asn1/asn_config.h \
-- asn1/nibble_alloc.h asn1/sbuf.h asn1/print.h asn1/asn_len.h \
-- asn1/asn_tag.h asn1/asn_int.h asn1/asn_octs.h asn1/asn_bits.h \
-- asn1/asn_oid.h asn1/asn_null.h asn1/asn_list.h rfc1155_smi.h \
-- rfc1157_snmp.h ../../src/include/atmd.h atmf_uni.h mib.h
--message.o: message.c ../../config.h message.h asn1/asn_incl.h \
-- asn1/asn_config.h asn1/nibble_alloc.h asn1/sbuf.h asn1/print.h \
-- asn1/asn_len.h asn1/asn_tag.h asn1/asn_int.h asn1/asn_octs.h \
-- asn1/asn_bits.h asn1/asn_oid.h asn1/asn_null.h asn1/asn_list.h \
-- rfc1155_smi.h rfc1157_snmp.h atmf_uni.h mib.h \
-- ../../src/include/atmd.h ../../src/include/stdint.h \
-- ../../src/include/atm.h util.h
--mib.o: mib.c ../../config.h mib.h ../../src/include/atmd.h \
-- ../../src/include/stdint.h ../../src/include/atm.h \
-- asn1/asn_incl.h asn1/asn_config.h asn1/nibble_alloc.h \
-- asn1/sbuf.h asn1/print.h asn1/asn_len.h asn1/asn_tag.h \
-- asn1/asn_int.h asn1/asn_octs.h asn1/asn_bits.h asn1/asn_oid.h \
-- asn1/asn_null.h asn1/asn_list.h rfc1155_smi.h rfc1157_snmp.h \
-- sysgroup.h atmf_uni.h util.h
--rfc1155_smi.o: rfc1155_smi.c ../../config.h asn1/asn_incl.h \
-- asn1/asn_config.h asn1/nibble_alloc.h asn1/sbuf.h asn1/print.h \
-- asn1/asn_len.h asn1/asn_tag.h asn1/asn_int.h asn1/asn_octs.h \
-- asn1/asn_bits.h asn1/asn_oid.h asn1/asn_null.h asn1/asn_list.h \
-- rfc1155_smi.h rfc1157_snmp.h
--rfc1157_snmp.o: rfc1157_snmp.c ../../config.h asn1/asn_incl.h \
-- asn1/asn_config.h asn1/nibble_alloc.h asn1/sbuf.h asn1/print.h \
-- asn1/asn_len.h asn1/asn_tag.h asn1/asn_int.h asn1/asn_octs.h \
-- asn1/asn_bits.h asn1/asn_oid.h asn1/asn_null.h asn1/asn_list.h \
-- rfc1155_smi.h rfc1157_snmp.h
--sysgroup.o: sysgroup.c ../../config.h sysgroup.h asn1/asn_incl.h \
-- asn1/asn_config.h asn1/nibble_alloc.h asn1/sbuf.h asn1/print.h \
-- asn1/asn_len.h asn1/asn_tag.h asn1/asn_int.h asn1/asn_octs.h \
-- asn1/asn_bits.h asn1/asn_oid.h asn1/asn_null.h asn1/asn_list.h \
-- rfc1155_smi.h rfc1157_snmp.h mib.h ../../src/include/atmd.h \
-- ../../src/include/stdint.h ../../src/include/atm.h
--util.o: util.c ../../config.h util.h asn1/asn_incl.h asn1/asn_config.h \
-- asn1/nibble_alloc.h asn1/sbuf.h asn1/print.h asn1/asn_len.h \
-- asn1/asn_tag.h asn1/asn_int.h asn1/asn_octs.h asn1/asn_bits.h \
-- asn1/asn_oid.h asn1/asn_null.h asn1/asn_list.h rfc1155_smi.h \
-- rfc1157_snmp.h ../../src/include/atmd.h \
-- ../../src/include/stdint.h ../../src/include/atm.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-recursive
- dvi-am:
-@@ -424,27 +398,27 @@
-
- maintainer-clean-generic:
- mostlyclean-am: mostlyclean-sbinPROGRAMS mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
-
- mostlyclean: mostlyclean-recursive
-
- clean-am: clean-sbinPROGRAMS clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+ clean-depend clean-generic mostlyclean-am
-
- clean: clean-recursive
-
- distclean-am: distclean-sbinPROGRAMS distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-recursive
-
- maintainer-clean-am: maintainer-clean-sbinPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -460,12 +434,14 @@
- all-recursive check-recursive installcheck-recursive info-recursive \
- dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
- maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs-am \
--installdirs mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs-am installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
---- linux-atm-2.4.1.orig/src/ilmid/io.c
-+++ linux-atm-2.4.1/src/ilmid/io.c
-@@ -32,6 +32,7 @@
- #include <net/if.h>
- #include <atm.h>
- #include <linux/atmdev.h>
-+#include <unistd.h>
- #include "io.h"
- #include "atmd.h"
- #include "atmf_uni.h"
-@@ -299,4 +300,5 @@
- diag(COMPONENT,DIAG_ERROR,"ioctl ATM_GETCIRANGE: %s",strerror(errno));
- return error;
- }
-+ return 0;
- }
---- linux-atm-2.4.1.orig/src/ilmid/atmf_uni.c
-+++ linux-atm-2.4.1/src/ilmid/atmf_uni.c
-@@ -187,7 +187,7 @@
- newPrefix->name = alloc_t(AsnOid);
- newPrefix->name->octs = alloc(varBindName->octetLen);
- AsnOidCopy(newPrefix->name, varBindName);
-- Q_INSERT_BEFORE((NetPrefixNode *) var->value, newPrefix, prefix);
-+ Q_INSERT_BEFORE_TYPED(var->value,(NetPrefixNode *), newPrefix, prefix);
- if(atmNetPrefix.octs == NULL)
- {
- atmNetPrefix.octetLen = varBindName->octetLen - NETPREFIX_LEN - 2;
-@@ -197,7 +197,7 @@
- }
- else if (varbind->value->a.simple->a.number == INVALID && cmp == AsnOidEqual)
- {
-- Q_REMOVE((NetPrefixNode *) var->value, prefix);
-+ Q_REMOVE(var->value, prefix);
- }
-
- return NOERROR;
---- linux-atm-2.4.1.orig/src/ilmid/mib.c
-+++ linux-atm-2.4.1/src/ilmid/mib.c
-@@ -58,13 +58,13 @@
- { NULL }
- };
-
--void MIBget(VarBindList *list, PDUInt *status, AsnInt *index)
-+void MIBget(VarBindList *list, PDUInt *status, AsnInt *Mindex)
- {
- VarBind *varbind;
- Variable *var;
- AsnOidResult result;
-
-- *index = 1;
-+ *Mindex = 1;
- FOR_EACH_LIST_ELMT(varbind, list)
- {
- /* Find the first MIB object not lexigraphically less than the *
-@@ -91,20 +91,20 @@
- if(*status != NOERROR)
- return;
-
-- (*index)++;
-+ (*Mindex)++;
- }
-- *index = 0;
-+ *Mindex = 0;
- return;
- }
-
-
--void MIBgetnext(VarBindList *list, PDUInt *status, AsnInt *index)
-+void MIBgetnext(VarBindList *list, PDUInt *status, AsnInt *Mindex)
- {
- VarBind *varbind;
- Variable *var;
- AsnOidResult result;
-
-- *index = 1;
-+ *Mindex = 1;
- FOR_EACH_LIST_ELMT(varbind, list)
- {
- /* Find the first complex MIB object not lexigraphically less than *
-@@ -139,19 +139,19 @@
- if(*status != NOERROR)
- return;
-
-- (*index)++;
-+ (*Mindex)++;
- }
-- *index = 0;
-+ *Mindex = 0;
- return;
- }
-
--void MIBset(VarBindList *list, PDUInt *status, AsnInt *index)
-+void MIBset(VarBindList *list, PDUInt *status, AsnInt *Mindex)
- {
- VarBind *varbind;
- Variable *var;
- AsnOidResult result;
-
-- *index = 1;
-+ *Mindex = 1;
- FOR_EACH_LIST_ELMT(varbind, list)
- {
- /* Find the first MIB object not lexigraphically less than the *
-@@ -182,9 +182,9 @@
- if(*status != NOERROR)
- return;
-
-- (*index)++;
-+ (*Mindex)++;
- }
-- *index = 0;
-+ *Mindex = 0;
- return;
- }
-
---- linux-atm-2.4.1.orig/src/ilmid/mib.h
-+++ linux-atm-2.4.1/src/ilmid/mib.h
-@@ -39,9 +39,9 @@
- void *value;
- } Variable;
-
--void MIBget(VarBindList *list, PDUInt *status, AsnInt *index);
--void MIBgetnext(VarBindList *list, PDUInt *status, AsnInt *index);
--void MIBset(VarBindList *list, PDUInt *status, AsnInt *index);
-+void MIBget(VarBindList *list, PDUInt *status, AsnInt *Mindex);
-+void MIBgetnext(VarBindList *list, PDUInt *status, AsnInt *Mindex);
-+void MIBset(VarBindList *list, PDUInt *status, AsnInt *Mindex);
- void *MIBdelete(AsnOid *oid);
-
- AsnInt getString(VarBind *varbind, Variable *var);
---- linux-atm-2.4.1.orig/src/ilmid/ilmid.c
-+++ linux-atm-2.4.1/src/ilmid/ilmid.c
-@@ -33,6 +33,7 @@
- #include <config.h>
- #endif
-
-+#include <stdlib.h>
- #include <unistd.h>
- #include <sys/time.h>
- #include <errno.h>
---- linux-atm-2.4.1.orig/src/ilmid/asn1/Makefile.in
-+++ linux-atm-2.4.1/src/ilmid/asn1/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -87,13 +87,7 @@
-
- noinst_LIBRARIES = libasn1.a
-
--libasn1_a_SOURCES = asn_len.c asn_len.h asn_tag.c asn_tag.h \
-- asn_int.c asn_int.h asn_octs.c asn_octs.h \
-- asn_bits.c asn_bits.h str_stk.c str_stk.h \
-- asn_oid.c asn_oid.h asn_null.c asn_null.h \
-- asn_list.c asn_list.h nibble_alloc.c nibble_alloc.h \
-- print.c print.h \
-- asn_config.h min_buf.h sbuf.h exp_buf.h
-+libasn1_a_SOURCES = asn_len.c asn_len.h asn_tag.c asn_tag.h asn_int.c asn_int.h asn_octs.c asn_octs.h asn_bits.c asn_bits.h str_stk.c str_stk.h asn_oid.c asn_oid.h asn_null.c asn_null.h asn_list.c asn_list.h nibble_alloc.c nibble_alloc.h print.c print.h asn_config.h min_buf.h sbuf.h exp_buf.h
-
-
- EXTRA_libasn1_a_SOURCES = asn_incl.h exp_buf.c
-@@ -125,8 +119,12 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/asn_bits.P .deps/asn_int.P .deps/asn_len.P \
-+.deps/asn_list.P .deps/asn_null.P .deps/asn_octs.P .deps/asn_oid.P \
-+.deps/asn_tag.P .deps/exp_buf.P .deps/nibble_alloc.P .deps/print.P \
-+.deps/str_stk.P
- SOURCES = $(libasn1_a_SOURCES) $(EXTRA_libasn1_a_SOURCES)
- OBJECTS = $(libasn1_a_OBJECTS)
-
-@@ -134,9 +132,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/ilmid/asn1/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/ilmid/asn1/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -150,9 +148,6 @@
-
- maintainer-clean-noinstLIBRARIES:
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -175,9 +170,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -217,7 +209,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -233,6 +225,11 @@
- subdir = src/ilmid/asn1
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/ilmid/asn1/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -243,30 +240,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--asn_bits.o: asn_bits.c ../../../config.h asn_config.h nibble_alloc.h \
-- sbuf.h print.h asn_len.h asn_tag.h str_stk.h asn_bits.h
--asn_int.o: asn_int.c ../../../config.h asn_config.h nibble_alloc.h \
-- sbuf.h print.h asn_len.h asn_tag.h asn_int.h
--asn_len.o: asn_len.c ../../../config.h asn_config.h nibble_alloc.h \
-- sbuf.h print.h asn_len.h
--asn_list.o: asn_list.c ../../../config.h asn_config.h nibble_alloc.h \
-- sbuf.h print.h asn_list.h
--asn_null.o: asn_null.c ../../../config.h asn_config.h nibble_alloc.h \
-- sbuf.h print.h asn_len.h asn_tag.h asn_null.h
--asn_octs.o: asn_octs.c ../../../config.h asn_config.h nibble_alloc.h \
-- sbuf.h print.h asn_len.h asn_tag.h str_stk.h asn_bits.h \
-- asn_octs.h
--asn_oid.o: asn_oid.c ../../../config.h asn_config.h nibble_alloc.h \
-- sbuf.h print.h asn_len.h asn_tag.h asn_octs.h asn_oid.h
--asn_tag.o: asn_tag.c ../../../config.h asn_config.h nibble_alloc.h \
-- sbuf.h print.h asn_len.h asn_tag.h
--nibble_alloc.o: nibble_alloc.c ../../../config.h asn_config.h \
-- nibble_alloc.h sbuf.h print.h
--print.o: print.c ../../../config.h asn_config.h nibble_alloc.h sbuf.h \
-- print.h
--str_stk.o: str_stk.c ../../../config.h asn_config.h nibble_alloc.h \
-- sbuf.h print.h str_stk.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -303,27 +308,27 @@
-
- maintainer-clean-generic:
- mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-noinstLIBRARIES clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+ clean-depend clean-generic mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-noinstLIBRARIES distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-
- maintainer-clean-am: maintainer-clean-noinstLIBRARIES \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -334,12 +339,14 @@
- mostlyclean-compile distclean-compile clean-compile \
- maintainer-clean-compile mostlyclean-libtool distclean-libtool \
- clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
---- linux-atm-2.4.1.orig/src/ilmid/asn1/asn_int.c
-+++ linux-atm-2.4.1/src/ilmid/asn1/asn_int.c
-@@ -185,7 +185,7 @@
- AsnInt* v _AND_
- unsigned short int indent)
- {
-- fprintf(f,"%d", *v);
-+ fprintf(f,"%ld", *v);
- }
-
-
-@@ -252,7 +252,6 @@
- UAsnInt* data)
- {
- int len;
-- int retLen;
- int i;
- unsigned long int mask;
- unsigned long int dataCpy;
-@@ -370,5 +369,5 @@
- UAsnInt* v _AND_
- unsigned short int indent)
- {
-- fprintf(f,"%u", *v);
-+ fprintf(f,"%lu", *v);
- }
---- linux-atm-2.4.1.orig/src/ilmid/asn1/asn_octs.c
-+++ linux-atm-2.4.1/src/ilmid/asn1/asn_octs.c
-@@ -21,6 +21,9 @@
- #include <config.h>
- #endif
-
-+#include <stdlib.h>
-+#include <string.h>
-+
- #include "asn_config.h"
- #include "asn_len.h"
- #include "asn_tag.h"
---- linux-atm-2.4.1.orig/src/ilmid/asn1/asn_bits.c
-+++ linux-atm-2.4.1/src/ilmid/asn1/asn_bits.c
-@@ -21,6 +21,9 @@
- #include <config.h>
- #endif
-
-+#include <stdlib.h>
-+#include <string.h>
-+
- #include "asn_config.h"
- #include "asn_len.h"
- #include "asn_tag.h"
---- linux-atm-2.4.1.orig/src/ilmid/asn1/asn_oid.c
-+++ linux-atm-2.4.1/src/ilmid/asn1/asn_oid.c
-@@ -21,6 +21,9 @@
- #include <config.h>
- #endif
-
-+#include <stdlib.h>
-+#include <string.h>
-+
- #include "asn_config.h"
- #include "asn_len.h"
- #include "asn_tag.h"
-@@ -125,7 +128,7 @@
- if (firstArcNum > 2)
- firstArcNum = 2;
-
-- fprintf(f,"%u %u", firstArcNum, arcNum - (firstArcNum * 40));
-+ fprintf(f,"%d %lu", firstArcNum, arcNum - (firstArcNum * 40));
-
- for (; i < v->octetLen ; )
- {
-@@ -134,7 +137,7 @@
-
- arcNum = (arcNum << 7) + (v->octs[i] & 0x7f);
- i++;
-- fprintf(f," %u", arcNum);
-+ fprintf(f," %lu", arcNum);
- }
- fprintf(f,"}");
-
---- linux-atm-2.4.1.orig/src/ilmid/asn1/asn_list.c
-+++ linux-atm-2.4.1/src/ilmid/asn1/asn_list.c
-@@ -20,6 +20,8 @@
- #include <config.h>
- #endif
-
-+#include <stdlib.h>
-+
- #include "asn_config.h"
- #include "asn_list.h"
-
---- linux-atm-2.4.1.orig/src/ilmid/asn1/nibble_alloc.c
-+++ linux-atm-2.4.1/src/ilmid/asn1/nibble_alloc.c
-@@ -20,7 +20,9 @@
- #include <config.h>
- #endif
-
-+#include <string.h>
- #include <memory.h>
-+#include <stdlib.h>
- #include "asn_config.h"
- #include "nibble_alloc.h"
-
---- linux-atm-2.4.1.orig/src/ilmid/asn1/nibble_alloc.h
-+++ linux-atm-2.4.1/src/ilmid/asn1/nibble_alloc.h
-@@ -39,13 +39,13 @@
- void InitNibbleMem PROTO((unsigned long int initialSize,
- unsigned long int incrementSize));
-
--void ShutdownNibbleMem();
-+void ShutdownNibbleMem(void);
-
- void ServiceNibbleFault PROTO((unsigned long int size));
-
- void* NibbleAlloc PROTO((unsigned long int size));
-
--void ResetNibbleMem();
-+void ResetNibbleMem(void);
-
-
- #endif /* conditional include */
---- linux-atm-2.4.1.orig/src/man/Makefile.in
-+++ linux-atm-2.4.1/src/man/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -100,14 +100,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- all: all-redirect
- .SUFFIXES:
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/man/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/man/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -159,6 +159,11 @@
- subdir = src/man
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/man/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
---- linux-atm-2.4.1.orig/src/led/Makefile.in
-+++ linux-atm-2.4.1/src/led/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -87,9 +87,7 @@
-
- sbin_PROGRAMS = zeppelin
-
--zeppelin_SOURCES = join.c join.h conn.c conn.h main.c address.c address.h \
-- frames.c frames.h display.c display.h \
-- kernel.c kernel.h frame_defs.h lec.h
-+zeppelin_SOURCES = join.c join.h conn.c conn.h main.c address.c address.h frames.c frames.h display.c display.h kernel.c kernel.h frame_defs.h lec.h
-
- zeppelin_LDADD = $(top_builddir)/src/lib/libatm.la
- zeppelin_DEPENDENCIES = $(zeppelin_LDADD)
-@@ -125,8 +123,10 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/address.P .deps/conn.P .deps/display.P .deps/frames.P \
-+.deps/join.P .deps/kernel.P .deps/main.P
- SOURCES = $(zeppelin_SOURCES)
- OBJECTS = $(zeppelin_OBJECTS)
-
-@@ -134,9 +134,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/led/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/led/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -166,9 +166,6 @@
- rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
- done
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -191,9 +188,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -271,7 +265,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -287,6 +281,11 @@
- subdir = src/led
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/led/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -297,28 +296,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--address.o: address.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h address.h
--conn.o: conn.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmsap.h \
-- ../../src/include/atmd.h conn.h display.h lec.h frames.h \
-- frame_defs.h kernel.h
--display.o: display.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h display.h \
-- frame_defs.h
--frames.o: frames.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h conn.h \
-- lec.h frames.h frame_defs.h display.h kernel.h
--join.o: join.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h conn.h \
-- lec.h join.h frames.h frame_defs.h display.h
--kernel.o: kernel.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h kernel.h \
-- lec.h conn.h frames.h frame_defs.h
--main.o: main.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h join.h \
-- lec.h conn.h address.h display.h kernel.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -356,27 +365,27 @@
-
- maintainer-clean-generic:
- mostlyclean-am: mostlyclean-sbinPROGRAMS mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-sbinPROGRAMS clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+ clean-depend clean-generic mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-sbinPROGRAMS distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-
- maintainer-clean-am: maintainer-clean-sbinPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -388,12 +397,14 @@
- clean-compile maintainer-clean-compile mostlyclean-libtool \
- distclean-libtool clean-libtool maintainer-clean-libtool install-man8 \
- uninstall-man8 install-man uninstall-man tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
---- linux-atm-2.4.1.orig/src/lane/Makefile.in
-+++ linux-atm-2.4.1/src/lane/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -89,14 +89,11 @@
-
- LDADD = $(top_builddir)/src/lib/libatm.la
-
--LES_BUS_SRCS = mem.c mem.h load.c load.h units.c units.h load_lex.l load_lex.h \
-- timers.c timers.h dump.c dump.h lane_atm.c lane_atm.h \
-- events.c events.h lane.c lane.h
-+LES_BUS_SRCS = mem.c mem.h load.c load.h units.c units.h load_lex.l load_lex.h timers.c timers.h dump.c dump.h lane_atm.c lane_atm.h events.c events.h lane.c lane.h
-
- les_SOURCES = $(LES_BUS_SRCS) packet.c packet.h connect.c connect.h db.c db.h
- bus_SOURCES = $(LES_BUS_SRCS) connect_bus.c
--lecs_SOURCES = lecs_db.l lecs_db.h lecs_load.c lecs_load.h lecs.c lecs.h \
-- ldb.c ldb.h mem_lecs.c mem_lecs.h atm_lecs.c atm_lecs.h
-+lecs_SOURCES = lecs_db.l lecs_db.h lecs_load.c lecs_load.h lecs.c lecs.h ldb.c ldb.h mem_lecs.c mem_lecs.h atm_lecs.c atm_lecs.h
-
-
- man_MANS = les.8 lecs.8 bus.8
-@@ -148,8 +145,13 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/atm_lecs.P .deps/connect.P .deps/connect_bus.P \
-+.deps/db.P .deps/dump.P .deps/events.P .deps/lane.P .deps/lane_atm.P \
-+.deps/ldb.P .deps/lecs.P .deps/lecs_db.P .deps/lecs_load.P .deps/load.P \
-+.deps/load_lex.P .deps/mem.P .deps/mem_lecs.P .deps/packet.P \
-+.deps/timers.P .deps/units.P
- SOURCES = $(les_SOURCES) $(bus_SOURCES) $(lecs_SOURCES)
- OBJECTS = $(les_OBJECTS) $(bus_OBJECTS) $(lecs_OBJECTS)
-
-@@ -157,9 +159,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .l .lo .o .obj .s
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/lane/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/lane/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -189,9 +191,6 @@
- rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
- done
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -214,9 +213,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -304,7 +300,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -320,6 +316,11 @@
- subdir = src/lane
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/lane/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -330,62 +331,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--atm_lecs.o: atm_lecs.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmsap.h \
-- atm_lecs.h
--connect.o: connect.c ../../config.h ../../src/include/stdint.h mem.h \
-- units.h lane.h dump.h ../../src/include/atm.h \
-- ../../src/include/atmsap.h load.h connect.h timers.h events.h \
-- db.h packet.h lane_atm.h
--connect_bus.o: connect_bus.c ../../config.h ../../src/include/stdint.h \
-- mem.h units.h lane.h dump.h ../../src/include/atm.h \
-- ../../src/include/atmsap.h load.h connect.h timers.h events.h \
-- lane_atm.h
--db.o: db.c ../../config.h ../../src/include/stdint.h mem.h units.h \
-- lane.h dump.h ../../src/include/atm.h \
-- ../../src/include/atmsap.h load.h connect.h timers.h events.h \
-- db.h
--dump.o: dump.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h ../../src/include/atmsap.h dump.h \
-- units.h lane.h load.h
--events.o: events.c ../../config.h events.h units.h load.h lane.h dump.h \
-- ../../src/include/atm.h ../../src/include/stdint.h \
-- ../../src/include/atmsap.h mem.h timers.h connect.h
--lane.o: lane.c ../../config.h units.h load.h lane.h dump.h \
-- ../../src/include/atm.h ../../src/include/stdint.h \
-- ../../src/include/atmsap.h mem.h connect.h timers.h events.h
--lane_atm.o: lane_atm.c ../../config.h lane_atm.h units.h lane.h \
-- connect.h timers.h load.h events.h ../../src/include/atmsap.h \
-- ../../src/include/stdint.h dump.h ../../src/include/atm.h mem.h
--ldb.o: ldb.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h lecs.h ldb.h mem_lecs.h
--lecs.o: lecs.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h lecs_load.h ldb.h mem_lecs.h lecs.h \
-- atm_lecs.h
--lecs_db.o: lecs_db.c ../../config.h lecs_load.h lecs_db.h
--lecs_load.o: lecs_load.c ../../config.h lecs_load.h lecs_db.h ldb.h \
-- lecs.h
--load.o: load.c ../../config.h load.h units.h lane.h dump.h \
-- ../../src/include/atm.h ../../src/include/stdint.h \
-- ../../src/include/atmsap.h mem.h load_lex.h
--load_lex.o: load_lex.c ../../config.h ../../src/include/stdint.h \
-- load_lex.h lane.h units.h load.h mem.h
--mem.o: mem.c ../../config.h mem.h units.h dump.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmsap.h lane.h \
-- load.h
--mem_lecs.o: mem_lecs.c ../../config.h mem_lecs.h
--packet.o: packet.c ../../config.h ../../src/include/stdint.h mem.h \
-- units.h lane.h dump.h ../../src/include/atm.h \
-- ../../src/include/atmsap.h load.h connect.h timers.h events.h \
-- db.h packet.h
--timers.o: timers.c ../../config.h timers.h units.h load.h lane.h dump.h \
-- ../../src/include/atm.h ../../src/include/stdint.h \
-- ../../src/include/atmsap.h mem.h
--units.o: units.c ../../config.h units.h mem.h lane.h load.h dump.h \
-- ../../src/include/atm.h ../../src/include/stdint.h \
-- ../../src/include/atmsap.h connect.h timers.h events.h \
-- lane_atm.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -422,29 +399,29 @@
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-
- maintainer-clean-generic:
-- -test -z "lecs_dblload_lexl" || rm -f lecs_dbl load_lexl
-+ -test -z "lecs_dbcload_lexc" || rm -f lecs_dbc load_lexc
- mostlyclean-am: mostlyclean-sbinPROGRAMS mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-sbinPROGRAMS clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+ clean-depend clean-generic mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-sbinPROGRAMS distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-
- maintainer-clean-am: maintainer-clean-sbinPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -456,12 +433,14 @@
- clean-compile maintainer-clean-compile mostlyclean-libtool \
- distclean-libtool clean-libtool maintainer-clean-libtool install-man8 \
- uninstall-man8 install-man uninstall-man tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
---- linux-atm-2.4.1.orig/src/mpoad/Makefile.in
-+++ linux-atm-2.4.1/src/mpoad/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -89,9 +89,7 @@
-
- LDADD = $(top_builddir)/src/lib/libatm.la
-
--mpcd_SOURCES = get_vars.c get_vars.h io.c io.h k_interf.c k_interf.h main.c \
-- p_factory.c p_recogn.c id_list.c tag_list.c \
-- poll2select.c poll2select.h lecs.c lecs.h packets.h
-+mpcd_SOURCES = get_vars.c get_vars.h io.c io.h k_interf.c k_interf.h main.c p_factory.c p_recogn.c id_list.c tag_list.c poll2select.c poll2select.h lecs.c lecs.h packets.h
-
-
- man_MANS = mpcd.8
-@@ -128,8 +126,11 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/get_vars.P .deps/id_list.P .deps/io.P \
-+.deps/k_interf.P .deps/lecs.P .deps/main.P .deps/p_factory.P \
-+.deps/p_recogn.P .deps/poll2select.P .deps/tag_list.P
- SOURCES = $(mpcd_SOURCES)
- OBJECTS = $(mpcd_OBJECTS)
-
-@@ -137,9 +138,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/mpoad/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/mpoad/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -169,9 +170,6 @@
- rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
- done
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -194,9 +192,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -274,7 +269,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -290,6 +285,11 @@
- subdir = src/mpoad
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/mpoad/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -300,29 +300,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--get_vars.o: get_vars.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h packets.h get_vars.h io.h
--id_list.o: id_list.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h packets.h
--io.o: io.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h packets.h k_interf.h io.h get_vars.h \
-- poll2select.h
--k_interf.o: k_interf.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h k_interf.h packets.h io.h get_vars.h
--lecs.o: lecs.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h ../../src/include/atmsap.h lecs.h \
-- k_interf.h
--main.o: main.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h packets.h io.h k_interf.h get_vars.h \
-- lecs.h
--p_factory.o: p_factory.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atm.h packets.h get_vars.h io.h
--p_recogn.o: p_recogn.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h io.h k_interf.h packets.h
--poll2select.o: poll2select.c ../../config.h
--tag_list.o: tag_list.c ../../config.h packets.h ../../src/include/atm.h \
-- ../../src/include/stdint.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -360,27 +369,27 @@
-
- maintainer-clean-generic:
- mostlyclean-am: mostlyclean-sbinPROGRAMS mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-sbinPROGRAMS clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+ clean-depend clean-generic mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-sbinPROGRAMS distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-
- maintainer-clean-am: maintainer-clean-sbinPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -392,12 +401,14 @@
- clean-compile maintainer-clean-compile mostlyclean-libtool \
- distclean-libtool clean-libtool maintainer-clean-libtool install-man8 \
- uninstall-man8 install-man uninstall-man tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
---- linux-atm-2.4.1.orig/src/mpoad/p_factory.c
-+++ linux-atm-2.4.1/src/mpoad/p_factory.c
-@@ -34,7 +34,7 @@
-
- while( count > 1 ) {
- /* This is the inner loop */
-- sum += * ((uint16_t *) addr)++;
-+ sum += * ((uint16_t *) addr); addr += sizeof(uint16_t);
- count -= 2;
- }
-
---- linux-atm-2.4.1.orig/src/switch/Makefile.in
-+++ linux-atm-2.4.1/src/switch/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -92,11 +92,9 @@
-
- swc_SOURCES = swc.c swc.h
- swc_LDADD = $(top_builddir)/src/lib/libatm.la
--swc_DEPENDENCIES = $(swc_LDADD) $(top_builddir)/src/include/atm.h \
-- $(top_builddir)/src/include/atmd.h
-+swc_DEPENDENCIES = $(swc_LDADD) $(top_builddir)/src/include/atm.h $(top_builddir)/src/include/atmd.h
-
--libsw_a_SOURCES = control.c dispatch.c dispatch.h proto.c proto.h relay.c \
-- route.c route.h sig.c sig.h cfg_y.y cfg_l.l fab.h
-+libsw_a_SOURCES = control.c dispatch.c dispatch.h proto.c proto.h relay.c route.c route.h sig.c sig.h cfg_y.y cfg_l.l fab.h
-
-
- EXTRA_DIST = cfg_y.h README
-@@ -132,8 +130,11 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/cfg_l.P .deps/cfg_y.P .deps/control.P \
-+.deps/dispatch.P .deps/proto.P .deps/relay.P .deps/route.P .deps/sig.P \
-+.deps/swc.P
- SOURCES = $(libsw_a_SOURCES) $(swc_SOURCES)
- OBJECTS = $(libsw_a_OBJECTS) $(swc_OBJECTS)
-
-@@ -141,9 +142,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .l .lo .o .obj .s .y
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/switch/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/switch/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -157,9 +158,6 @@
-
- maintainer-clean-noinstLIBRARIES:
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -182,9 +180,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -306,7 +301,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -322,6 +317,11 @@
- subdir = src/switch
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/switch/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -342,32 +342,38 @@
- || exit 1; \
- fi; \
- done
--cfg_l.o: cfg_l.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h cfg_y.h
--cfg_y.o: cfg_y.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h fab.h proto.h \
-- ../../src/include/atmsap.h ../../src/include/atmd.h sig.h \
-- route.h swc.h
--control.o: control.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h fab.h \
-- proto.h ../../src/include/atmsap.h sig.h dispatch.h swc.h
--dispatch.o: dispatch.c ../../config.h ../../src/include/atmd.h \
-- ../../src/include/stdint.h ../../src/include/atm.h dispatch.h
--proto.o: proto.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h sig.h fab.h \
-- proto.h ../../src/include/atmsap.h
--relay.o: relay.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h fab.h \
-- proto.h ../../src/include/atmsap.h sig.h dispatch.h route.h
--route.o: route.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h route.h \
-- sig.h
--sig.o: sig.c ../../config.h ../../src/include/stdint.h \
-- ../../src/include/atmd.h ../../src/include/atm.h dispatch.h \
-- proto.h ../../src/include/atmsap.h sig.h route.h fab.h
--swc.o: swc.c ../../config.h ../../src/include/atm.h \
-- ../../src/include/stdint.h ../../src/include/atmd.h swc.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-recursive
- dvi-am:
-@@ -404,22 +410,23 @@
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-
- maintainer-clean-generic:
-- -test -z "cfg_llcfg_yhcfg_yc" || rm -f cfg_ll cfg_yh cfg_yc
-+ -test -z "cfg_lccfg_yhcfg_yc" || rm -f cfg_lc cfg_yh cfg_yc
- mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
- mostlyclean-libtool mostlyclean-noinstPROGRAMS \
-- mostlyclean-tags mostlyclean-generic
-+ mostlyclean-tags mostlyclean-depend mostlyclean-generic
-
- mostlyclean: mostlyclean-recursive
-
- clean-am: clean-noinstLIBRARIES clean-compile clean-libtool \
-- clean-noinstPROGRAMS clean-tags clean-generic \
-- mostlyclean-am
-+ clean-noinstPROGRAMS clean-tags clean-depend \
-+ clean-generic mostlyclean-am
-
- clean: clean-recursive
-
- distclean-am: distclean-noinstLIBRARIES distclean-compile \
- distclean-libtool distclean-noinstPROGRAMS \
-- distclean-tags distclean-generic clean-am
-+ distclean-tags distclean-depend distclean-generic \
-+ clean-am
- -rm -f libtool
-
- distclean: distclean-recursive
-@@ -427,7 +434,8 @@
- maintainer-clean-am: maintainer-clean-noinstLIBRARIES \
- maintainer-clean-compile maintainer-clean-libtool \
- maintainer-clean-noinstPROGRAMS maintainer-clean-tags \
-- maintainer-clean-generic distclean-am
-+ maintainer-clean-depend maintainer-clean-generic \
-+ distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -445,12 +453,14 @@
- all-recursive check-recursive installcheck-recursive info-recursive \
- dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
- maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs-am \
--installdirs mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs-am installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
---- linux-atm-2.4.1.orig/src/switch/cfg_y.c
-+++ linux-atm-2.4.1/src/switch/cfg_y.c
-@@ -1,21 +1,87 @@
-+/* A Bison parser, made by GNU Bison 1.875d. */
-
--/* A Bison parser, made from cfg_y.y
-- by GNU Bison version 1.28 */
-+/* Skeleton parser for Yacc-like parsing with Bison,
-+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-
--#define YYBISON 1 /* Identify Bison output. */
-+ 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, Inc., 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA. */
-+
-+/* As a special exception, when this file is copied by Bison into a
-+ Bison output file, you may use that output file without restriction.
-+ This special exception was added by the Free Software Foundation
-+ in version 1.24 of Bison. */
-+
-+/* Written by Richard Stallman by simplifying the original so called
-+ ``semantic'' parser. */
-+
-+/* All symbols defined below should begin with yy or YY, to avoid
-+ infringing on user name space. This should be done even for local
-+ variables, as they might otherwise be expanded by user macros.
-+ There are some unavoidable exceptions within include files to
-+ define necessary library symbols; they are noted "INFRINGES ON
-+ USER NAME SPACE" below. */
-+
-+/* Identify Bison output. */
-+#define YYBISON 1
-+
-+/* Skeleton name. */
-+#define YYSKELETON_NAME "yacc.c"
-+
-+/* Pure parsers. */
-+#define YYPURE 0
-+
-+/* Using locations. */
-+#define YYLSP_NEEDED 0
-
--#define TOK_COMMAND 257
--#define TOK_VPCI 258
--#define TOK_ITF 259
--#define TOK_DEFAULT 260
--#define TOK_ROUTE 261
--#define TOK_STR 262
--#define TOK_SOCKET 263
--#define TOK_OPTION 264
--#define TOK_CONTROL 265
--#define TOK_NUM 266
--#define TOK_PVC 267
-
-+
-+/* Tokens. */
-+#ifndef YYTOKENTYPE
-+# define YYTOKENTYPE
-+ /* Put the tokens into the symbol table, so that GDB and other debuggers
-+ know about them. */
-+ enum yytokentype {
-+ TOK_COMMAND = 258,
-+ TOK_VPCI = 259,
-+ TOK_ITF = 260,
-+ TOK_DEFAULT = 261,
-+ TOK_ROUTE = 262,
-+ TOK_STR = 263,
-+ TOK_SOCKET = 264,
-+ TOK_OPTION = 265,
-+ TOK_CONTROL = 266,
-+ TOK_NUM = 267,
-+ TOK_PVC = 268
-+ };
-+#endif
-+#define TOK_COMMAND 258
-+#define TOK_VPCI 259
-+#define TOK_ITF 260
-+#define TOK_DEFAULT 261
-+#define TOK_ROUTE 262
-+#define TOK_STR 263
-+#define TOK_SOCKET 264
-+#define TOK_OPTION 265
-+#define TOK_CONTROL 266
-+#define TOK_NUM 267
-+#define TOK_PVC 268
-+
-+
-+
-+
-+/* Copy the first part of user declarations. */
- #line 1 "cfg_y.y"
-
- /* cfg.y - switch configuration language */
-@@ -29,6 +95,7 @@
- #include <string.h>
- #include <errno.h>
- #include <limits.h>
-+#include <stdlib.h>
-
- #include "atm.h"
-
-@@ -38,436 +105,743 @@
- #include "swc.h"
-
-
-+extern void yyerror(const char *s);
-+
- static int itf;
- static SIGNALING_ENTITY *sig;
-
-
--#line 27 "cfg_y.y"
--typedef union {
-+
-+/* Enabling traces. */
-+#ifndef YYDEBUG
-+# define YYDEBUG 0
-+#endif
-+
-+/* Enabling verbose error messages. */
-+#ifdef YYERROR_VERBOSE
-+# undef YYERROR_VERBOSE
-+# define YYERROR_VERBOSE 1
-+#else
-+# define YYERROR_VERBOSE 0
-+#endif
-+
-+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#line 30 "cfg_y.y"
-+typedef union YYSTYPE {
- int num;
- char *str;
- struct sockaddr_atmpvc pvc;
- } YYSTYPE;
--#include <stdio.h>
--
--#ifndef __cplusplus
--#ifndef __STDC__
--#define const
--#endif
-+/* Line 191 of yacc.c. */
-+#line 137 "y.tab.c"
-+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-+# define YYSTYPE_IS_DECLARED 1
-+# define YYSTYPE_IS_TRIVIAL 1
- #endif
-
-
-
--#define YYFINAL 31
--#define YYFLAG -32768
--#define YYNTBASE 16
--
--#define YYTRANSLATE(x) ((unsigned)(x) <= 267 ? yytranslate[x] : 27)
--
--static const char yytranslate[] = { 0,
-- 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, 14, 2, 15, 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, 2, 2, 2, 2, 1, 3, 4, 5, 6,
-- 7, 8, 9, 10, 11, 12, 13
--};
--
--#if YYDEBUG != 0
--static const short yyprhs[] = { 0,
-- 0, 1, 4, 7, 10, 13, 14, 15, 25, 26,
-- 29, 30, 33, 34, 36, 37, 40, 41, 45
--};
-+/* Copy the second part of user declarations. */
-+
-+
-+/* Line 214 of yacc.c. */
-+#line 149 "y.tab.c"
-+
-+#if ! defined (yyoverflow) || YYERROR_VERBOSE
-+
-+# ifndef YYFREE
-+# define YYFREE free
-+# endif
-+# ifndef YYMALLOC
-+# define YYMALLOC malloc
-+# endif
-+
-+/* The parser invokes alloca or malloc; define the necessary symbols. */
-+
-+# ifdef YYSTACK_USE_ALLOCA
-+# if YYSTACK_USE_ALLOCA
-+# define YYSTACK_ALLOC alloca
-+# endif
-+# else
-+# if defined (alloca) || defined (_ALLOCA_H)
-+# define YYSTACK_ALLOC alloca
-+# else
-+# ifdef __GNUC__
-+# define YYSTACK_ALLOC __builtin_alloca
-+# endif
-+# endif
-+# endif
-+
-+# ifdef YYSTACK_ALLOC
-+ /* Pacify GCC's `empty if-body' warning. */
-+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-+# else
-+# if defined (__STDC__) || defined (__cplusplus)
-+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+# define YYSIZE_T size_t
-+# endif
-+# define YYSTACK_ALLOC YYMALLOC
-+# define YYSTACK_FREE YYFREE
-+# endif
-+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-+
-+
-+#if (! defined (yyoverflow) \
-+ && (! defined (__cplusplus) \
-+ || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-
--static const short yyrhs[] = { -1,
-- 17, 16, 0, 18, 16, 0, 11, 16, 0, 10,
-- 8, 0, 0, 0, 21, 9, 14, 19, 22, 20,
-- 23, 24, 15, 0, 0, 3, 8, 0, 0, 5,
-- 12, 0, 0, 13, 0, 0, 26, 24, 0, 0,
-- 6, 25, 24, 0, 7, 0
--};
-+/* A type that is properly aligned for any stack member. */
-+union yyalloc
-+{
-+ short int yyss;
-+ YYSTYPE yyvs;
-+ };
-+
-+/* The size of the maximum gap between one aligned stack and the next. */
-+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-+
-+/* The size of an array large to enough to hold all stacks, each with
-+ N elements. */
-+# define YYSTACK_BYTES(N) \
-+ ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
-+ + YYSTACK_GAP_MAXIMUM)
-+
-+/* Copy COUNT objects from FROM to TO. The source and destination do
-+ not overlap. */
-+# ifndef YYCOPY
-+# if defined (__GNUC__) && 1 < __GNUC__
-+# define YYCOPY(To, From, Count) \
-+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-+# else
-+# define YYCOPY(To, From, Count) \
-+ do \
-+ { \
-+ register YYSIZE_T yyi; \
-+ for (yyi = 0; yyi < (Count); yyi++) \
-+ (To)[yyi] = (From)[yyi]; \
-+ } \
-+ while (0)
-+# endif
-+# endif
-+
-+/* Relocate STACK from its old location to the new one. The
-+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
-+ elements in the stack, and YYPTR gives the new location of the
-+ stack. Advance YYPTR to a properly aligned location for the next
-+ stack. */
-+# define YYSTACK_RELOCATE(Stack) \
-+ do \
-+ { \
-+ YYSIZE_T yynewbytes; \
-+ YYCOPY (&yyptr->Stack, Stack, yysize); \
-+ Stack = &yyptr->Stack; \
-+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-+ yyptr += yynewbytes / sizeof (*yyptr); \
-+ } \
-+ while (0)
-
- #endif
-
--#if YYDEBUG != 0
--static const short yyrline[] = { 0,
-- 43, 44, 45, 46, 52, 59, 65, 73, 76, 80,
-- 87, 88, 94, 95, 101, 102, 103, 108, 110
--};
-+#if defined (__STDC__) || defined (__cplusplus)
-+ typedef signed char yysigned_char;
-+#else
-+ typedef short int yysigned_char;
- #endif
-
-+/* YYFINAL -- State number of the termination state. */
-+#define YYFINAL 11
-+/* YYLAST -- Last index in YYTABLE. */
-+#define YYLAST 22
-+
-+/* YYNTOKENS -- Number of terminals. */
-+#define YYNTOKENS 16
-+/* YYNNTS -- Number of nonterminals. */
-+#define YYNNTS 12
-+/* YYNRULES -- Number of rules. */
-+#define YYNRULES 20
-+/* YYNRULES -- Number of states. */
-+#define YYNSTATES 31
-+
-+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
-+#define YYUNDEFTOK 2
-+#define YYMAXUTOK 268
-
--#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-+#define YYTRANSLATE(YYX) \
-+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
--static const char * const yytname[] = { "$","error","$undefined.","TOK_COMMAND",
--"TOK_VPCI","TOK_ITF","TOK_DEFAULT","TOK_ROUTE","TOK_STR","TOK_SOCKET","TOK_OPTION",
--"TOK_CONTROL","TOK_NUM","TOK_PVC","'{'","'}'","all","option","sig","@1","@2",
--"opt_command","opt_itf","opt_via","routes","@3","route", NULL
-+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
-+static const unsigned char yytranslate[] =
-+{
-+ 0, 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, 14, 2, 15, 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, 2, 2, 2, 2, 1, 2, 3, 4,
-+ 5, 6, 7, 8, 9, 10, 11, 12, 13
- };
--#endif
-
--static const short yyr1[] = { 0,
-- 16, 16, 16, 16, 17, 19, 20, 18, 21, 21,
-- 22, 22, 23, 23, 24, 24, 25, 24, 26
-+#if YYDEBUG
-+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-+ YYRHS. */
-+static const unsigned char yyprhs[] =
-+{
-+ 0, 0, 3, 4, 7, 10, 13, 16, 17, 18,
-+ 28, 29, 32, 33, 36, 37, 39, 40, 43, 44,
-+ 48
- };
-
--static const short yyr2[] = { 0,
-- 0, 2, 2, 2, 2, 0, 0, 9, 0, 2,
-- 0, 2, 0, 1, 0, 2, 0, 3, 1
-+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-+static const yysigned_char yyrhs[] =
-+{
-+ 17, 0, -1, -1, 18, 17, -1, 19, 17, -1,
-+ 11, 17, -1, 10, 8, -1, -1, -1, 22, 9,
-+ 14, 20, 23, 21, 24, 25, 15, -1, -1, 3,
-+ 8, -1, -1, 5, 12, -1, -1, 13, -1, -1,
-+ 27, 25, -1, -1, 6, 26, 25, -1, 7, -1
- };
-
--static const short yydefact[] = { 1,
-- 0, 0, 1, 1, 1, 0, 10, 5, 4, 2,
-- 3, 0, 6, 11, 0, 7, 12, 13, 14, 15,
-- 17, 19, 0, 15, 15, 8, 16, 18, 0, 0,
-- 0
-+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-+static const unsigned char yyrline[] =
-+{
-+ 0, 46, 46, 47, 48, 49, 56, 64, 68, 63,
-+ 80, 83, 90, 91, 97, 98, 104, 105, 107, 106,
-+ 114
- };
-+#endif
-
--static const short yydefgoto[] = { 9,
-- 4, 5, 14, 18, 6, 16, 20, 23, 25, 24
-+#if YYDEBUG || YYERROR_VERBOSE
-+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-+static const char *const yytname[] =
-+{
-+ "$end", "error", "$undefined", "TOK_COMMAND", "TOK_VPCI", "TOK_ITF",
-+ "TOK_DEFAULT", "TOK_ROUTE", "TOK_STR", "TOK_SOCKET", "TOK_OPTION",
-+ "TOK_CONTROL", "TOK_NUM", "TOK_PVC", "'{'", "'}'", "$accept", "all",
-+ "option", "sig", "@1", "@2", "opt_command", "opt_itf", "opt_via",
-+ "routes", "@3", "route", 0
- };
-+#endif
-
--static const short yypact[] = { -3,
-- 3, 4, -3, -3, -3, 6,-32768,-32768,-32768,-32768,
---32768, -1,-32768, 9, 7,-32768,-32768, 8,-32768, -5,
---32768,-32768, 1, -5, -5,-32768,-32768,-32768, 17, 18,
---32768
-+# ifdef YYPRINT
-+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-+ token YYLEX-NUM. */
-+static const unsigned short int yytoknum[] =
-+{
-+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
-+ 265, 266, 267, 268, 123, 125
- };
-+# endif
-
--static const short yypgoto[] = { 5,
---32768,-32768,-32768,-32768,-32768,-32768,-32768, -21,-32768,-32768
-+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-+static const unsigned char yyr1[] =
-+{
-+ 0, 16, 17, 17, 17, 17, 18, 20, 21, 19,
-+ 22, 22, 23, 23, 24, 24, 25, 25, 26, 25,
-+ 27
- };
-
--
--#define YYLAST 21
--
--
--static const short yytable[] = { 1,
-- 21, 22, 27, 28, 29, -9, 2, 3, 10, 11,
-- 7, 8, 13, 15, 12, 26, 30, 31, 17, 0,
-- 19
-+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-+static const unsigned char yyr2[] =
-+{
-+ 0, 2, 0, 2, 2, 2, 2, 0, 0, 9,
-+ 0, 2, 0, 2, 0, 1, 0, 2, 0, 3,
-+ 1
- };
-
--static const short yycheck[] = { 3,
-- 6, 7, 24, 25, 0, 9, 10, 11, 4, 5,
-- 8, 8, 14, 5, 9, 15, 0, 0, 12, -1,
-- 13
-+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
-+ means the default is an error. */
-+static const unsigned char yydefact[] =
-+{
-+ 2, 0, 0, 2, 0, 2, 2, 0, 11, 6,
-+ 5, 1, 3, 4, 0, 7, 12, 0, 8, 13,
-+ 14, 15, 16, 18, 20, 0, 16, 16, 9, 17,
-+ 19
- };
--/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
--#line 3 "/usr/lib/bison.simple"
--/* This file comes from bison-1.28. */
-
--/* Skeleton output parser for bison,
-- Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-+/* YYDEFGOTO[NTERM-NUM]. */
-+static const yysigned_char yydefgoto[] =
-+{
-+ -1, 4, 5, 6, 16, 20, 7, 18, 22, 25,
-+ 27, 26
-+};
-
-- 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.
-+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-+ STATE-NUM. */
-+#define YYPACT_NINF -16
-+static const yysigned_char yypact[] =
-+{
-+ -3, -6, 5, -3, 14, -3, -3, -4, -16, -16,
-+ -16, -16, -16, -16, 1, -16, 11, 6, -16, -16,
-+ 4, -16, 3, -16, -16, 7, 3, 3, -16, -16,
-+ -16
-+};
-
-- 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.
-+/* YYPGOTO[NTERM-NUM]. */
-+static const yysigned_char yypgoto[] =
-+{
-+ -16, -2, -16, -16, -16, -16, -16, -16, -16, -15,
-+ -16, -16
-+};
-
-- 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. */
-+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
-+ positive, shift that token. If negative, reduce the rule which
-+ number is the opposite. If zero, do what YYDEFACT says.
-+ If YYTABLE_NINF, syntax error. */
-+#define YYTABLE_NINF -11
-+static const yysigned_char yytable[] =
-+{
-+ 1, 10, 8, 12, 13, 14, -10, 2, 3, 23,
-+ 24, 29, 30, 9, 11, 15, 17, 21, 19, 0,
-+ 0, 0, 28
-+};
-
--/* As a special exception, when this file is copied by Bison into a
-- Bison output file, you may use that output file without restriction.
-- This special exception was added by the Free Software Foundation
-- in version 1.24 of Bison. */
-+static const yysigned_char yycheck[] =
-+{
-+ 3, 3, 8, 5, 6, 9, 9, 10, 11, 6,
-+ 7, 26, 27, 8, 0, 14, 5, 13, 12, -1,
-+ -1, -1, 15
-+};
-
--/* This is the parser code that is written into each bison parser
-- when the %semantic_parser declaration is not specified in the grammar.
-- It was written by Richard Stallman by simplifying the hairy parser
-- used when %semantic_parser is specified. */
--
--#ifndef YYSTACK_USE_ALLOCA
--#ifdef alloca
--#define YYSTACK_USE_ALLOCA
--#else /* alloca not defined */
--#ifdef __GNUC__
--#define YYSTACK_USE_ALLOCA
--#define alloca __builtin_alloca
--#else /* not GNU C. */
--#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
--#define YYSTACK_USE_ALLOCA
--#include <alloca.h>
--#else /* not sparc */
--/* We think this test detects Watcom and Microsoft C. */
--/* This used to test MSDOS, but that is a bad idea
-- since that symbol is in the user namespace. */
--#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
--#if 0 /* No need for malloc.h, which pollutes the namespace;
-- instead, just don't use alloca. */
--#include <malloc.h>
--#endif
--#else /* not MSDOS, or __TURBOC__ */
--#if defined(_AIX)
--/* I don't know what this was needed for, but it pollutes the namespace.
-- So I turned it off. rms, 2 May 1997. */
--/* #include <malloc.h> */
-- #pragma alloca
--#define YYSTACK_USE_ALLOCA
--#else /* not MSDOS, or __TURBOC__, or _AIX */
--#if 0
--#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-- and on HPUX 10. Eventually we can turn this on. */
--#define YYSTACK_USE_ALLOCA
--#define alloca __builtin_alloca
--#endif /* __hpux */
--#endif
--#endif /* not _AIX */
--#endif /* not MSDOS, or __TURBOC__ */
--#endif /* not sparc */
--#endif /* not GNU C */
--#endif /* alloca not defined */
--#endif /* YYSTACK_USE_ALLOCA not defined */
-+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-+ symbol of state STATE-NUM. */
-+static const unsigned char yystos[] =
-+{
-+ 0, 3, 10, 11, 17, 18, 19, 22, 8, 8,
-+ 17, 0, 17, 17, 9, 14, 20, 5, 23, 12,
-+ 21, 13, 24, 6, 7, 25, 27, 26, 15, 25,
-+ 25
-+};
-
--#ifdef YYSTACK_USE_ALLOCA
--#define YYSTACK_ALLOC alloca
--#else
--#define YYSTACK_ALLOC malloc
-+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-+# define YYSIZE_T __SIZE_TYPE__
-+#endif
-+#if ! defined (YYSIZE_T) && defined (size_t)
-+# define YYSIZE_T size_t
-+#endif
-+#if ! defined (YYSIZE_T)
-+# if defined (__STDC__) || defined (__cplusplus)
-+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-+# define YYSIZE_T size_t
-+# endif
-+#endif
-+#if ! defined (YYSIZE_T)
-+# define YYSIZE_T unsigned int
- #endif
--
--/* Note: there must be only one dollar sign in this file.
-- It is replaced by the list of actions, each action
-- as one case of the switch. */
-
- #define yyerrok (yyerrstatus = 0)
- #define yyclearin (yychar = YYEMPTY)
--#define YYEMPTY -2
-+#define YYEMPTY (-2)
- #define YYEOF 0
-+
- #define YYACCEPT goto yyacceptlab
--#define YYABORT goto yyabortlab
--#define YYERROR goto yyerrlab1
--/* Like YYERROR except do call yyerror.
-- This remains here temporarily to ease the
-- transition to the new meaning of YYERROR, for GCC.
-+#define YYABORT goto yyabortlab
-+#define YYERROR goto yyerrorlab
-+
-+
-+/* Like YYERROR except do call yyerror. This remains here temporarily
-+ to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
-+
- #define YYFAIL goto yyerrlab
-+
- #define YYRECOVERING() (!!yyerrstatus)
--#define YYBACKUP(token, value) \
-+
-+#define YYBACKUP(Token, Value) \
- do \
- if (yychar == YYEMPTY && yylen == 1) \
-- { yychar = (token), yylval = (value); \
-- yychar1 = YYTRANSLATE (yychar); \
-+ { \
-+ yychar = (Token); \
-+ yylval = (Value); \
-+ yytoken = YYTRANSLATE (yychar); \
- YYPOPSTACK; \
- goto yybackup; \
- } \
- else \
-- { yyerror ("syntax error: cannot back up"); YYERROR; } \
-+ { \
-+ yyerror ("syntax error: cannot back up");\
-+ YYERROR; \
-+ } \
- while (0)
-
- #define YYTERROR 1
- #define YYERRCODE 256
-
--#ifndef YYPURE
--#define YYLEX yylex()
--#endif
-+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
-+ are run). */
-
--#ifdef YYPURE
--#ifdef YYLSP_NEEDED
--#ifdef YYLEX_PARAM
--#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
--#else
--#define YYLEX yylex(&yylval, &yylloc)
-+#ifndef YYLLOC_DEFAULT
-+# define YYLLOC_DEFAULT(Current, Rhs, N) \
-+ ((Current).first_line = (Rhs)[1].first_line, \
-+ (Current).first_column = (Rhs)[1].first_column, \
-+ (Current).last_line = (Rhs)[N].last_line, \
-+ (Current).last_column = (Rhs)[N].last_column)
- #endif
--#else /* not YYLSP_NEEDED */
-+
-+/* YYLEX -- calling `yylex' with the right arguments. */
-+
- #ifdef YYLEX_PARAM
--#define YYLEX yylex(&yylval, YYLEX_PARAM)
-+# define YYLEX yylex (YYLEX_PARAM)
- #else
--#define YYLEX yylex(&yylval)
--#endif
--#endif /* not YYLSP_NEEDED */
-+# define YYLEX yylex ()
- #endif
-
--/* If nonreentrant, generate the variables here */
-+/* Enable debugging if requested. */
-+#if YYDEBUG
-
--#ifndef YYPURE
-+# ifndef YYFPRINTF
-+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-+# define YYFPRINTF fprintf
-+# endif
-+
-+# define YYDPRINTF(Args) \
-+do { \
-+ if (yydebug) \
-+ YYFPRINTF Args; \
-+} while (0)
-+
-+# define YYDSYMPRINT(Args) \
-+do { \
-+ if (yydebug) \
-+ yysymprint Args; \
-+} while (0)
-+
-+# define YYDSYMPRINTF(Title, Token, Value, Location) \
-+do { \
-+ if (yydebug) \
-+ { \
-+ YYFPRINTF (stderr, "%s ", Title); \
-+ yysymprint (stderr, \
-+ Token, Value); \
-+ YYFPRINTF (stderr, "\n"); \
-+ } \
-+} while (0)
-
--int yychar; /* the lookahead symbol */
--YYSTYPE yylval; /* the semantic value of the */
-- /* lookahead symbol */
-+/*------------------------------------------------------------------.
-+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-+| TOP (included). |
-+`------------------------------------------------------------------*/
-
--#ifdef YYLSP_NEEDED
--YYLTYPE yylloc; /* location data for the lookahead */
-- /* symbol */
-+#if defined (__STDC__) || defined (__cplusplus)
-+static void
-+yy_stack_print (short int *bottom, short int *top)
-+#else
-+static void
-+yy_stack_print (bottom, top)
-+ short int *bottom;
-+ short int *top;
- #endif
-+{
-+ YYFPRINTF (stderr, "Stack now");
-+ for (/* Nothing. */; bottom <= top; ++bottom)
-+ YYFPRINTF (stderr, " %d", *bottom);
-+ YYFPRINTF (stderr, "\n");
-+}
-
--int yynerrs; /* number of parse errors so far */
--#endif /* not YYPURE */
-+# define YY_STACK_PRINT(Bottom, Top) \
-+do { \
-+ if (yydebug) \
-+ yy_stack_print ((Bottom), (Top)); \
-+} while (0)
-
--#if YYDEBUG != 0
--int yydebug; /* nonzero means print parse trace */
--/* Since this is uninitialized, it does not stop multiple parsers
-- from coexisting. */
-+
-+/*------------------------------------------------.
-+| Report that the YYRULE is going to be reduced. |
-+`------------------------------------------------*/
-+
-+#if defined (__STDC__) || defined (__cplusplus)
-+static void
-+yy_reduce_print (int yyrule)
-+#else
-+static void
-+yy_reduce_print (yyrule)
-+ int yyrule;
- #endif
-+{
-+ int yyi;
-+ unsigned int yylno = yyrline[yyrule];
-+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
-+ yyrule - 1, yylno);
-+ /* Print the symbols being reduced, and their result. */
-+ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
-+ YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
-+ YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
-+}
-+
-+# define YY_REDUCE_PRINT(Rule) \
-+do { \
-+ if (yydebug) \
-+ yy_reduce_print (Rule); \
-+} while (0)
-+
-+/* Nonzero means print parse trace. It is left uninitialized so that
-+ multiple parsers can coexist. */
-+int yydebug;
-+#else /* !YYDEBUG */
-+# define YYDPRINTF(Args)
-+# define YYDSYMPRINT(Args)
-+# define YYDSYMPRINTF(Title, Token, Value, Location)
-+# define YY_STACK_PRINT(Bottom, Top)
-+# define YY_REDUCE_PRINT(Rule)
-+#endif /* !YYDEBUG */
-
--/* YYINITDEPTH indicates the initial size of the parser's stacks */
-
-+/* YYINITDEPTH -- initial size of the parser's stacks. */
- #ifndef YYINITDEPTH
--#define YYINITDEPTH 200
-+# define YYINITDEPTH 200
- #endif
-
--/* YYMAXDEPTH is the maximum size the stacks can grow to
-- (effective only if the built-in stack extension method is used). */
-+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
-+ if the built-in stack extension method is used).
-
--#if YYMAXDEPTH == 0
--#undef YYMAXDEPTH
-+ Do not make this value too large; the results are undefined if
-+ SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
-+ evaluated with infinite-precision integer arithmetic. */
-+
-+#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
-+# undef YYMAXDEPTH
- #endif
-
- #ifndef YYMAXDEPTH
--#define YYMAXDEPTH 10000
-+# define YYMAXDEPTH 10000
- #endif
-+
-
--/* Define __yy_memcpy. Note that the size argument
-- should be passed with type unsigned int, because that is what the non-GCC
-- definitions require. With GCC, __builtin_memcpy takes an arg
-- of type size_t, but it can handle unsigned int. */
--
--#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
--#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
--#else /* not GNU C or C++ */
--#ifndef __cplusplus
-
--/* This is the most reliable way to avoid incompatibilities
-- in available built-in functions on various systems. */
--static void
--__yy_memcpy (to, from, count)
-- char *to;
-- char *from;
-- unsigned int count;
--{
-- register char *f = from;
-- register char *t = to;
-- register int i = count;
-+#if YYERROR_VERBOSE
-+
-+# ifndef yystrlen
-+# if defined (__GLIBC__) && defined (_STRING_H)
-+# define yystrlen strlen
-+# else
-+/* Return the length of YYSTR. */
-+static YYSIZE_T
-+# if defined (__STDC__) || defined (__cplusplus)
-+yystrlen (const char *yystr)
-+# else
-+yystrlen (yystr)
-+ const char *yystr;
-+# endif
-+{
-+ register const char *yys = yystr;
-+
-+ while (*yys++ != '\0')
-+ continue;
-+
-+ return yys - yystr - 1;
-+}
-+# endif
-+# endif
-+
-+# ifndef yystpcpy
-+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-+# define yystpcpy stpcpy
-+# else
-+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-+ YYDEST. */
-+static char *
-+# if defined (__STDC__) || defined (__cplusplus)
-+yystpcpy (char *yydest, const char *yysrc)
-+# else
-+yystpcpy (yydest, yysrc)
-+ char *yydest;
-+ const char *yysrc;
-+# endif
-+{
-+ register char *yyd = yydest;
-+ register const char *yys = yysrc;
-
-- while (i-- > 0)
-- *t++ = *f++;
-+ while ((*yyd++ = *yys++) != '\0')
-+ continue;
-+
-+ return yyd - 1;
- }
-+# endif
-+# endif
-+
-+#endif /* !YYERROR_VERBOSE */
-
--#else /* __cplusplus */
-+
-+
-+#if YYDEBUG
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT. |
-+`--------------------------------*/
-
--/* This is the most reliable way to avoid incompatibilities
-- in available built-in functions on various systems. */
-+#if defined (__STDC__) || defined (__cplusplus)
- static void
--__yy_memcpy (char *to, char *from, unsigned int count)
-+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
-+#else
-+static void
-+yysymprint (yyoutput, yytype, yyvaluep)
-+ FILE *yyoutput;
-+ int yytype;
-+ YYSTYPE *yyvaluep;
-+#endif
- {
-- register char *t = to;
-- register char *f = from;
-- register int i = count;
-+ /* Pacify ``unused variable'' warnings. */
-+ (void) yyvaluep;
-
-- while (i-- > 0)
-- *t++ = *f++;
-+ if (yytype < YYNTOKENS)
-+ {
-+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-+# ifdef YYPRINT
-+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+# endif
-+ }
-+ else
-+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+
-+ switch (yytype)
-+ {
-+ default:
-+ break;
-+ }
-+ YYFPRINTF (yyoutput, ")");
- }
-
-+#endif /* ! YYDEBUG */
-+/*-----------------------------------------------.
-+| Release the memory associated to this symbol. |
-+`-----------------------------------------------*/
-+
-+#if defined (__STDC__) || defined (__cplusplus)
-+static void
-+yydestruct (int yytype, YYSTYPE *yyvaluep)
-+#else
-+static void
-+yydestruct (yytype, yyvaluep)
-+ int yytype;
-+ YYSTYPE *yyvaluep;
- #endif
--#endif
-+{
-+ /* Pacify ``unused variable'' warnings. */
-+ (void) yyvaluep;
-+
-+ switch (yytype)
-+ {
-+
-+ default:
-+ break;
-+ }
-+}
-
--#line 217 "/usr/lib/bison.simple"
-
--/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-- into yyparse. The argument should have type void *.
-- It should actually point to an object.
-- Grammar actions can access the variable by casting it
-- to the proper pointer type. */
-+/* Prevent warnings from -Wmissing-prototypes. */
-
- #ifdef YYPARSE_PARAM
--#ifdef __cplusplus
--#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
--#define YYPARSE_PARAM_DECL
--#else /* not __cplusplus */
--#define YYPARSE_PARAM_ARG YYPARSE_PARAM
--#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
--#endif /* not __cplusplus */
--#else /* not YYPARSE_PARAM */
--#define YYPARSE_PARAM_ARG
--#define YYPARSE_PARAM_DECL
--#endif /* not YYPARSE_PARAM */
-+# if defined (__STDC__) || defined (__cplusplus)
-+int yyparse (void *YYPARSE_PARAM);
-+# else
-+int yyparse ();
-+# endif
-+#else /* ! YYPARSE_PARAM */
-+#if defined (__STDC__) || defined (__cplusplus)
-+int yyparse (void);
-+#else
-+int yyparse ();
-+#endif
-+#endif /* ! YYPARSE_PARAM */
-+
-+
-+
-+/* The lookahead symbol. */
-+int yychar;
-+
-+/* The semantic value of the lookahead symbol. */
-+YYSTYPE yylval;
-+
-+/* Number of syntax errors so far. */
-+int yynerrs;
-+
-+
-+
-+/*----------.
-+| yyparse. |
-+`----------*/
-
--/* Prevent warning if -Wstrict-prototypes. */
--#ifdef __GNUC__
- #ifdef YYPARSE_PARAM
--int yyparse (void *);
-+# if defined (__STDC__) || defined (__cplusplus)
-+int yyparse (void *YYPARSE_PARAM)
-+# else
-+int yyparse (YYPARSE_PARAM)
-+ void *YYPARSE_PARAM;
-+# endif
-+#else /* ! YYPARSE_PARAM */
-+#if defined (__STDC__) || defined (__cplusplus)
-+int
-+yyparse (void)
- #else
--int yyparse (void);
-+int
-+yyparse ()
-+
- #endif
- #endif
--
--int
--yyparse(YYPARSE_PARAM_ARG)
-- YYPARSE_PARAM_DECL
- {
-+
- register int yystate;
- register int yyn;
-- register short *yyssp;
-+ int yyresult;
-+ /* Number of tokens to shift before error messages enabled. */
-+ int yyerrstatus;
-+ /* Lookahead token as an internal (translated) token number. */
-+ int yytoken = 0;
-+
-+ /* Three stacks and their tools:
-+ `yyss': related to states,
-+ `yyvs': related to semantic values,
-+ `yyls': related to locations.
-+
-+ Refer to the stacks thru separate pointers, to allow yyoverflow
-+ to reallocate them elsewhere. */
-+
-+ /* The state stack. */
-+ short int yyssa[YYINITDEPTH];
-+ short int *yyss = yyssa;
-+ register short int *yyssp;
-+
-+ /* The semantic value stack. */
-+ YYSTYPE yyvsa[YYINITDEPTH];
-+ YYSTYPE *yyvs = yyvsa;
- register YYSTYPE *yyvsp;
-- int yyerrstatus; /* number of tokens to shift before error messages enabled */
-- int yychar1 = 0; /* lookahead token as an internal (translated) token number */
--
-- short yyssa[YYINITDEPTH]; /* the state stack */
-- YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
-
-- short *yyss = yyssa; /* refer to the stacks thru separate pointers */
-- YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
-
--#ifdef YYLSP_NEEDED
-- YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
-- YYLTYPE *yyls = yylsa;
-- YYLTYPE *yylsp;
-
--#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
--#else
- #define YYPOPSTACK (yyvsp--, yyssp--)
--#endif
-
-- int yystacksize = YYINITDEPTH;
-- int yyfree_stacks = 0;
-+ YYSIZE_T yystacksize = YYINITDEPTH;
-
--#ifdef YYPURE
-- int yychar;
-- YYSTYPE yylval;
-- int yynerrs;
--#ifdef YYLSP_NEEDED
-- YYLTYPE yylloc;
--#endif
--#endif
-+ /* The variables used to return semantic value and location from the
-+ action routines. */
-+ YYSTYPE yyval;
-
-- YYSTYPE yyval; /* the variable used to return */
-- /* semantic values from the action */
-- /* routines */
-
-+ /* When reducing, the number of symbols on the RHS of the reduced
-+ rule. */
- int yylen;
-
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Starting parse\n");
--#endif
-+ YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
-@@ -479,110 +853,97 @@
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
-- yyssp = yyss - 1;
-+ yyssp = yyss;
- yyvsp = yyvs;
--#ifdef YYLSP_NEEDED
-- yylsp = yyls;
--#endif
-
--/* Push a new state, which is found in yystate . */
--/* In all cases, when you get here, the value and location stacks
-- have just been pushed. so pushing a state here evens the stacks. */
--yynewstate:
-
-- *++yyssp = yystate;
-+ goto yysetstate;
-
-- if (yyssp >= yyss + yystacksize - 1)
-- {
-- /* Give user a chance to reallocate the stack */
-- /* Use copies of these so that the &'s don't force the real ones into memory. */
-- YYSTYPE *yyvs1 = yyvs;
-- short *yyss1 = yyss;
--#ifdef YYLSP_NEEDED
-- YYLTYPE *yyls1 = yyls;
--#endif
-+/*------------------------------------------------------------.
-+| yynewstate -- Push a new state, which is found in yystate. |
-+`------------------------------------------------------------*/
-+ yynewstate:
-+ /* In all cases, when you get here, the value and location stacks
-+ have just been pushed. so pushing a state here evens the stacks.
-+ */
-+ yyssp++;
-
-+ yysetstate:
-+ *yyssp = yystate;
-+
-+ if (yyss + yystacksize - 1 <= yyssp)
-+ {
- /* Get the current used size of the three stacks, in elements. */
-- int size = yyssp - yyss + 1;
-+ YYSIZE_T yysize = yyssp - yyss + 1;
-
- #ifdef yyoverflow
-- /* Each stack pointer address is followed by the size of
-- the data in use in that stack, in bytes. */
--#ifdef YYLSP_NEEDED
-- /* This used to be a conditional around just the two extra args,
-- but that might be undefined if yyoverflow is a macro. */
-- yyoverflow("parser stack overflow",
-- &yyss1, size * sizeof (*yyssp),
-- &yyvs1, size * sizeof (*yyvsp),
-- &yyls1, size * sizeof (*yylsp),
-- &yystacksize);
--#else
-- yyoverflow("parser stack overflow",
-- &yyss1, size * sizeof (*yyssp),
-- &yyvs1, size * sizeof (*yyvsp),
-- &yystacksize);
--#endif
--
-- yyss = yyss1; yyvs = yyvs1;
--#ifdef YYLSP_NEEDED
-- yyls = yyls1;
--#endif
-+ {
-+ /* Give user a chance to reallocate the stack. Use copies of
-+ these so that the &'s don't force the real ones into
-+ memory. */
-+ YYSTYPE *yyvs1 = yyvs;
-+ short int *yyss1 = yyss;
-+
-+
-+ /* Each stack pointer address is followed by the size of the
-+ data in use in that stack, in bytes. This used to be a
-+ conditional around just the two extra args, but that might
-+ be undefined if yyoverflow is a macro. */
-+ yyoverflow ("parser stack overflow",
-+ &yyss1, yysize * sizeof (*yyssp),
-+ &yyvs1, yysize * sizeof (*yyvsp),
-+
-+ &yystacksize);
-+
-+ yyss = yyss1;
-+ yyvs = yyvs1;
-+ }
- #else /* no yyoverflow */
-+# ifndef YYSTACK_RELOCATE
-+ goto yyoverflowlab;
-+# else
- /* Extend the stack our own way. */
-- if (yystacksize >= YYMAXDEPTH)
-- {
-- yyerror("parser stack overflow");
-- if (yyfree_stacks)
-- {
-- free (yyss);
-- free (yyvs);
--#ifdef YYLSP_NEEDED
-- free (yyls);
--#endif
-- }
-- return 2;
-- }
-+ if (YYMAXDEPTH <= yystacksize)
-+ goto yyoverflowlab;
- yystacksize *= 2;
-- if (yystacksize > YYMAXDEPTH)
-+ if (YYMAXDEPTH < yystacksize)
- yystacksize = YYMAXDEPTH;
--#ifndef YYSTACK_USE_ALLOCA
-- yyfree_stacks = 1;
--#endif
-- yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-- __yy_memcpy ((char *)yyss, (char *)yyss1,
-- size * (unsigned int) sizeof (*yyssp));
-- yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-- __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-- size * (unsigned int) sizeof (*yyvsp));
--#ifdef YYLSP_NEEDED
-- yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-- __yy_memcpy ((char *)yyls, (char *)yyls1,
-- size * (unsigned int) sizeof (*yylsp));
--#endif
-+
-+ {
-+ short int *yyss1 = yyss;
-+ union yyalloc *yyptr =
-+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-+ if (! yyptr)
-+ goto yyoverflowlab;
-+ YYSTACK_RELOCATE (yyss);
-+ YYSTACK_RELOCATE (yyvs);
-+
-+# undef YYSTACK_RELOCATE
-+ if (yyss1 != yyssa)
-+ YYSTACK_FREE (yyss1);
-+ }
-+# endif
- #endif /* no yyoverflow */
-
-- yyssp = yyss + size - 1;
-- yyvsp = yyvs + size - 1;
--#ifdef YYLSP_NEEDED
-- yylsp = yyls + size - 1;
--#endif
-+ yyssp = yyss + yysize - 1;
-+ yyvsp = yyvs + yysize - 1;
-
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Stack size increased to %d\n", yystacksize);
--#endif
-
-- if (yyssp >= yyss + yystacksize - 1)
-+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-+ (unsigned long int) yystacksize));
-+
-+ if (yyss + yystacksize - 1 <= yyssp)
- YYABORT;
- }
-
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Entering state %d\n", yystate);
--#endif
-+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
- goto yybackup;
-- yybackup:
-+
-+/*-----------.
-+| yybackup. |
-+`-----------*/
-+yybackup:
-
- /* Do appropriate processing given the current state. */
- /* Read a lookahead token if we need one and don't already have one. */
-@@ -591,194 +952,167 @@
- /* First try to decide what to do without reference to lookahead token. */
-
- yyn = yypact[yystate];
-- if (yyn == YYFLAG)
-+ if (yyn == YYPACT_NINF)
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
-- /* yychar is either YYEMPTY or YYEOF
-- or a valid token in external form. */
--
-+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
- if (yychar == YYEMPTY)
- {
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Reading a token: ");
--#endif
-+ YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
- }
-
-- /* Convert token to internal form (in yychar1) for indexing tables with */
--
-- if (yychar <= 0) /* This means end of input. */
-+ if (yychar <= YYEOF)
- {
-- yychar1 = 0;
-- yychar = YYEOF; /* Don't call YYLEX any more */
--
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Now at end of input.\n");
--#endif
-+ yychar = yytoken = YYEOF;
-+ YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
-- yychar1 = YYTRANSLATE(yychar);
--
--#if YYDEBUG != 0
-- if (yydebug)
-- {
-- fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-- /* Give the individual parser a way to print the precise meaning
-- of a token, for further debugging info. */
--#ifdef YYPRINT
-- YYPRINT (stderr, yychar, yylval);
--#endif
-- fprintf (stderr, ")\n");
-- }
--#endif
-+ yytoken = YYTRANSLATE (yychar);
-+ YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
- }
-
-- yyn += yychar1;
-- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
-+ /* If the proper action on seeing token YYTOKEN is to reduce or to
-+ detect an error, take that action. */
-+ yyn += yytoken;
-+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
- goto yydefault;
--
- yyn = yytable[yyn];
--
-- /* yyn is what to do for this token type in this state.
-- Negative => reduce, -yyn is rule number.
-- Positive => shift, yyn is new state.
-- New state is final state => don't bother to shift,
-- just return success.
-- 0, or most negative number => error. */
--
-- if (yyn < 0)
-+ if (yyn <= 0)
- {
-- if (yyn == YYFLAG)
-+ if (yyn == 0 || yyn == YYTABLE_NINF)
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
-- else if (yyn == 0)
-- goto yyerrlab;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- /* Shift the lookahead token. */
--
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
--#endif
-+ YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
-
- /* Discard the token being shifted unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
-
- *++yyvsp = yylval;
--#ifdef YYLSP_NEEDED
-- *++yylsp = yylloc;
--#endif
-
-- /* count tokens shifted since error; after three, turn off error status. */
-- if (yyerrstatus) yyerrstatus--;
-+
-+ /* Count tokens shifted since error; after three, turn off error
-+ status. */
-+ if (yyerrstatus)
-+ yyerrstatus--;
-
- yystate = yyn;
- goto yynewstate;
-
--/* Do the default action for the current state. */
--yydefault:
-
-+/*-----------------------------------------------------------.
-+| yydefault -- do the default action for the current state. |
-+`-----------------------------------------------------------*/
-+yydefault:
- yyn = yydefact[yystate];
- if (yyn == 0)
- goto yyerrlab;
-+ goto yyreduce;
-+
-
--/* Do a reduction. yyn is the number of a rule to reduce with. */
-+/*-----------------------------.
-+| yyreduce -- Do a reduction. |
-+`-----------------------------*/
- yyreduce:
-+ /* yyn is the number of a rule to reduce with. */
- yylen = yyr2[yyn];
-- if (yylen > 0)
-- yyval = yyvsp[1-yylen]; /* implement default value of the action */
-
--#if YYDEBUG != 0
-- if (yydebug)
-- {
-- int i;
-+ /* If YYLEN is nonzero, implement the default value of the action:
-+ `$$ = $1'.
-
-- fprintf (stderr, "Reducing via rule %d (line %d), ",
-- yyn, yyrline[yyn]);
-+ Otherwise, the following line sets YYVAL to garbage.
-+ This behavior is undocumented and Bison
-+ users should not rely upon it. Assigning to YYVAL
-+ unconditionally makes the parser a bit smaller, and it avoids a
-+ GCC warning that YYVAL may be used uninitialized. */
-+ yyval = yyvsp[1-yylen];
-
-- /* Print the symbols being reduced, and their result. */
-- for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-- fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-- fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-- }
--#endif
-
--
-- switch (yyn) {
--
--case 4:
--#line 47 "cfg_y.y"
--{
-+ YY_REDUCE_PRINT (yyn);
-+ switch (yyn)
-+ {
-+ case 5:
-+#line 50 "cfg_y.y"
-+ {
- control_init(yyvsp[-1].str);
-- ;
-- break;}
--case 5:
--#line 54 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 6:
-+#line 57 "cfg_y.y"
-+ {
- fab_option(yyvsp[-1].str,yyvsp[0].str);
-- ;
-- break;}
--case 6:
--#line 61 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 7:
-+#line 64 "cfg_y.y"
-+ {
- itf = 0;
-- ;
-- break;}
--case 7:
--#line 65 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 8:
-+#line 68 "cfg_y.y"
-+ {
- char *tmp;
-
- tmp = strdup(yyvsp[-3].str);
- if (!tmp) yyerror(strerror(errno));
- sig = sig_vc(yyvsp[-4].str,tmp,itf);
-- ;
-- break;}
--case 9:
--#line 77 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 10:
-+#line 80 "cfg_y.y"
-+ {
- yyval.str = NULL;
-- ;
-- break;}
--case 10:
--#line 81 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 11:
-+#line 84 "cfg_y.y"
-+ {
- yyval.str = strdup(yyvsp[0].str);
- if (!yyval.str) yyerror(strerror(errno));
-- ;
-- break;}
--case 12:
--#line 89 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 13:
-+#line 92 "cfg_y.y"
-+ {
- itf = yyvsp[0].num;
-- ;
-- break;}
--case 14:
--#line 96 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 15:
-+#line 99 "cfg_y.y"
-+ {
- sig->pvc = yyvsp[0].pvc;
-- ;
-- break;}
--case 17:
--#line 104 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 18:
-+#line 107 "cfg_y.y"
-+ {
- put_route(NULL,0,sig);
-- ;
-- break;}
--case 19:
--#line 112 "cfg_y.y"
--{
-+ }
-+ break;
-+
-+ case 20:
-+#line 115 "cfg_y.y"
-+ {
- struct sockaddr_atmsvc addr;
- char *mask;
-
-@@ -790,228 +1124,236 @@
- return;
- }
- put_route(&addr,mask ? strtol(mask,NULL,10) : INT_MAX,sig);
-- ;
-- break;}
--}
-- /* the action file gets copied in in place of this dollarsign */
--#line 543 "/usr/lib/bison.simple"
-+ }
-+ break;
-+
-+
-+ }
-+
-+/* Line 1010 of yacc.c. */
-+#line 1135 "y.tab.c"
-
- yyvsp -= yylen;
- yyssp -= yylen;
--#ifdef YYLSP_NEEDED
-- yylsp -= yylen;
--#endif
-
--#if YYDEBUG != 0
-- if (yydebug)
-- {
-- short *ssp1 = yyss - 1;
-- fprintf (stderr, "state stack now");
-- while (ssp1 != yyssp)
-- fprintf (stderr, " %d", *++ssp1);
-- fprintf (stderr, "\n");
-- }
--#endif
-+
-+ YY_STACK_PRINT (yyss, yyssp);
-
- *++yyvsp = yyval;
-
--#ifdef YYLSP_NEEDED
-- yylsp++;
-- if (yylen == 0)
-- {
-- yylsp->first_line = yylloc.first_line;
-- yylsp->first_column = yylloc.first_column;
-- yylsp->last_line = (yylsp-1)->last_line;
-- yylsp->last_column = (yylsp-1)->last_column;
-- yylsp->text = 0;
-- }
-- else
-- {
-- yylsp->last_line = (yylsp+yylen-1)->last_line;
-- yylsp->last_column = (yylsp+yylen-1)->last_column;
-- }
--#endif
-
-- /* Now "shift" the result of the reduction.
-- Determine what state that goes to,
-- based on the state we popped back to
-- and the rule number reduced by. */
-+ /* Now `shift' the result of the reduction. Determine what state
-+ that goes to, based on the state we popped back to and the rule
-+ number reduced by. */
-
- yyn = yyr1[yyn];
-
-- yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-- if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
-- yystate = yydefgoto[yyn - YYNTBASE];
-+ yystate = yydefgoto[yyn - YYNTOKENS];
-
- goto yynewstate;
-
--yyerrlab: /* here on detecting error */
-
-- if (! yyerrstatus)
-- /* If not already recovering from an error, report this error. */
-+/*------------------------------------.
-+| yyerrlab -- here on detecting error |
-+`------------------------------------*/
-+yyerrlab:
-+ /* If not already recovering from an error, report this error. */
-+ if (!yyerrstatus)
- {
- ++yynerrs;
--
--#ifdef YYERROR_VERBOSE
-+#if YYERROR_VERBOSE
- yyn = yypact[yystate];
-
-- if (yyn > YYFLAG && yyn < YYLAST)
-+ if (YYPACT_NINF < yyn && yyn < YYLAST)
- {
-- int size = 0;
-- char *msg;
-- int x, count;
--
-- count = 0;
-- /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
-- for (x = (yyn < 0 ? -yyn : 0);
-- x < (sizeof(yytname) / sizeof(char *)); x++)
-- if (yycheck[x + yyn] == x)
-- size += strlen(yytname[x]) + 15, count++;
-- msg = (char *) malloc(size + 15);
-- if (msg != 0)
-+ YYSIZE_T yysize = 0;
-+ int yytype = YYTRANSLATE (yychar);
-+ const char* yyprefix;
-+ char *yymsg;
-+ int yyx;
-+
-+ /* Start YYX at -YYN if negative to avoid negative indexes in
-+ YYCHECK. */
-+ int yyxbegin = yyn < 0 ? -yyn : 0;
-+
-+ /* Stay within bounds of both yycheck and yytname. */
-+ int yychecklim = YYLAST - yyn;
-+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-+ int yycount = 0;
-+
-+ yyprefix = ", expecting ";
-+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+ {
-+ yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
-+ yycount += 1;
-+ if (yycount == 5)
-+ {
-+ yysize = 0;
-+ break;
-+ }
-+ }
-+ yysize += (sizeof ("syntax error, unexpected ")
-+ + yystrlen (yytname[yytype]));
-+ yymsg = (char *) YYSTACK_ALLOC (yysize);
-+ if (yymsg != 0)
- {
-- strcpy(msg, "parse error");
-+ char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
-+ yyp = yystpcpy (yyp, yytname[yytype]);
-
-- if (count < 5)
-+ if (yycount < 5)
- {
-- count = 0;
-- for (x = (yyn < 0 ? -yyn : 0);
-- x < (sizeof(yytname) / sizeof(char *)); x++)
-- if (yycheck[x + yyn] == x)
-+ yyprefix = ", expecting ";
-+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
-- strcat(msg, count == 0 ? ", expecting `" : " or `");
-- strcat(msg, yytname[x]);
-- strcat(msg, "'");
-- count++;
-+ yyp = yystpcpy (yyp, yyprefix);
-+ yyp = yystpcpy (yyp, yytname[yyx]);
-+ yyprefix = " or ";
- }
- }
-- yyerror(msg);
-- free(msg);
-+ yyerror (yymsg);
-+ YYSTACK_FREE (yymsg);
- }
- else
-- yyerror ("parse error; also virtual memory exceeded");
-+ yyerror ("syntax error; also virtual memory exhausted");
- }
- else
- #endif /* YYERROR_VERBOSE */
-- yyerror("parse error");
-+ yyerror ("syntax error");
- }
-
-- goto yyerrlab1;
--yyerrlab1: /* here on error raised explicitly by an action */
-+
-
- if (yyerrstatus == 3)
- {
-- /* if just tried and failed to reuse lookahead token after an error, discard it. */
-+ /* If just tried and failed to reuse lookahead token after an
-+ error, discard it. */
-
-- /* return failure if at end of input */
-- if (yychar == YYEOF)
-- YYABORT;
--
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
--#endif
-+ if (yychar <= YYEOF)
-+ {
-+ /* If at end of input, pop the error token,
-+ then the rest of the stack, then return failure. */
-+ if (yychar == YYEOF)
-+ for (;;)
-+ {
-+ YYPOPSTACK;
-+ if (yyssp == yyss)
-+ YYABORT;
-+ YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
-+ yydestruct (yystos[*yyssp], yyvsp);
-+ }
-+ }
-+ else
-+ {
-+ YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
-+ yydestruct (yytoken, &yylval);
-+ yychar = YYEMPTY;
-
-- yychar = YYEMPTY;
-+ }
- }
-
-- /* Else will try to reuse lookahead token
-- after shifting the error token. */
--
-- yyerrstatus = 3; /* Each real token shifted decrements this */
-+ /* Else will try to reuse lookahead token after shifting the error
-+ token. */
-+ goto yyerrlab1;
-
-- goto yyerrhandle;
-
--yyerrdefault: /* current state does not do anything special for the error token. */
-+/*---------------------------------------------------.
-+| yyerrorlab -- error raised explicitly by YYERROR. |
-+`---------------------------------------------------*/
-+yyerrorlab:
-
--#if 0
-- /* This is wrong; only states that explicitly want error tokens
-- should shift them. */
-- yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
-- if (yyn) goto yydefault;
-+#ifdef __GNUC__
-+ /* Pacify GCC when the user code never invokes YYERROR and the label
-+ yyerrorlab therefore never appears in user code. */
-+ if (0)
-+ goto yyerrorlab;
- #endif
-
--yyerrpop: /* pop the current state because it cannot handle the error token */
--
-- if (yyssp == yyss) YYABORT;
-- yyvsp--;
-- yystate = *--yyssp;
--#ifdef YYLSP_NEEDED
-- yylsp--;
--#endif
-+ yyvsp -= yylen;
-+ yyssp -= yylen;
-+ yystate = *yyssp;
-+ goto yyerrlab1;
-
--#if YYDEBUG != 0
-- if (yydebug)
-- {
-- short *ssp1 = yyss - 1;
-- fprintf (stderr, "Error: state stack now");
-- while (ssp1 != yyssp)
-- fprintf (stderr, " %d", *++ssp1);
-- fprintf (stderr, "\n");
-- }
--#endif
-
--yyerrhandle:
-+/*-------------------------------------------------------------.
-+| yyerrlab1 -- common code for both syntax error and YYERROR. |
-+`-------------------------------------------------------------*/
-+yyerrlab1:
-+ yyerrstatus = 3; /* Each real token shifted decrements this. */
-
-- yyn = yypact[yystate];
-- if (yyn == YYFLAG)
-- goto yyerrdefault;
-+ for (;;)
-+ {
-+ yyn = yypact[yystate];
-+ if (yyn != YYPACT_NINF)
-+ {
-+ yyn += YYTERROR;
-+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-+ {
-+ yyn = yytable[yyn];
-+ if (0 < yyn)
-+ break;
-+ }
-+ }
-
-- yyn += YYTERROR;
-- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-- goto yyerrdefault;
-+ /* Pop the current state because it cannot handle the error token. */
-+ if (yyssp == yyss)
-+ YYABORT;
-
-- yyn = yytable[yyn];
-- if (yyn < 0)
-- {
-- if (yyn == YYFLAG)
-- goto yyerrpop;
-- yyn = -yyn;
-- goto yyreduce;
-+ YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
-+ yydestruct (yystos[yystate], yyvsp);
-+ YYPOPSTACK;
-+ yystate = *yyssp;
-+ YY_STACK_PRINT (yyss, yyssp);
- }
-- else if (yyn == 0)
-- goto yyerrpop;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
--#if YYDEBUG != 0
-- if (yydebug)
-- fprintf(stderr, "Shifting error token, ");
--#endif
-+ YYDPRINTF ((stderr, "Shifting error token, "));
-
- *++yyvsp = yylval;
--#ifdef YYLSP_NEEDED
-- *++yylsp = yylloc;
--#endif
-+
-
- yystate = yyn;
- goto yynewstate;
-
-- yyacceptlab:
-- /* YYACCEPT comes here. */
-- if (yyfree_stacks)
-- {
-- free (yyss);
-- free (yyvs);
--#ifdef YYLSP_NEEDED
-- free (yyls);
--#endif
-- }
-- return 0;
-
-- yyabortlab:
-- /* YYABORT comes here. */
-- if (yyfree_stacks)
-- {
-- free (yyss);
-- free (yyvs);
--#ifdef YYLSP_NEEDED
-- free (yyls);
-+/*-------------------------------------.
-+| yyacceptlab -- YYACCEPT comes here. |
-+`-------------------------------------*/
-+yyacceptlab:
-+ yyresult = 0;
-+ goto yyreturn;
-+
-+/*-----------------------------------.
-+| yyabortlab -- YYABORT comes here. |
-+`-----------------------------------*/
-+yyabortlab:
-+ yyresult = 1;
-+ goto yyreturn;
-+
-+#ifndef yyoverflow
-+/*----------------------------------------------.
-+| yyoverflowlab -- parser overflow comes here. |
-+`----------------------------------------------*/
-+yyoverflowlab:
-+ yyerror ("parser stack overflow");
-+ yyresult = 2;
-+ /* Fall through. */
-+#endif
-+
-+yyreturn:
-+#ifndef yyoverflow
-+ if (yyss != yyssa)
-+ YYSTACK_FREE (yyss);
- #endif
-- }
-- return 1;
-+ return yyresult;
- }
--#line 126 "cfg_y.y"
-+
-+
-+
---- linux-atm-2.4.1.orig/src/switch/cfg_y.y
-+++ linux-atm-2.4.1/src/switch/cfg_y.y
-@@ -10,6 +10,7 @@
- #include <string.h>
- #include <errno.h>
- #include <limits.h>
-+#include <stdlib.h>
-
- #include "atm.h"
-
-@@ -19,6 +20,8 @@
- #include "swc.h"
-
-
-+extern void yyerror(const char *s);
-+
- static int itf;
- static SIGNALING_ENTITY *sig;
-
---- linux-atm-2.4.1.orig/src/switch/cfg_y.h
-+++ linux-atm-2.4.1/src/switch/cfg_y.h
-@@ -1,19 +1,77 @@
--typedef union {
-+/* A Bison parser, made by GNU Bison 1.875d. */
-+
-+/* Skeleton parser for Yacc-like parsing with Bison,
-+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+
-+ 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, Inc., 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA. */
-+
-+/* As a special exception, when this file is copied by Bison into a
-+ Bison output file, you may use that output file without restriction.
-+ This special exception was added by the Free Software Foundation
-+ in version 1.24 of Bison. */
-+
-+/* Tokens. */
-+#ifndef YYTOKENTYPE
-+# define YYTOKENTYPE
-+ /* Put the tokens into the symbol table, so that GDB and other debuggers
-+ know about them. */
-+ enum yytokentype {
-+ TOK_COMMAND = 258,
-+ TOK_VPCI = 259,
-+ TOK_ITF = 260,
-+ TOK_DEFAULT = 261,
-+ TOK_ROUTE = 262,
-+ TOK_STR = 263,
-+ TOK_SOCKET = 264,
-+ TOK_OPTION = 265,
-+ TOK_CONTROL = 266,
-+ TOK_NUM = 267,
-+ TOK_PVC = 268
-+ };
-+#endif
-+#define TOK_COMMAND 258
-+#define TOK_VPCI 259
-+#define TOK_ITF 260
-+#define TOK_DEFAULT 261
-+#define TOK_ROUTE 262
-+#define TOK_STR 263
-+#define TOK_SOCKET 264
-+#define TOK_OPTION 265
-+#define TOK_CONTROL 266
-+#define TOK_NUM 267
-+#define TOK_PVC 268
-+
-+
-+
-+
-+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#line 30 "cfg_y.y"
-+typedef union YYSTYPE {
- int num;
- char *str;
- struct sockaddr_atmpvc pvc;
- } YYSTYPE;
--#define TOK_COMMAND 257
--#define TOK_VPCI 258
--#define TOK_ITF 259
--#define TOK_DEFAULT 260
--#define TOK_ROUTE 261
--#define TOK_STR 262
--#define TOK_SOCKET 263
--#define TOK_OPTION 264
--#define TOK_CONTROL 265
--#define TOK_NUM 266
--#define TOK_PVC 267
--
-+/* Line 1285 of yacc.c. */
-+#line 69 "y.tab.h"
-+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-+# define YYSTYPE_IS_DECLARED 1
-+# define YYSTYPE_IS_TRIVIAL 1
-+#endif
-
- extern YYSTYPE yylval;
-+
-+
-+
---- linux-atm-2.4.1.orig/src/switch/debug/Makefile.in
-+++ linux-atm-2.4.1/src/switch/debug/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -90,8 +90,7 @@
- INCLUDES = -I$(top_builddir)/src/qgen
-
- sw_debug_SOURCES = debug.c
--sw_debug_XTRAS = $(top_builddir)/src/switch/libsw.a \
-- $(top_builddir)/src/lib/libatm.la
-+sw_debug_XTRAS = $(top_builddir)/src/switch/libsw.a $(top_builddir)/src/lib/libatm.la
-
- sw_debug_LDADD = $(sw_debug_XTRAS) -lfl
-
-@@ -121,8 +120,9 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/debug.P
- SOURCES = $(sw_debug_SOURCES)
- OBJECTS = $(sw_debug_OBJECTS)
-
-@@ -130,9 +130,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/switch/debug/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/switch/debug/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -146,9 +146,6 @@
-
- maintainer-clean-noinstPROGRAMS:
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -171,9 +168,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -212,7 +206,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -228,6 +222,11 @@
- subdir = src/switch/debug
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/switch/debug/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -238,11 +237,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--debug.o: debug.c ../../../config.h ../../../src/include/atm.h \
-- ../../../src/include/stdint.h ../../../src/include/atmd.h \
-- ../../../src/qgen/uni.h ../fab.h ../proto.h \
-- ../../../src/include/atmsap.h ../sig.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -279,27 +305,27 @@
-
- maintainer-clean-generic:
- mostlyclean-am: mostlyclean-noinstPROGRAMS mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-noinstPROGRAMS clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+ clean-depend clean-generic mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-noinstPROGRAMS distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-
- maintainer-clean-am: maintainer-clean-noinstPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -310,12 +336,14 @@
- mostlyclean-compile distclean-compile clean-compile \
- maintainer-clean-compile mostlyclean-libtool distclean-libtool \
- clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
---- linux-atm-2.4.1.orig/src/switch/debug/debug.c
-+++ linux-atm-2.4.1/src/switch/debug/debug.c
-@@ -43,7 +43,7 @@
-
- void fab_init(CALL *call)
- {
-- PRV(call) = alloc_t(FAB);
-+ call->fab = alloc_t(FAB);
- PRV(call)->next = calls;
- calls = call;
- }
-@@ -59,7 +59,7 @@
- diag(COMPONENT,DIAG_FATAL,"fab_destroy: call %p not found",call);
- *walk = PRV(call)->next;
- free(PRV(call));
-- PRV(call) = NULL;
-+ call->fab = NULL;
- }
-
-
---- linux-atm-2.4.1.orig/src/switch/tcp/Makefile.in
-+++ linux-atm-2.4.1/src/switch/tcp/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -90,8 +90,7 @@
- INCLUDES = -I$(top_builddir)/src/qgen
-
- sw_tcp_SOURCES = tcpsw.c
--sw_tcp_XTRAS = $(top_builddir)/src/switch/libsw.a \
-- $(top_builddir)/src/lib/libatm.la
-+sw_tcp_XTRAS = $(top_builddir)/src/switch/libsw.a $(top_builddir)/src/lib/libatm.la
-
- sw_tcp_LDADD = $(sw_tcp_XTRAS) -lfl
- sw_tcp_DEPENDENCIES = $(sw_tcp_XTRAS)
-@@ -120,8 +119,9 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
-+DEP_FILES = .deps/tcpsw.P
- SOURCES = $(sw_tcp_SOURCES)
- OBJECTS = $(sw_tcp_OBJECTS)
-
-@@ -129,9 +129,9 @@
- .SUFFIXES:
- .SUFFIXES: .S .c .lo .o .obj .s
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/switch/tcp/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/switch/tcp/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -145,9 +145,6 @@
-
- maintainer-clean-noinstPROGRAMS:
-
--.c.o:
-- $(COMPILE) -c $<
--
- # FIXME: We should only use cygpath when building on Windows,
- # and only if it is available.
- .c.obj:
-@@ -170,9 +167,6 @@
-
- maintainer-clean-compile:
-
--.c.lo:
-- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
- .s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-@@ -211,7 +205,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -227,6 +221,11 @@
- subdir = src/switch/tcp
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/switch/tcp/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
-@@ -237,11 +236,38 @@
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
--tcpsw.o: tcpsw.c ../../../config.h ../../../src/include/stdint.h \
-- ../../../src/include/atm.h ../../../src/include/atmd.h \
-- ../../../src/qgen/uni.h ../fab.h ../proto.h \
-- ../../../src/include/atmsap.h ../sig.h ../dispatch.h ../swc.h
-
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
- info-am:
- info: info-am
- dvi-am:
-@@ -278,27 +304,27 @@
-
- maintainer-clean-generic:
- mostlyclean-am: mostlyclean-noinstPROGRAMS mostlyclean-compile \
-- mostlyclean-libtool mostlyclean-tags \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
- mostlyclean-generic
-
- mostlyclean: mostlyclean-am
-
- clean-am: clean-noinstPROGRAMS clean-compile clean-libtool clean-tags \
-- clean-generic mostlyclean-am
-+ clean-depend clean-generic mostlyclean-am
-
- clean: clean-am
-
- distclean-am: distclean-noinstPROGRAMS distclean-compile \
-- distclean-libtool distclean-tags distclean-generic \
-- clean-am
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
- -rm -f libtool
-
- distclean: distclean-am
-
- maintainer-clean-am: maintainer-clean-noinstPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
-- maintainer-clean-tags maintainer-clean-generic \
-- distclean-am
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-@@ -309,12 +335,14 @@
- mostlyclean-compile distclean-compile clean-compile \
- maintainer-clean-compile mostlyclean-libtool distclean-libtool \
- clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs \
--mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-
-
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
---- linux-atm-2.4.1.orig/src/switch/tcp/tcpsw.c
-+++ linux-atm-2.4.1/src/switch/tcp/tcpsw.c
-@@ -345,7 +345,7 @@
-
- void fab_init(CALL *call)
- {
-- PRV(call) = alloc_t(FAB);
-+ call->fab = alloc_t(FAB);
- PRV(call)->active = 0;
- PRV(call)->next = calls;
- calls = call;
-@@ -362,7 +362,7 @@
- diag(COMPONENT,DIAG_FATAL,"fab_destroy: call %p not found",call);
- *walk = PRV(call)->next;
- free(PRV(call));
-- PRV(call) = NULL;
-+ call->fab = NULL;
- }
-
-
---- linux-atm-2.4.1.orig/src/config/Makefile.in
-+++ linux-atm-2.4.1/src/config/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -96,14 +96,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- all: all-redirect
- .SUFFIXES:
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/config/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/config/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -186,7 +186,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -202,6 +202,11 @@
- subdir = src/config
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/config/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
---- linux-atm-2.4.1.orig/src/config/init-redhat/Makefile.in
-+++ linux-atm-2.4.1/src/config/init-redhat/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -94,14 +94,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- all: all-redirect
- .SUFFIXES:
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/config/init-redhat/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/config/init-redhat/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -114,6 +114,11 @@
- subdir = src/config/init-redhat
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/config/init-redhat/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
---- linux-atm-2.4.1.orig/src/extra/Makefile.in
-+++ linux-atm-2.4.1/src/extra/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -96,14 +96,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- all: all-redirect
- .SUFFIXES:
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/extra/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/extra/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -188,7 +188,7 @@
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-
- mostlyclean-tags:
-
-@@ -204,6 +204,11 @@
- subdir = src/extra
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/extra/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
---- linux-atm-2.4.1.orig/src/extra/ANS/Makefile.in
-+++ linux-atm-2.4.1/src/extra/ANS/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -94,14 +94,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- all: all-redirect
- .SUFFIXES:
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/extra/ANS/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/extra/ANS/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -114,6 +114,11 @@
- subdir = src/extra/ANS
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/extra/ANS/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
---- linux-atm-2.4.1.orig/src/br2684/Makefile.am
-+++ linux-atm-2.4.1/src/br2684/Makefile.am
-@@ -0,0 +1,10 @@
-+sbin_PROGRAMS = br2684ctl
-+
-+LDADD = $(top_builddir)/src/lib/libatm.la
-+
-+br2684ctl_SOURCES = br2684ctl.c
-+
-+man_MANS = br2684ctl.8
-+
-+EXTRA_DIST = $(man_MANS) USAGE.br2684
-+
---- linux-atm-2.4.1.orig/src/br2684/Makefile.in
-+++ linux-atm-2.4.1/src/br2684/Makefile.in
-@@ -0,0 +1,418 @@
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-+
-+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
-+# This Makefile.in is free software; the Free Software Foundation
-+# gives unlimited permission to copy and/or distribute it,
-+# with or without modifications, as long as this notice is preserved.
-+
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-+# PARTICULAR PURPOSE.
-+
-+
-+SHELL = @SHELL@
-+
-+srcdir = @srcdir@
-+top_srcdir = @top_srcdir@
-+VPATH = @srcdir@
-+prefix = @prefix@
-+exec_prefix = @exec_prefix@
-+
-+bindir = @bindir@
-+sbindir = @sbindir@
-+libexecdir = @libexecdir@
-+datadir = @datadir@
-+sysconfdir = @sysconfdir@
-+sharedstatedir = @sharedstatedir@
-+localstatedir = @localstatedir@
-+libdir = @libdir@
-+infodir = @infodir@
-+mandir = @mandir@
-+includedir = @includedir@
-+oldincludedir = /usr/include
-+
-+DESTDIR =
-+
-+pkgdatadir = $(datadir)/@PACKAGE@
-+pkglibdir = $(libdir)/@PACKAGE@
-+pkgincludedir = $(includedir)/@PACKAGE@
-+
-+top_builddir = ../..
-+
-+ACLOCAL = @ACLOCAL@
-+AUTOCONF = @AUTOCONF@
-+AUTOMAKE = @AUTOMAKE@
-+AUTOHEADER = @AUTOHEADER@
-+
-+INSTALL = @INSTALL@
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
-+INSTALL_DATA = @INSTALL_DATA@
-+INSTALL_SCRIPT = @INSTALL_SCRIPT@
-+transform = @program_transform_name@
-+
-+NORMAL_INSTALL = :
-+PRE_INSTALL = :
-+POST_INSTALL = :
-+NORMAL_UNINSTALL = :
-+PRE_UNINSTALL = :
-+POST_UNINSTALL = :
-+host_alias = @host_alias@
-+host_triplet = @host@
-+AR = @AR@
-+AS = @AS@
-+CC = /usr/src/openwrt/staging_dir_mipsel/bin/mipsel-linux-gcc
-+CXX = @CXX@
-+CXXCPP = @CXXCPP@
-+DLLTOOL = @DLLTOOL@
-+ECHO = @ECHO@
-+EGREP = @EGREP@
-+EXEEXT = @EXEEXT@
-+F77 = @F77@
-+GCJ = @GCJ@
-+GCJFLAGS = @GCJFLAGS@
-+HAVE_LIB = @HAVE_LIB@
-+LEX = @LEX@
-+LIB = @LIB@
-+LIBTOOL = @LIBTOOL@
-+LIBTOOL_DEPS = @LIBTOOL_DEPS@
-+LIBVER_AGE = @LIBVER_AGE@
-+LIBVER_CURRENT = @LIBVER_CURRENT@
-+LIBVER_REVISION = @LIBVER_REVISION@
-+LN_S = @LN_S@
-+LTLIB = @LTLIB@
-+MAKEINFO = @MAKEINFO@
-+OBJDUMP = @OBJDUMP@
-+OBJEXT = @OBJEXT@
-+PACKAGE = @PACKAGE@
-+PERL = @PERL@
-+RANLIB = @RANLIB@
-+RC = @RC@
-+STRIP = @STRIP@
-+VERSION = @VERSION@
-+YACC = @YACC@
-+
-+sbin_PROGRAMS = br2684ctl
-+
-+LDADD = $(top_builddir)/src/lib/libatm.la
-+
-+br2684ctl_SOURCES = br2684ctl.c
-+
-+man_MANS = br2684ctl.8
-+
-+EXTRA_DIST = $(man_MANS) USAGE.br2684
-+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+CONFIG_HEADER = ../../config.h
-+CONFIG_CLEAN_FILES =
-+sbin_PROGRAMS = br2684ctl$(EXEEXT)
-+PROGRAMS = $(sbin_PROGRAMS)
-+
-+
-+DEFS = @DEFS@ -I. -I$(srcdir) -I../..
-+CPPFLAGS = @CPPFLAGS@
-+LDFLAGS = @LDFLAGS@
-+LIBS = @LIBS@
-+br2684ctl_OBJECTS = br2684ctl.$(OBJEXT)
-+br2684ctl_LDADD = $(LDADD)
-+br2684ctl_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la
-+br2684ctl_LDFLAGS =
-+CFLAGS = @CFLAGS@
-+COMPILE = $(TARGET_CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+LTCOMPILE = $(LIBTOOL) --mode=compile $(TARGET_CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CCLD = $(TARGET_CC)
-+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
-+man8dir = $(mandir)/man8
-+MANS = $(man_MANS)
-+
-+NROFF = nroff
-+DIST_COMMON = Makefile.am Makefile.in
-+
-+
-+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-+
-+TAR = tar
-+GZIP_ENV = --best
-+DEP_FILES = .deps/br2684ctl.P
-+SOURCES = $(br2684ctl_SOURCES)
-+OBJECTS = $(br2684ctl_OBJECTS)
-+
-+all: all-redirect
-+.SUFFIXES:
-+.SUFFIXES: .S .c .lo .o .obj .s
-+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu src/br2684/Makefile
-+
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
-+ cd $(top_builddir) \
-+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-+
-+
-+mostlyclean-sbinPROGRAMS:
-+
-+clean-sbinPROGRAMS:
-+ -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
-+
-+distclean-sbinPROGRAMS:
-+
-+maintainer-clean-sbinPROGRAMS:
-+
-+install-sbinPROGRAMS: $(sbin_PROGRAMS)
-+ @$(NORMAL_INSTALL)
-+ $(mkinstalldirs) $(DESTDIR)$(sbindir)
-+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \
-+ if test -f $$p; then \
-+ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
-+ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
-+ else :; fi; \
-+ done
-+
-+uninstall-sbinPROGRAMS:
-+ @$(NORMAL_UNINSTALL)
-+ list='$(sbin_PROGRAMS)'; for p in $$list; do \
-+ rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
-+ done
-+
-+# FIXME: We should only use cygpath when building on Windows,
-+# and only if it is available.
-+.c.obj:
-+ $(COMPILE) -c `cygpath -w $<`
-+
-+.s.o:
-+ $(COMPILE) -c $<
-+
-+.S.o:
-+ $(COMPILE) -c $<
-+
-+mostlyclean-compile:
-+ -rm -f *.o core *.core
-+ -rm -f *.$(OBJEXT)
-+
-+clean-compile:
-+
-+distclean-compile:
-+ -rm -f *.tab.c
-+
-+maintainer-clean-compile:
-+
-+.s.lo:
-+ $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+
-+.S.lo:
-+ $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-+
-+mostlyclean-libtool:
-+ -rm -f *.lo
-+
-+clean-libtool:
-+ -rm -rf .libs _libs
-+
-+distclean-libtool:
-+
-+maintainer-clean-libtool:
-+
-+br2684ctl$(EXEEXT): $(br2684ctl_OBJECTS) $(br2684ctl_DEPENDENCIES)
-+ @rm -f br2684ctl$(EXEEXT)
-+ $(LINK) $(br2684ctl_LDFLAGS) $(br2684ctl_OBJECTS) $(br2684ctl_LDADD) $(LIBS)
-+
-+install-man8:
-+ $(mkinstalldirs) $(DESTDIR)$(man8dir)
-+ @list='$(man8_MANS)'; \
-+ l2='$(man_MANS)'; for i in $$l2; do \
-+ case "$$i" in \
-+ *.8*) list="$$list $$i" ;; \
-+ esac; \
-+ done; \
-+ for i in $$list; do \
-+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-+ else file=$$i; fi; \
-+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-+ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \
-+ $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \
-+ done
-+
-+uninstall-man8:
-+ @list='$(man8_MANS)'; \
-+ l2='$(man_MANS)'; for i in $$l2; do \
-+ case "$$i" in \
-+ *.8*) list="$$list $$i" ;; \
-+ esac; \
-+ done; \
-+ for i in $$list; do \
-+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-+ echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \
-+ rm -f $(DESTDIR)$(man8dir)/$$inst; \
-+ done
-+install-man: $(MANS)
-+ @$(NORMAL_INSTALL)
-+ $(MAKE) $(AM_MAKEFLAGS) install-man8
-+uninstall-man:
-+ @$(NORMAL_UNINSTALL)
-+ $(MAKE) $(AM_MAKEFLAGS) uninstall-man8
-+
-+tags: TAGS
-+
-+ID: $(HEADERS) $(SOURCES) $(LISP)
-+ list='$(SOURCES) $(HEADERS)'; \
-+ unique=`for i in $$list; do echo $$i; done | \
-+ awk ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ here=`pwd` && cd $(srcdir) \
-+ && mkid -f$$here/ID $$unique $(LISP)
-+
-+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
-+ tags=; \
-+ here=`pwd`; \
-+ list='$(SOURCES) $(HEADERS)'; \
-+ unique=`for i in $$list; do echo $$i; done | \
-+ awk ' { files[$$0] = 1; } \
-+ END { for (i in files) print i; }'`; \
-+ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
-+
-+mostlyclean-tags:
-+
-+clean-tags:
-+
-+distclean-tags:
-+ -rm -f TAGS ID
-+
-+maintainer-clean-tags:
-+
-+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-+
-+subdir = src/br2684
-+
-+distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/br2684/Makefile
-+ @for file in $(DISTFILES); do \
-+ d=$(srcdir); \
-+ if test -d $$d/$$file; then \
-+ cp -pr $$d/$$file $(distdir)/$$file; \
-+ else \
-+ test -f $(distdir)/$$file \
-+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
-+ || cp -p $$d/$$file $(distdir)/$$file || :; \
-+ fi; \
-+ done
-+
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-+
-+-include $(DEP_FILES)
-+
-+mostlyclean-depend:
-+
-+clean-depend:
-+
-+distclean-depend:
-+ -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+ @echo '$(COMPILE) -c $<'; \
-+ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+ @echo '$(LTCOMPILE) -c $<'; \
-+ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+ @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
-+ < .deps/$(*F).pp > .deps/$(*F).P; \
-+ tr ' ' '\012' < .deps/$(*F).pp \
-+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+ >> .deps/$(*F).P; \
-+ rm -f .deps/$(*F).pp
-+info-am:
-+info: info-am
-+dvi-am:
-+dvi: dvi-am
-+check-am: all-am
-+check: check-am
-+installcheck-am:
-+installcheck: installcheck-am
-+install-exec-am: install-sbinPROGRAMS
-+install-exec: install-exec-am
-+
-+install-data-am: install-man
-+install-data: install-data-am
-+
-+install-am: all-am
-+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-+install: install-am
-+uninstall-am: uninstall-sbinPROGRAMS uninstall-man
-+uninstall: uninstall-am
-+all-am: Makefile $(PROGRAMS) $(MANS)
-+all-redirect: all-am
-+install-strip:
-+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-+installdirs:
-+ $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir)/man8
-+
-+
-+mostlyclean-generic:
-+
-+clean-generic:
-+
-+distclean-generic:
-+ -rm -f Makefile $(CONFIG_CLEAN_FILES)
-+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-+
-+maintainer-clean-generic:
-+mostlyclean-am: mostlyclean-sbinPROGRAMS mostlyclean-compile \
-+ mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
-+ mostlyclean-generic
-+
-+mostlyclean: mostlyclean-am
-+
-+clean-am: clean-sbinPROGRAMS clean-compile clean-libtool clean-tags \
-+ clean-depend clean-generic mostlyclean-am
-+
-+clean: clean-am
-+
-+distclean-am: distclean-sbinPROGRAMS distclean-compile \
-+ distclean-libtool distclean-tags distclean-depend \
-+ distclean-generic clean-am
-+ -rm -f libtool
-+
-+distclean: distclean-am
-+
-+maintainer-clean-am: maintainer-clean-sbinPROGRAMS \
-+ maintainer-clean-compile maintainer-clean-libtool \
-+ maintainer-clean-tags maintainer-clean-depend \
-+ maintainer-clean-generic distclean-am
-+ @echo "This command is intended for maintainers to use;"
-+ @echo "it deletes files that may require special tools to rebuild."
-+
-+maintainer-clean: maintainer-clean-am
-+
-+.PHONY: mostlyclean-sbinPROGRAMS distclean-sbinPROGRAMS \
-+clean-sbinPROGRAMS maintainer-clean-sbinPROGRAMS uninstall-sbinPROGRAMS \
-+install-sbinPROGRAMS mostlyclean-compile distclean-compile \
-+clean-compile maintainer-clean-compile mostlyclean-libtool \
-+distclean-libtool clean-libtool maintainer-clean-libtool install-man8 \
-+uninstall-man8 install-man uninstall-man tags mostlyclean-tags \
-+distclean-tags clean-tags maintainer-clean-tags distdir \
-+mostlyclean-depend distclean-depend clean-depend \
-+maintainer-clean-depend info-am info dvi-am dvi check check-am \
-+installcheck-am installcheck install-exec-am install-exec \
-+install-data-am install-data install-am install uninstall-am uninstall \
-+all-redirect all-am all installdirs mostlyclean-generic \
-+distclean-generic clean-generic maintainer-clean-generic clean \
-+mostlyclean distclean maintainer-clean
-+
-+
-+# Tell versions [3.59,3.63) of GNU make to not export all variables.
-+# Otherwise a system limit (for SysV at least) may be exceeded.
-+.NOEXPORT:
---- linux-atm-2.4.1.orig/src/br2684/br2684ctl.8
-+++ linux-atm-2.4.1/src/br2684/br2684ctl.8
-@@ -0,0 +1,74 @@
-+.\"
-+.TH br2684ctl 1 "7 Jul 2003"
-+.SH NAME
-+br2684ctl \- RFC1483/2684 Bridge Daemon
-+.SH SYNOPSIS
-+.B br2684ctl
-+[
-+.BI \-b
-+] [[
-+.BI \-c\ n
-+] [
-+.BI \-e\ 0|1
-+] [
-+.BI \-s\ sndbuf
-+] [
-+.BI \-a\ [itf].vpi.vci
-+]] ...
-+.SH PARAMETERS
-+.TP 15
-+.BI \-a\ [itf].vpi.vci
-+ATM PVC number, VPI and VCI. (Required)
-+.BI \-b
-+Puts the process in the background.
-+.TP 15
-+.BI \-c\ n
-+br2684 interface number such as 0, 1, ... (Required)
-+.TP 15
-+.BI \-e\ 0|1
-+Encapsulation method: 0=LLC, 1=VC mux (the default is 0 or LLC)
-+.TP 15
-+.TP 15
-+.BI \-s\ sndbuf
-+Send buffer size. Default is 8192.
-+.SH DESCRIPTION
-+br2684ctl handles RFC1483/2684 bridged PDUs.
-+This is most often used in ADSL scenarios where
-+.I usually
-+the subscribers'
-+ethernet traffic is encapsulated in ATM AAL5 (by bridging ADSL modems)
-+according to RFC2684.
-+The subscriber-side ADSL modem can be external with an ethernet connector
-+or an internal ADSL card in a PC.
-+RFC1483 has been obsoleted by RFC2684.
-+
-+For example it is possible to set up your Linux box to handle several
-+ATM PVC's with bridged-1483 (sometimes referred as SNAP) encapsulation.
-+The Linux network stack might provide DHCP, IP masquerading, IP firewall services or
-+bridge the Ethernet frames just like it had several ethernet interfaces.
-+In fact it can have several (logical) ethernet interfaces, where
-+ATM is just used as a carrier.
-+.SH USAGE
-+br2684ctl creates a new network interface named nas[n]
-+which is bound to an specific ATM PVC. It requires two mandatory
-+arguments: -c, the interface number, and -a, the ATM PVC. It should be
-+noted that the order of the command arguments matter; -c should be
-+followed by -a. You can create as many interfaces as necessary
-+in one go, just make a long command line ;)
-+
-+For example, following command will create a nas0 interface which uses
-+the ATM PVC with VPI=0 and VCI=401. You need to configure the PVC connection
-+0.401 on the ATM switch manually.
-+
-+% br2684ctl -c 0 -a 0.401
-+
-+The command will only create a new interface nas0.
-+Next step is to assign an IP address and netmask to
-+the interface nas0 using the ifconfig command. Using ifconfig, you can
-+also assign a Ethernet MAC address to the interface nas0, if necessary.
-+
-+% ifconfig nas0 192.168.2.1 netmask 255.255.255.0
-+.SH NOTES
-+This man page is based on a tutorial by by Joonbum Byun <jbyun@megaxess.com>
-+.SH SEE ALSO
-+.BR qos (7)
---- linux-atm-2.4.1.orig/doc/Makefile.in
-+++ linux-atm-2.4.1/doc/Makefile.in
-@@ -1,4 +1,4 @@
--# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
-
- # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
-@@ -96,14 +96,14 @@
-
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
--TAR = gtar
-+TAR = tar
- GZIP_ENV = --best
- all: all-redirect
- .SUFFIXES:
- $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
-- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/Makefile
-+ cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile
-
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-@@ -116,6 +116,11 @@
- subdir = doc
-
- distdir: $(DISTFILES)
-+ here=`cd $(top_builddir) && pwd`; \
-+ top_distdir=`cd $(top_distdir) && pwd`; \
-+ distdir=`cd $(distdir) && pwd`; \
-+ cd $(top_srcdir) \
-+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu doc/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
---- linux-atm-2.4.1.orig/debian/patches/00list
-+++ linux-atm-2.4.1/debian/patches/00list
-@@ -0,0 +1 @@
-+10_atmbr2684.h
---- linux-atm-2.4.1.orig/debian/patches/10_atmbr2684.h.dpatch
-+++ linux-atm-2.4.1/debian/patches/10_atmbr2684.h.dpatch
-@@ -0,0 +1,598 @@
-+#! /bin/sh -e
-+## 01_kernel-header.dpatch by <bengen+debian@hilluzination.de>
-+##
-+## All lines beginning with ## DP:' are a description of the patch.
-+## DP: add header file atmbr2684.h
-+
-+if [ -e /usr/include/linux/atmbr2684.h ]; then exit 0; fi
-+
-+if [ $# -ne 1 ]; then
-+ echo "basename $0: script expects -patch|-unpatch as argument" >&2
-+ exit 1
-+fi
-+case "$1" in
-+ -patch) patch -f --no-backup-if-mismatch -p1 < $0;;
-+ -unpatch) patch -f --no-backup-if-mismatch -E -R -p1 < $0;;
-+ *)
-+ echo "basename $0: script expects -patch|-unpatch as argument" >&2
-+ exit 1;;
-+esac
-+
-+exit 0
-+@DPATCH@
-+
-+--- linux-atm.orig/src/include/linux/atmbr2684.h
-++++ linux-atm/src/include/linux/atmbr2684.h
-+@@ -0,0 +1,101 @@
-++#ifndef _LINUX_ATMBR2684_H
-++#define _LINUX_ATMBR2684_H
-++
-++#include <linux/atm.h>
-++#include <linux/if.h> /* For IFNAMSIZ */
-++
-++/*
-++ * Type of media we're bridging (ethernet, token ring, etc) Currently only
-++ * ethernet is supported
-++ */
-++#define BR2684_MEDIA_ETHERNET (0) /* 802.3 */
-++#define BR2684_MEDIA_802_4 (1) /* 802.4 */
-++#define BR2684_MEDIA_TR (2) /* 802.5 - token ring */
-++#define BR2684_MEDIA_FDDI (3)
-++#define BR2684_MEDIA_802_6 (4) /* 802.6 */
-++
-++/*
-++ * Is there FCS inbound on this VC? This currently isn't supported.
-++ */
-++#define BR2684_FCSIN_NO (0)
-++#define BR2684_FCSIN_IGNORE (1)
-++#define BR2684_FCSIN_VERIFY (2)
-++
-++/*
-++ * Is there FCS outbound on this VC? This currently isn't supported.
-++ */
-++#define BR2684_FCSOUT_NO (0)
-++#define BR2684_FCSOUT_SENDZERO (1)
-++#define BR2684_FCSOUT_GENERATE (2)
-++
-++/*
-++ * Does this VC include LLC encapsulation?
-++ */
-++#define BR2684_ENCAPS_VC (0) /* VC-mux */
-++#define BR2684_ENCAPS_LLC (1)
-++#define BR2684_ENCAPS_AUTODETECT (2) /* Unsuported */
-++
-++/*
-++ * This is for the ATM_NEWBACKENDIF call - these are like socket families:
-++ * the first element of the structure is the backend number and the rest
-++ * is per-backend specific
-++ */
-++struct atm_newif_br2684 {
-++ atm_backend_t backend_num; /* ATM_BACKEND_BR2684 */
-++ int media; /* BR2684_MEDIA_* */
-++ char ifname[IFNAMSIZ];
-++ int mtu;
-++};
-++
-++/*
-++ * This structure is used to specify a br2684 interface - either by a
-++ * positive integer (returned by ATM_NEWBACKENDIF) or the interfaces name
-++ */
-++#define BR2684_FIND_BYNOTHING (0)
-++#define BR2684_FIND_BYNUM (1)
-++#define BR2684_FIND_BYIFNAME (2)
-++struct br2684_if_spec {
-++ int method; /* BR2684_FIND_* */
-++ union {
-++ char ifname[IFNAMSIZ];
-++ int devnum;
-++ } spec;
-++};
-++
-++/*
-++ * This is for the ATM_SETBACKEND call - these are like socket families:
-++ * the first element of the structure is the backend number and the rest
-++ * is per-backend specific
-++ */
-++struct atm_backend_br2684 {
-++ atm_backend_t backend_num; /* ATM_BACKEND_BR2684 */
-++ struct br2684_if_spec ifspec;
-++ int fcs_in; /* BR2684_FCSIN_* */
-++ int fcs_out; /* BR2684_FCSOUT_* */
-++ int fcs_auto; /* 1: fcs_{in,out} disabled if no FCS rx'ed */
-++ int encaps; /* BR2684_ENCAPS_* */
-++ int has_vpiid; /* 1: use vpn_id - Unsupported */
-++ __u8 vpn_id[7];
-++ int send_padding; /* unsupported */
-++ int min_size; /* we will pad smaller packets than this */
-++};
-++
-++/*
-++ * The BR2684_SETFILT ioctl is an experimental mechanism for folks
-++ * terminating a large number of IP-only vcc's. When netfilter allows
-++ * efficient per-if in/out filters, this support will be removed
-++ */
-++struct br2684_filter {
-++ __u32 prefix; /* network byte order */
-++ __u32 netmask; /* 0 = disable filter */
-++};
-++
-++struct br2684_filter_set {
-++ struct br2684_if_spec ifspec;
-++ struct br2684_filter filter;
-++};
-++
-++#define BR2684_SETFILT _IOW( 'a', ATMIOC_BACKEND + 0, \
-++ struct br2684_filter_set)
-++
-++#endif /* _LINUX_ATMBR2684_H */
-+--- linux-atm.orig/src/include/linux/atmdev.h
-++++ linux-atm/src/include/linux/atmdev.h
-+@@ -0,0 +1,468 @@
-++/* atmdev.h - ATM device driver declarations and various related items */
-++
-++/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
-++
-++
-++#ifndef LINUX_ATMDEV_H
-++#define LINUX_ATMDEV_H
-++
-++
-++#include <linux/config.h>
-++#include <linux/atmapi.h>
-++#include <linux/atm.h>
-++#include <linux/atmioc.h>
-++
-++
-++#define ESI_LEN 6
-++
-++#define ATM_OC3_PCR (155520000/270*260/8/53)
-++ /* OC3 link rate: 155520000 bps
-++ SONET overhead: /270*260 (9 section, 1 path)
-++ bits per cell: /8/53
-++ max cell rate: 353207.547 cells/sec */
-++#define ATM_25_PCR ((25600000/8-8000)/54)
-++ /* 25 Mbps ATM cell rate (59111) */
-++#define ATM_OC12_PCR (622080000/1080*1040/8/53)
-++ /* OC12 link rate: 622080000 bps
-++ SONET overhead: /1080*1040
-++ bits per cell: /8/53
-++ max cell rate: 1412830.188 cells/sec */
-++#define ATM_DS3_PCR (8000*12)
-++ /* DS3: 12 cells in a 125 usec time slot */
-++
-++#define ATM_SD(s) ((s)->sk->protinfo.af_atm)
-++
-++
-++#define __AAL_STAT_ITEMS \
-++ __HANDLE_ITEM(tx); /* TX okay */ \
-++ __HANDLE_ITEM(tx_err); /* TX errors */ \
-++ __HANDLE_ITEM(rx); /* RX okay */ \
-++ __HANDLE_ITEM(rx_err); /* RX errors */ \
-++ __HANDLE_ITEM(rx_drop); /* RX out of memory */
-++
-++struct atm_aal_stats {
-++#define __HANDLE_ITEM(i) int i
-++ __AAL_STAT_ITEMS
-++#undef __HANDLE_ITEM
-++};
-++
-++
-++struct atm_dev_stats {
-++ struct atm_aal_stats aal0;
-++ struct atm_aal_stats aal34;
-++ struct atm_aal_stats aal5;
-++} __ATM_API_ALIGN;
-++
-++
-++#define ATM_GETLINKRATE _IOW('a',ATMIOC_ITF+1,struct atmif_sioc)
-++ /* get link rate */
-++#define ATM_GETNAMES _IOW('a',ATMIOC_ITF+3,struct atm_iobuf)
-++ /* get interface names (numbers) */
-++#define ATM_GETTYPE _IOW('a',ATMIOC_ITF+4,struct atmif_sioc)
-++ /* get interface type name */
-++#define ATM_GETESI _IOW('a',ATMIOC_ITF+5,struct atmif_sioc)
-++ /* get interface ESI */
-++#define ATM_GETADDR _IOW('a',ATMIOC_ITF+6,struct atmif_sioc)
-++ /* get itf's local ATM addr. list */
-++#define ATM_RSTADDR _IOW('a',ATMIOC_ITF+7,struct atmif_sioc)
-++ /* reset itf's ATM address list */
-++#define ATM_ADDADDR _IOW('a',ATMIOC_ITF+8,struct atmif_sioc)
-++ /* add a local ATM address */
-++#define ATM_DELADDR _IOW('a',ATMIOC_ITF+9,struct atmif_sioc)
-++ /* remove a local ATM address */
-++#define ATM_GETCIRANGE _IOW('a',ATMIOC_ITF+10,struct atmif_sioc)
-++ /* get connection identifier range */
-++#define ATM_SETCIRANGE _IOW('a',ATMIOC_ITF+11,struct atmif_sioc)
-++ /* set connection identifier range */
-++#define ATM_SETESI _IOW('a',ATMIOC_ITF+12,struct atmif_sioc)
-++ /* set interface ESI */
-++#define ATM_SETESIF _IOW('a',ATMIOC_ITF+13,struct atmif_sioc)
-++ /* force interface ESI */
-++#define ATM_GETSTAT _IOW('a',ATMIOC_SARCOM+0,struct atmif_sioc)
-++ /* get AAL layer statistics */
-++#define ATM_GETSTATZ _IOW('a',ATMIOC_SARCOM+1,struct atmif_sioc)
-++ /* get AAL layer statistics and zero */
-++#define ATM_GETLOOP _IOW('a',ATMIOC_SARCOM+2,struct atmif_sioc)
-++ /* get loopback mode */
-++#define ATM_SETLOOP _IOW('a',ATMIOC_SARCOM+3,struct atmif_sioc)
-++ /* set loopback mode */
-++#define ATM_QUERYLOOP _IOW('a',ATMIOC_SARCOM+4,struct atmif_sioc)
-++ /* query supported loopback modes */
-++#define ATM_SETSC _IOW('a',ATMIOC_SPECIAL+1,int)
-++ /* enable or disable single-copy */
-++#define ATM_SETBACKEND _IOW('a',ATMIOC_SPECIAL+2,atm_backend_t)
-++ /* set backend handler */
-++#define ATM_NEWBACKENDIF _IOW('a',ATMIOC_SPECIAL+3,atm_backend_t)
-++ /* use backend to make new if */
-++
-++/*
-++ * These are backend handkers that can be set via the ATM_SETBACKEND call
-++ * above. In the future we may support dynamic loading of these - for now,
-++ * they're just being used to share the ATMIOC_BACKEND ioctls
-++ */
-++#define ATM_BACKEND_RAW 0
-++#define ATM_BACKEND_PPP 1 /* PPPoATM - RFC2364 */
-++#define ATM_BACKEND_BR2684 2 /* Bridged RFC1483/2684 */
-++
-++/* for ATM_GETTYPE */
-++#define ATM_ITFTYP_LEN 8 /* maximum length of interface type name */
-++
-++/*
-++ * Loopback modes for ATM_{PHY,SAR}_{GET,SET}LOOP
-++ */
-++
-++/* Point of loopback CPU-->SAR-->PHY-->line--> ... */
-++#define __ATM_LM_NONE 0 /* no loop back ^ ^ ^ ^ */
-++#define __ATM_LM_AAL 1 /* loop back PDUs --' | | | */
-++#define __ATM_LM_ATM 2 /* loop back ATM cells ---' | | */
-++/* RESERVED 4 loop back on PHY side ---' */
-++#define __ATM_LM_PHY 8 /* loop back bits (digital) ----' | */
-++#define __ATM_LM_ANALOG 16 /* loop back the analog signal --------' */
-++
-++/* Direction of loopback */
-++#define __ATM_LM_MKLOC(n) ((n)) /* Local (i.e. loop TX to RX) */
-++#define __ATM_LM_MKRMT(n) ((n) << 8) /* Remote (i.e. loop RX to TX) */
-++
-++#define __ATM_LM_XTLOC(n) ((n) & 0xff)
-++#define __ATM_LM_XTRMT(n) (((n) >> 8) & 0xff)
-++
-++#define ATM_LM_NONE 0 /* no loopback */
-++
-++#define ATM_LM_LOC_AAL __ATM_LM_MKLOC(__ATM_LM_AAL)
-++#define ATM_LM_LOC_ATM __ATM_LM_MKLOC(__ATM_LM_ATM)
-++#define ATM_LM_LOC_PHY __ATM_LM_MKLOC(__ATM_LM_PHY)
-++#define ATM_LM_LOC_ANALOG __ATM_LM_MKLOC(__ATM_LM_ANALOG)
-++
-++#define ATM_LM_RMT_AAL __ATM_LM_MKRMT(__ATM_LM_AAL)
-++#define ATM_LM_RMT_ATM __ATM_LM_MKRMT(__ATM_LM_ATM)
-++#define ATM_LM_RMT_PHY __ATM_LM_MKRMT(__ATM_LM_PHY)
-++#define ATM_LM_RMT_ANALOG __ATM_LM_MKRMT(__ATM_LM_ANALOG)
-++
-++/*
-++ * Note: ATM_LM_LOC_* and ATM_LM_RMT_* can be combined, provided that
-++ * __ATM_LM_XTLOC(x) <= __ATM_LM_XTRMT(x)
-++ */
-++
-++
-++struct atm_iobuf {
-++ int length;
-++ void *buffer;
-++};
-++
-++/* for ATM_GETCIRANGE / ATM_SETCIRANGE */
-++
-++#define ATM_CI_MAX -1 /* use maximum range of VPI/VCI */
-++
-++struct atm_cirange {
-++ char vpi_bits; /* 1..8, ATM_CI_MAX (-1) for maximum */
-++ char vci_bits; /* 1..16, ATM_CI_MAX (-1) for maximum */
-++};
-++
-++/* for ATM_SETSC; actually taken from the ATM_VF number space */
-++
-++#define ATM_SC_RX 1024 /* enable RX single-copy */
-++#define ATM_SC_TX 2048 /* enable TX single-copy */
-++
-++#define ATM_BACKLOG_DEFAULT 32 /* if we get more, we're likely to time out
-++ anyway */
-++
-++/* MF: change_qos (Modify) flags */
-++
-++#define ATM_MF_IMMED 1 /* Block until change is effective */
-++#define ATM_MF_INC_RSV 2 /* Change reservation on increase */
-++#define ATM_MF_INC_SHP 4 /* Change shaping on increase */
-++#define ATM_MF_DEC_RSV 8 /* Change reservation on decrease */
-++#define ATM_MF_DEC_SHP 16 /* Change shaping on decrease */
-++#define ATM_MF_BWD 32 /* Set the backward direction parameters */
-++
-++#define ATM_MF_SET (ATM_MF_INC_RSV | ATM_MF_INC_SHP | ATM_MF_DEC_RSV | \
-++ ATM_MF_DEC_SHP | ATM_MF_BWD)
-++
-++/*
-++ * ATM_VS_* are used to express VC state in a human-friendly way.
-++ */
-++
-++#define ATM_VS_IDLE 0 /* VC is not used */
-++#define ATM_VS_CONNECTED 1 /* VC is connected */
-++#define ATM_VS_CLOSING 2 /* VC is closing */
-++#define ATM_VS_LISTEN 3 /* VC is listening for incoming setups */
-++#define ATM_VS_INUSE 4 /* VC is in use (registered with atmsigd) */
-++#define ATM_VS_BOUND 5 /* VC is bound */
-++
-++#define ATM_VS2TXT_MAP \
-++ "IDLE", "CONNECTED", "CLOSING", "LISTEN", "INUSE", "BOUND"
-++
-++#define ATM_VF2TXT_MAP \
-++ "ADDR", "READY", "PARTIAL", "REGIS", \
-++ "RELEASED", "HASQOS", "LISTEN", "META", \
-++ "256", "512", "1024", "2048", \
-++ "SESSION", "HASSAP", "BOUND", "CLOSE"
-++
-++
-++#ifndef __KERNEL__
-++#undef __AAL_STAT_ITEMS
-++#else
-++
-++#include <linux/sched.h> /* wait_queue_head_t */
-++#include <linux/time.h> /* struct timeval */
-++#include <linux/net.h>
-++#include <linux/skbuff.h> /* struct sk_buff */
-++#include <linux/uio.h>
-++#include <net/sock.h>
-++#include <asm/atomic.h>
-++
-++#ifdef CONFIG_PROC_FS
-++#include <linux/proc_fs.h>
-++#endif
-++
-++
-++struct k_atm_aal_stats {
-++#define __HANDLE_ITEM(i) atomic_t i
-++ __AAL_STAT_ITEMS
-++#undef __HANDLE_ITEM
-++};
-++
-++
-++struct k_atm_dev_stats {
-++ struct k_atm_aal_stats aal0;
-++ struct k_atm_aal_stats aal34;
-++ struct k_atm_aal_stats aal5;
-++};
-++
-++
-++enum {
-++ ATM_VF_ADDR, /* Address is in use. Set by anybody, cleared
-++ by device driver. */
-++ ATM_VF_READY, /* VC is ready to transfer data. Set by device
-++ driver, cleared by anybody. */
-++ ATM_VF_PARTIAL, /* resources are bound to PVC (partial PVC
-++ setup), controlled by socket layer */
-++ ATM_VF_REGIS, /* registered with demon, controlled by SVC
-++ socket layer */
-++ ATM_VF_BOUND, /* local SAP is set, controlled by SVC socket
-++ layer */
-++ ATM_VF_RELEASED, /* demon has indicated/requested release,
-++ controlled by SVC socket layer */
-++ ATM_VF_HASQOS, /* QOS parameters have been set */
-++ ATM_VF_LISTEN, /* socket is used for listening */
-++ ATM_VF_META, /* SVC socket isn't used for normal data
-++ traffic and doesn't depend on signaling
-++ to be available */
-++ ATM_VF_SESSION, /* VCC is p2mp session control descriptor */
-++ ATM_VF_HASSAP, /* SAP has been set */
-++ ATM_VF_CLOSE, /* asynchronous close - treat like VF_RELEASED*/
-++};
-++
-++
-++#define ATM_VF2VS(flags) \
-++ (test_bit(ATM_VF_READY,&(flags)) ? ATM_VS_CONNECTED : \
-++ test_bit(ATM_VF_RELEASED,&(flags)) ? ATM_VS_CLOSING : \
-++ test_bit(ATM_VF_LISTEN,&(flags)) ? ATM_VS_LISTEN : \
-++ test_bit(ATM_VF_REGIS,&(flags)) ? ATM_VS_INUSE : \
-++ test_bit(ATM_VF_BOUND,&(flags)) ? ATM_VS_BOUND : ATM_VS_IDLE)
-++
-++
-++enum {
-++ ATM_DF_CLOSE, /* close device when last VCC is closed */
-++};
-++
-++
-++#define ATM_PHY_SIG_LOST 0 /* no carrier/light */
-++#define ATM_PHY_SIG_UNKNOWN 1 /* carrier/light status is unknown */
-++#define ATM_PHY_SIG_FOUND 2 /* carrier/light okay */
-++
-++#define ATM_ATMOPT_CLP 1 /* set CLP bit */
-++
-++
-++typedef struct { unsigned long bits; } atm_vcc_flags_t;
-++
-++
-++struct atm_vcc {
-++ atm_vcc_flags_t flags; /* VCC flags (ATM_VF_*) */
-++ short vpi; /* VPI and VCI (types must be equal */
-++ /* with sockaddr) */
-++ int vci;
-++ unsigned long aal_options; /* AAL layer options */
-++ unsigned long atm_options; /* ATM layer options */
-++ struct atm_dev *dev; /* device back pointer */
-++ struct atm_qos qos; /* QOS */
-++ struct atm_sap sap; /* SAP */
-++ void (*push)(struct atm_vcc *vcc,struct sk_buff *skb);
-++ void (*pop)(struct atm_vcc *vcc,struct sk_buff *skb); /* optional */
-++ int (*push_oam)(struct atm_vcc *vcc,void *cell);
-++ int (*send)(struct atm_vcc *vcc,struct sk_buff *skb);
-++ void *dev_data; /* per-device data */
-++ void *proto_data; /* per-protocol data */
-++ struct k_atm_aal_stats *stats; /* pointer to AAL stats group */
-++ wait_queue_head_t sleep; /* if socket is busy */
-++ struct sock *sk; /* socket backpointer */
-++ struct atm_vcc *prev,*next;
-++ /* SVC part --- may move later ------------------------------------- */
-++ short itf; /* interface number */
-++ struct sockaddr_atmsvc local;
-++ struct sockaddr_atmsvc remote;
-++ void (*callback)(struct atm_vcc *vcc);
-++ struct sk_buff_head listenq;
-++ int backlog_quota; /* number of connection requests we */
-++ /* can still accept */
-++ int reply; /* also used by ATMTCP */
-++ /* Multipoint part ------------------------------------------------- */
-++ struct atm_vcc *session; /* session VCC descriptor */
-++ /* Other stuff ----------------------------------------------------- */
-++ void *user_back; /* user backlink - not touched by */
-++ /* native ATM stack. Currently used */
-++ /* by CLIP and sch_atm. */
-++};
-++
-++
-++struct atm_dev_addr {
-++ struct sockaddr_atmsvc addr; /* ATM address */
-++ struct atm_dev_addr *next; /* next address */
-++};
-++
-++
-++typedef struct { unsigned int bits; } atm_dev_flags_t;
-++
-++
-++struct atm_dev {
-++ const struct atmdev_ops *ops; /* device operations; NULL if unused */
-++ const struct atmphy_ops *phy; /* PHY operations, may be undefined */
-++ /* (NULL) */
-++ const char *type; /* device type name */
-++ int number; /* device index */
-++ struct atm_vcc *vccs; /* VCC table (or NULL) */
-++ struct atm_vcc *last; /* last VCC (or undefined) */
-++ void *dev_data; /* per-device data */
-++ void *phy_data; /* private PHY date */
-++ atm_dev_flags_t flags; /* device flags (ATM_DF_*) */
-++ struct atm_dev_addr *local; /* local ATM addresses */
-++ unsigned char esi[ESI_LEN]; /* ESI ("MAC" addr) */
-++ struct atm_cirange ci_range; /* VPI/VCI range */
-++ struct k_atm_dev_stats stats; /* statistics */
-++ char signal; /* signal status (ATM_PHY_SIG_*) */
-++ int link_rate; /* link rate (default: OC3) */
-++ atomic_t refcnt; /* reference count */
-++ spinlock_t lock; /* protect internal members */
-++#ifdef CONFIG_PROC_FS
-++ struct proc_dir_entry *proc_entry; /* proc entry */
-++ char *proc_name; /* proc entry name */
-++#endif
-++ struct list_head dev_list; /* linkage */
-++};
-++
-++
-++/*
-++ * ioctl, getsockopt, setsockopt, and sg_send are optional and can be set to
-++ * NULL. */
-++
-++/* OF: send_Oam Flags */
-++
-++#define ATM_OF_IMMED 1 /* Attempt immediate delivery */
-++#define ATM_OF_INRATE 2 /* Attempt in-rate delivery */
-++
-++struct atmdev_ops { /* only send is required */
-++ void (*dev_close)(struct atm_dev *dev);
-++ int (*open)(struct atm_vcc *vcc,short vpi,int vci);
-++ void (*close)(struct atm_vcc *vcc);
-++ int (*ioctl)(struct atm_dev *dev,unsigned int cmd,void *arg);
-++ int (*getsockopt)(struct atm_vcc *vcc,int level,int optname,
-++ void *optval,int optlen);
-++ int (*setsockopt)(struct atm_vcc *vcc,int level,int optname,
-++ void *optval,int optlen);
-++ int (*send)(struct atm_vcc *vcc,struct sk_buff *skb);
-++ int (*sg_send)(struct atm_vcc *vcc,unsigned long start,
-++ unsigned long size);
-++#if 0 /* keep the current hack for now */
-++ int (*send_iovec)(struct atm_vcc *vcc,struct iovec *iov,int size,
-++ void (*discard)(struct atm_vcc *vcc,void *user),void *user);
-++#endif
-++ int (*send_oam)(struct atm_vcc *vcc,void *cell,int flags);
-++ void (*phy_put)(struct atm_dev *dev,unsigned char value,
-++ unsigned long addr);
-++ unsigned char (*phy_get)(struct atm_dev *dev,unsigned long addr);
-++ void (*feedback)(struct atm_vcc *vcc,struct sk_buff *skb,
-++ unsigned long start,unsigned long dest,int len);
-++ int (*change_qos)(struct atm_vcc *vcc,struct atm_qos *qos,int flags);
-++ int (*proc_read)(struct atm_dev *dev,loff_t *pos,char *page);
-++ struct module *owner;
-++};
-++
-++
-++struct atmphy_ops {
-++ int (*start)(struct atm_dev *dev);
-++ int (*ioctl)(struct atm_dev *dev,unsigned int cmd,void *arg);
-++ void (*interrupt)(struct atm_dev *dev);
-++ int (*stop)(struct atm_dev *dev);
-++};
-++
-++struct atm_skb_data {
-++ struct atm_vcc *vcc; /* ATM VCC */
-++ unsigned long atm_options; /* ATM layer options */
-++};
-++
-++#define ATM_SKB(skb) (((struct atm_skb_data *) (skb)->cb))
-++
-++struct atm_dev *atm_dev_register(const char *type,const struct atmdev_ops *ops,
-++ int number,atm_dev_flags_t *flags); /* number == -1: pick first available */
-++struct atm_dev *atm_dev_lookup(int number);
-++void atm_dev_deregister(struct atm_dev *dev);
-++void shutdown_atm_dev(struct atm_dev *dev);
-++void bind_vcc(struct atm_vcc *vcc,struct atm_dev *dev);
-++
-++
-++/*
-++ * This is approximately the algorithm used by alloc_skb.
-++ *
-++ */
-++
-++static inline int atm_guess_pdu2truesize(int pdu_size)
-++{
-++ return ((pdu_size+15) & ~15) + sizeof(struct sk_buff);
-++}
-++
-++
-++static inline void atm_force_charge(struct atm_vcc *vcc,int truesize)
-++{
-++ atomic_add(truesize, &vcc->sk->rmem_alloc);
-++}
-++
-++
-++static inline void atm_return(struct atm_vcc *vcc,int truesize)
-++{
-++ atomic_sub(truesize, &vcc->sk->rmem_alloc);
-++}
-++
-++
-++static inline int atm_may_send(struct atm_vcc *vcc,unsigned int size)
-++{
-++ return (size + atomic_read(&vcc->sk->wmem_alloc)) < vcc->sk->sndbuf;
-++}
-++
-++
-++static inline void atm_dev_hold(struct atm_dev *dev)
-++{
-++ atomic_inc(&dev->refcnt);
-++}
-++
-++
-++static inline void atm_dev_release(struct atm_dev *dev)
-++{
-++ atomic_dec(&dev->refcnt);
-++
-++ if ((atomic_read(&dev->refcnt) == 1) &&
-++ test_bit(ATM_DF_CLOSE,&dev->flags))
-++ shutdown_atm_dev(dev);
-++}
-++
-++
-++int atm_charge(struct atm_vcc *vcc,int truesize);
-++struct sk_buff *atm_alloc_charge(struct atm_vcc *vcc,int pdu_size,
-++ int gfp_flags);
-++int atm_find_ci(struct atm_vcc *vcc,short *vpi,int *vci);
-++int atm_pcr_goal(struct atm_trafprm *tp);
-++
-++void atm_async_release_vcc(struct atm_vcc *vcc,int reply);
-++
-++#endif /* __KERNEL__ */
-++
-++#endif
---- linux-atm-2.4.1.orig/debian/README.br2684
-+++ linux-atm-2.4.1/debian/README.br2684
-@@ -0,0 +1,79 @@
-+README.br2684
-+~~~~~~~~~~~~~
-+
-+The linux-atm CVS includes a program called br2684 which can be used
-+to configure br2684 ATM bridging. On request (#216663), the Debian
-+maintainer included br2684 in the source package.
-+
-+This was done in a way that separates the - unreleased CVS snapshot -
-+br2684 program into its own binary package so avoid shipping
-+released and unreleased software in the same binary package.
-+
-+The modified source package (2.4.1-10) was rejected by Debian
-+ftpmaster because he found the package too small to warrant its own
-+.deb.
-+
-+Hence, atm-tools-br2684 is not built any more.
-+
-+You can, however, build your own atm-tools-br2684 package from the
-+official Debian source package by following this "script".
-+
-+(0)
-+Install all build dependencies plus autoconf, libtool, automake. If
-+#219936 is still unfixed, copy /usr/bin/autoreconf to a local
-+directory and apply the following patch after changing "+@@" to "@@"
-+in the first line (this was inserted to be able to feed this readme to
-+patch to apply the patch given in (1).
-+
-+--- /usr/bin/autoreconf
-++++ autoreconf
-++@@ -183,7 +183,7 @@
-+ {
-+ $autoconf .= ' --force';
-+ $autoheader .= ' --force';
-+- $automake .= ' --force-missing';
-++ $automake .= '';
-+ $autopoint .= ' --force';
-+ $libtoolize .= ' --force';
-+ }
-+
-+(1) Apply the following patch
-+--- configure.in.orig
-++++ configure.in
-+@@ -152,6 +152,7 @@
-+ m4/Makefile \
-+ src/Makefile \
-+ src/include/Makefile \
-++ src/br2684/Makefile \
-+ src/lib/Makefile \
-+ src/test/Makefile \
-+ src/debug/Makefile \
-+--- debian/rules.orig
-++++ debian/rules
-+@@ -11,7 +11,7 @@
-+ export PACKAGE=linux-atm
-+
-+ buildindeppackages=atm-dev
-+-buildarchpackages=atm-tools libatm1 libatm1-dev
-++buildarchpackages=atm-tools atm-tools-br2684 libatm1 libatm1-dev
-+
-+ # generate -ppackage1 -ppackage2 ... commandline for debhelper
-+ dhbuildarchpackages=$(addprefix -p,$(buildarchpackages))
-+--- src/Makefile.am.orig
-++++ src/Makefile.am
-+@@ -1,3 +1,3 @@
-+ SUBDIRS = include lib test debug qgen saal sigd maint arpd ilmid man led lane \
-+- mpoad switch config extra
-++ mpoad switch config extra br2684
-+
-+
-+(2)
-+Invoke autoreconf -f -i
-+
-+(3)
-+create your own changelog entry and your own local version number
-+
-+(4)
-+Build the package as usual
-+
-+Marc Haber, 2003-11-05
---- linux-atm-2.4.1.orig/debian/control
-+++ linux-atm-2.4.1/debian/control
-@@ -0,0 +1,57 @@
-+Source: linux-atm
-+Section: net
-+Priority: optional
-+Maintainer: Peter De Schrijver (p2) <p2@mind.be>
-+Build-Depends: debhelper (>> 4.0.0), bison, flex, perl, dpatch, automake1.4
-+Standards-Version: 3.6.1
-+
-+Package: atm-tools
-+Architecture: any
-+Depends: ${shlibs:Depends}
-+Description: Base programs for ATM in Linux, the net-tools for ATM
-+ This package provides all the basic programs needed for setting up,
-+ monitoring and tuning ATM networks. Such as:
-+ * atmsigd, an ATM signal daemon that implements the ATM UNI protocol.
-+ * atmtcp, a tool to setup ATM over TCP connections.
-+ * atmarpd, an implementation of the ATMARP protocol (RFC1577, RFC1755)
-+ * zeppelin, an ATM LAN Emulation client daemon
-+ * les and bus, ATM LAN Emulation service daemons
-+ .
-+ Notice that upstream still flags these tools as experimental software and
-+ says that there is still a number of known bugs and issues. The
-+ software is, however, in productive use at a number of sites and is
-+ working reliably.
-+ .
-+ Homepage: http://linux-atm.sourceforge.net/
-+
-+Package: atm-dev
-+Depends: libatm1-dev
-+Architecture: all
-+Section: oldlibs
-+Description: Development files for compiling ATM programs (dummy package)
-+ This dummy package provides a transition from the previous atm packages.
-+ It is provided for backwards compatibility only and may be removedafter
-+ the upgrade has completed or when when no other package depend on it.
-+
-+Package: libatm1
-+Section: libs
-+Architecture: any
-+Depends: ${shlibs:Depends}
-+Conflicts: atm-tools (<< 2.4.1-6)
-+Description: shared library for ATM (Asynchronous Transfer Mode)
-+ Shared libraries needed by ATM (Asynchronous Transfer Mode) related programs
-+ .
-+ Homepage: http://linux-atm.sourceforge.net/
-+
-+Package: libatm1-dev
-+Section: libdevel
-+Architecture: any
-+Depends: libc6-dev, libatm1
-+Replaces: atm-dev (<< 2.4.1-7)
-+Conflicts: atm-dev (<< 2.4.1-7)
-+Provides: libatm-dev
-+Description: Development files for compiling ATM programs
-+ Header files and development libraries for compiling ATM (Asynchronous
-+ Transfer Mode) related programs.
-+ .
-+ Homepage: http://linux-atm.sourceforge.net/
---- linux-atm-2.4.1.orig/debian/atm-tools-br2684.dirs
-+++ linux-atm-2.4.1/debian/atm-tools-br2684.dirs
-@@ -0,0 +1,2 @@
-+usr/sbin
-+usr/share/man/man8
---- linux-atm-2.4.1.orig/debian/rules
-+++ linux-atm-2.4.1/debian/rules
-@@ -0,0 +1,136 @@
-+#!/usr/bin/make -f
-+# Sample debian/rules that uses debhelper.
-+# GNU copyright 1997 to 1999 by Joey Hess.
-+
-+# Uncomment this to turn on verbose mode.
-+#export DH_VERBOSE=1
-+
-+# This is the debhelper compatability version to use.
-+export DH_COMPAT=4
-+
-+export PACKAGE=linux-atm
-+
-+buildindeppackages=atm-dev
-+buildarchpackages=atm-tools libatm1 libatm1-dev
-+
-+# generate -ppackage1 -ppackage2 ... commandline for debhelper
-+dhbuildarchpackages=$(addprefix -p,$(buildarchpackages))
-+dhbuildindeppackages=$(addprefix -p,$(buildindeppackages))
-+
-+include /usr/share/dpatch/dpatch.make
-+
-+configure: configure-stamp
-+configure-stamp:
-+ dh_testdir
-+ ./configure --prefix /usr --mandir /usr/share/man --sysconfdir /etc
-+ touch configure-stamp
-+
-+build: configure-stamp build-stamp
-+build-stamp: patch-stamp
-+ dh_testdir
-+
-+ # Add here commands to compile the package.
-+ $(MAKE) $(EXTRA_VARS)
-+ cat debian/copyright.header COPYING > debian/copyright
-+
-+ touch build-stamp
-+
-+clean: clean1 unpatch
-+clean1:
-+ dh_testdir
-+ dh_testroot
-+ rm -f build-stamp configure-stamp
-+
-+ # Add here commands to clean up after the build process.
-+ -$(MAKE) distclean
-+
-+ dh_clean
-+ rm -rf debian/atm-tools.8 debian/copyright
-+
-+install: build
-+ dh_testdir
-+ dh_testroot
-+ dh_clean -k
-+ dh_installdirs
-+
-+ # Add here commands to install the package into debian/atm-tools
-+ $(MAKE) DESTDIR=`pwd`/debian/tmp install
-+
-+ # manpages
-+ /usr/bin/pod2man --section=8 --release="atm-tools $(PKG_VER)" --lax \
-+ --center="Debian GNU/Linux" debian/atm-tools.pod > debian/atm-tools.8
-+
-+ ln -s atm-tools.8 debian/tmp/usr/share/man/man8/aread.8
-+ ln -s atm-tools.8 debian/tmp/usr/share/man/man8/awrite.8
-+ ln -s atm-tools.8 debian/tmp/usr/share/man/man8/enitune.8
-+ ln -s atm-tools.8 debian/tmp/usr/share/man/man8/ilmid.8
-+ ln -s atm-tools.8 debian/tmp/usr/share/man/man8/saaldump.8
-+ ln -s atm-tools.8 debian/tmp/usr/share/man/man8/sonetdiag.8
-+ ln -s atm-tools.8 debian/tmp/usr/share/man/man8/ttcp_atm.8
-+ ln -s atm-tools.8 debian/tmp/usr/share/man/man8/zntune.8
-+
-+# Build architecture-independent files here.
-+binary-indep: build install
-+ dh_testdir $(dhbuildindeppackages)
-+ dh_testroot $(dhbuildindeppackages)
-+ dh_install $(dhbuildindeppackages)
-+
-+# dh_installdebconf $(dhbuildindeppackages)
-+ dh_installdocs $(dhbuildindeppackages)
-+ dh_installmenu $(dhbuildindeppackages)
-+# dh_installlogrotate $(dhbuildindeppackages)
-+# dh_installemacsen $(dhbuildindeppackages)
-+# dh_installpam $(dhbuildindeppackages)
-+# dh_installmime $(dhbuildindeppackages)
-+ dh_installinit $(dhbuildindeppackages) --init-script=atm -- start 34 0 6 . start 39 S .
-+ dh_installcron $(dhbuildindeppackages)
-+ dh_installman $(dhbuildindeppackages)
-+ dh_installinfo $(dhbuildindeppackages)
-+# dh_undocumented $(dhbuildindeppackages)
-+ dh_installchangelogs -i ChangeLog $(dhbuildpackages)
-+ dh_link $(dhbuildindeppackages)
-+ dh_strip $(dhbuildindeppackages)
-+ dh_compress $(dhbuildindeppackages)
-+ dh_fixperms $(dhbuildindeppackages)
-+ dh_makeshlibs $(dhbuildindeppackages)
-+ dh_installdeb $(dhbuildindeppackages)
-+# dh_perl $(dhbuildindeppackages)
-+ dh_shlibdeps $(dhbuildindeppackages)
-+ dh_gencontrol $(dhbuildindeppackages)
-+ dh_md5sums $(dhbuildindeppackages)
-+ dh_builddeb $(dhbuildindeppackages)
-+
-+# Build architecture-dependent files here.
-+binary-arch: build install
-+ dh_testdir $(dhbuildarchpackages)
-+ dh_testroot $(dhbuildarchpackages)
-+ dh_install $(dhbuildarchpackages)
-+
-+# dh_installdebconf $(dhbuildarchpackages)
-+ dh_installdocs $(dhbuildarchpackages)
-+ dh_installmenu $(dhbuildarchpackages)
-+# dh_installlogrotate $(dhbuildarchpackages)
-+# dh_installemacsen $(dhbuildarchpackages)
-+# dh_installpam $(dhbuildarchpackages)
-+# dh_installmime $(dhbuildarchpackages)
-+ dh_installinit $(dhbuildarchpackages) --init-script=atm -- start 34 0 6 . start 39 S .
-+ dh_installcron $(dhbuildarchpackages)
-+ dh_installman $(dhbuildarchpackages)
-+ dh_installinfo $(dhbuildarchpackages)
-+# dh_undocumented $(dhbuildarchpackages)
-+ dh_installchangelogs -a ChangeLog $(dhbuildarchpackages)
-+ dh_link $(dhbuildarchpackages)
-+ dh_strip $(dhbuildarchpackages)
-+ dh_compress $(dhbuildarchpackages)
-+ dh_fixperms $(dhbuildarchpackages)
-+ dh_makeshlibs $(dhbuildarchpackages)
-+ dh_installdeb $(dhbuildarchpackages)
-+# dh_perl $(dhbuildarchpackages)
-+ dh_shlibdeps -a -L libatm1 -l debian/libatm1/lib $(dhbuildarchpackages)
-+ dh_gencontrol $(dhbuildarchpackages)
-+ dh_md5sums $(dhbuildarchpackages)
-+ dh_builddeb $(dhbuildarchpackages)
-+
-+binary: binary-indep binary-arch
-+.PHONY: build binary-indep binary-arch binary install configure
-+ get-2684 patch unpatch clean1
---- linux-atm-2.4.1.orig/debian/atm-tools-br2684.install
-+++ linux-atm-2.4.1/debian/atm-tools-br2684.install
-@@ -0,0 +1 @@
-+debian/tmp/usr/sbin/br2684ctl usr/sbin
---- linux-atm-2.4.1.orig/debian/atm-tools-br2684/usr/share/doc/atm-tools-br2684/changelog.Debian
-+++ linux-atm-2.4.1/debian/atm-tools-br2684/usr/share/doc/atm-tools-br2684/changelog.Debian
-@@ -0,0 +1,206 @@
-+linux-atm (2.4.1-16) unstable; urgency=low
-+
-+ * Fix build problem with gcc 3.4 (Closes: #259422)
-+
-+ -- Peter De Schrijver (p2) <p2@mind.be> Thu, 15 Jul 2004 14:28:10 +0200
-+
-+linux-atm (2.4.1-15) unstable; urgency=low
-+
-+ * Updated descriptions (Closes: #239161)
-+
-+ -- Peter De Schrijver (p2) <p2@mind.be> Sun, 4 Apr 2004 21:10:20 +0200
-+
-+linux-atm (2.4.1-14) unstable; urgency=low
-+
-+ * Fix symlink for /usr/lib/libatm.so (Closes: #221011)
-+
-+ -- Peter De Schrijver (p2) <p2@mind.be> Sun, 7 Dec 2003 21:53:19 +0100
-+
-+linux-atm (2.4.1-13) unstable; urgency=low
-+
-+ * Previous version fixed #217259, but no changelog entry (Closes: #217259)
-+ * Previous version fixed #216662, but no changelog entry (Closes: #216662)
-+ * Added missing build dependency on automake1.4 (Closes: #221120, #221284)
-+ * New Maintainer (Closes: #206982)
-+
-+ -- Peter De Schrijver (p2) <p2@mind.be> Mon, 17 Nov 2003 23:03:58 +0100
-+
-+linux-atm (2.4.1-12) unstable; urgency=low
-+
-+ * don't build atm-tools-br2684 by default. Thanks to ftpmaster for
-+ not allowing the package to be in Debian.
-+ * Since we don't build atm-tools-br2684 any more, revert back to
-+ autotools output from 2.4.1-9
-+ * Add README.br2684 documenting a way to build the package locally.
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Wed, 5 Nov 2003 21:31:42 +0000
-+
-+linux-atm (2.4.1-11) experimental; urgency=low
-+
-+ * Build-Depend on dpatch
-+ * dpatch br2684 header files from later libc for old libc (woody)
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Wed, 29 Oct 2003 19:05:07 +0000
-+
-+linux-atm (2.4.1-10) experimental; urgency=low
-+
-+ * add br2684 to package (closes: #216663)
-+ * autoreconf to actually build br2684
-+ * have libatm1-dev provide libatm-dev (closes: #216662)
-+ * move lib symlink to libatm1-dev as well (closes: #217259)
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Thu, 23 Oct 2003 17:55:43 +0000
-+
-+linux-atm (2.4.1-9) unstable; urgency=low
-+
-+ * put libatm1-dev in libdevel (closes: #213170)
-+ * make sure that new descriptions actually make it into the package
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Thu, 9 Oct 2003 17:08:10 +0000
-+
-+linux-atm (2.4.1-8) unstable; urgency=low
-+
-+ * build arch-indep package as targets of binary-indep (closes: #212124)
-+ * use dh_installdocs to install files to libatm1-dev/docs
-+ * symlink shared lib to usr/bin (closes: #213146)
-+ * Use better long descriptions. Thanks to Javier (closes: #209427)
-+ Fernandez-Sanguino (closes: #209612)
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Sun, 28 Sep 2003 19:29:08 +0000
-+
-+linux-atm (2.4.1-7) unstable; urgency=low
-+
-+ * libatm1 now conflicts with atm-tools (<< 2.4.1-6) (closes: #208170)
-+ * armarp now writes output to stdout.
-+ * add atm-dev as empty transitional package to help upgrades
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Tue, 2 Sep 2003 09:20:33 +0000
-+
-+linux-atm (2.4.1-6) unstable; urgency=low
-+
-+ * split off shared libraries to libatm1
-+ * rename atm-dev to libatm1-dev
-+ * Standards-Version: 3.6.1
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Tue, 26 Aug 2003 15:46:27 +0000
-+
-+linux-atm (2.4.1-5) unstable; urgency=low
-+
-+ * move *.a and *.la to usr/lib (closes: #199506).
-+ * let atm-dev depend on atm-tools to avoid dangling /lib/libatm.so
-+ symlink.
-+ * Standards-Version: 3.5.6
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Wed, 30 Jul 2003 11:46:19 +0000
-+
-+linux-atm (2.4.1-4) unstable; urgency=low
-+
-+ * add Build-Depends: on automake1.4
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Wed, 11 Jun 2003 16:58:21 +0000
-+
-+linux-atm (2.4.1-3) unstable; urgency=low
-+
-+ * rebuilding libtool broke src/test/Makefile.in. Applied fix to
-+ Makefile.am and re-built again.
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Wed, 11 Jun 2003 11:05:26 +0000
-+
-+linux-atm (2.4.1-2) unstable; urgency=low
-+
-+ * rebuild configure script with new libtool (closes: #196909)
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Tue, 10 Jun 2003 21:01:50 +0000
-+
-+linux-atm (2.4.1-1) unstable; urgency=low
-+
-+ * new upstream source
-+ * remove atmarp and atmarpd from /usr/sbin as they are already in
-+ /sbin (closes: #196216)
-+ * lintian fixes
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Mon, 9 Jun 2003 16:03:45 +0000
-+
-+linux-atm (2.4.0-5) unstable; urgency=low
-+
-+ * Fix for src/test/Makefile.in to allow building on hppa and ia64
-+ which the fix introduced to 2.4.0-4 broke. Thanks to Goswin
-+ Brederlow.
-+ * Move init.d priority to that atmarpd is started before network
-+ interfaces are started.
-+ * Move atmarpd and libatm to /sbin and /lib to allow atmarpd to be
-+ started before /usr is mounted.
-+ * use dh_install instead of dh_movefiles.
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Sat, 24 Aug 2002 15:13:48 +0000
-+
-+linux-atm (2.4.0-4) unstable; urgency=low
-+
-+ * new maintainer
-+ * Fix for src/test/Makefile.in to allow building on sparc.
-+ Thanks to Patrick Mauritz. (closes: #144225).
-+ * added pseudo-manpage for manpage-less binaries.
-+ * removed rpath by changing configure and make install paramaters
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Fri, 16 Aug 2002 20:39:05 +0000
-+
-+linux-atm (2.4.0-3) unstable; urgency=HIGH
-+
-+ * Re-ran libtoolize.
-+ Closes: #143522
-+
-+ * Previous version Closes: #135328
-+
-+ -- Russell Coker <russell@coker.com.au> Fri, 19 Apr 2002 01:55:00 +0200
-+
-+linux-atm (2.4.0-2) unstable; urgency=HIGH
-+
-+ * Put a "grep -v EMAXERRNO" into the build process to deal with mipsel and
-+ the "#ifdef __KERNEL__" it has in it's /usr/include/asm/errno.h .
-+
-+ -- Russell Coker <russell@coker.com.au> Thu, 18 Apr 2002 19:56:00 +0200
-+
-+linux-atm (2.4.0-1) unstable; urgency=HIGH
-+
-+ * New upstream version which changes source package name.
-+ Closes: #138911
-+
-+ -- Russell Coker <russell@coker.com.au> Mon, 18 Mar 2002 17:42:00 +0100
-+
-+atm (0.79-4) unstable; urgency=low
-+
-+ * Added build-depends on flex.
-+ Closes: #111072
-+
-+ * Made the atm tools use a shared object to save space.
-+
-+ * Fixed the copyright file and put all copyright details in both packages.
-+
-+ * Added support for easy building with different kernel headers.
-+ Closes: #110249
-+
-+ -- Russell Coker <russell@coker.com.au> Sun, 7 Oct 2001 14:11:33 +0200
-+
-+atm (0.79-3) unstable; urgency=low
-+
-+ * Created /etc/init.d/atm to start and stop atmarpd.
-+ Closes: #110252
-+
-+ * Added build-depends on bison.
-+ Closes: #110576
-+
-+ -- Russell Coker <russell@coker.com.au> Fri, 31 Aug 2001 15:21:44 +0200
-+
-+atm (0.79-2) unstable; urgency=low
-+
-+ * Changed the main package name to atm-tools to indicate that it doesn't
-+ provide ATM (gotta have the kernel support), it just has the daemons and
-+ utilities.
-+
-+ -- Russell Coker <russell@coker.com.au> Sat, 25 Aug 2001 17:55:00 +0200
-+
-+atm (0.79-1) unstable; urgency=low
-+
-+ * Initial Release.
-+
-+ -- Russell Coker <russell@coker.com.au> Fri, 24 Aug 2001 17:31:00 +0200
---- linux-atm-2.4.1.orig/debian/atm-tools-br2684/usr/share/doc/atm-tools-br2684/changelog
-+++ linux-atm-2.4.1/debian/atm-tools-br2684/usr/share/doc/atm-tools-br2684/changelog
-@@ -0,0 +1,3299 @@
-+Version 2.4.0 to 2.4.1 (25-APR-2003)
-+=====================
-+
-+Bug fixes
-+---------
-+
-+ - vsprintf's changed to vsnprintf's to prevent possible stack overflows
-+
-+
-+Version 0.79 to 2.4.0 (18-OCT-2001)
-+=====================
-+
-+Bug fixes
-+---------
-+
-+ - defined 'now' in src/lib/timer.c
-+ - ia64 build fix for ASN (Chas Williams)
-+
-+Other changes
-+-------------
-+
-+ - In general, the source tree was rearranged and the old cruft was removed
-+ - Old ad hoc build system replaced in favor of a standardized autoconfiscation
-+ - Build configuration options are now controlled by 'configure' script instead
-+ of changes to the previous 'Rules.make' file
-+ - libatm and libatmd merged into one lib: libatm
-+ - Both static and shared libraries are built by default. Binaries now built
-+ with shared library by default.
-+ - Sample atmsigd.conf and hosts.atm are now installed when doing 'make install'
-+ - RPM spec file is now available in src/extra/
-+ - New RedHat init scripts available in src/config/init-redhat/ (John Strange)
-+ (old RedHat 4.0 scripts removed)
-+ - ATM on Linux HOWTO now included in doc/ (much derived from usage.tex). We
-+ will publish this on the home page as well as linuxdoc.org
-+ - tcpdump and libpcap ATM patches/build removed (they have been integrated into
-+ their respective packages; see www.tcpdump.org)
-+ - ATM Name Service (ANS) files coalesced into src/extra/ANS
-+ - ANS bind patch upgraded to bind-4.9.8 (untested)
-+ - rtf2e164_cc.pl removed in favor of src/extra/ANS/pdf2e164_cc.pl. The ITU no
-+ longer provides E.164 country codes in RTF format. PDF used instead.
-+
-+
-+Version 0.78 to 0.79 (15-AUG-2001)
-+====================
-+
-+Bug fixes
-+---------
-+
-+- uni.c fix for newer versions of gcc
-+- mpoad/io.c quick fix for undefined OPEN_MAX
-+
-+
-+Version 0.77 to 0.78 (7-JUL-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - skb_migrate wasn't protected against functions accessing the list via
-+ skb->list
-+ - removal of MOD_xxx races in FORE 200E and atmtcp (by Jeff Garzik)
-+ - CONFIG_ATM_NICSTAR_USE_IDT77105 set NEED_SUNI_MX instead of
-+ NEED_IDT77105_MX (fix from mainstream)
-+ - ambassador.c: changed string concatenation and offset calculation breaking
-+ compilation with gcc 2.96 (by Jakub Jelinek)
-+ - nicstar.c: various locking fixes for SMP (by Rui Prior)
-+ - LANE vs. bridging build conflict solved (from mainstream)
-+ - %%u instead of %u in mpc.c
-+ - fixed formatting of /proc/net/atm/svc
-+ - /proc/net/atm/clip always added + after public address, not only if followed
-+ by private address
-+ - atmsigd now returns EINVAL if attempting to change max_sdu
-+ - atm_change_qos now calls adjust_to for additional parameter checking
-+ - sendmsg now returns error if size > max_sdu (reported by Alan Kennington)
-+ - removed explicit defaults in Config.in (by Christoph Hellwig)
-+ - Fore200E: removed #ifdef MODULE
-+ - ipcommon.c didn't export skb_migrate to modules (by Mitchell Blank)
-+ - ENI: /proc/net/atm/eni:* claimed backlog was in bytes instead of packets
-+ - br, bw, window: changed variables receiving possibly negative return values
-+ from size_t to ssize_t (reported by Alan Kennington)
-+ - LANE: fixed stray errors on lack of ATM address, ATM address change, or ESI
-+ change (by Heikki Vatiainen)
-+ - LANE: could loop forwever when trying to connect to LECS (by Heikki
-+ Vatiainen)
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.4.0-test3-pre4 kernel
-+
-+Other changes
-+-------------
-+
-+ - as_reject now returns the errno value in msg->reply
-+ - removed save_qos hack in svc_change_qos
-+ - atmsigd: sap_encode now always includes both max_sdu fields, even if one
-+ contains the null value for some reason (by Mohsen Souissi)
-+ - PCI updates for Ambassador, FORE 200E, Horizon, Iphase, nicstar, ENI, and
-+ ZATM (by Jeff Garzik)
-+ - removal of unnecessary #ifdef MODULE for nicstar, idt77105, and FORE 200E
-+ (by Jeff Garzik)
-+ - generalized skb_migrate to append to an arbitrary sk_buff list
-+ - iphase.c: timer initialization cleanup (from mainstream)
-+ - clip: dev->name initialization change (from mainstream)
-+ - idt77105: cleaned up timer initialization
-+ - clip.c: some general cleanup
-+ - removed redundant return in clip.c (by Heikki Vatiainen)
-+ - changed atm_change_qos to static
-+ - fore200e.c: re-enabled anti-unloading code
-+ - lec.c: now drops packets on overrun instead of growing infinite queue (by
-+ Heikki Vatiainen)
-+ - COPYING still mentioned the old led code with partial DEC copyright
-+ (reported by Chris Pimlott)
-+ - Horizon: removed const warning by casting to (hrz_flags *)
-+ - Iphase: tried to print unsigned long with %x when errors are enabled
-+ - ENI: eni_send tries to use do_tx instead of tasklet_schedule to reduce delay
-+ - ENI: removed eni_dev->backlog_len (information is already in backlog->qlen)
-+ - changed the kernel source tree references from .gz to .bz2 compression
-+ - changed mkdiff to allow more flexible selection of additional patch
-+
-+
-+Version 0.76 to 0.77 (29-APR-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atmaddr.8, atmarp.8, atmdump.8, atmloop.8, esi.8 didn't print all options
-+ in bold
-+ - atmsigd crashed if an interface had more than one local ATM address
-+ - atmarpd continued to use VCs after closing if they were closed because
-+ ATMARP_SETENTRY failed (reported by Joseph Gooch)
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.3.99-pre6 kernel
-+
-+Other changes
-+-------------
-+
-+ - CLIP now uses NETDEV_GOING_DOWN instead of NETDEV_DOWN; also avoids
-+ "clip_device_event: unknown event 9" warning
-+ - added ubr:pcr example to qos(7)
-+ - added -V option to atmaddr, atmarp, atmarpd, atmloop, atmsigd, atmtcp, esi,
-+ ilmid
-+ - sock->sk->sleep now points to vcc->sleep (by Alexander Viro)
-+ - CLIP: ATMARP server now reponds to query for local IP address (suggested by
-+ Joseph Gooch)
-+ - updated t2a.pl
-+
-+
-+Version 0.75 to 0.76 (13-APR-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - ttcp_atm declared port as "short" instead of "unsigned short", yielding
-+ confusing diagnostic output
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.3.99-pre5 kernel
-+
-+Other changes
-+-------------
-+
-+ - eliminated eni_send-tasklet synchronization
-+ - PCA200: merged unconditional #inclusion of linux/pci.h from pre5
-+
-+
-+Version 0.74 to 0.75 (7-APR-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - ENI: moved send operation into tasklet to correct synchronization (reported
-+ by Heikki Vatiainen)
-+ - MPOA: possible deadlock fix (by Heikki Vatiainen)
-+ - atm_vcc_flags_t was too small on PPC, causing an overlap with vcc->family
-+ (fixed by Chas Williams)
-+ - CLIP: needs spin_lock_irqsave instead of only spin_lock (by Rui Prior)
-+ - CLIP: clip_push may be called from an interrupt, so the kfree_skb has to
-+ become dev_kfree_skb_any (by Heikki Vatiainen)
-+
-+Other changes
-+-------------
-+
-+ - removed INCLUDES from atm/ilmid/asn1/Makefile (suggested by Jean Marc
-+ Lacroix)
-+ - atm/maint/Makefile no longer special-cases atmdiag.c (suggested by Jean Marc
-+ Lacroix)
-+
-+
-+Version 0.73 to 0.74 (2-APR-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atm_poll tried to sleep on two wait queues, which is no longer possible.
-+ Removed vcc->wsleep to solve this. (Reported by Joseph Gooch)
-+ - lec.c:lec_arp_clear_vccs changed the VCC flags of the wrong VCC, fortunately
-+ only in commented-out code
-+ - major revision of MPOA ingress and egress cache locking (Heikki Vatiainen)
-+
-+Other changes
-+-------------
-+
-+ - removed last remnants of bogus bridging lock from lane_mpoa_init.c
-+ (reported by Heikki Vatiainen)
-+ - removed last traces of TNET1570A driver
-+ - atmdev_init still knew about ENI, but ENI now uses new-style initialization
-+ - improved Fore 200E configuration to catch useless settings already at
-+ configuration time (by Christophe Lizzi)
-+
-+
-+Version 0.72 to 0.73 (29-MAR-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - ambassador.c and horizon.c had module loading races (fixed by Giuliano
-+ Procida)
-+ - fore200e: one set_bit was accidently converted to clear_bit, preventing VCs
-+ from being opened (fixed by Christophe Lizzi)
-+
-+Other changes
-+-------------
-+
-+ - fore200e: moved interrupt handler work to tasklet (by Christophe Lizzi)
-+ - fore200e: fixed SBUS DMA direction flags (by Christophe Lizzi)
-+ - fore200e: the compile no longer fails when the driver is compiled without
-+ any hardware support (and displays a warning; by Christophe Lizzi)
-+ - oops, atm/README was lagging behind a few versions
-+
-+
-+Version 0.71 to 0.72 (25-MAR-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - fore200e.h and lec.h didn't #include <linux/config.h> (fixed by David S.
-+ Miller ?)
-+ - atmloop.c always assumed -q to be present
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.3.99-pre3 kernel
-+
-+Other changes
-+-------------
-+
-+ - kernel patch still included wd.c hack (reported by David S. Miller)
-+ - removed bogus initialization of skb->rx_dev (spotted by Alexey Kuznetsov)
-+ - removed bogus lane_bridge_hook_lock (by Heikki Vatiainen)
-+ - added sparc64 support for ATM_QUERYLOOP (by Christophe Lizzi)
-+ - minor Fore driver cleanup (by Christophe Lizzi)
-+ - eni.c: moved interrupt handler work to tasklet
-+
-+
-+Version 0.70 to 0.71 (21-MAR-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - eni.c: fixed potential SMP deadlock on tx_wait
-+ - clip.c and lec.c didn't initialize skb->rx_dev
-+ - net/atm/svc.c:svc_connect left wait entry in queue on return in some cases
-+ - idiot bug in skb_migrate caused weird crashes
-+ - atmloop usage erroneously claimed -s was optional
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.3.99-pre2 kernel
-+ - added atmloop.8 man page
-+ - added enqueuing result NET_XMIT_BYPASS for qdiscs that send packets on a
-+ path without dequeue (e.g. sch_atm)
-+
-+Other changes
-+-------------
-+
-+ - ambassador.c: removed warnings when compiling with CONFIG_SMP (by Giuliano
-+ Procida)
-+ - changed drivers/atm target from atm.a to atm.o, to make initcalls work
-+ - converted eni.c to use pci_register_driver and initcall
-+ - cleaned up #ifdef hell in net/atm/signaling.c:sigd_put_skb
-+
-+
-+Version 0.69 to 0.70 (20-MAR-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - LEC compilation as a module still left it in the kernel
-+
-+Other changes
-+-------------
-+
-+ - moved LANE-bridging interface code from lec.c to lane_mpoa_init.c (by
-+ Heikki Vatiainen)
-+ - made SONET and ATM statistics counters atomic to avoid cli() when reading
-+ (not updated: similar mechanism in idt77105.c and private shadow statistics
-+ of ambassador.c)
-+ - changed access to VCC and device flags (ATM_VF_* and ATM_DF_*) to bit set
-+ operations
-+ - changed flag types to structs to fail compilation of old code
-+ - changed last argument of atm_dev_register to a pointer to a bit set for
-+ easier migration
-+ - net/atm/*.c: eliminated all sleep_on and cli (except in lec.c)
-+ - ditto for eni.c and suni.c
-+ - corrected indentation of some "permanent" debugging code in zatm.c
-+ - made skb_migrate partially atomic, obsoleting yet another cli() in clip.c
-+
-+
-+Version 0.68 to 0.69 (19-MAR-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - ambassador.c: corrected location of initial PLX window for use on Alpha (by
-+ Giuliano Procida)
-+ - zeppelin: fixed address initialization (found by Christophe Lizzi)
-+ - atmsigd.conf man page erroneously described the option "q.2963.1" as
-+ "q2963_1"
-+ - LANE didn't compile when bridging was enabled (fixed by Heikki Vatiainen;
-+ note that bridging also needs an update which is being merged via the
-+ mainstream kernel)
-+
-+New features
-+------------
-+
-+ - atmsigd: added command-line option -u to set the UNI mode
-+ - added ioctl ATM_QUERYLOOP to determine supported loopback modes
-+ - added atmloop(8) option -q
-+
-+Other changes
-+-------------
-+
-+ - added CREDITS entry of Giuliano Procida
-+ - various cosmetic changes to horizon.c (by Giuliano Procida)
-+ - ambassador.c: various bits of cleanup (by Giuliano Procida)
-+ - added -S <tos> option to ttcp_atm to set the IPv4 TOS byte (this is not
-+ really related to ATM)
-+ - changed loopback mode values to a bit set
-+ - idt77105_ioctl: returned sizeof(int) instead of 0 on ATM_GETLOOP
-+ - added phy_ops->stop to suni.c and uPD98402_stop, cleaned up suni.c in the
-+ process
-+ - removed (very obsolete) mmuio.o from net/atm/Makefile
-+
-+
-+Version 0.67 to 0.68 (28-FEB-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - removed potential dev_kfree_skb(NULL) from *_send of eni.c, zatm.c, iphase.c
-+ - eni.c, zatm.c, iphase.c sometimes returned PCI error codes instead of errno
-+ codes
-+ - arpd/io.c could try to de-reference entry->addr with addr == NULL (fixed by
-+ Thomas Dietz)
-+ - LANE copied more than dev->addr_len address bytes (fixed by Heikki
-+ Vatiainen)
-+ - sch_atm didn't remove filters on destroy
-+ - fixed typo in esi.c error message
-+ - esi.8 claimed to be the man page of atmarp, and it wasn't installed
-+ - added checking for VPI/VCI when sending AAL0 cells (by Mitchell Blank)
-+ - atmtcp allowed sending on receive-only VCs
-+ - various ioctl permission checks were missing (fixed by Mitchell Blank)
-+ - fore200e.c and horizon.c didn't always free skbs on send error (fixed by
-+ Mitchell Blank)
-+ - included an ugly hack to fix the wd.c driver that was broken around 2.3.47
-+ (not related to ATM at all...)
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.3.48 kernel
-+ - added device-independent SAR/PHY loopback setting interface (with many good
-+ ideas from Greg Banks and Mitchell Blank), and removed old loopback ioctls
-+ - new utility atmloop to set loopback mode
-+ - added "stop" to atmphy_ops (requested by Mitchell Blank)
-+
-+Other changes
-+-------------
-+
-+ - mkdiff can now also use pre-release kernels
-+ - changed *kfree_skb to dev_kfree_skb_{irq,any} in eni.c, zatm.c, and raw.c,
-+ where necessary (with help from Heikki Vatiainen)
-+ - changed {dev_,}kfree_skb to dev_kfree_skb_any in ambassador.c, horizon.c,
-+ iphase.c, and nicstar.c (needs further cleanup)
-+ - softnet updates for LANE (by Heikki Vatiainen)
-+ - fixed firmeware license of Fore 200E driver and general 0.46/0.47 updates
-+ (Christophe Lizzi)
-+ - more CREDITS file additions
-+ - softnet updates for sch_atm
-+ - softnet updates for CLIP (also cleaned up flow control for > 1 VCC/itf;
-+ reported by Alexey Kuznetsov)
-+ - updated documentation for iproute2-2.2.4-now-ss000225 and streamlined the
-+ build procedure
-+ - PCI DMA updates for ENI driver
-+ - changed the default install location of executables and man pages from
-+ /usr/local to /usr
-+ - make install no longer installs align, aping, br, bw, delay, isp, svctor,
-+ sw_debug, sw_tcp, swc, and window
-+ - eni.c: made highly controversial aal5 = ... line more readable
-+ - moved /proc/atm to /proc/net/atm
-+ - added vcc->send function to allow for AAL-specific processing (may be set
-+ to dev->ops->send)
-+ - atm_do_connect_dev now calls bind_vcc before AAL initialization to make
-+ vcc->dev available
-+ - change_qos no longer allows changing of AAL or traffic class (by Mitchell
-+ Blank)
-+ - changes for new loopback support to fore200e driver and sparc64 code (by
-+ Christophe Lizzi)
-+
-+
-+Version 0.66 to 0.67 (2-FEB-2000)
-+====================
-+
-+New features
-+------------
-+
-+ - upgraded to 2.3.42
-+ - added sunimode utility to set SUNI loopback mode (by Christophe Lizzi)
-+
-+Other changes
-+-------------
-+
-+ - removed unused variable warning in net/sched/sch_atm.c
-+ - changed ENI_SETMULT from ATMIOC_SARPRV+1 to ATMIOC_SARPRV+7
-+ - changed atmarpd's complaint about VCC-less non-ATMARP-server entries from
-+ DIAG_ERROR to DIAG_INFO (the condition is okay for an ATMARP server)
-+
-+
-+Version 0.65 to 0.66 (31-JAN-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atmsigd crashed on reception of as_accept, etc., because of inverted NULL
-+ pointer test (reported by Kevin Vargo, Rui Prior, fixed by Julian Cable)
-+ - fixed various SPARC build problems (by Christophe Lizzi)
-+ - atmsigd insisted that calling party number is local in switch mode
-+ - debug switch didn't initialize any ports
-+ - net/atm/signaling.c:sigd_enq didn't properly zero the message, yielding
-+ kernel pointers partially containing junk
-+ - accept(2) didn't copy local ATM address to VCC descriptor (reported by
-+ Pedro Brandao)
-+ - ilmid/io.c didn't compile on SPARC (reported by Christophe Lizzi)
-+ - usage.txt didn't define the %: macro, leaving garbage in usage.txt
-+
-+New features
-+------------
-+
-+ - upgraded to 2.3.41
-+ - Fore 200E driver now also works for SBA-200E (by Christophe Lizzi)
-+
-+Other changes
-+-------------
-+
-+ - added various CREDITS entries
-+ - changed TIOC{IN,OUT}Q to SIOC{IN,OUT}Q (no user space rebuild required;
-+ the values are identical)
-+ - added script atm/switch/tcp/mkfiles for automatic extraction of
-+ configuration files
-+ - atmsigd called ATM_GETLINKRATE "ATM_GETLINERATE" in complaints
-+ - atmsigd tried to obtain link speed in switch mode, although it's not used
-+ - Ambassador NIC: various files still had the wrong copyright/licensing text
-+ (patch by Giuliano Procida)
-+
-+
-+Version 0.64 to 0.65 (21-JAN-2000)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - fixed 32/64 bit %p formatting problem in /proc/atm/vc
-+ - atmtcp: fixed RX/TX statistics (by Jens Axboe)
-+ - sparc64-specific ioctl 32/64 bit marshalling fixes (by Christophe Lizzi,
-+ with further improvements by Jens Axboe)
-+ - zeppelin -l option handling (reported by Mike Prudence, fixed by Heikki
-+ Vatiainen)
-+ - mkpatch didn't include drivers/atm/eni.h
-+ - updated eni.h (tx->backlog_len was missing)
-+ - fixed various uint32_t build problems of user space tools by including
-+ atm.h before anything other ATM headers (first reported by Rashmi Dravid)
-+ - "natmtcp virtual" didn't parse the command line properly
-+ - natmtcp's TCP link changed VPI/VCI to 0.0 on close
-+ - CLIP: fixed crash after sending ARP (reported by Rui Prior)
-+
-+New features
-+------------
-+
-+ - upgraded to 2.3.40 (with help from Jens Axboe)
-+ - added sparc64 changes for ENI driver (by Heikki Vatiainen)
-+ - added the Fore PCA-200E(/SBA-200E) driver (by Uwe Dannowski and Christophe
-+ Lizzi)
-+ - added the Interphase ATM PCI (i)Chip (x575, x525, x531, etc.) driver (by
-+ Monalisa Agrawal and Peter Wang)
-+ - added ABR fields to struct atm_trafprm (by Peter Wang)
-+ - nicstar driver now supports setting of the CLP bit (by Rui Prior)
-+ - added ENI_SETMULT ioctl and enitune utility to change ENI buffer size
-+ multipliers at run time
-+
-+Other changes
-+-------------
-+
-+ - atmsigd: changed default UNI version from 3.0 to dynamic (which defaults
-+ to 3.0)
-+ - atmtcp: removed ugly ../../net/atm/protocols.h include
-+ - ioctls now internally return -ENOIOCTLCMD if ioctl command number is not
-+ recognized
-+ - removed ATM_CREATE_LEAF ioctl (wasn't used and suggested the wrong design
-+ approach anyway)
-+ - updated README.DRIVERS
-+ - natmtcp now uses port 2812 (assigned by IANA)
-+ - moved Documentation/atm.txt to Documentation/networking
-+ - improved atm_kptr_int_t for non-Sparc architectures (by Christophe Lizzi)
-+ - removed two compiler warnings from nicstar.c
-+ - some minor nicstar cleanup (by Rui Prior)
-+ - added "vbr" and "abr" to text2qos/qos2text ("vbr" not used for anything
-+ right now)
-+ - natmtcp: added commands "create", "remove", "switch", corresponding to
-+ options -p, -r, and -s of atmtcp
-+ - natmtcp: added link type "print" (write PDU content to stdout)
-+ - natmtcp: now uses atm_kptr_int_t for VCC kernel pointer instead of unsigned
-+ long
-+ - added apologetic man page for natmtcp
-+ - renamed natmtcp to atmtcp and removed the old atmtcp
-+ - changed some user-space code to avoid patronizing "ambiguous `else'"
-+ warnings from egcs, adding as few ugly redundant curly braces as possible
-+ - fixed some other compiler warnings
-+ - kernel part: trimmed operations structure initializers which consisted
-+ mainly of NULL pointers
-+ - kernel pointers sent as opaque references to user space are now of type
-+ atm_kptr_t. Added support functions kptr_eq and kptr_print. (With help from
-+ Richard Johnson and Mitchell Blank)
-+ - removed various "overriding commands" warnings in user-space build process
-+ - mkdist now creates arcvie in current directory if ~/l/arch doesn't exist
-+ - make clean && make now works also if dependencies are present (make clean
-+ used to remove sigd/q.out.h, which the dependencies required)
-+ - atmtcp uses command bg instead of -b for backgrounding. Also, listen-bg
-+ listens and backgrounds before calling accept.
-+
-+
-+Version 0.63 to 0.64 (1-DEC-1999)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atmapi.h logic was still wrong (fixed by Christophe Lizzi)
-+ - LANE: fixed BUS filtering and net/atm/lec.c cleanup (by Heikki Vatiainen)
-+ - arpd/io.c assumed that diag() preserves errno
-+ - atmarpd didn't include QOS in output if getsockopt failed
-+
-+New features
-+------------
-+
-+ - /proc/atm/eni:* now also shows transmit queue and backlog length
-+ - added option "sndbuf" to atmarp
-+ - added option "sndbuf" to tc ... atm ...
-+ - /proc/atm/vc lists internal details for all VCs (flags, buffers, etc.);
-+ added ATM_VF2TXT_MAP to atmdev.h to allow translation of flag values
-+
-+Other changes
-+-------------
-+
-+ - ATM now uses sk->sndbuf/rvcbuf instead of atm_vcc->tx_quota/rx_quota
-+ - removed rx_quota hack from zatm.c
-+ - removed net/atm/tunable.h
-+ - CLIP and sch_atm now only send packets if the VC's send queue allows them to
-+ - implemented correct "requeue" function in sch_atm
-+ - updated zeppelin(8) man page (Heikki Vatiainen)
-+ - atmarp: atmarp -q qos_spec usage is obsolete; use atmarp -q qos qos_spec
-+ instead
-+ - /proc/atm/svc now prints "N/A@xxxxxxxx" instead of "Unassigned", with the
-+ address of the descriptor in xxxxxxxx
-+ - removed all traces of CONFIG_MMU_HACKS
-+ - obsoleted ATM_SETSC (single-copy control)
-+
-+
-+Version 0.62 to 0.63 (22-NOV-1999)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - horizon.c: cleared weird rate_lock/rates_lock patch conflict
-+ - saaldump output formatting was completely wrecked; added option -q for
-+ "quiet" output (no Q.2931 printing)
-+ - fixed LANE Ethernet interface MTU mapping (patch by Rob Scott)
-+ - atmsigd incorrectly rejected CONNECTION AVAILABLE (Q.2963.1)
-+ - SVC address was wrong in /proc/atm/arp if using private and public part
-+ - RESTART ACKNOWLEDGE was not sent with the correct global call reference
-+ value (reported by Peter Ryan)
-+ - zatm: usec timestamps need 64 division of x86, so this option must be
-+ unavailable on other architectures (reported by Matti Aarnio)
-+ - nicstar: added "fix3" and "fix4" (by Rui Prior)
-+ - LANE: non-proxy didn't filter packets coming from BUS (fix by Marko Kiiskila
-+ and Heikki Vatiainen)
-+
-+New features
-+------------
-+
-+ - upgraded to kernel version 2.3.28
-+ - atmtcp now reports VC open/close and generates timestamps (Note: the
-+ protocol used between the kernel and the atmtcp utility has changed)
-+ - new utility "natmtcp" which combines the ATMTCP protocol, ATMTCP ("virtual")
-+ interfaces, "real" ATM interfaces, and log files (experimental)
-+ - added ILMI 4.0 MIB variables atmfPortMyIdentifier and atmfMySystemIdentifier
-+ (by Thomas Seidel)
-+ - zeppelin: new command line option -I to select interface, allowing the use
-+ of LANE with multiple physical interfaces (by Heikki Vatiainen)
-+ - UltraSparc (sparc64) support (by Christophe Lizzi)
-+ - nicstar: added IDT77105 PHY support (by Greg Banks)
-+ - added utility loop25 to control ForeRunner LE loopback mode (by Greg Banks)
-+ - added support for DNS lookup of NSAP addresses (by Rui Prior)
-+ - added utility debug/dnstest (by Rui Prior)
-+
-+Other changes
-+-------------
-+
-+ - net/atm/tunable.h cleanup
-+ - removed SO_BCTXOPT, SO_BCRXOPT, and struct atm_buffconst
-+ - removed obsolete field "next" from struct atm_blli
-+ - changed potentially unaligned 32 bit accesses in SAAL to use read_netl
-+ (spotted by Christophe Lizzi)
-+ - added __attribute__ ((aligned(8))) to many structures containing structures
-+ which are shared by kernel and user space to enfore uniform packing on
-+ sparc64 (with help from Christophe Lizzi)
-+ - changed unsigned long to unsigned int at API for compatibility with
-+ architecture where sizeof(long) differs between user and kernel space
-+ (e.g. sparc64; suggested by Christophe Lizzi)
-+ - changed struct atmsvc_msg.{vcc,listen_vcc} from unsigned long to new type
-+ atm_kptr_int_t; changed atmsigd accordingly (NB: debugging output may strip
-+ upper bits)
-+ - changed various casts pointer->int to pointer->long->int (where the pointer
-+ does indeed only contain an int, e.g. in ioctl) for Alpha (reported by
-+ Matti Aarnio)
-+ - nicstar: changes card->membase from u32 to unsigned long
-+ - added __attribute__ ((unused)) to mpc.c and mpoa_caches.c to remove
-+ warnings about variables used only for debugging
-+ - drivers/atm/Config.in: changed ! "$foo" = "x" to "$foo" != "x"
-+
-+
-+Version 0.61 to 0.62 (27-AUG-1999)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - lib/diag.c:set_logfile didn't set log_to_initialized (reported by Lars
-+ Burgstahler)
-+ - sch_atm did not use classifiers attached to the x:0 class (reported by Lars
-+ Burgstahler)
-+ - net/atm/atm_misc.c EXPORT'ed atm_return, which is an inline function (fixed
-+ by Mitchell Blank)
-+ - work-around for SO_LEVEL range problems (by Mitchell Blank)
-+ - nicstar oops fix (by Rui Prior and John Brosnan)
-+ - nicstar should now work also as non-module (by Rui Prior)
-+ - nicstar fix for chip bug showing up on 64-bit CPCI bus systems (by Jay
-+ Talbott)
-+ - cleared confusion about inclusion of suni.o when building both nicstar and
-+ ENI
-+ - suni.c now always exports suni_init
-+ - various fixes and cleanups in the Madge drivers (by Giuliano Procida)
-+ - fixed new set of atm_pdu2truesize problems by introducing atm_alloc_charge
-+ which handles the allocation too (problem report and work-around by Alexey
-+ Kuznetsov)
-+ - getsockname on unbound PVC socket caused an oops
-+ - LANE: Token Ring source route bridge support fix (by Heikki Vatiainen)
-+
-+New features
-+------------
-+
-+ - upgraded to kernel version 2.3.15 (mainly by Alexey Kuznetsov and Mitchell
-+ Blank)
-+ - new socket option SO_ATMPVC to retrieve the "PVC" address (PVC & SVC) (based
-+ on a patch by Jay Talbott)
-+ - zeppelin -l now also accepts only the selector byte (by Robert Slaski)
-+
-+Other changes
-+-------------
-+
-+ - removed obsolete drivers/atm/nicstar.c.old_skb
-+ - removed all references to Arequipa (obsolete)
-+ - SO_BCTXOPT/SO_BCRXOPT are now obsolete, given that the final verdict on page
-+ flipping has been spoken in linux-kernel
-+ - interface statistics are now counted in struct net_device_stats instead of
-+ struct enet_statistics (by Mitchell Blank)
-+ - added pointer to mailing list to Documentation/atm.txt
-+ - Documentation/Configure.help now points to Documentation/atm.txt instead of
-+ directly to the Web page.
-+ - usage.tex: clarified the consequences of interrupting atmtcp
-+ - changed the highly misleading "atmarpd:ITF: no such interface" message to
-+ DIAG_DEBUG
-+
-+
-+Version 0.60 to 0.61 (11-JUN-1999)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - nicstar: driver sometimes crashed when starting for 25 Mbps cards (Rui
-+ Prior)
-+ - Zeitnet driver: uPD98402.c wasn't compiled with -DEXPORT_SYMTAB when
-+ building as a module
-+ - net/atm/raw.c didn't export atm_init_aal5, so ATMTCP didn't load as a module
-+ - atmtcp could still be accessed after loading and then unloading, yielding an
-+ Oops
-+
-+Other changes
-+-------------
-+
-+ - PPC configuration now also includes ATM (Jay Talbott)
-+ - lots of cleanup in the Madge drivers (Giuliano Procida)
-+ - tamed down a bit the tone in README
-+
-+
-+Version 0.59 to 0.60 (3-JUN-1999)
-+====================
-+
-+New features
-+------------
-+
-+ - upgraded to kernel version 2.3.3 (main change is slightly different wait
-+ queue handling; affects all drivers)
-+
-+Other changes
-+-------------
-+
-+ - mkdiff script now takes .bz2 kernel if no .gz can be found
-+ - made a few changes to the Madge drivers to reduce the number of warnings
-+
-+
-+Version 0.58 to 0.59 (3-JUN-1999)
-+====================
-+
-+New features
-+------------
-+
-+ - upgrade to kernel version 2.2.9
-+ - zeppelin now adjusts MTU when joining ELAN (Heikki Vatiainen)
-+
-+Other changes
-+-------------
-+
-+ - adjusted tr interface name limit to 8 characters (down from a wasteful 9)
-+
-+
-+Version 0.57 to 0.58 (3-JUN-1999)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - ENI drivers sometimes directly dereferenced pointers instead of using readl/
-+ writel (fixed by Mitchell Blank)
-+ - nicstar driver no longer uses floating point (fixed by Rui Prior)
-+ - nicstar driver may have refused CBR VC in some cases even with enough
-+ bandwidth available (fixed by Rui Prior)
-+ - usage.tex failed to build (fixed by Bill Brooks)
-+ - zeppelin got byte order in BLLI wrong (reported by Chas Williams; fixed by
-+ Mitchell Blank and Heikki Vatiainen)
-+ - zeppelin did not work when the host had multiple ATM addresses (reported by
-+ Benoit Steiner; fixed by Heikki Vatiainen)
-+ - zeppelin incorrectly parsed -i command line option (reported by Benoit
-+ Steiner; fixed by Heikki Vatiainen)
-+ - atm_connect_vcc and /proc/atm/pvc report AAL0 now properly (reported by Zhu
-+ Qun Ying and Uwe Dannowski)
-+
-+New features
-+------------
-+
-+ - nicstar driver now support SONET diagnostics (by Rui Prior)
-+ - nicstar driver now works on PowerPC (by Jay Talbott)
-+ - LANE now also supports Token Ring (Heikki Vatiainen, with testing by
-+ Holger Smolinski)
-+
-+Other changes
-+-------------
-+
-+ - major non-i386 architecture and other cleanup in ENI driver (by Mitchell
-+ Blank)
-+ - number of lec devices is 40+8 (lec0-lec39 are Ethernet and lec40-lec47 are
-+ Token Ring; Heikki Vatiainen)
-+ - lec.c and mpc.c now use atm_force_charge (Heikki Vatiainen)
-+ - net/802/tr.c limited interface names to 4 characters (fixed by Heikki
-+ Vatiainen)
-+ - zeppelin man page updated (Heikki Vatiainen)
-+ - "zeppelin.new" is now "zeppelin", the old "zeppelin" is gone
-+ - set "atm_connect" printk to KERN_DEBUG
-+ - removed ATM_SAAL from include/linux/atm.h (there never was any support for
-+ SAAL in the kernel)
-+
-+
-+Version 0.56 to 0.57 (18-MAY-1999)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atmarpd complained "invalid control msg type" when changing interface
-+ characteristics (reported by Soo-Khim Ho)
-+ - sch_atm didn't compile without CLIP (reported by Zhu Qun Ying)
-+ - LANE & MPOA: plugged a few memory leaks after failure to atm_charge (Heikki
-+ Vatiainen)
-+ - mpcd could not be killed if MPS's address was not known (fixed by Heikki
-+ Vatiainen)
-+ - nicstar: fixed the sleeping in interrupt issue (Rui Prior)
-+
-+New features
-+------------
-+
-+ - drivers for the Madge "Ambassador" and "Horizon [Ultra]" NICs, also known
-+ as Collage PCI 155 Server, 25, and 155 Client (by Giuliano Procida)
-+
-+Other changes
-+-------------
-+
-+ - MPOA code cleanup and debugging printks are now conditional (Heikki
-+ Vatiainen)
-+ - removed both led/USAGE files
-+ - removed the old atmsigd (was in atm/sig.old/)
-+ - nicstar driver now works around TSQ bug on older chips (77201) (by Rui
-+ Prior, with the detective work by Jay Talbott)
-+
-+
-+Version 0.55 to 0.56 (22-APR-1999)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atm/doc/Makefile assumed . to be included in PATH when invoking rlatex
-+ (fix by Heikki Vatiainen)
-+ - usage.txt leaked Arequipa configuration examples (fix by Heikki Vatiainen)
-+ - plugged a small memory leak in led.new which occurred when using the LANE
-+ client as a proxy (Heikki Vatiainen)
-+ - atmarpd crashed when printing ATMARP table entries with flag 0x8000 set
-+ (reported by Vinay Kulkarni)
-+ - CLIP interfaces now follow netmask changes
-+ - Nicstar: 25.6 Mbps cell rate corrected (by Rui Prior)
-+ - atm_equal could loop forever when comparing NSAP-encoded E.164 addresses
-+ (reported by Valley Zhizhkun)
-+ - [AP]F_ATM[PS]VC definitions in lib/atm.h conflicted with glibc 2.1
-+ (reported by Heikki Vatiainen and Jens Vagelpohl)
-+ - changed a few non-int main to int main (reported by Heikki Vatiainen)
-+ - changed lib/diag.c work with glibc 2.1, where stderr is no longer a constant
-+ (based on a patch by Heikki Vatiainen, also reported by Giuliano Procida)
-+ - make clean didn't remove qgen/q.test.c, qgen/qd.out.h, qgen/qd.test.c,
-+ sigd/q.out.h and sigd.old/q.out.h (reported by Giuliano Procida)
-+ - optional headers were installed even with system headers present if
-+ INSTROOT was different from / (reported by Giuliano Procida)
-+ - lib/stdint.h was used even on systems that had a "real" stdlib.h (based on a
-+ patch by Heikki Vatiainen, also reported by Giuliano Procida)
-+ - renamed net/atm/misc.c to atm_misc.c to avoid name clash with
-+ drivers/char/misc.c on include/linux/modules/misc.* (reported by Borek
-+ Lupomesky)
-+
-+New features
-+------------
-+
-+ - new ioctl ATM_GETLINKRATE to query link rate of an interface (suggested by
-+ Vitaly Lavrov)
-+ - new atmsigd.conf option io max_rate to specify rate to signal if
-+ application requests the "maximum"
-+ - added decription of CONFIG_ATM_LANE and CONFIG_ATM_MPOA to the kernel
-+ configuration help (Heikki Vatiainen)
-+ - added description of LANE to usage.tex (Heikki Vatiainen)
-+ - new function atm_force_charge to unconditionally add data to a receive
-+ buffer
-+
-+Other changes
-+-------------
-+
-+ - atmsigd now determines maximum link rate by querying interfaces (suggested
-+ by Vitaly Lavrov)
-+ - moved local address registry from a global table to VPCI structures
-+ - changed unknown net device notification severity from KERN_ERR to
-+ KERN_WARNING
-+ - atmarpd now overwrites old atmarpd.table on startup (it used to keep it
-+ until the first configuration change)
-+ - shutdown(2) of native ATM VCs now returns 0 instead of -EOPNOTSUPP
-+ (suggested by Mitchell Blank)
-+ - Nicstar: IRQ sharing is now allowed (by Rui Prior)
-+ - Nicstar: default maximum number of cards is now 4 (by Rui Prior)
-+ - Nicstar: when compiled as a module, the driver may no longer be removed
-+ while in use (by Rui Prior)
-+ - Nicstar: loss of cells is no longer reported as a plain CRC error (by Rui
-+ Prior)
-+ - atmsigd now always clears the endpoint reference flag if in UNI 3.0 mode
-+ (based on a patch by Heikki Vatiainen)
-+
-+
-+Version 0.54 to 0.55 (1-MAR-1999)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - SELECT_TOP_PCR didn't take intro account the "pcr" field, causing SVC with
-+ QoS pcr=xxx to be set up at link speed
-+ - qos_equal didn't detect differences in the "pcr" fields
-+ - sch_atm only accepted parent == root or absent (reported by John Loughney)
-+ - sch_atm:atm_tc_put accessed flow structure after kfree'ing it
-+ - sch_atm:atm_tc_change didn't put excess traffic class if class creation
-+ failed
-+ - sch_atm:atm_tc_dump_class didn't return class ID in tcm->tcm_handle
-+ - sch_atm:atm_tc_delete refused to delete classes because it expected
-+ ref == 1, but ref == 2 (reported by John Loughney)
-+
-+
-+Version 0.53 to 0.54 (19-FEB-1999)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - led.new: fixed build problem and warning (Heikki Vatiainen)
-+ - fixed LANE arp cache timeouts (Heikki Vatiainen)
-+ - ilmid -i option fell through into -l, causing logging to go into a file
-+ named after the local address
-+ - flipping the highest bit of ep_ref made it negative which was erroneously
-+ interpreted to mean "absent" (reported by Giuliano Procida and Chas
-+ Williams)
-+ - ilmid used the result of AsnOidCompare inconsistently, causing network
-+ prefix registration to fail with some switches (based on a patch by Giuliano
-+ Procida)
-+
-+New features
-+------------
-+
-+ - tc:q_atm: new option "clip" to select Classical IP processing of inbound
-+ traffic
-+ - new sch_atm class attribute TCA_ATM_STATE to retrieve VC state
-+
-+Other changes
-+-------------
-+
-+ - led.new: improved handling of LANE flush protocol (Heikki Vatiainen)
-+ - copied USAGE from led/ to led.new/
-+ - added description of ilmid options -i and -u to USAGE (Heikki Vatiainen)
-+ - ilmid -u now also works without -DDYNAMIC_UNI (all values but the default
-+ are refused)
-+ - tcpdump patch updated to tcpdump version 3.4 (Heikki Vatiainen)
-+ - updated "tc" patch to iproute2 version 2.1.99-now-ss990203
-+
-+
-+Version 0.52 to 0.53 (9-FEB-1999)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atmsigd: selecting the UNI version via compile-time options didn't yield
-+ the desired result in some cases (reported by Vinay Kulkarni and others)
-+ - ATM VCCs now use struct sock, as required by protocol-independent layer
-+ starting with recent 2.1 kernels (by Mitchell Blank)
-+ - led fixes: htons/htonl bugs in LANEv2 code, one duplicate close() removed
-+ (by Heikki Vatiainen)
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.2.1 kernel (by Mitchell Blank)
-+ - LANE: added bridging support (by Heikki Vatiainen)
-+ - complete rewrite of led (in led.new), which is now leaner and no longer
-+ contains code (c) Digital (by Heikki Vatiainen)
-+ - added macros for local AESA format and group addresses, and support in
-+ atm2text (by Heikki Vatiainen)
-+
-+Other changes
-+-------------
-+
-+ - ENI: buffer sizes are now limited to MID_MAX_BUF_SIZE even if max_sdu >
-+ MID_MAX_BUF_SIZE/3 (reported by Andrew Lunn)
-+ - plenty of NICStAR changes (Rui Prior and Mitchell Blank)
-+ - LANE interface to upper layer looks more like Ethernet, so adding bridge and
-+ 802.1Q support is easier, and tcpdump does not need any extra patches (by
-+ Heikki Vatiainen)
-+
-+
-+Version 0.51 to 0.52 (5-DEC-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atmsigd crashed when receiving STATUS ENQUIRY for call in Null state
-+ (reported by Heikki Vatiainen)
-+ - outbound endpoint reference didin't have the 16th bit toggled (fixed by
-+ Andrew Lunn)
-+ - lec.c: fixed a bug in kernel which could cause kernel part to deadlock when
-+ signalling was not started successfully (by Heikki Vatiainen)
-+ - MPOA: bug fixes and other changes, see atm/mpoa/CHANGELOG (by Heikki
-+ Vatiainen)
-+
-+New features
-+------------
-+
-+ - LANE: both kernel & daemon: support for ELANs which have MTUs greater than
-+ 1516 (by Eric H. Kinzie)
-+ - MPOA: can now ask LECS for configuratino information (by Heikki Vatiainen)
-+
-+Other changes
-+-------------
-+
-+ - zeppelin.8: updated (Heikki Vatiainen)
-+
-+
-+Version 0.50 to 0.51 (6-NOV-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atmsigd: typo prevented kernel.c from compiling with UNI30 disabled (fix by
-+ Andrew Lunn and Uwe Dannowski)
-+ - option -u crashed ilmid (reported by Michael Wolf)
-+
-+Other changes
-+-------------
-+
-+ - bearer capability is now set to "CBR" for CBR (suggested by Heikki
-+ Vatiainen)
-+
-+
-+Version 0.49 to 0.50 (3-NOV-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atmsigd didn't compile for -DUNI31 -DALLOW_UNI30 (fixed by Richard Gooch)
-+ - atmsigd crashed on as_bind and also had problems with as_connect after
-+ as_bind (reported by Heiko Krupp, Heikki Vatiainen, and many others)
-+
-+Other changes
-+-------------
-+
-+ - atmsigd now enables tracing by default (use -t 0 to turn it off)
-+ - added "terminate" message to test/isp
-+ - mpoad defaults to UBR if service category is absent (by Heikki Vatiainen)
-+ - LANE now avoids blocking intact connections when other connections have
-+ problems by queuing packets independently per destination while waiting for
-+ a connection (by Heikki Vatiainen)
-+
-+
-+Version 0.48 to 0.49 (1-NOV-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - q_atm.c passed TCA_ATM_EXCESS even if zero, while the kernel expected it
-+ to be absent in this case (changed q_atm.c)
-+ - q_atm: tc class show didn't separate fields properly with blanks
-+ - removed double inclusion of atm/config from mkdist
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.1.126 kernel
-+
-+Other changes
-+-------------
-+
-+ - "new" atmsigd is now the default (atm/sigd got renamed to atm/sigd.old,
-+ atm/sigd.new to atm/sigd)
-+ - updated extra/tc/README
-+
-+
-+Version 0.47 to 0.48 (30-OCT-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - ilmid didn't recognize the -u option
-+ - ATM_GETCIRANGE copied wrong amount of data (fix by Heikki Vatiainen)
-+ - sch_atm didn't compile without policing enabled (reported by Calin Poenaru)
-+ - BHLI octets: qgen/msg.fmt allowed nine instead of eight bytes for ISO and
-+ user specified, include/linux/atmsap.h:ATM_MAX_HLI was 7 instead of 8 (by
-+ Damian Gilmurray and Paisit Thamsakorn)
-+ - MPOA: bug fixes and other changes, see atm/mpoa/CHANGELOG (by Heikki
-+ Vatiainen)
-+
-+New features
-+------------
-+
-+ - ilmid: new option -i to set local IP address (suggested by Andrew May)
-+ - ilmid now also supports the MIB variables atmfAtmLayerMaxVpiBits and
-+ atmfAtmLayerMaxVciBits (based on a patch by Uwe Dannowski)
-+
-+Other changes
-+-------------
-+
-+ - ilmid: search for local IP address didn't consider LANE interfaces (lec*)
-+ - consolidated most of the various calls to gethostbyname and friends into
-+ text2ip (libatmd)
-+ - corrected some glitches in net/sched/sch_atm.c (untested)
-+ - removed debug/encopy, debug/endump, and debug/zndump from the distribution.
-+ They were almost useless and caused problems with make depend
-+ - SYMFILES in qgen/Makefile now determines location of atmsap.h at run time to
-+ avoid problems when kernel headers are not in /usr/include/linux (reported
-+ by Uwe Dannowski)
-+
-+
-+Version 0.46 to 0.47 (6-OCT-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - qgen didn't build for all UNI versions (fixed by Richard Gooch)
-+
-+New features
-+------------
-+
-+ - ilmid: new option -u to set UNI version (3.0, 3.1, or 4.0). Only available
-+ if compiled with -DDYNAMIC_UNI.
-+
-+Other changes
-+-------------
-+
-+ - ilmid: getIpAddr: improved robustness and added debugging output
-+
-+
-+Version 0.45 to 0.46 (5-OCT-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - ENI and ZATM driver used to read IRQ directly from PCI configuration,
-+ bypassing any fixups (reported by Richard Gooch)
-+ - atmsigd.new: removed "Known bug" memory leak (when tracing)
-+ - led/lec_ctrl.c: signalling bug fixed, max_sdu now has correct value instead
-+ of 1 (by Heikki Vatiainen, reported by Josh Baratz <jbaratz@lucentctc.com>
-+ and Wolfgang Platzer <wplatzer@iaik.tu-graz.ac.at>)
-+ - lots of MPOA bug fixes and other changes, see atm/mpoa/CHANGELOG (by Heikki
-+ Vatiainen)
-+ - atmsigd reported "Q.2931.1" when configured to support Q.2963.1
-+
-+New features
-+------------
-+
-+ - atmsigd.new now supports run-time configuration of the signaling protocol
-+ version (via atmsigd.conf)
-+
-+Other changes
-+-------------
-+
-+ - added 16W bursts to ENI burst size configuration (NB: 16W may actually be
-+ *slower* than 8W)
-+ - lec_ctrl.c: zeppelin now uses LE_REGISTER protocol when TLVs are associated
-+ with client's MAC address (by Heikki Vatiainen)
-+
-+
-+Version 0.44 to 0.45 (1-OCT-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - ENI driver didn't do four-word bursts on RX for sizes < 8 words
-+ - arequipad, atmarpd, bus, lecs, les, mpcd, sw_*, and zeppelin silently
-+ ignored extra command-line arguments instead of complaining
-+
-+New features
-+------------
-+
-+ - ENI: added configuration options to fine-tune burst sizes (in reponse to
-+ incompatibility found by Dave Airlie)
-+
-+Other changes
-+-------------
-+
-+ - changed the way how ATM-specific data is stored in skbs. Tentatively updated
-+ the the stack, including drivers. Use CONFIG_ATM_SKB to enable the new-style
-+ skbs.
-+ - Rules.make no longer discards the previous value of LDLIBS
-+ - sw_tcp now only establishes bi-directional VCs if both directions are really
-+ requested in the QoS structure
-+ - moved manual switch control from sw_tcp to the generic switch code; "tcpswc"
-+ is now called "swc", the corresponding switch.conf clause is now
-+ 'control <path>' instead of 'option control "<path>"'
-+
-+
-+Version 0.43 to 0.44 (24-SEP-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - CONNECT messages no longer contain the AAL type IE if EP ref is present and
-+ non-zero (reported by Heikki Vatiainen)
-+ - SSCOP: added mode for partial compatibility with Q.SAAL1 (to get rid of
-+ warnings reported by Heikki Vatiainen and of interoperability problems with
-+ Virata switches reported by Damian Gilmurray)
-+ - ilmid now returns a valid response for atmfMyIpNmAddress (by Uwe Dannowski)
-+ - configuration on-line help for CLIP didn't work because tag was different
-+ from configuration variable
-+ - atmsigd crashed when adding multiple local addresses on an interface
-+ (reported by Heiko Krupp)
-+ - atmaddr.8 said "ATMARP" in the header (reported by Hans Einsiedler)
-+ - net/atm/misc.c didn't include linux/config.h and linux/module.h, causing
-+ symbols to be missing when rebuilding the kernel after enabling modules
-+ (reported by Thomas Parvais)
-+
-+New features
-+------------
-+
-+ - new maintenance utility tcpswc to control sw_tcp "switches" (description at
-+ the end of switch/tcp/README)
-+ - added support for setting the CLP bit (untested; see doc/README.CLP)
-+ - added support for policing to the ATM qdisc (untested; see extra/tc/README)
-+ - ilmid: added support for atmfAtmLayerUniVersion (by Uwe Dannowski)
-+
-+Other changes
-+-------------
-+
-+ - updated the NICStAR driver to version 008b (by Rui Prior)
-+ - new switch fabric function fab_option to pass configuration options
-+ - atm2text now also supports unspecified and wildcard components in PVC
-+ addresses
-+ - added configuration option CONFIG_ATM_CLIP_NO_ICMP to discard packets for
-+ which no ATMARP entry exists silently instead of sending an ICMP (this is an
-+ ugly hack-around for the revalidation problem reported by Gerald Hanusch)
-+ - various minor documentation updates
-+ - atmarpd now sends InARP requests when active VC setup completes in order to
-+ tell the peer our IP address(es)
-+
-+
-+Version 0.42 to 0.43 (21-AUG-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - trying to use atmtcp when compiled as a module with the module not loaded
-+ crashed the kernel
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.1.117 kernel
-+ - included NICStAR driver by Rui Prior at INESC (this driver also includes
-+ parts of an earlier driver written by Matt Welsh, then enhanced by R. D.
-+ Rechenmacher and Jawaid Bazyar)
-+ - new atmsigd with support for multiple signaling entities (experimental)
-+
-+Other changes
-+-------------
-+
-+ - removed register dumping code from suni.c (leaked out into the distribution)
-+
-+
-+Version 0.41 to 0.42 (19-AUG-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atm.patch was out of sync again :-(
-+
-+
-+Version 0.40 to 0.41 (19-AUG-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - 0.40 contained an older atm.patch than the one that was supposed to go with
-+ it (some changes to sch_atm and MPOA were missing)
-+ - kernel didn't build with LANE enabled and MPOA disabled (fix by Mitchell
-+ Blank Jr)
-+
-+New features
-+------------
-+
-+ - MPOA now also supports CBR SVCs (by Heikki Vatiainen and Sampo Saaristo)
-+
-+Other changes
-+-------------
-+
-+ - atmtcp may work as a module (untested)
-+ - kernel code now uses capabilities instead of suser()
-+ - removed obsolete recycle_buffer code
-+ - distribution now also includes mkpatch, the script that's used to create
-+ atm.patch
-+
-+
-+Version 0.39 to 0.40 (13-AUG-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - ilmid defined the value of "invalid" as 0 instead of 2 (fix by Timo
-+ Parnanen)
-+ - bash-2 doesn't like for n in $(SUBDIR); ... if SUBDIR is undefined (fix
-+ by Heikki Vatiainen)
-+ - LANE still cleared ATM_VF_RELEASED instead of calling atm_async_release_vcc,
-+ which apparently led to stray kernel crashes in signaling (found with a lot
-+ of help from John McPherson)
-+ - ATM qdisc now properly re-allocates skb memory to grow headers, if necessary
-+ - atm/switch/Makefile didn't build SUBDIRS
-+ - atmarpd sent garbage ATM addresses in InARP responses over PVCs (reported by
-+ Stefan Keller-Tuberg)
-+
-+New features
-+------------
-+
-+ - MPOA (Multi-Protocol Over ATM) client support written by Heikki Vatiainen
-+ and Sampo Saaristo
-+ - LANE client (zeppelin) now also supports LANE2 (by Heikki Vatiainen)
-+
-+Other changes
-+-------------
-+
-+ - accept() now also returns on ATM_VF_CLOSE
-+ - ATM qdisc now uses the same data format on rtnetlink as other qdiscs; new
-+ option for user-provided headers
-+ - atm/switch can now use "external" routing (e.g. provided by the fab control)
-+
-+
-+Version 0.38 to 0.39 (4-AUG-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - added missing #include <atm.h> in tcpsw.c (fixed by Heikki Vatiainen)
-+ - atmsigd allowed both sides to initiate PCR modification; Q.2963.1 only
-+ allows the connection owner (i.e. the caller) to do this
-+ - atmarpd no longer tries to use incoming SVCs with zero backward bandwidth
-+ for ATMARP
-+ - ENI and ZATM drivers didn't invoke vcc->pop on dev->ops->send failure
-+ - make install didn't probe correctly for presence of /usr/include/stdint.h
-+ (needed on GLIBC 1 systems)
-+ - net/atm/resources.c didn't export bind_vcc to modules (fix by Oliver
-+ Frommel)
-+ - net/arpd/atmarp didn't build without make depend (reported by Stefano
-+ Giacometti)
-+ - clip_mkip zeroed vcc->rx_inuse and didn't take into account that clip_push
-+ calls atm_return, which subtracts from vcc->rx_inuse too
-+ - fixed typos in qgen/uni.h (and msg.fmt) for causes 38, 41, and 43
-+ - atmsigd wrote exit trace to stderr when it had a dump directory and vice
-+ versa
-+ - documentation still claimed that atmtcp yields messages at boot time
-+
-+New features
-+------------
-+
-+ - added flow to ATM VCC mapping queuing discipline (experimental)
-+ - module for setting up ATM PVC/SVC mappings with "tc" in extra/tc (see
-+ extra/tc/README)
-+ - atmarpd: new request type art_query to request resolution without VC setup
-+ - atmarp: new undocumented option -Q to test art_query
-+ - added ATMTCP interfaces that survive disconnects (persistent; new atmtcp(8)
-+ options -p and -r; new ioctls ATMTCP_CREATE and ATMTCP_REMOVE)
-+
-+Other changes
-+-------------
-+
-+ - zeppelin didn't explicitly set the AAL type for outbound connections (by
-+ Heikki Vatiainen)
-+ - CLIP also allows SVCs to have no idle timeout at all (timeout = 0)
-+ - moved SUNI private ioctls (SUNI_GETLOOP and SUNI_SETLOOP) from
-+ drivers/atm/suni.h to include/linux/atm_suni.h
-+ - atmarpd now shows QoS information for VCs where it differs from the default
-+ or where no default is applicable
-+ - removed the file atm/WARNING, which gave an overly pessimistic perspective
-+ of the state of things
-+ - switch: fab_op now returns the cause value plus (optionally) a pointer to
-+ diagnostics in the callback instead of a simple okay/not okay indication
-+ - updated and corrected the atmtcp man page
-+ - further cleanup of the build procedure
-+ - README now mainly refers to http://lrcwww.epfl.ch/linux-atm/info.html
-+ - updated and trimmed BUGS
-+ - added a note to CREDITS indicating its obsolescence
-+
-+
-+Version 0.37 to 0.38 (25-JUN-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - fixed the remaining few #include <linux/atm.h>
-+ - invoking fcntl() or socketpair() on an ATM socket caused an "Oops" (reported
-+ by Jonathan Chan)
-+ - CLIP PVCs caused an "Oops" when cat'ing /proc/atm/pvc (reported by Marko
-+ Kiiskila and Robert Olsson)
-+ - atm/qgen/default.nl wasn't removed after build failure
-+ - debugging switch (sw_debug) did not stop operations after the first error
-+ - svc_accept returned apparent success instead of -EAGAIN, usually leading to
-+ a later -ENOTCONN
-+ - ttcp.c didn't initialize port_name, leading to erratic behaviour when making
-+ slight changes to the build process
-+ - atm_pdu2truesize diverged from alloc_skb, leading to sudden failure of VCs
-+ or of ATMARP (reported by Robert Olsson)
-+ - corrected use of '~' when applied to unsigned longs representing memory
-+ addresses in aread, ENI, and ZATM (reported by Wai-Sun Chia)
-+ - atmtcp and LANE didn't use bind_vcc when setting up control VCs
-+ - atmtcp got ENOMEM/EBUSY wrong when failing to create an interface
-+ - sig level <level> in atmsigd.conf didn't affect UNI diagnostics
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.1.105 kernel
-+ - added ATMTCP "switch" in atm/switch/tcp
-+ - atmtcp: new mode -s to connect to an ATMTCP "switch"
-+ - atmtcp: new option -d for debugging output
-+ - added -b option (the usual "background") to switch/relay.c
-+
-+Other changes
-+-------------
-+
-+ - changed "PDU" to "SDU" in the atmtcp(8) man page
-+ - atmarpd now includes the interface netmask in ATMARP table dumps
-+ - added ATM devices also to the Alpha architecture, because at least ATMTCP
-+ works (by Wai-Sun Chia)
-+ - added the removal of -Wmissing-prototypes to the 0.37 changes
-+ - removed -Wcast-align from Rules.make because of a conflict with
-+ /usr/include/socketbits.h of glibc 2 on Alphas (reported by Wai-Sun Chia)
-+ - atmsigd.conf.4: documented that debug log stderr works too
-+ - sap_equal now also allows wildcard matches for BHLI (with SXE_COMPATIBLE)
-+ - atmsigd now uses -m <mode> instead of -N and -A
-+ - atmsigd.conf now uses sig mode <mode> instead of sig net
-+
-+
-+Version 0.36 to 0.37 (6-JUN-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - lib/atm.h defined AF_ATMPVC to 20, but the correct value is 8. Likewise,
-+ AF_ATMSVC should be 20, not 21. (Reported by Luke Diamand)
-+ - fixed bad ASN encoding in ilmid (by Vesa-Matti Puro)
-+ - make install and make instdirs didn't stop on error
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.1.104 kernel
-+ - included a script to demonstrate the debug switch (see switch/debug/README)
-+
-+Other changes
-+-------------
-+
-+ - moved definitions not used by the kernel from linux/atmarp.h to atmarp.h
-+ - removed linux/atm_stdint.h (linux/types.h has now caught up)
-+ - changed ENI and ZATM driver to use new PCI interface
-+ - net/atm/clip.c no longer uses ether_setup (suggested by Alexey Kuznetsov)
-+ - more header file cleanup (main change: applications should now
-+ #include <atm.h> instead of #include <linux/atm.h>)
-+ - removed -Wmissing-prototypes from Rules.make because of a conflict with
-+ include/linux/byteorder/swab.h
-+
-+
-+Version 0.35 to 0.36 (23-APR-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - changed the numeric values of PF/AF_ATMPVC/SVC and SOL_ATM/AAL to avoid
-+ conflicts with other allocations. This breaks binary compatibility with
-+ ATM programs compiled under older kernels
-+ - RESTART ACK was sent with the wrong class when acknowledging the restart of
-+ the indicated virtual channel (fix by Mohsen Souissi)
-+ - RELEASE was retransmitted forever (to avoid having to perform a RESTART),
-+ although it's sufficient to retransmit once and then drop the connection
-+ - esi.c checked the kernel version code without including linux/version.h
-+ - CLIP changes magically fixed hangs on SICGIFCONF (reported by Wayne Salamon)
-+ - atmsigd usually didn't set pvc.sap_family in ISP messages
-+
-+New features
-+------------
-+
-+ - added build-time option -DTHOMFLEX to send RESTART when SAAL comes up, which
-+ works around a bug in some Thomson Thomflex 5000 switches (by Mohsen
-+ Souissi)
-+ - atmtcp: new option "-i itf" to request a specific interface number
-+ - the "debug switch" (switch/debug/sw_debug) is now capable of successfully
-+ signaling a UNI 3.x call (see switch/debug/README for details)
-+
-+Other changes
-+-------------
-+
-+ - atm_equal can now also compare PVC addresses. The argument type has
-+ therefore been changed from struct sockaddr_atmsvc * to struct sockaddr *
-+ - moved driver-private data from skb->atm.* into skb->cb
-+ - complete redesign of communication between atmarp(8) and atmarpd(8) (now
-+ uses a UNIX domain socket; suggested by Alexey Kuznetsov)
-+ - atmarp -a now also produces correct output if atmarpd is running with -d
-+ - removed clip(8)
-+ - moved atmarp(8) from atm/ip into atm/arpd, removed atm/ip
-+ - /proc/atm/svc shows listening sockets again
-+ - cleaned up a few cases where diag(...,DIAG_FATAL,...) was followed by an
-+ "else" or a "return".
-+ - atmsigd now uses Unix domain sockets (instead of named pipes) to communicate
-+ with non-kernel ISP users (updated test/isp too)
-+ - net/atm/resources.c:atm_dev_register can now be asked to assign a specific
-+ interface number (-1 yields the old behaviour)
-+
-+
-+Version 0.34 to 0.35 (27-MAR-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - ilmid compared memcmp results with -1,1, which fails under optimization
-+ (fixed by Damian Gilmurray)
-+ - various fixes and cleanup in how CLIP interacts with the neighbour cache
-+ (spotted by Alexey Kuznetsov)
-+ - Rules.make complained about missing "optprocess" command on some occasions
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.1.90 kernel
-+ - added some components for ATM switch control (not properly integrated yet,
-+ so they don't do anything useful at the moment; written by Roman Pletka)
-+
-+Other changes
-+-------------
-+
-+ - eliminated various compiler warnings when compiling with glibc2
-+ - removed clip_hard_header (suggested by Alexey Kuznetsov)
-+
-+
-+Version 0.33 to 0.34 (13-MAR-1998)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - eni.c didn't include config.h (fix by Pete Wyckoff)
-+ - (yet another) VCC list handling bug (fixed by Heikki Vatiainen)
-+ - kernel also applied idle timeout to CLIP PVCs
-+ - make clean didn't remove test/errnos.inc
-+ - atmsigd errored as_connect and as_accept with as_close instead of as_error
-+ - eni: bandwidth was sometimes reserved for UBR VCs
-+ - eni: checking of bandwidth changes was broken
-+ - eni: error handling after failed bw change checks destroyed the free list
-+ - test/errnos.inc sometimes wasn't generated because of mtime granularity (fix
-+ by Brian Armstrong and Corinne Rosier)
-+ - fixed use of return code of get/put_user and copy_from/to_user
-+ - kernel: fixed a few minor race conditions
-+ - ATM_GETADDR left address list locked on fault
-+ - maximum length of high layer information was 7 bytes instead of 8 for ISO
-+ and User Specific high layer information (reported by Damian Gilmurray)
-+ - some tools didn't include errno.h although they use errno or Exxx
-+ - atmsigd usually accessed deallocated memory when writing traces, which
-+ sometimes led to crashes (reported by Heikki Vatiainen)
-+ - indentation of the first two lines of UNI signaling messages in traces was
-+ missing
-+ - LANE: duplicate data direct connections to entities where we already
-+ have a connection are now forbidden. LES and BUS can now co-reside.
-+ (Reported by Jean-Francois Moine, fixed by Heikki Vatiainen)
-+ - LANE: plugged a file descriptor leak (by Heikki Vatiainen)
-+ - atmsigd.conf.4 incorrectly stated that diagnostics must have a higher
-+ priority than the specified level to get printed (they're also printed if
-+ their priority is equal to that level)
-+ - zatm driver didn't virt_to_bus the back pointer of TX rings, leading to
-+ crash after sending the 32nd PDU of a VCC (reported by Ajay Bakre)
-+ - zatm_feedback sometimes returned with interrupts disabled
-+ - ENI driver didn't treat requests for UBR at link speed as "unlimited" and
-+ allocated one shaper for each such VCC
-+ - atm_async_release_vcc now has its own flag ATM_VF_CLOSE. Overloading
-+ ATM_VF_RELEASED caused hung SVCs under some conditions.
-+ - atmsigd sometimes released listening sockets before kernel completed its
-+ cleanup, yielding warnings and zombies
-+ - atmsigd accessed already deallocated data structures when handling
-+ unparseable signaling messages
-+
-+
-+New features
-+------------
-+
-+ - upgraded to the 2.1.79 kernel
-+ - CLIP now handles NETDEV_CHANGE (proposed by Pete Wyckoff; untested)
-+ - various minor signaling changes for operation as switch control
-+ - new device operation proc_read: device drivers can now register in /proc
-+ (e.g. /proc/atm/eni:0)
-+ - added some more BHLI definitions to include/atmsap.h, including draft
-+ mapping of well-known TCP/UDP port numbers
-+ - added support for TIOCOUTQ/TIOCINQ on native ATM
-+ - new library function sap_equal
-+ - added convenience function atmpvc_addr_in_use to linux/atm.h
-+ - major overhaul of "isp", which is now a good tool for signaling regression
-+ tests. See atm/test/README.isp
-+ - LANE can now be compiled as a kernel module (by Heikki Vatiainen)
-+ - new tool debug/svctor.c to torture signaling by setting up and releasing
-+ lots of SVCs (see the source for details)
-+
-+Other changes
-+-------------
-+
-+ - cleaned up the copying terms: libraries are now covered by LGPL instead of
-+ GPL and qgen doesn't "taint" the code it generates
-+ - atmarpd: IP addresses are now __u32 instead of unsigned long
-+ - atmarpd: changed printf("... %08x ...",(unsigned long) ptr) to %p ...",ptr
-+ - /proc support now allocates inode numbers dynamically
-+ - added comment to clarify motivation for useless buffer alignment in aread.c
-+ (reported by Jeon Jong Hwan)
-+ - suni.c and uPD98402.c: SONET_GETSTATZ no longer clears the statistics if the
-+ copy faults
-+ - ilmid should now work on any interface (patch by Heikki Vatiainen)
-+ - changed all __uNN of tools to uintNN_t for glibc2-compatibility
-+ - added stdint.h to lib for compatibility with future versions of glibc2
-+ - various other evil hacks in tools to make things compile with glibc2
-+ - the NIC debugging programs ed, encopy, endump, zndump, and znth are no
-+ longer built and installed by default
-+ - for compatibility with POSIX 1003.1g, accept now returns ECONNABORTED
-+ instead of ECONNREFUSED if connection is already gone (proposed by Heikki
-+ Vatiainen)
-+ - listening sockets now return instantly if the signaling demon dies
-+ - various minor LANE updates to track API changes (by Heikki Vatiainen)
-+ - SUNI now also warns if signal is missing at initialization time
-+ - zatm: added work-around for unfair buffer space accounting
-+ - clarified some of atmarpd's diagnostics
-+ - documentation updates
-+
-+
-+Version 0.32 to 0.33 (19-NOV-1997)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - SSCOP did poll sequence number comparisons in the (data) sequence number
-+ space, typically leading to periodic SSCOP restarts (reported by Heikki
-+ Vatiainen)
-+ - atmsigd now releases calls on receipt of STATUS with call state 0 (reported
-+ by Heikki Vatiainen)
-+ - qgen tried to print the names of unnamed groups (fix by Simon Leinen)
-+ - make clean in qgen left all the .c and .h files produced by qgen
-+ - minor fixes to signaling message format description (qgen/msg.fmt,
-+ previously qgen/uni*)
-+ - /usr/include/atm.h was calling itself "atmlib" (found by Leena Chandran)
-+ - atmsigd: the address format of the calling party number was used to
-+ determine the format of the called party number in a SETUP message
-+ - added some semicolons to Rules.make for bash 2.0 compatibility (by Tan Chang
-+ Hu and Rolf Kunisch)
-+ - select/poll indicated an exception when a non-blocking connect terminated.
-+ Now it indicates writability, and an error only if the connect failed.
-+ - LES/BUS can now co-exist at the same address (by Heikki Vatiainen)
-+ - fixed race condition between asynchronous release (e.g. on ATMARP idle timer
-+ expiration) and signaling demon response
-+ - fixed a typo "[itf]." instead of "[itf.]" in atmsigd.conf.8
-+ - "ATM drivers" kernel configuration section is no longer a top-level menu
-+ item but it's now under "Network devices"
-+ - sigd_close forgot to purge VCs not connected to devices (e.g. closing ones),
-+ so they hung
-+ - the list of unconnected VCs was sometimes garbled
-+ - atmsigd printed null string for as_itf_notify message name when debugging
-+ - Arequipa: check_aq_vcc also accepted VCs that were already released by
-+ signaling
-+ - ATM_VF_PARTIAL and ATM_VF_BOUND had the same value
-+ - atmaddr still used old calling convention of ATM_GETNAMES
-+ - the atmarpd man page referred to atmarpd as "atmsigd"
-+ - various atmtcp bug fixes
-+ - atm_recvmsg sometimes returned with interrupts disabled (reported by Pete
-+ Wyckoff)
-+ - fixed ttcp_atm dependencies (.depend contains dependencies for "ttcp.o")
-+ - UNI message format: "more" was missing for def_pck_size
-+ - eni/suni didn't compile as modules (fixed by Pete Wyckoff and Ladislav
-+ Lhotka)
-+ - further net/atm/Makefile cleanup
-+ - arequipa_close always left the socket with arequipa_expect enabled. Now it
-+ returns it to the previous state.
-+ - ENI driver was leaking buffer memory on failure of set_tx
-+ - atmarpd didn't print symbolic names of "new" flags (ATF_ARPSRV, etc.)
-+ - ATM ARP server didn't make client entries public (reported by Tom Mahieu)
-+ - drivers/atm/Config.in had extra "endmenu" (fixed by Ladislav Lhotka)
-+ - atmarpd got confused when receiving InARP reply without source ATM address
-+ - atmsigd sometimes didn't stop timers if Q.2963.1 wasn't enabled
-+ - when rejecting a call, the kernel freed the VCC twice
-+
-+New features
-+------------
-+
-+ - merged source tree (except Arequipa, single-copy, and various NIC drivers)
-+ with 2.1.65-Linus tree
-+ - qgen can now handle repeated information elements
-+ - added ATM_SETESI[F] ioctl and esi utility (boards without a real ESI in ROM
-+ should now set the default ESI to 0x000000000000)
-+ - new socket option SO_ATMSAP along with struct atm_sap (using a fixed-size
-+ BLLI array instead of the linked list in struct sockaddr_atmsvc)
-+ - added Q.2963.1 PCR modification in signaling and the ENI driver
-+ - aread: new option -c to print received data as characters (similar to od -c)
-+ - new tool test/align to test handling of mis-alignment in NIC drivers
-+ - atmsigd now supports policy restrictions for incoming/outgoing calls (see
-+ atmsigd.conf.4, "policy")
-+ - atmsigd can now also use a pair of named pipes (or, actually, any named
-+ object in the file system) for communicating with the user of signaling
-+ (normally the kernel)
-+ - new tool called "isp" (for "Internal Signaling Protocol") to talk ISP with
-+ atmsigd over named pipes
-+ - new functions sap2text and text2sap to converts SAPs to/from textual
-+ representation, and a sap(7) man page
-+ - new traffic parameter field "pcr" to indicate the desired PCR. min_pcr and
-+ max_pcr can the be used to indicate the acceptable range.
-+ - new function atm_pcr_goal to help drivers to interpret traffic parameters
-+
-+Other changes
-+-------------
-+
-+ - removed some more obsolete CLIP-related ioctls
-+ - qgen: simplified generation of engines with a prefix other than "q" or "qd"
-+ - ENI and ZATM drivers now use shareable interrupts
-+ - cleaned up some 32bit-isms in ENI driver
-+ - cleaned up several 32bit-isms in SSCOP (reported by Tan Chang Hu)
-+ - SSCOP: work-arounds for buggy ntohl prototype in some early versions of
-+ glibc (reported by Tan Chang Hu, further explored by David S. Miller and
-+ Richard Henderson)
-+ - started updating the ZATM driver for 2.1 (still crashes under load)
-+ - added missing 2.1 pieces in ENI's SUNI driver
-+ - added __initfunc and __initdata where appropriate
-+ - tools tree now compiles under 0.31 (2.0.25 kernel) and 0.33 (2.1.55 kernel)
-+ - gratuitous improvement of identifier tree allocation in qgen
-+ - the interface number is now optional for sonetdiag (like for atmdiag)
-+ - started implementing the kernel side of point-to-multipoint signaling
-+ support
-+ - /proc/atm/arp now displays "resolving" or "expired" (with the number of
-+ times the entry is referenced) instead of "incomplete".
-+ - moved ATM_MAX_BLLI from linux/atm.h to linux/atmsap.h
-+ - changed ttcp_atm to use SO_ATMSAP (if available) to set BHLI
-+ Note: ttcp_atm previously didn't use a BHLI, so old and new versions of
-+ ttcp_atm don't interoperate.
-+ - updated all other programs using SAPs too, except for LANE
-+ - ENI: failure to allocate a traffic shaper now yields EBUSY instead of EAGAIN
-+ - instead of just complaining, the ENI driver now handles all kinds of
-+ mis-alignment in the TX path properly
-+ - re-implemented send and receive side of Arequipa
-+ - merged qgen/uni3x and qgen/uni40 into msg.fmt
-+ - added missing Q.2931/UNI 4.0 items to qgen/q2931.h and msg.fmt
-+ - also added BLLI L3 H.310 codepoint with related encodings
-+ - various file name and identifier changes to give a more appropriate name
-+ (e.g. "uni" or "call") to something that's never been Q.2931
-+ - added library dependencies
-+ - atmsigd produces more readable and usually more comprehensive debugging
-+ output
-+ - atmsigd.conf.4 now mentions that -d is the debugging output addict's choice
-+ - all programs accepting -l syslog now also accept -l stderr. (This is useful
-+ for atmsigd if atmsigd.conf sets logging to something else.)
-+ - atmsigd now issues ATM_GETADDR ioctls on the signaling socket, not on the
-+ kernel socket
-+ - WARNING: text2qos: "pcr" is no longer a synonym for "max_pcr" !
-+ - text2qos now refuses min_pcr=max
-+ - device driver interface: removed vcc->peek; device drivers now choose their
-+ own allocation strategy (change motivated by bug report from Furquan Ansari)
-+ - drive driver interface: new helper functions atm_charge/atm_return to handle
-+ buffer space allocation
-+ - device driver interface: vcc->push no longer allocates buffer space. This is
-+ now done by the driver, via atm_charge
-+ - updated eni, zatm, and atmtcp to use the new mechanism
-+ - zero padding in eni driver failed due to mis-alignment on some systems
-+ (fixed by Pete Wyckoff)
-+ - various compiler warnings removed (by Pete Wyckoff)
-+ - removed support for pre-AREQUIPA_WORK mechanism
-+ - arequipa close mechanism cleanup
-+ - further cleaned up QOS parameter checking
-+ - new ISP message as_identify for parallel call processing (not supported yet)
-+ - zatm: renamed struct zatm_thist to struct zatm_t_hist after wondering
-+ myself what on earth "this t" could be ...
-+ - doc/Makefile now invokes dvips with -o
-+
-+
-+Version 0.31 to 0.32 (10-JUL-1997)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - manipulation of local ATM addresses didn't check for permission
-+
-+New features
-+------------
-+
-+ - ilmid now supports the system group and a couple of ILMI MIB objects (by
-+ Scott Shumate)
-+ - device and VCC allocation is now dynamic
-+ - E.164 addressing support and corrections to address coding in uni3x/uni40
-+ (by S. A. Wright, T. C. Jepsen, and Z. Zhang)
-+ - support for device de-allocation via per-device operation dev_close
-+
-+Other changes
-+-------------
-+
-+ - upgrade to kernel version 2.1.37
-+ - ENI driver cleanup (uses readl/writel, skb_put, etc.)
-+ - socket option handling has changed: optval is now void * (to improve
-+ compile-time type checking) and optlen is int (not int *) in getsockopt
-+ - socket option "names" now encode the level and the size (based on an idea of
-+ Elwyn Davies)
-+ - cleaned up some of the #includes in net/atm/proc.c
-+ - total rewrite of ATMTCP (now the data forwarding is done in user space,
-+ which makes things slower but a lot more flexible)
-+ - separated PDU parsing and printing from SSCOP state machine
-+ - new per-device operation dev_close to shut down devices
-+ - changed a few DIAG_WARNs to DIAG_INFO in ilmid
-+
-+Removed features
-+----------------
-+
-+ - polled ATM devices are no longer supported
-+ - CLIP is gone (use ATMARP instead)
-+ - Arequipa and LANE don't work yet (will come back later)
-+
-+
-+Version 0.30 to 0.31 (22-APR-1997)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atmarpd even refused IP address changes by the ATMARP server, which
-+ typically led to the creation of one extra SVC
-+ - ATMARP timeouts were computed at the wrong place (found by Gerald Hanusch)
-+ - aqtest's usage didn't mention the -v option
-+ - some tools used 0x%p instead of %p (which is fine in the kernel, by the way)
-+ - skb_migrate didn't update skb->list
-+ - zeppelin: incurred spurious core dumps on unsuccessful attempts to connect
-+ to LANE servers, ESI parsing from command line seg faulted, obtaining ESI
-+ from NIC left an ATM socket hanging, man page didn't describe all options
-+ (by Marko Kiiskila and Heikki Vatiainen)
-+
-+Other changes
-+-------------
-+
-+ - arequipa_close now only returns after the Arequipa connection has been
-+ successfully closed. This allows applications to reliably close and
-+ re-create Arequipa SVCs, e.g. to change the traffic parameters.
-+ - the arequipad operations 3rd party close and synchronization are now handled
-+ inside the kernel and survive arequipad restarts
-+
-+
-+Version 0.29 to 0.30 (10-APR-1997)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atmtcp didn't use vcc->push and therefore got the buffer usage accounting
-+ wrong (fix by Gerald Hanusch)
-+ - when closing a VC, the ENI driver didn't wait until all TX data has really
-+ left the board, which created a close/open race (found by Richard Jones)
-+ - SSCOP sometimes omitted the last element in a STAT PDU (fix - even with
-+ optimization vs. Q.2110 - by Ngo Bach Long)
-+ - atmarpd allowed ARP information to change permanent entries (found by Gerald
-+ Hanusch)
-+ - atmsigd's get_pvc used the maximum SDU size, thereby wasting buffer space
-+ very quickly, which led to signaling problems (reported by Richard Jones and
-+ Rik Wade)
-+ - oops, the BUGS file was always one version number ahead
-+ - ATMARP had a race between packets sent by the remote station and the
-+ ATMARP_MKIP ioctl. This caused the dreaded "unknown hw protocol 0xaaaa"
-+ error. (Finally fixed thanks to a dump provided by Patrick Flynn)
-+ - Arequipa had the same race for AREQUIPA_INCOMING. This probably caused the
-+ occasional "loss" (they were actually kept in vcc->recvq until the
-+ connection was closed) of the first packet(s).
-+
-+
-+Version 0.28 to 0.29 (4-APR-1997)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - saal/sscop.c: NORMALIZE macro was weird and broken (fix by Ngo Bach Long)
-+ - InARP queries didn't contain the target ATM address, even if it is known,
-+ which stretches the allowances RFC1577 makes for violating RFC1293 (found
-+ by Juha Heinanen)
-+ - tcp_conn_request: Arequipa modification to MTU size calculation used wrong
-+ socket (fix by Gerald Hanusch)
-+ - kernel ATMARP table handling had some obscure races
-+ - temporary work-around: added A2T_LOCAL when using A2T_NAME in atmsigd and
-+ atmarpd. Before, systems using ANS where the name server is reached via (IP
-+ over) ATM exhibited truly bizarre failure patterns when refreshing ATMARP
-+ entries. (With a lot of help from Juha Heinanen)
-+ - ditto for arequipad, although the effects were less dramatic
-+ - atmarpd: if not using -m, incoming connections for which a valid entry
-+ already existed (e.g. due to manual configuration) were not entered in the
-+ kernel ATMARP table until after the entry timed out for the first time (by
-+ Gerald Hanusch)
-+ - skb data areas are now aligned using skb_reserve instead of directly
-+ tampering with skb->data (and forgetting skb->tail in the process ...)
-+ (found by Uwe Dannowski)
-+
-+New features
-+------------
-+
-+ - atmarpd is now automatically notified of IP over ATM interfaces already
-+ existing at startup. This greatly simplifies the atmarpd restart ritual.
-+ (All ATMARP table entries and the default QoS are still lost, though.)
-+
-+Other changes
-+-------------
-+
-+ - cleaned up some weird and partially dead code in arpd/arp.c (found by
-+ Gerald Hanusch)
-+ - removed superfluous continue in arp.c:atmarp_setentry
-+ - device-driver specific declarations now reside in
-+ /usr/include/linux/atm_<drv_name>.h, so that disgusting hacks like
-+ #include "/usr/src/linux/..." can be avoided (based on proposal by Uwe
-+ Dannowski)
-+ - updated the list of supported NICs in README and the on-line help
-+ - arpd/atmarpd.8: documented that atmarpd -m may violate RFC1577 in subtle
-+ ways (pointed out by Gerald Hanusch)
-+ - updated MPR usage description to version 1.5 and removed mpr.patch
-+ - removed MEM_DEBUG from the build process (MPR 1.5 initializes itself
-+ automatically)
-+
-+
-+Version 0.27 to 0.28 (27-MAR-1997)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atmarpd restarted timers on as_valid -> as_valid transitions, illegally
-+ delayed necessary refreshes (reported by Juha Heinanen)
-+ - SSCOP cleared POLL timer on IDLE timer expiry (fix by Ngo Bach Long)
-+ - atmsigd didn't initialize "now" soon enough, causing an unnecessary
-+ retransmission of the first BGN PDU (by Ngo Bach Long)
-+ - atmsigd responded to RELEASE COMPLETE in ss_rel_ind with a STATUS instead of
-+ entering ss_wait_close (by Steve Pope)
-+
-+New features
-+------------
-+
-+ - new tool aqpvc to declare incoming Arequipa traffic on a PVC to the system
-+ (caveat: removing such a PVC can turn out to be surprisingly difficult)
-+
-+Other changes
-+-------------
-+
-+ - removed some useless code in atmarpd's handling of VC disconnects
-+ - removed unused signaling state ss_hold (equivalent to ss_wait_rel)
-+
-+
-+Version 0.26 to 0.27 (11-MAR-1997)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - oops, forgot to include atm/lib/rtf2e164_cc.pl in the distribution
-+ - atmsigd's VCI allocation in -N mode was too simplistic and failed after some
-+ signaling activity (reported by Richard Jones)
-+ - atm_connect was rejecting ATM_{VPI,VCI}_ANY
-+ - aq_prev in the list of Arequipa connections wasn't set properly, leading to
-+ random crashes when using Arequipa (found and fixed by Richard Jones, after
-+ weeks of tearing his hair out)
-+ - arequipa_close didn't remove the Arequipa route, which kept the upper layer
-+ protocol connection alive for a rather long time (reported by Richard Jones)
-+
-+New features
-+------------
-+
-+ - ilmid enhancements: vastly improved retry mechanism, workaround for a bug in
-+ the ATML Virata switch, -v option for very detailed debug output (Scott
-+ Shumate)
-+ - atmsigd now also accepts the signaling VC as a command line argument
-+ - qos2text appended colon to traffic type even if nothing else followed
-+ - new program debug/aqtest to test Arequipa (based on work by Mehdi Tazi)
-+
-+Other changes
-+-------------
-+
-+ - added a few missing NULLs to struct atmdev_ops initialization in various
-+ drivers (this change does not alter any semantics)
-+ - changed printk ...%lx... (unsigned long) ptr to ...%p... ptr at many
-+ places
-+ - removed atm/lib/rtf2cc.pl and atm/lib/cc.inc (they were only used by an
-+ interim version of cc_len)
-+ - atmarp's usage no longer contains lines longer than 80 characters
-+ - added get_logfile() and get_verbosity() to libatm (for ilmid, by Scott
-+ Shumate)
-+ - select() consumed CPU time unnecessarily if testing for one direction while
-+ there's a lot of activity in the other direction (e.g. atmarpd wasted cycles
-+ in select() for each outbound packet while waiting for ARP messages)
-+ - the value of ATM_AAL0 has changed (from zero to 13), so all programs using
-+ AAL0 need to be recompiled
-+ - MAX_ATM_QOS_LEN has changed, so most programs using qos2text need to be
-+ recompiled
-+ - the AAL can now also be set along with the QoS parameters. This approach
-+ should be used instead of specifying it in the socket() call.
-+ - if no AAL is specified, the kernel now defaults to AAL5 (was AAL0)
-+ - updated most demons, tools, and library functions to set the AAL along with
-+ the QoS parameters
-+
-+
-+Version 0.25 to 0.26 (29-JAN-1997)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - ATMARP VCCs could stay around forever even after timing out, because the
-+ process was not woken up.
-+ - the ATMARP "fix" in 0.25 introduced an infinite loop. Fixed that one too.
-+ - bit 8 in octets 6 and 7 of BLLI ("ext") were set to 1 instead of 0 when
-+ using ATM_L2_USER/ATM_L3_USER (reported by ukl2@rz.uni-karlsruhe.de)
-+ - qlib added silly offset (which fortunately happened to be zero most of the
-+ time) to dumps of large fields (fixed by Jean-Francois Moine)
-+ - IP over ATM restricted MTU changes to valid Ethernet MTU sizes
-+ - LANE: fixed two bugs that crashed zeppelin when the connection to the
-+ servers failed (by Marko Kiiskila)
-+
-+New features
-+------------
-+
-+ - lib/ans.c now properly computes the length of the country prefix of E.164
-+ addresses for reverse lookups (needs file /etc/e164_cc, see USAGE)
-+ - if the new -m option is set, atmarpd now merges incoming calls into the
-+ ATMARP table if the ATM address is known (see atmarpd.8 for details)
-+ - included an RPM spec file (this is still very experimental)
-+ - NICStAR driver now also works with IP over ATM (by Stuart Daniel)
-+ - usage.txt: added description of how to run ATM NICs back-to-back (by Richard
-+ Jones)
-+
-+Other changes
-+-------------
-+
-+ - signaling traces now also include SAAL up/down transitions
-+ - qgen no longer (unnecessarily) depends on libatm.a
-+ - started work on letting qgen handle items that appear at more than one
-+ place, e.g. repeated IEs (after an idea by Jean-Francois Moine)
-+ - did some cleanup and added comments to qlib.[ch]
-+ - added -m option to atmarp in config/redhat-4.0/atm.init
-+ - added new make target "filenames" to generate a list of all the files which
-+ are installed
-+ - config/redhat-4.0 now contains an example hosts.atm file and also a Makefile
-+ for more convenient installation
-+ - atmsigd now reads atmsigd.conf before parsing the command-line options,
-+ thereby allowing values set in the file to be superseeded
-+ - atmsigd now also logs the internal reference and the caller's address on
-+ calls establishment
-+ - ilmid: very dirty hack to give switches some time to process ILMI cold start
-+ (by Joseph Evans)
-+
-+
-+Version 0.24 to 0.25 (20-DEC-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - net/atm/atmarp.c:idle_timer_check only expired every other entry (reported
-+ by Marko Kiiskila)
-+
-+New features
-+------------
-+
-+ - LANE now also supports IPX (SNAP and 802.3; by Marko Kiiskila)
-+ - NICStAR driver now supports VPI != 0 and has configurable settings in
-+ nicstar.h (by Stuart Daniel)
-+
-+Other changes
-+-------------
-+
-+ - ENI: TX DMA scratch are is now stored per device. This should allow multiple
-+ NICs to coexist.
-+
-+
-+Version 0.23 to 0.24 (29-NOV-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atm/test/window.c was missing in 0.23
-+ - atm/debug/delay didn't build unless atm/lib headers were already installed
-+ in /usr/include
-+ - atm/debug/znth had undefined return value
-+ - SSCOP: fixed typo (that could probably kill the SSCOP connection in case of
-+ a retransmission); fix by Olivier Bonaventure
-+ - corrected unnecessarily large buffer allocation in zatm.c:pool_index (by
-+ Jonathan Larmour)
-+ - hosts2ans.pl generated reverse addresses for the domain "ATM.INT" instead of
-+ "ATMA.INT"
-+ - atmarpd "forgot" any pre-set QOS when receiving new ARP information for the
-+ respective entry (reported by Gerald Hanusch)
-+ - window scale didn't scale the window sent in the SYNACK packet (reported by
-+ Juan-Antonio Ibanez)
-+ - LANE: better connection failure handling in zeppelin (by Marko Kiiskila)
-+ - LEC kernel timer wasn't restarted when restarting zeppelin (found by Gerald
-+ Hanusch, fixed by Marko Kiiskila)
-+ - LANE: le_flush_request was sent too early when establishing connection (by
-+ Marko Kiiskila)
-+ - zeppelin stopped operation (unwantedly) in random cases when LANE servers
-+ were down (by Marko Kiiskila)
-+ - LANE: non-blocking connections, VCC and LE ARP timeouts, and TLV fields in
-+ LE_CONFIG_RESPONSE fixed (by Marko Kiiskila)
-+
-+New features
-+------------
-+
-+ - atm2text now also uses ANS
-+ - signaling traces now also contain error reports from qgen
-+ - added new build-time configuration option "CISCO" (in atm/Rules.make) to
-+ work around a bug in Cisco's point-to-multipoint signaling
-+ - included example configuration files for RedHat 4.0 (see
-+ atm/config/redhat-4.0/README)
-+
-+Other changes
-+-------------
-+
-+ - local variable "link" in atm/debug/delay.c:loop was shadowing "link" system
-+ call
-+ - cleaned up various Makefiles
-+ - qgen: bytes left in qet_space are now more meaningful
-+ - named (ANS) now also starts even if atmsigd is not running and retries to
-+ create the ATM socket in 15 minute intervals until is succeeds (by Marko
-+ Kiiskila)
-+ - LANE: (too) short le_flush_responses (Cisco 7010, sw ??.??) are now handled
-+ (by Marko Kiiskila)
-+
-+
-+Version 0.22 to 0.23 (16-NOV-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - fixed stupid typos in atm/lib/atmres.h and an unnecessary dependency on
-+ libresolv.a in atm/lib/Makefile (reported by Gerald Hanusch)
-+ - fixed warning about implicit declaration of function bigphysarea_init in
-+ init/main.c
-+ - I think I fixed the SSCOP VR(MR) problems that were first reported by
-+ Edouard Lamboray in '95, then by Heinz Schuerch, and that finally led to a
-+ total SSCOP breakdown (in 0.22) reported by Gerald Hanusch
-+
-+New features
-+------------
-+
-+ - integrated the IDT 77201 (NICStAR) driver by Matt Welsh and Stuart Daniel
-+ <stuartd@eecs.umich.edu>. Note that this driver currently only supports
-+ native ATM.
-+ - new throughput and latency benchmark test/window (by Matt Welsh)
-+
-+Other changes
-+-------------
-+
-+ - upgrade to kernel version 2.0.25
-+ - changed drivers/atm/eni.c:do_tx:dma to static in order to reduce kernel
-+ stack use (by 480 bytes). Note that this hack may crash systems with more
-+ than one ENI adapter.
-+ - qlib now also complains if changing a field without a fixed list of values
-+ - made a few changes to the native ATM data delivery path to handle some
-+ strangeness required by the IDT driver
-+
-+
-+Version 0.21 to 0.22 (13-NOV-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - (dummy) depend target was missing in atm/man (reported by Bernd Wolf)
-+ - net/atm/arequipa.c:make_aq_vcc didn't set ATM_VF_AQINUSE, thereby allowing
-+ race conditions to slip through
-+ - fixed a few potential race conditions when activating Arequipa
-+ - text2qos didn't complain if unit was omitted after multiplier, allowing
-+ misleading settings like pcr=50M (that's 19.2 Gbps)
-+ - SSCOP: took wrong branch if POLL_AFTER_RETRANSMISSION was enabled (fix by
-+ Jonathan Larmour)
-+ - SSCOP: rel_ind for ENDAK and BGREJ PDU in sscop_inconn was sent with "user"
-+ = 1 (must be 0 for "Source := SSCOP")
-+ - initialize_vr_mr now initializes vr_mr to a constant value (instead of
-+ garbage plus constant value)
-+ - atm_recvmsg now ignores msg->msg_name, as it should by POSIX 1003.1g (fix by
-+ Mike Wooten)
-+ - atm_sendmsg now fails with EISCONN instead of with EINVAL if msg->msg_name
-+ is set, as it should by POSIX 1003.1g (reported by Mike Wooten)
-+ - atm_recvmsg and atm_sendmsg now return ENOTCONN if not connected and
-+ EOPNOTSUP if flags are passed, as they should by POSIX 1003.1g
-+ - the QOS zeppelin uses for its connections can now be set with the option -q
-+ - atmarpd didn't include the QOS in PVC entries, so atmarp -a complained about
-+ them
-+
-+New features
-+------------
-+
-+ - kernel changes to support tcpdump with LANE (by Marko Kiiskila)
-+ - patch for tcpdump 3.0.4 (installed as tcpdump_atm) to support Classical IP
-+ and LANE (by Marko Kiiskila)
-+ - patch for BIND 4.9.5 to support ANS (ATM Name Service) functionality (by
-+ Marko Kiiskila)
-+ - added hierarchy extra/ for packages for which only patches are contained in
-+ the ATM on Linux distribution
-+ - enhanced text2atm to use ANS if local lookups fail (atm2text will be updated
-+ later)
-+ - wrote script extra/hosts2ans.pl to convert hosts.atm file to ANS zone files
-+
-+Other changes
-+-------------
-+
-+ - changed ATM_VF_AQINUSE to ATM_VF_AQDANG and changed aq_list membership to
-+ be for dangling VCs only
-+ - added the new command-line options to ttcp_atm's online help (finally !)
-+ - atm_sendmsg now returns error codes from the driver's send function
-+ (suggested by Jonathan Larmour)
-+ - text2qos now performs a syntax check if NULL is passed in the qos argument
-+ - various minor LANE cleanup (Marko Kiiskila)
-+ - upgraded to the latest version of t2a.pl
-+ - {A2T,T2A}_REMOTE is obsolete; instead, {A2T,T2A}_LOCAL should be used if
-+ ANS lookups are _not_ desired
-+
-+
-+Version 0.20 to 0.21 (18-OCT-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - net/atm/common.c:atm_connect didn't refuse traffic_class == ATM_NONE in both
-+ directions
-+ - include/linux/atmsvc.h:SELECT_TOP_PCR didn't default to ATM_MAX_PCR if
-+ min_pcr == 0 && max_pcr == 0
-+ - debug/delay swallowed one-byte packets
-+ - oops, forgot man/Makefile, so qos.7 wasn't installed
-+ - atmarpd left max_sdu at zero for automatically generated entries
-+ - atmarpd now only uses the default QOS if the traffic type is set in neither
-+ direction
-+ - signaling: if the listen queue was full, new connections were rejected with
-+ as_close instead of as_reject, thereby upsetting atmsigd
-+ - svc_accept didn't adjust the listen queue quota when rejecting incoming
-+ connection requests
-+ - fixed a few bad font selections in atmsigd(8)
-+
-+New features
-+------------
-+
-+ - included the window scale patch by Randy Scott <scottr@belle.bork.com> and
-+ Robert Hill <rhill@tisl.ukans.edu>
-+ - -q option for ilmid to set the QOS (like in atmsigd)
-+ - new script mkbindist to install the utilities into a tar.gz file
-+
-+Other changes
-+-------------
-+
-+ - debug/delay now prints the usage if invoked without arguments
-+ - removed the pretentious usec resolution for delays in debug/delay
-+ - removed the UBR semantics change warning
-+ - qos.7: clarified that bps are the user data rate
-+ - arequipa_attach_unchecked now also adjusts the upper layer MTU (which can
-+ violate RFC1122, but I'll tackle that later)
-+ - text2qos now also accepts fractional values, e.g. 9.6kbps
-+
-+
-+Version 0.19 to 0.20 (14-OCT-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - fixed a few typos and errors in the 0.18 to 0.19 change log
-+ - signaling traces only included hl_type bytes instead of hl_length
-+ bytes
-+ - TNET1570 driver: various fixes (DMA allocation, seg ring overflow,
-+ timeouts, etc.) (Christian Paetz)
-+ - TNET1570 driver: removed most compiler warnings (Christian Paetz)
-+ - listen() on an arequipa_preset() socket and arequipa_preset() on a listening
-+ socket now both return EPROTO
-+ - oops, forgot to enable the "rm" in make uninstall
-+ - kernel didn't set interface number field in act_create messages to atmarpd
-+
-+New features
-+------------
-+
-+ - added ioctl ATM_SETSC to enable or disable RX and TX single-copy per VC
-+ - new device driver operation change_qos (not yet implemented)
-+ - TNET1570 driver supports DEC Alphas and 64 bit PCI transfer (for CIA PCI
-+ chipsets) (Christian Paetz)
-+ - TNET1570 driver also supports the UniNET1570 board (Christian Paetz)
-+ - new functions text2qos and qos2text to convert between textual and binary
-+ QOS specifications (the format is described in man qos)
-+ - atmarp -q ip_addr qos sets the default QOS to use for all VCs created for
-+ that IP interface
-+ - new utility debug/delay to use machine as AAL5-level delay line
-+
-+Other changes
-+-------------
-+
-+ - NLPIDs and vendor-specific application identifiers are now collected in
-+ the new file /usr/include/atmsap.h
-+ - SO_ATMQOS now attempts to change the QOS settings when invoked on an active
-+ connection
-+ - included Matt Welsh's bigphysarea patch (this isn't related to ATM, but it
-+ keeps my development source tree simpler)
-+ - arequipa_preset now initializes max_sdu to RFC1626_MTU+RFC1483LLC_LEN if
-+ zero
-+ - atmarp: new option qos <spec> to set the QOS parameters (uses text2qos)
-+ Use of pcr <pcr> is deprecated.
-+ - ttcp_atm's -P option now also accepts a QOS specification string. (use of
-+ -P <number> is deprecated.
-+ - atmsigd: new option -q <qos> and configuration clause io qos <qos> to
-+ set the QOS of the signaling VC. Use of -P <pcr> or io pcr <pcr> is
-+ deprecated.
-+ - removed the backward compatibility #define class traffic_class in
-+ linux/atm.h
-+ - removed obsolete keywords from atmsigd.conf language
-+ - atmarp -a now also includes QOS parameters
-+ - UBR now respects txtp.max_pcr if set
-+ - new rules for the use of [rt]xtp.traffic_class: both fields must be either
-+ equal or zero, e.g. ATM_CBR in TX and ATM_UBR in RX no longer works
-+ - doc/usage.tex now points to the man pages instead of repeating their content
-+
-+
-+Version 0.18 to 0.19 (27-SEP-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - sscop.c:data_sd had a comparison inversed, so generation of USTAT PDUs was
-+ wrong in some cases (by Juhana Rasanen)
-+ - sigd_enq: accessed vcc->qos without checking for vcc == NULL, causing an
-+ "Oops" in atmaddr
-+ - svc_accept: generated a general protection fault when atmsigd was killed
-+ while a process was waiting for new incoming connections
-+ - atmaddr didn't zero the address structure before calling text2atm
-+ - LANE: fixed usage of kernel timers and LE_ARP_REQUESTs should now get sent
-+ until the entry expires or a response is received (by Marko Kiiskila)
-+ - less compiler warnings from LANE servers (Marko Kiiskila)
-+ - SSCOP: fixed SDU size in AA-RETRIEVE.indication (reported by Heinz Schuerch)
-+ - NULL encapsulation for ATMARP works now (reported by Gerald Hanusch)
-+ - fixed stray EINVAL from get{sock,peer}name on PVCs (reported by Gerald
-+ Hanusch)
-+ - clip now sets max_sdu to RFC1626_MTU+RFC1483LLC_LEN when using LLC/SNAP
-+ encapsulation
-+ - if parsing of a Q.2931 message fails, atmsigd now aborts the call instead of
-+ (stupidly) trying to process the incomplete and probably inconsistent data
-+ - SUNI driver didn't properly mask out unused highest bits of some statistics
-+ counters, thereby yielding absurdly high values
-+ - zatm: changed timing of RX channel closing, so the dreaded "can't close RX
-+ channel" message should be history
-+ - fixed race between Arequipa attachment due to packet reception and closing
-+ of the Arequipa VC
-+ - local address validity check (for ATM_???ADDR) was all wrong (reported by
-+ David Simpson)
-+ - message dumper ignored fatal errors if debugging was not enabled
-+
-+New features
-+------------
-+
-+ - man pages for lecs, les, bus, and zeppelin (Marko Kiiskila)
-+ - configuration file name for les and bus can be defined (Marko Kiiskila)
-+ - zatm: new kernel configuration option CONFIG_ATM_ZATM_EXACT_TS now supports
-+ reception timestamps with microsecond resolution (the accuracy is only in
-+ the ms range, though)
-+ - new utility znth (ZeitNet Timer History) to monitor timer synchronization
-+ - LANE now supports up to 4 LEC network interfaces (Marko Kiiskila)
-+ - the Q.2931 message parser now recovers nicely from IE errors, logs the
-+ event, and continues parsing. The higher layers of the signaling stack
-+ don't use this information yet, though.
-+
-+Other changes
-+-------------
-+
-+ - Arequipa's BHLI now uses a "vendor-specific application identifier" under
-+ the EPFL OUI
-+ - moved buffer/queue handling from lib/libatmd to saal/, because it is rather
-+ SSCOP-specific anyway
-+ - atm_release_vcc now complains if rx_inuse != 0 when closing (if this ever
-+ happens, it may point out dangerous races with upper layer protocols)
-+ - SO_ATMQOS now issues a warning when using UBR with {min,max}_pcr != 0
-+ - max_sdu is now set by atmarpd to MTU+RFC1483LLC_LEN (atmarp could still
-+ override this, if necessary)
-+ - atmdump: new option -i to display the arrival interval instead of the
-+ absolute time. Also changed the time format to be more readable.
-+ - updated the kernel configuration documentation to indicate that the SMC
-+ ATM Power155 adapters are compatible with the Efficient ENI-155
-+ - atmarpd now deletes the old table file (containing stale information) if
-+ invoked with -d (debug)
-+
-+
-+Version 0.17 to 0.18 (9-SEP-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atmsigd didn't respond to SETUP followed by RELEASE with a RELEASE COMPLETE
-+ - atmsigd now implements incoming call rejection (as_indicate -> as_close)
-+ - kernel now opens the VC before sending the as_accept. This a) allows to
-+ check if the parameters are acceptable, and b) avoids a race condition
-+ between the sender and the local VC open procedure, which frequently led to
-+ loss of the beginning of the first PDU sent on a new connection.
-+ - qdump: _q_parse used the wrong length when dumping variable-length fields,
-+ yielding a fatal internal error
-+ - clip didn't set rxtp.max_sdu
-+ - svc_accept didn't set ATM_VF_HASQOS, so getsockopt SO_ATMQOS didn't work
-+ (by Marko Kiiskila)
-+ - ttcp_atm calculated Mbps as 2^20 bits/sec instead of 10^6, thereby making
-+ all results come out approximately 5% too low (by Fraz Ahmad)
-+ - added $(LDLIBS) to linking of lane/lecs (by Lawrence MacIntyre)
-+ - interface number allocation in clip and atmarp did not check for collision
-+ with the respective other name space
-+ - atmarp's -c option didn't work when omitting the "atm" in the interface name
-+
-+New features
-+------------
-+
-+ - new man page: arequipad.8
-+
-+Other changes
-+-------------
-+
-+ - simplified the internal signaling protocol by adding the as_reject message
-+ (sent by kernel in response to as_indicate; not acknowledged by demon)
-+ - packets received from Arequipa are no longer forwarded to other hosts
-+ - further ilmid improvements to use RSTADDR less frequently (by Gerald
-+ Hanusch; with a slight modification)
-+
-+
-+Version 0.16 to 0.17 (2-SEP-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - lib/diag.c didn't fflush when logging to a file
-+ - arequipad didn't accept the -l option
-+ - qgen: possible weird crashes because second.c:find_required accessed
-+ value->tag even if vt_id
-+ - qgen: fixed wrong PC indication in one error message in _q_parse
-+ - make spotless didn't know about new $(*PGMS) targets
-+ - atmsigd: fixed memory leak when sending messages to the kernel
-+ - atmarpd: fixed memory leak when sending messages to the network
-+ - atmsigd: didn't send final as_close when kernel closed connection
-+ immediately after requesting it (as_connect)
-+ - several minor corrections
-+
-+New features
-+------------
-+
-+ - added make target "uninstall" to remove all files installed by
-+ make install
-+ - atmsigd has two new options: -D dump_dir to set the dump directory and
-+ -t trace_length to set the length of the trace buffer
-+ - wrote a few man pages: atmarp.8, atmarpd.8, atmsigd.8, atmsigd.conf.4
-+ - added automatic support for memory debugging if MPR is installed (and
-+ included a patch to make MPR 1.1 work with ELF). atmarpd and atmsigd
-+ currently use this feature.
-+
-+Other changes
-+-------------
-+
-+ - changed "class" to "traffic_class" everywhere
-+ - make install is now implemented in a more elegant way
-+ - q.dump is now much better at finding symbolic names for numbers
-+ - q.dump no longer prints zero-length fields
-+ - qgen no longer includes constructor "microcode" in dumper
-+ - atmarp now gives more informative error messages on ioctl failure
-+ - removed obsolete ioctls SIOCGIFATMADDR and SIOCSIFATMADDR
-+ - added hack to allow ilmid to be less hostile to locally configured addresses
-+ (by Gerald Hanusch; with slight modifications)
-+ - atmarpd now automatically sets ATF_PERM of PVC entries with NULL
-+ encapsulation
-+
-+
-+Version 0.15 to 0.16 (29-AUG-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - fixed an "unterminated character constant" warning by CPP in qgen/uni3x
-+ - atm/sigd/q2931.c always tried to read the Cause IE of RELEASE COMPLETE
-+ messages even if it wasn't included
-+ - LANE: fixed buffer allocation and VCC timeouts (Marko Kiiskila)
-+ - LANE: when connecting directly to LES, name of the ELAN was not set
-+ properly (discoverd by Gerald Hanusch; fixed by Marko Kiiskila)
-+ - LANE, ATMARP, signaling: control sockets didn't account for messages sent
-+ back from demons (fixed by Marko Kiiskila)
-+ - permanent ATMARP entries for SVCs were ignored if no ATMARP server was
-+ configured (reported by Gerald Hanusch)
-+ - atmarp option "temp" mis-spelled as "term" (fixed by Gerald Hanusch)
-+ - forgot to undo experimental rcvbuf/sndbuf change to unsigned long
-+ - make modules didn't generate ATM modules
-+ - atmtcp_attach_hook wasn't defined when compiling ATMTCP as a module
-+ - ATM patch set dev->ip_atm to ether_arp in net/ppp.c and net/eql.c, so they
-+ failed to work as modules
-+
-+New features
-+------------
-+
-+ - added LANE servers (LECS, LES, and BUS) by Marko Kiiskila
-+ - Rules.make: new variable INSTROOT for easier cross-installation
-+ - atmsigd: added option -P to set the maximum PCR used on the signaling VC
-+ - atmarp: added option "pcr <value>" (proposed by Gerald Hanusch)
-+ - added the usual -l <logfile> option to arequipad
-+
-+Other changes
-+-------------
-+
-+ - upgrade to kernel version 2.0.14
-+ - SVCs can now be bound with any SEL value
-+ - messages of size > quota can be sent if the send buffer is empty
-+ - ilmid no longer empties the address list when refreshing the NSAP address
-+ (by Gerald Hanusch)
-+ - LANE client should now survive network reset (e.g. restart) gracefully
-+ (Marko Kiiskila)
-+ - LANE: major cleanup of zeppelin code (Marko Kiiskila)
-+ - improved loadable module support for eni and zatm (i.e. loading works now)
-+ - the message dumper can now be linked to programs that also use the
-+ compilation/parsing functions
-+
-+
-+Version 0.14 to 0.15 (31-JUL-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - zatm: fixed traffic shaper settings for UBR (with a little help from Joern
-+ Wohlrab)
-+ - atmsigd compilation didn't use the same UNI version configuration as qgen
-+ - field "class" in struct atm_traform broke compilation of ATM applications
-+ written in C++, so it has been renamed to "traffic_class" (reported by
-+ Furquan Ansari)
-+ - AAL parameters IE wasn't included in CONNECT, which violated RFC1755
-+ (discovered by Robert Olsson)
-+ - zatm: removed broken sanity check for in-sequence skb delivery on RX
-+ - clip didn't have clip_open function, so SIOCSIFFLAGS on the interface failed
-+ with ENODEV
-+ - single-copy compiles again
-+ - zatm: driver doesn't pretend any longer to support single-copy (but
-+ single-copy will come back later)
-+ - QOS IE was sent with the wrong coding standard when using UNI 3.1 (with help
-+ from Fraz Ahmad)
-+ - zatm: forgot to remove some debugging code (around ZATM_TUNE)
-+ - qlib.c didn't zero the length array, leading to (rare) "not enough space"
-+ errors from QMSG (actually, the "break" mechanism seems to be flaky - will
-+ have to check)
-+ - fixed Arequipa race condition when the upper layer protocol and signaling
-+ decided to close the SVC at the same time
-+ - alloc_tx used to return NULL in out of memory conditions, thereby possibly
-+ hanging atm_sendmsg
-+
-+New features
-+------------
-+
-+ - ttcp_atm now also accepts names with -p
-+ - (finally !) added send/receive buffer limits and cleaned up the use of
-+ vcc->[rt]x_{inuse,quota}
-+ - added mkdiff script for automatic generation of diffs
-+ - Arequipa now works for PVCs too (but arequipad is now required for any
-+ use of Arequipa, not only for incoming connections)
-+
-+Other changes
-+-------------
-+
-+ - atm/atm-<version>.patch is now called atm/atm.patch (to make the diffs more
-+ useful)
-+ - the maximum SDU size is now checked in net/atm/common.c:adjust_tp
-+ - text2atm/atm2text now accepts/generates E.164 addresses with a leading +
-+ sign, as required by ANS (atm95-1532)
-+ - internal signaling protocol: added message as_error to un-overload as_close
-+ - internal signaling protocol: split as_establish into as_connect and
-+ as_accept
-+ - internal signaling prococol: as_close.reply no longer contains positive
-+ numbers
-+ - internal signaling prococol: as_bind now also carries the AAL type
-+ - atmsigd: now also checks the AAL type in as_bind messages
-+ - kernel signaling: a few minor changes
-+ - STANDARDS (i.e. UNI version) configuration option has been moved from
-+ atm/qgen/Makefile to atm/Rules.make
-+ - atmsigd's startup message now gives more useful indication of which UNI
-+ version(s) it supports
-+ - signaling no longer uses sa[sp]_[rt]xtp, so ...
-+ - sa[sp]_[rt]xtp is gone
-+ - removed atm/sigd/svc.c from the distribution. We now have many other tools
-+ for testing SVCs, so it's superfluous.
-+ - atmarpd: revalidation is now less frequent (use -DFREQUENT_REVAL for
-+ the faster timeout)
-+ - ioctl CLIP_PVC now returns the number of the new interface and clip prints
-+ its name to standard output (like atmarp -c)
-+ - clip now issues the CLIP_PVC ioctl after binding, which avoids wasting
-+ interface numbers on failed setup attempts
-+ - atmsigd -d now sets the debug level for qgen and SSCOP to DIAG_INFO, and
-+ doesn't set q_dump
-+ - zatm: added protection against I > M
-+ - atm_peek_aal5 now only aligns to page boundaries for pdu_size >= PAGE_SIZE
-+ - eni driver now spits out CRC error messages at most every other second
-+ - zatm driver now repeats RX error messages at most every other second
-+ - ttcp_atm now sleeps for a second after setting up an SVC, because the
-+ switch seems to lag behind (need to examine this further)
-+ - moved SAAL from sigd/ to saal/ (for sharing with UNI 4.0 signaling)
-+ - Arequipa sockets are now closed via arequipad instead of via atmsigd (new
-+ ioctls AREQUIPA_CTRL and AREQUIPA_CLS3RD)
-+ - various minor changes
-+
-+
-+Version 0.13 to 0.14 (19-JUL-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - LANE: reaction to LE_ARP_RESPONSE's wasn't always correct
-+ - LANE: compiler warnings fixed
-+ - LANE: comparing ATM addresses in checking whether connection is formed was
-+ wrong
-+ - zntune didn't divide by 1024 when displaying the "k"
-+ - .depend wasn't deleted by make spotless
-+ - ATM_GETSTAT and ATM_GETSTATZ used wrong argument type for coding ioctl
-+ number. WARNING: programs using ATM_GETSTAT{,Z} need to be recompiled.
-+ - requests to set up SVCs with ATM_NONE in both directions are now caught by
-+ svc_connect (used to yield an invalid SETUP message)
-+ - signaling: fixed connection identifier setting when acting as network side
-+ (fix by Elwyn B Davies)
-+ - ATMARP server ARP entries were undeletable
-+ - atmarp showed wrong argument in error message when given an invalid ATM
-+ address
-+ - zatm: do_tx left interrupts turned off when returning with RING_BUSY
-+ - LANE ARP hash table handling bugs fixed
-+ - atmarp: act_create is now only sent on interface creation
-+ - atmarp: act_down is now only sent once per transition
-+ - demon control SVCs are no longer closed when atmsigd dies (new VCC flag
-+ ATM_VF_META)
-+ - netdevice notifier is now properly unregistered when atmarpd goes down
-+ (not doing so caused endless loop in kernel on atmarpd restart)
-+ - sigd_enq{_atomic} never calls schedule()
-+ - atmsigd no longer "forgets" to bring up ARP server SVC before sending an
-+ InARP
-+ - atmarpd no longer dies with "timer in state 3" when the ARP server becomes
-+ unreachable
-+ - atm/atmarp.c: clip_create() now refuses creation of already existing
-+ interface
-+ - Documentation/Configure.help gave an obsolete URL for CONFIG_AREQUIPA
-+ and doc/usage.tex also mentioned the old file name
-+ - Arequipa didn't work in the outbound direction for TCP, because
-+ net/ipv4/tcp.c was missing in the kernel patch
-+ - drivers/atm/eni.c:foo raced with initialization of eni_boards if the
-+ board lost the signal _immediately_ after being initialized
-+ - atmarpd: fixed a few uninitialized entry->timer pointers (discovered by
-+ Gerald Hanusch)
-+ - atmarpd: arps entry should no longer get stuck in as_resolv
-+
-+New features
-+------------
-+
-+ - compiles on SparcLinux too (but only atmtcp works)
-+
-+Other changes
-+-------------
-+
-+ - upgrade to kernel version 2.0.0
-+ - BHLI matching changed: SAPs without BHLI are now incompatible with calls
-+ that specify a BHLI
-+ - LANE: interface stays up when zeppelin dies -> possibility for
-+ wrapper script around zeppelin
-+ - LANE: LUNI interoperability test (ATM Forum/96-0805) is now followed
-+ in setting ELAN name in LE_CONFIG_RESPONSE and LE_JOIN_RESPONSE,
-+ there is also a delay of 1 second before sending LE_CONFIG_REQUEST and
-+ LE_JOIN_REQUEST. This allows 'slow' LE servers to catch up.
-+ - LANE: no longer uses sa[sp]_[rt]xtp
-+ - LANE: now adjusts better to ATM address changes
-+ - zeppelin: new option -m to select debugging output
-+ - updated aping, aread, awrite, br, bw, atmdump, ilmid, atmarp, clip, atmarpd,
-+ and zeppelin to use setsockopt SO_ATMQOS
-+ - added option -x for ilmid to disable variable bindings (caused
-+ interoperability problems with certain switches, e.g. the LS100)
-+ - changed SO_CIRANGE into a pair of ioctls
-+ - changed return value of fetch() (passed to atm_vcc->peek) from unsigned long
-+ to __u32
-+ - atmarp now accepts arpsrv option also for -d
-+ - zatm driver can now also read ESIs of rev. 10 boards (with help from Nikos
-+ Anerousis)
-+ - awrite: fixed txtp.max_sdu calculation in awrite (was using uninitialized
-+ variable "offset")
-+ - atmarpd: IP interface removal now has the desired effect (used to do
-+ nothing)
-+ - atmarpd: now reports and ignores unexpected interface transitions
-+ - added sigd_enq_atomic for atomic sigd_enq (so that non-Arequipa SVCs can
-+ still use the "safe" but non-atomic version)
-+ - made SIOCGIF* failures in atmarpd non-fatal (itf.c:itf_up was handling them
-+ anyway)
-+ - moved Arequipa-specific code from net/atm/clip.c to net/atm/arequipa.c, and
-+ put code common to CLIP, Arequipa, and - to a lesser extent - ATMARP into
-+ net/atm/ipcommon.[ch]
-+ - Arequipa can now be complied without CLIP
-+ - various minor documentation changes
-+ - moved ATM device initialization from net/atm/pvc.c to drivers/block/genhd.c,
-+ where most other devices are initialized too
-+ - preparation for new binary locations: tools build process now knows about
-+ four types of programs: for booting, for system use, for users, and for
-+ internal use during build
-+ - make install now hides the for loops
-+ - non-user binaries are now installed in /usr/local/sbin
-+ - struct atm_iobuf.buffer is now of type void * (was int*). Also,
-+ ATM_GETNAMES now returns the length in bytes in that field.
-+
-+
-+Version 0.12 to 0.13 (7-JUN-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - BHLI type used the ATM_HL_* values (which are off by one) in qgen/uni3x
-+ - atmarpd ended up in a tight select-accept loop if atmsigd went away
-+ - removed sleep in ZATM's do_tx (so it works with IP over ATM again)
-+
-+New features
-+------------
-+
-+ - added experimental support for Application requested IP over ATM (Arequipa),
-+ prototyped by Jean-Michel Pittet
-+ - new traffic class ATM_ANYCLASS to accept incoming SVCs without looking at
-+ the traffic parameters
-+ - added (untested) support for SO_BCTXOPT/SO_BCRXOPT
-+
-+Other changes
-+-------------
-+
-+ - SVCs used to listen are now marked as "LISTEN" in /proc/atm/svc
-+ - added option -Q <atm_addr> to ttcp_atm to support AREQUIPA
-+ - cleaned up the FILE macro and removed atm_dir in net/atm/proc.c
-+
-+
-+Version 0.11 to 0.12 (3-JUN-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - atm/lib/Makefile: had to comment out PGMS=test
-+ - distribution didn't include atm/doc/usage.txt
-+ - patch didn't include arch/i386/config.in
-+ - return 0; was missing at the end of net/atm/mmuio.c:mmu_step
-+ - atm/ilmid didn't install into INSTBIN; also made some other Makefile
-+ changes
-+ - read() returned garbage instead of error when network drops connections
-+ - POLL_AFTER_RETRANSMISSION in SSCOP didn't even compile
-+ - SVCs: bind to wildcard addresses should now work even if no local address
-+ is known yet
-+ - make clean in atm/qgen left some dirt
-+ - ATM drivers didn't free skbs when detecting an error in TX direction
-+ - SIOCMKCLIP was in the wrong #ifdef, so CLIP had to be enabled to make
-+ ATMARP usable
-+ - signaling didn't respond properly to messages with non-existent call
-+ reference
-+
-+New features
-+------------
-+
-+ - merged in LAN Emulation client support written by Marko Kiiskila
-+ - new socket option SO_ATMQOS at SOL_ATM to set/get QOS parameters
-+
-+Other changes
-+-------------
-+
-+ - t2a.pl now also works with Perl 5.001
-+ - changed the TX side of the ZATM driver to use a ring instead of a list in
-+ order to improve stability and throughput (needs some more testing)
-+
-+
-+Version 0.10 to 0.11 (21-MAY-1996)
-+====================
-+
-+Bug fixes
-+---------
-+
-+ - README.DRIVERS still referenced INSTALL (it's now in USAGE)
-+ - sap_decode didn't clear BLLI part of address structure
-+ - trying to connect to NULL address fails locally instead of yielding an
-+ invalid SETUP message
-+ - bind now properly sets the local address
-+ - SVC getname now returns the traffic parameters
-+ - oops, zatm open_tx didn't return PCR
-+ - awrite printed errors for connect() as "bind: ..."
-+ - atmsigd no longer generates dummy call references (0x7fffff)
-+ - atmtcp: changed a few kfree_skb to dev_kfree_skb, which should make it
-+ work better (does anybody care to try ?)
-+ - some more dev_kfree_skb fixed for control messages from or to demons (led
-+ to some minor memory leaks)
-+ - various major fixes for CBR SVCs
-+ - RELEASE was signaled for SVCs before all data was sent
-+ - single copy tried to access mem_map with user space addresses, leading to
-+ crashes or worse
-+ - zatm: sleep_on was racing with TX completion in close_tx, leading to hangs
-+ - zatm: now fails attempts to open AAL0 VCs (used to accept them and to
-+ crash later)
-+ - BHLI encoding/decoding was broken in several ways
-+
-+New features
-+------------
-+
-+ - hacked in primitive leaf-only p2m support (based on an idea by Marko
-+ Kiiskil{)
-+ - the socket layer, and the zatm, eni, and atmtcp drivers now support
-+ two-phase connect
-+ - PVCs now respect max_pcr (SVCs can't for now)
-+ - lib/diag.c can now also log to a file or to syslog, and atmarpd, atmsigd,
-+ and ilmid now have a -l option to use that
-+ - new option -c config_file for atmsigd
-+ - zatm and atmtcp now also support timestamps (but zatm timestamps can be
-+ improved a lot by using the timestamps the uPD98401 generates)
-+ - Classical IP over ATM support is now configurable
-+ - added on-line help texts for configuration
-+ - added atm/test/aping, a round-trip tester for PVCs
-+ - added "flags" field to struct atm_dev and to atm_dev_register, on request
-+ by Bureau 13
-+
-+Other changes
-+-------------
-+
-+ - past versions of the BUGS list aren't included in the distribution anymore
-+ because I didn't update them anyway
-+ - invalid connect() calls now return an error instead of panicing atmsigd
-+ - text2atm no longer clobbers sas_addr.{blli,bhli}
-+ - greatly simplified zatm traffic shaper settings calculation (and it's
-+ better than before too)
-+ - atmsigd: diagnostics class "sig" (in atmsigd.conf) now also includes "SAP"
-+ - DPRINTK now uses GNU-specific #define foo(bar...)
-+ - signaling: PCR is now also indicated (0) for directions in which ATM_NONE
-+ is requested, which is probably "cleaner" (for CBR)
-+ - added logging priorities to most printks
-+ - the default location for atmsigd.conf changed from . to /etc
-+ - ipv4/af_inet.c: atmtcp_attach_hook is now only included when using ATM over
-+ TCP
-+ - configuration options for extended driver debugging, (old) CLIP, and
-+ ATM over TCP are turned off by default
-+
-+
-+Version 0.9 to 0.10 (21-MAR-1996)
-+===================
-+
-+Bug fixes
-+---------
-+
-+ - zatm: deallocated UBR shaper when closing UBR VC, which the other UBR VCs
-+ didn't really appreciate
-+ - fixed nasty memory leak for native ATM (spotted by Rolf Fiedler)
-+
-+New features
-+------------
-+
-+ - added Rolf Fiedler's driver for his adapter based on the TI TNETA1570
-+ - single-copy is back again !
-+
-+Other changes
-+-------------
-+
-+ - eni buffers are now slightly (50%) bigger, allowing for more effective
-+ overlapped operations
-+ - documented zntune
-+
-+
-+Version 0.8 to 0.9 (14-MAR-1996)
-+==================
-+
-+Bug fixes
-+---------
-+
-+ - oops, accidently removed ZN1221 from drivers/pci/pci.c (so /proc/pci
-+ reported it as "unknown")
-+ - sigd didn't poll for the default interface on startup
-+ - atmarpd didn't initialize timer field in newly allocated table entries,
-+ which led to crashes
-+ - removed a few stray debugging printks in net/atm/svc.c:svc_bind
-+ - ATMARP tried to send queued packet before adding new table entry, so the
-+ packet was always discarded
-+ - sigd/sap.c: didn't allow to use different traffic classes for fwd and bwd
-+ direction
-+ - atm2text accepted SVC addresses of all zeroes
-+ - atmsigd didn't refresh its local address list properly after ilmid restart
-+ - net/atm/common.c: returned positive error codes (-vcc->reply) instead of
-+ negative ones
-+ - forgot to include maint/zntune.c in the distribution
-+
-+New features
-+------------
-+
-+ - sigd/svc now accepts ATM addresses in all formats supported by text2atm
-+
-+Other changes
-+-------------
-+
-+ - upgraded to kernel version 1.3.73
-+ - the called party number must now match the local address (if bound)
-+ - renamed ttcp.atm to ttcp_atm
-+ - all executables are now explicitly linked (so make works even without
-+ dependencies)
-+
-+
-+Version 0.7 to 0.8 (12-MAR-1996)
-+==================
-+
-+Bug fixes
-+---------
-+
-+ - fixed stray segmentation violation in arpd/arp.c:learn
-+ - fixed coding standard of the QoS IE if using UNI 3.0 (and made coding
-+ standard variable)
-+ - made coding standard variable for Cause IE
-+ - SSCOP didn't properly set N(MR)
-+ - list elements in STAT PDUs had host byte order
-+ - SSCF didn't call sscop_estab_resp on restart (AA-EST.ind in 1/1)
-+ - signaling didn't handle SAPs with >= 2 BLLI IEs properly
-+ - uni3x: iso_hli and user_hli were confined to 7 bytes, but UNI allows up to 8
-+ - q_read choked on non-variable-length fields
-+ - qgen sometimes didn't read all IEs of a signaling message
-+ - fixed usage line of test/bw
-+ - qgen no longer complains about missing required fields after a break
-+ - fixed compiler warning in zntune.c
-+ - fixed ATMARP table additions (caused GPF when flushing ATMARP entry at
-+ the end of the table and possibly other problems)
-+ - qgen: q_put or'ed data instead of overwriting it, which caused problems
-+ only on surprisingly few occasions
-+
-+New features
-+------------
-+
-+ - atm2text and text2atm now also do name lookups via a /etc/hosts.atm file
-+ - atmaddr, atmarpd, and atmsigd now pretty-print addresses using name
-+ translation (unless invoked with -n)
-+ - atmarpd now dumps its table into /var/run/atmarpd.table and atmarp -a
-+ reads it from there
-+ - started modularizing the ENI and ZATM drivers
-+ - ilmid and atmsigd now support multiple interfaces (untested)
-+
-+Other changes
-+-------------
-+
-+ - the documentation is now available in LaTeX and in ASCII
-+ - rewrote most of the SAP handling code (now everything is in sigd/sap.c)
-+ - proto.c:lookup_sap now picks wildcard SAP last
-+ - signaling always includes SSCS type = 0 in SETUP messages (for LANE)
-+ - changed the message format for the the kernel-demon signaling protocol
-+ - qgen is now a bit more tolerant when being fed with bad data
-+ - qgen now assumes that q_report(Q_FATAL,...) doesn't return
-+ - marked sigd/test.c as obsolete
-+ - svc_accept failing in atm_connect no longer returns success
-+ - atmsigd -n is now atmsigd -N
-+ - qgen now puts the PC in q.out.c and qd.out.c at the beginning of the code
-+ line and not on a line by itself
-+
-+
-+Version 0.6 to 0.7 (2-FEB-1996)
-+==================
-+
-+Bug fixes
-+---------
-+
-+ - removed TTL setting ioctl (1234) used for something entirely unrelated to
-+ ATM, oops
-+ - changed kfree_skb in atm_pop_raw to dev_kfree_skb (this fixes the socket
-+ "leak")
-+ - more unusual configurations (no PCI, no IP, no /proc) should compile now
-+ - atm_equal didn't recognize wildcards in embedded E.164 addresses
-+ - fixed net/atm/proc.c:svc_addr (too many bugs to mention)
-+ - atmarpd didn't check for ARP traffic on inbound connections
-+ - atmarpd didn't properly merge incoming connections with existing entries
-+ - various other ATMARP fixes
-+ - free list was too short in ENI driver for worst case fragmentation on
-+ 2 MB boards
-+ - signaling didn't set ISO/IEC TR9577 IPI and NLPID correctly in active open
-+ - getname looked at *sockaddr_len, which is uninitialized (need to fix this
-+ later in the common socket code)
-+ - SSCOP generated incorrect error code ("1" instead of "B") for BGN PDU
-+ problems
-+
-+New features
-+------------
-+
-+ - new ioctls ATM_GETADDR, ATM_RSTADDR, ATM_ADDADDR, and ATM_DELADDR to
-+ manage local ATM addresses
-+ - signaling now handles incoming RESTART, SAAL failure, and SAAL
-+ re-establishment
-+ - ATMARP now times out idle connection; ATMARP_MKIP ioctl takes a timeout
-+ argument
-+ - ATMARP (kernel) now queues one skb per pending ARP request and limits the
-+ rate of requests for the same address (default 2 req/min)
-+ - atmsigd now prints cause values when receiving a RELEASE or a RELEASE
-+ COMPLETE and returns more informative error codes
-+ - atmarpd falls back to PVC-only operation if signaling is unavailable at
-+ startup
-+ - kernel can now assign next free number on IP interface creation (atmarp
-+ prints the interface name)
-+ - qgen -D generates a Q.2931 message dumper (see USAGE for details)
-+ - qgen now checks for proper use of repetition indicator (but doesn't
-+ support repeated IEs yet)
-+ - protocols and device drivers can now use their own memory allocator in the
-+ TX direction by changing vcc->alloc_tx
-+
-+Other changes
-+-------------
-+
-+ - upgraded to kernel version 1.3.53
-+ - build process now uses Perl
-+ - ATM ioctls writing back data now always return the size of the data
-+ structure written
-+ - struct atmif_sioc now has a length field (recompile all atmarpd, ilmid,
-+ debug/ed, and everything in maint)
-+ - PHY driver no longer has to check validity (permissions and access) for
-+ "standard" ioctls
-+ - signaling should now also work on an interface > 0 (but there's still only
-+ one interface using signaling per host)
-+ - make install now adds /usr/include/atm.h and /usr/include/atmd.h
-+ - atmarpd now also displays if SVC has been opened actively or passively
-+ - atmaddr(8) now uses new ioctls and has different command-line syntax
-+ and even has a man page
-+ - example IP addresses in USAGE now conform to RFC1597
-+ - diagnostics now also include the application name (optional)
-+
-+
-+Version 0.5 to 0.6 (21-DEC-1995)
-+==================
-+
-+Bug fixes
-+---------
-+
-+ - ARP ioctls stopped working for most non-ATM devices, oops
-+ - ATMTCP driver counted lack of memory as rx_err instead of rx_drop
-+ - select on driver using polling may have hung
-+ - atmarp man page and usage didn't indicate that the interface number is
-+ optional
-+ - restricted atmarpd and signaling control, and SIOCSIFATMADDR to the super
-+ user
-+ - atmtcp: fixed handling of VPI/VCI <= 0 for setsockopt(SO_CIRANGE)
-+ - eni and zn driver had static UBR shaper pointer, making it difficult to have
-+ more than one such device per system
-+ - eni driver initialization didn't work properly in systems with ASIC Tonga
-+ - suni.[ch]: confused MC (Master Config) and MCT (Master ConTrol) registers
-+ - (SVC) accept now returns PVC -EAGAIN as -EBUSY because the operation cannot
-+ be retried
-+ - qgen: fixed several bugs in case handling (and made defaults work for
-+ parsing)
-+ - svc_dup passed PF_ATMSVC instead of AAL to svc_create
-+ - plugged a few skb leaks in svc_accept
-+ - text2atm didn't properly NUL-terminate E.164 addresses
-+
-+New features
-+------------
-+
-+ - ZN1221 driver works partially for AAL5 (still hangs after a few dozen MB)
-+ (also wrote maint/zntune to monitor/adjust free buffer pools)
-+ - ENI driver now supports new Tonga ASIC boards
-+ - added Scott Shumate's ILMI demon (for automatic address registration)
-+ - text2atm: added wildcard support for SVCs (syntax: addr/bits)
-+ - new library function atm_equal to compare SVC addresses
-+ - new ioctl ATM_GETTYPE to obtain interface type name
-+ - new ioctl ATM_GETESI to obtain ESI (parallels /proc/atm/devices)
-+ - new ioctls SONET_SETFRAMING, SONET_GETFRAMING, and SONET_GETFRSENSE to
-+ handle SONET vs. SDH framing
-+ - added socket option SO_AALTYPE (SOL_AAL) to query AAL type (getsockopt
-+ only)
-+ - signaling demon is now notified on address changes (new message
-+ as_itf_notify)
-+
-+Other changes
-+-------------
-+
-+ - known bugs are now listed in a file called BUGS
-+ - all utility programs (aread, awrite, atmdump, br, bw, clip, ttcp) now use
-+ the notation [itf.]vpi.vci for PVCs (was itf vpi vci , except for ttcp,
-+ where it was only vpi vci (no itf))
-+ - all ioctl values have changed
-+ Note: most programs have to be recompiled because of this
-+ - sigd and arpd now register their control sockets via ioctls
-+ - (old) clip now creates interfaces with an ioctl
-+ - text2atm now returns the wildcard length, i.e. a non-zero return value
-+ no longer implies failure
-+ - push_oam now returns an int (was void)
-+ - push_oam now has several flags (in a bit set) instead of the immed
-+ argument
-+ - the peek function must now update the statistics if it rejects a packet
-+ - (ATM device) close is now only invoked after a successful open
-+ - the SUNI_GETLOOP ioctl now has an int * argument (was unsigned long *)
-+ - uPD98402 driver no longer tries to detect return of the signal (didn't
-+ work anyway - would have to sample section errors)
-+ - ATMARP no longer supports mixed PVC/SVC entries (I'm sure this will be
-+ missed a lot :-)
-+ - ATMARP no longer supports "IP address discovery" via InARP for PVCs
-+ (maybe later)
-+ - specifying an invalid AAL now yields EPROTOTYPE
-+ - specifying an invalid address family (connect, bind) now yields EAFNOSUPPORT
-+ - make install now also installs libraries (in /usr/lib)
-+ - improved many header file comments
-+ - re-arranged some comments to simplify automated document generation
-+ - added copyright statement
-+ - UNI 3.0 IE fields are now always recognized (but we shouldn't generate them)
-+ - UNI 3.0 wants octet 5a when using BCOB-X, so we'll set it to twice "No
-+ indication"
-+ - aread, awrite, br, bw, ttcp, atmsigd, and atmdump now set max_sdu
-+ - aread and awrite no longer print strerror(errno) on success
-+
-+
-+Version 0.4 to 0.5 (26-OCT-1995)
-+==================
-+
-+Bug fixes
-+---------
-+
-+ - now only root can open a CLIP socket (thereby creating an IP interface)
-+ - now only root can issue CLIP_NULENCAP and CLIP_LLCENCAP ioctls
-+ - atmdump: forgot default in getopt switch
-+ - eni driver: called misc_int on every interrupt
-+ - Q.2931 message description: various fixes and improvements
-+ - linux/atm.h: ATM_*_UNSPEC used the same value as ATM_*_ANY, oops !
-+ - SSCOP is now more careful about not accessing the descriptor if it might
-+ possibly have been deleted
-+ - typo in SSCF leading to wrong response to AA-RECOVER.indication
-+ - SSCOP now correctly copies N(PS) from POLL to STAT PDUs
-+ - SSCF now discards data when not ready instead of issuing a fatal error
-+ - AAL initialization failure no longer leaks memory
-+ - closing an SVC without VCC no longer yields a GPF
-+
-+New features
-+------------
-+
-+ - ZN1221 driver is starting to work
-+ - new, ARP-based mechanism for IP over ATM (with atmarpd, atmarp, etc.)
-+ - /proc/atm/pvc now displays more information for CLIP PVCs (after a patch
-+ by Raghavan Menon)
-+ - added max_pcr to struct atm_trafprm (also fixed a few comments in atm.h)
-+ Note: all programs using sockaddr_atm* will have to be recompiled.
-+ - qgen now handles value lists in named selections
-+ - signaling now supports bhli/blli, plus various other minor extensions
-+ - new ioctls to set/get local ATM address
-+ - added library with address to/from text conversion functions
-+ - finally implemented getname()
-+
-+Other changes
-+-------------
-+
-+ - eni driver: avoided potential generation of superfluous code if extended
-+ debugging is disabled
-+ - eni driver: detects new boards using ASIC PCI chip (doesn't support them
-+ yet, though)
-+ - qgen: semicolon is now comment character and no longer used to terminate
-+ clauses
-+ - qgen: replaced term "item" with "field"
-+ - linux/include/atmsap.h: removed obsolete comment "protocol cannot be fully
-+ encoded in current structure". Also re-arranged some comments to simplify
-+ automated document generation.
-+ - saal,sscf,sscop: callbacks don't pass the pointer to the descriptor of the
-+ calling protocol anymore
-+ - SSCOP no longer prints a number for non-'V' errors
-+ - improved handling of STATUS messages
-+ - select now indicates ready for writing if max_sdu packet can be enqueued
-+ without blocking
-+ - select can now also be used to check status of non-blocking connect
-+ - moved some common demon functions from sigd into a common demon library
-+
-+
-+Version 0.3 to 0.4 (27-SEP-1995)
-+==================
-+
-+Bug fixes
-+---------
-+
-+ - various minor documentation fixes
-+ - clip.c:atm_push_clip now updates statistics before forwarding the skb to
-+ the upper layer (which may free and overwrite the skb)
-+
-+New features
-+------------
-+
-+ - added partial UNI 3.x signaling
-+ - added various adapter debugging programs to the distribution
-+ - new config option CONFIG_ATM_ENI_DEBUG to enable extended debugging
-+ in eni driver
-+
-+Other changes
-+-------------
-+
-+ - upgraded to kernel version 1.3.24
-+ - changed the distribution directory structure (programs are now in maint/,
-+ test/, ip/, debug/, and sigd/, see INSTALL)
-+ - ATM interfaces are no longer named, only numbered. This affects the
-+ ATM_GETNAMES ioctl, all ioctls using struct atmif_sioc, the usage of atmdiag
-+ and sonetdiag, and various diagnostic kernel messages.
-+ - ATM socket state is now recorded in field "flags" (this also replaces the
-+ SVC fields "released", "registered", and "state")
-+ - added #ifdef __KERNEL__ to some header files
-+ - added "int immed" argument to send_oam
-+ - some minor modifications to the distribution process (mkdist)
-+ - removed devmap.c
-+ - SVC sockets no longer hang if the signaling demon dies
-+
-+
-+Version 0.2 to 0.3 (8-SEP-1995)
-+==================
-+
-+Bug fixes
-+---------
-+
-+ - select(2) didn't work (was sleeping on sock->wait instead of
-+ &ATM_SD(sock)->sleep)
-+ - ENI driver did allow binding to VPI/VCI already in use
-+ - ENI driver now properly handles PDUs with CRC errors
-+ - ENI driver had race condition when discarding PDUs causing new PDUs to be
-+ shifted in adapter memory by one word (which confused the driver quite a
-+ bit)
-+ - ENI driver now enables VC _after_ setting all pointers (caused crashes if
-+ data was already coming in while opening VC)
-+ - various bugs fixes related to SVC sockets
-+ - fixed GPF (in kernel) when running atmdiag without arguments
-+ - atmdiag now left-adjusts interface names
-+ - fixed ttcp.atm crash when not specifying vpi.vci
-+ - clip_xmit now checks for NULL vcc (e.g. after failure to connect)
-+
-+New features
-+------------
-+
-+ - zatm driver now reads ESI correctly
-+ - blocking svc_connect is now interruptible
-+ - atmdump now also displays the numeric PTI value of incoming cells
-+ - added RX/TX buffer quotas (default is 64 kB)
-+ - added OAM hooks to device driver interface (but there's no OAM support yet)
-+
-+Other changes
-+-------------
-+
-+ - ENI driver now checks ID field of reassembly buffer descriptors
-+ - ENI driver now uses vremap
-+ - ENI driver now prints more useful physical layer type information (e.g.
-+ "MMF" and "UTP" instead of "UTOPIA")
-+ - some redesign of the protocol used for signaling between kernel and demon
-+ - disabled "Grr, servicing VCC twice" message in ENI driver
-+ - device drivers now have to adapt AAL0 cell header byte order
-+ - some cleanup in common.c:atm_getsockopt
-+ - device drivers are now required to use the peek function; protocols now
-+ must provide it
-+
-+
-+Version 0.1 to 0.2 (15-AUG-1995)
-+==================
-+
-+Bug fixes
-+---------
-+
-+ - VCC family field is now correctly set to protocol family in
-+ common.c:atm_create (was pvc.c:pvc_create). With protocol set to zero,
-+ this created all types of strange problems, because the family field
-+ is used to indicate whether an VCC slot is busy/free.
-+ - fixed race condition in common.c:atm_read (reader might have blocked
-+ even if data is ready)
-+ - fixed dereferencing of uninitialized skb->dev pointer in
-+ clip.c:atm_push_clip
-+ - SIOCSIFATMTCP now refuses to attach the same socket twice
-+ - zatm.c: fixed setting of the VPI/VCI mask
-+ - USAGE said ttcp uses -B for the bandwidth, but it's -P
-+ - mkdist didn't include man pages
-+
-+New features
-+------------
-+
-+ - added some /proc/atm functionality
-+ - added support for ATM_{VPI,VCI}_ANY
-+ - SIOCSIFATMTCP now returns the interface number and atmtcp(8) prints it
-+ - wrote atmtcp man page
-+ - added kernel part of SVC support
-+
-+Other changes
-+-------------
-+
-+ - common.c: only root is now allowed to bind to reserved VCIs
-+ - Classical IP interfaces are now removed by downing by ifconfig; clip(8)
-+ returns immediately
-+ - PVC-connect for non-existing device now returns ENODEV instead of EINVAL
-+ - new field (type) in struct atm_dev to indicate device type
-+ - moved getsockopt(SO_CIRANGE) to common.c (removed atmtcp's own version)
-+ - added ci_range to struct atm_dev (and removed it from atmtcp's private
-+ structure)
-+ - added code to read the ESI to zatm.c (but that code doesn't seem to work
-+ yet)
---- linux-atm-2.4.1.orig/debian/atm-tools-br2684.manpages
-+++ linux-atm-2.4.1/debian/atm-tools-br2684.manpages
-@@ -0,0 +1 @@
-+debian/tmp/usr/share/man/man8/br2684ctl.8
---- linux-atm-2.4.1.orig/debian/atm-tools.atm
-+++ linux-atm-2.4.1/debian/atm-tools.atm
-@@ -0,0 +1,27 @@
-+#!/bin/sh
-+# Start/stop the atm daemon(s).
-+
-+DAEMON="/sbin/atmarpd"
-+
-+test -f $DAEMON || exit 0
-+
-+case "$1" in
-+start) echo -n "Starting ATM ARP Daemon: "
-+ start-stop-daemon --start --quiet --exec $DAEMON -b
-+ /bin/sleep 2
-+ echo "atmarpd."
-+ ;;
-+stop) echo -n "Stopping ATM ARP Daemon: "
-+ start-stop-daemon --stop --quiet --exec $DAEMON
-+ echo "atmarpd."
-+ ;;
-+restart|force-reload) echo -n "Re-starting ATM ARP Daemon: "
-+ start-stop-daemon --stop --quiet --exec $DAEMON
-+ start-stop-daemon --start --quiet --exec $DAEMON -b
-+ /bin/sleep 2
-+ echo "atmarpd."
-+ ;;
-+*) echo "Usage: /etc/init.d/atm start|stop|restart|force-reload"; exit 1
-+ ;;
-+esac
-+exit 0
---- linux-atm-2.4.1.orig/debian/atm-tools.docs
-+++ linux-atm-2.4.1/debian/atm-tools.docs
-@@ -0,0 +1,4 @@
-+BUGS
-+README
-+doc/README.tc
-+debian/README.br2684
---- linux-atm-2.4.1.orig/debian/control.old
-+++ linux-atm-2.4.1/debian/control.old
-@@ -0,0 +1,72 @@
-+Source: linux-atm
-+Section: net
-+Priority: optional
-+Maintainer: Peter De Schrijver (p2) <p2@mind.be>
-+Build-Depends: debhelper (>> 4.0.0), bison, flex, perl, dpatch, automake1.4
-+Standards-Version: 3.6.1
-+
-+Package: atm-tools
-+Architecture: any
-+Depends: ${shlibs:Depends}
-+Description: Base programs for ATM in Linux, the net-tools for ATM
-+ This package provides all the basic programs needed for setting up,
-+ monitoring and tuning ATM networks. Such as:
-+ * atmsigd, an ATM signal daemon that implements the ATM UNI protocol.
-+ * atmtcp, a tool to setup ATM over TCP connections.
-+ * atmarpd, an implementation of the ATMARP protocol (RFC1577, RFC1755)
-+ * zeppelin, an ATM LAN Emulation client daemon
-+ * les and bus, ATM LAN Emulation service daemons
-+ .
-+ Notice that upstream still flags these tools as experimental software and
-+ says that there is still a number of known bugs and issues. The
-+ software is, however, in productive use at a number of sites and is
-+ working reliably.
-+ .
-+ Homepage: http://linux-atm.sourceforge.net/
-+
-+Package: atm-tools-br2684
-+Architecture: any
-+Depends: ${shlibs:Depends}
-+Description: br2864ctl - RFC1483/2864 Bridge Daemon for ATM Networks
-+ br2684ctl handles RFC1483/2684 bridged PDUs. This is most often
-+ used in ADSL scenarios where usually the subscribers' ethernet
-+ traffic is encapsulated in ATM AAL5 (by bridging ADSL modems)
-+ according to RFC2684
-+ .
-+ The sources for br2684ctl has been pulled from linux-atm's CVS
-+ repository. Warning: This is unreleased software that can break any
-+ time, any place. If it does, you get to keep the pieces. linux-atm's
-+ upstream flags even the released software as experimental software.
-+ There is still a number of known bugs and issues.
-+
-+Package: atm-dev
-+Depends: libatm1-dev
-+Architecture: all
-+Section: oldlibs
-+Description: Development files for compiling ATM programs (dummy package)
-+ This dummy package provides a transition from the previous atm packages.
-+ It is provided for backwards compatibility only and may be removedafter
-+ the upgrade has completed or when when no other package depend on it.
-+
-+Package: libatm1
-+Section: libs
-+Architecture: any
-+Depends: ${shlibs:Depends}
-+Conflicts: atm-tools (<< 2.4.1-6)
-+Description: shared library for ATM (Asynchronous Transfer Mode)
-+ Shared libraries needed by ATM (Asynchronous Transfer Mode) related programs
-+ .
-+ Homepage: http://linux-atm.sourceforge.net/
-+
-+Package: libatm1-dev
-+Section: libdevel
-+Architecture: any
-+Depends: libc6-dev, libatm1
-+Replaces: atm-dev (<< 2.4.1-7)
-+Conflicts: atm-dev (<< 2.4.1-7)
-+Provides: libatm-dev
-+Description: Development files for compiling ATM programs
-+ Header files and development libraries for compiling ATM (Asynchronous
-+ Transfer Mode) related programs.
-+ .
-+ Homepage: http://linux-atm.sourceforge.net/
---- linux-atm-2.4.1.orig/debian/atm-tools.install
-+++ linux-atm-2.4.1/debian/atm-tools.install
-@@ -0,0 +1,18 @@
-+debian/tmp/usr/share/man/*
-+debian/tmp/usr/bin/*
-+debian/tmp/usr/sbin/atmsigd
-+debian/tmp/usr/sbin/atmaddr
-+debian/tmp/usr/sbin/esi
-+debian/tmp/usr/sbin/atmloop
-+debian/tmp/usr/sbin/atmtcp
-+debian/tmp/usr/sbin/enitune
-+debian/tmp/usr/sbin/zntune
-+debian/tmp/usr/sbin/atmarp sbin
-+debian/tmp/usr/sbin/atmarpd sbin
-+debian/tmp/usr/sbin/ilmid
-+debian/tmp/usr/sbin/zeppelin
-+debian/tmp/usr/sbin/les
-+debian/tmp/usr/sbin/bus
-+debian/tmp/usr/sbin/lecs
-+debian/tmp/usr/sbin/mpcd
-+debian/tmp/etc/atmsigd.conf
---- linux-atm-2.4.1.orig/debian/atm-tools.manpages
-+++ linux-atm-2.4.1/debian/atm-tools.manpages
-@@ -0,0 +1 @@
-+debian/atm-tools.8
---- linux-atm-2.4.1.orig/debian/atm-tools.pod
-+++ linux-atm-2.4.1/debian/atm-tools.pod
-@@ -0,0 +1,27 @@
-+=head1 NAME
-+
-+linux-atm - preliminary manpage
-+aread
-+awrite
-+enitune
-+ilmid
-+saaldump
-+sonetdiag
-+ttcp_atm
-+zntune
-+
-+=head1 DOCUMENTATION
-+
-+atm-tools is a package containing the basic tools that are needed for
-+setting up, monitoring, and tuning ATM networks. All available
-+documentation can be found in /usr/share/doc/atnm-tools in Debian
-+systems, and on the Web on: http://linux-atm.sourceforge.net.
-+
-+=head1 BUGS
-+
-+Many. Be prepared to debug.
-+
-+=head1 AUTHOR
-+
-+This manpage was written by Marc Haber for linux-atm packaging in
-+Debian/GNU Operating System.
---- linux-atm-2.4.1.orig/debian/changelog
-+++ linux-atm-2.4.1/debian/changelog
-@@ -0,0 +1,212 @@
-+linux-atm (2.4.1-17) unstable; urgency=low
-+
-+ * Fix build problem with gcc 4.0 (Closes: )
-+
-+ -- Peter De Schrijver (p2) <p2@mind.be> Thu, 17 Mar 2005 23:02:03 +0100
-+
-+linux-atm (2.4.1-16) unstable; urgency=low
-+
-+ * Fix build problem with gcc 3.4 (Closes: #259422)
-+
-+ -- Peter De Schrijver (p2) <p2@mind.be> Thu, 15 Jul 2004 14:28:10 +0200
-+
-+linux-atm (2.4.1-15) unstable; urgency=low
-+
-+ * Updated descriptions (Closes: #239161)
-+
-+ -- Peter De Schrijver (p2) <p2@mind.be> Sun, 4 Apr 2004 21:10:20 +0200
-+
-+linux-atm (2.4.1-14) unstable; urgency=low
-+
-+ * Fix symlink for /usr/lib/libatm.so (Closes: #221011)
-+
-+ -- Peter De Schrijver (p2) <p2@mind.be> Sun, 7 Dec 2003 21:53:19 +0100
-+
-+linux-atm (2.4.1-13) unstable; urgency=low
-+
-+ * Previous version fixed #217259, but no changelog entry (Closes: #217259)
-+ * Previous version fixed #216662, but no changelog entry (Closes: #216662)
-+ * Added missing build dependency on automake1.4 (Closes: #221120, #221284)
-+ * New Maintainer (Closes: #206982)
-+
-+ -- Peter De Schrijver (p2) <p2@mind.be> Mon, 17 Nov 2003 23:03:58 +0100
-+
-+linux-atm (2.4.1-12) unstable; urgency=low
-+
-+ * don't build atm-tools-br2684 by default. Thanks to ftpmaster for
-+ not allowing the package to be in Debian.
-+ * Since we don't build atm-tools-br2684 any more, revert back to
-+ autotools output from 2.4.1-9
-+ * Add README.br2684 documenting a way to build the package locally.
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Wed, 5 Nov 2003 21:31:42 +0000
-+
-+linux-atm (2.4.1-11) experimental; urgency=low
-+
-+ * Build-Depend on dpatch
-+ * dpatch br2684 header files from later libc for old libc (woody)
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Wed, 29 Oct 2003 19:05:07 +0000
-+
-+linux-atm (2.4.1-10) experimental; urgency=low
-+
-+ * add br2684 to package (closes: #216663)
-+ * autoreconf to actually build br2684
-+ * have libatm1-dev provide libatm-dev (closes: #216662)
-+ * move lib symlink to libatm1-dev as well (closes: #217259)
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Thu, 23 Oct 2003 17:55:43 +0000
-+
-+linux-atm (2.4.1-9) unstable; urgency=low
-+
-+ * put libatm1-dev in libdevel (closes: #213170)
-+ * make sure that new descriptions actually make it into the package
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Thu, 9 Oct 2003 17:08:10 +0000
-+
-+linux-atm (2.4.1-8) unstable; urgency=low
-+
-+ * build arch-indep package as targets of binary-indep (closes: #212124)
-+ * use dh_installdocs to install files to libatm1-dev/docs
-+ * symlink shared lib to usr/bin (closes: #213146)
-+ * Use better long descriptions. Thanks to Javier (closes: #209427)
-+ Fernandez-Sanguino (closes: #209612)
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Sun, 28 Sep 2003 19:29:08 +0000
-+
-+linux-atm (2.4.1-7) unstable; urgency=low
-+
-+ * libatm1 now conflicts with atm-tools (<< 2.4.1-6) (closes: #208170)
-+ * armarp now writes output to stdout.
-+ * add atm-dev as empty transitional package to help upgrades
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Tue, 2 Sep 2003 09:20:33 +0000
-+
-+linux-atm (2.4.1-6) unstable; urgency=low
-+
-+ * split off shared libraries to libatm1
-+ * rename atm-dev to libatm1-dev
-+ * Standards-Version: 3.6.1
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Tue, 26 Aug 2003 15:46:27 +0000
-+
-+linux-atm (2.4.1-5) unstable; urgency=low
-+
-+ * move *.a and *.la to usr/lib (closes: #199506).
-+ * let atm-dev depend on atm-tools to avoid dangling /lib/libatm.so
-+ symlink.
-+ * Standards-Version: 3.5.6
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Wed, 30 Jul 2003 11:46:19 +0000
-+
-+linux-atm (2.4.1-4) unstable; urgency=low
-+
-+ * add Build-Depends: on automake1.4
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Wed, 11 Jun 2003 16:58:21 +0000
-+
-+linux-atm (2.4.1-3) unstable; urgency=low
-+
-+ * rebuilding libtool broke src/test/Makefile.in. Applied fix to
-+ Makefile.am and re-built again.
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Wed, 11 Jun 2003 11:05:26 +0000
-+
-+linux-atm (2.4.1-2) unstable; urgency=low
-+
-+ * rebuild configure script with new libtool (closes: #196909)
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Tue, 10 Jun 2003 21:01:50 +0000
-+
-+linux-atm (2.4.1-1) unstable; urgency=low
-+
-+ * new upstream source
-+ * remove atmarp and atmarpd from /usr/sbin as they are already in
-+ /sbin (closes: #196216)
-+ * lintian fixes
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Mon, 9 Jun 2003 16:03:45 +0000
-+
-+linux-atm (2.4.0-5) unstable; urgency=low
-+
-+ * Fix for src/test/Makefile.in to allow building on hppa and ia64
-+ which the fix introduced to 2.4.0-4 broke. Thanks to Goswin
-+ Brederlow.
-+ * Move init.d priority to that atmarpd is started before network
-+ interfaces are started.
-+ * Move atmarpd and libatm to /sbin and /lib to allow atmarpd to be
-+ started before /usr is mounted.
-+ * use dh_install instead of dh_movefiles.
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Sat, 24 Aug 2002 15:13:48 +0000
-+
-+linux-atm (2.4.0-4) unstable; urgency=low
-+
-+ * new maintainer
-+ * Fix for src/test/Makefile.in to allow building on sparc.
-+ Thanks to Patrick Mauritz. (closes: #144225).
-+ * added pseudo-manpage for manpage-less binaries.
-+ * removed rpath by changing configure and make install paramaters
-+
-+ -- Marc Haber <mh+debian-packages@zugschlus.de> Fri, 16 Aug 2002 20:39:05 +0000
-+
-+linux-atm (2.4.0-3) unstable; urgency=HIGH
-+
-+ * Re-ran libtoolize.
-+ Closes: #143522
-+
-+ * Previous version Closes: #135328
-+
-+ -- Russell Coker <russell@coker.com.au> Fri, 19 Apr 2002 01:55:00 +0200
-+
-+linux-atm (2.4.0-2) unstable; urgency=HIGH
-+
-+ * Put a "grep -v EMAXERRNO" into the build process to deal with mipsel and
-+ the "#ifdef __KERNEL__" it has in it's /usr/include/asm/errno.h .
-+
-+ -- Russell Coker <russell@coker.com.au> Thu, 18 Apr 2002 19:56:00 +0200
-+
-+linux-atm (2.4.0-1) unstable; urgency=HIGH
-+
-+ * New upstream version which changes source package name.
-+ Closes: #138911
-+
-+ -- Russell Coker <russell@coker.com.au> Mon, 18 Mar 2002 17:42:00 +0100
-+
-+atm (0.79-4) unstable; urgency=low
-+
-+ * Added build-depends on flex.
-+ Closes: #111072
-+
-+ * Made the atm tools use a shared object to save space.
-+
-+ * Fixed the copyright file and put all copyright details in both packages.
-+
-+ * Added support for easy building with different kernel headers.
-+ Closes: #110249
-+
-+ -- Russell Coker <russell@coker.com.au> Sun, 7 Oct 2001 14:11:33 +0200
-+
-+atm (0.79-3) unstable; urgency=low
-+
-+ * Created /etc/init.d/atm to start and stop atmarpd.
-+ Closes: #110252
-+
-+ * Added build-depends on bison.
-+ Closes: #110576
-+
-+ -- Russell Coker <russell@coker.com.au> Fri, 31 Aug 2001 15:21:44 +0200
-+
-+atm (0.79-2) unstable; urgency=low
-+
-+ * Changed the main package name to atm-tools to indicate that it doesn't
-+ provide ATM (gotta have the kernel support), it just has the daemons and
-+ utilities.
-+
-+ -- Russell Coker <russell@coker.com.au> Sat, 25 Aug 2001 17:55:00 +0200
-+
-+atm (0.79-1) unstable; urgency=low
-+
-+ * Initial Release.
-+
-+ -- Russell Coker <russell@coker.com.au> Fri, 24 Aug 2001 17:31:00 +0200
---- linux-atm-2.4.1.orig/debian/checkout-br2684
-+++ linux-atm-2.4.1/debian/checkout-br2684
-@@ -0,0 +1,25 @@
-+#!/bin/bash -x
-+
-+set -e
-+
-+# check out br2684 from upstream CVS. We need to jump through hoops if
-+# the local source package is under cvs control as well.
-+
-+CVSDIR=":pserver:anonymous:@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm"
-+DIR="br2684"
-+TMPDIR="/tmp"
-+TARGETDIR="src"
-+
-+cvs -d${CVSDIR} login
-+
-+mkdir -p $TMPDIR
-+pushd $TMPDIR
-+cvs -z6 -d${CVSDIR} export -d $DIR -r V2_5_0 linux-atm/src/br2684
-+
-+popd
-+
-+mv $TMPDIR/$DIR/* $TARGETDIR/$DIR
-+rm -rf $TMPDIR/$DIR
-+
-+autoreconf -i -f
-+
---- linux-atm-2.4.1.orig/debian/copyright.header
-+++ linux-atm-2.4.1/debian/copyright.header
-@@ -0,0 +1,18 @@
-+This package was debianized by Russell Coker <russell@coker.com.au> on
-+Fri, 24 Aug 2001 16:11:12 +0200 and is now maintained by Marc Haber
-+<mh+debian-packages@zugschlus.de>.
-+
-+It was downloaded from http://www.sourceforge.net/projects/linux-atm/
-+
-+See also http://linux-atm.sourceforge.net/dist.php
-+
-+Upstream Authors:
-+Werner Almesberger EPFL ICA <Werner.Almesberger@epfl.ch>
-+Mitchell Blank Jr. <mitch@sfgoth.com>
-+Paul B Schroeder <paulsch@us.ibm.com>
-+
-+Copyright:
-+
-+GPL 2.0
-+
-+See /usr/share/common-licenses/GPL-2
---- linux-atm-2.4.1.orig/debian/libatm1-dev.dirs
-+++ linux-atm-2.4.1/debian/libatm1-dev.dirs
-@@ -0,0 +1,2 @@
-+usr/lib
-+usr/include
---- linux-atm-2.4.1.orig/debian/libatm1-dev.docs
-+++ linux-atm-2.4.1/debian/libatm1-dev.docs
-@@ -0,0 +1,2 @@
-+doc/README.CLP
-+doc/atm-linux-howto.txt
---- linux-atm-2.4.1.orig/debian/libatm1-dev.install
-+++ linux-atm-2.4.1/debian/libatm1-dev.install
-@@ -0,0 +1,2 @@
-+debian/tmp/usr/include/*
-+debian/tmp/usr/lib/*.a usr/lib
---- linux-atm-2.4.1.orig/debian/libatm1-dev.links
-+++ linux-atm-2.4.1/debian/libatm1-dev.links
-@@ -0,0 +1 @@
-+lib/libatm.so.1 usr/lib/libatm.so
---- linux-atm-2.4.1.orig/debian/libatm1.dirs
-+++ linux-atm-2.4.1/debian/libatm1.dirs
-@@ -0,0 +1 @@
-+/lib
---- linux-atm-2.4.1.orig/debian/libatm1.install
-+++ linux-atm-2.4.1/debian/libatm1.install
-@@ -0,0 +1 @@
-+debian/tmp/usr/lib/libatm.so.* lib
diff --git a/openwrt/package/linux-atm/patches/100-br2684.patch b/openwrt/package/linux-atm/patches/100-br2684.patch
deleted file mode 100644
index dfb1de0205..0000000000
--- a/openwrt/package/linux-atm/patches/100-br2684.patch
+++ /dev/null
@@ -1,488 +0,0 @@
-diff -ruN linux-atm-2.4.1/configure.in linux-atm-2.4.1.new/configure.in
---- linux-atm-2.4.1/configure.in 2003-04-25 04:17:05.000000000 +0200
-+++ linux-atm-2.4.1.new/configure.in 2005-07-27 15:45:49.532396543 +0200
-@@ -153,26 +153,6 @@
- src/Makefile \
- src/include/Makefile \
- src/lib/Makefile \
-- src/test/Makefile \
-- src/debug/Makefile \
-- src/qgen/Makefile \
-- src/saal/Makefile \
-- src/sigd/Makefile \
-- src/maint/Makefile \
-- src/arpd/Makefile \
-- src/ilmid/Makefile \
-- src/ilmid/asn1/Makefile \
-- src/man/Makefile \
-- src/led/Makefile \
-- src/lane/Makefile \
-- src/mpoad/Makefile \
-- src/switch/Makefile \
-- src/switch/debug/Makefile \
-- src/switch/tcp/Makefile \
-- src/config/Makefile \
-- src/config/init-redhat/Makefile \
-- src/extra/Makefile \
-- src/extra/linux-atm.spec \
-- src/extra/ANS/Makefile
-+ src/br2684/Makefile \
- )
-
-diff -ruN linux-atm-2.4.1/src/br2684/Makefile linux-atm-2.4.1.new/src/br2684/Makefile
---- linux-atm-2.4.1/src/br2684/Makefile 1970-01-01 02:00:00.000000000 +0200
-+++ linux-atm-2.4.1.new/src/br2684/Makefile 2002-07-15 23:44:25.000000000 +0200
-@@ -0,0 +1,13 @@
-+PREFIX=${TI_FILESYSTEM}
-+
-+all: br2684ctl
-+
-+br2684ctl: br2684ctl.c
-+ gcc -latm -o br2684ctl br2684ctl.c
-+ strip br2684ctl
-+
-+install: br2684ctl
-+ cp br2684ctl $(PREFIX)/usr/sbin/
-+
-+clean:
-+ rm -rf br2684ctl *.o
-diff -ruN linux-atm-2.4.1/src/Makefile.am linux-atm-2.4.1.new/src/Makefile.am
---- linux-atm-2.4.1/src/Makefile.am 2001-10-03 23:14:53.000000000 +0200
-+++ linux-atm-2.4.1.new/src/Makefile.am 2005-07-27 15:33:52.389309711 +0200
-@@ -1,3 +1,2 @@
--SUBDIRS = include lib test debug qgen saal sigd maint arpd ilmid man led lane \
-- mpoad switch config extra
-+SUBDIRS = include lib br2684
-
-
-diff -Nur linux-atm-2.4.1.orig/src/include/linux/atmbr2684.h linux-atm-2.4.1/src/include/linux/atmbr2684.h
---- linux-atm-2.4.1.orig/src/include/linux/atmbr2684.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-atm-2.4.1/src/include/linux/atmbr2684.h 2005-11-13 00:06:42.000000000 +0100
-@@ -0,0 +1,117 @@
-+#ifndef _LINUX_ATMBR2684_H
-+#define _LINUX_ATMBR2684_H
-+
-+#include <linux/atm.h>
-+#include <linux/if.h> /* For IFNAMSIZ */
-+#include <linux/if_ether.h> /* ETH_P_* */
-+
-+/*
-+ * Type of media we're bridging (ethernet, token ring, etc) Currently only
-+ * ethernet is supported
-+ */
-+#define BR2684_MEDIA_ETHERNET (0) /* 802.3 */
-+#define BR2684_MEDIA_802_4 (1) /* 802.4 */
-+#define BR2684_MEDIA_TR (2) /* 802.5 - token ring */
-+#define BR2684_MEDIA_FDDI (3)
-+#define BR2684_MEDIA_802_6 (4) /* 802.6 */
-+
-+/*
-+ * Is there FCS inbound on this VC? This currently isn't supported.
-+ */
-+#define BR2684_FCSIN_NO (0)
-+#define BR2684_FCSIN_IGNORE (1)
-+#define BR2684_FCSIN_VERIFY (2)
-+
-+/*
-+ * Is there FCS outbound on this VC? This currently isn't supported.
-+ */
-+#define BR2684_FCSOUT_NO (0)
-+#define BR2684_FCSOUT_SENDZERO (1)
-+#define BR2684_FCSOUT_GENERATE (2)
-+
-+/*
-+ * Does this VC include LLC encapsulation?
-+ */
-+#define BR2684_ENCAPS_VC (0) /* VC-mux */
-+#define BR2684_ENCAPS_LLC (1)
-+#define BR2684_ENCAPS_AUTODETECT (2) /* Unsuported */
-+
-+/*
-+ * Is this VC bridged or routed?
-+ */
-+
-+#define BR2684_PAYLOAD_ROUTED (0)
-+#define BR2684_PAYLOAD_BRIDGED (1)
-+
-+
-+/*
-+ * This is for the ATM_NEWBACKENDIF call - these are like socket families:
-+ * the first element of the structure is the backend number and the rest
-+ * is per-backend specific
-+ */
-+struct atm_newif_br2684 {
-+ atm_backend_t backend_num; /* ATM_BACKEND_BR2684 */
-+ int media; /* BR2684_MEDIA_* */
-+ char ifname[IFNAMSIZ];
-+ int mtu;
-+ int payload; /* bridged or routed */
-+};
-+
-+/*
-+ * This structure is used to specify a br2684 interface - either by a
-+ * positive integer (returned by ATM_NEWBACKENDIF) or the interfaces name
-+ */
-+#define BR2684_FIND_BYNOTHING (0)
-+#define BR2684_FIND_BYNUM (1)
-+#define BR2684_FIND_BYIFNAME (2)
-+struct br2684_if_spec {
-+ int method; /* BR2684_FIND_* */
-+ union {
-+ char ifname[IFNAMSIZ];
-+ int devnum;
-+ } spec;
-+};
-+
-+/*
-+ * This is for the ATM_SETBACKEND call - these are like socket families:
-+ * the first element of the structure is the backend number and the rest
-+ * is per-backend specific
-+ */
-+struct atm_backend_br2684 {
-+ atm_backend_t backend_num; /* ATM_BACKEND_BR2684 */
-+ struct br2684_if_spec ifspec;
-+ int fcs_in; /* BR2684_FCSIN_* */
-+ int fcs_out; /* BR2684_FCSOUT_* */
-+ int fcs_auto; /* 1: fcs_{in,out} disabled if no FCS rx'ed */
-+ int encaps; /* BR2684_ENCAPS_* */
-+ int payload; /* BR2684_PAYLOAD_* */
-+ int has_vpiid; /* 1: use vpn_id - Unsupported */
-+ __u8 vpn_id[7];
-+ int send_padding; /* unsupported */
-+ int min_size; /* we will pad smaller packets than this */
-+};
-+
-+/*
-+ * The BR2684_SETFILT ioctl is an experimental mechanism for folks
-+ * terminating a large number of IP-only vcc's. When netfilter allows
-+ * efficient per-if in/out filters, this support will be removed
-+ */
-+struct br2684_filter {
-+ __u32 prefix; /* network byte order */
-+ __u32 netmask; /* 0 = disable filter */
-+};
-+
-+struct br2684_filter_set {
-+ struct br2684_if_spec ifspec;
-+ struct br2684_filter filter;
-+};
-+
-+enum br2684_payload {
-+ p_routed = BR2684_PAYLOAD_ROUTED,
-+ p_bridged = BR2684_PAYLOAD_BRIDGED,
-+};
-+
-+#define BR2684_SETFILT _IOW( 'a', ATMIOC_BACKEND + 0, \
-+ struct br2684_filter_set)
-+
-+#endif /* _LINUX_ATMBR2684_H */
---- linux-atm-2.4.1/src/br2684/br2684ctl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-atm-2.4.1.new/src/br2684/br2684ctl.c 2006-02-07 14:19:42.000000000 +0100
-@@ -0,0 +1,307 @@
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <errno.h>
-+#include <sys/ioctl.h>
-+#include <string.h>
-+#include <syslog.h>
-+#include <atm.h>
-+#include <linux/atmdev.h>
-+#include <linux/atmbr2684.h>
-+
-+/* Written by Marcell GAL <cell@sch.bme.hu> to make use of the */
-+/* ioctls defined in the br2684... kernel patch */
-+/* Compile with cc -o br2684ctl br2684ctl.c -latm */
-+
-+/*
-+ Modified feb 2001 by Stephen Aaskov (saa@lasat.com)
-+ - Added daemonization code
-+ - Added syslog
-+
-+ TODO: Delete interfaces after exit?
-+*/
-+
-+
-+#define LOG_NAME "RFC1483/2684 bridge"
-+#define LOG_OPTION LOG_PERROR
-+#define LOG_FACILITY LOG_LOCAL0
-+
-+
-+int lastsock, lastitf;
-+
-+void fatal(char *str, int i)
-+{
-+ syslog(LOG_ERR, "Fatal: %s", str);
-+ exit(-2);
-+};
-+
-+
-+void exitFunc(void)
-+{
-+ syslog(LOG_PID, "Daemon terminated\n");
-+}
-+
-+
-+int create_pidfile(char *nstr)
-+{
-+ FILE *pidfile = NULL;
-+ char name[20];
-+ int num;
-+
-+ if (nstr == NULL)
-+ return -1;
-+ num = atoi(nstr);
-+ if (num < 0)
-+ return -1;
-+
-+ snprintf(name, 20, "/var/run/nas%d.pid", num);
-+ pidfile = fopen(name, "w");
-+ if (pidfile == NULL)
-+ return -1;
-+ fprintf(pidfile, "%d", getpid());
-+ fclose(pidfile);
-+
-+ return 0;
-+}
-+
-+int create_br(char *nstr, int payload)
-+{
-+ int num, err;
-+
-+ if (lastsock < 0) {
-+ lastsock = socket(PF_ATMPVC, SOCK_DGRAM, ATM_AAL5);
-+ }
-+ if (lastsock < 0) {
-+ syslog(LOG_ERR, "socket creation failed: %s",
-+ strerror(errno));
-+ } else {
-+ /* create the device with ioctl: */
-+ num = atoi(nstr);
-+ if (num >= 0 && num < 1234567890) {
-+ struct atm_newif_br2684 ni;
-+ ni.backend_num = ATM_BACKEND_BR2684;
-+ ni.media = BR2684_MEDIA_ETHERNET;
-+ ni.mtu = 1500;
-+ ni.payload = payload; /* bridged or routed */
-+ sprintf(ni.ifname, "nas%d", num);
-+ err = ioctl(lastsock, ATM_NEWBACKENDIF, &ni);
-+
-+ if (err == 0)
-+ syslog(LOG_INFO,
-+ "Interface \"%s\" (mtu=%d, payload=%s) created sucessfully\n",
-+ ni.ifname, ni.mtu,ni.payload ? "bridged" : "routed");
-+ else
-+ syslog(LOG_INFO,
-+ "Interface \"%s\" could not be created, reason: %s\n",
-+ ni.ifname, strerror(errno));
-+ lastitf = num; /* even if we didn't create, because existed, assign_vcc wil want to know it! */
-+ } else {
-+ syslog(LOG_ERR, "err: strange interface number %d",
-+ num);
-+ }
-+ }
-+ return 0;
-+}
-+
-+
-+int assign_vcc(char *astr, int encap, int payload, int bufsize)
-+{
-+ int err, errno;
-+ struct atm_qos qos;
-+ struct sockaddr_atmpvc addr;
-+ int fd;
-+ struct atm_backend_br2684 be;
-+
-+ memset(&addr, 0, sizeof(addr));
-+ err =
-+ text2atm(astr, (struct sockaddr *) (&addr), sizeof(addr),
-+ T2A_PVC);
-+ if (err != 0)
-+ syslog(LOG_ERR,
-+ "Could not parse ATM parameters (error=%d)\n", err);
-+
-+#if 0
-+ addr.sap_family = AF_ATMPVC;
-+ addr.sap_addr.itf = itf;
-+ addr.sap_addr.vpi = 0;
-+ addr.sap_addr.vci = vci;
-+#endif
-+ syslog(LOG_INFO,
-+ "Communicating over ATM %d.%d.%d, encapsulation: %s\n",
-+ addr.sap_addr.itf, addr.sap_addr.vpi, addr.sap_addr.vci,
-+ encap ? "VC mux" : "LLC");
-+
-+ if ((fd = socket(PF_ATMPVC, SOCK_DGRAM, ATM_AAL5)) < 0)
-+ syslog(LOG_ERR, "failed to create socket %d, reason: %s",
-+ errno, strerror(errno));
-+
-+
-+ memset(&qos, 0, sizeof(qos));
-+ qos.aal = ATM_AAL5;
-+ qos.txtp.traffic_class = ATM_UBR;
-+ qos.txtp.max_sdu = 1524;
-+ qos.txtp.pcr = ATM_MAX_PCR;
-+ qos.rxtp = qos.txtp;
-+
-+ if ((err =
-+ setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &bufsize,
-+ sizeof(bufsize))))
-+ syslog(LOG_ERR, "setsockopt SO_SNDBUF: (%d) %s\n", err,
-+ strerror(err));
-+
-+ if (setsockopt(fd, SOL_ATM, SO_ATMQOS, &qos, sizeof(qos)) < 0)
-+ syslog(LOG_ERR, "setsockopt SO_ATMQOS %d", errno);
-+
-+ err =
-+ connect(fd, (struct sockaddr *) &addr,
-+ sizeof(struct sockaddr_atmpvc));
-+
-+ if (err < 0)
-+ fatal("failed to connect on socket", err);
-+
-+ /* attach the vcc to device: */
-+
-+ be.backend_num = ATM_BACKEND_BR2684;
-+ be.ifspec.method = BR2684_FIND_BYIFNAME;
-+ sprintf(be.ifspec.spec.ifname, "nas%d", lastitf);
-+ be.fcs_in = BR2684_FCSIN_NO;
-+ be.fcs_out = BR2684_FCSOUT_NO;
-+ be.fcs_auto = 0;
-+ be.encaps = encap ? BR2684_ENCAPS_VC : BR2684_ENCAPS_LLC;
-+ be.payload = payload;
-+ be.has_vpiid = 0;
-+ be.send_padding = 0;
-+ be.min_size = 0;
-+ err = ioctl(fd, ATM_SETBACKEND, &be);
-+ if (err == 0)
-+ syslog(LOG_INFO, "Interface configured");
-+ else {
-+ syslog(LOG_ERR, "Could not configure interface:%s",
-+ strerror(errno));
-+ exit(2);
-+ }
-+ return fd;
-+}
-+
-+
-+
-+void usage(char *s)
-+{
-+ printf("usage: %s [-b] [[-c number] [-e 0|1] [-p 0|1] [-s num] [-a [itf.]vpi.vci]*]*\n"
-+ " -b = run in background (daemonize)\n"
-+ " -c <num> = use interface nas<num>\n"
-+ " -e 0|1 = encapsulation (0=LLC, 1=VC Mux)\n"
-+ " -p 0|1 = payload type (0=routed,1=bridged)\n"
-+ " -s <num> = set sndbuf (send buffer) size (default 8192)\n"
-+ " -a [itf.]vpi.vci = ATM interface no, VPI, VCI\n",
-+ s);
-+ exit(1);
-+}
-+
-+
-+
-+int main(int argc, char **argv)
-+{
-+ int c, background = 0, encap = 0, sndbuf = 8192, payload = 1;
-+ char *itfnum = NULL;
-+
-+ lastsock = -1;
-+ lastitf = 0;
-+
-+ openlog(LOG_NAME, LOG_OPTION, LOG_FACILITY);
-+ if (argc > 1)
-+ while ((c = getopt(argc, argv, "a:bc:e:s:p:t:?h")) != EOF)
-+ switch (c) {
-+ case 'a':
-+ assign_vcc(optarg, encap, payload, sndbuf);
-+ break;
-+ case 'b':
-+ background = 1;
-+ break;
-+ case 'c':
-+ create_br(optarg, payload);
-+ itfnum = strdup(optarg);
-+ break;
-+ case 'e':
-+ encap = (atoi(optarg));
-+ if (encap < 0) {
-+ syslog(LOG_ERR,
-+ "invalid encapsulation: %s:\n",
-+ optarg);
-+ encap = 0;
-+ }
-+ break;
-+ case 's':
-+ sndbuf = (atoi(optarg));
-+ if (sndbuf < 0) {
-+ syslog(LOG_ERR,
-+ "Invalid sndbuf: %s, using size of 8192 instead\n",
-+ optarg);
-+ sndbuf = 8192;
-+ }
-+ break;
-+ case 'p': /* payload type: routed (0) or bridged (1) */
-+ payload = atoi(optarg);
-+ break;
-+ case '?':
-+ case 'h':
-+ default:
-+ usage(argv[0]);
-+ } else
-+ usage(argv[0]);
-+
-+ if (argc != optind)
-+ usage(argv[0]);
-+
-+ if (lastsock >= 0)
-+ close(lastsock);
-+
-+ if (background) {
-+ pid_t pid;
-+
-+ pid = fork();
-+ if (pid < 0) {
-+ fprintf(stderr, "Error detaching\n");
-+ exit(2);
-+ } else if (pid)
-+ exit(0); // This is the parent
-+
-+ // Become a process group and session group leader
-+ if (setsid() < 0) {
-+ fprintf(stderr, "Could not set process group\n");
-+ exit(2);
-+ }
-+ // Fork again to let process group leader exit
-+ pid = fork();
-+ if (pid < 0) {
-+ fprintf(stderr,
-+ "Error detaching during second fork\n");
-+ exit(2);
-+ } else if (pid)
-+ exit(0); // This is the parent
-+
-+ // Now we're ready for buisness
-+ chdir("/"); // Don't keep directories in use
-+ close(0);
-+ close(1);
-+ close(2); // Close stdin, -out and -error
-+ /*
-+ Note that this implementation does not keep an open
-+ stdout/err.
-+ If we need them they can be opened now
-+ */
-+
-+ }
-+
-+ if (itfnum != NULL) {
-+ create_pidfile(itfnum);
-+ free(itfnum);
-+ }
-+
-+ syslog(LOG_INFO, "RFC 1483/2684 bridge daemon started\n");
-+ atexit(exitFunc);
-+
-+ while (1)
-+ sleep(30); /* to keep the sockets... */
-+ return 0;
-+}
diff --git a/openwrt/package/linux-atm/patches/200-no_libfl.patch b/openwrt/package/linux-atm/patches/200-no_libfl.patch
deleted file mode 100644
index 1b538b2a3b..0000000000
--- a/openwrt/package/linux-atm/patches/200-no_libfl.patch
+++ /dev/null
@@ -1,193 +0,0 @@
-diff -ruN linux-atm-2.4.1/src/qgen/Makefile.am linux-atm-2.4.1.new/src/qgen/Makefile.am
---- linux-atm-2.4.1/src/qgen/Makefile.am 2001-09-03 20:41:05.000000000 +0200
-+++ linux-atm-2.4.1.new/src/qgen/Makefile.am 2005-07-26 14:49:05.000000000 +0200
-@@ -3,7 +3,7 @@
-
- qgen_SOURCES = common.c common.h file.c file.h first.c ql_y.y ql_l.l qgen.c \
- qgen.h second.c third.c
--qgen_LDADD = -lfl
-+qgen_LDADD =
-
- q_dump_SOURCES = common.c
- q_dump_LDADD = qd.dump.standalone.o
-diff -ruN linux-atm-2.4.1/src/qgen/Makefile.in linux-atm-2.4.1.new/src/qgen/Makefile.in
---- linux-atm-2.4.1/src/qgen/Makefile.in 2003-04-30 16:44:01.000000000 +0200
-+++ linux-atm-2.4.1.new/src/qgen/Makefile.in 2005-07-26 14:49:13.000000000 +0200
-@@ -91,7 +91,7 @@
- qgen_SOURCES = common.c common.h file.c file.h first.c ql_y.y ql_l.l qgen.c \
- qgen.h second.c third.c
-
--qgen_LDADD = -lfl
-+qgen_LDADD =
-
- q_dump_SOURCES = common.c
- q_dump_LDADD = qd.dump.standalone.o
-diff -ruN linux-atm-2.4.1/src/qgen/ql_l.c linux-atm-2.4.1.new/src/qgen/ql_l.c
---- linux-atm-2.4.1/src/qgen/ql_l.c 2003-04-24 21:46:49.000000000 +0200
-+++ linux-atm-2.4.1.new/src/qgen/ql_l.c 2005-07-26 20:45:40.000000000 +0200
-@@ -11,6 +11,11 @@
- #include <stdio.h>
- #include <unistd.h>
-
-+int yywrap(void)
-+{
-+ return 1;
-+}
-+
-
- /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
- #ifdef c_plusplus
-diff -ruN linux-atm-2.4.1/src/sigd/cfg_l.c linux-atm-2.4.1.new/src/sigd/cfg_l.c
---- linux-atm-2.4.1/src/sigd/cfg_l.c 2003-04-24 21:47:21.000000000 +0200
-+++ linux-atm-2.4.1.new/src/sigd/cfg_l.c 2005-07-26 22:04:13.000000000 +0200
-@@ -11,6 +11,10 @@
- #include <stdio.h>
- #include <unistd.h>
-
-+int yywrap(void)
-+{
-+ return 1;
-+}
-
- /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
- #ifdef c_plusplus
-diff -ruN linux-atm-2.4.1/src/sigd/Makefile.am linux-atm-2.4.1.new/src/sigd/Makefile.am
---- linux-atm-2.4.1/src/sigd/Makefile.am 2001-10-04 23:17:26.000000000 +0200
-+++ linux-atm-2.4.1.new/src/sigd/Makefile.am 2005-07-26 14:49:44.000000000 +0200
-@@ -8,7 +8,7 @@
- $(top_builddir)/src/qgen/qd.dump.o \
- $(top_builddir)/src/lib/libatm.la \
- $(top_builddir)/src/saal/libsaal.a
--atmsigd_LDADD = $(atmsigd_XTRAS) -lfl
-+atmsigd_LDADD = $(atmsigd_XTRAS)
- atmsigd_DEPENDENCIES = mess.c $(atmsigd_XTRAS)
-
- CLEANFILES = mess.c
-diff -ruN linux-atm-2.4.1/src/sigd/Makefile.in linux-atm-2.4.1.new/src/sigd/Makefile.in
---- linux-atm-2.4.1/src/sigd/Makefile.in 2003-04-30 16:44:03.000000000 +0200
-+++ linux-atm-2.4.1.new/src/sigd/Makefile.in 2005-07-26 14:49:48.000000000 +0200
-@@ -97,7 +97,7 @@
- $(top_builddir)/src/lib/libatm.la \
- $(top_builddir)/src/saal/libsaal.a
-
--atmsigd_LDADD = $(atmsigd_XTRAS) -lfl
-+atmsigd_LDADD = $(atmsigd_XTRAS)
- atmsigd_DEPENDENCIES = mess.c $(atmsigd_XTRAS)
-
- CLEANFILES = mess.c
-diff -ruN linux-atm-2.4.1/src/switch/debug/debug.c linux-atm-2.4.1.new/src/switch/debug/debug.c
---- linux-atm-2.4.1/src/switch/debug/debug.c 2001-09-03 20:41:06.000000000 +0200
-+++ linux-atm-2.4.1.new/src/switch/debug/debug.c 2005-07-26 22:06:53.000000000 +0200
-@@ -20,6 +20,11 @@
-
- #define PRV(call) ((FAB *) (call)->fab)
-
-+int yywrap(void)
-+{
-+ return 1;
-+}
-+
-
- typedef struct _fab {
- CALL *next; /* relay.c may not keep track of calls, but WE are */
-diff -ruN linux-atm-2.4.1/src/switch/debug/Makefile.am linux-atm-2.4.1.new/src/switch/debug/Makefile.am
---- linux-atm-2.4.1/src/switch/debug/Makefile.am 2001-10-04 23:17:26.000000000 +0200
-+++ linux-atm-2.4.1.new/src/switch/debug/Makefile.am 2005-07-26 14:50:03.000000000 +0200
-@@ -5,7 +5,7 @@
- sw_debug_SOURCES = debug.c
- sw_debug_XTRAS = $(top_builddir)/src/switch/libsw.a \
- $(top_builddir)/src/lib/libatm.la
--sw_debug_LDADD = $(sw_debug_XTRAS) -lfl
-+sw_debug_LDADD = $(sw_debug_XTRAS)
-
- sw_debug_DEPENDENCIES = $(sw_debug_XTRAS)
-
-diff -ruN linux-atm-2.4.1/src/switch/debug/Makefile.in linux-atm-2.4.1.new/src/switch/debug/Makefile.in
---- linux-atm-2.4.1/src/switch/debug/Makefile.in 2003-04-30 16:44:13.000000000 +0200
-+++ linux-atm-2.4.1.new/src/switch/debug/Makefile.in 2005-07-26 14:50:08.000000000 +0200
-@@ -93,7 +93,7 @@
- sw_debug_XTRAS = $(top_builddir)/src/switch/libsw.a \
- $(top_builddir)/src/lib/libatm.la
-
--sw_debug_LDADD = $(sw_debug_XTRAS) -lfl
-+sw_debug_LDADD = $(sw_debug_XTRAS)
-
- sw_debug_DEPENDENCIES = $(sw_debug_XTRAS)
-
-diff -ruN linux-atm-2.4.1/src/switch/tcp/Makefile.am linux-atm-2.4.1.new/src/switch/tcp/Makefile.am
---- linux-atm-2.4.1/src/switch/tcp/Makefile.am 2001-10-04 23:17:27.000000000 +0200
-+++ linux-atm-2.4.1.new/src/switch/tcp/Makefile.am 2005-07-26 14:50:16.000000000 +0200
-@@ -5,7 +5,7 @@
- sw_tcp_SOURCES = tcpsw.c
- sw_tcp_XTRAS = $(top_builddir)/src/switch/libsw.a \
- $(top_builddir)/src/lib/libatm.la
--sw_tcp_LDADD = $(sw_tcp_XTRAS) -lfl
-+sw_tcp_LDADD = $(sw_tcp_XTRAS)
- sw_tcp_DEPENDENCIES = $(sw_tcp_XTRAS)
-
- EXTRA_DIST = mkfiles README
-diff -ruN linux-atm-2.4.1/src/switch/tcp/Makefile.in linux-atm-2.4.1.new/src/switch/tcp/Makefile.in
---- linux-atm-2.4.1/src/switch/tcp/Makefile.in 2003-04-30 16:44:14.000000000 +0200
-+++ linux-atm-2.4.1.new/src/switch/tcp/Makefile.in 2005-07-26 14:50:19.000000000 +0200
-@@ -93,7 +93,7 @@
- sw_tcp_XTRAS = $(top_builddir)/src/switch/libsw.a \
- $(top_builddir)/src/lib/libatm.la
-
--sw_tcp_LDADD = $(sw_tcp_XTRAS) -lfl
-+sw_tcp_LDADD = $(sw_tcp_XTRAS)
- sw_tcp_DEPENDENCIES = $(sw_tcp_XTRAS)
-
- EXTRA_DIST = mkfiles README
-diff -ruN linux-atm-2.4.1/src/switch/tcp/tcpsw.c linux-atm-2.4.1.new/src/switch/tcp/tcpsw.c
---- linux-atm-2.4.1/src/switch/tcp/tcpsw.c 2001-09-03 20:41:06.000000000 +0200
-+++ linux-atm-2.4.1.new/src/switch/tcp/tcpsw.c 2005-07-26 22:08:25.000000000 +0200
-@@ -35,6 +35,10 @@
- #define MAX_PACKET (ATM_MAX_AAL5_PDU+sizeof(struct atmtcp_hdr))
- #define BUFFER_SIZE (MAX_PACKET*2)
-
-+int yywrap(void)
-+{
-+ return 1;
-+}
-
- typedef struct _table {
- struct _link *out; /* output port */
-diff -ruN linux-atm-2.4.1/src/test/ispl_l.c linux-atm-2.4.1.new/src/test/ispl_l.c
---- linux-atm-2.4.1/src/test/ispl_l.c 2003-04-24 21:46:39.000000000 +0200
-+++ linux-atm-2.4.1.new/src/test/ispl_l.c 2005-07-26 20:45:19.000000000 +0200
-@@ -11,6 +11,11 @@
- #include <stdio.h>
- #include <unistd.h>
-
-+int yywrap(void)
-+{
-+ return 1;
-+}
-+
-
- /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
- #ifdef c_plusplus
-diff -ruN linux-atm-2.4.1/src/test/Makefile.am linux-atm-2.4.1.new/src/test/Makefile.am
---- linux-atm-2.4.1/src/test/Makefile.am 2001-10-04 23:17:27.000000000 +0200
-+++ linux-atm-2.4.1.new/src/test/Makefile.am 2005-07-26 14:49:27.000000000 +0200
-@@ -15,7 +15,7 @@
- bw_SOURCES = bw.c
- isp_SOURCES = isp.c isp.h ispl_y.y ispl_l.l
- isp_XTRAS = $(LDADD)
--isp_LDADD = $(isp_XTRAS) -lfl
-+isp_LDADD = $(isp_XTRAS)
- isp_DEPENDENCIES = $(isp_XTRAS) errnos.inc
- window_SOURCES = window.c
-
-diff -ruN linux-atm-2.4.1/src/test/Makefile.in linux-atm-2.4.1.new/src/test/Makefile.in
---- linux-atm-2.4.1/src/test/Makefile.in 2003-04-30 16:43:59.000000000 +0200
-+++ linux-atm-2.4.1.new/src/test/Makefile.in 2005-07-26 14:49:32.000000000 +0200
-@@ -102,7 +102,7 @@
- bw_SOURCES = bw.c
- isp_SOURCES = isp.c isp.h ispl_y.y ispl_l.l
- isp_XTRAS = $(LDADD)
--isp_LDADD = $(isp_XTRAS) -lfl
-+isp_LDADD = $(isp_XTRAS)
- isp_DEPENDENCIES = $(isp_XTRAS) errnos.inc
- window_SOURCES = window.c
-
diff --git a/openwrt/package/linux-atm/patches/300-no_autotools.patch b/openwrt/package/linux-atm/patches/300-no_autotools.patch
deleted file mode 100644
index a085eca7db..0000000000
--- a/openwrt/package/linux-atm/patches/300-no_autotools.patch
+++ /dev/null
@@ -1,22686 +0,0 @@
-diff -urN linux-atm.old/aclocal.m4 linux-atm.dev/aclocal.m4
---- linux-atm.old/aclocal.m4 2005-08-23 01:12:10.833789000 +0200
-+++ linux-atm.dev/aclocal.m4 2005-08-23 01:12:44.813623720 +0200
-@@ -10,6 +10,825 @@
- dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- dnl PARTICULAR PURPOSE.
-
-+# lib-prefix.m4 serial 4 (gettext-0.14.2)
-+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
-+dnl This file is free software; the Free Software Foundation
-+dnl gives unlimited permission to copy and/or distribute it,
-+dnl with or without modifications, as long as this notice is preserved.
-+
-+dnl From Bruno Haible.
-+
-+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
-+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
-+dnl require excessive bracketing.
-+ifdef([AC_HELP_STRING],
-+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
-+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
-+
-+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
-+dnl to access previously installed libraries. The basic assumption is that
-+dnl a user will want packages to use other packages he previously installed
-+dnl with the same --prefix option.
-+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
-+dnl libraries, but is otherwise very convenient.
-+AC_DEFUN([AC_LIB_PREFIX],
-+[
-+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
-+ AC_REQUIRE([AC_PROG_CC])
-+ AC_REQUIRE([AC_CANONICAL_HOST])
-+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-+ dnl By default, look in $includedir and $libdir.
-+ use_additional=yes
-+ AC_LIB_WITH_FINAL_PREFIX([
-+ eval additional_includedir=\"$includedir\"
-+ eval additional_libdir=\"$libdir\"
-+ ])
-+ AC_LIB_ARG_WITH([lib-prefix],
-+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
-+ --without-lib-prefix don't search for libraries in includedir and libdir],
-+[
-+ if test "X$withval" = "Xno"; then
-+ use_additional=no
-+ else
-+ if test "X$withval" = "X"; then
-+ AC_LIB_WITH_FINAL_PREFIX([
-+ eval additional_includedir=\"$includedir\"
-+ eval additional_libdir=\"$libdir\"
-+ ])
-+ else
-+ additional_includedir="$withval/include"
-+ additional_libdir="$withval/lib"
-+ fi
-+ fi
-+])
-+ if test $use_additional = yes; then
-+ dnl Potentially add $additional_includedir to $CPPFLAGS.
-+ dnl But don't add it
-+ dnl 1. if it's the standard /usr/include,
-+ dnl 2. if it's already present in $CPPFLAGS,
-+ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
-+ dnl 4. if it doesn't exist as a directory.
-+ if test "X$additional_includedir" != "X/usr/include"; then
-+ haveit=
-+ for x in $CPPFLAGS; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-I$additional_includedir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test "X$additional_includedir" = "X/usr/local/include"; then
-+ if test -n "$GCC"; then
-+ case $host_os in
-+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
-+ esac
-+ fi
-+ fi
-+ if test -z "$haveit"; then
-+ if test -d "$additional_includedir"; then
-+ dnl Really add $additional_includedir to $CPPFLAGS.
-+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
-+ fi
-+ fi
-+ fi
-+ fi
-+ dnl Potentially add $additional_libdir to $LDFLAGS.
-+ dnl But don't add it
-+ dnl 1. if it's the standard /usr/lib,
-+ dnl 2. if it's already present in $LDFLAGS,
-+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
-+ dnl 4. if it doesn't exist as a directory.
-+ if test "X$additional_libdir" != "X/usr/lib"; then
-+ haveit=
-+ for x in $LDFLAGS; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-L$additional_libdir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test "X$additional_libdir" = "X/usr/local/lib"; then
-+ if test -n "$GCC"; then
-+ case $host_os in
-+ linux*) haveit=yes;;
-+ esac
-+ fi
-+ fi
-+ if test -z "$haveit"; then
-+ if test -d "$additional_libdir"; then
-+ dnl Really add $additional_libdir to $LDFLAGS.
-+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
-+ fi
-+ fi
-+ fi
-+ fi
-+ fi
-+])
-+
-+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
-+dnl acl_final_exec_prefix, containing the values to which $prefix and
-+dnl $exec_prefix will expand at the end of the configure script.
-+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
-+[
-+ dnl Unfortunately, prefix and exec_prefix get only finally determined
-+ dnl at the end of configure.
-+ if test "X$prefix" = "XNONE"; then
-+ acl_final_prefix="$ac_default_prefix"
-+ else
-+ acl_final_prefix="$prefix"
-+ fi
-+ if test "X$exec_prefix" = "XNONE"; then
-+ acl_final_exec_prefix='${prefix}'
-+ else
-+ acl_final_exec_prefix="$exec_prefix"
-+ fi
-+ acl_save_prefix="$prefix"
-+ prefix="$acl_final_prefix"
-+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
-+ prefix="$acl_save_prefix"
-+])
-+
-+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
-+dnl variables prefix and exec_prefix bound to the values they will have
-+dnl at the end of the configure script.
-+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
-+[
-+ acl_save_prefix="$prefix"
-+ prefix="$acl_final_prefix"
-+ acl_save_exec_prefix="$exec_prefix"
-+ exec_prefix="$acl_final_exec_prefix"
-+ $1
-+ exec_prefix="$acl_save_exec_prefix"
-+ prefix="$acl_save_prefix"
-+])
-+
-+# lib-link.m4 serial 6 (gettext-0.14.3)
-+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
-+dnl This file is free software; the Free Software Foundation
-+dnl gives unlimited permission to copy and/or distribute it,
-+dnl with or without modifications, as long as this notice is preserved.
-+
-+dnl From Bruno Haible.
-+
-+AC_PREREQ(2.50)
-+
-+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
-+dnl the libraries corresponding to explicit and implicit dependencies.
-+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
-+dnl augments the CPPFLAGS variable.
-+AC_DEFUN([AC_LIB_LINKFLAGS],
-+[
-+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-+ AC_REQUIRE([AC_LIB_RPATH])
-+ define([Name],[translit([$1],[./-], [___])])
-+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
-+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
-+ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
-+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
-+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
-+ ])
-+ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
-+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
-+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
-+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-+ AC_SUBST([LIB]NAME)
-+ AC_SUBST([LTLIB]NAME)
-+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
-+ dnl results of this search when this library appears as a dependency.
-+ HAVE_LIB[]NAME=yes
-+ undefine([Name])
-+ undefine([NAME])
-+])
-+
-+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
-+dnl searches for libname and the libraries corresponding to explicit and
-+dnl implicit dependencies, together with the specified include files and
-+dnl the ability to compile and link the specified testcode. If found, it
-+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
-+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
-+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
-+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
-+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
-+[
-+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-+ AC_REQUIRE([AC_LIB_RPATH])
-+ define([Name],[translit([$1],[./-], [___])])
-+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-+
-+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
-+ dnl accordingly.
-+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
-+
-+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
-+ dnl because if the user has installed lib[]Name and not disabled its use
-+ dnl via --without-lib[]Name-prefix, he wants to use it.
-+ ac_save_CPPFLAGS="$CPPFLAGS"
-+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-+
-+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
-+ ac_save_LIBS="$LIBS"
-+ LIBS="$LIBS $LIB[]NAME"
-+ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
-+ LIBS="$ac_save_LIBS"
-+ ])
-+ if test "$ac_cv_lib[]Name" = yes; then
-+ HAVE_LIB[]NAME=yes
-+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
-+ AC_MSG_CHECKING([how to link with lib[]$1])
-+ AC_MSG_RESULT([$LIB[]NAME])
-+ else
-+ HAVE_LIB[]NAME=no
-+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
-+ dnl $INC[]NAME either.
-+ CPPFLAGS="$ac_save_CPPFLAGS"
-+ LIB[]NAME=
-+ LTLIB[]NAME=
-+ fi
-+ AC_SUBST([HAVE_LIB]NAME)
-+ AC_SUBST([LIB]NAME)
-+ AC_SUBST([LTLIB]NAME)
-+ undefine([Name])
-+ undefine([NAME])
-+])
-+
-+dnl Determine the platform dependent parameters needed to use rpath:
-+dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
-+dnl hardcode_direct, hardcode_minus_L.
-+AC_DEFUN([AC_LIB_RPATH],
-+[
-+ dnl Tell automake >= 1.10 to complain if config.rpath is missing.
-+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
-+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
-+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
-+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
-+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
-+ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
-+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
-+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
-+ . ./conftest.sh
-+ rm -f ./conftest.sh
-+ acl_cv_rpath=done
-+ ])
-+ wl="$acl_cv_wl"
-+ libext="$acl_cv_libext"
-+ shlibext="$acl_cv_shlibext"
-+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
-+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
-+ hardcode_direct="$acl_cv_hardcode_direct"
-+ hardcode_minus_L="$acl_cv_hardcode_minus_L"
-+ dnl Determine whether the user wants rpath handling at all.
-+ AC_ARG_ENABLE(rpath,
-+ [ --disable-rpath do not hardcode runtime library paths],
-+ :, enable_rpath=yes)
-+])
-+
-+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
-+dnl the libraries corresponding to explicit and implicit dependencies.
-+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
-+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
-+[
-+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-+ dnl By default, look in $includedir and $libdir.
-+ use_additional=yes
-+ AC_LIB_WITH_FINAL_PREFIX([
-+ eval additional_includedir=\"$includedir\"
-+ eval additional_libdir=\"$libdir\"
-+ ])
-+ AC_LIB_ARG_WITH([lib$1-prefix],
-+[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
-+ --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
-+[
-+ if test "X$withval" = "Xno"; then
-+ use_additional=no
-+ else
-+ if test "X$withval" = "X"; then
-+ AC_LIB_WITH_FINAL_PREFIX([
-+ eval additional_includedir=\"$includedir\"
-+ eval additional_libdir=\"$libdir\"
-+ ])
-+ else
-+ additional_includedir="$withval/include"
-+ additional_libdir="$withval/lib"
-+ fi
-+ fi
-+])
-+ dnl Search the library and its dependencies in $additional_libdir and
-+ dnl $LDFLAGS. Using breadth-first-seach.
-+ LIB[]NAME=
-+ LTLIB[]NAME=
-+ INC[]NAME=
-+ rpathdirs=
-+ ltrpathdirs=
-+ names_already_handled=
-+ names_next_round='$1 $2'
-+ while test -n "$names_next_round"; do
-+ names_this_round="$names_next_round"
-+ names_next_round=
-+ for name in $names_this_round; do
-+ already_handled=
-+ for n in $names_already_handled; do
-+ if test "$n" = "$name"; then
-+ already_handled=yes
-+ break
-+ fi
-+ done
-+ if test -z "$already_handled"; then
-+ names_already_handled="$names_already_handled $name"
-+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
-+ dnl or AC_LIB_HAVE_LINKFLAGS call.
-+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
-+ eval value=\"\$HAVE_LIB$uppername\"
-+ if test -n "$value"; then
-+ if test "$value" = yes; then
-+ eval value=\"\$LIB$uppername\"
-+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
-+ eval value=\"\$LTLIB$uppername\"
-+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
-+ else
-+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
-+ dnl that this library doesn't exist. So just drop it.
-+ :
-+ fi
-+ else
-+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
-+ dnl and the already constructed $LIBNAME/$LTLIBNAME.
-+ found_dir=
-+ found_la=
-+ found_so=
-+ found_a=
-+ if test $use_additional = yes; then
-+ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
-+ found_dir="$additional_libdir"
-+ found_so="$additional_libdir/lib$name.$shlibext"
-+ if test -f "$additional_libdir/lib$name.la"; then
-+ found_la="$additional_libdir/lib$name.la"
-+ fi
-+ else
-+ if test -f "$additional_libdir/lib$name.$libext"; then
-+ found_dir="$additional_libdir"
-+ found_a="$additional_libdir/lib$name.$libext"
-+ if test -f "$additional_libdir/lib$name.la"; then
-+ found_la="$additional_libdir/lib$name.la"
-+ fi
-+ fi
-+ fi
-+ fi
-+ if test "X$found_dir" = "X"; then
-+ for x in $LDFLAGS $LTLIB[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ case "$x" in
-+ -L*)
-+ dir=`echo "X$x" | sed -e 's/^X-L//'`
-+ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
-+ found_dir="$dir"
-+ found_so="$dir/lib$name.$shlibext"
-+ if test -f "$dir/lib$name.la"; then
-+ found_la="$dir/lib$name.la"
-+ fi
-+ else
-+ if test -f "$dir/lib$name.$libext"; then
-+ found_dir="$dir"
-+ found_a="$dir/lib$name.$libext"
-+ if test -f "$dir/lib$name.la"; then
-+ found_la="$dir/lib$name.la"
-+ fi
-+ fi
-+ fi
-+ ;;
-+ esac
-+ if test "X$found_dir" != "X"; then
-+ break
-+ fi
-+ done
-+ fi
-+ if test "X$found_dir" != "X"; then
-+ dnl Found the library.
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
-+ if test "X$found_so" != "X"; then
-+ dnl Linking with a shared library. We attempt to hardcode its
-+ dnl directory into the executable's runpath, unless it's the
-+ dnl standard /usr/lib.
-+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
-+ dnl No hardcoding is needed.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-+ else
-+ dnl Use an explicit option to hardcode DIR into the resulting
-+ dnl binary.
-+ dnl Potentially add DIR to ltrpathdirs.
-+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-+ haveit=
-+ for x in $ltrpathdirs; do
-+ if test "X$x" = "X$found_dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ ltrpathdirs="$ltrpathdirs $found_dir"
-+ fi
-+ dnl The hardcoding into $LIBNAME is system dependent.
-+ if test "$hardcode_direct" = yes; then
-+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
-+ dnl resulting binary.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-+ else
-+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
-+ dnl Use an explicit option to hardcode DIR into the resulting
-+ dnl binary.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-+ dnl Potentially add DIR to rpathdirs.
-+ dnl The rpathdirs will be appended to $LIBNAME at the end.
-+ haveit=
-+ for x in $rpathdirs; do
-+ if test "X$x" = "X$found_dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ rpathdirs="$rpathdirs $found_dir"
-+ fi
-+ else
-+ dnl Rely on "-L$found_dir".
-+ dnl But don't add it if it's already contained in the LDFLAGS
-+ dnl or the already constructed $LIBNAME
-+ haveit=
-+ for x in $LDFLAGS $LIB[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-L$found_dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
-+ fi
-+ if test "$hardcode_minus_L" != no; then
-+ dnl FIXME: Not sure whether we should use
-+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-+ dnl here.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-+ else
-+ dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
-+ dnl here, because this doesn't fit in flags passed to the
-+ dnl compiler. So give up. No hardcoding. This affects only
-+ dnl very old systems.
-+ dnl FIXME: Not sure whether we should use
-+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-+ dnl here.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-+ fi
-+ fi
-+ fi
-+ fi
-+ else
-+ if test "X$found_a" != "X"; then
-+ dnl Linking with a static library.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
-+ else
-+ dnl We shouldn't come here, but anyway it's good to have a
-+ dnl fallback.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
-+ fi
-+ fi
-+ dnl Assume the include files are nearby.
-+ additional_includedir=
-+ case "$found_dir" in
-+ */lib | */lib/)
-+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
-+ additional_includedir="$basedir/include"
-+ ;;
-+ esac
-+ if test "X$additional_includedir" != "X"; then
-+ dnl Potentially add $additional_includedir to $INCNAME.
-+ dnl But don't add it
-+ dnl 1. if it's the standard /usr/include,
-+ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
-+ dnl 3. if it's already present in $CPPFLAGS or the already
-+ dnl constructed $INCNAME,
-+ dnl 4. if it doesn't exist as a directory.
-+ if test "X$additional_includedir" != "X/usr/include"; then
-+ haveit=
-+ if test "X$additional_includedir" = "X/usr/local/include"; then
-+ if test -n "$GCC"; then
-+ case $host_os in
-+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
-+ esac
-+ fi
-+ fi
-+ if test -z "$haveit"; then
-+ for x in $CPPFLAGS $INC[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-I$additional_includedir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test -d "$additional_includedir"; then
-+ dnl Really add $additional_includedir to $INCNAME.
-+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
-+ fi
-+ fi
-+ fi
-+ fi
-+ fi
-+ dnl Look for dependencies.
-+ if test -n "$found_la"; then
-+ dnl Read the .la file. It defines the variables
-+ dnl dlname, library_names, old_library, dependency_libs, current,
-+ dnl age, revision, installed, dlopen, dlpreopen, libdir.
-+ save_libdir="$libdir"
-+ case "$found_la" in
-+ */* | *\\*) . "$found_la" ;;
-+ *) . "./$found_la" ;;
-+ esac
-+ libdir="$save_libdir"
-+ dnl We use only dependency_libs.
-+ for dep in $dependency_libs; do
-+ case "$dep" in
-+ -L*)
-+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
-+ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
-+ dnl But don't add it
-+ dnl 1. if it's the standard /usr/lib,
-+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
-+ dnl 3. if it's already present in $LDFLAGS or the already
-+ dnl constructed $LIBNAME,
-+ dnl 4. if it doesn't exist as a directory.
-+ if test "X$additional_libdir" != "X/usr/lib"; then
-+ haveit=
-+ if test "X$additional_libdir" = "X/usr/local/lib"; then
-+ if test -n "$GCC"; then
-+ case $host_os in
-+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
-+ esac
-+ fi
-+ fi
-+ if test -z "$haveit"; then
-+ haveit=
-+ for x in $LDFLAGS $LIB[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-L$additional_libdir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test -d "$additional_libdir"; then
-+ dnl Really add $additional_libdir to $LIBNAME.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
-+ fi
-+ fi
-+ haveit=
-+ for x in $LDFLAGS $LTLIB[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-L$additional_libdir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test -d "$additional_libdir"; then
-+ dnl Really add $additional_libdir to $LTLIBNAME.
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
-+ fi
-+ fi
-+ fi
-+ fi
-+ ;;
-+ -R*)
-+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
-+ if test "$enable_rpath" != no; then
-+ dnl Potentially add DIR to rpathdirs.
-+ dnl The rpathdirs will be appended to $LIBNAME at the end.
-+ haveit=
-+ for x in $rpathdirs; do
-+ if test "X$x" = "X$dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ rpathdirs="$rpathdirs $dir"
-+ fi
-+ dnl Potentially add DIR to ltrpathdirs.
-+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-+ haveit=
-+ for x in $ltrpathdirs; do
-+ if test "X$x" = "X$dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ ltrpathdirs="$ltrpathdirs $dir"
-+ fi
-+ fi
-+ ;;
-+ -l*)
-+ dnl Handle this in the next round.
-+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
-+ ;;
-+ *.la)
-+ dnl Handle this in the next round. Throw away the .la's
-+ dnl directory; it is already contained in a preceding -L
-+ dnl option.
-+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
-+ ;;
-+ *)
-+ dnl Most likely an immediate library name.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
-+ ;;
-+ esac
-+ done
-+ fi
-+ else
-+ dnl Didn't find the library; assume it is in the system directories
-+ dnl known to the linker and runtime loader. (All the system
-+ dnl directories known to the linker should also be known to the
-+ dnl runtime loader, otherwise the system is severely misconfigured.)
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
-+ fi
-+ fi
-+ fi
-+ done
-+ done
-+ if test "X$rpathdirs" != "X"; then
-+ if test -n "$hardcode_libdir_separator"; then
-+ dnl Weird platform: only the last -rpath option counts, the user must
-+ dnl pass all path elements in one option. We can arrange that for a
-+ dnl single library, but not when more than one $LIBNAMEs are used.
-+ alldirs=
-+ for found_dir in $rpathdirs; do
-+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
-+ done
-+ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
-+ acl_save_libdir="$libdir"
-+ libdir="$alldirs"
-+ eval flag=\"$hardcode_libdir_flag_spec\"
-+ libdir="$acl_save_libdir"
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-+ else
-+ dnl The -rpath options are cumulative.
-+ for found_dir in $rpathdirs; do
-+ acl_save_libdir="$libdir"
-+ libdir="$found_dir"
-+ eval flag=\"$hardcode_libdir_flag_spec\"
-+ libdir="$acl_save_libdir"
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-+ done
-+ fi
-+ fi
-+ if test "X$ltrpathdirs" != "X"; then
-+ dnl When using libtool, the option that works for both libraries and
-+ dnl executables is -R. The -R options are cumulative.
-+ for found_dir in $ltrpathdirs; do
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
-+ done
-+ fi
-+])
-+
-+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
-+dnl unless already present in VAR.
-+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
-+dnl contains two or three consecutive elements that belong together.
-+AC_DEFUN([AC_LIB_APPENDTOVAR],
-+[
-+ for element in [$2]; do
-+ haveit=
-+ for x in $[$1]; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X$element"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ [$1]="${[$1]}${[$1]:+ }$element"
-+ fi
-+ done
-+])
-+
-+# lib-ld.m4 serial 3 (gettext-0.13)
-+dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
-+dnl This file is free software; the Free Software Foundation
-+dnl gives unlimited permission to copy and/or distribute it,
-+dnl with or without modifications, as long as this notice is preserved.
-+
-+dnl Subroutines of libtool.m4,
-+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
-+dnl with libtool.m4.
-+
-+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
-+AC_DEFUN([AC_LIB_PROG_LD_GNU],
-+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
-+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-+case `$LD -v 2>&1 </dev/null` in
-+*GNU* | *'with BFD'*)
-+ acl_cv_prog_gnu_ld=yes ;;
-+*)
-+ acl_cv_prog_gnu_ld=no ;;
-+esac])
-+with_gnu_ld=$acl_cv_prog_gnu_ld
-+])
-+
-+dnl From libtool-1.4. Sets the variable LD.
-+AC_DEFUN([AC_LIB_PROG_LD],
-+[AC_ARG_WITH(gnu-ld,
-+[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-+AC_REQUIRE([AC_PROG_CC])dnl
-+AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+# Prepare PATH_SEPARATOR.
-+# 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
-+ac_prog=ld
-+if test "$GCC" = yes; then
-+ # Check if gcc -print-prog-name=ld gives a path.
-+ AC_MSG_CHECKING([for ld used by GCC])
-+ case $host in
-+ *-*-mingw*)
-+ # gcc leaves a trailing carriage return which upsets mingw
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-+ *)
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-+ esac
-+ case $ac_prog in
-+ # Accept absolute paths.
-+ [[\\/]* | [A-Za-z]:[\\/]*)]
-+ [re_direlt='/[^/][^/]*/\.\./']
-+ # Canonicalize the path of ld
-+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
-+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
-+ done
-+ test -z "$LD" && LD="$ac_prog"
-+ ;;
-+ "")
-+ # If it fails, then pretend we aren't using GCC.
-+ ac_prog=ld
-+ ;;
-+ *)
-+ # If it is relative, then search for the first ld in PATH.
-+ with_gnu_ld=unknown
-+ ;;
-+ esac
-+elif test "$with_gnu_ld" = yes; then
-+ AC_MSG_CHECKING([for GNU ld])
-+else
-+ AC_MSG_CHECKING([for non-GNU ld])
-+fi
-+AC_CACHE_VAL(acl_cv_path_LD,
-+[if test -z "$LD"; then
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-+ acl_cv_path_LD="$ac_dir/$ac_prog"
-+ # Check to see if the program is GNU ld. I'd rather use --version,
-+ # but apparently some GNU ld's only accept -v.
-+ # Break only if it was the GNU/non-GNU ld that we prefer.
-+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
-+ *GNU* | *'with BFD'*)
-+ test "$with_gnu_ld" != no && break ;;
-+ *)
-+ test "$with_gnu_ld" != yes && break ;;
-+ esac
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+else
-+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
-+fi])
-+LD="$acl_cv_path_LD"
-+if test -n "$LD"; then
-+ AC_MSG_RESULT($LD)
-+else
-+ AC_MSG_RESULT(no)
-+fi
-+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-+AC_LIB_PROG_LD_GNU
-+])
-+
- # Like AC_CONFIG_HEADER, but automatically create stamp file.
-
- AC_DEFUN([AM_CONFIG_HEADER],
-@@ -164,12 +983,64 @@
- AC_PROG_LEX
- AC_DECL_YYTEXT])
-
--# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*-
-+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-
--# serial 46 AC_PROG_LIBTOOL
-+# serial 47 AC_PROG_LIBTOOL
-+# Debian $Rev$
-
-+
-+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
-+# -----------------------------------------------------------
-+# If this macro is not defined by Autoconf, define it here.
-+m4_ifdef([AC_PROVIDE_IFELSE],
-+ [],
-+ [m4_define([AC_PROVIDE_IFELSE],
-+ [m4_ifdef([AC_PROVIDE_$1],
-+ [$2], [$3])])])
-+
-+
-+# AC_PROG_LIBTOOL
-+# ---------------
- AC_DEFUN([AC_PROG_LIBTOOL],
-+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
-+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
-+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
-+ AC_PROVIDE_IFELSE([AC_PROG_CXX],
-+ [AC_LIBTOOL_CXX],
-+ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
-+ ])])
-+dnl And a similar setup for Fortran 77 support
-+ AC_PROVIDE_IFELSE([AC_PROG_F77],
-+ [AC_LIBTOOL_F77],
-+ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
-+])])
-+
-+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
-+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
-+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
-+ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-+ [AC_LIBTOOL_GCJ],
-+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-+ [AC_LIBTOOL_GCJ],
-+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
-+ [AC_LIBTOOL_GCJ],
-+ [ifdef([AC_PROG_GCJ],
-+ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
-+ ifdef([A][M_PROG_GCJ],
-+ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
-+ ifdef([LT_AC_PROG_GCJ],
-+ [define([LT_AC_PROG_GCJ],
-+ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
-+])])# AC_PROG_LIBTOOL
-+
-+
-+# _AC_PROG_LIBTOOL
-+# ----------------
-+AC_DEFUN([_AC_PROG_LIBTOOL],
- [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
-+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
-+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
-
- # This can be used to rebuild libtool when needed
- LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
-@@ -180,10 +1051,13 @@
-
- # Prevent multiple expansion
- define([AC_PROG_LIBTOOL], [])
--])
-+])# _AC_PROG_LIBTOOL
-
-+
-+# AC_LIBTOOL_SETUP
-+# ----------------
- AC_DEFUN([AC_LIBTOOL_SETUP],
--[AC_PREREQ(2.13)dnl
-+[AC_PREREQ(2.50)dnl
- AC_REQUIRE([AC_ENABLE_SHARED])dnl
- AC_REQUIRE([AC_ENABLE_STATIC])dnl
- AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
-@@ -193,15 +1067,103 @@
- AC_REQUIRE([AC_PROG_LD])dnl
- AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
- AC_REQUIRE([AC_PROG_NM])dnl
--AC_REQUIRE([LT_AC_PROG_SED])dnl
-
- AC_REQUIRE([AC_PROG_LN_S])dnl
- AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
-+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
- AC_REQUIRE([AC_OBJEXT])dnl
- AC_REQUIRE([AC_EXEEXT])dnl
- dnl
-
-+AC_LIBTOOL_SYS_MAX_CMD_LEN
-+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-+AC_LIBTOOL_OBJDIR
-+
-+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
- _LT_AC_PROG_ECHO_BACKSLASH
-+
-+case $host_os in
-+aix3*)
-+ # AIX sometimes has problems with the GCC collect2 program. For some
-+ # reason, if we set the COLLECT_NAMES environment variable, the problems
-+ # vanish in a puff of smoke.
-+ if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+ fi
-+ ;;
-+esac
-+
-+# Sed substitution that helps us do robust quoting. It backslashifies
-+# metacharacters that are still active within double-quoted strings.
-+Xsed='sed -e s/^X//'
-+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
-+
-+# Same as above, but do not quote variable references.
-+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
-+
-+# Sed substitution to delay expansion of an escaped shell variable in a
-+# double_quote_subst'ed string.
-+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-+
-+# Sed substitution to avoid accidental globbing in evaled expressions
-+no_glob_subst='s/\*/\\\*/g'
-+
-+# Constants:
-+rm="rm -f"
-+
-+# Global variables:
-+default_ofile=libtool
-+can_build_shared=yes
-+
-+# All known linkers require a `.a' archive for static linking (except M$VC,
-+# which needs '.lib').
-+libext=a
-+ltmain="$ac_aux_dir/ltmain.sh"
-+ofile="$default_ofile"
-+with_gnu_ld="$lt_cv_prog_gnu_ld"
-+
-+AC_CHECK_TOOL(AR, ar, false)
-+AC_CHECK_TOOL(RANLIB, ranlib, :)
-+AC_CHECK_TOOL(STRIP, strip, :)
-+
-+old_CC="$CC"
-+old_CFLAGS="$CFLAGS"
-+
-+# Set sane defaults for various variables
-+test -z "$AR" && AR=ar
-+test -z "$AR_FLAGS" && AR_FLAGS=cru
-+test -z "$AS" && AS=as
-+test -z "$CC" && CC=cc
-+test -z "$LTCC" && LTCC=$CC
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+test -z "$LD" && LD=ld
-+test -z "$LN_S" && LN_S="ln -s"
-+test -z "$MAGIC_CMD" && MAGIC_CMD=file
-+test -z "$NM" && NM=nm
-+test -z "$SED" && SED=sed
-+test -z "$OBJDUMP" && OBJDUMP=objdump
-+test -z "$RANLIB" && RANLIB=:
-+test -z "$STRIP" && STRIP=:
-+test -z "$ac_objext" && ac_objext=o
-+
-+# Determine commands to create old-style static archives.
-+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
-+old_postinstall_cmds='chmod 644 $oldlib'
-+old_postuninstall_cmds=
-+
-+if test -n "$RANLIB"; then
-+ case $host_os in
-+ openbsd*)
-+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ *)
-+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ esac
-+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-+fi
-+
- # Only perform the check for file, if the check method requires it
- case $deplibs_check_method in
- file_magic*)
-@@ -211,327 +1173,78 @@
- ;;
- esac
-
--AC_CHECK_TOOL(RANLIB, ranlib, :)
--AC_CHECK_TOOL(STRIP, strip, :)
--
--ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
--ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
-+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
- enable_win32_dll=yes, enable_win32_dll=no)
-
--AC_ARG_ENABLE(libtool-lock,
-- [ --disable-libtool-lock avoid locking (might break parallel builds)])
-+AC_ARG_ENABLE([libtool-lock],
-+ [AC_HELP_STRING([--disable-libtool-lock],
-+ [avoid locking (might break parallel builds)])])
- test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
--# Some flags need to be propagated to the compiler or linker for good
--# libtool support.
--case $host in
--*-*-irix6*)
-- # Find out which ABI we are using.
-- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-- if AC_TRY_EVAL(ac_compile); then
-- case `/usr/bin/file conftest.$ac_objext` in
-- *32-bit*)
-- LD="${LD-ld} -32"
-- ;;
-- *N32*)
-- LD="${LD-ld} -n32"
-- ;;
-- *64-bit*)
-- LD="${LD-ld} -64"
-- ;;
-- esac
-- fi
-- rm -rf conftest*
-- ;;
-+AC_ARG_WITH([pic],
-+ [AC_HELP_STRING([--with-pic],
-+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-+ [pic_mode="$withval"],
-+ [pic_mode=default])
-+test -z "$pic_mode" && pic_mode=default
-
--*-*-sco3.2v5*)
-- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-- SAVE_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS -belf"
-- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-- [AC_LANG_SAVE
-- AC_LANG_C
-- AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-- AC_LANG_RESTORE])
-- 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"
-- fi
-- ;;
-+# Use C for the default configuration in the libtool script
-+tagname=
-+AC_LIBTOOL_LANG_C_CONFIG
-+_LT_AC_TAGCONFIG
-+])# AC_LIBTOOL_SETUP
-
--ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
--[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
-- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-- AC_CHECK_TOOL(AS, as, false)
-- AC_CHECK_TOOL(OBJDUMP, objdump, false)
-
-- # recent cygwin and mingw systems supply a stub DllMain which the user
-- # can override, but on older systems we have to supply one
-- AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain,
-- [AC_TRY_LINK([],
-- [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*);
-- DllMain (0, 0, 0);],
-- [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])])
--
-- case $host/$CC in
-- *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*)
-- # old mingw systems require "-dll" to link a DLL, while more recent ones
-- # require "-mdll"
-- SAVE_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS -mdll"
-- AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch,
-- [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])])
-- CFLAGS="$SAVE_CFLAGS" ;;
-- *-*-cygwin* | *-*-pw32*)
-- # cygwin systems need to pass --dll to the linker, and not link
-- # crt.o which will require a WinMain@16 definition.
-- lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;;
-- esac
-- ;;
-- ])
--esac
-+# _LT_AC_SYS_COMPILER
-+# -------------------
-+AC_DEFUN([_LT_AC_SYS_COMPILER],
-+[AC_REQUIRE([AC_PROG_CC])dnl
-
--_LT_AC_LTCONFIG_HACK
-+# If no C compiler was specified, use CC.
-+LTCC=${LTCC-"$CC"}
-
--])
--
--# AC_LIBTOOL_HEADER_ASSERT
--# ------------------------
--AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT],
--[AC_CACHE_CHECK([whether $CC supports assert without backlinking],
-- [lt_cv_func_assert_works],
-- [case $host in
-- *-*-solaris*)
-- if test "$GCC" = yes && test "$with_gnu_ld" != yes; then
-- case `$CC --version 2>/dev/null` in
-- [[12]].*) lt_cv_func_assert_works=no ;;
-- *) lt_cv_func_assert_works=yes ;;
-- esac
-- fi
-- ;;
-- esac])
--
--if test "x$lt_cv_func_assert_works" = xyes; then
-- AC_CHECK_HEADERS(assert.h)
--fi
--])# AC_LIBTOOL_HEADER_ASSERT
--
--# _LT_AC_CHECK_DLFCN
--# --------------------
--AC_DEFUN([_LT_AC_CHECK_DLFCN],
--[AC_CHECK_HEADERS(dlfcn.h)
--])# _LT_AC_CHECK_DLFCN
--
--# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
--# ---------------------------------
--AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
--[AC_REQUIRE([AC_CANONICAL_HOST])
--AC_REQUIRE([AC_PROG_NM])
--AC_REQUIRE([AC_OBJEXT])
--# Check for command to grab the raw symbol name followed by C symbol from nm.
--AC_MSG_CHECKING([command to parse $NM output])
--AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl
--
--# These are sane defaults that work on at least a few old systems.
--# [They come from Ultrix. What could be older than Ultrix?!! ;)]
--
--# Character class describing NM global symbol codes.
--symcode='[[BCDEGRST]]'
--
--# Regexp to match symbols that can be accessed directly from C.
--sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
--
--# Transform the above into a raw symbol and a C symbol.
--symxfrm='\1 \2\3 \3'
--
--# Transform an extracted symbol line into a proper C declaration
--lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
--
--# Transform an extracted symbol line into symbol name and symbol address
--lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
--
--# Define system-specific variables.
--case $host_os in
--aix*)
-- symcode='[[BCDT]]'
-- ;;
--cygwin* | mingw* | pw32*)
-- symcode='[[ABCDGISTW]]'
-- ;;
--hpux*) # Its linker distinguishes data from code symbols
-- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-- ;;
--irix* | nonstopux*)
-- symcode='[[BCDEGRST]]'
-- ;;
--osf*)
-- symcode='[[BCDEGQRST]]'
-- ;;
--solaris* | sysv5*)
-- symcode='[[BDT]]'
-- ;;
--sysv4)
-- symcode='[[DFNSTU]]'
-- ;;
--esac
--
--# Handle CRLF in mingw tool chain
--opt_cr=
--case $host_os in
--mingw*)
-- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-- ;;
--esac
--
--# If we're using GNU nm, then use its standard symbol codes.
--if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
-- symcode='[[ABCDGISTW]]'
--fi
--
--# Try without a prefix undercore, then with it.
--for ac_symprfx in "" "_"; do
--
-- # Write the raw and C identifiers.
--lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
--
-- # Check to see that the pipe works correctly.
-- pipe_works=no
-- rm -f conftest*
-- cat > conftest.$ac_ext <<EOF
--#ifdef __cplusplus
--extern "C" {
--#endif
--char nm_test_var;
--void nm_test_func(){}
--#ifdef __cplusplus
--}
--#endif
--int main(){nm_test_var='a';nm_test_func();return(0);}
--EOF
--
-- if AC_TRY_EVAL(ac_compile); then
-- # Now try to grab the symbols.
-- nlist=conftest.nm
-- if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
-- # Try sorting and uniquifying the output.
-- if sort "$nlist" | uniq > "$nlist"T; then
-- mv -f "$nlist"T "$nlist"
-- else
-- rm -f "$nlist"T
-- fi
--
-- # Make sure that we snagged all the symbols we need.
-- if egrep ' nm_test_var$' "$nlist" >/dev/null; then
-- if egrep ' nm_test_func$' "$nlist" >/dev/null; then
-- cat <<EOF > conftest.$ac_ext
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--EOF
-- # Now generate the symbol file.
-- eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
--
-- cat <<EOF >> conftest.$ac_ext
--#if defined (__STDC__) && __STDC__
--# define lt_ptr void *
--#else
--# define lt_ptr char *
--# define const
--#endif
--
--/* The mapping between symbol names and symbols. */
--const struct {
-- const char *name;
-- lt_ptr address;
--}
--lt_preloaded_symbols[[]] =
--{
--EOF
-- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
-- cat <<\EOF >> conftest.$ac_ext
-- {0, (lt_ptr) 0}
--};
-+# Allow CC to be a program name with arguments.
-+compiler=$CC
-+])# _LT_AC_SYS_COMPILER
-
--#ifdef __cplusplus
--}
--#endif
--EOF
-- # Now try linking the two files.
-- mv conftest.$ac_objext conftstm.$ac_objext
-- save_LIBS="$LIBS"
-- save_CFLAGS="$CFLAGS"
-- LIBS="conftstm.$ac_objext"
-- CFLAGS="$CFLAGS$no_builtin_flag"
-- if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
-- pipe_works=yes
-- fi
-- LIBS="$save_LIBS"
-- CFLAGS="$save_CFLAGS"
-- else
-- echo "cannot find nm_test_func in $nlist" >&AC_FD_CC
-- fi
-- else
-- echo "cannot find nm_test_var in $nlist" >&AC_FD_CC
-- fi
-- else
-- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC
-- fi
-- else
-- echo "$progname: failed program was:" >&AC_FD_CC
-- cat conftest.$ac_ext >&5
-- fi
-- rm -f conftest* conftst*
-
-- # Do not use the global_symbol_pipe unless it works.
-- if test "$pipe_works" = yes; then
-- break
-- else
-- lt_cv_sys_global_symbol_pipe=
-- fi
--done
--])
--global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
--if test -z "$lt_cv_sys_global_symbol_pipe"; then
-- global_symbol_to_cdecl=
-- global_symbol_to_c_name_address=
--else
-- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
-- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
--fi
--if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
--then
-- AC_MSG_RESULT(failed)
--else
-- AC_MSG_RESULT(ok)
--fi
--]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-+# _LT_AC_SYS_LIBPATH_AIX
-+# ----------------------
-+# Links a minimal program and checks the executable
-+# for the system default hardcoded library path. In most cases,
-+# this is /usr/lib:/lib, but when the MPI compilers are used
-+# the location of the communication and MPI libs are included too.
-+# If we don't find anything, use the default library path according
-+# to the aix ld manual.
-+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
-+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`
-+# Check for a 64-bit object if we didn't find anything.
-+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-+}'`; fi],[])
-+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+])# _LT_AC_SYS_LIBPATH_AIX
-+
-+
-+# _LT_AC_SHELL_INIT(ARG)
-+# ----------------------
-+AC_DEFUN([_LT_AC_SHELL_INIT],
-+[ifdef([AC_DIVERSION_NOTICE],
-+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-+ [AC_DIVERT_PUSH(NOTICE)])
-+$1
-+AC_DIVERT_POP
-+])# _LT_AC_SHELL_INIT
-
--# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
--# ---------------------------------
--AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR],
--[# Find the correct PATH separator. Usually this is `:', but
--# DJGPP uses `;' like DOS.
--if test "X${PATH_SEPARATOR+set}" != Xset; then
-- UNAME=${UNAME-`uname 2>/dev/null`}
-- case X$UNAME in
-- *-DOS) lt_cv_sys_path_separator=';' ;;
-- *) lt_cv_sys_path_separator=':' ;;
-- esac
-- PATH_SEPARATOR=$lt_cv_sys_path_separator
--fi
--])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
-
- # _LT_AC_PROG_ECHO_BACKSLASH
- # --------------------------
- # Add some code to the start of the generated configure script which
- # will find an echo command which doesn't interpret backslashes.
- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
--[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-- [AC_DIVERT_PUSH(NOTICE)])
--_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR
--
-+[_LT_AC_SHELL_INIT([
- # Check that we are running under the correct shell.
- SHELL=${CONFIG_SHELL-/bin/sh}
-
-@@ -549,7 +1262,7 @@
- elif test "X[$]1" = X--fallback-echo; then
- # Avoid inline document here, it may be left over
- :
--elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
-+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
- # Yippee, $echo works!
- :
- else
-@@ -561,7 +1274,7 @@
- # used as fallback echo
- shift
- cat <<EOF
--$*
-+[$]*
- EOF
- exit 0
- fi
-@@ -595,8 +1308,9 @@
- #
- # So, first we look for a working echo in the user's PATH.
-
-- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for dir in $PATH /usr/ucb; do
-+ IFS="$lt_save_ifs"
- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-@@ -605,7 +1319,7 @@
- break
- fi
- done
-- IFS="$save_ifs"
-+ IFS="$lt_save_ifs"
-
- if test "X$echo" = Xecho; then
- # We didn't find a better echo, so look for alternatives.
-@@ -678,47 +1392,328 @@
- fi
-
- AC_SUBST(ECHO)
--AC_DIVERT_POP
--])# _LT_AC_PROG_ECHO_BACKSLASH
-+])])# _LT_AC_PROG_ECHO_BACKSLASH
-
--# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
--# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
--# ------------------------------------------------------------------
--AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
--[if test "$cross_compiling" = yes; then :
-- [$4]
--else
-- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
-- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-- lt_status=$lt_dlunknown
-- cat > conftest.$ac_ext <<EOF
--[#line __oline__ "configure"
--#include "confdefs.h"
-
--#if HAVE_DLFCN_H
--#include <dlfcn.h>
--#endif
-+# _LT_AC_LOCK
-+# -----------
-+AC_DEFUN([_LT_AC_LOCK],
-+[AC_ARG_ENABLE([libtool-lock],
-+ [AC_HELP_STRING([--disable-libtool-lock],
-+ [avoid locking (might break parallel builds)])])
-+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
--#include <stdio.h>
-+# Some flags need to be propagated to the compiler or linker for good
-+# libtool support.
-+case $host in
-+ia64-*-hpux*)
-+ # Find out which ABI we are using.
-+ echo 'int i;' > conftest.$ac_ext
-+ if AC_TRY_EVAL(ac_compile); then
-+ case `/usr/bin/file conftest.$ac_objext` in
-+ *ELF-32*)
-+ HPUX_IA64_MODE="32"
-+ ;;
-+ *ELF-64*)
-+ HPUX_IA64_MODE="64"
-+ ;;
-+ esac
-+ fi
-+ rm -rf conftest*
-+ ;;
-+*-*-irix6*)
-+ # Find out which ABI we are using.
-+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-+ if AC_TRY_EVAL(ac_compile); then
-+ if test "$lt_cv_prog_gnu_ld" = yes; then
-+ case `/usr/bin/file conftest.$ac_objext` in
-+ *32-bit*)
-+ LD="${LD-ld} -melf32bsmip"
-+ ;;
-+ *N32*)
-+ LD="${LD-ld} -melf32bmipn32"
-+ ;;
-+ *64-bit*)
-+ LD="${LD-ld} -melf64bmip"
-+ ;;
-+ esac
-+ else
-+ case `/usr/bin/file conftest.$ac_objext` in
-+ *32-bit*)
-+ LD="${LD-ld} -32"
-+ ;;
-+ *N32*)
-+ LD="${LD-ld} -n32"
-+ ;;
-+ *64-bit*)
-+ LD="${LD-ld} -64"
-+ ;;
-+ esac
-+ fi
-+ fi
-+ rm -rf conftest*
-+ ;;
-
--#ifdef RTLD_GLOBAL
--# define LT_DLGLOBAL RTLD_GLOBAL
--#else
--# ifdef DL_GLOBAL
--# define LT_DLGLOBAL DL_GLOBAL
--# else
--# define LT_DLGLOBAL 0
--# endif
--#endif
-+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
-+ # Find out which ABI we are using.
-+ echo 'int i;' > conftest.$ac_ext
-+ if AC_TRY_EVAL(ac_compile); then
-+ case "`/usr/bin/file conftest.o`" in
-+ *32-bit*)
-+ case $host in
-+ x86_64-*linux*)
-+ LD="${LD-ld} -m elf_i386"
-+ ;;
-+ ppc64-*linux*|powerpc64-*linux*)
-+ LD="${LD-ld} -m elf32ppclinux"
-+ ;;
-+ s390x-*linux*)
-+ LD="${LD-ld} -m elf_s390"
-+ ;;
-+ sparc64-*linux*)
-+ LD="${LD-ld} -m elf32_sparc"
-+ ;;
-+ esac
-+ ;;
-+ *64-bit*)
-+ case $host in
-+ x86_64-*linux*)
-+ LD="${LD-ld} -m elf_x86_64"
-+ ;;
-+ ppc*-*linux*|powerpc*-*linux*)
-+ LD="${LD-ld} -m elf64ppc"
-+ ;;
-+ s390*-*linux*)
-+ LD="${LD-ld} -m elf64_s390"
-+ ;;
-+ sparc*-*linux*)
-+ LD="${LD-ld} -m elf64_sparc"
-+ ;;
-+ esac
-+ ;;
-+ esac
-+ fi
-+ rm -rf conftest*
-+ ;;
-
--/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-- find out it does not work in some platform. */
--#ifndef LT_DLLAZY_OR_NOW
--# ifdef RTLD_LAZY
--# define LT_DLLAZY_OR_NOW RTLD_LAZY
--# else
--# ifdef DL_LAZY
--# define LT_DLLAZY_OR_NOW DL_LAZY
-+*-*-sco3.2v5*)
-+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-+ SAVE_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -belf"
-+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-+ [AC_LANG_PUSH(C)
-+ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-+ AC_LANG_POP])
-+ 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"
-+ fi
-+ ;;
-+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
-+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
-+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-+ AC_CHECK_TOOL(AS, as, false)
-+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
-+ ;;
-+ ])
-+esac
-+
-+need_locks="$enable_libtool_lock"
-+
-+])# _LT_AC_LOCK
-+
-+
-+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-+# ----------------------------------------------------------------
-+# Check whether the given compiler option works
-+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
-+[AC_REQUIRE([LT_AC_PROG_SED])
-+AC_CACHE_CHECK([$1], [$2],
-+ [$2=no
-+ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+ lt_compiler_flag="$3"
-+ # Insert the option either (1) after the last *FLAGS variable, or
-+ # (2) before a word containing "conftest.", or (3) at the end.
-+ # Note that $ac_compile itself does not contain backslashes and begins
-+ # with a dollar sign (not a hyphen), so the echo should work correctly.
-+ # The option is referenced via a variable to avoid confusing sed.
-+ lt_compile=`echo "$ac_compile" | $SED \
-+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-+ -e 's:$: $lt_compiler_flag:'`
-+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-+ (eval "$lt_compile" 2>conftest.err)
-+ ac_status=$?
-+ cat conftest.err >&AS_MESSAGE_LOG_FD
-+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-+ if (exit $ac_status) && test -s "$ac_outfile"; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test ! -s conftest.err; then
-+ $2=yes
-+ fi
-+ fi
-+ $rm conftest*
-+])
-+
-+if test x"[$]$2" = xyes; then
-+ ifelse([$5], , :, [$5])
-+else
-+ ifelse([$6], , :, [$6])
-+fi
-+])# AC_LIBTOOL_COMPILER_OPTION
-+
-+
-+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-+# [ACTION-SUCCESS], [ACTION-FAILURE])
-+# ------------------------------------------------------------
-+# Check whether the given compiler option works
-+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
-+[AC_CACHE_CHECK([$1], [$2],
-+ [$2=no
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS $3"
-+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
-+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s conftest.err; then
-+ # Append any errors to the config.log.
-+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
-+ else
-+ $2=yes
-+ fi
-+ fi
-+ $rm conftest*
-+ LDFLAGS="$save_LDFLAGS"
-+])
-+
-+if test x"[$]$2" = xyes; then
-+ ifelse([$4], , :, [$4])
-+else
-+ ifelse([$5], , :, [$5])
-+fi
-+])# AC_LIBTOOL_LINKER_OPTION
-+
-+
-+# AC_LIBTOOL_SYS_MAX_CMD_LEN
-+# --------------------------
-+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
-+[# find the maximum length of command line arguments
-+AC_MSG_CHECKING([the maximum length of command line arguments])
-+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-+ i=0
-+ teststring="ABCD"
-+
-+ case $build_os in
-+ msdosdjgpp*)
-+ # On DJGPP, this test can blow up pretty badly due to problems in libc
-+ # (any single argument exceeding 2000 bytes causes a buffer overrun
-+ # during glob expansion). Even if it were fixed, the result of this
-+ # check would be larger than it should be.
-+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
-+ ;;
-+
-+ gnu*)
-+ # Under GNU Hurd, this test is not required because there is
-+ # no limit to the length of command line arguments.
-+ # Libtool will interpret -1 as no limit whatsoever
-+ lt_cv_sys_max_cmd_len=-1;
-+ ;;
-+
-+ cygwin* | mingw*)
-+ # On Win9x/ME, this test blows up -- it succeeds, but takes
-+ # about 5 minutes as the teststring grows exponentially.
-+ # Worse, since 9x/ME are not pre-emptively multitasking,
-+ # you end up with a "frozen" computer, even though with patience
-+ # the test eventually succeeds (with a max line length of 256k).
-+ # Instead, let's just punt: use the minimum linelength reported by
-+ # all of the supported platforms: 8192 (on NT/2K/XP).
-+ lt_cv_sys_max_cmd_len=8192;
-+ ;;
-+
-+ amigaos*)
-+ # On AmigaOS with pdksh, this test takes hours, literally.
-+ # So we just punt and use a minimum line length of 8192.
-+ lt_cv_sys_max_cmd_len=8192;
-+ ;;
-+
-+ *)
-+ # If test is not a shell built-in, we'll probably end up computing a
-+ # maximum length that is only half of the actual maximum length, but
-+ # we can't tell.
-+ while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
-+ = "XX$teststring") >/dev/null 2>&1 &&
-+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
-+ lt_cv_sys_max_cmd_len=$new_result &&
-+ test $i != 17 # 1/2 MB should be enough
-+ do
-+ i=`expr $i + 1`
-+ teststring=$teststring$teststring
-+ done
-+ teststring=
-+ # Add a significant safety factor because C++ compilers can tack on massive
-+ # amounts of additional arguments before passing them to the linker.
-+ # It appears as though 1/2 is a usable value.
-+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-+ ;;
-+ esac
-+])
-+if test -n $lt_cv_sys_max_cmd_len ; then
-+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-+else
-+ AC_MSG_RESULT(none)
-+fi
-+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
-+
-+
-+# _LT_AC_CHECK_DLFCN
-+# --------------------
-+AC_DEFUN([_LT_AC_CHECK_DLFCN],
-+[AC_CHECK_HEADERS(dlfcn.h)dnl
-+])# _LT_AC_CHECK_DLFCN
-+
-+
-+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-+# ------------------------------------------------------------------
-+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
-+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
-+if test "$cross_compiling" = yes; then :
-+ [$4]
-+else
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+[#line __oline__ "configure"
-+#include "confdefs.h"
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-+
-+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-+ find out it does not work in some platform. */
-+#ifndef LT_DLLAZY_OR_NOW
-+# ifdef RTLD_LAZY
-+# define LT_DLLAZY_OR_NOW RTLD_LAZY
-+# else
-+# ifdef DL_LAZY
-+# define LT_DLLAZY_OR_NOW DL_LAZY
- # else
- # ifdef RTLD_NOW
- # define LT_DLLAZY_OR_NOW RTLD_NOW
-@@ -769,10 +1764,12 @@
- rm -fr conftest*
- ])# _LT_AC_TRY_DLOPEN_SELF
-
-+
- # AC_LIBTOOL_DLOPEN_SELF
- # -------------------
- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
--[if test "x$enable_dlopen" != xyes; then
-+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
-+if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
- enable_dlopen_self_static=unknown
-@@ -787,24 +1784,39 @@
- lt_cv_dlopen_self=yes
- ;;
-
-- cygwin* | mingw* | pw32*)
-+ mingw* | pw32*)
- lt_cv_dlopen="LoadLibrary"
- lt_cv_dlopen_libs=
- ;;
-
-+ cygwin*)
-+ lt_cv_dlopen="dlopen"
-+ lt_cv_dlopen_libs=
-+ ;;
-+
-+ darwin*)
-+ # if libdl is installed we need to link against it
-+ AC_CHECK_LIB([dl], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-+ lt_cv_dlopen="dyld"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+ ])
-+ ;;
-+
- *)
- AC_CHECK_FUNC([shl_load],
-- [lt_cv_dlopen="shl_load"],
-+ [lt_cv_dlopen="shl_load"],
- [AC_CHECK_LIB([dld], [shl_load],
-- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
-+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
- [AC_CHECK_FUNC([dlopen],
- [lt_cv_dlopen="dlopen"],
- [AC_CHECK_LIB([dl], [dlopen],
-- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
- [AC_CHECK_LIB([svld], [dlopen],
-- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
- [AC_CHECK_LIB([dld], [dld_link],
-- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
- ])
- ])
- ])
-@@ -822,7 +1834,6 @@
- case $lt_cv_dlopen in
- dlopen)
- save_CPPFLAGS="$CPPFLAGS"
-- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
- save_LDFLAGS="$LDFLAGS"
-@@ -866,707 +1877,1838 @@
- fi
- ])# AC_LIBTOOL_DLOPEN_SELF
-
--AC_DEFUN([_LT_AC_LTCONFIG_HACK],
--[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl
--# Sed substitution that helps us do robust quoting. It backslashifies
--# metacharacters that are still active within double-quoted strings.
--Xsed='sed -e s/^X//'
--sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g'
--
--# Same as above, but do not quote variable references.
--double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g'
--
--# Sed substitution to delay expansion of an escaped shell variable in a
--# double_quote_subst'ed string.
--delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
--# Constants:
--rm="rm -f"
-+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
-+# ---------------------------------
-+# Check to see if options -c and -o are simultaneously supported by compiler
-+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
-+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
-+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-+ $rm -r conftest 2>/dev/null
-+ mkdir conftest
-+ cd conftest
-+ mkdir out
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+
-+ lt_compiler_flag="-o out/conftest2.$ac_objext"
-+ # Insert the option either (1) after the last *FLAGS variable, or
-+ # (2) before a word containing "conftest.", or (3) at the end.
-+ # Note that $ac_compile itself does not contain backslashes and begins
-+ # with a dollar sign (not a hyphen), so the echo should work correctly.
-+ lt_compile=`echo "$ac_compile" | $SED \
-+ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-+ -e 's:$: $lt_compiler_flag:'`
-+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-+ (eval "$lt_compile" 2>out/conftest.err)
-+ ac_status=$?
-+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
-+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
-+ then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test ! -s out/conftest.err; then
-+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-+ fi
-+ fi
-+ chmod u+w .
-+ $rm conftest*
-+ # SGI C++ compiler will create directory out/ii_files/ for
-+ # template instantiation
-+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-+ $rm out/* && rmdir out
-+ cd ..
-+ rmdir conftest
-+ $rm conftest*
-+])
-+])# AC_LIBTOOL_PROG_CC_C_O
-
--# Global variables:
--default_ofile=libtool
--can_build_shared=yes
-
--# All known linkers require a `.a' archive for static linking (except M$VC,
--# which needs '.lib').
--libext=a
--ltmain="$ac_aux_dir/ltmain.sh"
--ofile="$default_ofile"
--with_gnu_ld="$lt_cv_prog_gnu_ld"
--need_locks="$enable_libtool_lock"
-+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
-+# -----------------------------------------
-+# Check to see if we can do hard links to lock some files if needed
-+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
-+[AC_REQUIRE([_LT_AC_LOCK])dnl
-
--old_CC="$CC"
--old_CFLAGS="$CFLAGS"
-+hard_links="nottested"
-+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
-+ # do not overwrite the value of need_locks provided by the user
-+ AC_MSG_CHECKING([if we can lock with hard links])
-+ hard_links=yes
-+ $rm conftest*
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ touch conftest.a
-+ ln conftest.a conftest.b 2>&5 || hard_links=no
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ AC_MSG_RESULT([$hard_links])
-+ if test "$hard_links" = no; then
-+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
-+ need_locks=warn
-+ fi
-+else
-+ need_locks=no
-+fi
-+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
-
--# Set sane defaults for various variables
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
--test -z "$AS" && AS=as
--test -z "$CC" && CC=cc
--test -z "$DLLTOOL" && DLLTOOL=dlltool
--test -z "$LD" && LD=ld
--test -z "$LN_S" && LN_S="ln -s"
--test -z "$MAGIC_CMD" && MAGIC_CMD=file
--test -z "$NM" && NM=nm
--test -z "$OBJDUMP" && OBJDUMP=objdump
--test -z "$RANLIB" && RANLIB=:
--test -z "$STRIP" && STRIP=:
--test -z "$ac_objext" && ac_objext=o
-
--if test x"$host" != x"$build"; then
-- ac_tool_prefix=${host_alias}-
-+# AC_LIBTOOL_OBJDIR
-+# -----------------
-+AC_DEFUN([AC_LIBTOOL_OBJDIR],
-+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-+[rm -f .libs 2>/dev/null
-+mkdir .libs 2>/dev/null
-+if test -d .libs; then
-+ lt_cv_objdir=.libs
- else
-- ac_tool_prefix=
-+ # MS-DOS does not allow filenames that begin with a dot.
-+ lt_cv_objdir=_libs
- fi
-+rmdir .libs 2>/dev/null])
-+objdir=$lt_cv_objdir
-+])# AC_LIBTOOL_OBJDIR
-
--# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
--case $host_os in
--linux-gnu*) ;;
--linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
--esac
-
--case $host_os in
--aix3*)
-- # AIX sometimes has problems with the GCC collect2 program. For some
-- # reason, if we set the COLLECT_NAMES environment variable, the problems
-- # vanish in a puff of smoke.
-- if test "X${COLLECT_NAMES+set}" != Xset; then
-- COLLECT_NAMES=
-- export COLLECT_NAMES
-+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
-+# ----------------------------------------------
-+# Check hardcoding attributes.
-+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
-+[AC_MSG_CHECKING([how to hardcode library paths into programs])
-+_LT_AC_TAGVAR(hardcode_action, $1)=
-+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
-+ test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \
-+ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then
-+
-+ # We can hardcode non-existant directories.
-+ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
-+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
-+ # have to relink, otherwise we might link with an installed library
-+ # when we should be linking with a yet-to-be-installed one
-+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-+ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
-+ # Linking always hardcodes the temporary library directory.
-+ _LT_AC_TAGVAR(hardcode_action, $1)=relink
-+ else
-+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
-+ _LT_AC_TAGVAR(hardcode_action, $1)=immediate
- fi
-- ;;
--esac
-+else
-+ # We cannot hardcode anything, or else we can only hardcode existing
-+ # directories.
-+ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
-+fi
-+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
-
--# Determine commands to create old-style static archives.
--old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
--old_postinstall_cmds='chmod 644 $oldlib'
--old_postuninstall_cmds=
-+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
-+ # Fast installation is not supported
-+ enable_fast_install=no
-+elif test "$shlibpath_overrides_runpath" = yes ||
-+ test "$enable_shared" = no; then
-+ # Fast installation is not necessary
-+ enable_fast_install=needless
-+fi
-+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
-
--if test -n "$RANLIB"; then
-+
-+# AC_LIBTOOL_SYS_LIB_STRIP
-+# ------------------------
-+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
-+[striplib=
-+old_striplib=
-+AC_MSG_CHECKING([whether stripping libraries is possible])
-+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-+ AC_MSG_RESULT([yes])
-+else
-+# FIXME - insert some real tests, host_os isn't really good enough
- case $host_os in
-- openbsd*)
-- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
-- ;;
-- *)
-- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-+ darwin*)
-+ if test -n "$STRIP" ; then
-+ striplib="$STRIP -x"
-+ AC_MSG_RESULT([yes])
-+ else
-+ AC_MSG_RESULT([no])
-+fi
-+ ;;
-+ *)
-+ AC_MSG_RESULT([no])
- ;;
- esac
-- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
- fi
-+])# AC_LIBTOOL_SYS_LIB_STRIP
-
--# Allow CC to be a program name with arguments.
--set dummy $CC
--compiler="[$]2"
-
--AC_MSG_CHECKING([for objdir])
--rm -f .libs 2>/dev/null
--mkdir .libs 2>/dev/null
--if test -d .libs; then
-- objdir=.libs
-+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
-+# -----------------------------
-+# PORTME Fill in your ld.so characteristics
-+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
-+[AC_MSG_CHECKING([dynamic linker characteristics])
-+library_names_spec=
-+libname_spec='lib$name'
-+soname_spec=
-+shrext_cmds=".so"
-+postinstall_cmds=
-+postuninstall_cmds=
-+finish_cmds=
-+finish_eval=
-+shlibpath_var=
-+shlibpath_overrides_runpath=unknown
-+version_type=none
-+dynamic_linker="$host_os ld.so"
-+sys_lib_dlsearch_path_spec="/lib /usr/lib"
-+if test "$GCC" = yes; then
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-+ # if the path contains ";" then we assume it to be the separator
-+ # otherwise default to the standard path separator (i.e. ":") - it is
-+ # assumed that no part of a normal pathname contains ";" but that should
-+ # okay in the real world where ";" in dirpaths is itself problematic.
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+ fi
- else
-- # MS-DOS does not allow filenames that begin with a dot.
-- objdir=_libs
-+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
- fi
--rmdir .libs 2>/dev/null
--AC_MSG_RESULT($objdir)
--
-+need_lib_prefix=unknown
-+hardcode_into_libs=no
-
--AC_ARG_WITH(pic,
--[ --with-pic try to use only PIC/non-PIC objects [default=use both]],
--pic_mode="$withval", pic_mode=default)
--test -z "$pic_mode" && pic_mode=default
-+# when you set need_version to no, make sure it does not cause -set_version
-+# flags to be left without arguments
-+need_version=unknown
-
--# We assume here that the value for lt_cv_prog_cc_pic will not be cached
--# in isolation, and that seeing it set (from the cache) indicates that
--# the associated values are set (in the cache) correctly too.
--AC_MSG_CHECKING([for $compiler option to produce PIC])
--AC_CACHE_VAL(lt_cv_prog_cc_pic,
--[ lt_cv_prog_cc_pic=
-- lt_cv_prog_cc_shlib=
-- lt_cv_prog_cc_wl=
-- lt_cv_prog_cc_static=
-- lt_cv_prog_cc_no_builtin=
-- lt_cv_prog_cc_can_build_shared=$can_build_shared
-+case $host_os in
-+aix3*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-+ shlibpath_var=LIBPATH
-
-- if test "$GCC" = yes; then
-- lt_cv_prog_cc_wl='-Wl,'
-- lt_cv_prog_cc_static='-static'
-+ # AIX 3 has no versioning support, so we append a major version to the name.
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ ;;
-
-- case $host_os in
-- aix*)
-- # Below there is a dirty hack to force normal static linking with -ldl
-- # The problem is because libdl dynamically linked with both libc and
-- # libC (AIX C++ library), which obviously doesn't included in libraries
-- # list by gcc. This cause undefined symbols with -static flags.
-- # This hack allows C programs to be linked with "-static -ldl", but
-- # not sure about C++ programs.
-- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
-- ;;
-- amigaos*)
-- # FIXME: we need at least 68020 code to build shared libraries, but
-- # adding the `-m68020' flag to GCC prevents building anything better,
-- # like `-m68040'.
-- lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
-- ;;
-- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-- # PIC is the default for these OSes.
-- ;;
-- darwin* | rhapsody*)
-- # PIC is the default on this platform
-- # Common symbols not allowed in MH_DYLIB files
-- lt_cv_prog_cc_pic='-fno-common'
-- ;;
-- cygwin* | mingw* | pw32* | os2*)
-- # This hack is so that the source file can tell whether it is being
-- # built for inclusion in a dll (and should export symbols for example).
-- lt_cv_prog_cc_pic='-DDLL_EXPORT'
-- ;;
-- sysv4*MP*)
-- if test -d /usr/nec; then
-- lt_cv_prog_cc_pic=-Kconform_pic
-- fi
-- ;;
-- *)
-- lt_cv_prog_cc_pic='-fPIC'
-- ;;
-- esac
-+aix4* | aix5*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ hardcode_into_libs=yes
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 supports IA64
-+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
- else
-- # PORTME Check for PIC flags for the system compiler.
-+ # With GCC up to 2.95.x, collect2 would create an import file
-+ # for dependence libraries. The import file would start with
-+ # the line `#! .'. This would cause the generated library to
-+ # depend on `.', always an invalid library. This was fixed in
-+ # development snapshots of GCC prior to 3.0.
- case $host_os in
-- aix3* | aix4* | aix5*)
-- lt_cv_prog_cc_wl='-Wl,'
-- # All AIX code is PIC.
-- if test "$host_cpu" = ia64; then
-- # AIX 5 now supports IA64 processor
-- lt_cv_prog_cc_static='-Bstatic'
-+ aix4 | aix4.[[01]] | aix4.[[01]].*)
-+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-+ echo ' yes '
-+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-+ :
- else
-- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
-+ can_build_shared=no
- fi
- ;;
-+ esac
-+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-+ # soname into executable. Probably we can add versioning support to
-+ # collect2, so additional links can be useful in future.
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-+ # instead of lib<name>.a to let people know that these are not
-+ # typical AIX shared libraries.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ else
-+ # We preserve .a as extension for shared libraries through AIX4.2
-+ # and later when we are not doing run time linking.
-+ library_names_spec='${libname}${release}.a $libname.a'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ fi
-+ shlibpath_var=LIBPATH
-+ fi
-+ ;;
-
-- hpux9* | hpux10* | hpux11*)
-- # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
-- lt_cv_prog_cc_wl='-Wl,'
-- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
-- lt_cv_prog_cc_pic='+Z'
-- ;;
--
-- irix5* | irix6* | nonstopux*)
-- lt_cv_prog_cc_wl='-Wl,'
-- lt_cv_prog_cc_static='-non_shared'
-- # PIC (with -KPIC) is the default.
-- ;;
--
-- cygwin* | mingw* | pw32* | os2*)
-- # This hack is so that the source file can tell whether it is being
-- # built for inclusion in a dll (and should export symbols for example).
-- lt_cv_prog_cc_pic='-DDLL_EXPORT'
-- ;;
--
-- newsos6)
-- lt_cv_prog_cc_pic='-KPIC'
-- lt_cv_prog_cc_static='-Bstatic'
-- ;;
--
-- osf3* | osf4* | osf5*)
-- # All OSF/1 code is PIC.
-- lt_cv_prog_cc_wl='-Wl,'
-- lt_cv_prog_cc_static='-non_shared'
-- ;;
-+amigaos*)
-+ library_names_spec='$libname.ixlibrary $libname.a'
-+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
-+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-+ ;;
-
-- sco3.2v5*)
-- lt_cv_prog_cc_pic='-Kpic'
-- lt_cv_prog_cc_static='-dn'
-- lt_cv_prog_cc_shlib='-belf'
-- ;;
-+beos*)
-+ library_names_spec='${libname}${shared_ext}'
-+ dynamic_linker="$host_os ld.so"
-+ shlibpath_var=LIBRARY_PATH
-+ ;;
-
-- solaris*)
-- lt_cv_prog_cc_pic='-KPIC'
-- lt_cv_prog_cc_static='-Bstatic'
-- lt_cv_prog_cc_wl='-Wl,'
-- ;;
-+bsdi4*)
-+ version_type=linux
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-+ # the default ld.so.conf also contains /usr/contrib/lib and
-+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-+ # libtool to hard-code these into programs
-+ ;;
-
-- sunos4*)
-- lt_cv_prog_cc_pic='-PIC'
-- lt_cv_prog_cc_static='-Bstatic'
-- lt_cv_prog_cc_wl='-Qoption ld '
-- ;;
-+cygwin* | mingw* | pw32*)
-+ version_type=windows
-+ shrext_cmds=".dll"
-+ need_version=no
-+ need_lib_prefix=no
-
-- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-- lt_cv_prog_cc_pic='-KPIC'
-- lt_cv_prog_cc_static='-Bstatic'
-- lt_cv_prog_cc_wl='-Wl,'
-- ;;
-+ case $GCC,$host_os in
-+ yes,cygwin* | yes,mingw* | yes,pw32*)
-+ library_names_spec='$libname.dll.a'
-+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+ postinstall_cmds='base_file=`basename \${file}`~
-+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog $dir/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $rm \$dlpath'
-+ shlibpath_overrides_runpath=yes
-
-- uts4*)
-- lt_cv_prog_cc_pic='-pic'
-- lt_cv_prog_cc_static='-Bstatic'
-+ case $host_os in
-+ cygwin*)
-+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
- ;;
--
-- sysv4*MP*)
-- if test -d /usr/nec ;then
-- lt_cv_prog_cc_pic='-Kconform_pic'
-- lt_cv_prog_cc_static='-Bstatic'
-+ mingw*)
-+ # MinGW DLLs use traditional 'lib' prefix
-+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
-+ # It is most probably a Windows format PATH printed by
-+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
-+ # path with ; separators, and with drive letters. We can handle the
-+ # drive letters (cygwin fileutils understands them), so leave them,
-+ # especially as we might pass files found there to a mingw objdump,
-+ # which wouldn't understand a cygwinified path. Ahh.
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+ else
-+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
- fi
- ;;
--
-- *)
-- lt_cv_prog_cc_can_build_shared=no
-+ pw32*)
-+ # pw32 DLLs use 'pw' prefix rather than 'lib'
-+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- ;;
- esac
-- fi
--])
--if test -z "$lt_cv_prog_cc_pic"; then
-- AC_MSG_RESULT([none])
--else
-- AC_MSG_RESULT([$lt_cv_prog_cc_pic])
--
-- # Check to make sure the pic_flag actually works.
-- AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works])
-- AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl
-- save_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
-- AC_TRY_COMPILE([], [], [dnl
-- case $host_os in
-- hpux9* | hpux10* | hpux11*)
-- # On HP-UX, both CC and GCC only warn that PIC is supported... then
-- # they create non-PIC objects. So, if there were any warnings, we
-- # assume that PIC is not supported.
-- if test -s conftest.err; then
-- lt_cv_prog_cc_pic_works=no
-- else
-- lt_cv_prog_cc_pic_works=yes
-- fi
-- ;;
-- *)
-- lt_cv_prog_cc_pic_works=yes
-- ;;
-- esac
-- ], [dnl
-- lt_cv_prog_cc_pic_works=no
-- ])
-- CFLAGS="$save_CFLAGS"
-- ])
--
-- if test "X$lt_cv_prog_cc_pic_works" = Xno; then
-- lt_cv_prog_cc_pic=
-- lt_cv_prog_cc_can_build_shared=no
-- else
-- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
-- fi
--
-- AC_MSG_RESULT([$lt_cv_prog_cc_pic_works])
--fi
--
--# Check for any special shared library compilation flags.
--if test -n "$lt_cv_prog_cc_shlib"; then
-- AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries])
-- if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then :
-- else
-- AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure])
-- lt_cv_prog_cc_can_build_shared=no
-- fi
--fi
--
--AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works])
--AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl
-- lt_cv_prog_cc_static_works=no
-- save_LDFLAGS="$LDFLAGS"
-- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
-- AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes])
-- LDFLAGS="$save_LDFLAGS"
--])
--
--# Belt *and* braces to stop my trousers falling down:
--test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
--AC_MSG_RESULT([$lt_cv_prog_cc_static_works])
--
--pic_flag="$lt_cv_prog_cc_pic"
--special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
--wl="$lt_cv_prog_cc_wl"
--link_static_flag="$lt_cv_prog_cc_static"
--no_builtin_flag="$lt_cv_prog_cc_no_builtin"
--can_build_shared="$lt_cv_prog_cc_can_build_shared"
--
--
--# Check to see if options -o and -c are simultaneously supported by compiler
--AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext])
--AC_CACHE_VAL([lt_cv_compiler_c_o], [
--$rm -r conftest 2>/dev/null
--mkdir conftest
--cd conftest
--echo "int some_variable = 0;" > conftest.$ac_ext
--mkdir out
--# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
--# that will create temporary files in the current directory regardless of
--# the output directory. Thus, making CWD read-only will cause this test
--# to fail, enabling locking or at least warning the user not to do parallel
--# builds.
--chmod -w .
--save_CFLAGS="$CFLAGS"
--CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
--compiler_c_o=no
--if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings
-- if test -s out/conftest.err; then
-- lt_cv_compiler_c_o=no
-- else
-- lt_cv_compiler_c_o=yes
-- fi
--else
-- # Append any errors to the config.log.
-- cat out/conftest.err 1>&AC_FD_CC
-- lt_cv_compiler_c_o=no
--fi
--CFLAGS="$save_CFLAGS"
--chmod u+w .
--$rm conftest* out/*
--rmdir out
--cd ..
--rmdir conftest
--$rm -r conftest 2>/dev/null
--])
--compiler_c_o=$lt_cv_compiler_c_o
--AC_MSG_RESULT([$compiler_c_o])
--
--if test x"$compiler_c_o" = x"yes"; then
-- # Check to see if we can write to a .lo
-- AC_MSG_CHECKING([if $compiler supports -c -o file.lo])
-- AC_CACHE_VAL([lt_cv_compiler_o_lo], [
-- lt_cv_compiler_o_lo=no
-- save_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS -c -o conftest.lo"
-- save_objext="$ac_objext"
-- ac_objext=lo
-- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings
-- if test -s conftest.err; then
-- lt_cv_compiler_o_lo=no
-- else
-- lt_cv_compiler_o_lo=yes
-- fi
-- ])
-- ac_objext="$save_objext"
-- CFLAGS="$save_CFLAGS"
-- ])
-- compiler_o_lo=$lt_cv_compiler_o_lo
-- AC_MSG_RESULT([$compiler_o_lo])
--else
-- compiler_o_lo=no
--fi
--
--# Check to see if we can do hard links to lock some files if needed
--hard_links="nottested"
--if test "$compiler_c_o" = no && test "$need_locks" != no; then
-- # do not overwrite the value of need_locks provided by the user
-- AC_MSG_CHECKING([if we can lock with hard links])
-- hard_links=yes
-- $rm conftest*
-- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- touch conftest.a
-- ln conftest.a conftest.b 2>&5 || hard_links=no
-- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-- AC_MSG_RESULT([$hard_links])
-- if test "$hard_links" = no; then
-- AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe])
-- need_locks=warn
-- fi
--else
-- need_locks=no
--fi
-+ ;;
-
--if test "$GCC" = yes; then
-- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
-- AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions])
-- echo "int some_variable = 0;" > conftest.$ac_ext
-- save_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
-- compiler_rtti_exceptions=no
-- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl
-- # The compiler can only warn and ignore the option if not recognized
-- # So say no if there are warnings
-- if test -s conftest.err; then
-- compiler_rtti_exceptions=no
-- else
-- compiler_rtti_exceptions=yes
-- fi
-- ])
-- CFLAGS="$save_CFLAGS"
-- AC_MSG_RESULT([$compiler_rtti_exceptions])
-+ *)
-+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+ ;;
-+ esac
-+ dynamic_linker='Win32 ld.exe'
-+ # FIXME: first we should search . and the directory the executable is in
-+ shlibpath_var=PATH
-+ ;;
-
-- if test "$compiler_rtti_exceptions" = "yes"; then
-- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
-+darwin* | rhapsody*)
-+ dynamic_linker="$host_os dyld"
-+ version_type=darwin
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-+ soname_spec='${libname}${release}${major}$shared_ext'
-+ shlibpath_overrides_runpath=yes
-+ shlibpath_var=DYLD_LIBRARY_PATH
-+ shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
-+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-+ if test "$GCC" = yes; then
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
- else
-- no_builtin_flag=' -fno-builtin'
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
- fi
--fi
--
--# See if the linker supports building shared libraries.
--AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries])
--
--allow_undefined_flag=
--no_undefined_flag=
--need_lib_prefix=unknown
--need_version=unknown
--# when you set need_version to no, make sure it does not cause -set_version
--# flags to be left without arguments
--archive_cmds=
--archive_expsym_cmds=
--old_archive_from_new_cmds=
--old_archive_from_expsyms_cmds=
--export_dynamic_flag_spec=
--whole_archive_flag_spec=
--thread_safe_flag_spec=
--hardcode_into_libs=no
--hardcode_libdir_flag_spec=
--hardcode_libdir_separator=
--hardcode_direct=no
--hardcode_minus_L=no
--hardcode_shlibpath_var=unsupported
--runpath_var=
--link_all_deplibs=unknown
--always_export_symbols=no
--export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
--# include_expsyms should be a list of space-separated symbols to be *always*
--# included in the symbol list
--include_expsyms=
--# exclude_expsyms can be an egrep regular expression of symbols to exclude
--# it will be wrapped by ` (' and `)$', so one must not match beginning or
--# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
--# as well as any symbol that contains `d'.
--exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
--# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
--# platforms (ab)use it in PIC code, but their linkers get confused if
--# the symbol is explicitly referenced. Since portable code cannot
--# rely on this symbol name, it's probably fine to never include it in
--# preloaded symbol tables.
--extract_expsyms_cmds=
-+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-+ ;;
-
--case $host_os in
--cygwin* | mingw* | pw32*)
-- # FIXME: the MSVC++ port hasn't been tested in a loooong time
-- # When not using gcc, we currently assume that we are using
-- # Microsoft Visual C++.
-- if test "$GCC" != yes; then
-- with_gnu_ld=no
-- fi
-+dgux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
- ;;
--openbsd*)
-- with_gnu_ld=no
-+
-+freebsd1*)
-+ dynamic_linker=no
- ;;
--esac
-
--ld_shlibs=yes
--if test "$with_gnu_ld" = yes; then
-- # If archive_cmds runs LD, not CC, wlarc should be empty
-- wlarc='${wl}'
-+kfreebsd*-gnu)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU ld.so'
-+ ;;
-
-- # See if GNU ld supports shared libraries.
-+freebsd*)
-+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
-+ version_type=freebsd-$objformat
-+ case $version_type in
-+ freebsd-elf*)
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-+ need_version=no
-+ need_lib_prefix=no
-+ ;;
-+ freebsd-*)
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-+ need_version=yes
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY_PATH
- case $host_os in
-- aix3* | aix4* | aix5*)
-- # On AIX, the GNU linker is very broken
-- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
-- ld_shlibs=no
-- cat <<EOF 1>&2
--
--*** Warning: the GNU linker, at least up to release 2.9.1, is reported
--*** to be unable to reliably create shared libraries on AIX.
--*** Therefore, libtool is disabling shared libraries support. If you
--*** really care for shared libraries, you may want to modify your PATH
--*** so that a non-GNU linker is found, and then restart.
--
--EOF
-+ freebsd2*)
-+ shlibpath_overrides_runpath=yes
- ;;
--
-- amigaos*)
-- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_minus_L=yes
--
-- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-- # that the semantics of dynamic libraries on AmigaOS, at least up
-- # to version 4, is to share data among multiple programs linked
-- # with the same dynamic library. Since this doesn't match the
-- # behavior of shared libraries on other platforms, we can use
-- # them.
-- ld_shlibs=no
-+ freebsd3.[01]* | freebsdelf3.[01]*)
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
- ;;
--
-- beos*)
-- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-- allow_undefined_flag=unsupported
-- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-- # support --undefined. This deserves some investigation. FIXME
-- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- else
-- ld_shlibs=no
-- fi
-+ *) # from 3.2 on
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
- ;;
-+ esac
-+ ;;
-
-- cygwin* | mingw* | pw32*)
-- # hardcode_libdir_flag_spec is actually meaningless, as there is
-- # no search path for DLLs.
-- hardcode_libdir_flag_spec='-L$libdir'
-- allow_undefined_flag=unsupported
-- always_export_symbols=yes
--
-- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
-- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
-- test -f $output_objdir/impgen.exe || (cd $output_objdir && \
-- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
-- else $CC -o impgen impgen.c ; fi)~
-- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
--
-- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
--
-- # cygwin and mingw dlls have different entry points and sets of symbols
-- # to exclude.
-- # FIXME: what about values for MSVC?
-- dll_entry=__cygwin_dll_entry@12
-- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
-- case $host_os in
-- mingw*)
-- # mingw values
-- dll_entry=_DllMainCRTStartup@12
-- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
-- ;;
-- esac
--
-- # mingw and cygwin differ, and it's simplest to just exclude the union
-- # of the two symbol sets.
-- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
--
-- # recent cygwin and mingw systems supply a stub DllMain which the user
-- # can override, but on older systems we have to supply one (in ltdll.c)
-- if test "x$lt_cv_need_dllmain" = "xyes"; then
-- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
-- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
-- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
-- else
-- ltdll_obj=
-- ltdll_cmds=
-- fi
--
-- # Extract the symbol export list from an `--export-all' def file,
-- # then regenerate the def file from the symbol export list, so that
-- # the compiled dll only exports the symbol export list.
-- # Be careful not to strip the DATA tag left be newer dlltools.
-- export_symbols_cmds="$ltdll_cmds"'
-- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
-- sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
--
-- # If the export-symbols file already is a .def file (1st line
-- # is EXPORTS), use it as is.
-- # If DATA tags from a recent dlltool are present, honour them!
-- archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then
-- cp $export_symbols $output_objdir/$soname-def;
-- else
-- echo EXPORTS > $output_objdir/$soname-def;
-- _lt_hint=1;
-- cat $export_symbols | while read symbol; do
-- set dummy \$symbol;
-- case \[$]# in
-- 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
-- 4) echo " \[$]2 \[$]3 \[$]4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;;
-- *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;;
-- esac;
-- _lt_hint=`expr 1 + \$_lt_hint`;
-- done;
-- fi~
-- '"$ltdll_cmds"'
-- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
-- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
-- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
-+gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ hardcode_into_libs=yes
-+ ;;
-+
-+hpux9* | hpux10* | hpux11*)
-+ # Give a soname corresponding to the major version so that dld.sl refuses to
-+ # link against other versions.
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ case "$host_cpu" in
-+ ia64*)
-+ shrext_cmds='.so'
-+ hardcode_into_libs=yes
-+ dynamic_linker="$host_os dld.so"
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ if test "X$HPUX_IA64_MODE" = X32; then
-+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-+ else
-+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-+ fi
-+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-+ ;;
-+ hppa*64*)
-+ shrext_cmds='.sl'
-+ hardcode_into_libs=yes
-+ dynamic_linker="$host_os dld.sl"
-+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-+ ;;
-+ *)
-+ shrext_cmds='.sl'
-+ dynamic_linker="$host_os dld.sl"
-+ shlibpath_var=SHLIB_PATH
-+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ ;;
-+ esac
-+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
-+ postinstall_cmds='chmod 555 $lib'
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ nonstopux*) version_type=nonstopux ;;
-+ *)
-+ if test "$lt_cv_prog_gnu_ld" = yes; then
-+ version_type=linux
-+ else
-+ version_type=irix
-+ fi ;;
-+ esac
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-+ case $host_os in
-+ irix5* | nonstopux*)
-+ libsuff= shlibsuff=
-+ ;;
-+ *)
-+ case $LD in # libtool.m4 will add one of these switches to LD
-+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-+ libsuff= shlibsuff= libmagic=32-bit;;
-+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-+ libsuff=32 shlibsuff=N32 libmagic=N32;;
-+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
-+ *) libsuff= shlibsuff= libmagic=never-match;;
-+ esac
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-+ hardcode_into_libs=yes
-+ ;;
-+
-+# No shared lib support for Linux oldld, aout, or coff.
-+linux*oldld* | linux*aout* | linux*coff*)
-+ dynamic_linker=no
-+ ;;
-+
-+# This must be Linux ELF.
-+linux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ # This implies no fast_install, which is unacceptable.
-+ # Some rework will be needed to allow for fast_install
-+ # before this can be enabled.
-+ hardcode_into_libs=yes
-+
-+ # Append ld.so.conf contents to the search path
-+ if test -f /etc/ld.so.conf; then
-+ lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '`
-+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-+ fi
-+
-+ # We used to test for /lib/ld.so.1 and disable shared libraries on
-+ # powerpc, because MkLinux only supported shared libraries with the
-+ # GNU dynamic linker. Since this was broken with cross compilers,
-+ # most powerpc-linux boxes support dynamic linking these days and
-+ # people can always --disable-shared, the test was removed, and we
-+ # assume the GNU/Linux dynamic linker is in use.
-+ dynamic_linker='GNU/Linux ld.so'
-+ ;;
-+
-+netbsdelf*-gnu)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='NetBSD ld.elf_so'
-+ ;;
-+
-+knetbsd*-gnu)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU ld.so'
-+ ;;
-+
-+netbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ dynamic_linker='NetBSD (a.out) ld.so'
-+ else
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ dynamic_linker='NetBSD ld.elf_so'
-+ fi
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-+
-+newsos6)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+nto-qnx*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+openbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=yes
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ case $host_os in
-+ openbsd2.[[89]] | openbsd2.[[89]].*)
-+ shlibpath_overrides_runpath=no
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ esac
-+ else
-+ shlibpath_overrides_runpath=yes
-+ fi
-+ ;;
-+
-+os2*)
-+ libname_spec='$name'
-+ shrext_cmds=".dll"
-+ need_lib_prefix=no
-+ library_names_spec='$libname${shared_ext} $libname.a'
-+ dynamic_linker='OS/2 ld.exe'
-+ shlibpath_var=LIBPATH
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ version_type=osf
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-+ ;;
-+
-+sco3.2v5*)
-+ version_type=osf
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+solaris*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ # ldd complains unless libraries are executable
-+ postinstall_cmds='chmod +x $lib'
-+ ;;
-+
-+sunos4*)
-+ version_type=sunos
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ if test "$with_gnu_ld" = yes; then
-+ need_lib_prefix=no
-+ fi
-+ need_version=yes
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_vendor in
-+ sni)
-+ shlibpath_overrides_runpath=no
-+ need_lib_prefix=no
-+ export_dynamic_flag_spec='${wl}-Blargedynsym'
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+ siemens)
-+ need_lib_prefix=no
-+ ;;
-+ motorola)
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-+ ;;
-+ esac
-+ ;;
-+
-+sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ version_type=linux
-+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-+ soname_spec='$libname${shared_ext}.$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ fi
-+ ;;
-+
-+uts4*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-+ soname_spec='${libname}${release}${shared_ext}$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+*)
-+ dynamic_linker=no
-+ ;;
-+esac
-+AC_MSG_RESULT([$dynamic_linker])
-+test "$dynamic_linker" = no && can_build_shared=no
-+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
-+
-+
-+# _LT_AC_TAGCONFIG
-+# ----------------
-+AC_DEFUN([_LT_AC_TAGCONFIG],
-+[AC_ARG_WITH([tags],
-+ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
-+ [include additional configurations @<:@automatic@:>@])],
-+ [tagnames="$withval"])
-+
-+if test -f "$ltmain" && test -n "$tagnames"; then
-+ if test ! -f "${ofile}"; then
-+ AC_MSG_WARN([output file `$ofile' does not exist])
-+ fi
-+
-+ if test -z "$LTCC"; then
-+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
-+ if test -z "$LTCC"; then
-+ AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
-+ else
-+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
-+ fi
-+ fi
-+
-+ # Extract list of available tagged configurations in $ofile.
-+ # Note that this assumes the entire list is on one line.
-+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
-+
-+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-+ for tagname in $tagnames; do
-+ IFS="$lt_save_ifs"
-+ # Check whether tagname contains only valid characters
-+ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
-+ "") ;;
-+ *) AC_MSG_ERROR([invalid tag name: $tagname])
-+ ;;
-+ esac
-+
-+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
-+ then
-+ AC_MSG_ERROR([tag name \"$tagname\" already exists])
-+ fi
-+
-+ # Update the list of available tags.
-+ if test -n "$tagname"; then
-+ echo appending configuration tag \"$tagname\" to $ofile
-+
-+ case $tagname in
-+ CXX)
-+ if test -n "$CXX" && test "X$CXX" != "Xno"; then
-+ AC_LIBTOOL_LANG_CXX_CONFIG
-+ else
-+ tagname=""
-+ fi
-+ ;;
-+
-+ F77)
-+ if test -n "$F77" && test "X$F77" != "Xno"; then
-+ AC_LIBTOOL_LANG_F77_CONFIG
-+ else
-+ tagname=""
-+ fi
-+ ;;
-+
-+ GCJ)
-+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
-+ AC_LIBTOOL_LANG_GCJ_CONFIG
-+ else
-+ tagname=""
-+ fi
-+ ;;
-+
-+ RC)
-+ AC_LIBTOOL_LANG_RC_CONFIG
-+ ;;
-+
-+ *)
-+ AC_MSG_ERROR([Unsupported tag name: $tagname])
-+ ;;
-+ esac
-+
-+ # Append the new tag name to the list of available tags.
-+ if test -n "$tagname" ; then
-+ available_tags="$available_tags $tagname"
-+ fi
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+
-+ # Now substitute the updated list of available tags.
-+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
-+ mv "${ofile}T" "$ofile"
-+ chmod +x "$ofile"
-+ else
-+ rm -f "${ofile}T"
-+ AC_MSG_ERROR([unable to update list of available tagged configurations.])
-+ fi
-+fi
-+])# _LT_AC_TAGCONFIG
-+
-+
-+# AC_LIBTOOL_DLOPEN
-+# -----------------
-+# enable checks for dlopen support
-+AC_DEFUN([AC_LIBTOOL_DLOPEN],
-+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
-+])# AC_LIBTOOL_DLOPEN
-+
-+
-+# AC_LIBTOOL_WIN32_DLL
-+# --------------------
-+# declare package support for building win32 dll's
-+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
-+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
-+])# AC_LIBTOOL_WIN32_DLL
-+
-+
-+# AC_ENABLE_SHARED([DEFAULT])
-+# ---------------------------
-+# implement the --enable-shared flag
-+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-+AC_DEFUN([AC_ENABLE_SHARED],
-+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
-+AC_ARG_ENABLE([shared],
-+ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
-+ [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
-+ [p=${PACKAGE-default}
-+ case $enableval in
-+ yes) enable_shared=yes ;;
-+ no) enable_shared=no ;;
-+ *)
-+ enable_shared=no
-+ # Look at the argument we got. We use all the common list separators.
-+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-+ for pkg in $enableval; do
-+ IFS="$lt_save_ifs"
-+ if test "X$pkg" = "X$p"; then
-+ enable_shared=yes
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+ ;;
-+ esac],
-+ [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
-+])# AC_ENABLE_SHARED
-+
-+
-+# AC_DISABLE_SHARED
-+# -----------------
-+#- set the default shared flag to --disable-shared
-+AC_DEFUN([AC_DISABLE_SHARED],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+AC_ENABLE_SHARED(no)
-+])# AC_DISABLE_SHARED
-+
-+
-+# AC_ENABLE_STATIC([DEFAULT])
-+# ---------------------------
-+# implement the --enable-static flag
-+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-+AC_DEFUN([AC_ENABLE_STATIC],
-+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
-+AC_ARG_ENABLE([static],
-+ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
-+ [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
-+ [p=${PACKAGE-default}
-+ case $enableval in
-+ yes) enable_static=yes ;;
-+ no) enable_static=no ;;
-+ *)
-+ enable_static=no
-+ # Look at the argument we got. We use all the common list separators.
-+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-+ for pkg in $enableval; do
-+ IFS="$lt_save_ifs"
-+ if test "X$pkg" = "X$p"; then
-+ enable_static=yes
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+ ;;
-+ esac],
-+ [enable_static=]AC_ENABLE_STATIC_DEFAULT)
-+])# AC_ENABLE_STATIC
-+
-+
-+# AC_DISABLE_STATIC
-+# -----------------
-+# set the default static flag to --disable-static
-+AC_DEFUN([AC_DISABLE_STATIC],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+AC_ENABLE_STATIC(no)
-+])# AC_DISABLE_STATIC
-+
-+
-+# AC_ENABLE_FAST_INSTALL([DEFAULT])
-+# ---------------------------------
-+# implement the --enable-fast-install flag
-+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
-+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
-+AC_ARG_ENABLE([fast-install],
-+ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
-+ [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
-+ [p=${PACKAGE-default}
-+ case $enableval in
-+ yes) enable_fast_install=yes ;;
-+ no) enable_fast_install=no ;;
-+ *)
-+ enable_fast_install=no
-+ # Look at the argument we got. We use all the common list separators.
-+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-+ for pkg in $enableval; do
-+ IFS="$lt_save_ifs"
-+ if test "X$pkg" = "X$p"; then
-+ enable_fast_install=yes
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+ ;;
-+ esac],
-+ [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
-+])# AC_ENABLE_FAST_INSTALL
-+
-+
-+# AC_DISABLE_FAST_INSTALL
-+# -----------------------
-+# set the default to --disable-fast-install
-+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+AC_ENABLE_FAST_INSTALL(no)
-+])# AC_DISABLE_FAST_INSTALL
-+
-+
-+# AC_LIBTOOL_PICMODE([MODE])
-+# --------------------------
-+# implement the --with-pic flag
-+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
-+AC_DEFUN([AC_LIBTOOL_PICMODE],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+pic_mode=ifelse($#,1,$1,default)
-+])# AC_LIBTOOL_PICMODE
-+
-+
-+# AC_PROG_EGREP
-+# -------------
-+# This is predefined starting with Autoconf 2.54, so this conditional
-+# definition can be removed once we require Autoconf 2.54 or later.
-+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
-+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
-+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
-+ then ac_cv_prog_egrep='grep -E'
-+ else ac_cv_prog_egrep='egrep'
-+ fi])
-+ EGREP=$ac_cv_prog_egrep
-+ AC_SUBST([EGREP])
-+])])
-+
-+
-+# AC_PATH_TOOL_PREFIX
-+# -------------------
-+# find a file program which can recognise shared library
-+AC_DEFUN([AC_PATH_TOOL_PREFIX],
-+[AC_REQUIRE([AC_PROG_EGREP])dnl
-+AC_MSG_CHECKING([for $1])
-+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-+[case $MAGIC_CMD in
-+[[\\/*] | ?:[\\/]*])
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-+ ;;
-+*)
-+ lt_save_MAGIC_CMD="$MAGIC_CMD"
-+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+dnl $ac_dummy forces splitting on constant user-supplied paths.
-+dnl POSIX.2 word splitting is done only on the output of word expansions,
-+dnl not every word. This closes a longstanding sh security hole.
-+ ac_dummy="ifelse([$2], , $PATH, [$2])"
-+ for ac_dir in $ac_dummy; do
-+ IFS="$lt_save_ifs"
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$1; then
-+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-+ if test -n "$file_magic_test_file"; then
-+ case $deplibs_check_method in
-+ "file_magic "*)
-+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-+ $EGREP "$file_magic_regex" > /dev/null; then
-+ :
-+ else
-+ cat <<EOF 1>&2
-+
-+*** Warning: the command libtool uses to detect shared libraries,
-+*** $file_magic_cmd, produces output that libtool cannot recognize.
-+*** The result is that libtool may fail to recognize shared libraries
-+*** as such. This will affect the creation of libtool libraries that
-+*** depend on shared libraries, but programs linked with such libtool
-+*** libraries will work regardless of this problem. Nevertheless, you
-+*** may want to report the problem to your system manager and/or to
-+*** bug-libtool@gnu.org
-+
-+EOF
-+ fi ;;
-+ esac
-+ fi
-+ break
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+ MAGIC_CMD="$lt_save_MAGIC_CMD"
-+ ;;
-+esac])
-+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+if test -n "$MAGIC_CMD"; then
-+ AC_MSG_RESULT($MAGIC_CMD)
-+else
-+ AC_MSG_RESULT(no)
-+fi
-+])# AC_PATH_TOOL_PREFIX
-+
-+
-+# AC_PATH_MAGIC
-+# -------------
-+# find a file program which can recognise a shared library
-+AC_DEFUN([AC_PATH_MAGIC],
-+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-+if test -z "$lt_cv_path_MAGIC_CMD"; then
-+ if test -n "$ac_tool_prefix"; then
-+ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
-+ else
-+ MAGIC_CMD=:
-+ fi
-+fi
-+])# AC_PATH_MAGIC
-+
-+
-+# AC_PROG_LD
-+# ----------
-+# find the pathname to the GNU or non-GNU linker
-+AC_DEFUN([AC_PROG_LD],
-+[AC_ARG_WITH([gnu-ld],
-+ [AC_HELP_STRING([--with-gnu-ld],
-+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
-+ [test "$withval" = no || with_gnu_ld=yes],
-+ [with_gnu_ld=no])
-+AC_REQUIRE([LT_AC_PROG_SED])dnl
-+AC_REQUIRE([AC_PROG_CC])dnl
-+AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-+ac_prog=ld
-+if test "$GCC" = yes; then
-+ # Check if gcc -print-prog-name=ld gives a path.
-+ AC_MSG_CHECKING([for ld used by $CC])
-+ case $host in
-+ *-*-mingw*)
-+ # gcc leaves a trailing carriage return which upsets mingw
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-+ *)
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-+ esac
-+ case $ac_prog in
-+ # Accept absolute paths.
-+ [[\\/]]* | ?:[[\\/]]*)
-+ re_direlt='/[[^/]][[^/]]*/\.\./'
-+ # Canonicalize the pathname of ld
-+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
-+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
-+ done
-+ test -z "$LD" && LD="$ac_prog"
-+ ;;
-+ "")
-+ # If it fails, then pretend we aren't using GCC.
-+ ac_prog=ld
-+ ;;
-+ *)
-+ # If it is relative, then search for the first ld in PATH.
-+ with_gnu_ld=unknown
-+ ;;
-+ esac
-+elif test "$with_gnu_ld" = yes; then
-+ AC_MSG_CHECKING([for GNU ld])
-+else
-+ AC_MSG_CHECKING([for non-GNU ld])
-+fi
-+AC_CACHE_VAL(lt_cv_path_LD,
-+[if test -z "$LD"; then
-+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for ac_dir in $PATH; do
-+ IFS="$lt_save_ifs"
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-+ lt_cv_path_LD="$ac_dir/$ac_prog"
-+ # Check to see if the program is GNU ld. I'd rather use --version,
-+ # but apparently some GNU ld's only accept -v.
-+ # Break only if it was the GNU/non-GNU ld that we prefer.
-+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-+ *GNU* | *'with BFD'*)
-+ test "$with_gnu_ld" != no && break
-+ ;;
-+ *)
-+ test "$with_gnu_ld" != yes && break
-+ ;;
-+ esac
-+ fi
-+ done
-+ IFS="$lt_save_ifs"
-+else
-+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
-+fi])
-+LD="$lt_cv_path_LD"
-+if test -n "$LD"; then
-+ AC_MSG_RESULT($LD)
-+else
-+ AC_MSG_RESULT(no)
-+fi
-+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-+AC_PROG_LD_GNU
-+])# AC_PROG_LD
-+
-+
-+# AC_PROG_LD_GNU
-+# --------------
-+AC_DEFUN([AC_PROG_LD_GNU],
-+[AC_REQUIRE([AC_PROG_EGREP])dnl
-+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-+case `$LD -v 2>&1 </dev/null` in
-+*GNU* | *'with BFD'*)
-+ lt_cv_prog_gnu_ld=yes
-+ ;;
-+*)
-+ lt_cv_prog_gnu_ld=no
-+ ;;
-+esac])
-+with_gnu_ld=$lt_cv_prog_gnu_ld
-+])# AC_PROG_LD_GNU
-+
-+
-+# AC_PROG_LD_RELOAD_FLAG
-+# ----------------------
-+# find reload flag for linker
-+# -- PORTME Some linkers may need a different reload flag.
-+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
-+[AC_CACHE_CHECK([for $LD option to reload object files],
-+ lt_cv_ld_reload_flag,
-+ [lt_cv_ld_reload_flag='-r'])
-+reload_flag=$lt_cv_ld_reload_flag
-+case $reload_flag in
-+"" | " "*) ;;
-+*) reload_flag=" $reload_flag" ;;
-+esac
-+reload_cmds='$LD$reload_flag -o $output$reload_objs'
-+])# AC_PROG_LD_RELOAD_FLAG
-+
-+
-+# AC_DEPLIBS_CHECK_METHOD
-+# -----------------------
-+# how to check for library dependencies
-+# -- PORTME fill in with the dynamic library characteristics
-+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
-+[AC_CACHE_CHECK([how to recognise dependent libraries],
-+lt_cv_deplibs_check_method,
-+[lt_cv_file_magic_cmd='$MAGIC_CMD'
-+lt_cv_file_magic_test_file=
-+lt_cv_deplibs_check_method='unknown'
-+# Need to set the preceding variable on all platforms that support
-+# interlibrary dependencies.
-+# 'none' -- dependencies not supported.
-+# `unknown' -- same as none, but documents that we really don't know.
-+# 'pass_all' -- all dependencies passed with no checks.
-+# 'test_compile' -- check by making test program.
-+# 'file_magic [[regex]]' -- check by looking for files in library path
-+# which responds to the $file_magic_cmd with a given extended regex.
-+# If you have `file' or equivalent on your system and you're not sure
-+# whether `pass_all' will *always* work, you probably want this one.
-+
-+case $host_os in
-+aix4* | aix5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+beos*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+bsdi4*)
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-+ lt_cv_file_magic_cmd='/usr/bin/file -L'
-+ lt_cv_file_magic_test_file=/shlib/libc.so
-+ ;;
-+
-+cygwin*)
-+ # func_win32_libid is a shell function defined in ltmain.sh
-+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-+ lt_cv_file_magic_cmd='func_win32_libid'
-+ ;;
-+
-+mingw* | pw32*)
-+ # Base MSYS/MinGW do not provide the 'file' command needed by
-+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
-+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ lt_cv_file_magic_cmd='$OBJDUMP -f'
-+ ;;
-+
-+darwin* | rhapsody*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+freebsd* | kfreebsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-+ case $host_cpu in
-+ i*86 )
-+ # Not sure whether the presence of OpenBSD here was a mistake.
-+ # Let's accept both of them until this is cleared up.
-+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ ;;
-+ esac
-+ else
-+ lt_cv_deplibs_check_method=pass_all
-+ fi
-+ ;;
-+
-+gnu*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+hpux10.20* | hpux11*)
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ case "$host_cpu" in
-+ ia64*)
-+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-+ ;;
-+ hppa*64*)
-+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
-+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-+ ;;
-+ *)
-+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
-+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
-+ ;;
-+ esac
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $LD in
-+ *-32|*"-32 ") libmagic=32-bit;;
-+ *-n32|*"-n32 ") libmagic=N32;;
-+ *-64|*"-64 ") libmagic=64-bit;;
-+ *) libmagic=never-match;;
-+ esac
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+# This must be Linux ELF.
-+linux*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-+ else
-+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-+ fi
-+ ;;
-+
-+newos6*)
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
-+ ;;
-+
-+nto-qnx*)
-+ lt_cv_deplibs_check_method=unknown
-+ ;;
-+
-+openbsd*)
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
-+ else
-+ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
-+ fi
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+sco3.2v5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+solaris*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ case $host_vendor in
-+ motorola)
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-+ ;;
-+ ncr)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+ sequent)
-+ lt_cv_file_magic_cmd='/bin/file'
-+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-+ ;;
-+ sni)
-+ lt_cv_file_magic_cmd='/bin/file'
-+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-+ lt_cv_file_magic_test_file=/lib/libc.so
-+ ;;
-+ siemens)
-+ lt_cv_deplibs_check_method=pass_all
- ;;
-+ esac
-+ ;;
-+
-+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+esac
-+])
-+file_magic_cmd=$lt_cv_file_magic_cmd
-+deplibs_check_method=$lt_cv_deplibs_check_method
-+test -z "$deplibs_check_method" && deplibs_check_method=unknown
-+])# AC_DEPLIBS_CHECK_METHOD
-
-- netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-- wlarc=
-- else
-- archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+
-+# AC_PROG_NM
-+# ----------
-+# find the pathname to a BSD-compatible name lister
-+AC_DEFUN([AC_PROG_NM],
-+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
-+[if test -n "$NM"; then
-+ # Let the user override the test.
-+ lt_cv_path_NM="$NM"
-+else
-+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
-+ IFS="$lt_save_ifs"
-+ test -z "$ac_dir" && ac_dir=.
-+ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
-+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-+ # Check to see if the nm accepts a BSD-compat flag.
-+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-+ # nm: unknown option "B" ignored
-+ # Tru64's nm complains that /dev/null is an invalid object file
-+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-+ */dev/null* | *'Invalid file or object type'*)
-+ lt_cv_path_NM="$tmp_nm -B"
-+ break
-+ ;;
-+ *)
-+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-+ */dev/null*)
-+ lt_cv_path_NM="$tmp_nm -p"
-+ break
-+ ;;
-+ *)
-+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-+ continue # so that we can try to find one that supports BSD flags
-+ ;;
-+ esac
-+ esac
- fi
-- ;;
-+ done
-+ IFS="$lt_save_ifs"
-+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
-+fi])
-+NM="$lt_cv_path_NM"
-+])# AC_PROG_NM
-
-- solaris* | sysv5*)
-- if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
-- ld_shlibs=no
-- cat <<EOF 1>&2
-
--*** Warning: The releases 2.8.* of the GNU linker cannot reliably
--*** create shared libraries on Solaris systems. Therefore, libtool
--*** is disabling shared libraries support. We urge you to upgrade GNU
--*** binutils to release 2.9.1 or newer. Another option is to modify
--*** your PATH or compiler configuration so that the native linker is
--*** used, and then restart.
-+# AC_CHECK_LIBM
-+# -------------
-+# check for math library
-+AC_DEFUN([AC_CHECK_LIBM],
-+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+LIBM=
-+case $host in
-+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
-+ # These system don't have libm, or don't need it
-+ ;;
-+*-ncr-sysv4.3*)
-+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-+ ;;
-+*)
-+ AC_CHECK_LIB(m, cos, LIBM="-lm")
-+ ;;
-+esac
-+])# AC_CHECK_LIBM
-
--EOF
-- elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- else
-- ld_shlibs=no
-- fi
-- ;;
-
-- sunos4*)
-- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- wlarc=
-- hardcode_direct=yes
-- hardcode_shlibpath_var=no
-- ;;
-+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
-+# -----------------------------------
-+# sets LIBLTDL to the link flags for the libltdl convenience library and
-+# LTDLINCL to the include flags for the libltdl header and adds
-+# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL
-+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
-+# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will
-+# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
-+# '${top_srcdir}/' (note the single quotes!). If your package is not
-+# flat and you're not using automake, define top_builddir and
-+# top_srcdir appropriately in the Makefiles.
-+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+ case $enable_ltdl_convenience in
-+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
-+ "") enable_ltdl_convenience=yes
-+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
-+ esac
-+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
-+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-+ # For backwards non-gettext consistent compatibility...
-+ INCLTDL="$LTDLINCL"
-+])# AC_LIBLTDL_CONVENIENCE
-
-- *)
-- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-- else
-- ld_shlibs=no
-- fi
-+
-+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
-+# -----------------------------------
-+# sets LIBLTDL to the link flags for the libltdl installable library and
-+# LTDLINCL to the include flags for the libltdl header and adds
-+# --enable-ltdl-install to the configure arguments. Note that LIBLTDL
-+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
-+# DIRECTORY is not provided and an installed libltdl is not found, it is
-+# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/'
-+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
-+# quotes!). If your package is not flat and you're not using automake,
-+# define top_builddir and top_srcdir appropriately in the Makefiles.
-+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
-+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-+ AC_CHECK_LIB(ltdl, lt_dlinit,
-+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
-+ [if test x"$enable_ltdl_install" = xno; then
-+ AC_MSG_WARN([libltdl not installed, but installation disabled])
-+ else
-+ enable_ltdl_install=yes
-+ fi
-+ ])
-+ if test x"$enable_ltdl_install" = x"yes"; then
-+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
-+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
-+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-+ else
-+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
-+ LIBLTDL="-lltdl"
-+ LTDLINCL=
-+ fi
-+ # For backwards non-gettext consistent compatibility...
-+ INCLTDL="$LTDLINCL"
-+])# AC_LIBLTDL_INSTALLABLE
-+
-+
-+# AC_LIBTOOL_CXX
-+# --------------
-+# enable support for C++ libraries
-+AC_DEFUN([AC_LIBTOOL_CXX],
-+[AC_REQUIRE([_LT_AC_LANG_CXX])
-+])# AC_LIBTOOL_CXX
-+
-+
-+# _LT_AC_LANG_CXX
-+# ---------------
-+AC_DEFUN([_LT_AC_LANG_CXX],
-+[AC_REQUIRE([AC_PROG_CXX])
-+AC_REQUIRE([AC_PROG_CXXCPP])
-+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
-+])# _LT_AC_LANG_CXX
-+
-+
-+# AC_LIBTOOL_F77
-+# --------------
-+# enable support for Fortran 77 libraries
-+AC_DEFUN([AC_LIBTOOL_F77],
-+[AC_REQUIRE([_LT_AC_LANG_F77])
-+])# AC_LIBTOOL_F77
-+
-+
-+# _LT_AC_LANG_F77
-+# ---------------
-+AC_DEFUN([_LT_AC_LANG_F77],
-+[AC_REQUIRE([AC_PROG_F77])
-+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
-+])# _LT_AC_LANG_F77
-+
-+
-+# AC_LIBTOOL_GCJ
-+# --------------
-+# enable support for GCJ libraries
-+AC_DEFUN([AC_LIBTOOL_GCJ],
-+[AC_REQUIRE([_LT_AC_LANG_GCJ])
-+])# AC_LIBTOOL_GCJ
-+
-+
-+# _LT_AC_LANG_GCJ
-+# ---------------
-+AC_DEFUN([_LT_AC_LANG_GCJ],
-+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
-+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
-+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
-+ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
-+ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
-+ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
-+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
-+])# _LT_AC_LANG_GCJ
-+
-+
-+# AC_LIBTOOL_RC
-+# --------------
-+# enable support for Windows resource files
-+AC_DEFUN([AC_LIBTOOL_RC],
-+[AC_REQUIRE([LT_AC_PROG_RC])
-+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
-+])# AC_LIBTOOL_RC
-+
-+
-+# AC_LIBTOOL_LANG_C_CONFIG
-+# ------------------------
-+# Ensure that the configuration vars for the C compiler are
-+# suitably defined. Those variables are subsequently used by
-+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
-+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
-+[lt_save_CC="$CC"
-+AC_LANG_PUSH(C)
-+
-+# Source file extension for C test sources.
-+ac_ext=c
-+
-+# Object file extension for compiled C test sources.
-+objext=o
-+_LT_AC_TAGVAR(objext, $1)=$objext
-+
-+# Code to be used in simple compile tests
-+lt_simple_compile_test_code="int some_variable = 0;\n"
-+
-+# Code to be used in simple link tests
-+lt_simple_link_test_code='int main(){return(0);}\n'
-+
-+_LT_AC_SYS_COMPILER
-+
-+#
-+# Check for any special shared library compilation flags.
-+#
-+_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
-+if test "$GCC" = no; then
-+ case $host_os in
-+ sco3.2v5*)
-+ _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
- ;;
- esac
-+fi
-+if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
-+ AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
-+ if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then :
-+ else
-+ AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
-+ _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
-+ fi
-+fi
-
-- if test "$ld_shlibs" = yes; then
-- runpath_var=LD_RUN_PATH
-- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
-- export_dynamic_flag_spec='${wl}--export-dynamic'
-- case $host_os in
-- cygwin* | mingw* | pw32*)
-- # dlltool doesn't understand --whole-archive et. al.
-- whole_archive_flag_spec=
-+
-+#
-+# Check to make sure the static flag actually works.
-+#
-+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
-+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
-+ $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
-+ [],
-+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
-+
-+
-+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
-+AC_LIBTOOL_PROG_COMPILER_PIC($1)
-+AC_LIBTOOL_PROG_CC_C_O($1)
-+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
-+AC_LIBTOOL_PROG_LD_SHLIBS($1)
-+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
-+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-+AC_LIBTOOL_SYS_LIB_STRIP
-+AC_LIBTOOL_DLOPEN_SELF($1)
-+
-+# Report which librarie types wil actually be built
-+AC_MSG_CHECKING([if libtool supports shared libraries])
-+AC_MSG_RESULT([$can_build_shared])
-+
-+AC_MSG_CHECKING([whether to build shared libraries])
-+test "$can_build_shared" = "no" && enable_shared=no
-+
-+# On AIX, shared libraries and static libraries use the same namespace, and
-+# are all built from PIC.
-+case "$host_os" in
-+aix3*)
-+ test "$enable_shared" = yes && enable_static=no
-+ if test -n "$RANLIB"; then
-+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
-+ postinstall_cmds='$RANLIB $lib'
-+ fi
-+ ;;
-+
-+aix4* | aix5*)
-+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-+ test "$enable_shared" = yes && enable_static=no
-+ fi
-+ ;;
-+ darwin* | rhapsody*)
-+ if test "$GCC" = yes; then
-+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-+ case "$host_os" in
-+ rhapsody* | darwin1.[[012]])
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
- ;;
-- *)
-- # ancient GNU ld didn't support --whole-archive et. al.
-- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
-- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ *) # Darwin 1.3 on
-+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
- else
-- whole_archive_flag_spec=
-+ case ${MACOSX_DEPLOYMENT_TARGET} in
-+ 10.[[012]])
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
-+ ;;
-+ 10.*)
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
-+ ;;
-+ esac
- fi
- ;;
- esac
-+ output_verbose_link_cmd='echo'
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
-+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
-+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-+ else
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
- fi
-+ ;;
-+esac
-+AC_MSG_RESULT([$enable_shared])
-+
-+AC_MSG_CHECKING([whether to build static libraries])
-+# Make sure either enable_shared or enable_static is yes.
-+test "$enable_shared" = yes || enable_static=yes
-+AC_MSG_RESULT([$enable_static])
-+
-+AC_LIBTOOL_CONFIG($1)
-+
-+AC_LANG_POP
-+CC="$lt_save_CC"
-+])# AC_LIBTOOL_LANG_C_CONFIG
-+
-+
-+# AC_LIBTOOL_LANG_CXX_CONFIG
-+# --------------------------
-+# Ensure that the configuration vars for the C compiler are
-+# suitably defined. Those variables are subsequently used by
-+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
-+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
-+[AC_LANG_PUSH(C++)
-+AC_REQUIRE([AC_PROG_CXX])
-+AC_REQUIRE([AC_PROG_CXXCPP])
-+
-+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
-+_LT_AC_TAGVAR(always_export_symbols, $1)=no
-+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
-+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-+_LT_AC_TAGVAR(hardcode_direct, $1)=no
-+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
-+_LT_AC_TAGVAR(module_cmds, $1)=
-+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
-+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
-+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-+_LT_AC_TAGVAR(no_undefined_flag, $1)=
-+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-+
-+# Dependencies to place before and after the object being linked:
-+_LT_AC_TAGVAR(predep_objects, $1)=
-+_LT_AC_TAGVAR(postdep_objects, $1)=
-+_LT_AC_TAGVAR(predeps, $1)=
-+_LT_AC_TAGVAR(postdeps, $1)=
-+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
-+
-+# Source file extension for C++ test sources.
-+ac_ext=cc
-+
-+# Object file extension for compiled C++ test sources.
-+objext=o
-+_LT_AC_TAGVAR(objext, $1)=$objext
-+
-+# Code to be used in simple compile tests
-+lt_simple_compile_test_code="int some_variable = 0;\n"
-+
-+# Code to be used in simple link tests
-+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
-+
-+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-+_LT_AC_SYS_COMPILER
-+
-+# Allow CC to be a program name with arguments.
-+lt_save_CC=$CC
-+lt_save_LD=$LD
-+lt_save_GCC=$GCC
-+GCC=$GXX
-+lt_save_with_gnu_ld=$with_gnu_ld
-+lt_save_path_LD=$lt_cv_path_LD
-+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
- else
-- # PORTME fill in a description of your system's linker (not GNU ld)
-- case $host_os in
-- aix3*)
-- allow_undefined_flag=unsupported
-- always_export_symbols=yes
-- archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-- # Note: this linker hardcodes the directories in LIBPATH if there
-- # are no directories specified by -L.
-- hardcode_minus_L=yes
-- if test "$GCC" = yes && test -z "$link_static_flag"; then
-- # Neither direct hardcoding nor static linking is supported with a
-- # broken collect2.
-- hardcode_direct=unsupported
-+ unset lt_cv_prog_gnu_ld
-+fi
-+if test -n "${lt_cv_path_LDCXX+set}"; then
-+ lt_cv_path_LD=$lt_cv_path_LDCXX
-+else
-+ unset lt_cv_path_LD
-+fi
-+test -z "${LDCXX+set}" || LD=$LDCXX
-+CC=${CXX-"c++"}
-+compiler=$CC
-+_LT_AC_TAGVAR(compiler, $1)=$CC
-+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
-+
-+# We don't want -fno-exception wen compiling C++ code, so set the
-+# no_builtin_flag separately
-+if test "$GXX" = yes; then
-+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-+else
-+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-+fi
-+
-+if test "$GXX" = yes; then
-+ # Set up default GNU C++ configuration
-+
-+ AC_PROG_LD
-+
-+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
-+ # archiving commands below assume that GNU ld is being used.
-+ if test "$with_gnu_ld" = yes; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-+
-+ # If archive_cmds runs LD, not CC, wlarc should be empty
-+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-+ # investigate it a little bit more. (MM)
-+ wlarc='${wl}'
-+
-+ # ancient GNU ld didn't support --whole-archive et. al.
-+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
-+ grep 'no-whole-archive' > /dev/null; then
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ else
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
- fi
-- ;;
-+ else
-+ with_gnu_ld=no
-+ wlarc=
-+
-+ # A generic and very simple default shared library creation
-+ # command for GNU C++ for the case where it uses the native
-+ # linker, instead of GNU ld. If possible, this setting should
-+ # overridden to take advantage of the native linker features on
-+ # the platform it is being used on.
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-+ fi
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-+
-+else
-+ GXX=no
-+ with_gnu_ld=no
-+ wlarc=
-+fi
-
-+# PORTME: fill in a description of your system's C++ link characteristics
-+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
-+case $host_os in
-+ aix3*)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
- aix4* | aix5*)
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
-@@ -1586,7 +3728,7 @@
- *-brtl*)
- aix_use_runtimelinking=yes
- break
-- ;;
-+ ;;
- esac
- done
- esac
-@@ -1601,34 +3743,39 @@
- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-- hardcode_direct=yes
-- archive_cmds=''
-- hardcode_libdir_separator=':'
-- if test "$GCC" = yes; then
-- case $host_os in aix4.[[012]]|aix4.[[012]].*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)=''
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-+
-+ if test "$GXX" = yes; then
-+ case $host_os in aix4.[012]|aix4.[012].*)
-+ # We only want to do this on AIX 4.2 and lower, the check
-+ # below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" && \
-- strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
- then
- # We have reworked collect2
-- hardcode_direct=yes
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
- else
- # We have old collect2
-- hardcode_direct=unsupported
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
-- hardcode_minus_L=yes
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_libdir_separator=
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
- fi
- esac
--
- shared_flag='-shared'
- else
- # not using gcc
- if test "$host_cpu" = ia64; then
-- shared_flag='${wl}-G'
-+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-+ # chokes on -Wl,-G. The following line is correct:
-+ shared_flag='-G'
- else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
-@@ -1638,833 +3785,867 @@
- fi
- fi
-
-- # It seems that -bexpall can do strange things, so it is better to
-- # generate a list of symbols to export.
-- always_export_symbols=yes
-+ # It seems that -bexpall does not export symbols beginning with
-+ # underscore (_), so it is better to generate a list of symbols to export.
-+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
- if test "$aix_use_runtimelinking" = yes; then
- # Warning - without using the other runtime loading flags (-brtl),
- # -berok will link without error, but may produce a broken library.
-- allow_undefined_flag='-berok'
-- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
-- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-- else
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
-+ # Determine the default libpath from the value encoded in an empty executable.
-+ _LT_AC_SYS_LIBPATH_AIX
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-+
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+ else
- if test "$host_cpu" = ia64; then
-- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-- allow_undefined_flag="-z nodefs"
-- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
- else
-- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
-+ # Determine the default libpath from the value encoded in an empty executable.
-+ _LT_AC_SYS_LIBPATH_AIX
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
- # -berok will link without error, but may produce a broken library.
-- allow_undefined_flag='${wl}-berok'
-- # This is a bit strange, but is similar to how AIX traditionally builds
-- # it's shared libraries.
-- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $output_objdir/$libname$release.a $output_objdir/$soname'
-+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-+ # -bexpall does not export symbols beginning with underscore (_)
-+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-+ # Exported symbols can be pulled into shared objects from archives
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
-+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-+ # This is similar to how AIX traditionally builds it's shared libraries.
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
- fi
- fi
- ;;
--
-- amigaos*)
-- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_minus_L=yes
-- # see comment about different semantics on the GNU ld section
-- ld_shlibs=no
-+ chorus*)
-+ case $cc_basename in
-+ *)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ esac
- ;;
-
- cygwin* | mingw* | pw32*)
-- # When not using gcc, we currently assume that we are using
-- # Microsoft Visual C++.
-- # hardcode_libdir_flag_spec is actually meaningless, as there is
-- # no search path for DLLs.
-- hardcode_libdir_flag_spec=' '
-- allow_undefined_flag=unsupported
-- # Tell ltmain to make .lib files, not .a files.
-- libext=lib
-- # FIXME: Setting linknames here is a bad hack.
-- archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-- # The linker will automatically build a .lib file if we build a DLL.
-- old_archive_from_new_cmds='true'
-- # FIXME: Should let the user specify the lib program.
-- old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
-- fix_srcfile_path='`cygpath -w "$srcfile"`'
-- ;;
-+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-+ # as there is no search path for DLLs.
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
-+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-+
-+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is; otherwise, prepend...
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname.def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname.def;
-+ cat $export_symbols >> $output_objdir/$soname.def;
-+ fi~
-+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ else
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ fi
-+ ;;
-
- darwin* | rhapsody*)
-+ if test "$GXX" = yes; then
-+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
- case "$host_os" in
- rhapsody* | darwin1.[[012]])
-- allow_undefined_flag='-undefined suppress'
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
- ;;
- *) # Darwin 1.3 on
-- allow_undefined_flag='-flat_namespace -undefined suppress'
-- ;;
-- esac
-- # FIXME: Relying on posixy $() will cause problems for
-- # cross-compilation, but unfortunately the echo tests do not
-- # yet detect zsh echo's removal of \ escapes. Also zsh mangles
-- # `"' quotes if we put them in here... so don't!
-- archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)'
-- # We need to add '_' to the symbols in $export_symbols first
-- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
-- hardcode_direct=yes
-- hardcode_shlibpath_var=no
-- whole_archive_flag_spec='-all_load $convenience'
-- ;;
--
-- freebsd1*)
-- ld_shlibs=no
-- ;;
--
-- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-- # support. Future versions do this automatically, but an explicit c++rt0.o
-- # does not break anything, and helps significantly (at the cost of a little
-- # extra space).
-- freebsd2.2*)
-- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-- hardcode_libdir_flag_spec='-R$libdir'
-- hardcode_direct=yes
-- hardcode_shlibpath_var=no
-- ;;
--
-- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-- freebsd2*)
-- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct=yes
-- hardcode_minus_L=yes
-- hardcode_shlibpath_var=no
-- ;;
--
-- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-- freebsd*)
-- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-- hardcode_libdir_flag_spec='-R$libdir'
-- hardcode_direct=yes
-- hardcode_shlibpath_var=no
-- ;;
--
-- hpux9* | hpux10* | hpux11*)
-- case $host_os in
-- hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
-- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
-- esac
-- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-- hardcode_libdir_separator=:
-- hardcode_direct=yes
-- hardcode_minus_L=yes # Not in the search PATH, but as the default
-- # location of the library.
-- export_dynamic_flag_spec='${wl}-E'
-- ;;
--
-- irix5* | irix6* | nonstopux*)
-- if test "$GCC" = yes; then
-- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-- else
-- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- hardcode_libdir_flag_spec='-rpath $libdir'
-- fi
-- hardcode_libdir_separator=:
-- link_all_deplibs=yes
-- ;;
--
-- netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-- else
-- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-- fi
-- hardcode_libdir_flag_spec='-R$libdir'
-- hardcode_direct=yes
-- hardcode_shlibpath_var=no
-- ;;
--
-- newsos6)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct=yes
-- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator=:
-- hardcode_shlibpath_var=no
-- ;;
--
-- openbsd*)
-- hardcode_direct=yes
-- hardcode_shlibpath_var=no
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-- export_dynamic_flag_spec='${wl}-E'
-- else
-- case "$host_os" in
-- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec='-R$libdir'
-- ;;
-- *)
-- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-- ;;
-- esac
-+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
-+ else
-+ case ${MACOSX_DEPLOYMENT_TARGET} in
-+ 10.[[012]])
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
-+ ;;
-+ 10.*)
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+ esac
-+ lt_int_apple_cc_single_mod=no
-+ output_verbose_link_cmd='echo'
-+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
-+ lt_int_apple_cc_single_mod=yes
- fi
-- ;;
--
-- os2*)
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_minus_L=yes
-- allow_undefined_flag=unsupported
-- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-- old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-- ;;
--
-- osf3*)
-- if test "$GCC" = yes; then
-- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- else
-- allow_undefined_flag=' -expect_unresolved \*'
-- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- fi
-- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-- hardcode_libdir_separator=:
-- ;;
-+ _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-
-- osf4* | osf5*) # as osf3* with the addition of -msym flag
-- if test "$GCC" = yes; then
-- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
-+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- else
-- allow_undefined_flag=' -expect_unresolved \*'
-- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-- archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
--
-- #Both c and cxx compiler support -rpath directly
-- hardcode_libdir_flag_spec='-rpath $libdir'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- fi
-- hardcode_libdir_separator=:
-- ;;
--
-- sco3.2v5*)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_shlibpath_var=no
-- runpath_var=LD_RUN_PATH
-- hardcode_runpath_var=yes
-- export_dynamic_flag_spec='${wl}-Bexport'
-+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
-+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-+ else
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ fi
- ;;
-
-- solaris*)
-- # gcc --version < 3.0 without binutils cannot create self contained
-- # shared libraries reliably, requiring libgcc.a to resolve some of
-- # the object symbols generated in some cases. Libraries that use
-- # assert need libgcc.a to resolve __eprintf, for example. Linking
-- # a copy of libgcc.a into every shared library to guarantee resolving
-- # such symbols causes other problems: According to Tim Van Holder
-- # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
-- # (to the application) exception stack for one thing.
-- no_undefined_flag=' -z defs'
-- if test "$GCC" = yes; then
-- case `$CC --version 2>/dev/null` in
-- [[12]].*)
-- cat <<EOF 1>&2
--
--*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
--*** create self contained shared libraries on Solaris systems, without
--*** introducing a dependency on libgcc.a. Therefore, libtool is disabling
--*** -no-undefined support, which will at least allow you to build shared
--*** libraries. However, you may find that when you link such libraries
--*** into an application without using GCC, you have to manually add
--*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to
--*** upgrade to a newer version of GCC. Another option is to rebuild your
--*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
--
--EOF
-- no_undefined_flag=
-+ dgux*)
-+ case $cc_basename in
-+ ec++)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ ghcx)
-+ # Green Hills C++ Compiler
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ *)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
- ;;
-- esac
-- fi
-- # $CC -shared without GNU ld will not create a library from C++
-- # object files and a static libstdc++, better avoid it by now
-- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-- hardcode_libdir_flag_spec='-R$libdir'
-- hardcode_shlibpath_var=no
-- case $host_os in
-- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-- *) # Supported since Solaris 2.6 (maybe 2.5.1?)
-- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
- esac
-- link_all_deplibs=yes
- ;;
--
-- sunos4*)
-- if test "x$host_vendor" = xsequent; then
-- # Use $CC to link under sequent, because it throws in some extra .o
-- # files that make .init and .fini sections work.
-- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-- else
-- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-- fi
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_direct=yes
-- hardcode_minus_L=yes
-- hardcode_shlibpath_var=no
-+ freebsd[12]*)
-+ # C++ shared libraries reported to be fairly broken before switch to ELF
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ freebsd-elf*)
-+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-+ ;;
-+ freebsd* | kfreebsd*-gnu)
-+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-+ # conventions
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
-+ ;;
-+ gnu*)
-+ ;;
-+ hpux9*)
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-+ # but as the default
-+ # location of the library.
-+
-+ case $cc_basename in
-+ CC)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ aCC)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+ ;;
-+ *)
-+ if test "$GXX" = yes; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ else
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ fi
-+ ;;
-+ esac
- ;;
--
-- sysv4)
-- case $host_vendor in
-- sni)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct=yes # is this really true???
-+ hpux10*|hpux11*)
-+ if test $with_gnu_ld = no; then
-+ case "$host_cpu" in
-+ hppa*64*)
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
- ;;
-- siemens)
-- ## LD is ld it makes a PLAMLIB
-- ## CC just makes a GrossModule.
-- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-- reload_cmds='$CC -r -o $output$reload_objs'
-- hardcode_direct=no
-+ ia64*)
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- ;;
-- motorola)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-+ *)
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- ;;
-+ esac
-+ fi
-+ case "$host_cpu" in
-+ hppa*64*)
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-+ ia64*)
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-+ # but as the default
-+ # location of the library.
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-+ # but as the default
-+ # location of the library.
-+ ;;
- esac
-- runpath_var='LD_RUN_PATH'
-- hardcode_shlibpath_var=no
-- ;;
-
-- sysv4.3*)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_shlibpath_var=no
-- export_dynamic_flag_spec='-Bexport'
-- ;;
--
-- sysv5*)
-- no_undefined_flag=' -z text'
-- # $CC -shared without GNU ld will not create a library from C++
-- # object files and a static libstdc++, better avoid it by now
-- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-- hardcode_libdir_flag_spec=
-- hardcode_shlibpath_var=no
-- runpath_var='LD_RUN_PATH'
-- ;;
--
-- uts4*)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_shlibpath_var=no
-+ case $cc_basename in
-+ CC)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ aCC)
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+ ;;
-+ esac
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+ ;;
-+ *)
-+ if test "$GXX" = yes; then
-+ if test $with_gnu_ld = no; then
-+ case "$host_cpu" in
-+ ia64*|hppa*64*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+ ;;
-+ esac
-+ fi
-+ else
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ fi
-+ ;;
-+ esac
- ;;
--
-- dgux*)
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_libdir_flag_spec='-L$libdir'
-- hardcode_shlibpath_var=no
-+ irix5* | irix6*)
-+ case $cc_basename in
-+ CC)
-+ # SGI C++
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
-+
-+ # Archives containing C++ object files must be created using
-+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
-+ # necessary to make sure instantiated templates are included
-+ # in the archive.
-+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-+ ;;
-+ *)
-+ if test "$GXX" = yes; then
-+ if test "$with_gnu_ld" = no; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
-+ else
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
-+ fi
-+ fi
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-+ ;;
-+ esac
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
- ;;
--
-- sysv4*MP*)
-- if test -d /usr/nec; then
-- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_shlibpath_var=no
-- runpath_var=LD_RUN_PATH
-- hardcode_runpath_var=yes
-- ld_shlibs=yes
-- fi
-+ linux*)
-+ case $cc_basename in
-+ KCC)
-+ # Kuck and Associates, Inc. (KAI) C++ Compiler
-+
-+ # KCC will only create a shared library if the output file
-+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
-+ # to its proper name (with version) after linking.
-+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-+
-+ # Archives containing C++ object files must be created using
-+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-+ ;;
-+ icpc)
-+ # Intel C++
-+ with_gnu_ld=yes
-+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-+ ;;
-+ cxx)
-+ # Compaq C++
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-+
-+ runpath_var=LD_RUN_PATH
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+ ;;
-+ esac
- ;;
--
-- sysv4.2uw2*)
-- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-- hardcode_direct=yes
-- hardcode_minus_L=no
-- hardcode_shlibpath_var=no
-- hardcode_runpath_var=yes
-- runpath_var=LD_RUN_PATH
-+ lynxos*)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ m88k*)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ mvs*)
-+ case $cc_basename in
-+ cxx)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ *)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ esac
- ;;
--
-- sysv5uw7* | unixware7*)
-- no_undefined_flag='${wl}-z ${wl}text'
-- if test "$GCC" = yes; then
-- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-- else
-- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-+ wlarc=
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
- fi
-- runpath_var='LD_RUN_PATH'
-- hardcode_shlibpath_var=no
-- ;;
--
-- *)
-- ld_shlibs=no
-+ # Workaround some broken pre-1.5 toolchains
-+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
- ;;
-- esac
--fi
--AC_MSG_RESULT([$ld_shlibs])
--test "$ld_shlibs" = no && can_build_shared=no
--
--# Check hardcoding attributes.
--AC_MSG_CHECKING([how to hardcode library paths into programs])
--hardcode_action=
--if test -n "$hardcode_libdir_flag_spec" || \
-- test -n "$runpath_var"; then
--
-- # We can hardcode non-existant directories.
-- if test "$hardcode_direct" != no &&
-- # If the only mechanism to avoid hardcoding is shlibpath_var, we
-- # have to relink, otherwise we might link with an installed library
-- # when we should be linking with a yet-to-be-installed one
-- ## test "$hardcode_shlibpath_var" != no &&
-- test "$hardcode_minus_L" != no; then
-- # Linking always hardcodes the temporary library directory.
-- hardcode_action=relink
-- else
-- # We can link without hardcoding, and we can hardcode nonexisting dirs.
-- hardcode_action=immediate
-- fi
--else
-- # We cannot hardcode anything, or else we can only hardcode existing
-- # directories.
-- hardcode_action=unsupported
--fi
--AC_MSG_RESULT([$hardcode_action])
--
--striplib=
--old_striplib=
--AC_MSG_CHECKING([whether stripping libraries is possible])
--if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-- AC_MSG_RESULT([yes])
--else
-- AC_MSG_RESULT([no])
--fi
--
--reload_cmds='$LD$reload_flag -o $output$reload_objs'
--test -z "$deplibs_check_method" && deplibs_check_method=unknown
--
--# PORTME Fill in your ld.so characteristics
--AC_MSG_CHECKING([dynamic linker characteristics])
--library_names_spec=
--libname_spec='lib$name'
--soname_spec=
--postinstall_cmds=
--postuninstall_cmds=
--finish_cmds=
--finish_eval=
--shlibpath_var=
--shlibpath_overrides_runpath=unknown
--version_type=none
--dynamic_linker="$host_os ld.so"
--sys_lib_dlsearch_path_spec="/lib /usr/lib"
--sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
--
--case $host_os in
--aix3*)
-- version_type=linux
-- library_names_spec='${libname}${release}.so$versuffix $libname.a'
-- shlibpath_var=LIBPATH
-+ osf3*)
-+ case $cc_basename in
-+ KCC)
-+ # Kuck and Associates, Inc. (KAI) C++ Compiler
-+
-+ # KCC will only create a shared library if the output file
-+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
-+ # to its proper name (with version) after linking.
-+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-+
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+
-+ # Archives containing C++ object files must be created using
-+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-
-- # AIX has no versioning support, so we append a major version to the name.
-- soname_spec='${libname}${release}.so$major'
-- ;;
-+ ;;
-+ RCC)
-+ # Rational C++ 2.4.1
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ cxx)
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
-+
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+ ;;
-+ *)
-+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
-+
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
--aix4* | aix5*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- hardcode_into_libs=yes
-- if test "$host_cpu" = ia64; then
-- # AIX 5 supports IA64
-- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
-- shlibpath_var=LD_LIBRARY_PATH
-- else
-- # With GCC up to 2.95.x, collect2 would create an import file
-- # for dependence libraries. The import file would start with
-- # the line `#! .'. This would cause the generated library to
-- # depend on `.', always an invalid library. This was fixed in
-- # development snapshots of GCC prior to 3.0.
-- case $host_os in
-- aix4 | aix4.[[01]] | aix4.[[01]].*)
-- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-- echo ' yes '
-- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-- :
- else
-- can_build_shared=no
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
-- # AIX (on Power*) has no versioning support, so currently we can
-- # not hardcode correct soname into executable. Probably we can
-- # add versioning support to collect2, so additional links can
-- # be useful in future.
-- if test "$aix_use_runtimelinking" = yes; then
-- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-- # instead of lib<name>.a to let people know that these are not
-- # typical AIX shared libraries.
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-- else
-- # We preserve .a as extension for shared libraries through AIX4.2
-- # and later when we are not doing run time linking.
-- library_names_spec='${libname}${release}.a $libname.a'
-- soname_spec='${libname}${release}.so$major'
-- fi
-- shlibpath_var=LIBPATH
-- fi
-- hardcode_into_libs=yes
-- ;;
--
--amigaos*)
-- library_names_spec='$libname.ixlibrary $libname.a'
-- # Create ${libname}_ixlibrary.a entries in /sys/libs.
-- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
-- ;;
--
--beos*)
-- library_names_spec='${libname}.so'
-- dynamic_linker="$host_os ld.so"
-- shlibpath_var=LIBRARY_PATH
-- ;;
--
--bsdi4*)
-- version_type=linux
-- need_version=no
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-- soname_spec='${libname}${release}.so$major'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-- export_dynamic_flag_spec=-rdynamic
-- # the default ld.so.conf also contains /usr/contrib/lib and
-- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-- # libtool to hard-code these into programs
-- ;;
--
--cygwin* | mingw* | pw32*)
-- version_type=windows
-- need_version=no
-- need_lib_prefix=no
-- case $GCC,$host_os in
-- yes,cygwin*)
-- library_names_spec='$libname.dll.a'
-- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll'
-- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
-- dldir=$destdir/`dirname \$dlpath`~
-- test -d \$dldir || mkdir -p \$dldir~
-- $install_prog .libs/$dlname \$dldir/$dlname'
-- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
-- dlpath=$dir/\$dldll~
-- $rm \$dlpath'
-- ;;
-- yes,mingw*)
-- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll'
-- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"`
-- ;;
-- yes,pw32*)
-- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
- ;;
-- *)
-- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib'
-- ;;
-- esac
-- dynamic_linker='Win32 ld.exe'
-- # FIXME: first we should search . and the directory the executable is in
-- shlibpath_var=PATH
-- ;;
--
--darwin* | rhapsody*)
-- dynamic_linker="$host_os dyld"
-- version_type=darwin
-- need_lib_prefix=no
-- need_version=no
-- # FIXME: Relying on posixy $() will cause problems for
-- # cross-compilation, but unfortunately the echo tests do not
-- # yet detect zsh echo's removal of \ escapes.
-- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
-- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
-- shlibpath_overrides_runpath=yes
-- shlibpath_var=DYLD_LIBRARY_PATH
-- ;;
--
--freebsd1*)
-- dynamic_linker=no
-- ;;
--
--freebsd*-gnu*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-- soname_spec='${libname}${release}.so$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-- dynamic_linker='GNU/FreeBSD ld.so'
-- ;;
-+ osf4* | osf5*)
-+ case $cc_basename in
-+ KCC)
-+ # Kuck and Associates, Inc. (KAI) C++ Compiler
-+
-+ # KCC will only create a shared library if the output file
-+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
-+ # to its proper name (with version) after linking.
-+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-+
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+
-+ # Archives containing C++ object files must be created using
-+ # the KAI C++ compiler.
-+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
-+ ;;
-+ RCC)
-+ # Rational C++ 2.4.1
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ cxx)
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-+ echo "-hidden">> $lib.exp~
-+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
-+ $rm $lib.exp'
-+
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+ ;;
-+ *)
-+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
-+
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
--freebsd*)
-- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
-- version_type=freebsd-$objformat
-- case $version_type in
-- freebsd-elf*)
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
-- need_version=no
-- need_lib_prefix=no
-- ;;
-- freebsd-*)
-- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
-- need_version=yes
-- ;;
-- esac
-- shlibpath_var=LD_LIBRARY_PATH
-- case $host_os in
-- freebsd2*)
-- shlibpath_overrides_runpath=yes
-+ else
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ fi
-+ ;;
-+ esac
- ;;
-- *)
-- shlibpath_overrides_runpath=no
-- hardcode_into_libs=yes
-+ psos*)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ sco*)
-+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-+ case $cc_basename in
-+ CC)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ *)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ esac
- ;;
-- esac
-- ;;
-+ sunos4*)
-+ case $cc_basename in
-+ CC)
-+ # Sun C++ 4.x
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ lcc)
-+ # Lucid
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ *)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ esac
-+ ;;
-+ solaris*)
-+ case $cc_basename in
-+ CC)
-+ # Sun C++ 4.2, 5.x and Centerline C++
-+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-+
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ case $host_os in
-+ solaris2.[0-5] | solaris2.[0-5].*) ;;
-+ *)
-+ # The C++ compiler is used as linker so we must use $wl
-+ # flag to pass the commands to the underlying system
-+ # linker.
-+ # Supported since Solaris 2.6 (maybe 2.5.1?)
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-+ ;;
-+ esac
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
--gnu*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
-- soname_spec='${libname}${release}.so$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- hardcode_into_libs=yes
-- ;;
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ #
-+ # There doesn't appear to be a way to prevent this compiler from
-+ # explicitly linking system object files so we need to strip them
-+ # from the output so that they don't get included in the library
-+ # dependencies.
-+ output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-+
-+ # Archives containing C++ object files must be created using
-+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
-+ # necessary to make sure instantiated templates are included
-+ # in the archive.
-+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-+ ;;
-+ gcx)
-+ # Green Hills C++ Compiler
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
--hpux9* | hpux10* | hpux11*)
-- # Give a soname corresponding to the major version so that dld.sl refuses to
-- # link against other versions.
-- dynamic_linker="$host_os dld.sl"
-- version_type=sunos
-- need_lib_prefix=no
-- need_version=no
-- shlibpath_var=SHLIB_PATH
-- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
-- soname_spec='${libname}${release}.sl$major'
-- # HP-UX runs *really* slowly unless shared libraries are mode 555.
-- postinstall_cmds='chmod 555 $lib'
-- ;;
-+ # The C++ compiler must be used to create the archive.
-+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-+ ;;
-+ *)
-+ # GNU C++ compiler with Solaris linker
-+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-+ if $CC --version | grep -v '^2\.7' > /dev/null; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-+ else
-+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
-+ # platform.
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-+
-+ # Commands to make compiler produce verbose output that lists
-+ # what "hidden" libraries, object files and flags are used when
-+ # linking a shared library.
-+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-+ fi
-
--irix5* | irix6* | nonstopux*)
-- case $host_os in
-- nonstopux*) version_type=nonstopux ;;
-- *) version_type=irix ;;
-- esac
-- need_lib_prefix=no
-- need_version=no
-- soname_spec='${libname}${release}.so$major'
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
-- case $host_os in
-- irix5* | nonstopux*)
-- libsuff= shlibsuff=
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-+ fi
-+ ;;
-+ esac
- ;;
-- *)
-- case $LD in # libtool.m4 will add one of these switches to LD
-- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
-- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
-- *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
-- *) libsuff= shlibsuff= libmagic=never-match;;
-+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
-+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-+ ;;
-+ tandem*)
-+ case $cc_basename in
-+ NCC)
-+ # NonStop-UX NCC 3.20
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ *)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
- esac
- ;;
-- esac
-- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-- shlibpath_overrides_runpath=no
-- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-- ;;
--
--# No shared lib support for Linux oldld, aout, or coff.
--linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
-- dynamic_linker=no
-- ;;
-+ vxworks*)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ *)
-+ # FIXME: insert proper C++ library support
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+esac
-+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
-+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
--# This must be Linux ELF.
--linux-gnu*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-- soname_spec='${libname}${release}.so$major'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=no
-- # This implies no fast_install, which is unacceptable.
-- # Some rework will be needed to allow for fast_install
-- # before this can be enabled.
-- hardcode_into_libs=yes
-+_LT_AC_TAGVAR(GCC, $1)="$GXX"
-+_LT_AC_TAGVAR(LD, $1)="$LD"
-
-- # We used to test for /lib/ld.so.1 and disable shared libraries on
-- # powerpc, because MkLinux only supported shared libraries with the
-- # GNU dynamic linker. Since this was broken with cross compilers,
-- # most powerpc-linux boxes support dynamic linking these days and
-- # people can always --disable-shared, the test was removed, and we
-- # assume the GNU/Linux dynamic linker is in use.
-- dynamic_linker='GNU/Linux ld.so'
-- ;;
-+AC_LIBTOOL_POSTDEP_PREDEP($1)
-+AC_LIBTOOL_PROG_COMPILER_PIC($1)
-+AC_LIBTOOL_PROG_CC_C_O($1)
-+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
-+AC_LIBTOOL_PROG_LD_SHLIBS($1)
-+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
-+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-+AC_LIBTOOL_SYS_LIB_STRIP
-+AC_LIBTOOL_DLOPEN_SELF($1)
-+
-+AC_LIBTOOL_CONFIG($1)
-+
-+AC_LANG_POP
-+CC=$lt_save_CC
-+LDCXX=$LD
-+LD=$lt_save_LD
-+GCC=$lt_save_GCC
-+with_gnu_ldcxx=$with_gnu_ld
-+with_gnu_ld=$lt_save_with_gnu_ld
-+lt_cv_path_LDCXX=$lt_cv_path_LD
-+lt_cv_path_LD=$lt_save_path_LD
-+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-+])# AC_LIBTOOL_LANG_CXX_CONFIG
-
--netbsd*)
-- version_type=sunos
-- need_lib_prefix=no
-- need_version=no
-- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-- dynamic_linker='NetBSD (a.out) ld.so'
-- else
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
-- soname_spec='${libname}${release}.so$major'
-- dynamic_linker='NetBSD ld.elf_so'
-- fi
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- ;;
-+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
-+# ------------------------
-+# Figure out "hidden" library dependencies from verbose
-+# compiler output when linking a shared library.
-+# Parse the compiler output and extract the necessary
-+# objects, libraries and library flags.
-+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
-+dnl we can't use the lt_simple_compile_test_code here,
-+dnl because it contains code intended for an executable,
-+dnl not a library. It's possible we should let each
-+dnl tag define a new lt_????_link_test_code variable,
-+dnl but it's only used here...
-+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
-+int a;
-+void foo (void) { a = 0; }
-+EOF
-+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
-+class Foo
-+{
-+public:
-+ Foo (void) { a = 0; }
-+private:
-+ int a;
-+};
-+EOF
-+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
-+ subroutine foo
-+ implicit none
-+ integer*4 a
-+ a=0
-+ return
-+ end
-+EOF
-+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
-+public class foo {
-+ private int a;
-+ public void bar (void) {
-+ a = 0;
-+ }
-+};
-+EOF
-+])
-+dnl Parse the compiler output and extract the necessary
-+dnl objects, libraries and library flags.
-+if AC_TRY_EVAL(ac_compile); then
-+ # Parse the compiler output and extract the necessary
-+ # objects, libraries and library flags.
-+
-+ # Sentinel used to keep track of whether or not we are before
-+ # the conftest object file.
-+ pre_test_object_deps_done=no
-+
-+ # The `*' in the case matches for architectures that use `case' in
-+ # $output_verbose_cmd can trigger glob expansion during the loop
-+ # eval without this substitution.
-+ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
-+
-+ for p in `eval $output_verbose_link_cmd`; do
-+ case $p in
-+
-+ -L* | -R* | -l*)
-+ # Some compilers place space between "-{L,R}" and the path.
-+ # Remove the space.
-+ if test $p = "-L" \
-+ || test $p = "-R"; then
-+ prev=$p
-+ continue
-+ else
-+ prev=
-+ fi
-+
-+ if test "$pre_test_object_deps_done" = no; then
-+ case $p in
-+ -L* | -R*)
-+ # Internal compiler library paths should come after those
-+ # provided the user. The postdeps already come after the
-+ # user supplied libs so there is no need to process them.
-+ if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
-+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
-+ else
-+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
-+ fi
-+ ;;
-+ # The "-l" case would never come before the object being
-+ # linked, so don't bother handling this case.
-+ esac
-+ else
-+ if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
-+ _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
-+ else
-+ _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
-+ fi
-+ fi
-+ ;;
-+
-+ *.$objext)
-+ # This assumes that the test object file only shows up
-+ # once in the compiler output.
-+ if test "$p" = "conftest.$objext"; then
-+ pre_test_object_deps_done=yes
-+ continue
-+ fi
-+
-+ if test "$pre_test_object_deps_done" = no; then
-+ if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
-+ _LT_AC_TAGVAR(predep_objects, $1)="$p"
-+ else
-+ _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
-+ fi
-+ else
-+ if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
-+ _LT_AC_TAGVAR(postdep_objects, $1)="$p"
-+ else
-+ _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
-+ fi
-+ fi
-+ ;;
-
--newsos6)
-- version_type=linux
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- ;;
-+ *) ;; # Ignore the rest.
-
--openbsd*)
-- version_type=sunos
-- need_lib_prefix=no
-- need_version=no
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- case "$host_os" in
-- openbsd2.[[89]] | openbsd2.[[89]].*)
-- shlibpath_overrides_runpath=no
-- ;;
-- *)
-- shlibpath_overrides_runpath=yes
-- ;;
- esac
-- else
-- shlibpath_overrides_runpath=yes
-- fi
-- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
--
--os2*)
-- libname_spec='$name'
-- need_lib_prefix=no
-- library_names_spec='$libname.dll $libname.a'
-- dynamic_linker='OS/2 ld.exe'
-- shlibpath_var=LIBPATH
-- ;;
--
--osf3* | osf4* | osf5*)
-- version_type=osf
-- need_version=no
-- need_lib_prefix=no
-- soname_spec='${libname}${release}.so$major'
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-- shlibpath_var=LD_LIBRARY_PATH
-- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-- hardcode_into_libs=yes
-- ;;
-+ done
-
--sco3.2v5*)
-- version_type=osf
-- soname_spec='${libname}${release}.so$major'
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
-+ # Clean up.
-+ rm -f a.out a.exe
-+else
-+ echo "libtool.m4: error: problem compiling $1 test program"
-+fi
-
--solaris*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-- soname_spec='${libname}${release}.so$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- hardcode_into_libs=yes
-- # ldd complains unless libraries are executable
-- postinstall_cmds='chmod +x $lib'
-- ;;
-+$rm -f confest.$objext
-
--sunos4*)
-- version_type=sunos
-- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-- shlibpath_var=LD_LIBRARY_PATH
-- shlibpath_overrides_runpath=yes
-- if test "$with_gnu_ld" = yes; then
-- need_lib_prefix=no
-- fi
-- need_version=yes
-- ;;
-+case " $_LT_AC_TAGVAR(postdeps, $1) " in
-+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-+esac
-+])# AC_LIBTOOL_POSTDEP_PREDEP
-
--sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-- version_type=linux
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-- soname_spec='${libname}${release}.so$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- case $host_vendor in
-- sni)
-- shlibpath_overrides_runpath=no
-- need_lib_prefix=no
-- export_dynamic_flag_spec='${wl}-Blargedynsym'
-- runpath_var=LD_RUN_PATH
-- ;;
-- siemens)
-- need_lib_prefix=no
-- ;;
-- motorola)
-- need_lib_prefix=no
-- need_version=no
-- shlibpath_overrides_runpath=no
-- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-- ;;
-- esac
-- ;;
-+# AC_LIBTOOL_LANG_F77_CONFIG
-+# ------------------------
-+# Ensure that the configuration vars for the C compiler are
-+# suitably defined. Those variables are subsequently used by
-+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
-+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
-+[AC_REQUIRE([AC_PROG_F77])
-+AC_LANG_PUSH(Fortran 77)
-+
-+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
-+_LT_AC_TAGVAR(always_export_symbols, $1)=no
-+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
-+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-+_LT_AC_TAGVAR(hardcode_direct, $1)=no
-+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
-+_LT_AC_TAGVAR(module_cmds, $1)=
-+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
-+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
-+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-+_LT_AC_TAGVAR(no_undefined_flag, $1)=
-+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-+
-+# Source file extension for f77 test sources.
-+ac_ext=f
-+
-+# Object file extension for compiled f77 test sources.
-+objext=o
-+_LT_AC_TAGVAR(objext, $1)=$objext
-
--uts4*)
-- version_type=linux
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-- soname_spec='${libname}${release}.so$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
-+# Code to be used in simple compile tests
-+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
-
--dgux*)
-- version_type=linux
-- need_lib_prefix=no
-- need_version=no
-- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-- soname_spec='${libname}${release}.so$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- ;;
-+# Code to be used in simple link tests
-+lt_simple_link_test_code=" program t\n end\n"
-
--sysv4*MP*)
-- if test -d /usr/nec ;then
-- version_type=linux
-- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
-- soname_spec='$libname.so.$major'
-- shlibpath_var=LD_LIBRARY_PATH
-- fi
-- ;;
-+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-+_LT_AC_SYS_COMPILER
-
--*)
-- dynamic_linker=no
-- ;;
--esac
--AC_MSG_RESULT([$dynamic_linker])
--test "$dynamic_linker" = no && can_build_shared=no
-+# Allow CC to be a program name with arguments.
-+lt_save_CC="$CC"
-+CC=${F77-"f77"}
-+compiler=$CC
-+_LT_AC_TAGVAR(compiler, $1)=$CC
-+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
-
--# Report the final consequences.
- AC_MSG_CHECKING([if libtool supports shared libraries])
- AC_MSG_RESULT([$can_build_shared])
-
-@@ -2481,125 +4662,206 @@
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
-+aix4* | aix5*)
-+ test "$enable_shared" = yes && enable_static=no
-+ ;;
-+esac
-+AC_MSG_RESULT([$enable_shared])
-+
-+AC_MSG_CHECKING([whether to build static libraries])
-+# Make sure either enable_shared or enable_static is yes.
-+test "$enable_shared" = yes || enable_static=yes
-+AC_MSG_RESULT([$enable_static])
-+
-+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-+
-+_LT_AC_TAGVAR(GCC, $1)="$G77"
-+_LT_AC_TAGVAR(LD, $1)="$LD"
-+
-+AC_LIBTOOL_PROG_COMPILER_PIC($1)
-+AC_LIBTOOL_PROG_CC_C_O($1)
-+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
-+AC_LIBTOOL_PROG_LD_SHLIBS($1)
-+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
-+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-+AC_LIBTOOL_SYS_LIB_STRIP
-+
-+
-+AC_LIBTOOL_CONFIG($1)
-+
-+AC_LANG_POP
-+CC="$lt_save_CC"
-+])# AC_LIBTOOL_LANG_F77_CONFIG
-+
-+
-+# AC_LIBTOOL_LANG_GCJ_CONFIG
-+# --------------------------
-+# Ensure that the configuration vars for the C compiler are
-+# suitably defined. Those variables are subsequently used by
-+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
-+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
-+[AC_LANG_SAVE
-+
-+# Source file extension for Java test sources.
-+ac_ext=java
-+
-+# Object file extension for compiled Java test sources.
-+objext=o
-+_LT_AC_TAGVAR(objext, $1)=$objext
-+
-+# Code to be used in simple compile tests
-+lt_simple_compile_test_code="class foo {}\n"
-+
-+# Code to be used in simple link tests
-+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
-+
-+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-+_LT_AC_SYS_COMPILER
-+
-+# Allow CC to be a program name with arguments.
-+lt_save_CC="$CC"
-+CC=${GCJ-"gcj"}
-+compiler=$CC
-+_LT_AC_TAGVAR(compiler, $1)=$CC
-+
-+# GCJ did not exist at the time GCC didn't implicitly link libc in.
-+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-+
-+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
-+AC_LIBTOOL_PROG_COMPILER_PIC($1)
-+AC_LIBTOOL_PROG_CC_C_O($1)
-+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
-+AC_LIBTOOL_PROG_LD_SHLIBS($1)
-+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
-+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-+AC_LIBTOOL_SYS_LIB_STRIP
-+AC_LIBTOOL_DLOPEN_SELF($1)
-+
-+AC_LIBTOOL_CONFIG($1)
-+
-+AC_LANG_RESTORE
-+CC="$lt_save_CC"
-+])# AC_LIBTOOL_LANG_GCJ_CONFIG
-+
-+
-+# AC_LIBTOOL_LANG_RC_CONFIG
-+# --------------------------
-+# Ensure that the configuration vars for the Windows resource compiler are
-+# suitably defined. Those variables are subsequently used by
-+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
-+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
-+[AC_LANG_SAVE
-+
-+# Source file extension for RC test sources.
-+ac_ext=rc
-+
-+# Object file extension for compiled RC test sources.
-+objext=o
-+_LT_AC_TAGVAR(objext, $1)=$objext
-
--aix4*)
-- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-- test "$enable_shared" = yes && enable_static=no
-- fi
-- ;;
--esac
--AC_MSG_RESULT([$enable_shared])
-+# Code to be used in simple compile tests
-+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
-
--AC_MSG_CHECKING([whether to build static libraries])
--# Make sure either enable_shared or enable_static is yes.
--test "$enable_shared" = yes || enable_static=yes
--AC_MSG_RESULT([$enable_static])
-+# Code to be used in simple link tests
-+lt_simple_link_test_code="$lt_simple_compile_test_code"
-
--if test "$hardcode_action" = relink; then
-- # Fast installation is not supported
-- enable_fast_install=no
--elif test "$shlibpath_overrides_runpath" = yes ||
-- test "$enable_shared" = no; then
-- # Fast installation is not necessary
-- enable_fast_install=needless
--fi
-+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-+_LT_AC_SYS_COMPILER
-
--variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
--if test "$GCC" = yes; then
-- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
--fi
-+# Allow CC to be a program name with arguments.
-+lt_save_CC="$CC"
-+CC=${RC-"windres"}
-+compiler=$CC
-+_LT_AC_TAGVAR(compiler, $1)=$CC
-+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
--AC_LIBTOOL_DLOPEN_SELF
-+AC_LIBTOOL_CONFIG($1)
-+
-+AC_LANG_RESTORE
-+CC="$lt_save_CC"
-+])# AC_LIBTOOL_LANG_RC_CONFIG
-
--if test "$enable_shared" = yes && test "$GCC" = yes; then
-- case $archive_cmds in
-- *'~'*)
-- # FIXME: we may have to deal with multi-command sequences.
-- ;;
-- '$CC '*)
-- # Test whether the compiler implicitly links with -lc since on some
-- # systems, -lgcc has to come before -lc. If gcc already passes -lc
-- # to ld, don't add -lc before -lgcc.
-- AC_MSG_CHECKING([whether -lc should be explicitly linked in])
-- AC_CACHE_VAL([lt_cv_archive_cmds_need_lc],
-- [$rm conftest*
-- echo 'static int dummy;' > conftest.$ac_ext
--
-- if AC_TRY_EVAL(ac_compile); then
-- soname=conftest
-- lib=conftest
-- libobjs=conftest.$ac_objext
-- deplibs=
-- wl=$lt_cv_prog_cc_wl
-- compiler_flags=-v
-- linker_flags=-v
-- verstring=
-- output_objdir=.
-- libname=conftest
-- save_allow_undefined_flag=$allow_undefined_flag
-- allow_undefined_flag=
-- if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
-- then
-- lt_cv_archive_cmds_need_lc=no
-- else
-- lt_cv_archive_cmds_need_lc=yes
-- fi
-- allow_undefined_flag=$save_allow_undefined_flag
-- else
-- cat conftest.err 1>&5
-- fi])
-- AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc])
-- ;;
-- esac
--fi
--need_lc=${lt_cv_archive_cmds_need_lc-yes}
-
--# The second clause should only fire when bootstrapping the
-+# AC_LIBTOOL_CONFIG([TAGNAME])
-+# ----------------------------
-+# If TAGNAME is not passed, then create an initial libtool script
-+# with a default configuration from the untagged config vars. Otherwise
-+# add code to config.status for appending the configuration named by
-+# TAGNAME from the matching tagged config vars.
-+AC_DEFUN([AC_LIBTOOL_CONFIG],
-+[# The else clause should only fire when bootstrapping the
- # libtool distribution, otherwise you forgot to ship ltmain.sh
- # with your package, and you will get complaints that there are
- # no rules to generate ltmain.sh.
- if test -f "$ltmain"; then
-- :
--else
-- # If there is no Makefile yet, we rely on a make rule to execute
-- # `config.status --recheck' to rerun these tests and create the
-- # libtool script then.
-- test -f Makefile && make "$ltmain"
--fi
--
--if test -f "$ltmain"; then
-- trap "$rm \"${ofile}T\"; exit 1" 1 2 15
-- $rm -f "${ofile}T"
--
-- echo creating $ofile
--
-+ # See if we are running on zsh, and set the options which allow our commands through
-+ # without removal of \ escapes.
-+ if test -n "${ZSH_VERSION+set}" ; then
-+ setopt NO_GLOB_SUBST
-+ fi
- # Now quote all the things that may contain metacharacters while being
- # careful not to overquote the AC_SUBSTed values. We take copies of the
- # variables and quote the copies for generation of the libtool script.
-- for var in echo old_CC old_CFLAGS SED \
-- AR AR_FLAGS CC LD LN_S NM SHELL \
-- reload_flag reload_cmds wl \
-- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
-- thread_safe_flag_spec whole_archive_flag_spec libname_spec \
-- library_names_spec soname_spec \
-- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
-- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
-- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
-- old_striplib striplib file_magic_cmd export_symbols_cmds \
-- deplibs_check_method allow_undefined_flag no_undefined_flag \
-- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
-- global_symbol_to_c_name_address \
-- hardcode_libdir_flag_spec hardcode_libdir_separator \
-+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-+ SED SHELL STRIP \
-+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-+ deplibs_check_method reload_flag reload_cmds need_locks \
-+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-+ lt_cv_sys_global_symbol_to_c_name_address \
- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
-+ old_postinstall_cmds old_postuninstall_cmds \
-+ _LT_AC_TAGVAR(compiler, $1) \
-+ _LT_AC_TAGVAR(CC, $1) \
-+ _LT_AC_TAGVAR(LD, $1) \
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
-+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
-+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
-+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
-+ _LT_AC_TAGVAR(old_archive_cmds, $1) \
-+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
-+ _LT_AC_TAGVAR(predep_objects, $1) \
-+ _LT_AC_TAGVAR(postdep_objects, $1) \
-+ _LT_AC_TAGVAR(predeps, $1) \
-+ _LT_AC_TAGVAR(postdeps, $1) \
-+ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
-+ _LT_AC_TAGVAR(archive_cmds, $1) \
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
-+ _LT_AC_TAGVAR(postinstall_cmds, $1) \
-+ _LT_AC_TAGVAR(postuninstall_cmds, $1) \
-+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1) \
-+ _LT_AC_TAGVAR(no_undefined_flag, $1) \
-+ _LT_AC_TAGVAR(export_symbols_cmds, $1) \
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
-+ _LT_AC_TAGVAR(hardcode_automatic, $1) \
-+ _LT_AC_TAGVAR(module_cmds, $1) \
-+ _LT_AC_TAGVAR(module_expsym_cmds, $1) \
-+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
-+ _LT_AC_TAGVAR(exclude_expsyms, $1) \
-+ _LT_AC_TAGVAR(include_expsyms, $1); do
-
- case $var in
-- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
-- old_postinstall_cmds | old_postuninstall_cmds | \
-- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
-- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
-+ _LT_AC_TAGVAR(old_archive_cmds, $1) | \
-+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
-+ _LT_AC_TAGVAR(archive_cmds, $1) | \
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
-+ _LT_AC_TAGVAR(module_cmds, $1) | \
-+ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
-+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
-+ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
-+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
- postinstall_cmds | postuninstall_cmds | \
-- finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-+ old_postinstall_cmds | old_postuninstall_cmds | \
-+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
- # Double-quote double-evaled strings.
- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
- ;;
-@@ -2609,14 +4871,31 @@
- esac
- done
-
-- cat <<__EOF__ > "${ofile}T"
--#! $SHELL
-+ case $lt_echo in
-+ *'\[$]0 --fallback-echo"')
-+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
-+ ;;
-+ esac
-
--# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-+ifelse([$1], [],
-+ [cfgfile="${ofile}T"
-+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
-+ $rm -f "$cfgfile"
-+ AC_MSG_NOTICE([creating $ofile])],
-+ [cfgfile="$ofile"])
-+
-+ cat <<__EOF__ >> "$cfgfile"
-+ifelse([$1], [],
-+[#! $SHELL
-+
-+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
- # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
- # NOTE: Changes made to this file will be lost: look at ltmain.sh.
- #
--# Copyright (C) 1996-2000 Free Software Foundation, Inc.
-+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
-+# Free Software Foundation, Inc.
-+#
-+# This file is part of GNU Libtool:
- # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
- #
- # This program is free software; you can redistribute it and/or modify
-@@ -2638,17 +4917,21 @@
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
-
--# A sed that does not truncate output.
-+# A sed program that does not truncate output.
- SED=$lt_SED
-
- # Sed that helps us avoid accidentally triggering echo(1) options like -n.
--Xsed="${SED} -e s/^X//"
-+Xsed="$SED -e s/^X//"
-
- # The HP-UX ksh and POSIX shell print the target directory to stdout
- # if CDPATH is set.
- if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-
--# ### BEGIN LIBTOOL CONFIG
-+# The names of the tagged configurations supported by this script.
-+available_tags=
-+
-+# ### BEGIN LIBTOOL CONFIG],
-+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
-
- # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-
-@@ -2662,7 +4945,10 @@
- build_old_libs=$enable_static
-
- # Whether or not to add -lc for building shared libraries.
--build_libtool_need_lc=$need_lc
-+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
-+
-+# Whether or not to disallow shared libs when runtime libs are static
-+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
-
- # Whether or not to optimize for fast installation.
- fast_install=$enable_fast_install
-@@ -2678,14 +4964,20 @@
- AR=$lt_AR
- AR_FLAGS=$lt_AR_FLAGS
-
--# The default C compiler.
--CC=$lt_CC
-+# A C compiler.
-+LTCC=$lt_LTCC
-+
-+# A language-specific compiler.
-+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
-
- # Is the compiler the GNU C compiler?
--with_gcc=$GCC
-+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
-+
-+# An ERE matcher.
-+EGREP=$lt_EGREP
-
- # The linker used to build libraries.
--LD=$lt_LD
-+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
-
- # Whether we need hard or soft links.
- LN_S=$lt_LN_S
-@@ -2694,7 +4986,7 @@
- NM=$lt_NM
-
- # A symbol stripping program
--STRIP=$STRIP
-+STRIP=$lt_STRIP
-
- # Used to examine libraries when file_magic_cmd begins "file"
- MAGIC_CMD=$MAGIC_CMD
-@@ -2716,7 +5008,7 @@
- reload_cmds=$lt_reload_cmds
-
- # How to pass a linker flag through the compiler.
--wl=$lt_wl
-+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
-
- # Object file suffix (normally "o").
- objext="$ac_objext"
-@@ -2724,18 +5016,21 @@
- # Old archive suffix (normally "a").
- libext="$libext"
-
-+# Shared library suffix (normally ".so").
-+shrext_cmds='$shrext_cmds'
-+
- # Executable file suffix (normally "").
- exeext="$exeext"
-
- # Additional compiler flags for building library objects.
--pic_flag=$lt_pic_flag
-+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
- pic_mode=$pic_mode
-
--# Does compiler simultaneously support -c and -o options?
--compiler_c_o=$lt_compiler_c_o
-+# What is the maximum length of a command?
-+max_cmd_len=$lt_cv_sys_max_cmd_len
-
--# Can we write directly to a .lo ?
--compiler_o_lo=$lt_compiler_o_lo
-+# Does compiler simultaneously support -c and -o options?
-+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
-
- # Must we lock files when doing compilation ?
- need_locks=$lt_need_locks
-@@ -2756,946 +5051,1770 @@
- dlopen_self_static=$enable_dlopen_self_static
-
- # Compiler flag to prevent dynamic linking.
--link_static_flag=$lt_link_static_flag
-+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
-
- # Compiler flag to turn off builtin functions.
--no_builtin_flag=$lt_no_builtin_flag
-+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
-
- # Compiler flag to allow reflexive dlopens.
--export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
-
- # Compiler flag to generate shared objects directly from archives.
--whole_archive_flag_spec=$lt_whole_archive_flag_spec
-+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
-
- # Compiler flag to generate thread-safe objects.
--thread_safe_flag_spec=$lt_thread_safe_flag_spec
-+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
-+
-+# Library versioning type.
-+version_type=$version_type
-+
-+# Format of library name prefix.
-+libname_spec=$lt_libname_spec
-+
-+# List of archive names. First name is the real one, the rest are links.
-+# The last name is the one that the linker finds with -lNAME.
-+library_names_spec=$lt_library_names_spec
-+
-+# The coded name of the library, if different from the real name.
-+soname_spec=$lt_soname_spec
-+
-+# Commands used to build and install an old-style archive.
-+RANLIB=$lt_RANLIB
-+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
-+old_postinstall_cmds=$lt_old_postinstall_cmds
-+old_postuninstall_cmds=$lt_old_postuninstall_cmds
-+
-+# Create an old-style archive from a shared archive.
-+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
-+
-+# Create a temporary old-style archive to link instead of a shared archive.
-+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
-+
-+# Commands used to build and install a shared archive.
-+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
-+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
-+postinstall_cmds=$lt_postinstall_cmds
-+postuninstall_cmds=$lt_postuninstall_cmds
-+
-+# Commands used to build a loadable module (assumed same as above if empty)
-+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
-+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
-+
-+# Commands to strip libraries.
-+old_striplib=$lt_old_striplib
-+striplib=$lt_striplib
-+
-+# Dependencies to place before the objects being linked to create a
-+# shared library.
-+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
-+
-+# Dependencies to place after the objects being linked to create a
-+# shared library.
-+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
-+
-+# Dependencies to place before the objects being linked to create a
-+# shared library.
-+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
-+
-+# Dependencies to place after the objects being linked to create a
-+# shared library.
-+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
-+
-+# The library search path used internally by the compiler when linking
-+# a shared library.
-+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
-+
-+# Method to check whether dependent libraries are shared objects.
-+deplibs_check_method=$lt_deplibs_check_method
-+
-+# Command to use when deplibs_check_method == file_magic.
-+file_magic_cmd=$lt_file_magic_cmd
-+
-+# Flag that allows shared libraries with undefined symbols to be built.
-+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
-+
-+# Flag that forces no undefined symbols.
-+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
-+
-+# Commands used to finish a libtool library installation in a directory.
-+finish_cmds=$lt_finish_cmds
-+
-+# Same as above, but a single script fragment to be evaled but not shown.
-+finish_eval=$lt_finish_eval
-+
-+# Take the output of nm and produce a listing of raw symbols and C names.
-+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-+
-+# Transform the output of nm in a proper C declaration
-+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-+
-+# Transform the output of nm in a C name address pair
-+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-+
-+# This is the shared library runtime path variable.
-+runpath_var=$runpath_var
-+
-+# This is the shared library path variable.
-+shlibpath_var=$shlibpath_var
-+
-+# Is shlibpath searched before the hard-coded library search path?
-+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-+
-+# How to hardcode a shared library path into an executable.
-+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
-+
-+# Whether we should hardcode library paths into libraries.
-+hardcode_into_libs=$hardcode_into_libs
-+
-+# Flag to hardcode \$libdir into a binary during linking.
-+# This must work even if \$libdir does not exist.
-+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
-+
-+# If ld is used when linking, flag to hardcode \$libdir into
-+# a binary during linking. This must work even if \$libdir does
-+# not exist.
-+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
-+
-+# Whether we need a single -rpath flag with a separated argument.
-+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
-+
-+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
-+
-+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
-+
-+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-+# the resulting binary.
-+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
-+
-+# Set to yes if building a shared library automatically hardcodes DIR into the library
-+# and all subsequent libraries and executables linked against it.
-+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
-+
-+# Variables whose values should be saved in libtool wrapper scripts and
-+# restored at relink time.
-+variables_saved_for_relink="$variables_saved_for_relink"
-+
-+# Whether libtool must link a program against all its dependency libraries.
-+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
-+
-+# Compile-time system search path for libraries
-+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-+
-+# Run-time system search path for libraries
-+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-+
-+# Fix the shell variable \$srcfile for the compiler.
-+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
-+
-+# Set to yes if exported symbols are required.
-+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
-+
-+# The commands to list exported symbols.
-+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
-+
-+# The commands to extract the exported symbol list from a shared archive.
-+extract_expsyms_cmds=$lt_extract_expsyms_cmds
-+
-+# Symbols that should not be listed in the preloaded symbols.
-+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
-+
-+# Symbols that must always be exported.
-+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
-+
-+ifelse([$1],[],
-+[# ### END LIBTOOL CONFIG],
-+[# ### END LIBTOOL TAG CONFIG: $tagname])
-+
-+__EOF__
-+
-+ifelse([$1],[], [
-+ case $host_os in
-+ aix3*)
-+ cat <<\EOF >> "$cfgfile"
-+
-+# AIX sometimes has problems with the GCC collect2 program. For some
-+# reason, if we set the COLLECT_NAMES environment variable, the problems
-+# vanish in a puff of smoke.
-+if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+fi
-+EOF
-+ ;;
-+ esac
-+
-+ # We use sed instead of cat because bash on DJGPP gets confused if
-+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
-+ # text mode, it properly converts lines to CR/LF. This bash problem
-+ # is reportedly fixed, but why not run on old versions too?
-+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
-+
-+ mv -f "$cfgfile" "$ofile" || \
-+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-+ chmod +x "$ofile"
-+])
-+else
-+ # If there is no Makefile yet, we rely on a make rule to execute
-+ # `config.status --recheck' to rerun these tests and create the
-+ # libtool script then.
-+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-+ if test -f "$ltmain_in"; then
-+ test -f Makefile && make "$ltmain"
-+ fi
-+fi
-+])# AC_LIBTOOL_CONFIG
-+
-+
-+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
-+# -------------------------------------------
-+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
-+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
-+
-+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-+
-+if test "$GCC" = yes; then
-+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-+
-+ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-+ lt_cv_prog_compiler_rtti_exceptions,
-+ [-fno-rtti -fno-exceptions], [],
-+ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-+fi
-+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
-+
-+
-+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-+# ---------------------------------
-+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
-+[AC_REQUIRE([AC_CANONICAL_HOST])
-+AC_REQUIRE([AC_PROG_NM])
-+AC_REQUIRE([AC_OBJEXT])
-+# Check for command to grab the raw symbol name followed by C symbol from nm.
-+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-+[
-+# These are sane defaults that work on at least a few old systems.
-+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-+
-+# Character class describing NM global symbol codes.
-+symcode='[[BCDEGRST]]'
-+
-+# Regexp to match symbols that can be accessed directly from C.
-+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-+
-+# Transform the above into a raw symbol and a C symbol.
-+symxfrm='\1 \2\3 \3'
-+
-+# Transform an extracted symbol line into a proper C declaration
-+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
-+
-+# Transform an extracted symbol line into symbol name and symbol address
-+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+
-+# Define system-specific variables.
-+case $host_os in
-+aix*)
-+ symcode='[[BCDT]]'
-+ ;;
-+cygwin* | mingw* | pw32*)
-+ symcode='[[ABCDGISTW]]'
-+ ;;
-+hpux*) # Its linker distinguishes data from code symbols
-+ if test "$host_cpu" = ia64; then
-+ symcode='[[ABCDEGRST]]'
-+ fi
-+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+ ;;
-+irix* | nonstopux*)
-+ symcode='[[BCDEGRST]]'
-+ ;;
-+osf*)
-+ symcode='[[BCDEGQRST]]'
-+ ;;
-+solaris* | sysv5*)
-+ symcode='[[BDRT]]'
-+ ;;
-+sysv4)
-+ symcode='[[DFNSTU]]'
-+ ;;
-+esac
-+
-+# Handle CRLF in mingw tool chain
-+opt_cr=
-+case $build_os in
-+mingw*)
-+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-+ ;;
-+esac
-
--# Library versioning type.
--version_type=$version_type
-+# If we're using GNU nm, then use its standard symbol codes.
-+case `$NM -V 2>&1` in
-+*GNU* | *'with BFD'*)
-+ symcode='[[ABCDGIRSTW]]' ;;
-+esac
-
--# Format of library name prefix.
--libname_spec=$lt_libname_spec
-+# Try without a prefix undercore, then with it.
-+for ac_symprfx in "" "_"; do
-
--# List of archive names. First name is the real one, the rest are links.
--# The last name is the one that the linker finds with -lNAME.
--library_names_spec=$lt_library_names_spec
-+ # Write the raw and C identifiers.
-+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
-
--# The coded name of the library, if different from the real name.
--soname_spec=$lt_soname_spec
-+ # Check to see that the pipe works correctly.
-+ pipe_works=no
-
--# Commands used to build and install an old-style archive.
--RANLIB=$lt_RANLIB
--old_archive_cmds=$lt_old_archive_cmds
--old_postinstall_cmds=$lt_old_postinstall_cmds
--old_postuninstall_cmds=$lt_old_postuninstall_cmds
-+ rm -f conftest*
-+ cat > conftest.$ac_ext <<EOF
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+char nm_test_var;
-+void nm_test_func(){}
-+#ifdef __cplusplus
-+}
-+#endif
-+int main(){nm_test_var='a';nm_test_func();return(0);}
-+EOF
-
--# Create an old-style archive from a shared archive.
--old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-+ if AC_TRY_EVAL(ac_compile); then
-+ # Now try to grab the symbols.
-+ nlist=conftest.nm
-+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
-+ # Try sorting and uniquifying the output.
-+ if sort "$nlist" | uniq > "$nlist"T; then
-+ mv -f "$nlist"T "$nlist"
-+ else
-+ rm -f "$nlist"T
-+ fi
-
--# Create a temporary old-style archive to link instead of a shared archive.
--old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-+ # Make sure that we snagged all the symbols we need.
-+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
-+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
-+ cat <<EOF > conftest.$ac_ext
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
--# Commands used to build and install a shared archive.
--archive_cmds=$lt_archive_cmds
--archive_expsym_cmds=$lt_archive_expsym_cmds
--postinstall_cmds=$lt_postinstall_cmds
--postuninstall_cmds=$lt_postuninstall_cmds
-+EOF
-+ # Now generate the symbol file.
-+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
-
--# Commands to strip libraries.
--old_striplib=$lt_old_striplib
--striplib=$lt_striplib
-+ cat <<EOF >> conftest.$ac_ext
-+#if defined (__STDC__) && __STDC__
-+# define lt_ptr_t void *
-+#else
-+# define lt_ptr_t char *
-+# define const
-+#endif
-
--# Method to check whether dependent libraries are shared objects.
--deplibs_check_method=$lt_deplibs_check_method
-+/* The mapping between symbol names and symbols. */
-+const struct {
-+ const char *name;
-+ lt_ptr_t address;
-+}
-+lt_preloaded_symbols[[]] =
-+{
-+EOF
-+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
-+ cat <<\EOF >> conftest.$ac_ext
-+ {0, (lt_ptr_t) 0}
-+};
-
--# Command to use when deplibs_check_method == file_magic.
--file_magic_cmd=$lt_file_magic_cmd
-+#ifdef __cplusplus
-+}
-+#endif
-+EOF
-+ # Now try linking the two files.
-+ mv conftest.$ac_objext conftstm.$ac_objext
-+ lt_save_LIBS="$LIBS"
-+ lt_save_CFLAGS="$CFLAGS"
-+ LIBS="conftstm.$ac_objext"
-+ CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
-+ pipe_works=yes
-+ fi
-+ LIBS="$lt_save_LIBS"
-+ CFLAGS="$lt_save_CFLAGS"
-+ else
-+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
-+ fi
-+ else
-+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-+ fi
-+ else
-+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-+ fi
-+ else
-+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
-+ cat conftest.$ac_ext >&5
-+ fi
-+ rm -f conftest* conftst*
-
--# Flag that allows shared libraries with undefined symbols to be built.
--allow_undefined_flag=$lt_allow_undefined_flag
-+ # Do not use the global_symbol_pipe unless it works.
-+ if test "$pipe_works" = yes; then
-+ break
-+ else
-+ lt_cv_sys_global_symbol_pipe=
-+ fi
-+done
-+])
-+if test -z "$lt_cv_sys_global_symbol_pipe"; then
-+ lt_cv_sys_global_symbol_to_cdecl=
-+fi
-+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-+ AC_MSG_RESULT(failed)
-+else
-+ AC_MSG_RESULT(ok)
-+fi
-+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-
--# Flag that forces no undefined symbols.
--no_undefined_flag=$lt_no_undefined_flag
-
--# Commands used to finish a libtool library installation in a directory.
--finish_cmds=$lt_finish_cmds
-+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
-+# ---------------------------------------
-+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
-+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
-+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
-
--# Same as above, but a single script fragment to be evaled but not shown.
--finish_eval=$lt_finish_eval
-+AC_MSG_CHECKING([for $compiler option to produce PIC])
-+ ifelse([$1],[CXX],[
-+ # C++ specific cases for pic, static, wl, etc.
-+ if test "$GXX" = yes; then
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
--# Take the output of nm and produce a listing of raw symbols and C names.
--global_symbol_pipe=$lt_global_symbol_pipe
-+ case $host_os in
-+ aix*)
-+ # All AIX code is PIC.
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ fi
-+ ;;
-+ amigaos*)
-+ # FIXME: we need at least 68020 code to build shared libraries, but
-+ # adding the `-m68020' flag to GCC prevents building anything better,
-+ # like `-m68040'.
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-+ ;;
-+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-+ # PIC is the default for these OSes.
-+ ;;
-+ mingw* | os2* | pw32*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
-+ ;;
-+ darwin* | rhapsody*)
-+ # PIC is the default on this platform
-+ # Common symbols not allowed in MH_DYLIB files
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-+ ;;
-+ *djgpp*)
-+ # DJGPP does not support shared libraries at all
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-+ ;;
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-+ fi
-+ ;;
-+ hpux*)
-+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-+ # not for PA HP-UX.
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-+ ;;
-+ esac
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-+ ;;
-+ esac
-+ else
-+ case $host_os in
-+ aix4* | aix5*)
-+ # All AIX code is PIC.
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ else
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-+ fi
-+ ;;
-+ chorus*)
-+ case $cc_basename in
-+ cxch68)
-+ # Green Hills C++ Compiler
-+ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-+ ;;
-+ esac
-+ ;;
-+ dgux*)
-+ case $cc_basename in
-+ ec++)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-+ ;;
-+ ghcx)
-+ # Green Hills C++ Compiler
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ freebsd* | kfreebsd*-gnu)
-+ # FreeBSD uses GNU C++
-+ ;;
-+ hpux9* | hpux10* | hpux11*)
-+ case $cc_basename in
-+ CC)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
-+ if test "$host_cpu" != ia64; then
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-+ fi
-+ ;;
-+ aCC)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ # +Z the default
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-+ ;;
-+ esac
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ irix5* | irix6* | nonstopux*)
-+ case $cc_basename in
-+ CC)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-+ # CC pic flag -KPIC is the default.
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ linux*)
-+ case $cc_basename in
-+ KCC)
-+ # KAI C++ Compiler
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-+ ;;
-+ icpc)
-+ # Intel C++
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-+ ;;
-+ cxx)
-+ # Compaq C++
-+ # Make sure the PIC flag is empty. It appears that all Alpha
-+ # Linux and Compaq Tru64 Unix objects are PIC.
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ lynxos*)
-+ ;;
-+ m88k*)
-+ ;;
-+ mvs*)
-+ case $cc_basename in
-+ cxx)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
-+ ;;
-+ osf3* | osf4* | osf5*)
-+ case $cc_basename in
-+ KCC)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-+ ;;
-+ RCC)
-+ # Rational C++ 2.4.1
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-+ ;;
-+ cxx)
-+ # Digital/Compaq C++
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ # Make sure the PIC flag is empty. It appears that all Alpha
-+ # Linux and Compaq Tru64 Unix objects are PIC.
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ psos*)
-+ ;;
-+ sco*)
-+ case $cc_basename in
-+ CC)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ solaris*)
-+ case $cc_basename in
-+ CC)
-+ # Sun C++ 4.2, 5.x and Centerline C++
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-+ ;;
-+ gcx)
-+ # Green Hills C++ Compiler
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ sunos4*)
-+ case $cc_basename in
-+ CC)
-+ # Sun C++ 4.x
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ ;;
-+ lcc)
-+ # Lucid
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ tandem*)
-+ case $cc_basename in
-+ NCC)
-+ # NonStop-UX NCC 3.20
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-+ ;;
-+ *)
-+ ;;
-+ esac
-+ ;;
-+ unixware*)
-+ ;;
-+ vxworks*)
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-+ ;;
-+ esac
-+ fi
-+],
-+[
-+ if test "$GCC" = yes; then
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
--# Transform the output of nm in a proper C declaration
--global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
-+ case $host_os in
-+ aix*)
-+ # All AIX code is PIC.
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ fi
-+ ;;
-
--# Transform the output of nm in a C name address pair
--global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
-+ amigaos*)
-+ # FIXME: we need at least 68020 code to build shared libraries, but
-+ # adding the `-m68020' flag to GCC prevents building anything better,
-+ # like `-m68040'.
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-+ ;;
-
--# This is the shared library runtime path variable.
--runpath_var=$runpath_var
-+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-+ # PIC is the default for these OSes.
-+ ;;
-
--# This is the shared library path variable.
--shlibpath_var=$shlibpath_var
-+ mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
-+ ;;
-
--# Is shlibpath searched before the hard-coded library search path?
--shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-+ darwin* | rhapsody*)
-+ # PIC is the default on this platform
-+ # Common symbols not allowed in MH_DYLIB files
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-+ ;;
-
--# How to hardcode a shared library path into an executable.
--hardcode_action=$hardcode_action
-+ msdosdjgpp*)
-+ # Just because we use GCC doesn't mean we suddenly get shared libraries
-+ # on systems that don't support them.
-+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-+ enable_shared=no
-+ ;;
-
--# Whether we should hardcode library paths into libraries.
--hardcode_into_libs=$hardcode_into_libs
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-+ fi
-+ ;;
-
--# Flag to hardcode \$libdir into a binary during linking.
--# This must work even if \$libdir does not exist.
--hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-+ hpux*)
-+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-+ # not for PA HP-UX.
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ # +Z the default
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-+ ;;
-+ esac
-+ ;;
-
--# Whether we need a single -rpath flag with a separated argument.
--hardcode_libdir_separator=$lt_hardcode_libdir_separator
-+ *)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-+ ;;
-+ esac
-+ else
-+ # PORTME Check for flag to pass linker flags through the system compiler.
-+ case $host_os in
-+ aix*)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ else
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-+ fi
-+ ;;
-
--# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
--# resulting binary.
--hardcode_direct=$hardcode_direct
-+ mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
-+ ;;
-
--# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
--# resulting binary.
--hardcode_minus_L=$hardcode_minus_L
-+ hpux9* | hpux10* | hpux11*)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-+ # not for PA HP-UX.
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ # +Z the default
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-+ ;;
-+ esac
-+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-+ ;;
-
--# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
--# the resulting binary.
--hardcode_shlibpath_var=$hardcode_shlibpath_var
-+ irix5* | irix6* | nonstopux*)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ # PIC (with -KPIC) is the default.
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-+ ;;
-
--# Variables whose values should be saved in libtool wrapper scripts and
--# restored at relink time.
--variables_saved_for_relink="$variables_saved_for_relink"
-+ newsos6)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ ;;
-
--# Whether libtool must link a program against all its dependency libraries.
--link_all_deplibs=$link_all_deplibs
-+ linux*)
-+ case $CC in
-+ icc* | ecc*)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-+ ;;
-+ ccc*)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ # All Alpha code is PIC.
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-+ ;;
-+ esac
-+ ;;
-
--# Compile-time system search path for libraries
--sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-+ osf3* | osf4* | osf5*)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ # All OSF/1 code is PIC.
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-+ ;;
-
--# Run-time system search path for libraries
--sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-+ sco3.2v5*)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
-+ ;;
-
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path="$fix_srcfile_path"
-+ solaris*)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ ;;
-
--# Set to yes if exported symbols are required.
--always_export_symbols=$always_export_symbols
-+ sunos4*)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ ;;
-
--# The commands to list exported symbols.
--export_symbols_cmds=$lt_export_symbols_cmds
-+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ ;;
-
--# The commands to extract the exported symbol list from a shared archive.
--extract_expsyms_cmds=$lt_extract_expsyms_cmds
-+ sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ fi
-+ ;;
-
--# Symbols that should not be listed in the preloaded symbols.
--exclude_expsyms=$lt_exclude_expsyms
-+ uts4*)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+ ;;
-
--# Symbols that must always be exported.
--include_expsyms=$lt_include_expsyms
-+ *)
-+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-+ ;;
-+ esac
-+ fi
-+])
-+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
-
--# ### END LIBTOOL CONFIG
-+#
-+# Check to make sure the PIC flag actually works.
-+#
-+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
-+ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
-+ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
-+ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
-+ "" | " "*) ;;
-+ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-+ esac],
-+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-+fi
-+case "$host_os" in
-+ # For platforms which do not support PIC, -DPIC is meaningless:
-+ *djgpp*)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
-+ ;;
-+esac
-+])
-
--__EOF__
-
-+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
-+# ------------------------------------
-+# See if the linker supports building shared libraries.
-+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
-+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-+ifelse([$1],[CXX],[
-+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- case $host_os in
-- aix3*)
-- cat <<\EOF >> "${ofile}T"
--
--# AIX sometimes has problems with the GCC collect2 program. For some
--# reason, if we set the COLLECT_NAMES environment variable, the problems
--# vanish in a puff of smoke.
--if test "X${COLLECT_NAMES+set}" != Xset; then
-- COLLECT_NAMES=
-- export COLLECT_NAMES
--fi
--EOF
-+ aix4* | aix5*)
-+ # If we're using GNU nm, then we don't want the "-C" option.
-+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
-+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-+ else
-+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-+ fi
- ;;
-+ pw32*)
-+ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-+ ;;
-+ cygwin* | mingw*)
-+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
-+ ;;
-+ linux*)
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=no
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+ ;;
- esac
-+],[
-+ runpath_var=
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
-+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-+ _LT_AC_TAGVAR(archive_cmds, $1)=
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
-+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
-+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
-+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
-+ _LT_AC_TAGVAR(module_cmds, $1)=
-+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
-+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
-+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+ # include_expsyms should be a list of space-separated symbols to be *always*
-+ # included in the symbol list
-+ _LT_AC_TAGVAR(include_expsyms, $1)=
-+ # exclude_expsyms can be an extended regexp of symbols to exclude
-+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
-+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-+ # as well as any symbol that contains `d'.
-+ _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
-+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-+ # platforms (ab)use it in PIC code, but their linkers get confused if
-+ # the symbol is explicitly referenced. Since portable code cannot
-+ # rely on this symbol name, it's probably fine to never include it in
-+ # preloaded symbol tables.
-+ extract_expsyms_cmds=
-
- case $host_os in
-- cygwin* | mingw* | pw32* | os2*)
-- cat <<'EOF' >> "${ofile}T"
-- # This is a source program that is used to create dlls on Windows
-- # Don't remove nor modify the starting and closing comments
--# /* ltdll.c starts here */
--# #define WIN32_LEAN_AND_MEAN
--# #include <windows.h>
--# #undef WIN32_LEAN_AND_MEAN
--# #include <stdio.h>
--#
--# #ifndef __CYGWIN__
--# # ifdef __CYGWIN32__
--# # define __CYGWIN__ __CYGWIN32__
--# # endif
--# #endif
--#
--# #ifdef __cplusplus
--# extern "C" {
--# #endif
--# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
--# #ifdef __cplusplus
--# }
--# #endif
--#
--# #ifdef __CYGWIN__
--# #include <cygwin/cygwin_dll.h>
--# DECLARE_CYGWIN_DLL( DllMain );
--# #endif
--# HINSTANCE __hDllInstance_base;
--#
--# BOOL APIENTRY
--# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
--# {
--# __hDllInstance_base = hInst;
--# return TRUE;
--# }
--# /* ltdll.c ends here */
-- # This is a source program that is used to create import libraries
-- # on Windows for dlls which lack them. Don't remove nor modify the
-- # starting and closing comments
--# /* impgen.c starts here */
--# /* Copyright (C) 1999-2000 Free Software Foundation, Inc.
--#
--# This file is part of GNU libtool.
--#
--# 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 <stdio.h> /* for printf() */
--# #include <unistd.h> /* for open(), lseek(), read() */
--# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
--# #include <string.h> /* for strdup() */
--#
--# /* O_BINARY isn't required (or even defined sometimes) under Unix */
--# #ifndef O_BINARY
--# #define O_BINARY 0
--# #endif
--#
--# static unsigned int
--# pe_get16 (fd, offset)
--# int fd;
--# int offset;
--# {
--# unsigned char b[2];
--# lseek (fd, offset, SEEK_SET);
--# read (fd, b, 2);
--# return b[0] + (b[1]<<8);
--# }
--#
--# static unsigned int
--# pe_get32 (fd, offset)
--# int fd;
--# int offset;
--# {
--# unsigned char b[4];
--# lseek (fd, offset, SEEK_SET);
--# read (fd, b, 4);
--# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
--# }
--#
--# static unsigned int
--# pe_as32 (ptr)
--# void *ptr;
--# {
--# unsigned char *b = ptr;
--# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
--# }
--#
--# int
--# main (argc, argv)
--# int argc;
--# char *argv[];
--# {
--# int dll;
--# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
--# unsigned long export_rva, export_size, nsections, secptr, expptr;
--# unsigned long name_rvas, nexp;
--# unsigned char *expdata, *erva;
--# char *filename, *dll_name;
--#
--# filename = argv[1];
--#
--# dll = open(filename, O_RDONLY|O_BINARY);
--# if (dll < 1)
--# return 1;
--#
--# dll_name = filename;
--#
--# for (i=0; filename[i]; i++)
--# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
--# dll_name = filename + i +1;
--#
--# pe_header_offset = pe_get32 (dll, 0x3c);
--# opthdr_ofs = pe_header_offset + 4 + 20;
--# num_entries = pe_get32 (dll, opthdr_ofs + 92);
--#
--# if (num_entries < 1) /* no exports */
--# return 1;
--#
--# export_rva = pe_get32 (dll, opthdr_ofs + 96);
--# export_size = pe_get32 (dll, opthdr_ofs + 100);
--# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
--# secptr = (pe_header_offset + 4 + 20 +
--# pe_get16 (dll, pe_header_offset + 4 + 16));
--#
--# expptr = 0;
--# for (i = 0; i < nsections; i++)
--# {
--# char sname[8];
--# unsigned long secptr1 = secptr + 40 * i;
--# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
--# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
--# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
--# lseek(dll, secptr1, SEEK_SET);
--# read(dll, sname, 8);
--# if (vaddr <= export_rva && vaddr+vsize > export_rva)
--# {
--# expptr = fptr + (export_rva - vaddr);
--# if (export_rva + export_size > vaddr + vsize)
--# export_size = vsize - (export_rva - vaddr);
--# break;
--# }
--# }
--#
--# expdata = (unsigned char*)malloc(export_size);
--# lseek (dll, expptr, SEEK_SET);
--# read (dll, expdata, export_size);
--# erva = expdata - export_rva;
--#
--# nexp = pe_as32 (expdata+24);
--# name_rvas = pe_as32 (expdata+32);
--#
--# printf ("EXPORTS\n");
--# for (i = 0; i<nexp; i++)
--# {
--# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
--# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
--# }
--#
--# return 0;
--# }
--# /* impgen.c ends here */
--
--EOF
-+ cygwin* | mingw* | pw32*)
-+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ if test "$GCC" != yes; then
-+ with_gnu_ld=no
-+ fi
-+ ;;
-+ openbsd*)
-+ with_gnu_ld=no
- ;;
- esac
-
-- # We use sed instead of cat because bash on DJGPP gets confused if
-- # if finds mixed CR/LF and LF-only lines. Since sed operates in
-- # text mode, it properly converts lines to CR/LF. This bash problem
-- # is reportedly fixed, but why not run on old versions too?
-- sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
-+ if test "$with_gnu_ld" = yes; then
-+ # If archive_cmds runs LD, not CC, wlarc should be empty
-+ wlarc='${wl}'
-
-- mv -f "${ofile}T" "$ofile" || \
-- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
-- chmod +x "$ofile"
--fi
-+ # See if GNU ld supports shared libraries.
-+ case $host_os in
-+ aix3* | aix4* | aix5*)
-+ # On AIX/PPC, the GNU linker is very broken
-+ if test "$host_cpu" != ia64; then
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ cat <<EOF 1>&2
-
--])# _LT_AC_LTCONFIG_HACK
-+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-+*** to be unable to reliably create shared libraries on AIX.
-+*** Therefore, libtool is disabling shared libraries support. If you
-+*** really care for shared libraries, you may want to modify your PATH
-+*** so that a non-GNU linker is found, and then restart.
-
--# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
--AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
-+EOF
-+ fi
-+ ;;
-
--# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
--AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
-+ amigaos*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-+
-+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-+ # that the semantics of dynamic libraries on AmigaOS, at least up
-+ # to version 4, is to share data among multiple programs linked
-+ # with the same dynamic library. Since this doesn't match the
-+ # behavior of shared libraries on other platforms, we can't use
-+ # them.
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-
--# AC_ENABLE_SHARED - implement the --enable-shared flag
--# Usage: AC_ENABLE_SHARED[(DEFAULT)]
--# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
--# `yes'.
--AC_DEFUN([AC_ENABLE_SHARED],
--[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
--AC_ARG_ENABLE(shared,
--changequote(<<, >>)dnl
--<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
--changequote([, ])dnl
--[p=${PACKAGE-default}
--case $enableval in
--yes) enable_shared=yes ;;
--no) enable_shared=no ;;
--*)
-- enable_shared=no
-- # Look at the argument we got. We use all the common list separators.
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-- for pkg in $enableval; do
-- if test "X$pkg" = "X$p"; then
-- enable_shared=yes
-- fi
-- done
-- IFS="$ac_save_ifs"
-- ;;
--esac],
--enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
--])
-+ beos*)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-+ # support --undefined. This deserves some investigation. FIXME
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ else
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ fi
-+ ;;
-
--# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
--AC_DEFUN([AC_DISABLE_SHARED],
--[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
--AC_ENABLE_SHARED(no)])
-+ cygwin* | mingw* | pw32*)
-+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-+ # as there is no search path for DLLs.
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
-+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
-+
-+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is; otherwise, prepend...
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname.def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname.def;
-+ cat $export_symbols >> $output_objdir/$soname.def;
-+ fi~
-+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-
--# AC_ENABLE_STATIC - implement the --enable-static flag
--# Usage: AC_ENABLE_STATIC[(DEFAULT)]
--# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
--# `yes'.
--AC_DEFUN([AC_ENABLE_STATIC],
--[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
--AC_ARG_ENABLE(static,
--changequote(<<, >>)dnl
--<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
--changequote([, ])dnl
--[p=${PACKAGE-default}
--case $enableval in
--yes) enable_static=yes ;;
--no) enable_static=no ;;
--*)
-- enable_static=no
-- # Look at the argument we got. We use all the common list separators.
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-- for pkg in $enableval; do
-- if test "X$pkg" = "X$p"; then
-- enable_static=yes
-- fi
-- done
-- IFS="$ac_save_ifs"
-- ;;
--esac],
--enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
--])
-+ netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-+ wlarc=
-+ else
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ fi
-+ ;;
-
--# AC_DISABLE_STATIC - set the default static flag to --disable-static
--AC_DEFUN([AC_DISABLE_STATIC],
--[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
--AC_ENABLE_STATIC(no)])
-+ solaris* | sysv5*)
-+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-+*** create shared libraries on Solaris systems. Therefore, libtool
-+*** is disabling shared libraries support. We urge you to upgrade GNU
-+*** binutils to release 2.9.1 or newer. Another option is to modify
-+*** your PATH or compiler configuration so that the native linker is
-+*** used, and then restart.
-
-+EOF
-+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ fi
-+ ;;
-
--# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
--# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
--# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
--# `yes'.
--AC_DEFUN([AC_ENABLE_FAST_INSTALL],
--[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
--AC_ARG_ENABLE(fast-install,
--changequote(<<, >>)dnl
--<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
--changequote([, ])dnl
--[p=${PACKAGE-default}
--case $enableval in
--yes) enable_fast_install=yes ;;
--no) enable_fast_install=no ;;
--*)
-- enable_fast_install=no
-- # Look at the argument we got. We use all the common list separators.
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-- for pkg in $enableval; do
-- if test "X$pkg" = "X$p"; then
-- enable_fast_install=yes
-+ sunos4*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ wlarc=
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-+
-+ linux*)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds"
-+ supports_anon_versioning=no
-+ case `$LD -v 2>/dev/null` in
-+ *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-+ *\ 2.11.*) ;; # other 2.11 versions
-+ *) supports_anon_versioning=yes ;;
-+ esac
-+ if test $supports_anon_versioning = yes; then
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
-+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-+$echo "local: *; };" >> $output_objdir/$libname.ver~
-+ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-+ else
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds"
-+ fi
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=no
-+ else
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
- fi
-- done
-- IFS="$ac_save_ifs"
-- ;;
--esac],
--enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
--])
-+ ;;
-
--# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install
--AC_DEFUN([AC_DISABLE_FAST_INSTALL],
--[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
--AC_ENABLE_FAST_INSTALL(no)])
-+ *)
-+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ fi
-+ ;;
-+ esac
-+
-+ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then
-+ runpath_var=LD_RUN_PATH
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-+ # ancient GNU ld didn't support --whole-archive et. al.
-+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ else
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-+ fi
-+ fi
-+ else
-+ # PORTME fill in a description of your system's linker (not GNU ld)
-+ case $host_os in
-+ aix3*)
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-+ # Note: this linker hardcodes the directories in LIBPATH if there
-+ # are no directories specified by -L.
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-+ if test "$GCC" = yes && test -z "$link_static_flag"; then
-+ # Neither direct hardcoding nor static linking is supported with a
-+ # broken collect2.
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
-+ fi
-+ ;;
-+
-+ aix4* | aix5*)
-+ if test "$host_cpu" = ia64; then
-+ # On IA64, the linker does run time linking by default, so we don't
-+ # have to do anything special.
-+ aix_use_runtimelinking=no
-+ exp_sym_flag='-Bexport'
-+ no_entry_flag=""
-+ else
-+ # If we're using GNU nm, then we don't want the "-C" option.
-+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
-+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-+ else
-+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-+ fi
-+ aix_use_runtimelinking=no
-
--# AC_LIBTOOL_PICMODE - implement the --with-pic flag
--# Usage: AC_LIBTOOL_PICMODE[(MODE)]
--# Where MODE is either `yes' or `no'. If omitted, it defaults to
--# `both'.
--AC_DEFUN([AC_LIBTOOL_PICMODE],
--[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
--pic_mode=ifelse($#,1,$1,default)])
-+ # Test if we are trying to use run time linking or normal
-+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-+ # need to do runtime linking.
-+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
-+ for ld_flag in $LDFLAGS; do
-+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-+ aix_use_runtimelinking=yes
-+ break
-+ fi
-+ done
-+ esac
-
-+ exp_sym_flag='-bexport'
-+ no_entry_flag='-bnoentry'
-+ fi
-
--# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library
--AC_DEFUN([AC_PATH_TOOL_PREFIX],
--[AC_MSG_CHECKING([for $1])
--AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
--[case $MAGIC_CMD in
-- /*)
-- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-- ;;
-- ?:/*)
-- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-- ;;
-- *)
-- ac_save_MAGIC_CMD="$MAGIC_CMD"
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
--dnl $ac_dummy forces splitting on constant user-supplied paths.
--dnl POSIX.2 word splitting is done only on the output of word expansions,
--dnl not every word. This closes a longstanding sh security hole.
-- ac_dummy="ifelse([$2], , $PATH, [$2])"
-- for ac_dir in $ac_dummy; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f $ac_dir/$1; then
-- lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-- if test -n "$file_magic_test_file"; then
-- case $deplibs_check_method in
-- "file_magic "*)
-- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-- egrep "$file_magic_regex" > /dev/null; then
-- :
-+ # When large executables or shared objects are built, AIX ld can
-+ # have problems creating the table of contents. If linking a library
-+ # or program results in "error TOC overflow" add -mminimal-toc to
-+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-+
-+ _LT_AC_TAGVAR(archive_cmds, $1)=''
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-+
-+ if test "$GCC" = yes; then
-+ case $host_os in aix4.[012]|aix4.[012].*)
-+ # We only want to do this on AIX 4.2 and lower, the check
-+ # below for broken collect2 doesn't work under 4.3+
-+ collect2name=`${CC} -print-prog-name=collect2`
-+ if test -f "$collect2name" && \
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ then
-+ # We have reworked collect2
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
- else
-- cat <<EOF 1>&2
--
--*** Warning: the command libtool uses to detect shared libraries,
--*** $file_magic_cmd, produces output that libtool cannot recognize.
--*** The result is that libtool may fail to recognize shared libraries
--*** as such. This will affect the creation of libtool libraries that
--*** depend on shared libraries, but programs linked with such libtool
--*** libraries will work regardless of this problem. Nevertheless, you
--*** may want to report the problem to your system manager and/or to
--*** bug-libtool@gnu.org
--
--EOF
-- fi ;;
-+ # We have old collect2
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
-+ # It fails to find uninstalled libraries when the uninstalled
-+ # path is not listed in the libpath. Setting hardcode_minus_L
-+ # to unsupported forces relinking
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-+ fi
- esac
-+ shared_flag='-shared'
-+ else
-+ # not using gcc
-+ if test "$host_cpu" = ia64; then
-+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-+ # chokes on -Wl,-G. The following line is correct:
-+ shared_flag='-G'
-+ else
-+ if test "$aix_use_runtimelinking" = yes; then
-+ shared_flag='${wl}-G'
-+ else
-+ shared_flag='${wl}-bM:SRE'
-+ fi
-+ fi
- fi
-- break
-- fi
-- done
-- IFS="$ac_save_ifs"
-- MAGIC_CMD="$ac_save_MAGIC_CMD"
-- ;;
--esac])
--MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
--if test -n "$MAGIC_CMD"; then
-- AC_MSG_RESULT($MAGIC_CMD)
--else
-- AC_MSG_RESULT(no)
--fi
--])
-
-+ # It seems that -bexpall does not export symbols beginning with
-+ # underscore (_), so it is better to generate a list of symbols to export.
-+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # Warning - without using the other runtime loading flags (-brtl),
-+ # -berok will link without error, but may produce a broken library.
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
-+ # Determine the default libpath from the value encoded in an empty executable.
-+ _LT_AC_SYS_LIBPATH_AIX
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+ else
-+ if test "$host_cpu" = ia64; then
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ else
-+ # Determine the default libpath from the value encoded in an empty executable.
-+ _LT_AC_SYS_LIBPATH_AIX
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-+ # Warning - without using the other run time loading flags,
-+ # -berok will link without error, but may produce a broken library.
-+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-+ # -bexpall does not export symbols beginning with underscore (_)
-+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-+ # Exported symbols can be pulled into shared objects from archives
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
-+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-+ # This is similar to how AIX traditionally builds it's shared libraries.
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-+ fi
-+ fi
-+ ;;
-
--# AC_PATH_MAGIC - find a file program which can recognise a shared library
--AC_DEFUN([AC_PATH_MAGIC],
--[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
--AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH)
--if test -z "$lt_cv_path_MAGIC_CMD"; then
-- if test -n "$ac_tool_prefix"; then
-- AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH)
-- else
-- MAGIC_CMD=:
-- fi
--fi
--])
-+ amigaos*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-+ # see comment about different semantics on the GNU ld section
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-
-+ bsdi4*)
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-+ ;;
-
--# AC_PROG_LD - find the path to the GNU or non-GNU linker
--AC_DEFUN([AC_PROG_LD],
--[AC_ARG_WITH(gnu-ld,
--[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
--test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
--AC_REQUIRE([AC_PROG_CC])dnl
--AC_REQUIRE([AC_CANONICAL_HOST])dnl
--AC_REQUIRE([AC_CANONICAL_BUILD])dnl
--AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl
--ac_prog=ld
--if test "$GCC" = yes; then
-- # Check if gcc -print-prog-name=ld gives a path.
-- AC_MSG_CHECKING([for ld used by GCC])
-- case $host in
-- *-*-mingw*)
-- # gcc leaves a trailing carriage return which upsets mingw
-- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-- *)
-- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-- esac
-- case $ac_prog in
-- # Accept absolute paths.
-- [[\\/]]* | [[A-Za-z]]:[[\\/]]*)
-- re_direlt='/[[^/]][[^/]]*/\.\./'
-- # Canonicalize the path of ld
-- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
-- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
-- done
-- test -z "$LD" && LD="$ac_prog"
-+ cygwin* | mingw* | pw32*)
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # Tell ltmain to make .dll files, not .so files.
-+ shrext_cmds=".dll"
-+ # FIXME: Setting linknames here is a bad hack.
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
-+ # FIXME: Should let the user specify the lib program.
-+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
-+ fix_srcfile_path='`cygpath -w "$srcfile"`'
-+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
- ;;
-- "")
-- # If it fails, then pretend we aren't using GCC.
-- ac_prog=ld
-- ;;
-- *)
-- # If it is relative, then search for the first ld in PATH.
-- with_gnu_ld=unknown
-- ;;
-- esac
--elif test "$with_gnu_ld" = yes; then
-- AC_MSG_CHECKING([for GNU ld])
--else
-- AC_MSG_CHECKING([for non-GNU ld])
--fi
--AC_CACHE_VAL(lt_cv_path_LD,
--[if test -z "$LD"; then
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-- for ac_dir in $PATH; do
-- test -z "$ac_dir" && ac_dir=.
-- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-- lt_cv_path_LD="$ac_dir/$ac_prog"
-- # Check to see if the program is GNU ld. I'd rather use --version,
-- # but apparently some GNU ld's only accept -v.
-- # Break only if it was the GNU/non-GNU ld that we prefer.
-- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
-- test "$with_gnu_ld" != no && break
-+
-+ darwin* | rhapsody*)
-+ if test "$GXX" = yes ; then
-+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-+ case "$host_os" in
-+ rhapsody* | darwin1.[[012]])
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
- else
-- test "$with_gnu_ld" != yes && break
-+ case ${MACOSX_DEPLOYMENT_TARGET} in
-+ 10.[[012]])
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
-+ ;;
-+ 10.*)
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
-+ ;;
-+ esac
- fi
-+ ;;
-+ esac
-+ lt_int_apple_cc_single_mod=no
-+ output_verbose_link_cmd='echo'
-+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
-+ lt_int_apple_cc_single_mod=yes
-+ fi
-+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-+ else
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-+ fi
-+ _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
-+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ else
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ fi
-+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
-+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-+ else
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
- fi
-- done
-- IFS="$ac_save_ifs"
--else
-- lt_cv_path_LD="$LD" # Let the user override the test with a path.
--fi])
--LD="$lt_cv_path_LD"
--if test -n "$LD"; then
-- AC_MSG_RESULT($LD)
--else
-- AC_MSG_RESULT(no)
--fi
--test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
--AC_PROG_LD_GNU
--])
-+ ;;
-
--# AC_PROG_LD_GNU -
--AC_DEFUN([AC_PROG_LD_GNU],
--[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
--[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
--if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
-- lt_cv_prog_gnu_ld=yes
--else
-- lt_cv_prog_gnu_ld=no
--fi])
--with_gnu_ld=$lt_cv_prog_gnu_ld
--])
-+ dgux*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-
--# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker
--# -- PORTME Some linkers may need a different reload flag.
--AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
--[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag,
--[lt_cv_ld_reload_flag='-r'])
--reload_flag=$lt_cv_ld_reload_flag
--test -n "$reload_flag" && reload_flag=" $reload_flag"
--])
-+ freebsd1*)
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-
--# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies
--# -- PORTME fill in with the dynamic library characteristics
--AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
--[AC_CACHE_CHECK([how to recognise dependent libraries],
--lt_cv_deplibs_check_method,
--[lt_cv_file_magic_cmd='$MAGIC_CMD'
--lt_cv_file_magic_test_file=
--lt_cv_deplibs_check_method='unknown'
--# Need to set the preceding variable on all platforms that support
--# interlibrary dependencies.
--# 'none' -- dependencies not supported.
--# `unknown' -- same as none, but documents that we really don't know.
--# 'pass_all' -- all dependencies passed with no checks.
--# 'test_compile' -- check by making test program.
--# 'file_magic [[regex]]' -- check by looking for files in library path
--# which responds to the $file_magic_cmd with a given egrep regex.
--# If you have `file' or equivalent on your system and you're not sure
--# whether `pass_all' will *always* work, you probably want this one.
-+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-+ # support. Future versions do this automatically, but an explicit c++rt0.o
-+ # does not break anything, and helps significantly (at the cost of a little
-+ # extra space).
-+ freebsd2.2*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-
--case $host_os in
--aix4* | aix5*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
-+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-+ freebsd2*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-
--beos*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
-+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-+ freebsd* | kfreebsd*-gnu)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-
--bsdi4*)
-- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-- lt_cv_file_magic_cmd='/usr/bin/file -L'
-- lt_cv_file_magic_test_file=/shlib/libc.so
-- ;;
-+ hpux9*)
-+ if test "$GCC" = yes; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ else
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+ fi
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-+ ;;
-
--cygwin* | mingw* | pw32*)
-- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-- lt_cv_file_magic_cmd='$OBJDUMP -f'
-- ;;
-+ hpux10* | hpux11*)
-+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+ ;;
-+ esac
-+ else
-+ case "$host_cpu" in
-+ hppa*64*|ia64*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-+ ;;
-+ esac
-+ fi
-+ if test "$with_gnu_ld" = no; then
-+ case "$host_cpu" in
-+ hppa*64*)
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-+ ia64*)
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-+
-+ # hardcode_minus_L: Not really in the search PATH,
-+ # but as the default location of the library.
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-+ ;;
-+ esac
-+ fi
-+ ;;
-
--darwin* | rhapsody*)
-- lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
-- lt_cv_file_magic_cmd='/usr/bin/file -L'
-- case "$host_os" in
-- rhapsody* | darwin1.[[012]])
-- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
-- ;;
-- *) # Darwin 1.3 on
-- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
-- ;;
-- esac
-- ;;
-+ irix5* | irix6* | nonstopux*)
-+ if test "$GCC" = yes; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
-+ fi
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-+ ;;
-
--freebsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-- case $host_cpu in
-- i*86 )
-- # Not sure whether the presence of OpenBSD here was a mistake.
-- # Let's accept both of them until this is cleared up.
-- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
-- lt_cv_file_magic_cmd=/usr/bin/file
-- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-+ else
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-+ fi
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-+
-+ newsos6)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-+
-+ openbsd*)
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-+ else
-+ case $host_os in
-+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-+ ;;
-+ *)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+
-+ os2*)
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-+ ;;
-+
-+ osf3*)
-+ if test "$GCC" = yes; then
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ fi
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
- ;;
-- esac
-- else
-- lt_cv_deplibs_check_method=pass_all
-- fi
-- ;;
-
--gnu*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
-+ osf4* | osf5*) # as osf3* with the addition of -msym flag
-+ if test "$GCC" = yes; then
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-+ else
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
-
--hpux10.20*|hpux11*)
-- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
-- lt_cv_file_magic_cmd=/usr/bin/file
-- lt_cv_file_magic_test_file=/usr/lib/libc.sl
-- ;;
-+ # Both c and cxx compiler support -rpath directly
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-+ fi
-+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-+ ;;
-
--irix5* | irix6* | nonstopux*)
-- case $host_os in
-- irix5* | nonstopux*)
-- # this will be overridden with pass_all, but let us keep it just in case
-- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
-- ;;
-- *)
-- case $LD in
-- *-32|*"-32 ") libmagic=32-bit;;
-- *-n32|*"-n32 ") libmagic=N32;;
-- *-64|*"-64 ") libmagic=64-bit;;
-- *) libmagic=never-match;;
-- esac
-- # this will be overridden with pass_all, but let us keep it just in case
-- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1"
-- ;;
-- esac
-- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
-- lt_cv_deplibs_check_method=pass_all
-- ;;
-+ sco3.2v5*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ ;;
-
--# This must be Linux ELF.
--linux-gnu*)
-- case $host_cpu in
-- alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64* | arm* | m68k)
-- lt_cv_deplibs_check_method=pass_all ;;
-- *)
-- # glibc up to 2.1.1 does not perform some relocations on ARM
-- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
-- esac
-- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-- ;;
-+ solaris*)
-+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
-+ if test "$GCC" = yes; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-+ else
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ fi
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ case $host_os in
-+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
-+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
-+ esac
-+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-+ ;;
-
--netbsd*)
-- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$'
-- else
-- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$'
-- fi
-- ;;
-+ sunos4*)
-+ if test "x$host_vendor" = xsequent; then
-+ # Use $CC to link under sequent, because it throws in some extra .o
-+ # files that make .init and .fini sections work.
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-+ fi
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-
--newos6*)
-- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-- lt_cv_file_magic_cmd=/usr/bin/file
-- lt_cv_file_magic_test_file=/usr/lib/libnls.so
-- ;;
-+ sysv4)
-+ case $host_vendor in
-+ sni)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-+ ;;
-+ siemens)
-+ ## LD is ld it makes a PLAMLIB
-+ ## CC just makes a GrossModule.
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
-+ ;;
-+ motorola)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-+ ;;
-+ esac
-+ runpath_var='LD_RUN_PATH'
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-
--openbsd*)
-- lt_cv_file_magic_cmd=/usr/bin/file
-- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
-- else
-- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
-- fi
-- ;;
-+ sysv4.3*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-+ ;;
-
--osf3* | osf4* | osf5*)
-- # this will be overridden with pass_all, but let us keep it just in case
-- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
-- lt_cv_file_magic_test_file=/shlib/libc.so
-- lt_cv_deplibs_check_method=pass_all
-- ;;
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
-+ fi
-+ ;;
-
--sco3.2v5*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
-+ sysv4.2uw2*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ hardcode_runpath_var=yes
-+ runpath_var=LD_RUN_PATH
-+ ;;
-
--solaris*)
-- lt_cv_deplibs_check_method=pass_all
-- lt_cv_file_magic_test_file=/lib/libc.so
-- ;;
-+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
-+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
-+ if test "$GCC" = yes; then
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ fi
-+ runpath_var='LD_RUN_PATH'
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-
--sysv5uw[[78]]* | sysv4*uw2*)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
-+ sysv5*)
-+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ runpath_var='LD_RUN_PATH'
-+ ;;
-
--sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-- case $host_vendor in
-- motorola)
-- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-- ;;
-- ncr)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
-- sequent)
-- lt_cv_file_magic_cmd='/bin/file'
-- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-- ;;
-- sni)
-- lt_cv_file_magic_cmd='/bin/file'
-- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-- lt_cv_file_magic_test_file=/lib/libc.so
-- ;;
-- siemens)
-- lt_cv_deplibs_check_method=pass_all
-- ;;
-- esac
-- ;;
--esac
--])
--file_magic_cmd=$lt_cv_file_magic_cmd
--deplibs_check_method=$lt_cv_deplibs_check_method
-+ uts4*)
-+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-+ ;;
-+
-+ *)
-+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
-+ ;;
-+ esac
-+ fi
- ])
-+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
-+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-+if test "$GCC" = yes; then
-+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-+fi
-
--# AC_PROG_NM - find the path to a BSD-compatible name lister
--AC_DEFUN([AC_PROG_NM],
--[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl
--AC_MSG_CHECKING([for BSD-compatible nm])
--AC_CACHE_VAL(lt_cv_path_NM,
--[if test -n "$NM"; then
-- # Let the user override the test.
-- lt_cv_path_NM="$NM"
--else
-- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
-- test -z "$ac_dir" && ac_dir=.
-- tmp_nm=$ac_dir/${ac_tool_prefix}nm
-- if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
-- # Check to see if the nm accepts a BSD-compat flag.
-- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-- # nm: unknown option "B" ignored
-- # Tru64's nm complains that /dev/null is an invalid object file
-- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
-- lt_cv_path_NM="$tmp_nm -B"
-- break
-- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-- lt_cv_path_NM="$tmp_nm -p"
-- break
-+#
-+# Do we need to explicitly link libc?
-+#
-+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
-+x|xyes)
-+ # Assume -lc should be added
-+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-+
-+ if test "$enable_shared" = yes && test "$GCC" = yes; then
-+ case $_LT_AC_TAGVAR(archive_cmds, $1) in
-+ *'~'*)
-+ # FIXME: we may have to deal with multi-command sequences.
-+ ;;
-+ '$CC '*)
-+ # Test whether the compiler implicitly links with -lc since on some
-+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
-+ # to ld, don't add -lc before -lgcc.
-+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
-+ $rm conftest*
-+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-+
-+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-+ soname=conftest
-+ lib=conftest
-+ libobjs=conftest.$ac_objext
-+ deplibs=
-+ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
-+ compiler_flags=-v
-+ linker_flags=-v
-+ verstring=
-+ output_objdir=.
-+ libname=conftest
-+ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
-+ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
-+ then
-+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-+ else
-+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-+ fi
-+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
- else
-- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-- continue # so that we can try to find one that supports BSD flags
-+ cat conftest.err 1>&5
- fi
-- fi
-- done
-- IFS="$ac_save_ifs"
-- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
--fi])
--NM="$lt_cv_path_NM"
--AC_MSG_RESULT([$NM])
--])
--
--# AC_CHECK_LIBM - check for math library
--AC_DEFUN([AC_CHECK_LIBM],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--LIBM=
--case $host in
--*-*-beos* | *-*-cygwin* | *-*-pw32*)
-- # These system don't have libm
-- ;;
--*-ncr-sysv4.3*)
-- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
-- ;;
--*)
-- AC_CHECK_LIB(m, main, LIBM="-lm")
-+ $rm conftest*
-+ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
-+ ;;
-+ esac
-+ fi
- ;;
- esac
--])
-+])# AC_LIBTOOL_PROG_LD_SHLIBS
-
--# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
--# the libltdl convenience library and LTDLINCL to the include flags for
--# the libltdl header and adds --enable-ltdl-convenience to the
--# configure arguments. Note that LIBLTDL and LTDLINCL are not
--# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not
--# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed
--# with '${top_builddir}/' and LTDLINCL will be prefixed with
--# '${top_srcdir}/' (note the single quotes!). If your package is not
--# flat and you're not using automake, define top_builddir and
--# top_srcdir appropriately in the Makefiles.
--AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
--[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-- case $enable_ltdl_convenience in
-- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
-- "") enable_ltdl_convenience=yes
-- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
-- esac
-- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
-- LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-- # For backwards non-gettext consistent compatibility...
-- INCLTDL="$LTDLINCL"
--])
-
--# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
--# the libltdl installable library and LTDLINCL to the include flags for
--# the libltdl header and adds --enable-ltdl-install to the configure
--# arguments. Note that LIBLTDL and LTDLINCL are not AC_SUBSTed, nor is
--# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed
--# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will
--# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed
--# with '${top_srcdir}/' (note the single quotes!). If your package is
--# not flat and you're not using automake, define top_builddir and
--# top_srcdir appropriately in the Makefiles.
--# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
--AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
--[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-- AC_CHECK_LIB(ltdl, main,
-- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
-- [if test x"$enable_ltdl_install" = xno; then
-- AC_MSG_WARN([libltdl not installed, but installation disabled])
-- else
-- enable_ltdl_install=yes
-- fi
-- ])
-- if test x"$enable_ltdl_install" = x"yes"; then
-- ac_configure_args="$ac_configure_args --enable-ltdl-install"
-- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
-- LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-- else
-- ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
-- LIBLTDL="-lltdl"
-- LTDLINCL=
-- fi
-- # For backwards non-gettext consistent compatibility...
-- INCLTDL="$LTDLINCL"
--])
-+# _LT_AC_FILE_LTDLL_C
-+# -------------------
-+# Be careful that the start marker always follows a newline.
-+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
-+# /* ltdll.c starts here */
-+# #define WIN32_LEAN_AND_MEAN
-+# #include <windows.h>
-+# #undef WIN32_LEAN_AND_MEAN
-+# #include <stdio.h>
-+#
-+# #ifndef __CYGWIN__
-+# # ifdef __CYGWIN32__
-+# # define __CYGWIN__ __CYGWIN32__
-+# # endif
-+# #endif
-+#
-+# #ifdef __cplusplus
-+# extern "C" {
-+# #endif
-+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-+# #ifdef __cplusplus
-+# }
-+# #endif
-+#
-+# #ifdef __CYGWIN__
-+# #include <cygwin/cygwin_dll.h>
-+# DECLARE_CYGWIN_DLL( DllMain );
-+# #endif
-+# HINSTANCE __hDllInstance_base;
-+#
-+# BOOL APIENTRY
-+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-+# {
-+# __hDllInstance_base = hInst;
-+# return TRUE;
-+# }
-+# /* ltdll.c ends here */
-+])# _LT_AC_FILE_LTDLL_C
-+
-+
-+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
-+# ---------------------------------
-+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
-+
-
- # old names
- AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
-@@ -3709,6 +6828,16 @@
- # This is just to silence aclocal about the macro not being used
- ifelse([AC_DISABLE_FAST_INSTALL])
-
-+AC_DEFUN([LT_AC_PROG_GCJ],
-+[AC_CHECK_TOOL(GCJ, gcj, no)
-+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-+ AC_SUBST(GCJFLAGS)
-+])
-+
-+AC_DEFUN([LT_AC_PROG_RC],
-+[AC_CHECK_TOOL(RC, windres, no)
-+])
-+
- # NOTE: This macro has been submitted for inclusion into #
- # GNU Autoconf as AC_PROG_SED. When it is available in #
- # a released version of Autoconf we should remove this #
-@@ -3722,79 +6851,51 @@
- AC_CACHE_VAL(lt_cv_path_SED,
- [# Loop through the user's path and test for sed and gsed.
- # Then use that list of sed's as ones to test for truncation.
--as_executable_p="test -f"
- 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_prog in sed gsed; do
-+ for lt_ac_prog in sed gsed; do
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-- _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext"
-+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
- fi
- done
- done
- done
--
-- # Create a temporary directory, and hook for its removal unless debugging.
--$debug ||
--{
-- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-- trap '{ (exit 1); exit 1; }' 1 2 13 15
--}
--
--# Create a (secure) tmp directory for tmp files.
--: ${TMPDIR=/tmp}
--{
-- tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` &&
-- test -n "$tmp" && test -d "$tmp"
--} ||
--{
-- tmp=$TMPDIR/sed$$-$RANDOM
-- (umask 077 && mkdir $tmp)
--} ||
--{
-- echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-- { (exit 1); exit 1; }
--}
-- _max=0
-- _count=0
-- # Add /usr/xpg4/bin/sed as it is typically found on Solaris
-- # along with /bin/sed that truncates output.
-- for _sed in $_sed_list /usr/xpg4/bin/sed; do
-- test ! -f ${_sed} && break
-- cat /dev/null > "$tmp/sed.in"
-- _count=0
-- echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in"
-- # Check for GNU sed and select it if it is found.
-- if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then
-- lt_cv_path_SED=${_sed}
-- break
-+lt_ac_max=0
-+lt_ac_count=0
-+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-+# along with /bin/sed that truncates output.
-+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-+ test ! -f $lt_ac_sed && break
-+ cat /dev/null > conftest.in
-+ lt_ac_count=0
-+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-+ # Check for GNU sed and select it if it is found.
-+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-+ lt_cv_path_SED=$lt_ac_sed
-+ break
-+ fi
-+ while true; do
-+ cat conftest.in conftest.in >conftest.tmp
-+ mv conftest.tmp conftest.in
-+ cp conftest.in conftest.nl
-+ echo >>conftest.nl
-+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-+ cmp -s conftest.out conftest.nl || break
-+ # 10000 chars as input seems more than enough
-+ test $lt_ac_count -gt 10 && break
-+ lt_ac_count=`expr $lt_ac_count + 1`
-+ if test $lt_ac_count -gt $lt_ac_max; then
-+ lt_ac_max=$lt_ac_count
-+ lt_cv_path_SED=$lt_ac_sed
- fi
-- while true; do
-- cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp"
-- mv "$tmp/sed.tmp" "$tmp/sed.in"
-- cp "$tmp/sed.in" "$tmp/sed.nl"
-- echo >>"$tmp/sed.nl"
-- ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break
-- cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break
-- # 40000 chars as input seems more than enough
-- test $_count -gt 10 && break
-- _count=`expr $_count + 1`
-- if test $_count -gt $_max; then
-- _max=$_count
-- lt_cv_path_SED=$_sed
-- fi
-- done
- done
-- rm -rf "$tmp"
-+done
-+SED=$lt_cv_path_SED
- ])
--if test "X$SED" != "X"; then
-- lt_cv_path_SED=$SED
--else
-- SED=$lt_cv_path_SED
--fi
- AC_MSG_RESULT([$SED])
- ])
-
-diff -urN linux-atm.old/autom4te.cache/output.0 linux-atm.dev/autom4te.cache/output.0
---- linux-atm.old/autom4te.cache/output.0 1970-01-01 01:00:00.000000000 +0100
-+++ linux-atm.dev/autom4te.cache/output.0 2005-08-23 01:12:40.958209832 +0200
-@@ -0,0 +1,10118 @@
-+@%:@! /bin/sh
-+@%:@ Guess values for system-dependent variables and create Makefiles.
-+@%:@ Generated by GNU Autoconf 2.59.
-+@%:@
-+@%:@ Copyright (C) 2003 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
-+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
-+fi
-+DUALCASE=1; export DUALCASE # for MKS sh
-+
-+# Support unset when possible.
-+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-+ as_unset=unset
-+else
-+ as_unset=false
-+fi
-+
-+
-+# Work around bugs in pre-3.0 UWIN ksh.
-+$as_unset ENV MAIL MAILPATH
-+PS1='$ '
-+PS2='> '
-+PS4='+ '
-+
-+# NLS nuisances.
-+for as_var in \
-+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-+ LC_TELEPHONE LC_TIME
-+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
-+ fi
-+done
-+
-+# Required to use basename.
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
-+ as_basename=basename
-+else
-+ as_basename=false
-+fi
-+
-+
-+# Name of the executable.
-+as_me=`$as_basename "$0" ||
-+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ 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
-+
-+# 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: 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
-+
-+ # 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.
-+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
-+ sed '=' <$as_myself |
-+ sed '
-+ N
-+ s,$,-,
-+ : loop
-+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-+ t loop
-+ s,-$,,
-+ s,^['$as_cr_digits']*\n,,
-+ ' >$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
-+ # 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= ;;
-+esac
-+
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+rm -f conf$$ conf$$.exe conf$$.file
-+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='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
-+
-+if mkdir -p . 2>/dev/null; then
-+ as_mkdir_p=:
-+else
-+ test -d ./-p && rmdir ./-p
-+ as_mkdir_p=false
-+fi
-+
-+as_executable_p="test -f"
-+
-+# 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'"
-+
-+# Sed expression to map a string onto a valid variable name.
-+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
-+
-+
-+# Find the correct PATH separator. Usually this is `:', but
-+# DJGPP uses `;' like DOS.
-+if test "X${PATH_SEPARATOR+set}" != Xset; then
-+ UNAME=${UNAME-`uname 2>/dev/null`}
-+ case X$UNAME in
-+ *-DOS) lt_cv_sys_path_separator=';' ;;
-+ *) lt_cv_sys_path_separator=':' ;;
-+ esac
-+ PATH_SEPARATOR=$lt_cv_sys_path_separator
-+fi
-+
-+
-+# Check that we are running under the correct shell.
-+SHELL=${CONFIG_SHELL-/bin/sh}
-+
-+case X$ECHO in
-+X*--fallback-echo)
-+ # Remove one level of quotation (which was required for Make).
-+ ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
-+ ;;
-+esac
-+
-+echo=${ECHO-echo}
-+if test "X$1" = X--no-reexec; then
-+ # Discard the --no-reexec flag, and continue.
-+ shift
-+elif test "X$1" = X--fallback-echo; then
-+ # Avoid inline document here, it may be left over
-+ :
-+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
-+ # Yippee, $echo works!
-+ :
-+else
-+ # Restart under the correct shell.
-+ exec $SHELL "$0" --no-reexec ${1+"$@"}
-+fi
-+
-+if test "X$1" = X--fallback-echo; then
-+ # used as fallback echo
-+ shift
-+ cat <<EOF
-+
-+EOF
-+ exit 0
-+fi
-+
-+# The HP-UX ksh and POSIX shell print the target directory to stdout
-+# if CDPATH is set.
-+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-+
-+if test -z "$ECHO"; then
-+if test "X${echo_test_string+set}" != Xset; then
-+# find a string as large as possible, as long as the shell can cope with it
-+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
-+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-+ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
-+ echo_test_string="`eval $cmd`" &&
-+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
-+ then
-+ break
-+ fi
-+ done
-+fi
-+
-+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ :
-+else
-+ # The Solaris, AIX, and Digital Unix default echo programs unquote
-+ # backslashes. This makes it impossible to quote backslashes using
-+ # echo "$something" | sed 's/\\/\\\\/g'
-+ #
-+ # So, first we look for a working echo in the user's PATH.
-+
-+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for dir in $PATH /usr/ucb; do
-+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ echo="$dir/echo"
-+ break
-+ fi
-+ done
-+ IFS="$save_ifs"
-+
-+ if test "X$echo" = Xecho; then
-+ # We didn't find a better echo, so look for alternatives.
-+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ # This shell has a builtin print -r that does the trick.
-+ echo='print -r'
-+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
-+ test "X$CONFIG_SHELL" != X/bin/ksh; then
-+ # If we have ksh, try running configure again with it.
-+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-+ export ORIGINAL_CONFIG_SHELL
-+ CONFIG_SHELL=/bin/ksh
-+ export CONFIG_SHELL
-+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
-+ else
-+ # Try using printf.
-+ echo='printf %s\n'
-+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ # Cool, printf works
-+ :
-+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-+ test "X$echo_testing_string" = 'X\t' &&
-+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-+ export CONFIG_SHELL
-+ SHELL="$CONFIG_SHELL"
-+ export SHELL
-+ echo="$CONFIG_SHELL $0 --fallback-echo"
-+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-+ test "X$echo_testing_string" = 'X\t' &&
-+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-+ test "X$echo_testing_string" = "X$echo_test_string"; then
-+ echo="$CONFIG_SHELL $0 --fallback-echo"
-+ else
-+ # maybe with a smaller string...
-+ prev=:
-+
-+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
-+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
-+ then
-+ break
-+ fi
-+ prev="$cmd"
-+ done
-+
-+ if test "$prev" != 'sed 50q "$0"'; then
-+ echo_test_string=`eval $prev`
-+ export echo_test_string
-+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
-+ else
-+ # Oops. We lost completely, so just stick with echo.
-+ echo=echo
-+ fi
-+ fi
-+ fi
-+ fi
-+fi
-+fi
-+
-+# Copy echo and quote the copy suitably for passing to libtool from
-+# the Makefile, instead of quoting the original, which is used later.
-+ECHO=$echo
-+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
-+ ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
-+fi
-+
-+
-+
-+# 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_config_libobj_dir=.
-+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=
-+PACKAGE_VERSION=
-+PACKAGE_STRING=
-+PACKAGE_BUGREPORT=
-+
-+ac_unique_file="src/include/atm.h"
-+# Factoring default headers for most tests.
-+ac_includes_default="\
-+#include <stdio.h>
-+#if HAVE_SYS_TYPES_H
-+# include <sys/types.h>
-+#endif
-+#if HAVE_SYS_STAT_H
-+# include <sys/stat.h>
-+#endif
-+#if STDC_HEADERS
-+# include <stdlib.h>
-+# include <stddef.h>
-+#else
-+# if HAVE_STDLIB_H
-+# include <stdlib.h>
-+# endif
-+#endif
-+#if HAVE_STRING_H
-+# if !STDC_HEADERS && HAVE_MEMORY_H
-+# include <memory.h>
-+# endif
-+# include <string.h>
-+#endif
-+#if HAVE_STRINGS_H
-+# include <strings.h>
-+#endif
-+#if HAVE_INTTYPES_H
-+# include <inttypes.h>
-+#else
-+# if HAVE_STDINT_H
-+# include <stdint.h>
-+# endif
-+#endif
-+#if 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 INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO SET_MAKE LIBVER_CURRENT LIBVER_REVISION LIBVER_AGE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LEX LEXLIB LEX_OUTPUT_ROOT YACC LN_S ECHO RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP CPP EGREP LIBTOOL LIBTOOL_DEPS PERL LIB@&t@OBJS LTLIBOBJS'
-+ac_subst_files=''
-+
-+# Initialize some variables set by options.
-+ac_init_help=
-+ac_init_version=false
-+# The variables have the same names as the options, with
-+# dashes changed to underlines.
-+cache_file=/dev/null
-+exec_prefix=NONE
-+no_create=
-+no_recursion=
-+prefix=NONE
-+program_prefix=NONE
-+program_suffix=NONE
-+program_transform_name=s,x,x,
-+silent=
-+site=
-+srcdir=
-+verbose=
-+x_includes=NONE
-+x_libraries=NONE
-+
-+# Installation directory options.
-+# These are left unexpanded so users can "make install exec_prefix=/foo"
-+# 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.
-+bindir='${exec_prefix}/bin'
-+sbindir='${exec_prefix}/sbin'
-+libexecdir='${exec_prefix}/libexec'
-+datadir='${prefix}/share'
-+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'
-+
-+ac_prev=
-+for ac_option
-+do
-+ # If the previous option needs an argument, assign it.
-+ if test -n "$ac_prev"; then
-+ eval "$ac_prev=\$ac_option"
-+ ac_prev=
-+ continue
-+ fi
-+
-+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-+
-+ # Accept the important Cygnus configure options, so we can diagnose typos.
-+
-+ case $ac_option in
-+
-+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
-+ ac_prev=bindir ;;
-+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-+ bindir=$ac_optarg ;;
-+
-+ -build | --build | --buil | --bui | --bu)
-+ ac_prev=build_alias ;;
-+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-+ build_alias=$ac_optarg ;;
-+
-+ -cache-file | --cache-file | --cache-fil | --cache-fi \
-+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-+ ac_prev=cache_file ;;
-+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-+ cache_file=$ac_optarg ;;
-+
-+ --config-cache | -C)
-+ cache_file=config.cache ;;
-+
-+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-+ ac_prev=datadir ;;
-+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-+ | --da=*)
-+ datadir=$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 &&
-+ { 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" ;;
-+
-+ -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 &&
-+ { 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'" ;;
-+
-+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-+ | --exec | --exe | --ex)
-+ ac_prev=exec_prefix ;;
-+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-+ | --exec=* | --exe=* | --ex=*)
-+ exec_prefix=$ac_optarg ;;
-+
-+ -gas | --gas | --ga | --g)
-+ # Obsolete; use --with-gas.
-+ with_gas=yes ;;
-+
-+ -help | --help | --hel | --he | -h)
-+ ac_init_help=long ;;
-+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-+ ac_init_help=recursive ;;
-+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-+ ac_init_help=short ;;
-+
-+ -host | --host | --hos | --ho)
-+ ac_prev=host_alias ;;
-+ -host=* | --host=* | --hos=* | --ho=*)
-+ host_alias=$ac_optarg ;;
-+
-+ -includedir | --includedir | --includedi | --included | --include \
-+ | --includ | --inclu | --incl | --inc)
-+ ac_prev=includedir ;;
-+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-+ | --includ=* | --inclu=* | --incl=* | --inc=*)
-+ includedir=$ac_optarg ;;
-+
-+ -infodir | --infodir | --infodi | --infod | --info | --inf)
-+ ac_prev=infodir ;;
-+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-+ infodir=$ac_optarg ;;
-+
-+ -libdir | --libdir | --libdi | --libd)
-+ ac_prev=libdir ;;
-+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
-+ libdir=$ac_optarg ;;
-+
-+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-+ | --libexe | --libex | --libe)
-+ ac_prev=libexecdir ;;
-+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-+ | --libexe=* | --libex=* | --libe=*)
-+ libexecdir=$ac_optarg ;;
-+
-+ -localstatedir | --localstatedir | --localstatedi | --localstated \
-+ | --localstate | --localstat | --localsta | --localst \
-+ | --locals | --local | --loca | --loc | --lo)
-+ ac_prev=localstatedir ;;
-+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-+ localstatedir=$ac_optarg ;;
-+
-+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-+ ac_prev=mandir ;;
-+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-+ mandir=$ac_optarg ;;
-+
-+ -nfp | --nfp | --nf)
-+ # Obsolete; use --without-fp.
-+ with_fp=no ;;
-+
-+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-+ | --no-cr | --no-c | -n)
-+ no_create=yes ;;
-+
-+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-+ no_recursion=yes ;;
-+
-+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-+ | --oldin | --oldi | --old | --ol | --o)
-+ ac_prev=oldincludedir ;;
-+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-+ oldincludedir=$ac_optarg ;;
-+
-+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-+ ac_prev=prefix ;;
-+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-+ prefix=$ac_optarg ;;
-+
-+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
-+ | --program-pre | --program-pr | --program-p)
-+ ac_prev=program_prefix ;;
-+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
-+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-+ program_prefix=$ac_optarg ;;
-+
-+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
-+ | --program-suf | --program-su | --program-s)
-+ ac_prev=program_suffix ;;
-+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
-+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-+ program_suffix=$ac_optarg ;;
-+
-+ -program-transform-name | --program-transform-name \
-+ | --program-transform-nam | --program-transform-na \
-+ | --program-transform-n | --program-transform- \
-+ | --program-transform | --program-transfor \
-+ | --program-transfo | --program-transf \
-+ | --program-trans | --program-tran \
-+ | --progr-tra | --program-tr | --program-t)
-+ ac_prev=program_transform_name ;;
-+ -program-transform-name=* | --program-transform-name=* \
-+ | --program-transform-nam=* | --program-transform-na=* \
-+ | --program-transform-n=* | --program-transform-=* \
-+ | --program-transform=* | --program-transfor=* \
-+ | --program-transfo=* | --program-transf=* \
-+ | --program-trans=* | --program-tran=* \
-+ | --progr-tra=* | --program-tr=* | --program-t=*)
-+ program_transform_name=$ac_optarg ;;
-+
-+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-+ | -silent | --silent | --silen | --sile | --sil)
-+ silent=yes ;;
-+
-+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-+ ac_prev=sbindir ;;
-+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-+ | --sbi=* | --sb=*)
-+ sbindir=$ac_optarg ;;
-+
-+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
-+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-+ | --sharedst | --shareds | --shared | --share | --shar \
-+ | --sha | --sh)
-+ ac_prev=sharedstatedir ;;
-+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-+ | --sha=* | --sh=*)
-+ sharedstatedir=$ac_optarg ;;
-+
-+ -site | --site | --sit)
-+ ac_prev=site ;;
-+ -site=* | --site=* | --sit=*)
-+ site=$ac_optarg ;;
-+
-+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-+ ac_prev=srcdir ;;
-+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-+ srcdir=$ac_optarg ;;
-+
-+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-+ | --syscon | --sysco | --sysc | --sys | --sy)
-+ ac_prev=sysconfdir ;;
-+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-+ sysconfdir=$ac_optarg ;;
-+
-+ -target | --target | --targe | --targ | --tar | --ta | --t)
-+ ac_prev=target_alias ;;
-+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-+ target_alias=$ac_optarg ;;
-+
-+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
-+ verbose=yes ;;
-+
-+ -version | --version | --versio | --versi | --vers | -V)
-+ ac_init_version=: ;;
-+
-+ -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 &&
-+ { 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'" ;;
-+
-+ -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 &&
-+ { 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" ;;
-+
-+ --x)
-+ # Obsolete; use --with-x.
-+ with_x=yes ;;
-+
-+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-+ | --x-incl | --x-inc | --x-in | --x-i)
-+ ac_prev=x_includes ;;
-+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-+ x_includes=$ac_optarg ;;
-+
-+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
-+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-+ ac_prev=x_libraries ;;
-+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-+ x_libraries=$ac_optarg ;;
-+
-+ -*) { echo "$as_me: error: unrecognized option: $ac_option
-+Try \`$0 --help' for more information." >&2
-+ { (exit 1); exit 1; }; }
-+ ;;
-+
-+ *=*)
-+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-+ # Reject names that are not valid shell variable names.
-+ 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'"
-+ export $ac_envvar ;;
-+
-+ *)
-+ # FIXME: should be removed in autoconf 3.0.
-+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
-+ ;;
-+
-+ esac
-+done
-+
-+if test -n "$ac_prev"; then
-+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-+ { echo "$as_me: error: missing argument to $ac_option" >&2
-+ { (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
-+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; }; };;
-+ esac
-+done
-+
-+# There might be people who depend on the old broken behavior: `$host'
-+# used to hold the argument of --host etc.
-+# FIXME: To remove some day.
-+build=$build_alias
-+host=$host_alias
-+target=$target_alias
-+
-+# FIXME: To remove some day.
-+if test "x$host_alias" != x; then
-+ if test "x$build_alias" = x; then
-+ cross_compiling=maybe
-+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-+ If a cross compiler is detected then cross compile mode will be used." >&2
-+ elif test "x$build_alias" != "x$host_alias"; then
-+ cross_compiling=yes
-+ fi
-+fi
-+
-+ac_tool_prefix=
-+test -n "$host_alias" && ac_tool_prefix=$host_alias-
-+
-+test "$silent" = yes && exec 6>/dev/null
-+
-+
-+# 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 ||
-+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$0" : 'X\(//\)[^/]' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ 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'`
-+ srcdir=$ac_confdir
-+ 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
-+
-+#
-+# Report the --help message.
-+#
-+if test "$ac_init_help" = "long"; then
-+ # Omit some internal or obsolete options to make the list less imposing.
-+ # This message is too long to be a string in the A/UX 3.1 sh.
-+ cat <<_ACEOF
-+\`configure' configures this package to adapt to many kinds of systems.
-+
-+Usage: $0 [OPTION]... [VAR=VALUE]...
-+
-+To assign environment variables (e.g., CC, CFLAGS...), specify them as
-+VAR=VALUE. See below for descriptions of some of the useful variables.
-+
-+Defaults for the options are specified in brackets.
-+
-+Configuration:
-+ -h, --help display this help and exit
-+ --help=short display options specific to this package
-+ --help=recursive display the short help of all the included packages
-+ -V, --version display version information and exit
-+ -q, --quiet, --silent do not print \`checking...' messages
-+ --cache-file=FILE cache test results in FILE [disabled]
-+ -C, --config-cache alias for \`--cache-file=config.cache'
-+ -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]
-+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
-+ [PREFIX]
-+
-+By default, \`make install' will install all the files in
-+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-+for instance \`--prefix=\$HOME'.
-+
-+For better control, use the options below.
-+
-+Fine tuning of the installation directories:
-+ --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]
-+_ACEOF
-+
-+ cat <<\_ACEOF
-+
-+Program names:
-+ --program-prefix=PREFIX prepend PREFIX to installed program names
-+ --program-suffix=SUFFIX append SUFFIX to installed program names
-+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-+
-+System types:
-+ --build=BUILD configure for building on BUILD [guessed]
-+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
-+ --target=TARGET configure for building compilers for TARGET [HOST]
-+_ACEOF
-+fi
-+
-+if test -n "$ac_init_help"; then
-+
-+ cat <<\_ACEOF
-+
-+Optional Features:
-+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
-+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
-+ --enable-shared=PKGS build shared libraries default=yes
-+ --enable-static=PKGS build static libraries default=yes
-+ --enable-fast-install=PKGS optimize for fast installation default=yes
-+ --disable-libtool-lock avoid locking (might break parallel builds)
-+ --enable-allow_uni30 Allow UNI 3.0 backwards-compatible extensions (if using UNI 3.1)
-+ --enable-q2963_1 Enable peak cell rate modification as specified in Q.2963.1 (if using UNI 4.0)
-+ --enable-cisco Enable work around for point-to-multipoint signaling bug in Cisco LS100 or LS7010 switches
-+ --enable-thomflex Some versions of the Thomson Thomflex 5000 won't do any signaling before they get a RESTART. Enable sending of a RESTART whenever SAAL comes up.
-+ --enable-mpoa_1_1 Enable proposed MPOA 1.1 features
-+ --enable-mpr Enable memory debugging (if MPR is installed)
-+
-+Optional Packages:
-+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
-+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
-+ --with-gnu-ld assume the C compiler uses GNU ld default=no
-+ --with-pic try to use only PIC/non-PIC objects default=use both
-+ --with-uni=VERSION UNI version to use (3.0,3.1,4.0) default=dynamic
-+
-+Some influential environment variables:
-+ CC C compiler command
-+ 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>
-+ 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
-+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
-+ 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
-+
-+# 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
-+ else
-+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-+ fi
-+ cd "$ac_popdir"
-+ done
-+fi
-+
-+test -n "$ac_init_help" && exit 0
-+if $ac_init_version; then
-+ cat <<\_ACEOF
-+
-+Copyright (C) 2003 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
-+fi
-+exec 5>config.log
-+cat >&5 <<_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
-+
-+ $ $0 $@
-+
-+_ACEOF
-+{
-+cat <<_ASUNAME
-+@%:@@%:@ --------- @%:@@%:@
-+@%:@@%:@ Platform. @%:@@%:@
-+@%:@@%:@ --------- @%:@@%:@
-+
-+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-+uname -m = `(uname -m) 2>/dev/null || echo unknown`
-+uname -r = `(uname -r) 2>/dev/null || echo unknown`
-+uname -s = `(uname -s) 2>/dev/null || echo unknown`
-+uname -v = `(uname -v) 2>/dev/null || echo unknown`
-+
-+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-+
-+/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`
-+/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`
-+
-+_ASUNAME
-+
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ echo "PATH: $as_dir"
-+done
-+
-+} >&5
-+
-+cat >&5 <<_ACEOF
-+
-+
-+@%:@@%:@ ----------- @%:@@%:@
-+@%:@@%:@ Core tests. @%:@@%:@
-+@%:@@%:@ ----------- @%:@@%:@
-+
-+_ACEOF
-+
-+
-+# Keep a trace of the command line.
-+# Strip out --no-create and --no-recursion so they do not pile up.
-+# Strip out --silent because we don't want to record it for future runs.
-+# Also quote any args containing shell meta-characters.
-+# Make two passes to allow for proper duplicate-argument suppression.
-+ac_configure_args=
-+ac_configure_args0=
-+ac_configure_args1=
-+ac_sep=
-+ac_must_keep_next=false
-+for ac_pass in 1 2
-+do
-+ for ac_arg
-+ do
-+ case $ac_arg in
-+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-+ -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
-+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
-+ 2)
-+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
-+ if test $ac_must_keep_next = true; then
-+ ac_must_keep_next=false # Got value, back to normal.
-+ else
-+ case $ac_arg in
-+ *=* | --config-cache | -C | -disable-* | --disable-* \
-+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-+ | -with-* | --with-* | -without-* | --without-* | --x)
-+ case "$ac_configure_args0 " in
-+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-+ esac
-+ ;;
-+ -* ) 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=" "
-+ ;;
-+ esac
-+ done
-+done
-+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
-+
-+# 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.
-+trap 'exit_status=$?
-+ # Save into config.log some information that might help in debugging.
-+ {
-+ echo
-+
-+ cat <<\_ASBOX
-+@%:@@%:@ ---------------- @%:@@%:@
-+@%:@@%:@ Cache variables. @%:@@%:@
-+@%:@@%:@ ---------------- @%:@@%:@
-+_ASBOX
-+ echo
-+ # The following way of writing the cache mishandles newlines in values,
-+{
-+ (set) 2>&1 |
-+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
-+ *ac_space=\ *)
-+ sed -n \
-+ "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"
-+ ;;
-+ esac;
-+}
-+ echo
-+
-+ cat <<\_ASBOX
-+@%:@@%:@ ----------------- @%:@@%:@
-+@%:@@%:@ Output variables. @%:@@%:@
-+@%:@@%:@ ----------------- @%:@@%:@
-+_ASBOX
-+ echo
-+ for ac_var in $ac_subst_vars
-+ do
-+ eval ac_val=$`echo $ac_var`
-+ echo "$ac_var='"'"'$ac_val'"'"'"
-+ done | sort
-+ echo
-+
-+ if test -n "$ac_subst_files"; then
-+ cat <<\_ASBOX
-+@%:@@%:@ ------------- @%:@@%:@
-+@%:@@%:@ Output files. @%:@@%:@
-+@%:@@%:@ ------------- @%:@@%:@
-+_ASBOX
-+ echo
-+ for ac_var in $ac_subst_files
-+ do
-+ eval ac_val=$`echo $ac_var`
-+ echo "$ac_var='"'"'$ac_val'"'"'"
-+ done | sort
-+ echo
-+ fi
-+
-+ if test -s confdefs.h; then
-+ cat <<\_ASBOX
-+@%:@@%:@ ----------- @%:@@%:@
-+@%:@@%:@ confdefs.h. @%:@@%:@
-+@%:@@%:@ ----------- @%:@@%:@
-+_ASBOX
-+ echo
-+ sed "/^$/d" confdefs.h | sort
-+ 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 &&
-+ exit $exit_status
-+ ' 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
-+
-+# Predefined preprocessor variables.
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-+_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
-+fi
-+for ac_site_file in $CONFIG_SITE; 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;}
-+ sed 's/^/| /' "$ac_site_file" >&5
-+ . "$ac_site_file"
-+ fi
-+done
-+
-+if test -r "$cache_file"; then
-+ # Some versions of bash will fail to source /dev/null (special
-+ # files actually), so we avoid doing that.
-+ if test -f "$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;;
-+ esac
-+ fi
-+else
-+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-+echo "$as_me: creating cache $cache_file" >&6;}
-+ >$cache_file
-+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
-+ 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"
-+ 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
-+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-+ ac_cache_corrupted=: ;;
-+ ,set)
-+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-+ ac_cache_corrupted=: ;;
-+ ,);;
-+ *)
-+ if test "x$ac_old_val" != "x$ac_new_val"; then
-+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
-+echo "$as_me: former value: $ac_old_val" >&2;}
-+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
-+echo "$as_me: current value: $ac_new_val" >&2;}
-+ ac_cache_corrupted=:
-+ fi;;
-+ esac
-+ # 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=$ac_new_val ;;
-+ esac
-+ case " $ac_configure_args " in
-+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
-+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-+ esac
-+ fi
-+done
-+if $ac_cache_corrupted; then
-+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-+ { (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
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ ac_config_headers="$ac_config_headers config.h"
-+
-+ ac_config_commands="$ac_config_commands default-1"
-+
-+
-+ac_aux_dir=
-+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
-+ ac_aux_dir=$ac_dir
-+ ac_install_sh="$ac_aux_dir/install.sh -c"
-+ break
-+ 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;}
-+ { (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.
-+
-+# 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;}
-+ { (exit 1); exit 1; }; }
-+
-+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" &&
-+ { { 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;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-+echo "${ECHO_T}$ac_cv_build" >&6
-+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/'`
-+
-+
-+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;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-+echo "${ECHO_T}$ac_cv_host" >&6
-+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/'`
-+
-+
-+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;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_target" >&5
-+echo "${ECHO_T}$ac_cv_target" >&6
-+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/'`
-+
-+
-+# The aliases save the names the user supplied, while $host etc.
-+# will get canonicalized.
-+test -n "$target_alias" &&
-+ test "$program_prefix$program_suffix$program_transform_name" = \
-+ NONENONEs,x,x, &&
-+ program_prefix=${target_alias}-
-+
-+am__api_version="1.4"
-+# Find a good install program. We prefer a C program (faster),
-+# so one script is as good as another. But avoid the broken or
-+# incompatible versions:
-+# SysV /etc/install, /usr/sbin/install
-+# SunOS /usr/etc/install
-+# IRIX /sbin/install
-+# AIX /bin/install
-+# AmigaOS /C/install, which installs bootblocks on floppy discs
-+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-+# 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
-+if test -z "$INSTALL"; then
-+if test "${ac_cv_path_install+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ # Account for people who put trailing slashes in PATH elements.
-+case $as_dir/ in
-+ ./ | .// | /cC/* | \
-+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
-+ /usr/ucb/* ) ;;
-+ *)
-+ # OSF1 and SCO ODT 3.0 have their own names for install.
-+ # Don't use installbsd from OSF since it installs stuff as root
-+ # 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 $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.
-+ :
-+ elif test $ac_prog = install &&
-+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-+ # program-specific install script used by HP pwplus--don't use.
-+ :
-+ else
-+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-+ break 3
-+ fi
-+ fi
-+ done
-+ done
-+ ;;
-+esac
-+done
-+
-+
-+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
-+ # break other packages using the cache if that directory is
-+ # removed, or if the path is relative.
-+ INSTALL=$ac_install_sh
-+ fi
-+fi
-+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.
-+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-+
-+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-+
-+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
-+# Just in case
-+sleep 1
-+echo timestamp > conftestfile
-+# Do `set' in a subshell so we don't clobber the current shell's
-+# arguments. Must try -L first in case configure is actually a
-+# symlink; some systems play weird games with the mod time of symlinks
-+# (eg FreeBSD returns the mod time of the symlink's containing
-+# directory).
-+if (
-+ set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
-+ if test "$*" = "X"; then
-+ # -L didn't work.
-+ set X `ls -t $srcdir/configure conftestfile`
-+ fi
-+ if test "$*" != "X $srcdir/configure conftestfile" \
-+ && test "$*" != "X conftestfile $srcdir/configure"; then
-+
-+ # If neither matched, then we have a broken ls. This can happen
-+ # if, for instance, CONFIG_SHELL is bash and it inherits a
-+ # broken ls alias from the environment. This has actually
-+ # happened. Such a system could not be considered "sane".
-+ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
-+alias in your environment" >&5
-+echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
-+alias in your environment" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+
-+ test "$2" = conftestfile
-+ )
-+then
-+ # Ok.
-+ :
-+else
-+ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-+Check your system clock" >&5
-+echo "$as_me: error: newly created file is older than distributed files!
-+Check your system clock" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+rm -f conftest*
-+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"
-+# Use a double $ so make ignores it.
-+test "$program_suffix" != NONE &&
-+ 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
-+
-+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 $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.make <<\_ACEOF
-+all:
-+ @echo 'ac_maketemp="$(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
-+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
-+ SET_MAKE=
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+ SET_MAKE="MAKE=${MAKE-make}"
-+fi
-+
-+
-+PACKAGE=linux-atm
-+
-+VERSION=2.4.1
-+
-+if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
-+ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define PACKAGE "$PACKAGE"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define VERSION "$VERSION"
-+_ACEOF
-+
-+
-+
-+missing_dir=`cd $ac_aux_dir && pwd`
-+echo "$as_me:$LINENO: checking for working aclocal-${am__api_version}" >&5
-+echo $ECHO_N "checking for working aclocal-${am__api_version}... $ECHO_C" >&6
-+# Run test in a subshell; some versions of sh will print an error if
-+# an executable is not found, even if stderr is redirected.
-+# Redirect stdin to placate older versions of autoconf. Sigh.
-+if (aclocal-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
-+ ACLOCAL=aclocal-${am__api_version}
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
-+else
-+ ACLOCAL="$missing_dir/missing aclocal-${am__api_version}"
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
-+fi
-+
-+echo "$as_me:$LINENO: checking for working autoconf" >&5
-+echo $ECHO_N "checking for working autoconf... $ECHO_C" >&6
-+# Run test in a subshell; some versions of sh will print an error if
-+# an executable is not found, even if stderr is redirected.
-+# Redirect stdin to placate older versions of autoconf. Sigh.
-+if (autoconf --version) < /dev/null > /dev/null 2>&1; then
-+ AUTOCONF=autoconf
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
-+else
-+ AUTOCONF="$missing_dir/missing autoconf"
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
-+fi
-+
-+echo "$as_me:$LINENO: checking for working automake-${am__api_version}" >&5
-+echo $ECHO_N "checking for working automake-${am__api_version}... $ECHO_C" >&6
-+# Run test in a subshell; some versions of sh will print an error if
-+# an executable is not found, even if stderr is redirected.
-+# Redirect stdin to placate older versions of autoconf. Sigh.
-+if (automake-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
-+ AUTOMAKE=automake-${am__api_version}
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
-+else
-+ AUTOMAKE="$missing_dir/missing automake-${am__api_version}"
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
-+fi
-+
-+echo "$as_me:$LINENO: checking for working autoheader" >&5
-+echo $ECHO_N "checking for working autoheader... $ECHO_C" >&6
-+# Run test in a subshell; some versions of sh will print an error if
-+# an executable is not found, even if stderr is redirected.
-+# Redirect stdin to placate older versions of autoconf. Sigh.
-+if (autoheader --version) < /dev/null > /dev/null 2>&1; then
-+ AUTOHEADER=autoheader
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
-+else
-+ AUTOHEADER="$missing_dir/missing autoheader"
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
-+fi
-+
-+echo "$as_me:$LINENO: checking for working makeinfo" >&5
-+echo $ECHO_N "checking for working makeinfo... $ECHO_C" >&6
-+# Run test in a subshell; some versions of sh will print an error if
-+# an executable is not found, even if stderr is redirected.
-+# Redirect stdin to placate older versions of autoconf. Sigh.
-+if (makeinfo --version) < /dev/null > /dev/null 2>&1; then
-+ MAKEINFO=makeinfo
-+ echo "$as_me:$LINENO: result: found" >&5
-+echo "${ECHO_T}found" >&6
-+else
-+ MAKEINFO="$missing_dir/missing makeinfo"
-+ echo "$as_me:$LINENO: result: missing" >&5
-+echo "${ECHO_T}missing" >&6
-+fi
-+
-+
-+
-+LIBVER_CURRENT="1"
-+LIBVER_REVISION="0"
-+LIBVER_AGE="0"
-+
-+
-+
-+
-+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
-+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
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$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_CC="${ac_tool_prefix}gcc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+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 "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
-+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="gcc"
-+ 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
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ CC=$ac_ct_CC
-+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.
-+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
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$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_CC="${ac_tool_prefix}cc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+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
-+else
-+ 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
-+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
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+ ac_prog_rejected=no
-+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
-+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-+ ac_prog_rejected=yes
-+ continue
-+ fi
-+ ac_cv_prog_CC="cc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+if test $ac_prog_rejected = yes; then
-+ # We found a bogon in the path, so make sure we never use it.
-+ set dummy $ac_cv_prog_CC
-+ shift
-+ if test $@%:@ != 0; then
-+ # We chose a different compiler from the bogus one.
-+ # However, it has the same basename, so the bogon will be chosen
-+ # first if we set CC to just the basename; use the full file name.
-+ shift
-+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-+ fi
-+fi
-+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 "$CC"; then
-+ if test -n "$ac_tool_prefix"; then
-+ for ac_prog in cl
-+ 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
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$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_CC="$ac_tool_prefix$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+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
-+
-+ test -n "$CC" && break
-+ done
-+fi
-+if test -z "$CC"; then
-+ ac_ct_CC=$CC
-+ for ac_prog in cl
-+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
-+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="$ac_prog"
-+ 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
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$ac_ct_CC" && break
-+done
-+
-+ CC=$ac_ct_CC
-+fi
-+
-+fi
-+
-+
-+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: no acceptable C compiler found in \$PATH
-+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
-+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_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_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_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+
-+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
-+ac_clean_files_save=$ac_clean_files
-+ac_clean_files="$ac_clean_files a.out a.exe b.out"
-+# 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
-+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
-+ 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
-+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.
-+ ;;
-+ [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
-+ break;;
-+ * )
-+ break;;
-+ esac
-+done
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: C compiler cannot create executables
-+See \`config.log' for more details." >&2;}
-+ { (exit 77); exit 77; }; }
-+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
-+# 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
-+# 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
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ cross_compiling=no
-+ else
-+ if test "$cross_compiling" = maybe; then
-+ cross_compiling=yes
-+ else
-+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
-+If you meant to cross compile, use \`--host'.
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot run C compiled programs.
-+If you meant to cross compile, use \`--host'.
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+ fi
-+fi
-+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
-+# 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
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
-+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
-+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-+# work properly (i.e., refer to `conftest.exe'), while it won't with
-+# `rm'.
-+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_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-+ export ac_cv_exeext
-+ break;;
-+ * ) break;;
-+ esac
-+done
-+else
-+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+rm -f conftest$ac_cv_exeext
-+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
-+if test "${ac_cv_objext+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. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.o conftest.obj
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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
-+ case $ac_file in
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
-+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-+ break;;
-+ esac
-+done
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute suffix of object files: cannot compile
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+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
-+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
-+if test "${ac_cv_c_compiler_gnu+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. */
-+
-+int
-+main ()
-+{
-+#ifndef __GNUC__
-+ choke me
-+#endif
-+
-+ ;
-+ 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_compiler_gnu=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_compiler_gnu=no
-+fi
-+rm -f 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
-+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
-+if test "${ac_cv_prog_cc_g+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. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ 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_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
-+/* 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
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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
-+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
-+/* 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'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+missing_dir=`cd $ac_aux_dir && pwd`
-+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
-+if test "${ac_cv_prog_LEX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$LEX"; then
-+ ac_cv_prog_LEX="$LEX" # 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_LEX="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+LEX=$ac_cv_prog_LEX
-+if test -n "$LEX"; then
-+ 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
-+fi
-+
-+ test -n "$LEX" && break
-+done
-+test -n "$LEX" || LEX="$missing_dir/missing flex"
-+
-+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
-+if test "${ac_cv_prog_LEX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$LEX"; then
-+ ac_cv_prog_LEX="$LEX" # 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_LEX="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+LEX=$ac_cv_prog_LEX
-+if test -n "$LEX"; then
-+ 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
-+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"
-+#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;
-+}
-+_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_lib_fl_yywrap=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_fl_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_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 $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;
-+}
-+_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_lib_l_yywrap=yes
-+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
-+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
-+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
-+# 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"
-+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
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_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 \
-+ 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
-+if test $ac_cv_prog_lex_yytext_pointer = yes; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+@%:@define YYTEXT_POINTER 1
-+_ACEOF
-+
-+fi
-+
-+fi
-+
-+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
-+if test "${ac_cv_prog_YACC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$YACC"; then
-+ ac_cv_prog_YACC="$YACC" # 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_YACC="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+YACC=$ac_cv_prog_YACC
-+if test -n "$YACC"; then
-+ 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
-+fi
-+
-+ test -n "$YACC" && break
-+done
-+test -n "$YACC" || YACC="yacc"
-+
-+# Find a good install program. We prefer a C program (faster),
-+# so one script is as good as another. But avoid the broken or
-+# incompatible versions:
-+# SysV /etc/install, /usr/sbin/install
-+# SunOS /usr/etc/install
-+# IRIX /sbin/install
-+# AIX /bin/install
-+# AmigaOS /C/install, which installs bootblocks on floppy discs
-+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-+# 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
-+if test -z "$INSTALL"; then
-+if test "${ac_cv_path_install+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ # Account for people who put trailing slashes in PATH elements.
-+case $as_dir/ in
-+ ./ | .// | /cC/* | \
-+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
-+ /usr/ucb/* ) ;;
-+ *)
-+ # OSF1 and SCO ODT 3.0 have their own names for install.
-+ # Don't use installbsd from OSF since it installs stuff as root
-+ # 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 $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.
-+ :
-+ elif test $ac_prog = install &&
-+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-+ # program-specific install script used by HP pwplus--don't use.
-+ :
-+ else
-+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-+ break 3
-+ fi
-+ fi
-+ done
-+ done
-+ ;;
-+esac
-+done
-+
-+
-+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
-+ # break other packages using the cache if that directory is
-+ # removed, or if the path is relative.
-+ INSTALL=$ac_install_sh
-+ fi
-+fi
-+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.
-+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-+
-+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-+
-+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-+
-+
-+# Check whether --enable-shared or --disable-shared was given.
-+if test "${enable_shared+set}" = set; then
-+ enableval="$enable_shared"
-+ p=${PACKAGE-default}
-+case $enableval in
-+yes) enable_shared=yes ;;
-+no) enable_shared=no ;;
-+*)
-+ enable_shared=no
-+ # Look at the argument we got. We use all the common list separators.
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-+ for pkg in $enableval; do
-+ if test "X$pkg" = "X$p"; then
-+ enable_shared=yes
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ ;;
-+esac
-+else
-+ enable_shared=yes
-+fi;
-+# Check whether --enable-static or --disable-static was given.
-+if test "${enable_static+set}" = set; then
-+ enableval="$enable_static"
-+ p=${PACKAGE-default}
-+case $enableval in
-+yes) enable_static=yes ;;
-+no) enable_static=no ;;
-+*)
-+ enable_static=no
-+ # Look at the argument we got. We use all the common list separators.
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-+ for pkg in $enableval; do
-+ if test "X$pkg" = "X$p"; then
-+ enable_static=yes
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ ;;
-+esac
-+else
-+ enable_static=yes
-+fi;
-+# Check whether --enable-fast-install or --disable-fast-install was given.
-+if test "${enable_fast_install+set}" = set; then
-+ enableval="$enable_fast_install"
-+ p=${PACKAGE-default}
-+case $enableval in
-+yes) enable_fast_install=yes ;;
-+no) enable_fast_install=no ;;
-+*)
-+ enable_fast_install=no
-+ # Look at the argument we got. We use all the common list separators.
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-+ for pkg in $enableval; do
-+ if test "X$pkg" = "X$p"; then
-+ enable_fast_install=yes
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ ;;
-+esac
-+else
-+ enable_fast_install=yes
-+fi;
-+# Find the correct PATH separator. Usually this is `:', but
-+# DJGPP uses `;' like DOS.
-+if test "X${PATH_SEPARATOR+set}" != Xset; then
-+ UNAME=${UNAME-`uname 2>/dev/null`}
-+ case X$UNAME in
-+ *-DOS) lt_cv_sys_path_separator=';' ;;
-+ *) lt_cv_sys_path_separator=':' ;;
-+ esac
-+ PATH_SEPARATOR=$lt_cv_sys_path_separator
-+fi
-+
-+
-+# Check whether --with-gnu-ld or --without-gnu-ld was given.
-+if test "${with_gnu_ld+set}" = set; then
-+ withval="$with_gnu_ld"
-+ test "$withval" = no || with_gnu_ld=yes
-+else
-+ with_gnu_ld=no
-+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
-+ case $host in
-+ *-*-mingw*)
-+ # gcc leaves a trailing carriage return which upsets mingw
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-+ *)
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-+ esac
-+ case $ac_prog in
-+ # Accept absolute paths.
-+ [\\/]* | [A-Za-z]:[\\/]*)
-+ re_direlt='/[^/][^/]*/\.\./'
-+ # Canonicalize the path of ld
-+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
-+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
-+ done
-+ test -z "$LD" && LD="$ac_prog"
-+ ;;
-+ "")
-+ # If it fails, then pretend we aren't using GCC.
-+ ac_prog=ld
-+ ;;
-+ *)
-+ # If it is relative, then search for the first ld in PATH.
-+ with_gnu_ld=unknown
-+ ;;
-+ 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
-+else
-+ 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
-+else
-+ if test -z "$LD"; then
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-+ lt_cv_path_LD="$ac_dir/$ac_prog"
-+ # Check to see if the program is GNU ld. I'd rather use --version,
-+ # but apparently some GNU ld's only accept -v.
-+ # Break only if it was the GNU/non-GNU ld that we prefer.
-+ if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
-+ test "$with_gnu_ld" != no && break
-+ else
-+ test "$with_gnu_ld" != yes && break
-+ fi
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+else
-+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
-+fi
-+fi
-+
-+LD="$lt_cv_path_LD"
-+if test -n "$LD"; then
-+ 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
-+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
-+if test "${lt_cv_prog_gnu_ld+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
-+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
-+ lt_cv_prog_gnu_ld=yes
-+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
-+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
-+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
-+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
-+if test "${lt_cv_path_NM+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$NM"; then
-+ # Let the user override the test.
-+ lt_cv_path_NM="$NM"
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
-+ test -z "$ac_dir" && ac_dir=.
-+ tmp_nm=$ac_dir/${ac_tool_prefix}nm
-+ if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
-+ # Check to see if the nm accepts a BSD-compat flag.
-+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-+ # nm: unknown option "B" ignored
-+ # Tru64's nm complains that /dev/null is an invalid object file
-+ if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
-+ lt_cv_path_NM="$tmp_nm -B"
-+ break
-+ elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-+ lt_cv_path_NM="$tmp_nm -p"
-+ break
-+ else
-+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-+ continue # so that we can try to find one that supports BSD flags
-+ fi
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
-+fi
-+fi
-+
-+NM="$lt_cv_path_NM"
-+echo "$as_me:$LINENO: result: $NM" >&5
-+echo "${ECHO_T}$NM" >&6
-+
-+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
-+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
-+if test "${lt_cv_path_SED+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Loop through the user's path and test for sed and gsed.
-+# Then use that list of sed's as ones to test for truncation.
-+as_executable_p="test -f"
-+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_prog in sed gsed; do
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-+ _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext"
-+ fi
-+ done
-+ done
-+done
-+
-+ # Create a temporary directory, and hook for its removal unless debugging.
-+$debug ||
-+{
-+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-+ trap '{ (exit 1); exit 1; }' 1 2 13 15
-+}
-+
-+# Create a (secure) tmp directory for tmp files.
-+: ${TMPDIR=/tmp}
-+{
-+ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` &&
-+ test -n "$tmp" && test -d "$tmp"
-+} ||
-+{
-+ tmp=$TMPDIR/sed$$-$RANDOM
-+ (umask 077 && mkdir $tmp)
-+} ||
-+{
-+ echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-+ { (exit 1); exit 1; }
-+}
-+ _max=0
-+ _count=0
-+ # Add /usr/xpg4/bin/sed as it is typically found on Solaris
-+ # along with /bin/sed that truncates output.
-+ for _sed in $_sed_list /usr/xpg4/bin/sed; do
-+ test ! -f ${_sed} && break
-+ cat /dev/null > "$tmp/sed.in"
-+ _count=0
-+ echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in"
-+ # Check for GNU sed and select it if it is found.
-+ if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then
-+ lt_cv_path_SED=${_sed}
-+ break
-+ fi
-+ while true; do
-+ cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp"
-+ mv "$tmp/sed.tmp" "$tmp/sed.in"
-+ cp "$tmp/sed.in" "$tmp/sed.nl"
-+ echo >>"$tmp/sed.nl"
-+ ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break
-+ cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break
-+ # 40000 chars as input seems more than enough
-+ test $_count -gt 10 && break
-+ _count=`expr $_count + 1`
-+ if test $_count -gt $_max; then
-+ _max=$_count
-+ lt_cv_path_SED=$_sed
-+ fi
-+ done
-+ done
-+ rm -rf "$tmp"
-+
-+fi
-+
-+if test "X$SED" != "X"; then
-+ lt_cv_path_SED=$SED
-+else
-+ SED=$lt_cv_path_SED
-+fi
-+echo "$as_me:$LINENO: result: $SED" >&5
-+echo "${ECHO_T}$SED" >&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
-+else
-+ 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 dependent libraries" >&5
-+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
-+if test "${lt_cv_deplibs_check_method+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_file_magic_cmd='$MAGIC_CMD'
-+lt_cv_file_magic_test_file=
-+lt_cv_deplibs_check_method='unknown'
-+# Need to set the preceding variable on all platforms that support
-+# interlibrary dependencies.
-+# 'none' -- dependencies not supported.
-+# `unknown' -- same as none, but documents that we really don't know.
-+# 'pass_all' -- all dependencies passed with no checks.
-+# 'test_compile' -- check by making test program.
-+# 'file_magic [[regex]]' -- check by looking for files in library path
-+# which responds to the $file_magic_cmd with a given egrep regex.
-+# If you have `file' or equivalent on your system and you're not sure
-+# whether `pass_all' will *always* work, you probably want this one.
-+
-+case $host_os in
-+aix4* | aix5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+beos*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+bsdi4*)
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-+ lt_cv_file_magic_cmd='/usr/bin/file -L'
-+ lt_cv_file_magic_test_file=/shlib/libc.so
-+ ;;
-+
-+cygwin* | mingw* | pw32*)
-+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+ lt_cv_file_magic_cmd='$OBJDUMP -f'
-+ ;;
-+
-+darwin* | rhapsody*)
-+ lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
-+ lt_cv_file_magic_cmd='/usr/bin/file -L'
-+ case "$host_os" in
-+ rhapsody* | darwin1.[012])
-+ lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
-+ ;;
-+ *) # Darwin 1.3 on
-+ lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
-+ ;;
-+ esac
-+ ;;
-+
-+freebsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-+ case $host_cpu in
-+ i*86 )
-+ # Not sure whether the presence of OpenBSD here was a mistake.
-+ # Let's accept both of them until this is cleared up.
-+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ ;;
-+ esac
-+ else
-+ lt_cv_deplibs_check_method=pass_all
-+ fi
-+ ;;
-+
-+gnu*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+hpux10.20*|hpux11*)
-+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ irix5* | nonstopux*)
-+ # this will be overridden with pass_all, but let us keep it just in case
-+ lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
-+ ;;
-+ *)
-+ case $LD in
-+ *-32|*"-32 ") libmagic=32-bit;;
-+ *-n32|*"-n32 ") libmagic=N32;;
-+ *-64|*"-64 ") libmagic=64-bit;;
-+ *) libmagic=never-match;;
-+ esac
-+ # this will be overridden with pass_all, but let us keep it just in case
-+ lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
-+ ;;
-+ esac
-+ lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+# This must be Linux ELF.
-+linux-gnu*)
-+ case $host_cpu in
-+ alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64* | arm* | m68k)
-+ lt_cv_deplibs_check_method=pass_all ;;
-+ *)
-+ # glibc up to 2.1.1 does not perform some relocations on ARM
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
-+ esac
-+ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-+ ;;
-+
-+netbsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-+ else
-+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
-+ fi
-+ ;;
-+
-+newos6*)
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
-+ ;;
-+
-+openbsd*)
-+ lt_cv_file_magic_cmd=/usr/bin/file
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
-+ else
-+ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
-+ fi
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ # this will be overridden with pass_all, but let us keep it just in case
-+ lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
-+ lt_cv_file_magic_test_file=/shlib/libc.so
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+sco3.2v5*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+solaris*)
-+ lt_cv_deplibs_check_method=pass_all
-+ lt_cv_file_magic_test_file=/lib/libc.so
-+ ;;
-+
-+sysv5uw[78]* | sysv4*uw2*)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ case $host_vendor in
-+ motorola)
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-+ ;;
-+ ncr)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+ sequent)
-+ lt_cv_file_magic_cmd='/bin/file'
-+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-+ ;;
-+ sni)
-+ lt_cv_file_magic_cmd='/bin/file'
-+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-+ lt_cv_file_magic_test_file=/lib/libc.so
-+ ;;
-+ siemens)
-+ lt_cv_deplibs_check_method=pass_all
-+ ;;
-+ esac
-+ ;;
-+esac
-+
-+fi
-+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
-+
-+
-+
-+
-+
-+
-+
-+# Check for command to grab the raw symbol name followed by C symbol from nm.
-+echo "$as_me:$LINENO: checking command to parse $NM output" >&5
-+echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6
-+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+# These are sane defaults that work on at least a few old systems.
-+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-+
-+# Character class describing NM global symbol codes.
-+symcode='[BCDEGRST]'
-+
-+# Regexp to match symbols that can be accessed directly from C.
-+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-+
-+# Transform the above into a raw symbol and a C symbol.
-+symxfrm='\1 \2\3 \3'
-+
-+# Transform an extracted symbol line into a proper C declaration
-+lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
-+
-+# Transform an extracted symbol line into symbol name and symbol address
-+lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+
-+# Define system-specific variables.
-+case $host_os in
-+aix*)
-+ symcode='[BCDT]'
-+ ;;
-+cygwin* | mingw* | pw32*)
-+ symcode='[ABCDGISTW]'
-+ ;;
-+hpux*) # Its linker distinguishes data from code symbols
-+ lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-+ lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
-+ ;;
-+irix* | nonstopux*)
-+ symcode='[BCDEGRST]'
-+ ;;
-+osf*)
-+ symcode='[BCDEGQRST]'
-+ ;;
-+solaris* | sysv5*)
-+ symcode='[BDT]'
-+ ;;
-+sysv4)
-+ symcode='[DFNSTU]'
-+ ;;
-+esac
-+
-+# Handle CRLF in mingw tool chain
-+opt_cr=
-+case $host_os in
-+mingw*)
-+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-+ ;;
-+esac
-+
-+# If we're using GNU nm, then use its standard symbol codes.
-+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
-+ symcode='[ABCDGISTW]'
-+fi
-+
-+# Try without a prefix undercore, then with it.
-+for ac_symprfx in "" "_"; do
-+
-+ # Write the raw and C identifiers.
-+lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
-+
-+ # Check to see that the pipe works correctly.
-+ pipe_works=no
-+ rm -f conftest*
-+ cat > conftest.$ac_ext <<EOF
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+char nm_test_var;
-+void nm_test_func(){}
-+#ifdef __cplusplus
-+}
-+#endif
-+int main(){nm_test_var='a';nm_test_func();return(0);}
-+EOF
-+
-+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
-+ # Now try to grab the symbols.
-+ nlist=conftest.nm
-+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
-+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && test -s "$nlist"; then
-+ # Try sorting and uniquifying the output.
-+ if sort "$nlist" | uniq > "$nlist"T; then
-+ mv -f "$nlist"T "$nlist"
-+ else
-+ rm -f "$nlist"T
-+ fi
-+
-+ # Make sure that we snagged all the symbols we need.
-+ if egrep ' nm_test_var$' "$nlist" >/dev/null; then
-+ if egrep ' nm_test_func$' "$nlist" >/dev/null; then
-+ cat <<EOF > conftest.$ac_ext
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+EOF
-+ # Now generate the symbol file.
-+ eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
-+
-+ cat <<EOF >> conftest.$ac_ext
-+#if defined (__STDC__) && __STDC__
-+# define lt_ptr void *
-+#else
-+# define lt_ptr char *
-+# define const
-+#endif
-+
-+/* The mapping between symbol names and symbols. */
-+const struct {
-+ const char *name;
-+ lt_ptr address;
-+}
-+lt_preloaded_symbols[] =
-+{
-+EOF
-+ sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
-+ cat <<\EOF >> conftest.$ac_ext
-+ {0, (lt_ptr) 0}
-+};
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+EOF
-+ # Now try linking the two files.
-+ mv conftest.$ac_objext conftstm.$ac_objext
-+ save_LIBS="$LIBS"
-+ save_CFLAGS="$CFLAGS"
-+ LIBS="conftstm.$ac_objext"
-+ CFLAGS="$CFLAGS$no_builtin_flag"
-+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && test -s conftest$ac_exeext; then
-+ pipe_works=yes
-+ fi
-+ LIBS="$save_LIBS"
-+ CFLAGS="$save_CFLAGS"
-+ else
-+ echo "cannot find nm_test_func in $nlist" >&5
-+ fi
-+ else
-+ echo "cannot find nm_test_var in $nlist" >&5
-+ fi
-+ else
-+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-+ fi
-+ else
-+ echo "$progname: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ fi
-+ rm -f conftest* conftst*
-+
-+ # Do not use the global_symbol_pipe unless it works.
-+ if test "$pipe_works" = yes; then
-+ break
-+ else
-+ lt_cv_sys_global_symbol_pipe=
-+ fi
-+done
-+
-+fi
-+
-+global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
-+if test -z "$lt_cv_sys_global_symbol_pipe"; then
-+ global_symbol_to_cdecl=
-+ global_symbol_to_c_name_address=
-+else
-+ global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
-+ global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
-+fi
-+if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
-+then
-+ echo "$as_me:$LINENO: result: failed" >&5
-+echo "${ECHO_T}failed" >&6
-+else
-+ echo "$as_me:$LINENO: result: ok" >&5
-+echo "${ECHO_T}ok" >&6
-+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
-+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=
-+fi
-+if test -z "$CPP"; then
-+ if test "${ac_cv_prog_CPP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Double quotes because CPP needs to be expanded
-+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-+ do
-+ ac_preproc_ok=false
-+for ac_c_preproc_warn_flag in '' yes
-+do
-+ # Use a header file that comes with gcc, so configuring glibc
-+ # with a fresh cross-compiler works.
-+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ # <limits.h> exists even on freestanding compilers.
-+ # On the NeXT, cc -E runs the code through the compiler's parser,
-+ # not just through cpp. "Syntax error" is here to catch this case.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@ifdef __STDC__
-+@%:@ include <limits.h>
-+@%:@else
-+@%:@ include <assert.h>
-+@%:@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
-+ ac_status=$?
-+ 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
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+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
-+ # can be detected and how.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+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
-+ ac_status=$?
-+ 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
-+ # Broken: success on invalid input.
-+continue
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Passes both tests.
-+ac_preproc_ok=:
-+break
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+done
-+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-+rm -f conftest.err conftest.$ac_ext
-+if $ac_preproc_ok; then
-+ break
-+fi
-+
-+ done
-+ ac_cv_prog_CPP=$CPP
-+
-+fi
-+ CPP=$ac_cv_prog_CPP
-+else
-+ ac_cv_prog_CPP=$CPP
-+fi
-+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
-+ # Use a header file that comes with gcc, so configuring glibc
-+ # with a fresh cross-compiler works.
-+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ # <limits.h> exists even on freestanding compilers.
-+ # On the NeXT, cc -E runs the code through the compiler's parser,
-+ # not just through cpp. "Syntax error" is here to catch this case.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@ifdef __STDC__
-+@%:@ include <limits.h>
-+@%:@else
-+@%:@ include <assert.h>
-+@%:@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
-+ ac_status=$?
-+ 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
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+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
-+ # can be detected and how.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+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
-+ ac_status=$?
-+ 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
-+ # Broken: success on invalid input.
-+continue
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Passes both tests.
-+ac_preproc_ok=:
-+break
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+done
-+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-+rm -f conftest.err conftest.$ac_ext
-+if $ac_preproc_ok; then
-+ :
-+else
-+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-+See \`config.log' for more details." >&2;}
-+ { (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
-+
-+
-+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 $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'
-+ 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: 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 { (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>
-+
-+_ACEOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ $EGREP "memchr" >/dev/null 2>&1; then
-+ :
-+else
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # ISC 2.0.2 stdlib.h does not declare free, 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 <stdlib.h>
-+
-+_ACEOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ $EGREP "free" >/dev/null 2>&1; then
-+ :
-+else
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-+ if test "$cross_compiling" = yes; then
-+ :
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <ctype.h>
-+#if ((' ' & 0x0FF) == 0x020)
-+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-+#else
-+# define ISLOWER(c) \
-+ (('a' <= (c) && (c) <= 'i') \
-+ || ('j' <= (c) && (c) <= 'r') \
-+ || ('s' <= (c) && (c) <= 'z'))
-+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-+#endif
-+
-+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-+int
-+main ()
-+{
-+ int i;
-+ for (i = 0; i < 256; i++)
-+ if (XOR (islower (i), ISLOWER (i))
-+ || toupper (i) != TOUPPER (i))
-+ exit(2);
-+ exit (0);
-+}
-+_ACEOF
-+rm -f conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ :
-+else
-+ echo "$as_me: program exited with status $ac_status" >&5
-+echo "$as_me: failed program was:" >&5
-+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
-+fi
-+fi
-+fi
-+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
-+@%:@define STDC_HEADERS 1
-+_ACEOF
-+
-+fi
-+
-+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.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 $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. */
-+$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
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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
-+ eval "$as_ac_Header=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_Header=no"
-+fi
-+rm -f 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
-+if test `eval echo '${'$as_ac_Header'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+
-+done
-+
-+
-+
-+for ac_header in dlfcn.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
-+ 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
-+else
-+ # Is the header compilable?
-+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
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$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
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_header_compiler=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+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
-+
-+# Is the header present?
-+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
-+cat confdefs.h >>conftest.$ac_ext
-+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
-+ ac_status=$?
-+ 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
-+ ac_header_preproc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+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
-+
-+# So? What about this header?
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-+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 $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
-+
-+fi
-+if test `eval echo '${'$as_ac_Header'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+
-+done
-+
-+
-+
-+
-+
-+
-+# Only perform the check for file, if the check method requires it
-+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
-+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $MAGIC_CMD in
-+ /*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-+ ;;
-+ ?:/*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-+ ;;
-+ *)
-+ ac_save_MAGIC_CMD="$MAGIC_CMD"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+ ac_dummy="/usr/bin:$PATH"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/${ac_tool_prefix}file; then
-+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-+ if test -n "$file_magic_test_file"; then
-+ case $deplibs_check_method in
-+ "file_magic "*)
-+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-+ egrep "$file_magic_regex" > /dev/null; then
-+ :
-+ else
-+ cat <<EOF 1>&2
-+
-+*** Warning: the command libtool uses to detect shared libraries,
-+*** $file_magic_cmd, produces output that libtool cannot recognize.
-+*** The result is that libtool may fail to recognize shared libraries
-+*** as such. This will affect the creation of libtool libraries that
-+*** depend on shared libraries, but programs linked with such libtool
-+*** libraries will work regardless of this problem. Nevertheless, you
-+*** may want to report the problem to your system manager and/or to
-+*** bug-libtool@gnu.org
-+
-+EOF
-+ fi ;;
-+ esac
-+ fi
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ MAGIC_CMD="$ac_save_MAGIC_CMD"
-+ ;;
-+esac
-+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
-+else
-+ 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
-+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $MAGIC_CMD in
-+ /*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-+ ;;
-+ ?:/*)
-+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-+ ;;
-+ *)
-+ ac_save_MAGIC_CMD="$MAGIC_CMD"
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+ ac_dummy="/usr/bin:$PATH"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/file; then
-+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
-+ if test -n "$file_magic_test_file"; then
-+ case $deplibs_check_method in
-+ "file_magic "*)
-+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
-+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-+ egrep "$file_magic_regex" > /dev/null; then
-+ :
-+ else
-+ cat <<EOF 1>&2
-+
-+*** Warning: the command libtool uses to detect shared libraries,
-+*** $file_magic_cmd, produces output that libtool cannot recognize.
-+*** The result is that libtool may fail to recognize shared libraries
-+*** as such. This will affect the creation of libtool libraries that
-+*** depend on shared libraries, but programs linked with such libtool
-+*** libraries will work regardless of this problem. Nevertheless, you
-+*** may want to report the problem to your system manager and/or to
-+*** bug-libtool@gnu.org
-+
-+EOF
-+ fi ;;
-+ esac
-+ fi
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ MAGIC_CMD="$ac_save_MAGIC_CMD"
-+ ;;
-+esac
-+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
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ else
-+ MAGIC_CMD=:
-+ fi
-+fi
-+
-+ fi
-+ ;;
-+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
-+if test "${ac_cv_prog_RANLIB+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$RANLIB"; then
-+ ac_cv_prog_RANLIB="$RANLIB" # 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_RANLIB="${ac_tool_prefix}ranlib"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+RANLIB=$ac_cv_prog_RANLIB
-+if test -n "$RANLIB"; then
-+ 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
-+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
-+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_RANLIB"; then
-+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_RANLIB="ranlib"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ 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
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ RANLIB=$ac_ct_RANLIB
-+else
-+ RANLIB="$ac_cv_prog_RANLIB"
-+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
-+if test "${ac_cv_prog_STRIP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$STRIP"; then
-+ ac_cv_prog_STRIP="$STRIP" # 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_STRIP="${ac_tool_prefix}strip"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+STRIP=$ac_cv_prog_STRIP
-+if test -n "$STRIP"; then
-+ 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
-+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
-+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_STRIP"; then
-+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # 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_STRIP="strip"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ 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
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ STRIP=$ac_ct_STRIP
-+else
-+ STRIP="$ac_cv_prog_STRIP"
-+fi
-+
-+
-+enable_dlopen=no
-+enable_win32_dll=no
-+
-+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
-+if test "${enable_libtool_lock+set}" = set; then
-+ enableval="$enable_libtool_lock"
-+
-+fi;
-+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-+
-+# Some flags need to be propagated to the compiler or linker for good
-+# libtool support.
-+case $host in
-+*-*-irix6*)
-+ # Find out which ABI we are using.
-+ echo '#line __oline__ "configure"' > conftest.$ac_ext
-+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
-+ case `/usr/bin/file conftest.$ac_objext` in
-+ *32-bit*)
-+ LD="${LD-ld} -32"
-+ ;;
-+ *N32*)
-+ LD="${LD-ld} -n32"
-+ ;;
-+ *64-bit*)
-+ LD="${LD-ld} -64"
-+ ;;
-+ esac
-+ fi
-+ rm -rf conftest*
-+ ;;
-+
-+*-*-sco3.2v5*)
-+ # 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
-+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'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+ 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 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
-+ 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
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext 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
-+
-+fi
-+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"
-+ fi
-+ ;;
-+
-+
-+esac
-+
-+# Sed substitution that helps us do robust quoting. It backslashifies
-+# metacharacters that are still active within double-quoted strings.
-+Xsed='sed -e s/^X//'
-+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
-+
-+# Same as above, but do not quote variable references.
-+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
-+
-+# Sed substitution to delay expansion of an escaped shell variable in a
-+# double_quote_subst'ed string.
-+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-+
-+# Constants:
-+rm="rm -f"
-+
-+# Global variables:
-+default_ofile=libtool
-+can_build_shared=yes
-+
-+# All known linkers require a `.a' archive for static linking (except M$VC,
-+# which needs '.lib').
-+libext=a
-+ltmain="$ac_aux_dir/ltmain.sh"
-+ofile="$default_ofile"
-+with_gnu_ld="$lt_cv_prog_gnu_ld"
-+need_locks="$enable_libtool_lock"
-+
-+old_CC="$CC"
-+old_CFLAGS="$CFLAGS"
-+
-+# Set sane defaults for various variables
-+test -z "$AR" && AR=ar
-+test -z "$AR_FLAGS" && AR_FLAGS=cru
-+test -z "$AS" && AS=as
-+test -z "$CC" && CC=cc
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+test -z "$LD" && LD=ld
-+test -z "$LN_S" && LN_S="ln -s"
-+test -z "$MAGIC_CMD" && MAGIC_CMD=file
-+test -z "$NM" && NM=nm
-+test -z "$OBJDUMP" && OBJDUMP=objdump
-+test -z "$RANLIB" && RANLIB=:
-+test -z "$STRIP" && STRIP=:
-+test -z "$ac_objext" && ac_objext=o
-+
-+if test x"$host" != x"$build"; then
-+ ac_tool_prefix=${host_alias}-
-+else
-+ ac_tool_prefix=
-+fi
-+
-+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
-+case $host_os in
-+linux-gnu*) ;;
-+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
-+esac
-+
-+case $host_os in
-+aix3*)
-+ # AIX sometimes has problems with the GCC collect2 program. For some
-+ # reason, if we set the COLLECT_NAMES environment variable, the problems
-+ # vanish in a puff of smoke.
-+ if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+ fi
-+ ;;
-+esac
-+
-+# Determine commands to create old-style static archives.
-+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
-+old_postinstall_cmds='chmod 644 $oldlib'
-+old_postuninstall_cmds=
-+
-+if test -n "$RANLIB"; then
-+ case $host_os in
-+ openbsd*)
-+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ *)
-+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-+ ;;
-+ esac
-+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-+fi
-+
-+# Allow CC to be a program name with arguments.
-+set dummy $CC
-+compiler="$2"
-+
-+echo "$as_me:$LINENO: checking for objdir" >&5
-+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
-+rm -f .libs 2>/dev/null
-+mkdir .libs 2>/dev/null
-+if test -d .libs; then
-+ objdir=.libs
-+else
-+ # MS-DOS does not allow filenames that begin with a dot.
-+ objdir=_libs
-+fi
-+rmdir .libs 2>/dev/null
-+echo "$as_me:$LINENO: result: $objdir" >&5
-+echo "${ECHO_T}$objdir" >&6
-+
-+
-+
-+# Check whether --with-pic or --without-pic was given.
-+if test "${with_pic+set}" = set; then
-+ withval="$with_pic"
-+ pic_mode="$withval"
-+else
-+ pic_mode=default
-+fi;
-+test -z "$pic_mode" && pic_mode=default
-+
-+# We assume here that the value for lt_cv_prog_cc_pic will not be cached
-+# in isolation, and that seeing it set (from the cache) indicates that
-+# the associated values are set (in the cache) correctly too.
-+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
-+if test "${lt_cv_prog_cc_pic+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_prog_cc_pic=
-+ lt_cv_prog_cc_shlib=
-+ lt_cv_prog_cc_wl=
-+ lt_cv_prog_cc_static=
-+ lt_cv_prog_cc_no_builtin=
-+ lt_cv_prog_cc_can_build_shared=$can_build_shared
-+
-+ if test "$GCC" = yes; then
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-static'
-+
-+ case $host_os in
-+ aix*)
-+ # Below there is a dirty hack to force normal static linking with -ldl
-+ # The problem is because libdl dynamically linked with both libc and
-+ # libC (AIX C++ library), which obviously doesn't included in libraries
-+ # list by gcc. This cause undefined symbols with -static flags.
-+ # This hack allows C programs to be linked with "-static -ldl", but
-+ # not sure about C++ programs.
-+ lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
-+ ;;
-+ amigaos*)
-+ # FIXME: we need at least 68020 code to build shared libraries, but
-+ # adding the `-m68020' flag to GCC prevents building anything better,
-+ # like `-m68040'.
-+ lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
-+ ;;
-+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-+ # PIC is the default for these OSes.
-+ ;;
-+ darwin* | rhapsody*)
-+ # PIC is the default on this platform
-+ # Common symbols not allowed in MH_DYLIB files
-+ lt_cv_prog_cc_pic='-fno-common'
-+ ;;
-+ cygwin* | mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_cv_prog_cc_pic='-DDLL_EXPORT'
-+ ;;
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ lt_cv_prog_cc_pic=-Kconform_pic
-+ fi
-+ ;;
-+ *)
-+ lt_cv_prog_cc_pic='-fPIC'
-+ ;;
-+ esac
-+ else
-+ # PORTME Check for PIC flags for the system compiler.
-+ case $host_os in
-+ aix3* | aix4* | aix5*)
-+ lt_cv_prog_cc_wl='-Wl,'
-+ # All AIX code is PIC.
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 now supports IA64 processor
-+ lt_cv_prog_cc_static='-Bstatic'
-+ else
-+ lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
-+ fi
-+ ;;
-+
-+ hpux9* | hpux10* | hpux11*)
-+ # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
-+ lt_cv_prog_cc_pic='+Z'
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-non_shared'
-+ # PIC (with -KPIC) is the default.
-+ ;;
-+
-+ cygwin* | mingw* | pw32* | os2*)
-+ # This hack is so that the source file can tell whether it is being
-+ # built for inclusion in a dll (and should export symbols for example).
-+ lt_cv_prog_cc_pic='-DDLL_EXPORT'
-+ ;;
-+
-+ newsos6)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ ;;
-+
-+ osf3* | osf4* | osf5*)
-+ # All OSF/1 code is PIC.
-+ lt_cv_prog_cc_wl='-Wl,'
-+ lt_cv_prog_cc_static='-non_shared'
-+ ;;
-+
-+ sco3.2v5*)
-+ lt_cv_prog_cc_pic='-Kpic'
-+ lt_cv_prog_cc_static='-dn'
-+ lt_cv_prog_cc_shlib='-belf'
-+ ;;
-+
-+ solaris*)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Wl,'
-+ ;;
-+
-+ sunos4*)
-+ lt_cv_prog_cc_pic='-PIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Qoption ld '
-+ ;;
-+
-+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ lt_cv_prog_cc_pic='-KPIC'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ lt_cv_prog_cc_wl='-Wl,'
-+ ;;
-+
-+ uts4*)
-+ lt_cv_prog_cc_pic='-pic'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ lt_cv_prog_cc_pic='-Kconform_pic'
-+ lt_cv_prog_cc_static='-Bstatic'
-+ fi
-+ ;;
-+
-+ *)
-+ lt_cv_prog_cc_can_build_shared=no
-+ ;;
-+ esac
-+ fi
-+
-+fi
-+
-+if test -z "$lt_cv_prog_cc_pic"; then
-+ echo "$as_me:$LINENO: result: none" >&5
-+echo "${ECHO_T}none" >&6
-+else
-+ echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5
-+echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6
-+
-+ # Check to make sure the pic_flag actually works.
-+ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
-+echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6
-+ if test "${lt_cv_prog_cc_pic_works+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
-+ 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 { (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
-+ case $host_os in
-+ hpux9* | hpux10* | hpux11*)
-+ # On HP-UX, both CC and GCC only warn that PIC is supported... then
-+ # they create non-PIC objects. So, if there were any warnings, we
-+ # assume that PIC is not supported.
-+ if test -s conftest.err; then
-+ lt_cv_prog_cc_pic_works=no
-+ else
-+ lt_cv_prog_cc_pic_works=yes
-+ fi
-+ ;;
-+ *)
-+ lt_cv_prog_cc_pic_works=yes
-+ ;;
-+ esac
-+
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ lt_cv_prog_cc_pic_works=no
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ CFLAGS="$save_CFLAGS"
-+
-+fi
-+
-+
-+ if test "X$lt_cv_prog_cc_pic_works" = Xno; then
-+ lt_cv_prog_cc_pic=
-+ lt_cv_prog_cc_can_build_shared=no
-+ else
-+ lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
-+ fi
-+
-+ echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5
-+echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6
-+fi
-+
-+# Check for any special shared library compilation flags.
-+if test -n "$lt_cv_prog_cc_shlib"; then
-+ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5
-+echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;}
-+ if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then :
-+ else
-+ { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
-+echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
-+ lt_cv_prog_cc_can_build_shared=no
-+ fi
-+fi
-+
-+echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
-+echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6
-+if test "${lt_cv_prog_cc_static_works+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ lt_cv_prog_cc_static_works=no
-+ save_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
-+ 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 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
-+ lt_cv_prog_cc_static_works=yes
-+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
-+ LDFLAGS="$save_LDFLAGS"
-+
-+fi
-+
-+
-+# Belt *and* braces to stop my trousers falling down:
-+test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
-+echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5
-+echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6
-+
-+pic_flag="$lt_cv_prog_cc_pic"
-+special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
-+wl="$lt_cv_prog_cc_wl"
-+link_static_flag="$lt_cv_prog_cc_static"
-+no_builtin_flag="$lt_cv_prog_cc_no_builtin"
-+can_build_shared="$lt_cv_prog_cc_can_build_shared"
-+
-+
-+# Check to see if options -o and -c are simultaneously supported by compiler
-+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-+if test "${lt_cv_compiler_c_o+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+$rm -r conftest 2>/dev/null
-+mkdir conftest
-+cd conftest
-+echo "int some_variable = 0;" > conftest.$ac_ext
-+mkdir out
-+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
-+# that will create temporary files in the current directory regardless of
-+# the output directory. Thus, making CWD read-only will cause this test
-+# to fail, enabling locking or at least warning the user not to do parallel
-+# builds.
-+chmod -w .
-+save_CFLAGS="$CFLAGS"
-+CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
-+compiler_c_o=no
-+if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s out/conftest.err; then
-+ lt_cv_compiler_c_o=no
-+ else
-+ lt_cv_compiler_c_o=yes
-+ fi
-+else
-+ # Append any errors to the config.log.
-+ cat out/conftest.err 1>&5
-+ lt_cv_compiler_c_o=no
-+fi
-+CFLAGS="$save_CFLAGS"
-+chmod u+w .
-+$rm conftest* out/*
-+rmdir out
-+cd ..
-+rmdir conftest
-+$rm -r conftest 2>/dev/null
-+
-+fi
-+
-+compiler_c_o=$lt_cv_compiler_c_o
-+echo "$as_me:$LINENO: result: $compiler_c_o" >&5
-+echo "${ECHO_T}$compiler_c_o" >&6
-+
-+if test x"$compiler_c_o" = x"yes"; then
-+ # Check to see if we can write to a .lo
-+ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5
-+echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6
-+ if test "${lt_cv_compiler_o_lo+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+
-+ lt_cv_compiler_o_lo=no
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -c -o conftest.lo"
-+ save_objext="$ac_objext"
-+ ac_objext=lo
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+int some_variable = 0;
-+ ;
-+ 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
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s conftest.err; then
-+ lt_cv_compiler_o_lo=no
-+ else
-+ lt_cv_compiler_o_lo=yes
-+ 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_objext="$save_objext"
-+ CFLAGS="$save_CFLAGS"
-+
-+fi
-+
-+ compiler_o_lo=$lt_cv_compiler_o_lo
-+ echo "$as_me:$LINENO: result: $compiler_o_lo" >&5
-+echo "${ECHO_T}$compiler_o_lo" >&6
-+else
-+ compiler_o_lo=no
-+fi
-+
-+# Check to see if we can do hard links to lock some files if needed
-+hard_links="nottested"
-+if test "$compiler_c_o" = no && test "$need_locks" != no; then
-+ # do not overwrite the value of need_locks provided by the user
-+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-+ hard_links=yes
-+ $rm conftest*
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ touch conftest.a
-+ ln conftest.a conftest.b 2>&5 || hard_links=no
-+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
-+ echo "$as_me:$LINENO: result: $hard_links" >&5
-+echo "${ECHO_T}$hard_links" >&6
-+ if test "$hard_links" = no; then
-+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-+ need_locks=warn
-+ fi
-+else
-+ need_locks=no
-+fi
-+
-+if test "$GCC" = yes; then
-+ # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
-+ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
-+ echo "int some_variable = 0;" > conftest.$ac_ext
-+ save_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
-+ compiler_rtti_exceptions=no
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+int some_variable = 0;
-+ ;
-+ 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
-+ # The compiler can only warn and ignore the option if not recognized
-+ # So say no if there are warnings
-+ if test -s conftest.err; then
-+ compiler_rtti_exceptions=no
-+ else
-+ compiler_rtti_exceptions=yes
-+ 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
-+ CFLAGS="$save_CFLAGS"
-+ echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5
-+echo "${ECHO_T}$compiler_rtti_exceptions" >&6
-+
-+ if test "$compiler_rtti_exceptions" = "yes"; then
-+ no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
-+ else
-+ no_builtin_flag=' -fno-builtin'
-+ fi
-+fi
-+
-+# See if the linker supports building shared libraries.
-+echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5
-+echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6
-+
-+allow_undefined_flag=
-+no_undefined_flag=
-+need_lib_prefix=unknown
-+need_version=unknown
-+# when you set need_version to no, make sure it does not cause -set_version
-+# flags to be left without arguments
-+archive_cmds=
-+archive_expsym_cmds=
-+old_archive_from_new_cmds=
-+old_archive_from_expsyms_cmds=
-+export_dynamic_flag_spec=
-+whole_archive_flag_spec=
-+thread_safe_flag_spec=
-+hardcode_into_libs=no
-+hardcode_libdir_flag_spec=
-+hardcode_libdir_separator=
-+hardcode_direct=no
-+hardcode_minus_L=no
-+hardcode_shlibpath_var=unsupported
-+runpath_var=
-+link_all_deplibs=unknown
-+always_export_symbols=no
-+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+# include_expsyms should be a list of space-separated symbols to be *always*
-+# included in the symbol list
-+include_expsyms=
-+# exclude_expsyms can be an egrep regular expression of symbols to exclude
-+# it will be wrapped by ` (' and `)$', so one must not match beginning or
-+# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-+# as well as any symbol that contains `d'.
-+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-+# platforms (ab)use it in PIC code, but their linkers get confused if
-+# the symbol is explicitly referenced. Since portable code cannot
-+# rely on this symbol name, it's probably fine to never include it in
-+# preloaded symbol tables.
-+extract_expsyms_cmds=
-+
-+case $host_os in
-+cygwin* | mingw* | pw32*)
-+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ if test "$GCC" != yes; then
-+ with_gnu_ld=no
-+ fi
-+ ;;
-+openbsd*)
-+ with_gnu_ld=no
-+ ;;
-+esac
-+
-+ld_shlibs=yes
-+if test "$with_gnu_ld" = yes; then
-+ # If archive_cmds runs LD, not CC, wlarc should be empty
-+ wlarc='${wl}'
-+
-+ # See if GNU ld supports shared libraries.
-+ case $host_os in
-+ aix3* | aix4* | aix5*)
-+ # On AIX, the GNU linker is very broken
-+ # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
-+ ld_shlibs=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-+*** to be unable to reliably create shared libraries on AIX.
-+*** Therefore, libtool is disabling shared libraries support. If you
-+*** really care for shared libraries, you may want to modify your PATH
-+*** so that a non-GNU linker is found, and then restart.
-+
-+EOF
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+
-+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-+ # that the semantics of dynamic libraries on AmigaOS, at least up
-+ # to version 4, is to share data among multiple programs linked
-+ # with the same dynamic library. Since this doesn't match the
-+ # behavior of shared libraries on other platforms, we can use
-+ # them.
-+ ld_shlibs=no
-+ ;;
-+
-+ beos*)
-+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ allow_undefined_flag=unsupported
-+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-+ # support --undefined. This deserves some investigation. FIXME
-+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+
-+ extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
-+ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
-+ test -f $output_objdir/impgen.exe || (cd $output_objdir && \
-+ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
-+ else $CC -o impgen impgen.c ; fi)~
-+ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
-+
-+ old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
-+
-+ # cygwin and mingw dlls have different entry points and sets of symbols
-+ # to exclude.
-+ # FIXME: what about values for MSVC?
-+ dll_entry=__cygwin_dll_entry@12
-+ dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
-+ case $host_os in
-+ mingw*)
-+ # mingw values
-+ dll_entry=_DllMainCRTStartup@12
-+ dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
-+ ;;
-+ esac
-+
-+ # mingw and cygwin differ, and it's simplest to just exclude the union
-+ # of the two symbol sets.
-+ dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
-+
-+ # recent cygwin and mingw systems supply a stub DllMain which the user
-+ # can override, but on older systems we have to supply one (in ltdll.c)
-+ if test "x$lt_cv_need_dllmain" = "xyes"; then
-+ ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
-+ ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
-+ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
-+ else
-+ ltdll_obj=
-+ ltdll_cmds=
-+ fi
-+
-+ # Extract the symbol export list from an `--export-all' def file,
-+ # then regenerate the def file from the symbol export list, so that
-+ # the compiled dll only exports the symbol export list.
-+ # Be careful not to strip the DATA tag left be newer dlltools.
-+ export_symbols_cmds="$ltdll_cmds"'
-+ $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
-+ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
-+
-+ # If the export-symbols file already is a .def file (1st line
-+ # is EXPORTS), use it as is.
-+ # If DATA tags from a recent dlltool are present, honour them!
-+ archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then
-+ cp $export_symbols $output_objdir/$soname-def;
-+ else
-+ echo EXPORTS > $output_objdir/$soname-def;
-+ _lt_hint=1;
-+ cat $export_symbols | while read symbol; do
-+ set dummy \$symbol;
-+ case \$# in
-+ 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
-+ 4) echo " \$2 \$3 \$4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;;
-+ *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;;
-+ esac;
-+ _lt_hint=`expr 1 + \$_lt_hint`;
-+ done;
-+ fi~
-+ '"$ltdll_cmds"'
-+ $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
-+ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
-+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
-+ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
-+ ;;
-+
-+ netbsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-+ wlarc=
-+ else
-+ archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ fi
-+ ;;
-+
-+ solaris* | sysv5*)
-+ if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
-+ ld_shlibs=no
-+ cat <<EOF 1>&2
-+
-+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-+*** create shared libraries on Solaris systems. Therefore, libtool
-+*** is disabling shared libraries support. We urge you to upgrade GNU
-+*** binutils to release 2.9.1 or newer. Another option is to modify
-+*** your PATH or compiler configuration so that the native linker is
-+*** used, and then restart.
-+
-+EOF
-+ elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+
-+ sunos4*)
-+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ wlarc=
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ *)
-+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+ else
-+ ld_shlibs=no
-+ fi
-+ ;;
-+ esac
-+
-+ if test "$ld_shlibs" = yes; then
-+ runpath_var=LD_RUN_PATH
-+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
-+ export_dynamic_flag_spec='${wl}--export-dynamic'
-+ case $host_os in
-+ cygwin* | mingw* | pw32*)
-+ # dlltool doesn't understand --whole-archive et. al.
-+ whole_archive_flag_spec=
-+ ;;
-+ *)
-+ # ancient GNU ld didn't support --whole-archive et. al.
-+ if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
-+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+ else
-+ whole_archive_flag_spec=
-+ fi
-+ ;;
-+ esac
-+ fi
-+else
-+ # PORTME fill in a description of your system's linker (not GNU ld)
-+ case $host_os in
-+ aix3*)
-+ allow_undefined_flag=unsupported
-+ always_export_symbols=yes
-+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-+ # Note: this linker hardcodes the directories in LIBPATH if there
-+ # are no directories specified by -L.
-+ hardcode_minus_L=yes
-+ if test "$GCC" = yes && test -z "$link_static_flag"; then
-+ # Neither direct hardcoding nor static linking is supported with a
-+ # broken collect2.
-+ hardcode_direct=unsupported
-+ fi
-+ ;;
-+
-+ aix4* | aix5*)
-+ if test "$host_cpu" = ia64; then
-+ # On IA64, the linker does run time linking by default, so we don't
-+ # have to do anything special.
-+ aix_use_runtimelinking=no
-+ exp_sym_flag='-Bexport'
-+ no_entry_flag=""
-+ else
-+ aix_use_runtimelinking=no
-+
-+ # Test if we are trying to use run time linking or normal
-+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-+ # need to do runtime linking.
-+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-+ for ld_flag in $LDFLAGS; do
-+ case $ld_flag in
-+ *-brtl*)
-+ aix_use_runtimelinking=yes
-+ break
-+ ;;
-+ esac
-+ done
-+ esac
-+
-+ exp_sym_flag='-bexport'
-+ no_entry_flag='-bnoentry'
-+ fi
-+
-+ # When large executables or shared objects are built, AIX ld can
-+ # have problems creating the table of contents. If linking a library
-+ # or program results in "error TOC overflow" add -mminimal-toc to
-+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
-+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-+
-+ hardcode_direct=yes
-+ archive_cmds=''
-+ hardcode_libdir_separator=':'
-+ if test "$GCC" = yes; then
-+ case $host_os in aix4.[012]|aix4.[012].*)
-+ collect2name=`${CC} -print-prog-name=collect2`
-+ if test -f "$collect2name" && \
-+ strings "$collect2name" | grep resolve_lib_name >/dev/null
-+ then
-+ # We have reworked collect2
-+ hardcode_direct=yes
-+ else
-+ # We have old collect2
-+ hardcode_direct=unsupported
-+ # It fails to find uninstalled libraries when the uninstalled
-+ # path is not listed in the libpath. Setting hardcode_minus_L
-+ # to unsupported forces relinking
-+ hardcode_minus_L=yes
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_libdir_separator=
-+ fi
-+ esac
-+
-+ shared_flag='-shared'
-+ else
-+ # not using gcc
-+ if test "$host_cpu" = ia64; then
-+ shared_flag='${wl}-G'
-+ else
-+ if test "$aix_use_runtimelinking" = yes; then
-+ shared_flag='${wl}-G'
-+ else
-+ shared_flag='${wl}-bM:SRE'
-+ fi
-+ fi
-+ fi
-+
-+ # It seems that -bexpall can do strange things, so it is better to
-+ # generate a list of symbols to export.
-+ always_export_symbols=yes
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # Warning - without using the other runtime loading flags (-brtl),
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='-berok'
-+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
-+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+ else
-+ if test "$host_cpu" = ia64; then
-+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-+ allow_undefined_flag="-z nodefs"
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-+ else
-+ hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
-+ # Warning - without using the other run time loading flags,
-+ # -berok will link without error, but may produce a broken library.
-+ allow_undefined_flag='${wl}-berok'
-+ # This is a bit strange, but is similar to how AIX traditionally builds
-+ # it's shared libraries.
-+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $output_objdir/$libname$release.a $output_objdir/$soname'
-+ fi
-+ fi
-+ ;;
-+
-+ amigaos*)
-+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ # see comment about different semantics on the GNU ld section
-+ ld_shlibs=no
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ # When not using gcc, we currently assume that we are using
-+ # Microsoft Visual C++.
-+ # hardcode_libdir_flag_spec is actually meaningless, as there is
-+ # no search path for DLLs.
-+ hardcode_libdir_flag_spec=' '
-+ allow_undefined_flag=unsupported
-+ # Tell ltmain to make .lib files, not .a files.
-+ libext=lib
-+ # FIXME: Setting linknames here is a bad hack.
-+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-+ # The linker will automatically build a .lib file if we build a DLL.
-+ old_archive_from_new_cmds='true'
-+ # FIXME: Should let the user specify the lib program.
-+ old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
-+ fix_srcfile_path='`cygpath -w "$srcfile"`'
-+ ;;
-+
-+ darwin* | rhapsody*)
-+ case "$host_os" in
-+ rhapsody* | darwin1.[012])
-+ allow_undefined_flag='-undefined suppress'
-+ ;;
-+ *) # Darwin 1.3 on
-+ allow_undefined_flag='-flat_namespace -undefined suppress'
-+ ;;
-+ esac
-+ # FIXME: Relying on posixy $() will cause problems for
-+ # cross-compilation, but unfortunately the echo tests do not
-+ # yet detect zsh echo's removal of \ escapes. Also zsh mangles
-+ # `"' quotes if we put them in here... so don't!
-+ archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)'
-+ # We need to add '_' to the symbols in $export_symbols first
-+ #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ whole_archive_flag_spec='-all_load $convenience'
-+ ;;
-+
-+ freebsd1*)
-+ ld_shlibs=no
-+ ;;
-+
-+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-+ # support. Future versions do this automatically, but an explicit c++rt0.o
-+ # does not break anything, and helps significantly (at the cost of a little
-+ # extra space).
-+ freebsd2.2*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-+ freebsd2*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-+ freebsd*)
-+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ hpux9* | hpux10* | hpux11*)
-+ case $host_os in
-+ hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
-+ *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
-+ esac
-+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes # Not in the search PATH, but as the default
-+ # location of the library.
-+ export_dynamic_flag_spec='${wl}-E'
-+ ;;
-+
-+ irix5* | irix6* | nonstopux*)
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ else
-+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator=:
-+ link_all_deplibs=yes
-+ ;;
-+
-+ netbsd*)
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
-+ else
-+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
-+ fi
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ newsos6)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ openbsd*)
-+ hardcode_direct=yes
-+ hardcode_shlibpath_var=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ export_dynamic_flag_spec='${wl}-E'
-+ else
-+ case "$host_os" in
-+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ ;;
-+ *)
-+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-+ ;;
-+ esac
-+ fi
-+ ;;
-+
-+ os2*)
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_minus_L=yes
-+ allow_undefined_flag=unsupported
-+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-+ ;;
-+
-+ osf3*)
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ else
-+ allow_undefined_flag=' -expect_unresolved \*'
-+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ fi
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ hardcode_libdir_separator=:
-+ ;;
-+
-+ osf4* | osf5*) # as osf3* with the addition of -msym flag
-+ if test "$GCC" = yes; then
-+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+ else
-+ allow_undefined_flag=' -expect_unresolved \*'
-+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
-+
-+ #Both c and cxx compiler support -rpath directly
-+ hardcode_libdir_flag_spec='-rpath $libdir'
-+ fi
-+ hardcode_libdir_separator=:
-+ ;;
-+
-+ sco3.2v5*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ export_dynamic_flag_spec='${wl}-Bexport'
-+ ;;
-+
-+ solaris*)
-+ # gcc --version < 3.0 without binutils cannot create self contained
-+ # shared libraries reliably, requiring libgcc.a to resolve some of
-+ # the object symbols generated in some cases. Libraries that use
-+ # assert need libgcc.a to resolve __eprintf, for example. Linking
-+ # a copy of libgcc.a into every shared library to guarantee resolving
-+ # such symbols causes other problems: According to Tim Van Holder
-+ # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
-+ # (to the application) exception stack for one thing.
-+ no_undefined_flag=' -z defs'
-+ if test "$GCC" = yes; then
-+ case `$CC --version 2>/dev/null` in
-+ [12].*)
-+ cat <<EOF 1>&2
-+
-+*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
-+*** create self contained shared libraries on Solaris systems, without
-+*** introducing a dependency on libgcc.a. Therefore, libtool is disabling
-+*** -no-undefined support, which will at least allow you to build shared
-+*** libraries. However, you may find that when you link such libraries
-+*** into an application without using GCC, you have to manually add
-+*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to
-+*** upgrade to a newer version of GCC. Another option is to rebuild your
-+*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
-+
-+EOF
-+ no_undefined_flag=
-+ ;;
-+ esac
-+ fi
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec='-R$libdir'
-+ hardcode_shlibpath_var=no
-+ case $host_os in
-+ solaris2.[0-5] | solaris2.[0-5].*) ;;
-+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
-+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
-+ esac
-+ link_all_deplibs=yes
-+ ;;
-+
-+ sunos4*)
-+ if test "x$host_vendor" = xsequent; then
-+ # Use $CC to link under sequent, because it throws in some extra .o
-+ # files that make .init and .fini sections work.
-+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-+ fi
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_direct=yes
-+ hardcode_minus_L=yes
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv4)
-+ case $host_vendor in
-+ sni)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes # is this really true???
-+ ;;
-+ siemens)
-+ ## LD is ld it makes a PLAMLIB
-+ ## CC just makes a GrossModule.
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ reload_cmds='$CC -r -o $output$reload_objs'
-+ hardcode_direct=no
-+ ;;
-+ motorola)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-+ ;;
-+ esac
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv4.3*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ export_dynamic_flag_spec='-Bexport'
-+ ;;
-+
-+ sysv5*)
-+ no_undefined_flag=' -z text'
-+ # $CC -shared without GNU ld will not create a library from C++
-+ # object files and a static libstdc++, better avoid it by now
-+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-+ hardcode_libdir_flag_spec=
-+ hardcode_shlibpath_var=no
-+ runpath_var='LD_RUN_PATH'
-+ ;;
-+
-+ uts4*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ dgux*)
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_libdir_flag_spec='-L$libdir'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ sysv4*MP*)
-+ if test -d /usr/nec; then
-+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_shlibpath_var=no
-+ runpath_var=LD_RUN_PATH
-+ hardcode_runpath_var=yes
-+ ld_shlibs=yes
-+ fi
-+ ;;
-+
-+ sysv4.2uw2*)
-+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-+ hardcode_direct=yes
-+ hardcode_minus_L=no
-+ hardcode_shlibpath_var=no
-+ hardcode_runpath_var=yes
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+
-+ sysv5uw7* | unixware7*)
-+ no_undefined_flag='${wl}-z ${wl}text'
-+ if test "$GCC" = yes; then
-+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ else
-+ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+ fi
-+ runpath_var='LD_RUN_PATH'
-+ hardcode_shlibpath_var=no
-+ ;;
-+
-+ *)
-+ ld_shlibs=no
-+ ;;
-+ esac
-+fi
-+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
-+echo "${ECHO_T}$ld_shlibs" >&6
-+test "$ld_shlibs" = no && can_build_shared=no
-+
-+# Check hardcoding attributes.
-+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
-+hardcode_action=
-+if test -n "$hardcode_libdir_flag_spec" || \
-+ test -n "$runpath_var"; then
-+
-+ # We can hardcode non-existant directories.
-+ if test "$hardcode_direct" != no &&
-+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
-+ # have to relink, otherwise we might link with an installed library
-+ # when we should be linking with a yet-to-be-installed one
-+ ## test "$hardcode_shlibpath_var" != no &&
-+ test "$hardcode_minus_L" != no; then
-+ # Linking always hardcodes the temporary library directory.
-+ hardcode_action=relink
-+ else
-+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
-+ hardcode_action=immediate
-+ fi
-+else
-+ # We cannot hardcode anything, or else we can only hardcode existing
-+ # directories.
-+ hardcode_action=unsupported
-+fi
-+echo "$as_me:$LINENO: result: $hardcode_action" >&5
-+echo "${ECHO_T}$hardcode_action" >&6
-+
-+striplib=
-+old_striplib=
-+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+reload_cmds='$LD$reload_flag -o $output$reload_objs'
-+test -z "$deplibs_check_method" && deplibs_check_method=unknown
-+
-+# PORTME Fill in your ld.so characteristics
-+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
-+library_names_spec=
-+libname_spec='lib$name'
-+soname_spec=
-+postinstall_cmds=
-+postuninstall_cmds=
-+finish_cmds=
-+finish_eval=
-+shlibpath_var=
-+shlibpath_overrides_runpath=unknown
-+version_type=none
-+dynamic_linker="$host_os ld.so"
-+sys_lib_dlsearch_path_spec="/lib /usr/lib"
-+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+
-+case $host_os in
-+aix3*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix $libname.a'
-+ shlibpath_var=LIBPATH
-+
-+ # AIX has no versioning support, so we append a major version to the name.
-+ soname_spec='${libname}${release}.so$major'
-+ ;;
-+
-+aix4* | aix5*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ hardcode_into_libs=yes
-+ if test "$host_cpu" = ia64; then
-+ # AIX 5 supports IA64
-+ library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ else
-+ # With GCC up to 2.95.x, collect2 would create an import file
-+ # for dependence libraries. The import file would start with
-+ # the line `#! .'. This would cause the generated library to
-+ # depend on `.', always an invalid library. This was fixed in
-+ # development snapshots of GCC prior to 3.0.
-+ case $host_os in
-+ aix4 | aix4.[01] | aix4.[01].*)
-+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-+ echo ' yes '
-+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-+ :
-+ else
-+ can_build_shared=no
-+ fi
-+ ;;
-+ esac
-+ # AIX (on Power*) has no versioning support, so currently we can
-+ # not hardcode correct soname into executable. Probably we can
-+ # add versioning support to collect2, so additional links can
-+ # be useful in future.
-+ if test "$aix_use_runtimelinking" = yes; then
-+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-+ # instead of lib<name>.a to let people know that these are not
-+ # typical AIX shared libraries.
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ else
-+ # We preserve .a as extension for shared libraries through AIX4.2
-+ # and later when we are not doing run time linking.
-+ library_names_spec='${libname}${release}.a $libname.a'
-+ soname_spec='${libname}${release}.so$major'
-+ fi
-+ shlibpath_var=LIBPATH
-+ fi
-+ hardcode_into_libs=yes
-+ ;;
-+
-+amigaos*)
-+ library_names_spec='$libname.ixlibrary $libname.a'
-+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
-+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
-+ ;;
-+
-+beos*)
-+ library_names_spec='${libname}.so'
-+ dynamic_linker="$host_os ld.so"
-+ shlibpath_var=LIBRARY_PATH
-+ ;;
-+
-+bsdi4*)
-+ version_type=linux
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-+ export_dynamic_flag_spec=-rdynamic
-+ # the default ld.so.conf also contains /usr/contrib/lib and
-+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-+ # libtool to hard-code these into programs
-+ ;;
-+
-+cygwin* | mingw* | pw32*)
-+ version_type=windows
-+ need_version=no
-+ need_lib_prefix=no
-+ case $GCC,$host_os in
-+ yes,cygwin*)
-+ library_names_spec='$libname.dll.a'
-+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
-+ postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
-+ dldir=$destdir/`dirname \$dlpath`~
-+ test -d \$dldir || mkdir -p \$dldir~
-+ $install_prog .libs/$dlname \$dldir/$dlname'
-+ postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+ dlpath=$dir/\$dldll~
-+ $rm \$dlpath'
-+ ;;
-+ yes,mingw*)
-+ library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
-+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"`
-+ ;;
-+ yes,pw32*)
-+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll'
-+ ;;
-+ *)
-+ library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
-+ ;;
-+ esac
-+ dynamic_linker='Win32 ld.exe'
-+ # FIXME: first we should search . and the directory the executable is in
-+ shlibpath_var=PATH
-+ ;;
-+
-+darwin* | rhapsody*)
-+ dynamic_linker="$host_os dyld"
-+ version_type=darwin
-+ need_lib_prefix=no
-+ need_version=no
-+ # FIXME: Relying on posixy $() will cause problems for
-+ # cross-compilation, but unfortunately the echo tests do not
-+ # yet detect zsh echo's removal of \ escapes.
-+ library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
-+ soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
-+ shlibpath_overrides_runpath=yes
-+ shlibpath_var=DYLD_LIBRARY_PATH
-+ ;;
-+
-+freebsd1*)
-+ dynamic_linker=no
-+ ;;
-+
-+freebsd*-gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ dynamic_linker='GNU/FreeBSD ld.so'
-+ ;;
-+
-+freebsd*)
-+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
-+ version_type=freebsd-$objformat
-+ case $version_type in
-+ freebsd-elf*)
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
-+ need_version=no
-+ need_lib_prefix=no
-+ ;;
-+ freebsd-*)
-+ library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
-+ need_version=yes
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_os in
-+ freebsd2*)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=no
-+ hardcode_into_libs=yes
-+ ;;
-+ esac
-+ ;;
-+
-+gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ hardcode_into_libs=yes
-+ ;;
-+
-+hpux9* | hpux10* | hpux11*)
-+ # Give a soname corresponding to the major version so that dld.sl refuses to
-+ # link against other versions.
-+ dynamic_linker="$host_os dld.sl"
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_var=SHLIB_PATH
-+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-+ library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
-+ soname_spec='${libname}${release}.sl$major'
-+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
-+ postinstall_cmds='chmod 555 $lib'
-+ ;;
-+
-+irix5* | irix6* | nonstopux*)
-+ case $host_os in
-+ nonstopux*) version_type=nonstopux ;;
-+ *) version_type=irix ;;
-+ esac
-+ need_lib_prefix=no
-+ need_version=no
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
-+ case $host_os in
-+ irix5* | nonstopux*)
-+ libsuff= shlibsuff=
-+ ;;
-+ *)
-+ case $LD in # libtool.m4 will add one of these switches to LD
-+ *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
-+ *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
-+ *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
-+ *) libsuff= shlibsuff= libmagic=never-match;;
-+ esac
-+ ;;
-+ esac
-+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-+ ;;
-+
-+# No shared lib support for Linux oldld, aout, or coff.
-+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
-+ dynamic_linker=no
-+ ;;
-+
-+# This must be Linux ELF.
-+linux-gnu*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=no
-+ # This implies no fast_install, which is unacceptable.
-+ # Some rework will be needed to allow for fast_install
-+ # before this can be enabled.
-+ hardcode_into_libs=yes
-+
-+ # We used to test for /lib/ld.so.1 and disable shared libraries on
-+ # powerpc, because MkLinux only supported shared libraries with the
-+ # GNU dynamic linker. Since this was broken with cross compilers,
-+ # most powerpc-linux boxes support dynamic linking these days and
-+ # people can always --disable-shared, the test was removed, and we
-+ # assume the GNU/Linux dynamic linker is in use.
-+ dynamic_linker='GNU/Linux ld.so'
-+ ;;
-+
-+netbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ dynamic_linker='NetBSD (a.out) ld.so'
-+ else
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
-+ soname_spec='${libname}${release}.so$major'
-+ dynamic_linker='NetBSD ld.elf_so'
-+ fi
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ ;;
-+
-+newsos6)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+
-+openbsd*)
-+ version_type=sunos
-+ need_lib_prefix=no
-+ need_version=no
-+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-+ case "$host_os" in
-+ openbsd2.[89] | openbsd2.[89].*)
-+ shlibpath_overrides_runpath=no
-+ ;;
-+ *)
-+ shlibpath_overrides_runpath=yes
-+ ;;
-+ esac
-+ else
-+ shlibpath_overrides_runpath=yes
-+ fi
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+os2*)
-+ libname_spec='$name'
-+ need_lib_prefix=no
-+ library_names_spec='$libname.dll $libname.a'
-+ dynamic_linker='OS/2 ld.exe'
-+ shlibpath_var=LIBPATH
-+ ;;
-+
-+osf3* | osf4* | osf5*)
-+ version_type=osf
-+ need_version=no
-+ need_lib_prefix=no
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-+ hardcode_into_libs=yes
-+ ;;
-+
-+sco3.2v5*)
-+ version_type=osf
-+ soname_spec='${libname}${release}.so$major'
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+solaris*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ hardcode_into_libs=yes
-+ # ldd complains unless libraries are executable
-+ postinstall_cmds='chmod +x $lib'
-+ ;;
-+
-+sunos4*)
-+ version_type=sunos
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
-+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ shlibpath_overrides_runpath=yes
-+ if test "$with_gnu_ld" = yes; then
-+ need_lib_prefix=no
-+ fi
-+ need_version=yes
-+ ;;
-+
-+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ case $host_vendor in
-+ sni)
-+ shlibpath_overrides_runpath=no
-+ need_lib_prefix=no
-+ export_dynamic_flag_spec='${wl}-Blargedynsym'
-+ runpath_var=LD_RUN_PATH
-+ ;;
-+ siemens)
-+ need_lib_prefix=no
-+ ;;
-+ motorola)
-+ need_lib_prefix=no
-+ need_version=no
-+ shlibpath_overrides_runpath=no
-+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-+ ;;
-+ esac
-+ ;;
-+
-+uts4*)
-+ version_type=linux
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+dgux*)
-+ version_type=linux
-+ need_lib_prefix=no
-+ need_version=no
-+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+ soname_spec='${libname}${release}.so$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ ;;
-+
-+sysv4*MP*)
-+ if test -d /usr/nec ;then
-+ version_type=linux
-+ library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
-+ soname_spec='$libname.so.$major'
-+ shlibpath_var=LD_LIBRARY_PATH
-+ fi
-+ ;;
-+
-+*)
-+ dynamic_linker=no
-+ ;;
-+esac
-+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-+echo "${ECHO_T}$dynamic_linker" >&6
-+test "$dynamic_linker" = no && can_build_shared=no
-+
-+# Report the final consequences.
-+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
-+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
-+echo "$as_me:$LINENO: result: $can_build_shared" >&5
-+echo "${ECHO_T}$can_build_shared" >&6
-+
-+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
-+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
-+test "$can_build_shared" = "no" && enable_shared=no
-+
-+# On AIX, shared libraries and static libraries use the same namespace, and
-+# are all built from PIC.
-+case "$host_os" in
-+aix3*)
-+ test "$enable_shared" = yes && enable_static=no
-+ if test -n "$RANLIB"; then
-+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
-+ postinstall_cmds='$RANLIB $lib'
-+ fi
-+ ;;
-+
-+aix4*)
-+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-+ test "$enable_shared" = yes && enable_static=no
-+ fi
-+ ;;
-+esac
-+echo "$as_me:$LINENO: result: $enable_shared" >&5
-+echo "${ECHO_T}$enable_shared" >&6
-+
-+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
-+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
-+# Make sure either enable_shared or enable_static is yes.
-+test "$enable_shared" = yes || enable_static=yes
-+echo "$as_me:$LINENO: result: $enable_static" >&5
-+echo "${ECHO_T}$enable_static" >&6
-+
-+if test "$hardcode_action" = relink; then
-+ # Fast installation is not supported
-+ enable_fast_install=no
-+elif test "$shlibpath_overrides_runpath" = yes ||
-+ test "$enable_shared" = no; then
-+ # Fast installation is not necessary
-+ enable_fast_install=needless
-+fi
-+
-+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-+if test "$GCC" = yes; then
-+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-+fi
-+
-+if test "x$enable_dlopen" != xyes; then
-+ enable_dlopen=unknown
-+ enable_dlopen_self=unknown
-+ enable_dlopen_self_static=unknown
-+else
-+ lt_cv_dlopen=no
-+ lt_cv_dlopen_libs=
-+
-+ case $host_os in
-+ beos*)
-+ lt_cv_dlopen="load_add_on"
-+ lt_cv_dlopen_libs=
-+ lt_cv_dlopen_self=yes
-+ ;;
-+
-+ cygwin* | mingw* | pw32*)
-+ lt_cv_dlopen="LoadLibrary"
-+ lt_cv_dlopen_libs=
-+ ;;
-+
-+ *)
-+ echo "$as_me:$LINENO: checking for shl_load" >&5
-+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
-+if test "${ac_cv_func_shl_load+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. */
-+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define shl_load innocuous_shl_load
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char shl_load (); below.
-+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ <limits.h> exists even on freestanding compilers. */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+
-+#undef shl_load
-+
-+/* 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 shl_load ();
-+/* 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_shl_load) || defined (__stub___shl_load)
-+choke me
-+#else
-+char (*f) () = shl_load;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != shl_load;
-+ ;
-+ 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_func_shl_load=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_func_shl_load=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
-+if test $ac_cv_func_shl_load = yes; then
-+ lt_cv_dlopen="shl_load"
-+else
-+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
-+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldld $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 shl_load ();
-+int
-+main ()
-+{
-+shl_load ();
-+ ;
-+ 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_lib_dld_shl_load=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dld_shl_load=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_dld_shl_load" >&5
-+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
-+if test $ac_cv_lib_dld_shl_load = yes; then
-+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen" >&5
-+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
-+if test "${ac_cv_func_dlopen+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. */
-+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define dlopen innocuous_dlopen
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char dlopen (); below.
-+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ <limits.h> exists even on freestanding compilers. */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+
-+#undef dlopen
-+
-+/* 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 dlopen ();
-+/* 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_dlopen) || defined (__stub___dlopen)
-+choke me
-+#else
-+char (*f) () = dlopen;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != dlopen;
-+ ;
-+ 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_func_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_func_dlopen=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
-+if test $ac_cv_func_dlopen = yes; then
-+ lt_cv_dlopen="dlopen"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldl $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 dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ 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_lib_dl_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dl_dlopen=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_dl_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-+if test $ac_cv_lib_dl_dlopen = yes; then
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-+else
-+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
-+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lsvld $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 dlopen ();
-+int
-+main ()
-+{
-+dlopen ();
-+ ;
-+ 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_lib_svld_dlopen=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_svld_dlopen=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_svld_dlopen" >&5
-+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
-+if test $ac_cv_lib_svld_dlopen = yes; then
-+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-+else
-+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
-+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-ldld $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 dld_link ();
-+int
-+main ()
-+{
-+dld_link ();
-+ ;
-+ 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_lib_dld_dld_link=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_dld_dld_link=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_dld_dld_link" >&5
-+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
-+if test $ac_cv_lib_dld_dld_link = yes; then
-+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+
-+fi
-+
-+ ;;
-+ esac
-+
-+ if test "x$lt_cv_dlopen" != xno; then
-+ enable_dlopen=yes
-+ else
-+ enable_dlopen=no
-+ fi
-+
-+ case $lt_cv_dlopen in
-+ dlopen)
-+ save_CPPFLAGS="$CPPFLAGS"
-+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-+
-+ save_LDFLAGS="$LDFLAGS"
-+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-+
-+ save_LIBS="$LIBS"
-+ LIBS="$lt_cv_dlopen_libs $LIBS"
-+
-+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
-+if test "${lt_cv_dlopen_self+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ lt_cv_dlopen_self=cross
-+else
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+#line __oline__ "configure"
-+#include "confdefs.h"
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-+
-+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-+ find out it does not work in some platform. */
-+#ifndef LT_DLLAZY_OR_NOW
-+# ifdef RTLD_LAZY
-+# define LT_DLLAZY_OR_NOW RTLD_LAZY
-+# else
-+# ifdef DL_LAZY
-+# define LT_DLLAZY_OR_NOW DL_LAZY
-+# else
-+# ifdef RTLD_NOW
-+# define LT_DLLAZY_OR_NOW RTLD_NOW
-+# else
-+# ifdef DL_NOW
-+# define LT_DLLAZY_OR_NOW DL_NOW
-+# else
-+# define LT_DLLAZY_OR_NOW 0
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" void exit (int);
-+#endif
-+
-+void fnord() { int i=42;}
-+int main ()
-+{
-+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-+ int status = $lt_dlunknown;
-+
-+ if (self)
-+ {
-+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+ /* dlclose (self); */
-+ }
-+
-+ exit (status);
-+}
-+EOF
-+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ (./conftest; exit; ) 2>/dev/null
-+ lt_status=$?
-+ case x$lt_status in
-+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
-+ esac
-+ else :
-+ # compilation failed
-+ lt_cv_dlopen_self=no
-+ fi
-+fi
-+rm -fr conftest*
-+
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
-+
-+ if test "x$lt_cv_dlopen_self" = xyes; then
-+ LDFLAGS="$LDFLAGS $link_static_flag"
-+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
-+if test "${lt_cv_dlopen_self_static+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ lt_cv_dlopen_self_static=cross
-+else
-+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-+ lt_status=$lt_dlunknown
-+ cat > conftest.$ac_ext <<EOF
-+#line __oline__ "configure"
-+#include "confdefs.h"
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef RTLD_GLOBAL
-+# define LT_DLGLOBAL RTLD_GLOBAL
-+#else
-+# ifdef DL_GLOBAL
-+# define LT_DLGLOBAL DL_GLOBAL
-+# else
-+# define LT_DLGLOBAL 0
-+# endif
-+#endif
-+
-+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-+ find out it does not work in some platform. */
-+#ifndef LT_DLLAZY_OR_NOW
-+# ifdef RTLD_LAZY
-+# define LT_DLLAZY_OR_NOW RTLD_LAZY
-+# else
-+# ifdef DL_LAZY
-+# define LT_DLLAZY_OR_NOW DL_LAZY
-+# else
-+# ifdef RTLD_NOW
-+# define LT_DLLAZY_OR_NOW RTLD_NOW
-+# else
-+# ifdef DL_NOW
-+# define LT_DLLAZY_OR_NOW DL_NOW
-+# else
-+# define LT_DLLAZY_OR_NOW 0
-+# endif
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" void exit (int);
-+#endif
-+
-+void fnord() { int i=42;}
-+int main ()
-+{
-+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-+ int status = $lt_dlunknown;
-+
-+ if (self)
-+ {
-+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
-+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+ /* dlclose (self); */
-+ }
-+
-+ exit (status);
-+}
-+EOF
-+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ (./conftest; exit; ) 2>/dev/null
-+ lt_status=$?
-+ case x$lt_status in
-+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
-+ esac
-+ else :
-+ # compilation failed
-+ lt_cv_dlopen_self_static=no
-+ fi
-+fi
-+rm -fr conftest*
-+
-+
-+fi
-+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
-+ fi
-+
-+ CPPFLAGS="$save_CPPFLAGS"
-+ LDFLAGS="$save_LDFLAGS"
-+ LIBS="$save_LIBS"
-+ ;;
-+ esac
-+
-+ case $lt_cv_dlopen_self in
-+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-+ *) enable_dlopen_self=unknown ;;
-+ esac
-+
-+ case $lt_cv_dlopen_self_static in
-+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-+ *) enable_dlopen_self_static=unknown ;;
-+ esac
-+fi
-+
-+
-+if test "$enable_shared" = yes && test "$GCC" = yes; then
-+ case $archive_cmds in
-+ *'~'*)
-+ # FIXME: we may have to deal with multi-command sequences.
-+ ;;
-+ '$CC '*)
-+ # Test whether the compiler implicitly links with -lc since on some
-+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
-+ # to ld, don't add -lc before -lgcc.
-+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-+ if test "${lt_cv_archive_cmds_need_lc+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ $rm conftest*
-+ echo 'static int dummy;' > conftest.$ac_ext
-+
-+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
-+ soname=conftest
-+ lib=conftest
-+ libobjs=conftest.$ac_objext
-+ deplibs=
-+ wl=$lt_cv_prog_cc_wl
-+ compiler_flags=-v
-+ linker_flags=-v
-+ verstring=
-+ output_objdir=.
-+ libname=conftest
-+ save_allow_undefined_flag=$allow_undefined_flag
-+ allow_undefined_flag=
-+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-+ (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+ then
-+ lt_cv_archive_cmds_need_lc=no
-+ else
-+ lt_cv_archive_cmds_need_lc=yes
-+ fi
-+ allow_undefined_flag=$save_allow_undefined_flag
-+ else
-+ cat conftest.err 1>&5
-+ fi
-+fi
-+
-+ echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5
-+echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6
-+ ;;
-+ esac
-+fi
-+need_lc=${lt_cv_archive_cmds_need_lc-yes}
-+
-+# The second clause should only fire when bootstrapping the
-+# libtool distribution, otherwise you forgot to ship ltmain.sh
-+# with your package, and you will get complaints that there are
-+# no rules to generate ltmain.sh.
-+if test -f "$ltmain"; then
-+ :
-+else
-+ # If there is no Makefile yet, we rely on a make rule to execute
-+ # `config.status --recheck' to rerun these tests and create the
-+ # libtool script then.
-+ test -f Makefile && make "$ltmain"
-+fi
-+
-+if test -f "$ltmain"; then
-+ trap "$rm \"${ofile}T\"; exit 1" 1 2 15
-+ $rm -f "${ofile}T"
-+
-+ echo creating $ofile
-+
-+ # Now quote all the things that may contain metacharacters while being
-+ # careful not to overquote the AC_SUBSTed values. We take copies of the
-+ # variables and quote the copies for generation of the libtool script.
-+ for var in echo old_CC old_CFLAGS SED \
-+ AR AR_FLAGS CC LD LN_S NM SHELL \
-+ reload_flag reload_cmds wl \
-+ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
-+ thread_safe_flag_spec whole_archive_flag_spec libname_spec \
-+ library_names_spec soname_spec \
-+ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
-+ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
-+ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
-+ old_striplib striplib file_magic_cmd export_symbols_cmds \
-+ deplibs_check_method allow_undefined_flag no_undefined_flag \
-+ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
-+ global_symbol_to_c_name_address \
-+ hardcode_libdir_flag_spec hardcode_libdir_separator \
-+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-+ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
-+
-+ case $var in
-+ reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
-+ old_postinstall_cmds | old_postuninstall_cmds | \
-+ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
-+ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
-+ postinstall_cmds | postuninstall_cmds | \
-+ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-+ # Double-quote double-evaled strings.
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-+ ;;
-+ *)
-+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-+ ;;
-+ esac
-+ done
-+
-+ cat <<__EOF__ > "${ofile}T"
-+#! $SHELL
-+
-+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-+#
-+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
-+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-+#
-+# 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.
-+#
-+# As a special exception to the GNU General Public License, if you
-+# distribute this file as part of a program that contains a
-+# configuration script generated by Autoconf, you may include it under
-+# the same distribution terms that you use for the rest of that program.
-+
-+# A sed that does not truncate output.
-+SED=$lt_SED
-+
-+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-+Xsed="${SED} -e s/^X//"
-+
-+# The HP-UX ksh and POSIX shell print the target directory to stdout
-+# if CDPATH is set.
-+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-+
-+# ### BEGIN LIBTOOL CONFIG
-+
-+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-+
-+# Shell to use when invoking shell scripts.
-+SHELL=$lt_SHELL
-+
-+# Whether or not to build shared libraries.
-+build_libtool_libs=$enable_shared
-+
-+# Whether or not to build static libraries.
-+build_old_libs=$enable_static
-+
-+# Whether or not to add -lc for building shared libraries.
-+build_libtool_need_lc=$need_lc
-+
-+# Whether or not to optimize for fast installation.
-+fast_install=$enable_fast_install
-+
-+# The host system.
-+host_alias=$host_alias
-+host=$host
-+
-+# An echo program that does not interpret backslashes.
-+echo=$lt_echo
-+
-+# The archiver.
-+AR=$lt_AR
-+AR_FLAGS=$lt_AR_FLAGS
-+
-+# The default C compiler.
-+CC=$lt_CC
-+
-+# Is the compiler the GNU C compiler?
-+with_gcc=$GCC
-+
-+# The linker used to build libraries.
-+LD=$lt_LD
-+
-+# Whether we need hard or soft links.
-+LN_S=$lt_LN_S
-+
-+# A BSD-compatible nm program.
-+NM=$lt_NM
-+
-+# A symbol stripping program
-+STRIP=$STRIP
-+
-+# Used to examine libraries when file_magic_cmd begins "file"
-+MAGIC_CMD=$MAGIC_CMD
-+
-+# Used on cygwin: DLL creation program.
-+DLLTOOL="$DLLTOOL"
-+
-+# Used on cygwin: object dumper.
-+OBJDUMP="$OBJDUMP"
-+
-+# Used on cygwin: assembler.
-+AS="$AS"
-+
-+# The name of the directory that contains temporary libtool files.
-+objdir=$objdir
-+
-+# How to create reloadable object files.
-+reload_flag=$lt_reload_flag
-+reload_cmds=$lt_reload_cmds
-+
-+# How to pass a linker flag through the compiler.
-+wl=$lt_wl
-+
-+# Object file suffix (normally "o").
-+objext="$ac_objext"
-+
-+# Old archive suffix (normally "a").
-+libext="$libext"
-+
-+# Executable file suffix (normally "").
-+exeext="$exeext"
-+
-+# Additional compiler flags for building library objects.
-+pic_flag=$lt_pic_flag
-+pic_mode=$pic_mode
-+
-+# Does compiler simultaneously support -c and -o options?
-+compiler_c_o=$lt_compiler_c_o
-+
-+# Can we write directly to a .lo ?
-+compiler_o_lo=$lt_compiler_o_lo
-+
-+# Must we lock files when doing compilation ?
-+need_locks=$lt_need_locks
-+
-+# Do we need the lib prefix for modules?
-+need_lib_prefix=$need_lib_prefix
-+
-+# Do we need a version for libraries?
-+need_version=$need_version
-+
-+# Whether dlopen is supported.
-+dlopen_support=$enable_dlopen
-+
-+# Whether dlopen of programs is supported.
-+dlopen_self=$enable_dlopen_self
-+
-+# Whether dlopen of statically linked programs is supported.
-+dlopen_self_static=$enable_dlopen_self_static
-+
-+# Compiler flag to prevent dynamic linking.
-+link_static_flag=$lt_link_static_flag
-+
-+# Compiler flag to turn off builtin functions.
-+no_builtin_flag=$lt_no_builtin_flag
-+
-+# Compiler flag to allow reflexive dlopens.
-+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-+
-+# Compiler flag to generate shared objects directly from archives.
-+whole_archive_flag_spec=$lt_whole_archive_flag_spec
-+
-+# Compiler flag to generate thread-safe objects.
-+thread_safe_flag_spec=$lt_thread_safe_flag_spec
-+
-+# Library versioning type.
-+version_type=$version_type
-+
-+# Format of library name prefix.
-+libname_spec=$lt_libname_spec
-+
-+# List of archive names. First name is the real one, the rest are links.
-+# The last name is the one that the linker finds with -lNAME.
-+library_names_spec=$lt_library_names_spec
-+
-+# The coded name of the library, if different from the real name.
-+soname_spec=$lt_soname_spec
-+
-+# Commands used to build and install an old-style archive.
-+RANLIB=$lt_RANLIB
-+old_archive_cmds=$lt_old_archive_cmds
-+old_postinstall_cmds=$lt_old_postinstall_cmds
-+old_postuninstall_cmds=$lt_old_postuninstall_cmds
-+
-+# Create an old-style archive from a shared archive.
-+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-+
-+# Create a temporary old-style archive to link instead of a shared archive.
-+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-+
-+# Commands used to build and install a shared archive.
-+archive_cmds=$lt_archive_cmds
-+archive_expsym_cmds=$lt_archive_expsym_cmds
-+postinstall_cmds=$lt_postinstall_cmds
-+postuninstall_cmds=$lt_postuninstall_cmds
-+
-+# Commands to strip libraries.
-+old_striplib=$lt_old_striplib
-+striplib=$lt_striplib
-+
-+# Method to check whether dependent libraries are shared objects.
-+deplibs_check_method=$lt_deplibs_check_method
-+
-+# Command to use when deplibs_check_method == file_magic.
-+file_magic_cmd=$lt_file_magic_cmd
-+
-+# Flag that allows shared libraries with undefined symbols to be built.
-+allow_undefined_flag=$lt_allow_undefined_flag
-+
-+# Flag that forces no undefined symbols.
-+no_undefined_flag=$lt_no_undefined_flag
-+
-+# Commands used to finish a libtool library installation in a directory.
-+finish_cmds=$lt_finish_cmds
-+
-+# Same as above, but a single script fragment to be evaled but not shown.
-+finish_eval=$lt_finish_eval
-+
-+# Take the output of nm and produce a listing of raw symbols and C names.
-+global_symbol_pipe=$lt_global_symbol_pipe
-+
-+# Transform the output of nm in a proper C declaration
-+global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
-+
-+# Transform the output of nm in a C name address pair
-+global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
-+
-+# This is the shared library runtime path variable.
-+runpath_var=$runpath_var
-+
-+# This is the shared library path variable.
-+shlibpath_var=$shlibpath_var
-+
-+# Is shlibpath searched before the hard-coded library search path?
-+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-+
-+# How to hardcode a shared library path into an executable.
-+hardcode_action=$hardcode_action
-+
-+# Whether we should hardcode library paths into libraries.
-+hardcode_into_libs=$hardcode_into_libs
-+
-+# Flag to hardcode \$libdir into a binary during linking.
-+# This must work even if \$libdir does not exist.
-+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-+
-+# Whether we need a single -rpath flag with a separated argument.
-+hardcode_libdir_separator=$lt_hardcode_libdir_separator
-+
-+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_direct=$hardcode_direct
-+
-+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-+# resulting binary.
-+hardcode_minus_L=$hardcode_minus_L
-+
-+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-+# the resulting binary.
-+hardcode_shlibpath_var=$hardcode_shlibpath_var
-+
-+# Variables whose values should be saved in libtool wrapper scripts and
-+# restored at relink time.
-+variables_saved_for_relink="$variables_saved_for_relink"
-+
-+# Whether libtool must link a program against all its dependency libraries.
-+link_all_deplibs=$link_all_deplibs
-+
-+# Compile-time system search path for libraries
-+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-+
-+# Run-time system search path for libraries
-+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-+
-+# Fix the shell variable \$srcfile for the compiler.
-+fix_srcfile_path="$fix_srcfile_path"
-+
-+# Set to yes if exported symbols are required.
-+always_export_symbols=$always_export_symbols
-+
-+# The commands to list exported symbols.
-+export_symbols_cmds=$lt_export_symbols_cmds
-+
-+# The commands to extract the exported symbol list from a shared archive.
-+extract_expsyms_cmds=$lt_extract_expsyms_cmds
-+
-+# Symbols that should not be listed in the preloaded symbols.
-+exclude_expsyms=$lt_exclude_expsyms
-+
-+# Symbols that must always be exported.
-+include_expsyms=$lt_include_expsyms
-+
-+# ### END LIBTOOL CONFIG
-+
-+__EOF__
-+
-+ case $host_os in
-+ aix3*)
-+ cat <<\EOF >> "${ofile}T"
-+
-+# AIX sometimes has problems with the GCC collect2 program. For some
-+# reason, if we set the COLLECT_NAMES environment variable, the problems
-+# vanish in a puff of smoke.
-+if test "X${COLLECT_NAMES+set}" != Xset; then
-+ COLLECT_NAMES=
-+ export COLLECT_NAMES
-+fi
-+EOF
-+ ;;
-+ esac
-+
-+ case $host_os in
-+ cygwin* | mingw* | pw32* | os2*)
-+ cat <<'EOF' >> "${ofile}T"
-+ # This is a source program that is used to create dlls on Windows
-+ # Don't remove nor modify the starting and closing comments
-+# /* ltdll.c starts here */
-+# #define WIN32_LEAN_AND_MEAN
-+# #include <windows.h>
-+# #undef WIN32_LEAN_AND_MEAN
-+# #include <stdio.h>
-+#
-+# #ifndef __CYGWIN__
-+# # ifdef __CYGWIN32__
-+# # define __CYGWIN__ __CYGWIN32__
-+# # endif
-+# #endif
-+#
-+# #ifdef __cplusplus
-+# extern "C" {
-+# #endif
-+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-+# #ifdef __cplusplus
-+# }
-+# #endif
-+#
-+# #ifdef __CYGWIN__
-+# #include <cygwin/cygwin_dll.h>
-+# DECLARE_CYGWIN_DLL( DllMain );
-+# #endif
-+# HINSTANCE __hDllInstance_base;
-+#
-+# BOOL APIENTRY
-+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-+# {
-+# __hDllInstance_base = hInst;
-+# return TRUE;
-+# }
-+# /* ltdll.c ends here */
-+ # This is a source program that is used to create import libraries
-+ # on Windows for dlls which lack them. Don't remove nor modify the
-+ # starting and closing comments
-+# /* impgen.c starts here */
-+# /* Copyright (C) 1999-2000 Free Software Foundation, Inc.
-+#
-+# This file is part of GNU libtool.
-+#
-+# 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 <stdio.h> /* for printf() */
-+# #include <unistd.h> /* for open(), lseek(), read() */
-+# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
-+# #include <string.h> /* for strdup() */
-+#
-+# /* O_BINARY isn't required (or even defined sometimes) under Unix */
-+# #ifndef O_BINARY
-+# #define O_BINARY 0
-+# #endif
-+#
-+# static unsigned int
-+# pe_get16 (fd, offset)
-+# int fd;
-+# int offset;
-+# {
-+# unsigned char b[2];
-+# lseek (fd, offset, SEEK_SET);
-+# read (fd, b, 2);
-+# return b[0] + (b[1]<<8);
-+# }
-+#
-+# static unsigned int
-+# pe_get32 (fd, offset)
-+# int fd;
-+# int offset;
-+# {
-+# unsigned char b[4];
-+# lseek (fd, offset, SEEK_SET);
-+# read (fd, b, 4);
-+# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-+# }
-+#
-+# static unsigned int
-+# pe_as32 (ptr)
-+# void *ptr;
-+# {
-+# unsigned char *b = ptr;
-+# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-+# }
-+#
-+# int
-+# main (argc, argv)
-+# int argc;
-+# char *argv[];
-+# {
-+# int dll;
-+# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
-+# unsigned long export_rva, export_size, nsections, secptr, expptr;
-+# unsigned long name_rvas, nexp;
-+# unsigned char *expdata, *erva;
-+# char *filename, *dll_name;
-+#
-+# filename = argv[1];
-+#
-+# dll = open(filename, O_RDONLY|O_BINARY);
-+# if (dll < 1)
-+# return 1;
-+#
-+# dll_name = filename;
-+#
-+# for (i=0; filename[i]; i++)
-+# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
-+# dll_name = filename + i +1;
-+#
-+# pe_header_offset = pe_get32 (dll, 0x3c);
-+# opthdr_ofs = pe_header_offset + 4 + 20;
-+# num_entries = pe_get32 (dll, opthdr_ofs + 92);
-+#
-+# if (num_entries < 1) /* no exports */
-+# return 1;
-+#
-+# export_rva = pe_get32 (dll, opthdr_ofs + 96);
-+# export_size = pe_get32 (dll, opthdr_ofs + 100);
-+# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
-+# secptr = (pe_header_offset + 4 + 20 +
-+# pe_get16 (dll, pe_header_offset + 4 + 16));
-+#
-+# expptr = 0;
-+# for (i = 0; i < nsections; i++)
-+# {
-+# char sname[8];
-+# unsigned long secptr1 = secptr + 40 * i;
-+# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-+# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
-+# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
-+# lseek(dll, secptr1, SEEK_SET);
-+# read(dll, sname, 8);
-+# if (vaddr <= export_rva && vaddr+vsize > export_rva)
-+# {
-+# expptr = fptr + (export_rva - vaddr);
-+# if (export_rva + export_size > vaddr + vsize)
-+# export_size = vsize - (export_rva - vaddr);
-+# break;
-+# }
-+# }
-+#
-+# expdata = (unsigned char*)malloc(export_size);
-+# lseek (dll, expptr, SEEK_SET);
-+# read (dll, expdata, export_size);
-+# erva = expdata - export_rva;
-+#
-+# nexp = pe_as32 (expdata+24);
-+# name_rvas = pe_as32 (expdata+32);
-+#
-+# printf ("EXPORTS\n");
-+# for (i = 0; i<nexp; i++)
-+# {
-+# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
-+# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
-+# }
-+#
-+# return 0;
-+# }
-+# /* impgen.c ends here */
-+
-+EOF
-+ ;;
-+ esac
-+
-+ # We use sed instead of cat because bash on DJGPP gets confused if
-+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
-+ # text mode, it properly converts lines to CR/LF. This bash problem
-+ # is reportedly fixed, but why not run on old versions too?
-+ sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
-+
-+ mv -f "${ofile}T" "$ofile" || \
-+ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
-+ chmod +x "$ofile"
-+fi
-+
-+
-+
-+
-+
-+# This can be used to rebuild libtool when needed
-+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
-+
-+# Always use our own libtool.
-+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+
-+# Prevent multiple expansion
-+
-+
-+
-+
-+# Extract the first word of "perl", so it can be a program name with args.
-+set dummy perl; 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_path_PERL+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $PERL in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ 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_path_PERL="$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
-+
-+ ;;
-+esac
-+fi
-+PERL=$ac_cv_path_PERL
-+
-+if test -n "$PERL"; then
-+ echo "$as_me:$LINENO: result: $PERL" >&5
-+echo "${ECHO_T}$PERL" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+
-+
-+
-+if test "${ac_cv_header_asm_errno_h+set}" = set; then
-+ echo "$as_me:$LINENO: checking for asm/errno.h" >&5
-+echo $ECHO_N "checking for asm/errno.h... $ECHO_C" >&6
-+if test "${ac_cv_header_asm_errno_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_asm_errno_h" >&5
-+echo "${ECHO_T}$ac_cv_header_asm_errno_h" >&6
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking asm/errno.h usability" >&5
-+echo $ECHO_N "checking asm/errno.h usability... $ECHO_C" >&6
-+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
-+@%:@include <asm/errno.h>
-+_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_header_compiler=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+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
-+
-+# Is the header present?
-+echo "$as_me:$LINENO: checking asm/errno.h presence" >&5
-+echo $ECHO_N "checking asm/errno.h presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@include <asm/errno.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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
-+ ac_header_preproc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+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
-+
-+# So? What about this header?
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: asm/errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: asm/errno.h: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: asm/errno.h: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: asm/errno.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: asm/errno.h: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: asm/errno.h: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: asm/errno.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 asm/errno.h" >&5
-+echo $ECHO_N "checking for asm/errno.h... $ECHO_C" >&6
-+if test "${ac_cv_header_asm_errno_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_header_asm_errno_h=$ac_header_preproc
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_asm_errno_h" >&5
-+echo "${ECHO_T}$ac_cv_header_asm_errno_h" >&6
-+
-+fi
-+if test $ac_cv_header_asm_errno_h = yes; then
-+ :
-+else
-+ { { echo "$as_me:$LINENO: error: *** Unable to find asm/errno.h!!!" >&5
-+echo "$as_me: error: *** Unable to find asm/errno.h!!!" >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+
-+
-+
-+if test "${ac_cv_header_linux_atmsap_h+set}" = set; then
-+ echo "$as_me:$LINENO: checking for linux/atmsap.h" >&5
-+echo $ECHO_N "checking for linux/atmsap.h... $ECHO_C" >&6
-+if test "${ac_cv_header_linux_atmsap_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_linux_atmsap_h" >&5
-+echo "${ECHO_T}$ac_cv_header_linux_atmsap_h" >&6
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking linux/atmsap.h usability" >&5
-+echo $ECHO_N "checking linux/atmsap.h usability... $ECHO_C" >&6
-+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
-+@%:@include <linux/atmsap.h>
-+_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_header_compiler=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+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
-+
-+# Is the header present?
-+echo "$as_me:$LINENO: checking linux/atmsap.h presence" >&5
-+echo $ECHO_N "checking linux/atmsap.h presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@include <linux/atmsap.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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
-+ ac_header_preproc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+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
-+
-+# So? What about this header?
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: linux/atmsap.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/atmsap.h" >&5
-+echo $ECHO_N "checking for linux/atmsap.h... $ECHO_C" >&6
-+if test "${ac_cv_header_linux_atmsap_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_header_linux_atmsap_h=$ac_header_preproc
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_linux_atmsap_h" >&5
-+echo "${ECHO_T}$ac_cv_header_linux_atmsap_h" >&6
-+
-+fi
-+if test $ac_cv_header_linux_atmsap_h = yes; then
-+ :
-+else
-+ { { echo "$as_me:$LINENO: error: *** Unable to find linux/atmsap.h!!!" >&5
-+echo "$as_me: error: *** Unable to find linux/atmsap.h!!!" >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+
-+
-+
-+
-+echo "$as_me:$LINENO: checking for main in -lresolv" >&5
-+echo $ECHO_N "checking for main in -lresolv... $ECHO_C" >&6
-+if test "${ac_cv_lib_resolv_main+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lresolv $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+
-+int
-+main ()
-+{
-+main ();
-+ ;
-+ 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_lib_resolv_main=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_resolv_main=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_resolv_main" >&5
-+echo "${ECHO_T}$ac_cv_lib_resolv_main" >&6
-+if test $ac_cv_lib_resolv_main = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define HAVE_LIBRESOLV 1
-+_ACEOF
-+
-+ LIBS="-lresolv $LIBS"
-+
-+else
-+ { { echo "$as_me:$LINENO: error: *** Unable to find libresolv!!!" >&5
-+echo "$as_me: error: *** Unable to find libresolv!!!" >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+
-+
-+LIBS=""
-+
-+INCLUDES="-I\$(top_srcdir)/src/include"
-+CFLAGS="$INCLUDES $CFLAGS -Wall -Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes"
-+YACC="$YACC -d"
-+
-+cat >>confdefs.h <<\_ACEOF
-+@%:@define YY_USE_CONST 1
-+_ACEOF
-+
-+
-+atmsigd_conf_dir=` test "x$exec_prefix" = xNONE && exec_prefix=$ac_default_prefix
-+ test "x$prefix" = xNONE && prefix=${exec_prefix}
-+ eval echo "$sysconfdir"`
-+cat >>confdefs.h <<_ACEOF
-+@%:@define ATMSIGD_CONF "$atmsigd_conf_dir/atmsigd.conf"
-+_ACEOF
-+
-+
-+
-+# Check whether --with-uni or --without-uni was given.
-+if test "${with_uni+set}" = set; then
-+ withval="$with_uni"
-+
-+ case "$with_uni" in
-+ "3.0" ) cat >>confdefs.h <<\_ACEOF
-+@%:@define UNI30 1
-+_ACEOF
-+
-+ ;;
-+ "3.1" ) cat >>confdefs.h <<\_ACEOF
-+@%:@define UNI31 1
-+_ACEOF
-+
-+ ;;
-+ "4.0" ) cat >>confdefs.h <<\_ACEOF
-+@%:@define UNI40 1
-+_ACEOF
-+
-+ ;;
-+ *)
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define DYNAMIC_UNI 1
-+_ACEOF
-+
-+ { echo "$as_me:$LINENO: WARNING: *** UNI version not specified correctly. Defaulting to dynamic UNI." >&5
-+echo "$as_me: WARNING: *** UNI version not specified correctly. Defaulting to dynamic UNI." >&2;}
-+ esac
-+
-+else
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define DYNAMIC_UNI 1
-+_ACEOF
-+
-+
-+fi;
-+
-+# Check whether --enable-allow_uni30 or --disable-allow_uni30 was given.
-+if test "${enable_allow_uni30+set}" = set; then
-+ enableval="$enable_allow_uni30"
-+
-+ if test "$with_uni" = "3.1" ; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define ALLOW_UNI30 1
-+_ACEOF
-+
-+ else
-+ { echo "$as_me:$LINENO: WARNING: *** Allow UNI 3.0 was not enabled. It is only valid when UNI 3.1 is specified as the default via --with-uni." >&5
-+echo "$as_me: WARNING: *** Allow UNI 3.0 was not enabled. It is only valid when UNI 3.1 is specified as the default via --with-uni." >&2;}
-+ fi
-+
-+
-+fi;
-+
-+# Check whether --enable-q2963_1 or --disable-q2963_1 was given.
-+if test "${enable_q2963_1+set}" = set; then
-+ enableval="$enable_q2963_1"
-+
-+ if test "$with_uni" = "4.0" ; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define Q2963_1 1
-+_ACEOF
-+
-+ else
-+ { echo "$as_me:$LINENO: WARNING: *** Q.2963.1 was not enabled. It is only valid when UNI 4.0 is specified as the default via --with-uni." >&5
-+echo "$as_me: WARNING: *** Q.2963.1 was not enabled. It is only valid when UNI 4.0 is specified as the default via --with-uni." >&2;}
-+ fi
-+
-+
-+fi;
-+
-+# Check whether --enable-cisco or --disable-cisco was given.
-+if test "${enable_cisco+set}" = set; then
-+ enableval="$enable_cisco"
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define CISCO 1
-+_ACEOF
-+
-+
-+fi;
-+
-+# Check whether --enable-thomflex or --disable-thomflex was given.
-+if test "${enable_thomflex+set}" = set; then
-+ enableval="$enable_thomflex"
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define THOMFLEX 1
-+_ACEOF
-+
-+
-+fi;
-+
-+cat >>confdefs.h <<\_ACEOF
-+@%:@define BROKEN_POLL 1
-+_ACEOF
-+
-+
-+# Check whether --enable-mpoa_1_1 or --disable-mpoa_1_1 was given.
-+if test "${enable_mpoa_1_1+set}" = set; then
-+ enableval="$enable_mpoa_1_1"
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define MPOA_1_1 1
-+_ACEOF
-+
-+
-+fi;
-+
-+# Check whether --enable-mpr or --disable-mpr was given.
-+if test "${enable_mpr+set}" = set; then
-+ enableval="$enable_mpr"
-+
-+ case "$enable_mpr" in
-+ "" | y | ye | yes | Y | YE | YES )
-+
-+echo "$as_me:$LINENO: checking for main in -lmpr" >&5
-+echo $ECHO_N "checking for main in -lmpr... $ECHO_C" >&6
-+if test "${ac_cv_lib_mpr_main+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lmpr $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+
-+int
-+main ()
-+{
-+main ();
-+ ;
-+ 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_lib_mpr_main=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_mpr_main=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_mpr_main" >&5
-+echo "${ECHO_T}$ac_cv_lib_mpr_main" >&6
-+if test $ac_cv_lib_mpr_main = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define HAVE_LIBMPR 1
-+_ACEOF
-+
-+ LIBS="-lmpr $LIBS"
-+
-+else
-+
-+ { echo "$as_me:$LINENO: WARNING: *** Could not find libmpr! Is MPR installed?" >&5
-+echo "$as_me: WARNING: *** Could not find libmpr! Is MPR installed?" >&2;}
-+
-+
-+fi
-+
-+ ;;
-+ esac
-+
-+
-+fi;
-+
-+
-+ ac_config_files="$ac_config_files Makefile doc/Makefile m4/Makefile src/Makefile src/include/Makefile src/lib/Makefile src/br2684/Makefile"
-+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
-+# scripts and configure runs, see configure's option --config-cache.
-+# It is not useful on other systems. If it contains results you don't
-+# want to keep, you may remove or edit it.
-+#
-+# config.status only pays attention to the cache file if you give it
-+# the --recheck option to rerun configure.
-+#
-+# `ac_cv_env_foo' variables (set or unset) will be overridden when
-+# loading this file, other *unset* `ac_cv_foo' will be assigned the
-+# following values.
-+
-+_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.
-+# 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.
-+{
-+ (set) 2>&1 |
-+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
-+ *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"
-+ ;;
-+ esac;
-+} |
-+ sed '
-+ t 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"
-+ cat confcache >$cache_file
-+ else
-+ echo "not updating unwritable cache $cache_file"
-+ fi
-+fi
-+rm -f confcache
-+
-+test "x$prefix" = xNONE && prefix=$ac_default_prefix
-+# 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 : $LIB@&t@OBJS; 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'
-+done
-+LIB@&t@OBJS=$ac_libobjs
-+
-+LTLIBOBJS=$ac_ltlibobjs
-+
-+
-+
-+: ${CONFIG_STATUS=./config.status}
-+ac_clean_files_save=$ac_clean_files
-+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-+echo "$as_me: creating $CONFIG_STATUS" >&6;}
-+cat >$CONFIG_STATUS <<_ACEOF
-+#! $SHELL
-+# Generated by $as_me.
-+# Run this file to recreate the current configuration.
-+# Compiler output produced by configure, useful for debugging
-+# configure, is in config.log if it exists.
-+
-+debug=false
-+ac_cs_recheck=false
-+ac_cs_silent=false
-+SHELL=\${CONFIG_SHELL-$SHELL}
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+## --------------------- ##
-+## M4sh Initialization. ##
-+## --------------------- ##
-+
-+# Be Bourne compatible
-+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
-+fi
-+DUALCASE=1; export DUALCASE # for MKS sh
-+
-+# Support unset when possible.
-+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-+ as_unset=unset
-+else
-+ as_unset=false
-+fi
-+
-+
-+# Work around bugs in pre-3.0 UWIN ksh.
-+$as_unset ENV MAIL MAILPATH
-+PS1='$ '
-+PS2='> '
-+PS4='+ '
-+
-+# NLS nuisances.
-+for as_var in \
-+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-+ LC_TELEPHONE LC_TIME
-+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
-+ fi
-+done
-+
-+# Required to use basename.
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
-+ as_basename=basename
-+else
-+ as_basename=false
-+fi
-+
-+
-+# Name of the executable.
-+as_me=`$as_basename "$0" ||
-+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ 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
-+
-+# 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
-+
-+ # 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.
-+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
-+ sed '=' <$as_myself |
-+ sed '
-+ N
-+ s,$,-,
-+ : loop
-+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-+ t loop
-+ s,-$,,
-+ s,^['$as_cr_digits']*\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;}
-+ { (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
-+ # 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= ;;
-+esac
-+
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+rm -f conf$$ conf$$.exe conf$$.file
-+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='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
-+
-+if mkdir -p . 2>/dev/null; then
-+ as_mkdir_p=:
-+else
-+ test -d ./-p && rmdir ./-p
-+ as_mkdir_p=false
-+fi
-+
-+as_executable_p="test -f"
-+
-+# 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'"
-+
-+# Sed expression to map a string onto a valid variable name.
-+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
-+# 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
-+
-+This file was extended by $as_me, which was
-+generated by GNU Autoconf 2.59. Invocation command line was
-+
-+ CONFIG_FILES = $CONFIG_FILES
-+ CONFIG_HEADERS = $CONFIG_HEADERS
-+ CONFIG_LINKS = $CONFIG_LINKS
-+ CONFIG_COMMANDS = $CONFIG_COMMANDS
-+ $ $0 $@
-+
-+_CSEOF
-+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
-+echo >&5
-+_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
-+
-+if test -n "$ac_config_commands"; then
-+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-+fi
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+ac_cs_usage="\
-+\`$as_me' instantiates files from templates according to the
-+current configuration.
-+
-+Usage: $0 [OPTIONS] [FILE]...
-+
-+ -h, --help print this help, then exit
-+ -V, --version print version number, 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
-+ --file=FILE[:TEMPLATE]
-+ instantiate the configuration file FILE
-+ --header=FILE[:TEMPLATE]
-+ instantiate the configuration header FILE
-+
-+Configuration files:
-+$config_files
-+
-+Configuration headers:
-+$config_headers
-+
-+Configuration commands:
-+$config_commands
-+
-+Report bugs to <bug-autoconf@gnu.org>."
-+_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'`\\"
-+
-+Copyright (C) 2003 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"
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+# If no file are specified by the user, then we need to provide default
-+# value. By we need to know if files were specified by the user.
-+ac_need_defaults=:
-+while test $# != 0
-+do
-+ case $1 in
-+ --*=*)
-+ 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 )
-+ debug=: ;;
-+ --file | --fil | --fi | --f )
-+ $ac_shift
-+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
-+ ac_need_defaults=false;;
-+ --header | --heade | --head | --hea )
-+ $ac_shift
-+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
-+ ac_need_defaults=false;;
-+ -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;}
-+ { (exit 1); exit 1; }; } ;;
-+
-+ *) ac_config_targets="$ac_config_targets $1" ;;
-+
-+ esac
-+ shift
-+done
-+
-+ac_configure_extra_args=
-+
-+if $ac_cs_silent; then
-+ exec 6>/dev/null
-+ ac_configure_extra_args="$ac_configure_extra_args --silent"
-+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
-+fi
-+
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<_ACEOF
-+#
-+# INIT-COMMANDS section.
-+#
-+
-+
-+
-+_ACEOF
-+
-+
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+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" ;;
-+ "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;;
-+ "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-+ "src/include/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/include/Makefile" ;;
-+ "src/lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/lib/Makefile" ;;
-+ "src/br2684/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/br2684/Makefile" ;;
-+ "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
-+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-+ *) { { 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
-+# bizarre bug on SunOS 4.1.3.
-+if $ac_need_defaults; then
-+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-+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,
-+# creating and moving files from /tmp can sometimes cause problems.
-+# Create a temporary directory, and hook for its removal unless debugging.
-+$debug ||
-+{
-+ trap 'exit_status=$?; rm -rf $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` &&
-+ test -n "$tmp" && test -d "$tmp"
-+} ||
-+{
-+ tmp=./confstat$$-$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.
-+#
-+
-+# 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,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-+s,@INSTALL_DATA@,$INSTALL_DATA,;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,@SET_MAKE@,$SET_MAKE,;t t
-+s,@LIBVER_CURRENT@,$LIBVER_CURRENT,;t t
-+s,@LIBVER_REVISION@,$LIBVER_REVISION,;t t
-+s,@LIBVER_AGE@,$LIBVER_AGE,;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,@LEX@,$LEX,;t t
-+s,@LEXLIB@,$LEXLIB,;t t
-+s,@LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t
-+s,@YACC@,$YACC,;t t
-+s,@LN_S@,$LN_S,;t t
-+s,@ECHO@,$ECHO,;t t
-+s,@RANLIB@,$RANLIB,;t t
-+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
-+s,@STRIP@,$STRIP,;t t
-+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
-+s,@CPP@,$CPP,;t t
-+s,@EGREP@,$EGREP,;t t
-+s,@LIBTOOL@,$LIBTOOL,;t t
-+s,@LIBTOOL_DEPS@,$LIBTOOL_DEPS,;t t
-+s,@PERL@,$PERL,;t t
-+s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;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
-+ fi
-+fi # test -n "$CONFIG_FILES"
-+
-+_ACEOF
-+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 ;;
-+ esac
-+
-+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
-+ 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; }; }; }
-+
-+ 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
-+
-+# 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 $INSTALL in
-+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
-+ esac
-+
-+ # 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; }
-+
-+ 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
-+_ACEOF
-+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'
-+
-+for ac_file in : $CONFIG_HEADERS; 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 ;;
-+ esac
-+
-+ 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
-+
-+# This sed command replaces #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]*,/* & */,
-+_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
-+ 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
-+ 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
-+
-+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 "$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
-+ fi
-+ else
-+ cat $tmp/config.h
-+ rm -f $tmp/config.h
-+ fi
-+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
-+
-+# 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
-+
-+
-+ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
-+echo "$as_me: executing $ac_dest commands" >&6;}
-+ case $ac_dest in
-+ default-1 ) test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h ;;
-+ esac
-+done
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+{ (exit 0); exit 0; }
-+_ACEOF
-+chmod +x $CONFIG_STATUS
-+ac_clean_files=$ac_clean_files_save
-+
-+
-+# configure is writing to config.log, and then calls config.status.
-+# config.status does its own redirection, appending to config.log.
-+# Unfortunately, on DOS this fails, as config.log is still kept open
-+# by configure, so config.status won't be able to write to it; its
-+# output is simply discarded. So we exec the FD to /dev/null,
-+# effectively closing config.log, so it can be properly (re)opened and
-+# appended to by config.status. When coming back to configure, we
-+# need to make the FD available again.
-+if test "$no_create" != yes; then
-+ ac_cs_success=:
-+ ac_config_status_args=
-+ test "$silent" = yes &&
-+ ac_config_status_args="$ac_config_status_args --quiet"
-+ exec 5>/dev/null
-+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-+ exec 5>>config.log
-+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-+ # would make configure fail if this is the last instruction.
-+ $ac_cs_success || { (exit 1); exit 1; }
-+fi
-+
-+
-diff -urN linux-atm.old/autom4te.cache/requests linux-atm.dev/autom4te.cache/requests
---- linux-atm.old/autom4te.cache/requests 1970-01-01 01:00:00.000000000 +0100
-+++ linux-atm.dev/autom4te.cache/requests 2005-08-23 01:12:41.188174872 +0200
-@@ -0,0 +1,116 @@
-+# This file was generated by Autom4te Sat Jan 8 16:59:54 PST 2005.
-+# It contains the lists of macros which have been traced.
-+# It can be safely removed.
-+
-+@request = (
-+ bless( [
-+ '0',
-+ 1,
-+ [
-+ '/usr/share/autoconf'
-+ ],
-+ [
-+ '/usr/share/autoconf/autoconf/autoconf.m4f',
-+ 'aclocal.m4',
-+ 'configure.in'
-+ ],
-+ {
-+ 'm4_pattern_forbid' => 1,
-+ 'AC_CONFIG_LIBOBJ_DIR' => 1,
-+ 'AC_TYPE_OFF_T' => 1,
-+ 'AC_C_VOLATILE' => 1,
-+ 'AC_FUNC_CLOSEDIR_VOID' => 1,
-+ 'AC_REPLACE_FNMATCH' => 1,
-+ 'AC_PROG_LIBTOOL' => 1,
-+ 'AC_FUNC_STAT' => 1,
-+ 'AC_HEADER_TIME' => 1,
-+ 'AC_FUNC_WAIT3' => 1,
-+ 'AM_AUTOMAKE_VERSION' => 1,
-+ 'AC_STRUCT_TM' => 1,
-+ 'AC_FUNC_LSTAT' => 1,
-+ 'AC_TYPE_MODE_T' => 1,
-+ 'AC_FUNC_GETMNTENT' => 1,
-+ 'AC_FUNC_STRTOD' => 1,
-+ 'AC_CHECK_HEADERS' => 1,
-+ 'AC_FUNC_STRNLEN' => 1,
-+ 'm4_sinclude' => 1,
-+ 'AC_PROG_CXX' => 1,
-+ 'AC_PATH_X' => 1,
-+ 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
-+ 'AC_PROG_AWK' => 1,
-+ '_m4_warn' => 1,
-+ 'AC_HEADER_STDC' => 1,
-+ 'AC_HEADER_MAJOR' => 1,
-+ 'AC_FUNC_ERROR_AT_LINE' => 1,
-+ 'AC_PROG_GCC_TRADITIONAL' => 1,
-+ 'AC_LIBSOURCE' => 1,
-+ 'AC_FUNC_MBRTOWC' => 1,
-+ 'AC_STRUCT_ST_BLOCKS' => 1,
-+ 'AC_TYPE_SIGNAL' => 1,
-+ 'AC_TYPE_UID_T' => 1,
-+ 'AC_CONFIG_AUX_DIR' => 1,
-+ 'AC_PROG_MAKE_SET' => 1,
-+ 'sinclude' => 1,
-+ 'm4_pattern_allow' => 1,
-+ 'AC_DEFINE_TRACE_LITERAL' => 1,
-+ 'AC_FUNC_STRERROR_R' => 1,
-+ 'AC_PROG_CC' => 1,
-+ 'AC_FUNC_FORK' => 1,
-+ 'AC_DECL_SYS_SIGLIST' => 1,
-+ 'AC_FUNC_VPRINTF' => 1,
-+ 'AC_FUNC_STRCOLL' => 1,
-+ 'AC_PROG_YACC' => 1,
-+ 'AC_INIT' => 1,
-+ 'AC_STRUCT_TIMEZONE' => 1,
-+ 'AC_FUNC_CHOWN' => 1,
-+ 'AC_SUBST' => 1,
-+ 'AC_FUNC_ALLOCA' => 1,
-+ 'AC_CANONICAL_HOST' => 1,
-+ 'AC_FUNC_GETPGRP' => 1,
-+ 'AC_PROG_RANLIB' => 1,
-+ 'AM_INIT_AUTOMAKE' => 1,
-+ 'AC_FUNC_SETPGRP' => 1,
-+ 'AC_CONFIG_SUBDIRS' => 1,
-+ 'AC_FUNC_MMAP' => 1,
-+ 'AC_FUNC_REALLOC' => 1,
-+ 'AC_TYPE_SIZE_T' => 1,
-+ 'AC_CONFIG_LINKS' => 1,
-+ 'AC_CHECK_TYPES' => 1,
-+ 'AC_CHECK_MEMBERS' => 1,
-+ 'AM_MAINTAINER_MODE' => 1,
-+ 'AC_FUNC_UTIME_NULL' => 1,
-+ 'AC_FUNC_SELECT_ARGTYPES' => 1,
-+ 'AC_FUNC_STRFTIME' => 1,
-+ 'AC_HEADER_STAT' => 1,
-+ 'AC_C_INLINE' => 1,
-+ 'AC_PROG_CPP' => 1,
-+ 'AC_TYPE_PID_T' => 1,
-+ 'AC_C_CONST' => 1,
-+ 'AC_PROG_LEX' => 1,
-+ 'AC_CONFIG_FILES' => 1,
-+ 'include' => 1,
-+ 'AC_FUNC_SETVBUF_REVERSED' => 1,
-+ 'AC_PROG_INSTALL' => 1,
-+ 'AM_GNU_GETTEXT' => 1,
-+ 'AC_FUNC_OBSTACK' => 1,
-+ 'AC_CHECK_LIB' => 1,
-+ 'AC_FUNC_MALLOC' => 1,
-+ 'AC_FUNC_GETGROUPS' => 1,
-+ 'AC_FUNC_GETLOADAVG' => 1,
-+ 'AH_OUTPUT' => 1,
-+ 'AC_FUNC_FSEEKO' => 1,
-+ 'AM_PROG_CC_C_O' => 1,
-+ 'AM_CONDITIONAL' => 1,
-+ 'AC_CANONICAL_SYSTEM' => 1,
-+ 'AC_FUNC_MKTIME' => 1,
-+ 'AC_CONFIG_HEADERS' => 1,
-+ 'AC_HEADER_SYS_WAIT' => 1,
-+ 'AC_FUNC_MEMCMP' => 1,
-+ 'AC_PROG_LN_S' => 1,
-+ 'm4_include' => 1,
-+ 'AC_HEADER_DIRENT' => 1,
-+ 'AC_CHECK_FUNCS' => 1
-+ }
-+ ], 'Autom4te::Request' )
-+ );
-+
-diff -urN linux-atm.old/autom4te.cache/traces.0 linux-atm.dev/autom4te.cache/traces.0
---- linux-atm.old/autom4te.cache/traces.0 1970-01-01 01:00:00.000000000 +0100
-+++ linux-atm.dev/autom4te.cache/traces.0 2005-08-23 01:12:40.958209832 +0200
-@@ -0,0 +1,426 @@
-+m4trace:configure.in:8: -1- AC_INIT([src/include/atm.h])
-+m4trace:configure.in:8: -1- m4_pattern_forbid([^_?A[CHUM]_])
-+m4trace:configure.in:8: -1- m4_pattern_forbid([_AC_])
-+m4trace:configure.in:8: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
-+m4trace:configure.in:8: -1- m4_pattern_allow([^AS_FLAGS$])
-+m4trace:configure.in:8: -1- m4_pattern_forbid([^_?m4_])
-+m4trace:configure.in:8: -1- m4_pattern_forbid([^dnl$])
-+m4trace:configure.in:8: -1- m4_pattern_forbid([^_?AS_])
-+m4trace:configure.in:8: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
-+m4trace:configure.in:8: -1- AC_SUBST([PATH_SEPARATOR])
-+m4trace:configure.in:8: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
-+m4trace:configure.in:8: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
-+m4trace:configure.in:8: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
-+m4trace:configure.in:8: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
-+m4trace:configure.in:8: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
-+m4trace:configure.in:8: -1- AC_SUBST([exec_prefix], [NONE])
-+m4trace:configure.in:8: -1- AC_SUBST([prefix], [NONE])
-+m4trace:configure.in:8: -1- AC_SUBST([program_transform_name], [s,x,x,])
-+m4trace:configure.in:8: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
-+m4trace:configure.in:8: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
-+m4trace:configure.in:8: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
-+m4trace:configure.in:8: -1- AC_SUBST([datadir], ['${prefix}/share'])
-+m4trace:configure.in:8: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
-+m4trace:configure.in:8: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
-+m4trace:configure.in:8: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
-+m4trace:configure.in:8: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
-+m4trace:configure.in:8: -1- AC_SUBST([includedir], ['${prefix}/include'])
-+m4trace:configure.in:8: -1- AC_SUBST([oldincludedir], ['/usr/include'])
-+m4trace:configure.in:8: -1- AC_SUBST([infodir], ['${prefix}/info'])
-+m4trace:configure.in:8: -1- AC_SUBST([mandir], ['${prefix}/man'])
-+m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
-+m4trace:configure.in:8: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
-+#undef PACKAGE_NAME])
-+m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
-+m4trace:configure.in:8: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
-+#undef PACKAGE_TARNAME])
-+m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
-+m4trace:configure.in:8: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
-+#undef PACKAGE_VERSION])
-+m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
-+m4trace:configure.in:8: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
-+#undef PACKAGE_STRING])
-+m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
-+m4trace:configure.in:8: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
-+#undef PACKAGE_BUGREPORT])
-+m4trace:configure.in:8: -1- AC_SUBST([build_alias])
-+m4trace:configure.in:8: -1- AC_SUBST([host_alias])
-+m4trace:configure.in:8: -1- AC_SUBST([target_alias])
-+m4trace:configure.in:8: -1- AC_SUBST([DEFS])
-+m4trace:configure.in:8: -1- AC_SUBST([ECHO_C])
-+m4trace:configure.in:8: -1- AC_SUBST([ECHO_N])
-+m4trace:configure.in:8: -1- AC_SUBST([ECHO_T])
-+m4trace:configure.in:8: -1- AC_SUBST([LIBS])
-+m4trace:configure.in:9: -1- AC_CONFIG_HEADERS([config.h])
-+m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete.
-+You should run autoupdate.], [autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from...
-+aclocal.m4:34: AM_CONFIG_HEADER is expanded from...
-+configure.in:9: the top level])
-+m4trace:configure.in:9: -3- _m4_warn([obsolete], [The macro `_AC_OUTPUT_COMMANDS_CNT' is obsolete.
-+You should run autoupdate.], [autoconf/status.m4:321: _AC_OUTPUT_COMMANDS_CNT is expanded from...
-+autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from...
-+aclocal.m4:34: AM_CONFIG_HEADER is expanded from...
-+configure.in:9: the top level])
-+m4trace:configure.in:12: -1- AC_CANONICAL_SYSTEM
-+m4trace:configure.in:12: -1- _m4_warn([obsolete], [The macro `AC_CANONICAL_SYSTEM' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:1660: AC_CANONICAL_SYSTEM is expanded from...
-+configure.in:12: the top level])
-+m4trace:configure.in:12: -1- AC_CANONICAL_HOST
-+m4trace:configure.in:12: -1- AC_SUBST([build], [$ac_cv_build])
-+m4trace:configure.in:12: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
-+m4trace:configure.in:12: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
-+m4trace:configure.in:12: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
-+m4trace:configure.in:12: -1- AC_SUBST([host], [$ac_cv_host])
-+m4trace:configure.in:12: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
-+m4trace:configure.in:12: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
-+m4trace:configure.in:12: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
-+m4trace:configure.in:12: -1- AC_SUBST([target], [$ac_cv_target])
-+m4trace:configure.in:12: -1- AC_SUBST([target_cpu], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
-+m4trace:configure.in:12: -1- AC_SUBST([target_vendor], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
-+m4trace:configure.in:12: -1- AC_SUBST([target_os], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
-+m4trace:configure.in:14: -1- AM_INIT_AUTOMAKE([linux-atm], [2.4.1])
-+m4trace:configure.in:14: -1- AM_AUTOMAKE_VERSION([1.4-p6])
-+m4trace:configure.in:14: -1- AC_PROG_INSTALL
-+m4trace:configure.in:14: -1- AC_SUBST([INSTALL_PROGRAM])
-+m4trace:configure.in:14: -1- AC_SUBST([INSTALL_SCRIPT])
-+m4trace:configure.in:14: -1- AC_SUBST([INSTALL_DATA])
-+m4trace:configure.in:14: -1- AC_SUBST([PACKAGE])
-+m4trace:configure.in:14: -1- AC_SUBST([VERSION])
-+m4trace:configure.in:14: -2- AC_DEFINE_TRACE_LITERAL([PACKAGE])
-+m4trace:configure.in:14: -2- AH_OUTPUT([PACKAGE], [/* Name of package */
-+#undef PACKAGE])
-+m4trace:configure.in:14: -2- AC_DEFINE_TRACE_LITERAL([VERSION])
-+m4trace:configure.in:14: -2- AH_OUTPUT([VERSION], [/* Version number of package */
-+#undef VERSION])
-+m4trace:configure.in:14: -1- AC_SUBST([ACLOCAL])
-+m4trace:configure.in:14: -1- AC_SUBST([AUTOCONF])
-+m4trace:configure.in:14: -1- AC_SUBST([AUTOMAKE])
-+m4trace:configure.in:14: -1- AC_SUBST([AUTOHEADER])
-+m4trace:configure.in:14: -1- AC_SUBST([MAKEINFO])
-+m4trace:configure.in:14: -1- AC_PROG_MAKE_SET
-+m4trace:configure.in:14: -1- AC_SUBST([SET_MAKE])
-+m4trace:configure.in:19: -1- AC_SUBST([LIBVER_CURRENT])
-+m4trace:configure.in:20: -1- AC_SUBST([LIBVER_REVISION])
-+m4trace:configure.in:21: -1- AC_SUBST([LIBVER_AGE])
-+m4trace:configure.in:24: -1- AC_PROG_CC
-+m4trace:configure.in:24: -1- AC_SUBST([CC])
-+m4trace:configure.in:24: -1- AC_SUBST([CFLAGS])
-+m4trace:configure.in:24: -1- AC_SUBST([LDFLAGS])
-+m4trace:configure.in:24: -1- AC_SUBST([CPPFLAGS])
-+m4trace:configure.in:24: -1- AC_SUBST([CC])
-+m4trace:configure.in:24: -1- AC_SUBST([ac_ct_CC])
-+m4trace:configure.in:24: -1- AC_SUBST([CC])
-+m4trace:configure.in:24: -1- AC_SUBST([ac_ct_CC])
-+m4trace:configure.in:24: -1- AC_SUBST([CC])
-+m4trace:configure.in:24: -1- AC_SUBST([CC])
-+m4trace:configure.in:24: -1- AC_SUBST([ac_ct_CC])
-+m4trace:configure.in:24: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
-+m4trace:configure.in:24: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-+m4trace:configure.in:25: -1- AC_SUBST([LEX])
-+m4trace:configure.in:25: -1- AC_PROG_LEX
-+m4trace:configure.in:25: -1- AC_SUBST([LEX])
-+m4trace:configure.in:25: -1- AC_CHECK_LIB([fl], [yywrap], [LEXLIB="-lfl"], [AC_CHECK_LIB(l, yywrap, LEXLIB="-ll")])
-+m4trace:configure.in:25: -1- AC_CHECK_LIB([l], [yywrap], [LEXLIB="-ll"])
-+m4trace:configure.in:25: -1- AC_SUBST([LEXLIB])
-+m4trace:configure.in:25: -1- AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root])
-+m4trace:configure.in:25: -1- AC_DEFINE_TRACE_LITERAL([YYTEXT_POINTER])
-+m4trace:configure.in:25: -1- AH_OUTPUT([YYTEXT_POINTER], [/* Define to 1 if `lex\' declares `yytext\' as a `char *\' by default, not a
-+ `char[]\'. */
-+#undef YYTEXT_POINTER])
-+m4trace:configure.in:25: -1- _m4_warn([obsolete], [The macro `AC_DECL_YYTEXT' is obsolete.
-+You should run autoupdate.], [autoconf/programs.m4:438: AC_DECL_YYTEXT is expanded from...
-+aclocal.m4:165: AM_PROG_LEX is expanded from...
-+configure.in:25: the top level])
-+m4trace:configure.in:25: -1- AC_PROG_LEX
-+m4trace:configure.in:25: -1- _m4_warn([syntax], [AC_PROG_LEX invoked multiple times], [autoconf/programs.m4:438: AC_DECL_YYTEXT is expanded from...
-+aclocal.m4:165: AM_PROG_LEX is expanded from...
-+configure.in:25: the top level])
-+m4trace:configure.in:26: -1- AC_PROG_YACC
-+m4trace:configure.in:26: -1- AC_SUBST([YACC])
-+m4trace:configure.in:27: -1- AC_PROG_INSTALL
-+m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM])
-+m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT])
-+m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA])
-+m4trace:configure.in:30: -1- AC_PROG_LIBTOOL
-+m4trace:configure.in:30: -1- AC_PROG_LN_S
-+m4trace:configure.in:30: -1- AC_SUBST([LN_S], [$as_ln_s])
-+m4trace:configure.in:30: -1- AC_SUBST([ECHO])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_CHECK_TOOL_PREFIX' is obsolete.
-+You should run autoupdate.], [autoconf/programs.m4:188: AC_CHECK_TOOL_PREFIX is expanded from...
-+configure.in:30: AC_CHECK_TOOL_PREFIX is required by...
-+aclocal.m4:3303: AC_PATH_MAGIC is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- AC_SUBST([RANLIB])
-+m4trace:configure.in:30: -1- AC_SUBST([ac_ct_RANLIB])
-+m4trace:configure.in:30: -1- AC_SUBST([STRIP])
-+m4trace:configure.in:30: -1- AC_SUBST([ac_ct_STRIP])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
-+You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE',
-+and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
-+You should run autoupdate.], [autoconf/c.m4:71: AC_LANG_C is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
-+You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:376: AC_FD_CC is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+aclocal.m4:509: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is expanded from...
-+configure.in:30: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is required by...
-+aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:376: AC_FD_CC is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+aclocal.m4:509: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is expanded from...
-+configure.in:30: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is required by...
-+aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:376: AC_FD_CC is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+aclocal.m4:509: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is expanded from...
-+configure.in:30: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is required by...
-+aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:376: AC_FD_CC is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+aclocal.m4:509: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is expanded from...
-+configure.in:30: AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE is required by...
-+aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries], [aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries], [aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure], [aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure], [aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:376: AC_FD_CC is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
-+autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
-+aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe], [aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe], [aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
-+You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from...
-+aclocal.m4:3110: _LT_AC_LTCONFIG_HACK is expanded from...
-+aclocal.m4:296: AC_LIBTOOL_SETUP is expanded from...
-+configure.in:30: AC_LIBTOOL_SETUP is required by...
-+aclocal.m4:183: AC_PROG_LIBTOOL is expanded from...
-+aclocal.m4:3701: AM_PROG_LIBTOOL is expanded from...
-+configure.in:30: the top level])
-+m4trace:configure.in:30: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
-+ [lt_cv_dlopen="dlopen"],
-+ [AC_CHECK_LIB([dl], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-+ [AC_CHECK_LIB([svld], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-+ [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+ ])
-+ ])
-+ ])
-+m4trace:configure.in:30: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
-+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-+ [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+ ])
-+m4trace:configure.in:30: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
-+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+ ])
-+m4trace:configure.in:30: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
-+m4trace:configure.in:30: -1- AC_CHECK_HEADERS([dlfcn.h])
-+m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
-+#undef HAVE_DLFCN_H])
-+m4trace:configure.in:30: -1- AC_HEADER_STDC
-+m4trace:configure.in:30: -1- AC_PROG_CPP
-+m4trace:configure.in:30: -1- AC_SUBST([CPP])
-+m4trace:configure.in:30: -1- AC_SUBST([CPPFLAGS])
-+m4trace:configure.in:30: -1- AC_SUBST([CPP])
-+m4trace:configure.in:30: -1- AC_SUBST([EGREP])
-+m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-+m4trace:configure.in:30: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
-+#undef STDC_HEADERS])
-+m4trace:configure.in:30: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-+ inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
-+m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
-+#undef HAVE_SYS_TYPES_H])
-+m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
-+#undef HAVE_SYS_STAT_H])
-+m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-+#undef HAVE_STDLIB_H])
-+m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-+#undef HAVE_STRING_H])
-+m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
-+#undef HAVE_MEMORY_H])
-+m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
-+#undef HAVE_STRINGS_H])
-+m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
-+#undef HAVE_INTTYPES_H])
-+m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
-+#undef HAVE_STDINT_H])
-+m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-+#undef HAVE_UNISTD_H])
-+m4trace:configure.in:30: -1- AC_SUBST([LIBTOOL])
-+m4trace:configure.in:31: -1- AC_SUBST([LIBTOOL_DEPS])
-+m4trace:configure.in:34: -1- AC_SUBST([PERL], [$ac_cv_path_PERL])
-+m4trace:configure.in:35: -1- AC_SUBST([PERL])
-+m4trace:configure.in:51: -1- AC_CHECK_LIB([resolv], [main], [], [{ { echo "$as_me:$LINENO: error: *** Unable to find libresolv!!!" >&5
-+echo "$as_me: error: *** Unable to find libresolv!!!" >&2;}
-+ { (exit 1); exit 1; }; }
-+])
-+m4trace:configure.in:51: -1- AH_OUTPUT([HAVE_LIBRESOLV], [/* Define to 1 if you have the `resolv\' library (-lresolv). */
-+#undef HAVE_LIBRESOLV])
-+m4trace:configure.in:51: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBRESOLV])
-+m4trace:configure.in:62: -1- AC_DEFINE_TRACE_LITERAL([YY_USE_CONST])
-+m4trace:configure.in:68: -1- AC_DEFINE_TRACE_LITERAL([ATMSIGD_CONF])
-+m4trace:configure.in:86: -2- AC_DEFINE_TRACE_LITERAL([DYNAMIC_UNI])
-+m4trace:configure.in:87: -1- AC_DEFINE_TRACE_LITERAL([UNI30])
-+m4trace:configure.in:87: -1- AC_DEFINE_TRACE_LITERAL([UNI31])
-+m4trace:configure.in:87: -1- AC_DEFINE_TRACE_LITERAL([UNI40])
-+m4trace:configure.in:87: -1- AC_DEFINE_TRACE_LITERAL([DYNAMIC_UNI])
-+m4trace:configure.in:98: -1- AC_DEFINE_TRACE_LITERAL([ALLOW_UNI30])
-+m4trace:configure.in:109: -1- AC_DEFINE_TRACE_LITERAL([Q2963_1])
-+m4trace:configure.in:113: -2- AC_DEFINE_TRACE_LITERAL([CISCO])
-+m4trace:configure.in:118: -2- AC_DEFINE_TRACE_LITERAL([THOMFLEX])
-+m4trace:configure.in:123: -1- AC_DEFINE_TRACE_LITERAL([BROKEN_POLL])
-+m4trace:configure.in:127: -2- AC_DEFINE_TRACE_LITERAL([MPOA_1_1])
-+m4trace:configure.in:143: -1- AC_CHECK_LIB([mpr], [main], [], [
-+ AC_MSG_WARN([*** Could not find libmpr! Is MPR installed?])
-+
-+ ])
-+m4trace:configure.in:143: -1- AH_OUTPUT([HAVE_LIBMPR], [/* Define to 1 if you have the `mpr\' library (-lmpr). */
-+#undef HAVE_LIBMPR])
-+m4trace:configure.in:143: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBMPR])
-+m4trace:configure.in:157: -1- AC_CONFIG_FILES([Makefile \
-+ doc/Makefile \
-+ m4/Makefile \
-+ src/Makefile \
-+ src/include/Makefile \
-+ src/lib/Makefile \
-+ src/br2684/Makefile \
-+ ])
-+m4trace:configure.in:157: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
-+You should run autoupdate.], [])
-+m4trace:configure.in:157: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
-+m4trace:configure.in:157: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
-diff -urN linux-atm.old/configure linux-atm.dev/configure
---- linux-atm.old/configure 2005-08-23 01:12:10.846787000 +0200
-+++ linux-atm.dev/configure 2005-08-23 01:12:41.187175024 +0200
-@@ -1,9 +1,8 @@
- #! /bin/sh
- # Guess values for system-dependent variables and create Makefiles.
--# Generated by GNU Autoconf 2.57.
-+# Generated by GNU Autoconf 2.59.
- #
--# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
--# Free Software Foundation, Inc.
-+# Copyright (C) 2003 Free Software Foundation, Inc.
- # This configure script is free software; the Free Software Foundation
- # gives unlimited permission to copy, distribute and modify it.
- ## --------------------- ##
-@@ -20,9 +19,10 @@
- elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
- fi
-+DUALCASE=1; export DUALCASE # for MKS sh
-
- # Support unset when possible.
--if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
-+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
- else
- as_unset=false
-@@ -41,7 +41,7 @@
- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
- LC_TELEPHONE LC_TIME
- do
-- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
-+ 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
-@@ -218,16 +218,17 @@
- if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
- else
-+ test -d ./-p && rmdir ./-p
- as_mkdir_p=false
- fi
-
- as_executable_p="test -f"
-
- # Sed expression to map a string onto a valid CPP name.
--as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
- # Sed expression to map a string onto a valid variable name.
--as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
-+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
- # IFS
-@@ -826,7 +827,7 @@
-
- # Be sure to have absolute paths.
- for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
-- localstatedir libdir includedir oldincludedir infodir mandir
-+ localstatedir libdir includedir oldincludedir infodir mandir
- do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
-@@ -866,10 +867,10 @@
- # Try the directory containing this script, then its parent.
- ac_confdir=`(dirname "$0") 2>/dev/null ||
- $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-- X"$0" : 'X\(//\)[^/]' \| \
-- X"$0" : 'X\(//\)$' \| \
-- X"$0" : 'X\(/\)' \| \
-- . : '\(.\)' 2>/dev/null ||
-+ X"$0" : 'X\(//\)[^/]' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ X"$0" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
- echo X"$0" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-@@ -961,9 +962,9 @@
- cat <<_ACEOF
- Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
-- [$ac_default_prefix]
-+ [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
-- [PREFIX]
-+ [PREFIX]
-
- By default, \`make install' will install all the files in
- \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-@@ -1071,12 +1072,45 @@
- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_builddir$srcdir ;;
- esac
--# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
--# absolute.
--ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
--ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
--ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
--ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-+
-+# 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.
-@@ -1087,13 +1121,13 @@
- echo
- $SHELL $ac_srcdir/configure --help=recursive
- elif test -f $ac_srcdir/configure.ac ||
-- test -f $ac_srcdir/configure.in; then
-+ test -f $ac_srcdir/configure.in; then
- echo
- $ac_configure --help
- else
- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi
-- cd $ac_popdir
-+ cd "$ac_popdir"
- done
- fi
-
-@@ -1101,8 +1135,7 @@
- if $ac_init_version; then
- cat <<\_ACEOF
-
--Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
--Free Software Foundation, Inc.
-+Copyright (C) 2003 Free Software Foundation, Inc.
- This configure script is free software; the Free Software Foundation
- gives unlimited permission to copy, distribute and modify it.
- _ACEOF
-@@ -1114,7 +1147,7 @@
- running configure, to aid debugging if configure makes a mistake.
-
- It was created by $as_me, which was
--generated by GNU Autoconf 2.57. Invocation command line was
-+generated by GNU Autoconf 2.59. Invocation command line was
-
- $ $0 $@
-
-@@ -1191,19 +1224,19 @@
- 2)
- ac_configure_args1="$ac_configure_args1 '$ac_arg'"
- if test $ac_must_keep_next = true; then
-- ac_must_keep_next=false # Got value, back to normal.
-+ ac_must_keep_next=false # Got value, back to normal.
- else
-- case $ac_arg in
-- *=* | --config-cache | -C | -disable-* | --disable-* \
-- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-- | -with-* | --with-* | -without-* | --without-* | --x)
-- case "$ac_configure_args0 " in
-- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-- esac
-- ;;
-- -* ) ac_must_keep_next=true ;;
-- esac
-+ case $ac_arg in
-+ *=* | --config-cache | -C | -disable-* | --disable-* \
-+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-+ | -with-* | --with-* | -without-* | --without-* | --x)
-+ case "$ac_configure_args0 " in
-+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-+ esac
-+ ;;
-+ -* ) ac_must_keep_next=true ;;
-+ esac
- fi
- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
- # Get rid of the leading space.
-@@ -1237,12 +1270,12 @@
- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
- *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"
-+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
- }
-@@ -1271,7 +1304,7 @@
- for ac_var in $ac_subst_files
- do
- eval ac_val=$`echo $ac_var`
-- echo "$ac_var='"'"'$ac_val'"'"'"
-+ echo "$ac_var='"'"'$ac_val'"'"'"
- done | sort
- echo
- fi
-@@ -1370,7 +1403,7 @@
- # 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
-+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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"
-@@ -1387,13 +1420,13 @@
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
-- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
- echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
-+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
- echo "$as_me: former value: $ac_old_val" >&2;}
-- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
-+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
- echo "$as_me: current value: $ac_new_val" >&2;}
-- ac_cache_corrupted=:
-+ ac_cache_corrupted=:
- fi;;
- esac
- # Pass precious variables to config.status.
-@@ -1567,6 +1600,7 @@
- # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
- # AFS /usr/afsws/bin/install, which mishandles nonexistent args
- # 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
-@@ -1583,6 +1617,7 @@
- case $as_dir/ in
- ./ | .// | /cC/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
-@@ -1590,20 +1625,20 @@
- # 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 $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.
-- :
-- elif test $ac_prog = install &&
-- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-- # program-specific install script used by HP pwplus--don't use.
-- :
-- else
-- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-- break 3
-- fi
-- fi
-+ if $as_executable_p "$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.
-+ :
-+ elif test $ac_prog = install &&
-+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-+ # program-specific install script used by HP pwplus--don't use.
-+ :
-+ else
-+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-+ break 3
-+ fi
-+ fi
- done
- done
- ;;
-@@ -1693,7 +1728,7 @@
-
- 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_,'`
-+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 $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -2163,7 +2198,6 @@
- (exit $ac_status); }
-
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -2183,8 +2217,8 @@
- # 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" >&5
--echo $ECHO_N "checking for C compiler default output... $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
-@@ -2204,23 +2238,23 @@
- 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.
-- ;;
-+ # This is the source file.
-+ ;;
- [ab].out )
-- # We found the default executable, but exeext='' is most
-- # certainly right.
-- break;;
-+ # 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
-- 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
-+ break;;
- * )
-- break;;
-+ break;;
- esac
- done
- else
-@@ -2294,8 +2328,8 @@
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-- export ac_cv_exeext
-- break;;
-+ export ac_cv_exeext
-+ break;;
- * ) break;;
- esac
- done
-@@ -2320,7 +2354,6 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -2371,7 +2404,6 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -2391,11 +2423,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -2408,7 +2449,7 @@
-
- ac_compiler_gnu=no
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
- fi
-@@ -2424,7 +2465,6 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -2441,11 +2481,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -2458,7 +2507,7 @@
-
- ac_cv_prog_cc_g=no
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+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
-@@ -2485,7 +2534,6 @@
- ac_cv_prog_cc_stdc=no
- ac_save_CC=$CC
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -2513,6 +2561,16 @@
- 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);};
-@@ -2539,11 +2597,20 @@
- CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -2556,7 +2623,7 @@
- sed 's/^/| /' conftest.$ac_ext >&5
-
- fi
--rm -f conftest.$ac_objext
-+rm -f conftest.err conftest.$ac_objext
- done
- rm -f conftest.$ac_ext conftest.$ac_objext
- CC=$ac_save_CC
-@@ -2584,11 +2651,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -2603,7 +2679,6 @@
- 'void exit (int);'
- do
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -2621,11 +2696,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -2638,9 +2722,8 @@
-
- continue
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -2657,11 +2740,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -2673,7 +2765,7 @@
- sed 's/^/| /' conftest.$ac_ext >&5
-
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
- rm -f conftest*
- if test -n "$ac_declaration"; then
-@@ -2687,7 +2779,7 @@
- sed 's/^/| /' conftest.$ac_ext >&5
-
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+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'
-@@ -2788,7 +2880,6 @@
- ac_check_lib_save_LIBS=$LIBS
- LIBS="-lfl $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -2812,11 +2903,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -2829,7 +2929,8 @@
-
- ac_cv_lib_fl_yywrap=no
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+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
-@@ -2845,7 +2946,6 @@
- ac_check_lib_save_LIBS=$LIBS
- LIBS="-ll $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -2869,11 +2969,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -2886,7 +2995,8 @@
-
- ac_cv_lib_l_yywrap=no
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+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
-@@ -2948,11 +3058,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -2964,7 +3083,8 @@
- sed 's/^/| /' conftest.$ac_ext >&5
-
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
- LIBS=$ac_save_LIBS
- rm -f "${LEX_OUTPUT_ROOT}.c"
-
-@@ -3033,6 +3153,7 @@
- # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
- # AFS /usr/afsws/bin/install, which mishandles nonexistent args
- # 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
-@@ -3049,6 +3170,7 @@
- case $as_dir/ in
- ./ | .// | /cC/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
-@@ -3056,20 +3178,20 @@
- # 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 $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.
-- :
-- elif test $ac_prog = install &&
-- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-- # program-specific install script used by HP pwplus--don't use.
-- :
-- else
-- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-- break 3
-- fi
-- fi
-+ if $as_executable_p "$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.
-+ :
-+ elif test $ac_prog = install &&
-+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-+ # program-specific install script used by HP pwplus--don't use.
-+ :
-+ else
-+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-+ break 3
-+ fi
-+ fi
- done
- done
- ;;
-@@ -3842,7 +3964,6 @@
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -3853,7 +3974,7 @@
- #else
- # include <assert.h>
- #endif
-- Syntax error
-+ Syntax error
- _ACEOF
- if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-@@ -3865,6 +3986,7 @@
- (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
-@@ -3885,7 +4007,6 @@
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -3903,6 +4024,7 @@
- (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
-@@ -3949,7 +4071,6 @@
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -3960,7 +4081,7 @@
- #else
- # include <assert.h>
- #endif
-- Syntax error
-+ Syntax error
- _ACEOF
- if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-@@ -3972,6 +4093,7 @@
- (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
-@@ -3992,7 +4114,6 @@
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -4010,6 +4131,7 @@
- (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
-@@ -4070,7 +4192,6 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -4091,11 +4212,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -4108,12 +4238,11 @@
-
- ac_cv_header_stdc=no
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+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
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -4135,7 +4264,6 @@
- if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -4160,7 +4288,6 @@
- :
- else
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -4172,9 +4299,9 @@
- # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
- #else
- # define ISLOWER(c) \
-- (('a' <= (c) && (c) <= 'i') \
-- || ('j' <= (c) && (c) <= 'r') \
-- || ('s' <= (c) && (c) <= 'z'))
-+ (('a' <= (c) && (c) <= 'i') \
-+ || ('j' <= (c) && (c) <= 'r') \
-+ || ('s' <= (c) && (c) <= 'z'))
- # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
- #endif
-
-@@ -4185,7 +4312,7 @@
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
-- || toupper (i) != TOUPPER (i))
-+ || toupper (i) != TOUPPER (i))
- exit(2);
- exit (0);
- }
-@@ -4235,7 +4362,7 @@
-
-
- for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-- inttypes.h stdint.h unistd.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
-@@ -4244,7 +4371,6 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -4256,11 +4382,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -4273,7 +4408,7 @@
-
- eval "$as_ac_Header=no"
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+rm -f 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
-@@ -4304,7 +4439,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
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -4315,11 +4449,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -4332,7 +4475,7 @@
-
- ac_header_compiler=no
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+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
-
-@@ -4340,7 +4483,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
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -4358,6 +4500,7 @@
- (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
-@@ -4377,33 +4520,32 @@
- echo "${ECHO_T}$ac_header_preproc" >&6
-
- # So? What about this header?
--case $ac_header_compiler:$ac_header_preproc in
-- yes:no )
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+ yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
- echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
--echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-- (
-- cat <<\_ASBOX
--## ------------------------------------ ##
--## Report this to bug-autoconf@gnu.org. ##
--## ------------------------------------ ##
--_ASBOX
-- ) |
-- sed "s/^/$as_me: WARNING: /" >&2
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
- ;;
-- no:yes )
-+ no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
- echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
--echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
- 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 bug-autoconf@gnu.org. ##
--## ------------------------------------ ##
-+## ------------------------------------------ ##
-+## Report this to the AC_PACKAGE_NAME lists. ##
-+## ------------------------------------------ ##
- _ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
-@@ -4414,7 +4556,7 @@
- if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- eval "$as_ac_Header=$ac_header_preproc"
-+ 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
-@@ -4749,7 +4891,7 @@
- case $host in
- *-*-irix6*)
- # Find out which ABI we are using.
-- echo '#line 4752 "configure"' > conftest.$ac_ext
-+ echo '#line 4894 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
-@@ -4788,7 +4930,6 @@
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -4805,11 +4946,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -4822,7 +4972,8 @@
-
- lt_cv_cc_needs_belf=no
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
- ac_ext=c
- ac_cpp='$CPP $CPPFLAGS'
- ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-@@ -5117,7 +5268,6 @@
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -5134,11 +5284,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -5167,7 +5326,7 @@
- lt_cv_prog_cc_pic_works=no
-
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$save_CFLAGS"
-
- fi
-@@ -5205,7 +5364,6 @@
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -5222,11 +5380,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -5238,7 +5405,8 @@
- sed 's/^/| /' conftest.$ac_ext >&5
-
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$save_LDFLAGS"
-
- fi
-@@ -5278,7 +5446,7 @@
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
- compiler_c_o=no
--if { (eval echo configure:5281: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
-+if { (eval echo configure:5449: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s out/conftest.err; then
-@@ -5319,7 +5487,6 @@
- save_objext="$ac_objext"
- ac_objext=lo
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -5336,11 +5503,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -5359,7 +5535,7 @@
- sed 's/^/| /' conftest.$ac_ext >&5
-
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_objext="$save_objext"
- CFLAGS="$save_CFLAGS"
-
-@@ -5404,7 +5580,6 @@
- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
- compiler_rtti_exceptions=no
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -5421,11 +5596,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -5444,7 +5628,7 @@
- sed 's/^/| /' conftest.$ac_ext >&5
-
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$save_CFLAGS"
- echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5
- echo "${ECHO_T}$compiler_rtti_exceptions" >&6
-@@ -6704,21 +6888,28 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
-+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define shl_load innocuous_shl_load
-+
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shl_load (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-+
- #ifdef __STDC__
- # include <limits.h>
- #else
- # include <assert.h>
- #endif
-+
-+#undef shl_load
-+
- /* Override any gcc2 internal prototype to avoid an error. */
- #ifdef __cplusplus
- extern "C"
-@@ -6749,11 +6940,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -6766,7 +6966,8 @@
-
- ac_cv_func_shl_load=no
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
- fi
- echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
- echo "${ECHO_T}$ac_cv_func_shl_load" >&6
-@@ -6781,7 +6982,6 @@
- ac_check_lib_save_LIBS=$LIBS
- LIBS="-ldld $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -6805,11 +7005,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -6822,7 +7031,8 @@
-
- ac_cv_lib_dld_shl_load=no
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+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_dld_shl_load" >&5
-@@ -6836,21 +7046,28 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
-+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define dlopen innocuous_dlopen
-+
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-+
- #ifdef __STDC__
- # include <limits.h>
- #else
- # include <assert.h>
- #endif
-+
-+#undef dlopen
-+
- /* Override any gcc2 internal prototype to avoid an error. */
- #ifdef __cplusplus
- extern "C"
-@@ -6881,11 +7098,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -6898,7 +7124,8 @@
-
- ac_cv_func_dlopen=no
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
- fi
- echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
- echo "${ECHO_T}$ac_cv_func_dlopen" >&6
-@@ -6913,7 +7140,6 @@
- ac_check_lib_save_LIBS=$LIBS
- LIBS="-ldl $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -6937,11 +7163,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -6954,7 +7189,8 @@
-
- ac_cv_lib_dl_dlopen=no
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+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_dl_dlopen" >&5
-@@ -6970,7 +7206,6 @@
- ac_check_lib_save_LIBS=$LIBS
- LIBS="-lsvld $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -6994,11 +7229,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -7011,7 +7255,8 @@
-
- ac_cv_lib_svld_dlopen=no
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+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_svld_dlopen" >&5
-@@ -7027,7 +7272,6 @@
- ac_check_lib_save_LIBS=$LIBS
- LIBS="-ldld $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -7051,11 +7295,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -7068,7 +7321,8 @@
-
- ac_cv_lib_dld_dld_link=no
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+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_dld_dld_link" >&5
-@@ -7123,7 +7377,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 7126 "configure"
-+#line 7380 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -7221,7 +7475,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 7224 "configure"
-+#line 7478 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -8005,7 +8259,6 @@
- echo "$as_me:$LINENO: checking asm/errno.h usability" >&5
- echo $ECHO_N "checking asm/errno.h usability... $ECHO_C" >&6
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -8016,11 +8269,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -8033,7 +8295,7 @@
-
- ac_header_compiler=no
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+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
-
-@@ -8041,7 +8303,6 @@
- echo "$as_me:$LINENO: checking asm/errno.h presence" >&5
- echo $ECHO_N "checking asm/errno.h presence... $ECHO_C" >&6
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -8059,6 +8320,7 @@
- (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
-@@ -8078,33 +8340,32 @@
- echo "${ECHO_T}$ac_header_preproc" >&6
-
- # So? What about this header?
--case $ac_header_compiler:$ac_header_preproc in
-- yes:no )
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+ yes:no: )
- { echo "$as_me:$LINENO: WARNING: asm/errno.h: accepted by the compiler, rejected by the preprocessor!" >&5
- echo "$as_me: WARNING: asm/errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-- { echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&5
--echo "$as_me: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&2;}
-- (
-- cat <<\_ASBOX
--## ------------------------------------ ##
--## Report this to bug-autoconf@gnu.org. ##
--## ------------------------------------ ##
--_ASBOX
-- ) |
-- sed "s/^/$as_me: WARNING: /" >&2
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: asm/errno.h: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
- ;;
-- no:yes )
-+ no:yes:* )
- { echo "$as_me:$LINENO: WARNING: asm/errno.h: present but cannot be compiled" >&5
- echo "$as_me: WARNING: asm/errno.h: present but cannot be compiled" >&2;}
-- { echo "$as_me:$LINENO: WARNING: asm/errno.h: check for missing prerequisite headers?" >&5
--echo "$as_me: WARNING: asm/errno.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: asm/errno.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: asm/errno.h: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: asm/errno.h: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&5
- echo "$as_me: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: asm/errno.h: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: asm/errno.h: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
--## ------------------------------------ ##
--## Report this to bug-autoconf@gnu.org. ##
--## ------------------------------------ ##
-+## ------------------------------------------ ##
-+## Report this to the AC_PACKAGE_NAME lists. ##
-+## ------------------------------------------ ##
- _ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
-@@ -8145,7 +8406,6 @@
- echo "$as_me:$LINENO: checking linux/atmsap.h usability" >&5
- echo $ECHO_N "checking linux/atmsap.h usability... $ECHO_C" >&6
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -8156,11 +8416,20 @@
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&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'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -8173,7 +8442,7 @@
-
- ac_header_compiler=no
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+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
-
-@@ -8181,7 +8450,6 @@
- echo "$as_me:$LINENO: checking linux/atmsap.h presence" >&5
- echo $ECHO_N "checking linux/atmsap.h presence... $ECHO_C" >&6
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -8199,6 +8467,7 @@
- (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
-@@ -8218,33 +8487,32 @@
- echo "${ECHO_T}$ac_header_preproc" >&6
-
- # So? What about this header?
--case $ac_header_compiler:$ac_header_preproc in
-- yes:no )
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+ yes:no: )
- { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: accepted by the compiler, rejected by the preprocessor!" >&5
- echo "$as_me: WARNING: linux/atmsap.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-- { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&5
--echo "$as_me: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&2;}
-- (
-- cat <<\_ASBOX
--## ------------------------------------ ##
--## Report this to bug-autoconf@gnu.org. ##
--## ------------------------------------ ##
--_ASBOX
-- ) |
-- sed "s/^/$as_me: WARNING: /" >&2
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
- ;;
-- no:yes )
-+ no:yes:* )
- { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: present but cannot be compiled" >&5
- echo "$as_me: WARNING: linux/atmsap.h: present but cannot be compiled" >&2;}
-- { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&5
--echo "$as_me: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&5
- echo "$as_me: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: linux/atmsap.h: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: linux/atmsap.h: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
--## ------------------------------------ ##
--## Report this to bug-autoconf@gnu.org. ##
--## ------------------------------------ ##
-+## ------------------------------------------ ##
-+## Report this to the AC_PACKAGE_NAME lists. ##
-+## ------------------------------------------ ##
- _ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
-@@ -8281,7 +8549,6 @@
- ac_check_lib_save_LIBS=$LIBS
- LIBS="-lresolv $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -8299,11 +8566,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -8316,7 +8592,8 @@
-
- ac_cv_lib_resolv_main=no
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+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_resolv_main" >&5
-@@ -8477,7 +8754,6 @@
- ac_check_lib_save_LIBS=$LIBS
- LIBS="-lmpr $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
--#line $LINENO "configure"
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -8495,11 +8771,20 @@
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&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 -s conftest$ac_exeext'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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=$?
-@@ -8512,7 +8797,8 @@
-
- ac_cv_lib_mpr_main=no
- fi
--rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+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_mpr_main" >&5
-@@ -8539,7 +8825,7 @@
- fi;
-
-
-- ac_config_files="$ac_config_files Makefile doc/Makefile m4/Makefile src/Makefile src/include/Makefile src/lib/Makefile src/test/Makefile src/debug/Makefile src/qgen/Makefile src/saal/Makefile src/sigd/Makefile src/maint/Makefile src/arpd/Makefile src/ilmid/Makefile src/ilmid/asn1/Makefile src/man/Makefile src/led/Makefile src/lane/Makefile src/mpoad/Makefile src/switch/Makefile src/switch/debug/Makefile src/switch/tcp/Makefile src/config/Makefile src/config/init-redhat/Makefile src/extra/Makefile src/extra/linux-atm.spec src/extra/ANS/Makefile"
-+ ac_config_files="$ac_config_files Makefile doc/Makefile m4/Makefile src/Makefile src/include/Makefile src/lib/Makefile src/br2684/Makefile"
- 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
-@@ -8568,13 +8854,13 @@
- # `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"
-+ "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"
-+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
- } |
-@@ -8604,13 +8890,13 @@
- # 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[ ]*=/{
-+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
- s/:*\$(srcdir):*/:/;
- s/:*\${srcdir}:*/:/;
- s/:*@srcdir@:*/:/;
--s/^\([^=]*=[ ]*\):*/\1/;
-+s/^\([^=]*=[ ]*\):*/\1/;
- s/:*$//;
--s/^[^=]*=[ ]*$//;
-+s/^[^=]*=[ ]*$//;
- }'
- fi
-
-@@ -8621,7 +8907,7 @@
- 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$//'`
-+ 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'
-@@ -8665,9 +8951,10 @@
- elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
- fi
-+DUALCASE=1; export DUALCASE # for MKS sh
-
- # Support unset when possible.
--if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
-+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
- else
- as_unset=false
-@@ -8686,7 +8973,7 @@
- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
- LC_TELEPHONE LC_TIME
- do
-- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
-+ 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
-@@ -8865,16 +9152,17 @@
- if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
- else
-+ test -d ./-p && rmdir ./-p
- as_mkdir_p=false
- fi
-
- as_executable_p="test -f"
-
- # Sed expression to map a string onto a valid CPP name.
--as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
- # Sed expression to map a string onto a valid variable name.
--as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
-+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
- # IFS
-@@ -8901,7 +9189,7 @@
- cat >&5 <<_CSEOF
-
- This file was extended by $as_me, which was
--generated by GNU Autoconf 2.57. Invocation command line was
-+generated by GNU Autoconf 2.59. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
-@@ -8945,9 +9233,9 @@
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
-- instantiate the configuration file FILE
-+ instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
-- instantiate the configuration header FILE
-+ instantiate the configuration header FILE
-
- Configuration files:
- $config_files
-@@ -8964,11 +9252,10 @@
- cat >>$CONFIG_STATUS <<_ACEOF
- ac_cs_version="\\
- config.status
--configured by $0, generated by GNU Autoconf 2.57,
-+configured by $0, generated by GNU Autoconf 2.59,
- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-
--Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
--Free Software Foundation, Inc.
-+Copyright (C) 2003 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
-@@ -9080,27 +9367,7 @@
- "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
- "src/include/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/include/Makefile" ;;
- "src/lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/lib/Makefile" ;;
-- "src/test/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/test/Makefile" ;;
-- "src/debug/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/debug/Makefile" ;;
-- "src/qgen/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/qgen/Makefile" ;;
-- "src/saal/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/saal/Makefile" ;;
-- "src/sigd/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/sigd/Makefile" ;;
-- "src/maint/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/maint/Makefile" ;;
-- "src/arpd/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/arpd/Makefile" ;;
-- "src/ilmid/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/ilmid/Makefile" ;;
-- "src/ilmid/asn1/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/ilmid/asn1/Makefile" ;;
-- "src/man/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/man/Makefile" ;;
-- "src/led/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/led/Makefile" ;;
-- "src/lane/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/lane/Makefile" ;;
-- "src/mpoad/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/mpoad/Makefile" ;;
-- "src/switch/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/switch/Makefile" ;;
-- "src/switch/debug/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/switch/debug/Makefile" ;;
-- "src/switch/tcp/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/switch/tcp/Makefile" ;;
-- "src/config/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/config/Makefile" ;;
-- "src/config/init-redhat/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/config/init-redhat/Makefile" ;;
-- "src/extra/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/Makefile" ;;
-- "src/extra/linux-atm.spec" ) CONFIG_FILES="$CONFIG_FILES src/extra/linux-atm.spec" ;;
-- "src/extra/ANS/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/ANS/Makefile" ;;
-+ "src/br2684/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/br2684/Makefile" ;;
- "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-@@ -9267,9 +9534,9 @@
- (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"
-+ 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"
-+ 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
-@@ -9287,21 +9554,21 @@
- # 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,:.*,,'` ;;
-+ 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=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
- esac
-
- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
- 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 ||
-+ 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; }
-@@ -9317,10 +9584,10 @@
- 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 ||
-+ 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; }
-@@ -9358,12 +9625,45 @@
- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_builddir$srcdir ;;
- esac
--# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
--# absolute.
--ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
--ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
--ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
--ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-+
-+# 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 $INSTALL in
-@@ -9371,11 +9671,6 @@
- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
- esac
-
-- 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. */
-@@ -9385,7 +9680,7 @@
- configure_input="$ac_file. "
- fi
- configure_input=$configure_input"Generated from `echo $ac_file_in |
-- sed 's,.*/,,'` by configure."
-+ sed 's,.*/,,'` by configure."
-
- # First look for the input files in the build tree, otherwise in the
- # src tree.
-@@ -9394,26 +9689,32 @@
- 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
-+ # 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;;
-+ 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
-+ 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;;
-+ fi;;
- esac
- done` || { (exit 1); exit 1; }
-+
-+ 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
- _ACEOF
- cat >>$CONFIG_STATUS <<_ACEOF
- sed "$ac_vpsub
-@@ -9453,12 +9754,12 @@
- # 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_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_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
- ac_uB='$,\1#\2define\3'
- ac_uC=' '
- ac_uD=',;t'
-@@ -9467,11 +9768,11 @@
- # 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,:.*,,'` ;;
-+ 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=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
- esac
-
-@@ -9485,28 +9786,29 @@
- 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
-+ # 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;;
-+ # 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
-+ 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;;
-+ fi;;
- esac
- done` || { (exit 1); exit 1; }
- # Remove the trailing spaces.
-- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
-+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
-
- _ACEOF
-
-@@ -9529,9 +9831,9 @@
- s,[\\$`],\\&,g
- t clear
- : clear
--s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
-+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
-+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
-@@ -9545,13 +9847,13 @@
- # 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]*,/* & */,
-+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
- _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 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
-@@ -9560,7 +9862,7 @@
- # 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
-+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
- # Work around the forget-to-reset-the-flag bug.
- echo 't clr' >>$CONFIG_STATUS
- echo ': clr' >>$CONFIG_STATUS
-@@ -9587,7 +9889,7 @@
- # 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
-+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
- # Work around the forget-to-reset-the-flag bug.
- echo 't clr' >>$CONFIG_STATUS
- echo ': clr' >>$CONFIG_STATUS
-@@ -9621,10 +9923,10 @@
- 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 ||
-+ 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; }
-@@ -9640,10 +9942,10 @@
- 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 ||
-+ 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; }
-@@ -9675,16 +9977,41 @@
- 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 ||
-+ 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
-@@ -9710,12 +10037,45 @@
- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_builddir$srcdir ;;
- esac
--# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
--# absolute.
--ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
--ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
--ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
--ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-+
-+# 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
-
-
- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
-diff -urN linux-atm.old/doc/Makefile.in linux-atm.dev/doc/Makefile.in
---- linux-atm.old/doc/Makefile.in 2005-08-23 01:12:10.885781000 +0200
-+++ linux-atm.dev/doc/Makefile.in 2005-08-23 01:12:46.551359544 +0200
-@@ -63,24 +63,35 @@
- host_triplet = @host@
- target_alias = @target_alias@
- target_triplet = @target@
-+AR = @AR@
- AS = @AS@
- CC = @CC@
-+CXX = @CXX@
-+CXXCPP = @CXXCPP@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+EGREP = @EGREP@
- EXEEXT = @EXEEXT@
-+F77 = @F77@
-+GCJ = @GCJ@
-+GCJFLAGS = @GCJFLAGS@
-+HAVE_LIB = @HAVE_LIB@
- LEX = @LEX@
-+LIB = @LIB@
- LIBTOOL = @LIBTOOL@
- LIBTOOL_DEPS = @LIBTOOL_DEPS@
- LIBVER_AGE = @LIBVER_AGE@
- LIBVER_CURRENT = @LIBVER_CURRENT@
- LIBVER_REVISION = @LIBVER_REVISION@
- LN_S = @LN_S@
-+LTLIB = @LTLIB@
- MAKEINFO = @MAKEINFO@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- PACKAGE = @PACKAGE@
- PERL = @PERL@
- RANLIB = @RANLIB@
-+RC = @RC@
- STRIP = @STRIP@
- VERSION = @VERSION@
- YACC = @YACC@
-diff -urN linux-atm.old/m4/Makefile.in linux-atm.dev/m4/Makefile.in
---- linux-atm.old/m4/Makefile.in 2005-08-23 01:12:10.850786000 +0200
-+++ linux-atm.dev/m4/Makefile.in 2005-08-23 01:12:46.559358328 +0200
-@@ -63,24 +63,35 @@
- host_triplet = @host@
- target_alias = @target_alias@
- target_triplet = @target@
-+AR = @AR@
- AS = @AS@
- CC = @CC@
-+CXX = @CXX@
-+CXXCPP = @CXXCPP@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+EGREP = @EGREP@
- EXEEXT = @EXEEXT@
-+F77 = @F77@
-+GCJ = @GCJ@
-+GCJFLAGS = @GCJFLAGS@
-+HAVE_LIB = @HAVE_LIB@
- LEX = @LEX@
-+LIB = @LIB@
- LIBTOOL = @LIBTOOL@
- LIBTOOL_DEPS = @LIBTOOL_DEPS@
- LIBVER_AGE = @LIBVER_AGE@
- LIBVER_CURRENT = @LIBVER_CURRENT@
- LIBVER_REVISION = @LIBVER_REVISION@
- LN_S = @LN_S@
-+LTLIB = @LTLIB@
- MAKEINFO = @MAKEINFO@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- PACKAGE = @PACKAGE@
- PERL = @PERL@
- RANLIB = @RANLIB@
-+RC = @RC@
- STRIP = @STRIP@
- VERSION = @VERSION@
- YACC = @YACC@
-diff -urN linux-atm.old/Makefile.in linux-atm.dev/Makefile.in
---- linux-atm.old/Makefile.in 2005-08-23 01:12:10.830789000 +0200
-+++ linux-atm.dev/Makefile.in 2005-08-23 01:12:46.542360912 +0200
-@@ -63,24 +63,35 @@
- host_triplet = @host@
- target_alias = @target_alias@
- target_triplet = @target@
-+AR = @AR@
- AS = @AS@
- CC = @CC@
-+CXX = @CXX@
-+CXXCPP = @CXXCPP@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+EGREP = @EGREP@
- EXEEXT = @EXEEXT@
-+F77 = @F77@
-+GCJ = @GCJ@
-+GCJFLAGS = @GCJFLAGS@
-+HAVE_LIB = @HAVE_LIB@
- LEX = @LEX@
-+LIB = @LIB@
- LIBTOOL = @LIBTOOL@
- LIBTOOL_DEPS = @LIBTOOL_DEPS@
- LIBVER_AGE = @LIBVER_AGE@
- LIBVER_CURRENT = @LIBVER_CURRENT@
- LIBVER_REVISION = @LIBVER_REVISION@
- LN_S = @LN_S@
-+LTLIB = @LTLIB@
- MAKEINFO = @MAKEINFO@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- PACKAGE = @PACKAGE@
- PERL = @PERL@
- RANLIB = @RANLIB@
-+RC = @RC@
- STRIP = @STRIP@
- VERSION = @VERSION@
- YACC = @YACC@
-diff -urN linux-atm.old/src/br2684/Makefile.in linux-atm.dev/src/br2684/Makefile.in
---- linux-atm.old/src/br2684/Makefile.in 2005-08-23 01:12:10.884781000 +0200
-+++ linux-atm.dev/src/br2684/Makefile.in 2005-08-23 01:12:46.632347232 +0200
-@@ -57,11 +57,15 @@
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
-+build_alias = @build_alias@
-+build_triplet = @build@
- host_alias = @host_alias@
- host_triplet = @host@
-+target_alias = @target_alias@
-+target_triplet = @target@
- AR = @AR@
- AS = @AS@
--CC = /usr/src/openwrt/staging_dir_mipsel/bin/mipsel-linux-gcc
-+CC = @CC@
- CXX = @CXX@
- CXXCPP = @CXXCPP@
- DLLTOOL = @DLLTOOL@
-@@ -117,9 +121,9 @@
- br2684ctl_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la
- br2684ctl_LDFLAGS =
- CFLAGS = @CFLAGS@
--COMPILE = $(TARGET_CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--LTCOMPILE = $(LIBTOOL) --mode=compile $(TARGET_CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--CCLD = $(TARGET_CC)
-+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CCLD = $(CC)
- LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
- man8dir = $(mandir)/man8
- MANS = $(man_MANS)
-diff -urN linux-atm.old/src/include/Makefile.in linux-atm.dev/src/include/Makefile.in
---- linux-atm.old/src/include/Makefile.in 2005-08-23 01:12:10.851786000 +0200
-+++ linux-atm.dev/src/include/Makefile.in 2005-08-23 01:12:46.585354376 +0200
-@@ -63,24 +63,35 @@
- host_triplet = @host@
- target_alias = @target_alias@
- target_triplet = @target@
-+AR = @AR@
- AS = @AS@
- CC = @CC@
-+CXX = @CXX@
-+CXXCPP = @CXXCPP@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+EGREP = @EGREP@
- EXEEXT = @EXEEXT@
-+F77 = @F77@
-+GCJ = @GCJ@
-+GCJFLAGS = @GCJFLAGS@
-+HAVE_LIB = @HAVE_LIB@
- LEX = @LEX@
-+LIB = @LIB@
- LIBTOOL = @LIBTOOL@
- LIBTOOL_DEPS = @LIBTOOL_DEPS@
- LIBVER_AGE = @LIBVER_AGE@
- LIBVER_CURRENT = @LIBVER_CURRENT@
- LIBVER_REVISION = @LIBVER_REVISION@
- LN_S = @LN_S@
-+LTLIB = @LTLIB@
- MAKEINFO = @MAKEINFO@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- PACKAGE = @PACKAGE@
- PERL = @PERL@
- RANLIB = @RANLIB@
-+RC = @RC@
- STRIP = @STRIP@
- VERSION = @VERSION@
- YACC = @YACC@
-diff -urN linux-atm.old/src/lib/Makefile.in linux-atm.dev/src/lib/Makefile.in
---- linux-atm.old/src/lib/Makefile.in 2005-08-23 01:12:10.852786000 +0200
-+++ linux-atm.dev/src/lib/Makefile.in 2005-08-23 01:12:46.607351032 +0200
-@@ -65,24 +65,35 @@
- host_triplet = @host@
- target_alias = @target_alias@
- target_triplet = @target@
-+AR = @AR@
- AS = @AS@
- CC = @CC@
-+CXX = @CXX@
-+CXXCPP = @CXXCPP@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+EGREP = @EGREP@
- EXEEXT = @EXEEXT@
-+F77 = @F77@
-+GCJ = @GCJ@
-+GCJFLAGS = @GCJFLAGS@
-+HAVE_LIB = @HAVE_LIB@
- LEX = @LEX@
-+LIB = @LIB@
- LIBTOOL = @LIBTOOL@
- LIBTOOL_DEPS = @LIBTOOL_DEPS@
- LIBVER_AGE = @LIBVER_AGE@
- LIBVER_CURRENT = @LIBVER_CURRENT@
- LIBVER_REVISION = @LIBVER_REVISION@
- LN_S = @LN_S@
-+LTLIB = @LTLIB@
- MAKEINFO = @MAKEINFO@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- PACKAGE = @PACKAGE@
- PERL = @PERL@
- RANLIB = @RANLIB@
-+RC = @RC@
- STRIP = @STRIP@
- VERSION = @VERSION@
- YACC = @YACC@
-diff -urN linux-atm.old/src/Makefile.in linux-atm.dev/src/Makefile.in
---- linux-atm.old/src/Makefile.in 2005-08-23 01:12:10.851786000 +0200
-+++ linux-atm.dev/src/Makefile.in 2005-08-23 01:12:46.572356352 +0200
-@@ -63,30 +63,40 @@
- host_triplet = @host@
- target_alias = @target_alias@
- target_triplet = @target@
-+AR = @AR@
- AS = @AS@
- CC = @CC@
-+CXX = @CXX@
-+CXXCPP = @CXXCPP@
- DLLTOOL = @DLLTOOL@
- ECHO = @ECHO@
-+EGREP = @EGREP@
- EXEEXT = @EXEEXT@
-+F77 = @F77@
-+GCJ = @GCJ@
-+GCJFLAGS = @GCJFLAGS@
-+HAVE_LIB = @HAVE_LIB@
- LEX = @LEX@
-+LIB = @LIB@
- LIBTOOL = @LIBTOOL@
- LIBTOOL_DEPS = @LIBTOOL_DEPS@
- LIBVER_AGE = @LIBVER_AGE@
- LIBVER_CURRENT = @LIBVER_CURRENT@
- LIBVER_REVISION = @LIBVER_REVISION@
- LN_S = @LN_S@
-+LTLIB = @LTLIB@
- MAKEINFO = @MAKEINFO@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- PACKAGE = @PACKAGE@
- PERL = @PERL@
- RANLIB = @RANLIB@
-+RC = @RC@
- STRIP = @STRIP@
- VERSION = @VERSION@
- YACC = @YACC@
-
--SUBDIRS = include lib
--
-+SUBDIRS = include lib br2684
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
- CONFIG_HEADER = ../config.h
- CONFIG_CLEAN_FILES =
diff --git a/openwrt/package/logrotate/Config.in b/openwrt/package/logrotate/Config.in
deleted file mode 100644
index 7a210b7266..0000000000
--- a/openwrt/package/logrotate/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_LOGROTATE
- prompt "logrotate......................... rotates, compresses, and mails system logs"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPOPT
- help
- logrotate is designed to ease administration of systems that generate
- large numbers of log files. It allows auto-matic rotation, compression,
- removal, and mailing of log files. Each log file may be handled
- daily, weekly,monthly, or when it grows too large.
diff --git a/openwrt/package/logrotate/Makefile b/openwrt/package/logrotate/Makefile
deleted file mode 100644
index e08e1643e1..0000000000
--- a/openwrt/package/logrotate/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=logrotate
-PKG_VERSION:=3.7.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=552639142e163745f6bcd4f1f3816d8a
-
-PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/l/logrotate
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
-PKG_CAT:=zcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LOGROTATE,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- make -C ${PKG_BUILD_DIR} \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- CC=$(TARGET_CC) logrotate
- touch $@
-
-$(IPKG_LOGROTATE):
- mkdir -p $(IDIR_LOGROTATE)/usr/sbin
- $(CP) ${PKG_BUILD_DIR}/logrotate $(IDIR_LOGROTATE)/usr/sbin
- mkdir -p $(IDIR_LOGROTATE)/etc/logrotate.d
- $(CP) ./files/logrotate.conf $(IDIR_LOGROTATE)/etc
- $(RSTRIP) $(IDIR_LOGROTATE)
- $(IPKG_BUILD) $(IDIR_LOGROTATE) $(PACKAGE_DIR)
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/logrotate/files/logrotate.conf b/openwrt/package/logrotate/files/logrotate.conf
deleted file mode 100644
index 9a91db94f3..0000000000
--- a/openwrt/package/logrotate/files/logrotate.conf
+++ /dev/null
@@ -1,30 +0,0 @@
-# rotate log files weekly
-weekly
-#daily
-
-# keep 4 weeks worth of backlogs
-rotate 4
-
-# create new (empty) log files after rotating old ones
-create
-
-notifempty
-nomail
-#olddir /var/log/backup/
-missingok
-#dateext
-
-# uncomment this if you want your log files compressed
-#compress
-
-# packages can drop log rotation information into this directory
-include /etc/logrotate.d
-
-# no packages own lastlog or wtmp -- we'll rotate them here
-#/var/log/wtmp {
-# monthly
-# create 0664 root utmp
-# rotate 1
-#}
-
-# system-specific logs may be also be configured here.
diff --git a/openwrt/package/logrotate/ipkg/logrotate.control b/openwrt/package/logrotate/ipkg/logrotate.control
deleted file mode 100644
index 1c984e58f6..0000000000
--- a/openwrt/package/logrotate/ipkg/logrotate.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: logrotate
-Priority: optional
-Section: misc
-Depends: libpopt
-Source: http://ftp.debian.org/debian/pool/main/l/logrotate
-Description: logrotate is designed to ease administration of systems that generate large numbers of log files.
diff --git a/openwrt/package/logrotate/patches/logrotate-3.7.1-dateext-maxage.patch b/openwrt/package/logrotate/patches/logrotate-3.7.1-dateext-maxage.patch
deleted file mode 100644
index 1623b4bf12..0000000000
--- a/openwrt/package/logrotate/patches/logrotate-3.7.1-dateext-maxage.patch
+++ /dev/null
@@ -1,433 +0,0 @@
-diff -u -ruN logrotate-3.7.1.orig/config.c logrotate-3.7.1/config.c
---- logrotate-3.7.1.orig/config.c 2003-08-07 07:13:14.000000000 -0400
-+++ logrotate-3.7.1/config.c 2005-05-24 12:21:09.000000000 -0400
-@@ -511,6 +511,14 @@
- newlog->flags &= ~LOG_FLAG_IFEMPTY;
-
- *endtag = oldchar, start = endtag;
-+ } else if (!strcmp(start, "dateext")) {
-+ newlog->flags |= LOG_FLAG_DATEEXT;
-+
-+ *endtag = oldchar, start = endtag;
-+ } else if (!strcmp(start, "nodateext")) {
-+ newlog->flags &= ~LOG_FLAG_DATEEXT;
-+
-+ *endtag = oldchar, start = endtag;
- } else if (!strcmp(start, "noolddir")) {
- newlog->oldDir = NULL;
-
-@@ -670,6 +678,21 @@
- }
- *endtag = oldchar, start = endtag;
- }
-+ } else if (!strcmp(start, "maxage")) {
-+ *endtag = oldchar, start = endtag;
-+
-+ if (!isolateValue(configFile, lineNum, "maxage count", &start,
-+ &endtag)) {
-+ oldchar = *endtag, *endtag = '\0';
-+
-+ newlog->rotateAge = strtoul(start, &chptr, 0);
-+ if (*chptr || newlog->rotateAge < 0) {
-+ message(MESS_ERROR, "%s:%d bad maximum age '%s'\n",
-+ configFile, lineNum, start);
-+ return 1;
-+ }
-+ *endtag = oldchar, start = endtag;
-+ }
- } else if (!strcmp(start, "errors")) {
- message(MESS_DEBUG, "%s: %d: the errors directive is deprecated and no longer used.\n",
- configFile, lineNum);
-diff -u -ruN logrotate-3.7.1.orig/logrotate.8 logrotate-3.7.1/logrotate.8
---- logrotate-3.7.1.orig/logrotate.8 2003-08-07 07:13:14.000000000 -0400
-+++ logrotate-3.7.1/logrotate.8 2005-05-24 12:21:09.000000000 -0400
-@@ -200,6 +200,11 @@
- Log files are rotated every day.
-
- .TP
-+\fBdateext\fR
-+Archive old versions of log files adding a daily extension like YYYYMMDD
-+instead of simply adding a number.
-+
-+.TP
- \fBdelaycompress\fR
- Postpone compression of the previous log file to the next rotation cycle.
- This has only effect when used in combination with \fBcompress\fR.
-@@ -246,6 +251,12 @@
- instead of the just-rotated file (this is the default).
-
- .TP
-+\fBmaxage\fR \fIcount\fR
-+Remove rotated logs older than <count> days. The age is only checked
-+if the logfile is to be rotated. The files are mailed to the
-+configured address if \fBmaillast\fR and \fBmail\fR are configured.
-+
-+.TP
- \fBmissingok\fR
- If the log file is missing, go on to the next one without issuing an error
- message. See also \fBnomissingok\fR.
-diff -u -ruN logrotate-3.7.1.orig/logrotate.c logrotate-3.7.1/logrotate.c
---- logrotate-3.7.1.orig/logrotate.c 2004-10-19 17:41:24.000000000 -0400
-+++ logrotate-3.7.1/logrotate.c 2005-05-24 12:21:09.000000000 -0400
-@@ -11,6 +11,7 @@
- #include <sys/wait.h>
- #include <time.h>
- #include <unistd.h>
-+#include <glob.h>
-
- #ifdef WITH_SELINUX
- #include <selinux/selinux.h>
-@@ -22,6 +23,10 @@
- #include "log.h"
- #include "logrotate.h"
-
-+#if !defined(GLOB_ABORTED) && defined(GLOB_ABEND)
-+#define GLOB_ABORTED GLOB_ABEND
-+#endif
-+
- typedef struct {
- char * fn;
- struct tm lastRotated; /* only tm.mon, tm_mday, tm_year are good! */
-@@ -42,6 +47,14 @@
- char * mailCommand = DEFAULT_MAIL_COMMAND;
- time_t nowSecs = 0;
-
-+static int globerr(const char * pathname, int theerr) {
-+ message(MESS_ERROR, "error accessing %s: %s\n", pathname,
-+ strerror(theerr));
-+
-+ /* We want the glob operation to continue, so return 0 */
-+ return 1;
-+}
-+
- static logState * findState(const char * fn, struct stateSet * sip) {
- int i;
- logState * states = sip->states;
-@@ -49,9 +62,11 @@
- struct tm now = *localtime(&nowSecs);
- time_t lr_time;
-
-+ /* find the filename fn in the statesPtr list */
- for (i = 0; i < numStates; i++)
- if (!strcmp(fn, states[i].fn)) break;
-
-+ /* not in statesPtr list, so add new entry */
- if (i == numStates) {
- i = numStates++;
- states = realloc(states, sizeof(*states) * numStates);
-@@ -121,6 +136,17 @@
- return rc;
- }
-
-+static int removeLogFile(char * name) {
-+ message(MESS_DEBUG, "removing old log %s\n", name);
-+
-+ if (!debug && unlink(name)) {
-+ message(MESS_ERROR, "Failed to remove old log %s: %s\n",
-+ name, strerror(errno));
-+ return 1;
-+ }
-+ return 0;
-+}
-+
- static int compressLogFile(char * name, logInfo * log, struct stat *sb) {
- char * compressedName;
- const char ** fullCommand;
-@@ -265,6 +291,25 @@
- return rc;
- }
-
-+static int mailLogWrapper (char * mailFilename, char * mailCommand, int logNum, logInfo * log) {
-+ /* if the log is compressed (and we're not mailing a
-+ * file whose compression has been delayed), we need
-+ * to uncompress it */
-+ if ((log->flags & LOG_FLAG_COMPRESS) &&
-+ !((log->flags & LOG_FLAG_DELAYCOMPRESS) &&
-+ (log->flags & LOG_FLAG_MAILFIRST))) {
-+ if (mailLog(mailFilename, mailCommand,
-+ log->uncompress_prog, log->logAddress,
-+ log->files[logNum]))
-+ return 1;
-+ } else {
-+ if (mailLog(mailFilename, mailCommand, NULL,
-+ log->logAddress, mailFilename))
-+ return 1;
-+ }
-+ return 0;
-+}
-+
- static int copyTruncate(char * currLog, char * saveLog, struct stat * sb, int flags) {
- char buf[BUFSIZ];
- int fdcurr = -1, fdsave = -1;
-@@ -479,6 +524,9 @@
- char * baseName;
- char * dirName;
- char * firstRotated;
-+ char * glob_pattern;
-+ glob_t globResult;
-+ int rc;
- size_t alloc_size;
- int rotateCount = log->rotateCount ? log->rotateCount : 1;
- int logStart = (log->logStart == -1) ? 1 : log->logStart;
-@@ -509,7 +557,7 @@
-
- alloc_size = strlen(dirName) + strlen(baseName) +
- strlen(log->files[logNum]) + strlen(fileext) +
-- strlen(compext) + 10;
-+ strlen(compext) + 18;
-
- oldName = alloca(alloc_size);
- newName = alloca(alloc_size);
-@@ -531,16 +579,116 @@
- /* First compress the previous log when necessary */
- if (log->flags & LOG_FLAG_COMPRESS &&
- log->flags & LOG_FLAG_DELAYCOMPRESS) {
-- struct stat sbprev;
--
-- sprintf(oldName, "%s/%s.%d%s", dirName, baseName, logStart, fileext);
-- if (stat(oldName, &sbprev)) {
-- message(MESS_DEBUG, "previous log %s does not exist\n",
-- oldName);
-- } else {
-- hasErrors = compressLogFile(oldName, log, &sbprev);
-+ if (log->flags & LOG_FLAG_DATEEXT) {
-+ /* glob for uncompressed files with our pattern */
-+ glob_pattern = malloc(strlen(dirName) + strlen(baseName)
-+ + strlen(fileext) + 44 );
-+ sprintf(glob_pattern,
-+ "%s/%s-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%s",
-+ dirName, baseName, fileext);
-+ rc = glob(glob_pattern, 0, globerr, &globResult);
-+ if (!rc && globResult.gl_pathc > 0) {
-+ for (i = 0; i < globResult.gl_pathc && !hasErrors; i++) {
-+ struct stat sbprev;
-+ sprintf(oldName,"%s",(globResult.gl_pathv)[i]);
-+ if (stat(oldName, &sbprev)) {
-+ message(MESS_DEBUG, "previous log %s does not exist\n", oldName);
-+ } else {
-+ hasErrors = compressLogFile(oldName, log, &sbprev);
-+ }
-+ }
-+ } else {
-+ message (MESS_DEBUG, "glob finding logs to compress failed\n");
-+ /* fallback to old behaviour */
-+ sprintf(oldName, "%s/%s.%d%s", dirName, baseName, logStart, fileext);
-+ }
-+ globfree(&globResult);
-+ free(glob_pattern);
-+ } else {
-+ struct stat sbprev;
-+
-+ sprintf(oldName, "%s/%s.%d%s", dirName, baseName, logStart, fileext);
-+ if (stat(oldName, &sbprev)) {
-+ message(MESS_DEBUG, "previous log %s does not exist\n",
-+ oldName);
-+ } else {
-+ hasErrors = compressLogFile(oldName, log, &sbprev);
-+ }
- }
- }
-+
-+ firstRotated = alloca(strlen(dirName) + strlen(baseName) +
-+ strlen(fileext) + strlen(compext) + 30);
-+
-+ if(log->flags & LOG_FLAG_DATEEXT) {
-+ /* glob for compressed files with our pattern
-+ * and compress ext */
-+ glob_pattern = malloc(strlen(dirName)+strlen(baseName)
-+ +strlen(fileext)+strlen(compext)+44);
-+ sprintf(glob_pattern,
-+ "%s/%s-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%s%s",
-+ dirName, baseName, fileext, compext);
-+ rc = glob(glob_pattern, 0, globerr, &globResult);
-+ if (!rc) {
-+ /* search for files to drop, if we find one remember it,
-+ * if we find another one mail and remove the first and
-+ * remember the second and so on */
-+ struct stat fst_buf;
-+ int mail_out = -1;
-+ /* remove the first (n - rotateCount) matches
-+ * no real rotation needed, since the files have
-+ * the date in their name */
-+ for (i = 0; i < globResult.gl_pathc; i++) {
-+ if( !stat((globResult.gl_pathv)[i],&fst_buf) ) {
-+ if ((i <= ((int)globResult.gl_pathc - rotateCount))
-+ || ((log->rotateAge > 0)
-+ && (((nowSecs - fst_buf.st_mtime)/60/60/24)
-+ > log->rotateAge))) {
-+ if ( mail_out != -1 ) {
-+ if (!hasErrors && log->logAddress) {
-+ char * mailFilename = (globResult.gl_pathv)[mail_out];
-+ hasErrors = mailLogWrapper(mailFilename, mailCommand, logNum, log);
-+ if (!hasErrors)
-+ hasErrors = removeLogFile(mailFilename);
-+ }
-+ }
-+ mail_out = i;
-+ }
-+ }
-+ }
-+ if ( mail_out != -1 ) {
-+ /* oldName is oldest Backup found (for unlink later) */
-+ sprintf(oldName, "%s", (globResult.gl_pathv)[mail_out]);
-+ strcpy(disposeName, oldName);
-+ } else
-+ disposeName = NULL;
-+ } else {
-+ message (MESS_DEBUG, "glob finding old rotated logs failed\n");
-+ disposeName = NULL;
-+ }
-+ /* firstRotated is most recently created/compressed rotated log */
-+ sprintf(firstRotated, "%s/%s-%04d%02d%02d%s%s",
-+ dirName, baseName, now.tm_year+1900,
-+ now.tm_mon+1, now.tm_mday, fileext, compext);
-+ globfree(&globResult);
-+ free(glob_pattern);
-+ } else {
-+ if ( log->rotateAge ) {
-+ struct stat fst_buf;
-+ for (i=1; i <= rotateCount; i++) {
-+ sprintf(oldName, "%s/%s.%d%s%s", dirName, baseName,
-+ rotateCount + 1, fileext, compext);
-+ if(!stat(oldName,&fst_buf)
-+ && (((nowSecs - fst_buf.st_mtime)/60/60/24)
-+ > log->rotateAge)) {
-+ char * mailFilename = (globResult.gl_pathv)[i];
-+ if (!hasErrors && log->logAddress)
-+ hasErrors = mailLogWrapper(mailFilename, mailCommand, logNum, log);
-+ if (!hasErrors)
-+ hasErrors = removeLogFile(mailFilename);
-+ }
-+ }
-+ }
-
- sprintf(oldName, "%s/%s.%d%s%s", dirName, baseName,
- logStart + rotateCount, fileext, compext);
-@@ -548,8 +696,6 @@
-
- strcpy(disposeName, oldName);
-
-- firstRotated = alloca(strlen(dirName) + strlen(baseName) +
-- strlen(fileext) + strlen(compext) + 30);
- sprintf(firstRotated, "%s/%s.%d%s%s", dirName, baseName,
- logStart, fileext,
- (log->flags & LOG_FLAG_DELAYCOMPRESS) ? "" : compext);
-@@ -600,12 +746,27 @@
- }
- }
- }
--
-+ } /* !LOG_FLAG_DATEEXT */
-+
- finalName = oldName;
--
-- /* note: the gzip extension is *not* used here! */
-- sprintf(finalName, "%s/%s.%d%s", dirName, baseName, logStart, fileext);
--
-+
-+ if(log->flags & LOG_FLAG_DATEEXT) {
-+ char * destFile = alloca(strlen(dirName) + strlen(baseName) +
-+ strlen(fileext) + strlen(compext) + 30);
-+ struct stat fst_buf;
-+ sprintf(finalName, "%s/%s-%04d%02d%02d%s",
-+ dirName, baseName, now.tm_year+1900,
-+ now.tm_mon+1, now.tm_mday, fileext);
-+ sprintf(destFile, "%s%s", finalName, compext);
-+ if(!stat(destFile,&fst_buf)) {
-+ message (MESS_DEBUG, "destination %s already exists, skipping rotation\n", firstRotated);
-+ hasErrors = 1;
-+ }
-+ } else {
-+ /* note: the gzip extension is *not* used here! */
-+ sprintf(finalName, "%s/%s.%d%s", dirName, baseName, logStart, fileext);
-+ }
-+
- /* if the last rotation doesn't exist, that's okay */
- if (!debug && access(disposeName, F_OK)) {
- message(MESS_DEBUG, "log %s doesn't exist -- won't try to "
-@@ -613,9 +774,6 @@
- disposeName = NULL;
- }
-
-- free(dirName);
-- free(baseName);
--
- if (!hasErrors) {
- if (log->pre && !(log->flags & LOG_FLAG_SHAREDSCRIPTS)) {
- message(MESS_DEBUG, "running prerotate script\n");
-@@ -722,33 +880,12 @@
- else
- mailFilename = disposeName;
-
-- if (mailFilename) {
-- /* if the log is compressed (and we're not mailing a
-- file whose compression has been delayed), we need
-- to uncompress it */
-- if ((log->flags & LOG_FLAG_COMPRESS) &&
-- !((log->flags & LOG_FLAG_DELAYCOMPRESS) &&
-- (log->flags & LOG_FLAG_MAILFIRST))) {
-- if (mailLog(mailFilename, mailCommand,
-- log->uncompress_prog, log->logAddress,
-- log->files[logNum]))
-- hasErrors = 1;
-- } else {
-- if (mailLog(mailFilename, mailCommand, NULL,
-- log->logAddress, mailFilename))
-- hasErrors = 1;
-- }
-- }
-+ if (mailFilename)
-+ hasErrors = mailLogWrapper(mailFilename, mailCommand, logNum, log);
- }
-
- if (!hasErrors && disposeName) {
-- message(MESS_DEBUG, "removing old log %s\n", disposeName);
--
-- if (!debug && unlink(disposeName)) {
-- message(MESS_ERROR, "Failed to remove old log %s: %s\n",
-- disposeName, strerror(errno));
-- hasErrors = 1;
-- }
-+ hasErrors = removeLogFile(disposeName);
- }
- }
-
-@@ -761,6 +898,8 @@
- }
- }
- #endif
-+ free(dirName);
-+ free(baseName);
- return hasErrors;
- }
-
-@@ -1047,7 +1186,9 @@
-
- int main(int argc, const char ** argv) {
- logInfo defConfig = { NULL, NULL, 0, NULL, ROT_SIZE,
-- /* threshHold */ 1024 * 1024, 0,
-+ /* threshHold */ 1024 * 1024,
-+ /* rotateCount */ 0,
-+ /* rotateAge */ 0,
- /* log start */ -1,
- /* pre, post */ NULL, NULL,
- /* first, last */ NULL, NULL,
-diff -u -ruN logrotate-3.7.1.orig/logrotate.h logrotate-3.7.1/logrotate.h
---- logrotate-3.7.1.orig/logrotate.h 2003-08-07 07:13:14.000000000 -0400
-+++ logrotate-3.7.1/logrotate.h 2005-05-24 12:21:09.000000000 -0400
-@@ -15,6 +15,7 @@
- #define LOG_FLAG_MAILFIRST (1 << 6)
- #define LOG_FLAG_SHAREDSCRIPTS (1 << 7)
- #define LOG_FLAG_COPY (1 << 8)
-+#define LOG_FLAG_DATEEXT (1 << 9)
-
- #define NO_FORCE_ROTATE 0
- #define FORCE_ROTATE 1
-@@ -34,6 +35,7 @@
- enum { ROT_DAYS, ROT_WEEKLY, ROT_MONTHLY, ROT_SIZE, ROT_FORCE } criterium;
- unsigned int threshhold;
- int rotateCount;
-+ int rotateAge;
- int logStart;
- char * pre, * post, * first, * last;
- char * logAddress;
diff --git a/openwrt/package/logrotate/patches/logrotate-3.7.1-datehack.patch b/openwrt/package/logrotate/patches/logrotate-3.7.1-datehack.patch
deleted file mode 100644
index 69121aafa9..0000000000
--- a/openwrt/package/logrotate/patches/logrotate-3.7.1-datehack.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -u -ruN logrotate-3.7.1.orig/logrotate.c logrotate-3.7.1/logrotate.c
---- logrotate-3.7.1.orig/logrotate.c 2004-10-19 17:41:24.000000000 -0400
-+++ logrotate-3.7.1/logrotate.c 2005-05-24 12:12:26.000000000 -0400
-@@ -1002,7 +1002,7 @@
- }
-
- /* Hack to hide earlier bug */
-- if ((year != 1900) && (year < 1996 || year > 2100)) {
-+ if ((year != 1900) && (year < 1970 || year > 2100)) {
- message(MESS_ERROR, "bad year %d for file %s in state file %s\n",
- year, argv[0], stateFilename);
- fclose(f);
diff --git a/openwrt/package/logrotate/patches/logrotate-3.7.1-ignore-hidden.patch b/openwrt/package/logrotate/patches/logrotate-3.7.1-ignore-hidden.patch
deleted file mode 100644
index 390de7537c..0000000000
--- a/openwrt/package/logrotate/patches/logrotate-3.7.1-ignore-hidden.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- logrotate-3.7/config.c.orig 2005-04-26 22:57:53.000000000 -0400
-+++ logrotate-3.7/config.c 2005-04-26 22:59:36.000000000 -0400
-@@ -142,6 +142,11 @@
- (!fname[1] || (fname[1] == '.' && !fname[2])))
- return 0;
-
-+ /* Don't include 'hidden' files either; this breaks Gentoo
-+ portage config file management http://bugs.gentoo.org/87683 */
-+ if (fname[0] == '.')
-+ return 0;
-+
- /* Check if fname is ending in a taboo-extension; if so, return
- false */
- for (i = 0; i < tabooCount; i++) {
diff --git a/openwrt/package/logrotate/patches/logrotate-3.7.1-no-tmpdir.patch b/openwrt/package/logrotate/patches/logrotate-3.7.1-no-tmpdir.patch
deleted file mode 100644
index fb95f1ee3e..0000000000
--- a/openwrt/package/logrotate/patches/logrotate-3.7.1-no-tmpdir.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-diff -u -ruN logrotate-3.7.1-cur/logrotate.c logrotate-3.7.1/logrotate.c
---- logrotate-3.7.1-cur/logrotate.c 2005-05-25 18:20:41.000000000 -0400
-+++ logrotate-3.7.1/logrotate.c 2005-05-25 18:21:10.000000000 -0400
-@@ -90,10 +90,7 @@
- }
-
- static int runScript(char * logfn, char * script) {
-- int fd;
-- char *filespec;
- int rc;
-- char buf[256];
-
- if (debug) {
- message(MESS_DEBUG, "running script with arg %s: \"%s\"\n",
-@@ -101,38 +98,12 @@
- return 0;
- }
-
-- filespec = buf;
-- snprintf(buf, sizeof(buf), "%s/logrotate.XXXXXX", getenv("TMPDIR") ?: "/tmp");
-- fd = -1;
-- if (!filespec || (fd = mkstemp(filespec)) < 0 || fchmod(fd, 0700)) {
-- message(MESS_DEBUG, "error creating %s: %s\n", filespec,
-- strerror(errno));
-- if (fd >= 0) {
-- close(fd);
-- unlink(filespec);
-- }
-- return -1;
-- }
--
-- if (write(fd, "#!/bin/sh\n\n", 11) != 11 ||
-- write(fd, script, strlen(script)) != strlen(script)) {
-- message(MESS_DEBUG, "error writing %s\n", filespec);
-- close(fd);
-- unlink(filespec);
-- return -1;
-- }
--
-- close(fd);
--
- if (!fork()) {
-- execlp(filespec, filespec, logfn, NULL);
-+ execl("/bin/sh", "sh", "-c", script, NULL);
- exit(1);
- }
-
- wait(&rc);
--
-- unlink(filespec);
--
- return rc;
- }
-
diff --git a/openwrt/package/logrotate/patches/logrotate-3.7.1-taboo-to-debug.patch b/openwrt/package/logrotate/patches/logrotate-3.7.1-taboo-to-debug.patch
deleted file mode 100644
index 2e07188f5a..0000000000
--- a/openwrt/package/logrotate/patches/logrotate-3.7.1-taboo-to-debug.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -u -ruN logrotate-3.7.1.orig/config.c logrotate-3.7.1/config.c
---- logrotate-3.7.1.orig/config.c 2003-08-07 07:13:14.000000000 -0400
-+++ logrotate-3.7.1/config.c 2005-05-24 12:13:41.000000000 -0400
-@@ -147,7 +147,7 @@
- for (i = 0; i < tabooCount; i++) {
- if (!strcmp(fname + strlen(fname) - strlen(tabooExts[i]),
- tabooExts[i])) {
-- message(MESS_ERROR, "Ignoring %s, because of %s "
-+ message(MESS_DEBUG, "Ignoring %s, because of %s "
- "ending\n", fname, tabooExts[i]);
-
- return 0;
diff --git a/openwrt/package/logrotate/patches/logrotate-3.7.1-weekly.patch b/openwrt/package/logrotate/patches/logrotate-3.7.1-weekly.patch
deleted file mode 100644
index 8a371e8e00..0000000000
--- a/openwrt/package/logrotate/patches/logrotate-3.7.1-weekly.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- logrotate-3.7.1-old/logrotate.c 2004-10-19 23:41:24.000000000 +0200
-+++ logrotate-3.7.1-new/logrotate.c 2005-10-02 17:29:22.380767321 +0200
-@@ -424,12 +424,15 @@ int findNeedRotating(logInfo * log, int
- switch (log->criterium) {
- case ROT_WEEKLY:
- /* rotate if:
-- 1) the current weekday is before the weekday of the
-- last rotation
-+ 1) the day of the week is the same as the day of the week of
-+ the previous rotation but not the same day of the year
-+ this will rotate it on the same day every week, but not
-+ twice a day.
- 2) more then a week has passed since the last
- rotation */
-- state->doRotate = ((now.tm_wday < state->lastRotated.tm_wday) ||
-- ((mktime(&now) - mktime(&state->lastRotated)) >
-+ state->doRotate = ((now.tm_wday == state->lastRotated.tm_wday &&
-+ now.tm_yday != state->lastRotated.tm_yday) ||
-+ ((mktime(&now) - mktime(&state->lastRotated)) >
- (7 * 24 * 3600)));
- break;
- case ROT_MONTHLY:
diff --git a/openwrt/package/lrzsz/Config.in b/openwrt/package/lrzsz/Config.in
deleted file mode 100644
index 5398990946..0000000000
--- a/openwrt/package/lrzsz/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_LRZSZ
- prompt "lrsz.............................. X,Y and Z-modem protocols"
- tristate
- default m if CONFIG_DEVEL
- help
- Transfer files in your login sessions.
- Very leightweight ans straight forward.
- You just need a terminal client that can do
- either X, Y or Z-modem file transfers.
-
- http://www.ohse.de/uwe/software/lrzsz.html
diff --git a/openwrt/package/lrzsz/Makefile b/openwrt/package/lrzsz/Makefile
deleted file mode 100644
index bc4fb112bf..0000000000
--- a/openwrt/package/lrzsz/Makefile
+++ /dev/null
@@ -1,76 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=lrzsz
-PKG_VERSION:=0.12.20
-PKG_RELEASE:=1
-PKG_MD5SUM:=b5ce6a74abc9b9eb2af94dffdfd372a4
-
-PKG_SOURCE_URL:=http://www.ohse.de/uwe/releases/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LRZSZ,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --without-libiconv-prefix \
- --without-libintl-prefix \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LRZSZ):
- install -d -m0755 $(IDIR_LRZSZ)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/lrz $(IDIR_LRZSZ)/usr/bin/
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/lsz $(IDIR_LRZSZ)/usr/bin/
- (cd $(IDIR_LRZSZ)/usr/bin; \
- ln -fs lrz lrx; \
- ln -fs lrz lrb; \
- ln -fs lsz lsx; \
- ln -fs lsz lsb; \
- );
- $(RSTRIP) $(IDIR_LRZSZ)
- $(IPKG_BUILD) $(IDIR_LRZSZ) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/lrzsz/ipkg/lrzsz.control b/openwrt/package/lrzsz/ipkg/lrzsz.control
deleted file mode 100644
index 3e6344bab8..0000000000
--- a/openwrt/package/lrzsz/ipkg/lrzsz.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lrzsz
-Priority: optional
-Section: communications
-Source: http://www.ohse.de/uwe/software/lrzsz.html
-Description: X-Modem, Y-modem, Z-modem protocol handlers. Transfer files in a terminal session. You just need a terminal client that supports x,y or z-modem
diff --git a/openwrt/package/lua/Config.in b/openwrt/package/lua/Config.in
deleted file mode 100644
index fc258264be..0000000000
--- a/openwrt/package/lua/Config.in
+++ /dev/null
@@ -1,111 +0,0 @@
-menu "lua............................... LUA programming language"
-
-config BR2_COMPILE_LUA
- tristate
- default n
- depends BR2_PACKAGE_LIBLUA
-
-config BR2_PACKAGE_LIBLUA
- prompt "liblua............................ LUA programming language shared libraries"
- tristate
- select BR2_COMPILE_LUA
- help
- Lua is a powerful light-weight programming language designed for extending
- applications. Lua is also frequently used as a general-purpose, stand-alone
- language. Lua is free software.
-
- Lua combines simple procedural syntax with powerful data description
- constructs based on associative arrays and extensible semantics. Lua is
- dynamically typed, interpreted from bytecodes, and has automatic memory
- management with garbage collection, making it ideal for configuration,
- scripting, and rapid prototyping.
-
- Lua is implemented as a small library of C functions, written in ANSI C, and
- compiles unmodified in all known platforms. The implementation goals are
- simplicity, efficiency, portability, and low embedding cost. The result is a
- fast language engine with small footprint, making it ideal in embedded systems
- too.
-
- http://www.lua.org/
-
- This package contains the LUA shared libraries, needed by other programs.
-
-config BR2_PACKAGE_LUA
- prompt "lua............................... LUA programming language interpreter"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBLUA
- help
- Lua is a powerful light-weight programming language designed for extending
- applications. Lua is also frequently used as a general-purpose, stand-alone
- language. Lua is free software.
-
- Lua combines simple procedural syntax with powerful data description
- constructs based on associative arrays and extensible semantics. Lua is
- dynamically typed, interpreted from bytecodes, and has automatic memory
- management with garbage collection, making it ideal for configuration,
- scripting, and rapid prototyping.
-
- Lua is implemented as a small library of C functions, written in ANSI C, and
- compiles unmodified in all known platforms. The implementation goals are
- simplicity, efficiency, portability, and low embedding cost. The result is a
- fast language engine with small footprint, making it ideal in embedded systems
- too.
-
- http://www.lua.org/
-
- This package contains the LUA language interpreter.
-
-config BR2_PACKAGE_LUAC
- prompt "luac.............................. LUA programming language compiler"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBLUA
- help
- Lua is a powerful light-weight programming language designed for extending
- applications. Lua is also frequently used as a general-purpose, stand-alone
- language. Lua is free software.
-
- Lua combines simple procedural syntax with powerful data description
- constructs based on associative arrays and extensible semantics. Lua is
- dynamically typed, interpreted from bytecodes, and has automatic memory
- management with garbage collection, making it ideal for configuration,
- scripting, and rapid prototyping.
-
- Lua is implemented as a small library of C functions, written in ANSI C, and
- compiles unmodified in all known platforms. The implementation goals are
- simplicity, efficiency, portability, and low embedding cost. The result is a
- fast language engine with small footprint, making it ideal in embedded systems
- too.
-
- http://www.lua.org/
-
- This package contains the LUA language compiler.
-
-config BR2_PACKAGE_LUA_EXAMPLES
- prompt "lua-examples...................... LUA programming language examples"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LUA
- help
- Lua is a powerful light-weight programming language designed for extending
- applications. Lua is also frequently used as a general-purpose, stand-alone
- language. Lua is free software.
-
- Lua combines simple procedural syntax with powerful data description
- constructs based on associative arrays and extensible semantics. Lua is
- dynamically typed, interpreted from bytecodes, and has automatic memory
- management with garbage collection, making it ideal for configuration,
- scripting, and rapid prototyping.
-
- Lua is implemented as a small library of C functions, written in ANSI C, and
- compiles unmodified in all known platforms. The implementation goals are
- simplicity, efficiency, portability, and low embedding cost. The result is a
- fast language engine with small footprint, making it ideal in embedded systems
- too.
-
- http://www.lua.org/
-
- This package contains LUA language examples.
-
-endmenu
diff --git a/openwrt/package/lua/Makefile b/openwrt/package/lua/Makefile
deleted file mode 100644
index ae6d085cf9..0000000000
--- a/openwrt/package/lua/Makefile
+++ /dev/null
@@ -1,100 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=lua
-PKG_VERSION:=5.0.2
-PKG_RELEASE:=1
-PKG_MD5SUM:= dea74646b7e5c621fef7174df83c34b1
-
-PKG_SOURCE_URL:=http://www.lua.org/ftp/ \
- http://ftp.gwdg.de/pub/languages/lua/ \
- http://mirrors.dotsrc.org/lua/ \
- http://www.tecgraf.puc-rio.br/lua/ftp/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBLUA,liblua,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LUA,lua,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LUAC,luac,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LUA_EXAMPLES,lua-examples,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC="$(TARGET_CROSS)gcc" \
- LD="$(TARGET_CROSS)ld" \
- AR="$(TARGET_CROSS)ar rcu" \
- RANLIB="$(TARGET_CROSS)ranlib" \
- INSTALL_ROOT=/usr \
- MYCFLAGS="-I$(STAGING_DIR)/usr/include $(TARGET_CFLAGS)" \
- MYLDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- all so
- # remove statically linked binaries, so that they will get linked against shlib this time
- rm -f $(PKG_BUILD_DIR)/bin/lua{,c}
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC="$(TARGET_CROSS)gcc" \
- LD="$(TARGET_CROSS)ld" \
- AR="$(TARGET_CROSS)ar rcu" \
- RANLIB="$(TARGET_CROSS)ranlib" \
- INSTALL_ROOT=/usr \
- MYCFLAGS="-I$(STAGING_DIR)/usr/include $(TARGET_CFLAGS)" \
- MYLDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- all
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- INSTALL_ROOT="$(PKG_INSTALL_DIR)/usr" \
- install soinstall
- touch $@
-
-$(IPKG_LIBLUA):
- install -d -m0755 $(IDIR_LIBLUA)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblua{,lib}.so.* $(IDIR_LIBLUA)/usr/lib/
- $(RSTRIP) $(IDIR_LIBLUA)
- $(IPKG_BUILD) $(IDIR_LIBLUA) $(PACKAGE_DIR)
-
-$(IPKG_LUA):
- install -d -m0755 $(IDIR_LUA)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/lua $(IDIR_LUA)/usr/bin/
- $(RSTRIP) $(IDIR_LUA)
- $(IPKG_BUILD) $(IDIR_LUA) $(PACKAGE_DIR)
-
-$(IPKG_LUAC):
- install -d -m0755 $(IDIR_LUAC)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/luac $(IDIR_LUAC)/usr/bin/
- $(RSTRIP) $(IDIR_LUAC)
- $(IPKG_BUILD) $(IDIR_LUAC) $(PACKAGE_DIR)
-
-$(IPKG_LUA_EXAMPLES):
- install -d -m0755 $(IDIR_LUA_EXAMPLES)/usr/share/lua/examples
- install -m0644 $(PKG_BUILD_DIR)/test/*.lua \
- $(IDIR_LUA_EXAMPLES)/usr/share/lua/examples/
- $(RSTRIP) $(IDIR_LUA_EXAMPLES)
- $(IPKG_BUILD) $(IDIR_LUA_EXAMPLES) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/liblua.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/lua{,lib}.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/lauxlib.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblua{,lib}.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/liblua.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/lua{,lib}.h \
- $(STAGING_DIR)/usr/include/lauxlib.h \
- $(STAGING_DIR)/usr/lib/liblua{,lib}.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/lua/ipkg/liblua.control b/openwrt/package/lua/ipkg/liblua.control
deleted file mode 100644
index 502523a53c..0000000000
--- a/openwrt/package/lua/ipkg/liblua.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: liblua
-Priority: optional
-Section: libs
-Description: LUA programming language shared libraries
diff --git a/openwrt/package/lua/ipkg/lua-examples.control b/openwrt/package/lua/ipkg/lua-examples.control
deleted file mode 100644
index fc0e46e074..0000000000
--- a/openwrt/package/lua/ipkg/lua-examples.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lua-examples
-Priority: optional
-Section: devel
-Description: LUA programming language examples
-Depends: lua
diff --git a/openwrt/package/lua/ipkg/lua.control b/openwrt/package/lua/ipkg/lua.control
deleted file mode 100644
index a938103ee5..0000000000
--- a/openwrt/package/lua/ipkg/lua.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lua
-Priority: optional
-Section: admin
-Description: LUA programming language interpreter
-Depends: liblua
diff --git a/openwrt/package/lua/ipkg/luac.control b/openwrt/package/lua/ipkg/luac.control
deleted file mode 100644
index f379f9e45b..0000000000
--- a/openwrt/package/lua/ipkg/luac.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: luac
-Priority: optional
-Section: devel
-Description: LUA programming language compiler
-Depends: liblua
diff --git a/openwrt/package/lua/patches/lua-5.0.2-config.patch b/openwrt/package/lua/patches/lua-5.0.2-config.patch
deleted file mode 100644
index fa5b0e7659..0000000000
--- a/openwrt/package/lua/patches/lua-5.0.2-config.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff -ruN lua-5.0.2-orig/config lua-5.0.2-1/config
---- lua-5.0.2-orig/config 2003-04-11 16:00:41.000000000 +0200
-+++ lua-5.0.2-1/config 2005-05-25 11:23:35.000000000 +0200
-@@ -25,15 +25,15 @@
- # interface (e.g., Linux, Solaris, IRIX, BSD, AIX, HPUX, and probably others),
- # uncomment the next two lines.
- #
--#LOADLIB= -DUSE_DLOPEN=1
--#DLLIB= -ldl
-+LOADLIB= -DUSE_DLOPEN=1
-+DLLIB= -ldl
- #
- # In Linux with gcc, you should also uncomment the next definition for
- # MYLDFLAGS, which passes -E (= -export-dynamic) to the linker. This option
- # allows dynamic libraries to link back to the `lua' program, so that they do
- # not need the Lua libraries. (Other systems may have an equivalent facility.)
- #
--#MYLDFLAGS= -Wl,-E
-+MYLDFLAGS= -Wl,-E
- #
- # On Windows systems. support for dynamic loading is enabled by default.
- # To disable this support, uncomment the next line.
-@@ -142,7 +142,7 @@
-
- # This should work in all Unix systems, but you may want to add options.
- #
--STRIP= strip
-+STRIP= /bin/true
-
- # ------------------------------------------------------------------ install
-
diff --git a/openwrt/package/lua/patches/lua-5.0.2-soname.patch b/openwrt/package/lua/patches/lua-5.0.2-soname.patch
deleted file mode 100644
index 3364ff6ad6..0000000000
--- a/openwrt/package/lua/patches/lua-5.0.2-soname.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -ruN lua-5.0.2-orig/Makefile lua-5.0.2-1/Makefile
---- lua-5.0.2-orig/Makefile 2004-03-12 02:50:55.000000000 +0100
-+++ lua-5.0.2-1/Makefile 2005-05-25 11:41:44.000000000 +0200
-@@ -38,8 +38,8 @@
-
- # shared libraries (for Linux)
- so:
-- ld -o lib/liblua.so.$V -shared src/*.o
-- ld -o lib/liblualib.so.$V -shared src/lib/*.o
-+ $(LD) -o lib/liblua.so.$V -shared -soname="liblua.so.$V" src/*.o
-+ $(LD) -o lib/liblualib.so.$V -shared -soname="liblualib.so.$V" src/lib/*.o
- cd lib; ln -fs liblua.so.$V liblua.so; ln -fs liblualib.so.$V liblualib.so
-
- # binaries using shared libraries
diff --git a/openwrt/package/macchanger/Config.in b/openwrt/package/macchanger/Config.in
deleted file mode 100755
index c0ece4784b..0000000000
--- a/openwrt/package/macchanger/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_MACCHANGER
- tristate "macchanger........................ utility for viewing/manipulating the MAC address"
- default m if CONFIG_DEVEL
- help
- This is a GNU/Linux utility for viewing/manipulating the MAC address
- of network interfaces.
-
- http://www.alobbs.com/macchanger
diff --git a/openwrt/package/macchanger/Makefile b/openwrt/package/macchanger/Makefile
deleted file mode 100755
index 75cbb9c8db..0000000000
--- a/openwrt/package/macchanger/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=macchanger
-PKG_VERSION:=1.5.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=79b7cdaeca3d8ebafa764c4b0dd03ab7
-PKG_SOURCE_URL:=@GNU/macchanger
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=zcat
-
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MACCHANGER,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --program-prefix="" \
- --with-gnu-ld \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) DESTDIR=$(PKG_INSTALL_DIR) -C $(PKG_BUILD_DIR) install
- touch $@
-
-$(IPKG_MACCHANGER):
- mkdir -p $(IDIR_MACCHANGER)
- $(CP) $(PKG_INSTALL_DIR)/* $(IDIR_MACCHANGER)/
- $(RSTRIP) $(IDIR_MACCHANGER)
- $(IPKG_BUILD) $(IDIR_MACCHANGER) $(PACKAGE_DIR)
diff --git a/openwrt/package/macchanger/ipkg/macchanger.control b/openwrt/package/macchanger/ipkg/macchanger.control
deleted file mode 100755
index 9149cc32f1..0000000000
--- a/openwrt/package/macchanger/ipkg/macchanger.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: macchanger
-Section: sys
-Architecture: mipsel
-Priority: optional
-Description: This is a GNU/Linux utility for viewing/manipulating the MAC address
-of network interfaces.
diff --git a/openwrt/package/madplay/Config.in b/openwrt/package/madplay/Config.in
deleted file mode 100644
index 59e234668e..0000000000
--- a/openwrt/package/madplay/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_MADPLAY
- tristate "madplay........................... MPEG audio player in fixed point"
- default m if CONFIG_DEVELOPER
- select BR2_PACKAGE_LIBID3TAG
- select BR2_PACKAGE_LIBMAD
- help
- MAD is an MPEG audio decoder. It currently only supports the MPEG 1
- standard, but fully implements all three audio layers (Layer I, Layer II,
- and Layer III, the latter often colloquially known as MP3.). There is also
- full support for ID3 tags.
-
-
diff --git a/openwrt/package/madplay/Makefile b/openwrt/package/madplay/Makefile
deleted file mode 100644
index 15ddd14273..0000000000
--- a/openwrt/package/madplay/Makefile
+++ /dev/null
@@ -1,78 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=madplay
-PKG_VERSION:=0.15.2b
-PKG_RELEASE:=1
-PKG_MD5SUM:=6814b47ceaa99880c754c5195aa1aac1
-
-PKG_SOURCE_URL:=@SF/mad \
- ftp://ftp.mars.org/pub/mpeg/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MADPLAY,madplay,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- BUILD_CC=$(TARGET_CC) HOSTCC=$(HOSTCC) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-lz" \
- ac_cv_linux_vers=2 \
- td_cv_buggygetaddrinfo="no" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --with-gnu-ld \
- --disable-rpath \
- --disable-debugging \
- --disable-profiling \
- --disable-experimental \
- --without-libiconv-prefix \
- --without-libintl-prefix \
- --without-alsa \
- --without-esd \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_MADPLAY):
- install -m0755 -d $(IDIR_MADPLAY)/usr/bin
- install -m0755 $(PKG_INSTALL_DIR)/usr/bin/madplay $(IDIR_MADPLAY)/usr/bin/
- $(RSTRIP) $(IDIR_MADPLAY)
- $(IPKG_BUILD) $(IDIR_MADPLAY) $(PACKAGE_DIR)
diff --git a/openwrt/package/madplay/ipkg/madplay.control b/openwrt/package/madplay/ipkg/madplay.control
deleted file mode 100644
index f776e7ca63..0000000000
--- a/openwrt/package/madplay/ipkg/madplay.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: madplay
-Priority: optional
-Section: sound
-Description: MPEG audio player in fixed point
-Depends: libid3tag, libmad
-
diff --git a/openwrt/package/maradns/Config.in b/openwrt/package/maradns/Config.in
deleted file mode 100644
index 7c6974c867..0000000000
--- a/openwrt/package/maradns/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_MARADNS
- prompt "maradns........................... Small and secure DNS Server"
- tristate
- default m if CONFIG_DEVEL
- help
- A small and secure DNS server
-
- http://www.maradns.org/
-
diff --git a/openwrt/package/maradns/Makefile b/openwrt/package/maradns/Makefile
deleted file mode 100644
index 3af8350653..0000000000
--- a/openwrt/package/maradns/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=maradns
-PKG_VERSION:=1.2.07.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=dc67f6a496e668127871382a40367733
-
-PKG_SOURCE_URL:=http://www.maradns.org/download/1.2/1.2.07.2/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MARADNS,maradns,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- ./configure \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CFLAGS="$(TARGET_CFLAGS)" \
- FLAGS="$(TARGET_CFLAGS)" \
- CC=$(TARGET_CC) \
- HOSTCC="$(HOSTCC)"
- mkdir -p $(PKG_INSTALL_DIR)/usr/{bin,sbin}
- mkdir -p $(PKG_INSTALL_DIR)/usr/man/man{1,5,8}
- $(MAKE) -C $(PKG_BUILD_DIR) \
- PREFIX="$(PKG_INSTALL_DIR)/usr" \
- RPM_BUILD_ROOT="$(PKG_INSTALL_DIR)" \
- install
- touch $@
-
-$(IPKG_MARADNS):
- install -d -m0755 $(IDIR_MARADNS)/etc
- install -m0644 ./files/mararc $(IDIR_MARADNS)/etc/mararc
- install -d -m0755 $(IDIR_MARADNS)/etc/init.d
- install -m0755 ./files/maradns.init $(IDIR_MARADNS)/etc/init.d/S60maradns
- install -d -m0755 $(IDIR_MARADNS)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/{askmara,getzone,fetchzone,duende} $(IDIR_MARADNS)/usr/bin/
- install -d -m0755 $(IDIR_MARADNS)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/{maradns,zoneserver} $(IDIR_MARADNS)/usr/sbin/
- $(RSTRIP) $(IDIR_MARADNS)
- $(IPKG_BUILD) $(IDIR_MARADNS) $(PACKAGE_DIR)
diff --git a/openwrt/package/maradns/files/maradns.init b/openwrt/package/maradns/files/maradns.init
deleted file mode 100644
index 1b3df1f358..0000000000
--- a/openwrt/package/maradns/files/maradns.init
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-[ -d /etc/maradns ] || mkdir -p /etc/maradns
-[ -d /etc/maradns/logger ] || mkdir -p /etc/maradns/logger
-duende /usr/sbin/maradns
-duende /usr/sbin/zoneserver
diff --git a/openwrt/package/maradns/files/mararc b/openwrt/package/maradns/files/mararc
deleted file mode 100644
index e67ee99592..0000000000
--- a/openwrt/package/maradns/files/mararc
+++ /dev/null
@@ -1,9 +0,0 @@
-hide_disclaimer="YES"
-chroot_dir="/etc/maradns"
-bind_address="0.0.0.0"
-maradns_uid=65534
-maxprocs=10
-random_seed_file="/dev/urandom"
-recursive_acl="192.168.1.0/24"
-root_servers={}
-root_servers["."]="198.41.0.4,128.9.0.107,192.33.4.12,128.8.10.90,192.203.230.10,192.5.5.241,192.112.36.4,128.63.2.53,192.36.148.17,192.58.128.30,193.0.14.129,198.32.64.12,202.12.27.33"
diff --git a/openwrt/package/maradns/ipkg/maradns.conffiles b/openwrt/package/maradns/ipkg/maradns.conffiles
deleted file mode 100644
index 53fcab8e5f..0000000000
--- a/openwrt/package/maradns/ipkg/maradns.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/mararc \ No newline at end of file
diff --git a/openwrt/package/maradns/ipkg/maradns.control b/openwrt/package/maradns/ipkg/maradns.control
deleted file mode 100644
index 5db7497f44..0000000000
--- a/openwrt/package/maradns/ipkg/maradns.control
+++ /dev/null
@@ -1,8 +0,0 @@
-Package: maradns
-Section: net
-Priority: optional
-Depends: libpthread
-Description: MaraDNS is a small, secure DNS Server
- MaraDNS is intended for environments where a DNS
- server must be secure and where the server must use
- the absolute minimum number of resources possible.
diff --git a/openwrt/package/maradns/patches/cross-compile-fix.patch b/openwrt/package/maradns/patches/cross-compile-fix.patch
deleted file mode 100644
index d8ee0e0512..0000000000
--- a/openwrt/package/maradns/patches/cross-compile-fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN maradns-1.0.26.old/rng/Makefile maradns-1.0.26.dev/rng/Makefile
---- maradns-1.0.26.old/rng/Makefile 2003-08-02 21:39:36.000000000 +0200
-+++ maradns-1.0.26.dev/rng/Makefile 2005-04-30 23:29:30.000000000 +0200
-@@ -20,7 +20,7 @@
- $(CC) -c $(FLAGS) -o rng-api-fst.o rng-api-fst.c
-
- make_32bit_tables: make_32bit_tables.c
-- $(CC) -o make_32bit_tables make_32bit_tables.c
-+ $(HOSTCC) -o make_32bit_tables make_32bit_tables.c
-
- rng-32bit-tables.h: make_32bit_tables
- ./make_32bit_tables > rng-32bit-tables.h
diff --git a/openwrt/package/matrixssl/Config.in b/openwrt/package/matrixssl/Config.in
deleted file mode 100644
index 3d4532e52a..0000000000
--- a/openwrt/package/matrixssl/Config.in
+++ /dev/null
@@ -1,17 +0,0 @@
-config BR2_COMPILE_MATRIXSSL
- tristate
- depends BR2_PACKAGE_LIBMATRIXSSL
-
-config BR2_PACKAGE_LIBMATRIXSSL
- prompt "libmatrixssl...................... Embedded SSL implementation"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_MATRIXSSL
- select BR2_PACKAGE_LIBPTHREAD
- help
- An embedded SSL implementation
-
- http://www.matrixssl.org/
-
- Depends: libpthread
-
diff --git a/openwrt/package/matrixssl/Makefile b/openwrt/package/matrixssl/Makefile
deleted file mode 100644
index 89bd39a92c..0000000000
--- a/openwrt/package/matrixssl/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=matrixssl
-PKG_VERSION:=1.2.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=771c1489488e62668d673478311d63ca
-
-PKG_SOURCE_URL:=http://nbd.vd-s.ath.cx/openwrt
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBMATRIXSSL,libmatrixssl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- $(MAKE) -C $(PKG_BUILD_DIR)/src \
- $(TARGET_CONFIGURE_OPTS) \
- DFLAGS="$(TARGET_CFLAGS) -Wall"
- touch $@
-
-$(IPKG_LIBMATRIXSSL):
- install -d -m0755 $(IDIR_LIBMATRIXSSL)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/src/libmatrixssl.so.* $(IDIR_LIBMATRIXSSL)/usr/lib/
- $(RSTRIP) $(IDIR_LIBMATRIXSSL)
- $(IPKG_BUILD) $(IDIR_LIBMATRIXSSL) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libmatrixssl.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include/matrixSsl
- $(CP) $(PKG_BUILD_DIR)/matrixSsl.h $(STAGING_DIR)/usr/include/matrixSsl
- ln -sf matrixSsl/matrixSsl.h $(STAGING_DIR)/usr/include/matrixSsl.h
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/src/libmatrixssl.so* $(STAGING_DIR)/usr/lib
-
-install-dev: $(STAGING_DIR)/usr/lib/libmatrixssl.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/matrixSsl* \
- $(STAGING_DIR)/usr/lib/libmatrixssl.so* \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/matrixssl/ipkg/libmatrixssl.control b/openwrt/package/matrixssl/ipkg/libmatrixssl.control
deleted file mode 100644
index fb1816ab2f..0000000000
--- a/openwrt/package/matrixssl/ipkg/libmatrixssl.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libmatrixssl
-Priority: optional
-Section: libs
-Description: an embedded SSL implementation
-Depends: libpthread
diff --git a/openwrt/package/matrixssl/patches/matrixssl-1.2.4.diff b/openwrt/package/matrixssl/patches/matrixssl-1.2.4.diff
deleted file mode 100644
index b4a2bc9905..0000000000
--- a/openwrt/package/matrixssl/patches/matrixssl-1.2.4.diff
+++ /dev/null
@@ -1,1971 +0,0 @@
-diff -urN matrixssl.old/matrixSsl.h matrixssl/matrixSsl.h
---- matrixssl.old/matrixSsl.h 2005-02-23 22:43:10.000000000 +0100
-+++ matrixssl/matrixSsl.h 2005-03-06 01:32:33.000000000 +0100
-@@ -154,6 +154,29 @@
-
- #define SSL_OPTION_DELETE_SESSION 0
-
-+
-+#define SSL_MD5_DIGEST_LENGTH 16
-+#define SSL_MD5_CONTEXT_DATA_SIZE 96
-+
-+typedef struct {
-+ unsigned char data[SSL_MD5_CONTEXT_DATA_SIZE];
-+} sslMd5Context_t;
-+
-+
-+#define SSL_SHA1_DIGEST_LENGTH 20
-+#define SSL_SHA1_CONTEXT_DATA_SIZE 96
-+
-+typedef struct {
-+ unsigned char data[SSL_SHA1_CONTEXT_DATA_SIZE];
-+} sslSha1Context_t;
-+
-+
-+#define SSL_CIPHER_CONTEXT_DATA_SIZE 784
-+
-+typedef struct {
-+ unsigned char data[SSL_CIPHER_CONTEXT_DATA_SIZE];
-+} sslCipherContext_t;
-+
- /******************************************************************************/
- /*
- Explicitly import these apis on Windows. If we're being included from the
-@@ -220,6 +243,71 @@
- char *privBuf, int32 privLen, char *privPass,
- char *trustedCABuf, int32 trustedCALen);
-
-+
-+/*
-+ ARC4 (RC4) API
-+*/
-+
-+SSLPUBLIC void matrixArc4Init(sslCipherContext_t *ctx, unsigned char *key,
-+ int keylen);
-+
-+SSLPUBLIC int matrixArc4(sslCipherContext_t *ctx, unsigned char *in,
-+ unsigned char *out, int len);
-+
-+/*
-+ 3DES (Triple-DES) API
-+*/
-+
-+SSLPUBLIC int matrix3desInit(sslCipherContext_t *ctx, unsigned char *IV,
-+ unsigned char *key, int keylen);
-+
-+SSLPUBLIC int matrix3desEncrypt(sslCipherContext_t *ctx, unsigned char *pt,
-+ unsigned char *ct, int len);
-+
-+SSLPUBLIC int matrix3desDecrypt(sslCipherContext_t *ctx, unsigned char *ct,
-+ unsigned char *pt, int len);
-+
-+/*
-+ AES API
-+*/
-+
-+SSLPUBLIC int matrixAesInit(sslCipherContext_t *ctx, unsigned char *IV,
-+ unsigned char *key, int keylen);
-+
-+SSLPUBLIC int matrixAesEncrypt(sslCipherContext_t *ctx, unsigned char *pt,
-+ unsigned char *ct, int len);
-+
-+SSLPUBLIC int matrixAesDecrypt(sslCipherContext_t *ctx, unsigned char *ct,
-+ unsigned char *pt, int len);
-+
-+/*
-+ MD5 API
-+*/
-+
-+SSLPUBLIC void matrixMd5Init(sslMd5Context_t *ctx);
-+
-+SSLPUBLIC void matrixMd5Update(sslMd5Context_t *ctx, const unsigned char *buf,
-+ unsigned long len);
-+
-+SSLPUBLIC int matrixMd5Final(sslMd5Context_t *ctx, unsigned char *hash);
-+
-+SSLPUBLIC unsigned char *matrixMd5Digest(const unsigned char *buf,
-+ unsigned long len, unsigned char *hash);
-+
-+/*
-+ SHA1 API
-+*/
-+
-+SSLPUBLIC void matrixSha1Init(sslSha1Context_t *ctx);
-+
-+SSLPUBLIC void matrixSha1Update(sslSha1Context_t *ctx, const unsigned char *buf,
-+ unsigned long len);
-+
-+SSLPUBLIC int matrixSha1Final(sslSha1Context_t *ctx, unsigned char *hash);
-+
-+SSLPUBLIC unsigned char *matrixSha1Digest(const unsigned char *buf,
-+ unsigned long len, unsigned char *hash);
-+
- /******************************************************************************/
-
- #ifdef __cplusplus
-diff -urN matrixssl.old/src/crypto/cryptoLayer.h matrixssl/src/crypto/cryptoLayer.h
---- matrixssl.old/src/crypto/cryptoLayer.h 2005-02-23 22:43:10.000000000 +0100
-+++ matrixssl/src/crypto/cryptoLayer.h 2005-03-06 01:32:33.000000000 +0100
-@@ -115,6 +115,7 @@
- */
- /* #define USE_FULL_CERT_PARSE */
- /* #define USE_MD2 */
-+#define USE_AES
-
- /*
- Now that we've set up the required defines, include the crypto layer header
-diff -urN matrixssl.old/src/crypto/peersec/aes.c matrixssl/src/crypto/peersec/aes.c
---- matrixssl.old/src/crypto/peersec/aes.c 1970-01-01 01:00:00.000000000 +0100
-+++ matrixssl/src/crypto/peersec/aes.c 2005-03-06 01:32:33.000000000 +0100
-@@ -0,0 +1,1708 @@
-+/*
-+ * aes.c
-+ *
-+ * AES CBC block cipher implementation
-+ */
-+/*
-+ * Copyright (c) PeerSec Networks, 2002-2004. All Rights Reserved.
-+ * The latest version of this code is available at http://www.matrixssl.org
-+ *
-+ * This software is open source; 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 General Public License does NOT permit incorporating this software
-+ * into proprietary programs. If you are unable to comply with the GPL, a
-+ * commercial license for this software may be purchased from PeerSec Networks
-+ * at http://www.peersec.com
-+ *
-+ * This program is distributed in 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
-+ * http://www.gnu.org/copyleft/gpl.html
-+ */
-+/******************************************************************************/
-+
-+#include "../cryptoLayer.h"
-+
-+#ifdef USE_AES
-+
-+/* The precomputed tables for AES */
-+/*
-+Te0[x] = S [x].[02, 01, 01, 03];
-+Te1[x] = S [x].[03, 02, 01, 01];
-+Te2[x] = S [x].[01, 03, 02, 01];
-+Te3[x] = S [x].[01, 01, 03, 02];
-+Te4[x] = S [x].[01, 01, 01, 01];
-+
-+Td0[x] = Si[x].[0e, 09, 0d, 0b];
-+Td1[x] = Si[x].[0b, 0e, 09, 0d];
-+Td2[x] = Si[x].[0d, 0b, 0e, 09];
-+Td3[x] = Si[x].[09, 0d, 0b, 0e];
-+Td4[x] = Si[x].[01, 01, 01, 01];
-+*/
-+
-+static const ulong32 TE0[256] = {
-+ 0xc66363a5UL, 0xf87c7c84UL, 0xee777799UL, 0xf67b7b8dUL,
-+ 0xfff2f20dUL, 0xd66b6bbdUL, 0xde6f6fb1UL, 0x91c5c554UL,
-+ 0x60303050UL, 0x02010103UL, 0xce6767a9UL, 0x562b2b7dUL,
-+ 0xe7fefe19UL, 0xb5d7d762UL, 0x4dababe6UL, 0xec76769aUL,
-+ 0x8fcaca45UL, 0x1f82829dUL, 0x89c9c940UL, 0xfa7d7d87UL,
-+ 0xeffafa15UL, 0xb25959ebUL, 0x8e4747c9UL, 0xfbf0f00bUL,
-+ 0x41adadecUL, 0xb3d4d467UL, 0x5fa2a2fdUL, 0x45afafeaUL,
-+ 0x239c9cbfUL, 0x53a4a4f7UL, 0xe4727296UL, 0x9bc0c05bUL,
-+ 0x75b7b7c2UL, 0xe1fdfd1cUL, 0x3d9393aeUL, 0x4c26266aUL,
-+ 0x6c36365aUL, 0x7e3f3f41UL, 0xf5f7f702UL, 0x83cccc4fUL,
-+ 0x6834345cUL, 0x51a5a5f4UL, 0xd1e5e534UL, 0xf9f1f108UL,
-+ 0xe2717193UL, 0xabd8d873UL, 0x62313153UL, 0x2a15153fUL,
-+ 0x0804040cUL, 0x95c7c752UL, 0x46232365UL, 0x9dc3c35eUL,
-+ 0x30181828UL, 0x379696a1UL, 0x0a05050fUL, 0x2f9a9ab5UL,
-+ 0x0e070709UL, 0x24121236UL, 0x1b80809bUL, 0xdfe2e23dUL,
-+ 0xcdebeb26UL, 0x4e272769UL, 0x7fb2b2cdUL, 0xea75759fUL,
-+ 0x1209091bUL, 0x1d83839eUL, 0x582c2c74UL, 0x341a1a2eUL,
-+ 0x361b1b2dUL, 0xdc6e6eb2UL, 0xb45a5aeeUL, 0x5ba0a0fbUL,
-+ 0xa45252f6UL, 0x763b3b4dUL, 0xb7d6d661UL, 0x7db3b3ceUL,
-+ 0x5229297bUL, 0xdde3e33eUL, 0x5e2f2f71UL, 0x13848497UL,
-+ 0xa65353f5UL, 0xb9d1d168UL, 0x00000000UL, 0xc1eded2cUL,
-+ 0x40202060UL, 0xe3fcfc1fUL, 0x79b1b1c8UL, 0xb65b5bedUL,
-+ 0xd46a6abeUL, 0x8dcbcb46UL, 0x67bebed9UL, 0x7239394bUL,
-+ 0x944a4adeUL, 0x984c4cd4UL, 0xb05858e8UL, 0x85cfcf4aUL,
-+ 0xbbd0d06bUL, 0xc5efef2aUL, 0x4faaaae5UL, 0xedfbfb16UL,
-+ 0x864343c5UL, 0x9a4d4dd7UL, 0x66333355UL, 0x11858594UL,
-+ 0x8a4545cfUL, 0xe9f9f910UL, 0x04020206UL, 0xfe7f7f81UL,
-+ 0xa05050f0UL, 0x783c3c44UL, 0x259f9fbaUL, 0x4ba8a8e3UL,
-+ 0xa25151f3UL, 0x5da3a3feUL, 0x804040c0UL, 0x058f8f8aUL,
-+ 0x3f9292adUL, 0x219d9dbcUL, 0x70383848UL, 0xf1f5f504UL,
-+ 0x63bcbcdfUL, 0x77b6b6c1UL, 0xafdada75UL, 0x42212163UL,
-+ 0x20101030UL, 0xe5ffff1aUL, 0xfdf3f30eUL, 0xbfd2d26dUL,
-+ 0x81cdcd4cUL, 0x180c0c14UL, 0x26131335UL, 0xc3ecec2fUL,
-+ 0xbe5f5fe1UL, 0x359797a2UL, 0x884444ccUL, 0x2e171739UL,
-+ 0x93c4c457UL, 0x55a7a7f2UL, 0xfc7e7e82UL, 0x7a3d3d47UL,
-+ 0xc86464acUL, 0xba5d5de7UL, 0x3219192bUL, 0xe6737395UL,
-+ 0xc06060a0UL, 0x19818198UL, 0x9e4f4fd1UL, 0xa3dcdc7fUL,
-+ 0x44222266UL, 0x542a2a7eUL, 0x3b9090abUL, 0x0b888883UL,
-+ 0x8c4646caUL, 0xc7eeee29UL, 0x6bb8b8d3UL, 0x2814143cUL,
-+ 0xa7dede79UL, 0xbc5e5ee2UL, 0x160b0b1dUL, 0xaddbdb76UL,
-+ 0xdbe0e03bUL, 0x64323256UL, 0x743a3a4eUL, 0x140a0a1eUL,
-+ 0x924949dbUL, 0x0c06060aUL, 0x4824246cUL, 0xb85c5ce4UL,
-+ 0x9fc2c25dUL, 0xbdd3d36eUL, 0x43acacefUL, 0xc46262a6UL,
-+ 0x399191a8UL, 0x319595a4UL, 0xd3e4e437UL, 0xf279798bUL,
-+ 0xd5e7e732UL, 0x8bc8c843UL, 0x6e373759UL, 0xda6d6db7UL,
-+ 0x018d8d8cUL, 0xb1d5d564UL, 0x9c4e4ed2UL, 0x49a9a9e0UL,
-+ 0xd86c6cb4UL, 0xac5656faUL, 0xf3f4f407UL, 0xcfeaea25UL,
-+ 0xca6565afUL, 0xf47a7a8eUL, 0x47aeaee9UL, 0x10080818UL,
-+ 0x6fbabad5UL, 0xf0787888UL, 0x4a25256fUL, 0x5c2e2e72UL,
-+ 0x381c1c24UL, 0x57a6a6f1UL, 0x73b4b4c7UL, 0x97c6c651UL,
-+ 0xcbe8e823UL, 0xa1dddd7cUL, 0xe874749cUL, 0x3e1f1f21UL,
-+ 0x964b4bddUL, 0x61bdbddcUL, 0x0d8b8b86UL, 0x0f8a8a85UL,
-+ 0xe0707090UL, 0x7c3e3e42UL, 0x71b5b5c4UL, 0xcc6666aaUL,
-+ 0x904848d8UL, 0x06030305UL, 0xf7f6f601UL, 0x1c0e0e12UL,
-+ 0xc26161a3UL, 0x6a35355fUL, 0xae5757f9UL, 0x69b9b9d0UL,
-+ 0x17868691UL, 0x99c1c158UL, 0x3a1d1d27UL, 0x279e9eb9UL,
-+ 0xd9e1e138UL, 0xebf8f813UL, 0x2b9898b3UL, 0x22111133UL,
-+ 0xd26969bbUL, 0xa9d9d970UL, 0x078e8e89UL, 0x339494a7UL,
-+ 0x2d9b9bb6UL, 0x3c1e1e22UL, 0x15878792UL, 0xc9e9e920UL,
-+ 0x87cece49UL, 0xaa5555ffUL, 0x50282878UL, 0xa5dfdf7aUL,
-+ 0x038c8c8fUL, 0x59a1a1f8UL, 0x09898980UL, 0x1a0d0d17UL,
-+ 0x65bfbfdaUL, 0xd7e6e631UL, 0x844242c6UL, 0xd06868b8UL,
-+ 0x824141c3UL, 0x299999b0UL, 0x5a2d2d77UL, 0x1e0f0f11UL,
-+ 0x7bb0b0cbUL, 0xa85454fcUL, 0x6dbbbbd6UL, 0x2c16163aUL,
-+};
-+
-+static const ulong32 Te4[256] = {
-+ 0x63636363UL, 0x7c7c7c7cUL, 0x77777777UL, 0x7b7b7b7bUL,
-+ 0xf2f2f2f2UL, 0x6b6b6b6bUL, 0x6f6f6f6fUL, 0xc5c5c5c5UL,
-+ 0x30303030UL, 0x01010101UL, 0x67676767UL, 0x2b2b2b2bUL,
-+ 0xfefefefeUL, 0xd7d7d7d7UL, 0xababababUL, 0x76767676UL,
-+ 0xcacacacaUL, 0x82828282UL, 0xc9c9c9c9UL, 0x7d7d7d7dUL,
-+ 0xfafafafaUL, 0x59595959UL, 0x47474747UL, 0xf0f0f0f0UL,
-+ 0xadadadadUL, 0xd4d4d4d4UL, 0xa2a2a2a2UL, 0xafafafafUL,
-+ 0x9c9c9c9cUL, 0xa4a4a4a4UL, 0x72727272UL, 0xc0c0c0c0UL,
-+ 0xb7b7b7b7UL, 0xfdfdfdfdUL, 0x93939393UL, 0x26262626UL,
-+ 0x36363636UL, 0x3f3f3f3fUL, 0xf7f7f7f7UL, 0xccccccccUL,
-+ 0x34343434UL, 0xa5a5a5a5UL, 0xe5e5e5e5UL, 0xf1f1f1f1UL,
-+ 0x71717171UL, 0xd8d8d8d8UL, 0x31313131UL, 0x15151515UL,
-+ 0x04040404UL, 0xc7c7c7c7UL, 0x23232323UL, 0xc3c3c3c3UL,
-+ 0x18181818UL, 0x96969696UL, 0x05050505UL, 0x9a9a9a9aUL,
-+ 0x07070707UL, 0x12121212UL, 0x80808080UL, 0xe2e2e2e2UL,
-+ 0xebebebebUL, 0x27272727UL, 0xb2b2b2b2UL, 0x75757575UL,
-+ 0x09090909UL, 0x83838383UL, 0x2c2c2c2cUL, 0x1a1a1a1aUL,
-+ 0x1b1b1b1bUL, 0x6e6e6e6eUL, 0x5a5a5a5aUL, 0xa0a0a0a0UL,
-+ 0x52525252UL, 0x3b3b3b3bUL, 0xd6d6d6d6UL, 0xb3b3b3b3UL,
-+ 0x29292929UL, 0xe3e3e3e3UL, 0x2f2f2f2fUL, 0x84848484UL,
-+ 0x53535353UL, 0xd1d1d1d1UL, 0x00000000UL, 0xededededUL,
-+ 0x20202020UL, 0xfcfcfcfcUL, 0xb1b1b1b1UL, 0x5b5b5b5bUL,
-+ 0x6a6a6a6aUL, 0xcbcbcbcbUL, 0xbebebebeUL, 0x39393939UL,
-+ 0x4a4a4a4aUL, 0x4c4c4c4cUL, 0x58585858UL, 0xcfcfcfcfUL,
-+ 0xd0d0d0d0UL, 0xefefefefUL, 0xaaaaaaaaUL, 0xfbfbfbfbUL,
-+ 0x43434343UL, 0x4d4d4d4dUL, 0x33333333UL, 0x85858585UL,
-+ 0x45454545UL, 0xf9f9f9f9UL, 0x02020202UL, 0x7f7f7f7fUL,
-+ 0x50505050UL, 0x3c3c3c3cUL, 0x9f9f9f9fUL, 0xa8a8a8a8UL,
-+ 0x51515151UL, 0xa3a3a3a3UL, 0x40404040UL, 0x8f8f8f8fUL,
-+ 0x92929292UL, 0x9d9d9d9dUL, 0x38383838UL, 0xf5f5f5f5UL,
-+ 0xbcbcbcbcUL, 0xb6b6b6b6UL, 0xdadadadaUL, 0x21212121UL,
-+ 0x10101010UL, 0xffffffffUL, 0xf3f3f3f3UL, 0xd2d2d2d2UL,
-+ 0xcdcdcdcdUL, 0x0c0c0c0cUL, 0x13131313UL, 0xececececUL,
-+ 0x5f5f5f5fUL, 0x97979797UL, 0x44444444UL, 0x17171717UL,
-+ 0xc4c4c4c4UL, 0xa7a7a7a7UL, 0x7e7e7e7eUL, 0x3d3d3d3dUL,
-+ 0x64646464UL, 0x5d5d5d5dUL, 0x19191919UL, 0x73737373UL,
-+ 0x60606060UL, 0x81818181UL, 0x4f4f4f4fUL, 0xdcdcdcdcUL,
-+ 0x22222222UL, 0x2a2a2a2aUL, 0x90909090UL, 0x88888888UL,
-+ 0x46464646UL, 0xeeeeeeeeUL, 0xb8b8b8b8UL, 0x14141414UL,
-+ 0xdedededeUL, 0x5e5e5e5eUL, 0x0b0b0b0bUL, 0xdbdbdbdbUL,
-+ 0xe0e0e0e0UL, 0x32323232UL, 0x3a3a3a3aUL, 0x0a0a0a0aUL,
-+ 0x49494949UL, 0x06060606UL, 0x24242424UL, 0x5c5c5c5cUL,
-+ 0xc2c2c2c2UL, 0xd3d3d3d3UL, 0xacacacacUL, 0x62626262UL,
-+ 0x91919191UL, 0x95959595UL, 0xe4e4e4e4UL, 0x79797979UL,
-+ 0xe7e7e7e7UL, 0xc8c8c8c8UL, 0x37373737UL, 0x6d6d6d6dUL,
-+ 0x8d8d8d8dUL, 0xd5d5d5d5UL, 0x4e4e4e4eUL, 0xa9a9a9a9UL,
-+ 0x6c6c6c6cUL, 0x56565656UL, 0xf4f4f4f4UL, 0xeaeaeaeaUL,
-+ 0x65656565UL, 0x7a7a7a7aUL, 0xaeaeaeaeUL, 0x08080808UL,
-+ 0xbabababaUL, 0x78787878UL, 0x25252525UL, 0x2e2e2e2eUL,
-+ 0x1c1c1c1cUL, 0xa6a6a6a6UL, 0xb4b4b4b4UL, 0xc6c6c6c6UL,
-+ 0xe8e8e8e8UL, 0xddddddddUL, 0x74747474UL, 0x1f1f1f1fUL,
-+ 0x4b4b4b4bUL, 0xbdbdbdbdUL, 0x8b8b8b8bUL, 0x8a8a8a8aUL,
-+ 0x70707070UL, 0x3e3e3e3eUL, 0xb5b5b5b5UL, 0x66666666UL,
-+ 0x48484848UL, 0x03030303UL, 0xf6f6f6f6UL, 0x0e0e0e0eUL,
-+ 0x61616161UL, 0x35353535UL, 0x57575757UL, 0xb9b9b9b9UL,
-+ 0x86868686UL, 0xc1c1c1c1UL, 0x1d1d1d1dUL, 0x9e9e9e9eUL,
-+ 0xe1e1e1e1UL, 0xf8f8f8f8UL, 0x98989898UL, 0x11111111UL,
-+ 0x69696969UL, 0xd9d9d9d9UL, 0x8e8e8e8eUL, 0x94949494UL,
-+ 0x9b9b9b9bUL, 0x1e1e1e1eUL, 0x87878787UL, 0xe9e9e9e9UL,
-+ 0xcecececeUL, 0x55555555UL, 0x28282828UL, 0xdfdfdfdfUL,
-+ 0x8c8c8c8cUL, 0xa1a1a1a1UL, 0x89898989UL, 0x0d0d0d0dUL,
-+ 0xbfbfbfbfUL, 0xe6e6e6e6UL, 0x42424242UL, 0x68686868UL,
-+ 0x41414141UL, 0x99999999UL, 0x2d2d2d2dUL, 0x0f0f0f0fUL,
-+ 0xb0b0b0b0UL, 0x54545454UL, 0xbbbbbbbbUL, 0x16161616UL,
-+};
-+
-+static const ulong32 TD0[256] = {
-+ 0x51f4a750UL, 0x7e416553UL, 0x1a17a4c3UL, 0x3a275e96UL,
-+ 0x3bab6bcbUL, 0x1f9d45f1UL, 0xacfa58abUL, 0x4be30393UL,
-+ 0x2030fa55UL, 0xad766df6UL, 0x88cc7691UL, 0xf5024c25UL,
-+ 0x4fe5d7fcUL, 0xc52acbd7UL, 0x26354480UL, 0xb562a38fUL,
-+ 0xdeb15a49UL, 0x25ba1b67UL, 0x45ea0e98UL, 0x5dfec0e1UL,
-+ 0xc32f7502UL, 0x814cf012UL, 0x8d4697a3UL, 0x6bd3f9c6UL,
-+ 0x038f5fe7UL, 0x15929c95UL, 0xbf6d7aebUL, 0x955259daUL,
-+ 0xd4be832dUL, 0x587421d3UL, 0x49e06929UL, 0x8ec9c844UL,
-+ 0x75c2896aUL, 0xf48e7978UL, 0x99583e6bUL, 0x27b971ddUL,
-+ 0xbee14fb6UL, 0xf088ad17UL, 0xc920ac66UL, 0x7dce3ab4UL,
-+ 0x63df4a18UL, 0xe51a3182UL, 0x97513360UL, 0x62537f45UL,
-+ 0xb16477e0UL, 0xbb6bae84UL, 0xfe81a01cUL, 0xf9082b94UL,
-+ 0x70486858UL, 0x8f45fd19UL, 0x94de6c87UL, 0x527bf8b7UL,
-+ 0xab73d323UL, 0x724b02e2UL, 0xe31f8f57UL, 0x6655ab2aUL,
-+ 0xb2eb2807UL, 0x2fb5c203UL, 0x86c57b9aUL, 0xd33708a5UL,
-+ 0x302887f2UL, 0x23bfa5b2UL, 0x02036abaUL, 0xed16825cUL,
-+ 0x8acf1c2bUL, 0xa779b492UL, 0xf307f2f0UL, 0x4e69e2a1UL,
-+ 0x65daf4cdUL, 0x0605bed5UL, 0xd134621fUL, 0xc4a6fe8aUL,
-+ 0x342e539dUL, 0xa2f355a0UL, 0x058ae132UL, 0xa4f6eb75UL,
-+ 0x0b83ec39UL, 0x4060efaaUL, 0x5e719f06UL, 0xbd6e1051UL,
-+ 0x3e218af9UL, 0x96dd063dUL, 0xdd3e05aeUL, 0x4de6bd46UL,
-+ 0x91548db5UL, 0x71c45d05UL, 0x0406d46fUL, 0x605015ffUL,
-+ 0x1998fb24UL, 0xd6bde997UL, 0x894043ccUL, 0x67d99e77UL,
-+ 0xb0e842bdUL, 0x07898b88UL, 0xe7195b38UL, 0x79c8eedbUL,
-+ 0xa17c0a47UL, 0x7c420fe9UL, 0xf8841ec9UL, 0x00000000UL,
-+ 0x09808683UL, 0x322bed48UL, 0x1e1170acUL, 0x6c5a724eUL,
-+ 0xfd0efffbUL, 0x0f853856UL, 0x3daed51eUL, 0x362d3927UL,
-+ 0x0a0fd964UL, 0x685ca621UL, 0x9b5b54d1UL, 0x24362e3aUL,
-+ 0x0c0a67b1UL, 0x9357e70fUL, 0xb4ee96d2UL, 0x1b9b919eUL,
-+ 0x80c0c54fUL, 0x61dc20a2UL, 0x5a774b69UL, 0x1c121a16UL,
-+ 0xe293ba0aUL, 0xc0a02ae5UL, 0x3c22e043UL, 0x121b171dUL,
-+ 0x0e090d0bUL, 0xf28bc7adUL, 0x2db6a8b9UL, 0x141ea9c8UL,
-+ 0x57f11985UL, 0xaf75074cUL, 0xee99ddbbUL, 0xa37f60fdUL,
-+ 0xf701269fUL, 0x5c72f5bcUL, 0x44663bc5UL, 0x5bfb7e34UL,
-+ 0x8b432976UL, 0xcb23c6dcUL, 0xb6edfc68UL, 0xb8e4f163UL,
-+ 0xd731dccaUL, 0x42638510UL, 0x13972240UL, 0x84c61120UL,
-+ 0x854a247dUL, 0xd2bb3df8UL, 0xaef93211UL, 0xc729a16dUL,
-+ 0x1d9e2f4bUL, 0xdcb230f3UL, 0x0d8652ecUL, 0x77c1e3d0UL,
-+ 0x2bb3166cUL, 0xa970b999UL, 0x119448faUL, 0x47e96422UL,
-+ 0xa8fc8cc4UL, 0xa0f03f1aUL, 0x567d2cd8UL, 0x223390efUL,
-+ 0x87494ec7UL, 0xd938d1c1UL, 0x8ccaa2feUL, 0x98d40b36UL,
-+ 0xa6f581cfUL, 0xa57ade28UL, 0xdab78e26UL, 0x3fadbfa4UL,
-+ 0x2c3a9de4UL, 0x5078920dUL, 0x6a5fcc9bUL, 0x547e4662UL,
-+ 0xf68d13c2UL, 0x90d8b8e8UL, 0x2e39f75eUL, 0x82c3aff5UL,
-+ 0x9f5d80beUL, 0x69d0937cUL, 0x6fd52da9UL, 0xcf2512b3UL,
-+ 0xc8ac993bUL, 0x10187da7UL, 0xe89c636eUL, 0xdb3bbb7bUL,
-+ 0xcd267809UL, 0x6e5918f4UL, 0xec9ab701UL, 0x834f9aa8UL,
-+ 0xe6956e65UL, 0xaaffe67eUL, 0x21bccf08UL, 0xef15e8e6UL,
-+ 0xbae79bd9UL, 0x4a6f36ceUL, 0xea9f09d4UL, 0x29b07cd6UL,
-+ 0x31a4b2afUL, 0x2a3f2331UL, 0xc6a59430UL, 0x35a266c0UL,
-+ 0x744ebc37UL, 0xfc82caa6UL, 0xe090d0b0UL, 0x33a7d815UL,
-+ 0xf104984aUL, 0x41ecdaf7UL, 0x7fcd500eUL, 0x1791f62fUL,
-+ 0x764dd68dUL, 0x43efb04dUL, 0xccaa4d54UL, 0xe49604dfUL,
-+ 0x9ed1b5e3UL, 0x4c6a881bUL, 0xc12c1fb8UL, 0x4665517fUL,
-+ 0x9d5eea04UL, 0x018c355dUL, 0xfa877473UL, 0xfb0b412eUL,
-+ 0xb3671d5aUL, 0x92dbd252UL, 0xe9105633UL, 0x6dd64713UL,
-+ 0x9ad7618cUL, 0x37a10c7aUL, 0x59f8148eUL, 0xeb133c89UL,
-+ 0xcea927eeUL, 0xb761c935UL, 0xe11ce5edUL, 0x7a47b13cUL,
-+ 0x9cd2df59UL, 0x55f2733fUL, 0x1814ce79UL, 0x73c737bfUL,
-+ 0x53f7cdeaUL, 0x5ffdaa5bUL, 0xdf3d6f14UL, 0x7844db86UL,
-+ 0xcaaff381UL, 0xb968c43eUL, 0x3824342cUL, 0xc2a3405fUL,
-+ 0x161dc372UL, 0xbce2250cUL, 0x283c498bUL, 0xff0d9541UL,
-+ 0x39a80171UL, 0x080cb3deUL, 0xd8b4e49cUL, 0x6456c190UL,
-+ 0x7bcb8461UL, 0xd532b670UL, 0x486c5c74UL, 0xd0b85742UL,
-+};
-+
-+static const ulong32 Td4[256] = {
-+ 0x52525252UL, 0x09090909UL, 0x6a6a6a6aUL, 0xd5d5d5d5UL,
-+ 0x30303030UL, 0x36363636UL, 0xa5a5a5a5UL, 0x38383838UL,
-+ 0xbfbfbfbfUL, 0x40404040UL, 0xa3a3a3a3UL, 0x9e9e9e9eUL,
-+ 0x81818181UL, 0xf3f3f3f3UL, 0xd7d7d7d7UL, 0xfbfbfbfbUL,
-+ 0x7c7c7c7cUL, 0xe3e3e3e3UL, 0x39393939UL, 0x82828282UL,
-+ 0x9b9b9b9bUL, 0x2f2f2f2fUL, 0xffffffffUL, 0x87878787UL,
-+ 0x34343434UL, 0x8e8e8e8eUL, 0x43434343UL, 0x44444444UL,
-+ 0xc4c4c4c4UL, 0xdedededeUL, 0xe9e9e9e9UL, 0xcbcbcbcbUL,
-+ 0x54545454UL, 0x7b7b7b7bUL, 0x94949494UL, 0x32323232UL,
-+ 0xa6a6a6a6UL, 0xc2c2c2c2UL, 0x23232323UL, 0x3d3d3d3dUL,
-+ 0xeeeeeeeeUL, 0x4c4c4c4cUL, 0x95959595UL, 0x0b0b0b0bUL,
-+ 0x42424242UL, 0xfafafafaUL, 0xc3c3c3c3UL, 0x4e4e4e4eUL,
-+ 0x08080808UL, 0x2e2e2e2eUL, 0xa1a1a1a1UL, 0x66666666UL,
-+ 0x28282828UL, 0xd9d9d9d9UL, 0x24242424UL, 0xb2b2b2b2UL,
-+ 0x76767676UL, 0x5b5b5b5bUL, 0xa2a2a2a2UL, 0x49494949UL,
-+ 0x6d6d6d6dUL, 0x8b8b8b8bUL, 0xd1d1d1d1UL, 0x25252525UL,
-+ 0x72727272UL, 0xf8f8f8f8UL, 0xf6f6f6f6UL, 0x64646464UL,
-+ 0x86868686UL, 0x68686868UL, 0x98989898UL, 0x16161616UL,
-+ 0xd4d4d4d4UL, 0xa4a4a4a4UL, 0x5c5c5c5cUL, 0xccccccccUL,
-+ 0x5d5d5d5dUL, 0x65656565UL, 0xb6b6b6b6UL, 0x92929292UL,
-+ 0x6c6c6c6cUL, 0x70707070UL, 0x48484848UL, 0x50505050UL,
-+ 0xfdfdfdfdUL, 0xededededUL, 0xb9b9b9b9UL, 0xdadadadaUL,
-+ 0x5e5e5e5eUL, 0x15151515UL, 0x46464646UL, 0x57575757UL,
-+ 0xa7a7a7a7UL, 0x8d8d8d8dUL, 0x9d9d9d9dUL, 0x84848484UL,
-+ 0x90909090UL, 0xd8d8d8d8UL, 0xababababUL, 0x00000000UL,
-+ 0x8c8c8c8cUL, 0xbcbcbcbcUL, 0xd3d3d3d3UL, 0x0a0a0a0aUL,
-+ 0xf7f7f7f7UL, 0xe4e4e4e4UL, 0x58585858UL, 0x05050505UL,
-+ 0xb8b8b8b8UL, 0xb3b3b3b3UL, 0x45454545UL, 0x06060606UL,
-+ 0xd0d0d0d0UL, 0x2c2c2c2cUL, 0x1e1e1e1eUL, 0x8f8f8f8fUL,
-+ 0xcacacacaUL, 0x3f3f3f3fUL, 0x0f0f0f0fUL, 0x02020202UL,
-+ 0xc1c1c1c1UL, 0xafafafafUL, 0xbdbdbdbdUL, 0x03030303UL,
-+ 0x01010101UL, 0x13131313UL, 0x8a8a8a8aUL, 0x6b6b6b6bUL,
-+ 0x3a3a3a3aUL, 0x91919191UL, 0x11111111UL, 0x41414141UL,
-+ 0x4f4f4f4fUL, 0x67676767UL, 0xdcdcdcdcUL, 0xeaeaeaeaUL,
-+ 0x97979797UL, 0xf2f2f2f2UL, 0xcfcfcfcfUL, 0xcecececeUL,
-+ 0xf0f0f0f0UL, 0xb4b4b4b4UL, 0xe6e6e6e6UL, 0x73737373UL,
-+ 0x96969696UL, 0xacacacacUL, 0x74747474UL, 0x22222222UL,
-+ 0xe7e7e7e7UL, 0xadadadadUL, 0x35353535UL, 0x85858585UL,
-+ 0xe2e2e2e2UL, 0xf9f9f9f9UL, 0x37373737UL, 0xe8e8e8e8UL,
-+ 0x1c1c1c1cUL, 0x75757575UL, 0xdfdfdfdfUL, 0x6e6e6e6eUL,
-+ 0x47474747UL, 0xf1f1f1f1UL, 0x1a1a1a1aUL, 0x71717171UL,
-+ 0x1d1d1d1dUL, 0x29292929UL, 0xc5c5c5c5UL, 0x89898989UL,
-+ 0x6f6f6f6fUL, 0xb7b7b7b7UL, 0x62626262UL, 0x0e0e0e0eUL,
-+ 0xaaaaaaaaUL, 0x18181818UL, 0xbebebebeUL, 0x1b1b1b1bUL,
-+ 0xfcfcfcfcUL, 0x56565656UL, 0x3e3e3e3eUL, 0x4b4b4b4bUL,
-+ 0xc6c6c6c6UL, 0xd2d2d2d2UL, 0x79797979UL, 0x20202020UL,
-+ 0x9a9a9a9aUL, 0xdbdbdbdbUL, 0xc0c0c0c0UL, 0xfefefefeUL,
-+ 0x78787878UL, 0xcdcdcdcdUL, 0x5a5a5a5aUL, 0xf4f4f4f4UL,
-+ 0x1f1f1f1fUL, 0xddddddddUL, 0xa8a8a8a8UL, 0x33333333UL,
-+ 0x88888888UL, 0x07070707UL, 0xc7c7c7c7UL, 0x31313131UL,
-+ 0xb1b1b1b1UL, 0x12121212UL, 0x10101010UL, 0x59595959UL,
-+ 0x27272727UL, 0x80808080UL, 0xececececUL, 0x5f5f5f5fUL,
-+ 0x60606060UL, 0x51515151UL, 0x7f7f7f7fUL, 0xa9a9a9a9UL,
-+ 0x19191919UL, 0xb5b5b5b5UL, 0x4a4a4a4aUL, 0x0d0d0d0dUL,
-+ 0x2d2d2d2dUL, 0xe5e5e5e5UL, 0x7a7a7a7aUL, 0x9f9f9f9fUL,
-+ 0x93939393UL, 0xc9c9c9c9UL, 0x9c9c9c9cUL, 0xefefefefUL,
-+ 0xa0a0a0a0UL, 0xe0e0e0e0UL, 0x3b3b3b3bUL, 0x4d4d4d4dUL,
-+ 0xaeaeaeaeUL, 0x2a2a2a2aUL, 0xf5f5f5f5UL, 0xb0b0b0b0UL,
-+ 0xc8c8c8c8UL, 0xebebebebUL, 0xbbbbbbbbUL, 0x3c3c3c3cUL,
-+ 0x83838383UL, 0x53535353UL, 0x99999999UL, 0x61616161UL,
-+ 0x17171717UL, 0x2b2b2b2bUL, 0x04040404UL, 0x7e7e7e7eUL,
-+ 0xbabababaUL, 0x77777777UL, 0xd6d6d6d6UL, 0x26262626UL,
-+ 0xe1e1e1e1UL, 0x69696969UL, 0x14141414UL, 0x63636363UL,
-+ 0x55555555UL, 0x21212121UL, 0x0c0c0c0cUL, 0x7d7d7d7dUL,
-+};
-+
-+#ifdef SMALL_CODE
-+
-+#define Te0(x) TE0[x]
-+#define Te1(x) ROR(TE0[x], 8)
-+#define Te2(x) ROR(TE0[x], 16)
-+#define Te3(x) ROR(TE0[x], 24)
-+
-+#define Td0(x) TD0[x]
-+#define Td1(x) ROR(TD0[x], 8)
-+#define Td2(x) ROR(TD0[x], 16)
-+#define Td3(x) ROR(TD0[x], 24)
-+
-+#define Te4_0 0x000000FF & Te4
-+#define Te4_1 0x0000FF00 & Te4
-+#define Te4_2 0x00FF0000 & Te4
-+#define Te4_3 0xFF000000 & Te4
-+
-+#else /* SMALL_CODE */
-+
-+#define Te0(x) TE0[x]
-+#define Te1(x) TE1[x]
-+#define Te2(x) TE2[x]
-+#define Te3(x) TE3[x]
-+
-+#define Td0(x) TD0[x]
-+#define Td1(x) TD1[x]
-+#define Td2(x) TD2[x]
-+#define Td3(x) TD3[x]
-+
-+static const ulong32 TE1[256] = {
-+ 0xa5c66363UL, 0x84f87c7cUL, 0x99ee7777UL, 0x8df67b7bUL,
-+ 0x0dfff2f2UL, 0xbdd66b6bUL, 0xb1de6f6fUL, 0x5491c5c5UL,
-+ 0x50603030UL, 0x03020101UL, 0xa9ce6767UL, 0x7d562b2bUL,
-+ 0x19e7fefeUL, 0x62b5d7d7UL, 0xe64dababUL, 0x9aec7676UL,
-+ 0x458fcacaUL, 0x9d1f8282UL, 0x4089c9c9UL, 0x87fa7d7dUL,
-+ 0x15effafaUL, 0xebb25959UL, 0xc98e4747UL, 0x0bfbf0f0UL,
-+ 0xec41adadUL, 0x67b3d4d4UL, 0xfd5fa2a2UL, 0xea45afafUL,
-+ 0xbf239c9cUL, 0xf753a4a4UL, 0x96e47272UL, 0x5b9bc0c0UL,
-+ 0xc275b7b7UL, 0x1ce1fdfdUL, 0xae3d9393UL, 0x6a4c2626UL,
-+ 0x5a6c3636UL, 0x417e3f3fUL, 0x02f5f7f7UL, 0x4f83ccccUL,
-+ 0x5c683434UL, 0xf451a5a5UL, 0x34d1e5e5UL, 0x08f9f1f1UL,
-+ 0x93e27171UL, 0x73abd8d8UL, 0x53623131UL, 0x3f2a1515UL,
-+ 0x0c080404UL, 0x5295c7c7UL, 0x65462323UL, 0x5e9dc3c3UL,
-+ 0x28301818UL, 0xa1379696UL, 0x0f0a0505UL, 0xb52f9a9aUL,
-+ 0x090e0707UL, 0x36241212UL, 0x9b1b8080UL, 0x3ddfe2e2UL,
-+ 0x26cdebebUL, 0x694e2727UL, 0xcd7fb2b2UL, 0x9fea7575UL,
-+ 0x1b120909UL, 0x9e1d8383UL, 0x74582c2cUL, 0x2e341a1aUL,
-+ 0x2d361b1bUL, 0xb2dc6e6eUL, 0xeeb45a5aUL, 0xfb5ba0a0UL,
-+ 0xf6a45252UL, 0x4d763b3bUL, 0x61b7d6d6UL, 0xce7db3b3UL,
-+ 0x7b522929UL, 0x3edde3e3UL, 0x715e2f2fUL, 0x97138484UL,
-+ 0xf5a65353UL, 0x68b9d1d1UL, 0x00000000UL, 0x2cc1ededUL,
-+ 0x60402020UL, 0x1fe3fcfcUL, 0xc879b1b1UL, 0xedb65b5bUL,
-+ 0xbed46a6aUL, 0x468dcbcbUL, 0xd967bebeUL, 0x4b723939UL,
-+ 0xde944a4aUL, 0xd4984c4cUL, 0xe8b05858UL, 0x4a85cfcfUL,
-+ 0x6bbbd0d0UL, 0x2ac5efefUL, 0xe54faaaaUL, 0x16edfbfbUL,
-+ 0xc5864343UL, 0xd79a4d4dUL, 0x55663333UL, 0x94118585UL,
-+ 0xcf8a4545UL, 0x10e9f9f9UL, 0x06040202UL, 0x81fe7f7fUL,
-+ 0xf0a05050UL, 0x44783c3cUL, 0xba259f9fUL, 0xe34ba8a8UL,
-+ 0xf3a25151UL, 0xfe5da3a3UL, 0xc0804040UL, 0x8a058f8fUL,
-+ 0xad3f9292UL, 0xbc219d9dUL, 0x48703838UL, 0x04f1f5f5UL,
-+ 0xdf63bcbcUL, 0xc177b6b6UL, 0x75afdadaUL, 0x63422121UL,
-+ 0x30201010UL, 0x1ae5ffffUL, 0x0efdf3f3UL, 0x6dbfd2d2UL,
-+ 0x4c81cdcdUL, 0x14180c0cUL, 0x35261313UL, 0x2fc3ececUL,
-+ 0xe1be5f5fUL, 0xa2359797UL, 0xcc884444UL, 0x392e1717UL,
-+ 0x5793c4c4UL, 0xf255a7a7UL, 0x82fc7e7eUL, 0x477a3d3dUL,
-+ 0xacc86464UL, 0xe7ba5d5dUL, 0x2b321919UL, 0x95e67373UL,
-+ 0xa0c06060UL, 0x98198181UL, 0xd19e4f4fUL, 0x7fa3dcdcUL,
-+ 0x66442222UL, 0x7e542a2aUL, 0xab3b9090UL, 0x830b8888UL,
-+ 0xca8c4646UL, 0x29c7eeeeUL, 0xd36bb8b8UL, 0x3c281414UL,
-+ 0x79a7dedeUL, 0xe2bc5e5eUL, 0x1d160b0bUL, 0x76addbdbUL,
-+ 0x3bdbe0e0UL, 0x56643232UL, 0x4e743a3aUL, 0x1e140a0aUL,
-+ 0xdb924949UL, 0x0a0c0606UL, 0x6c482424UL, 0xe4b85c5cUL,
-+ 0x5d9fc2c2UL, 0x6ebdd3d3UL, 0xef43acacUL, 0xa6c46262UL,
-+ 0xa8399191UL, 0xa4319595UL, 0x37d3e4e4UL, 0x8bf27979UL,
-+ 0x32d5e7e7UL, 0x438bc8c8UL, 0x596e3737UL, 0xb7da6d6dUL,
-+ 0x8c018d8dUL, 0x64b1d5d5UL, 0xd29c4e4eUL, 0xe049a9a9UL,
-+ 0xb4d86c6cUL, 0xfaac5656UL, 0x07f3f4f4UL, 0x25cfeaeaUL,
-+ 0xafca6565UL, 0x8ef47a7aUL, 0xe947aeaeUL, 0x18100808UL,
-+ 0xd56fbabaUL, 0x88f07878UL, 0x6f4a2525UL, 0x725c2e2eUL,
-+ 0x24381c1cUL, 0xf157a6a6UL, 0xc773b4b4UL, 0x5197c6c6UL,
-+ 0x23cbe8e8UL, 0x7ca1ddddUL, 0x9ce87474UL, 0x213e1f1fUL,
-+ 0xdd964b4bUL, 0xdc61bdbdUL, 0x860d8b8bUL, 0x850f8a8aUL,
-+ 0x90e07070UL, 0x427c3e3eUL, 0xc471b5b5UL, 0xaacc6666UL,
-+ 0xd8904848UL, 0x05060303UL, 0x01f7f6f6UL, 0x121c0e0eUL,
-+ 0xa3c26161UL, 0x5f6a3535UL, 0xf9ae5757UL, 0xd069b9b9UL,
-+ 0x91178686UL, 0x5899c1c1UL, 0x273a1d1dUL, 0xb9279e9eUL,
-+ 0x38d9e1e1UL, 0x13ebf8f8UL, 0xb32b9898UL, 0x33221111UL,
-+ 0xbbd26969UL, 0x70a9d9d9UL, 0x89078e8eUL, 0xa7339494UL,
-+ 0xb62d9b9bUL, 0x223c1e1eUL, 0x92158787UL, 0x20c9e9e9UL,
-+ 0x4987ceceUL, 0xffaa5555UL, 0x78502828UL, 0x7aa5dfdfUL,
-+ 0x8f038c8cUL, 0xf859a1a1UL, 0x80098989UL, 0x171a0d0dUL,
-+ 0xda65bfbfUL, 0x31d7e6e6UL, 0xc6844242UL, 0xb8d06868UL,
-+ 0xc3824141UL, 0xb0299999UL, 0x775a2d2dUL, 0x111e0f0fUL,
-+ 0xcb7bb0b0UL, 0xfca85454UL, 0xd66dbbbbUL, 0x3a2c1616UL,
-+};
-+static const ulong32 TE2[256] = {
-+ 0x63a5c663UL, 0x7c84f87cUL, 0x7799ee77UL, 0x7b8df67bUL,
-+ 0xf20dfff2UL, 0x6bbdd66bUL, 0x6fb1de6fUL, 0xc55491c5UL,
-+ 0x30506030UL, 0x01030201UL, 0x67a9ce67UL, 0x2b7d562bUL,
-+ 0xfe19e7feUL, 0xd762b5d7UL, 0xabe64dabUL, 0x769aec76UL,
-+ 0xca458fcaUL, 0x829d1f82UL, 0xc94089c9UL, 0x7d87fa7dUL,
-+ 0xfa15effaUL, 0x59ebb259UL, 0x47c98e47UL, 0xf00bfbf0UL,
-+ 0xadec41adUL, 0xd467b3d4UL, 0xa2fd5fa2UL, 0xafea45afUL,
-+ 0x9cbf239cUL, 0xa4f753a4UL, 0x7296e472UL, 0xc05b9bc0UL,
-+ 0xb7c275b7UL, 0xfd1ce1fdUL, 0x93ae3d93UL, 0x266a4c26UL,
-+ 0x365a6c36UL, 0x3f417e3fUL, 0xf702f5f7UL, 0xcc4f83ccUL,
-+ 0x345c6834UL, 0xa5f451a5UL, 0xe534d1e5UL, 0xf108f9f1UL,
-+ 0x7193e271UL, 0xd873abd8UL, 0x31536231UL, 0x153f2a15UL,
-+ 0x040c0804UL, 0xc75295c7UL, 0x23654623UL, 0xc35e9dc3UL,
-+ 0x18283018UL, 0x96a13796UL, 0x050f0a05UL, 0x9ab52f9aUL,
-+ 0x07090e07UL, 0x12362412UL, 0x809b1b80UL, 0xe23ddfe2UL,
-+ 0xeb26cdebUL, 0x27694e27UL, 0xb2cd7fb2UL, 0x759fea75UL,
-+ 0x091b1209UL, 0x839e1d83UL, 0x2c74582cUL, 0x1a2e341aUL,
-+ 0x1b2d361bUL, 0x6eb2dc6eUL, 0x5aeeb45aUL, 0xa0fb5ba0UL,
-+ 0x52f6a452UL, 0x3b4d763bUL, 0xd661b7d6UL, 0xb3ce7db3UL,
-+ 0x297b5229UL, 0xe33edde3UL, 0x2f715e2fUL, 0x84971384UL,
-+ 0x53f5a653UL, 0xd168b9d1UL, 0x00000000UL, 0xed2cc1edUL,
-+ 0x20604020UL, 0xfc1fe3fcUL, 0xb1c879b1UL, 0x5bedb65bUL,
-+ 0x6abed46aUL, 0xcb468dcbUL, 0xbed967beUL, 0x394b7239UL,
-+ 0x4ade944aUL, 0x4cd4984cUL, 0x58e8b058UL, 0xcf4a85cfUL,
-+ 0xd06bbbd0UL, 0xef2ac5efUL, 0xaae54faaUL, 0xfb16edfbUL,
-+ 0x43c58643UL, 0x4dd79a4dUL, 0x33556633UL, 0x85941185UL,
-+ 0x45cf8a45UL, 0xf910e9f9UL, 0x02060402UL, 0x7f81fe7fUL,
-+ 0x50f0a050UL, 0x3c44783cUL, 0x9fba259fUL, 0xa8e34ba8UL,
-+ 0x51f3a251UL, 0xa3fe5da3UL, 0x40c08040UL, 0x8f8a058fUL,
-+ 0x92ad3f92UL, 0x9dbc219dUL, 0x38487038UL, 0xf504f1f5UL,
-+ 0xbcdf63bcUL, 0xb6c177b6UL, 0xda75afdaUL, 0x21634221UL,
-+ 0x10302010UL, 0xff1ae5ffUL, 0xf30efdf3UL, 0xd26dbfd2UL,
-+ 0xcd4c81cdUL, 0x0c14180cUL, 0x13352613UL, 0xec2fc3ecUL,
-+ 0x5fe1be5fUL, 0x97a23597UL, 0x44cc8844UL, 0x17392e17UL,
-+ 0xc45793c4UL, 0xa7f255a7UL, 0x7e82fc7eUL, 0x3d477a3dUL,
-+ 0x64acc864UL, 0x5de7ba5dUL, 0x192b3219UL, 0x7395e673UL,
-+ 0x60a0c060UL, 0x81981981UL, 0x4fd19e4fUL, 0xdc7fa3dcUL,
-+ 0x22664422UL, 0x2a7e542aUL, 0x90ab3b90UL, 0x88830b88UL,
-+ 0x46ca8c46UL, 0xee29c7eeUL, 0xb8d36bb8UL, 0x143c2814UL,
-+ 0xde79a7deUL, 0x5ee2bc5eUL, 0x0b1d160bUL, 0xdb76addbUL,
-+ 0xe03bdbe0UL, 0x32566432UL, 0x3a4e743aUL, 0x0a1e140aUL,
-+ 0x49db9249UL, 0x060a0c06UL, 0x246c4824UL, 0x5ce4b85cUL,
-+ 0xc25d9fc2UL, 0xd36ebdd3UL, 0xacef43acUL, 0x62a6c462UL,
-+ 0x91a83991UL, 0x95a43195UL, 0xe437d3e4UL, 0x798bf279UL,
-+ 0xe732d5e7UL, 0xc8438bc8UL, 0x37596e37UL, 0x6db7da6dUL,
-+ 0x8d8c018dUL, 0xd564b1d5UL, 0x4ed29c4eUL, 0xa9e049a9UL,
-+ 0x6cb4d86cUL, 0x56faac56UL, 0xf407f3f4UL, 0xea25cfeaUL,
-+ 0x65afca65UL, 0x7a8ef47aUL, 0xaee947aeUL, 0x08181008UL,
-+ 0xbad56fbaUL, 0x7888f078UL, 0x256f4a25UL, 0x2e725c2eUL,
-+ 0x1c24381cUL, 0xa6f157a6UL, 0xb4c773b4UL, 0xc65197c6UL,
-+ 0xe823cbe8UL, 0xdd7ca1ddUL, 0x749ce874UL, 0x1f213e1fUL,
-+ 0x4bdd964bUL, 0xbddc61bdUL, 0x8b860d8bUL, 0x8a850f8aUL,
-+ 0x7090e070UL, 0x3e427c3eUL, 0xb5c471b5UL, 0x66aacc66UL,
-+ 0x48d89048UL, 0x03050603UL, 0xf601f7f6UL, 0x0e121c0eUL,
-+ 0x61a3c261UL, 0x355f6a35UL, 0x57f9ae57UL, 0xb9d069b9UL,
-+ 0x86911786UL, 0xc15899c1UL, 0x1d273a1dUL, 0x9eb9279eUL,
-+ 0xe138d9e1UL, 0xf813ebf8UL, 0x98b32b98UL, 0x11332211UL,
-+ 0x69bbd269UL, 0xd970a9d9UL, 0x8e89078eUL, 0x94a73394UL,
-+ 0x9bb62d9bUL, 0x1e223c1eUL, 0x87921587UL, 0xe920c9e9UL,
-+ 0xce4987ceUL, 0x55ffaa55UL, 0x28785028UL, 0xdf7aa5dfUL,
-+ 0x8c8f038cUL, 0xa1f859a1UL, 0x89800989UL, 0x0d171a0dUL,
-+ 0xbfda65bfUL, 0xe631d7e6UL, 0x42c68442UL, 0x68b8d068UL,
-+ 0x41c38241UL, 0x99b02999UL, 0x2d775a2dUL, 0x0f111e0fUL,
-+ 0xb0cb7bb0UL, 0x54fca854UL, 0xbbd66dbbUL, 0x163a2c16UL,
-+};
-+static const ulong32 TE3[256] = {
-+
-+ 0x6363a5c6UL, 0x7c7c84f8UL, 0x777799eeUL, 0x7b7b8df6UL,
-+ 0xf2f20dffUL, 0x6b6bbdd6UL, 0x6f6fb1deUL, 0xc5c55491UL,
-+ 0x30305060UL, 0x01010302UL, 0x6767a9ceUL, 0x2b2b7d56UL,
-+ 0xfefe19e7UL, 0xd7d762b5UL, 0xababe64dUL, 0x76769aecUL,
-+ 0xcaca458fUL, 0x82829d1fUL, 0xc9c94089UL, 0x7d7d87faUL,
-+ 0xfafa15efUL, 0x5959ebb2UL, 0x4747c98eUL, 0xf0f00bfbUL,
-+ 0xadadec41UL, 0xd4d467b3UL, 0xa2a2fd5fUL, 0xafafea45UL,
-+ 0x9c9cbf23UL, 0xa4a4f753UL, 0x727296e4UL, 0xc0c05b9bUL,
-+ 0xb7b7c275UL, 0xfdfd1ce1UL, 0x9393ae3dUL, 0x26266a4cUL,
-+ 0x36365a6cUL, 0x3f3f417eUL, 0xf7f702f5UL, 0xcccc4f83UL,
-+ 0x34345c68UL, 0xa5a5f451UL, 0xe5e534d1UL, 0xf1f108f9UL,
-+ 0x717193e2UL, 0xd8d873abUL, 0x31315362UL, 0x15153f2aUL,
-+ 0x04040c08UL, 0xc7c75295UL, 0x23236546UL, 0xc3c35e9dUL,
-+ 0x18182830UL, 0x9696a137UL, 0x05050f0aUL, 0x9a9ab52fUL,
-+ 0x0707090eUL, 0x12123624UL, 0x80809b1bUL, 0xe2e23ddfUL,
-+ 0xebeb26cdUL, 0x2727694eUL, 0xb2b2cd7fUL, 0x75759feaUL,
-+ 0x09091b12UL, 0x83839e1dUL, 0x2c2c7458UL, 0x1a1a2e34UL,
-+ 0x1b1b2d36UL, 0x6e6eb2dcUL, 0x5a5aeeb4UL, 0xa0a0fb5bUL,
-+ 0x5252f6a4UL, 0x3b3b4d76UL, 0xd6d661b7UL, 0xb3b3ce7dUL,
-+ 0x29297b52UL, 0xe3e33eddUL, 0x2f2f715eUL, 0x84849713UL,
-+ 0x5353f5a6UL, 0xd1d168b9UL, 0x00000000UL, 0xeded2cc1UL,
-+ 0x20206040UL, 0xfcfc1fe3UL, 0xb1b1c879UL, 0x5b5bedb6UL,
-+ 0x6a6abed4UL, 0xcbcb468dUL, 0xbebed967UL, 0x39394b72UL,
-+ 0x4a4ade94UL, 0x4c4cd498UL, 0x5858e8b0UL, 0xcfcf4a85UL,
-+ 0xd0d06bbbUL, 0xefef2ac5UL, 0xaaaae54fUL, 0xfbfb16edUL,
-+ 0x4343c586UL, 0x4d4dd79aUL, 0x33335566UL, 0x85859411UL,
-+ 0x4545cf8aUL, 0xf9f910e9UL, 0x02020604UL, 0x7f7f81feUL,
-+ 0x5050f0a0UL, 0x3c3c4478UL, 0x9f9fba25UL, 0xa8a8e34bUL,
-+ 0x5151f3a2UL, 0xa3a3fe5dUL, 0x4040c080UL, 0x8f8f8a05UL,
-+ 0x9292ad3fUL, 0x9d9dbc21UL, 0x38384870UL, 0xf5f504f1UL,
-+ 0xbcbcdf63UL, 0xb6b6c177UL, 0xdada75afUL, 0x21216342UL,
-+ 0x10103020UL, 0xffff1ae5UL, 0xf3f30efdUL, 0xd2d26dbfUL,
-+ 0xcdcd4c81UL, 0x0c0c1418UL, 0x13133526UL, 0xecec2fc3UL,
-+ 0x5f5fe1beUL, 0x9797a235UL, 0x4444cc88UL, 0x1717392eUL,
-+ 0xc4c45793UL, 0xa7a7f255UL, 0x7e7e82fcUL, 0x3d3d477aUL,
-+ 0x6464acc8UL, 0x5d5de7baUL, 0x19192b32UL, 0x737395e6UL,
-+ 0x6060a0c0UL, 0x81819819UL, 0x4f4fd19eUL, 0xdcdc7fa3UL,
-+ 0x22226644UL, 0x2a2a7e54UL, 0x9090ab3bUL, 0x8888830bUL,
-+ 0x4646ca8cUL, 0xeeee29c7UL, 0xb8b8d36bUL, 0x14143c28UL,
-+ 0xdede79a7UL, 0x5e5ee2bcUL, 0x0b0b1d16UL, 0xdbdb76adUL,
-+ 0xe0e03bdbUL, 0x32325664UL, 0x3a3a4e74UL, 0x0a0a1e14UL,
-+ 0x4949db92UL, 0x06060a0cUL, 0x24246c48UL, 0x5c5ce4b8UL,
-+ 0xc2c25d9fUL, 0xd3d36ebdUL, 0xacacef43UL, 0x6262a6c4UL,
-+ 0x9191a839UL, 0x9595a431UL, 0xe4e437d3UL, 0x79798bf2UL,
-+ 0xe7e732d5UL, 0xc8c8438bUL, 0x3737596eUL, 0x6d6db7daUL,
-+ 0x8d8d8c01UL, 0xd5d564b1UL, 0x4e4ed29cUL, 0xa9a9e049UL,
-+ 0x6c6cb4d8UL, 0x5656faacUL, 0xf4f407f3UL, 0xeaea25cfUL,
-+ 0x6565afcaUL, 0x7a7a8ef4UL, 0xaeaee947UL, 0x08081810UL,
-+ 0xbabad56fUL, 0x787888f0UL, 0x25256f4aUL, 0x2e2e725cUL,
-+ 0x1c1c2438UL, 0xa6a6f157UL, 0xb4b4c773UL, 0xc6c65197UL,
-+ 0xe8e823cbUL, 0xdddd7ca1UL, 0x74749ce8UL, 0x1f1f213eUL,
-+ 0x4b4bdd96UL, 0xbdbddc61UL, 0x8b8b860dUL, 0x8a8a850fUL,
-+ 0x707090e0UL, 0x3e3e427cUL, 0xb5b5c471UL, 0x6666aaccUL,
-+ 0x4848d890UL, 0x03030506UL, 0xf6f601f7UL, 0x0e0e121cUL,
-+ 0x6161a3c2UL, 0x35355f6aUL, 0x5757f9aeUL, 0xb9b9d069UL,
-+ 0x86869117UL, 0xc1c15899UL, 0x1d1d273aUL, 0x9e9eb927UL,
-+ 0xe1e138d9UL, 0xf8f813ebUL, 0x9898b32bUL, 0x11113322UL,
-+ 0x6969bbd2UL, 0xd9d970a9UL, 0x8e8e8907UL, 0x9494a733UL,
-+ 0x9b9bb62dUL, 0x1e1e223cUL, 0x87879215UL, 0xe9e920c9UL,
-+ 0xcece4987UL, 0x5555ffaaUL, 0x28287850UL, 0xdfdf7aa5UL,
-+ 0x8c8c8f03UL, 0xa1a1f859UL, 0x89898009UL, 0x0d0d171aUL,
-+ 0xbfbfda65UL, 0xe6e631d7UL, 0x4242c684UL, 0x6868b8d0UL,
-+ 0x4141c382UL, 0x9999b029UL, 0x2d2d775aUL, 0x0f0f111eUL,
-+ 0xb0b0cb7bUL, 0x5454fca8UL, 0xbbbbd66dUL, 0x16163a2cUL,
-+};
-+
-+static const ulong32 Te4_0[] = {
-+0x00000063UL, 0x0000007cUL, 0x00000077UL, 0x0000007bUL, 0x000000f2UL, 0x0000006bUL, 0x0000006fUL, 0x000000c5UL,
-+0x00000030UL, 0x00000001UL, 0x00000067UL, 0x0000002bUL, 0x000000feUL, 0x000000d7UL, 0x000000abUL, 0x00000076UL,
-+0x000000caUL, 0x00000082UL, 0x000000c9UL, 0x0000007dUL, 0x000000faUL, 0x00000059UL, 0x00000047UL, 0x000000f0UL,
-+0x000000adUL, 0x000000d4UL, 0x000000a2UL, 0x000000afUL, 0x0000009cUL, 0x000000a4UL, 0x00000072UL, 0x000000c0UL,
-+0x000000b7UL, 0x000000fdUL, 0x00000093UL, 0x00000026UL, 0x00000036UL, 0x0000003fUL, 0x000000f7UL, 0x000000ccUL,
-+0x00000034UL, 0x000000a5UL, 0x000000e5UL, 0x000000f1UL, 0x00000071UL, 0x000000d8UL, 0x00000031UL, 0x00000015UL,
-+0x00000004UL, 0x000000c7UL, 0x00000023UL, 0x000000c3UL, 0x00000018UL, 0x00000096UL, 0x00000005UL, 0x0000009aUL,
-+0x00000007UL, 0x00000012UL, 0x00000080UL, 0x000000e2UL, 0x000000ebUL, 0x00000027UL, 0x000000b2UL, 0x00000075UL,
-+0x00000009UL, 0x00000083UL, 0x0000002cUL, 0x0000001aUL, 0x0000001bUL, 0x0000006eUL, 0x0000005aUL, 0x000000a0UL,
-+0x00000052UL, 0x0000003bUL, 0x000000d6UL, 0x000000b3UL, 0x00000029UL, 0x000000e3UL, 0x0000002fUL, 0x00000084UL,
-+0x00000053UL, 0x000000d1UL, 0x00000000UL, 0x000000edUL, 0x00000020UL, 0x000000fcUL, 0x000000b1UL, 0x0000005bUL,
-+0x0000006aUL, 0x000000cbUL, 0x000000beUL, 0x00000039UL, 0x0000004aUL, 0x0000004cUL, 0x00000058UL, 0x000000cfUL,
-+0x000000d0UL, 0x000000efUL, 0x000000aaUL, 0x000000fbUL, 0x00000043UL, 0x0000004dUL, 0x00000033UL, 0x00000085UL,
-+0x00000045UL, 0x000000f9UL, 0x00000002UL, 0x0000007fUL, 0x00000050UL, 0x0000003cUL, 0x0000009fUL, 0x000000a8UL,
-+0x00000051UL, 0x000000a3UL, 0x00000040UL, 0x0000008fUL, 0x00000092UL, 0x0000009dUL, 0x00000038UL, 0x000000f5UL,
-+0x000000bcUL, 0x000000b6UL, 0x000000daUL, 0x00000021UL, 0x00000010UL, 0x000000ffUL, 0x000000f3UL, 0x000000d2UL,
-+0x000000cdUL, 0x0000000cUL, 0x00000013UL, 0x000000ecUL, 0x0000005fUL, 0x00000097UL, 0x00000044UL, 0x00000017UL,
-+0x000000c4UL, 0x000000a7UL, 0x0000007eUL, 0x0000003dUL, 0x00000064UL, 0x0000005dUL, 0x00000019UL, 0x00000073UL,
-+0x00000060UL, 0x00000081UL, 0x0000004fUL, 0x000000dcUL, 0x00000022UL, 0x0000002aUL, 0x00000090UL, 0x00000088UL,
-+0x00000046UL, 0x000000eeUL, 0x000000b8UL, 0x00000014UL, 0x000000deUL, 0x0000005eUL, 0x0000000bUL, 0x000000dbUL,
-+0x000000e0UL, 0x00000032UL, 0x0000003aUL, 0x0000000aUL, 0x00000049UL, 0x00000006UL, 0x00000024UL, 0x0000005cUL,
-+0x000000c2UL, 0x000000d3UL, 0x000000acUL, 0x00000062UL, 0x00000091UL, 0x00000095UL, 0x000000e4UL, 0x00000079UL,
-+0x000000e7UL, 0x000000c8UL, 0x00000037UL, 0x0000006dUL, 0x0000008dUL, 0x000000d5UL, 0x0000004eUL, 0x000000a9UL,
-+0x0000006cUL, 0x00000056UL, 0x000000f4UL, 0x000000eaUL, 0x00000065UL, 0x0000007aUL, 0x000000aeUL, 0x00000008UL,
-+0x000000baUL, 0x00000078UL, 0x00000025UL, 0x0000002eUL, 0x0000001cUL, 0x000000a6UL, 0x000000b4UL, 0x000000c6UL,
-+0x000000e8UL, 0x000000ddUL, 0x00000074UL, 0x0000001fUL, 0x0000004bUL, 0x000000bdUL, 0x0000008bUL, 0x0000008aUL,
-+0x00000070UL, 0x0000003eUL, 0x000000b5UL, 0x00000066UL, 0x00000048UL, 0x00000003UL, 0x000000f6UL, 0x0000000eUL,
-+0x00000061UL, 0x00000035UL, 0x00000057UL, 0x000000b9UL, 0x00000086UL, 0x000000c1UL, 0x0000001dUL, 0x0000009eUL,
-+0x000000e1UL, 0x000000f8UL, 0x00000098UL, 0x00000011UL, 0x00000069UL, 0x000000d9UL, 0x0000008eUL, 0x00000094UL,
-+0x0000009bUL, 0x0000001eUL, 0x00000087UL, 0x000000e9UL, 0x000000ceUL, 0x00000055UL, 0x00000028UL, 0x000000dfUL,
-+0x0000008cUL, 0x000000a1UL, 0x00000089UL, 0x0000000dUL, 0x000000bfUL, 0x000000e6UL, 0x00000042UL, 0x00000068UL,
-+0x00000041UL, 0x00000099UL, 0x0000002dUL, 0x0000000fUL, 0x000000b0UL, 0x00000054UL, 0x000000bbUL, 0x00000016UL
-+};
-+
-+static const ulong32 Te4_1[] = {
-+0x00006300UL, 0x00007c00UL, 0x00007700UL, 0x00007b00UL, 0x0000f200UL, 0x00006b00UL, 0x00006f00UL, 0x0000c500UL,
-+0x00003000UL, 0x00000100UL, 0x00006700UL, 0x00002b00UL, 0x0000fe00UL, 0x0000d700UL, 0x0000ab00UL, 0x00007600UL,
-+0x0000ca00UL, 0x00008200UL, 0x0000c900UL, 0x00007d00UL, 0x0000fa00UL, 0x00005900UL, 0x00004700UL, 0x0000f000UL,
-+0x0000ad00UL, 0x0000d400UL, 0x0000a200UL, 0x0000af00UL, 0x00009c00UL, 0x0000a400UL, 0x00007200UL, 0x0000c000UL,
-+0x0000b700UL, 0x0000fd00UL, 0x00009300UL, 0x00002600UL, 0x00003600UL, 0x00003f00UL, 0x0000f700UL, 0x0000cc00UL,
-+0x00003400UL, 0x0000a500UL, 0x0000e500UL, 0x0000f100UL, 0x00007100UL, 0x0000d800UL, 0x00003100UL, 0x00001500UL,
-+0x00000400UL, 0x0000c700UL, 0x00002300UL, 0x0000c300UL, 0x00001800UL, 0x00009600UL, 0x00000500UL, 0x00009a00UL,
-+0x00000700UL, 0x00001200UL, 0x00008000UL, 0x0000e200UL, 0x0000eb00UL, 0x00002700UL, 0x0000b200UL, 0x00007500UL,
-+0x00000900UL, 0x00008300UL, 0x00002c00UL, 0x00001a00UL, 0x00001b00UL, 0x00006e00UL, 0x00005a00UL, 0x0000a000UL,
-+0x00005200UL, 0x00003b00UL, 0x0000d600UL, 0x0000b300UL, 0x00002900UL, 0x0000e300UL, 0x00002f00UL, 0x00008400UL,
-+0x00005300UL, 0x0000d100UL, 0x00000000UL, 0x0000ed00UL, 0x00002000UL, 0x0000fc00UL, 0x0000b100UL, 0x00005b00UL,
-+0x00006a00UL, 0x0000cb00UL, 0x0000be00UL, 0x00003900UL, 0x00004a00UL, 0x00004c00UL, 0x00005800UL, 0x0000cf00UL,
-+0x0000d000UL, 0x0000ef00UL, 0x0000aa00UL, 0x0000fb00UL, 0x00004300UL, 0x00004d00UL, 0x00003300UL, 0x00008500UL,
-+0x00004500UL, 0x0000f900UL, 0x00000200UL, 0x00007f00UL, 0x00005000UL, 0x00003c00UL, 0x00009f00UL, 0x0000a800UL,
-+0x00005100UL, 0x0000a300UL, 0x00004000UL, 0x00008f00UL, 0x00009200UL, 0x00009d00UL, 0x00003800UL, 0x0000f500UL,
-+0x0000bc00UL, 0x0000b600UL, 0x0000da00UL, 0x00002100UL, 0x00001000UL, 0x0000ff00UL, 0x0000f300UL, 0x0000d200UL,
-+0x0000cd00UL, 0x00000c00UL, 0x00001300UL, 0x0000ec00UL, 0x00005f00UL, 0x00009700UL, 0x00004400UL, 0x00001700UL,
-+0x0000c400UL, 0x0000a700UL, 0x00007e00UL, 0x00003d00UL, 0x00006400UL, 0x00005d00UL, 0x00001900UL, 0x00007300UL,
-+0x00006000UL, 0x00008100UL, 0x00004f00UL, 0x0000dc00UL, 0x00002200UL, 0x00002a00UL, 0x00009000UL, 0x00008800UL,
-+0x00004600UL, 0x0000ee00UL, 0x0000b800UL, 0x00001400UL, 0x0000de00UL, 0x00005e00UL, 0x00000b00UL, 0x0000db00UL,
-+0x0000e000UL, 0x00003200UL, 0x00003a00UL, 0x00000a00UL, 0x00004900UL, 0x00000600UL, 0x00002400UL, 0x00005c00UL,
-+0x0000c200UL, 0x0000d300UL, 0x0000ac00UL, 0x00006200UL, 0x00009100UL, 0x00009500UL, 0x0000e400UL, 0x00007900UL,
-+0x0000e700UL, 0x0000c800UL, 0x00003700UL, 0x00006d00UL, 0x00008d00UL, 0x0000d500UL, 0x00004e00UL, 0x0000a900UL,
-+0x00006c00UL, 0x00005600UL, 0x0000f400UL, 0x0000ea00UL, 0x00006500UL, 0x00007a00UL, 0x0000ae00UL, 0x00000800UL,
-+0x0000ba00UL, 0x00007800UL, 0x00002500UL, 0x00002e00UL, 0x00001c00UL, 0x0000a600UL, 0x0000b400UL, 0x0000c600UL,
-+0x0000e800UL, 0x0000dd00UL, 0x00007400UL, 0x00001f00UL, 0x00004b00UL, 0x0000bd00UL, 0x00008b00UL, 0x00008a00UL,
-+0x00007000UL, 0x00003e00UL, 0x0000b500UL, 0x00006600UL, 0x00004800UL, 0x00000300UL, 0x0000f600UL, 0x00000e00UL,
-+0x00006100UL, 0x00003500UL, 0x00005700UL, 0x0000b900UL, 0x00008600UL, 0x0000c100UL, 0x00001d00UL, 0x00009e00UL,
-+0x0000e100UL, 0x0000f800UL, 0x00009800UL, 0x00001100UL, 0x00006900UL, 0x0000d900UL, 0x00008e00UL, 0x00009400UL,
-+0x00009b00UL, 0x00001e00UL, 0x00008700UL, 0x0000e900UL, 0x0000ce00UL, 0x00005500UL, 0x00002800UL, 0x0000df00UL,
-+0x00008c00UL, 0x0000a100UL, 0x00008900UL, 0x00000d00UL, 0x0000bf00UL, 0x0000e600UL, 0x00004200UL, 0x00006800UL,
-+0x00004100UL, 0x00009900UL, 0x00002d00UL, 0x00000f00UL, 0x0000b000UL, 0x00005400UL, 0x0000bb00UL, 0x00001600UL
-+};
-+
-+static const ulong32 Te4_2[] = {
-+0x00630000UL, 0x007c0000UL, 0x00770000UL, 0x007b0000UL, 0x00f20000UL, 0x006b0000UL, 0x006f0000UL, 0x00c50000UL,
-+0x00300000UL, 0x00010000UL, 0x00670000UL, 0x002b0000UL, 0x00fe0000UL, 0x00d70000UL, 0x00ab0000UL, 0x00760000UL,
-+0x00ca0000UL, 0x00820000UL, 0x00c90000UL, 0x007d0000UL, 0x00fa0000UL, 0x00590000UL, 0x00470000UL, 0x00f00000UL,
-+0x00ad0000UL, 0x00d40000UL, 0x00a20000UL, 0x00af0000UL, 0x009c0000UL, 0x00a40000UL, 0x00720000UL, 0x00c00000UL,
-+0x00b70000UL, 0x00fd0000UL, 0x00930000UL, 0x00260000UL, 0x00360000UL, 0x003f0000UL, 0x00f70000UL, 0x00cc0000UL,
-+0x00340000UL, 0x00a50000UL, 0x00e50000UL, 0x00f10000UL, 0x00710000UL, 0x00d80000UL, 0x00310000UL, 0x00150000UL,
-+0x00040000UL, 0x00c70000UL, 0x00230000UL, 0x00c30000UL, 0x00180000UL, 0x00960000UL, 0x00050000UL, 0x009a0000UL,
-+0x00070000UL, 0x00120000UL, 0x00800000UL, 0x00e20000UL, 0x00eb0000UL, 0x00270000UL, 0x00b20000UL, 0x00750000UL,
-+0x00090000UL, 0x00830000UL, 0x002c0000UL, 0x001a0000UL, 0x001b0000UL, 0x006e0000UL, 0x005a0000UL, 0x00a00000UL,
-+0x00520000UL, 0x003b0000UL, 0x00d60000UL, 0x00b30000UL, 0x00290000UL, 0x00e30000UL, 0x002f0000UL, 0x00840000UL,
-+0x00530000UL, 0x00d10000UL, 0x00000000UL, 0x00ed0000UL, 0x00200000UL, 0x00fc0000UL, 0x00b10000UL, 0x005b0000UL,
-+0x006a0000UL, 0x00cb0000UL, 0x00be0000UL, 0x00390000UL, 0x004a0000UL, 0x004c0000UL, 0x00580000UL, 0x00cf0000UL,
-+0x00d00000UL, 0x00ef0000UL, 0x00aa0000UL, 0x00fb0000UL, 0x00430000UL, 0x004d0000UL, 0x00330000UL, 0x00850000UL,
-+0x00450000UL, 0x00f90000UL, 0x00020000UL, 0x007f0000UL, 0x00500000UL, 0x003c0000UL, 0x009f0000UL, 0x00a80000UL,
-+0x00510000UL, 0x00a30000UL, 0x00400000UL, 0x008f0000UL, 0x00920000UL, 0x009d0000UL, 0x00380000UL, 0x00f50000UL,
-+0x00bc0000UL, 0x00b60000UL, 0x00da0000UL, 0x00210000UL, 0x00100000UL, 0x00ff0000UL, 0x00f30000UL, 0x00d20000UL,
-+0x00cd0000UL, 0x000c0000UL, 0x00130000UL, 0x00ec0000UL, 0x005f0000UL, 0x00970000UL, 0x00440000UL, 0x00170000UL,
-+0x00c40000UL, 0x00a70000UL, 0x007e0000UL, 0x003d0000UL, 0x00640000UL, 0x005d0000UL, 0x00190000UL, 0x00730000UL,
-+0x00600000UL, 0x00810000UL, 0x004f0000UL, 0x00dc0000UL, 0x00220000UL, 0x002a0000UL, 0x00900000UL, 0x00880000UL,
-+0x00460000UL, 0x00ee0000UL, 0x00b80000UL, 0x00140000UL, 0x00de0000UL, 0x005e0000UL, 0x000b0000UL, 0x00db0000UL,
-+0x00e00000UL, 0x00320000UL, 0x003a0000UL, 0x000a0000UL, 0x00490000UL, 0x00060000UL, 0x00240000UL, 0x005c0000UL,
-+0x00c20000UL, 0x00d30000UL, 0x00ac0000UL, 0x00620000UL, 0x00910000UL, 0x00950000UL, 0x00e40000UL, 0x00790000UL,
-+0x00e70000UL, 0x00c80000UL, 0x00370000UL, 0x006d0000UL, 0x008d0000UL, 0x00d50000UL, 0x004e0000UL, 0x00a90000UL,
-+0x006c0000UL, 0x00560000UL, 0x00f40000UL, 0x00ea0000UL, 0x00650000UL, 0x007a0000UL, 0x00ae0000UL, 0x00080000UL,
-+0x00ba0000UL, 0x00780000UL, 0x00250000UL, 0x002e0000UL, 0x001c0000UL, 0x00a60000UL, 0x00b40000UL, 0x00c60000UL,
-+0x00e80000UL, 0x00dd0000UL, 0x00740000UL, 0x001f0000UL, 0x004b0000UL, 0x00bd0000UL, 0x008b0000UL, 0x008a0000UL,
-+0x00700000UL, 0x003e0000UL, 0x00b50000UL, 0x00660000UL, 0x00480000UL, 0x00030000UL, 0x00f60000UL, 0x000e0000UL,
-+0x00610000UL, 0x00350000UL, 0x00570000UL, 0x00b90000UL, 0x00860000UL, 0x00c10000UL, 0x001d0000UL, 0x009e0000UL,
-+0x00e10000UL, 0x00f80000UL, 0x00980000UL, 0x00110000UL, 0x00690000UL, 0x00d90000UL, 0x008e0000UL, 0x00940000UL,
-+0x009b0000UL, 0x001e0000UL, 0x00870000UL, 0x00e90000UL, 0x00ce0000UL, 0x00550000UL, 0x00280000UL, 0x00df0000UL,
-+0x008c0000UL, 0x00a10000UL, 0x00890000UL, 0x000d0000UL, 0x00bf0000UL, 0x00e60000UL, 0x00420000UL, 0x00680000UL,
-+0x00410000UL, 0x00990000UL, 0x002d0000UL, 0x000f0000UL, 0x00b00000UL, 0x00540000UL, 0x00bb0000UL, 0x00160000UL
-+};
-+
-+static const ulong32 Te4_3[] = {
-+0x63000000UL, 0x7c000000UL, 0x77000000UL, 0x7b000000UL, 0xf2000000UL, 0x6b000000UL, 0x6f000000UL, 0xc5000000UL,
-+0x30000000UL, 0x01000000UL, 0x67000000UL, 0x2b000000UL, 0xfe000000UL, 0xd7000000UL, 0xab000000UL, 0x76000000UL,
-+0xca000000UL, 0x82000000UL, 0xc9000000UL, 0x7d000000UL, 0xfa000000UL, 0x59000000UL, 0x47000000UL, 0xf0000000UL,
-+0xad000000UL, 0xd4000000UL, 0xa2000000UL, 0xaf000000UL, 0x9c000000UL, 0xa4000000UL, 0x72000000UL, 0xc0000000UL,
-+0xb7000000UL, 0xfd000000UL, 0x93000000UL, 0x26000000UL, 0x36000000UL, 0x3f000000UL, 0xf7000000UL, 0xcc000000UL,
-+0x34000000UL, 0xa5000000UL, 0xe5000000UL, 0xf1000000UL, 0x71000000UL, 0xd8000000UL, 0x31000000UL, 0x15000000UL,
-+0x04000000UL, 0xc7000000UL, 0x23000000UL, 0xc3000000UL, 0x18000000UL, 0x96000000UL, 0x05000000UL, 0x9a000000UL,
-+0x07000000UL, 0x12000000UL, 0x80000000UL, 0xe2000000UL, 0xeb000000UL, 0x27000000UL, 0xb2000000UL, 0x75000000UL,
-+0x09000000UL, 0x83000000UL, 0x2c000000UL, 0x1a000000UL, 0x1b000000UL, 0x6e000000UL, 0x5a000000UL, 0xa0000000UL,
-+0x52000000UL, 0x3b000000UL, 0xd6000000UL, 0xb3000000UL, 0x29000000UL, 0xe3000000UL, 0x2f000000UL, 0x84000000UL,
-+0x53000000UL, 0xd1000000UL, 0x00000000UL, 0xed000000UL, 0x20000000UL, 0xfc000000UL, 0xb1000000UL, 0x5b000000UL,
-+0x6a000000UL, 0xcb000000UL, 0xbe000000UL, 0x39000000UL, 0x4a000000UL, 0x4c000000UL, 0x58000000UL, 0xcf000000UL,
-+0xd0000000UL, 0xef000000UL, 0xaa000000UL, 0xfb000000UL, 0x43000000UL, 0x4d000000UL, 0x33000000UL, 0x85000000UL,
-+0x45000000UL, 0xf9000000UL, 0x02000000UL, 0x7f000000UL, 0x50000000UL, 0x3c000000UL, 0x9f000000UL, 0xa8000000UL,
-+0x51000000UL, 0xa3000000UL, 0x40000000UL, 0x8f000000UL, 0x92000000UL, 0x9d000000UL, 0x38000000UL, 0xf5000000UL,
-+0xbc000000UL, 0xb6000000UL, 0xda000000UL, 0x21000000UL, 0x10000000UL, 0xff000000UL, 0xf3000000UL, 0xd2000000UL,
-+0xcd000000UL, 0x0c000000UL, 0x13000000UL, 0xec000000UL, 0x5f000000UL, 0x97000000UL, 0x44000000UL, 0x17000000UL,
-+0xc4000000UL, 0xa7000000UL, 0x7e000000UL, 0x3d000000UL, 0x64000000UL, 0x5d000000UL, 0x19000000UL, 0x73000000UL,
-+0x60000000UL, 0x81000000UL, 0x4f000000UL, 0xdc000000UL, 0x22000000UL, 0x2a000000UL, 0x90000000UL, 0x88000000UL,
-+0x46000000UL, 0xee000000UL, 0xb8000000UL, 0x14000000UL, 0xde000000UL, 0x5e000000UL, 0x0b000000UL, 0xdb000000UL,
-+0xe0000000UL, 0x32000000UL, 0x3a000000UL, 0x0a000000UL, 0x49000000UL, 0x06000000UL, 0x24000000UL, 0x5c000000UL,
-+0xc2000000UL, 0xd3000000UL, 0xac000000UL, 0x62000000UL, 0x91000000UL, 0x95000000UL, 0xe4000000UL, 0x79000000UL,
-+0xe7000000UL, 0xc8000000UL, 0x37000000UL, 0x6d000000UL, 0x8d000000UL, 0xd5000000UL, 0x4e000000UL, 0xa9000000UL,
-+0x6c000000UL, 0x56000000UL, 0xf4000000UL, 0xea000000UL, 0x65000000UL, 0x7a000000UL, 0xae000000UL, 0x08000000UL,
-+0xba000000UL, 0x78000000UL, 0x25000000UL, 0x2e000000UL, 0x1c000000UL, 0xa6000000UL, 0xb4000000UL, 0xc6000000UL,
-+0xe8000000UL, 0xdd000000UL, 0x74000000UL, 0x1f000000UL, 0x4b000000UL, 0xbd000000UL, 0x8b000000UL, 0x8a000000UL,
-+0x70000000UL, 0x3e000000UL, 0xb5000000UL, 0x66000000UL, 0x48000000UL, 0x03000000UL, 0xf6000000UL, 0x0e000000UL,
-+0x61000000UL, 0x35000000UL, 0x57000000UL, 0xb9000000UL, 0x86000000UL, 0xc1000000UL, 0x1d000000UL, 0x9e000000UL,
-+0xe1000000UL, 0xf8000000UL, 0x98000000UL, 0x11000000UL, 0x69000000UL, 0xd9000000UL, 0x8e000000UL, 0x94000000UL,
-+0x9b000000UL, 0x1e000000UL, 0x87000000UL, 0xe9000000UL, 0xce000000UL, 0x55000000UL, 0x28000000UL, 0xdf000000UL,
-+0x8c000000UL, 0xa1000000UL, 0x89000000UL, 0x0d000000UL, 0xbf000000UL, 0xe6000000UL, 0x42000000UL, 0x68000000UL,
-+0x41000000UL, 0x99000000UL, 0x2d000000UL, 0x0f000000UL, 0xb0000000UL, 0x54000000UL, 0xbb000000UL, 0x16000000UL
-+};
-+
-+static const ulong32 TD1[256] = {
-+ 0x5051f4a7UL, 0x537e4165UL, 0xc31a17a4UL, 0x963a275eUL,
-+ 0xcb3bab6bUL, 0xf11f9d45UL, 0xabacfa58UL, 0x934be303UL,
-+ 0x552030faUL, 0xf6ad766dUL, 0x9188cc76UL, 0x25f5024cUL,
-+ 0xfc4fe5d7UL, 0xd7c52acbUL, 0x80263544UL, 0x8fb562a3UL,
-+ 0x49deb15aUL, 0x6725ba1bUL, 0x9845ea0eUL, 0xe15dfec0UL,
-+ 0x02c32f75UL, 0x12814cf0UL, 0xa38d4697UL, 0xc66bd3f9UL,
-+ 0xe7038f5fUL, 0x9515929cUL, 0xebbf6d7aUL, 0xda955259UL,
-+ 0x2dd4be83UL, 0xd3587421UL, 0x2949e069UL, 0x448ec9c8UL,
-+ 0x6a75c289UL, 0x78f48e79UL, 0x6b99583eUL, 0xdd27b971UL,
-+ 0xb6bee14fUL, 0x17f088adUL, 0x66c920acUL, 0xb47dce3aUL,
-+ 0x1863df4aUL, 0x82e51a31UL, 0x60975133UL, 0x4562537fUL,
-+ 0xe0b16477UL, 0x84bb6baeUL, 0x1cfe81a0UL, 0x94f9082bUL,
-+ 0x58704868UL, 0x198f45fdUL, 0x8794de6cUL, 0xb7527bf8UL,
-+ 0x23ab73d3UL, 0xe2724b02UL, 0x57e31f8fUL, 0x2a6655abUL,
-+ 0x07b2eb28UL, 0x032fb5c2UL, 0x9a86c57bUL, 0xa5d33708UL,
-+ 0xf2302887UL, 0xb223bfa5UL, 0xba02036aUL, 0x5ced1682UL,
-+ 0x2b8acf1cUL, 0x92a779b4UL, 0xf0f307f2UL, 0xa14e69e2UL,
-+ 0xcd65daf4UL, 0xd50605beUL, 0x1fd13462UL, 0x8ac4a6feUL,
-+ 0x9d342e53UL, 0xa0a2f355UL, 0x32058ae1UL, 0x75a4f6ebUL,
-+ 0x390b83ecUL, 0xaa4060efUL, 0x065e719fUL, 0x51bd6e10UL,
-+ 0xf93e218aUL, 0x3d96dd06UL, 0xaedd3e05UL, 0x464de6bdUL,
-+ 0xb591548dUL, 0x0571c45dUL, 0x6f0406d4UL, 0xff605015UL,
-+ 0x241998fbUL, 0x97d6bde9UL, 0xcc894043UL, 0x7767d99eUL,
-+ 0xbdb0e842UL, 0x8807898bUL, 0x38e7195bUL, 0xdb79c8eeUL,
-+ 0x47a17c0aUL, 0xe97c420fUL, 0xc9f8841eUL, 0x00000000UL,
-+ 0x83098086UL, 0x48322bedUL, 0xac1e1170UL, 0x4e6c5a72UL,
-+ 0xfbfd0effUL, 0x560f8538UL, 0x1e3daed5UL, 0x27362d39UL,
-+ 0x640a0fd9UL, 0x21685ca6UL, 0xd19b5b54UL, 0x3a24362eUL,
-+ 0xb10c0a67UL, 0x0f9357e7UL, 0xd2b4ee96UL, 0x9e1b9b91UL,
-+ 0x4f80c0c5UL, 0xa261dc20UL, 0x695a774bUL, 0x161c121aUL,
-+ 0x0ae293baUL, 0xe5c0a02aUL, 0x433c22e0UL, 0x1d121b17UL,
-+ 0x0b0e090dUL, 0xadf28bc7UL, 0xb92db6a8UL, 0xc8141ea9UL,
-+ 0x8557f119UL, 0x4caf7507UL, 0xbbee99ddUL, 0xfda37f60UL,
-+ 0x9ff70126UL, 0xbc5c72f5UL, 0xc544663bUL, 0x345bfb7eUL,
-+ 0x768b4329UL, 0xdccb23c6UL, 0x68b6edfcUL, 0x63b8e4f1UL,
-+ 0xcad731dcUL, 0x10426385UL, 0x40139722UL, 0x2084c611UL,
-+ 0x7d854a24UL, 0xf8d2bb3dUL, 0x11aef932UL, 0x6dc729a1UL,
-+ 0x4b1d9e2fUL, 0xf3dcb230UL, 0xec0d8652UL, 0xd077c1e3UL,
-+ 0x6c2bb316UL, 0x99a970b9UL, 0xfa119448UL, 0x2247e964UL,
-+ 0xc4a8fc8cUL, 0x1aa0f03fUL, 0xd8567d2cUL, 0xef223390UL,
-+ 0xc787494eUL, 0xc1d938d1UL, 0xfe8ccaa2UL, 0x3698d40bUL,
-+ 0xcfa6f581UL, 0x28a57adeUL, 0x26dab78eUL, 0xa43fadbfUL,
-+ 0xe42c3a9dUL, 0x0d507892UL, 0x9b6a5fccUL, 0x62547e46UL,
-+ 0xc2f68d13UL, 0xe890d8b8UL, 0x5e2e39f7UL, 0xf582c3afUL,
-+ 0xbe9f5d80UL, 0x7c69d093UL, 0xa96fd52dUL, 0xb3cf2512UL,
-+ 0x3bc8ac99UL, 0xa710187dUL, 0x6ee89c63UL, 0x7bdb3bbbUL,
-+ 0x09cd2678UL, 0xf46e5918UL, 0x01ec9ab7UL, 0xa8834f9aUL,
-+ 0x65e6956eUL, 0x7eaaffe6UL, 0x0821bccfUL, 0xe6ef15e8UL,
-+ 0xd9bae79bUL, 0xce4a6f36UL, 0xd4ea9f09UL, 0xd629b07cUL,
-+ 0xaf31a4b2UL, 0x312a3f23UL, 0x30c6a594UL, 0xc035a266UL,
-+ 0x37744ebcUL, 0xa6fc82caUL, 0xb0e090d0UL, 0x1533a7d8UL,
-+ 0x4af10498UL, 0xf741ecdaUL, 0x0e7fcd50UL, 0x2f1791f6UL,
-+ 0x8d764dd6UL, 0x4d43efb0UL, 0x54ccaa4dUL, 0xdfe49604UL,
-+ 0xe39ed1b5UL, 0x1b4c6a88UL, 0xb8c12c1fUL, 0x7f466551UL,
-+ 0x049d5eeaUL, 0x5d018c35UL, 0x73fa8774UL, 0x2efb0b41UL,
-+ 0x5ab3671dUL, 0x5292dbd2UL, 0x33e91056UL, 0x136dd647UL,
-+ 0x8c9ad761UL, 0x7a37a10cUL, 0x8e59f814UL, 0x89eb133cUL,
-+ 0xeecea927UL, 0x35b761c9UL, 0xede11ce5UL, 0x3c7a47b1UL,
-+ 0x599cd2dfUL, 0x3f55f273UL, 0x791814ceUL, 0xbf73c737UL,
-+ 0xea53f7cdUL, 0x5b5ffdaaUL, 0x14df3d6fUL, 0x867844dbUL,
-+ 0x81caaff3UL, 0x3eb968c4UL, 0x2c382434UL, 0x5fc2a340UL,
-+ 0x72161dc3UL, 0x0cbce225UL, 0x8b283c49UL, 0x41ff0d95UL,
-+ 0x7139a801UL, 0xde080cb3UL, 0x9cd8b4e4UL, 0x906456c1UL,
-+ 0x617bcb84UL, 0x70d532b6UL, 0x74486c5cUL, 0x42d0b857UL,
-+};
-+static const ulong32 TD2[256] = {
-+ 0xa75051f4UL, 0x65537e41UL, 0xa4c31a17UL, 0x5e963a27UL,
-+ 0x6bcb3babUL, 0x45f11f9dUL, 0x58abacfaUL, 0x03934be3UL,
-+ 0xfa552030UL, 0x6df6ad76UL, 0x769188ccUL, 0x4c25f502UL,
-+ 0xd7fc4fe5UL, 0xcbd7c52aUL, 0x44802635UL, 0xa38fb562UL,
-+ 0x5a49deb1UL, 0x1b6725baUL, 0x0e9845eaUL, 0xc0e15dfeUL,
-+ 0x7502c32fUL, 0xf012814cUL, 0x97a38d46UL, 0xf9c66bd3UL,
-+ 0x5fe7038fUL, 0x9c951592UL, 0x7aebbf6dUL, 0x59da9552UL,
-+ 0x832dd4beUL, 0x21d35874UL, 0x692949e0UL, 0xc8448ec9UL,
-+ 0x896a75c2UL, 0x7978f48eUL, 0x3e6b9958UL, 0x71dd27b9UL,
-+ 0x4fb6bee1UL, 0xad17f088UL, 0xac66c920UL, 0x3ab47dceUL,
-+ 0x4a1863dfUL, 0x3182e51aUL, 0x33609751UL, 0x7f456253UL,
-+ 0x77e0b164UL, 0xae84bb6bUL, 0xa01cfe81UL, 0x2b94f908UL,
-+ 0x68587048UL, 0xfd198f45UL, 0x6c8794deUL, 0xf8b7527bUL,
-+ 0xd323ab73UL, 0x02e2724bUL, 0x8f57e31fUL, 0xab2a6655UL,
-+ 0x2807b2ebUL, 0xc2032fb5UL, 0x7b9a86c5UL, 0x08a5d337UL,
-+ 0x87f23028UL, 0xa5b223bfUL, 0x6aba0203UL, 0x825ced16UL,
-+ 0x1c2b8acfUL, 0xb492a779UL, 0xf2f0f307UL, 0xe2a14e69UL,
-+ 0xf4cd65daUL, 0xbed50605UL, 0x621fd134UL, 0xfe8ac4a6UL,
-+ 0x539d342eUL, 0x55a0a2f3UL, 0xe132058aUL, 0xeb75a4f6UL,
-+ 0xec390b83UL, 0xefaa4060UL, 0x9f065e71UL, 0x1051bd6eUL,
-+ 0x8af93e21UL, 0x063d96ddUL, 0x05aedd3eUL, 0xbd464de6UL,
-+ 0x8db59154UL, 0x5d0571c4UL, 0xd46f0406UL, 0x15ff6050UL,
-+ 0xfb241998UL, 0xe997d6bdUL, 0x43cc8940UL, 0x9e7767d9UL,
-+ 0x42bdb0e8UL, 0x8b880789UL, 0x5b38e719UL, 0xeedb79c8UL,
-+ 0x0a47a17cUL, 0x0fe97c42UL, 0x1ec9f884UL, 0x00000000UL,
-+ 0x86830980UL, 0xed48322bUL, 0x70ac1e11UL, 0x724e6c5aUL,
-+ 0xfffbfd0eUL, 0x38560f85UL, 0xd51e3daeUL, 0x3927362dUL,
-+ 0xd9640a0fUL, 0xa621685cUL, 0x54d19b5bUL, 0x2e3a2436UL,
-+ 0x67b10c0aUL, 0xe70f9357UL, 0x96d2b4eeUL, 0x919e1b9bUL,
-+ 0xc54f80c0UL, 0x20a261dcUL, 0x4b695a77UL, 0x1a161c12UL,
-+ 0xba0ae293UL, 0x2ae5c0a0UL, 0xe0433c22UL, 0x171d121bUL,
-+ 0x0d0b0e09UL, 0xc7adf28bUL, 0xa8b92db6UL, 0xa9c8141eUL,
-+ 0x198557f1UL, 0x074caf75UL, 0xddbbee99UL, 0x60fda37fUL,
-+ 0x269ff701UL, 0xf5bc5c72UL, 0x3bc54466UL, 0x7e345bfbUL,
-+ 0x29768b43UL, 0xc6dccb23UL, 0xfc68b6edUL, 0xf163b8e4UL,
-+ 0xdccad731UL, 0x85104263UL, 0x22401397UL, 0x112084c6UL,
-+ 0x247d854aUL, 0x3df8d2bbUL, 0x3211aef9UL, 0xa16dc729UL,
-+ 0x2f4b1d9eUL, 0x30f3dcb2UL, 0x52ec0d86UL, 0xe3d077c1UL,
-+ 0x166c2bb3UL, 0xb999a970UL, 0x48fa1194UL, 0x642247e9UL,
-+ 0x8cc4a8fcUL, 0x3f1aa0f0UL, 0x2cd8567dUL, 0x90ef2233UL,
-+ 0x4ec78749UL, 0xd1c1d938UL, 0xa2fe8ccaUL, 0x0b3698d4UL,
-+ 0x81cfa6f5UL, 0xde28a57aUL, 0x8e26dab7UL, 0xbfa43fadUL,
-+ 0x9de42c3aUL, 0x920d5078UL, 0xcc9b6a5fUL, 0x4662547eUL,
-+ 0x13c2f68dUL, 0xb8e890d8UL, 0xf75e2e39UL, 0xaff582c3UL,
-+ 0x80be9f5dUL, 0x937c69d0UL, 0x2da96fd5UL, 0x12b3cf25UL,
-+ 0x993bc8acUL, 0x7da71018UL, 0x636ee89cUL, 0xbb7bdb3bUL,
-+ 0x7809cd26UL, 0x18f46e59UL, 0xb701ec9aUL, 0x9aa8834fUL,
-+ 0x6e65e695UL, 0xe67eaaffUL, 0xcf0821bcUL, 0xe8e6ef15UL,
-+ 0x9bd9bae7UL, 0x36ce4a6fUL, 0x09d4ea9fUL, 0x7cd629b0UL,
-+ 0xb2af31a4UL, 0x23312a3fUL, 0x9430c6a5UL, 0x66c035a2UL,
-+ 0xbc37744eUL, 0xcaa6fc82UL, 0xd0b0e090UL, 0xd81533a7UL,
-+ 0x984af104UL, 0xdaf741ecUL, 0x500e7fcdUL, 0xf62f1791UL,
-+ 0xd68d764dUL, 0xb04d43efUL, 0x4d54ccaaUL, 0x04dfe496UL,
-+ 0xb5e39ed1UL, 0x881b4c6aUL, 0x1fb8c12cUL, 0x517f4665UL,
-+ 0xea049d5eUL, 0x355d018cUL, 0x7473fa87UL, 0x412efb0bUL,
-+ 0x1d5ab367UL, 0xd25292dbUL, 0x5633e910UL, 0x47136dd6UL,
-+ 0x618c9ad7UL, 0x0c7a37a1UL, 0x148e59f8UL, 0x3c89eb13UL,
-+ 0x27eecea9UL, 0xc935b761UL, 0xe5ede11cUL, 0xb13c7a47UL,
-+ 0xdf599cd2UL, 0x733f55f2UL, 0xce791814UL, 0x37bf73c7UL,
-+ 0xcdea53f7UL, 0xaa5b5ffdUL, 0x6f14df3dUL, 0xdb867844UL,
-+ 0xf381caafUL, 0xc43eb968UL, 0x342c3824UL, 0x405fc2a3UL,
-+ 0xc372161dUL, 0x250cbce2UL, 0x498b283cUL, 0x9541ff0dUL,
-+ 0x017139a8UL, 0xb3de080cUL, 0xe49cd8b4UL, 0xc1906456UL,
-+ 0x84617bcbUL, 0xb670d532UL, 0x5c74486cUL, 0x5742d0b8UL,
-+};
-+static const ulong32 TD3[256] = {
-+ 0xf4a75051UL, 0x4165537eUL, 0x17a4c31aUL, 0x275e963aUL,
-+ 0xab6bcb3bUL, 0x9d45f11fUL, 0xfa58abacUL, 0xe303934bUL,
-+ 0x30fa5520UL, 0x766df6adUL, 0xcc769188UL, 0x024c25f5UL,
-+ 0xe5d7fc4fUL, 0x2acbd7c5UL, 0x35448026UL, 0x62a38fb5UL,
-+ 0xb15a49deUL, 0xba1b6725UL, 0xea0e9845UL, 0xfec0e15dUL,
-+ 0x2f7502c3UL, 0x4cf01281UL, 0x4697a38dUL, 0xd3f9c66bUL,
-+ 0x8f5fe703UL, 0x929c9515UL, 0x6d7aebbfUL, 0x5259da95UL,
-+ 0xbe832dd4UL, 0x7421d358UL, 0xe0692949UL, 0xc9c8448eUL,
-+ 0xc2896a75UL, 0x8e7978f4UL, 0x583e6b99UL, 0xb971dd27UL,
-+ 0xe14fb6beUL, 0x88ad17f0UL, 0x20ac66c9UL, 0xce3ab47dUL,
-+ 0xdf4a1863UL, 0x1a3182e5UL, 0x51336097UL, 0x537f4562UL,
-+ 0x6477e0b1UL, 0x6bae84bbUL, 0x81a01cfeUL, 0x082b94f9UL,
-+ 0x48685870UL, 0x45fd198fUL, 0xde6c8794UL, 0x7bf8b752UL,
-+ 0x73d323abUL, 0x4b02e272UL, 0x1f8f57e3UL, 0x55ab2a66UL,
-+ 0xeb2807b2UL, 0xb5c2032fUL, 0xc57b9a86UL, 0x3708a5d3UL,
-+ 0x2887f230UL, 0xbfa5b223UL, 0x036aba02UL, 0x16825cedUL,
-+ 0xcf1c2b8aUL, 0x79b492a7UL, 0x07f2f0f3UL, 0x69e2a14eUL,
-+ 0xdaf4cd65UL, 0x05bed506UL, 0x34621fd1UL, 0xa6fe8ac4UL,
-+ 0x2e539d34UL, 0xf355a0a2UL, 0x8ae13205UL, 0xf6eb75a4UL,
-+ 0x83ec390bUL, 0x60efaa40UL, 0x719f065eUL, 0x6e1051bdUL,
-+ 0x218af93eUL, 0xdd063d96UL, 0x3e05aeddUL, 0xe6bd464dUL,
-+ 0x548db591UL, 0xc45d0571UL, 0x06d46f04UL, 0x5015ff60UL,
-+ 0x98fb2419UL, 0xbde997d6UL, 0x4043cc89UL, 0xd99e7767UL,
-+ 0xe842bdb0UL, 0x898b8807UL, 0x195b38e7UL, 0xc8eedb79UL,
-+ 0x7c0a47a1UL, 0x420fe97cUL, 0x841ec9f8UL, 0x00000000UL,
-+ 0x80868309UL, 0x2bed4832UL, 0x1170ac1eUL, 0x5a724e6cUL,
-+ 0x0efffbfdUL, 0x8538560fUL, 0xaed51e3dUL, 0x2d392736UL,
-+ 0x0fd9640aUL, 0x5ca62168UL, 0x5b54d19bUL, 0x362e3a24UL,
-+ 0x0a67b10cUL, 0x57e70f93UL, 0xee96d2b4UL, 0x9b919e1bUL,
-+ 0xc0c54f80UL, 0xdc20a261UL, 0x774b695aUL, 0x121a161cUL,
-+ 0x93ba0ae2UL, 0xa02ae5c0UL, 0x22e0433cUL, 0x1b171d12UL,
-+ 0x090d0b0eUL, 0x8bc7adf2UL, 0xb6a8b92dUL, 0x1ea9c814UL,
-+ 0xf1198557UL, 0x75074cafUL, 0x99ddbbeeUL, 0x7f60fda3UL,
-+ 0x01269ff7UL, 0x72f5bc5cUL, 0x663bc544UL, 0xfb7e345bUL,
-+ 0x4329768bUL, 0x23c6dccbUL, 0xedfc68b6UL, 0xe4f163b8UL,
-+ 0x31dccad7UL, 0x63851042UL, 0x97224013UL, 0xc6112084UL,
-+ 0x4a247d85UL, 0xbb3df8d2UL, 0xf93211aeUL, 0x29a16dc7UL,
-+ 0x9e2f4b1dUL, 0xb230f3dcUL, 0x8652ec0dUL, 0xc1e3d077UL,
-+ 0xb3166c2bUL, 0x70b999a9UL, 0x9448fa11UL, 0xe9642247UL,
-+ 0xfc8cc4a8UL, 0xf03f1aa0UL, 0x7d2cd856UL, 0x3390ef22UL,
-+ 0x494ec787UL, 0x38d1c1d9UL, 0xcaa2fe8cUL, 0xd40b3698UL,
-+ 0xf581cfa6UL, 0x7ade28a5UL, 0xb78e26daUL, 0xadbfa43fUL,
-+ 0x3a9de42cUL, 0x78920d50UL, 0x5fcc9b6aUL, 0x7e466254UL,
-+ 0x8d13c2f6UL, 0xd8b8e890UL, 0x39f75e2eUL, 0xc3aff582UL,
-+ 0x5d80be9fUL, 0xd0937c69UL, 0xd52da96fUL, 0x2512b3cfUL,
-+ 0xac993bc8UL, 0x187da710UL, 0x9c636ee8UL, 0x3bbb7bdbUL,
-+ 0x267809cdUL, 0x5918f46eUL, 0x9ab701ecUL, 0x4f9aa883UL,
-+ 0x956e65e6UL, 0xffe67eaaUL, 0xbccf0821UL, 0x15e8e6efUL,
-+ 0xe79bd9baUL, 0x6f36ce4aUL, 0x9f09d4eaUL, 0xb07cd629UL,
-+ 0xa4b2af31UL, 0x3f23312aUL, 0xa59430c6UL, 0xa266c035UL,
-+ 0x4ebc3774UL, 0x82caa6fcUL, 0x90d0b0e0UL, 0xa7d81533UL,
-+ 0x04984af1UL, 0xecdaf741UL, 0xcd500e7fUL, 0x91f62f17UL,
-+ 0x4dd68d76UL, 0xefb04d43UL, 0xaa4d54ccUL, 0x9604dfe4UL,
-+ 0xd1b5e39eUL, 0x6a881b4cUL, 0x2c1fb8c1UL, 0x65517f46UL,
-+ 0x5eea049dUL, 0x8c355d01UL, 0x877473faUL, 0x0b412efbUL,
-+ 0x671d5ab3UL, 0xdbd25292UL, 0x105633e9UL, 0xd647136dUL,
-+ 0xd7618c9aUL, 0xa10c7a37UL, 0xf8148e59UL, 0x133c89ebUL,
-+ 0xa927eeceUL, 0x61c935b7UL, 0x1ce5ede1UL, 0x47b13c7aUL,
-+ 0xd2df599cUL, 0xf2733f55UL, 0x14ce7918UL, 0xc737bf73UL,
-+ 0xf7cdea53UL, 0xfdaa5b5fUL, 0x3d6f14dfUL, 0x44db8678UL,
-+ 0xaff381caUL, 0x68c43eb9UL, 0x24342c38UL, 0xa3405fc2UL,
-+ 0x1dc37216UL, 0xe2250cbcUL, 0x3c498b28UL, 0x0d9541ffUL,
-+ 0xa8017139UL, 0x0cb3de08UL, 0xb4e49cd8UL, 0x56c19064UL,
-+ 0xcb84617bUL, 0x32b670d5UL, 0x6c5c7448UL, 0xb85742d0UL,
-+};
-+
-+static const ulong32 Tks0[] = {
-+0x00000000UL, 0x0e090d0bUL, 0x1c121a16UL, 0x121b171dUL, 0x3824342cUL, 0x362d3927UL, 0x24362e3aUL, 0x2a3f2331UL,
-+0x70486858UL, 0x7e416553UL, 0x6c5a724eUL, 0x62537f45UL, 0x486c5c74UL, 0x4665517fUL, 0x547e4662UL, 0x5a774b69UL,
-+0xe090d0b0UL, 0xee99ddbbUL, 0xfc82caa6UL, 0xf28bc7adUL, 0xd8b4e49cUL, 0xd6bde997UL, 0xc4a6fe8aUL, 0xcaaff381UL,
-+0x90d8b8e8UL, 0x9ed1b5e3UL, 0x8ccaa2feUL, 0x82c3aff5UL, 0xa8fc8cc4UL, 0xa6f581cfUL, 0xb4ee96d2UL, 0xbae79bd9UL,
-+0xdb3bbb7bUL, 0xd532b670UL, 0xc729a16dUL, 0xc920ac66UL, 0xe31f8f57UL, 0xed16825cUL, 0xff0d9541UL, 0xf104984aUL,
-+0xab73d323UL, 0xa57ade28UL, 0xb761c935UL, 0xb968c43eUL, 0x9357e70fUL, 0x9d5eea04UL, 0x8f45fd19UL, 0x814cf012UL,
-+0x3bab6bcbUL, 0x35a266c0UL, 0x27b971ddUL, 0x29b07cd6UL, 0x038f5fe7UL, 0x0d8652ecUL, 0x1f9d45f1UL, 0x119448faUL,
-+0x4be30393UL, 0x45ea0e98UL, 0x57f11985UL, 0x59f8148eUL, 0x73c737bfUL, 0x7dce3ab4UL, 0x6fd52da9UL, 0x61dc20a2UL,
-+0xad766df6UL, 0xa37f60fdUL, 0xb16477e0UL, 0xbf6d7aebUL, 0x955259daUL, 0x9b5b54d1UL, 0x894043ccUL, 0x87494ec7UL,
-+0xdd3e05aeUL, 0xd33708a5UL, 0xc12c1fb8UL, 0xcf2512b3UL, 0xe51a3182UL, 0xeb133c89UL, 0xf9082b94UL, 0xf701269fUL,
-+0x4de6bd46UL, 0x43efb04dUL, 0x51f4a750UL, 0x5ffdaa5bUL, 0x75c2896aUL, 0x7bcb8461UL, 0x69d0937cUL, 0x67d99e77UL,
-+0x3daed51eUL, 0x33a7d815UL, 0x21bccf08UL, 0x2fb5c203UL, 0x058ae132UL, 0x0b83ec39UL, 0x1998fb24UL, 0x1791f62fUL,
-+0x764dd68dUL, 0x7844db86UL, 0x6a5fcc9bUL, 0x6456c190UL, 0x4e69e2a1UL, 0x4060efaaUL, 0x527bf8b7UL, 0x5c72f5bcUL,
-+0x0605bed5UL, 0x080cb3deUL, 0x1a17a4c3UL, 0x141ea9c8UL, 0x3e218af9UL, 0x302887f2UL, 0x223390efUL, 0x2c3a9de4UL,
-+0x96dd063dUL, 0x98d40b36UL, 0x8acf1c2bUL, 0x84c61120UL, 0xaef93211UL, 0xa0f03f1aUL, 0xb2eb2807UL, 0xbce2250cUL,
-+0xe6956e65UL, 0xe89c636eUL, 0xfa877473UL, 0xf48e7978UL, 0xdeb15a49UL, 0xd0b85742UL, 0xc2a3405fUL, 0xccaa4d54UL,
-+0x41ecdaf7UL, 0x4fe5d7fcUL, 0x5dfec0e1UL, 0x53f7cdeaUL, 0x79c8eedbUL, 0x77c1e3d0UL, 0x65daf4cdUL, 0x6bd3f9c6UL,
-+0x31a4b2afUL, 0x3fadbfa4UL, 0x2db6a8b9UL, 0x23bfa5b2UL, 0x09808683UL, 0x07898b88UL, 0x15929c95UL, 0x1b9b919eUL,
-+0xa17c0a47UL, 0xaf75074cUL, 0xbd6e1051UL, 0xb3671d5aUL, 0x99583e6bUL, 0x97513360UL, 0x854a247dUL, 0x8b432976UL,
-+0xd134621fUL, 0xdf3d6f14UL, 0xcd267809UL, 0xc32f7502UL, 0xe9105633UL, 0xe7195b38UL, 0xf5024c25UL, 0xfb0b412eUL,
-+0x9ad7618cUL, 0x94de6c87UL, 0x86c57b9aUL, 0x88cc7691UL, 0xa2f355a0UL, 0xacfa58abUL, 0xbee14fb6UL, 0xb0e842bdUL,
-+0xea9f09d4UL, 0xe49604dfUL, 0xf68d13c2UL, 0xf8841ec9UL, 0xd2bb3df8UL, 0xdcb230f3UL, 0xcea927eeUL, 0xc0a02ae5UL,
-+0x7a47b13cUL, 0x744ebc37UL, 0x6655ab2aUL, 0x685ca621UL, 0x42638510UL, 0x4c6a881bUL, 0x5e719f06UL, 0x5078920dUL,
-+0x0a0fd964UL, 0x0406d46fUL, 0x161dc372UL, 0x1814ce79UL, 0x322bed48UL, 0x3c22e043UL, 0x2e39f75eUL, 0x2030fa55UL,
-+0xec9ab701UL, 0xe293ba0aUL, 0xf088ad17UL, 0xfe81a01cUL, 0xd4be832dUL, 0xdab78e26UL, 0xc8ac993bUL, 0xc6a59430UL,
-+0x9cd2df59UL, 0x92dbd252UL, 0x80c0c54fUL, 0x8ec9c844UL, 0xa4f6eb75UL, 0xaaffe67eUL, 0xb8e4f163UL, 0xb6edfc68UL,
-+0x0c0a67b1UL, 0x02036abaUL, 0x10187da7UL, 0x1e1170acUL, 0x342e539dUL, 0x3a275e96UL, 0x283c498bUL, 0x26354480UL,
-+0x7c420fe9UL, 0x724b02e2UL, 0x605015ffUL, 0x6e5918f4UL, 0x44663bc5UL, 0x4a6f36ceUL, 0x587421d3UL, 0x567d2cd8UL,
-+0x37a10c7aUL, 0x39a80171UL, 0x2bb3166cUL, 0x25ba1b67UL, 0x0f853856UL, 0x018c355dUL, 0x13972240UL, 0x1d9e2f4bUL,
-+0x47e96422UL, 0x49e06929UL, 0x5bfb7e34UL, 0x55f2733fUL, 0x7fcd500eUL, 0x71c45d05UL, 0x63df4a18UL, 0x6dd64713UL,
-+0xd731dccaUL, 0xd938d1c1UL, 0xcb23c6dcUL, 0xc52acbd7UL, 0xef15e8e6UL, 0xe11ce5edUL, 0xf307f2f0UL, 0xfd0efffbUL,
-+0xa779b492UL, 0xa970b999UL, 0xbb6bae84UL, 0xb562a38fUL, 0x9f5d80beUL, 0x91548db5UL, 0x834f9aa8UL, 0x8d4697a3UL
-+};
-+
-+static const ulong32 Tks1[] = {
-+0x00000000UL, 0x0b0e090dUL, 0x161c121aUL, 0x1d121b17UL, 0x2c382434UL, 0x27362d39UL, 0x3a24362eUL, 0x312a3f23UL,
-+0x58704868UL, 0x537e4165UL, 0x4e6c5a72UL, 0x4562537fUL, 0x74486c5cUL, 0x7f466551UL, 0x62547e46UL, 0x695a774bUL,
-+0xb0e090d0UL, 0xbbee99ddUL, 0xa6fc82caUL, 0xadf28bc7UL, 0x9cd8b4e4UL, 0x97d6bde9UL, 0x8ac4a6feUL, 0x81caaff3UL,
-+0xe890d8b8UL, 0xe39ed1b5UL, 0xfe8ccaa2UL, 0xf582c3afUL, 0xc4a8fc8cUL, 0xcfa6f581UL, 0xd2b4ee96UL, 0xd9bae79bUL,
-+0x7bdb3bbbUL, 0x70d532b6UL, 0x6dc729a1UL, 0x66c920acUL, 0x57e31f8fUL, 0x5ced1682UL, 0x41ff0d95UL, 0x4af10498UL,
-+0x23ab73d3UL, 0x28a57adeUL, 0x35b761c9UL, 0x3eb968c4UL, 0x0f9357e7UL, 0x049d5eeaUL, 0x198f45fdUL, 0x12814cf0UL,
-+0xcb3bab6bUL, 0xc035a266UL, 0xdd27b971UL, 0xd629b07cUL, 0xe7038f5fUL, 0xec0d8652UL, 0xf11f9d45UL, 0xfa119448UL,
-+0x934be303UL, 0x9845ea0eUL, 0x8557f119UL, 0x8e59f814UL, 0xbf73c737UL, 0xb47dce3aUL, 0xa96fd52dUL, 0xa261dc20UL,
-+0xf6ad766dUL, 0xfda37f60UL, 0xe0b16477UL, 0xebbf6d7aUL, 0xda955259UL, 0xd19b5b54UL, 0xcc894043UL, 0xc787494eUL,
-+0xaedd3e05UL, 0xa5d33708UL, 0xb8c12c1fUL, 0xb3cf2512UL, 0x82e51a31UL, 0x89eb133cUL, 0x94f9082bUL, 0x9ff70126UL,
-+0x464de6bdUL, 0x4d43efb0UL, 0x5051f4a7UL, 0x5b5ffdaaUL, 0x6a75c289UL, 0x617bcb84UL, 0x7c69d093UL, 0x7767d99eUL,
-+0x1e3daed5UL, 0x1533a7d8UL, 0x0821bccfUL, 0x032fb5c2UL, 0x32058ae1UL, 0x390b83ecUL, 0x241998fbUL, 0x2f1791f6UL,
-+0x8d764dd6UL, 0x867844dbUL, 0x9b6a5fccUL, 0x906456c1UL, 0xa14e69e2UL, 0xaa4060efUL, 0xb7527bf8UL, 0xbc5c72f5UL,
-+0xd50605beUL, 0xde080cb3UL, 0xc31a17a4UL, 0xc8141ea9UL, 0xf93e218aUL, 0xf2302887UL, 0xef223390UL, 0xe42c3a9dUL,
-+0x3d96dd06UL, 0x3698d40bUL, 0x2b8acf1cUL, 0x2084c611UL, 0x11aef932UL, 0x1aa0f03fUL, 0x07b2eb28UL, 0x0cbce225UL,
-+0x65e6956eUL, 0x6ee89c63UL, 0x73fa8774UL, 0x78f48e79UL, 0x49deb15aUL, 0x42d0b857UL, 0x5fc2a340UL, 0x54ccaa4dUL,
-+0xf741ecdaUL, 0xfc4fe5d7UL, 0xe15dfec0UL, 0xea53f7cdUL, 0xdb79c8eeUL, 0xd077c1e3UL, 0xcd65daf4UL, 0xc66bd3f9UL,
-+0xaf31a4b2UL, 0xa43fadbfUL, 0xb92db6a8UL, 0xb223bfa5UL, 0x83098086UL, 0x8807898bUL, 0x9515929cUL, 0x9e1b9b91UL,
-+0x47a17c0aUL, 0x4caf7507UL, 0x51bd6e10UL, 0x5ab3671dUL, 0x6b99583eUL, 0x60975133UL, 0x7d854a24UL, 0x768b4329UL,
-+0x1fd13462UL, 0x14df3d6fUL, 0x09cd2678UL, 0x02c32f75UL, 0x33e91056UL, 0x38e7195bUL, 0x25f5024cUL, 0x2efb0b41UL,
-+0x8c9ad761UL, 0x8794de6cUL, 0x9a86c57bUL, 0x9188cc76UL, 0xa0a2f355UL, 0xabacfa58UL, 0xb6bee14fUL, 0xbdb0e842UL,
-+0xd4ea9f09UL, 0xdfe49604UL, 0xc2f68d13UL, 0xc9f8841eUL, 0xf8d2bb3dUL, 0xf3dcb230UL, 0xeecea927UL, 0xe5c0a02aUL,
-+0x3c7a47b1UL, 0x37744ebcUL, 0x2a6655abUL, 0x21685ca6UL, 0x10426385UL, 0x1b4c6a88UL, 0x065e719fUL, 0x0d507892UL,
-+0x640a0fd9UL, 0x6f0406d4UL, 0x72161dc3UL, 0x791814ceUL, 0x48322bedUL, 0x433c22e0UL, 0x5e2e39f7UL, 0x552030faUL,
-+0x01ec9ab7UL, 0x0ae293baUL, 0x17f088adUL, 0x1cfe81a0UL, 0x2dd4be83UL, 0x26dab78eUL, 0x3bc8ac99UL, 0x30c6a594UL,
-+0x599cd2dfUL, 0x5292dbd2UL, 0x4f80c0c5UL, 0x448ec9c8UL, 0x75a4f6ebUL, 0x7eaaffe6UL, 0x63b8e4f1UL, 0x68b6edfcUL,
-+0xb10c0a67UL, 0xba02036aUL, 0xa710187dUL, 0xac1e1170UL, 0x9d342e53UL, 0x963a275eUL, 0x8b283c49UL, 0x80263544UL,
-+0xe97c420fUL, 0xe2724b02UL, 0xff605015UL, 0xf46e5918UL, 0xc544663bUL, 0xce4a6f36UL, 0xd3587421UL, 0xd8567d2cUL,
-+0x7a37a10cUL, 0x7139a801UL, 0x6c2bb316UL, 0x6725ba1bUL, 0x560f8538UL, 0x5d018c35UL, 0x40139722UL, 0x4b1d9e2fUL,
-+0x2247e964UL, 0x2949e069UL, 0x345bfb7eUL, 0x3f55f273UL, 0x0e7fcd50UL, 0x0571c45dUL, 0x1863df4aUL, 0x136dd647UL,
-+0xcad731dcUL, 0xc1d938d1UL, 0xdccb23c6UL, 0xd7c52acbUL, 0xe6ef15e8UL, 0xede11ce5UL, 0xf0f307f2UL, 0xfbfd0effUL,
-+0x92a779b4UL, 0x99a970b9UL, 0x84bb6baeUL, 0x8fb562a3UL, 0xbe9f5d80UL, 0xb591548dUL, 0xa8834f9aUL, 0xa38d4697UL
-+};
-+
-+static const ulong32 Tks2[] = {
-+0x00000000UL, 0x0d0b0e09UL, 0x1a161c12UL, 0x171d121bUL, 0x342c3824UL, 0x3927362dUL, 0x2e3a2436UL, 0x23312a3fUL,
-+0x68587048UL, 0x65537e41UL, 0x724e6c5aUL, 0x7f456253UL, 0x5c74486cUL, 0x517f4665UL, 0x4662547eUL, 0x4b695a77UL,
-+0xd0b0e090UL, 0xddbbee99UL, 0xcaa6fc82UL, 0xc7adf28bUL, 0xe49cd8b4UL, 0xe997d6bdUL, 0xfe8ac4a6UL, 0xf381caafUL,
-+0xb8e890d8UL, 0xb5e39ed1UL, 0xa2fe8ccaUL, 0xaff582c3UL, 0x8cc4a8fcUL, 0x81cfa6f5UL, 0x96d2b4eeUL, 0x9bd9bae7UL,
-+0xbb7bdb3bUL, 0xb670d532UL, 0xa16dc729UL, 0xac66c920UL, 0x8f57e31fUL, 0x825ced16UL, 0x9541ff0dUL, 0x984af104UL,
-+0xd323ab73UL, 0xde28a57aUL, 0xc935b761UL, 0xc43eb968UL, 0xe70f9357UL, 0xea049d5eUL, 0xfd198f45UL, 0xf012814cUL,
-+0x6bcb3babUL, 0x66c035a2UL, 0x71dd27b9UL, 0x7cd629b0UL, 0x5fe7038fUL, 0x52ec0d86UL, 0x45f11f9dUL, 0x48fa1194UL,
-+0x03934be3UL, 0x0e9845eaUL, 0x198557f1UL, 0x148e59f8UL, 0x37bf73c7UL, 0x3ab47dceUL, 0x2da96fd5UL, 0x20a261dcUL,
-+0x6df6ad76UL, 0x60fda37fUL, 0x77e0b164UL, 0x7aebbf6dUL, 0x59da9552UL, 0x54d19b5bUL, 0x43cc8940UL, 0x4ec78749UL,
-+0x05aedd3eUL, 0x08a5d337UL, 0x1fb8c12cUL, 0x12b3cf25UL, 0x3182e51aUL, 0x3c89eb13UL, 0x2b94f908UL, 0x269ff701UL,
-+0xbd464de6UL, 0xb04d43efUL, 0xa75051f4UL, 0xaa5b5ffdUL, 0x896a75c2UL, 0x84617bcbUL, 0x937c69d0UL, 0x9e7767d9UL,
-+0xd51e3daeUL, 0xd81533a7UL, 0xcf0821bcUL, 0xc2032fb5UL, 0xe132058aUL, 0xec390b83UL, 0xfb241998UL, 0xf62f1791UL,
-+0xd68d764dUL, 0xdb867844UL, 0xcc9b6a5fUL, 0xc1906456UL, 0xe2a14e69UL, 0xefaa4060UL, 0xf8b7527bUL, 0xf5bc5c72UL,
-+0xbed50605UL, 0xb3de080cUL, 0xa4c31a17UL, 0xa9c8141eUL, 0x8af93e21UL, 0x87f23028UL, 0x90ef2233UL, 0x9de42c3aUL,
-+0x063d96ddUL, 0x0b3698d4UL, 0x1c2b8acfUL, 0x112084c6UL, 0x3211aef9UL, 0x3f1aa0f0UL, 0x2807b2ebUL, 0x250cbce2UL,
-+0x6e65e695UL, 0x636ee89cUL, 0x7473fa87UL, 0x7978f48eUL, 0x5a49deb1UL, 0x5742d0b8UL, 0x405fc2a3UL, 0x4d54ccaaUL,
-+0xdaf741ecUL, 0xd7fc4fe5UL, 0xc0e15dfeUL, 0xcdea53f7UL, 0xeedb79c8UL, 0xe3d077c1UL, 0xf4cd65daUL, 0xf9c66bd3UL,
-+0xb2af31a4UL, 0xbfa43fadUL, 0xa8b92db6UL, 0xa5b223bfUL, 0x86830980UL, 0x8b880789UL, 0x9c951592UL, 0x919e1b9bUL,
-+0x0a47a17cUL, 0x074caf75UL, 0x1051bd6eUL, 0x1d5ab367UL, 0x3e6b9958UL, 0x33609751UL, 0x247d854aUL, 0x29768b43UL,
-+0x621fd134UL, 0x6f14df3dUL, 0x7809cd26UL, 0x7502c32fUL, 0x5633e910UL, 0x5b38e719UL, 0x4c25f502UL, 0x412efb0bUL,
-+0x618c9ad7UL, 0x6c8794deUL, 0x7b9a86c5UL, 0x769188ccUL, 0x55a0a2f3UL, 0x58abacfaUL, 0x4fb6bee1UL, 0x42bdb0e8UL,
-+0x09d4ea9fUL, 0x04dfe496UL, 0x13c2f68dUL, 0x1ec9f884UL, 0x3df8d2bbUL, 0x30f3dcb2UL, 0x27eecea9UL, 0x2ae5c0a0UL,
-+0xb13c7a47UL, 0xbc37744eUL, 0xab2a6655UL, 0xa621685cUL, 0x85104263UL, 0x881b4c6aUL, 0x9f065e71UL, 0x920d5078UL,
-+0xd9640a0fUL, 0xd46f0406UL, 0xc372161dUL, 0xce791814UL, 0xed48322bUL, 0xe0433c22UL, 0xf75e2e39UL, 0xfa552030UL,
-+0xb701ec9aUL, 0xba0ae293UL, 0xad17f088UL, 0xa01cfe81UL, 0x832dd4beUL, 0x8e26dab7UL, 0x993bc8acUL, 0x9430c6a5UL,
-+0xdf599cd2UL, 0xd25292dbUL, 0xc54f80c0UL, 0xc8448ec9UL, 0xeb75a4f6UL, 0xe67eaaffUL, 0xf163b8e4UL, 0xfc68b6edUL,
-+0x67b10c0aUL, 0x6aba0203UL, 0x7da71018UL, 0x70ac1e11UL, 0x539d342eUL, 0x5e963a27UL, 0x498b283cUL, 0x44802635UL,
-+0x0fe97c42UL, 0x02e2724bUL, 0x15ff6050UL, 0x18f46e59UL, 0x3bc54466UL, 0x36ce4a6fUL, 0x21d35874UL, 0x2cd8567dUL,
-+0x0c7a37a1UL, 0x017139a8UL, 0x166c2bb3UL, 0x1b6725baUL, 0x38560f85UL, 0x355d018cUL, 0x22401397UL, 0x2f4b1d9eUL,
-+0x642247e9UL, 0x692949e0UL, 0x7e345bfbUL, 0x733f55f2UL, 0x500e7fcdUL, 0x5d0571c4UL, 0x4a1863dfUL, 0x47136dd6UL,
-+0xdccad731UL, 0xd1c1d938UL, 0xc6dccb23UL, 0xcbd7c52aUL, 0xe8e6ef15UL, 0xe5ede11cUL, 0xf2f0f307UL, 0xfffbfd0eUL,
-+0xb492a779UL, 0xb999a970UL, 0xae84bb6bUL, 0xa38fb562UL, 0x80be9f5dUL, 0x8db59154UL, 0x9aa8834fUL, 0x97a38d46UL
-+};
-+
-+static const ulong32 Tks3[] = {
-+0x00000000UL, 0x090d0b0eUL, 0x121a161cUL, 0x1b171d12UL, 0x24342c38UL, 0x2d392736UL, 0x362e3a24UL, 0x3f23312aUL,
-+0x48685870UL, 0x4165537eUL, 0x5a724e6cUL, 0x537f4562UL, 0x6c5c7448UL, 0x65517f46UL, 0x7e466254UL, 0x774b695aUL,
-+0x90d0b0e0UL, 0x99ddbbeeUL, 0x82caa6fcUL, 0x8bc7adf2UL, 0xb4e49cd8UL, 0xbde997d6UL, 0xa6fe8ac4UL, 0xaff381caUL,
-+0xd8b8e890UL, 0xd1b5e39eUL, 0xcaa2fe8cUL, 0xc3aff582UL, 0xfc8cc4a8UL, 0xf581cfa6UL, 0xee96d2b4UL, 0xe79bd9baUL,
-+0x3bbb7bdbUL, 0x32b670d5UL, 0x29a16dc7UL, 0x20ac66c9UL, 0x1f8f57e3UL, 0x16825cedUL, 0x0d9541ffUL, 0x04984af1UL,
-+0x73d323abUL, 0x7ade28a5UL, 0x61c935b7UL, 0x68c43eb9UL, 0x57e70f93UL, 0x5eea049dUL, 0x45fd198fUL, 0x4cf01281UL,
-+0xab6bcb3bUL, 0xa266c035UL, 0xb971dd27UL, 0xb07cd629UL, 0x8f5fe703UL, 0x8652ec0dUL, 0x9d45f11fUL, 0x9448fa11UL,
-+0xe303934bUL, 0xea0e9845UL, 0xf1198557UL, 0xf8148e59UL, 0xc737bf73UL, 0xce3ab47dUL, 0xd52da96fUL, 0xdc20a261UL,
-+0x766df6adUL, 0x7f60fda3UL, 0x6477e0b1UL, 0x6d7aebbfUL, 0x5259da95UL, 0x5b54d19bUL, 0x4043cc89UL, 0x494ec787UL,
-+0x3e05aeddUL, 0x3708a5d3UL, 0x2c1fb8c1UL, 0x2512b3cfUL, 0x1a3182e5UL, 0x133c89ebUL, 0x082b94f9UL, 0x01269ff7UL,
-+0xe6bd464dUL, 0xefb04d43UL, 0xf4a75051UL, 0xfdaa5b5fUL, 0xc2896a75UL, 0xcb84617bUL, 0xd0937c69UL, 0xd99e7767UL,
-+0xaed51e3dUL, 0xa7d81533UL, 0xbccf0821UL, 0xb5c2032fUL, 0x8ae13205UL, 0x83ec390bUL, 0x98fb2419UL, 0x91f62f17UL,
-+0x4dd68d76UL, 0x44db8678UL, 0x5fcc9b6aUL, 0x56c19064UL, 0x69e2a14eUL, 0x60efaa40UL, 0x7bf8b752UL, 0x72f5bc5cUL,
-+0x05bed506UL, 0x0cb3de08UL, 0x17a4c31aUL, 0x1ea9c814UL, 0x218af93eUL, 0x2887f230UL, 0x3390ef22UL, 0x3a9de42cUL,
-+0xdd063d96UL, 0xd40b3698UL, 0xcf1c2b8aUL, 0xc6112084UL, 0xf93211aeUL, 0xf03f1aa0UL, 0xeb2807b2UL, 0xe2250cbcUL,
-+0x956e65e6UL, 0x9c636ee8UL, 0x877473faUL, 0x8e7978f4UL, 0xb15a49deUL, 0xb85742d0UL, 0xa3405fc2UL, 0xaa4d54ccUL,
-+0xecdaf741UL, 0xe5d7fc4fUL, 0xfec0e15dUL, 0xf7cdea53UL, 0xc8eedb79UL, 0xc1e3d077UL, 0xdaf4cd65UL, 0xd3f9c66bUL,
-+0xa4b2af31UL, 0xadbfa43fUL, 0xb6a8b92dUL, 0xbfa5b223UL, 0x80868309UL, 0x898b8807UL, 0x929c9515UL, 0x9b919e1bUL,
-+0x7c0a47a1UL, 0x75074cafUL, 0x6e1051bdUL, 0x671d5ab3UL, 0x583e6b99UL, 0x51336097UL, 0x4a247d85UL, 0x4329768bUL,
-+0x34621fd1UL, 0x3d6f14dfUL, 0x267809cdUL, 0x2f7502c3UL, 0x105633e9UL, 0x195b38e7UL, 0x024c25f5UL, 0x0b412efbUL,
-+0xd7618c9aUL, 0xde6c8794UL, 0xc57b9a86UL, 0xcc769188UL, 0xf355a0a2UL, 0xfa58abacUL, 0xe14fb6beUL, 0xe842bdb0UL,
-+0x9f09d4eaUL, 0x9604dfe4UL, 0x8d13c2f6UL, 0x841ec9f8UL, 0xbb3df8d2UL, 0xb230f3dcUL, 0xa927eeceUL, 0xa02ae5c0UL,
-+0x47b13c7aUL, 0x4ebc3774UL, 0x55ab2a66UL, 0x5ca62168UL, 0x63851042UL, 0x6a881b4cUL, 0x719f065eUL, 0x78920d50UL,
-+0x0fd9640aUL, 0x06d46f04UL, 0x1dc37216UL, 0x14ce7918UL, 0x2bed4832UL, 0x22e0433cUL, 0x39f75e2eUL, 0x30fa5520UL,
-+0x9ab701ecUL, 0x93ba0ae2UL, 0x88ad17f0UL, 0x81a01cfeUL, 0xbe832dd4UL, 0xb78e26daUL, 0xac993bc8UL, 0xa59430c6UL,
-+0xd2df599cUL, 0xdbd25292UL, 0xc0c54f80UL, 0xc9c8448eUL, 0xf6eb75a4UL, 0xffe67eaaUL, 0xe4f163b8UL, 0xedfc68b6UL,
-+0x0a67b10cUL, 0x036aba02UL, 0x187da710UL, 0x1170ac1eUL, 0x2e539d34UL, 0x275e963aUL, 0x3c498b28UL, 0x35448026UL,
-+0x420fe97cUL, 0x4b02e272UL, 0x5015ff60UL, 0x5918f46eUL, 0x663bc544UL, 0x6f36ce4aUL, 0x7421d358UL, 0x7d2cd856UL,
-+0xa10c7a37UL, 0xa8017139UL, 0xb3166c2bUL, 0xba1b6725UL, 0x8538560fUL, 0x8c355d01UL, 0x97224013UL, 0x9e2f4b1dUL,
-+0xe9642247UL, 0xe0692949UL, 0xfb7e345bUL, 0xf2733f55UL, 0xcd500e7fUL, 0xc45d0571UL, 0xdf4a1863UL, 0xd647136dUL,
-+0x31dccad7UL, 0x38d1c1d9UL, 0x23c6dccbUL, 0x2acbd7c5UL, 0x15e8e6efUL, 0x1ce5ede1UL, 0x07f2f0f3UL, 0x0efffbfdUL,
-+0x79b492a7UL, 0x70b999a9UL, 0x6bae84bbUL, 0x62a38fb5UL, 0x5d80be9fUL, 0x548db591UL, 0x4f9aa883UL, 0x4697a38dUL
-+};
-+
-+#endif /* SMALL CODE */
-+
-+static const ulong32 rcon[] = {
-+ 0x01000000UL, 0x02000000UL, 0x04000000UL, 0x08000000UL,
-+ 0x10000000UL, 0x20000000UL, 0x40000000UL, 0x80000000UL,
-+ 0x1B000000UL, 0x36000000UL, /* for 128-bit blocks, AES never uses more than 10 rcon values */
-+};
-+
-+
-+static int aes_setup(const unsigned char *key, int keylen, int rounds, aes_CBC *skey);
-+static void aes_ecb_encrypt(const unsigned char *pt, unsigned char *ct, aes_CBC *skey);
-+static void aes_ecb_decrypt(const unsigned char *ct, unsigned char *pt, aes_CBC *skey);
-+
-+#ifdef CLEAN_STACK
-+static void _aes_ecb_decrypt(const unsigned char *ct, unsigned char *pt, aes_CBC *skey);
-+static void _aes_ecb_encrypt(const unsigned char *pt, unsigned char *ct, aes_CBC *skey);
-+#endif
-+
-+int matrixAesInit(sslCipherContext_t *ctx, unsigned char *IV, unsigned char *key, int keylen)
-+{
-+ int x, err;
-+
-+ if (IV == NULL || key == NULL || ctx == NULL) {
-+ return -1;
-+ }
-+/*
-+ setup cipher
-+ */
-+ if ((err = aes_setup(key, keylen, 0, &ctx->aes)) != CRYPT_OK) {
-+ return -1;
-+ }
-+/*
-+ copy IV
-+ */
-+ ctx->aes.blocklen = 16;
-+ for (x = 0; x < ctx->aes.blocklen; x++) {
-+ ctx->aes.IV[x] = IV[x];
-+ }
-+ return 0;
-+}
-+
-+int matrixAesEncrypt(sslCipherContext_t *ctx, unsigned char *pt, unsigned char *ct, int len)
-+{
-+ int x, i;
-+ unsigned char tmp[MAXBLOCKSIZE];
-+
-+ if (pt == NULL || ct == NULL || ctx == NULL || (len & 0x7) != 0) {
-+ matrixStrDebugMsg("Bad parameters to matrixAesEncrypt\n", NULL);
-+ return -1;
-+ }
-+
-+/*
-+ is blocklen valid?
-+ */
-+ if (ctx->aes.blocklen < 0 || ctx->aes.blocklen >
-+ (int)sizeof(ctx->aes.IV)) {
-+ return -1;
-+ }
-+
-+ for (i = 0; i < len; i += ctx->aes.blocklen) {
-+/*
-+ xor IV against plaintext
-+ */
-+ for (x = 0; x < ctx->aes.blocklen; x++) {
-+ tmp[x] = pt[x] ^ ctx->aes.IV[x];
-+ }
-+/*
-+ encrypt
-+ */
-+ aes_ecb_encrypt(tmp, ct, &ctx->aes);
-+
-+/*
-+ store IV [ciphertext] for a future block
-+ */
-+ for (x = 0; x < ctx->aes.blocklen; x++) {
-+ ctx->aes.IV[x] = ct[x];
-+ }
-+ ct += ctx->aes.blocklen;
-+ pt += ctx->aes.blocklen;
-+ }
-+
-+#ifdef CLEAN_STACK
-+ zeromem(tmp, sizeof(tmp));
-+#endif
-+ return len;
-+}
-+
-+int matrixAesDecrypt(sslCipherContext_t *ctx, unsigned char *ct, unsigned char *pt, int len)
-+{
-+ int x, i;
-+ unsigned char tmp[MAXBLOCKSIZE], tmp2[MAXBLOCKSIZE];
-+
-+ if (pt == NULL || ct == NULL || ctx == NULL || (len & 0x7) != 0) {
-+ matrixStrDebugMsg("Bad parameters to matrixAesDecrypt\n", NULL);
-+ return -1;
-+ }
-+
-+/*
-+ is blocklen valid?
-+ */
-+ if (ctx->aes.blocklen < 0 || ctx->aes.blocklen >
-+ (int)sizeof(ctx->aes.IV)) {
-+ return -1;
-+ }
-+ for (i = 0; i < len; i += ctx->aes.blocklen) {
-+/*
-+ decrypt the block from ct into tmp
-+ */
-+ aes_ecb_decrypt(ct, tmp, &ctx->aes);
-+/*
-+ xor IV against the plaintext of the previous step
-+ */
-+ for (x = 0; x < ctx->aes.blocklen; x++) {
-+/*
-+ copy CT in case ct == pt
-+ */
-+ tmp2[x] = ct[x];
-+/*
-+ actually decrypt the byte
-+ */
-+ pt[x] = tmp[x] ^ ctx->aes.IV[x];
-+ }
-+/*
-+ replace IV with this current ciphertext
-+ */
-+ for (x = 0; x < ctx->aes.blocklen; x++) {
-+ ctx->aes.IV[x] = tmp2[x];
-+ }
-+ ct += ctx->aes.blocklen;
-+ pt += ctx->aes.blocklen;
-+ }
-+#ifdef CLEAN_STACK
-+ zeromem(tmp, sizeof(tmp));
-+ zeromem(tmp2, sizeof(tmp2));
-+#endif
-+ return len;
-+}
-+
-+int aes_setup(const unsigned char *key, int keylen, int rounds, aes_CBC *skey)
-+{
-+ int i, j;
-+ ulong32 temp, *rk, *rrk;
-+
-+ if (key == NULL || skey == NULL) {
-+ return -1;
-+ }
-+
-+ if (keylen != 16 && keylen != 24 && keylen != 32) {
-+ return CRYPT_INVALID_KEYSIZE;
-+ }
-+
-+ if (rounds != 0 && rounds != (10 + ((keylen/8)-2)*2)) {
-+ return CRYPT_INVALID_ROUNDS;
-+ }
-+
-+ skey->key.Nr = 10 + ((keylen/8)-2)*2;
-+
-+/*
-+ setup the forward key
-+ */
-+ i = 0;
-+ rk = skey->key.eK;
-+ LOAD32H(rk[0], key );
-+ LOAD32H(rk[1], key + 4);
-+ LOAD32H(rk[2], key + 8);
-+ LOAD32H(rk[3], key + 12);
-+ if (keylen == 16) {
-+ j = 44;
-+ for (;;) {
-+ temp = rk[3];
-+ rk[4] = rk[0] ^
-+ (Te4_3[byte(temp, 2)]) ^
-+ (Te4_2[byte(temp, 1)]) ^
-+ (Te4_1[byte(temp, 0)]) ^
-+ (Te4_0[byte(temp, 3)]) ^
-+ rcon[i];
-+ rk[5] = rk[1] ^ rk[4];
-+ rk[6] = rk[2] ^ rk[5];
-+ rk[7] = rk[3] ^ rk[6];
-+ if (++i == 10) {
-+ break;
-+ }
-+ rk += 4;
-+ }
-+ } else if (keylen == 24) {
-+ j = 52;
-+ LOAD32H(rk[4], key + 16);
-+ LOAD32H(rk[5], key + 20);
-+ for (;;) {
-+ #ifdef _MSC_VER
-+ temp = skey->key.eK[rk - skey->key.eK + 5];
-+ #else
-+ temp = rk[5];
-+ #endif /* _MSC_VER */
-+ rk[ 6] = rk[ 0] ^
-+ (Te4_3[byte(temp, 2)]) ^
-+ (Te4_2[byte(temp, 1)]) ^
-+ (Te4_1[byte(temp, 0)]) ^
-+ (Te4_0[byte(temp, 3)]) ^
-+ rcon[i];
-+ rk[ 7] = rk[ 1] ^ rk[ 6];
-+ rk[ 8] = rk[ 2] ^ rk[ 7];
-+ rk[ 9] = rk[ 3] ^ rk[ 8];
-+ if (++i == 8) {
-+ break;
-+ }
-+ rk[10] = rk[ 4] ^ rk[ 9];
-+ rk[11] = rk[ 5] ^ rk[10];
-+ rk += 6;
-+ }
-+ } else if (keylen == 32) {
-+ j = 60;
-+ LOAD32H(rk[4], key + 16);
-+ LOAD32H(rk[5], key + 20);
-+ LOAD32H(rk[6], key + 24);
-+ LOAD32H(rk[7], key + 28);
-+ for (;;) {
-+ #ifdef _MSC_VER
-+ temp = skey->key.eK[rk - skey->key.eK + 7];
-+ #else
-+ temp = rk[7];
-+ #endif /* _MSC_VER */
-+ rk[ 8] = rk[ 0] ^
-+ (Te4_3[byte(temp, 2)]) ^
-+ (Te4_2[byte(temp, 1)]) ^
-+ (Te4_1[byte(temp, 0)]) ^
-+ (Te4_0[byte(temp, 3)]) ^
-+ rcon[i];
-+ rk[ 9] = rk[ 1] ^ rk[ 8];
-+ rk[10] = rk[ 2] ^ rk[ 9];
-+ rk[11] = rk[ 3] ^ rk[10];
-+ if (++i == 7) {
-+ break;
-+ }
-+ temp = rk[11];
-+ rk[12] = rk[ 4] ^
-+ (Te4_3[byte(temp, 3)]) ^
-+ (Te4_2[byte(temp, 2)]) ^
-+ (Te4_1[byte(temp, 1)]) ^
-+ (Te4_0[byte(temp, 0)]);
-+ rk[13] = rk[ 5] ^ rk[12];
-+ rk[14] = rk[ 6] ^ rk[13];
-+ rk[15] = rk[ 7] ^ rk[14];
-+ rk += 8;
-+ }
-+ } else {
-+/*
-+ this can't happen
-+ */
-+ j = 4;
-+ }
-+
-+/*
-+ setup the inverse key now
-+ */
-+ rk = skey->key.dK;
-+ rrk = skey->key.eK + j - 4;
-+
-+/*
-+ apply the inverse MixColumn transform to all round keys but the first and the last:
-+ */
-+ /* copy first */
-+ *rk++ = *rrk++;
-+ *rk++ = *rrk++;
-+ *rk++ = *rrk++;
-+ *rk = *rrk;
-+ rk -= 3; rrk -= 3;
-+
-+ for (i = 1; i < skey->key.Nr; i++) {
-+ rrk -= 4;
-+ rk += 4;
-+#ifdef SMALL_CODE
-+ temp = rrk[0];
-+ rk[0] =
-+ Td0(255 & Te4[byte(temp, 3)]) ^
-+ Td1(255 & Te4[byte(temp, 2)]) ^
-+ Td2(255 & Te4[byte(temp, 1)]) ^
-+ Td3(255 & Te4[byte(temp, 0)]);
-+ temp = rrk[1];
-+ rk[1] =
-+ Td0(255 & Te4[byte(temp, 3)]) ^
-+ Td1(255 & Te4[byte(temp, 2)]) ^
-+ Td2(255 & Te4[byte(temp, 1)]) ^
-+ Td3(255 & Te4[byte(temp, 0)]);
-+ temp = rrk[2];
-+ rk[2] =
-+ Td0(255 & Te4[byte(temp, 3)]) ^
-+ Td1(255 & Te4[byte(temp, 2)]) ^
-+ Td2(255 & Te4[byte(temp, 1)]) ^
-+ Td3(255 & Te4[byte(temp, 0)]);
-+ temp = rrk[3];
-+ rk[3] =
-+ Td0(255 & Te4[byte(temp, 3)]) ^
-+ Td1(255 & Te4[byte(temp, 2)]) ^
-+ Td2(255 & Te4[byte(temp, 1)]) ^
-+ Td3(255 & Te4[byte(temp, 0)]);
-+#else /* SMALL CODE */
-+ temp = rrk[0];
-+ rk[0] =
-+ Tks0[byte(temp, 3)] ^
-+ Tks1[byte(temp, 2)] ^
-+ Tks2[byte(temp, 1)] ^
-+ Tks3[byte(temp, 0)];
-+ temp = rrk[1];
-+ rk[1] =
-+ Tks0[byte(temp, 3)] ^
-+ Tks1[byte(temp, 2)] ^
-+ Tks2[byte(temp, 1)] ^
-+ Tks3[byte(temp, 0)];
-+ temp = rrk[2];
-+ rk[2] =
-+ Tks0[byte(temp, 3)] ^
-+ Tks1[byte(temp, 2)] ^
-+ Tks2[byte(temp, 1)] ^
-+ Tks3[byte(temp, 0)];
-+ temp = rrk[3];
-+ rk[3] =
-+ Tks0[byte(temp, 3)] ^
-+ Tks1[byte(temp, 2)] ^
-+ Tks2[byte(temp, 1)] ^
-+ Tks3[byte(temp, 0)];
-+#endif /* SMALL CODE */
-+ }
-+
-+ /* copy last */
-+ rrk -= 4;
-+ rk += 4;
-+ *rk++ = *rrk++;
-+ *rk++ = *rrk++;
-+ *rk++ = *rrk++;
-+ *rk = *rrk;
-+
-+ return CRYPT_OK;
-+}
-+
-+#ifdef CLEAN_STACK
-+void aes_ecb_encrypt(const unsigned char *pt, unsigned char *ct, aes_CBC *skey)
-+{
-+ _aes_ecb_encrypt(pt, ct, skey);
-+ burn_stack(sizeof(unsigned long)*8 + sizeof(unsigned long*) + sizeof(int)*2);
-+}
-+#endif /* CLEAN_STACK */
-+
-+#ifdef CLEAN_STACK
-+static void _aes_ecb_encrypt(const unsigned char *pt, unsigned char *ct, aes_CBC *skey)
-+#else
-+void aes_ecb_encrypt(const unsigned char *pt, unsigned char *ct, aes_CBC *skey)
-+#endif /* CLEAN_STACK */
-+{
-+ ulong32 s0, s1, s2, s3, t0, t1, t2, t3, *rk;
-+ int Nr, r;
-+
-+ if (pt == NULL || ct == NULL || skey == NULL) {
-+ return;
-+ }
-+
-+ Nr = skey->key.Nr;
-+ rk = skey->key.eK;
-+
-+/*
-+ map byte array block to cipher state
-+ and add initial round key:
-+ */
-+ LOAD32H(s0, pt ); s0 ^= rk[0];
-+ LOAD32H(s1, pt + 4); s1 ^= rk[1];
-+ LOAD32H(s2, pt + 8); s2 ^= rk[2];
-+ LOAD32H(s3, pt + 12); s3 ^= rk[3];
-+
-+/*
-+ Nr - 1 full rounds:
-+ */
-+ r = Nr >> 1;
-+ for (;;) {
-+
-+ t0 =
-+ Te0(byte(s0, 3)) ^
-+ Te1(byte(s1, 2)) ^
-+ Te2(byte(s2, 1)) ^
-+ Te3(byte(s3, 0)) ^
-+ rk[4];
-+ t1 =
-+ Te0(byte(s1, 3)) ^
-+ Te1(byte(s2, 2)) ^
-+ Te2(byte(s3, 1)) ^
-+ Te3(byte(s0, 0)) ^
-+ rk[5];
-+ t2 =
-+ Te0(byte(s2, 3)) ^
-+ Te1(byte(s3, 2)) ^
-+ Te2(byte(s0, 1)) ^
-+ Te3(byte(s1, 0)) ^
-+ rk[6];
-+ t3 =
-+ Te0(byte(s3, 3)) ^
-+ Te1(byte(s0, 2)) ^
-+ Te2(byte(s1, 1)) ^
-+ Te3(byte(s2, 0)) ^
-+ rk[7];
-+
-+ rk += 8;
-+ if (--r == 0) {
-+ break;
-+ }
-+
-+ s0 =
-+ Te0(byte(t0, 3)) ^
-+ Te1(byte(t1, 2)) ^
-+ Te2(byte(t2, 1)) ^
-+ Te3(byte(t3, 0)) ^
-+ rk[0];
-+ s1 =
-+ Te0(byte(t1, 3)) ^
-+ Te1(byte(t2, 2)) ^
-+ Te2(byte(t3, 1)) ^
-+ Te3(byte(t0, 0)) ^
-+ rk[1];
-+ s2 =
-+ Te0(byte(t2, 3)) ^
-+ Te1(byte(t3, 2)) ^
-+ Te2(byte(t0, 1)) ^
-+ Te3(byte(t1, 0)) ^
-+ rk[2];
-+ s3 =
-+ Te0(byte(t3, 3)) ^
-+ Te1(byte(t0, 2)) ^
-+ Te2(byte(t1, 1)) ^
-+ Te3(byte(t2, 0)) ^
-+ rk[3];
-+ }
-+/*
-+ apply last round and map cipher state to byte array block:
-+ */
-+ s0 =
-+ (Te4_3[byte(t0, 3)]) ^
-+ (Te4_2[byte(t1, 2)]) ^
-+ (Te4_1[byte(t2, 1)]) ^
-+ (Te4_0[byte(t3, 0)]) ^
-+ rk[0];
-+ STORE32H(s0, ct);
-+ s1 =
-+ (Te4_3[byte(t1, 3)]) ^
-+ (Te4_2[byte(t2, 2)]) ^
-+ (Te4_1[byte(t3, 1)]) ^
-+ (Te4_0[byte(t0, 0)]) ^
-+ rk[1];
-+ STORE32H(s1, ct+4);
-+ s2 =
-+ (Te4_3[byte(t2, 3)]) ^
-+ (Te4_2[byte(t3, 2)]) ^
-+ (Te4_1[byte(t0, 1)]) ^
-+ (Te4_0[byte(t1, 0)]) ^
-+ rk[2];
-+ STORE32H(s2, ct+8);
-+ s3 =
-+ (Te4_3[byte(t3, 3)]) ^
-+ (Te4_2[byte(t0, 2)]) ^
-+ (Te4_1[byte(t1, 1)]) ^
-+ (Te4_0[byte(t2, 0)]) ^
-+ rk[3];
-+ STORE32H(s3, ct+12);
-+}
-+
-+#ifdef CLEAN_STACK
-+void aes_ecb_decrypt(const unsigned char *pt, unsigned char *ct, aes_CBC *skey)
-+{
-+ _aes_ecb_decrypt(pt, ct, skey);
-+ burn_stack(sizeof(unsigned long)*8 + sizeof(unsigned long*) + sizeof(int)*2);
-+}
-+#endif /* CLEAN_STACK */
-+
-+#ifdef CLEAN_STACK
-+static void _aes_ecb_decrypt(const unsigned char *ct, unsigned char *pt, aes_CBC *skey)
-+#else
-+void aes_ecb_decrypt(const unsigned char *ct, unsigned char *pt, aes_CBC *skey)
-+#endif /* CLEAN_STACK */
-+{
-+ ulong32 s0, s1, s2, s3, t0, t1, t2, t3, *rk;
-+ int Nr, r;
-+
-+ if (pt == NULL || ct == NULL || skey == NULL) {
-+ return;
-+ }
-+
-+ Nr = skey->key.Nr;
-+ rk = skey->key.dK;
-+
-+/*
-+ map byte array block to cipher state and add initial round key:
-+ */
-+ LOAD32H(s0, ct ); s0 ^= rk[0];
-+ LOAD32H(s1, ct + 4); s1 ^= rk[1];
-+ LOAD32H(s2, ct + 8); s2 ^= rk[2];
-+ LOAD32H(s3, ct + 12); s3 ^= rk[3];
-+
-+/*
-+ Nr - 1 full rounds:
-+ */
-+ r = Nr >> 1;
-+ for (;;) {
-+
-+ t0 =
-+ Td0(byte(s0, 3)) ^
-+ Td1(byte(s3, 2)) ^
-+ Td2(byte(s2, 1)) ^
-+ Td3(byte(s1, 0)) ^
-+ rk[4];
-+ t1 =
-+ Td0(byte(s1, 3)) ^
-+ Td1(byte(s0, 2)) ^
-+ Td2(byte(s3, 1)) ^
-+ Td3(byte(s2, 0)) ^
-+ rk[5];
-+ t2 =
-+ Td0(byte(s2, 3)) ^
-+ Td1(byte(s1, 2)) ^
-+ Td2(byte(s0, 1)) ^
-+ Td3(byte(s3, 0)) ^
-+ rk[6];
-+ t3 =
-+ Td0(byte(s3, 3)) ^
-+ Td1(byte(s2, 2)) ^
-+ Td2(byte(s1, 1)) ^
-+ Td3(byte(s0, 0)) ^
-+ rk[7];
-+
-+ rk += 8;
-+ if (--r == 0) {
-+ break;
-+ }
-+
-+ s0 =
-+ Td0(byte(t0, 3)) ^
-+ Td1(byte(t3, 2)) ^
-+ Td2(byte(t2, 1)) ^
-+ Td3(byte(t1, 0)) ^
-+ rk[0];
-+ s1 =
-+ Td0(byte(t1, 3)) ^
-+ Td1(byte(t0, 2)) ^
-+ Td2(byte(t3, 1)) ^
-+ Td3(byte(t2, 0)) ^
-+ rk[1];
-+ s2 =
-+ Td0(byte(t2, 3)) ^
-+ Td1(byte(t1, 2)) ^
-+ Td2(byte(t0, 1)) ^
-+ Td3(byte(t3, 0)) ^
-+ rk[2];
-+ s3 =
-+ Td0(byte(t3, 3)) ^
-+ Td1(byte(t2, 2)) ^
-+ Td2(byte(t1, 1)) ^
-+ Td3(byte(t0, 0)) ^
-+ rk[3];
-+ }
-+
-+/*
-+ apply last round and map cipher state to byte array block:
-+ */
-+ s0 =
-+ (Td4[byte(t0, 3)] & 0xff000000) ^
-+ (Td4[byte(t3, 2)] & 0x00ff0000) ^
-+ (Td4[byte(t2, 1)] & 0x0000ff00) ^
-+ (Td4[byte(t1, 0)] & 0x000000ff) ^
-+ rk[0];
-+ STORE32H(s0, pt);
-+ s1 =
-+ (Td4[byte(t1, 3)] & 0xff000000) ^
-+ (Td4[byte(t0, 2)] & 0x00ff0000) ^
-+ (Td4[byte(t3, 1)] & 0x0000ff00) ^
-+ (Td4[byte(t2, 0)] & 0x000000ff) ^
-+ rk[1];
-+ STORE32H(s1, pt+4);
-+ s2 =
-+ (Td4[byte(t2, 3)] & 0xff000000) ^
-+ (Td4[byte(t1, 2)] & 0x00ff0000) ^
-+ (Td4[byte(t0, 1)] & 0x0000ff00) ^
-+ (Td4[byte(t3, 0)] & 0x000000ff) ^
-+ rk[2];
-+ STORE32H(s2, pt+8);
-+ s3 =
-+ (Td4[byte(t3, 3)] & 0xff000000) ^
-+ (Td4[byte(t2, 2)] & 0x00ff0000) ^
-+ (Td4[byte(t1, 1)] & 0x0000ff00) ^
-+ (Td4[byte(t0, 0)] & 0x000000ff) ^
-+ rk[3];
-+ STORE32H(s3, pt+12);
-+}
-+
-+#ifdef CLEAN_STACK
-+void aes(const unsigned char *ct, unsigned char *pt, aes_CBC *skey)
-+{
-+ _aes_ecb_decrypt(ct, pt, skey);
-+ burn_stack(sizeof(unsigned long)*8 + sizeof(unsigned long*) + sizeof(int)*2);
-+}
-+#endif /* CLEAN_STACK */
-+
-+
-+#ifdef PEERSEC_TEST
-+
-+int matrixAesTest()
-+{
-+ int err;
-+ static const struct {
-+ int keylen;
-+ unsigned char key[32], pt[16], ct[16];
-+ } tests[] = {
-+ { 16,
-+ { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
-+ { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
-+ 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
-+ { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30,
-+ 0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a }
-+ }, {
-+ 24,
-+ { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 },
-+ { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
-+ 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
-+ { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0,
-+ 0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 }
-+ }, {
-+ 32,
-+ { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
-+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
-+ { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
-+ 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
-+ { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf,
-+ 0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 }
-+ }
-+ };
-+
-+ aes_CBC key;
-+ unsigned char tmp[2][16];
-+ int i, y;
-+
-+ for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) {
-+ zeromem(&key, sizeof(key));
-+ if ((err = aes_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) {
-+ return err;
-+ }
-+
-+ aes_ecb_encrypt(tests[i].pt, tmp[0], &key);
-+ aes_ecb_decrypt(tmp[0], tmp[1], &key);
-+ if (memcmp(tmp[0], tests[i].ct, 16) || memcmp(tmp[1], tests[i].pt, 16)) {
-+#if 0
-+ printf("\n\nTest %d failed\n", i);
-+ if (memcmp(tmp[0], tests[i].ct, 16)) {
-+ printf("CT: ");
-+ for (i = 0; i < 16; i++) {
-+ printf("%02x ", tmp[0][i]);
-+ }
-+ printf("\n");
-+ } else {
-+ printf("PT: ");
-+ for (i = 0; i < 16; i++) {
-+ printf("%02x ", tmp[1][i]);
-+ }
-+ printf("\n");
-+ }
-+#endif /* 0 */
-+ return CRYPT_FAIL_TESTVECTOR;
-+ }
-+
-+/*
-+ now see if we can encrypt all zero bytes 1000 times,
-+ decrypt and come back where we started
-+ */
-+ for (y = 0; y < 16; y++) tmp[0][y] = 0;
-+ for (y = 0; y < 1000; y++) aes_ecb_encrypt(tmp[0], tmp[0], &key);
-+ for (y = 0; y < 1000; y++) aes_ecb_decrypt(tmp[0], tmp[0], &key);
-+ for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR;
-+ }
-+ return CRYPT_OK;
-+}
-+#endif /* PEERSEC_TEST */
-+
-+#endif /* USE_AES */
-+/******************************************************************************/
-diff -urN matrixssl.old/src/crypto/peersec/md5.c matrixssl/src/crypto/peersec/md5.c
---- matrixssl.old/src/crypto/peersec/md5.c 2005-02-23 22:43:10.000000000 +0100
-+++ matrixssl/src/crypto/peersec/md5.c 2005-03-06 01:32:33.000000000 +0100
-@@ -334,7 +334,7 @@
- #ifdef CLEAN_STACK
- psZeromem(md, sizeof(hash_state));
- #endif /* CLEAN_STACK */
-- return 16;
-+ return SSL_MD5_HASH_SIZE;
- }
-
- #ifdef PEERSEC_TEST
-diff -urN matrixssl.old/src/crypto/peersec/pscrypto.h matrixssl/src/crypto/peersec/pscrypto.h
---- matrixssl.old/src/crypto/peersec/pscrypto.h 2005-02-23 22:43:10.000000000 +0100
-+++ matrixssl/src/crypto/peersec/pscrypto.h 2005-03-06 01:32:33.000000000 +0100
-@@ -40,7 +40,7 @@
- PeerSec crypto-specific defines.
- */
- #define SMALL_CODE
--#define CLEAN_STACK
-+#undef CLEAN_STACK
- /*
- If Native 64 bit integers are not supported, we must set the 16 bit flag
- to produce 32 bit mp_words in mpi.h
-diff -urN matrixssl.old/src/crypto/peersec/sha1.c matrixssl/src/crypto/peersec/sha1.c
---- matrixssl.old/src/crypto/peersec/sha1.c 2005-02-23 22:43:10.000000000 +0100
-+++ matrixssl/src/crypto/peersec/sha1.c 2005-03-06 01:32:33.000000000 +0100
-@@ -273,7 +273,7 @@
- #ifdef CLEAN_STACK
- psZeromem(md, sizeof(hash_state));
- #endif /* CLEAN_STACK */
-- return 20;
-+ return SSL_SHA1_HASH_SIZE;
- }
-
- #ifdef PEERSEC_TEST
-diff -urN matrixssl.old/src/Makefile matrixssl/src/Makefile
---- matrixssl.old/src/Makefile 2005-02-23 22:43:10.000000000 +0100
-+++ matrixssl/src/Makefile 2005-03-06 01:39:06.000000000 +0100
-@@ -15,7 +15,14 @@
- E =
-
- LIBRARY = libmatrixssl$(SO)
--STATIC = libmatrixsslstatic$(A)
-+
-+SOVERSION_MAJ := 1
-+SOVERSION_MIN := 2
-+SOVERSION_REV := 4
-+SONAME := $(LIBRARY).$(SOVERSION_MAJ)
-+SOREAL := $(LIBRARY).$(SOVERSION_MAJ).$(SOVERSION_MIN).$(SOVERSION_REV)
-+
-++STATIC = libmatrixsslstatic$(A)
-
- OBJECTS = \
- cipherSuite$(O) \
-@@ -24,6 +31,7 @@
- sslEncode$(O) \
- sslv3$(O) \
- os/linux/linux$(O) \
-+ crypto/peersec/aes$(O) \
- crypto/peersec/arc4$(O) \
- crypto/peersec/asn1$(O) \
- crypto/peersec/base64$(O) \
-@@ -66,7 +74,7 @@
- #
- SHARED = -shared
- CFLAGS = $(DFLAGS) -DLINUX -I./ -Icrypto/peersec
--LDFLAGS = -lc -lpthread -lcrypto
-+LDFLAGS = -lc -lpthread -Wl,-soname,$(SONAME)
-
- #
- # Override variables for compilation on Mac OS X (Darwin)
-@@ -105,8 +113,9 @@
- # Build the library
- #
- $(LIBRARY): $(OBJECTS)
-- $(CC) $(SHARED) -o $@ $^ $(LDFLAGS)
-- $(STRIP) $(LIBRARY)
-+ $(CC) $(SHARED) -o $(SOREAL) $^ $(LDFLAGS)
-+ ln -sf $(SOREAL) $(SONAME)
-+ ln -sf $(SONAME) $(LIBRARY)
-
- #
- # Build the static library
-@@ -119,4 +128,4 @@
- # Clean up all generated files
- #
- clean:
-- rm -f $(LIBRARY) $(OBJECTS) $(STATIC)
-+ rm -f $(LIBRARY) $(OBJECTS) $(SONAME) $(SOREAL)
-diff -urN matrixssl.old/src/matrixSsl.c matrixssl/src/matrixSsl.c
---- matrixssl.old/src/matrixSsl.c 2005-02-23 22:43:10.000000000 +0100
-+++ matrixssl/src/matrixSsl.c 2005-03-06 01:37:41.000000000 +0100
-@@ -950,6 +950,49 @@
- sslAssert(ssl->hsPool == NULL);
- }
-
-+
-+/******************************************************************************/
-+/*
-+ Compute an MD5 digest
-+*/
-+unsigned char *matrixMd5Digest(
-+ const unsigned char *buf, unsigned long len, unsigned char *hash)
-+{
-+ sslMd5Context_t ctx;
-+ static unsigned char hashBuf[SSL_MD5_HASH_SIZE];
-+
-+ if (hash == NULL) {
-+ hash = hashBuf;
-+ }
-+
-+ matrixMd5Init(&ctx);
-+ matrixMd5Update(&ctx, buf, len);
-+ matrixMd5Final(&ctx, hash);
-+
-+ return hash;
-+}
-+
-+/******************************************************************************/
-+/*
-+ Compute an SHA1 digest
-+*/
-+unsigned char *matrixSha1Digest(
-+ const unsigned char *buf, unsigned long len, unsigned char *hash)
-+{
-+ sslSha1Context_t ctx;
-+ static unsigned char hashBuf[SSL_SHA1_HASH_SIZE];
-+
-+ if (hash == NULL) {
-+ hash = hashBuf;
-+ }
-+
-+ matrixSha1Init(&ctx);
-+ matrixSha1Update(&ctx, buf, len);
-+ matrixSha1Final(&ctx, hash);
-+
-+ return hash;
-+}
-+
- /******************************************************************************/
- /*
- Debugging APIs
diff --git a/openwrt/package/matrixssl/patches/matrixssl-typefix.patch b/openwrt/package/matrixssl/patches/matrixssl-typefix.patch
deleted file mode 100644
index 1b9b7a8d00..0000000000
--- a/openwrt/package/matrixssl/patches/matrixssl-typefix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN matrixssl.old/src/os/linux/linux.c matrixssl/src/os/linux/linux.c
---- matrixssl.old/src/os/linux/linux.c 2005-02-23 22:43:10.000000000 +0100
-+++ matrixssl/src/os/linux/linux.c 2005-03-06 01:52:51.000000000 +0100
-@@ -51,7 +51,7 @@
- static sslTime_t hiresStart; /* zero-time */
- static sslTime_t hiresFreq; /* tics per second */
- #else /* __i386__ */
--static unsigned int32 prevTicks; /* Check wrap */
-+static uint32 prevTicks; /* Check wrap */
- static sslTime_t elapsedTime; /* Last elapsed time */
- #endif
-
diff --git a/openwrt/package/matrixtunnel/Config.in b/openwrt/package/matrixtunnel/Config.in
deleted file mode 100644
index 1738ce3011..0000000000
--- a/openwrt/package/matrixtunnel/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_MATRIXTUNNEL
- prompt "matrixtunnel...................... stunnel based on matrixssl"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBMATRIXSSL
- help
- matrixtunnel is a stripped down version of stunnel
- based on matrixssl library
-
- Depends: libmatrixssl
diff --git a/openwrt/package/matrixtunnel/Makefile b/openwrt/package/matrixtunnel/Makefile
deleted file mode 100644
index ea42b1e8d6..0000000000
--- a/openwrt/package/matrixtunnel/Makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=matrixtunnel
-PKG_VERSION:=0.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=ffbbe0c50cc1863f6080aca302f7e2c8
-
-PKG_SOURCE_URL:=http://znerol.ch/files
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MATRIXTUNNEL,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/sbin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --without-libiconv-prefix \
- --without-libintl-prefix \
- --with-matrixssl-src=$(BUILD_DIR)/matrixssl \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR)/src \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_MATRIXTUNNEL):
- install -d -m0755 $(IDIR_MATRIXTUNNEL)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/matrixtunnel $(IDIR_MATRIXTUNNEL)/usr/sbin/
- $(RSTRIP) $(IDIR_MATRIXTUNNEL)
- $(IPKG_BUILD) $(IDIR_MATRIXTUNNEL) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/matrixtunnel/ipkg/matrixtunnel.control b/openwrt/package/matrixtunnel/ipkg/matrixtunnel.control
deleted file mode 100644
index 2d022e9ba3..0000000000
--- a/openwrt/package/matrixtunnel/ipkg/matrixtunnel.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: matrixtunnel
-Priority: optional
-Section: net
-Description: stunnel based on matrixssl
-Depends: libmatrixssl
diff --git a/openwrt/package/mgetty/Config.in b/openwrt/package/mgetty/Config.in
deleted file mode 100644
index 5761bbb6f1..0000000000
--- a/openwrt/package/mgetty/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_MGETTY
- prompt "mgetty+sendfax.................... the data/fax solution for your analog modem"
- tristate
- default m if CONFIG_DEVEL
- help
- mgetty now includes sendfax (and AutoPPP)
- using pppd for data and doing fax/login by itself.
diff --git a/openwrt/package/mgetty/Makefile b/openwrt/package/mgetty/Makefile
deleted file mode 100644
index d02f027837..0000000000
--- a/openwrt/package/mgetty/Makefile
+++ /dev/null
@@ -1,118 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=mgetty
-PKG_VERSION:=1.1.35
-PKG_XVERSION:=Feb22
-PKG_RELEASE:=1
-PKG_MD5SUM:=6805f8e31423bb777be80e3a856001cb
-
-PKG_SOURCE_URL:=ftp://alpha.greenie.net/pub/mgetty/source/1.1
-PKG_SOURCE:=$(PKG_NAME)$(PKG_VERSION)-$(PKG_XVERSION).tar.gz
-PKG_CAT:=zcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MGETTY,mgetty,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/policy.h: $(PKG_BUILD_DIR)/.prepared
- cp $(PKG_BUILD_DIR)/policy.h-dist $(PKG_BUILD_DIR)/policy.h
- echo "#define AUTO_PPP" >> $(PKG_BUILD_DIR)/policy.h
- echo "#undef FAX_NOTIFY_PROGRAM" >> $(PKG_BUILD_DIR)/policy.h
- echo "#define FAX_NOTIFY_PROGRAM \"/usr/lib/mgetty+sendfax/new_fax\"" >> $(PKG_BUILD_DIR)/policy.h
- echo "#undef DATA_FLOW" >> $(PKG_BUILD_DIR)/policy.h
- echo "#define DATA_FLOW FLOW_HARD" >> $(PKG_BUILD_DIR)/policy.h
- echo "#undef DEVICE_GROUP" >> $(PKG_BUILD_DIR)/policy.h
- echo "#undef DEVICE_OWNER" >> $(PKG_BUILD_DIR)/policy.h
- echo "#define DEVICE_OWNER \"root\"" >> $(PKG_BUILD_DIR)/policy.h
- echo "#undef FAXREC_FLOW" >> $(PKG_BUILD_DIR)/policy.h
- echo "#define FAXREC_FLOW FLOW_SOFT" >> $(PKG_BUILD_DIR)/policy.h
- echo "#undef FAXSEND_FLOW" >> $(PKG_BUILD_DIR)/policy.h
- echo "#define FAXSEND_FLOW FLOW_SOFT" >> $(PKG_BUILD_DIR)/policy.h
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/policy.h
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- mkdir -p $(PKG_INSTALL_DIR)/usr/bin
- mkdir -p $(PKG_INSTALL_DIR)/usr/sbin
- mkdir -p $(PKG_INSTALL_DIR)/usr/lib/mgetty+sendfax
- mkdir -p $(PKG_INSTALL_DIR)/etc/mgetty+sendfax
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- prefix="$(PKG_INSTALL_DIR)/usr" \
- CONFDIR=/etc/mgetty+sendfax \
- bin-all
- $(CP) $(PKG_BUILD_DIR)/mgetty $(PKG_INSTALL_DIR)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/sendfax $(PKG_INSTALL_DIR)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/fax/faxrunqd $(PKG_INSTALL_DIR)/usr/sbin
- chmod 755 $(PKG_INSTALL_DIR)/usr/sbin/*
- $(CP) $(PKG_BUILD_DIR)/fax/faxq-helper $(PKG_INSTALL_DIR)/usr/lib/mgetty+sendfax
- chmod u+s $(PKG_INSTALL_DIR)/usr/lib/mgetty+sendfax/faxq-helper
- $(CP) $(PKG_BUILD_DIR)/fax/cour25n.pbm $(PKG_INSTALL_DIR)/usr/lib/mgetty+sendfax
- $(CP) $(PKG_BUILD_DIR)/fax/cour25.pbm $(PKG_INSTALL_DIR)/usr/lib/mgetty+sendfax
- $(CP) $(PKG_BUILD_DIR)/fax/faxq $(PKG_INSTALL_DIR)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/fax/faxrm $(PKG_INSTALL_DIR)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/fax/faxrunq $(PKG_INSTALL_DIR)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/fax/faxspool $(PKG_INSTALL_DIR)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/g3/g32pbm $(PKG_INSTALL_DIR)/usr/bin
- (cd $(PKG_INSTALL_DIR)/usr/bin;\
- ln -snf g32pbm g3topbm;\
- );
- $(CP) $(PKG_BUILD_DIR)/g3/g3cat $(PKG_INSTALL_DIR)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/g3/pbm2g3 $(PKG_INSTALL_DIR)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/g3/sff2g3 $(PKG_INSTALL_DIR)/usr/bin
- chmod 755 $(PKG_INSTALL_DIR)/usr/bin/*
-# Installation into /etc
- $(CP) $(PKG_BUILD_DIR)/dialin.config $(PKG_INSTALL_DIR)/etc/mgetty+sendfax
- $(CP) $(PKG_BUILD_DIR)/fax/faxheader $(PKG_INSTALL_DIR)/etc/mgetty+sendfax
- $(CP) $(PKG_BUILD_DIR)/faxrunq.config $(PKG_INSTALL_DIR)/etc/mgetty+sendfax
- $(CP) $(PKG_BUILD_DIR)/fax/faxspool.rules $(PKG_INSTALL_DIR)/etc/mgetty+sendfax/faxspool.rules.sample
- $(PKG_BUILD_DIR)/sedscript < $(PKG_BUILD_DIR)/login.cfg.in > $(PKG_INSTALL_DIR)/etc/mgetty+sendfax/login.config
- $(PKG_BUILD_DIR)/sedscript < $(PKG_BUILD_DIR)/mgetty.cfg.in > $(PKG_INSTALL_DIR)/etc/mgetty+sendfax/mgetty.config
- $(PKG_BUILD_DIR)/sedscript < $(PKG_BUILD_DIR)/sendfax.cfg.in > $(PKG_INSTALL_DIR)/etc/mgetty+sendfax/sendfax.config
- touch $@
-
-ISBIN:=$(IDIR_MGETTY)/usr/sbin
-IBIN:=$(IDIR_MGETTY)/usr/bin
-ILIB:=$(IDIR_MGETTY)/usr/lib/mgetty+sendfax
-IETC:=$(IDIR_MGETTY)/etc/mgetty+sendfax
-
-$(IPKG_MGETTY):
- install -d -m0755 $(ISBIN) $(IBIN) $(ILIB) $(IETC)
- install -m0755 \
- $(PKG_INSTALL_DIR)/usr/bin/faxq \
- $(PKG_INSTALL_DIR)/usr/bin/faxrm \
- $(PKG_INSTALL_DIR)/usr/bin/faxrunq \
- $(PKG_INSTALL_DIR)/usr/bin/faxspool \
- $(PKG_INSTALL_DIR)/usr/bin/g32pbm \
- $(PKG_INSTALL_DIR)/usr/bin/g3cat \
- $(PKG_INSTALL_DIR)/usr/bin/pbm2g3 \
- $(PKG_INSTALL_DIR)/usr/bin/sff2g3 \
- $(IBIN)
- install -m0755 \
- $(PKG_INSTALL_DIR)/usr/sbin/mgetty \
- $(PKG_INSTALL_DIR)/usr/sbin/sendfax \
- $(PKG_INSTALL_DIR)/usr/sbin/faxrunqd \
- $(ISBIN)
- install -m4755 \
- $(PKG_INSTALL_DIR)/usr/lib/mgetty+sendfax/faxq-helper \
- $(ILIB)
- install -m644 \
- $(PKG_INSTALL_DIR)/usr/lib/mgetty+sendfax/cour25n.pbm \
- $(PKG_INSTALL_DIR)/usr/lib/mgetty+sendfax/cour25.pbm \
- $(ILIB)
- install -m600 \
- $(PKG_INSTALL_DIR)/etc/mgetty+sendfax/dialin.config \
- $(PKG_INSTALL_DIR)/etc/mgetty+sendfax/faxheader \
- $(PKG_INSTALL_DIR)/etc/mgetty+sendfax/faxrunq.config \
- $(PKG_INSTALL_DIR)/etc/mgetty+sendfax/faxspool.rules.sample \
- $(PKG_INSTALL_DIR)/etc/mgetty+sendfax/login.config \
- $(PKG_INSTALL_DIR)/etc/mgetty+sendfax/mgetty.config \
- $(PKG_INSTALL_DIR)/etc/mgetty+sendfax/sendfax.config \
- $(IETC)
- $(RSTRIP) $(IDIR_MGETTY)
- $(IPKG_BUILD) $(IDIR_MGETTY) $(PACKAGE_DIR)
diff --git a/openwrt/package/mgetty/ipkg/mgetty.control b/openwrt/package/mgetty/ipkg/mgetty.control
deleted file mode 100644
index c280295bee..0000000000
--- a/openwrt/package/mgetty/ipkg/mgetty.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: mgetty
-Priority: optional
-Section: communications
-Description: mgetty + sendfax
diff --git a/openwrt/package/mgetty/patches/mgetty.patch b/openwrt/package/mgetty/patches/mgetty.patch
deleted file mode 100644
index c5ffb6f2e6..0000000000
--- a/openwrt/package/mgetty/patches/mgetty.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-Only in mgetty-1.1.31: .prepared
-diff -ur mgetty-1.1.31-old/Makefile mgetty-1.1.31/Makefile
---- mgetty-1.1.31-old/Makefile 2006-01-02 00:37:56.000000000 +0000
-+++ mgetty-1.1.31/Makefile 2006-01-02 00:43:57.000000000 +0000
-@@ -164,7 +164,9 @@
- #
- # if your systems doesn't have one, use the shell script that I provide
- # in "inst.sh" (taken from X11R5). Needed on IRIX5.2
--INSTALL=install -c -o bin -g bin
-+STRIP=$(STAGING_DIR)sstrip
-+INSTALL=install -c -o root -g root
-+#INSTALL=install -c -o bin -g bin
- #INSTALL=install -c -o root -g wheel # NeXT/BSD
- #INSTALL=/usr/ucb/install -c -o bin -g bin # AIX, Solaris 2.x
- #INSTALL=installbsd -c -o bin -g bin # OSF/1, AIX 4.1, 4.2
-@@ -216,7 +218,7 @@
- # (it's possible to run faxrunq(d) as root, but the FAX_OUT_USER
- # MUST NOT BE root or any other privileged account).
- #
--FAX_OUT_USER=fax
-+FAX_OUT_USER=root
- #
- #
- # Where section 1 manual pages should be placed
-@@ -416,7 +418,12 @@
- ./mksed >sedscript
- chmod 700 sedscript
-
--mksed: mksed.c policy.h Makefile
-+REALGCC:=/usr/bin/gcc
-+mksed: mksed.c policy.h Makefile
-+ ( echo $(REALGCC); $(MAKE) "CC=$(REALGCC)" "CFLAGS=$(CFLAGS)" mksed-wrong;\
-+ );
-+
-+mksed-wrong: mksed.c policy.h Makefile
- $(CC) $(CFLAGS) -DBINDIR=\"$(BINDIR)\" -DSBINDIR=\"$(SBINDIR)\" \
- -DLIBDIR=\"$(LIBDIR)\" \
- -DCONFDIR=\"$(CONFDIR)\" \
-@@ -590,8 +597,10 @@
- -test -d $(SBINDIR) || ( ./mkidirs $(SBINDIR) ; chmod 755 $(SBINDIR) )
- -mv -f $(SBINDIR)/mgetty $(SBINDIR)/mgetty.old
- -mv -f $(SBINDIR)/sendfax $(SBINDIR)/sendfax.old
-- $(INSTALL) -s -m 700 mgetty $(SBINDIR)
-- $(INSTALL) -s -m 755 sendfax $(SBINDIR)
-+ $(INSTALL) -m 700 mgetty $(SBINDIR)
-+ $(STRIP) $(SBINDIR)/mgetty
-+ $(INSTALL) -m 755 sendfax $(SBINDIR)
-+ $(STRIP) $(SBINDIR)/sendfax
- #
- # data files + directories
- #
-@@ -653,7 +662,8 @@
- if [ ! -z "$(INSTALL_MECHO)" ] ; then \
- cd compat ; \
- $(CC) $(CFLAGS) -o mg.echo mg.echo.c && \
-- $(INSTALL) -s -m 755 mg.echo $(BINDIR) ; \
-+ $(INSTALL) -m 755 mg.echo $(BINDIR) && \
-+ $(STRIP) $(BINDIR)/mg.echo ; \
- fi
-
- #
-Only in mgetty-1.1.31-old: Makefile.orig
-Only in mgetty-1.1.31-old: Makefile.rej
-diff -ur mgetty-1.1.31-old/g3/Makefile mgetty-1.1.31/g3/Makefile
---- mgetty-1.1.31-old/g3/Makefile 2006-01-02 00:37:56.000000000 +0000
-+++ mgetty-1.1.31/g3/Makefile 2006-01-02 00:42:17.000000000 +0000
-@@ -40,7 +40,8 @@
- # install programs
- #
- for f in $(G3_PROGRAMS) ; do \
-- $(INSTALL) -s -m 755 $$f $(BINDIR) ; \
-+ $(INSTALL) -m 755 $$f $(BINDIR) ; \
-+ $(STRIP) $(BINDIR)/$$f ; \
- done
- #
- # make symlink for "g3topbm" (so third-party fax viewers won't fail)
-diff -ur mgetty-1.1.31-old/logfile.c mgetty-1.1.31/logfile.c
---- mgetty-1.1.31-old/logfile.c 2006-01-02 00:37:56.000000000 +0000
-+++ mgetty-1.1.31/logfile.c 2006-01-02 00:42:17.000000000 +0000
-@@ -327,12 +327,11 @@
- }
- else /* ERROR or FATAL */
- {
-- fprintf(log_fp, "\n%02d/%02d %02d:%02d:%02d %s %s: %s",
-+ fprintf(log_fp, "\n%02d/%02d %02d:%02d:%02d %s %s: #%d",
- tm->tm_mon+1, tm->tm_mday,
- tm->tm_hour, tm->tm_min, tm->tm_sec,
- log_infix, ws,
-- ( errnr <= sys_nerr ) ? sys_errlist[errnr]:
-- "<error not in list>" );
-+ errnr );
- #ifdef SYSLOG
- syslog( level == L_FATAL? LOG_ALERT: LOG_ERR, "%s: %m", ws );
- #endif
-Only in mgetty-1.1.31-old/voice/libutil: access.c.orig
-Only in mgetty-1.1.31-old/voice/libvoice: Lucent.c.orig
-Only in mgetty-1.1.31-old/voice/libvoice: V253modem.c.orig
-Only in mgetty-1.1.31-old/voice/pvftools: pvftormd.c.orig
diff --git a/openwrt/package/miau/Config.in b/openwrt/package/miau/Config.in
deleted file mode 100644
index e3df15afcf..0000000000
--- a/openwrt/package/miau/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_MIAU
- prompt "miau.............................. Another IRC-bouncer/proxy"
- tristate
- default m if CONFIG_DEVEL
- help
- In short, miau is an IRC-bouncer/proxy.
- Being more verbose, miau is small but quite featured
- IRC-bouncer - a service bit like HTTP-proxy, but
- for IRC-networks.
-
- http://sourceforge.net/projects/miau/
-
diff --git a/openwrt/package/miau/Makefile b/openwrt/package/miau/Makefile
deleted file mode 100644
index ecfb03d884..0000000000
--- a/openwrt/package/miau/Makefile
+++ /dev/null
@@ -1,76 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=miau
-PKG_VERSION:=0.6.0.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=1b78d219a03655399c165eeb021cddd8
-
-PKG_SOURCE_URL:= @SF/miau
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MIAU,miau,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ac_cv_func_malloc_0_nonnull=yes \
- ac_cv_func_realloc_0_nonnull=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --bindir=/usr/bin \
- --sysconfdir=/etc \
- --enable-automode \
- --enable-releasenick \
- --enable-uptime \
- --enable-privlog \
- --enable-onconnect \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- touch $@
-
-$(IPKG_MIAU):
- install -d -m0755 $(IDIR_MIAU)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/$(PKG_NAME) $(IDIR_MIAU)/usr/bin/
- install -d -m0755 $(IDIR_MIAU)/etc/init.d
- install -d -m0755 $(IDIR_MIAU)/etc/default
- install -d -m0755 $(IDIR_MIAU)/etc/miau
- install -m0755 ./files/S50miau $(IDIR_MIAU)/etc/init.d/S50miau
- install -m0644 ./files/miau $(IDIR_MIAU)/etc/default/miau
- install -m0644 ./files/miaurc $(IDIR_MIAU)/etc/miau/miaurc
- $(RSTRIP) $(IDIR_MIAU)
- $(IPKG_BUILD) $(IDIR_MIAU) $(PACKAGE_DIR)
diff --git a/openwrt/package/miau/files/S50miau b/openwrt/package/miau/files/S50miau
deleted file mode 100755
index beef3105dd..0000000000
--- a/openwrt/package/miau/files/S50miau
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-DEFAULT="/etc/default/miau"
-OPTIONS="-d /etc/miau/"
-LOG_DIR="/var/log/miau"
-ERR_LOG="$LOG_DIR/error.log"
-OUT_LOG="$LOG_DIR/miau.log"
-
-[ -f $DEFAULT ] && . $DEFAULT
-[ "$ENABLE_MIAU" = "yes" ] || exit 0
-
-case $1 in
- start)
- [ -f /var/run/miau.pid ] && echo "[ERROR] miau is running"
- [ -f /var/run/miau.pid ] && exit 0
- [ -d /var/run ] || mkdir -p /var/run
- [ -d $LOG_DIR ] || mkdir -p $LOG_DIR
- /usr/bin/miau -f $OPTIONS > $OUT_LOG 2> $ERR_LOG &
- PID=$!
- sleep 1
- [ -d /proc/$PID ] && echo $PID > /var/run/miau.pid
- [ -d /proc/$PID ] || echo "[ERROR] Unable to run miau as a daemon"
- ;;
- stop)
- [ -f /var/run/miau.pid ] && kill $(cat /var/run/miau.pid) >/dev/null 2>&1 && rm /var/run/miau.pid
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/miau/files/miau b/openwrt/package/miau/files/miau
deleted file mode 100644
index 7d4f869ce2..0000000000
--- a/openwrt/package/miau/files/miau
+++ /dev/null
@@ -1,2 +0,0 @@
-ENABLE_MIAU="yes"
-OPTIONS="-d /etc/miau"
diff --git a/openwrt/package/miau/files/miaurc b/openwrt/package/miau/files/miaurc
deleted file mode 100644
index c12e4ff114..0000000000
--- a/openwrt/package/miau/files/miaurc
+++ /dev/null
@@ -1,587 +0,0 @@
-#
-# miau 0.5.3 configuration file example
-# (C) 2003-2004 Tommi Saviranta <tsaviran@cs.helsinki.fi>
-#
-
-# About structure of this configuration file:
-#
-# - All parameters are written inside quotes (for example, "foobar")
-#
-# - Options are defined like: option = "parameter1"[:"parameter2"] ...
-#
-# - When entering multiparameter options, certain parameters have default
-# values and can be left out.
-#
-# - When entering multiparameter options and, for example, user doesn't want
-# to set parameter2 at all but he needs to set parameter3, parameter2 can
-# be skipped with column (':') like: "parameter1"::"parameter3".
-#
-# - Empty lines and characters after '#' (hash) are ignored.
-#
-# - When setting permissions, switched etc. (switches (booleans) are described
-# as "state"), everything beginning with "t", "r" and "1" are concidered as
-# "true" or "yes" (positive). Everything else is "false" or "no" (negative).
-
-
-
-# Required settings
-################################################################################
-
-
-# nicknames = { "nick" }: Your nickname (and secondary nicknames) on IRC.
-# If the primary nick (first nick on the list) is already on use,
-# miau will try the others on the list.
-#
-# Default: no default
-#
-# Example:
-#nicknames = {
-# "zak"
-# "zakh"
-#}
-
-
-# realname = "realname": Your "real" name on IRC.
-#
-# Default: no default
-#
-# Example:
-#realname = "Prokhor Zakharov"
-
-
-# username = "username": Your ident (matters only if you don't have identd
-# running).
-#
-# Default: no default
-#
-# Example:
-#username = "zak"
-
-
-# password = "password": The password miau will expect to receive from client
-# when it's registering with nick. If this is 13 characters long,
-# miau assumed it's crypted.
-#
-# If miau is compiled with ENABLE_MKPASSWD, miau can generate password-hashes
-# (from command line) with -c -switch.
-#
-# Default: no default
-#
-# Example:
-#password = "foobar"
-
-
-# listenport = "port": The port miau will wait for incoming connections.
-#
-# Default: no default
-#
-# Example:
-#listenport = "4096"
-
-
-# servers = { "server":"port":"password":"timeout" }: miau's IRC-server-list.
-# Each line represents one server, where timeout is delay in
-# seconds before connectiong attempt times out. Only "server"
-# parameter is required.
-#
-# Default: no default
-#
-# Example:
-#servers = {
-# "irc.net"
-# "irc.foo.bar":"6662"
-# "localhost"::"foobar"
-# "127.0.0.1":"6670"::"5"
-#}
-
-
-# connhosts = { "host":"permitted" }: List of hosts that are allowed (or denied)
-# to connect to miau. When boolean-value is left unset, it is
-# assumed to be "true". This list will be processed as a chain
-# which means latter rules can override previous ones.
-#
-# Default: no default
-#
-# Example:
-#connhosts = {
-# "*":"yes"
-# "client*.evil.net":"no"
-#}
-
-
-
-# Optional settings
-################################################################################
-
-
-# listenhost = "host": Host miau uses to listen on.
-#
-# If you are compiled with IPV6 and need this to listen on an IPV4 port, you
-# must use an IP in the form ::FFFF:127.0.0.1
-#
-# Default: no default
-#
-# Example:
-#listenhost = "127.0.0.1"
-
-
-# bind = "host": Host/IP miau uses for outgoing connections.
-#
-# Default: none
-#
-# Example:
-#bind = "172.16.1.1"
-
-
-# maxclients = "number": Maximum number of clients connected to miau
-# concurrently. Set to zero for unlimited clients.
-#
-# Default: 3
-#
-#Example:
-#maxclients = "1"
-
-
-# stonedtimeout = "seconds": Time (in seconds) with no data from the server
-# before it is declared stoned and being disconnected. Although
-# minimum value is 30, this value has no upper limit. Watch out,
-# though, if this value is set too high, death of servers may stay
-# undetected for a very long time if you are idle.
-#
-# Default: 90
-#
-# Example:
-#stonedtimeout = "150"
-
-
-# connecttimeout = "seconds": Time (in seconds) before connection attampt will
-# time out. Note that while connecting to the server miau will not
-# respond to clients. Minimum value is 5, and many systems define
-# maximum value.
-#
-# Default: 30
-#
-# Example:
-#connecttimeout = "60"
-
-
-# channels = { "channel":"keyword" }: List of channels to join.
-#
-# Default: none
-#
-# Example:
-#channels = {
-# "#foobar"
-# "#miau":"cats"
-#}
-
-
-# rejoin = "state": Rejoin channels after disconnecting from the server.
-# If rejoin is set to true, channels defined in "channels" are
-# also joined when client first time connects to miau.
-#
-# Default: true
-#
-# Example:
-#rejoin = "false"
-
-
-# leave = "state": Leave channels when all clients have detached from miau.
-# If "leave" is set to "false" and "rejoin" is set to "true",
-# channels defined at "channels" will be joined at miau startup.
-# If both "leave" and "rejoin" is set to "true", channels that
-# are left at client detach, are rejoined when client attached
-# back to miau.
-#
-# Default: false
-#
-# Example:
-#leave = "false"
-
-
-# leavemsg = "message": Message miau will either use as PART-message or as an
-# ACTION when all clients have detached from miau. If unset or
-# set to empty, no message will be shown. Note that many people
-# dislike event-based messages (which happens when "leave" is set
-# to "false" and "leavemsg" is set). Also see usequitmsg.
-#
-# Note: Note that commenting this option out and rehashing after leavemsg was
-# set, this option is _not_ reverted. To disable leavemsg afterwards you
-# need to write an empty string here and rehash.
-#
-# Default: none
-#
-# Example:
-#leavemsg = "doh"
-
-
-# awaymsg = "message": Text that will be set to miau's away-reason when all
-# clients have detached from miau. If unset or set to empty,
-# AWAY-status will be left untouched. When any client attaches
-# back to miau, AWAY-status will be reset. Also see usequitmsg.
-#
-# Note: If user sets him/herself away, miau will not touch away-status nor
-# message neither when connecting to or disconnecting from miau.
-#
-# Note: Note that commenting this option out and rehashing after awaymsg was
-# set, this option is _not_ reverted. To disable awaymsg afterwards you
-# need to write an empty string here and rehash.
-#
-# Default: none
-#
-# Example:
-#awaymsg = "bouncing around - all private messages will be logged"
-
-
-# usequitmsg = "state": Use last quit-reason as away-reason and/or leave-message
-# (if respective options are enabled) when all clients have
-# disconnected from miau. If quit-reason is empty, default values
-# of awaymsg and leavemsg will be used, otherwise most recent
-# quit-message overrides values in miaurc.
-#
-# Default: true
-#
-# Example:
-# usequitmsg = "false"
-
-
-# getnick = "selection": miau can try to reclaim your primary nick when it is
-# lost. This option may be one of the following: "never",
-# "detached", "attached", or "always".
-# "never" ....... miau will not try to get your nick back.
-# "detached" .... miau will try to get your nick when no
-# clients are attached.
-# "attached" .... miau will try to get your nick when
-# there are one or more clients attached.
-# "always" ...... miau will try to get your nick
-#
-# Note: Do _not_ use options "attached" and "always" with clients (like
-# irc-II EPIC) that automatically change your nick when they receive
-# NICKINUSE from the server - you might end up chaning your nick until
-# server drops your connection due excess flood.
-#
-# Default: detached
-#
-# Example:
-#getnick = "always"
-
-
-# getnickinterval = "seconds": Time between tries (in seconds) to obtain
-# currently (possibly) lost primary nick. Don't set it too low
-# or you might get kicked out the server due to excess flood.
-#
-# Default: 60
-#
-# Example:
-#getnickinterval = "30"
-
-
-# antiidle = "minutes": Time between idle-timer resets in minutes. Set to 0 to
-# disable.
-#
-# Default: 0
-#
-# Example:
-#antiidle = "300"
-
-
-# qloglength = "minutes": Age of oldest line in quicklog in minutes. Set to zero
-# to disable quicklog.
-#
-# This option might not be compiled in.
-#
-# Default: 30
-#
-# Example:
-#qloglength = "30"
-
-
-# timestamp = "option": Location of timestamp in quicklog events. This option
-# may be one of the following "beginning", "end", or "none".
-#
-# This option might not be compiled in.
-#
-# Default: none
-#
-# Example:
-#timestamp = "beginning"
-
-
-# flushqlog = "state": If set to true, quicklog will be written only when no
-# clients are connected and quicklog will be erased when client
-# connects to miau. If you are running a single client, you
-# probably want to leave this to "false.
-#
-# This option might not be compiled in.
-#
-# Default: true
-#
-# Example:
-#flushqlog = "true"
-
-
-# inbox = "state": Enables logging private messages when no clients are
-# connected to miau.
-#
-# This option might not be compiled in.
-#
-# Default: true
-#
-# Example:
-#inbox = "true"
-
-
-# nevergiveup = "state": If set to true, miau will reset "working"-status of
-# servers to working when all are set to dysfunctional.
-# Respectively, if set to false, miau will quit when all servers
-# on the list have been set to dysfunctional.
-#
-# Default: true
-#
-# Example:
-#nevergiveup = "false"
-
-
-# norestricted = "state": If set to true, miau will not stay on server that
-# forces user to have restricted-status (+r).
-#
-# Default: true
-#
-# Example:
-#norestricted = "false"
-
-
-# reconnectdelay = "seconds": Time (in seconds) between connection attempts.
-# Minumun value is set to 1.
-#
-# Default: 10
-#
-# Example:
-#reconnectdelay = "30"
-
-
-# nickfillchar = "fill character": Character used to modify your primary nick
-# when all defined nicks are already occupied. Note character is
-# a single octet (byte) and if longer string is fed, only the
-# first character is used.
-#
-# Example: When nickfillchar is set to '_', primary nick is "zak" and all
-# defined nicks are occupied, next nicks tried are "zak_", "zak__",
-# "zak___" and so on. When nick has grown too long, it will be shifted
-# one characted to right (where shift is cyclic) - this means
-# "zak______" will become "_zak_____", which, again, will become
-# "__zak____".
-#
-# Default: _
-#
-# Example:
-#nickfillchar = "^"
-
-
-# maxnicklen = "length": Maximum nick length, used with nickfillchar.
-#
-# Default: 9
-#
-# Example:
-#maxnicklen = 11
-
-
-# usermode = "usermode(s)": Usermode that miau will request (if no clients are
-# attached at the moment) from the server when connection to the
-# server is established. Leave unset or set to empty to disable
-# this feature.
-#
-# Default: none
-#
-# Example:
-#usermode = "+i"
-
-
-# forwardmsg = "command": miau can collect the (private) messages within three
-# (3) minutes and pipe them into the program specified. Leave this
-# unset or set to empty to disable this feature.
-#
-# Default: none
-#
-# Example:
-#forwardmsg = "mail user@host"
-
-
-# ignore = { "mask":"ignored" }: List of users whose private messages (PRIVMSG)
-# and noticies (NOTICE) are ignored when no clients are attached
-# to miau. When "ignored" is left undefined, it is assumed to be
-# "true". Setting "ignored" to "false" means that this user will
-# _not_ be ignored. This list is processed as a chain.
-#
-# Default: none
-#
-# Example:
-#ignore = {
-# "*@localhost":"yes"
-# "zak*":"no"
-#}
-
-
-# privlog = "mode": Whatever private messages should be logged in nick-specific
-# files. Can be one of "never", "detached", "attached", and
-# "always".
-#
-# This option might not be compiled in.
-#
-# Default: never
-#
-# Example:
-#privlog = "always"
-
-
-# chanlog = { "channel(s)":"options":"logfile" }: List of channel logfiles.
-#
-# When channel is set to "*", line represents global log. When logging,
-# if channel doesn't have entry of it's own in this list, it will use settings
-# of global log and write log to it's own file. When defining global log,
-# "logfile" is ignored. Each line can have multiple channels
-# (like "#foobar,#miau").
-#
-# If logfile is left undefined, logfile will be named after the channel with
-# possible postfix (see logpostfix). All lofiles are written in miau's work
-# directory.
-#
-# Options consist of abritary set of following possibilities:
-# j: log joins
-# e: log parts (exits)
-# q: log quits
-# m: log messages (privmsg/notice)
-# c: log mode changes (changes)
-# n: log nick changes
-# o: log misc events (other)
-# b: log messages from miau (bouncer)
-# a: log all of above
-# A: log when a client is attached
-# D: log when a client is detached
-# C: log continuously (status of clients doesn't matter)
-#
-# This option might not be compiled in.
-#
-# Default: none
-#
-# Example:
-#chanlog = {
-# "#foobar":"a" # log everything on #foobar
-# "#miau":"aD":"foo.log" # log everything to file "foo.log" when
-# all clients are detached
-# "*":"mjeq" # log only messages, joins, parts and quits
-# by default
-#}
-
-
-# logpostfix = "postfix": When writing log to undefined logfile, each logfile
-# consists of channel name followed by postfix. Postfix can be
-# defined here.
-#
-# This option might not be compiled in.
-#
-# Default: no postfix
-#
-# Example:
-#logpostfix = ".log"
-
-
-# onconnect = { "mode":"target/data"(:"data") }: When miau connects and
-# registers user to server, miau can send pre-defined messages.
-# User can define miau to send normal messages (PRIVMSG), notices
-# (NOTICE) or arbitrary messages.
-#
-# Mode can be one of the following:
-# p: private message (PRIVMSG).
-# n: notice (NOTICE). Should be used with services and automatons, but
-# unfortunately some network services can't cope with notices.
-# r: "raw" message. This means user must provide complete message to send
-# to the server. Using raw message user has complete control over what
-# is being sent. If you don't know what this is, you don't need this.
-# When using modes "p" or "n", user must provide both message and target where
-# as with raw messages only one parameter in addition to type should be given.
-#
-# This option might not be compiled in.
-#
-# Default: none
-#
-# Example:
-#onconnect = {
-# "p":"nickserv":"identify foobar"
-# "n":"nickserv@services.host.net":"id raboof"
-# "r":"OPER foo bar"
-#}
-
-
-# automodes = { "mask":"privilegded" }: List of people who are automatically
-# given certain privilege on channel. Mask is given in form of
-# "mode:nick!username@host/#channel" (where "mode" is a single
-# character) and list is processed as a chain.
-#
-# This option might not be compiled in.
-#
-# Default: none
-#
-# Example:
-#automodes = {
-# "o:zak*!zak@client*-myisp.com/#channel":"yes"
-# "o:zak*!*@evil.impersonator.net/#foobar":"no"
-# "v:newbie*!*@ircnet.com/#newbie":"yes"
-#}
-
-
-# automodedelay = "seconds": Time (in seconds) after first queued mode change
-# would take effect. During this period of time miau can collect
-# more than one mode change and commit up to three at a time.
-# Other situation reasonaly big value (like 30) here could prove
-# useful is channel where there are stupid "auto-oping" bots.
-# (Stupid bots do mode changes even if someone else did that
-# already.)
-#
-# This option might not be compiled in.
-#
-# Default: 30
-#
-# Example:
-#automodedelay = "60"
-
-
-# cmdpasswd = "password": Password for remote commands. If this is 13 characters
-# long, miau assumes it's crypted. Comment this out or leave it
-# empty to disable remote commands. When sending miau a remote
-# command, password _always_ begins with column (':') (if
-# cmdpasswd is set to "foobar" (or hash of it), you need to send
-# miau a message beginning with ":foobar" to issue a remote
-# command).
-#
-# This feature might not be compiled in.
-#
-# If miau is compiled with ENABLE_MKPASSWD, miau can generate password-hashes
-# (from command line) with -c -switch.
-#
-# Default: disabled
-#
-# Example:
-#cmdpasswd = ""
-
-
-# dccbounce = "state": miau can bounce DCCs. Set to true to enable bouncing.
-# You probably don't need this.
-#
-# This option might not be compiled in.
-#
-# Default: false
-#
-# Example:
-#dccbounce = "true"
-
-
-# dccbindhost = "host": If miau has separate IPs for IRC-network and clients,
-# you should enter IP for clients here.
-#
-# This option might not be compiled in.
-#
-# Default: no default
-#
-# Example:
-#dccbindhost = "10.0.0.1"
diff --git a/openwrt/package/miau/ipkg/miau.conffiles b/openwrt/package/miau/ipkg/miau.conffiles
deleted file mode 100644
index a6c7d70a44..0000000000
--- a/openwrt/package/miau/ipkg/miau.conffiles
+++ /dev/null
@@ -1,3 +0,0 @@
-/etc/default/miau
-/etc/init.d/S50miau
-/etc/miau/miaurc
diff --git a/openwrt/package/miau/ipkg/miau.control b/openwrt/package/miau/ipkg/miau.control
deleted file mode 100644
index 688407bb75..0000000000
--- a/openwrt/package/miau/ipkg/miau.control
+++ /dev/null
@@ -1,7 +0,0 @@
-Package: miau
-Version: 1
-Architecture: mipsel
-Maintainer: Benjamin Binier benjamin.binier@gmail.com
-Priority: optional
-Section: net
-Description: miau is an IRC-bouncer/proxy
diff --git a/openwrt/package/miax/Config.in b/openwrt/package/miax/Config.in
deleted file mode 100644
index 9cd66b1bbe..0000000000
--- a/openwrt/package/miax/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_MIAX
- prompt "miax.............................. A console iax (asterisk) client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_BLUEZ_LIBS
- select BR2_PACKAGE_LIBPTHREAD
- help
- miax is a console iax (asterisk) client, it can work with
- a soundcard as a normal voip phone, taking input/output from
- keyboard, analog/gsm/isdn modem or bluetooth phones.
-
- http://www.eja.it/?l=gpl&testo=miax
diff --git a/openwrt/package/miax/Makefile b/openwrt/package/miax/Makefile
deleted file mode 100644
index e121f8df14..0000000000
--- a/openwrt/package/miax/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=miax
-PKG_VERSION:=1.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=44f0d2ef46ee2697d890b7b96846adc7
-
-PKG_SOURCE_URL:=http://mesh.dl.sourceforge.net/sourceforge/miax/
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MIAX,miax,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C "$(PKG_BUILD_DIR)" \
- CC="$(TARGET_CC)" \
- OFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- all
- touch $@
-
-$(IPKG_MIAX):
- install -d -m0755 $(IDIR_MIAX)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/miax $(IDIR_MIAX)/usr/bin/
- $(RSTRIP) $(IDIR_MIAX)
- $(IPKG_BUILD) $(IDIR_MIAX) $(PACKAGE_DIR)
diff --git a/openwrt/package/miax/ipkg/miax.control b/openwrt/package/miax/ipkg/miax.control
deleted file mode 100644
index 78e47f566d..0000000000
--- a/openwrt/package/miax/ipkg/miax.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: miax
-Priority: optional
-Section: net
-Description: A console iax (asterisk) client
-Depends: kmod-bluetooth, bluez-libs, libpthread
diff --git a/openwrt/package/miax/patches/01-cross.patch b/openwrt/package/miax/patches/01-cross.patch
deleted file mode 100644
index f47c1101d9..0000000000
--- a/openwrt/package/miax/patches/01-cross.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN miax-1.4-old/Makefile miax-1.4-new/Makefile
---- miax-1.4-old/Makefile 2005-04-27 18:56:13.000000000 +0200
-+++ miax-1.4-new/Makefile 2005-11-30 01:07:21.000000000 +0100
-@@ -1,4 +1,5 @@
--CFLAGS= -Iiax/ -Igsm/inc -DIAXC_IAX2 -DLIBIAX -g -DPOSIXSLEEP -DLINUX -O2
-+OFLAGS= -02 -g
-+CFLAGS= -Iiax/ -Igsm/inc $(CPPFLAGS) -DIAXC_IAX2 -DLIBIAX -DPOSIXSLEEP -DLINUX $(OFLAGS)
- SYSLIBS=-lpthread -lm -lbluetooth
-
-
-@@ -32,11 +33,10 @@
- miax.o
-
- all: $(OBJS)
-- gcc $(OBJS) $(CFLAGS) $(SYSLIBS) -o miax
-- cp miax /bin/miax
-+ $(CC) $(OBJS) $(CFLAGS) $(LDFLAGS) $(SYSLIBS) -o miax
-
- static: $(OBJS) bluetooth.o
-- gcc $(OBJS) $(CFLAGS) $(SYSLIBS) -static -o miax
-+ $(CC) $(OBJS) $(CFLAGS) $(LDFLAGS) $(SYSLIBS) -static -o miax
-
- clean:
- rm -f $(OBJS) miax
diff --git a/openwrt/package/microcom/Config.in b/openwrt/package/microcom/Config.in
deleted file mode 100644
index a371156824..0000000000
--- a/openwrt/package/microcom/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_MICROCOM
- prompt "microcom.......................... Serial terminal"
- tristate
- default m if CONFIG_DEVEL
- help
- microcom is a minicom-like serial terminal emulator with scripting
- support.
-
- http://microcomlinux.homestead.com/
-
diff --git a/openwrt/package/microcom/Makefile b/openwrt/package/microcom/Makefile
deleted file mode 100644
index ebd7ddffec..0000000000
--- a/openwrt/package/microcom/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=microcom
-PKG_VERSION:=1.02
-PKG_FILEVERSION:=102
-PKG_RELEASE:=1
-PKG_MD5SUM:=c7817035dc41cb02e7cfb565cf9b7401
-
-PKG_SOURCE_URL:=http://microcom.port5.com/
-PKG_SOURCE:=m$(PKG_FILEVERSION).tar.gz
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MICROCOM,microcom,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.prepared:
- rm -rf $(PKG_BUILD_DIR)
- mkdir -p $(PKG_BUILD_DIR)
- # the .tar.gz is different - no subdirectory, so do this manually
- zcat $(DL_DIR)/$(PKG_SOURCE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS) -
- touch $@
-
-$(PKG_BUILD_DIR)/.configured:
- $(CP) $(PKG_BUILD_DIR)/Makefile $(PKG_BUILD_DIR)/Makefile.tmp
- sed 's~gcc~$$(CC)~' $(PKG_BUILD_DIR)/Makefile.tmp > $(PKG_BUILD_DIR)/Makefile
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) CC=$(TARGET_CC)
- touch $@
-
-$(IPKG_MICROCOM):
- install -d -m0755 $(IDIR_MICROCOM)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/microcom $(IDIR_MICROCOM)/usr/bin
- $(RSTRIP) $(IDIR_MICROCOM)
- $(IPKG_BUILD) $(IDIR_MICROCOM) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/microcom/ipkg/microcom.control b/openwrt/package/microcom/ipkg/microcom.control
deleted file mode 100644
index 1a40157fc2..0000000000
--- a/openwrt/package/microcom/ipkg/microcom.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: microcom
-Priority: optional
-Section: console
-Description: serial terminal
diff --git a/openwrt/package/microperl/Config.in b/openwrt/package/microperl/Config.in
deleted file mode 100644
index 2f49de0c1a..0000000000
--- a/openwrt/package/microperl/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_MICROPERL
- prompt "microperl......................... A really minimal perl"
- tristate
- default m if CONFIG_DEVEL
- help
- Perl without operating-specific functions such as readdir.
-
diff --git a/openwrt/package/microperl/Makefile b/openwrt/package/microperl/Makefile
deleted file mode 100644
index 854d897ed1..0000000000
--- a/openwrt/package/microperl/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=microperl
-PKG_VERSION:=5.8.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=8d4aa4e061fd5bc0c39e4f0a63267880
-
-PKG_SOURCE_URL:=ftp://ftp.cpan.org/pub/CPAN/src/5.0 \
- ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/src/5.0 \
- ftp://ftp.gmd.de/mirrors/CPAN/src/5.0 \
- ftp://ftp.funet.fi/pub/languages/perl/CPAN/src/5.0
-PKG_SOURCE:=perl-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/perl-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MICROPERL,microperl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) -f Makefile.micro \
- CC="$(TARGET_CC)" OPTIMIZE="$(TARGET_CFLAGS)"
- touch $@
-
-$(IPKG_MICROPERL):
- install -d -m0755 $(IDIR_MICROPERL)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/microperl $(IDIR_MICROPERL)/usr/bin/
- $(RSTRIP) $(IDIR_MICROPERL)
- $(IPKG_BUILD) $(IDIR_MICROPERL) $(PACKAGE_DIR)
diff --git a/openwrt/package/microperl/ipkg/microperl.control b/openwrt/package/microperl/ipkg/microperl.control
deleted file mode 100644
index 4e54b6326a..0000000000
--- a/openwrt/package/microperl/ipkg/microperl.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: microperl
-Priority: optional
-Section: net
-Description: Perl without operating-specific functions such as readdir.
diff --git a/openwrt/package/mini_httpd/Config.in b/openwrt/package/mini_httpd/Config.in
deleted file mode 100644
index 9946633761..0000000000
--- a/openwrt/package/mini_httpd/Config.in
+++ /dev/null
@@ -1,96 +0,0 @@
-menu "mini-httpd........................ A small web server"
-
-config BR2_COMPILE_MINI_HTTPD
- tristate
- default n
- depends BR2_PACKAGE_MINI_HTTPD || BR2_PACKAGE_MINI_HTTPD_MATRIXSSL || BR2_PACKAGE_MINI_HTTPD_OPENSSL
-
-config BR2_PACKAGE_MINI_HTTPD
- prompt "mini-httpd........................ A small web server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_MINI_HTTPD
- help
- mini_httpd is a small HTTP server. Its performance is not great, but for
- low or medium traffic sites it's quite adequate. It implements all the
- basic features of an HTTP server, including:
-
- * GET, HEAD, and POST methods.
- * CGI.
- * Basic authentication.
- * Security against ".." filename snooping.
- * The common MIME types.
- * Trailing-slash redirection.
- * index.html, index.htm, index.cgi
- * Directory listings.
- * Multihoming / virtual hosting.
- * Standard logging.
- * Custom error pages.
-
- It can also be configured to do IPv6.
-
- http://www.acme.com/software/mini_httpd/
-
-config BR2_PACKAGE_MINI_HTTPD_HTPASSWD
- prompt "mini-httpd-htpasswd............... Utility to generate HTTP access files"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_MINI_HTTPD
- help
- This file generates .htaccess/.htpasswd files to use HTTP access authentication
-
-config BR2_PACKAGE_MINI_HTTPD_MATRIXSSL
- prompt "mini-httpd-matrixssl.............. A small web server, built with SSL support using MatrixSSL"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_MINI_HTTPD
- select BR2_PACKAGE_LIBMATRIXSSL
- help
- mini_httpd is a small HTTP server. Its performance is not great, but for
- low or medium traffic sites it's quite adequate. It implements all the
- basic features of an HTTP server, including:
-
- * GET, HEAD, and POST methods.
- * CGI.
- * Basic authentication.
- * Security against ".." filename snooping.
- * The common MIME types.
- * Trailing-slash redirection.
- * index.html, index.htm, index.cgi
- * Directory listings.
- * Multihoming / virtual hosting.
- * Standard logging.
- * Custom error pages.
-
- It can also be configured to do SSL/HTTPS and IPv6.
-
- http://www.acme.com/software/mini_httpd/
-
-config BR2_PACKAGE_MINI_HTTPD_OPENSSL
- prompt "mini-httpd-openssl................ A small web server, built with SSL support using OpenSSL"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_MINI_HTTPD
- select BR2_PACKAGE_LIBOPENSSL
- help
- mini_httpd is a small HTTP server. Its performance is not great, but for
- low or medium traffic sites it's quite adequate. It implements all the
- basic features of an HTTP server, including:
-
- * GET, HEAD, and POST methods.
- * CGI.
- * Basic authentication.
- * Security against ".." filename snooping.
- * The common MIME types.
- * Trailing-slash redirection.
- * index.html, index.htm, index.cgi
- * Directory listings.
- * Multihoming / virtual hosting.
- * Standard logging.
- * Custom error pages.
-
- It can also be configured to do SSL/HTTPS and IPv6.
-
- http://www.acme.com/software/mini_httpd/
-
-endmenu
diff --git a/openwrt/package/mini_httpd/Makefile b/openwrt/package/mini_httpd/Makefile
deleted file mode 100644
index da976ef36f..0000000000
--- a/openwrt/package/mini_httpd/Makefile
+++ /dev/null
@@ -1,105 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=mini-httpd
-PKG_VERSION:=1.19
-PKG_RELEASE:=1
-PKG_MD5SUM:=792a529dfe974355aad8ba6c80e54e7a
-
-PKG_SOURCE_URL:=http://www.acme.com/software/mini_httpd/
-PKG_SOURCE:=mini_httpd-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/mini_httpd-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MINI_HTTPD,mini-httpd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,MINI_HTTPD_HTPASSWD,mini-httpd-htpasswd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,MINI_HTTPD_MATRIXSSL,mini-httpd-matrixssl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,MINI_HTTPD_OPENSSL,mini-httpd-openssl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-
-$(PKG_BUILD_DIR)/.configured:
- $(CP) ./files/matrixssl_helper.{c,h} $(PKG_BUILD_DIR)/
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- # with MatrixSSL
-ifneq ($(BR2_PACKAGE_MINI_HTTPD_MATRIXSSL),)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- OFLAGS="$(TARGET_CFLAGS)" \
- SSL_DEFS="-DUSE_SSL -DHAVE_MATRIXSSL" \
- SSL_INC="-I$(STAGING_DIR)/usr/include" \
- SSL_LIBS="-L$(STAGING_DIR)/usr/lib -lmatrixssl" \
- SSL_OBJS="matrixssl_helper.o" \
- all
- (cd $(PKG_BUILD_DIR); mv mini_httpd mini_httpd-matrixssl; )
- $(MAKE) -C $(PKG_BUILD_DIR) clean
-endif
- # with OpenSSL
-ifneq ($(BR2_PACKAGE_MINI_HTTPD_OPENSSL),)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- OFLAGS="$(TARGET_CFLAGS)" \
- SSL_DEFS="-DUSE_SSL -DHAVE_OPENSSL" \
- SSL_INC="-I$(STAGING_DIR)/usr/include" \
- SSL_LIBS="-L$(STAGING_DIR)/usr/lib -lssl -lcrypto" \
- all
- (cd $(PKG_BUILD_DIR); mv mini_httpd mini_httpd-openssl; )
- $(MAKE) -C $(PKG_BUILD_DIR) clean
-endif
- # without SSL
-ifneq ($(BR2_PACKAGE_MINI_HTTPD),)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- OFLAGS="$(TARGET_CFLAGS)" \
- all
-endif
- touch $@
-
-$(IPKG_MINI_HTTPD):
- install -d -m0755 $(IDIR_MINI_HTTPD)/etc
- install -m0644 ./files/mini_httpd.conf $(IDIR_MINI_HTTPD)/etc/mini_httpd.conf
- install -d -m0755 $(IDIR_MINI_HTTPD)/etc/default
- install -m0644 ./files/mini_httpd.default $(IDIR_MINI_HTTPD)/etc/default/mini_httpd
- install -d -m0755 $(IDIR_MINI_HTTPD)/etc/init.d
- install -m0755 ./files/mini_httpd.init $(IDIR_MINI_HTTPD)/etc/init.d/mini_httpd
- install -d -m0755 $(IDIR_MINI_HTTPD)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/mini_httpd $(IDIR_MINI_HTTPD)/usr/sbin/
- $(RSTRIP) $(IDIR_MINI_HTTPD)
- $(IPKG_BUILD) $(IDIR_MINI_HTTPD) $(PACKAGE_DIR)
-
-$(IPKG_MINI_HTTPD_HTPASSWD):
- install -d -m0755 $(IDIR_MINI_HTTPD_HTPASSWD)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/htpasswd $(IDIR_MINI_HTTPD_HTPASSWD)/usr/sbin/
- $(RSTRIP) $(IDIR_MINI_HTTPD_HTPASSWD)
- $(IPKG_BUILD) $(IDIR_MINI_HTTPD_HTPASSWD) $(PACKAGE_DIR)
-
-$(IPKG_MINI_HTTPD_MATRIXSSL):
- install -d -m0755 $(IDIR_MINI_HTTPD_MATRIXSSL)/etc
- install -m0644 ./files/mini_httpd-ssl.conf $(IDIR_MINI_HTTPD_MATRIXSSL)/etc/mini_httpd.conf
- install -m0600 ./files/mini_httpd.pem $(IDIR_MINI_HTTPD_MATRIXSSL)/etc/
- install -d -m0755 $(IDIR_MINI_HTTPD_MATRIXSSL)/etc/default
- install -m0644 ./files/mini_httpd.default $(IDIR_MINI_HTTPD_MATRIXSSL)/etc/default/mini_httpd
- install -d -m0755 $(IDIR_MINI_HTTPD_MATRIXSSL)/etc/init.d
- install -m0755 ./files/mini_httpd.init $(IDIR_MINI_HTTPD_MATRIXSSL)/etc/init.d/mini_httpd
- install -d -m0755 $(IDIR_MINI_HTTPD_MATRIXSSL)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/mini_httpd-matrixssl $(IDIR_MINI_HTTPD_MATRIXSSL)/usr/sbin/mini_httpd
- $(RSTRIP) $(IDIR_MINI_HTTPD_MATRIXSSL)
- $(IPKG_BUILD) $(IDIR_MINI_HTTPD_MATRIXSSL) $(PACKAGE_DIR)
-
-$(IPKG_MINI_HTTPD_OPENSSL):
- install -d -m0755 $(IDIR_MINI_HTTPD_OPENSSL)/etc
- install -m0644 ./files/mini_httpd-ssl.conf $(IDIR_MINI_HTTPD_OPENSSL)/etc/mini_httpd.conf
- install -m0600 ./files/mini_httpd.pem $(IDIR_MINI_HTTPD_OPENSSL)/etc/
- install -d -m0755 $(IDIR_MINI_HTTPD_OPENSSL)/etc/default
- install -m0644 ./files/mini_httpd.default $(IDIR_MINI_HTTPD_OPENSSL)/etc/default/mini_httpd
- install -d -m0755 $(IDIR_MINI_HTTPD_OPENSSL)/etc/init.d
- install -m0755 ./files/mini_httpd.init $(IDIR_MINI_HTTPD_OPENSSL)/etc/init.d/mini_httpd
- install -d -m0755 $(IDIR_MINI_HTTPD_OPENSSL)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/mini_httpd-openssl $(IDIR_MINI_HTTPD_OPENSSL)/usr/sbin/mini_httpd
- $(RSTRIP) $(IDIR_MINI_HTTPD_OPENSSL)
- $(IPKG_BUILD) $(IDIR_MINI_HTTPD_OPENSSL) $(PACKAGE_DIR)
diff --git a/openwrt/package/mini_httpd/files/matrixssl_helper.c b/openwrt/package/mini_httpd/files/matrixssl_helper.c
deleted file mode 100644
index e3fe3346c2..0000000000
--- a/openwrt/package/mini_httpd/files/matrixssl_helper.c
+++ /dev/null
@@ -1,455 +0,0 @@
-/*
- * MatrixSSL helper functions
- *
- * Copyright (C) 2005 Nicolas Thill <nthill@free.fr>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * Portions borrowed from MatrixSSL example code
- *
- */
-
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <arpa/inet.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-
-#include "matrixssl_helper.h"
-
-#define SSL_SOCKET_EOF 0x0001
-#define SSL_SOCKET_CLOSE_NOTIFY 0x0002
-
-#define min(a, b) ( (a) < (b) ) ? (a) : (b)
-
-static int _ssl_read(SSL *ssl, char *buf, int len);
-static int _ssl_write(SSL *ssl, char *buf, int len);
-static void _ssl_setSocketBlock(int fd);
-static void _ssl_setSocketNonblock(int fd);
-static void _ssl_closeSocket(int fd);
-
-
-SSL * SSL_new(sslKeys_t *keys)
-{
- SSL * ssl;
- ssl = (SSL *)malloc(sizeof(SSL));
-
- if (!ssl) return 0;
-
- ssl->keys = keys;
- if ( matrixSslNewSession(&(ssl->ssl), ssl->keys, NULL, SSL_FLAGS_SERVER) < 0 ) {
- }
-
- ssl->insock.size = 1024;
- ssl->insock.buf = ssl->insock.start = ssl->insock.end =
- (unsigned char *)malloc(ssl->insock.size);
-
- ssl->outsock.size = 1024;
- ssl->outsock.buf = ssl->outsock.start = ssl->outsock.end =
- (unsigned char *)malloc(ssl->outsock.size);
-
- ssl->inbuf.size = 0;
- ssl->inbuf.buf = ssl->inbuf.start = ssl->inbuf.end = NULL;
-
- return ssl;
-}
-
-
-int SSL_accept(SSL *ssl) {
-
- unsigned char buf[1024];
- int status, rc;
-
-readMore:
- rc = _ssl_read(ssl, buf, sizeof(buf));
- if (rc == 0) {
- if (ssl->status == SSL_SOCKET_EOF || ssl->status == SSL_SOCKET_CLOSE_NOTIFY) {
- SSL_free(ssl);
- return -1;
- }
- if (matrixSslHandshakeIsComplete(ssl->ssl) == 0) {
- goto readMore;
- }
- } else if (rc > 0) {
- return 0;
- } else {
- SSL_free(ssl);
- return -1;
- }
-
- return 1;
-}
-
-
-void SSL_set_fd(SSL *ssl, int fd) {
- ssl->fd = fd;
-}
-
-
-int SSL_read(SSL *ssl, char *buf, int len) {
- int rc;
-readMore:
- rc = _ssl_read(ssl, buf, len);
- if (rc <= 0) {
- if (rc < 0 || ssl->status == SSL_SOCKET_EOF || ssl->status == SSL_SOCKET_CLOSE_NOTIFY) {
- _ssl_closeSocket(ssl->fd);
- return rc;
- }
- goto readMore;
- }
- return rc;
-}
-
-
-int SSL_write(SSL *ssl, char *buf, int len) {
- int rc;
-writeMore:
- rc = _ssl_write(ssl, buf, len);
- if (rc <= 0) {
- if (rc < 0) {
- return rc;
- }
- goto writeMore;
- }
- return rc;
-}
-
-
-void SSL_free(SSL * ssl)
-{
- matrixSslDeleteSession(ssl->ssl);
- if (ssl->insock.buf) {
- free(ssl->insock.buf);
- }
- if (ssl->outsock.buf) {
- free(ssl->outsock.buf);
- }
- if (ssl->inbuf.buf) {
- free(ssl->inbuf.buf);
- }
- free(ssl);
-}
-
-
-
-static void _ssl_setSocketBlock(int fd)
-{
- fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~O_NONBLOCK);
- fcntl(fd, F_SETFD, FD_CLOEXEC);
-}
-
-
-static void _ssl_setSocketNonblock(int fd)
-{
- fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK);
-}
-
-
-static void _ssl_closeSocket(int fd)
-{
- char buf[32];
-
- if (fd != -1) {
- _ssl_setSocketNonblock(fd);
- if (shutdown(fd, 1) >= 0) {
- while (recv(fd, buf, sizeof(buf), 0) > 0);
- }
- close(fd);
- }
-}
-
-
-static int _ssl_read(SSL *ssl, char *buf, int len)
-{
- int bytes, rc, remaining;
- unsigned char error, alertLevel, alertDescription, performRead;
-
- ssl->status = 0;
-
- if (ssl->ssl == NULL || len <= 0) {
- return -1;
- }
-/*
- If inbuf is valid, then we have previously decoded data that must be
- returned, return as much as possible. Once all buffered data is
- returned, free the inbuf.
-*/
- if (ssl->inbuf.buf) {
- if (ssl->inbuf.start < ssl->inbuf.end) {
- remaining = (int)(ssl->inbuf.end - ssl->inbuf.start);
- bytes = (int)min(len, remaining);
- memcpy(buf, ssl->inbuf.start, bytes);
- ssl->inbuf.start += bytes;
- return bytes;
- }
- free(ssl->inbuf.buf);
- ssl->inbuf.buf = NULL;
- }
-/*
- Pack the buffered socket data (if any) so that start is at zero.
-*/
- if (ssl->insock.buf < ssl->insock.start) {
- if (ssl->insock.start == ssl->insock.end) {
- ssl->insock.start = ssl->insock.end = ssl->insock.buf;
- } else {
- memmove(ssl->insock.buf, ssl->insock.start, ssl->insock.end - ssl->insock.start);
- ssl->insock.end -= (ssl->insock.start - ssl->insock.buf);
- ssl->insock.start = ssl->insock.buf;
- }
- }
-/*
- Read up to as many bytes as there are remaining in the buffer. We could
- Have encrypted data already cached in conn->insock, but might as well read more
- if we can.
-*/
- performRead = 0;
-readMore:
- if (ssl->insock.end == ssl->insock.start || performRead) {
- performRead = 1;
- bytes = recv(ssl->fd, (char *)ssl->insock.end,
- (int)((ssl->insock.buf + ssl->insock.size) - ssl->insock.end), MSG_NOSIGNAL);
- if (bytes == -1) {
- ssl->status = errno;
- return -1;
- }
- if (bytes == 0) {
- ssl->status = SSL_SOCKET_EOF;
- return 0;
- }
- ssl->insock.end += bytes;
- }
-/*
- Define a temporary sslBuf
-*/
- ssl->inbuf.start = ssl->inbuf.end = ssl->inbuf.buf = (unsigned char *)malloc(len);
- ssl->inbuf.size = len;
-/*
- Decode the data we just read from the socket
-*/
-decodeMore:
- error = 0;
- alertLevel = 0;
- alertDescription = 0;
-
- rc = matrixSslDecode(ssl->ssl, &ssl->insock, &ssl->inbuf, &error, &alertLevel,
- &alertDescription);
- switch (rc) {
-/*
- Successfully decoded a record that did not return data or require a response.
-*/
- case SSL_SUCCESS:
- return 0;
-/*
- Successfully decoded an application data record, and placed in tmp buf
-*/
- case SSL_PROCESS_DATA:
-/*
- Copy as much as we can from the temp buffer into the caller's buffer
- and leave the remainder in conn->inbuf until the next call to read
- It is possible that len > data in buffer if the encoded record
- was longer than len, but the decoded record isn't!
-*/
- rc = (int)(ssl->inbuf.end - ssl->inbuf.start);
- rc = min(rc, len);
- memcpy(buf, ssl->inbuf.start, rc);
- ssl->inbuf.start += rc;
- return rc;
-/*
- We've decoded a record that requires a response into tmp
- If there is no data to be flushed in the out buffer, we can write out
- the contents of the tmp buffer. Otherwise, we need to append the data
- to the outgoing data buffer and flush it out.
-*/
- case SSL_SEND_RESPONSE:
- bytes = send(ssl->fd, (char *)ssl->inbuf.start,
- (int)(ssl->inbuf.end - ssl->inbuf.start), MSG_NOSIGNAL);
- if (bytes == -1) {
- ssl->status = errno;
- if (ssl->status != EAGAIN) {
- goto readError;
- }
- ssl->status = 0;
- }
- ssl->inbuf.start += bytes;
- if (ssl->inbuf.start < ssl->inbuf.end) {
-/*
- This must be a non-blocking socket since it didn't all get sent
- out and there was no error. We want to finish the send here
- simply because we are likely in the SSL handshake.
-*/
- _ssl_setSocketBlock(ssl->fd);
- bytes = send(ssl->fd, (char *)ssl->inbuf.start,
- (int)(ssl->inbuf.end - ssl->inbuf.start), MSG_NOSIGNAL);
- if (bytes == -1) {
- ssl->status = errno;
- goto readError;
- }
- ssl->inbuf.start += bytes;
-/*
- Can safely set back to non-blocking because we wouldn't
- have got here if this socket wasn't non-blocking to begin with.
-*/
- _ssl_setSocketNonblock(ssl->fd);
- }
- ssl->inbuf.start = ssl->inbuf.end = ssl->inbuf.buf;
- return 0;
-/*
- There was an error decoding the data, or encoding the out buffer.
- There may be a response data in the out buffer, so try to send.
- We try a single hail-mary send of the data, and then close the socket.
- Since we're closing on error, we don't worry too much about a clean flush.
-*/
- case SSL_ERROR:
- if (ssl->inbuf.start < ssl->inbuf.end) {
- _ssl_setSocketNonblock(ssl->fd);
- bytes = send(ssl->fd, (char *)ssl->inbuf.start,
- (int)(ssl->inbuf.end - ssl->inbuf.start), MSG_NOSIGNAL);
- }
- goto readError;
-/*
- We've decoded an alert. The level and description passed into
- matrixSslDecode are filled in with the specifics.
-*/
- case SSL_ALERT:
- if (alertDescription == SSL_ALERT_CLOSE_NOTIFY) {
- ssl->status = SSL_SOCKET_CLOSE_NOTIFY;
- goto readZero;
- }
- goto readError;
-/*
- We have a partial record, we need to read more data off the socket.
- If we have a completely full conn->insock buffer, we'll need to grow it
- here so that we CAN read more data when called the next time.
-*/
- case SSL_PARTIAL:
- if (ssl->insock.start == ssl->insock.buf && ssl->insock.end ==
- (ssl->insock.buf + ssl->insock.size)) {
- if (ssl->insock.size > SSL_MAX_BUF_SIZE) {
- goto readError;
- }
- ssl->insock.size *= 2;
- ssl->insock.start = ssl->insock.buf =
- (unsigned char *)realloc(ssl->insock.buf, ssl->insock.size);
- ssl->insock.end = ssl->insock.buf + (ssl->insock.size / 2);
- }
- if (!performRead) {
- performRead = 1;
- free(ssl->inbuf.buf);
- ssl->inbuf.buf = NULL;
- goto readMore;
- } else {
- goto readZero;
- }
-/*
- The out buffer is too small to fit the decoded or response
- data. Increase the size of the buffer and call decode again
-*/
- case SSL_FULL:
- ssl->inbuf.size *= 2;
- if (ssl->inbuf.buf != (unsigned char*)buf) {
- free(ssl->inbuf.buf);
- ssl->inbuf.buf = NULL;
- }
- ssl->inbuf.start = ssl->inbuf.end = ssl->inbuf.buf =
- (unsigned char *)malloc(ssl->inbuf.size);
- goto decodeMore;
- }
-/*
- We consolidated some of the returns here because we must ensure
- that conn->inbuf is cleared if pointing at caller's buffer, otherwise
- it will be freed later on.
-*/
-readZero:
- if (ssl->inbuf.buf == (unsigned char*)buf) {
- ssl->inbuf.buf = NULL;
- }
- return 0;
-readError:
- if (ssl->inbuf.buf == (unsigned char*)buf) {
- ssl->inbuf.buf = NULL;
- }
- return -1;
-}
-
-
-int _ssl_write(SSL *ssl, char *buf, int len)
-{
- int rc;
-
- ssl->status = 0;
-/*
- Pack the buffered socket data (if any) so that start is at zero.
-*/
- if (ssl->outsock.buf < ssl->outsock.start) {
- if (ssl->outsock.start == ssl->outsock.end) {
- ssl->outsock.start = ssl->outsock.end = ssl->outsock.buf;
- } else {
- memmove(ssl->outsock.buf, ssl->outsock.start, ssl->outsock.end - ssl->outsock.start);
- ssl->outsock.end -= (ssl->outsock.start - ssl->outsock.buf);
- ssl->outsock.start = ssl->outsock.buf;
- }
- }
-/*
- If there is buffered output data, the caller must be trying to
- send the same amount of data as last time. We don't support
- sending additional data until the original buffered request has
- been completely sent.
-*/
- if (ssl->outBufferCount > 0 && len != ssl->outBufferCount) {
- return -1;
- }
-/*
- If we don't have buffered data, encode the caller's data
-*/
- if (ssl->outBufferCount == 0) {
-retryEncode:
- rc = matrixSslEncode(ssl->ssl, (unsigned char *)buf, len, &ssl->outsock);
- switch (rc) {
- case SSL_ERROR:
- return -1;
- case SSL_FULL:
- if (ssl->outsock.size > SSL_MAX_BUF_SIZE) {
- return -1;
- }
- ssl->outsock.size *= 2;
- ssl->outsock.buf =
- (unsigned char *)realloc(ssl->outsock.buf, ssl->outsock.size);
- ssl->outsock.end = ssl->outsock.buf + (ssl->outsock.end - ssl->outsock.start);
- ssl->outsock.start = ssl->outsock.buf;
- goto retryEncode;
- }
- }
-/*
- We've got data to send.
-*/
- rc = send(ssl->fd, (char *)ssl->outsock.start,
- (int)(ssl->outsock.end - ssl->outsock.start), MSG_NOSIGNAL);
- if (rc == -1) {
- ssl->status = errno;
- return -1;
- }
- ssl->outsock.start += rc;
-/*
- If we wrote it all return the length, otherwise remember the number of
- bytes passed in, and return 0 to be called again later.
-*/
- if (ssl->outsock.start == ssl->outsock.end) {
- ssl->outBufferCount = 0;
- return len;
- }
- ssl->outBufferCount = len;
- return 0;
-}
-
diff --git a/openwrt/package/mini_httpd/files/matrixssl_helper.h b/openwrt/package/mini_httpd/files/matrixssl_helper.h
deleted file mode 100644
index e5854df64a..0000000000
--- a/openwrt/package/mini_httpd/files/matrixssl_helper.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * MatrixSSL helper functions
- *
- * Copyright (C) 2005 Nicolas Thill <nthill@free.fr>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#ifndef __MATRIXSSL_HELPER_H__
-#define __MATRIXSSL_HELPER_H__
-
-#include <matrixSsl/matrixSsl.h>
-
-typedef struct __SSL {
- int fd;
- ssl_t *ssl;
- sslKeys_t *keys;
- sslBuf_t insock, outsock, inbuf;
- int outBufferCount;
- int partial;
- int status;
-} SSL;
-
-SSL * SSL_new(sslKeys_t *keys);
-void SSL_set_fd(SSL *ssl, int fd);
-int SSL_accept(SSL *ssl);
-int SSL_read(SSL *ssl, char *b, int len);
-int SSL_write(SSL *ssl, char *buf, int len);
-void SSL_free(SSL *ssl);
-
-#endif /* __MATRIXSSL_HELPER_H__ */
diff --git a/openwrt/package/mini_httpd/files/mini_httpd-ssl.conf b/openwrt/package/mini_httpd/files/mini_httpd-ssl.conf
deleted file mode 100644
index 1cd7022d54..0000000000
--- a/openwrt/package/mini_httpd/files/mini_httpd-ssl.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-cgipat=cgi-bin/**|**.sh
-dir=/www
-nochroot
-pidfile=/var/run/mini_httpd.pid
-user=root
-ssl
-certfile=/etc/mini_httpd.pem
diff --git a/openwrt/package/mini_httpd/files/mini_httpd.conf b/openwrt/package/mini_httpd/files/mini_httpd.conf
deleted file mode 100644
index d636a4378b..0000000000
--- a/openwrt/package/mini_httpd/files/mini_httpd.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-cgipat=cgi-bin/**|**.sh
-dir=/www
-nochroot
-pidfile=/var/run/mini_httpd.pid
-user=root
diff --git a/openwrt/package/mini_httpd/files/mini_httpd.default b/openwrt/package/mini_httpd/files/mini_httpd.default
deleted file mode 100644
index 85b229e889..0000000000
--- a/openwrt/package/mini_httpd/files/mini_httpd.default
+++ /dev/null
@@ -1 +0,0 @@
-OPTIONS="-C /etc/mini_httpd.conf"
diff --git a/openwrt/package/mini_httpd/files/mini_httpd.init b/openwrt/package/mini_httpd/files/mini_httpd.init
deleted file mode 100644
index 77bd6fd3b7..0000000000
--- a/openwrt/package/mini_httpd/files/mini_httpd.init
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-
-BIN=mini_httpd
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- [ -d $RUN_D ] || mkdir -p $RUN_D
- $BIN $OPTIONS 2>/dev/null
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- restart)
- $0 stop
- $0 start
- ;;
- *)
- echo "usage: $0 (start|stop|restart)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/mini_httpd/files/mini_httpd.pem b/openwrt/package/mini_httpd/files/mini_httpd.pem
deleted file mode 100644
index 8a1241a767..0000000000
--- a/openwrt/package/mini_httpd/files/mini_httpd.pem
+++ /dev/null
@@ -1,29 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXgIBAAKBgQC5rFJOQakwMmF9aoVnAXaQLOOPoYOEk19/ls9VZt1ZqfzQuTbG
-GGrgMIDclB0kHMFvSbzeiVjMnrSdQTNe1gOQAGtHhHiqugrLqH9m3wqOerbf/Yir
-hic9U6X9RaWC6BzNgcYU1QtPn1sDtbMNFAB6jzF3W76EIlHEobgMtfqtxwIDAQAB
-AoGBAKJst9eToyDxgc1ICQlSA1kem7eDUF0C2xDvadLI2KxegzZIQD1NEPmsFJ5h
-x5hWu3TSabG3LwJZd6D1b63vxE6QRMhcDG3idb7kXzhOOZyfnlnrBtJ3VJC/UH5H
-O1pMMBxcu2fXrua+h7BW0gMoZhchvsArDoWaZPjNUNHiNRYBAkEA3Ngnge7njqlf
-/UlLkQHHfxgorQ78GjOzrrUvz86pFtW8RKCjAv55HIqAhWrSgxWF4yXkPO2XOHC9
-KTeVKccjAQJBANc63r3M3yP817cPzyo/8BJQD9nAzmolrsBf1YMxML20UmEbObax
-QdmxoYu/a8tOD4gT6EZDkauJU0yS69HGeMcCQQCvRmbkuuXQ1iC29+sfpVfeSSBP
-aaswaIRdTrQprA2LcAtCNHPsNmeM/WfPe96j5vsiMrqYmMECLIgVJGYgiEoBAkEA
-kzg1e+ZTC667bwBlWCT79crFzNDRYFH+QqBKz74p9NkPMFULGSgOPvX95jU9aocu
-oInda5J0Zb09OTeWDpuPqQJAUIeY36WUst7NaW40mZXkMjjR2QtWi7P4cmv7nLp0
-WdPQzkUW1Bv4sSUQ7svQqpmZPaFiyhXL1VSa1M5MPd3tbA==
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIICOTCCAaKgAwIBAgIJANRuTbnzy8ObMA0GCSqGSIb3DQEBBAUAMFMxCzAJBgNV
-BAYTAkZSMQ4wDAYDVQQIEwVQYXJpczEOMAwGA1UEBxMFUGFyaXMxEDAOBgNVBAoT
-B015IEhvbWUxEjAQBgNVBAMTCU15IFJvdXRlcjAeFw0wNTAxMTQwMjQzMjdaFw0w
-NjAxMTQwMjQzMjdaMFMxCzAJBgNVBAYTAkZSMQ4wDAYDVQQIEwVQYXJpczEOMAwG
-A1UEBxMFUGFyaXMxEDAOBgNVBAoTB015IEhvbWUxEjAQBgNVBAMTCU15IFJvdXRl
-cjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuaxSTkGpMDJhfWqFZwF2kCzj
-j6GDhJNff5bPVWbdWan80Lk2xhhq4DCA3JQdJBzBb0m83olYzJ60nUEzXtYDkABr
-R4R4qroKy6h/Zt8Kjnq23/2Iq4YnPVOl/UWlgugczYHGFNULT59bA7WzDRQAeo8x
-d1u+hCJRxKG4DLX6rccCAwEAAaMVMBMwEQYJYIZIAYb4QgEBBAQDAgZAMA0GCSqG
-SIb3DQEBBAUAA4GBAErI3QmcZVzjxKcoPTO3z8cRJV87SVFp0qbIjbYCBDUWB1QY
-/bMkQPr2zJyfJmUYLEs4iKgHrmlaUCMHy9NZKOg9ZxrW42BtQ5QnOtDm3UifwzJW
-oCFC3uPWfTYsZn/FrUXlErds+xXXT63VJzBe6DdXwHcdcdxzl05oIyL9JIzI
------END CERTIFICATE-----
diff --git a/openwrt/package/mini_httpd/ipkg/mini-httpd-htpasswd.control b/openwrt/package/mini_httpd/ipkg/mini-httpd-htpasswd.control
deleted file mode 100644
index 6b80aa6d9b..0000000000
--- a/openwrt/package/mini_httpd/ipkg/mini-httpd-htpasswd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: mini-httpd-htpasswd
-Priority: optional
-Section: net
-Description: utility to generate HTTP access authentication files
diff --git a/openwrt/package/mini_httpd/ipkg/mini-httpd-matrixssl.conffiles b/openwrt/package/mini_httpd/ipkg/mini-httpd-matrixssl.conffiles
deleted file mode 100644
index 36a86b957c..0000000000
--- a/openwrt/package/mini_httpd/ipkg/mini-httpd-matrixssl.conffiles
+++ /dev/null
@@ -1,3 +0,0 @@
-/etc/default/mini_httpd
-/etc/mini_httpd.conf
-/etc/mini_httpd.pem
diff --git a/openwrt/package/mini_httpd/ipkg/mini-httpd-matrixssl.control b/openwrt/package/mini_httpd/ipkg/mini-httpd-matrixssl.control
deleted file mode 100644
index 5967ac7fb9..0000000000
--- a/openwrt/package/mini_httpd/ipkg/mini-httpd-matrixssl.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: mini-httpd-matrixssl
-Priority: optional
-Section: net
-Description: A small HTTP server, built with SSL support using MatrixSSL.
-Depends: libmatrixssl
diff --git a/openwrt/package/mini_httpd/ipkg/mini-httpd-openssl.conffiles b/openwrt/package/mini_httpd/ipkg/mini-httpd-openssl.conffiles
deleted file mode 100644
index 36a86b957c..0000000000
--- a/openwrt/package/mini_httpd/ipkg/mini-httpd-openssl.conffiles
+++ /dev/null
@@ -1,3 +0,0 @@
-/etc/default/mini_httpd
-/etc/mini_httpd.conf
-/etc/mini_httpd.pem
diff --git a/openwrt/package/mini_httpd/ipkg/mini-httpd-openssl.control b/openwrt/package/mini_httpd/ipkg/mini-httpd-openssl.control
deleted file mode 100644
index 09bfb66821..0000000000
--- a/openwrt/package/mini_httpd/ipkg/mini-httpd-openssl.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: mini-httpd-openssl
-Priority: optional
-Section: net
-Description: A small HTTP server, built with SSL support using OpenSSL.
-Depends: libopenssl
diff --git a/openwrt/package/mini_httpd/ipkg/mini-httpd.conffiles b/openwrt/package/mini_httpd/ipkg/mini-httpd.conffiles
deleted file mode 100644
index d1123c2a37..0000000000
--- a/openwrt/package/mini_httpd/ipkg/mini-httpd.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/default/mini_httpd
-/etc/mini_httpd.conf
diff --git a/openwrt/package/mini_httpd/ipkg/mini-httpd.control b/openwrt/package/mini_httpd/ipkg/mini-httpd.control
deleted file mode 100644
index 6466feed20..0000000000
--- a/openwrt/package/mini_httpd/ipkg/mini-httpd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: mini-httpd
-Priority: optional
-Section: net
-Description: A small HTTP server, built with SSL support using MatrixSSL.
-Depends: libmatrixssl
diff --git a/openwrt/package/mini_httpd/patches/001-cgi_path.patch b/openwrt/package/mini_httpd/patches/001-cgi_path.patch
deleted file mode 100644
index c847d948b4..0000000000
--- a/openwrt/package/mini_httpd/patches/001-cgi_path.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -ruN mini_httpd-1.19-old/mini_httpd.c mini_httpd-1.19-new/mini_httpd.c
---- mini_httpd-1.19-old/mini_httpd.c 2005-10-19 01:11:24.000000000 +0200
-+++ mini_httpd-1.19-new/mini_httpd.c 2005-10-19 01:13:05.000000000 +0200
-@@ -138,10 +138,10 @@
- #define CGI_NICE 10
- #endif /* CGI_NICE */
- #ifndef CGI_PATH
--#define CGI_PATH "/usr/local/bin:/usr/ucb:/bin:/usr/bin"
-+#define CGI_PATH "/usr/bin:/bin:/usr/sbin:/sbin"
- #endif /* CGI_PATH */
- #ifndef CGI_LD_LIBRARY_PATH
--#define CGI_LD_LIBRARY_PATH "/usr/local/lib:/usr/lib"
-+#define CGI_LD_LIBRARY_PATH "/usr/lib:/lib"
- #endif /* CGI_LD_LIBRARY_PATH */
- #ifndef AUTH_FILE
- #define AUTH_FILE ".htpasswd"
diff --git a/openwrt/package/mini_httpd/patches/500-matrixssl.patch b/openwrt/package/mini_httpd/patches/500-matrixssl.patch
deleted file mode 100644
index 0ab8d68331..0000000000
--- a/openwrt/package/mini_httpd/patches/500-matrixssl.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-diff -ruN mini_httpd-1.19-orig/Makefile mini_httpd-1.19-3/Makefile
---- mini_httpd-1.19-orig/Makefile 2002-11-02 00:02:57.000000000 +0100
-+++ mini_httpd-1.19-3/Makefile 2005-03-09 08:52:21.000000000 +0100
-@@ -14,17 +14,30 @@
- # http://www.openssl.org/ Make sure the SSL_TREE definition points to the
- # tree with your OpenSSL installation - depending on how you installed it,
- # it may be in /usr/local instead of /usr/local/ssl.
-+
-+# OpenSSL
- #SSL_TREE = /usr/local/ssl
- #SSL_DEFS = -DUSE_SSL
- #SSL_INC = -I${SSL_TREE}/include
- #SSL_LIBS = -L${SSL_TREE}/lib -lssl -lcrypto
-+#SSL_OBJS =
-+
-+# MatrixSSL
-+#SSL_TREE =
-+#SSL_DEFS = -DUSE_SSL -DHAVE_MATRIXSSL
-+#SSL_INC =
-+#SSL_LIBS = -lmatrixssl
-+#SSL_OBJS = matrixssl_helper.o
-
-
--BINDIR = /usr/local/sbin
--MANDIR = /usr/local/man
-+DESTDIR =
-+
-+BINDIR = $(DESTDIR)/usr/sbin
-+MANDIR = $(DESTDIR)/usr/share/man
- CC = gcc
- CDEFS = ${SSL_DEFS} ${SSL_INC}
--CFLAGS = -O ${CDEFS}
-+OFLAGS = -O
-+CFLAGS = ${OFLAGS} ${CDEFS}
- #CFLAGS = -g ${CDEFS}
--LDFLAGS = -s
-+LDFLAGS =
- #LDFLAGS = -g
-@@ -32,12 +45,15 @@
-
- all: mini_httpd htpasswd
-
--mini_httpd: mini_httpd.o match.o tdate_parse.o
-- ${CC} ${CFLAGS} ${LDFLAGS} mini_httpd.o match.o tdate_parse.o ${LDLIBS} -o mini_httpd
-+mini_httpd: mini_httpd.o match.o tdate_parse.o ${SSL_OBJS}
-+ ${CC} ${CFLAGS} ${LDFLAGS} mini_httpd.o match.o tdate_parse.o ${SSL_OBJS} ${LDLIBS} -o mini_httpd
-
- mini_httpd.o: mini_httpd.c version.h port.h match.h tdate_parse.h mime_encodings.h mime_types.h
- ${CC} ${CFLAGS} -c mini_httpd.c
-
-+matrixssl_helper.o: matrixssl_helper.c
-+ ${CC} ${CFLAGS} -c matrixssl_helper.c
-+
- match.o: match.c match.h
- ${CC} ${CFLAGS} -c match.c
-
-@@ -71,16 +87,18 @@
- chmod 600 mini_httpd.pem
-
-
--install: all
-- rm -f ${BINDIR}/mini_httpd ${BINDIR}/htpasswd
-+install: all uninstall
- -mkdir -p ${BINDIR}
- cp mini_httpd htpasswd ${BINDIR}
-- rm -f ${MANDIR}/man8/mini_httpd.8 ${MANDIR}/man1/htpasswd.1
- -mkdir -p ${MANDIR}/man8
- cp mini_httpd.8 ${MANDIR}/man8
- -mkdir -p ${MANDIR}/man1
- cp htpasswd.1 ${MANDIR}/man1
-
-+uninstall:
-+ rm -f ${BINDIR}/mini_httpd ${BINDIR}/htpasswd
-+ rm -f ${MANDIR}/man8/mini_httpd.8 ${MANDIR}/man1/htpasswd.1
-+
- clean:
- rm -f mini_httpd mime_encodings.h mime_types.h htpasswd mini_httpd.rnd *.o core core.* *.core
-
-diff -ruN mini_httpd-1.19-orig/mini_httpd.c mini_httpd-1.19-3/mini_httpd.c
---- mini_httpd-1.19-orig/mini_httpd.c 2003-12-03 19:27:22.000000000 +0100
-+++ mini_httpd-1.19-3/mini_httpd.c 2005-03-09 08:46:28.000000000 +0100
-@@ -66,8 +66,14 @@
- #endif /* HAVE_SENDFILE */
-
- #ifdef USE_SSL
-+# ifdef HAVE_OPENSSL
- #include <openssl/ssl.h>
- #include <openssl/err.h>
-+# else /* HAVE_OPENSSL */
-+# ifdef HAVE_MATRIXSSL
-+# include "matrixssl_helper.h"
-+# endif /* HAVE_MATRIXSSL */
-+# endif /* HAVE_OPENSSL */
- #endif /* USE_SSL */
-
- extern char* crypt( const char* key, const char* setting );
-@@ -193,7 +199,13 @@
- static int do_ssl;
- static char* certfile;
- static char* cipher;
-+#ifdef HAVE_OPENSSL
- static SSL_CTX* ssl_ctx;
-+#else /* HAVE_OPENSSL */
-+ #ifdef HAVE_MATRIXSSL
-+static sslKeys_t* keys;
-+ #endif /* HAVE_MATRIXSSL */
-+#endif /* HAVE_OPENSSL */
- #endif /* USE_SSL */
- static char cwd[MAXPATHLEN];
- static int got_hup;
-@@ -540,6 +552,7 @@
- #ifdef USE_SSL
- if ( do_ssl )
- {
-+# ifdef HAVE_OPENSSL
- SSL_load_error_strings();
- SSLeay_add_ssl_algorithms();
- ssl_ctx = SSL_CTX_new( SSLv23_server_method() );
-@@ -559,6 +572,17 @@
- exit( 1 );
- }
- }
-+# else /* HAVE_OPENSSL */
-+# ifdef HAVE_MATRIXSSL
-+ matrixSslOpen();
-+ if ( matrixSslReadKeys( &keys, certfile, certfile, NULL, NULL ) < 0 )
-+ {
-+ syslog( LOG_CRIT, "can't load certificate and/or private key\n");
-+ (void) fprintf( stderr, "%s: can't load certificate and/or private key\n", argv0 );
-+ exit( 1 );
-+ }
-+# endif /* HAVE_MATRIXSSL */
-+# endif /* HAVE_OPENSSL */
- }
- #endif /* USE_SSL */
-
-@@ -1174,6 +1198,7 @@
- #ifdef USE_SSL
- if ( do_ssl )
- {
-+# ifdef HAVE_OPENSSL
- ssl = SSL_new( ssl_ctx );
- SSL_set_fd( ssl, conn_fd );
- if ( SSL_accept( ssl ) == 0 )
-@@ -1181,6 +1206,16 @@
- ERR_print_errors_fp( stderr );
- exit( 1 );
- }
-+# else /* HAVE_OPENSSL */
-+# ifdef HAVE_MATRIXSSL
-+ ssl = SSL_new(keys);
-+ SSL_set_fd( ssl, conn_fd );
-+ if ( SSL_accept( ssl ) <= 0 )
-+ {
-+ perror( "SSL_accept" );
-+ }
-+# endif /* HAVE_MATRIXSSL */
-+# endif /* HAVE_OPENSSL */
- }
- #endif /* USE_SSL */
-
diff --git a/openwrt/package/mini_sendmail/Config.in b/openwrt/package/mini_sendmail/Config.in
deleted file mode 100644
index 1b0a4ff329..0000000000
--- a/openwrt/package/mini_sendmail/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_MINI_SENDMAIL
- prompt "mini-sendmail..................... A small sendmail-compatible mail forwarder"
- tristate
- default m if CONFIG_DEVEL
- help
- mini_sendmail reads its standard input up to an end-of-file and sends a
- copy of the message found there to all of the addresses listed.
- The message is sent by connecting to a local SMTP server. This means
- mini_sendmail can be used to send email from inside a chroot(2) area.
-
- http://www.acme.com/software/mini_sendmail/
-
diff --git a/openwrt/package/mini_sendmail/Makefile b/openwrt/package/mini_sendmail/Makefile
deleted file mode 100644
index 2d7b60fbe7..0000000000
--- a/openwrt/package/mini_sendmail/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=mini-sendmail
-PKG_VERSION:=1.3.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=fff344184e98cff0ea4d817da9d29383
-
-PKG_SOURCE_URL:=http://www.acme.com/software/mini_sendmail/
-PKG_SOURCE:=mini_sendmail-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/mini_sendmail-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MINI_SENDMAIL,mini-sendmail,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- OFLAGS="$(TARGET_CFLAGS)" \
- all
- touch $@
-
-$(IPKG_MINI_SENDMAIL):
- install -d -m0755 $(IDIR_MINI_SENDMAIL)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/mini_sendmail $(IDIR_MINI_SENDMAIL)/usr/sbin/
- ln -sf mini_sendmail $(IDIR_MINI_SENDMAIL)/usr/sbin/sendmail
- $(RSTRIP) $(IDIR_MINI_SENDMAIL)
- $(IPKG_BUILD) $(IDIR_MINI_SENDMAIL) $(PACKAGE_DIR)
diff --git a/openwrt/package/mini_sendmail/ipkg/mini-sendmail.control b/openwrt/package/mini_sendmail/ipkg/mini-sendmail.control
deleted file mode 100644
index c08e16e1c6..0000000000
--- a/openwrt/package/mini_sendmail/ipkg/mini-sendmail.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: mini-sendmail
-Priority: optional
-Section: net
-Description: A small sendmail-compatible mail forwarder
diff --git a/openwrt/package/mini_sendmail/patches/500-flags.patch b/openwrt/package/mini_sendmail/patches/500-flags.patch
deleted file mode 100644
index eb5d65a1a9..0000000000
--- a/openwrt/package/mini_sendmail/patches/500-flags.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- mini_sendmail-1.3.5/Makefile.orig 2002-01-04 07:05:25.000000000 +0100
-+++ mini_sendmail-1.3.5/Makefile 2005-06-17 01:57:06.000000000 +0200
-@@ -7,9 +7,10 @@
- BINDIR = /usr/local/sbin
- MANDIR = /usr/local/man
- CC = gcc
--CFLAGS = -O
-+OFLAGS = -O
-+CFLAGS = $(OFLAGS)
- #CFLAGS = -g
--LDFLAGS = -s -static
-+LDFLAGS =
- #LDFLAGS = -g -static
- LDLIBS = $(SYSV_LIBS)
-
diff --git a/openwrt/package/miredo/Config.in b/openwrt/package/miredo/Config.in
deleted file mode 100644
index eadca0a6e5..0000000000
--- a/openwrt/package/miredo/Config.in
+++ /dev/null
@@ -1,44 +0,0 @@
-config BR2_COMPILE_MIREDO
- tristate
- default n
- depends BR2_PACKAGE_MIREDO || BR2_PACKAGE_MIREDO_SERVER
-
-config BR2_PACKAGE_MIREDO
- prompt "miredo............................ Teredo (IPv6 tunneling over UDP through NAT) client and relay daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_MIREDO
- select BR2_PACKAGE_KMOD_IPV6
- select BR2_PACKAGE_KMOD_TUN
- select BR2_PACKAGE_LIBPTHREAD
- select BR2_PACKAGE_UCLIBCXX
- help
- A Teredo (IPv6 tunneling over UDP through NAT) client and relay daemon.
-
- http://www.simphalempin.com/dev/miredo/
-
- Depends:
- - kmod-ipv6
- - kmod-tun
- - libpthread
- - uClibc++
-
-config BR2_PACKAGE_MIREDO_SERVER
- prompt "miredo-server..................... Teredo (IPv6 tunneling over UDP through NAT) server daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_MIREDO
- select BR2_PACKAGE_KMOD_IPV6
- select BR2_PACKAGE_KMOD_TUN
- select BR2_PACKAGE_LIBPTHREAD
- select BR2_PACKAGE_UCLIBCXX
- help
- A Teredo (IPv6 tunneling over UDP through NAT) server daemon.
-
- http://www.simphalempin.com/dev/miredo/
-
- Depends:
- - kmod-ipv6
- - kmod-tun
- - libpthread
- - uClibc++
diff --git a/openwrt/package/miredo/Makefile b/openwrt/package/miredo/Makefile
deleted file mode 100644
index 4b9837663e..0000000000
--- a/openwrt/package/miredo/Makefile
+++ /dev/null
@@ -1,94 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=miredo
-PKG_VERSION:=0.5.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=bbbbf60db1346af0bbba6602067ed7ab
-
-PKG_SOURCE_URL:=http://people.via.ecp.fr/~rem/miredo/v0.5/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MIREDO,miredo,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,MIREDO_SERVER,miredo-server,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- ( cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti -nostdinc++" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-nodefaultlibs -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-luClibc++ -lc -lm" \
- ac_cv_file__proc_self_maps=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --disable-shared \
- --enable-static \
- --with-gnu-ld \
- --disable-rpath \
- --disable-chroot \
- --enable-teredo-client \
- --enable-teredo-relay \
- --enable-teredo-server \
- --enable-miredo-user=root \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CXXLINK="\$$(LINK)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_MIREDO):
- install -d -m0755 $(IDIR_MIREDO)/etc
- $(CP) $(PKG_INSTALL_DIR)/etc/miredo.conf-dist $(IDIR_MIREDO)/etc/miredo.conf
- install -d -m0755 $(IDIR_MIREDO)/etc/init.d
- install -m0755 ./files/miredo.init $(IDIR_MIREDO)/etc/init.d/miredo
- install -d -m0755 $(IDIR_MIREDO)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/miredo $(IDIR_MIREDO)/usr/sbin/
- $(RSTRIP) $(IDIR_MIREDO)
- $(IPKG_BUILD) $(IDIR_MIREDO) $(PACKAGE_DIR)
-
-$(IPKG_MIREDO_SERVER):
- install -d -m0755 $(IDIR_MIREDO_SERVER)/etc/
- $(CP) $(PKG_INSTALL_DIR)/etc/miredo-server.conf-dist $(IDIR_MIREDO_SERVER)/etc/miredo-server.conf
- install -d -m0755 $(IDIR_MIREDO_SERVER)/etc/init.d
- install -m0755 ./files/miredo-server.init $(IDIR_MIREDO_SERVER)/etc/init.d/miredo-server
- install -d -m0755 $(IDIR_MIREDO_SERVER)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/miredo-server $(IDIR_MIREDO_SERVER)/usr/sbin/
- $(RSTRIP) $(IDIR_MIREDO_SERVER)
- $(IPKG_BUILD) $(IDIR_MIREDO_SERVER) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/miredo/files/miredo-server.init b/openwrt/package/miredo/files/miredo-server.init
deleted file mode 100644
index b41a86668e..0000000000
--- a/openwrt/package/miredo/files/miredo-server.init
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-BIN=miredo-server
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- [ -d $RUN_D ] || mkdir -p $RUN_D
- insmod ipv6
- insmod tun
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- restart)
- $0 stop
- $0 start
- ;;
- *)
- echo "usage: $0 (start|stop|restart)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/miredo/files/miredo.init b/openwrt/package/miredo/files/miredo.init
deleted file mode 100644
index e305472aca..0000000000
--- a/openwrt/package/miredo/files/miredo.init
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-BIN=miredo
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- [ -d $RUN_D ] || mkdir -p $RUN_D
- insmod ipv6
- insmod tun
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- restart)
- $0 stop
- $0 start
- ;;
- *)
- echo "usage: $0 (start|stop|restart)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/miredo/ipkg/miredo-server.conffiles b/openwrt/package/miredo/ipkg/miredo-server.conffiles
deleted file mode 100644
index ca3424bdcf..0000000000
--- a/openwrt/package/miredo/ipkg/miredo-server.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/miredo-server.conf
diff --git a/openwrt/package/miredo/ipkg/miredo-server.control b/openwrt/package/miredo/ipkg/miredo-server.control
deleted file mode 100644
index ebbc3cc584..0000000000
--- a/openwrt/package/miredo/ipkg/miredo-server.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: miredo-server
-Priority: optional
-Section: net
-Depends: kmod-ipv6, kmod-tun, libpthread, uclibc++
-Description: A Teredo (IPv6 tunneling over UDP through NAT) server daemon
diff --git a/openwrt/package/miredo/ipkg/miredo.conffiles b/openwrt/package/miredo/ipkg/miredo.conffiles
deleted file mode 100644
index f7428b788f..0000000000
--- a/openwrt/package/miredo/ipkg/miredo.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/miredo.conf
diff --git a/openwrt/package/miredo/ipkg/miredo.control b/openwrt/package/miredo/ipkg/miredo.control
deleted file mode 100644
index 2794f3bdea..0000000000
--- a/openwrt/package/miredo/ipkg/miredo.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: miredo
-Priority: optional
-Section: net
-Depends: kmod-ipv6, kmod-tun, libpthread, uclibc++
-Description: A Teredo (IPv6 tunneling over UDP through NAT) client and relay daemon
diff --git a/openwrt/package/monit/Config.in b/openwrt/package/monit/Config.in
deleted file mode 100644
index d8221ef59c..0000000000
--- a/openwrt/package/monit/Config.in
+++ /dev/null
@@ -1,35 +0,0 @@
-#menu "monit............................. System services monitoring utility"
-
-config BR2_COMPILE_MONIT
- tristate
- default n
- depends BR2_PACKAGE_MONIT || BR2_PACKAGE_MONIT_NOSSL
-
-config BR2_PACKAGE_MONIT
- prompt "monit............................. System services monitoring utility, with SSL support"
- tristate
- select BR2_COMPILE_MONIT
- select BR2_PACKAGE_LIBPTHREAD
- select BR2_PACKAGE_LIBOPENSSL
- default m if CONFIG_DEVEL
- help
- An utility for monitoring services on a Unix system
-
- This package is built with SSL support.
-
- http://www.tildeslash.com/monit/
-
-config BR2_PACKAGE_MONIT_NOSSL
- prompt "monit-nossl....................... System services monitoring utility, without SSL support"
- tristate
- select BR2_COMPILE_MONIT
- select BR2_PACKAGE_LIBPTHREAD
- default m if CONFIG_DEVEL
- help
- An utility for monitoring services on a Unix system.
-
- This package is built without SSL support.
-
- http://www.tildeslash.com/monit/
-
-#endmenu
diff --git a/openwrt/package/monit/Makefile b/openwrt/package/monit/Makefile
deleted file mode 100644
index ce4b738907..0000000000
--- a/openwrt/package/monit/Makefile
+++ /dev/null
@@ -1,105 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=monit
-PKG_VERSION:=4.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=4e53aa44e4ca264e61c7c401cee4e697
-
-PKG_SOURCE_URL:=http://www.tildeslash.com/monit/dist/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MONIT,monit,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,MONIT_NOSSL,monit-nossl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
-ifneq ($(BR2_PACKAGE_MONIT),)
- ( cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/sbin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --with-ssl \
- --with-ssl-dir="$(STAGING_DIR)/usr" \
- );
- $(MAKE) -C $(PKG_BUILD_DIR)
- ( cd $(PKG_BUILD_DIR); mv monit monit-ssl; )
-endif
-ifneq ($(BR2_PACKAGE_MONIT),)
- ( cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/sbin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --without-ssl \
- );
- $(MAKE) -C $(PKG_BUILD_DIR)
- ( cd $(PKG_BUILD_DIR); mv monit monit-nossl; )
- $(MAKE) -C $(PKG_BUILD_DIR) clean
-endif
- touch $@
-
-$(IPKG_MONIT):
- install -d -m0755 $(IDIR_MONIT)/etc
- install -m0600 $(PKG_BUILD_DIR)/monitrc $(IDIR_MONIT)/etc/
- install -d -m0755 $(IDIR_MONIT)/etc/init.d
- install -m0755 ./files/monit.init $(IDIR_MONIT)/etc/init.d/monit
- install -d -m0755 $(IDIR_MONIT)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/monit-ssl $(IDIR_MONIT)/usr/sbin/monit
- $(RSTRIP) $(IDIR_MONIT)
- $(IPKG_BUILD) $(IDIR_MONIT) $(PACKAGE_DIR)
-
-$(IPKG_MONIT_NOSSL):
- install -d -m0755 $(IDIR_MONIT_NOSSL)/etc
- install -m0600 $(PKG_BUILD_DIR)/monitrc $(IDIR_MONIT_NOSSL)/etc/
- install -d -m0755 $(IDIR_MONIT_NOSSL)/etc/init.d
- install -m0755 ./files/monit.init $(IDIR_MONIT_NOSSL)/etc/init.d/monit
- install -d -m0755 $(IDIR_MONIT_NOSSL)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/monit-nossl $(IDIR_MONIT_NOSSL)/usr/sbin/monit
- $(RSTRIP) $(IDIR_MONIT_NOSSL)
- $(IPKG_BUILD) $(IDIR_MONIT_NOSSL) $(PACKAGE_DIR)
diff --git a/openwrt/package/monit/files/monit.init b/openwrt/package/monit/files/monit.init
deleted file mode 100644
index 50b18de149..0000000000
--- a/openwrt/package/monit/files/monit.init
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-BIN=monit
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- mkdir -p $RUN_D
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- restart)
- $0 stop
- $0 start
- ;;
- *)
- echo "usage: $0 (start|stop|restart)"
- exit 1
-esac
-exit $?
diff --git a/openwrt/package/monit/ipkg/monit-nossl.conffiles b/openwrt/package/monit/ipkg/monit-nossl.conffiles
deleted file mode 100644
index 365679c6e7..0000000000
--- a/openwrt/package/monit/ipkg/monit-nossl.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/monitrc
diff --git a/openwrt/package/monit/ipkg/monit-nossl.control b/openwrt/package/monit/ipkg/monit-nossl.control
deleted file mode 100644
index d10b711daa..0000000000
--- a/openwrt/package/monit/ipkg/monit-nossl.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: monit-nossl
-Priority: optional
-Section: admin
-Description: An utility for system services monitoring, without SSL support.
-Depends: libpthread
diff --git a/openwrt/package/monit/ipkg/monit.conffiles b/openwrt/package/monit/ipkg/monit.conffiles
deleted file mode 100644
index 365679c6e7..0000000000
--- a/openwrt/package/monit/ipkg/monit.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/monitrc
diff --git a/openwrt/package/monit/ipkg/monit.control b/openwrt/package/monit/ipkg/monit.control
deleted file mode 100644
index 6c947d08fb..0000000000
--- a/openwrt/package/monit/ipkg/monit.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: monit
-Priority: optional
-Section: admin
-Description: An utility for system services monitoring, with SSL support.
-Depends: libpthread, libopenssl
diff --git a/openwrt/package/motion/Config.in b/openwrt/package/motion/Config.in
deleted file mode 100644
index 7d5203691e..0000000000
--- a/openwrt/package/motion/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_MOTION
- prompt "motion............................ webcam motion sensing and logging"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBJPEG
- help
- Motion is a software motion detector
-
- http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
diff --git a/openwrt/package/motion/Makefile b/openwrt/package/motion/Makefile
deleted file mode 100644
index dafe4877d4..0000000000
--- a/openwrt/package/motion/Makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=motion
-PKG_VERSION:=3.2.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=71e6bd13fcca70372e9b7c7806d62b30
-
-PKG_SOURCE_URL:=@SF/motion
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MOTION,motion,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --without-ffmpeg \
- --without-jpeg-mmx \
- --without-mysql \
- --without-pgsql \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_MOTION):
- install -d -m0755 $(IDIR_MOTION)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/motion $(IDIR_MOTION)/usr/bin/
- $(RSTRIP) $(IDIR_MOTION)
- $(IPKG_BUILD) $(IDIR_MOTION) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/motion/ipkg/motion.control b/openwrt/package/motion/ipkg/motion.control
deleted file mode 100644
index 44a0c2b914..0000000000
--- a/openwrt/package/motion/ipkg/motion.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: motion
-Priority: optional
-Section: multimedia
-Depends: libjpeg, libpthread
-Description: Webcam motion sensing and logging
diff --git a/openwrt/package/motion/patches/01-ffmpeg.patch b/openwrt/package/motion/patches/01-ffmpeg.patch
deleted file mode 100644
index 1f4c73eafa..0000000000
--- a/openwrt/package/motion/patches/01-ffmpeg.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-diff -ur motion-3.2.5.1-old/motion.c motion-3.2.5.1/motion.c
---- motion-3.2.5.1-old/motion.c 2006-03-17 10:05:13.490000000 -0800
-+++ motion-3.2.5.1/motion.c 2006-03-17 10:03:38.020000000 -0800
-@@ -1246,10 +1246,10 @@
- * Note: Negative value means SIGALRM snaps are enabled
- * httpd-control snaps are always enabled.
- */
--
-+#ifdef HAVE_FFMPEG
- /* time_current_frame is used both for snapshot and timelapse features */
- time_current_frame = cnt->currenttime;
--
-+
- if ( (cnt->conf.snapshot_interval > 0 && cnt->shots == 0 &&
- time_current_frame % cnt->conf.snapshot_interval <= time_last_frame % cnt->conf.snapshot_interval) ||
- cnt->snapshot) {
-@@ -1257,7 +1257,7 @@
- cnt->snapshot = 0;
- }
-
--
-+#endif /* HAVE_FFMPEG */
- /***** MOTION LOOP - TIMELAPSE FEATURE SECTION *****/
-
- #ifdef HAVE_FFMPEG
-@@ -1331,10 +1331,9 @@
- event(cnt, EVENT_TIMELAPSEEND, NULL, NULL, NULL, cnt->currenttime_tm);
-
-
--#endif /* HAVE_FFMPEG */
-
- time_last_frame = time_current_frame;
--
-+#endif /* HAVE_FFMPEG */
-
- /***** MOTION LOOP - VIDEO LOOPBACK SECTION *****/
-
-Only in motion-3.2.5.1-old/: motion.c.orig
diff --git a/openwrt/package/motion/patches/02-honor_cppflags.patch b/openwrt/package/motion/patches/02-honor_cppflags.patch
deleted file mode 100644
index 322fb772d3..0000000000
--- a/openwrt/package/motion/patches/02-honor_cppflags.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -ruN motion-3.2.5.1-old/Makefile.in motion-3.2.5.1-new/Makefile.in
---- motion-3.2.5.1-old/Makefile.in 2006-03-07 22:52:49.000000000 +0100
-+++ motion-3.2.5.1-new/Makefile.in 2006-03-27 22:04:34.000000000 +0200
-@@ -32,6 +32,7 @@
- ################################################################################
- CFLAGS = @CFLAGS@ -Wall -DVERSION=\"$(VERSION)\" -D_REENTRANT \
- -Dsysconfdir=\"$(sysconfdir)\"
-+CPPFLAGS = @CPPFLAGS@
- LDFLAGS = @LDFLAGS@
- LIBS = @LIBS@
- VIDEO_OBJ = @VIDEO@
-@@ -115,7 +116,7 @@
- ################################################################################
- $(DEPEND_FILE): *.h $(SRC)
- @echo "Generating dependencies, please wait..."
-- @$(CC) $(CFLAGS) -M $(SRC) > .tmp
-+ @$(CC) $(CFLAGS) $(CPPFLAGS) -M $(SRC) > .tmp
- @mv -f .tmp $(DEPEND_FILE)
- @echo
-
diff --git a/openwrt/package/mpd/Config.in b/openwrt/package/mpd/Config.in
deleted file mode 100644
index 873b31085b..0000000000
--- a/openwrt/package/mpd/Config.in
+++ /dev/null
@@ -1,42 +0,0 @@
-menu "mpd............................... Music Player Daemon"
-
-config BR2_PACKAGE_MPD
- prompt "mpd............................... Music Player Daemon"
- tristate
- default m if CONFIG_DEVEL
- help
- MPD is a music player supporting flac, mp3 and ogg files.
- It is typically controlled over a network using one of it's many
- clients including mpc(console), gmpc(gnome), phpmp(php) etc.
-
- http://www.musicpd.org/
-
-config BR2_COMPILE_MPD_WITH_MP3
- prompt "MP3 support"
- bool
- default y
- depends BR2_PACKAGE_MPD
- select BR2_PACKAGE_LIBMAD
- select BR2_PACKAGE_LIBID3TAG
- help
- Enable mp3 support (libmad).
-
-config BR2_COMPILE_MPD_WITH_OGG
- prompt "Ogg Support"
- bool
- default y
- depends BR2_PACKAGE_MPD
- select BR2_PACKAGE_LIBVORBISIDEC
- help
- Enable ogg support (tremor).
-
-config BR2_COMPILE_MPD_WITH_FLAC
- prompt "FLAC Support"
- bool
- default y
- depends BR2_PACKAGE_MPD
- select BR2_PACKAGE_LIBFLAC
- help
- Enable flac support (libflac).
-
-endmenu
diff --git a/openwrt/package/mpd/Makefile b/openwrt/package/mpd/Makefile
deleted file mode 100644
index 1e97df4963..0000000000
--- a/openwrt/package/mpd/Makefile
+++ /dev/null
@@ -1,113 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=mpd
-PKG_VERSION:=0.12.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=65e62cc813f2186dff0f96f164a853f8
-
-PKG_SOURCE_URL:=http://users.tpg.com.au/davico/openwrt/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-PKG_CONFIGURE_OPTIONS := \
- --disable-alsa \
- --disable-shout \
- --disable-mod \
- --disable-audiofile \
- --disable-iconv \
- --disable-mpc \
- --disable-aac \
-
-ifneq ($(BR2_COMPILE_MPD_WITH_MP3),)
-PKG_DEPENDS += libid3tag libmad
-PKG_CONFIGURE_OPTIONS += \
- --with-id3tag-includes=$(STAGING_DIR)/usr/include \
- --with-id3tag-libraries=$(STAGING_DIR)/usr/lib \
- --with-mad-includes=$(STAGING_DIR)/usr/include \
- --with-mad-libraries=$(STAGING_DIR)/usr/lib
-else
-PKG_CONFIGURE_OPTIONS += --disable-id3 --disable-mp3
-endif
-
-ifneq ($(BR2_COMPILE_MPD_WITH_OGG),)
-PKG_DEPENDS += libvorbisidec
-PKG_CONFIGURE_OPTIONS += \
- --with-tremor \
- --with-tremor-includes=$(STAGING_DIR)/usr/include \
- --with-tremor-libraries=$(STAGING_DIR)/usr/lib
-else
-PKG_CONFIGURE_OPTIONS += --disable-ogg
-endif
-
-ifneq ($(BR2_COMPILE_MPD_WITH_FLAC),)
-PKG_DEPENDS += libflac
-PKG_CONFIGURE_OPTIONS += \
- --with-libFLAC-includes=$(STAGING_DIR)/usr/include \
- --with-libFLAC-libraries=$(STAGING_DIR)/usr/lib
-else
-PKG_CONFIGURE_OPTIONS += --disable-flac
-endif
-
-COMMA:= ,
-EMPTY:=
-SPACE:= $(EMPTY) $(EMPTY)
-PKG_DEPENDS:=$(subst $(SPACE),$(COMMA)$(SPACE),$(sort $(PKG_DEPENDS)))
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MPD,mpd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(PKG_CONFIGURE_OPTIONS) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_MPD):
- install -d -m0755 $(IDIR_MPD)/usr/bin
- install -d -m0755 $(IDIR_MPD)/etc
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/mpd $(IDIR_MPD)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/doc/mpdconf.example $(IDIR_MPD)/etc/mpd.conf
- echo "Depends: $(PKG_DEPENDS)" >> $(IDIR_MPD)/CONTROL/control
- $(RSTRIP) $(IDIR_MPD)
- $(IPKG_BUILD) $(IDIR_MPD) $(PACKAGE_DIR)
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/mpd/ipkg/mpd.conffiles b/openwrt/package/mpd/ipkg/mpd.conffiles
deleted file mode 100644
index a8d69760e1..0000000000
--- a/openwrt/package/mpd/ipkg/mpd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/mpd.conf
diff --git a/openwrt/package/mpd/ipkg/mpd.control b/openwrt/package/mpd/ipkg/mpd.control
deleted file mode 100644
index 3c1c492346..0000000000
--- a/openwrt/package/mpd/ipkg/mpd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: mpd
-Priority: optional
-Section: net
-Description: A music player for flac, mp3 and ogg.
diff --git a/openwrt/package/mrd6/Config.in b/openwrt/package/mrd6/Config.in
deleted file mode 100644
index cacebe2ac4..0000000000
--- a/openwrt/package/mrd6/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_MRD6
- prompt "mrd6.............................. IPv6 multicast routing daemon"
- tristate
- default m if CONFIG_DEVEL
- help
- Multicast is becoming a major component in next generation
- networks, used in several scenarios, from video broadcasting
- to multimedia conferencing. In order to be implemented, new
- technology needs supporting hardware and software across a set
- of devices and systems. MRD6 is an implementation of a modular
- IPv6 Multicast Routing Framework for the Linux operating system
- and provides MLDv2 (as well as MLDv1), PIM-SM and MBGP support.
-
- http://artemis.av.it.pt/mrd6/
diff --git a/openwrt/package/mrd6/Makefile b/openwrt/package/mrd6/Makefile
deleted file mode 100644
index ea92943b3c..0000000000
--- a/openwrt/package/mrd6/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=mrd6
-PKG_VERSION:=0.9.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=24a08cf1407000d628a272b08a415dda
-
-PKG_SOURCE_URL:=http://hng.av.it.pt/mrd6/download/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MRD6,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)/src \
- OPTIMIZE=yes \
- SPACE_OPTIMIZE=yes \
- FULL_STATIC=yes \
- CFLAGS="$(TARGET_CFLAGS) -DNO_INET6_OPTION" \
- CXX=$(TARGET_CROSS)g++ \
- CC=$(TARGET_CC) \
- STAGING_DIR=$(STAGING_DIR) \
- DESTDIR=$(PKG_INSTALL_DIR) \
- PREFIX=/usr/ \
- install
- install -d -m0755 $(PKG_INSTALL_DIR)/etc/init.d
- install -m0644 files/$(PKG_NAME).conf $(PKG_INSTALL_DIR)/etc
- install -m0755 files/$(PKG_NAME).init $(PKG_INSTALL_DIR)/etc/init.d/S60$(PKG_NAME)
- touch $@
-
-$(IPKG_MRD6):
- mkdir -p $(IDIR_MRD6)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/ $(IDIR_MRD6)/
- $(RSTRIP) $(IDIR_MRD6)/
- $(IPKG_BUILD) $(IDIR_MRD6) $(PACKAGE_DIR)
diff --git a/openwrt/package/mrd6/files/mrd6.conf b/openwrt/package/mrd6/files/mrd6.conf
deleted file mode 100644
index 84ce923a34..0000000000
--- a/openwrt/package/mrd6/files/mrd6.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-log {
- attach stderr normal;
- attach default "/var/log/mrd6.log" message_err;
-}
-
-interfaces br0 enable = false; // Should be vlan0 + eth1 but Linux bridge seems broken for multicast
-interfaces eth0 enable = false; // Interface to internal bridge
-handle-proper-bridge = true; // use ETH_P_ALL to see all packets on wrt54g
-
-// The default configured RP is m6bone's Renater RP.
-// Change this according to your setup
-
-groups ff00::/8 pim rp = 2001:660:3007:300:1::;
-
diff --git a/openwrt/package/mrd6/files/mrd6.init b/openwrt/package/mrd6/files/mrd6.init
deleted file mode 100755
index 886723f15e..0000000000
--- a/openwrt/package/mrd6/files/mrd6.init
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-
-case $1 in
-start)
- /sbin/lsmod | grep ipv6 > /dev/null
- if [ "$?" != "0" ]
- then
- echo -n "IPv6 stack required by mrd6. Loading ipv6 module: "
- /sbin/insmod ipv6
- echo "Done."
- fi
- echo -n "Starting IPv6 multicast router (mrd6): "
- /usr/sbin/mrd6 -f /etc/mrd6.conf -D
- echo "Done."
- ;;
-stop)
- echo -n "Stopping IPv6 multicast router (mrd6): "
- killall mrd6
- echo "Done."
- ;;
-restart)
- $0 stop
- $0 start
- ;;
-*)
- echo "Usage: $0 {start | stop | restart}"
- ;;
-esac
-exit 0
diff --git a/openwrt/package/mrd6/ipkg/mrd6.control b/openwrt/package/mrd6/ipkg/mrd6.control
deleted file mode 100644
index 3a50f17131..0000000000
--- a/openwrt/package/mrd6/ipkg/mrd6.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: mrd6
-Architecture: mipsel
-Section: net
-Priority: optional
-Depends: kmod-ipv6, libnotimpl
-Description: IPv6 multicast routing daemon
diff --git a/openwrt/package/mrd6/patches/01-ceilf_replacement.patch b/openwrt/package/mrd6/patches/01-ceilf_replacement.patch
deleted file mode 100644
index 1b4ac6213c..0000000000
--- a/openwrt/package/mrd6/patches/01-ceilf_replacement.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -urN mrd6-0.9.5/src/Makefile mrd6-0.9.5.new/src/Makefile
---- mrd6-0.9.5/src/Makefile 2005-12-18 19:15:04.000000000 +0100
-+++ mrd6-0.9.5.new/src/Makefile 2006-02-11 18:30:44.000000000 +0100
-@@ -43,7 +43,7 @@
- CFLAGS += -DNO_INET6_OPTION
- endif
-
--DEST_PREFIX = $(DESTDIR)$(PREFIX)
-+DEST_PREFIX = $(DESTDIR)/$(PREFIX)
-
- ifeq ($(OPTIMIZE),yes)
- ifeq ($(SPACE_OPTIMIZE),yes)
-@@ -97,7 +97,7 @@
- endif
- endif
-
--LDFLAGS += -lm
-+LDFLAGS += -lm -lnotimpl -L$(STAGING_DIR)/usr/lib
- ifeq ($(PLATFORM),OS_LINUX)
- LDFLAGS += -ldl
- endif
diff --git a/openwrt/package/mt-daapd/Config.in b/openwrt/package/mt-daapd/Config.in
deleted file mode 100644
index 3eae933fc9..0000000000
--- a/openwrt/package/mt-daapd/Config.in
+++ /dev/null
@@ -1,31 +0,0 @@
-config BR2_PACKAGE_MT_DAAPD
- prompt "mt-daapd.......................... A multi-threaded DAAP (Digital Audio Access Protocol) daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBGDBM
- select BR2_PACKAGE_LIBHOWL
- select BR2_PACKAGE_LIBID3TAG
- help
- mt-daapd is a program which acts as an iTunes (DAAP) server for Linux and
- other POSIX unixes. It may eventually support Win32 as well.
-
- Some random features that it supports:
-
- * Supports the Roku SoundBridge (query/browse/index support)
- * Supports periodic rescans of the database
- * Can advertise shoutcast streams
- * Supports password-protected shares
- * Is web-configurable and managable
- * Support dynamic playlists, like iTunes "Smart playlists"
- * Probably other things I've forgotten
-
- All is not perfect, however. Currently, there are several drawbacks to it:
-
- * database is indexed by inode, so all music must be on one filesystem
- * browse by artist is slow on Roku, times out (with large databases ~10K songs)
- * Probably other things I've forgotten
-
- http://www.mt-daapd.org/
-
- Depends: libgdbm, libhowl, libid3tag, libpthread
-
diff --git a/openwrt/package/mt-daapd/Makefile b/openwrt/package/mt-daapd/Makefile
deleted file mode 100644
index 055a969955..0000000000
--- a/openwrt/package/mt-daapd/Makefile
+++ /dev/null
@@ -1,81 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=mt-daapd
-PKG_VERSION:=0.2.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=2e1cdbe6b94ef153e915806f80a28dca
-
-PKG_SOURCE_URL:=@SF/mt-daapd
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MT_DAAPD,mt-daapd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_func_setpgrp_void=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --enable-mdns \
- --enable-howl \
- --with-id3tag="$(STAGING_DIR)/usr" \
- --with-gdbm-includes="$(STAGING_DIR)/usr/include" \
- --with-gdbm-libs="$(STAGING_DIR)/usr/lib" \
- --with-howl-includes="$(STAGING_DIR)/usr/include/howl" \
- --with-howl-libs="$(STAGING_DIR)/usr/lib" \
- --without-static-libs \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_MT_DAAPD):
- install -m0755 -d $(IDIR_MT_DAAPD)/etc
- install -m0644 $(PKG_BUILD_DIR)/contrib/mt-daapd.conf $(IDIR_MT_DAAPD)/etc/
- install -m0644 $(PKG_BUILD_DIR)/contrib/mt-daapd.playlist $(IDIR_MT_DAAPD)/etc/
- install -m0755 -d $(IDIR_MT_DAAPD)/etc/init.d
- install -m0755 ./files/mt-daapd.init $(IDIR_MT_DAAPD)/etc/init.d/mt-daapd
- install -m0755 -d $(IDIR_MT_DAAPD)/usr/share
- $(CP) $(PKG_INSTALL_DIR)/usr/share/mt-daapd $(IDIR_MT_DAAPD)/usr/share/
- install -m0755 -d $(IDIR_MT_DAAPD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/mt-daapd $(IDIR_MT_DAAPD)/usr/sbin/
- $(RSTRIP) $(IDIR_MT_DAAPD)
- $(IPKG_BUILD) $(IDIR_MT_DAAPD) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/mt-daapd/files/mt-daapd.init b/openwrt/package/mt-daapd/files/mt-daapd.init
deleted file mode 100644
index 2968769c78..0000000000
--- a/openwrt/package/mt-daapd/files/mt-daapd.init
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-BIN=mt-daapd
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- [ -d $RUN_D ] || mkdir -p $RUN_D
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill -INT $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/mt-daapd/ipkg/mt-daapd.conffiles b/openwrt/package/mt-daapd/ipkg/mt-daapd.conffiles
deleted file mode 100644
index 2e5ee2b4d4..0000000000
--- a/openwrt/package/mt-daapd/ipkg/mt-daapd.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/mt-daapd.conf
-/etc/mt-daapd.playlist
diff --git a/openwrt/package/mt-daapd/ipkg/mt-daapd.control b/openwrt/package/mt-daapd/ipkg/mt-daapd.control
deleted file mode 100644
index 0c7e6889c9..0000000000
--- a/openwrt/package/mt-daapd/ipkg/mt-daapd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: mt-daapd
-Priority: optional
-Section: net
-Depends: libgdbm, libhowl, libid3tag, libpthread
-Description: a multi-threaded DAAP (Digital Audio Access Protocol) daemon
diff --git a/openwrt/package/mtd/Config.in b/openwrt/package/mtd/Config.in
deleted file mode 100644
index 5420dff561..0000000000
--- a/openwrt/package/mtd/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_PACKAGE_MTD
- prompt "mtd............................... Update utility for trx firmware images"
- tristate
- default y
- help
- Update utility for trx firmware images.
-
-config BR2_PACKAGE_MTD_STATIC
- prompt "mtd-static........................ Update utility for trx firmware images (statically linked)"
- tristate
- default n
- help
- Update utility for trx firmware images (statically linked). To update
- from other firmware or older OpenWrt releases.
-
diff --git a/openwrt/package/mtd/Makefile b/openwrt/package/mtd/Makefile
deleted file mode 100644
index 61e7e74c23..0000000000
--- a/openwrt/package/mtd/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME := mtd
-PKG_RELEASE := 4
-
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MTD,$(PKG_NAME),$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,MTD_STATIC,mtd-static,$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.prepared:
- mkdir -p $(PKG_BUILD_DIR)
- touch $@
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(TARGET_CC) $(TARGET_CFLAGS) -o $(PKG_BUILD_DIR)/mtd mtd.c
- $(TARGET_CC) -static $(TARGET_CFLAGS) -o $(PKG_BUILD_DIR)/mtd-static mtd.c
- touch $@
-
-$(IPKG_MTD):
- install -d -m0755 $(IDIR_MTD)/sbin
- install -m0755 $(PKG_BUILD_DIR)/mtd $(IDIR_MTD)/sbin
- $(RSTRIP) $(IDIR_MTD)/sbin/*
- $(IPKG_BUILD) $(IDIR_MTD) $(PACKAGE_DIR)
-
-$(IPKG_MTD_STATIC):
- install -d -m0755 $(IDIR_MTD_STATIC)/sbin
- install -m0755 $(PKG_BUILD_DIR)/mtd-static $(IDIR_MTD_STATIC)/sbin
- $(RSTRIP) $(IDIR_MTD_STATIC)/sbin/*
- $(IPKG_BUILD) $(IDIR_MTD_STATIC) $(PACKAGE_DIR)
diff --git a/openwrt/package/mtd/ipkg/mtd-static.control b/openwrt/package/mtd/ipkg/mtd-static.control
deleted file mode 100644
index ded243a8bc..0000000000
--- a/openwrt/package/mtd/ipkg/mtd-static.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: mtd-static
-Priority: optional
-Section: sys
-Description: Tool for modifying the flash chip (statically linked)
diff --git a/openwrt/package/mtd/ipkg/mtd.control b/openwrt/package/mtd/ipkg/mtd.control
deleted file mode 100644
index 3145581c9b..0000000000
--- a/openwrt/package/mtd/ipkg/mtd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: mtd
-Priority: optional
-Section: sys
-Description: Tool for modifying the flash chip
diff --git a/openwrt/package/mtd/mtd.c b/openwrt/package/mtd/mtd.c
deleted file mode 100644
index 23e99160a1..0000000000
--- a/openwrt/package/mtd/mtd.c
+++ /dev/null
@@ -1,475 +0,0 @@
-/*
- * mtd - simple memory technology device manipulation tool
- *
- * Copyright (C) 2005 Waldemar Brodkorb <wbx@dass-it.de>,
- * Felix Fietkau <nbd@openwrt.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.
- *
- * $Id$
- *
- * The code is based on the linux-mtd examples.
- */
-
-#include <limits.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <error.h>
-#include <time.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/mount.h>
-#include <sys/stat.h>
-#include <sys/reboot.h>
-#include <string.h>
-
-#include <linux/mtd/mtd.h>
-
-#define TRX_MAGIC 0x30524448 /* "HDR0" */
-#define BUFSIZE (16 * 1024)
-#define MAX_ARGS 8
-
-#define DEBUG
-
-#define SYSTYPE_UNKNOWN 0
-#define SYSTYPE_BROADCOM 1
-/* to be continued */
-
-struct trx_header {
- uint32_t magic; /* "HDR0" */
- uint32_t len; /* Length of file including header */
- uint32_t crc32; /* 32-bit CRC from flag_version to end of file */
- uint32_t flag_version; /* 0:15 flags, 16:31 version */
- uint32_t offsets[3]; /* Offsets of partitions from start of header */
-};
-
-char buf[BUFSIZE];
-int buflen;
-
-int
-image_check_bcom(int imagefd, const char *mtd)
-{
- struct trx_header *trx = (struct trx_header *) buf;
- struct mtd_info_user mtdInfo;
- int fd;
-
- buflen = read(imagefd, buf, 32);
- if (buflen < 32) {
- fprintf(stdout, "Could not get image header, file too small (%ld bytes)\n", buflen);
- return 0;
- }
-
- switch(trx->magic) {
- case 0x47343557: /* W54G */
- case 0x53343557: /* W54S */
- case 0x73343557: /* W54s */
- case 0x46343557: /* W54F */
- case 0x55343557: /* W54U */
- /* ignore the first 32 bytes */
- buflen = read(imagefd, buf, sizeof(struct trx_header));
- break;
- }
-
- if (trx->magic != TRX_MAGIC || trx->len < sizeof(struct trx_header)) {
- fprintf(stderr, "Bad trx header\n");
- fprintf(stderr, "If this is a firmware in bin format, like some of the\n"
- "original firmware files are, use following command to convert to trx:\n"
- "dd if=firmware.bin of=firmware.trx bs=32 skip=1\n");
- return 0;
- }
-
- /* check if image fits to mtd device */
- fd = mtd_open(mtd, O_RDWR | O_SYNC);
- if(fd < 0) {
- fprintf(stderr, "Could not open mtd device: %s\n", mtd);
- exit(1);
- }
-
- if(ioctl(fd, MEMGETINFO, &mtdInfo)) {
- fprintf(stderr, "Could not get MTD device info from %s\n", mtd);
- exit(1);
- }
-
- if(mtdInfo.size < trx->len) {
- fprintf(stderr, "Image too big for partition: %s\n", mtd);
- close(fd);
- return 0;
- }
-
- close(fd);
- return 1;
-}
-
-int
-image_check(int imagefd, const char *mtd)
-{
- int fd, systype;
- size_t count;
- char *c;
- FILE *f;
-
- systype = SYSTYPE_UNKNOWN;
- f = fopen("/proc/cpuinfo", "r");
- while (!feof(f) && (fgets(buf, BUFSIZE - 1, f) != NULL)) {
- if ((strncmp(buf, "system type", 11) == 0) && (c = strchr(buf, ':'))) {
- c += 2;
- if (strncmp(c, "Broadcom BCM947XX", 17) == 0)
- systype = SYSTYPE_BROADCOM;
- }
- }
- fclose(f);
-
- switch(systype) {
- case SYSTYPE_BROADCOM:
- return image_check_bcom(imagefd, mtd);
- default:
- return 1;
- }
-}
-
-int mtd_check(char *mtd)
-{
- struct mtd_info_user mtdInfo;
- int fd;
-
- fd = mtd_open(mtd, O_RDWR | O_SYNC);
- if(fd < 0) {
- fprintf(stderr, "Could not open mtd device: %s\n", mtd);
- return 0;
- }
-
- if(ioctl(fd, MEMGETINFO, &mtdInfo)) {
- fprintf(stderr, "Could not get MTD device info from %s\n", mtd);
- close(fd);
- return 0;
- }
-
- close(fd);
- return 1;
-}
-
-int
-mtd_unlock(const char *mtd)
-{
- int fd;
- struct mtd_info_user mtdInfo;
- struct erase_info_user mtdLockInfo;
-
- fd = mtd_open(mtd, O_RDWR | O_SYNC);
- if(fd < 0) {
- fprintf(stderr, "Could not open mtd device: %s\n", mtd);
- exit(1);
- }
-
- if(ioctl(fd, MEMGETINFO, &mtdInfo)) {
- fprintf(stderr, "Could not get MTD device info from %s\n", mtd);
- close(fd);
- exit(1);
- }
-
- mtdLockInfo.start = 0;
- mtdLockInfo.length = mtdInfo.size;
- if(ioctl(fd, MEMUNLOCK, &mtdLockInfo)) {
- close(fd);
- return 0;
- }
-
- close(fd);
- return 0;
-}
-
-int
-mtd_open(const char *mtd, int flags)
-{
- FILE *fp;
- char dev[PATH_MAX];
- int i;
-
- if ((fp = fopen("/proc/mtd", "r"))) {
- while (fgets(dev, sizeof(dev), fp)) {
- if (sscanf(dev, "mtd%d:", &i) && strstr(dev, mtd)) {
- snprintf(dev, sizeof(dev), "/dev/mtd/%d", i);
- fclose(fp);
- return open(dev, flags);
- }
- }
- fclose(fp);
- }
-
- return open(mtd, flags);
-}
-
-int
-mtd_erase(const char *mtd)
-{
- int fd;
- struct mtd_info_user mtdInfo;
- struct erase_info_user mtdEraseInfo;
-
- fd = mtd_open(mtd, O_RDWR | O_SYNC);
- if(fd < 0) {
- fprintf(stderr, "Could not open mtd device: %s\n", mtd);
- exit(1);
- }
-
- if(ioctl(fd, MEMGETINFO, &mtdInfo)) {
- fprintf(stderr, "Could not get MTD device info from %s\n", mtd);
- close(fd);
- exit(1);
- }
-
- mtdEraseInfo.length = mtdInfo.erasesize;
-
- for (mtdEraseInfo.start = 0;
- mtdEraseInfo.start < mtdInfo.size;
- mtdEraseInfo.start += mtdInfo.erasesize) {
-
- ioctl(fd, MEMUNLOCK, &mtdEraseInfo);
- if(ioctl(fd, MEMERASE, &mtdEraseInfo)) {
- fprintf(stderr, "Could not erase MTD device: %s\n", mtd);
- close(fd);
- exit(1);
- }
- }
-
- close(fd);
- return 0;
-
-}
-
-int
-mtd_write(int imagefd, const char *mtd, int quiet)
-{
- int fd, i, result;
- size_t r, w, e;
- struct mtd_info_user mtdInfo;
- struct erase_info_user mtdEraseInfo;
- int ret = 0;
-
- fd = mtd_open(mtd, O_RDWR | O_SYNC);
- if(fd < 0) {
- fprintf(stderr, "Could not open mtd device: %s\n", mtd);
- exit(1);
- }
-
- if(ioctl(fd, MEMGETINFO, &mtdInfo)) {
- fprintf(stderr, "Could not get MTD device info from %s\n", mtd);
- close(fd);
- exit(1);
- }
-
- r = w = e = 0;
- if (!quiet)
- fprintf(stderr, " [ ]");
-
- for (;;) {
- /* buffer may contain data already (from trx check) */
- r = buflen;
- r += read(imagefd, buf + buflen, BUFSIZE - buflen);
- w += r;
-
- /* EOF */
- if (r <= 0) break;
-
- /* need to erase the next block before writing data to it */
- while (w > e) {
- mtdEraseInfo.start = e;
- mtdEraseInfo.length = mtdInfo.erasesize;
-
- if (!quiet)
- fprintf(stderr, "\b\b\b[e]");
- /* erase the chunk */
- if (ioctl (fd,MEMERASE,&mtdEraseInfo) < 0) {
- fprintf(stderr, "Erasing mtd failed: %s\n", mtd);
- exit(1);
- }
- e += mtdInfo.erasesize;
- }
-
- if (!quiet)
- fprintf(stderr, "\b\b\b[w]");
-
- if ((result = write(fd, buf, r)) < r) {
- if (result < 0) {
- fprintf(stderr, "Error writing image.\n");
- exit(1);
- } else {
- fprintf(stderr, "Insufficient space.\n");
- exit(1);
- }
- }
-
- buflen = 0;
- }
- if (!quiet)
- fprintf(stderr, "\b\b\b\b");
-
- close(fd);
- return 0;
-}
-
-void usage(void)
-{
- fprintf(stderr, "Usage: mtd [<options> ...] <command> [<arguments> ...] <device>\n\n"
- "The device is in the format of mtdX (eg: mtd4) or its label.\n"
- "mtd recognizes these commands:\n"
- " unlock unlock the device\n"
- " erase erase all data on device\n"
- " write <imagefile>|- write <imagefile> (use - for stdin) to device\n"
- "Following options are available:\n"
- " -q quiet mode (once: no [w] on writing,\n"
- " twice: no status messages)\n"
- " -r reboot after successful command\n"
- " -f force write without trx checks\n"
- " -e <device> erase <device> before executing the command\n\n"
- "Example: To write linux.trx to mtd4 labeled as linux and reboot afterwards\n"
- " mtd -r write linux.trx linux\n\n");
- exit(1);
-}
-
-int main (int argc, char **argv)
-{
- int ch, i, boot, unlock, imagefd, force, quiet, unlocked;
- char *erase[MAX_ARGS], *device, *imagefile;
- enum {
- CMD_ERASE,
- CMD_WRITE,
- CMD_UNLOCK
- } cmd;
-
- erase[0] = NULL;
- boot = 0;
- force = 0;
- buflen = 0;
- quiet = 0;
-
- while ((ch = getopt(argc, argv, "frqe:")) != -1)
- switch (ch) {
- case 'f':
- force = 1;
- break;
- case 'r':
- boot = 1;
- break;
- case 'q':
- quiet++;
- break;
- case 'e':
- i = 0;
- while ((erase[i] != NULL) && ((i + 1) < MAX_ARGS))
- i++;
-
- erase[i++] = optarg;
- erase[i] = NULL;
- break;
-
- case '?':
- default:
- usage();
- }
- argc -= optind;
- argv += optind;
-
- if (argc < 2)
- usage();
-
- if ((strcmp(argv[0], "unlock") == 0) && (argc == 2)) {
- cmd = CMD_UNLOCK;
- device = argv[1];
- } else if ((strcmp(argv[0], "erase") == 0) && (argc == 2)) {
- cmd = CMD_ERASE;
- device = argv[1];
- } else if ((strcmp(argv[0], "write") == 0) && (argc == 3)) {
- cmd = CMD_WRITE;
- device = argv[2];
-
- if (strcmp(argv[1], "-") == 0) {
- imagefile = "<stdin>";
- imagefd = 0;
- } else {
- imagefile = argv[1];
- if ((imagefd = open(argv[1], O_RDONLY)) < 0) {
- fprintf(stderr, "Couldn't open image file: %s!\n", imagefile);
- exit(1);
- }
- }
-
- /* check trx file before erasing or writing anything */
- if (!image_check(imagefd, device)) {
- if ((quiet < 2) || !force)
- fprintf(stderr, "TRX check failed!\n");
- if (!force)
- exit(1);
- } else {
- if (!mtd_check(device)) {
- fprintf(stderr, "Can't open device for writing!\n");
- exit(1);
- }
- }
- } else {
- usage();
- }
-
- sync();
-
- i = 0;
- unlocked = 0;
- while (erase[i] != NULL) {
- if (quiet < 2)
- fprintf(stderr, "Unlocking %s ...\n", erase[i]);
- mtd_unlock(erase[i]);
- if (quiet < 2)
- fprintf(stderr, "Erasing %s ...\n", erase[i]);
- mtd_erase(erase[i]);
- if (strcmp(erase[i], device) == 0)
- unlocked = 1;
- i++;
- }
-
- if (!unlocked) {
- if (quiet < 2)
- fprintf(stderr, "Unlocking %s ...\n", device);
- mtd_unlock(device);
- }
-
- switch (cmd) {
- case CMD_UNLOCK:
- break;
- case CMD_ERASE:
- if (quiet < 2)
- fprintf(stderr, "Erasing %s ...\n", device);
- mtd_erase(device);
- break;
- case CMD_WRITE:
- if (quiet < 2)
- fprintf(stderr, "Writing from %s to %s ... ", imagefile, device);
- mtd_write(imagefd, device, quiet);
- if (quiet < 2)
- fprintf(stderr, "\n");
- break;
- }
-
- sync();
-
- if (boot)
- kill(1, 15); // send SIGTERM to init for reboot
-
- return 0;
-}
diff --git a/openwrt/package/mtr/Config.in b/openwrt/package/mtr/Config.in
deleted file mode 100644
index 8f0e461676..0000000000
--- a/openwrt/package/mtr/Config.in
+++ /dev/null
@@ -1,18 +0,0 @@
-config BR2_PACKAGE_MTR
- prompt "mtr............................... Full screen ncurses traceroute tool"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBNCURSES
- help
- mtr combines the functionality of the 'traceroute' and 'ping' programs
- in a single network diagnostic tool.
- .
- As mtr starts, it investigates the network connection between the host
- mtr runs on and a user-specified destination host. After it
- determines the address of each network hop between the machines,
- it sends a sequence ICMP ECHO requests to each one to determine the
- quality of the link to each machine. As it does this, it prints
- running statistics about each machine.
- .
- http://www.bitwizard.nl/mtr/
-
diff --git a/openwrt/package/mtr/Makefile b/openwrt/package/mtr/Makefile
deleted file mode 100644
index f0885624bb..0000000000
--- a/openwrt/package/mtr/Makefile
+++ /dev/null
@@ -1,77 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=mtr
-PKG_VERSION:=0.69
-PKG_RELEASE:=1
-PKG_MD5SUM:=58904d6d8d70114195cdeb653d56914c
-
-PKG_SOURCE_URL:=ftp://ftp.bitwizard.nl/mtr/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MTR,mtr,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- touch configure.in; \
- touch aclocal.m4; \
- touch Makefile.in; \
- touch img/Makefile.in; \
- touch stamp-h.in; \
- touch config.h.in; \
- touch configure; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_lib_resolv_res_mkquery=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --without-gtk \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- all install
- touch $@
-
-$(IPKG_MTR):
- install -d -m0755 $(IDIR_MTR)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/mtr $(IDIR_MTR)/usr/sbin/
- $(RSTRIP) $(IDIR_MTR)
- $(IPKG_BUILD) $(IDIR_MTR) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/mtr/ipkg/mtr.control b/openwrt/package/mtr/ipkg/mtr.control
deleted file mode 100644
index c5dad152ca..0000000000
--- a/openwrt/package/mtr/ipkg/mtr.control
+++ /dev/null
@@ -1,15 +0,0 @@
-Package: mtr
-Priority: optional
-Section: net
-Depends: libncurses
-Description: Full screen ncurses traceroute/ping tool
- mtr combines the functionality of the 'traceroute' and 'ping' programs
- in a single network diagnostic tool.
- .
- As mtr starts, it investigates the network connection between the host
- mtr runs on and a user-specified destination host. After it
- determines the address of each network hop between the machines,
- it sends a sequence ICMP ECHO requests to each one to determine the
- quality of the link to each machine. As it does this, it prints
- running statistics about each machine.
-
diff --git a/openwrt/package/mtr/patches/501-dns.patch b/openwrt/package/mtr/patches/501-dns.patch
deleted file mode 100644
index f1c915580d..0000000000
--- a/openwrt/package/mtr/patches/501-dns.patch
+++ /dev/null
@@ -1,511 +0,0 @@
-diff -Naur mtr-0.69.old/dns.c mtr-0.69.new/dns.c
---- mtr-0.69.old/dns.c 2005-01-11 09:32:42.000000000 +0100
-+++ mtr-0.69.new/dns.c 2005-10-03 21:31:27.000000000 +0200
-@@ -853,6 +853,507 @@
- fputs("\r",stderr);
- }
-
-+#ifdef __UCLIBC__
-+
-+static const char digits[] = "0123456789";
-+#define __set_errno(e) (errno = (e))
-+
-+#define NS_PUT16(s, cp) do { \
-+ register u_int16_t t_s = (u_int16_t)(s); \
-+ register u_char *t_cp = (u_char *)(cp); \
-+ *t_cp++ = t_s >> 8; \
-+ *t_cp = t_s; \
-+ (cp) += NS_INT16SZ; \
-+} while (0)
-+
-+
-+
-+#define NS_PUT32(l, cp) do { \
-+ register u_int32_t t_l = (u_int32_t)(l); \
-+ register u_char *t_cp = (u_char *)(cp); \
-+ *t_cp++ = t_l >> 24; \
-+ *t_cp++ = t_l >> 16; \
-+ *t_cp++ = t_l >> 8; \
-+ *t_cp = t_l; \
-+ (cp) += NS_INT32SZ; \
-+} while (0)
-+
-+
-+void
-+ns_put16(u_int src, u_char *dst) {
-+ NS_PUT16(src, dst);
-+}
-+
-+void
-+ns_put32(u_long src, u_char *dst) {
-+ NS_PUT32(src, dst);
-+}
-+
-+void __putshort(u_int16_t src, u_char *dst) { ns_put16(src, dst); }
-+void __putlong(u_int32_t src, u_char *dst) { ns_put32(src, dst); }
-+
-+int
-+mklower(int ch) {
-+ if (ch >= 0x41 && ch <= 0x5A)
-+ return (ch + 0x20);
-+ return (ch);
-+}
-+
-+
-+static int
-+dn_find(const u_char *domain, const u_char *msg,
-+ const u_char * const *dnptrs,
-+ const u_char * const *lastdnptr)
-+{
-+ const u_char *dn, *cp, *sp;
-+ const u_char * const *cpp;
-+ u_int n;
-+
-+ for (cpp = dnptrs; cpp < lastdnptr; cpp++) {
-+ sp = *cpp;
-+ /*
-+ * terminate search on:
-+ * root label
-+ * compression pointer
-+ * unusable offset
-+ */
-+ while (*sp != 0 && (*sp & NS_CMPRSFLGS) == 0 &&
-+ (sp - msg) < 0x4000) {
-+ dn = domain;
-+ cp = sp;
-+ while ((n = *cp++) != 0) {
-+ /*
-+ * check for indirection
-+ */
-+ switch (n & NS_CMPRSFLGS) {
-+ case 0: /* normal case, n == len */
-+ if (n != *dn++)
-+ goto next;
-+ for ((void)NULL; n > 0; n--)
-+ if (mklower(*dn++) !=
-+ mklower(*cp++))
-+ goto next;
-+ /* Is next root for both ? */
-+ if (*dn == '\0' && *cp == '\0')
-+ return (sp - msg);
-+ if (*dn)
-+ continue;
-+ goto next;
-+
-+ case NS_CMPRSFLGS: /* indirection */
-+ cp = msg + (((n & 0x3f) << 8) | *cp);
-+ break;
-+
-+ default: /* illegal type */
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ }
-+ next:
-+ sp += *sp + 1;
-+ }
-+ }
-+ __set_errno (ENOENT);
-+ return (-1);
-+}
-+
-+
-+int
-+ns_name_pack(const u_char *src, u_char *dst, int dstsiz,
-+ const u_char **dnptrs, const u_char **lastdnptr)
-+{
-+ u_char *dstp;
-+ const u_char **cpp, **lpp, *eob, *msg;
-+ const u_char *srcp;
-+ int n, l, first = 1;
-+
-+ srcp = src;
-+ dstp = dst;
-+ eob = dstp + dstsiz;
-+ lpp = cpp = NULL;
-+ if (dnptrs != NULL) {
-+ if ((msg = *dnptrs++) != NULL) {
-+ for (cpp = dnptrs; *cpp != NULL; cpp++)
-+ (void)NULL;
-+ lpp = cpp; /* end of list to search */
-+ }
-+ } else
-+ msg = NULL;
-+
-+ /* make sure the domain we are about to add is legal */
-+ l = 0;
-+ do {
-+ n = *srcp;
-+ if ((n & NS_CMPRSFLGS) != 0 && n != 0x41) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ if (n == 0x41)
-+ n = *++srcp / 8;
-+ l += n + 1;
-+ if (l > MAXCDNAME) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ srcp += n + 1;
-+ } while (n != 0);
-+
-+ /* from here on we need to reset compression pointer array on error */
-+ srcp = src;
-+ do {
-+ /* Look to see if we can use pointers. */
-+ n = *srcp;
-+ if (n != 0 && n != 0x41 && msg != NULL) {
-+ l = dn_find(srcp, msg, (const u_char * const *)dnptrs,
-+ (const u_char * const *)lpp);
-+ if (l >= 0) {
-+ if (dstp + 1 >= eob) {
-+ goto cleanup;
-+ }
-+ *dstp++ = (l >> 8) | NS_CMPRSFLGS;
-+ *dstp++ = l % 256;
-+ return (dstp - dst);
-+ }
-+ /* Not found, save it. */
-+ if (lastdnptr != NULL && cpp < lastdnptr - 1 &&
-+ (dstp - msg) < 0x4000 && first) {
-+ *cpp++ = dstp;
-+ *cpp = NULL;
-+ first = 0;
-+ }
-+ }
-+ /* copy label to buffer */
-+ if ((n & NS_CMPRSFLGS) != 0 && n != 0x41) { /* Should not happen. */
-+ goto cleanup;
-+ }
-+ if (n == 0x41) {
-+ n = *++srcp / 8;
-+ if (dstp + 1 >= eob)
-+ goto cleanup;
-+ *dstp++ = 0x41;
-+ }
-+ if (dstp + 1 + n >= eob) {
-+ goto cleanup;
-+ }
-+ memcpy(dstp, srcp, n + 1);
-+ srcp += n + 1;
-+ dstp += n + 1;
-+ } while (n != 0);
-+
-+ if (dstp > eob) {
-+cleanup:
-+ if (msg != NULL)
-+ *lpp = NULL;
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ return (dstp - dst);
-+}
-+
-+
-+int
-+ns_name_pton(const char *src, u_char *dst, size_t dstsiz) {
-+ u_char *label, *bp, *eom;
-+ int c, n, escaped;
-+ char *cp;
-+
-+ escaped = 0;
-+ bp = dst;
-+ eom = dst + dstsiz;
-+ label = bp++;
-+
-+ while ((c = *src++) != 0) {
-+ if (escaped) {
-+ if ((cp = strchr(digits, c)) != NULL) {
-+ n = (cp - digits) * 100;
-+ if ((c = *src++) == 0 ||
-+ (cp = strchr(digits, c)) == NULL) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ n += (cp - digits) * 10;
-+ if ((c = *src++) == 0 ||
-+ (cp = strchr(digits, c)) == NULL) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ n += (cp - digits);
-+ if (n > 255) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ c = n;
-+ } else if (c == '[' && label == bp - 1 && *src == 'x') {
-+ /* Theoretically we would have to handle \[o
-+ as well but we do not since we do not need
-+ it internally. */
-+ *label = 0x41;
-+ label = bp++;
-+ ++src;
-+ while (isxdigit (*src)) {
-+ n = *src > '9' ? *src - 'a' + 10 : *src - '0';
-+ ++src;
-+ if (! isxdigit(*src)) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ n <<= 4;
-+ n += *src > '9' ? *src - 'a' + 10 : *src - '0';
-+ if (bp + 1 >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ *bp++ = n;
-+ ++src;
-+ }
-+ *label = (bp - label - 1) * 8;
-+ if (*src++ != ']' || *src++ != '.') {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ escaped = 0;
-+ label = bp++;
-+ if (bp >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ continue;
-+ }
-+ escaped = 0;
-+ } else if (c == '\\') {
-+ escaped = 1;
-+ continue;
-+ } else if (c == '.') {
-+ c = (bp - label - 1);
-+ if ((c & NS_CMPRSFLGS) != 0) { /* Label too big. */
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ if (label >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ *label = c;
-+ /* Fully qualified ? */
-+ if (*src == '\0') {
-+ if (c != 0) {
-+ if (bp >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ *bp++ = '\0';
-+ }
-+ if ((bp - dst) > MAXCDNAME) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ return (1);
-+ }
-+ if (c == 0 || *src == '.') {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ label = bp++;
-+ continue;
-+ }
-+ if (bp >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ *bp++ = (u_char)c;
-+ }
-+ c = (bp - label - 1);
-+ if ((c & NS_CMPRSFLGS) != 0) { /* Label too big. */
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ if (label >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ *label = c;
-+ if (c != 0) {
-+ if (bp >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ *bp++ = 0;
-+ }
-+ if ((bp - dst) > MAXCDNAME) { /* src too big */
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ return (0);
-+}
-+
-+
-+
-+int
-+ns_name_compress(const char *src, u_char *dst, size_t dstsiz,
-+ const u_char **dnptrs, const u_char **lastdnptr)
-+{
-+ u_char tmp[NS_MAXCDNAME];
-+
-+ if (ns_name_pton(src, tmp, sizeof tmp) == -1)
-+ return (-1);
-+ return (ns_name_pack(tmp, dst, dstsiz, dnptrs, lastdnptr));
-+}
-+
-+
-+int
-+dn_comp(const char *src, u_char *dst, int dstsiz,
-+ u_char **dnptrs, u_char **lastdnptr)
-+{
-+ return (ns_name_compress(src, dst, (size_t)dstsiz,
-+ (const u_char **)dnptrs,
-+ (const u_char **)lastdnptr));
-+}
-+
-+
-+
-+
-+int
-+res_nmkquery(res_state statp,
-+ int op, /* opcode of query */
-+ const char *dname, /* domain name */
-+ int class, int type, /* class and type of query */
-+ const u_char *data, /* resource record data */
-+ int datalen, /* length of data */
-+ const u_char *newrr_in, /* new rr for modify or append */
-+ u_char *buf, /* buffer to put query */
-+ int buflen) /* size of buffer */
-+{
-+ register HEADER *hp;
-+ register u_char *cp;
-+ register int n;
-+ u_char *dnptrs[20], **dpp, **lastdnptr;
-+
-+#ifdef DEBUG
-+ if (statp->options & RES_DEBUG)
-+ printf(";; res_nmkquery(%s, %s, %s, %s)\n",
-+ _res_opcodes[op], dname, p_class(class), p_type(type));
-+#endif
-+ /*
-+ * Initialize header fields.
-+ */
-+ if ((buf == NULL) || (buflen < HFIXEDSZ))
-+ return (-1);
-+ memset(buf, 0, HFIXEDSZ);
-+ hp = (HEADER *) buf;
-+ /* We randomize the IDs every time. The old code just
-+ incremented by one after the initial randomization which
-+ still predictable if the application does multiple
-+ requests. */
-+#if 0
-+ hp->id = htons(++statp->id);
-+#else
-+ hp->id = htons(statp->id);
-+ int randombits;
-+ do
-+ {
-+#ifdef RANDOM_BITS
-+ RANDOM_BITS (randombits);
-+#else
-+ struct timeval tv;
-+ gettimeofday (&tv, NULL);
-+ randombits = (tv.tv_sec << 8) ^ tv.tv_usec;
-+#endif
-+ }
-+ while ((randombits & 0xffff) == 0);
-+ statp->id = (statp->id + randombits) & 0xffff;
-+#endif
-+ hp->opcode = op;
-+ hp->rd = (statp->options & RES_RECURSE) != 0;
-+ hp->rcode = NOERROR;
-+ cp = buf + HFIXEDSZ;
-+ buflen -= HFIXEDSZ;
-+ dpp = dnptrs;
-+ *dpp++ = buf;
-+ *dpp++ = NULL;
-+ lastdnptr = dnptrs + sizeof dnptrs / sizeof dnptrs[0];
-+ /*
-+ * perform opcode specific processing
-+ */
-+ switch (op) {
-+ case QUERY: /*FALLTHROUGH*/
-+ case NS_NOTIFY_OP:
-+ if ((buflen -= QFIXEDSZ) < 0)
-+ return (-1);
-+ if ((n = dn_comp(dname, cp, buflen, dnptrs, lastdnptr)) < 0)
-+ return (-1);
-+ cp += n;
-+ buflen -= n;
-+ __putshort(type, cp);
-+ cp += INT16SZ;
-+ __putshort(class, cp);
-+ cp += INT16SZ;
-+ hp->qdcount = htons(1);
-+ if (op == QUERY || data == NULL)
-+ break;
-+ /*
-+ * Make an additional record for completion domain.
-+ */
-+ buflen -= RRFIXEDSZ;
-+ n = dn_comp((char *)data, cp, buflen, dnptrs, lastdnptr);
-+ if (n < 0)
-+ return (-1);
-+ cp += n;
-+ buflen -= n;
-+ __putshort(T_NULL, cp);
-+ cp += INT16SZ;
-+ __putshort(class, cp);
-+ cp += INT16SZ;
-+ __putlong(0, cp);
-+ cp += INT32SZ;
-+ __putshort(0, cp);
-+ cp += INT16SZ;
-+ hp->arcount = htons(1);
-+ break;
-+
-+ case IQUERY:
-+ /*
-+ * Initialize answer section
-+ */
-+ if (buflen < 1 + RRFIXEDSZ + datalen)
-+ return (-1);
-+ *cp++ = '\0'; /* no domain name */
-+ __putshort(type, cp);
-+ cp += INT16SZ;
-+ __putshort(class, cp);
-+ cp += INT16SZ;
-+ __putlong(0, cp);
-+ cp += INT32SZ;
-+ __putshort(datalen, cp);
-+ cp += INT16SZ;
-+ if (datalen) {
-+ memcpy(cp, data, datalen);
-+ cp += datalen;
-+ }
-+ hp->ancount = htons(1);
-+ break;
-+
-+ default:
-+ return (-1);
-+ }
-+ return (cp - buf);
-+}
-+
-+int
-+res_mkquery(int op, /* opcode of query */
-+ const char *dname, /* domain name */
-+ int class, int type, /* class and type of query */
-+ const u_char *data, /* resource record data */
-+ int datalen, /* length of data */
-+ const u_char *newrr_in, /* new rr for modify or append */
-+ u_char *buf, /* buffer to put query */
-+ int buflen) /* size of buffer */
-+{
-+ return (res_nmkquery(&_res, op, dname, class, type,
-+ data, datalen,
-+ newrr_in, buf, buflen));
-+}
-+
-+#endif
-
- void dorequest(char *s,int type,word id)
- {
diff --git a/openwrt/package/mutt/Config.in b/openwrt/package/mutt/Config.in
deleted file mode 100644
index 211d58c6e9..0000000000
--- a/openwrt/package/mutt/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_MUTT
- prompt "mutt.............................. console mail client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBNCURSES
- select BR2_PACKAGE_LIBOPENSSL
- help
- Mail client for the text console
-
- http://www.mutt.org
-
diff --git a/openwrt/package/mutt/Makefile b/openwrt/package/mutt/Makefile
deleted file mode 100644
index 16b7fa5596..0000000000
--- a/openwrt/package/mutt/Makefile
+++ /dev/null
@@ -1,63 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=mutt
-PKG_VERSION:=1.5.11
-PKG_RELEASE:=1
-
-PKG_SOURCE_URL:=@SF/mutt
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=00e6f8f7c37d4840e5e30583ebee21ce
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,MUTT,mutt,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_c_bigendian=no \
- ac_cv_sizeof_off_t=8 \
- ac_cv_sizeof_int=4 \
- ac_cv_sizeof_long=4 \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --program-prefix="" \
- --includedir=$(PKG_BUILD_DIR)/. \
- --oldincludedir=$(PKG_BUILD_DIR)/. \
- --enable-pop \
- --enable-imap \
- --with-ssl \
- $(DISABLE_NLS) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC)
- touch $@
-
-$(IPKG_MUTT):
- mkdir -p $(IDIR_MUTT)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME) $(IDIR_MUTT)/usr/bin/
- $(RSTRIP) $(IDIR_MUTT)
- $(IPKG_BUILD) $(IDIR_MUTT) $(PACKAGE_DIR)
diff --git a/openwrt/package/mutt/ipkg/mutt.control b/openwrt/package/mutt/ipkg/mutt.control
deleted file mode 100644
index 493074895f..0000000000
--- a/openwrt/package/mutt/ipkg/mutt.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: mutt
-Priority: optional
-Section: text
-Depends: libncurses, libopenssl
-Description: Mail text client
diff --git a/openwrt/package/mysql/Config.in b/openwrt/package/mysql/Config.in
deleted file mode 100644
index bda7142ca9..0000000000
--- a/openwrt/package/mysql/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_COMPILE_MYSQL
- tristate
- default n
- depends BR2_PACKAGE_LIBMYSQLCLIENT
-
-config BR2_PACKAGE_LIBMYSQLCLIENT
- prompt "libmysqlclient.................... MySQL client library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_MYSQL
- help
- MySQL client library.
-
- http://dev.mysql.com/
-
diff --git a/openwrt/package/mysql/Makefile b/openwrt/package/mysql/Makefile
deleted file mode 100644
index ad6b5297be..0000000000
--- a/openwrt/package/mysql/Makefile
+++ /dev/null
@@ -1,133 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=mysql
-PKG_VERSION:=5.0.18
-PKG_RELEASE:=1
-PKG_MD5SUM:=f18153b0239aaa03fc5a751f2d82cb71
-
-PKG_SOURCE_URL:=\
- http://mysql.planetmirror.com/Downloads/MySQL-5.0/ \
- http://mysql.he.net/Downloads/MySQL-5.0/ \
- http://www.linorg.usp.br/mysql/Downloads/MySQL-5.0/ \
- http://mysql.holywar.net/Downloads/MySQL-5.0/
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBMYSQLCLIENT,libmysqlclient,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- touch configure.in; \
- touch aclocal.m4; \
- touch Makefile.in; \
- touch config.h.in; \
- touch configure; \
- $(TARGET_CONFIGURE_OPTS) \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- OPTIMIZE_CFLAGS="$(TARGET_CFLAGS)" \
- OPTIMIZE_CXXFLAGS="$(TARGET_CFLAGS)" \
- ac_atomic_add=yes \
- ac_atomic_sub=yes \
- ac_cv_sys_restartable_syscalls=yes \
- ac_cv_conv_longlong_to_float=yes \
- mysql_cv_compress=yes \
- mysql_cv_gethostname_style=glibc2 \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-assembler \
- --with-pthread \
- --without-raid \
- --with-unix-socket-path=/tmp \
- --without-libwrap \
- --without-pstack \
- --with-low-memory \
- --without-server \
- --without-embedded-server \
- --without-query-cache \
- --without-mysqlfs \
- --without-vio \
- --without-openssl \
- --without-docs \
- --without-bench \
- --without-readline \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C "$(PKG_BUILD_DIR)" \
- SUBDIRS="include" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- $(MAKE) -C "$(PKG_BUILD_DIR)/libmysql" \
- CC="$(HOSTCC)" \
- LINK="$(HOSTCC) -o conf_to_src -lc" \
- CFLAGS="" \
- conf_to_src
- $(MAKE) -C "$(PKG_BUILD_DIR)" \
- SUBDIRS="libmysql" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- $(MAKE) -C "$(PKG_BUILD_DIR)" \
- SUBDIRS="scripts" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- bin_SCRIPTS="mysql_config" \
- install
- touch $@
-
-$(IPKG_LIBMYSQLCLIENT):
- install -d -m0755 $(IDIR_LIBMYSQLCLIENT)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/mysql/libmysqlclient.so.* $(IDIR_LIBMYSQLCLIENT)/usr/lib/
- $(RSTRIP) $(IDIR_LIBMYSQLCLIENT)
- $(IPKG_BUILD) $(IDIR_LIBMYSQLCLIENT) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/mysql/libmysqlclient.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/mysql_config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/mysql $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/mysql $(STAGING_DIR)/usr/lib/
- rm -f $(STAGING_DIR)/usr/lib/mysql/libmysqlclient.la
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/mysql/libmysqlclient.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/mysql_config \
- $(STAGING_DIR)/usr/include/mysql \
- $(STAGING_DIR)/usr/lib/mysql \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/mysql/ipkg/libmysqlclient.control b/openwrt/package/mysql/ipkg/libmysqlclient.control
deleted file mode 100644
index 02f2395e48..0000000000
--- a/openwrt/package/mysql/ipkg/libmysqlclient.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libmysqlclient
-Priority: optional
-Section: libs
-Depends: zlib
-Description: MySQL client library
diff --git a/openwrt/package/mysql/patches/500-cross_compile.patch b/openwrt/package/mysql/patches/500-cross_compile.patch
deleted file mode 100644
index 9290ab8453..0000000000
--- a/openwrt/package/mysql/patches/500-cross_compile.patch
+++ /dev/null
@@ -1,3301 +0,0 @@
---- mysql.old/configure 2005-12-21 20:41:46.000000000 +0100
-+++ mysql.dev/configure 2006-01-10 23:48:27.302608500 +0100
-@@ -477,7 +477,7 @@
- #endif"
-
- ac_subdirs_all="$ac_subdirs_all innobase"
--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 INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MYSQL_NO_DASH_VERSION MYSQL_BASE_VERSION MYSQL_VERSION_ID PROTOCOL_VERSION DOT_FRM_VERSION SHARED_LIB_VERSION AVAILABLE_LANGUAGES NDB_VERSION_MAJOR NDB_VERSION_MINOR NDB_VERSION_BUILD NDB_VERSION_STATUS SYSTEM_TYPE MACHINE_TYPE CONF_COMMAND SAVE_ASFLAGS SAVE_CFLAGS SAVE_CXXFLAGS SAVE_LDFLAGS SAVE_CXXLDFLAGS CXXLDFLAGS AR RANLIB DARWIN_MWCC_TRUE DARWIN_MWCC_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CPP CC_VERSION CXX_VERSION AS ac_ct_RANLIB EGREP LN_S ECHO ac_ct_AR CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL YACC PDFMANUAL DVIS uname_prog LD ARFLAGS MYSQLD_DEFAULT_SWITCHES TARGET_LINUX LN LN_CP_F MV RM CP SED CMP CHMOD HOSTNAME TAR PERL PERL5 DOXYGEN PDFLATEX MAKEINDEX PS FIND_PROC KILL CHECK_PID CCAS CCASFLAGS NOINST_LDFLAGS MYSQL_SERVER_SUFFIX ASSEMBLER_x86_TRUE ASSEMBLER_x86_FALSE ASSEMBLER_sparc32_TRUE ASSEMBLER_sparc32_FALSE ASSEMBLER_sparc64_TRUE ASSEMBLER_sparc64_FALSE ASSEMBLER_TRUE ASSEMBLER_FALSE MYSQL_UNIX_ADDR MYSQL_TCP_PORT MYSQL_TCP_PORT_DEFAULT MYSQLD_USER GETCONF ac_ct_GETCONF zlib_dir ZLIB_LIBS ZLIB_DEPS ZLIB_INCLUDES WRAPLIBS pstack_dirs pstack_libs COMPILE_PSTACK_TRUE COMPILE_PSTACK_FALSE LIBDL MYSQLD_EXTRA_LDFLAGS CLIENT_EXTRA_LDFLAGS LIB_EXTRA_CCFLAGS LM_CFLAGS COMPILATION_COMMENT ALLOCA MAKE_SHELL TERMCAP_LIB LIBEDIT_LOBJECTS tools_dirs openssl_libs openssl_includes yassl_taocrypt_extra_cxxflags yassl_libs yassl_libs_with_path yassl_includes yassl_dir HAVE_YASSL_TRUE HAVE_YASSL_FALSE libmysqld_dirs linked_libmysqld_targets docs_dirs man_dirs man1_files bench_dirs readline_dir readline_topdir readline_basedir readline_link readline_h_ln_cmd bdb_includes bdb_libs bdb_libs_with_path innodb_includes innodb_libs innodb_system_libs NDB_SCI_INCLUDES NDB_SCI_LIBS HAVE_NDBCLUSTER_DB_TRUE HAVE_NDBCLUSTER_DB_FALSE ndbcluster_includes ndbcluster_libs ndbcluster_system_libs ndb_mgmclient_libs CLIENT_LIBS NON_THREADED_LIBS STATIC_NSS_FLAGS sql_client_dirs linked_client_targets netware_dir linked_netware_sources HAVE_NETWARE_TRUE HAVE_NETWARE_FALSE THREAD_LOBJECTS subdirs sql_server_dirs thread_dirs server_scripts sql_union_dirs GXX NDB_DEFS ndb_cxxflags_fix ndb_port ndb_transporter_opt_objs ndb_bin_am_ldflags ndb_opt_subdirs NDB_SIZEOF_CHARP NDB_SIZEOF_CHAR NDB_SIZEOF_SHORT NDB_SIZEOF_INT NDB_SIZEOF_LONG NDB_SIZEOF_LONG_LONG MAKE_BINARY_DISTRIBUTION_OPTIONS 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 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 INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MYSQL_NO_DASH_VERSION MYSQL_BASE_VERSION MYSQL_VERSION_ID PROTOCOL_VERSION DOT_FRM_VERSION SHARED_LIB_VERSION AVAILABLE_LANGUAGES NDB_VERSION_MAJOR NDB_VERSION_MINOR NDB_VERSION_BUILD NDB_VERSION_STATUS SYSTEM_TYPE MACHINE_TYPE CONF_COMMAND SAVE_ASFLAGS SAVE_CFLAGS SAVE_CXXFLAGS SAVE_LDFLAGS SAVE_CXXLDFLAGS CXXLDFLAGS AR RANLIB DARWIN_MWCC_TRUE DARWIN_MWCC_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CPP CC_VERSION CXX_VERSION AS ac_ct_RANLIB EGREP LN_S ECHO ac_ct_AR CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL YACC PDFMANUAL DVIS uname_prog LD ARFLAGS MYSQLD_DEFAULT_SWITCHES TARGET_LINUX LN LN_CP_F MV RM CP SED CMP CHMOD HOSTNAME TAR PERL PERL5 DOXYGEN PDFLATEX MAKEINDEX PS FIND_PROC KILL CHECK_PID CCAS CCASFLAGS NOINST_LDFLAGS MYSQL_SERVER_SUFFIX ASSEMBLER_x86_TRUE ASSEMBLER_x86_FALSE ASSEMBLER_sparc32_TRUE ASSEMBLER_sparc32_FALSE ASSEMBLER_sparc64_TRUE ASSEMBLER_sparc64_FALSE ASSEMBLER_TRUE ASSEMBLER_FALSE MYSQL_UNIX_ADDR MYSQL_TCP_PORT MYSQL_TCP_PORT_DEFAULT MYSQLD_USER GETCONF ac_ct_GETCONF zlib_dir ZLIB_LIBS ZLIB_DEPS ZLIB_INCLUDES WRAPLIBS COMPILE_PSTACK_TRUE COMPILE_PSTACK_FALSE LIBDL MYSQLD_EXTRA_LDFLAGS CLIENT_EXTRA_LDFLAGS LIB_EXTRA_CCFLAGS LM_CFLAGS COMPILATION_COMMENT ALLOCA MAKE_SHELL TERMCAP_LIB LIBEDIT_LOBJECTS tools_dirs openssl_libs openssl_includes yassl_taocrypt_extra_cxxflags yassl_libs yassl_libs_with_path yassl_includes yassl_dir HAVE_YASSL_TRUE HAVE_YASSL_FALSE libmysqld_dirs linked_libmysqld_targets docs_dirs man_dirs man1_files bench_dirs readline_dir readline_topdir readline_basedir readline_link readline_h_ln_cmd bdb_includes bdb_libs bdb_libs_with_path innodb_includes innodb_libs innodb_system_libs NDB_SCI_INCLUDES NDB_SCI_LIBS HAVE_NDBCLUSTER_DB_TRUE HAVE_NDBCLUSTER_DB_FALSE ndbcluster_includes ndbcluster_libs ndbcluster_system_libs ndb_mgmclient_libs CLIENT_LIBS NON_THREADED_LIBS STATIC_NSS_FLAGS sql_client_dirs linked_client_targets netware_dir linked_netware_sources HAVE_NETWARE_TRUE HAVE_NETWARE_FALSE THREAD_LOBJECTS subdirs sql_server_dirs thread_dirs server_scripts sql_union_dirs GXX NDB_DEFS ndb_cxxflags_fix ndb_port ndb_transporter_opt_objs ndb_bin_am_ldflags ndb_opt_subdirs NDB_SIZEOF_CHARP NDB_SIZEOF_CHAR NDB_SIZEOF_SHORT NDB_SIZEOF_INT NDB_SIZEOF_LONG NDB_SIZEOF_LONG_LONG MAKE_BINARY_DISTRIBUTION_OPTIONS LIBOBJS LTLIBOBJS'
- ac_subst_files=''
-
- # Initialize some variables set by options.
-@@ -1109,7 +1109,6 @@
- library. Given DIR, zlib binary is assumed to be in
- $DIR/lib and header files in $DIR/include.
- --with-libwrap=DIR Compile in libwrap (tcp_wrappers) support
-- --with-pstack Use the pstack backtrace library
- --without-debug Build a production version without debugging code
- --with-mysqld-ldflags Extra linking arguments for mysqld
- --with-client-ldflags Extra linking arguments for clients
-@@ -1295,7 +1294,7 @@
- else
- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi
-- cd $ac_popdir
-+ cd "$ac_popdir"
- done
- fi
-
-@@ -3885,8 +3884,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -3944,8 +3942,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4061,8 +4058,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4116,8 +4112,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4163,8 +4158,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4208,8 +4202,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4562,8 +4555,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4621,8 +4613,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4694,8 +4685,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4739,8 +4729,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -5854,7 +5843,7 @@
- ;;
- *-*-irix6*)
- # Find out which ABI we are using.
-- echo '#line 5857 "configure"' > conftest.$ac_ext
-+ echo '#line 5846 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
-@@ -5974,8 +5963,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -6050,8 +6038,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -6221,8 +6208,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -6289,8 +6275,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -6728,7 +6713,7 @@
-
-
- # Provide some information about the compiler.
--echo "$as_me:6731:" \
-+echo "$as_me:6716:" \
- "checking for Fortran 77 compiler version" >&5
- ac_compiler=`set X $ac_compile; echo $2`
- { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
-@@ -6774,8 +6759,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_f77_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -6824,8 +6808,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_f77_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -7762,11 +7745,11 @@
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:7765: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:7748: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
-- echo "$as_me:7769: \$? = $ac_status" >&5
-+ echo "$as_me:7752: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
-@@ -7995,11 +7978,11 @@
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:7998: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:7981: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
-- echo "$as_me:8002: \$? = $ac_status" >&5
-+ echo "$as_me:7985: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
-@@ -8055,11 +8038,11 @@
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:8058: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:8041: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&5
-- echo "$as_me:8062: \$? = $ac_status" >&5
-+ echo "$as_me:8045: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
-@@ -8446,8 +8429,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -8507,8 +8489,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -9389,7 +9370,7 @@
- libsuff=
- case "$host_cpu" in
- x86_64*|s390x*|powerpc64*)
-- echo '#line 9392 "configure"' > conftest.$ac_ext
-+ echo '#line 9373 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
-@@ -9720,8 +9701,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -9824,8 +9804,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -9890,8 +9869,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -9984,8 +9962,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -10050,8 +10027,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -10117,8 +10093,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -10184,8 +10159,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -10260,7 +10234,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 10263 "configure"
-+#line 10237 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -10358,7 +10332,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 10361 "configure"
-+#line 10335 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -11430,8 +11404,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -11492,8 +11465,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -12537,11 +12509,11 @@
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:12540: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:12512: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
-- echo "$as_me:12544: \$? = $ac_status" >&5
-+ echo "$as_me:12516: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
-@@ -12597,11 +12569,11 @@
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:12600: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:12572: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&5
-- echo "$as_me:12604: \$? = $ac_status" >&5
-+ echo "$as_me:12576: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
-@@ -13108,7 +13080,7 @@
- libsuff=
- case "$host_cpu" in
- x86_64*|s390x*|powerpc64*)
-- echo '#line 13111 "configure"' > conftest.$ac_ext
-+ echo '#line 13083 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
-@@ -13439,8 +13411,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -13543,8 +13514,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -13609,8 +13579,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -13703,8 +13672,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -13769,8 +13737,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -13836,8 +13803,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -13903,8 +13869,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -13979,7 +13944,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 13982 "configure"
-+#line 13947 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -14077,7 +14042,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 14080 "configure"
-+#line 14045 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -14904,11 +14869,11 @@
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:14907: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:14872: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
-- echo "$as_me:14911: \$? = $ac_status" >&5
-+ echo "$as_me:14876: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
-@@ -14964,11 +14929,11 @@
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:14967: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:14932: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&5
-- echo "$as_me:14971: \$? = $ac_status" >&5
-+ echo "$as_me:14936: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
-@@ -15345,8 +15310,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_f77_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -15396,8 +15360,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_f77_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -16278,7 +16241,7 @@
- libsuff=
- case "$host_cpu" in
- x86_64*|s390x*|powerpc64*)
-- echo '#line 16281 "configure"' > conftest.$ac_ext
-+ echo '#line 16244 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
-@@ -17019,11 +16982,11 @@
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:17022: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:16985: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
-- echo "$as_me:17026: \$? = $ac_status" >&5
-+ echo "$as_me:16989: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
-@@ -17252,11 +17215,11 @@
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:17255: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:17218: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
-- echo "$as_me:17259: \$? = $ac_status" >&5
-+ echo "$as_me:17222: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
-@@ -17312,11 +17275,11 @@
- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
-- (eval echo "\"\$as_me:17315: $lt_compile\"" >&5)
-+ (eval echo "\"\$as_me:17278: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&5
-- echo "$as_me:17319: \$? = $ac_status" >&5
-+ echo "$as_me:17282: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
-@@ -17703,8 +17666,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -17764,8 +17726,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -18646,7 +18607,7 @@
- libsuff=
- case "$host_cpu" in
- x86_64*|s390x*|powerpc64*)
-- echo '#line 18649 "configure"' > conftest.$ac_ext
-+ echo '#line 18610 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
-@@ -18977,8 +18938,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -19081,8 +19041,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -19147,8 +19106,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -19241,8 +19199,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -19307,8 +19264,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -19374,8 +19330,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -19441,8 +19396,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -19517,7 +19471,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 19520 "configure"
-+#line 19474 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -19615,7 +19569,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 19618 "configure"
-+#line 19572 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -20834,128 +20788,13 @@
- echo "$as_me:$LINENO: checking \"return type of sprintf\"" >&5
- echo $ECHO_N "checking \"return type of sprintf\"... $ECHO_C" >&6
-
--#check the return type of sprintf
--case $SYSTEM_TYPE in
-- *netware*)
-- cat >>confdefs.h <<\_ACEOF
--#define SPRINTF_RETURNS_INT 1
--_ACEOF
-- echo "$as_me:$LINENO: result: \"int\"" >&5
--echo "${ECHO_T}\"int\"" >&6
-- ;;
-- *)
--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
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--
-- int main()
-- {
-- char* s = "hello";
-- char buf[6];
-- if((int)sprintf(buf, s) == strlen(s))
-- return 0;
--
-- return -1;
-- }
--
--_ACEOF
--rm -f conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-
- cat >>confdefs.h <<\_ACEOF
- #define SPRINTF_RETURNS_INT 1
- _ACEOF
-
-- echo "$as_me:$LINENO: result: \"int\"" >&5
-+echo "$as_me:$LINENO: result: \"int\"" >&5
- echo "${ECHO_T}\"int\"" >&6
--else
-- echo "$as_me: program exited with status $ac_status" >&5
--echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--( exit $ac_status )
--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
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--
-- int main()
-- {
-- char* s = "hello";
-- char buf[6];
-- if((char*)sprintf(buf,s) == buf + strlen(s))
-- return 0;
-- return -1;
-- }
--_ACEOF
--rm -f conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
--
--cat >>confdefs.h <<\_ACEOF
--#define SPRINTF_RETURNS_PTR 1
--_ACEOF
--
-- echo "$as_me:$LINENO: result: \"ptr\"" >&5
--echo "${ECHO_T}\"ptr\"" >&6
--else
-- echo "$as_me: program exited with status $ac_status" >&5
--echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--( exit $ac_status )
--
--cat >>confdefs.h <<\_ACEOF
--#define SPRINTF_RETURNS_GARBAGE 1
--_ACEOF
--
-- echo "$as_me:$LINENO: result: \"garbage\"" >&5
--echo "${ECHO_T}\"garbage\"" >&6
--fi
--rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
--fi
--
--fi
--rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
--fi
-- ;;
--esac
-
- # Extract the first word of "uname", so it can be a program name with args.
- set dummy uname; ac_word=$2
-@@ -22130,8 +21969,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22573,8 +22411,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22812,8 +22649,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22891,8 +22727,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -22964,8 +22799,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23019,8 +22853,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23091,8 +22924,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23146,8 +22978,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23214,8 +23045,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23386,8 +23216,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23497,8 +23326,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23658,8 +23486,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23731,8 +23558,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23808,8 +23634,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23881,8 +23706,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -23983,8 +23807,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24075,8 +23898,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24142,8 +23964,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24244,8 +24065,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24311,8 +24131,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24413,8 +24232,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24480,8 +24298,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24583,8 +24400,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24650,8 +24466,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24727,8 +24542,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24827,8 +24641,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24927,8 +24740,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -24994,8 +24806,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -25106,8 +24917,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -25187,8 +24997,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -25282,8 +25091,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -25385,8 +25193,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -25525,8 +25332,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -25576,288 +25382,6 @@
- fi;
-
-
--if test "$TARGET_LINUX" = "true"; then
-- echo "$as_me:$LINENO: checking for atomic operations" >&5
--echo $ECHO_N "checking for atomic operations... $ECHO_C" >&6
--
-- atom_ops=
-- 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
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--
--#include <asm/atomic.h>
--int main()
--{
-- atomic_t v;
--
-- atomic_set(&v, 23);
-- atomic_add(5, &v);
-- return atomic_read(&v) == 28 ? 0 : -1;
--}
--
--_ACEOF
--rm -f conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
--
--cat >>confdefs.h <<\_ACEOF
--#define HAVE_ATOMIC_ADD 1
--_ACEOF
--
-- atom_ops="${atom_ops}atomic_add "
--else
-- echo "$as_me: program exited with status $ac_status" >&5
--echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--fi
--rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
--fi
-- 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
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--
--#include <asm/atomic.h>
--int main()
--{
-- atomic_t v;
--
-- atomic_set(&v, 23);
-- atomic_sub(5, &v);
-- return atomic_read(&v) == 18 ? 0 : -1;
--}
--
--_ACEOF
--rm -f conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
--
--cat >>confdefs.h <<\_ACEOF
--#define HAVE_ATOMIC_SUB 1
--_ACEOF
--
-- atom_ops="${atom_ops}atomic_sub "
--else
-- echo "$as_me: program exited with status $ac_status" >&5
--echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--fi
--rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
--fi
--
-- if test -z "$atom_ops"; then atom_ops="no"; fi
-- echo "$as_me:$LINENO: result: $atom_ops" >&5
--echo "${ECHO_T}$atom_ops" >&6
--
--
--# Check whether --with-pstack or --without-pstack was given.
--if test "${with_pstack+set}" = set; then
-- withval="$with_pstack"
-- USE_PSTACK=$withval
--else
-- USE_PSTACK=no
--fi;
-- pstack_libs=
-- pstack_dirs=
-- if test "$USE_PSTACK" = yes -a "$TARGET_LINUX" = "true" -a "$BASE_MACHINE_TYPE" = "i386"
-- then
-- have_libiberty= have_libbfd=
-- my_save_LIBS="$LIBS"
-- echo "$as_me:$LINENO: checking for fdmatch in -liberty" >&5
--echo $ECHO_N "checking for fdmatch in -liberty... $ECHO_C" >&6
--if test "${ac_cv_lib_iberty_fdmatch+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-liberty $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 fdmatch ();
--int
--main ()
--{
--fdmatch ();
-- ;
-- 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_lib_iberty_fdmatch=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_iberty_fdmatch=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_iberty_fdmatch" >&5
--echo "${ECHO_T}$ac_cv_lib_iberty_fdmatch" >&6
--if test $ac_cv_lib_iberty_fdmatch = yes; then
-- have_libiberty=yes
-- echo "$as_me:$LINENO: checking for bfd_openr in -lbfd" >&5
--echo $ECHO_N "checking for bfd_openr in -lbfd... $ECHO_C" >&6
--if test "${ac_cv_lib_bfd_bfd_openr+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- ac_check_lib_save_LIBS=$LIBS
--LIBS="-lbfd -liberty $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 bfd_openr ();
--int
--main ()
--{
--bfd_openr ();
-- ;
-- 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_lib_bfd_bfd_openr=yes
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_lib_bfd_bfd_openr=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_bfd_bfd_openr" >&5
--echo "${ECHO_T}$ac_cv_lib_bfd_bfd_openr" >&6
--if test $ac_cv_lib_bfd_bfd_openr = yes; then
-- have_libbfd=yes
--fi
--
--fi
--
-- LIBS="$my_save_LIBS"
--
-- if test x"$have_libiberty" = xyes -a x"$have_libbfd" = xyes
-- then
-- pstack_dirs='$(top_srcdir)'/pstack
-- pstack_libs="../pstack/libpstack.a -lbfd -liberty"
-- # We must link staticly when using pstack
-- with_mysqld_ldflags="-all-static"
--
--
--
--cat >>confdefs.h <<\_ACEOF
--#define USE_PSTACK 1
--_ACEOF
--
-- else
-- USE_PSTACK="no"
-- fi
-- else
-- USE_PSTACK="no"
-- fi
--fi
-
-
- if test "$USE_PSTACK" = "yes"; then
-@@ -25941,8 +25465,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -26008,8 +25531,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -26054,78 +25576,9 @@
-
- echo "$as_me:$LINENO: checking for int8" >&5
- echo $ECHO_N "checking for int8... $ECHO_C" >&6
--case $SYSTEM_TYPE in
-- *netware)
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-- ;;
-- *)
--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
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--
--#ifdef HAVE_STDLIB_H
--#include <stdlib.h>
--#endif
--
--#ifdef HAVE_STDDEF_H
--#include <stddef.h>
--#endif
--
--#ifdef HAVE_SYS_TYPES_H
--#include <sys/types.h>
--#endif
--
--int main()
--{
-- int8 i;
-- return 0;
--}
--
--_ACEOF
--rm -f conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
--
--cat >>confdefs.h <<\_ACEOF
--#define HAVE_INT_8_16_32 1
--_ACEOF
--
--echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
--else
-- echo "$as_me: program exited with status $ac_status" >&5
--echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--( exit $ac_status )
- echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
-
--fi
--rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
--fi
-- ;;
--esac
--
- #
- # Some system specific hacks
- #
-@@ -26519,8 +25972,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -26590,8 +26042,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -26903,8 +26354,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -26957,8 +26407,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -27010,8 +26459,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -27064,8 +26512,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -27137,8 +26584,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -27214,8 +26660,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -27324,8 +26769,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -27427,8 +26871,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -27508,8 +26951,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -27585,8 +27027,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28023,8 +27464,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28084,8 +27524,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28158,8 +27597,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28224,8 +27662,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28268,8 +27705,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28341,8 +27777,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28404,8 +27839,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28474,8 +27908,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28549,8 +27982,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28612,8 +28044,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28653,8 +28084,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28710,8 +28140,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28751,8 +28180,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28816,8 +28244,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -28848,10 +28275,8 @@
- 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;}
-+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5
-+echo "$as_me: error: internal error: not reached in cross-compile" >&2;}
- { (exit 1); exit 1; }; }
- else
- cat >conftest.$ac_ext <<_ACEOF
-@@ -28981,8 +28406,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29044,8 +28468,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29085,8 +28508,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29142,8 +28564,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29183,8 +28604,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29248,8 +28668,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29280,10 +28699,8 @@
- 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;}
-+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5
-+echo "$as_me: error: internal error: not reached in cross-compile" >&2;}
- { (exit 1); exit 1; }; }
- else
- cat >conftest.$ac_ext <<_ACEOF
-@@ -29395,8 +28812,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29458,8 +28874,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29499,8 +28914,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29556,8 +28970,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29597,8 +29010,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29662,8 +29074,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29694,10 +29105,8 @@
- 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;}
-+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5
-+echo "$as_me: error: internal error: not reached in cross-compile" >&2;}
- { (exit 1); exit 1; }; }
- else
- cat >conftest.$ac_ext <<_ACEOF
-@@ -29809,8 +29218,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29872,8 +29280,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29913,8 +29320,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -29970,8 +29376,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30011,8 +29416,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30076,8 +29480,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30108,10 +29511,8 @@
- 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;}
-+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5
-+echo "$as_me: error: internal error: not reached in cross-compile" >&2;}
- { (exit 1); exit 1; }; }
- else
- cat >conftest.$ac_ext <<_ACEOF
-@@ -30229,8 +29630,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30292,8 +29692,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30333,8 +29732,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30390,8 +29788,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30431,8 +29828,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30496,8 +29892,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30528,10 +29923,8 @@
- 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;}
-+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5
-+echo "$as_me: error: internal error: not reached in cross-compile" >&2;}
- { (exit 1); exit 1; }; }
- else
- cat >conftest.$ac_ext <<_ACEOF
-@@ -30649,8 +30042,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30712,8 +30104,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30753,8 +30144,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30810,8 +30200,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30851,8 +30240,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30916,8 +30304,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -30948,10 +30335,8 @@
- 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;}
-+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5
-+echo "$as_me: error: internal error: not reached in cross-compile" >&2;}
- { (exit 1); exit 1; }; }
- else
- cat >conftest.$ac_ext <<_ACEOF
-@@ -31187,8 +30572,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -31230,8 +30614,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -31288,8 +30671,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -31432,8 +30814,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -31483,8 +30864,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -31572,8 +30952,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -31711,8 +31090,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -31789,8 +31167,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -31930,8 +31307,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -32009,8 +31385,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -32078,8 +31453,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -32451,8 +31825,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -32601,8 +31974,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -32666,8 +32038,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -32732,8 +32103,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -32797,8 +32167,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -32867,8 +32236,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -32937,8 +32305,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -33012,8 +32379,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -33160,8 +32526,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -33242,8 +32607,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -33384,8 +32748,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -33577,8 +32940,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -33678,8 +33040,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -33742,8 +33103,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -33915,8 +33275,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -34022,8 +33381,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -34124,8 +33482,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -34226,8 +33583,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -34329,8 +33685,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -34426,8 +33781,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -34619,8 +33973,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -34748,8 +34101,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -34794,8 +34146,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -34843,8 +34194,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -34930,8 +34280,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -34993,8 +34342,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -35056,8 +34404,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -35119,8 +34466,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -35204,8 +34550,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -35289,8 +34634,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -35359,8 +34703,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -35426,8 +34769,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -35576,8 +34918,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -35726,8 +35067,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -35908,8 +35248,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -36006,8 +35345,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -36104,8 +35442,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -36202,8 +35539,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -36300,8 +35636,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -36398,8 +35733,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -36466,8 +35800,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -36527,8 +35860,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -36605,8 +35937,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -36672,8 +36003,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -36739,8 +36069,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -36864,8 +36193,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -36960,8 +36288,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -37056,8 +36383,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -37152,8 +36478,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -37248,8 +36573,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -37394,8 +36718,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -37459,8 +36782,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -37631,8 +36953,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -37726,8 +37047,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -37937,8 +37257,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -38050,8 +37369,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -38113,8 +37431,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -38212,8 +37529,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -38320,8 +37636,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -38409,8 +37724,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -38498,8 +37812,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -38595,8 +37908,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -38689,8 +38001,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -38765,8 +38076,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -38835,8 +38145,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -38906,8 +38215,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -38979,8 +38287,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -39053,8 +38360,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -39124,8 +38430,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -39190,8 +38495,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -39782,8 +39086,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -39852,8 +39155,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -39921,8 +39223,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_cxx_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -40184,8 +39485,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -40358,8 +39658,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -40608,8 +39907,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -40924,8 +40222,7 @@
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -42602,8 +41899,6 @@
- s,@ZLIB_DEPS@,$ZLIB_DEPS,;t t
- s,@ZLIB_INCLUDES@,$ZLIB_INCLUDES,;t t
- s,@WRAPLIBS@,$WRAPLIBS,;t t
--s,@pstack_dirs@,$pstack_dirs,;t t
--s,@pstack_libs@,$pstack_libs,;t t
- s,@COMPILE_PSTACK_TRUE@,$COMPILE_PSTACK_TRUE,;t t
- s,@COMPILE_PSTACK_FALSE@,$COMPILE_PSTACK_FALSE,;t t
- s,@LIBDL@,$LIBDL,;t t
-@@ -42848,11 +42143,6 @@
- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
- esac
-
-- 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. */
-@@ -42891,6 +42181,12 @@
- fi;;
- esac
- done` || { (exit 1); exit 1; }
-+
-+ 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
- _ACEOF
- cat >>$CONFIG_STATUS <<_ACEOF
- sed "$ac_vpsub
-@@ -43576,7 +42872,7 @@
- { (exit 1); exit 1; }; }
- fi
-
-- cd $ac_popdir
-+ cd "$ac_popdir"
- done
- fi
-
---- mysql.old/configure.in 2005-12-21 20:39:48.000000000 +0100
-+++ mysql.dev/configure.in 2006-01-10 23:48:12.369675250 +0100
-@@ -240,41 +240,8 @@
-
- AC_MSG_CHECKING("return type of sprintf")
-
--#check the return type of sprintf
--case $SYSTEM_TYPE in
-- *netware*)
-- AC_DEFINE(SPRINTF_RETURNS_INT, [1]) AC_MSG_RESULT("int")
-- ;;
-- *)
--AC_TRY_RUN([
-- int main()
-- {
-- char* s = "hello";
-- char buf[6];
-- if((int)sprintf(buf, s) == strlen(s))
-- return 0;
--
-- return -1;
-- }
-- ],
-- [AC_DEFINE(SPRINTF_RETURNS_INT, [1], [POSIX sprintf])
-- AC_MSG_RESULT("int")],
-- [AC_TRY_RUN([
-- int main()
-- {
-- char* s = "hello";
-- char buf[6];
-- if((char*)sprintf(buf,s) == buf + strlen(s))
-- return 0;
-- return -1;
-- } ],
-- [AC_DEFINE(SPRINTF_RETURNS_PTR, [1], [Broken sprintf])
-- AC_MSG_RESULT("ptr")],
-- [AC_DEFINE(SPRINTF_RETURNS_GARBAGE, [1], [Broken sprintf])
-- AC_MSG_RESULT("garbage")])
-- ])
-- ;;
--esac
-+AC_DEFINE(SPRINTF_RETURNS_INT, [1], [POSIX sprintf])
-+AC_MSG_RESULT("int")
-
- AC_PATH_PROG(uname_prog, uname, no)
-
-@@ -790,80 +757,6 @@
- ])
- AC_SUBST(WRAPLIBS)
-
--if test "$TARGET_LINUX" = "true"; then
-- AC_MSG_CHECKING([for atomic operations])
--
-- atom_ops=
-- AC_TRY_RUN([
--#include <asm/atomic.h>
--int main()
--{
-- atomic_t v;
--
-- atomic_set(&v, 23);
-- atomic_add(5, &v);
-- return atomic_read(&v) == 28 ? 0 : -1;
--}
-- ],
-- [AC_DEFINE([HAVE_ATOMIC_ADD], [1],
-- [atomic_add() from <asm/atomic.h> (Linux only)])
-- atom_ops="${atom_ops}atomic_add "],
-- )
-- AC_TRY_RUN([
--#include <asm/atomic.h>
--int main()
--{
-- atomic_t v;
--
-- atomic_set(&v, 23);
-- atomic_sub(5, &v);
-- return atomic_read(&v) == 18 ? 0 : -1;
--}
-- ],
-- [AC_DEFINE([HAVE_ATOMIC_SUB], [1],
-- [atomic_sub() from <asm/atomic.h> (Linux only)])
-- atom_ops="${atom_ops}atomic_sub "],
-- )
--
-- if test -z "$atom_ops"; then atom_ops="no"; fi
-- AC_MSG_RESULT($atom_ops)
--
-- AC_ARG_WITH(pstack,
-- [ --with-pstack Use the pstack backtrace library],
-- [ USE_PSTACK=$withval ],
-- [ USE_PSTACK=no ])
-- pstack_libs=
-- pstack_dirs=
-- if test "$USE_PSTACK" = yes -a "$TARGET_LINUX" = "true" -a "$BASE_MACHINE_TYPE" = "i386"
-- then
-- have_libiberty= have_libbfd=
-- my_save_LIBS="$LIBS"
--dnl I have no idea if this is a good test - can not find docs for libiberty
-- AC_CHECK_LIB([iberty], [fdmatch],
-- [have_libiberty=yes
-- AC_CHECK_LIB([bfd], [bfd_openr], [have_libbfd=yes], , [-liberty])])
-- LIBS="$my_save_LIBS"
--
-- if test x"$have_libiberty" = xyes -a x"$have_libbfd" = xyes
-- then
-- pstack_dirs='$(top_srcdir)'/pstack
-- pstack_libs="../pstack/libpstack.a -lbfd -liberty"
-- # We must link staticly when using pstack
-- with_mysqld_ldflags="-all-static"
-- AC_SUBST([pstack_dirs])
-- AC_SUBST([pstack_libs])
-- AC_DEFINE([USE_PSTACK], [1], [the pstack backtrace library])
--dnl This check isn't needed, but might be nice to give some feedback....
--dnl AC_CHECK_HEADER(libiberty.h,
--dnl have_libiberty_h=yes,
--dnl have_libiberty_h=no)
-- else
-- USE_PSTACK="no"
-- fi
-- else
-- USE_PSTACK="no"
-- fi
--fi
- AM_CONDITIONAL(COMPILE_PSTACK, test "$USE_PSTACK" = "yes")
- AC_MSG_CHECKING([if we should use pstack])
- AC_MSG_RESULT([$USE_PSTACK])
-@@ -880,37 +773,7 @@
- NON_THREADED_LIBS="$LIBS"
-
- AC_MSG_CHECKING([for int8])
--case $SYSTEM_TYPE in
-- *netware)
-- AC_MSG_RESULT([no])
-- ;;
-- *)
--AC_TRY_RUN([
--#ifdef HAVE_STDLIB_H
--#include <stdlib.h>
--#endif
--
--#ifdef HAVE_STDDEF_H
--#include <stddef.h>
--#endif
--
--#ifdef HAVE_SYS_TYPES_H
--#include <sys/types.h>
--#endif
--
--int main()
--{
-- int8 i;
-- return 0;
--}
--],
--[AC_DEFINE([HAVE_INT_8_16_32], [1],
-- [whether int8, int16 and int32 types exist])
--AC_MSG_RESULT([yes])],
--[AC_MSG_RESULT([no])]
--)
-- ;;
--esac
-+AC_MSG_RESULT([no])
-
- #
- # Some system specific hacks
diff --git a/openwrt/package/nano/Config.in b/openwrt/package/nano/Config.in
deleted file mode 100644
index 70cae55309..0000000000
--- a/openwrt/package/nano/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_NANO
- prompt "nano.............................. An enhanced clone of the Pico text editor"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBNCURSES
- help
- GNU nano (Nano's ANOther editor, or Not ANOther editor) is an enhanced clone of the Pico text editor..
-
- http://www.nano-editor.org/
-
diff --git a/openwrt/package/nano/Makefile b/openwrt/package/nano/Makefile
deleted file mode 100644
index aec6fa8e62..0000000000
--- a/openwrt/package/nano/Makefile
+++ /dev/null
@@ -1,76 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=nano
-PKG_VERSION:=1.3.8
-PKG_RELEASE:=1
-PKG_MD5SUM:=20633397bf5d462255f37dfcc7cad4e7
-
-PKG_SOURCE_URL:=http://www.ewtoo.org/~astyanax/nano/dist/v1.3 \
- http://www.nano-editor.org/dist/v1.3
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,NANO,nano,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include " \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_header_regex_h=no \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --with-gnu-ld \
- --disable-rpath \
- --enable-tiny \
- --disable-glibtest \
- --disable-utf8 \
- --without-slang \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_NANO):
- install -d -m0755 $(IDIR_NANO)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/nano $(IDIR_NANO)/usr/bin/
- $(RSTRIP) $(IDIR_NANO)
- $(IPKG_BUILD) $(IDIR_NANO) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/nano/ipkg/nano.control b/openwrt/package/nano/ipkg/nano.control
deleted file mode 100644
index e68daef6bd..0000000000
--- a/openwrt/package/nano/ipkg/nano.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: nano
-Priority: optional
-Section: admin
-Depends: libncurses
-Description: An enhanced clone of the Pico text editor
diff --git a/openwrt/package/ncurses/Config.in b/openwrt/package/ncurses/Config.in
deleted file mode 100644
index 552a6ccd28..0000000000
--- a/openwrt/package/ncurses/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_COMPILE_NCURSES
- tristate
- depends BR2_PACKAGE_LIBNCURSES
-
-config BR2_PACKAGE_LIBNCURSES
- prompt "libncurses........................ Terminal handling library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_NCURSES
- help
- A terminal handling library
-
- http://www.gnu.org/software/ncurses/
-
diff --git a/openwrt/package/ncurses/Makefile b/openwrt/package/ncurses/Makefile
deleted file mode 100644
index 4223b8033b..0000000000
--- a/openwrt/package/ncurses/Makefile
+++ /dev/null
@@ -1,156 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ncurses
-PKG_VERSION:=5.2
-PKG_RELEASE:=8
-PKG_MD5SUM:=464d6a49010cf2a6eb9ce59a264d4d47
-
-PKG_SOURCE_URL:=@GNU/ncurses
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBNCURSES,libncurses,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- ./configure \
- --target=$(GNU_HOST_NAME) \
- --host=$(GNU_HOST_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-echo \
- --enable-const \
- --enable-overwrite \
- --disable-rpath \
- --without-ada \
- --without-cxx \
- --without-cxx-binding \
- --without-debug \
- --without-profile \
- --with-progs \
- --with-normal \
- --without-shared \
- --with-terminfo-dirs=/usr/share/terminfo \
- --with-default-terminfo-dir=/usr/share/terminfo \
- );
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- libs install.progs
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ac_cv_linux_vers="2" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-echo \
- --enable-const \
- --enable-overwrite \
- --disable-rpath \
- --without-ada \
- --without-cxx \
- --without-cxx-binding \
- --without-debug \
- --without-profile \
- --without-progs \
- --with-normal \
- --with-shared \
- --with-terminfo-dirs=/usr/share/terminfo \
- --with-default-terminfo-dir=/usr/share/terminfo \
- );
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- BUILD_CC="$(TARGET_CC)" \
- HOSTCC="$(HOSTCC)" \
- HOSTCCFLAGS="\$$(CPPFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- libs install.libs install.data
- touch $@
-
-$(IPKG_LIBNCURSES):
- install -d -m0755 $(IDIR_LIBNCURSES)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{ncurses,panel,menu}*.so.* $(IDIR_LIBNCURSES)/usr/lib/
- install -d -m0755 $(IDIR_LIBNCURSES)/usr/share/terminfo
- for f in a/ansi d/dumb l/linux r/rxvt s/screen v/vt100 v/vt102 x/xterm x/xterm-color; do \
- install -d -m0755 $(IDIR_LIBNCURSES)/usr/share/terminfo/`dirname $${f}`; \
- $(CP) $(PKG_INSTALL_DIR)/usr/share/terminfo/$${f} \
- $(IDIR_LIBNCURSES)/usr/share/terminfo/$${f}; \
- done
- $(RSTRIP) $(IDIR_LIBNCURSES)
- $(IPKG_BUILD) $(IDIR_LIBNCURSES) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libncurses.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/curses.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/{ncurses,panel}.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/panel.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/term{,cap}.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/unctrl.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/menu.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcurses.so $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{ncurses,panel,menu}.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libncurses.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/curses.h \
- $(STAGING_DIR)/usr/include/{ncurses,panel}.h \
- $(STAGING_DIR)/usr/include/menu.h \
- $(STAGING_DIR)/usr/include/panel.h \
- $(STAGING_DIR)/usr/include/term{,cap}.h \
- $(STAGING_DIR)/usr/include/unctrl.h \
- $(STAGING_DIR)/usr/lib/libcurses.so \
- $(STAGING_DIR)/usr/lib/lib{ncurses,panel}.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
diff --git a/openwrt/package/ncurses/ipkg/libncurses.control b/openwrt/package/ncurses/ipkg/libncurses.control
deleted file mode 100644
index 0eff1cea02..0000000000
--- a/openwrt/package/ncurses/ipkg/libncurses.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libncurses
-Priority: optional
-Section: libs
-Description: a terminal handling library and common terminal definitions
diff --git a/openwrt/package/ncurses/patches/500-cross.patch b/openwrt/package/ncurses/patches/500-cross.patch
deleted file mode 100644
index 9536191408..0000000000
--- a/openwrt/package/ncurses/patches/500-cross.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN ncurses-5.2-orig/aclocal.m4 ncurses-5.2-6/aclocal.m4
---- ncurses-5.2-orig/aclocal.m4 2000-10-21 00:57:49.000000000 +0200
-+++ ncurses-5.2-6/aclocal.m4 2005-08-09 14:50:15.000000000 +0200
-@@ -1919,7 +1919,7 @@
- EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
- fi
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
-- MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@] .$(REL_VERSION)`.$(ABI_VERSION),-stats,-lc -o $[@]'
-+ MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@] .$(REL_VERSION)`.$(ABI_VERSION),-stats,$(LDFLAGS) -lc -o $[@]'
- ;;
- openbsd2*)
- CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
-diff -ruN ncurses-5.2-orig/configure ncurses-5.2-6/configure
---- ncurses-5.2-orig/configure 2000-10-21 00:58:49.000000000 +0200
-+++ ncurses-5.2-6/configure 2005-08-09 14:50:25.000000000 +0200
-@@ -2660,7 +2660,7 @@
- EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
- fi
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
-- MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $@ .$(REL_VERSION)`.$(ABI_VERSION),-stats,-lc -o $@'
-+ MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $@ .$(REL_VERSION)`.$(ABI_VERSION),-stats,$(LDFLAGS) -lc -o $@'
- ;;
- openbsd2*)
- CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
diff --git a/openwrt/package/ncurses/patches/501-cross-no_libdir.patch b/openwrt/package/ncurses/patches/501-cross-no_libdir.patch
deleted file mode 100644
index b8b277fb18..0000000000
--- a/openwrt/package/ncurses/patches/501-cross-no_libdir.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-diff -ruN ncurses-5.2-old/configure ncurses-5.2-new/configure
---- ncurses-5.2-old/configure 2005-08-23 04:17:49.000000000 +0200
-+++ ncurses-5.2-new/configure 2005-08-23 04:18:39.000000000 +0200
-@@ -7191,11 +7191,11 @@
- fi
- done
- echo "$ac_t""$cf_cv_src_modules" 1>&6
--TEST_ARGS="-L${LIB_DIR} -L\$(libdir) $TEST_ARGS"
-+TEST_ARGS="-L${LIB_DIR} $TEST_ARGS"
-
-
-
--PROG_ARGS="-L${LIB_DIR} -L\$(libdir) $PROG_ARGS"
-+PROG_ARGS="-L${LIB_DIR} $PROG_ARGS"
-
-
- SRC_SUBDIRS="man include"
-diff -ruN ncurses-5.2-old/form/Makefile.in ncurses-5.2-new/form/Makefile.in
---- ncurses-5.2-old/form/Makefile.in 2000-10-14 19:57:02.000000000 +0200
-+++ ncurses-5.2-new/form/Makefile.in 2005-08-23 04:22:08.000000000 +0200
-@@ -85,7 +85,7 @@
- LINK = $(LIBTOOL) $(CC)
- LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
-
--SHLIB_DIRS = -L../lib -L$(libdir)
-+SHLIB_DIRS = -L../lib
- SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
-
- MK_SHARED_LIB = @MK_SHARED_LIB@
-diff -ruN ncurses-5.2-old/menu/Makefile.in ncurses-5.2-new/menu/Makefile.in
---- ncurses-5.2-old/menu/Makefile.in 2000-10-14 19:57:02.000000000 +0200
-+++ ncurses-5.2-new/menu/Makefile.in 2005-08-23 04:22:18.000000000 +0200
-@@ -85,7 +85,7 @@
- LINK = $(LIBTOOL) $(CC)
- LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
-
--SHLIB_DIRS = -L../lib -L$(libdir)
-+SHLIB_DIRS = -L../lib
- SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
-
- MK_SHARED_LIB = @MK_SHARED_LIB@
-diff -ruN ncurses-5.2-old/ncurses/Makefile.in ncurses-5.2-new/ncurses/Makefile.in
---- ncurses-5.2-old/ncurses/Makefile.in 2000-10-15 00:55:35.000000000 +0200
-+++ ncurses-5.2-new/ncurses/Makefile.in 2005-08-23 04:21:53.000000000 +0200
-@@ -99,7 +99,7 @@
- LINK = $(LIBTOOL) $(CC)
- LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
-
--SHLIB_DIRS = -L../lib -L$(libdir)
-+SHLIB_DIRS = -L../lib
- SHLIB_LIST = $(SHLIB_DIRS) @SHLIB_LIST@
- TINFO_LIST = $(SHLIB_DIRS) @TINFO_LIST@
-
-diff -ruN ncurses-5.2-old/panel/Makefile.in ncurses-5.2-new/panel/Makefile.in
---- ncurses-5.2-old/panel/Makefile.in 2000-10-14 19:57:02.000000000 +0200
-+++ ncurses-5.2-new/panel/Makefile.in 2005-08-23 04:22:30.000000000 +0200
-@@ -86,7 +86,7 @@
- LINK = $(LIBTOOL) $(CC)
- LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
-
--SHLIB_DIRS = -L../lib -L$(libdir)
-+SHLIB_DIRS = -L../lib
- SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
-
- MK_SHARED_LIB = @MK_SHARED_LIB@
diff --git a/openwrt/package/ndisc/Config.in b/openwrt/package/ndisc/Config.in
deleted file mode 100644
index 5513edb0a6..0000000000
--- a/openwrt/package/ndisc/Config.in
+++ /dev/null
@@ -1,41 +0,0 @@
-menu "ndisc6............................ IPv6 discovery tools"
-
-config BR2_COMPILE_NDISC6
- tristate
- default n
- depends BR2_PACKAGE_NDISC6 || BR2_PACKAGE_RDISC6 || BR2_PACKAGE_TCPTRACEROUTE6
-
-config BR2_PACKAGE_NDISC6
- prompt "ndisc6............................ An ICMPv6 neighbour discovery tool"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_NDISC6
- help
-
- An ICMPv6 neighbour discovery tools
-
- http://people.via.ecp.fr/~rem/ndisc6/
-
-config BR2_PACKAGE_RDISC6
- prompt "rdisc6............................ An ICMPv6 router discovery tool"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_NDISC6
- help
-
- An ICMPv6 router discovery tool
-
- http://people.via.ecp.fr/~rem/ndisc6/
-
-config BR2_PACKAGE_TCPTRACEROUTE6
- prompt "tcptraceroute6.................... A TCP/IPv6-based traceroute implementation"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_NDISC6
- help
-
- A TCP/IPv6-based traceroute implementation
-
- http://people.via.ecp.fr/~rem/ndisc6/
-
-endmenu
diff --git a/openwrt/package/ndisc/Makefile b/openwrt/package/ndisc/Makefile
deleted file mode 100644
index cef5dc1da0..0000000000
--- a/openwrt/package/ndisc/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ndisc6
-PKG_VERSION:=0.5.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=33487fe5505b195eb31468d88ba9ab56
-
-PKG_SOURCE_URL:=http://people.via.ecp.fr/~rem/ndisc6/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,NDISC6,ndisc6,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,RDISC6,rdisc6,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,TCPTRACEROUTE6,tcptraceroute6,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- all
- touch $@
-
-$(IPKG_NDISC6):
- install -d -m0755 $(IDIR_NDISC6)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/ndisc6 $(IDIR_NDISC6)/usr/bin/
- $(RSTRIP) $(IDIR_NDISC6)
- $(IPKG_BUILD) $(IDIR_NDISC6) $(PACKAGE_DIR)
-
-$(IPKG_RDISC6):
- install -d -m0755 $(IDIR_RDISC6)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/rdisc6 $(IDIR_RDISC6)/usr/bin/
- $(RSTRIP) $(IDIR_RDISC6)
- $(IPKG_BUILD) $(IDIR_RDISC6) $(PACKAGE_DIR)
-
-$(IPKG_TCPTRACEROUTE6):
- install -d -m0755 $(IDIR_TCPTRACEROUTE6)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/tcptraceroute6 $(IDIR_TCPTRACEROUTE6)/usr/bin/
- $(RSTRIP) $(IDIR_TCPTRACEROUTE6)
- $(IPKG_BUILD) $(IDIR_TCPTRACEROUTE6) $(PACKAGE_DIR)
diff --git a/openwrt/package/ndisc/ipkg/ndisc6.control b/openwrt/package/ndisc/ipkg/ndisc6.control
deleted file mode 100644
index 40b935e91c..0000000000
--- a/openwrt/package/ndisc/ipkg/ndisc6.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: ndisc6
-Priority: optional
-Section: net
-Description: ICMPv6 Neighbour Discovery tool
diff --git a/openwrt/package/ndisc/ipkg/rdisc6.control b/openwrt/package/ndisc/ipkg/rdisc6.control
deleted file mode 100644
index 4724d69149..0000000000
--- a/openwrt/package/ndisc/ipkg/rdisc6.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: rdisc6
-Priority: optional
-Section: net
-Description: ICMPv6 Router Discovery tool
diff --git a/openwrt/package/ndisc/ipkg/tcptraceroute6.control b/openwrt/package/ndisc/ipkg/tcptraceroute6.control
deleted file mode 100644
index 625fe80c16..0000000000
--- a/openwrt/package/ndisc/ipkg/tcptraceroute6.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: tcptraceroute6
-Priority: optional
-Section: net
-Description: A TCP/IPv6-based traceroute implementation
diff --git a/openwrt/package/ndisc/patches/100-license.patch b/openwrt/package/ndisc/patches/100-license.patch
deleted file mode 100644
index 8ea76c5160..0000000000
--- a/openwrt/package/ndisc/patches/100-license.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -urN ndisc6.old/Makefile ndisc6.dev/Makefile
---- ndisc6.old/Makefile 2005-12-01 15:34:08.000000000 +0100
-+++ ndisc6.dev/Makefile 2006-03-23 13:44:32.000000000 +0100
-@@ -31,7 +31,7 @@
-
- sbin_PROGRAMS = ndisc6 rdisc6 traceroute6
- man8_MANS = $(sbin_PROGRAMS:%=%.8)
--DOC = COPYING INSTALL NEWS README
-+DOC = INSTALL NEWS README
-
- AM_CPPFLAGS = -DPACKAGE_VERSION=\"$(VERSION)\" $(CPPFLAGS)
- ndisc6_CPPFLAGS = $(AM_CPPFLAGS)
-@@ -52,9 +52,6 @@
- tcptraceroute6: traceroute6
- ln -sf traceroute6 $@
-
--COPYING: /usr/share/common-licenses/GPL-2
-- ln -s $< $@
--
- install: all install-man install-links
- mkdir -p $(DESTDIR)$(bindir)
- @for f in $(sbin_PROGRAMS); do \
diff --git a/openwrt/package/net-snmp/Config.in b/openwrt/package/net-snmp/Config.in
deleted file mode 100644
index e0a6d0387e..0000000000
--- a/openwrt/package/net-snmp/Config.in
+++ /dev/null
@@ -1,75 +0,0 @@
-menu "net-snmp.......................... Open source SNMP (Simple Network Management Protocol) implementation"
-
-config BR2_COMPILE_NET_SNMP
- tristate
- default n
- depends BR2_PACKAGE_LIBNETSNMP || BR2_PACKAGE_SNMPD_STATIC
-
-config BR2_PACKAGE_LIBNETSNMP
- prompt "libnetsnmp........................ SNMP shared libraries"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_NET_SNMP
- select BR2_PACKAGE_LIBELF
- help
- Simple Network Management Protocol (SNMP) is a widely used
- protocol for monitoring the health and welfare of network
- equipment (eg. routers), computer equipment and even devices
- like UPSs. Net-SNMP is a suite of applications used to implement
- SNMP v1, SNMP v2c and SNMP v3 using both IPv4 and IPv6.
-
- http://www.net-snmp.org/
-
- This package contains shared libraries, needed by other programs.
-
-config BR2_PACKAGE_SNMP_UTILS
- prompt "snmp-utils...................... SNMP client utilities"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBNETSNMP
- help
- Simple Network Management Protocol (SNMP) is a widely used
- protocol for monitoring the health and welfare of network
- equipment (eg. routers), computer equipment and even devices
- like UPSs. Net-SNMP is a suite of applications used to implement
- SNMP v1, SNMP v2c and SNMP v3 using both IPv4 and IPv6.
-
- http://www.net-snmp.org/
-
- This package contains the SNMP client utilities.
-
-config BR2_PACKAGE_SNMPD
- prompt "snmpd............................. SNMP agent"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_NET_SNMP
- select BR2_PACKAGE_LIBNETSNMP
- help
- Simple Network Management Protocol (SNMP) is a widely used
- protocol for monitoring the health and welfare of network
- equipment (eg. routers), computer equipment and even devices
- like UPSs. Net-SNMP is a suite of applications used to implement
- SNMP v1, SNMP v2c and SNMP v3 using both IPv4 and IPv6.
-
- http://www.net-snmp.org/
-
- This package contains the SNMP agent, dynamically linked.
-
-config BR2_PACKAGE_SNMPD_STATIC
- prompt "snmpd-static...................... SNMP agent (statically linked)"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_NET_SNMP
- select BR2_PACKAGE_LIBELF
- help
- Simple Network Management Protocol (SNMP) is a widely used
- protocol for monitoring the health and welfare of network
- equipment (eg. routers), computer equipment and even devices
- like UPSs. Net-SNMP is a suite of applications used to implement
- SNMP v1, SNMP v2c and SNMP v3 using both IPv4 and IPv6.
-
- http://www.net-snmp.org/
-
- This package contains the SNMP agent, statically linked.
-
-endmenu
diff --git a/openwrt/package/net-snmp/Makefile b/openwrt/package/net-snmp/Makefile
deleted file mode 100644
index 25a1cc6d1b..0000000000
--- a/openwrt/package/net-snmp/Makefile
+++ /dev/null
@@ -1,205 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=net-snmp
-PKG_VERSION:=5.1.2
-PKG_RELEASE:=2.1
-PKG_MD5SUM:=8080555ab3f90011f25d5122042d9a8d
-
-PKG_SOURCE_URL:=@SF/net-snmp
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-SNMP_MIB_MODULES_INCLUDED = \
- host/hr_device \
- host/hr_disk \
- host/hr_filesys \
- host/hr_network \
- host/hr_partition \
- host/hr_proc \
- host/hr_storage \
- host/hr_system \
- mibII/at \
- mibII/icmp \
- mibII/interfaces \
- mibII/ip \
- mibII/snmp_mib \
- mibII/sysORTable \
- mibII/system_mib \
- mibII/tcp \
- mibII/udp \
- mibII/vacm_context \
- mibII/vacm_vars \
- snmpv3/snmpEngine \
- snmpv3/snmpMPDStats \
- snmpv3/usmStats \
- snmpv3/usmUser \
- snmpv3mibs \
- tunnel \
- ucd-snmp/disk \
- ucd-snmp/dlmod \
- ucd-snmp/extensible \
- ucd-snmp/loadave \
- ucd-snmp/memory \
- ucd-snmp/pass \
- ucd-snmp/proc \
- ucd-snmp/vmstat \
- util_funcs \
- utilities/execute \
-
-SNMP_MIB_MODULES_EXCLUDED = \
- agent_mibs \
- agentx \
- host \
- ieee802dot11 \
- mibII \
- notification \
- snmpv3mibs \
- target \
- ucd_snmp \
- utilities \
-
-SNMP_TRANSPORTS_INCLUDED = Callback UDP
-
-SNMP_TRANSPORTS_EXCLUDED = TCP TCPv6 UDPv6 Unix
-
-PKG_CONFIGURE_OPTIONS = \
- --enable-shared \
- --enable-static \
- --with-endianness=little \
- --with-logfile=/var/log/snmpd.log \
- --with-persistent-directory=/usr/lib/snmp/ \
- --with-default-snmp-version=1 \
- --with-sys-contact=root@localhost \
- --with-sys-location=Unknown \
- --enable-applications \
- --disable-debugging \
- --disable-ipv6 \
- --disable-manuals \
- --disable-mib-loading \
- --disable-mibs \
- --disable-scripts \
- --with-out-mib-modules="$(SNMP_MIB_MODULES_EXCLUDED)" \
- --with-mib-modules="$(SNMP_MIB_MODULES_INCLUDED)" \
- --with-out-transports="$(SNMP_TRANSPORTS_EXCLUDED)" \
- --with-transports="$(SNMP_TRANSPORTS_INCLUDED)" \
- --without-opaque-special-types \
- --without-openssl \
- --without-libwrap \
- --without-rpm \
- --without-zlib \
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBNETSNMP,libnetsnmp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SNMPD,snmpd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SNMPD_STATIC,snmpd-static,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SNMP_UTILS,snmp-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- ( cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_header_pcap_h=no \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- $(PKG_CONFIGURE_OPTIONS) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
- all install
- ( cd $(PKG_INSTALL_DIR); mv ./usr/sbin/snmpd ./usr/sbin/snmpd-shared; )
-ifneq ($(BR2_PACKAGE_SNMPD_STATIC),)
- ( cd $(PKG_BUILD_DIR); rm -f agent/snmpd; )
- $(MAKE) -C $(PKG_BUILD_DIR) \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib -static" \
- INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
- all install
- ( cd $(PKG_INSTALL_DIR); mv ./usr/sbin/snmpd ./usr/sbin/snmpd-static; )
-endif
- touch $@
-
-$(IPKG_LIBNETSNMP):
- install -d -m0755 $(IDIR_LIBNETSNMP)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnetsnmp{,agent,helpers,mibs}.so.* $(IDIR_LIBNETSNMP)/usr/lib/
- $(RSTRIP) $(IDIR_LIBNETSNMP)
- $(IPKG_BUILD) $(IDIR_LIBNETSNMP) $(PACKAGE_DIR)
-
-$(IPKG_SNMPD):
- install -d -m0755 $(IDIR_SNMPD)/etc/snmp
- install -m0644 ./files/snmpd.conf $(IDIR_SNMPD)/etc/snmp/snmpd.conf
- install -d -m0755 $(IDIR_SNMPD)/etc/default
- install -m0644 ./files/snmpd.default $(IDIR_SNMPD)/etc/default/snmpd
- install -d -m0755 $(IDIR_SNMPD)/etc/init.d
- install -m0755 ./files/snmpd.init $(IDIR_SNMPD)/etc/init.d/snmpd
- install -d -m0755 $(IDIR_SNMPD)/usr/sbin
- install -m0755 $(PKG_INSTALL_DIR)/usr/sbin/snmpd-shared $(IDIR_SNMPD)/usr/sbin/snmpd
- $(RSTRIP) $(IDIR_SNMPD)
- $(IPKG_BUILD) $(IDIR_SNMPD) $(PACKAGE_DIR)
-
-$(IPKG_SNMPD_STATIC):
- install -d -m0755 $(IDIR_SNMPD_STATIC)/etc/snmp
- install -m0644 ./files/snmpd.conf $(IDIR_SNMPD_STATIC)/etc/snmp/snmpd.conf
- install -d -m0755 $(IDIR_SNMPD_STATIC)/etc/default
- install -m0644 ./files/snmpd.default $(IDIR_SNMPD_STATIC)/etc/default/snmpd
- install -d -m0755 $(IDIR_SNMPD_STATIC)/etc/init.d
- install -m0755 ./files/snmpd.init $(IDIR_SNMPD_STATIC)/etc/init.d/snmpd
- install -d -m0755 $(IDIR_SNMPD_STATIC)/usr/sbin
- install -m0755 $(PKG_INSTALL_DIR)/usr/sbin/snmpd-static $(IDIR_SNMPD_STATIC)/usr/sbin/snmpd
- $(RSTRIP) $(IDIR_SNMPD_STATIC)
- $(IPKG_BUILD) $(IDIR_SNMPD_STATIC) $(PACKAGE_DIR)
-
-$(IPKG_SNMP_UTILS):
- install -d -m0755 $(IDIR_SNMP_UTILS)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/snmp{get,set,status,test,trap,walk} $(IDIR_SNMP_UTILS)/usr/bin/
- $(RSTRIP) $(IDIR_SNMP_UTILS)
- $(IPKG_BUILD) $(IDIR_SNMP_UTILS) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libnetsnmp.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/net-snmp-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/net-snmp $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnetsnmp{,agent,helpers,mibs}.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libnetsnmp.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/net-snmp-config \
- $(STAGING_DIR)/usr/include/net-snmp \
- $(STAGING_DIR)/usr/lib/libnetsnmp{,agent,helpers,mibs}.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/net-snmp/files/snmpd.conf b/openwrt/package/net-snmp/files/snmpd.conf
deleted file mode 100644
index f6e872ab64..0000000000
--- a/openwrt/package/net-snmp/files/snmpd.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-com2sec ro default public
-com2sec rw localhost private
-
-group public v1 ro
-group public v2c ro
-group public usm ro
-group private v1 rw
-group private v2c rw
-group private usm rw
-
-view all included .1
-
-access public "" any noauth exact all none none
-access private "" any noauth exact all all all
diff --git a/openwrt/package/net-snmp/files/snmpd.default b/openwrt/package/net-snmp/files/snmpd.default
deleted file mode 100644
index 758c8e44fe..0000000000
--- a/openwrt/package/net-snmp/files/snmpd.default
+++ /dev/null
@@ -1 +0,0 @@
-OPTIONS="-Lf /dev/null -p /var/run/snmpd.pid"
diff --git a/openwrt/package/net-snmp/files/snmpd.init b/openwrt/package/net-snmp/files/snmpd.init
deleted file mode 100644
index 46b429760b..0000000000
--- a/openwrt/package/net-snmp/files/snmpd.init
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/snmpd
-LIB_D=/var/lib/snmp
-LOG_D=/var/log
-RUN_D=/var/run
-PID_F=$RUN_D/snmpd.pid
-
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- [ -d $LIB_D ] || mkdir -p $LIB_D
- [ -d $LOG_D ] || mkdir -p $LOG_D
- [ -d $RUN_D ] || mkdir -p $RUN_D
- snmpd $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-exit $?
diff --git a/openwrt/package/net-snmp/ipkg/libnetsnmp.control b/openwrt/package/net-snmp/ipkg/libnetsnmp.control
deleted file mode 100644
index 7a28ef887c..0000000000
--- a/openwrt/package/net-snmp/ipkg/libnetsnmp.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libnetsnmp
-Priority: optional
-Section: libs
-Description: SNMP shared libraries
diff --git a/openwrt/package/net-snmp/ipkg/snmp-utils.control b/openwrt/package/net-snmp/ipkg/snmp-utils.control
deleted file mode 100644
index 42d9251c8a..0000000000
--- a/openwrt/package/net-snmp/ipkg/snmp-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: snmp-utils
-Priority: optional
-Section: admin
-Description: SNMP client utilities
-Depends: libnetsnmp, libelf
diff --git a/openwrt/package/net-snmp/ipkg/snmpd-static.conffiles b/openwrt/package/net-snmp/ipkg/snmpd-static.conffiles
deleted file mode 100644
index 2864cc903a..0000000000
--- a/openwrt/package/net-snmp/ipkg/snmpd-static.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/default/snmpd
-/etc/snmp/snmpd.conf
diff --git a/openwrt/package/net-snmp/ipkg/snmpd-static.control b/openwrt/package/net-snmp/ipkg/snmpd-static.control
deleted file mode 100644
index 9281441ae4..0000000000
--- a/openwrt/package/net-snmp/ipkg/snmpd-static.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: snmpd-static
-Priority: optional
-Section: admin
-Description: SNMP agent
-Depends: libelf
diff --git a/openwrt/package/net-snmp/ipkg/snmpd.conffiles b/openwrt/package/net-snmp/ipkg/snmpd.conffiles
deleted file mode 100644
index 2864cc903a..0000000000
--- a/openwrt/package/net-snmp/ipkg/snmpd.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/default/snmpd
-/etc/snmp/snmpd.conf
diff --git a/openwrt/package/net-snmp/ipkg/snmpd.control b/openwrt/package/net-snmp/ipkg/snmpd.control
deleted file mode 100644
index 986b19631b..0000000000
--- a/openwrt/package/net-snmp/ipkg/snmpd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: snmpd
-Priority: optional
-Section: admin
-Description: SNMP agent
-Depends: libnetsnmp, libelf
diff --git a/openwrt/package/net-snmp/patches/500-debian-subset-5.1.2-6.1.patch b/openwrt/package/net-snmp/patches/500-debian-subset-5.1.2-6.1.patch
deleted file mode 100644
index 9f441770e3..0000000000
--- a/openwrt/package/net-snmp/patches/500-debian-subset-5.1.2-6.1.patch
+++ /dev/null
@@ -1,7282 +0,0 @@
-diff -ruN net-snmp-5.1.2-orig/EXAMPLE-trap.conf net-snmp-5.1.2-5/EXAMPLE-trap.conf
---- net-snmp-5.1.2-orig/EXAMPLE-trap.conf 1970-01-01 01:00:00.000000000 +0100
-+++ net-snmp-5.1.2-5/EXAMPLE-trap.conf 2005-03-13 16:17:21.000000000 +0100
-@@ -0,0 +1,18 @@
-+###############################################################################
-+#
-+# EXAMPLE.conf:
-+# An example configuration file for configuring the ucd-snmp snmptrapd agent.
-+#
-+###############################################################################
-+#
-+# This file is intended to only be an example. If, however, you want
-+# to use it, it should be placed in /etc/snmp/snmptrapd.conf.
-+# When the snmptrapd agent starts up, this is where it will look for it.
-+#
-+# All lines beginning with a '#' are comments and are intended for you
-+# to read. All other lines are configuration commands for the agent.
-+
-+#
-+# PLEASE: read the snmptrapd.conf(5) manual page as well!
-+#
-+
-diff -ruN net-snmp-5.1.2-orig/EXAMPLE.conf.def net-snmp-5.1.2-5/EXAMPLE.conf.def
---- net-snmp-5.1.2-orig/EXAMPLE.conf.def 2003-02-25 15:04:06.000000000 +0100
-+++ net-snmp-5.1.2-5/EXAMPLE.conf.def 2005-03-13 16:17:21.000000000 +0100
-@@ -6,7 +6,7 @@
- ###############################################################################
- #
- # This file is intended to only be an example. If, however, you want
--# to use it, it should be placed in SYSCONFDIR/share/snmp/snmpd.conf.
-+# to use it, it should be placed in /etc/snmp/snmpd.conf.
- # When the snmpd agent starts up, this is where it will look for it.
- #
- # You might be interested in generating your own snmpd.conf file using
-@@ -58,31 +58,37 @@
- # from):
-
- # sec.name source community
--com2sec local localhost COMMUNITY
--com2sec mynetwork NETWORK/24 COMMUNITY
-+com2sec paranoid default public
-+#com2sec readonly default public
-+#com2sec readwrite default private
-
- ####
- # Second, map the security names into group names:
-
- # sec.model sec.name
--group MyRWGroup v1 local
--group MyRWGroup v2c local
--group MyRWGroup usm local
--group MyROGroup v1 mynetwork
--group MyROGroup v2c mynetwork
--group MyROGroup usm mynetwork
-+group MyROSystem v1 paranoid
-+group MyROSystem v2c paranoid
-+group MyROSystem usm paranoid
-+group MyROGroup v1 readonly
-+group MyROGroup v2c readonly
-+group MyROGroup usm readonly
-+group MyRWGroup v1 readwrite
-+group MyRWGroup v2c readwrite
-+group MyRWGroup usm readwrite
-
- ####
- # Third, create a view for us to let the groups have rights to:
-
- # incl/excl subtree mask
- view all included .1 80
-+view system included .iso.org.dod.internet.mgmt.mib-2.system
-
- ####
- # Finally, grant the 2 groups access to the 1 view with different
- # write permissions:
-
- # context sec.model sec.level match read write notif
-+access MyROSystem "" any noauth exact system none none
- access MyROGroup "" any noauth exact all none none
- access MyRWGroup "" any noauth exact all all none
-
-@@ -100,8 +106,8 @@
- # value of an object whose value is given here will fail with an error
- # status of notWritable.
-
--syslocation Right here, right now.
--syscontact Me <me@somewhere.org>
-+syslocation Unknown (configure /etc/snmp/snmpd.local.conf)
-+syscontact Root <root@localhost> (configure /etc/snmp/snmpd.local.conf)
-
- # Example output of snmpwalk:
- # % snmpwalk -v 1 -c public localhost system
-@@ -135,13 +141,13 @@
- #
-
- # Make sure mountd is running
--proc mountd
-+#proc mountd
-
- # Make sure there are no more than 4 ntalkds running, but 0 is ok too.
--proc ntalkd 4
-+#proc ntalkd 4
-
- # Make sure at least one sendmail, but less than or equal to 10 are running.
--proc sendmail 10 1
-+#proc sendmail 10 1
-
- # A snmpwalk of the prTable would look something like this:
- #
-@@ -199,7 +205,7 @@
- # ARGS: optional arguments to be passed to the program
-
- # a simple hello world
--exec echotest /bin/echo hello world
-+#exec echotest /bin/echo hello world
-
- # Run a shell script containing:
- #
-@@ -250,7 +256,7 @@
-
- # Check the / partition and make sure it contains at least 10 megs.
-
--disk / 10000
-+#disk / 10000
-
- # % snmpwalk -v 1 -c public localhost .EXTENSIBLEDOTMIB.DISKMIBNUM
- # enterprises.ucdavis.diskTable.dskEntry.diskIndex.1 = 0
-@@ -279,7 +285,7 @@
- # 15MAX: Similar, but for 15 min average.
-
- # Check for loads:
--load 12 14 14
-+#load 12 14 14
-
- # % snmpwalk -v 1 -c public localhost .EXTENSIBLEDOTMIB.LOADAVEMIBNUM
- # enterprises.ucdavis.loadTable.laEntry.loadaveIndex.1 = 1
-@@ -365,7 +371,7 @@
- # (commented out here since it requires that you place the
- # script in the right location. (its not installed by default))
-
--# pass .EXTENSIBLEDOTMIB.255 /bin/sh PREFIX/local/passtest
-+# pass .EXTENSIBLEDOTMIB.255 /bin/sh /usr/local/passtest
-
- # % snmpwalk -v 1 -c public localhost .EXTENSIBLEDOTMIB.255
- # enterprises.ucdavis.255.1 = "life the universe and everything"
-diff -ruN net-snmp-5.1.2-orig/FAQ net-snmp-5.1.2-5/FAQ
---- net-snmp-5.1.2-orig/FAQ 2004-08-07 10:02:45.000000000 +0200
-+++ net-snmp-5.1.2-5/FAQ 2005-03-13 16:17:21.000000000 +0100
-@@ -104,7 +104,7 @@
- I don't understand the new access control stuff - what does it mean?
- How do I configure SNMPv3 users?
- The 'createUser' line disappears when I start the agent. Why?
-- What's the difference between /var/ucd-snmp and /usr/local/share/snmp?
-+ What's the difference between /var/ucd-snmp and /usr/share/snmp?
- My new agent is ignoring the old snmpd.conf file. Why?
- Why am I getting "Connection refused"?
- I'm getting errors about "bad security model" - why?
-@@ -620,7 +620,7 @@
-
- Firstly,
-
-- cp MY-MIB.txt /usr/local/share/snmp/mibs
-+ cp MY-MIB.txt /usr/share/snmp/mibs
-
- or
-
-@@ -639,7 +639,7 @@
- Note that you need *both* steps.
- The first command copies the file defining the new MIB to a
- expected location for MIB files. This defaults to
-- /usr/local/share/snmp/mibs (or PREFIX/share/snmp/mibs if the the
-+ /usr/share/snmp/mibs (or PREFIX/share/snmp/mibs if the the
- suite was installed into a different base location). Some
- ready-packaged distributions (such as Linux RPM packages) may look
- for MIB files in a different location, such as /etc/snmp/mibs - put
-@@ -1111,7 +1111,7 @@
- If this is the case, then you can specify this interpreter
- explicitly as part of the trap handle directive:
-
-- traphandle default /usr/bin/perl /usr/local/bin/log_it
-+ traphandle default /usr/bin/perl /usr/bin/log_it
-
- Note that in this case, it's almost certain that you'll also
- need to give the full path to the traphandle script (as shown)
-@@ -1263,7 +1263,7 @@
- (if appropriate) the community string to use.
-
- Some of these (such as the MIB file location), might belong in a
-- shared snmp.conf file (typically /usr/local/share/snmp/snmp.conf or
-+ shared snmp.conf file (typically /usr/share/snmp/snmp.conf or
- /etc/snmp/snmp.conf) to apply to all users of the system. Others
- (particularly the SNMPv3 security settings), are more likely to refer
- to a particular user, and should go in a personal snmp.conf file
-@@ -1522,7 +1522,7 @@
-
-
- Alternatively, the tools may be looking in the wrong place.
-- The default location for the mib files is /usr/local/share/snmp/mibs.
-+ The default location for the mib files is /usr/share/snmp/mibs.
- Again, this is set when the suite is first configured and compiled.
- This can be changed using the environmental variable 'MIBDIRS'
- or the snmp.conf directive 'mibdirs'.
-@@ -2507,11 +2507,11 @@
-
-
-
--What's the difference between /var/ucd-snmp and /usr/local/share/snmp?
-+What's the difference between /var/ucd-snmp and /usr/share/snmp?
- ---------------------------------------------------------------------
-
- Most "static" agent configuration should go in the traditional location
-- (typically /usr/local/share/snmp/snmpd.conf or /etc/snmp). The
-+ (typically /usr/share/snmp/snmpd.conf or /etc/snmp). The
- /var/ucd-snmp (or /var/net-snmp) location is used for information set during
- the running of the agent, which needs to be persistent between one run of
- the agent and the next.
-@@ -2531,7 +2531,7 @@
- distribution), with the current release installed from the source.
-
- The default location for this file with the basic distribution is
-- /usr/local/share/snmp/snmpd.conf (or PREFIX/share/snmp/snmpd.conf).
-+ /usr/share/snmp/snmpd.conf (or PREFIX/share/snmp/snmpd.conf).
- Ready-installed versions often look for the file as /etc/snmpd.conf,
- or /etc/snmp/snmpd.conf. Try moving the old config file to the new
- location, and restart the agent.
-diff -ruN net-snmp-5.1.2-orig/Makefile.in net-snmp-5.1.2-5/Makefile.in
---- net-snmp-5.1.2-orig/Makefile.in 2004-08-04 14:48:14.000000000 +0200
-+++ net-snmp-5.1.2-5/Makefile.in 2005-03-13 16:17:21.000000000 +0100
-@@ -163,6 +163,11 @@
- ( cd perl ; $(MAKE) clean ) ; \
- fi
-
-+perlrealclean:
-+ @if test -f perl/Makefile; then \
-+ ( cd perl ; $(MAKE) realclean ) ; \
-+ fi
-+
- #
- # make distclean completely removes all traces of building including
- # any files generated by configure itself.
-diff -ruN net-snmp-5.1.2-orig/Makefile.rules net-snmp-5.1.2-5/Makefile.rules
---- net-snmp-5.1.2-orig/Makefile.rules 2004-02-13 23:42:28.000000000 +0100
-+++ net-snmp-5.1.2-5/Makefile.rules 2005-03-13 16:17:21.000000000 +0100
-@@ -301,7 +301,7 @@
- # cleaning targets
- #
- clean: cleansubdirs $(OTHERCLEANTODOS)
-- rm -f core ${OBJS} ${LOBJS} $(STANDARDCLEANTARGETS) $(OTHERCLEANTARGETS)
-+ rm -f -- core ${OBJS} ${LOBJS} $(STANDARDCLEANTARGETS) $(OTHERCLEANTARGETS)
- rm -rf .libs
-
- cleansubdirs:
-diff -ruN net-snmp-5.1.2-orig/Makefile.top net-snmp-5.1.2-5/Makefile.top
---- net-snmp-5.1.2-orig/Makefile.top 2004-08-07 09:29:36.000000000 +0200
-+++ net-snmp-5.1.2-5/Makefile.top 2005-03-13 16:17:21.000000000 +0100
-@@ -27,6 +27,7 @@
- snmplibdir = $(datadir)/snmp
- mibdir = $(snmplibdir)/mibs
- persistentdir = @PERSISTENT_DIRECTORY@
-+sysconfdir = @sysconfdir@
- INSTALL_PREFIX = @INSTALL_PREFIX@
-
- #
-diff -ruN net-snmp-5.1.2-orig/acconfig.h net-snmp-5.1.2-5/acconfig.h
---- net-snmp-5.1.2-orig/acconfig.h 2004-06-28 20:54:17.000000000 +0200
-+++ net-snmp-5.1.2-5/acconfig.h 2005-03-13 16:17:21.000000000 +0100
-@@ -560,6 +560,9 @@
- /* define if you have getservbyname */
- #undef HAVE_GETSERVBYNAME
-
-+/* define if you have dlopen */
-+#undef HAVE_DLOPEN
-+
- /* printing system */
- #undef HAVE_LPSTAT
- #undef LPSTAT_PATH
-diff -ruN net-snmp-5.1.2-orig/acinclude.m4 net-snmp-5.1.2-5/acinclude.m4
---- net-snmp-5.1.2-orig/acinclude.m4 1970-01-01 01:00:00.000000000 +0100
-+++ net-snmp-5.1.2-5/acinclude.m4 2005-03-13 16:17:21.000000000 +0100
-@@ -0,0 +1,193 @@
-+dnl @synopsis AC_PROMPT_USER_NO_DEFINE(VARIABLENAME,QUESTION,[DEFAULT])
-+dnl
-+dnl Asks a QUESTION and puts the results in VARIABLENAME with an optional
-+dnl DEFAULT value if the user merely hits return.
-+dnl
-+dnl @version 1.15
-+dnl @author Wes Hardaker <hardaker@users.sourceforge.net>
-+dnl
-+AC_DEFUN([AC_PROMPT_USER_NO_DEFINE],
-+dnl changequote(<<, >>) dnl
-+dnl <<
-+[
-+if test "x$defaults" = "xno"; then
-+echo $ac_n "$2 ($3): $ac_c"
-+read tmpinput
-+if test "$tmpinput" = "" -a "$3" != ""; then
-+ tmpinput="$3"
-+fi
-+eval $1=\"$tmpinput\"
-+else
-+tmpinput="$3"
-+eval $1=\"$tmpinput\"
-+fi
-+]
-+dnl >>
-+dnl changequote([, ])
-+) dnl done AC_PROMPT_USER
-+
-+dnl @synopsis AC_PROMPT_USER(VARIABLENAME,QUESTION,[DEFAULT],QUOTED)
-+dnl
-+dnl Asks a QUESTION and puts the results in VARIABLENAME with an optional
-+dnl DEFAULT value if the user merely hits return. Also calls
-+dnl AC_DEFINE_UNQUOTED() on the VARIABLENAME for VARIABLENAMEs that should
-+dnl be entered into the config.h file as well. If QUOTED is "quoted" then
-+dnl the result will be defined within quotes.
-+dnl
-+dnl @version 1.15
-+dnl @author Wes Hardaker <hardaker@users.sourceforge.net>
-+dnl
-+AC_DEFUN([AC_PROMPT_USER],
-+[
-+MSG_CHECK=`echo "$2" | tail -1`
-+AC_CACHE_CHECK($MSG_CHECK, ac_cv_user_prompt_$1,
-+[echo "" >&AC_FD_MSG
-+AC_PROMPT_USER_NO_DEFINE($1,[$2],$3)
-+eval ac_cv_user_prompt_$1=\$$1
-+echo $ac_n "setting $MSG_CHECK to... $ac_c" >&AC_FD_MSG
-+])
-+if test "$ac_cv_user_prompt_$1" != "none"; then
-+ if test "x$4" = "xquoted" -o "x$4" = "xQUOTED"; then
-+ AC_DEFINE_UNQUOTED($1,"$ac_cv_user_prompt_$1")
-+ else
-+ AC_DEFINE_UNQUOTED($1,$ac_cv_user_prompt_$1)
-+ fi
-+fi
-+]) dnl
-+
-+dnl @synopsis AC_CHECK_STRUCT_FOR(INCLUDES,STRUCT,MEMBER,DEFINE,[no])
-+dnl
-+dnl Checks STRUCT for MEMBER and defines DEFINE if found.
-+dnl
-+dnl @version 1.15
-+dnl @author Wes Hardaker <hardaker@users.sourceforge.net>
-+dnl
-+AC_DEFUN(AC_CHECK_STRUCT_FOR,[
-+
-+ac_safe_struct=`echo "$2" | sed 'y%./+-%__p_%'`
-+ac_safe_member=`echo "$3" | sed 'y%./+-%__p_%'`
-+ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-+changequote(, )dnl
-+ ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-+changequote([, ])dnl
-+
-+AC_MSG_CHECKING([for $2.$3])
-+AC_CACHE_VAL($ac_safe_all,
-+[
-+if test "x$4" = "x"; then
-+ defineit="= 0"
-+elif test "x$4" = "xno"; then
-+ defineit=""
-+else
-+ defineit="$4"
-+fi
-+AC_TRY_COMPILE([
-+$1
-+],[
-+struct $2 testit;
-+testit.$3 $defineit;
-+], eval "${ac_safe_all}=yes", eval "${ac_safe_all}=no" )
-+])
-+
-+if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-+ AC_MSG_RESULT(yes)
-+ AC_DEFINE_UNQUOTED($ac_uc_define)
-+else
-+ AC_MSG_RESULT(no)
-+fi
-+
-+])
-+
-+dnl AC_CHECK_IFNET_FOR(SUBSTRUCT,[no])
-+AC_DEFUN(AC_CHECK_IFNET_FOR,[
-+dnl check for $1 in struct ifnet
-+AC_CHECK_STRUCT_FOR([
-+#ifdef IFNET_NEEDS_KERNEL
-+#define _KERNEL 1
-+#endif
-+#include <sys/types.h>
-+#include <sys/socket.h>
-+#ifdef HAVE_SYS_TIME_H
-+#include <sys/time.h>
-+#endif
-+#include <net/if.h>
-+#ifdef HAVE_NET_IF_VAR_H
-+#include <net/if_var.h>
-+#endif
-+#ifdef HAVE_SYS_QUEUE_H
-+#include <sys/queue.h>
-+#endif
-+#ifdef linux
-+struct ifnet {
-+ char *if_name; /* name, e.g. "en" or "lo" */
-+ short if_unit; /* sub-unit for lower level driver */
-+ short if_mtu; /* maximum transmission unit */
-+ short if_flags; /* up/down, broadcast, etc. */
-+ int if_metric; /* routing metric (external only) */
-+ char if_hwaddr [6]; /* ethernet address */
-+ int if_type; /* interface type: 1=generic,
-+ 28=slip, ether=6, loopback=24 */
-+ int if_speed; /* interface speed: in bits/sec */
-+
-+ struct sockaddr if_addr; /* interface's address */
-+ struct sockaddr ifu_broadaddr; /* broadcast address */
-+ struct sockaddr ia_subnetmask; /* interface's mask */
-+
-+ struct ifqueue {
-+ int ifq_len;
-+ int ifq_drops;
-+ } if_snd; /* output queue */
-+ int if_ibytes; /* octets received on interface */
-+ int if_ipackets; /* packets received on interface */
-+ int if_ierrors; /* input errors on interface */
-+ int if_iqdrops; /* input queue overruns */
-+ int if_obytes; /* octets sent on interface */
-+ int if_opackets; /* packets sent on interface */
-+ int if_oerrors; /* output errors on interface */
-+ int if_collisions; /* collisions on csma interfaces */
-+/* end statistics */
-+ struct ifnet *if_next;
-+};
-+#endif
-+], ifnet, $1, $2)
-+])
-+
-+dnl
-+dnl Add a search path to the LIBS and CFLAGS variables
-+dnl
-+AC_DEFUN(AC_ADD_SEARCH_PATH,[
-+ if test "x$1" != x -a -d $1; then
-+ if test -d $1/lib; then
-+ LDFLAGS="-L$1/lib $LDFLAGS"
-+ fi
-+ if test -d $1/include; then
-+ CPPFLAGS="-I$1/include $CPPFLAGS"
-+ fi
-+ fi
-+])
-+
-+dnl
-+dnl Store information for displaying later.
-+dnl
-+AC_DEFUN(AC_MSG_CACHE_INIT,[
-+ rm -f configure-summary
-+])
-+
-+AC_DEFUN(AC_MSG_CACHE_ADD,[
-+ cat >> configure-summary << EOF
-+ $1
-+EOF
-+])
-+
-+AC_DEFUN(AC_MSG_CACHE_DISPLAY,[
-+ echo ""
-+ echo "---------------------------------------------------------"
-+ echo " Net-SNMP configuration summary:"
-+ echo "---------------------------------------------------------"
-+ echo ""
-+ cat configure-summary
-+ echo ""
-+ echo "---------------------------------------------------------"
-+ echo ""
-+])
-+
-diff -ruN net-snmp-5.1.2-orig/agent/Makefile.in net-snmp-5.1.2-5/agent/Makefile.in
---- net-snmp-5.1.2-orig/agent/Makefile.in 2003-10-14 15:30:48.000000000 +0200
-+++ net-snmp-5.1.2-5/agent/Makefile.in 2005-03-13 16:17:21.000000000 +0100
-@@ -82,7 +82,7 @@
- # libnetsnmpagent objects
- LIBAGENTOBJS=snmp_agent.o snmp_vars.o agent_read_config.o \
- agent_registry.o agent_index.o agent_trap.o kernel.o \
-- agent_handler.o @OTHERAGENTLIBOBJS@
-+ agent_handler.o @OTHERAGENTLIBOBJS@ @WRAPLIBS@
- LLIBAGENTOBJS=snmp_agent.lo snmp_vars.lo agent_read_config.lo \
- agent_registry.lo agent_index.lo agent_trap.lo kernel.lo \
- agent_handler.lo @OTHERAGENTLIBLOBJS@
-@@ -120,11 +120,11 @@
-
-
- libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION): ${LLIBAGENTOBJS} libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION)
-- $(LIB_LD_CMD) libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION) ${LLIBAGENTOBJS} $(LIB_LD_LIBS)
-+ $(LIB_LD_CMD) libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION) ${LLIBAGENTOBJS} $(LIB_LD_LIBS) $(AGENT_RELINK_LIBS)
- $(RANLIB) libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION)
-
- libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION): ${LMIBOBJS}
-- $(LIB_LD_CMD) libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION) ${LMIBOBJS} $(LIB_LD_LIBS)
-+ $(LIB_LD_CMD) libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION) ${LMIBOBJS} $(LIB_LD_LIBS) $(MIBS_RELINK_LIBS) $(LIBSENSORS)
- $(RANLIB) libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION)
-
- embedperlinstall:
-diff -ruN net-snmp-5.1.2-orig/agent/helpers/Makefile.in net-snmp-5.1.2-5/agent/helpers/Makefile.in
---- net-snmp-5.1.2-orig/agent/helpers/Makefile.in 2004-03-01 06:26:12.000000000 +0100
-+++ net-snmp-5.1.2-5/agent/helpers/Makefile.in 2005-03-13 16:17:21.000000000 +0100
-@@ -68,5 +68,5 @@
- all: standardall
-
- libnetsnmphelpers.$(LIB_EXTENSION)$(LIB_VERSION): ${LOBJS}
-- $(LIB_LD_CMD) libnetsnmphelpers.$(LIB_EXTENSION)$(LIB_VERSION) ${LOBJS} $(LIB_LD_LIBS)
-+ $(LIB_LD_CMD) libnetsnmphelpers.$(LIB_EXTENSION)$(LIB_VERSION) ${LOBJS} $(LIB_LD_LIBS) $(HELPERS_RELINK_LIBS)
- $(RANLIB) libnetsnmphelpers.$(LIB_EXTENSION)$(LIB_VERSION)
-diff -ruN net-snmp-5.1.2-orig/agent/mibgroup/agentx/protocol.h net-snmp-5.1.2-5/agent/mibgroup/agentx/protocol.h
---- net-snmp-5.1.2-orig/agent/mibgroup/agentx/protocol.h 2002-04-20 09:30:01.000000000 +0200
-+++ net-snmp-5.1.2-5/agent/mibgroup/agentx/protocol.h 2005-03-13 16:17:21.000000000 +0100
-@@ -10,7 +10,7 @@
- */
-
- #define AGENTX_PORT 705
--#define AGENTX_SOCKET "/var/agentx/master"
-+#define AGENTX_SOCKET "/var/run/agentx"
-
- /*
- * AgentX versions
-diff -ruN net-snmp-5.1.2-orig/agent/mibgroup/mibII/interfaces.c net-snmp-5.1.2-5/agent/mibgroup/mibII/interfaces.c
---- net-snmp-5.1.2-orig/agent/mibgroup/mibII/interfaces.c 2004-07-23 02:55:41.000000000 +0200
-+++ net-snmp-5.1.2-5/agent/mibgroup/mibII/interfaces.c 2005-03-13 16:17:21.000000000 +0100
-@@ -1512,14 +1512,28 @@
- struct ifreq ifrq;
- struct ifnet **ifnetaddr_ptr;
- FILE *devin;
-- unsigned long rec_pkt, rec_oct, rec_err, rec_drop;
-- unsigned long snd_pkt, snd_oct, snd_err, snd_drop, coll;
- int i, fd;
- conf_if_list *if_ptr;
-+#ifdef SCNuMAX
-+ uintmax_t rec_pkt, rec_oct, rec_err, rec_drop, rec_mcast;
-+ uintmax_t snd_pkt, snd_oct, snd_err, snd_drop, coll;
-+ const char *scan_line_2_2 =
-+ "%" SCNuMAX " %" SCNuMAX " %" SCNuMAX " %" SCNuMAX
-+ " %*" SCNuMAX " %*" SCNuMAX " %*" SCNuMAX " %*" SCNuMAX
-+ " %" SCNuMAX " %" SCNuMAX " %" SCNuMAX " %" SCNuMAX
-+ " %*" SCNuMAX " %" SCNuMAX;
-+ const char *scan_line_2_0 =
-+ "%" SCNuMAX " %" SCNuMAX " %*" SCNuMAX " %*" SCNuMAX
-+ " %*" SCNuMAX " %" SCNuMAX " %" SCNuMAX " %*" SCNuMAX
-+ " %*" SCNuMAX " %" SCNuMAX;
-+#else
-+ unsigned long rec_pkt, rec_oct, rec_err, rec_drop;
-+ unsigned long snd_pkt, snd_oct, snd_err, snd_drop, coll;
- const char *scan_line_2_2 =
- "%lu %lu %lu %lu %*lu %*lu %*lu %*lu %lu %lu %lu %lu %*lu %lu";
- const char *scan_line_2_0 =
- "%lu %lu %*lu %*lu %*lu %lu %lu %*lu %*lu %lu";
-+#endif
- const char *scan_line_to_use;
- struct timeval et; /* elapsed time */
-
-@@ -1598,6 +1612,10 @@
- struct ifnet *nnew;
- char *stats, *ifstart = line;
-
-+ /* Ignore interfaces with no statistics. */
-+ if (strstr(line, "No statistics available."))
-+ continue;
-+
- if (line[strlen(line) - 1] == '\n')
- line[strlen(line) - 1] = '\0';
-
-@@ -1631,7 +1649,7 @@
- &coll) != 5)) {
- if ((scan_line_to_use == scan_line_2_2)
- && !strstr(line, "No statistics available"))
-- snmp_log(LOG_ERR,
-+ snmp_log(LOG_DEBUG,
- "/proc/net/dev data format error, line ==|%s|",
- line);
- continue;
-diff -ruN net-snmp-5.1.2-orig/agent/mibgroup/smux/smux.c net-snmp-5.1.2-5/agent/mibgroup/smux/smux.c
---- net-snmp-5.1.2-orig/agent/mibgroup/smux/smux.c 2004-02-04 12:25:20.000000000 +0100
-+++ net-snmp-5.1.2-5/agent/mibgroup/smux/smux.c 2005-03-13 16:17:21.000000000 +0100
-@@ -819,14 +819,14 @@
- passwd[string_len] = '\0';
- if (!smux_auth_peer(oid_name, oid_name_len, passwd, fd)) {
- snmp_log(LOG_WARNING,
-- "refused smux peer: oid %s, password %s, descr %s\n",
-- oid_print, passwd, descr);
-+ "refused smux peer: oid %s, descr %s\n",
-+ oid_print, descr);
- *fail = TRUE;
- return ptr;
- }
- snmp_log(LOG_INFO,
-- "accepted smux peer: oid %s, password %s, descr %s\n",
-- oid_print, passwd, descr);
-+ "accepted smux peer: oid %s, descr %s\n",
-+ oid_print, descr);
- *fail = FALSE;
- return ptr;
- }
-diff -ruN net-snmp-5.1.2-orig/apps/Makefile.in net-snmp-5.1.2-5/apps/Makefile.in
---- net-snmp-5.1.2-orig/apps/Makefile.in 2004-03-09 16:51:28.000000000 +0100
-+++ net-snmp-5.1.2-5/apps/Makefile.in 2005-03-13 16:17:21.000000000 +0100
-@@ -129,7 +129,7 @@
- $(LINK) -o $@ snmpdf.$(OSUFFIX) $(LOCAL_LIBS) ${LDFLAGS} ${LIBS}
-
- libnetsnmptrapd.$(LIB_EXTENSION)$(LIB_VERSION): $(LLIBTRAPD_OBJS)
-- $(LIB_LD_CMD) libnetsnmptrapd.$(LIB_EXTENSION)$(LIB_VERSION) ${LLIBTRAPD_OBJS} $(LIB_LD_LIBS)
-+ $(LIB_LD_CMD) libnetsnmptrapd.$(LIB_EXTENSION)$(LIB_VERSION) ${LLIBTRAPD_OBJS} $(LIB_LD_LIBS) $(TRAPD_RELINK_LIBS)
- $(RANLIB) libnetsnmptrapd.$(LIB_EXTENSION)$(LIB_VERSION)
-
- snmpinforminstall:
-diff -ruN net-snmp-5.1.2-orig/apps/snmpnetstat/if.c net-snmp-5.1.2-5/apps/snmpnetstat/if.c
---- net-snmp-5.1.2-orig/apps/snmpnetstat/if.c 2002-04-20 09:30:10.000000000 +0200
-+++ net-snmp-5.1.2-5/apps/snmpnetstat/if.c 2005-03-13 16:17:21.000000000 +0100
-@@ -300,8 +300,9 @@
- case IFINDEX:
- ifindex = *var->val.integer;
- for (cur_if = if_table;
-- cur_if->ifindex != ifindex && cur_if->ifindex != 0;
-- cur_if++);
-+ cur_if < (if_table + cfg_nnets) &&
-+ cur_if->ifindex != ifindex &&
-+ cur_if->ifindex != 0; cur_if++);
- if (cur_if >= (if_table + cfg_nnets)) {
- fprintf(stderr,
- "Inconsistent reponse from server. Aborting\n");
-@@ -492,8 +493,14 @@
- case IPIFINDEX:
- ifindex = *var->val.integer;
- for (cur_if = if_table;
-- cur_if->ifindex != ifindex && cur_if->ifindex != 0;
-- cur_if++);
-+ cur_if < (if_table + cfg_nnets) &&
-+ cur_if->ifindex != ifindex &&
-+ cur_if->ifindex != 0; cur_if++);
-+ if (cur_if >= (if_table + cfg_nnets)) {
-+ fprintf(stderr,
-+ "Inconsistent reponse from server. Aborting.\n");
-+ exit(0);
-+ }
- cur_if->ifindex = ifindex;
- break;
- case IPADDR:
-@@ -567,8 +574,14 @@
- case IFINDEX:
- ifindex = *var->val.integer;
- for (cur_if = if_table;
-- cur_if->ifindex != ifindex && cur_if->ifindex != 0;
-- cur_if++);
-+ cur_if < (if_table + cfg_nnets) &&
-+ cur_if->ifindex != ifindex &&
-+ cur_if->ifindex != 0; cur_if++);
-+ if (cur_if >= (if_table + cfg_nnets)) {
-+ fprintf(stderr,
-+ "Inconsistent reponse from server. Aborting.\n");
-+ exit(0);
-+ }
- cur_if->ifindex = ifindex;
- break;
- case INOCTETS:
-diff -ruN net-snmp-5.1.2-orig/configure.in net-snmp-5.1.2-5/configure.in
---- net-snmp-5.1.2-orig/configure.in 2004-06-23 00:06:40.000000000 +0200
-+++ net-snmp-5.1.2-5/configure.in 2005-03-13 16:17:21.000000000 +0100
-@@ -161,6 +161,9 @@
- AC_DEFINE(SNMP_NO_DEBUGGING)
- fi
-
-+AC_ARG_WITH(rpm,
-+[ --without-rpm Don't use RPM even if available.])
-+
- AC_ARG_WITH(dmalloc,
- [ --with-dmalloc=PATH Use dmalloc library (www.dmalloc.com)],
- if test "x$withval" = "xyes"; then
-@@ -1539,12 +1542,13 @@
- AC_CHECK_LIB(RSAglue, RSA_PKCS1_RSAref)
- fi
-
-- AC_CHECK_LIB(crypto, EVP_md5)
-+ AC_CHECK_LIB(crypto, EVP_md5, [CRYPTOLIBS=-lcrypto], , )
- AC_CHECK_FUNCS(AES_cfb128_encrypt)
- fi
- elif test "x$askedpkcs" = "xyes"; then
- AC_CHECK_LIB(pkcs11, C_Initialize)
- fi
-+AC_SUBST(CRYPTOLIBS)
-
- # Check for libraries that the agent needs
- # saving old libraries
-@@ -1664,8 +1668,9 @@
- # Replace `main' with a function in -lkvm:
- AC_CHECK_LIB(kvm, kvm_read)
- # DYNAMIC MODULE SUPPORT
--AC_CHECK_LIB(dl, dlopen)
--AC_CHECK_FUNCS(dlopen)
-+AC_CHECK_FUNC(dlopen, AC_DEFINE(HAVE_DLOPEN),
-+ AC_CHECK_LIB(dl, dlopen, AC_DEFINE(HAVE_DLOPEN)
-+ LIBS="${LIBS} -ldl"))
-
- AC_CHECK_FUNCS(kvm_openfiles nlist knlist kvm_getprocs)
- echo "$with_mib_modules" | grep "ucd-snmp/diskio" >/dev/null
-@@ -1979,7 +1984,7 @@
-
- AC_MSG_RESULT([$ac_cv_type_ssize_t])
- if test $ac_cv_type_ssize_t = yes; then
-- AC_DEFINE(HAVE_SSIZE_T)
-+ AC_DEFINE(HAVE_SSIZE_T, 1, [Define if type ssize_t is available])
- fi
-
- # Check ps args
-diff -ruN net-snmp-5.1.2-orig/debian/README.Debian net-snmp-5.1.2-5/debian/README.Debian
-diff -ruN net-snmp-5.1.2-orig/debian/changelog net-snmp-5.1.2-5/debian/changelog
-diff -ruN net-snmp-5.1.2-orig/debian/control net-snmp-5.1.2-5/debian/control
-diff -ruN net-snmp-5.1.2-orig/debian/copyright net-snmp-5.1.2-5/debian/copyright
-diff -ruN net-snmp-5.1.2-orig/debian/fixman net-snmp-5.1.2-5/debian/fixman
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp-base.dirs net-snmp-5.1.2-5/debian/libsnmp-base.dirs
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp-base.docs net-snmp-5.1.2-5/debian/libsnmp-base.docs
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp-base.files net-snmp-5.1.2-5/debian/libsnmp-base.files
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp-base.postrm net-snmp-5.1.2-5/debian/libsnmp-base.postrm
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp-base.prerm net-snmp-5.1.2-5/debian/libsnmp-base.prerm
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp-perl.docs net-snmp-5.1.2-5/debian/libsnmp-perl.docs
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp-perl.files net-snmp-5.1.2-5/debian/libsnmp-perl.files
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp5-dev.files net-snmp-5.1.2-5/debian/libsnmp5-dev.files
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp5-dev.manpages net-snmp-5.1.2-5/debian/libsnmp5-dev.manpages
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp5.dirs net-snmp-5.1.2-5/debian/libsnmp5.dirs
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp5.docs net-snmp-5.1.2-5/debian/libsnmp5.docs
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp5.files net-snmp-5.1.2-5/debian/libsnmp5.files
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp5.postinst net-snmp-5.1.2-5/debian/libsnmp5.postinst
-diff -ruN net-snmp-5.1.2-orig/debian/libsnmp5.prerm net-snmp-5.1.2-5/debian/libsnmp5.prerm
-diff -ruN net-snmp-5.1.2-orig/debian/manpages/encode_keychange.1 net-snmp-5.1.2-5/debian/manpages/encode_keychange.1
-diff -ruN net-snmp-5.1.2-orig/debian/manpages/net-snmp-config.1 net-snmp-5.1.2-5/debian/manpages/net-snmp-config.1
-diff -ruN net-snmp-5.1.2-orig/debian/manpages/snmpvacm.1 net-snmp-5.1.2-5/debian/manpages/snmpvacm.1
-diff -ruN net-snmp-5.1.2-orig/debian/manpages/tkmib.1 net-snmp-5.1.2-5/debian/manpages/tkmib.1
-diff -ruN net-snmp-5.1.2-orig/debian/rules net-snmp-5.1.2-5/debian/rules
-diff -ruN net-snmp-5.1.2-orig/debian/snmp.files net-snmp-5.1.2-5/debian/snmp.files
-diff -ruN net-snmp-5.1.2-orig/debian/snmp.manpages net-snmp-5.1.2-5/debian/snmp.manpages
-diff -ruN net-snmp-5.1.2-orig/debian/snmp.preinst net-snmp-5.1.2-5/debian/snmp.preinst
-diff -ruN net-snmp-5.1.2-orig/debian/snmpd.default net-snmp-5.1.2-5/debian/snmpd.default
-diff -ruN net-snmp-5.1.2-orig/debian/snmpd.files net-snmp-5.1.2-5/debian/snmpd.files
-diff -ruN net-snmp-5.1.2-orig/debian/snmpd.init net-snmp-5.1.2-5/debian/snmpd.init
-diff -ruN net-snmp-5.1.2-orig/debian/snmpd.postinst net-snmp-5.1.2-5/debian/snmpd.postinst
-diff -ruN net-snmp-5.1.2-orig/debian/snmpd.postrm net-snmp-5.1.2-5/debian/snmpd.postrm
-diff -ruN net-snmp-5.1.2-orig/debian/tkmib.docs net-snmp-5.1.2-5/debian/tkmib.docs
-diff -ruN net-snmp-5.1.2-orig/debian/tkmib.files net-snmp-5.1.2-5/debian/tkmib.files
-diff -ruN net-snmp-5.1.2-orig/debian/tkmib.manpages net-snmp-5.1.2-5/debian/tkmib.manpages
-diff -ruN net-snmp-5.1.2-orig/debian/watch net-snmp-5.1.2-5/debian/watch
-diff -ruN net-snmp-5.1.2-orig/ipkg/libsnmp/CONTROL/control net-snmp-5.1.2-5/ipkg/libsnmp/CONTROL/control
-diff -ruN net-snmp-5.1.2-orig/ipkg/libsnmp-dev/CONTROL/control net-snmp-5.1.2-5/ipkg/libsnmp-dev/CONTROL/control
-diff -ruN net-snmp-5.1.2-orig/ipkg/rules net-snmp-5.1.2-5/ipkg/rules
-diff -ruN net-snmp-5.1.2-orig/ipkg/snmp-utils/CONTROL/control net-snmp-5.1.2-5/ipkg/snmp-utils/CONTROL/control
-diff -ruN net-snmp-5.1.2-orig/ipkg/snmpd/CONTROL/conffiles net-snmp-5.1.2-5/ipkg/snmpd/CONTROL/conffiles
-diff -ruN net-snmp-5.1.2-orig/ipkg/snmpd/CONTROL/control net-snmp-5.1.2-5/ipkg/snmpd/CONTROL/control
-diff -ruN net-snmp-5.1.2-orig/ipkg/snmpd/etc/default/snmpd net-snmp-5.1.2-5/ipkg/snmpd/etc/default/snmpd
-diff -ruN net-snmp-5.1.2-orig/ipkg/snmpd/etc/init.d/snmpd net-snmp-5.1.2-5/ipkg/snmpd/etc/init.d/snmpd
-diff -ruN net-snmp-5.1.2-orig/ipkg/snmpd/etc/snmp/snmpd.conf net-snmp-5.1.2-5/ipkg/snmpd/etc/snmp/snmpd.conf
-diff -ruN net-snmp-5.1.2-orig/ipkg/snmpd-static/CONTROL/control net-snmp-5.1.2-5/ipkg/snmpd-static/CONTROL/control
-diff -ruN net-snmp-5.1.2-orig/ipkg/version net-snmp-5.1.2-5/ipkg/version
-diff -ruN net-snmp-5.1.2-orig/local/Makefile.in net-snmp-5.1.2-5/local/Makefile.in
---- net-snmp-5.1.2-orig/local/Makefile.in 2003-12-20 05:38:17.000000000 +0100
-+++ net-snmp-5.1.2-5/local/Makefile.in 2005-03-13 16:17:21.000000000 +0100
-@@ -58,7 +58,7 @@
-
- mib2c.made: $(srcdir)/mib2c
- if test "x$(PERLPROG)" != "x" ; then \
-- $(PERLPROG) -p -e 's%^#!.*/perl.*%#!$(PERLPROG)%;s#/usr/local/share/snmp#$(snmplibdir)#;' ${srcdir}/mib2c > mib2c.made; \
-+ $(PERLPROG) -p -e 's%^#!.*/perl.*%#!$(PERLPROG)%;s#/usr/local/share/snmp#$(snmplibdir)#;s#/usr/local/etc/snmp#$(SNMPCONFPATH)#;' ${srcdir}/mib2c > mib2c.made; \
- else \
- touch mib2c.made; \
- fi
-diff -ruN net-snmp-5.1.2-orig/local/mib2c net-snmp-5.1.2-5/local/mib2c
---- net-snmp-5.1.2-orig/local/mib2c 2004-06-15 16:26:37.000000000 +0200
-+++ net-snmp-5.1.2-5/local/mib2c 2005-03-13 16:17:21.000000000 +0100
-@@ -56,7 +56,8 @@
- if($ENV{MIB2C_DIR}) {
- push @def_search_dirs, $ENV{MIB2C_DIR};
- }
--push @def_search_dirs, "/usr/local/share/snmp/";
-+push @def_search_dirs, "/etc/snmp/";
-+push @def_search_dirs, "/usr/share/snmp/";
-
-
- sub usage {
-diff -ruN net-snmp-5.1.2-orig/man/mib2c.1.def net-snmp-5.1.2-5/man/mib2c.1.def
---- net-snmp-5.1.2-orig/man/mib2c.1.def 2003-10-02 20:04:19.000000000 +0200
-+++ net-snmp-5.1.2-5/man/mib2c.1.def 2005-03-13 16:17:21.000000000 +0100
-@@ -72,8 +72,9 @@
- .TP
- .BI -c " CONFIGFILE"
- Use CONFIGFILE when generating code. These files will be searched for
--first in the current directory and then in the DATADIR directory
--(which is where the default mib2c configuration files can be found).
-+first in the current directory and then in /etc/snmp
-+(which is where the default mib2c configuration files can be found)
-+and finally in the DATADIR directory.
- Running mib2c without the -c CONFIGFILE option will display
- a description of the valid values for CONFIGFILE, that is,
- the available config files, including new ones that you might
-diff -ruN net-snmp-5.1.2-orig/man/mib_api.3.def net-snmp-5.1.2-5/man/mib_api.3.def
---- net-snmp-5.1.2-orig/man/mib_api.3.def 2004-04-15 00:41:32.000000000 +0200
-+++ net-snmp-5.1.2-5/man/mib_api.3.def 2005-03-13 16:17:21.000000000 +0100
-@@ -5,7 +5,7 @@
- add_module_replacement,
- read_module, read_mib, read_all_mibs,
- read_objid, read_module_node,
--get_module_node, read_objid
-+get_module_node
- snmp_set_mib_warnings, snmp_set_save_descriptions,
- shutdown_mib,
- print_mib,
-@@ -34,9 +34,9 @@
- .PP
- .BI "void print_mib(FILE *" "fp" );
- .PP
--.BI "int read_objid(char *" "input" ", oid *" "output" ", int *" "out_len" );
-+.BI "int read_objid(char *" "input" ", oid *" "output" ", size_t *" "out_len" );
- .br
--.BI "int get_module_node(char *" "name" ", char *" "module" ", oid *" "objid" ", int *" "objidlen" );
-+.BI "int get_module_node(char *" "name" ", char *" "module" ", oid *" "objid" ", size_t *" "objidlen" );
- .PP
- .BI "void print_variable(const oid *" "objid" ", size_t " "objidlen" ", struct variable_list *" "variable" );
- .br
-diff -ruN net-snmp-5.1.2-orig/man/snmp_config.5.def net-snmp-5.1.2-5/man/snmp_config.5.def
---- net-snmp-5.1.2-orig/man/snmp_config.5.def 2003-12-10 11:41:41.000000000 +0100
-+++ net-snmp-5.1.2-5/man/snmp_config.5.def 2005-03-13 16:17:21.000000000 +0100
-@@ -11,7 +11,7 @@
- found and read from. By default, the applications look for
- configuration files in the following 4 directories, in order:
- SYSCONFDIR/snmp,
--DATADIR/snmp, LIBDIR/snmp, and $HOME/.snmp. In each of these
-+/etc/snmp, LIBDIR/snmp, and $HOME/.snmp. In each of these
- directories, it looks for files with the extension of both
- .IR conf " and " local.conf
- (reading the second ones last). In this manner, there are
-diff -ruN net-snmp-5.1.2-orig/man/snmp_trap_api.3.def net-snmp-5.1.2-5/man/snmp_trap_api.3.def
---- net-snmp-5.1.2-orig/man/snmp_trap_api.3.def 2003-09-29 04:58:18.000000000 +0200
-+++ net-snmp-5.1.2-5/man/snmp_trap_api.3.def 2005-03-13 16:17:21.000000000 +0100
-@@ -1,8 +1,7 @@
- .TH SNMP_TRAP_API 3 "7 Mar 2002" VVERSIONINFO "Net-SNMP"
- .UC 5
- .SH NAME
--send_easy_trap, send_trap_vars, send_v2trap - send TRAPs or INFORMs
--from a Net-SNMP MIB module
-+send_easy_trap, send_trap_vars, send_v2trap - send TRAPs or INFORMs from a Net-SNMP MIB module
- .SH SYNOPSIS
- .B #include <net-snmp/agent/agent_trap.h>
- .PP
-diff -ruN net-snmp-5.1.2-orig/mibs/BGP4-MIB.txt net-snmp-5.1.2-5/mibs/BGP4-MIB.txt
---- net-snmp-5.1.2-orig/mibs/BGP4-MIB.txt 1970-01-01 01:00:00.000000000 +0100
-+++ net-snmp-5.1.2-5/mibs/BGP4-MIB.txt 2005-03-13 16:17:21.000000000 +0100
-@@ -0,0 +1,929 @@
-+ BGP4-MIB DEFINITIONS ::= BEGIN
-+
-+ IMPORTS
-+ MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
-+ IpAddress, Integer32, Counter32, Gauge32, mib-2
-+ FROM SNMPv2-SMI
-+ MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
-+ FROM SNMPv2-CONF;
-+
-+ bgp MODULE-IDENTITY
-+ LAST-UPDATED "9902100000Z"
-+ ORGANIZATION "IETF IDR Working Group"
-+ CONTACT-INFO "E-mail: idr@merit.net
-+
-+ Susan Hares (Editor)
-+ Merit Network
-+ 4251 Plymouth Road
-+ Suite C
-+ Ann Arbor, MI 48105-2785
-+ Tel: +1 734 936 2095
-+ Fax: +1 734 647 3185
-+ E-mail: skh@merit.edu
-+
-+ Jeff Johnson (Editor)
-+ RedBack Networks, Inc.
-+ 1389 Moffett Park Drive
-+ Sunnyvale, CA 94089-1134
-+ Tel: +1 408 548 3516
-+ Fax: +1 408 548 3599
-+ E-mail: jeff@redback.com"
-+ DESCRIPTION
-+ "The MIB module for BGP-4."
-+ REVISION "9902100000Z"
-+ DESCRIPTION
-+ "Corrected duplicate OBJECT IDENTIFIER
-+ assignment in the conformance information."
-+ REVISION "9601080000Z"
-+ DESCRIPTION
-+ "1) Fixed the definitions of the traps to
-+ make them equivalent to their initial
-+ definition in RFC 1269.
-+ 2) Added compliance and conformance info."
-+ ::= { mib-2 15 }
-+
-+ bgpVersion OBJECT-TYPE
-+ SYNTAX OCTET STRING (SIZE (1..255))
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "Vector of supported BGP protocol version
-+ numbers. Each peer negotiates the version
-+ from this vector. Versions are identified
-+ via the string of bits contained within this
-+ object. The first octet contains bits 0 to
-+ 7, the second octet contains bits 8 to 15,
-+ and so on, with the most significant bit
-+ referring to the lowest bit number in the
-+ octet (e.g., the MSB of the first octet
-+ refers to bit 0). If a bit, i, is present
-+ and set, then the version (i+1) of the BGP
-+ is supported."
-+ ::= { bgp 1 }
-+
-+ bgpLocalAs OBJECT-TYPE
-+ SYNTAX INTEGER (0..65535)
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The local autonomous system number."
-+ ::= { bgp 2 }
-+
-+
-+
-+ -- BGP Peer table. This table contains, one entry per BGP
-+ -- peer, information about the BGP peer.
-+
-+ bgpPeerTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF BgpPeerEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "BGP peer table. This table contains,
-+ one entry per BGP peer, information about the
-+ connections with BGP peers."
-+ ::= { bgp 3 }
-+
-+ bgpPeerEntry OBJECT-TYPE
-+ SYNTAX BgpPeerEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "Entry containing information about the
-+ connection with a BGP peer."
-+ INDEX { bgpPeerRemoteAddr }
-+ ::= { bgpPeerTable 1 }
-+
-+ BgpPeerEntry ::= SEQUENCE {
-+ bgpPeerIdentifier
-+ IpAddress,
-+ bgpPeerState
-+ INTEGER,
-+ bgpPeerAdminStatus
-+ INTEGER,
-+ bgpPeerNegotiatedVersion
-+ Integer32,
-+ bgpPeerLocalAddr
-+ IpAddress,
-+ bgpPeerLocalPort
-+ INTEGER,
-+ bgpPeerRemoteAddr
-+ IpAddress,
-+ bgpPeerRemotePort
-+ INTEGER,
-+ bgpPeerRemoteAs
-+ INTEGER,
-+ bgpPeerInUpdates
-+ Counter32,
-+ bgpPeerOutUpdates
-+ Counter32,
-+ bgpPeerInTotalMessages
-+ Counter32,
-+ bgpPeerOutTotalMessages
-+ Counter32,
-+ bgpPeerLastError
-+ OCTET STRING,
-+ bgpPeerFsmEstablishedTransitions
-+ Counter32,
-+ bgpPeerFsmEstablishedTime
-+ Gauge32,
-+ bgpPeerConnectRetryInterval
-+ INTEGER,
-+ bgpPeerHoldTime
-+ INTEGER,
-+ bgpPeerKeepAlive
-+ INTEGER,
-+ bgpPeerHoldTimeConfigured
-+ INTEGER,
-+ bgpPeerKeepAliveConfigured
-+ INTEGER,
-+ bgpPeerMinASOriginationInterval
-+ INTEGER,
-+ bgpPeerMinRouteAdvertisementInterval
-+ INTEGER,
-+ bgpPeerInUpdateElapsedTime
-+ Gauge32
-+ }
-+
-+ bgpPeerIdentifier OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The BGP Identifier of this entry's BGP peer."
-+ ::= { bgpPeerEntry 1 }
-+
-+ bgpPeerState OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ idle(1),
-+ connect(2),
-+ active(3),
-+ opensent(4),
-+ openconfirm(5),
-+ established(6)
-+ }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The BGP peer connection state."
-+ ::= { bgpPeerEntry 2 }
-+
-+ bgpPeerAdminStatus OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ stop(1),
-+ start(2)
-+ }
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "The desired state of the BGP connection. A
-+ transition from 'stop' to 'start' will cause
-+ the BGP Start Event to be generated. A
-+ transition from 'start' to 'stop' will cause
-+ the BGP Stop Event to be generated. This
-+ parameter can be used to restart BGP peer
-+ connections. Care should be used in providing
-+ write access to this object without adequate
-+ authentication."
-+ ::= { bgpPeerEntry 3 }
-+
-+ bgpPeerNegotiatedVersion OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The negotiated version of BGP running between
-+ the two peers."
-+ ::= { bgpPeerEntry 4 }
-+
-+ bgpPeerLocalAddr OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The local IP address of this entry's BGP
-+ connection."
-+ ::= { bgpPeerEntry 5 }
-+
-+ bgpPeerLocalPort OBJECT-TYPE
-+ SYNTAX INTEGER (0..65535)
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The local port for the TCP connection between
-+ the BGP peers."
-+ ::= { bgpPeerEntry 6 }
-+
-+ bgpPeerRemoteAddr OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The remote IP address of this entry's BGP
-+ peer."
-+ ::= { bgpPeerEntry 7 }
-+
-+ bgpPeerRemotePort OBJECT-TYPE
-+ SYNTAX INTEGER (0..65535)
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The remote port for the TCP connection between
-+ the BGP peers. Note that the objects
-+ bgpPeerLocalAddr, bgpPeerLocalPort,
-+ bgpPeerRemoteAddr and bgpPeerRemotePort
-+ provide the appropriate reference to the
-+ standard MIB TCP connection table."
-+ ::= { bgpPeerEntry 8 }
-+
-+ bgpPeerRemoteAs OBJECT-TYPE
-+ SYNTAX INTEGER (0..65535)
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The remote autonomous system number."
-+ ::= { bgpPeerEntry 9 }
-+
-+ bgpPeerInUpdates OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of BGP UPDATE messages received on
-+ this connection. This object should be
-+ initialized to zero (0) when the connection is
-+ established."
-+ ::= { bgpPeerEntry 10 }
-+
-+ bgpPeerOutUpdates OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of BGP UPDATE messages transmitted
-+ on this connection. This object should be
-+ initialized to zero (0) when the connection is
-+ established."
-+ ::= { bgpPeerEntry 11 }
-+
-+ bgpPeerInTotalMessages OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The total number of messages received from the
-+ remote peer on this connection. This object
-+ should be initialized to zero when the
-+ connection is established."
-+ ::= { bgpPeerEntry 12 }
-+
-+ bgpPeerOutTotalMessages OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The total number of messages transmitted to
-+ the remote peer on this connection. This object
-+ should be initialized to zero when the
-+ connection is established."
-+ ::= { bgpPeerEntry 13 }
-+
-+ bgpPeerLastError OBJECT-TYPE
-+ SYNTAX OCTET STRING (SIZE (2))
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The last error code and subcode seen by this
-+ peer on this connection. If no error has
-+ occurred, this field is zero. Otherwise, the
-+ first byte of this two byte OCTET STRING
-+ contains the error code, and the second byte
-+ contains the subcode."
-+ ::= { bgpPeerEntry 14 }
-+
-+ bgpPeerFsmEstablishedTransitions OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The total number of times the BGP FSM
-+ transitioned into the established state."
-+ ::= { bgpPeerEntry 15 }
-+
-+ bgpPeerFsmEstablishedTime OBJECT-TYPE
-+ SYNTAX Gauge32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "This timer indicates how long (in seconds) this
-+ peer has been in the Established state or how long
-+ since this peer was last in the Established state.
-+ It is set to zero when a new peer is configured or
-+ the router is booted."
-+ ::= { bgpPeerEntry 16 }
-+
-+ bgpPeerConnectRetryInterval OBJECT-TYPE
-+ SYNTAX INTEGER (1..65535)
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "Time interval in seconds for the ConnectRetry
-+ timer. The suggested value for this timer is
-+ 120 seconds."
-+ ::= { bgpPeerEntry 17 }
-+
-+ bgpPeerHoldTime OBJECT-TYPE
-+ SYNTAX INTEGER ( 0 | 3..65535 )
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "Time interval in seconds for the Hold Timer
-+ established with the peer. The value of this
-+ object is calculated by this BGP speaker by
-+ using the smaller of the value in
-+ bgpPeerHoldTimeConfigured and the Hold Time
-+ received in the OPEN message. This value
-+ must be at lease three seconds if it is not
-+ zero (0) in which case the Hold Timer has
-+ not been established with the peer, or, the
-+ value of bgpPeerHoldTimeConfigured is zero (0)."
-+ ::= { bgpPeerEntry 18 }
-+
-+ bgpPeerKeepAlive OBJECT-TYPE
-+ SYNTAX INTEGER ( 0 | 1..21845 )
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "Time interval in seconds for the KeepAlive
-+ timer established with the peer. The value of
-+ this object is calculated by this BGP speaker
-+ such that, when compared with bgpPeerHoldTime,
-+ it has the same proportion as what
-+ bgpPeerKeepAliveConfigured has when compared
-+ with bgpPeerHoldTimeConfigured. If the value
-+ of this object is zero (0), it indicates that
-+ the KeepAlive timer has not been established
-+ with the peer, or, the value of
-+ bgpPeerKeepAliveConfigured is zero (0)."
-+ ::= { bgpPeerEntry 19 }
-+
-+ bgpPeerHoldTimeConfigured OBJECT-TYPE
-+ SYNTAX INTEGER ( 0 | 3..65535 )
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "Time interval in seconds for the Hold Time
-+ configured for this BGP speaker with this peer.
-+ This value is placed in an OPEN message sent to
-+ this peer by this BGP speaker, and is compared
-+ with the Hold Time field in an OPEN message
-+ received from the peer when determining the Hold
-+ Time (bgpPeerHoldTime) with the peer. This value
-+ must not be less than three seconds if it is not
-+ zero (0) in which case the Hold Time is NOT to be
-+ established with the peer. The suggested value for
-+ this timer is 90 seconds."
-+ ::= { bgpPeerEntry 20 }
-+
-+ bgpPeerKeepAliveConfigured OBJECT-TYPE
-+ SYNTAX INTEGER ( 0 | 1..21845 )
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "Time interval in seconds for the KeepAlive timer
-+ configured for this BGP speaker with this peer.
-+ The value of this object will only determine the
-+ KEEPALIVE messages' frequency relative to the value
-+ specified in bgpPeerHoldTimeConfigured; the actual
-+ time interval for the KEEPALIVE messages is
-+ indicated by bgpPeerKeepAlive. A reasonable
-+ maximum value for this timer would be configured to
-+ be one third of that of bgpPeerHoldTimeConfigured.
-+ If the value of this object is zero (0), no
-+ periodical KEEPALIVE messages are sent to the peer
-+ after the BGP connection has been established. The
-+ suggested value for this timer is 30 seconds."
-+ ::= { bgpPeerEntry 21 }
-+
-+ bgpPeerMinASOriginationInterval OBJECT-TYPE
-+ SYNTAX INTEGER (1..65535)
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "Time interval in seconds for the
-+ MinASOriginationInterval timer.
-+ The suggested value for this timer is 15 seconds."
-+ ::= { bgpPeerEntry 22 }
-+
-+ bgpPeerMinRouteAdvertisementInterval OBJECT-TYPE
-+ SYNTAX INTEGER (1..65535)
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "Time interval in seconds for the
-+ MinRouteAdvertisementInterval timer.
-+ The suggested value for this timer is 30 seconds."
-+ ::= { bgpPeerEntry 23 }
-+
-+ bgpPeerInUpdateElapsedTime OBJECT-TYPE
-+ SYNTAX Gauge32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "Elapsed time in seconds since the last BGP
-+ UPDATE message was received from the peer.
-+ Each time bgpPeerInUpdates is incremented,
-+ the value of this object is set to zero (0)."
-+ ::= { bgpPeerEntry 24 }
-+
-+
-+
-+ bgpIdentifier OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The BGP Identifier of local system."
-+ ::= { bgp 4 }
-+
-+
-+
-+ -- Received Path Attribute Table. This table contains,
-+ -- one entry per path to a network, path attributes
-+ -- received from all peers running BGP version 3 or less.
-+ -- This table is obsolete, having been replaced in
-+ -- functionality with the bgp4PathAttrTable.
-+
-+ bgpRcvdPathAttrTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF BgpPathAttrEntry
-+ MAX-ACCESS not-accessible
-+ STATUS obsolete
-+ DESCRIPTION
-+ "The BGP Received Path Attribute Table contains
-+ information about paths to destination networks
-+ received from all peers running BGP version 3 or
-+ less."
-+ ::= { bgp 5 }
-+
-+ bgpPathAttrEntry OBJECT-TYPE
-+ SYNTAX BgpPathAttrEntry
-+ MAX-ACCESS not-accessible
-+ STATUS obsolete
-+ DESCRIPTION
-+ "Information about a path to a network."
-+ INDEX { bgpPathAttrDestNetwork,
-+ bgpPathAttrPeer }
-+ ::= { bgpRcvdPathAttrTable 1 }
-+
-+ BgpPathAttrEntry ::= SEQUENCE {
-+ bgpPathAttrPeer
-+ IpAddress,
-+ bgpPathAttrDestNetwork
-+ IpAddress,
-+ bgpPathAttrOrigin
-+ INTEGER,
-+ bgpPathAttrASPath
-+ OCTET STRING,
-+ bgpPathAttrNextHop
-+ IpAddress,
-+ bgpPathAttrInterASMetric
-+ Integer32
-+ }
-+
-+ bgpPathAttrPeer OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS obsolete
-+ DESCRIPTION
-+ "The IP address of the peer where the path
-+ information was learned."
-+ ::= { bgpPathAttrEntry 1 }
-+
-+ bgpPathAttrDestNetwork OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS obsolete
-+ DESCRIPTION
-+ "The address of the destination network."
-+ ::= { bgpPathAttrEntry 2 }
-+
-+ bgpPathAttrOrigin OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ igp(1),-- networks are interior
-+ egp(2),-- networks learned via EGP
-+ incomplete(3) -- undetermined
-+ }
-+ MAX-ACCESS read-only
-+ STATUS obsolete
-+ DESCRIPTION
-+ "The ultimate origin of the path information."
-+ ::= { bgpPathAttrEntry 3 }
-+
-+ bgpPathAttrASPath OBJECT-TYPE
-+ SYNTAX OCTET STRING (SIZE (2..255))
-+ MAX-ACCESS read-only
-+ STATUS obsolete
-+ DESCRIPTION
-+ "The set of ASs that must be traversed to reach
-+ the network. This object is probably best
-+ represented as SEQUENCE OF INTEGER. For SMI
-+ compatibility, though, it is represented as
-+ OCTET STRING. Each AS is represented as a pair
-+ of octets according to the following algorithm:
-+
-+ first-byte-of-pair = ASNumber / 256;
-+ second-byte-of-pair = ASNumber & 255;"
-+ ::= { bgpPathAttrEntry 4 }
-+
-+ bgpPathAttrNextHop OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS obsolete
-+ DESCRIPTION
-+ "The address of the border router that should
-+ be used for the destination network."
-+ ::= { bgpPathAttrEntry 5 }
-+
-+ bgpPathAttrInterASMetric OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-only
-+ STATUS obsolete
-+ DESCRIPTION
-+ "The optional inter-AS metric. If this
-+ attribute has not been provided for this route,
-+ the value for this object is 0."
-+ ::= { bgpPathAttrEntry 6 }
-+
-+
-+
-+ -- BGP-4 Received Path Attribute Table. This table contains,
-+ -- one entry per path to a network, path attributes
-+ -- received from all peers running BGP-4.
-+
-+ bgp4PathAttrTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF Bgp4PathAttrEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "The BGP-4 Received Path Attribute Table contains
-+ information about paths to destination networks
-+ received from all BGP4 peers."
-+ ::= { bgp 6 }
-+
-+ bgp4PathAttrEntry OBJECT-TYPE
-+ SYNTAX Bgp4PathAttrEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "Information about a path to a network."
-+ INDEX { bgp4PathAttrIpAddrPrefix,
-+ bgp4PathAttrIpAddrPrefixLen,
-+ bgp4PathAttrPeer }
-+ ::= { bgp4PathAttrTable 1 }
-+
-+ Bgp4PathAttrEntry ::= SEQUENCE {
-+ bgp4PathAttrPeer
-+ IpAddress,
-+ bgp4PathAttrIpAddrPrefixLen
-+ INTEGER,
-+ bgp4PathAttrIpAddrPrefix
-+ IpAddress,
-+ bgp4PathAttrOrigin
-+ INTEGER,
-+ bgp4PathAttrASPathSegment
-+ OCTET STRING,
-+ bgp4PathAttrNextHop
-+ IpAddress,
-+ bgp4PathAttrMultiExitDisc
-+ INTEGER,
-+ bgp4PathAttrLocalPref
-+ INTEGER,
-+ bgp4PathAttrAtomicAggregate
-+ INTEGER,
-+ bgp4PathAttrAggregatorAS
-+ INTEGER,
-+ bgp4PathAttrAggregatorAddr
-+ IpAddress,
-+ bgp4PathAttrCalcLocalPref
-+ INTEGER,
-+ bgp4PathAttrBest
-+ INTEGER,
-+ bgp4PathAttrUnknown
-+ OCTET STRING
-+ }
-+
-+ bgp4PathAttrPeer OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP address of the peer where the path
-+ information was learned."
-+ ::= { bgp4PathAttrEntry 1 }
-+ bgp4PathAttrIpAddrPrefixLen OBJECT-TYPE
-+ SYNTAX INTEGER (0..32)
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "Length in bits of the IP address prefix in the
-+ Network Layer Reachability Information field."
-+ ::= { bgp4PathAttrEntry 2 }
-+
-+ bgp4PathAttrIpAddrPrefix OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "An IP address prefix in the Network Layer
-+ Reachability Information field. This object
-+ is an IP address containing the prefix with
-+ length specified by bgp4PathAttrIpAddrPrefixLen.
-+ Any bits beyond the length specified by
-+ bgp4PathAttrIpAddrPrefixLen are zeroed."
-+ ::= { bgp4PathAttrEntry 3 }
-+
-+ bgp4PathAttrOrigin OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ igp(1),-- networks are interior
-+ egp(2),-- networks learned via EGP
-+ incomplete(3) -- undetermined
-+ }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The ultimate origin of the path information."
-+ ::= { bgp4PathAttrEntry 4 }
-+
-+ bgp4PathAttrASPathSegment OBJECT-TYPE
-+ SYNTAX OCTET STRING (SIZE (2..255))
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The sequence of AS path segments. Each AS
-+ path segment is represented by a triple
-+ <type, length, value>.
-+
-+ The type is a 1-octet field which has two
-+ possible values:
-+ 1 AS_SET: unordered set of ASs a
-+ route in the UPDATE message
-+ has traversed
-+ 2 AS_SEQUENCE: ordered set of ASs
-+ a route in the UPDATE message
-+ has traversed.
-+
-+ The length is a 1-octet field containing the
-+ number of ASs in the value field.
-+
-+ The value field contains one or more AS
-+ numbers, each AS is represented in the octet
-+ string as a pair of octets according to the
-+ following algorithm:
-+
-+ first-byte-of-pair = ASNumber / 256;
-+ second-byte-of-pair = ASNumber & 255;"
-+ ::= { bgp4PathAttrEntry 5 }
-+
-+ bgp4PathAttrNextHop OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The address of the border router that should
-+ be used for the destination network."
-+ ::= { bgp4PathAttrEntry 6 }
-+
-+ bgp4PathAttrMultiExitDisc OBJECT-TYPE
-+ SYNTAX INTEGER (-1..2147483647)
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "This metric is used to discriminate between
-+ multiple exit points to an adjacent autonomous
-+ system. A value of -1 indicates the absence of
-+ this attribute."
-+ ::= { bgp4PathAttrEntry 7 }
-+
-+ bgp4PathAttrLocalPref OBJECT-TYPE
-+ SYNTAX INTEGER (-1..2147483647)
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The originating BGP4 speaker's degree of
-+ preference for an advertised route. A value of
-+ -1 indicates the absence of this attribute."
-+ ::= { bgp4PathAttrEntry 8 }
-+
-+ bgp4PathAttrAtomicAggregate OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ lessSpecificRrouteNotSelected(1),
-+ lessSpecificRouteSelected(2)
-+ }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "Whether or not a system has selected
-+ a less specific route without selecting a
-+ more specific route."
-+ ::= { bgp4PathAttrEntry 9 }
-+
-+ bgp4PathAttrAggregatorAS OBJECT-TYPE
-+ SYNTAX INTEGER (0..65535)
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The AS number of the last BGP4 speaker that
-+ performed route aggregation. A value of zero (0)
-+ indicates the absence of this attribute."
-+ ::= { bgp4PathAttrEntry 10 }
-+
-+ bgp4PathAttrAggregatorAddr OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP address of the last BGP4 speaker that
-+ performed route aggregation. A value of
-+ 0.0.0.0 indicates the absence of this attribute."
-+ ::= { bgp4PathAttrEntry 11 }
-+
-+ bgp4PathAttrCalcLocalPref OBJECT-TYPE
-+ SYNTAX INTEGER (-1..2147483647)
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The degree of preference calculated by the
-+ receiving BGP4 speaker for an advertised route.
-+ A value of -1 indicates the absence of this
-+ attribute."
-+ ::= { bgp4PathAttrEntry 12 }
-+
-+ bgp4PathAttrBest OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ false(1),-- not chosen as best route
-+ true(2) -- chosen as best route
-+ }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "An indication of whether or not this route
-+ was chosen as the best BGP4 route."
-+ ::= { bgp4PathAttrEntry 13 }
-+
-+ bgp4PathAttrUnknown OBJECT-TYPE
-+ SYNTAX OCTET STRING (SIZE(0..255))
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "One or more path attributes not understood
-+ by this BGP4 speaker. Size zero (0) indicates
-+ the absence of such attribute(s). Octets
-+ beyond the maximum size, if any, are not
-+ recorded by this object."
-+ ::= { bgp4PathAttrEntry 14 }
-+
-+
-+ -- Traps.
-+
-+ -- note that in RFC 1657, bgpTraps was incorrectly
-+ -- assigned a value of { bgp 7 }, and each of the
-+ -- traps had the bgpPeerRemoteAddr object inappropriately
-+ -- removed from their OBJECTS clause. The following
-+ -- definitions restore the semantics of the traps as
-+ -- they were initially defined in RFC 1269.
-+
-+ -- { bgp 7 } is unused
-+
-+ bgpTraps OBJECT IDENTIFIER ::= { bgp 0 }
-+
-+ bgpEstablished NOTIFICATION-TYPE
-+ OBJECTS { bgpPeerRemoteAddr,
-+ bgpPeerLastError,
-+ bgpPeerState }
-+ STATUS current
-+ DESCRIPTION
-+ "The BGP Established event is generated when
-+ the BGP FSM enters the ESTABLISHED state."
-+ ::= { bgpTraps 1 }
-+
-+ bgpBackwardTransition NOTIFICATION-TYPE
-+ OBJECTS { bgpPeerRemoteAddr,
-+ bgpPeerLastError,
-+ bgpPeerState }
-+ STATUS current
-+ DESCRIPTION
-+ "The BGPBackwardTransition Event is generated
-+ when the BGP FSM moves from a higher numbered
-+ state to a lower numbered state."
-+ ::= { bgpTraps 2 }
-+
-+ -- conformance information
-+
-+ bgpMIBConformance OBJECT IDENTIFIER ::= { bgp 8 }
-+ bgpMIBCompliances OBJECT IDENTIFIER ::= { bgpMIBConformance 1 }
-+ bgpMIBGroups OBJECT IDENTIFIER ::= { bgpMIBConformance 2 }
-+
-+ -- compliance statements
-+
-+ bgpMIBCompliance MODULE-COMPLIANCE
-+ STATUS current
-+ DESCRIPTION
-+ "The compliance statement for entities which
-+ implement the BGP4 mib."
-+ MODULE -- this module
-+ MANDATORY-GROUPS { bgp4MIBGlobalsGroup,
-+ bgp4MIBPeerGroup,
-+ bgp4MIBPathAttrGroup,
-+ bgp4MIBNotificationGroup }
-+ ::= { bgpMIBCompliances 1 }
-+
-+ -- units of conformance
-+
-+ bgp4MIBGlobalsGroup OBJECT-GROUP
-+ OBJECTS { bgpVersion,
-+ bgpLocalAs,
-+ bgpIdentifier }
-+ STATUS current
-+ DESCRIPTION
-+ "A collection of objects providing information
-+ on global BGP state."
-+ ::= { bgpMIBGroups 1 }
-+
-+ bgp4MIBPeerGroup OBJECT-GROUP
-+ OBJECTS { bgpPeerIdentifier,
-+ bgpPeerState,
-+ bgpPeerAdminStatus,
-+ bgpPeerNegotiatedVersion,
-+ bgpPeerLocalAddr,
-+ bgpPeerLocalPort,
-+ bgpPeerRemoteAddr,
-+ bgpPeerRemotePort,
-+ bgpPeerRemoteAs,
-+ bgpPeerInUpdates,
-+ bgpPeerOutUpdates,
-+ bgpPeerInTotalMessages,
-+ bgpPeerOutTotalMessages,
-+ bgpPeerLastError,
-+ bgpPeerFsmEstablishedTransitions,
-+ bgpPeerFsmEstablishedTime,
-+ bgpPeerConnectRetryInterval,
-+ bgpPeerHoldTime,
-+ bgpPeerKeepAlive,
-+ bgpPeerHoldTimeConfigured,
-+ bgpPeerKeepAliveConfigured,
-+ bgpPeerMinASOriginationInterval,
-+ bgpPeerMinRouteAdvertisementInterval,
-+ bgpPeerInUpdateElapsedTime }
-+ STATUS current
-+ DESCRIPTION
-+ "A collection of objects for managing
-+ BGP peers."
-+ ::= { bgpMIBGroups 2 }
-+
-+ bgp4MIBRcvdPathAttrGroup OBJECT-GROUP
-+ OBJECTS { bgpPathAttrPeer,
-+ bgpPathAttrDestNetwork,
-+ bgpPathAttrOrigin,
-+ bgpPathAttrASPath,
-+ bgpPathAttrNextHop,
-+ bgpPathAttrInterASMetric }
-+ STATUS obsolete
-+ DESCRIPTION
-+ "A collection of objects for managing BGP
-+ path entries.
-+
-+ This conformance group is obsolete,
-+ replaced by bgp4MIBPathAttrGroup."
-+ ::= { bgpMIBGroups 3 }
-+
-+ bgp4MIBPathAttrGroup OBJECT-GROUP
-+ OBJECTS { bgp4PathAttrPeer,
-+ bgp4PathAttrIpAddrPrefixLen,
-+ bgp4PathAttrIpAddrPrefix,
-+ bgp4PathAttrOrigin,
-+ bgp4PathAttrASPathSegment,
-+ bgp4PathAttrNextHop,
-+ bgp4PathAttrMultiExitDisc,
-+ bgp4PathAttrLocalPref,
-+ bgp4PathAttrAtomicAggregate,
-+ bgp4PathAttrAggregatorAS,
-+ bgp4PathAttrAggregatorAddr,
-+ bgp4PathAttrCalcLocalPref,
-+ bgp4PathAttrBest,
-+ bgp4PathAttrUnknown }
-+ STATUS current
-+ DESCRIPTION
-+ "A collection of objects for managing
-+ BGP path entries."
-+ ::= { bgpMIBGroups 4 }
-+
-+ bgp4MIBNotificationGroup NOTIFICATION-GROUP
-+ NOTIFICATIONS { bgpEstablished,
-+ bgpBackwardTransition }
-+ STATUS current
-+ DESCRIPTION
-+ "A collection of notifications for signaling
-+ changes in BGP peer relationships."
-+ ::= { bgpMIBGroups 5 }
-+
-+ END
-diff -ruN net-snmp-5.1.2-orig/mibs/BRIDGE-MIB.txt net-snmp-5.1.2-5/mibs/BRIDGE-MIB.txt
---- net-snmp-5.1.2-orig/mibs/BRIDGE-MIB.txt 1970-01-01 01:00:00.000000000 +0100
-+++ net-snmp-5.1.2-5/mibs/BRIDGE-MIB.txt 2005-03-13 16:17:21.000000000 +0100
-@@ -0,0 +1,1075 @@
-+BRIDGE-MIB DEFINITIONS ::= BEGIN
-+
-+IMPORTS
-+ Counter, TimeTicks
-+ FROM RFC1155-SMI
-+ mib-2
-+ FROM RFC1213-MIB
-+ OBJECT-TYPE
-+ FROM RFC-1212
-+ TRAP-TYPE
-+ FROM RFC-1215;
-+
-+-- All representations of MAC addresses in this MIB Module
-+-- use, as a textual convention (i.e. this convention does
-+-- not affect their encoding), the data type:
-+MacAddress ::= OCTET STRING (SIZE (6)) -- a 6 octet address
-+ -- in the
-+ -- "canonical"
-+ -- order
-+-- defined by IEEE 802.1a, i.e., as if it were transmitted
-+-- least significant bit first, even though 802.5 (in
-+-- contrast to other n802.x protocols) requires MAC
-+-- addresses to be transmitted most significant bit first.
-+--
-+-- 16-bit addresses, if needed, are represented by setting
-+-- their upper 4 octets to all 0's, i.e., AAFF would be
-+-- represented as 00000000AAFF.
-+
-+-- Similarly, all representations of Bridge-Id in this MIB
-+-- Module use, as a textual convention (i.e. this
-+-- convention does not affect their encoding), the data
-+-- type:
-+BridgeId ::= OCTET STRING (SIZE (8)) -- the
-+ -- Bridge-Identifier
-+ -- as used in the
-+ -- Spanning Tree
-+-- Protocol to uniquely identify a bridge. Its first two
-+-- octets (in network byte order) contain a priority
-+-- value and its last 6 octets contain the MAC address
-+-- used to refer to a bridge in a unique fashion
-+-- (typically, the numerically smallest MAC address
-+-- of all ports on the bridge).
-+
-+-- Several objects in this MIB module represent values of
-+-- timers used by the Spanning Tree Protocol. In this
-+-- MIB, these timers have values in units of hundreths of
-+-- a second (i.e. 1/100 secs).
-+-- These timers, when stored in a Spanning Tree Protocol's
-+-- BPDU, are in units of 1/256 seconds. Note, however,
-+-- that 802.1D-1990 specifies a settable granularity of
-+-- no more than 1 second for these timers. To avoid
-+-- ambiguity, a data type is defined here as a textual
-+-- convention and all representation of these timers
-+-- in this MIB module are defined using this data type. An
-+-- algorithm is also defined for converting between the
-+-- different units, to ensure a timer's value is not
-+-- distorted by multiple conversions.
-+-- The data type is:
-+
-+Timeout ::= INTEGER -- a STP timer in units of 1/100 seconds
-+
-+-- To convert a Timeout value into a value in units of
-+-- 1/256 seconds, the following algorithm should be used:
-+--
-+-- b = floor( (n * 256) / 100)
-+--
-+-- where:
-+-- floor = quotient [ignore remainder]
-+-- n is the value in 1/100 second units
-+-- b is the value in 1/256 second units
-+--
-+-- To convert the value from 1/256 second units back to
-+-- 1/100 seconds, the following algorithm should be used:
-+--
-+-- n = ceiling( (b * 100) / 256)
-+--
-+-- where:
-+-- ceiling = quotient [if remainder is 0], or
-+-- quotient + 1 [if remainder is non-zero]
-+-- n is the value in 1/100 second units
-+-- b is the value in 1/256 second units
-+--
-+-- Note: it is important that the arithmetic operations are
-+-- done in the order specified (i.e., multiply first, divide
-+-- second).
-+
-+ dot1dBridge OBJECT IDENTIFIER ::= { mib-2 17 }
-+
-+-- groups in the Bridge MIB
-+
-+dot1dBase OBJECT IDENTIFIER ::= { dot1dBridge 1 }
-+
-+dot1dStp OBJECT IDENTIFIER ::= { dot1dBridge 2 }
-+
-+dot1dSr OBJECT IDENTIFIER ::= { dot1dBridge 3 }
-+-- separately documented
-+
-+dot1dTp OBJECT IDENTIFIER ::= { dot1dBridge 4 }
-+
-+dot1dStatic OBJECT IDENTIFIER ::= { dot1dBridge 5 }
-+
-+-- the dot1dBase group
-+
-+-- Implementation of the dot1dBase group is mandatory for all
-+-- bridges.
-+
-+dot1dBaseBridgeAddress OBJECT-TYPE
-+ SYNTAX MacAddress
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The MAC address used by this bridge when it must
-+ be referred to in a unique fashion. It is
-+ recommended that this be the numerically smallest
-+ MAC address of all ports that belong to this
-+ bridge. However it is only required to be unique.
-+ When concatenated with dot1dStpPriority a unique
-+ BridgeIdentifier is formed which is used in the
-+ Spanning Tree Protocol."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Sections 6.4.1.1.3 and 3.12.5"
-+ ::= { dot1dBase 1 }
-+
-+dot1dBaseNumPorts OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of ports controlled by this bridging
-+ entity."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.4.1.1.3"
-+ ::= { dot1dBase 2 }
-+
-+dot1dBaseType OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ unknown(1),
-+ transparent-only(2),
-+ sourceroute-only(3),
-+ srt(4)
-+ }
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "Indicates what type of bridging this bridge can
-+ perform. If a bridge is actually performing a
-+ certain type of bridging this will be indicated by
-+ entries in the port table for the given type."
-+ ::= { dot1dBase 3 }
-+
-+-- The Generic Bridge Port Table
-+
-+dot1dBasePortTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF Dot1dBasePortEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A table that contains generic information about
-+ every port that is associated with this bridge.
-+ Transparent, source-route, and srt ports are
-+ included."
-+ ::= { dot1dBase 4 }
-+
-+dot1dBasePortEntry OBJECT-TYPE
-+ SYNTAX Dot1dBasePortEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A list of information for each port of the
-+ bridge."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.4.2, 6.6.1"
-+ INDEX { dot1dBasePort }
-+ ::= { dot1dBasePortTable 1 }
-+
-+Dot1dBasePortEntry ::=
-+ SEQUENCE {
-+ dot1dBasePort
-+ INTEGER,
-+ dot1dBasePortIfIndex
-+ INTEGER,
-+ dot1dBasePortCircuit
-+
-+ OBJECT IDENTIFIER,
-+ dot1dBasePortDelayExceededDiscards
-+ Counter,
-+ dot1dBasePortMtuExceededDiscards
-+ Counter
-+ }
-+
-+dot1dBasePort OBJECT-TYPE
-+ SYNTAX INTEGER (1..65535)
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The port number of the port for which this entry
-+ contains bridge management information."
-+ ::= { dot1dBasePortEntry 1 }
-+
-+dot1dBasePortIfIndex OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The value of the instance of the ifIndex object,
-+ defined in MIB-II, for the interface corresponding
-+ to this port."
-+ ::= { dot1dBasePortEntry 2 }
-+
-+dot1dBasePortCircuit OBJECT-TYPE
-+ SYNTAX OBJECT IDENTIFIER
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "For a port which (potentially) has the same value
-+ of dot1dBasePortIfIndex as another port on the
-+ same bridge, this object contains the name of an
-+ object instance unique to this port. For example,
-+ in the case where multiple ports correspond one-
-+ to-one with multiple X.25 virtual circuits, this
-+ value might identify an (e.g., the first) object
-+ instance associated with the X.25 virtual circuit
-+ corresponding to this port.
-+
-+ For a port which has a unique value of
-+ dot1dBasePortIfIndex, this object can have the
-+ value { 0 0 }."
-+ ::= { dot1dBasePortEntry 3 }
-+
-+dot1dBasePortDelayExceededDiscards OBJECT-TYPE
-+ SYNTAX Counter
-+
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of frames discarded by this port due
-+ to excessive transit delay through the bridge. It
-+ is incremented by both transparent and source
-+ route bridges."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.6.1.1.3"
-+ ::= { dot1dBasePortEntry 4 }
-+
-+dot1dBasePortMtuExceededDiscards OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of frames discarded by this port due
-+ to an excessive size. It is incremented by both
-+ transparent and source route bridges."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.6.1.1.3"
-+ ::= { dot1dBasePortEntry 5 }
-+
-+-- the dot1dStp group
-+
-+-- Implementation of the dot1dStp group is optional. It is
-+-- implemented by those bridges that support the Spanning Tree
-+-- Protocol.
-+
-+dot1dStpProtocolSpecification OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ unknown(1),
-+ decLb100(2),
-+ ieee8021d(3)
-+ }
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "An indication of what version of the Spanning
-+ Tree Protocol is being run. The value
-+ 'decLb100(2)' indicates the DEC LANbridge 100
-+ Spanning Tree protocol. IEEE 802.1d
-+ implementations will return 'ieee8021d(3)'. If
-+ future versions of the IEEE Spanning Tree Protocol
-+ are released that are incompatible with the
-+ current version a new value will be defined."
-+
-+ ::= { dot1dStp 1 }
-+
-+dot1dStpPriority OBJECT-TYPE
-+ SYNTAX INTEGER (0..65535)
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The value of the write-able portion of the Bridge
-+ ID, i.e., the first two octets of the (8 octet
-+ long) Bridge ID. The other (last) 6 octets of the
-+ Bridge ID are given by the value of
-+ dot1dBaseBridgeAddress."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.3.7"
-+ ::= { dot1dStp 2 }
-+
-+dot1dStpTimeSinceTopologyChange OBJECT-TYPE
-+ SYNTAX TimeTicks
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The time (in hundredths of a second) since the
-+ last time a topology change was detected by the
-+ bridge entity."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.8.1.1.3"
-+ ::= { dot1dStp 3 }
-+
-+dot1dStpTopChanges OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The total number of topology changes detected by
-+ this bridge since the management entity was last
-+ reset or initialized."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.8.1.1.3"
-+ ::= { dot1dStp 4 }
-+
-+dot1dStpDesignatedRoot OBJECT-TYPE
-+ SYNTAX BridgeId
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The bridge identifier of the root of the spanning
-+ tree as determined by the Spanning Tree Protocol
-+ as executed by this node. This value is used as
-+
-+ the Root Identifier parameter in all Configuration
-+ Bridge PDUs originated by this node."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.3.1"
-+ ::= { dot1dStp 5 }
-+
-+dot1dStpRootCost OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The cost of the path to the root as seen from
-+ this bridge."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.3.2"
-+ ::= { dot1dStp 6 }
-+
-+dot1dStpRootPort OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The port number of the port which offers the
-+ lowest cost path from this bridge to the root
-+ bridge."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.3.3"
-+ ::= { dot1dStp 7 }
-+
-+dot1dStpMaxAge OBJECT-TYPE
-+ SYNTAX Timeout
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The maximum age of Spanning Tree Protocol
-+ information learned from the network on any port
-+ before it is discarded, in units of hundredths of
-+ a second. This is the actual value that this
-+ bridge is currently using."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.3.4"
-+ ::= { dot1dStp 8 }
-+
-+dot1dStpHelloTime OBJECT-TYPE
-+ SYNTAX Timeout
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+
-+ "The amount of time between the transmission of
-+ Configuration bridge PDUs by this node on any port
-+ when it is the root of the spanning tree or trying
-+ to become so, in units of hundredths of a second.
-+ This is the actual value that this bridge is
-+ currently using."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.3.5"
-+ ::= { dot1dStp 9 }
-+
-+dot1dStpHoldTime OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "This time value determines the interval length
-+ during which no more than two Configuration bridge
-+ PDUs shall be transmitted by this node, in units
-+ of hundredths of a second."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.3.14"
-+ ::= { dot1dStp 10 }
-+
-+dot1dStpForwardDelay OBJECT-TYPE
-+ SYNTAX Timeout
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "This time value, measured in units of hundredths
-+ of a second, controls how fast a port changes its
-+ spanning state when moving towards the Forwarding
-+ state. The value determines how long the port
-+ stays in each of the Listening and Learning
-+ states, which precede the Forwarding state. This
-+ value is also used, when a topology change has
-+ been detected and is underway, to age all dynamic
-+ entries in the Forwarding Database. [Note that
-+ this value is the one that this bridge is
-+ currently using, in contrast to
-+ dot1dStpBridgeForwardDelay which is the value that
-+ this bridge and all others would start using
-+ if/when this bridge were to become the root.]"
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.3.6"
-+ ::= { dot1dStp 11 }
-+
-+dot1dStpBridgeMaxAge OBJECT-TYPE
-+ SYNTAX Timeout (600..4000)
-+
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The value that all bridges use for MaxAge when
-+ this bridge is acting as the root. Note that
-+ 802.1D-1990 specifies that the range for this
-+ parameter is related to the value of
-+ dot1dStpBridgeHelloTime. The granularity of this
-+ timer is specified by 802.1D-1990 to be 1 second.
-+ An agent may return a badValue error if a set is
-+ attempted to a value which is not a whole number
-+ of seconds."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.3.8"
-+ ::= { dot1dStp 12 }
-+
-+dot1dStpBridgeHelloTime OBJECT-TYPE
-+ SYNTAX Timeout (100..1000)
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The value that all bridges use for HelloTime when
-+ this bridge is acting as the root. The
-+ granularity of this timer is specified by 802.1D-
-+ 1990 to be 1 second. An agent may return a
-+ badValue error if a set is attempted to a value
-+ which is not a whole number of seconds."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.3.9"
-+ ::= { dot1dStp 13 }
-+
-+dot1dStpBridgeForwardDelay OBJECT-TYPE
-+ SYNTAX Timeout (400..3000)
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The value that all bridges use for ForwardDelay
-+ when this bridge is acting as the root. Note that
-+ 802.1D-1990 specifies that the range for this
-+ parameter is related to the value of
-+ dot1dStpBridgeMaxAge. The granularity of this
-+ timer is specified by 802.1D-1990 to be 1 second.
-+ An agent may return a badValue error if a set is
-+ attempted to a value which is not a whole number
-+ of seconds."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.3.10"
-+ ::= { dot1dStp 14 }
-+
-+-- The Spanning Tree Port Table
-+
-+dot1dStpPortTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF Dot1dStpPortEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A table that contains port-specific information
-+ for the Spanning Tree Protocol."
-+ ::= { dot1dStp 15 }
-+
-+dot1dStpPortEntry OBJECT-TYPE
-+ SYNTAX Dot1dStpPortEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A list of information maintained by every port
-+ about the Spanning Tree Protocol state for that
-+ port."
-+ INDEX { dot1dStpPort }
-+ ::= { dot1dStpPortTable 1 }
-+
-+Dot1dStpPortEntry ::=
-+ SEQUENCE {
-+ dot1dStpPort
-+ INTEGER,
-+ dot1dStpPortPriority
-+ INTEGER,
-+ dot1dStpPortState
-+ INTEGER,
-+ dot1dStpPortEnable
-+ INTEGER,
-+ dot1dStpPortPathCost
-+ INTEGER,
-+ dot1dStpPortDesignatedRoot
-+ BridgeId,
-+ dot1dStpPortDesignatedCost
-+ INTEGER,
-+ dot1dStpPortDesignatedBridge
-+ BridgeId,
-+ dot1dStpPortDesignatedPort
-+ OCTET STRING,
-+ dot1dStpPortForwardTransitions
-+ Counter
-+ }
-+
-+dot1dStpPort OBJECT-TYPE
-+ SYNTAX INTEGER (1..65535)
-+
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The port number of the port for which this entry
-+ contains Spanning Tree Protocol management
-+ information."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.8.2.1.2"
-+ ::= { dot1dStpPortEntry 1 }
-+
-+dot1dStpPortPriority OBJECT-TYPE
-+ SYNTAX INTEGER (0..255)
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The value of the priority field which is
-+ contained in the first (in network byte order)
-+ octet of the (2 octet long) Port ID. The other
-+ octet of the Port ID is given by the value of
-+ dot1dStpPort."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.5.1"
-+ ::= { dot1dStpPortEntry 2 }
-+
-+dot1dStpPortState OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ disabled(1),
-+ blocking(2),
-+ listening(3),
-+ learning(4),
-+ forwarding(5),
-+ broken(6)
-+ }
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The port's current state as defined by
-+ application of the Spanning Tree Protocol. This
-+ state controls what action a port takes on
-+ reception of a frame. If the bridge has detected
-+ a port that is malfunctioning it will place that
-+ port into the broken(6) state. For ports which
-+ are disabled (see dot1dStpPortEnable), this object
-+ will have a value of disabled(1)."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.5.2"
-+ ::= { dot1dStpPortEntry 3 }
-+
-+dot1dStpPortEnable OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ enabled(1),
-+ disabled(2)
-+ }
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The enabled/disabled status of the port."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.5.2"
-+ ::= { dot1dStpPortEntry 4 }
-+
-+dot1dStpPortPathCost OBJECT-TYPE
-+ SYNTAX INTEGER (1..65535)
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The contribution of this port to the path cost of
-+ paths towards the spanning tree root which include
-+ this port. 802.1D-1990 recommends that the
-+ default value of this parameter be in inverse
-+ proportion to the speed of the attached LAN."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.5.3"
-+ ::= { dot1dStpPortEntry 5 }
-+
-+dot1dStpPortDesignatedRoot OBJECT-TYPE
-+ SYNTAX BridgeId
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The unique Bridge Identifier of the Bridge
-+ recorded as the Root in the Configuration BPDUs
-+ transmitted by the Designated Bridge for the
-+ segment to which the port is attached."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.5.4"
-+ ::= { dot1dStpPortEntry 6 }
-+
-+dot1dStpPortDesignatedCost OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The path cost of the Designated Port of the
-+ segment connected to this port. This value is
-+ compared to the Root Path Cost field in received
-+
-+ bridge PDUs."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.5.5"
-+ ::= { dot1dStpPortEntry 7 }
-+
-+dot1dStpPortDesignatedBridge OBJECT-TYPE
-+ SYNTAX BridgeId
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The Bridge Identifier of the bridge which this
-+ port considers to be the Designated Bridge for
-+ this port's segment."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.5.6"
-+ ::= { dot1dStpPortEntry 8 }
-+
-+dot1dStpPortDesignatedPort OBJECT-TYPE
-+ SYNTAX OCTET STRING (SIZE (2))
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The Port Identifier of the port on the Designated
-+ Bridge for this port's segment."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 4.5.5.7"
-+ ::= { dot1dStpPortEntry 9 }
-+
-+dot1dStpPortForwardTransitions OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of times this port has transitioned
-+ from the Learning state to the Forwarding state."
-+ ::= { dot1dStpPortEntry 10 }
-+
-+-- the dot1dTp group
-+
-+-- Implementation of the dot1dTp group is optional. It is
-+-- implemented by those bridges that support the transparent
-+-- bridging mode. A transparent or SRT bridge will implement
-+-- this group.
-+
-+dot1dTpLearnedEntryDiscards OBJECT-TYPE
-+ SYNTAX Counter
-+
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The total number of Forwarding Database entries,
-+ which have been or would have been learnt, but
-+ have been discarded due to a lack of space to
-+ store them in the Forwarding Database. If this
-+ counter is increasing, it indicates that the
-+ Forwarding Database is regularly becoming full (a
-+ condition which has unpleasant performance effects
-+ on the subnetwork). If this counter has a
-+ significant value but is not presently increasing,
-+ it indicates that the problem has been occurring
-+ but is not persistent."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.7.1.1.3"
-+ ::= { dot1dTp 1 }
-+
-+dot1dTpAgingTime OBJECT-TYPE
-+ SYNTAX INTEGER (10..1000000)
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The timeout period in seconds for aging out
-+ dynamically learned forwarding information.
-+ 802.1D-1990 recommends a default of 300 seconds."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.7.1.1.3"
-+ ::= { dot1dTp 2 }
-+
-+-- The Forwarding Database for Transparent Bridges
-+
-+dot1dTpFdbTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF Dot1dTpFdbEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A table that contains information about unicast
-+ entries for which the bridge has forwarding and/or
-+ filtering information. This information is used
-+ by the transparent bridging function in
-+ determining how to propagate a received frame."
-+ ::= { dot1dTp 3 }
-+
-+dot1dTpFdbEntry OBJECT-TYPE
-+ SYNTAX Dot1dTpFdbEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "Information about a specific unicast MAC address
-+ for which the bridge has some forwarding and/or
-+ filtering information."
-+ INDEX { dot1dTpFdbAddress }
-+ ::= { dot1dTpFdbTable 1 }
-+
-+Dot1dTpFdbEntry ::=
-+ SEQUENCE {
-+ dot1dTpFdbAddress
-+ MacAddress,
-+ dot1dTpFdbPort
-+ INTEGER,
-+ dot1dTpFdbStatus
-+ INTEGER
-+ }
-+
-+dot1dTpFdbAddress OBJECT-TYPE
-+ SYNTAX MacAddress
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A unicast MAC address for which the bridge has
-+ forwarding and/or filtering information."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 3.9.1, 3.9.2"
-+ ::= { dot1dTpFdbEntry 1 }
-+
-+dot1dTpFdbPort OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "Either the value '0', or the port number of the
-+ port on which a frame having a source address
-+ equal to the value of the corresponding instance
-+ of dot1dTpFdbAddress has been seen. A value of
-+ '0' indicates that the port number has not been
-+ learned but that the bridge does have some
-+ forwarding/filtering information about this
-+ address (e.g. in the dot1dStaticTable).
-+ Implementors are encouraged to assign the port
-+ value to this object whenever it is learned even
-+ for addresses for which the corresponding value of
-+ dot1dTpFdbStatus is not learned(3)."
-+ ::= { dot1dTpFdbEntry 2 }
-+
-+dot1dTpFdbStatus OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ other(1),
-+ invalid(2),
-+ learned(3),
-+ self(4),
-+ mgmt(5)
-+ }
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The status of this entry. The meanings of the
-+ values are:
-+ other(1) : none of the following. This would
-+ include the case where some other
-+ MIB object (not the corresponding
-+ instance of dot1dTpFdbPort, nor an
-+ entry in the dot1dStaticTable) is
-+ being used to determine if and how
-+ frames addressed to the value of
-+ the corresponding instance of
-+ dot1dTpFdbAddress are being
-+ forwarded.
-+ invalid(2) : this entry is not longer valid
-+ (e.g., it was learned but has since
-+ aged-out), but has not yet been
-+ flushed from the table.
-+ learned(3) : the value of the corresponding
-+ instance of dot1dTpFdbPort was
-+ learned, and is being used.
-+ self(4) : the value of the corresponding
-+ instance of dot1dTpFdbAddress
-+ represents one of the bridge's
-+ addresses. The corresponding
-+ instance of dot1dTpFdbPort
-+ indicates which of the bridge's
-+ ports has this address.
-+ mgmt(5) : the value of the corresponding
-+ instance of dot1dTpFdbAddress is
-+ also the value of an existing
-+ instance of dot1dStaticAddress."
-+ ::= { dot1dTpFdbEntry 3 }
-+
-+-- Port Table for Transparent Bridges
-+
-+dot1dTpPortTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF Dot1dTpPortEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A table that contains information about every
-+ port that is associated with this transparent
-+ bridge."
-+ ::= { dot1dTp 4 }
-+
-+dot1dTpPortEntry OBJECT-TYPE
-+ SYNTAX Dot1dTpPortEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A list of information for each port of a
-+ transparent bridge."
-+ INDEX { dot1dTpPort }
-+ ::= { dot1dTpPortTable 1 }
-+
-+Dot1dTpPortEntry ::=
-+ SEQUENCE {
-+ dot1dTpPort
-+ INTEGER,
-+ dot1dTpPortMaxInfo
-+ INTEGER,
-+ dot1dTpPortInFrames
-+ Counter,
-+ dot1dTpPortOutFrames
-+ Counter,
-+ dot1dTpPortInDiscards
-+ Counter
-+ }
-+
-+dot1dTpPort OBJECT-TYPE
-+ SYNTAX INTEGER (1..65535)
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The port number of the port for which this entry
-+ contains Transparent bridging management
-+ information."
-+ ::= { dot1dTpPortEntry 1 }
-+
-+-- It would be nice if we could use ifMtu as the size of the
-+-- largest INFO field, but we can't because ifMtu is defined
-+-- to be the size that the (inter-)network layer can use which
-+-- can differ from the MAC layer (especially if several layers
-+-- of encapsulation are used).
-+
-+dot1dTpPortMaxInfo OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The maximum size of the INFO (non-MAC) field that
-+ this port will receive or transmit."
-+ ::= { dot1dTpPortEntry 2 }
-+
-+dot1dTpPortInFrames OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of frames that have been received by
-+ this port from its segment. Note that a frame
-+ received on the interface corresponding to this
-+ port is only counted by this object if and only if
-+ it is for a protocol being processed by the local
-+ bridging function, including bridge management
-+ frames."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.6.1.1.3"
-+ ::= { dot1dTpPortEntry 3 }
-+
-+dot1dTpPortOutFrames OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of frames that have been transmitted
-+ by this port to its segment. Note that a frame
-+ transmitted on the interface corresponding to this
-+ port is only counted by this object if and only if
-+ it is for a protocol being processed by the local
-+ bridging function, including bridge management
-+ frames."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.6.1.1.3"
-+ ::= { dot1dTpPortEntry 4 }
-+
-+dot1dTpPortInDiscards OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "Count of valid frames received which were
-+ discarded (i.e., filtered) by the Forwarding
-+ Process."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.6.1.1.3"
-+ ::= { dot1dTpPortEntry 5 }
-+-- The Static (Destination-Address Filtering) Database
-+
-+-- Implementation of this group is optional.
-+
-+dot1dStaticTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF Dot1dStaticEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A table containing filtering information
-+ configured into the bridge by (local or network)
-+ management specifying the set of ports to which
-+ frames received from specific ports and containing
-+ specific destination addresses are allowed to be
-+ forwarded. The value of zero in this table as the
-+ port number from which frames with a specific
-+ destination address are received, is used to
-+ specify all ports for which there is no specific
-+ entry in this table for that particular
-+ destination address. Entries are valid for
-+ unicast and for group/broadcast addresses."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.7.2"
-+ ::= { dot1dStatic 1 }
-+
-+dot1dStaticEntry OBJECT-TYPE
-+ SYNTAX Dot1dStaticEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "Filtering information configured into the bridge
-+ by (local or network) management specifying the
-+ set of ports to which frames received from a
-+ specific port and containing a specific
-+ destination address are allowed to be forwarded."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 6.7.2"
-+ INDEX { dot1dStaticAddress, dot1dStaticReceivePort }
-+ ::= { dot1dStaticTable 1 }
-+
-+Dot1dStaticEntry ::=
-+ SEQUENCE {
-+ dot1dStaticAddress
-+ MacAddress,
-+ dot1dStaticReceivePort
-+ INTEGER,
-+ dot1dStaticAllowedToGoTo
-+ OCTET STRING,
-+ dot1dStaticStatus
-+ INTEGER
-+ }
-+
-+dot1dStaticAddress OBJECT-TYPE
-+ SYNTAX MacAddress
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The destination MAC address in a frame to which
-+ this entry's filtering information applies. This
-+ object can take the value of a unicast address, a
-+ group address or the broadcast address."
-+ REFERENCE
-+ "IEEE 802.1D-1990: Section 3.9.1, 3.9.2"
-+ ::= { dot1dStaticEntry 1 }
-+
-+dot1dStaticReceivePort OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "Either the value '0', or the port number of the
-+ port from which a frame must be received in order
-+ for this entry's filtering information to apply.
-+ A value of zero indicates that this entry applies
-+ on all ports of the bridge for which there is no
-+ other applicable entry."
-+ ::= { dot1dStaticEntry 2 }
-+
-+dot1dStaticAllowedToGoTo OBJECT-TYPE
-+ SYNTAX OCTET STRING
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The set of ports to which frames received from a
-+ specific port and destined for a specific MAC
-+
-+ address, are allowed to be forwarded. Each octet
-+ within the value of this object specifies a set of
-+ eight ports, with the first octet specifying ports
-+ 1 through 8, the second octet specifying ports 9
-+ through 16, etc. Within each octet, the most
-+ significant bit represents the lowest numbered
-+ port, and the least significant bit represents the
-+ highest numbered port. Thus, each port of the
-+ bridge is represented by a single bit within the
-+ value of this object. If that bit has a value of
-+ '1' then that port is included in the set of
-+ ports; the port is not included if its bit has a
-+ value of '0'. (Note that the setting of the bit
-+ corresponding to the port from which a frame is
-+ received is irrelevant.) The default value of
-+ this object is a string of ones of appropriate
-+ length."
-+ ::= { dot1dStaticEntry 3 }
-+
-+dot1dStaticStatus OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ other(1),
-+ invalid(2),
-+ permanent(3),
-+ deleteOnReset(4),
-+ deleteOnTimeout(5)
-+ }
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "This object indicates the status of this entry.
-+ The default value is permanent(3).
-+ other(1) - this entry is currently in use but
-+ the conditions under which it will
-+ remain so are different from each of the
-+ following values.
-+ invalid(2) - writing this value to the object
-+ removes the corresponding entry.
-+ permanent(3) - this entry is currently in use
-+ and will remain so after the next reset
-+ of the bridge.
-+ deleteOnReset(4) - this entry is currently in
-+ use and will remain so until the next
-+ reset of the bridge.
-+ deleteOnTimeout(5) - this entry is currently
-+ in use and will remain so until it is
-+ aged out."
-+
-+ ::= { dot1dStaticEntry 4 }
-+
-+-- Traps for use by Bridges
-+
-+-- Traps for the Spanning Tree Protocol
-+
-+newRoot TRAP-TYPE
-+ ENTERPRISE dot1dBridge
-+ DESCRIPTION
-+ "The newRoot trap indicates that the sending agent
-+ has become the new root of the Spanning Tree; the
-+ trap is sent by a bridge soon after its election
-+ as the new root, e.g., upon expiration of the
-+ Topology Change Timer immediately subsequent to
-+ its election. Implementation of this trap is
-+ optional."
-+ ::= 1
-+
-+topologyChange TRAP-TYPE
-+ ENTERPRISE dot1dBridge
-+ DESCRIPTION
-+ "A topologyChange trap is sent by a bridge when
-+ any of its configured ports transitions from the
-+ Learning state to the Forwarding state, or from
-+ the Forwarding state to the Blocking state. The
-+ trap is not sent if a newRoot trap is sent for the
-+ same transition. Implementation of this trap is
-+ optional."
-+ ::= 2
-+
-+END
-diff -ruN net-snmp-5.1.2-orig/mibs/GNOME-SMI.txt net-snmp-5.1.2-5/mibs/GNOME-SMI.txt
---- net-snmp-5.1.2-orig/mibs/GNOME-SMI.txt 1970-01-01 01:00:00.000000000 +0100
-+++ net-snmp-5.1.2-5/mibs/GNOME-SMI.txt 2005-03-13 16:17:21.000000000 +0100
-@@ -0,0 +1,72 @@
-+GNOME-SMI DEFINITIONS ::= BEGIN
-+
-+IMPORTS
-+ MODULE-IDENTITY,
-+ OBJECT-IDENTITY,
-+ enterprises
-+ FROM SNMPv2-SMI;
-+
-+gnome MODULE-IDENTITY
-+ LAST-UPDATED "200312070000Z"
-+ ORGANIZATION "GNOME project"
-+ CONTACT-INFO
-+ "GNU Network Object Model Environment project
-+
-+ see http://www.gnome.org for contact persons of a particular
-+ area or subproject of GNOME.
-+
-+ Administrative contact for MIB module:
-+
-+ Jochen Friedrich
-+ Buedingerstr. 30b
-+ 63546 Hammersbach
-+ Germany
-+
-+ email: jochen@scram.de"
-+ DESCRIPTION
-+ "The Structure of GNOME."
-+
-+ -- revision history
-+
-+ REVISION "9809010000Z" -- September 01, 1998
-+ DESCRIPTION
-+ "Initial version."
-+
-+ REVISION "200312070000Z" -- December 07, 2003
-+ DESCRIPTION
-+ "Added gnomeSysadmin subtree for GNOME project system administration.
-+ Updated contact info."
-+
-+ ::= { enterprises 3317 } -- assigned by IANA
-+
-+gnomeProducts OBJECT-IDENTITY
-+ STATUS current
-+ DESCRIPTION
-+ "gnomeProducts is the root OBJECT IDENTIFIER from
-+ which sysObjectID values are assigned."
-+ ::= { gnome 1 }
-+
-+gnomeMgmt OBJECT-IDENTITY
-+ STATUS current
-+ DESCRIPTION
-+ "gnomeMgmt defines the subtree for production GNOME related
-+ MIB registrations."
-+ ::= { gnome 2 }
-+
-+gnomeTest OBJECT-IDENTITY
-+ STATUS current
-+ DESCRIPTION
-+ "gnomeTest defines the subtree for testing GNOME related
-+ MIB registrations."
-+ ::= { gnome 3 }
-+
-+gnomeSysadmin OBJECT-IDENTITY
-+ STATUS current
-+ DESCRIPTION
-+ "gnomeSysadmin defines the subtree for GNOME related Sysadmin
-+ MIB registrations."
-+ ::= { gnome 4 }
-+
-+-- more to come if necessary.
-+
-+END
-diff -ruN net-snmp-5.1.2-orig/mibs/Makefile.in net-snmp-5.1.2-5/mibs/Makefile.in
---- net-snmp-5.1.2-orig/mibs/Makefile.in 2004-06-18 20:11:15.000000000 +0200
-+++ net-snmp-5.1.2-5/mibs/Makefile.in 2005-03-13 16:17:21.000000000 +0100
-@@ -43,11 +43,15 @@
- UCDMIBS = UCD-SNMP-MIB.txt UCD-DEMO-MIB.txt UCD-IPFWACC-MIB.txt \
- UCD-DLMOD-MIB.txt UCD-DISKIO-MIB.txt
-
-+EXTRAMIBS = BGP4-MIB.txt BRIDGE-MIB.txt GNOME-SMI.txt OSPF-MIB.txt \
-+ OSPF-TRAP-MIB.txt RIPv2-MIB.txt SOURCE-ROUTING-MIB.txt \
-+ LM-SENSORS-MIB.txt
-+
- DEFAULTMIBS = @default_mibs_install@
-
- MIBS = $(V1MIBS) $(V2MIBS) $(V3MIBS) $(RFCMIBS) \
- $(AGENTMIBS) $(IANAMIBS) \
-- $(NETSNMPMIBS) $(UCDMIBS) $(DEFAULTMIBS)
-+ $(NETSNMPMIBS) $(UCDMIBS) $(DEFAULTMIBS) $(EXTRAMIBS)
-
- all: standardall
-
-diff -ruN net-snmp-5.1.2-orig/mibs/OSPF-MIB.txt net-snmp-5.1.2-5/mibs/OSPF-MIB.txt
---- net-snmp-5.1.2-orig/mibs/OSPF-MIB.txt 1970-01-01 01:00:00.000000000 +0100
-+++ net-snmp-5.1.2-5/mibs/OSPF-MIB.txt 2005-03-13 16:17:21.000000000 +0100
-@@ -0,0 +1,2723 @@
-+OSPF-MIB DEFINITIONS ::= BEGIN
-+
-+ IMPORTS
-+ MODULE-IDENTITY, OBJECT-TYPE, Counter32, Gauge32,
-+ Integer32, IpAddress
-+ FROM SNMPv2-SMI
-+ TEXTUAL-CONVENTION, TruthValue, RowStatus
-+ FROM SNMPv2-TC
-+ MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
-+ mib-2 FROM RFC1213-MIB;
-+
-+-- This MIB module uses the extended OBJECT-TYPE macro as
-+-- defined in [9].
-+
-+ospf MODULE-IDENTITY
-+ LAST-UPDATED "9501201225Z" -- Fri Jan 20 12:25:50 PST 1995
-+ ORGANIZATION "IETF OSPF Working Group"
-+ CONTACT-INFO
-+ " Fred Baker
-+ Postal: Cisco Systems
-+ 519 Lado Drive
-+ Santa Barbara, California 93111
-+ Tel: +1 805 681 0115
-+ E-Mail: fred@cisco.com
-+
-+ Rob Coltun
-+ Postal: RainbowBridge Communications
-+ Tel: (301) 340-9416
-+ E-Mail: rcoltun@rainbow-bridge.com"
-+ DESCRIPTION
-+ "The MIB module to describe the OSPF Version 2
-+ Protocol"
-+ ::= { mib-2 14 }
-+
-+-- The Area ID, in OSPF, has the same format as an IP Address,
-+-- but has the function of defining a summarization point for
-+-- Link State Advertisements
-+
-+AreaID ::= TEXTUAL-CONVENTION
-+ STATUS current
-+ DESCRIPTION
-+ "An OSPF Area Identifier."
-+ SYNTAX IpAddress
-+
-+
-+-- The Router ID, in OSPF, has the same format as an IP Address,
-+-- but identifies the router independent of its IP Address.
-+
-+RouterID ::= TEXTUAL-CONVENTION
-+ STATUS current
-+ DESCRIPTION
-+ "A OSPF Router Identifier."
-+ SYNTAX IpAddress
-+
-+
-+-- The OSPF Metric is defined as an unsigned value in the range
-+
-+Metric ::= TEXTUAL-CONVENTION
-+ STATUS current
-+ DESCRIPTION
-+ "The OSPF Internal Metric."
-+ SYNTAX Integer32 (0..'FFFF'h)
-+
-+BigMetric ::= TEXTUAL-CONVENTION
-+ STATUS current
-+ DESCRIPTION
-+ "The OSPF External Metric."
-+ SYNTAX Integer32 (0..'FFFFFF'h)
-+
-+-- Status Values
-+
-+Status ::= TEXTUAL-CONVENTION
-+ STATUS current
-+ DESCRIPTION
-+ "The status of an interface: 'enabled' indicates that
-+ it is willing to communicate with other OSPF Routers,
-+ while 'disabled' indicates that it is not."
-+ SYNTAX INTEGER { enabled (1), disabled (2) }
-+
-+-- Time Durations measured in seconds
-+
-+PositiveInteger ::= TEXTUAL-CONVENTION
-+ STATUS current
-+ DESCRIPTION
-+ "A positive integer. Values in excess are precluded as
-+ unnecessary and prone to interoperability issues."
-+ SYNTAX Integer32 (0..'7FFFFFFF'h)
-+
-+HelloRange ::= TEXTUAL-CONVENTION
-+ STATUS current
-+ DESCRIPTION
-+ "The range of intervals on which hello messages are
-+ exchanged."
-+ SYNTAX Integer32 (1..'FFFF'h)
-+
-+UpToMaxAge ::= TEXTUAL-CONVENTION
-+ STATUS current
-+ DESCRIPTION
-+ "The values that one might find or configure for
-+ variables bounded by the maximum age of an LSA."
-+ SYNTAX Integer32 (0..3600)
-+
-+
-+-- The range of ifIndex
-+
-+InterfaceIndex ::= TEXTUAL-CONVENTION
-+ STATUS current
-+ DESCRIPTION
-+ "The range of ifIndex."
-+ SYNTAX Integer32
-+
-+
-+-- Potential Priorities for the Designated Router Election
-+
-+DesignatedRouterPriority ::= TEXTUAL-CONVENTION
-+ STATUS current
-+ DESCRIPTION
-+ "The values defined for the priority of a system for
-+ becoming the designated router."
-+ SYNTAX Integer32 (0..'FF'h)
-+
-+TOSType ::= TEXTUAL-CONVENTION
-+ STATUS current
-+ DESCRIPTION
-+ "Type of Service is defined as a mapping to the IP Type of
-+ Service Flags as defined in the IP Forwarding Table MIB
-+
-+ +-----+-----+-----+-----+-----+-----+-----+-----+
-+ | | | |
-+ | PRECEDENCE | TYPE OF SERVICE | 0 |
-+ | | | |
-+ +-----+-----+-----+-----+-----+-----+-----+-----+
-+
-+ IP TOS IP TOS
-+ Field Policy Field Policy
-+
-+ Contents Code Contents Code
-+ 0 0 0 0 ==> 0 0 0 0 1 ==> 2
-+ 0 0 1 0 ==> 4 0 0 1 1 ==> 6
-+ 0 1 0 0 ==> 8 0 1 0 1 ==> 10
-+ 0 1 1 0 ==> 12 0 1 1 1 ==> 14
-+ 1 0 0 0 ==> 16 1 0 0 1 ==> 18
-+ 1 0 1 0 ==> 20 1 0 1 1 ==> 22
-+ 1 1 0 0 ==> 24 1 1 0 1 ==> 26
-+ 1 1 1 0 ==> 28 1 1 1 1 ==> 30
-+
-+ The remaining values are left for future definition."
-+ SYNTAX Integer32 (0..30)
-+
-+
-+-- OSPF General Variables
-+
-+-- These parameters apply globally to the Router's
-+-- OSPF Process.
-+
-+ospfGeneralGroup OBJECT IDENTIFIER ::= { ospf 1 }
-+
-+
-+ ospfRouterId OBJECT-TYPE
-+ SYNTAX RouterID
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "A 32-bit integer uniquely identifying the
-+ router in the Autonomous System.
-+
-+ By convention, to ensure uniqueness, this
-+ should default to the value of one of the
-+ router's IP interface addresses."
-+ REFERENCE
-+ "OSPF Version 2, C.1 Global parameters"
-+ ::= { ospfGeneralGroup 1 }
-+
-+
-+ ospfAdminStat OBJECT-TYPE
-+ SYNTAX Status
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "The administrative status of OSPF in the
-+ router. The value 'enabled' denotes that the
-+ OSPF Process is active on at least one inter-
-+ face; 'disabled' disables it on all inter-
-+ faces."
-+ ::= { ospfGeneralGroup 2 }
-+
-+ ospfVersionNumber OBJECT-TYPE
-+ SYNTAX INTEGER { version2 (2) }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The current version number of the OSPF proto-
-+ col is 2."
-+ REFERENCE
-+ "OSPF Version 2, Title"
-+ ::= { ospfGeneralGroup 3 }
-+
-+
-+ ospfAreaBdrRtrStatus OBJECT-TYPE
-+ SYNTAX TruthValue
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "A flag to note whether this router is an area
-+ border router."
-+ REFERENCE
-+ "OSPF Version 2, Section 3 Splitting the AS into
-+ Areas"
-+ ::= { ospfGeneralGroup 4 }
-+
-+
-+ ospfASBdrRtrStatus OBJECT-TYPE
-+ SYNTAX TruthValue
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "A flag to note whether this router is config-
-+ ured as an Autonomous System border router."
-+ REFERENCE
-+ "OSPF Version 2, Section 3.3 Classification of
-+ routers"
-+ ::= { ospfGeneralGroup 5 }
-+
-+ ospfExternLsaCount OBJECT-TYPE
-+ SYNTAX Gauge32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of external (LS type 5) link-state
-+ advertisements in the link-state database."
-+ REFERENCE
-+ "OSPF Version 2, Appendix A.4.5 AS external link
-+ advertisements"
-+ ::= { ospfGeneralGroup 6 }
-+
-+
-+ ospfExternLsaCksumSum OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The 32-bit unsigned sum of the LS checksums of
-+ the external link-state advertisements con-
-+ tained in the link-state database. This sum
-+ can be used to determine if there has been a
-+ change in a router's link state database, and
-+ to compare the link-state database of two
-+ routers."
-+ ::= { ospfGeneralGroup 7 }
-+
-+
-+ ospfTOSSupport OBJECT-TYPE
-+ SYNTAX TruthValue
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "The router's support for type-of-service rout-
-+ ing."
-+ REFERENCE
-+ "OSPF Version 2, Appendix F.1.2 Optional TOS
-+ support"
-+ ::= { ospfGeneralGroup 8 }
-+
-+ ospfOriginateNewLsas OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of new link-state advertisements
-+ that have been originated. This number is in-
-+ cremented each time the router originates a new
-+ LSA."
-+ ::= { ospfGeneralGroup 9 }
-+
-+
-+ ospfRxNewLsas OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of link-state advertisements re-
-+ ceived determined to be new instantiations.
-+ This number does not include newer instantia-
-+ tions of self-originated link-state advertise-
-+ ments."
-+ ::= { ospfGeneralGroup 10 }
-+
-+ ospfExtLsdbLimit OBJECT-TYPE
-+ SYNTAX Integer32 (-1..'7FFFFFFF'h)
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "The maximum number of non-default AS-
-+ external-LSAs entries that can be stored in the
-+ link-state database. If the value is -1, then
-+ there is no limit.
-+
-+ When the number of non-default AS-external-LSAs
-+ in a router's link-state database reaches
-+ ospfExtLsdbLimit, the router enters Overflow-
-+ State. The router never holds more than
-+ ospfExtLsdbLimit non-default AS-external-LSAs
-+ in its database. OspfExtLsdbLimit MUST be set
-+ identically in all routers attached to the OSPF
-+ backbone and/or any regular OSPF area. (i.e.,
-+ OSPF stub areas and NSSAs are excluded)."
-+ DEFVAL { -1 }
-+ ::= { ospfGeneralGroup 11 }
-+
-+ ospfMulticastExtensions OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "A Bit Mask indicating whether the router is
-+ forwarding IP multicast (Class D) datagrams
-+ based on the algorithms defined in the Multi-
-+ cast Extensions to OSPF.
-+
-+ Bit 0, if set, indicates that the router can
-+ forward IP multicast datagrams in the router's
-+ directly attached areas (called intra-area mul-
-+ ticast routing).
-+
-+ Bit 1, if set, indicates that the router can
-+ forward IP multicast datagrams between OSPF
-+ areas (called inter-area multicast routing).
-+
-+ Bit 2, if set, indicates that the router can
-+ forward IP multicast datagrams between Auto-
-+ nomous Systems (called inter-AS multicast rout-
-+ ing).
-+
-+ Only certain combinations of bit settings are
-+ allowed, namely: 0 (no multicast forwarding is
-+ enabled), 1 (intra-area multicasting only), 3
-+ (intra-area and inter-area multicasting), 5
-+ (intra-area and inter-AS multicasting) and 7
-+ (multicasting everywhere). By default, no mul-
-+ ticast forwarding is enabled."
-+ DEFVAL { 0 }
-+ ::= { ospfGeneralGroup 12 }
-+
-+ ospfExitOverflowInterval OBJECT-TYPE
-+ SYNTAX PositiveInteger
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "The number of seconds that, after entering
-+ OverflowState, a router will attempt to leave
-+ OverflowState. This allows the router to again
-+ originate non-default AS-external-LSAs. When
-+ set to 0, the router will not leave Overflow-
-+ State until restarted."
-+ DEFVAL { 0 }
-+ ::= { ospfGeneralGroup 13 }
-+
-+
-+ ospfDemandExtensions OBJECT-TYPE
-+ SYNTAX TruthValue
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "The router's support for demand routing."
-+ REFERENCE
-+ "OSPF Version 2, Appendix on Demand Routing"
-+ ::= { ospfGeneralGroup 14 }
-+
-+
-+-- The OSPF Area Data Structure contains information
-+-- regarding the various areas. The interfaces and
-+-- virtual links are configured as part of these areas.
-+-- Area 0.0.0.0, by definition, is the Backbone Area
-+
-+
-+ ospfAreaTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF OspfAreaEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "Information describing the configured parame-
-+ ters and cumulative statistics of the router's
-+ attached areas."
-+ REFERENCE
-+ "OSPF Version 2, Section 6 The Area Data Struc-
-+ ture"
-+ ::= { ospf 2 }
-+
-+
-+ ospfAreaEntry OBJECT-TYPE
-+ SYNTAX OspfAreaEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "Information describing the configured parame-
-+ ters and cumulative statistics of one of the
-+ router's attached areas."
-+ INDEX { ospfAreaId }
-+ ::= { ospfAreaTable 1 }
-+
-+OspfAreaEntry ::=
-+ SEQUENCE {
-+ ospfAreaId
-+ AreaID,
-+ ospfAuthType
-+ Integer32,
-+ ospfImportAsExtern
-+ INTEGER,
-+ ospfSpfRuns
-+ Counter32,
-+ ospfAreaBdrRtrCount
-+ Gauge32,
-+ ospfAsBdrRtrCount
-+ Gauge32,
-+ ospfAreaLsaCount
-+ Gauge32,
-+ ospfAreaLsaCksumSum
-+ Integer32,
-+ ospfAreaSummary
-+ INTEGER,
-+ ospfAreaStatus
-+ RowStatus
-+ }
-+
-+ ospfAreaId OBJECT-TYPE
-+ SYNTAX AreaID
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "A 32-bit integer uniquely identifying an area.
-+ Area ID 0.0.0.0 is used for the OSPF backbone."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ ::= { ospfAreaEntry 1 }
-+
-+
-+ ospfAuthType OBJECT-TYPE
-+ SYNTAX Integer32
-+ -- none (0),
-+ -- simplePassword (1)
-+ -- md5 (2)
-+ -- reserved for specification by IANA (> 2)
-+ MAX-ACCESS read-create
-+ STATUS obsolete
-+ DESCRIPTION
-+ "The authentication type specified for an area.
-+ Additional authentication types may be assigned
-+ locally on a per Area basis."
-+ REFERENCE
-+ "OSPF Version 2, Appendix E Authentication"
-+ DEFVAL { 0 } -- no authentication, by default
-+ ::= { ospfAreaEntry 2 }
-+
-+ ospfImportAsExtern OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ importExternal (1),
-+ importNoExternal (2),
-+ importNssa (3)
-+ }
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The area's support for importing AS external
-+ link- state advertisements."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ DEFVAL { importExternal }
-+ ::= { ospfAreaEntry 3 }
-+
-+
-+ ospfSpfRuns OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of times that the intra-area route
-+ table has been calculated using this area's
-+ link-state database. This is typically done
-+ using Dijkstra's algorithm."
-+ ::= { ospfAreaEntry 4 }
-+
-+
-+ ospfAreaBdrRtrCount OBJECT-TYPE
-+ SYNTAX Gauge32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The total number of area border routers reach-
-+ able within this area. This is initially zero,
-+ and is calculated in each SPF Pass."
-+ ::= { ospfAreaEntry 5 }
-+
-+ ospfAsBdrRtrCount OBJECT-TYPE
-+ SYNTAX Gauge32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The total number of Autonomous System border
-+ routers reachable within this area. This is
-+ initially zero, and is calculated in each SPF
-+ Pass."
-+ ::= { ospfAreaEntry 6 }
-+
-+
-+ ospfAreaLsaCount OBJECT-TYPE
-+ SYNTAX Gauge32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The total number of link-state advertisements
-+ in this area's link-state database, excluding
-+ AS External LSA's."
-+ ::= { ospfAreaEntry 7 }
-+
-+
-+ ospfAreaLsaCksumSum OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The 32-bit unsigned sum of the link-state ad-
-+ vertisements' LS checksums contained in this
-+ area's link-state database. This sum excludes
-+ external (LS type 5) link-state advertisements.
-+ The sum can be used to determine if there has
-+ been a change in a router's link state data-
-+ base, and to compare the link-state database of
-+ two routers."
-+ DEFVAL { 0 }
-+ ::= { ospfAreaEntry 8 }
-+
-+ ospfAreaSummary OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ noAreaSummary (1),
-+ sendAreaSummary (2)
-+ }
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The variable ospfAreaSummary controls the im-
-+ port of summary LSAs into stub areas. It has
-+ no effect on other areas.
-+
-+ If it is noAreaSummary, the router will neither
-+ originate nor propagate summary LSAs into the
-+ stub area. It will rely entirely on its de-
-+ fault route.
-+
-+ If it is sendAreaSummary, the router will both
-+ summarize and propagate summary LSAs."
-+ DEFVAL { noAreaSummary }
-+ ::= { ospfAreaEntry 9 }
-+
-+
-+ ospfAreaStatus OBJECT-TYPE
-+ SYNTAX RowStatus
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "This variable displays the status of the en-
-+ try. Setting it to 'invalid' has the effect of
-+ rendering it inoperative. The internal effect
-+ (row removal) is implementation dependent."
-+ ::= { ospfAreaEntry 10 }
-+
-+
-+-- OSPF Area Default Metric Table
-+
-+-- The OSPF Area Default Metric Table describes the metrics
-+-- that a default Area Border Router will advertise into a
-+-- Stub area.
-+
-+
-+ ospfStubAreaTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF OspfStubAreaEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "The set of metrics that will be advertised by
-+ a default Area Border Router into a stub area."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2, Area Parameters"
-+ ::= { ospf 3 }
-+
-+
-+ ospfStubAreaEntry OBJECT-TYPE
-+ SYNTAX OspfStubAreaEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "The metric for a given Type of Service that
-+ will be advertised by a default Area Border
-+ Router into a stub area."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2, Area Parameters"
-+ INDEX { ospfStubAreaId, ospfStubTOS }
-+ ::= { ospfStubAreaTable 1 }
-+
-+OspfStubAreaEntry ::=
-+ SEQUENCE {
-+ ospfStubAreaId
-+ AreaID,
-+ ospfStubTOS
-+ TOSType,
-+ ospfStubMetric
-+ BigMetric,
-+ ospfStubStatus
-+ RowStatus,
-+ ospfStubMetricType
-+ INTEGER
-+ }
-+
-+ ospfStubAreaId OBJECT-TYPE
-+ SYNTAX AreaID
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The 32 bit identifier for the Stub Area. On
-+ creation, this can be derived from the in-
-+ stance."
-+ ::= { ospfStubAreaEntry 1 }
-+
-+
-+ ospfStubTOS OBJECT-TYPE
-+ SYNTAX TOSType
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The Type of Service associated with the
-+ metric. On creation, this can be derived from
-+ the instance."
-+ ::= { ospfStubAreaEntry 2 }
-+
-+
-+ ospfStubMetric OBJECT-TYPE
-+ SYNTAX BigMetric
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The metric value applied at the indicated type
-+ of service. By default, this equals the least
-+ metric at the type of service among the inter-
-+ faces to other areas."
-+ ::= { ospfStubAreaEntry 3 }
-+
-+
-+ ospfStubStatus OBJECT-TYPE
-+ SYNTAX RowStatus
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "This variable displays the status of the en-
-+ try. Setting it to 'invalid' has the effect of
-+ rendering it inoperative. The internal effect
-+ (row removal) is implementation dependent."
-+ ::= { ospfStubAreaEntry 4 }
-+
-+ ospfStubMetricType OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ ospfMetric (1), -- OSPF Metric
-+ comparableCost (2), -- external type 1
-+ nonComparable (3) -- external type 2
-+ }
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "This variable displays the type of metric ad-
-+ vertised as a default route."
-+ DEFVAL { ospfMetric }
-+ ::= { ospfStubAreaEntry 5 }
-+
-+-- OSPF Link State Database
-+
-+-- The Link State Database contains the Link State
-+-- Advertisements from throughout the areas that the
-+-- device is attached to.
-+
-+
-+ ospfLsdbTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF OspfLsdbEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "The OSPF Process's Link State Database."
-+ REFERENCE
-+ "OSPF Version 2, Section 12 Link State Adver-
-+ tisements"
-+ ::= { ospf 4 }
-+
-+
-+ ospfLsdbEntry OBJECT-TYPE
-+ SYNTAX OspfLsdbEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A single Link State Advertisement."
-+ INDEX { ospfLsdbAreaId, ospfLsdbType,
-+ ospfLsdbLsid, ospfLsdbRouterId }
-+ ::= { ospfLsdbTable 1 }
-+
-+OspfLsdbEntry ::=
-+ SEQUENCE {
-+ ospfLsdbAreaId
-+ AreaID,
-+ ospfLsdbType
-+ INTEGER,
-+ ospfLsdbLsid
-+ IpAddress,
-+ ospfLsdbRouterId
-+ RouterID,
-+ ospfLsdbSequence
-+ Integer32,
-+ ospfLsdbAge
-+ Integer32,
-+ ospfLsdbChecksum
-+ Integer32,
-+ ospfLsdbAdvertisement
-+ OCTET STRING
-+ }
-+ ospfLsdbAreaId OBJECT-TYPE
-+ SYNTAX AreaID
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The 32 bit identifier of the Area from which
-+ the LSA was received."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ ::= { ospfLsdbEntry 1 }
-+
-+-- External Link State Advertisements are permitted
-+-- for backward compatibility, but should be displayed in
-+-- the ospfExtLsdbTable rather than here.
-+
-+ ospfLsdbType OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ routerLink (1),
-+ networkLink (2),
-+ summaryLink (3),
-+ asSummaryLink (4),
-+ asExternalLink (5), -- but see ospfExtLsdbTable
-+ multicastLink (6),
-+ nssaExternalLink (7)
-+ }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The type of the link state advertisement.
-+ Each link state type has a separate advertise-
-+ ment format."
-+ REFERENCE
-+ "OSPF Version 2, Appendix A.4.1 The Link State
-+ Advertisement header"
-+ ::= { ospfLsdbEntry 2 }
-+
-+ ospfLsdbLsid OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The Link State ID is an LS Type Specific field
-+ containing either a Router ID or an IP Address;
-+ it identifies the piece of the routing domain
-+ that is being described by the advertisement."
-+ REFERENCE
-+ "OSPF Version 2, Section 12.1.4 Link State ID"
-+ ::= { ospfLsdbEntry 3 }
-+ ospfLsdbRouterId OBJECT-TYPE
-+ SYNTAX RouterID
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The 32 bit number that uniquely identifies the
-+ originating router in the Autonomous System."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.1 Global parameters"
-+ ::= { ospfLsdbEntry 4 }
-+
-+-- Note that the OSPF Sequence Number is a 32 bit signed
-+-- integer. It starts with the value '80000001'h,
-+-- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h
-+-- Thus, a typical sequence number will be very negative.
-+
-+ ospfLsdbSequence OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The sequence number field is a signed 32-bit
-+ integer. It is used to detect old and dupli-
-+ cate link state advertisements. The space of
-+ sequence numbers is linearly ordered. The
-+ larger the sequence number the more recent the
-+ advertisement."
-+ REFERENCE
-+ "OSPF Version 2, Section 12.1.6 LS sequence
-+ number"
-+ ::= { ospfLsdbEntry 5 }
-+
-+
-+ ospfLsdbAge OBJECT-TYPE
-+ SYNTAX Integer32 -- Should be 0..MaxAge
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "This field is the age of the link state adver-
-+ tisement in seconds."
-+ REFERENCE
-+ "OSPF Version 2, Section 12.1.1 LS age"
-+ ::= { ospfLsdbEntry 6 }
-+
-+ ospfLsdbChecksum OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "This field is the checksum of the complete
-+ contents of the advertisement, excepting the
-+ age field. The age field is excepted so that
-+ an advertisement's age can be incremented
-+ without updating the checksum. The checksum
-+ used is the same that is used for ISO connec-
-+ tionless datagrams; it is commonly referred to
-+ as the Fletcher checksum."
-+ REFERENCE
-+ "OSPF Version 2, Section 12.1.7 LS checksum"
-+ ::= { ospfLsdbEntry 7 }
-+
-+
-+ ospfLsdbAdvertisement OBJECT-TYPE
-+ SYNTAX OCTET STRING (SIZE (1..65535))
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The entire Link State Advertisement, including
-+ its header."
-+ REFERENCE
-+ "OSPF Version 2, Section 12 Link State Adver-
-+ tisements"
-+ ::= { ospfLsdbEntry 8 }
-+
-+
-+-- Address Range Table
-+
-+-- The Address Range Table acts as an adjunct to the Area
-+-- Table; It describes those Address Range Summaries that
-+-- are configured to be propagated from an Area to reduce
-+-- the amount of information about it which is known beyond
-+-- its borders.
-+
-+ ospfAreaRangeTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF OspfAreaRangeEntry
-+ MAX-ACCESS not-accessible
-+ STATUS obsolete
-+ DESCRIPTION
-+ "A range if IP addresses specified by an IP
-+ address/IP network mask pair. For example,
-+ class B address range of X.X.X.X with a network
-+ mask of 255.255.0.0 includes all IP addresses
-+ from X.X.0.0 to X.X.255.255"
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ ::= { ospf 5 }
-+ ospfAreaRangeEntry OBJECT-TYPE
-+ SYNTAX OspfAreaRangeEntry
-+ MAX-ACCESS not-accessible
-+ STATUS obsolete
-+ DESCRIPTION
-+ "A range if IP addresses specified by an IP
-+ address/IP network mask pair. For example,
-+ class B address range of X.X.X.X with a network
-+ mask of 255.255.0.0 includes all IP addresses
-+ from X.X.0.0 to X.X.255.255"
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ INDEX { ospfAreaRangeAreaId, ospfAreaRangeNet }
-+ ::= { ospfAreaRangeTable 1 }
-+
-+OspfAreaRangeEntry ::=
-+ SEQUENCE {
-+ ospfAreaRangeAreaId
-+ AreaID,
-+ ospfAreaRangeNet
-+ IpAddress,
-+ ospfAreaRangeMask
-+ IpAddress,
-+ ospfAreaRangeStatus
-+ RowStatus,
-+ ospfAreaRangeEffect
-+ INTEGER
-+ }
-+
-+ ospfAreaRangeAreaId OBJECT-TYPE
-+ SYNTAX AreaID
-+ MAX-ACCESS read-only
-+ STATUS obsolete
-+ DESCRIPTION
-+ "The Area the Address Range is to be found
-+ within."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ ::= { ospfAreaRangeEntry 1 }
-+
-+
-+ ospfAreaRangeNet OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS obsolete
-+ DESCRIPTION
-+ "The IP Address of the Net or Subnet indicated
-+ by the range."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ ::= { ospfAreaRangeEntry 2 }
-+
-+
-+ ospfAreaRangeMask OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-create
-+ STATUS obsolete
-+ DESCRIPTION
-+ "The Subnet Mask that pertains to the Net or
-+ Subnet."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ ::= { ospfAreaRangeEntry 3 }
-+
-+ ospfAreaRangeStatus OBJECT-TYPE
-+ SYNTAX RowStatus
-+ MAX-ACCESS read-create
-+ STATUS obsolete
-+ DESCRIPTION
-+ "This variable displays the status of the en-
-+ try. Setting it to 'invalid' has the effect of
-+ rendering it inoperative. The internal effect
-+ (row removal) is implementation dependent."
-+ ::= { ospfAreaRangeEntry 4 }
-+
-+
-+ ospfAreaRangeEffect OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ advertiseMatching (1),
-+ doNotAdvertiseMatching (2)
-+ }
-+ MAX-ACCESS read-create
-+ STATUS obsolete
-+ DESCRIPTION
-+ "Subnets subsumed by ranges either trigger the
-+ advertisement of the indicated summary (adver-
-+ tiseMatching), or result in the subnet's not
-+ being advertised at all outside the area."
-+ DEFVAL { advertiseMatching }
-+ ::= { ospfAreaRangeEntry 5 }
-+
-+
-+
-+-- OSPF Host Table
-+
-+-- The Host/Metric Table indicates what hosts are directly
-+-- attached to the Router, and what metrics and types of
-+-- service should be advertised for them.
-+
-+ ospfHostTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF OspfHostEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "The list of Hosts, and their metrics, that the
-+ router will advertise as host routes."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.6 Host route param-
-+ eters"
-+ ::= { ospf 6 }
-+
-+
-+ ospfHostEntry OBJECT-TYPE
-+ SYNTAX OspfHostEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A metric to be advertised, for a given type of
-+ service, when a given host is reachable."
-+ INDEX { ospfHostIpAddress, ospfHostTOS }
-+ ::= { ospfHostTable 1 }
-+
-+OspfHostEntry ::=
-+ SEQUENCE {
-+ ospfHostIpAddress
-+ IpAddress,
-+ ospfHostTOS
-+ TOSType,
-+ ospfHostMetric
-+ Metric,
-+ ospfHostStatus
-+ RowStatus,
-+ ospfHostAreaID
-+ AreaID
-+ }
-+
-+ ospfHostIpAddress OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP Address of the Host."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.6 Host route parame-
-+ ters"
-+ ::= { ospfHostEntry 1 }
-+
-+
-+ ospfHostTOS OBJECT-TYPE
-+ SYNTAX TOSType
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The Type of Service of the route being config-
-+ ured."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.6 Host route parame-
-+ ters"
-+ ::= { ospfHostEntry 2 }
-+
-+
-+ ospfHostMetric OBJECT-TYPE
-+ SYNTAX Metric
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The Metric to be advertised."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.6 Host route parame-
-+ ters"
-+ ::= { ospfHostEntry 3 }
-+
-+ ospfHostStatus OBJECT-TYPE
-+ SYNTAX RowStatus
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "This variable displays the status of the en-
-+ try. Setting it to 'invalid' has the effect of
-+ rendering it inoperative. The internal effect
-+ (row removal) is implementation dependent."
-+ ::= { ospfHostEntry 4 }
-+
-+
-+ ospfHostAreaID OBJECT-TYPE
-+ SYNTAX AreaID
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The Area the Host Entry is to be found within.
-+ By default, the area that a subsuming OSPF in-
-+ terface is in, or 0.0.0.0"
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ ::= { ospfHostEntry 5 }
-+
-+
-+-- OSPF Interface Table
-+
-+-- The OSPF Interface Table augments the ipAddrTable
-+-- with OSPF specific information.
-+
-+ ospfIfTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF OspfIfEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "The OSPF Interface Table describes the inter-
-+ faces from the viewpoint of OSPF."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.3 Router interface
-+ parameters"
-+ ::= { ospf 7 }
-+
-+
-+ ospfIfEntry OBJECT-TYPE
-+ SYNTAX OspfIfEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "The OSPF Interface Entry describes one inter-
-+ face from the viewpoint of OSPF."
-+ INDEX { ospfIfIpAddress, ospfAddressLessIf }
-+ ::= { ospfIfTable 1 }
-+
-+OspfIfEntry ::=
-+ SEQUENCE {
-+ ospfIfIpAddress
-+ IpAddress,
-+ ospfAddressLessIf
-+ Integer32,
-+ ospfIfAreaId
-+ AreaID,
-+ ospfIfType
-+ INTEGER,
-+ ospfIfAdminStat
-+ Status,
-+ ospfIfRtrPriority
-+ DesignatedRouterPriority,
-+ ospfIfTransitDelay
-+ UpToMaxAge,
-+ ospfIfRetransInterval
-+ UpToMaxAge,
-+ ospfIfHelloInterval
-+ HelloRange,
-+ ospfIfRtrDeadInterval
-+ PositiveInteger,
-+ ospfIfPollInterval
-+ PositiveInteger,
-+ ospfIfState
-+ INTEGER,
-+ ospfIfDesignatedRouter
-+ IpAddress,
-+ ospfIfBackupDesignatedRouter
-+ IpAddress,
-+ ospfIfEvents
-+ Counter32,
-+ ospfIfAuthType
-+ INTEGER,
-+ ospfIfAuthKey
-+ OCTET STRING,
-+ ospfIfStatus
-+ RowStatus,
-+ ospfIfMulticastForwarding
-+ INTEGER,
-+ ospfIfDemand
-+ TruthValue
-+ }
-+
-+ ospfIfIpAddress OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP address of this OSPF interface."
-+ ::= { ospfIfEntry 1 }
-+
-+ ospfAddressLessIf OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "For the purpose of easing the instancing of
-+ addressed and addressless interfaces; This
-+ variable takes the value 0 on interfaces with
-+ IP Addresses, and the corresponding value of
-+ ifIndex for interfaces having no IP Address."
-+ ::= { ospfIfEntry 2 }
-+ ospfIfAreaId OBJECT-TYPE
-+ SYNTAX AreaID
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "A 32-bit integer uniquely identifying the area
-+ to which the interface connects. Area ID
-+ 0.0.0.0 is used for the OSPF backbone."
-+ DEFVAL { '00000000'H } -- 0.0.0.0
-+ ::= { ospfIfEntry 3 }
-+
-+ ospfIfType OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ broadcast (1),
-+ nbma (2),
-+ pointToPoint (3),
-+ pointToMultipoint (5)
-+ }
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The OSPF interface type.
-+
-+ By way of a default, this field may be intuited
-+ from the corresponding value of ifType. Broad-
-+ cast LANs, such as Ethernet and IEEE 802.5,
-+ take the value 'broadcast', X.25 and similar
-+ technologies take the value 'nbma', and links
-+ that are definitively point to point take the
-+ value 'pointToPoint'."
-+ ::= { ospfIfEntry 4 }
-+
-+
-+ ospfIfAdminStat OBJECT-TYPE
-+ SYNTAX Status
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The OSPF interface's administrative status.
-+ The value formed on the interface, and the in-
-+ terface will be advertised as an internal route
-+ to some area. The value 'disabled' denotes
-+ that the interface is external to OSPF."
-+ DEFVAL { enabled }
-+ ::= { ospfIfEntry 5 }
-+
-+ ospfIfRtrPriority OBJECT-TYPE
-+ SYNTAX DesignatedRouterPriority
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The priority of this interface. Used in
-+ multi-access networks, this field is used in
-+ the designated router election algorithm. The
-+ value 0 signifies that the router is not eligi-
-+ ble to become the designated router on this
-+ particular network. In the event of a tie in
-+ this value, routers will use their Router ID as
-+ a tie breaker."
-+ DEFVAL { 1 }
-+ ::= { ospfIfEntry 6 }
-+
-+
-+ ospfIfTransitDelay OBJECT-TYPE
-+ SYNTAX UpToMaxAge
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The estimated number of seconds it takes to
-+ transmit a link state update packet over this
-+ interface."
-+ DEFVAL { 1 }
-+ ::= { ospfIfEntry 7 }
-+
-+
-+ ospfIfRetransInterval OBJECT-TYPE
-+ SYNTAX UpToMaxAge
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The number of seconds between link-state ad-
-+ vertisement retransmissions, for adjacencies
-+ belonging to this interface. This value is
-+ also used when retransmitting database descrip-
-+ tion and link-state request packets."
-+ DEFVAL { 5 }
-+ ::= { ospfIfEntry 8 }
-+
-+
-+ ospfIfHelloInterval OBJECT-TYPE
-+ SYNTAX HelloRange
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The length of time, in seconds, between the
-+ Hello packets that the router sends on the in-
-+ terface. This value must be the same for all
-+ routers attached to a common network."
-+ DEFVAL { 10 }
-+ ::= { ospfIfEntry 9 }
-+
-+
-+ ospfIfRtrDeadInterval OBJECT-TYPE
-+ SYNTAX PositiveInteger
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The number of seconds that a router's Hello
-+ packets have not been seen before it's neigh-
-+ bors declare the router down. This should be
-+ some multiple of the Hello interval. This
-+ value must be the same for all routers attached
-+ to a common network."
-+ DEFVAL { 40 }
-+ ::= { ospfIfEntry 10 }
-+
-+
-+ ospfIfPollInterval OBJECT-TYPE
-+ SYNTAX PositiveInteger
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The larger time interval, in seconds, between
-+ the Hello packets sent to an inactive non-
-+ broadcast multi- access neighbor."
-+ DEFVAL { 120 }
-+ ::= { ospfIfEntry 11 }
-+
-+
-+ ospfIfState OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ down (1),
-+ loopback (2),
-+ waiting (3),
-+ pointToPoint (4),
-+ designatedRouter (5),
-+ backupDesignatedRouter (6),
-+ otherDesignatedRouter (7)
-+ }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The OSPF Interface State."
-+ DEFVAL { down }
-+ ::= { ospfIfEntry 12 }
-+
-+
-+ ospfIfDesignatedRouter OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP Address of the Designated Router."
-+ DEFVAL { '00000000'H } -- 0.0.0.0
-+ ::= { ospfIfEntry 13 }
-+
-+
-+ ospfIfBackupDesignatedRouter OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP Address of the Backup Designated
-+ Router."
-+ DEFVAL { '00000000'H } -- 0.0.0.0
-+ ::= { ospfIfEntry 14 }
-+
-+ ospfIfEvents OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of times this OSPF interface has
-+ changed its state, or an error has occurred."
-+ ::= { ospfIfEntry 15 }
-+
-+
-+ ospfIfAuthKey OBJECT-TYPE
-+ SYNTAX OCTET STRING (SIZE (0..256))
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The Authentication Key. If the Area's Author-
-+ ization Type is simplePassword, and the key
-+ length is shorter than 8 octets, the agent will
-+ left adjust and zero fill to 8 octets.
-+
-+ Note that unauthenticated interfaces need no
-+ authentication key, and simple password authen-
-+ tication cannot use a key of more than 8 oc-
-+ tets. Larger keys are useful only with authen-
-+ tication mechanisms not specified in this docu-
-+ ment.
-+
-+ When read, ospfIfAuthKey always returns an Oc-
-+ tet String of length zero."
-+ REFERENCE
-+ "OSPF Version 2, Section 9 The Interface Data
-+ Structure"
-+ DEFVAL { '0000000000000000'H } -- 0.0.0.0.0.0.0.0
-+ ::= { ospfIfEntry 16 }
-+
-+ ospfIfStatus OBJECT-TYPE
-+ SYNTAX RowStatus
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "This variable displays the status of the en-
-+ try. Setting it to 'invalid' has the effect of
-+ rendering it inoperative. The internal effect
-+ (row removal) is implementation dependent."
-+ ::= { ospfIfEntry 17 }
-+
-+
-+ ospfIfMulticastForwarding OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ blocked (1), -- no multicast forwarding
-+ multicast (2), -- using multicast address
-+ unicast (3) -- to each OSPF neighbor
-+ }
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The way multicasts should forwarded on this
-+ interface; not forwarded, forwarded as data
-+ link multicasts, or forwarded as data link uni-
-+ casts. Data link multicasting is not meaning-
-+ ful on point to point and NBMA interfaces, and
-+ setting ospfMulticastForwarding to 0 effective-
-+ ly disables all multicast forwarding."
-+ DEFVAL { blocked }
-+ ::= { ospfIfEntry 18 }
-+
-+
-+ ospfIfDemand OBJECT-TYPE
-+ SYNTAX TruthValue
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "Indicates whether Demand OSPF procedures (hel-
-+ lo supression to FULL neighbors and setting the
-+ DoNotAge flag on proogated LSAs) should be per-
-+ formed on this interface."
-+ DEFVAL { false }
-+ ::= { ospfIfEntry 19 }
-+
-+
-+ ospfIfAuthType OBJECT-TYPE
-+ SYNTAX INTEGER (0..255)
-+ -- none (0),
-+ -- simplePassword (1)
-+ -- md5 (2)
-+ -- reserved for specification by IANA (> 2)
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The authentication type specified for an in-
-+ terface. Additional authentication types may
-+ be assigned locally."
-+ REFERENCE
-+ "OSPF Version 2, Appendix E Authentication"
-+ DEFVAL { 0 } -- no authentication, by default
-+ ::= { ospfIfEntry 20 }
-+
-+
-+-- OSPF Interface Metric Table
-+
-+-- The Metric Table describes the metrics to be advertised
-+-- for a specified interface at the various types of service.
-+-- As such, this table is an adjunct of the OSPF Interface
-+-- Table.
-+
-+-- Types of service, as defined by RFC 791, have the ability
-+-- to request low delay, high bandwidth, or reliable linkage.
-+
-+-- For the purposes of this specification, the measure of
-+-- bandwidth
-+
-+-- Metric = 10^8 / ifSpeed
-+
-+-- is the default value. For multiple link interfaces, note
-+-- that ifSpeed is the sum of the individual link speeds.
-+-- This yields a number having the following typical values:
-+
-+-- Network Type/bit rate Metric
-+
-+-- >= 100 MBPS 1
-+-- Ethernet/802.3 10
-+-- E1 48
-+-- T1 (ESF) 65
-+-- 64 KBPS 1562
-+-- 56 KBPS 1785
-+-- 19.2 KBPS 5208
-+-- 9.6 KBPS 10416
-+
-+-- Routes that are not specified use the default (TOS 0) metric
-+
-+ ospfIfMetricTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF OspfIfMetricEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "The TOS metrics for a non-virtual interface
-+ identified by the interface index."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.3 Router interface
-+ parameters"
-+ ::= { ospf 8 }
-+
-+ ospfIfMetricEntry OBJECT-TYPE
-+ SYNTAX OspfIfMetricEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A particular TOS metric for a non-virtual in-
-+ terface identified by the interface index."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.3 Router interface
-+ parameters"
-+ INDEX { ospfIfMetricIpAddress,
-+ ospfIfMetricAddressLessIf,
-+ ospfIfMetricTOS }
-+ ::= { ospfIfMetricTable 1 }
-+
-+OspfIfMetricEntry ::=
-+ SEQUENCE {
-+ ospfIfMetricIpAddress
-+ IpAddress,
-+ ospfIfMetricAddressLessIf
-+ Integer32,
-+ ospfIfMetricTOS
-+ TOSType,
-+ ospfIfMetricValue
-+ Metric,
-+ ospfIfMetricStatus
-+ RowStatus
-+ }
-+
-+ ospfIfMetricIpAddress OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP address of this OSPF interface. On row
-+ creation, this can be derived from the in-
-+ stance."
-+ ::= { ospfIfMetricEntry 1 }
-+
-+ ospfIfMetricAddressLessIf OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "For the purpose of easing the instancing of
-+ addressed and addressless interfaces; This
-+ variable takes the value 0 on interfaces with
-+ IP Addresses, and the value of ifIndex for in-
-+ terfaces having no IP Address. On row crea-
-+ tion, this can be derived from the instance."
-+ ::= { ospfIfMetricEntry 2 }
-+
-+
-+ ospfIfMetricTOS OBJECT-TYPE
-+ SYNTAX TOSType
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The type of service metric being referenced.
-+ On row creation, this can be derived from the
-+ instance."
-+ ::= { ospfIfMetricEntry 3 }
-+
-+
-+ ospfIfMetricValue OBJECT-TYPE
-+ SYNTAX Metric
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The metric of using this type of service on
-+ this interface. The default value of the TOS 0
-+ Metric is 10^8 / ifSpeed."
-+ ::= { ospfIfMetricEntry 4 }
-+
-+ ospfIfMetricStatus OBJECT-TYPE
-+ SYNTAX RowStatus
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "This variable displays the status of the en-
-+ try. Setting it to 'invalid' has the effect of
-+ rendering it inoperative. The internal effect
-+ (row removal) is implementation dependent."
-+ ::= { ospfIfMetricEntry 5 }
-+
-+
-+-- OSPF Virtual Interface Table
-+
-+-- The Virtual Interface Table describes the virtual
-+-- links that the OSPF Process is configured to
-+-- carry on.
-+
-+ ospfVirtIfTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF OspfVirtIfEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "Information about this router's virtual inter-
-+ faces."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.4 Virtual link
-+ parameters"
-+ ::= { ospf 9 }
-+
-+
-+ ospfVirtIfEntry OBJECT-TYPE
-+ SYNTAX OspfVirtIfEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "Information about a single Virtual Interface."
-+ INDEX { ospfVirtIfAreaId, ospfVirtIfNeighbor }
-+ ::= { ospfVirtIfTable 1 }
-+
-+OspfVirtIfEntry ::=
-+ SEQUENCE {
-+ ospfVirtIfAreaId
-+ AreaID,
-+ ospfVirtIfNeighbor
-+ RouterID,
-+ ospfVirtIfTransitDelay
-+ UpToMaxAge,
-+ ospfVirtIfRetransInterval
-+ UpToMaxAge,
-+ ospfVirtIfHelloInterval
-+ HelloRange,
-+ ospfVirtIfRtrDeadInterval
-+ PositiveInteger,
-+ ospfVirtIfState
-+ INTEGER,
-+ ospfVirtIfEvents
-+ Counter32,
-+ ospfVirtIfAuthType
-+ INTEGER,
-+ ospfVirtIfAuthKey
-+ OCTET STRING,
-+ ospfVirtIfStatus
-+ RowStatus
-+ }
-+
-+ ospfVirtIfAreaId OBJECT-TYPE
-+ SYNTAX AreaID
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The Transit Area that the Virtual Link
-+ traverses. By definition, this is not 0.0.0.0"
-+ ::= { ospfVirtIfEntry 1 }
-+
-+
-+ ospfVirtIfNeighbor OBJECT-TYPE
-+ SYNTAX RouterID
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The Router ID of the Virtual Neighbor."
-+ ::= { ospfVirtIfEntry 2 }
-+
-+
-+ ospfVirtIfTransitDelay OBJECT-TYPE
-+ SYNTAX UpToMaxAge
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The estimated number of seconds it takes to
-+ transmit a link- state update packet over this
-+ interface."
-+ DEFVAL { 1 }
-+ ::= { ospfVirtIfEntry 3 }
-+
-+
-+ ospfVirtIfRetransInterval OBJECT-TYPE
-+ SYNTAX UpToMaxAge
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The number of seconds between link-state ad-
-+ vertisement retransmissions, for adjacencies
-+ belonging to this interface. This value is
-+ also used when retransmitting database descrip-
-+ tion and link-state request packets. This
-+ value should be well over the expected round-
-+ trip time."
-+ DEFVAL { 5 }
-+ ::= { ospfVirtIfEntry 4 }
-+
-+
-+ ospfVirtIfHelloInterval OBJECT-TYPE
-+ SYNTAX HelloRange
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The length of time, in seconds, between the
-+ Hello packets that the router sends on the in-
-+ terface. This value must be the same for the
-+ virtual neighbor."
-+ DEFVAL { 10 }
-+ ::= { ospfVirtIfEntry 5 }
-+
-+
-+ ospfVirtIfRtrDeadInterval OBJECT-TYPE
-+ SYNTAX PositiveInteger
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The number of seconds that a router's Hello
-+ packets have not been seen before it's neigh-
-+ bors declare the router down. This should be
-+ some multiple of the Hello interval. This
-+ value must be the same for the virtual neigh-
-+ bor."
-+ DEFVAL { 60 }
-+ ::= { ospfVirtIfEntry 6 }
-+
-+
-+ ospfVirtIfState OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ down (1), -- these use the same encoding
-+ pointToPoint (4) -- as the ospfIfTable
-+ }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "OSPF virtual interface states."
-+ DEFVAL { down }
-+ ::= { ospfVirtIfEntry 7 }
-+
-+
-+ ospfVirtIfEvents OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of state changes or error events on
-+ this Virtual Link"
-+ ::= { ospfVirtIfEntry 8 }
-+
-+
-+ ospfVirtIfAuthKey OBJECT-TYPE
-+ SYNTAX OCTET STRING (SIZE(0..256))
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "If Authentication Type is simplePassword, the
-+ device will left adjust and zero fill to 8 oc-
-+ tets.
-+
-+ Note that unauthenticated interfaces need no
-+ authentication key, and simple password authen-
-+ tication cannot use a key of more than 8 oc-
-+ tets. Larger keys are useful only with authen-
-+ tication mechanisms not specified in this docu-
-+ ment.
-+
-+ When read, ospfVifAuthKey always returns a
-+ string of length zero."
-+ REFERENCE
-+ "OSPF Version 2, Section 9 The Interface Data
-+ Structure"
-+ DEFVAL { '0000000000000000'H } -- 0.0.0.0.0.0.0.0
-+ ::= { ospfVirtIfEntry 9 }
-+
-+
-+ ospfVirtIfStatus OBJECT-TYPE
-+ SYNTAX RowStatus
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "This variable displays the status of the en-
-+ try. Setting it to 'invalid' has the effect of
-+ rendering it inoperative. The internal effect
-+ (row removal) is implementation dependent."
-+ ::= { ospfVirtIfEntry 10 }
-+
-+
-+ ospfVirtIfAuthType OBJECT-TYPE
-+ SYNTAX INTEGER (0..255)
-+ -- none (0),
-+ -- simplePassword (1)
-+ -- md5 (2)
-+ -- reserved for specification by IANA (> 2)
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The authentication type specified for a virtu-
-+ al interface. Additional authentication types
-+ may be assigned locally."
-+ REFERENCE
-+ "OSPF Version 2, Appendix E Authentication"
-+ DEFVAL { 0 } -- no authentication, by default
-+ ::= { ospfVirtIfEntry 11 }
-+
-+
-+-- OSPF Neighbor Table
-+
-+-- The OSPF Neighbor Table describes all neighbors in
-+-- the locality of the subject router.
-+
-+ ospfNbrTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF OspfNbrEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A table of non-virtual neighbor information."
-+ REFERENCE
-+ "OSPF Version 2, Section 10 The Neighbor Data
-+ Structure"
-+ ::= { ospf 10 }
-+
-+
-+ ospfNbrEntry OBJECT-TYPE
-+ SYNTAX OspfNbrEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "The information regarding a single neighbor."
-+ REFERENCE
-+ "OSPF Version 2, Section 10 The Neighbor Data
-+ Structure"
-+ INDEX { ospfNbrIpAddr, ospfNbrAddressLessIndex }
-+ ::= { ospfNbrTable 1 }
-+
-+OspfNbrEntry ::=
-+ SEQUENCE {
-+ ospfNbrIpAddr
-+ IpAddress,
-+ ospfNbrAddressLessIndex
-+ InterfaceIndex,
-+ ospfNbrRtrId
-+ RouterID,
-+ ospfNbrOptions
-+ Integer32,
-+ ospfNbrPriority
-+ DesignatedRouterPriority,
-+ ospfNbrState
-+ INTEGER,
-+ ospfNbrEvents
-+ Counter32,
-+ ospfNbrLsRetransQLen
-+ Gauge32,
-+ ospfNbmaNbrStatus
-+ RowStatus,
-+ ospfNbmaNbrPermanence
-+ INTEGER,
-+ ospfNbrHelloSuppressed
-+ TruthValue
-+ }
-+
-+ ospfNbrIpAddr OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP address this neighbor is using in its
-+ IP Source Address. Note that, on addressless
-+ links, this will not be 0.0.0.0, but the ad-
-+ dress of another of the neighbor's interfaces."
-+ ::= { ospfNbrEntry 1 }
-+
-+
-+ ospfNbrAddressLessIndex OBJECT-TYPE
-+ SYNTAX InterfaceIndex
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "On an interface having an IP Address, zero.
-+ On addressless interfaces, the corresponding
-+ value of ifIndex in the Internet Standard MIB.
-+ On row creation, this can be derived from the
-+ instance."
-+ ::= { ospfNbrEntry 2 }
-+
-+
-+ ospfNbrRtrId OBJECT-TYPE
-+ SYNTAX RouterID
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "A 32-bit integer (represented as a type IpAd-
-+ dress) uniquely identifying the neighboring
-+ router in the Autonomous System."
-+ DEFVAL { '00000000'H } -- 0.0.0.0
-+ ::= { ospfNbrEntry 3 }
-+
-+
-+ ospfNbrOptions OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "A Bit Mask corresponding to the neighbor's op-
-+ tions field.
-+
-+ Bit 0, if set, indicates that the system will
-+ operate on Type of Service metrics other than
-+ TOS 0. If zero, the neighbor will ignore all
-+ metrics except the TOS 0 metric.
-+
-+ Bit 1, if set, indicates that the associated
-+ area accepts and operates on external informa-
-+ tion; if zero, it is a stub area.
-+
-+ Bit 2, if set, indicates that the system is ca-
-+ pable of routing IP Multicast datagrams; i.e.,
-+ that it implements the Multicast Extensions to
-+ OSPF.
-+
-+ Bit 3, if set, indicates that the associated
-+ area is an NSSA. These areas are capable of
-+ carrying type 7 external advertisements, which
-+ are translated into type 5 external advertise-
-+ ments at NSSA borders."
-+ REFERENCE
-+ "OSPF Version 2, Section 12.1.2 Options"
-+ DEFVAL { 0 }
-+ ::= { ospfNbrEntry 4 }
-+
-+
-+ ospfNbrPriority OBJECT-TYPE
-+ SYNTAX DesignatedRouterPriority
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The priority of this neighbor in the designat-
-+ ed router election algorithm. The value 0 sig-
-+ nifies that the neighbor is not eligible to be-
-+ come the designated router on this particular
-+ network."
-+ DEFVAL { 1 }
-+ ::= { ospfNbrEntry 5 }
-+
-+
-+ ospfNbrState OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ down (1),
-+ attempt (2),
-+ init (3),
-+ twoWay (4),
-+ exchangeStart (5),
-+ exchange (6),
-+ loading (7),
-+ full (8)
-+ }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The State of the relationship with this Neigh-
-+ bor."
-+ REFERENCE
-+ "OSPF Version 2, Section 10.1 Neighbor States"
-+ DEFVAL { down }
-+ ::= { ospfNbrEntry 6 }
-+
-+
-+ ospfNbrEvents OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of times this neighbor relationship
-+ has changed state, or an error has occurred."
-+ ::= { ospfNbrEntry 7 }
-+
-+
-+ ospfNbrLsRetransQLen OBJECT-TYPE
-+ SYNTAX Gauge32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The current length of the retransmission
-+ queue."
-+ ::= { ospfNbrEntry 8 }
-+
-+
-+ ospfNbmaNbrStatus OBJECT-TYPE
-+ SYNTAX RowStatus
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "This variable displays the status of the en-
-+ try. Setting it to 'invalid' has the effect of
-+ rendering it inoperative. The internal effect
-+ (row removal) is implementation dependent."
-+ ::= { ospfNbrEntry 9 }
-+
-+
-+ ospfNbmaNbrPermanence OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ dynamic (1), -- learned through protocol
-+ permanent (2) -- configured address
-+ }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "This variable displays the status of the en-
-+ try. 'dynamic' and 'permanent' refer to how
-+ the neighbor became known."
-+ DEFVAL { permanent }
-+ ::= { ospfNbrEntry 10 }
-+
-+
-+ ospfNbrHelloSuppressed OBJECT-TYPE
-+ SYNTAX TruthValue
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "Indicates whether Hellos are being suppressed
-+ to the neighbor"
-+ ::= { ospfNbrEntry 11 }
-+
-+
-+-- OSPF Virtual Neighbor Table
-+
-+-- This table describes all virtual neighbors.
-+-- Since Virtual Links are configured in the
-+-- virtual interface table, this table is read-only.
-+
-+ ospfVirtNbrTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF OspfVirtNbrEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A table of virtual neighbor information."
-+ REFERENCE
-+ "OSPF Version 2, Section 15 Virtual Links"
-+ ::= { ospf 11 }
-+
-+
-+ ospfVirtNbrEntry OBJECT-TYPE
-+ SYNTAX OspfVirtNbrEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "Virtual neighbor information."
-+ INDEX { ospfVirtNbrArea, ospfVirtNbrRtrId }
-+ ::= { ospfVirtNbrTable 1 }
-+
-+OspfVirtNbrEntry ::=
-+ SEQUENCE {
-+ ospfVirtNbrArea
-+ AreaID,
-+ ospfVirtNbrRtrId
-+ RouterID,
-+ ospfVirtNbrIpAddr
-+ IpAddress,
-+ ospfVirtNbrOptions
-+ Integer32,
-+ ospfVirtNbrState
-+ INTEGER,
-+ ospfVirtNbrEvents
-+ Counter32,
-+ ospfVirtNbrLsRetransQLen
-+ Gauge32,
-+ ospfVirtNbrHelloSuppressed
-+ TruthValue
-+ }
-+
-+ ospfVirtNbrArea OBJECT-TYPE
-+ SYNTAX AreaID
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The Transit Area Identifier."
-+ ::= { ospfVirtNbrEntry 1 }
-+
-+
-+ ospfVirtNbrRtrId OBJECT-TYPE
-+ SYNTAX RouterID
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "A 32-bit integer uniquely identifying the
-+ neighboring router in the Autonomous System."
-+ ::= { ospfVirtNbrEntry 2 }
-+
-+
-+ ospfVirtNbrIpAddr OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP address this Virtual Neighbor is us-
-+ ing."
-+ ::= { ospfVirtNbrEntry 3 }
-+
-+
-+ ospfVirtNbrOptions OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "A Bit Mask corresponding to the neighbor's op-
-+ tions field.
-+
-+ Bit 1, if set, indicates that the system will
-+ operate on Type of Service metrics other than
-+ TOS 0. If zero, the neighbor will ignore all
-+ metrics except the TOS 0 metric.
-+
-+ Bit 2, if set, indicates that the system is
-+ Network Multicast capable; ie, that it imple-
-+ ments OSPF Multicast Routing."
-+ ::= { ospfVirtNbrEntry 4 }
-+ ospfVirtNbrState OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ down (1),
-+ attempt (2),
-+ init (3),
-+ twoWay (4),
-+ exchangeStart (5),
-+ exchange (6),
-+ loading (7),
-+ full (8)
-+ }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The state of the Virtual Neighbor Relation-
-+ ship."
-+ ::= { ospfVirtNbrEntry 5 }
-+
-+
-+ ospfVirtNbrEvents OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of times this virtual link has
-+ changed its state, or an error has occurred."
-+ ::= { ospfVirtNbrEntry 6 }
-+
-+
-+ ospfVirtNbrLsRetransQLen OBJECT-TYPE
-+ SYNTAX Gauge32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The current length of the retransmission
-+ queue."
-+ ::= { ospfVirtNbrEntry 7 }
-+
-+
-+ ospfVirtNbrHelloSuppressed OBJECT-TYPE
-+ SYNTAX TruthValue
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "Indicates whether Hellos are being suppressed
-+ to the neighbor"
-+ ::= { ospfVirtNbrEntry 8 }
-+
-+-- OSPF Link State Database, External
-+
-+-- The Link State Database contains the Link State
-+-- Advertisements from throughout the areas that the
-+-- device is attached to.
-+
-+-- This table is identical to the OSPF LSDB Table in
-+-- format, but contains only External Link State
-+-- Advertisements. The purpose is to allow external
-+-- LSAs to be displayed once for the router rather
-+-- than once in each non-stub area.
-+
-+ ospfExtLsdbTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF OspfExtLsdbEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "The OSPF Process's Links State Database."
-+ REFERENCE
-+ "OSPF Version 2, Section 12 Link State Adver-
-+ tisements"
-+ ::= { ospf 12 }
-+
-+
-+ ospfExtLsdbEntry OBJECT-TYPE
-+ SYNTAX OspfExtLsdbEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A single Link State Advertisement."
-+ INDEX { ospfExtLsdbType, ospfExtLsdbLsid, ospfExtLsdbRouterId }
-+ ::= { ospfExtLsdbTable 1 }
-+
-+OspfExtLsdbEntry ::=
-+ SEQUENCE {
-+ ospfExtLsdbType
-+ INTEGER,
-+ ospfExtLsdbLsid
-+ IpAddress,
-+ ospfExtLsdbRouterId
-+ RouterID,
-+ ospfExtLsdbSequence
-+ Integer32,
-+ ospfExtLsdbAge
-+ Integer32,
-+ ospfExtLsdbChecksum
-+ Integer32,
-+ ospfExtLsdbAdvertisement
-+ OCTET STRING
-+ }
-+
-+ ospfExtLsdbType OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ asExternalLink (5)
-+ }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The type of the link state advertisement.
-+ Each link state type has a separate advertise-
-+ ment format."
-+ REFERENCE
-+ "OSPF Version 2, Appendix A.4.1 The Link State
-+ Advertisement header"
-+ ::= { ospfExtLsdbEntry 1 }
-+
-+
-+ ospfExtLsdbLsid OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The Link State ID is an LS Type Specific field
-+ containing either a Router ID or an IP Address;
-+ it identifies the piece of the routing domain
-+ that is being described by the advertisement."
-+ REFERENCE
-+ "OSPF Version 2, Section 12.1.4 Link State ID"
-+ ::= { ospfExtLsdbEntry 2 }
-+
-+
-+ ospfExtLsdbRouterId OBJECT-TYPE
-+ SYNTAX RouterID
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The 32 bit number that uniquely identifies the
-+ originating router in the Autonomous System."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.1 Global parameters"
-+ ::= { ospfExtLsdbEntry 3 }
-+
-+-- Note that the OSPF Sequence Number is a 32 bit signed
-+-- integer. It starts with the value '80000001'h,
-+-- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h
-+-- Thus, a typical sequence number will be very negative.
-+ ospfExtLsdbSequence OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The sequence number field is a signed 32-bit
-+ integer. It is used to detect old and dupli-
-+ cate link state advertisements. The space of
-+ sequence numbers is linearly ordered. The
-+ larger the sequence number the more recent the
-+ advertisement."
-+ REFERENCE
-+ "OSPF Version 2, Section 12.1.6 LS sequence
-+ number"
-+ ::= { ospfExtLsdbEntry 4 }
-+
-+
-+ ospfExtLsdbAge OBJECT-TYPE
-+ SYNTAX Integer32 -- Should be 0..MaxAge
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "This field is the age of the link state adver-
-+ tisement in seconds."
-+ REFERENCE
-+ "OSPF Version 2, Section 12.1.1 LS age"
-+ ::= { ospfExtLsdbEntry 5 }
-+
-+
-+ ospfExtLsdbChecksum OBJECT-TYPE
-+ SYNTAX Integer32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "This field is the checksum of the complete
-+ contents of the advertisement, excepting the
-+ age field. The age field is excepted so that
-+ an advertisement's age can be incremented
-+ without updating the checksum. The checksum
-+ used is the same that is used for ISO connec-
-+ tionless datagrams; it is commonly referred to
-+ as the Fletcher checksum."
-+ REFERENCE
-+ "OSPF Version 2, Section 12.1.7 LS checksum"
-+ ::= { ospfExtLsdbEntry 6 }
-+
-+
-+ ospfExtLsdbAdvertisement OBJECT-TYPE
-+ SYNTAX OCTET STRING (SIZE(36))
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The entire Link State Advertisement, including
-+ its header."
-+ REFERENCE
-+ "OSPF Version 2, Section 12 Link State Adver-
-+ tisements"
-+ ::= { ospfExtLsdbEntry 7 }
-+
-+
-+-- OSPF Use of the CIDR Route Table
-+
-+ospfRouteGroup OBJECT IDENTIFIER ::= { ospf 13 }
-+
-+-- The IP Forwarding Table defines a number of objects for use by
-+-- the routing protocol to externalize its information. Most of
-+-- the variables (ipForwardDest, ipForwardMask, ipForwardPolicy,
-+-- ipForwardNextHop, ipForwardIfIndex, ipForwardType,
-+-- ipForwardProto, ipForwardAge, and ipForwardNextHopAS) are
-+-- defined there.
-+
-+-- Those that leave some discretion are defined here.
-+
-+-- ipCidrRouteProto is, of course, ospf (13).
-+
-+-- ipCidrRouteAge is the time since the route was first calculated,
-+-- as opposed to the time since the last SPF run.
-+
-+-- ipCidrRouteInfo is an OBJECT IDENTIFIER for use by the routing
-+-- protocol. The following values shall be found there depending
-+-- on the way the route was calculated.
-+
-+ospfIntraArea OBJECT IDENTIFIER ::= { ospfRouteGroup 1 }
-+ospfInterArea OBJECT IDENTIFIER ::= { ospfRouteGroup 2 }
-+ospfExternalType1 OBJECT IDENTIFIER ::= { ospfRouteGroup 3 }
-+ospfExternalType2 OBJECT IDENTIFIER ::= { ospfRouteGroup 4 }
-+
-+-- ipCidrRouteMetric1 is, by definition, the primary routing
-+-- metric. Therefore, it should be the metric that route
-+-- selection is based on. For intra-area and inter-area routes,
-+-- it is an OSPF metric. For External Type 1 (comparable value)
-+-- routes, it is an OSPF metric plus the External Metric. For
-+-- external Type 2 (non-comparable value) routes, it is the
-+-- external metric.
-+
-+-- ipCidrRouteMetric2 is, by definition, a secondary routing
-+-- metric. Therefore, it should be the metric that breaks a tie
-+-- among routes having equal metric1 values and the same
-+-- calculation rule. For intra-area, inter-area routes, and
-+-- External Type 1 (comparable value) routes, it is unused. For
-+-- external Type 2 (non-comparable value) routes, it is the metric
-+-- to the AS border router.
-+
-+-- ipCidrRouteMetric3, ipCidrRouteMetric4, and ipCidrRouteMetric5 are
-+-- unused.
-+
-+--
-+-- The OSPF Area Aggregate Table
-+--
-+-- This table replaces the OSPF Area Summary Table, being an
-+-- extension of that for CIDR routers.
-+
-+ ospfAreaAggregateTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF OspfAreaAggregateEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A range of IP addresses specified by an IP
-+ address/IP network mask pair. For example,
-+ class B address range of X.X.X.X with a network
-+ mask of 255.255.0.0 includes all IP addresses
-+ from X.X.0.0 to X.X.255.255. Note that if
-+ ranges are configured such that one range sub-
-+ sumes another range (e.g., 10.0.0.0 mask
-+ 255.0.0.0 and 10.1.0.0 mask 255.255.0.0), the
-+ most specific match is the preferred one."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ ::= { ospf 14 }
-+
-+
-+ ospfAreaAggregateEntry OBJECT-TYPE
-+ SYNTAX OspfAreaAggregateEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A range of IP addresses specified by an IP
-+ address/IP network mask pair. For example,
-+ class B address range of X.X.X.X with a network
-+ mask of 255.255.0.0 includes all IP addresses
-+ from X.X.0.0 to X.X.255.255. Note that if
-+ ranges are range configured such that one range
-+ subsumes another range (e.g., 10.0.0.0 mask
-+ 255.0.0.0 and 10.1.0.0 mask 255.255.0.0), the
-+ most specific match is the preferred one."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ INDEX { ospfAreaAggregateAreaID, ospfAreaAggregateLsdbType,
-+ ospfAreaAggregateNet, ospfAreaAggregateMask }
-+ ::= { ospfAreaAggregateTable 1 }
-+
-+
-+OspfAreaAggregateEntry ::=
-+ SEQUENCE {
-+ ospfAreaAggregateAreaID
-+ AreaID,
-+ ospfAreaAggregateLsdbType
-+ INTEGER,
-+ ospfAreaAggregateNet
-+ IpAddress,
-+ ospfAreaAggregateMask
-+ IpAddress,
-+ ospfAreaAggregateStatus
-+ RowStatus,
-+ ospfAreaAggregateEffect
-+ INTEGER
-+ }
-+
-+ ospfAreaAggregateAreaID OBJECT-TYPE
-+ SYNTAX AreaID
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The Area the Address Aggregate is to be found
-+ within."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ ::= { ospfAreaAggregateEntry 1 }
-+
-+
-+ ospfAreaAggregateLsdbType OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ summaryLink (3),
-+ nssaExternalLink (7)
-+ }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The type of the Address Aggregate. This field
-+ specifies the Lsdb type that this Address Ag-
-+ gregate applies to."
-+ REFERENCE
-+ "OSPF Version 2, Appendix A.4.1 The Link State
-+ Advertisement header"
-+ ::= { ospfAreaAggregateEntry 2 }
-+
-+
-+ ospfAreaAggregateNet OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP Address of the Net or Subnet indicated
-+ by the range."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ ::= { ospfAreaAggregateEntry 3 }
-+
-+
-+ ospfAreaAggregateMask OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The Subnet Mask that pertains to the Net or
-+ Subnet."
-+ REFERENCE
-+ "OSPF Version 2, Appendix C.2 Area parameters"
-+ ::= { ospfAreaAggregateEntry 4 }
-+
-+
-+ ospfAreaAggregateStatus OBJECT-TYPE
-+ SYNTAX RowStatus
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "This variable displays the status of the en-
-+ try. Setting it to 'invalid' has the effect of
-+ rendering it inoperative. The internal effect
-+ (row removal) is implementation dependent."
-+ ::= { ospfAreaAggregateEntry 5 }
-+
-+
-+ ospfAreaAggregateEffect OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ advertiseMatching (1),
-+ doNotAdvertiseMatching (2)
-+ }
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "Subnets subsumed by ranges either trigger the
-+ advertisement of the indicated aggregate (ad-
-+ vertiseMatching), or result in the subnet's not
-+ being advertised at all outside the area."
-+ DEFVAL { advertiseMatching }
-+ ::= { ospfAreaAggregateEntry 6 }
-+
-+
-+-- conformance information
-+
-+ospfConformance OBJECT IDENTIFIER ::= { ospf 15 }
-+
-+ospfGroups OBJECT IDENTIFIER ::= { ospfConformance 1 }
-+ospfCompliances OBJECT IDENTIFIER ::= { ospfConformance 2 }
-+
-+-- compliance statements
-+
-+ ospfCompliance MODULE-COMPLIANCE
-+ STATUS current
-+ DESCRIPTION
-+ "The compliance statement "
-+ MODULE -- this module
-+ MANDATORY-GROUPS {
-+ ospfBasicGroup,
-+ ospfAreaGroup,
-+ ospfStubAreaGroup,
-+ ospfIfGroup,
-+ ospfIfMetricGroup,
-+ ospfVirtIfGroup,
-+ ospfNbrGroup,
-+ ospfVirtNbrGroup,
-+ ospfAreaAggregateGroup
-+ }
-+ ::= { ospfCompliances 1 }
-+
-+
-+-- units of conformance
-+
-+ ospfBasicGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfRouterId,
-+ ospfAdminStat,
-+ ospfVersionNumber,
-+ ospfAreaBdrRtrStatus,
-+ ospfASBdrRtrStatus,
-+ ospfExternLsaCount,
-+ ospfExternLsaCksumSum,
-+ ospfTOSSupport,
-+ ospfOriginateNewLsas,
-+ ospfRxNewLsas,
-+ ospfExtLsdbLimit,
-+ ospfMulticastExtensions,
-+ ospfExitOverflowInterval,
-+ ospfDemandExtensions
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required for OSPF systems."
-+ ::= { ospfGroups 1 }
-+
-+
-+ ospfAreaGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfAreaId,
-+ ospfImportAsExtern,
-+ ospfSpfRuns,
-+ ospfAreaBdrRtrCount,
-+ ospfAsBdrRtrCount,
-+ ospfAreaLsaCount,
-+ ospfAreaLsaCksumSum,
-+ ospfAreaSummary,
-+ ospfAreaStatus
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required for OSPF systems
-+ supporting areas."
-+ ::= { ospfGroups 2 }
-+
-+
-+ ospfStubAreaGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfStubAreaId,
-+ ospfStubTOS,
-+ ospfStubMetric,
-+ ospfStubStatus,
-+ ospfStubMetricType
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required for OSPF systems
-+ supporting stub areas."
-+ ::= { ospfGroups 3 }
-+
-+
-+ ospfLsdbGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfLsdbAreaId,
-+ ospfLsdbType,
-+ ospfLsdbLsid,
-+ ospfLsdbRouterId,
-+ ospfLsdbSequence,
-+ ospfLsdbAge,
-+ ospfLsdbChecksum,
-+ ospfLsdbAdvertisement
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required for OSPF systems
-+ that display their link state database."
-+ ::= { ospfGroups 4 }
-+
-+
-+ ospfAreaRangeGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfAreaRangeAreaId,
-+ ospfAreaRangeNet,
-+ ospfAreaRangeMask,
-+ ospfAreaRangeStatus,
-+ ospfAreaRangeEffect
-+ }
-+ STATUS obsolete
-+ DESCRIPTION
-+ "These objects are required for non-CIDR OSPF
-+ systems that support multiple areas."
-+ ::= { ospfGroups 5 }
-+
-+
-+ ospfHostGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfHostIpAddress,
-+ ospfHostTOS,
-+ ospfHostMetric,
-+ ospfHostStatus,
-+ ospfHostAreaID
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required for OSPF systems
-+ that support attached hosts."
-+ ::= { ospfGroups 6 }
-+
-+
-+ ospfIfGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfIfIpAddress,
-+ ospfAddressLessIf,
-+ ospfIfAreaId,
-+ ospfIfType,
-+ ospfIfAdminStat,
-+ ospfIfRtrPriority,
-+ ospfIfTransitDelay,
-+ ospfIfRetransInterval,
-+ ospfIfHelloInterval,
-+ ospfIfRtrDeadInterval,
-+ ospfIfPollInterval,
-+ ospfIfState,
-+ ospfIfDesignatedRouter,
-+ ospfIfBackupDesignatedRouter,
-+ ospfIfEvents,
-+ ospfIfAuthType,
-+ ospfIfAuthKey,
-+ ospfIfStatus,
-+ ospfIfMulticastForwarding,
-+ ospfIfDemand
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required for OSPF systems."
-+ ::= { ospfGroups 7 }
-+
-+
-+ ospfIfMetricGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfIfMetricIpAddress,
-+ ospfIfMetricAddressLessIf,
-+ ospfIfMetricTOS,
-+ ospfIfMetricValue,
-+ ospfIfMetricStatus
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required for OSPF systems."
-+ ::= { ospfGroups 8 }
-+
-+
-+ ospfVirtIfGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfVirtIfAreaId,
-+ ospfVirtIfNeighbor,
-+ ospfVirtIfTransitDelay,
-+ ospfVirtIfRetransInterval,
-+ ospfVirtIfHelloInterval,
-+ ospfVirtIfRtrDeadInterval,
-+ ospfVirtIfState,
-+ ospfVirtIfEvents,
-+ ospfVirtIfAuthType,
-+ ospfVirtIfAuthKey,
-+ ospfVirtIfStatus
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required for OSPF systems."
-+ ::= { ospfGroups 9 }
-+
-+
-+ ospfNbrGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfNbrIpAddr,
-+ ospfNbrAddressLessIndex,
-+ ospfNbrRtrId,
-+ ospfNbrOptions,
-+ ospfNbrPriority,
-+ ospfNbrState,
-+ ospfNbrEvents,
-+ ospfNbrLsRetransQLen,
-+ ospfNbmaNbrStatus,
-+ ospfNbmaNbrPermanence,
-+ ospfNbrHelloSuppressed
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required for OSPF systems."
-+ ::= { ospfGroups 10 }
-+
-+
-+ ospfVirtNbrGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfVirtNbrArea,
-+ ospfVirtNbrRtrId,
-+ ospfVirtNbrIpAddr,
-+ ospfVirtNbrOptions,
-+ ospfVirtNbrState,
-+ ospfVirtNbrEvents,
-+ ospfVirtNbrLsRetransQLen,
-+ ospfVirtNbrHelloSuppressed
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required for OSPF systems."
-+ ::= { ospfGroups 11 }
-+
-+
-+ ospfExtLsdbGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfExtLsdbType,
-+ ospfExtLsdbLsid,
-+ ospfExtLsdbRouterId,
-+ ospfExtLsdbSequence,
-+ ospfExtLsdbAge,
-+ ospfExtLsdbChecksum,
-+ ospfExtLsdbAdvertisement
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required for OSPF systems
-+ that display their link state database."
-+ ::= { ospfGroups 12 }
-+
-+
-+ ospfAreaAggregateGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfAreaAggregateAreaID,
-+ ospfAreaAggregateLsdbType,
-+ ospfAreaAggregateNet,
-+ ospfAreaAggregateMask,
-+ ospfAreaAggregateStatus,
-+ ospfAreaAggregateEffect
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required for OSPF systems."
-+ ::= { ospfGroups 13 }
-+
-+END
-diff -ruN net-snmp-5.1.2-orig/mibs/OSPF-TRAP-MIB.txt net-snmp-5.1.2-5/mibs/OSPF-TRAP-MIB.txt
---- net-snmp-5.1.2-orig/mibs/OSPF-TRAP-MIB.txt 1970-01-01 01:00:00.000000000 +0100
-+++ net-snmp-5.1.2-5/mibs/OSPF-TRAP-MIB.txt 2005-03-13 16:17:21.000000000 +0100
-@@ -0,0 +1,443 @@
-+OSPF-TRAP-MIB DEFINITIONS ::= BEGIN
-+
-+ IMPORTS
-+ MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, IpAddress
-+ FROM SNMPv2-SMI
-+ MODULE-COMPLIANCE, OBJECT-GROUP
-+ FROM SNMPv2-CONF
-+ ospfRouterId, ospfIfIpAddress, ospfAddressLessIf, ospfIfState,
-+ ospfVirtIfAreaId, ospfVirtIfNeighbor, ospfVirtIfState,
-+ ospfNbrIpAddr, ospfNbrAddressLessIndex, ospfNbrRtrId,
-+ ospfNbrState, ospfVirtNbrArea, ospfVirtNbrRtrId, ospfVirtNbrState,
-+ ospfLsdbType, ospfLsdbLsid, ospfLsdbRouterId, ospfLsdbAreaId,
-+ ospfExtLsdbLimit, ospf
-+ FROM OSPF-MIB;
-+
-+ ospfTrap MODULE-IDENTITY
-+ LAST-UPDATED "9501201225Z" -- Fri Jan 20 12:25:50 PST 1995
-+ ORGANIZATION "IETF OSPF Working Group"
-+ CONTACT-INFO
-+ " Fred Baker
-+ Postal: Cisco Systems
-+ 519 Lado Drive
-+ Santa Barbara, California 93111
-+ Tel: +1 805 681 0115
-+ E-Mail: fred@cisco.com
-+
-+ Rob Coltun
-+ Postal: RainbowBridge Communications
-+ Tel: (301) 340-9416
-+ E-Mail: rcoltun@rainbow-bridge.com"
-+ DESCRIPTION
-+ "The MIB module to describe traps for the OSPF
-+ Version 2 Protocol."
-+ ::= { ospf 16 }
-+
-+-- Trap Support Objects
-+
-+-- The following are support objects for the OSPF traps.
-+
-+ospfTrapControl OBJECT IDENTIFIER ::= { ospfTrap 1 }
-+ospfTraps OBJECT IDENTIFIER ::= { ospfTrap 2 }
-+
-+ ospfSetTrap OBJECT-TYPE
-+ SYNTAX OCTET STRING (SIZE(4))
-+ MAX-ACCESS read-write
-+ STATUS current
-+ DESCRIPTION
-+ "A four-octet string serving as a bit map for
-+ the trap events defined by the OSPF traps. This
-+ object is used to enable and disable specific
-+ OSPF traps where a 1 in the bit field
-+ represents enabled. The right-most bit (least
-+ significant) represents trap 0."
-+ ::= { ospfTrapControl 1 }
-+
-+
-+ ospfConfigErrorType OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ badVersion (1),
-+ areaMismatch (2),
-+ unknownNbmaNbr (3), -- Router is Dr eligible
-+ unknownVirtualNbr (4),
-+ authTypeMismatch(5),
-+ authFailure (6),
-+ netMaskMismatch (7),
-+ helloIntervalMismatch (8),
-+ deadIntervalMismatch (9),
-+ optionMismatch (10) }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "Potential types of configuration conflicts.
-+ Used by the ospfConfigError and ospfConfigVir-
-+ tError traps."
-+ ::= { ospfTrapControl 2 }
-+
-+
-+ ospfPacketType OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ hello (1),
-+ dbDescript (2),
-+ lsReq (3),
-+ lsUpdate (4),
-+ lsAck (5) }
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "OSPF packet types."
-+ ::= { ospfTrapControl 3 }
-+
-+
-+ ospfPacketSrc OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP address of an inbound packet that can-
-+ not be identified by a neighbor instance."
-+ ::= { ospfTrapControl 4 }
-+
-+
-+-- Traps
-+
-+
-+ ospfIfStateChange NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfIfIpAddress,
-+ ospfAddressLessIf,
-+ ospfIfState -- The new state
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfIfStateChange trap signifies that there
-+ has been a change in the state of a non-virtual
-+ OSPF interface. This trap should be generated
-+ when the interface state regresses (e.g., goes
-+ from Dr to Down) or progresses to a terminal
-+ state (i.e., Point-to-Point, DR Other, Dr, or
-+ Backup)."
-+ ::= { ospfTraps 16 }
-+
-+
-+ ospfVirtIfStateChange NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfVirtIfAreaId,
-+ ospfVirtIfNeighbor,
-+ ospfVirtIfState -- The new state
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfIfStateChange trap signifies that there
-+ has been a change in the state of an OSPF vir-
-+ tual interface.
-+ This trap should be generated when the inter-
-+ face state regresses (e.g., goes from Point-
-+ to-Point to Down) or progresses to a terminal
-+ state (i.e., Point-to-Point)."
-+ ::= { ospfTraps 1 }
-+
-+
-+ ospfNbrStateChange NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfNbrIpAddr,
-+ ospfNbrAddressLessIndex,
-+ ospfNbrRtrId,
-+ ospfNbrState -- The new state
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfNbrStateChange trap signifies that
-+ there has been a change in the state of a non-
-+ virtual OSPF neighbor. This trap should be
-+ generated when the neighbor state regresses
-+ (e.g., goes from Attempt or Full to 1-Way or
-+ Down) or progresses to a terminal state (e.g.,
-+ 2-Way or Full). When an neighbor transitions
-+ from or to Full on non-broadcast multi-access
-+ and broadcast networks, the trap should be gen-
-+ erated by the designated router. A designated
-+ router transitioning to Down will be noted by
-+ ospfIfStateChange."
-+ ::= { ospfTraps 2 }
-+
-+
-+ ospfVirtNbrStateChange NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfVirtNbrArea,
-+ ospfVirtNbrRtrId,
-+ ospfVirtNbrState -- The new state
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfIfStateChange trap signifies that there
-+ has been a change in the state of an OSPF vir-
-+ tual neighbor. This trap should be generated
-+ when the neighbor state regresses (e.g., goes
-+ from Attempt or Full to 1-Way or Down) or
-+ progresses to a terminal state (e.g., Full)."
-+ ::= { ospfTraps 3 }
-+ ospfIfConfigError NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfIfIpAddress,
-+ ospfAddressLessIf,
-+ ospfPacketSrc, -- The source IP address
-+ ospfConfigErrorType, -- Type of error
-+ ospfPacketType
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfIfConfigError trap signifies that a
-+ packet has been received on a non-virtual in-
-+ terface from a router whose configuration
-+ parameters conflict with this router's confi-
-+ guration parameters. Note that the event op-
-+ tionMismatch should cause a trap only if it
-+ prevents an adjacency from forming."
-+ ::= { ospfTraps 4 }
-+
-+
-+ ospfVirtIfConfigError NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfVirtIfAreaId,
-+ ospfVirtIfNeighbor,
-+ ospfConfigErrorType, -- Type of error
-+ ospfPacketType
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfConfigError trap signifies that a pack-
-+ et has been received on a virtual interface
-+ from a router whose configuration parameters
-+ conflict with this router's configuration
-+ parameters. Note that the event optionMismatch
-+ should cause a trap only if it prevents an ad-
-+ jacency from forming."
-+ ::= { ospfTraps 5 }
-+
-+
-+ ospfIfAuthFailure NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfIfIpAddress,
-+ ospfAddressLessIf,
-+ ospfPacketSrc, -- The source IP address
-+ ospfConfigErrorType, -- authTypeMismatch or
-+ -- authFailure
-+ ospfPacketType
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfIfAuthFailure trap signifies that a
-+ packet has been received on a non-virtual in-
-+ terface from a router whose authentication key
-+ or authentication type conflicts with this
-+ router's authentication key or authentication
-+ type."
-+ ::= { ospfTraps 6 }
-+
-+
-+ ospfVirtIfAuthFailure NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfVirtIfAreaId,
-+ ospfVirtIfNeighbor,
-+ ospfConfigErrorType, -- authTypeMismatch or
-+ -- authFailure
-+ ospfPacketType
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfVirtIfAuthFailure trap signifies that a
-+ packet has been received on a virtual interface
-+ from a router whose authentication key or au-
-+ thentication type conflicts with this router's
-+ authentication key or authentication type."
-+ ::= { ospfTraps 7 }
-+
-+
-+ ospfIfRxBadPacket NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfIfIpAddress,
-+ ospfAddressLessIf,
-+ ospfPacketSrc, -- The source IP address
-+ ospfPacketType
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfIfRxBadPacket trap signifies that an
-+ OSPF packet has been received on a non-virtual
-+ interface that cannot be parsed."
-+ ::= { ospfTraps 8 }
-+
-+ ospfVirtIfRxBadPacket NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfVirtIfAreaId,
-+ ospfVirtIfNeighbor,
-+ ospfPacketType
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfRxBadPacket trap signifies that an OSPF
-+ packet has been received on a virtual interface
-+ that cannot be parsed."
-+ ::= { ospfTraps 9 }
-+
-+
-+ ospfTxRetransmit NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfIfIpAddress,
-+ ospfAddressLessIf,
-+ ospfNbrRtrId, -- Destination
-+ ospfPacketType,
-+ ospfLsdbType,
-+ ospfLsdbLsid,
-+ ospfLsdbRouterId
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfTxRetransmit trap signifies than an
-+ OSPF packet has been retransmitted on a non-
-+ virtual interface. All packets that may be re-
-+ transmitted are associated with an LSDB entry.
-+ The LS type, LS ID, and Router ID are used to
-+ identify the LSDB entry."
-+ ::= { ospfTraps 10 }
-+
-+
-+ ospfVirtIfTxRetransmit NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfVirtIfAreaId,
-+ ospfVirtIfNeighbor,
-+ ospfPacketType,
-+ ospfLsdbType,
-+ ospfLsdbLsid,
-+ ospfLsdbRouterId
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfTxRetransmit trap signifies than an
-+ OSPF packet has been retransmitted on a virtual
-+ interface. All packets that may be retransmit-
-+ ted are associated with an LSDB entry. The LS
-+ type, LS ID, and Router ID are used to identify
-+ the LSDB entry."
-+ ::= { ospfTraps 11 }
-+
-+
-+ ospfOriginateLsa NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfLsdbAreaId, -- 0.0.0.0 for AS Externals
-+ ospfLsdbType,
-+ ospfLsdbLsid,
-+ ospfLsdbRouterId
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfOriginateLsa trap signifies that a new
-+ LSA has been originated by this router. This
-+ trap should not be invoked for simple refreshes
-+ of LSAs (which happesn every 30 minutes), but
-+ instead will only be invoked when an LSA is
-+ (re)originated due to a topology change. Addi-
-+ tionally, this trap does not include LSAs that
-+ are being flushed because they have reached
-+ MaxAge."
-+ ::= { ospfTraps 12 }
-+
-+
-+ ospfMaxAgeLsa NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfLsdbAreaId, -- 0.0.0.0 for AS Externals
-+ ospfLsdbType,
-+ ospfLsdbLsid,
-+ ospfLsdbRouterId
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfMaxAgeLsa trap signifies that one of
-+ the LSA in the router's link-state database has
-+ aged to MaxAge."
-+ ::= { ospfTraps 13 }
-+
-+
-+ ospfLsdbOverflow NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfExtLsdbLimit
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfLsdbOverflow trap signifies that the
-+ number of LSAs in the router's link-state data-
-+ base has exceeded ospfExtLsdbLimit."
-+ ::= { ospfTraps 14 }
-+
-+
-+ ospfLsdbApproachingOverflow NOTIFICATION-TYPE
-+ OBJECTS {
-+ ospfRouterId, -- The originator of the trap
-+ ospfExtLsdbLimit
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "An ospfLsdbApproachingOverflow trap signifies
-+ that the number of LSAs in the router's link-
-+ state database has exceeded ninety percent of
-+ ospfExtLsdbLimit."
-+ ::= { ospfTraps 15 }
-+
-+
-+-- conformance information
-+
-+ospfTrapConformance OBJECT IDENTIFIER ::= { ospfTrap 3 }
-+
-+ospfTrapGroups OBJECT IDENTIFIER ::= { ospfTrapConformance 1 }
-+ospfTrapCompliances OBJECT IDENTIFIER ::= { ospfTrapConformance 2 }
-+
-+-- compliance statements
-+
-+ ospfTrapCompliance MODULE-COMPLIANCE
-+ STATUS current
-+ DESCRIPTION
-+ "The compliance statement "
-+ MODULE -- this module
-+ MANDATORY-GROUPS { ospfTrapControlGroup }
-+
-+
-+ GROUP ospfTrapControlGroup
-+ DESCRIPTION
-+ "This group is optional but recommended for all
-+ OSPF systems"
-+ ::= { ospfTrapCompliances 1 }
-+
-+
-+-- units of conformance
-+
-+ ospfTrapControlGroup OBJECT-GROUP
-+ OBJECTS {
-+ ospfSetTrap,
-+ ospfConfigErrorType,
-+ ospfPacketType,
-+ ospfPacketSrc
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "These objects are required to control traps
-+ from OSPF systems."
-+ ::= { ospfTrapGroups 1 }
-+
-+
-+END
-diff -ruN net-snmp-5.1.2-orig/mibs/RIPv2-MIB.txt net-snmp-5.1.2-5/mibs/RIPv2-MIB.txt
---- net-snmp-5.1.2-orig/mibs/RIPv2-MIB.txt 1970-01-01 01:00:00.000000000 +0100
-+++ net-snmp-5.1.2-5/mibs/RIPv2-MIB.txt 2005-03-13 16:17:21.000000000 +0100
-@@ -0,0 +1,530 @@
-+ RIPv2-MIB DEFINITIONS ::= BEGIN
-+
-+ IMPORTS
-+ MODULE-IDENTITY, OBJECT-TYPE, Counter32,
-+ TimeTicks, IpAddress FROM SNMPv2-SMI
-+ TEXTUAL-CONVENTION, RowStatus FROM SNMPv2-TC
-+ MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
-+ mib-2 FROM RFC1213-MIB;
-+
-+ -- This MIB module uses the extended OBJECT-TYPE macro as
-+ -- defined in [9].
-+
-+ rip2 MODULE-IDENTITY
-+ LAST-UPDATED "9407272253Z" -- Wed Jul 27 22:53:04 PDT 1994
-+ ORGANIZATION "IETF RIP-II Working Group"
-+ CONTACT-INFO
-+ " Fred Baker
-+ Postal: Cisco Systems
-+ 519 Lado Drive
-+ Santa Barbara, California 93111
-+ Tel: +1 805 681 0115
-+ E-Mail: fbaker@cisco.com
-+
-+ Postal: Gary Malkin
-+ Xylogics, Inc.
-+ 53 Third Avenue
-+ Burlington, MA 01803
-+
-+ Phone: (617) 272-8140
-+ EMail: gmalkin@Xylogics.COM"
-+ DESCRIPTION
-+ "The MIB module to describe the RIP2 Version 2 Protocol"
-+ ::= { mib-2 23 }
-+
-+ -- RIP-2 Management Information Base
-+
-+ -- the RouteTag type represents the contents of the
-+ -- Route Domain field in the packet header or route entry.
-+ -- The use of the Route Domain is deprecated.
-+
-+ RouteTag ::= TEXTUAL-CONVENTION
-+ STATUS current
-+ DESCRIPTION
-+ "the RouteTag type represents the contents of the Route Domain
-+ field in the packet header or route entry"
-+ SYNTAX OCTET STRING (SIZE (2))
-+
-+--4.1 Global Counters
-+
-+-- The RIP-2 Globals Group.
-+-- Implementation of this group is mandatory for systems
-+-- which implement RIP-2.
-+
-+-- These counters are intended to facilitate debugging quickly
-+-- changing routes or failing neighbors
-+
-+rip2Globals OBJECT IDENTIFIER ::= { rip2 1 }
-+
-+ rip2GlobalRouteChanges OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of route changes made to the IP Route
-+ Database by RIP. This does not include the refresh
-+ of a route's age."
-+ ::= { rip2Globals 1 }
-+
-+ rip2GlobalQueries OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of responses sent to RIP queries
-+ from other systems."
-+ ::= { rip2Globals 2 }
-+
-+--4.2 RIP Interface Tables
-+
-+-- RIP Interfaces Groups
-+-- Implementation of these Groups is mandatory for systems
-+-- which implement RIP-2.
-+
-+-- The RIP Interface Status Table.
-+
-+ rip2IfStatTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF Rip2IfStatEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A list of subnets which require separate
-+ status monitoring in RIP."
-+ ::= { rip2 2 }
-+
-+ rip2IfStatEntry OBJECT-TYPE
-+ SYNTAX Rip2IfStatEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A Single Routing Domain in a single Subnet."
-+ INDEX { rip2IfStatAddress }
-+ ::= { rip2IfStatTable 1 }
-+
-+ Rip2IfStatEntry ::=
-+ SEQUENCE {
-+ rip2IfStatAddress
-+ IpAddress,
-+ rip2IfStatRcvBadPackets
-+ Counter32,
-+ rip2IfStatRcvBadRoutes
-+ Counter32,
-+ rip2IfStatSentUpdates
-+ Counter32,
-+ rip2IfStatStatus
-+ RowStatus
-+ }
-+
-+ rip2IfStatAddress OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP Address of this system on the indicated
-+ subnet. For unnumbered interfaces, the value 0.0.0.N,
-+ where the least significant 24 bits (N) is the ifIndex
-+ for the IP Interface in network byte order."
-+ ::= { rip2IfStatEntry 1 }
-+
-+ rip2IfStatRcvBadPackets OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of RIP response packets received by
-+ the RIP process which were subsequently discarded
-+ for any reason (e.g. a version 0 packet, or an
-+ unknown command type)."
-+ ::= { rip2IfStatEntry 2 }
-+
-+ rip2IfStatRcvBadRoutes OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of routes, in valid RIP packets,
-+ which were ignored for any reason (e.g. unknown
-+ address family, or invalid metric)."
-+ ::= { rip2IfStatEntry 3 }
-+
-+ rip2IfStatSentUpdates OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of triggered RIP updates actually
-+ sent on this interface. This explicitly does
-+ NOT include full updates sent containing new
-+ information."
-+ ::= { rip2IfStatEntry 4 }
-+
-+ rip2IfStatStatus OBJECT-TYPE
-+ SYNTAX RowStatus
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "Writing invalid has the effect of deleting
-+ this interface."
-+ ::= { rip2IfStatEntry 5 }
-+
-+-- The RIP Interface Configuration Table.
-+
-+ rip2IfConfTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF Rip2IfConfEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A list of subnets which require separate
-+ configuration in RIP."
-+ ::= { rip2 3 }
-+
-+ rip2IfConfEntry OBJECT-TYPE
-+ SYNTAX Rip2IfConfEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A Single Routing Domain in a single Subnet."
-+ INDEX { rip2IfConfAddress }
-+ ::= { rip2IfConfTable 1 }
-+
-+ Rip2IfConfEntry ::=
-+ SEQUENCE {
-+ rip2IfConfAddress
-+ IpAddress,
-+ rip2IfConfDomain
-+ RouteTag,
-+ rip2IfConfAuthType
-+ INTEGER,
-+ rip2IfConfAuthKey
-+ OCTET STRING (SIZE(0..16)),
-+ rip2IfConfSend
-+ INTEGER,
-+ rip2IfConfReceive
-+ INTEGER,
-+ rip2IfConfDefaultMetric
-+ INTEGER,
-+ rip2IfConfStatus
-+ RowStatus,
-+ rip2IfConfSrcAddress
-+ IpAddress
-+ }
-+
-+ rip2IfConfAddress OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP Address of this system on the indicated
-+ subnet. For unnumbered interfaces, the value 0.0.0.N,
-+ where the least significant 24 bits (N) is the ifIndex
-+ for the IP Interface in network byte order."
-+ ::= { rip2IfConfEntry 1 }
-+
-+ rip2IfConfDomain OBJECT-TYPE
-+ SYNTAX RouteTag
-+ MAX-ACCESS read-create
-+ STATUS obsolete
-+ DESCRIPTION
-+ "Value inserted into the Routing Domain field
-+ of all RIP packets sent on this interface."
-+ DEFVAL { '0000'h }
-+ ::= { rip2IfConfEntry 2 }
-+
-+ rip2IfConfAuthType OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ noAuthentication (1),
-+ simplePassword (2),
-+ md5 (3)
-+ }
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The type of Authentication used on this
-+ interface."
-+ DEFVAL { noAuthentication }
-+ ::= { rip2IfConfEntry 3 }
-+
-+ rip2IfConfAuthKey OBJECT-TYPE
-+ SYNTAX OCTET STRING (SIZE(0..16))
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The value to be used as the Authentication Key
-+ whenever the corresponding instance of
-+ rip2IfConfAuthType has a value other than
-+ noAuthentication. A modification of the corresponding
-+ instance of rip2IfConfAuthType does not modify
-+ the rip2IfConfAuthKey value. If a string shorter
-+ than 16 octets is supplied, it will be left-
-+ justified and padded to 16 octets, on the right,
-+ with nulls (0x00).
-+
-+ Reading this object always results in an OCTET
-+ STRING of length zero; authentication may not
-+ be bypassed by reading the MIB object."
-+ DEFVAL { ''h }
-+ ::= { rip2IfConfEntry 4 }
-+
-+ rip2IfConfSend OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ doNotSend (1),
-+ ripVersion1 (2),
-+ rip1Compatible (3),
-+ ripVersion2 (4),
-+ ripV1Demand (5),
-+ ripV2Demand (6)
-+ }
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "What the router sends on this interface.
-+ ripVersion1 implies sending RIP updates compliant
-+ with RFC 1058. rip1Compatible implies
-+ broadcasting RIP-2 updates using RFC 1058 route
-+ subsumption rules. ripVersion2 implies
-+ multicasting RIP-2 updates. ripV1Demand indicates
-+ the use of Demand RIP on a WAN interface under RIP
-+ Version 1 rules. ripV2Demand indicates the use of
-+ Demand RIP on a WAN interface under Version 2 rules."
-+ DEFVAL { rip1Compatible }
-+ ::= { rip2IfConfEntry 5 }
-+
-+ rip2IfConfReceive OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ rip1 (1),
-+ rip2 (2),
-+ rip1OrRip2 (3),
-+ doNotRecieve (4)
-+ }
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "This indicates which version of RIP updates
-+ are to be accepted. Note that rip2 and
-+ rip1OrRip2 implies reception of multicast
-+ packets."
-+ DEFVAL { rip1OrRip2 }
-+ ::= { rip2IfConfEntry 6 }
-+
-+ rip2IfConfDefaultMetric OBJECT-TYPE
-+ SYNTAX INTEGER ( 0..15 )
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "This variable indicates the metric that is to
-+ be used for the default route entry in RIP updates
-+ originated on this interface. A value of zero
-+ indicates that no default route should be
-+ originated; in this case, a default route via
-+ another router may be propagated."
-+ ::= { rip2IfConfEntry 7 }
-+
-+ rip2IfConfStatus OBJECT-TYPE
-+ SYNTAX RowStatus
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "Writing invalid has the effect of deleting
-+ this interface."
-+ ::= { rip2IfConfEntry 8 }
-+
-+ rip2IfConfSrcAddress OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-create
-+ STATUS current
-+ DESCRIPTION
-+ "The IP Address this system will use as a source
-+ address on this interface. If it is a numbered
-+ interface, this MUST be the same value as
-+ rip2IfConfAddress. On unnumbered interfaces,
-+ it must be the value of rip2IfConfAddress for
-+ some interface on the system."
-+ ::= { rip2IfConfEntry 9 }
-+
-+--4.3 Peer Table
-+
-+-- Peer Table
-+
-+-- The RIP Peer Group
-+-- Implementation of this Group is Optional
-+
-+-- This group provides information about active peer
-+-- relationships intended to assist in debugging. An
-+-- active peer is a router from which a valid RIP
-+-- updated has been heard in the last 180 seconds.
-+
-+ rip2PeerTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF Rip2PeerEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "A list of RIP Peers."
-+ ::= { rip2 4 }
-+
-+ rip2PeerEntry OBJECT-TYPE
-+ SYNTAX Rip2PeerEntry
-+ MAX-ACCESS not-accessible
-+ STATUS current
-+ DESCRIPTION
-+ "Information regarding a single routing peer."
-+ INDEX { rip2PeerAddress, rip2PeerDomain }
-+ ::= { rip2PeerTable 1 }
-+
-+ Rip2PeerEntry ::=
-+ SEQUENCE {
-+ rip2PeerAddress
-+ IpAddress,
-+ rip2PeerDomain
-+ RouteTag,
-+ rip2PeerLastUpdate
-+ TimeTicks,
-+ rip2PeerVersion
-+ INTEGER,
-+ rip2PeerRcvBadPackets
-+ Counter32,
-+ rip2PeerRcvBadRoutes
-+ Counter32
-+ }
-+
-+ rip2PeerAddress OBJECT-TYPE
-+ SYNTAX IpAddress
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The IP Address that the peer is using as its source
-+ address. Note that on an unnumbered link, this may
-+ not be a member of any subnet on the system."
-+ ::= { rip2PeerEntry 1 }
-+
-+ rip2PeerDomain OBJECT-TYPE
-+ SYNTAX RouteTag
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The value in the Routing Domain field in RIP
-+ packets received from the peer. As domain suuport
-+ is deprecated, this must be zero."
-+ ::= { rip2PeerEntry 2 }
-+
-+ rip2PeerLastUpdate OBJECT-TYPE
-+ SYNTAX TimeTicks
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The value of sysUpTime when the most recent
-+ RIP update was received from this system."
-+ ::= { rip2PeerEntry 3 }
-+
-+ rip2PeerVersion OBJECT-TYPE
-+ SYNTAX INTEGER ( 0..255 )
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The RIP version number in the header of the
-+ last RIP packet received."
-+ ::= { rip2PeerEntry 4 }
-+
-+ rip2PeerRcvBadPackets OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of RIP response packets from this
-+ peer discarded as invalid."
-+ ::= { rip2PeerEntry 5 }
-+
-+
-+ rip2PeerRcvBadRoutes OBJECT-TYPE
-+ SYNTAX Counter32
-+ MAX-ACCESS read-only
-+ STATUS current
-+ DESCRIPTION
-+ "The number of routes from this peer that were
-+ ignored because the entry format was invalid."
-+ ::= { rip2PeerEntry 6 }
-+
-+-- conformance information
-+
-+rip2Conformance OBJECT IDENTIFIER ::= { rip2 5 }
-+
-+rip2Groups OBJECT IDENTIFIER ::= { rip2Conformance 1 }
-+rip2Compliances OBJECT IDENTIFIER ::= { rip2Conformance 2 }
-+
-+-- compliance statements
-+rip2Compliance MODULE-COMPLIANCE
-+ STATUS current
-+ DESCRIPTION
-+ "The compliance statement "
-+ MODULE -- this module
-+ MANDATORY-GROUPS {
-+ rip2GlobalGroup,
-+ rip2IfStatGroup,
-+ rip2IfConfGroup,
-+ rip2PeerGroup
-+ }
-+ GROUP rip2GlobalGroup
-+ DESCRIPTION
-+ "This group defines global controls for RIP-II systems."
-+ GROUP rip2IfStatGroup
-+ DESCRIPTION
-+ "This group defines interface statistics for RIP-II systems."
-+ GROUP rip2IfConfGroup
-+ DESCRIPTION
-+ "This group defines interface configuration for RIP-II systems."
-+ GROUP rip2PeerGroup
-+ DESCRIPTION
-+ "This group defines peer information for RIP-II systems."
-+ ::= { rip2Compliances 1 }
-+
-+-- units of conformance
-+
-+rip2GlobalGroup OBJECT-GROUP
-+ OBJECTS {
-+ rip2GlobalRouteChanges,
-+ rip2GlobalQueries
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "This group defines global controls for RIP-II systems."
-+ ::= { rip2Groups 1 }
-+rip2IfStatGroup OBJECT-GROUP
-+ OBJECTS {
-+ rip2IfStatAddress,
-+ rip2IfStatRcvBadPackets,
-+ rip2IfStatRcvBadRoutes,
-+ rip2IfStatSentUpdates,
-+ rip2IfStatStatus
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "This group defines interface statistics for RIP-II systems."
-+ ::= { rip2Groups 2 }
-+rip2IfConfGroup OBJECT-GROUP
-+ OBJECTS {
-+ rip2IfConfAddress,
-+ rip2IfConfAuthType,
-+ rip2IfConfAuthKey,
-+ rip2IfConfSend,
-+ rip2IfConfReceive,
-+ rip2IfConfDefaultMetric,
-+ rip2IfConfStatus,
-+ rip2IfConfSrcAddress
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "This group defines interface configuration for RIP-II systems."
-+ ::= { rip2Groups 3 }
-+rip2PeerGroup OBJECT-GROUP
-+ OBJECTS {
-+ rip2PeerAddress,
-+ rip2PeerDomain,
-+ rip2PeerLastUpdate,
-+ rip2PeerVersion,
-+ rip2PeerRcvBadPackets,
-+ rip2PeerRcvBadRoutes
-+ }
-+ STATUS current
-+ DESCRIPTION
-+ "This group defines peer information for RIP-II systems."
-+ ::= { rip2Groups 4 }
-+END
-diff -ruN net-snmp-5.1.2-orig/mibs/SOURCE-ROUTING-MIB.txt net-snmp-5.1.2-5/mibs/SOURCE-ROUTING-MIB.txt
---- net-snmp-5.1.2-orig/mibs/SOURCE-ROUTING-MIB.txt 1970-01-01 01:00:00.000000000 +0100
-+++ net-snmp-5.1.2-5/mibs/SOURCE-ROUTING-MIB.txt 2005-03-13 16:17:21.000000000 +0100
-@@ -0,0 +1,452 @@
-+SOURCE-ROUTING-MIB DEFINITIONS ::= BEGIN
-+
-+IMPORTS
-+ Counter, Gauge
-+ FROM RFC1155-SMI
-+ dot1dBridge, dot1dSr
-+ FROM BRIDGE-MIB
-+ OBJECT-TYPE
-+ FROM RFC-1212;
-+
-+-- groups in the SR MIB
-+
-+-- dot1dSr is imported from the Bridge MIB
-+
-+dot1dPortPair OBJECT IDENTIFIER ::= { dot1dBridge 10 }
-+
-+-- the dot1dSr group
-+
-+-- this group is implemented by those bridges that
-+-- support the source route bridging mode, including Source
-+-- Routing and SRT bridges.
-+
-+dot1dSrPortTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF Dot1dSrPortEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A table that contains information about every
-+ port that is associated with this source route
-+ bridge."
-+ ::= { dot1dSr 1 }
-+
-+dot1dSrPortEntry OBJECT-TYPE
-+ SYNTAX Dot1dSrPortEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A list of information for each port of a source
-+ route bridge."
-+ INDEX { dot1dSrPort }
-+
-+ ::= { dot1dSrPortTable 1 }
-+
-+Dot1dSrPortEntry ::=
-+ SEQUENCE {
-+ dot1dSrPort
-+ INTEGER,
-+ dot1dSrPortHopCount
-+ INTEGER,
-+ dot1dSrPortLocalSegment
-+ INTEGER,
-+ dot1dSrPortBridgeNum
-+ INTEGER,
-+ dot1dSrPortTargetSegment
-+ INTEGER,
-+ dot1dSrPortLargestFrame
-+ INTEGER,
-+ dot1dSrPortSTESpanMode
-+ INTEGER,
-+ dot1dSrPortSpecInFrames
-+ Counter,
-+ dot1dSrPortSpecOutFrames
-+ Counter,
-+ dot1dSrPortApeInFrames
-+ Counter,
-+ dot1dSrPortApeOutFrames
-+ Counter,
-+ dot1dSrPortSteInFrames
-+ Counter,
-+ dot1dSrPortSteOutFrames
-+ Counter,
-+ dot1dSrPortSegmentMismatchDiscards
-+ Counter,
-+ dot1dSrPortDuplicateSegmentDiscards
-+ Counter,
-+ dot1dSrPortHopCountExceededDiscards
-+ Counter,
-+ dot1dSrPortDupLanIdOrTreeErrors
-+ Counter,
-+ dot1dSrPortLanIdMismatches
-+ Counter
-+ }
-+
-+dot1dSrPort OBJECT-TYPE
-+ SYNTAX INTEGER (1..65535)
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The port number of the port for which this entry
-+
-+ contains Source Route management information."
-+ ::= { dot1dSrPortEntry 1 }
-+
-+dot1dSrPortHopCount OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The maximum number of routing descriptors allowed
-+ in an All Paths or Spanning Tree Explorer frames."
-+ ::= { dot1dSrPortEntry 2 }
-+
-+dot1dSrPortLocalSegment OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The segment number that uniquely identifies the
-+ segment to which this port is connected. Current
-+ source routing protocols limit this value to the
-+ range: 0 through 4095. (The value 0 is used by
-+ some management applications for special test
-+ cases.) A value of 65535 signifies that no segment
-+ number is assigned to this port."
-+ ::= { dot1dSrPortEntry 3 }
-+
-+dot1dSrPortBridgeNum OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A bridge number uniquely identifies a bridge when
-+ more than one bridge is used to span the same two
-+ segments. Current source routing protocols limit
-+ this value to the range: 0 through 15. A value of
-+ 65535 signifies that no bridge number is assigned
-+ to this bridge."
-+ ::= { dot1dSrPortEntry 4 }
-+
-+dot1dSrPortTargetSegment OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The segment number that corresponds to the target
-+ segment this port is considered to be connected to
-+ by the bridge. Current source routing protocols
-+ limit this value to the range: 0 through 4095.
-+
-+ (The value 0 is used by some management
-+ applications for special test cases.) A value of
-+ 65535 signifies that no target segment is assigned
-+ to this port."
-+ ::= { dot1dSrPortEntry 5 }
-+
-+-- It would be nice if we could use ifMtu as the size of the
-+-- largest frame, but we can't because ifMtu is defined to be
-+-- the size that the (inter-)network layer can use which can
-+-- differ from the MAC layer (especially if several layers of
-+-- encapsulation are used).
-+
-+dot1dSrPortLargestFrame OBJECT-TYPE
-+ SYNTAX INTEGER
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The maximum size of the INFO field (LLC and
-+ above) that this port can send/receive. It does
-+ not include any MAC level (framing) octets. The
-+ value of this object is used by this bridge to
-+ determine whether a modification of the
-+ LargestFrame (LF, see [14]) field of the Routing
-+ Control field of the Routing Information Field is
-+ necessary.
-+
-+ 64 valid values are defined by the IEEE 802.5M SRT
-+ Addendum: 516, 635, 754, 873, 993, 1112, 1231,
-+ 1350, 1470, 1542, 1615, 1688, 1761, 1833, 1906,
-+ 1979, 2052, 2345, 2638, 2932, 3225, 3518, 3812,
-+ 4105, 4399, 4865, 5331, 5798, 6264, 6730, 7197,
-+ 7663, 8130, 8539, 8949, 9358, 9768, 10178, 10587,
-+ 10997, 11407, 12199, 12992, 13785, 14578, 15370,
-+ 16163, 16956, 17749, 20730, 23711, 26693, 29674,
-+ 32655, 35637, 38618, 41600, 44591, 47583, 50575,
-+ 53567, 56559, 59551, and 65535.
-+
-+ An illegal value will not be accepted by the
-+ bridge."
-+ ::= { dot1dSrPortEntry 6 }
-+
-+dot1dSrPortSTESpanMode OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ auto-span(1),
-+ disabled(2),
-+ forced(3)
-+ }
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "Determines how this port behaves when presented
-+ with a Spanning Tree Explorer frame. The value
-+ 'disabled(2)' indicates that the port will not
-+ accept or send Spanning Tree Explorer packets; any
-+ STE packets received will be silently discarded.
-+ The value 'forced(3)' indicates the port will
-+ always accept and propagate Spanning Tree Explorer
-+ frames. This allows a manually configured
-+ Spanning Tree for this class of packet to be
-+ configured. Note that unlike transparent
-+ bridging, this is not catastrophic to the network
-+ if there are loops. The value 'auto-span(1)' can
-+ only be returned by a bridge that both implements
-+ the Spanning Tree Protocol and has use of the
-+ protocol enabled on this port. The behavior of the
-+ port for Spanning Tree Explorer frames is
-+ determined by the state of dot1dStpPortState. If
-+ the port is in the 'forwarding' state, the frame
-+ will be accepted or propagated. Otherwise, it
-+ will be silently discarded."
-+ ::= { dot1dSrPortEntry 7 }
-+
-+dot1dSrPortSpecInFrames OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of Specifically Routed frames, also
-+ referred to as Source Routed Frames, that have
-+ been received from this port's segment."
-+ ::= { dot1dSrPortEntry 8 }
-+
-+dot1dSrPortSpecOutFrames OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of Specifically Routed frames, also
-+ referred to as Source Routed Frames, that this
-+ port has transmitted on its segment."
-+ ::= { dot1dSrPortEntry 9 }
-+
-+dot1dSrPortApeInFrames OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of All Paths Explorer frames, also
-+ referred to as All Routes Explorer frames, that
-+ have been received by this port from its segment."
-+ ::= { dot1dSrPortEntry 10 }
-+
-+dot1dSrPortApeOutFrames OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of all Paths Explorer Frames, also
-+ referred to as All Routes Explorer frames, that
-+ have been transmitted by this port on its
-+ segment."
-+ ::= { dot1dSrPortEntry 11 }
-+
-+dot1dSrPortSteInFrames OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of spanning tree explorer frames that
-+ have been received by this port from its segment."
-+ ::= { dot1dSrPortEntry 12 }
-+
-+dot1dSrPortSteOutFrames OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of spanning tree explorer frames that
-+ have been transmitted by this port on its
-+ segment."
-+ ::= { dot1dSrPortEntry 13 }
-+
-+dot1dSrPortSegmentMismatchDiscards OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of explorer frames that have been
-+ discarded by this port because the routing
-+ descriptor field contained an invalid adjacent
-+ segment value."
-+ ::= { dot1dSrPortEntry 14 }
-+
-+dot1dSrPortDuplicateSegmentDiscards OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of frames that have been discarded by
-+ this port because the routing descriptor field
-+ contained a duplicate segment identifier."
-+ ::= { dot1dSrPortEntry 15 }
-+
-+dot1dSrPortHopCountExceededDiscards OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of explorer frames that have been
-+ discarded by this port because the Routing
-+ Information Field has exceeded the maximum route
-+ descriptor length."
-+ ::= { dot1dSrPortEntry 16 }
-+
-+dot1dSrPortDupLanIdOrTreeErrors OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of duplicate LAN IDs or Tree errors.
-+ This helps in detection of problems in networks
-+ containing older IBM Source Routing Bridges."
-+ ::= { dot1dSrPortEntry 17 }
-+
-+dot1dSrPortLanIdMismatches OBJECT-TYPE
-+ SYNTAX Counter
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The number of ARE and STE frames that were
-+ discarded because the last LAN ID in the routing
-+ information field did not equal the LAN-in ID.
-+ This error can occur in implementations which do
-+ only a LAN-in ID and Bridge Number check instead
-+ of a LAN-in ID, Bridge Number, and LAN-out ID
-+ check before they forward broadcast frames."
-+ ::= { dot1dSrPortEntry 18 }
-+
-+-- scalar object in dot1dSr
-+
-+dot1dSrBridgeLfMode OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ mode3(1),
-+ mode6(2)
-+ }
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "Indicates whether the bridge operates using older
-+ 3 bit length negotiation fields or the newer 6 bit
-+ length field in its RIF."
-+ ::= { dot1dSr 2 }
-+
-+-- The Port-Pair Database
-+
-+-- Implementation of this group is optional.
-+
-+-- This group is implemented by those bridges that support
-+-- the direct multiport model of the source route bridging
-+-- mode as defined in the IEEE 802.5 SRT Addendum to
-+-- 802.1d.
-+
-+-- Bridges implementing this group may report 65535 for
-+-- dot1dSrPortBridgeNumber and dot1dSrPortTargetSegment,
-+-- indicating that those objects are not applicable.
-+
-+dot1dPortPairTableSize OBJECT-TYPE
-+ SYNTAX Gauge
-+ ACCESS read-only
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The total number of entries in the Bridge Port
-+ Pair Database."
-+ ::= { dot1dPortPair 1 }
-+
-+-- the Bridge Port-Pair table
-+
-+-- this table represents port pairs within a bridge forming
-+-- a unique bridge path, as defined in the IEEE 802.5M SRT
-+-- Addendum.
-+
-+dot1dPortPairTable OBJECT-TYPE
-+ SYNTAX SEQUENCE OF Dot1dPortPairEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A table that contains information about every
-+
-+ port pair database entity associated with this
-+ source routing bridge."
-+ ::= { dot1dPortPair 2 }
-+
-+dot1dPortPairEntry OBJECT-TYPE
-+ SYNTAX Dot1dPortPairEntry
-+ ACCESS not-accessible
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A list of information for each port pair entity
-+ of a bridge."
-+ INDEX { dot1dPortPairLowPort, dot1dPortPairHighPort }
-+ ::= { dot1dPortPairTable 1 }
-+
-+Dot1dPortPairEntry ::=
-+ SEQUENCE {
-+ dot1dPortPairLowPort
-+ INTEGER,
-+ dot1dPortPairHighPort
-+ INTEGER,
-+ dot1dPortPairBridgeNum
-+ INTEGER,
-+ dot1dPortPairBridgeState
-+ INTEGER
-+ }
-+
-+dot1dPortPairLowPort OBJECT-TYPE
-+ SYNTAX INTEGER (1..65535)
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The port number of the lower numbered port for
-+ which this entry contains port pair database
-+ information."
-+ ::= { dot1dPortPairEntry 1 }
-+
-+dot1dPortPairHighPort OBJECT-TYPE
-+ SYNTAX INTEGER (1..65535)
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The port number of the higher numbered port for
-+ which this entry contains port pair database
-+ information."
-+ ::= { dot1dPortPairEntry 2 }
-+
-+dot1dPortPairBridgeNum OBJECT-TYPE
-+ SYNTAX INTEGER
-+
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "A bridge number that uniquely identifies the path
-+ provided by this source routing bridge between the
-+ segments connected to dot1dPortPairLowPort and
-+ dot1dPortPairHighPort. The purpose of bridge
-+ number is to disambiguate between multiple paths
-+ connecting the same two LANs."
-+ ::= { dot1dPortPairEntry 3 }
-+
-+dot1dPortPairBridgeState OBJECT-TYPE
-+ SYNTAX INTEGER {
-+ enabled(1),
-+ disabled(2),
-+ invalid(3)
-+ }
-+ ACCESS read-write
-+ STATUS mandatory
-+ DESCRIPTION
-+ "The state of dot1dPortPairBridgeNum. Writing
-+ 'invalid(3)' to this object removes the
-+ corresponding entry."
-+ ::= { dot1dPortPairEntry 4 }
-+
-+END
-diff -ruN net-snmp-5.1.2-orig/net-snmp-config.in net-snmp-5.1.2-5/net-snmp-config.in
---- net-snmp-5.1.2-orig/net-snmp-config.in 2004-06-17 15:39:28.000000000 +0200
-+++ net-snmp-5.1.2-5/net-snmp-config.in 2005-03-13 16:17:21.000000000 +0100
-@@ -113,13 +113,13 @@
- #################################################### client lib
- --libs)
- # use this one == --netsnmp-libs + --external-libs
-- echo $NSC_LDFLAGS $NSC_LIBDIR -lnetsnmp $NSC_LIBS
-+ echo $NSC_LDFLAGS $NSC_LIBDIR -lnetsnmp $NSC_LIBS @WRAPLIBS@
- ;;
- --netsnmp-libs)
- echo $NSC_LIBDIR -lnetsnmp
- ;;
- --external-libs)
-- echo $NSC_LDFLAGS $NSC_LIBS
-+ echo $NSC_LDFLAGS $NSC_LIBS @WRAPLIBS@
- ;;
- #################################################### agent lib
- --base-agent-libs)
-@@ -130,13 +130,13 @@
- ;;
- --agent-libs)
- # use this one == --netsnmp-agent-libs + --external-libs
-- echo $NSC_LDFLAGS $NSC_LIBDIR $NSC_BASE_AGENT_LIBS $NSC_AGENTLIBS
-+ echo $NSC_LDFLAGS $NSC_LIBDIR $NSC_BASE_AGENT_LIBS $NSC_AGENTLIBS @WRAPLIBS@
- ;;
- --netsnmp-agent-libs)
- echo $NSC_LIBDIR $NSC_BASE_AGENT_LIBS
- ;;
- --external-agent-libs)
-- echo $NSC_LDFLAGS $NSC_AGENTLIBS
-+ echo $NSC_LDFLAGS $NSC_AGENTLIBS @WRAPLIBS@
- ;;
- ####################################################
- --version)
-@@ -409,7 +409,7 @@
- echo "Ack. Can't create $tmpfile."
- exit 1
- fi
-- cmd="@CC@ $cflags @CFLAGS@ @DEVFLAGS@ -I. -I@includedir@ -o $outname $tmpfile $cfiles $NSC_LDFLAGS -L$NSC_EXEC_PREFIX/lib -lnetsnmpagent -lnetsnmphelpers -lnetsnmpmibs -lnetsnmp $NSC_AGENTLIBS $ldflags"
-+ cmd="@CC@ $cflags @CFLAGS@ @DEVFLAGS@ -I. -I@includedir@ -o $outname $tmpfile $cfiles $NSC_LDFLAGS -L$NSC_EXEC_PREFIX/lib -lnetsnmpagent -lnetsnmphelpers -lnetsnmpmibs -lnetsnmp $NSC_AGENTLIBS @WRAPLIBS@ $ldflags"
- echo "running: $cmd"
- `$cmd`
- if test "x$norm" != "x1" ; then
-diff -ruN net-snmp-5.1.2-orig/perl/agent/netsnmp_request_infoPtr.pm net-snmp-5.1.2-5/perl/agent/netsnmp_request_infoPtr.pm
---- net-snmp-5.1.2-orig/perl/agent/netsnmp_request_infoPtr.pm 2002-09-19 22:38:24.000000000 +0200
-+++ net-snmp-5.1.2-5/perl/agent/netsnmp_request_infoPtr.pm 2005-03-13 16:17:21.000000000 +0100
-@@ -4,6 +4,7 @@
-
- 1;
- __END__
-+
- =head1 NAME
-
- NetSNMP::agent::netsnmp_request_infoPtr - Perl extension for request information
-diff -ruN net-snmp-5.1.2-orig/snmplib/Makefile.in net-snmp-5.1.2-5/snmplib/Makefile.in
---- net-snmp-5.1.2-orig/snmplib/Makefile.in 2004-03-04 14:41:19.000000000 +0100
-+++ net-snmp-5.1.2-5/snmplib/Makefile.in 2005-03-13 16:17:21.000000000 +0100
-@@ -178,11 +178,11 @@
-
- # how to build the libraries.
- libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION): ${TOBJS}
-- $(LIB_LD_CMD) libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) ${TOBJS}
-+ $(LIB_LD_CMD) libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) ${TOBJS} @CRYPTOLIBS@
- $(RANLIB) libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION)
-
- libsnmp.$(LIB_EXTENSION)$(LIB_VERSION): ${TOBJS}
-- $(LIB_LD_CMD) libsnmp.$(LIB_EXTENSION)$(LIB_VERSION) ${TOBJS}
-+ $(LIB_LD_CMD) libsnmp.$(LIB_EXTENSION)$(LIB_VERSION) ${TOBJS} @CRYPTOLIBS@
- $(RANLIB) libsnmp.$(LIB_EXTENSION)$(LIB_VERSION)
-
- #
-diff -ruN net-snmp-5.1.2-orig/snmplib/snmpUDPDomain.c net-snmp-5.1.2-5/snmplib/snmpUDPDomain.c
---- net-snmp-5.1.2-orig/snmplib/snmpUDPDomain.c 2004-07-07 14:21:32.000000000 +0200
-+++ net-snmp-5.1.2-5/snmplib/snmpUDPDomain.c 2005-03-13 16:17:21.000000000 +0100
-@@ -233,18 +233,6 @@
- netsnmp_transport_free(t);
- return NULL;
- }
--#ifdef SO_BSDCOMPAT
-- /*
-- * Patch for Linux. Without this, UDP packets that fail get an ICMP
-- * response. Linux turns the failed ICMP response into an error message
-- * and return value, unlike all other OS's.
-- */
-- {
-- int one = 1;
-- setsockopt(t->sock, SOL_SOCKET, SO_BSDCOMPAT, (void *) &one,
-- sizeof(one));
-- }
--#endif /*SO_BSDCOMPAT */
- /*
- * SO_REUSEADDR will allow multiple apps to open the same port at
- * the same time. Only the last one to open the socket will get
-diff -ruN net-snmp-5.1.2-orig/snmplib/snmpUDPIPv6Domain.c net-snmp-5.1.2-5/snmplib/snmpUDPIPv6Domain.c
---- net-snmp-5.1.2-orig/snmplib/snmpUDPIPv6Domain.c 2004-07-22 19:45:00.000000000 +0200
-+++ net-snmp-5.1.2-5/snmplib/snmpUDPIPv6Domain.c 2005-03-13 16:17:21.000000000 +0100
-@@ -249,17 +249,6 @@
- netsnmp_transport_free(t);
- return NULL;
- }
--#ifdef SO_BSDCOMPAT
-- /*
-- * Patch for Linux. Without this, UDP packets that fail get an ICMP
-- * response. Linux turns the failed ICMP response into an error message
-- * and return value, unlike all other OS's.
-- */
-- {
-- int one = 1;
-- setsockopt(t->sock, SOL_SOCKET, SO_BSDCOMPAT, &one, sizeof(one));
-- }
--#endif /*SO_BSDCOMPAT */
-
- /*
- * Try to set the send and receive buffers to a reasonably large value, so
-diff -ruN net-snmp-5.1.2-orig/snmplib/snmp_logging.c net-snmp-5.1.2-5/snmplib/snmp_logging.c
---- net-snmp-5.1.2-orig/snmplib/snmp_logging.c 2004-03-31 03:06:08.000000000 +0200
-+++ net-snmp-5.1.2-5/snmplib/snmp_logging.c 2005-03-13 16:17:21.000000000 +0100
-@@ -860,13 +860,14 @@
- } else {
- strcpy(sbuf, "");
- }
-- newline = string[strlen(string) - 1] == '\n'; /* XXX - Eh ? */
-
- if (logh->imagic)
- printf( "%s%s", sbuf, string);
- else
- fprintf(stderr, "%s%s", sbuf, string);
-
-+ newline = string[strlen(string) - 1] == '\n'; /* XXX - Eh ? */
-+
- return 1;
- }
-
-diff -ruN net-snmp-5.1.2-orig/snmplib/winservice.mc net-snmp-5.1.2-5/snmplib/winservice.mc
---- net-snmp-5.1.2-orig/snmplib/winservice.mc 2002-04-20 09:30:21.000000000 +0200
-+++ net-snmp-5.1.2-5/snmplib/winservice.mc 2005-03-13 16:17:21.000000000 +0100
-@@ -1,11 +1,11 @@
--;//Message catalog for Windows Serivce Support routines
--;//To support event logging functionality
--;//By Raju Krishnappa(raju_krishnappa@yahoo.com)
--
--;//Message ID descriptions
--
--MessageId=100
--SymbolicName=DISPLAY_MSG
--Language=English
--%1.
--.
-+;//Message catalog for Windows Serivce Support routines
-+;//To support event logging functionality
-+;//By Raju Krishnappa(raju_krishnappa@yahoo.com)
-+
-+;//Message ID descriptions
-+
-+MessageId=100
-+SymbolicName=DISPLAY_MSG
-+Language=English
-+%1.
-+.
-diff -ruN net-snmp-5.1.2-orig/snmplib/winservice.rc net-snmp-5.1.2-5/snmplib/winservice.rc
---- net-snmp-5.1.2-orig/snmplib/winservice.rc 2002-04-20 09:30:21.000000000 +0200
-+++ net-snmp-5.1.2-5/snmplib/winservice.rc 2005-03-13 16:17:21.000000000 +0100
-@@ -1,2 +1,2 @@
--LANGUAGE 0x9,0x1
--1 11 MSG00001.bin
-+LANGUAGE 0x9,0x1
-+1 11 MSG00001.bin
diff --git a/openwrt/package/net-snmp/patches/750-ieee802dot11.patch b/openwrt/package/net-snmp/patches/750-ieee802dot11.patch
deleted file mode 100644
index 8939a44f23..0000000000
--- a/openwrt/package/net-snmp/patches/750-ieee802dot11.patch
+++ /dev/null
@@ -1,6156 +0,0 @@
---- net-snmp-5.1.2-orig/agent/mibgroup/ieee802dot11.c 1970-01-01 01:00:00.000000000 +0100
-+++ net-snmp-5.1.2-5/agent/mibgroup/ieee802dot11.c 2005-03-13 16:17:21.000000000 +0100
-@@ -0,0 +1,4915 @@
-+/****************************************************************************
-+* *
-+* File Name: ieee802dot11.c *
-+* Used By: *
-+* *
-+* Operating System: *
-+* Purpose: *
-+* *
-+* Comments: *
-+* *
-+* Author: Larry Simmons *
-+* lsimmons@avantcom.com *
-+* www.avantcom.com *
-+* *
-+* Creation Date: 09/02/03 *
-+* *
-+* Ver Date Inits Modification *
-+* ----- -------- ----- ------------ *
-+* 0.0.1 09/02/03 LRS created *
-+* 0.0.2 09/24/03 LRS wouldn't build after fresh ./configure *
-+****************************************************************************/
-+/****************************************************************************
-+* Includes *
-+****************************************************************************/
-+#include <net-snmp/net-snmp-config.h>
-+#include <net-snmp/net-snmp-includes.h>
-+#include <net-snmp/agent/net-snmp-agent-includes.h>
-+#include "ieee802dot11.h"
-+#include "iwlib.h"
-+
-+/****************************************************************************
-+* Defines *
-+****************************************************************************/
-+#define DISPLAYWIEXT // display wireless ext info
-+#define TABLE_SIZE 1
-+//#define MINLOADFREQ 15 // min reload frequency in seconds
-+#define MINLOADFREQ 5 // min reload frequency in seconds // for testing
-+#define PROC_NET_DEV "/proc/net/dev"
-+#define PROC_NET_WIRELESS "/proc/net/wireless"
-+
-+#ifndef UCHAR
-+ typedef unsigned char UCHAR;
-+#endif
-+
-+/****************************************************************************
-+* Private Functions *
-+****************************************************************************/
-+static void loadTables();
-+static void loadWiExt ( int, char *, struct wireless_info * );
-+static void load80211Structs ( int, char *, struct wireless_info * );
-+static void initStructs();
-+
-+// Wireless Extensions Specific Functions
-+static void loadWiExtTo80211Structs ( int, char *, struct wireless_info * );
-+static void displayWiExt ( struct wireless_info );
-+
-+// Linked List Functions
-+static void addList ( char *, char *, int );
-+static void initLists(); // initialize all the linked lists
-+static void flushLists(); // flush all the linked lists
-+static void flushList ( char * ); // flush a single linked list
-+
-+// Utility Functions
-+static int openSocket ( void );
-+static int mWatt2dbm ( int );
-+static char *htob ( char * );
-+static int hasChanged ( char *, int );
-+
-+/****************************************************************************
-+* Private Variables *
-+****************************************************************************/
-+static unsigned long lastLoad = 0; // ET in secs at last table load
-+
-+static struct avNode *lastNode, *newNode, *np;
-+
-+/****************************************************************************
-+* External Functions *
-+****************************************************************************/
-+
-+/****************************************************************************
-+* ieee802dot11_variables_oid: *
-+* this is the top level oid that we want to register under. This *
-+* is essentially a prefix, with the suffix appearing in the *
-+* variable below. *
-+****************************************************************************/
-+oid ieee802dot11_variables_oid[] = { 1,2,840,10036 };
-+
-+/****************************************************************************
-+* variable7 ieee802dot11_variables: *
-+* this variable defines function callbacks and type return information *
-+* for the ieee802dot11 mib section *
-+****************************************************************************/
-+struct variable7 ieee802dot11_variables[] = {
-+/* magic number , variable type , ro/rw , callback fn , L, oidsuffix */
-+#define DOT11STATIONID 3
-+ { DOT11STATIONID , ASN_OCTET_STR , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,1 } },
-+#define DOT11MEDIUMOCCUPANCYLIMIT 4
-+ { DOT11MEDIUMOCCUPANCYLIMIT, ASN_INTEGER , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,2 } },
-+#define DOT11CFPOLLABLE 5
-+ { DOT11CFPOLLABLE , ASN_INTEGER , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,3 } },
-+#define DOT11CFPPERIOD 6
-+ { DOT11CFPPERIOD , ASN_INTEGER , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,4 } },
-+#define DOT11CFPMAXDURATION 7
-+ { DOT11CFPMAXDURATION , ASN_INTEGER , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,5 } },
-+#define DOT11AUTHENTICATIONRESPONSETIMEOUT 8
-+ { DOT11AUTHENTICATIONRESPONSETIMEOUT, ASN_INTEGER , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,6 } },
-+#define DOT11PRIVACYOPTIONIMPLEMENTED 9
-+ { DOT11PRIVACYOPTIONIMPLEMENTED, ASN_INTEGER , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,7 } },
-+#define DOT11POWERMANAGEMENTMODE 10
-+ { DOT11POWERMANAGEMENTMODE, ASN_INTEGER , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,8 } },
-+#define DOT11DESIREDSSID 11
-+ { DOT11DESIREDSSID , ASN_OCTET_STR , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,9 } },
-+#define DOT11DESIREDBSSTYPE 12
-+ { DOT11DESIREDBSSTYPE , ASN_INTEGER , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,10 } },
-+#define DOT11OPERATIONALRATESET 13
-+ { DOT11OPERATIONALRATESET, ASN_OCTET_STR , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,11 } },
-+#define DOT11BEACONPERIOD 14
-+ { DOT11BEACONPERIOD , ASN_INTEGER , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,12 } },
-+#define DOT11DTIMPERIOD 15
-+ { DOT11DTIMPERIOD , ASN_INTEGER , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,13 } },
-+#define DOT11ASSOCIATIONRESPONSETIMEOUT 16
-+ { DOT11ASSOCIATIONRESPONSETIMEOUT, ASN_INTEGER , RWRITE, var_dot11StationConfigTable, 4, { 1,1,1,14 } },
-+#define DOT11DISASSOCIATEREASON 17
-+ { DOT11DISASSOCIATEREASON, ASN_INTEGER , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,15 } },
-+#define DOT11DISASSOCIATESTATION 18
-+ { DOT11DISASSOCIATESTATION, ASN_OCTET_STR , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,16 } },
-+#define DOT11DEAUTHENTICATEREASON 19
-+ { DOT11DEAUTHENTICATEREASON, ASN_INTEGER , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,17 } },
-+#define DOT11DEAUTHENTICATESTATION 20
-+ { DOT11DEAUTHENTICATESTATION, ASN_OCTET_STR , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,18 } },
-+#define DOT11AUTHENTICATEFAILSTATUS 21
-+ { DOT11AUTHENTICATEFAILSTATUS, ASN_INTEGER , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,19 } },
-+#define DOT11AUTHENTICATEFAILSTATION 22
-+ { DOT11AUTHENTICATEFAILSTATION, ASN_OCTET_STR , RONLY , var_dot11StationConfigTable, 4, { 1,1,1,20 } },
-+
-+#define DOT11AUTHENTICATIONALGORITHM 26
-+ { DOT11AUTHENTICATIONALGORITHM, ASN_INTEGER , RONLY , var_dot11AuthenticationAlgorithmsTable, 4, { 1,2,1,2 } },
-+#define DOT11AUTHENTICATIONALGORITHMSENABLE 27
-+ { DOT11AUTHENTICATIONALGORITHMSENABLE, ASN_INTEGER , RWRITE, var_dot11AuthenticationAlgorithmsTable, 4, { 1,2,1,3 } },
-+
-+#define DOT11WEPDEFAULTKEYVALUE 31
-+ { DOT11WEPDEFAULTKEYVALUE, ASN_OCTET_STR , RWRITE, var_dot11WEPDefaultKeysTable, 4, { 1,3,1,2 } },
-+
-+#define DOT11WEPKEYMAPPINGADDRESS 35
-+ { DOT11WEPKEYMAPPINGADDRESS, ASN_OCTET_STR , RWRITE, var_dot11WEPKeyMappingsTable, 4, { 1,4,1,2 } },
-+#define DOT11WEPKEYMAPPINGWEPON 36
-+ { DOT11WEPKEYMAPPINGWEPON, ASN_INTEGER , RWRITE, var_dot11WEPKeyMappingsTable, 4, { 1,4,1,3 } },
-+#define DOT11WEPKEYMAPPINGVALUE 37
-+ { DOT11WEPKEYMAPPINGVALUE, ASN_OCTET_STR , RWRITE, var_dot11WEPKeyMappingsTable, 4, { 1,4,1,4 } },
-+#define DOT11WEPKEYMAPPINGSTATUS 38
-+ { DOT11WEPKEYMAPPINGSTATUS, ASN_INTEGER , RWRITE, var_dot11WEPKeyMappingsTable, 4, { 1,4,1,5 } },
-+
-+#define DOT11PRIVACYINVOKED 41
-+ { DOT11PRIVACYINVOKED , ASN_INTEGER , RWRITE, var_dot11PrivacyTable, 4, { 1,5,1,1 } },
-+#define DOT11WEPDEFAULTKEYID 42
-+ { DOT11WEPDEFAULTKEYID, ASN_INTEGER , RWRITE, var_dot11PrivacyTable, 4, { 1,5,1,2 } },
-+#define DOT11WEPKEYMAPPINGLENGTH 43
-+ { DOT11WEPKEYMAPPINGLENGTH, ASN_INTEGER , RWRITE, var_dot11PrivacyTable, 4, { 1,5,1,3 } },
-+#define DOT11EXCLUDEUNENCRYPTED 44
-+ { DOT11EXCLUDEUNENCRYPTED, ASN_INTEGER , RWRITE, var_dot11PrivacyTable, 4, { 1,5,1,4 } },
-+#define DOT11WEPICVERRORCOUNT 45
-+ { DOT11WEPICVERRORCOUNT, ASN_COUNTER , RONLY , var_dot11PrivacyTable, 4, { 1,5,1,5 } },
-+#define DOT11WEPEXCLUDEDCOUNT 46
-+ { DOT11WEPEXCLUDEDCOUNT, ASN_COUNTER , RONLY , var_dot11PrivacyTable, 4, { 1,5,1,6 } },
-+
-+#define DOT11MACADDRESS 49
-+ { DOT11MACADDRESS , ASN_OCTET_STR , RONLY , var_dot11OperationTable, 4, { 2,1,1,1 } },
-+#define DOT11RTSTHRESHOLD 50
-+ { DOT11RTSTHRESHOLD , ASN_INTEGER , RWRITE, var_dot11OperationTable, 4, { 2,1,1,2 } },
-+#define DOT11SHORTRETRYLIMIT 51
-+ { DOT11SHORTRETRYLIMIT, ASN_INTEGER , RWRITE, var_dot11OperationTable, 4, { 2,1,1,3 } },
-+#define DOT11LONGRETRYLIMIT 52
-+ { DOT11LONGRETRYLIMIT , ASN_INTEGER , RWRITE, var_dot11OperationTable, 4, { 2,1,1,4 } },
-+#define DOT11FRAGMENTATIONTHRESHOLD 53
-+ { DOT11FRAGMENTATIONTHRESHOLD, ASN_INTEGER , RWRITE, var_dot11OperationTable, 4, { 2,1,1,5 } },
-+#define DOT11MAXTRANSMITMSDULIFETIME 54
-+ { DOT11MAXTRANSMITMSDULIFETIME, ASN_INTEGER , RWRITE, var_dot11OperationTable, 4, { 2,1,1,6 } },
-+#define DOT11MAXRECEIVELIFETIME 55
-+ { DOT11MAXRECEIVELIFETIME, ASN_INTEGER , RWRITE, var_dot11OperationTable, 4, { 2,1,1,7 } },
-+#define DOT11MANUFACTURERID 56
-+ { DOT11MANUFACTURERID , ASN_OCTET_STR , RONLY , var_dot11OperationTable, 4, { 2,1,1,8 } },
-+#define DOT11PRODUCTID 57
-+ { DOT11PRODUCTID , ASN_OCTET_STR , RONLY , var_dot11OperationTable, 4, { 2,1,1,9 } },
-+
-+#define DOT11TRANSMITTEDFRAGMENTCOUNT 60
-+ { DOT11TRANSMITTEDFRAGMENTCOUNT, ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,1 } },
-+#define DOT11MULTICASTTRANSMITTEDFRAMECOUNT 61
-+ { DOT11MULTICASTTRANSMITTEDFRAMECOUNT, ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,2 } },
-+#define DOT11FAILEDCOUNT 62
-+ { DOT11FAILEDCOUNT , ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,3 } },
-+#define DOT11RETRYCOUNT 63
-+ { DOT11RETRYCOUNT , ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,4 } },
-+#define DOT11MULTIPLERETRYCOUNT 64
-+ { DOT11MULTIPLERETRYCOUNT, ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,5 } },
-+#define DOT11FRAMEDUPLICATECOUNT 65
-+ { DOT11FRAMEDUPLICATECOUNT, ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,6 } },
-+#define DOT11RTSSUCCESSCOUNT 66
-+ { DOT11RTSSUCCESSCOUNT, ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,7 } },
-+#define DOT11RTSFAILURECOUNT 67
-+ { DOT11RTSFAILURECOUNT, ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,8 } },
-+#define DOT11ACKFAILURECOUNT 68
-+ { DOT11ACKFAILURECOUNT, ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,9 } },
-+#define DOT11RECEIVEDFRAGMENTCOUNT 69
-+ { DOT11RECEIVEDFRAGMENTCOUNT, ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,10 } },
-+#define DOT11MULTICASTRECEIVEDFRAMECOUNT 70
-+ { DOT11MULTICASTRECEIVEDFRAMECOUNT, ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,11 } },
-+#define DOT11FCSERRORCOUNT 71
-+ { DOT11FCSERRORCOUNT , ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,12 } },
-+#define DOT11TRANSMITTEDFRAMECOUNT 72
-+ { DOT11TRANSMITTEDFRAMECOUNT, ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,13 } },
-+#define DOT11WEPUNDECRYPTABLECOUNT 73
-+ { DOT11WEPUNDECRYPTABLECOUNT, ASN_COUNTER , RONLY , var_dot11CountersTable, 4, { 2,2,1,14 } },
-+
-+#define DOT11ADDRESS 77
-+ { DOT11ADDRESS , ASN_OCTET_STR , RWRITE, var_dot11GroupAddressesTable, 4, { 2,3,1,2 } },
-+#define DOT11GROUPADDRESSESSTATUS 78
-+ { DOT11GROUPADDRESSESSTATUS, ASN_INTEGER , RWRITE, var_dot11GroupAddressesTable, 4, { 2,3,1,3 } },
-+
-+#define DOT11RESOURCETYPEIDNAME 79
-+ { DOT11RESOURCETYPEIDNAME, ASN_OCTET_STR , RONLY , var_ieee802dot11, 3, { 3,1,1 } },
-+#define DOT11MANUFACTUREROUI 82
-+ { DOT11MANUFACTUREROUI, ASN_OCTET_STR , RONLY , var_dot11ResourceInfoTable, 5, { 3,1,2,1,1 } },
-+#define DOT11MANUFACTURERNAME 83
-+ { DOT11MANUFACTURERNAME, ASN_OCTET_STR , RONLY , var_dot11ResourceInfoTable, 5, { 3,1,2,1,2 } },
-+#define DOT11MANUFACTURERPRODUCTNAME 84
-+ { DOT11MANUFACTURERPRODUCTNAME, ASN_OCTET_STR , RONLY , var_dot11ResourceInfoTable, 5, { 3,1,2,1,3 } },
-+#define DOT11MANUFACTURERPRODUCTVERSION 85
-+ { DOT11MANUFACTURERPRODUCTVERSION, ASN_OCTET_STR , RONLY , var_dot11ResourceInfoTable, 5, { 3,1,2,1,4 } },
-+
-+#define DOT11PHYTYPE 88
-+ { DOT11PHYTYPE , ASN_INTEGER , RONLY , var_dot11PhyOperationTable, 4, { 4,1,1,1 } },
-+#define DOT11CURRENTREGDOMAIN 89
-+ { DOT11CURRENTREGDOMAIN, ASN_INTEGER , RWRITE, var_dot11PhyOperationTable, 4, { 4,1,1,2 } },
-+#define DOT11TEMPTYPE 90
-+ { DOT11TEMPTYPE , ASN_INTEGER , RONLY , var_dot11PhyOperationTable, 4, { 4,1,1,3 } },
-+#define DOT11CURRENTTXANTENNA 93
-+ { DOT11CURRENTTXANTENNA, ASN_INTEGER , RWRITE, var_dot11PhyAntennaTable, 4, { 4,2,1,1 } },
-+#define DOT11DIVERSITYSUPPORT 94
-+ { DOT11DIVERSITYSUPPORT, ASN_INTEGER , RONLY , var_dot11PhyAntennaTable, 4, { 4,2,1,2 } },
-+#define DOT11CURRENTRXANTENNA 95
-+ { DOT11CURRENTRXANTENNA, ASN_INTEGER , RWRITE, var_dot11PhyAntennaTable, 4, { 4,2,1,3 } },
-+#define DOT11NUMBERSUPPORTEDPOWERLEVELS 98
-+ { DOT11NUMBERSUPPORTEDPOWERLEVELS, ASN_INTEGER , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,1 } },
-+#define DOT11TXPOWERLEVEL1 99
-+ { DOT11TXPOWERLEVEL1 , ASN_INTEGER , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,2 } },
-+#define DOT11TXPOWERLEVEL2 100
-+ { DOT11TXPOWERLEVEL2 , ASN_INTEGER , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,3 } },
-+#define DOT11TXPOWERLEVEL3 101
-+ { DOT11TXPOWERLEVEL3 , ASN_INTEGER , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,4 } },
-+#define DOT11TXPOWERLEVEL4 102
-+ { DOT11TXPOWERLEVEL4 , ASN_INTEGER , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,5 } },
-+#define DOT11TXPOWERLEVEL5 103
-+ { DOT11TXPOWERLEVEL5 , ASN_INTEGER , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,6 } },
-+#define DOT11TXPOWERLEVEL6 104
-+ { DOT11TXPOWERLEVEL6 , ASN_INTEGER , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,7 } },
-+#define DOT11TXPOWERLEVEL7 105
-+ { DOT11TXPOWERLEVEL7 , ASN_INTEGER , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,8 } },
-+#define DOT11TXPOWERLEVEL8 106
-+ { DOT11TXPOWERLEVEL8 , ASN_INTEGER , RONLY , var_dot11PhyTxPowerTable, 4, { 4,3,1,9 } },
-+#define DOT11CURRENTTXPOWERLEVEL 107
-+ { DOT11CURRENTTXPOWERLEVEL, ASN_INTEGER , RWRITE, var_dot11PhyTxPowerTable, 4, { 4,3,1,10 } },
-+
-+#define DOT11HOPTIME 110
-+ { DOT11HOPTIME , ASN_INTEGER , RONLY , var_dot11PhyFHSSTable, 4, { 4,4,1,1 } },
-+#define DOT11CURRENTCHANNELNUMBER 111
-+ { DOT11CURRENTCHANNELNUMBER, ASN_INTEGER , RWRITE, var_dot11PhyFHSSTable, 4, { 4,4,1,2 } },
-+#define DOT11MAXDWELLTIME 112
-+ { DOT11MAXDWELLTIME , ASN_INTEGER , RONLY , var_dot11PhyFHSSTable, 4, { 4,4,1,3 } },
-+#define DOT11CURRENTDWELLTIME 113
-+ { DOT11CURRENTDWELLTIME, ASN_INTEGER , RWRITE, var_dot11PhyFHSSTable, 4, { 4,4,1,4 } },
-+#define DOT11CURRENTSET 114
-+ { DOT11CURRENTSET , ASN_INTEGER , RWRITE, var_dot11PhyFHSSTable, 4, { 4,4,1,5 } },
-+#define DOT11CURRENTPATTERN 115
-+ { DOT11CURRENTPATTERN , ASN_INTEGER , RWRITE, var_dot11PhyFHSSTable, 4, { 4,4,1,6 } },
-+#define DOT11CURRENTINDEX 116
-+ { DOT11CURRENTINDEX , ASN_INTEGER , RWRITE, var_dot11PhyFHSSTable, 4, { 4,4,1,7 } },
-+
-+#define DOT11CURRENTCHANNEL 119
-+ { DOT11CURRENTCHANNEL , ASN_INTEGER , RWRITE, var_dot11PhyDSSSTable, 4, { 4,5,1,1 } },
-+#define DOT11CCAMODESUPPORTED 120
-+ { DOT11CCAMODESUPPORTED, ASN_INTEGER , RONLY , var_dot11PhyDSSSTable, 4, { 4,5,1,2 } },
-+#define DOT11CURRENTCCAMODE 121
-+ { DOT11CURRENTCCAMODE , ASN_INTEGER , RWRITE, var_dot11PhyDSSSTable, 4, { 4,5,1,3 } },
-+#define DOT11EDTHRESHOLD 122
-+ { DOT11EDTHRESHOLD , ASN_INTEGER , RWRITE, var_dot11PhyDSSSTable, 4, { 4,5,1,4 } },
-+
-+#define DOT11CCAWATCHDOGTIMERMAX 125
-+ { DOT11CCAWATCHDOGTIMERMAX, ASN_INTEGER , RWRITE, var_dot11PhyIRTable, 4, { 4,6,1,1 } },
-+#define DOT11CCAWATCHDOGCOUNTMAX 126
-+ { DOT11CCAWATCHDOGCOUNTMAX, ASN_INTEGER , RWRITE, var_dot11PhyIRTable, 4, { 4,6,1,2 } },
-+#define DOT11CCAWATCHDOGTIMERMIN 127
-+ { DOT11CCAWATCHDOGTIMERMIN, ASN_INTEGER , RWRITE, var_dot11PhyIRTable, 4, { 4,6,1,3 } },
-+#define DOT11CCAWATCHDOGCOUNTMIN 128
-+ { DOT11CCAWATCHDOGCOUNTMIN, ASN_INTEGER , RWRITE, var_dot11PhyIRTable, 4, { 4,6,1,4 } },
-+
-+#define DOT11REGDOMAINSSUPPORTVALUE 132
-+ { DOT11REGDOMAINSSUPPORTVALUE, ASN_INTEGER , RONLY , var_dot11RegDomainsSupportedTable, 4, { 4,7,1,2 } },
-+
-+#define DOT11SUPPORTEDTXANTENNA 136
-+ { DOT11SUPPORTEDTXANTENNA, ASN_INTEGER , RWRITE, var_dot11AntennasListTable, 4, { 4,8,1,2 } },
-+#define DOT11SUPPORTEDRXANTENNA 137
-+ { DOT11SUPPORTEDRXANTENNA, ASN_INTEGER , RWRITE, var_dot11AntennasListTable, 4, { 4,8,1,3 } },
-+#define DOT11DIVERSITYSELECTIONRX 138
-+ { DOT11DIVERSITYSELECTIONRX, ASN_INTEGER , RWRITE, var_dot11AntennasListTable, 4, { 4,8,1,4 } },
-+
-+#define DOT11SUPPORTEDDATARATESTXVALUE 142
-+ { DOT11SUPPORTEDDATARATESTXVALUE, ASN_INTEGER , RONLY , var_dot11SupportedDataRatesTxTable, 4, { 4,9,1,2 } },
-+
-+#define DOT11SUPPORTEDDATARATESRXVALUE 146
-+ { DOT11SUPPORTEDDATARATESRXVALUE, ASN_INTEGER , RONLY , var_dot11SupportedDataRatesRxTable, 4, { 4,10,1,2 } },
-+};
-+// ( L = length of the oidsuffix )
-+
-+/****************************************************************************
-+* *
-+* init_ieee802dot11() - perform any required initialization *
-+* *
-+****************************************************************************/
-+void init_ieee802dot11 ( void ) {
-+
-+ /* register ourselves with the agent to handle our mib tree */
-+ REGISTER_MIB("ieee802dot11", ieee802dot11_variables, variable7,
-+ ieee802dot11_variables_oid);
-+
-+ initLists();
-+}
-+
-+/****************************************************************************
-+* *
-+* shutdown_ieee802dot11() - perform any required cleanup @ shutdown *
-+* *
-+****************************************************************************/
-+void shutdown_ieee802dot11 ( void )
-+{
-+ flushLists();
-+}
-+
-+/****************************************************************************
-+* *
-+* var_ieee802dot11() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_ieee802dot11 ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method)
-+{
-+ loadTables();
-+
-+ if ( header_generic ( vp, name, length, exact,var_len,write_method )
-+ == MATCH_FAILED )
-+ return NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11RESOURCETYPEIDNAME:
-+ if ( !haveResourceTypeIDName )
-+ return NULL;
-+ *var_len = strlen ( resourceTypeIDName );
-+ return ( UCHAR * ) resourceTypeIDName;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11StationConfigTable() - return a variable value from the table *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11StationConfigTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+ static char MACWork[17];
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &scList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ sc = ( struct scTbl_data * ) np->data;
-+ rName[vp->namelen] = sc->ifIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) > 0 ))) {
-+
-+ switch ( vp->magic ) { // found requested OID, now check for requested variable
-+ case DOT11STATIONID:
-+ if ( sc->haveStationID ) found = TRUE; break;
-+ case DOT11MEDIUMOCCUPANCYLIMIT:
-+ if ( sc->haveMediumOccupancyLimit ) found = TRUE; break;
-+ case DOT11CFPOLLABLE:
-+ if ( sc->haveCFPPollable ) found = TRUE; break;
-+ case DOT11CFPPERIOD:
-+ if ( sc->haveCFPPeriod ) found = TRUE; break;
-+ case DOT11CFPMAXDURATION:
-+ if ( sc->haveMaxDuration ) found = TRUE; break;
-+ case DOT11AUTHENTICATIONRESPONSETIMEOUT:
-+ if ( sc->haveAuthenticationResponseTimeOut ) found = TRUE; break;
-+ case DOT11PRIVACYOPTIONIMPLEMENTED:
-+ if ( sc->havePrivacyOptionImplemented ) found = TRUE; break;
-+ case DOT11POWERMANAGEMENTMODE:
-+ if ( sc->havePowerManagementMode ) found = TRUE; break;
-+ case DOT11DESIREDSSID:
-+ if ( sc->haveDesiredSSID ) found = TRUE; break;
-+ case DOT11DESIREDBSSTYPE:
-+ if ( sc->haveDesiredBSSType ) found = TRUE; break;
-+ case DOT11OPERATIONALRATESET:
-+ if ( sc->haveOperationalRateSet ) found = TRUE; break;
-+ case DOT11BEACONPERIOD:
-+ if ( sc->haveBeaconPeriod ) found = TRUE; break;
-+ case DOT11DTIMPERIOD:
-+ if ( sc->haveDTIMPeriod ) found = TRUE; break;
-+ case DOT11ASSOCIATIONRESPONSETIMEOUT:
-+ if ( sc->haveAssociationResponseTimeOut ) found = TRUE; break;
-+ case DOT11DISASSOCIATEREASON:
-+ if ( sc->disAssociationReason ) found = TRUE; break;
-+ case DOT11DISASSOCIATESTATION:
-+ if ( sc->haveDisAssociationStation ) found = TRUE; break;
-+ case DOT11DEAUTHENTICATEREASON:
-+ if ( sc->deAuthenticationReason ) found = TRUE; break;
-+ case DOT11DEAUTHENTICATESTATION:
-+ if ( sc->haveDeAuthenticationStation ) found = TRUE; break;
-+ case DOT11AUTHENTICATEFAILSTATUS:
-+ if ( sc->authenticateFailStatus ) found = TRUE; break;
-+ case DOT11AUTHENTICATEFAILSTATION:
-+ if ( sc->haveAuthenticateFailStation ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+ *length = vp->namelen + 1;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11STATIONID:
-+// *write_method = write_dot11StationID;
-+ MACWork[ 0] = sc->stationID [ 0];
-+ MACWork[ 1] = sc->stationID [ 1];
-+ MACWork[ 2] = sc->stationID [ 3];
-+ MACWork[ 3] = sc->stationID [ 4];
-+ MACWork[ 4] = sc->stationID [ 6];
-+ MACWork[ 5] = sc->stationID [ 7];
-+ MACWork[ 6] = sc->stationID [ 9];
-+ MACWork[ 7] = sc->stationID [10];
-+ MACWork[ 8] = sc->stationID [12];
-+ MACWork[ 9] = sc->stationID [13];
-+ MACWork[10] = sc->stationID [15];
-+ MACWork[11] = sc->stationID [16];
-+ MACWork[12] = '\0';
-+ *var_len = 6;
-+ return ( UCHAR * ) htob ( MACWork );
-+
-+ case DOT11MEDIUMOCCUPANCYLIMIT:
-+// *write_method = write_dot11MediumOccupancyLimit;
-+ sc->mediumOccupancyLimit = 5;
-+ return ( UCHAR * ) &sc->mediumOccupancyLimit;
-+
-+ case DOT11CFPOLLABLE:
-+ return ( UCHAR * ) &sc->CFPPollable;
-+
-+ case DOT11CFPPERIOD:
-+// *write_method = write_dot11CFPPeriod;
-+ return ( UCHAR * ) &sc->CFPPeriod;
-+
-+ case DOT11CFPMAXDURATION:
-+// *write_method = write_dot11CFPMaxDuration;
-+ return ( UCHAR * ) &sc->maxDuration;
-+
-+ case DOT11AUTHENTICATIONRESPONSETIMEOUT:
-+// *write_method = write_dot11AuthenticationResponseTimeOut;
-+ return ( UCHAR * ) &sc->authenticationResponseTimeOut;
-+
-+ case DOT11PRIVACYOPTIONIMPLEMENTED:
-+ return ( UCHAR * ) &sc->privacyOptionImplemented;
-+
-+ case DOT11POWERMANAGEMENTMODE:
-+// *write_method = write_dot11PowerManagementMode;
-+ return ( UCHAR * ) &sc->powerManagementMode;
-+
-+ case DOT11DESIREDSSID:
-+// *write_method = write_dot11DesiredSSID;
-+ *var_len = strlen ( sc->desiredSSID );
-+ return ( UCHAR * ) sc->desiredSSID;
-+
-+ case DOT11DESIREDBSSTYPE:
-+// *write_method = write_dot11DesiredBSSType;
-+ return ( UCHAR * ) &sc->desiredBSSType;
-+
-+ case DOT11OPERATIONALRATESET:
-+// *write_method = write_dot11OperationalRateSet;
-+ *var_len = strlen ( sc->operationalRateSet );
-+ return ( UCHAR * ) sc->operationalRateSet;
-+
-+ case DOT11BEACONPERIOD:
-+// *write_method = write_dot11BeaconPeriod;
-+ return ( UCHAR * ) &sc->beaconPeriod;
-+
-+ case DOT11DTIMPERIOD:
-+// *write_method = write_dot11DTIMPeriod;
-+ return ( UCHAR * ) &sc->DTIMPeriod;
-+
-+ case DOT11ASSOCIATIONRESPONSETIMEOUT:
-+// *write_method = write_dot11AssociationResponseTimeOut;
-+ return ( UCHAR * ) &sc->associationResponseTimeOut;
-+
-+ case DOT11DISASSOCIATEREASON:
-+ return ( UCHAR * ) &sc->disAssociationReason;
-+
-+ case DOT11DISASSOCIATESTATION:
-+ MACWork[ 0] = sc->disAssociationStation[ 0];
-+ MACWork[ 1] = sc->disAssociationStation[ 1];
-+ MACWork[ 2] = sc->disAssociationStation[ 3];
-+ MACWork[ 3] = sc->disAssociationStation[ 4];
-+ MACWork[ 4] = sc->disAssociationStation[ 6];
-+ MACWork[ 5] = sc->disAssociationStation[ 7];
-+ MACWork[ 6] = sc->disAssociationStation[ 9];
-+ MACWork[ 7] = sc->disAssociationStation[10];
-+ MACWork[ 8] = sc->disAssociationStation[12];
-+ MACWork[ 9] = sc->disAssociationStation[13];
-+ MACWork[10] = sc->disAssociationStation[15];
-+ MACWork[11] = sc->disAssociationStation[16];
-+ MACWork[12] = '\0';
-+ *var_len = 6;
-+ return ( UCHAR * ) htob ( MACWork );
-+
-+ case DOT11DEAUTHENTICATEREASON:
-+ return ( UCHAR * ) &sc->deAuthenticationReason;
-+
-+ case DOT11DEAUTHENTICATESTATION:
-+ MACWork[ 0] = sc->deAuthenticationStation[ 0];
-+ MACWork[ 1] = sc->deAuthenticationStation[ 1];
-+ MACWork[ 2] = sc->deAuthenticationStation[ 3];
-+ MACWork[ 3] = sc->deAuthenticationStation[ 4];
-+ MACWork[ 4] = sc->deAuthenticationStation[ 6];
-+ MACWork[ 5] = sc->deAuthenticationStation[ 7];
-+ MACWork[ 6] = sc->deAuthenticationStation[ 9];
-+ MACWork[ 7] = sc->deAuthenticationStation[10];
-+ MACWork[ 8] = sc->deAuthenticationStation[12];
-+ MACWork[ 9] = sc->deAuthenticationStation[13];
-+ MACWork[10] = sc->deAuthenticationStation[15];
-+ MACWork[11] = sc->deAuthenticationStation[16];
-+ MACWork[12] = '\0';
-+ *var_len = 6;
-+ return ( UCHAR * ) htob ( MACWork );
-+
-+ case DOT11AUTHENTICATEFAILSTATUS:
-+ return ( UCHAR * ) &sc->authenticateFailStatus;
-+
-+ case DOT11AUTHENTICATEFAILSTATION:
-+ MACWork[ 0] = sc->authenticateFailStation[ 0];
-+ MACWork[ 1] = sc->authenticateFailStation[ 1];
-+ MACWork[ 2] = sc->authenticateFailStation[ 3];
-+ MACWork[ 3] = sc->authenticateFailStation[ 4];
-+ MACWork[ 4] = sc->authenticateFailStation[ 6];
-+ MACWork[ 5] = sc->authenticateFailStation[ 7];
-+ MACWork[ 6] = sc->authenticateFailStation[ 9];
-+ MACWork[ 7] = sc->authenticateFailStation[10];
-+ MACWork[ 8] = sc->authenticateFailStation[12];
-+ MACWork[ 9] = sc->authenticateFailStation[13];
-+ MACWork[10] = sc->authenticateFailStation[15];
-+ MACWork[11] = sc->authenticateFailStation[16];
-+ MACWork[12] = '\0';
-+ *var_len = 6;
-+ return ( UCHAR * ) htob ( MACWork );
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11AuthenticationAlgorithmsTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11AuthenticationAlgorithmsTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &aaList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ aa = ( struct aaTbl_data * ) np->data;
-+ rName[vp->namelen + 0] = aa->ifIndex;
-+ rName[vp->namelen + 1] = aa->authenticationAlgorithmsIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11AUTHENTICATIONALGORITHM:
-+ if ( aa->haveAuthenticationAlgorithm ) found = TRUE; break;
-+ case DOT11AUTHENTICATIONALGORITHMSENABLE:
-+ if ( aa->authenticationAlgorithmsEnable ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+ *length = vp->namelen + 2;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11AUTHENTICATIONALGORITHM:
-+ return ( UCHAR * ) &aa->authenticationAlgorithm;
-+
-+ case DOT11AUTHENTICATIONALGORITHMSENABLE:
-+// *write_method = write_dot11AuthenticationAlgorithmsEnable;
-+ return ( UCHAR * ) &aa->authenticationAlgorithmsEnable;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11WEPDefaultKeysTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11WEPDefaultKeysTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &dfList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ df = ( struct dfTbl_data * ) np->data;
-+ rName[vp->namelen + 0] = df->ifIndex;
-+ rName[vp->namelen + 1] = df->WEPDefaultKeyIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11WEPDEFAULTKEYVALUE:
-+ if ( df->haveWEPDefaultKeyValue ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+ *length = vp->namelen + 2;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11WEPDEFAULTKEYVALUE:
-+// *write_method = write_dot11WEPDefaultKeyValue;
-+ *var_len = strlen ( df->WEPDefaultKeyValue );
-+ return ( UCHAR * ) df->WEPDefaultKeyValue;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11WEPKeyMappingsTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11WEPKeyMappingsTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method)
-+{
-+ static char MACWork[17];
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &kmList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ km = ( struct kmTbl_data * ) np->data;
-+ rName[vp->namelen + 0] = km->ifIndex;
-+ rName[vp->namelen + 1] = km->WEPKeyMappingIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11WEPKEYMAPPINGADDRESS:
-+ if ( km->haveWEPKeyMappingAddress ) found = TRUE; break;
-+ case DOT11WEPKEYMAPPINGWEPON:
-+ if ( km->haveWEPKeyMappingWEPOn ) found = TRUE; break;
-+ case DOT11WEPKEYMAPPINGVALUE:
-+ if ( km->haveWEPKeyMappingValue ) found = TRUE; break;
-+ case DOT11WEPKEYMAPPINGSTATUS:
-+ if ( km->haveWEPKeyMappingStatus ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+ *length = vp->namelen + 2;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11WEPKEYMAPPINGADDRESS:
-+// *write_method = write_dot11WEPKeyMappingAddress;
-+ MACWork[ 0] = km->WEPKeyMappingAddress[ 0];
-+ MACWork[ 1] = km->WEPKeyMappingAddress[ 1];
-+ MACWork[ 2] = km->WEPKeyMappingAddress[ 3];
-+ MACWork[ 3] = km->WEPKeyMappingAddress[ 4];
-+ MACWork[ 4] = km->WEPKeyMappingAddress[ 6];
-+ MACWork[ 5] = km->WEPKeyMappingAddress[ 7];
-+ MACWork[ 6] = km->WEPKeyMappingAddress[ 9];
-+ MACWork[ 7] = km->WEPKeyMappingAddress[10];
-+ MACWork[ 8] = km->WEPKeyMappingAddress[12];
-+ MACWork[ 9] = km->WEPKeyMappingAddress[13];
-+ MACWork[10] = km->WEPKeyMappingAddress[15];
-+ MACWork[11] = km->WEPKeyMappingAddress[16];
-+ MACWork[12] = '\0';
-+ *var_len = 6;
-+ return ( UCHAR * ) htob ( MACWork );
-+
-+ case DOT11WEPKEYMAPPINGWEPON:
-+// *write_method = write_dot11WEPKeyMappingWEPOn;
-+ return ( UCHAR * ) &km->WEPKeyMappingWEPOn;
-+
-+ case DOT11WEPKEYMAPPINGVALUE:
-+// *write_method = write_dot11WEPKeyMappingValue;
-+ *var_len = strlen ( km->WEPKeyMappingValue );
-+ return ( UCHAR * ) km->WEPKeyMappingValue;
-+
-+ case DOT11WEPKEYMAPPINGSTATUS:
-+// *write_method = write_dot11WEPKeyMappingStatus;
-+ return ( UCHAR * ) &km->WEPKeyMappingStatus;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11PrivacyTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PrivacyTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &prList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ pr = ( struct prTbl_data * ) np->data;
-+ rName[vp->namelen] = pr->ifIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11PRIVACYINVOKED:
-+ if ( pr->havePrivacyInvoked ) found = TRUE; break;
-+ case DOT11WEPDEFAULTKEYID:
-+ if ( pr->haveWEPDefaultKeyID ) found = TRUE; break;
-+ case DOT11WEPKEYMAPPINGLENGTH:
-+ if ( pr->haveWEPKeyMappingLength ) found = TRUE; break;
-+ case DOT11EXCLUDEUNENCRYPTED:
-+ if ( pr->haveExcludeUnencrypted ) found = TRUE; break;
-+ case DOT11WEPICVERRORCOUNT:
-+ if ( pr->haveWEPICVErrorCount ) found = TRUE; break;
-+ case DOT11WEPEXCLUDEDCOUNT:
-+ if ( pr->haveWEPExcludedCount ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+ *length = vp->namelen + 1;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11PRIVACYINVOKED:
-+// *write_method = write_dot11PrivacyInvoked;
-+ return ( UCHAR * ) &pr->privacyInvoked;
-+
-+ case DOT11WEPDEFAULTKEYID:
-+// *write_method = write_dot11WEPDefaultKeyID;
-+ return ( UCHAR * ) &pr->WEPDefaultKeyID;
-+
-+ case DOT11WEPKEYMAPPINGLENGTH:
-+// *write_method = write_dot11WEPKeyMappingLength;
-+ return ( UCHAR * ) &pr->WEPKeyMappingLength;
-+
-+ case DOT11EXCLUDEUNENCRYPTED:
-+// *write_method = write_dot11ExcludeUnencrypted;
-+ return ( UCHAR * ) &pr->excludeUnencrypted;
-+
-+ case DOT11WEPICVERRORCOUNT:
-+ return ( UCHAR * ) &pr->WEPICVErrorCount;
-+
-+ case DOT11WEPEXCLUDEDCOUNT:
-+ return ( UCHAR * ) &pr->WEPExcludedCount;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11OperationTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11OperationTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+ static char MACWork[17];
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &opList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ op = ( struct opTbl_data * ) np->data;
-+ rName[vp->namelen] = op->ifIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) > 0 ))) {
-+
-+ switch ( vp->magic ) { // found requested OID, now check for requested variable
-+ case DOT11MACADDRESS:
-+ if ( op->haveMACAddress ) found = TRUE; break;
-+ case DOT11RTSTHRESHOLD:
-+ if ( op->haveRTSThreshold ) found = TRUE; break;
-+ case DOT11SHORTRETRYLIMIT:
-+ if ( op->haveShortRetryLimit ) found = TRUE; break;
-+ case DOT11LONGRETRYLIMIT:
-+ if ( op->haveLongRetryLimit ) found = TRUE; break;
-+ case DOT11FRAGMENTATIONTHRESHOLD:
-+ if ( op->haveFragmentationThreshold ) found = TRUE; break;
-+ case DOT11MAXTRANSMITMSDULIFETIME:
-+ if ( op->haveMaxTransmitMSDULifetime ) found = TRUE; break;
-+ case DOT11MAXRECEIVELIFETIME:
-+ if ( op->haveMaxReceiveLifetime ) found = TRUE; break;
-+ case DOT11MANUFACTURERID:
-+ if ( op->haveManufacturerID ) found = TRUE; break;
-+ case DOT11PRODUCTID:
-+ if ( op->haveProductID ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+ *length = vp->namelen + 1;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11MACADDRESS:
-+ MACWork[ 0] = op->MACAddress[ 0];
-+ MACWork[ 1] = op->MACAddress[ 1];
-+ MACWork[ 2] = op->MACAddress[ 3];
-+ MACWork[ 3] = op->MACAddress[ 4];
-+ MACWork[ 4] = op->MACAddress[ 6];
-+ MACWork[ 5] = op->MACAddress[ 7];
-+ MACWork[ 6] = op->MACAddress[ 9];
-+ MACWork[ 7] = op->MACAddress[10];
-+ MACWork[ 8] = op->MACAddress[12];
-+ MACWork[ 9] = op->MACAddress[13];
-+ MACWork[10] = op->MACAddress[15];
-+ MACWork[11] = op->MACAddress[16];
-+ MACWork[12] = '\0';
-+ *var_len = 6;
-+ return ( UCHAR * ) htob ( MACWork );
-+
-+ case DOT11RTSTHRESHOLD:
-+// *write_method = write_dot11RTSThreshold;
-+ return ( UCHAR * ) &op->RTSThreshold;
-+
-+ case DOT11SHORTRETRYLIMIT:
-+// *write_method = write_dot11ShortRetryLimit;
-+ return ( UCHAR * ) &op->shortRetryLimit;
-+
-+ case DOT11LONGRETRYLIMIT:
-+// *write_method = write_dot11LongRetryLimit;
-+ return ( UCHAR * ) &op->longRetryLimit;
-+
-+ case DOT11FRAGMENTATIONTHRESHOLD:
-+// *write_method = write_dot11FragmentationThreshold;
-+ return ( UCHAR * ) &op->fragmentationThreshold;
-+
-+ case DOT11MAXTRANSMITMSDULIFETIME:
-+// *write_method = write_dot11MaxTransmitMSDULifetime;
-+ return ( UCHAR * ) &op->maxTransmitMSDULifetime;
-+
-+ case DOT11MAXRECEIVELIFETIME:
-+// *write_method = write_dot11MaxReceiveLifetime;
-+ return ( UCHAR * ) &op->maxReceiveLifetime;
-+
-+ case DOT11MANUFACTURERID:
-+ *var_len = strlen ( op->manufacturerID );
-+ return ( UCHAR * ) op->manufacturerID;
-+
-+ case DOT11PRODUCTID:
-+ *var_len = strlen ( op->productID );
-+ return ( UCHAR * ) op->productID;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11CountersTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11CountersTable(struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method)
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &coList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ co = ( struct coTbl_data * ) np->data;
-+ rName[vp->namelen] = co->ifIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11TRANSMITTEDFRAGMENTCOUNT:
-+ if ( co->haveTransmittedFragmentCount ) found = TRUE; break;
-+ case DOT11MULTICASTTRANSMITTEDFRAMECOUNT:
-+ if ( co->haveTransmittedFrameCount ) found = TRUE; break;
-+ case DOT11FAILEDCOUNT:
-+ if ( co->haveFailedCount ) found = TRUE; break;
-+ case DOT11RETRYCOUNT:
-+ if ( co->haveRetryCount ) found = TRUE; break;
-+ case DOT11MULTIPLERETRYCOUNT:
-+ if ( co->haveMultipleRetryCount ) found = TRUE; break;
-+ case DOT11FRAMEDUPLICATECOUNT:
-+ if ( co->haveFrameDuplicateCount ) found = TRUE; break;
-+ case DOT11RTSSUCCESSCOUNT:
-+ if ( co->haveRTSSuccessCount ) found = TRUE; break;
-+ case DOT11RTSFAILURECOUNT:
-+ if ( co->haveRTSFailureCount ) found = TRUE; break;
-+ case DOT11ACKFAILURECOUNT:
-+ if ( co->haveACKFailureCount ) found = TRUE; break;
-+ case DOT11RECEIVEDFRAGMENTCOUNT:
-+ if ( co->haveReceivedFragmentCount ) found = TRUE; break;
-+ case DOT11MULTICASTRECEIVEDFRAMECOUNT:
-+ if ( co->haveMulticastReceivedFrameCount ) found = TRUE; break;
-+ case DOT11FCSERRORCOUNT:
-+ if ( co->haveFCSErrorCount ) found = TRUE; break;
-+ case DOT11TRANSMITTEDFRAMECOUNT:
-+ if ( co->haveTransmittedFrameCount ) found = TRUE; break;
-+ case DOT11WEPUNDECRYPTABLECOUNT:
-+ if ( co->haveWEPUndecryptableCount ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+ *length = vp->namelen + 1;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11TRANSMITTEDFRAGMENTCOUNT: return ( UCHAR * ) &co->transmittedFragmentCount;
-+ case DOT11MULTICASTTRANSMITTEDFRAMECOUNT: return ( UCHAR * ) &co->transmittedFrameCount;
-+ case DOT11FAILEDCOUNT: return ( UCHAR * ) &co->failedCount;
-+ case DOT11RETRYCOUNT: return ( UCHAR * ) &co->retryCount;
-+ case DOT11MULTIPLERETRYCOUNT: return ( UCHAR * ) &co->multipleRetryCount;
-+ case DOT11FRAMEDUPLICATECOUNT: return ( UCHAR * ) &co->frameDuplicateCount;
-+ case DOT11RTSSUCCESSCOUNT: return ( UCHAR * ) &co->RTSSuccessCount;
-+ case DOT11RTSFAILURECOUNT: return ( UCHAR * ) &co->RTSFailureCount;
-+ case DOT11ACKFAILURECOUNT: return ( UCHAR * ) &co->ACKFailureCount;
-+ case DOT11RECEIVEDFRAGMENTCOUNT: return ( UCHAR * ) &co->receivedFragmentCount;
-+ case DOT11MULTICASTRECEIVEDFRAMECOUNT: return ( UCHAR * ) &co->multicastReceivedFrameCount;
-+ case DOT11FCSERRORCOUNT: return ( UCHAR * ) &co->FCSErrorCount;
-+ case DOT11TRANSMITTEDFRAMECOUNT: return ( UCHAR * ) &co->transmittedFrameCount;
-+ case DOT11WEPUNDECRYPTABLECOUNT: return ( UCHAR * ) &co->WEPUndecryptableCount;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11GroupAddressesTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11GroupAddressesTable(struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method)
-+{
-+ static char MACWork[17];
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &gaList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ ga = ( struct gaTbl_data * ) np->data;
-+ rName[vp->namelen + 0] = ga->ifIndex;
-+ rName[vp->namelen + 1] = ga->groupAddressesIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11ADDRESS:
-+ if ( ga->haveAddress ) found = TRUE; break;
-+ case DOT11GROUPADDRESSESSTATUS:
-+ if ( ga->haveGroupAddressesStatus ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+ *length = vp->namelen + 2;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11ADDRESS:
-+// *write_method = write_dot11Address;
-+ MACWork[ 0] = ga->address[ 0];
-+ MACWork[ 1] = ga->address[ 1];
-+ MACWork[ 2] = ga->address[ 3];
-+ MACWork[ 3] = ga->address[ 4];
-+ MACWork[ 4] = ga->address[ 6];
-+ MACWork[ 5] = ga->address[ 7];
-+ MACWork[ 6] = ga->address[ 9];
-+ MACWork[ 7] = ga->address[10];
-+ MACWork[ 8] = ga->address[12];
-+ MACWork[ 9] = ga->address[13];
-+ MACWork[10] = ga->address[15];
-+ MACWork[11] = ga->address[16];
-+ MACWork[12] = '\0';
-+ *var_len = 6;
-+ return ( UCHAR * ) htob ( MACWork );
-+
-+ case DOT11GROUPADDRESSESSTATUS:
-+// *write_method = write_dot11GroupAddressesStatus;
-+ return ( UCHAR * ) &ga->groupAddressesStatus;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11ResourceInfoTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11ResourceInfoTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &riList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ ri = ( struct riTbl_data * ) np->data;
-+ rName[vp->namelen] = ri->ifIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11MANUFACTUREROUI:
-+ if ( ri->haveManufacturerOUI ) found = TRUE; break;
-+ case DOT11MANUFACTURERNAME:
-+ if ( ri->haveManufacturerName ) found = TRUE; break;
-+ case DOT11MANUFACTURERPRODUCTNAME:
-+ if ( ri->haveManufacturerProductName ) found = TRUE; break;
-+ case DOT11MANUFACTURERPRODUCTVERSION:
-+ if ( ri->haveManufacturerProductVersion ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+ *length = vp->namelen + 1;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11MANUFACTUREROUI:
-+ *var_len = strlen ( ri->manufacturerOUI );
-+ return ( UCHAR * ) ri->manufacturerOUI;
-+
-+ case DOT11MANUFACTURERNAME:
-+ *var_len = strlen ( ri->manufacturerName );
-+ return ( UCHAR * ) ri->manufacturerName;
-+
-+ case DOT11MANUFACTURERPRODUCTNAME:
-+ *var_len = strlen ( ri->manufacturerProductName );
-+ return ( UCHAR * ) ri->manufacturerProductName;
-+
-+ case DOT11MANUFACTURERPRODUCTVERSION:
-+ *var_len = strlen ( ri->manufacturerProductVersion );
-+ return ( UCHAR * ) ri->manufacturerProductVersion;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11PhyOperationTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PhyOperationTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &poList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ po = ( struct poTbl_data * ) np->data;
-+ rName[vp->namelen] = po->ifIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11PHYTYPE:
-+ if ( po->havePHYType ) found = TRUE; break;
-+ case DOT11CURRENTREGDOMAIN:
-+ if ( po->haveCurrentRegDomain ) found = TRUE; break;
-+ case DOT11TEMPTYPE:
-+ if ( po->haveTempType ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+ *length = vp->namelen + 1;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11PHYTYPE:
-+ return ( UCHAR * ) &po->PHYType;
-+
-+ case DOT11CURRENTREGDOMAIN:
-+// *write_method = write_dot11CurrentRegDomain;
-+ return ( UCHAR * ) &po->currentRegDomain;
-+
-+ case DOT11TEMPTYPE:
-+ return ( UCHAR * ) &po->tempType;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11PhyAntennaTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PhyAntennaTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &paList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ pa = ( struct paTbl_data * ) np->data;
-+ rName[vp->namelen] = pa->ifIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11CURRENTTXANTENNA:
-+ if ( pa->haveCurrentTxAntenna ) found = TRUE; break;
-+ case DOT11DIVERSITYSUPPORT:
-+ if ( pa->haveDiversitySupport ) found = TRUE; break;
-+ case DOT11CURRENTRXANTENNA:
-+ if ( pa->haveCurrentRxAntenna ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+ *length = vp->namelen + 1;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11CURRENTTXANTENNA:
-+// *write_method = write_dot11CurrentTxAntenna;
-+ return ( UCHAR * ) &pa->currentTxAntenna;
-+
-+ case DOT11DIVERSITYSUPPORT:
-+ return ( UCHAR * ) &pa->diversitySupport;
-+
-+ case DOT11CURRENTRXANTENNA:
-+// *write_method = write_dot11CurrentRxAntenna;
-+ return ( UCHAR * ) &pa->currentRxAntenna;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11PhyTxPowerTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PhyTxPowerTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &ptList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ pt = ( struct ptTbl_data * ) np->data;
-+ rName[vp->namelen] = pt->ifIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11NUMBERSUPPORTEDPOWERLEVELS:
-+ if ( pt->haveNumberSupportedPowerLevels ) found = TRUE; break;
-+ case DOT11TXPOWERLEVEL1:
-+ if ( pt->haveTxPowerLevel1 ) found = TRUE; break;
-+ case DOT11TXPOWERLEVEL2:
-+ if ( pt->haveTxPowerLevel2 ) found = TRUE; break;
-+ case DOT11TXPOWERLEVEL3:
-+ if ( pt->haveTxPowerLevel3 ) found = TRUE; break;
-+ case DOT11TXPOWERLEVEL4:
-+ if ( pt->haveTxPowerLevel4 ) found = TRUE; break;
-+ case DOT11TXPOWERLEVEL5:
-+ if ( pt->haveTxPowerLevel5 ) found = TRUE; break;
-+ case DOT11TXPOWERLEVEL6:
-+ if ( pt->haveTxPowerLevel6 ) found = TRUE; break;
-+ case DOT11TXPOWERLEVEL7:
-+ if ( pt->haveTxPowerLevel7 ) found = TRUE; break;
-+ case DOT11TXPOWERLEVEL8:
-+ if ( pt->haveTxPowerLevel8 ) found = TRUE; break;
-+ case DOT11CURRENTTXPOWERLEVEL:
-+ if ( pt->currentTxPowerLevel ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+ *length = vp->namelen + 1;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11NUMBERSUPPORTEDPOWERLEVELS:
-+ return ( UCHAR * ) &pt->numberSupportedPowerLevels;
-+
-+ case DOT11TXPOWERLEVEL1: return ( UCHAR * ) &pt->TxPowerLevel1;
-+ case DOT11TXPOWERLEVEL2: return ( UCHAR * ) &pt->TxPowerLevel2;
-+ case DOT11TXPOWERLEVEL3: return ( UCHAR * ) &pt->TxPowerLevel3;
-+ case DOT11TXPOWERLEVEL4: return ( UCHAR * ) &pt->TxPowerLevel4;
-+ case DOT11TXPOWERLEVEL5: return ( UCHAR * ) &pt->TxPowerLevel5;
-+ case DOT11TXPOWERLEVEL6: return ( UCHAR * ) &pt->TxPowerLevel6;
-+ case DOT11TXPOWERLEVEL7: return ( UCHAR * ) &pt->TxPowerLevel7;
-+ case DOT11TXPOWERLEVEL8: return ( UCHAR * ) &pt->TxPowerLevel8;
-+
-+ case DOT11CURRENTTXPOWERLEVEL:
-+// *write_method = write_dot11CurrentTxPowerLevel;
-+ return ( UCHAR * ) &pt->currentTxPowerLevel;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11PhyFHSSTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PhyFHSSTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &pfList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ pf = ( struct pfTbl_data * ) np->data;
-+ rName[vp->namelen] = pf->ifIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11HOPTIME:
-+ if ( pf->haveHopTime ) found = TRUE; break;
-+ case DOT11CURRENTCHANNELNUMBER:
-+ if ( pf->haveCurrentChannelNumber ) found = TRUE; break;
-+ case DOT11MAXDWELLTIME:
-+ if ( pf->haveMaxDwellTime ) found = TRUE; break;
-+ case DOT11CURRENTDWELLTIME:
-+ if ( pf->haveCurrentDwellTime ) found = TRUE; break;
-+ case DOT11CURRENTSET:
-+ if ( pf->haveCurrentSet ) found = TRUE; break;
-+ case DOT11CURRENTPATTERN:
-+ if ( pf->haveCurrentPattern ) found = TRUE; break;
-+ case DOT11CURRENTINDEX:
-+ if ( pf->haveCurrentIndex ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+ *length = vp->namelen + 1;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11HOPTIME:
-+ return ( UCHAR * ) &pf->hopTime;
-+
-+ case DOT11CURRENTCHANNELNUMBER:
-+// *write_method = write_dot11CurrentChannelNumber;
-+ return ( UCHAR * ) &pf->currentChannelNumber;
-+
-+ case DOT11MAXDWELLTIME:
-+ return ( UCHAR * ) &pf->maxDwellTime;
-+
-+ case DOT11CURRENTDWELLTIME:
-+// *write_method = write_dot11CurrentDwellTime;
-+ return ( UCHAR * ) &pf->currentDwellTime;
-+
-+ case DOT11CURRENTSET:
-+// *write_method = write_dot11CurrentSet;
-+ return ( UCHAR * ) &pf->currentSet;
-+
-+ case DOT11CURRENTPATTERN:
-+// *write_method = write_dot11CurrentPattern;
-+ return ( UCHAR * ) &pf->currentPattern;
-+
-+ case DOT11CURRENTINDEX:
-+// *write_method = write_dot11CurrentIndex;
-+ return ( UCHAR * ) &pf->currentIndex;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11PhyDSSSTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PhyDSSSTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &pdList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ pd = ( struct pdTbl_data * ) np->data;
-+ rName[vp->namelen] = pd->ifIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11CURRENTCHANNEL:
-+ if ( pd->haveCurrentChannel ) found = TRUE; break;
-+ case DOT11CCAMODESUPPORTED:
-+ if ( pd->haveCCAModeSupported ) found = TRUE; break;
-+ case DOT11CURRENTCCAMODE:
-+ if ( pd->haveCurrentCCAMode ) found = TRUE; break;
-+ case DOT11EDTHRESHOLD:
-+ if ( pd->haveEDThreshold ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+ *length = vp->namelen + 1;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11CURRENTCHANNEL:
-+// *write_method = write_dot11CurrentChannel;
-+ return ( UCHAR * ) &pd->currentChannel;
-+
-+ case DOT11CCAMODESUPPORTED:
-+ return ( UCHAR * ) &pd->CCAModeSupported;
-+
-+ case DOT11CURRENTCCAMODE:
-+// *write_method = write_dot11CurrentCCAMode;
-+ return ( UCHAR * ) &pd->currentCCAMode;
-+
-+ case DOT11EDTHRESHOLD:
-+// *write_method = write_dot11EDThreshold;
-+ return ( UCHAR * ) &pd->EDThreshold;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11PhyIRTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11PhyIRTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method)
-+{
-+
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &piList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ pi = ( struct piTbl_data * ) np->data;
-+ rName[vp->namelen] = pi->ifIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 1, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11CCAWATCHDOGTIMERMAX:
-+ if ( pi->CCAWatchdogTimerMax ) found = TRUE; break;
-+ case DOT11CCAWATCHDOGCOUNTMAX:
-+ if ( pi->CCAWatchdogCountMax ) found = TRUE; break;
-+ case DOT11CCAWATCHDOGTIMERMIN:
-+ if ( pi->CCAWatchdogTimerMin ) found = TRUE; break;
-+ case DOT11CCAWATCHDOGCOUNTMIN:
-+ if ( pi->CCAWatchdogCountMin ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 1 ) * sizeof ( oid ));
-+ *length = vp->namelen + 1;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11CCAWATCHDOGTIMERMAX:
-+// *write_method = write_dot11CCAWatchdogTimerMax;
-+ return ( UCHAR * ) &pi->CCAWatchdogTimerMax;
-+
-+ case DOT11CCAWATCHDOGCOUNTMAX:
-+// *write_method = write_dot11CCAWatchdogCountMax;
-+ return ( UCHAR * ) &pi->CCAWatchdogCountMax;
-+
-+ case DOT11CCAWATCHDOGTIMERMIN:
-+// *write_method = write_dot11CCAWatchdogTimerMin;
-+ return ( UCHAR * ) &pi->CCAWatchdogTimerMin;
-+
-+ case DOT11CCAWATCHDOGCOUNTMIN:
-+// *write_method = write_dot11CCAWatchdogCountMin;
-+ return ( UCHAR * ) &pi->CCAWatchdogCountMin;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11RegDomainsSupportedTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11RegDomainsSupportedTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method)
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &rdList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ rd = ( struct rdTbl_data * ) np->data;
-+ rName[vp->namelen + 0] = rd->ifIndex;
-+ rName[vp->namelen + 1] = rd->regDomainsSupportIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11REGDOMAINSSUPPORTVALUE:
-+ if ( rd->haveRegDomainsSupportValue ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+ *length = vp->namelen + 2;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11REGDOMAINSSUPPORTVALUE:
-+ return ( UCHAR * ) &rd->regDomainsSupportValue;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11AntennasListTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11AntennasListTable(struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method)
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &alList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ al = ( struct alTbl_data * ) np->data;
-+ rName[vp->namelen + 0] = al->ifIndex;
-+ rName[vp->namelen + 1] = al->antennaListIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11SUPPORTEDTXANTENNA:
-+ if ( al->haveSupportedTxAntenna ) found = TRUE; break;
-+ case DOT11SUPPORTEDRXANTENNA:
-+ if ( al->haveSupportedRxAntenna ) found = TRUE; break;
-+ case DOT11DIVERSITYSELECTIONRX:
-+ if ( al->haveDiversitySelectionRx ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+ *length = vp->namelen + 2;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11SUPPORTEDTXANTENNA:
-+// *write_method = write_dot11SupportedTxAntenna;
-+ return ( UCHAR * ) &al->supportedTxAntenna;
-+
-+ case DOT11SUPPORTEDRXANTENNA:
-+// *write_method = write_dot11SupportedRxAntenna;
-+ return ( UCHAR * ) &al->supportedRxAntenna;
-+
-+ case DOT11DIVERSITYSELECTIONRX:
-+// *write_method = write_dot11DiversitySelectionRx;
-+ return ( UCHAR * ) &al->diversitySelectionRx;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11SupportedDataRatesTxTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11SupportedDataRatesTxTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &rtList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ rt = ( struct rtTbl_data * ) np->data;
-+ rName[vp->namelen + 0] = rt->ifIndex;
-+ rName[vp->namelen + 1] = rt->supportedDataRatesTxIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11SUPPORTEDDATARATESTXVALUE:
-+ if ( rt->haveSupportedDataRatesTxValue ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+ *length = vp->namelen + 2;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11SUPPORTEDDATARATESTXVALUE:
-+ return ( UCHAR * ) &rt->supportedDataRatesTxValue;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+* var_dot11SupportedDataRatesRxTable() - *
-+* *
-+****************************************************************************/
-+unsigned char *
-+var_dot11SupportedDataRatesRxTable ( struct variable *vp,
-+ oid *name,
-+ size_t *length,
-+ int exact,
-+ size_t *var_len,
-+ WriteMethod **write_method )
-+{
-+ int found = FALSE;
-+ oid rName [ MAX_OID_LEN ]; // OID to be returned
-+
-+ loadTables();
-+ memcpy (( char * ) rName, ( char * ) vp->name, ( int ) vp->namelen * sizeof ( oid ));
-+ for ( np = LIST_FIRST ( &rrList ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ rr = ( struct rrTbl_data * ) np->data;
-+ rName[vp->namelen + 0] = rr->ifIndex;
-+ rName[vp->namelen + 1] = rr->supportedDataRatesRxIndex;
-+ if (( exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) == 0 )) ||
-+ ( !exact && ( snmp_oid_compare ( rName, vp->namelen + 2, name, *length ) > 0 ))) {
-+ switch ( vp->magic ) {
-+ case DOT11SUPPORTEDDATARATESRXVALUE:
-+ if ( rr->haveSupportedDataRatesRxValue ) found = TRUE; break;
-+ }
-+ }
-+ if ( found )
-+ break;
-+ }
-+
-+ if ( !found )
-+ return NULL;
-+
-+ memcpy (( char * ) name, ( char * ) rName, ( vp->namelen + 2 ) * sizeof ( oid ));
-+ *length = vp->namelen + 2;
-+ *var_len = sizeof ( long );
-+ *write_method = NULL;
-+
-+ switch ( vp->magic ) {
-+
-+ case DOT11SUPPORTEDDATARATESRXVALUE:
-+ return ( UCHAR * ) &rr->supportedDataRatesRxValue;
-+
-+ default:
-+ ERROR_MSG ( "" );
-+ }
-+
-+ return NULL;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11StationID(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static unsigned char string[SPRINT_MAX_LEN];
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_OCTET_STR ) {
-+ fprintf ( stderr, "write to dot11StationID not ASN_OCTET_STR\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( string )) {
-+ fprintf ( stderr,"write to dot11StationID: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11MediumOccupancyLimit(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11MediumOccupancyLimit not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr,"write to dot11MediumOccupancyLimit: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CFPPeriod(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CFPPeriod not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CFPPeriod: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CFPMaxDuration(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CFPMaxDuration not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CFPMaxDuration: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11AuthenticationResponseTimeOut(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11AuthenticationResponseTimeOut not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11AuthenticationResponseTimeOut: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11PowerManagementMode(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11PowerManagementMode not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )) {
-+ fprintf ( stderr, "write to dot11PowerManagementMode: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11DesiredSSID(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static unsigned char string[SPRINT_MAX_LEN];
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_OCTET_STR ) {
-+ fprintf ( stderr, "write to dot11DesiredSSID not ASN_OCTET_STR\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( string )){
-+ fprintf ( stderr, "write to dot11DesiredSSID: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11DesiredBSSType(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11DesiredBSSType not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11DesiredBSSType: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11OperationalRateSet(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static unsigned char string[SPRINT_MAX_LEN];
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_OCTET_STR ) {
-+ fprintf ( stderr, "write to dot11OperationalRateSet not ASN_OCTET_STR\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( string )){
-+ fprintf ( stderr, "write to dot11OperationalRateSet: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11BeaconPeriod(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11BeaconPeriod not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr,"write to dot11BeaconPeriod: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11DTIMPeriod(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11DTIMPeriod not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr,"write to dot11DTIMPeriod: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11AssociationResponseTimeOut(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11AssociationResponseTimeOut not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )) {
-+ fprintf ( stderr,"write to dot11AssociationResponseTimeOut: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11AuthenticationAlgorithmsEnable(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11AuthenticationAlgorithmsEnable not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr,"write to dot11AuthenticationAlgorithmsEnable: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11WEPDefaultKeyValue(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static unsigned char string[SPRINT_MAX_LEN];
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_OCTET_STR ) {
-+ fprintf ( stderr, "write to dot11WEPDefaultKeyValue not ASN_OCTET_STR\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( string )){
-+ fprintf ( stderr,"write to dot11WEPDefaultKeyValue: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11WEPKeyMappingAddress(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static unsigned char string[SPRINT_MAX_LEN];
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_OCTET_STR ) {
-+ fprintf ( stderr, "write to dot11WEPKeyMappingAddress not ASN_OCTET_STR\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( string )) {
-+ fprintf ( stderr,"write to dot11WEPKeyMappingAddress: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11WEPKeyMappingWEPOn(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11WEPKeyMappingWEPOn not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11WEPKeyMappingWEPOn: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11WEPKeyMappingValue(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static unsigned char string[SPRINT_MAX_LEN];
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_OCTET_STR ) {
-+ fprintf ( stderr, "write to dot11WEPKeyMappingValue not ASN_OCTET_STR\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( string )) {
-+ fprintf ( stderr, "write to dot11WEPKeyMappingValue: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11WEPKeyMappingStatus(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11WEPKeyMappingStatus not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11WEPKeyMappingStatus: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11PrivacyInvoked(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11PrivacyInvoked not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11PrivacyInvoked: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11WEPDefaultKeyID(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11WEPDefaultKeyID not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11WEPDefaultKeyID: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11WEPKeyMappingLength(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11WEPKeyMappingLength not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11WEPKeyMappingLength: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11ExcludeUnencrypted(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11ExcludeUnencrypted not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr,"write to dot11ExcludeUnencrypted: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11RTSThreshold(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ){
-+ fprintf ( stderr, "write to dot11RTSThreshold not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11RTSThreshold: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11ShortRetryLimit(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11ShortRetryLimit not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11ShortRetryLimit: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11LongRetryLimit(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11LongRetryLimit not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr,"write to dot11LongRetryLimit: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11FragmentationThreshold(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11FragmentationThreshold not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr,"write to dot11FragmentationThreshold: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11MaxTransmitMSDULifetime(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11MaxTransmitMSDULifetime not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11MaxTransmitMSDULifetime: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11MaxReceiveLifetime(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11MaxReceiveLifetime not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11MaxReceiveLifetime: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11Address(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static unsigned char string[SPRINT_MAX_LEN];
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_OCTET_STR ) {
-+ fprintf ( stderr, "write to dot11Address not ASN_OCTET_STR\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( string )){
-+ fprintf ( stderr, "write to dot11Address: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11GroupAddressesStatus(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11GroupAddressesStatus not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr,"write to dot11GroupAddressesStatus: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CurrentRegDomain(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CurrentRegDomain not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CurrentRegDomain: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CurrentTxAntenna(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CurrentTxAntenna not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CurrentTxAntenna: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CurrentRxAntenna(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CurrentRxAntenna not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr,"write to dot11CurrentRxAntenna: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CurrentTxPowerLevel(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CurrentTxPowerLevel not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CurrentTxPowerLevel: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CurrentChannelNumber(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CurrentChannelNumber not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr,"write to dot11CurrentChannelNumber: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CurrentDwellTime(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CurrentDwellTime not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CurrentDwellTime: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CurrentSet(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CurrentSet not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CurrentSet: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CurrentPattern(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CurrentPattern not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CurrentPattern: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CurrentIndex(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CurrentIndex not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CurrentIndex: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CurrentChannel(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CurrentChannel not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CurrentChannel: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CurrentCCAMode(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CurrentCCAMode not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr,"write to dot11CurrentCCAMode: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11EDThreshold(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11EDThreshold not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11EDThreshold: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CCAWatchdogTimerMax(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CCAWatchdogTimerMax not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CCAWatchdogTimerMax: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CCAWatchdogCountMax(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CCAWatchdogCountMax not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CCAWatchdogCountMax: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CCAWatchdogTimerMin(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CCAWatchdogTimerMin not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CCAWatchdogTimerMin: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11CCAWatchdogCountMin(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11CCAWatchdogCountMin not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11CCAWatchdogCountMin: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11SupportedTxAntenna(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11SupportedTxAntenna not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11SupportedTxAntenna: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11SupportedRxAntenna(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11SupportedRxAntenna not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr,"write to dot11SupportedRxAntenna: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+int
-+write_dot11DiversitySelectionRx(int action,
-+ u_char *var_val,
-+ u_char var_val_type,
-+ size_t var_val_len,
-+ u_char *statP,
-+ oid *name,
-+ size_t name_len)
-+{
-+ static long *long_ret;
-+ int size;
-+
-+ switch ( action ) {
-+
-+ case RESERVE1:
-+ if ( var_val_type != ASN_INTEGER ) {
-+ fprintf ( stderr, "write to dot11DiversitySelectionRx not ASN_INTEGER\n" );
-+ return SNMP_ERR_WRONGTYPE;
-+ }
-+ if ( var_val_len > sizeof ( long_ret )){
-+ fprintf ( stderr, "write to dot11DiversitySelectionRx: bad length\n" );
-+ return SNMP_ERR_WRONGLENGTH;
-+ }
-+ break;
-+
-+ case RESERVE2:
-+ case FREE:
-+ case ACTION:
-+ case UNDO:
-+ break;
-+
-+ case COMMIT:
-+ break;
-+ }
-+
-+ return SNMP_ERR_NOERROR;
-+}
-+
-+/****************************************************************************
-+* *
-+* loadTables() - Load the Tables *
-+* *
-+****************************************************************************/
-+static void loadTables()
-+{
-+ int skfd; // generic raw socket desc
-+ struct iwreq wrq; // ioctl request structure
-+ struct ifreq ifr;
-+ struct timeval et; // elapsed time
-+ struct wireless_info info; // workarea for wireless ioctl information
-+ FILE *fp;
-+ char bfr[1024], ifName[1024];
-+ char *s, *t;
-+
-+ gettimeofday ( &et, ( struct timezone * ) 0 ); // get time-of-day
-+ if ( et.tv_sec < lastLoad + MINLOADFREQ ) // only reload so often
-+ return;
-+ lastLoad = et.tv_sec;
-+
-+ skfd = openSocket(); // open socket
-+ if ( skfd < 0 ) {
-+ syslog ( LOG_ERR, "SNMP ieee802dot11.loadTables() - %s\n", "socket open failure" );
-+ return;
-+ }
-+
-+ flushLists();
-+
-+ // find interfaces in /proc/net/dev and find the wireless interfaces
-+ fp = fopen ( PROC_NET_DEV, "r" );
-+ if ( fp ) {
-+ while ( fgets ( bfr, sizeof ( bfr ), fp )) {
-+ if ( strstr ( bfr, ":" )) {
-+ s = bfr; t = ifName;
-+ while ( isspace ( *s )) // discard white space
-+ *s++;
-+ while ( *s != ':' ) // get interface name
-+ *t++ = *s++;
-+ *t = '\0';
-+
-+ // verify as a wireless device
-+ memset (( char * ) &info, 0, sizeof ( struct wireless_info ));
-+ strncpy ( wrq.ifr_name, ifName, IFNAMSIZ );
-+ if ( ioctl ( skfd, SIOCGIWNAME, &wrq ) >= 0 ) {
-+ printf ( "%s ifName: %s\n", "loadTables() -", ifName );
-+ initStructs();
-+ loadWiExt( skfd, ifName, &info );
-+ displayWiExt ( info );
-+ load80211Structs ( skfd, ifName, &info );
-+ }
-+ }
-+ }
-+ fclose ( fp );
-+ }
-+
-+ close ( skfd );
-+}
-+
-+/****************************************************************************
-+* *
-+* load80211Structs() - load the 802.11 structures *
-+* *
-+****************************************************************************/
-+static void
-+load80211Structs ( int skfd, char *ifName, struct wireless_info *wi )
-+{
-+ int rc, ifIndex = 0;
-+ struct ifreq ifr;
-+ char MACAddress [ MACADDR_LEN + 1 ];
-+
-+ strcpy ( ifr.ifr_name, ifName );
-+ rc = ioctl ( skfd, SIOCGIFHWADDR, &ifr );
-+ if ( rc >= 0 ) {
-+
-+ sprintf ( MACAddress, "%02X:%02X:%02X:%02X:%02X:%02X\0",
-+ ( UCHAR ) ifr.ifr_hwaddr.sa_data[0], ( UCHAR ) ifr.ifr_hwaddr.sa_data[1],
-+ ( UCHAR ) ifr.ifr_hwaddr.sa_data[2], ( UCHAR ) ifr.ifr_hwaddr.sa_data[3],
-+ ( UCHAR ) ifr.ifr_hwaddr.sa_data[4], ( UCHAR ) ifr.ifr_hwaddr.sa_data[5] );
-+
-+ nSc.haveStationID = TRUE;
-+ strcpy ( nSc.stationID, MACAddress );
-+ nOp.haveMACAddress = TRUE;
-+ strcpy ( nOp.MACAddress, MACAddress );
-+ nRi.haveManufacturerOUI = TRUE;
-+ strncpy ( nRi.manufacturerOUI, MACAddress, MAN_OUI_LEN );
-+
-+ ifIndex = if_nametoindex ( ifName );
-+ if ( !ifIndex ) {
-+ syslog ( LOG_ERR, "SNMP %s - %s %s\n",
-+ "ieee802dot11.load80211Structs()", ifName, "has no ifIndex" );
-+ return;
-+ }
-+
-+ loadWiExtTo80211Structs ( ifIndex, ifName, wi );
-+
-+ if ( hasChanged (( char * ) &nSc, sizeof ( nSc ))) {
-+ nSc.ifIndex = ifIndex;
-+ sprintf ( nSc.UID, "%04d\0", nSc.ifIndex );
-+ strcpy ( nSc.ifName, ifName );
-+ addList (( char * ) &scList, ( char * ) &nSc, sizeof ( nSc ));
-+ }
-+
-+ if ( hasChanged (( char * ) &nPr, sizeof ( nPr ))) {
-+ nPr.ifIndex = ifIndex;
-+ sprintf ( nPr.UID, "%04d\0", nPr.ifIndex );
-+ strcpy ( nPr.ifName, ifName );
-+ addList (( char * ) &prList, ( char * ) &nPr, sizeof ( nPr ));
-+ }
-+
-+ if ( hasChanged (( char * ) &nOp, sizeof ( nOp ))) {
-+ nOp.ifIndex = ifIndex;
-+ sprintf ( nOp.UID, "%04d\0", nOp.ifIndex );
-+ strcpy ( nOp.ifName, ifName );
-+ addList (( char * ) &opList, ( char * ) &nOp, sizeof ( nOp ));
-+ }
-+
-+ if ( hasChanged (( char * ) &nCo, sizeof ( nCo ))) {
-+ nCo.ifIndex = ifIndex;
-+ sprintf ( nCo.UID, "%04d\0", nCo.ifIndex );
-+ strcpy ( nCo.ifName, ifName );
-+ addList (( char * ) &coList, ( char * ) &nCo, sizeof ( nCo ));
-+ }
-+
-+ if ( hasChanged (( char * ) &nRi, sizeof ( nRi ))) {
-+ nRi.ifIndex = ifIndex;
-+ sprintf ( nRi.UID, "%04d\0", nRi.ifIndex );
-+ strcpy ( nRi.ifName, ifName );
-+ addList (( char * ) &riList, ( char * ) &nRi, sizeof ( nRi ));
-+ }
-+
-+ if ( hasChanged (( char * ) &nPo, sizeof ( nPo ))) {
-+ nPo.ifIndex = ifIndex;
-+ sprintf ( nPo.UID, "%04d\0", nPo.ifIndex );
-+ strcpy ( nPo.ifName, ifName );
-+ addList (( char * ) &poList, ( char * ) &nPo, sizeof ( nPo ));
-+ }
-+
-+ if ( hasChanged (( char * ) &nPa, sizeof ( nPa ))) {
-+ nPa.ifIndex = ifIndex;
-+ sprintf ( nPa.UID, "%04d\0", nPa.ifIndex );
-+ strcpy ( nPa.ifName, ifName );
-+ addList (( char * ) &paList, ( char * ) &nPa, sizeof ( nPa ));
-+ }
-+
-+ if ( hasChanged (( char * ) &nPt, sizeof ( nPt ))) {
-+ nPt.ifIndex = ifIndex;
-+ sprintf ( nPt.UID, "%04d\0", nPt.ifIndex );
-+ strcpy ( nPt.ifName, ifName );
-+ addList (( char * ) &ptList, ( char * ) &nPt, sizeof ( nPt ));
-+ }
-+
-+ if ( hasChanged (( char * ) &nPf, sizeof ( nPf ))) {
-+ nPf.ifIndex = ifIndex;
-+ sprintf ( nPf.UID, "%04d\0", nPf.ifIndex );
-+ strcpy ( nPf.ifName, ifName );
-+ addList (( char * ) &pfList, ( char * ) &nPf, sizeof ( nPf ));
-+ }
-+
-+ if ( hasChanged (( char * ) &nPd, sizeof ( nPd ))) {
-+ nPd.ifIndex = ifIndex;
-+ sprintf ( nPd.UID, "%04d\0", nPd.ifIndex );
-+ strcpy ( nPd.ifName, ifName );
-+ addList (( char * ) &pdList, ( char * ) &nPd, sizeof ( nPd ));
-+ }
-+
-+ if ( hasChanged (( char * ) &nPi, sizeof ( nPi ))) {
-+ nPi.ifIndex = ifIndex;
-+ sprintf ( nPi.UID, "%04d\0", nPi.ifIndex );
-+ strcpy ( nPi.ifName, ifName );
-+ addList (( char * ) &piList, ( char * ) &nPi, sizeof ( nPi ));
-+ }
-+ }
-+
-+//printf ( "%s - ifIndex: %d ifName: %s UID: %s\n",
-+// "load80211Structs() - HASCHANGED", ifIndex, ifName, nSc.UID );
-+}
-+
-+/****************************************************************************
-+* *
-+* initStructs() - initialize structures *
-+* *
-+****************************************************************************/
-+static void initStructs()
-+{
-+ int i;
-+
-+ // 802.11 MIB Stuctures
-+ memset (( char * ) &nSc, 0, sizeof ( nSc )); memset (( char * ) &nAa, 0, sizeof ( nAa ));
-+ memset (( char * ) &nDf, 0, sizeof ( nDf )); memset (( char * ) &nKm, 0, sizeof ( nKm ));
-+ memset (( char * ) &nPr, 0, sizeof ( nPr )); memset (( char * ) &nOp, 0, sizeof ( nOp ));
-+ memset (( char * ) &nCo, 0, sizeof ( nCo )); memset (( char * ) &nGa, 0, sizeof ( nGa ));
-+ memset (( char * ) &nRi, 0, sizeof ( nRi )); memset (( char * ) &nPo, 0, sizeof ( nPo ));
-+ memset (( char * ) &nPa, 0, sizeof ( nPa )); memset (( char * ) &nPt, 0, sizeof ( nPt ));
-+ memset (( char * ) &nPf, 0, sizeof ( nPf )); memset (( char * ) &nPd, 0, sizeof ( nPd ));
-+ memset (( char * ) &nPi, 0, sizeof ( nPi )); memset (( char * ) &nRd, 0, sizeof ( nRd ));
-+ memset (( char * ) &nAl, 0, sizeof ( nAl )); memset (( char * ) &nRt, 0, sizeof ( nRt ));
-+ memset (( char * ) &nRr, 0, sizeof ( nRr ));
-+
-+ // Wireless Extensions
-+ wepCurrentKey = 0;
-+ haveWepCurrentKey = FALSE;
-+ for ( i = 0; i < MAX_WEP_KEYS; i++ ) {
-+ wep[i].len = 0;
-+ wep[i].key[0] = '\0';
-+ wep[i].haveKey = FALSE;
-+ }
-+}
-+
-+/****************************************************************************
-+* *
-+* Wireless Extensions Specific Functions *
-+* *
-+****************************************************************************/
-+/****************************************************************************
-+* *
-+* loadWiExtTo80211Structs() - load wireless extensions to 802.11 structures *
-+* *
-+****************************************************************************/
-+static void
-+loadWiExtTo80211Structs ( int ifIndex, char *ifName, struct wireless_info *wi )
-+{
-+ int i, j = 0;
-+
-+ // dot11Smt Group
-+ // dot11StationConfigTable
-+ nSc.havePrivacyOptionImplemented = TRUE;
-+ nSc.privacyOptionImplemented = 1; // assume we support WEP
-+
-+ if ( wi->has_power ) {
-+ nSc.havePowerManagementMode = TRUE;
-+ nSc.powerManagementMode = 1; // assume power is active
-+ if ( !wi->power.disabled &&
-+ wi->power.flags & IW_POWER_MIN )
-+ nSc.powerManagementMode = 2; // power save mode
-+ }
-+
-+ if ( wi->has_essid && strlen ( wi->essid )) {
-+ nSc.haveDesiredSSID = TRUE;
-+ strcpy ( nSc.desiredSSID, wi->essid );
-+ }
-+
-+ if ( wi->has_mode ) {
-+ nSc.haveDesiredBSSType = TRUE;
-+ if ( wi->mode == IW_MODE_ADHOC )
-+ nSc.desiredBSSType = 2; // independent
-+ else if ( wi->has_ap_addr )
-+ nSc.desiredBSSType = 1; // infrastructure
-+ else
-+ nSc.desiredBSSType = 3; // any
-+ }
-+
-+ if ( wi->has_range ) {
-+ for ( i = 0; i < wi->range.num_bitrates && j < 126; i++ ) {
-+ nSc.haveOperationalRateSet = TRUE;
-+ nSc.operationalRateSet[j++] = ( char ) ( wi->range.bitrate[i] / 500000L );
-+ }
-+ }
-+
-+ // dot11AuthenticationAlgorithmsTable
-+ nAa.haveAuthenticationAlgorithm = TRUE; // it's a rule to always have
-+ nAa.haveAuthenticationAlgorithmsEnable = TRUE; // 'open' supported
-+ nAa.ifIndex = ifIndex;
-+ nAa.authenticationAlgorithmsIndex = 1; // index number one
-+ nAa.authenticationAlgorithm = 1; // 1 => open key
-+ sprintf ( nAa.UID, "%04d%04d\0", nAa.ifIndex, nAa.authenticationAlgorithmsIndex );
-+ nAa.authenticationAlgorithmsEnable = 1; // enabled by default
-+ if ( ( wi->has_key ) &&
-+ ( wi->key_size != 0 ) &&
-+ !( wi->key_flags & IW_ENCODE_DISABLED ))
-+ nAa.authenticationAlgorithmsEnable = 2;
-+ addList (( char * ) &aaList, ( char * ) &nAa, sizeof ( nAa ));
-+
-+ nAa.haveAuthenticationAlgorithm = TRUE; // I'm gonna assume we always support WEP
-+ nAa.haveAuthenticationAlgorithmsEnable = TRUE;
-+ nAa.ifIndex = ifIndex;
-+ nAa.authenticationAlgorithmsIndex = 2; // index number 2
-+ nAa.authenticationAlgorithm = 2; // 2 => shared key
-+ sprintf ( nAa.UID, "%04d%04d\0", nAa.ifIndex, nAa.authenticationAlgorithmsIndex );
-+ nAa.authenticationAlgorithmsEnable = 2;
-+ if ( ( wi->has_key ) &&
-+ ( wi->key_size != 0 ) &&
-+ !( wi->key_flags & IW_ENCODE_DISABLED ))
-+ nAa.authenticationAlgorithmsEnable = 1; // disabled by default
-+ addList (( char * ) &aaList, ( char * ) &nAa, sizeof ( nAa ));
-+
-+ //dot11WEPDefaultKeysTable
-+ if ( wi->has_range ) {
-+ for ( i = 0; i < MAX_WEP_KEYS; i++ ) {
-+ nDf.haveWEPDefaultKeyValue = TRUE;
-+ nDf.ifIndex = ifIndex;
-+ nDf.WEPDefaultKeyIndex = i + 1; // index number
-+ sprintf ( nDf.UID, "%04d%04d\0", nDf.ifIndex, nDf.WEPDefaultKeyIndex );
-+ if ( wep[i].haveKey )
-+ strcpy ( nDf.WEPDefaultKeyValue, "*****" );
-+ else
-+ nDf.WEPDefaultKeyValue[0] = '\0';
-+ addList (( char * ) &dfList, ( char * ) &nDf, sizeof ( nDf ));
-+ }
-+ }
-+
-+ // dot11PrivacyTable
-+ nPr.havePrivacyInvoked = TRUE;
-+ nPr.privacyInvoked = 2; // 2 => FALSE
-+ nPr.haveWEPDefaultKeyID = TRUE;
-+ nPr.WEPDefaultKeyID = 0;
-+ nPr.haveExcludeUnencrypted = TRUE;
-+ nPr.excludeUnencrypted = 2; // 2 => FALSE
-+ if ( wi->has_range ) {
-+ if ( ( wi->key_size != 0 ) &&
-+ !( wi->key_flags & IW_ENCODE_DISABLED )) {
-+ nPr.privacyInvoked = 1;
-+ if ( wi->key_flags & IW_ENCODE_RESTRICTED )
-+ nPr.excludeUnencrypted = 1;
-+ nPr.WEPDefaultKeyID = wepCurrentKey;
-+ }
-+ }
-+
-+ // dot11Mac Group
-+ // dot11OperationTable
-+ if ( wi->has_range ) {
-+ nOp.haveRTSThreshold = TRUE;
-+ nOp.RTSThreshold = wi->range.max_rts;
-+ }
-+
-+ if ( wi->has_frag && wi->frag.value ) {
-+ nOp.haveFragmentationThreshold = TRUE;
-+ nOp.fragmentationThreshold = wi->frag.value;
-+ }
-+
-+ // dot11Phy Group
-+ // dot11PhyOperationTable
-+ if ( strstr ( wi->name, "IEEE 802.11-FS" )) nPo.PHYType = 1; // So what if I
-+ if ( strstr ( wi->name, "IEEE 802.11-DS" )) nPo.PHYType = 2; // made up a couple?
-+ if ( strstr ( wi->name, "IEEE 802.11-IR" )) nPo.PHYType = 3;
-+ if ( strstr ( wi->name, "IEEE 802.11-OFDM" )) nPo.PHYType = 4; // 802.11a
-+ if ( strstr ( wi->name, "IEEE 802.11-OFDM/DS" )) nPo.PHYType = 5; // 802.11g
-+ if ( strstr ( wi->name, "IEEE 802.11-TURBO" )) nPo.PHYType = 6; // Atheros TURBO mode
-+ if ( nPo.PHYType ) nPo.havePHYType = TRUE;
-+
-+ // dot11PhyDSSSTable
-+ if ( wi->has_range ) { // && wi->freq <= ( double ) 2483000000 ) { // DSSS frequencies only
-+ for ( i = 0; i < wi->range.num_frequency; i++ ) {
-+ if ((( double ) ( wi->range.freq[i].e * 10 ) * ( double ) wi->range.freq[i].m ) == wi->freq ) {
-+ nPd.haveCurrentChannel = TRUE;
-+ nPd.currentChannel = wi->range.freq[i].i;
-+ }
-+ }
-+ }
-+
-+ // dot11SupportedDataRatesTxTable
-+ if ( wi->has_range ) {
-+ for ( i = 0; i < wi->range.num_bitrates; i++ ) {
-+ nRt.ifIndex = ifIndex;
-+ nRt.supportedDataRatesTxIndex = i + 1;
-+ nRt.supportedDataRatesTxValue = wi->range.bitrate[i] / 500000L;
-+ nRt.haveSupportedDataRatesTxValue = TRUE;
-+ sprintf ( nRt.UID, "%04d%04d\0", nRt.ifIndex, nRt.supportedDataRatesTxIndex );
-+ strcpy ( nRt.ifName, ifName );
-+ addList (( char * ) &rtList, ( char * ) &nRt, sizeof ( nRt ));
-+ }
-+ }
-+
-+ // dot11SupportedDataRatesRxTable
-+ if ( wi->has_range ) {
-+ for ( i = 0; i < wi->range.num_bitrates; i++ ) {
-+ nRr.ifIndex = ifIndex;
-+ nRr.supportedDataRatesRxIndex = i + 1;
-+ nRr.supportedDataRatesRxValue = wi->range.bitrate[i] / 500000L;
-+ nRr.haveSupportedDataRatesRxValue = TRUE;
-+ sprintf ( nRr.UID, "%04d%04d\0", nRr.ifIndex, nRr.supportedDataRatesRxIndex );
-+ strcpy ( nRr.ifName, ifName );
-+ addList (( char * ) &rrList, ( char * ) &nRr, sizeof ( nRr ));
-+ }
-+ }
-+
-+//printf ( "%s max_encoding_tokens: %d\n",
-+// "loadWiExtTo80211Structs() - ", wi->range.max_encoding_tokens );
-+}
-+
-+/****************************************************************************
-+* *
-+* loadWiExt() - load wireless extensions structures; *
-+* use ioctl calls and read /proc/net/wireless *
-+* *
-+****************************************************************************/
-+static void loadWiExt ( int skfd, char *ifname, struct wireless_info *wi )
-+{
-+ struct iwreq wrq; // ioctl request structure
-+ FILE *fp;
-+ char bfr[1024];
-+ char buffer[sizeof ( iwrange ) * 2]; /* Large enough */
-+ char *s, *t;
-+ int i, j;
-+
-+ strncpy ( wrq.ifr_name, ifname, IFNAMSIZ );
-+
-+ /* Get wireless name */
-+ if ( ioctl ( skfd, SIOCGIWNAME, &wrq ) >= 0 ) {
-+ strncpy ( wi->name, wrq.u.name, IFNAMSIZ );
-+ wi->name[IFNAMSIZ] = '\0';
-+ }
-+
-+ /* Get ranges */ // NOTE: some version checking in iwlib.c
-+ memset ( buffer, 0, sizeof ( buffer ));
-+ wrq.u.data.pointer = ( caddr_t ) &buffer;
-+ wrq.u.data.length = sizeof ( buffer );
-+ wrq.u.data.flags = 0;
-+ if ( ioctl ( skfd, SIOCGIWRANGE, &wrq ) >= 0 ) {
-+ memcpy (( char * ) &wi->range, buffer, sizeof ( iwrange ));
-+ wi->has_range = 1;
-+ }
-+
-+ /* Get network ID */
-+ if ( ioctl ( skfd, SIOCGIWNWID, &wrq ) >= 0 ) {
-+ memcpy ( &wi->nwid, &wrq.u.nwid, sizeof ( iwparam ));
-+ wi->has_nwid = 1;
-+ }
-+
-+ /* Get frequency / channel */ // THIS NUMBER LOOKS FUNNY
-+ if ( ioctl ( skfd, SIOCGIWFREQ, &wrq ) >= 0 ) {
-+ wi->has_freq = 1;
-+ wi->freq = (( double ) wrq.u.freq.m ) * pow ( 10, wrq.u.freq.e );
-+ }
-+
-+ /* Get sensitivity */
-+ if ( ioctl ( skfd, SIOCGIWSENS, &wrq ) >= 0 ) {
-+ wi->has_sens = 1;
-+ memcpy ( &wi->sens, &wrq.u.sens, sizeof ( iwparam ));
-+ }
-+
-+ /* Get encryption information */
-+ wrq.u.data.pointer = ( caddr_t ) &wi->key;
-+ wrq.u.data.length = IW_ENCODING_TOKEN_MAX;
-+ wrq.u.data.flags = 0;
-+ if ( ioctl ( skfd, SIOCGIWENCODE, &wrq ) >= 0 ) {
-+ wi->has_key = 1;
-+ wi->key_size = wrq.u.data.length;
-+ wi->key_flags = wrq.u.data.flags;
-+ wepCurrentKey = wrq.u.data.flags & IW_ENCODE_INDEX;
-+ }
-+
-+ for ( i = 0; i < wi->range.max_encoding_tokens; i++ ) {
-+ wrq.u.data.pointer = ( caddr_t ) &wi->key;
-+ wrq.u.data.length = IW_ENCODING_TOKEN_MAX;
-+ wrq.u.data.flags = i;
-+ if ( ioctl ( skfd, SIOCGIWENCODE, &wrq ) >= 0 ) {
-+ if ( ( wrq.u.data.length != 0 ) &&
-+ !( wrq.u.data.flags & IW_ENCODE_DISABLED )) {
-+ wep[i].len = wrq.u.data.length;
-+ wep[i].haveKey = TRUE;
-+ t = wep[i].key;
-+ for ( j = 0; j < wrq.u.data.length; j++ ) {
-+ if (( j & 0x1 ) == 0 && j != 0 )
-+ strcpy ( t++, "-");
-+ sprintf ( t, "%.2X", wi->key[j] );
-+ t += 2;
-+ }
-+ t = '\0';
-+ }
-+ }
-+ }
-+
-+ /* Get ESSID */
-+ wrq.u.essid.pointer = ( caddr_t ) &wi->essid;
-+ wrq.u.essid.length = IW_ESSID_MAX_SIZE + 1;
-+ wrq.u.essid.flags = 0;
-+ if ( ioctl ( skfd, SIOCGIWESSID, &wrq ) >= 0 ) {
-+ wi->has_essid = 1;
-+ wi->essid_on = wrq.u.data.flags;
-+ }
-+
-+ /* Get AP address */
-+ if ( ioctl ( skfd, SIOCGIWAP, &wrq ) >= 0 ) {
-+ wi->has_ap_addr = 1;
-+ memcpy ( &wi->ap_addr, &wrq.u.ap_addr, sizeof ( sockaddr ));
-+ }
-+
-+ /* Get NickName */
-+ wrq.u.essid.pointer = ( caddr_t ) &wi->nickname;
-+ wrq.u.essid.length = IW_ESSID_MAX_SIZE + 1;
-+ wrq.u.essid.flags = 0;
-+ if ( ioctl ( skfd, SIOCGIWNICKN, &wrq ) >= 0 ) {
-+ if ( wrq.u.data.length > 1 )
-+ wi->has_nickname = 1;
-+ }
-+
-+ /* Get bit rate */
-+ if ( ioctl ( skfd, SIOCGIWRATE, &wrq ) >= 0 ) {
-+ wi->has_bitrate = 1;
-+ memcpy ( &wi->bitrate, &wrq.u.bitrate, sizeof ( iwparam ));
-+ }
-+
-+ /* Get RTS threshold */
-+ if ( ioctl ( skfd, SIOCGIWRTS, &wrq ) >= 0 ) {
-+ wi->has_rts = 1;
-+ memcpy ( &wi->rts, &wrq.u.rts, sizeof ( iwparam ));
-+ }
-+
-+ /* Get fragmentation threshold */
-+ if ( ioctl ( skfd, SIOCGIWFRAG, &wrq ) >= 0 ) {
-+ wi->has_frag = 1;
-+ memcpy ( &wi->frag, &wrq.u.frag, sizeof ( iwparam ));
-+ }
-+
-+ /* Get operation mode */
-+ if ( ioctl ( skfd, SIOCGIWMODE, &wrq ) >= 0 ) {
-+ wi->mode = wrq.u.mode;
-+ if ( wi->mode < IW_NUM_OPER_MODE && wi->mode >= 0 )
-+ wi->has_mode = 1;
-+ }
-+
-+ /* Get Power Management settings */ // #if WIRELESS_EXT > 9
-+ wrq.u.power.flags = 0;
-+ if ( ioctl ( skfd, SIOCGIWPOWER, &wrq ) >= 0 ) {
-+ wi->has_power = 1;
-+ memcpy ( &wi->power, &wrq.u.power, sizeof ( iwparam ));
-+ }
-+
-+ /* Get retry limit/lifetime */ // #if WIRELESS_EXT > 10
-+ if ( ioctl ( skfd, SIOCGIWRETRY, &wrq ) >= 0 ) {
-+ wi->has_retry = 1;
-+ memcpy ( &wi->retry, &wrq.u.retry, sizeof ( iwparam ));
-+ }
-+
-+ /* Get stats */ // #if WIRELESS_EXT > 11
-+ wrq.u.data.pointer = ( caddr_t ) &wi->stats;
-+ wrq.u.data.length = 0;
-+ wrq.u.data.flags = 1; /* Clear updated flag */
-+ if ( ioctl ( skfd, SIOCGIWSTATS, &wrq ) < 0 )
-+ wi->has_stats = 1;
-+
-+ if ( !wi->has_stats ) { // no ioctl support, go to file
-+ fp = fopen ( PROC_NET_WIRELESS, "r" );
-+ if ( fp ) {
-+ while ( fgets ( bfr, sizeof ( bfr ), fp )) {
-+ bfr [ sizeof ( bfr ) - 1 ] = '\0'; // no buffer overruns here!
-+ strtok (( char * ) &bfr, "\n" ); // '\n' => '\0'
-+ if ( strstr ( bfr, ifname ) && strstr ( bfr, ":" )) {
-+ wi->has_stats = 1;
-+ s = bfr;
-+ s = strchr ( s, ':' ); s++; /* Skip ethX: */
-+ s = strtok ( s, " " ); /* ' ' => '\0' */
-+ sscanf ( s, "%X", &wi->stats.status ); // status
-+
-+ s = strtok ( NULL, " " ); // link quality
-+ if ( strchr ( s, '.' ) != NULL )
-+ wi->stats.qual.updated |= 1;
-+ sscanf ( s, "%d", &wi->stats.qual.qual );
-+
-+ s = strtok ( NULL, " " ); // signal level
-+ if ( strchr ( s,'.' ) != NULL )
-+ wi->stats.qual.updated |= 2;
-+ sscanf ( s, "%d", &wi->stats.qual.level );
-+
-+ s = strtok ( NULL, " " ); // noise level
-+ if ( strchr ( s, '.' ) != NULL )
-+ wi->stats.qual.updated += 4;
-+ sscanf ( s, "%d", &wi->stats.qual.noise );
-+
-+ s = strtok ( NULL, " " ); sscanf ( s, "%d", &wi->stats.discard.nwid );
-+ s = strtok ( NULL, " " ); sscanf ( s, "%d", &wi->stats.discard.code );
-+ s = strtok ( NULL, " " ); sscanf ( s, "%d", &wi->stats.discard.fragment );
-+ s = strtok ( NULL, " " ); sscanf ( s, "%d", &wi->stats.discard.retries );
-+ s = strtok ( NULL, " " ); sscanf ( s, "%d", &wi->stats.discard.misc );
-+ s = strtok ( NULL, " " ); sscanf ( s, "%d", &wi->stats.miss.beacon );
-+ }
-+ }
-+ fclose ( fp );
-+ }
-+ }
-+
-+// printf ( "%s bfr: %s\n", "loadTables()", bfr );
-+}
-+
-+/****************************************************************************
-+* *
-+* displayWiExt() - show what I got from Wireless Extensions *
-+* *
-+****************************************************************************/
-+static void displayWiExt ( struct wireless_info info )
-+{
-+#ifdef DISPLAYWIEXT
-+ int i;
-+ char title[] = "displayWiExt() -";
-+
-+ printf ( "========================================\n" );
-+ printf ( "===> Wireless Extension IOCTL calls <===\n" );
-+ printf ( "========================================\n" );
-+
-+ if ( strlen ( info.name ))
-+ printf ( "%s name: %s\n", "SIOCGIWNAME", info.name );
-+ else
-+ printf ( "%s\n", "no info.name support" );
-+
-+ if ( info.has_nickname = 1 )
-+ printf ( "%s nickname: %s\n", "SIOCGIWNICKN", info.nickname );
-+ else
-+ printf ( "%s %s\n", "SIOCGIWNICKN", " ===> no info.nickname support" );
-+
-+ if ( info.has_essid )
-+ printf ( "%s essid_on: %d essid: %s\n", "SIOCGIWESSID", info.essid_on, info.essid );
-+ else
-+ printf ( "%s %s\n", "SIOCGIWESSID", " ===> no info.essid support" );
-+
-+ if ( info.has_range ) {
-+ printf ( "%s throughput: %d\n", "SIOCGIWRANGE", info.range.throughput );
-+ printf ( "%s min_nwid: %d\n", "SIOCGIWRANGE", info.range.min_nwid );
-+ printf ( "%s max_nwid: %d\n", "SIOCGIWRANGE", info.range.max_nwid );
-+ printf ( "%s sensitivity: %d\n", "SIOCGIWRANGE", info.range.sensitivity );
-+ printf ( "%s num_bitrates: %d\n", "SIOCGIWRANGE", info.range.num_bitrates );
-+ for ( i = 0; i < info.range.num_bitrates; i++ )
-+ printf ( "%s bitrate[%d]: %d\n", "SIOCGIWRANGE", i, info.range.bitrate[i] );
-+ printf ( "%s min_rts: %d\n", "SIOCGIWRANGE", info.range.min_rts );
-+ printf ( "%s max_rts: %d\n", "SIOCGIWRANGE", info.range.max_rts );
-+ printf ( "%s min_frag: %d\n", "SIOCGIWRANGE", info.range.min_frag );
-+ printf ( "%s max_frag: %d\n", "SIOCGIWRANGE", info.range.max_frag );
-+ printf ( "%s min_pmp: %d\n", "SIOCGIWRANGE", info.range.min_pmp );
-+ printf ( "%s max_pmp: %d\n", "SIOCGIWRANGE", info.range.max_pmp );
-+ printf ( "%s min_pmt: %d\n", "SIOCGIWRANGE", info.range.min_pmt );
-+ printf ( "%s max_pmt: %d\n", "SIOCGIWRANGE", info.range.max_pmt );
-+ printf ( "%s pmp_flags: %d\n", "SIOCGIWRANGE", info.range.pmp_flags );
-+ printf ( "%s pmt_flags: %d\n", "SIOCGIWRANGE", info.range.pmt_flags );
-+ printf ( "%s pm_capa: %d\n", "SIOCGIWRANGE", info.range.pm_capa );
-+ printf ( "%s num_encoding_sizes: %d\n", "SIOCGIWRANGE", info.range.num_encoding_sizes );
-+ for ( i = 0; i < info.range.num_encoding_sizes; i++ )
-+ printf ( "%s encoding_size[%d]: %d\n", "SIOCGIWRANGE", i, info.range.encoding_size[i] );
-+ printf ( "%s max_encoding_tokens: %d\n", "SIOCGIWRANGE", info.range.max_encoding_tokens );
-+// printf ( "%s encoding_login_index: %d\n", "SIOCGIWRANGE", info.range.encoding_login_index );
-+ printf ( "%s txpower_capa: %d\n", "SIOCGIWRANGE", info.range.txpower_capa );
-+ printf ( "%s num_txpower: %d dBm\n", "SIOCGIWRANGE", info.range.num_txpower );
-+ for ( i = 0; i < info.range.num_txpower; i++ )
-+ printf ( "%s txpower[%d]: %d\n", "SIOCGIWRANGE", i, info.range.txpower[i] );
-+ printf ( "%s we_version_compiled: %d\n", "SIOCGIWRANGE", info.range.we_version_compiled );
-+ printf ( "%s we_version_source: %d\n", "SIOCGIWRANGE", info.range.we_version_source );
-+ printf ( "%s retry_capa: %d\n", "SIOCGIWRANGE", info.range.retry_capa );
-+ printf ( "%s retry_flags: %d\n", "SIOCGIWRANGE", info.range.retry_flags );
-+ printf ( "%s r_time_flags: %d\n", "SIOCGIWRANGE", info.range.r_time_flags );
-+ printf ( "%s min_retry: %d\n", "SIOCGIWRANGE", info.range.min_retry );
-+ printf ( "%s max_retry: %d\n", "SIOCGIWRANGE", info.range.max_retry );
-+ printf ( "%s min_r_time: %d\n", "SIOCGIWRANGE", info.range.min_r_time );
-+ printf ( "%s max_r_time: %d\n", "SIOCGIWRANGE", info.range.max_r_time );
-+ printf ( "%s num_channels: %d\n", "SIOCGIWRANGE", info.range.num_channels );
-+ printf ( "%s num_frequency: %d\n", "SIOCGIWRANGE", info.range.num_frequency );
-+ for ( i = 0; i < info.range.num_frequency; i++ )
-+ printf ( "%s freq[%d].i: %d freq[%d].e: %d freq[%d].m: %d\n", "SIOCGIWRANGE",
-+ i, info.range.freq[i].i, i, info.range.freq[i].e, i, info.range.freq[i].m );
-+ }
-+ else
-+ printf ( "%s %s\n", "SIOCGIWRANGE", " ===> no info.range support" );
-+
-+ if ( info.has_nwid )
-+ printf ( "%s nwid - disabled: %d value: %X\n", "SIOCGIWNWID", info.nwid.disabled, info.nwid.value );
-+ else
-+ printf ( "%s %s\n", "SIOCGIWNWID", " ===> no info.nwid support" );
-+
-+ if ( info.has_freq ) {
-+// printf ( "%s freq: %g\n", "SIOCGIWFREQ", info.freq / GIGA );
-+ printf ( "%s freq: %g\n", "SIOCGIWFREQ", info.freq );
-+ }
-+ else
-+ printf ( "%s %s\n", "SIOCGIWFREQ", " ===> no info.freq support" );
-+
-+ if ( info.has_sens )
-+ printf ( "%s sens: %d\n", "SIOCGIWSENS", info.sens );
-+ else
-+ printf ( "%s %s\n", "SIOCGIWSENS", " ===> no info.sens support" );
-+
-+ if ( info.has_key ) {
-+ printf ( "%s key_size: %d key_flags: %d wepCurrentKey: %d\n",
-+ "SIOCGIWENCODE", info.key_size, info.key_flags, wepCurrentKey );
-+ printf ( "%s MODE: %d DISABLED: %d INDEX: %d OPEN: %d RESTRICTED: %d NOKEY: %d TEMP: %d\n",
-+ "SIOCGIWENCODE", info.key_flags & IW_ENCODE_MODE,
-+ info.key_flags & IW_ENCODE_DISABLED ? 1:0, info.key_flags & IW_ENCODE_INDEX,
-+ info.key_flags & IW_ENCODE_OPEN ? 1:0, info.key_flags & IW_ENCODE_RESTRICTED ? 1:0,
-+ info.key_flags & IW_ENCODE_NOKEY ? 1:0, info.key_flags & IW_ENCODE_TEMP ? 1:0 );
-+ }
-+ else
-+ printf ( "%s %s\n", "SIOCGIWENCODE", " ===> no info.key support" );
-+
-+ for ( i = 0; i < MAX_WEP_KEYS; i++ ) {
-+ if ( wep[i].haveKey )
-+ printf ( "%s wep[%d].len: %d wep[%d].key: %s\n",
-+ "SIOCGIWENCODE", i, wep[i].len, i, wep[i].key );
-+ }
-+
-+ if ( info.has_ap_addr )
-+ printf ( "%s ap_addr.sa_data: %02X:%02X:%02X:%02X:%02X:%02X ap_addr.sa_family: %d\n",
-+ "SIOCGIWAP", ( UCHAR ) info.ap_addr.sa_data[0], ( UCHAR ) info.ap_addr.sa_data[1],
-+ ( UCHAR ) info.ap_addr.sa_data[2], ( UCHAR ) info.ap_addr.sa_data[3],
-+ ( UCHAR ) info.ap_addr.sa_data[4], ( UCHAR ) info.ap_addr.sa_data[5],
-+ info.ap_addr.sa_family );
-+ else
-+ printf ( "%s %s\n", "SIOCGIWAP", " ===> no ap_addr information" );
-+
-+ if ( info.has_bitrate )
-+ printf ( "%s bitrate: %d value: %d fixed: %d disabled: %d flags: %d\n",
-+ "SIOCGIWRATE", info.bitrate, info.bitrate.value, info.bitrate.fixed,
-+ info.bitrate.disabled, info.bitrate.flags );
-+ else
-+ printf ( "%s %s\n", "SIOCGIWRATE", " ===> no info.bitrate support" );
-+
-+ if ( info.has_rts )
-+ printf ( "%s rts: %d\n", "SIOCGIWRTS", info.rts );
-+ else
-+ printf ( "%s %s\n", "SIOCGIWRTS", " ===> no info.rts support" );
-+
-+ if ( info.has_frag )
-+ printf ( "%s frag: %d\n", "SIOCGIWFRAG", info.frag );
-+ else
-+ printf ( "%s %s\n", "SIOCGIWFRAG", " ===> no info.frag support" );
-+
-+ if ( info.has_mode )
-+ printf ( "%s mode: %d\n", "SIOCGIWMODE", info.mode );
-+ else
-+ printf ( "%s %s\n", "SIOCGIWMODE", " ===> no info.mode support" );
-+
-+ if ( info.has_power ) {
-+ printf ( "%s power: %d\n", "SIOCGIWPOWER", info.power );
-+ printf ( "%s disabled: %d MIN: %d MAX: %d TIMEOUT: %d RELATIVE: %d\n",
-+ "SIOCGIWPOWER",
-+ info.power.disabled ? 1:0,
-+ info.power.flags & IW_POWER_MIN ? 1:0,
-+ info.power.flags & IW_POWER_MAX ? 1:0,
-+ info.power.flags & IW_POWER_TIMEOUT ? 1:0,
-+ info.power.flags & IW_POWER_RELATIVE ? 1:0 );
-+ printf ( "%s UNICAST: %d MULTICAST: %d ALL: %d FORCE: %d REPEATER: %d\n",
-+ "SIOCGIWPOWER",
-+ info.power.flags & IW_POWER_UNICAST_R ? 1:0,
-+ info.power.flags & IW_POWER_MULTICAST_R ? 1:0,
-+ info.power.flags & IW_POWER_ALL_R ? 1:0,
-+ info.power.flags & IW_POWER_FORCE_S ? 1:0,
-+ info.power.flags & IW_POWER_REPEATER ? 1:0 );
-+ }
-+ else
-+ printf ( "%s %s\n", "SIOCGIWPOWER", " ===> no info.power support" );
-+
-+ if ( info.has_retry )
-+ printf ( "%s retry: %d\n", "SIOCGIWRETRY", info.retry );
-+ else
-+ printf ( "%s %s\n", "SIOCGIWRETRY", " ===> no info.retry support" );
-+
-+ if ( info.has_stats ) {
-+ printf ( "%s status: %d\n", "SIOCGIWSTATS", info.stats.status );
-+ printf ( "%s qual.level: %d\n", "SIOCGIWSTATS", info.stats.qual.level );
-+ printf ( "%s qual.noise: %d\n", "SIOCGIWSTATS", info.stats.qual.noise );
-+ printf ( "%s qual.qual: %d\n", "SIOCGIWSTATS", info.stats.qual.qual );
-+ printf ( "%s qual.updated: %d\n", "SIOCGIWSTATS", info.stats.qual.updated );
-+ printf ( "%s discard.code: %d\n", "SIOCGIWSTATS", info.stats.discard.code );
-+ printf ( "%s discard.fragment: %d\n", "SIOCGIWSTATS", info.stats.discard.fragment );
-+ printf ( "%s discard.misc: %d\n", "SIOCGIWSTATS", info.stats.discard.misc );
-+ printf ( "%s discard.nwid: %d\n", "SIOCGIWSTATS", info.stats.discard.nwid );
-+ printf ( "%s discard.retries: %d\n", "SIOCGIWSTATS", info.stats.discard.retries );
-+ printf ( "%s miss.beacon: %d\n", "SIOCGIWSTATS", info.stats.miss.beacon );
-+ }
-+ else
-+ printf ( "%s %s\n", "SIOCGIWSTATS", " ===> no info.stats support" );
-+
-+ if ( info.txpower.flags & IW_TXPOW_MWATT )
-+ printf ( "%s txpower1: %d dBm disabled: %d fixed: %d flags: %d\n", "SIOCGIWRANGE",
-+ mWatt2dbm ( info.txpower.value ), info.txpower.disabled, info.txpower.fixed, info.txpower.flags);
-+ else
-+ printf ( "%s txpower2: %d dBm disabled: %d fixed: %d flags: %d\n", "SIOCGIWRANGE", info.txpower.value, info.txpower.disabled, info.txpower.fixed, info.txpower.flags );
-+
-+ if ( info.has_range )
-+ if ( info.sens.value < 0 )
-+ printf ( "%s sens: %d dBm\n", "SIOCGIWRANGE", info.sens.value );
-+ else
-+ printf ( "%s sens: %d/%d\n", "SIOCGIWRANGE", info.sens.value, info.range.sensitivity );
-+
-+ if ( info.has_range && ( info.stats.qual.level != 0 ))
-+ if ( info.stats.qual.level > info.range.max_qual.level )
-+ /* Statistics are in dBm (absolute power measurement) */
-+ printf ( "%s Quality: %d/%d Signal level: %d dBm Noise level: %d dBm\n",
-+ "SIOCGIWRANGE",
-+ info.stats.qual.qual, info.range.max_qual.qual,
-+ info.stats.qual.level - 0x100,
-+ info.stats.qual.noise - 0x100 );
-+ else
-+ printf ( "%s Quality: %d/%d Signal level: %d/%d Noise level: %d/%d",
-+ "SIOCGIWRANGE",
-+ info.stats.qual.qual, info.range.max_qual.qual,
-+ info.stats.qual.level, info.range.max_qual.level,
-+ info.stats.qual.noise, info.range.max_qual.noise );
-+
-+#endif // #ifdef DISPLAYWIEXT
-+}
-+
-+/****************************************************************************
-+* *
-+* Linked List Functions *
-+* *
-+****************************************************************************/
-+/****************************************************************************
-+* *
-+* addList() - add an entry to a linked list *
-+* *
-+****************************************************************************/
-+static void
-+addList ( char *l, char *data, int len )
-+{
-+ char uid[256];
-+ LIST_HEAD ( , avNode ) *list;
-+
-+ // NOTE: this assumes the UID is at the begining of the
-+ // data structure and that UIDs are strings
-+
-+ list = ( LIST_HEAD ( , avNode ) * ) l; // NOTE: don't know how to get
-+ strcpy ( uid, data ); // rid of compiler warning on
-+ // LISTHEAD typecast
-+ // create a new node and the data that goes in it
-+ newNode = malloc ( sizeof ( struct avNode ));
-+ newNode->data = malloc ( len );
-+ memcpy ( newNode->data, data, len );
-+
-+ // this deals with an empty list
-+ if ( LIST_EMPTY ( list )) {
-+ LIST_INSERT_HEAD ( list, newNode, nodes );
-+ return;
-+ }
-+
-+ // this deals with UIDs that match
-+ for ( np = LIST_FIRST ( list ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ if ( strncmp ( uid, np->data, strlen ( uid )) == 0 ) { // found matching UID
-+ LIST_INSERT_AFTER ( np, newNode, nodes );
-+ if ( np->data )
-+ free ( np->data );
-+ LIST_REMOVE ( np, nodes );
-+ free ( np );
-+ return;
-+ }
-+ }
-+
-+ // this deals with inserting a new UID in the list
-+ for ( np = LIST_FIRST ( list ); np != NULL; np = LIST_NEXT ( np, nodes )) {
-+ lastNode = np;
-+ if ( strncmp ( np->data, uid, strlen ( uid )) > 0 ) { // old ID > new ID AND
-+ LIST_INSERT_BEFORE ( np, newNode, nodes );
-+ return;
-+ }
-+ }
-+
-+ // this deals with a UID that needs to go on the end of the list
-+ LIST_INSERT_AFTER ( lastNode, newNode, nodes );
-+
-+ return;
-+}
-+
-+/****************************************************************************
-+* *
-+* initLists() - initialize all the linked lists *
-+* *
-+****************************************************************************/
-+static void initLists()
-+{
-+ LIST_INIT ( &scList ); LIST_INIT ( &aaList ); LIST_INIT ( &dfList );
-+ LIST_INIT ( &kmList ); LIST_INIT ( &prList );
-+ LIST_INIT ( &opList ); LIST_INIT ( &coList );
-+ LIST_INIT ( &gaList ); LIST_INIT ( &riList ); LIST_INIT ( &poList );
-+ LIST_INIT ( &paList ); LIST_INIT ( &ptList ); LIST_INIT ( &pfList );
-+ LIST_INIT ( &pdList ); LIST_INIT ( &piList ); LIST_INIT ( &rdList );
-+ LIST_INIT ( &alList ); LIST_INIT ( &rtList ); LIST_INIT ( &rrList );
-+}
-+/****************************************************************************
-+* *
-+* flushLists() - flush all linked lists *
-+* *
-+****************************************************************************/
-+static void flushLists()
-+{
-+ flushList (( char * ) &scList ); flushList (( char * ) &aaList );
-+ flushList (( char * ) &dfList ); flushList (( char * ) &kmList );
-+ flushList (( char * ) &prList );
-+ flushList (( char * ) &opList ); flushList (( char * ) &coList );
-+ flushList (( char * ) &gaList ); flushList (( char * ) &riList );
-+ flushList (( char * ) &poList ); flushList (( char * ) &paList );
-+ flushList (( char * ) &ptList ); flushList (( char * ) &pfList );
-+ flushList (( char * ) &pdList ); flushList (( char * ) &piList );
-+ flushList (( char * ) &rdList ); flushList (( char * ) &alList );
-+ flushList (( char * ) &rtList ); flushList (( char * ) &rrList );
-+}
-+
-+/****************************************************************************
-+* *
-+* flushList() - flush a linked list *
-+* *
-+****************************************************************************/
-+static void flushList ( char *l )
-+{
-+ LIST_HEAD ( , avNode ) *list;
-+
-+ list = ( LIST_HEAD ( , avNode ) * ) l; // NOTE: don't know how to get
-+ while ( !LIST_EMPTY ( list )) { // rid of compiler warning on
-+ np = LIST_FIRST ( list ); // LISTHEAD typecast
-+ if ( np->data )
-+ free ( np->data );
-+ LIST_REMOVE ( np, nodes );
-+ free ( np );
-+ }
-+}
-+
-+/****************************************************************************
-+* *
-+* Utility Functions *
-+* *
-+****************************************************************************/
-+/****************************************************************************
-+* *
-+* The following two routines were taken directly from iwlib.c *
-+* *
-+****************************************************************************/
-+ /*
-+ * Open a socket.
-+ * Depending on the protocol present, open the right socket. The socket
-+ * will allow us to talk to the driver.
-+ */
-+static int openSocket ( void )
-+{
-+ static const int families[] = {
-+ AF_INET, AF_IPX, AF_AX25, AF_APPLETALK
-+ };
-+ unsigned int i;
-+ int sock;
-+
-+ /*
-+ * Now pick any (exisiting) useful socket family for generic queries
-+ * Note : don't open all the socket, only returns when one matches,
-+ * all protocols might not be valid.
-+ * Workaround by Jim Kaba <jkaba@sarnoff.com>
-+ * Note : in 99% of the case, we will just open the inet_sock.
-+ * The remaining 1% case are not fully correct...
-+ */
-+
-+ /* Try all families we support */
-+ for(i = 0; i < sizeof(families)/sizeof(int); ++i) {
-+ /* Try to open the socket, if success returns it */
-+ sock = socket(families[i], SOCK_DGRAM, 0);
-+ if(sock >= 0)
-+ return sock;
-+ }
-+
-+ return -1;
-+}
-+
-+/*------------------------------------------------------------------*/
-+/*
-+ * Convert a value in milliWatt to a value in dBm.
-+ */
-+static int mWatt2dbm ( int in )
-+{
-+#ifdef WE_NOLIBM
-+ /* Version without libm : slower */
-+ double fin = (double) in;
-+ int res = 0;
-+
-+ /* Split integral and floating part to avoid accumulating rounding errors */
-+ while(fin > 10.0)
-+ {
-+ res += 10;
-+ fin /= 10.0;
-+ }
-+ while(fin > 1.000001) /* Eliminate rounding errors, take ceil */
-+ {
-+ res += 1;
-+ fin /= LOG10_MAGIC;
-+ }
-+ return(res);
-+#else /* WE_NOLIBM */
-+ /* Version with libm : faster */
-+ return((int) (ceil(10.0 * log10((double) in))));
-+#endif /* WE_NOLIBM */
-+}
-+
-+/****************************************************************************
-+* *
-+* htob - converts hex string to binary *
-+* *
-+****************************************************************************/
-+static char *htob ( char *s )
-+{
-+ char nibl, *byt;
-+ static char bin[20];
-+
-+ byt = bin;
-+
-+ while ((nibl = *s++) && nibl != ' ') { /* While not end of string. */
-+ nibl -= ( nibl > '9') ? ('A' - 10): '0';
-+ *byt = nibl << 4; /* place high nibble */
-+ if((nibl = *s++) && nibl != ' ') {
-+ nibl -= ( nibl > '9') ? ('A' - 10): '0';
-+ *byt |= nibl; /* place low nibble */
-+ }
-+ else break;
-+ ++byt;
-+ }
-+ *++byt = '\0';
-+ return ( bin );
-+}
-+
-+/****************************************************************************
-+* *
-+* hasChanged() - see if area has been changed from NULLs *
-+* *
-+****************************************************************************/
-+static int hasChanged ( char *loc, int len )
-+{
-+ char *wrk;
-+ int changed = TRUE;
-+
-+ wrk = malloc ( len );
-+ memset ( wrk, 0, len );
-+ if ( memcmp ( loc, wrk, len ) == 0 )
-+ changed = FALSE;
-+ free ( wrk );
-+
-+ return ( changed );
-+}
-+
---- net-snmp-5.1.2-orig/agent/mibgroup/ieee802dot11.h 1970-01-01 01:00:00.000000000 +0100
-+++ net-snmp-5.1.2-5/agent/mibgroup/ieee802dot11.h 2005-03-13 16:17:21.000000000 +0100
-@@ -0,0 +1,730 @@
-+/****************************************************************************
-+* *
-+* File Name: ieee802dot11.h *
-+* Used By: *
-+* *
-+* Operating System: *
-+* Purpose: *
-+* *
-+* Comments: *
-+* *
-+* Author: Larry Simmons *
-+* lsimmons@avantcom.com *
-+* www.avantcom.com *
-+* *
-+* Creation Date: 09/02/03 *
-+* *
-+* Ver Date Inits Modification *
-+* ----- -------- ----- ------------ *
-+* 0.0.1 09/02/03 LRS created *
-+* 0.0.2 09/24/03 LRS wouldn't build after fresh ./configure *
-+****************************************************************************/
-+/* This file was generated by mib2c and is intended for use as a mib module
-+ for the ucd-snmp snmpd agent. */
-+#ifndef _MIBGROUP_IEEE802DOT11_H
-+#define _MIBGROUP_IEEE802DOT11_H
-+/* we may use header_generic and header_simple_table from the util_funcs module */
-+
-+/****************************************************************************
-+* Includes *
-+****************************************************************************/
-+#include <sys/queue.h>
-+
-+/****************************************************************************
-+* Linked List Defines *
-+****************************************************************************/
-+// here are some Linked List MACROS I wanted to use,
-+// but curiously were not in /usr/includes/sys/queue.h
-+
-+#ifndef LIST_EMPTY
-+ #define LIST_EMPTY(head) ((head)->lh_first == NULL)
-+#endif
-+
-+#ifndef LIST_NEXT
-+ #define LIST_NEXT(elm, field) ((elm)->field.le_next)
-+#endif
-+
-+#ifndef LIST_INSERT_BEFORE
-+ #define LIST_INSERT_BEFORE(listelm, elm, field) do { \
-+ (elm)->field.le_prev = (listelm)->field.le_prev; \
-+ LIST_NEXT((elm), field) = (listelm); \
-+ *(listelm)->field.le_prev = (elm); \
-+ (listelm)->field.le_prev = &LIST_NEXT((elm), field); \
-+ } while (0)
-+#endif
-+
-+#ifndef LIST_FIRST
-+ #define LIST_FIRST(head) ((head)->lh_first)
-+#endif
-+
-+/****************************************************************************
-+* 802.11 MIB Defines *
-+****************************************************************************/
-+#define SYS_STRING_LEN 256
-+#define MACADDR_LEN ( 6 * 2 ) + 5
-+#define OPER_RATE_SET_LEN 126
-+#define MAN_OUI_LEN ( 3 * 2 ) + 2
-+#define WEP_STR_LEN 64
-+#define SNMP_STR_LEN 128
-+#define TEXT_LEN 80
-+#define IFINDEX_LEN 4
-+#define IFNAME_LEN 16
-+#define MAX_WEP_KEYS 4
-+
-+#define AUTHENICATION_ALGORITHMS_INDEX_LEN 4
-+#define WEP_DEFAULT_KEY_INDEX_LEN 4
-+#define WEP_KEY_MAPPING_INDEX_LEN 4
-+#define GROUP_ADDRESS_INDEX_LEN 4
-+#define REG_DOMAIN_SUPPORT_INDEX_LEN 4
-+#define ANTENNA_LIST_INDEX_LEN 4
-+#define SUPPORTED_DATA_RATES_TX_INDEX_LEN 4
-+#define SUPPORTED_DATA_RATES_RX_INDEX_LEN 4
-+
-+#define SC_UID_LEN IFINDEX_LEN
-+#define AA_UID_LEN IFINDEX_LEN + AUTHENICATION_ALGORITHMS_INDEX_LEN
-+#define DF_UID_LEN IFINDEX_LEN + WEP_DEFAULT_KEY_INDEX_LEN
-+#define KM_UID_LEN IFINDEX_LEN + WEP_KEY_MAPPING_INDEX_LEN
-+#define PR_UID_LEN IFINDEX_LEN
-+#define OP_UID_LEN IFINDEX_LEN
-+#define CO_UID_LEN IFINDEX_LEN
-+#define GA_UID_LEN IFINDEX_LEN + GROUP_ADDRESS_INDEX_LEN
-+#define RI_UID_LEN IFINDEX_LEN
-+#define PO_UID_LEN IFINDEX_LEN
-+#define PA_UID_LEN IFINDEX_LEN
-+#define PT_UID_LEN IFINDEX_LEN
-+#define PF_UID_LEN IFINDEX_LEN
-+#define PD_UID_LEN IFINDEX_LEN
-+#define PI_UID_LEN IFINDEX_LEN
-+#define RD_UID_LEN IFINDEX_LEN + REG_DOMAIN_SUPPORT_INDEX_LEN
-+#define AL_UID_LEN IFINDEX_LEN + ANTENNA_LIST_INDEX_LEN
-+#define RT_UID_LEN IFINDEX_LEN + SUPPORTED_DATA_RATES_TX_INDEX_LEN
-+#define RR_UID_LEN IFINDEX_LEN + SUPPORTED_DATA_RATES_RX_INDEX_LEN
-+
-+/****************************************************************************
-+* Linked List Structure *
-+****************************************************************************/
-+static struct avNode {
-+ LIST_ENTRY ( avNode ) nodes;
-+ char *data; // pointer to data
-+};
-+
-+typedef LIST_HEAD ( , avNode ) avList_t;
-+
-+/****************************************************************************
-+* 802.11 MIB structures *
-+****************************************************************************/
-+/****************************************************************************
-+* dot11Smt Group *
-+****************************************************************************/
-+/****************************************************************************
-+* dot11StationConfigTable *
-+****************************************************************************/
-+static struct scTbl_data {
-+
-+ char UID [ SC_UID_LEN + 1 ]; // unique ID
-+ char ifName [ IFNAME_LEN + 1 ]; // ifName of card
-+
-+ long ifIndex; // ifindex of card
-+
-+ char stationID [ MACADDR_LEN + 1 ]; // Default actual MacAddr
-+ long mediumOccupancyLimit;
-+ long CFPPollable;
-+ long CFPPeriod;
-+ long maxDuration;
-+ long authenticationResponseTimeOut;
-+ long privacyOptionImplemented;
-+ long powerManagementMode;
-+ char desiredSSID [ SNMP_STR_LEN + 1 ];
-+ long desiredBSSType;
-+ char operationalRateSet [ OPER_RATE_SET_LEN + 1];
-+ long beaconPeriod;
-+ long DTIMPeriod;
-+ long associationResponseTimeOut;
-+ long disAssociationReason;
-+ char disAssociationStation [ MACADDR_LEN + 1 ];
-+ long deAuthenticationReason;
-+ char deAuthenticationStation [ MACADDR_LEN + 1 ];
-+ long authenticateFailStatus;
-+ char authenticateFailStation [ MACADDR_LEN + 1 ];
-+
-+ long haveStationID;
-+ long haveMediumOccupancyLimit;
-+ long haveCFPPollable;
-+ long haveCFPPeriod;
-+ long haveMaxDuration;
-+ long haveAuthenticationResponseTimeOut;
-+ long havePrivacyOptionImplemented;
-+ long havePowerManagementMode;
-+ long haveDesiredSSID;
-+ long haveDesiredBSSType;
-+ long haveOperationalRateSet;
-+ long haveBeaconPeriod;
-+ long haveDTIMPeriod;
-+ long haveAssociationResponseTimeOut;
-+ long haveDisAssociationReason;
-+ long haveDisAssociationStation;
-+ long haveDeAuthenticationReason;
-+ long haveDeAuthenticationStation;
-+ long haveAuthenticateFailStatus;
-+ long haveAuthenticateFailStation;
-+
-+} nSc, *sc = &nSc;
-+
-+static avList_t scList;
-+
-+/****************************************************************************
-+* dot11AuthenticationAlgorithmsTable *
-+****************************************************************************/
-+static struct aaTbl_data {
-+
-+ char UID [ AA_UID_LEN + 1 ];
-+ char ifName [ IFNAME_LEN + 1 ]; // ifName of card
-+
-+ long ifIndex; // ifindex of card
-+ long authenticationAlgorithmsIndex;
-+
-+ long authenticationAlgorithm;
-+ long authenticationAlgorithmsEnable;
-+
-+ long haveAuthenticationAlgorithm;
-+ long haveAuthenticationAlgorithmsEnable;
-+
-+} nAa, *aa = &nAa;
-+
-+static avList_t aaList;
-+
-+/****************************************************************************
-+* dot11WEPDefaultKeysTable *
-+****************************************************************************/
-+static struct dfTbl_data {
-+
-+ char UID [ DF_UID_LEN + 1 ];
-+ char ifName [ IFNAME_LEN + 1 ];
-+
-+ long ifIndex; // ifindex of card
-+ long WEPDefaultKeyIndex;
-+
-+ char WEPDefaultKeyValue [ WEP_STR_LEN + 1 ];
-+ long haveWEPDefaultKeyValue;
-+
-+} nDf, *df = &nDf;
-+
-+static avList_t dfList;
-+
-+/****************************************************************************
-+* dot11WEPKeyMappingsTable *
-+****************************************************************************/
-+static struct kmTbl_data {
-+
-+ char UID [ KM_UID_LEN + 1 ];
-+ char ifName [ IFNAME_LEN + 1 ];
-+
-+ long ifIndex;
-+ long WEPKeyMappingIndex;
-+
-+ char WEPKeyMappingAddress [ MACADDR_LEN + 1 ];
-+ long WEPKeyMappingWEPOn;
-+ char WEPKeyMappingValue [ WEP_STR_LEN + 1 ];
-+ long WEPKeyMappingStatus;
-+
-+ long haveWEPKeyMappingIndex;
-+ long haveWEPKeyMappingAddress;
-+ long haveWEPKeyMappingWEPOn;
-+ long haveWEPKeyMappingValue;
-+ long haveWEPKeyMappingStatus;
-+
-+} nKm, *km = &nKm;
-+
-+static avList_t kmList;
-+
-+/****************************************************************************
-+* dot11PrivacyTable *
-+****************************************************************************/
-+static struct prTbl_data {
-+
-+ char UID [ PR_UID_LEN + 1 ];
-+ char ifName [ IFNAME_LEN + 1 ];
-+
-+ long ifIndex;
-+
-+ long privacyInvoked;
-+ long WEPDefaultKeyID;
-+ long WEPKeyMappingLength;
-+ long excludeUnencrypted;
-+ unsigned long WEPICVErrorCount;
-+ unsigned long WEPExcludedCount;
-+
-+ long havePrivacyInvoked;
-+ long haveWEPDefaultKeyID;
-+ long haveWEPKeyMappingLength;
-+ long haveExcludeUnencrypted;
-+ long haveWEPICVErrorCount;
-+ long haveWEPExcludedCount;
-+
-+} nPr, *pr = &nPr;
-+
-+static avList_t prList;
-+
-+/****************************************************************************
-+* dot11Mac Group *
-+****************************************************************************/
-+/****************************************************************************
-+* dot11OperationTable *
-+****************************************************************************/
-+static struct opTbl_data {
-+
-+ char UID [ OP_UID_LEN + 1 ]; // unique ID
-+ char ifName [ IFNAME_LEN + 1 ]; // ifName of card
-+
-+ long ifIndex; // ifindex of card
-+
-+ char MACAddress [ MACADDR_LEN + 1 ];
-+ long RTSThreshold;
-+ long shortRetryLimit;
-+ long longRetryLimit;
-+ long fragmentationThreshold;
-+ long maxTransmitMSDULifetime;
-+ long maxReceiveLifetime;
-+ char manufacturerID [ SNMP_STR_LEN + 1 ];
-+ char productID [ SNMP_STR_LEN + 1 ];
-+
-+ long haveMACAddress;
-+ long haveRTSThreshold;
-+ long haveShortRetryLimit;
-+ long haveLongRetryLimit;
-+ long haveFragmentationThreshold;
-+ long haveMaxTransmitMSDULifetime;
-+ long haveMaxReceiveLifetime;
-+ long haveManufacturerID;
-+ long haveProductID;
-+
-+} nOp, *op = &nOp;
-+
-+static avList_t opList;
-+
-+/****************************************************************************
-+* dot11CountersTable *
-+****************************************************************************/
-+static struct coTbl_data {
-+
-+ char UID [ CO_UID_LEN + 1 ]; // unique ID
-+ char ifName [ IFNAME_LEN + 1 ]; // ifName of card
-+
-+ long ifIndex; // ifindex of card
-+
-+ unsigned long transmittedFragmentCount;
-+ unsigned long multicastTransmittedFrameCount;
-+ unsigned long failedCount;
-+ unsigned long retryCount;
-+ unsigned long multipleRetryCount;
-+ unsigned long frameDuplicateCount;
-+ unsigned long RTSSuccessCount;
-+ unsigned long RTSFailureCount;
-+ unsigned long ACKFailureCount;
-+ unsigned long receivedFragmentCount;
-+ unsigned long multicastReceivedFrameCount;
-+ unsigned long FCSErrorCount;
-+ unsigned long transmittedFrameCount;
-+ unsigned long WEPUndecryptableCount;
-+
-+ long haveTransmittedFragmentCount;
-+ long haveMulticastTransmittedFrameCount;
-+ long haveFailedCount;
-+ long haveRetryCount;
-+ long haveMultipleRetryCount;
-+ long haveFrameDuplicateCount;
-+ long haveRTSSuccessCount;
-+ long haveRTSFailureCount;
-+ long haveACKFailureCount;
-+ long haveReceivedFragmentCount;
-+ long haveMulticastReceivedFrameCount;
-+ long haveFCSErrorCount;
-+ long haveTransmittedFrameCount;
-+ long haveWEPUndecryptableCount;
-+
-+} nCo, *co = &nCo;
-+
-+static avList_t coList;
-+
-+/****************************************************************************
-+* dot11GroupAddressesTable *
-+****************************************************************************/
-+static struct gaTbl_data {
-+
-+ char UID [ GA_UID_LEN + 1 ];
-+ char ifName [ IFNAME_LEN + 1 ];
-+
-+ long ifIndex; // ifindex of card
-+ long groupAddressesIndex;
-+
-+ char address [ MACADDR_LEN + 1 ];
-+ long groupAddressesStatus;
-+
-+ long haveAddress;
-+ long haveGroupAddressesStatus;
-+
-+} nGa, *ga = &nGa;
-+
-+static avList_t gaList;
-+
-+/****************************************************************************
-+* dot11Res Group *
-+****************************************************************************/
-+static char resourceTypeIDName[] = "RTID";
-+static long haveResourceTypeIDName = 1;
-+
-+/****************************************************************************
-+* dot11ResourceInfoTable *
-+****************************************************************************/
-+static struct riTbl_data {
-+
-+ char UID [ RI_UID_LEN + 1 ]; // unique ID
-+ char ifName [ IFNAME_LEN + 1 ]; // ifName of card
-+
-+ long ifIndex; // ifindex of card
-+
-+ char manufacturerOUI [ MAN_OUI_LEN + 1 ];
-+ char manufacturerName [ SYS_STRING_LEN + 1 ];
-+ char manufacturerProductName [ SYS_STRING_LEN + 1 ];
-+ char manufacturerProductVersion [ SYS_STRING_LEN + 1 ];
-+
-+ char haveManufacturerOUI;
-+ char haveManufacturerName;
-+ char haveManufacturerProductName;
-+ char haveManufacturerProductVersion;
-+
-+} nRi, *ri = &nRi;
-+
-+static avList_t riList;
-+
-+/****************************************************************************
-+* dot11Phy Group *
-+****************************************************************************/
-+/****************************************************************************
-+* dot11PhyOperationTable *
-+****************************************************************************/
-+static struct poTbl_data {
-+
-+ char UID [ PO_UID_LEN + 1 ]; // unique ID
-+ char ifName [ IFNAME_LEN + 1 ]; // ifName of card
-+
-+ long ifIndex; // ifindex of card
-+
-+ long PHYType;
-+ long currentRegDomain;
-+ long tempType;
-+
-+ long havePHYType;
-+ long haveCurrentRegDomain;
-+ long haveTempType;
-+
-+} nPo, *po = &nPo;
-+
-+static avList_t poList;
-+
-+/****************************************************************************
-+* dot11PhyAntennaEntry *
-+****************************************************************************/
-+static struct paTbl_data {
-+
-+ char UID [ PA_UID_LEN + 1 ]; // unique ID
-+ char ifName [ IFNAME_LEN + 1 ]; // ifName of card
-+
-+ long ifIndex; // ifindex of card
-+
-+ long currentTxAntenna;
-+ long diversitySupport;
-+ long currentRxAntenna;
-+
-+ long haveCurrentTxAntenna;
-+ long haveDiversitySupport;
-+ long haveCurrentRxAntenna;
-+
-+} nPa, *pa = &nPa;
-+
-+static avList_t paList;
-+
-+/****************************************************************************
-+* dot11PhyTxPowerTable *
-+****************************************************************************/
-+static struct ptTbl_data {
-+
-+ char UID [ PT_UID_LEN + 1 ]; // unique ID
-+ char ifName [ IFNAME_LEN + 1 ]; // ifName of card
-+
-+ long ifIndex; // ifindex of card
-+
-+ long numberSupportedPowerLevels;
-+ long TxPowerLevel1;
-+ long TxPowerLevel2;
-+ long TxPowerLevel3;
-+ long TxPowerLevel4;
-+ long TxPowerLevel5;
-+ long TxPowerLevel6;
-+ long TxPowerLevel7;
-+ long TxPowerLevel8;
-+ long currentTxPowerLevel;
-+
-+ long haveNumberSupportedPowerLevels;
-+ long haveTxPowerLevel1;
-+ long haveTxPowerLevel2;
-+ long haveTxPowerLevel3;
-+ long haveTxPowerLevel4;
-+ long haveTxPowerLevel5;
-+ long haveTxPowerLevel6;
-+ long haveTxPowerLevel7;
-+ long haveTxPowerLevel8;
-+ long haveCurrentTxPowerLevel ;
-+
-+} nPt, *pt = &nPt;
-+
-+static avList_t ptList;
-+
-+/****************************************************************************
-+* dot11PhyFHSSTable *
-+****************************************************************************/
-+static struct pfTbl_data {
-+
-+ char UID [ PF_UID_LEN + 1 ]; // unique ID
-+ char ifName [ IFNAME_LEN + 1 ]; // ifName of card
-+
-+ long ifIndex; // ifindex of card
-+
-+ long hopTime;
-+ long currentChannelNumber;
-+ long maxDwellTime;
-+ long currentDwellTime;
-+ long currentSet;
-+ long currentPattern;
-+ long currentIndex;
-+
-+ long haveHopTime;
-+ long haveCurrentChannelNumber;
-+ long haveMaxDwellTime;
-+ long haveCurrentDwellTime;
-+ long haveCurrentSet;
-+ long haveCurrentPattern;
-+ long haveCurrentIndex;
-+
-+} nPf, *pf = &nPf;
-+
-+static avList_t pfList;
-+
-+/****************************************************************************
-+* dot11PhyDSSSTable *
-+****************************************************************************/
-+static struct pdTbl_data {
-+
-+ char UID [ PD_UID_LEN + 1 ]; // unique ID
-+ char ifName [ IFNAME_LEN + 1 ]; // ifName of card
-+
-+ long ifIndex; // ifindex of card
-+
-+ long currentChannel;
-+ long CCAModeSupported;
-+ long currentCCAMode;
-+ long EDThreshold;
-+
-+ long haveCurrentChannel;
-+ long haveCCAModeSupported ;
-+ long haveCurrentCCAMode;
-+ long haveEDThreshold;
-+
-+} nPd, *pd = &nPd;
-+
-+static avList_t pdList;
-+
-+/****************************************************************************
-+* dot11PhyIRTable *
-+****************************************************************************/
-+static struct piTbl_data {
-+
-+ char UID [ PI_UID_LEN + 1 ]; // unique ID
-+ char ifName [ IFNAME_LEN + 1 ]; // ifName of card
-+
-+ long ifIndex; // ifindex of card
-+
-+ long CCAWatchdogTimerMax;
-+ long CCAWatchdogCountMax;
-+ long CCAWatchdogTimerMin;
-+ long CCAWatchdogCountMin;
-+
-+ long haveCCAWatchdogTimerMax;
-+ long haveCCAWatchdogCountMax;
-+ long haveCCAWatchdogTimerMin;
-+ long haveCCAWatchdogCountMin;
-+
-+} nPi, *pi = &nPi;
-+
-+static avList_t piList;
-+
-+/****************************************************************************
-+* dot11RegDomainsSupportedTable *
-+****************************************************************************/
-+static struct rdTbl_data {
-+
-+ char UID [ RD_UID_LEN + 1 ];
-+ char ifName [ IFNAME_LEN + 1 ];
-+
-+ long ifIndex; // ifindex of card
-+ long regDomainsSupportIndex;
-+
-+ long regDomainsSupportValue;
-+ long haveRegDomainsSupportValue;
-+
-+} nRd, *rd = &nRd;
-+
-+static avList_t rdList;
-+
-+/****************************************************************************
-+* dot11AntennasListTable *
-+****************************************************************************/
-+static struct alTbl_data {
-+
-+ char UID [ AL_UID_LEN + 1 ];
-+ char ifName [ IFNAME_LEN + 1 ];
-+
-+ long ifIndex; // ifindex of card
-+ long antennaListIndex;
-+
-+ long supportedTxAntenna;
-+ long supportedRxAntenna;
-+ long diversitySelectionRx ;
-+
-+ long haveSupportedTxAntenna;
-+ long haveSupportedRxAntenna;
-+ long haveDiversitySelectionRx ;
-+
-+} nAl, *al = &nAl;
-+
-+static avList_t alList;
-+
-+/****************************************************************************
-+* dot11SupportedDataRatesTxTable *
-+****************************************************************************/
-+static struct rtTbl_data {
-+
-+ char UID [ RT_UID_LEN + 1 ];
-+ char ifName [ IFNAME_LEN + 1 ];
-+
-+ long ifIndex; // ifindex of card
-+ long supportedDataRatesTxIndex;
-+
-+ long supportedDataRatesTxValue;
-+ long haveSupportedDataRatesTxValue;
-+
-+} nRt, *rt = &nRt;
-+
-+static avList_t rtList;
-+
-+/****************************************************************************
-+* dot11SupportedDataRatesRxTable *
-+****************************************************************************/
-+static struct rrTbl_data {
-+
-+ char UID [ RR_UID_LEN + 1 ];
-+ char ifName [ IFNAME_LEN + 1 ];
-+
-+ long ifIndex; // ifindex of card
-+ long supportedDataRatesRxIndex;
-+
-+ long supportedDataRatesRxValue;
-+ long haveSupportedDataRatesRxValue;
-+
-+} nRr, *rr = &nRr;
-+
-+static avList_t rrList;
-+
-+/****************************************************************************
-+* Wireless Extensions Structures *
-+****************************************************************************/
-+static long wepCurrentKey;
-+static long haveWepCurrentKey;
-+static struct wepTbl_data {
-+
-+ long len;
-+ char key [ WEP_STR_LEN + 1 ];
-+ long haveKey;
-+
-+} wep[4];
-+
-+/****************************************************************************
-+* *
-+****************************************************************************/
-+config_require(util_funcs)
-+
-+/* function prototypes */
-+
-+void init_ieee802dot11 ( void );
-+FindVarMethod var_ieee802dot11;
-+FindVarMethod var_dot11StationConfigTable;
-+FindVarMethod var_dot11AuthenticationAlgorithmsTable;
-+FindVarMethod var_dot11WEPDefaultKeysTable;
-+FindVarMethod var_dot11WEPKeyMappingsTable;
-+FindVarMethod var_dot11PrivacyTable;
-+FindVarMethod var_dot11OperationTable;
-+FindVarMethod var_dot11CountersTable;
-+FindVarMethod var_dot11GroupAddressesTable;
-+FindVarMethod var_dot11ResourceInfoTable;
-+FindVarMethod var_dot11PhyOperationTable;
-+FindVarMethod var_dot11PhyAntennaTable;
-+FindVarMethod var_dot11PhyTxPowerTable;
-+FindVarMethod var_dot11PhyFHSSTable;
-+FindVarMethod var_dot11PhyDSSSTable;
-+FindVarMethod var_dot11PhyIRTable;
-+FindVarMethod var_dot11RegDomainsSupportedTable;
-+FindVarMethod var_dot11AntennasListTable;
-+FindVarMethod var_dot11SupportedDataRatesTxTable;
-+FindVarMethod var_dot11SupportedDataRatesRxTable;
-+
-+WriteMethod write_dot11StationID;
-+WriteMethod write_dot11MediumOccupancyLimit;
-+WriteMethod write_dot11CFPPeriod;
-+WriteMethod write_dot11CFPMaxDuration;
-+WriteMethod write_dot11AuthenticationResponseTimeOut;
-+WriteMethod write_dot11PowerManagementMode;
-+WriteMethod write_dot11DesiredSSID;
-+WriteMethod write_dot11DesiredBSSType;
-+WriteMethod write_dot11OperationalRateSet;
-+WriteMethod write_dot11BeaconPeriod;
-+WriteMethod write_dot11DTIMPeriod;
-+WriteMethod write_dot11AssociationResponseTimeOut;
-+WriteMethod write_dot11AuthenticationAlgorithmsEnable;
-+WriteMethod write_dot11WEPDefaultKeyValue;
-+WriteMethod write_dot11WEPKeyMappingAddress;
-+WriteMethod write_dot11WEPKeyMappingWEPOn;
-+WriteMethod write_dot11WEPKeyMappingValue;
-+WriteMethod write_dot11WEPKeyMappingStatus;
-+WriteMethod write_dot11PrivacyInvoked;
-+WriteMethod write_dot11WEPDefaultKeyID;
-+WriteMethod write_dot11WEPKeyMappingLength;
-+WriteMethod write_dot11ExcludeUnencrypted;
-+WriteMethod write_dot11RTSThreshold;
-+WriteMethod write_dot11ShortRetryLimit;
-+WriteMethod write_dot11LongRetryLimit;
-+WriteMethod write_dot11FragmentationThreshold;
-+WriteMethod write_dot11MaxTransmitMSDULifetime;
-+WriteMethod write_dot11MaxReceiveLifetime;
-+WriteMethod write_dot11Address;
-+WriteMethod write_dot11GroupAddressesStatus;
-+WriteMethod write_dot11CurrentRegDomain;
-+WriteMethod write_dot11CurrentTxAntenna;
-+WriteMethod write_dot11CurrentRxAntenna;
-+WriteMethod write_dot11CurrentTxPowerLevel;
-+WriteMethod write_dot11CurrentChannelNumber;
-+WriteMethod write_dot11CurrentDwellTime;
-+WriteMethod write_dot11CurrentSet;
-+WriteMethod write_dot11CurrentPattern;
-+WriteMethod write_dot11CurrentIndex;
-+WriteMethod write_dot11CurrentChannel;
-+WriteMethod write_dot11CurrentCCAMode;
-+WriteMethod write_dot11EDThreshold;
-+WriteMethod write_dot11CCAWatchdogTimerMax;
-+WriteMethod write_dot11CCAWatchdogCountMax;
-+WriteMethod write_dot11CCAWatchdogTimerMin;
-+WriteMethod write_dot11CCAWatchdogCountMin;
-+WriteMethod write_dot11SupportedTxAntenna;
-+WriteMethod write_dot11SupportedRxAntenna;
-+WriteMethod write_dot11DiversitySelectionRx;
-+
-+#endif /* _MIBGROUP_IEEE802DOT11_H */
---- net-snmp-5.1.2-orig/agent/mibgroup/iwlib.h 1970-01-01 01:00:00.000000000 +0100
-+++ net-snmp-5.1.2-5/agent/mibgroup/iwlib.h 2005-03-13 16:17:21.000000000 +0100
-@@ -0,0 +1,502 @@
-+/*
-+ * Wireless Tools
-+ *
-+ * Jean II - HPLB 97->99 - HPL 99->02
-+ *
-+ * Common header for the Wireless Extension library...
-+ *
-+ * This file is released under the GPL license.
-+ * Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
-+ */
-+
-+#ifndef IWLIB_H
-+#define IWLIB_H
-+
-+/*#include "CHANGELOG.h"*/
-+
-+/***************************** INCLUDES *****************************/
-+
-+/* Standard headers */
-+#include <sys/types.h>
-+#include <sys/ioctl.h>
-+#include <stdio.h>
-+#include <math.h>
-+#include <errno.h>
-+#include <fcntl.h>
-+#include <ctype.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <unistd.h>
-+#include <netdb.h> /* gethostbyname, getnetbyname */
-+#include <net/ethernet.h> /* struct ether_addr */
-+#include <sys/time.h> /* struct timeval */
-+#include <unistd.h>
-+
-+/* This is our header selection. Try to hide the mess and the misery :-(
-+ * Don't look, you would go blind ;-) */
-+
-+#ifndef LINUX_VERSION_CODE
-+#include <linux/version.h>
-+#endif
-+
-+/* Kernel headers 2.4.X + Glibc 2.2 - Mandrake 8.0, Debian 2.3, RH 7.1
-+ * Kernel headers 2.2.X + Glibc 2.2 - Slackware 8.0 */
-+#if defined(__GLIBC__) \
-+ && __GLIBC__ == 2 \
-+ && __GLIBC_MINOR__ >= 2 \
-+ && LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
-+//#define GLIBC22_HEADERS
-+#define GENERIC_HEADERS
-+
-+/* Kernel headers 2.4.X + Glibc 2.1 - Debian 2.2 upgraded, RH 7.0
-+ * Kernel headers 2.2.X + Glibc 2.1 - Debian 2.2, RH 6.1 */
-+#elif defined(__GLIBC__) \
-+ && __GLIBC__ == 2 \
-+ && __GLIBC_MINOR__ == 1 \
-+ && LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
-+//#define GLIBC_HEADERS
-+#define GENERIC_HEADERS
-+
-+/* Kernel headers 2.2.X + Glibc 2.0 - Debian 2.1 */
-+#elif defined(__GLIBC__) \
-+ && __GLIBC__ == 2 \
-+ && __GLIBC_MINOR__ == 0 \
-+ && LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0) \
-+ && LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0)
-+#define GLIBC_HEADERS
-+#define KLUDGE_HEADERS
-+
-+/* Note : is it really worth supporting kernel 2.0.X, knowing that
-+ * we require WE v9, which is only available in 2.2.X and higher ?
-+ * I guess one could use 2.0.x with an upgraded wireless.h... */
-+
-+/* Kernel headers 2.0.X + Glibc 2.0 - Debian 2.0, RH 5 */
-+#elif defined(__GLIBC__) \
-+ && __GLIBC__ == 2 \
-+ && __GLIBC_MINOR__ == 0 \
-+ && LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0) \
-+ && LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)
-+#define GLIBC_HEADERS
-+
-+/* Kernel headers 2.0.X + libc5 - old systems */
-+#elif defined(_LINUX_C_LIB_VERSION_MAJOR) \
-+ && _LINUX_C_LIB_VERSION_MAJOR == 5 \
-+ && LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0) \
-+ && LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0)
-+#define LIBC5_HEADERS
-+
-+/* Unsupported combination */
-+#else
-+#error "Your kernel/libc combination is not supported"
-+#endif
-+
-+#ifdef GENERIC_HEADERS
-+/* Proposed by Dr. Michael Rietz <rietz@mail.amps.de>, 27.3.2 */
-+/* If this works for all, it might be more stable on the long term - Jean II */
-+#include <net/if_arp.h> /* For ARPHRD_ETHER */
-+#include <sys/socket.h> /* For AF_INET & struct sockaddr */
-+#include <netinet/in.h> /* For struct sockaddr_in */
-+#include <netinet/if_ether.h>
-+#endif /* GENERIC_HEADERS */
-+
-+#ifdef GLIBC22_HEADERS
-+/* Added by Ross G. Miller <Ross_Miller@baylor.edu>, 3/28/01 */
-+#include <linux/if_arp.h> /* For ARPHRD_ETHER */
-+#include <linux/socket.h> /* For AF_INET & struct sockaddr */
-+#include <sys/socket.h>
-+#endif /* GLIBC22_HEADERS */
-+
-+#ifdef KLUDGE_HEADERS
-+#include <socketbits.h>
-+#endif /* KLUDGE_HEADERS */
-+
-+#ifdef GLIBC_HEADERS
-+#include <linux/if_arp.h> /* For ARPHRD_ETHER */
-+#include <linux/socket.h> /* For AF_INET & struct sockaddr */
-+#include <linux/in.h> /* For struct sockaddr_in */
-+#endif /* KLUDGE_HEADERS || GLIBC_HEADERS */
-+
-+#ifdef LIBC5_HEADERS
-+#include <sys/socket.h> /* For AF_INET & struct sockaddr & socket() */
-+#include <linux/if_arp.h> /* For ARPHRD_ETHER */
-+#include <linux/in.h> /* For struct sockaddr_in */
-+#endif /* LIBC5_HEADERS */
-+
-+/* Those 3 headers were previously included in wireless.h */
-+#include <linux/types.h> /* for "caddr_t" et al */
-+#include <linux/socket.h> /* for "struct sockaddr" et al */
-+#include <linux/if.h> /* for IFNAMSIZ and co... */
-+
-+#ifdef WEXT_HEADER
-+/* Private copy of Wireless extensions */
-+#include WEXT_HEADER
-+#else /* !WEXT_HEADER */
-+/* System wide Wireless extensions */
-+#include <linux/wireless.h>
-+#endif /* !WEXT_HEADER */
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+/****************************** DEBUG ******************************/
-+
-+
-+/************************ CONSTANTS & MACROS ************************/
-+
-+/* Paths */
-+#define PROC_NET_WIRELESS "/proc/net/wireless"
-+#define PROC_NET_DEV "/proc/net/dev"
-+
-+/* Some usefull constants */
-+#define KILO 1e3
-+#define MEGA 1e6
-+#define GIGA 1e9
-+/* For doing log10/exp10 without libm */
-+#define LOG10_MAGIC 1.25892541179
-+
-+/* Backward compatibility for Wireless Extension 9 */
-+#ifndef IW_POWER_MODIFIER
-+#define IW_POWER_MODIFIER 0x000F /* Modify a parameter */
-+#define IW_POWER_MIN 0x0001 /* Value is a minimum */
-+#define IW_POWER_MAX 0x0002 /* Value is a maximum */
-+#define IW_POWER_RELATIVE 0x0004 /* Value is not in seconds/ms/us */
-+#endif /* IW_POWER_MODIFIER */
-+
-+#ifndef IW_ENCODE_NOKEY
-+#define IW_ENCODE_NOKEY 0x0800 /* Key is write only, so not here */
-+#define IW_ENCODE_MODE 0xF000 /* Modes defined below */
-+#endif /* IW_ENCODE_NOKEY */
-+#ifndef IW_ENCODE_TEMP
-+#define IW_ENCODE_TEMP 0x0400 /* Temporary key */
-+#endif /* IW_ENCODE_TEMP */
-+
-+/* More backward compatibility */
-+#ifndef SIOCSIWCOMMIT
-+#define SIOCSIWCOMMIT SIOCSIWNAME
-+#endif /* SIOCSIWCOMMIT */
-+
-+/****************************** TYPES ******************************/
-+
-+/* Shortcuts */
-+typedef struct iw_statistics iwstats;
-+typedef struct iw_range iwrange;
-+typedef struct iw_param iwparam;
-+typedef struct iw_freq iwfreq;
-+typedef struct iw_quality iwqual;
-+typedef struct iw_priv_args iwprivargs;
-+typedef struct sockaddr sockaddr;
-+
-+/* Structure for storing all wireless information for each device
-+ * This is pretty exhaustive... */
-+typedef struct wireless_info
-+{
-+ char name[IFNAMSIZ + 1]; /* Wireless/protocol name */
-+ int has_nwid;
-+ iwparam nwid; /* Network ID */
-+ int has_freq;
-+ double freq; /* Frequency/channel */
-+ int has_sens;
-+ iwparam sens; /* sensitivity */
-+ int has_key;
-+ unsigned char key[IW_ENCODING_TOKEN_MAX]; /* Encoding key used */
-+ int key_size; /* Number of bytes */
-+ int key_flags; /* Various flags */
-+ int has_essid;
-+ int essid_on;
-+ char essid[IW_ESSID_MAX_SIZE + 1]; /* ESSID (extended network) */
-+ int has_nickname;
-+ char nickname[IW_ESSID_MAX_SIZE + 1]; /* NickName */
-+ int has_ap_addr;
-+ sockaddr ap_addr; /* Access point address */
-+ int has_bitrate;
-+ iwparam bitrate; /* Bit rate in bps */
-+ int has_rts;
-+ iwparam rts; /* RTS threshold in bytes */
-+ int has_frag;
-+ iwparam frag; /* Fragmentation threshold in bytes */
-+ int has_mode;
-+ int mode; /* Operation mode */
-+ int has_power;
-+ iwparam power; /* Power management parameters */
-+ int has_txpower;
-+ iwparam txpower; /* Transmit Power in dBm */
-+ int has_retry;
-+ iwparam retry; /* Retry limit or lifetime */
-+
-+ /* Stats */
-+ iwstats stats;
-+ int has_stats;
-+ iwrange range;
-+ int has_range;
-+} wireless_info;
-+
-+/* Structure for storing all wireless information for each device
-+ * This is a cut down version of the one above, containing only
-+ * the things *truly* needed to configure a card.
-+ * Don't add other junk, I'll remove it... */
-+typedef struct wireless_config
-+{
-+ char name[IFNAMSIZ + 1]; /* Wireless/protocol name */
-+ int has_nwid;
-+ iwparam nwid; /* Network ID */
-+ int has_freq;
-+ double freq; /* Frequency/channel */
-+ int has_key;
-+ unsigned char key[IW_ENCODING_TOKEN_MAX]; /* Encoding key used */
-+ int key_size; /* Number of bytes */
-+ int key_flags; /* Various flags */
-+ int has_essid;
-+ int essid_on;
-+ char essid[IW_ESSID_MAX_SIZE + 1]; /* ESSID (extended network) */
-+ int has_mode;
-+ int mode; /* Operation mode */
-+} wireless_config;
-+
-+typedef struct stream_descr
-+{
-+ char * end; /* End of the stream */
-+ char * current; /* Current event in stream of events */
-+ char * value; /* Current value in event */
-+} stream_descr;
-+
-+/* Prototype for handling display of each single interface on the
-+ * system - see iw_enum_devices() */
-+typedef int (*iw_enum_handler)(int skfd,
-+ char * ifname,
-+ char * args[],
-+ int count);
-+
-+/**************************** PROTOTYPES ****************************/
-+/*
-+ * All the functions in iwcommon.c
-+ */
-+
-+/* ---------------------- SOCKET SUBROUTINES -----------------------*/
-+int
-+ iw_sockets_open(void);
-+void
-+ iw_enum_devices(int skfd,
-+ iw_enum_handler fn,
-+ char * args[],
-+ int count);
-+/* --------------------- WIRELESS SUBROUTINES ----------------------*/
-+int
-+ iw_get_range_info(int skfd,
-+ char * ifname,
-+ iwrange * range);
-+int
-+ iw_print_version_info(char * toolname);
-+int
-+ iw_get_priv_info(int skfd,
-+ char * ifname,
-+ iwprivargs * priv,
-+ int maxpriv);
-+int
-+ iw_get_basic_config(int skfd,
-+ char * ifname,
-+ wireless_config * info);
-+int
-+ iw_set_basic_config(int skfd,
-+ char * ifname,
-+ wireless_config * info);
-+/* --------------------- PROTOCOL SUBROUTINES --------------------- */
-+int
-+ iw_protocol_compare(char * protocol1,
-+ char * protocol2);
-+/* -------------------- FREQUENCY SUBROUTINES --------------------- */
-+void
-+ iw_float2freq(double in,
-+ iwfreq * out);
-+double
-+ iw_freq2float(iwfreq * in);
-+void
-+ iw_print_freq(char * buffer,
-+ double freq);
-+int
-+ iw_freq_to_channel(double freq,
-+ struct iw_range * range);
-+void
-+ iw_print_bitrate(char * buffer,
-+ int bitrate);
-+/* ---------------------- POWER SUBROUTINES ----------------------- */
-+int
-+ iw_dbm2mwatt(int in);
-+int
-+ iw_mwatt2dbm(int in);
-+/* -------------------- STATISTICS SUBROUTINES -------------------- */
-+int
-+ iw_get_stats(int skfd,
-+ char * ifname,
-+ iwstats * stats);
-+void
-+ iw_print_stats(char * buffer,
-+ iwqual * qual,
-+ iwrange * range,
-+ int has_range);
-+/* --------------------- ENCODING SUBROUTINES --------------------- */
-+void
-+ iw_print_key(char * buffer,
-+ unsigned char * key,
-+ int key_size,
-+ int key_flags);
-+int
-+ iw_in_key(char * input,
-+ unsigned char * key);
-+int
-+ iw_in_key_full(int skfd,
-+ char * ifname,
-+ char * input,
-+ unsigned char * key,
-+ __u16 * flags);
-+/* ----------------- POWER MANAGEMENT SUBROUTINES ----------------- */
-+void
-+ iw_print_pm_value(char * buffer,
-+ int value,
-+ int flags);
-+void
-+ iw_print_pm_mode(char * buffer,
-+ int flags);
-+/* --------------- RETRY LIMIT/LIFETIME SUBROUTINES --------------- */
-+#if WIRELESS_EXT > 10
-+void
-+ iw_print_retry_value(char * buffer,
-+ int value,
-+ int flags);
-+#endif
-+/* ----------------------- TIME SUBROUTINES ----------------------- */
-+void
-+ iw_print_timeval(char * buffer,
-+ const struct timeval * time);
-+/* --------------------- ADDRESS SUBROUTINES ---------------------- */
-+int
-+ iw_check_mac_addr_type(int skfd,
-+ char * ifname);
-+int
-+ iw_check_if_addr_type(int skfd,
-+ char * ifname);
-+#if 0
-+int
-+ iw_check_addr_type(int skfd,
-+ char * ifname);
-+#endif
-+void
-+ iw_ether_ntop(const struct ether_addr* eth, char* buf);
-+char*
-+ iw_ether_ntoa(const struct ether_addr* eth);
-+int
-+ iw_ether_aton(const char* bufp, struct ether_addr* eth);
-+int
-+ iw_in_inet(char *bufp, struct sockaddr *sap);
-+int
-+ iw_in_addr(int skfd,
-+ char * ifname,
-+ char * bufp,
-+ struct sockaddr * sap);
-+/* ----------------------- MISC SUBROUTINES ------------------------ */
-+int
-+ iw_get_priv_size(int args);
-+
-+#if WIRELESS_EXT > 13
-+/* ---------------------- EVENT SUBROUTINES ---------------------- */
-+void
-+ iw_init_event_stream(struct stream_descr * stream,
-+ char * data,
-+ int len);
-+int
-+ iw_extract_event_stream(struct stream_descr * stream,
-+ struct iw_event * iwe);
-+#endif /* WIRELESS_EXT > 13 */
-+
-+/**************************** VARIABLES ****************************/
-+
-+extern const char * const iw_operation_mode[];
-+#define IW_NUM_OPER_MODE 7
-+
-+/************************* INLINE FUNTIONS *************************/
-+/*
-+ * Functions that are so simple that it's more efficient inlining them
-+ */
-+
-+/*
-+ * Note : I've defined wrapper for the ioctl request so that
-+ * it will be easier to migrate to other kernel API if needed
-+ */
-+
-+/*------------------------------------------------------------------*/
-+/*
-+ * Wrapper to push some Wireless Parameter in the driver
-+ */
-+static inline int
-+iw_set_ext(int skfd, /* Socket to the kernel */
-+ char * ifname, /* Device name */
-+ int request, /* WE ID */
-+ struct iwreq * pwrq) /* Fixed part of the request */
-+{
-+ /* Set device name */
-+ strncpy(pwrq->ifr_name, ifname, IFNAMSIZ);
-+ /* Do the request */
-+ return(ioctl(skfd, request, pwrq));
-+}
-+
-+/*------------------------------------------------------------------*/
-+/*
-+ * Wrapper to extract some Wireless Parameter out of the driver
-+ */
-+static inline int
-+iw_get_ext(int skfd, /* Socket to the kernel */
-+ char * ifname, /* Device name */
-+ int request, /* WE ID */
-+ struct iwreq * pwrq) /* Fixed part of the request */
-+{
-+ /* Set device name */
-+ strncpy(pwrq->ifr_name, ifname, IFNAMSIZ);
-+ /* Do the request */
-+ return(ioctl(skfd, request, pwrq));
-+}
-+
-+/*------------------------------------------------------------------*/
-+/* Backwards compatability
-+ * Actually, those form are much easier to use when dealing with
-+ * struct sockaddr... */
-+static inline char*
-+iw_pr_ether(char* bufp, const unsigned char* addr)
-+{
-+ iw_ether_ntop((const struct ether_addr *) addr, bufp);
-+ return bufp;
-+}
-+/* Backwards compatability */
-+static inline int
-+iw_in_ether(const char *bufp, struct sockaddr *sap)
-+{
-+ sap->sa_family = ARPHRD_ETHER;
-+ return iw_ether_aton(bufp, (struct ether_addr *) sap->sa_data) ? 0 : -1;
-+}
-+
-+/*------------------------------------------------------------------*/
-+/*
-+ * Create an Ethernet broadcast address
-+ */
-+static inline void
-+iw_broad_ether(struct sockaddr *sap)
-+{
-+ sap->sa_family = ARPHRD_ETHER;
-+ memset((char *) sap->sa_data, 0xFF, ETH_ALEN);
-+}
-+
-+/*------------------------------------------------------------------*/
-+/*
-+ * Create an Ethernet NULL address
-+ */
-+static inline void
-+iw_null_ether(struct sockaddr *sap)
-+{
-+ sap->sa_family = ARPHRD_ETHER;
-+ memset((char *) sap->sa_data, 0x00, ETH_ALEN);
-+}
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* IWLIB_H */
diff --git a/openwrt/package/net-snmp/patches/901-ipsec-interfaces.patch b/openwrt/package/net-snmp/patches/901-ipsec-interfaces.patch
deleted file mode 100644
index 886f37af75..0000000000
--- a/openwrt/package/net-snmp/patches/901-ipsec-interfaces.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Date: Tue, 14 Jun 2005 00:39:54 +0200
-From: Alexander Holler <aholler@ahsoftware.de>
-To: nthill@free.fr
-Subject: Patch for libsnmp (openwrt) to work with ipsec-if
-Content-Type: text/plain; charset=ISO-8859-1
-Content-Transfer-Encoding: 7bit
-
-Hello,
-
-I've a small patch for net-snmp (5.1.2) which is needed to work with
-ipsec-interfaces. Otherwise snmpd will segfault which means snmp is not
-really usable.
-
-The patch is from me, but the source for the fault is from:
-
-http://lists.openswan.org/pipermail/users/2004-August/001773.html
-
-It works, because this email is going out over ipsec using a
-snmp-monitored wrt54g. ;)
-
-
---- net-snmp-5.1.2/agent/mibgroup/mibII/interfaces.c.orig 2005-06-14 00:41:16.000000000 +0200
-+++ net-snmp-5.1.2/agent/mibgroup/mibII/interfaces.c 2005-06-14 03:21:35.000000000 +0200
-@@ -1438,8 +1438,10 @@
-
- if (ioctl(fd, 0x8947, &ifr) >= 0) {
- new_ioctl_nums = 1;
-+/*
- } else if (ioctl(fd, SIOCDEVPRIVATE, &ifr) >= 0) {
- new_ioctl_nums = 0;
-+*/
- } else {
- DEBUGMSGTL(("mibII/interfaces", "SIOCGMIIPHY on %s failed\n", ifr.ifr_name));
- return retspeed;
-@@ -1449,7 +1451,8 @@
- for (mii_reg = 0; mii_reg < 8; mii_reg++){
- data[0] = phy_id;
- data[1] = mii_reg;
-- if(ioctl(fd, new_ioctl_nums ? 0x8948 : SIOCDEVPRIVATE+1, &ifr) <0){
-+/* if(ioctl(fd, new_ioctl_nums ? 0x8948 : SIOCDEVPRIVATE+1, &ifr) <0){ */
-+ if(ioctl(fd, 0x8948, &ifr) <0){
- DEBUGMSGTL(("mibII/interfaces", "SIOCGMIIREG on %s failed\n", ifr.ifr_name));
- }
- mii_val[mii_reg] = data[3];
diff --git a/openwrt/package/netperf/Config.in b/openwrt/package/netperf/Config.in
deleted file mode 100644
index 6d642fb0f7..0000000000
--- a/openwrt/package/netperf/Config.in
+++ /dev/null
@@ -1,6 +0,0 @@
-config BR2_PACKAGE_NETPERF
- prompt "netperf........................... network performance measurement tool"
- tristate
- default m if CONFIG_DEVEL
- help
- Program and service to do network performance measurement.
diff --git a/openwrt/package/netperf/Makefile b/openwrt/package/netperf/Makefile
deleted file mode 100644
index 59642f0d23..0000000000
--- a/openwrt/package/netperf/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=netperf
-PKG_VERSION:=2.3pl1
-PKG_RELEASE:=1
-PKG_MD5SUM:=b74314d78af31cb13516fb9a372d2e86
-
-PKG_SOURCE_URL:=ftp://ftp.netperf.org/netperf/archive/ \
- ftp://ftp.cup.hp.com/dist/networking/benchmarks/netperf/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,NETPERF,netperf,$(PKG_VERSION)$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- TARGET_NETPERF_HOME="/etc/netperf.conf" \
- TARGET_CC=$(TARGET_CROSS)gcc \
- TARGET_CFLAGS="$(TARGET_CFLAGS)" \
- TARGET_LIBS="" \
- all
- touch $@
-
-$(IPKG_NETPERF):
- install -d -m0755 $(IDIR_NETPERF)/etc/init.d
- install -m0755 ./files/netserver.init $(IDIR_NETPERF)/etc/init.d/S51netserver
- install -d -m0755 $(IDIR_NETPERF)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/netperf $(IDIR_NETPERF)/usr/bin/
- install -m0755 $(PKG_BUILD_DIR)/netserver $(IDIR_NETPERF)/usr/bin/
- $(RSTRIP) $(IDIR_NETPERF)
- $(IPKG_BUILD) $(IDIR_NETPERF) $(PACKAGE_DIR)
diff --git a/openwrt/package/netperf/files/netserver.init b/openwrt/package/netperf/files/netserver.init
deleted file mode 100644
index 2900b570ae..0000000000
--- a/openwrt/package/netperf/files/netserver.init
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-test -n "$FAILSAFE" && exit
-/usr/bin/netserver
diff --git a/openwrt/package/netperf/ipkg/netperf.control b/openwrt/package/netperf/ipkg/netperf.control
deleted file mode 100644
index d34dd495db..0000000000
--- a/openwrt/package/netperf/ipkg/netperf.control
+++ /dev/null
@@ -1,9 +0,0 @@
-Package: netperf
-Priority: optional
-Version: 2.3pl1
-Section: network
-Architecture: mipsel
-Maintainer: Barnabas Kalman <barnik@vescont.com>
-Source: ftp://ftp.cup.hp.com/dist/networking/benchmarks/
-Description: Program and service to do network performance measurement.
-
diff --git a/openwrt/package/netperf/patches/01-netperf-2.3pl1-openwrt.patch b/openwrt/package/netperf/patches/01-netperf-2.3pl1-openwrt.patch
deleted file mode 100644
index b83ca1167c..0000000000
--- a/openwrt/package/netperf/patches/01-netperf-2.3pl1-openwrt.patch
+++ /dev/null
@@ -1,39 +0,0 @@
---- netperf-2.3pl1.orig/makefile 2004-09-21 23:33:40.000000000 +0200
-+++ netperf-2.3pl1/makefile 2005-12-30 15:35:08.924238576 +0100
-@@ -15,8 +15,7 @@
- # for the rest of the world, it is probably better to put the binaries
- # in /usr/local/netperf or /opt/netperf
- #
--#NETPERF_HOME = /usr/local/netperf
--NETPERF_HOME = /opt/netperf
-+NETPERF_HOME = $(TARGET_NETPERF_HOME)
-
- # The compiler on your system might be somewhere else, and/or have
- # a different name.
-@@ -40,7 +39,7 @@
- # You may safely ignore that warning.
- #
-
--CC = cc
-+CC = $(TARGET_CC)
-
- # Adding flags to CFLAGS enables some non-mainline features. For
- # more information, please consult the source code.
-@@ -113,7 +112,7 @@
- # netserver via the netperf command line with -T
-
- LOG_FILE=DEBUG_LOG_FILE="\"/tmp/netperf.debug\""
--CFLAGS = -O -D$(LOG_FILE) -DNEED_MAKEFILE_EDIT
-+CFLAGS = -D$(LOG_FILE) $(TARGET_CFLAGS)
-
- # Some platforms, and some options, require additional libraries.
- # you can add to the "LIBS =" line to accomplish this. if you find
-@@ -136,7 +135,7 @@
- # -lresolv - required for -DDO_DNS on RedHat 7.1
- # -lsocket -lbind - required for Zeta OS
-
--LIBS= -lm
-+LIBS= -lm $(TARGET_LIBS)
-
- # ---------------------------------------------------------------
- # it should not be the case that anything below this line needs to
diff --git a/openwrt/package/netstat-nat/Config.in b/openwrt/package/netstat-nat/Config.in
deleted file mode 100644
index 26a60cda58..0000000000
--- a/openwrt/package/netstat-nat/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_NETSTAT_NAT
- prompt "netstat-nat....................... A netstat variant for NAT connections"
- tristate
- default m if CONFIG_DEVEL
- help
- Netstat-nat is a small program written in C.
- It displays NAT connections, managed by netfilter/iptables which comes
- with the > 2.4.x linux kernels.
- The program reads its information from '/proc/net/ip_conntrack', which
- is the temporary conntrack-storage of netfilter.
-
- http://tweegy.demon.nl/projects/netstat-nat/
-
diff --git a/openwrt/package/netstat-nat/Makefile b/openwrt/package/netstat-nat/Makefile
deleted file mode 100644
index 3e0ab204c7..0000000000
--- a/openwrt/package/netstat-nat/Makefile
+++ /dev/null
@@ -1,67 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=netstat-nat
-PKG_VERSION:=1.4.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=ccf71a6cbd9a513ea3adec54b54ee770
-
-PKG_SOURCE_URL:=http://tweegy.demon.nl/download/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,NETSTAT-NAT,netstat-nat,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_NETSTAT-NAT):
- install -d -m0755 $(IDIR_NETSTAT-NAT)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/netstat-nat $(IDIR_NETSTAT-NAT)/usr/bin/
- $(RSTRIP) $(IDIR_NETSTAT-NAT)
- $(IPKG_BUILD) $(IDIR_NETSTAT-NAT) $(PACKAGE_DIR)
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/netstat-nat/ipkg/netstat-nat.control b/openwrt/package/netstat-nat/ipkg/netstat-nat.control
deleted file mode 100644
index dea7d633df..0000000000
--- a/openwrt/package/netstat-nat/ipkg/netstat-nat.control
+++ /dev/null
@@ -1,7 +0,0 @@
-Package: netstat-nat
-Priority: optional
-Section: net
-Description: a netstat variant for NAT connections
- Netstat-nat displays NAT connections, managed by netfilter/iptables which
- comes with the > 2.4.x linux kernels.
-
diff --git a/openwrt/package/nfs-server/Config.in b/openwrt/package/nfs-server/Config.in
deleted file mode 100644
index bbc90561b2..0000000000
--- a/openwrt/package/nfs-server/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_NFS_SERVER
- prompt "nfs-server........................ User Space NFS server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_PORTMAP
- help
- User Space NFS Server
-
diff --git a/openwrt/package/nfs-server/Makefile b/openwrt/package/nfs-server/Makefile
deleted file mode 100644
index 32bad9b82a..0000000000
--- a/openwrt/package/nfs-server/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=nfs-server
-PKG_VERSION:=2.2beta47
-PKG_RELEASE:=1
-PKG_MD5SUM:=79a29fe9f79b2f3241d4915767b8c511
-
-PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/n/nfs-user-server
-PKG_SOURCE:=nfs-user-server_$(PKG_VERSION).orig.tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,NFS_SERVER,nfs-server,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)
- touch $@
-
-$(IPKG_NFS_SERVER):
- install -d -m0755 $(IDIR_NFS_SERVER)/etc
- install -m0644 ./files/nfsd.exports $(IDIR_NFS_SERVER)/etc/exports
- install -d -m0755 $(IDIR_NFS_SERVER)/etc/init.d
- install -m0755 ./files/nfsd.init $(IDIR_NFS_SERVER)/etc/init.d/S60nfsd
- install -d -m0755 $(IDIR_NFS_SERVER)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/rpc.* $(IDIR_NFS_SERVER)/usr/sbin/
- $(RSTRIP) $(IDIR_NFS_SERVER)
- $(IPKG_BUILD) $(IDIR_NFS_SERVER) $(PACKAGE_DIR)
diff --git a/openwrt/package/nfs-server/files/nfsd.exports b/openwrt/package/nfs-server/files/nfsd.exports
deleted file mode 100644
index 75a387a487..0000000000
--- a/openwrt/package/nfs-server/files/nfsd.exports
+++ /dev/null
@@ -1 +0,0 @@
-/mnt (ro,all_squash,insecure)
diff --git a/openwrt/package/nfs-server/files/nfsd.init b/openwrt/package/nfs-server/files/nfsd.init
deleted file mode 100644
index 1b1e1bd3aa..0000000000
--- a/openwrt/package/nfs-server/files/nfsd.init
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-/usr/sbin/portmap
-/usr/sbin/rpc.mountd -r
-/usr/sbin/rpc.nfsd
diff --git a/openwrt/package/nfs-server/ipkg/nfs-server.control b/openwrt/package/nfs-server/ipkg/nfs-server.control
deleted file mode 100644
index 7ba8641583..0000000000
--- a/openwrt/package/nfs-server/ipkg/nfs-server.control
+++ /dev/null
@@ -1,14 +0,0 @@
-Package: nfs-server
-Section: net
-Priority: optional
-Depends: portmap
-Description: User space NFS server
- This package contains all necessary programs to make your Linux machine act
- as an NFS server, being an NFS daemon (rpc.nfsd), a mount daemon (rpc.mountd).
- .
- Unlike other NFS daemons, this NFS server runs entirely in user space. This
- makes it a tad slower than other NFS implementations, and also introduces
- some awkwardnesses in the semantics (for instance, moving a file to a
- different directory will render its file handle invalid).
- .
- There is currently no support for file locking.
diff --git a/openwrt/package/nfs-server/patches/build-config.patch b/openwrt/package/nfs-server/patches/build-config.patch
deleted file mode 100644
index 5aa1cde636..0000000000
--- a/openwrt/package/nfs-server/patches/build-config.patch
+++ /dev/null
@@ -1,67 +0,0 @@
---- nfs-server-2.2beta47.old/site.mk 1970-01-01 01:00:00.000000000 +0100
-+++ nfs-server-2.2beta47/site.mk 2005-03-24 22:42:20.000000000 +0100
-@@ -0,0 +1,11 @@
-+#
-+# Site-specific make options generated by BUILD. Please do not edit.
-+#
-+
-+# ugidd support
-+UGIDD_PROG=
-+UGIDD_MAN=
-+# Location of tcp_wrapper library
-+LIBWRAP_DIR=-L/usr/share/stuff/src/openwrt/experimental/buildroot/build_mipsel/staging_dir/lib
-+LIBWRAP_LIB=-lwrap
-+DEVTAB_FILE=
---- nfs-server-2.2beta47.old/site.h 1970-01-01 01:00:00.000000000 +0100
-+++ nfs-server-2.2beta47/site.h 2005-03-24 22:44:19.000000000 +0100
-@@ -0,0 +1,50 @@
-+/*
-+ * Site-specific configuration options generated by BUILD.
-+ * Please do not edit.
-+ */
-+
-+/*
-+ * If ENABLE_DEVTAB is defined, nfsd will use the new inode
-+ * number generation scheme for avoiding inode number clashes
-+ * on big hard disks.
-+ */
-+/* #undef ENABLE_DEVTAB */
-+
-+/*
-+ * If MULTIPLE_SERVER_READWRITE is defined, you will be able
-+ * to run several nfsd process in parallel servicing all NFS
-+ * requests.
-+ */
-+#define MULTIPLE_SERVERS_READWRITE
-+
-+/*
-+ * If ENABLE_UGID_DAEMON is defined, the real rpc.ugidd is built,
-+ * nfsd is built to support ugidd queries.
-+ * Otherwise, a dummy program is created
-+ */
-+/* #undef ENABLE_UGID_DAEMON */
-+
-+/*
-+ * If ENABLE_UGID_NIS is defined, nfsd will support user mapping
-+ * vie the client's NIS server.
-+ */
-+/* #undef ENABLE_UGID_NIS */
-+
-+/*
-+ * if HOSTS_ACCESS is defined, ugidd uses host access control
-+ * provided by libwrap.a from tcp_wrappers
-+ */
-+#define HOSTS_ACCESS
-+
-+/*
-+ * Define correct ownership of export control file
-+ */
-+#define EXPORTSOWNERUID ((uid_t) 0)
-+#define EXPORTSOWNERGID ((gid_t) 0)
-+
-+/*
-+ * If WANT_LOG_MOUNTS is defined, every mount request will be logged
-+ * to syslogd with the name of source site and a path that was
-+ * it requested
-+ */
-+#define WANT_LOG_MOUNTS
diff --git a/openwrt/package/nfs-server/patches/cross-compile-fix.patch b/openwrt/package/nfs-server/patches/cross-compile-fix.patch
deleted file mode 100644
index 646a34a9ab..0000000000
--- a/openwrt/package/nfs-server/patches/cross-compile-fix.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-diff -urN nfs-server-2.2beta47.old/configure nfs-server-2.2beta47/configure
---- nfs-server-2.2beta47.old/configure 1999-06-11 12:06:04.000000000 +0200
-+++ nfs-server-2.2beta47/configure 2005-03-24 22:24:39.000000000 +0100
-@@ -1960,7 +1960,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 1967 "configure"
-@@ -1996,7 +1996,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 2003 "configure"
-@@ -2032,7 +2032,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 2039 "configure"
-@@ -2130,7 +2130,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 2137 "configure"
-@@ -2166,7 +2166,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 2173 "configure"
-@@ -2202,7 +2202,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 2209 "configure"
-@@ -2238,7 +2238,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 2245 "configure"
-@@ -2862,7 +2862,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 2869 "configure"
-@@ -3089,7 +3089,7 @@
-
- # DEC Alpha running OSF/1
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 3096 "configure"
-@@ -3149,7 +3149,7 @@
- # SVR3
- if test -z "$space"; then
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 3156 "configure"
-@@ -3348,7 +3348,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 3355 "configure"
---- nfs-server-2.2beta47.old/logging.c 1998-10-30 17:11:22.000000000 +0100
-+++ nfs-server-2.2beta47/logging.c 2005-03-24 22:47:44.000000000 +0100
-@@ -14,6 +14,7 @@
- */
-
- #include "nfsd.h"
-+#include <time.h>
-
- #ifdef HAVE_SYSLOG_H
- #include <syslog.h>
---- nfs-server-2.2beta47.old/fh.c 1999-11-10 10:41:14.000000000 +0100
-+++ nfs-server-2.2beta47/fh.c 2005-03-24 22:50:50.000000000 +0100
-@@ -50,6 +50,7 @@
- */
-
- #include <assert.h>
-+#include <time.h>
- #include "nfsd.h"
- #include "rpcmisc.h"
- #include "signals.h"
-@@ -350,7 +351,7 @@
- #ifndef ENABLE_DEVTAB
- psi_t dmajor, dminor;
-
--#if SIZEOF_DEV_T == 4
-+#if (SIZEOF_DEV_T == 4)
- /* This folds the upper 16 bits into bits 8..15, and
- * the lower 16 bits into bits 0..7
- */
---- nfs-server-2.2beta47.old/ugid_map.c 2005-03-24 22:34:56.000000000 +0100
-+++ nfs-server-2.2beta47/ugid_map.c 2005-03-24 22:54:00.000000000 +0100
-@@ -34,14 +34,8 @@
- #define UGID_CHUNK0_BYTES (UGID_CHUNK * sizeof(idmap_t))
- #define UGID_EXPIRE 300 /* 5 minutes */
-
--/*
-- * Make sure we get the right size for ugid_t
-- */
--#if SIZEOF_UID_T != SIZEOF_GID_T
--#error Sorry, this code relies on sizeof(uid_t) == sizeof(gid_t)
--#endif
-
--#define UGID_BITS (SIZEOF_UID_T * BITSPERBYTE)
-+#define UGID_BITS (sizeof(uid_t) * BITSPERBYTE)
- #define BITSTOLEVEL(b) ((UGID_BITS - (b)) / UGID_CHUNK_BITS - 1)
- #define UGID_LOWER(id, b) ((id) & ~((1 << (b)) - 1))
- #define UGID_UPPER(id, b) (((id + (1 << (b))) & ~((1 << (b)) - 1))-1)
diff --git a/openwrt/package/nfs-server/patches/debian-subset.patch b/openwrt/package/nfs-server/patches/debian-subset.patch
deleted file mode 100644
index 2ac3f93d46..0000000000
--- a/openwrt/package/nfs-server/patches/debian-subset.patch
+++ /dev/null
@@ -1,698 +0,0 @@
---- nfs-user-server-2.2beta47.orig/BUILD
-+++ nfs-user-server-2.2beta47/BUILD
-@@ -48,7 +48,7 @@
- shift
- done
-
--function read_yesno {
-+read_yesno() {
- ans=""
- echo >&2
- default=$2
-@@ -84,7 +84,7 @@
- echo $ans
- }
-
--function read_ugid {
-+read_ugid() {
- ans=""
- prompt="$2 [default $3 $4] "
- default=$3
-@@ -145,7 +145,7 @@
-
- if ! $batch; then
- echo -n "Please press return to continue"
-- read
-+ read ans
- fi
-
- version=`cat .version`
---- nfs-user-server-2.2beta47.orig/Makefile.in
-+++ nfs-user-server-2.2beta47/Makefile.in
-@@ -95,20 +95,20 @@
- LIBSRCS = fileblocks.c fsusage.c realpath.c strerror.c \
- utimes.c mkdir.c rename.c getopt.c getopt_long.c \
- alloca.c mountlist.c xmalloc.c \
-- xstrdup.c strdup.c strstr.c nfsmounted.c faccess.c \
-+ xstrdup.c strdup.c strstr.c nfsmounted.c \
- haccess.c failsafe.c signals.c
- XDRFILES = mount.x nfs_prot.x
- GENFILES = mount.h mount_xdr.c mount_svc.c nfs_prot.h nfs_prot_xdr.c \
- ugid.h ugid_xdr.c ugid_clnt.c
- HDRS = system.h nfsd.h auth.h fh.h logging.h fakefsuid.h \
-- rpcmisc.h faccess.h rquotad.h rquota.h haccess.h
-+ rpcmisc.h rquotad.h rquota.h haccess.h
- LIBHDRS = fsusage.h getopt.h mountlist.h failsafe.h signals.h
- MANPAGES5 = exports
- MANPAGES8p = mountd nfsd $(UGIDD_MAN)
- MANPAGES8 = showmount
- MANPAGES = $(MANPAGES5) $(MANPAGES8p) $(MANPAGES8)
- LIBOBJS = version.o fsusage.o mountlist.o xmalloc.o xstrdup.o \
-- nfsmounted.o faccess.o haccess.o failsafe.o \
-+ nfsmounted.o haccess.o failsafe.o \
- signals.o @LIBOBJS@ @ALLOCA@
- OBJS = logging.o fh.o devtab.o auth_init.o auth_clnt.o auth.o
- NFSD_OBJS = nfsd.o rpcmisc.o nfs_dispatch.o getattr.o setattr.o \
-@@ -116,7 +116,7 @@
- MOUNTD_OBJS = mountd.o rpcmisc.o mount_dispatch.o mount_xdr.o rmtab.o \
- $(OBJS)
- SHOWMOUNT_OBJS = showmount.o mount_xdr.o
--UGIDD_OBJS = ugidd.o ugid_xdr.o logging.o
-+UGIDD_OBJS = ugidd.o ugid_xdr.o logging.o rpcmisc.o
- DAEMONS = $(rpcprefix)mountd $(rpcprefix)nfsd $(UGIDD_PROG)
- CLIENTS = showmount
-
---- nfs-user-server-2.2beta47.orig/auth.c
-+++ nfs-user-server-2.2beta47/auth.c
-@@ -143,6 +143,21 @@
- return okay;
- }
-
-+static inline int
-+auth_atob(const char *name, struct in_addr *ap)
-+{
-+ int m;
-+
-+ if (!isdigit(*name))
-+ return 0;
-+ for (m = 0; isdigit(*name); name++)
-+ m = m * 10 + (unsigned char) *name - '0';
-+ if (m > 32)
-+ return 0;
-+ ap->s_addr = m ? ~((1 << (32 - m)) - 1) : 0;
-+ return 1;
-+}
-+
- /*
- * Get a client entry for a specific name or pattern.
- * If necessary, this function performs a hostname lookup to
-@@ -614,7 +629,9 @@
- if (auth_aton(hname, &haddr, &ename)) {
- if (*ename == '\0')
- is_hostaddr = 1;
-- else if (*ename == '/' && auth_aton(ename+1, &hmask, NULL))
-+ else if (*ename == '/' &&
-+ (auth_aton(ename+1, &hmask, NULL) ||
-+ auth_atob(ename+1, &hmask)))
- is_netmask = 1;
- }
- is_special = is_wildcard + is_netgroup + is_netmask;
---- nfs-user-server-2.2beta47.orig/auth_init.c
-+++ nfs-user-server-2.2beta47/auth_init.c
-@@ -23,6 +23,7 @@
- #define EXPORTSFILE "/etc/exports"
- #endif
-
-+#if 0
- /* Support for file access control on /etc/exports by Alex Yuriev. */
- #include "faccess.h"
- #ifndef EXPORTSOWNERUID
-@@ -31,6 +32,7 @@
- #ifndef EXPORTSOWNERGID
- #define EXPORTSOWNERGID ((gid_t) 0)
- #endif
-+#endif
-
- exportnode * export_list = NULL;
- int allow_non_root = 0;
-@@ -395,6 +397,7 @@
- auth_file = fname; /* Save for re-initialization */
-
- /* Check protection of exports file. */
-+#if 0 /* A man's house is his castle. */
- switch(iCheckAccess(auth_file, EXPORTSOWNERUID, EXPORTSOWNERGID)) {
- case FACCESSWRITABLE:
- Dprintf(L_ERROR,
-@@ -409,6 +412,7 @@
- Dprintf(L_ERROR, "exiting because of security violation.\n");
- exit(1);
- }
-+#endif
-
- if ((ef = fopen(fname, "r")) == NULL) {
- Dprintf(L_ERROR, "Could not open exports file %s: %s\n",
-@@ -468,7 +472,7 @@
-
- /* Build the RPC mount export list data structure. */
- resex = (exportnode *) xmalloc(sizeof *resex);
-- resex->ex_dir = mount_point;
-+ resex->ex_dir = xstrdup(path);
- resex->ex_groups = NULL;
-
- #ifndef NEW_STYLE_EXPORTS_FILE
---- nfs-user-server-2.2beta47.orig/configure.in
-+++ nfs-user-server-2.2beta47/configure.in
-@@ -53,7 +53,7 @@
- AC_CHECK_LIB(crypt, main)
- AC_CHECK_LIB(nys, main)
- AC_REPLACE_FUNCS(strerror realpath mkdir rename utimes strdup strstr getopt getopt_long)
--AC_HAVE_FUNCS(getcwd seteuid setreuid getdtablesize setgroups lchown setsid setfsuid setfsgid innetgr quotactl authdes_getucred)
-+AC_HAVE_FUNCS(getcwd seteuid setreuid getdtablesize setgroups lchown setsid setfsuid setfsgid innetgr quotactl authdes_getucred strsignal)
- AC_AUTHDES_GETUCRED
- AC_BROKEN_SETFSUID
- AC_MOUNTLIST
---- nfs-user-server-2.2beta47.orig/exports.man
-+++ nfs-user-server-2.2beta47/exports.man
-@@ -8,7 +8,7 @@
- The file
- .I /etc/exports
- serves as the access control list for file systems which may be
--exported to NFS clients. It it used by both the NFS mount daemon,
-+exported to NFS clients. It is used by both the NFS mount daemon,
- .IR mountd (8)
- and the NFS file server daemon
- .IR nfsd (8).
-@@ -75,11 +75,12 @@
- off, specify
- .IR insecure .
- .TP
-+.IR ro
-+Disallow the client to modify files and directories. The client is only
-+allowed to issue read-only requests.
-+.TP
- .IR rw
--Allow the client to modify files and directories. The default is to
--restrict the client to read-only request, which can be made explicit
--by using the
--.IR ro " option.
-+Allow the client to modify files and directories. This is the default.
- .TP
- .I noaccess
- This makes everything below the directory inaccessible for the named
-@@ -98,6 +99,14 @@
- .TP
- .IR link_absolute
- Leave all symbolic link as they are. This is the default operation.
-+.SS Anonymous Entries
-+.PP
-+Entries where hosts are not specified are known as anonymous entries. They
-+have different default settings compared to normal entries. The differences
-+include
-+.IR all_squash ,
-+.IR no_secure ", and"
-+.IR ro .
- .SS User ID Mapping
- .PP
- .I nfsd
---- nfs-user-server-2.2beta47.orig/failsafe.c
-+++ nfs-user-server-2.2beta47/failsafe.c
-@@ -10,8 +10,12 @@
- #include "logging.h"
- #include "signals.h"
- #include <sys/wait.h>
-+#ifdef HAVE_STRSIGNAL
-+#include <string.h>
-+#else
-
- static const char * get_signame(int signo);
-+#endif
-
- void
- failsafe(int level, int ncopies)
-@@ -111,9 +115,17 @@
- pid, running? "Continue" : "Exit");
- } else {
- Dprintf(L_WARNING, "failsafe: "
-+#ifdef HAVE_STRSIGNAL
-+ "child %d terminated by: %s. "
-+#else
- "child %d terminated by %s. "
-+#endif
- "Restarting.",
-+#ifdef HAVE_STRSIGNAL
-+ pid, strsignal(signo));
-+#else
- pid, get_signame(signo));
-+#endif
- child = -1; /* Restart */
- }
- } else if (WIFEXITED(status)) {
-@@ -159,6 +171,7 @@
- /* NOP */
- }
-
-+#ifndef HAVE_STRSIGNAL
- static const char *
- get_signame(int signo)
- {
-@@ -199,3 +212,4 @@
- sprintf(namebuf, "signal #%d", signo);
- return namebuf;
- }
-+#endif
---- nfs-user-server-2.2beta47.orig/mount_dispatch.c
-+++ nfs-user-server-2.2beta47/mount_dispatch.c
-@@ -131,7 +131,7 @@
- dent = &dtbl[proc_index];
-
- memset(&argument, 0, dent->arg_size);
-- if (!svc_getargs(transp, (xdrproc_t) dent->xdr_argument, &argument)) {
-+ if (!svc_getargs(transp, (xdrproc_t) dent->xdr_argument, (caddr_t) &argument)) {
- svcerr_decode(transp);
- goto done;
- }
-@@ -148,7 +148,7 @@
- if (!svc_sendreply(transp, dent->xdr_result, (caddr_t) resp)) {
- svcerr_systemerr(transp);
- }
-- if (!svc_freeargs(transp, (xdrproc_t) dent->xdr_argument, &argument)) {
-+ if (!svc_freeargs(transp, (xdrproc_t) dent->xdr_argument, (caddr_t) &argument)) {
- Dprintf(L_ERROR, "unable to free RPC arguments, exiting\n");
- exit(1);
- }
---- nfs-user-server-2.2beta47.orig/mount_xdr.c
-+++ nfs-user-server-2.2beta47/mount_xdr.c
-@@ -190,7 +190,7 @@
- xdr_ppathcnf(XDR *xdrs, ppathcnf *objp)
- {
-
-- register long *buf=buf;
-+ int32_t *buf=buf;
-
- int i=i;
-
---- nfs-user-server-2.2beta47.orig/mountd.c
-+++ nfs-user-server-2.2beta47/mountd.c
-@@ -310,6 +310,7 @@
- int c;
-
- program_name = argv[0];
-+ chdir("/");
-
- /* Parse the command line options and arguments. */
- opterr = 0;
---- nfs-user-server-2.2beta47.orig/nfs_dispatch.c
-+++ nfs-user-server-2.2beta47/nfs_dispatch.c
-@@ -147,7 +147,7 @@
- nfsclient = NULL;
-
- memset(&argument, 0, dent->arg_size);
-- if (!svc_getargs(transp, (xdrproc_t) dent->xdr_argument, &argument)) {
-+ if (!svc_getargs(transp, (xdrproc_t) dent->xdr_argument, (caddr_t) &argument)) {
- svcerr_decode(transp);
- goto done;
- }
-@@ -173,7 +173,7 @@
- svc_sendreply(transp, dent->xdr_result, (caddr_t) &result);
- #endif
-
-- if (!svc_freeargs(transp, (xdrproc_t) dent->xdr_argument, &argument)) {
-+ if (!svc_freeargs(transp, (xdrproc_t) dent->xdr_argument, (caddr_t) &argument)) {
- Dprintf(L_ERROR, "unable to free RPC arguments, exiting\n");
- exit(1);
- }
---- nfs-user-server-2.2beta47.orig/nfs_prot_xdr.c
-+++ nfs-user-server-2.2beta47/nfs_prot_xdr.c
-@@ -98,7 +98,7 @@
- xdr_fattr(XDR *xdrs, fattr *objp)
- {
-
-- register long *buf=buf;
-+ int32_t *buf=buf;
-
-
- if (xdrs->x_op == XDR_ENCODE) {
-@@ -273,7 +273,7 @@
- xdr_sattr(XDR *xdrs, sattr *objp)
- {
-
-- register long *buf=buf;
-+ int32_t *buf=buf;
-
-
- if (xdrs->x_op == XDR_ENCODE) {
-@@ -553,7 +553,7 @@
- xdr_writeargs(XDR *xdrs, writeargs *objp)
- {
-
-- register long *buf = buf;
-+ int32_t *buf = buf;
-
-
- if (xdrs->x_op == XDR_ENCODE) {
-@@ -777,7 +777,7 @@
- xdr_statfsokres(XDR *xdrs, statfsokres *objp)
- {
-
-- register long *buf=buf;
-+ int32_t *buf=buf;
-
-
- if (xdrs->x_op == XDR_ENCODE) {
---- nfs-user-server-2.2beta47.orig/nfsd.c
-+++ nfs-user-server-2.2beta47/nfsd.c
-@@ -36,6 +36,7 @@
- #define CHK_READ 0
- #define CHK_WRITE 1
- #define CHK_NOACCESS 2
-+#define CHK_ROOT 4
-
- /* Make larger reads possible. Without crashing the machine :-) */
- #undef NFS_MAXDATA
-@@ -173,7 +174,8 @@
- return NULL;
- }
-
-- auth_user(nfsmount, rqstp);
-+ if (!(flags & CHK_ROOT) || strcmp(nfsmount->path, fhc->path))
-+ auth_user(nfsmount, rqstp);
-
- *statp = NFS_OK;
- return fhc;
-@@ -244,7 +246,7 @@
- nfsstat status;
- fhcache *fhc;
-
-- fhc = auth_fh(rqstp, argp, &status, CHK_READ);
-+ fhc = auth_fh(rqstp, argp, &status, CHK_READ | CHK_ROOT);
- if (fhc == NULL)
- return status;
-
-@@ -575,7 +577,12 @@
- #endif
-
- /* MvS: Some clients use chardev 0xFFFF for a FIFO. */
-+#if defined(major) && defined(minor)
-+ if (S_ISCHR(argp->attributes.mode) &&
-+ major(dev) == 0xff && minor(dev) == 0xff) {
-+#else
- if (S_ISCHR(argp->attributes.mode) && dev == 0xFFFF) {
-+#endif
- is_borc = 0;
- dev = 0;
- argp->attributes.mode &= ~S_IFMT;
-@@ -882,7 +889,9 @@
-
- /* This code is from Mark Shand's version */
- errno = 0;
-- if (efs_lstat(h->path, &sbuf) < 0 || !(S_ISDIR(sbuf.st_mode)))
-+ if (efs_lstat(h->path, &sbuf) < 0)
-+ return (NFSERR_ACCES);
-+ if (!S_ISDIR(sbuf.st_mode))
- return (NFSERR_NOTDIR);
- if ((dirp = efs_opendir(h->path)) == NULL)
- return ((errno ? nfs_errno() : NFSERR_NAMETOOLONG));
-@@ -940,7 +949,7 @@
- char *path;
- struct fs_usage fs;
-
-- fhc = auth_fh(rqstp, argp, &status, CHK_READ | CHK_NOACCESS);
-+ fhc = auth_fh(rqstp, argp, &status, CHK_READ | CHK_NOACCESS | CHK_ROOT);
- if (fhc == NULL)
- return status;
- path = fhc->path;
---- nfs-user-server-2.2beta47.orig/rpcmisc.c
-+++ nfs-user-server-2.2beta47/rpcmisc.c
-@@ -64,25 +64,25 @@
- asize = sizeof(saddr);
- sock = 0;
- if (getsockname(0, (struct sockaddr *) &saddr, &asize) == 0) {
-- int ssize = sizeof (int);
-+ int ssize = sizeof (i);
-
- if (saddr.sin_family != AF_INET)
- goto not_inetd;
-- if (getsockopt(0, SOL_SOCKET, SO_TYPE, &_rpcfdtype, &ssize) < 0)
-+ if (getsockopt(0, SOL_SOCKET, SO_TYPE, &i, &ssize) < 0)
- goto not_inetd;
-+ _rpcfdtype = i;
- background_logging(); /* no more logging to stderr */
- closedown = time(NULL) + _RPCSVC_CLOSEDOWN;
- _rpcpmstart = 1;
- } else {
- not_inetd:
-- _rpcfdtype = 0;
- for (i = 0; (vers = verstbl[i]) != 0; i++)
- pmap_unset(prog, vers);
- sock = RPC_ANYSOCK;
- }
-
- if ((_rpcfdtype == 0) || (_rpcfdtype == SOCK_DGRAM)) {
-- if (_rpcfdtype == 0 && defport != 0)
-+ if (_rpcpmstart == 0 && defport != 0)
- sock = makesock(defport, IPPROTO_UDP, bufsiz);
- transp = svcudp_create(sock);
- if (transp == NULL)
-@@ -97,7 +97,7 @@
- }
-
- if ((_rpcfdtype == 0) || (_rpcfdtype == SOCK_STREAM)) {
-- if (_rpcfdtype == 0 && defport != 0)
-+ if (_rpcpmstart == 0 && defport != 0)
- sock = makesock(defport, IPPROTO_TCP, bufsiz);
- transp = svctcp_create(sock, 0, 0);
- if (transp == NULL)
-@@ -220,11 +220,14 @@
- }
- #endif /* SO_SNDBUF */
-
-- if (bind(s, (struct sockaddr *) &sin, sizeof(sin)) == -1)
-- Dprintf(L_FATAL, "Could not bind %s socket to %s:%d: %s\n",
-+ if (bind(s, (struct sockaddr *) &sin, sizeof(sin)) == -1) {
-+ Dprintf(L_ERROR, "Could not bind %s socket to %s:%d: %s\n",
- prot_name, inet_ntoa(sin.sin_addr),
- ntohs(sin.sin_port),
- strerror(errno));
-+ close(s);
-+ s = RPC_ANYSOCK;
-+ }
-
- return (s);
- }
---- nfs-user-server-2.2beta47.orig/showmount.c
-+++ nfs-user-server-2.2beta47/showmount.c
-@@ -200,7 +200,7 @@
- memset(&exportlist, '\0', sizeof(exportlist));
- clnt_stat = clnt_call(mclient, MOUNTPROC_EXPORT,
- (xdrproc_t) xdr_void, NULL,
-- (xdrproc_t) xdr_exports, &exportlist,
-+ (xdrproc_t) xdr_exports, (caddr_t) &exportlist,
- total_timeout);
- if (clnt_stat != RPC_SUCCESS) {
- clnt_perror(mclient, "rpc mount export");
-@@ -233,7 +233,7 @@
- memset(&dumplist, '\0', sizeof(dumplist));
- clnt_stat = clnt_call(mclient, MOUNTPROC_DUMP,
- (xdrproc_t) xdr_void, NULL,
-- (xdrproc_t) xdr_mountlist, &dumplist,
-+ (xdrproc_t) xdr_mountlist, (caddr_t) &dumplist,
- total_timeout);
- if (clnt_stat != RPC_SUCCESS) {
- clnt_perror(mclient, "rpc mount dump");
---- nfs-user-server-2.2beta47.orig/ugid_clnt.c
-+++ nfs-user-server-2.2beta47/ugid_clnt.c
-@@ -16,7 +16,7 @@
- static int clnt_res;
-
- memset((char *)&clnt_res, 0, sizeof(clnt_res));
-- if (clnt_call(clnt, AUTHENTICATE, (xdrproc_t) xdr_int, argp, (xdrproc_t) xdr_int, &clnt_res, TIMEOUT) != RPC_SUCCESS) {
-+ if (clnt_call(clnt, AUTHENTICATE, (xdrproc_t) xdr_int, (caddr_t) argp, (xdrproc_t) xdr_int, (caddr_t) &clnt_res, TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&clnt_res);
-@@ -28,7 +28,7 @@
- static int clnt_res;
-
- memset((char *)&clnt_res, 0, sizeof(clnt_res));
-- if (clnt_call(clnt, NAME_UID, (xdrproc_t) xdr_ugname, argp, (xdrproc_t) xdr_int, &clnt_res, TIMEOUT) != RPC_SUCCESS) {
-+ if (clnt_call(clnt, NAME_UID, (xdrproc_t) xdr_ugname, (caddr_t) argp, (xdrproc_t) xdr_int, (caddr_t) &clnt_res, TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&clnt_res);
-@@ -40,7 +40,7 @@
- static int clnt_res;
-
- memset((char *)&clnt_res, 0, sizeof(clnt_res));
-- if (clnt_call(clnt, GROUP_GID, (xdrproc_t) xdr_ugname, argp, (xdrproc_t) xdr_int, &clnt_res, TIMEOUT) != RPC_SUCCESS) {
-+ if (clnt_call(clnt, GROUP_GID, (xdrproc_t) xdr_ugname, (caddr_t) argp, (xdrproc_t) xdr_int, (caddr_t) &clnt_res, TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&clnt_res);
-@@ -52,7 +52,7 @@
- static ugname clnt_res;
-
- memset((char *)&clnt_res, 0, sizeof(clnt_res));
-- if (clnt_call(clnt, UID_NAME, (xdrproc_t) xdr_int, argp, (xdrproc_t) xdr_ugname, &clnt_res, TIMEOUT) != RPC_SUCCESS) {
-+ if (clnt_call(clnt, UID_NAME, (xdrproc_t) xdr_int, (caddr_t) argp, (xdrproc_t) xdr_ugname, (caddr_t) &clnt_res, TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&clnt_res);
-@@ -64,7 +64,7 @@
- static ugname clnt_res;
-
- memset((char *)&clnt_res, 0, sizeof(clnt_res));
-- if (clnt_call(clnt, GID_GROUP, (xdrproc_t) xdr_int, argp, (xdrproc_t) xdr_ugname, &clnt_res, TIMEOUT) != RPC_SUCCESS) {
-+ if (clnt_call(clnt, GID_GROUP, (xdrproc_t) xdr_int, (caddr_t) argp, (xdrproc_t) xdr_ugname, (caddr_t) &clnt_res, TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&clnt_res);
---- nfs-user-server-2.2beta47.orig/ugid_map.c
-+++ nfs-user-server-2.2beta47/ugid_map.c
-@@ -602,7 +602,7 @@
- * the server's port after clntudp_create, so we fetch it
- * explicitly.
- */
-- clnt_control(clnt, CLGET_SERVER_ADDR, &addr);
-+ clnt_control(clnt, CLGET_SERVER_ADDR, (caddr_t) &addr);
- if (!SECURE_PORT(addr.sin_port)) {
- Dprintf(L_ERROR, "%s on %s runs on unprivileged port.\n",
- name, inet_ntoa(addr.sin_addr));
---- nfs-user-server-2.2beta47.orig/ugidd.c
-+++ nfs-user-server-2.2beta47/ugidd.c
-@@ -20,6 +20,8 @@
- #include "ugid.h"
- #include "logging.h"
- #include "haccess.h"
-+#include "rpcmisc.h"
-+#include "signals.h"
- #ifdef HAVE_LIBWRAP_BUG
- #include <syslog.h>
- #endif
-@@ -27,6 +29,8 @@
-
- static void ugidprog_1(struct svc_req *rqstp, SVCXPRT *transp);
- static void usage(void);
-+static void terminate(void);
-+static RETSIGTYPE sigterm(int sig);
-
- #ifndef HAVE_RPCGEN_C
- #define authenticate_1_svc authenticate_1
-@@ -39,17 +43,23 @@
-
- static struct option longopts[] = {
- { "debug", 0, 0, 'd' },
-+ { "port", required_argument, 0, 'P' },
- { NULL, 0, 0, 0 }
- };
-
-+static int ugidd_versions[] = {
-+ UGIDVERS,
-+ 0
-+};
-+
- int
- main(argc, argv)
- int argc;
- char **argv;
- {
-- SVCXPRT *transp;
- int c, longind;
- int foreground = 0;
-+ int port = 0;
-
- #ifndef HOSTS_ACCESS
- fprintf(stderr,
-@@ -59,40 +69,34 @@
- sleep(1);
- #endif
-
-- while ((c = getopt_long(argc, argv, "d", longopts, &longind)) != EOF) {
-+ chdir("/");
-+
-+ while ((c = getopt_long(argc, argv, "dP:", longopts, &longind)) != EOF) {
- switch (c) {
- case 'd':
- foreground = 1;
- enable_logging("ugid");
- break;
-+ case 'P':
-+ port = atoi(optarg);
-+ if (port <= 0 || port > 65535) {
-+ fprintf(stderr, "ugidd: bad port number: %s\n",
-+ optarg);
-+ usage();
-+ }
-+ break;
- default:
- usage();
- }
- }
-
-- (void)pmap_unset(UGIDPROG, UGIDVERS);
-+ log_open("ugidd", foreground);
-
-- transp = svcudp_create(RPC_ANYSOCK);
-- if (transp == NULL) {
-- (void)fprintf(stderr, "cannot create udp service.\n");
-- exit(1);
-- }
-- if (!svc_register(transp, UGIDPROG, UGIDVERS, ugidprog_1, IPPROTO_UDP)) {
-- fprintf(stderr, "unable to register (UGIDPROG, UGIDVERS, UDP)\n");
-- exit(1);
-- }
--
-- transp = svctcp_create(RPC_ANYSOCK, 0, 0);
-- if (transp == NULL) {
-- fprintf(stderr, "cannot create tcp service.\n");
-- exit(1);
-- }
-- if (!svc_register(transp, UGIDPROG, UGIDVERS, ugidprog_1, IPPROTO_TCP)) {
-- fprintf(stderr, "unable to register (UGIDPROG, UGIDVERS, TCP)\n");
-- exit(1);
-- }
-+ /* Create services and register with portmapper */
-+ _rpcfdtype = SOCK_DGRAM;
-+ rpc_init("ugidd", UGIDPROG, ugidd_versions, ugidprog_1, port, 0);
-
-- if (!foreground) {
-+ if (!foreground && !_rpcpmstart) {
- if ((c = fork()) > 0)
- exit(0);
- if (c < 0) {
-@@ -117,7 +121,8 @@
- #endif
- }
-
-- log_open("ugidd", foreground);
-+ install_signal_handler(SIGTERM, sigterm);
-+ atexit(terminate);
-
- svc_run();
- Dprintf(L_ERROR, "svc_run returned\n");
-@@ -127,7 +132,7 @@
- static void
- usage()
- {
-- fprintf(stderr, "rpc.ugidd: [-d]\n");
-+ fprintf(stderr, "rpc.ugidd: [-d] [-P port]\n");
- exit (2);
- }
-
-@@ -188,7 +193,7 @@
- return;
- }
- bzero((char *)&argument, sizeof(argument));
-- if (!svc_getargs(transp, xdr_argument, &argument)) {
-+ if (!svc_getargs(transp, xdr_argument, (caddr_t) &argument)) {
- svcerr_decode(transp);
- return;
- }
-@@ -196,7 +201,7 @@
- if (result != NULL && !svc_sendreply(transp, xdr_result, result)) {
- svcerr_systemerr(transp);
- }
-- if (!svc_freeargs(transp, xdr_argument, &argument)) {
-+ if (!svc_freeargs(transp, xdr_argument, (caddr_t) &argument)) {
- (void)fprintf(stderr, "unable to free arguments\n");
- exit(1);
- }
-@@ -321,6 +326,19 @@
- }
-
-
-+static RETSIGTYPE
-+sigterm(int sig)
-+{
-+ exit(0);
-+}
-+
-+static void
-+terminate(void)
-+{
-+ rpc_exit(UGIDPROG, ugidd_versions);
-+}
-+
-+
-
- #else /* ENABLE_UGID_DAEMON */
-
diff --git a/openwrt/package/nfs-server/patches/gcc-3.4-fix.patch b/openwrt/package/nfs-server/patches/gcc-3.4-fix.patch
deleted file mode 100644
index 21915ce497..0000000000
--- a/openwrt/package/nfs-server/patches/gcc-3.4-fix.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -urN nfs-server-2.2beta47.old/fh.c nfs-server-2.2beta47.dev/fh.c
---- nfs-server-2.2beta47.old/fh.c 2005-04-29 00:37:48.000000000 +0200
-+++ nfs-server-2.2beta47.dev/fh.c 2005-04-29 00:39:44.000000000 +0200
-@@ -351,13 +351,13 @@
- #ifndef ENABLE_DEVTAB
- psi_t dmajor, dminor;
-
--#if (SIZEOF_DEV_T == 4)
-- /* This folds the upper 16 bits into bits 8..15, and
-- * the lower 16 bits into bits 0..7
-- */
-- dev = (((dev >> 16) & 0xff00) ^ ((dev >> 8) & 0xff00)) |
-- (((dev >> 8) & 0xff) ^ (dev & 0xff));
--#endif
-+ if (sizeof(dev_t) == 4) {
-+ /* This folds the upper 16 bits into bits 8..15, and
-+ * the lower 16 bits into bits 0..7
-+ */
-+ dev = (((dev >> 16) & 0xff00) ^ ((dev >> 8) & 0xff00)) |
-+ (((dev >> 8) & 0xff) ^ (dev & 0xff));
-+ }
-
- /*
- * Assuming major and minor numbers are small integers,
diff --git a/openwrt/package/nfs-server/patches/remove-warning.patch b/openwrt/package/nfs-server/patches/remove-warning.patch
deleted file mode 100644
index 5484b792c2..0000000000
--- a/openwrt/package/nfs-server/patches/remove-warning.patch
+++ /dev/null
@@ -1,30 +0,0 @@
---- nfs-server-2.2beta47.old/auth_clnt.c 1999-11-10 10:18:06.000000000 +0100
-+++ nfs-server-2.2beta47/auth_clnt.c 2005-03-24 23:44:16.000000000 +0100
-@@ -238,19 +238,23 @@
-
- /* First, set the user ID. */
- if (auth_uid != cred_uid) {
-- if (setfsuid(cred_uid) < 0)
-+ if (setfsuid(cred_uid) < 0) {
-+#if 0
- Dprintf(L_ERROR, "Unable to setfsuid %d: %s\n",
- cred_uid, strerror(errno));
-- else
-+#endif
-+ } else
- auth_uid = cred_uid;
- }
-
- /* Next, the group ID. */
- if (auth_gid != cred_gid) {
-- if (setfsgid(cred_gid) < 0)
-+ if (setfsgid(cred_gid) < 0) {
-+#if 0
- Dprintf(L_ERROR, "Unable to setfsgid %d: %s\n",
- cred_gid, strerror(errno));
-- else
-+#endif
-+ } else
- auth_gid = cred_gid;
- }
-
diff --git a/openwrt/package/nmap/Config.in b/openwrt/package/nmap/Config.in
deleted file mode 100644
index ed85f9ca08..0000000000
--- a/openwrt/package/nmap/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_NMAP
- prompt "nmap.............................. Network exploration and/or security auditing utility"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBDNET
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPCRE
- select BR2_PACKAGE_UCLIBCXX
- help
- A free open source utility for network exploration or security auditing.
-
- http://www.insecure.org/nmap/
-
diff --git a/openwrt/package/nmap/Makefile b/openwrt/package/nmap/Makefile
deleted file mode 100644
index b60558f6fb..0000000000
--- a/openwrt/package/nmap/Makefile
+++ /dev/null
@@ -1,80 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=nmap
-PKG_VERSION:=4.01
-PKG_RELEASE:=1
-PKG_MD5SUM:=09c259837b24f6c7385c2c1c49760a7c
-
-PKG_SOURCE_URL:=http://download.insecure.org/nmap/dist
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,NMAP,nmap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- libpcapdir="$(STAGING_DIR)/usr/lib" \
- CFLAGS="$(TARGET_CFLAGS)" \
- CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti -nostdinc++" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-nodefaultlibs -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-luClibc++ -lc -lm -lgcc" \
- ac_cv_prog_CXX="$(TARGET_CXX)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --without-openssl \
- --without-nmapfe \
- --with-libdnet="$(STAGING_DIR)/usr" \
- --with-libpcap="$(STAGING_DIR)/usr" \
- --with-libpcre="$(STAGING_DIR)/usr" \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CCOPT="$(TARGET_CFLAGS) -fno-builtin -nostdinc++" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_NMAP):
- install -d -m0755 $(IDIR_NMAP)/usr/share/nmap
- for file in mac-prefixes os-fingerprints protocols rpc service-probes services; do \
- $(CP) $(PKG_INSTALL_DIR)/usr/share/nmap/nmap-$$file $(IDIR_NMAP)/usr/share/nmap; \
- done
- install -d -m0755 $(IDIR_NMAP)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/nmap $(IDIR_NMAP)/usr/bin/
- $(RSTRIP) $(IDIR_NMAP)
- $(IPKG_BUILD) $(IDIR_NMAP) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/nmap/ipkg/nmap.control b/openwrt/package/nmap/ipkg/nmap.control
deleted file mode 100644
index e5bedd47db..0000000000
--- a/openwrt/package/nmap/ipkg/nmap.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: nmap
-Priority: optional
-Section: net
-Depends: libgcc, libdnet, libpcap, libpcre, uclibc++
-Description: Nmap is a free open source utility for network exploration or security auditing.
diff --git a/openwrt/package/nmap/patches/cross-compile.patch b/openwrt/package/nmap/patches/cross-compile.patch
deleted file mode 100644
index 5c3785c4b3..0000000000
--- a/openwrt/package/nmap/patches/cross-compile.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-diff -urN nmap-4.01.old/configure nmap-4.01.dev/configure
---- nmap-4.01.old/configure 2006-02-01 19:18:42.000000000 -0700
-+++ nmap-4.01.dev/configure 2006-03-29 23:14:28.000000000 -0700
-@@ -1341,12 +1341,6 @@
- fi
- fi
-
--libpcapdir=libpcap
--
--
--pcredir=libpcre
--
--
- ac_config_headers="$ac_config_headers config.h"
-
-
-diff -urN nmap-4.01.old/Makefile.in nmap-4.01.dev/Makefile.in
---- nmap-4.01.old/Makefile.in 2006-02-09 19:22:27.000000000 -0700
-+++ nmap-4.01.dev/Makefile.in 2006-03-29 23:14:12.000000000 -0700
-@@ -29,7 +29,7 @@
- # CFLAGS = $(DEFS) $(INCLS)
- STATIC =
- LDFLAGS = @LDFLAGS@ $(STATIC)
--LIBS = @LIBNBASE_LIBS@ @LIBNSOCK_LIBS@ @LIBPCRE_LIBS@ @LIBPCAP_LIBS@ @OPENSSL_LIBS@ @LIBDNET_LIBS@ @LIBS@
-+LIBS = @LIBNBASE_LIBS@ @LIBNSOCK_LIBS@ -lpcre -lpcap @OPENSSL_LIBS@ -ldnet @LIBS@
- # LIBS = -lefence @LIBS@
- # LIBS = -lrmalloc @LIBS@
- SHTOOL = ./shtool
-@@ -68,15 +68,6 @@
- # all of the prerequisites (e.g. recursive makes and such)
- FORCE:
-
--$(LIBPCREDIR)/libpcre.a: $(LIBPCREDIR)/Makefile FORCE
-- @echo Compiling libpcre; cd $(LIBPCREDIR) && $(MAKE)
--
--$(LIBDNETDIR)/src/.libs/libdnet.a: $(LIBDNETDIR)/Makefile FORCE
-- @echo Compiling libdnet; cd $(LIBDNETDIR) && $(MAKE)
--
--$(LIBPCAPDIR)/libpcap.a: $(LIBPCAPDIR)/Makefile FORCE
-- @echo Compiling libpcap; cd $(LIBPCAPDIR) && $(MAKE)
--
- $(NBASEDIR)/libnbase.a: $(NBASEDIR)/Makefile FORCE
- @echo Compiling libnbase;
- cd $(NBASEDIR) && $(MAKE)
diff --git a/openwrt/package/nmap/patches/no_strip.patch b/openwrt/package/nmap/patches/no_strip.patch
deleted file mode 100644
index ffe953e285..0000000000
--- a/openwrt/package/nmap/patches/no_strip.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN nmap-4.01.old/Makefile.in nmap-4.01.dev/Makefile.in
---- nmap-4.01.old/Makefile.in 2006-02-09 19:22:27.000000000 -0700
-+++ nmap-4.01.dev/Makefile.in 2006-03-29 23:14:12.000000000 -0700
-@@ -144,7 +135,7 @@
-
- install-nmap: $(TARGET)
- $(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(nmapdatadir)
-- $(INSTALL) -c -m 755 -s nmap $(DESTDIR)$(bindir)/nmap
-+ $(INSTALL) -c -m 755 nmap $(DESTDIR)$(bindir)/nmap
- $(INSTALL) -c -m 644 docs/$(TARGET).1 $(DESTDIR)$(mandir)/man1/$(TARGET).1
- $(INSTALL) -c -m 644 docs/nmap.xsl $(DESTDIR)$(nmapdatadir)/
- $(INSTALL) -c -m 644 docs/nmap.dtd $(DESTDIR)$(nmapdatadir)/
diff --git a/openwrt/package/nocatsplash/Config.in b/openwrt/package/nocatsplash/Config.in
deleted file mode 100644
index 174f9e666e..0000000000
--- a/openwrt/package/nocatsplash/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_NOCATSPLASH
- prompt "nocatsplash....................... Open public network gateway daemon"
- tristate
- default m if CONFIG_DEVEL
- help
- NoCatSplash is an Open Public Network Gateway Daemon.
- It performs as a [captive/open/active] portal. When run on a gateway/router
- on a network, all web requests are redirected until the client either logs
- in or clicks "I Accept" to an AUP. The gateway daemon then changes the
- firewall rules on the gateway to pass traffic for that client (based on IP
- address and MAC address).
-
diff --git a/openwrt/package/nocatsplash/Makefile b/openwrt/package/nocatsplash/Makefile
deleted file mode 100644
index 4d2120e776..0000000000
--- a/openwrt/package/nocatsplash/Makefile
+++ /dev/null
@@ -1,64 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=nocatsplash
-PKG_VERSION:=0.92
-PKG_RELEASE:=1
-PKG_MD5SUM:=e0fcc0effe52e63bc31070d16d0b4a81
-
-PKG_SOURCE_URL:=http://wifi.rulez.org/~josephus/
-PKG_SOURCE:=NoCatSplash-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/NoCatSplash-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,NOCATSPLASH,nocatsplash,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- --with-firewall=iptables \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --with-glib-prefix="$(STAGING_DIR)/usr" \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_NOCATSPLASH):
- mkdir -p $(IDIR_NOCATSPLASH)
- $(CP) $(PKG_INSTALL_DIR)/* $(IDIR_NOCATSPLASH)/
- $(RSTRIP) $(IDIR_NOCATSPLASH)
- $(IPKG_BUILD) $(IDIR_NOCATSPLASH) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/nocatsplash/ipkg/nocatsplash.conffiles b/openwrt/package/nocatsplash/ipkg/nocatsplash.conffiles
deleted file mode 100644
index a25777d9a4..0000000000
--- a/openwrt/package/nocatsplash/ipkg/nocatsplash.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/nocat.conf
diff --git a/openwrt/package/nocatsplash/ipkg/nocatsplash.control b/openwrt/package/nocatsplash/ipkg/nocatsplash.control
deleted file mode 100644
index ec0bfc7e2f..0000000000
--- a/openwrt/package/nocatsplash/ipkg/nocatsplash.control
+++ /dev/null
@@ -1,10 +0,0 @@
-Package: nocatsplash
-Priority: optional
-Section: net
-Depends: iptables-extra, glib1
-Description: NoCatSplash is an Open Public Network Gateway Daemon.
- It performs as a [captive/open/active] portal. When run on a gateway/router
- on a network, all web requests are redirected until the client either logs
- in or clicks "I Accept" to an AUP. The gateway daemon then changes the
- firewall rules on the gateway to pass traffic for that client (based on IP
- address and MAC address).
diff --git a/openwrt/package/nocatsplash/patches/openwrt-firewall.patch b/openwrt/package/nocatsplash/patches/openwrt-firewall.patch
deleted file mode 100644
index 055b57f24d..0000000000
--- a/openwrt/package/nocatsplash/patches/openwrt-firewall.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -urN NoCatSplash-0.92.old/libexec/iptables/initialize.fw NoCatSplash-0.92/libexec/iptables/initialize.fw
---- NoCatSplash-0.92.old/libexec/iptables/initialize.fw 2002-12-27 11:44:41.000000000 +0100
-+++ NoCatSplash-0.92/libexec/iptables/initialize.fw 2005-04-04 20:45:57.000000000 +0200
-@@ -28,13 +28,9 @@
-
- # Load alllll the kernel modules we need.
- #
--rmmod ipchains > /dev/null 2>&1 # for RH 7.1 users.
-
--for module in ip_tables ipt_REDIRECT ipt_MASQUERADE ipt_MARK ipt_REJECT \
-- ipt_TOS ipt_LOG iptable_mangle iptable_filter iptable_nat ip_nat_ftp \
-- ip_conntrack ipt_mac ipt_state ipt_mark; do
--
-- modprobe $module
-+for module in ipt_TOS ipt_mac; do
-+ insmod $module
- done
-
-
diff --git a/openwrt/package/ntpclient/Config.in b/openwrt/package/ntpclient/Config.in
deleted file mode 100644
index 1e9ca925bd..0000000000
--- a/openwrt/package/ntpclient/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_NTPCLIENT
- prompt "ntpclient......................... NTP (Network Time Protocol) client"
- tristate
- default m if CONFIG_DEVEL
- help
- NTP client for setting system time from NTP servers.
-
- http://doolittle.faludi.com/ntpclient/
-
diff --git a/openwrt/package/ntpclient/Makefile b/openwrt/package/ntpclient/Makefile
deleted file mode 100644
index c1e3c616e7..0000000000
--- a/openwrt/package/ntpclient/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ntpclient
-PKG_VERSION:=2003_194
-PKG_RELEASE:=2
-PKG_MD5SUM:=94e84d5c6023c5e1f3890b28d0a08c92
-
-PKG_SOURCE_URL:=http://doolittle.faludi.com/ntpclient
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,NTPCLIENT,ntpclient,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) CFLAGS="$(TARGET_CFLAGS)" all adjtimex
- touch $@
-
-$(IPKG_NTPCLIENT):
- install -d -m0755 $(IDIR_NTPCLIENT)/etc/hotplug.d/iface
- install -m0755 ./files/ntpclient.init $(IDIR_NTPCLIENT)/etc/hotplug.d/iface/10-ntpclient
- install -d -m0755 $(IDIR_NTPCLIENT)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/ntpclient $(IDIR_NTPCLIENT)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/adjtimex $(IDIR_NTPCLIENT)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/rate.awk $(IDIR_NTPCLIENT)/usr/sbin/
- $(RSTRIP) $(IDIR_NTPCLIENT)
- $(IPKG_BUILD) $(IDIR_NTPCLIENT) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/ntpclient/files/ntpclient.init b/openwrt/package/ntpclient/files/ntpclient.init
deleted file mode 100644
index 3a21184202..0000000000
--- a/openwrt/package/ntpclient/files/ntpclient.init
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-ntp_server=$(nvram get ntp_server)
-case "${ACTION:-ifup}" in
- ifup)
- ps x | grep 'bin/[n]tpclient' >&- || {
- route -n 2>&- | grep '^0.0.0.0' >&- && /usr/sbin/ntpclient -c 1 -s -h ${ntp_server:-pool.ntp.org} &
- }
- ;;
- ifdown)
- route -n 2>&- | grep '^0.0.0.0' >&- || killall ntpclient 2>&- >&- ;;
-esac
diff --git a/openwrt/package/ntpclient/ipkg/ntpclient.control b/openwrt/package/ntpclient/ipkg/ntpclient.control
deleted file mode 100644
index 4194e617be..0000000000
--- a/openwrt/package/ntpclient/ipkg/ntpclient.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: ntpclient
-Priority: optional
-Section: net
-Description: NTP client for setting system time from NTP servers.
diff --git a/openwrt/package/nvram/Config.in b/openwrt/package/nvram/Config.in
deleted file mode 100644
index be4138275f..0000000000
--- a/openwrt/package/nvram/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_NVRAM
- prompt "nvram............................. Broadcom config utility"
- tristate
- default y
- depends BR2_LINUX_2_4_BRCM
- help
- control utility for broadcom's 'nvram' config area
-
diff --git a/openwrt/package/nvram/Makefile b/openwrt/package/nvram/Makefile
deleted file mode 100644
index dd460fc06d..0000000000
--- a/openwrt/package/nvram/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=nvram
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,NVRAM,nvram,$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.prepared:
- mkdir -p $(PKG_BUILD_DIR)
- $(CP) ./src/* $(PKG_BUILD_DIR)
- touch $@
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -I $(STAGING_DIR)/usr/include"
- touch $@
-
-$(IPKG_NVRAM):
- mkdir -p $(IDIR_NVRAM)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/*.so $(IDIR_NVRAM)/usr/lib
- mkdir -p $(IDIR_NVRAM)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/nvram $(IDIR_NVRAM)/usr/sbin
- $(RSTRIP) $(IDIR_NVRAM)
- $(IPKG_BUILD) $(IDIR_NVRAM) $(PACKAGE_DIR)
-
-
-compile-targets: install-dev
-install-dev: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/*.so $(STAGING_DIR)/usr/lib
-
-
diff --git a/openwrt/package/nvram/ipkg/nvram.control b/openwrt/package/nvram/ipkg/nvram.control
deleted file mode 100644
index c7ea64d19c..0000000000
--- a/openwrt/package/nvram/ipkg/nvram.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: nvram
-Priority: optional
-Section: sys
-Description: NVRAM utility and libraries for Broadcom hardware
-
diff --git a/openwrt/package/nvram/src/Makefile b/openwrt/package/nvram/src/Makefile
deleted file mode 100644
index 376c2b7de7..0000000000
--- a/openwrt/package/nvram/src/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-# $Id$
-
-EXTRA_CFLAGS := -c -I. -I../include
-LIBSHARED_OBJS := shutils.o wl.o wl_linux.o defaults.o linux_timer.o
-LIBNVRAM_OBJS := nvram_linux.o nvram_convert.o
-
-all: libshared.so libnvram.so nvram
-
-%.o: %.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ $^
-
-libshared.so: $(LIBSHARED_OBJS)
- $(CC) -shared -o $@ $^
-
-libnvram.so: $(LIBNVRAM_OBJS)
- $(CC) -shared -o $@ $^
-
-nvram: main.o
- $(CC) -o $@ $^ -L. -lnvram
-
-clean:
- rm -f *.o *.so nvram
diff --git a/openwrt/package/nvram/src/bcmtimer.h b/openwrt/package/nvram/src/bcmtimer.h
deleted file mode 100644
index 3db9e624f9..0000000000
--- a/openwrt/package/nvram/src/bcmtimer.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2004, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- * Low resolution timer interface. Timer handlers may be called
- * in a deferred manner in a different task context after the
- * timer expires or in the task context from which the timer
- * was created, depending on the implementation.
- *
- * $Id$
- */
-#ifndef __bcmtimer_h__
-#define __bcmtimer_h__
-
-/* ANSI headers */
-#include <time.h>
-
-/* timer ID */
-typedef unsigned int bcm_timer_module_id;
-typedef unsigned int bcm_timer_id;
-
-/* timer callback */
-typedef void (*bcm_timer_cb)(bcm_timer_id id, int data);
-
-/* OS-independant interfaces, applications should call these functions only */
-int bcm_timer_module_init(int timer_entries, bcm_timer_module_id *module_id);
-int bcm_timer_module_cleanup(bcm_timer_module_id module_id);
-int bcm_timer_module_enable(bcm_timer_module_id module_id, int enable);
-int bcm_timer_create(bcm_timer_module_id module_id, bcm_timer_id *timer_id);
-int bcm_timer_delete(bcm_timer_id timer_id);
-int bcm_timer_gettime(bcm_timer_id timer_id, struct itimerspec *value);
-int bcm_timer_settime(bcm_timer_id timer_id, const struct itimerspec *value);
-int bcm_timer_connect(bcm_timer_id timer_id, bcm_timer_cb func, int data);
-int bcm_timer_cancel(bcm_timer_id timer_id);
-int bcm_timer_change_expirytime(bcm_timer_id timer_id, const struct itimerspec *timer_spec);
-
-#endif /* #ifndef __bcmtimer_h__ */
diff --git a/openwrt/package/nvram/src/defaults.c b/openwrt/package/nvram/src/defaults.c
deleted file mode 100644
index 119eaac72e..0000000000
--- a/openwrt/package/nvram/src/defaults.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Router default NVRAM values
- *
- * Copyright 2004, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- * $Id$
- */
-
-#include <epivers.h>
-#include <string.h>
-#include <bcmnvram.h>
-#include <typedefs.h>
-#include <wlioctl.h>
-
-#define XSTR(s) STR(s)
-#define STR(s) #s
-
-struct nvram_tuple router_defaults[] = {
- /* OS parameters */
- { "os_name", "", 0 }, /* OS name string */
- { "os_version", EPI_VERSION_STR, 0 }, /* OS revision */
- { "os_date", __DATE__, 0 }, /* OS date */
-
- /* Miscellaneous parameters */
- { "timer_interval", "3600", 0 }, /* Timer interval in seconds */
- { "ntp_server", "192.5.41.40 192.5.41.41 133.100.9.2", 0 }, /* NTP server */
- { "time_zone", "PST8PDT", 0 }, /* Time zone (GNU TZ format) */
- { "log_level", "0", 0 }, /* Bitmask 0:off 1:denied 2:accepted */
- { "upnp_enable", "0", 0 }, /* Start UPnP */
- { "ezc_enable", "1", 0 }, /* Enable EZConfig updates */
- { "ezc_version", "1", 0 }, /* EZConfig version */
- { "is_default", "1", 0 }, /* is it default setting: 1:yes 0:no*/
- { "os_server", "", 0 }, /* URL for getting upgrades */
- { "stats_server", "", 0 }, /* URL for posting stats */
- { "console_loglevel", "1", 0 }, /* Kernel panics only */
-
- /* Big switches */
- { "router_disable", "0", 0 }, /* lan_proto=static lan_stp=0 wan_proto=disabled */
- { "fw_disable", "0", 0 }, /* Disable firewall (allow new connections from the WAN) */
-
- { "log_ipaddr", "", 0 }, /* syslog recipient */
-
- /* LAN H/W parameters */
- { "lan_ifname", "", 0 }, /* LAN interface name */
- { "lan_ifnames", "", 0 }, /* Enslaved LAN interfaces */
- { "lan_hwnames", "", 0 }, /* LAN driver names (e.g. et0) */
- { "lan_hwaddr", "", 0 }, /* LAN interface MAC address */
-
- /* LAN TCP/IP parameters */
- { "lan_proto", "dhcp", 0 }, /* [static|dhcp] */
- { "lan_ipaddr", "192.168.1.1", 0 }, /* LAN IP address */
- { "lan_netmask", "255.255.255.0", 0 }, /* LAN netmask */
- { "lan_stp", "0", 0 }, /* LAN spanning tree protocol */
- { "lan_wins", "", 0 }, /* x.x.x.x x.x.x.x ... */
- { "lan_domain", "", 0 }, /* LAN domain name */
- { "lan_lease", "86400", 0 }, /* LAN lease time in seconds */
-
- /* WAN H/W parameters */
- { "wan_ifname", "", 0 }, /* WAN interface name */
- { "wan_ifnames", "", 0 }, /* WAN interface names */
- { "wan_hwname", "", 0 }, /* WAN driver name (e.g. et1) */
- { "wan_hwaddr", "", 0 }, /* WAN interface MAC address */
-
- /* WAN TCP/IP parameters */
- { "wan_proto", "dhcp", 0 }, /* [static|dhcp|pppoe|disabled] */
- { "wan_ipaddr", "0.0.0.0", 0 }, /* WAN IP address */
- { "wan_netmask", "0.0.0.0", 0 }, /* WAN netmask */
- { "wan_gateway", "0.0.0.0", 0 }, /* WAN gateway */
- { "wan_dns", "", 0 }, /* x.x.x.x x.x.x.x ... */
- { "wan_wins", "", 0 }, /* x.x.x.x x.x.x.x ... */
- { "wan_hostname", "", 0 }, /* WAN hostname */
- { "wan_domain", "", 0 }, /* WAN domain name */
- { "wan_lease", "86400", 0 }, /* WAN lease time in seconds */
-
- /* PPPoE parameters */
- { "wan_pppoe_ifname", "", 0 }, /* PPPoE enslaved interface */
- { "wan_pppoe_username", "", 0 }, /* PPP username */
- { "wan_pppoe_passwd", "", 0 }, /* PPP password */
- { "wan_pppoe_idletime", "60", 0 }, /* Dial on demand max idle time (seconds) */
- { "wan_pppoe_keepalive", "0", 0 }, /* Restore link automatically */
- { "wan_pppoe_demand", "0", 0 }, /* Dial on demand */
- { "wan_pppoe_mru", "1492", 0 }, /* Negotiate MRU to this value */
- { "wan_pppoe_mtu", "1492", 0 }, /* Negotiate MTU to the smaller of this value or the peer MRU */
- { "wan_pppoe_service", "", 0 }, /* PPPoE service name */
- { "wan_pppoe_ac", "", 0 }, /* PPPoE access concentrator name */
-
- /* Misc WAN parameters */
- { "wan_desc", "", 0 }, /* WAN connection description */
- { "wan_route", "", 0 }, /* Static routes (ipaddr:netmask:gateway:metric:ifname ...) */
- { "wan_primary", "0", 0 }, /* Primary wan connection */
-
- { "wan_unit", "0", 0 }, /* Last configured connection */
-
- /* Filters */
- { "filter_maclist", "", 0 }, /* xx:xx:xx:xx:xx:xx ... */
- { "filter_macmode", "deny", 0 }, /* "allow" only, "deny" only, or "disabled" (allow all) */
- { "filter_client0", "", 0 }, /* [lan_ipaddr0-lan_ipaddr1|*]:lan_port0-lan_port1,proto,enable,day_start-day_end,sec_start-sec_end,desc */
-
- /* Port forwards */
- { "dmz_ipaddr", "", 0 }, /* x.x.x.x (equivalent to 0-60999>dmz_ipaddr:0-60999) */
- { "forward_port0", "", 0 }, /* wan_port0-wan_port1>lan_ipaddr:lan_port0-lan_port1[:,]proto[:,]enable[:,]desc */
- { "autofw_port0", "", 0 }, /* out_proto:out_port,in_proto:in_port0-in_port1>to_port0-to_port1,enable,desc */
-
- /* DHCP server parameters */
- { "dhcp_start", "192.168.1.100", 0 }, /* First assignable DHCP address */
- { "dhcp_end", "192.168.1.150", 0 }, /* Last assignable DHCP address */
- { "dhcp_domain", "wan", 0 }, /* Use WAN domain name first if available (wan|lan) */
- { "dhcp_wins", "wan", 0 }, /* Use WAN WINS first if available (wan|lan) */
-
- /* Web server parameters */
- { "http_username", "", 0 }, /* Username */
- { "http_passwd", "admin", 0 }, /* Password */
- { "http_wanport", "", 0 }, /* WAN port to listen on */
- { "http_lanport", "80", 0 }, /* LAN port to listen on */
-
- /* Wireless parameters */
- { "wl_ifname", "", 0 }, /* Interface name */
- { "wl_hwaddr", "", 0 }, /* MAC address */
- { "wl_phytype", "g", 0 }, /* Current wireless band ("a" (5 GHz), "b" (2.4 GHz), or "g" (2.4 GHz)) */
- { "wl_corerev", "", 0 }, /* Current core revision */
- { "wl_phytypes", "", 0 }, /* List of supported wireless bands (e.g. "ga") */
- { "wl_radioids", "", 0 }, /* List of radio IDs */
- { "wl_ssid", "OpenWrt", 0 }, /* Service set ID (network name) */
- { "wl_country", "", 0 }, /* Country (default obtained from driver) */
- { "wl_radio", "1", 0 }, /* Enable (1) or disable (0) radio */
- { "wl_closed", "0", 0 }, /* Closed (hidden) network */
- { "wl_ap_isolate", "0", 0 }, /* AP isolate mode */
- { "wl_mode", "ap", 0 }, /* AP mode (ap|sta|wds) */
- { "wl_lazywds", "0", 0 }, /* Enable "lazy" WDS mode (0|1) */
- { "wl_wds", "", 0 }, /* xx:xx:xx:xx:xx:xx ... */
- { "wl_wep", "disabled", 0 }, /* WEP data encryption (enabled|disabled) */
- { "wl_auth", "0", 0 }, /* Shared key authentication optional (0) or required (1) */
- { "wl_key", "1", 0 }, /* Current WEP key */
- { "wl_key1", "", 0 }, /* 5/13 char ASCII or 10/26 char hex */
- { "wl_key2", "", 0 }, /* 5/13 char ASCII or 10/26 char hex */
- { "wl_key3", "", 0 }, /* 5/13 char ASCII or 10/26 char hex */
- { "wl_key4", "", 0 }, /* 5/13 char ASCII or 10/26 char hex */
- { "wl_maclist", "", 0 }, /* xx:xx:xx:xx:xx:xx ... */
- { "wl_macmode", "disabled", 0 }, /* "allow" only, "deny" only, or "disabled" (allow all) */
- { "wl_channel", "11", 0 }, /* Channel number */
- { "wl_rate", "0", 0 }, /* Rate (bps, 0 for auto) */
- { "wl_rateset", "default", 0 }, /* "default" or "all" or "12" */
- { "wl_frag", "2346", 0 }, /* Fragmentation threshold */
- { "wl_rts", "2347", 0 }, /* RTS threshold */
- { "wl_dtim", "1", 0 }, /* DTIM period */
- { "wl_bcn", "100", 0 }, /* Beacon interval */
- { "wl_plcphdr", "long", 0 }, /* 802.11b PLCP preamble type */
- { "wl_net_mode", "mixed", 0 }, /* 54g mode */
- { "wl_gmode", "6", 0 }, /* 54g mode */
- { "wl_gmode_protection", "auto", 0 }, /* 802.11g RTS/CTS protection (off|auto) */
- { "wl_afterburner", "auto", 0 }, /* AfterBurner */
- { "wl_frameburst", "off", 0 }, /* BRCM Frambursting mode (off|on) */
- { "wl_antdiv", "-1", 0 }, /* Antenna Diversity (-1|0|1|3) */
- { "wl_infra", "1", 0 }, /* Network Type (BSS/IBSS) */
-
- /* WPA parameters */
- { "security_mode", "open", 0 },
- { "wl_auth_mode", "open", 0 }, /* Network authentication mode (open|shared|radius|wpa|psk) */
- { "wl_wpa_psk", "", 0 }, /* WPA pre-shared key */
- { "wl_wpa_gtk_rekey", "3600", 0 }, /* GTK rotation interval */
- { "wl_radius_ipaddr", "", 0 }, /* RADIUS server IP address */
- { "wl_radius_key", "", 0 }, /* RADIUS shared secret */
- { "wl_radius_port", "1812", 0 }, /* RADIUS server UDP port */
- { "wl_crypto", "tkip", 0 }, /* WPA data encryption */
-
-
- { "wl_unit", "0", 0 }, /* Last configured interface */
-
- /* Restore defaults */
- { "restore_defaults", "0", 0 }, /* Set to 0 to not restore defaults on boot */
-
- { 0, 0, 0 }
-};
diff --git a/openwrt/package/nvram/src/linux_timer.c b/openwrt/package/nvram/src/linux_timer.c
deleted file mode 100644
index 0402e44378..0000000000
--- a/openwrt/package/nvram/src/linux_timer.c
+++ /dev/null
@@ -1,738 +0,0 @@
-/*
- * Copyright 2004, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- * Low resolution timer interface linux specific implementation.
- *
- * $Id$
- */
-
-/*
-* debug facilities
-*/
-#define TIMER_DEBUG 0
-#if TIMER_DEBUG
-#define TIMERDBG(fmt, args...) printf("%s: " fmt "\n" , __FUNCTION__ , ## args)
-#else
-#define TIMERDBG(fmt, args...)
-#endif
-
-
-/*
- * POSIX timer support for Linux. Taken from linux_timer.c in upnp
- */
-
-#define __USE_GNU
-
-
-#include <stdlib.h> // for malloc, free, etc.
-#include <string.h> // for memset, strncasecmp, etc.
-#include <assert.h> // for assert, of course.
-#include <signal.h> // for sigemptyset, etc.
-#include <stdio.h> // for printf, etc.
-#include <sys/time.h>
-#include <time.h>
-
-/* define TIMER_PROFILE to enable code which guages how accurate the timer functions are.
- For each expiring timer the code will print the expected time interval and the actual time interval.
-#define TIMER_PROFILE
-*/
-#undef TIMER_PROFILE
-
-/*
-timer_cancel( ) - cancel a timer
-timer_connect( ) - connect a user routine to the timer signal
-timer_create( ) - allocate a timer using the specified clock for a timing base (POSIX)
-timer_delete( ) - remove a previously created timer (POSIX)
-timer_gettime( ) - get the remaining time before expiration and the reload value (POSIX)
-timer_getoverrun( ) - return the timer expiration overrun (POSIX)
-timer_settime( ) - set the time until the next expiration and arm timer (POSIX)
-nanosleep( ) - suspend the current task until the time interval elapses (POSIX)
-*/
-
-#define MS_PER_SEC 1000
-#define US_PER_SEC 1000000
-#define US_PER_MS 1000
-#define UCLOCKS_PER_SEC 1000000
-
-typedef void (*event_callback_t)(timer_t, int);
-
-#ifndef TIMESPEC_TO_TIMEVAL
-# define TIMESPEC_TO_TIMEVAL(tv, ts) { \
- (tv)->tv_sec = (ts)->tv_sec; \
- (tv)->tv_usec = (ts)->tv_nsec / 1000; \
-}
-#endif
-
-#ifndef TIMEVAL_TO_TIMESPEC
-# define TIMEVAL_TO_TIMESPEC(tv, ts) { \
- (ts)->tv_sec = (tv)->tv_sec; \
- (ts)->tv_nsec = (tv)->tv_usec * 1000; \
-}
-#endif
-
-#define ROUNDUP(x,y) ((((x)+(y)-1)/(y))*(y))
-
-#define timerroundup(t,g) \
- do { \
- if (!timerisset(t)) (t)->tv_usec=1; \
- if ((t)->tv_sec == 0) (t)->tv_usec=ROUNDUP((t)->tv_usec, g); \
- } while (0)
-
-typedef long uclock_t;
-
-#define TFLAG_NONE 0
-#define TFLAG_CANCELLED (1<<0)
-#define TFLAG_DELETED (1<<1)
-
-struct event {
- struct timeval it_interval;
- struct timeval it_value;
- event_callback_t func;
- int arg;
- unsigned short flags;
- struct event *next;
-#ifdef TIMER_PROFILE
- uint expected_ms;
- uclock_t start;
-#endif
-};
-
-void timer_cancel(timer_t timerid);
-
-static void alarm_handler(int i);
-static void check_event_queue();
-static void print_event_queue();
-static void check_timer();
-#if THIS_FINDS_USE
-static int count_queue(struct event *);
-#endif
-static int timer_change_settime(timer_t timer_id, const struct itimerspec *timer_spec);
-void block_timer();
-void unblock_timer();
-
-static struct event *event_queue = NULL;
-static struct event *event_freelist;
-static uint g_granularity;
-static int g_maxevents = 0;
-
-uclock_t uclock()
-{
- struct timeval tv;
-
- gettimeofday(&tv, NULL);
- return ((tv.tv_sec * US_PER_SEC) + tv.tv_usec);
-}
-
-
-void init_event_queue(int n)
-{
- int i;
- struct itimerval tv;
-
- g_maxevents = n;
- event_freelist = (struct event *) malloc(n * sizeof(struct event));
- memset(event_freelist, 0, n * sizeof(struct event));
-
- for (i = 0; i < (n-1); i++)
- event_freelist[i].next = &event_freelist[i+1];
-
- event_freelist[i].next = NULL;
-
- tv.it_interval.tv_sec = 0;
- tv.it_interval.tv_usec = 1;
- tv.it_value.tv_sec = 0;
- tv.it_value.tv_usec = 0;
- setitimer (ITIMER_REAL, &tv, 0);
- setitimer (ITIMER_REAL, 0, &tv);
- g_granularity = tv.it_interval.tv_usec;
-
- signal(SIGALRM, alarm_handler);
-}
-
-
-int clock_gettime(
- clockid_t clock_id, /* clock ID (always CLOCK_REALTIME) */
- struct timespec * tp /* where to store current time */
-)
-{
- struct timeval tv;
- int n;
-
-
- n = gettimeofday(&tv, NULL);
- TIMEVAL_TO_TIMESPEC(&tv, tp);
-
- return n;
-}
-
-
-int timer_create(
- clockid_t clock_id, /* clock ID (always CLOCK_REALTIME) */
- struct sigevent * evp, /* user event handler */
- timer_t * pTimer /* ptr to return value */
-)
-{
- struct event *event;
-
- if (clock_id != CLOCK_REALTIME) {
- TIMERDBG("timer_create can only support clock id CLOCK_REALTIME");
- exit(1);
- }
-
- if (evp != NULL) {
- if (evp->sigev_notify != SIGEV_SIGNAL || evp->sigev_signo != SIGALRM) {
- TIMERDBG("timer_create can only support signalled alarms using SIGALRM");
- exit(1);
- }
- }
-
- event = event_freelist;
- if (event == NULL) {
- print_event_queue();
- }
- assert(event != NULL);
-
- event->flags = TFLAG_NONE;
-
- event_freelist = event->next;
- event->next = NULL;
-
- check_event_queue();
-
- *pTimer = (timer_t) event;
-
- return 0;
-}
-
-int timer_delete(
- timer_t timerid /* timer ID */
-)
-{
- struct event *event = (struct event *) timerid;
-
- if (event->flags & TFLAG_DELETED) {
- TIMERDBG("Cannot delete a deleted event");
- return 1;
- }
-
- timer_cancel(timerid);
-
- event->flags |= TFLAG_DELETED;
-
- event->next = event_freelist;
- event_freelist = event;
-
- return 0;
-}
-
-int timer_connect
-(
- timer_t timerid, /* timer ID */
- void (*routine)(timer_t, int), /* user routine */
- int arg /* user argument */
-)
-{
- struct event *event = (struct event *) timerid;
-
- assert(routine != NULL);
- event->func = routine;
- event->arg = arg;
-
- return 0;
-}
-
-/*
- * Please Call this function only from the call back functions of the alarm_handler.
- * This is just a hack
-*/
-int timer_change_settime
-(
- timer_t timerid, /* timer ID */
- const struct itimerspec * value /* time to be set */
-)
-{
- struct event *event = (struct event *) timerid;
-
- TIMESPEC_TO_TIMEVAL(&event->it_interval, &value->it_interval);
- TIMESPEC_TO_TIMEVAL(&event->it_value, &value->it_value);
-
- return 1;
-}
-
-int timer_settime
-(
- timer_t timerid, /* timer ID */
- int flags, /* absolute or relative */
- const struct itimerspec * value, /* time to be set */
- struct itimerspec * ovalue /* previous time set (NULL=no result) */
-)
-{
- struct itimerval itimer;
- struct event *event = (struct event *) timerid;
- struct event **ppevent;
-
- TIMESPEC_TO_TIMEVAL(&event->it_interval, &value->it_interval);
- TIMESPEC_TO_TIMEVAL(&event->it_value, &value->it_value);
-
- /* if .it_value is zero, the timer is disarmed */
- if (!timerisset(&event->it_value)) {
- timer_cancel(timerid);
- return 0;
- }
-
- block_timer();
-
-#ifdef TIMER_PROFILE
- event->expected_ms = (event->it_value.tv_sec * MS_PER_SEC) + (event->it_value.tv_usec / US_PER_MS);
- event->start = uclock();
-#endif
- if (event->next) {
- TIMERDBG("calling timer_settime with a timer that is already on the queue.");
- }
-
-
- /* We always want to make sure that the event at the head of the
- queue has a timeout greater than the itimer granularity.
- Otherwise we end up with the situation that the time remaining
- on an itimer is greater than the time at the head of the queue
- in the first place. */
- timerroundup(&event->it_value, g_granularity);
-
- timerclear(&itimer.it_value);
- getitimer(ITIMER_REAL, &itimer);
- if (timerisset(&itimer.it_value)) {
- // reset the top timer to have an interval equal to the remaining interval
- // when the timer was cancelled.
- if (event_queue) {
- if (timercmp(&(itimer.it_value), &(event_queue->it_value), >)) {
- // it is an error if the amount of time remaining is more than the amount of time
- // requested by the top event.
- //
- TIMERDBG("timer_settime: TIMER ERROR!");
-
- } else {
- // some portion of the top event has already expired.
- // Reset the interval of the top event to remaining
- // time left in that interval.
- //
- event_queue->it_value = itimer.it_value;
-
- // if we were the earliest timer before now, we are still the earliest timer now.
- // we do not need to reorder the list.
- }
- }
- }
-
- // Now, march down the list, decrementing the new timer by the
- // current it_value of each event on the queue.
- ppevent = &event_queue;
- while (*ppevent) {
- if ( timercmp(&(event->it_value), &((*ppevent)->it_value), <) ) {
- // if the proposed event will trigger sooner than the next event
- // in the queue, we will insert the new event just before the next one.
- //
- // we also need to adjust the delta value to the next event.
- timersub(&((*ppevent)->it_value), &(event->it_value), &((*ppevent)->it_value));
- break;
- }
- // subtract the interval of the next event from the proposed interval.
- timersub(&(event->it_value), &((*ppevent)->it_value), &(event->it_value));
-
- ppevent = &((*ppevent)->next);
- }
-
- // we have found our proper place in the queue,
- // link our new event into the pending event queue.
- event->next = *ppevent;
- *ppevent = event;
-
- check_event_queue();
-
- // if our new event ended up at the front of the queue, reissue the timer.
- if (event == event_queue) {
- timerroundup(&event_queue->it_value, g_granularity);
- timerclear(&itimer.it_interval);
- itimer.it_value = event_queue->it_value;
-
- // we want to be sure to never turn off the timer completely,
- // so if the next interval is zero, set it to some small value.
- if (!timerisset(&(itimer.it_value)))
- itimer.it_value = (struct timeval) { 0, 1 };
-
- assert(!timerisset(&itimer.it_interval));
- assert(itimer.it_value.tv_sec > 0 || itimer.it_value.tv_usec >= g_granularity);
- assert(event_queue->it_value.tv_sec > 0 || event_queue->it_value.tv_usec >= g_granularity);
- setitimer(ITIMER_REAL, &itimer, NULL);
- check_timer();
- }
-
- event->flags &= ~TFLAG_CANCELLED;
-
- unblock_timer();
-
- return 0;
-}
-
-static void check_timer()
-{
- struct itimerval itimer;
-
- getitimer(ITIMER_REAL, &itimer);
- if (timerisset(&itimer.it_interval)) {
- TIMERDBG("ERROR timer interval is set.");
- }
- if (timercmp(&(itimer.it_value), &(event_queue->it_value), >)) {
- TIMERDBG("ERROR timer expires later than top event.");
- }
-}
-
-
-static void check_event_queue()
-{
- struct timeval sum;
- struct event *event;
- int i = 0;
-
-#ifdef notdef
- int nfree = 0;
- struct event *p;
- for (p = event_freelist; p; p = p->next)
- nfree++;
- printf("%d free events\n", nfree);
-#endif
-
- timerclear(&sum);
- for (event = event_queue; event; event = event->next) {
- if (i > g_maxevents) {
- TIMERDBG("timer queue looks like it loops back on itself!");
- print_event_queue();
- exit(1);
- }
- i++;
- }
-}
-
-#if THIS_FINDS_USE
-/* The original upnp version has this unused function, so I left it in
- to maintain the resemblance. */
-static int count_queue(struct event *event_queue)
-{
- struct event *event;
- int i = 0;
- for (event = event_queue; event; event = event->next)
- i++;
- return i;
-}
-#endif
-
-static void print_event_queue()
-{
- struct event *event;
- int i = 0;
-
- for (event = event_queue; event; event = event->next) {
- printf("#%d (0x%x)->0x%x: \t%d sec %d usec\t%p\n",
- i++, (unsigned int) event, (unsigned int) event->next, (int) event->it_value.tv_sec, (int) event->it_value.tv_usec, event->func);
- if (i > g_maxevents) {
- printf("...(giving up)\n");
- break;
- }
- }
-}
-
-// The top element of the event queue must have expired.
-// Remove that element, run its function, and reset the timer.
-// if there is no interval, recycle the event structure.
-static void alarm_handler(int i)
-{
- struct event *event, **ppevent;
- struct itimerval itimer;
- struct timeval small_interval = { 0, g_granularity/2 };
-#ifdef TIMER_PROFILE
- uint junk;
- uclock_t end;
- uint actual;
-#endif
-
- block_timer();
-
- // Loop through the event queue and remove the first event plus any
- // subsequent events that will expire very soon thereafter (within 'small_interval'}.
- //
- do {
- // remove the top event.
- event = event_queue;
- event_queue = event_queue->next;
- event->next = NULL;
-
-#ifdef TIMER_PROFILE
- end = uclock();
- actual = ((end-event->start)/((uclock_t)UCLOCKS_PER_SEC/1000));
- if (actual < 0)
- junk = end;
- TIMERDBG("expected %d ms actual %d ms", event->expected_ms, ((end-event->start)/((uclock_t)UCLOCKS_PER_SEC/1000)));
-#endif
-
- // call the event callback function
- (*(event->func))((timer_t) event, (int)event->arg);
-
- /* If the event has been cancelled, do NOT put it back on the queue. */
- if ( !(event->flags & TFLAG_CANCELLED) ) {
-
- // if the event is a recurring event, reset the timer and
- // find its correct place in the sorted list of events.
- //
- if (timerisset(&event->it_interval)) {
- // event is recurring...
- //
- event->it_value = event->it_interval;
-#ifdef TIMER_PROFILE
- event->expected_ms = (event->it_value.tv_sec * MS_PER_SEC) + (event->it_value.tv_usec / US_PER_MS);
- event->start = uclock();
-#endif
- timerroundup(&event->it_value, g_granularity);
-
- // Now, march down the list, decrementing the new timer by the
- // current delta of each event on the queue.
- ppevent = &event_queue;
- while (*ppevent) {
- if ( timercmp(&(event->it_value), &((*ppevent)->it_value), <) ) {
- // if the proposed event will trigger sooner than the next event
- // in the queue, we will insert the new event just before the next one.
- //
- // we also need to adjust the delta value to the next event.
- timersub(&((*ppevent)->it_value), &(event->it_value), &((*ppevent)->it_value));
- break;
- }
- timersub(&(event->it_value), &((*ppevent)->it_value), &(event->it_value));
- ppevent = &((*ppevent)->next);
- }
-
- // we have found our proper place in the queue,
- // link our new event into the pending event queue.
- event->next = *ppevent;
- *ppevent = event;
- } else {
- // there is no interval, so recycle the event structure.
- //timer_delete((timer_t) event);
- }
- }
-
- check_event_queue();
-
- } while (event_queue && timercmp(&event_queue->it_value, &small_interval, <));
-
- // re-issue the timer...
- if (event_queue) {
- timerroundup(&event_queue->it_value, g_granularity);
-
- timerclear(&itimer.it_interval);
- itimer.it_value = event_queue->it_value;
- // we want to be sure to never turn off the timer completely,
- // so if the next interval is zero, set it to some small value.
- if (!timerisset(&(itimer.it_value)))
- itimer.it_value = (struct timeval) { 0, 1 };
-
- setitimer(ITIMER_REAL, &itimer, NULL);
- check_timer();
- } else {
- TIMERDBG("There are no events in the queue - timer not reset.");
- }
-
- unblock_timer();
-}
-
-static int block_count = 0;
-
-void block_timer()
-{
- sigset_t set;
-
- if (block_count++ == 0) {
- sigemptyset(&set);
- sigaddset(&set, SIGALRM);
- sigprocmask(SIG_BLOCK, &set, NULL);
- }
-}
-
-void unblock_timer()
-{
- sigset_t set;
-
- if (--block_count == 0) {
- sigemptyset(&set);
- sigaddset(&set, SIGALRM);
- sigprocmask(SIG_UNBLOCK, &set, NULL);
- }
-}
-
-void timer_cancel_all()
-{
- struct itimerval timeroff = { { 0, 0 }, { 0, 0} };
- struct event *event;
- struct event **ppevent;
-
- setitimer(ITIMER_REAL, &timeroff, NULL);
-
- ppevent = &event_queue;
- while (*ppevent) {
- event = *ppevent;
- *ppevent = event->next;
- event->next = NULL;
- }
-}
-
-
-
-void timer_cancel(timer_t timerid)
-{
- struct itimerval itimer;
- struct itimerval timeroff = { { 0, 0 }, { 0, 0} };
- struct event *event = (struct event *) timerid;
- struct event **ppevent;
-
- if (event->flags & TFLAG_CANCELLED) {
- TIMERDBG("Cannot cancel a cancelled event");
- return;
- }
-
- block_timer();
-
- ppevent = &event_queue;
- while (*ppevent) {
- if ( *ppevent == event ) {
-
- /* RACE CONDITION - if the alarm goes off while we are in
- this loop, and if the timer we want to cancel is the
- next to expire, the alarm will end up firing
- after this routine is complete, causing it to go off early. */
-
- /* If the cancelled timer is the next to expire,
- we need to do something special to clean up correctly. */
- if (event == event_queue && event->next != NULL) {
- timerclear(&itimer.it_value);
- getitimer(ITIMER_REAL, &itimer);
-
- /* subtract the time that has already passed while waiting for this timer... */
- timersub(&(event->it_value), &(itimer.it_value), &(event->it_value));
-
- /* and add any remainder to the next timer in the list */
- timeradd(&(event->next->it_value), &(event->it_value), &(event->next->it_value));
- }
-
- *ppevent = event->next;
- event->next = NULL;
-
- if (event_queue) {
- timerroundup(&event_queue->it_value, g_granularity);
- timerclear(&itimer.it_interval);
- itimer.it_value = event_queue->it_value;
-
- /* We want to be sure to never turn off the timer
- completely if there are more events on the queue,
- so if the next interval is zero, set it to some
- small value. */
-
- if (!timerisset(&(itimer.it_value)))
- itimer.it_value = (struct timeval) { 0, 1 };
-
- assert(itimer.it_value.tv_sec > 0 || itimer.it_value.tv_usec >= g_granularity);
- assert(event_queue->it_value.tv_sec > 0 || event_queue->it_value.tv_usec >= g_granularity);
- setitimer(ITIMER_REAL, &itimer, NULL);
- check_timer();
- } else {
- setitimer(ITIMER_REAL, &timeroff, NULL);
- }
- break;
- }
- ppevent = &((*ppevent)->next);
- }
-
- event->flags |= TFLAG_CANCELLED;
-
- unblock_timer();
-}
-
-/*
-* timer related headers
-*/
-#include "bcmtimer.h"
-
-/*
-* locally used global variables and constants
-*/
-
-/*
-* Initialize internal resources used in the timer module. It must be called
-* before any other timer function calls. The param 'timer_entries' is used
-* to pre-allocate fixed number of timer entries.
-*/
-int bcm_timer_module_init(int timer_entries, bcm_timer_module_id *module_id)
-{
- init_event_queue(timer_entries);
- *module_id = (bcm_timer_module_id)event_freelist;
- return 0;
-}
-
-/*
-* Cleanup internal resources used by this timer module. It deletes all
-* pending timer entries from the backend timer system as well.
-*/
-int bcm_timer_module_cleanup(bcm_timer_module_id module_id)
-{
- module_id = 0;
- return 0;
-}
-
-/* Enable/Disable timer module */
-int bcm_timer_module_enable(bcm_timer_module_id module_id, int enable)
-{
- if (enable)
- unblock_timer();
- else
- block_timer();
- return 0;
-}
-
-int bcm_timer_create(bcm_timer_module_id module_id, bcm_timer_id *timer_id)
-{
- module_id = 0;
- return timer_create(CLOCK_REALTIME, NULL, (timer_t *)timer_id);
-}
-
-int bcm_timer_delete(bcm_timer_id timer_id)
-{
- return timer_delete((timer_t)timer_id);
-}
-
-int bcm_timer_gettime(bcm_timer_id timer_id, struct itimerspec *timer_spec)
-{
- return -1;
-}
-
-int bcm_timer_settime(bcm_timer_id timer_id, const struct itimerspec *timer_spec)
-{
- return timer_settime((timer_t)timer_id, 0, timer_spec, NULL);
-}
-
-int bcm_timer_connect(bcm_timer_id timer_id, bcm_timer_cb func, int data)
-{
- return timer_connect((timer_t)timer_id, (void *)func, data);
-}
-
-int bcm_timer_cancel(bcm_timer_id timer_id)
-{
- timer_cancel((timer_t)timer_id);
- return 0;
-}
-int bcm_timer_change_expirytime(bcm_timer_id timer_id, const struct itimerspec *timer_spec)
-{
- timer_change_settime((timer_t)timer_id, timer_spec);
- return 1;
-}
diff --git a/openwrt/package/nvram/src/main.c b/openwrt/package/nvram/src/main.c
deleted file mode 100644
index 7af26729d9..0000000000
--- a/openwrt/package/nvram/src/main.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Frontend command-line utility for Linux NVRAM layer
- *
- * Copyright 2004, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- * $Id$
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <typedefs.h>
-#include <bcmnvram.h>
-
-static void
-usage(void)
-{
- fprintf(stderr, "usage: nvram [get name] [set name=value] [unset name] [show]\n");
- exit(0);
-}
-
-/* hack for some PMON default nvram values which have '\r' appended */
-void
-puts_trim_cr(char *str)
-{
- int len= strlen(str);
- if (len && (str[len-1] == '\r')) len--;
- printf("%.*s\n", len, str);
-}
-
-/* NVRAM utility */
-int
-main(int argc, char **argv)
-{
- char *name, *value, buf[NVRAM_SPACE];
- int size;
-
- /* Skip program name */
- --argc;
- ++argv;
-
- if (!*argv)
- usage();
-
- /* Process the remaining arguments. */
- for (; *argv; argv++) {
- if (!strncmp(*argv, "get", 3)) {
- if (*++argv) {
- if ((value = nvram_get(*argv))) {
- puts_trim_cr(value);
- }
- }
- }
- else if (!strncmp(*argv, "set", 3)) {
- if (*++argv) {
- strncpy(value = buf, *argv, sizeof(buf));
- name = strsep(&value, "=");
- nvram_set(name, value);
- }
- }
- else if (!strncmp(*argv, "unset", 5)) {
- if (*++argv)
- nvram_unset(*argv);
- }
- else if (!strncmp(*argv, "commit", 5)) {
- nvram_commit();
- }
- else if (!strncmp(*argv, "show", 4) ||
- !strncmp(*argv, "getall", 6)) {
- nvram_getall(buf, sizeof(buf));
- for (name = buf; *name; name += strlen(name) + 1)
- puts_trim_cr(name);
- size = sizeof(struct nvram_header) + (int) name - (int) buf;
- fprintf(stderr, "size: %d bytes (%d left)\n", size, NVRAM_SPACE - size);
- }
- if (!*argv)
- break;
- }
-
- return 0;
-}
diff --git a/openwrt/package/nvram/src/nvram_convert.c b/openwrt/package/nvram/src/nvram_convert.c
deleted file mode 100644
index 485909026c..0000000000
--- a/openwrt/package/nvram/src/nvram_convert.c
+++ /dev/null
@@ -1,77 +0,0 @@
-
-#define WL(a) "wl_"a
-#define WL0(a) "wl0_"a
-#define D11G(a) "d11g_"a
-
-#define PPP(a) "ppp_"a
-#define PPPOE(a) "pppoe_"a
-
-struct nvram_convert {
- char *name; // for WEB
- char *wl0_name; // for driver
- char *d11g_name; // for old nv name
-};
-
-struct nvram_convert nvram_converts[] = {
- // Bellow change from 3.11.48.7
- { WL("ssid"), WL0("ssid"), ""},
- { WL("radio"), WL0("mode"), ""},
- { WL("mode"), WL0("mode"), ""},
- { WL("wds"), WL0("wds"), ""},
- { WL("auth"), WL0("auth"), ""},
- { WL("key"), WL0("key"), ""},
- { WL("key1"), WL0("key1"), ""},
- { WL("key2"), WL0("key2"), ""},
- { WL("key3"), WL0("key3"), ""},
- { WL("key4"), WL0("key4"), ""},
- { WL("maclist"), WL0("maclist"), ""},
- { WL("channel"), WL0("channel"), D11G("channel")},
- { WL("rateset"), WL0("rateset"), D11G("rateset")},
- { WL("rts"), WL0("rts"), D11G("rts")},
- { WL("bcn"), WL0("bcn"), D11G("bcn")},
- { WL("gmode"), WL0("gmode"), "d11g_mode"},
- { WL("unit"), WL0("unit"), ""},
- { WL("ifname"), WL0("ifname"), ""},
- { WL("phytype"), WL0("phytype"), ""},
- { WL("country"), WL0("country"), ""},
- { WL("closed"), WL0("closed"), ""},
- { WL("lazywds"), WL0("lazywds"), ""},
- { WL("wep"), WL0("wep"), ""},
- { WL("macmode"), WL0("macmode"), ""},
- { WL("rate"), WL0("rate"), D11G("rate")},
- { WL("frag"), WL0("frag"), D11G("frag")},
- { WL("dtim"), WL0("dtim"), D11G("dtim")},
- { WL("plcphdr"), WL0("plcphdr"), ""},
- { WL("gmode_protection"), WL0("gmode_protection"), ""},
- { WL("radio"), WL0("radio"), ""},
- // Bellow change from 3.21.9.0
- { WL("auth_mode"), WL0("auth_mode"), ""},
- { WL("radius_ipaddr"), WL0("radius_ipaddr"), ""},
- { WL("radius_port"), WL0("radius_port"), ""},
- { WL("radius_key"), WL0("radius_key"), ""},
- { WL("wpa_psk"), WL0("wpa_psk"), ""},
- { WL("wpa_gtk_rekey"), WL0("wpa_gtk_rekey"), ""},
- { WL("frameburst"), WL0("frameburst"), ""},
- { WL("crypto"), WL0("crypto"), ""},
- { WL("ap_isolate"), WL0("ap_isolate"), ""},
- { WL("afterburner"), WL0("afterburner"), ""},
- // for PPPoE
- { PPP("username"), PPPOE("username"), ""},
- { PPP("passwd"), PPPOE("passwd"), ""},
- { PPP("idletime"), PPPOE("idletime"), ""},
- { PPP("keepalive"), PPPOE("keepalive"), ""},
- { PPP("demand"), PPPOE("demand"), ""},
- { PPP("service"), PPPOE("service"), ""},
- { PPP("ac"), PPPOE("ac"), ""},
- { PPP("static"), PPPOE("static"), ""},
- { PPP("static_ip"), PPPOE("static_ip"), ""},
- { PPP("username_1"), PPPOE("username_1"), ""},
- { PPP("passwd_1"), PPPOE("passwd_1"), ""},
- { PPP("idletime_1"), PPPOE("idletime_1"), ""},
- { PPP("keepalive_1"), PPPOE("keepalive_1"), ""},
- { PPP("demand_1"), PPPOE("demand_1"), ""},
- { PPP("service_1"), PPPOE("service_1"), ""},
- { PPP("ac_1"), PPPOE("ac_1"), ""},
-
- { 0, 0, 0},
-};
diff --git a/openwrt/package/nvram/src/nvram_convert.h b/openwrt/package/nvram/src/nvram_convert.h
deleted file mode 100644
index 70e12327d1..0000000000
--- a/openwrt/package/nvram/src/nvram_convert.h
+++ /dev/null
@@ -1,7 +0,0 @@
-
-struct nvram_convert {
- char *name;
- char *wl0_name;
- char *d11g_name;
-};
-
diff --git a/openwrt/package/nvram/src/nvram_linux.c b/openwrt/package/nvram/src/nvram_linux.c
deleted file mode 100644
index c41e32118a..0000000000
--- a/openwrt/package/nvram/src/nvram_linux.c
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * NVRAM variable manipulation (Linux user mode half)
- *
- * Copyright 2004, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- * $Id$
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <error.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-
-#include <typedefs.h>
-#include <bcmnvram.h>
-#include <nvram_convert.h>
-#include <shutils.h>
-#include <utils.h>
-
-#define PATH_DEV_NVRAM "/dev/nvram"
-
-/* Globals */
-static int nvram_fd = -1;
-static char *nvram_buf = NULL;
-int check_action(void);
-int file_to_buf(char *path, char *buf, int len);
-
-int
-nvram_init(void *unused)
-{
- if ((nvram_fd = open(PATH_DEV_NVRAM, O_RDWR)) < 0)
- goto err;
-
- /* Map kernel string buffer into user space */
- if ((nvram_buf = mmap(NULL, NVRAM_SPACE, PROT_READ, MAP_SHARED, nvram_fd, 0)) == MAP_FAILED) {
- close(nvram_fd);
- nvram_fd = -1;
- goto err;
- }
-
- return 0;
-
- err:
- perror(PATH_DEV_NVRAM);
- return errno;
-}
-
-char *
-nvram_get(const char *name)
-{
- size_t count = strlen(name) + 1;
- char tmp[100], *value;
- unsigned long *off = (unsigned long *) tmp;
-
- if (nvram_fd < 0)
- if (nvram_init(NULL))
- return NULL;
-
- if (count > sizeof(tmp)) {
- if (!(off = malloc(count)))
- return NULL;
- }
-
- /* Get offset into mmap() space */
- strcpy((char *) off, name);
-
- count = read(nvram_fd, off, count);
-
- if (count == sizeof(unsigned long))
- value = &nvram_buf[*off];
- else
- value = NULL;
-
- if (count < 0)
- perror(PATH_DEV_NVRAM);
-
- if (off != (unsigned long *) tmp)
- free(off);
-
- return value;
-}
-
-int
-nvram_getall(char *buf, int count)
-{
- int ret;
-
- if (nvram_fd < 0)
- if ((ret = nvram_init(NULL)))
- return ret;
-
- if (count == 0)
- return 0;
-
- /* Get all variables */
- *buf = '\0';
-
- ret = read(nvram_fd, buf, count);
-
- if (ret < 0)
- perror(PATH_DEV_NVRAM);
-
- return (ret == count) ? 0 : ret;
-}
-
-static int
-_nvram_set(const char *name, const char *value)
-{
- size_t count = strlen(name) + 1;
- char tmp[100], *buf = tmp;
- int ret;
-
- if (nvram_fd < 0)
- if ((ret = nvram_init(NULL)))
- return ret;
-
- /* Unset if value is NULL */
- if (value)
- count += strlen(value) + 1;
-
- if (count > sizeof(tmp)) {
- if (!(buf = malloc(count)))
- return -ENOMEM;
- }
-
- if (value)
- sprintf(buf, "%s=%s", name, value);
- else
- strcpy(buf, name);
-
- ret = write(nvram_fd, buf, count);
-
- if (ret < 0)
- perror(PATH_DEV_NVRAM);
-
- if (buf != tmp)
- free(buf);
-
- return (ret == count) ? 0 : ret;
-}
-
-int
-nvram_set(const char *name, const char *value)
-{
- extern struct nvram_convert nvram_converts[];
- struct nvram_convert *v;
- int ret;
-
- ret = _nvram_set(name, value);
-
- for(v = nvram_converts ; v->name ; v++) {
- if(!strcmp(v->name, name)){
- if(strcmp(v->wl0_name,"")) _nvram_set(v->wl0_name, value);
- if(strcmp(v->d11g_name,"")) _nvram_set(v->d11g_name, value);
- }
- }
-
- return ret;
-}
-
-int
-nvram_unset(const char *name)
-{
- return _nvram_set(name, NULL);
-}
-
-int
-nvram_commit(void)
-{
- int ret;
-
- cprintf("nvram_commit(): start\n");
-
- if((check_action() == ACT_IDLE) ||
- (check_action() == ACT_SW_RESTORE) ||
- (check_action() == ACT_HW_RESTORE)){
- if (nvram_fd < 0)
- if ((ret = nvram_init(NULL)))
- return ret;
-
- ret = ioctl(nvram_fd, NVRAM_MAGIC, NULL);
-
- if (ret < 0)
- perror(PATH_DEV_NVRAM);
-
- cprintf("nvram_commit(): end\n");
- }
- else
- cprintf("nvram_commit(): nothing to do...\n");
-
- return ret;
-}
-
-int file2nvram(char *filename, char *varname) {
- FILE *fp;
- int c,count;
- int i=0,j=0;
- char mem[10000],buf[30000];
-
- if ( !(fp=fopen(filename,"rb") ))
- return 0;
-
- count=fread(mem,1,sizeof(mem),fp);
- fclose(fp);
- for (j=0;j<count;j++) {
- if (i > sizeof(buf)-3 )
- break;
- c=mem[j];
- if (c >= 32 && c <= 126 && c != '\\' && c != '~') {
- buf[i++]=(unsigned char) c;
- } else if (c==0) {
- buf[i++]='~';
- } else {
- buf[i++]='\\';
- sprintf(buf+i,"%02X",c);
- i+=2;
- }
- }
- if (i==0) return 0;
- buf[i]=0;
- //fprintf(stderr,"================ > file2nvram %s = [%s] \n",varname,buf);
- nvram_set(varname,buf);
- //nvram_commit(); //Barry adds for test
-}
-
-int nvram2file(char *varname, char *filename) {
- FILE *fp;
- int c,tmp;
- int i=0,j=0;
- char *buf;
- char mem[10000];
-
- if ( !(fp=fopen(filename,"wb") ))
- return 0;
-
- buf=strdup(nvram_safe_get(varname));
- //fprintf(stderr,"=================> nvram2file %s = [%s] \n",varname,buf);
- while ( buf[i] && j < sizeof(mem)-3 ) {
- if (buf[i] == '\\') {
- i++;
- tmp=buf[i+2];
- buf[i+2]=0;
- sscanf(buf+i,"%02X",&c);
- buf[i+2]=tmp;
- i+=2;
- mem[j]=c;j++;
- } else if (buf[i] == '~') {
- mem[j]=0;j++;
- i++;
- } else {
- mem[j]=buf[i];j++;
- i++;
- }
- }
- if (j<=0) return j;
- j=fwrite(mem,1,j,fp);
- fclose(fp);
- free(buf);
- return j;
-}
-
-int
-check_action(void)
-{
- char buf[80] = "";
-
- if(file_to_buf(ACTION_FILE, buf, sizeof(buf))){
- if(!strcmp(buf, "ACT_TFTP_UPGRADE")){
- cprintf("Upgrading from tftp now, quiet exit....\n");
- return ACT_TFTP_UPGRADE;
- }
- else if(!strcmp(buf, "ACT_WEBS_UPGRADE")){
- cprintf("Upgrading from web (https) now, quiet exit....\n");
- return ACT_WEBS_UPGRADE;
- }
- else if(!strcmp(buf, "ACT_WEB_UPGRADE")){
- cprintf("Upgrading from web (http) now, quiet exit....\n");
- return ACT_WEB_UPGRADE;
- }
- else if(!strcmp(buf, "ACT_SW_RESTORE")){
- cprintf("Receive restore command from web, quiet exit....\n");
- return ACT_SW_RESTORE;
- }
- else if(!strcmp(buf, "ACT_HW_RESTORE")){
- cprintf("Receive restore commond from resetbutton, quiet exit....\n");
- return ACT_HW_RESTORE;
- }
- }
- //fprintf(stderr, "Waiting for upgrading....\n");
- return ACT_IDLE;
-}
-
-int
-file_to_buf(char *path, char *buf, int len)
-{
- FILE *fp;
-
- memset(buf, 0 , len);
-
- if ((fp = fopen(path, "r"))) {
- fgets(buf, len, fp);
- fclose(fp);
- return 1;
- }
-
- return 0;
-}
diff --git a/openwrt/package/nvram/src/shutils.c b/openwrt/package/nvram/src/shutils.c
deleted file mode 100644
index 49ad41af81..0000000000
--- a/openwrt/package/nvram/src/shutils.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Shell-like utility functions
- *
- * Copyright 2004, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- * $Id$
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <errno.h>
-#include <error.h>
-#include <fcntl.h>
-#include <limits.h>
-#include <unistd.h>
-#include <signal.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <termios.h>
-#include <sys/ioctl.h>
-#include <sys/time.h>
-#include <net/ethernet.h>
-
-#include <shutils.h>
-
-/*
- * Reads file and returns contents
- * @param fd file descriptor
- * @return contents of file or NULL if an error occurred
- */
-char *
-fd2str(int fd)
-{
- char *buf = NULL;
- size_t count = 0, n;
-
- do {
- buf = realloc(buf, count + 512);
- n = read(fd, buf + count, 512);
- if (n < 0) {
- free(buf);
- buf = NULL;
- }
- count += n;
- } while (n == 512);
-
- close(fd);
- if (buf)
- buf[count] = '\0';
- return buf;
-}
-
-/*
- * Reads file and returns contents
- * @param path path to file
- * @return contents of file or NULL if an error occurred
- */
-char *
-file2str(const char *path)
-{
- int fd;
-
- if ((fd = open(path, O_RDONLY)) == -1) {
- perror(path);
- return NULL;
- }
-
- return fd2str(fd);
-}
-
-/*
- * Waits for a file descriptor to change status or unblocked signal
- * @param fd file descriptor
- * @param timeout seconds to wait before timing out or 0 for no timeout
- * @return 1 if descriptor changed status or 0 if timed out or -1 on error
- */
-int
-waitfor(int fd, int timeout)
-{
- fd_set rfds;
- struct timeval tv = { timeout, 0 };
-
- FD_ZERO(&rfds);
- FD_SET(fd, &rfds);
- return select(fd + 1, &rfds, NULL, NULL, (timeout > 0) ? &tv : NULL);
-}
-
-/*
- * Concatenates NULL-terminated list of arguments into a single
- * commmand and executes it
- * @param argv argument list
- * @param path NULL, ">output", or ">>output"
- * @param timeout seconds to wait before timing out or 0 for no timeout
- * @param ppid NULL to wait for child termination or pointer to pid
- * @return return value of executed command or errno
- */
-int
-_eval(char *const argv[], char *path, int timeout, int *ppid)
-{
- pid_t pid;
- int status;
- int fd;
- int flags;
- int sig;
- char buf[254]="";
- int i;
-
- switch (pid = fork()) {
- case -1: /* error */
- perror("fork");
- return errno;
- case 0: /* child */
- /* Reset signal handlers set for parent process */
- for (sig = 0; sig < (_NSIG-1); sig++)
- signal(sig, SIG_DFL);
-
- /* Clean up */
- ioctl(0, TIOCNOTTY, 0);
- close(STDIN_FILENO);
- close(STDOUT_FILENO);
- close(STDERR_FILENO);
- setsid();
-
- /* We want to check the board if exist UART? , add by honor 2003-12-04 */
- if ((fd = open("/dev/console", O_RDWR)) < 0) {
- (void) open("/dev/null", O_RDONLY);
- (void) open("/dev/null", O_WRONLY);
- (void) open("/dev/null", O_WRONLY);
- }
- else{
- close(fd);
- (void) open("/dev/console", O_RDONLY);
- (void) open("/dev/console", O_WRONLY);
- (void) open("/dev/console", O_WRONLY);
- }
-
- /* Redirect stdout to <path> */
- if (path) {
- flags = O_WRONLY | O_CREAT;
- if (!strncmp(path, ">>", 2)) {
- /* append to <path> */
- flags |= O_APPEND;
- path += 2;
- } else if (!strncmp(path, ">", 1)) {
- /* overwrite <path> */
- flags |= O_TRUNC;
- path += 1;
- }
- if ((fd = open(path, flags, 0644)) < 0)
- perror(path);
- else {
- dup2(fd, STDOUT_FILENO);
- close(fd);
- }
- }
-
- /* execute command */
- for(i=0 ; argv[i] ; i++)
- snprintf(buf+strlen(buf), sizeof(buf), "%s ", argv[i]);
- dprintf("cmd=[%s]\n", buf);
- setenv("PATH", "/sbin:/bin:/usr/sbin:/usr/bin", 1);
- alarm(timeout);
- execvp(argv[0], argv);
- perror(argv[0]);
- exit(errno);
- default: /* parent */
- if (ppid) {
- *ppid = pid;
- return 0;
- } else {
- waitpid(pid, &status, 0);
- if (WIFEXITED(status))
- return WEXITSTATUS(status);
- else
- return status;
- }
- }
-}
-
-/*
- * Concatenates NULL-terminated list of arguments into a single
- * commmand and executes it
- * @param argv argument list
- * @return stdout of executed command or NULL if an error occurred
- */
-char *
-_backtick(char *const argv[])
-{
- int filedes[2];
- pid_t pid;
- int status;
- char *buf = NULL;
-
- /* create pipe */
- if (pipe(filedes) == -1) {
- perror(argv[0]);
- return NULL;
- }
-
- switch (pid = fork()) {
- case -1: /* error */
- return NULL;
- case 0: /* child */
- close(filedes[0]); /* close read end of pipe */
- dup2(filedes[1], 1); /* redirect stdout to write end of pipe */
- close(filedes[1]); /* close write end of pipe */
- execvp(argv[0], argv);
- exit(errno);
- break;
- default: /* parent */
- close(filedes[1]); /* close write end of pipe */
- buf = fd2str(filedes[0]);
- waitpid(pid, &status, 0);
- break;
- }
-
- return buf;
-}
-
-/*
- * Kills process whose PID is stored in plaintext in pidfile
- * @param pidfile PID file
- * @return 0 on success and errno on failure
- */
-int
-kill_pidfile(char *pidfile)
-{
- FILE *fp = fopen(pidfile, "r");
- char buf[256];
-
- if (fp && fgets(buf, sizeof(buf), fp)) {
- pid_t pid = strtoul(buf, NULL, 0);
- fclose(fp);
- return kill(pid, SIGTERM);
- } else
- return errno;
-}
-
-/*
- * fread() with automatic retry on syscall interrupt
- * @param ptr location to store to
- * @param size size of each element of data
- * @param nmemb number of elements
- * @param stream file stream
- * @return number of items successfully read
- */
-int
-safe_fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
-{
- size_t ret = 0;
-
- do {
- clearerr(stream);
- ret += fread((char *)ptr + (ret * size), size, nmemb - ret, stream);
- } while (ret < nmemb && ferror(stream) && errno == EINTR);
-
- return ret;
-}
-
-/*
- * fwrite() with automatic retry on syscall interrupt
- * @param ptr location to read from
- * @param size size of each element of data
- * @param nmemb number of elements
- * @param stream file stream
- * @return number of items successfully written
- */
-int
-safe_fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
-{
- size_t ret = 0;
-
- do {
- clearerr(stream);
- ret += fwrite((char *)ptr + (ret * size), size, nmemb - ret, stream);
- } while (ret < nmemb && ferror(stream) && errno == EINTR);
-
- return ret;
-}
-
-/*
- * Convert Ethernet address string representation to binary data
- * @param a string in xx:xx:xx:xx:xx:xx notation
- * @param e binary data
- * @return TRUE if conversion was successful and FALSE otherwise
- */
-int
-ether_atoe(const char *a, unsigned char *e)
-{
- char *c = (char *) a;
- int i = 0;
-
- memset(e, 0, ETHER_ADDR_LEN);
- for (;;) {
- e[i++] = (unsigned char) strtoul(c, &c, 16);
- if (!*c++ || i == ETHER_ADDR_LEN)
- break;
- }
- return (i == ETHER_ADDR_LEN);
-}
-
-/*
- * Convert Ethernet address binary data to string representation
- * @param e binary data
- * @param a string in xx:xx:xx:xx:xx:xx notation
- * @return a
- */
-char *
-ether_etoa(const unsigned char *e, char *a)
-{
- char *c = a;
- int i;
-
- for (i = 0; i < ETHER_ADDR_LEN; i++) {
- if (i)
- *c++ = ':';
- c += sprintf(c, "%02X", e[i] & 0xff);
- }
- return a;
-}
diff --git a/openwrt/package/nvram/src/wl.c b/openwrt/package/nvram/src/wl.c
deleted file mode 100644
index 5738e2cd04..0000000000
--- a/openwrt/package/nvram/src/wl.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Wireless network adapter utilities
- *
- * Copyright 2004, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- * $Id$
- */
-#include <string.h>
-
-#include <typedefs.h>
-#include <wlutils.h>
-
-int
-wl_probe(char *name)
-{
- int ret, val;
-
- /* Check interface */
- if ((ret = wl_ioctl(name, WLC_GET_MAGIC, &val, sizeof(val))))
- return ret;
- if (val != WLC_IOCTL_MAGIC)
- return -1;
- if ((ret = wl_ioctl(name, WLC_GET_VERSION, &val, sizeof(val))))
- return ret;
- if (val > WLC_IOCTL_VERSION)
- return -1;
-
- return ret;
-}
-
-int
-wl_set_val(char *name, char *var, void *val, int len)
-{
- char buf[128];
- int buf_len;
-
- /* check for overflow */
- if ((buf_len = strlen(var)) + 1 + len > sizeof(buf))
- return -1;
-
- strcpy(buf, var);
- buf_len += 1;
-
- /* append int value onto the end of the name string */
- memcpy(&buf[buf_len], val, len);
- buf_len += len;
-
- return wl_ioctl(name, WLC_SET_VAR, buf, buf_len);
-}
-
-int
-wl_get_val(char *name, char *var, void *val, int len)
-{
- char buf[128];
- int ret;
-
- /* check for overflow */
- if (strlen(var) + 1 > sizeof(buf) || len > sizeof(buf))
- return -1;
-
- strcpy(buf, var);
- if ((ret = wl_ioctl(name, WLC_GET_VAR, buf, sizeof(buf))))
- return ret;
-
- memcpy(val, buf, len);
- return 0;
-}
-
-int
-wl_set_int(char *name, char *var, int val)
-{
- return wl_set_val(name, var, &val, sizeof(val));
-}
-
-int
-wl_get_int(char *name, char *var, int *val)
-{
- return wl_get_val(name, var, val, sizeof(*val));
-}
-
-/**************************************************************************
- * The following code is from Broadcom (wl.c) *
- **************************************************************************/
-
-int
-wl_iovar_getbuf(char *ifname, char *iovar, void *param,
- int paramlen, void *bufptr, int buflen)
-{
- int err;
- uint namelen;
- uint iolen;
-
- namelen = strlen(iovar) + 1; /* length of iovar name plus null */
- iolen = namelen + paramlen;
-
- /* check for overflow */
- if (iolen > buflen)
- return (-1);
-
- memcpy(bufptr, iovar, namelen); /* copy iovar name including null */
- memcpy((int8*)bufptr + namelen, param, paramlen);
-
- err = wl_ioctl(ifname, WLC_GET_VAR, bufptr, buflen);
-
- return (err);
-}
-
-int
-wl_iovar_setbuf(char *ifname, char *iovar, void *param,
- int paramlen, void *bufptr, int buflen)
-{
- uint namelen;
- uint iolen;
-
- namelen = strlen(iovar) + 1; /* length of iovar name plus null */
- iolen = namelen + paramlen;
-
- /* check for overflow */
- if (iolen > buflen)
- return (-1);
-
- memcpy(bufptr, iovar, namelen); /* copy iovar name including null */
- memcpy((int8*)bufptr + namelen, param, paramlen);
-
- return wl_ioctl(ifname, WLC_SET_VAR, bufptr, iolen);
-}
-
-int
-wl_iovar_set(char *ifname, char *iovar, void *param, int paramlen)
-{
- char smbuf[WLC_IOCTL_SMLEN];
-
- return wl_iovar_setbuf(ifname, iovar, param, paramlen, smbuf, sizeof(smbuf));
-}
-
-int
-wl_iovar_get(char *ifname, char *iovar, void *bufptr, int buflen)
-{
- char smbuf[WLC_IOCTL_SMLEN];
- int ret;
-
- /* use the return buffer if it is bigger than what we have on the stack */
- if (buflen > sizeof(smbuf)) {
- ret = wl_iovar_getbuf(ifname, iovar, NULL, 0, bufptr, buflen);
- } else {
- ret = wl_iovar_getbuf(ifname, iovar, NULL, 0, smbuf, sizeof(smbuf));
- if (ret == 0)
- memcpy(bufptr, smbuf, buflen);
- }
-
- return ret;
-}
-
-/*
- * set named driver variable to int value
- * calling example: wl_iovar_setint(ifname, "arate", rate)
-*/
-int
-wl_iovar_setint(char *ifname, char *iovar, int val)
-{
- return wl_iovar_set(ifname, iovar, &val, sizeof(val));
-}
-
-/*
- * get named driver variable to int value and return error indication
- * calling example: wl_iovar_getint(ifname, "arate", &rate)
- */
-int
-wl_iovar_getint(char *ifname, char *iovar, int *val)
-{
- return wl_iovar_get(ifname, iovar, val, sizeof(int));
-}
-
-/*
- * format a bsscfg indexed iovar buffer
- */
-static int
-wl_bssiovar_mkbuf(char *iovar, int bssidx, void *param,
- int paramlen, void *bufptr, int buflen, int *plen)
-{
- char *prefix = "bsscfg:";
- int8* p;
- uint prefixlen;
- uint namelen;
- uint iolen;
-
- prefixlen = strlen(prefix); /* length of bsscfg prefix */
- namelen = strlen(iovar) + 1; /* length of iovar name + null */
- iolen = prefixlen + namelen + sizeof(int) + paramlen;
-
- /* check for overflow */
- if (buflen < 0 || iolen > (uint)buflen) {
- *plen = 0;
- return -1;
- }
-
- p = (int8*)bufptr;
-
- /* copy prefix, no null */
- memcpy(p, prefix, prefixlen);
- p += prefixlen;
-
- /* copy iovar name including null */
- memcpy(p, iovar, namelen);
- p += namelen;
-
- /* bss config index as first param */
- memcpy(p, &bssidx, sizeof(int32));
- p += sizeof(int32);
-
- /* parameter buffer follows */
- if (paramlen)
- memcpy(p, param, paramlen);
-
- *plen = iolen;
- return 0;
-}
-
-/*
- * set named & bss indexed driver variable to buffer value
- */
-int
-wl_bssiovar_setbuf(char *ifname, char *iovar, int bssidx, void *param,
- int paramlen, void *bufptr, int buflen)
-{
- int err;
- uint iolen;
-
- err = wl_bssiovar_mkbuf(iovar, bssidx, param, paramlen, bufptr, buflen, &iolen);
- if (err)
- return err;
-
- return wl_ioctl(ifname, WLC_SET_VAR, bufptr, iolen);
-}
-
-/*
- * get named & bss indexed driver variable buffer value
- */
-int
-wl_bssiovar_getbuf(char *ifname, char *iovar, int bssidx, void *param,
- int paramlen, void *bufptr, int buflen)
-{
- int err;
- uint iolen;
-
- err = wl_bssiovar_mkbuf(iovar, bssidx, param, paramlen, bufptr, buflen, &iolen);
- if (err)
- return err;
-
- return wl_ioctl(ifname, WLC_GET_VAR, bufptr, buflen);
-}
-
-/*
- * set named & bss indexed driver variable to buffer value
- */
-int
-wl_bssiovar_set(char *ifname, char *iovar, int bssidx, void *param, int paramlen)
-{
- char smbuf[WLC_IOCTL_SMLEN];
-
- return wl_bssiovar_setbuf(ifname, iovar, bssidx, param, paramlen, smbuf, sizeof(smbuf));
-}
-
-/*
- * get named & bss indexed driver variable buffer value
- */
-int
-wl_bssiovar_get(char *ifname, char *iovar, int bssidx, void *outbuf, int len)
-{
- char smbuf[WLC_IOCTL_SMLEN];
- int err;
-
- /* use the return buffer if it is bigger than what we have on the stack */
- if (len > (int)sizeof(smbuf)) {
- err = wl_bssiovar_getbuf(ifname, iovar, bssidx, NULL, 0, outbuf, len);
- } else {
- memset(smbuf, 0, sizeof(smbuf));
- err = wl_bssiovar_getbuf(ifname, iovar, bssidx, NULL, 0, smbuf, sizeof(smbuf));
- if (err == 0)
- memcpy(outbuf, smbuf, len);
- }
-
- return err;
-}
-
-/*
- * set named & bss indexed driver variable to int value
- */
-int
-wl_bssiovar_setint(char *ifname, char *iovar, int bssidx, int val)
-{
- return wl_bssiovar_set(ifname, iovar, bssidx, &val, sizeof(int));
-}
diff --git a/openwrt/package/nvram/src/wl_linux.c b/openwrt/package/nvram/src/wl_linux.c
deleted file mode 100644
index 126a40b4b3..0000000000
--- a/openwrt/package/nvram/src/wl_linux.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Wireless network adapter utilities (linux-specific)
- *
- * Copyright 2004, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- * $Id$
- */
-
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-#include <net/if.h>
-
-#include <typedefs.h>
-#include <wlioctl.h>
-#include <wlutils.h>
-
-int
-wl_ioctl(char *name, int cmd, void *buf, int len)
-{
- struct ifreq ifr;
- wl_ioctl_t ioc;
- int ret = 0;
- int s;
-
- /* open socket to kernel */
- if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- perror("socket");
- return errno;
- }
-
- /* do it */
- ioc.cmd = cmd;
- ioc.buf = buf;
- ioc.len = len;
- strncpy(ifr.ifr_name, name, IFNAMSIZ);
- ifr.ifr_data = (caddr_t) &ioc;
- if ((ret = ioctl(s, SIOCDEVPRIVATE, &ifr)) < 0)
- if (cmd != WLC_GET_MAGIC)
- perror(ifr.ifr_name);
-
- /* cleanup */
- close(s);
- return ret;
-}
-
-int
-wl_hwaddr(char *name, unsigned char *hwaddr)
-{
- struct ifreq ifr;
- int ret = 0;
- int s;
-
- /* open socket to kernel */
- if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- perror("socket");
- return errno;
- }
-
- /* do it */
- strncpy(ifr.ifr_name, name, IFNAMSIZ);
- if ((ret = ioctl(s, SIOCGIFHWADDR, &ifr)) == 0)
- memcpy(hwaddr, ifr.ifr_hwaddr.sa_data, ETHER_ADDR_LEN);
-
- /* cleanup */
- close(s);
- return ret;
-}
-
diff --git a/openwrt/package/olsrd/Config.in b/openwrt/package/olsrd/Config.in
deleted file mode 100644
index 0d6ffa4a84..0000000000
--- a/openwrt/package/olsrd/Config.in
+++ /dev/null
@@ -1,54 +0,0 @@
-menu "olsrd............................. OLSR (Optimized Link State Routing) daemon"
-
-config BR2_PACKAGE_OLSRD
- prompt "olsrd............................. OLSR (Optimized Link State Routing) daemon"
- tristate
- default m if CONFIG_DEVEL
- help
- The Optimized Link State Routing daemon
-
- http://www.olsr.org/
-
-config BR2_PACKAGE_OLSRD_MOD_DOT_DRAW
- prompt "olsrd-mod-dot-draw.............. Dot topology information plugin"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OLSRD
-
-config BR2_PACKAGE_OLSRD_MOD_DYN_GW
- prompt "olsrd-mod-dyn-gw................ Dynamic internet gateway plugin"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OLSRD
-
-config BR2_PACKAGE_OLSRD_MOD_HTTPINFO
- prompt "olsrd-mod-httpinfo.............. Small informative web server plugin"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OLSRD
-
-config BR2_PACKAGE_OLSRD_MOD_NAMESERVICE
- prompt "olsrd-mod-nameservice........... Lightweight hostname resolver plugin"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OLSRD
-
-config BR2_PACKAGE_OLSRD_MOD_POWER
- prompt "olsrd-mod-power................. Power status plugin"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OLSRD
-
-config BR2_PACKAGE_OLSRD_MOD_SECURE
- prompt "olsrd-mod-secure................ Message signing plugin to secure olsrd routing domain"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OLSRD
-
-config BR2_PACKAGE_OLSRD_MOD_TAS
- prompt "olsrd-mod-tas................... Tiny Application Server (TAS) plugin for olsrd"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OLSRD
-
-endmenu
diff --git a/openwrt/package/olsrd/Makefile b/openwrt/package/olsrd/Makefile
deleted file mode 100644
index a5092c8758..0000000000
--- a/openwrt/package/olsrd/Makefile
+++ /dev/null
@@ -1,76 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=olsrd
-PKG_VERSION:=0.4.10
-PKG_RELEASE:=1
-PKG_MD5SUM:=9807d4451e65cb4ec385155eef7bf3cf
-
-PKG_SOURCE_URL:=http://www.olsr.org/releases/0.4
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-define PKG_mod_template
-
-$$(IPKG_$(1)):
- install -d -m0755 $$(IDIR_$(1))/usr/lib
- install -m0755 $(PKG_INSTALL_DIR)/usr/lib/olsrd_$(2).so.* $$(IDIR_$(1))/usr/lib/
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-$(eval $(call PKG_template,OLSRD,olsrd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OLSRD_MOD_DOT_DRAW,olsrd-mod-dot-draw,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OLSRD_MOD_DYN_GW,olsrd-mod-dyn-gw,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OLSRD_MOD_HTTPINFO,olsrd-mod-httpinfo,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OLSRD_MOD_NAMESERVICE,olsrd-mod-nameservice,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OLSRD_MOD_POWER,olsrd-mod-power,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OLSRD_MOD_SECURE,olsrd-mod-secure,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OLSRD_MOD_TAS,olsrd-mod-tas,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_mod_template,OLSRD_MOD_DOT_DRAW,dot_draw))
-$(eval $(call PKG_mod_template,OLSRD_MOD_DYN_GW,dyn_gw))
-$(eval $(call PKG_mod_template,OLSRD_MOD_HTTPINFO,httpinfo))
-$(eval $(call PKG_mod_template,OLSRD_MOD_NAMESERVICE,nameservice))
-$(eval $(call PKG_mod_template,OLSRD_MOD_POWER,power))
-$(eval $(call PKG_mod_template,OLSRD_MOD_SECURE,secure))
-$(eval $(call PKG_mod_template,OLSRD_MOD_TAS,tas))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C "$(PKG_BUILD_DIR)" \
- $(TARGET_CONFIGURE_OPTS) \
- NODEBUG=1 \
- OFLAGS="$(TARGET_CFLAGS)" \
- OS="linux" \
- INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
- STRIP="/bin/true" \
- all libs install install_libs
- touch $@
-
-$(IPKG_OLSRD):
- install -d -m0755 $(IDIR_OLSRD)/etc
- $(CP) $(PKG_INSTALL_DIR)/etc/olsrd.conf $(IDIR_OLSRD)/etc/
- install -d -m0755 $(IDIR_OLSRD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/olsrd $(IDIR_OLSRD)/usr/sbin/
- install -d -m0755 $(IDIR_OLSRD)/etc/init.d
- install -m0755 ./files/olsrd.init $(IDIR_OLSRD)/etc/init.d/S60olsrd
- $(RSTRIP) $(IDIR_OLSRD)
- $(IPKG_BUILD) $(IDIR_OLSRD) $(PACKAGE_DIR)
-
-$(IPKG_OLSRD_MOD_SECURE): $(IDIR_OLSRD_MOD_SECURE)/etc/olsrd.d/olsrd_secure_key
-
-$(IDIR_OLSRD_MOD_SECURE)/etc/olsrd.d/olsrd_secure_key:
- install -d -m0755 $(IDIR_OLSRD_MOD_SECURE)/etc/olsrd.d
- $(CP) ./files/olsrd_secure_key $(IDIR_OLSRD_MOD_SECURE)/etc/olsrd.d/
diff --git a/openwrt/package/olsrd/files/olsrd.init b/openwrt/package/olsrd/files/olsrd.init
deleted file mode 100644
index 1f1fdb9519..0000000000
--- a/openwrt/package/olsrd/files/olsrd.init
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/olsrd
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- olsrd $OPTIONS
- ;;
- *)
- echo "usage: $0 (start)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/olsrd/files/olsrd_secure_key b/openwrt/package/olsrd/files/olsrd_secure_key
deleted file mode 100644
index 4a7d7258f1..0000000000
--- a/openwrt/package/olsrd/files/olsrd_secure_key
+++ /dev/null
@@ -1 +0,0 @@
-1234567890123456 \ No newline at end of file
diff --git a/openwrt/package/olsrd/ipkg/olsrd-mod-dot-draw.control b/openwrt/package/olsrd/ipkg/olsrd-mod-dot-draw.control
deleted file mode 100644
index f0a3432825..0000000000
--- a/openwrt/package/olsrd/ipkg/olsrd-mod-dot-draw.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: olsrd-mod-dot-draw
-Priority: optional
-Section: net
-Description: a dot topology information plugin for olsrd
-Depends: olsrd
diff --git a/openwrt/package/olsrd/ipkg/olsrd-mod-dyn-gw.control b/openwrt/package/olsrd/ipkg/olsrd-mod-dyn-gw.control
deleted file mode 100644
index 69a41a5b1b..0000000000
--- a/openwrt/package/olsrd/ipkg/olsrd-mod-dyn-gw.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: olsrd-mod-dyn-gw
-Priority: optional
-Section: net
-Description: a dynamic internet gateway plugin for olsrd
-Depends: olsrd
diff --git a/openwrt/package/olsrd/ipkg/olsrd-mod-httpinfo.control b/openwrt/package/olsrd/ipkg/olsrd-mod-httpinfo.control
deleted file mode 100644
index 770dc0474e..0000000000
--- a/openwrt/package/olsrd/ipkg/olsrd-mod-httpinfo.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: olsrd-mod-httpinfo
-Priority: optional
-Section: net
-Description: a small informative web server plugin for olsrd
-Depends: olsrd
diff --git a/openwrt/package/olsrd/ipkg/olsrd-mod-nameservice.control b/openwrt/package/olsrd/ipkg/olsrd-mod-nameservice.control
deleted file mode 100644
index 2caa8152b1..0000000000
--- a/openwrt/package/olsrd/ipkg/olsrd-mod-nameservice.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: olsrd-mod-nameservice
-Priority: optional
-Section: net
-Description: a lightweight hostname resolver plugin for olsrd
-Depends: olsrd
diff --git a/openwrt/package/olsrd/ipkg/olsrd-mod-power.control b/openwrt/package/olsrd/ipkg/olsrd-mod-power.control
deleted file mode 100644
index 168126b3d8..0000000000
--- a/openwrt/package/olsrd/ipkg/olsrd-mod-power.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: olsrd-mod-power
-Priority: optional
-Section: net
-Description: a power status plugin for olsrd
-Depends: olsrd
diff --git a/openwrt/package/olsrd/ipkg/olsrd-mod-secure.conffiles b/openwrt/package/olsrd/ipkg/olsrd-mod-secure.conffiles
deleted file mode 100644
index 34e90b80a6..0000000000
--- a/openwrt/package/olsrd/ipkg/olsrd-mod-secure.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/olsrd.d/olsrd_secure_key
diff --git a/openwrt/package/olsrd/ipkg/olsrd-mod-secure.control b/openwrt/package/olsrd/ipkg/olsrd-mod-secure.control
deleted file mode 100644
index ff2eb3a9ae..0000000000
--- a/openwrt/package/olsrd/ipkg/olsrd-mod-secure.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: olsrd-mod-secure
-Priority: optional
-Section: net
-Description: a message signing plugin to secure olsrd routing domain
-Depends: olsrd
diff --git a/openwrt/package/olsrd/ipkg/olsrd-mod-tas.control b/openwrt/package/olsrd/ipkg/olsrd-mod-tas.control
deleted file mode 100644
index 91ad4c6650..0000000000
--- a/openwrt/package/olsrd/ipkg/olsrd-mod-tas.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: olsrd-mod-tas
-Priority: optional
-Section: net
-Description: a Tiny Application Server (TAS) plugin for olsrd
-Depends: olsrd
diff --git a/openwrt/package/olsrd/ipkg/olsrd.conffiles b/openwrt/package/olsrd/ipkg/olsrd.conffiles
deleted file mode 100644
index a0b5e8eaa7..0000000000
--- a/openwrt/package/olsrd/ipkg/olsrd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/olsrd.conf
diff --git a/openwrt/package/olsrd/ipkg/olsrd.control b/openwrt/package/olsrd/ipkg/olsrd.control
deleted file mode 100644
index 37cdf09085..0000000000
--- a/openwrt/package/olsrd/ipkg/olsrd.control
+++ /dev/null
@@ -1,8 +0,0 @@
-Package: olsrd
-Priority: optional
-Section: net
-Description: The olsr.org OLSR daemon
- olsrd is an implementation of the Optimized Link State Routing protocol.
- OLSR is a routing protocol for mobile ad-hoc networks. The protocol is
- pro-active, table driven and utilizes a technique called multipoint
- relaying for message flooding.
diff --git a/openwrt/package/olsrd/patches/olsrd-0.4.10-debug_level.patch b/openwrt/package/olsrd/patches/olsrd-0.4.10-debug_level.patch
deleted file mode 100644
index d04272ed86..0000000000
--- a/openwrt/package/olsrd/patches/olsrd-0.4.10-debug_level.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- olsrd-0.4.10/files/olsrd.conf.default.rfc 2005-06-04 17:34:05.000000000 +0200
-+++ olsrd-0.4.10.new/files/olsrd.conf.default.rfc 2006-05-21 21:44:55.000000000 +0200
-@@ -9,7 +9,7 @@
- # Debug level(0-9)
- # If set to 0 the daemon runs in the background
-
--DebugLevel 1
-+DebugLevel 0
-
- # IP version to use (4 or 6)
-
diff --git a/openwrt/package/olsrd/patches/olsrd-0.4.10-opt-flags.diff b/openwrt/package/olsrd/patches/olsrd-0.4.10-opt-flags.diff
deleted file mode 100644
index 02d1cc813e..0000000000
--- a/openwrt/package/olsrd/patches/olsrd-0.4.10-opt-flags.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN olsrd-0.4.10-old/Makefile.inc olsrd-0.4.10-new/Makefile.inc
---- olsrd-0.4.10-old/Makefile.inc 2006-01-01 16:58:20.000000000 +0100
-+++ olsrd-0.4.10-new/Makefile.inc 2006-01-05 17:57:23.000000000 +0100
-@@ -21,7 +21,7 @@
- ifndef CFLAGS
- CFLAGS += -Wall -Wmissing-prototypes -Wstrict-prototypes \
- -Wmissing-declarations -Wsign-compare
--CFLAGS += -O2 -g
-+CFLAGS += $(OFLAGS)
- endif
-
- ifdef OLSRD_PLUGIN
diff --git a/openwrt/package/olsrd/patches/olsrd-0.4.9-secure-key-path.path b/openwrt/package/olsrd/patches/olsrd-0.4.9-secure-key-path.path
deleted file mode 100644
index fcae759862..0000000000
--- a/openwrt/package/olsrd/patches/olsrd-0.4.9-secure-key-path.path
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN olsrd-0.4.9-orig/lib/secure/src/olsrd_secure.h olsrd-0.4.9-1/lib/secure/src/olsrd_secure.h
---- olsrd-0.4.9-orig/lib/secure/src/olsrd_secure.h 2005-03-10 20:57:48.000000000 +0100
-+++ olsrd-0.4.9-1/lib/secure/src/olsrd_secure.h 2005-04-05 00:51:40.000000000 +0200
-@@ -43,7 +43,7 @@
-
- #include "olsrd_plugin.h"
-
--#define KEYFILE "/root/.olsr/olsrd_secure_key"
-+#define KEYFILE "/etc/olsrd.d/olsrd_secure_key"
-
- /* Schemes */
- #define ONE_CHECKSUM 1
diff --git a/openwrt/package/opencdk/Config.in b/openwrt/package/opencdk/Config.in
deleted file mode 100644
index 589b095196..0000000000
--- a/openwrt/package/opencdk/Config.in
+++ /dev/null
@@ -1,21 +0,0 @@
-config BR2_PACKAGE_OPENCDK
- tristate
- default n
- depends BR2_PACKAGE_LIBOPENCDK
-
-config BR2_PACKAGE_LIBOPENCDK
- prompt "libopencdk........................ The Open Crypto Development Kit library"
- tristate
-# default m if CONFIG_DEVEL
- default n
- select BR2_PACKAGE_OPENCDK
- select BR2_PACKAGE_LIBGCRYPT
- help
- This library provides basic parts of the OpenPGP message format.
- For reference, please read the rfc2440.txt in the doc/ directory.
- Due to some possible security problems, the library also implements
- parts of draft-ietf-openpgp-rfc2440bis-08.txt. If you want to exchange
- messages with earlier PGP version < 7, you should use the compat mode.
-
- ftp://ftp.gnutls.org/pub/gnutls/opencdk/
-
diff --git a/openwrt/package/opencdk/Makefile b/openwrt/package/opencdk/Makefile
deleted file mode 100644
index c40b0c24eb..0000000000
--- a/openwrt/package/opencdk/Makefile
+++ /dev/null
@@ -1,99 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=opencdk
-PKG_VERSION:=0.5.5
-PKG_RELEASE:=0
-PKG_MD5SUM:=aaff60107f0153873192ffda00699a96
-
-PKG_SOURCE_URL:=ftp://ftp.gnutls.org/pub/gnutls/opencdk/ \
- ftp://ftp.gnupg.org/gcrypt/alpha/gnutls/opencdk/ \
- http://www.mirrors.wiretapped.net/security/network-security/gnutls/opencdk/ \
- ftp://ftp.mirrors.wiretapped.net/pub/security/network-security/gnutls/opencdk/ \
- http://josefsson.org/gnutls/releases/opencdk/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBOPENCDK,libopencdk,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- touch configure.ac ; \
- touch acinclude.m4 ; \
- touch aclocal.m4 ; \
- touch Makefile.in ; \
- touch config.h.in ; \
- touch configure ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-libgcrypt-prefix="$(STAGING_DIR)/usr" \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBOPENCDK):
- install -m0755 -d $(IDIR_LIBOPENCDK)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopencdk.so.* $(IDIR_LIBOPENCDK)/usr/lib/
- $(RSTRIP) $(IDIR_LIBOPENCDK)
- $(IPKG_BUILD) $(IDIR_LIBOPENCDK) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libopencdk.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/opencdk-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/opencdk.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopencdk.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libopencdk.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/opencdk-config \
- $(STAGING_DIR)/usr/include/opencdk.h \
- $(STAGING_DIR)/usr/lib/libopencdk.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/opencdk/ipkg/libopencdk.control b/openwrt/package/opencdk/ipkg/libopencdk.control
deleted file mode 100644
index 257bed1c63..0000000000
--- a/openwrt/package/opencdk/ipkg/libopencdk.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libopencdk
-Priority: optional
-Section: libs
-Description: Open Crypto Development Kit library
-Depends: libgcrypt, libgpg-error, zlib
diff --git a/openwrt/package/opencdk/patches/500-cross-compile.patch b/openwrt/package/opencdk/patches/500-cross-compile.patch
deleted file mode 100644
index e8b6707284..0000000000
--- a/openwrt/package/opencdk/patches/500-cross-compile.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -ruN opencdk-0.5.5-orig/configure opencdk-0.5.5-1/configure
---- opencdk-0.5.5-orig/configure 2004-06-20 15:54:29.000000000 +0200
-+++ opencdk-0.5.5-1/configure 2005-03-15 22:36:53.000000000 +0100
-@@ -19788,8 +19788,8 @@
-
-
-
--LIBOPENCDK_LIBS="$LIBS -L${libdir} -lopencdk $LIBGCRYPT_LIBS"
--LIBOPENCDK_CFLAGS="$LIBGCRYPT_CFLAGS -I${includedir}"
-+LIBOPENCDK_LIBS="$LIBS -lopencdk $LIBGCRYPT_LIBS"
-+LIBOPENCDK_CFLAGS="$LIBGCRYPT_CFLAGS"
-
-
-
-diff -ruN opencdk-0.5.5-orig/configure.ac opencdk-0.5.5-1/configure.ac
---- opencdk-0.5.5-orig/configure.ac 2004-06-05 19:46:31.000000000 +0200
-+++ opencdk-0.5.5-1/configure.ac 2005-03-15 22:36:26.000000000 +0100
-@@ -96,8 +96,8 @@
- ***
- ]]))
-
--LIBOPENCDK_LIBS="$LIBS -L${libdir} -lopencdk $LIBGCRYPT_LIBS"
--LIBOPENCDK_CFLAGS="$LIBGCRYPT_CFLAGS -I${includedir}"
-+LIBOPENCDK_LIBS="$LIBS -lopencdk $LIBGCRYPT_LIBS"
-+LIBOPENCDK_CFLAGS="$LIBGCRYPT_CFLAGS"
- AC_SUBST(LIBOPENCDK_LIBS)
- AC_SUBST(LIBOPENCDK_CFLAGS)
-
diff --git a/openwrt/package/openh323/Config.in b/openwrt/package/openh323/Config.in
deleted file mode 100644
index 6dfe1f97a6..0000000000
--- a/openwrt/package/openh323/Config.in
+++ /dev/null
@@ -1,6 +0,0 @@
-config BR2_COMPILE_OPENH323
-# prompt "openh323.......................... OpenH323 implementation"
- tristate
- select BR2_COMPILE_PWLIB
- default n
- help
diff --git a/openwrt/package/openh323/Makefile b/openwrt/package/openh323/Makefile
deleted file mode 100644
index f85e623b6a..0000000000
--- a/openwrt/package/openh323/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=openh323
-PKG_VERSION:=cvs-20051230
-PKG_RELEASE:=1
-PKG_MD5SUM:=ba1ffd45016f533bec2bb1539b78e43a
-
-PKG_SOURCE_URL:=http://trash.uid0.hu/openwrt/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,OPENH323,openh323,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- ( cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- CFLAGS="$(TARGET_CFLAGS)" \
- CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- $(TARGET_CONFIGURE_OPTS) \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- \
- --enable-minsize \
- --enable-audio \
- --disable-video \
- );
- ln -sf $(PKG_NAME)-$(PKG_VERSION) $(BUILD_DIR)/$(PKG_NAME)
- touch $@
-
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- optnoshared
- touch $@
-
-uninstall-link:
- rm -f $(BUILD_DIR)/$(PKG_NAME)
-
-compile-targets: $(PKG_BUILD_DIR)/.built
-clean-targets: uninstall-link
diff --git a/openwrt/package/openh323/ipkg/openh323.control b/openwrt/package/openh323/ipkg/openh323.control
deleted file mode 100644
index 5aab368259..0000000000
--- a/openwrt/package/openh323/ipkg/openh323.control
+++ /dev/null
@@ -1,7 +0,0 @@
-Package: openh323
-Priority: optional
-Section: admin
-Description: The OpenH323 project aims to create a full featured,
- interoperable, Open Source implementation of the ITU-T H.323
- teleconferencing protocol that can be used by personal
- developers and commercial users without charge.
diff --git a/openwrt/package/openh323/patches/001-configure.patch b/openwrt/package/openh323/patches/001-configure.patch
deleted file mode 100644
index 04ed8c5c1f..0000000000
--- a/openwrt/package/openh323/patches/001-configure.patch
+++ /dev/null
@@ -1,122 +0,0 @@
---- openh323-cvs-20051230.orig/configure 2005-08-30 03:12:38.000000000 +0200
-+++ openh323-cvs-20051230/configure 2005-12-30 11:29:57.000000000 +0100
-@@ -3080,10 +3080,10 @@
- if eval "test \"\${$as_ac_File+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- test "$cross_compiling" = yes &&
-- { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
--echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-- { (exit 1); exit 1; }; }
-+# test "$cross_compiling" = yes &&
-+# { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-+#echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-+# { (exit 1); exit 1; }; }
- if test -r "${PWLIBDIR}/version.h"; then
- eval "$as_ac_File=yes"
- else
-@@ -3104,10 +3104,10 @@
- if eval "test \"\${$as_ac_File+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- test "$cross_compiling" = yes &&
-- { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
--echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-- { (exit 1); exit 1; }; }
-+# test "$cross_compiling" = yes &&
-+# { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-+#echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-+# { (exit 1); exit 1; }; }
- if test -r "${OPENH323DIR}/../pwlib/version.h"; then
- eval "$as_ac_File=yes"
- else
-@@ -3129,10 +3129,10 @@
- if eval "test \"\${$as_ac_File+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- test "$cross_compiling" = yes &&
-- { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
--echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-- { (exit 1); exit 1; }; }
-+# test "$cross_compiling" = yes &&
-+# { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-+#echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-+# { (exit 1); exit 1; }; }
- if test -r "${HOME}/pwlib/include/ptlib.h"; then
- eval "$as_ac_File=yes"
- else
-@@ -3153,10 +3153,10 @@
- if test "${ac_cv_file__usr_local_include_ptlib_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- test "$cross_compiling" = yes &&
-- { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
--echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-- { (exit 1); exit 1; }; }
-+# test "$cross_compiling" = yes &&
-+# { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-+#echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-+# { (exit 1); exit 1; }; }
- if test -r "/usr/local/include/ptlib.h"; then
- ac_cv_file__usr_local_include_ptlib_h=yes
- else
-@@ -3215,10 +3215,10 @@
- if test "${ac_cv_file__usr_include_ptlib_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- test "$cross_compiling" = yes &&
-- { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
--echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-- { (exit 1); exit 1; }; }
-+# test "$cross_compiling" = yes &&
-+# { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-+#echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-+# { (exit 1); exit 1; }; }
- if test -r "/usr/include/ptlib.h"; then
- ac_cv_file__usr_include_ptlib_h=yes
- else
-@@ -3985,10 +3985,10 @@
- if test "${ac_cv_file__usr_local_include_ffmpeg_avcodec_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- test "$cross_compiling" = yes &&
-- { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
--echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-- { (exit 1); exit 1; }; }
-+# test "$cross_compiling" = yes &&
-+# { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-+#echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-+# { (exit 1); exit 1; }; }
- if test -r "/usr/local/include/ffmpeg/avcodec.h"; then
- ac_cv_file__usr_local_include_ffmpeg_avcodec_h=yes
- else
-@@ -4193,10 +4193,10 @@
- if test "${ac_cv_file__usr_local_lib_libvich263_so+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- test "$cross_compiling" = yes &&
-- { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
--echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-- { (exit 1); exit 1; }; }
-+# test "$cross_compiling" = yes &&
-+# { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-+#echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-+# { (exit 1); exit 1; }; }
- if test -r "/usr/local/lib/libvich263.so"; then
- ac_cv_file__usr_local_lib_libvich263_so=yes
- else
-@@ -4219,10 +4219,10 @@
- if test "${ac_cv_file__usr_local_include_vich263_encoder_h263_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- test "$cross_compiling" = yes &&
-- { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
--echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-- { (exit 1); exit 1; }; }
-+# test "$cross_compiling" = yes &&
-+# { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-+#echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-+# { (exit 1); exit 1; }; }
- if test -r "/usr/local/include/vich263/encoder-h263.h"; then
- ac_cv_file__usr_local_include_vich263_encoder_h263_h=yes
- else
diff --git a/openwrt/package/openldap/Config.in b/openwrt/package/openldap/Config.in
deleted file mode 100644
index ec04eb4bcd..0000000000
--- a/openwrt/package/openldap/Config.in
+++ /dev/null
@@ -1,33 +0,0 @@
-config BR2_COMPILE_OPENLDAP
- tristate
- default n
- depends BR2_PACKAGE_LIBOPENLDAP
-
-config BR2_PACKAGE_LIBOPENLDAP
- prompt "libopenldap....................... Open source LDAP (Lightweight Directory Access Protocol) client libraries"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_OPENLDAP
- help
-
- OpenLDAP Software is an open source implementation of the
- Lightweight Directory Access Protocol (LDAP).
-
- http://www.openldap.org/
-
- This package contains the shared LDAP client libraries, needed by other programs.
-
-config BR2_PACKAGE_OPENLDAP_UTILS
- prompt "openldap-utils.................. OpenLDAP client utilities"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBOPENLDAP
- help
-
- OpenLDAP Software is an open source implementation of the
- Lightweight Directory Access Protocol (LDAP).
-
- http://www.openldap.org/
-
- This package contains client programs required to access LDAP servers.
-
diff --git a/openwrt/package/openldap/Makefile b/openwrt/package/openldap/Makefile
deleted file mode 100644
index 5eac5807e8..0000000000
--- a/openwrt/package/openldap/Makefile
+++ /dev/null
@@ -1,140 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=openldap
-PKG_VERSION:=2.2.29
-PKG_RELEASE:=1
-PKG_MD5SUM:=6c4c72a1336aa45b463e738034c078d6
-
-PKG_SOURCE_URL:=ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/ \
- ftp://sunsite.cnlab-switch.ch/mirror/OpenLDAP/openldap-release/ \
- ftp://ftp.nl.uu.net/pub/unix/db/openldap/openldap-release/ \
- ftp://ftp.plig.org/pub/OpenLDAP/openldap-release/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-PKG_CONFIGURE_OPTIONS = \
- --enable-shared \
- --enable-static \
- --disable-debug \
- --enable-dynamic \
- --enable-syslog \
- --disable-local \
- --disable-slapd \
- --disable-slurpd \
- --with-cyrus-sasl \
- --without-fetch \
- --with-threads \
- --with-tls \
- --with-yielding_select="yes" \
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBOPENLDAP,libopenldap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENLDAP_UTILS,openldap-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- ./configure \
- --target=$(GNU_HOST_NAME) \
- --host=$(GNU_HOST_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- $(PKG_CONFIGURE_OPTIONS) \
- --without-cyrus-sasl \
- --without-threads \
- --without-tls \
- )
- $(MAKE) -C $(PKG_BUILD_DIR) depend
- $(MAKE) -C $(PKG_BUILD_DIR)/libraries/liblutil
- $(MAKE) -C $(PKG_BUILD_DIR)/libraries/liblber
- $(MAKE) -C $(PKG_BUILD_DIR)/libraries/liblunicode
- $(MAKE) -C $(PKG_BUILD_DIR)/libraries/liblber clean
- $(MAKE) -C $(PKG_BUILD_DIR)/libraries/liblutil clean
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ac_cv_func_memcmp_clean="yes" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- $(PKG_CONFIGURE_OPTIONS) \
- )
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-
-$(IPKG_LIBOPENLDAP):
- mkdir -p $(IDIR_LIBOPENLDAP)/etc/openldap
- $(CP) $(PKG_INSTALL_DIR)/etc/openldap/ldap.conf $(IDIR_LIBOPENLDAP)/etc/openldap/
- mkdir -p $(IDIR_LIBOPENLDAP)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{lber,ldap}*.so.* $(IDIR_LIBOPENLDAP)/usr/lib/
- mkdir -p $(IDIR_LIBOPENLDAP)/usr/share/openldap
- $(CP) $(PKG_INSTALL_DIR)/usr/share/openldap/* $(IDIR_LIBOPENLDAP)/usr/share/openldap/
- $(RSTRIP) $(IDIR_LIBOPENLDAP)
- $(IPKG_BUILD) $(IDIR_LIBOPENLDAP) $(PACKAGE_DIR)
-
-$(IPKG_OPENLDAP_UTILS):
- mkdir -p $(IDIR_OPENLDAP_UTILS)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/ldap* $(IDIR_OPENLDAP_UTILS)/usr/bin/
- $(RSTRIP) $(IDIR_OPENLDAP_UTILS)
- $(IPKG_BUILD) $(IDIR_OPENLDAP_UTILS) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libldap.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/{lber,ldap}*.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{lber,ldap}*.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libldap.so
-
-uninstall-dev:
- rm -rf $(STAGING_DIR)/usr/include/{lber,ldap}*.h
- rm -rf $(STAGING_DIR)/usr/lib/lib{lber,ldap}*.{a,so*}
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/openldap/ipkg/libopenldap.conffiles b/openwrt/package/openldap/ipkg/libopenldap.conffiles
deleted file mode 100644
index 25f44c3229..0000000000
--- a/openwrt/package/openldap/ipkg/libopenldap.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/openldap/ldap.conf
diff --git a/openwrt/package/openldap/ipkg/libopenldap.control b/openwrt/package/openldap/ipkg/libopenldap.control
deleted file mode 100644
index 84b145f58b..0000000000
--- a/openwrt/package/openldap/ipkg/libopenldap.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libopenldap
-Priority: optional
-Section: libs
-Description: OpenLDAP (Lightweight Directory Access Protocol) client libraries
-Depends: libopenssl, libsasl2
diff --git a/openwrt/package/openldap/ipkg/openldap-utils.control b/openwrt/package/openldap/ipkg/openldap-utils.control
deleted file mode 100644
index 3a515c69f5..0000000000
--- a/openwrt/package/openldap/ipkg/openldap-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openldap-utils
-Priority: optional
-Section: admin
-Description: OpenLDAP (Lightweight Directory Access Protocol) client utilities
-Depends: libopenldap, libopenssl, libsasl2
diff --git a/openwrt/package/openldap/patches/500-cross-compile.patch b/openwrt/package/openldap/patches/500-cross-compile.patch
deleted file mode 100644
index d0aafdcd76..0000000000
--- a/openwrt/package/openldap/patches/500-cross-compile.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN openldap-2.2.26-orig/libraries/liblunicode/Makefile.in openldap-2.2.26-1/libraries/liblunicode/Makefile.in
---- openldap-2.2.26-orig/libraries/liblunicode/Makefile.in 2005-01-20 18:01:03.000000000 +0100
-+++ openldap-2.2.26-1/libraries/liblunicode/Makefile.in 2005-05-08 15:47:08.000000000 +0200
-@@ -29,7 +29,7 @@
- LDAP_INCDIR= ../../include
- LDAP_LIBDIR= ../../libraries
-
--ucgendat: $(XLIBS) ucgendat.o
-+ucgendat: ucgendat.o
- $(LTLINK) -o $@ ucgendat.o $(LIBS)
- ./ucgendat $(srcdir)/UnicodeData.txt -x $(srcdir)/CompositionExclusions.txt
-
diff --git a/openwrt/package/openldap/patches/750-no-strip.patch b/openwrt/package/openldap/patches/750-no-strip.patch
deleted file mode 100644
index d472fd87f1..0000000000
--- a/openwrt/package/openldap/patches/750-no-strip.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff -ruN openldap-2.2.26-orig/clients/tools/Makefile.in openldap-2.2.26-1/clients/tools/Makefile.in
---- openldap-2.2.26-orig/clients/tools/Makefile.in 2005-01-20 18:00:55.000000000 +0100
-+++ openldap-2.2.26-1/clients/tools/Makefile.in 2005-05-08 15:47:08.000000000 +0200
-@@ -98,7 +98,7 @@
- -$(MKDIR) $(DESTDIR)$(bindir)
- @( \
- for prg in $(PROGRAMS); do \
-- $(LTINSTALL) $(INSTALLFLAGS) -s -m 755 $$prg$(EXEEXT) \
-+ $(LTINSTALL) $(INSTALLFLAGS) -m 755 $$prg$(EXEEXT) \
- $(DESTDIR)$(bindir); \
- done \
- )
-diff -ruN openldap-2.2.26-orig/servers/slapd/Makefile.in openldap-2.2.26-1/servers/slapd/Makefile.in
---- openldap-2.2.26-orig/servers/slapd/Makefile.in 2005-01-20 18:01:05.000000000 +0100
-+++ openldap-2.2.26-1/servers/slapd/Makefile.in 2005-05-08 15:47:08.000000000 +0200
-@@ -355,7 +355,7 @@
- install-slapd: FORCE
- -$(MKDIR) $(DESTDIR)$(libexecdir)
- -$(MKDIR) $(DESTDIR)$(localstatedir)/run
-- $(LTINSTALL) $(INSTALLFLAGS) -s -m 755 \
-+ $(LTINSTALL) $(INSTALLFLAGS) -m 755 \
- slapd$(EXEEXT) $(DESTDIR)$(libexecdir)
- @for i in $(SUBDIRS); do \
- if test -d $$i -a -f $$i/Makefile ; then \
-diff -ruN openldap-2.2.26-orig/servers/slurpd/Makefile.in openldap-2.2.26-1/servers/slurpd/Makefile.in
---- openldap-2.2.26-orig/servers/slurpd/Makefile.in 2005-01-20 18:01:19.000000000 +0100
-+++ openldap-2.2.26-1/servers/slurpd/Makefile.in 2005-05-08 15:47:08.000000000 +0200
-@@ -60,7 +60,7 @@
- @-$(INSTALL) -m 700 -d $(DESTDIR)$(localstatedir)/openldap-slurp
- @( \
- for prg in $(PROGRAMS); do \
-- $(LTINSTALL) $(INSTALLFLAGS) -s -m 755 $$prg$(EXEEXT) \
-+ $(LTINSTALL) $(INSTALLFLAGS) -m 755 $$prg$(EXEEXT) \
- $(DESTDIR)$(libexecdir); \
- done \
- )
diff --git a/openwrt/package/openntpd/Config.in b/openwrt/package/openntpd/Config.in
deleted file mode 100644
index 696e04f723..0000000000
--- a/openwrt/package/openntpd/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_OPENNTPD
- prompt "openntpd.......................... A free and easy to use NTP (Network Time Protocol) implementation"
- tristate
- default m if CONFIG_DEVEL
- help
- NTP server
-
- http://www.openntpd.org/
-
diff --git a/openwrt/package/openntpd/Makefile b/openwrt/package/openntpd/Makefile
deleted file mode 100644
index ed19c18d1d..0000000000
--- a/openwrt/package/openntpd/Makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=openntpd
-PKG_VERSION:=3.7p1
-PKG_RELEASE:=1
-PKG_MD5SUM:=10ed8eefd760e5819efcf3277b118f47
-
-# space separated list or special @SF for sourceforge projects
-PKG_SOURCE_URL:=ftp://ftp.openbsd.org/pub/OpenBSD/OpenNTPD/ \
- ftp://ftp.de.openbsd.org/pub/unix/OpenBSD/OpenNTPD/ \
- ftp://ftp.fr.openbsd.org/pub/OpenBSD/OpenNTPD/ \
- ftp://ftp.sunet.se/pub/OpenBSD/OpenNTPD/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,OPENNTPD,openntpd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --with-builtin-arc4random \
- --with-privsep-user=ntp \
- --with-adjtimex \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -DUSE_ADJTIMEX"
- touch $@
-
-$(IPKG_OPENNTPD):
- install -d -m0755 $(IDIR_OPENNTPD)/etc
- install -m0644 ./files/ntpd.conf $(IDIR_OPENNTPD)/etc/
- install -d -m0755 $(IDIR_OPENNTPD)/etc/init.d
- install -m0755 ./files/ntpd.init $(IDIR_OPENNTPD)/etc/init.d/S55ntpd
- install -d -m0755 $(IDIR_OPENNTPD)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/ntpd $(IDIR_OPENNTPD)/usr/sbin/
- $(RSTRIP) $(IDIR_OPENNTPD)
- $(IPKG_BUILD) $(IDIR_OPENNTPD) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/openntpd/files/ntpd.conf b/openwrt/package/openntpd/files/ntpd.conf
deleted file mode 100644
index 6993b8eba2..0000000000
--- a/openwrt/package/openntpd/files/ntpd.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-# use a random selection of 8 public stratum 2 servers
-# see http://twiki.ntp.org/bin/view/Servers/NTPPoolServers
-servers pool.ntp.org
diff --git a/openwrt/package/openntpd/files/ntpd.init b/openwrt/package/openntpd/files/ntpd.init
deleted file mode 100644
index 8bac705b4a..0000000000
--- a/openwrt/package/openntpd/files/ntpd.init
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-mkdir -p `awk -F: '/^ntp:/{print $6}' /etc/passwd`
-/usr/sbin/ntpd -s
diff --git a/openwrt/package/openntpd/ipkg/openntpd.conffiles b/openwrt/package/openntpd/ipkg/openntpd.conffiles
deleted file mode 100644
index 81306c3c97..0000000000
--- a/openwrt/package/openntpd/ipkg/openntpd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/ntpd.conf
diff --git a/openwrt/package/openntpd/ipkg/openntpd.control b/openwrt/package/openntpd/ipkg/openntpd.control
deleted file mode 100644
index 05e16a888d..0000000000
--- a/openwrt/package/openntpd/ipkg/openntpd.control
+++ /dev/null
@@ -1,7 +0,0 @@
-Package: openntpd
-Priority: optional
-Section: net
-Description: OpenNTPD is a FREE, easy to use implementation of NTP
- (the Network Time Protocol). It provides the ability to sync the
- local clock to remote NTP servers and can act as NTP server itself,
- redistributing the local clock.
diff --git a/openwrt/package/openntpd/ipkg/openntpd.postinst b/openwrt/package/openntpd/ipkg/openntpd.postinst
deleted file mode 100644
index 4b2ffe9df6..0000000000
--- a/openwrt/package/openntpd/ipkg/openntpd.postinst
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-
-name=ntp
-id=50
-
-# do not change below
-# check if we are on real system
-if [ -z "${IPKG_INSTROOT}" ]; then
- # create copies of passwd and group, if we use squashfs
- rootfs=`mount |awk '/root/ { print $5 }'`
- if [ "$rootfs" = "squashfs" ]; then
- if [ -h /etc/group ]; then
- rm /etc/group
- cp -p /rom/etc/group /etc/group
- fi
- if [ -h /etc/passwd ]; then
- rm /etc/passwd
- cp -p /rom/etc/passwd /etc/passwd
- fi
- fi
-fi
-
-echo ""
-if [ -z "$(grep ^\\${name}: ${IPKG_INSTROOT}/etc/group)" ]; then
- echo "adding group $name to /etc/group"
- echo "${name}:x:${id}:" >> ${IPKG_INSTROOT}/etc/group
-fi
-
-if [ -z "$(grep ^\\${name}: ${IPKG_INSTROOT}/etc/passwd)" ]; then
- echo "adding user $name to /etc/passwd"
- echo "${name}:x:${id}:${id}:${name}:/tmp/.${name}:/bin/false" >> ${IPKG_INSTROOT}/etc/passwd
-fi
-
-grep -q '^ntp[[:space:]]*123/udp' ${IPKG_INSTROOT}/etc/services 2>/dev/null
-[ $? -ne 0 ] && echo "ntp 123/udp" >>${IPKG_INSTROOT}/etc/services
diff --git a/openwrt/package/openntpd/patches/01-adjtimex_linux.patch b/openwrt/package/openntpd/patches/01-adjtimex_linux.patch
deleted file mode 100644
index 4841e123fa..0000000000
--- a/openwrt/package/openntpd/patches/01-adjtimex_linux.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-diff -urN openntpd-3.7p1.orig/client.c openntpd-3.7p1/client.c
---- openntpd-3.7p1.orig/client.c 2005-03-13 13:36:38.000000000 +0100
-+++ openntpd-3.7p1/client.c 2006-02-23 16:27:53.686827824 +0100
-@@ -306,7 +306,7 @@
- priv_adjtime();
-
- for (i = 0; i < OFFSET_ARRAY_SIZE; i++)
-- if (p->reply[i].rcvd <= p->reply[best].rcvd)
-+ /* if (p->reply[i].rcvd <= p->reply[best].rcvd) */
- p->reply[i].good = 0;
-
- return (0);
-diff -urN openntpd-3.7p1.orig/configure.ac openntpd-3.7p1/configure.ac
---- openntpd-3.7p1.orig/configure.ac 2005-05-23 13:11:08.000000000 +0200
-+++ openntpd-3.7p1/configure.ac 2006-02-23 16:27:53.688827520 +0100
-@@ -466,6 +466,11 @@
- [ builtin_arc4random=$withval ]
- )
-
-+AC_ARG_WITH(adjtimex,
-+ [ --with-adjtimex Use adjtimex to adjust kernel skew],
-+ [ AC_DEFINE(USE_ADJTIMEX, [], [Use adjust skew with adjtimex (experimental)]) ]
-+)
-+
- # Search for OpenSSL if required.
- if test "$ac_cv_func_arc4random" != "yes" && test "x$builtin_arc4random" != "xyes"; then
- saved_CPPFLAGS="$CPPFLAGS"
-diff -urN openntpd-3.7p1.orig/defines.h openntpd-3.7p1/defines.h
---- openntpd-3.7p1.orig/defines.h 2005-05-23 02:16:33.000000000 +0200
-+++ openntpd-3.7p1/defines.h 2006-02-23 16:27:53.688827520 +0100
-@@ -20,6 +20,10 @@
- # define setproctitle(x)
- #endif
-
-+#ifdef USE_ADJTIMEX
-+# define adjtime(a,b) (_compat_adjtime((a),(b)))
-+#endif
-+
- #if !defined(SA_LEN)
- # if defined(HAVE_STRUCT_SOCKADDR_SA_LEN)
- # define SA_LEN(x) ((x)->sa_len)
-diff -urN openntpd-3.7p1.orig/openbsd-compat/Makefile.in openntpd-3.7p1/openbsd-compat/Makefile.in
---- openntpd-3.7p1.orig/openbsd-compat/Makefile.in 2004-12-20 00:41:36.000000000 +0100
-+++ openntpd-3.7p1/openbsd-compat/Makefile.in 2006-02-23 16:27:53.901795144 +0100
-@@ -9,7 +9,7 @@
- OPENBSD= asprintf.o daemon.o inet_pton.o strlcpy.o
- COMPAT= atomicio.o bsd-arc4random.o bsd-misc.o bsd-poll.o \
- bsd-snprintf.o fake-rfc2553.o uidswap.o
--PORT= port-qnx.o
-+PORT= port-linux.o port-qnx.o
-
- VPATH=@srcdir@
- CC=@CC@
-diff -urN openntpd-3.7p1.orig/openbsd-compat/openbsd-compat.h openntpd-3.7p1/openbsd-compat/openbsd-compat.h
---- openntpd-3.7p1.orig/openbsd-compat/openbsd-compat.h 2004-12-19 04:04:22.000000000 +0100
-+++ openntpd-3.7p1/openbsd-compat/openbsd-compat.h 2006-02-23 16:27:53.948788000 +0100
-@@ -44,6 +44,11 @@
- __attribute__((__format__ (printf, 2, 3)));
- #endif
-
-+#ifdef USE_ADJTIMEX
-+# include <sys/time.h>
-+int _compat_adjtime(const struct timeval *, struct timeval *);
-+#endif
-+
- #ifndef HAVE_INET_PTON
- int inet_pton(int, const char *, void *);
- #endif
-diff -urN openntpd-3.7p1.orig/openbsd-compat/port-linux.c openntpd-3.7p1/openbsd-compat/port-linux.c
---- openntpd-3.7p1.orig/openbsd-compat/port-linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ openntpd-3.7p1/openbsd-compat/port-linux.c 2006-02-23 16:27:53.996780704 +0100
-@@ -0,0 +1,105 @@
-+/* $Id$ */
-+
-+/*
-+ * Copyright (c) 2004 Darren Tucker <dtucker at zip com au>
-+ *
-+ * Permission to use, copy, modify, and distribute this software for any
-+ * purpose with or without fee is hereby granted, provided that the above
-+ * copyright notice and this permission notice appear in all copies.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-+ * ANY SPECIAL, DIRECT, 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.
-+ */
-+
-+#include "includes.h"
-+
-+#ifdef USE_ADJTIMEX
-+#include <sys/timex.h>
-+#include <errno.h>
-+#ifdef adjtime
-+# undef adjtime
-+#endif
-+
-+#include "ntpd.h"
-+
-+/* scale factor used by adjtimex freq param. 1 ppm = 65536 */
-+#define ADJTIMEX_FREQ_SCALE 65536
-+
-+/* maximum change to skew per adjustment, in PPM */
-+#define MAX_SKEW_DELTA 5.0
-+
-+int
-+_compat_adjtime(const struct timeval *delta, struct timeval *olddelta)
-+{
-+ static struct timeval tlast = {0,0};
-+ static double tskew = 0;
-+ static int synced = -1;
-+ struct timeval tnow, tdelta;
-+ double skew = 0, newskew, deltaskew, adjust, interval = 0;
-+ struct timex tmx;
-+ int result, saved_errno;
-+
-+ gettimeofday(&tnow, NULL);
-+ adjust = (double)delta->tv_sec;
-+ adjust += (double)delta->tv_usec / 1000000;
-+
-+ /* Even if the caller doesn't care about the olddelta, we do */
-+ if (olddelta == NULL)
-+ olddelta = &tdelta;
-+
-+ result = adjtime(delta, olddelta);
-+ saved_errno = errno;
-+
-+ if (olddelta->tv_sec == 0 && olddelta->tv_usec == 0 &&
-+ synced != INT_MAX)
-+ synced++;
-+ else
-+ synced = 0;
-+
-+ /*
-+ * do skew calculations if we have synced
-+ */
-+ if (synced == 0 ) {
-+ tmx.modes = 0;
-+ if (adjtimex(&tmx) == -1)
-+ log_warn("adjtimex get failed");
-+ else
-+ tskew = (double)tmx.freq / ADJTIMEX_FREQ_SCALE;
-+ } else if (synced >= 1) {
-+ interval = (double)(tnow.tv_sec - tlast.tv_sec);
-+ interval += (double)(tnow.tv_usec - tlast.tv_usec) / 1000000;
-+
-+ skew = (adjust * 1000000) / interval;
-+ newskew = ((tskew * synced) + skew) / synced;
-+ deltaskew = newskew - tskew;
-+
-+ if (deltaskew > MAX_SKEW_DELTA) {
-+ log_info("skew change %0.3lf exceeds limit", deltaskew);
-+ tskew += MAX_SKEW_DELTA;
-+ } else if (deltaskew < -MAX_SKEW_DELTA) {
-+ log_info("skew change %0.3lf exceeds limit", deltaskew);
-+ tskew -= MAX_SKEW_DELTA;
-+ } else {
-+ tskew = newskew;
-+ }
-+
-+ /* Adjust the kernel skew. */
-+ tmx.freq = (long)(tskew * ADJTIMEX_FREQ_SCALE);
-+ tmx.modes = ADJ_FREQUENCY;
-+ if (adjtimex(&tmx) == -1)
-+ log_warn("adjtimex set freq failed");
-+ }
-+
-+ log_debug("interval %0.3lf skew %0.3lf total skew %0.3lf", interval,
-+ skew, tskew);
-+
-+ tlast = tnow;
-+ errno = saved_errno;
-+ return result;
-+}
-+#endif
diff --git a/openwrt/package/openser/Config.in b/openwrt/package/openser/Config.in
deleted file mode 100644
index 26fc108da1..0000000000
--- a/openwrt/package/openser/Config.in
+++ /dev/null
@@ -1,239 +0,0 @@
-menu "openser........................... Configurable, free SIP server"
-
-config BR2_PACKAGE_OPENSER
- prompt "openser........................... Configurable, free SIP server"
- tristate
- default m if CONFIG_DEVEL
- help
- Open SIP Express Router (OpenSER) is a high-performance,
- configurable, free SIP server.
-
-config BR2_PACKAGE_OPENSER_MOD_AUTH
- prompt "openser-mod-auth................ Authentication support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable authentication support
-
-config BR2_PACKAGE_OPENSER_MOD_AUTH_DB
- prompt "openser-mod-auth-db........... Authentication with database support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER_MOD_AUTH
- help
- Enable authentication with database support
-
-config BR2_PACKAGE_OPENSER_MOD_AUTH_RADIUS
- prompt "openser-mod-auth-radius....... Authentication with RADIUS support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER_MOD_AUTH
- select BR2_PACKAGE_LIBRADIUSCLIENT_NG
- help
- Authentication against RADIUS
-
-config BR2_PACKAGE_OPENSER_MOD_AVP_RADIUS
- prompt "openser-mod-avp-radius.......... AVP with RADIUS support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- select BR2_PACKAGE_LIBRADIUSCLIENT_NG
- help
- Enable AVP with RADIUS support
-
-config BR2_PACKAGE_OPENSER_MOD_AVPOPS
- prompt "openser-mod-avpops.............. AVP options support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable AVP options support
-
-config BR2_PACKAGE_OPENSER_MOD_DISPATCHER
- prompt "openser-mod-dispatcher.......... dispatcher support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable dispatcher options support
-
-config BR2_PACKAGE_OPENSER_MOD_DIVERSION
- prompt "openser-mod-diversion........... diversion support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable diversion options support
-
-config BR2_PACKAGE_OPENSER_MOD_FLATSTORE
- prompt "openser-mod-flatstore........... flatstore support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable flatstore support
-
-config BR2_PACKAGE_OPENSER_MOD_GFLAGS
- prompt "openser-mod-gflags.............. gflags support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable GFlags support
-
-config BR2_PACKAGE_OPENSER_MOD_GROUP
- prompt "openser-mod-group............... group support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable group support
-
-config BR2_PACKAGE_OPENSER_MOD_GROUP_RADIUS
- prompt "openser-mod-group-radius........ group with RADIUS support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable group with RADIUS support
-
-config BR2_PACKAGE_OPENSER_MOD_LCR
- prompt "openser-mod-lcr................. Least Cost Routing support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- select BR2_PACKAGE_OPENSER_MOD_MYSQL
- help
- Enable Least Cost Routing support
-
-config BR2_PACKAGE_OPENSER_MOD_MEDIAPROXY
- prompt "openser-mod-mediaproxy.......... Mediaproxy support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable mediaproxy support
-
-config BR2_PACKAGE_OPENSER_MOD_MSILO
- prompt "openser-mod-msilo............... MSilo support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable msilo support
-
-config BR2_PACKAGE_OPENSER_MOD_MYSQL
- prompt "openser-mod-mysql............... MySQL support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- select BR2_PACKAGE_LIBMYSQLCLIENT
- help
- Enable MySQL support
-
-config BR2_PACKAGE_OPENSER_MOD_NATHELPER
- prompt "openser-mod-nathelper........... NAT helper support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- NAT helper support
-
-config BR2_PACKAGE_OPENSER_MOD_OPTIONS
- prompt "openser-mod-options............. options support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable options support
-
-config BR2_PACKAGE_OPENSER_MOD_PDT
- prompt "openser-mod-pdt................. PDT support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable pdt support
-
-config BR2_PACKAGE_OPENSER_MOD_PERMISSIONS
- prompt "openser-mod-permissions......... Permissions support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable permissions support
-
-config BR2_PACKAGE_OPENSER_MOD_PIKE
- prompt "openser-mod-pike................ PIKE support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable pike support
-
-config BR2_PACKAGE_OPENSER_MOD_SMS
- prompt "openser-mod-sms................. SMS support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- SMS support
-
-config BR2_PACKAGE_OPENSER_MOD_SPEEDDIAL
- prompt "openser-mod-speeddial........... Speed Dial support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Speed Dial support
-
-config BR2_PACKAGE_OPENSER_MOD_UAC
- prompt "openser-mod-uac................. UAC support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable UAC support
-
-config BR2_PACKAGE_OPENSER_MOD_UAC_REDIRECT
- prompt "openser-mod-uac................. UAC redirect support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable UAC redirect support
-
-config BR2_PACKAGE_OPENSER_MOD_URI
- prompt "openser-mod-uri................. URI support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable URI support
-
-config BR2_PACKAGE_OPENSER_MOD_URI_DB
- prompt "openser-mod-uri-db.............. URI database support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable URI database support
-
-config BR2_PACKAGE_OPENSER_MOD_URI_RADIUS
- prompt "openser-mod-uri-radius.......... URI with RADIUS support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Enable URI with RADIUS support
-
-config BR2_PACKAGE_OPENSER_MOD_XLOG
- prompt "openser-mod-xlog................ Logging support"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSER
- help
- Logging support
-
-endmenu
diff --git a/openwrt/package/openser/Makefile b/openwrt/package/openser/Makefile
deleted file mode 100644
index 72a8fe3a43..0000000000
--- a/openwrt/package/openser/Makefile
+++ /dev/null
@@ -1,127 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=openser
-PKG_VERSION:=1.0.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=eebc16665003ee92daf96b216d6f9563
-# PKG_VARIANT:=-tls # for tls version
-PKG_VARIANT:=
-
-PKG_SOURCE_URL:=http://openser.org/pub/openser/$(PKG_VERSION)/src
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)$(PKG_VARIANT)_src.tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-define PKG_mod_template
-
-$$(IPKG_$(1)):
- [ -z "$(2)" ] || install -d -m 0755 $$(IDIR_$(1))/usr/lib/openser/modules/
- $(CP) $(PKG_BUILD_DIR)/modules/$(2)/$(2).so \
- $$(IDIR_$(1))/usr/lib/openser/modules/ ; \
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-$(eval $(call PKG_template,OPENSER,openser,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_ACCOUNTING,openser-mod-acc,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_AUTH,openser-mod-auth,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_AUTH_DB,openser-mod-auth-db,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_AUTH_RADIUS,openser-mod-auth-radius,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_AVP_RADIUS,openser-mod-avp-radius,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_AVPOPS,openser-mod-avpops,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_DISPATCHER,openser-mod-dispatcher,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_DIVERSION,openser-mod-diversion,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_FLATSTORE,openser-mod-flatstore,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_GFLAGS,openser-mod-gflags,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_GROUP,openser-mod-group,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_GROUP_RADIUS,openser-mod-group-radius,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_LCR,openser-mod-lcr,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_MEDIAPROXY,openser-mod-mediaproxy,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_MSILO,openser-mod-msilo,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_MYSQL,openser-mod-mysql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_NATHELPER,openser-mod-nathelper,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_OPTIONS,openser-mod-options,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_PDT,openser-mod-pdt,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_PERMISSIONS,openser-mod-permissions,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_PIKE,openser-mod-pike,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_SMS,openser-mod-sms,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_UAC,openser-mod-uac,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_UAC_REDIRECT,openser-mod-uac-redirect,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_URI,openser-mod-uri,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_URI_DB,openser-mod-uri-db,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_URI_RADIUS,openser-mod-uri-radius,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSER_MOD_XLOG,openser-mod-xlog,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_mod_template,OPENSER_MOD_ACCOUNTING,acc))
-$(eval $(call PKG_mod_template,OPENSER_MOD_AUTH,auth))
-$(eval $(call PKG_mod_template,OPENSER_MOD_AUTH_DB,auth_db))
-$(eval $(call PKG_mod_template,OPENSER_MOD_AUTH_RADIUS,auth_radius))
-$(eval $(call PKG_mod_template,OPENSER_MOD_AVP_RADIUS,avp_radius))
-$(eval $(call PKG_mod_template,OPENSER_MOD_AVPOPS,avpops))
-$(eval $(call PKG_mod_template,OPENSER_MOD_DISPATCHER,dispatcher))
-$(eval $(call PKG_mod_template,OPENSER_MOD_DIVERSION,diversion))
-$(eval $(call PKG_mod_template,OPENSER_MOD_FLATSTORE,flatstore))
-$(eval $(call PKG_mod_template,OPENSER_MOD_GFLAGS,gflags))
-$(eval $(call PKG_mod_template,OPENSER_MOD_GROUP,group))
-$(eval $(call PKG_mod_template,OPENSER_MOD_GROUP_RADIUS,group_radius))
-$(eval $(call PKG_mod_template,OPENSER_MOD_LCR,lcr))
-$(eval $(call PKG_mod_template,OPENSER_MOD_MEDIAPROXY,mediaproxy))
-$(eval $(call PKG_mod_template,OPENSER_MOD_MSILO,msilo))
-$(eval $(call PKG_mod_template,OPENSER_MOD_MYSQL,mysql))
-$(eval $(call PKG_mod_template,OPENSER_MOD_NATHELPER,nathelper))
-$(eval $(call PKG_mod_template,OPENSER_MOD_OPTIONS,options))
-$(eval $(call PKG_mod_template,OPENSER_MOD_PDT,pdt))
-$(eval $(call PKG_mod_template,OPENSER_MOD_PERMISSIONS,permissions))
-$(eval $(call PKG_mod_template,OPENSER_MOD_PIKE,pike))
-$(eval $(call PKG_mod_template,OPENSER_MOD_SMS,sms))
-$(eval $(call PKG_mod_template,OPENSER_MOD_SPEEDIAL,speeddial))
-$(eval $(call PKG_mod_template,OPENSER_MOD_UAC,uac))
-$(eval $(call PKG_mod_template,OPENSER_MOD_UAC_REDIRECT,uac_redirect))
-$(eval $(call PKG_mod_template,OPENSER_MOD_URI,uri))
-$(eval $(call PKG_mod_template,OPENSER_MOD_URI_DB,uri_db))
-$(eval $(call PKG_mod_template,OPENSER_MOD_URI_RADIUS,uri_radius))
-$(eval $(call PKG_mod_template,OPENSER_MOD_XLOG,xlog))
-
-# Select here the modules for the ipk package
-OPENSER_MODULES := sl tm rr maxfwd usrloc registrar dbtext textops exec
-
-OPENSER_MODULE_FILES := $(foreach module,$(OPENSER_MODULES),modules/$(module)/$(module).so)
-OPENSER_MODULES := $(patsubst %,modules/%,$(OPENSER_MODULES))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- prefix=/ \
- extra_defs="-DUSE_PTHREAD_MUTEX " \
- CC="$(TARGET_CC)" \
- ARCH="$(ARCH)" \
- CFLAGS="$(TARGET_CFLAGS)" \
- LOCALBASE="$(STAGING_DIR)/usr" \
- all utils/gen_ha1/gen_ha1
- touch $@
-
-$(IPKG_OPENSER):
- mkdir -p $(IDIR_OPENSER)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME) $(IDIR_OPENSER)/usr/sbin/
- $(CP) $(PKG_BUILD_DIR)/utils/gen_ha1/gen_ha1 $(IDIR_OPENSER)/usr/sbin/openser_gen_ha1
- $(CP) $(PKG_BUILD_DIR)/scripts/sc $(IDIR_OPENSER)/usr/sbin/openserctl
- chmod 744 $(IDIR_OPENSER)/usr/sbin/openserctl
- $(CP) $(PKG_BUILD_DIR)/scripts/sc.dbtext $(IDIR_OPENSER)/usr/sbin/dbtextctl
- chmod 744 $(IDIR_OPENSER)/usr/sbin/dbtextctl
- mkdir -p $(IDIR_OPENSER)/usr/lib/openser/modules
- (cd $(PKG_BUILD_DIR);\
- $(CP) $(OPENSER_MODULE_FILES) $(IDIR_OPENSER)/usr/lib/openser/modules/; \
- )
- mkdir -p $(IDIR_OPENSER)/etc/openser
- $(CP) $(PKG_BUILD_DIR)/etc/openser.cfg $(IDIR_OPENSER)/etc/openser/
- $(RSTRIP) $(IDIR_OPENSER)
- $(IPKG_BUILD) $(IDIR_OPENSER) $(PACKAGE_DIR)
diff --git a/openwrt/package/openser/ipkg/openser-mod-acc.control b/openwrt/package/openser/ipkg/openser-mod-acc.control
deleted file mode 100644
index 43b2e581c3..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-acc.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-acc
-Depends: openser, libradiusclient-ng
-Section: net
-Priority: optional
-Description: accounting support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-auth-db.control b/openwrt/package/openser/ipkg/openser-mod-auth-db.control
deleted file mode 100644
index 9b6878903e..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-auth-db.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-auth-db
-Depends: openser, libmysqlclient
-Section: net
-Priority: optional
-Description: authentication support against database for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-auth-radius.control b/openwrt/package/openser/ipkg/openser-mod-auth-radius.control
deleted file mode 100644
index dbcdcabadb..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-auth-radius.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-auth-radius
-Depends: openser, libradiusclient-ng
-Section: net
-Priority: optional
-Description: authentication support against RADIUS for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-auth.control b/openwrt/package/openser/ipkg/openser-mod-auth.control
deleted file mode 100644
index 4877347fa7..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-auth.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-auth
-Depends: openser
-Section: net
-Priority: optional
-Description: authentication support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-avp-radius.control b/openwrt/package/openser/ipkg/openser-mod-avp-radius.control
deleted file mode 100644
index 1f0979791f..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-avp-radius.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-avp-radius
-Depends: openser
-Section: net
-Priority: optional
-Description: avp_radius support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-avp_radius.control b/openwrt/package/openser/ipkg/openser-mod-avp_radius.control
deleted file mode 100644
index 5736697890..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-avp_radius.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-avp_radius
-Depends: openser
-Section: net
-Priority: optional
-Description: avp_radius support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-avpops.control b/openwrt/package/openser/ipkg/openser-mod-avpops.control
deleted file mode 100644
index f88d54d4bc..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-avpops.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-avpops
-Depends: openser
-Section: net
-Priority: optional
-Description: AVPOPS support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-dispatcher.control b/openwrt/package/openser/ipkg/openser-mod-dispatcher.control
deleted file mode 100644
index eabfd6d016..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-dispatcher.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-dispatcher
-Depends: openser
-Section: net
-Priority: optional
-Description: dispatcher support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-diversion.control b/openwrt/package/openser/ipkg/openser-mod-diversion.control
deleted file mode 100644
index bcf4011473..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-diversion.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-diversion
-Depends: openser
-Section: net
-Priority: optional
-Description: diversion support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-flatstore.control b/openwrt/package/openser/ipkg/openser-mod-flatstore.control
deleted file mode 100644
index 96e0835c11..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-flatstore.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-flatstore
-Depends: openser
-Section: net
-Priority: optional
-Description: flatstore support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-gflags.control b/openwrt/package/openser/ipkg/openser-mod-gflags.control
deleted file mode 100644
index ce99494348..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-gflags.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-gflags
-Depends: openser
-Section: net
-Priority: optional
-Description: gflags support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-group-radius.control b/openwrt/package/openser/ipkg/openser-mod-group-radius.control
deleted file mode 100644
index bb5fbed30b..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-group-radius.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-group-radius
-Depends: openser
-Section: net
-Priority: optional
-Description: group_radius support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-group.control b/openwrt/package/openser/ipkg/openser-mod-group.control
deleted file mode 100644
index b7c1130db9..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-group.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-group
-Depends: openser
-Section: net
-Priority: optional
-Description: group support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-group_radius.control b/openwrt/package/openser/ipkg/openser-mod-group_radius.control
deleted file mode 100644
index bf47826e57..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-group_radius.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-group_radius
-Depends: openser
-Section: net
-Priority: optional
-Description: group_radius support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-lcr.control b/openwrt/package/openser/ipkg/openser-mod-lcr.control
deleted file mode 100644
index 92541b9bd2..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-lcr.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-lcr
-Depends: openser
-Section: net
-Priority: optional
-Description: Least Cost Routing support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-mediaproxy.control b/openwrt/package/openser/ipkg/openser-mod-mediaproxy.control
deleted file mode 100644
index f5172ba7be..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-mediaproxy.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-mediaproxy
-Depends: openser
-Section: net
-Priority: optional
-Description: mediaproxy support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-msilo.control b/openwrt/package/openser/ipkg/openser-mod-msilo.control
deleted file mode 100644
index 215701e99c..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-msilo.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-msilo
-Depends: openser
-Section: net
-Priority: optional
-Description: msilo support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-mysql.control b/openwrt/package/openser/ipkg/openser-mod-mysql.control
deleted file mode 100644
index 5ca3fc3dd3..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-mysql.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-mysql
-Depends: openser, libmysqlclient
-Section: net
-Priority: optional
-Description: MySQL support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-nathelper.control b/openwrt/package/openser/ipkg/openser-mod-nathelper.control
deleted file mode 100644
index dccbb0e026..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-nathelper.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-nathelper
-Depends: openser
-Section: net
-Priority: optional
-Description: NAT helper support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-options.control b/openwrt/package/openser/ipkg/openser-mod-options.control
deleted file mode 100644
index b94da0be4a..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-options.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-options
-Depends: openser
-Section: net
-Priority: optional
-Description: options support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-pdt.control b/openwrt/package/openser/ipkg/openser-mod-pdt.control
deleted file mode 100644
index 953929110d..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-pdt.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-pdt
-Depends: openser
-Section: net
-Priority: optional
-Description: pdt support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-permissions.control b/openwrt/package/openser/ipkg/openser-mod-permissions.control
deleted file mode 100644
index 302abdb995..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-permissions.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-permissions
-Depends: openser
-Section: net
-Priority: optional
-Description: permissions support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-pike.control b/openwrt/package/openser/ipkg/openser-mod-pike.control
deleted file mode 100644
index c8a2111209..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-pike.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-pike
-Depends: openser
-Section: net
-Priority: optional
-Description: pike support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-sms.control b/openwrt/package/openser/ipkg/openser-mod-sms.control
deleted file mode 100644
index 4b8547292b..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-sms.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-sms
-Depends: openser
-Section: net
-Priority: optional
-Description: SMS support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-speeddial.control b/openwrt/package/openser/ipkg/openser-mod-speeddial.control
deleted file mode 100644
index 75b2f555ad..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-speeddial.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-speeddial
-Depends: openser
-Section: net
-Priority: optional
-Description: Speed-dial support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-uac-redirect.control b/openwrt/package/openser/ipkg/openser-mod-uac-redirect.control
deleted file mode 100644
index 9a4785f995..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-uac-redirect.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-uac-redirect
-Depends: openser
-Section: net
-Priority: optional
-Description: uac_redirect support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-uac.control b/openwrt/package/openser/ipkg/openser-mod-uac.control
deleted file mode 100644
index 957bbaaa1c..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-uac.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-uac
-Depends: openser
-Section: net
-Priority: optional
-Description: uac support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-uac_redirect.control b/openwrt/package/openser/ipkg/openser-mod-uac_redirect.control
deleted file mode 100644
index 1eb0569e1d..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-uac_redirect.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-uac_redirect
-Depends: openser
-Section: net
-Priority: optional
-Description: uac_redirect support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-uri-db.control b/openwrt/package/openser/ipkg/openser-mod-uri-db.control
deleted file mode 100644
index a48560babf..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-uri-db.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-uri-db
-Depends: openser
-Section: net
-Priority: optional
-Description: uri_db support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-uri-radius.control b/openwrt/package/openser/ipkg/openser-mod-uri-radius.control
deleted file mode 100644
index 55f1b2a915..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-uri-radius.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-uri-radius
-Depends: openser
-Section: net
-Priority: optional
-Description: uri_radius support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-uri.control b/openwrt/package/openser/ipkg/openser-mod-uri.control
deleted file mode 100644
index ab9e33d986..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-uri.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-uri
-Depends: openser
-Section: net
-Priority: optional
-Description: uri support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-uri_db.control b/openwrt/package/openser/ipkg/openser-mod-uri_db.control
deleted file mode 100644
index 1fa05d11fc..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-uri_db.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-uri_db
-Depends: openser
-Section: net
-Priority: optional
-Description: uri_db support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-uri_radius.control b/openwrt/package/openser/ipkg/openser-mod-uri_radius.control
deleted file mode 100644
index 070bd3087e..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-uri_radius.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-uri_radius
-Depends: openser
-Section: net
-Priority: optional
-Description: uri_radius support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser-mod-xlog.control b/openwrt/package/openser/ipkg/openser-mod-xlog.control
deleted file mode 100644
index 81483d295f..0000000000
--- a/openwrt/package/openser/ipkg/openser-mod-xlog.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openser-mod-xlog
-Depends: openser
-Section: net
-Priority: optional
-Description: Xlog targets support for OpenSER
diff --git a/openwrt/package/openser/ipkg/openser.conffiles b/openwrt/package/openser/ipkg/openser.conffiles
deleted file mode 100644
index edd06eb71e..0000000000
--- a/openwrt/package/openser/ipkg/openser.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/openser/openser.cfg
diff --git a/openwrt/package/openser/ipkg/openser.control b/openwrt/package/openser/ipkg/openser.control
deleted file mode 100644
index 65a6a0f389..0000000000
--- a/openwrt/package/openser/ipkg/openser.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: openser
-Section: net
-Priority: optional
-Description: OpenSER is a high-performance, configurable, free SIP server.
diff --git a/openwrt/package/openser/patches/Makefile.defs.patch b/openwrt/package/openser/patches/Makefile.defs.patch
deleted file mode 100644
index a7275bdd06..0000000000
--- a/openwrt/package/openser/patches/Makefile.defs.patch
+++ /dev/null
@@ -1,71 +0,0 @@
---- openser-1.0.0-tls.orig/Makefile.defs 2005-10-28 18:32:39.000000000 +0200
-+++ openser-1.0.0-tls/Makefile.defs 2006-01-15 23:40:18.391547040 +0100
-@@ -917,7 +917,7 @@
- endif
- YACC_FLAGS=-d -b cfg
- # on solaris add -lxnet (e.g. LIBS= -lxnet)
--LIBS= -lfl -ldl -lresolv
-+LIBS= -ldl -lresolv
-
-
- #os specific stuff
-@@ -955,7 +955,7 @@
- endif
- OLD_SOLARIS= $(shell echo "$(OSREL)" | \
- sed -e 's/^5\.[0-6][^0-9]*$$/yes/' )
-- LIBS+= -L$(LOCALBASE)/lib -lfl -lxnet -lnsl
-+ LIBS+= -L$(LOCALBASE)/lib -lxnet -lnsl
- ifeq ($(OLD_SOLARIS), yes)
- LIBS+=-lposix4
- else
-@@ -970,9 +970,9 @@
- ifneq ($(found_lock_method), yes)
- DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems
- found_lock_method=yes
-- LIBS= -pthread -lfl #dlopen is in libc
-+ LIBS= -pthread #dlopen is in libc
- else
-- LIBS= -lfl #dlopen is in libc
-+ LIBS= #dlopen is in libc
- endif
- YACC=yacc
- endif
-@@ -987,7 +987,7 @@
- # (symbols on openbsd are prefixed by "_")
- YACC=yacc
- # no sched_yield on openbsd unless linking with c_r (not recommended)
-- LIBS= -lfl
-+ LIBS=
- OPENBSD_IS_AOUT= $(shell echo "$(OSREL)" | \
- sed -e 's/^3\.[0-3][^0-9]*$$/yes/' |sed -e 's/^[0-2]\..*/yes/')
- # exception: on sparc openbsd 3.2 is elf and not aout
-@@ -1014,7 +1014,7 @@
- found_lock_method=yes
- endif
- YACC=yacc
-- LIBS= -lfl
-+ LIBS=
- endif
-
- # OS X support, same as freebsd
-@@ -1028,9 +1028,9 @@
- ifneq ($(found_lock_method), yes)
- DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems
- found_lock_method=yes
-- LIBS= -pthread -lfl -lresolv #dlopen is in libc
-+ LIBS= -pthread -lresolv #dlopen is in libc
- else
-- LIBS= -lfl -lresolv #dlopen is in libc
-+ LIBS= -lresolv #dlopen is in libc
- endif
- LDFLAGS= # darwin doesn't like -O2 or -E
- MOD_LDFLAGS= -bundle -bundle_loader ../../$(MAIN_NAME)
-@@ -1047,7 +1047,7 @@
-
- #add libssl if needed
- ifneq ($(TLS),)
--DEFS+= -I$(LOCALBASE)/ssl/include
-+DEFS+= -I$(LOCALBASE)/include
- LIBS+= -L$(LOCALBASE)/lib -L$(LOCALBASE)/ssl/lib -lssl -lcrypto
- endif
-
diff --git a/openwrt/package/openser/patches/cfg.lex.patch b/openwrt/package/openser/patches/cfg.lex.patch
deleted file mode 100644
index 39eacb2dec..0000000000
--- a/openwrt/package/openser/patches/cfg.lex.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- openser-1.0.0-tls.orig/cfg.lex 2005-09-02 17:34:41.000000000 +0200
-+++ openser-1.0.0-tls/cfg.lex 2006-01-05 01:34:50.279630928 +0100
-@@ -85,6 +85,10 @@
- static char* addstr(struct str_buf *, char*, int);
- static void count();
-
-+ int yywrap(void)
-+ {
-+ return 1;
-+ }
-
- %}
-
diff --git a/openwrt/package/openser/patches/config.h.patch b/openwrt/package/openser/patches/config.h.patch
deleted file mode 100644
index 45af8f1f7a..0000000000
--- a/openwrt/package/openser/patches/config.h.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- openser-1.0.0-tls.orig/config.h 2005-08-23 19:31:12.000000000 +0200
-+++ openser-1.0.0-tls/config.h 2006-01-05 01:42:14.101159800 +0100
-@@ -48,7 +48,7 @@
- #define MAX_LISTEN 16
-
- /* default number of child processes started */
--#define CHILD_NO 8
-+#define CHILD_NO 4
-
- #define RT_NO 40 /* routing tables number */
- #define FAILURE_RT_NO RT_NO /* on_failure routing tables number */
-@@ -68,10 +68,10 @@
- #define CONTENT_LENGTH "Content-Length: "
- #define CONTENT_LENGTH_LEN (sizeof(CONTENT_LENGTH)-1)
-
--#define USER_AGENT "User-Agent: OpenSer (" VERSION " (" ARCH "/" OS"))"
-+#define USER_AGENT "User-Agent: OpenSer " VERSION " (boozy.milkfish.org)"
- #define USER_AGENT_LEN (sizeof(USER_AGENT)-1)
-
--#define SERVER_HDR "Server: OpenSer (" VERSION " (" ARCH "/" OS"))"
-+#define SERVER_HDR "Server: OpenSer " VERSION " (boozy.milkfish.org)"
- #define SERVER_HDR_LEN (sizeof(SERVER_HDR)-1)
-
- #define MAX_WARNING_LEN 256
-@@ -113,7 +113,7 @@
- #define PKG_MEM_POOL_SIZE 1024*1024
-
- /*used if SH_MEM is defined*/
--#define SHM_MEM_SIZE 32
-+#define SHM_MEM_SIZE 8
-
- #define TIMER_TICK 1
-
diff --git a/openwrt/package/openser/patches/modules-build.patch b/openwrt/package/openser/patches/modules-build.patch
deleted file mode 100644
index 6e6ee00c40..0000000000
--- a/openwrt/package/openser/patches/modules-build.patch
+++ /dev/null
@@ -1,57 +0,0 @@
---- openser-1.0.1/Makefile 2006-02-15 20:52:21.000000000 +0100
-+++ openser-1.0.1.new/Makefile 2006-03-17 11:01:27.417488936 +0100
-@@ -46,8 +46,7 @@
- skip_modules?=
-
- # if not set on the cmd. line or the env, exclude this modules:
--exclude_modules?= jabber cpl-c pa postgres mysql \
-- avp_radius auth_radius group_radius uri_radius
-+exclude_modules?= jabber cpl-c pa
- # always exclude the CVS dir
- override exclude_modules+= CVS $(skip_modules)
-
-diff -urN openser-1.0.1/modules/acc/Makefile openser-1.0.1.new/modules/acc/Makefile
---- openser-1.0.1/modules/acc/Makefile 2005-09-05 21:32:02.000000000 +0200
-+++ openser-1.0.1.new/modules/acc/Makefile 2006-03-17 10:38:14.333269928 +0100
-@@ -14,8 +14,8 @@
- DEFS+=-DSQL_ACC
-
- # uncomment the next two lines if you wish to enable RADIUS accounting
--#DEFS+=-DRAD_ACC -I$(LOCALBASE)/include
--#LIBS=-L$(LOCALBASE)/lib -lradiusclient-ng
-+DEFS+=-DRAD_ACC -I$(LOCALBASE)/include
-+LIBS=-L$(LOCALBASE)/lib -lradiusclient-ng
-
- # uncomment the next two lines if you wish to enable DIAMETER accounting
- #DEFS+=-DDIAM_ACC
-diff -urN openser-1.0.1/modules/mysql/Makefile openser-1.0.1.new/modules/mysql/Makefile
---- openser-1.0.1/modules/mysql/Makefile 2005-06-13 18:47:40.000000000 +0200
-+++ openser-1.0.1.new/modules/mysql/Makefile 2006-03-17 11:12:16.218856136 +0100
-@@ -9,14 +9,12 @@
- # mysql.h locations (freebsd,openbsd solaris)
- DEFS +=-I$(LOCALBASE)/include -I$(LOCALBASE)/include/mysql \
- -I$(LOCALBASE)/mysql/include \
-- -I/usr/include/mysql
-
- # libmysqlclient locations on RH/Suse, Solaris /OpenBSD, FreeBSD
- # (Debian does the right thing and puts it in /usr/lib)
- LIBS=-L/usr/lib/mysql -L$(LOCALBASE)/lib -L$(LOCALBASE)/lib/mysql \
- -L$(LOCALBASE)/mysql/lib/mysql/ \
- -L$(LOCALBASE)/mysql/lib \
-- -L/usr/lib64/mysql \
- -lmysqlclient -lz
-
- include ../../Makefile.modules
-diff -urN openser-1.0.1/modules/postgres/Makefile openser-1.0.1.new/modules/postgres/Makefile
---- openser-1.0.1/modules/postgres/Makefile 2005-07-01 16:52:34.000000000 +0200
-+++ openser-1.0.1.new/modules/postgres/Makefile 2006-03-17 11:13:22.150832952 +0100
-@@ -7,8 +7,7 @@
- NAME=postgres.so
-
- # libpq-fe.h locations
--DEFS +=-I$(LOCALBASE)/include -I$(LOCALBASE)/pgsql/include \
-- -I/usr/include/postgresql -I/usr/include/postgresql/8.0
-+DEFS +=-I$(LOCALBASE)/include -I$(LOCALBASE)/pgsql/include -I$(LOCALBASE)/include/postgresql
- LIBS=-L$(LOCALBASE)/lib -L$(LOCALBASE)/pgsql/lib -L$(LOCALBASE)/lib/pgsql \
- -lpq
-
diff --git a/openwrt/package/openser/patches/openser.cfg.patch b/openwrt/package/openser/patches/openser.cfg.patch
deleted file mode 100644
index f26e79e731..0000000000
--- a/openwrt/package/openser/patches/openser.cfg.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- openser-1.0.0-tls.orig/etc/openser.cfg 2005-10-28 21:45:33.000000000 +0200
-+++ openser-1.0.0-tls/etc/openser.cfg 2006-01-07 01:39:01.077134312 +0100
-@@ -36,20 +36,20 @@
- # ------------------ module loading ----------------------------------
-
- # Uncomment this if you want to use SQL database
--#loadmodule "/usr/local/lib/openser/modules/mysql.so"
-+#loadmodule "/usr/lib/openser/modules/mysql.so"
-
--loadmodule "/usr/local/lib/openser/modules/sl.so"
--loadmodule "/usr/local/lib/openser/modules/tm.so"
--loadmodule "/usr/local/lib/openser/modules/rr.so"
--loadmodule "/usr/local/lib/openser/modules/maxfwd.so"
--loadmodule "/usr/local/lib/openser/modules/usrloc.so"
--loadmodule "/usr/local/lib/openser/modules/registrar.so"
--loadmodule "/usr/local/lib/openser/modules/textops.so"
-+loadmodule "/usr/lib/openser/modules/sl.so"
-+loadmodule "/usr/lib/openser/modules/tm.so"
-+loadmodule "/usr/lib/openser/modules/rr.so"
-+loadmodule "/usr/lib/openser/modules/maxfwd.so"
-+loadmodule "/usr/lib/openser/modules/usrloc.so"
-+loadmodule "/usr/lib/openser/modules/registrar.so"
-+loadmodule "/usr/lib/openser/modules/textops.so"
-
- # Uncomment this if you want digest authentication
- # mysql.so must be loaded !
--#loadmodule "/usr/local/lib/openser/modules/auth.so"
--#loadmodule "/usr/local/lib/openser/modules/auth_db.so"
-+#loadmodule "/usr/lib/openser/modules/auth.so"
-+#loadmodule "/usr/lib/openser/modules/auth_db.so"
-
- # ----------------- setting module-specific parameters ---------------
-
diff --git a/openwrt/package/openser/patches/sc.dbtext.patch b/openwrt/package/openser/patches/sc.dbtext.patch
deleted file mode 100644
index 2a1b7eab1b..0000000000
--- a/openwrt/package/openser/patches/sc.dbtext.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- openser-1.0.0-tls.orig/scripts/sc.dbtext 2005-07-29 21:05:36.000000000 +0200
-+++ openser-1.0.0-tls/scripts/sc.dbtext 2006-01-29 02:30:31.795349688 +0100
-@@ -62,6 +62,10 @@
- ##### ----------------------------------------------- #####
- #### table names
-
-+if [ -z "$SIP_DOMAIN" ] ; then
-+ SIP_DOMAIN=$(nvram get sip_domain)
-+fi
-+
- # UsrLoc Table
- if [ -z "$UL_TABLE" ] ; then
- UL_TABLE=location
-@@ -247,7 +251,7 @@
- fi
-
- if [ -z "$SERDOMAIN" ] ; then
-- echo -e "\nDomain unknown: use usernames with domain or set default domain in SIP_DOMAIN\n"
-+ echo -e "\nDomain unknown: use usernames with domain or set default domain in SIP_DOMAIN (with 'nvram set sip_domain=YOUR_SIP_DOMAIN')\n"
- exit 1
- fi
- }
diff --git a/openwrt/package/openser/patches/sc.patch b/openwrt/package/openser/patches/sc.patch
deleted file mode 100644
index 52ef9a6554..0000000000
--- a/openwrt/package/openser/patches/sc.patch
+++ /dev/null
@@ -1,41 +0,0 @@
---- openser-1.0.0-tls.orig/scripts/sc 2005-08-11 14:08:02.000000000 +0200
-+++ openser-1.0.0-tls/scripts/sc 2006-01-29 02:18:43.319054456 +0100
-@@ -48,11 +48,15 @@
- STARTOPTIONS= # for example -dddd
- fi
- if [ -z "$DIR" ] ; then
-- DIR=`dirname $0`
-+ DIR=/usr/sbin
- fi
- if [ -z "$SERBIN" ] ; then
- SERBIN=$DIR/openser
- fi
-+if [ -z "$SIP_DOMAIN" ] ; then
-+ SIP_DOMAIN=$(nvram get sip_domain)
-+fi
-+
-
- ##### ----------------------------------------------- #####
- ### openser's FIFO server
-@@ -415,7 +419,7 @@
- fi
-
- if [ -z "$SERDOMAIN" ] ; then
-- echo "domain unknown: use usernames with domain or set default domain in SIP_DOMAIN"
-+ echo "domain unknown: use usernames with domain or set default domain in SIP_DOMAIN (with 'nvram set sip_domain=YOUR_SIP_DOMAIN')"
- exit 1
- fi
- }
-@@ -671,11 +675,7 @@
- set_user $2
- fifo_cmd ul_show_contact $USRLOC_TABLE "$SERUSER@$SERDOMAIN"
- elif [ $# -eq 1 ] ; then
-- printf "Dumping all contacts may take long: are you sure you want to proceed? [Y|N] " > /dev/stderr
-- read answer
-- if [ "$answer" = "y" -o "$answer" = "Y" ] ; then
-- fifo_cmd ul_dump
-- fi
-+ fifo_cmd ul_dump
- else
- echo "wrong number of params for usrloc show"
- usage
diff --git a/openwrt/package/openssh/Config.in b/openwrt/package/openssh/Config.in
deleted file mode 100644
index 387ee51fc6..0000000000
--- a/openwrt/package/openssh/Config.in
+++ /dev/null
@@ -1,117 +0,0 @@
-menu "openssh........................... A free implementation of the Secure Shell protocol"
-
-config BR2_COMPILE_OPENSSH
- tristate
- default n
- depends BR2_PACKAGE_OPENSSH_CLIENT || BR2_PACKAGE_OPENSSH_SERVER || BR2_PACKAGE_OPENSSH_SFTP_CLIENT || BR2_PACKAGE_OPENSSH_SFTP_SERVER
-
-config BR2_PACKAGE_OPENSSH_CLIENT
- prompt "openssh-client.................... OpenSSH client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_OPENSSH
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- OpenSSH is a FREE version of the SSH protocol suite of network
- connectivity tools that increasing numbers of people on the Internet
- are coming to rely on. Many users of telnet, rlogin, ftp, and other
- such programs might not realize that their password is transmitted
- across the Internet unencrypted, but it is. OpenSSH encrypts all
- traffic (including passwords) to effectively eliminate eavesdropping,
- connection hijacking, and other network-level attacks. Additionally,
- OpenSSH provides a myriad of secure tunneling capabilities, as well
- as a variety of authentication methods.
-
- http://www.openssh.com/
-
- Depends: openssl
-
-config BR2_PACKAGE_OPENSSH_CLIENT_UTILS
- prompt "openssh-client-utils............ OpenSSH client utilities"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_OPENSSH_CLIENT
- help
- OpenSSH is a FREE version of the SSH protocol suite of network
- connectivity tools that increasing numbers of people on the Internet
- are coming to rely on. Many users of telnet, rlogin, ftp, and other
- such programs might not realize that their password is transmitted
- across the Internet unencrypted, but it is. OpenSSH encrypts all
- traffic (including passwords) to effectively eliminate eavesdropping,
- connection hijacking, and other network-level attacks. Additionally,
- OpenSSH provides a myriad of secure tunneling capabilities, as well
- as a variety of authentication methods.
-
- http://www.openssh.com/
-
- Depends: openssl
-
-config BR2_PACKAGE_OPENSSH_SERVER
- prompt "openssh-server.................... OpenSSH server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_OPENSSH
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- OpenSSH is a FREE version of the SSH protocol suite of network
- connectivity tools that increasing numbers of people on the Internet
- are coming to rely on. Many users of telnet, rlogin, ftp, and other
- such programs might not realize that their password is transmitted
- across the Internet unencrypted, but it is. OpenSSH encrypts all
- traffic (including passwords) to effectively eliminate eavesdropping,
- connection hijacking, and other network-level attacks. Additionally,
- OpenSSH provides a myriad of secure tunneling capabilities, as well
- as a variety of authentication methods.
-
- http://www.openssh.com/
-
- Depends: openssl
-
-config BR2_PACKAGE_OPENSSH_SFTP_CLIENT
- prompt "openssh-sftp-client............... OpenSSH SFTP client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_OPENSSH
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- OpenSSH is a FREE version of the SSH protocol suite of network
- connectivity tools that increasing numbers of people on the Internet
- are coming to rely on. Many users of telnet, rlogin, ftp, and other
- such programs might not realize that their password is transmitted
- across the Internet unencrypted, but it is. OpenSSH encrypts all
- traffic (including passwords) to effectively eliminate eavesdropping,
- connection hijacking, and other network-level attacks. Additionally,
- OpenSSH provides a myriad of secure tunneling capabilities, as well
- as a variety of authentication methods.
-
- http://www.openssh.com/
-
- Depends: openssl
-
-
-config BR2_PACKAGE_OPENSSH_SFTP_SERVER
- prompt "openssh-sftp-server............... OpenSSH SFTP server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_OPENSSH
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- OpenSSH is a FREE version of the SSH protocol suite of network
- connectivity tools that increasing numbers of people on the Internet
- are coming to rely on. Many users of telnet, rlogin, ftp, and other
- such programs might not realize that their password is transmitted
- across the Internet unencrypted, but it is. OpenSSH encrypts all
- traffic (including passwords) to effectively eliminate eavesdropping,
- connection hijacking, and other network-level attacks. Additionally,
- OpenSSH provides a myriad of secure tunneling capabilities, as well
- as a variety of authentication methods.
-
- http://www.openssh.com/
-
- Depends: openssl
-
-endmenu
diff --git a/openwrt/package/openssh/Makefile b/openwrt/package/openssh/Makefile
deleted file mode 100644
index a720de7b87..0000000000
--- a/openwrt/package/openssh/Makefile
+++ /dev/null
@@ -1,126 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=openssh
-PKG_VERSION:=4.2p1
-PKG_RELEASE:=2
-PKG_MD5SUM:=df899194a340c933944b193477c628fa
-
-PKG_SOURCE_URL:=ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/ \
- ftp://openbsd.wiretapped.net/pub/OpenBSD/OpenSSH/portable/ \
- ftp://ftp.belnet.be/packages/openbsd/OpenSSH/portable/ \
- ftp://ftp.de.openbsd.org/pub/unix/OpenBSD/OpenSSH/portable/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-PKG_DEPEND:="openssl"
-
-$(eval $(call PKG_template,OPENSSH_CLIENT,openssh-client,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSSH_CLIENT_UTILS,openssh-client-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSSH_SERVER,openssh-server,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSSH_SFTP_CLIENT,openssh-sftp-client,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSSH_SFTP_SERVER,openssh-sftp-server,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LD="$(TARGET_CC)" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc/ssh \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --disable-debug \
- --disable-strip \
- --disable-etc-default-login \
- --disable-lastlog \
- --disable-utmp \
- --disable-utmpx \
- --disable-wtmp \
- --disable-wtmpx \
- --without-bsd-auth \
- --without-kerberos5 \
- --without-pam \
- --without-x \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_OPENSSH_CLIENT):
- install -m0755 -d $(IDIR_OPENSSH_CLIENT)/etc/ssh
- chmod 0700 $(IDIR_OPENSSH_CLIENT)/etc/ssh
- $(CP) $(PKG_INSTALL_DIR)/etc/ssh/ssh_config $(IDIR_OPENSSH_CLIENT)/etc/ssh/
- install -m0755 -d $(IDIR_OPENSSH_CLIENT)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/ssh $(IDIR_OPENSSH_CLIENT)/usr/bin/
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/scp $(IDIR_OPENSSH_CLIENT)/usr/bin/
- $(RSTRIP) $(IDIR_OPENSSH_CLIENT)
- $(IPKG_BUILD) $(IDIR_OPENSSH_CLIENT) $(PACKAGE_DIR)
-
-$(IPKG_OPENSSH_CLIENT_UTILS):
- install -m0755 -d $(IDIR_OPENSSH_CLIENT_UTILS)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/ssh-add $(IDIR_OPENSSH_CLIENT_UTILS)/usr/bin/
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/ssh-agent $(IDIR_OPENSSH_CLIENT_UTILS)/usr/bin/
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/ssh-keyscan $(IDIR_OPENSSH_CLIENT_UTILS)/usr/bin/
- $(RSTRIP) $(IDIR_OPENSSH_CLIENT_UTILS)
- $(IPKG_BUILD) $(IDIR_OPENSSH_CLIENT_UTILS) $(PACKAGE_DIR)
-
-$(IPKG_OPENSSH_SERVER):
- install -m0755 -d $(IDIR_OPENSSH_SERVER)/etc/ssh
- chmod 0700 $(IDIR_OPENSSH_SERVER)/etc/ssh
- $(CP) $(PKG_INSTALL_DIR)/etc/ssh/sshd_config $(IDIR_OPENSSH_SERVER)/etc/ssh/
- install -m0755 -d $(IDIR_OPENSSH_SERVER)/etc/init.d
- install -m0755 ./files/S50sshd $(IDIR_OPENSSH_SERVER)/etc/init.d/
- install -m0755 -d $(IDIR_OPENSSH_SERVER)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/ssh-keygen $(IDIR_OPENSSH_SERVER)/usr/bin/
- install -m0755 -d $(IDIR_OPENSSH_SERVER)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/sshd $(IDIR_OPENSSH_SERVER)/usr/sbin/
- $(RSTRIP) $(IDIR_OPENSSH_SERVER)
- $(IPKG_BUILD) $(IDIR_OPENSSH_SERVER) $(PACKAGE_DIR)
-
-$(IPKG_OPENSSH_SFTP_CLIENT):
- install -m0755 -d $(IDIR_OPENSSH_SFTP_CLIENT)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/sftp $(IDIR_OPENSSH_SFTP_CLIENT)/usr/bin/
- $(RSTRIP) $(IDIR_OPENSSH_SFTP_CLIENT)
- $(IPKG_BUILD) $(IDIR_OPENSSH_SFTP_CLIENT) $(PACKAGE_DIR)
-
-$(IPKG_OPENSSH_SFTP_SERVER):
- install -m0755 -d $(IDIR_OPENSSH_SFTP_SERVER)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/sftp-server $(IDIR_OPENSSH_SFTP_SERVER)/usr/lib/
- install -m0755 -d $(IDIR_OPENSSH_SFTP_SERVER)/usr/libexec
- ln -sf ../lib/sftp-server $(IDIR_OPENSSH_SFTP_SERVER)/usr/libexec/sftp-server
- $(RSTRIP) $(IDIR_OPENSSH_SFTP_SERVER)
- $(IPKG_BUILD) $(IDIR_OPENSSH_SFTP_SERVER) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/openssh/files/S50sshd b/openwrt/package/openssh/files/S50sshd
deleted file mode 100755
index 2ea168394c..0000000000
--- a/openwrt/package/openssh/files/S50sshd
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-for type in rsa dsa; do {
- # check for keys
- key=/etc/ssh/ssh_host_${type}_key
- [ ! -f $key ] && {
- # generate missing keys
- [ -x /usr/bin/ssh-keygen ] && {
- /usr/bin/ssh-keygen -N '' -t $type -f $key 2>&- >&- && exec $0 $*
- } &
- exit 0
- }
-}; done
-mkdir -p /var/empty
-/usr/sbin/sshd
diff --git a/openwrt/package/openssh/ipkg/openssh-client-utils.control b/openwrt/package/openssh/ipkg/openssh-client-utils.control
deleted file mode 100644
index d34db0ddf2..0000000000
--- a/openwrt/package/openssh/ipkg/openssh-client-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openssh-client-utils
-Priority: optional
-Section: net
-Depends: zlib, libopenssl
-Description: OpenSSH client utilities
diff --git a/openwrt/package/openssh/ipkg/openssh-client.conffiles b/openwrt/package/openssh/ipkg/openssh-client.conffiles
deleted file mode 100644
index 489e8267f7..0000000000
--- a/openwrt/package/openssh/ipkg/openssh-client.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/ssh/ssh_config \ No newline at end of file
diff --git a/openwrt/package/openssh/ipkg/openssh-client.control b/openwrt/package/openssh/ipkg/openssh-client.control
deleted file mode 100644
index 183b7f152c..0000000000
--- a/openwrt/package/openssh/ipkg/openssh-client.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openssh-client
-Priority: optional
-Section: net
-Depends: zlib, libopenssl
-Description: OpenSSH client
diff --git a/openwrt/package/openssh/ipkg/openssh-server.conffiles b/openwrt/package/openssh/ipkg/openssh-server.conffiles
deleted file mode 100644
index 6f0cfbcbe2..0000000000
--- a/openwrt/package/openssh/ipkg/openssh-server.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/ssh/sshd_config \ No newline at end of file
diff --git a/openwrt/package/openssh/ipkg/openssh-server.control b/openwrt/package/openssh/ipkg/openssh-server.control
deleted file mode 100644
index d070f732d6..0000000000
--- a/openwrt/package/openssh/ipkg/openssh-server.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openssh-server
-Priority: optional
-Section: net
-Depends: zlib, libopenssl
-Description: OpenSSH server
diff --git a/openwrt/package/openssh/ipkg/openssh-server.postinst b/openwrt/package/openssh/ipkg/openssh-server.postinst
deleted file mode 100644
index b6e167f696..0000000000
--- a/openwrt/package/openssh/ipkg/openssh-server.postinst
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-name=sshd
-id=99
-
-# do not change below
-# check if we are on real system
-if [ -z "${IPKG_INSTROOT}" ]; then
- # create copies of passwd and group, if we use squashfs
- rootfs=`mount |awk '/root/ { print $5 }'`
- if [ "$rootfs" = "squashfs" ]; then
- if [ -h /etc/group ]; then
- rm /etc/group
- cp /rom/etc/group /etc/group
- fi
- if [ -h /etc/passwd ]; then
- rm /etc/passwd
- cp /rom/etc/passwd /etc/passwd
- fi
- fi
-fi
-
-echo ""
-if [ -z "$(grep ^\\${name}: ${IPKG_INSTROOT}/etc/group)" ]; then
- echo "adding group $name to /etc/group"
- echo "${name}:x:${id}:" >> ${IPKG_INSTROOT}/etc/group
-fi
-
-if [ -z "$(grep ^\\${name}: ${IPKG_INSTROOT}/etc/passwd)" ]; then
- echo "adding user $name to /etc/passwd"
- echo "${name}:x:${id}:${id}:${name}:/var/empty/.${name}:/bin/false" >> ${IPKG_INSTROOT}/etc/passwd
-fi
diff --git a/openwrt/package/openssh/ipkg/openssh-sftp-client.control b/openwrt/package/openssh/ipkg/openssh-sftp-client.control
deleted file mode 100644
index 705a3854ac..0000000000
--- a/openwrt/package/openssh/ipkg/openssh-sftp-client.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openssh-sftp-client
-Priority: optional
-Section: net
-Depends: zlib, libopenssl
-Description: OpenSSH SFTP client
diff --git a/openwrt/package/openssh/ipkg/openssh-sftp-server.control b/openwrt/package/openssh/ipkg/openssh-sftp-server.control
deleted file mode 100644
index 8c17fcc5b8..0000000000
--- a/openwrt/package/openssh/ipkg/openssh-sftp-server.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openssh-sftp-server
-Priority: optional
-Section: net
-Depends: zlib, libopenssl
-Description: OpenSSH SFTP server
diff --git a/openwrt/package/openssh/patches/100-openssl-cipher.patch b/openwrt/package/openssh/patches/100-openssl-cipher.patch
deleted file mode 100644
index f8eb177c2d..0000000000
--- a/openwrt/package/openssh/patches/100-openssl-cipher.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Nur openssh-4.2p1/cipher.c openssh-4.2p1.patched/cipher.c
---- openssh-4.2p1/cipher.c 2005-07-17 09:02:10.000000000 +0200
-+++ openssh-4.2p1.patched/cipher.c 2006-03-26 12:43:41.000000000 +0200
-@@ -67,7 +67,6 @@
-
- { "3des-cbc", SSH_CIPHER_SSH2, 8, 24, 0, EVP_des_ede3_cbc },
- { "blowfish-cbc", SSH_CIPHER_SSH2, 8, 16, 0, EVP_bf_cbc },
-- { "cast128-cbc", SSH_CIPHER_SSH2, 8, 16, 0, EVP_cast5_cbc },
- { "arcfour", SSH_CIPHER_SSH2, 8, 16, 0, EVP_rc4 },
- { "arcfour128", SSH_CIPHER_SSH2, 8, 16, 1536, EVP_rc4 },
- { "arcfour256", SSH_CIPHER_SSH2, 8, 32, 1536, EVP_rc4 },
diff --git a/openwrt/package/openssh/patches/cross-compile.patch b/openwrt/package/openssh/patches/cross-compile.patch
deleted file mode 100644
index 7178e32ac1..0000000000
--- a/openwrt/package/openssh/patches/cross-compile.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-diff -Nur openssh-4.0p1/configure openssh-4.0p1.patched/configure
---- openssh-4.0p1/configure 2005-03-09 05:54:16.000000000 +0100
-+++ openssh-4.0p1.patched/configure 2005-06-02 13:35:06.000000000 +0200
-@@ -5524,7 +5524,7 @@
- *-*-linux*)
- no_dev_ptmx=1
- check_for_libcrypt_later=1
-- check_for_openpty_ctty_bug=1
-+ check_for_openpty_ctty_bug=0
- cat >>confdefs.h <<\_ACEOF
- #define DONT_TRY_OTHER_AF 1
- _ACEOF
-@@ -12810,90 +12810,6 @@
- fi
- fi
-
--if test ! -z "$check_for_openpty_ctty_bug"; then
-- echo "$as_me:$LINENO: checking if openpty correctly handles controlling tty" >&5
--echo $ECHO_N "checking if openpty correctly handles controlling tty... $ECHO_C" >&6
-- 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
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--
--#include <stdio.h>
--#include <sys/fcntl.h>
--#include <sys/types.h>
--#include <sys/wait.h>
--
--int
--main()
--{
-- pid_t pid;
-- int fd, ptyfd, ttyfd, status;
--
-- pid = fork();
-- if (pid < 0) { /* failed */
-- exit(1);
-- } else if (pid > 0) { /* parent */
-- waitpid(pid, &status, 0);
-- if (WIFEXITED(status))
-- exit(WEXITSTATUS(status));
-- else
-- exit(2);
-- } else { /* child */
-- close(0); close(1); close(2);
-- setsid();
-- openpty(&ptyfd, &ttyfd, NULL, NULL, NULL);
-- fd = open("/dev/tty", O_RDWR | O_NOCTTY);
-- if (fd >= 0)
-- exit(3); /* Acquired ctty: broken */
-- else
-- exit(0); /* Did not acquire ctty: OK */
-- }
--}
--
--_ACEOF
--rm -f conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
--
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
--
--else
-- echo "$as_me: program exited with status $ac_status" >&5
--echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--( exit $ac_status )
--
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-- cat >>confdefs.h <<\_ACEOF
--#define SSHD_ACQUIRES_CTTY 1
--_ACEOF
--
--
--
--fi
--rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
--fi
--fi
-
- if test "x$ac_cv_func_getaddrinfo" = "xyes" -a "x$check_for_hpux_broken_getaddrinfo" = "x1"; then
- echo "$as_me:$LINENO: checking if getaddrinfo seems to work" >&5
diff --git a/openwrt/package/openssl/Config.in b/openwrt/package/openssl/Config.in
deleted file mode 100644
index e852c9f0f4..0000000000
--- a/openwrt/package/openssl/Config.in
+++ /dev/null
@@ -1,35 +0,0 @@
-config BR2_COMPILE_OPENSSL
- tristate
- default n
- depends BR2_PACKAGE_LIBOPENSSL
-
-config BR2_PACKAGE_LIBOPENSSL
- prompt "libopenssl........................ Open source SSL (Secure Socket Layer) libraries"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_OPENSSL
- help
- The OpenSSL Project is a collaborative effort to develop a robust,
- commercial-grade, full-featured, and Open Source toolkit implementing
- the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1)
- protocols as well as a full-strength general purpose cryptography library.
-
- http://www.openssl.org/
-
- This package contains the shared SSL libraries, needed by other programs.
-
-config BR2_PACKAGE_OPENSSL_UTIL
- prompt "openssl-util.................... OpenSSL command line tool"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBOPENSSL
- help
- The OpenSSL Project is a collaborative effort to develop a robust,
- commercial-grade, full-featured, and Open Source toolkit implementing
- the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1)
- protocols as well as a full-strength general purpose cryptography library.
-
- http://www.openssl.org/
-
- This package contains the multi-purpose OpenSSL binary tool.
-
diff --git a/openwrt/package/openssl/Makefile b/openwrt/package/openssl/Makefile
deleted file mode 100644
index a1a197626f..0000000000
--- a/openwrt/package/openssl/Makefile
+++ /dev/null
@@ -1,99 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=openssl
-PKG_VERSION:=0.9.8a
-PKG_RELEASE:=3
-PKG_MD5SUM:=1d16c727c10185e4d694f87f5e424ee1
-
-PKG_SOURCE_URL:=http://www.openssl.org/source/ \
- ftp://ftp.funet.fi/pub/crypt/cryptography/libs/openssl/source/ \
- ftp://ftp.webmonster.de/pub/openssl/source/ \
- ftp://ftp.sunet.se/pub/security/tools/net/openssl/source/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-OPENSSL_NO_CIPHERS:= no-idea no-md2 no-mdc2 no-rc5 no-sha0 no-rmd160 no-aes192
-OPENSSL_OPTIONS:= shared no-ec no-err no-fips no-hw no-krb5 no-threads zlib-dynamic no-engines
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBOPENSSL,libopenssl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENSSL_UTIL,openssl-util,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- $(SED) 's,/CFLAG=,/CFLAG= $(TARGET_SOFT_FLOAT) ,g' $(PKG_BUILD_DIR)/Configure
- $(SED) s/OPENWRT_OPTIMIZATION_FLAGS/$(BR2_TARGET_OPTIMIZATION)/g $(PKG_BUILD_DIR)/Configure
- (cd $(PKG_BUILD_DIR); \
- PATH=$(TARGET_PATH) \
- ./Configure linux-openwrt \
- --prefix=/usr \
- --openssldir=/etc/ssl \
- -I$(STAGING_DIR)/usr/include \
- -L$(STAGING_DIR)/usr/lib -ldl \
- -DOPENSSL_SMALL_FOOTPRINT \
- $(OPENSSL_NO_CIPHERS) \
- $(OPENSSL_OPTIONS) \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) -j1 \
- MAKEDEPPROG="$(TARGET_CC)" \
- depend
- $(MAKE) -C $(PKG_BUILD_DIR) -j1 \
- CC="$(TARGET_CC)" \
- AR="$(TARGET_CROSS)ar r" \
- RANLIB="$(TARGET_CROSS)ranlib" \
- all build-shared
- # Work around openssl build bug to link libssl.so with libcrypto.so.
- -rm $(PKG_BUILD_DIR)/libssl.so.*.*.*
- $(MAKE) -C $(PKG_BUILD_DIR) -j1 \
- CC=$(TARGET_CC) \
- CCOPTS="$(TARGET_CFLAGS) -fomit-frame-pointer" \
- do_linux-shared
- $(MAKE) -C $(PKG_BUILD_DIR) -j1 \
- INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
- install
- touch $@
-
-$(IPKG_LIBOPENSSL):
- install -d -m0755 $(IDIR_LIBOPENSSL)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{crypto,ssl}.so.* $(IDIR_LIBOPENSSL)/usr/lib/
- chmod 0644 $(IDIR_LIBOPENSSL)/usr/lib/*
- $(RSTRIP) $(IDIR_LIBOPENSSL)
- $(IPKG_BUILD) $(IDIR_LIBOPENSSL) $(PACKAGE_DIR)
-
-$(IPKG_OPENSSL_UTIL):
- install -d -m0755 $(IDIR_OPENSSL_UTIL)/etc/ssl
- $(CP) $(PKG_INSTALL_DIR)/etc/ssl/openssl.cnf $(IDIR_OPENSSL_UTIL)/etc/ssl/
- install -d -m0755 $(IDIR_OPENSSL_UTIL)/etc/ssl/certs
- install -d -m0755 $(IDIR_OPENSSL_UTIL)/etc/ssl/private
- chmod 0700 $(IDIR_OPENSSL_UTIL)/etc/ssl/private
- install -d -m0755 $(IDIR_OPENSSL_UTIL)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/openssl $(IDIR_OPENSSL_UTIL)/usr/bin/
- $(RSTRIP) $(IDIR_OPENSSL_UTIL)
- $(IPKG_BUILD) $(IDIR_OPENSSL_UTIL) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libssl.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/openssl $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{crypto,ssl}.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libssl.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/openssl \
- $(STAGING_DIR)/usr/lib/lib{crypto,ssl}.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/openssl/ipkg/libopenssl.control b/openwrt/package/openssl/ipkg/libopenssl.control
deleted file mode 100644
index 9cf48a804f..0000000000
--- a/openwrt/package/openssl/ipkg/libopenssl.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libopenssl
-Priority: optional
-Section: libs
-Description: OpenSSL (Secure Socket Layer) libraries
diff --git a/openwrt/package/openssl/ipkg/openssl-util.conffiles b/openwrt/package/openssl/ipkg/openssl-util.conffiles
deleted file mode 100644
index 6d068e66c4..0000000000
--- a/openwrt/package/openssl/ipkg/openssl-util.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/ssl/openssl.cnf
diff --git a/openwrt/package/openssl/ipkg/openssl-util.control b/openwrt/package/openssl/ipkg/openssl-util.control
deleted file mode 100644
index 4c14ab1aae..0000000000
--- a/openwrt/package/openssl/ipkg/openssl-util.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openssl-util
-Priority: optionnal
-Section: admin
-Description: OpenSSL (Secure Socket Layer) command line tool
-Depends: libopenssl
diff --git a/openwrt/package/openssl/patches/110-optimize-for-size.patch b/openwrt/package/openssl/patches/110-optimize-for-size.patch
deleted file mode 100644
index 6031c25257..0000000000
--- a/openwrt/package/openssl/patches/110-optimize-for-size.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur openssl-0.9.8a/Configure openssl-0.9.8a-owrt/Configure
---- openssl-0.9.8a/Configure 2005-08-02 12:59:42.000000000 +0200
-+++ openssl-0.9.8a-owrt/Configure 2006-03-23 14:16:35.000000000 +0100
-@@ -353,6 +353,8 @@
- "linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
- "linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${no_asm}",
- "linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${no_asm}",
-+# OpenWrt targets
-+"linux-openwrt","gcc:-DTERMIO OPENWRT_OPTIMIZATION_FLAGS -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-
- #### *BSD [do see comment about ${BSDthreads} above!]
- "BSD-generic32","gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
diff --git a/openwrt/package/openssl/patches/120-makedepend.patch b/openwrt/package/openssl/patches/120-makedepend.patch
deleted file mode 100644
index c802fe4adc..0000000000
--- a/openwrt/package/openssl/patches/120-makedepend.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -ruN openssl-0.9.7g-old/util/domd openssl-0.9.7g-new/util/domd
---- openssl-0.9.7g-old/util/domd 2004-05-11 14:46:18.000000000 +0200
-+++ openssl-0.9.7g-new/util/domd 2005-05-30 20:20:04.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/bin/sh
-+#!/bin/bash
- # Do a makedepend, only leave out the standard headers
- # Written by Ben Laurie <ben@algroup.co.uk> 19 Jan 1999
-
-@@ -14,7 +14,8 @@
- cp Makefile Makefile.save
- # fake the presence of Kerberos
- touch $TOP/krb5.h
--if [ "$MAKEDEPEND" = "gcc" ]; then
-+D=${MAKEDEPEND/%*gcc/gcc}
-+if [ "$D" = "gcc" ]; then
- args=""
- while [ $# -gt 0 ]; do
- if [ "$1" != "--" ]; then args="$args $1"; fi
-@@ -22,7 +23,7 @@
- done
- sed -e '/^# DO NOT DELETE.*/,$d' < Makefile > Makefile.tmp
- echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' >> Makefile.tmp
-- gcc -D OPENSSL_DOING_MAKEDEPEND -M $args >> Makefile.tmp
-+ ${MAKEDEPEND} -D OPENSSL_DOING_MAKEDEPEND -M $args >> Makefile.tmp
- ${PERL} $TOP/util/clean-depend.pl < Makefile.tmp > Makefile.new
- rm -f Makefile.tmp
- else
diff --git a/openwrt/package/openssl/patches/130-perl-path.patch b/openwrt/package/openssl/patches/130-perl-path.patch
deleted file mode 100644
index 42467b8388..0000000000
--- a/openwrt/package/openssl/patches/130-perl-path.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-diff -Nur openssl-0.9.7f/Configure openssl-0.9.7f.new/Configure
---- openssl-0.9.7f/Configure 2005-03-12 12:28:21.000000000 +0100
-+++ openssl-0.9.7f.new/Configure 2005-04-03 20:32:00.000000000 +0200
-@@ -1,4 +1,4 @@
--:
-+#!/usr/bin/perl
- eval 'exec perl -S $0 ${1+"$@"}'
- if $running_under_some_shell;
- ##
-diff -Nur openssl-0.9.7f/tools/c_rehash.in openssl-0.9.7f.new/tools/c_rehash.in
---- openssl-0.9.7f/tools/c_rehash.in 2002-10-11 22:35:45.000000000 +0200
-+++ openssl-0.9.7f.new/tools/c_rehash.in 2005-04-03 20:41:17.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl
-+#!/usr/bin/perl
-
-
- # Perl c_rehash script, scan all files in a directory
-diff -Nur openssl-0.9.7f/util/clean-depend.pl openssl-0.9.7f.new/util/clean-depend.pl
---- openssl-0.9.7f/util/clean-depend.pl 2001-10-10 10:27:28.000000000 +0200
-+++ openssl-0.9.7f.new/util/clean-depend.pl 2005-04-03 20:41:38.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/bin/perl -w
- # Clean the dependency list in a makefile of standard includes...
- # Written by Ben Laurie <ben@algroup.co.uk> 19 Jan 1999
-
-diff -Nur openssl-0.9.7f/util/mkdef.pl openssl-0.9.7f.new/util/mkdef.pl
---- openssl-0.9.7f/util/mkdef.pl 2005-02-05 18:19:23.000000000 +0100
-+++ openssl-0.9.7f.new/util/mkdef.pl 2005-04-03 20:42:49.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/bin/perl
- #
- # generate a .def file
- #
-diff -Nur openssl-0.9.7f/util/mkerr.pl openssl-0.9.7f.new/util/mkerr.pl
---- openssl-0.9.7f/util/mkerr.pl 2005-01-31 02:28:17.000000000 +0100
-+++ openssl-0.9.7f.new/util/mkerr.pl 2005-04-03 20:43:02.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/bin/perl
-
- my $config = "crypto/err/openssl.ec";
- my $debug = 0;
-diff -Nur openssl-0.9.7f/util/mkstack.pl openssl-0.9.7f.new/util/mkstack.pl
---- openssl-0.9.7f/util/mkstack.pl 2004-10-04 18:27:36.000000000 +0200
-+++ openssl-0.9.7f.new/util/mkstack.pl 2005-04-03 20:43:18.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/bin/perl
-
- # This is a utility that searches out "DECLARE_STACK_OF()"
- # declarations in .h and .c files, and updates/creates/replaces
-diff -Nur openssl-0.9.7f/util/pod2man.pl openssl-0.9.7f.new/util/pod2man.pl
---- openssl-0.9.7f/util/pod2man.pl 2002-05-30 17:30:21.000000000 +0200
-+++ openssl-0.9.7f.new/util/pod2man.pl 2005-04-03 20:43:52.000000000 +0200
-@@ -1,4 +1,4 @@
--: #!/usr/bin/perl-5.005
-+#!/usr/bin/perl
- eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
- if $running_under_some_shell;
-
-diff -Nur openssl-0.9.7f/util/selftest.pl openssl-0.9.7f.new/util/selftest.pl
---- openssl-0.9.7f/util/selftest.pl 2004-05-11 14:46:19.000000000 +0200
-+++ openssl-0.9.7f.new/util/selftest.pl 2005-04-03 20:44:10.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/bin/perl
- #
- # Run the test suite and generate a report
- #
diff --git a/openwrt/package/openssl/patches/140-makefile-dirs.patch b/openwrt/package/openssl/patches/140-makefile-dirs.patch
deleted file mode 100644
index 89022e0c6c..0000000000
--- a/openwrt/package/openssl/patches/140-makefile-dirs.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- openssl-0.9.8a/Makefile.org 2006-02-21 20:57:45.000000000 -0800
-+++ openssl-0.9.8a-new/Makefile.org 2006-02-21 21:37:11.000000000 -0800
-@@ -100,7 +100,7 @@
- KRB5_INCLUDES=
- LIBKRB5=
-
--DIRS= crypto ssl engines apps test tools
-+DIRS= crypto ssl apps
- SHLIBDIRS= crypto ssl
-
- # dirs in crypto to build
diff --git a/openwrt/package/openssl/patches/150-no_engines.patch b/openwrt/package/openssl/patches/150-no_engines.patch
deleted file mode 100644
index b928fbcc61..0000000000
--- a/openwrt/package/openssl/patches/150-no_engines.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-diff -udrNP openssl-0.9.8-stable-SNAP-20050703.orig/util/libeay.num openssl-0.9.8-stable-SNAP-20050703/util/libeay.num
---- openssl-0.9.8-stable-SNAP-20050703.orig/util/libeay.num 2005-07-04 00:27:14.653639088 +0200
-+++ openssl-0.9.8-stable-SNAP-20050703/util/libeay.num 2005-07-04 22:50:07.986576664 +0200
-@@ -2071,7 +2071,6 @@
- UI_add_error_string 2633 EXIST::FUNCTION:
- KRB5_CHECKSUM_free 2634 EXIST::FUNCTION:
- OCSP_REQUEST_get_ext 2635 EXIST::FUNCTION:
--ENGINE_load_ubsec 2636 EXIST::FUNCTION:ENGINE,STATIC_ENGINE
- ENGINE_register_all_digests 2637 EXIST::FUNCTION:ENGINE
- PKEY_USAGE_PERIOD_it 2638 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
- PKEY_USAGE_PERIOD_it 2638 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
-@@ -2545,7 +2544,6 @@
- AES_set_encrypt_key 3024 EXIST::FUNCTION:AES
- OCSP_resp_count 3025 EXIST::FUNCTION:
- KRB5_CHECKSUM_new 3026 EXIST::FUNCTION:
--ENGINE_load_cswift 3027 EXIST::FUNCTION:ENGINE,STATIC_ENGINE
- OCSP_onereq_get0_id 3028 EXIST::FUNCTION:
- ENGINE_set_default_ciphers 3029 EXIST::FUNCTION:ENGINE
- NOTICEREF_it 3030 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
-@@ -2576,7 +2574,6 @@
- i2d_EXTENDED_KEY_USAGE 3052 EXIST::FUNCTION:
- i2d_OCSP_SIGNATURE 3053 EXIST::FUNCTION:
- asn1_enc_save 3054 EXIST::FUNCTION:
--ENGINE_load_nuron 3055 EXIST::FUNCTION:ENGINE,STATIC_ENGINE
- _ossl_old_des_pcbc_encrypt 3056 EXIST::FUNCTION:DES
- PKCS12_MAC_DATA_it 3057 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
- PKCS12_MAC_DATA_it 3057 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
-@@ -2600,7 +2597,6 @@
- i2d_KRB5_CHECKSUM 3072 EXIST::FUNCTION:
- ENGINE_set_table_flags 3073 EXIST::FUNCTION:ENGINE
- AES_options 3074 EXIST::FUNCTION:AES
--ENGINE_load_chil 3075 EXIST::FUNCTION:ENGINE,STATIC_ENGINE
- OCSP_id_cmp 3076 EXIST::FUNCTION:
- OCSP_BASICRESP_new 3077 EXIST::FUNCTION:
- OCSP_REQUEST_get_ext_by_NID 3078 EXIST::FUNCTION:
-@@ -2667,7 +2663,6 @@
- OCSP_CRLID_it 3127 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
- i2d_KRB5_AUTHENTBODY 3128 EXIST::FUNCTION:
- OCSP_REQUEST_get_ext_count 3129 EXIST::FUNCTION:
--ENGINE_load_atalla 3130 EXIST::FUNCTION:ENGINE,STATIC_ENGINE
- X509_NAME_it 3131 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
- X509_NAME_it 3131 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
- USERNOTICE_it 3132 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
-@@ -2762,8 +2757,6 @@
- DES_read_password 3207 EXIST::FUNCTION:DES
- UI_UTIL_read_pw 3208 EXIST::FUNCTION:
- UI_UTIL_read_pw_string 3209 EXIST::FUNCTION:
--ENGINE_load_aep 3210 EXIST::FUNCTION:ENGINE,STATIC_ENGINE
--ENGINE_load_sureware 3211 EXIST::FUNCTION:ENGINE,STATIC_ENGINE
- OPENSSL_add_all_algorithms_noconf 3212 EXIST:!VMS:FUNCTION:
- OPENSSL_add_all_algo_noconf 3212 EXIST:VMS:FUNCTION:
- OPENSSL_add_all_algorithms_conf 3213 EXIST:!VMS:FUNCTION:
-@@ -2772,7 +2765,6 @@
- AES_ofb128_encrypt 3215 EXIST::FUNCTION:AES
- AES_ctr128_encrypt 3216 EXIST::FUNCTION:AES
- AES_cfb128_encrypt 3217 EXIST::FUNCTION:AES
--ENGINE_load_4758cca 3218 EXIST::FUNCTION:ENGINE,STATIC_ENGINE
- _ossl_096_des_random_seed 3219 EXIST::FUNCTION:DES
- EVP_aes_256_ofb 3220 EXIST::FUNCTION:AES
- EVP_aes_192_ofb 3221 EXIST::FUNCTION:AES
-@@ -3107,7 +3099,6 @@
- STORE_method_set_modify_function 3530 EXIST:!VMS:FUNCTION:
- STORE_meth_set_modify_fn 3530 EXIST:VMS:FUNCTION:
- STORE_parse_attrs_next 3531 EXIST::FUNCTION:
--ENGINE_load_padlock 3532 EXIST::FUNCTION:ENGINE
- EC_GROUP_set_curve_name 3533 EXIST::FUNCTION:EC
- X509_CERT_PAIR_it 3534 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
- X509_CERT_PAIR_it 3534 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
-diff -udrNP openssl-0.9.8-stable-SNAP-20050703.orig/Configure openssl-0.9.8-stable-SNAP-20050703/Configure
---- openssl-0.9.8-stable-SNAP-20050703.orig/Configure 2005-07-04 00:27:11.169168808 +0200
-+++ openssl-0.9.8-stable-SNAP-20050703/Configure 2005-07-05 00:02:12.590136992 +0200
-@@ -1623,6 +1624,11 @@
- close(OUT);
- }
-
-+# ugly hack to disable engines
-+if($target eq "mingwx") {
-+ system("sed -e s/^LIB/XLIB/g -i engines/Makefile");
-+}
-+
- print <<EOF;
-
- Configured for $target.
diff --git a/openwrt/package/openssl/patches/160-disable_doc_tests.patch b/openwrt/package/openssl/patches/160-disable_doc_tests.patch
deleted file mode 100644
index b571580314..0000000000
--- a/openwrt/package/openssl/patches/160-disable_doc_tests.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-diff -urN openssl-0.9.8a/Makefile openssl-0.9.8a.new/Makefile
---- openssl-0.9.8a/Makefile 2005-10-11 12:21:48.000000000 +0200
-+++ openssl-0.9.8a.new/Makefile 2006-03-29 15:23:28.107586680 +0200
-@@ -102,7 +102,7 @@
- KRB5_INCLUDES=
- LIBKRB5=
-
--DIRS= crypto ssl engines apps test tools
-+DIRS= crypto ssl engines apps tools
- SHLIBDIRS= crypto ssl
-
- # dirs in crypto to build
-@@ -119,7 +119,7 @@
-
- # tests to perform. "alltests" is a special word indicating that all tests
- # should be performed.
--TESTS = alltests
-+TESTS =
-
- MAKEFILE= Makefile
-
-@@ -131,7 +131,7 @@
-
- TOP= .
- ONEDIRS=out tmp
--EDIRS= times doc bugs util include certs ms shlib mt demos perl sf dep VMS
-+EDIRS= times bugs util include certs ms shlib mt demos perl sf dep VMS
- WDIRS= windows
- LIBS= libcrypto.a libssl.a
- SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
-@@ -204,7 +204,7 @@
- @[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
-
- sub_all: build_all
--build_all: build_libs build_apps build_tests build_tools
-+build_all: build_libs build_apps build_tools
-
- build_libs: build_crypto build_ssl build_engines
-
-@@ -454,7 +454,7 @@
- dist_pem_h:
- (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
-
--install: all install_docs install_sw
-+install: all install_sw
-
- install_sw:
- @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
-diff -urN openssl-0.9.8a/Makefile.bak openssl-0.9.8a.new/Makefile.bak
---- openssl-0.9.8a/Makefile.bak 2005-10-11 12:21:44.000000000 +0200
-+++ openssl-0.9.8a.new/Makefile.bak 2006-03-29 15:28:48.660855176 +0200
-@@ -102,7 +102,7 @@
- KRB5_INCLUDES=
- LIBKRB5=
-
--DIRS= crypto ssl engines apps test tools
-+DIRS= crypto ssl engines apps tools
- SHLIBDIRS= crypto ssl
-
- # dirs in crypto to build
-@@ -119,7 +119,7 @@
-
- # tests to perform. "alltests" is a special word indicating that all tests
- # should be performed.
--TESTS = alltests
-+TESTS =
-
- MAKEFILE= Makefile
-
-@@ -131,7 +131,7 @@
-
- TOP= .
- ONEDIRS=out tmp
--EDIRS= times doc bugs util include certs ms shlib mt demos perl sf dep VMS
-+EDIRS= times bugs util include certs ms shlib mt demos perl sf dep VMS
- WDIRS= windows
- LIBS= libcrypto.a libssl.a
- SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
-@@ -204,7 +204,7 @@
- @[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
-
- sub_all: build_all
--build_all: build_libs build_apps build_tests build_tools
-+build_all: build_libs build_apps build_tools
-
- build_libs: build_crypto build_ssl build_engines
-
-@@ -221,7 +221,7 @@
- build_tools:
- @dir=tools; target=all; $(BUILD_CMD)
-
--all_testapps: build_libs build_testapps
-+all_testapps: build_libs
- build_testapps:
- @dir=crypto; target=testapps; $(BUILD_CMD)
-
-@@ -454,7 +454,7 @@
- dist_pem_h:
- (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
-
--install: all install_docs install_sw
-+install: all install_sw
-
- install_sw:
- @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
-diff -urN openssl-0.9.8a/Makefile.org openssl-0.9.8a.new/Makefile.org
---- openssl-0.9.8a/Makefile.org 2006-03-29 14:59:41.941396896 +0200
-+++ openssl-0.9.8a.new/Makefile.org 2006-03-29 15:29:46.126119128 +0200
-@@ -117,7 +117,7 @@
-
- # tests to perform. "alltests" is a special word indicating that all tests
- # should be performed.
--TESTS = alltests
-+TESTS =
-
- MAKEFILE= Makefile
-
-@@ -129,7 +129,7 @@
-
- TOP= .
- ONEDIRS=out tmp
--EDIRS= times doc bugs util include certs ms shlib mt demos perl sf dep VMS
-+EDIRS= times bugs util include certs ms shlib mt demos perl sf dep VMS
- WDIRS= windows
- LIBS= libcrypto.a libssl.a
- SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
-@@ -202,7 +202,7 @@
- @[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
-
- sub_all: build_all
--build_all: build_libs build_apps build_tests build_tools
-+build_all: build_libs build_apps build_tools
-
- build_libs: build_crypto build_ssl build_engines
-
-@@ -219,7 +219,7 @@
- build_tools:
- @dir=tools; target=all; $(BUILD_CMD)
-
--all_testapps: build_libs build_testapps
-+all_testapps: build_libs
- build_testapps:
- @dir=crypto; target=testapps; $(BUILD_CMD)
-
-@@ -452,7 +452,7 @@
- dist_pem_h:
- (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
-
--install: all install_docs install_sw
-+install: all install_sw
-
- install_sw:
- @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
diff --git a/openwrt/package/openswan/Config.in b/openwrt/package/openswan/Config.in
deleted file mode 100644
index 109e56d8ed..0000000000
--- a/openwrt/package/openswan/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_OPENSWAN
- prompt "openswan.......................... VPN solution using IPsec"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_IP
- select BR2_PACKAGE_LIBGMP
- select BR2_PACKAGE_KMOD_OPENSWAN
- help
- Openswan is an implementation of IPsec for Linux.
-
- http://www.openswan.org/
-
diff --git a/openwrt/package/openswan/Makefile b/openwrt/package/openswan/Makefile
deleted file mode 100644
index b4b475d286..0000000000
--- a/openwrt/package/openswan/Makefile
+++ /dev/null
@@ -1,57 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=openswan
-PKG_VERSION:=2.4.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=a9a8e88313faceebfc5ceb1a9da9a3c4
-
-PKG_SOURCE_URL:=http://www.openswan.org/download
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=zcat
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,OPENSWAN,openswan,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-FLAGS := $(TARGET_CFLAGS) -I$(PKG_BUILD_DIR)/linux/include -L$(STAGING_DIR)/usr/lib -I$(STAGING_DIR)/usr/include
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- KERNELSRC="$(LINUX_DIR)" \
- ARCH="mips" \
- USERCOMPILE="$(FLAGS)" \
- EXTRA_INCLUDE="-I$(STAGING_DIR)/usr/include" \
- EXTRA_LIBS="-L$(STAGING_DIR)/usr/lib" \
- IPSECDIR="/usr/lib/ipsec" \
- INC_USRLOCAL="/usr" \
- programs
- touch $@
-
-$(IPKG_OPENSWAN):
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- DESTDIR="$(IDIR_OPENSWAN)" \
- KERNELSRC="$(LINUX_DIR)" \
- ARCH="mips" \
- USERCOMPILE="$(FLAGS)" \
- IPSECDIR="/usr/lib/ipsec" \
- INC_USRLOCAL="/usr" \
- install
- -$(STRIP) $(IDIR_OPENSWAN)/usr/lib/ipsec/*
- -$(STRIP) $(IDIR_OPENSWAN)/usr/libexec/ipsec/*
- rm -rf $(IDIR_OPENSWAN)/usr/share
- rm -rf $(IDIR_OPENSWAN)/usr/man
- rm -rf $(IDIR_OPENSWAN)/var
- rm -rf $(IDIR_OPENSWAN)/etc/rc.d/rc*.d
- mkdir -p $(IDIR_OPENSWAN)/etc/init.d
- ln -sf ../rc.d/init.d/ipsec $(IDIR_OPENSWAN)/etc/init.d/S60ipsec
- find $(PKG_BUILD_DIR) -name \*.old | xargs rm -rf
- mkdir -p $(PACKAGE_DIR)
- $(IPKG_BUILD) $(IDIR_OPENSWAN) $(PACKAGE_DIR)
diff --git a/openwrt/package/openswan/ipkg/openswan.conffiles b/openwrt/package/openswan/ipkg/openswan.conffiles
deleted file mode 100644
index ff0851c297..0000000000
--- a/openwrt/package/openswan/ipkg/openswan.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/ipsec.conf
diff --git a/openwrt/package/openswan/ipkg/openswan.control b/openwrt/package/openswan/ipkg/openswan.control
deleted file mode 100644
index 137491e84b..0000000000
--- a/openwrt/package/openswan/ipkg/openswan.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openswan
-Section: base
-Priority: optional
-Depends: kmod-openswan, libgmp, ip
-Description: Openswan IPSec software
diff --git a/openwrt/package/openswan/patches/pluto-includes.patch b/openwrt/package/openswan/patches/pluto-includes.patch
deleted file mode 100644
index 8cd1398d4a..0000000000
--- a/openwrt/package/openswan/patches/pluto-includes.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur openswan-2.4.0.orig/programs/pluto/Makefile openswan-2.4.0/programs/pluto/Makefile
---- openswan-2.4.0.orig/programs/pluto/Makefile 2005-08-12 03:12:38.000000000 +0200
-+++ openswan-2.4.0/programs/pluto/Makefile 2005-09-29 13:41:14.016377750 +0200
-@@ -271,7 +271,7 @@
- LIBSPLUTO+=$(HAVE_THREADS_LIBS) ${XAUTHPAM_LIBS}
- LIBSPLUTO+=${CURL_LIBS}
- LIBSPLUTO+=${EXTRA_CRYPTO_LIBS}
--LIBSPLUTO+= -lgmp -lresolv # -lefence
-+LIBSPLUTO+=$(EXTRA_LIBS) -lgmp -lresolv # -lefence
-
- ifneq ($(LD_LIBRARY_PATH),)
- LDFLAGS=-L$(LD_LIBRARY_PATH)
diff --git a/openwrt/package/openswan/patches/scripts.patch b/openwrt/package/openswan/patches/scripts.patch
deleted file mode 100644
index 6d571ef3fd..0000000000
--- a/openwrt/package/openswan/patches/scripts.patch
+++ /dev/null
@@ -1,612 +0,0 @@
-diff -Nur openswan-2.4.5rc5/programs/loggerfix openswan-2.4.5rc5.patched/programs/loggerfix
---- openswan-2.4.5rc5/programs/loggerfix 1970-01-01 01:00:00.000000000 +0100
-+++ openswan-2.4.5rc5.patched/programs/loggerfix 2006-03-29 01:20:44.000000000 +0200
-@@ -0,0 +1,5 @@
-+#!/bin/sh
-+# use filename instead of /dev/null to log, but dont log to flash or ram
-+# pref. log to nfs mount
-+echo "$*" >> /dev/null
-+exit 0
-diff -Nur openswan-2.4.5rc5/programs/look/look.in openswan-2.4.5rc5.patched/programs/look/look.in
---- openswan-2.4.5rc5/programs/look/look.in 2005-08-18 16:10:09.000000000 +0200
-+++ openswan-2.4.5rc5.patched/programs/look/look.in 2006-03-29 01:20:44.000000000 +0200
-@@ -84,7 +84,7 @@
- then
- pat="$pat|$defaultroutephys\$|$defaultroutevirt\$"
- else
-- for i in `echo "$IPSECinterfaces" | sed 's/=/ /'`
-+ for i in `echo "$IPSECinterfaces" | tr '=' ' '`
- do
- pat="$pat|$i\$"
- done
-diff -Nur openswan-2.4.5rc5/programs/_plutorun/_plutorun.in openswan-2.4.5rc5.patched/programs/_plutorun/_plutorun.in
---- openswan-2.4.5rc5/programs/_plutorun/_plutorun.in 2006-01-06 00:45:00.000000000 +0100
-+++ openswan-2.4.5rc5.patched/programs/_plutorun/_plutorun.in 2006-03-29 01:20:44.000000000 +0200
-@@ -147,7 +147,7 @@
- exit 1
- fi
- else
-- if test ! -w "`dirname $stderrlog`"
-+ if test ! -w "`echo $stderrlog | sed -r 's/(^.*\/)(.*$)/\1/'`"
- then
- echo Cannot write to directory to create \"$stderrlog\".
- exit 1
-diff -Nur openswan-2.4.5rc5/programs/_realsetup/_realsetup.in openswan-2.4.5rc5.patched/programs/_realsetup/_realsetup.in
---- openswan-2.4.5rc5/programs/_realsetup/_realsetup.in 2005-07-28 02:23:48.000000000 +0200
-+++ openswan-2.4.5rc5.patched/programs/_realsetup/_realsetup.in 2006-03-29 01:20:44.000000000 +0200
-@@ -235,7 +235,7 @@
-
- # misc pre-Pluto setup
-
-- perform test -d `dirname $subsyslock` "&&" touch $subsyslock
-+ perform test -d `echo $subsyslock | sed -r 's/(^.*\/)(.*$)/\1/'` "&&" touch $subsyslock
-
- if test " $IPSECforwardcontrol" = " yes"
- then
-@@ -347,7 +347,7 @@
- lsmod 2>&1 | grep "^xfrm_user" > /dev/null && rmmod -s xfrm_user
- fi
-
-- perform test -d `dirname $subsyslock` "&&" rm -f $subsyslock
-+ perform test -d `echo $subsyslock | sed -r 's/(^.*\/)(.*$)/\1/'` "&&" touch $subsyslock "&&" rm -f $subsyslock
-
- perform rm -f $info $lock $plutopid
- perform echo "...Openswan IPsec stopped" "|" $LOGONLY
-diff -Nur openswan-2.4.5rc5/programs/send-pr/send-pr.in openswan-2.4.5rc5.patched/programs/send-pr/send-pr.in
---- openswan-2.4.5rc5/programs/send-pr/send-pr.in 2005-04-18 01:04:46.000000000 +0200
-+++ openswan-2.4.5rc5.patched/programs/send-pr/send-pr.in 2006-03-29 01:20:44.000000000 +0200
-@@ -402,7 +402,7 @@
- else
- if [ "$fieldname" != "Category" ]
- then
-- values=`${BINDIR}/query-pr --valid-values $fieldname | sed ':a;N;$!ba;s/\n/ /g' | sed 's/ *$//g;s/ / | /g;s/^/[ /;s/$/ ]/;'`
-+ values=`${BINDIR}/query-pr --valid-values $fieldname | tr '\n' ' ' | sed 's/ *$//g;s/ / | /g;s/^/[ /;s/$/ ]/;'`
- valslen=`echo "$values" | wc -c`
- else
- values="choose from a category listed above"
-@@ -414,7 +414,7 @@
- else
- desc="<${values} (one line)>";
- fi
-- dpat=`echo "$desc" | sed 's/[][*+^$|\()&/]/./g'`
-+ dpat=`echo "$desc" | tr '\]\[*+^$|\()&/' '............'`
- echo "/^>${fieldname}:/ s/${dpat}//" >> $FIXFIL
- fi
- echo "${fmtname}${desc}" >> $file
-@@ -425,7 +425,7 @@
- desc=" $default_val";
- else
- desc=" <`${BINDIR}/query-pr --field-description $fieldname` (multiple lines)>";
-- dpat=`echo "$desc" | sed 's/[][*+^$|\()&/]/./g'`
-+ dpat=`echo "$desc" | tr '\]\[*+^$|\()&/' '............'`
- echo "s/^${dpat}//" >> $FIXFIL
- fi
- echo "${fmtname}" >> $file;
-@@ -437,7 +437,7 @@
- desc="${default_val}"
- else
- desc="<`${BINDIR}/query-pr --field-description $fieldname` (one line)>"
-- dpat=`echo "$desc" | sed 's/[][*+^$|\()&/]/./g'`
-+ dpat=`echo "$desc" | tr '\]\[*+^$|\()&/' '............'`
- echo "/^>${fieldname}:/ s/${dpat}//" >> $FIXFIL
- fi
- echo "${fmtname}${desc}" >> $file
-diff -Nur openswan-2.4.5rc5/programs/setup/setup.in openswan-2.4.5rc5.patched/programs/setup/setup.in
---- openswan-2.4.5rc5/programs/setup/setup.in 2005-07-25 21:17:03.000000000 +0200
-+++ openswan-2.4.5rc5.patched/programs/setup/setup.in 2006-03-29 01:20:44.000000000 +0200
-@@ -117,12 +117,22 @@
- # do it
- case "$1" in
- start|--start|stop|--stop|_autostop|_autostart)
-- if test " `id -u`" != " 0"
-+ if [ "x${USER}" != "xroot" ]
- then
- echo "permission denied (must be superuser)" |
- logger -s -p $IPSECsyslog -t ipsec_setup 2>&1
- exit 1
- fi
-+
-+ # make sure all required directories exist
-+ if [ ! -d /var/run/pluto ]
-+ then
-+ mkdir -p /var/run/pluto
-+ fi
-+ if [ ! -d /var/lock/subsys ]
-+ then
-+ mkdir -p /var/lock/subsys
-+ fi
- tmp=/var/run/pluto/ipsec_setup.st
- outtmp=/var/run/pluto/ipsec_setup.out
- (
-diff -Nur openswan-2.4.5rc5/programs/showhostkey/showhostkey.in openswan-2.4.5rc5.patched/programs/showhostkey/showhostkey.in
---- openswan-2.4.5rc5/programs/showhostkey/showhostkey.in 2004-11-14 14:40:41.000000000 +0100
-+++ openswan-2.4.5rc5.patched/programs/showhostkey/showhostkey.in 2006-03-29 01:20:44.000000000 +0200
-@@ -63,7 +63,7 @@
- exit 1
- fi
-
--host="`hostname --fqdn`"
-+host="`cat /proc/sys/kernel/hostname`"
-
- awk ' BEGIN {
- inkey = 0
-diff -Nur openswan-2.4.5rc5/programs/_startklips/_startklips.in openswan-2.4.5rc5.patched/programs/_startklips/_startklips.in
---- openswan-2.4.5rc5/programs/_startklips/_startklips.in 2005-11-25 00:08:05.000000000 +0100
-+++ openswan-2.4.5rc5.patched/programs/_startklips/_startklips.in 2006-03-29 01:23:54.000000000 +0200
-@@ -262,15 +262,15 @@
- echo "FATAL ERROR: Both KLIPS and NETKEY IPsec code is present in kernel"
- exit
- fi
--if test ! -f $ipsecversion && test ! -f $netkey && modprobe -qn ipsec
-+if test ! -f $ipsecversion && test ! -f $netkey && insmod ipsec
- then
- # statically compiled KLIPS/NETKEY not found; try to load the module
-- modprobe ipsec
-+ insmod ipsec
- fi
-
- if test ! -f $ipsecversion && test ! -f $netkey
- then
-- modprobe -v af_key
-+ insmod -v af_key
- fi
-
- if test -f $netkey
-@@ -278,21 +278,21 @@
- klips=false
- if test -f $modules
- then
-- modprobe -qv ah4
-- modprobe -qv esp4
-- modprobe -qv ipcomp
-+ insmod -qv ah4
-+ insmod -qv esp4
-+ insmod -qv ipcomp
- # xfrm4_tunnel is needed by ipip and ipcomp
-- modprobe -qv xfrm4_tunnel
-+ insmod -qv xfrm4_tunnel
- # xfrm_user contains netlink support for IPsec
-- modprobe -qv xfrm_user
-- modprobe -qv hw_random
-+ insmod -qv xfrm_user
-+ insmod -qv hw_random
- # padlock must load before aes module
-- modprobe -qv padlock
-+ insmod -qv padlock
- # load the most common ciphers/algo's
-- modprobe -qv sha1
-- modprobe -qv md5
-- modprobe -qv des
-- modprobe -qv aes
-+ insmod -qv sha1
-+ insmod -qv md5
-+ insmod -qv des
-+ insmod -qv aes
- fi
- fi
-
-@@ -308,10 +308,10 @@
- fi
- unset MODPATH MODULECONF # no user overrides!
- depmod -a >/dev/null 2>&1
-- modprobe -qv hw_random
-+ insmod -qv hw_random
- # padlock must load before aes module
-- modprobe -qv padlock
-- modprobe -v ipsec
-+ insmod -qv padlock
-+ insmod -v ipsec
- fi
- if test ! -f $ipsecversion
- then
-diff -Nur openswan-2.4.5rc5/programs/_startklips/_startklips.in.orig openswan-2.4.5rc5.patched/programs/_startklips/_startklips.in.orig
---- openswan-2.4.5rc5/programs/_startklips/_startklips.in.orig 1970-01-01 01:00:00.000000000 +0100
-+++ openswan-2.4.5rc5.patched/programs/_startklips/_startklips.in.orig 2005-11-25 00:08:05.000000000 +0100
-@@ -0,0 +1,407 @@
-+#!/bin/sh
-+# KLIPS startup script
-+# Copyright (C) 1998, 1999, 2001, 2002 Henry Spencer.
-+#
-+# 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. See <http://www.fsf.org/copyleft/gpl.txt>.
-+#
-+# 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.
-+#
-+# RCSID $Id$
-+
-+me='ipsec _startklips' # for messages
-+
-+# KLIPS-related paths
-+sysflags=/proc/sys/net/ipsec
-+modules=/proc/modules
-+# full rp_filter path is $rpfilter1/interface/$rpfilter2
-+rpfilter1=/proc/sys/net/ipv4/conf
-+rpfilter2=rp_filter
-+# %unchanged or setting (0, 1, or 2)
-+rpfiltercontrol=0
-+ipsecversion=/proc/net/ipsec_version
-+moduleplace=/lib/modules/`uname -r`/kernel/net/ipsec
-+bareversion=`uname -r | sed -e 's/\.nptl//' | sed -e 's/^\(2\.[0-9]\.[1-9][0-9]*-[1-9][0-9]*\(\.[0-9][0-9]*\)*\(\.x\)*\).*$/\1/'`
-+moduleinstplace=/lib/modules/$bareversion/kernel/net/ipsec
-+case $bareversion in
-+ 2.6*)
-+ modulename=ipsec.ko
-+ ;;
-+ *)
-+ modulename=ipsec.o
-+ ;;
-+esac
-+
-+klips=true
-+netkey=/proc/net/pfkey
-+
-+info=/dev/null
-+log=daemon.error
-+for dummy
-+do
-+ case "$1" in
-+ --log) log="$2" ; shift ;;
-+ --info) info="$2" ; shift ;;
-+ --debug) debug="$2" ; shift ;;
-+ --omtu) omtu="$2" ; shift ;;
-+ --fragicmp) fragicmp="$2" ; shift ;;
-+ --hidetos) hidetos="$2" ; shift ;;
-+ --rpfilter) rpfiltercontrol="$2" ; shift ;;
-+ --) shift ; break ;;
-+ -*) echo "$me: unknown option \`$1'" >&2 ; exit 2 ;;
-+ *) break ;;
-+ esac
-+ shift
-+done
-+
-+
-+
-+# some shell functions, to clarify the actual code
-+
-+# set up a system flag based on a variable
-+# sysflag value shortname default flagname
-+sysflag() {
-+ case "$1" in
-+ '') v="$3" ;;
-+ *) v="$1" ;;
-+ esac
-+ if test ! -f $sysflags/$4
-+ then
-+ if test " $v" != " $3"
-+ then
-+ echo "cannot do $2=$v, $sysflags/$4 does not exist"
-+ exit 1
-+ else
-+ return # can't set, but it's the default anyway
-+ fi
-+ fi
-+ case "$v" in
-+ yes|no) ;;
-+ *) echo "unknown (not yes/no) $2 value \`$1'"
-+ exit 1
-+ ;;
-+ esac
-+ case "$v" in
-+ yes) echo 1 >$sysflags/$4 ;;
-+ no) echo 0 >$sysflags/$4 ;;
-+ esac
-+}
-+
-+# set up a Klips interface
-+klipsinterface() {
-+ # pull apart the interface spec
-+ virt=`expr $1 : '\([^=]*\)=.*'`
-+ phys=`expr $1 : '[^=]*=\(.*\)'`
-+ case "$virt" in
-+ ipsec[0-9]) ;;
-+ *) echo "invalid interface \`$virt' in \`$1'" ; exit 1 ;;
-+ esac
-+
-+ # figure out ifconfig for interface
-+ addr=
-+ eval `ifconfig $phys |
-+ awk '$1 == "inet" && $2 ~ /^addr:/ && $NF ~ /^Mask:/ {
-+ gsub(/:/, " ", $0)
-+ print "addr=" $3
-+ other = $5
-+ if ($4 == "Bcast")
-+ print "type=broadcast"
-+ else if ($4 == "P-t-P")
-+ print "type=pointopoint"
-+ else if (NF == 5) {
-+ print "type="
-+ other = ""
-+ } else
-+ print "type=unknown"
-+ print "otheraddr=" other
-+ print "mask=" $NF
-+ }'`
-+ if test " $addr" = " "
-+ then
-+ echo "unable to determine address of \`$phys'"
-+ exit 1
-+ fi
-+ if test " $type" = " unknown"
-+ then
-+ echo "\`$phys' is of an unknown type"
-+ exit 1
-+ fi
-+ if test " $omtu" != " "
-+ then
-+ mtu="mtu $omtu"
-+ else
-+ mtu=
-+ fi
-+ echo "KLIPS $virt on $phys $addr/$mask $type $otheraddr $mtu" | logonly
-+
-+ if $klips
-+ then
-+ # attach the interface and bring it up
-+ ipsec tncfg --attach --virtual $virt --physical $phys
-+ ifconfig $virt inet $addr $type $otheraddr netmask $mask $mtu
-+ fi
-+
-+ # if %defaultroute, note the facts
-+ if test " $2" != " "
-+ then
-+ (
-+ echo "defaultroutephys=$phys"
-+ echo "defaultroutevirt=$virt"
-+ echo "defaultrouteaddr=$addr"
-+ if test " $2" != " 0.0.0.0"
-+ then
-+ echo "defaultroutenexthop=$2"
-+ fi
-+ ) >>$info
-+ else
-+ echo '#dr: no default route' >>$info
-+ fi
-+
-+ # check for rp_filter trouble
-+ checkif $phys # thought to be a problem only on phys
-+}
-+
-+# check an interface for problems
-+checkif() {
-+ $klips || return 0
-+ rpf=$rpfilter1/$1/$rpfilter2
-+ if test -f $rpf
-+ then
-+ r="`cat $rpf`"
-+ if test " $r" != " 0"
-+ then
-+ case "$r-$rpfiltercontrol" in
-+ 0-%unchanged|0-0|1-1|2-2)
-+ # happy state
-+ ;;
-+ *-%unchanged)
-+ echo "WARNING: $1 has route filtering turned on; KLIPS may not work ($rpf is $r)"
-+ ;;
-+ [012]-[012])
-+ echo "WARNING: changing route filtering on $1 (changing $rpf from $r to $rpfiltercontrol)"
-+ echo "$rpfiltercontrol" >$rpf
-+ ;;
-+ [012]-*)
-+ echo "ERROR: unknown rpfilter setting: $rpfiltercontrol"
-+ ;;
-+ *)
-+ echo "ERROR: unknown $rpf value $r"
-+ ;;
-+ esac
-+ fi
-+ fi
-+}
-+
-+# interfaces=%defaultroute: put ipsec0 on top of default route's interface
-+defaultinterface() {
-+ phys=`netstat -nr |
-+ awk '$1 == "0.0.0.0" && $3 == "0.0.0.0" { print $NF }'`
-+ if test " $phys" = " "
-+ then
-+ echo "no default route, %defaultroute cannot cope!!!"
-+ exit 1
-+ fi
-+ if test `echo " $phys" | wc -l` -gt 1
-+ then
-+ echo "multiple default routes, %defaultroute cannot cope!!!"
-+ exit 1
-+ fi
-+ next=`netstat -nr |
-+ awk '$1 == "0.0.0.0" && $3 == "0.0.0.0" { print $2 }'`
-+ klipsinterface "ipsec0=$phys" $next
-+}
-+
-+# log only to syslog, not to stdout/stderr
-+logonly() {
-+ logger -p $log -t ipsec_setup
-+}
-+
-+# sort out which module is appropriate, changing it if necessary
-+setmodule() {
-+ if [ -e /proc/kallsyms ]
-+ then
-+ kernelsymbols="/proc/kallsyms";
-+ echo "calcgoo: warning: 2.6 kernel with kallsyms not supported yet"
-+ else
-+ kernelsymbols="/proc/ksyms";
-+ fi
-+ wantgoo="`ipsec calcgoo $kernelsymbols`"
-+ module=$moduleplace/$modulename
-+ if test -f $module
-+ then
-+ goo="`nm -ao $module | ipsec calcgoo`"
-+ if test " $wantgoo" = " $goo"
-+ then
-+ return # looks right
-+ fi
-+ fi
-+ if test -f $moduleinstplace/$wantgoo
-+ then
-+ echo "modprobe failed, but found matching template module $wantgoo."
-+ echo "Copying $moduleinstplace/$wantgoo to $module."
-+ rm -f $module
-+ mkdir -p $moduleplace
-+ cp -p $moduleinstplace/$wantgoo $module
-+ # "depmod -a" gets done by caller
-+ fi
-+}
-+
-+
-+
-+# main line
-+
-+# load module if possible
-+if test -f $ipsecversion && test -f $netkey
-+then
-+ # both KLIPS and NETKEY code detected, bail out
-+ echo "FATAL ERROR: Both KLIPS and NETKEY IPsec code is present in kernel"
-+ exit
-+fi
-+if test ! -f $ipsecversion && test ! -f $netkey && modprobe -qn ipsec
-+then
-+ # statically compiled KLIPS/NETKEY not found; try to load the module
-+ modprobe ipsec
-+fi
-+
-+if test ! -f $ipsecversion && test ! -f $netkey
-+then
-+ modprobe -v af_key
-+fi
-+
-+if test -f $netkey
-+then
-+ klips=false
-+ if test -f $modules
-+ then
-+ modprobe -qv ah4
-+ modprobe -qv esp4
-+ modprobe -qv ipcomp
-+ # xfrm4_tunnel is needed by ipip and ipcomp
-+ modprobe -qv xfrm4_tunnel
-+ # xfrm_user contains netlink support for IPsec
-+ modprobe -qv xfrm_user
-+ modprobe -qv hw_random
-+ # padlock must load before aes module
-+ modprobe -qv padlock
-+ # load the most common ciphers/algo's
-+ modprobe -qv sha1
-+ modprobe -qv md5
-+ modprobe -qv des
-+ modprobe -qv aes
-+ fi
-+fi
-+
-+if test ! -f $ipsecversion && $klips
-+then
-+ if test -r $modules # kernel does have modules
-+ then
-+ if [ ! -e /proc/ksyms -a ! -e /proc/kallsyms ]
-+ then
-+ echo "Broken 2.6 kernel without kallsyms, skipping calcgoo (Fedora rpm?)"
-+ else
-+ setmodule
-+ fi
-+ unset MODPATH MODULECONF # no user overrides!
-+ depmod -a >/dev/null 2>&1
-+ modprobe -qv hw_random
-+ # padlock must load before aes module
-+ modprobe -qv padlock
-+ modprobe -v ipsec
-+ fi
-+ if test ! -f $ipsecversion
-+ then
-+ echo "kernel appears to lack IPsec support (neither CONFIG_KLIPS or CONFIG_NET_KEY are set)"
-+ exit 1
-+ fi
-+fi
-+
-+# figure out debugging flags
-+case "$debug" in
-+'') debug=none ;;
-+esac
-+if test -r /proc/net/ipsec_klipsdebug
-+then
-+ echo "KLIPS debug \`$debug'" | logonly
-+ case "$debug" in
-+ none) ipsec klipsdebug --none ;;
-+ all) ipsec klipsdebug --all ;;
-+ *) ipsec klipsdebug --none
-+ for d in $debug
-+ do
-+ ipsec klipsdebug --set $d
-+ done
-+ ;;
-+ esac
-+elif $klips
-+then
-+ if test " $debug" != " none"
-+ then
-+ echo "klipsdebug=\`$debug' ignored, KLIPS lacks debug facilities"
-+ fi
-+fi
-+
-+# figure out misc. kernel config
-+if test -d $sysflags
-+then
-+ sysflag "$fragicmp" "fragicmp" yes icmp
-+ echo 1 >$sysflags/inbound_policy_check # no debate
-+ sysflag no "no_eroute_pass" no no_eroute_pass # obsolete parm
-+ sysflag no "opportunistic" no opportunistic # obsolete parm
-+ sysflag "$hidetos" "hidetos" yes tos
-+elif $klips
-+then
-+ echo "WARNING: cannot adjust KLIPS flags, no $sysflags directory!"
-+ # carry on
-+fi
-+
-+if $klips
-+then
-+ # clear tables out in case dregs have been left over
-+ ipsec eroute --clear
-+ ipsec spi --clear
-+elif test $netkey
-+then
-+ if ip xfrm state > /dev/null 2>&1
-+ then
-+ ip xfrm state flush
-+ ip xfrm policy flush
-+ elif type setkey > /dev/null 2>&1
-+ then
-+ # Check that the setkey command is available.
-+ setkeycmd=
-+ PATH=$PATH:/usr/local/sbin
-+ for dir in `echo $PATH | tr ':' ' '`
-+ do
-+ if test -f $dir/setkey -a -x $dir/setkey
-+ then
-+ setkeycmd=$dir/setkey
-+ break # NOTE BREAK OUT
-+ fi
-+ done
-+ $setkeycmd -F
-+ $setkeycmd -FP
-+ else
-+
-+ echo "WARNING: cannot flush state/policy database -- \`$1'. Install a newer version of iproute/iproute2 or install the ipsec-tools package to obtain the setkey command." |
-+ logger -s -p daemon.error -t ipsec_setup
-+ fi
-+fi
-+
-+# figure out interfaces
-+for i
-+do
-+ case "$i" in
-+ ipsec*=?*) klipsinterface "$i" ;;
-+ %defaultroute) defaultinterface ;;
-+ *) echo "interface \`$i' not understood"
-+ exit 1
-+ ;;
-+ esac
-+done
-+
-+exit 0
diff --git a/openwrt/package/openswan/patches/use-dev-urandom.patch b/openwrt/package/openswan/patches/use-dev-urandom.patch
deleted file mode 100644
index 1a19884584..0000000000
--- a/openwrt/package/openswan/patches/use-dev-urandom.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff -urN openswan-2.3.1dr6.old/programs/ranbits/ranbits.c openswan-2.3.1dr6.dev/programs/ranbits/ranbits.c
---- openswan-2.3.1dr6.old/programs/ranbits/ranbits.c 2004-04-04 03:50:56.000000000 +0200
-+++ openswan-2.3.1dr6.dev/programs/ranbits/ranbits.c 2005-04-05 17:37:16.000000000 +0200
-@@ -29,7 +29,7 @@
- #include <openswan.h>
-
- #ifndef DEVICE
--#define DEVICE "/dev/random"
-+#define DEVICE "/dev/urandom"
- #endif
- #ifndef QDEVICE
- #define QDEVICE "/dev/urandom"
-diff -urN openswan-2.3.1dr6.old/programs/rsasigkey/rsasigkey.c openswan-2.3.1dr6.dev/programs/rsasigkey/rsasigkey.c
---- openswan-2.3.1dr6.old/programs/rsasigkey/rsasigkey.c 2004-05-23 23:32:03.000000000 +0200
-+++ openswan-2.3.1dr6.dev/programs/rsasigkey/rsasigkey.c 2005-04-05 17:38:00.000000000 +0200
-@@ -31,7 +31,7 @@
- #include <gmp.h>
-
- #ifndef DEVICE
--#define DEVICE "/dev/random"
-+#define DEVICE "/dev/urandom"
- #endif
- #ifndef MAXBITS
- #define MAXBITS 20000
-diff -urN openswan-2.3.1dr6.old/programs/starter/files.h openswan-2.3.1dr6.dev/programs/starter/files.h
---- openswan-2.3.1dr6.old/programs/starter/files.h 2005-01-11 18:52:51.000000000 +0100
-+++ openswan-2.3.1dr6.dev/programs/starter/files.h 2005-04-05 17:38:16.000000000 +0200
-@@ -36,7 +36,7 @@
-
- #define MY_PID_FILE "/var/run/pluto/ipsec-starter.pid"
-
--#define DEV_RANDOM "/dev/random"
-+#define DEV_RANDOM "/dev/urandom"
- #define DEV_URANDOM "/dev/urandom"
-
- #define PROC_IPSECVERSION "/proc/net/ipsec_version"
diff --git a/openwrt/package/openvpn/Config.in b/openwrt/package/openvpn/Config.in
deleted file mode 100644
index e8c88e726a..0000000000
--- a/openwrt/package/openvpn/Config.in
+++ /dev/null
@@ -1,64 +0,0 @@
-menu "openvpn........................... Open source VPN solution using SSL"
-
-config BR2_PACKAGE_OPENVPN
- prompt "openvpn........................... Open source VPN solution using SSL"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_KMOD_TUN
- help
- Open Source VPN solution using SSL
-
- http://openvpn.net/
-
- Depends: kmod-tun, libpthread
-
-config BR2_PACKAGE_OPENVPN_EASY_RSA
- prompt "openvpn-easy-rsa................ simple shell scripts to manage a Certificate Authority"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_OPENSSL_UTIL
- depends on BR2_PACKAGE_OPENVPN
- help
- collection of shell scripts to manage a simple CA infrastructure
-
- Depends: openpvn, openssl-util
-
-config BR2_COMPILE_OPENVPN_WITH_SERVER
- prompt "Enable server support"
- bool
- default y
- depends BR2_PACKAGE_OPENVPN
-
-config BR2_COMPILE_OPENVPN_WITH_HTTP
- prompt "Enable http proxy support"
- bool
- default y
- depends BR2_PACKAGE_OPENVPN
-
-config BR2_COMPILE_OPENVPN_WITH_OPENSSL
- prompt "Enable openssl support"
- bool
- default y
- depends BR2_PACKAGE_OPENVPN
- select BR2_PACKAGE_LIBOPENSSL
-
-config BR2_COMPILE_OPENVPN_WITH_LZO
- prompt "Enable transparent compression (lzo)"
- bool
- default y
- depends BR2_PACKAGE_OPENVPN
- select BR2_PACKAGE_LIBLZO
-
-config BR2_COMPILE_OPENVPN_WITH_PASSWORD_SAVE
- prompt "Enable password saving"
- bool
- default y
- depends BR2_PACKAGE_OPENVPN
-
-config BR2_COMPILE_OPENVPN_WITH_SMALL
- prompt "Enable smaller executable size (disable OCC, usage message, and verb 4 parm list)"
- bool
- default n
- depends BR2_PACKAGE_OPENVPN
-
-endmenu
diff --git a/openwrt/package/openvpn/Makefile b/openwrt/package/openvpn/Makefile
deleted file mode 100644
index cf3017ef18..0000000000
--- a/openwrt/package/openvpn/Makefile
+++ /dev/null
@@ -1,111 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=openvpn
-PKG_VERSION:=2.0.7
-PKG_RELEASE:=1
-PKG_MD5SUM:=93528233f1f6d02fc18e2c00f82e0aca
-
-PKG_SOURCE_URL:=http://openvpn.net/release @SF/openvpn
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,OPENVPN,openvpn,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,OPENVPN_EASY_RSA,openvpn-easy-rsa,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-PKG_DEPEND:="kmod-tun"
-
-ifneq ($(BR2_COMPILE_OPENVPN_WITH_OPENSSL),y)
-DISABLE_OPENSSL:=--disable-ssl --disable-crypto
-else
-PKG_DEPEND+=", libopenssl"
-endif
-
-ifneq ($(BR2_COMPILE_OPENVPN_WITH_LZO),y)
-DISABLE_LZO:=--disable-lzo
-else
-PKG_DEPEND+=", liblzo"
-endif
-
-ifneq ($(BR2_COMPILE_OPENVPN_WITH_SERVER),y)
-DISABLE_SERVER:=--disable-server
-endif
-ifneq ($(BR2_COMPILE_OPENVPN_WITH_HTTP),y)
-DISABLE_HTTP:=--disable-http
-endif
-ifeq ($(BR2_COMPILE_OPENVPN_WITH_PASSWORD_SAVE),y)
-ENABLE_PASSWORD_SAVE:=--enable-password-save
-endif
-ifeq ($(BR2_COMPILE_OPENVPN_WITH_SMALL),y)
-ENABLE_SMALL:=--enable-small
-endif
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --disable-pthread \
- --disable-debug \
- --disable-plugins \
- --disable-management \
- --disable-socks \
- $(DISABLE_LZO) \
- $(DISABLE_OPENSSL) \
- $(DISABLE_SERVER) \
- $(DISABLE_HTTP) \
- $(ENABLE_PASSWORD_SAVE) \
- $(ENABLE_SMALL) \
- );
- touch $(PKG_BUILD_DIR)/.configured
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- touch $(PKG_BUILD_DIR)/.built
-
-$(IPKG_OPENVPN):
- install -d -m0755 $(IDIR_OPENVPN)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/openvpn $(IDIR_OPENVPN)/usr/sbin/
- $(RSTRIP) $(IDIR_OPENVPN)
- echo "Depends: $(PKG_DEPEND)" >> $(IDIR_OPENVPN)/CONTROL/control
- $(IPKG_BUILD) $(IDIR_OPENVPN) $(PACKAGE_DIR)
-
-$(IPKG_OPENVPN_EASY_RSA):
- install -d -m0755 $(IDIR_OPENVPN_EASY_RSA)/usr/sbin $(IDIR_OPENVPN_EASY_RSA)/etc/easy-rsa
- $(CP) $(PKG_BUILD_DIR)/easy-rsa/2.0/{build-*,clean-all,inherit-inter,list-crl,pkitool,revoke-full,sign-req} $(IDIR_OPENVPN_EASY_RSA)/usr/sbin
- install -m 0644 $(PKG_BUILD_DIR)/easy-rsa/2.0/openssl.cnf $(IDIR_OPENVPN_EASY_RSA)/etc/easy-rsa/openssl.cnf
- install -m 0644 $(PKG_BUILD_DIR)/easy-rsa/2.0/vars $(IDIR_OPENVPN_EASY_RSA)/etc/easy-rsa/vars
- $(IPKG_BUILD) $(IDIR_OPENVPN_EASY_RSA) $(PACKAGE_DIR)
diff --git a/openwrt/package/openvpn/ipkg/openvpn-easy-rsa.control b/openwrt/package/openvpn/ipkg/openvpn-easy-rsa.control
deleted file mode 100644
index 6ce25a46a8..0000000000
--- a/openwrt/package/openvpn/ipkg/openvpn-easy-rsa.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: openvpn-easy-rsa
-Priority: optional
-Section: net
-Description: collection of shell scripts to manage a simple CA infrastructure
-Depends: openssl-util
diff --git a/openwrt/package/openvpn/ipkg/openvpn.control b/openwrt/package/openvpn/ipkg/openvpn.control
deleted file mode 100644
index 50f06bacb4..0000000000
--- a/openwrt/package/openvpn/ipkg/openvpn.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: openvpn
-Priority: optional
-Section: net
-Description: Open Source VPN solution using SSL
diff --git a/openwrt/package/openvpn/patches/easy-rsa.patch b/openwrt/package/openvpn/patches/easy-rsa.patch
deleted file mode 100644
index c5332b7906..0000000000
--- a/openwrt/package/openvpn/patches/easy-rsa.patch
+++ /dev/null
@@ -1,159 +0,0 @@
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/build-ca openvpn-2.0.7/easy-rsa/2.0/build-ca
---- openvpn-2.0.7.orig/easy-rsa/2.0/build-ca 2005-11-02 19:42:38.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/build-ca 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- #
- # Build a root certificate
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/build-dh openvpn-2.0.7/easy-rsa/2.0/build-dh
---- openvpn-2.0.7.orig/easy-rsa/2.0/build-dh 2005-11-02 19:42:39.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/build-dh 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,6 @@
--#!/bin/bash
-+#!/bin/sh
-+
-+. /etc/easy-rsa/vars
-
- # Build Diffie-Hellman parameters for the server side
- # of an SSL/TLS connection.
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/build-inter openvpn-2.0.7/easy-rsa/2.0/build-inter
---- openvpn-2.0.7.orig/easy-rsa/2.0/build-inter 2005-11-02 19:42:39.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/build-inter 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- # Make an intermediate CA certificate/private key pair using a locally generated
- # root certificate.
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/build-key openvpn-2.0.7/easy-rsa/2.0/build-key
---- openvpn-2.0.7.orig/easy-rsa/2.0/build-key 2005-11-02 19:42:39.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/build-key 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- # Make a certificate/private key pair using a locally generated
- # root certificate.
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/build-key-pass openvpn-2.0.7/easy-rsa/2.0/build-key-pass
---- openvpn-2.0.7.orig/easy-rsa/2.0/build-key-pass 2005-11-02 19:42:39.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/build-key-pass 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- # Similar to build-key, but protect the private key
- # with a password.
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/build-key-pkcs12 openvpn-2.0.7/easy-rsa/2.0/build-key-pkcs12
---- openvpn-2.0.7.orig/easy-rsa/2.0/build-key-pkcs12 2005-11-02 19:42:39.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/build-key-pkcs12 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- # Make a certificate/private key pair using a locally generated
- # root certificate and convert it to a PKCS #12 file including the
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/build-key-server openvpn-2.0.7/easy-rsa/2.0/build-key-server
---- openvpn-2.0.7.orig/easy-rsa/2.0/build-key-server 2005-11-02 19:42:39.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/build-key-server 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- # Make a certificate/private key pair using a locally generated
- # root certificate.
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/build-req openvpn-2.0.7/easy-rsa/2.0/build-req
---- openvpn-2.0.7.orig/easy-rsa/2.0/build-req 2005-11-02 19:42:38.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/build-req 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- # Build a certificate signing request and private key. Use this
- # when your root certificate and key is not available locally.
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/build-req-pass openvpn-2.0.7/easy-rsa/2.0/build-req-pass
---- openvpn-2.0.7.orig/easy-rsa/2.0/build-req-pass 2005-11-02 19:42:39.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/build-req-pass 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- # Like build-req, but protect your private key
- # with a password.
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/clean-all openvpn-2.0.7/easy-rsa/2.0/clean-all
---- openvpn-2.0.7.orig/easy-rsa/2.0/clean-all 2005-11-02 19:42:39.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/clean-all 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,6 @@
--#!/bin/bash
-+#!/bin/sh
-+
-+. /etc/easy-rsa/vars
-
- # Initialize the $KEY_DIR directory.
- # Note that this script does a
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/inherit-inter openvpn-2.0.7/easy-rsa/2.0/inherit-inter
---- openvpn-2.0.7.orig/easy-rsa/2.0/inherit-inter 2005-11-02 19:42:38.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/inherit-inter 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,6 @@
--#!/bin/bash
-+#!/bin/sh
-+
-+. /etc/easy-rsa/vars
-
- # Build a new PKI which is rooted on an intermediate certificate generated
- # by ./build-inter or ./pkitool --inter from a parent PKI. The new PKI should
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/list-crl openvpn-2.0.7/easy-rsa/2.0/list-crl
---- openvpn-2.0.7.orig/easy-rsa/2.0/list-crl 2005-11-02 19:42:39.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/list-crl 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,6 @@
--#!/bin/bash
-+#!/bin/sh
-+
-+. /etc/easy-rsa/vars
-
- # list revoked certificates
-
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/pkitool openvpn-2.0.7/easy-rsa/2.0/pkitool
---- openvpn-2.0.7.orig/easy-rsa/2.0/pkitool 2005-11-02 19:42:38.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/pkitool 2006-05-09 17:47:40.000000000 +0200
-@@ -1,5 +1,7 @@
- #!/bin/sh
-
-+. /etc/easy-rsa/vars
-+
- # OpenVPN -- An application to securely tunnel IP networks
- # over a single TCP/UDP port, with support for SSL/TLS-based
- # session authentication and key exchange,
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/revoke-full openvpn-2.0.7/easy-rsa/2.0/revoke-full
---- openvpn-2.0.7.orig/easy-rsa/2.0/revoke-full 2005-11-02 19:42:39.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/revoke-full 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,6 @@
--#!/bin/bash
-+#!/bin/sh
-+
-+. /etc/easy-rsa/vars
-
- # revoke a certificate, regenerate CRL,
- # and verify revocation
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/sign-req openvpn-2.0.7/easy-rsa/2.0/sign-req
---- openvpn-2.0.7.orig/easy-rsa/2.0/sign-req 2005-11-02 19:42:39.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/sign-req 2006-05-09 17:47:40.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- # Sign a certificate signing request (a .csr file)
- # with a local root certificate and key.
-diff -ur openvpn-2.0.7.orig/easy-rsa/2.0/vars openvpn-2.0.7/easy-rsa/2.0/vars
---- openvpn-2.0.7.orig/easy-rsa/2.0/vars 2005-11-02 19:42:39.000000000 +0100
-+++ openvpn-2.0.7/easy-rsa/2.0/vars 2006-05-09 17:47:40.000000000 +0200
-@@ -12,7 +12,7 @@
- # This variable should point to
- # the top level of the easy-rsa
- # tree.
--export EASY_RSA="`pwd`"
-+export EASY_RSA="/etc/easy-rsa"
-
- # This variable should point to
- # the openssl.cnf file included
diff --git a/openwrt/package/osiris/Config.in b/openwrt/package/osiris/Config.in
deleted file mode 100644
index 69afb90778..0000000000
--- a/openwrt/package/osiris/Config.in
+++ /dev/null
@@ -1,18 +0,0 @@
-config BR2_COMPILE_OSIRIS
- tristate
- default n
- depends BR2_PACKAGE_OSIRISD
-
-config BR2_PACKAGE_OSIRISD
- prompt "osirisd........................... Host integrity monitoring system (scanning agent)"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_OSIRIS
- select BR2_PACKAGE_LIBOPENSSL
- help
- An host integrity monitoring system (scanning agent)
-
- http://www.hostintegrity.com/osiris/
-
- Depends: openssl
-
diff --git a/openwrt/package/osiris/Makefile b/openwrt/package/osiris/Makefile
deleted file mode 100644
index 900a1491dc..0000000000
--- a/openwrt/package/osiris/Makefile
+++ /dev/null
@@ -1,73 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=osiris
-PKG_VERSION:=4.2.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=ad30995660e506ee6d1d6460601f6107
-
-PKG_SOURCE_URL:=http://www.hostintegrity.com/osiris/data/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,OSIRISD,osirisd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ac_cv_openssldir="$(STAGING_DIR)/usr" \
- ac_cv_have_accrights_in_msghdr=no \
- ac_cv_have_control_in_msghdr=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --with-osiris-user=root \
- --with-root-dir=/var/lib/osiris \
- --with-readline=no \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- ar=$(TARGET_CROSS)ar \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- INTERACTIVE=0 \
- all install
- touch $@
-
-$(IPKG_OSIRISD):
- install -d -m0755 $(IDIR_OSIRISD)/etc/init.d
- install -m0755 ./files/osirisd.init $(IDIR_OSIRISD)/etc/init.d/osirisd
- install -d -m0755 $(IDIR_OSIRISD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/osirisd $(IDIR_OSIRISD)/usr/sbin/
- $(RSTRIP) $(IDIR_OSIRISD)
- $(IPKG_BUILD) $(IDIR_OSIRISD) $(PACKAGE_DIR)
diff --git a/openwrt/package/osiris/files/osirisd.init b/openwrt/package/osiris/files/osirisd.init
deleted file mode 100644
index 75904e3499..0000000000
--- a/openwrt/package/osiris/files/osirisd.init
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-BIN=osirisd
-DEFAULT=/etc/default/$BIN
-LIB_D=/var/lib/osiris
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- mkdir -p $LIB_D
- mkdir -p $RUN_D
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-exit $?
diff --git a/openwrt/package/osiris/ipkg/osirisd.control b/openwrt/package/osiris/ipkg/osirisd.control
deleted file mode 100644
index defe7c3569..0000000000
--- a/openwrt/package/osiris/ipkg/osirisd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: osirisd
-Priority: optional
-Section: admin
-Depends: libopenssl, libpthread
-Description: an Host Integrity Monitoring System (scanning agent)
diff --git a/openwrt/package/osiris/patches/01-configure-cross.patch b/openwrt/package/osiris/patches/01-configure-cross.patch
deleted file mode 100644
index 025a3f8419..0000000000
--- a/openwrt/package/osiris/patches/01-configure-cross.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- osiris-4.1.8-orig/configure 2005-04-13 15:22:13.000000000 +0200
-+++ osiris-4.1.8-1/configure 2005-04-22 23:11:32.000000000 +0200
-@@ -3606,7 +3606,7 @@
- esac
-
-
--DB_CONFIG_ARGS="--enable-shared=no --enable-static=yes"
-+DB_CONFIG_ARGS="--target=${target_alias} --host=${host_alias} --build=${build_alias} --enable-shared=no --enable-static=yes"
-
- case "${OS_NAME}" in
- MINGW32*)
---- osiris-4.1.8-orig/configure.ac 2005-04-13 15:22:13.000000000 +0200
-+++ osiris-4.1.8-1/configure.ac 2005-04-22 23:11:32.000000000 +0200
-@@ -270,7 +270,7 @@
-
- dnl configure local copy of Berkely DB:
-
--DB_CONFIG_ARGS="--enable-shared=no --enable-static=yes"
-+DB_CONFIG_ARGS="--target=${target_alias} --host=${host_alias} --build=${build_alias} --enable-shared=no --enable-static=yes"
-
- case "${OS_NAME}" in
- MINGW32*)
diff --git a/openwrt/package/osiris/patches/02-osirisd-pidfile.patch b/openwrt/package/osiris/patches/02-osirisd-pidfile.patch
deleted file mode 100644
index 80c52dbf1a..0000000000
--- a/openwrt/package/osiris/patches/02-osirisd-pidfile.patch
+++ /dev/null
@@ -1,68 +0,0 @@
---- osiris-4.1.8-orig/src/osirisd/osirisd.c 2005-04-14 01:00:55.000000000 +0200
-+++ osiris-4.1.8-1/src/osirisd/osirisd.c 2005-04-22 23:11:32.000000000 +0200
-@@ -218,6 +218,8 @@
-
- #ifdef USE_PRIVSEP
- rootpriv_setup_pidfile();
-+#else
-+ setup_pidfile();
- #endif
-
- process();
---- osiris-4.1.8-orig/src/osirisd/rootpriv.c 2005-04-14 00:55:59.000000000 +0200
-+++ osiris-4.1.8-1/src/osirisd/rootpriv.c 2005-04-22 23:25:10.000000000 +0200
-@@ -35,6 +35,10 @@
- #include "logging.h"
- #include "rootpriv.h"
-
-+#ifndef WIN32
-+extern char pid_file[MAX_PATH_LENGTH];
-+#endif
-+
- #ifdef USE_PRIVSEP
-
- /* this is defined in regex, and sometimes conflicts with stuff */
-@@ -80,10 +84,6 @@
- extern pid_t child_pid;
- extern int rootpriv_pipe[2]; /* socketpair used for rootpriv comm. */
-
--#ifndef WIN32
--extern char pid_file[MAX_PATH_LENGTH];
--#endif
--
- #define INCOMING_ROOT_REQUEST() ( FD_ISSET( rootpriv_pipe[1], &root_read_set ) )
-
-
-@@ -292,17 +292,6 @@
- #endif
- }
-
--void setup_pidfile()
--{
-- FILE *pidfile = fopen( pid_file, "wb" );
--
-- if( pidfile != NULL )
-- {
-- fprintf( pidfile, "%ld\n", (long)getpid() );
-- fclose( pidfile );
-- }
--}
--
- void handle_signals()
- {
- pid_t pid;
-@@ -789,3 +778,14 @@
-
- #endif /* USE_PRIVSEP */
-
-+void setup_pidfile()
-+{
-+ FILE *pidfile = fopen( pid_file, "wb" );
-+
-+ if( pidfile != NULL )
-+ {
-+ fprintf( pidfile, "%ld\n", (long)getpid() );
-+ fclose( pidfile );
-+ }
-+}
-+
diff --git a/openwrt/package/osiris/patches/03-openssl-0.9.8+.patch b/openwrt/package/osiris/patches/03-openssl-0.9.8+.patch
deleted file mode 100644
index 806cf3afe2..0000000000
--- a/openwrt/package/osiris/patches/03-openssl-0.9.8+.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -ruN osiris-4.1.9-old/src/osirismd/md_control.c osiris-4.1.9-new/src/osirismd/md_control.c
---- osiris-4.1.9-old/src/osirismd/md_control.c 2005-03-24 16:36:07.000000000 +0100
-+++ osiris-4.1.9-new/src/osirismd/md_control.c 2006-03-28 01:32:32.000000000 +0200
-@@ -3262,9 +3262,9 @@
- int index;
- char checksum[41];
-
-- SHA_Init( &context );
-- SHA_Update( &context, key, (unsigned long)keysize );
-- SHA_Final( &( digest[0] ), &context );
-+ SHA1_Init( &context );
-+ SHA1_Update( &context, key, (unsigned long)keysize );
-+ SHA1_Final( &( digest[0] ), &context );
-
- for ( index = 0; index < SHA_DIGEST_LENGTH; index++ )
- {
diff --git a/openwrt/package/osiris/patches/mod_if.patch b/openwrt/package/osiris/patches/mod_if.patch
deleted file mode 100644
index 6d18010de1..0000000000
--- a/openwrt/package/osiris/patches/mod_if.patch
+++ /dev/null
@@ -1,392 +0,0 @@
-Description: The mod_if module monitors various aspects of network
- interfaces for change, including IP, Hardware Address,
- broadcast, MTU, metric, and promiscuous mode.
-Version: 0.2
-
-diff -ruN osiris-4.1.9-old/src/osirisd/modules/mod_if/Makefile osiris-4.1.9-new/src/osirisd/modules/mod_if/Makefile
---- osiris-4.1.9-old/src/osirisd/modules/mod_if/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ osiris-4.1.9-new/src/osirisd/modules/mod_if/Makefile 2005-10-07 02:19:17.000000000 +0200
-@@ -0,0 +1,16 @@
-+
-+include ../Makefile
-+
-+SRCS=mod_if.c
-+OBJS=$(SRCS:.c=.o)
-+
-+module: ${SRCS} ${OBJS}
-+
-+INCS=-I../.. -I../../../libosiris -I../../../libfileapi -I../../../..
-+
-+# meta-rule for compiling any "C" source file.
-+$(OBJS): $(SRCS)
-+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) ${INCLUDES} ${INCS} $(AM_CPPFLAGS) \
-+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c $(SRCS)
-+ cp $@ ..
-+
-diff -ruN osiris-4.1.9-old/src/osirisd/modules/mod_if/README osiris-4.1.9-new/src/osirisd/modules/mod_if/README
---- osiris-4.1.9-old/src/osirisd/modules/mod_if/README 1970-01-01 01:00:00.000000000 +0100
-+++ osiris-4.1.9-new/src/osirisd/modules/mod_if/README 2005-10-07 02:19:17.000000000 +0200
-@@ -0,0 +1,42 @@
-+
-+Module: mod_if
-+Author: Brian Wotring (brian@hostintegrity.com)
-+
-+
-+
-+DESCRIPTION:
-+
-+The mod_if module is designed originally to monitor the promisc flag
-+on network interfaces, but quickly turned into being able to monitor
-+various aspects of network interfaces including hardware address,
-+IP address, broadcast, MTU, and metric.
-+
-+This module is somewhat different in that each record is an element
-+about a network interface as opposed to one record per interface. This
-+will make it easier to add more elements to be monitored, easier to
-+filter, and easier to understand alerts.
-+
-+USE:
-+
-+To use this module, all that is needed is to include it in the Modules
-+block of a scan configuration, e.g.:
-+
-+ <Modules>
-+ ...
-+ Include mod_if
-+ ...
-+ </Modules>
-+
-+
-+PARAMETERS:
-+
-+There are no parameters for this module.
-+
-+PLATFORMS:
-+
-+Currently, this module is only implemented for Linux.
-+
-+NOTES:
-+
-+
-+
-diff -ruN osiris-4.1.9-old/src/osirisd/modules/mod_if/mod_if.c osiris-4.1.9-new/src/osirisd/modules/mod_if/mod_if.c
---- osiris-4.1.9-old/src/osirisd/modules/mod_if/mod_if.c 1970-01-01 01:00:00.000000000 +0100
-+++ osiris-4.1.9-new/src/osirisd/modules/mod_if/mod_if.c 2005-10-07 02:19:17.000000000 +0200
-@@ -0,0 +1,317 @@
-+
-+/******************************************************************************
-+**
-+** Copyright (C) 2005 Brian Wotring.
-+**
-+** This program is free software; you can redistribute it and/or
-+** modify it, however, you cannot sell it.
-+**
-+** 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.
-+**
-+** You should have received a copy of the license attached to the
-+** use of this software. If not, view a current copy of the license
-+** file here:
-+**
-+** http://www.hostintegrity.com/osiris/LICENSE
-+**
-+******************************************************************************/
-+
-+/*****************************************************************************
-+**
-+** File: mod_if.c
-+** Date: September 23, 2005
-+**
-+** Author: Brian Wotring
-+** Purpose: platform specific methods for monitoring network devices.
-+**
-+******************************************************************************/
-+
-+
-+/* CODE USED IN THIS MODULE WAS ORIGINALLY TAKEN FROM:
-+*
-+* http://mail.nl.linux.org/kernelnewbies/2003-05/msg00090.html
-+*/
-+
-+static const char *MODULE_NAME = "mod_if";
-+
-+
-+#ifndef WIN32
-+#include "config.h"
-+#endif
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+
-+#ifndef WIN32
-+#include <unistd.h>
-+#include <string.h>
-+#include <errno.h>
-+
-+#include <sys/socket.h>
-+#include <sys/types.h>
-+#include <net/if.h>
-+#endif
-+
-+#include <sys/ioctl.h>
-+#include <net/if_arp.h>
-+#include <arpa/inet.h>
-+
-+
-+#include "libosiris.h"
-+#include "libfileapi.h"
-+#include "rootpriv.h"
-+#include "common.h"
-+#include "version.h"
-+
-+#include "scanner.h"
-+#include "logging.h"
-+
-+
-+#define inaddrr(x) (*(struct in_addr *) &ifr->x[sizeof sa.sin_port])
-+#define IFRSIZE ((int)(size * sizeof (struct ifreq)))
-+
-+void process_if_unix( SCANNER *scanner )
-+{
-+ unsigned char*u;
-+ int sockfd, size = 1;
-+ struct ifreq *ifr;
-+ struct ifconf ifc;
-+ struct sockaddr_in sa;
-+
-+ SCAN_RECORD_TEXT_1 record;
-+
-+ /* Make sure we are able to create sockets */
-+
-+ if ( (sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP)) < 0 )
-+ {
-+ log_error( "mod_if unable to create socket!" );
-+ return;
-+ }
-+
-+ ifc.ifc_len = IFRSIZE;
-+ ifc.ifc_req = NULL;
-+
-+ do
-+ {
-+ ++size;
-+
-+ /* realloc buffer size until no overflow occurs */
-+
-+ if ((ifc.ifc_req = realloc(ifc.ifc_req, IFRSIZE)) == NULL )
-+ {
-+ log_error( "out of memory!!!" );
-+ return;
-+ }
-+
-+ ifc.ifc_len = IFRSIZE;
-+
-+ if (ioctl(sockfd, SIOCGIFCONF, &ifc))
-+ {
-+ log_error("ioctl failure: SIOCFIFCONF");
-+ return;
-+ }
-+
-+ } while (IFRSIZE <= ifc.ifc_len);
-+
-+ ifr = ifc.ifc_req;
-+
-+ for (;(char *) ifr < (char *) ifc.ifc_req + ifc.ifc_len; ++ifr)
-+ {
-+ if (ifr->ifr_addr.sa_data == (ifr+1)->ifr_addr.sa_data)
-+ {
-+ continue; /* duplicate, skip it */
-+ }
-+
-+ if (ioctl(sockfd, SIOCGIFFLAGS, ifr))
-+ {
-+ continue; /* failed to get flags, skip it */
-+ }
-+
-+ initialize_scan_record( (SCAN_RECORD *)&record,
-+ SCAN_RECORD_TYPE_TEXT_1 );
-+
-+ osi_strlcpy( record.module_name, MODULE_NAME,
-+ sizeof( record.module_name ) );
-+
-+ osi_snprintf( record.name, sizeof( record.name ),
-+ "if:%s:IP", ifr->ifr_name );
-+
-+ osi_snprintf( record.data, sizeof( record.data ),
-+ "%s", inet_ntoa(inaddrr(ifr_addr.sa_data)));
-+
-+ send_scan_data( scanner, (SCAN_RECORD *)&record );
-+
-+ /*
-+ * This won't work on HP-UX 10.20 as there's no SIOCGIFHWADDR ioctl. You'll
-+ * need to use DLPI or the NETSTAT ioctl on /dev/lan0, etc (and you'll need
-+ * to be root to use the NETSTAT ioctl. Also this is deprecated and doesn't
-+ * work on 11.00).
-+ *
-+ * On Digital Unix you can use the SIOCRPHYSADDR ioctl according to an old
-+ * utility I have. Also on SGI I think you need to use a raw socket, e.g. s
-+ * = socket(PF_RAW, SOCK_RAW, RAWPROTO_SNOOP)
-+ *
-+ * Dave
-+ *
-+ * From: David Peter <dave.peter@eu.citrix.com>
-+ **/
-+
-+ if ( ioctl(sockfd, SIOCGIFHWADDR, ifr) == 0 )
-+ {
-+ /* Select which hardware types to process.
-+ **
-+ ** See list in system include file included from
-+ ** /usr/include/net/if_arp.h (For example, on
-+ ** Linux see file /usr/include/linux/if_arp.h to
-+ ** get the list.)
-+ **/
-+
-+ switch (ifr->ifr_hwaddr.sa_family)
-+ {
-+ default:
-+ continue;
-+
-+ case ARPHRD_NETROM:
-+ case ARPHRD_ETHER:
-+ case ARPHRD_PPP:
-+ case ARPHRD_EETHER:
-+ case ARPHRD_IEEE802:
-+ break;
-+ }
-+
-+ u = (unsigned char *) &ifr->ifr_addr.sa_data;
-+
-+ /* send record for MAC for this interface */
-+
-+ if (u[0] + u[1] + u[2] + u[3] + u[4] + u[5])
-+ {
-+ initialize_scan_record( (SCAN_RECORD *)&record,
-+ SCAN_RECORD_TYPE_TEXT_1 );
-+
-+ osi_strlcpy( record.module_name, MODULE_NAME,
-+ sizeof( record.module_name ) );
-+
-+ osi_snprintf( record.name, sizeof( record.name ),
-+ "if:%s:MAC", ifr->ifr_name );
-+
-+ osi_snprintf( record.data, sizeof( record.data ),
-+ "%2.2x.%2.2x.%2.2x.%2.2x.%2.2x.%2.2x",
-+ u[0], u[1], u[2], u[3], u[4], u[5]);
-+
-+ send_scan_data( scanner, (SCAN_RECORD *)&record );
-+ }
-+ }
-+
-+ if ( ioctl(sockfd, SIOCGIFNETMASK, ifr) == 0 &&
-+ strcmp("255.255.255.255", inet_ntoa(inaddrr(ifr_addr.sa_data))))
-+ {
-+ initialize_scan_record( (SCAN_RECORD *)&record,
-+ SCAN_RECORD_TYPE_TEXT_1 );
-+
-+ osi_strlcpy( record.module_name, MODULE_NAME,
-+ sizeof( record.module_name ) );
-+
-+ osi_snprintf( record.name, sizeof( record.name ),
-+ "if:%s:NETMASK", ifr->ifr_name );
-+
-+ osi_snprintf( record.data, sizeof( record.data ),
-+ "%s", inet_ntoa(inaddrr(ifr_addr.sa_data)));
-+
-+ send_scan_data( scanner, (SCAN_RECORD *)&record );
-+ }
-+
-+ if (ifr->ifr_flags & IFF_BROADCAST)
-+ {
-+ if ( ioctl(sockfd, SIOCGIFBRDADDR, ifr) == 0 &&
-+ strcmp("0.0.0.0", inet_ntoa(inaddrr(ifr_addr.sa_data))))
-+ {
-+
-+ initialize_scan_record( (SCAN_RECORD *)&record,
-+ SCAN_RECORD_TYPE_TEXT_1 );
-+
-+ osi_strlcpy( record.module_name, MODULE_NAME,
-+ sizeof( record.module_name ) );
-+
-+ osi_snprintf( record.name, sizeof( record.name ),
-+ "if:%s:BROADCAST", ifr->ifr_name );
-+
-+ osi_snprintf( record.data, sizeof( record.data ),
-+ "%s",inet_ntoa(inaddrr(ifr_addr.sa_data)));
-+
-+ send_scan_data( scanner, (SCAN_RECORD *)&record );
-+ }
-+ }
-+
-+ /* Added by David Vasil to check for Promiscuous mode */
-+
-+ initialize_scan_record( (SCAN_RECORD *)&record,
-+ SCAN_RECORD_TYPE_TEXT_1 );
-+
-+ osi_strlcpy( record.module_name, MODULE_NAME,
-+ sizeof( record.module_name ) );
-+
-+
-+ osi_snprintf( record.name, sizeof( record.name ),
-+ "if:%s:PROMISC", ifr->ifr_name );
-+
-+ if ( ioctl(sockfd, SIOCGIFFLAGS, ifr) == 0 &&
-+ ifr->ifr_flags & IFF_PROMISC)
-+ {
-+ osi_strlcpy( record.data, "ENABLED", sizeof( record.data ) );
-+ }
-+
-+ else
-+ {
-+ osi_strlcpy( record.data, "DISABLED", sizeof( record.data ) );
-+ }
-+
-+ send_scan_data( scanner, (SCAN_RECORD *)&record );
-+
-+
-+ if ( ioctl(sockfd, SIOCGIFMTU, ifr) == 0 )
-+ {
-+ initialize_scan_record( (SCAN_RECORD *)&record,
-+ SCAN_RECORD_TYPE_TEXT_1 );
-+
-+ osi_strlcpy( record.module_name, MODULE_NAME,
-+ sizeof( record.module_name ) );
-+
-+ osi_snprintf( record.name, sizeof( record.name ),
-+ "if:%s:MTU", ifr->ifr_name );
-+
-+ osi_snprintf( record.data, sizeof( record.data ),
-+ "%u", ifr->ifr_mtu );
-+
-+ send_scan_data( scanner, (SCAN_RECORD *)&record );
-+ }
-+
-+ if ( ioctl(sockfd, SIOCGIFMETRIC, ifr) == 0 )
-+ {
-+ initialize_scan_record( (SCAN_RECORD *)&record,
-+ SCAN_RECORD_TYPE_TEXT_1 );
-+
-+ osi_strlcpy( record.module_name, MODULE_NAME,
-+ sizeof( record.module_name ) );
-+
-+ osi_snprintf( record.name, sizeof( record.name ),
-+ "if:%s:METRIC", ifr->ifr_name );
-+
-+ osi_snprintf( record.data, sizeof( record.data ),
-+ "%u", ifr->ifr_metric );
-+
-+ send_scan_data( scanner, (SCAN_RECORD *)&record );
-+ }
-+ }
-+
-+ close(sockfd);
-+}
-+
-+void mod_if( SCANNER *scanner )
-+{
-+#if defined(SYSTEM_LINUX)
-+ process_if_unix( scanner );
-+#endif
-+
-+}
diff --git a/openwrt/package/osiris/patches/mod_nvram.patch b/openwrt/package/osiris/patches/mod_nvram.patch
deleted file mode 100644
index 69b6cd6099..0000000000
--- a/openwrt/package/osiris/patches/mod_nvram.patch
+++ /dev/null
@@ -1,213 +0,0 @@
-Description: The mod_nvram module was developed specifically to monitor
- configuration settings stored in nvram on Linksys devices.
- In the future, this module could be used to monitor other
- attributes of similar devices.
-Version: 0.1
-
---- osiris-4.1.8-orig/src/osirisd/modules/mod_nvram/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ osiris-4.1.8-1/src/osirisd/modules/mod_nvram/Makefile 2005-04-22 23:11:32.000000000 +0200
-@@ -0,0 +1,16 @@
-+
-+include ../Makefile
-+
-+SRCS=mod_nvram.c
-+OBJS=$(SRCS:.c=.o)
-+
-+module: ${SRCS} ${OBJS}
-+
-+INCS=-I../.. -I../../../libosiris -I../../../libfileapi -I../../../..
-+
-+# meta-rule for compiling any "C" source file.
-+$(OBJS): $(SRCS)
-+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) ${INCLUDES} ${INCS} $(AM_CPPFLAGS) \
-+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c $(SRCS)
-+ cp $@ ..
-+
---- osiris-4.1.8-orig/src/osirisd/modules/mod_nvram/README 1970-01-01 01:00:00.000000000 +0100
-+++ osiris-4.1.8-1/src/osirisd/modules/mod_nvram/README 2005-04-22 23:11:32.000000000 +0200
-@@ -0,0 +1,40 @@
-+
-+Module: mod_nvram
-+Author: Brian Wotring (brian@shmoo.com)
-+
-+
-+
-+DESCRIPTION:
-+
-+The mod_nvram module reads the key=value pairs stored in nvram. This
-+is primarily for Linksys routers, but could be modified to run on
-+other systems if necessary. On the routers like the WRT54G, the
-+nvram settings hold sensitive information that needs to be monitored.
-+The format for the record structure is as follows:
-+
-+ name:value
-+
-+USE:
-+
-+To use this module, all that is needed is to include it in the System
-+block of a scan configuration, e.g.:
-+
-+ <System>
-+ ...
-+ Include mod_nvram
-+ ...
-+ </System>
-+
-+
-+PARAMETERS:
-+
-+There are no parameters for this module.
-+
-+PLATFORMS:
-+
-+Currently, only for the Linksys WRT54G and WRT54GS devices.
-+
-+NOTES:
-+
-+
-+
---- osiris-4.1.8-orig/src/osirisd/modules/mod_nvram/mod_nvram.c 1970-01-01 01:00:00.000000000 +0100
-+++ osiris-4.1.8-1/src/osirisd/modules/mod_nvram/mod_nvram.c 2005-04-22 23:11:32.000000000 +0200
-@@ -0,0 +1,142 @@
-+
-+/******************************************************************************
-+**
-+** This program is free software; you can redistribute it and/or
-+** modify it, however, you cannot sell it.
-+**
-+** 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.
-+**
-+** You should have received a copy of the license attached to the
-+** use of this software. If not, visit www.shmoo.com/osiris for
-+** details.
-+**
-+******************************************************************************/
-+
-+/*****************************************************************************
-+**
-+** File: mod_users.c
-+** Date: January 1, 2004
-+**
-+** Author: Brian Wotring
-+** Purpose: platform specific methods for reading user file information.
-+**
-+******************************************************************************/
-+
-+#include "libosiris.h"
-+#include "libfileapi.h"
-+#include "rootpriv.h"
-+#include "common.h"
-+#include "version.h"
-+
-+#include "scanner.h"
-+#include "logging.h"
-+
-+
-+#define NVRAM_PATH "/usr/sbin/nvram"
-+#define NVRAM_ARG "show"
-+
-+static const char *MODULE_NAME = "mod_nvram";
-+
-+
-+void mod_nvram( SCANNER *scanner )
-+{
-+ int pid;
-+ int pc[2];
-+ int cp[2];
-+ char temp_line[4096];
-+ FILE *file;
-+ SCAN_RECORD_TEXT_1 record;
-+
-+ if( pipe(pc) < 0)
-+ {
-+ log_error( "mod_nvram: error creating pipe!" );
-+ return;
-+ }
-+
-+ if( pipe(cp) < 0)
-+ {
-+ log_error( "mod_nvram: error creating pipe!" );
-+ return;
-+ }
-+
-+ /* Create a child to run nvram command. */
-+
-+ switch( pid = fork() )
-+ {
-+ case -1:
-+ log_error( "nvram: fork error!" );
-+ return;
-+
-+ case 0:
-+
-+ /* child */
-+
-+ close(1);
-+ dup( cp[1]);
-+ close(0);
-+ close( pc[1]);
-+ close( cp[0]);
-+ execl( NVRAM_PATH, NVRAM_PATH, NVRAM_ARG, NULL );
-+ exit(0);
-+
-+ default:
-+
-+ /* parent */
-+
-+ close(pc[1]);
-+ close(cp[1]);
-+
-+ file = fdopen( cp[0], "r" );
-+
-+ for(;;)
-+ {
-+ char *line;
-+ char *key_end;
-+
-+ line = fgets( temp_line, sizeof( temp_line ), file );
-+
-+ if( line == NULL)
-+ {
-+ break;
-+ }
-+
-+ line = trim_white_space( line );
-+
-+ /* skip commented and empty lines. */
-+
-+ if( ( line == NULL ) || ( line[0] == '#' ) )
-+ {
-+ continue;
-+ }
-+
-+ /* locate the username, this is the first item in the colon list. */
-+
-+ if( ( key_end = strchr( line, '=' ) ) == NULL )
-+ {
-+ continue;
-+ }
-+
-+ initialize_scan_record( (SCAN_RECORD *)&record,
-+ SCAN_RECORD_TYPE_TEXT_1 );
-+
-+ osi_strlcpy( record.module_name, MODULE_NAME,
-+ sizeof( record.module_name ) );
-+
-+ /* user the key as a key/path for this record. */
-+
-+ (*key_end) = '\0';
-+ key_end++;
-+ osi_strlcpy( record.name, "nvram:", sizeof( record.name ) );
-+ osi_strlcat( record.name, line, sizeof( record.name ) );
-+
-+ /* now copy in the value into the data portion. */
-+ /* and send this record on its way. */
-+
-+ osi_strlcpy( record.data, key_end, sizeof( record.data ) );
-+ send_scan_data( scanner, (SCAN_RECORD *)&record );
-+ }
-+ }
-+}
-+
diff --git a/openwrt/package/osiris/patches/mod_uptime.patch b/openwrt/package/osiris/patches/mod_uptime.patch
deleted file mode 100644
index 2bfeec6b44..0000000000
--- a/openwrt/package/osiris/patches/mod_uptime.patch
+++ /dev/null
@@ -1,243 +0,0 @@
-Description: The mod_uptime module obtains the system boot time value
- for comparison with scans.
-Version: 0.2
-
---- osiris-4.1.8-orig/src/osirisd/modules/mod_uptime/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ osiris-4.1.8-1/src/osirisd/modules/mod_uptime/Makefile 2005-04-22 23:11:32.000000000 +0200
-@@ -0,0 +1,16 @@
-+
-+include ../Makefile
-+
-+SRCS=mod_uptime.c
-+OBJS=$(SRCS:.c=.o)
-+
-+module: ${SRCS} ${OBJS}
-+
-+INCS=-I../.. -I../../../libosiris -I../../../libfileapi -I../../../..
-+
-+# meta-rule for compiling any "C" source file.
-+$(OBJS): $(SRCS)
-+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) ${INCLUDES} ${INCS} $(AM_CPPFLAGS) \
-+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c $(SRCS)
-+ cp $@ ..
-+
---- osiris-4.1.8-orig/src/osirisd/modules/mod_uptime/README 1970-01-01 01:00:00.000000000 +0100
-+++ osiris-4.1.8-1/src/osirisd/modules/mod_uptime/README 2005-04-22 23:11:32.000000000 +0200
-@@ -0,0 +1,36 @@
-+
-+Module: mod_uptime
-+Author: Brian Wotring (brian@shmoo.com)
-+
-+
-+
-+DESCRIPTION:
-+
-+The mod_uptime module obtains the system boot time value for comparison
-+with scans.
-+
-+USE:
-+
-+To use this module, all that is needed is to include it in the System
-+block of a scan configuration, e.g.:
-+
-+ <System>
-+ ...
-+ Include mod_uptime
-+ ...
-+ </System>
-+
-+
-+PARAMETERS:
-+
-+There are no parameters for this module.
-+
-+PLATFORMS:
-+
-+Currently, this module is implemented for FreeBSD, OpenBSD,
-+Linux, Solaris, and Mac OS X.
-+
-+NOTES:
-+
-+
-+
---- osiris-4.1.8-orig/src/osirisd/modules/mod_uptime/mod_uptime.c 1970-01-01 01:00:00.000000000 +0100
-+++ osiris-4.1.8-1/src/osirisd/modules/mod_uptime/mod_uptime.c 2005-04-22 23:11:32.000000000 +0200
-@@ -0,0 +1,178 @@
-+
-+/******************************************************************************
-+**
-+** This program is free software; you can redistribute it and/or
-+** modify it, however, you cannot sell it.
-+**
-+** 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.
-+**
-+** You should have received a copy of the license attached to the
-+** use of this software. If not, visit www.shmoo.com/osiris for
-+** details.
-+**
-+******************************************************************************/
-+
-+/*****************************************************************************
-+**
-+** File: mod_uptime.c
-+** Date: March 22, 2004
-+**
-+** Author: Brian Wotring
-+** Purpose: platform specific methods for obtaining the system boot time.
-+**
-+******************************************************************************/
-+
-+#include "libosiris.h"
-+#include "libfileapi.h"
-+#include "rootpriv.h"
-+#include "common.h"
-+#include "version.h"
-+
-+#include "scanner.h"
-+#include "logging.h"
-+#include "config.h"
-+
-+#ifdef HAVE_SYS_SYSCTL_H
-+#include <sys/sysctl.h>
-+#endif
-+
-+#ifdef SYSTEM_SUNOS
-+#include <utmpx.h>
-+#endif
-+
-+#ifdef SYSTEM_LINUX
-+#include <utmp.h>
-+#endif
-+
-+#define PROC_FILE "/proc/uptime"
-+#define OSI_WTMP_FILE "/var/log/wtmp"
-+
-+static const char *MODULE_NAME = "mod_uptime";
-+
-+
-+void mod_uptime( SCANNER *scanner )
-+{
-+ SCAN_RECORD_TEXT_1 record;
-+ char *time = NULL;
-+ char *temp;
-+
-+ initialize_scan_record( (SCAN_RECORD *)&record,
-+ SCAN_RECORD_TYPE_TEXT_1 );
-+
-+ osi_strlcpy( record.module_name, MODULE_NAME,
-+ sizeof( record.module_name ) );
-+
-+#if defined(SYSTEM_FREEBSD) || defined(SYSTEM_OPENBSD) || defined(SYSTEM_DARWIN)
-+ {
-+ time_t t;
-+ struct timeval result;
-+
-+ int request[2] = { CTL_KERN, KERN_BOOTTIME };
-+ size_t result_len = sizeof(result);
-+
-+ if( sysctl( request, 2, &result, &result_len, NULL, 0 ) < 0)
-+ {
-+ log_error( "unable to obtain uptime value." );
-+ return;
-+ }
-+
-+ t = result.tv_sec;
-+ time = ctime( &t );
-+ }
-+
-+#elif defined(SYSTEM_SUNOS)
-+ {
-+ struct utmpx * ent;
-+ time_t t;
-+
-+ while( ( ent = getutxent() ) )
-+ {
-+ if( !strcmp( "system boot", ent->ut_line ) )
-+ {
-+ t = ent->ut_tv.tv_sec;
-+ time = ctime( &t );
-+ }
-+ }
-+ }
-+
-+#elif defined(SYSTEM_LINUX)
-+ {
-+ FILE *fp;
-+ time_t t;
-+ struct utmp ut;
-+
-+ char buf[40];
-+ char buf2[10];
-+ int filecount = 0;
-+
-+next_file:
-+
-+ osi_strlcpy( buf, OSI_WTMP_FILE, sizeof( buf ) );
-+
-+ if( filecount > 0 )
-+ {
-+ osi_snprintf( buf2, sizeof(buf2), "%d", filecount );
-+ osi_strlcat( buf, buf2, sizeof(buf) );
-+ }
-+
-+ fp = osi_fopen( buf, "r", 0 );
-+
-+ if( fp == NULL )
-+ {
-+ log_error( "unable to obtain uptime value." );
-+ return;
-+ }
-+
-+ while(1)
-+ {
-+ int rc = fread( &ut, 1, sizeof(ut), fp );
-+
-+ /* end of file, try next. */
-+
-+ if( rc == 0 )
-+ {
-+ filecount++;
-+ fclose( fp );
-+
-+ goto next_file;
-+ }
-+
-+ /* found restart event. */
-+
-+ if( ( strcmp( ut.ut_name, "reboot" ) == 0 ) ||
-+ ( strcmp( ut.ut_name, "shutdown" ) == 0 ) )
-+ {
-+
-+ t = ut.ut_time;
-+ time = ctime( &t );
-+
-+ break;
-+ }
-+ }
-+
-+ fclose( fp );
-+ }
-+#endif
-+
-+ if( time == NULL )
-+ {
-+ log_error( "unable to obtain uptime value." );
-+ return;
-+ }
-+
-+ /* remove any trailing newline from the ctime() calls. */
-+
-+ if( ( temp = strchr( time, '\n' ) ) )
-+ {
-+ (*temp) = '\0';
-+ }
-+
-+ osi_strlcpy( record.name, "uptime", sizeof( record.name ) );
-+ osi_strlcpy( record.data, time, sizeof( record.data ) );
-+
-+ send_scan_data( scanner, (SCAN_RECORD *)&record );
-+}
-+
-+
diff --git a/openwrt/package/p910nd/Config.in b/openwrt/package/p910nd/Config.in
deleted file mode 100644
index a94d030b12..0000000000
--- a/openwrt/package/p910nd/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_PACKAGE_P910ND
- prompt "p910nd............................ A small non-spooling printer server"
- tristate
- default m if CONFIG_DEVEL
- help
- p910nd is a small daemon that copies any data received on
- the port it is listening on to the corresponding printer
- port. It is primarily intended for diskless Linux hosts
- running as printer drivers but there is no reason why it
- could not be used on diskful hosts. Port 9100 is copied
- to /dev/lp0, 9101 to /dev/lp1 and 9102 to /dev/lp2. The
- default is port 9100 to /dev/lp0.
-
- http://www.etherboot.org/p910nd/
-
diff --git a/openwrt/package/p910nd/Makefile b/openwrt/package/p910nd/Makefile
deleted file mode 100644
index 491e6e5193..0000000000
--- a/openwrt/package/p910nd/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=p910nd
-PKG_VERSION:=0.7
-PKG_RELEASE:=2
-PKG_MD5SUM:=7bf752532d26c9106f8039db95df3a6b
-
-PKG_SOURCE_URL:=http://www.etherboot.org/p910nd
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-PKG_INIT_PRIO=70
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,P910ND,p910nd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -DLOCKFILE_DIR=\"\\\"/tmp\\\"\""
- touch $@
-
-$(IPKG_P910ND):
- install -d -m0755 $(IDIR_P910ND)/etc/default
- install -m0644 ./files/p910nd.default $(IDIR_P910ND)/etc/default/p910nd
- install -d -m0755 $(IDIR_P910ND)/etc/init.d
- install -m0755 ./files/p910nd.init $(IDIR_P910ND)/etc/init.d/p910nd
- install -d -m0755 $(IDIR_P910ND)/usr/sbin
- ln -sf p910nd $(IDIR_P910ND)/etc/init.d/S$(PKG_INIT_PRIO)p910nd
- $(CP) $(PKG_BUILD_DIR)/p910nd $(IDIR_P910ND)/usr/sbin
- $(RSTRIP) $(IDIR_P910ND)
- $(IPKG_BUILD) $(IDIR_P910ND) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -rf $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/p910nd/files/p910nd.default b/openwrt/package/p910nd/files/p910nd.default
deleted file mode 100644
index 77317cfad3..0000000000
--- a/openwrt/package/p910nd/files/p910nd.default
+++ /dev/null
@@ -1,9 +0,0 @@
-# printing port list, in the form "number [options]"
-# where:
-# - number is the port number in the range [0-9]
-# the p910nd daemon will listen on tcp port 9100+number
-# - options can be :
-# -b to turn on bidirectional copying.
-# -f to specify a different printer device.
-#
-0 -b -f /dev/usb/lp0
diff --git a/openwrt/package/p910nd/files/p910nd.init b/openwrt/package/p910nd/files/p910nd.init
deleted file mode 100644
index 1a6c4f4a13..0000000000
--- a/openwrt/package/p910nd/files/p910nd.init
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/p910nd
-RUN_D=/var/run
-
-_start() {
- mkdir -p $RUN_D
- [ -f $DEFAULT ] && (
- while read port options; do
- case "$port" in
- ""|\#*)
- continue;
- esac
- p910nd $options $port
- if [ $? -ne 0 ]; then
- exit 1
- fi
- done
- ) < $DEFAULT
- exit 0
-}
-
-_stop() {
- [ -f $DEFAULT ] && (
- while read port options; do
- case "$port" in
- ""|\#*)
- continue;
- esac
- PID_F=$RUN_D/p910${port}d.pid
- [ -f $PID_F ] && kill $(cat $PID_F)
- done
- ) < $DEFAULT
-}
-
-case $1 in
- start)
- _start
- ;;
- stop)
- _stop
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-exit $?
diff --git a/openwrt/package/p910nd/ipkg/p910nd.conffiles b/openwrt/package/p910nd/ipkg/p910nd.conffiles
deleted file mode 100644
index 65ed23d5d4..0000000000
--- a/openwrt/package/p910nd/ipkg/p910nd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/default/p910nd
diff --git a/openwrt/package/p910nd/ipkg/p910nd.control b/openwrt/package/p910nd/ipkg/p910nd.control
deleted file mode 100644
index 9b917a86ff..0000000000
--- a/openwrt/package/p910nd/ipkg/p910nd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: p910nd
-Priority: optional
-Section: net
-Description: A small non-spooling printer server.
diff --git a/openwrt/package/p910nd/patches/100-Makefile.patch b/openwrt/package/p910nd/patches/100-Makefile.patch
deleted file mode 100644
index 83b4f6c67b..0000000000
--- a/openwrt/package/p910nd/patches/100-Makefile.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- p910nd-0.7/Makefile.orig 2005-09-25 13:54:28.465506888 +0200
-+++ p910nd-0.7/Makefile 2005-09-25 13:54:46.928700056 +0200
-@@ -2,9 +2,9 @@
- # below if you don't want to use libwrap (hosts.{allow,deny} access control)
-
- # If you don't have it in /var/log/subsys, uncomment and define
--#CFLAGS+=-DLOCKFILE_DIR=\"/var/log\"
-+CFLAGS+=-DLOCKFILE_DIR=\"/tmp\"
- LIBWRAP=-lwrap
-
- p910nd: p910nd.c
--# $(CC) -Wall $(CFLAGS) -o $@ p910nd.c
-- $(CC) -Wall $(CFLAGS) -DUSE_LIBWRAP -o $@ p910nd.c $(LIBWRAP)
-+ $(CC) -Wall $(CFLAGS) -o $@ p910nd.c
-+# $(CC) -Wall $(CFLAGS) -DUSE_LIBWRAP -o $@ p910nd.c $(LIBWRAP)
diff --git a/openwrt/package/p910nd/patches/200-p910nd-0.7.patch b/openwrt/package/p910nd/patches/200-p910nd-0.7.patch
deleted file mode 100644
index 9165498fe8..0000000000
--- a/openwrt/package/p910nd/patches/200-p910nd-0.7.patch
+++ /dev/null
@@ -1,309 +0,0 @@
---- p910nd-0.7/p910nd.c.orig 2005-09-29 11:31:02.442914400 +0200
-+++ p910nd-0.7/p910nd.c 2005-09-29 11:31:49.236800648 +0200
-@@ -73,8 +73,7 @@
- #else
- #define LOCKFILE "/var/lock/subsys/p910%cd"
- #endif
--#define PRINTERFILE "/dev/lp%c"
--#define LOGOPTS LOG_ERR
-+#define PRINTERFILE "/dev/printers/%c"
-
- static char *progname;
- static char version[] = "p910nd Version 0.7";
-@@ -93,9 +92,9 @@
- fprintf(stdout, "%s \n", version);
- }
-
--FILE *open_printer(int lpnumber)
-+int open_printer(int lpnumber)
- {
-- FILE *f;
-+ int lp;
- char lpname[sizeof(PRINTERFILE)];
-
- #ifdef TESTING
-@@ -105,12 +104,16 @@
- #endif
- if (device == 0)
- device = lpname;
-- if ((f = fopen(device, bidir ? "w+" : "w")) == NULL)
-+ if ((lp = open(device, bidir ? O_RDWR : O_WRONLY)) == -1)
- {
-- syslog(LOGOPTS, "%s: %m\n", device);
-- exit(1);
-+ syslog(LOG_ERR, "%s: %m\n", device);
-+
-+ /* fallback to /dev/null if device is not available
-+ * otherwise windows spooler will screw up
-+ */
-+ lp = open("/dev/null", bidir ? O_RDWR : O_WRONLY);
- }
-- return (f);
-+ return (lp);
- }
-
- int get_lock(int lpnumber)
-@@ -121,7 +124,7 @@
- (void)snprintf(lockname, sizeof(lockname), LOCKFILE, lpnumber);
- if ((lockfd = open(lockname, O_CREAT|O_RDWR)) < 0)
- {
-- syslog(LOGOPTS, "%s: %m\n", lockname);
-+ syslog(LOG_ERR, "%s: %m\n", lockname);
- return (0);
- }
- memset(&lplock, 0, sizeof(lplock));
-@@ -129,7 +132,7 @@
- lplock.l_pid = getpid();
- if (fcntl(lockfd, F_SETLKW, &lplock) < 0)
- {
-- syslog(LOGOPTS, "%s: %m\n", lockname);
-+ syslog(LOG_ERR, "%s: %m\n", lockname);
- return (0);
- }
- return (1);
-@@ -141,24 +144,36 @@
- (void)close(lockfd);
- }
-
-+ssize_t safe_write(int fd, char *buf, size_t count)
-+{
-+ size_t offset = 0;
-+
-+ while (offset < count) {
-+ ssize_t n = write(fd, buf + offset, count - offset);
-+
-+ if (n < 0 && errno != EINTR)
-+ return n;
-+
-+ if (n > 0)
-+ offset += n;
-+ }
-+
-+ return offset;
-+}
-+
- /* Copy network socket to FILE f until EOS */
--int copy_stream(int fd, FILE *f)
-+int copy_stream(int fd, int lp)
- {
-- int nread;
-+ int nread, rcvd = 0, sent = 0;
- char buffer[8192];
-
- if (bidir) {
-- FILE *nf;
--
-- if ((nf = fdopen(fd, "w")) == NULL) {
-- syslog(LOGOPTS, "fdopen: %m\n");
-- }
- for (;;) {
- fd_set readfds;
- int result;
-- int maxfd = fileno(f) > fd ? fileno(f) : fd;
-+ int maxfd = lp > fd ? lp : fd;
- FD_ZERO(&readfds);
-- FD_SET(fileno(f), &readfds);
-+ FD_SET(lp, &readfds);
- FD_SET(fd, &readfds);
- result = select(maxfd + 1, &readfds, 0, 0, 0);
- if (result < 0)
-@@ -169,43 +184,54 @@
- nread = read(fd, buffer, sizeof(buffer));
- if (nread <= 0)
- break;
-- (void)fwrite(buffer, sizeof(char), nread, f);
-+ if (safe_write(lp, buffer, nread) < 0) {
-+ syslog(LOG_ERR, "write: %m\n");
-+ break;
-+ }
-+ rcvd += nread;
- }
-- if (FD_ISSET(fileno(f), &readfds)) {
-- nread = read(fileno(f), buffer, sizeof(buffer));
-- if (nread > 0 && nf != NULL) {
-- (void)fwrite(buffer, sizeof(char), nread, nf);
-- (void)fflush(nf);
-+ if (FD_ISSET(lp, &readfds)) {
-+ nread = read(lp, buffer, sizeof(buffer));
-+ if (nread > 0) {
-+ safe_write(fd, buffer, nread);
-+ sent += nread;
- }
- }
- }
-- (void)fflush(f);
-- (void)fclose(nf);
-+ syslog(LOG_NOTICE, "Finished job: %d bytes received, %d bytes sent\n",
-+ rcvd, sent);
- return (0);
- } else {
-- while ((nread = read(fd, buffer, sizeof(buffer))) > 0)
-- (void)fwrite(buffer, sizeof(char), nread, f);
-- (void)fflush(f);
-+ while ((nread = read(fd, buffer, sizeof(buffer))) > 0) {
-+ if (safe_write(lp, buffer, nread) < 0) {
-+ syslog(LOG_ERR, "write: %m\n");
-+ break;
-+ }
-+ rcvd += nread;
-+ }
-+ syslog(LOG_NOTICE, "Finished job: %d bytes received\n", rcvd);
- return (nread);
- }
- }
-
- void one_job(int lpnumber)
- {
-- FILE *f;
-+ int lp;
- struct sockaddr_in client;
- socklen_t clientlen = sizeof(client);
-
- if (getpeername(0, (struct sockaddr*) &client, &clientlen) >= 0)
-- syslog(LOGOPTS, "Connection from %s port %hu\n",
-+ syslog(LOG_NOTICE, "Connection from %s port %hu\n",
- inet_ntoa(client.sin_addr),
- ntohs(client.sin_port));
- if (get_lock(lpnumber) == 0)
- return;
-- f = open_printer(lpnumber);
-- if (copy_stream(0, f) < 0)
-- syslog(LOGOPTS, "copy_stream: %m\n");
-- fclose(f);
-+ if ((lp = open_printer(lpnumber)) != -1)
-+ {
-+ if (copy_stream(0, lp) < 0)
-+ syslog(LOG_ERR, "copy_stream: %m\n");
-+ close(lp);
-+ }
- free_lock();
- }
-
-@@ -215,7 +241,7 @@
- #ifdef USE_GETPROTOBYNAME
- struct protoent *proto;
- #endif
-- int netfd, fd, one = 1;
-+ int netfd, fd, lp, one = 1;
- socklen_t clientlen;
- struct sockaddr_in netaddr, client;
- char pidfilename[sizeof(PIDFILE)];
-@@ -225,7 +251,7 @@
- switch (fork())
- {
- case -1:
-- syslog(LOGOPTS, "fork: %m\n");
-+ syslog(LOG_ERR, "fork: %m\n");
- exit (1);
- case 0: /* child */
- break;
-@@ -236,14 +262,14 @@
- resourcelimit.rlim_max = 0;
- if (getrlimit(RLIMIT_NOFILE, &resourcelimit) < 0)
- {
-- syslog(LOGOPTS, "getrlimit: %m\n");
-+ syslog(LOG_ERR, "getrlimit: %m\n");
- exit(1);
- }
- for (fd = 0; fd < resourcelimit.rlim_max; ++fd)
- (void)close(fd);
- if (setsid() < 0)
- {
-- syslog(LOGOPTS, "setsid: %m\n");
-+ syslog(LOG_ERR, "setsid: %m\n");
- exit(1);
- }
- (void)chdir("/");
-@@ -254,7 +280,7 @@
- (void)snprintf(pidfilename, sizeof(pidfilename), PIDFILE, lpnumber);
- if ((f = fopen(pidfilename, "w")) == NULL)
- {
-- syslog(LOGOPTS, "%s: %m\n", pidfilename);
-+ syslog(LOG_ERR, "%s: %m\n", pidfilename);
- exit(1);
- }
- (void)fprintf(f, "%d\n", getpid());
-@@ -262,11 +288,10 @@
- if (get_lock(lpnumber) == 0)
- exit(1);
- #endif
-- f = open_printer(lpnumber);
- #ifdef USE_GETPROTOBYNAME
- if ((proto = getprotobyname("tcp")) == NULL)
- {
-- syslog(LOGOPTS, "Cannot find protocol for TCP!\n");
-+ syslog(LOG_ERR, "Cannot find protocol for TCP!\n");
- exit(1);
- }
- if ((netfd = socket(AF_INET, SOCK_STREAM, proto->p_proto)) < 0)
-@@ -274,12 +299,12 @@
- if ((netfd = socket(AF_INET, SOCK_STREAM, IPPROTO_IP)) < 0)
- #endif
- {
-- syslog(LOGOPTS, "socket: %m\n");
-+ syslog(LOG_ERR, "socket: %m\n");
- exit(1);
- }
- if (setsockopt(netfd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) < 0)
- {
-- syslog(LOGOPTS, "setsocketopt: %m\n");
-+ syslog(LOG_ERR, "setsocketopt: %m\n");
- exit(1);
- }
- netaddr.sin_port = htons(BASEPORT + lpnumber - '0');
-@@ -287,12 +312,12 @@
- memset(netaddr.sin_zero, 0, sizeof(netaddr.sin_zero));
- if (bind(netfd, (struct sockaddr*) &netaddr, sizeof(netaddr)) < 0)
- {
-- syslog(LOGOPTS, "bind: %m\n");
-+ syslog(LOG_ERR, "bind: %m\n");
- exit(1);
- }
- if (listen(netfd, 5) < 0)
- {
-- syslog(LOGOPTS, "listen: %m\n");
-+ syslog(LOG_ERR, "listen: %m\n");
- exit(1);
- }
- clientlen = sizeof(client);
-@@ -302,22 +327,26 @@
- #ifdef USE_LIBWRAP
- if (hosts_ctl("p910nd", STRING_UNKNOWN,
- inet_ntoa(client.sin_addr), STRING_UNKNOWN) == 0) {
-- syslog(LOGOPTS, "Connection from %s port %hd rejected\n",
-+ syslog(LOG_ERR, "Connection from %s port %hu rejected\n",
- inet_ntoa(client.sin_addr),
- ntohs(client.sin_port));
- close(fd);
- continue;
- }
- #endif
-- syslog(LOGOPTS, "Connection from %s port %hd accepted\n",
-+ syslog(LOG_NOTICE, "Connection from %s port %hu accepted\n",
- inet_ntoa(client.sin_addr),
- ntohs(client.sin_port));
- /*write(fd, "Printing", 8);*/
-- if (copy_stream(fd, f) < 0)
-- syslog(LOGOPTS, "copy_stream: %m\n");
-+ if ((lp = open_printer(lpnumber)) != -1)
-+ {
-+ if (copy_stream(fd, lp) < 0)
-+ syslog(LOG_ERR, "copy_stream: %m\n");
-+ close(lp);
-+ }
- (void)close(fd);
- }
-- syslog(LOGOPTS, "accept: %m\n");
-+ syslog(LOG_ERR, "accept: %m\n");
- free_lock();
- exit(1);
- }
-@@ -338,7 +367,7 @@
- if (getsockname(0, (struct sockaddr*) &bind_addr, &ba_len) == 0)
- return (0); /* under inetd */
- if (errno != ENOTSOCK) /* strange... */
-- syslog(LOGOPTS, "getsockname: %m\n");
-+ syslog(LOG_ERR, "getsockname: %m\n");
- return (1);
- }
-
diff --git a/openwrt/package/palantir/Config.in b/openwrt/package/palantir/Config.in
deleted file mode 100644
index dc99d095ee..0000000000
--- a/openwrt/package/palantir/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_PALANTIR
- prompt "palantir.......................... A multichannel interactive streaming solution"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBJPEG
- help
- Palantir is a Linux-based streaming system designed to transmit live
- video, audio and data over a TCP/IP network, as well as to control
- remote devices.
-
- http://www.fastpath.it/products/palantir/
-
diff --git a/openwrt/package/palantir/Makefile b/openwrt/package/palantir/Makefile
deleted file mode 100644
index 154dadc4ee..0000000000
--- a/openwrt/package/palantir/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=palantir
-PKG_VERSION:=2.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=8e4d20e7f7fad26d7447483c68894ace
-
-PKG_SOURCE_URL:=http://www.fastpath.it/products/palantir/pub/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-export CPPFLAGS=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include
-export LDFLAGS=-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PALANTIR,palantir,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)/usr
- $(MAKE) -C $(PKG_BUILD_DIR)/server/libgsm \
- $(TARGET_CONFIGURE_OPTS) \
- CCINC="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- lib/libgsm.a
- $(MAKE) -C $(PKG_BUILD_DIR)/server \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="-Wall -D_REENTRANT $(TARGET_CFLAGS)" \
- palantir
- touch $@
-
-$(IPKG_PALANTIR):
- install -d -m0755 $(IDIR_PALANTIR)/etc
- install -m0644 $(PKG_BUILD_DIR)/server/palantir-mips.conf.sample $(IDIR_PALANTIR)/etc/palantir.conf
- install -d -m0755 $(IDIR_PALANTIR)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/server/palantir $(IDIR_PALANTIR)/usr/sbin/
- $(RSTRIP) $(IDIR_PALANTIR)
- $(IPKG_BUILD) $(IDIR_PALANTIR) $(PACKAGE_DIR)
diff --git a/openwrt/package/palantir/ipkg/palantir.conffiles b/openwrt/package/palantir/ipkg/palantir.conffiles
deleted file mode 100644
index a57f0c6fd7..0000000000
--- a/openwrt/package/palantir/ipkg/palantir.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/palantir.conf
diff --git a/openwrt/package/palantir/ipkg/palantir.control b/openwrt/package/palantir/ipkg/palantir.control
deleted file mode 100644
index 404a200c3c..0000000000
--- a/openwrt/package/palantir/ipkg/palantir.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: palantir
-Priority: optional
-Section: net
-Depends: libjpeg, libpthread
-Description: A multichannel interactive streaming solution
diff --git a/openwrt/package/parprouted/Config.in b/openwrt/package/parprouted/Config.in
deleted file mode 100644
index edf4760316..0000000000
--- a/openwrt/package/parprouted/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_PARPROUTED
- prompt "parprouted........................ Proxy ARP daemon"
- tristate
- default m if CONFIG_DEVEL
- help
- parprouted is a daemon for transparent IP (Layer 3) proxy ARP bridging.
- This is useful for creation of transparent firewalls and bridging networks
- with different MAC protocols. Also, unlike standard bridging, proxy ARP
- bridging allows to bridge Ethernet networks behind wireless nodes without
- using WDS or layer 2 bridging.
-
- http://www.hazard.maks.net/
-
diff --git a/openwrt/package/parprouted/Makefile b/openwrt/package/parprouted/Makefile
deleted file mode 100644
index a06a15251d..0000000000
--- a/openwrt/package/parprouted/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=parprouted
-PKG_VERSION:=0.63
-PKG_RELEASE:=1
-PKG_MD5SUM:=12753098a22e82997d1941d6d2284750
-
-PKG_SOURCE_URL:=http://www.hazard.maks.net/parprouted/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PARPROUTED,parprouted,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" LDFLAGS="" \
- all
- touch $@
-
-$(IPKG_PARPROUTED):
- install -d -m0755 $(IDIR_PARPROUTED)/etc/default
- install -m0755 ./files/parprouted.default $(IDIR_PARPROUTED)/etc/default/parprouted
- install -d -m0755 $(IDIR_PARPROUTED)/etc/init.d
- install -m0755 ./files/parprouted.init $(IDIR_PARPROUTED)/etc/init.d/parprouted
- ln -sf parprouted $(IDIR_PARPROUTED)/etc/init.d/S50parpouted
- install -d -m0755 $(IDIR_PARPROUTED)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/parprouted $(IDIR_PARPROUTED)/usr/sbin/
- $(RSTRIP) $(IDIR_PARPROUTED)
- $(IPKG_BUILD) $(IDIR_PARPROUTED) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/parprouted/files/parprouted.default b/openwrt/package/parprouted/files/parprouted.default
deleted file mode 100755
index 7128a56a74..0000000000
--- a/openwrt/package/parprouted/files/parprouted.default
+++ /dev/null
@@ -1 +0,0 @@
-OPTIONS="$lan_ifname $wifi_ifname"
diff --git a/openwrt/package/parprouted/files/parprouted.init b/openwrt/package/parprouted/files/parprouted.init
deleted file mode 100755
index 2422657ee8..0000000000
--- a/openwrt/package/parprouted/files/parprouted.init
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-
-BIN=parprouted
-DEFAULT=/etc/default/$BIN
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- $BIN $OPTIONS
- ;;
- *)
- echo "usage: $0 (start)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/parprouted/ipkg/parprouted.conffiles b/openwrt/package/parprouted/ipkg/parprouted.conffiles
deleted file mode 100644
index 4446a8e997..0000000000
--- a/openwrt/package/parprouted/ipkg/parprouted.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/default/parprouted
diff --git a/openwrt/package/parprouted/ipkg/parprouted.control b/openwrt/package/parprouted/ipkg/parprouted.control
deleted file mode 100644
index 9357ae5861..0000000000
--- a/openwrt/package/parprouted/ipkg/parprouted.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: parprouted
-Priority: optional
-Section: net
-Description: a proxy ARP daemon
-Depends: libpthread
diff --git a/openwrt/package/parprouted/patches/parprouted.patch b/openwrt/package/parprouted/patches/parprouted.patch
deleted file mode 100644
index 17fbdecec7..0000000000
--- a/openwrt/package/parprouted/patches/parprouted.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff -rupw parprouted-0.63/arp.c parprouted-0.63-1/arp.c
---- parprouted-0.63/arp.c 2004-05-23 14:06:31.000000000 +0200
-+++ parprouted-0.63-1/arp.c 2005-03-13 16:10:18.000000000 +0100
-@@ -366,7 +366,7 @@ void *arp(char *ifname)
- do {
- pthread_testcancel();
- /* Sleep a bit in order not to overload the system */
-- usleep(300);
-+ usleep(3000);
-
- if (arp_recv(sock, &frame) <= 0)
- continue;
-diff -rupw parprouted-0.63/parprouted.c parprouted-0.63-1/parprouted.c
---- parprouted-0.63/parprouted.c 2004-01-30 02:45:43.000000000 +0100
-+++ parprouted-0.63-1/parprouted.c 2005-03-20 09:14:35.000000000 +0100
-@@ -93,7 +93,7 @@ void processarp(int cleanup)
-
- /* added route to the kernel */
- if (snprintf(routecmd_str, ROUTE_CMD_LEN-1,
-- "/sbin/ip route add %s/32 metric 50 dev %s scope link",
-+ "/sbin/route add -host %s metric 50 dev %s",
- inet_ntoa(cur_entry->ipaddr_ia), cur_entry->ifname) > ROUTE_CMD_LEN-1)
- {
- syslog(LOG_INFO, "ip route command too large to fit in buffer!");
-@@ -112,7 +112,7 @@ void processarp(int cleanup)
-
- /* remove entry from arp table and remove route from kernel */
- if (snprintf(routecmd_str, ROUTE_CMD_LEN-1,
-- "/sbin/ip route del %s/32 metric 50 dev %s scope link",
-+ "/sbin/route del -host %s metric 50 dev %s",
- inet_ntoa(cur_entry->ipaddr_ia), cur_entry->ifname) > ROUTE_CMD_LEN-1)
- {
- syslog(LOG_INFO, "ip route command too large to fit in buffer!");
diff --git a/openwrt/package/pciutils/Config.in b/openwrt/package/pciutils/Config.in
deleted file mode 100644
index e76962f822..0000000000
--- a/openwrt/package/pciutils/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_PCIUTILS
- prompt "pciutils.......................... Linux PCI Utilities"
- tristate
- default m if CONFIG_DEVEL
- help
- This package contains various utilities for inspecting and setting of
- devices connected to the PCI bus.
diff --git a/openwrt/package/pciutils/Makefile b/openwrt/package/pciutils/Makefile
deleted file mode 100644
index cdf2ab0eb8..0000000000
--- a/openwrt/package/pciutils/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pciutils
-PKG_VERSION:=2.2.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=c18e2a5f04e9abae5a42439de294f086
-
-PKG_SOURCE_URL:=http://www.kernel.org/pub/software/utils/pciutils/ \
- ftp://atrey.karlin.mff.cuni.cz/pub/linux/pci
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PCIUTILS,pciutils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) CFLAGS="$(TARGET_CFLAGS)" IDSDIR="/usr/share" HOST=$(GNU_TARGET_NAME)
- touch $@
-
-$(IPKG_PCIUTILS):
- install -d -m0755 $(IDIR_PCIUTILS)/usr/sbin
- install -d -m0755 $(IDIR_PCIUTILS)/usr/share
- $(CP) $(PKG_BUILD_DIR)/{lspci,setpci} $(IDIR_PCIUTILS)/usr/sbin/
- $(CP) $(PKG_BUILD_DIR)/pci.ids $(IDIR_PCIUTILS)/usr/share/
- $(RSTRIP) $(IDIR_PCIUTILS)/
- $(IPKG_BUILD) $(IDIR_PCIUTILS) $(PACKAGE_DIR)
diff --git a/openwrt/package/pciutils/ipkg/pciutils.control b/openwrt/package/pciutils/ipkg/pciutils.control
deleted file mode 100644
index b3f0c4eead..0000000000
--- a/openwrt/package/pciutils/ipkg/pciutils.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: pciutils
-Priority: optional
-Section: sys
-Description: Linux PCI Utilities
diff --git a/openwrt/package/pcmcia-cs/Config.in b/openwrt/package/pcmcia-cs/Config.in
deleted file mode 100644
index afcfa39ffd..0000000000
--- a/openwrt/package/pcmcia-cs/Config.in
+++ /dev/null
@@ -1,17 +0,0 @@
-config BR2_COMPILE_PCMCIA_CS
- tristate
- default n
- depends BR2_PACKAGE_PCMCIA_UTILS
-
-config BR2_PACKAGE_PCMCIA_UTILS
- prompt "pcmcia-utils...................... PCMCIA/Cardbus management utilities"
- tristate
- depends BR2_LINUX_PCMCIA_SUPPORT
- select BR2_COMPILE_PCMCIA_CS
- select BR2_PACKAGE_KMOD_PCMCIA_CORE
- default m if CONFIG_DEVEL
- help
- PCMCIA/Cardbus management utilities
-
- http://pcmcia-cs.sourceforge.net/
-
diff --git a/openwrt/package/pcmcia-cs/Makefile b/openwrt/package/pcmcia-cs/Makefile
deleted file mode 100644
index b99633a5fa..0000000000
--- a/openwrt/package/pcmcia-cs/Makefile
+++ /dev/null
@@ -1,56 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pcmcia-cs
-PKG_VERSION:=3.2.8
-PKG_RELEASE:=1
-PKG_MD5SUM:=0d6d65be8896eff081aee996049afaa5
-
-PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PCMCIA_UTILS,pcmcia-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- ( cd $(PKG_BUILD_DIR); \
- ./Configure \
- --noprompt \
- --kernel="$(LINUX_DIR)" \
- --target="$(PKG_INSTALL_DIR)" \
- --arch="$(ARCH)" \
- --ucc="$(TARGET_CC)" \
- --uflags="$(TARGET_CFLAGS)" \
- --srctree \
- --cardbus \
- --noapm \
- --nopnp \
- --notrust \
- --nox11 \
- --sysv --rcdir="/etc" \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CFLAGS="$(TARGET_CFLAGS)" \
- all install
- touch $@
-
-$(IPKG_PCMCIA_UTILS):
- install -m0755 -d $(IDIR_PCMCIA_UTILS)/etc
- $(CP) $(PKG_INSTALL_DIR)/etc/pcmcia $(IDIR_PCMCIA_UTILS)/etc/
- install -m0755 -d $(IDIR_PCMCIA_UTILS)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/sbin/cardctl $(IDIR_PCMCIA_UTILS)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/cardmgr $(IDIR_PCMCIA_UTILS)/usr/sbin/
- $(RSTRIP) $(IDIR_PCMCIA_UTILS)
- $(IPKG_BUILD) $(IDIR_PCMCIA_UTILS) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/pcmcia-cs/ipkg/pcmcia-utils.conffiles b/openwrt/package/pcmcia-cs/ipkg/pcmcia-utils.conffiles
deleted file mode 100644
index 04ca204799..0000000000
--- a/openwrt/package/pcmcia-cs/ipkg/pcmcia-utils.conffiles
+++ /dev/null
@@ -1,10 +0,0 @@
-/etc/pcmcia/config.opts
-/etc/pcmcia/ftl.opts
-/etc/pcmcia/ide.opts
-/etc/pcmcia/ieee1394.opts
-/etc/pcmcia/memory.opts
-/etc/pcmcia/network.opts
-/etc/pcmcia/parport.opts
-/etc/pcmcia/scsi.opts
-/etc/pcmcia/serial.opts
-/etc/pcmcia/wireless.opts
diff --git a/openwrt/package/pcmcia-cs/ipkg/pcmcia-utils.control b/openwrt/package/pcmcia-cs/ipkg/pcmcia-utils.control
deleted file mode 100644
index ba760a61ba..0000000000
--- a/openwrt/package/pcmcia-cs/ipkg/pcmcia-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: pcmcia-utils
-Priority: optional
-Section: sys
-Depends: kmod-pcmcia-core
-Description: PCMCIA/Cardbus management utilities
diff --git a/openwrt/package/pcmcia-cs/patches/001-config-novatel_merlin_u630.patch b/openwrt/package/pcmcia-cs/patches/001-config-novatel_merlin_u630.patch
deleted file mode 100644
index 071a697298..0000000000
--- a/openwrt/package/pcmcia-cs/patches/001-config-novatel_merlin_u630.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -ruN pcmcia-cs-3.2.8-old/etc/config pcmcia-cs-3.2.8-new/etc/config
---- pcmcia-cs-3.2.8-old/etc/config 2004-07-16 18:38:25.000000000 +0200
-+++ pcmcia-cs-3.2.8-new/etc/config 2005-11-21 08:52:54.000000000 +0100
-@@ -2413,6 +2413,10 @@
- pci 0x115d, 0x0101
- bind "serial_cb"
-
-+card "Novatel Wireless - Merlin U630 UMTS Modem"
-+ manfid 0x00a4, 0x0276
-+ bind "serial_cs" to 0, "serial_cs" to 1
-+
- # Include configuration files for add-on drivers
-
- source ./*.conf
diff --git a/openwrt/package/pcre/Config.in b/openwrt/package/pcre/Config.in
deleted file mode 100644
index 7bb2de6913..0000000000
--- a/openwrt/package/pcre/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_COMPILE_PCRE
- tristate
- default n
- depends BR2_PACKAGE_LIBPCRE
-
-config BR2_PACKAGE_LIBPCRE
- prompt "libpcre........................... A Perl Compatible Regular Expression library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_PCRE
- help
- A Perl Compatible Regular Expression library
-
- http://www.pcre.org/
-
diff --git a/openwrt/package/pcre/Makefile b/openwrt/package/pcre/Makefile
deleted file mode 100644
index 3cd030481b..0000000000
--- a/openwrt/package/pcre/Makefile
+++ /dev/null
@@ -1,92 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pcre
-PKG_VERSION:=5.0
-PKG_RELEASE:=3
-PKG_MD5SUM:=813850808894d99fb5b1c41ec6335d4f
-
-PKG_SOURCE_URL:=@SF/pcre
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBPCRE,libpcre,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --enable-utf8 \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C "$(PKG_BUILD_DIR)" \
- CC_FOR_BUILD="$(HOSTCC)" \
- LINK_FOR_BUILD="$(HOSTCC)" \
- CFLAGS_FOR_BUILD="" \
- dftables
- $(MAKE) -C "$(PKG_BUILD_DIR)" \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBPCRE):
- install -d -m0755 $(IDIR_LIBPCRE)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre{,posix}.so.* $(IDIR_LIBPCRE)/usr/lib/
- $(RSTRIP) $(IDIR_LIBPCRE)
- $(IPKG_BUILD) $(IDIR_LIBPCRE) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libpcre.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/pcre-config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/pcre{,posix}.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre{,posix}.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libpcre.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/pcre-config \
- $(STAGING_DIR)/usr/include/pcre{,posix}.h \
- $(STAGING_DIR)/usr/lib/libpcre{,posix}.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/pcre/ipkg/libpcre.control b/openwrt/package/pcre/ipkg/libpcre.control
deleted file mode 100644
index 797453eabd..0000000000
--- a/openwrt/package/pcre/ipkg/libpcre.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libpcre
-Priority: optional
-Section: libs
-Description: a Perl Compatible Regular Expression library
diff --git a/openwrt/package/pcre/patches/100-honor_cppflags_ldflags.patch b/openwrt/package/pcre/patches/100-honor_cppflags_ldflags.patch
deleted file mode 100644
index 2d14b89499..0000000000
--- a/openwrt/package/pcre/patches/100-honor_cppflags_ldflags.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN pcre-5.0-old/Makefile.in pcre-5.0-new/Makefile.in
---- pcre-5.0-old/Makefile.in 2004-09-13 16:20:00.000000000 +0200
-+++ pcre-5.0-new/Makefile.in 2006-03-15 08:28:12.000000000 +0100
-@@ -63,6 +63,7 @@
- CC = @CC@
- CFLAGS = @CFLAGS@
- CPPFLAGS = @CPPFLAGS@
-+LDFLAGS = @LDFLAGS@
-
- CC_FOR_BUILD = @CC_FOR_BUILD@
- CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
-@@ -84,10 +85,10 @@
- # to do one or the other or both by ./configure.
-
- LIBTOOL = @LIBTOOL@
--LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) -c $(CFLAGS) -I. -I$(top_srcdir) $(NEWLINE) $(LINK_SIZE) $(MATCH_LIMIT) $(NO_RECURSE) $(EBCDIC)
-+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) -c $(CFLAGS) -I. -I$(top_srcdir) $(CPPFLAGS) $(NEWLINE) $(LINK_SIZE) $(MATCH_LIMIT) $(NO_RECURSE) $(EBCDIC)
- @ON_WINDOWS@LINK = $(CC) $(CFLAGS) -I. -I$(top_srcdir) -L.libs
- @NOT_ON_WINDOWS@LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -I. -I$(top_srcdir)
--LINKLIB = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -I. -I$(top_srcdir)
-+LINKLIB = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -I. -I$(top_srcdir) $(LDFLAGS)
- LINK_FOR_BUILD = $(LIBTOOL) --mode=link $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -I. -I$(top_srcdir)
-
- # These are the version numbers for the shared libraries
diff --git a/openwrt/package/pcre/patches/750-pcre_config_cross.patch b/openwrt/package/pcre/patches/750-pcre_config_cross.patch
deleted file mode 100644
index c61a7f5a1e..0000000000
--- a/openwrt/package/pcre/patches/750-pcre_config_cross.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -ruN pcre-5.0-old/pcre-config.in pcre-5.0-new/pcre-config.in
---- pcre-5.0-old/pcre-config.in 2004-09-13 16:20:00.000000000 +0200
-+++ pcre-5.0-new/pcre-config.in 2005-09-04 16:34:39.000000000 +0200
-@@ -18,6 +18,10 @@
- libR=" -R@libdir@"
- ;;
- esac
-+libS=
-+if test @libdir@ != /usr/lib ; then
-+ libS=-L@libdir@
-+fi
-
- while test $# -gt 0; do
- case "$1" in
-@@ -52,10 +56,10 @@
- echo $includes
- ;;
- --libs-posix)
-- echo -L@libdir@$libR -lpcreposix -lpcre
-+ echo $libS$libR -lpcreposix -lpcre
- ;;
- --libs)
-- echo -L@libdir@$libR -lpcre
-+ echo $libS$libR -lpcre
- ;;
- *)
- echo "${usage}" 1>&2
diff --git a/openwrt/package/peercast/Config.in b/openwrt/package/peercast/Config.in
deleted file mode 100644
index 802b4d7ef1..0000000000
--- a/openwrt/package/peercast/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_PEERCAST
- prompt "peercast.......................... P2P audio and video streaming server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPTHREAD
- select BR2_PACKAGE_UCLIBCXX
- help
- PeerCast is a fresh new P2P streaming server. It can stream music
- and video from a broad variety of formats. Many audio players can
- listen to peercast streams, as it's been built to remain compatible
- with Nullsoft Shoutcast.
-
- http://www.peercast.org/
-
diff --git a/openwrt/package/peercast/Makefile b/openwrt/package/peercast/Makefile
deleted file mode 100644
index 36d78163d0..0000000000
--- a/openwrt/package/peercast/Makefile
+++ /dev/null
@@ -1,76 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=peercast
-PKG_VERSION:=0.1214
-PKG_RELEASE:=1
-PKG_MD5SUM:=4e8449cde7135ad97f788e67e1bd64ee
-
-PKG_SOURCE_URL:=http://www.cti.ecp.fr/~beauxir5/peercast
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PEERCAST,peercast,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- BUILD_CC=$(TARGET_CC) HOSTCC=$(HOSTCC) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -nostdinc++ -nodefaultlibs" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-nodefaultlibs -luClibc++ -lpthread" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --with-gnu-ld \
- --enable-staticbin \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_PEERCAST):
- install -m0755 -d $(IDIR_PEERCAST)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/peercast $(IDIR_PEERCAST)/usr/sbin/
- install -m0755 -d $(IDIR_PEERCAST)/usr/share/peercast/html
- $(CP) $(PKG_INSTALL_DIR)/usr/share/peercast/html/en $(IDIR_PEERCAST)/usr/share/peercast/html/
- install -m0755 -d $(IDIR_PEERCAST)/etc
- install -m0644 ./files/peercast.ini $(IDIR_PEERCAST)/etc/
- install -m0755 -d $(IDIR_PEERCAST)/etc/init.d
- install -m0755 ./files/peercast.init $(IDIR_PEERCAST)/etc/init.d/peercast
- ln -sf peercast $(IDIR_PEERCAST)/etc/init.d/S60peercast
- $(RSTRIP) $(IDIR_PEERCAST)
- $(IPKG_BUILD) $(IDIR_PEERCAST) $(PACKAGE_DIR)
diff --git a/openwrt/package/peercast/files/peercast.ini b/openwrt/package/peercast/files/peercast.ini
deleted file mode 100644
index b48d3f9f7a..0000000000
--- a/openwrt/package/peercast/files/peercast.ini
+++ /dev/null
@@ -1,81 +0,0 @@
-
-[Server]
-serverPort = 7144
-autoServe = Yes
-forceIP =
-isRoot = No
-maxBitrateOut = 0
-maxRelays = 1
-maxDirect = 0
-maxRelaysPerChannel = 0
-firewallTimeout = 30
-forceNormal = No
-rootMsg =
-authType = cookie
-cookiesExpire = session
-htmlPath = html/en
-minPGNUIncoming = 10
-maxPGNUIncoming = 20
-maxServIn = 50
-chanLog =
-networkID = 00000000000000000000000000000000
-
-[Broadcast]
-broadcastMsgInterval = 10
-broadcastMsg =
-icyMetaInterval = 8192
-broadcastID = 898145B5C0427118B595AF7D9E110000
-hostUpdateInterval = 180
-maxControlConnections = 3
-rootHost = yp.peercast.org
-
-[Client]
-refreshHTML = 5
-relayBroadcast = 30
-minBroadcastTTL = 1
-maxBroadcastTTL = 7
-pushTries = 5
-pushTimeout = 60
-maxPushHops = 8
-autoQuery = 0
-queryTTL = 7
-
-[Privacy]
-password = hackme
-maxUptime = 0
-
-[Filter]
-ip = 255.255.255.255
-private = No
-ban = No
-network = Yes
-direct = Yes
-[End]
-
-[Notify]
-PeerCast = Yes
-Broadcasters = Yes
-TrackInfo = Yes
-[End]
-
-[Server1]
-allowHTML = Yes
-allowBroadcast = Yes
-allowNetwork = Yes
-allowDirect = Yes
-[End]
-
-[Server2]
-allowHTML = No
-allowBroadcast = Yes
-allowNetwork = No
-allowDirect = No
-[End]
-
-[Debug]
-logDebug = No
-logErrors = No
-logNetwork = No
-logChannel = No
-pauseLog = No
-idleSleepTime = 10
diff --git a/openwrt/package/peercast/files/peercast.init b/openwrt/package/peercast/files/peercast.init
deleted file mode 100644
index c61c31438d..0000000000
--- a/openwrt/package/peercast/files/peercast.init
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-PID_F=/var/run/peercast.pid
-
-case $1 in
- start)
- peercast -d -i /etc/peercast.ini -l /var/log/peercast.log -p $PID_F
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F) >/dev/null 2>&1
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
-
diff --git a/openwrt/package/peercast/ipkg/peercast.conffiles b/openwrt/package/peercast/ipkg/peercast.conffiles
deleted file mode 100644
index 0c554494ef..0000000000
--- a/openwrt/package/peercast/ipkg/peercast.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/peercast.ini
diff --git a/openwrt/package/peercast/ipkg/peercast.control b/openwrt/package/peercast/ipkg/peercast.control
deleted file mode 100644
index a09a246fe9..0000000000
--- a/openwrt/package/peercast/ipkg/peercast.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: peercast
-Priority: optional
-Section: net
-Description: P2P audio and video streaming server
-Depends: libpthread, uclibc++
-
diff --git a/openwrt/package/peerguardian/Config.in b/openwrt/package/peerguardian/Config.in
deleted file mode 100755
index 564a9ccfe9..0000000000
--- a/openwrt/package/peerguardian/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_PEERGUARDIAN
- prompt "peerguardian...................... PeerGuardian for Linux"
- tristate
- select BR2_PACKAGE_LIBPTHREAD
- default m if CONFIG_DEVEL
- help
- PeerGuardian helps protect your privacy by blocking many ranges
- of aggressive IPs while you use P2P.
-
- http://phoenixlabs.org/
diff --git a/openwrt/package/peerguardian/Makefile b/openwrt/package/peerguardian/Makefile
deleted file mode 100755
index 1410494ae0..0000000000
--- a/openwrt/package/peerguardian/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=peerguardian
-PKG_VERSION:=1.5beta
-PKG_RELEASE:=1
-PKG_MD5SUM:=0fb2bc5501b031604fc56eec3bd35fa4
-
-PKG_SOURCE_URL:=@SF/peerguardian
-PKG_SOURCE:=pglinux-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/pglinux-$(PKG_VERSION)
-PKG_CAT:=zcat
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PEERGUARDIAN,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --program-prefix="" \
- --with-gnu-ld \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) STAGING_DIR=$(STAGING_DIR) DESTDIR=$(PKG_INSTALL_DIR) -C $(PKG_BUILD_DIR)
- install -d -m0755 $(PKG_INSTALL_DIR)/usr/sbin $(PKG_INSTALL_DIR)/etc/init.d
- install -m0755 $(PKG_BUILD_DIR)/peerguardnf $(PKG_INSTALL_DIR)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/pgtext $(PKG_INSTALL_DIR)/usr/sbin/
- install -m0644 $(PKG_BUILD_DIR)/PG.conf $(PKG_INSTALL_DIR)/etc/
- install -m0644 $(PKG_BUILD_DIR)/p2p.p2b.p2p $(PKG_INSTALL_DIR)/etc/
- install -m0644 files/$(PKG_NAME).init $(PKG_INSTALL_DIR)/etc/init.d/$(PKG_NAME)
-
-$(IPKG_PEERGUARDIAN):
- mkdir -p $(IDIR_PEERGUARDIAN)
- $(CP) $(PKG_INSTALL_DIR)/* $(IDIR_PEERGUARDIAN)/
- $(RSTRIP) $(IDIR_PEERGUARDIAN)/
- $(IPKG_BUILD) $(IDIR_PEERGUARDIAN) $(PACKAGE_DIR)
diff --git a/openwrt/package/peerguardian/files/peerguardian.init b/openwrt/package/peerguardian/files/peerguardian.init
deleted file mode 100644
index 5807314c87..0000000000
--- a/openwrt/package/peerguardian/files/peerguardian.init
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-BIN=pgtext
-DEFAULT=/etc/default/$BIN
-[ -f $DEFAULT ] && . $DEFAULT
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN_${IF}_${ID}.pid
-
-case $1 in
- start)
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F) >/dev/null 2>&1
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/peerguardian/ipkg/peerguardian.control b/openwrt/package/peerguardian/ipkg/peerguardian.control
deleted file mode 100644
index edf1ec775d..0000000000
--- a/openwrt/package/peerguardian/ipkg/peerguardian.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: peerguardian
-Architecture: mipsel
-Section: net
-Depends: libpthread, libstdc++
-Description: PeerGuardian helps protect your privacy by blocking many ranges of aggressive IPs while you use P2P.
-Priority: optional
diff --git a/openwrt/package/peerguardian/patches/01-honor-libipq.patch b/openwrt/package/peerguardian/patches/01-honor-libipq.patch
deleted file mode 100755
index 02bab14825..0000000000
--- a/openwrt/package/peerguardian/patches/01-honor-libipq.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -urN pglinux-1.5beta/Makefile.in pglinux-1.5beta/Makefile.in
---- pglinux-1.5beta/Makefile.in 2005-03-31 09:40:29.000000000 +0200
-+++ pglinux-1.5beta/Makefile.in 2005-11-25 19:14:16.000000000 +0100
-@@ -83,10 +83,10 @@
- PROGRAMS = $(mybin_PROGRAMS)
-
-
--DEFS = @DEFS@ -I. -I$(srcdir) -I.
-+DEFS = @DEFS@ -I. -I$(srcdir) -I. -I$(STAGING_DIR)/usr/include
- CPPFLAGS = @CPPFLAGS@
- LDFLAGS = @LDFLAGS@
--LIBS = @LIBS@
-+LIBS = @LIBS@ -L$(STAGING_DIR)/usr/lib
- peerguardnf_OBJECTS = Main.o PeerGuard.o BlockList.o Blocker_Linux.o \
- Blocker_BSD.o HttpServer.o HttpRequest.o sha1.o
- peerguardnf_DEPENDENCIES =
diff --git a/openwrt/package/php4/Config.in b/openwrt/package/php4/Config.in
deleted file mode 100644
index 087a62c39b..0000000000
--- a/openwrt/package/php4/Config.in
+++ /dev/null
@@ -1,140 +0,0 @@
-menu "php4.............................. PHP4 Hypertext preprocessor"
-
-config BR2_COMPILE_PHP4
- tristate
- default y
- depends BR2_PACKAGE_PHP4_CLI || BR2_PACKAGE_PHP4_CGI || BR2_PACKAGE_PHP4_FASTCGI
-
-comment "Server API ---"
-
-config BR2_PACKAGE_PHP4_CLI
- prompt "php4-cli.......................... PHP4 CLI (Command Line Interface)"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- PHP is a widely-used general-purpose scripting language that is especially
- suited for Web development and can be embedded into HTML.
-
- http://www.php.net/
-
-config BR2_PACKAGE_PHP4_CGI
- prompt "php4-cgi.......................... PHP4 built for CGI"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- PHP is a widely-used general-purpose scripting language that is especially
- suited for Web development and can be embedded into HTML.
-
- http://www.php.net/
-
-config BR2_PACKAGE_PHP4_FASTCGI
- prompt "php4-fastcgi...................... PHP4 built for FastCGI"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- PHP is a widely-used general-purpose scripting language that is especially
- suited for Web development and can be embedded into HTML.
-
- http://www.php.net/
-
-comment "Extensions ---"
-
-config BR2_PACKAGE_PHP4_MOD_CURL
- prompt "php4-mod-curl..................... cURL module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBCURL
-
-config BR2_PACKAGE_PHP4_MOD_FTP
- prompt "php4-mod-ftp...................... FTP module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
-
-config BR2_PACKAGE_PHP4_MOD_GD
- prompt "php4-mod-gd....................... GD graphics library module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBGD
- select BR2_PACKAGE_LIBPNG
-
-config BR2_PACKAGE_PHP4_MOD_GMP
- prompt "php4-mod-gmp...................... GMP module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBGMP
-
-config BR2_PACKAGE_PHP4_MOD_LDAP
- prompt "php4-mod-ldap..................... LDAP module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBOPENLDAP
-
-config BR2_PACKAGE_PHP4_MOD_MYSQL
- prompt "php4-mod-mysql.................... MySQL module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBMYSQLCLIENT
-
-config BR2_PACKAGE_PHP4_MOD_OPENSSL
- prompt "php4-mod-openssl.................. OpenSSL module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBOPENSSL
-
-config BR2_PACKAGE_PHP4_MOD_PCRE
- prompt "php4-mod-pcre..................... PCRE module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBPCRE
-
-config BR2_PACKAGE_PHP4_MOD_PGSQL
- prompt "php4-mod-pgsql.................... PostgreSQL module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBPQ
-
-config BR2_PACKAGE_PHP4_MOD_SESSION
- prompt "php4-mod-session.................. Sessions module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
-
-config BR2_PACKAGE_PHP4_MOD_SQLITE
- prompt "php4-mod-sqlite................... SQLite module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBSQLITE2
-
-config BR2_PACKAGE_PHP4_MOD_SOCKETS
- prompt "php4-mod-sockets.................. Sockets module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
-
-config BR2_PACKAGE_PHP4_MOD_XML
- prompt "php4-mod-xml...................... XML module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP4
- select BR2_PACKAGE_LIBEXPAT
-
-endmenu
diff --git a/openwrt/package/php4/Makefile b/openwrt/package/php4/Makefile
deleted file mode 100644
index 75664ad0b1..0000000000
--- a/openwrt/package/php4/Makefile
+++ /dev/null
@@ -1,287 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=php
-PKG_VERSION:=4.3.11
-PKG_RELEASE:=2
-PKG_MD5SUM:=fbc67d240812136a9842bc1f2a217b7a
-
-PKG_SOURCE_URL:=http://fr.php.net/distributions/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-define PKG_mod_template
-
-$$(IPKG_$(1)):
- install -d -m0755 $$(IDIR_$(1))/usr/lib/php
- install -m0755 $(PKG_BUILD_DIR)/modules/$(2).so $$(IDIR_$(1))/usr/lib/php
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-PKG_CONFIGURE_OPTS:= \
- --enable-shared \
- --disable-static \
- --disable-rpath \
- --disable-debug \
- --without-pear \
- \
- --with-config-file-path=/etc \
- --disable-ipv6 \
- --enable-magic-quotes \
- --enable-memory-limit \
- --disable-overload \
- --disable-short-tags \
- \
- --disable-ctype \
- --disable-dom \
- --enable-ftp=shared \
- --without-gettext \
- --without-iconv \
- --disable-mbstring \
- --disable-mbregex \
- --with-openssl=shared,"$(STAGING_DIR)/usr" \
- --with-kerberos=no \
- --with-openssl-dir="$(STAGING_DIR)/usr" \
- --enable-session=shared \
- --enable-sockets=shared \
- --disable-tokenizer \
- --with-zlib="$(STAGING_DIR)/usr" \
- --with-zlib-dir="$(STAGING_DIR)/usr" \
-
-ifneq ($(BR2_PACKAGE_PHP4_MOD_CURL),)
-PKG_CONFIGURE_OPTS+= --with-curl=shared,"$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-curl
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_GD),)
-PKG_CONFIGURE_OPTS+= --with-gd=shared,"$(STAGING_DIR)/usr" \
- --without-freetype-dir \
- --with-jpeg-dir="$(STAGING_DIR)/usr" \
- --with-png-dir="$(STAGING_DIR)/usr" \
- --without-xpm-dir \
- --without-ttf \
- --without-t1lib \
- --enable-gd-native-ttf \
- --disable-gd-jis-conv
-else
-PKG_CONFIGURE_OPTS+= --without-gd
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_GMP),)
-PKG_CONFIGURE_OPTS+= --with-gmp=shared,"$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-gmp
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_LDAP),)
-PKG_CONFIGURE_OPTS+= --with-ldap=shared,"$(STAGING_DIR)/usr"
- --with-ldap-sasl="$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-ldap
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_MYSQL),)
-PKG_CONFIGURE_OPTS+= --with-mysql=shared,"$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-mysql
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_PCRE),)
-PKG_CONFIGURE_OPTS+= --with-pcre-regex=shared,"$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-pcre-regex
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_PGSQL),)
-PKG_CONFIGURE_OPTS+= --with-pgsql=shared,"$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-pgsql
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_SQLITE),)
-PKG_CONFIGURE_OPTS+= --with-sqlite=shared,"$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-sqlite
-endif
-ifneq ($(BR2_PACKAGE_PHP4_MOD_XML),)
-PKG_CONFIGURE_OPTS+= --enable-xml=shared \
- --with-expat-dir="$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --disable-xml
-endif
-
-$(eval $(call PKG_template,PHP4_CLI,php4-cli,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_CGI,php4-cgi,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_FASTCGI,php4-fastcgi,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_template,PHP4_MOD_CURL,php4-mod-curl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_MOD_FTP,php4-mod-ftp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_MOD_GD,php4-mod-gd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_MOD_GMP,php4-mod-gmp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_MOD_LDAP,php4-mod-ldap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_MOD_MYSQL,php4-mod-mysql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_MOD_OPENSSL,php4-mod-openssl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_MOD_PCRE,php4-mod-pcre,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_MOD_PGSQL,php4-mod-pgsql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_MOD_SESSION,php4-mod-session,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_MOD_SOCKETS,php4-mod-sockets,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_MOD_SQLITE,php4-mod-sqlite,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP4_MOD_XML,php4-mod-xml,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_mod_template,PHP4_MOD_CURL,curl))
-$(eval $(call PKG_mod_template,PHP4_MOD_FTP,ftp))
-$(eval $(call PKG_mod_template,PHP4_MOD_GD,gd))
-$(eval $(call PKG_mod_template,PHP4_MOD_GMP,gmp))
-$(eval $(call PKG_mod_template,PHP4_MOD_LDAP,ldap))
-$(eval $(call PKG_mod_template,PHP4_MOD_MYSQL,mysql))
-$(eval $(call PKG_mod_template,PHP4_MOD_OPENSSL,openssl))
-$(eval $(call PKG_mod_template,PHP4_MOD_PCRE,pcre))
-$(eval $(call PKG_mod_template,PHP4_MOD_PGSQL,pgsql))
-$(eval $(call PKG_mod_template,PHP4_MOD_SESSION,session))
-$(eval $(call PKG_mod_template,PHP4_MOD_SOCKETS,sockets))
-$(eval $(call PKG_mod_template,PHP4_MOD_SQLITE,sqlite))
-$(eval $(call PKG_mod_template,PHP4_MOD_XML,xml))
-
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- LIBS="-lcrypto -lssl" \
- php_cv_cc_rpath="no" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- $(PKG_CONFIGURE_OPTS) \
- --enable-cli \
- --disable-cgi \
- --disable-fastcgi \
- --enable-force-cgi-redirect \
- --enable-discard-path \
- );
- $(MAKE) -C $(PKG_BUILD_DIR)
- mv $(PKG_BUILD_DIR)/sapi/cli/php $(PKG_BUILD_DIR)/php-cli
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- LIBS="-lcrypto -lssl" \
- php_cv_cc_rpath="no" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- $(PKG_CONFIGURE_OPTS) \
- --disable-cli \
- --enable-cgi \
- --disable-fastcgi \
- --enable-force-cgi-redirect \
- --enable-discard-path \
- );
- $(MAKE) -C $(PKG_BUILD_DIR)
- mv $(PKG_BUILD_DIR)/sapi/cgi/php $(PKG_BUILD_DIR)/php-cgi
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- LIBS="-lcrypto -lssl" \
- php_cv_cc_rpath="no" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/sbin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- $(PKG_CONFIGURE_OPTS) \
- --disable-cli \
- --enable-cgi \
- --enable-fastcgi \
- --enable-force-cgi-redirect \
- --enable-discard-path \
- );
- $(MAKE) -C $(PKG_BUILD_DIR)
- mv $(PKG_BUILD_DIR)/sapi/cgi/php $(PKG_BUILD_DIR)/php-fastcgi
- touch $@
-
-$(IPKG_PHP4_CLI):
- install -m0755 -d $(IDIR_PHP4_CLI)/etc
- install -m0644 ./files/php.ini $(IDIR_PHP4_CLI)/etc/
- install -m0755 -d $(IDIR_PHP4_CLI)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/php-cli $(IDIR_PHP4_CLI)/usr/bin/php
- $(RSTRIP) $(IDIR_PHP4_CLI)
- $(IPKG_BUILD) $(IDIR_PHP4_CLI) $(PACKAGE_DIR)
-
-$(IPKG_PHP4_CGI):
- install -m0755 -d $(IDIR_PHP4_CGI)/etc
- install -m0644 ./files/php.ini $(IDIR_PHP4_CGI)/etc/
- install -m0755 -d $(IDIR_PHP4_CGI)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/php-cgi $(IDIR_PHP4_CGI)/usr/bin/php
- $(RSTRIP) $(IDIR_PHP4_CGI)
- $(IPKG_BUILD) $(IDIR_PHP4_CGI) $(PACKAGE_DIR)
-
-$(IPKG_PHP4_FASTCGI):
- install -m0755 -d $(IDIR_PHP4_FASTCGI)/etc
- install -m0644 ./files/php.ini $(IDIR_PHP4_FASTCGI)/etc/
- install -m0755 -d $(IDIR_PHP4_FASTCGI)/etc/init.d
- install -m0755 ./files/php.init $(IDIR_PHP4_FASTCGI)/etc/init.d/php
- install -m0755 -d $(IDIR_PHP4_FASTCGI)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/php-fastcgi $(IDIR_PHP4_FASTCGI)/usr/sbin/php
- $(RSTRIP) $(IDIR_PHP4_FASTCGI)
- $(IPKG_BUILD) $(IDIR_PHP4_FASTCGI) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/php4/files/php.ini b/openwrt/package/php4/files/php.ini
deleted file mode 100644
index ae16d0b617..0000000000
--- a/openwrt/package/php4/files/php.ini
+++ /dev/null
@@ -1,561 +0,0 @@
-[PHP]
-
-cgi.fix_pathinfo=1
-
-zend.ze1_compatibility_mode = Off
-
-;short_open_tag = Off
-asp_tags = Off
-precision = 12
-y2k_compliance = On
-output_buffering = Off
-
-zlib.output_compression = Off
-;zlib.output_handler =
-implicit_flush = Off
-
-unserialize_callback_func=
-serialize_precision = 100
-
-allow_call_time_pass_reference = On
-
-safe_mode = Off
-
-safe_mode_gid = Off
-
-safe_mode_include_dir =
-
-safe_mode_exec_dir =
-
-safe_mode_allowed_env_vars = PHP_
-
-safe_mode_protected_env_vars = LD_LIBRARY_PATH
-
-;open_basedir =
-
-disable_functions =
-
-disable_classes =
-
-; Colors for Syntax Highlighting mode. Anything that's acceptable in
-; <span style="color: ???????"> would work.
-;highlight.string = #DD0000
-;highlight.comment = #FF9900
-;highlight.keyword = #007700
-;highlight.bg = #FFFFFF
-;highlight.default = #0000BB
-;highlight.html = #000000
-
-expose_php = On
-
-
-;;;;;;;;;;;;;;;;;;;
-; Resource Limits ;
-;;;;;;;;;;;;;;;;;;;
-
-max_execution_time = 30 ; Maximum execution time of each script, in seconds
-max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
-memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Error handling and logging ;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-; error_reporting is a bit-field. Or each number up to get desired error
-; reporting level
-; E_ALL - All errors and warnings (doesn't include E_STRICT)
-; E_ERROR - fatal run-time errors
-; E_WARNING - run-time warnings (non-fatal errors)
-; E_PARSE - compile-time parse errors
-; E_NOTICE - run-time notices (these are warnings which often result
-; from a bug in your code, but it's possible that it was
-; intentional (e.g., using an uninitialized variable and
-; relying on the fact it's automatically initialized to an
-; empty string)
-; E_STRICT - run-time notices, enable to have PHP suggest changes
-; to your code which will ensure the best interoperability
-; and forward compatibility of your code
-; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
-; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
-; initial startup
-; E_COMPILE_ERROR - fatal compile-time errors
-; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
-; E_USER_ERROR - user-generated error message
-; E_USER_WARNING - user-generated warning message
-; E_USER_NOTICE - user-generated notice message
-;
-; Examples:
-;
-; - Show all errors, except for notices and coding standards warnings
-;
-;error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
-;
-; - Show all errors, except for notices
-;
-;error_reporting = E_ALL & ~E_NOTICE
-;
-; - Show only errors
-;
-;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
-;
-; - Show all errors except for notices and coding standards warnings
-;
-error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
-
-; Print out errors (as a part of the output). For production web sites,
-; you're strongly encouraged to turn this feature off, and use error logging
-; instead (see below). Keeping display_errors enabled on a production web site
-; may reveal security information to end users, such as file paths on your Web
-; server, your database schema or other information.
-display_errors = On
-
-; Even when display_errors is on, errors that occur during PHP's startup
-; sequence are not displayed. It's strongly recommended to keep
-; display_startup_errors off, except for when debugging.
-display_startup_errors = Off
-
-; Log errors into a log file (server-specific log, stderr, or error_log (below))
-; As stated above, you're strongly advised to use error logging in place of
-; error displaying on production web sites.
-log_errors = Off
-
-; Set maximum length of log_errors. In error_log information about the source is
-; added. The default is 1024 and 0 allows to not apply any maximum length at all.
-log_errors_max_len = 1024
-
-; Do not log repeated messages. Repeated errors must occur in same file on same
-; line until ignore_repeated_source is set true.
-ignore_repeated_errors = Off
-
-; Ignore source of message when ignoring repeated messages. When this setting
-; is On you will not log errors with repeated messages from different files or
-; sourcelines.
-ignore_repeated_source = Off
-
-; If this parameter is set to Off, then memory leaks will not be shown (on
-; stdout or in the log). This has only effect in a debug compile, and if
-; error reporting includes E_WARNING in the allowed list
-report_memleaks = On
-
-; Store the last error/warning message in $php_errormsg (boolean).
-track_errors = Off
-
-; Disable the inclusion of HTML tags in error messages.
-; Note: Never use this feature for production boxes.
-;html_errors = Off
-
-; If html_errors is set On PHP produces clickable error messages that direct
-; to a page describing the error or function causing the error in detail.
-; You can download a copy of the PHP manual from http://www.php.net/docs.php
-; and change docref_root to the base URL of your local copy including the
-; leading '/'. You must also specify the file extension being used including
-; the dot.
-; Note: Never use this feature for production boxes.
-;docref_root = "/phpmanual/"
-;docref_ext = .html
-
-; String to output before an error message.
-;error_prepend_string = "<font color=ff0000>"
-
-; String to output after an error message.
-;error_append_string = "</font>"
-
-; Log errors to specified file.
-;error_log = filename
-
-; Log errors to syslog (Event Log on NT, not valid in Windows 95).
-;error_log = syslog
-
-
-;;;;;;;;;;;;;;;;;
-; Data Handling ;
-;;;;;;;;;;;;;;;;;
-;
-; Note - track_vars is ALWAYS enabled as of PHP 4.0.3
-
-; The separator used in PHP generated URLs to separate arguments.
-; Default is "&".
-;arg_separator.output = "&amp;"
-
-; List of separator(s) used by PHP to parse input URLs into variables.
-; Default is "&".
-; NOTE: Every character in this directive is considered as separator!
-;arg_separator.input = ";&"
-
-; This directive describes the order in which PHP registers GET, POST, Cookie,
-; Environment and Built-in variables (G, P, C, E & S respectively, often
-; referred to as EGPCS or GPC). Registration is done from left to right, newer
-; values override older values.
-variables_order = "EGPCS"
-
-; Whether or not to register the EGPCS variables as global variables. You may
-; want to turn this off if you don't want to clutter your scripts' global scope
-; with user data. This makes most sense when coupled with track_vars - in which
-; case you can access all of the GPC variables through the $HTTP_*_VARS[],
-; variables.
-;
-; You should do your best to write your scripts so that they do not require
-; register_globals to be on; Using form variables as globals can easily lead
-; to possible security problems, if the code is not very well thought of.
-register_globals = Off
-
-; Whether or not to register the old-style input arrays, HTTP_GET_VARS
-; and friends. If you're not using them, it's recommended to turn them off,
-; for performance reasons.
-register_long_arrays = On
-
-; This directive tells PHP whether to declare the argv&argc variables (that
-; would contain the GET information). If you don't use these variables, you
-; should turn it off for increased performance.
-register_argc_argv = On
-
-; Maximum size of POST data that PHP will accept.
-post_max_size = 8M
-
-; Magic quotes
-;
-
-; Magic quotes for incoming GET/POST/Cookie data.
-magic_quotes_gpc = On
-
-; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
-magic_quotes_runtime = Off
-
-; Use Sybase-style magic quotes (escape ' with '' instead of \').
-magic_quotes_sybase = Off
-
-; Automatically add files before or after any PHP document.
-auto_prepend_file =
-auto_append_file =
-
-; As of 4.0b4, PHP always outputs a character encoding by default in
-; the Content-type: header. To disable sending of the charset, simply
-; set it to be empty.
-;
-; PHP's built-in default is text/html
-default_mimetype = "text/html"
-;default_charset = "iso-8859-1"
-
-; Always populate the $HTTP_RAW_POST_DATA variable.
-;always_populate_raw_post_data = On
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;
-; Paths and Directories ;
-;;;;;;;;;;;;;;;;;;;;;;;;;
-
-; UNIX: "/path1:/path2"
-;include_path = ".:/php/includes"
-;
-; Windows: "\path1;\path2"
-;include_path = ".;c:\php\includes"
-
-; The root of the PHP pages, used only if nonempty.
-; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
-; if you are running php as a CGI under any web server (other than IIS)
-; see documentation for security issues. The alternate is to use the
-; cgi.force_redirect configuration below
-doc_root = /www
-
-; The directory under which PHP opens the script using /~username used only
-; if nonempty.
-user_dir =
-
-; Directory in which the loadable extensions (modules) reside.
-extension_dir = "/usr/lib/php"
-
-; Whether or not to enable the dl() function. The dl() function does NOT work
-; properly in multithreaded servers, such as IIS or Zeus, and is automatically
-; disabled on them.
-enable_dl = On
-
-; cgi.force_redirect is necessary to provide security running PHP as a CGI under
-; most web servers. Left undefined, PHP turns this on by default. You can
-; turn it off here AT YOUR OWN RISK
-; **You CAN safely turn this off for IIS, in fact, you MUST.**
-; cgi.force_redirect = 1
-
-; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
-; every request.
-; cgi.nph = 1
-
-; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
-; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
-; will look for to know it is OK to continue execution. Setting this variable MAY
-; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
-; cgi.redirect_status_env = ;
-
-; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
-; security tokens of the calling client. This allows IIS to define the
-; security context that the request runs under. mod_fastcgi under Apache
-; does not currently support this feature (03/17/2002)
-; Set to 1 if running under IIS. Default is zero.
-; fastcgi.impersonate = 1;
-
-; cgi.rfc2616_headers configuration option tells PHP what type of headers to
-; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
-; is supported by Apache. When this option is set to 1 PHP will send
-; RFC2616 compliant header.
-; Default is zero.
-;cgi.rfc2616_headers = 0
-
-
-;;;;;;;;;;;;;;;;
-; File Uploads ;
-;;;;;;;;;;;;;;;;
-
-; Whether to allow HTTP file uploads.
-file_uploads = On
-
-; Temporary directory for HTTP uploaded files (will use system default if not
-; specified).
-upload_tmp_dir = /tmp
-
-; Maximum allowed size for uploaded files.
-upload_max_filesize = 2M
-
-
-;;;;;;;;;;;;;;;;;;
-; Fopen wrappers ;
-;;;;;;;;;;;;;;;;;;
-
-; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
-allow_url_fopen = On
-
-; Define the anonymous ftp password (your email address)
-;from="john@doe.com"
-
-; Define the User-Agent string
-; user_agent="PHP"
-
-; Default timeout for socket based streams (seconds)
-default_socket_timeout = 60
-
-; If your scripts have to deal with files from Macintosh systems,
-; or you are running on a Mac and need to deal with files from
-; unix or win32 systems, setting this flag will cause PHP to
-; automatically detect the EOL character in those files so that
-; fgets() and file() will work regardless of the source of the file.
-; auto_detect_line_endings = Off
-
-
-;;;;;;;;;;;;;;;;;;;;;;
-; Dynamic Extensions ;
-;;;;;;;;;;;;;;;;;;;;;;
-;
-; If you wish to have an extension loaded automatically, use the following
-; syntax:
-;
-; extension=modulename.extension
-;
-; For example, on Windows:
-;
-; extension=msql.dll
-;
-; ... or under UNIX:
-;
-; extension=msql.so
-;
-; Note that it should be the name of the module only; no directory information
-; needs to go here. Specify the location of the extension with the
-; extension_dir directive above.
-
-
-;Windows Extensions
-;Note that ODBC support is built in, so no dll is needed for it.
-;
-
-;extension=ftp.so
-;extension=gd.so
-;extension=mysql.so
-;extension=pcre.so
-;extension=session.so
-;extension=sockets.so
-;extension=xml.so
-
-
-
-
-;;;;;;;;;;;;;;;;;;;
-; Module Settings ;
-;;;;;;;;;;;;;;;;;;;
-
-[SQL]
-sql.safe_mode = Off
-
-[Session]
-; Handler used to store/retrieve data.
-session.save_handler = files
-
-; Argument passed to save_handler. In the case of files, this is the path
-; where data files are stored. Note: Windows users have to change this
-; variable in order to use PHP's session functions.
-;
-; As of PHP 4.0.1, you can define the path as:
-;
-; session.save_path = "N;/path"
-;
-; where N is an integer. Instead of storing all the session files in
-; /path, what this will do is use subdirectories N-levels deep, and
-; store the session data in those directories. This is useful if you
-; or your OS have problems with lots of files in one directory, and is
-; a more efficient layout for servers that handle lots of sessions.
-;
-; NOTE 1: PHP will not create this directory structure automatically.
-; You can use the script in the ext/session dir for that purpose.
-; NOTE 2: See the section on garbage collection below if you choose to
-; use subdirectories for session storage
-;
-; The file storage module creates files using mode 600 by default.
-; You can change that by using
-;
-; session.save_path = "N;MODE;/path"
-;
-; where MODE is the octal representation of the mode. Note that this
-; does not overwrite the process's umask.
-session.save_path = "/tmp"
-
-; Whether to use cookies.
-session.use_cookies = 1
-
-; This option enables administrators to make their users invulnerable to
-; attacks which involve passing session ids in URLs; defaults to 0.
-; session.use_only_cookies = 1
-
-; Name of the session (used as cookie name).
-session.name = PHPSESSID
-
-; Initialize session on request startup.
-session.auto_start = 0
-
-; Lifetime in seconds of cookie or, if 0, until browser is restarted.
-session.cookie_lifetime = 0
-
-; The path for which the cookie is valid.
-session.cookie_path = /
-
-; The domain for which the cookie is valid.
-session.cookie_domain =
-
-; Handler used to serialize data. php is the standard serializer of PHP.
-session.serialize_handler = php
-
-; Define the probability that the 'garbage collection' process is started
-; on every session initialization.
-; The probability is calculated by using gc_probability/gc_divisor,
-; e.g. 1/100 means there is a 1% chance that the GC process starts
-; on each request.
-
-session.gc_probability = 1
-session.gc_divisor = 100
-
-; After this number of seconds, stored data will be seen as 'garbage' and
-; cleaned up by the garbage collection process.
-session.gc_maxlifetime = 1440
-
-; NOTE: If you are using the subdirectory option for storing session files
-; (see session.save_path above), then garbage collection does *not*
-; happen automatically. You will need to do your own garbage
-; collection through a shell script, cron entry, or some other method.
-; For example, the following script would is the equivalent of
-; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
-; cd /path/to/sessions; find -cmin +24 | xargs rm
-
-; PHP 4.2 and less have an undocumented feature/bug that allows you to
-; to initialize a session variable in the global scope, albeit register_globals
-; is disabled. PHP 4.3 and later will warn you, if this feature is used.
-; You can disable the feature and the warning separately. At this time,
-; the warning is only displayed, if bug_compat_42 is enabled.
-
-session.bug_compat_42 = 1
-session.bug_compat_warn = 1
-
-; Check HTTP Referer to invalidate externally stored URLs containing ids.
-; HTTP_REFERER has to contain this substring for the session to be
-; considered as valid.
-session.referer_check =
-
-; How many bytes to read from the file.
-session.entropy_length = 0
-
-; Specified here to create the session id.
-session.entropy_file =
-
-;session.entropy_length = 16
-
-;session.entropy_file = /dev/urandom
-
-; Set to {nocache,private,public,} to determine HTTP caching aspects
-; or leave this empty to avoid sending anti-caching headers.
-session.cache_limiter = nocache
-
-; Document expires after n minutes.
-session.cache_expire = 180
-
-; trans sid support is disabled by default.
-; Use of trans sid may risk your users security.
-; Use this option with caution.
-; - User may send URL contains active session ID
-; to other person via. email/irc/etc.
-; - URL that contains active session ID may be stored
-; in publically accessible computer.
-; - User may access your site with the same session ID
-; always using URL stored in browser's history or bookmarks.
-session.use_trans_sid = 0
-
-; Select a hash function
-; 0: MD5 (128 bits)
-; 1: SHA-1 (160 bits)
-session.hash_function = 0
-
-; Define how many bits are stored in each character when converting
-; the binary hash data to something readable.
-;
-; 4 bits: 0-9, a-f
-; 5 bits: 0-9, a-v
-; 6 bits: 0-9, a-z, A-Z, "-", ","
-session.hash_bits_per_character = 4
-
-; The URL rewriter will look for URLs in a defined set of HTML tags.
-; form/fieldset are special; if you include them here, the rewriter will
-; add a hidden <input> field with the info which is otherwise appended
-; to URLs. If you want XHTML conformity, remove the form entry.
-; Note that all valid entries require a "=", even if no value follows.
-url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
-
-
-[Assertion]
-; Assert(expr); active by default.
-;assert.active = On
-
-; Issue a PHP warning for each failed assertion.
-;assert.warning = On
-
-; Don't bail out by default.
-;assert.bail = Off
-
-; User-function to be called if an assertion fails.
-;assert.callback = 0
-
-; Eval the expression with current error_reporting(). Set to true if you want
-; error_reporting(0) around the eval().
-;assert.quiet_eval = 0
-
-
-
-
-
-[exif]
-; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
-; With mbstring support this will automatically be converted into the encoding
-; given by corresponding encode setting. When empty mbstring.internal_encoding
-; is used. For the decode settings you can distinguish between motorola and
-; intel byte order. A decode setting cannot be empty.
-;exif.encode_unicode = ISO-8859-15
-;exif.decode_unicode_motorola = UCS-2BE
-;exif.decode_unicode_intel = UCS-2LE
-;exif.encode_jis =
-;exif.decode_jis_motorola = JIS
-;exif.decode_jis_intel = JIS
-
diff --git a/openwrt/package/php4/files/php.init b/openwrt/package/php4/files/php.init
deleted file mode 100644
index b29387bd74..0000000000
--- a/openwrt/package/php4/files/php.init
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-export PHP_FCGI_CHILDREN=''
-PORT=1026
-BIN=/usr/sbin/php
-
-case $1 in
- start)
- $BIN -b $PORT &
- ;;
- stop)
- kill `pidof php`
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/php4/ipkg/php4-cgi.conffiles b/openwrt/package/php4/ipkg/php4-cgi.conffiles
deleted file mode 100644
index f1b6b5fc94..0000000000
--- a/openwrt/package/php4/ipkg/php4-cgi.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/php.ini
diff --git a/openwrt/package/php4/ipkg/php4-cgi.control b/openwrt/package/php4/ipkg/php4-cgi.control
deleted file mode 100644
index 11b566baaf..0000000000
--- a/openwrt/package/php4/ipkg/php4-cgi.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: php4-cgi
-Priority: optional
-Section: net
-Provides: php4
-Depends: libopenssl, zlib
-Description: PHP4 compiled as for CGI
diff --git a/openwrt/package/php4/ipkg/php4-cli.conffiles b/openwrt/package/php4/ipkg/php4-cli.conffiles
deleted file mode 100644
index f1b6b5fc94..0000000000
--- a/openwrt/package/php4/ipkg/php4-cli.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/php.ini
diff --git a/openwrt/package/php4/ipkg/php4-cli.control b/openwrt/package/php4/ipkg/php4-cli.control
deleted file mode 100644
index 25b6a5d1bd..0000000000
--- a/openwrt/package/php4/ipkg/php4-cli.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: php4-cli
-Priority: optional
-Section: net
-Provides: php4
-Depends: libopenssl, zlib
-Description: PHP4 CLI (Command Line Interface)
diff --git a/openwrt/package/php4/ipkg/php4-fastcgi.conffiles b/openwrt/package/php4/ipkg/php4-fastcgi.conffiles
deleted file mode 100644
index 6d0835326c..0000000000
--- a/openwrt/package/php4/ipkg/php4-fastcgi.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/php.ini
-/etc/init.d/php
diff --git a/openwrt/package/php4/ipkg/php4-fastcgi.control b/openwrt/package/php4/ipkg/php4-fastcgi.control
deleted file mode 100644
index 0588612536..0000000000
--- a/openwrt/package/php4/ipkg/php4-fastcgi.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: php4-fastcgi
-Priority: optional
-Section: net
-Provides: php4
-Depends: libopenssl, zlib
-Description: PHP4 compiled for FastCGI (for use with libhttpd-fastcgi)
diff --git a/openwrt/package/php4/ipkg/php4-mod-curl.control b/openwrt/package/php4/ipkg/php4-mod-curl.control
deleted file mode 100644
index 5d67bd3f49..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-curl.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-curl
-Priority: optional
-Section: net
-Depends: php4, libcurl
-Description: cURL module for PHP4
diff --git a/openwrt/package/php4/ipkg/php4-mod-ftp.control b/openwrt/package/php4/ipkg/php4-mod-ftp.control
deleted file mode 100644
index 5e31a26b23..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-ftp.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-ftp
-Priority: optional
-Section: net
-Depends: php4
-Description: FTP module for PHP4
diff --git a/openwrt/package/php4/ipkg/php4-mod-gd.control b/openwrt/package/php4/ipkg/php4-mod-gd.control
deleted file mode 100644
index 3648fe6863..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-gd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-gd
-Priority: optional
-Section: net
-Depends: php4, libgd, libpng
-Description: GD module for PHP4
diff --git a/openwrt/package/php4/ipkg/php4-mod-gmp.control b/openwrt/package/php4/ipkg/php4-mod-gmp.control
deleted file mode 100644
index c7fae341eb..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-gmp.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-gmp
-Priority: optional
-Section: net
-Depends: php4, libgmp
-Description: GMP (GNU MP) module for PHP4
diff --git a/openwrt/package/php4/ipkg/php4-mod-ldap.control b/openwrt/package/php4/ipkg/php4-mod-ldap.control
deleted file mode 100644
index 4183e8c408..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-ldap.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-ldap
-Priority: optional
-Section: net
-Depends: php4, libopenldap
-Description: LDAP module for PHP4
diff --git a/openwrt/package/php4/ipkg/php4-mod-mysql.control b/openwrt/package/php4/ipkg/php4-mod-mysql.control
deleted file mode 100644
index bcf64d6f57..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-mysql.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-mysql
-Priority: optional
-Section: net
-Depends: php4, libmysqlclient
-Description: MySQL module for PHP4
diff --git a/openwrt/package/php4/ipkg/php4-mod-openssl.control b/openwrt/package/php4/ipkg/php4-mod-openssl.control
deleted file mode 100644
index 96d9b7d44c..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-openssl.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-openssl
-Priority: optional
-Section: net
-Depends: php4, libopenssl
-Description: OpenSSL module for PHP4
diff --git a/openwrt/package/php4/ipkg/php4-mod-pcre.control b/openwrt/package/php4/ipkg/php4-mod-pcre.control
deleted file mode 100644
index 13c92ab4e1..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-pcre.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-pcre
-Priority: optional
-Section: net
-Depends: php4, libpcre
-Description: PCRE module for PHP4
diff --git a/openwrt/package/php4/ipkg/php4-mod-pgsql.control b/openwrt/package/php4/ipkg/php4-mod-pgsql.control
deleted file mode 100644
index f90af963ae..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-pgsql.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-pgsql
-Priority: optional
-Section: net
-Depends: php4, libpq
-Description: PostgreSQL module for PHP4
diff --git a/openwrt/package/php4/ipkg/php4-mod-session.control b/openwrt/package/php4/ipkg/php4-mod-session.control
deleted file mode 100644
index abf9c4e936..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-session.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-session
-Priority: optional
-Section: net
-Depends: php4
-Description: Sessions module for PHP4
diff --git a/openwrt/package/php4/ipkg/php4-mod-sockets.control b/openwrt/package/php4/ipkg/php4-mod-sockets.control
deleted file mode 100644
index fd286f4338..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-sockets.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-sockets
-Priority: optional
-Section: net
-Depends: php4
-Description: Sockets module for PHP4
diff --git a/openwrt/package/php4/ipkg/php4-mod-sqlite.control b/openwrt/package/php4/ipkg/php4-mod-sqlite.control
deleted file mode 100644
index dbff3679e1..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-sqlite.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-sqlite
-Priority: optional
-Section: net
-Depends: php4, libsqlite2
-Description: SQLite module for PHP4
diff --git a/openwrt/package/php4/ipkg/php4-mod-xml.control b/openwrt/package/php4/ipkg/php4-mod-xml.control
deleted file mode 100644
index d948c738b2..0000000000
--- a/openwrt/package/php4/ipkg/php4-mod-xml.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php4-mod-xml
-Priority: optional
-Section: net
-Depends: php4, libexpat
-Description: XML module for PHP4
diff --git a/openwrt/package/php4/patches/php-4.3.11-sqlite-1.0.patch b/openwrt/package/php4/patches/php-4.3.11-sqlite-1.0.patch
deleted file mode 100644
index e1b11ef4ea..0000000000
--- a/openwrt/package/php4/patches/php-4.3.11-sqlite-1.0.patch
+++ /dev/null
@@ -1,17705 +0,0 @@
-diff -ruN php-4.3.11-old/configure php-4.3.11-new/configure
---- php-4.3.11-old/configure 2005-03-30 16:35:34.000000000 +0200
-+++ php-4.3.11-new/configure 2005-07-04 17:29:33.000000000 +0200
-@@ -827,6 +827,8 @@
- ac_help="$ac_help
- --enable-sockets Enable sockets support"
- ac_help="$ac_help
-+ --with-sqlite Include sqlite support"
-+ac_help="$ac_help
- --with-regex=TYPE regex library type: system, apache, php. Default: php
- WARNING: Do NOT use unless you know what you are doing!"
- ac_help="$ac_help
-@@ -1649,7 +1651,7 @@
- fi
-
- echo $ac_n "checking host system type""... $ac_c" 1>&6
--echo "configure:1653: checking host system type" >&5
-+echo "configure:1655: checking host system type" >&5
-
- host_alias=$host
- case "$host_alias" in
-@@ -1749,7 +1751,7 @@
- # 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:1753: checking for $ac_word" >&5
-+echo "configure:1755: 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
-@@ -1779,7 +1781,7 @@
- # 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:1783: checking for $ac_word" >&5
-+echo "configure:1785: 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
-@@ -1830,7 +1832,7 @@
- # 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:1834: checking for $ac_word" >&5
-+echo "configure:1836: 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
-@@ -1862,7 +1864,7 @@
- fi
-
- echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
--echo "configure:1866: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-+echo "configure:1868: 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.
-@@ -1873,12 +1875,12 @@
-
- cat > conftest.$ac_ext << EOF
-
--#line 1877 "configure"
-+#line 1879 "configure"
- #include "confdefs.h"
-
- main(){return(0);}
- EOF
--if { (eval echo configure:1882: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:1884: \"$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
-@@ -1904,12 +1906,12 @@
- { 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:1908: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-+echo "configure:1910: 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:1913: checking whether we are using GNU C" >&5
-+echo "configure:1915: 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
-@@ -1918,7 +1920,7 @@
- yes;
- #endif
- EOF
--if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1922: \"$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:1924: \"$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
-@@ -1937,7 +1939,7 @@
- ac_save_CFLAGS="$CFLAGS"
- CFLAGS=
- echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
--echo "configure:1941: checking whether ${CC-cc} accepts -g" >&5
-+echo "configure:1943: 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
-@@ -1970,10 +1972,10 @@
-
- if test "x$CC" != xcc; then
- echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6
--echo "configure:1974: checking whether $CC and cc understand -c and -o together" >&5
-+echo "configure:1976: checking whether $CC and cc understand -c and -o together" >&5
- else
- echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6
--echo "configure:1977: checking whether cc understands -c and -o together" >&5
-+echo "configure:1979: checking whether cc understands -c and -o together" >&5
- fi
- set dummy $CC; ac_cc="`echo $2 |
- sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`"
-@@ -1985,16 +1987,16 @@
- # We do the test twice because some compilers refuse to overwrite an
- # existing .o file with -o, though they will create one.
- ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5'
--if { (eval echo configure:1989: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
-- test -f conftest.o && { (eval echo configure:1990: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
-+if { (eval echo configure:1991: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
-+ test -f conftest.o && { (eval echo configure:1992: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
- then
- eval ac_cv_prog_cc_${ac_cc}_c_o=yes
- if test "x$CC" != xcc; then
- # Test first that cc exists at all.
-- if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1995: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
-+ if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1997: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
- ac_try='cc -c conftest.c -o conftest.o 1>&5'
-- if { (eval echo configure:1997: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
-- test -f conftest.o && { (eval echo configure:1998: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
-+ if { (eval echo configure:1999: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
-+ test -f conftest.o && { (eval echo configure:2000: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
- then
- # cc works too.
- :
-@@ -2021,7 +2023,7 @@
- fi
-
- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
--echo "configure:2025: checking how to run the C preprocessor" >&5
-+echo "configure:2027: checking how to run the C preprocessor" >&5
- # On Suns, sometimes $CPP names a directory.
- if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-@@ -2036,13 +2038,13 @@
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp.
- cat > conftest.$ac_ext <<EOF
--#line 2040 "configure"
-+#line 2042 "configure"
- #include "confdefs.h"
- #include <assert.h>
- Syntax Error
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:2046: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:2048: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- :
-@@ -2053,13 +2055,13 @@
- rm -rf conftest*
- CPP="${CC-cc} -E -traditional-cpp"
- cat > conftest.$ac_ext <<EOF
--#line 2057 "configure"
-+#line 2059 "configure"
- #include "confdefs.h"
- #include <assert.h>
- Syntax Error
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:2063: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:2065: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- :
-@@ -2070,13 +2072,13 @@
- rm -rf conftest*
- CPP="${CC-cc} -nologo -E"
- cat > conftest.$ac_ext <<EOF
--#line 2074 "configure"
-+#line 2076 "configure"
- #include "confdefs.h"
- #include <assert.h>
- Syntax Error
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:2080: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:2082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- :
-@@ -2102,9 +2104,9 @@
-
-
- echo $ac_n "checking for AIX""... $ac_c" 1>&6
--echo "configure:2106: checking for AIX" >&5
-+echo "configure:2108: checking for AIX" >&5
- cat > conftest.$ac_ext <<EOF
--#line 2108 "configure"
-+#line 2110 "configure"
- #include "confdefs.h"
- #ifdef _AIX
- yes
-@@ -2129,7 +2131,7 @@
-
-
- echo $ac_n "checking if compiler supports -R""... $ac_c" 1>&6
--echo "configure:2133: checking if compiler supports -R" >&5
-+echo "configure:2135: checking if compiler supports -R" >&5
- if eval "test \"`echo '$''{'php_cv_cc_dashr'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2137,14 +2139,14 @@
- SAVE_LIBS=$LIBS
- LIBS="-R /usr/lib $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 2141 "configure"
-+#line 2143 "configure"
- #include "confdefs.h"
-
- int main() {
-
- ; return 0; }
- EOF
--if { (eval echo configure:2148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:2150: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- php_cv_cc_dashr=yes
- else
-@@ -2162,7 +2164,7 @@
- ld_runpath_switch=-R
- else
- echo $ac_n "checking if compiler supports -Wl,-rpath,""... $ac_c" 1>&6
--echo "configure:2166: checking if compiler supports -Wl,-rpath," >&5
-+echo "configure:2168: checking if compiler supports -Wl,-rpath," >&5
- if eval "test \"`echo '$''{'php_cv_cc_rpath'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2170,14 +2172,14 @@
- SAVE_LIBS=$LIBS
- LIBS="-Wl,-rpath,/usr/lib $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 2174 "configure"
-+#line 2176 "configure"
- #include "confdefs.h"
-
- int main() {
-
- ; return 0; }
- EOF
--if { (eval echo configure:2181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:2183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- php_cv_cc_rpath=yes
- else
-@@ -2203,7 +2205,7 @@
- # Extract the first word of "re2c", so it can be a program name with args.
- set dummy re2c; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:2207: checking for $ac_word" >&5
-+echo "configure:2209: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_RE2C'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2232,7 +2234,7 @@
-
-
- echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
--echo "configure:2236: checking whether ln -s works" >&5
-+echo "configure:2238: checking whether ln -s works" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2257,7 +2259,7 @@
- # 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:2261: checking for $ac_word" >&5
-+echo "configure:2263: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2291,7 +2293,7 @@
- # 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:2295: checking for $ac_word" >&5
-+echo "configure:2297: 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
-@@ -2325,7 +2327,7 @@
- echo "configure: warning: You will need bison if you want to regenerate the PHP parsers." 1>&2
- else
- echo $ac_n "checking bison version""... $ac_c" 1>&6
--echo "configure:2329: checking bison version" >&5
-+echo "configure:2331: checking bison version" >&5
- set `bison --version| grep 'GNU Bison' | cut -d ' ' -f 4 | sed -e 's/\./ /'|tr -d a-z`
- if test "${1}" -ne "1" -o "(" "${2}" != "28" -a "${2}" != "35" -a "${2}" != "75" -a "${2}" != "875" ")"; then
- echo "configure: warning: You will need bison 1.28" 1>&2
-@@ -2335,7 +2337,7 @@
- # Extract the first word of "flex", so it can be a program name with args.
- set dummy flex; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:2339: checking for $ac_word" >&5
-+echo "configure:2341: 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
-@@ -2369,7 +2371,7 @@
- *) ac_lib=l ;;
- esac
- echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6
--echo "configure:2373: checking for yywrap in -l$ac_lib" >&5
-+echo "configure:2375: checking for yywrap in -l$ac_lib" >&5
- ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -2377,7 +2379,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$ac_lib $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 2381 "configure"
-+#line 2383 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -2388,7 +2390,7 @@
- yywrap()
- ; return 0; }
- EOF
--if { (eval echo configure:2392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:2394: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -2412,7 +2414,7 @@
-
- if test -n "$LEX"; then
- echo $ac_n "checking lex output file root""... $ac_c" 1>&6
--echo "configure:2416: checking lex output file root" >&5
-+echo "configure:2418: checking lex output file root" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2433,7 +2435,7 @@
- LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
-
- echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6
--echo "configure:2437: checking whether yytext is a pointer" >&5
-+echo "configure:2439: checking whether yytext is a pointer" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2445,14 +2447,14 @@
- ac_save_LIBS="$LIBS"
- LIBS="$LIBS $LEXLIB"
- cat > conftest.$ac_ext <<EOF
--#line 2449 "configure"
-+#line 2451 "configure"
- #include "confdefs.h"
- `cat $LEX_OUTPUT_ROOT.c`
- int main() {
-
- ; return 0; }
- EOF
--if { (eval echo configure:2456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:2458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ac_cv_prog_lex_yytext_pointer=yes
- else
-@@ -2476,12 +2478,12 @@
- :
- fi
- echo $ac_n "checking for working const""... $ac_c" 1>&6
--echo "configure:2480: checking for working const" >&5
-+echo "configure:2482: checking for working const" >&5
- if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 2485 "configure"
-+#line 2487 "configure"
- #include "confdefs.h"
-
- int main() {
-@@ -2530,7 +2532,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:2534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:2536: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_c_const=yes
- else
-@@ -2555,7 +2557,7 @@
- fi
-
- echo $ac_n "checking flex version""... $ac_c" 1>&6
--echo "configure:2559: checking flex version" >&5
-+echo "configure:2561: checking flex version" >&5
- if test "$LEX" ;then
- flexvers=`echo "" | $LEX -V -v --version 2>/dev/null |
- sed -e 's/^.* //' -e 's/\./ /g'`
-@@ -2571,7 +2573,7 @@
- fi
-
- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
--echo "configure:2575: checking whether byte ordering is bigendian" >&5
-+echo "configure:2577: checking whether byte ordering is bigendian" >&5
- if eval "test \"`echo '$''{'ac_cv_c_bigendian_php'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2581,7 +2583,7 @@
- ac_cv_c_bigendian_php=unknown
- else
- cat > conftest.$ac_ext <<EOF
--#line 2585 "configure"
-+#line 2587 "configure"
- #include "confdefs.h"
-
- int main(void)
-@@ -2597,7 +2599,7 @@
- }
-
- EOF
--if { (eval echo configure:2601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:2603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_c_bigendian_php=yes
- else
-@@ -2654,7 +2656,7 @@
- # Disable PIC mode by default where it is known to be safe to do so,
- # to avoid the performance hit from the lost register
- echo $ac_n "checking whether to force non-PIC code in shared modules""... $ac_c" 1>&6
--echo "configure:2658: checking whether to force non-PIC code in shared modules" >&5
-+echo "configure:2660: checking whether to force non-PIC code in shared modules" >&5
- case $host_alias in
- i?86-*-linux*|i?86-*-freebsd*)
- if test "${with_pic+set}" != "set" || test "$with_pic" = "no"; then
-@@ -2753,7 +2755,7 @@
- pthreads_working=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 2757 "configure"
-+#line 2759 "configure"
- #include "confdefs.h"
-
- #include <pthread.h>
-@@ -2771,7 +2773,7 @@
- return pthread_create(&thd, NULL, thread_routine, &data);
- }
- EOF
--if { (eval echo configure:2775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:2777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- pthreads_working=yes
-@@ -2791,7 +2793,7 @@
- CFLAGS=$save_CFLAGS
-
- echo $ac_n "checking for pthreads_cflags""... $ac_c" 1>&6
--echo "configure:2795: checking for pthreads_cflags" >&5
-+echo "configure:2797: checking for pthreads_cflags" >&5
- if eval "test \"`echo '$''{'ac_cv_pthreads_cflags'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2806,7 +2808,7 @@
- pthreads_working=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 2810 "configure"
-+#line 2812 "configure"
- #include "confdefs.h"
-
- #include <pthread.h>
-@@ -2824,7 +2826,7 @@
- return pthread_create(&thd, NULL, thread_routine, &data);
- }
- EOF
--if { (eval echo configure:2828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:2830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- pthreads_working=yes
-@@ -2854,7 +2856,7 @@
- echo "$ac_t""$ac_cv_pthreads_cflags" 1>&6
-
- echo $ac_n "checking for pthreads_lib""... $ac_c" 1>&6
--echo "configure:2858: checking for pthreads_lib" >&5
-+echo "configure:2860: checking for pthreads_lib" >&5
- if eval "test \"`echo '$''{'ac_cv_pthreads_lib'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -2869,7 +2871,7 @@
- pthreads_working=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 2873 "configure"
-+#line 2875 "configure"
- #include "confdefs.h"
-
- #include <pthread.h>
-@@ -2887,7 +2889,7 @@
- return pthread_create(&thd, NULL, thread_routine, &data);
- }
- EOF
--if { (eval echo configure:2891: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:2893: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- pthreads_working=yes
-@@ -2985,7 +2987,7 @@
-
-
- echo $ac_n "checking for AOLserver support""... $ac_c" 1>&6
--echo "configure:2989: checking for AOLserver support" >&5
-+echo "configure:2991: checking for AOLserver support" >&5
- # Check whether --with-aolserver or --without-aolserver was given.
- if test "${with_aolserver+set}" = set; then
- withval="$with_aolserver"
-@@ -3226,7 +3228,7 @@
-
-
- echo $ac_n "checking for Apache 1.x module support via DSO through APXS""... $ac_c" 1>&6
--echo "configure:3230: checking for Apache 1.x module support via DSO through APXS" >&5
-+echo "configure:3232: checking for Apache 1.x module support via DSO through APXS" >&5
- # Check whether --with-apxs or --without-apxs was given.
- if test "${with_apxs+set}" = set; then
- withval="$with_apxs"
-@@ -3529,7 +3531,7 @@
-
- if test "$PHP_SAPI" != "apache"; then
- echo $ac_n "checking for Apache 1.x module support""... $ac_c" 1>&6
--echo "configure:3533: checking for Apache 1.x module support" >&5
-+echo "configure:3535: checking for Apache 1.x module support" >&5
- # Check whether --with-apache or --without-apache was given.
- if test "${with_apache+set}" = set; then
- withval="$with_apache"
-@@ -4364,7 +4366,7 @@
- fi
-
- echo $ac_n "checking for mod_charset compatibility option""... $ac_c" 1>&6
--echo "configure:4368: checking for mod_charset compatibility option" >&5
-+echo "configure:4370: checking for mod_charset compatibility option" >&5
- # Check whether --with-mod_charset or --without-mod_charset was given.
- if test "${with_mod_charset+set}" = set; then
- withval="$with_mod_charset"
-@@ -4388,7 +4390,7 @@
-
- gcc_arg_name=ac_cv_gcc_arg_rdynamic
- echo $ac_n "checking whether $CC supports -rdynamic""... $ac_c" 1>&6
--echo "configure:4392: checking whether $CC supports -rdynamic" >&5
-+echo "configure:4394: checking whether $CC supports -rdynamic" >&5
- if eval "test \"`echo '$''{'ac_cv_gcc_arg_rdynamic'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -4431,7 +4433,7 @@
-
-
- echo $ac_n "checking for member fd in BUFF *""... $ac_c" 1>&6
--echo "configure:4435: checking for member fd in BUFF *" >&5
-+echo "configure:4437: checking for member fd in BUFF *" >&5
- if eval "test \"`echo '$''{'ac_cv_php_fd_in_buff'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -4443,14 +4445,14 @@
- CPPFLAGS="$CPPFLAGS $APACHE_INCLUDE"
- fi
- cat > conftest.$ac_ext <<EOF
--#line 4447 "configure"
-+#line 4449 "configure"
- #include "confdefs.h"
- #include <httpd.h>
- int main() {
- conn_rec *c; int fd = c->client->fd;
- ; return 0; }
- EOF
--if { (eval echo configure:4454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:4456: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- ac_cv_php_fd_in_buff=yes
-@@ -4501,7 +4503,7 @@
-
-
- echo $ac_n "checking for Apache 2.0 filter-module support via DSO through APXS""... $ac_c" 1>&6
--echo "configure:4505: checking for Apache 2.0 filter-module support via DSO through APXS" >&5
-+echo "configure:4507: checking for Apache 2.0 filter-module support via DSO through APXS" >&5
- # Check whether --with-apxs2filter or --without-apxs2filter was given.
- if test "${with_apxs2filter+set}" = set; then
- withval="$with_apxs2filter"
-@@ -5323,7 +5325,7 @@
-
-
- echo $ac_n "checking for Apache 2.0 handler-module support via DSO through APXS""... $ac_c" 1>&6
--echo "configure:5327: checking for Apache 2.0 handler-module support via DSO through APXS" >&5
-+echo "configure:5329: checking for Apache 2.0 handler-module support via DSO through APXS" >&5
- # Check whether --with-apxs2 or --without-apxs2 was given.
- if test "${with_apxs2+set}" = set; then
- withval="$with_apxs2"
-@@ -6146,7 +6148,7 @@
-
- RESULT=no
- echo $ac_n "checking for Caudium support""... $ac_c" 1>&6
--echo "configure:6150: checking for Caudium support" >&5
-+echo "configure:6152: checking for Caudium support" >&5
- # Check whether --with-caudium or --without-caudium was given.
- if test "${with_caudium+set}" = set; then
- withval="$with_caudium"
-@@ -6218,7 +6220,7 @@
- PIKE_C_INCLUDE=/usr/local/include/`basename $PIKE`
- fi
- echo $ac_n "checking for C includes in $PIKE_C_INCLUDE""... $ac_c" 1>&6
--echo "configure:6222: checking for C includes in $PIKE_C_INCLUDE" >&5
-+echo "configure:6224: checking for C includes in $PIKE_C_INCLUDE" >&5
- if test -f $PIKE_C_INCLUDE/version.h; then
- PIKE_TEST_VER=`$PIKE -e 'string v; int rel;sscanf(version(), "Pike v%s release %d", v, rel); write(v+"."+rel);'`
- ###### VERSION MATCH CHECK #######
-@@ -6476,7 +6478,7 @@
-
-
- echo $ac_n "checking for CLI build""... $ac_c" 1>&6
--echo "configure:6480: checking for CLI build" >&5
-+echo "configure:6482: checking for CLI build" >&5
-
- # Check whether --enable-cli or --disable-cli was given.
- if test "${enable_cli+set}" = set; then
-@@ -6536,7 +6538,7 @@
-
-
- echo $ac_n "checking for embedded SAPI library support""... $ac_c" 1>&6
--echo "configure:6540: checking for embedded SAPI library support" >&5
-+echo "configure:6542: checking for embedded SAPI library support" >&5
-
- # Check whether --enable-embed or --disable-embed was given.
- if test "${enable_embed+set}" = set; then
-@@ -6739,7 +6741,7 @@
-
- RESULT=no
- echo $ac_n "checking for Zeus ISAPI support""... $ac_c" 1>&6
--echo "configure:6743: checking for Zeus ISAPI support" >&5
-+echo "configure:6745: checking for Zeus ISAPI support" >&5
- # Check whether --with-isapi or --without-isapi was given.
- if test "${with_isapi+set}" = set; then
- withval="$with_isapi"
-@@ -6969,7 +6971,7 @@
-
-
- echo $ac_n "checking for NSAPI support""... $ac_c" 1>&6
--echo "configure:6973: checking for NSAPI support" >&5
-+echo "configure:6975: checking for NSAPI support" >&5
- # Check whether --with-nsapi or --without-nsapi was given.
- if test "${with_nsapi+set}" = set; then
- withval="$with_nsapi"
-@@ -6989,7 +6991,7 @@
- { echo "configure: error: Please specify the path to the root of your Netscape/iPlanet/SunONE server using --with-nsapi=DIR" 1>&2; exit 1; }
- fi
- echo $ac_n "checking for NSAPI include files""... $ac_c" 1>&6
--echo "configure:6993: checking for NSAPI include files" >&5
-+echo "configure:6995: checking for NSAPI include files" >&5
- if test -d $PHP_NSAPI/include ; then
- NSAPI_INCLUDE=$PHP_NSAPI/include
- echo "$ac_t""Netscape-Enterprise 3.x style" 1>&6
-@@ -6997,17 +6999,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:7001: checking for $ac_hdr" >&5
-+echo "configure:7003: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7006 "configure"
-+#line 7008 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:7011: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7013: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -7042,17 +7044,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:7046: checking for $ac_hdr" >&5
-+echo "configure:7048: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 7051 "configure"
-+#line 7053 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:7056: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:7058: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -7310,7 +7312,7 @@
-
- RESULT=no
- echo $ac_n "checking for PHTTPD support""... $ac_c" 1>&6
--echo "configure:7314: checking for PHTTPD support" >&5
-+echo "configure:7316: checking for PHTTPD support" >&5
- # Check whether --with-phttpd or --without-phttpd was given.
- if test "${with_phttpd+set}" = set; then
- withval="$with_phttpd"
-@@ -7539,7 +7541,7 @@
-
- RESULT=no
- echo $ac_n "checking for Pi3Web support""... $ac_c" 1>&6
--echo "configure:7543: checking for Pi3Web support" >&5
-+echo "configure:7545: checking for Pi3Web support" >&5
-
- # Check whether --with-pi3web or --without-pi3web was given.
- if test "${with_pi3web+set}" = set; then
-@@ -7868,7 +7870,7 @@
-
- RESULT=no
- echo $ac_n "checking for Roxen/Pike support""... $ac_c" 1>&6
--echo "configure:7872: checking for Roxen/Pike support" >&5
-+echo "configure:7874: checking for Roxen/Pike support" >&5
- # Check whether --with-roxen or --without-roxen was given.
- if test "${with_roxen+set}" = set; then
- withval="$with_roxen"
-@@ -8110,7 +8112,7 @@
- if test "$RESULT" != "no" ; then
- RESULT=no
- echo $ac_n "checking if Roxen should use ZTS""... $ac_c" 1>&6
--echo "configure:8114: checking if Roxen should use ZTS" >&5
-+echo "configure:8116: checking if Roxen should use ZTS" >&5
- # Check whether --enable-roxen-zts or --disable-roxen-zts was given.
- if test "${enable_roxen_zts+set}" = set; then
- enableval="$enable_roxen_zts"
-@@ -8137,7 +8139,7 @@
-
-
- echo $ac_n "checking for Servlet support""... $ac_c" 1>&6
--echo "configure:8141: checking for Servlet support" >&5
-+echo "configure:8143: checking for Servlet support" >&5
- # Check whether --with-servlet or --without-servlet was given.
- if test "${with_servlet+set}" = set; then
- withval="$with_servlet"
-@@ -8448,7 +8450,7 @@
-
- gcc_arg_name=ac_cv_gcc_arg_rdynamic
- echo $ac_n "checking whether $CC supports -rdynamic""... $ac_c" 1>&6
--echo "configure:8452: checking whether $CC supports -rdynamic" >&5
-+echo "configure:8454: checking whether $CC supports -rdynamic" >&5
- if eval "test \"`echo '$''{'ac_cv_gcc_arg_rdynamic'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -8655,7 +8657,7 @@
-
-
- echo $ac_n "checking for thttpd""... $ac_c" 1>&6
--echo "configure:8659: checking for thttpd" >&5
-+echo "configure:8661: checking for thttpd" >&5
- echo "$ac_t""$PHP_THTTPD" 1>&6
-
-
-@@ -8670,17 +8672,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:8674: checking for $ac_hdr" >&5
-+echo "configure:8676: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 8679 "configure"
-+#line 8681 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:8684: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:8686: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -8881,7 +8883,7 @@
-
-
- echo $ac_n "checking for TUX""... $ac_c" 1>&6
--echo "configure:8885: checking for TUX" >&5
-+echo "configure:8887: checking for TUX" >&5
- echo "$ac_t""$PHP_TUX" 1>&6
-
- unset PHP_TUX
-@@ -9115,7 +9117,7 @@
-
-
- echo $ac_n "checking for webjames""... $ac_c" 1>&6
--echo "configure:9119: checking for webjames" >&5
-+echo "configure:9121: checking for webjames" >&5
- echo "$ac_t""$PHP_WEBJAMES" 1>&6
-
-
-@@ -9189,7 +9191,7 @@
-
- if test "$PHP_SAPI" = "default"; then
- echo $ac_n "checking for CGI build""... $ac_c" 1>&6
--echo "configure:9193: checking for CGI build" >&5
-+echo "configure:9195: checking for CGI build" >&5
- if test "$PHP_SAPI_CGI" != "no"; then
- echo "$ac_t""yes" 1>&6
-
-@@ -9213,7 +9215,7 @@
-
-
- echo $ac_n "checking whether writing to stdout works""... $ac_c" 1>&6
--echo "configure:9217: checking whether writing to stdout works" >&5
-+echo "configure:9219: checking whether writing to stdout works" >&5
- if eval "test \"`echo '$''{'ac_cv_write_stdout'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -9224,7 +9226,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 9228 "configure"
-+#line 9230 "configure"
- #include "confdefs.h"
-
- #ifdef HAVE_UNISTD_H
-@@ -9242,7 +9244,7 @@
- }
-
- EOF
--if { (eval echo configure:9246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:9248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_write_stdout=yes
-@@ -9271,7 +9273,7 @@
-
-
- echo $ac_n "checking whether to force Apache CGI redirect""... $ac_c" 1>&6
--echo "configure:9275: checking whether to force Apache CGI redirect" >&5
-+echo "configure:9277: checking whether to force Apache CGI redirect" >&5
- if test "$PHP_FORCE_CGI_REDIRECT" = "yes"; then
- REDIRECT=1
- else
-@@ -9285,7 +9287,7 @@
-
-
- echo $ac_n "checking whether to discard path_info + path_translated""... $ac_c" 1>&6
--echo "configure:9289: checking whether to discard path_info + path_translated" >&5
-+echo "configure:9291: checking whether to discard path_info + path_translated" >&5
- if test "$PHP_DISCARD_PATH" = "yes"; then
- DISCARD_PATH=1
- else
-@@ -9298,7 +9300,7 @@
- echo "$ac_t""$PHP_DISCARD_PATH" 1>&6
-
- echo $ac_n "checking whether to enable path info checking""... $ac_c" 1>&6
--echo "configure:9302: checking whether to enable path info checking" >&5
-+echo "configure:9304: checking whether to enable path info checking" >&5
- if test "$PHP_ENABLE_PATHINFO_CHECK" = "yes"; then
- ENABLE_PATHINFO_CHECK=1
- else
-@@ -9311,7 +9313,7 @@
- echo "$ac_t""$PHP_ENABLE_PATHINFO_CHECK" 1>&6
-
- echo $ac_n "checking whether to enable fastcgi support""... $ac_c" 1>&6
--echo "configure:9315: checking whether to enable fastcgi support" >&5
-+echo "configure:9317: checking whether to enable fastcgi support" >&5
- PHP_LIBFCGI_DIR="$abs_srcdir/sapi/cgi/libfcgi"
- if test -z $PHP_LIBFCGI_DIR; then
- echo "$PHP_LIBFCGI_DIR does not exist"
-@@ -9536,7 +9538,7 @@
-
-
- echo $ac_n "checking for chosen SAPI module""... $ac_c" 1>&6
--echo "configure:9540: checking for chosen SAPI module" >&5
-+echo "configure:9542: checking for chosen SAPI module" >&5
- echo "$ac_t""$PHP_SAPI" 1>&6
-
- if test "$enable_experimental_zts" = "yes"; then
-@@ -9639,7 +9641,7 @@
- #AC_LANG([C])
-
- echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
--echo "configure:9643: checking for gethostbyname in -lnsl" >&5
-+echo "configure:9645: checking for gethostbyname in -lnsl" >&5
- ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -9647,7 +9649,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lnsl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 9651 "configure"
-+#line 9653 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -9658,7 +9660,7 @@
- gethostbyname()
- ; return 0; }
- EOF
--if { (eval echo configure:9662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:9664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -9686,7 +9688,7 @@
- fi
-
- echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
--echo "configure:9690: checking for socket in -lsocket" >&5
-+echo "configure:9692: checking for socket in -lsocket" >&5
- ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -9694,7 +9696,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsocket $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 9698 "configure"
-+#line 9700 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -9705,7 +9707,7 @@
- socket()
- ; return 0; }
- EOF
--if { (eval echo configure:9709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:9711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -9741,17 +9743,17 @@
- # If it isn't, don't bother looking for the threads libraries.
- ac_safe=`echo "pthread.h" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for pthread.h""... $ac_c" 1>&6
--echo "configure:9745: checking for pthread.h" >&5
-+echo "configure:9747: checking for pthread.h" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 9750 "configure"
-+#line 9752 "configure"
- #include "confdefs.h"
- #include <pthread.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:9755: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:9757: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -9788,9 +9790,9 @@
- save_LIBS="$LIBS"
- LIBS="$PTHREAD_LIBS $LIBS"
- echo $ac_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS""... $ac_c" 1>&6
--echo "configure:9792: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
-+echo "configure:9794: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
- cat > conftest.$ac_ext <<EOF
--#line 9794 "configure"
-+#line 9796 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -9801,7 +9803,7 @@
- pthread_join()
- ; return 0; }
- EOF
--if { (eval echo configure:9805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:9807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- acx_pthread_ok=yes
- else
-@@ -9863,18 +9865,18 @@
- case $flag in
- none)
- echo $ac_n "checking whether pthreads work without any flags""... $ac_c" 1>&6
--echo "configure:9867: checking whether pthreads work without any flags" >&5
-+echo "configure:9869: checking whether pthreads work without any flags" >&5
- ;;
-
- -*)
- echo $ac_n "checking whether pthreads work with $flag""... $ac_c" 1>&6
--echo "configure:9872: checking whether pthreads work with $flag" >&5
-+echo "configure:9874: checking whether pthreads work with $flag" >&5
- PTHREAD_CFLAGS="$flag"
- ;;
-
- *)
- echo $ac_n "checking for the pthreads library -l$flag""... $ac_c" 1>&6
--echo "configure:9878: checking for the pthreads library -l$flag" >&5
-+echo "configure:9880: checking for the pthreads library -l$flag" >&5
- PTHREAD_LIBS="-l$flag"
- ;;
- esac
-@@ -9894,7 +9896,7 @@
- # functions on Solaris that doesn't have a non-functional libc stub.
- # We try pthread_create on general principles.
- cat > conftest.$ac_ext <<EOF
--#line 9898 "configure"
-+#line 9900 "configure"
- #include "confdefs.h"
- #include <pthread.h>
- int main() {
-@@ -9903,7 +9905,7 @@
- pthread_create(0,0,0,0); pthread_cleanup_pop(0);
- ; return 0; }
- EOF
--if { (eval echo configure:9907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:9909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- acx_pthread_ok=yes
- else
-@@ -9935,16 +9937,16 @@
- # Detect AIX lossage: threads are created detached by default
- # and the JOINABLE attribute has a nonstandard name (UNDETACHED).
- echo $ac_n "checking for joinable pthread attribute""... $ac_c" 1>&6
--echo "configure:9939: checking for joinable pthread attribute" >&5
-+echo "configure:9941: checking for joinable pthread attribute" >&5
- cat > conftest.$ac_ext <<EOF
--#line 9941 "configure"
-+#line 9943 "configure"
- #include "confdefs.h"
- #include <pthread.h>
- int main() {
- int attr=PTHREAD_CREATE_JOINABLE;
- ; return 0; }
- EOF
--if { (eval echo configure:9948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:9950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ok=PTHREAD_CREATE_JOINABLE
- else
-@@ -9956,14 +9958,14 @@
- rm -f conftest*
- if test x"$ok" = xunknown; then
- cat > conftest.$ac_ext <<EOF
--#line 9960 "configure"
-+#line 9962 "configure"
- #include "confdefs.h"
- #include <pthread.h>
- int main() {
- int attr=PTHREAD_CREATE_UNDETACHED;
- ; return 0; }
- EOF
--if { (eval echo configure:9967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:9969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ok=PTHREAD_CREATE_UNDETACHED
- else
-@@ -9986,7 +9988,7 @@
- fi
-
- echo $ac_n "checking if more special flags are required for pthreads""... $ac_c" 1>&6
--echo "configure:9990: checking if more special flags are required for pthreads" >&5
-+echo "configure:9992: checking if more special flags are required for pthreads" >&5
- flag=no
- case "${host_cpu}-${host_os}" in
- *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";;
-@@ -10004,7 +10006,7 @@
- # Extract the first word of "cc_r", so it can be a program name with args.
- set dummy cc_r; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:10008: checking for $ac_word" >&5
-+echo "configure:10010: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_PTHREAD_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -10053,9 +10055,9 @@
-
-
- echo $ac_n "checking for sun_len in sys/un.h""... $ac_c" 1>&6
--echo "configure:10057: checking for sun_len in sys/un.h" >&5
-+echo "configure:10059: checking for sun_len in sys/un.h" >&5
- cat > conftest.$ac_ext <<EOF
--#line 10059 "configure"
-+#line 10061 "configure"
- #include "confdefs.h"
- #include <sys/un.h>
- EOF
-@@ -10075,9 +10077,9 @@
-
-
- echo $ac_n "checking for fpos_t in stdio.h""... $ac_c" 1>&6
--echo "configure:10079: checking for fpos_t in stdio.h" >&5
-+echo "configure:10081: checking for fpos_t in stdio.h" >&5
- cat > conftest.$ac_ext <<EOF
--#line 10081 "configure"
-+#line 10083 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- EOF
-@@ -10100,17 +10102,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:10104: checking for $ac_hdr" >&5
-+echo "configure:10106: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 10109 "configure"
-+#line 10111 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:10114: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:10116: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -10140,17 +10142,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:10144: checking for $ac_hdr" >&5
-+echo "configure:10146: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 10149 "configure"
-+#line 10151 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:10154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:10156: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -10178,9 +10180,9 @@
-
-
- echo $ac_n "checking for a fileno() prototype in stdio.h""... $ac_c" 1>&6
--echo "configure:10182: checking for a fileno() prototype in stdio.h" >&5
-+echo "configure:10184: checking for a fileno() prototype in stdio.h" >&5
- cat > conftest.$ac_ext <<EOF
--#line 10184 "configure"
-+#line 10186 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- EOF
-@@ -10201,9 +10203,9 @@
-
- if test "$HAVE_SYS_SOCKET_H"; then
- echo $ac_n "checking for socklen_t in sys/socket.h""... $ac_c" 1>&6
--echo "configure:10205: checking for socklen_t in sys/socket.h" >&5
-+echo "configure:10207: checking for socklen_t in sys/socket.h" >&5
- cat > conftest.$ac_ext <<EOF
--#line 10207 "configure"
-+#line 10209 "configure"
- #include "confdefs.h"
- #include <sys/socket.h>
- EOF
-@@ -10227,7 +10229,7 @@
- # Do we need cross-process locking on this platform?
- #--------------------------------------------------------------------
- echo $ac_n "checking whether cross-process locking is required by accept()""... $ac_c" 1>&6
--echo "configure:10231: checking whether cross-process locking is required by accept()" >&5
-+echo "configure:10233: checking whether cross-process locking is required by accept()" >&5
- case "`uname -sr`" in
- IRIX\ 5.* | SunOS\ 5.* | UNIX_System_V\ 4.0)
- echo "$ac_t""yes" 1>&6
-@@ -10246,16 +10248,16 @@
- # hpux 9.04 compiler does and so does Stratus FTX (uses HP's compiler)
- #--------------------------------------------------------------------
- echo $ac_n "checking whether va_arg(arg, long double) crashes the compiler""... $ac_c" 1>&6
--echo "configure:10250: checking whether va_arg(arg, long double) crashes the compiler" >&5
-+echo "configure:10252: checking whether va_arg(arg, long double) crashes the compiler" >&5
- cat > conftest.$ac_ext <<EOF
--#line 10252 "configure"
-+#line 10254 "configure"
- #include "confdefs.h"
- #include <stdarg.h>
- int main() {
- long double lDblArg; va_list arg; lDblArg = va_arg(arg, long double);
- ; return 0; }
- EOF
--if { (eval echo configure:10259: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:10261: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- echo "$ac_t""no" 1>&6
- else
-@@ -10271,12 +10273,12 @@
- rm -f conftest*
-
- echo $ac_n "checking for working const""... $ac_c" 1>&6
--echo "configure:10275: checking for working const" >&5
-+echo "configure:10277: checking for working const" >&5
- if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 10280 "configure"
-+#line 10282 "configure"
- #include "confdefs.h"
-
- int main() {
-@@ -10325,7 +10327,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:10329: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:10331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_c_const=yes
- else
-@@ -10350,12 +10352,12 @@
- for ac_func in strerror
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:10354: checking for $ac_func" >&5
-+echo "configure:10356: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 10359 "configure"
-+#line 10361 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -10378,7 +10380,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:10382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:10384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -10441,16 +10443,16 @@
-
-
- echo $ac_n "checking for missing declarations of reentrant functions""... $ac_c" 1>&6
--echo "configure:10445: checking for missing declarations of reentrant functions" >&5
-+echo "configure:10447: checking for missing declarations of reentrant functions" >&5
- cat > conftest.$ac_ext <<EOF
--#line 10447 "configure"
-+#line 10449 "configure"
- #include "confdefs.h"
- #include <time.h>
- int main() {
- struct tm *(*func)() = localtime_r
- ; return 0; }
- EOF
--if { (eval echo configure:10454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:10456: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- :
-@@ -10468,14 +10470,14 @@
- fi
- rm -f conftest*
- cat > conftest.$ac_ext <<EOF
--#line 10472 "configure"
-+#line 10474 "configure"
- #include "confdefs.h"
- #include <time.h>
- int main() {
- struct tm *(*func)() = gmtime_r
- ; return 0; }
- EOF
--if { (eval echo configure:10479: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:10481: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- :
-@@ -10493,14 +10495,14 @@
- fi
- rm -f conftest*
- cat > conftest.$ac_ext <<EOF
--#line 10497 "configure"
-+#line 10499 "configure"
- #include "confdefs.h"
- #include <time.h>
- int main() {
- char *(*func)() = asctime_r
- ; return 0; }
- EOF
--if { (eval echo configure:10504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:10506: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- :
-@@ -10518,14 +10520,14 @@
- fi
- rm -f conftest*
- cat > conftest.$ac_ext <<EOF
--#line 10522 "configure"
-+#line 10524 "configure"
- #include "confdefs.h"
- #include <time.h>
- int main() {
- char *(*func)() = ctime_r
- ; return 0; }
- EOF
--if { (eval echo configure:10529: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:10531: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- :
-@@ -10543,14 +10545,14 @@
- fi
- rm -f conftest*
- cat > conftest.$ac_ext <<EOF
--#line 10547 "configure"
-+#line 10549 "configure"
- #include "confdefs.h"
- #include <string.h>
- int main() {
- char *(*func)() = strtok_r
- ; return 0; }
- EOF
--if { (eval echo configure:10554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:10556: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- :
-@@ -10574,7 +10576,7 @@
- # Extract the first word of "sendmail", so it can be a program name with args.
- set dummy sendmail; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:10578: checking for $ac_word" >&5
-+echo "configure:10580: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_PROG_SENDMAIL'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -10615,7 +10617,7 @@
-
-
- echo $ac_n "checking whether system uses EBCDIC""... $ac_c" 1>&6
--echo "configure:10619: checking whether system uses EBCDIC" >&5
-+echo "configure:10621: checking whether system uses EBCDIC" >&5
- if eval "test \"`echo '$''{'ac_cv_ebcdic'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -10626,7 +10628,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 10630 "configure"
-+#line 10632 "configure"
- #include "confdefs.h"
-
- int main(void) {
-@@ -10634,7 +10636,7 @@
- }
-
- EOF
--if { (eval echo configure:10638: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:10640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_ebcdic=yes
-@@ -10707,12 +10709,12 @@
- unset found
-
- echo $ac_n "checking for socket""... $ac_c" 1>&6
--echo "configure:10711: checking for socket" >&5
-+echo "configure:10713: checking for socket" >&5
- if eval "test \"`echo '$''{'ac_cv_func_socket'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 10716 "configure"
-+#line 10718 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char socket(); below. */
-@@ -10735,7 +10737,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:10739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:10741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_socket=yes"
- else
-@@ -10753,12 +10755,12 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for __socket""... $ac_c" 1>&6
--echo "configure:10757: checking for __socket" >&5
-+echo "configure:10759: checking for __socket" >&5
- if eval "test \"`echo '$''{'ac_cv_func___socket'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 10762 "configure"
-+#line 10764 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char __socket(); below. */
-@@ -10781,7 +10783,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:10785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:10787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func___socket=yes"
- else
-@@ -10819,7 +10821,7 @@
- unset ac_cv_lib_socket___socket
- unset found
- echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
--echo "configure:10823: checking for socket in -lsocket" >&5
-+echo "configure:10825: checking for socket in -lsocket" >&5
- ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -10827,7 +10829,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsocket $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 10831 "configure"
-+#line 10833 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -10838,7 +10840,7 @@
- socket()
- ; return 0; }
- EOF
--if { (eval echo configure:10842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:10844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -10858,7 +10860,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __socket in -lsocket""... $ac_c" 1>&6
--echo "configure:10862: checking for __socket in -lsocket" >&5
-+echo "configure:10864: checking for __socket in -lsocket" >&5
- ac_lib_var=`echo socket'_'__socket | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -10866,7 +10868,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsocket $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 10870 "configure"
-+#line 10872 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -10877,7 +10879,7 @@
- __socket()
- ; return 0; }
- EOF
--if { (eval echo configure:10881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:10883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -10909,11 +10911,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 10913 "configure"
-+#line 10915 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:10917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:10919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -10964,12 +10966,12 @@
- unset found
-
- echo $ac_n "checking for htonl""... $ac_c" 1>&6
--echo "configure:10968: checking for htonl" >&5
-+echo "configure:10970: checking for htonl" >&5
- if eval "test \"`echo '$''{'ac_cv_func_htonl'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 10973 "configure"
-+#line 10975 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char htonl(); below. */
-@@ -10992,7 +10994,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:10996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:10998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_htonl=yes"
- else
-@@ -11010,12 +11012,12 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for __htonl""... $ac_c" 1>&6
--echo "configure:11014: checking for __htonl" >&5
-+echo "configure:11016: checking for __htonl" >&5
- if eval "test \"`echo '$''{'ac_cv_func___htonl'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 11019 "configure"
-+#line 11021 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char __htonl(); below. */
-@@ -11038,7 +11040,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:11042: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func___htonl=yes"
- else
-@@ -11076,7 +11078,7 @@
- unset ac_cv_lib_socket___htonl
- unset found
- echo $ac_n "checking for htonl in -lsocket""... $ac_c" 1>&6
--echo "configure:11080: checking for htonl in -lsocket" >&5
-+echo "configure:11082: checking for htonl in -lsocket" >&5
- ac_lib_var=`echo socket'_'htonl | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -11084,7 +11086,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsocket $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 11088 "configure"
-+#line 11090 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -11095,7 +11097,7 @@
- htonl()
- ; return 0; }
- EOF
--if { (eval echo configure:11099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -11115,7 +11117,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __htonl in -lsocket""... $ac_c" 1>&6
--echo "configure:11119: checking for __htonl in -lsocket" >&5
-+echo "configure:11121: checking for __htonl in -lsocket" >&5
- ac_lib_var=`echo socket'_'__htonl | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -11123,7 +11125,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsocket $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 11127 "configure"
-+#line 11129 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -11134,7 +11136,7 @@
- __htonl()
- ; return 0; }
- EOF
--if { (eval echo configure:11138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -11166,11 +11168,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 11170 "configure"
-+#line 11172 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:11174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:11176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -11221,12 +11223,12 @@
- unset found
-
- echo $ac_n "checking for gethostname""... $ac_c" 1>&6
--echo "configure:11225: checking for gethostname" >&5
-+echo "configure:11227: checking for gethostname" >&5
- if eval "test \"`echo '$''{'ac_cv_func_gethostname'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 11230 "configure"
-+#line 11232 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char gethostname(); below. */
-@@ -11249,7 +11251,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:11253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_gethostname=yes"
- else
-@@ -11267,12 +11269,12 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for __gethostname""... $ac_c" 1>&6
--echo "configure:11271: checking for __gethostname" >&5
-+echo "configure:11273: checking for __gethostname" >&5
- if eval "test \"`echo '$''{'ac_cv_func___gethostname'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 11276 "configure"
-+#line 11278 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char __gethostname(); below. */
-@@ -11295,7 +11297,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:11299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func___gethostname=yes"
- else
-@@ -11333,7 +11335,7 @@
- unset ac_cv_lib_nsl___gethostname
- unset found
- echo $ac_n "checking for gethostname in -lnsl""... $ac_c" 1>&6
--echo "configure:11337: checking for gethostname in -lnsl" >&5
-+echo "configure:11339: checking for gethostname in -lnsl" >&5
- ac_lib_var=`echo nsl'_'gethostname | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -11341,7 +11343,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lnsl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 11345 "configure"
-+#line 11347 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -11352,7 +11354,7 @@
- gethostname()
- ; return 0; }
- EOF
--if { (eval echo configure:11356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -11372,7 +11374,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __gethostname in -lnsl""... $ac_c" 1>&6
--echo "configure:11376: checking for __gethostname in -lnsl" >&5
-+echo "configure:11378: checking for __gethostname in -lnsl" >&5
- ac_lib_var=`echo nsl'_'__gethostname | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -11380,7 +11382,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lnsl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 11384 "configure"
-+#line 11386 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -11391,7 +11393,7 @@
- __gethostname()
- ; return 0; }
- EOF
--if { (eval echo configure:11395: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -11423,11 +11425,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 11427 "configure"
-+#line 11429 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:11431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:11433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -11478,12 +11480,12 @@
- unset found
-
- echo $ac_n "checking for gethostbyaddr""... $ac_c" 1>&6
--echo "configure:11482: checking for gethostbyaddr" >&5
-+echo "configure:11484: checking for gethostbyaddr" >&5
- if eval "test \"`echo '$''{'ac_cv_func_gethostbyaddr'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 11487 "configure"
-+#line 11489 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char gethostbyaddr(); below. */
-@@ -11506,7 +11508,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:11510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_gethostbyaddr=yes"
- else
-@@ -11524,12 +11526,12 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for __gethostbyaddr""... $ac_c" 1>&6
--echo "configure:11528: checking for __gethostbyaddr" >&5
-+echo "configure:11530: checking for __gethostbyaddr" >&5
- if eval "test \"`echo '$''{'ac_cv_func___gethostbyaddr'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 11533 "configure"
-+#line 11535 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char __gethostbyaddr(); below. */
-@@ -11552,7 +11554,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:11556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func___gethostbyaddr=yes"
- else
-@@ -11590,7 +11592,7 @@
- unset ac_cv_lib_nsl___gethostbyaddr
- unset found
- echo $ac_n "checking for gethostbyaddr in -lnsl""... $ac_c" 1>&6
--echo "configure:11594: checking for gethostbyaddr in -lnsl" >&5
-+echo "configure:11596: checking for gethostbyaddr in -lnsl" >&5
- ac_lib_var=`echo nsl'_'gethostbyaddr | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -11598,7 +11600,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lnsl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 11602 "configure"
-+#line 11604 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -11609,7 +11611,7 @@
- gethostbyaddr()
- ; return 0; }
- EOF
--if { (eval echo configure:11613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11615: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -11629,7 +11631,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __gethostbyaddr in -lnsl""... $ac_c" 1>&6
--echo "configure:11633: checking for __gethostbyaddr in -lnsl" >&5
-+echo "configure:11635: checking for __gethostbyaddr in -lnsl" >&5
- ac_lib_var=`echo nsl'_'__gethostbyaddr | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -11637,7 +11639,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lnsl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 11641 "configure"
-+#line 11643 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -11648,7 +11650,7 @@
- __gethostbyaddr()
- ; return 0; }
- EOF
--if { (eval echo configure:11652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -11680,11 +11682,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 11684 "configure"
-+#line 11686 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:11688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:11690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -11735,12 +11737,12 @@
- unset found
-
- echo $ac_n "checking for yp_get_default_domain""... $ac_c" 1>&6
--echo "configure:11739: checking for yp_get_default_domain" >&5
-+echo "configure:11741: checking for yp_get_default_domain" >&5
- if eval "test \"`echo '$''{'ac_cv_func_yp_get_default_domain'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 11744 "configure"
-+#line 11746 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char yp_get_default_domain(); below. */
-@@ -11763,7 +11765,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:11767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_yp_get_default_domain=yes"
- else
-@@ -11781,12 +11783,12 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for __yp_get_default_domain""... $ac_c" 1>&6
--echo "configure:11785: checking for __yp_get_default_domain" >&5
-+echo "configure:11787: checking for __yp_get_default_domain" >&5
- if eval "test \"`echo '$''{'ac_cv_func___yp_get_default_domain'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 11790 "configure"
-+#line 11792 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char __yp_get_default_domain(); below. */
-@@ -11809,7 +11811,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:11813: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func___yp_get_default_domain=yes"
- else
-@@ -11847,7 +11849,7 @@
- unset ac_cv_lib_nsl___yp_get_default_domain
- unset found
- echo $ac_n "checking for yp_get_default_domain in -lnsl""... $ac_c" 1>&6
--echo "configure:11851: checking for yp_get_default_domain in -lnsl" >&5
-+echo "configure:11853: checking for yp_get_default_domain in -lnsl" >&5
- ac_lib_var=`echo nsl'_'yp_get_default_domain | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -11855,7 +11857,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lnsl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 11859 "configure"
-+#line 11861 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -11866,7 +11868,7 @@
- yp_get_default_domain()
- ; return 0; }
- EOF
--if { (eval echo configure:11870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -11886,7 +11888,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __yp_get_default_domain in -lnsl""... $ac_c" 1>&6
--echo "configure:11890: checking for __yp_get_default_domain in -lnsl" >&5
-+echo "configure:11892: checking for __yp_get_default_domain in -lnsl" >&5
- ac_lib_var=`echo nsl'_'__yp_get_default_domain | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -11894,7 +11896,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lnsl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 11898 "configure"
-+#line 11900 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -11905,7 +11907,7 @@
- __yp_get_default_domain()
- ; return 0; }
- EOF
--if { (eval echo configure:11909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:11911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -11937,11 +11939,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 11941 "configure"
-+#line 11943 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:11945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:11947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -11993,12 +11995,12 @@
- unset found
-
- echo $ac_n "checking for dlopen""... $ac_c" 1>&6
--echo "configure:11997: checking for dlopen" >&5
-+echo "configure:11999: checking for dlopen" >&5
- if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 12002 "configure"
-+#line 12004 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen(); below. */
-@@ -12021,7 +12023,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:12025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_dlopen=yes"
- else
-@@ -12039,12 +12041,12 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for __dlopen""... $ac_c" 1>&6
--echo "configure:12043: checking for __dlopen" >&5
-+echo "configure:12045: checking for __dlopen" >&5
- if eval "test \"`echo '$''{'ac_cv_func___dlopen'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 12048 "configure"
-+#line 12050 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char __dlopen(); below. */
-@@ -12067,7 +12069,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:12071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func___dlopen=yes"
- else
-@@ -12105,7 +12107,7 @@
- unset ac_cv_lib_dl___dlopen
- unset found
- echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
--echo "configure:12109: checking for dlopen in -ldl" >&5
-+echo "configure:12111: checking for dlopen in -ldl" >&5
- ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -12113,7 +12115,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 12117 "configure"
-+#line 12119 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -12124,7 +12126,7 @@
- dlopen()
- ; return 0; }
- EOF
--if { (eval echo configure:12128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -12144,7 +12146,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __dlopen in -ldl""... $ac_c" 1>&6
--echo "configure:12148: checking for __dlopen in -ldl" >&5
-+echo "configure:12150: checking for __dlopen in -ldl" >&5
- ac_lib_var=`echo dl'_'__dlopen | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -12152,7 +12154,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 12156 "configure"
-+#line 12158 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -12163,7 +12165,7 @@
- __dlopen()
- ; return 0; }
- EOF
--if { (eval echo configure:12167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12169: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -12195,11 +12197,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 12199 "configure"
-+#line 12201 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:12203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:12205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -12251,7 +12253,7 @@
-
- fi
- echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
--echo "configure:12255: checking for sin in -lm" >&5
-+echo "configure:12257: checking for sin in -lm" >&5
- ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -12259,7 +12261,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lm $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 12263 "configure"
-+#line 12265 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -12270,7 +12272,7 @@
- sin()
- ; return 0; }
- EOF
--if { (eval echo configure:12274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -12304,12 +12306,12 @@
- unset found
-
- echo $ac_n "checking for res_search""... $ac_c" 1>&6
--echo "configure:12308: checking for res_search" >&5
-+echo "configure:12310: checking for res_search" >&5
- if eval "test \"`echo '$''{'ac_cv_func_res_search'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 12313 "configure"
-+#line 12315 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char res_search(); below. */
-@@ -12332,7 +12334,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:12336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_res_search=yes"
- else
-@@ -12350,12 +12352,12 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for __res_search""... $ac_c" 1>&6
--echo "configure:12354: checking for __res_search" >&5
-+echo "configure:12356: checking for __res_search" >&5
- if eval "test \"`echo '$''{'ac_cv_func___res_search'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 12359 "configure"
-+#line 12361 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char __res_search(); below. */
-@@ -12378,7 +12380,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:12382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func___res_search=yes"
- else
-@@ -12416,7 +12418,7 @@
- unset ac_cv_lib_resolv___res_search
- unset found
- echo $ac_n "checking for res_search in -lresolv""... $ac_c" 1>&6
--echo "configure:12420: checking for res_search in -lresolv" >&5
-+echo "configure:12422: checking for res_search in -lresolv" >&5
- ac_lib_var=`echo resolv'_'res_search | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -12424,7 +12426,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lresolv $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 12428 "configure"
-+#line 12430 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -12435,7 +12437,7 @@
- res_search()
- ; return 0; }
- EOF
--if { (eval echo configure:12439: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -12455,7 +12457,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __res_search in -lresolv""... $ac_c" 1>&6
--echo "configure:12459: checking for __res_search in -lresolv" >&5
-+echo "configure:12461: checking for __res_search in -lresolv" >&5
- ac_lib_var=`echo resolv'_'__res_search | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -12463,7 +12465,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lresolv $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 12467 "configure"
-+#line 12469 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -12474,7 +12476,7 @@
- __res_search()
- ; return 0; }
- EOF
--if { (eval echo configure:12478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -12506,11 +12508,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 12510 "configure"
-+#line 12512 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:12514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:12516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -12552,7 +12554,7 @@
- unset ac_cv_lib_bind___res_search
- unset found
- echo $ac_n "checking for res_search in -lbind""... $ac_c" 1>&6
--echo "configure:12556: checking for res_search in -lbind" >&5
-+echo "configure:12558: checking for res_search in -lbind" >&5
- ac_lib_var=`echo bind'_'res_search | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -12560,7 +12562,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lbind $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 12564 "configure"
-+#line 12566 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -12571,7 +12573,7 @@
- res_search()
- ; return 0; }
- EOF
--if { (eval echo configure:12575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -12591,7 +12593,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __res_search in -lbind""... $ac_c" 1>&6
--echo "configure:12595: checking for __res_search in -lbind" >&5
-+echo "configure:12597: checking for __res_search in -lbind" >&5
- ac_lib_var=`echo bind'_'__res_search | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -12599,7 +12601,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lbind $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 12603 "configure"
-+#line 12605 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -12610,7 +12612,7 @@
- __res_search()
- ; return 0; }
- EOF
--if { (eval echo configure:12614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -12642,11 +12644,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 12646 "configure"
-+#line 12648 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:12650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:12652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -12688,7 +12690,7 @@
- unset ac_cv_lib_socket___res_search
- unset found
- echo $ac_n "checking for res_search in -lsocket""... $ac_c" 1>&6
--echo "configure:12692: checking for res_search in -lsocket" >&5
-+echo "configure:12694: checking for res_search in -lsocket" >&5
- ac_lib_var=`echo socket'_'res_search | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -12696,7 +12698,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsocket $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 12700 "configure"
-+#line 12702 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -12707,7 +12709,7 @@
- res_search()
- ; return 0; }
- EOF
--if { (eval echo configure:12711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -12727,7 +12729,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __res_search in -lsocket""... $ac_c" 1>&6
--echo "configure:12731: checking for __res_search in -lsocket" >&5
-+echo "configure:12733: checking for __res_search in -lsocket" >&5
- ac_lib_var=`echo socket'_'__res_search | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -12735,7 +12737,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsocket $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 12739 "configure"
-+#line 12741 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -12746,7 +12748,7 @@
- __res_search()
- ; return 0; }
- EOF
--if { (eval echo configure:12750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -12778,11 +12780,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 12782 "configure"
-+#line 12784 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:12786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:12788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -12840,12 +12842,12 @@
- unset found
-
- echo $ac_n "checking for inet_aton""... $ac_c" 1>&6
--echo "configure:12844: checking for inet_aton" >&5
-+echo "configure:12846: checking for inet_aton" >&5
- if eval "test \"`echo '$''{'ac_cv_func_inet_aton'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 12849 "configure"
-+#line 12851 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char inet_aton(); below. */
-@@ -12868,7 +12870,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:12872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_inet_aton=yes"
- else
-@@ -12886,12 +12888,12 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for __inet_aton""... $ac_c" 1>&6
--echo "configure:12890: checking for __inet_aton" >&5
-+echo "configure:12892: checking for __inet_aton" >&5
- if eval "test \"`echo '$''{'ac_cv_func___inet_aton'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 12895 "configure"
-+#line 12897 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char __inet_aton(); below. */
-@@ -12914,7 +12916,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:12918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func___inet_aton=yes"
- else
-@@ -12952,7 +12954,7 @@
- unset ac_cv_lib_resolv___inet_aton
- unset found
- echo $ac_n "checking for inet_aton in -lresolv""... $ac_c" 1>&6
--echo "configure:12956: checking for inet_aton in -lresolv" >&5
-+echo "configure:12958: checking for inet_aton in -lresolv" >&5
- ac_lib_var=`echo resolv'_'inet_aton | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -12960,7 +12962,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lresolv $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 12964 "configure"
-+#line 12966 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -12971,7 +12973,7 @@
- inet_aton()
- ; return 0; }
- EOF
--if { (eval echo configure:12975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:12977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -12991,7 +12993,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __inet_aton in -lresolv""... $ac_c" 1>&6
--echo "configure:12995: checking for __inet_aton in -lresolv" >&5
-+echo "configure:12997: checking for __inet_aton in -lresolv" >&5
- ac_lib_var=`echo resolv'_'__inet_aton | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -12999,7 +13001,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lresolv $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 13003 "configure"
-+#line 13005 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -13010,7 +13012,7 @@
- __inet_aton()
- ; return 0; }
- EOF
--if { (eval echo configure:13014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:13016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -13042,11 +13044,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 13046 "configure"
-+#line 13048 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:13050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:13052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -13088,7 +13090,7 @@
- unset ac_cv_lib_bind___inet_aton
- unset found
- echo $ac_n "checking for inet_aton in -lbind""... $ac_c" 1>&6
--echo "configure:13092: checking for inet_aton in -lbind" >&5
-+echo "configure:13094: checking for inet_aton in -lbind" >&5
- ac_lib_var=`echo bind'_'inet_aton | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -13096,7 +13098,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lbind $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 13100 "configure"
-+#line 13102 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -13107,7 +13109,7 @@
- inet_aton()
- ; return 0; }
- EOF
--if { (eval echo configure:13111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:13113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -13127,7 +13129,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __inet_aton in -lbind""... $ac_c" 1>&6
--echo "configure:13131: checking for __inet_aton in -lbind" >&5
-+echo "configure:13133: checking for __inet_aton in -lbind" >&5
- ac_lib_var=`echo bind'_'__inet_aton | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -13135,7 +13137,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lbind $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 13139 "configure"
-+#line 13141 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -13146,7 +13148,7 @@
- __inet_aton()
- ; return 0; }
- EOF
--if { (eval echo configure:13150: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:13152: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -13178,11 +13180,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 13182 "configure"
-+#line 13184 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:13186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:13188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -13236,12 +13238,12 @@
- unset found
-
- echo $ac_n "checking for dn_skipname""... $ac_c" 1>&6
--echo "configure:13240: checking for dn_skipname" >&5
-+echo "configure:13242: checking for dn_skipname" >&5
- if eval "test \"`echo '$''{'ac_cv_func_dn_skipname'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 13245 "configure"
-+#line 13247 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dn_skipname(); below. */
-@@ -13264,7 +13266,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:13268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:13270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_dn_skipname=yes"
- else
-@@ -13282,12 +13284,12 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for __dn_skipname""... $ac_c" 1>&6
--echo "configure:13286: checking for __dn_skipname" >&5
-+echo "configure:13288: checking for __dn_skipname" >&5
- if eval "test \"`echo '$''{'ac_cv_func___dn_skipname'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 13291 "configure"
-+#line 13293 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char __dn_skipname(); below. */
-@@ -13310,7 +13312,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:13314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:13316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func___dn_skipname=yes"
- else
-@@ -13348,7 +13350,7 @@
- unset ac_cv_lib_resolv___dn_skipname
- unset found
- echo $ac_n "checking for dn_skipname in -lresolv""... $ac_c" 1>&6
--echo "configure:13352: checking for dn_skipname in -lresolv" >&5
-+echo "configure:13354: checking for dn_skipname in -lresolv" >&5
- ac_lib_var=`echo resolv'_'dn_skipname | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -13356,7 +13358,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lresolv $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 13360 "configure"
-+#line 13362 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -13367,7 +13369,7 @@
- dn_skipname()
- ; return 0; }
- EOF
--if { (eval echo configure:13371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:13373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -13387,7 +13389,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __dn_skipname in -lresolv""... $ac_c" 1>&6
--echo "configure:13391: checking for __dn_skipname in -lresolv" >&5
-+echo "configure:13393: checking for __dn_skipname in -lresolv" >&5
- ac_lib_var=`echo resolv'_'__dn_skipname | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -13395,7 +13397,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lresolv $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 13399 "configure"
-+#line 13401 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -13406,7 +13408,7 @@
- __dn_skipname()
- ; return 0; }
- EOF
--if { (eval echo configure:13410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:13412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -13438,11 +13440,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 13442 "configure"
-+#line 13444 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:13446: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:13448: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -13484,7 +13486,7 @@
- unset ac_cv_lib_bind___dn_skipname
- unset found
- echo $ac_n "checking for dn_skipname in -lbind""... $ac_c" 1>&6
--echo "configure:13488: checking for dn_skipname in -lbind" >&5
-+echo "configure:13490: checking for dn_skipname in -lbind" >&5
- ac_lib_var=`echo bind'_'dn_skipname | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -13492,7 +13494,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lbind $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 13496 "configure"
-+#line 13498 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -13503,7 +13505,7 @@
- dn_skipname()
- ; return 0; }
- EOF
--if { (eval echo configure:13507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:13509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -13523,7 +13525,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for __dn_skipname in -lbind""... $ac_c" 1>&6
--echo "configure:13527: checking for __dn_skipname in -lbind" >&5
-+echo "configure:13529: checking for __dn_skipname in -lbind" >&5
- ac_lib_var=`echo bind'_'__dn_skipname | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -13531,7 +13533,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lbind $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 13535 "configure"
-+#line 13537 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -13542,7 +13544,7 @@
- __dn_skipname()
- ; return 0; }
- EOF
--if { (eval echo configure:13546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:13548: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -13574,11 +13576,11 @@
- found=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 13578 "configure"
-+#line 13580 "configure"
- #include "confdefs.h"
- main() { return (0); }
- EOF
--if { (eval echo configure:13582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:13584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- found=yes
- else
-@@ -13630,12 +13632,12 @@
-
-
- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
--echo "configure:13634: checking for ANSI C header files" >&5
-+echo "configure:13636: checking for ANSI C header files" >&5
- if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 13639 "configure"
-+#line 13641 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #include <stdarg.h>
-@@ -13643,7 +13645,7 @@
- #include <float.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:13647: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:13649: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -13660,7 +13662,7 @@
- if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat > conftest.$ac_ext <<EOF
--#line 13664 "configure"
-+#line 13666 "configure"
- #include "confdefs.h"
- #include <string.h>
- EOF
-@@ -13678,7 +13680,7 @@
- if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat > conftest.$ac_ext <<EOF
--#line 13682 "configure"
-+#line 13684 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- EOF
-@@ -13699,7 +13701,7 @@
- :
- else
- cat > conftest.$ac_ext <<EOF
--#line 13703 "configure"
-+#line 13705 "configure"
- #include "confdefs.h"
- #include <ctype.h>
- #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-@@ -13710,7 +13712,7 @@
- exit (0); }
-
- EOF
--if { (eval echo configure:13714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:13716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- :
- else
-@@ -13738,12 +13740,12 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
--echo "configure:13742: checking for $ac_hdr that defines DIR" >&5
-+echo "configure:13744: checking for $ac_hdr that defines DIR" >&5
- if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 13747 "configure"
-+#line 13749 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <$ac_hdr>
-@@ -13751,7 +13753,7 @@
- DIR *dirp = 0;
- ; return 0; }
- EOF
--if { (eval echo configure:13755: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:13757: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- eval "ac_cv_header_dirent_$ac_safe=yes"
- else
-@@ -13776,7 +13778,7 @@
- # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
- if test $ac_header_dirent = dirent.h; then
- echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
--echo "configure:13780: checking for opendir in -ldir" >&5
-+echo "configure:13782: checking for opendir in -ldir" >&5
- ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -13784,7 +13786,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldir $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 13788 "configure"
-+#line 13790 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -13795,7 +13797,7 @@
- opendir()
- ; return 0; }
- EOF
--if { (eval echo configure:13799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:13801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -13817,7 +13819,7 @@
-
- else
- echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
--echo "configure:13821: checking for opendir in -lx" >&5
-+echo "configure:13823: checking for opendir in -lx" >&5
- ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -13825,7 +13827,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lx $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 13829 "configure"
-+#line 13831 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -13836,7 +13838,7 @@
- opendir()
- ; return 0; }
- EOF
--if { (eval echo configure:13840: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:13842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -13861,16 +13863,16 @@
-
-
- echo $ac_n "checking for fclose declaration""... $ac_c" 1>&6
--echo "configure:13865: checking for fclose declaration" >&5
-+echo "configure:13867: checking for fclose declaration" >&5
- cat > conftest.$ac_ext <<EOF
--#line 13867 "configure"
-+#line 13869 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- int main() {
- int (*func)() = fclose
- ; return 0; }
- EOF
--if { (eval echo configure:13874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:13876: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- cat >> confdefs.h <<\EOF
-@@ -13947,17 +13949,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:13951: checking for $ac_hdr" >&5
-+echo "configure:13953: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 13956 "configure"
-+#line 13958 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:13961: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:13963: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -13986,12 +13988,12 @@
-
-
- echo $ac_n "checking for fopencookie""... $ac_c" 1>&6
--echo "configure:13990: checking for fopencookie" >&5
-+echo "configure:13992: checking for fopencookie" >&5
- if eval "test \"`echo '$''{'ac_cv_func_fopencookie'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 13995 "configure"
-+#line 13997 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char fopencookie(); below. */
-@@ -14014,7 +14016,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:14018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:14020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_fopencookie=yes"
- else
-@@ -14036,7 +14038,7 @@
-
- if test "$have_glibc_fopencookie" = "yes" ; then
- cat > conftest.$ac_ext <<EOF
--#line 14040 "configure"
-+#line 14042 "configure"
- #include "confdefs.h"
- #define _GNU_SOURCE
- #include <stdio.h>
-@@ -14045,7 +14047,7 @@
- cookie_io_functions_t cookie;
- ; return 0; }
- EOF
--if { (eval echo configure:14049: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14051: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- have_cookie_io_functions_t=yes
- else
-@@ -14065,7 +14067,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 14069 "configure"
-+#line 14071 "configure"
- #include "confdefs.h"
-
- #define _GNU_SOURCE
-@@ -14097,7 +14099,7 @@
-
-
- EOF
--if { (eval echo configure:14101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:14103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- cookie_io_functions_use_off64_t=yes
- else
-@@ -14112,7 +14114,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 14116 "configure"
-+#line 14118 "configure"
- #include "confdefs.h"
- #define _GNU_SOURCE
- #include <stdio.h>
-@@ -14121,7 +14123,7 @@
- _IO_cookie_io_functions_t cookie;
- ; return 0; }
- EOF
--if { (eval echo configure:14125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14127: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- have_IO_cookie_io_functions_t=yes
- else
-@@ -14158,7 +14160,7 @@
-
-
- echo $ac_n "checking for broken getcwd""... $ac_c" 1>&6
--echo "configure:14162: checking for broken getcwd" >&5
-+echo "configure:14164: checking for broken getcwd" >&5
- os=`uname -sr 2>/dev/null`
- case $os in
- SunOS*)
-@@ -14173,14 +14175,14 @@
-
-
- echo $ac_n "checking for broken libc stdio""... $ac_c" 1>&6
--echo "configure:14177: checking for broken libc stdio" >&5
-+echo "configure:14179: checking for broken libc stdio" >&5
- if eval "test \"`echo '$''{'have_broken_glibc_fopen_append'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-
- if test "$cross_compiling" = yes; then
- cat > conftest.$ac_ext <<EOF
--#line 14184 "configure"
-+#line 14186 "configure"
- #include "confdefs.h"
-
- #include <features.h>
-@@ -14193,7 +14195,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:14197: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14199: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- have_broken_glibc_fopen_append=yes
- else
-@@ -14206,7 +14208,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 14210 "configure"
-+#line 14212 "configure"
- #include "confdefs.h"
-
- #include <stdio.h>
-@@ -14234,7 +14236,7 @@
- }
-
- EOF
--if { (eval echo configure:14238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:14240: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- have_broken_glibc_fopen_append=no
- else
-@@ -14262,12 +14264,12 @@
-
-
- echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
--echo "configure:14266: checking whether struct tm is in sys/time.h or time.h" >&5
-+echo "configure:14268: checking whether struct tm is in sys/time.h or time.h" >&5
- if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14271 "configure"
-+#line 14273 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <time.h>
-@@ -14275,7 +14277,7 @@
- struct tm *tp; tp->tm_sec;
- ; return 0; }
- EOF
--if { (eval echo configure:14279: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14281: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_struct_tm=time.h
- else
-@@ -14296,12 +14298,12 @@
- fi
-
- echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
--echo "configure:14300: checking for tm_zone in struct tm" >&5
-+echo "configure:14302: checking for tm_zone in struct tm" >&5
- if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14305 "configure"
-+#line 14307 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <$ac_cv_struct_tm>
-@@ -14309,7 +14311,7 @@
- struct tm tm; tm.tm_zone;
- ; return 0; }
- EOF
--if { (eval echo configure:14313: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14315: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_struct_tm_zone=yes
- else
-@@ -14329,12 +14331,12 @@
-
- else
- echo $ac_n "checking for tzname""... $ac_c" 1>&6
--echo "configure:14333: checking for tzname" >&5
-+echo "configure:14335: checking for tzname" >&5
- if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14338 "configure"
-+#line 14340 "configure"
- #include "confdefs.h"
- #include <time.h>
- #ifndef tzname /* For SGI. */
-@@ -14344,7 +14346,7 @@
- atoi(*tzname);
- ; return 0; }
- EOF
--if { (eval echo configure:14348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:14350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ac_cv_var_tzname=yes
- else
-@@ -14368,12 +14370,12 @@
-
-
- echo $ac_n "checking for tm_gmtoff in struct tm""... $ac_c" 1>&6
--echo "configure:14372: checking for tm_gmtoff in struct tm" >&5
-+echo "configure:14374: checking for tm_gmtoff in struct tm" >&5
- if eval "test \"`echo '$''{'ac_cv_struct_tm_gmtoff'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14377 "configure"
-+#line 14379 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <$ac_cv_struct_tm>
-@@ -14381,7 +14383,7 @@
- struct tm tm; tm.tm_gmtoff;
- ; return 0; }
- EOF
--if { (eval echo configure:14385: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14387: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_struct_tm_gmtoff=yes
- else
-@@ -14404,12 +14406,12 @@
-
-
- echo $ac_n "checking for struct flock""... $ac_c" 1>&6
--echo "configure:14408: checking for struct flock" >&5
-+echo "configure:14410: checking for struct flock" >&5
- if eval "test \"`echo '$''{'ac_cv_struct_flock'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14413 "configure"
-+#line 14415 "configure"
- #include "confdefs.h"
-
- #include <unistd.h>
-@@ -14419,7 +14421,7 @@
- struct flock x;
- ; return 0; }
- EOF
--if { (eval echo configure:14423: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- ac_cv_struct_flock=yes
-@@ -14446,12 +14448,12 @@
-
-
- echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
--echo "configure:14450: checking for socklen_t" >&5
-+echo "configure:14452: checking for socklen_t" >&5
- if eval "test \"`echo '$''{'ac_cv_socklen_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14455 "configure"
-+#line 14457 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-@@ -14463,7 +14465,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:14467: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- ac_cv_socklen_t=yes
-@@ -14489,7 +14491,7 @@
-
-
- echo $ac_n "checking size of long""... $ac_c" 1>&6
--echo "configure:14493: checking size of long" >&5
-+echo "configure:14495: checking size of long" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -14497,9 +14499,10 @@
- ac_cv_sizeof_long=8
- else
- cat > conftest.$ac_ext <<EOF
--#line 14501 "configure"
-+#line 14503 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -14508,7 +14511,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:14512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:14515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_long=`cat conftestval`
- else
-@@ -14528,7 +14531,7 @@
-
-
- echo $ac_n "checking size of int""... $ac_c" 1>&6
--echo "configure:14532: checking size of int" >&5
-+echo "configure:14535: checking size of int" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -14536,9 +14539,10 @@
- ac_cv_sizeof_int=4
- else
- cat > conftest.$ac_ext <<EOF
--#line 14540 "configure"
-+#line 14543 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -14547,7 +14551,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:14551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:14555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_int=`cat conftestval`
- else
-@@ -14568,12 +14572,12 @@
-
-
- echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6
--echo "configure:14572: checking for st_blksize in struct stat" >&5
-+echo "configure:14576: checking for st_blksize in struct stat" >&5
- if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14577 "configure"
-+#line 14581 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/stat.h>
-@@ -14581,7 +14585,7 @@
- struct stat s; s.st_blksize;
- ; return 0; }
- EOF
--if { (eval echo configure:14585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14589: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_struct_st_blksize=yes
- else
-@@ -14603,12 +14607,12 @@
-
- if test "`uname -s 2>/dev/null`" != "QNX"; then
- echo $ac_n "checking for st_blocks in struct stat""... $ac_c" 1>&6
--echo "configure:14607: checking for st_blocks in struct stat" >&5
-+echo "configure:14611: checking for st_blocks in struct stat" >&5
- if eval "test \"`echo '$''{'ac_cv_struct_st_blocks'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14612 "configure"
-+#line 14616 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/stat.h>
-@@ -14616,7 +14620,7 @@
- struct stat s; s.st_blocks;
- ; return 0; }
- EOF
--if { (eval echo configure:14620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14624: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_struct_st_blocks=yes
- else
-@@ -14643,12 +14647,12 @@
- WARNING_LEVEL=0
- fi
- echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
--echo "configure:14647: checking for st_rdev in struct stat" >&5
-+echo "configure:14651: checking for st_rdev in struct stat" >&5
- if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14652 "configure"
-+#line 14656 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/stat.h>
-@@ -14656,7 +14660,7 @@
- struct stat s; s.st_rdev;
- ; return 0; }
- EOF
--if { (eval echo configure:14660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14664: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_struct_st_rdev=yes
- else
-@@ -14678,12 +14682,12 @@
-
-
- echo $ac_n "checking for size_t""... $ac_c" 1>&6
--echo "configure:14682: checking for size_t" >&5
-+echo "configure:14686: checking for size_t" >&5
- if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14687 "configure"
-+#line 14691 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #if STDC_HEADERS
-@@ -14711,12 +14715,12 @@
- fi
-
- echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
--echo "configure:14715: checking for uid_t in sys/types.h" >&5
-+echo "configure:14719: checking for uid_t in sys/types.h" >&5
- if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14720 "configure"
-+#line 14724 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- EOF
-@@ -14746,12 +14750,12 @@
-
-
- echo $ac_n "checking for struct sockaddr_storage""... $ac_c" 1>&6
--echo "configure:14750: checking for struct sockaddr_storage" >&5
-+echo "configure:14754: checking for struct sockaddr_storage" >&5
- if eval "test \"`echo '$''{'ac_cv_sockaddr_storage'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14755 "configure"
-+#line 14759 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/socket.h>
-@@ -14759,7 +14763,7 @@
- struct sockaddr_storage s; s
- ; return 0; }
- EOF
--if { (eval echo configure:14763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_sockaddr_storage=yes
- else
-@@ -14781,7 +14785,7 @@
-
-
- cat > conftest.$ac_ext <<EOF
--#line 14785 "configure"
-+#line 14789 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-@@ -14791,7 +14795,7 @@
- static struct sockaddr sa; int n = (int) sa.sa_len; return n
- ; return 0; }
- EOF
--if { (eval echo configure:14795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:14799: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- cat >> confdefs.h <<\EOF
- #define HAVE_SOCKADDR_LEN 1
-@@ -14804,12 +14808,12 @@
- rm -f conftest*
-
- echo $ac_n "checking for IPv6 support""... $ac_c" 1>&6
--echo "configure:14808: checking for IPv6 support" >&5
-+echo "configure:14812: checking for IPv6 support" >&5
- if eval "test \"`echo '$''{'ac_cv_ipv6_support'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14813 "configure"
-+#line 14817 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/socket.h>
-@@ -14818,7 +14822,7 @@
- struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0;
- ; return 0; }
- EOF
--if { (eval echo configure:14822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:14826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ac_cv_ipv6_support=yes
- else
-@@ -14836,12 +14840,12 @@
-
-
- echo $ac_n "checking for vprintf""... $ac_c" 1>&6
--echo "configure:14840: checking for vprintf" >&5
-+echo "configure:14844: checking for vprintf" >&5
- if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14845 "configure"
-+#line 14849 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char vprintf(); below. */
-@@ -14864,7 +14868,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:14868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:14872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_vprintf=yes"
- else
-@@ -14888,12 +14892,12 @@
-
- if test "$ac_cv_func_vprintf" != yes; then
- echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
--echo "configure:14892: checking for _doprnt" >&5
-+echo "configure:14896: checking for _doprnt" >&5
- if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 14897 "configure"
-+#line 14901 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char _doprnt(); below. */
-@@ -14916,7 +14920,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:14920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:14924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func__doprnt=yes"
- else
-@@ -15008,12 +15012,12 @@
-
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:15012: checking for $ac_func" >&5
-+echo "configure:15016: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 15017 "configure"
-+#line 15021 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -15036,7 +15040,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:15040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:15044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -15062,25 +15066,25 @@
-
-
- echo $ac_n "checking for getaddrinfo""... $ac_c" 1>&6
--echo "configure:15066: checking for getaddrinfo" >&5
-+echo "configure:15070: checking for getaddrinfo" >&5
- if eval "test \"`echo '$''{'ac_cv_func_getaddrinfo'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 15071 "configure"
-+#line 15075 "configure"
- #include "confdefs.h"
- #include <netdb.h>
- int main() {
- struct addrinfo *g,h;g=&h;getaddrinfo("","",g,&g);
- ; return 0; }
- EOF
--if { (eval echo configure:15078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:15082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 15084 "configure"
-+#line 15088 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
-@@ -15120,7 +15124,7 @@
- }
-
- EOF
--if { (eval echo configure:15124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:15128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_func_getaddrinfo=yes
- else
-@@ -15152,12 +15156,12 @@
- for ac_func in strlcat strlcpy getopt
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:15156: checking for $ac_func" >&5
-+echo "configure:15160: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 15161 "configure"
-+#line 15165 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -15180,7 +15184,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:15184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:15188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -15207,7 +15211,7 @@
-
-
- echo $ac_n "checking whether utime accepts a null argument""... $ac_c" 1>&6
--echo "configure:15211: checking whether utime accepts a null argument" >&5
-+echo "configure:15215: checking whether utime accepts a null argument" >&5
- if eval "test \"`echo '$''{'ac_cv_func_utime_null'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -15217,7 +15221,7 @@
- ac_cv_func_utime_null=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 15221 "configure"
-+#line 15225 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/stat.h>
-@@ -15228,7 +15232,7 @@
- && t.st_mtime - s.st_mtime < 120));
- }
- EOF
--if { (eval echo configure:15232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:15236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_func_utime_null=yes
- else
-@@ -15254,19 +15258,19 @@
- # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
- # for constant arguments. Useless!
- echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
--echo "configure:15258: checking for working alloca.h" >&5
-+echo "configure:15262: checking for working alloca.h" >&5
- if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 15263 "configure"
-+#line 15267 "configure"
- #include "confdefs.h"
- #include <alloca.h>
- int main() {
- char *p = alloca(2 * sizeof(int));
- ; return 0; }
- EOF
--if { (eval echo configure:15270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:15274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ac_cv_header_alloca_h=yes
- else
-@@ -15287,12 +15291,12 @@
- fi
-
- echo $ac_n "checking for alloca""... $ac_c" 1>&6
--echo "configure:15291: checking for alloca" >&5
-+echo "configure:15295: checking for alloca" >&5
- if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 15296 "configure"
-+#line 15300 "configure"
- #include "confdefs.h"
-
- #ifdef __GNUC__
-@@ -15320,7 +15324,7 @@
- char *p = (char *) alloca(1);
- ; return 0; }
- EOF
--if { (eval echo configure:15324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:15328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ac_cv_func_alloca_works=yes
- else
-@@ -15352,12 +15356,12 @@
-
-
- echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
--echo "configure:15356: checking whether alloca needs Cray hooks" >&5
-+echo "configure:15360: checking whether alloca needs Cray hooks" >&5
- if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 15361 "configure"
-+#line 15365 "configure"
- #include "confdefs.h"
- #if defined(CRAY) && ! defined(CRAY2)
- webecray
-@@ -15382,12 +15386,12 @@
- if test $ac_cv_os_cray = yes; then
- for ac_func in _getb67 GETB67 getb67; do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:15386: checking for $ac_func" >&5
-+echo "configure:15390: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 15391 "configure"
-+#line 15395 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -15410,7 +15414,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:15414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:15418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -15437,7 +15441,7 @@
- fi
-
- echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
--echo "configure:15441: checking stack direction for C alloca" >&5
-+echo "configure:15445: checking stack direction for C alloca" >&5
- if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -15445,7 +15449,7 @@
- ac_cv_c_stack_direction=0
- else
- cat > conftest.$ac_ext <<EOF
--#line 15449 "configure"
-+#line 15453 "configure"
- #include "confdefs.h"
- find_stack_direction ()
- {
-@@ -15464,7 +15468,7 @@
- exit (find_stack_direction() < 0);
- }
- EOF
--if { (eval echo configure:15468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:15472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_c_stack_direction=1
- else
-@@ -15487,13 +15491,13 @@
-
-
- echo $ac_n "checking for declared timezone""... $ac_c" 1>&6
--echo "configure:15491: checking for declared timezone" >&5
-+echo "configure:15495: checking for declared timezone" >&5
- if eval "test \"`echo '$''{'ac_cv_declared_timezone'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-
- cat > conftest.$ac_ext <<EOF
--#line 15497 "configure"
-+#line 15501 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-@@ -15508,7 +15512,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:15512: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:15516: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- ac_cv_declared_timezone=yes
-@@ -15534,7 +15538,7 @@
-
-
- echo $ac_n "checking for type of reentrant time-related functions""... $ac_c" 1>&6
--echo "configure:15538: checking for type of reentrant time-related functions" >&5
-+echo "configure:15542: checking for type of reentrant time-related functions" >&5
- if eval "test \"`echo '$''{'ac_cv_time_r_type'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -15545,7 +15549,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 15549 "configure"
-+#line 15553 "configure"
- #include "confdefs.h"
-
- #include <time.h>
-@@ -15563,7 +15567,7 @@
- }
-
- EOF
--if { (eval echo configure:15567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:15571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_time_r_type=hpux
-@@ -15577,7 +15581,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 15581 "configure"
-+#line 15585 "configure"
- #include "confdefs.h"
-
- #include <time.h>
-@@ -15593,7 +15597,7 @@
- }
-
- EOF
--if { (eval echo configure:15597: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:15601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_time_r_type=irix
-@@ -15631,12 +15635,12 @@
-
-
- echo $ac_n "checking for readdir_r""... $ac_c" 1>&6
--echo "configure:15635: checking for readdir_r" >&5
-+echo "configure:15639: checking for readdir_r" >&5
- if eval "test \"`echo '$''{'ac_cv_func_readdir_r'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 15640 "configure"
-+#line 15644 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char readdir_r(); below. */
-@@ -15659,7 +15663,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:15663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:15667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_readdir_r=yes"
- else
-@@ -15681,7 +15685,7 @@
-
- if test "$ac_cv_func_readdir_r" = "yes"; then
- echo $ac_n "checking for type of readdir_r""... $ac_c" 1>&6
--echo "configure:15685: checking for type of readdir_r" >&5
-+echo "configure:15689: checking for type of readdir_r" >&5
- if eval "test \"`echo '$''{'ac_cv_what_readdir_r'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -15692,7 +15696,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 15696 "configure"
-+#line 15700 "configure"
- #include "confdefs.h"
-
- #define _REENTRANT
-@@ -15717,7 +15721,7 @@
- }
-
- EOF
--if { (eval echo configure:15721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:15725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_what_readdir_r=POSIX
-@@ -15728,7 +15732,7 @@
- rm -fr conftest*
-
- cat > conftest.$ac_ext <<EOF
--#line 15732 "configure"
-+#line 15736 "configure"
- #include "confdefs.h"
-
- #define _REENTRANT
-@@ -15738,7 +15742,7 @@
-
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:15742: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:15746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -15783,7 +15787,7 @@
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 15787 "configure"
-+#line 15791 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #if STDC_HEADERS
-@@ -15835,7 +15839,7 @@
-
-
- echo $ac_n "checking whether to include debugging symbols""... $ac_c" 1>&6
--echo "configure:15839: checking whether to include debugging symbols" >&5
-+echo "configure:15843: checking whether to include debugging symbols" >&5
- # Check whether --enable-debug or --disable-debug was given.
- if test "${enable_debug+set}" = set; then
- enableval="$enable_debug"
-@@ -15868,7 +15872,7 @@
-
-
- echo $ac_n "checking layout of installed files""... $ac_c" 1>&6
--echo "configure:15872: checking layout of installed files" >&5
-+echo "configure:15876: checking layout of installed files" >&5
- # Check whether --with-layout or --without-layout was given.
- if test "${with_layout+set}" = set; then
- withval="$with_layout"
-@@ -15902,7 +15906,7 @@
-
-
- echo $ac_n "checking path to configuration file""... $ac_c" 1>&6
--echo "configure:15906: checking path to configuration file" >&5
-+echo "configure:15910: checking path to configuration file" >&5
- # Check whether --with-config-file-path or --without-config-file-path was given.
- if test "${with_config_file_path+set}" = set; then
- withval="$with_config_file_path"
-@@ -15938,7 +15942,7 @@
-
-
- echo $ac_n "checking directory to be scanned for configuration files""... $ac_c" 1>&6
--echo "configure:15942: checking directory to be scanned for configuration files" >&5
-+echo "configure:15946: checking directory to be scanned for configuration files" >&5
- # Check whether --with-config-file-scan-dir or --without-config-file-scan-dir was given.
- if test "${with_config_file_scan_dir+set}" = set; then
- withval="$with_config_file_scan_dir"
-@@ -15968,7 +15972,7 @@
-
-
- echo $ac_n "checking whether to enable safe mode by default""... $ac_c" 1>&6
--echo "configure:15972: checking whether to enable safe mode by default" >&5
-+echo "configure:15976: checking whether to enable safe mode by default" >&5
- # Check whether --enable-safe-mode or --disable-safe-mode was given.
- if test "${enable_safe_mode+set}" = set; then
- enableval="$enable_safe_mode"
-@@ -16003,7 +16007,7 @@
- fi
-
- echo $ac_n "checking for safe mode exec dir""... $ac_c" 1>&6
--echo "configure:16007: checking for safe mode exec dir" >&5
-+echo "configure:16011: checking for safe mode exec dir" >&5
- # Check whether --with-exec-dir or --without-exec-dir was given.
- if test "${with_exec_dir+set}" = set; then
- withval="$with_exec_dir"
-@@ -16044,7 +16048,7 @@
-
-
- echo $ac_n "checking whether to enable PHP's own SIGCHLD handler""... $ac_c" 1>&6
--echo "configure:16048: checking whether to enable PHP's own SIGCHLD handler" >&5
-+echo "configure:16052: checking whether to enable PHP's own SIGCHLD handler" >&5
- # Check whether --enable-sigchild or --disable-sigchild was given.
- if test "${enable_sigchild+set}" = set; then
- enableval="$enable_sigchild"
-@@ -16081,7 +16085,7 @@
-
-
- echo $ac_n "checking whether to enable magic quotes by default""... $ac_c" 1>&6
--echo "configure:16085: checking whether to enable magic quotes by default" >&5
-+echo "configure:16089: checking whether to enable magic quotes by default" >&5
- # Check whether --enable-magic-quotes or --disable-magic-quotes was given.
- if test "${enable_magic_quotes+set}" = set; then
- enableval="$enable_magic_quotes"
-@@ -16118,7 +16122,7 @@
-
-
- echo $ac_n "checking whether to enable runpaths""... $ac_c" 1>&6
--echo "configure:16122: checking whether to enable runpaths" >&5
-+echo "configure:16126: checking whether to enable runpaths" >&5
- # Check whether --enable-rpath or --disable-rpath was given.
- if test "${enable_rpath+set}" = set; then
- enableval="$enable_rpath"
-@@ -16143,7 +16147,7 @@
-
-
- echo $ac_n "checking whether to explicitly link against libgcc""... $ac_c" 1>&6
--echo "configure:16147: checking whether to explicitly link against libgcc" >&5
-+echo "configure:16151: checking whether to explicitly link against libgcc" >&5
- # Check whether --enable-libgcc or --disable-libgcc was given.
- if test "${enable_libgcc+set}" = set; then
- enableval="$enable_libgcc"
-@@ -16222,7 +16226,7 @@
-
-
- echo $ac_n "checking whether to enable short tags by default""... $ac_c" 1>&6
--echo "configure:16226: checking whether to enable short tags by default" >&5
-+echo "configure:16230: checking whether to enable short tags by default" >&5
- # Check whether --enable-short-tags or --disable-short-tags was given.
- if test "${enable_short_tags+set}" = set; then
- enableval="$enable_short_tags"
-@@ -16259,7 +16263,7 @@
-
-
- echo $ac_n "checking whether to enable dmalloc""... $ac_c" 1>&6
--echo "configure:16263: checking whether to enable dmalloc" >&5
-+echo "configure:16267: checking whether to enable dmalloc" >&5
- # Check whether --enable-dmalloc or --disable-dmalloc was given.
- if test "${enable_dmalloc+set}" = set; then
- enableval="$enable_dmalloc"
-@@ -16284,7 +16288,7 @@
- if test "$PHP_DMALLOC" = "yes"; then
-
- echo $ac_n "checking for dmalloc_error in -ldmalloc""... $ac_c" 1>&6
--echo "configure:16288: checking for dmalloc_error in -ldmalloc" >&5
-+echo "configure:16292: checking for dmalloc_error in -ldmalloc" >&5
- ac_lib_var=`echo dmalloc'_'dmalloc_error | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -16292,7 +16296,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldmalloc $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 16296 "configure"
-+#line 16300 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -16303,7 +16307,7 @@
- dmalloc_error()
- ; return 0; }
- EOF
--if { (eval echo configure:16307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:16311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -16347,7 +16351,7 @@
-
-
- echo $ac_n "checking whether to enable IPv6 support""... $ac_c" 1>&6
--echo "configure:16351: checking whether to enable IPv6 support" >&5
-+echo "configure:16355: checking whether to enable IPv6 support" >&5
- # Check whether --enable-ipv6 or --disable-ipv6 was given.
- if test "${enable_ipv6+set}" = set; then
- enableval="$enable_ipv6"
-@@ -16377,7 +16381,7 @@
- fi
-
- echo $ac_n "checking whether to enable versioning""... $ac_c" 1>&6
--echo "configure:16381: checking whether to enable versioning" >&5
-+echo "configure:16385: checking whether to enable versioning" >&5
- # Check whether --enable-versioning or --disable-versioning was given.
- if test "${enable_versioning+set}" = set; then
- enableval="$enable_versioning"
-@@ -16429,7 +16433,7 @@
-
-
- echo $ac_n "checking for OpenSSL support""... $ac_c" 1>&6
--echo "configure:16433: checking for OpenSSL support" >&5
-+echo "configure:16437: checking for OpenSSL support" >&5
- # Check whether --with-openssl or --without-openssl was given.
- if test "${with_openssl+set}" = set; then
- withval="$with_openssl"
-@@ -16475,7 +16479,7 @@
-
-
- echo $ac_n "checking for Kerberos support""... $ac_c" 1>&6
--echo "configure:16479: checking for Kerberos support" >&5
-+echo "configure:16483: checking for Kerberos support" >&5
- # Check whether --with-kerberos or --without-kerberos was given.
- if test "${with_kerberos+set}" = set; then
- withval="$with_kerberos"
-@@ -16733,7 +16737,7 @@
- # Extract the first word of "krb5-config", so it can be a program name with args.
- set dummy krb5-config; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:16737: checking for $ac_word" >&5
-+echo "configure:16741: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_KRB5_CONFIG'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -17089,7 +17093,7 @@
- # Extract the first word of "pkg-config", so it can be a program name with args.
- set dummy pkg-config; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:17093: checking for $ac_word" >&5
-+echo "configure:17097: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -17277,9 +17281,9 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS=-I$OPENSSL_INCDIR
- echo $ac_n "checking for OpenSSL version""... $ac_c" 1>&6
--echo "configure:17281: checking for OpenSSL version" >&5
-+echo "configure:17285: checking for OpenSSL version" >&5
- cat > conftest.$ac_ext <<EOF
--#line 17283 "configure"
-+#line 17287 "configure"
- #include "confdefs.h"
-
- #include <openssl/opensslv.h>
-@@ -17417,7 +17421,7 @@
- done
-
- echo $ac_n "checking for CRYPTO_free in -lcrypto""... $ac_c" 1>&6
--echo "configure:17421: checking for CRYPTO_free in -lcrypto" >&5
-+echo "configure:17425: checking for CRYPTO_free in -lcrypto" >&5
- ac_lib_var=`echo crypto'_'CRYPTO_free | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -17425,7 +17429,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcrypto $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 17429 "configure"
-+#line 17433 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -17436,7 +17440,7 @@
- CRYPTO_free()
- ; return 0; }
- EOF
--if { (eval echo configure:17440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:17444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -17576,7 +17580,7 @@
- done
-
- echo $ac_n "checking for SSL_CTX_set_ssl_version in -lssl""... $ac_c" 1>&6
--echo "configure:17580: checking for SSL_CTX_set_ssl_version in -lssl" >&5
-+echo "configure:17584: checking for SSL_CTX_set_ssl_version in -lssl" >&5
- ac_lib_var=`echo ssl'_'SSL_CTX_set_ssl_version | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -17584,7 +17588,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lssl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 17588 "configure"
-+#line 17592 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -17595,7 +17599,7 @@
- SSL_CTX_set_ssl_version()
- ; return 0; }
- EOF
--if { (eval echo configure:17599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:17603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -17721,7 +17725,7 @@
-
-
- echo $ac_n "checking for ZLIB support""... $ac_c" 1>&6
--echo "configure:17725: checking for ZLIB support" >&5
-+echo "configure:17729: checking for ZLIB support" >&5
- # Check whether --with-zlib or --without-zlib was given.
- if test "${with_zlib+set}" = set; then
- withval="$with_zlib"
-@@ -17767,7 +17771,7 @@
-
-
- echo $ac_n "checking if the location of ZLIB install directory is defined""... $ac_c" 1>&6
--echo "configure:17771: checking if the location of ZLIB install directory is defined" >&5
-+echo "configure:17775: checking if the location of ZLIB install directory is defined" >&5
- # Check whether --with-zlib-dir or --without-zlib-dir was given.
- if test "${with_zlib_dir+set}" = set; then
- withval="$with_zlib_dir"
-@@ -18120,7 +18124,7 @@
- done
-
- echo $ac_n "checking for gzgets in -lz""... $ac_c" 1>&6
--echo "configure:18124: checking for gzgets in -lz" >&5
-+echo "configure:18128: checking for gzgets in -lz" >&5
- ac_lib_var=`echo z'_'gzgets | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -18128,7 +18132,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lz $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 18132 "configure"
-+#line 18136 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -18139,7 +18143,7 @@
- gzgets()
- ; return 0; }
- EOF
--if { (eval echo configure:18143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:18147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -18277,7 +18281,7 @@
-
-
- echo $ac_n "checking whether to enable bc style precision math functions""... $ac_c" 1>&6
--echo "configure:18281: checking whether to enable bc style precision math functions" >&5
-+echo "configure:18285: checking whether to enable bc style precision math functions" >&5
- # Check whether --enable-bcmath or --disable-bcmath was given.
- if test "${enable_bcmath+set}" = set; then
- enableval="$enable_bcmath"
-@@ -18571,7 +18575,7 @@
-
-
- echo $ac_n "checking for BZip2 support""... $ac_c" 1>&6
--echo "configure:18575: checking for BZip2 support" >&5
-+echo "configure:18579: checking for BZip2 support" >&5
- # Check whether --with-bz2 or --without-bz2 was given.
- if test "${with_bz2+set}" = set; then
- withval="$with_bz2"
-@@ -18619,7 +18623,7 @@
- BZIP_DIR=$PHP_BZ2
- else
- echo $ac_n "checking for BZip2 in default path""... $ac_c" 1>&6
--echo "configure:18623: checking for BZip2 in default path" >&5
-+echo "configure:18627: checking for BZip2 in default path" >&5
- for i in /usr/local /usr; do
- if test -r $i/include/bzlib.h; then
- BZIP_DIR=$i
-@@ -18715,7 +18719,7 @@
- done
-
- echo $ac_n "checking for BZ2_bzerror in -lbz2""... $ac_c" 1>&6
--echo "configure:18719: checking for BZ2_bzerror in -lbz2" >&5
-+echo "configure:18723: checking for BZ2_bzerror in -lbz2" >&5
- ac_lib_var=`echo bz2'_'BZ2_bzerror | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -18723,7 +18727,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lbz2 $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 18727 "configure"
-+#line 18731 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -18734,7 +18738,7 @@
- BZ2_bzerror()
- ; return 0; }
- EOF
--if { (eval echo configure:18738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:18742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -19129,7 +19133,7 @@
-
-
- echo $ac_n "checking whether to enable calendar conversion support""... $ac_c" 1>&6
--echo "configure:19133: checking whether to enable calendar conversion support" >&5
-+echo "configure:19137: checking whether to enable calendar conversion support" >&5
- # Check whether --enable-calendar or --disable-calendar was given.
- if test "${enable_calendar+set}" = set; then
- enableval="$enable_calendar"
-@@ -19408,7 +19412,7 @@
-
-
- echo $ac_n "checking for cpdflib support""... $ac_c" 1>&6
--echo "configure:19412: checking for cpdflib support" >&5
-+echo "configure:19416: checking for cpdflib support" >&5
- # Check whether --with-cpdflib or --without-cpdflib was given.
- if test "${with_cpdflib+set}" = set; then
- withval="$with_cpdflib"
-@@ -19771,7 +19775,7 @@
- done
-
- echo $ac_n "checking for jpeg_read_header in -ljpeg""... $ac_c" 1>&6
--echo "configure:19775: checking for jpeg_read_header in -ljpeg" >&5
-+echo "configure:19779: checking for jpeg_read_header in -ljpeg" >&5
- ac_lib_var=`echo jpeg'_'jpeg_read_header | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -19779,7 +19783,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ljpeg $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 19783 "configure"
-+#line 19787 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -19790,7 +19794,7 @@
- jpeg_read_header()
- ; return 0; }
- EOF
--if { (eval echo configure:19794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:19798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -20018,7 +20022,7 @@
- done
-
- echo $ac_n "checking for TIFFOpen in -ltiff""... $ac_c" 1>&6
--echo "configure:20022: checking for TIFFOpen in -ltiff" >&5
-+echo "configure:20026: checking for TIFFOpen in -ltiff" >&5
- ac_lib_var=`echo tiff'_'TIFFOpen | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -20026,7 +20030,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ltiff $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 20030 "configure"
-+#line 20034 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -20037,7 +20041,7 @@
- TIFFOpen()
- ; return 0; }
- EOF
--if { (eval echo configure:20041: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:20045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -20256,7 +20260,7 @@
- done
-
- echo $ac_n "checking for cpdf_open in -lcpdf""... $ac_c" 1>&6
--echo "configure:20260: checking for cpdf_open in -lcpdf" >&5
-+echo "configure:20264: checking for cpdf_open in -lcpdf" >&5
- ac_lib_var=`echo cpdf'_'cpdf_open | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -20264,7 +20268,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcpdf $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 20268 "configure"
-+#line 20272 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -20275,7 +20279,7 @@
- cpdf_open()
- ; return 0; }
- EOF
--if { (eval echo configure:20279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:20283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -20385,7 +20389,7 @@
- done
-
- echo $ac_n "checking for cpdf_open in -lcpdfm""... $ac_c" 1>&6
--echo "configure:20389: checking for cpdf_open in -lcpdfm" >&5
-+echo "configure:20393: checking for cpdf_open in -lcpdfm" >&5
- ac_lib_var=`echo cpdfm'_'cpdf_open | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -20393,7 +20397,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcpdfm $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 20397 "configure"
-+#line 20401 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -20404,7 +20408,7 @@
- cpdf_open()
- ; return 0; }
- EOF
--if { (eval echo configure:20408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:20412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -20587,7 +20591,7 @@
-
-
- echo $ac_n "checking for CRACKlib support""... $ac_c" 1>&6
--echo "configure:20591: checking for CRACKlib support" >&5
-+echo "configure:20595: checking for CRACKlib support" >&5
- # Check whether --with-crack or --without-crack was given.
- if test "${with_crack+set}" = set; then
- withval="$with_crack"
-@@ -21011,7 +21015,7 @@
-
-
- echo $ac_n "checking whether to enable ctype functions""... $ac_c" 1>&6
--echo "configure:21015: checking whether to enable ctype functions" >&5
-+echo "configure:21019: checking whether to enable ctype functions" >&5
- # Check whether --enable-ctype or --disable-ctype was given.
- if test "${enable_ctype+set}" = set; then
- enableval="$enable_ctype"
-@@ -21286,7 +21290,7 @@
-
-
- echo $ac_n "checking for CURL support""... $ac_c" 1>&6
--echo "configure:21290: checking for CURL support" >&5
-+echo "configure:21294: checking for CURL support" >&5
- # Check whether --with-curl or --without-curl was given.
- if test "${with_curl+set}" = set; then
- withval="$with_curl"
-@@ -21335,7 +21339,7 @@
- CURL_DIR=$PHP_CURL
- else
- echo $ac_n "checking for CURL in default path""... $ac_c" 1>&6
--echo "configure:21339: checking for CURL in default path" >&5
-+echo "configure:21343: checking for CURL in default path" >&5
- for i in /usr/local /usr; do
- if test -r $i/include/curl/easy.h; then
- CURL_DIR=$i
-@@ -21353,7 +21357,7 @@
-
- CURL_CONFIG="curl-config"
- echo $ac_n "checking for cURL 7.9.8 or greater""... $ac_c" 1>&6
--echo "configure:21357: checking for cURL 7.9.8 or greater" >&5
-+echo "configure:21361: checking for cURL 7.9.8 or greater" >&5
-
- if ${CURL_DIR}/bin/curl-config --libs > /dev/null 2>&1; then
- CURL_CONFIG=${CURL_DIR}/bin/curl-config
-@@ -21653,7 +21657,7 @@
- done
-
- echo $ac_n "checking for curl_easy_perform in -lcurl""... $ac_c" 1>&6
--echo "configure:21657: checking for curl_easy_perform in -lcurl" >&5
-+echo "configure:21661: checking for curl_easy_perform in -lcurl" >&5
- ac_lib_var=`echo curl'_'curl_easy_perform | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -21661,7 +21665,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcurl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 21665 "configure"
-+#line 21669 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -21672,7 +21676,7 @@
- curl_easy_perform()
- ; return 0; }
- EOF
--if { (eval echo configure:21676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:21680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -21791,7 +21795,7 @@
- done
-
- echo $ac_n "checking for curl_version_info in -lcurl""... $ac_c" 1>&6
--echo "configure:21795: checking for curl_version_info in -lcurl" >&5
-+echo "configure:21799: checking for curl_version_info in -lcurl" >&5
- ac_lib_var=`echo curl'_'curl_version_info | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -21799,7 +21803,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcurl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 21803 "configure"
-+#line 21807 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -21810,7 +21814,7 @@
- curl_version_info()
- ; return 0; }
- EOF
--if { (eval echo configure:21814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:21818: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -22077,7 +22081,7 @@
-
-
- echo $ac_n "checking for cyrus imap support""... $ac_c" 1>&6
--echo "configure:22081: checking for cyrus imap support" >&5
-+echo "configure:22085: checking for cyrus imap support" >&5
- # Check whether --with-cyrus or --without-cyrus was given.
- if test "${with_cyrus+set}" = set; then
- withval="$with_cyrus"
-@@ -22263,7 +22267,7 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS=-I$CYRUS_INCPATH
- cat > conftest.$ac_ext <<EOF
--#line 22267 "configure"
-+#line 22271 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- #include <cyrus/imclient.h>
-@@ -22271,7 +22275,7 @@
- imclient_connect(0,0,0,0)
- ; return 0; }
- EOF
--if { (eval echo configure:22275: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:22279: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- :
- else
- echo "configure: failed program was:" >&5
-@@ -23002,7 +23006,7 @@
-
-
- echo $ac_n "checking for xDBM support""... $ac_c" 1>&6
--echo "configure:23006: checking for xDBM support" >&5
-+echo "configure:23010: checking for xDBM support" >&5
- # Check whether --with-db or --without-db was given.
- if test "${with_db+set}" = set; then
- withval="$with_db"
-@@ -23049,7 +23053,7 @@
-
-
- echo $ac_n "checking for gdbm_open in -lgdbm""... $ac_c" 1>&6
--echo "configure:23053: checking for gdbm_open in -lgdbm" >&5
-+echo "configure:23057: checking for gdbm_open in -lgdbm" >&5
- ac_lib_var=`echo gdbm'_'gdbm_open | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -23057,7 +23061,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgdbm $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 23061 "configure"
-+#line 23065 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -23068,7 +23072,7 @@
- gdbm_open()
- ; return 0; }
- EOF
--if { (eval echo configure:23072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:23076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -23090,7 +23094,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for dbm_open in -lc""... $ac_c" 1>&6
--echo "configure:23094: checking for dbm_open in -lc" >&5
-+echo "configure:23098: checking for dbm_open in -lc" >&5
- ac_lib_var=`echo c'_'dbm_open | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -23098,7 +23102,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lc $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 23102 "configure"
-+#line 23106 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -23109,7 +23113,7 @@
- dbm_open()
- ; return 0; }
- EOF
--if { (eval echo configure:23113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:23117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -23131,7 +23135,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
--echo "configure:23135: checking for dbm_open in -ldbm" >&5
-+echo "configure:23139: checking for dbm_open in -ldbm" >&5
- ac_lib_var=`echo dbm'_'dbm_open | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -23139,7 +23143,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldbm $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 23143 "configure"
-+#line 23147 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -23150,7 +23154,7 @@
- dbm_open()
- ; return 0; }
- EOF
--if { (eval echo configure:23154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:23158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -23172,7 +23176,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for dbm_open in -ldb""... $ac_c" 1>&6
--echo "configure:23176: checking for dbm_open in -ldb" >&5
-+echo "configure:23180: checking for dbm_open in -ldb" >&5
- ac_lib_var=`echo db'_'dbm_open | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -23180,7 +23184,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldb $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 23184 "configure"
-+#line 23188 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -23191,7 +23195,7 @@
- dbm_open()
- ; return 0; }
- EOF
--if { (eval echo configure:23195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:23199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -23225,7 +23229,7 @@
- fi
-
- echo $ac_n "checking preferred dbm library""... $ac_c" 1>&6
--echo "configure:23229: checking preferred dbm library" >&5
-+echo "configure:23233: checking preferred dbm library" >&5
- if test "a$DBM_TYPE" = a; then
- echo "$ac_t""none found" 1>&6
- echo "configure: warning: No dbm library found - using built-in flatfile support" 1>&2
-@@ -23243,17 +23247,17 @@
- if test "$DBM_LIB" = "-lgdbm"; then
- ac_safe=`echo "gdbm.h" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for gdbm.h""... $ac_c" 1>&6
--echo "configure:23247: checking for gdbm.h" >&5
-+echo "configure:23251: checking for gdbm.h" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 23252 "configure"
-+#line 23256 "configure"
- #include "confdefs.h"
- #include <gdbm.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:23257: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:23261: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -23276,17 +23280,17 @@
- echo "$ac_t"""Try /usr/local/include/gdbm.h"" 1>&6;
- ac_safe=`echo "/usr/local/include/gdbm.h" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for /usr/local/include/gdbm.h""... $ac_c" 1>&6
--echo "configure:23280: checking for /usr/local/include/gdbm.h" >&5
-+echo "configure:23284: checking for /usr/local/include/gdbm.h" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 23285 "configure"
-+#line 23289 "configure"
- #include "confdefs.h"
- #include </usr/local/include/gdbm.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:23290: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:23294: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -23309,17 +23313,17 @@
- echo "$ac_t"""Try /opt/local/include/gdbm.h"" 1>&6;
- ac_safe=`echo "/opt/local/include/gdbm.h" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for /opt/local/include/gdbm.h""... $ac_c" 1>&6
--echo "configure:23313: checking for /opt/local/include/gdbm.h" >&5
-+echo "configure:23317: checking for /opt/local/include/gdbm.h" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 23318 "configure"
-+#line 23322 "configure"
- #include "confdefs.h"
- #include </opt/local/include/gdbm.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:23323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:23327: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -23342,17 +23346,17 @@
- echo "$ac_t"""Try /usr/pkg/include/gdbm.h"" 1>&6;
- ac_safe=`echo "/usr/pkg/include/gdbm.h" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for /usr/pkg/include/gdbm.h""... $ac_c" 1>&6
--echo "configure:23346: checking for /usr/pkg/include/gdbm.h" >&5
-+echo "configure:23350: checking for /usr/pkg/include/gdbm.h" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 23351 "configure"
-+#line 23355 "configure"
- #include "confdefs.h"
- #include </usr/pkg/include/gdbm.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:23356: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:23360: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -23633,7 +23637,7 @@
-
-
- echo $ac_n "checking whether to enable DBA""... $ac_c" 1>&6
--echo "configure:23637: checking whether to enable DBA" >&5
-+echo "configure:23641: checking whether to enable DBA" >&5
- # Check whether --enable-dba or --disable-dba was given.
- if test "${enable_dba+set}" = set; then
- enableval="$enable_dba"
-@@ -23772,7 +23776,7 @@
- done
-
- echo $ac_n "checking for gdbm_open in -lgdbm""... $ac_c" 1>&6
--echo "configure:23776: checking for gdbm_open in -lgdbm" >&5
-+echo "configure:23780: checking for gdbm_open in -lgdbm" >&5
- ac_lib_var=`echo gdbm'_'gdbm_open | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -23780,7 +23784,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgdbm $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 23784 "configure"
-+#line 23788 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -23791,7 +23795,7 @@
- gdbm_open()
- ; return 0; }
- EOF
--if { (eval echo configure:23795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:23799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -23958,7 +23962,7 @@
- THIS_FULL_NAME="$THIS_NAME"
- fi
- echo $ac_n "checking for $THIS_FULL_NAME support""... $ac_c" 1>&6
--echo "configure:23962: checking for $THIS_FULL_NAME support" >&5
-+echo "configure:23966: checking for $THIS_FULL_NAME support" >&5
- if test -n ""; then
- { echo "configure: error: " 1>&2; exit 1; }
- fi
-@@ -24073,7 +24077,7 @@
- done
-
- echo $ac_n "checking for dbm_open in -l$LIB""... $ac_c" 1>&6
--echo "configure:24077: checking for dbm_open in -l$LIB" >&5
-+echo "configure:24081: checking for dbm_open in -l$LIB" >&5
- ac_lib_var=`echo $LIB'_'dbm_open | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -24081,7 +24085,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$LIB $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 24085 "configure"
-+#line 24089 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -24092,7 +24096,7 @@
- dbm_open()
- ; return 0; }
- EOF
--if { (eval echo configure:24096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:24100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -24263,7 +24267,7 @@
- THIS_FULL_NAME="$THIS_NAME"
- fi
- echo $ac_n "checking for $THIS_FULL_NAME support""... $ac_c" 1>&6
--echo "configure:24267: checking for $THIS_FULL_NAME support" >&5
-+echo "configure:24271: checking for $THIS_FULL_NAME support" >&5
- if test -n ""; then
- { echo "configure: error: " 1>&2; exit 1; }
- fi
-@@ -24320,7 +24324,7 @@
- LIBS="-l$LIB $LIBS"
-
- cat > conftest.$ac_ext <<EOF
--#line 24324 "configure"
-+#line 24328 "configure"
- #include "confdefs.h"
-
- #include "$THIS_INCLUDE"
-@@ -24331,11 +24335,11 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:24335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:24339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- cat > conftest.$ac_ext <<EOF
--#line 24339 "configure"
-+#line 24343 "configure"
- #include "confdefs.h"
-
- #include "$THIS_INCLUDE"
-@@ -24368,14 +24372,14 @@
- done
- if test -z "$THIS_LIBS"; then
- echo $ac_n "checking for db4 major version""... $ac_c" 1>&6
--echo "configure:24372: checking for db4 major version" >&5
-+echo "configure:24376: checking for db4 major version" >&5
- { echo "configure: error: Header contains different version" 1>&2; exit 1; }
- fi
- if test "4" = "4"; then
- echo $ac_n "checking for db4 minor version and patch level""... $ac_c" 1>&6
--echo "configure:24377: checking for db4 minor version and patch level" >&5
-+echo "configure:24381: checking for db4 minor version and patch level" >&5
- cat > conftest.$ac_ext <<EOF
--#line 24379 "configure"
-+#line 24383 "configure"
- #include "confdefs.h"
-
- #include "$THIS_INCLUDE"
-@@ -24401,9 +24405,9 @@
- fi
- if test "$ext_shared" = "yes"; then
- echo $ac_n "checking if dba can be used as shared extension""... $ac_c" 1>&6
--echo "configure:24405: checking if dba can be used as shared extension" >&5
-+echo "configure:24409: checking if dba can be used as shared extension" >&5
- cat > conftest.$ac_ext <<EOF
--#line 24407 "configure"
-+#line 24411 "configure"
- #include "confdefs.h"
-
- #include "$THIS_INCLUDE"
-@@ -24565,7 +24569,7 @@
- THIS_FULL_NAME="$THIS_NAME"
- fi
- echo $ac_n "checking for $THIS_FULL_NAME support""... $ac_c" 1>&6
--echo "configure:24569: checking for $THIS_FULL_NAME support" >&5
-+echo "configure:24573: checking for $THIS_FULL_NAME support" >&5
- if test -n ""; then
- { echo "configure: error: " 1>&2; exit 1; }
- fi
-@@ -24596,7 +24600,7 @@
- THIS_FULL_NAME="$THIS_NAME"
- fi
- echo $ac_n "checking for $THIS_FULL_NAME support""... $ac_c" 1>&6
--echo "configure:24600: checking for $THIS_FULL_NAME support" >&5
-+echo "configure:24604: checking for $THIS_FULL_NAME support" >&5
- if test -n "You cannot combine --with-db3 with --with-db4"; then
- { echo "configure: error: You cannot combine --with-db3 with --with-db4" 1>&2; exit 1; }
- fi
-@@ -24643,7 +24647,7 @@
- LIBS="-l$LIB $LIBS"
-
- cat > conftest.$ac_ext <<EOF
--#line 24647 "configure"
-+#line 24651 "configure"
- #include "confdefs.h"
-
- #include "$THIS_INCLUDE"
-@@ -24654,11 +24658,11 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:24658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:24662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- cat > conftest.$ac_ext <<EOF
--#line 24662 "configure"
-+#line 24666 "configure"
- #include "confdefs.h"
-
- #include "$THIS_INCLUDE"
-@@ -24691,14 +24695,14 @@
- done
- if test -z "$THIS_LIBS"; then
- echo $ac_n "checking for db3 major version""... $ac_c" 1>&6
--echo "configure:24695: checking for db3 major version" >&5
-+echo "configure:24699: checking for db3 major version" >&5
- { echo "configure: error: Header contains different version" 1>&2; exit 1; }
- fi
- if test "3" = "4"; then
- echo $ac_n "checking for db4 minor version and patch level""... $ac_c" 1>&6
--echo "configure:24700: checking for db4 minor version and patch level" >&5
-+echo "configure:24704: checking for db4 minor version and patch level" >&5
- cat > conftest.$ac_ext <<EOF
--#line 24702 "configure"
-+#line 24706 "configure"
- #include "confdefs.h"
-
- #include "$THIS_INCLUDE"
-@@ -24724,9 +24728,9 @@
- fi
- if test "$ext_shared" = "yes"; then
- echo $ac_n "checking if dba can be used as shared extension""... $ac_c" 1>&6
--echo "configure:24728: checking if dba can be used as shared extension" >&5
-+echo "configure:24732: checking if dba can be used as shared extension" >&5
- cat > conftest.$ac_ext <<EOF
--#line 24730 "configure"
-+#line 24734 "configure"
- #include "confdefs.h"
-
- #include "$THIS_INCLUDE"
-@@ -24888,7 +24892,7 @@
- THIS_FULL_NAME="$THIS_NAME"
- fi
- echo $ac_n "checking for $THIS_FULL_NAME support""... $ac_c" 1>&6
--echo "configure:24892: checking for $THIS_FULL_NAME support" >&5
-+echo "configure:24896: checking for $THIS_FULL_NAME support" >&5
- if test -n ""; then
- { echo "configure: error: " 1>&2; exit 1; }
- fi
-@@ -24919,7 +24923,7 @@
- THIS_FULL_NAME="$THIS_NAME"
- fi
- echo $ac_n "checking for $THIS_FULL_NAME support""... $ac_c" 1>&6
--echo "configure:24923: checking for $THIS_FULL_NAME support" >&5
-+echo "configure:24927: checking for $THIS_FULL_NAME support" >&5
- if test -n "You cannot combine --with-db2 with --with-db3 or --with-db4"; then
- { echo "configure: error: You cannot combine --with-db2 with --with-db3 or --with-db4" 1>&2; exit 1; }
- fi
-@@ -24966,7 +24970,7 @@
- LIBS="-l$LIB $LIBS"
-
- cat > conftest.$ac_ext <<EOF
--#line 24970 "configure"
-+#line 24974 "configure"
- #include "confdefs.h"
-
- #include "$THIS_INCLUDE"
-@@ -24977,11 +24981,11 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:24981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:24985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- cat > conftest.$ac_ext <<EOF
--#line 24985 "configure"
-+#line 24989 "configure"
- #include "confdefs.h"
-
- #include "$THIS_INCLUDE"
-@@ -25014,14 +25018,14 @@
- done
- if test -z "$THIS_LIBS"; then
- echo $ac_n "checking for db2 major version""... $ac_c" 1>&6
--echo "configure:25018: checking for db2 major version" >&5
-+echo "configure:25022: checking for db2 major version" >&5
- { echo "configure: error: Header contains different version" 1>&2; exit 1; }
- fi
- if test "2" = "4"; then
- echo $ac_n "checking for db4 minor version and patch level""... $ac_c" 1>&6
--echo "configure:25023: checking for db4 minor version and patch level" >&5
-+echo "configure:25027: checking for db4 minor version and patch level" >&5
- cat > conftest.$ac_ext <<EOF
--#line 25025 "configure"
-+#line 25029 "configure"
- #include "confdefs.h"
-
- #include "$THIS_INCLUDE"
-@@ -25047,9 +25051,9 @@
- fi
- if test "$ext_shared" = "yes"; then
- echo $ac_n "checking if dba can be used as shared extension""... $ac_c" 1>&6
--echo "configure:25051: checking if dba can be used as shared extension" >&5
-+echo "configure:25055: checking if dba can be used as shared extension" >&5
- cat > conftest.$ac_ext <<EOF
--#line 25053 "configure"
-+#line 25057 "configure"
- #include "confdefs.h"
-
- #include "$THIS_INCLUDE"
-@@ -25211,7 +25215,7 @@
- THIS_FULL_NAME="$THIS_NAME"
- fi
- echo $ac_n "checking for $THIS_FULL_NAME support""... $ac_c" 1>&6
--echo "configure:25215: checking for $THIS_FULL_NAME support" >&5
-+echo "configure:25219: checking for $THIS_FULL_NAME support" >&5
- if test -n ""; then
- { echo "configure: error: " 1>&2; exit 1; }
- fi
-@@ -25326,7 +25330,7 @@
- done
-
- echo $ac_n "checking for dbminit in -l$LIB""... $ac_c" 1>&6
--echo "configure:25330: checking for dbminit in -l$LIB" >&5
-+echo "configure:25334: checking for dbminit in -l$LIB" >&5
- ac_lib_var=`echo $LIB'_'dbminit | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -25334,7 +25338,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$LIB $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 25338 "configure"
-+#line 25342 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -25345,7 +25349,7 @@
- dbminit()
- ; return 0; }
- EOF
--if { (eval echo configure:25349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:25353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -25365,7 +25369,7 @@
- ext_shared=$save_ext_shared
-
- echo $ac_n "checking for DBM using GDBM""... $ac_c" 1>&6
--echo "configure:25369: checking for DBM using GDBM" >&5
-+echo "configure:25373: checking for DBM using GDBM" >&5
- cat >> confdefs.h <<EOF
- #define DBM_INCLUDE_FILE "$THIS_INCLUDE"
- EOF
-@@ -25531,7 +25535,7 @@
- THIS_FULL_NAME="$THIS_NAME"
- fi
- echo $ac_n "checking for $THIS_FULL_NAME support""... $ac_c" 1>&6
--echo "configure:25535: checking for $THIS_FULL_NAME support" >&5
-+echo "configure:25539: checking for $THIS_FULL_NAME support" >&5
- if test -n ""; then
- { echo "configure: error: " 1>&2; exit 1; }
- fi
-@@ -25661,7 +25665,7 @@
- done
-
- echo $ac_n "checking for cdb_read in -l$LIB""... $ac_c" 1>&6
--echo "configure:25665: checking for cdb_read in -l$LIB" >&5
-+echo "configure:25669: checking for cdb_read in -l$LIB" >&5
- ac_lib_var=`echo $LIB'_'cdb_read | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -25669,7 +25673,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$LIB $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 25673 "configure"
-+#line 25677 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -25680,7 +25684,7 @@
- cdb_read()
- ; return 0; }
- EOF
--if { (eval echo configure:25684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:25688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -25872,7 +25876,7 @@
- THIS_FULL_NAME="$THIS_NAME"
- fi
- echo $ac_n "checking for $THIS_FULL_NAME support""... $ac_c" 1>&6
--echo "configure:25876: checking for $THIS_FULL_NAME support" >&5
-+echo "configure:25880: checking for $THIS_FULL_NAME support" >&5
- if test -n ""; then
- { echo "configure: error: " 1>&2; exit 1; }
- fi
-@@ -25926,7 +25930,7 @@
- THIS_FULL_NAME="$THIS_NAME"
- fi
- echo $ac_n "checking for $THIS_FULL_NAME support""... $ac_c" 1>&6
--echo "configure:25930: checking for $THIS_FULL_NAME support" >&5
-+echo "configure:25934: checking for $THIS_FULL_NAME support" >&5
- if test -n ""; then
- { echo "configure: error: " 1>&2; exit 1; }
- fi
-@@ -25980,7 +25984,7 @@
- THIS_FULL_NAME="$THIS_NAME"
- fi
- echo $ac_n "checking for $THIS_FULL_NAME support""... $ac_c" 1>&6
--echo "configure:25984: checking for $THIS_FULL_NAME support" >&5
-+echo "configure:25988: checking for $THIS_FULL_NAME support" >&5
- if test -n ""; then
- { echo "configure: error: " 1>&2; exit 1; }
- fi
-@@ -25995,7 +25999,7 @@
-
-
- echo $ac_n "checking whether to enable DBA interface""... $ac_c" 1>&6
--echo "configure:25999: checking whether to enable DBA interface" >&5
-+echo "configure:26003: checking whether to enable DBA interface" >&5
- if test "$HAVE_DBA" = "1"; then
- echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-@@ -26250,7 +26254,7 @@
-
-
- echo $ac_n "checking whether to enable dbase support""... $ac_c" 1>&6
--echo "configure:26254: checking whether to enable dbase support" >&5
-+echo "configure:26258: checking whether to enable dbase support" >&5
- # Check whether --enable-dbase or --disable-dbase was given.
- if test "${enable_dbase+set}" = set; then
- enableval="$enable_dbase"
-@@ -26525,7 +26529,7 @@
-
-
- echo $ac_n "checking whether to enable dbx support""... $ac_c" 1>&6
--echo "configure:26529: checking whether to enable dbx support" >&5
-+echo "configure:26533: checking whether to enable dbx support" >&5
- # Check whether --enable-dbx or --disable-dbx was given.
- if test "${enable_dbx+set}" = set; then
- enableval="$enable_dbx"
-@@ -26796,7 +26800,7 @@
-
-
- echo $ac_n "checking whether to enable direct I/O support""... $ac_c" 1>&6
--echo "configure:26800: checking whether to enable direct I/O support" >&5
-+echo "configure:26804: checking whether to enable direct I/O support" >&5
- # Check whether --enable-dio or --disable-dio was given.
- if test "${enable_dio+set}" = set; then
- enableval="$enable_dio"
-@@ -27069,7 +27073,7 @@
-
-
- echo $ac_n "checking for DOM support""... $ac_c" 1>&6
--echo "configure:27073: checking for DOM support" >&5
-+echo "configure:27077: checking for DOM support" >&5
- # Check whether --with-dom or --without-dom was given.
- if test "${with_dom+set}" = set; then
- withval="$with_dom"
-@@ -27116,7 +27120,7 @@
-
-
- echo $ac_n "checking for the location of libz""... $ac_c" 1>&6
--echo "configure:27120: checking for the location of libz" >&5
-+echo "configure:27124: checking for the location of libz" >&5
- # Check whether --with-zlib-dir or --without-zlib-dir was given.
- if test "${with_zlib_dir+set}" = set; then
- withval="$with_zlib_dir"
-@@ -27163,9 +27167,9 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS=-I$DOMXML_DIR/include$DOMXML_DIR_ADD
- echo $ac_n "checking for libxml version""... $ac_c" 1>&6
--echo "configure:27167: checking for libxml version" >&5
-+echo "configure:27171: checking for libxml version" >&5
- cat > conftest.$ac_ext <<EOF
--#line 27169 "configure"
-+#line 27173 "configure"
- #include "confdefs.h"
-
- #include <libxml/xmlversion.h>
-@@ -27742,7 +27746,7 @@
-
-
- echo $ac_n "checking for DOM XSLT support""... $ac_c" 1>&6
--echo "configure:27746: checking for DOM XSLT support" >&5
-+echo "configure:27750: checking for DOM XSLT support" >&5
- # Check whether --with-dom-xslt or --without-dom-xslt was given.
- if test "${with_dom_xslt+set}" = set; then
- withval="$with_dom_xslt"
-@@ -27767,7 +27771,7 @@
-
-
- echo $ac_n "checking for DOM EXSLT support""... $ac_c" 1>&6
--echo "configure:27771: checking for DOM EXSLT support" >&5
-+echo "configure:27775: checking for DOM EXSLT support" >&5
- # Check whether --with-dom-exslt or --without-dom-exslt was given.
- if test "${with_dom_exslt+set}" = set; then
- withval="$with_dom_exslt"
-@@ -27808,9 +27812,9 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS=-I$DOMXSLT_DIR/include
- echo $ac_n "checking for libxslt version""... $ac_c" 1>&6
--echo "configure:27812: checking for libxslt version" >&5
-+echo "configure:27816: checking for libxslt version" >&5
- cat > conftest.$ac_ext <<EOF
--#line 27814 "configure"
-+#line 27818 "configure"
- #include "confdefs.h"
-
- #include <libxslt/xsltconfig.h>
-@@ -28238,9 +28242,9 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS=-I$DOMEXSLT_DIR/include
- echo $ac_n "checking for libexslt version""... $ac_c" 1>&6
--echo "configure:28242: checking for libexslt version" >&5
-+echo "configure:28246: checking for libexslt version" >&5
- cat > conftest.$ac_ext <<EOF
--#line 28244 "configure"
-+#line 28248 "configure"
- #include "confdefs.h"
-
- #include <libexslt/exsltconfig.h>
-@@ -28410,7 +28414,7 @@
-
-
- echo $ac_n "checking whether to enable EXIF (metadata from images) support""... $ac_c" 1>&6
--echo "configure:28414: checking whether to enable EXIF (metadata from images) support" >&5
-+echo "configure:28418: checking whether to enable EXIF (metadata from images) support" >&5
- # Check whether --enable-exif or --disable-exif was given.
- if test "${enable_exif+set}" = set; then
- enableval="$enable_exif"
-@@ -28685,7 +28689,7 @@
-
-
- echo $ac_n "checking for FrontBase SQL92 (fbsql) support""... $ac_c" 1>&6
--echo "configure:28689: checking for FrontBase SQL92 (fbsql) support" >&5
-+echo "configure:28693: checking for FrontBase SQL92 (fbsql) support" >&5
- # Check whether --with-fbsql or --without-fbsql was given.
- if test "${with_fbsql+set}" = set; then
- withval="$with_fbsql"
-@@ -29119,7 +29123,7 @@
-
-
- echo $ac_n "checking for FDF support""... $ac_c" 1>&6
--echo "configure:29123: checking for FDF support" >&5
-+echo "configure:29127: checking for FDF support" >&5
- # Check whether --with-fdftk or --without-fdftk was given.
- if test "${with_fdftk+set}" = set; then
- withval="$with_fdftk"
-@@ -29320,7 +29324,7 @@
- done
-
- echo $ac_n "checking for FDFOpen in -l$file""... $ac_c" 1>&6
--echo "configure:29324: checking for FDFOpen in -l$file" >&5
-+echo "configure:29328: checking for FDFOpen in -l$file" >&5
- ac_lib_var=`echo $file'_'FDFOpen | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -29328,7 +29332,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$file $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 29332 "configure"
-+#line 29336 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -29339,7 +29343,7 @@
- FDFOpen()
- ; return 0; }
- EOF
--if { (eval echo configure:29343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:29347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -29449,7 +29453,7 @@
- done
-
- echo $ac_n "checking for FDFGetFDFVersion in -l$file""... $ac_c" 1>&6
--echo "configure:29453: checking for FDFGetFDFVersion in -l$file" >&5
-+echo "configure:29457: checking for FDFGetFDFVersion in -l$file" >&5
- ac_lib_var=`echo $file'_'FDFGetFDFVersion | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -29457,7 +29461,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$file $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 29461 "configure"
-+#line 29465 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -29468,7 +29472,7 @@
- FDFGetFDFVersion()
- ; return 0; }
- EOF
--if { (eval echo configure:29472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:29476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -29843,7 +29847,7 @@
-
-
- echo $ac_n "checking whether to enable the bundled filePro support""... $ac_c" 1>&6
--echo "configure:29847: checking whether to enable the bundled filePro support" >&5
-+echo "configure:29851: checking whether to enable the bundled filePro support" >&5
- # Check whether --enable-filepro or --disable-filepro was given.
- if test "${enable_filepro+set}" = set; then
- enableval="$enable_filepro"
-@@ -30118,7 +30122,7 @@
-
-
- echo $ac_n "checking for FriBidi support""... $ac_c" 1>&6
--echo "configure:30122: checking for FriBidi support" >&5
-+echo "configure:30126: checking for FriBidi support" >&5
- # Check whether --with-fribidi or --without-fribidi was given.
- if test "${with_fribidi+set}" = set; then
- withval="$with_fribidi"
-@@ -30167,7 +30171,7 @@
- # Extract the first word of "fribidi-config", so it can be a program name with args.
- set dummy fribidi-config; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:30171: checking for $ac_word" >&5
-+echo "configure:30175: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_FRIBIDI_CONFIG'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -30204,7 +30208,7 @@
- fi
-
- echo $ac_n "checking for FriBidi version""... $ac_c" 1>&6
--echo "configure:30208: checking for FriBidi version" >&5
-+echo "configure:30212: checking for FriBidi version" >&5
-
- if test ! -x "$FRIBIDI_CONFIG"; then
- { echo "configure: error: fribidi-config not found." 1>&2; exit 1; }
-@@ -30573,7 +30577,7 @@
-
-
- echo $ac_n "checking whether to enable FTP support""... $ac_c" 1>&6
--echo "configure:30577: checking whether to enable FTP support" >&5
-+echo "configure:30581: checking whether to enable FTP support" >&5
- # Check whether --enable-ftp or --disable-ftp was given.
- if test "${enable_ftp+set}" = set; then
- enableval="$enable_ftp"
-@@ -30849,7 +30853,7 @@
-
-
- echo $ac_n "checking for GD support""... $ac_c" 1>&6
--echo "configure:30853: checking for GD support" >&5
-+echo "configure:30857: checking for GD support" >&5
- # Check whether --with-gd or --without-gd was given.
- if test "${with_gd+set}" = set; then
- withval="$with_gd"
-@@ -30896,7 +30900,7 @@
-
-
- echo $ac_n "checking for the location of libjpeg""... $ac_c" 1>&6
--echo "configure:30900: checking for the location of libjpeg" >&5
-+echo "configure:30904: checking for the location of libjpeg" >&5
- # Check whether --with-jpeg-dir or --without-jpeg-dir was given.
- if test "${with_jpeg_dir+set}" = set; then
- withval="$with_jpeg_dir"
-@@ -30923,7 +30927,7 @@
-
-
- echo $ac_n "checking for the location of libpng""... $ac_c" 1>&6
--echo "configure:30927: checking for the location of libpng" >&5
-+echo "configure:30931: checking for the location of libpng" >&5
- # Check whether --with-png-dir or --without-png-dir was given.
- if test "${with_png_dir+set}" = set; then
- withval="$with_png_dir"
-@@ -30950,7 +30954,7 @@
-
-
- echo $ac_n "checking for the location of libz""... $ac_c" 1>&6
--echo "configure:30954: checking for the location of libz" >&5
-+echo "configure:30958: checking for the location of libz" >&5
- # Check whether --with-zlib-dir or --without-zlib-dir was given.
- if test "${with_zlib_dir+set}" = set; then
- withval="$with_zlib_dir"
-@@ -30976,7 +30980,7 @@
-
-
- echo $ac_n "checking for the location of libXpm""... $ac_c" 1>&6
--echo "configure:30980: checking for the location of libXpm" >&5
-+echo "configure:30984: checking for the location of libXpm" >&5
- # Check whether --with-xpm-dir or --without-xpm-dir was given.
- if test "${with_xpm_dir+set}" = set; then
- withval="$with_xpm_dir"
-@@ -31001,7 +31005,7 @@
-
-
- echo $ac_n "checking for FreeType 1.x support""... $ac_c" 1>&6
--echo "configure:31005: checking for FreeType 1.x support" >&5
-+echo "configure:31009: checking for FreeType 1.x support" >&5
- # Check whether --with-ttf or --without-ttf was given.
- if test "${with_ttf+set}" = set; then
- withval="$with_ttf"
-@@ -31026,7 +31030,7 @@
-
-
- echo $ac_n "checking for FreeType 2""... $ac_c" 1>&6
--echo "configure:31030: checking for FreeType 2" >&5
-+echo "configure:31034: checking for FreeType 2" >&5
- # Check whether --with-freetype-dir or --without-freetype-dir was given.
- if test "${with_freetype_dir+set}" = set; then
- withval="$with_freetype_dir"
-@@ -31051,7 +31055,7 @@
-
-
- echo $ac_n "checking for T1lib support""... $ac_c" 1>&6
--echo "configure:31055: checking for T1lib support" >&5
-+echo "configure:31059: checking for T1lib support" >&5
- # Check whether --with-t1lib or --without-t1lib was given.
- if test "${with_t1lib+set}" = set; then
- withval="$with_t1lib"
-@@ -31076,7 +31080,7 @@
-
-
- echo $ac_n "checking whether to enable truetype string function in GD""... $ac_c" 1>&6
--echo "configure:31080: checking whether to enable truetype string function in GD" >&5
-+echo "configure:31084: checking whether to enable truetype string function in GD" >&5
- # Check whether --enable-gd-native-ttf or --disable-gd-native-ttf was given.
- if test "${enable_gd_native_ttf+set}" = set; then
- enableval="$enable_gd_native_ttf"
-@@ -31101,7 +31105,7 @@
-
-
- echo $ac_n "checking whether to enable JIS-mapped Japanese font support in GD""... $ac_c" 1>&6
--echo "configure:31105: checking whether to enable JIS-mapped Japanese font support in GD" >&5
-+echo "configure:31109: checking whether to enable JIS-mapped Japanese font support in GD" >&5
- # Check whether --enable-gd-jis-conv or --disable-gd-jis-conv was given.
- if test "${enable_gd_jis_conv+set}" = set; then
- enableval="$enable_gd_jis_conv"
-@@ -31155,12 +31159,12 @@
- for ac_func in fabsf floorf
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:31159: checking for $ac_func" >&5
-+echo "configure:31163: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 31164 "configure"
-+#line 31168 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -31183,7 +31187,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:31187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:31191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -31315,7 +31319,7 @@
- done
-
- echo $ac_n "checking for jpeg_read_header in -ljpeg""... $ac_c" 1>&6
--echo "configure:31319: checking for jpeg_read_header in -ljpeg" >&5
-+echo "configure:31323: checking for jpeg_read_header in -ljpeg" >&5
- ac_lib_var=`echo jpeg'_'jpeg_read_header | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -31323,7 +31327,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ljpeg $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 31327 "configure"
-+#line 31331 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -31334,7 +31338,7 @@
- jpeg_read_header()
- ; return 0; }
- EOF
--if { (eval echo configure:31338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:31342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -31598,7 +31602,7 @@
- done
-
- echo $ac_n "checking for png_write_image in -lpng""... $ac_c" 1>&6
--echo "configure:31602: checking for png_write_image in -lpng" >&5
-+echo "configure:31606: checking for png_write_image in -lpng" >&5
- ac_lib_var=`echo png'_'png_write_image | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -31606,7 +31610,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpng $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 31610 "configure"
-+#line 31614 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -31617,7 +31621,7 @@
- png_write_image()
- ; return 0; }
- EOF
--if { (eval echo configure:31621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:31625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -31978,7 +31982,7 @@
- done
-
- echo $ac_n "checking for XpmFreeXpmImage in -lXpm""... $ac_c" 1>&6
--echo "configure:31982: checking for XpmFreeXpmImage in -lXpm" >&5
-+echo "configure:31986: checking for XpmFreeXpmImage in -lXpm" >&5
- ac_lib_var=`echo Xpm'_'XpmFreeXpmImage | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -31986,7 +31990,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lXpm $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 31990 "configure"
-+#line 31994 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -31997,7 +32001,7 @@
- XpmFreeXpmImage()
- ; return 0; }
- EOF
--if { (eval echo configure:32001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:32005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -32695,7 +32699,7 @@
- done
-
- echo $ac_n "checking for T1_LoadFont in -lt1""... $ac_c" 1>&6
--echo "configure:32699: checking for T1_LoadFont in -lt1" >&5
-+echo "configure:32703: checking for T1_LoadFont in -lt1" >&5
- ac_lib_var=`echo t1'_'T1_LoadFont | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -32703,7 +32707,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lt1 $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 32707 "configure"
-+#line 32711 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -32714,7 +32718,7 @@
- T1_LoadFont()
- ; return 0; }
- EOF
--if { (eval echo configure:32718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:32722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -33107,7 +33111,7 @@
- done
-
- echo $ac_n "checking for jpeg_read_header in -ljpeg""... $ac_c" 1>&6
--echo "configure:33111: checking for jpeg_read_header in -ljpeg" >&5
-+echo "configure:33115: checking for jpeg_read_header in -ljpeg" >&5
- ac_lib_var=`echo jpeg'_'jpeg_read_header | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -33115,7 +33119,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ljpeg $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 33119 "configure"
-+#line 33123 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -33126,7 +33130,7 @@
- jpeg_read_header()
- ; return 0; }
- EOF
--if { (eval echo configure:33130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:33134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -33390,7 +33394,7 @@
- done
-
- echo $ac_n "checking for png_write_image in -lpng""... $ac_c" 1>&6
--echo "configure:33394: checking for png_write_image in -lpng" >&5
-+echo "configure:33398: checking for png_write_image in -lpng" >&5
- ac_lib_var=`echo png'_'png_write_image | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -33398,7 +33402,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpng $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 33402 "configure"
-+#line 33406 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -33409,7 +33413,7 @@
- png_write_image()
- ; return 0; }
- EOF
--if { (eval echo configure:33413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:33417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -33770,7 +33774,7 @@
- done
-
- echo $ac_n "checking for XpmFreeXpmImage in -lXpm""... $ac_c" 1>&6
--echo "configure:33774: checking for XpmFreeXpmImage in -lXpm" >&5
-+echo "configure:33778: checking for XpmFreeXpmImage in -lXpm" >&5
- ac_lib_var=`echo Xpm'_'XpmFreeXpmImage | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -33778,7 +33782,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lXpm $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 33782 "configure"
-+#line 33786 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -33789,7 +33793,7 @@
- XpmFreeXpmImage()
- ; return 0; }
- EOF
--if { (eval echo configure:33793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:33797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -34487,7 +34491,7 @@
- done
-
- echo $ac_n "checking for T1_LoadFont in -lt1""... $ac_c" 1>&6
--echo "configure:34491: checking for T1_LoadFont in -lt1" >&5
-+echo "configure:34495: checking for T1_LoadFont in -lt1" >&5
- ac_lib_var=`echo t1'_'T1_LoadFont | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -34495,7 +34499,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lt1 $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 34499 "configure"
-+#line 34503 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -34506,7 +34510,7 @@
- T1_LoadFont()
- ; return 0; }
- EOF
--if { (eval echo configure:34510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:34514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -34862,7 +34866,7 @@
- done
-
- echo $ac_n "checking for gdImageString16 in -lgd""... $ac_c" 1>&6
--echo "configure:34866: checking for gdImageString16 in -lgd" >&5
-+echo "configure:34870: checking for gdImageString16 in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageString16 | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -34870,7 +34874,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 34874 "configure"
-+#line 34878 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -34881,7 +34885,7 @@
- gdImageString16()
- ; return 0; }
- EOF
--if { (eval echo configure:34885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:34889: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -34993,7 +34997,7 @@
- done
-
- echo $ac_n "checking for gdImagePaletteCopy in -lgd""... $ac_c" 1>&6
--echo "configure:34997: checking for gdImagePaletteCopy in -lgd" >&5
-+echo "configure:35001: checking for gdImagePaletteCopy in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImagePaletteCopy | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -35001,7 +35005,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 35005 "configure"
-+#line 35009 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -35012,7 +35016,7 @@
- gdImagePaletteCopy()
- ; return 0; }
- EOF
--if { (eval echo configure:35016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:35020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -35124,7 +35128,7 @@
- done
-
- echo $ac_n "checking for gdImageCreateFromPng in -lgd""... $ac_c" 1>&6
--echo "configure:35128: checking for gdImageCreateFromPng in -lgd" >&5
-+echo "configure:35132: checking for gdImageCreateFromPng in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageCreateFromPng | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -35132,7 +35136,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 35136 "configure"
-+#line 35140 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -35143,7 +35147,7 @@
- gdImageCreateFromPng()
- ; return 0; }
- EOF
--if { (eval echo configure:35147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:35151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -35255,7 +35259,7 @@
- done
-
- echo $ac_n "checking for gdImageCreateFromGif in -lgd""... $ac_c" 1>&6
--echo "configure:35259: checking for gdImageCreateFromGif in -lgd" >&5
-+echo "configure:35263: checking for gdImageCreateFromGif in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageCreateFromGif | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -35263,7 +35267,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 35267 "configure"
-+#line 35271 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -35274,7 +35278,7 @@
- gdImageCreateFromGif()
- ; return 0; }
- EOF
--if { (eval echo configure:35278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:35282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -35386,7 +35390,7 @@
- done
-
- echo $ac_n "checking for gdImageGif in -lgd""... $ac_c" 1>&6
--echo "configure:35390: checking for gdImageGif in -lgd" >&5
-+echo "configure:35394: checking for gdImageGif in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageGif | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -35394,7 +35398,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 35398 "configure"
-+#line 35402 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -35405,7 +35409,7 @@
- gdImageGif()
- ; return 0; }
- EOF
--if { (eval echo configure:35409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:35413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -35517,7 +35521,7 @@
- done
-
- echo $ac_n "checking for gdImageWBMP in -lgd""... $ac_c" 1>&6
--echo "configure:35521: checking for gdImageWBMP in -lgd" >&5
-+echo "configure:35525: checking for gdImageWBMP in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageWBMP | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -35525,7 +35529,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 35529 "configure"
-+#line 35533 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -35536,7 +35540,7 @@
- gdImageWBMP()
- ; return 0; }
- EOF
--if { (eval echo configure:35540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:35544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -35648,7 +35652,7 @@
- done
-
- echo $ac_n "checking for gdImageCreateFromJpeg in -lgd""... $ac_c" 1>&6
--echo "configure:35652: checking for gdImageCreateFromJpeg in -lgd" >&5
-+echo "configure:35656: checking for gdImageCreateFromJpeg in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageCreateFromJpeg | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -35656,7 +35660,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 35660 "configure"
-+#line 35664 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -35667,7 +35671,7 @@
- gdImageCreateFromJpeg()
- ; return 0; }
- EOF
--if { (eval echo configure:35671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:35675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -35779,7 +35783,7 @@
- done
-
- echo $ac_n "checking for gdImageCreateFromXpm in -lgd""... $ac_c" 1>&6
--echo "configure:35783: checking for gdImageCreateFromXpm in -lgd" >&5
-+echo "configure:35787: checking for gdImageCreateFromXpm in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageCreateFromXpm | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -35787,7 +35791,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 35791 "configure"
-+#line 35795 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -35798,7 +35802,7 @@
- gdImageCreateFromXpm()
- ; return 0; }
- EOF
--if { (eval echo configure:35802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:35806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -35910,7 +35914,7 @@
- done
-
- echo $ac_n "checking for gdImageCreateFromGd2 in -lgd""... $ac_c" 1>&6
--echo "configure:35914: checking for gdImageCreateFromGd2 in -lgd" >&5
-+echo "configure:35918: checking for gdImageCreateFromGd2 in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageCreateFromGd2 | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -35918,7 +35922,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 35922 "configure"
-+#line 35926 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -35929,7 +35933,7 @@
- gdImageCreateFromGd2()
- ; return 0; }
- EOF
--if { (eval echo configure:35933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:35937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -36041,7 +36045,7 @@
- done
-
- echo $ac_n "checking for gdImageCreateTrueColor in -lgd""... $ac_c" 1>&6
--echo "configure:36045: checking for gdImageCreateTrueColor in -lgd" >&5
-+echo "configure:36049: checking for gdImageCreateTrueColor in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageCreateTrueColor | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -36049,7 +36053,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 36053 "configure"
-+#line 36057 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -36060,7 +36064,7 @@
- gdImageCreateTrueColor()
- ; return 0; }
- EOF
--if { (eval echo configure:36064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:36068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -36172,7 +36176,7 @@
- done
-
- echo $ac_n "checking for gdImageSetTile in -lgd""... $ac_c" 1>&6
--echo "configure:36176: checking for gdImageSetTile in -lgd" >&5
-+echo "configure:36180: checking for gdImageSetTile in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageSetTile | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -36180,7 +36184,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 36184 "configure"
-+#line 36188 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -36191,7 +36195,7 @@
- gdImageSetTile()
- ; return 0; }
- EOF
--if { (eval echo configure:36195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:36199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -36303,7 +36307,7 @@
- done
-
- echo $ac_n "checking for gdImageEllipse in -lgd""... $ac_c" 1>&6
--echo "configure:36307: checking for gdImageEllipse in -lgd" >&5
-+echo "configure:36311: checking for gdImageEllipse in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageEllipse | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -36311,7 +36315,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 36315 "configure"
-+#line 36319 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -36322,7 +36326,7 @@
- gdImageEllipse()
- ; return 0; }
- EOF
--if { (eval echo configure:36326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:36330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -36434,7 +36438,7 @@
- done
-
- echo $ac_n "checking for gdImageSetBrush in -lgd""... $ac_c" 1>&6
--echo "configure:36438: checking for gdImageSetBrush in -lgd" >&5
-+echo "configure:36442: checking for gdImageSetBrush in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageSetBrush | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -36442,7 +36446,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 36446 "configure"
-+#line 36450 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -36453,7 +36457,7 @@
- gdImageSetBrush()
- ; return 0; }
- EOF
--if { (eval echo configure:36457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:36461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -36565,7 +36569,7 @@
- done
-
- echo $ac_n "checking for gdImageStringTTF in -lgd""... $ac_c" 1>&6
--echo "configure:36569: checking for gdImageStringTTF in -lgd" >&5
-+echo "configure:36573: checking for gdImageStringTTF in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageStringTTF | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -36573,7 +36577,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 36577 "configure"
-+#line 36581 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -36584,7 +36588,7 @@
- gdImageStringTTF()
- ; return 0; }
- EOF
--if { (eval echo configure:36588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:36592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -36696,7 +36700,7 @@
- done
-
- echo $ac_n "checking for gdImageStringFT in -lgd""... $ac_c" 1>&6
--echo "configure:36700: checking for gdImageStringFT in -lgd" >&5
-+echo "configure:36704: checking for gdImageStringFT in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageStringFT | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -36704,7 +36708,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 36708 "configure"
-+#line 36712 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -36715,7 +36719,7 @@
- gdImageStringFT()
- ; return 0; }
- EOF
--if { (eval echo configure:36719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:36723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -36827,7 +36831,7 @@
- done
-
- echo $ac_n "checking for gdImageStringFTEx in -lgd""... $ac_c" 1>&6
--echo "configure:36831: checking for gdImageStringFTEx in -lgd" >&5
-+echo "configure:36835: checking for gdImageStringFTEx in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageStringFTEx | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -36835,7 +36839,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 36839 "configure"
-+#line 36843 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -36846,7 +36850,7 @@
- gdImageStringFTEx()
- ; return 0; }
- EOF
--if { (eval echo configure:36850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:36854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -36958,7 +36962,7 @@
- done
-
- echo $ac_n "checking for gdImageColorClosestHWB in -lgd""... $ac_c" 1>&6
--echo "configure:36962: checking for gdImageColorClosestHWB in -lgd" >&5
-+echo "configure:36966: checking for gdImageColorClosestHWB in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageColorClosestHWB | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -36966,7 +36970,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 36970 "configure"
-+#line 36974 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -36977,7 +36981,7 @@
- gdImageColorClosestHWB()
- ; return 0; }
- EOF
--if { (eval echo configure:36981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:36985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -37089,7 +37093,7 @@
- done
-
- echo $ac_n "checking for gdImageColorResolve in -lgd""... $ac_c" 1>&6
--echo "configure:37093: checking for gdImageColorResolve in -lgd" >&5
-+echo "configure:37097: checking for gdImageColorResolve in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageColorResolve | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -37097,7 +37101,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 37101 "configure"
-+#line 37105 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -37108,7 +37112,7 @@
- gdImageColorResolve()
- ; return 0; }
- EOF
--if { (eval echo configure:37112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:37116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -37220,7 +37224,7 @@
- done
-
- echo $ac_n "checking for gdImageGifCtx in -lgd""... $ac_c" 1>&6
--echo "configure:37224: checking for gdImageGifCtx in -lgd" >&5
-+echo "configure:37228: checking for gdImageGifCtx in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageGifCtx | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -37228,7 +37232,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 37232 "configure"
-+#line 37236 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -37239,7 +37243,7 @@
- gdImageGifCtx()
- ; return 0; }
- EOF
--if { (eval echo configure:37243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:37247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -37351,7 +37355,7 @@
- done
-
- echo $ac_n "checking for gdCacheCreate in -lgd""... $ac_c" 1>&6
--echo "configure:37355: checking for gdCacheCreate in -lgd" >&5
-+echo "configure:37359: checking for gdCacheCreate in -lgd" >&5
- ac_lib_var=`echo gd'_'gdCacheCreate | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -37359,7 +37363,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 37363 "configure"
-+#line 37367 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -37370,7 +37374,7 @@
- gdCacheCreate()
- ; return 0; }
- EOF
--if { (eval echo configure:37374: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:37378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -37482,7 +37486,7 @@
- done
-
- echo $ac_n "checking for gdFontCacheShutdown in -lgd""... $ac_c" 1>&6
--echo "configure:37486: checking for gdFontCacheShutdown in -lgd" >&5
-+echo "configure:37490: checking for gdFontCacheShutdown in -lgd" >&5
- ac_lib_var=`echo gd'_'gdFontCacheShutdown | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -37490,7 +37494,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 37494 "configure"
-+#line 37498 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -37501,7 +37505,7 @@
- gdFontCacheShutdown()
- ; return 0; }
- EOF
--if { (eval echo configure:37505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:37509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -37613,7 +37617,7 @@
- done
-
- echo $ac_n "checking for gdFreeFontCache in -lgd""... $ac_c" 1>&6
--echo "configure:37617: checking for gdFreeFontCache in -lgd" >&5
-+echo "configure:37621: checking for gdFreeFontCache in -lgd" >&5
- ac_lib_var=`echo gd'_'gdFreeFontCache | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -37621,7 +37625,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 37625 "configure"
-+#line 37629 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -37632,7 +37636,7 @@
- gdFreeFontCache()
- ; return 0; }
- EOF
--if { (eval echo configure:37636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:37640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -37744,7 +37748,7 @@
- done
-
- echo $ac_n "checking for gdNewDynamicCtxEx in -lgd""... $ac_c" 1>&6
--echo "configure:37748: checking for gdNewDynamicCtxEx in -lgd" >&5
-+echo "configure:37752: checking for gdNewDynamicCtxEx in -lgd" >&5
- ac_lib_var=`echo gd'_'gdNewDynamicCtxEx | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -37752,7 +37756,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 37756 "configure"
-+#line 37760 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -37763,7 +37767,7 @@
- gdNewDynamicCtxEx()
- ; return 0; }
- EOF
--if { (eval echo configure:37767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:37771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -37818,7 +37822,7 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS=-I$GD_INCLUDE
- cat > conftest.$ac_ext <<EOF
--#line 37822 "configure"
-+#line 37826 "configure"
- #include "confdefs.h"
-
- #include <gd.h>
-@@ -37832,7 +37836,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:37836: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:37840: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- cat >> confdefs.h <<\EOF
-@@ -38191,7 +38195,7 @@
- done
-
- echo $ac_n "checking for gdImageCreate in -lgd""... $ac_c" 1>&6
--echo "configure:38195: checking for gdImageCreate in -lgd" >&5
-+echo "configure:38199: checking for gdImageCreate in -lgd" >&5
- ac_lib_var=`echo gd'_'gdImageCreate | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -38199,7 +38203,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgd $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 38203 "configure"
-+#line 38207 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -38210,7 +38214,7 @@
- gdImageCreate()
- ; return 0; }
- EOF
--if { (eval echo configure:38214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:38218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -38256,7 +38260,7 @@
-
-
- echo $ac_n "checking for GNU gettext support""... $ac_c" 1>&6
--echo "configure:38260: checking for GNU gettext support" >&5
-+echo "configure:38264: checking for GNU gettext support" >&5
- # Check whether --with-gettext or --without-gettext was given.
- if test "${with_gettext+set}" = set; then
- withval="$with_gettext"
-@@ -38314,7 +38318,7 @@
- O_LDFLAGS=$LDFLAGS
- LDFLAGS="$LDFLAGS -L$GETTEXT_LIBDIR"
- echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
--echo "configure:38318: checking for bindtextdomain in -lintl" >&5
-+echo "configure:38322: checking for bindtextdomain in -lintl" >&5
- ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -38322,7 +38326,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lintl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 38326 "configure"
-+#line 38330 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -38333,7 +38337,7 @@
- bindtextdomain()
- ; return 0; }
- EOF
--if { (eval echo configure:38337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:38341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -38355,7 +38359,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for bindtextdomain in -lc""... $ac_c" 1>&6
--echo "configure:38359: checking for bindtextdomain in -lc" >&5
-+echo "configure:38363: checking for bindtextdomain in -lc" >&5
- ac_lib_var=`echo c'_'bindtextdomain | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -38363,7 +38367,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lc $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 38367 "configure"
-+#line 38371 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -38374,7 +38378,7 @@
- bindtextdomain()
- ; return 0; }
- EOF
--if { (eval echo configure:38378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:38382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -38766,7 +38770,7 @@
-
-
- echo $ac_n "checking for ngettext in -l$GETTEXT_CHECK_IN_LIB""... $ac_c" 1>&6
--echo "configure:38770: checking for ngettext in -l$GETTEXT_CHECK_IN_LIB" >&5
-+echo "configure:38774: checking for ngettext in -l$GETTEXT_CHECK_IN_LIB" >&5
- ac_lib_var=`echo $GETTEXT_CHECK_IN_LIB'_'ngettext | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -38774,7 +38778,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$GETTEXT_CHECK_IN_LIB $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 38778 "configure"
-+#line 38782 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -38785,7 +38789,7 @@
- ngettext()
- ; return 0; }
- EOF
--if { (eval echo configure:38789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:38793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -38809,7 +38813,7 @@
- fi
-
- echo $ac_n "checking for dngettext in -l$GETTEXT_CHECK_IN_LIB""... $ac_c" 1>&6
--echo "configure:38813: checking for dngettext in -l$GETTEXT_CHECK_IN_LIB" >&5
-+echo "configure:38817: checking for dngettext in -l$GETTEXT_CHECK_IN_LIB" >&5
- ac_lib_var=`echo $GETTEXT_CHECK_IN_LIB'_'dngettext | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -38817,7 +38821,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$GETTEXT_CHECK_IN_LIB $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 38821 "configure"
-+#line 38825 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -38828,7 +38832,7 @@
- dngettext()
- ; return 0; }
- EOF
--if { (eval echo configure:38832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:38836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -38852,7 +38856,7 @@
- fi
-
- echo $ac_n "checking for dcngettext in -l$GETTEXT_CHECK_IN_LIB""... $ac_c" 1>&6
--echo "configure:38856: checking for dcngettext in -l$GETTEXT_CHECK_IN_LIB" >&5
-+echo "configure:38860: checking for dcngettext in -l$GETTEXT_CHECK_IN_LIB" >&5
- ac_lib_var=`echo $GETTEXT_CHECK_IN_LIB'_'dcngettext | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -38860,7 +38864,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$GETTEXT_CHECK_IN_LIB $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 38864 "configure"
-+#line 38868 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -38871,7 +38875,7 @@
- dcngettext()
- ; return 0; }
- EOF
--if { (eval echo configure:38875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:38879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -38895,7 +38899,7 @@
- fi
-
- echo $ac_n "checking for bind_textdomain_codeset in -l$GETTEXT_CHECK_IN_LIB""... $ac_c" 1>&6
--echo "configure:38899: checking for bind_textdomain_codeset in -l$GETTEXT_CHECK_IN_LIB" >&5
-+echo "configure:38903: checking for bind_textdomain_codeset in -l$GETTEXT_CHECK_IN_LIB" >&5
- ac_lib_var=`echo $GETTEXT_CHECK_IN_LIB'_'bind_textdomain_codeset | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -38903,7 +38907,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$GETTEXT_CHECK_IN_LIB $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 38907 "configure"
-+#line 38911 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -38914,7 +38918,7 @@
- bind_textdomain_codeset()
- ; return 0; }
- EOF
--if { (eval echo configure:38918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:38922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -38944,7 +38948,7 @@
-
-
- echo $ac_n "checking for GNU MP support""... $ac_c" 1>&6
--echo "configure:38948: checking for GNU MP support" >&5
-+echo "configure:38952: checking for GNU MP support" >&5
- # Check whether --with-gmp or --without-gmp was given.
- if test "${with_gmp+set}" = set; then
- withval="$with_gmp"
-@@ -39078,7 +39082,7 @@
- done
-
- echo $ac_n "checking for __gmp_randinit_lc_2exp_size in -lgmp""... $ac_c" 1>&6
--echo "configure:39082: checking for __gmp_randinit_lc_2exp_size in -lgmp" >&5
-+echo "configure:39086: checking for __gmp_randinit_lc_2exp_size in -lgmp" >&5
- ac_lib_var=`echo gmp'_'__gmp_randinit_lc_2exp_size | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -39086,7 +39090,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgmp $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 39090 "configure"
-+#line 39094 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -39097,7 +39101,7 @@
- __gmp_randinit_lc_2exp_size()
- ; return 0; }
- EOF
--if { (eval echo configure:39101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:39105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -39205,7 +39209,7 @@
- done
-
- echo $ac_n "checking for gmp_randinit_lc_2exp_size in -lgmp""... $ac_c" 1>&6
--echo "configure:39209: checking for gmp_randinit_lc_2exp_size in -lgmp" >&5
-+echo "configure:39213: checking for gmp_randinit_lc_2exp_size in -lgmp" >&5
- ac_lib_var=`echo gmp'_'gmp_randinit_lc_2exp_size | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -39213,7 +39217,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgmp $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 39217 "configure"
-+#line 39221 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -39224,7 +39228,7 @@
- gmp_randinit_lc_2exp_size()
- ; return 0; }
- EOF
--if { (eval echo configure:39228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:39232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -39623,7 +39627,7 @@
-
-
- echo $ac_n "checking for hwapi support""... $ac_c" 1>&6
--echo "configure:39627: checking for hwapi support" >&5
-+echo "configure:39631: checking for hwapi support" >&5
- # Check whether --with-hwapi or --without-hwapi was given.
- if test "${with_hwapi+set}" = set; then
- withval="$with_hwapi"
-@@ -39671,7 +39675,7 @@
- HWAPI_DIR=$PHP_HWAPI
- else
- echo $ac_n "checking for HWAPI in default path""... $ac_c" 1>&6
--echo "configure:39675: checking for HWAPI in default path" >&5
-+echo "configure:39679: checking for HWAPI in default path" >&5
- for i in /usr/local /usr; do
- if test -r $i/include/hwapi/sdk/api/object.h; then
- HWAPI_DIR=$i
-@@ -39827,7 +39831,7 @@
- # 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:39831: checking for $ac_word" >&5
-+echo "configure:39835: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -39859,7 +39863,7 @@
-
-
- echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
--echo "configure:39863: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
-+echo "configure:39867: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
-
- ac_ext=C
- # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-@@ -39870,12 +39874,12 @@
-
- cat > conftest.$ac_ext << EOF
-
--#line 39874 "configure"
-+#line 39878 "configure"
- #include "confdefs.h"
-
- int main(){return(0);}
- EOF
--if { (eval echo configure:39879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:39883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- ac_cv_prog_cxx_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
-@@ -39901,12 +39905,12 @@
- { 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 ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
--echo "configure:39905: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
-+echo "configure:39909: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
- echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
- cross_compiling=$ac_cv_prog_cxx_cross
-
- echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
--echo "configure:39910: checking whether we are using GNU C++" >&5
-+echo "configure:39914: checking whether we are using GNU C++" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -39915,7 +39919,7 @@
- yes;
- #endif
- EOF
--if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:39919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:39923: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gxx=yes
- else
- ac_cv_prog_gxx=no
-@@ -39934,7 +39938,7 @@
- ac_save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS=
- echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
--echo "configure:39938: checking whether ${CXX-g++} accepts -g" >&5
-+echo "configure:39942: checking whether ${CXX-g++} accepts -g" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -39966,7 +39970,7 @@
- fi
-
- echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
--echo "configure:39970: checking how to run the C++ preprocessor" >&5
-+echo "configure:39974: checking how to run the C++ preprocessor" >&5
- if test -z "$CXXCPP"; then
- if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -39979,12 +39983,12 @@
- cross_compiling=$ac_cv_prog_cxx_cross
- CXXCPP="${CXX-g++} -E"
- cat > conftest.$ac_ext <<EOF
--#line 39983 "configure"
-+#line 39987 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:39988: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:39992: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- :
-@@ -40297,7 +40301,7 @@
-
-
- echo $ac_n "checking for Hyperwave support""... $ac_c" 1>&6
--echo "configure:40301: checking for Hyperwave support" >&5
-+echo "configure:40305: checking for Hyperwave support" >&5
- # Check whether --with-hyperwave or --without-hyperwave was given.
- if test "${with_hyperwave+set}" = set; then
- withval="$with_hyperwave"
-@@ -40552,7 +40556,7 @@
-
-
- echo $ac_n "checking for iconv support""... $ac_c" 1>&6
--echo "configure:40556: checking for iconv support" >&5
-+echo "configure:40560: checking for iconv support" >&5
- # Check whether --with-iconv or --without-iconv was given.
- if test "${with_iconv+set}" = set; then
- withval="$with_iconv"
-@@ -40615,12 +40619,12 @@
-
- if test "$PHP_ICONV" = "yes"; then
- echo $ac_n "checking for iconv""... $ac_c" 1>&6
--echo "configure:40619: checking for iconv" >&5
-+echo "configure:40623: checking for iconv" >&5
- if eval "test \"`echo '$''{'ac_cv_func_iconv'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 40624 "configure"
-+#line 40628 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char iconv(); below. */
-@@ -40643,7 +40647,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:40647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:40651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_iconv=yes"
- else
-@@ -40667,12 +40671,12 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for libiconv""... $ac_c" 1>&6
--echo "configure:40671: checking for libiconv" >&5
-+echo "configure:40675: checking for libiconv" >&5
- if eval "test \"`echo '$''{'ac_cv_func_libiconv'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 40676 "configure"
-+#line 40680 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char libiconv(); below. */
-@@ -40695,7 +40699,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:40699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:40703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_libiconv=yes"
- else
-@@ -40830,7 +40834,7 @@
- done
-
- echo $ac_n "checking for libiconv in -l$iconv_lib_name""... $ac_c" 1>&6
--echo "configure:40834: checking for libiconv in -l$iconv_lib_name" >&5
-+echo "configure:40838: checking for libiconv in -l$iconv_lib_name" >&5
- ac_lib_var=`echo $iconv_lib_name'_'libiconv | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -40838,7 +40842,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$iconv_lib_name $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 40842 "configure"
-+#line 40846 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -40849,7 +40853,7 @@
- libiconv()
- ; return 0; }
- EOF
--if { (eval echo configure:40853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:40857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -40962,7 +40966,7 @@
- done
-
- echo $ac_n "checking for iconv in -l$iconv_lib_name""... $ac_c" 1>&6
--echo "configure:40966: checking for iconv in -l$iconv_lib_name" >&5
-+echo "configure:40970: checking for iconv in -l$iconv_lib_name" >&5
- ac_lib_var=`echo $iconv_lib_name'_'iconv | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -40970,7 +40974,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$iconv_lib_name $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 40974 "configure"
-+#line 40978 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -40981,7 +40985,7 @@
- iconv()
- ; return 0; }
- EOF
--if { (eval echo configure:40985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:40989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -41187,16 +41191,16 @@
-
- if test -z "$iconv_lib_name"; then
- echo $ac_n "checking if iconv is glibc's""... $ac_c" 1>&6
--echo "configure:41191: checking if iconv is glibc's" >&5
-+echo "configure:41195: checking if iconv is glibc's" >&5
- cat > conftest.$ac_ext <<EOF
--#line 41193 "configure"
-+#line 41197 "configure"
- #include "confdefs.h"
- #include <gnu/libc-version.h>
- int main() {
- gnu_get_libc_version();
- ; return 0; }
- EOF
--if { (eval echo configure:41200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:41204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- echo "$ac_t""yes" 1>&6
-@@ -41215,16 +41219,16 @@
- case "$iconv_lib_name" in
- iconv )
- echo $ac_n "checking if iconv is Konstantin Chuguev's""... $ac_c" 1>&6
--echo "configure:41219: checking if iconv is Konstantin Chuguev's" >&5
-+echo "configure:41223: checking if iconv is Konstantin Chuguev's" >&5
- cat > conftest.$ac_ext <<EOF
--#line 41221 "configure"
-+#line 41225 "configure"
- #include "confdefs.h"
- #include <iconv.h>
- int main() {
- iconv_ccs_init(NULL, NULL);
- ; return 0; }
- EOF
--if { (eval echo configure:41228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:41232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
- echo "$ac_t""yes" 1>&6
-@@ -41302,12 +41306,12 @@
- esac
-
- echo $ac_n "checking if iconv supports errno""... $ac_c" 1>&6
--echo "configure:41306: checking if iconv supports errno" >&5
-+echo "configure:41310: checking if iconv supports errno" >&5
- if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 41311 "configure"
-+#line 41315 "configure"
- #include "confdefs.h"
-
- #include <$PHP_ICONV_H_PATH>
-@@ -41328,7 +41332,7 @@
- }
-
- EOF
--if { (eval echo configure:41332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:41336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- echo "$ac_t""yes" 1>&6
-@@ -41360,9 +41364,9 @@
-
-
- echo $ac_n "checking if your cpp allows macro usage in include lines""... $ac_c" 1>&6
--echo "configure:41364: checking if your cpp allows macro usage in include lines" >&5
-+echo "configure:41368: checking if your cpp allows macro usage in include lines" >&5
- cat > conftest.$ac_ext <<EOF
--#line 41366 "configure"
-+#line 41370 "configure"
- #include "confdefs.h"
-
- #define FOO <$PHP_ICONV_H_PATH>
-@@ -41372,7 +41376,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:41376: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:41380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- echo "$ac_t""yes" 1>&6
-@@ -41641,7 +41645,7 @@
-
-
- echo $ac_n "checking for IMAP support""... $ac_c" 1>&6
--echo "configure:41645: checking for IMAP support" >&5
-+echo "configure:41649: checking for IMAP support" >&5
- # Check whether --with-imap or --without-imap was given.
- if test "${with_imap+set}" = set; then
- withval="$with_imap"
-@@ -41687,7 +41691,7 @@
-
-
- echo $ac_n "checking for IMAP Kerberos support""... $ac_c" 1>&6
--echo "configure:41691: checking for IMAP Kerberos support" >&5
-+echo "configure:41695: checking for IMAP Kerberos support" >&5
- # Check whether --with-kerberos or --without-kerberos was given.
- if test "${with_kerberos+set}" = set; then
- withval="$with_kerberos"
-@@ -41712,7 +41716,7 @@
-
-
- echo $ac_n "checking for IMAP SSL support""... $ac_c" 1>&6
--echo "configure:41716: checking for IMAP SSL support" >&5
-+echo "configure:41720: checking for IMAP SSL support" >&5
- # Check whether --with-imap-ssl or --without-imap-ssl was given.
- if test "${with_imap_ssl+set}" = set; then
- withval="$with_imap_ssl"
-@@ -42048,7 +42052,7 @@
- done
-
- cat > conftest.$ac_ext <<EOF
--#line 42052 "configure"
-+#line 42056 "configure"
- #include "confdefs.h"
- #include <$IMAP_INC_DIR/mail.h>
- EOF
-@@ -42068,7 +42072,7 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS=-I$IMAP_INC_DIR
- cat > conftest.$ac_ext <<EOF
--#line 42072 "configure"
-+#line 42076 "configure"
- #include "confdefs.h"
-
- #include "imap4r1.h"
-@@ -42170,7 +42174,7 @@
- done
-
- echo $ac_n "checking for pam_start in -lpam""... $ac_c" 1>&6
--echo "configure:42174: checking for pam_start in -lpam" >&5
-+echo "configure:42178: checking for pam_start in -lpam" >&5
- ac_lib_var=`echo pam'_'pam_start | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -42178,7 +42182,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpam $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 42182 "configure"
-+#line 42186 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -42189,7 +42193,7 @@
- pam_start()
- ; return 0; }
- EOF
--if { (eval echo configure:42193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:42197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -42327,7 +42331,7 @@
- done
-
- echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
--echo "configure:42331: checking for crypt in -lcrypt" >&5
-+echo "configure:42335: checking for crypt in -lcrypt" >&5
- ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -42335,7 +42339,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcrypt $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 42339 "configure"
-+#line 42343 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -42346,7 +42350,7 @@
- crypt()
- ; return 0; }
- EOF
--if { (eval echo configure:42350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:42354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -42549,7 +42553,7 @@
- # Extract the first word of "krb5-config", so it can be a program name with args.
- set dummy krb5-config; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:42553: checking for $ac_word" >&5
-+echo "configure:42557: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_KRB5_CONFIG'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -42900,7 +42904,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 42904 "configure"
-+#line 42908 "configure"
- #include "confdefs.h"
- #include <$IMAP_INC_DIR/linkage.h>
- EOF
-@@ -42935,7 +42939,7 @@
- # Extract the first word of "pkg-config", so it can be a program name with args.
- set dummy pkg-config; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:42939: checking for $ac_word" >&5
-+echo "configure:42943: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -43123,9 +43127,9 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS=-I$OPENSSL_INCDIR
- echo $ac_n "checking for OpenSSL version""... $ac_c" 1>&6
--echo "configure:43127: checking for OpenSSL version" >&5
-+echo "configure:43131: checking for OpenSSL version" >&5
- cat > conftest.$ac_ext <<EOF
--#line 43129 "configure"
-+#line 43133 "configure"
- #include "confdefs.h"
-
- #include <openssl/opensslv.h>
-@@ -43263,7 +43267,7 @@
- done
-
- echo $ac_n "checking for CRYPTO_free in -lcrypto""... $ac_c" 1>&6
--echo "configure:43267: checking for CRYPTO_free in -lcrypto" >&5
-+echo "configure:43271: checking for CRYPTO_free in -lcrypto" >&5
- ac_lib_var=`echo crypto'_'CRYPTO_free | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -43271,7 +43275,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcrypto $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 43275 "configure"
-+#line 43279 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -43282,7 +43286,7 @@
- CRYPTO_free()
- ; return 0; }
- EOF
--if { (eval echo configure:43286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:43290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -43422,7 +43426,7 @@
- done
-
- echo $ac_n "checking for SSL_CTX_set_ssl_version in -lssl""... $ac_c" 1>&6
--echo "configure:43426: checking for SSL_CTX_set_ssl_version in -lssl" >&5
-+echo "configure:43430: checking for SSL_CTX_set_ssl_version in -lssl" >&5
- ac_lib_var=`echo ssl'_'SSL_CTX_set_ssl_version | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -43430,7 +43434,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lssl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 43434 "configure"
-+#line 43438 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -43441,7 +43445,7 @@
- SSL_CTX_set_ssl_version()
- ; return 0; }
- EOF
--if { (eval echo configure:43445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:43449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -43559,7 +43563,7 @@
-
- elif test -f "$IMAP_INC_DIR/linkage.c"; then
- cat > conftest.$ac_ext <<EOF
--#line 43563 "configure"
-+#line 43567 "configure"
- #include "confdefs.h"
- #include <$IMAP_INC_DIR/linkage.c>
- EOF
-@@ -43587,7 +43591,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 43591 "configure"
-+#line 43595 "configure"
- #include "confdefs.h"
-
- void mm_log(void){}
-@@ -43612,7 +43616,7 @@
- }
-
- EOF
--if { (eval echo configure:43616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:43620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- LIBS=$old_LIBS
-@@ -43638,7 +43642,7 @@
-
-
- echo $ac_n "checking whether IMAP works""... $ac_c" 1>&6
--echo "configure:43642: checking whether IMAP works" >&5
-+echo "configure:43646: checking whether IMAP works" >&5
-
- old_LIBS=$LIBS
- LIBS="$TST_LIBS $LIBS"
-@@ -43646,7 +43650,7 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 43650 "configure"
-+#line 43654 "configure"
- #include "confdefs.h"
-
- void mm_log(void){}
-@@ -43671,7 +43675,7 @@
- }
-
- EOF
--if { (eval echo configure:43675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:43679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- LIBS=$old_LIBS
-@@ -43701,7 +43705,7 @@
-
-
- echo $ac_n "checking for Informix support""... $ac_c" 1>&6
--echo "configure:43705: checking for Informix support" >&5
-+echo "configure:43709: checking for Informix support" >&5
- # Check whether --with-informix or --without-informix was given.
- if test "${with_informix+set}" = set; then
- withval="$with_informix"
-@@ -43923,7 +43927,7 @@
- esac
-
- echo $ac_n "checking Informix version""... $ac_c" 1>&6
--echo "configure:43927: checking Informix version" >&5
-+echo "configure:43931: checking Informix version" >&5
- IFX_VERSION=`$INFORMIXDIR/bin/esql -V | grep "ESQL Version" | sed -ne '1 s/\(.*\)ESQL Version \([0-9]*\)\.\([0-9]*\).*/\2\3/p'`
- echo "$ac_t""$IFX_VERSION" 1>&6
- cat >> confdefs.h <<EOF
-@@ -44301,7 +44305,7 @@
-
-
- echo $ac_n "checking for Ingres II support""... $ac_c" 1>&6
--echo "configure:44305: checking for Ingres II support" >&5
-+echo "configure:44309: checking for Ingres II support" >&5
- # Check whether --with-ingres or --without-ingres was given.
- if test "${with_ingres+set}" = set; then
- withval="$with_ingres"
-@@ -44821,7 +44825,7 @@
-
-
- echo $ac_n "checking for InterBase support""... $ac_c" 1>&6
--echo "configure:44825: checking for InterBase support" >&5
-+echo "configure:44829: checking for InterBase support" >&5
- # Check whether --with-interbase or --without-interbase was given.
- if test "${with_interbase+set}" = set; then
- withval="$with_interbase"
-@@ -44954,7 +44958,7 @@
- done
-
- echo $ac_n "checking for isc_detach_database in -lgds""... $ac_c" 1>&6
--echo "configure:44958: checking for isc_detach_database in -lgds" >&5
-+echo "configure:44962: checking for isc_detach_database in -lgds" >&5
- ac_lib_var=`echo gds'_'isc_detach_database | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -44962,7 +44966,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lgds $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 44966 "configure"
-+#line 44970 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -44973,7 +44977,7 @@
- isc_detach_database()
- ; return 0; }
- EOF
--if { (eval echo configure:44977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:44981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -45083,7 +45087,7 @@
- done
-
- echo $ac_n "checking for isc_detach_database in -lib_util""... $ac_c" 1>&6
--echo "configure:45087: checking for isc_detach_database in -lib_util" >&5
-+echo "configure:45091: checking for isc_detach_database in -lib_util" >&5
- ac_lib_var=`echo ib_util'_'isc_detach_database | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -45091,7 +45095,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lib_util $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 45095 "configure"
-+#line 45099 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -45102,7 +45106,7 @@
- isc_detach_database()
- ; return 0; }
- EOF
--if { (eval echo configure:45106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:45110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -45502,7 +45506,7 @@
-
-
- echo $ac_n "checking for IRCG support""... $ac_c" 1>&6
--echo "configure:45506: checking for IRCG support" >&5
-+echo "configure:45510: checking for IRCG support" >&5
- # Check whether --with-ircg or --without-ircg was given.
- if test "${with_ircg+set}" = set; then
- withval="$with_ircg"
-@@ -45995,7 +45999,7 @@
-
-
- echo $ac_n "checking for Java support""... $ac_c" 1>&6
--echo "configure:45999: checking for Java support" >&5
-+echo "configure:46003: checking for Java support" >&5
- # Check whether --with-java or --without-java was given.
- if test "${with_java+set}" = set; then
- withval="$with_java"
-@@ -46048,7 +46052,7 @@
- esac
-
- echo $ac_n "checking Java Jar location""... $ac_c" 1>&6
--echo "configure:46052: checking Java Jar location" >&5
-+echo "configure:46056: checking Java Jar location" >&5
- if test "$PHP_JAVA" = "yes"; then
- if JAVA_JAR=`which jar 2>/dev/null`; then
- JAVA_JAR="$JAVA_JAR cf"
-@@ -46074,7 +46078,7 @@
-
-
- echo $ac_n "checking Java C location""... $ac_c" 1>&6
--echo "configure:46078: checking Java C location" >&5
-+echo "configure:46082: checking Java C location" >&5
- if test "$PHP_JAVA" = "yes"; then
- JAVA_C=`which javac`
- else
-@@ -46101,17 +46105,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:46105: checking for $ac_hdr" >&5
-+echo "configure:46109: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 46110 "configure"
-+#line 46114 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:46115: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:46119: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -46141,17 +46145,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:46145: checking for $ac_hdr" >&5
-+echo "configure:46149: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 46150 "configure"
-+#line 46154 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:46155: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:46159: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -46181,7 +46185,7 @@
- save_old_LDFLAGS=$LDFLAGS
- LDFLAGS="-framework "JavaVM" $LDFLAGS"
- echo $ac_n "checking for JNI_CreateJavaVM in -lc""... $ac_c" 1>&6
--echo "configure:46185: checking for JNI_CreateJavaVM in -lc" >&5
-+echo "configure:46189: checking for JNI_CreateJavaVM in -lc" >&5
- ac_lib_var=`echo c'_'JNI_CreateJavaVM | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -46189,7 +46193,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lc $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 46193 "configure"
-+#line 46197 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -46200,7 +46204,7 @@
- JNI_CreateJavaVM()
- ; return 0; }
- EOF
--if { (eval echo configure:46204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:46208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -46253,7 +46257,7 @@
- else
-
- echo $ac_n "checking Checking for libjava""... $ac_c" 1>&6
--echo "configure:46257: checking Checking for libjava" >&5
-+echo "configure:46261: checking Checking for libjava" >&5
- if test -d $PHP_JAVA/lib/kaffe; then
-
- if test "$PHP_JAVA/lib" != "/usr/lib"; then
-@@ -46791,7 +46795,7 @@
-
-
- echo $ac_n "checking for LDAP support""... $ac_c" 1>&6
--echo "configure:46795: checking for LDAP support" >&5
-+echo "configure:46799: checking for LDAP support" >&5
- # Check whether --with-ldap or --without-ldap was given.
- if test "${with_ldap+set}" = set; then
- withval="$with_ldap"
-@@ -49062,19 +49066,19 @@
- LDFLAGS="$LDFLAGS $LDAP_SHARED_LIBADD"
-
- echo $ac_n "checking for 3 arg ldap_set_rebind_proc""... $ac_c" 1>&6
--echo "configure:49066: checking for 3 arg ldap_set_rebind_proc" >&5
-+echo "configure:49070: checking for 3 arg ldap_set_rebind_proc" >&5
- if eval "test \"`echo '$''{'ac_cv_3arg_setrebindproc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 49071 "configure"
-+#line 49075 "configure"
- #include "confdefs.h"
- #include <ldap.h>
- int main() {
- ldap_set_rebind_proc(0,0,0)
- ; return 0; }
- EOF
--if { (eval echo configure:49078: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:49082: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_3arg_setrebindproc=yes
- else
-@@ -49098,12 +49102,12 @@
- for ac_func in ldap_parse_reference ldap_start_tls_s
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:49102: checking for $ac_func" >&5
-+echo "configure:49106: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 49107 "configure"
-+#line 49111 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -49126,7 +49130,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:49130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:49134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -49174,7 +49178,7 @@
-
-
- echo $ac_n "checking whether to enable multibyte string support""... $ac_c" 1>&6
--echo "configure:49178: checking whether to enable multibyte string support" >&5
-+echo "configure:49182: checking whether to enable multibyte string support" >&5
- # Check whether --enable-mbstring or --disable-mbstring was given.
- if test "${enable_mbstring+set}" = set; then
- enableval="$enable_mbstring"
-@@ -49220,7 +49224,7 @@
-
-
- echo $ac_n "checking whether to enable multibyte regex support""... $ac_c" 1>&6
--echo "configure:49224: checking whether to enable multibyte regex support" >&5
-+echo "configure:49228: checking whether to enable multibyte regex support" >&5
- # Check whether --enable-mbregex or --disable-mbregex was given.
- if test "${enable_mbregex+set}" = set; then
- enableval="$enable_mbregex"
-@@ -49245,7 +49249,7 @@
-
-
- echo $ac_n "checking for external libmbfl""... $ac_c" 1>&6
--echo "configure:49249: checking for external libmbfl" >&5
-+echo "configure:49253: checking for external libmbfl" >&5
- # Check whether --with-libmbfl or --without-libmbfl was given.
- if test "${with_libmbfl+set}" = set; then
- withval="$with_libmbfl"
-@@ -49525,7 +49529,7 @@
- done
-
- echo $ac_n "checking for mbfl_buffer_converter_new in -lmbfl""... $ac_c" 1>&6
--echo "configure:49529: checking for mbfl_buffer_converter_new in -lmbfl" >&5
-+echo "configure:49533: checking for mbfl_buffer_converter_new in -lmbfl" >&5
- ac_lib_var=`echo mbfl'_'mbfl_buffer_converter_new | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -49533,7 +49537,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lmbfl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 49537 "configure"
-+#line 49541 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -49544,7 +49548,7 @@
- mbfl_buffer_converter_new()
- ; return 0; }
- EOF
--if { (eval echo configure:49548: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:49552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -49966,7 +49970,7 @@
-
-
- echo $ac_n "checking for MCAL support""... $ac_c" 1>&6
--echo "configure:49970: checking for MCAL support" >&5
-+echo "configure:49974: checking for MCAL support" >&5
- # Check whether --with-mcal or --without-mcal was given.
- if test "${with_mcal+set}" = set; then
- withval="$with_mcal"
-@@ -50375,7 +50379,7 @@
-
-
- echo $ac_n "checking for mcrypt support""... $ac_c" 1>&6
--echo "configure:50379: checking for mcrypt support" >&5
-+echo "configure:50383: checking for mcrypt support" >&5
- # Check whether --with-mcrypt or --without-mcrypt was given.
- if test "${with_mcrypt+set}" = set; then
- withval="$with_mcrypt"
-@@ -50508,7 +50512,7 @@
- done
-
- echo $ac_n "checking for mcrypt_module_open in -lmcrypt""... $ac_c" 1>&6
--echo "configure:50512: checking for mcrypt_module_open in -lmcrypt" >&5
-+echo "configure:50516: checking for mcrypt_module_open in -lmcrypt" >&5
- ac_lib_var=`echo mcrypt'_'mcrypt_module_open | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -50516,7 +50520,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lmcrypt $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 50520 "configure"
-+#line 50524 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -50527,7 +50531,7 @@
- mcrypt_module_open()
- ; return 0; }
- EOF
--if { (eval echo configure:50531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:50535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -50655,7 +50659,7 @@
- done
-
- echo $ac_n "checking for mcrypt_generic_deinit in -lmcrypt""... $ac_c" 1>&6
--echo "configure:50659: checking for mcrypt_generic_deinit in -lmcrypt" >&5
-+echo "configure:50663: checking for mcrypt_generic_deinit in -lmcrypt" >&5
- ac_lib_var=`echo mcrypt'_'mcrypt_generic_deinit | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -50663,7 +50667,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lmcrypt $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 50667 "configure"
-+#line 50671 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -50674,7 +50678,7 @@
- mcrypt_generic_deinit()
- ; return 0; }
- EOF
--if { (eval echo configure:50678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:50682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -50800,7 +50804,7 @@
- done
-
- echo $ac_n "checking for mcrypt_module_open in -lmcrypt""... $ac_c" 1>&6
--echo "configure:50804: checking for mcrypt_module_open in -lmcrypt" >&5
-+echo "configure:50808: checking for mcrypt_module_open in -lmcrypt" >&5
- ac_lib_var=`echo mcrypt'_'mcrypt_module_open | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -50808,7 +50812,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lmcrypt $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 50812 "configure"
-+#line 50816 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -50819,7 +50823,7 @@
- mcrypt_module_open()
- ; return 0; }
- EOF
--if { (eval echo configure:50823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:50827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -50924,7 +50928,7 @@
- done
-
- echo $ac_n "checking for mcrypt_generic_deinit in -lmcrypt""... $ac_c" 1>&6
--echo "configure:50928: checking for mcrypt_generic_deinit in -lmcrypt" >&5
-+echo "configure:50932: checking for mcrypt_generic_deinit in -lmcrypt" >&5
- ac_lib_var=`echo mcrypt'_'mcrypt_generic_deinit | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -50932,7 +50936,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lmcrypt $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 50936 "configure"
-+#line 50940 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -50943,7 +50947,7 @@
- mcrypt_generic_deinit()
- ; return 0; }
- EOF
--if { (eval echo configure:50947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:50951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -51068,7 +51072,7 @@
- done
-
- echo $ac_n "checking for init_mcrypt in -lmcrypt""... $ac_c" 1>&6
--echo "configure:51072: checking for init_mcrypt in -lmcrypt" >&5
-+echo "configure:51076: checking for init_mcrypt in -lmcrypt" >&5
- ac_lib_var=`echo mcrypt'_'init_mcrypt | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -51076,7 +51080,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lmcrypt $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 51080 "configure"
-+#line 51084 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -51087,7 +51091,7 @@
- init_mcrypt()
- ; return 0; }
- EOF
--if { (eval echo configure:51091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:51095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -51495,7 +51499,7 @@
-
-
- echo $ac_n "checking for MCVE support""... $ac_c" 1>&6
--echo "configure:51499: checking for MCVE support" >&5
-+echo "configure:51503: checking for MCVE support" >&5
- # Check whether --with-mcve or --without-mcve was given.
- if test "${with_mcve+set}" = set; then
- withval="$with_mcve"
-@@ -51541,7 +51545,7 @@
-
-
- echo $ac_n "checking OpenSSL dir for MCVE""... $ac_c" 1>&6
--echo "configure:51545: checking OpenSSL dir for MCVE" >&5
-+echo "configure:51549: checking OpenSSL dir for MCVE" >&5
- # Check whether --with-openssl-dir or --without-openssl-dir was given.
- if test "${with_openssl_dir+set}" = set; then
- withval="$with_openssl_dir"
-@@ -51567,7 +51571,7 @@
- # Extract the first word of "egrep", so it can be a program name with args.
- set dummy egrep; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:51571: checking for $ac_word" >&5
-+echo "configure:51575: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_EGREP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -51612,7 +51616,7 @@
- # Extract the first word of "pkg-config", so it can be a program name with args.
- set dummy pkg-config; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:51616: checking for $ac_word" >&5
-+echo "configure:51620: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -51800,9 +51804,9 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS=-I$OPENSSL_INCDIR
- echo $ac_n "checking for OpenSSL version""... $ac_c" 1>&6
--echo "configure:51804: checking for OpenSSL version" >&5
-+echo "configure:51808: checking for OpenSSL version" >&5
- cat > conftest.$ac_ext <<EOF
--#line 51806 "configure"
-+#line 51810 "configure"
- #include "confdefs.h"
-
- #include <openssl/opensslv.h>
-@@ -51940,7 +51944,7 @@
- done
-
- echo $ac_n "checking for CRYPTO_free in -lcrypto""... $ac_c" 1>&6
--echo "configure:51944: checking for CRYPTO_free in -lcrypto" >&5
-+echo "configure:51948: checking for CRYPTO_free in -lcrypto" >&5
- ac_lib_var=`echo crypto'_'CRYPTO_free | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -51948,7 +51952,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcrypto $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 51952 "configure"
-+#line 51956 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -51959,7 +51963,7 @@
- CRYPTO_free()
- ; return 0; }
- EOF
--if { (eval echo configure:51963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:51967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -52099,7 +52103,7 @@
- done
-
- echo $ac_n "checking for SSL_CTX_set_ssl_version in -lssl""... $ac_c" 1>&6
--echo "configure:52103: checking for SSL_CTX_set_ssl_version in -lssl" >&5
-+echo "configure:52107: checking for SSL_CTX_set_ssl_version in -lssl" >&5
- ac_lib_var=`echo ssl'_'SSL_CTX_set_ssl_version | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -52107,7 +52111,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lssl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 52111 "configure"
-+#line 52115 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -52118,7 +52122,7 @@
- SSL_CTX_set_ssl_version()
- ; return 0; }
- EOF
--if { (eval echo configure:52122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:52126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -52250,9 +52254,9 @@
-
- saved_CPPFLAGS=$CPPFLAGS
- echo $ac_n "checking for correct libmcve version""... $ac_c" 1>&6
--echo "configure:52254: checking for correct libmcve version" >&5
-+echo "configure:52258: checking for correct libmcve version" >&5
- cat > conftest.$ac_ext <<EOF
--#line 52256 "configure"
-+#line 52260 "configure"
- #include "confdefs.h"
-
- #include "$MCVE_DIR/include/mcve.h"
-@@ -52277,9 +52281,9 @@
-
-
- echo $ac_n "checking for correct libmonetra 4.2 or higher""... $ac_c" 1>&6
--echo "configure:52281: checking for correct libmonetra 4.2 or higher" >&5
-+echo "configure:52285: checking for correct libmonetra 4.2 or higher" >&5
- cat > conftest.$ac_ext <<EOF
--#line 52283 "configure"
-+#line 52287 "configure"
- #include "confdefs.h"
-
- #include "$MCVE_DIR/include/mcve.h"
-@@ -52520,7 +52524,7 @@
- done
-
- echo $ac_n "checking for MCVE_DestroyEngine in -lmcve""... $ac_c" 1>&6
--echo "configure:52524: checking for MCVE_DestroyEngine in -lmcve" >&5
-+echo "configure:52528: checking for MCVE_DestroyEngine in -lmcve" >&5
- ac_lib_var=`echo mcve'_'MCVE_DestroyEngine | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -52528,7 +52532,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lmcve $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 52532 "configure"
-+#line 52536 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -52539,7 +52543,7 @@
- MCVE_DestroyEngine()
- ; return 0; }
- EOF
--if { (eval echo configure:52543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:52547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -52656,7 +52660,7 @@
- done
-
- echo $ac_n "checking for M_DestroyEngine in -lmcve""... $ac_c" 1>&6
--echo "configure:52660: checking for M_DestroyEngine in -lmcve" >&5
-+echo "configure:52664: checking for M_DestroyEngine in -lmcve" >&5
- ac_lib_var=`echo mcve'_'M_DestroyEngine | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -52664,7 +52668,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lmcve $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 52668 "configure"
-+#line 52672 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -52675,7 +52679,7 @@
- M_DestroyEngine()
- ; return 0; }
- EOF
--if { (eval echo configure:52679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:52683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -52950,7 +52954,7 @@
-
-
- echo $ac_n "checking for mhash support""... $ac_c" 1>&6
--echo "configure:52954: checking for mhash support" >&5
-+echo "configure:52958: checking for mhash support" >&5
- # Check whether --with-mhash or --without-mhash was given.
- if test "${with_mhash+set}" = set; then
- withval="$with_mhash"
-@@ -53364,7 +53368,7 @@
-
-
- echo $ac_n "checking whether to include mime_magic support""... $ac_c" 1>&6
--echo "configure:53368: checking whether to include mime_magic support" >&5
-+echo "configure:53372: checking whether to include mime_magic support" >&5
- # Check whether --with-mime-magic or --without-mime-magic was given.
- if test "${with_mime_magic+set}" = set; then
- withval="$with_mime_magic"
-@@ -53661,7 +53665,7 @@
-
-
- echo $ac_n "checking for MING support""... $ac_c" 1>&6
--echo "configure:53665: checking for MING support" >&5
-+echo "configure:53669: checking for MING support" >&5
- # Check whether --with-ming or --without-ming was given.
- if test "${with_ming+set}" = set; then
- withval="$with_ming"
-@@ -53706,7 +53710,7 @@
-
- if test "$PHP_MING" != "no"; then
- echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
--echo "configure:53710: checking for sin in -lm" >&5
-+echo "configure:53714: checking for sin in -lm" >&5
- ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -53714,7 +53718,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lm $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 53718 "configure"
-+#line 53722 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -53725,7 +53729,7 @@
- sin()
- ; return 0; }
- EOF
--if { (eval echo configure:53729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:53733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -53854,7 +53858,7 @@
- done
-
- echo $ac_n "checking for Ming_useSWFVersion in -lming""... $ac_c" 1>&6
--echo "configure:53858: checking for Ming_useSWFVersion in -lming" >&5
-+echo "configure:53862: checking for Ming_useSWFVersion in -lming" >&5
- ac_lib_var=`echo ming'_'Ming_useSWFVersion | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -53862,7 +53866,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lming $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 53866 "configure"
-+#line 53870 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -53873,7 +53877,7 @@
- Ming_useSWFVersion()
- ; return 0; }
- EOF
--if { (eval echo configure:53877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:53881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -54040,14 +54044,14 @@
-
-
- echo $ac_n "checking for destroySWFBlock""... $ac_c" 1>&6
--echo "configure:54044: checking for destroySWFBlock" >&5
-+echo "configure:54048: checking for destroySWFBlock" >&5
- if test "$cross_compiling" = yes; then
-
- echo "$ac_t""unknown" 1>&6
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 54051 "configure"
-+#line 54055 "configure"
- #include "confdefs.h"
-
- #include "ming.h"
-@@ -54059,7 +54063,7 @@
- }
-
- EOF
--if { (eval echo configure:54063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:54067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- echo "$ac_t""missing" 1>&6
-@@ -54083,7 +54087,7 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS=-I$MING_INC_DIR
- cat > conftest.$ac_ext <<EOF
--#line 54087 "configure"
-+#line 54091 "configure"
- #include "confdefs.h"
-
- #include <ming.h>
-@@ -54340,7 +54344,7 @@
-
-
- echo $ac_n "checking for mnoGoSearch support""... $ac_c" 1>&6
--echo "configure:54344: checking for mnoGoSearch support" >&5
-+echo "configure:54348: checking for mnoGoSearch support" >&5
- # Check whether --with-mnogosearch or --without-mnogosearch was given.
- if test "${with_mnogosearch+set}" = set; then
- withval="$with_mnogosearch"
-@@ -54396,7 +54400,7 @@
- fi
-
- echo $ac_n "checking for mnoGoSearch version""... $ac_c" 1>&6
--echo "configure:54400: checking for mnoGoSearch version" >&5
-+echo "configure:54404: checking for mnoGoSearch version" >&5
-
- if test -x "$MNOGOSEARCH_BINDIR/udm-config"; then
- MNOGOSEARCH_VERSION=`$MNOGOSEARCH_BINDIR/udm-config --version`
-@@ -54758,7 +54762,7 @@
-
-
- echo $ac_n "checking for msession support""... $ac_c" 1>&6
--echo "configure:54762: checking for msession support" >&5
-+echo "configure:54766: checking for msession support" >&5
- # Check whether --with-msession or --without-msession was given.
- if test "${with_msession+set}" = set; then
- withval="$with_msession"
-@@ -54806,7 +54810,7 @@
- PHOENIX_DIR=$PHP_MSESSION
- else
- echo $ac_n "checking for msession in default path""... $ac_c" 1>&6
--echo "configure:54810: checking for msession in default path" >&5
-+echo "configure:54814: checking for msession in default path" >&5
- for i in /usr/local/phoenix /usr/local /usr; do
- if test -r $i/lib/libphoenix.a; then
- PHOENIX_DIR=$i
-@@ -55156,7 +55160,7 @@
-
-
- echo $ac_n "checking for mSQL support""... $ac_c" 1>&6
--echo "configure:55160: checking for mSQL support" >&5
-+echo "configure:55164: checking for mSQL support" >&5
- # Check whether --with-msql or --without-msql was given.
- if test "${with_msql+set}" = set; then
- withval="$with_msql"
-@@ -55564,11 +55568,11 @@
-
-
- echo $ac_n "checking mSQL version""... $ac_c" 1>&6
--echo "configure:55568: checking mSQL version" >&5
-+echo "configure:55572: checking mSQL version" >&5
- ac_php_oldcppflags=$CPPFLAGS
- CPPFLAGS="$INCLUDES $CPPFLAGS"
- cat > conftest.$ac_ext <<EOF
--#line 55572 "configure"
-+#line 55576 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include "msql.h"
-@@ -55576,7 +55580,7 @@
- int i = IDX_TYPE
- ; return 0; }
- EOF
--if { (eval echo configure:55580: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:55584: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- cat >> confdefs.h <<\EOF
-@@ -55607,7 +55611,7 @@
-
-
- echo $ac_n "checking for MSSQL support via FreeTDS""... $ac_c" 1>&6
--echo "configure:55611: checking for MSSQL support via FreeTDS" >&5
-+echo "configure:55615: checking for MSSQL support via FreeTDS" >&5
- # Check whether --with-mssql or --without-mssql was given.
- if test "${with_mssql+set}" = set; then
- withval="$with_mssql"
-@@ -56032,7 +56036,7 @@
-
-
- echo $ac_n "checking for dnet_addr in -ldnet_stub""... $ac_c" 1>&6
--echo "configure:56036: checking for dnet_addr in -ldnet_stub" >&5
-+echo "configure:56040: checking for dnet_addr in -ldnet_stub" >&5
- ac_lib_var=`echo dnet_stub'_'dnet_addr | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -56040,7 +56044,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldnet_stub $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 56044 "configure"
-+#line 56048 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -56051,7 +56055,7 @@
- dnet_addr()
- ; return 0; }
- EOF
--if { (eval echo configure:56055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:56059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -56233,7 +56237,7 @@
-
-
- echo $ac_n "checking for MySQL support""... $ac_c" 1>&6
--echo "configure:56237: checking for MySQL support" >&5
-+echo "configure:56241: checking for MySQL support" >&5
- # Check whether --with-mysql or --without-mysql was given.
- if test "${with_mysql+set}" = set; then
- withval="$with_mysql"
-@@ -56279,7 +56283,7 @@
-
-
- echo $ac_n "checking for specified location of the MySQL UNIX socket""... $ac_c" 1>&6
--echo "configure:56283: checking for specified location of the MySQL UNIX socket" >&5
-+echo "configure:56287: checking for specified location of the MySQL UNIX socket" >&5
- # Check whether --with-mysql-sock or --without-mysql-sock was given.
- if test "${with_mysql_sock+set}" = set; then
- withval="$with_mysql_sock"
-@@ -56305,7 +56309,7 @@
-
-
- echo $ac_n "checking for the location of libz""... $ac_c" 1>&6
--echo "configure:56309: checking for the location of libz" >&5
-+echo "configure:56313: checking for the location of libz" >&5
- # Check whether --with-zlib-dir or --without-zlib-dir was given.
- if test "${with_zlib_dir+set}" = set; then
- withval="$with_zlib_dir"
-@@ -56336,7 +56340,7 @@
-
-
- echo $ac_n "checking for MySQL UNIX socket location""... $ac_c" 1>&6
--echo "configure:56340: checking for MySQL UNIX socket location" >&5
-+echo "configure:56344: checking for MySQL UNIX socket location" >&5
- if test "$PHP_MYSQL_SOCK" != "no" && test "$PHP_MYSQL_SOCK" != "yes"; then
- MYSQL_SOCK=$PHP_MYSQL_SOCK
- cat >> confdefs.h <<EOF
-@@ -56383,7 +56387,7 @@
- # 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:56387: checking for $ac_word" >&5
-+echo "configure:56391: 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
-@@ -56411,21 +56415,21 @@
- fi
-
- echo $ac_n "checking for inline""... $ac_c" 1>&6
--echo "configure:56415: checking for inline" >&5
-+echo "configure:56419: checking for inline" >&5
- if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- ac_cv_c_inline=no
- for ac_kw in inline __inline__ __inline; do
- cat > conftest.$ac_ext <<EOF
--#line 56422 "configure"
-+#line 56426 "configure"
- #include "confdefs.h"
-
- int main() {
- } $ac_kw foo() {
- ; return 0; }
- EOF
--if { (eval echo configure:56429: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:56433: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_c_inline=$ac_kw; break
- else
-@@ -56451,12 +56455,12 @@
- esac
-
- echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
--echo "configure:56455: checking return type of signal handlers" >&5
-+echo "configure:56459: checking return type of signal handlers" >&5
- if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 56460 "configure"
-+#line 56464 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <signal.h>
-@@ -56473,7 +56477,7 @@
- int i;
- ; return 0; }
- EOF
--if { (eval echo configure:56477: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:56481: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_type_signal=void
- else
-@@ -56504,12 +56508,12 @@
-
-
- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
--echo "configure:56508: checking for ANSI C header files" >&5
-+echo "configure:56512: checking for ANSI C header files" >&5
- if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 56513 "configure"
-+#line 56517 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #include <stdarg.h>
-@@ -56517,7 +56521,7 @@
- #include <float.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:56521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:56525: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -56534,7 +56538,7 @@
- if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat > conftest.$ac_ext <<EOF
--#line 56538 "configure"
-+#line 56542 "configure"
- #include "confdefs.h"
- #include <string.h>
- EOF
-@@ -56552,7 +56556,7 @@
- if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat > conftest.$ac_ext <<EOF
--#line 56556 "configure"
-+#line 56560 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- EOF
-@@ -56573,7 +56577,7 @@
- :
- else
- cat > conftest.$ac_ext <<EOF
--#line 56577 "configure"
-+#line 56581 "configure"
- #include "confdefs.h"
- #include <ctype.h>
- #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-@@ -56584,7 +56588,7 @@
- exit (0); }
-
- EOF
--if { (eval echo configure:56588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:56592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- :
- else
-@@ -56617,17 +56621,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:56621: checking for $ac_hdr" >&5
-+echo "configure:56625: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 56626 "configure"
-+#line 56630 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:56631: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:56635: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -56659,7 +56663,7 @@
-
-
- echo $ac_n "checking size of char""... $ac_c" 1>&6
--echo "configure:56663: checking size of char" >&5
-+echo "configure:56667: checking size of char" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_char'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -56667,9 +56671,10 @@
- ac_cv_sizeof_char=1
- else
- cat > conftest.$ac_ext <<EOF
--#line 56671 "configure"
-+#line 56675 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -56678,7 +56683,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:56682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:56687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_char=`cat conftestval`
- else
-@@ -56699,7 +56704,7 @@
-
-
- echo $ac_n "checking size of int""... $ac_c" 1>&6
--echo "configure:56703: checking size of int" >&5
-+echo "configure:56708: checking size of int" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -56707,9 +56712,10 @@
- ac_cv_sizeof_int=4
- else
- cat > conftest.$ac_ext <<EOF
--#line 56711 "configure"
-+#line 56716 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -56718,7 +56724,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:56722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:56728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_int=`cat conftestval`
- else
-@@ -56738,7 +56744,7 @@
-
-
- echo $ac_n "checking size of long""... $ac_c" 1>&6
--echo "configure:56742: checking size of long" >&5
-+echo "configure:56748: checking size of long" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -56746,9 +56752,10 @@
- ac_cv_sizeof_long=4
- else
- cat > conftest.$ac_ext <<EOF
--#line 56750 "configure"
-+#line 56756 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -56757,7 +56764,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:56761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:56768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_long=`cat conftestval`
- else
-@@ -56777,7 +56784,7 @@
-
-
- echo $ac_n "checking size of long long""... $ac_c" 1>&6
--echo "configure:56781: checking size of long long" >&5
-+echo "configure:56788: checking size of long long" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -56785,9 +56792,10 @@
- ac_cv_sizeof_long_long=8
- else
- cat > conftest.$ac_ext <<EOF
--#line 56789 "configure"
-+#line 56796 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -56796,7 +56804,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:56800: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:56808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_long_long=`cat conftestval`
- else
-@@ -56816,12 +56824,12 @@
-
-
- echo $ac_n "checking for size_t""... $ac_c" 1>&6
--echo "configure:56820: checking for size_t" >&5
-+echo "configure:56828: checking for size_t" >&5
- if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 56825 "configure"
-+#line 56833 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #if STDC_HEADERS
-@@ -56849,12 +56857,12 @@
- fi
-
- echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
--echo "configure:56853: checking whether time.h and sys/time.h may both be included" >&5
-+echo "configure:56861: checking whether time.h and sys/time.h may both be included" >&5
- if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 56858 "configure"
-+#line 56866 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/time.h>
-@@ -56863,7 +56871,7 @@
- struct tm *tp;
- ; return 0; }
- EOF
--if { (eval echo configure:56867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:56875: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_header_time=yes
- else
-@@ -56884,12 +56892,12 @@
- fi
-
- echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
--echo "configure:56888: checking for uid_t in sys/types.h" >&5
-+echo "configure:56896: checking for uid_t in sys/types.h" >&5
- if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 56893 "configure"
-+#line 56901 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- EOF
-@@ -56919,7 +56927,7 @@
-
-
- echo $ac_n "checking for type ulong""... $ac_c" 1>&6
--echo "configure:56923: checking for type ulong" >&5
-+echo "configure:56931: checking for type ulong" >&5
- if eval "test \"`echo '$''{'ac_cv_ulong'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -56927,7 +56935,7 @@
- ac_cv_ulong=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 56931 "configure"
-+#line 56939 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- #include <sys/types.h>
-@@ -56938,7 +56946,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:56942: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:56950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_ulong=yes
- else
-@@ -56962,7 +56970,7 @@
- fi
-
- echo $ac_n "checking for type uchar""... $ac_c" 1>&6
--echo "configure:56966: checking for type uchar" >&5
-+echo "configure:56974: checking for type uchar" >&5
- if eval "test \"`echo '$''{'ac_cv_uchar'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -56970,7 +56978,7 @@
- ac_cv_uchar=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 56974 "configure"
-+#line 56982 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- #include <sys/types.h>
-@@ -56981,7 +56989,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:56985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:56993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_uchar=yes
- else
-@@ -57005,7 +57013,7 @@
- fi
-
- echo $ac_n "checking for type uint""... $ac_c" 1>&6
--echo "configure:57009: checking for type uint" >&5
-+echo "configure:57017: checking for type uint" >&5
- if eval "test \"`echo '$''{'ac_cv_uint'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -57013,7 +57021,7 @@
- ac_cv_uint=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 57017 "configure"
-+#line 57025 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- #include <sys/types.h>
-@@ -57024,7 +57032,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:57028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:57036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_uint=yes
- else
-@@ -57048,7 +57056,7 @@
- fi
-
- echo $ac_n "checking for type ushort""... $ac_c" 1>&6
--echo "configure:57052: checking for type ushort" >&5
-+echo "configure:57060: checking for type ushort" >&5
- if eval "test \"`echo '$''{'ac_cv_ushort'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -57056,7 +57064,7 @@
- ac_cv_ushort=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 57060 "configure"
-+#line 57068 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- #include <sys/types.h>
-@@ -57067,7 +57075,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:57071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:57079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_ushort=yes
- else
-@@ -57091,7 +57099,7 @@
- fi
-
- echo $ac_n "checking for int8""... $ac_c" 1>&6
--echo "configure:57095: checking for int8" >&5
-+echo "configure:57103: checking for int8" >&5
- if eval "test \"`echo '$''{'ac_cv_int8'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -57099,7 +57107,7 @@
- ac_cv_int8=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 57103 "configure"
-+#line 57111 "configure"
- #include "confdefs.h"
-
- #ifdef HAVE_STDLIB_H
-@@ -57121,7 +57129,7 @@
- }
-
- EOF
--if { (eval echo configure:57125: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:57133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_int8=yes
- else
-@@ -57147,7 +57155,7 @@
-
- ac_save_CXXFLAGS="$CXXFLAGS"
- echo $ac_n "checking base type of last arg to accept""... $ac_c" 1>&6
--echo "configure:57151: checking base type of last arg to accept" >&5
-+echo "configure:57159: checking base type of last arg to accept" >&5
- if eval "test \"`echo '$''{'mysql_cv_btype_last_arg_accept'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -57165,7 +57173,7 @@
- fi
- mysql_cv_btype_last_arg_accept=none
- cat > conftest.$ac_ext <<EOF
--#line 57169 "configure"
-+#line 57177 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #include <sys/types.h>
-@@ -57175,7 +57183,7 @@
- int a = accept(1, (struct sockaddr *) 0, (socklen_t *) 0);
- ; return 0; }
- EOF
--if { (eval echo configure:57179: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:57187: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- mysql_cv_btype_last_arg_accept=socklen_t
- else
-@@ -57185,7 +57193,7 @@
- rm -f conftest*
- if test $mysql_cv_btype_last_arg_accept = none; then
- cat > conftest.$ac_ext <<EOF
--#line 57189 "configure"
-+#line 57197 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #include <sys/types.h>
-@@ -57195,7 +57203,7 @@
- int a = accept(1, (struct sockaddr *) 0, (size_t *) 0);
- ; return 0; }
- EOF
--if { (eval echo configure:57199: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:57207: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- mysql_cv_btype_last_arg_accept=size_t
- else
-@@ -57224,12 +57232,12 @@
- CXXFLAGS="$ac_save_CXXFLAGS"
-
- echo $ac_n "checking return type of qsort""... $ac_c" 1>&6
--echo "configure:57228: checking return type of qsort" >&5
-+echo "configure:57236: checking return type of qsort" >&5
- if eval "test \"`echo '$''{'mysql_cv_type_qsort'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 57233 "configure"
-+#line 57241 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #ifdef __cplusplus
-@@ -57242,7 +57250,7 @@
- int i;
- ; return 0; }
- EOF
--if { (eval echo configure:57246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:57254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- mysql_cv_type_qsort=void
- else
-@@ -57292,12 +57300,12 @@
- crypt dlopen dlerror fchmod getpass getpassphrase
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:57296: checking for $ac_func" >&5
-+echo "configure:57304: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 57301 "configure"
-+#line 57309 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -57320,7 +57328,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:57324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:57332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -57349,12 +57357,12 @@
- for ac_func in strtok_r
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:57353: checking for $ac_func" >&5
-+echo "configure:57361: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 57358 "configure"
-+#line 57366 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -57377,7 +57385,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:57381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:57389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -57406,7 +57414,7 @@
- # Check definition of gethostbyname_r (glibc2.0.100 is different from Solaris)
- ac_save_CXXFLAGS="$CXXFLAGS"
- echo $ac_n "checking style of gethostname_r routines""... $ac_c" 1>&6
--echo "configure:57410: checking style of gethostname_r routines" >&5
-+echo "configure:57418: checking style of gethostname_r routines" >&5
- if eval "test \"`echo '$''{'mysql_cv_gethostname_style'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -57423,7 +57431,7 @@
- CXXFLAGS="$CXXFLAGS -Werror"
- fi
- cat > conftest.$ac_ext <<EOF
--#line 57427 "configure"
-+#line 57435 "configure"
- #include "confdefs.h"
- #if !defined(SCO) && !defined(__osf__)
- #define _REENTRANT
-@@ -57441,7 +57449,7 @@
- (struct hostent*) 0, (char*) 0, 0, (struct hostent **) 0, &skr);
- ; return 0; }
- EOF
--if { (eval echo configure:57445: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:57453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- mysql_cv_gethostname_style=glibc2
- else
-@@ -57473,7 +57481,7 @@
- # Check 3rd argument of getthostbyname_r
- ac_save_CXXFLAGS="$CXXFLAGS"
- echo $ac_n "checking 3 argument to gethostname_r routines""... $ac_c" 1>&6
--echo "configure:57477: checking 3 argument to gethostname_r routines" >&5
-+echo "configure:57485: checking 3 argument to gethostname_r routines" >&5
- if eval "test \"`echo '$''{'mysql_cv_gethostname_arg'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -57490,7 +57498,7 @@
- CXXFLAGS="$CXXFLAGS -Werror"
- fi
- cat > conftest.$ac_ext <<EOF
--#line 57494 "configure"
-+#line 57502 "configure"
- #include "confdefs.h"
- #if !defined(SCO) && !defined(__osf__)
- #define _REENTRANT
-@@ -57507,7 +57515,7 @@
- skr = gethostbyname_r((const char *) 0, (struct hostent*) 0, (hostent_data*) 0);
- ; return 0; }
- EOF
--if { (eval echo configure:57511: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:57519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- mysql_cv_gethostname_arg=hostent_data
- else
-@@ -57540,12 +57548,12 @@
-
- # Check definition of pthread_getspecific
- echo $ac_n "checking "args to pthread_getspecific"""... $ac_c" 1>&6
--echo "configure:57544: checking "args to pthread_getspecific"" >&5
-+echo "configure:57552: checking "args to pthread_getspecific"" >&5
- if eval "test \"`echo '$''{'mysql_cv_getspecific_args'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 57549 "configure"
-+#line 57557 "configure"
- #include "confdefs.h"
- #ifndef SCO
- #define _REENTRANT
-@@ -57557,7 +57565,7 @@
- pthread_getspecific((pthread_key_t) NULL);
- ; return 0; }
- EOF
--if { (eval echo configure:57561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:57569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- mysql_cv_getspecific_args=POSIX
- else
-@@ -57581,12 +57589,12 @@
-
- # Check definition of pthread_mutex_init
- echo $ac_n "checking "args to pthread_mutex_init"""... $ac_c" 1>&6
--echo "configure:57585: checking "args to pthread_mutex_init"" >&5
-+echo "configure:57593: checking "args to pthread_mutex_init"" >&5
- if eval "test \"`echo '$''{'mysql_cv_mutex_init_args'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 57590 "configure"
-+#line 57598 "configure"
- #include "confdefs.h"
- #ifndef SCO
- #define _REENTRANT
-@@ -57600,7 +57608,7 @@
- pthread_mutex_init(&mp,&attr);
- ; return 0; }
- EOF
--if { (eval echo configure:57604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:57612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- mysql_cv_mutex_init_args=POSIX
- else
-@@ -57624,12 +57632,12 @@
-
- # Check definition of readdir_r
- echo $ac_n "checking "args to readdir_r"""... $ac_c" 1>&6
--echo "configure:57628: checking "args to readdir_r"" >&5
-+echo "configure:57636: checking "args to readdir_r"" >&5
- if eval "test \"`echo '$''{'mysql_cv_readdir_r'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 57633 "configure"
-+#line 57641 "configure"
- #include "confdefs.h"
- #ifndef SCO
- #define _REENTRANT
-@@ -57642,7 +57650,7 @@
- readdir_r((DIR *) NULL, (struct dirent *) NULL, (struct dirent **) NULL);
- ; return 0; }
- EOF
--if { (eval echo configure:57646: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:57654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- mysql_cv_readdir_r=POSIX
- else
-@@ -57666,12 +57674,12 @@
-
- # Check definition av posix sigwait()
- echo $ac_n "checking "style of sigwait"""... $ac_c" 1>&6
--echo "configure:57670: checking "style of sigwait"" >&5
-+echo "configure:57678: checking "style of sigwait"" >&5
- if eval "test \"`echo '$''{'mysql_cv_sigwait'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 57675 "configure"
-+#line 57683 "configure"
- #include "confdefs.h"
- #ifndef SCO
- #define _REENTRANT
-@@ -57687,7 +57695,7 @@
- #endif
- ; return 0; }
- EOF
--if { (eval echo configure:57691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:57699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- mysql_cv_sigwait=POSIX
- else
-@@ -57713,12 +57721,12 @@
- unset mysql_cv_sigwait
- # Check definition av posix sigwait()
- echo $ac_n "checking "style of sigwait"""... $ac_c" 1>&6
--echo "configure:57717: checking "style of sigwait"" >&5
-+echo "configure:57725: checking "style of sigwait"" >&5
- if eval "test \"`echo '$''{'mysql_cv_sigwait'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 57722 "configure"
-+#line 57730 "configure"
- #include "confdefs.h"
- #ifndef SCO
- #define _REENTRANT
-@@ -57732,7 +57740,7 @@
- sigwait(&set);
- ; return 0; }
- EOF
--if { (eval echo configure:57736: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:57744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- mysql_cv_sigwait=NONPOSIX
- else
-@@ -58000,7 +58008,7 @@
-
-
- echo $ac_n "checking size of char""... $ac_c" 1>&6
--echo "configure:58004: checking size of char" >&5
-+echo "configure:58012: checking size of char" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_char'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -58008,9 +58016,10 @@
- ac_cv_sizeof_char=1
- else
- cat > conftest.$ac_ext <<EOF
--#line 58012 "configure"
-+#line 58020 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -58019,7 +58028,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:58023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:58032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_char=`cat conftestval`
- else
-@@ -58040,7 +58049,7 @@
-
-
- echo $ac_n "checking size of int""... $ac_c" 1>&6
--echo "configure:58044: checking size of int" >&5
-+echo "configure:58053: checking size of int" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -58048,9 +58057,10 @@
- ac_cv_sizeof_int=4
- else
- cat > conftest.$ac_ext <<EOF
--#line 58052 "configure"
-+#line 58061 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -58059,7 +58069,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:58063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:58073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_int=`cat conftestval`
- else
-@@ -58079,7 +58089,7 @@
-
-
- echo $ac_n "checking size of long""... $ac_c" 1>&6
--echo "configure:58083: checking size of long" >&5
-+echo "configure:58093: checking size of long" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -58087,9 +58097,10 @@
- ac_cv_sizeof_long=4
- else
- cat > conftest.$ac_ext <<EOF
--#line 58091 "configure"
-+#line 58101 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -58098,7 +58109,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:58102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:58113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_long=`cat conftestval`
- else
-@@ -58118,7 +58129,7 @@
-
-
- echo $ac_n "checking size of long long""... $ac_c" 1>&6
--echo "configure:58122: checking size of long long" >&5
-+echo "configure:58133: checking size of long long" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -58126,9 +58137,10 @@
- ac_cv_sizeof_long_long=8
- else
- cat > conftest.$ac_ext <<EOF
--#line 58130 "configure"
-+#line 58141 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -58137,7 +58149,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:58141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:58153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_long_long=`cat conftestval`
- else
-@@ -58157,12 +58169,12 @@
-
-
- echo $ac_n "checking for size_t""... $ac_c" 1>&6
--echo "configure:58161: checking for size_t" >&5
-+echo "configure:58173: checking for size_t" >&5
- if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 58166 "configure"
-+#line 58178 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #if STDC_HEADERS
-@@ -58190,12 +58202,12 @@
- fi
-
- echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
--echo "configure:58194: checking whether time.h and sys/time.h may both be included" >&5
-+echo "configure:58206: checking whether time.h and sys/time.h may both be included" >&5
- if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 58199 "configure"
-+#line 58211 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/time.h>
-@@ -58204,7 +58216,7 @@
- struct tm *tp;
- ; return 0; }
- EOF
--if { (eval echo configure:58208: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:58220: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_header_time=yes
- else
-@@ -58225,12 +58237,12 @@
- fi
-
- echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
--echo "configure:58229: checking for uid_t in sys/types.h" >&5
-+echo "configure:58241: checking for uid_t in sys/types.h" >&5
- if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 58234 "configure"
-+#line 58246 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- EOF
-@@ -58260,7 +58272,7 @@
-
-
- echo $ac_n "checking for type ulong""... $ac_c" 1>&6
--echo "configure:58264: checking for type ulong" >&5
-+echo "configure:58276: checking for type ulong" >&5
- if eval "test \"`echo '$''{'ac_cv_ulong'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -58268,7 +58280,7 @@
- ac_cv_ulong=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 58272 "configure"
-+#line 58284 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- #include <sys/types.h>
-@@ -58279,7 +58291,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:58283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:58295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_ulong=yes
- else
-@@ -58303,7 +58315,7 @@
- fi
-
- echo $ac_n "checking for type uchar""... $ac_c" 1>&6
--echo "configure:58307: checking for type uchar" >&5
-+echo "configure:58319: checking for type uchar" >&5
- if eval "test \"`echo '$''{'ac_cv_uchar'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -58311,7 +58323,7 @@
- ac_cv_uchar=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 58315 "configure"
-+#line 58327 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- #include <sys/types.h>
-@@ -58322,7 +58334,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:58326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:58338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_uchar=yes
- else
-@@ -58346,7 +58358,7 @@
- fi
-
- echo $ac_n "checking for type uint""... $ac_c" 1>&6
--echo "configure:58350: checking for type uint" >&5
-+echo "configure:58362: checking for type uint" >&5
- if eval "test \"`echo '$''{'ac_cv_uint'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -58354,7 +58366,7 @@
- ac_cv_uint=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 58358 "configure"
-+#line 58370 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- #include <sys/types.h>
-@@ -58365,7 +58377,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:58369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:58381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_uint=yes
- else
-@@ -58389,7 +58401,7 @@
- fi
-
- echo $ac_n "checking for type ushort""... $ac_c" 1>&6
--echo "configure:58393: checking for type ushort" >&5
-+echo "configure:58405: checking for type ushort" >&5
- if eval "test \"`echo '$''{'ac_cv_ushort'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -58397,7 +58409,7 @@
- ac_cv_ushort=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 58401 "configure"
-+#line 58413 "configure"
- #include "confdefs.h"
- #include <stdio.h>
- #include <sys/types.h>
-@@ -58408,7 +58420,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:58412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:58424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_ushort=yes
- else
-@@ -58432,7 +58444,7 @@
- fi
-
- echo $ac_n "checking for int8""... $ac_c" 1>&6
--echo "configure:58436: checking for int8" >&5
-+echo "configure:58448: checking for int8" >&5
- if eval "test \"`echo '$''{'ac_cv_int8'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -58440,7 +58452,7 @@
- ac_cv_int8=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 58444 "configure"
-+#line 58456 "configure"
- #include "confdefs.h"
-
- #ifdef HAVE_STDLIB_H
-@@ -58462,7 +58474,7 @@
- }
-
- EOF
--if { (eval echo configure:58466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:58478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_int8=yes
- else
-@@ -58488,7 +58500,7 @@
-
- ac_save_CXXFLAGS="$CXXFLAGS"
- echo $ac_n "checking base type of last arg to accept""... $ac_c" 1>&6
--echo "configure:58492: checking base type of last arg to accept" >&5
-+echo "configure:58504: checking base type of last arg to accept" >&5
- if eval "test \"`echo '$''{'mysql_cv_btype_last_arg_accept'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -58506,7 +58518,7 @@
- fi
- mysql_cv_btype_last_arg_accept=none
- cat > conftest.$ac_ext <<EOF
--#line 58510 "configure"
-+#line 58522 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #include <sys/types.h>
-@@ -58516,7 +58528,7 @@
- int a = accept(1, (struct sockaddr *) 0, (socklen_t *) 0);
- ; return 0; }
- EOF
--if { (eval echo configure:58520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:58532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- mysql_cv_btype_last_arg_accept=socklen_t
- else
-@@ -58526,7 +58538,7 @@
- rm -f conftest*
- if test $mysql_cv_btype_last_arg_accept = none; then
- cat > conftest.$ac_ext <<EOF
--#line 58530 "configure"
-+#line 58542 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #include <sys/types.h>
-@@ -58536,7 +58548,7 @@
- int a = accept(1, (struct sockaddr *) 0, (size_t *) 0);
- ; return 0; }
- EOF
--if { (eval echo configure:58540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:58552: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- mysql_cv_btype_last_arg_accept=size_t
- else
-@@ -58565,12 +58577,12 @@
- CXXFLAGS="$ac_save_CXXFLAGS"
-
- echo $ac_n "checking return type of qsort""... $ac_c" 1>&6
--echo "configure:58569: checking return type of qsort" >&5
-+echo "configure:58581: checking return type of qsort" >&5
- if eval "test \"`echo '$''{'mysql_cv_type_qsort'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 58574 "configure"
-+#line 58586 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #ifdef __cplusplus
-@@ -58583,7 +58595,7 @@
- int i;
- ; return 0; }
- EOF
--if { (eval echo configure:58587: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:58599: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- mysql_cv_type_qsort=void
- else
-@@ -58947,7 +58959,7 @@
- done
-
- echo $ac_n "checking for mysql_close in -lmysqlclient""... $ac_c" 1>&6
--echo "configure:58951: checking for mysql_close in -lmysqlclient" >&5
-+echo "configure:58963: checking for mysql_close in -lmysqlclient" >&5
- ac_lib_var=`echo mysqlclient'_'mysql_close | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -58955,7 +58967,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lmysqlclient $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 58959 "configure"
-+#line 58971 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -58966,7 +58978,7 @@
- mysql_close()
- ; return 0; }
- EOF
--if { (eval echo configure:58970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:58982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -59171,7 +59183,7 @@
- done
-
- echo $ac_n "checking for mysql_error in -lmysqlclient""... $ac_c" 1>&6
--echo "configure:59175: checking for mysql_error in -lmysqlclient" >&5
-+echo "configure:59187: checking for mysql_error in -lmysqlclient" >&5
- ac_lib_var=`echo mysqlclient'_'mysql_error | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -59179,7 +59191,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lmysqlclient $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 59183 "configure"
-+#line 59195 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -59190,7 +59202,7 @@
- mysql_error()
- ; return 0; }
- EOF
--if { (eval echo configure:59194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:59206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -59328,7 +59340,7 @@
- done
-
- echo $ac_n "checking for mysql_errno in -lmysqlclient""... $ac_c" 1>&6
--echo "configure:59332: checking for mysql_errno in -lmysqlclient" >&5
-+echo "configure:59344: checking for mysql_errno in -lmysqlclient" >&5
- ac_lib_var=`echo mysqlclient'_'mysql_errno | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -59336,7 +59348,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lmysqlclient $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 59340 "configure"
-+#line 59352 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -59347,7 +59359,7 @@
- mysql_errno()
- ; return 0; }
- EOF
--if { (eval echo configure:59351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:59363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -59547,7 +59559,7 @@
-
-
- echo $ac_n "checking for ncurses support""... $ac_c" 1>&6
--echo "configure:59551: checking for ncurses support" >&5
-+echo "configure:59563: checking for ncurses support" >&5
- # Check whether --with-ncurses or --without-ncurses was given.
- if test "${with_ncurses+set}" = set; then
- withval="$with_ncurses"
-@@ -59737,7 +59749,7 @@
- done
-
- echo $ac_n "checking for $LIBSYMBOL in -l$LIBNAME""... $ac_c" 1>&6
--echo "configure:59741: checking for $LIBSYMBOL in -l$LIBNAME" >&5
-+echo "configure:59753: checking for $LIBSYMBOL in -l$LIBNAME" >&5
- ac_lib_var=`echo $LIBNAME'_'$LIBSYMBOL | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -59745,7 +59757,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$LIBNAME $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 59749 "configure"
-+#line 59761 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -59756,7 +59768,7 @@
- $LIBSYMBOL()
- ; return 0; }
- EOF
--if { (eval echo configure:59760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:59772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -59957,7 +59969,7 @@
- done
-
- echo $ac_n "checking for new_panel in -lpanel""... $ac_c" 1>&6
--echo "configure:59961: checking for new_panel in -lpanel" >&5
-+echo "configure:59973: checking for new_panel in -lpanel" >&5
- ac_lib_var=`echo panel'_'new_panel | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -59965,7 +59977,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpanel $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 59969 "configure"
-+#line 59981 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -59976,7 +59988,7 @@
- new_panel()
- ; return 0; }
- EOF
--if { (eval echo configure:59980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:59992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -60123,7 +60135,7 @@
-
-
- echo $ac_n "checking for color_set in -l$LIBNAME""... $ac_c" 1>&6
--echo "configure:60127: checking for color_set in -l$LIBNAME" >&5
-+echo "configure:60139: checking for color_set in -l$LIBNAME" >&5
- ac_lib_var=`echo $LIBNAME'_'color_set | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -60131,7 +60143,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$LIBNAME $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 60135 "configure"
-+#line 60147 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -60142,7 +60154,7 @@
- color_set()
- ; return 0; }
- EOF
--if { (eval echo configure:60146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:60158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -60166,7 +60178,7 @@
- fi
-
- echo $ac_n "checking for slk_color in -l$LIBNAME""... $ac_c" 1>&6
--echo "configure:60170: checking for slk_color in -l$LIBNAME" >&5
-+echo "configure:60182: checking for slk_color in -l$LIBNAME" >&5
- ac_lib_var=`echo $LIBNAME'_'slk_color | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -60174,7 +60186,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$LIBNAME $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 60178 "configure"
-+#line 60190 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -60185,7 +60197,7 @@
- slk_color()
- ; return 0; }
- EOF
--if { (eval echo configure:60189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:60201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -60209,7 +60221,7 @@
- fi
-
- echo $ac_n "checking for assume_default_colors in -l$LIBNAME""... $ac_c" 1>&6
--echo "configure:60213: checking for assume_default_colors in -l$LIBNAME" >&5
-+echo "configure:60225: checking for assume_default_colors in -l$LIBNAME" >&5
- ac_lib_var=`echo $LIBNAME'_'assume_default_colors | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -60217,7 +60229,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$LIBNAME $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 60221 "configure"
-+#line 60233 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -60228,7 +60240,7 @@
- assume_default_colors()
- ; return 0; }
- EOF
--if { (eval echo configure:60232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:60244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -60252,7 +60264,7 @@
- fi
-
- echo $ac_n "checking for use_extended_names in -l$LIBNAME""... $ac_c" 1>&6
--echo "configure:60256: checking for use_extended_names in -l$LIBNAME" >&5
-+echo "configure:60268: checking for use_extended_names in -l$LIBNAME" >&5
- ac_lib_var=`echo $LIBNAME'_'use_extended_names | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -60260,7 +60272,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$LIBNAME $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 60264 "configure"
-+#line 60276 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -60271,7 +60283,7 @@
- use_extended_names()
- ; return 0; }
- EOF
--if { (eval echo configure:60275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:60287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -60532,7 +60544,7 @@
-
-
- echo $ac_n "checking for Oracle (OCI8) support using ORACLE_HOME installation""... $ac_c" 1>&6
--echo "configure:60536: checking for Oracle (OCI8) support using ORACLE_HOME installation" >&5
-+echo "configure:60548: checking for Oracle (OCI8) support using ORACLE_HOME installation" >&5
- # Check whether --with-oci8 or --without-oci8 was given.
- if test "${with_oci8+set}" = set; then
- withval="$with_oci8"
-@@ -60579,7 +60591,7 @@
-
-
- echo $ac_n "checking for Oracle (OCI8) support using Oracle Instant Client""... $ac_c" 1>&6
--echo "configure:60583: checking for Oracle (OCI8) support using Oracle Instant Client" >&5
-+echo "configure:60595: checking for Oracle (OCI8) support using Oracle Instant Client" >&5
- # Check whether --with-oci8-instant-client or --without-oci8-instant-client was given.
- if test "${with_oci8_instant_client+set}" = set; then
- withval="$with_oci8_instant_client"
-@@ -60632,7 +60644,7 @@
- fi
-
- echo $ac_n "checking Oracle Install Directory""... $ac_c" 1>&6
--echo "configure:60636: checking Oracle Install Directory" >&5
-+echo "configure:60648: checking Oracle Install Directory" >&5
- if test "$PHP_OCI8" = "yes"; then
- OCI8_DIR=$ORACLE_HOME
- else
-@@ -60927,7 +60939,7 @@
-
-
- echo $ac_n "checking Oracle version""... $ac_c" 1>&6
--echo "configure:60931: checking Oracle version" >&5
-+echo "configure:60943: checking Oracle version" >&5
- if test -s "$OCI8_DIR/orainst/unix.rgs"; then
- OCI8_VERSION=`grep '"ocommon"' $OCI8_DIR/orainst/unix.rgs | sed 's/ */:/g' | cut -d: -f 6 | cut -c 2-4`
- test -z "$OCI8_VERSION" && OCI8_VERSION=7.3
-@@ -61404,7 +61416,7 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS=$OCI8_INCLUDES
- cat > conftest.$ac_ext <<EOF
--#line 61408 "configure"
-+#line 61420 "configure"
- #include "confdefs.h"
-
- #include <oci.h>
-@@ -61581,7 +61593,7 @@
- done
-
- echo $ac_n "checking for OCIEnvNlsCreate in -lclntsh""... $ac_c" 1>&6
--echo "configure:61585: checking for OCIEnvNlsCreate in -lclntsh" >&5
-+echo "configure:61597: checking for OCIEnvNlsCreate in -lclntsh" >&5
- ac_lib_var=`echo clntsh'_'OCIEnvNlsCreate | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -61589,7 +61601,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lclntsh $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 61593 "configure"
-+#line 61605 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -61600,7 +61612,7 @@
- OCIEnvNlsCreate()
- ; return 0; }
- EOF
--if { (eval echo configure:61604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:61616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -61700,7 +61712,7 @@
- done
-
- echo $ac_n "checking for OCINlsCharSetNameToId in -lclntsh""... $ac_c" 1>&6
--echo "configure:61704: checking for OCINlsCharSetNameToId in -lclntsh" >&5
-+echo "configure:61716: checking for OCINlsCharSetNameToId in -lclntsh" >&5
- ac_lib_var=`echo clntsh'_'OCINlsCharSetNameToId | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -61708,7 +61720,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lclntsh $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 61712 "configure"
-+#line 61724 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -61719,7 +61731,7 @@
- OCINlsCharSetNameToId()
- ; return 0; }
- EOF
--if { (eval echo configure:61723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:61735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -61934,7 +61946,7 @@
- done
-
- echo $ac_n "checking for OCILobIsTemporary in -lclntsh""... $ac_c" 1>&6
--echo "configure:61938: checking for OCILobIsTemporary in -lclntsh" >&5
-+echo "configure:61950: checking for OCILobIsTemporary in -lclntsh" >&5
- ac_lib_var=`echo clntsh'_'OCILobIsTemporary | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -61942,7 +61954,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lclntsh $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 61946 "configure"
-+#line 61958 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -61953,7 +61965,7 @@
- OCILobIsTemporary()
- ; return 0; }
- EOF
--if { (eval echo configure:61957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:61969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -62066,7 +62078,7 @@
- done
-
- echo $ac_n "checking for OCILobIsTemporary in -locijdbc8""... $ac_c" 1>&6
--echo "configure:62070: checking for OCILobIsTemporary in -locijdbc8" >&5
-+echo "configure:62082: checking for OCILobIsTemporary in -locijdbc8" >&5
- ac_lib_var=`echo ocijdbc8'_'OCILobIsTemporary | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -62074,7 +62086,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-locijdbc8 $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 62078 "configure"
-+#line 62090 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -62085,7 +62097,7 @@
- OCILobIsTemporary()
- ; return 0; }
- EOF
--if { (eval echo configure:62089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:62101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -62229,7 +62241,7 @@
- done
-
- echo $ac_n "checking for OCICollAssign in -lclntsh""... $ac_c" 1>&6
--echo "configure:62233: checking for OCICollAssign in -lclntsh" >&5
-+echo "configure:62245: checking for OCICollAssign in -lclntsh" >&5
- ac_lib_var=`echo clntsh'_'OCICollAssign | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -62237,7 +62249,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lclntsh $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 62241 "configure"
-+#line 62253 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -62248,7 +62260,7 @@
- OCICollAssign()
- ; return 0; }
- EOF
--if { (eval echo configure:62252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:62264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -62533,7 +62545,7 @@
- elif test "$PHP_OCI8_INSTANT_CLIENT" != "no"; then
-
- echo $ac_n "checking Oracle Instant Client directory""... $ac_c" 1>&6
--echo "configure:62537: checking Oracle Instant Client directory" >&5
-+echo "configure:62549: checking Oracle Instant Client directory" >&5
- if test "$PHP_OCI8_INSTANT_CLIENT" = "yes"; then
- PHP_OCI8_INSTANT_CLIENT=`ls -d /usr/lib/oracle/*/client/lib 2> /dev/null | tail -1`
- if test -z "$PHP_OCI8_INSTANT_CLIENT"; then
-@@ -62545,7 +62557,7 @@
- OCI8_DIR=$PHP_OCI8_INSTANT_CLIENT
-
- echo $ac_n "checking Oracle Instant Client SDK header directory""... $ac_c" 1>&6
--echo "configure:62549: checking Oracle Instant Client SDK header directory" >&5
-+echo "configure:62561: checking Oracle Instant Client SDK header directory" >&5
-
- OCISDKRPMINC=`echo "$PHP_OCI8_INSTANT_CLIENT" | sed -e 's!^/usr/lib/oracle/\(.*\)/client/lib[/]*$!/usr/include/oracle/\1/client!'`
-
-@@ -62701,7 +62713,7 @@
-
-
- echo $ac_n "checking Oracle Instant Client version""... $ac_c" 1>&6
--echo "configure:62705: checking Oracle Instant Client version" >&5
-+echo "configure:62717: checking Oracle Instant Client version" >&5
- if test -f $PHP_OCI8_INSTANT_CLIENT/libociei.$SHLIB_SUFFIX_NAME; then
- if test -f $PHP_OCI8_INSTANT_CLIENT/libclntsh.$SHLIB_SUFFIX_NAME.10.1; then
- if test ! -f $PHP_OCI8_INSTANT_CLIENT/libclntsh.$SHLIB_SUFFIX_NAME; then
-@@ -63063,7 +63075,7 @@
-
- if test -z "$ODBC_TYPE"; then
- echo $ac_n "checking for Adabas support""... $ac_c" 1>&6
--echo "configure:63067: checking for Adabas support" >&5
-+echo "configure:63079: checking for Adabas support" >&5
- # Check whether --with-adabas or --without-adabas was given.
- if test "${with_adabas+set}" = set; then
- withval="$with_adabas"
-@@ -63256,7 +63268,7 @@
-
- if test -z "$ODBC_TYPE"; then
- echo $ac_n "checking for SAP DB support""... $ac_c" 1>&6
--echo "configure:63260: checking for SAP DB support" >&5
-+echo "configure:63272: checking for SAP DB support" >&5
- # Check whether --with-sapdb or --without-sapdb was given.
- if test "${with_sapdb+set}" = set; then
- withval="$with_sapdb"
-@@ -63386,7 +63398,7 @@
-
- if test -z "$ODBC_TYPE"; then
- echo $ac_n "checking for Solid support""... $ac_c" 1>&6
--echo "configure:63390: checking for Solid support" >&5
-+echo "configure:63402: checking for Solid support" >&5
- # Check whether --with-solid or --without-solid was given.
- if test "${with_solid+set}" = set; then
- withval="$with_solid"
-@@ -63444,7 +63456,7 @@
- echo "$ac_t""yes" 1>&6
-
- echo $ac_n "checking Solid library file""... $ac_c" 1>&6
--echo "configure:63448: checking Solid library file" >&5
-+echo "configure:63460: checking Solid library file" >&5
- ac_solid_uname_r=`uname -r 2>/dev/null`
- ac_solid_uname_s=`uname -s 2>/dev/null`
- case $ac_solid_uname_s in
-@@ -63530,7 +63542,7 @@
-
- if test -z "$ODBC_TYPE"; then
- echo $ac_n "checking for IBM DB2 support""... $ac_c" 1>&6
--echo "configure:63534: checking for IBM DB2 support" >&5
-+echo "configure:63546: checking for IBM DB2 support" >&5
- # Check whether --with-ibm-db2 or --without-ibm-db2 was given.
- if test "${with_ibm_db2+set}" = set; then
- withval="$with_ibm_db2"
-@@ -63602,7 +63614,7 @@
-
- if test -z "$ODBC_TYPE"; then
- echo $ac_n "checking for Empress support""... $ac_c" 1>&6
--echo "configure:63606: checking for Empress support" >&5
-+echo "configure:63618: checking for Empress support" >&5
- # Check whether --with-empress or --without-empress was given.
- if test "${with_empress+set}" = set; then
- withval="$with_empress"
-@@ -63651,7 +63663,7 @@
- echo "$ac_t""yes" 1>&6
-
- echo $ac_n "checking Empress library file""... $ac_c" 1>&6
--echo "configure:63655: checking Empress library file" >&5
-+echo "configure:63667: checking Empress library file" >&5
- ODBC_LIBS=`echo $ODBC_LIBDIR/libempodbccl.so | cut -d' ' -f1`
- if test ! -f $ODBC_LIBS; then
- ODBC_LIBS=`echo $ODBC_LIBDIR/libempodbccl.so | cut -d' ' -f1`
-@@ -63672,7 +63684,7 @@
-
- if test -z "$ODBC_TYPE"; then
- echo $ac_n "checking for Empress local access support""... $ac_c" 1>&6
--echo "configure:63676: checking for Empress local access support" >&5
-+echo "configure:63688: checking for Empress local access support" >&5
- # Check whether --with-empress-bcs or --without-empress-bcs was given.
- if test "${with_empress_bcs+set}" = set; then
- withval="$with_empress_bcs"
-@@ -63737,7 +63749,7 @@
- echo "$ac_t""yes" 1>&6
-
- echo $ac_n "checking Empress local access library file""... $ac_c" 1>&6
--echo "configure:63741: checking Empress local access library file" >&5
-+echo "configure:63753: checking Empress local access library file" >&5
- ODBCBCS_LIBS=`echo $ODBC_LIBDIR/libempodbcbcs.a | cut -d' ' -f1`
- if test ! -f $ODBCBCS_LIBS; then
- ODBCBCS_LIBS=`echo $ODBC_LIBDIR/libempodbcbcs.a | cut -d' ' -f1`
-@@ -63758,7 +63770,7 @@
-
- if test -z "$ODBC_TYPE"; then
- echo $ac_n "checking for Birdstep support""... $ac_c" 1>&6
--echo "configure:63762: checking for Birdstep support" >&5
-+echo "configure:63774: checking for Birdstep support" >&5
- # Check whether --with-birdstep or --without-birdstep was given.
- if test "${with_birdstep+set}" = set; then
- withval="$with_birdstep"
-@@ -63822,7 +63834,7 @@
-
- if test -z "$ODBC_TYPE"; then
- echo $ac_n "checking for a custom ODBC support""... $ac_c" 1>&6
--echo "configure:63826: checking for a custom ODBC support" >&5
-+echo "configure:63838: checking for a custom ODBC support" >&5
- # Check whether --with-custom-odbc or --without-custom-odbc was given.
- if test "${with_custom_odbc+set}" = set; then
- withval="$with_custom_odbc"
-@@ -63856,7 +63868,7 @@
-
- if test -z "$ODBC_TYPE"; then
- echo $ac_n "checking for iODBC support""... $ac_c" 1>&6
--echo "configure:63860: checking for iODBC support" >&5
-+echo "configure:63872: checking for iODBC support" >&5
- # Check whether --with-iodbc or --without-iodbc was given.
- if test "${with_iodbc+set}" = set; then
- withval="$with_iodbc"
-@@ -63998,7 +64010,7 @@
-
- if test -z "$ODBC_TYPE"; then
- echo $ac_n "checking for Easysoft ODBC-ODBC Bridge support""... $ac_c" 1>&6
--echo "configure:64002: checking for Easysoft ODBC-ODBC Bridge support" >&5
-+echo "configure:64014: checking for Easysoft ODBC-ODBC Bridge support" >&5
- # Check whether --with-esoob or --without-esoob was given.
- if test "${with_esoob+set}" = set; then
- withval="$with_esoob"
-@@ -64058,7 +64070,7 @@
-
- if test -z "$ODBC_TYPE"; then
- echo $ac_n "checking for unixODBC support""... $ac_c" 1>&6
--echo "configure:64062: checking for unixODBC support" >&5
-+echo "configure:64074: checking for unixODBC support" >&5
- # Check whether --with-unixODBC or --without-unixODBC was given.
- if test "${with_unixODBC+set}" = set; then
- withval="$with_unixODBC"
-@@ -64118,7 +64130,7 @@
-
- if test -z "$ODBC_TYPE"; then
- echo $ac_n "checking for DBMaker support""... $ac_c" 1>&6
--echo "configure:64122: checking for DBMaker support" >&5
-+echo "configure:64134: checking for DBMaker support" >&5
- # Check whether --with-dbmaker or --without-dbmaker was given.
- if test "${with_dbmaker+set}" = set; then
- withval="$with_dbmaker"
-@@ -64636,7 +64648,7 @@
-
-
- echo $ac_n "checking for Oracle-ORACLE support""... $ac_c" 1>&6
--echo "configure:64640: checking for Oracle-ORACLE support" >&5
-+echo "configure:64652: checking for Oracle-ORACLE support" >&5
- # Check whether --with-oracle or --without-oracle was given.
- if test "${with_oracle+set}" = set; then
- withval="$with_oracle"
-@@ -64681,7 +64693,7 @@
-
- if test "$PHP_ORACLE" != "no"; then
- echo $ac_n "checking Oracle Install-Dir""... $ac_c" 1>&6
--echo "configure:64685: checking Oracle Install-Dir" >&5
-+echo "configure:64697: checking Oracle Install-Dir" >&5
- if test "$PHP_ORACLE" = "yes"; then
- ORACLE_DIR=$ORACLE_HOME
- else
-@@ -64972,7 +64984,7 @@
-
-
- echo $ac_n "checking Oracle version""... $ac_c" 1>&6
--echo "configure:64976: checking Oracle version" >&5
-+echo "configure:64988: checking Oracle version" >&5
- if test -s "$ORACLE_DIR/orainst/unix.rgs"; then
- ORACLE_VERSION=`grep '"ocommon"' $ORACLE_DIR/orainst/unix.rgs | sed 's/ */:/g' | cut -d: -f 6 | cut -c 2-4`
- test -z "$ORACLE_VERSION" && ORACLE_VERSION=7.3
-@@ -69669,7 +69681,7 @@
-
-
- echo $ac_n "checking whether to enable user-space object overloading support""... $ac_c" 1>&6
--echo "configure:69673: checking whether to enable user-space object overloading support" >&5
-+echo "configure:69685: checking whether to enable user-space object overloading support" >&5
- # Check whether --enable-overload or --disable-overload was given.
- if test "${enable_overload+set}" = set; then
- enableval="$enable_overload"
-@@ -69944,7 +69956,7 @@
-
-
- echo $ac_n "checking for Ovrimos SQL Server support""... $ac_c" 1>&6
--echo "configure:69948: checking for Ovrimos SQL Server support" >&5
-+echo "configure:69960: checking for Ovrimos SQL Server support" >&5
- # Check whether --with-ovrimos or --without-ovrimos was given.
- if test "${with_ovrimos+set}" = set; then
- withval="$with_ovrimos"
-@@ -70029,7 +70041,7 @@
-
- LDFLAGS="$LDFLAGS $ld_runpath_switch$OVRIMOS_DIR/lib -L$OVRIMOS_DIR/lib"
- echo $ac_n "checking for main in -lsqlcli""... $ac_c" 1>&6
--echo "configure:70033: checking for main in -lsqlcli" >&5
-+echo "configure:70045: checking for main in -lsqlcli" >&5
- ac_lib_var=`echo sqlcli'_'main | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -70037,14 +70049,14 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsqlcli $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 70041 "configure"
-+#line 70053 "configure"
- #include "confdefs.h"
-
- int main() {
- main()
- ; return 0; }
- EOF
--if { (eval echo configure:70048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:70060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -70403,7 +70415,7 @@
-
-
- echo $ac_n "checking whether to enable pcntl support""... $ac_c" 1>&6
--echo "configure:70407: checking whether to enable pcntl support" >&5
-+echo "configure:70419: checking whether to enable pcntl support" >&5
- # Check whether --enable-pcntl or --disable-pcntl was given.
- if test "${enable_pcntl+set}" = set; then
- enableval="$enable_pcntl"
-@@ -70451,12 +70463,12 @@
- for ac_func in fork
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:70455: checking for $ac_func" >&5
-+echo "configure:70467: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 70460 "configure"
-+#line 70472 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -70479,7 +70491,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:70483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:70495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -70510,12 +70522,12 @@
- for ac_func in waitpid
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:70514: checking for $ac_func" >&5
-+echo "configure:70526: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 70519 "configure"
-+#line 70531 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -70538,7 +70550,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:70542: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:70554: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -70569,12 +70581,12 @@
- for ac_func in sigaction
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:70573: checking for $ac_func" >&5
-+echo "configure:70585: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 70578 "configure"
-+#line 70590 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -70597,7 +70609,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:70601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:70613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -70854,7 +70866,7 @@
-
-
- echo $ac_n "checking for PCRE support""... $ac_c" 1>&6
--echo "configure:70858: checking for PCRE support" >&5
-+echo "configure:70870: checking for PCRE support" >&5
- # Check whether --with-pcre-regex or --without-pcre-regex was given.
- if test "${with_pcre_regex+set}" = set; then
- withval="$with_pcre_regex"
-@@ -71520,7 +71532,7 @@
-
-
- echo $ac_n "checking for PDFlib support""... $ac_c" 1>&6
--echo "configure:71524: checking for PDFlib support" >&5
-+echo "configure:71536: checking for PDFlib support" >&5
- # Check whether --with-pdflib or --without-pdflib was given.
- if test "${with_pdflib+set}" = set; then
- withval="$with_pdflib"
-@@ -71567,7 +71579,7 @@
-
-
- echo $ac_n "checking for the location of libjpeg""... $ac_c" 1>&6
--echo "configure:71571: checking for the location of libjpeg" >&5
-+echo "configure:71583: checking for the location of libjpeg" >&5
- # Check whether --with-jpeg-dir or --without-jpeg-dir was given.
- if test "${with_jpeg_dir+set}" = set; then
- withval="$with_jpeg_dir"
-@@ -71594,7 +71606,7 @@
-
-
- echo $ac_n "checking for the location of libpng""... $ac_c" 1>&6
--echo "configure:71598: checking for the location of libpng" >&5
-+echo "configure:71610: checking for the location of libpng" >&5
- # Check whether --with-png-dir or --without-png-dir was given.
- if test "${with_png_dir+set}" = set; then
- withval="$with_png_dir"
-@@ -71621,7 +71633,7 @@
-
-
- echo $ac_n "checking for the location of libz""... $ac_c" 1>&6
--echo "configure:71625: checking for the location of libz" >&5
-+echo "configure:71637: checking for the location of libz" >&5
- # Check whether --with-zlib-dir or --without-zlib-dir was given.
- if test "${with_zlib_dir+set}" = set; then
- withval="$with_zlib_dir"
-@@ -71647,7 +71659,7 @@
-
-
- echo $ac_n "checking for the location of libtiff""... $ac_c" 1>&6
--echo "configure:71651: checking for the location of libtiff" >&5
-+echo "configure:71663: checking for the location of libtiff" >&5
- # Check whether --with-tiff-dir or --without-tiff-dir was given.
- if test "${with_tiff_dir+set}" = set; then
- withval="$with_tiff_dir"
-@@ -71979,7 +71991,7 @@
- done
-
- echo $ac_n "checking for jpeg_read_header in -ljpeg""... $ac_c" 1>&6
--echo "configure:71983: checking for jpeg_read_header in -ljpeg" >&5
-+echo "configure:71995: checking for jpeg_read_header in -ljpeg" >&5
- ac_lib_var=`echo jpeg'_'jpeg_read_header | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -71987,7 +71999,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ljpeg $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 71991 "configure"
-+#line 72003 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -71998,7 +72010,7 @@
- jpeg_read_header()
- ; return 0; }
- EOF
--if { (eval echo configure:72002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:72014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -72213,7 +72225,7 @@
- done
-
- echo $ac_n "checking for png_create_info_struct in -lpng""... $ac_c" 1>&6
--echo "configure:72217: checking for png_create_info_struct in -lpng" >&5
-+echo "configure:72229: checking for png_create_info_struct in -lpng" >&5
- ac_lib_var=`echo png'_'png_create_info_struct | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -72221,7 +72233,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpng $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 72225 "configure"
-+#line 72237 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -72232,7 +72244,7 @@
- png_create_info_struct()
- ; return 0; }
- EOF
--if { (eval echo configure:72236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:72248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -72447,7 +72459,7 @@
- done
-
- echo $ac_n "checking for TIFFOpen in -ltiff""... $ac_c" 1>&6
--echo "configure:72451: checking for TIFFOpen in -ltiff" >&5
-+echo "configure:72463: checking for TIFFOpen in -ltiff" >&5
- ac_lib_var=`echo tiff'_'TIFFOpen | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -72455,7 +72467,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ltiff $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 72459 "configure"
-+#line 72471 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -72466,7 +72478,7 @@
- TIFFOpen()
- ; return 0; }
- EOF
--if { (eval echo configure:72470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:72482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -72600,7 +72612,7 @@
- fi
-
- echo $ac_n "checking for the location of zlib""... $ac_c" 1>&6
--echo "configure:72604: checking for the location of zlib" >&5
-+echo "configure:72616: checking for the location of zlib" >&5
- if test "$PHP_ZLIB_DIR" = "no"; then
- echo "$ac_t""no. If configure fails, try --with-zlib-dir=<DIR>" 1>&6
- else
-@@ -72748,7 +72760,7 @@
- case $PHP_PDFLIB in
- yes)
- echo $ac_n "checking for PDF_show_boxed in -lpdf""... $ac_c" 1>&6
--echo "configure:72752: checking for PDF_show_boxed in -lpdf" >&5
-+echo "configure:72764: checking for PDF_show_boxed in -lpdf" >&5
- ac_lib_var=`echo pdf'_'PDF_show_boxed | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -72756,7 +72768,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpdf $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 72760 "configure"
-+#line 72772 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -72767,7 +72779,7 @@
- PDF_show_boxed()
- ; return 0; }
- EOF
--if { (eval echo configure:72771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:72783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -72907,7 +72919,7 @@
- done
-
- echo $ac_n "checking for PDF_show_boxed in -lpdf""... $ac_c" 1>&6
--echo "configure:72911: checking for PDF_show_boxed in -lpdf" >&5
-+echo "configure:72923: checking for PDF_show_boxed in -lpdf" >&5
- ac_lib_var=`echo pdf'_'PDF_show_boxed | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -72915,7 +72927,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpdf $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 72919 "configure"
-+#line 72931 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -72926,7 +72938,7 @@
- PDF_show_boxed()
- ; return 0; }
- EOF
--if { (eval echo configure:72930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:72942: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -73105,7 +73117,7 @@
-
-
- echo $ac_n "checking for Verisign Payflow Pro support""... $ac_c" 1>&6
--echo "configure:73109: checking for Verisign Payflow Pro support" >&5
-+echo "configure:73121: checking for Verisign Payflow Pro support" >&5
- # Check whether --with-pfpro or --without-pfpro was given.
- if test "${with_pfpro+set}" = set; then
- withval="$with_pfpro"
-@@ -73265,7 +73277,7 @@
- done
-
- echo $ac_n "checking for pfproInit in -lpfpro""... $ac_c" 1>&6
--echo "configure:73269: checking for pfproInit in -lpfpro" >&5
-+echo "configure:73281: checking for pfproInit in -lpfpro" >&5
- ac_lib_var=`echo pfpro'_'pfproInit | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -73273,7 +73285,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpfpro $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 73277 "configure"
-+#line 73289 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -73284,7 +73296,7 @@
- pfproInit()
- ; return 0; }
- EOF
--if { (eval echo configure:73288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:73300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -73394,7 +73406,7 @@
- done
-
- echo $ac_n "checking for PNInit in -lpfpro""... $ac_c" 1>&6
--echo "configure:73398: checking for PNInit in -lpfpro" >&5
-+echo "configure:73410: checking for PNInit in -lpfpro" >&5
- ac_lib_var=`echo pfpro'_'PNInit | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -73402,7 +73414,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpfpro $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 73406 "configure"
-+#line 73418 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -73413,7 +73425,7 @@
- PNInit()
- ; return 0; }
- EOF
--if { (eval echo configure:73417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:73429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -73818,7 +73830,7 @@
-
-
- echo $ac_n "checking for PostgreSQL support""... $ac_c" 1>&6
--echo "configure:73822: checking for PostgreSQL support" >&5
-+echo "configure:73834: checking for PostgreSQL support" >&5
- # Check whether --with-pgsql or --without-pgsql was given.
- if test "${with_pgsql+set}" = set; then
- withval="$with_pgsql"
-@@ -73921,7 +73933,7 @@
- old_LDFLAGS=$LDFLAGS
- LDFLAGS="$LDFLAGS -L$PGSQL_LIBDIR"
- echo $ac_n "checking for PQescapeString in -lpq""... $ac_c" 1>&6
--echo "configure:73925: checking for PQescapeString in -lpq" >&5
-+echo "configure:73937: checking for PQescapeString in -lpq" >&5
- ac_lib_var=`echo pq'_'PQescapeString | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -73929,7 +73941,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpq $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 73933 "configure"
-+#line 73945 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -73940,7 +73952,7 @@
- PQescapeString()
- ; return 0; }
- EOF
--if { (eval echo configure:73944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:73956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -73964,7 +73976,7 @@
- fi
-
- echo $ac_n "checking for PQsetnonblocking in -lpq""... $ac_c" 1>&6
--echo "configure:73968: checking for PQsetnonblocking in -lpq" >&5
-+echo "configure:73980: checking for PQsetnonblocking in -lpq" >&5
- ac_lib_var=`echo pq'_'PQsetnonblocking | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -73972,7 +73984,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpq $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 73976 "configure"
-+#line 73988 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -73983,7 +73995,7 @@
- PQsetnonblocking()
- ; return 0; }
- EOF
--if { (eval echo configure:73987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:73999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -74007,7 +74019,7 @@
- fi
-
- echo $ac_n "checking for PQcmdTuples in -lpq""... $ac_c" 1>&6
--echo "configure:74011: checking for PQcmdTuples in -lpq" >&5
-+echo "configure:74023: checking for PQcmdTuples in -lpq" >&5
- ac_lib_var=`echo pq'_'PQcmdTuples | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -74015,7 +74027,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpq $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 74019 "configure"
-+#line 74031 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -74026,7 +74038,7 @@
- PQcmdTuples()
- ; return 0; }
- EOF
--if { (eval echo configure:74030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:74042: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -74050,7 +74062,7 @@
- fi
-
- echo $ac_n "checking for PQoidValue in -lpq""... $ac_c" 1>&6
--echo "configure:74054: checking for PQoidValue in -lpq" >&5
-+echo "configure:74066: checking for PQoidValue in -lpq" >&5
- ac_lib_var=`echo pq'_'PQoidValue | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -74058,7 +74070,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpq $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 74062 "configure"
-+#line 74074 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -74069,7 +74081,7 @@
- PQoidValue()
- ; return 0; }
- EOF
--if { (eval echo configure:74073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:74085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -74093,7 +74105,7 @@
- fi
-
- echo $ac_n "checking for PQclientEncoding in -lpq""... $ac_c" 1>&6
--echo "configure:74097: checking for PQclientEncoding in -lpq" >&5
-+echo "configure:74109: checking for PQclientEncoding in -lpq" >&5
- ac_lib_var=`echo pq'_'PQclientEncoding | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -74101,7 +74113,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpq $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 74105 "configure"
-+#line 74117 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -74112,7 +74124,7 @@
- PQclientEncoding()
- ; return 0; }
- EOF
--if { (eval echo configure:74116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:74128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -74136,7 +74148,7 @@
- fi
-
- echo $ac_n "checking for pg_encoding_to_char in -lpq""... $ac_c" 1>&6
--echo "configure:74140: checking for pg_encoding_to_char in -lpq" >&5
-+echo "configure:74152: checking for pg_encoding_to_char in -lpq" >&5
- ac_lib_var=`echo pq'_'pg_encoding_to_char | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -74144,7 +74156,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lpq $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 74148 "configure"
-+#line 74160 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -74155,7 +74167,7 @@
- pg_encoding_to_char()
- ; return 0; }
- EOF
--if { (eval echo configure:74159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:74171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -74542,7 +74554,7 @@
-
-
- echo $ac_n "checking whether to enable POSIX-like functions""... $ac_c" 1>&6
--echo "configure:74546: checking whether to enable POSIX-like functions" >&5
-+echo "configure:74558: checking whether to enable POSIX-like functions" >&5
- # Check whether --enable-posix or --disable-posix was given.
- if test "${enable_posix+set}" = set; then
- enableval="$enable_posix"
-@@ -74815,12 +74827,12 @@
- for ac_func in seteuid setegid setsid getsid setpgid getpgid ctermid mkfifo getrlimit
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:74819: checking for $ac_func" >&5
-+echo "configure:74831: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 74824 "configure"
-+#line 74836 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -74843,7 +74855,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:74847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:74859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -74873,7 +74885,7 @@
-
-
- echo $ac_n "checking for PSPELL support""... $ac_c" 1>&6
--echo "configure:74877: checking for PSPELL support" >&5
-+echo "configure:74889: checking for PSPELL support" >&5
- # Check whether --with-pspell or --without-pspell was given.
- if test "${with_pspell+set}" = set; then
- withval="$with_pspell"
-@@ -75337,7 +75349,7 @@
- done
-
- echo $ac_n "checking for new_aspell_config in -laspell""... $ac_c" 1>&6
--echo "configure:75341: checking for new_aspell_config in -laspell" >&5
-+echo "configure:75353: checking for new_aspell_config in -laspell" >&5
- ac_lib_var=`echo aspell'_'new_aspell_config | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -75345,7 +75357,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-laspell $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 75349 "configure"
-+#line 75361 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -75356,7 +75368,7 @@
- new_aspell_config()
- ; return 0; }
- EOF
--if { (eval echo configure:75360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:75372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -75528,7 +75540,7 @@
-
-
- echo $ac_n "checking for QtDOM support""... $ac_c" 1>&6
--echo "configure:75532: checking for QtDOM support" >&5
-+echo "configure:75544: checking for QtDOM support" >&5
- # Check whether --with-qtdom or --without-qtdom was given.
- if test "${with_qtdom+set}" = set; then
- withval="$with_qtdom"
-@@ -75956,7 +75968,7 @@
- # 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:75960: checking for $ac_word" >&5
-+echo "configure:75972: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -75988,7 +76000,7 @@
-
-
- echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
--echo "configure:75992: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
-+echo "configure:76004: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
-
- ac_ext=C
- # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-@@ -75999,12 +76011,12 @@
-
- cat > conftest.$ac_ext << EOF
-
--#line 76003 "configure"
-+#line 76015 "configure"
- #include "confdefs.h"
-
- int main(){return(0);}
- EOF
--if { (eval echo configure:76008: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:76020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- ac_cv_prog_cxx_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
-@@ -76030,12 +76042,12 @@
- { 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 ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
--echo "configure:76034: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
-+echo "configure:76046: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
- echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
- cross_compiling=$ac_cv_prog_cxx_cross
-
- echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
--echo "configure:76039: checking whether we are using GNU C++" >&5
-+echo "configure:76051: checking whether we are using GNU C++" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -76044,7 +76056,7 @@
- yes;
- #endif
- EOF
--if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:76048: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:76060: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gxx=yes
- else
- ac_cv_prog_gxx=no
-@@ -76063,7 +76075,7 @@
- ac_save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS=
- echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
--echo "configure:76067: checking whether ${CXX-g++} accepts -g" >&5
-+echo "configure:76079: checking whether ${CXX-g++} accepts -g" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -76095,7 +76107,7 @@
- fi
-
- echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
--echo "configure:76099: checking how to run the C++ preprocessor" >&5
-+echo "configure:76111: checking how to run the C++ preprocessor" >&5
- if test -z "$CXXCPP"; then
- if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -76108,12 +76120,12 @@
- cross_compiling=$ac_cv_prog_cxx_cross
- CXXCPP="${CXX-g++} -E"
- cat > conftest.$ac_ext <<EOF
--#line 76112 "configure"
-+#line 76124 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:76117: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:76129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- :
-@@ -76146,7 +76158,7 @@
-
-
- echo $ac_n "checking for libedit readline replacement""... $ac_c" 1>&6
--echo "configure:76150: checking for libedit readline replacement" >&5
-+echo "configure:76162: checking for libedit readline replacement" >&5
- # Check whether --with-libedit or --without-libedit was given.
- if test "${with_libedit+set}" = set; then
- withval="$with_libedit"
-@@ -76192,7 +76204,7 @@
-
-
- echo $ac_n "checking for readline support""... $ac_c" 1>&6
--echo "configure:76196: checking for readline support" >&5
-+echo "configure:76208: checking for readline support" >&5
- # Check whether --with-readline or --without-readline was given.
- if test "${with_readline+set}" = set; then
- withval="$with_readline"
-@@ -76277,7 +76289,7 @@
-
-
- echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
--echo "configure:76281: checking for tgetent in -lncurses" >&5
-+echo "configure:76293: checking for tgetent in -lncurses" >&5
- ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -76285,7 +76297,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lncurses $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 76289 "configure"
-+#line 76301 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -76296,7 +76308,7 @@
- tgetent()
- ; return 0; }
- EOF
--if { (eval echo configure:76300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:76312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -76340,7 +76352,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
--echo "configure:76344: checking for tgetent in -ltermcap" >&5
-+echo "configure:76356: checking for tgetent in -ltermcap" >&5
- ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -76348,7 +76360,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ltermcap $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 76352 "configure"
-+#line 76364 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -76359,7 +76371,7 @@
- tgetent()
- ; return 0; }
- EOF
--if { (eval echo configure:76363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:76375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -76488,7 +76500,7 @@
- done
-
- echo $ac_n "checking for readline in -lreadline""... $ac_c" 1>&6
--echo "configure:76492: checking for readline in -lreadline" >&5
-+echo "configure:76504: checking for readline in -lreadline" >&5
- ac_lib_var=`echo readline'_'readline | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -76496,7 +76508,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lreadline $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 76500 "configure"
-+#line 76512 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -76507,7 +76519,7 @@
- readline()
- ; return 0; }
- EOF
--if { (eval echo configure:76511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:76523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -76718,7 +76730,7 @@
- done
-
- echo $ac_n "checking for add_history in -lhistory""... $ac_c" 1>&6
--echo "configure:76722: checking for add_history in -lhistory" >&5
-+echo "configure:76734: checking for add_history in -lhistory" >&5
- ac_lib_var=`echo history'_'add_history | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -76726,7 +76738,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lhistory $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 76730 "configure"
-+#line 76742 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -76737,7 +76749,7 @@
- add_history()
- ; return 0; }
- EOF
--if { (eval echo configure:76741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:76753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -77139,7 +77151,7 @@
-
-
- echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
--echo "configure:77143: checking for tgetent in -lncurses" >&5
-+echo "configure:77155: checking for tgetent in -lncurses" >&5
- ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -77147,7 +77159,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lncurses $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 77151 "configure"
-+#line 77163 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -77158,7 +77170,7 @@
- tgetent()
- ; return 0; }
- EOF
--if { (eval echo configure:77162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:77174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -77202,7 +77214,7 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
--echo "configure:77206: checking for tgetent in -ltermcap" >&5
-+echo "configure:77218: checking for tgetent in -ltermcap" >&5
- ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -77210,7 +77222,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ltermcap $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 77214 "configure"
-+#line 77226 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -77221,7 +77233,7 @@
- tgetent()
- ; return 0; }
- EOF
--if { (eval echo configure:77225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:77237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -77350,7 +77362,7 @@
- done
-
- echo $ac_n "checking for readline in -ledit""... $ac_c" 1>&6
--echo "configure:77354: checking for readline in -ledit" >&5
-+echo "configure:77366: checking for readline in -ledit" >&5
- ac_lib_var=`echo edit'_'readline | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -77358,7 +77370,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ledit $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 77362 "configure"
-+#line 77374 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -77369,7 +77381,7 @@
- readline()
- ; return 0; }
- EOF
--if { (eval echo configure:77373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:77385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -77733,7 +77745,7 @@
-
-
- echo $ac_n "checking for recode support""... $ac_c" 1>&6
--echo "configure:77737: checking for recode support" >&5
-+echo "configure:77749: checking for recode support" >&5
- # Check whether --with-recode or --without-recode was given.
- if test "${with_recode+set}" = set; then
- withval="$with_recode"
-@@ -77883,7 +77895,7 @@
- done
-
- echo $ac_n "checking for recode_format_table in -lrecode""... $ac_c" 1>&6
--echo "configure:77887: checking for recode_format_table in -lrecode" >&5
-+echo "configure:77899: checking for recode_format_table in -lrecode" >&5
- ac_lib_var=`echo recode'_'recode_format_table | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -77891,7 +77903,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lrecode $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 77895 "configure"
-+#line 77907 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -77902,7 +77914,7 @@
- recode_format_table()
- ; return 0; }
- EOF
--if { (eval echo configure:77906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:77918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -78031,7 +78043,7 @@
- LDFLAGS="$LDFLAGS -L$RECODE_DIR/$RECODE_LIB"
- LIBS="$LIBS -lrecode"
- cat > conftest.$ac_ext <<EOF
--#line 78035 "configure"
-+#line 78047 "configure"
- #include "confdefs.h"
-
- char *program_name;
-@@ -78042,7 +78054,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:78046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:78058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
-
-
-@@ -78204,17 +78216,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:78208: checking for $ac_hdr" >&5
-+echo "configure:78220: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 78213 "configure"
-+#line 78225 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:78218: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:78230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -78467,7 +78479,7 @@
-
-
- echo $ac_n "checking whether to enable PHP sessions""... $ac_c" 1>&6
--echo "configure:78471: checking whether to enable PHP sessions" >&5
-+echo "configure:78483: checking whether to enable PHP sessions" >&5
- # Check whether --enable-session or --disable-session was given.
- if test "${enable_session+set}" = set; then
- enableval="$enable_session"
-@@ -78513,7 +78525,7 @@
-
-
- echo $ac_n "checking for mm support""... $ac_c" 1>&6
--echo "configure:78517: checking for mm support" >&5
-+echo "configure:78529: checking for mm support" >&5
- # Check whether --with-mm or --without-mm was given.
- if test "${with_mm+set}" = set; then
- withval="$with_mm"
-@@ -78538,7 +78550,7 @@
- if test "$PHP_SESSION" != "no"; then
-
- echo $ac_n "checking whether pwrite works""... $ac_c" 1>&6
--echo "configure:78542: checking whether pwrite works" >&5
-+echo "configure:78554: checking whether pwrite works" >&5
- if eval "test \"`echo '$''{'ac_cv_pwrite'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -78550,7 +78562,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 78554 "configure"
-+#line 78566 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-@@ -78571,7 +78583,7 @@
-
-
- EOF
--if { (eval echo configure:78575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:78587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_pwrite=yes
-@@ -78596,7 +78608,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 78600 "configure"
-+#line 78612 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-@@ -78617,7 +78629,7 @@
-
-
- EOF
--if { (eval echo configure:78621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:78633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_pwrite=yes
-@@ -78658,7 +78670,7 @@
-
-
- echo $ac_n "checking whether pread works""... $ac_c" 1>&6
--echo "configure:78662: checking whether pread works" >&5
-+echo "configure:78674: checking whether pread works" >&5
- if eval "test \"`echo '$''{'ac_cv_pread'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -78671,7 +78683,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 78675 "configure"
-+#line 78687 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-@@ -78691,7 +78703,7 @@
- }
-
- EOF
--if { (eval echo configure:78695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:78707: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_pread=yes
-@@ -78718,7 +78730,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 78722 "configure"
-+#line 78734 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-@@ -78738,7 +78750,7 @@
- }
-
- EOF
--if { (eval echo configure:78742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:78754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_pread=yes
-@@ -79153,7 +79165,7 @@
-
-
- echo $ac_n "checking whether to enable shmop support""... $ac_c" 1>&6
--echo "configure:79157: checking whether to enable shmop support" >&5
-+echo "configure:79169: checking whether to enable shmop support" >&5
- # Check whether --enable-shmop or --disable-shmop was given.
- if test "${enable_shmop+set}" = set; then
- enableval="$enable_shmop"
-@@ -79428,7 +79440,7 @@
-
-
- echo $ac_n "checking for SNMP support""... $ac_c" 1>&6
--echo "configure:79432: checking for SNMP support" >&5
-+echo "configure:79444: checking for SNMP support" >&5
- # Check whether --with-snmp or --without-snmp was given.
- if test "${with_snmp+set}" = set; then
- withval="$with_snmp"
-@@ -79474,7 +79486,7 @@
-
-
- echo $ac_n "checking OpenSSL dir for SNMP""... $ac_c" 1>&6
--echo "configure:79478: checking OpenSSL dir for SNMP" >&5
-+echo "configure:79490: checking OpenSSL dir for SNMP" >&5
- # Check whether --with-openssl-dir or --without-openssl-dir was given.
- if test "${with_openssl_dir+set}" = set; then
- withval="$with_openssl_dir"
-@@ -79502,7 +79514,7 @@
- # Extract the first word of "net-snmp-config", so it can be a program name with args.
- set dummy net-snmp-config; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:79506: checking for $ac_word" >&5
-+echo "configure:79518: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_SNMP_CONFIG'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -79686,17 +79698,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:79690: checking for $ac_hdr" >&5
-+echo "configure:79702: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 79695 "configure"
-+#line 79707 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:79700: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:79712: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -79724,9 +79736,9 @@
-
- if test "$ac_cv_header_default_store_h" = "yes"; then
- echo $ac_n "checking for OpenSSL support in SNMP libraries""... $ac_c" 1>&6
--echo "configure:79728: checking for OpenSSL support in SNMP libraries" >&5
-+echo "configure:79740: checking for OpenSSL support in SNMP libraries" >&5
- cat > conftest.$ac_ext <<EOF
--#line 79730 "configure"
-+#line 79742 "configure"
- #include "confdefs.h"
-
- #include <ucd-snmp-config.h>
-@@ -79778,7 +79790,7 @@
- # Extract the first word of "pkg-config", so it can be a program name with args.
- set dummy pkg-config; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:79782: checking for $ac_word" >&5
-+echo "configure:79794: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -79966,9 +79978,9 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS=-I$OPENSSL_INCDIR
- echo $ac_n "checking for OpenSSL version""... $ac_c" 1>&6
--echo "configure:79970: checking for OpenSSL version" >&5
-+echo "configure:79982: checking for OpenSSL version" >&5
- cat > conftest.$ac_ext <<EOF
--#line 79972 "configure"
-+#line 79984 "configure"
- #include "confdefs.h"
-
- #include <openssl/opensslv.h>
-@@ -80106,7 +80118,7 @@
- done
-
- echo $ac_n "checking for CRYPTO_free in -lcrypto""... $ac_c" 1>&6
--echo "configure:80110: checking for CRYPTO_free in -lcrypto" >&5
-+echo "configure:80122: checking for CRYPTO_free in -lcrypto" >&5
- ac_lib_var=`echo crypto'_'CRYPTO_free | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -80114,7 +80126,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcrypto $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 80118 "configure"
-+#line 80130 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -80125,7 +80137,7 @@
- CRYPTO_free()
- ; return 0; }
- EOF
--if { (eval echo configure:80129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:80141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -80265,7 +80277,7 @@
- done
-
- echo $ac_n "checking for SSL_CTX_set_ssl_version in -lssl""... $ac_c" 1>&6
--echo "configure:80269: checking for SSL_CTX_set_ssl_version in -lssl" >&5
-+echo "configure:80281: checking for SSL_CTX_set_ssl_version in -lssl" >&5
- ac_lib_var=`echo ssl'_'SSL_CTX_set_ssl_version | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -80273,7 +80285,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lssl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 80277 "configure"
-+#line 80289 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -80284,7 +80296,7 @@
- SSL_CTX_set_ssl_version()
- ; return 0; }
- EOF
--if { (eval echo configure:80288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:80300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -80396,7 +80408,7 @@
- fi
-
- echo $ac_n "checking for kstat_read in -lkstat""... $ac_c" 1>&6
--echo "configure:80400: checking for kstat_read in -lkstat" >&5
-+echo "configure:80412: checking for kstat_read in -lkstat" >&5
- ac_lib_var=`echo kstat'_'kstat_read | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -80404,7 +80416,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lkstat $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 80408 "configure"
-+#line 80420 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -80415,7 +80427,7 @@
- kstat_read()
- ; return 0; }
- EOF
--if { (eval echo configure:80419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:80431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -80668,7 +80680,7 @@
- done
-
- echo $ac_n "checking for snmp_parse_oid in -l$SNMP_LIBNAME""... $ac_c" 1>&6
--echo "configure:80672: checking for snmp_parse_oid in -l$SNMP_LIBNAME" >&5
-+echo "configure:80684: checking for snmp_parse_oid in -l$SNMP_LIBNAME" >&5
- ac_lib_var=`echo $SNMP_LIBNAME'_'snmp_parse_oid | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -80676,7 +80688,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$SNMP_LIBNAME $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 80680 "configure"
-+#line 80692 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -80687,7 +80699,7 @@
- snmp_parse_oid()
- ; return 0; }
- EOF
--if { (eval echo configure:80691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:80703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -80804,7 +80816,7 @@
- done
-
- echo $ac_n "checking for init_snmp in -l$SNMP_LIBNAME""... $ac_c" 1>&6
--echo "configure:80808: checking for init_snmp in -l$SNMP_LIBNAME" >&5
-+echo "configure:80820: checking for init_snmp in -l$SNMP_LIBNAME" >&5
- ac_lib_var=`echo $SNMP_LIBNAME'_'init_snmp | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -80812,7 +80824,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$SNMP_LIBNAME $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 80816 "configure"
-+#line 80828 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -80823,7 +80835,7 @@
- init_snmp()
- ; return 0; }
- EOF
--if { (eval echo configure:80827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:80839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -81089,7 +81101,7 @@
-
-
- echo $ac_n "checking whether to enable UCD SNMP hack""... $ac_c" 1>&6
--echo "configure:81093: checking whether to enable UCD SNMP hack" >&5
-+echo "configure:81105: checking whether to enable UCD SNMP hack" >&5
- # Check whether --enable-ucd-snmp-hack or --disable-ucd-snmp-hack was given.
- if test "${enable_ucd_snmp_hack+set}" = set; then
- enableval="$enable_ucd_snmp_hack"
-@@ -81115,7 +81127,7 @@
-
-
- echo $ac_n "checking whether to enable sockets support""... $ac_c" 1>&6
--echo "configure:81119: checking whether to enable sockets support" >&5
-+echo "configure:81131: checking whether to enable sockets support" >&5
- # Check whether --enable-sockets or --disable-sockets was given.
- if test "${enable_sockets+set}" = set; then
- enableval="$enable_sockets"
-@@ -81160,13 +81172,13 @@
-
- if test "$PHP_SOCKETS" != "no"; then
- echo $ac_n "checking for struct cmsghdr""... $ac_c" 1>&6
--echo "configure:81164: checking for struct cmsghdr" >&5
-+echo "configure:81176: checking for struct cmsghdr" >&5
- if eval "test \"`echo '$''{'ac_cv_cmsghdr'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-
- cat > conftest.$ac_ext <<EOF
--#line 81170 "configure"
-+#line 81182 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-@@ -81175,7 +81187,7 @@
- struct cmsghdr s; s
- ; return 0; }
- EOF
--if { (eval echo configure:81179: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:81191: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_cmsghdr=yes
- else
-@@ -81200,12 +81212,12 @@
- for ac_func in hstrerror set_h_errno
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:81204: checking for $ac_func" >&5
-+echo "configure:81216: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 81209 "configure"
-+#line 81221 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -81228,7 +81240,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:81232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:81244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -81256,17 +81268,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:81260: checking for $ac_hdr" >&5
-+echo "configure:81272: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 81265 "configure"
-+#line 81277 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:81270: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:81282: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -81293,7 +81305,7 @@
- done
-
- cat > conftest.$ac_ext <<EOF
--#line 81297 "configure"
-+#line 81309 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-@@ -81303,7 +81315,7 @@
- static struct msghdr tp; int n = (int) tp.msg_flags; return n
- ; return 0; }
- EOF
--if { (eval echo configure:81307: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:81319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- :
- else
- echo "configure: failed program was:" >&5
-@@ -81547,18 +81559,1049 @@
-
-
-
-+echo $ac_n "checking for sqlite support""... $ac_c" 1>&6
-+echo "configure:81564: checking for sqlite support" >&5
-+# Check whether --with-sqlite or --without-sqlite was given.
-+if test "${with_sqlite+set}" = set; then
-+ withval="$with_sqlite"
-+ PHP_SQLITE=$withval
-+else
-+
-+ PHP_SQLITE=no
-+
-+ if test "$PHP_ENABLE_ALL" && test "yes" = "yes"; then
-+ PHP_SQLITE=$PHP_ENABLE_ALL
-+ fi
-+
-+fi
-+
-+
-+
-+ext_output="yes, shared"
-+ext_shared=yes
-+case $PHP_SQLITE in
-+shared,*)
-+ PHP_SQLITE=`echo "$PHP_SQLITE"|sed 's/^shared,//'`
-+ ;;
-+shared)
-+ PHP_SQLITE=yes
-+ ;;
-+no)
-+ ext_output=no
-+ ext_shared=no
-+ ;;
-+*)
-+ ext_output=yes
-+ ext_shared=no
-+ ;;
-+esac
-+
-+
-+
-+echo "$ac_t""$ext_output" 1>&6
-+
-+
-+
-+
-+if test "$PHP_SQLITE" != "no"; then
-+
-+ if test "$PHP_SQLITE" != "yes"; then
-+ SEARCH_PATH="/usr/local /usr"
-+ SEARCH_FOR="/include/sqlite.h"
-+ if test -r $PHP_SQLITE/; then # path given as parameter
-+ SQLITE_DIR=$PHP_SQLITE
-+ else # search default path list
-+ echo $ac_n "checking for sqlite files in default path""... $ac_c" 1>&6
-+echo "configure:81616: checking for sqlite files in default path" >&5
-+ for i in $SEARCH_PATH ; do
-+ if test -r $i/$SEARCH_FOR; then
-+ SQLITE_DIR=$i
-+ echo "$ac_t""found in $i" 1>&6
-+ fi
-+ done
-+ fi
-+
-+ if test -z "$SQLITE_DIR"; then
-+ echo "$ac_t""not found" 1>&6
-+ { echo "configure: error: Please reinstall the sqlite distribution from http://www.sqlite.org" 1>&2; exit 1; }
-+ fi
-+
-+
-+ if test "$SQLITE_DIR/include" != "/usr/include"; then
-+
-+ if test -z "$SQLITE_DIR/include" || echo "$SQLITE_DIR/include" | grep '^/' >/dev/null ; then
-+ ai_p=$SQLITE_DIR/include
-+ else
-+
-+ ep_dir="`echo $SQLITE_DIR/include|sed 's%/*[^/][^/]*/*$%%'`"
-+
-+ ep_realdir="`(cd \"$ep_dir\" && pwd)`"
-+ ai_p="$ep_realdir/`basename \"$SQLITE_DIR/include\"`"
-+ fi
-+
-+
-+
-+ unique=`echo $ai_p|sed 's/[^a-zA-Z0-9]/_/g'`
-+
-+ cmd="echo $ac_n \"\$INCLUDEPATH$unique$ac_c\""
-+ if test -n "$unique" && test "`eval $cmd`" = "" ; then
-+ eval "INCLUDEPATH$unique=set"
-+
-+ if test ""; then
-+ INCLUDES="-I$ai_p $INCLUDES"
-+ else
-+ INCLUDES="$INCLUDES -I$ai_p"
-+ fi
-+
-+ fi
-+
-+ fi
-+
-+
-+ LIBNAME=sqlite
-+ LIBSYMBOL=sqlite_open
-+
-+
-+ save_old_LDFLAGS=$LDFLAGS
-+ ac_stuff="
-+ -L$SQLITE_DIR/lib -lm -ldl
-+ "
-+
-+ save_ext_shared=$ext_shared
-+ ext_shared=yes
-+
-+ for ac_i in $ac_stuff; do
-+ case $ac_i in
-+ -l*)
-+ ac_ii=`echo $ac_i|cut -c 3-`
-+
-+
-+ case $ac_ii in
-+ c|c_r|pthread*) ;;
-+ *)
-+ if test "$ext_shared" = "yes"; then
-+ LDFLAGS="$LDFLAGS -l$ac_ii"
-+ else
-+
-+
-+ case $ac_ii in
-+ c|c_r|pthread*) ;;
-+ *)
-+ LIBS="$LIBS -l$ac_ii"
-+ ;;
-+ esac
-+
-+
-+ fi
-+ ;;
-+ esac
-+
-+
-+ ;;
-+ -L*)
-+ ac_ii=`echo $ac_i|cut -c 3-`
-+
-+ if test "$ac_ii" != "/usr/lib"; then
-+
-+ if test -z "$ac_ii" || echo "$ac_ii" | grep '^/' >/dev/null ; then
-+ ai_p=$ac_ii
-+ else
-+
-+ ep_dir="`echo $ac_ii|sed 's%/*[^/][^/]*/*$%%'`"
-+
-+ ep_realdir="`(cd \"$ep_dir\" && pwd)`"
-+ ai_p="$ep_realdir/`basename \"$ac_ii\"`"
-+ fi
-+
-+
-+ if test "$ext_shared" = "yes"; then
-+ LDFLAGS="$ld_runpath_switch$ai_p -L$ai_p $LDFLAGS"
-+ else
-+
-+
-+
-+ unique=`echo $ai_p|sed 's/[^a-zA-Z0-9]/_/g'`
-+
-+ cmd="echo $ac_n \"\$LIBPATH$unique$ac_c\""
-+ if test -n "$unique" && test "`eval $cmd`" = "" ; then
-+ eval "LIBPATH$unique=set"
-+
-+ test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$ai_p"
-+ LDFLAGS="$LDFLAGS -L$ai_p"
-+ PHP_RPATHS="$PHP_RPATHS $ai_p"
-+
-+ fi
-+
-+
-+ fi
-+
-+ fi
-+
-+ ;;
-+ esac
-+ done
-+
-+ echo $ac_n "checking for $LIBSYMBOL in -l$LIBNAME""... $ac_c" 1>&6
-+echo "configure:81746: checking for $LIBSYMBOL in -l$LIBNAME" >&5
-+ac_lib_var=`echo $LIBNAME'_'$LIBSYMBOL | sed 'y%./+-%__p_%'`
-+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ ac_save_LIBS="$LIBS"
-+LIBS="-l$LIBNAME $LIBS"
-+cat > conftest.$ac_ext <<EOF
-+#line 81754 "configure"
-+#include "confdefs.h"
-+/* Override any gcc2 internal prototype to avoid an error. */
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char $LIBSYMBOL();
-+
-+int main() {
-+$LIBSYMBOL()
-+; return 0; }
-+EOF
-+if { (eval echo configure:81765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=yes"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=no"
-+fi
-+rm -f conftest*
-+LIBS="$ac_save_LIBS"
-+
-+fi
-+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+
-+ LDFLAGS=$save_old_LDFLAGS
-+ ext_shared=$save_ext_shared
-+
-+
-+
-+ if test "$ext_shared" = "yes"; then
-+ SQLITE_SHARED_LIBADD="-l$LIBNAME $SQLITE_SHARED_LIBADD"
-+ if test -n "$SQLITE_DIR/lib"; then
-+
-+ if test "$SQLITE_DIR/lib" != "/usr/lib"; then
-+
-+ if test -z "$SQLITE_DIR/lib" || echo "$SQLITE_DIR/lib" | grep '^/' >/dev/null ; then
-+ ai_p=$SQLITE_DIR/lib
-+ else
-+
-+ ep_dir="`echo $SQLITE_DIR/lib|sed 's%/*[^/][^/]*/*$%%'`"
-+
-+ ep_realdir="`(cd \"$ep_dir\" && pwd)`"
-+ ai_p="$ep_realdir/`basename \"$SQLITE_DIR/lib\"`"
-+ fi
-+
-+
-+ if test "$ext_shared" = "yes"; then
-+ SQLITE_SHARED_LIBADD="$ld_runpath_switch$ai_p -L$ai_p $SQLITE_SHARED_LIBADD"
-+ else
-+
-+
-+
-+ unique=`echo $ai_p|sed 's/[^a-zA-Z0-9]/_/g'`
-+
-+ cmd="echo $ac_n \"\$LIBPATH$unique$ac_c\""
-+ if test -n "$unique" && test "`eval $cmd`" = "" ; then
-+ eval "LIBPATH$unique=set"
-+
-+ test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$ai_p"
-+ LDFLAGS="$LDFLAGS -L$ai_p"
-+ PHP_RPATHS="$PHP_RPATHS $ai_p"
-+
-+ fi
-+
-+
-+ fi
-+
-+ fi
-+
-+ fi
-+ else
-+
-+
-+ if test -n "$SQLITE_DIR/lib"; then
-+
-+ if test "$SQLITE_DIR/lib" != "/usr/lib"; then
-+
-+ if test -z "$SQLITE_DIR/lib" || echo "$SQLITE_DIR/lib" | grep '^/' >/dev/null ; then
-+ ai_p=$SQLITE_DIR/lib
-+ else
-+
-+ ep_dir="`echo $SQLITE_DIR/lib|sed 's%/*[^/][^/]*/*$%%'`"
-+
-+ ep_realdir="`(cd \"$ep_dir\" && pwd)`"
-+ ai_p="$ep_realdir/`basename \"$SQLITE_DIR/lib\"`"
-+ fi
-+
-+
-+
-+
-+
-+ unique=`echo $ai_p|sed 's/[^a-zA-Z0-9]/_/g'`
-+
-+ cmd="echo $ac_n \"\$LIBPATH$unique$ac_c\""
-+ if test -n "$unique" && test "`eval $cmd`" = "" ; then
-+ eval "LIBPATH$unique=set"
-+
-+ test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$ai_p"
-+ LDFLAGS="$LDFLAGS -L$ai_p"
-+ PHP_RPATHS="$PHP_RPATHS $ai_p"
-+
-+ fi
-+
-+
-+
-+ fi
-+
-+ fi
-+
-+
-+ case $LIBNAME in
-+ c|c_r|pthread*) ;;
-+ *)
-+ LIBS="-l$LIBNAME $LIBS"
-+ ;;
-+ esac
-+
-+
-+
-+
-+ fi
-+
-+
-+ cat >> confdefs.h <<\EOF
-+#define HAVE_SQLITELIB 1
-+EOF
-+
-+
-+
-+else
-+ echo "$ac_t""no" 1>&6
-+
-+ LDFLAGS=$save_old_LDFLAGS
-+ ext_shared=$save_ext_shared
-+ unset ac_cv_lib_$LIBNAME_$LIBSYMBOL
-+
-+ { echo "configure: error: wrong sqlite lib version or lib not found" 1>&2; exit 1; }
-+
-+
-+fi
-+
-+
-+
-+ PHP_VAR_SUBST="$PHP_VAR_SUBST SQLITE_SHARED_LIBADD"
-+
-+
-+ ext_builddir=ext/sqlite
-+ ext_srcdir=$abs_srcdir/ext/sqlite
-+
-+ ac_extra=
-+
-+ if test "$ext_shared" != "shared" && test "$ext_shared" != "yes" && test "" != "cli"; then
-+
-+
-+
-+ case ext/sqlite in
-+ "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;;
-+ /*) ac_srcdir=`echo "ext/sqlite"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;;
-+ *) ac_srcdir="$abs_srcdir/ext/sqlite/"; ac_bdir="ext/sqlite/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;;
-+ esac
-+
-+
-+
-+ b_c_pre=$php_c_pre
-+ b_cxx_pre=$php_cxx_pre
-+ b_c_meta=$php_c_meta
-+ b_cxx_meta=$php_cxx_meta
-+ b_c_post=$php_c_post
-+ b_cxx_post=$php_cxx_post
-+ b_lo=$php_lo
-+
-+
-+ old_IFS=$IFS
-+ for ac_src in sqlite.c; do
-+
-+ IFS=.
-+ set $ac_src
-+ ac_obj=$1
-+ IFS=$old_IFS
-+
-+ PHP_GLOBAL_OBJS="$PHP_GLOBAL_OBJS $ac_bdir$ac_obj.lo"
-+
-+ case $ac_src in
-+ *.c) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;;
-+ *.cpp) ac_comp="$b_cxx_pre $ac_extra $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;;
-+ esac
-+
-+ cat >>Makefile.objects<<EOF
-+$ac_bdir$ac_obj.lo: $ac_srcdir$ac_src
-+ $ac_comp
-+EOF
-+ done
-+
-+
-+ EXT_STATIC="$EXT_STATIC sqlite"
-+ if test "$ext_shared" != "nocli"; then
-+ EXT_CLI_STATIC="$EXT_CLI_STATIC sqlite"
-+ fi
-+ else
-+ if test "$ext_shared" = "shared" || test "$ext_shared" = "yes"; then
-+
-+ case ext/sqlite in
-+ "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;;
-+ /*) ac_srcdir=`echo "ext/sqlite"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;;
-+ *) ac_srcdir="$abs_srcdir/ext/sqlite/"; ac_bdir="ext/sqlite/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;;
-+ esac
-+
-+
-+
-+ b_c_pre=$shared_c_pre
-+ b_cxx_pre=$shared_cxx_pre
-+ b_c_meta=$shared_c_meta
-+ b_cxx_meta=$shared_cxx_meta
-+ b_c_post=$shared_c_post
-+ b_cxx_post=$shared_cxx_post
-+ b_lo=$shared_lo
-+
-+
-+ old_IFS=$IFS
-+ for ac_src in sqlite.c; do
-+
-+ IFS=.
-+ set $ac_src
-+ ac_obj=$1
-+ IFS=$old_IFS
-+
-+ shared_objects_sqlite="$shared_objects_sqlite $ac_bdir$ac_obj.lo"
-+
-+ case $ac_src in
-+ *.c) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;;
-+ *.cpp) ac_comp="$b_cxx_pre $ac_extra $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;;
-+ esac
-+
-+ cat >>Makefile.objects<<EOF
-+$ac_bdir$ac_obj.lo: $ac_srcdir$ac_src
-+ $ac_comp
-+EOF
-+ done
-+
-+
-+ install_modules="install-modules"
-+
-+ case $host_alias in
-+ *darwin*)
-+ suffix=so
-+ link_cmd='$(CC) -dynamic -flat_namespace -bundle -undefined suppress $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ $(EXTRA_LDFLAGS) $(shared_objects_sqlite) $(SQLITE_SHARED_LIBADD)'
-+ ;;
-+ *)
-+ suffix=la
-+ link_cmd='$(LIBTOOL) --mode=link $(CC) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_sqlite) $(SQLITE_SHARED_LIBADD)'
-+ ;;
-+ esac
-+
-+ PHP_MODULES="$PHP_MODULES \$(phplibdir)/sqlite.$suffix"
-+
-+ PHP_VAR_SUBST="$PHP_VAR_SUBST shared_objects_sqlite"
-+
-+ cat >>Makefile.objects<<EOF
-+\$(phplibdir)/sqlite.$suffix: $ext_builddir/sqlite.$suffix
-+ \$(LIBTOOL) --mode=install cp $ext_builddir/sqlite.$suffix \$(phplibdir)
-+
-+$ext_builddir/sqlite.$suffix: \$(shared_objects_sqlite) \$(SQLITE_SHARED_DEPENDENCIES)
-+ $link_cmd
-+
-+EOF
-+
-+ cat >> confdefs.h <<EOF
-+#define COMPILE_DL_SQLITE 1
-+EOF
-+
-+ fi
-+ fi
-+
-+ if test "$ext_shared" != "shared" && test "$ext_shared" != "yes" && test "" = "cli"; then
-+ if test "$PHP_SAPI" = "cgi"; then
-+
-+
-+ case ext/sqlite in
-+ "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;;
-+ /*) ac_srcdir=`echo "ext/sqlite"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;;
-+ *) ac_srcdir="$abs_srcdir/ext/sqlite/"; ac_bdir="ext/sqlite/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;;
-+ esac
-+
-+
-+
-+ b_c_pre=$php_c_pre
-+ b_cxx_pre=$php_cxx_pre
-+ b_c_meta=$php_c_meta
-+ b_cxx_meta=$php_cxx_meta
-+ b_c_post=$php_c_post
-+ b_cxx_post=$php_cxx_post
-+ b_lo=$php_lo
-+
-+
-+ old_IFS=$IFS
-+ for ac_src in sqlite.c; do
-+
-+ IFS=.
-+ set $ac_src
-+ ac_obj=$1
-+ IFS=$old_IFS
-+
-+ PHP_GLOBAL_OBJS="$PHP_GLOBAL_OBJS $ac_bdir$ac_obj.lo"
-+
-+ case $ac_src in
-+ *.c) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;;
-+ *.cpp) ac_comp="$b_cxx_pre $ac_extra $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;;
-+ esac
-+
-+ cat >>Makefile.objects<<EOF
-+$ac_bdir$ac_obj.lo: $ac_srcdir$ac_src
-+ $ac_comp
-+EOF
-+ done
-+
-+
-+ EXT_STATIC="$EXT_STATIC sqlite"
-+ else
-+
-+
-+ case ext/sqlite in
-+ "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;;
-+ /*) ac_srcdir=`echo "ext/sqlite"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;;
-+ *) ac_srcdir="$abs_srcdir/ext/sqlite/"; ac_bdir="ext/sqlite/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;;
-+ esac
-+
-+
-+
-+ b_c_pre=$php_c_pre
-+ b_cxx_pre=$php_cxx_pre
-+ b_c_meta=$php_c_meta
-+ b_cxx_meta=$php_cxx_meta
-+ b_c_post=$php_c_post
-+ b_cxx_post=$php_cxx_post
-+ b_lo=$php_lo
-+
-+
-+ old_IFS=$IFS
-+ for ac_src in sqlite.c; do
-+
-+ IFS=.
-+ set $ac_src
-+ ac_obj=$1
-+ IFS=$old_IFS
-+
-+ PHP_CLI_OBJS="$PHP_CLI_OBJS $ac_bdir$ac_obj.lo"
-+
-+ case $ac_src in
-+ *.c) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;;
-+ *.cpp) ac_comp="$b_cxx_pre $ac_extra $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;;
-+ esac
-+
-+ cat >>Makefile.objects<<EOF
-+$ac_bdir$ac_obj.lo: $ac_srcdir$ac_src
-+ $ac_comp
-+EOF
-+ done
-+
-+
-+ fi
-+ EXT_CLI_STATIC="$EXT_CLI_STATIC sqlite"
-+ fi
-+
-+ BUILD_DIR="$BUILD_DIR $ext_builddir"
-+
-+
-+ else
-+ # use bundled library
-+
-+ PHP_SQLITE_CFLAGS="-I@ext_srcdir@/libsqlite/src"
-+
-+ sources="libsqlite/src/opcodes.c
-+ libsqlite/src/parse.c libsqlite/src/encode.c \
-+ libsqlite/src/auth.c libsqlite/src/btree.c libsqlite/src/build.c \
-+ libsqlite/src/delete.c libsqlite/src/expr.c libsqlite/src/func.c \
-+ libsqlite/src/hash.c libsqlite/src/insert.c libsqlite/src/main.c \
-+ libsqlite/src/os.c libsqlite/src/pager.c \
-+ libsqlite/src/printf.c libsqlite/src/random.c \
-+ libsqlite/src/select.c libsqlite/src/table.c libsqlite/src/tokenize.c \
-+ libsqlite/src/update.c libsqlite/src/util.c libsqlite/src/vdbe.c \
-+ libsqlite/src/attach.c libsqlite/src/btree_rb.c libsqlite/src/pragma.c \
-+ libsqlite/src/vacuum.c libsqlite/src/copy.c \
-+ libsqlite/src/where.c libsqlite/src/trigger.c"
-+
-+
-+ ext_builddir=ext/sqlite
-+ ext_srcdir=$abs_srcdir/ext/sqlite
-+
-+ ac_extra=`echo "$PHP_SQLITE_CFLAGS"|sed s#@ext_srcdir@#$ext_srcdir#g`
-+
-+ if test "$ext_shared" != "shared" && test "$ext_shared" != "yes" && test "" != "cli"; then
-+
-+
-+
-+ case ext/sqlite in
-+ "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;;
-+ /*) ac_srcdir=`echo "ext/sqlite"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;;
-+ *) ac_srcdir="$abs_srcdir/ext/sqlite/"; ac_bdir="ext/sqlite/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;;
-+ esac
-+
-+
-+
-+ b_c_pre=$php_c_pre
-+ b_cxx_pre=$php_cxx_pre
-+ b_c_meta=$php_c_meta
-+ b_cxx_meta=$php_cxx_meta
-+ b_c_post=$php_c_post
-+ b_cxx_post=$php_cxx_post
-+ b_lo=$php_lo
-+
-+
-+ old_IFS=$IFS
-+ for ac_src in sqlite.c $sources; do
-+
-+ IFS=.
-+ set $ac_src
-+ ac_obj=$1
-+ IFS=$old_IFS
-+
-+ PHP_GLOBAL_OBJS="$PHP_GLOBAL_OBJS $ac_bdir$ac_obj.lo"
-+
-+ case $ac_src in
-+ *.c) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;;
-+ *.cpp) ac_comp="$b_cxx_pre $ac_extra $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;;
-+ esac
-+
-+ cat >>Makefile.objects<<EOF
-+$ac_bdir$ac_obj.lo: $ac_srcdir$ac_src
-+ $ac_comp
-+EOF
-+ done
-+
-+
-+ EXT_STATIC="$EXT_STATIC sqlite"
-+ if test "$ext_shared" != "nocli"; then
-+ EXT_CLI_STATIC="$EXT_CLI_STATIC sqlite"
-+ fi
-+ else
-+ if test "$ext_shared" = "shared" || test "$ext_shared" = "yes"; then
-+
-+ case ext/sqlite in
-+ "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;;
-+ /*) ac_srcdir=`echo "ext/sqlite"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;;
-+ *) ac_srcdir="$abs_srcdir/ext/sqlite/"; ac_bdir="ext/sqlite/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;;
-+ esac
-+
-+
-+
-+ b_c_pre=$shared_c_pre
-+ b_cxx_pre=$shared_cxx_pre
-+ b_c_meta=$shared_c_meta
-+ b_cxx_meta=$shared_cxx_meta
-+ b_c_post=$shared_c_post
-+ b_cxx_post=$shared_cxx_post
-+ b_lo=$shared_lo
-+
-+
-+ old_IFS=$IFS
-+ for ac_src in sqlite.c $sources; do
-+
-+ IFS=.
-+ set $ac_src
-+ ac_obj=$1
-+ IFS=$old_IFS
-+
-+ shared_objects_sqlite="$shared_objects_sqlite $ac_bdir$ac_obj.lo"
-+
-+ case $ac_src in
-+ *.c) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;;
-+ *.cpp) ac_comp="$b_cxx_pre $ac_extra $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;;
-+ esac
-+
-+ cat >>Makefile.objects<<EOF
-+$ac_bdir$ac_obj.lo: $ac_srcdir$ac_src
-+ $ac_comp
-+EOF
-+ done
-+
-+
-+ install_modules="install-modules"
-+
-+ case $host_alias in
-+ *darwin*)
-+ suffix=so
-+ link_cmd='$(CC) -dynamic -flat_namespace -bundle -undefined suppress $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ $(EXTRA_LDFLAGS) $(shared_objects_sqlite) $(SQLITE_SHARED_LIBADD)'
-+ ;;
-+ *)
-+ suffix=la
-+ link_cmd='$(LIBTOOL) --mode=link $(CC) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_sqlite) $(SQLITE_SHARED_LIBADD)'
-+ ;;
-+ esac
-+
-+ PHP_MODULES="$PHP_MODULES \$(phplibdir)/sqlite.$suffix"
-+
-+ PHP_VAR_SUBST="$PHP_VAR_SUBST shared_objects_sqlite"
-+
-+ cat >>Makefile.objects<<EOF
-+\$(phplibdir)/sqlite.$suffix: $ext_builddir/sqlite.$suffix
-+ \$(LIBTOOL) --mode=install cp $ext_builddir/sqlite.$suffix \$(phplibdir)
-+
-+$ext_builddir/sqlite.$suffix: \$(shared_objects_sqlite) \$(SQLITE_SHARED_DEPENDENCIES)
-+ $link_cmd
-+
-+EOF
-+
-+ cat >> confdefs.h <<EOF
-+#define COMPILE_DL_SQLITE 1
-+EOF
-+
-+ fi
-+ fi
-+
-+ if test "$ext_shared" != "shared" && test "$ext_shared" != "yes" && test "" = "cli"; then
-+ if test "$PHP_SAPI" = "cgi"; then
-+
-+
-+ case ext/sqlite in
-+ "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;;
-+ /*) ac_srcdir=`echo "ext/sqlite"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;;
-+ *) ac_srcdir="$abs_srcdir/ext/sqlite/"; ac_bdir="ext/sqlite/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;;
-+ esac
-+
-+
-+
-+ b_c_pre=$php_c_pre
-+ b_cxx_pre=$php_cxx_pre
-+ b_c_meta=$php_c_meta
-+ b_cxx_meta=$php_cxx_meta
-+ b_c_post=$php_c_post
-+ b_cxx_post=$php_cxx_post
-+ b_lo=$php_lo
-+
-+
-+ old_IFS=$IFS
-+ for ac_src in sqlite.c $sources; do
-+
-+ IFS=.
-+ set $ac_src
-+ ac_obj=$1
-+ IFS=$old_IFS
-+
-+ PHP_GLOBAL_OBJS="$PHP_GLOBAL_OBJS $ac_bdir$ac_obj.lo"
-+
-+ case $ac_src in
-+ *.c) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;;
-+ *.cpp) ac_comp="$b_cxx_pre $ac_extra $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;;
-+ esac
-+
-+ cat >>Makefile.objects<<EOF
-+$ac_bdir$ac_obj.lo: $ac_srcdir$ac_src
-+ $ac_comp
-+EOF
-+ done
-+
-+
-+ EXT_STATIC="$EXT_STATIC sqlite"
-+ else
-+
-+
-+ case ext/sqlite in
-+ "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;;
-+ /*) ac_srcdir=`echo "ext/sqlite"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;;
-+ *) ac_srcdir="$abs_srcdir/ext/sqlite/"; ac_bdir="ext/sqlite/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;;
-+ esac
-+
-+
-+
-+ b_c_pre=$php_c_pre
-+ b_cxx_pre=$php_cxx_pre
-+ b_c_meta=$php_c_meta
-+ b_cxx_meta=$php_cxx_meta
-+ b_c_post=$php_c_post
-+ b_cxx_post=$php_cxx_post
-+ b_lo=$php_lo
-+
-+
-+ old_IFS=$IFS
-+ for ac_src in sqlite.c $sources; do
-+
-+ IFS=.
-+ set $ac_src
-+ ac_obj=$1
-+ IFS=$old_IFS
-+
-+ PHP_CLI_OBJS="$PHP_CLI_OBJS $ac_bdir$ac_obj.lo"
-+
-+ case $ac_src in
-+ *.c) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;;
-+ *.cpp) ac_comp="$b_cxx_pre $ac_extra $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;;
-+ esac
-+
-+ cat >>Makefile.objects<<EOF
-+$ac_bdir$ac_obj.lo: $ac_srcdir$ac_src
-+ $ac_comp
-+EOF
-+ done
-+
-+
-+ fi
-+ EXT_CLI_STATIC="$EXT_CLI_STATIC sqlite"
-+ fi
-+
-+ BUILD_DIR="$BUILD_DIR $ext_builddir"
-+
-+
-+
-+ BUILD_DIR="$BUILD_DIR $ext_builddir/libsqlite"
-+
-+
-+ BUILD_DIR="$BUILD_DIR $ext_builddir/libsqlite/src"
-+
-+ echo $ac_n "checking size of char *""... $ac_c" 1>&6
-+echo "configure:82369: checking size of char *" >&5
-+if eval "test \"`echo '$''{'ac_cv_sizeof_char_p'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then
-+ ac_cv_sizeof_char_p=4
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 82377 "configure"
-+#include "confdefs.h"
-+#include <stdio.h>
-+#include <sys/types.h>
-+main()
-+{
-+ FILE *f=fopen("conftestval", "w");
-+ if (!f) exit(1);
-+ fprintf(f, "%d\n", sizeof(char *));
-+ exit(0);
-+}
-+EOF
-+if { (eval echo configure:82389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+then
-+ ac_cv_sizeof_char_p=`cat conftestval`
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -fr conftest*
-+ ac_cv_sizeof_char_p=0
-+fi
-+rm -fr conftest*
-+fi
-+
-+fi
-+echo "$ac_t""$ac_cv_sizeof_char_p" 1>&6
-+cat >> confdefs.h <<EOF
-+#define SIZEOF_CHAR_P $ac_cv_sizeof_char_p
-+EOF
-+
-+
-+ cat >> confdefs.h <<\EOF
-+#define SQLITE_PTR_SZ SIZEOF_CHAR_P
-+EOF
-+
-+ cat >> confdefs.h <<\EOF
-+#define OS_UNIX 1
-+EOF
-+
-+ cat >> confdefs.h <<\EOF
-+#define OS_WIN 0
-+EOF
-+
-+ SQLITE_ENCODING="ISO8859"
-+
-+ PHP_VAR_SUBST="$PHP_VAR_SUBST SQLITE_ENCODING"
-+
-+
-+ # Extract the first word of "lemon", so it can be a program name with args.
-+set dummy lemon; ac_word=$2
-+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-+echo "configure:82428: checking for $ac_word" >&5
-+if eval "test \"`echo '$''{'ac_cv_path_LEMON'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ case "$LEMON" in
-+ /*)
-+ ac_cv_path_LEMON="$LEMON" # Let the user override the test with a path.
-+ ;;
-+ ?:/*)
-+ ac_cv_path_LEMON="$LEMON" # Let the user override the test with a dos path.
-+ ;;
-+ *)
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
-+ ac_dummy="$PATH"
-+ for ac_dir in $ac_dummy; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ ac_cv_path_LEMON="$ac_dir/$ac_word"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ test -z "$ac_cv_path_LEMON" && ac_cv_path_LEMON="no"
-+ ;;
-+esac
-+fi
-+LEMON="$ac_cv_path_LEMON"
-+if test -n "$LEMON"; then
-+ echo "$ac_t""$LEMON" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+
-+ PHP_VAR_SUBST="$PHP_VAR_SUBST LEMON"
-+
-+
-+ SQLITE_VERSION=`cat $ext_srcdir/libsqlite/VERSION`
-+
-+ PHP_VAR_SUBST="$PHP_VAR_SUBST SQLITE_VERSION"
-+
-+
-+ if test "$ext_shared" = "no"; then
-+ echo '#include "php_config.h"' > $ext_srcdir/libsqlite/src/config.h
-+ else
-+ echo "#include \"$abs_builddir/config.h\"" > $ext_srcdir/libsqlite/src/config.h
-+ fi
-+
-+ cat >> $ext_srcdir/libsqlite/src/config.h <<EOF
-+#if ZTS
-+# define THREADSAFE 1
-+#endif
-+#if !ZEND_DEBUG
-+# define NDEBUG
-+#endif
-+EOF
-+
-+
-+ src=$ext_srcdir/Makefile.frag
-+ ac_srcdir=$ext_srcdir
-+ ac_builddir=$ext_builddir
-+ sed -e "s#\$(srcdir)#$ac_srcdir#g" -e "s#\$(builddir)#$ac_builddir#g" $src >> Makefile.fragments
-+
-+
-+ fi
-+
-+ for ac_func in usleep nanosleep
-+do
-+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-+echo "configure:82497: checking for $ac_func" >&5
-+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 82502 "configure"
-+#include "confdefs.h"
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func(); below. */
-+#include <assert.h>
-+/* Override any gcc2 internal prototype to avoid an error. */
-+/* 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();
-+
-+int main() {
-+
-+/* 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)
-+choke me
-+#else
-+$ac_func();
-+#endif
-+
-+; return 0; }
-+EOF
-+if { (eval echo configure:82525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+ rm -rf conftest*
-+ eval "ac_cv_func_$ac_func=yes"
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ eval "ac_cv_func_$ac_func=no"
-+fi
-+rm -f conftest*
-+fi
-+
-+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-+ cat >> confdefs.h <<EOF
-+#define $ac_tr_func 1
-+EOF
-+
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+done
-+
-+ for ac_hdr in time.h
-+do
-+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-+echo "configure:82553: checking for $ac_hdr" >&5
-+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 82558 "configure"
-+#include "confdefs.h"
-+#include <$ac_hdr>
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:82563: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-+if test -z "$ac_err"; then
-+ rm -rf conftest*
-+ eval "ac_cv_header_$ac_safe=yes"
-+else
-+ echo "$ac_err" >&5
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -rf conftest*
-+ eval "ac_cv_header_$ac_safe=no"
-+fi
-+rm -f conftest*
-+fi
-+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-+ cat >> confdefs.h <<EOF
-+#define $ac_tr_hdr 1
-+EOF
-+
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+done
-+
-+fi
-+
-+
-+
-+
-
-
-
- for ac_func in getcwd getwd asinh acosh atanh log1p hypot
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:81557: checking for $ac_func" >&5
-+echo "configure:82600: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 81562 "configure"
-+#line 82605 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -81581,7 +82624,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:81585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:82628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -81610,7 +82653,7 @@
-
- if test "$ac_cv_func_crypt" = "no"; then
- echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
--echo "configure:81614: checking for crypt in -lcrypt" >&5
-+echo "configure:82657: checking for crypt in -lcrypt" >&5
- ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -81618,7 +82661,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lcrypt $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 81622 "configure"
-+#line 82665 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -81629,7 +82672,7 @@
- crypt()
- ; return 0; }
- EOF
--if { (eval echo configure:81633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:82676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -81658,7 +82701,7 @@
- fi
-
- echo $ac_n "checking for standard DES crypt""... $ac_c" 1>&6
--echo "configure:81662: checking for standard DES crypt" >&5
-+echo "configure:82705: checking for standard DES crypt" >&5
- if eval "test \"`echo '$''{'ac_cv_crypt_des'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -81669,7 +82712,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 81673 "configure"
-+#line 82716 "configure"
- #include "confdefs.h"
-
- #if HAVE_UNISTD_H
-@@ -81688,7 +82731,7 @@
- #endif
- }
- EOF
--if { (eval echo configure:81692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:82735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_crypt_des=yes
-@@ -81719,7 +82762,7 @@
-
-
- echo $ac_n "checking for extended DES crypt""... $ac_c" 1>&6
--echo "configure:81723: checking for extended DES crypt" >&5
-+echo "configure:82766: checking for extended DES crypt" >&5
- if eval "test \"`echo '$''{'ac_cv_crypt_ext_des'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -81730,7 +82773,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 81734 "configure"
-+#line 82777 "configure"
- #include "confdefs.h"
-
- #if HAVE_UNISTD_H
-@@ -81749,7 +82792,7 @@
- #endif
- }
- EOF
--if { (eval echo configure:81753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:82796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_crypt_ext_des=yes
-@@ -81780,7 +82823,7 @@
-
-
- echo $ac_n "checking for MD5 crypt""... $ac_c" 1>&6
--echo "configure:81784: checking for MD5 crypt" >&5
-+echo "configure:82827: checking for MD5 crypt" >&5
- if eval "test \"`echo '$''{'ac_cv_crypt_md5'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -81791,7 +82834,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 81795 "configure"
-+#line 82838 "configure"
- #include "confdefs.h"
-
- #if HAVE_UNISTD_H
-@@ -81819,7 +82862,7 @@
- #endif
- }
- EOF
--if { (eval echo configure:81823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:82866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_crypt_md5=yes
-@@ -81879,7 +82922,7 @@
-
-
- echo $ac_n "checking for Blowfish crypt""... $ac_c" 1>&6
--echo "configure:81883: checking for Blowfish crypt" >&5
-+echo "configure:82926: checking for Blowfish crypt" >&5
- if eval "test \"`echo '$''{'ac_cv_crypt_blowfish'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -81890,7 +82933,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 81894 "configure"
-+#line 82937 "configure"
- #include "confdefs.h"
-
- #if HAVE_UNISTD_H
-@@ -81915,7 +82958,7 @@
- #endif
- }
- EOF
--if { (eval echo configure:81919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:82962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_crypt_blowfish=yes
-@@ -81947,7 +82990,7 @@
-
-
- echo $ac_n "checking whether flush should be called explicitly after a buffered io""... $ac_c" 1>&6
--echo "configure:81951: checking whether flush should be called explicitly after a buffered io" >&5
-+echo "configure:82994: checking whether flush should be called explicitly after a buffered io" >&5
- if eval "test \"`echo '$''{'ac_cv_flush_io'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -81958,7 +83001,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 81962 "configure"
-+#line 83005 "configure"
- #include "confdefs.h"
-
- #include <stdio.h>
-@@ -81996,7 +83039,7 @@
- }
-
- EOF
--if { (eval echo configure:82000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:83043: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_flush_io=no
-@@ -82115,12 +83158,12 @@
- fi
-
- echo $ac_n "checking which regex library to use""... $ac_c" 1>&6
--echo "configure:82119: checking which regex library to use" >&5
-+echo "configure:83162: checking which regex library to use" >&5
- echo "$ac_t""$REGEX_TYPE" 1>&6
-
-
- echo $ac_n "checking whether rounding works as expected""... $ac_c" 1>&6
--echo "configure:82124: checking whether rounding works as expected" >&5
-+echo "configure:83167: checking whether rounding works as expected" >&5
- if test "$cross_compiling" = yes; then
-
- PHP_ROUND_FUZZ=0.50000000001
-@@ -82128,7 +83171,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 82132 "configure"
-+#line 83175 "configure"
- #include "confdefs.h"
-
- #include <math.h>
-@@ -82137,7 +83180,7 @@
- }
-
- EOF
--if { (eval echo configure:82141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:83184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- PHP_ROUND_FUZZ=0.5
-@@ -82161,7 +83204,7 @@
-
-
- echo $ac_n "checking for working fnmatch""... $ac_c" 1>&6
--echo "configure:82165: checking for working fnmatch" >&5
-+echo "configure:83208: checking for working fnmatch" >&5
- if eval "test \"`echo '$''{'ac_cv_func_fnmatch_works'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -82172,11 +83215,11 @@
- ac_cv_func_fnmatch_works=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 82176 "configure"
-+#line 83219 "configure"
- #include "confdefs.h"
- main() { exit (fnmatch ("a*", "abc", 0) != 0); }
- EOF
--if { (eval echo configure:82180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:83223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_func_fnmatch_works=yes
- else
-@@ -82203,12 +83246,12 @@
- for ac_func in glob strfmon
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:82207: checking for $ac_func" >&5
-+echo "configure:83250: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 82212 "configure"
-+#line 83255 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -82231,7 +83274,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:82235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:83278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -82266,12 +83309,12 @@
- for ac_func in fpclass isinf isnan
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:82270: checking for $ac_func" >&5
-+echo "configure:83313: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 82275 "configure"
-+#line 83318 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -82294,7 +83337,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:82298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:83341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -82320,7 +83363,7 @@
-
-
- echo $ac_n "checking whether atof() accepts NAN""... $ac_c" 1>&6
--echo "configure:82324: checking whether atof() accepts NAN" >&5
-+echo "configure:83367: checking whether atof() accepts NAN" >&5
- if eval "test \"`echo '$''{'ac_cv_atof_accept_nan'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -82331,7 +83374,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 82335 "configure"
-+#line 83378 "configure"
- #include "confdefs.h"
-
- #include <math.h>
-@@ -82351,7 +83394,7 @@
- }
-
- EOF
--if { (eval echo configure:82355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:83398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_atof_accept_nan=yes
-@@ -82379,7 +83422,7 @@
- fi
-
- echo $ac_n "checking whether atof() accepts INF""... $ac_c" 1>&6
--echo "configure:82383: checking whether atof() accepts INF" >&5
-+echo "configure:83426: checking whether atof() accepts INF" >&5
- if eval "test \"`echo '$''{'ac_cv_atof_accept_inf'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -82390,7 +83433,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 82394 "configure"
-+#line 83437 "configure"
- #include "confdefs.h"
-
- #include <math.h>
-@@ -82413,7 +83456,7 @@
- }
-
- EOF
--if { (eval echo configure:82417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:83460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_atof_accept_inf=yes
-@@ -82441,7 +83484,7 @@
- fi
-
- echo $ac_n "checking whether HUGE_VAL == INF""... $ac_c" 1>&6
--echo "configure:82445: checking whether HUGE_VAL == INF" >&5
-+echo "configure:83488: checking whether HUGE_VAL == INF" >&5
- if eval "test \"`echo '$''{'ac_cv_huge_val_inf'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -82452,7 +83495,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 82456 "configure"
-+#line 83499 "configure"
- #include "confdefs.h"
-
- #include <math.h>
-@@ -82475,7 +83518,7 @@
- }
-
- EOF
--if { (eval echo configure:82479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:83522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_huge_val_inf=yes
-@@ -82503,7 +83546,7 @@
- fi
-
- echo $ac_n "checking whether HUGE_VAL + -HUGEVAL == NAN""... $ac_c" 1>&6
--echo "configure:82507: checking whether HUGE_VAL + -HUGEVAL == NAN" >&5
-+echo "configure:83550: checking whether HUGE_VAL + -HUGEVAL == NAN" >&5
- if eval "test \"`echo '$''{'ac_cv_huge_val_nan'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -82514,7 +83557,7 @@
-
- else
- cat > conftest.$ac_ext <<EOF
--#line 82518 "configure"
-+#line 83561 "configure"
- #include "confdefs.h"
-
- #include <math.h>
-@@ -82539,7 +83582,7 @@
- }
-
- EOF
--if { (eval echo configure:82543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:83586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- ac_cv_huge_val_nan=yes
-@@ -82835,7 +83878,7 @@
-
-
- echo $ac_n "checking for libswf support""... $ac_c" 1>&6
--echo "configure:82839: checking for libswf support" >&5
-+echo "configure:83882: checking for libswf support" >&5
- # Check whether --with-swf or --without-swf was given.
- if test "${with_swf+set}" = set; then
- withval="$with_swf"
-@@ -82883,7 +83926,7 @@
- SWF_DIR=$PHP_SWF
- else
- echo $ac_n "checking for libswf in default path""... $ac_c" 1>&6
--echo "configure:82887: checking for libswf in default path" >&5
-+echo "configure:83930: checking for libswf in default path" >&5
- for i in /usr/local /usr; do
- if test -r $i/lib/libswf.a; then
- SWF_DIR=$i
-@@ -83262,7 +84305,7 @@
-
-
- echo $ac_n "checking for Sybase support""... $ac_c" 1>&6
--echo "configure:83266: checking for Sybase support" >&5
-+echo "configure:84309: checking for Sybase support" >&5
- # Check whether --with-sybase or --without-sybase was given.
- if test "${with_sybase+set}" = set; then
- withval="$with_sybase"
-@@ -83663,7 +84706,7 @@
-
-
- echo $ac_n "checking for dnet_addr in -ldnet_stub""... $ac_c" 1>&6
--echo "configure:83667: checking for dnet_addr in -ldnet_stub" >&5
-+echo "configure:84710: checking for dnet_addr in -ldnet_stub" >&5
- ac_lib_var=`echo dnet_stub'_'dnet_addr | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -83671,7 +84714,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldnet_stub $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 83675 "configure"
-+#line 84718 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -83682,7 +84725,7 @@
- dnet_addr()
- ; return 0; }
- EOF
--if { (eval echo configure:83686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:84729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -83807,7 +84850,7 @@
- EOF
-
- echo $ac_n "checking for tdsdbopen in -lsybdb""... $ac_c" 1>&6
--echo "configure:83811: checking for tdsdbopen in -lsybdb" >&5
-+echo "configure:84854: checking for tdsdbopen in -lsybdb" >&5
- ac_lib_var=`echo sybdb'_'tdsdbopen | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -83815,7 +84858,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsybdb $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 83819 "configure"
-+#line 84862 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -83826,7 +84869,7 @@
- tdsdbopen()
- ; return 0; }
- EOF
--if { (eval echo configure:83830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:84873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -83863,7 +84906,7 @@
-
-
- echo $ac_n "checking for Sybase-CT support""... $ac_c" 1>&6
--echo "configure:83867: checking for Sybase-CT support" >&5
-+echo "configure:84910: checking for Sybase-CT support" >&5
- # Check whether --with-sybase-ct or --without-sybase-ct was given.
- if test "${with_sybase_ct+set}" = set; then
- withval="$with_sybase_ct"
-@@ -84424,7 +85467,7 @@
- done
-
- echo $ac_n "checking for netg_errstr in -ltcl""... $ac_c" 1>&6
--echo "configure:84428: checking for netg_errstr in -ltcl" >&5
-+echo "configure:85471: checking for netg_errstr in -ltcl" >&5
- ac_lib_var=`echo tcl'_'netg_errstr | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -84432,7 +85475,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ltcl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 84436 "configure"
-+#line 85479 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -84443,7 +85486,7 @@
- netg_errstr()
- ; return 0; }
- EOF
--if { (eval echo configure:84447: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:85490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -84601,7 +85644,7 @@
- done
-
- echo $ac_n "checking for insck__getVdate in -linsck""... $ac_c" 1>&6
--echo "configure:84605: checking for insck__getVdate in -linsck" >&5
-+echo "configure:85648: checking for insck__getVdate in -linsck" >&5
- ac_lib_var=`echo insck'_'insck__getVdate | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -84609,7 +85652,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-linsck $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 84613 "configure"
-+#line 85656 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -84620,7 +85663,7 @@
- insck__getVdate()
- ; return 0; }
- EOF
--if { (eval echo configure:84624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:85667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -84751,7 +85794,7 @@
- done
-
- echo $ac_n "checking for bsd_tcp in -linsck""... $ac_c" 1>&6
--echo "configure:84755: checking for bsd_tcp in -linsck" >&5
-+echo "configure:85798: checking for bsd_tcp in -linsck" >&5
- ac_lib_var=`echo insck'_'bsd_tcp | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -84759,7 +85802,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-linsck $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 84763 "configure"
-+#line 85806 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -84770,7 +85813,7 @@
- bsd_tcp()
- ; return 0; }
- EOF
--if { (eval echo configure:84774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:85817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -84829,7 +85872,7 @@
-
-
- echo $ac_n "checking whether to enable System V IPC support""... $ac_c" 1>&6
--echo "configure:84833: checking whether to enable System V IPC support" >&5
-+echo "configure:85876: checking whether to enable System V IPC support" >&5
- # Check whether --enable-sysvmsg or --disable-sysvmsg was given.
- if test "${enable_sysvmsg+set}" = set; then
- enableval="$enable_sysvmsg"
-@@ -85104,7 +86147,7 @@
-
-
- echo $ac_n "checking whether to enable System V semaphore support""... $ac_c" 1>&6
--echo "configure:85108: checking whether to enable System V semaphore support" >&5
-+echo "configure:86151: checking whether to enable System V semaphore support" >&5
- # Check whether --enable-sysvsem or --disable-sysvsem was given.
- if test "${enable_sysvsem+set}" = set; then
- enableval="$enable_sysvsem"
-@@ -85374,12 +86417,12 @@
- EOF
-
- echo $ac_n "checking for union semun""... $ac_c" 1>&6
--echo "configure:85378: checking for union semun" >&5
-+echo "configure:86421: checking for union semun" >&5
- if eval "test \"`echo '$''{'php_cv_semun'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 85383 "configure"
-+#line 86426 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-@@ -85390,7 +86433,7 @@
- union semun x;
- ; return 0; }
- EOF
--if { (eval echo configure:85394: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:86437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- php_cv_semun=yes
-@@ -85425,7 +86468,7 @@
-
-
- echo $ac_n "checking whether to enable System V shared memory support""... $ac_c" 1>&6
--echo "configure:85429: checking whether to enable System V shared memory support" >&5
-+echo "configure:86472: checking whether to enable System V shared memory support" >&5
- # Check whether --enable-sysvshm or --disable-sysvshm was given.
- if test "${enable_sysvshm+set}" = set; then
- enableval="$enable_sysvshm"
-@@ -85701,7 +86744,7 @@
-
-
- echo $ac_n "checking whether to enable tokenizer support""... $ac_c" 1>&6
--echo "configure:85705: checking whether to enable tokenizer support" >&5
-+echo "configure:86748: checking whether to enable tokenizer support" >&5
- # Check whether --enable-tokenizer or --disable-tokenizer was given.
- if test "${enable_tokenizer+set}" = set; then
- enableval="$enable_tokenizer"
-@@ -85978,7 +87021,7 @@
-
-
- echo $ac_n "checking whether to enable WDDX support""... $ac_c" 1>&6
--echo "configure:85982: checking whether to enable WDDX support" >&5
-+echo "configure:87025: checking whether to enable WDDX support" >&5
- # Check whether --enable-wddx or --disable-wddx was given.
- if test "${enable_wddx+set}" = set; then
- enableval="$enable_wddx"
-@@ -86255,7 +87298,7 @@
-
-
- echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
--echo "configure:86259: checking whether byte ordering is bigendian" >&5
-+echo "configure:87302: checking whether byte ordering is bigendian" >&5
- if eval "test \"`echo '$''{'ac_cv_c_bigendian_php'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -86265,7 +87308,7 @@
- ac_cv_c_bigendian_php=unknown
- else
- cat > conftest.$ac_ext <<EOF
--#line 86269 "configure"
-+#line 87312 "configure"
- #include "confdefs.h"
-
- int main(void)
-@@ -86281,7 +87324,7 @@
- }
-
- EOF
--if { (eval echo configure:86285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:87328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_c_bigendian_php=yes
- else
-@@ -86314,7 +87357,7 @@
-
-
- echo $ac_n "checking whether to enable XML support""... $ac_c" 1>&6
--echo "configure:86318: checking whether to enable XML support" >&5
-+echo "configure:87361: checking whether to enable XML support" >&5
- # Check whether --enable-xml or --disable-xml was given.
- if test "${enable_xml+set}" = set; then
- enableval="$enable_xml"
-@@ -86360,7 +87403,7 @@
-
-
- echo $ac_n "checking external libexpat install dir""... $ac_c" 1>&6
--echo "configure:86364: checking external libexpat install dir" >&5
-+echo "configure:87407: checking external libexpat install dir" >&5
- # Check whether --with-expat-dir or --without-expat-dir was given.
- if test "${with_expat_dir+set}" = set; then
- withval="$with_expat_dir"
-@@ -87043,7 +88086,7 @@
-
-
- echo $ac_n "checking for XMLRPC-EPI support""... $ac_c" 1>&6
--echo "configure:87047: checking for XMLRPC-EPI support" >&5
-+echo "configure:88090: checking for XMLRPC-EPI support" >&5
- # Check whether --with-xmlrpc or --without-xmlrpc was given.
- if test "${with_xmlrpc+set}" = set; then
- withval="$with_xmlrpc"
-@@ -87089,7 +88132,7 @@
-
-
- echo $ac_n "checking libexpat dir for XMLRPC-EPI""... $ac_c" 1>&6
--echo "configure:87093: checking libexpat dir for XMLRPC-EPI" >&5
-+echo "configure:88136: checking libexpat dir for XMLRPC-EPI" >&5
- # Check whether --with-expat-dir or --without-expat-dir was given.
- if test "${with_expat_dir+set}" = set; then
- withval="$with_expat_dir"
-@@ -87114,7 +88157,7 @@
-
-
- echo $ac_n "checking iconv dir for XMLRPC-EPI""... $ac_c" 1>&6
--echo "configure:87118: checking iconv dir for XMLRPC-EPI" >&5
-+echo "configure:88161: checking iconv dir for XMLRPC-EPI" >&5
- # Check whether --with-iconv-dir or --without-iconv-dir was given.
- if test "${with_iconv_dir+set}" = set; then
- withval="$with_iconv_dir"
-@@ -87315,12 +88358,12 @@
-
- if test "$PHP_ICONV" = "yes"; then
- echo $ac_n "checking for iconv""... $ac_c" 1>&6
--echo "configure:87319: checking for iconv" >&5
-+echo "configure:88362: checking for iconv" >&5
- if eval "test \"`echo '$''{'ac_cv_func_iconv'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 87324 "configure"
-+#line 88367 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char iconv(); below. */
-@@ -87343,7 +88386,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:87347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:88390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_iconv=yes"
- else
-@@ -87367,12 +88410,12 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for libiconv""... $ac_c" 1>&6
--echo "configure:87371: checking for libiconv" >&5
-+echo "configure:88414: checking for libiconv" >&5
- if eval "test \"`echo '$''{'ac_cv_func_libiconv'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 87376 "configure"
-+#line 88419 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char libiconv(); below. */
-@@ -87395,7 +88438,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:87399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:88442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_libiconv=yes"
- else
-@@ -87530,7 +88573,7 @@
- done
-
- echo $ac_n "checking for libiconv in -l$iconv_lib_name""... $ac_c" 1>&6
--echo "configure:87534: checking for libiconv in -l$iconv_lib_name" >&5
-+echo "configure:88577: checking for libiconv in -l$iconv_lib_name" >&5
- ac_lib_var=`echo $iconv_lib_name'_'libiconv | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -87538,7 +88581,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$iconv_lib_name $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 87542 "configure"
-+#line 88585 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -87549,7 +88592,7 @@
- libiconv()
- ; return 0; }
- EOF
--if { (eval echo configure:87553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:88596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -87662,7 +88705,7 @@
- done
-
- echo $ac_n "checking for iconv in -l$iconv_lib_name""... $ac_c" 1>&6
--echo "configure:87666: checking for iconv in -l$iconv_lib_name" >&5
-+echo "configure:88709: checking for iconv in -l$iconv_lib_name" >&5
- ac_lib_var=`echo $iconv_lib_name'_'iconv | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -87670,7 +88713,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$iconv_lib_name $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 87674 "configure"
-+#line 88717 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -87681,7 +88724,7 @@
- iconv()
- ; return 0; }
- EOF
--if { (eval echo configure:87685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:88728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -87880,12 +88923,12 @@
-
-
- echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
--echo "configure:87884: checking for ANSI C header files" >&5
-+echo "configure:88927: checking for ANSI C header files" >&5
- if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 87889 "configure"
-+#line 88932 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #include <stdarg.h>
-@@ -87893,7 +88936,7 @@
- #include <float.h>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:87897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:88940: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -87910,7 +88953,7 @@
- if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat > conftest.$ac_ext <<EOF
--#line 87914 "configure"
-+#line 88957 "configure"
- #include "confdefs.h"
- #include <string.h>
- EOF
-@@ -87928,7 +88971,7 @@
- if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat > conftest.$ac_ext <<EOF
--#line 87932 "configure"
-+#line 88975 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- EOF
-@@ -87949,7 +88992,7 @@
- :
- else
- cat > conftest.$ac_ext <<EOF
--#line 87953 "configure"
-+#line 88996 "configure"
- #include "confdefs.h"
- #include <ctype.h>
- #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-@@ -87960,7 +89003,7 @@
- exit (0); }
-
- EOF
--if { (eval echo configure:87964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:89007: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- :
- else
-@@ -87987,17 +89030,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:87991: checking for $ac_hdr" >&5
-+echo "configure:89034: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 87996 "configure"
-+#line 89039 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:88001: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:89044: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -88029,7 +89072,7 @@
-
-
- echo $ac_n "checking size of char""... $ac_c" 1>&6
--echo "configure:88033: checking size of char" >&5
-+echo "configure:89076: checking size of char" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_char'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -88037,9 +89080,10 @@
- ac_cv_sizeof_char=1
- else
- cat > conftest.$ac_ext <<EOF
--#line 88041 "configure"
-+#line 89084 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -88048,7 +89092,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:88052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:89096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_char=`cat conftestval`
- else
-@@ -88069,7 +89113,7 @@
-
-
- echo $ac_n "checking size of int""... $ac_c" 1>&6
--echo "configure:88073: checking size of int" >&5
-+echo "configure:89117: checking size of int" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -88077,9 +89121,10 @@
- ac_cv_sizeof_int=4
- else
- cat > conftest.$ac_ext <<EOF
--#line 88081 "configure"
-+#line 89125 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -88088,7 +89133,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:88092: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:89137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_int=`cat conftestval`
- else
-@@ -88108,7 +89153,7 @@
-
-
- echo $ac_n "checking size of long""... $ac_c" 1>&6
--echo "configure:88112: checking size of long" >&5
-+echo "configure:89157: checking size of long" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -88116,9 +89161,10 @@
- ac_cv_sizeof_long=4
- else
- cat > conftest.$ac_ext <<EOF
--#line 88120 "configure"
-+#line 89165 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -88127,7 +89173,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:88131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:89177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_long=`cat conftestval`
- else
-@@ -88147,7 +89193,7 @@
-
-
- echo $ac_n "checking size of long long""... $ac_c" 1>&6
--echo "configure:88151: checking size of long long" >&5
-+echo "configure:89197: checking size of long long" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -88155,9 +89201,10 @@
- ac_cv_sizeof_long_long=8
- else
- cat > conftest.$ac_ext <<EOF
--#line 88159 "configure"
-+#line 89205 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -88166,7 +89213,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:88170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:89217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_long_long=`cat conftestval`
- else
-@@ -88186,12 +89233,12 @@
-
-
- echo $ac_n "checking for size_t""... $ac_c" 1>&6
--echo "configure:88190: checking for size_t" >&5
-+echo "configure:89237: checking for size_t" >&5
- if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 88195 "configure"
-+#line 89242 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #if STDC_HEADERS
-@@ -88219,12 +89266,12 @@
- fi
-
- echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
--echo "configure:88223: checking whether time.h and sys/time.h may both be included" >&5
-+echo "configure:89270: checking whether time.h and sys/time.h may both be included" >&5
- if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 88228 "configure"
-+#line 89275 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/time.h>
-@@ -88233,7 +89280,7 @@
- struct tm *tp;
- ; return 0; }
- EOF
--if { (eval echo configure:88237: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:89284: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_header_time=yes
- else
-@@ -88254,12 +89301,12 @@
- fi
-
- echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
--echo "configure:88258: checking for uid_t in sys/types.h" >&5
-+echo "configure:89305: checking for uid_t in sys/types.h" >&5
- if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 88263 "configure"
-+#line 89310 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- EOF
-@@ -88299,12 +89346,12 @@
- memcpy memmove
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:88303: checking for $ac_func" >&5
-+echo "configure:89350: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 88308 "configure"
-+#line 89355 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -88327,7 +89374,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:88331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:89378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -88608,7 +89655,7 @@
- XMLRPC_DIR=$PHP_XMLRPC/include/xmlrpc-epi
- else
- echo $ac_n "checking for XMLRPC-EPI in default path""... $ac_c" 1>&6
--echo "configure:88612: checking for XMLRPC-EPI in default path" >&5
-+echo "configure:89659: checking for XMLRPC-EPI in default path" >&5
- for i in /usr/local /usr; do
- if test -r $i/include/xmlrpc.h; then
- XMLRPC_DIR=$i/include
-@@ -88756,7 +89803,7 @@
-
-
- echo $ac_n "checking whether to enable xslt support""... $ac_c" 1>&6
--echo "configure:88760: checking whether to enable xslt support" >&5
-+echo "configure:89807: checking whether to enable xslt support" >&5
- # Check whether --enable-xslt or --disable-xslt was given.
- if test "${enable_xslt+set}" = set; then
- enableval="$enable_xslt"
-@@ -88802,7 +89849,7 @@
-
-
- echo $ac_n "checking for XSLT Sablotron backend""... $ac_c" 1>&6
--echo "configure:88806: checking for XSLT Sablotron backend" >&5
-+echo "configure:89853: checking for XSLT Sablotron backend" >&5
- # Check whether --with-xslt-sablot or --without-xslt-sablot was given.
- if test "${with_xslt_sablot+set}" = set; then
- withval="$with_xslt_sablot"
-@@ -88827,7 +89874,7 @@
-
-
- echo $ac_n "checking for libexpat dir for Sablotron XSL support""... $ac_c" 1>&6
--echo "configure:88831: checking for libexpat dir for Sablotron XSL support" >&5
-+echo "configure:89878: checking for libexpat dir for Sablotron XSL support" >&5
- # Check whether --with-expat-dir or --without-expat-dir was given.
- if test "${with_expat_dir+set}" = set; then
- withval="$with_expat_dir"
-@@ -88852,7 +89899,7 @@
-
-
- echo $ac_n "checking for iconv dir for Sablotron XSL support""... $ac_c" 1>&6
--echo "configure:88856: checking for iconv dir for Sablotron XSL support" >&5
-+echo "configure:89903: checking for iconv dir for Sablotron XSL support" >&5
- # Check whether --with-iconv-dir or --without-iconv-dir was given.
- if test "${with_iconv_dir+set}" = set; then
- withval="$with_iconv_dir"
-@@ -88877,7 +89924,7 @@
-
-
- echo $ac_n "checking for JavaScript for Sablotron XSL support""... $ac_c" 1>&6
--echo "configure:88881: checking for JavaScript for Sablotron XSL support" >&5
-+echo "configure:89928: checking for JavaScript for Sablotron XSL support" >&5
- # Check whether --with-sablot-js or --without-sablot-js was given.
- if test "${with_sablot_js+set}" = set; then
- withval="$with_sablot_js"
-@@ -89144,7 +90191,7 @@
- XSLT_DIR=$XSLT_CHECK_DIR
- else
- echo $ac_n "checking for $XSLT_BACKEND_NAME libraries in the default path""... $ac_c" 1>&6
--echo "configure:89148: checking for $XSLT_BACKEND_NAME libraries in the default path" >&5
-+echo "configure:90195: checking for $XSLT_BACKEND_NAME libraries in the default path" >&5
- for i in /usr/local /usr; do
- condition="$i$XSLT_TEST_FILE"
- if test -r $condition; then
-@@ -89161,7 +90208,7 @@
-
- if test "$PHP_XSLT_SABLOT" != "no"; then
- echo $ac_n "checking for sablot-config""... $ac_c" 1>&6
--echo "configure:89165: checking for sablot-config" >&5
-+echo "configure:90212: checking for sablot-config" >&5
- if test -x $XSLT_DIR/bin/sablot-config ; then
- echo "$ac_t""found" 1>&6
- cat >> confdefs.h <<\EOF
-@@ -89179,14 +90226,14 @@
- echo "$ac_t""not found" 1>&6
- fi
- echo $ac_n "checking for Sablotron version""... $ac_c" 1>&6
--echo "configure:89183: checking for Sablotron version" >&5
-+echo "configure:90230: checking for Sablotron version" >&5
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$XSLT_DIR/include"
- if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 89190 "configure"
-+#line 90237 "configure"
- #include "confdefs.h"
-
- #include <stdlib.h>
-@@ -89204,7 +90251,7 @@
- }
-
- EOF
--if { (eval echo configure:89208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:90255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- echo "$ac_t"">= 0.96" 1>&6
-@@ -89391,12 +90438,12 @@
-
- if test "$PHP_ICONV" = "yes"; then
- echo $ac_n "checking for iconv""... $ac_c" 1>&6
--echo "configure:89395: checking for iconv" >&5
-+echo "configure:90442: checking for iconv" >&5
- if eval "test \"`echo '$''{'ac_cv_func_iconv'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 89400 "configure"
-+#line 90447 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char iconv(); below. */
-@@ -89419,7 +90466,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:89423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:90470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_iconv=yes"
- else
-@@ -89443,12 +90490,12 @@
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking for libiconv""... $ac_c" 1>&6
--echo "configure:89447: checking for libiconv" >&5
-+echo "configure:90494: checking for libiconv" >&5
- if eval "test \"`echo '$''{'ac_cv_func_libiconv'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 89452 "configure"
-+#line 90499 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char libiconv(); below. */
-@@ -89471,7 +90518,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:89475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:90522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_libiconv=yes"
- else
-@@ -89606,7 +90653,7 @@
- done
-
- echo $ac_n "checking for libiconv in -l$iconv_lib_name""... $ac_c" 1>&6
--echo "configure:89610: checking for libiconv in -l$iconv_lib_name" >&5
-+echo "configure:90657: checking for libiconv in -l$iconv_lib_name" >&5
- ac_lib_var=`echo $iconv_lib_name'_'libiconv | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -89614,7 +90661,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$iconv_lib_name $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 89618 "configure"
-+#line 90665 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -89625,7 +90672,7 @@
- libiconv()
- ; return 0; }
- EOF
--if { (eval echo configure:89629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:90676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -89738,7 +90785,7 @@
- done
-
- echo $ac_n "checking for iconv in -l$iconv_lib_name""... $ac_c" 1>&6
--echo "configure:89742: checking for iconv in -l$iconv_lib_name" >&5
-+echo "configure:90789: checking for iconv in -l$iconv_lib_name" >&5
- ac_lib_var=`echo $iconv_lib_name'_'iconv | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -89746,7 +90793,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-l$iconv_lib_name $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 89750 "configure"
-+#line 90797 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -89757,7 +90804,7 @@
- iconv()
- ; return 0; }
- EOF
--if { (eval echo configure:89761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:90808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -90029,7 +91076,7 @@
- done
-
- echo $ac_n "checking for JS_GetRuntime in -ljs""... $ac_c" 1>&6
--echo "configure:90033: checking for JS_GetRuntime in -ljs" >&5
-+echo "configure:91080: checking for JS_GetRuntime in -ljs" >&5
- ac_lib_var=`echo js'_'JS_GetRuntime | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -90037,7 +91084,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ljs $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 90041 "configure"
-+#line 91088 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -90048,7 +91095,7 @@
- JS_GetRuntime()
- ; return 0; }
- EOF
--if { (eval echo configure:90052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:91099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -90261,7 +91308,7 @@
- done
-
- echo $ac_n "checking for SablotSetEncoding in -lsablot""... $ac_c" 1>&6
--echo "configure:90265: checking for SablotSetEncoding in -lsablot" >&5
-+echo "configure:91312: checking for SablotSetEncoding in -lsablot" >&5
- ac_lib_var=`echo sablot'_'SablotSetEncoding | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -90269,7 +91316,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsablot $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 90273 "configure"
-+#line 91320 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -90280,7 +91327,7 @@
- SablotSetEncoding()
- ; return 0; }
- EOF
--if { (eval echo configure:90284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:91331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -90397,7 +91444,7 @@
- done
-
- echo $ac_n "checking for SablotGetOptions in -lsablot""... $ac_c" 1>&6
--echo "configure:90401: checking for SablotGetOptions in -lsablot" >&5
-+echo "configure:91448: checking for SablotGetOptions in -lsablot" >&5
- ac_lib_var=`echo sablot'_'SablotGetOptions | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -90405,7 +91452,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsablot $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 90409 "configure"
-+#line 91456 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -90416,7 +91463,7 @@
- SablotGetOptions()
- ; return 0; }
- EOF
--if { (eval echo configure:90420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:91467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -90596,7 +91643,7 @@
-
-
- echo $ac_n "checking for YAZ support""... $ac_c" 1>&6
--echo "configure:90600: checking for YAZ support" >&5
-+echo "configure:91647: checking for YAZ support" >&5
- # Check whether --with-yaz or --without-yaz was given.
- if test "${with_yaz+set}" = set; then
- withval="$with_yaz"
-@@ -90646,7 +91693,7 @@
- # Extract the first word of "yaz-config", so it can be a program name with args.
- set dummy yaz-config; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:90650: checking for $ac_word" >&5
-+echo "configure:91697: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_yazconfig'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -90695,7 +91742,7 @@
- . $yazconfig
-
- echo $ac_n "checking for YAZ version""... $ac_c" 1>&6
--echo "configure:90699: checking for YAZ version" >&5
-+echo "configure:91746: checking for YAZ version" >&5
- yaz_version=`echo $YAZVERSION | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
- if test "$yaz_version" -ge 1009000; then
- echo "$ac_t""$YAZVERSION" 1>&6
-@@ -91120,7 +92167,7 @@
-
-
- echo $ac_n "checking whether to include YP support""... $ac_c" 1>&6
--echo "configure:91124: checking whether to include YP support" >&5
-+echo "configure:92171: checking whether to include YP support" >&5
- # Check whether --enable-yp or --disable-yp was given.
- if test "${enable_yp+set}" = set; then
- enableval="$enable_yp"
-@@ -91166,7 +92213,7 @@
- if test "$PHP_YP" != "no"; then
-
- echo $ac_n "checking for yp_match in -lnsl""... $ac_c" 1>&6
--echo "configure:91170: checking for yp_match in -lnsl" >&5
-+echo "configure:92217: checking for yp_match in -lnsl" >&5
- ac_lib_var=`echo nsl'_'yp_match | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -91174,7 +92221,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lnsl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 91178 "configure"
-+#line 92225 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -91185,7 +92232,7 @@
- yp_match()
- ; return 0; }
- EOF
--if { (eval echo configure:91189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:92236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -91207,7 +92254,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for yp_match in -lc""... $ac_c" 1>&6
--echo "configure:91211: checking for yp_match in -lc" >&5
-+echo "configure:92258: checking for yp_match in -lc" >&5
- ac_lib_var=`echo c'_'yp_match | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -91215,7 +92262,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lc $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 91219 "configure"
-+#line 92266 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -91226,7 +92273,7 @@
- yp_match()
- ; return 0; }
- EOF
--if { (eval echo configure:91230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:92277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -91601,7 +92648,7 @@
-
-
- echo $ac_n "checking for ZIP support""... $ac_c" 1>&6
--echo "configure:91605: checking for ZIP support" >&5
-+echo "configure:92652: checking for ZIP support" >&5
- # Check whether --with-zip or --without-zip was given.
- if test "${with_zip+set}" = set; then
- withval="$with_zip"
-@@ -91749,7 +92796,7 @@
- done
-
- echo $ac_n "checking for zzip_open in -lzzip""... $ac_c" 1>&6
--echo "configure:91753: checking for zzip_open in -lzzip" >&5
-+echo "configure:92800: checking for zzip_open in -lzzip" >&5
- ac_lib_var=`echo zzip'_'zzip_open | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -91757,7 +92804,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lzzip $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 91761 "configure"
-+#line 92808 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -91768,7 +92815,7 @@
- zzip_open()
- ; return 0; }
- EOF
--if { (eval echo configure:91772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:92819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -92226,7 +93273,7 @@
-
-
- echo $ac_n "checking whether to install PEAR""... $ac_c" 1>&6
--echo "configure:92230: checking whether to install PEAR" >&5
-+echo "configure:93277: checking whether to install PEAR" >&5
- # Check whether --with-pear or --without-pear was given.
- if test "${with_pear+set}" = set; then
- withval="$with_pear"
-@@ -92332,7 +93379,7 @@
- echo "configure: warning: You will need bison if you want to regenerate the Zend parser." 1>&2
- else
- echo $ac_n "checking bison version""... $ac_c" 1>&6
--echo "configure:92336: checking bison version" >&5
-+echo "configure:93383: checking bison version" >&5
- set `bison --version| grep 'GNU Bison' | cut -d ' ' -f 4 | sed -e 's/\./ /' | tr -d 'a-z'`
- if test "${1}" = "1" -a "${2}" -lt "28"; then
- echo "configure: warning: You will need bison 1.28 if you want to regenerate the Zend parser (found ${1}.${2})." 1>&2
-@@ -92367,17 +93414,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:92371: checking for $ac_hdr" >&5
-+echo "configure:93418: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 92376 "configure"
-+#line 93423 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:92381: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:93428: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -92405,12 +93452,12 @@
-
-
- echo $ac_n "checking for size_t""... $ac_c" 1>&6
--echo "configure:92409: checking for size_t" >&5
-+echo "configure:93456: checking for size_t" >&5
- if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 92414 "configure"
-+#line 93461 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #if STDC_HEADERS
-@@ -92438,12 +93485,12 @@
- fi
-
- echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
--echo "configure:92442: checking return type of signal handlers" >&5
-+echo "configure:93489: checking return type of signal handlers" >&5
- if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 92447 "configure"
-+#line 93494 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <signal.h>
-@@ -92460,7 +93507,7 @@
- int i;
- ; return 0; }
- EOF
--if { (eval echo configure:92464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:93511: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_type_signal=void
- else
-@@ -92480,12 +93527,12 @@
-
-
- echo $ac_n "checking for uint""... $ac_c" 1>&6
--echo "configure:92484: checking for uint" >&5
-+echo "configure:93531: checking for uint" >&5
- if eval "test \"`echo '$''{'ac_cv_type_uint'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 92489 "configure"
-+#line 93536 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #if STDC_HEADERS
-@@ -92513,12 +93560,12 @@
- fi
-
- echo $ac_n "checking for ulong""... $ac_c" 1>&6
--echo "configure:92517: checking for ulong" >&5
-+echo "configure:93564: checking for ulong" >&5
- if eval "test \"`echo '$''{'ac_cv_type_ulong'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 92522 "configure"
-+#line 93569 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #if STDC_HEADERS
-@@ -92548,9 +93595,9 @@
-
-
- echo $ac_n "checking for int32_t""... $ac_c" 1>&6
--echo "configure:92552: checking for int32_t" >&5
-+echo "configure:93599: checking for int32_t" >&5
- cat > conftest.$ac_ext <<EOF
--#line 92554 "configure"
-+#line 93601 "configure"
- #include "confdefs.h"
-
- #if HAVE_SYS_TYPES_H
-@@ -92569,7 +93616,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:92573: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:93620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- cat >> confdefs.h <<EOF
-@@ -92588,9 +93635,9 @@
- rm -f conftest*
-
- echo $ac_n "checking for uint32_t""... $ac_c" 1>&6
--echo "configure:92592: checking for uint32_t" >&5
-+echo "configure:93639: checking for uint32_t" >&5
- cat > conftest.$ac_ext <<EOF
--#line 92594 "configure"
-+#line 93641 "configure"
- #include "confdefs.h"
-
- #if HAVE_SYS_TYPES_H
-@@ -92609,7 +93656,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:92613: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:93660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- cat >> confdefs.h <<EOF
-@@ -92628,12 +93675,12 @@
- rm -f conftest*
-
- echo $ac_n "checking for vprintf""... $ac_c" 1>&6
--echo "configure:92632: checking for vprintf" >&5
-+echo "configure:93679: checking for vprintf" >&5
- if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 92637 "configure"
-+#line 93684 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char vprintf(); below. */
-@@ -92656,7 +93703,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:92660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:93707: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_vprintf=yes"
- else
-@@ -92680,12 +93727,12 @@
-
- if test "$ac_cv_func_vprintf" != yes; then
- echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
--echo "configure:92684: checking for _doprnt" >&5
-+echo "configure:93731: checking for _doprnt" >&5
- if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 92689 "configure"
-+#line 93736 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char _doprnt(); below. */
-@@ -92708,7 +93755,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:92712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:93759: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func__doprnt=yes"
- else
-@@ -92733,7 +93780,7 @@
- fi
-
- echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
--echo "configure:92737: checking for 8-bit clean memcmp" >&5
-+echo "configure:93784: checking for 8-bit clean memcmp" >&5
- if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -92741,7 +93788,7 @@
- ac_cv_func_memcmp_clean=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 92745 "configure"
-+#line 93792 "configure"
- #include "confdefs.h"
-
- main()
-@@ -92751,7 +93798,7 @@
- }
-
- EOF
--if { (eval echo configure:92755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:93802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_func_memcmp_clean=yes
- else
-@@ -92771,19 +93818,19 @@
- # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
- # for constant arguments. Useless!
- echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
--echo "configure:92775: checking for working alloca.h" >&5
-+echo "configure:93822: checking for working alloca.h" >&5
- if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 92780 "configure"
-+#line 93827 "configure"
- #include "confdefs.h"
- #include <alloca.h>
- int main() {
- char *p = alloca(2 * sizeof(int));
- ; return 0; }
- EOF
--if { (eval echo configure:92787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:93834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ac_cv_header_alloca_h=yes
- else
-@@ -92804,12 +93851,12 @@
- fi
-
- echo $ac_n "checking for alloca""... $ac_c" 1>&6
--echo "configure:92808: checking for alloca" >&5
-+echo "configure:93855: checking for alloca" >&5
- if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 92813 "configure"
-+#line 93860 "configure"
- #include "confdefs.h"
-
- #ifdef __GNUC__
-@@ -92837,7 +93884,7 @@
- char *p = (char *) alloca(1);
- ; return 0; }
- EOF
--if { (eval echo configure:92841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:93888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- ac_cv_func_alloca_works=yes
- else
-@@ -92869,12 +93916,12 @@
-
-
- echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
--echo "configure:92873: checking whether alloca needs Cray hooks" >&5
-+echo "configure:93920: checking whether alloca needs Cray hooks" >&5
- if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 92878 "configure"
-+#line 93925 "configure"
- #include "confdefs.h"
- #if defined(CRAY) && ! defined(CRAY2)
- webecray
-@@ -92899,12 +93946,12 @@
- if test $ac_cv_os_cray = yes; then
- for ac_func in _getb67 GETB67 getb67; do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:92903: checking for $ac_func" >&5
-+echo "configure:93950: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 92908 "configure"
-+#line 93955 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -92927,7 +93974,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:92931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:93978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -92954,7 +94001,7 @@
- fi
-
- echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
--echo "configure:92958: checking stack direction for C alloca" >&5
-+echo "configure:94005: checking stack direction for C alloca" >&5
- if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -92962,7 +94009,7 @@
- ac_cv_c_stack_direction=0
- else
- cat > conftest.$ac_ext <<EOF
--#line 92966 "configure"
-+#line 94013 "configure"
- #include "confdefs.h"
- find_stack_direction ()
- {
-@@ -92981,7 +94028,7 @@
- exit (find_stack_direction() < 0);
- }
- EOF
--if { (eval echo configure:92985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:94032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_c_stack_direction=1
- else
-@@ -93005,12 +94052,12 @@
- for ac_func in memcpy strdup getpid kill strtod strtol finite fpclass
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:93009: checking for $ac_func" >&5
-+echo "configure:94056: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 93014 "configure"
-+#line 94061 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -93033,7 +94080,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:93037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:94084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -93061,12 +94108,12 @@
- for ac_func in finite isfinite isinf isnan
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:93065: checking for $ac_func" >&5
-+echo "configure:94112: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 93070 "configure"
-+#line 94117 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-@@ -93089,7 +94136,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:93093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:94140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
- else
-@@ -93116,13 +94163,13 @@
-
-
- echo $ac_n "checking whether fp_except is defined""... $ac_c" 1>&6
--echo "configure:93120: checking whether fp_except is defined" >&5
-+echo "configure:94167: checking whether fp_except is defined" >&5
- if eval "test \"`echo '$''{'ac_cv_type_fp_except'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-
- cat > conftest.$ac_ext <<EOF
--#line 93126 "configure"
-+#line 94173 "configure"
- #include "confdefs.h"
-
- #include <floatingpoint.h>
-@@ -93133,7 +94180,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:93137: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:94184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- ac_cv_type_fp_except=yes
-@@ -93163,17 +94210,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:93167: checking for $ac_hdr" >&5
-+echo "configure:94214: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 93172 "configure"
-+#line 94219 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:93177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:94224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -93202,14 +94249,14 @@
-
-
- echo $ac_n "checking whether dlsym() requires a leading underscore in symbol names""... $ac_c" 1>&6
--echo "configure:93206: checking whether dlsym() requires a leading underscore in symbol names" >&5
-+echo "configure:94253: checking whether dlsym() requires a leading underscore in symbol names" >&5
- if test "$cross_compiling" = yes; then :
-
- else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 93213 "configure"
-+#line 94260 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -93270,7 +94317,7 @@
- exit (status);
- }
- EOF
-- if { (eval echo configure:93274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ if { (eval echo configure:94321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
-@@ -93353,23 +94400,23 @@
-
-
- echo $ac_n "checking whether to enable thread-safety""... $ac_c" 1>&6
--echo "configure:93357: checking whether to enable thread-safety" >&5
-+echo "configure:94404: checking whether to enable thread-safety" >&5
- echo "$ac_t""$ZEND_EXPERIMENTAL_ZTS" 1>&6
-
- echo $ac_n "checking whether to enable inline optimization for GCC""... $ac_c" 1>&6
--echo "configure:93361: checking whether to enable inline optimization for GCC" >&5
-+echo "configure:94408: checking whether to enable inline optimization for GCC" >&5
- echo "$ac_t""$ZEND_INLINE_OPTIMIZATION" 1>&6
-
- echo $ac_n "checking whether to enable a memory limit""... $ac_c" 1>&6
--echo "configure:93365: checking whether to enable a memory limit" >&5
-+echo "configure:94412: checking whether to enable a memory limit" >&5
- echo "$ac_t""$ZEND_MEMORY_LIMIT" 1>&6
-
- echo $ac_n "checking whether to enable Zend debugging""... $ac_c" 1>&6
--echo "configure:93369: checking whether to enable Zend debugging" >&5
-+echo "configure:94416: checking whether to enable Zend debugging" >&5
- echo "$ac_t""$ZEND_DEBUG" 1>&6
-
- echo $ac_n "checking whether to enable Zend multibyte""... $ac_c" 1>&6
--echo "configure:93373: checking whether to enable Zend multibyte" >&5
-+echo "configure:94420: checking whether to enable Zend multibyte" >&5
- echo "$ac_t""$ZEND_MULTIBYTE" 1>&6
-
- if test "$ZEND_DEBUG" = "yes"; then
-@@ -93429,21 +94476,21 @@
-
-
- echo $ac_n "checking for inline""... $ac_c" 1>&6
--echo "configure:93433: checking for inline" >&5
-+echo "configure:94480: checking for inline" >&5
- if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- ac_cv_c_inline=no
- for ac_kw in inline __inline__ __inline; do
- cat > conftest.$ac_ext <<EOF
--#line 93440 "configure"
-+#line 94487 "configure"
- #include "confdefs.h"
-
- int main() {
- } $ac_kw foo() {
- ; return 0; }
- EOF
--if { (eval echo configure:93447: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:94494: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_c_inline=$ac_kw; break
- else
-@@ -93513,17 +94560,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:93517: checking for $ac_hdr" >&5
-+echo "configure:94564: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 93522 "configure"
-+#line 94569 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:93527: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:94574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -93600,7 +94647,7 @@
-
-
- echo $ac_n "checking for GNU Pth""... $ac_c" 1>&6
--echo "configure:93604: checking for GNU Pth" >&5
-+echo "configure:94651: checking for GNU Pth" >&5
- PTH_PREFIX="`$TSRM_PTH --prefix`"
- if test -z "$PTH_PREFIX"; then
- echo "$ac_t""Please check your Pth installation" 1>&6
-@@ -93630,17 +94677,17 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:93634: checking for $ac_hdr" >&5
-+echo "configure:94681: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 93639 "configure"
-+#line 94686 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:93644: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+{ (eval echo configure:94691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
- ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
- rm -rf conftest*
-@@ -93670,7 +94717,7 @@
-
- LIBS="$LIBS -lst"
- echo $ac_n "checking for SGI's State Threads""... $ac_c" 1>&6
--echo "configure:93674: checking for SGI's State Threads" >&5
-+echo "configure:94721: checking for SGI's State Threads" >&5
- echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
- #define TSRM_ST 1
-@@ -93702,7 +94749,7 @@
- pthreads_working=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 93706 "configure"
-+#line 94753 "configure"
- #include "confdefs.h"
-
- #include <pthread.h>
-@@ -93720,7 +94767,7 @@
- return pthread_create(&thd, NULL, thread_routine, &data);
- }
- EOF
--if { (eval echo configure:93724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:94771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- pthreads_working=yes
-@@ -93740,7 +94787,7 @@
- CFLAGS=$save_CFLAGS
-
- echo $ac_n "checking for pthreads_cflags""... $ac_c" 1>&6
--echo "configure:93744: checking for pthreads_cflags" >&5
-+echo "configure:94791: checking for pthreads_cflags" >&5
- if eval "test \"`echo '$''{'ac_cv_pthreads_cflags'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -93755,7 +94802,7 @@
- pthreads_working=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 93759 "configure"
-+#line 94806 "configure"
- #include "confdefs.h"
-
- #include <pthread.h>
-@@ -93773,7 +94820,7 @@
- return pthread_create(&thd, NULL, thread_routine, &data);
- }
- EOF
--if { (eval echo configure:93777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:94824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- pthreads_working=yes
-@@ -93803,7 +94850,7 @@
- echo "$ac_t""$ac_cv_pthreads_cflags" 1>&6
-
- echo $ac_n "checking for pthreads_lib""... $ac_c" 1>&6
--echo "configure:93807: checking for pthreads_lib" >&5
-+echo "configure:94854: checking for pthreads_lib" >&5
- if eval "test \"`echo '$''{'ac_cv_pthreads_lib'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -93818,7 +94865,7 @@
- pthreads_working=no
- else
- cat > conftest.$ac_ext <<EOF
--#line 93822 "configure"
-+#line 94869 "configure"
- #include "confdefs.h"
-
- #include <pthread.h>
-@@ -93836,7 +94883,7 @@
- return pthread_create(&thd, NULL, thread_routine, &data);
- }
- EOF
--if { (eval echo configure:93840: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:94887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-
- pthreads_working=yes
-@@ -93887,7 +94934,7 @@
-
-
- echo $ac_n "checking for POSIX threads""... $ac_c" 1>&6
--echo "configure:93891: checking for POSIX threads" >&5
-+echo "configure:94938: checking for POSIX threads" >&5
- echo "$ac_t""yes" 1>&6
- fi
-
-@@ -94412,12 +95459,12 @@
- fi
-
- echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
--echo "configure:94416: checking for Cygwin environment" >&5
-+echo "configure:95463: checking for Cygwin environment" >&5
- if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 94421 "configure"
-+#line 95468 "configure"
- #include "confdefs.h"
-
- int main() {
-@@ -94428,7 +95475,7 @@
- return __CYGWIN__;
- ; return 0; }
- EOF
--if { (eval echo configure:94432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:95479: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_cygwin=yes
- else
-@@ -94445,19 +95492,19 @@
- CYGWIN=
- test "$ac_cv_cygwin" = yes && CYGWIN=yes
- echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
--echo "configure:94449: checking for mingw32 environment" >&5
-+echo "configure:95496: checking for mingw32 environment" >&5
- if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 94454 "configure"
-+#line 95501 "configure"
- #include "confdefs.h"
-
- int main() {
- return __MINGW32__;
- ; return 0; }
- EOF
--if { (eval echo configure:94461: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:95508: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_mingw32=yes
- else
-@@ -94543,7 +95590,7 @@
- fi
-
- echo $ac_n "checking build system type""... $ac_c" 1>&6
--echo "configure:94547: checking build system type" >&5
-+echo "configure:95594: checking build system type" >&5
-
- build_alias=$build
- case "$build_alias" in
-@@ -94572,7 +95619,7 @@
- if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
--echo "configure:94576: checking for ld used by GCC" >&5
-+echo "configure:95623: checking for ld used by GCC" >&5
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
-@@ -94602,10 +95649,10 @@
- esac
- elif test "$with_gnu_ld" = yes; then
- echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
--echo "configure:94606: checking for GNU ld" >&5
-+echo "configure:95653: checking for GNU ld" >&5
- else
- echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
--echo "configure:94609: checking for non-GNU ld" >&5
-+echo "configure:95656: checking for non-GNU ld" >&5
- fi
- if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -94640,7 +95687,7 @@
- fi
- test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
- echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
--echo "configure:94644: checking if the linker ($LD) is GNU ld" >&5
-+echo "configure:95691: checking if the linker ($LD) is GNU ld" >&5
- if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -94657,7 +95704,7 @@
-
-
- echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
--echo "configure:94661: checking for $LD option to reload object files" >&5
-+echo "configure:95708: checking for $LD option to reload object files" >&5
- if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -94669,7 +95716,7 @@
- test -n "$reload_flag" && reload_flag=" $reload_flag"
-
- echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
--echo "configure:94673: checking for BSD-compatible nm" >&5
-+echo "configure:95720: checking for BSD-compatible nm" >&5
- if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -94707,7 +95754,7 @@
- echo "$ac_t""$NM" 1>&6
-
- echo $ac_n "checking for a sed that does not truncate output""... $ac_c" 1>&6
--echo "configure:94711: checking for a sed that does not truncate output" >&5
-+echo "configure:95758: checking for a sed that does not truncate output" >&5
- if eval "test \"`echo '$''{'lt_cv_path_SED'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -94791,7 +95838,7 @@
- echo "$ac_t""$SED" 1>&6
-
- echo $ac_n "checking how to recognise dependent libraries""... $ac_c" 1>&6
--echo "configure:94795: checking how to recognise dependent libraries" >&5
-+echo "configure:95842: checking how to recognise dependent libraries" >&5
- if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -94978,13 +96025,13 @@
- deplibs_check_method=$lt_cv_deplibs_check_method
-
- echo $ac_n "checking for object suffix""... $ac_c" 1>&6
--echo "configure:94982: checking for object suffix" >&5
-+echo "configure:96029: checking for object suffix" >&5
- if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- rm -f conftest*
- echo 'int i = 1;' > conftest.$ac_ext
--if { (eval echo configure:94988: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:96035: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- for ac_file in conftest.*; do
- case $ac_file in
- *.c) ;;
-@@ -95004,7 +96051,7 @@
-
-
- echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
--echo "configure:95008: checking for executable suffix" >&5
-+echo "configure:96055: checking for executable suffix" >&5
- if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -95014,10 +96061,10 @@
- rm -f conftest*
- echo 'int main () { return 0; }' > conftest.$ac_ext
- ac_cv_exeext=
-- if { (eval echo configure:95018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-+ if { (eval echo configure:96065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
- for file in conftest.*; do
- case $file in
-- *.c | *.o | *.obj) ;;
-+ *.$ac_ext | *.c | *.o | *.obj) ;;
- *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
- esac
- done
-@@ -95045,7 +96092,7 @@
-
- # Check for command to grab the raw symbol name followed by C symbol from nm.
- echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6
--echo "configure:95049: checking command to parse $NM output" >&5
-+echo "configure:96096: checking command to parse $NM output" >&5
- if eval "test \"`echo '$''{'lt_cv_sys_global_symbol_pipe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -95128,10 +96175,10 @@
- int main(){nm_test_var='a';nm_test_func();return(0);}
- EOF
-
-- if { (eval echo configure:95132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ if { (eval echo configure:96179: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- # Now try to grab the symbols.
- nlist=conftest.nm
-- if { (eval echo configure:95135: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then
-+ if { (eval echo configure:96182: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then
- # Try sorting and uniquifying the output.
- if sort "$nlist" | uniq > "$nlist"T; then
- mv -f "$nlist"T "$nlist"
-@@ -95182,7 +96229,7 @@
- save_CFLAGS="$CFLAGS"
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$no_builtin_flag"
-- if { (eval echo configure:95186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest$ac_exeext; then
-+ if { (eval echo configure:96233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest$ac_exeext; then
- pipe_works=yes
- fi
- LIBS="$save_LIBS"
-@@ -95236,7 +96283,7 @@
- file_magic*)
- if test "$file_magic_cmd" = '$MAGIC_CMD'; then
- echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6
--echo "configure:95240: checking for ${ac_tool_prefix}file" >&5
-+echo "configure:96287: checking for ${ac_tool_prefix}file" >&5
- if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -95298,7 +96345,7 @@
- if test -z "$lt_cv_path_MAGIC_CMD"; then
- if test -n "$ac_tool_prefix"; then
- echo $ac_n "checking for file""... $ac_c" 1>&6
--echo "configure:95302: checking for file" >&5
-+echo "configure:96349: checking for file" >&5
- if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -95369,7 +96416,7 @@
- # 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:95373: checking for $ac_word" >&5
-+echo "configure:96420: 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
-@@ -95401,7 +96448,7 @@
- # 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:95405: checking for $ac_word" >&5
-+echo "configure:96452: 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
-@@ -95436,7 +96483,7 @@
- # 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:95440: checking for $ac_word" >&5
-+echo "configure:96487: 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
-@@ -95468,7 +96515,7 @@
- # 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:95472: checking for $ac_word" >&5
-+echo "configure:96519: 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
-@@ -95517,8 +96564,8 @@
- case $host in
- *-*-irix6*)
- # Find out which ABI we are using.
-- echo '#line 95521 "configure"' > conftest.$ac_ext
-- if { (eval echo configure:95522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ echo '#line 96568 "configure"' > conftest.$ac_ext
-+ if { (eval echo configure:96569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- case `/usr/bin/file conftest.$ac_objext` in
- *32-bit*)
- LD="${LD-ld} -32"
-@@ -95539,7 +96586,7 @@
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -belf"
- echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
--echo "configure:95543: checking whether the C compiler needs -belf" >&5
-+echo "configure:96590: checking whether the C compiler needs -belf" >&5
- if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -95552,14 +96599,14 @@
- cross_compiling=$ac_cv_prog_cc_cross
-
- cat > conftest.$ac_ext <<EOF
--#line 95556 "configure"
-+#line 96603 "configure"
- #include "confdefs.h"
-
- int main() {
-
- ; return 0; }
- EOF
--if { (eval echo configure:95563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:96610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- lt_cv_cc_needs_belf=yes
- else
-@@ -95681,7 +96728,7 @@
- ## FIXME: this should be a separate macro
- ##
- echo $ac_n "checking for objdir""... $ac_c" 1>&6
--echo "configure:95685: checking for objdir" >&5
-+echo "configure:96732: checking for objdir" >&5
- rm -f .libs 2>/dev/null
- mkdir .libs 2>/dev/null
- if test -d .libs; then
-@@ -95712,7 +96759,7 @@
- # in isolation, and that seeing it set (from the cache) indicates that
- # the associated values are set (in the cache) correctly too.
- echo $ac_n "checking for $compiler option to produce PIC""... $ac_c" 1>&6
--echo "configure:95716: checking for $compiler option to produce PIC" >&5
-+echo "configure:96763: checking for $compiler option to produce PIC" >&5
- if eval "test \"`echo '$''{'lt_cv_prog_cc_pic'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -95860,21 +96907,21 @@
-
- # Check to make sure the pic_flag actually works.
- echo $ac_n "checking if $compiler PIC flag $lt_cv_prog_cc_pic works""... $ac_c" 1>&6
--echo "configure:95864: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
-+echo "configure:96911: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
- if eval "test \"`echo '$''{'lt_cv_prog_cc_pic_works'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
- cat > conftest.$ac_ext <<EOF
--#line 95871 "configure"
-+#line 96918 "configure"
- #include "confdefs.h"
-
- int main() {
-
- ; return 0; }
- EOF
--if { (eval echo configure:95878: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:96925: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- case $host_os in
- hpux9* | hpux10* | hpux11*)
-@@ -95930,7 +96977,7 @@
- ## FIXME: this should be a separate macro
- ##
- echo $ac_n "checking if $compiler static flag $lt_cv_prog_cc_static works""... $ac_c" 1>&6
--echo "configure:95934: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
-+echo "configure:96981: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
- if eval "test \"`echo '$''{'lt_cv_prog_cc_static_works'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -95938,14 +96985,14 @@
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
- cat > conftest.$ac_ext <<EOF
--#line 95942 "configure"
-+#line 96989 "configure"
- #include "confdefs.h"
-
- int main() {
-
- ; return 0; }
- EOF
--if { (eval echo configure:95949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:96996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- lt_cv_prog_cc_static_works=yes
- else
-@@ -95976,7 +97023,7 @@
- ##
- # Check to see if options -o and -c are simultaneously supported by compiler
- echo $ac_n "checking if $compiler supports -c -o file.$ac_objext""... $ac_c" 1>&6
--echo "configure:95980: checking if $compiler supports -c -o file.$ac_objext" >&5
-+echo "configure:97027: checking if $compiler supports -c -o file.$ac_objext" >&5
- if eval "test \"`echo '$''{'lt_cv_compiler_c_o'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -95995,7 +97042,7 @@
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
- compiler_c_o=no
--if { (eval echo configure:95999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
-+if { (eval echo configure:97046: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s out/conftest.err; then
-@@ -96024,7 +97071,7 @@
- if test x"$compiler_c_o" = x"yes"; then
- # Check to see if we can write to a .lo
- echo $ac_n "checking if $compiler supports -c -o file.lo""... $ac_c" 1>&6
--echo "configure:96028: checking if $compiler supports -c -o file.lo" >&5
-+echo "configure:97075: checking if $compiler supports -c -o file.lo" >&5
- if eval "test \"`echo '$''{'lt_cv_compiler_o_lo'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -96035,14 +97082,14 @@
- save_objext="$ac_objext"
- ac_objext=lo
- cat > conftest.$ac_ext <<EOF
--#line 96039 "configure"
-+#line 97086 "configure"
- #include "confdefs.h"
-
- int main() {
- int some_variable = 0;
- ; return 0; }
- EOF
--if { (eval echo configure:96046: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:97093: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
-@@ -96077,7 +97124,7 @@
- if test "$compiler_c_o" = no && test "$need_locks" != no; then
- # do not overwrite the value of need_locks provided by the user
- echo $ac_n "checking if we can lock with hard links""... $ac_c" 1>&6
--echo "configure:96081: checking if we can lock with hard links" >&5
-+echo "configure:97128: checking if we can lock with hard links" >&5
- hard_links=yes
- $rm conftest*
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
-@@ -96100,20 +97147,20 @@
- if test "$GCC" = yes; then
- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
- echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions""... $ac_c" 1>&6
--echo "configure:96104: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-+echo "configure:97151: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
- echo "int some_variable = 0;" > conftest.$ac_ext
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
- compiler_rtti_exceptions=no
- cat > conftest.$ac_ext <<EOF
--#line 96110 "configure"
-+#line 97157 "configure"
- #include "confdefs.h"
-
- int main() {
- int some_variable = 0;
- ; return 0; }
- EOF
--if { (eval echo configure:96117: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:97164: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
-@@ -96144,7 +97191,7 @@
- ##
- # See if the linker supports building shared libraries.
- echo $ac_n "checking whether the linker ($LD) supports shared libraries""... $ac_c" 1>&6
--echo "configure:96148: checking whether the linker ($LD) supports shared libraries" >&5
-+echo "configure:97195: checking whether the linker ($LD) supports shared libraries" >&5
-
- allow_undefined_flag=
- no_undefined_flag=
-@@ -96835,7 +97882,7 @@
- ##
- # Check hardcoding attributes.
- echo $ac_n "checking how to hardcode library paths into programs""... $ac_c" 1>&6
--echo "configure:96839: checking how to hardcode library paths into programs" >&5
-+echo "configure:97886: checking how to hardcode library paths into programs" >&5
- hardcode_action=
- if test -n "$hardcode_libdir_flag_spec" || \
- test -n "$runpath_var"; then
-@@ -96867,7 +97914,7 @@
- striplib=
- old_striplib=
- echo $ac_n "checking whether stripping libraries is possible""... $ac_c" 1>&6
--echo "configure:96871: checking whether stripping libraries is possible" >&5
-+echo "configure:97918: checking whether stripping libraries is possible" >&5
- if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-@@ -96885,7 +97932,7 @@
- ##
- # PORTME Fill in your ld.so characteristics
- echo $ac_n "checking dynamic linker characteristics""... $ac_c" 1>&6
--echo "configure:96889: checking dynamic linker characteristics" >&5
-+echo "configure:97936: checking dynamic linker characteristics" >&5
- library_names_spec=
- libname_spec='lib$name'
- soname_spec=
-@@ -97144,8 +98191,8 @@
- libsuff=
- case "$host_cpu" in
- x86_64*|s390x*)
-- echo '#line 97148 "configure"' > conftest.$ac_ext
-- if { (eval echo configure:97149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ echo '#line 98195 "configure"' > conftest.$ac_ext
-+ if { (eval echo configure:98196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- case `/usr/bin/file conftest.$ac_objext` in
- *64-bit*)
- libsuff=64
-@@ -97320,7 +98367,7 @@
- ##
- # Report the final consequences.
- echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6
--echo "configure:97324: checking if libtool supports shared libraries" >&5
-+echo "configure:98371: checking if libtool supports shared libraries" >&5
- echo "$ac_t""$can_build_shared" 1>&6
- ##
- ## END FIXME
-@@ -97328,7 +98375,7 @@
- ## FIXME: this should be a separate macro
- ##
- echo $ac_n "checking whether to build shared libraries""... $ac_c" 1>&6
--echo "configure:97332: checking whether to build shared libraries" >&5
-+echo "configure:98379: checking whether to build shared libraries" >&5
- test "$can_build_shared" = "no" && enable_shared=no
-
- # On AIX, shared libraries and static libraries use the same namespace, and
-@@ -97355,7 +98402,7 @@
- ## FIXME: this should be a separate macro
- ##
- echo $ac_n "checking whether to build static libraries""... $ac_c" 1>&6
--echo "configure:97359: checking whether to build static libraries" >&5
-+echo "configure:98406: checking whether to build static libraries" >&5
- # Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
- echo "$ac_t""$enable_static" 1>&6
-@@ -97398,12 +98445,12 @@
-
- *)
- echo $ac_n "checking for shl_load""... $ac_c" 1>&6
--echo "configure:97402: checking for shl_load" >&5
-+echo "configure:98449: checking for shl_load" >&5
- if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 97407 "configure"
-+#line 98454 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shl_load(); below. */
-@@ -97426,7 +98473,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:97430: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:98477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_shl_load=yes"
- else
-@@ -97444,7 +98491,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
--echo "configure:97448: checking for shl_load in -ldld" >&5
-+echo "configure:98495: checking for shl_load in -ldld" >&5
- ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -97452,7 +98499,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldld $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 97456 "configure"
-+#line 98503 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -97463,7 +98510,7 @@
- shl_load()
- ; return 0; }
- EOF
--if { (eval echo configure:97467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:98514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -97482,12 +98529,12 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for dlopen""... $ac_c" 1>&6
--echo "configure:97486: checking for dlopen" >&5
-+echo "configure:98533: checking for dlopen" >&5
- if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 97491 "configure"
-+#line 98538 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen(); below. */
-@@ -97510,7 +98557,7 @@
-
- ; return 0; }
- EOF
--if { (eval echo configure:97514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:98561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_dlopen=yes"
- else
-@@ -97528,7 +98575,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
--echo "configure:97532: checking for dlopen in -ldl" >&5
-+echo "configure:98579: checking for dlopen in -ldl" >&5
- ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -97536,7 +98583,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldl $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 97540 "configure"
-+#line 98587 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -97547,7 +98594,7 @@
- dlopen()
- ; return 0; }
- EOF
--if { (eval echo configure:97551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:98598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -97566,7 +98613,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6
--echo "configure:97570: checking for dlopen in -lsvld" >&5
-+echo "configure:98617: checking for dlopen in -lsvld" >&5
- ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -97574,7 +98621,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-lsvld $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 97578 "configure"
-+#line 98625 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -97585,7 +98632,7 @@
- dlopen()
- ; return 0; }
- EOF
--if { (eval echo configure:97589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:98636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -97604,7 +98651,7 @@
- else
- echo "$ac_t""no" 1>&6
- echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
--echo "configure:97608: checking for dld_link in -ldld" >&5
-+echo "configure:98655: checking for dld_link in -ldld" >&5
- ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-@@ -97612,7 +98659,7 @@
- ac_save_LIBS="$LIBS"
- LIBS="-ldld $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 97616 "configure"
-+#line 98663 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-@@ -97623,7 +98670,7 @@
- dld_link()
- ; return 0; }
- EOF
--if { (eval echo configure:97627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-+if { (eval echo configure:98674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -97679,7 +98726,7 @@
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
- echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
--echo "configure:97683: checking whether a program can dlopen itself" >&5
-+echo "configure:98730: checking whether a program can dlopen itself" >&5
- if eval "test \"`echo '$''{'lt_cv_dlopen_self'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -97689,7 +98736,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 97693 "configure"
-+#line 98740 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -97750,7 +98797,7 @@
- exit (status);
- }
- EOF
-- if { (eval echo configure:97754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ if { (eval echo configure:98801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
-@@ -97773,7 +98820,7 @@
- if test "x$lt_cv_dlopen_self" = xyes; then
- LDFLAGS="$LDFLAGS $link_static_flag"
- echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
--echo "configure:97777: checking whether a statically linked program can dlopen itself" >&5
-+echo "configure:98824: checking whether a statically linked program can dlopen itself" >&5
- if eval "test \"`echo '$''{'lt_cv_dlopen_self_static'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -97783,7 +98830,7 @@
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
--#line 97787 "configure"
-+#line 98834 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -97844,7 +98891,7 @@
- exit (status);
- }
- EOF
-- if { (eval echo configure:97848: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
-+ if { (eval echo configure:98895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) 2>/dev/null
- lt_status=$?
- case x$lt_status in
-@@ -97895,14 +98942,14 @@
- # systems, -lgcc has to come before -lc. If gcc already passes -lc
- # to ld, don't add -lc before -lgcc.
- echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6
--echo "configure:97899: checking whether -lc should be explicitly linked in" >&5
-+echo "configure:98946: checking whether -lc should be explicitly linked in" >&5
- if eval "test \"`echo '$''{'lt_cv_archive_cmds_need_lc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
- $rm conftest*
- echo 'static int dummy;' > conftest.$ac_ext
-
-- if { (eval echo configure:97906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ if { (eval echo configure:98953: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- soname=conftest
- lib=conftest
- libobjs=conftest.$ac_objext
-@@ -97915,7 +98962,7 @@
- libname=conftest
- save_allow_undefined_flag=$allow_undefined_flag
- allow_undefined_flag=
-- if { (eval echo configure:97919: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
-+ if { (eval echo configure:98966: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
- then
- lt_cv_archive_cmds_need_lc=no
- else
-@@ -99147,6 +100194,7 @@
- s%@ORACLE_DIR@%$ORACLE_DIR%g
- s%@ORACLE_VERSION@%$ORACLE_VERSION%g
- s%@SNMP_CONFIG@%$SNMP_CONFIG%g
-+s%@LEMON@%$LEMON%g
- s%@yazconfig@%$yazconfig%g
- s%@INLINE_CFLAGS@%$INLINE_CFLAGS%g
- s%@INCLUDE_PATH@%$INCLUDE_PATH%g
-diff -ruN php-4.3.11-old/ext/sqlite/CREDITS php-4.3.11-new/ext/sqlite/CREDITS
---- php-4.3.11-old/ext/sqlite/CREDITS 1970-01-01 01:00:00.000000000 +0100
-+++ php-4.3.11-new/ext/sqlite/CREDITS 2003-05-13 17:52:16.000000000 +0200
-@@ -0,0 +1,2 @@
-+sqlite
-+Wez Furlong, Tal Peer, Marcus Börger
-diff -ruN php-4.3.11-old/ext/sqlite/README php-4.3.11-new/ext/sqlite/README
---- php-4.3.11-old/ext/sqlite/README 1970-01-01 01:00:00.000000000 +0100
-+++ php-4.3.11-new/ext/sqlite/README 2003-04-17 03:33:52.000000000 +0200
-@@ -0,0 +1,14 @@
-+This is an extension for the SQLite Embeddable SQL Database Engine.
-+http://www.sqlite.org/
-+
-+SQLite is a C library that implements an embeddable SQL database engine.
-+Programs that link with the SQLite library can have SQL database access
-+without running a separate RDBMS process.
-+
-+SQLite is not a client library used to connect to a big database server.
-+SQLite is the server. The SQLite library reads and writes directly to and from
-+the database files on disk
-+
-+
-+
-+vim:tw=78:et
-diff -ruN php-4.3.11-old/ext/sqlite/TODO php-4.3.11-new/ext/sqlite/TODO
---- php-4.3.11-old/ext/sqlite/TODO 1970-01-01 01:00:00.000000000 +0100
-+++ php-4.3.11-new/ext/sqlite/TODO 2003-04-20 17:11:15.000000000 +0200
-@@ -0,0 +1,22 @@
-+- Transparent binary encoding of return values from PHP callback functions.
-+
-+- Add user-space callback for the authorizer function (this is potentially
-+ very slow, so it needs to be implemented carefully).
-+
-+- Add user-space callback to handle busy databases.
-+
-+- Test-suite
-+
-+ o Test how robust we are when a user-space function is registered as
-+ a callback for a persistent connection in script A, then script B is
-+ called that doesn't register the callback but does make use of the
-+ function in an SQL query.
-+ --> Our test suite doesn't allow us to test persistent connections
-+ at this time :/
-+
-+- If building a ZTS build, -DTHREADSAFE while compiling libsqlite
-+
-+- If building a non-debug build, -DNDEBUG will disable the expensive
-+ asserts in the inner loop. (and double performance)
-+
-+vim:tw=78
-diff -ruN php-4.3.11-old/ext/sqlite/config.m4 php-4.3.11-new/ext/sqlite/config.m4
---- php-4.3.11-old/ext/sqlite/config.m4 1970-01-01 01:00:00.000000000 +0100
-+++ php-4.3.11-new/ext/sqlite/config.m4 2005-07-04 17:22:39.000000000 +0200
-@@ -0,0 +1,106 @@
-+dnl $Id$
-+dnl config.m4 for extension sqlite
-+dnl vim:et:ts=2:sw=2
-+
-+PHP_ARG_WITH(sqlite, for sqlite support,
-+[ --with-sqlite Include sqlite support])
-+
-+if test "$PHP_SQLITE" != "no"; then
-+
-+ if test "$PHP_SQLITE" != "yes"; then
-+ SEARCH_PATH="/usr/local /usr"
-+ SEARCH_FOR="/include/sqlite.h"
-+ if test -r $PHP_SQLITE/; then # path given as parameter
-+ SQLITE_DIR=$PHP_SQLITE
-+ else # search default path list
-+ AC_MSG_CHECKING([for sqlite files in default path])
-+ for i in $SEARCH_PATH ; do
-+ if test -r $i/$SEARCH_FOR; then
-+ SQLITE_DIR=$i
-+ AC_MSG_RESULT(found in $i)
-+ fi
-+ done
-+ fi
-+
-+ if test -z "$SQLITE_DIR"; then
-+ AC_MSG_RESULT([not found])
-+ AC_MSG_ERROR([Please reinstall the sqlite distribution from http://www.sqlite.org])
-+ fi
-+
-+ PHP_ADD_INCLUDE($SQLITE_DIR/include)
-+
-+ LIBNAME=sqlite
-+ LIBSYMBOL=sqlite_open
-+
-+ PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
-+ [
-+ PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $SQLITE_DIR/lib, SQLITE_SHARED_LIBADD)
-+ AC_DEFINE(HAVE_SQLITELIB,1,[ ])
-+ ],[
-+ AC_MSG_ERROR([wrong sqlite lib version or lib not found])
-+ ],[
-+ -L$SQLITE_DIR/lib -lm -ldl
-+ ])
-+
-+ PHP_SUBST(SQLITE_SHARED_LIBADD)
-+ PHP_NEW_EXTENSION(sqlite, sqlite.c, $ext_shared)
-+ else
-+ # use bundled library
-+
-+ PHP_SQLITE_CFLAGS="-I@ext_srcdir@/libsqlite/src"
-+
-+ sources="libsqlite/src/opcodes.c
-+ libsqlite/src/parse.c libsqlite/src/encode.c \
-+ libsqlite/src/auth.c libsqlite/src/btree.c libsqlite/src/build.c \
-+ libsqlite/src/delete.c libsqlite/src/expr.c libsqlite/src/func.c \
-+ libsqlite/src/hash.c libsqlite/src/insert.c libsqlite/src/main.c \
-+ libsqlite/src/os.c libsqlite/src/pager.c \
-+ libsqlite/src/printf.c libsqlite/src/random.c \
-+ libsqlite/src/select.c libsqlite/src/table.c libsqlite/src/tokenize.c \
-+ libsqlite/src/update.c libsqlite/src/util.c libsqlite/src/vdbe.c \
-+ libsqlite/src/attach.c libsqlite/src/btree_rb.c libsqlite/src/pragma.c \
-+ libsqlite/src/vacuum.c libsqlite/src/copy.c \
-+ libsqlite/src/where.c libsqlite/src/trigger.c"
-+
-+ PHP_NEW_EXTENSION(sqlite, sqlite.c $sources, $ext_shared,,$PHP_SQLITE_CFLAGS)
-+ PHP_ADD_BUILD_DIR($ext_builddir/libsqlite)
-+ PHP_ADD_BUILD_DIR($ext_builddir/libsqlite/src)
-+ AC_CHECK_SIZEOF(char *,4)
-+ AC_DEFINE(SQLITE_PTR_SZ, SIZEOF_CHAR_P, [Size of a pointer])
-+ AC_DEFINE(OS_UNIX, 1, [if this is unix])
-+ AC_DEFINE(OS_WIN, 0, [if this is windows])
-+ dnl use latin 1 for now; the utf-8 handling in funcs.c uses assert(),
-+ dnl which is a bit silly and something we want to avoid
-+ SQLITE_ENCODING="ISO8859"
-+ dnl SQLITE_ENCODING="UTF-8"
-+ dnl AC_DEFINE(SQLITE_UTF8,1,[if SQLite should use utf-8 encoding])
-+ PHP_SUBST(SQLITE_ENCODING)
-+
-+ AC_PATH_PROG(LEMON,lemon,no)
-+ PHP_SUBST(LEMON)
-+
-+ SQLITE_VERSION=`cat $ext_srcdir/libsqlite/VERSION`
-+ PHP_SUBST(SQLITE_VERSION)
-+
-+ if test "$ext_shared" = "no"; then
-+ echo '#include "php_config.h"' > $ext_srcdir/libsqlite/src/config.h
-+ else
-+ echo "#include \"$abs_builddir/config.h\"" > $ext_srcdir/libsqlite/src/config.h
-+ fi
-+
-+ cat >> $ext_srcdir/libsqlite/src/config.h <<EOF
-+#if ZTS
-+# define THREADSAFE 1
-+#endif
-+#if !ZEND_DEBUG
-+# define NDEBUG
-+#endif
-+EOF
-+
-+ PHP_ADD_MAKEFILE_FRAGMENT
-+
-+ fi
-+
-+ AC_CHECK_FUNCS(usleep nanosleep)
-+ AC_CHECK_HEADERS(time.h)
-+fi
-diff -ruN php-4.3.11-old/ext/sqlite/php_sqlite.def php-4.3.11-new/ext/sqlite/php_sqlite.def
---- php-4.3.11-old/ext/sqlite/php_sqlite.def 1970-01-01 01:00:00.000000000 +0100
-+++ php-4.3.11-new/ext/sqlite/php_sqlite.def 2003-06-13 01:22:33.000000000 +0200
-@@ -0,0 +1,37 @@
-+EXPORTS
-+sqlite_open
-+sqlite_close
-+sqlite_exec
-+sqlite_last_insert_rowid
-+sqlite_changes
-+sqlite_error_string
-+sqlite_interrupt
-+sqlite_complete
-+sqlite_busy_handler
-+sqlite_busy_timeout
-+sqlite_get_table
-+sqlite_free_table
-+sqlite_exec_printf
-+sqlite_exec_vprintf
-+sqlite_get_table_printf
-+sqlite_get_table_vprintf
-+sqlite_mprintf
-+sqlite_vmprintf
-+sqlite_freemem
-+sqlite_libversion
-+sqlite_libencoding
-+sqlite_create_function
-+sqlite_create_aggregate
-+sqlite_function_type
-+sqlite_set_result_string
-+sqlite_set_result_int
-+sqlite_set_result_double
-+sqlite_set_result_error
-+sqlite_user_data
-+sqlite_aggregate_context
-+sqlite_aggregate_count
-+sqlite_set_authorizer
-+sqlite_trace
-+sqlite_compile
-+sqlite_step
-+sqlite_finalize
-diff -ruN php-4.3.11-old/ext/sqlite/php_sqlite.h php-4.3.11-new/ext/sqlite/php_sqlite.h
---- php-4.3.11-old/ext/sqlite/php_sqlite.h 1970-01-01 01:00:00.000000000 +0100
-+++ php-4.3.11-new/ext/sqlite/php_sqlite.h 2003-06-21 14:29:32.000000000 +0200
-@@ -0,0 +1,103 @@
-+/*
-+ +----------------------------------------------------------------------+
-+ | PHP Version 4 |
-+ +----------------------------------------------------------------------+
-+ | Copyright (c) 1997-2003 The PHP Group |
-+ +----------------------------------------------------------------------+
-+ | This source file is subject to version 3.0 of the PHP license, |
-+ | that is bundled with this package in the file LICENSE, and is |
-+ | available through the world-wide-web at the following url: |
-+ | http://www.php.net/license/3_0.txt. |
-+ | If you did not receive a copy of the PHP license and are unable to |
-+ | obtain it through the world-wide-web, please send a note to |
-+ | license@php.net so we can mail you a copy immediately. |
-+ +----------------------------------------------------------------------+
-+ | Authors: Wez Furlong <wez@thebrainroom.com> |
-+ | Tal Peer <tal@php.net> |
-+ | Marcus Boerger <helly@php.net> |
-+ +----------------------------------------------------------------------+
-+
-+ $Id$
-+*/
-+
-+#ifndef PHP_SQLITE_H
-+#define PHP_SQLITE_H
-+
-+extern zend_module_entry sqlite_module_entry;
-+#define phpext_sqlite_ptr &sqlite_module_entry
-+
-+#ifdef PHP_WIN32
-+#define PHP_SQLITE_API __declspec(dllexport)
-+#else
-+#define PHP_SQLITE_API
-+#endif
-+
-+#ifdef ZTS
-+#include "TSRM.h"
-+#endif
-+
-+PHP_MINIT_FUNCTION(sqlite);
-+PHP_MSHUTDOWN_FUNCTION(sqlite);
-+PHP_RINIT_FUNCTION(sqlite);
-+PHP_RSHUTDOWN_FUNCTION(sqlite);
-+PHP_MINFO_FUNCTION(sqlite);
-+
-+PHP_FUNCTION(sqlite_open);
-+PHP_FUNCTION(sqlite_popen);
-+PHP_FUNCTION(sqlite_close);
-+PHP_FUNCTION(sqlite_query);
-+PHP_FUNCTION(sqlite_unbuffered_query);
-+PHP_FUNCTION(sqlite_array_query);
-+
-+PHP_FUNCTION(sqlite_fetch_array);
-+PHP_FUNCTION(sqlite_fetch_string);
-+PHP_FUNCTION(sqlite_fetch_all);
-+PHP_FUNCTION(sqlite_current);
-+PHP_FUNCTION(sqlite_column);
-+
-+PHP_FUNCTION(sqlite_num_rows);
-+PHP_FUNCTION(sqlite_num_fields);
-+PHP_FUNCTION(sqlite_field_name);
-+PHP_FUNCTION(sqlite_seek);
-+PHP_FUNCTION(sqlite_rewind);
-+PHP_FUNCTION(sqlite_next);
-+PHP_FUNCTION(sqlite_has_more);
-+
-+PHP_FUNCTION(sqlite_libversion);
-+PHP_FUNCTION(sqlite_libencoding);
-+
-+PHP_FUNCTION(sqlite_changes);
-+PHP_FUNCTION(sqlite_last_insert_rowid);
-+
-+PHP_FUNCTION(sqlite_escape_string);
-+
-+PHP_FUNCTION(sqlite_busy_timeout);
-+
-+PHP_FUNCTION(sqlite_last_error);
-+PHP_FUNCTION(sqlite_error_string);
-+
-+PHP_FUNCTION(sqlite_create_aggregate);
-+PHP_FUNCTION(sqlite_create_function);
-+PHP_FUNCTION(sqlite_udf_decode_binary);
-+PHP_FUNCTION(sqlite_udf_encode_binary);
-+
-+ZEND_BEGIN_MODULE_GLOBALS(sqlite)
-+ long assoc_case;
-+ZEND_END_MODULE_GLOBALS(sqlite)
-+
-+#ifdef ZTS
-+#define SQLITE_G(v) TSRMG(sqlite_globals_id, zend_sqlite_globals *, v)
-+#else
-+#define SQLITE_G(v) (sqlite_globals.v)
-+#endif
-+
-+#endif
-+
-+
-+/*
-+ * Local variables:
-+ * tab-width: 4
-+ * c-basic-offset: 4
-+ * indent-tabs-mode: t
-+ * End:
-+ */
-diff -ruN php-4.3.11-old/ext/sqlite/sqlite.c php-4.3.11-new/ext/sqlite/sqlite.c
---- php-4.3.11-old/ext/sqlite/sqlite.c 1970-01-01 01:00:00.000000000 +0100
-+++ php-4.3.11-new/ext/sqlite/sqlite.c 2003-06-21 15:29:26.000000000 +0200
-@@ -0,0 +1,1879 @@
-+/*
-+ +----------------------------------------------------------------------+
-+ | PHP Version 4 |
-+ +----------------------------------------------------------------------+
-+ | Copyright (c) 1997-2003 The PHP Group |
-+ +----------------------------------------------------------------------+
-+ | This source file is subject to version 3.0 of the PHP license, |
-+ | that is bundled with this package in the file LICENSE, and is |
-+ | available through the world-wide-web at the following url: |
-+ | http://www.php.net/license/3_0.txt. |
-+ | If you did not receive a copy of the PHP license and are unable to |
-+ | obtain it through the world-wide-web, please send a note to |
-+ | license@php.net so we can mail you a copy immediately. |
-+ +----------------------------------------------------------------------+
-+ | Authors: Wez Furlong <wez@thebrainroom.com> |
-+ | Tal Peer <tal@php.net> |
-+ | Marcus Boerger <helly@php.net> |
-+ +----------------------------------------------------------------------+
-+
-+ $Id$
-+*/
-+
-+#ifdef HAVE_CONFIG_H
-+#include "config.h"
-+#endif
-+
-+#define PHP_SQLITE_MODULE_VERSION "1.0"
-+
-+#include "php.h"
-+#include "php_ini.h"
-+#include "ext/standard/info.h"
-+#include "php_sqlite.h"
-+
-+#if HAVE_TIME_H
-+# include <time.h>
-+#endif
-+#include <unistd.h>
-+
-+#include <sqlite.h>
-+
-+#ifndef safe_emalloc
-+# define safe_emalloc(a,b,c) emalloc((a)*(b)+(c))
-+#endif
-+
-+#ifndef ZEND_ENGINE_2
-+# define OnUpdateLong OnUpdateInt
-+#endif
-+
-+ZEND_DECLARE_MODULE_GLOBALS(sqlite)
-+
-+extern int sqlite_encode_binary(const unsigned char *in, int n, unsigned char *out);
-+extern int sqlite_decode_binary(const unsigned char *in, unsigned char *out);
-+
-+static unsigned char arg3_force_ref[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE };
-+
-+static int le_sqlite_db, le_sqlite_result, le_sqlite_pdb;
-+
-+static inline void php_sqlite_strtoupper(char *s)
-+{
-+ while (*s!='\0') {
-+ *s = toupper(*s);
-+ s++;
-+ }
-+}
-+
-+static inline void php_sqlite_strtolower(char *s)
-+{
-+ while (*s!='\0') {
-+ *s = tolower(*s);
-+ s++;
-+ }
-+}
-+
-+/* {{{ PHP_INI
-+ */
-+PHP_INI_BEGIN()
-+STD_PHP_INI_ENTRY_EX("sqlite.assoc_case", "0", PHP_INI_ALL, OnUpdateLong, assoc_case, zend_sqlite_globals, sqlite_globals, display_link_numbers)
-+PHP_INI_END()
-+/* }}} */
-+
-+
-+#define DB_FROM_ZVAL(db, zv) ZEND_FETCH_RESOURCE2(db, struct php_sqlite_db *, zv, -1, "sqlite database", le_sqlite_db, le_sqlite_pdb)
-+
-+struct php_sqlite_result {
-+ struct php_sqlite_db *db;
-+ sqlite_vm *vm;
-+ int buffered;
-+ int ncolumns;
-+ int nrows;
-+ int curr_row;
-+ char **col_names;
-+ int alloc_rows;
-+ char **table;
-+ int mode;
-+};
-+
-+struct php_sqlite_db {
-+ sqlite *db;
-+ int last_err_code;
-+ int is_persistent;
-+ int rsrc_id;
-+
-+ HashTable callbacks;
-+};
-+
-+struct php_sqlite_agg_functions {
-+ struct php_sqlite_db *db;
-+ int is_valid;
-+ zval *step;
-+ zval *fini;
-+};
-+
-+
-+enum { PHPSQLITE_ASSOC = 1, PHPSQLITE_NUM = 2, PHPSQLITE_BOTH = PHPSQLITE_ASSOC|PHPSQLITE_NUM };
-+
-+function_entry sqlite_functions[] = {
-+ PHP_FE(sqlite_open, arg3_force_ref)
-+ PHP_FE(sqlite_popen, arg3_force_ref)
-+ PHP_FE(sqlite_close, NULL)
-+ PHP_FE(sqlite_query, NULL)
-+ PHP_FE(sqlite_array_query, NULL)
-+ PHP_FE(sqlite_fetch_array, NULL)
-+ PHP_FE(sqlite_fetch_string, NULL)
-+ PHP_FE(sqlite_fetch_all, NULL)
-+ PHP_FE(sqlite_current, NULL)
-+ PHP_FE(sqlite_column, NULL)
-+ PHP_FE(sqlite_libversion, NULL)
-+ PHP_FE(sqlite_libencoding, NULL)
-+ PHP_FE(sqlite_changes, NULL)
-+ PHP_FE(sqlite_last_insert_rowid, NULL)
-+ PHP_FE(sqlite_num_rows, NULL)
-+ PHP_FE(sqlite_num_fields, NULL)
-+ PHP_FE(sqlite_field_name, NULL)
-+ PHP_FE(sqlite_seek, NULL)
-+ PHP_FE(sqlite_rewind, NULL)
-+ PHP_FE(sqlite_next, NULL)
-+ PHP_FE(sqlite_has_more, NULL)
-+ PHP_FE(sqlite_escape_string, NULL)
-+ PHP_FE(sqlite_busy_timeout, NULL)
-+ PHP_FE(sqlite_last_error, NULL)
-+ PHP_FE(sqlite_error_string, NULL)
-+ PHP_FE(sqlite_unbuffered_query, NULL)
-+ PHP_FE(sqlite_create_aggregate, NULL)
-+ PHP_FE(sqlite_create_function, NULL)
-+ PHP_FE(sqlite_udf_encode_binary, NULL)
-+ PHP_FE(sqlite_udf_decode_binary, NULL)
-+ {NULL, NULL, NULL}
-+};
-+
-+
-+zend_module_entry sqlite_module_entry = {
-+#if ZEND_MODULE_API_NO >= 20010901
-+ STANDARD_MODULE_HEADER,
-+#endif
-+ "sqlite",
-+ sqlite_functions,
-+ PHP_MINIT(sqlite),
-+ NULL,
-+ NULL,
-+ PHP_RSHUTDOWN(sqlite),
-+ PHP_MINFO(sqlite),
-+#if ZEND_MODULE_API_NO >= 20010901
-+ PHP_SQLITE_MODULE_VERSION,
-+#endif
-+ STANDARD_MODULE_PROPERTIES
-+};
-+
-+
-+#ifdef COMPILE_DL_SQLITE
-+ZEND_GET_MODULE(sqlite)
-+#endif
-+
-+static int php_sqlite_callback_invalidator(struct php_sqlite_agg_functions *funcs TSRMLS_DC)
-+{
-+ if (!funcs->is_valid) {
-+ return 0;
-+ }
-+
-+ if (funcs->step) {
-+ zval_ptr_dtor(&funcs->step);
-+ funcs->step = NULL;
-+ }
-+
-+ if (funcs->fini) {
-+ zval_ptr_dtor(&funcs->fini);
-+ funcs->fini = NULL;
-+ }
-+
-+ funcs->is_valid = 0;
-+
-+ return 0;
-+}
-+
-+
-+static void php_sqlite_callback_dtor(void *pDest)
-+{
-+ struct php_sqlite_agg_functions *funcs = (struct php_sqlite_agg_functions*)pDest;
-+
-+ if (funcs->is_valid) {
-+ TSRMLS_FETCH();
-+
-+ php_sqlite_callback_invalidator(funcs TSRMLS_CC);
-+ }
-+}
-+
-+static ZEND_RSRC_DTOR_FUNC(php_sqlite_db_dtor)
-+{
-+ if (rsrc->ptr) {
-+ struct php_sqlite_db *db = (struct php_sqlite_db*)rsrc->ptr;
-+ sqlite_close(db->db);
-+
-+ zend_hash_destroy(&db->callbacks);
-+
-+ pefree(db, db->is_persistent);
-+
-+ rsrc->ptr = NULL;
-+ }
-+}
-+
-+static void real_result_dtor(struct php_sqlite_result *res TSRMLS_DC)
-+{
-+ int i, j, base;
-+
-+ if (res->vm) {
-+ sqlite_finalize(res->vm, NULL);
-+ }
-+
-+ if (res->table) {
-+ if (!res->buffered && res->nrows) {
-+ res->nrows = 1; /* only one row is stored */
-+ }
-+ for (i = 0; i < res->nrows; i++) {
-+ base = i * res->ncolumns;
-+ for (j = 0; j < res->ncolumns; j++) {
-+ if (res->table[base + j] != NULL) {
-+ efree(res->table[base + j]);
-+ }
-+ }
-+ }
-+ efree(res->table);
-+ }
-+ if (res->col_names) {
-+ for (j = 0; j < res->ncolumns; j++) {
-+ efree(res->col_names[j]);
-+ }
-+ efree(res->col_names);
-+ }
-+
-+ zend_list_delete(res->db->rsrc_id);
-+ efree(res);
-+}
-+
-+static ZEND_RSRC_DTOR_FUNC(php_sqlite_result_dtor)
-+{
-+ struct php_sqlite_result *res = (struct php_sqlite_result *)rsrc->ptr;
-+ real_result_dtor(res TSRMLS_CC);
-+}
-+
-+static int php_sqlite_forget_persistent_id_numbers(zend_rsrc_list_entry *rsrc TSRMLS_DC)
-+{
-+ struct php_sqlite_db *db;
-+
-+ if (Z_TYPE_P(rsrc) != le_sqlite_pdb) {
-+ return 0;
-+ }
-+
-+ db = (struct php_sqlite_db*)rsrc->ptr;
-+
-+ db->rsrc_id = FAILURE;
-+
-+ /* don't leave pending commits hanging around */
-+ sqlite_exec(db->db, "ROLLBACK", NULL, NULL, NULL);
-+
-+ /* prevent bad mojo if someone tries to use a previously registered function in the next request */
-+ zend_hash_apply(&db->callbacks, (apply_func_t)php_sqlite_callback_invalidator TSRMLS_CC);
-+
-+ return 0;
-+}
-+
-+PHP_RSHUTDOWN_FUNCTION(sqlite)
-+{
-+ zend_hash_apply(&EG(persistent_list), (apply_func_t)php_sqlite_forget_persistent_id_numbers TSRMLS_CC);
-+ return SUCCESS;
-+}
-+
-+/* {{{ PHP Function interface */
-+static void php_sqlite_generic_function_callback(sqlite_func *func, int argc, const char **argv)
-+{
-+ zval *retval = NULL;
-+ zval ***zargs = NULL;
-+ zval funcname;
-+ int i, res;
-+ char *callable = NULL, *errbuf=NULL;
-+ TSRMLS_FETCH();
-+
-+ /* sanity check the args */
-+ if (argc == 0) {
-+ sqlite_set_result_error(func, "not enough parameters", -1);
-+ return;
-+ }
-+
-+ ZVAL_STRING(&funcname, (char*)argv[0], 0);
-+
-+ if (!zend_is_callable(&funcname, 0, &callable)) {
-+ spprintf(&errbuf, 0, "function `%s' is not callable", callable);
-+ sqlite_set_result_error(func, errbuf, -1);
-+ efree(errbuf);
-+ efree(callable);
-+ return;
-+ }
-+ efree(callable);
-+
-+ if (argc > 1) {
-+ zargs = (zval ***)safe_emalloc((argc - 1), sizeof(zval **), 0);
-+
-+ for (i = 0; i < argc-1; i++) {
-+ zargs[i] = emalloc(sizeof(zval *));
-+ MAKE_STD_ZVAL(*zargs[i]);
-+ ZVAL_STRING(*zargs[i], (char*)argv[i+1], 1);
-+ }
-+ }
-+
-+ res = call_user_function_ex(EG(function_table),
-+ NULL,
-+ &funcname,
-+ &retval,
-+ argc-1,
-+ zargs,
-+ 0, NULL TSRMLS_CC);
-+
-+ if (res == SUCCESS) {
-+ if (retval == NULL) {
-+ sqlite_set_result_string(func, NULL, 0);
-+ } else {
-+ switch (Z_TYPE_P(retval)) {
-+ case IS_STRING:
-+ sqlite_set_result_string(func, Z_STRVAL_P(retval), Z_STRLEN_P(retval));
-+ break;
-+ case IS_LONG:
-+ case IS_BOOL:
-+ sqlite_set_result_int(func, Z_LVAL_P(retval));
-+ break;
-+ case IS_DOUBLE:
-+ sqlite_set_result_double(func, Z_DVAL_P(retval));
-+ break;
-+ case IS_NULL:
-+ default:
-+ sqlite_set_result_string(func, NULL, 0);
-+ }
-+ }
-+ } else {
-+ sqlite_set_result_error(func, "call_user_function_ex failed", -1);
-+ }
-+
-+ if (retval) {
-+ zval_ptr_dtor(&retval);
-+ }
-+
-+ if (zargs) {
-+ for (i = 0; i < argc-1; i++) {
-+ zval_ptr_dtor(zargs[i]);
-+ efree(zargs[i]);
-+ }
-+ efree(zargs);
-+ }
-+}
-+/* }}} */
-+
-+/* {{{ callback for sqlite_create_function */
-+static void php_sqlite_function_callback(sqlite_func *func, int argc, const char **argv)
-+{
-+ zval *retval = NULL;
-+ zval ***zargs = NULL;
-+ int i, res;
-+ struct php_sqlite_agg_functions *funcs = sqlite_user_data(func);
-+ TSRMLS_FETCH();
-+
-+ if (!funcs->is_valid) {
-+ sqlite_set_result_error(func, "this function has not been correctly defined for this request", -1);
-+ return;
-+ }
-+
-+ if (argc > 0) {
-+ zargs = (zval ***)safe_emalloc(argc, sizeof(zval **), 0);
-+
-+ for (i = 0; i < argc; i++) {
-+ zargs[i] = emalloc(sizeof(zval *));
-+ MAKE_STD_ZVAL(*zargs[i]);
-+
-+ if (argv[i] == NULL) {
-+ ZVAL_NULL(*zargs[i]);
-+ } else {
-+ ZVAL_STRING(*zargs[i], (char*)argv[i], 1);
-+ }
-+ }
-+ }
-+
-+ res = call_user_function_ex(EG(function_table),
-+ NULL,
-+ funcs->step,
-+ &retval,
-+ argc,
-+ zargs,
-+ 0, NULL TSRMLS_CC);
-+
-+ if (res == SUCCESS) {
-+ if (retval == NULL) {
-+ sqlite_set_result_string(func, NULL, 0);
-+ } else {
-+ switch (Z_TYPE_P(retval)) {
-+ case IS_STRING:
-+ /* TODO: for binary results, need to encode the string */
-+ sqlite_set_result_string(func, Z_STRVAL_P(retval), Z_STRLEN_P(retval));
-+ break;
-+ case IS_LONG:
-+ case IS_BOOL:
-+ sqlite_set_result_int(func, Z_LVAL_P(retval));
-+ break;
-+ case IS_DOUBLE:
-+ sqlite_set_result_double(func, Z_DVAL_P(retval));
-+ break;
-+ case IS_NULL:
-+ default:
-+ sqlite_set_result_string(func, NULL, 0);
-+ }
-+ }
-+ } else {
-+ sqlite_set_result_error(func, "call_user_function_ex failed", -1);
-+ }
-+
-+ if (retval) {
-+ zval_ptr_dtor(&retval);
-+ }
-+
-+ if (zargs) {
-+ for (i = 0; i < argc; i++) {
-+ zval_ptr_dtor(zargs[i]);
-+ efree(zargs[i]);
-+ }
-+ efree(zargs);
-+ }
-+}
-+/* }}} */
-+
-+/* {{{ callback for sqlite_create_aggregate: step function */
-+static void php_sqlite_agg_step_function_callback(sqlite_func *func, int argc, const char **argv)
-+{
-+ zval *retval = NULL;
-+ zval ***zargs;
-+ zval **context_p;
-+ int i, res, zargc;
-+ struct php_sqlite_agg_functions *funcs = sqlite_user_data(func);
-+ TSRMLS_FETCH();
-+
-+ if (!funcs->is_valid) {
-+ sqlite_set_result_error(func, "this function has not been correctly defined for this request", -1);
-+ return;
-+ }
-+
-+ /* sanity check the args */
-+ if (argc < 1) {
-+ return;
-+ }
-+
-+ zargc = argc + 1;
-+ zargs = (zval ***)safe_emalloc(zargc, sizeof(zval **), 0);
-+
-+ /* first arg is always the context zval */
-+ context_p = (zval **)sqlite_aggregate_context(func, sizeof(*context_p));
-+
-+ if (*context_p == NULL) {
-+ MAKE_STD_ZVAL(*context_p);
-+ (*context_p)->is_ref = 1;
-+ Z_TYPE_PP(context_p) = IS_NULL;
-+ }
-+
-+ zargs[0] = context_p;
-+
-+ /* copy the other args */
-+ for (i = 0; i < argc; i++) {
-+ zargs[i+1] = emalloc(sizeof(zval *));
-+ MAKE_STD_ZVAL(*zargs[i+1]);
-+ if (argv[i] == NULL) {
-+ ZVAL_NULL(*zargs[i+1]);
-+ } else {
-+ ZVAL_STRING(*zargs[i+1], (char*)argv[i], 1);
-+ }
-+ }
-+
-+ res = call_user_function_ex(EG(function_table),
-+ NULL,
-+ funcs->step,
-+ &retval,
-+ zargc,
-+ zargs,
-+ 0, NULL TSRMLS_CC);
-+
-+ if (res != SUCCESS) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "call_user_function_ex failed");
-+ }
-+
-+ if (retval) {
-+ zval_ptr_dtor(&retval);
-+ }
-+
-+ if (zargs) {
-+ for (i = 1; i < zargc; i++) {
-+ zval_ptr_dtor(zargs[i]);
-+ efree(zargs[i]);
-+ }
-+ efree(zargs);
-+ }
-+}
-+/* }}} */
-+
-+/* {{{ callback for sqlite_create_aggregate: finalize function */
-+static void php_sqlite_agg_fini_function_callback(sqlite_func *func)
-+{
-+ zval *retval = NULL;
-+ int res;
-+ struct php_sqlite_agg_functions *funcs = sqlite_user_data(func);
-+ zval **context_p;
-+ TSRMLS_FETCH();
-+
-+ if (!funcs->is_valid) {
-+ sqlite_set_result_error(func, "this function has not been correctly defined for this request", -1);
-+ return;
-+ }
-+
-+ context_p = (zval **)sqlite_aggregate_context(func, sizeof(*context_p));
-+
-+ res = call_user_function_ex(EG(function_table),
-+ NULL,
-+ funcs->fini,
-+ &retval,
-+ 1,
-+ &context_p,
-+ 0, NULL TSRMLS_CC);
-+
-+ if (res == SUCCESS) {
-+ if (retval == NULL) {
-+ sqlite_set_result_string(func, NULL, 0);
-+ } else {
-+ switch (Z_TYPE_P(retval)) {
-+ case IS_STRING:
-+ /* TODO: for binary results, need to encode the string */
-+ sqlite_set_result_string(func, Z_STRVAL_P(retval), Z_STRLEN_P(retval));
-+ break;
-+ case IS_LONG:
-+ case IS_BOOL:
-+ sqlite_set_result_int(func, Z_LVAL_P(retval));
-+ break;
-+ case IS_DOUBLE:
-+ sqlite_set_result_double(func, Z_DVAL_P(retval));
-+ break;
-+ case IS_NULL:
-+ default:
-+ sqlite_set_result_string(func, NULL, 0);
-+ }
-+ }
-+ } else {
-+ sqlite_set_result_error(func, "call_user_function_ex failed", -1);
-+ }
-+
-+ if (retval) {
-+ zval_ptr_dtor(&retval);
-+ }
-+
-+ zval_ptr_dtor(context_p);
-+}
-+/* }}} */
-+
-+/* {{{ Authorization Callback */
-+static int php_sqlite_authorizer(void *autharg, int access_type, const char *arg3, const char *arg4,
-+ const char *arg5, const char *arg6)
-+{
-+ switch (access_type) {
-+ case SQLITE_COPY:
-+ {
-+ TSRMLS_FETCH();
-+ if (PG(safe_mode) && (!php_checkuid(arg4, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
-+ return SQLITE_DENY;
-+ }
-+
-+ if (php_check_open_basedir(arg4 TSRMLS_CC)) {
-+ return SQLITE_DENY;
-+ }
-+ }
-+ return SQLITE_OK;
-+#ifdef SQLITE_ATTACH
-+ case SQLITE_ATTACH:
-+ {
-+ TSRMLS_FETCH();
-+ if (PG(safe_mode) && (!php_checkuid(arg3, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
-+ return SQLITE_DENY;
-+ }
-+
-+ if (php_check_open_basedir(arg3 TSRMLS_CC)) {
-+ return SQLITE_DENY;
-+ }
-+ }
-+ return SQLITE_OK;
-+#endif
-+
-+ default:
-+ /* access allowed */
-+ return SQLITE_OK;
-+ }
-+}
-+/* }}} */
-+
-+static int init_sqlite_globals(zend_sqlite_globals *g)
-+{
-+ g->assoc_case = 0;
-+ return SUCCESS;
-+}
-+
-+PHP_MINIT_FUNCTION(sqlite)
-+{
-+ ZEND_INIT_MODULE_GLOBALS(sqlite, init_sqlite_globals, NULL);
-+
-+ REGISTER_INI_ENTRIES();
-+
-+ le_sqlite_db = zend_register_list_destructors_ex(php_sqlite_db_dtor, NULL, "sqlite database", module_number);
-+ le_sqlite_pdb = zend_register_list_destructors_ex(NULL, php_sqlite_db_dtor, "sqlite database (persistent)", module_number);
-+ le_sqlite_result = zend_register_list_destructors_ex(php_sqlite_result_dtor, NULL, "sqlite result", module_number);
-+
-+ REGISTER_LONG_CONSTANT("SQLITE_BOTH", PHPSQLITE_BOTH, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_NUM", PHPSQLITE_NUM, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_ASSOC", PHPSQLITE_ASSOC, CONST_CS|CONST_PERSISTENT);
-+
-+ REGISTER_LONG_CONSTANT("SQLITE_OK", SQLITE_OK, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_ERROR", SQLITE_ERROR, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_INTERNAL", SQLITE_INTERNAL, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_PERM", SQLITE_PERM, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_ABORT", SQLITE_ABORT, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_BUSY", SQLITE_BUSY, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_LOCKED", SQLITE_LOCKED, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_NOMEM", SQLITE_NOMEM, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_READONLY", SQLITE_READONLY, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_INTERRUPT", SQLITE_INTERRUPT, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_IOERR", SQLITE_IOERR, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_CORRUPT", SQLITE_CORRUPT, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_NOTFOUND", SQLITE_NOTFOUND, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_FULL", SQLITE_FULL, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_CANTOPEN", SQLITE_CANTOPEN, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_PROTOCOL", SQLITE_PROTOCOL, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_EMPTY", SQLITE_EMPTY, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_SCHEMA", SQLITE_SCHEMA, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_TOOBIG", SQLITE_TOOBIG, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_CONSTRAINT", SQLITE_CONSTRAINT, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_MISMATCH", SQLITE_MISMATCH, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_MISUSE", SQLITE_MISUSE, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_NOLFS", SQLITE_NOLFS, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_AUTH", SQLITE_AUTH, CONST_CS|CONST_PERSISTENT);
-+#ifdef SQLITE_FORMAT
-+ REGISTER_LONG_CONSTANT("SQLITE_FORMAT", SQLITE_FORMAT, CONST_CS|CONST_PERSISTENT);
-+#endif
-+ REGISTER_LONG_CONSTANT("SQLITE_ROW", SQLITE_ROW, CONST_CS|CONST_PERSISTENT);
-+ REGISTER_LONG_CONSTANT("SQLITE_DONE", SQLITE_DONE, CONST_CS|CONST_PERSISTENT);
-+
-+ return SUCCESS;
-+}
-+
-+PHP_MINFO_FUNCTION(sqlite)
-+{
-+ php_info_print_table_start();
-+ php_info_print_table_header(2, "SQLite support", "enabled");
-+ php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " $Id$");
-+ php_info_print_table_row(2, "SQLite Library", sqlite_libversion());
-+ php_info_print_table_row(2, "SQLite Encoding", sqlite_libencoding());
-+ php_info_print_table_end();
-+
-+ DISPLAY_INI_ENTRIES();
-+}
-+
-+static struct php_sqlite_db *php_sqlite_open(char *filename, int mode, char *persistent_id, zval *return_value, zval *errmsg TSRMLS_DC)
-+{
-+ char *errtext = NULL;
-+ sqlite *sdb = NULL;
-+ struct php_sqlite_db *db = NULL;
-+
-+ sdb = sqlite_open(filename, mode, &errtext);
-+
-+ if (sdb == NULL) {
-+
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
-+
-+ if (errmsg) {
-+ ZVAL_STRING(errmsg, errtext, 1);
-+ }
-+
-+ sqlite_freemem(errtext);
-+
-+ RETVAL_FALSE;
-+ return NULL;
-+ }
-+
-+ db = (struct php_sqlite_db *)pemalloc(sizeof(struct php_sqlite_db), persistent_id ? 1 : 0);
-+ db->is_persistent = persistent_id ? 1 : 0;
-+ db->last_err_code = SQLITE_OK;
-+ db->db = sdb;
-+
-+ zend_hash_init(&db->callbacks, 0, NULL, php_sqlite_callback_dtor, db->is_persistent);
-+
-+ /* register the PHP functions */
-+ sqlite_create_function(sdb, "php", -1, php_sqlite_generic_function_callback, 0);
-+
-+ /* set default busy handler; keep retrying up until 1 minute has passed,
-+ * then fail with a busy status code */
-+ sqlite_busy_timeout(sdb, 60000);
-+
-+ /* authorizer hook so we can enforce safe mode
-+ * Note: the declaration of php_sqlite_authorizer is correct for 2.8.2 of libsqlite,
-+ * and IS backwards binary compatible with earlier versions */
-+ sqlite_set_authorizer(sdb, php_sqlite_authorizer, NULL);
-+
-+ db->rsrc_id = ZEND_REGISTER_RESOURCE(return_value, db, persistent_id ? le_sqlite_pdb : le_sqlite_db);
-+
-+ if (persistent_id) {
-+ list_entry le;
-+
-+ Z_TYPE(le) = le_sqlite_pdb;
-+ le.ptr = db;
-+
-+ if (FAILURE == zend_hash_update(&EG(persistent_list), persistent_id,
-+ strlen(persistent_id)+1,
-+ (void *)&le, sizeof(le), NULL)) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to register persistent resource");
-+ }
-+ }
-+
-+ return db;
-+}
-+
-+/* {{{ proto resource sqlite_popen(string filename [, int mode, string &errmessage])
-+ Opens a persistent handle to an SQLite database. Will create the database if it does not exist */
-+PHP_FUNCTION(sqlite_popen)
-+{
-+ int mode = 0666;
-+ char *filename, *fullpath, *hashkey;
-+ long filename_len, hashkeylen;
-+ zval *errmsg = NULL;
-+ struct php_sqlite_db *db = NULL;
-+ list_entry *le;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lz/",
-+ &filename, &filename_len, &mode, &errmsg)) {
-+ return;
-+ }
-+
-+ if (strncmp(filename, ":memory:", sizeof(":memory:") - 1)) {
-+ /* resolve the fully-qualified path name to use as the hash key */
-+ fullpath = expand_filepath(filename, NULL TSRMLS_CC);
-+
-+ if (PG(safe_mode) && (!php_checkuid(fullpath, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
-+ RETURN_FALSE;
-+ }
-+
-+ if (php_check_open_basedir(fullpath TSRMLS_CC)) {
-+ RETURN_FALSE;
-+ }
-+ } else {
-+ fullpath = estrndup(filename, filename_len);
-+ }
-+
-+ hashkeylen = spprintf(&hashkey, 0, "sqlite_pdb_%s:%d", fullpath, mode);
-+
-+ /* do we have an existing persistent connection ? */
-+ if (SUCCESS == zend_hash_find(&EG(persistent_list), hashkey, hashkeylen+1, (void*)&le)) {
-+ if (Z_TYPE_P(le) == le_sqlite_pdb) {
-+ db = (struct php_sqlite_db*)le->ptr;
-+
-+ if (db->rsrc_id == FAILURE) {
-+ /* give it a valid resource id for this request */
-+ db->rsrc_id = ZEND_REGISTER_RESOURCE(return_value, db, le_sqlite_pdb);
-+ } else {
-+ /* already accessed this request; map it */
-+ ZVAL_RESOURCE(return_value, db->rsrc_id);
-+ }
-+
-+ /* all set */
-+ efree(fullpath);
-+ efree(hashkey);
-+ return;
-+ }
-+
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Some other type of persistent resource is using this hash key!?");
-+ RETURN_FALSE;
-+ }
-+
-+ /* now we need to open the database */
-+ php_sqlite_open(fullpath, mode, hashkey, return_value, errmsg TSRMLS_CC);
-+
-+ efree(fullpath);
-+ efree(hashkey);
-+}
-+/* }}} */
-+
-+/* {{{ proto resource sqlite_open(string filename [, int mode, string &errmessage])
-+ Opens an SQLite database. Will create the database if it does not exist */
-+PHP_FUNCTION(sqlite_open)
-+{
-+ int mode = 0666;
-+ char *filename;
-+ long filename_len;
-+ zval *errmsg = NULL;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lz/",
-+ &filename, &filename_len, &mode, &errmsg)) {
-+ return;
-+ }
-+
-+ if (strncmp(filename, ":memory:", sizeof(":memory:") - 1)) {
-+ if (PG(safe_mode) && (!php_checkuid(filename, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
-+ RETURN_FALSE;
-+ }
-+
-+ if (php_check_open_basedir(filename TSRMLS_CC)) {
-+ RETURN_FALSE;
-+ }
-+ }
-+
-+ php_sqlite_open(filename, mode, NULL, return_value, errmsg TSRMLS_CC);
-+}
-+/* }}} */
-+
-+/* {{{ proto void sqlite_busy_timeout(resource db, int ms)
-+ Set busy timeout duration. If ms <= 0, all busy handlers are disabled */
-+PHP_FUNCTION(sqlite_busy_timeout)
-+{
-+ zval *zdb;
-+ struct php_sqlite_db *db;
-+ long ms;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zdb, &ms)) {
-+ return;
-+ }
-+
-+ DB_FROM_ZVAL(db, &zdb);
-+
-+ sqlite_busy_timeout(db->db, ms);
-+}
-+/* }}} */
-+
-+/* {{{ proto void sqlite_close(resource db)
-+ Closes an open sqlite database */
-+PHP_FUNCTION(sqlite_close)
-+{
-+ zval *zdb;
-+ struct php_sqlite_db *db;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
-+ return;
-+ }
-+ DB_FROM_ZVAL(db, &zdb);
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
-+ return;
-+ }
-+
-+ DB_FROM_ZVAL(db, &zdb);
-+
-+ zend_list_delete(Z_RESVAL_P(zdb));
-+}
-+/* }}} */
-+
-+/* {{{ php_sqlite_fetch */
-+int php_sqlite_fetch(struct php_sqlite_result *rres TSRMLS_DC)
-+{
-+ const char **rowdata, **colnames;
-+ int ret, i, base;
-+ char *errtext = NULL, *colname;
-+
-+next_row:
-+ ret = sqlite_step(rres->vm, &rres->ncolumns, &rowdata, &colnames);
-+ if (!rres->nrows) {
-+ /* first row - lets copy the column names */
-+ rres->col_names = safe_emalloc(rres->ncolumns, sizeof(char *), 0);
-+ for (i = 0; i < rres->ncolumns; i++) {
-+ colname = strchr(colnames[i], '.');
-+ if (!colname++) {
-+ colname = (char*)colnames[i];
-+ }
-+ if (SQLITE_G(assoc_case) == 1) {
-+ php_sqlite_strtoupper(colname);
-+ } else if (SQLITE_G(assoc_case) == 2) {
-+ php_sqlite_strtolower(colname);
-+ }
-+ rres->col_names[i] = estrdup(colname);
-+ }
-+ if (!rres->buffered) {
-+ /* non buffered mode - also fetch memory for on single row */
-+ rres->table = safe_emalloc(rres->ncolumns, sizeof(char *), 0);
-+ }
-+ }
-+
-+ switch (ret) {
-+ case SQLITE_ROW:
-+ if (rres->buffered) {
-+ /* add the row to our collection */
-+ if (rres->nrows + 1 >= rres->alloc_rows) {
-+ rres->alloc_rows = rres->alloc_rows ? rres->alloc_rows * 2 : 16;
-+ rres->table = erealloc(rres->table, rres->alloc_rows * rres->ncolumns * sizeof(char *));
-+ }
-+ base = rres->nrows * rres->ncolumns;
-+ for (i = 0; i < rres->ncolumns; i++) {
-+ if (rowdata[i]) {
-+ rres->table[base + i] = estrdup(rowdata[i]);
-+ } else {
-+ rres->table[base + i] = NULL;
-+ }
-+ }
-+ rres->nrows++;
-+ goto next_row;
-+ } else {
-+ /* non buffered: only fetch one row but first free data if not first row */
-+ if (rres->nrows++) {
-+ for (i = 0; i < rres->ncolumns; i++) {
-+ if (rres->table[i]) {
-+ efree(rres->table[i]);
-+ }
-+ }
-+ }
-+ for (i = 0; i < rres->ncolumns; i++) {
-+ if (rowdata[i]) {
-+ rres->table[i] = estrdup(rowdata[i]);
-+ } else {
-+ rres->table[i] = NULL;
-+ }
-+ }
-+ }
-+ ret = SQLITE_OK;
-+ break;
-+
-+ case SQLITE_BUSY:
-+ case SQLITE_ERROR:
-+ case SQLITE_MISUSE:
-+ case SQLITE_DONE:
-+ default:
-+ if (rres->vm) {
-+ ret = sqlite_finalize(rres->vm, &errtext);
-+ }
-+ rres->vm = NULL;
-+ if (ret != SQLITE_OK) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
-+ sqlite_freemem(errtext);
-+ }
-+ break;
-+ }
-+ rres->db->last_err_code = ret;
-+
-+ return ret;
-+}
-+/* }}} */
-+
-+/* {{{ sqlite_query */
-+void sqlite_query(struct php_sqlite_db *db, char *sql, long sql_len, int mode, int buffered, zval *return_value, struct php_sqlite_result *rres TSRMLS_DC)
-+{
-+ struct php_sqlite_result res;
-+ int ret;
-+ char *errtext = NULL;
-+ const char *tail;
-+
-+ memset(&res, 0, sizeof(res));
-+ res.buffered = buffered;
-+ res.mode = mode;
-+
-+ ret = sqlite_compile(db->db, sql, &tail, &res.vm, &errtext);
-+ db->last_err_code = ret;
-+
-+ if (ret != SQLITE_OK) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
-+ sqlite_freemem(errtext);
-+
-+ RETURN_FALSE;
-+ }
-+
-+ if (!rres) {
-+ rres = (struct php_sqlite_result*)emalloc(sizeof(*rres));
-+ }
-+ memcpy(rres, &res, sizeof(*rres));
-+ rres->db = db;
-+ zend_list_addref(db->rsrc_id);
-+
-+
-+ /* now the result set is ready for stepping: get first row */
-+ if (php_sqlite_fetch(rres TSRMLS_CC) != SQLITE_OK) {
-+ real_result_dtor(rres TSRMLS_CC);
-+ RETURN_FALSE;
-+ }
-+
-+ rres->curr_row = 0;
-+
-+ if (return_value) {
-+ ZEND_REGISTER_RESOURCE(return_value, rres, le_sqlite_result);
-+ }
-+}
-+/* }}} */
-+
-+/* {{{ proto resource sqlite_unbuffered_query(string query, resource db [ , int result_type ])
-+ Execute a query that does not prefetch and buffer all data */
-+PHP_FUNCTION(sqlite_unbuffered_query)
-+{
-+ zval *zdb;
-+ struct php_sqlite_db *db;
-+ char *sql;
-+ long sql_len;
-+ int mode = PHPSQLITE_BOTH;
-+ char *errtext = NULL;
-+
-+ if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
-+ ZEND_NUM_ARGS() TSRMLS_CC, "sr|l", &sql, &sql_len, &zdb, &mode) &&
-+ FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &zdb, &sql, &sql_len, &mode)) {
-+ return;
-+ }
-+
-+ DB_FROM_ZVAL(db, &zdb);
-+
-+ /* avoid doing work if we can */
-+ if (!return_value_used) {
-+ db->last_err_code = sqlite_exec(db->db, sql, NULL, NULL, &errtext);
-+
-+ if (db->last_err_code != SQLITE_OK) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
-+ sqlite_freemem(errtext);
-+ }
-+ return;
-+ }
-+
-+ sqlite_query(db, sql, sql_len, mode, 0, return_value, NULL TSRMLS_CC);
-+}
-+/* }}} */
-+
-+/* {{{ proto resource sqlite_query(string query, resource db [ , int result_type ])
-+ Executes a query against a given database and returns a result handle */
-+PHP_FUNCTION(sqlite_query)
-+{
-+ zval *zdb;
-+ struct php_sqlite_db *db;
-+ char *sql;
-+ long sql_len;
-+ int mode = PHPSQLITE_BOTH;
-+ char *errtext = NULL;
-+
-+ if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
-+ ZEND_NUM_ARGS() TSRMLS_CC, "sr|l", &sql, &sql_len, &zdb, &mode) &&
-+ FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &zdb, &sql, &sql_len, &mode)) {
-+ return;
-+ }
-+ DB_FROM_ZVAL(db, &zdb);
-+
-+ /* avoid doing work if we can */
-+ if (!return_value_used) {
-+ db->last_err_code = sqlite_exec(db->db, sql, NULL, NULL, &errtext);
-+
-+ if (db->last_err_code != SQLITE_OK) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
-+ sqlite_freemem(errtext);
-+ }
-+ return;
-+ }
-+
-+ sqlite_query(db, sql, sql_len, mode, 1, return_value, NULL TSRMLS_CC);
-+}
-+/* }}} */
-+
-+/* {{{ php_sqlite_fetch_array */
-+static void php_sqlite_fetch_array(struct php_sqlite_result *res, int mode, zend_bool decode_binary, int move_next, zval *return_value TSRMLS_DC)
-+{
-+ int j, buffered = res->buffered;
-+ const char **rowdata, **colnames;
-+
-+ /* check range of the row */
-+ if (res->curr_row >= res->nrows) {
-+ /* no more */
-+ RETURN_FALSE;
-+ }
-+ colnames = (const char**)res->col_names;
-+ if (res->buffered) {
-+ rowdata = (const char**)&res->table[res->curr_row * res->ncolumns];
-+ } else {
-+ rowdata = (const char**)res->table;
-+ }
-+
-+ /* now populate the result */
-+ array_init(return_value);
-+
-+ for (j = 0; j < res->ncolumns; j++) {
-+ zval *decoded;
-+ MAKE_STD_ZVAL(decoded);
-+
-+ if (rowdata[j] == NULL) {
-+ ZVAL_NULL(decoded);
-+ } else if (decode_binary && rowdata[j][0] == '\x01') {
-+ Z_STRVAL_P(decoded) = emalloc(strlen(rowdata[j]));
-+ Z_STRLEN_P(decoded) = sqlite_decode_binary(rowdata[j]+1, Z_STRVAL_P(decoded));
-+ Z_STRVAL_P(decoded)[Z_STRLEN_P(decoded)] = '\0';
-+ Z_TYPE_P(decoded) = IS_STRING;
-+ if (!buffered) {
-+ efree((char*)rowdata[j]);
-+ rowdata[j] = NULL;
-+ }
-+ } else {
-+ ZVAL_STRING(decoded, (char*)rowdata[j], buffered);
-+ if (!buffered) {
-+ rowdata[j] = NULL;
-+ }
-+ }
-+
-+ if (mode & PHPSQLITE_NUM) {
-+ if (mode & PHPSQLITE_ASSOC) {
-+ add_index_zval(return_value, j, decoded);
-+ ZVAL_ADDREF(decoded);
-+ add_assoc_zval(return_value, (char*)colnames[j], decoded);
-+ } else {
-+ add_next_index_zval(return_value, decoded);
-+ }
-+ } else {
-+ add_assoc_zval(return_value, (char*)colnames[j], decoded);
-+ }
-+ }
-+
-+ if (move_next) {
-+ if (!res->buffered) {
-+ /* non buffered: fetch next row */
-+ php_sqlite_fetch(res TSRMLS_CC);
-+ }
-+ /* advance the row pointer */
-+ res->curr_row++;
-+ }
-+}
-+/* }}} */
-+
-+/* {{{ php_sqlite_fetch_column */
-+static void php_sqlite_fetch_column(struct php_sqlite_result *res, zval *which, zend_bool decode_binary, zval *return_value TSRMLS_DC)
-+{
-+ int j;
-+ const char **rowdata, **colnames;
-+
-+ /* check range of the row */
-+ if (res->curr_row >= res->nrows) {
-+ /* no more */
-+ RETURN_FALSE;
-+ }
-+ colnames = (const char**)res->col_names;
-+
-+ if (Z_TYPE_P(which) == IS_LONG) {
-+ j = Z_LVAL_P(which);
-+ } else {
-+ convert_to_string_ex(&which);
-+ for (j = 0; j < res->ncolumns; j++) {
-+ if (!strcasecmp((char*)colnames[j], Z_STRVAL_P(which))) {
-+ break;
-+ }
-+ }
-+ }
-+ if (j < 0 || j >= res->ncolumns) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "No such column %d", j);
-+ RETURN_FALSE;
-+ }
-+
-+ if (res->buffered) {
-+ rowdata = (const char**)&res->table[res->curr_row * res->ncolumns];
-+ } else {
-+ rowdata = (const char**)res->table;
-+ }
-+
-+ if (rowdata[j] == NULL) {
-+ RETURN_NULL();
-+ } else if (decode_binary && rowdata[j][0] == '\x01') {
-+ int l = strlen(rowdata[j]);
-+ char *decoded = emalloc(l);
-+ l = sqlite_decode_binary(rowdata[j]+1, decoded);
-+ decoded[l] = '\0';
-+ RETVAL_STRINGL(decoded, l, 0);
-+ if (!res->buffered) {
-+ efree((char*)rowdata[j]);
-+ rowdata[j] = NULL;
-+ }
-+ } else {
-+ RETVAL_STRING((char*)rowdata[j], res->buffered);
-+ if (!res->buffered) {
-+ rowdata[j] = NULL;
-+ }
-+ }
-+}
-+/* }}} */
-+
-+/* {{{ proto array sqlite_fetch_all(resource result [, int result_type, bool decode_binary])
-+ Fetches all rows from a result set as an array */
-+PHP_FUNCTION(sqlite_fetch_all)
-+{
-+ zval *zres, *ent;
-+ int mode = PHPSQLITE_BOTH;
-+ zend_bool decode_binary = 1;
-+ struct php_sqlite_result *res;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|lb", &zres, &mode, &decode_binary)) {
-+ return;
-+ }
-+ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
-+ if (ZEND_NUM_ARGS() < 2) {
-+ mode = res->mode;
-+ }
-+
-+ if (res->curr_row >= res->nrows && res->nrows) {
-+ if (!res->buffered) {
-+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "One or more rowsets were already returned");
-+ } else {
-+ res->curr_row = 0;
-+ }
-+ }
-+
-+ array_init(return_value);
-+
-+ while (res->curr_row < res->nrows) {
-+ MAKE_STD_ZVAL(ent);
-+ php_sqlite_fetch_array(res, mode, decode_binary, 1, ent TSRMLS_CC);
-+ add_next_index_zval(return_value, ent);
-+ }
-+}
-+/* }}} */
-+
-+/* {{{ proto array sqlite_fetch_array(resource result [, int result_type, bool decode_binary])
-+ Fetches the next row from a result set as an array */
-+PHP_FUNCTION(sqlite_fetch_array)
-+{
-+ zval *zres;
-+ int mode = PHPSQLITE_BOTH;
-+ zend_bool decode_binary = 1;
-+ struct php_sqlite_result *res;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|lb", &zres, &mode, &decode_binary)) {
-+ return;
-+ }
-+ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
-+ if (ZEND_NUM_ARGS() < 2) {
-+ mode = res->mode;
-+ }
-+
-+ php_sqlite_fetch_array(res, mode, decode_binary, 1, return_value TSRMLS_CC);
-+}
-+/* }}} */
-+
-+/* {{{ proto array sqlite_array_query(resource db, string query [ , int result_type, bool decode_binary ])
-+ Executes a query against a given database and returns an array */
-+PHP_FUNCTION(sqlite_array_query)
-+{
-+ zval *zdb, *ent;
-+ struct php_sqlite_db *db;
-+ struct php_sqlite_result *rres;
-+ char *sql;
-+ long sql_len;
-+ int mode = PHPSQLITE_BOTH;
-+ char *errtext = NULL;
-+ zend_bool decode_binary = 1;
-+
-+ if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
-+ ZEND_NUM_ARGS() TSRMLS_CC, "sr|l", &sql, &sql_len, &zdb, &mode, &decode_binary) &&
-+ FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &zdb, &sql, &sql_len, &mode, &decode_binary)) {
-+ return;
-+ }
-+ DB_FROM_ZVAL(db, &zdb);
-+
-+ /* avoid doing work if we can */
-+ if (!return_value_used) {
-+ db->last_err_code = sqlite_exec(db->db, sql, NULL, NULL, &errtext);
-+
-+ if (db->last_err_code != SQLITE_OK) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
-+ sqlite_freemem(errtext);
-+ }
-+ return;
-+ }
-+
-+ rres = (struct php_sqlite_result *)emalloc(sizeof(*rres));
-+ sqlite_query(db, sql, sql_len, mode, 0, NULL, rres TSRMLS_CC);
-+
-+ array_init(return_value);
-+
-+ while (rres->curr_row < rres->nrows) {
-+ MAKE_STD_ZVAL(ent);
-+ php_sqlite_fetch_array(rres, mode, decode_binary, 1, ent TSRMLS_CC);
-+ add_next_index_zval(return_value, ent);
-+ }
-+ real_result_dtor(rres TSRMLS_CC);
-+}
-+/* }}} */
-+
-+/* {{{ proto string sqlite_fetch_array(resource result [, bool decode_binary])
-+ Fetches first column of a result set as a string */
-+PHP_FUNCTION(sqlite_fetch_string)
-+{
-+ zval *zres;
-+ zend_bool decode_binary = 1;
-+ struct php_sqlite_result *res;
-+ char *decoded = NULL;
-+ int decoded_len;
-+ const char **rowdata;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|b", &zres, &decode_binary)) {
-+ return;
-+ }
-+ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
-+
-+ /* check if there are any more rows on the cursor */
-+ if (res->curr_row >= res->nrows) {
-+ RETURN_FALSE;
-+ }
-+
-+ if (res->buffered) {
-+ rowdata = (const char**)&res->table[res->curr_row * res->ncolumns];
-+ } else {
-+ rowdata = (const char**)res->table;
-+ }
-+
-+ if (decode_binary && rowdata[0] != NULL && rowdata[0][0] == '\x01') {
-+ decoded = emalloc(strlen(rowdata[0]));
-+ decoded_len = sqlite_decode_binary(rowdata[0]+1, decoded);
-+ if (!res->buffered) {
-+ efree((char*)rowdata[0]);
-+ rowdata[0] = NULL;
-+ }
-+ } else {
-+ if (rowdata[0]) {
-+ decoded_len = strlen((char*)rowdata[0]);
-+ if (res->buffered) {
-+ decoded = estrndup((char*)rowdata[0], decoded_len);
-+ } else {
-+ decoded = (char*)rowdata[0];
-+ rowdata[0] = NULL;
-+ }
-+ } else {
-+ decoded_len = 0;
-+ decoded = NULL;
-+ }
-+ }
-+
-+ if (!res->buffered) {
-+ /* non buffered: fetch next row */
-+ php_sqlite_fetch(res TSRMLS_CC);
-+ }
-+ /* advance the row pointer */
-+ res->curr_row++;
-+
-+ if (decoded == NULL) {
-+ RETURN_NULL();
-+ } else {
-+ RETURN_STRINGL(decoded, decoded_len, 0);
-+ }
-+}
-+/* }}} */
-+
-+/* {{{ proto array sqlite_fetch_array(resource result [, int result_type, bool decode_binary])
-+ Fetches the current row from a result set as an array */
-+PHP_FUNCTION(sqlite_current)
-+{
-+ zval *zres;
-+ int mode = PHPSQLITE_BOTH;
-+ zend_bool decode_binary = 1;
-+ struct php_sqlite_result *res;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|lb", &zres, &mode, &decode_binary)) {
-+ return;
-+ }
-+ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
-+ if (ZEND_NUM_ARGS() < 2) {
-+ mode = res->mode;
-+ }
-+
-+ php_sqlite_fetch_array(res, mode, decode_binary, 0, return_value TSRMLS_CC);
-+}
-+/* }}} */
-+
-+/* {{{ proto mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])
-+ Fetches a column from the current row of a result set */
-+PHP_FUNCTION(sqlite_column)
-+{
-+ zval *zres;
-+ zval *which;
-+ zend_bool decode_binary = 1;
-+ struct php_sqlite_result *res;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz|b", &zres, &which, &decode_binary)) {
-+ return;
-+ }
-+ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
-+
-+ php_sqlite_fetch_column(res, which, decode_binary, return_value TSRMLS_CC);
-+}
-+/* }}} */
-+
-+/* {{{ proto string sqlite_libversion()
-+ Returns the version of the linked SQLite library */
-+PHP_FUNCTION(sqlite_libversion)
-+{
-+ if (ZEND_NUM_ARGS() != 0) {
-+ WRONG_PARAM_COUNT;
-+ }
-+ RETURN_STRING((char*)sqlite_libversion(), 1);
-+}
-+/* }}} */
-+
-+/* {{{ proto string sqlite_libencoding()
-+ Returns the encoding (iso8859 or UTF-8) of the linked SQLite library */
-+PHP_FUNCTION(sqlite_libencoding)
-+{
-+ if (ZEND_NUM_ARGS() != 0) {
-+ WRONG_PARAM_COUNT;
-+ }
-+ RETURN_STRING((char*)sqlite_libencoding(), 1);
-+}
-+/* }}} */
-+
-+/* {{{ proto int sqlite_changes(resource db)
-+ Returns the number of rows that were changed by the most recent SQL statement */
-+PHP_FUNCTION(sqlite_changes)
-+{
-+ zval *zdb;
-+ struct php_sqlite_db *db;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
-+ return;
-+ }
-+
-+ DB_FROM_ZVAL(db, &zdb);
-+
-+ RETURN_LONG(sqlite_changes(db->db));
-+}
-+/* }}} */
-+
-+/* {{{ proto int sqlite_last_insert_rowid(resource db)
-+ Returns the rowid of the most recently inserted row */
-+PHP_FUNCTION(sqlite_last_insert_rowid)
-+{
-+ zval *zdb;
-+ struct php_sqlite_db *db;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
-+ return;
-+ }
-+
-+ DB_FROM_ZVAL(db, &zdb);
-+
-+ RETURN_LONG(sqlite_last_insert_rowid(db->db));
-+}
-+/* }}} */
-+
-+/* {{{ proto int sqlite_num_rows(resource result)
-+ Returns the number of rows in a result set */
-+PHP_FUNCTION(sqlite_num_rows)
-+{
-+ zval *zres;
-+ struct php_sqlite_result *res;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
-+ return;
-+ }
-+
-+ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
-+
-+ if (res->buffered) {
-+ RETURN_LONG(res->nrows);
-+ } else {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Row count is not available for unbuffered queries");
-+ RETURN_FALSE;
-+ }
-+}
-+/* }}} */
-+
-+/* {{{ proto bool sqlite_has_more(resource result)
-+ Returns whether or not more rows are available */
-+PHP_FUNCTION(sqlite_has_more)
-+{
-+ zval *zres;
-+ struct php_sqlite_result *res;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
-+ return;
-+ }
-+ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
-+
-+ RETURN_BOOL(res->nrows && res->curr_row < res->nrows); /* curr_row may be -1 */
-+}
-+/* }}} */
-+
-+/* {{{ proto int sqlite_num_fields(resource result)
-+ Returns the number of fields in a result set */
-+PHP_FUNCTION(sqlite_num_fields)
-+{
-+ zval *zres;
-+ struct php_sqlite_result *res;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
-+ return;
-+ }
-+
-+ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
-+
-+ RETURN_LONG(res->ncolumns);
-+}
-+/* }}} */
-+
-+/* {{{ proto string sqlite_field_name(resource result, int field)
-+ Returns the name of a particular field */
-+PHP_FUNCTION(sqlite_field_name)
-+{
-+ zval *zres;
-+ struct php_sqlite_result *res;
-+ int field;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zres, &field)) {
-+ return;
-+ }
-+
-+ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
-+
-+ if (field < 0 || field >= res->ncolumns) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "field %d out of range", field);
-+ RETURN_FALSE;
-+ }
-+
-+ RETURN_STRING(res->col_names[field], 1);
-+}
-+/* }}} */
-+
-+/* {{{ proto bool sqlite_seek(resource result, int row)
-+ Seek to a particular row number */
-+PHP_FUNCTION(sqlite_seek)
-+{
-+ zval *zres;
-+ struct php_sqlite_result *res;
-+ int row;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zres, &row)) {
-+ return;
-+ }
-+
-+ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
-+
-+ if (!res->buffered) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot seek an unbuffered result set");
-+ RETURN_FALSE;
-+ }
-+
-+ if (row < 1 || row >= res->nrows) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "row %d out of range", row);
-+ RETURN_FALSE;
-+ }
-+
-+ res->curr_row = row;
-+ RETURN_TRUE;
-+}
-+/* }}} */
-+
-+/* {{{ proto bool sqlite_rewind(resource result)
-+ Seek to first row number */
-+PHP_FUNCTION(sqlite_rewind)
-+{
-+ zval *zres;
-+ struct php_sqlite_result *res;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
-+ return;
-+ }
-+ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
-+
-+ if (!res->buffered) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot seek an unbuffered result set");
-+ RETURN_FALSE;
-+ }
-+
-+ if (!res->nrows) {
-+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "no rows received");
-+ RETURN_FALSE;
-+ }
-+
-+ res->curr_row = 0;
-+ RETURN_TRUE;
-+}
-+/* }}} */
-+
-+/* {{{ proto bool sqlite_next(resource result)
-+ Seek to next row number */
-+PHP_FUNCTION(sqlite_next)
-+{
-+ zval *zres;
-+ struct php_sqlite_result *res;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
-+ return;
-+ }
-+ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
-+
-+ if (!res->buffered && res->vm) {
-+ php_sqlite_fetch(res TSRMLS_CC);
-+ }
-+
-+ if (res->curr_row >= res->nrows) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "no more rows available");
-+ RETURN_FALSE;
-+ }
-+
-+ res->curr_row++;
-+
-+ RETURN_TRUE;
-+}
-+/* }}} */
-+
-+/* {{{ proto string sqlite_escape_string(string item)
-+ Escapes a string for use as a query parameter */
-+PHP_FUNCTION(sqlite_escape_string)
-+{
-+ char *string = NULL;
-+ long stringlen;
-+ char *ret;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &string, &stringlen)) {
-+ return;
-+ }
-+
-+ if (stringlen && (string[0] == '\x01' || memchr(string, '\0', stringlen) != NULL)) {
-+ /* binary string */
-+ int enclen;
-+
-+ ret = emalloc( 1 + ((256 * stringlen + 1262) / 253) );
-+ ret[0] = '\x01';
-+ enclen = sqlite_encode_binary((const unsigned char*)string, stringlen, ret+1);
-+ RETVAL_STRINGL(ret, enclen+1, 0);
-+
-+ } else {
-+ ret = sqlite_mprintf("%q", string);
-+ if (ret) {
-+ RETVAL_STRING(ret, 1);
-+ sqlite_freemem(ret);
-+ }
-+ }
-+}
-+/* }}} */
-+
-+/* {{{ proto int sqlite_last_error(resource db)
-+ Returns the error code of the last error for a database */
-+PHP_FUNCTION(sqlite_last_error)
-+{
-+ zval *zdb;
-+ struct php_sqlite_db *db;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
-+ return;
-+ }
-+
-+ DB_FROM_ZVAL(db, &zdb);
-+
-+ RETURN_LONG(db->last_err_code);
-+}
-+/* }}} */
-+
-+/* {{{ proto string sqlite_error_string(int error_code)
-+ Returns the textual description of an error code */
-+PHP_FUNCTION(sqlite_error_string)
-+{
-+ long code;
-+ const char *msg;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &code)) {
-+ return;
-+ }
-+
-+ msg = sqlite_error_string(code);
-+
-+ if (msg) {
-+ RETURN_STRING((char*)msg, 1);
-+ } else {
-+ RETURN_NULL();
-+ }
-+}
-+/* }}} */
-+
-+/* manages duplicate registrations of a particular function, and
-+ * also handles the case where the db is using a persistent connection */
-+enum callback_prep_t { DO_REG, SKIP_REG, ERR };
-+
-+static enum callback_prep_t prep_callback_struct(struct php_sqlite_db *db, int is_agg,
-+ char *funcname,
-+ zval *step, zval *fini, struct php_sqlite_agg_functions **funcs)
-+{
-+ struct php_sqlite_agg_functions *alloc_funcs, func_tmp;
-+ char *hashkey;
-+ int hashkeylen;
-+ enum callback_prep_t ret;
-+
-+ hashkeylen = spprintf(&hashkey, 0, "%s-%s", is_agg ? "agg" : "reg", funcname);
-+
-+ /* is it already registered ? */
-+ if (SUCCESS == zend_hash_find(&db->callbacks, hashkey, hashkeylen+1, (void*)&alloc_funcs)) {
-+ /* override the previous definition */
-+
-+ if (alloc_funcs->is_valid) {
-+ /* release these */
-+
-+ if (alloc_funcs->step) {
-+ zval_ptr_dtor(&alloc_funcs->step);
-+ alloc_funcs->step = NULL;
-+ }
-+
-+ if (alloc_funcs->fini) {
-+ zval_ptr_dtor(&alloc_funcs->fini);
-+ alloc_funcs->fini = NULL;
-+ }
-+ }
-+
-+ ret = SKIP_REG;
-+ } else {
-+ /* add a new one */
-+ func_tmp.db = db;
-+
-+ ret = SUCCESS == zend_hash_update(&db->callbacks, hashkey, hashkeylen+1,
-+ (void*)&func_tmp, sizeof(func_tmp), (void**)&alloc_funcs) ? DO_REG : ERR;
-+ }
-+
-+ efree(hashkey);
-+
-+ MAKE_STD_ZVAL(alloc_funcs->step);
-+ *(alloc_funcs->step) = *step;
-+ zval_copy_ctor(alloc_funcs->step);
-+
-+ if (is_agg) {
-+ MAKE_STD_ZVAL(alloc_funcs->fini);
-+ *(alloc_funcs->fini) = *fini;
-+ zval_copy_ctor(alloc_funcs->fini);
-+ } else {
-+ alloc_funcs->fini = NULL;
-+ }
-+ alloc_funcs->is_valid = 1;
-+ *funcs = alloc_funcs;
-+
-+ return ret;
-+}
-+
-+
-+/* {{{ proto bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])
-+ Registers an aggregated function for queries*/
-+PHP_FUNCTION(sqlite_create_aggregate)
-+{
-+ char *funcname = NULL;
-+ long funcname_len;
-+ zval *zstep, *zfinal, *zdb;
-+ struct php_sqlite_db *db;
-+ struct php_sqlite_agg_functions *funcs;
-+ char *callable = NULL;
-+ long num_args = -1;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rszz|l", &zdb, &funcname, &funcname_len, &zstep, &zfinal, &num_args)) {
-+ return;
-+ }
-+ DB_FROM_ZVAL(db, &zdb);
-+
-+ if (!zend_is_callable(zstep, 0, &callable)) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "step function `%s' is not callable", callable);
-+ efree(callable);
-+ return;
-+ }
-+ efree(callable);
-+
-+ if (!zend_is_callable(zfinal, 0, &callable)) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "finalize function `%s' is not callable", callable);
-+ efree(callable);
-+ return;
-+ }
-+ efree(callable);
-+
-+ if (prep_callback_struct(db, 1, funcname, zstep, zfinal, &funcs) == DO_REG) {
-+ sqlite_create_aggregate(db->db, funcname, num_args,
-+ php_sqlite_agg_step_function_callback,
-+ php_sqlite_agg_fini_function_callback, funcs);
-+ }
-+
-+
-+}
-+/* }}} */
-+
-+/* {{{ proto bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])
-+ Registers a "regular" function for queries */
-+PHP_FUNCTION(sqlite_create_function)
-+{
-+ char *funcname = NULL;
-+ long funcname_len;
-+ zval *zcall, *zdb;
-+ struct php_sqlite_db *db;
-+ struct php_sqlite_agg_functions *funcs;
-+ char *callable = NULL;
-+ long num_args = -1;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsz|l", &zdb, &funcname, &funcname_len, &zcall, &num_args)) {
-+ return;
-+ }
-+ DB_FROM_ZVAL(db, &zdb);
-+
-+ if (!zend_is_callable(zcall, 0, &callable)) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "function `%s' is not callable", callable);
-+ efree(callable);
-+ return;
-+ }
-+ efree(callable);
-+
-+ if (prep_callback_struct(db, 0, funcname, zcall, NULL, &funcs) == DO_REG) {
-+ sqlite_create_function(db->db, funcname, num_args, php_sqlite_function_callback, funcs);
-+ }
-+}
-+/* }}} */
-+
-+/* {{{ proto string sqlite_udf_encode_binary(string data)
-+ Apply binary encoding (if required) to a string to return from an UDF */
-+PHP_FUNCTION(sqlite_udf_encode_binary)
-+{
-+ char *data = NULL;
-+ long datalen;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!", &data, &datalen)) {
-+ return;
-+ }
-+
-+ if (data == NULL) {
-+ RETURN_NULL();
-+ }
-+ if (datalen && (data[0] == '\x01' || memchr(data, '\0', datalen) != NULL)) {
-+ /* binary string */
-+ int enclen;
-+ char *ret;
-+
-+ ret = emalloc( 1 + ((256 * datalen + 1262) / 253) );
-+ ret[0] = '\x01';
-+ enclen = sqlite_encode_binary((const unsigned char*)data, datalen, ret+1);
-+ RETVAL_STRINGL(ret, enclen+1, 0);
-+ } else {
-+ RETVAL_STRINGL(data, datalen, 1);
-+ }
-+}
-+/* }}} */
-+
-+/* {{{ proto string sqlite_udf_decode_binary(string data)
-+ Decode binary encoding on a string parameter passed to an UDF */
-+PHP_FUNCTION(sqlite_udf_decode_binary)
-+{
-+ char *data = NULL;
-+ long datalen;
-+
-+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!", &data, &datalen)) {
-+ return;
-+ }
-+
-+ if (data == NULL) {
-+ RETURN_NULL();
-+ }
-+ if (datalen && data[0] == '\x01') {
-+ /* encoded string */
-+ int enclen;
-+ char *ret;
-+
-+ ret = emalloc(datalen);
-+ enclen = sqlite_decode_binary((const unsigned char*)data+1, ret);
-+ ret[enclen] = '\0';
-+ RETVAL_STRINGL(ret, enclen, 0);
-+ } else {
-+ RETVAL_STRINGL(data, datalen, 1);
-+ }
-+}
-+/* }}} */
-+
-+
-+/*
-+ * Local variables:
-+ * tab-width: 4
-+ * c-basic-offset: 4
-+ * End:
-+ * vim600: sw=4 ts=4 fdm=marker
-+ * vim<600: sw=4 ts=4
-+ */
-diff -ruN php-4.3.11-old/ext/sqlite/sqlite.dsp php-4.3.11-new/ext/sqlite/sqlite.dsp
---- php-4.3.11-old/ext/sqlite/sqlite.dsp 1970-01-01 01:00:00.000000000 +0100
-+++ php-4.3.11-new/ext/sqlite/sqlite.dsp 2003-06-16 16:13:58.000000000 +0200
-@@ -0,0 +1,331 @@
-+# Microsoft Developer Studio Project File - Name="sqlite" - Package Owner=<4>
-+# Microsoft Developer Studio Generated Build File, Format Version 6.00
-+# ** DO NOT EDIT **
-+
-+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-+
-+CFG=sqlite - Win32 Debug_TS
-+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-+!MESSAGE use the Export Makefile command and run
-+!MESSAGE
-+!MESSAGE NMAKE /f "sqlite.mak".
-+!MESSAGE
-+!MESSAGE You can specify a configuration when running NMAKE
-+!MESSAGE by defining the macro CFG on the command line. For example:
-+!MESSAGE
-+!MESSAGE NMAKE /f "sqlite.mak" CFG="sqlite - Win32 Debug_TS"
-+!MESSAGE
-+!MESSAGE Possible choices for configuration are:
-+!MESSAGE
-+!MESSAGE "sqlite - Win32 Release_TS" (based on "Win32 (x86) Dynamic-Link Library")
-+!MESSAGE "sqlite - Win32 Debug_TS" (based on "Win32 (x86) Dynamic-Link Library")
-+!MESSAGE
-+
-+# Begin Project
-+# PROP AllowPerConfigDependencies 0
-+# PROP Scc_ProjName ""
-+# PROP Scc_LocalPath ""
-+CPP=cl.exe
-+MTL=midl.exe
-+RSC=rc.exe
-+
-+!IF "$(CFG)" == "sqlite - Win32 Release_TS"
-+
-+# PROP BASE Use_MFC 0
-+# PROP BASE Use_Debug_Libraries 0
-+# PROP BASE Output_Dir "Release_TS"
-+# PROP BASE Intermediate_Dir "Release_TS"
-+# PROP BASE Ignore_Export_Lib 0
-+# PROP BASE Target_Dir ""
-+# PROP Use_MFC 0
-+# PROP Use_Debug_Libraries 0
-+# PROP Output_Dir "Release_TS"
-+# PROP Intermediate_Dir "Release_TS"
-+# PROP Ignore_Export_Lib 0
-+# PROP Target_Dir ""
-+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SQLITE_EXPORTS" /YX /FD /c
-+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\php4" /I "..\..\..\php4\main" /I "..\..\..\php4\Zend" /I "..\..\..\php4\TSRM" /I "..\..\..\php4\win32" /I "..\..\..\php_build" /D ZEND_DEBUG=0 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "COMPILE_DL_SQLITE" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_SQLITE=1 /D "PHP_SQLITE_EXPORTS" /FR /YX /FD /c
-+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-+# ADD BASE RSC /l 0x407 /d "NDEBUG"
-+# ADD RSC /l 0x407 /d "NDEBUG"
-+BSC32=bscmake.exe
-+# ADD BASE BSC32 /nologo
-+# ADD BSC32 /nologo
-+LINK32=link.exe
-+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-+# ADD LINK32 php4ts.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"..\..\Release_TS\php_sqlite.dll" /libpath:"..\..\..\php4\Release_TS" /libpath:"..\..\..\php4\Release_TS_Inline" /libpath:"..\..\..\php_build\release"
-+
-+!ELSEIF "$(CFG)" == "sqlite - Win32 Debug_TS"
-+
-+# PROP BASE Use_MFC 0
-+# PROP BASE Use_Debug_Libraries 1
-+# PROP BASE Output_Dir "Debug_TS"
-+# PROP BASE Intermediate_Dir "Debug_TS"
-+# PROP BASE Target_Dir ""
-+# PROP Use_MFC 0
-+# PROP Use_Debug_Libraries 1
-+# PROP Output_Dir "Debug_TS"
-+# PROP Intermediate_Dir "Debug_TS"
-+# PROP Ignore_Export_Lib 0
-+# PROP Target_Dir ""
-+# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SQLITE_EXPORTS" /YX /FD /GZ /c
-+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\php4" /I "..\..\..\php4\main" /I "..\..\..\php4\Zend" /I "..\..\..\php4\TSRM" /I "..\..\..\php4\win32" /I "..\..\..\php_build" /D ZEND_DEBUG=1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "COMPILE_DL_SQLITE" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_SQLITE=1 /D "PHP_SQLITE_EXPORTS" /YX /FD /GZ /c
-+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-+# ADD BASE RSC /l 0x407 /d "_DEBUG"
-+# ADD RSC /l 0x407 /d "_DEBUG"
-+BSC32=bscmake.exe
-+# ADD BASE BSC32 /nologo
-+# ADD BSC32 /nologo
-+LINK32=link.exe
-+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-+# ADD LINK32 php4ts_debug.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"..\..\Debug_TS\php_sqlite.dll" /pdbtype:sept /libpath:"..\..\..\php4\Debug_TS" /libpath:"..\..\..\php_build\release"
-+
-+!ENDIF
-+
-+# Begin Target
-+
-+# Name "sqlite - Win32 Release_TS"
-+# Name "sqlite - Win32 Debug_TS"
-+# Begin Group "Source Files"
-+
-+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-+# Begin Group "libsqlite"
-+
-+# PROP Default_Filter ""
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\attach.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\auth.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\btree.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\btree.h
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\btree_rb.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\build.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\config.h
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\copy.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\delete.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\encode.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\expr.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\func.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\hash.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\hash.h
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\insert.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\main.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\opcodes.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\opcodes.h
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\os.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\os.h
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\pager.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\pager.h
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\parse.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\parse.h
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\pragma.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\printf.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\random.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\select.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\sqlite.h
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\sqlite.w32.h
-+
-+!IF "$(CFG)" == "sqlite - Win32 Release_TS"
-+
-+# Begin Custom Build
-+InputDir=.\libsqlite\src
-+InputPath=.\libsqlite\src\sqlite.w32.h
-+
-+"$(InputDir)\sqlite.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-+ copy $(InputPath) $(InputDir)\sqlite.h
-+
-+# End Custom Build
-+
-+!ELSEIF "$(CFG)" == "sqlite - Win32 Debug_TS"
-+
-+# Begin Custom Build
-+InputDir=.\libsqlite\src
-+InputPath=.\libsqlite\src\sqlite.w32.h
-+
-+"$(InputDir)\sqlite.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-+ copy $(InputPath) $(InputDir)\sqlite.h
-+
-+# End Custom Build
-+
-+!ENDIF
-+
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\sqlite_config.w32.h
-+
-+!IF "$(CFG)" == "sqlite - Win32 Release_TS"
-+
-+# Begin Custom Build
-+InputDir=.\libsqlite\src
-+InputPath=.\libsqlite\src\sqlite_config.w32.h
-+
-+"$(InputDir)\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-+ copy $(InputPath) $(InputDir)\config.h
-+
-+# End Custom Build
-+
-+!ELSEIF "$(CFG)" == "sqlite - Win32 Debug_TS"
-+
-+# Begin Custom Build
-+InputDir=.\libsqlite\src
-+InputPath=.\libsqlite\src\sqlite_config.w32.h
-+
-+"$(InputDir)\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-+ copy $(InputPath) $(InputDir)\config.h
-+
-+# End Custom Build
-+
-+!ENDIF
-+
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\sqliteInt.h
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\table.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\tokenize.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\trigger.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\update.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\util.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\vacuum.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\vdbe.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\vdbe.h
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\libsqlite\src\where.c
-+# End Source File
-+# End Group
-+# Begin Source File
-+
-+SOURCE=.\php_sqlite.def
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\sqlite.c
-+# ADD CPP /I "libsqlite\src"
-+# End Source File
-+# End Group
-+# Begin Group "Header Files"
-+
-+# PROP Default_Filter "h;hpp;hxx;hm;inl"
-+# Begin Source File
-+
-+SOURCE=.\php_sqlite.h
-+# End Source File
-+# End Group
-+# End Target
-+# End Project
-diff -ruN php-4.3.11-old/ext/sqlite/sqlite.php php-4.3.11-new/ext/sqlite/sqlite.php
---- php-4.3.11-old/ext/sqlite/sqlite.php 1970-01-01 01:00:00.000000000 +0100
-+++ php-4.3.11-new/ext/sqlite/sqlite.php 2003-04-17 22:01:35.000000000 +0200
-@@ -0,0 +1,33 @@
-+<?php
-+if (!extension_loaded("sqlite")) {
-+ dl("sqlite.so");
-+}
-+
-+debug_zval_dump(sqlite_libversion());
-+debug_zval_dump(sqlite_libencoding());
-+
-+$s = sqlite_open("weztest.sqlite", 0666, $err);
-+
-+debug_zval_dump($err);
-+debug_zval_dump($s);
-+
-+$r = sqlite_query("create table foo (a INTEGER PRIMARY KEY, b INTEGER )", $s);
-+debug_zval_dump(sqlite_last_error($s));
-+debug_zval_dump(sqlite_error_string(sqlite_last_error($s)));
-+
-+$r = sqlite_query("select *, php('md5', sql) as o from sqlite_master", $s);
-+debug_zval_dump($r);
-+debug_zval_dump(sqlite_num_rows($r));
-+debug_zval_dump(sqlite_num_fields($r));
-+
-+for ($j = 0; $j < sqlite_num_fields($r); $j++) {
-+ echo "Field $j is " . sqlite_field_name($r, $j) . "\n";
-+}
-+
-+while ($row = sqlite_fetch_array($r, SQLITE_ASSOC)) {
-+ print_r($row);
-+}
-+
-+sqlite_close($s);
-+
-+?>
-diff -ruN php-4.3.11-old/generated_lists php-4.3.11-new/generated_lists
---- php-4.3.11-old/generated_lists 2005-03-30 16:35:19.000000000 +0200
-+++ php-4.3.11-new/generated_lists 2005-07-04 17:29:27.000000000 +0200
-@@ -1,3 +1,3 @@
- makefile_am_files = Zend/Makefile.am TSRM/Makefile.am
- config_h_files = Zend/acconfig.h TSRM/acconfig.h
--config_m4_files = Zend/Zend.m4 TSRM/tsrm.m4 TSRM/threads.m4 Zend/acinclude.m4 ext/bcmath/config.m4 ext/bz2/config.m4 ext/calendar/config.m4 ext/cpdf/config.m4 ext/crack/config.m4 ext/ctype/config.m4 ext/curl/config.m4 ext/cyrus/config.m4 ext/db/config.m4 ext/dba/config.m4 ext/dbase/config.m4 ext/dbx/config.m4 ext/dio/config.m4 ext/domxml/config.m4 ext/exif/config.m4 ext/fbsql/config.m4 ext/fdf/config.m4 ext/filepro/config.m4 ext/fribidi/config.m4 ext/ftp/config.m4 ext/gd/config.m4 ext/gettext/config.m4 ext/gmp/config.m4 ext/hwapi/config.m4 ext/hyperwave/config.m4 ext/iconv/config.m4 ext/imap/config.m4 ext/informix/config.m4 ext/ingres_ii/config.m4 ext/interbase/config.m4 ext/ircg/config.m4 ext/java/config.m4 ext/ldap/config.m4 ext/mbstring/config.m4 ext/mcal/config.m4 ext/mcrypt/config.m4 ext/mcve/config.m4 ext/mhash/config.m4 ext/mime_magic/config.m4 ext/ming/config.m4 ext/mnogosearch/config.m4 ext/msession/config.m4 ext/msql/config.m4 ext/mssql/config.m4 ext/mysql/config.m4 ext/ncurses/config.m4 ext/oci8/config.m4 ext/odbc/config.m4 ext/openssl/config0.m4 ext/oracle/config.m4 ext/overload/config.m4 ext/ovrimos/config.m4 ext/pcntl/config.m4 ext/pcre/config.m4 ext/pdf/config.m4 ext/pfpro/config.m4 ext/pgsql/config.m4 ext/posix/config.m4 ext/pspell/config.m4 ext/qtdom/config.m4 ext/readline/config.m4 ext/recode/config.m4 ext/session/config.m4 ext/shmop/config.m4 ext/snmp/config.m4 ext/sockets/config.m4 ext/standard/config.m4 ext/swf/config.m4 ext/sybase/config.m4 ext/sybase_ct/config.m4 ext/sysvmsg/config.m4 ext/sysvsem/config.m4 ext/sysvshm/config.m4 ext/tokenizer/config.m4 ext/wddx/config.m4 ext/xml/config.m4 ext/xmlrpc/config.m4 ext/xslt/config.m4 ext/yaz/config.m4 ext/yp/config.m4 ext/zip/config.m4 ext/zlib/config0.m4 sapi/aolserver/config.m4 sapi/apache/config.m4 sapi/apache2filter/config.m4 sapi/apache2handler/config.m4 sapi/caudium/config.m4 sapi/cli/config.m4 sapi/embed/config.m4 sapi/isapi/config.m4 sapi/nsapi/config.m4 sapi/phttpd/config.m4 sapi/pi3web/config.m4 sapi/roxen/config.m4 sapi/servlet/config.m4 sapi/thttpd/config.m4 sapi/tux/config.m4 sapi/webjames/config.m4
-+config_m4_files = Zend/Zend.m4 TSRM/tsrm.m4 TSRM/threads.m4 Zend/acinclude.m4 ext/bcmath/config.m4 ext/bz2/config.m4 ext/calendar/config.m4 ext/cpdf/config.m4 ext/crack/config.m4 ext/ctype/config.m4 ext/curl/config.m4 ext/cyrus/config.m4 ext/db/config.m4 ext/dba/config.m4 ext/dbase/config.m4 ext/dbx/config.m4 ext/dio/config.m4 ext/domxml/config.m4 ext/exif/config.m4 ext/fbsql/config.m4 ext/fdf/config.m4 ext/filepro/config.m4 ext/fribidi/config.m4 ext/ftp/config.m4 ext/gd/config.m4 ext/gettext/config.m4 ext/gmp/config.m4 ext/hwapi/config.m4 ext/hyperwave/config.m4 ext/iconv/config.m4 ext/imap/config.m4 ext/informix/config.m4 ext/ingres_ii/config.m4 ext/interbase/config.m4 ext/ircg/config.m4 ext/java/config.m4 ext/ldap/config.m4 ext/mbstring/config.m4 ext/mcal/config.m4 ext/mcrypt/config.m4 ext/mcve/config.m4 ext/mhash/config.m4 ext/mime_magic/config.m4 ext/ming/config.m4 ext/mnogosearch/config.m4 ext/msession/config.m4 ext/msql/config.m4 ext/mssql/config.m4 ext/mysql/config.m4 ext/ncurses/config.m4 ext/oci8/config.m4 ext/odbc/config.m4 ext/openssl/config0.m4 ext/oracle/config.m4 ext/overload/config.m4 ext/ovrimos/config.m4 ext/pcntl/config.m4 ext/pcre/config.m4 ext/pdf/config.m4 ext/pfpro/config.m4 ext/pgsql/config.m4 ext/posix/config.m4 ext/pspell/config.m4 ext/qtdom/config.m4 ext/readline/config.m4 ext/recode/config.m4 ext/session/config.m4 ext/shmop/config.m4 ext/snmp/config.m4 ext/sockets/config.m4 ext/sqlite/config.m4 ext/standard/config.m4 ext/swf/config.m4 ext/sybase/config.m4 ext/sybase_ct/config.m4 ext/sysvmsg/config.m4 ext/sysvsem/config.m4 ext/sysvshm/config.m4 ext/tokenizer/config.m4 ext/wddx/config.m4 ext/xml/config.m4 ext/xmlrpc/config.m4 ext/xslt/config.m4 ext/yaz/config.m4 ext/yp/config.m4 ext/zip/config.m4 ext/zlib/config0.m4 sapi/aolserver/config.m4 sapi/apache/config.m4 sapi/apache2filter/config.m4 sapi/apache2handler/config.m4 sapi/caudium/config.m4 sapi/cli/config.m4 sapi/embed/config.m4 sapi/isapi/config.m4 sapi/nsapi/config.m4 sapi/phttpd/config.m4 sapi/pi3web/config.m4 sapi/roxen/config.m4 sapi/servlet/config.m4 sapi/thttpd/config.m4 sapi/tux/config.m4 sapi/webjames/config.m4
-diff -ruN php-4.3.11-old/main/php_config.h.in php-4.3.11-new/main/php_config.h.in
---- php-4.3.11-old/main/php_config.h.in 2005-03-30 16:35:47.000000000 +0200
-+++ php-4.3.11-new/main/php_config.h.in 2005-07-04 17:29:44.000000000 +0200
-@@ -1,4 +1,4 @@
--/* main/php_config.h.in. Generated automatically from configure.in by autoheader. */
-+/* main/php_config.h.in. Generated automatically from configure.in by autoheader 2.13. */
- /* Leave this file alone */
- #define ZEND_API
- #define ZEND_DLEXPORT
-@@ -101,6 +101,9 @@
- /* The number of bytes in a char. */
- #undef SIZEOF_CHAR
-
-+/* The number of bytes in a char *. */
-+#undef SIZEOF_CHAR_P
-+
- /* The number of bytes in a int. */
- #undef SIZEOF_INT
-
-@@ -353,6 +356,9 @@
- /* Define if you have the mmap function. */
- #undef HAVE_MMAP
-
-+/* Define if you have the nanosleep function. */
-+#undef HAVE_NANOSLEEP
-+
- /* Define if you have the nl_langinfo function. */
- #undef HAVE_NL_LANGINFO
-
-@@ -803,6 +809,9 @@
- /* Define if you have the <termios.h> header file. */
- #undef HAVE_TERMIOS_H
-
-+/* Define if you have the <time.h> header file. */
-+#undef HAVE_TIME_H
-+
- /* Define if you have the <tuxmodule.h> header file. */
- #undef HAVE_TUXMODULE_H
-
-@@ -2302,6 +2311,24 @@
- #undef COMPILE_DL_SOCKETS
-
- /* */
-+#undef HAVE_SQLITELIB
-+
-+/* Whether to build sqlite as dynamic module */
-+#undef COMPILE_DL_SQLITE
-+
-+/* Whether to build sqlite as dynamic module */
-+#undef COMPILE_DL_SQLITE
-+
-+/* Size of a pointer */
-+#undef SQLITE_PTR_SZ
-+
-+/* if this is unix */
-+#undef OS_UNIX
-+
-+/* if this is windows */
-+#undef OS_WIN
-+
-+/* */
- #undef HAVE_CRYPT
-
- /* Whether the system supports standard DES salt */
diff --git a/openwrt/package/php4/patches/php4_configure.patch b/openwrt/package/php4/patches/php4_configure.patch
deleted file mode 100644
index 94bba0a368..0000000000
--- a/openwrt/package/php4/patches/php4_configure.patch
+++ /dev/null
@@ -1,83 +0,0 @@
---- php-4.3.11/configure 2005-03-30 16:35:34.000000000 +0200
-+++ php-4.3.11-patched/configure 2005-06-22 23:34:35.000000000 +0200
-@@ -12192,7 +12192,7 @@
- ac_libs=$LIBS
- LIBS="$LIBS -ldl"
- if test "$cross_compiling" = yes; then
-- found=no
-+ found=yes
- else
- cat > conftest.$ac_ext <<EOF
- #line 12199 "configure"
-@@ -14062,7 +14062,7 @@
-
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 14069 "configure"
-@@ -15077,7 +15077,7 @@
- if { (eval echo configure:15078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 15084 "configure"
-@@ -15574,7 +15574,7 @@
- rm -fr conftest*
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 15581 "configure"
-@@ -41304,7 +41304,7 @@
- echo $ac_n "checking if iconv supports errno""... $ac_c" 1>&6
- echo "configure:41306: checking if iconv supports errno" >&5
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 41311 "configure"
-@@ -43584,7 +43584,7 @@
- old_LIBS=$LIBS
- LIBS="$TST_LIBS $LIBS"
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 43591 "configure"
-@@ -43643,7 +43643,7 @@
- old_LIBS=$LIBS
- LIBS="$TST_LIBS $LIBS"
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 43650 "configure"
-@@ -89183,7 +89183,7 @@
- old_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$XSLT_DIR/include"
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 89190 "configure"
-@@ -98257,7 +98257,7 @@
- link_all_deplibs=$link_all_deplibs
-
- # Compile-time system search path for libraries
--sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-+sys_lib_search_path_spec=
-
- # Run-time system search path for libraries
- sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
diff --git a/openwrt/package/php4/patches/php4_dns_skipname.patch b/openwrt/package/php4/patches/php4_dns_skipname.patch
deleted file mode 100644
index 6df37a28ad..0000000000
--- a/openwrt/package/php4/patches/php4_dns_skipname.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- php-4.3.9.orig/ext/standard/dns.c 2003-09-01 16:37:46.000000000 -0600
-+++ php-4.3.9/ext/standard/dns.c 2004-11-30 23:53:55.000000000 -0700
-@@ -207,7 +207,7 @@
- }
- /* }}} */
-
--#if HAVE_RES_SEARCH && !(defined(__BEOS__)||defined(PHP_WIN32) || defined(NETWARE))
-+#if HAVE_RES_SEARCH && HAVE_DN_SKIPNAME && !(defined(__BEOS__)||defined(PHP_WIN32) || defined(NETWARE))
-
- /* {{{ proto int checkdnsrr(string host [, string type])
- Check DNS records corresponding to a given Internet host name or IP address */
-
---- php-4.3.9.orig/ext/standard/basic_functions.c 2004-07-30 10:52:35.000000000 -0600
-+++ php-4.3.9/ext/standard/basic_functions.c 2004-11-30 23:56:42.000000000 -0700
-@@ -447,7 +447,7 @@
- PHP_FE(gethostbyname, NULL)
- PHP_FE(gethostbynamel, NULL)
-
--#if HAVE_RES_SEARCH && !(defined(__BEOS__) || defined(PHP_WIN32) || defined(NETWARE))
-+#if HAVE_RES_SEARCH && HAVE_DN_SKIPNAME && !(defined(__BEOS__)||defined(PHP_WIN32) || defined(NETWARE))
- PHP_FE(checkdnsrr, NULL)
- PHP_FE(getmxrr,second_and_third_args_force_ref)
-#endif \ No newline at end of file
diff --git a/openwrt/package/php5/Config.in b/openwrt/package/php5/Config.in
deleted file mode 100644
index 862df99538..0000000000
--- a/openwrt/package/php5/Config.in
+++ /dev/null
@@ -1,140 +0,0 @@
-menu "php5.............................. PHP5 Hypertext preprocessor"
-
-config BR2_COMPILE_PHP5
- tristate
- default n
- depends BR2_PACKAGE_PHP5_CLI || BR2_PACKAGE_PHP5_CGI || BR2_PACKAGE_PHP5_FASTCGI
-
-comment "Server API ---"
-
-config BR2_PACKAGE_PHP5_CLI
- prompt "php5-cli.......................... PHP5 CLI (Command Line Interface)"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- PHP is a widely-used general-purpose scripting language that is especially
- suited for Web development and can be embedded into HTML.
-
- http://www.php.net/
-
-config BR2_PACKAGE_PHP5_CGI
- prompt "php5-cgi.......................... PHP5 built for CGI"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- PHP is a widely-used general-purpose scripting language that is especially
- suited for Web development and can be embedded into HTML.
-
- http://www.php.net/
-
-config BR2_PACKAGE_PHP5_FASTCGI
- prompt "php5-fastcgi...................... PHP5 built for FastCGI"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- PHP is a widely-used general-purpose scripting language that is especially
- suited for Web development and can be embedded into HTML.
-
- http://www.php.net/
-
-comment "Extensions ---"
-
-config BR2_PACKAGE_PHP5_MOD_CURL
- prompt "php5-mod-curl..................... cURL module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBCURL
-
-config BR2_PACKAGE_PHP5_MOD_FTP
- prompt "php5-mod-ftp...................... FTP module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
-
-config BR2_PACKAGE_PHP5_MOD_GD
- prompt "php5-mod-gd....................... GD graphics library module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBGD
- select BR2_PACKAGE_LIBPNG
-
-config BR2_PACKAGE_PHP5_MOD_GMP
- prompt "php5-mod-gmp...................... GMP module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBGMP
-
-config BR2_PACKAGE_PHP5_MOD_LDAP
- prompt "php5-mod-ldap..................... LDAP module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBOPENLDAP
-
-config BR2_PACKAGE_PHP5_MOD_MYSQL
- prompt "php5-mod-mysql.................... MySQL module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBMYSQLCLIENT
-
-config BR2_PACKAGE_PHP5_MOD_OPENSSL
- prompt "php5-mod-openssl.................. OpenSSL module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBOPENSSL
-
-config BR2_PACKAGE_PHP5_MOD_PCRE
- prompt "php5-mod-pcre..................... PCRE module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBPCRE
-
-config BR2_PACKAGE_PHP5_MOD_PGSQL
- prompt "php5-mod-pgsql.................... PostgreSQL module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBPQ
-
-config BR2_PACKAGE_PHP5_MOD_SESSION
- prompt "php5-mod-session.................. Sessions module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
-
-config BR2_PACKAGE_PHP5_MOD_SQLITE
- prompt "php5-mod-sqlite................... SQLite module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBSQLITE2
-
-config BR2_PACKAGE_PHP5_MOD_SOCKETS
- prompt "php5-mod-sockets.................. Sockets module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
-
-config BR2_PACKAGE_PHP5_MOD_XML
- prompt "php5-mod-xml...................... XML module"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_PHP5
- select BR2_PACKAGE_LIBEXPAT
-
-endmenu
diff --git a/openwrt/package/php5/Makefile b/openwrt/package/php5/Makefile
deleted file mode 100644
index 176654472f..0000000000
--- a/openwrt/package/php5/Makefile
+++ /dev/null
@@ -1,291 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=php
-PKG_VERSION:=5.0.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=b5d4ca75bbb11ee5b830fa67213d9f7f
-
-PKG_SOURCE_URL:=http://fr.php.net/distributions/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-define PKG_mod_template
-
-$$(IPKG_$(1)):
- install -d -m0755 $$(IDIR_$(1))/usr/lib/php
- install -m0755 $(PKG_BUILD_DIR)/modules/$(2).so $$(IDIR_$(1))/usr/lib/php
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-PKG_CONFIGURE_OPTS:= \
- --enable-shared \
- --disable-static \
- --disable-rpath \
- --disable-debug \
- --without-pear \
- --disable-spl \
- \
- --with-config-file-path=/etc \
- --disable-ipv6 \
- --enable-magic-quotes \
- --enable-memory-limit \
- --disable-short-tags \
- \
- --disable-ctype \
- --disable-dom \
- --enable-ftp=shared \
- --without-gettext \
- --without-iconv \
- --disable-libxml \
- --without-libxml-dir \
- --disable-mbstring \
- --disable-mbregex \
- --with-openssl=shared,"$(STAGING_DIR)/usr" \
- --with-kerberos=no \
- --with-openssl-dir="$(STAGING_DIR)/usr" \
- --enable-session=shared \
- --disable-simplexml \
- --disable-soap \
- --enable-sockets=shared \
- --disable-tokenizer \
- --with-zlib="$(STAGING_DIR)/usr" \
- --with-zlib-dir="$(STAGING_DIR)/usr" \
-
-ifneq ($(BR2_PACKAGE_PHP5_MOD_CURL),)
-PKG_CONFIGURE_OPTS+= --with-curl=shared,"$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-curl
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_GD),)
-PKG_CONFIGURE_OPTS+= --with-gd=shared,"$(STAGING_DIR)/usr" \
- --without-freetype-dir \
- --with-jpeg-dir="$(STAGING_DIR)/usr" \
- --with-png-dir="$(STAGING_DIR)/usr" \
- --without-xpm-dir \
- --without-ttf \
- --without-t1lib \
- --enable-gd-native-ttf \
- --disable-gd-jis-conv
-else
-PKG_CONFIGURE_OPTS+= --without-gd
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_GMP),)
-PKG_CONFIGURE_OPTS+= --with-gmp=shared,"$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-gmp
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_LDAP),)
-PKG_CONFIGURE_OPTS+= --with-ldap=shared,"$(STAGING_DIR)/usr" \
- --with-ldap-sasl="$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-ldap
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_MYSQL),)
-PKG_CONFIGURE_OPTS+= --with-mysql=shared,"$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-mysql
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_PCRE),)
-PKG_CONFIGURE_OPTS+= --with-pcre-regex=shared,"$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-pcre-regex
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_PGSQL),)
-PKG_CONFIGURE_OPTS+= --with-pgsql=shared,"$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-pgsql
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_SQLITE),)
-PKG_CONFIGURE_OPTS+= --with-sqlite=shared,"$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --without-sqlite
-endif
-ifneq ($(BR2_PACKAGE_PHP5_MOD_XML),)
-PKG_CONFIGURE_OPTS+= --enable-xml=shared,"$(STAGING_DIR)/usr" \
- --with-libexpat-dir="$(STAGING_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --disable-xml
-endif
-
-$(eval $(call PKG_template,PHP5_CLI,php5-cli,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_CGI,php5-cgi,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_FASTCGI,php5-fastcgi,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_template,PHP5_MOD_CURL,php5-mod-curl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_MOD_FTP,php5-mod-ftp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_MOD_GD,php5-mod-gd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_MOD_GMP,php5-mod-gmp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_MOD_LDAP,php5-mod-ldap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_MOD_MYSQL,php5-mod-mysql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_MOD_OPENSSL,php5-mod-openssl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_MOD_PCRE,php5-mod-pcre,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_MOD_PGSQL,php5-mod-pgsql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_MOD_SESSION,php5-mod-session,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_MOD_SOCKETS,php5-mod-sockets,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_MOD_SQLITE,php5-mod-sqlite,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PHP5_MOD_XML,php5-mod-xml,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_mod_template,PHP5_MOD_CURL,curl))
-$(eval $(call PKG_mod_template,PHP5_MOD_FTP,ftp))
-$(eval $(call PKG_mod_template,PHP5_MOD_GD,gd))
-$(eval $(call PKG_mod_template,PHP5_MOD_GMP,gmp))
-$(eval $(call PKG_mod_template,PHP5_MOD_LDAP,ldap))
-$(eval $(call PKG_mod_template,PHP5_MOD_MYSQL,mysql))
-$(eval $(call PKG_mod_template,PHP5_MOD_OPENSSL,openssl))
-$(eval $(call PKG_mod_template,PHP5_MOD_PCRE,pcre))
-$(eval $(call PKG_mod_template,PHP5_MOD_PGSQL,pgsql))
-$(eval $(call PKG_mod_template,PHP5_MOD_SESSION,session))
-$(eval $(call PKG_mod_template,PHP5_MOD_SOCKETS,sockets))
-$(eval $(call PKG_mod_template,PHP5_MOD_SQLITE,sqlite))
-$(eval $(call PKG_mod_template,PHP5_MOD_XML,xml))
-
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- LIBS="-lcrypto -lssl" \
- php_cv_cc_rpath="no" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- $(PKG_CONFIGURE_OPTS) \
- --enable-cli \
- --disable-cgi \
- --disable-fastcgi \
- --enable-force-cgi-redirect \
- --enable-discard-path \
- );
- $(MAKE) -C $(PKG_BUILD_DIR)
- mv $(PKG_BUILD_DIR)/sapi/cli/php $(PKG_BUILD_DIR)/php-cli
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- LIBS="-lcrypto -lssl" \
- php_cv_cc_rpath="no" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- $(PKG_CONFIGURE_OPTS) \
- --disable-cli \
- --enable-cgi \
- --disable-fastcgi \
- --enable-force-cgi-redirect \
- --enable-discard-path \
- );
- $(MAKE) -C $(PKG_BUILD_DIR)
- mv $(PKG_BUILD_DIR)/sapi/cgi/php $(PKG_BUILD_DIR)/php-cgi
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- LIBS="-lcrypto -lssl" \
- php_cv_cc_rpath="no" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/sbin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- $(PKG_CONFIGURE_OPTS) \
- --disable-cli \
- --enable-cgi \
- --enable-fastcgi \
- --enable-force-cgi-redirect \
- --enable-discard-path \
- );
- $(MAKE) -C $(PKG_BUILD_DIR)
- mv $(PKG_BUILD_DIR)/sapi/cgi/php $(PKG_BUILD_DIR)/php-fastcgi
- touch $@
-
-$(IPKG_PHP5_CLI):
- install -m0755 -d $(IDIR_PHP5_CLI)/etc
- install -m0644 ./files/php.ini $(IDIR_PHP5_CLI)/etc/
- install -m0755 -d $(IDIR_PHP5_CLI)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/php-cli $(IDIR_PHP5_CLI)/usr/bin/php
- $(RSTRIP) $(IDIR_PHP5_CLI)
- $(IPKG_BUILD) $(IDIR_PHP5_CLI) $(PACKAGE_DIR)
-
-$(IPKG_PHP5_CGI):
- install -m0755 -d $(IDIR_PHP5_CGI)/etc
- install -m0644 ./files/php.ini $(IDIR_PHP5_CGI)/etc/
- install -m0755 -d $(IDIR_PHP5_CGI)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/php-cgi $(IDIR_PHP5_CGI)/usr/bin/php
- $(RSTRIP) $(IDIR_PHP5_CGI)
- $(IPKG_BUILD) $(IDIR_PHP5_CGI) $(PACKAGE_DIR)
-
-$(IPKG_PHP5_FASTCGI):
- install -m0755 -d $(IDIR_PHP5_FASTCGI)/etc
- install -m0644 ./files/php.ini $(IDIR_PHP5_FASTCGI)/etc/
- install -m0755 -d $(IDIR_PHP5_FASTCGI)/etc/init.d
- install -m0755 ./files/php.init $(IDIR_PHP5_FASTCGI)/etc/init.d/php
- install -m0755 -d $(IDIR_PHP5_FASTCGI)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/php-fastcgi $(IDIR_PHP5_FASTCGI)/usr/sbin/php
- $(RSTRIP) $(IDIR_PHP5_FASTCGI)
- $(IPKG_BUILD) $(IDIR_PHP5_FASTCGI) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/php5/files/php.ini b/openwrt/package/php5/files/php.ini
deleted file mode 100644
index ae16d0b617..0000000000
--- a/openwrt/package/php5/files/php.ini
+++ /dev/null
@@ -1,561 +0,0 @@
-[PHP]
-
-cgi.fix_pathinfo=1
-
-zend.ze1_compatibility_mode = Off
-
-;short_open_tag = Off
-asp_tags = Off
-precision = 12
-y2k_compliance = On
-output_buffering = Off
-
-zlib.output_compression = Off
-;zlib.output_handler =
-implicit_flush = Off
-
-unserialize_callback_func=
-serialize_precision = 100
-
-allow_call_time_pass_reference = On
-
-safe_mode = Off
-
-safe_mode_gid = Off
-
-safe_mode_include_dir =
-
-safe_mode_exec_dir =
-
-safe_mode_allowed_env_vars = PHP_
-
-safe_mode_protected_env_vars = LD_LIBRARY_PATH
-
-;open_basedir =
-
-disable_functions =
-
-disable_classes =
-
-; Colors for Syntax Highlighting mode. Anything that's acceptable in
-; <span style="color: ???????"> would work.
-;highlight.string = #DD0000
-;highlight.comment = #FF9900
-;highlight.keyword = #007700
-;highlight.bg = #FFFFFF
-;highlight.default = #0000BB
-;highlight.html = #000000
-
-expose_php = On
-
-
-;;;;;;;;;;;;;;;;;;;
-; Resource Limits ;
-;;;;;;;;;;;;;;;;;;;
-
-max_execution_time = 30 ; Maximum execution time of each script, in seconds
-max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
-memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Error handling and logging ;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-; error_reporting is a bit-field. Or each number up to get desired error
-; reporting level
-; E_ALL - All errors and warnings (doesn't include E_STRICT)
-; E_ERROR - fatal run-time errors
-; E_WARNING - run-time warnings (non-fatal errors)
-; E_PARSE - compile-time parse errors
-; E_NOTICE - run-time notices (these are warnings which often result
-; from a bug in your code, but it's possible that it was
-; intentional (e.g., using an uninitialized variable and
-; relying on the fact it's automatically initialized to an
-; empty string)
-; E_STRICT - run-time notices, enable to have PHP suggest changes
-; to your code which will ensure the best interoperability
-; and forward compatibility of your code
-; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
-; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
-; initial startup
-; E_COMPILE_ERROR - fatal compile-time errors
-; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
-; E_USER_ERROR - user-generated error message
-; E_USER_WARNING - user-generated warning message
-; E_USER_NOTICE - user-generated notice message
-;
-; Examples:
-;
-; - Show all errors, except for notices and coding standards warnings
-;
-;error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
-;
-; - Show all errors, except for notices
-;
-;error_reporting = E_ALL & ~E_NOTICE
-;
-; - Show only errors
-;
-;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
-;
-; - Show all errors except for notices and coding standards warnings
-;
-error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
-
-; Print out errors (as a part of the output). For production web sites,
-; you're strongly encouraged to turn this feature off, and use error logging
-; instead (see below). Keeping display_errors enabled on a production web site
-; may reveal security information to end users, such as file paths on your Web
-; server, your database schema or other information.
-display_errors = On
-
-; Even when display_errors is on, errors that occur during PHP's startup
-; sequence are not displayed. It's strongly recommended to keep
-; display_startup_errors off, except for when debugging.
-display_startup_errors = Off
-
-; Log errors into a log file (server-specific log, stderr, or error_log (below))
-; As stated above, you're strongly advised to use error logging in place of
-; error displaying on production web sites.
-log_errors = Off
-
-; Set maximum length of log_errors. In error_log information about the source is
-; added. The default is 1024 and 0 allows to not apply any maximum length at all.
-log_errors_max_len = 1024
-
-; Do not log repeated messages. Repeated errors must occur in same file on same
-; line until ignore_repeated_source is set true.
-ignore_repeated_errors = Off
-
-; Ignore source of message when ignoring repeated messages. When this setting
-; is On you will not log errors with repeated messages from different files or
-; sourcelines.
-ignore_repeated_source = Off
-
-; If this parameter is set to Off, then memory leaks will not be shown (on
-; stdout or in the log). This has only effect in a debug compile, and if
-; error reporting includes E_WARNING in the allowed list
-report_memleaks = On
-
-; Store the last error/warning message in $php_errormsg (boolean).
-track_errors = Off
-
-; Disable the inclusion of HTML tags in error messages.
-; Note: Never use this feature for production boxes.
-;html_errors = Off
-
-; If html_errors is set On PHP produces clickable error messages that direct
-; to a page describing the error or function causing the error in detail.
-; You can download a copy of the PHP manual from http://www.php.net/docs.php
-; and change docref_root to the base URL of your local copy including the
-; leading '/'. You must also specify the file extension being used including
-; the dot.
-; Note: Never use this feature for production boxes.
-;docref_root = "/phpmanual/"
-;docref_ext = .html
-
-; String to output before an error message.
-;error_prepend_string = "<font color=ff0000>"
-
-; String to output after an error message.
-;error_append_string = "</font>"
-
-; Log errors to specified file.
-;error_log = filename
-
-; Log errors to syslog (Event Log on NT, not valid in Windows 95).
-;error_log = syslog
-
-
-;;;;;;;;;;;;;;;;;
-; Data Handling ;
-;;;;;;;;;;;;;;;;;
-;
-; Note - track_vars is ALWAYS enabled as of PHP 4.0.3
-
-; The separator used in PHP generated URLs to separate arguments.
-; Default is "&".
-;arg_separator.output = "&amp;"
-
-; List of separator(s) used by PHP to parse input URLs into variables.
-; Default is "&".
-; NOTE: Every character in this directive is considered as separator!
-;arg_separator.input = ";&"
-
-; This directive describes the order in which PHP registers GET, POST, Cookie,
-; Environment and Built-in variables (G, P, C, E & S respectively, often
-; referred to as EGPCS or GPC). Registration is done from left to right, newer
-; values override older values.
-variables_order = "EGPCS"
-
-; Whether or not to register the EGPCS variables as global variables. You may
-; want to turn this off if you don't want to clutter your scripts' global scope
-; with user data. This makes most sense when coupled with track_vars - in which
-; case you can access all of the GPC variables through the $HTTP_*_VARS[],
-; variables.
-;
-; You should do your best to write your scripts so that they do not require
-; register_globals to be on; Using form variables as globals can easily lead
-; to possible security problems, if the code is not very well thought of.
-register_globals = Off
-
-; Whether or not to register the old-style input arrays, HTTP_GET_VARS
-; and friends. If you're not using them, it's recommended to turn them off,
-; for performance reasons.
-register_long_arrays = On
-
-; This directive tells PHP whether to declare the argv&argc variables (that
-; would contain the GET information). If you don't use these variables, you
-; should turn it off for increased performance.
-register_argc_argv = On
-
-; Maximum size of POST data that PHP will accept.
-post_max_size = 8M
-
-; Magic quotes
-;
-
-; Magic quotes for incoming GET/POST/Cookie data.
-magic_quotes_gpc = On
-
-; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
-magic_quotes_runtime = Off
-
-; Use Sybase-style magic quotes (escape ' with '' instead of \').
-magic_quotes_sybase = Off
-
-; Automatically add files before or after any PHP document.
-auto_prepend_file =
-auto_append_file =
-
-; As of 4.0b4, PHP always outputs a character encoding by default in
-; the Content-type: header. To disable sending of the charset, simply
-; set it to be empty.
-;
-; PHP's built-in default is text/html
-default_mimetype = "text/html"
-;default_charset = "iso-8859-1"
-
-; Always populate the $HTTP_RAW_POST_DATA variable.
-;always_populate_raw_post_data = On
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;
-; Paths and Directories ;
-;;;;;;;;;;;;;;;;;;;;;;;;;
-
-; UNIX: "/path1:/path2"
-;include_path = ".:/php/includes"
-;
-; Windows: "\path1;\path2"
-;include_path = ".;c:\php\includes"
-
-; The root of the PHP pages, used only if nonempty.
-; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
-; if you are running php as a CGI under any web server (other than IIS)
-; see documentation for security issues. The alternate is to use the
-; cgi.force_redirect configuration below
-doc_root = /www
-
-; The directory under which PHP opens the script using /~username used only
-; if nonempty.
-user_dir =
-
-; Directory in which the loadable extensions (modules) reside.
-extension_dir = "/usr/lib/php"
-
-; Whether or not to enable the dl() function. The dl() function does NOT work
-; properly in multithreaded servers, such as IIS or Zeus, and is automatically
-; disabled on them.
-enable_dl = On
-
-; cgi.force_redirect is necessary to provide security running PHP as a CGI under
-; most web servers. Left undefined, PHP turns this on by default. You can
-; turn it off here AT YOUR OWN RISK
-; **You CAN safely turn this off for IIS, in fact, you MUST.**
-; cgi.force_redirect = 1
-
-; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
-; every request.
-; cgi.nph = 1
-
-; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
-; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
-; will look for to know it is OK to continue execution. Setting this variable MAY
-; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
-; cgi.redirect_status_env = ;
-
-; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
-; security tokens of the calling client. This allows IIS to define the
-; security context that the request runs under. mod_fastcgi under Apache
-; does not currently support this feature (03/17/2002)
-; Set to 1 if running under IIS. Default is zero.
-; fastcgi.impersonate = 1;
-
-; cgi.rfc2616_headers configuration option tells PHP what type of headers to
-; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
-; is supported by Apache. When this option is set to 1 PHP will send
-; RFC2616 compliant header.
-; Default is zero.
-;cgi.rfc2616_headers = 0
-
-
-;;;;;;;;;;;;;;;;
-; File Uploads ;
-;;;;;;;;;;;;;;;;
-
-; Whether to allow HTTP file uploads.
-file_uploads = On
-
-; Temporary directory for HTTP uploaded files (will use system default if not
-; specified).
-upload_tmp_dir = /tmp
-
-; Maximum allowed size for uploaded files.
-upload_max_filesize = 2M
-
-
-;;;;;;;;;;;;;;;;;;
-; Fopen wrappers ;
-;;;;;;;;;;;;;;;;;;
-
-; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
-allow_url_fopen = On
-
-; Define the anonymous ftp password (your email address)
-;from="john@doe.com"
-
-; Define the User-Agent string
-; user_agent="PHP"
-
-; Default timeout for socket based streams (seconds)
-default_socket_timeout = 60
-
-; If your scripts have to deal with files from Macintosh systems,
-; or you are running on a Mac and need to deal with files from
-; unix or win32 systems, setting this flag will cause PHP to
-; automatically detect the EOL character in those files so that
-; fgets() and file() will work regardless of the source of the file.
-; auto_detect_line_endings = Off
-
-
-;;;;;;;;;;;;;;;;;;;;;;
-; Dynamic Extensions ;
-;;;;;;;;;;;;;;;;;;;;;;
-;
-; If you wish to have an extension loaded automatically, use the following
-; syntax:
-;
-; extension=modulename.extension
-;
-; For example, on Windows:
-;
-; extension=msql.dll
-;
-; ... or under UNIX:
-;
-; extension=msql.so
-;
-; Note that it should be the name of the module only; no directory information
-; needs to go here. Specify the location of the extension with the
-; extension_dir directive above.
-
-
-;Windows Extensions
-;Note that ODBC support is built in, so no dll is needed for it.
-;
-
-;extension=ftp.so
-;extension=gd.so
-;extension=mysql.so
-;extension=pcre.so
-;extension=session.so
-;extension=sockets.so
-;extension=xml.so
-
-
-
-
-;;;;;;;;;;;;;;;;;;;
-; Module Settings ;
-;;;;;;;;;;;;;;;;;;;
-
-[SQL]
-sql.safe_mode = Off
-
-[Session]
-; Handler used to store/retrieve data.
-session.save_handler = files
-
-; Argument passed to save_handler. In the case of files, this is the path
-; where data files are stored. Note: Windows users have to change this
-; variable in order to use PHP's session functions.
-;
-; As of PHP 4.0.1, you can define the path as:
-;
-; session.save_path = "N;/path"
-;
-; where N is an integer. Instead of storing all the session files in
-; /path, what this will do is use subdirectories N-levels deep, and
-; store the session data in those directories. This is useful if you
-; or your OS have problems with lots of files in one directory, and is
-; a more efficient layout for servers that handle lots of sessions.
-;
-; NOTE 1: PHP will not create this directory structure automatically.
-; You can use the script in the ext/session dir for that purpose.
-; NOTE 2: See the section on garbage collection below if you choose to
-; use subdirectories for session storage
-;
-; The file storage module creates files using mode 600 by default.
-; You can change that by using
-;
-; session.save_path = "N;MODE;/path"
-;
-; where MODE is the octal representation of the mode. Note that this
-; does not overwrite the process's umask.
-session.save_path = "/tmp"
-
-; Whether to use cookies.
-session.use_cookies = 1
-
-; This option enables administrators to make their users invulnerable to
-; attacks which involve passing session ids in URLs; defaults to 0.
-; session.use_only_cookies = 1
-
-; Name of the session (used as cookie name).
-session.name = PHPSESSID
-
-; Initialize session on request startup.
-session.auto_start = 0
-
-; Lifetime in seconds of cookie or, if 0, until browser is restarted.
-session.cookie_lifetime = 0
-
-; The path for which the cookie is valid.
-session.cookie_path = /
-
-; The domain for which the cookie is valid.
-session.cookie_domain =
-
-; Handler used to serialize data. php is the standard serializer of PHP.
-session.serialize_handler = php
-
-; Define the probability that the 'garbage collection' process is started
-; on every session initialization.
-; The probability is calculated by using gc_probability/gc_divisor,
-; e.g. 1/100 means there is a 1% chance that the GC process starts
-; on each request.
-
-session.gc_probability = 1
-session.gc_divisor = 100
-
-; After this number of seconds, stored data will be seen as 'garbage' and
-; cleaned up by the garbage collection process.
-session.gc_maxlifetime = 1440
-
-; NOTE: If you are using the subdirectory option for storing session files
-; (see session.save_path above), then garbage collection does *not*
-; happen automatically. You will need to do your own garbage
-; collection through a shell script, cron entry, or some other method.
-; For example, the following script would is the equivalent of
-; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
-; cd /path/to/sessions; find -cmin +24 | xargs rm
-
-; PHP 4.2 and less have an undocumented feature/bug that allows you to
-; to initialize a session variable in the global scope, albeit register_globals
-; is disabled. PHP 4.3 and later will warn you, if this feature is used.
-; You can disable the feature and the warning separately. At this time,
-; the warning is only displayed, if bug_compat_42 is enabled.
-
-session.bug_compat_42 = 1
-session.bug_compat_warn = 1
-
-; Check HTTP Referer to invalidate externally stored URLs containing ids.
-; HTTP_REFERER has to contain this substring for the session to be
-; considered as valid.
-session.referer_check =
-
-; How many bytes to read from the file.
-session.entropy_length = 0
-
-; Specified here to create the session id.
-session.entropy_file =
-
-;session.entropy_length = 16
-
-;session.entropy_file = /dev/urandom
-
-; Set to {nocache,private,public,} to determine HTTP caching aspects
-; or leave this empty to avoid sending anti-caching headers.
-session.cache_limiter = nocache
-
-; Document expires after n minutes.
-session.cache_expire = 180
-
-; trans sid support is disabled by default.
-; Use of trans sid may risk your users security.
-; Use this option with caution.
-; - User may send URL contains active session ID
-; to other person via. email/irc/etc.
-; - URL that contains active session ID may be stored
-; in publically accessible computer.
-; - User may access your site with the same session ID
-; always using URL stored in browser's history or bookmarks.
-session.use_trans_sid = 0
-
-; Select a hash function
-; 0: MD5 (128 bits)
-; 1: SHA-1 (160 bits)
-session.hash_function = 0
-
-; Define how many bits are stored in each character when converting
-; the binary hash data to something readable.
-;
-; 4 bits: 0-9, a-f
-; 5 bits: 0-9, a-v
-; 6 bits: 0-9, a-z, A-Z, "-", ","
-session.hash_bits_per_character = 4
-
-; The URL rewriter will look for URLs in a defined set of HTML tags.
-; form/fieldset are special; if you include them here, the rewriter will
-; add a hidden <input> field with the info which is otherwise appended
-; to URLs. If you want XHTML conformity, remove the form entry.
-; Note that all valid entries require a "=", even if no value follows.
-url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
-
-
-[Assertion]
-; Assert(expr); active by default.
-;assert.active = On
-
-; Issue a PHP warning for each failed assertion.
-;assert.warning = On
-
-; Don't bail out by default.
-;assert.bail = Off
-
-; User-function to be called if an assertion fails.
-;assert.callback = 0
-
-; Eval the expression with current error_reporting(). Set to true if you want
-; error_reporting(0) around the eval().
-;assert.quiet_eval = 0
-
-
-
-
-
-[exif]
-; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
-; With mbstring support this will automatically be converted into the encoding
-; given by corresponding encode setting. When empty mbstring.internal_encoding
-; is used. For the decode settings you can distinguish between motorola and
-; intel byte order. A decode setting cannot be empty.
-;exif.encode_unicode = ISO-8859-15
-;exif.decode_unicode_motorola = UCS-2BE
-;exif.decode_unicode_intel = UCS-2LE
-;exif.encode_jis =
-;exif.decode_jis_motorola = JIS
-;exif.decode_jis_intel = JIS
-
diff --git a/openwrt/package/php5/files/php.init b/openwrt/package/php5/files/php.init
deleted file mode 100644
index b29387bd74..0000000000
--- a/openwrt/package/php5/files/php.init
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-export PHP_FCGI_CHILDREN=''
-PORT=1026
-BIN=/usr/sbin/php
-
-case $1 in
- start)
- $BIN -b $PORT &
- ;;
- stop)
- kill `pidof php`
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/php5/ipkg/php5-cgi.conffiles b/openwrt/package/php5/ipkg/php5-cgi.conffiles
deleted file mode 100644
index f1b6b5fc94..0000000000
--- a/openwrt/package/php5/ipkg/php5-cgi.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/php.ini
diff --git a/openwrt/package/php5/ipkg/php5-cgi.control b/openwrt/package/php5/ipkg/php5-cgi.control
deleted file mode 100644
index a28d4da767..0000000000
--- a/openwrt/package/php5/ipkg/php5-cgi.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: php5-cgi
-Priority: optional
-Section: net
-Provides: php5
-Depends: libopenssl, zlib
-Description: PHP5 compiled as for CGI
diff --git a/openwrt/package/php5/ipkg/php5-cli.conffiles b/openwrt/package/php5/ipkg/php5-cli.conffiles
deleted file mode 100644
index f1b6b5fc94..0000000000
--- a/openwrt/package/php5/ipkg/php5-cli.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/php.ini
diff --git a/openwrt/package/php5/ipkg/php5-cli.control b/openwrt/package/php5/ipkg/php5-cli.control
deleted file mode 100644
index 1c18c241e3..0000000000
--- a/openwrt/package/php5/ipkg/php5-cli.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: php5-cli
-Priority: optional
-Section: net
-Provides: php5
-Depends: libopenssl, zlib
-Description: PHP5 CLI (Command Line Interface)
diff --git a/openwrt/package/php5/ipkg/php5-fastcgi.conffiles b/openwrt/package/php5/ipkg/php5-fastcgi.conffiles
deleted file mode 100644
index 6d0835326c..0000000000
--- a/openwrt/package/php5/ipkg/php5-fastcgi.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/php.ini
-/etc/init.d/php
diff --git a/openwrt/package/php5/ipkg/php5-fastcgi.control b/openwrt/package/php5/ipkg/php5-fastcgi.control
deleted file mode 100644
index d2cc4372f2..0000000000
--- a/openwrt/package/php5/ipkg/php5-fastcgi.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: php5-fastcgi
-Priority: optional
-Section: net
-Provides: php5
-Depends: libopenssl, zlib
-Description: PHP5 compiled for FastCGI (for use with libhttpd-fastcgi)
diff --git a/openwrt/package/php5/ipkg/php5-mod-curl.control b/openwrt/package/php5/ipkg/php5-mod-curl.control
deleted file mode 100644
index 421490c8e6..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-curl.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-curl
-Priority: optional
-Section: net
-Depends: php5, libcurl
-Description: cURL module for PHP5
diff --git a/openwrt/package/php5/ipkg/php5-mod-ftp.control b/openwrt/package/php5/ipkg/php5-mod-ftp.control
deleted file mode 100644
index a8f4eda4b0..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-ftp.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-ftp
-Priority: optional
-Section: net
-Depends: php5
-Description: FTP module for PHP5
diff --git a/openwrt/package/php5/ipkg/php5-mod-gd.control b/openwrt/package/php5/ipkg/php5-mod-gd.control
deleted file mode 100644
index 7558408713..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-gd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-gd
-Priority: optional
-Section: net
-Depends: php5, libgd, libpng
-Description: GD module for PHP5
diff --git a/openwrt/package/php5/ipkg/php5-mod-gmp.control b/openwrt/package/php5/ipkg/php5-mod-gmp.control
deleted file mode 100644
index 9572610b3c..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-gmp.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-gmp
-Priority: optional
-Section: net
-Depends: php5, libgmp
-Description: GMP (GNU MP) module for PHP5
diff --git a/openwrt/package/php5/ipkg/php5-mod-ldap.control b/openwrt/package/php5/ipkg/php5-mod-ldap.control
deleted file mode 100644
index 450e18405e..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-ldap.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-ldap
-Priority: optional
-Section: net
-Depends: php5, libopenldap
-Description: LDAP module for PHP5
diff --git a/openwrt/package/php5/ipkg/php5-mod-mysql.control b/openwrt/package/php5/ipkg/php5-mod-mysql.control
deleted file mode 100644
index faecf9106f..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-mysql.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-mysql
-Priority: optional
-Section: net
-Depends: php5, libmysqlclient
-Description: MySQL module for PHP5
diff --git a/openwrt/package/php5/ipkg/php5-mod-openssl.control b/openwrt/package/php5/ipkg/php5-mod-openssl.control
deleted file mode 100644
index 1c62ad1557..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-openssl.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-openssl
-Priority: optional
-Section: net
-Depends: php5, libopenssl
-Description: OpenSSL module for PHP5
diff --git a/openwrt/package/php5/ipkg/php5-mod-pcre.control b/openwrt/package/php5/ipkg/php5-mod-pcre.control
deleted file mode 100644
index 15afde22f9..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-pcre.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-pcre
-Priority: optional
-Section: net
-Depends: php5, libpcre
-Description: PCRE module for PHP5
diff --git a/openwrt/package/php5/ipkg/php5-mod-pgsql.control b/openwrt/package/php5/ipkg/php5-mod-pgsql.control
deleted file mode 100644
index 7bc3dcae00..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-pgsql.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-pgsql
-Priority: optional
-Section: net
-Depends: php5, libpq
-Description: PostgreSQL module for PHP5
diff --git a/openwrt/package/php5/ipkg/php5-mod-session.control b/openwrt/package/php5/ipkg/php5-mod-session.control
deleted file mode 100644
index 02900186e2..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-session.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-session
-Priority: optional
-Section: net
-Depends: php5
-Description: Sessions module for PHP5
diff --git a/openwrt/package/php5/ipkg/php5-mod-sockets.control b/openwrt/package/php5/ipkg/php5-mod-sockets.control
deleted file mode 100644
index ad6abd2a90..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-sockets.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-sockets
-Priority: optional
-Section: net
-Depends: php5
-Description: Sockets module for PHP5
diff --git a/openwrt/package/php5/ipkg/php5-mod-sqlite.control b/openwrt/package/php5/ipkg/php5-mod-sqlite.control
deleted file mode 100644
index 16f7d44846..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-sqlite.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-sqlite
-Priority: optional
-Section: net
-Depends: php5, libsqlite2
-Description: SQLite module for PHP5
diff --git a/openwrt/package/php5/ipkg/php5-mod-xml.control b/openwrt/package/php5/ipkg/php5-mod-xml.control
deleted file mode 100644
index 9395fd8010..0000000000
--- a/openwrt/package/php5/ipkg/php5-mod-xml.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: php5-mod-xml
-Priority: optional
-Section: net
-Depends: php5, libexpat
-Description: XML module for PHP5
diff --git a/openwrt/package/php5/patches/php-5.0.4-configure-cross.patch b/openwrt/package/php5/patches/php-5.0.4-configure-cross.patch
deleted file mode 100644
index d4c423b3b0..0000000000
--- a/openwrt/package/php5/patches/php-5.0.4-configure-cross.patch
+++ /dev/null
@@ -1,83 +0,0 @@
---- php-5.0.4/configure 2005-06-16 19:23:10.000000000 +0200
-+++ php-5.0.4-patched/configure 2005-07-01 23:52:04.000000000 +0200
-@@ -13851,7 +13851,7 @@
- ac_libs=$LIBS
- LIBS="$LIBS -ldl"
- if test "$cross_compiling" = yes; then
-- found=no
-+ found=yes
- else
- cat > conftest.$ac_ext <<EOF
- #line 13858 "configure"
-@@ -15724,7 +15724,7 @@
-
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 15731 "configure"
-@@ -16981,7 +16981,7 @@
- if { (eval echo configure:16982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 16988 "configure"
-@@ -17478,7 +17478,7 @@
- rm -fr conftest*
-
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 17485 "configure"
-@@ -41405,7 +41405,7 @@
- echo $ac_n "checking if iconv supports errno""... $ac_c" 1>&6
- echo "configure:41407: checking if iconv supports errno" >&5
- if test "$cross_compiling" = yes; then
-- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-+ { echo "configure: error: can not run test program while cross compiling" 1>&2; }
- else
- cat > conftest.$ac_ext <<EOF
- #line 41412 "configure"
-@@ -95618,7 +95618,7 @@
- version_type=none
- dynamic_linker="$host_os ld.so"
- sys_lib_dlsearch_path_spec="/lib /usr/lib"
--sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-+sys_lib_search_path_spec=""
-
- case $host_os in
- aix3*)
-@@ -95828,7 +95828,7 @@
- esac
- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
- shlibpath_overrides_runpath=no
-- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-+ sys_lib_search_path_spec=""
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
- ;;
-
-@@ -95878,7 +95878,7 @@
- ;;
- esac
- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
-- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
-+ sys_lib_search_path_spec=""
- ;;
-
- netbsd*)
-@@ -96977,7 +96977,7 @@
- link_all_deplibs=$link_all_deplibs
-
- # Compile-time system search path for libraries
--sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-+sys_lib_search_path_spec=
-
- # Run-time system search path for libraries
- sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
diff --git a/openwrt/package/picocom/Config.in b/openwrt/package/picocom/Config.in
deleted file mode 100644
index 85ae98fc5a..0000000000
--- a/openwrt/package/picocom/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_PACKAGE_PICOCOM
- prompt "picocom........................... minimal dumb-terminal emulation program"
- tristate
- default m if CONFIG_DEVEL
- help
- As its name suggests, picocom is a minimal dumb-terminal emulation
- program. It is, in principle, very much like minicom, only it's pico
- instead of mini! It was designed to serve as a simple, manual, modem
- configuration, testing, and debugging tool. It has also served (quite
- well) as a low-tech "terminal-window" to allow operator intervention
- in PPP connection scripts. It could also prove useful in many other
- similar tasks.
-
- http://efault.net/npat/hacks/picocom/
-
diff --git a/openwrt/package/picocom/Makefile b/openwrt/package/picocom/Makefile
deleted file mode 100644
index f71665dd6d..0000000000
--- a/openwrt/package/picocom/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=picocom
-PKG_VERSION:=1.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=08fcc5f6bb9e7676a2569386d5ea9f70
-
-PKG_SOURCE_URL:=http://efault.net/npat/hacks/picocom/dist/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PICOCOM,picocom,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include" \
- CFLAGS="$(TARGET_CFLAGS) -L$(STAGING_DIR)/usr/lib" \
- picocom
- touch $@
-
-$(IPKG_PICOCOM):
- install -d -m0755 $(IDIR_PICOCOM)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/picocom $(IDIR_PICOCOM)/usr/bin/
- $(RSTRIP) $(IDIR_PICOCOM)
- $(IPKG_BUILD) $(IDIR_PICOCOM) $(PACKAGE_DIR)
diff --git a/openwrt/package/picocom/ipkg/picocom.control b/openwrt/package/picocom/ipkg/picocom.control
deleted file mode 100644
index 607e947e51..0000000000
--- a/openwrt/package/picocom/ipkg/picocom.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: picocom
-Priority: optional
-Section: console
-Description: minimal dumb-terminal emulation program
diff --git a/openwrt/package/pipacs/Config.in b/openwrt/package/pipacs/Config.in
deleted file mode 100644
index f0d9ed8be4..0000000000
--- a/openwrt/package/pipacs/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_PIPACS
- prompt "pipacs............................ UNIX socket accounting/wiewer program"
- tristate
- default m if CONFIG_DEVEL
- help
- An UNIX socket accounting/wiewer program.
- This is version 2.
diff --git a/openwrt/package/pipacs/Makefile b/openwrt/package/pipacs/Makefile
deleted file mode 100644
index fe2219d9f5..0000000000
--- a/openwrt/package/pipacs/Makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pipacs
-PKG_RELEASE:=2
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PIPACS,pipacs,$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.prepared:
- mkdir -p $(PKG_BUILD_DIR)
- $(CP) ./src/* $(PKG_BUILD_DIR)
- touch $@
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -I $(STAGING_DIR)/usr/include" \
- all
- touch $@
-
-$(IPKG_PIPACS):
- mkdir -p $(IDIR_PIPACS)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/pipacs $(IDIR_PIPACS)/usr/bin
- $(RSTRIP) $(IDIR_PIPACS)
- $(IPKG_BUILD) $(IDIR_PIPACS) $(PACKAGE_DIR)
diff --git a/openwrt/package/pipacs/ipkg/pipacs.control b/openwrt/package/pipacs/ipkg/pipacs.control
deleted file mode 100644
index b4349989ee..0000000000
--- a/openwrt/package/pipacs/ipkg/pipacs.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: pipacs
-Priority: optional
-Section: net
-Description: PIPACS - an UNIX socket accounting/wiewer program
-
diff --git a/openwrt/package/pipacs/src/Makefile b/openwrt/package/pipacs/src/Makefile
deleted file mode 100644
index a9a88059de..0000000000
--- a/openwrt/package/pipacs/src/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# $Id$
-
-EXTRA_CFLAGS := -c -I.
-PIPACS_OBJS := pipacs.o parser.o
-
-all: pipacs
-
-%.o: %.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ $^
-
-pipacs: $(PIPACS_OBJS)
- $(CC) -o $@ $^
-
-clean:
- rm -f *.o *.so pipacs
diff --git a/openwrt/package/pipacs/src/parser.c b/openwrt/package/pipacs/src/parser.c
deleted file mode 100644
index 330d7cd0aa..0000000000
--- a/openwrt/package/pipacs/src/parser.c
+++ /dev/null
@@ -1,907 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include<string.h>
-#include <time.h>
-//#include <process.h>
-#include "parser.h"
-
-#define printit
-
-extern BOOL bFilter;
-extern int iline;
-extern char * author;
-extern char myipname[];
-extern int justheader;
-extern int gre,sortbysize,fromip,toip;
-int nomac=1;
-int mostird=0;
-char mypbuff[2048];
-// accounting variables
-#define MAXHASH 0xffff
-#define MAXTCPPORT 4096
-unsigned long *iph=NULL; //[MAXHASH];
-
-typedef struct {
- unsigned short from;
- unsigned short to;
- unsigned long byte;
- unsigned short pkt;
- unsigned short sport;
- unsigned short dport;
-} ta;
-
-ta *acc = NULL;
-unsigned long tcppb[MAXTCPPORT];
-unsigned long tcppp[MAXTCPPORT];
-unsigned long typp[255];
-unsigned long typb[255];
-unsigned long udpb,tcpb,udpp,tcpp;
-time_t elapsed=0;
-int iCycle=10;
-int iScreen=1;
-int iFile=0;
-long lNum=0;
-char filename[128];
-char intlist[128];
-int iRun=1;
-int iDetail=0;
-FILE *f=NULL;
-int iProto=0;
-int iSum=0;
-char execname[255];
-char pbuf[8196];
-char str[255];
-extern char pattern[];
-#ifndef LINUX
-int iLnxplus=0; // Windows buffer without the MAC frame !
-#else
-int iLnxplus=14; // Linux plus IP header len =14 !!!
-#endif
-//
-// A list of protocol types in the IP protocol header
-//
-char *szProto[255] = {"IP", // 0
- "ICMP", // 1
- "IGMP", // 2
- "GGP", // 3
- "IP", // 4
- "ST", // 5
- "TCP", // 6
- "UCL", // 7
- "EGP", // 8
- "IGP", // 9
- "BBN-RCC-MON", // 10
- "NVP-II", // 11
- "PUP", // 12
- "ARGUS", // 13
- "EMCON", // 14
- "XNET", // 15
- "CHAOS", // 16
- "UDP", // 17
- "MUX", // 18
- "DCN-MEAS", // 19
- "HMP", // 20
- "PRM", // 21
- "XNS-IDP", // 22
- "TRUNK-1", // 23
- "TRUNK-2", // 24
- "LEAF-1", // 25
- "LEAF-2", // 26
- "RDP", // 27
- "IRTP", // 28
- "ISO-TP4", // 29
- "NETBLT", // 30
- "MFE-NSP", // 31
- "MERIT-INP", // 32
- "SEP", // 33
- "3PC", // 34
- "IDPR", // 35
- "XTP", // 36
- "DDP", // 37
- "IDPR-CMTP", // 38
- "TP++", // 39
- "IL", // 40
- "SIP", // 41
- "SDRP", // 42
- "SIP-SR", // 43
- "SIP-FRAG", // 44
- "IDRP", // 45
- "RSVP", // 46
- "GRE", // 47
- "MHRP", // 48
- "BNA", // 49
- "IPSEC-ESP", // 50
- "IPSEC-AH", // 51
- "I-NLSP", // 52
- "SWIPE", // 53
- "NHRP", // 54
- "?55?", // 55
- "?56?", // 56
- "SKIO", // 57
- "V6ICMP", // 58
- "V6NoNXT", // 59
- "V6OPT", // 60
- "int.host", // 61
- "CFTP", // 62
- "loc.net", // 63
- "SAT-EXPAK", // 64
- "KRYPTOLAN", // 65
- "RVD", // 66
- "IPPC", // 67
- "dist.fs", // 68
- "SAT-MON", // 69
- "VISA", // 70
- "IPCV", // 71
- "CPNX", // 72
- "CPHB", // 73
- "WSN", // 74
- "PVP", // 75
- "BR-SAT-MON", // 76
- "SUN-ND", // 77
- "WB-MON", // 78
- "WB-EXPAK", // 79
- "ISO-IP", // 80
- "VMTP", // 81
- "SECURE-VMTP",// 82
- "VINES", // 83
- "TTP", // 84
- "NSFNET-IGP", // 85
- "DGP", // 86
- "TCF", // 87
- "IGRP", // 88
- "OSPF", // 89
- "Sprite-RPC", // 90
- "LARP", // 91
- "MTP", // 92
- "AX.25", // 93
- "IPIP", // 94
- "MICP", // 95
- "SCC-SP", // 96
- "ETHERIP", // 97
- "ENCAP", // 98
- "priv.enc", // 99
- "GMTP" // 99
- };
-//
-// The types of IGMP messages
-//
-char *szIgmpType[] = {"",
- "Host Membership Query",
- "HOst Membership Report",
- "",
- "",
- "",
- "Version 2 Membership Report",
- "Leave Group",
- "",
- ""
- };
-
-//
-// Function: PrintRawBytes
-//
-// Description:
-// This function simply prints out a series of bytes
-// as hexadecimal digits.
-//
-void PrintRawBytes(BYTE *ptr, DWORD len)
-{
- int i,j;
-// if (! iFile) {
-*(ptr+len)=0;
-if ((*pattern==0) || strstr(ptr,pattern) ) {
- fprintf(iFile?f:stdout,"%s",pbuf);
- fprintf(iFile?f:stdout," " );
- while (len > 0) {
- for(i=0; i < 16; i++) {
- fprintf(iFile?f:stdout,"%x%x ", HI_WORD(*ptr), LO_WORD(*ptr));
- len--;
- ptr++;
- if (len == 0) {j=i++; while(++j < 16) fprintf(iFile?f:stdout," "); break; }
- }
- fprintf(iFile?f:stdout," ");
- for(j=0; j < i; j++) fprintf(iFile?f:stdout,"%c",isprint(*(ptr-i+j))?*(ptr-i+j):'.');
- if (len) fprintf(iFile?f:stdout,"\n ");
- }
-// } else {
-// fwrite(ptr,sizeof(BYTE),len,f);
-// }
-}
-}
-
-static char *ICMPTypeTable[]={
- "Echo Reply", "ICMP 1", "ICMP 2", "Dest Unreachable","SrcQuench", "Redirect", "6", "7","Echo Request","9","10",
- "Time Exceed", "ParamPrblm", "Timestamp", "Timestamp reply","InfoRqst", "InfoRply"
-};
-static char *Dstunreach[]={
-"net unreach.","host unreach.","protocol unreach.","port unreach.",
-"frag needed","source route?","",""
-};
-int DecodeICMPHeader(WSABUF *wsabuf, DWORD iphdrlen) {
- BYTE *hdr = (BYTE *)((BYTE *)wsabuf->buf + iphdrlen + iLnxplus );
- unsigned short type,code,chksum,
- id,
- seq;
- unsigned long resptime,r1,r2;
- BYTE *hhh;
- SOCKADDR_IN addr;
- type=*hdr++; code=*hdr++;
- sprintf(str," Type:%-12s Code:%3d,",ICMPTypeTable[type],code);
-
- strcat(pbuf,str);
- memcpy(&chksum, hdr, 2);
- hdr += 2; hhh=hdr;
- memcpy(&id, hdr, 2);
- hdr += 2;
- memcpy(&seq, hdr, 2);
- hdr+=2;
-// memcpy(&resptime, hdr, 4);
-// hdr+=4;
- switch (type) {
- case 3:
- memcpy(&addr.sin_addr.s_addr, hdr+16, 4);
- if (code==4 ) sprintf(str,"frag needed-Max MTU:%u at %-15s\n",ntohs(seq), inet_ntoa(addr.sin_addr));
- else sprintf(str,"%s at %-15s\n",Dstunreach[code&7],inet_ntoa(addr.sin_addr));
- hdr+=iphdrlen;
- break;
- case 11:
- memcpy(&addr.sin_addr.s_addr, hdr+16, 4);
- sprintf(str,"%s at %-15s\n",code?"frag reass. exceed":"ttl exceed",inet_ntoa(addr.sin_addr));
- hdr+=iphdrlen;
- break;
- case 12:
- memcpy(&addr.sin_addr.s_addr, hdr+16, 4);
- sprintf(str," err:%d at %-15s\n",id,inet_ntoa(addr.sin_addr));
- hdr+=iphdrlen;
- break;
- case 4:
- memcpy(&addr.sin_addr.s_addr, hdr+16, 4);
- sprintf(str," wait for %-15s\n",ntohs(id),inet_ntoa(addr.sin_addr));
- hdr+=iphdrlen;
- break;
- case 5:
- memcpy(&addr.sin_addr.s_addr, hhh, 4);
- sprintf(str," from gw: %-15s\n",inet_ntoa(addr.sin_addr));
- hdr+=iphdrlen;
- break;
- case 0:
- case 8:
- sprintf(str," Id:%3u Seq:%3u\n",ntohs(id),ntohs(seq));
- break;
- case 13:
- case 14:
- memcpy(&resptime, hdr, 4);
- hdr+=4;
- memcpy(&r1, hdr, 4);
- hdr+=4;
- memcpy(&r2, hdr, 4);
- hdr+=4;
- sprintf(str," Id:%3u Seq:%3d Rec/Tr %ld/%ld ms\n",ntohs(id),ntohs(seq),ntohl(r1)-ntohl(resptime),ntohl(r2)-ntohl(resptime));
- break;
- case 15:
- case 16:
- sprintf(str," Id:%3u Seq:%3d\n",ntohs(id),ntohs(seq));
- break;
- }
- strcat(pbuf,str);
- return hdr-(BYTE *)(wsabuf->buf + iphdrlen + iLnxplus);
-}
-
-//
-// Function: DecodeIGMPHeader
-//
-// Description:
-// This function takes a pointer to a buffer containing
-// an IGMP packet and prints it out in a readable form.
-//
-
-int DecodeIGMPHeader(WSABUF *wsabuf, DWORD iphdrlen) {
- BYTE *hdr = (BYTE *)((BYTE *)wsabuf->buf + iphdrlen + iLnxplus);
- unsigned short chksum,
- version,
- type,
- maxresptime;
- SOCKADDR_IN addr;
- version = HI_WORD(*hdr);
- type = LO_WORD(*hdr);
-
- hdr++;
- maxresptime = *hdr;
- hdr++;
-
- memcpy(&chksum, hdr, 2);
- chksum = ntohs(chksum);
- hdr += 2;
-
- memcpy(&(addr.sin_addr.s_addr), hdr, 4);
- sprintf(str," IGMP HEADER:\n");
- strcat(pbuf,str);
- if ((type == 1) || (type == 2)) version = 1;
- else version = 2;
- sprintf(str," IGMP Version = %d\n IGMP Type = %s\n",version, szIgmpType[type]);
- strcat(pbuf,str);
- if (version == 2) {
- sprintf(str," Max Resp Time = %d\n", maxresptime);
- strcat(pbuf,str);
- }
- sprintf(str," IGMP Grp Addr = %s\n", inet_ntoa(addr.sin_addr));
- strcat(pbuf,str);
-
- return 8;
-}
-
-//
-// Function: DecodeUDPHeader
-//
-// Description:
-// This function takes a buffer which points to a UDP
-// header and prints it out in a readable form.
-//
-int DecodeUDPHeader(WSABUF *wsabuf, DWORD iphdrlen) {
- BYTE *hdr = (BYTE *)((BYTE *)wsabuf->buf + iphdrlen + iLnxplus);
- unsigned short shortval,
- udp_src_port,
- udp_dest_port,
- udp_len,
- udp_chksum;
- memcpy(&shortval, hdr, 2);
- udp_src_port = ntohs(shortval);
- hdr += 2;
-
- memcpy(&shortval, hdr, 2);
- udp_dest_port = ntohs(shortval);
- hdr += 2;
-
- memcpy(&shortval, hdr, 2);
- udp_len = ntohs(shortval);
- hdr += 2;
-
- memcpy(&shortval, hdr, 2);
- udp_chksum = ntohs(shortval);
- hdr += 2;
-
- sprintf(str," UDP: SPort: %-05d | DPort: %-05d",udp_src_port, udp_dest_port);
- strcat(pbuf,str);
- sprintf(str," | Len: %-05d | CSum: 0x%08x\n",udp_len, udp_chksum);
- strcat(pbuf,str);
- return hdr-(BYTE *)(wsabuf->buf + iphdrlen + iLnxplus);
-}
-
-//
-// Function: DecodeTCPHeader
-//
-// Description:
-// This function takes a buffer pointing to a TCP header
-// and prints it out in a readable form.
-//
-int DecodeTCPHeader(WSABUF *wsabuf, DWORD iphdrlen) {
- BYTE *hdr = (BYTE *)((BYTE *)wsabuf->buf + iphdrlen + iLnxplus);
- unsigned short shortval;
- unsigned long longval;
-
- memcpy(&shortval, hdr, 2);
- shortval = ntohs(shortval);
- sprintf(str," TCP: SPort: %u", shortval);
- strcat(pbuf,str);
- hdr += 2;
-
- memcpy(&shortval, hdr, 2);
- shortval = ntohs(shortval);
- sprintf(str," DPort: %u", shortval);
- strcat(pbuf,str);
- hdr += 2;
-
- memcpy(&longval, hdr, 4);
- longval = ntohl(longval);
- sprintf(str," Seq: %lX", longval);
- strcat(pbuf,str);
- hdr += 4;
-
- memcpy(&longval, hdr, 4);
- longval = ntohl(longval);
- sprintf(str," ACK: %lX", longval);
- strcat(pbuf,str);
- hdr += 4;
-// printf(" Header Len : %d (bytes %d)\n", HI_WORD(*hdr), (HI_WORD(*hdr) * 4));
-
- memcpy(&shortval, hdr, 2);
- shortval = ntohs(shortval) & 0x3F;
- sprintf(str," Flags: ");
- strcat(pbuf,str);
- if (shortval & 0x20) strcat(pbuf,"URG ");
- if (shortval & 0x10) strcat(pbuf,"ACK ");
- if (shortval & 0x08) strcat(pbuf,"PSH ");
- if (shortval & 0x04) strcat(pbuf,"RST ");
- if (shortval & 0x02) strcat(pbuf,"SYN ");
- if (shortval & 0x01) strcat(pbuf,"FIN ");
- strcat(pbuf,"\n");
- hdr += 2;
-
- memcpy(&shortval, hdr, 2);
- shortval = ntohs(shortval);
-// printf(" Window size: %d\n", shortval);
- hdr += 2;
-
- memcpy(&shortval, hdr, 2);
- shortval = ntohs(shortval);
-// printf(" TCP Chksum : %d\n", shortval);
- hdr += 2;
-
- memcpy(&shortval, hdr, 2);
- shortval = ntohs(shortval);
- hdr += 2;
-// printf(" Urgent ptr : %d\n", shortval);
-
- return hdr-(BYTE *)(wsabuf->buf + iphdrlen + iLnxplus);
-}
-
-int DecodeGREHeader(WSABUF *wsabuf, DWORD iphdrlen,DWORD bytesret,
- unsigned int srcip, unsigned short srcport, unsigned long srcnet,unsigned int destip, unsigned short destport, unsigned long destnet,
- unsigned short xport,unsigned int xip, unsigned long xnet)
- {
- BYTE *hdr = (BYTE *)((BYTE *)wsabuf->buf + iphdrlen + iLnxplus);
- unsigned short shortval;
- unsigned long longval;
- int ipe;
- BYTE *orihdr;
- char *sstr;
- SOCKADDR_IN srcaddr;
-
- orihdr=hdr;
- memcpy(&shortval, hdr, 2);
- shortval = ntohs(shortval);
- sprintf(str," GRE Flag: %u Prot:", shortval);
- strcat(mypbuff,str);
- hdr += 2;
-
- memcpy(&shortval, hdr, 2);
- shortval = ntohs(shortval);
- ipe=0;
- sstr=str;
-// sprintf(str," Prot: %u", shortval);
- switch ( shortval ) {
- case 4: sstr="SNA";
- break;
- case 0xfe: sstr="OSI";
- break;
- case 0x200: sstr="PUP";
- break;
- case 0x600: sstr="XNS";
- break;
- case 0x800: sstr="IP";
- ipe=1;
- break;
- case 0x804: sstr="Chaos";
- break;
- case 0x806: sstr="ARP";
- break;
- case 0x6558: sstr="Tr.bridge";
- break;
- default: sprintf(str,"%u", shortval);
- break;
- }
- hdr += 2;
- strcat(mypbuff,sstr);
- if (ipe && gre) {
- int plusment,jj,protoment;
- plusment=iLnxplus;
- protoment=iProto;
- if (iProto==47) iProto=0;
- iLnxplus+=4;
- nomac=0;
- iLnxplus=plusment+24;
- DecodeIPHeader(wsabuf,srcip,srcport,srcnet,destip,destport,destnet,bytesret,xport,xip,xnet);
- nomac=1;
- iLnxplus=plusment;
- iProto=protoment;
- }
-return -1;
-// return hdr-(BYTE *)(wsabuf->buf + iphdrlen + iLnxplus);
-}
-
-
-int ClearIPAcc() {
- unsigned long i;
- ta *tai;
- for(i=0;i<MAXHASH;i++) *(iph + i)=0;
- tai=acc;
- for(i=0;i<MAXHASH;i++) { tai->from=tai->to=0; tai++; }
- for (i=0;i<MAXTCPPORT; i++) tcppb[i]=tcppp[i]=0;
- udpb=udpp=tcpp=tcpb=0;
- for (i=0;i<255; i++) typp[i]=0;
- for (i=0;i<255; i++) typb[i]=0;
- return 0;
- };
-
-int InitIPAcc() {
- acc=malloc(MAXHASH*sizeof(ta));
- iph=malloc(MAXHASH*sizeof(long));
- if (!acc || !iph ) return 0;
- ClearIPAcc();
- time(&elapsed);
- return 1;
-}
-
-int bytesort(const void *s1, const void *s2) { // sorting tale in byte order
- ta *d1;
- ta *d2;
- d1= (ta *)s1; d2=(ta *)s2;
- if (d1->byte > d2->byte) return -1;
- if (d1->byte < d2->byte) return 1;
- return 0;
-}
-int countsort(const void *s1, const void *s2) { // sorting tale in packet count order
- ta *d1;
- ta *d2;
- d1= (ta *)s1; d2=(ta *)s2;
- if (d1->pkt > d2->pkt) return -1;
- if (d1->pkt < d2->pkt) return 1;
- return 0;
-}
-int CloseIPAcc( long ti) {
- unsigned long i;
- ta *tai;
- SOCKADDR_IN srcaddr;
- SOCKADDR_IN dstaddr;
- float ff;
- char str[16];
- unsigned long j,k,l;
- int lin=0;
- int linn;
-
- time(&elapsed);
- if (iFile) f=fopen(filename,"w+");
- k=0;
- if (sortbysize) qsort(acc,MAXHASH,sizeof(ta),bytesort);
- else qsort(acc,MAXHASH,sizeof(ta),countsort);
- ff=0.0;
- for (i=0;i<255;i++) ff+=typb[i];
- for (i=0; i<MAXHASH; i++) {
- tai=acc + i;
- if ((tai->from!=0) && (tai->to!=0)) ++k;
- }
- if (iScreen) {
-#ifndef LINUX
- system("cls");
-#else
- system("clear");
-// printf("\033[1~");
-#endif
- printf("%-16s Speed: %5.2f Kbit/s , %ld IP pairs / %ld secs. %s@%s.hu",myipname,ff/ti/1024*8,k,ti,author,author);
- printf("\nProt:"); j=0; ++lin;
- while (1) {
- l=k=0;
- for (i=0;i<100;i++) if ( typb[i]>k) { k=typb[i]; l=i; }
- if (k==0) break;
- if ((j>0) && ((j%3)==0)) { printf("\n "); ++lin; }
- if (k>1024*1024) printf(" %-8.8s:%5.1fk/%-6.1f M",szProto[l],(float)typp[l]/1024,(float)k/(1024*1024));
- else if (k>1024) printf(" %-8.8s:%5ld/%-6.1f k",szProto[l],typp[l],(float)k/1024);
- else printf(" %-8.8s:%5ld/%-8ld",szProto[l],typp[l],k);
- typb[l]=0;
- ++j;
- }
- printf("\nPort:"); j=0; ++lin;
- k=0; linn=lin;
- while (1) {
- l=k=0;
- for (i=0;i<MAXTCPPORT;i++) if (tcppb[i]>k) { k=tcppb[i]; l=i; }
- if (k==0) break;
- if (j && (j%4)==0) {
- if (lin >= linn+1) break;
- printf("\n ");
- ++lin;
- }
- if (k>1024*1024) printf(" %04d:%4.1fk/%-5.1f M",l,(float)tcppp[l]/1024,(float)k/(1024*1024));
- else if (k>1024) printf(" %04d:%4ld/%-5.1f k",l,tcppp[l],(float)k/1024);
- else printf(" %04d:%4ld/%-7ld",l,tcppp[l],k);
- tcppb[l]=0;
- ++j;
- }
- } else if (f) {
- fprintf(f,"%-16s Speed: %5.2f Kbit/s , %ld IP pairs / %ld secs. %s@%s.hu",myipname,ff/ti/1024*8,k,ti,author,author);
- fprintf(f,"\nProt:"); j=0;
- while (1) {
- l=k=0;
- for (i=0;i<100;i++) if ( typb[i]>k) { k=typb[i]; l=i; }
- if (k==0) break;
- if (k>1024*1024) fprintf(f," %-8.8s:%5.1fk/%-6.1f M",szProto[l],(float)typp[l]/1024,(float)k/(1024*1024));
- else if (k>1024) fprintf(f," %-8.8s:%5ld/%-6.1f k",szProto[l],typp[l],(float)k/1024);
- else fprintf(f," %-8.8s:%5ld/%-8ld",szProto[l],typp[l],k);
- typb[l]=0;
- ++j;
- }
- printf("\nPort:"); j=0;
- k=0; linn=lin;
- while (1) {
- l=k=0;
- for (i=0;i<MAXTCPPORT;i++) if (tcppb[i]>k) { k=tcppb[i]; l=i; }
- if (k==0) break;
- if (k>1024*1024) fprintf(f," %04d:%4.1fk/%-5.1f M",l,(float)tcppp[l]/1024,(float)k/(1024*1024));
- else if (k>1024) fprintf(f," %04d:%4ld/%-5.1f k",l,tcppp[l],(float)k/1024);
- else fprintf(f," %04d:%4ld/%-7ld",l,tcppp[l],k);
- tcppb[l]=0;
- ++j;
- }
- }
-
- for (i=0; i<MAXHASH; i++) {
- tai=acc + i;
- if ((tai->from!=0) && (tai->to!=0)) { ++k;
- if (!iSum) {
- dstaddr.sin_addr.s_addr = htonl(*(iph+tai->from));
- srcaddr.sin_addr.s_addr = htonl(*(iph+(tai->to)));
- strcpy(str,inet_ntoa(dstaddr.sin_addr));
- if (iScreen && (++lin<iline) ) printf("\n%-15s\t%-15s\t%5d pkt, %10ld byte :%7.2f Kbps",str,inet_ntoa(srcaddr.sin_addr),tai->pkt,tai->byte,((float)tai->byte)/ti/1024*8);
- if (f) fprintf(f,"%-15s\t%-15s\t%d\t%ld\n",str,inet_ntoa(srcaddr.sin_addr),tai->pkt,tai->byte);
- }
- }
- }
- if (iScreen) printf("\n");
-#ifdef LINUX
- if (iScreen) fflush(stdout);
-#endif
- ClearIPAcc();
- if (f) {
- char cmdline[255];
- fclose(f);
-// if (*execname) _spawnle(_P_NOWAIT,execname,execname,filename);
-// if (*execname) _execl(execname,execname);
- if (*execname) {
-#ifndef LINUX
- sprintf(cmdline,"%s %s",execname,filename);
-#else
- sprintf(cmdline,"%s %s",execname,filename);
-#endif
- system(cmdline);
-// iRun=0;
- }
- }
- f=NULL;
- return 0;
-}
-
-unsigned short FindIPHash( unsigned long ip ) {
- unsigned short hashval;
- unsigned long *ipt;
-
- hashval = (unsigned short)(((ip&0xFFFF0000)>>16) ^ (ip&0x0000FFFF));
- ipt=iph + hashval;
- while (*ipt != 0 && (*ipt!=ip)) { ipt++; hashval++; }
- if (*ipt==0) *ipt=ip;
- return hashval;
-}
-
-unsigned short SetIPAcc( unsigned long src, unsigned long dst, unsigned long byte, unsigned short typ, unsigned short sport, unsigned short dport) {
- unsigned short from,to,hash;
- ta *tai;
- hash=0;
- if (src) {
-
- if (fromip) from=FindIPHash(src); else from=-1;
- if (toip) to=FindIPHash(dst); else to=-1;
- hash=from^to;
- tai=acc + hash;
- while ( ((tai->from!=from) && (tai->to!=to)) && ((tai->from!=0) && (tai->to!=0)) ) {tai++; hash++; }
- if ((tai->from==0)&&(tai->to==0)) {
- tai->byte=byte; tai->from=from; tai->to=to; tai->pkt=1;
- } else { tai->byte+=byte; tai->pkt++; }
-
- typp[typ]++;
- typb[typ]+=byte;
- if ((sport>0) && (sport<MAXTCPPORT)) { tcppp[sport]++; tcppb[sport]+=byte; }
- if ((dport>0) && (dport<MAXTCPPORT)) { tcppp[dport]++; tcppb[dport]+=byte; }
- }
- return hash;
-}
-
-//
-// Function: DecodeIPHeader
-//
-// Description:
-// This function takes a pointer to an IP header and prints
-// it out in a readable form.
-//
-int DecodeIPHeader(WSABUF *wsabuf, unsigned int srcip, unsigned short srcport, unsigned long srcnet,
- unsigned int destip, unsigned short destport, unsigned long destnet, DWORD bytesret,
- unsigned short xport,unsigned int xip, unsigned long xnet)
-{
- BYTE *hdr = (BYTE *)wsabuf->buf,
- *nexthdr = NULL,
- *ohdr;
- unsigned short shortval;
- SOCKADDR_IN srcaddr,
- destaddr;
-
- unsigned short ip_version,
- ip_hdr_len,
- ip_tos,
- ip_total_len,
- ip_id,
- ip_flags,
- ip_ttl,
- ip_frag_offset,
- ip_proto,
- ip_hdr_chksum,
- ip_src_port,
- ip_dest_port;
- unsigned int ip_src,
- ip_dest;
- BOOL bPrint = FALSE;
- char ip_prtype=0;
- int j;
- time_t tt;
- struct tm *tmm;
-
- ohdr=hdr;
- if (iLnxplus) ip_prtype=*(hdr+iLnxplus-1);
- if (ip_prtype) return 0;
- hdr += iLnxplus;
- ip_version = HI_WORD(*hdr);
- ip_hdr_len = LO_WORD(*hdr) * 4;
- nexthdr = (BYTE *)((BYTE *)hdr + ip_hdr_len);
- hdr++;
-
- ip_tos = *hdr;
- hdr++;
-
- memcpy(&shortval, hdr, 2);
- ip_total_len = ntohs(shortval);
- hdr += 2;
-
- memcpy(&shortval, hdr, 2);
- ip_id = ntohs(shortval);
- hdr += 2;
-
- ip_flags = ((*hdr) >> 5);
-
- memcpy(&shortval, hdr, 2);
- ip_frag_offset = ((ntohs(shortval)) & 0x1FFF);
- hdr += 2;
-
- ip_ttl = *hdr;
- hdr++;
-
- ip_proto = *hdr;
- hdr++;
-
- memcpy(&shortval, hdr, 2);
- ip_hdr_chksum = ntohs(shortval);
- hdr += 2;
-
- memcpy(&srcaddr.sin_addr.s_addr, hdr, 4);
- ip_src = ntohl(srcaddr.sin_addr.s_addr);
- hdr += 4;
-
- memcpy(&destaddr.sin_addr.s_addr, hdr, 4);
- ip_dest = ntohl(destaddr.sin_addr.s_addr);
- hdr += 4;
- //
- // If packet is UDP, TCP, or IGMP read ahead and
- // get the port values.
- //
- ip_src_port=ip_dest_port=0;
- if (((ip_proto == 2) ||
- (ip_proto == 6) ||
- (ip_proto == 17)) ) //&& bFilter)
- {
- memcpy(&ip_src_port, nexthdr, 2);
- ip_src_port = ntohs(ip_src_port);
- memcpy(&ip_dest_port, nexthdr+2, 2);
- ip_dest_port = ntohs(ip_dest_port);
-
- };
- bPrint = 0;
-// xaok= (xip!=0) && (((xip&xnet)==(ip_src&xnet))||((xip&xnet)==(ip_dest&xnet)));
-// saok= ((srcip==0)||((srcip&srcnet)==(ip_src&srcnet)));
-// daok = ((destip==0)||((destip&destnet)==(ip_dest&destnet)));
-// xpok=(xport!=0) && ((xport==ip_src_port)||(xport==ip_dest_port));
-// spok=((srcport==0)||(srcport == ip_src_port));
-// dpok=((destport==0)||(destport == ip_dest_port));
-//printf("\nf:%d xa:%d sa:%d da:%d xp:%d sp:%d dp:%d",bFilter,xaok,saok,daok,xpok,spok,dpok);
-// if (!bFilter || ( (xaok||(saok&&daok)) && (xpok||(spok&&dpok)))) {
-if ((!bFilter) || ((ip_proto==47)&&gre) ||
- (
- ((iProto==0)||(ip_proto==iProto)) &&
- (
- ((xip!=0) && (((xip&xnet)==(ip_src&xnet))||((xip&xnet)==(ip_dest&xnet)))
- ) || (
- ((srcip==0) || ((srcip&srcnet)==(ip_src&srcnet))) && ((destip==0)||((destip&destnet)==(ip_dest&destnet)))
- )
- )
- &&
- (
- ((xport!=0) && ((xport==ip_src_port)||(xport==ip_dest_port))
- ) || (
- ((srcport==0)||(srcport == ip_src_port))&&((destport==0)||(destport == ip_dest_port))
- )
- )
- )
- ) {
- if (! iDetail) {
- if ((ip_proto==47)&&gre) {
- *mypbuff=0;
- DecodeGREHeader(wsabuf, ip_hdr_len, bytesret,
- srcip,srcport,srcnet,destip,destport,destnet,xport,xip,xnet);
-// SetIPAcc(0,0,0,0,0,0);
- return ip_hdr_len;
- }
- SetIPAcc(ip_src,ip_dest,ip_total_len,ip_proto,ip_src_port,ip_dest_port);
- }
- else bPrint=TRUE;
-// printf("%d %ld %ld %ld %ld",ip_proto,xip,xip&xnet,ip_src&xnet,ip_dest&xnet);
- } else {
- if (! iDetail) SetIPAcc(0,0,0,0,0,0);
-// else bPrint=TRUE;
- }
- time(&tt);
- if ((!iSum && ( tt-elapsed > iCycle)) || !iRun || mostird) {
- mostird=0;
- if (! iDetail) CloseIPAcc(tt-elapsed-1);
- else {
- time(&elapsed);
- if (f) fclose(f);
- if (iFile) f=fopen(filename,"a");
- }
- }
- if (lNum) { if (--lNum <= 0) iRun=0; }
-
- //
- *pbuf=0;
- if (bPrint) {
- tmm=localtime(&tt);
-if (! nomac ) {
- strcpy(pbuf,mypbuff);
-} else {
- sprintf(str,"\n%4.4d.%2.2d.%2.2d %2.2d:%2.2d:%2.2d ",
- tmm->tm_year+1900,tmm->tm_mon+1,tmm->tm_mday,tmm->tm_hour,tmm->tm_min,tmm->tm_sec);
- strcat(pbuf,str);
-#ifdef LINUX
- sprintf(str,"%x:%x:%x:%x:%x:%x > %x:%x:%x:%x:%x:%x",*ohdr,*(ohdr+1),*(ohdr+2),*(ohdr+3),*(ohdr+4),*(ohdr+5),
- *(ohdr+6),*(ohdr+7),*(ohdr+8),*(ohdr+9),*(ohdr+10),*(ohdr+11));
- strcat(pbuf,str);
-#endif
-}
- sprintf(str," %d bytes\n%-15s>", ip_total_len, inet_ntoa(srcaddr.sin_addr));
- strcat(pbuf,str);
- sprintf(str,"%-15s", inet_ntoa(destaddr.sin_addr));
- strcat(pbuf,str);
- sprintf(str," TTL:%-3d Proto:%-6s F:%d/%d TOS:%X%X\n",
- ip_ttl, szProto[ip_proto],ip_flags,ip_frag_offset,HI_WORD(ip_tos), LO_WORD(ip_tos));
- strcat(pbuf,str);
- if (iFile) strcat(pbuf,".");
- strcpy(mypbuff,pbuf);
-
- }
- else return ip_hdr_len;
-
- if (justheader) { if (*pbuf) fprintf(iFile?f:stdout,"%s",pbuf); return ip_hdr_len; }
- if (iDetail) {
- switch (ip_proto) {
- case 1: // ICMP
- j=DecodeICMPHeader(wsabuf, ip_hdr_len);
- break;
- case 2: // IGMP
- j=DecodeIGMPHeader(wsabuf, ip_hdr_len);
- break;
- case 6: // TCP
- j=DecodeTCPHeader(wsabuf, ip_hdr_len);
- break;
- case 17: // UDP
- j=DecodeUDPHeader(wsabuf, ip_hdr_len);
- break;
- case 47: // UDP
- j=DecodeGREHeader(wsabuf, ip_hdr_len, bytesret,
- srcip,srcport,srcnet,destip,destport,destnet,xport,xip,xnet);
- break;
- default:
- j=0; hdr=(BYTE *)wsabuf->buf;
- sprintf(str," No decoder installed for protocol\n");
- strcat(pbuf,str);
- break;
- }
- if (j>=0) PrintRawBytes(hdr+j,bytesret-j-ip_hdr_len-12); //(hdr-(BYTE *)(wsabuf->buf + iLnxplus)));
- }
- else if (*pbuf) fprintf(iFile?f:stdout,"%s",pbuf);
-
- return ip_hdr_len;
-}
diff --git a/openwrt/package/pipacs/src/parser.h b/openwrt/package/pipacs/src/parser.h
deleted file mode 100644
index aac609acb9..0000000000
--- a/openwrt/package/pipacs/src/parser.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#define LINUX 1
-#ifdef LINUX
-#include <ctype.h>
-#include <string.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <netdb.h>
-#include <unistd.h>
-#include <arpa/inet.h>
-#include <net/if.h>
-#define BYTE unsigned char
-#define DWORD unsigned long
-#define BOOL char
-#define TRUE 1
-#define FALSE 0
-#define WSADATA int
-#define SOCKET int
-#define SOCKADDR struct sockaddr
-#define SOCKADDR_IN struct sockaddr_in
-typedef struct _WSABUF {
- unsigned long len;
- unsigned char *buf;
-} WSABUF;
-#define SIO_RCVALL 0
-#define SIO_RCVALL_IGMPMCAST 0
-#define SIO_RCVALL_MCAST 0
-#define ETH_P_ALL 0x0003
-#else // WINDOWS
-
-#include <winsock2.h>
-#include <windows.h>
-
-#endif
-
-#ifndef _RCVALL_H_
-#define _RCVALL_H_
-
-
-#define MAX_IP_SIZE 65535
-#define MIN_IP_HDR_SIZE 20
-
-#define HI_WORD(byte) (((byte) >> 4) & 0x0F)
-#define LO_WORD(byte) ((byte) & 0x0F)
-
-extern char *szProto[];
-
-
-
-void PrintRawBytes (BYTE *ptr, DWORD len);
-int DecodeIGMPHeader(WSABUF *wsabuf, DWORD iphdrlen);
-int DecodeUDPHeader (WSABUF *wsabuf, DWORD iphdrlen);
-int DecodeTCPHeader (WSABUF *wsabuf, DWORD iphdrlenz);
-int DecodeIPHeader (WSABUF *wasbuf, unsigned int srcaddr, unsigned short srcport, unsigned long srcnet,
- unsigned int destaddr, unsigned short destport, unsigned long destnet, DWORD bytesret,
- unsigned short xport, unsigned int xip, unsigned long xnet);
-
-#endif
diff --git a/openwrt/package/pipacs/src/pipacs.c b/openwrt/package/pipacs/src/pipacs.c
deleted file mode 100644
index 4087cd3296..0000000000
--- a/openwrt/package/pipacs/src/pipacs.c
+++ /dev/null
@@ -1,589 +0,0 @@
-// http://www.phj.hu/freesoft.asp
-#include <stdio.h>
-#include <stdlib.h>
-#include "parser.h"
-
-#ifndef LINUX
-#include <mstcpip.h>
-#include <ws2tcpip.h>
-#else
-#include <termios.h>
-struct promisc_device
-{
- char name[16]; /* name (e.g. eth0) */
-
- int reset; /* do we have to reset it on exit ? */
- struct ifreq oldifr; /* old settings */
-
- struct promisc_device *next;
-};
-
-#endif
-
-DWORD dwIoControlCode=SIO_RCVALL;
-DWORD dwProtocol=IPPROTO_IP, dwInterface=0;
-
-#define MAXVER 2
-#define MINVER 6
-SOCKET s;
-
-//
-// Filters (Globals)
-//
-unsigned int uiSourceAddr=0, uiDestAddr=0, uiXAddr=0;
-unsigned short usSourcePort = 0, usDestPort = 0, usXPort = 0;
-unsigned short usSourceNet = 32, usDestNet = 32, usXNet = 32;
-unsigned long ulDestNet=0xffffffff, ulSourceNet=0xffffffff, ulXNet=0xffffffff;
-BOOL bFilter=FALSE;
-int iline=25;
-char myipname[64];
-char pattern[1024];
-int justheader=0;
-int gre=0;
-int sortbysize,fromip,toip;
-int skipvlan=0;
-
-extern char filename[128];
-
-extern char intlist[128];
-
-#ifndef LINUX
-void PrintInterfaceList( void );
-int GetInterface(SOCKET , SOCKADDR_IN *, int );
-#endif
-extern int InitIPAcc( void );
-extern int CloseIPAcc( void );
-extern int iCycle;
-extern int iScreen;
-extern int iFile;
-extern int iDetail;
-extern int iRun;
-extern long lNum;
-extern FILE *f;
-extern int iProto;
-extern int iSum;
-extern char execname[];
-extern int mostird;
-extern int iLnxplus;
-
-int set_raw_mode(void)
-{
- int fd = STDIN_FILENO;
- struct termios t;
-
- if (tcgetattr(fd, &t) < 0) { perror("tcgetattr"); return -1; }
- t.c_lflag &= ~ICANON;
- if (tcsetattr(fd, TCSANOW, &t) < 0) { perror("tcsetattr"); return -1; }
- setbuf(stdin, NULL);
- return 0;
-}//
-// Function: usage
-//
-// Description:
-// Prints usage information.
-//
-char *author = "phj";
-
-void usage(char *progname)
-{
- printf(" usage: %s options\n where options:\n", progname);
- printf(" [-c:sec] Dump cycle in sec (10)\n");
- printf(" [-f:file[-e:program]] Results into a file [and exec program](-)\n");
- printf(" [-n:db] Execute just db cycle (0)\n");
- printf(" [-l:lineno] Print lineno lines of hosts(25)\n");
- printf(" [-k] Sort result by packet count (size)\n");
- printf(" [-1] Ignore source IP (don't ignore)\n");
- printf(" [-2] Ignore destination IP (don't ignore)\n");
- printf(" [-h] Print just the header(use -a!)\n");
- printf(" [-a] Print packet info&data (-)\n");
- printf(" [-p] Print just summary info (-)\n");
- printf(" Otherwise print sum&ip pairs\n");
-//#ifndef LINUX
- printf(" [-t:[tcp|udp|icmp|....|number]] Filter on IP protocoll (ALL)\n");
-//#endif
- printf(" [-g] Make GRE encapsulation trasparent (-)\n");
- printf(" [-v] Skip VLAN headers (-)\n");
- printf(" [-sa:IP[/Net]] Filter on source address (-)/net\n");
- printf(" [-sp:Port] Filter on source port (-)\n");
- printf(" [-da:IP[/Net]] Filter on dest address/net (-)\n");
- printf(" [-dp:Port] Filter on dest port(-)\n");
- printf(" [-xa:IP[/Net]] Filter on src|dest address/net (-)\n");
- printf(" [-xp:Port] Filter on src|dest port (-)\n");
- printf(" [-pa:pattern] String match (0), last param!!!\n");
-#ifndef LINUX
- printf(" [-i:int] Capture on this interface (0)\n");
- printf(" Available interfaces:\n");
- PrintInterfaceList();
-#else
- printf(" [-i:int[,int]] Capture on this interface (eth0)\n");
-#endif
- printf(" Filtering rules: t && (sa|da|xa) && (sp|dp|xp)");
- printf("\nVer. %d.%d (c):2000-2006, P l¢czi-Horv th J nos\n",MAXVER,MINVER);
-#ifndef LINUX
- WSACleanup();
- ExitProcess(-1);
-#else
- exit(5);
-#endif
-}
-
-//
-// Function: ValidateArgs
-//
-// Description:
-// This function parses the command line arguments and
-// sets global variables to indicate how the app should act.
-//
-void ValidateArgs(int argc, char **argv)
-{
- int i,j;
- char *ptr;
-
- sortbysize=1; fromip=1; toip=1;
-
- if (argc <2) { usage(argv[0]); return; }
- if (*(author+2) != 'j') { usage(argv[0]); return; }
- for(i=1; i < argc ;i++) {
- if ((argv[i][0] == '-') || (argv[i][0] == '/')) {
- switch (tolower(argv[i][1])) {
- case 't': // traffic type
- ptr = &argv[i][2];
- while (*++ptr) *ptr = toupper(*ptr);
- ptr = &argv[i][3];
- for ( j=0;j<134;j++) {
- if (!strcmp(ptr, szProto[j])) {
-// dwIoControlCode = SIO_RCVALL;
-#ifdef LINUX
- dwProtocol = j;
-#endif
- iProto=j;
- break;
- }
- }
- if ((j>133) && atoi(&argv[i][3])) {
-// dwIoControlCode = SIO_RCVALL;
-#ifdef LINUX
- dwProtocol = atoi(&argv[i][3]);
-#endif
- iProto=atoi(&argv[i][3]);
- } else if (j>133) usage(argv[0]);
- break;
- case 'i': // interface number
-#ifndef LINUX
- dwInterface = atoi(&argv[i][3]);
-#else
- strcpy(intlist,&argv[i][3]);
- ptr=strchr(intlist,' ');
- if (ptr) *ptr=0;
-#endif
- break;
- case 'g': // gre
- gre=1;
- break;
- case 'c': // cycle time
- iCycle = atoi(&argv[i][3]);
- break;
- case 'a': // cycle time
- iDetail = 1;
- break;
- case 'h': // cycle time
- iDetail = justheader = 1;
- break;
- case 'n': // just n cycle
- lNum = atol(&argv[i][3]);
- break;
- case 'l': // lineno lines
- iline = atoi(&argv[i][3]);
- break;
- case 'p': // just summary
- if ((tolower(argv[i][2]) == 'a')) {
- strcpy(pattern,&argv[i][4]); printf("\n Pattern: \'%s",&argv[i][4]);
- while (++i<argc) { strcat(pattern," "); strcat(pattern,&argv[i][0]); printf(" %s",argv[i]); }
- printf("\'\n");
- } else iSum=1;
- break;
- case 'f': // filename to write
- strcpy(filename,&argv[i][3]);
- iFile=1; //iScreen=0;
- break;
- case 'e': // execname
- strcpy(execname,&argv[i][3]);
- break;
- case 'k': // sor by count
- sortbysize = 0;
- break;
- case '1': // ignore src
- fromip = 0;
- break;
- case '2': // ignore dst
- toip = 0;
- break;
- case 'v': // sor by count
- skipvlan = 4;
- if ((tolower(argv[i][2]) == ':')) {
- skipvlan=atoi(&argv[i][3]);
- }
- break;
- case 's': // Filter on source ip or port
- if (tolower(argv[i][2]) == 'a') {
- ptr=strchr(&argv[i][4],'/');
- if (ptr) { usSourceNet=atoi(ptr+1); *ptr=0;}
- uiSourceAddr = ntohl(inet_addr(&argv[i][4]));
- } else if (tolower(argv[i][2]) == 'p')
- usSourcePort = (unsigned short)atoi(&argv[i][4]);
- else
- usage(argv[0]);
- bFilter = TRUE;
- break;
- case 'd': // Filter on dest ip or port
- if (tolower(argv[i][2]) == 'a') {
- ptr=strchr(&argv[i][4],'/');
- if (ptr) { usDestNet=atoi(ptr+1); *ptr=0; }
- uiDestAddr = ntohl(inet_addr(&argv[i][4]));
- } else if (tolower(argv[i][2]) == 'p')
- usDestPort = (unsigned short)atoi(&argv[i][4]);
- else
- usage(argv[0]);
- bFilter = TRUE;
- break;
- case 'x': // Filter on source or dest ip or port
- if (tolower(argv[i][2]) == 'a') {
- ptr=strchr(&argv[i][4],'/');
- if (ptr) { usXNet=atoi(ptr+1); *ptr=0; }
- uiXAddr = ntohl(inet_addr(&argv[i][4]));
- } else if (tolower(argv[i][2]) == 'p')
- usXPort = (unsigned short)atoi(&argv[i][4]);
- else
- usage(argv[0]);
- bFilter = TRUE;
- break;
- default:
- usage(argv[0]);
- }
- } else usage(argv[0]);
- }
- iLnxplus+=skipvlan;
- return;
-}
-
-#ifndef LINUX
-//
-// Function: PrintInterfaceList
-//
-// Description:
-// This function prints all local IP interfaces.
-//
-void PrintInterfaceList()
-{
- SOCKET_ADDRESS_LIST *slist=NULL;
- SOCKET s;
- char buf[2048];
- DWORD dwBytesRet;
- int ret,
- i;
-
- s = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
- if (s == SOCKET_ERROR) {
- printf("socket() failed: %d\n", WSAGetLastError());
- return;
- }
- ret = WSAIoctl(s, SIO_ADDRESS_LIST_QUERY, NULL, 0, buf, 2048,&dwBytesRet, NULL, NULL);
- if (ret == SOCKET_ERROR){
- printf("WSAIoctl(SIO_ADDRESS_LIST_QUERY) failed: %d\n",WSAGetLastError());
- return;
- }
- slist = (SOCKET_ADDRESS_LIST *)buf;
- for(i=0; i < slist->iAddressCount ;i++) {
- printf(" %-2d ........ [%s]\n", i,
- inet_ntoa(((SOCKADDR_IN *)slist->Address[i].lpSockaddr)->sin_addr));
- }
- closesocket(s);
- return;
-}
-
-//
-// Function: GetInterface
-//
-// Description:
-// This function retrieves a zero based index and returns
-// the IP interface corresponding to that.
-//
-int GetInterface(SOCKET s, SOCKADDR_IN *ifx, int num)
-{
- SOCKET_ADDRESS_LIST *slist=NULL;
- char buf[2048];
- DWORD dwBytesRet;
- int ret;
-
- ret = WSAIoctl(s, SIO_ADDRESS_LIST_QUERY, NULL, 0, buf, 2048,&dwBytesRet, NULL, NULL);
- if (ret == SOCKET_ERROR) {
- printf("WSAIoctl(SIO_ADDRESS_LIST_QUERY) failed: %d\n",WSAGetLastError());
- return -1;
- }
- slist = (SOCKET_ADDRESS_LIST *)buf;
- if (num >= slist->iAddressCount) return -1;
- ifx->sin_addr.s_addr = ((SOCKADDR_IN *)slist->Address[num].lpSockaddr)->sin_addr.s_addr;
- if (*author != 'p') return -1;
- return 0;
-}
-#endif
-#ifdef LINUX
-struct promisc_device *prom;
-
-void init_capture( void )
-/*
- * 1) Open our capture socket
- * 2) Set all the promisc devices to promiscous mode
- */
-{
- struct ifreq ifr;
- struct promisc_device *p,*pp;
- struct protoent *pr;
- char *p1,*p2;
-
- if ((s = socket (AF_INET, SOCK_PACKET, htons (ETH_P_ALL))) < 0)
- {
- printf(" can't get socket: \n");
- exit(1);
- }
- strcpy(myipname,intlist);
- p1=intlist; p=NULL;
- while (p1) {
- pp=p;
- p = malloc(sizeof(struct promisc_device));
- if (pp) pp->next=p; else prom=p;
- if ( (p2=strchr(p1,','))) *p2++=0;
- strcpy(&p->name,p1); p->next=NULL;
- printf(" %s",p->name); fflush(stdout);
- p1=p2;
-// while(p!=NULL) {
- strcpy (p -> oldifr.ifr_name, p -> name);
-
- if (ioctl (s, SIOCGIFFLAGS, &(p -> oldifr)) < 0) {
- printf(" can't get flags: \n");
- exit(2);
- }
- p -> reset = 1;
- ifr = p -> oldifr;
- if (ifr.ifr_flags & IFF_PROMISC) printf(" already promisc! \n");
- ifr.ifr_flags |= IFF_PROMISC;
- if (ioctl (s, SIOCSIFFLAGS, &ifr) < 0) {
- printf(" can't set flags: \n");
- exit(3);
- }
-// p = p -> next;
- }
-}
-
-void exit_capture(void)
-{
- struct promisc_device *p;
-
- /* do we have to check (capture_sd >= 0) ? */
-
- p = prom;
-
- while(p != NULL) {
- if (ioctl (s, SIOCSIFFLAGS, &(p -> oldifr)) < 0) {
- printf("can't reset flags: \n");
- }
-
- p = p -> next;
- }
-
- close (s);
-}
-#endif
-//
-// Function: main
-//
-int main(int argc, char **argv) {
- WSADATA wsd;
- SOCKADDR_IN if0;
- int ret,count;
- unsigned int optval;
- DWORD dwBytesRet,
- dwFlags,
- nproc;
- char rcvbuf[MAX_IP_SIZE];
- WSABUF wbuf;
- unsigned long i;
-#ifndef LINUX
- // Load Winsock
- //
- if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) {
- printf(" WSAStartup() failed: %d\n", GetLastError());
- return -1;
- }
-#else
- SOCKADDR ssaddr;
- struct promisc_device *p;
- fd_set ready;
- struct timeval tv;
-#endif
- char Key;
- int status;
- FILE *input;
-// Parse the command line
-//
- strcpy(intlist,"eth0");
- for(i=100;i<255;i++) szProto[i]="?!?";
- szProto[103]="PIM";
- szProto[108]="IPCOMP";
- szProto[112]="VRRP";
- szProto[115]="L2TP";
- szProto[124]="ISIS";
- szProto[132]="SCTP";
- szProto[133]="FC";
- *execname=0;
- ValidateArgs(argc, argv);
- if (bFilter) {
- i=uiSourceAddr;
- if ( i || usSourcePort)
- printf(" Source: %03d.%03d.%03d.%03d/%d:%d\n",(i&0xff000000)>>24,(i&0x00ff0000)>>16,(i&0x0000ff00)>>8,i&0xff,uiSourceAddr?usSourceNet:0, usSourcePort);
- i=uiDestAddr;
- if ( i || usDestPort)
- printf(" Dest. : %03d.%03d.%03d.%03d/%d:%d\n",(i&0xff000000)>>24,(i&0x00ff0000)>>16,(i&0x0000ff00)>>8,i&0xff,uiDestAddr?usDestNet:0, usDestPort);
- i=uiXAddr;
- if ( i || usXPort)
- printf(" IP. : %03d.%03d.%03d.%03d/%d:%d\n",(i&0xff000000)>>24,(i&0x00ff0000)>>16,(i&0x0000ff00)>>8,i&0xff,uiXAddr?usXNet:0, usXPort);
- }
- if (iFile) printf(" To file : %s\n",filename);
- if (iProto) printf(" Protocol: %s (%d)\n",szProto[iProto],iProto);
- // Create a raw socket for receiving IP datagrams
- //
-#ifndef LINUX
- s = WSASocket(AF_INET, SOCK_RAW, dwProtocol, NULL, 0, WSA_FLAG_OVERLAPPED);
- if (s == INVALID_SOCKET)
- {
- printf("WSASocket() failed: %d\n", WSAGetLastError());
- return -1;
- }
- // Get an interface to read IP packets on
- //
- memset(&if0,0,sizeof(if0));
- if0.sin_family = AF_INET;
- if0.sin_port = htons(0);
- if (GetInterface(s, &if0, dwInterface) != 0)
- {
- printf("Unable to obtain an interface\n");
- return -1;
- }
- sprintf(myipname,"%-16s",inet_ntoa(if0.sin_addr));
-#else
- printf("starting capture ...."); fflush(stdout);
- init_capture();
- printf(" capture started ....\n"); fflush(stdout);
-#endif
- printf(" Binding to IF: %s\n", myipname);
-#ifndef LINUX
-//
-// This socket MUST be bound before calling the ioctl
-//
-
- if (bind(s, (SOCKADDR *)&if0, sizeof(if0)) == SOCKET_ERROR) {
- printf("bind() failed: %d\n", WSAGetLastError());
- return -1;
- }
-//
-// Set the SIO_RCVALLxxx ioctl
-//
- optval = 1;
- if (WSAIoctl(s, dwIoControlCode, &optval, sizeof(optval),
- NULL, 0, &dwBytesRet, NULL, NULL) == SOCKET_ERROR) {
- printf("WSAIotcl() set raw socket failed; %d\n", WSAGetLastError());
-// return -1;
- optval = 2;
- if (WSAIoctl(s, dwIoControlCode, &optval, sizeof(optval),
- NULL, 0, &dwBytesRet, NULL, NULL) == SOCKET_ERROR) {
- printf("WSAIotcl() set raw socket only failed; %d\n", WSAGetLastError());
- return -1;
- }
- }
- system("cls");
-#else
- tv.tv_sec=0; tv.tv_usec=0;
- set_raw_mode();
- FD_ZERO(&ready);
- FD_SET(STDIN_FILENO,&ready);
-#endif
- input = fopen("/dev/tty", "r"); //open the terminal keyboard
- if (uiSourceAddr==0) ulSourceNet=0;
- else for ( i=0; i<32-usSourceNet; i++) ulSourceNet <<= 1;
- if (uiDestAddr==0) ulDestNet=0;
- else for ( i=0; i<32-usDestNet; i++) ulDestNet <<= 1;
- if (uiXAddr==0) ulXNet=0;
- else for ( i=0; i<32-usXNet; i++) ulXNet <<= 1;
- if (uiXAddr) uiSourceAddr=uiDestAddr=uiXAddr;
- if (usXPort) usSourcePort=usDestPort=usXPort;
- if (ulXNet) ulSourceNet=ulDestNet=ulXNet;
- InitIPAcc();
-// Start receiving IP datagrams until interrupted
-//
- count = 0;
- if (iFile && iDetail) f=fopen(filename,"w+");
- if (iProto) bFilter=1;
- if (*(author+1) != 'h') iRun=0;
- while (iRun) {
- rcvbuf[MAX_IP_SIZE]=0;
- wbuf.len = MAX_IP_SIZE;
- wbuf.buf = rcvbuf;
-#ifndef LINUX
- dwFlags = 0;
- ret = WSARecv(s, &wbuf, 1, &dwBytesRet, &dwFlags, NULL, NULL);
- if (ret == SOCKET_ERROR) {
- printf("WSARecv() failed: %d\n", WSAGetLastError());
- return -1;
- }
- if (kbhit()) {
-#else
- dwFlags = sizeof(ssaddr);
-
- ret = recvfrom (s, wbuf.buf, MAX_IP_SIZE, 0, &ssaddr, (int *) &dwFlags);
- if (ret == -1) continue;
- dwBytesRet=wbuf.len=ret;
- p=prom;
- while(p!=NULL) {
- if (!strcmp(p -> name, ssaddr.sa_data)) break;
- p=p->next;
- }
- if (!p) {
-// printf("\n%s: ignored",ssaddr.sa_data); fflush(stdout);
- continue;
- }
- FD_ZERO(&ready);
- FD_SET(STDIN_FILENO,&ready);
- if (select(STDIN_FILENO+1,&ready,NULL,NULL,&tv)>0) {
-// if (FD_ISSET(STDIN_FILENO,&ready)) {
-#endif
- switch (getchar()) { /* branch to appropiate key handler */
- case 0x1b: /* Esc */
- iRun=0;
- break;
- default:
- mostird=1;
- break;
- } //end of switch key
- }
-
-// Deccode the IP header
-//
- if (!(nproc = DecodeIPHeader(&wbuf, uiSourceAddr, usSourcePort, ulSourceNet,
- uiDestAddr, usDestPort, ulDestNet, dwBytesRet,usXPort,uiXAddr,ulXNet)))
- {
-// printf("Error decoding IP header!\n");
-// break;
- }
- }
- // Cleanup
- //
- if (iRun && !iDetail) CloseIPAcc();
- if (f) fclose(f);
-#ifndef LINUX
- closesocket(s);
- WSACleanup();
-#else
- exit_capture();
-#endif
- return 0;
-}
diff --git a/openwrt/package/pmacct/Config.in b/openwrt/package/pmacct/Config.in
deleted file mode 100644
index 2c6289113c..0000000000
--- a/openwrt/package/pmacct/Config.in
+++ /dev/null
@@ -1,215 +0,0 @@
-menu "pmacct............................ IPv4/IPv6 accounting and aggregation tools"
-
-config BR2_COMPILE_PMACCT
- tristate
- default n
- depends BR2_COMPILE_PMACCT_BASIC || BR2_COMPILE_PMACCT_MYSQL || BR2_COMPILE_PMACCT_PGSQL || BR2_COMPILE_PMACCT_SQLITE || BR2_COMPILE_PMACCT_CUSTOM
-
-config BR2_COMPILE_PMACCT_BASIC
- tristate
- default n
- depends BR2_PACKAGE_NFACCTD_BASIC || BR2_PACKAGE_PMACCTD_BASIC
- select BR2_COMPILE_PMACCT
-
-config BR2_COMPILE_PMACCT_MYSQL
- tristate
- default n
- depends BR2_PACKAGE_NFACCTD_MYSQL || BR2_PACKAGE_PMACCTD_MYSQL
- select BR2_COMPILE_PMACCT
-
-config BR2_COMPILE_PMACCT_PGSQL
- tristate
- default n
- depends BR2_PACKAGE_NFACCTD_PGSQL || BR2_PACKAGE_PMACCTD_PGSQL
- select BR2_COMPILE_PMACCT
-
-config BR2_COMPILE_PMACCT_SQLITE
- tristate
- default n
- depends BR2_PACKAGE_NFACCTD_SQLITE || BR2_PACKAGE_PMACCTD_SQLITE
- select BR2_COMPILE_PMACCT
-
-config BR2_COMPILE_PMACCT_CUSTOM
- tristate
- default n
- depends BR2_PACKAGE_NFACCTD_CUSTOM || BR2_PACKAGE_PMACCTD_CUSTOM
- select BR2_COMPILE_PMACCT
-
-choice
- prompt "nfacctd......................... NetFlow accounting daemon"
- tristate
- default m if CONFIG_DEVEL
- optional
- help
-
- An IPv4/IPv6 Netflow accounting and aggregation daemon
-
- http://www.ba.cnr.it/~paolo/pmacct/
-
- Depends:
- - libmysqlclient (for MySQL database logging support)
- - libpq (for PostgreSQL database logging support)
- - libsqlite (for SQLite database logging support)
-
-
- config BR2_PACKAGE_NFACCTD_BASIC
- prompt "nfacctd....................... built without database support"
- tristate
- select BR2_COMPILE_PMACCT_BASIC
- select BR2_PACKAGE_LIBPCAP
-
- config BR2_PACKAGE_NFACCTD_MYSQL
- prompt "nfacctd-mysql................. built with MySQL database support"
- tristate
- select BR2_COMPILE_PMACCT_MYSQL
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBMYSQLCLIENT
-
- config BR2_PACKAGE_NFACCTD_PGSQL
- prompt "nfacctd-pgsql................. built with PostgreSQL database support"
- tristate
- select BR2_COMPILE_PMACCT_PGSQL
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPQ
-
- config BR2_PACKAGE_NFACCTD_SQLITE
- prompt "nfacctd-sqlite................ built with SQLite database support"
- tristate
- select BR2_COMPILE_PMACCT_SQLITE
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBSQLITE
-
- config BR2_PACKAGE_NFACCTD_CUSTOM
- prompt "nfacctd-custom................ customized to your needs"
- tristate
- select BR2_COMPILE_PMACCT_CUSTOM
- select BR2_PACKAGE_LIBPCAP
-
- config BR2_COMPILE_NFACCTD_ENABLE_DEBUG
- prompt "debug (enable debugging options, useful for bugreports)"
- bool
- default n
- depends BR2_PACKAGE_NFACCTD_CUSTOM
-
- config BR2_COMPILE_NFACCTD_ENABLE_IPV6
- prompt "IPv6 support"
- bool
- default n
- depends BR2_PACKAGE_NFACCTD_CUSTOM
-
- config BR2_COMPILE_NFACCTD_WITH_MYSQL
- prompt "MySQL database support"
- bool
- default n
- depends BR2_PACKAGE_NFACCTD_CUSTOM
- select BR2_PACKAGE_LIBMYSQLCLIENT
-
- config BR2_COMPILE_NFACCTD_WITH_PGSQL
- prompt "PostgreSQL database support"
- bool
- default n
- depends BR2_PACKAGE_NFACCTD_CUSTOM
- select BR2_PACKAGE_LIBPQ
-
- config BR2_COMPILE_NFACCTD_WITH_SQLITE
- prompt "SQLite database support"
- bool
- default n
- depends BR2_PACKAGE_NFACCTD_CUSTOM
- select BR2_PACKAGE_LIBSQLITE
-
-endchoice
-
-choice
- prompt "pmacctd......................... IP accounting daemon (libpcap based)"
- tristate
- default m if CONFIG_DEVEL
- optional
- help
-
- An IPv4/IPv6 libpcap-based accounting and aggregation daemon
-
- http://www.ba.cnr.it/~paolo/pmacct/
-
- Depends:
- - libpcap
- - libmysqlclient (for MySQL database logging support)
- - libpq (for PostgreSQL database logging support)
- - libsqlite (for SQLite database logging support)
-
-
- config BR2_PACKAGE_PMACCTD_BASIC
- prompt "pmacctd....................... built without database support"
- tristate
- select BR2_COMPILE_PMACCT_BASIC
- select BR2_PACKAGE_LIBPCAP
-
- config BR2_PACKAGE_PMACCTD_MYSQL
- prompt "pmacctd-mysql................. built with MySQL database support"
- tristate
- select BR2_COMPILE_PMACCT_MYSQL
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBMYSQLCLIENT
-
- config BR2_PACKAGE_PMACCTD_PGSQL
- prompt "pmacctd-pgsql................. built with PostgreSQL database support"
- tristate
- select BR2_COMPILE_PMACCT_PGSQL
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPQ
-
- config BR2_PACKAGE_PMACCTD_SQLITE
- prompt "pmacctd-sqlite................ built with SQLite database support"
- tristate
- select BR2_COMPILE_PMACCT_SQLITE
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBSQLITE
-
- config BR2_PACKAGE_PMACCTD_CUSTOM
- prompt "pmacctd-custom................ customized to your needs"
- tristate
- select BR2_COMPILE_PMACCT_CUSTOM
- select BR2_PACKAGE_LIBPCAP
-
- config BR2_COMPILE_PMACCTD_ENABLE_DEBUG
- prompt "debug (enable debugging options, useful for bugreports)"
- bool
- default n
- depends BR2_PACKAGE_PMACCTD_CUSTOM
-
- config BR2_COMPILE_PMACCTD_ENABLE_IPV6
- prompt "IPv6 support"
- bool
- default n
- depends BR2_PACKAGE_PMACCTD_CUSTOM
-
- config BR2_COMPILE_PMACCTD_WITH_MYSQL
- prompt "MySQL database support"
- bool
- default n
- depends BR2_PACKAGE_PMACCTD_CUSTOM
- select BR2_PACKAGE_LIBMYSQLCLIENT
-
- config BR2_COMPILE_PMACCTD_WITH_PGSQL
- prompt "PostgreSQL database support"
- bool
- default n
- depends BR2_PACKAGE_PMACCTD_CUSTOM
- select BR2_PACKAGE_LIBPQ
-
- config BR2_COMPILE_PMACCTD_WITH_SQLITE
- prompt "SQLite database support"
- bool
- default n
- depends BR2_PACKAGE_PMACCTD_CUSTOM
- select BR2_PACKAGE_LIBSQLITE
-
-endchoice
-
-config BR2_PACKAGE_PMACCT_CLIENT
- prompt "pmacct-client................... Command-line client to gather data from the IMT plugin"
- tristate
- default n
- select BR2_COMPILE_PMACCT
-
-endmenu
diff --git a/openwrt/package/pmacct/Makefile b/openwrt/package/pmacct/Makefile
deleted file mode 100644
index a9bd44b52b..0000000000
--- a/openwrt/package/pmacct/Makefile
+++ /dev/null
@@ -1,184 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pmacct
-PKG_VERSION:=0.10.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=ed510e7ee2130d1f37f27901b89e985a
-
-PKG_SOURCE_URL:=http://www.ba.cnr.it/~paolo/pmacct/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)rc2.tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-PMACCT_BASIC_CONFIGURE_OPTS := \
-
-PMACCT_MYSQL_CONFIGURE_OPTS := \
- --enable-mysql \
- --with-mysql-includes="$(STAGING_DIR)/usr/include" \
- --with-mysql-libs="$(STAGING_DIR)/usr/lib/mysql"
-
-PMACCT_PGSQL_CONFIGURE_OPTS := \
- --enable-pgsql \
- --with-pgsql-includes="$(STAGING_DIR)/usr/include" \
- --with-pgsql-libs="$(STAGING_DIR)/usr/lib"
-
-PMACCT_SQLITE_CONFIGURE_OPTS := \
- --enable-sqlite3 \
- --with-sqlite3-includes="$(STAGING_DIR)/usr/include" \
- --with-sqlite3-libs="$(STAGING_DIR)/usr/lib"
-
-NFACCTD_CUSTOM_CONFIGURE_OPTS := \
-
-ifeq ($(BR2_PACKAGE_NFACCTD_ENABLE_DEBUG),y)
-NFACCTD_CUSTOM_CONFIGURE_OPTS += --enable-debug
-endif
-
-ifeq ($(BR2_PACKAGE_NFACCTD_ENABLE_IPV6),y)
-NFACCTD_CUSTOM_CONFIGURE_OPTS += --enable-ipv6
-endif
-
-ifeq ($(BR2_PACKAGE_NFACCTD_WITH_MYSQL),y)
-NFACCTD_CUSTOM_CONFIGURE_OPTS += $(PMACCT_MYSQL_CONFIGURE_OPTS)
-endif
-
-ifeq ($(BR2_PACKAGE_NFACCTD_WITH_PGSQL),y)
-NFACCTD_CUSTOM_CONFIGURE_OPTS += $(PMACCT_PGSQL_CONFIGURE_OPTS)
-endif
-
-ifeq ($(BR2_PACKAGE_NFACCTD_WITH_SQLITE),y)
-NFACCTD_CUSTOM_CONFIGURE_OPTS += $(PMACCT_SQLITE_CONFIGURE_OPTS)
-endif
-
-PMACCTD_CUSTOM_CONFIGURE_OPTS := \
-
-ifeq ($(BR2_PACKAGE_PMACCTD_ENABLE_DEBUG),y)
-PMACCTD_CUSTOM_CONFIGURE_OPTS += --enable-debug
-endif
-
-ifeq ($(BR2_PACKAGE_PMACCTD_ENABLE_IPV6),y)
-PMACCTD_CUSTOM_CONFIGURE_OPTS += --enable-ipv6
-endif
-
-ifeq ($(BR2_PACKAGE_PMACCTD_WITH_MYSQL),y)
-PMACCTD_CUSTOM_CONFIGURE_OPTS += $(PMACCT_MYSQL_CONFIGURE_OPTS)
-endif
-
-ifeq ($(BR2_PACKAGE_PMACCTD_WITH_PGSQL),y)
-PMACCTD_CUSTOM_CONFIGURE_OPTS += $(PMACCT_PGSQL_CONFIGURE_OPTS)
-endif
-
-ifeq ($(BR2_PACKAGE_PMACCTD_WITH_SQLITE),y)
-PMACCTD_CUSTOM_CONFIGURE_OPTS += $(PMACCT_SQLITE_CONFIGURE_OPTS)
-endif
-
-define PKG_build
-
-ifneq ($(BR2_PACKAGE_$(1)),)
-BUILD_TARGETS += $(PKG_BUILD_DIR)/$(2)
-BUILD_TARGETS += $(PKG_BUILD_DIR)/$(3)
-endif
-
-$(PKG_BUILD_DIR)/$(2) $(PKG_BUILD_DIR)/$(3): $(PKG_BUILD_DIR)/.prepared
- -$(MAKE) -C $(PKG_BUILD_DIR) distclean
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/sbin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib/locate \
- --localstatedir=/var/lib \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --with-pcap-includes="$(STAGING_DIR)/usr/include" \
- --with-pcap-libs="$(STAGING_DIR)/usr/lib" \
- $$($(1)_CONFIGURE_OPTS) \
- );
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include"
- mv -f $(PKG_BUILD_DIR)/nfacctd $(PKG_BUILD_DIR)/$(2)
- mv -f $(PKG_BUILD_DIR)/pmacctd $(PKG_BUILD_DIR)/$(3)
-
-endef
-
-define PKG_package
-
-$$(IPKG_$(1)): $(PKG_BUILD_DIR)/$(2)
- install -d -m0755 $$(IDIR_$(1))/etc
- install -m0644 ./files/$(3).conf $$(IDIR_$(1))/etc/
- install -d -m0755 $$(IDIR_$(1))/etc/default
- install -m0644 ./files/$(3).default $$(IDIR_$(1))/etc/default/$(3)
- install -d -m0755 $$(IDIR_$(1))/etc/init.d
- install -m0755 ./files/$(3).init $$(IDIR_$(1))/etc/init.d/$(3)
- install -d -m0755 $$(IDIR_$(1))/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/$(2) $$(IDIR_$(1))/usr/sbin/$(3)
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-$(eval $(call PKG_template,NFACCTD_BASIC,nfacctd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,NFACCTD_MYSQL,nfacctd-mysql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,NFACCTD_PGSQL,nfacctd-pgsql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,NFACCTD_SQLITE,nfacctd-sqlite,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,NFACCTD_CUSTOM,nfacctd-custom,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PMACCTD_BASIC,pmacctd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PMACCTD_MYSQL,pmacctd-mysql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PMACCTD_PGSQL,pmacctd-pgsql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PMACCTD_SQLITE,pmacctd-sqlite,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PMACCTD_CUSTOM,pmacctd-custom,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PMACCT_CLIENT,pmacct-client,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_build,PMACCT_BASIC,nfacctd-basic,pmacctd-basic,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_build,PMACCT_MYSQL,nfacctd-mysql,pmacctd-mysql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_build,PMACCT_PGSQL,nfacctd-pgsql,pmacctd-pgsql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_build,PMACCT_SQLITE,nfacctd-sqlite,pmacctd-sqlite,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_build,NFACCTD_CUSTOM,nfacctd-custom,pmacctd-dummy,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_build,PMACCTD_CUSTOM,nfacctd-dummy,pmacctd-custom,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_package,NFACCTD_BASIC,nfacctd-basic,nfacctd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_package,NFACCTD_MYSQL,nfacctd-mysql,nfacctd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_package,NFACCTD_PGSQL,nfacctd-pgsql,nfacctd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_package,NFACCTD_SQLITE,nfacctd-sqlite,nfacctd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_package,NFACCTD_CUSTOM,nfacctd-custom,nfacctd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_package,PMACCTD_BASIC,pmacctd-basic,pmacctd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_package,PMACCTD_MYSQL,pmacctd-mysql,pmacctd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_package,PMACCTD_PGSQL,pmacctd-pgsql,pmacctd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_package,PMACCTD_SQLITE,pmacctd-sqlite,pmacctd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_package,PMACCTD_CUSTOM,pmacctd-custom,pmacctd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(BUILD_TARGETS)
- touch $@
-
-$(IPKG_PMACCT_CLIENT):
- install -d -m0755 $(IDIR_PMACCT_CLIENT)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/pmacct $(IDIR_PMACCT_CLIENT)/usr/sbin/
- $(RSTRIP) $(IDIR_PMACCT_CLIENT)
- $(IPKG_BUILD) $(IDIR_PMACCT_CLIENT) $(PACKAGE_DIR)
diff --git a/openwrt/package/pmacct/files/nfacctd.conf b/openwrt/package/pmacct/files/nfacctd.conf
deleted file mode 100644
index a9817b2185..0000000000
--- a/openwrt/package/pmacct/files/nfacctd.conf
+++ /dev/null
@@ -1,28 +0,0 @@
-!
-! nfacctd configuration example
-!
-! debug: true
-daemonize: true
-pidfile: /var/run/nfacctd.pid
-! aggregate_filter[dummy]: src net 192.168.0.0/16
-aggregate: src_host, dst_host
-! plugin_buffer_size: 1024
-! nfacctd_port: 5678
-! nfacctd_time_secs: true
-! nfacctd_time_new: true
-plugins: memory
-imt_buckets: 65537
-imt_mem_pools_size: 65536
-! imt_mem_pools_number: 0
-! plugins: mysql
-! plugins: pgsql
-! sql_db: pmacct
-! sql_table: acct
-! sql_table_version: 2
-! sql_passwd: arealsmartpwd
-! sql_user: pmacct
-! sql_refresh_time: 90
-! sql_optimize_clauses: true
-! sql_history: 10m
-! sql_history_roundoff: mh
-! networks_file: ./networks.example
diff --git a/openwrt/package/pmacct/files/nfacctd.default b/openwrt/package/pmacct/files/nfacctd.default
deleted file mode 100644
index 9315b280c9..0000000000
--- a/openwrt/package/pmacct/files/nfacctd.default
+++ /dev/null
@@ -1 +0,0 @@
-OPTIONS="-f /etc/nfacctd.conf"
diff --git a/openwrt/package/pmacct/files/nfacctd.init b/openwrt/package/pmacct/files/nfacctd.init
deleted file mode 100644
index c38c7f14b2..0000000000
--- a/openwrt/package/pmacct/files/nfacctd.init
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-BIN=nfacctd
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- mkdir -p $RUN_D
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill -INT $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/pmacct/files/pmacctd.conf b/openwrt/package/pmacct/files/pmacctd.conf
deleted file mode 100644
index 65c6387ea3..0000000000
--- a/openwrt/package/pmacct/files/pmacctd.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-!
-! pmacctd configuration example
-!
-! debug: true
-interface: vlan1
-daemonize: true
-pidfile: /var/run/pmacctd.pid
-pmacctd_id: 1
-aggregate: src_host,dst_host
-! aggregate: src_net,dst_net
-plugins: memory
-imt_buckets: 65537
-imt_mem_pools_size: 65536
-! imt_mem_pools_number: 0
-! plugins: mysql
-! plugins: pgsql
-! sql_db: pmacct
-! sql_table: acct
-! sql_table_version: 2
-! sql_passwd: arealsmartpwd
-! sql_user: pmacct
-! sql_refresh_time: 90
-! sql_optimize_clauses: true
-! sql_history: 10m
-! sql_history_roundoff: mh
-! networks_file: ./networks.example
diff --git a/openwrt/package/pmacct/files/pmacctd.default b/openwrt/package/pmacct/files/pmacctd.default
deleted file mode 100644
index 3c06f085f6..0000000000
--- a/openwrt/package/pmacct/files/pmacctd.default
+++ /dev/null
@@ -1 +0,0 @@
-OPTIONS="-f /etc/pmacctd.conf"
diff --git a/openwrt/package/pmacct/files/pmacctd.init b/openwrt/package/pmacct/files/pmacctd.init
deleted file mode 100644
index 0af1095000..0000000000
--- a/openwrt/package/pmacct/files/pmacctd.init
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-BIN=pmacctd
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- mkdir -p $RUN_D
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill -INT $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/pmacct/ipkg/nfacctd-custom.control b/openwrt/package/pmacct/ipkg/nfacctd-custom.control
deleted file mode 100644
index 096be7e04a..0000000000
--- a/openwrt/package/pmacct/ipkg/nfacctd-custom.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: nfacctd-custom
-Priority: optional
-Section: net
-Description: a NetFlow accounting daemon,
- built with custom options
-Depends: libpcap
diff --git a/openwrt/package/pmacct/ipkg/nfacctd-mysql.control b/openwrt/package/pmacct/ipkg/nfacctd-mysql.control
deleted file mode 100644
index e030db8fcc..0000000000
--- a/openwrt/package/pmacct/ipkg/nfacctd-mysql.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: nfacctd-mysql
-Priority: optional
-Section: net
-Description: a NetFlow accounting daemon,
- built with MySQL database support
-Depends: libmysqlclient, libpcap
diff --git a/openwrt/package/pmacct/ipkg/nfacctd-pgsql.control b/openwrt/package/pmacct/ipkg/nfacctd-pgsql.control
deleted file mode 100644
index 8500ff3426..0000000000
--- a/openwrt/package/pmacct/ipkg/nfacctd-pgsql.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: nfacctd-pgsql
-Priority: optional
-Section: net
-Description: a NetFlow accounting daemon,
- built with PostgreSQL database support
-Depends: libpq, libpcap
diff --git a/openwrt/package/pmacct/ipkg/nfacctd-sqlite.control b/openwrt/package/pmacct/ipkg/nfacctd-sqlite.control
deleted file mode 100644
index add839416b..0000000000
--- a/openwrt/package/pmacct/ipkg/nfacctd-sqlite.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: nfacctd-sqlite
-Priority: optional
-Section: net
-Description: a NetFlow accounting daemon,
- built with SQLite database support
-Depends: libsqlite, libpcap
diff --git a/openwrt/package/pmacct/ipkg/nfacctd.conffiles b/openwrt/package/pmacct/ipkg/nfacctd.conffiles
deleted file mode 100644
index dec6203510..0000000000
--- a/openwrt/package/pmacct/ipkg/nfacctd.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/default/nfacctd
-/etc/nfacctd.conf
diff --git a/openwrt/package/pmacct/ipkg/nfacctd.control b/openwrt/package/pmacct/ipkg/nfacctd.control
deleted file mode 100644
index e5afbf68d3..0000000000
--- a/openwrt/package/pmacct/ipkg/nfacctd.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: nfacctd
-Priority: optional
-Section: net
-Description: a NetFlow accounting daemon,
- built without database support
-Depends: libpcap
diff --git a/openwrt/package/pmacct/ipkg/pmacct-client.control b/openwrt/package/pmacct/ipkg/pmacct-client.control
deleted file mode 100644
index c943e731e5..0000000000
--- a/openwrt/package/pmacct/ipkg/pmacct-client.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: pmacct-client
-Priority: optional
-Section: net
-Description: a command-line client for pmacctd or nfacctd,
- used to retrieve data from an active memory plugin
diff --git a/openwrt/package/pmacct/ipkg/pmacctd-custom.control b/openwrt/package/pmacct/ipkg/pmacctd-custom.control
deleted file mode 100644
index 0278df1426..0000000000
--- a/openwrt/package/pmacct/ipkg/pmacctd-custom.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: pmacctd-custom
-Priority: optional
-Section: net
-Description: an IP accounting daemon,
- built with custom options
-Depends: libpcap
diff --git a/openwrt/package/pmacct/ipkg/pmacctd-mysql.control b/openwrt/package/pmacct/ipkg/pmacctd-mysql.control
deleted file mode 100644
index 2ea345fcb6..0000000000
--- a/openwrt/package/pmacct/ipkg/pmacctd-mysql.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: pmacctd-mysql
-Priority: optional
-Section: net
-Description: an IP accounting daemon,
- built with MySQL database support
-Depends: libmysqlclient, libpcap
diff --git a/openwrt/package/pmacct/ipkg/pmacctd-pgsql.control b/openwrt/package/pmacct/ipkg/pmacctd-pgsql.control
deleted file mode 100644
index 7018c73509..0000000000
--- a/openwrt/package/pmacct/ipkg/pmacctd-pgsql.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: pmacctd-pgsql
-Priority: optional
-Section: net
-Description: an IP accounting daemon,
- built with PostgreSQL database support
-Depends: libpq, libpcap
diff --git a/openwrt/package/pmacct/ipkg/pmacctd-sqlite.control b/openwrt/package/pmacct/ipkg/pmacctd-sqlite.control
deleted file mode 100644
index ad8f7c96f0..0000000000
--- a/openwrt/package/pmacct/ipkg/pmacctd-sqlite.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: pmacctd-sqlite
-Priority: optional
-Section: net
-Description: an IP accounting daemon,
- built with SQLite database support
-Depends: libsqlite, libpcap
diff --git a/openwrt/package/pmacct/ipkg/pmacctd.conffiles b/openwrt/package/pmacct/ipkg/pmacctd.conffiles
deleted file mode 100644
index fa81c14cb8..0000000000
--- a/openwrt/package/pmacct/ipkg/pmacctd.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/default/pmacctd
-/etc/pmacctd.conf
diff --git a/openwrt/package/pmacct/ipkg/pmacctd.control b/openwrt/package/pmacct/ipkg/pmacctd.control
deleted file mode 100644
index 5d2cc7c4e1..0000000000
--- a/openwrt/package/pmacct/ipkg/pmacctd.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: pmacctd
-Priority: optional
-Section: net
-Description: an IP accounting daemon,
- built without database support
-Depends: libpcap
diff --git a/openwrt/package/popt/Config.in b/openwrt/package/popt/Config.in
deleted file mode 100644
index a24882b6c3..0000000000
--- a/openwrt/package/popt/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_COMPILE_POPT
- tristate
- depends BR2_PACKAGE_LIBPOPT
-
-config BR2_PACKAGE_LIBPOPT
- prompt "libpopt........................... Command line option parsing library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_POPT
- help
- A command line option parsing library
-
- ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/
-
diff --git a/openwrt/package/popt/Makefile b/openwrt/package/popt/Makefile
deleted file mode 100644
index 75ea1a082d..0000000000
--- a/openwrt/package/popt/Makefile
+++ /dev/null
@@ -1,81 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=popt
-PKG_VERSION:=1.7
-PKG_RELEASE:=4
-PKG_MD5SUM:=5988e7aeb0ae4dac8d83561265984cc9
-
-PKG_SOURCE_URL:=ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBPOPT,libpopt,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBPOPT):
- install -d -m0755 $(IDIR_LIBPOPT)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpopt.so.* $(IDIR_LIBPOPT)/usr/lib/
- $(RSTRIP) $(IDIR_LIBPOPT)
- $(IPKG_BUILD) $(IDIR_LIBPOPT) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libpopt.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/popt.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpopt.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $(STAGING_DIR)/usr/lib/libpopt.so
-
-install-dev: $(STAGING_DIR)/usr/lib/libpopt.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/popt.h \
- $(STAGING_DIR)/usr/lib/libpopt.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/popt/ipkg/libpopt.control b/openwrt/package/popt/ipkg/libpopt.control
deleted file mode 100644
index 280d67344f..0000000000
--- a/openwrt/package/popt/ipkg/libpopt.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libpopt
-Priority: optional
-Section: libs
-Description: a command line option parsing library
diff --git a/openwrt/package/portmap/Config.in b/openwrt/package/portmap/Config.in
deleted file mode 100644
index 63b73789b8..0000000000
--- a/openwrt/package/portmap/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_PORTMAP
- prompt "portmap........................... RPC Portmapper"
- tristate
- default m if CONFIG_DEVEL
- help
- The RPC Portmapper (used by the NFS Server)
-
diff --git a/openwrt/package/portmap/Makefile b/openwrt/package/portmap/Makefile
deleted file mode 100644
index 20bba966dc..0000000000
--- a/openwrt/package/portmap/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=portmap
-PKG_VERSION:=5beta
-PKG_RELEASE:=2
-PKG_MD5SUM:=781e16ed4487c4caa082c6fef09ead4f
-
-# space separated list or special @SF for sourceforge projects
-PKG_SOURCE_URL:=ftp://ftp.porcupine.org/pub/security
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PORTMAP,portmap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include -DHOSTS_ACCESS -DFACILITY=LOG_DAEMON -DIGNORE_SIGCHLD" \
- WRAP_LIB="-L$(STAGING_DIR)/usr/lib -lwrap" \
- all
- touch $@
-
-$(IPKG_PORTMAP):
- install -d -m0755 $(IDIR_PORTMAP)/etc/init.d
- install -m0755 ./files/portmap.init $(IDIR_PORTMAP)/etc/init.d/portmap
- ln -sf portmap $(IDIR_PORTMAP)/etc/init.d/S59portmap
- install -d -m0755 $(IDIR_PORTMAP)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/portmap $(IDIR_PORTMAP)/usr/sbin/
- $(RSTRIP) $(IDIR_PORTMAP)
- $(IPKG_BUILD) $(IDIR_PORTMAP) $(PACKAGE_DIR)
diff --git a/openwrt/package/portmap/files/portmap.init b/openwrt/package/portmap/files/portmap.init
deleted file mode 100644
index 31a3399e93..0000000000
--- a/openwrt/package/portmap/files/portmap.init
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-
-BIN=portmap
-DEFAULT=/etc/default/$BIN
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- $BIN $OPTIONS
- ;;
- *)
- echo "usage: $0 start"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/portmap/ipkg/portmap.control b/openwrt/package/portmap/ipkg/portmap.control
deleted file mode 100644
index 5d19907506..0000000000
--- a/openwrt/package/portmap/ipkg/portmap.control
+++ /dev/null
@@ -1,9 +0,0 @@
-Package: portmap
-Priority: optional
-Section: net
-Description: The RPC Portmapper
- Portmap is a server that converts RPC (Remote Procedure Call) program
- numbers into DARPA protocol port numbers. It must be running in order
- to make RPC calls.
- .
- Services that use RPC include NFS and NIS.
diff --git a/openwrt/package/portmap/patches/debian-subset.patch b/openwrt/package/portmap/patches/debian-subset.patch
deleted file mode 100644
index c5fecf7c4c..0000000000
--- a/openwrt/package/portmap/patches/debian-subset.patch
+++ /dev/null
@@ -1,531 +0,0 @@
---- portmap-5.orig/Makefile
-+++ portmap-5/Makefile
-@@ -8,7 +8,7 @@
- # if you disagree. See `man 3 syslog' for examples. Some syslog versions
- # do not provide this flexibility.
- #
--FACILITY=LOG_MAIL
-+FACILITY=LOG_DAEMON
-
- # To disable tcp-wrapper style access control, comment out the following
- # macro definitions. Access control can also be turned off by providing
-@@ -16,7 +16,8 @@
- # daemon, is always treated as an authorized host.
-
- HOSTS_ACCESS= -DHOSTS_ACCESS
--WRAP_LIB = $(WRAP_DIR)/libwrap.a
-+#WRAP_LIB = $(WRAP_DIR)/libwrap.a
-+WRAP_LIB = -lwrap
-
- # Comment out if your RPC library does not allocate privileged ports for
- # requests from processes with root privilege, or the new portmap will
-@@ -71,7 +72,7 @@
- # With verbose logging on, HP-UX 9.x and AIX 4.1 leave zombies behind when
- # SIGCHLD is not ignored. Enable next macro for a fix.
- #
--# ZOMBIES = -DIGNORE_SIGCHLD # AIX 4.x, HP-UX 9.x
-+ZOMBIES = -DIGNORE_SIGCHLD # AIX 4.x, HP-UX 9.x
-
- # Uncomment the following macro if your system does not have u_long.
- #
-@@ -81,11 +82,14 @@
- # libwrap.a object library. WRAP_DIR should specify the directory with
- # that library.
-
--WRAP_DIR= ../tcp_wrappers
-+WRAP_DIR= $(TCPD_DIR)
-
- # Auxiliary object files that may be missing from your C library.
- #
--AUX = daemon.o strerror.o
-+#AUX = daemon.o strerror.o
-+
-+# glibc has strerror() (it's POSIX) and daemon() (when compiling -D_BSD_SOURCE)
-+AUX =
-
- # NEXTSTEP is a little different. The following seems to work with NS 3.2
- #
-@@ -99,22 +103,31 @@
-
- # Comment out if your compiler talks ANSI and understands const
- #
--CONST = -Dconst=
-+#CONST = -Dconst=
-
- ### End of configurable stuff.
- ##############################
-
-+GLIBC=$(shell grep -s -c __GLIBC__ /usr/include/features.h)
-+
-+ifeq ($(GLIBC),0)
-+LIBS += # -lbsd
-+else
-+LIBS += -lnsl
-+endif
-+
-+
- SHELL = /bin/sh
-
--COPT = $(CONST) -Dperror=xperror $(HOSTS_ACCESS) $(CHECK_PORT) \
-+COPT = $(CONST) $(HOSTS_ACCESS) $(CHECK_PORT) \
- $(SYS) -DFACILITY=$(FACILITY) $(ULONG) $(ZOMBIES) $(SA_LEN) \
- $(LOOPBACK) $(SETPGRP)
--CFLAGS = $(COPT) -O $(NSARCHS)
-+CFLAGS = -Wall $(COPT) -O2 $(NSARCHS)
- OBJECTS = portmap.o pmap_check.o from_local.o $(AUX)
-
- all: portmap pmap_dump pmap_set
-
--portmap: $(OBJECTS) $(WRAP_DIR)/libwrap.a
-+portmap: $(OBJECTS) # $(WRAP_DIR)/libwrap.a
- $(CC) $(CFLAGS) -o $@ $(OBJECTS) $(WRAP_LIB) $(LIBS)
-
- pmap_dump: pmap_dump.c
-@@ -129,6 +142,17 @@
- get_myaddress: get_myaddress.c
- cc $(CFLAGS) -DTEST -o $@ get_myaddress.c $(LIBS)
-
-+install: all
-+ install -o root -g root -m 0755 -s portmap ${BASEDIR}/sbin
-+ install -o root -g root -m 0755 -s pmap_dump ${BASEDIR}/sbin
-+ install -o root -g root -m 0755 -s pmap_set ${BASEDIR}/sbin
-+ install -o root -g root -m 0644 portmap.8 ${BASEDIR}/usr/share/man/man8
-+ install -o root -g root -m 0644 pmap_dump.8 ${BASEDIR}/usr/share/man/man8
-+ install -o root -g root -m 0644 pmap_set.8 ${BASEDIR}/usr/share/man/man8
-+ cat BLURB >${BASEDIR}/usr/share/doc/portmap/portmapper.txt
-+ gzip -9f ${BASEDIR}/usr/share/doc/portmap/portmapper.txt
-+
-+
- lint:
- lint $(COPT) $(OBJECTS:%.o=%.c)
-
---- portmap-5.orig/daemon.c
-+++ portmap-5/daemon.c
-@@ -36,11 +36,8 @@
- #endif /* LIBC_SCCS and not lint */
-
- #include <fcntl.h>
--
--/* From unistd.h */
--#define STDIN_FILENO 0
--#define STDOUT_FILENO 1
--#define STDERR_FILENO 2
-+#include <unistd.h>
-+#include <sys/types.h>
-
- /* From paths.h */
- #define _PATH_DEVNULL "/dev/null"
---- portmap-5.orig/pmap_check.c
-+++ portmap-5/pmap_check.c
-@@ -41,10 +41,14 @@
- #include <syslog.h>
- #include <netdb.h>
- #include <sys/signal.h>
-+#include <grp.h>
- #ifdef SYSV40
- #include <netinet/in.h>
- #include <rpc/rpcent.h>
- #endif
-+#include <sys/types.h>
-+#include <unistd.h>
-+#include <tcpd.h>
-
- extern char *inet_ntoa();
-
-@@ -101,15 +105,25 @@
- * Give up root privileges so that we can never allocate a privileged
- * port when forwarding an rpc request.
- */
-+ if (setgid(1) == -1) {
-+ syslog(LOG_ERR, "setgid(1) failed: %m");
-+ exit(1);
-+ }
-+ if (setgroups(0, 0) == -1) {
-+ syslog(LOG_ERR, "setgroups(0, 0) failed: %m");
-+ exit(1);
-+ }
- if (setuid(1) == -1) {
- syslog(LOG_ERR, "setuid(1) failed: %m");
- exit(1);
- }
-+
- (void) signal(SIGINT, toggle_verboselog);
- }
-
- /* check_default - additional checks for NULL, DUMP, GETPORT and unknown */
-
-+int
- check_default(addr, proc, prog)
- struct sockaddr_in *addr;
- u_long proc;
-@@ -128,6 +142,7 @@
-
- /* check_privileged_port - additional checks for privileged-port updates */
-
-+int
- check_privileged_port(addr, proc, prog, port)
- struct sockaddr_in *addr;
- u_long proc;
-@@ -173,6 +188,7 @@
-
- #else
-
-+int
- check_setunset(addr, proc, prog, port)
- struct sockaddr_in *addr;
- u_long proc;
-@@ -197,6 +213,7 @@
-
- /* check_callit - additional checks for forwarded requests */
-
-+int
- check_callit(addr, proc, prog, aproc)
- struct sockaddr_in *addr;
- u_long proc;
-@@ -249,13 +266,13 @@
- };
- struct proc_map *procp;
- static struct proc_map procmap[] = {
-- PMAPPROC_CALLIT, "callit",
-- PMAPPROC_DUMP, "dump",
-- PMAPPROC_GETPORT, "getport",
-- PMAPPROC_NULL, "null",
-- PMAPPROC_SET, "set",
-- PMAPPROC_UNSET, "unset",
-- 0, 0,
-+ {PMAPPROC_CALLIT, "callit"},
-+ {PMAPPROC_DUMP, "dump"},
-+ {PMAPPROC_GETPORT, "getport"},
-+ {PMAPPROC_NULL, "null"},
-+ {PMAPPROC_SET, "set"},
-+ {PMAPPROC_UNSET, "unset"},
-+ {0, 0},
- };
-
- /*
-@@ -269,7 +286,7 @@
-
- if (prognum == 0) {
- progname = "";
-- } else if (rpc = getrpcbynumber((int) prognum)) {
-+ } else if ((rpc = getrpcbynumber((int) prognum))) {
- progname = rpc->r_name;
- } else {
- sprintf(progname = progbuf, "%lu", prognum);
---- portmap-5.orig/from_local.c
-+++ portmap-5/from_local.c
-@@ -51,6 +51,9 @@
- #include <net/if.h>
- #include <sys/ioctl.h>
- #include <syslog.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <unistd.h>
-
- #ifndef TRUE
- #define TRUE 1
-@@ -96,6 +99,7 @@
-
- /* find_local - find all IP addresses for this host */
-
-+int
- find_local()
- {
- struct ifconf ifc;
-@@ -154,6 +158,7 @@
-
- /* from_local - determine whether request comes from the local system */
-
-+int
- from_local(addr)
- struct sockaddr_in *addr;
- {
---- portmap-5.orig/pmap_dump.c
-+++ portmap-5/pmap_dump.c
-@@ -23,6 +23,20 @@
-
- static char *protoname();
-
-+#ifndef INADDR_LOOPBACK
-+#define INADDR_LOOPBACK ntohl(inet_addr("127.0.0.1"))
-+#endif
-+
-+static void get_myloopaddress(addrp)
-+struct sockaddr_in *addrp;
-+{
-+ memset((char *) addrp, 0, sizeof(*addrp));
-+ addrp->sin_family = AF_INET;
-+ addrp->sin_port = htons(PMAPPORT);
-+ addrp->sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-+}
-+
-+int
- main(argc, argv)
- int argc;
- char **argv;
-@@ -31,7 +45,7 @@
- register struct pmaplist *list;
- register struct rpcent *rpc;
-
-- get_myaddress(&addr);
-+ get_myloopaddress(&addr);
-
- for (list = pmap_getmaps(&addr); list; list = list->pml_next) {
- rpc = getrpcbynumber((int) list->pml_map.pm_prog);
---- portmap-5.orig/pmap_set.c
-+++ portmap-5/pmap_set.c
-@@ -17,6 +17,10 @@
- #include <rpc/rpc.h>
- #include <rpc/pmap_clnt.h>
-
-+int parse_line(char *buf, u_long *prog, u_long *vers, int *prot,
-+ unsigned *port);
-+
-+int
- main(argc, argv)
- int argc;
- char **argv;
-@@ -40,6 +44,7 @@
-
- /* parse_line - convert line to numbers */
-
-+int
- parse_line(buf, prog, vers, prot, port)
- char *buf;
- u_long *prog;
-@@ -47,9 +52,9 @@
- int *prot;
- unsigned *port;
- {
-- char proto_name[BUFSIZ];
-+ char proto_name[256];
-
-- if (sscanf(buf, "%lu %lu %s %u", prog, vers, proto_name, port) != 4) {
-+ if (sscanf(buf, "%lu %lu %255s %u", prog, vers, proto_name, port) != 4) {
- return (0);
- }
- if (strcmp(proto_name, "tcp") == 0) {
-@@ -65,3 +70,4 @@
- }
- return (0);
- }
-+
---- portmap-5.orig/portmap.c
-+++ portmap-5/portmap.c
-@@ -80,6 +80,10 @@
- * Mountain View, California 94043
- */
-
-+#if defined(__GLIBC__)
-+#define _BSD_SOURCE 1 /* for daemon(3) */
-+#include <rpc/xdr.h>
-+#endif /* __GLIBC__ */
- #include <rpc/rpc.h>
- #include <rpc/pmap_prot.h>
- #include <stdio.h>
-@@ -91,11 +95,13 @@
- #include <sys/signal.h>
- #include <sys/time.h>
- #include <sys/resource.h>
--#ifdef SYSV40
- #include <netinet/in.h>
--#endif
-+#include <sys/types.h>
-+#include <unistd.h>
-+#include <string.h>
-+#include <errno.h>
-+#include <arpa/inet.h>
-
--extern char *strerror();
- #include <stdlib.h>
-
- #ifndef LOG_PERROR
-@@ -124,7 +130,6 @@
- static void callit();
- struct pmaplist *pmaplist;
- int debugging = 0;
--extern int errno;
-
- #include "pmap_check.h"
-
-@@ -148,6 +153,7 @@
- #endif
- #endif
-
-+int
- main(argc, argv)
- int argc;
- char **argv;
-@@ -157,22 +163,31 @@
- struct sockaddr_in addr;
- int len = sizeof(struct sockaddr_in);
- register struct pmaplist *pml;
-+ char *chroot_path = NULL;
-+ struct in_addr bindaddr;
-+ int have_bindaddr = 0;
-
-- while ((c = getopt(argc, argv, "dv")) != EOF) {
-+ while ((c = getopt(argc, argv, "dt:vi:")) != EOF) {
- switch (c) {
-
- case 'd':
- debugging = 1;
- break;
--
-+ case 't':
-+ chroot_path = optarg;
-+ break;
- case 'v':
- verboselog = 1;
- break;
--
-+ case 'i':
-+ have_bindaddr = inet_aton(optarg, &bindaddr);
-+ break;
- default:
-- (void) fprintf(stderr, "usage: %s [-dv]\n", argv[0]);
-+ (void) fprintf(stderr, "usage: %s [-dv] [-t path] [-i address]\n", argv[0]);
- (void) fprintf(stderr, "-d: debugging mode\n");
-+ (void) fprintf(stderr, "-t path: chroot into path\n");
- (void) fprintf(stderr, "-v: verbose logging\n");
-+ (void) fprintf(stderr, "-i address: bind to address\n");
- exit(1);
- }
- }
-@@ -201,6 +216,9 @@
- addr.sin_addr.s_addr = 0;
- addr.sin_family = AF_INET;
- addr.sin_port = htons(PMAPPORT);
-+ if (have_bindaddr)
-+ memcpy(&addr.sin_addr, &bindaddr, sizeof(bindaddr));
-+
- if (bind(sock, (struct sockaddr *)&addr, len) != 0) {
- syslog(LOG_ERR, "cannot bind udp: %m");
- exit(1);
-@@ -227,7 +245,7 @@
- setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof on);
- #endif
- if (bind(sock, (struct sockaddr *)&addr, len) != 0) {
-- syslog(LOG_ERR, "cannot bind udp: %m");
-+ syslog(LOG_ERR, "cannot bind tcp: %m");
- exit(1);
- }
- if ((xprt = svctcp_create(sock, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE))
-@@ -280,6 +298,14 @@
- (void)svc_register(xprt, PMAPPROG, PMAPVERS, reg_service, FALSE);
-
- /* additional initializations */
-+ if (chroot_path)
-+ {
-+ if (-1 == chroot(chroot_path))
-+ {
-+ syslog(LOG_ERR, "couldn't do chroot");
-+ exit(1);
-+ }
-+ }
- check_startup();
- #ifdef IGNORE_SIGCHLD /* Lionel Cons <cons@dxcern.cern.ch> */
- (void)signal(SIGCHLD, SIG_IGN);
-@@ -350,7 +376,7 @@
- */
- /* remote host authorization check */
- check_default(svc_getcaller(xprt), rqstp->rq_proc, (u_long) 0);
-- if (!svc_sendreply(xprt, xdr_void, (caddr_t)0) && debugging) {
-+ if (!svc_sendreply(xprt, (xdrproc_t) xdr_void, (caddr_t)0) && debugging) {
- abort();
- }
- break;
-@@ -359,7 +385,7 @@
- /*
- * Set a program,version to port mapping
- */
-- if (!svc_getargs(xprt, xdr_pmap, &reg))
-+ if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (caddr_t) &reg))
- svcerr_decode(xprt);
- else {
- /* reject non-local requests, protect priv. ports */
-@@ -401,7 +427,7 @@
- ans = 1;
- }
- done:
-- if ((!svc_sendreply(xprt, xdr_int, (caddr_t)&ans)) &&
-+ if ((!svc_sendreply(xprt, (xdrproc_t) xdr_int, (caddr_t)&ans)) &&
- debugging) {
- (void) fprintf(stderr, "svc_sendreply\n");
- abort();
-@@ -413,7 +439,7 @@
- /*
- * Remove a program,version to port mapping.
- */
-- if (!svc_getargs(xprt, xdr_pmap, &reg))
-+ if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (caddr_t) &reg))
- svcerr_decode(xprt);
- else {
- ans = 0;
-@@ -447,7 +473,7 @@
- prevpml->pml_next = pml;
- free(t);
- }
-- if ((!svc_sendreply(xprt, xdr_int, (caddr_t)&ans)) &&
-+ if ((!svc_sendreply(xprt, (xdrproc_t) xdr_int, (caddr_t)&ans)) &&
- debugging) {
- (void) fprintf(stderr, "svc_sendreply\n");
- abort();
-@@ -459,7 +485,7 @@
- /*
- * Lookup the mapping for a program,version and return its port
- */
-- if (!svc_getargs(xprt, xdr_pmap, &reg))
-+ if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (caddr_t) &reg))
- svcerr_decode(xprt);
- else {
- /* remote host authorization check */
-@@ -474,7 +500,7 @@
- port = fnd->pml_map.pm_port;
- else
- port = 0;
-- if ((!svc_sendreply(xprt, xdr_int, (caddr_t)&port)) &&
-+ if ((!svc_sendreply(xprt, (xdrproc_t) xdr_int, (caddr_t)&port)) &&
- debugging) {
- (void) fprintf(stderr, "svc_sendreply\n");
- abort();
-@@ -486,7 +512,7 @@
- /*
- * Return the current set of mapped program,version
- */
-- if (!svc_getargs(xprt, xdr_void, NULL))
-+ if (!svc_getargs(xprt, (xdrproc_t) xdr_void, (caddr_t) NULL))
- svcerr_decode(xprt);
- else {
- /* remote host authorization check */
-@@ -497,7 +523,7 @@
- } else {
- p = pmaplist;
- }
-- if ((!svc_sendreply(xprt, xdr_pmaplist,
-+ if ((!svc_sendreply(xprt, (xdrproc_t) xdr_pmaplist,
- (caddr_t)&p)) && debugging) {
- (void) fprintf(stderr, "svc_sendreply\n");
- abort();
-@@ -645,7 +671,7 @@
- timeout.tv_sec = 5;
- timeout.tv_usec = 0;
- a.rmt_args.args = buf;
-- if (!svc_getargs(xprt, xdr_rmtcall_args, &a))
-+ if (!svc_getargs(xprt, (xdrproc_t) xdr_rmtcall_args, (caddr_t) &a))
- return;
- /* host and service access control */
- if (!check_callit(svc_getcaller(xprt),
-@@ -674,9 +700,9 @@
- au->aup_uid, au->aup_gid, au->aup_len, au->aup_gids);
- }
- a.rmt_port = (u_long)port;
-- if (clnt_call(client, a.rmt_proc, xdr_opaque_parms, &a,
-- xdr_len_opaque_parms, &a, timeout) == RPC_SUCCESS) {
-- svc_sendreply(xprt, xdr_rmtcall_result, (caddr_t)&a);
-+ if (clnt_call(client, a.rmt_proc, (xdrproc_t) xdr_opaque_parms, (char*) &a,
-+ (xdrproc_t) xdr_len_opaque_parms, (char*) &a, timeout) == RPC_SUCCESS) {
-+ svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (caddr_t)&a);
- }
- AUTH_DESTROY(client->cl_auth);
- clnt_destroy(client);
diff --git a/openwrt/package/portsentry/Config.in b/openwrt/package/portsentry/Config.in
deleted file mode 100644
index f7acc18534..0000000000
--- a/openwrt/package/portsentry/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_PORTSENTRY
- prompt "portsentry........................ Portscan protection utility"
- tristate
- default m if CONFIG_DEVEL
- help
- Software for protection against port scans
-
- http://sourceforge.net/projects/sentrytools
-
diff --git a/openwrt/package/portsentry/Makefile b/openwrt/package/portsentry/Makefile
deleted file mode 100644
index 18cfec71e6..0000000000
--- a/openwrt/package/portsentry/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=portsentry
-PKG_VERSION:=1.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=3ebd3618ba9abfea2525e236bd44cebd
-
-PKG_SOURCE_URL:=@SF/sentrytools
-PKG_SOURCE:=$(PKG_NAME)-1.2.tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_beta
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PORTSENTRY,portsentry,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) linux
- touch $@
-
-$(IPKG_PORTSENTRY):
- mkdir -p $(IDIR_PORTSENTRY)/usr/bin
- mkdir -p $(IDIR_PORTSENTRY)/etc
- $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME).conf $(IDIR_PORTSENTRY)/etc/
- $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME) $(IDIR_PORTSENTRY)/usr/bin/
- $(STRIP) $(IDIR_PORTSENTRY)/usr/bin/*
- $(IPKG_BUILD) $(IDIR_PORTSENTRY) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/portsentry/ipkg/portsentry.conffiles b/openwrt/package/portsentry/ipkg/portsentry.conffiles
deleted file mode 100644
index 9c0810ccbe..0000000000
--- a/openwrt/package/portsentry/ipkg/portsentry.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/portsentry.conf
diff --git a/openwrt/package/portsentry/ipkg/portsentry.control b/openwrt/package/portsentry/ipkg/portsentry.control
deleted file mode 100644
index f05b282df0..0000000000
--- a/openwrt/package/portsentry/ipkg/portsentry.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: portsentry
-Priority: optional
-Section: net
-Description: Software for protection against port scans
diff --git a/openwrt/package/portsentry/patches/100-conf_location.patch b/openwrt/package/portsentry/patches/100-conf_location.patch
deleted file mode 100644
index 457c9c827b..0000000000
--- a/openwrt/package/portsentry/patches/100-conf_location.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- portsentry/portsentry_config.h 2003-05-23 20:10:13.000000000 +0200
-+++ portsentry.old/portsentry_config.h 2005-07-09 21:21:15.000000000 +0200
-@@ -22,7 +22,7 @@
-
- /* These are probably ok. Be sure you change the Makefile if you */
- /* change the path */
--#define CONFIG_FILE "/usr/local/psionic/portsentry/portsentry.conf"
-+#define CONFIG_FILE "/etc/portsentry.conf"
-
- /* The location of Wietse Venema's TCP Wrapper hosts.deny file */
- #define WRAPPER_HOSTS_DENY "/etc/hosts.deny"
diff --git a/openwrt/package/portsentry/patches/101-postsentry_c.patch b/openwrt/package/portsentry/patches/101-postsentry_c.patch
deleted file mode 100644
index e36bb2a123..0000000000
--- a/openwrt/package/portsentry/patches/101-postsentry_c.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- portsentry/portsentry.c 2003-05-23 20:10:13.000000000 +0200
-+++ portsentry.old/portsentry.c 2005-07-09 21:57:24.000000000 +0200
-@@ -1581,8 +1581,7 @@
- Usage (void)
- {
- printf ("PortSentry - Port Scan Detector.\n");
-- printf ("Copyright 1997-2003 Craig H. Rowland <craigrowland at users dot
--sourceforget dot net>\n");
-+ printf ("Copyright 1997-2003 Craig H. Rowland <craigrowland at users dot sourceforget dot net>\n");
- printf ("Licensing restrictions apply. Please see documentation\n");
- printf ("Version: %s\n\n", VERSION);
- #ifdef SUPPORT_STEALTH
diff --git a/openwrt/package/postgresql/Config.in b/openwrt/package/postgresql/Config.in
deleted file mode 100644
index 776dccc4e8..0000000000
--- a/openwrt/package/postgresql/Config.in
+++ /dev/null
@@ -1,61 +0,0 @@
-config BR2_COMPILE_POSTGRESQL
- tristate
- default n
- depends BR2_PACKAGE_LIBPQ
-
-config BR2_PACKAGE_LIBPQ
- prompt "libpq............................. PostgreSQL client library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_POSTGRESQL
- help
- PostgreSQL is an object-relational database management system (ORDBMS)
- based on POSTGRES, Version 4.2, developed at the University of
- California at Berkeley Computer Science Department. POSTGRES pioneered
- many concepts that only became available in some commercial database
- systems much later.
-
- PostgreSQL is an open-source descendant of this original Berkeley code.
- It supports SQL92 and SQL99 and offers many modern features:
-
- * complex queries
- * foreign keys
- * triggers
- * views
- * transactional integrity
- * multiversion concurrency control
-
- http://www.postgresql.org/
-
- This package contains the shared client library, needed by other programs.
-
-config BR2_PACKAGE_PGSQL_CLI
- prompt "pgsql-cli....................... Command Line Interface (CLI) to PostgreSQL databases"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBPQ
- help
- PostgreSQL is an object-relational database management system (ORDBMS)
- based on POSTGRES, Version 4.2, developed at the University of
- California at Berkeley Computer Science Department. POSTGRES pioneered
- many concepts that only became available in some commercial database
- systems much later.
-
- PostgreSQL is an open-source descendant of this original Berkeley code.
- It supports SQL92 and SQL99 and offers many modern features:
-
- * complex queries
- * foreign keys
- * triggers
- * views
- * transactional integrity
- * multiversion concurrency control
-
- http://www.postgresql.org/
-
- This package contains a terminal-based front-end to PostgreSQL. It enables
- you to type in queries interactively, issue them to PostgreSQL, and see the
- query results. Alternatively, input can be from a file. In addition, it
- provides a number of meta-commands and various shell-like features to
- facilitate writing scripts and automating a wide variety of tasks.
-
diff --git a/openwrt/package/postgresql/Makefile b/openwrt/package/postgresql/Makefile
deleted file mode 100644
index 2cb3f6d0e3..0000000000
--- a/openwrt/package/postgresql/Makefile
+++ /dev/null
@@ -1,127 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=postgresql
-PKG_VERSION:=7.4.9
-PKG_RELEASE:=1
-PKG_MD5SUM:=d7cf0f0a0e1dda19268f55cb1e124c77
-
-PKG_SOURCE_URL:=\
- ftp://ftp3.us.postgresql.org/pub/postgresql/source/v$(PKG_VERSION)/ \
- ftp://ftp.br.postgresql.org/pub/PostgreSQL/source/v$(PKG_VERSION)/ \
- ftp://ftp.au.postgresql.org/pub/postgresql/source/v$(PKG_VERSION)/ \
- ftp://ftp.tw.postgresql.org/pub/postgresql/source/v$(PKG_VERSION)/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBPQ,libpq,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PGSQL_CLI,pgsql-cli,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-# ./configure advertise "--infodir", but does not support it, replaced with "--docdir"
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
- CPPFLAGS="$$CPPFLAGS -I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --docdir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --disable-integer-datetimes \
- --disable-rpath \
- --without-java \
- --without-krb4 \
- --without-krb5 \
- --without-openssl \
- --without-pam \
- --without-perl \
- --without-python \
- --without-readline \
- --without-rendezvous \
- --without-tcl \
- --without-tk \
- --with-zlib="yes" \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C "$(PKG_BUILD_DIR)/src/include" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- $(MAKE) -C "$(PKG_BUILD_DIR)/src/interfaces/libpq" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- $(MAKE) -C "$(PKG_BUILD_DIR)/src/bin/pg_config" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- includedir="$(STAGING_DIR)/usr/include" \
- libdir="$(STAGING_DIR)/usr/lib" \
- all install
- $(MAKE) -C "$(PKG_BUILD_DIR)/src/bin/psql" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBPQ):
- install -d -m0755 $(IDIR_LIBPQ)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpq.so.* $(IDIR_LIBPQ)/usr/lib/
- $(RSTRIP) $(IDIR_LIBPQ)
- $(IPKG_BUILD) $(IDIR_LIBPQ) $(PACKAGE_DIR)
-
-$(IPKG_PGSQL_CLI):
- install -d -m0755 $(IDIR_PGSQL_CLI)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/psql $(IDIR_PGSQL_CLI)/usr/bin/
- $(RSTRIP) $(IDIR_PGSQL_CLI)
- $(IPKG_BUILD) $(IDIR_PGSQL_CLI) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libpq.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/pg_config $(STAGING_DIR)/usr/bin/
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libpq $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libpq-fe.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/pg_config.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/postgres_ext.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/postgresql $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpq.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libpq.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/bin/pg_config \
- $(STAGING_DIR)/usr/include/libpq \
- $(STAGING_DIR)/usr/include/libpq-fe.h \
- $(STAGING_DIR)/usr/include/pg_config.h \
- $(STAGING_DIR)/usr/include/postgres_ext.h \
- $(STAGING_DIR)/usr/include/postgresql \
- $(STAGING_DIR)/usr/lib/libpq.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/postgresql/ipkg/libpq.control b/openwrt/package/postgresql/ipkg/libpq.control
deleted file mode 100644
index ff669c6cb9..0000000000
--- a/openwrt/package/postgresql/ipkg/libpq.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libpq
-Priority: optional
-Section: libs
-Description: PostgreSQL client library
diff --git a/openwrt/package/postgresql/ipkg/pgsql-cli.control b/openwrt/package/postgresql/ipkg/pgsql-cli.control
deleted file mode 100644
index 4ce03e45cc..0000000000
--- a/openwrt/package/postgresql/ipkg/pgsql-cli.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: pgsql-cli
-Priority: optional
-Section: libs
-Description: Command Line Interface (CLI) to PostgreSQL databases
-Depends: libpq
diff --git a/openwrt/package/postgresql/patches/100-debian-12asmconstraints b/openwrt/package/postgresql/patches/100-debian-12asmconstraints
deleted file mode 100644
index f43eedc80a..0000000000
--- a/openwrt/package/postgresql/patches/100-debian-12asmconstraints
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -ruN postgresql-7.4.7-old/src/include/storage/s_lock.h postgresql-7.4.7/src/include/storage/s_lock.h
---- postgresql-7.4.7-old/src/include/storage/s_lock.h 2004-06-15 16:09:30.000000000 +0200
-+++ postgresql-7.4.7/src/include/storage/s_lock.h 2004-06-15 16:19:02.000000000 +0200
-@@ -125,7 +125,7 @@
- __asm__ __volatile__(
- " xchg4 %0=%1,%2 \n"
- : "=r"(ret), "=m"(*lock)
--: "r"(1), "1"(*lock)
-+: "r"(1), "m"(*lock)
- : "memory");
-
- return (int) ret;
-@@ -294,7 +294,7 @@
- " tas %1 \n"
- " sne %0 \n"
- : "=d"(rv), "=m"(*lock)
--: "1"(*lock)
-+: "m"(*lock)
- : "cc");
-
- return rv;
diff --git a/openwrt/package/postgresql/patches/101-debian-27dbf2pg-textfield b/openwrt/package/postgresql/patches/101-debian-27dbf2pg-textfield
deleted file mode 100644
index a4507710f0..0000000000
--- a/openwrt/package/postgresql/patches/101-debian-27dbf2pg-textfield
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -ruN postgresql-7.4.7-old/contrib/dbase/dbf2pg.c postgresql-7.4.7/contrib/dbase/dbf2pg.c
---- postgresql-7.4.7-old/contrib/dbase/dbf2pg.c 2004-10-31 20:09:10.923855000 +0100
-+++ postgresql-7.4.7/contrib/dbase/dbf2pg.c 2004-10-31 20:11:24.676521696 +0100
-@@ -324,6 +324,10 @@
- case 'L':
- strcat(query, " char");
- break;
-+
-+ case 'M':
-+ strcat(query, " text");
-+ break;
- }
- }
-
diff --git a/openwrt/package/postgresql/patches/102-debian-30libpq b/openwrt/package/postgresql/patches/102-debian-30libpq
deleted file mode 100644
index 245b97fac7..0000000000
--- a/openwrt/package/postgresql/patches/102-debian-30libpq
+++ /dev/null
@@ -1,33 +0,0 @@
-diff -ruN postgresql-7.4.7-old/src/interfaces/libpq/Makefile postgresql-7.4.7/src/interfaces/libpq/Makefile
---- postgresql-7.4.7-old/src/interfaces/libpq/Makefile 2003-08-23 05:21:59.000000000 +0100
-+++ postgresql-7.4.7/src/interfaces/libpq/Makefile 2003-08-29 18:35:25.000000000 +0100
-@@ -32,7 +32,7 @@
- SHLIB_LINK += $(filter -lcrypt -ldes -lkrb -lcom_err -lcrypto -lk5crypto -lkrb5 -lssl -lsocket -lnsl -lresolv -lintl, $(LIBS)) $(THREAD_LIBS)
-
-
--all: all-lib
-+all: all-lib libpq3-config
-
- # Shared library stuff
- include $(top_srcdir)/src/Makefile.shlib
-@@ -58,6 +58,8 @@
- encnames.c wchar.c : % : $(backend_src)/utils/mb/%
- rm -f $@ && $(LN_S) $< .
-
-+libpq3-config:
-+ sed -e "s|%LIBRARIES%|$(SHLIB_LINK)|" <libpq3-config.in | sed "s/-L[^ ]\+ //" >libpq3-config
-
- install: all installdirs install-lib
- $(INSTALL_DATA) $(srcdir)/libpq-fe.h $(DESTDIR)$(includedir)
-@@ -73,3 +75,4 @@
-
- clean distclean maintainer-clean: clean-lib
- rm -f $(OBJS) crypt.c getaddrinfo.c inet_aton.c snprintf.c strerror.c path.c thread.c dllist.c md5.c ip.c encnames.c wchar.c
-+ rm -f libpq3-config
-diff -ruN postgresql-7.4.7-old/src/interfaces/libpq/libpq3-config.in postgresql-7.4.7/src/interfaces/libpq/libpq3-config.in
---- postgresql-7.4.7-old/src/interfaces/libpq/libpq3-config.in 1970-01-01 01:00:00.000000000 +0100
-+++ postgresql-7.4.7/src/interfaces/libpq/libpq3-config.in 2003-08-29 18:34:25.000000000 +0100
-@@ -0,0 +1,3 @@
-+#!/bin/bash
-+
-+echo %LIBRARIES%
diff --git a/openwrt/package/postgresql/patches/750-configure-honor-cppflags.patch b/openwrt/package/postgresql/patches/750-configure-honor-cppflags.patch
deleted file mode 100644
index 897c6c05a9..0000000000
--- a/openwrt/package/postgresql/patches/750-configure-honor-cppflags.patch
+++ /dev/null
@@ -1,10 +0,0 @@
-diff -ruN postgresql-7.4.6-old/src/template/linux postgresql-7.4.6-new/src/template/linux
---- postgresql-7.4.6-old/src/template/linux 2003-10-09 18:52:45.000000000 +0200
-+++ postgresql-7.4.6-new/src/template/linux 2005-04-13 03:12:49.000000000 +0200
-@@ -1,5 +1,5 @@
- # Force _GNU_SOURCE on; plperl is broken with Perl 5.8.0 otherwise
--CPPFLAGS="-D_GNU_SOURCE"
-+CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
-
- THREAD_SUPPORT=yes
- NEED_REENTRANT_FUNCS=yes # Debian kernel 2.2 2003-09-27
diff --git a/openwrt/package/ppp/Config.in b/openwrt/package/ppp/Config.in
deleted file mode 100644
index 21139adf77..0000000000
--- a/openwrt/package/ppp/Config.in
+++ /dev/null
@@ -1,53 +0,0 @@
-menu "ppp............................... PPP (Point-to-Point Protocol) daemon"
-
-config BR2_PACKAGE_PPP
- prompt "ppp............................... PPP (Point-to-Point Protocol) daemon"
- tristate
- default n if BR2_LINUX_2_6_ARUBA
- default y
- select BR2_PACKAGE_KMOD_PPP
-
-config BR2_PACKAGE_PPP_WITH_FILTER
- prompt "Enable filter support"
- bool
- default y
-
-config BR2_PACKAGE_PPP_MOD_PPPOA
- prompt "ppp-mod-pppoa................... PPPoA (PPP over ATM) plugin"
- tristate
- default y if BR2_LINUX_2_4_AR7
- depends on BR2_PACKAGE_PPP
- select BR2_PACKAGE_KMOD_PPPOATM
-
-config BR2_PACKAGE_PPP_MOD_PPPOE
- prompt "ppp-mod-pppoe................... PPPoE (PPP over Ethernet) plugin"
- tristate
- default y
- depends on BR2_PACKAGE_PPP
- select BR2_PACKAGE_KMOD_PPPOE
-
-config BR2_PACKAGE_PPP_MOD_RADIUS
- prompt "ppp-mod-radius.................. RADIUS (Remote Authentication Dial-In User Service) plugin"
- tristate
- default m if CONFIG_DEVEL
- depends on BR2_PACKAGE_PPP
-
-config BR2_PACKAGE_CHAT
- prompt "chat............................ Utility to establish conversation with other PPP servers (via a modem)"
- tristate
- default m if CONFIG_DEVEL
- depends on BR2_PACKAGE_PPP
-
-config BR2_PACKAGE_PPPDUMP
- prompt "pppdump......................... Utility to read PPP record file"
- tristate
- default m if CONFIG_DEVEL
- depends on BR2_PACKAGE_PPP
-
-config BR2_PACKAGE_PPPSTATS
- prompt "pppstats........................ Utility to report PPP statistics"
- tristate
- default m if CONFIG_DEVEL
- depends on BR2_PACKAGE_PPP
-
-endmenu
diff --git a/openwrt/package/ppp/Makefile b/openwrt/package/ppp/Makefile
deleted file mode 100644
index 1103491033..0000000000
--- a/openwrt/package/ppp/Makefile
+++ /dev/null
@@ -1,148 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ppp
-PKG_VERSION:=2.4.3
-PKG_RELEASE:=7
-PKG_MD5SUM:=848f6c3cafeb6074ffeb293c3af79b7c
-
-PKG_SOURCE_URL:=ftp://ftp.samba.org/pub/ppp/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-define PKG_mod_template
-
-$$(IPKG_$(1)):
- install -d -m0755 $$(IDIR_$(1))/usr/lib/pppd/$(PKG_VERSION)
- install -m0755 $(PKG_INSTALL_DIR)/usr/lib/pppd/$(PKG_VERSION)/$(2).so \
- $$(IDIR_$(1))/usr/lib/pppd/$(PKG_VERSION)/
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-$(eval $(call PKG_template,PPP,ppp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PPP_MOD_PPPOA,ppp-mod-pppoa,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PPP_MOD_PPPOE,ppp-mod-pppoe,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PPP_MOD_RADIUS,ppp-mod-radius,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,CHAT,chat,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PPPDUMP,pppdump,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PPPSTATS,pppstats,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_mod_template,PPP_MOD_PPPOA,pppoatm))
-$(eval $(call PKG_mod_template,PPP_MOD_PPPOE,rp-pppoe))
-$(eval $(call PKG_mod_template,PPP_MOD_RADIUS,radius))
-
-PKG_DEPEND:="kmod-ppp"
-ifeq ($(BR2_PACKAGE_PPP_WITH_FILTER),y)
-ENABLE_FILTER:="PRECOMPILED_FILTER=1"
-endif
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)/usr
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- COPTS="$(TARGET_CFLAGS)" \
- HAVE_INET6="1" \
- $(ENABLE_FILTER) \
- STAGING_DIR=$(STAGING_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)/usr" \
- all install
- touch $@
-
-ifeq ($(BR2_PACKAGE_PPP_WITH_FILTER),y)
-INSTALL_FILTER=install -m0644 ./files/etc/ppp/filter $(IDIR_PPP)/etc/ppp/
-endif
-
-$(IPKG_PPP):
- install -d -m0755 $(IDIR_PPP)/etc/ppp
- ln -sf /tmp/resolv.conf $(IDIR_PPP)/etc/ppp/resolv.conf
- install -m0600 ./files/etc/ppp/chap-secrets $(IDIR_PPP)/etc/ppp/
- install -m0644 ./files/etc/ppp/options $(IDIR_PPP)/etc/ppp/
- $(INSTALL_FILTER)
- install -m0755 ./files/etc/ppp/ip-up $(IDIR_PPP)/etc/ppp/
- install -d -m0755 $(IDIR_PPP)/etc/ppp/ip-up.d
- install -m0755 ./files/etc/ppp/ip-down $(IDIR_PPP)/etc/ppp/
- install -d -m0755 $(IDIR_PPP)/etc/ppp/ip-down.d
- install -d -m0755 $(IDIR_PPP)/usr/sbin
- install -m0755 $(PKG_INSTALL_DIR)/usr/sbin/pppd $(IDIR_PPP)/usr/sbin/
- install -d -m0755 $(IDIR_PPP)/usr/lib/pppd
- echo "Depends: $(PKG_DEPEND)" >> $(IDIR_PPP)/CONTROL/control
- $(RSTRIP) $(IDIR_PPP)
- $(IPKG_BUILD) $(IDIR_PPP) $(PACKAGE_DIR)
-
-$(IDIR_PPP_MOD_PPPOA)/sbin/ifup.pppoa:
- install -d -m0755 $(IDIR_PPP_MOD_PPPOA)/sbin
- install -m0755 ./files/ifup.pppoa $(IDIR_PPP_MOD_PPPOA)/sbin/
-
-$(IPKG_PPP_MOD_PPPOA): $(IDIR_PPP_MOD_PPPOA)/sbin/ifup.pppoa
-
-$(IDIR_PPP_MOD_PPPOE)/sbin/ifup.pppoe:
- install -d -m0755 $(IDIR_PPP_MOD_PPPOE)/sbin
- install -m0755 ./files/ifup.pppoe $(IDIR_PPP_MOD_PPPOE)/sbin/
-
-$(IPKG_PPP_MOD_PPPOE): $(IDIR_PPP_MOD_PPPOE)/sbin/ifup.pppoe
-
-$(IDIR_PPP_MOD_RADIUS)/etc/ppp/radius.conf:
- install -d -m0755 $(IDIR_PPP_MOD_RADIUS)/etc/ppp
- install -m644 ./files/etc/ppp/radius.conf $(IDIR_PPP_MOD_RADIUS)/etc/ppp/
- install -d -m0755 $(IDIR_PPP_MOD_RADIUS)/etc/ppp/radius
- install -m644 ./files/etc/ppp/radius/dictionary* \
- $(IDIR_PPP_MOD_RADIUS)/etc/ppp/radius/
- install -m600 ./files/etc/ppp/radius/servers \
- $(IDIR_PPP_MOD_RADIUS)/etc/ppp/radius/
-
-$(IPKG_PPP_MOD_RADIUS): $(IDIR_PPP_MOD_RADIUS)/etc/ppp/radius.conf
-
-$(IPKG_CHAT):
- install -d -m0755 $(IDIR_CHAT)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/chat $(IDIR_CHAT)/usr/sbin/
- $(RSTRIP) $(IDIR_CHAT)
- $(IPKG_BUILD) $(IDIR_CHAT) $(PACKAGE_DIR)
-
-$(IPKG_PPPDUMP):
- install -d -m0755 $(IDIR_PPPDUMP)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/pppdump $(IDIR_PPPDUMP)/usr/sbin/
- $(RSTRIP) $(IDIR_PPPDUMP)
- $(IPKG_BUILD) $(IDIR_PPPDUMP) $(PACKAGE_DIR)
-
-$(IPKG_PPPSTATS): $(IPKG_PPP)
- install -d -m0755 $(IDIR_PPPSTATS)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/pppstats $(IDIR_PPPSTATS)/usr/sbin/
- $(RSTRIP) $(IDIR_PPPSTATS)
- $(IPKG_BUILD) $(IDIR_PPPSTATS) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/ppp/files/etc/ppp/chap-secrets b/openwrt/package/ppp/files/etc/ppp/chap-secrets
deleted file mode 100644
index 6ab76e49e9..0000000000
--- a/openwrt/package/ppp/files/etc/ppp/chap-secrets
+++ /dev/null
@@ -1 +0,0 @@
-#USERNAME PROVIDER PASSWORD IPADDRESS
diff --git a/openwrt/package/ppp/files/etc/ppp/filter b/openwrt/package/ppp/files/etc/ppp/filter
deleted file mode 100644
index ec72a81a01..0000000000
--- a/openwrt/package/ppp/files/etc/ppp/filter
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Expression: outbound and not icmp[0] != 8 and not tcp[13] & 4 != 0
-#
-19
-48 0 0 0
-21 0 16 1
-40 0 0 2
-21 0 13 33
-48 0 0 13
-21 0 5 1
-40 0 0 10
-69 9 0 8191
-177 0 0 4
-80 0 0 4
-21 6 7 8
-21 0 5 6
-40 0 0 10
-69 3 0 8191
-177 0 0 4
-80 0 0 17
-69 1 0 4
-6 0 0 4
-6 0 0 0
diff --git a/openwrt/package/ppp/files/etc/ppp/ip-down b/openwrt/package/ppp/files/etc/ppp/ip-down
deleted file mode 100755
index 334bcb885a..0000000000
--- a/openwrt/package/ppp/files/etc/ppp/ip-down
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-[ -z "$6" ] || env -i ACTION="ifdown" INTERFACE="$6" PROTO=ppp /sbin/hotplug "iface"
-
-[ -d /etc/ppp/ip-down.d ] && {
- for SCRIPT in /etc/ppp/ip-down.d/*
- do
- [ -x "$SCRIPT" ] && "$SCRIPT" $@
- done
-}
diff --git a/openwrt/package/ppp/files/etc/ppp/ip-up b/openwrt/package/ppp/files/etc/ppp/ip-up
deleted file mode 100755
index 34b4b50e15..0000000000
--- a/openwrt/package/ppp/files/etc/ppp/ip-up
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-[ -z "$6" ] || env -i ACTION="ifup" INTERFACE="$6" PROTO=ppp /sbin/hotplug "iface"
-
-[ -d /etc/ppp/ip-up.d ] && {
- for SCRIPT in /etc/ppp/ip-up.d/*
- do
- [ -x "$SCRIPT" ] && "$SCRIPT" $@
- done
-}
diff --git a/openwrt/package/ppp/files/etc/ppp/options b/openwrt/package/ppp/files/etc/ppp/options
deleted file mode 100644
index d74de79306..0000000000
--- a/openwrt/package/ppp/files/etc/ppp/options
+++ /dev/null
@@ -1,6 +0,0 @@
-#debug
-noaccomp
-nopcomp
-nocrtscts
-lock
-maxfail 0
diff --git a/openwrt/package/ppp/files/etc/ppp/radius.conf b/openwrt/package/ppp/files/etc/ppp/radius.conf
deleted file mode 100644
index 0f24a8c7f7..0000000000
--- a/openwrt/package/ppp/files/etc/ppp/radius.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-authserver localhost:1812
-acctserver localhost:1813
-dictionary /etc/ppp/radius/dictionary
-servers /etc/ppp/radius/servers
-mapfile /dev/null
-seqfile /tmp/radius.seq
-radius_timeout 5
-radius_retries 3
diff --git a/openwrt/package/ppp/files/etc/ppp/radius/dictionary b/openwrt/package/ppp/files/etc/ppp/radius/dictionary
deleted file mode 100644
index 706d1ce99c..0000000000
--- a/openwrt/package/ppp/files/etc/ppp/radius/dictionary
+++ /dev/null
@@ -1,253 +0,0 @@
-#
-# Updated 97/06/13 to livingston-radius-2.01 miquels@cistron.nl
-#
-# This file contains dictionary translations for parsing
-# requests and generating responses. All transactions are
-# composed of Attribute/Value Pairs. The value of each attribute
-# is specified as one of 4 data types. Valid data types are:
-#
-# string - 0-253 octets
-# ipaddr - 4 octets in network byte order
-# integer - 32 bit value in big endian order (high byte first)
-# date - 32 bit value in big endian order - seconds since
-# 00:00:00 GMT, Jan. 1, 1970
-#
-# Enumerated values are stored in the user file with dictionary
-# VALUE translations for easy administration.
-#
-# Example:
-#
-# ATTRIBUTE VALUE
-# --------------- -----
-# Framed-Protocol = PPP
-# 7 = 1 (integer encoding)
-#
-
-# The dictionary format now supports vendor-specific attributes.
-# Vendors are introduced like this:
-#
-# VENDOR vendor_name vendor_number
-#
-# For example:
-#
-# VENDOR RoaringPenguin 10055
-#
-# Vendor-specific attributes have a fifth field with the name of the
-# vendor. For example:
-#
-# ATTRIBUTE RP-Upstream-Speed-Limit 1 integer RoaringPenguin
-#
-# introduces a Roaring Penguin vendor-specific attribbute with name
-# RP-Upstream-Speed-Limit, number 1, type integer and vendor RoaringPenguin.
-
-#
-# Following are the proper new names. Use these.
-#
-ATTRIBUTE User-Name 1 string
-ATTRIBUTE Password 2 string
-ATTRIBUTE CHAP-Password 3 string
-ATTRIBUTE NAS-IP-Address 4 ipaddr
-ATTRIBUTE NAS-Port-Id 5 integer
-ATTRIBUTE Service-Type 6 integer
-ATTRIBUTE Framed-Protocol 7 integer
-ATTRIBUTE Framed-IP-Address 8 ipaddr
-ATTRIBUTE Framed-IP-Netmask 9 ipaddr
-ATTRIBUTE Framed-Routing 10 integer
-ATTRIBUTE Filter-Id 11 string
-ATTRIBUTE Framed-MTU 12 integer
-ATTRIBUTE Framed-Compression 13 integer
-ATTRIBUTE Login-IP-Host 14 ipaddr
-ATTRIBUTE Login-Service 15 integer
-ATTRIBUTE Login-TCP-Port 16 integer
-ATTRIBUTE Reply-Message 18 string
-ATTRIBUTE Callback-Number 19 string
-ATTRIBUTE Callback-Id 20 string
-ATTRIBUTE Framed-Route 22 string
-ATTRIBUTE Framed-IPX-Network 23 ipaddr
-ATTRIBUTE State 24 string
-ATTRIBUTE Class 25 string
-ATTRIBUTE Session-Timeout 27 integer
-ATTRIBUTE Idle-Timeout 28 integer
-ATTRIBUTE Termination-Action 29 integer
-ATTRIBUTE Called-Station-Id 30 string
-ATTRIBUTE Calling-Station-Id 31 string
-ATTRIBUTE NAS-Identifier 32 string
-ATTRIBUTE Acct-Status-Type 40 integer
-ATTRIBUTE Acct-Delay-Time 41 integer
-ATTRIBUTE Acct-Input-Octets 42 integer
-ATTRIBUTE Acct-Output-Octets 43 integer
-ATTRIBUTE Acct-Session-Id 44 string
-ATTRIBUTE Acct-Authentic 45 integer
-ATTRIBUTE Acct-Session-Time 46 integer
-ATTRIBUTE Acct-Input-Packets 47 integer
-ATTRIBUTE Acct-Output-Packets 48 integer
-ATTRIBUTE Acct-Terminate-Cause 49 integer
-ATTRIBUTE Chap-Challenge 60 string
-ATTRIBUTE NAS-Port-Type 61 integer
-ATTRIBUTE Port-Limit 62 integer
-ATTRIBUTE Connect-Info 77 string
-
-# RFC 2869
-ATTRIBUTE Acct-Interim-Interval 85 integer
-
-#
-# Experimental Non Protocol Attributes used by Cistron-Radiusd
-#
-ATTRIBUTE Huntgroup-Name 221 string
-ATTRIBUTE User-Category 1029 string
-ATTRIBUTE Group-Name 1030 string
-ATTRIBUTE Simultaneous-Use 1034 integer
-ATTRIBUTE Strip-User-Name 1035 integer
-ATTRIBUTE Fall-Through 1036 integer
-ATTRIBUTE Add-Port-To-IP-Address 1037 integer
-ATTRIBUTE Exec-Program 1038 string
-ATTRIBUTE Exec-Program-Wait 1039 string
-ATTRIBUTE Hint 1040 string
-
-#
-# Non-Protocol Attributes
-# These attributes are used internally by the server
-#
-ATTRIBUTE Expiration 21 date
-ATTRIBUTE Auth-Type 1000 integer
-ATTRIBUTE Menu 1001 string
-ATTRIBUTE Termination-Menu 1002 string
-ATTRIBUTE Prefix 1003 string
-ATTRIBUTE Suffix 1004 string
-ATTRIBUTE Group 1005 string
-ATTRIBUTE Crypt-Password 1006 string
-ATTRIBUTE Connect-Rate 1007 integer
-
-#
-# Experimental, implementation specific attributes
-#
-# Limit session traffic
-ATTRIBUTE Session-Octets-Limit 227 integer
-# What to assume as limit - 0 in+out, 1 in, 2 out, 3 max(in,out)
-ATTRIBUTE Octets-Direction 228 integer
-
-#
-# Integer Translations
-#
-
-# User Types
-
-VALUE Service-Type Login-User 1
-VALUE Service-Type Framed-User 2
-VALUE Service-Type Callback-Login-User 3
-VALUE Service-Type Callback-Framed-User 4
-VALUE Service-Type Outbound-User 5
-VALUE Service-Type Administrative-User 6
-VALUE Service-Type NAS-Prompt-User 7
-
-# Framed Protocols
-
-VALUE Framed-Protocol PPP 1
-VALUE Framed-Protocol SLIP 2
-
-# Framed Routing Values
-
-VALUE Framed-Routing None 0
-VALUE Framed-Routing Broadcast 1
-VALUE Framed-Routing Listen 2
-VALUE Framed-Routing Broadcast-Listen 3
-
-# Framed Compression Types
-
-VALUE Framed-Compression None 0
-VALUE Framed-Compression Van-Jacobson-TCP-IP 1
-
-# Login Services
-
-VALUE Login-Service Telnet 0
-VALUE Login-Service Rlogin 1
-VALUE Login-Service TCP-Clear 2
-VALUE Login-Service PortMaster 3
-
-# Status Types
-
-VALUE Acct-Status-Type Start 1
-VALUE Acct-Status-Type Stop 2
-VALUE Acct-Status-Type Accounting-On 7
-VALUE Acct-Status-Type Accounting-Off 8
-
-# Authentication Types
-
-VALUE Acct-Authentic RADIUS 1
-VALUE Acct-Authentic Local 2
-VALUE Acct-Authentic PowerLink128 100
-
-# Termination Options
-
-VALUE Termination-Action Default 0
-VALUE Termination-Action RADIUS-Request 1
-
-# NAS Port Types, available in 3.3.1 and later
-
-VALUE NAS-Port-Type Async 0
-VALUE NAS-Port-Type Sync 1
-VALUE NAS-Port-Type ISDN 2
-VALUE NAS-Port-Type ISDN-V120 3
-VALUE NAS-Port-Type ISDN-V110 4
-
-# Acct Terminate Causes, available in 3.3.2 and later
-
-VALUE Acct-Terminate-Cause User-Request 1
-VALUE Acct-Terminate-Cause Lost-Carrier 2
-VALUE Acct-Terminate-Cause Lost-Service 3
-VALUE Acct-Terminate-Cause Idle-Timeout 4
-VALUE Acct-Terminate-Cause Session-Timeout 5
-VALUE Acct-Terminate-Cause Admin-Reset 6
-VALUE Acct-Terminate-Cause Admin-Reboot 7
-VALUE Acct-Terminate-Cause Port-Error 8
-VALUE Acct-Terminate-Cause NAS-Error 9
-VALUE Acct-Terminate-Cause NAS-Request 10
-VALUE Acct-Terminate-Cause NAS-Reboot 11
-VALUE Acct-Terminate-Cause Port-Unneeded 12
-VALUE Acct-Terminate-Cause Port-Preempted 13
-VALUE Acct-Terminate-Cause Port-Suspended 14
-VALUE Acct-Terminate-Cause Service-Unavailable 15
-VALUE Acct-Terminate-Cause Callback 16
-VALUE Acct-Terminate-Cause User-Error 17
-VALUE Acct-Terminate-Cause Host-Request 18
-
-#
-# Non-Protocol Integer Translations
-#
-
-VALUE Auth-Type Local 0
-VALUE Auth-Type System 1
-VALUE Auth-Type SecurID 2
-VALUE Auth-Type Crypt-Local 3
-VALUE Auth-Type Reject 4
-
-#
-# Cistron extensions
-#
-VALUE Auth-Type Pam 253
-VALUE Auth-Type None 254
-
-#
-# Experimental Non-Protocol Integer Translations for Cistron-Radiusd
-#
-VALUE Fall-Through No 0
-VALUE Fall-Through Yes 1
-VALUE Add-Port-To-IP-Address No 0
-VALUE Add-Port-To-IP-Address Yes 1
-
-#
-# Configuration Values
-# uncomment these two lines to turn account expiration on
-#
-
-#VALUE Server-Config Password-Expiration 30
-#VALUE Server-Config Password-Warning 5
-
-# Octets-Direction
-VALUE Octets-Direction Sum 0
-VALUE Octets-Direction Input 1
-VALUE Octets-Direction Output 2
-VALUE Octets-Direction MaxOveral 3
-VALUE Octets-Direction MaxSession 4
-
-INCLUDE /etc/ppp/radius/dictionary.microsoft
diff --git a/openwrt/package/ppp/files/etc/ppp/radius/dictionary.asnet b/openwrt/package/ppp/files/etc/ppp/radius/dictionary.asnet
deleted file mode 100644
index 337d1e1407..0000000000
--- a/openwrt/package/ppp/files/etc/ppp/radius/dictionary.asnet
+++ /dev/null
@@ -1,3 +0,0 @@
-VENDOR ASNET 50000
-ATTRIBUTE Speed-Down 1 string ASNET
-ATTRIBUTE Speed-Up 2 string ASNET
diff --git a/openwrt/package/ppp/files/etc/ppp/radius/dictionary.microsoft b/openwrt/package/ppp/files/etc/ppp/radius/dictionary.microsoft
deleted file mode 100644
index 09fdbba63f..0000000000
--- a/openwrt/package/ppp/files/etc/ppp/radius/dictionary.microsoft
+++ /dev/null
@@ -1,81 +0,0 @@
-#
-# Microsoft's VSA's, from RFC 2548
-#
-# $Id$
-#
-
-VENDOR Microsoft 311 Microsoft
-
-ATTRIBUTE MS-CHAP-Response 1 string Microsoft
-ATTRIBUTE MS-CHAP-Error 2 string Microsoft
-ATTRIBUTE MS-CHAP-CPW-1 3 string Microsoft
-ATTRIBUTE MS-CHAP-CPW-2 4 string Microsoft
-ATTRIBUTE MS-CHAP-LM-Enc-PW 5 string Microsoft
-ATTRIBUTE MS-CHAP-NT-Enc-PW 6 string Microsoft
-ATTRIBUTE MS-MPPE-Encryption-Policy 7 string Microsoft
-# This is referred to as both singular and plural in the RFC.
-# Plural seems to make more sense.
-ATTRIBUTE MS-MPPE-Encryption-Type 8 string Microsoft
-ATTRIBUTE MS-MPPE-Encryption-Types 8 string Microsoft
-ATTRIBUTE MS-RAS-Vendor 9 integer Microsoft
-ATTRIBUTE MS-CHAP-Domain 10 string Microsoft
-ATTRIBUTE MS-CHAP-Challenge 11 string Microsoft
-ATTRIBUTE MS-CHAP-MPPE-Keys 12 string Microsoft
-ATTRIBUTE MS-BAP-Usage 13 integer Microsoft
-ATTRIBUTE MS-Link-Utilization-Threshold 14 integer Microsoft
-ATTRIBUTE MS-Link-Drop-Time-Limit 15 integer Microsoft
-ATTRIBUTE MS-MPPE-Send-Key 16 string Microsoft
-ATTRIBUTE MS-MPPE-Recv-Key 17 string Microsoft
-ATTRIBUTE MS-RAS-Version 18 string Microsoft
-ATTRIBUTE MS-Old-ARAP-Password 19 string Microsoft
-ATTRIBUTE MS-New-ARAP-Password 20 string Microsoft
-ATTRIBUTE MS-ARAP-PW-Change-Reason 21 integer Microsoft
-
-ATTRIBUTE MS-Filter 22 string Microsoft
-ATTRIBUTE MS-Acct-Auth-Type 23 integer Microsoft
-ATTRIBUTE MS-Acct-EAP-Type 24 integer Microsoft
-
-ATTRIBUTE MS-CHAP2-Response 25 string Microsoft
-ATTRIBUTE MS-CHAP2-Success 26 string Microsoft
-ATTRIBUTE MS-CHAP2-CPW 27 string Microsoft
-
-ATTRIBUTE MS-Primary-DNS-Server 28 ipaddr Microsoft
-ATTRIBUTE MS-Secondary-DNS-Server 29 ipaddr Microsoft
-ATTRIBUTE MS-Primary-NBNS-Server 30 ipaddr Microsoft
-ATTRIBUTE MS-Secondary-NBNS-Server 31 ipaddr Microsoft
-
-#ATTRIBUTE MS-ARAP-Challenge 33 string Microsoft
-
-
-#
-# Integer Translations
-#
-
-# MS-BAP-Usage Values
-
-VALUE MS-BAP-Usage Not-Allowed 0
-VALUE MS-BAP-Usage Allowed 1
-VALUE MS-BAP-Usage Required 2
-
-# MS-ARAP-Password-Change-Reason Values
-
-VALUE MS-ARAP-PW-Change-Reason Just-Change-Password 1
-VALUE MS-ARAP-PW-Change-Reason Expired-Password 2
-VALUE MS-ARAP-PW-Change-Reason Admin-Requires-Password-Change 3
-VALUE MS-ARAP-PW-Change-Reason Password-Too-Short 4
-
-# MS-Acct-Auth-Type Values
-
-VALUE MS-Acct-Auth-Type PAP 1
-VALUE MS-Acct-Auth-Type CHAP 2
-VALUE MS-Acct-Auth-Type MS-CHAP-1 3
-VALUE MS-Acct-Auth-Type MS-CHAP-2 4
-VALUE MS-Acct-Auth-Type EAP 5
-
-# MS-Acct-EAP-Type Values
-
-VALUE MS-Acct-EAP-Type MD5 4
-VALUE MS-Acct-EAP-Type OTP 5
-VALUE MS-Acct-EAP-Type Generic-Token-Card 6
-VALUE MS-Acct-EAP-Type TLS 13
-
diff --git a/openwrt/package/ppp/files/etc/ppp/radius/servers b/openwrt/package/ppp/files/etc/ppp/radius/servers
deleted file mode 100644
index 0d4f0691d0..0000000000
--- a/openwrt/package/ppp/files/etc/ppp/radius/servers
+++ /dev/null
@@ -1,2 +0,0 @@
-# SERVER SECRET
-localhost secret
diff --git a/openwrt/package/ppp/files/ifup.pppoa b/openwrt/package/ppp/files/ifup.pppoa
deleted file mode 100644
index f78a162ce5..0000000000
--- a/openwrt/package/ppp/files/ifup.pppoa
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh
-[ $# = 0 ] && { echo " $0 <group>"; exit; }
-. /etc/config/network
-type=$1
-
-eval "proto=\"\${${type}_proto}\""
-[ "$proto" = "pppoa" ] || {
- echo "$0: ${type}_proto isn't pppoa"
- exit
-}
-
-mkdir -p /var/lock
-
-for module in slhc ppp_generic pppoatm; do
- /sbin/insmod $module 2>&- >&-
-done
-
-KEEPALIVE=${ppp_redialperiod:+lcp-echo-interval $ppp_redialperiod lcp-echo-failure 5}
-case "$ppp_demand" in
- on|1|enabled)
- DEMAND=${ppp_idletime:+demand idle $ppp_idletime}
- [ -f /etc/ppp/filter ] && DEMAND=${DEMAND:+precompiled-active-filter /etc/ppp/filter $DEMAND}
- ;;
- *) DEMAND="persist";;
-esac
-MTU=${ppp_mtu:-1500}
-
-/usr/sbin/pppd \
- plugin pppoatm.so ${atm_vpi:-8}.${atm_vci:-35} \
- usepeerdns \
- defaultroute \
- linkname $type \
- ipparam $type \
- user "$ppp_username" \
- password "$ppp_passwd" \
- mtu $MTU mru $MTU \
- $DEMAND \
- $KEEPALIVE
diff --git a/openwrt/package/ppp/files/ifup.pppoe b/openwrt/package/ppp/files/ifup.pppoe
deleted file mode 100644
index c7019fc398..0000000000
--- a/openwrt/package/ppp/files/ifup.pppoe
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-[ $# = 0 ] && { echo " $0 <group>"; exit; }
-. /etc/config/network
-type=$1
-
-eval "proto=\"\${${type}_proto}\""
-[ "$proto" = "pppoe" ] || {
- echo "$0: ${type}_proto isn't pppoe"
- exit
-}
-
-mkdir -p /var/lock
-
-for module in slhc ppp_generic pppox pppoe; do
- /sbin/insmod $module 2>&- >&-
-done
-
-eval "IFNAME=\"\${${type}_device}\""
-KEEPALIVE=${ppp_redialperiod:+lcp-echo-interval $ppp_redialperiod lcp-echo-failure 5}
-case "$ppp_demand" in
- on|1|enabled)
- DEMAND=${ppp_idletime:+demand idle $ppp_idletime}
- [ -f /etc/ppp/filter ] && DEMAND=${DEMAND:+precompiled-active-filter /etc/ppp/filter $DEMAND}
- ;;
- *) DEMAND="persist";;
-esac
-MTU=${ppp_mtu:-1492}
-
-ifconfig $IFNAME up
-/usr/sbin/pppd \
- plugin rp-pppoe.so \
- connect /bin/true \
- usepeerdns \
- defaultroute \
- linkname $type \
- ipparam $type \
- user "$ppp_username" \
- password "$ppp_passwd" \
- mtu $MTU mru $MTU \
- $DEMAND \
- $KEEPALIVE \
- nic-$IFNAME
-
diff --git a/openwrt/package/ppp/ipkg/chat.control b/openwrt/package/ppp/ipkg/chat.control
deleted file mode 100644
index 43dbdb1e1b..0000000000
--- a/openwrt/package/ppp/ipkg/chat.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: chat
-Priority: optional
-Section: net
-Description: Utility for establishing a connection with the ISP's PPP server (e.g. via Modem)
-Depends: ppp
diff --git a/openwrt/package/ppp/ipkg/ppp-mod-pppoa.control b/openwrt/package/ppp/ipkg/ppp-mod-pppoa.control
deleted file mode 100644
index ce2d5d45fd..0000000000
--- a/openwrt/package/ppp/ipkg/ppp-mod-pppoa.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ppp-mod-pppoa
-Priority: optional
-Section: net
-Description: a PPPoA (PPP over ATM) plugin for PPP
-Depends: ppp, kmod-pppoa
diff --git a/openwrt/package/ppp/ipkg/ppp-mod-pppoe.control b/openwrt/package/ppp/ipkg/ppp-mod-pppoe.control
deleted file mode 100644
index 7cf49636b0..0000000000
--- a/openwrt/package/ppp/ipkg/ppp-mod-pppoe.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ppp-mod-pppoe
-Priority: optional
-Section: net
-Description: a PPPoE (PPP over Ethernet) plugin for PPP
-Depends: ppp, kmod-pppoe
diff --git a/openwrt/package/ppp/ipkg/ppp-mod-radius.conffiles b/openwrt/package/ppp/ipkg/ppp-mod-radius.conffiles
deleted file mode 100644
index 70fe146d22..0000000000
--- a/openwrt/package/ppp/ipkg/ppp-mod-radius.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/ppp/radius.conf
-/etc/ppp/radius/servers
diff --git a/openwrt/package/ppp/ipkg/ppp-mod-radius.control b/openwrt/package/ppp/ipkg/ppp-mod-radius.control
deleted file mode 100644
index 0a858da30f..0000000000
--- a/openwrt/package/ppp/ipkg/ppp-mod-radius.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ppp-mod-radius
-Priority: optional
-Section: net
-Description: a RADIUS plugin for PPP
-Depends: ppp
diff --git a/openwrt/package/ppp/ipkg/ppp.conffiles b/openwrt/package/ppp/ipkg/ppp.conffiles
deleted file mode 100644
index 8ad17eb436..0000000000
--- a/openwrt/package/ppp/ipkg/ppp.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/ppp/chap-secrets
-/etc/ppp/options
diff --git a/openwrt/package/ppp/ipkg/ppp.control b/openwrt/package/ppp/ipkg/ppp.control
deleted file mode 100644
index 38e5331908..0000000000
--- a/openwrt/package/ppp/ipkg/ppp.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: ppp
-Priority: optional
-Section: net
-Description: a PPP (Point-to-Point Protocol) daemon (with MPPE/MPPC support)
diff --git a/openwrt/package/ppp/ipkg/pppdump.control b/openwrt/package/ppp/ipkg/pppdump.control
deleted file mode 100644
index 4a89e152ea..0000000000
--- a/openwrt/package/ppp/ipkg/pppdump.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: pppdump
-Priority: optional
-Section: net
-Description: an utility to read PPP record file
-Depends: ppp
diff --git a/openwrt/package/ppp/ipkg/pppstats.control b/openwrt/package/ppp/ipkg/pppstats.control
deleted file mode 100644
index 8780b2f875..0000000000
--- a/openwrt/package/ppp/ipkg/pppstats.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: pppstats
-Priority: optional
-Section: net
-Description: an utility to report PPP statistics
-Depends: ppp
diff --git a/openwrt/package/ppp/patches/100-debian_close_dev_ppp.patch b/openwrt/package/ppp/patches/100-debian_close_dev_ppp.patch
deleted file mode 100644
index 4e50118e87..0000000000
--- a/openwrt/package/ppp/patches/100-debian_close_dev_ppp.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From: Simon Peter <dn.tlp@gmx.net>
-Subject: Bug#306261: pppd does not properly close /dev/ppp on persist
-
-When using the kernel PPPoE driver, pppd never
-closes /dev/ppp when the link has come down.
-
-It opens superfluous fds to the device each time it re-opens the
-connection, with the unclosed ones falsely reported always ready for
-data by select().
-
-This makes pppd eat up 100% CPU time after the first persist because of
-the always instantly returning select() on the unclosed fds.
-
-The problem also occurs with the upstream version, but does not occur
-when a pty/tty device is used for the ppp connection.
-
-
-diff -u -r ppp-2.4.3/pppd/sys-linux.c ppp-2.4.3/pppd/sys-linux.c
---- ppp-2.4.3/pppd/sys-linux.c 2005-04-29 20:08:37.000000000 +0200
-+++ ppp-2.4.3/pppd/sys-linux.c 2005-04-29 20:07:03.000000000 +0200
-@@ -455,6 +455,13 @@
- if (new_style_driver) {
- int flags;
-
-+ /* if a ppp_fd is already open, close it first */
-+ if(ppp_fd > 0) {
-+ close(ppp_fd);
-+ remove_fd(ppp_fd);
-+ ppp_fd = -1;
-+ }
-+
- /* Open an instance of /dev/ppp and connect the channel to it */
- if (ioctl(fd, PPPIOCGCHAN, &chindex) == -1) {
- error("Couldn't get channel number: %m");
diff --git a/openwrt/package/ppp/patches/101-debian_ip-up_option.patch b/openwrt/package/ppp/patches/101-debian_ip-up_option.patch
deleted file mode 100644
index 6033fda247..0000000000
--- a/openwrt/package/ppp/patches/101-debian_ip-up_option.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-diff -ruNp ppp-2.4.3.orig/pppd/ipcp.c ppp-2.4.3/pppd/ipcp.c
---- ppp-2.4.3.orig/pppd/ipcp.c 2004-11-13 13:03:26.000000000 +0100
-+++ ppp-2.4.3/pppd/ipcp.c 2005-02-20 18:45:22.241810136 +0100
-@@ -1846,7 +1846,7 @@ ipcp_up(f)
- */
- if (ipcp_script_state == s_down && ipcp_script_pid == 0) {
- ipcp_script_state = s_up;
-- ipcp_script(_PATH_IPUP);
-+ ipcp_script(path_ipup);
- }
- }
-
-@@ -1896,7 +1896,7 @@ ipcp_down(f)
- /* Execute the ip-down script */
- if (ipcp_script_state == s_up && ipcp_script_pid == 0) {
- ipcp_script_state = s_down;
-- ipcp_script(_PATH_IPDOWN);
-+ ipcp_script(path_ipdown);
- }
- }
-
-@@ -1950,13 +1950,13 @@ ipcp_script_done(arg)
- case s_up:
- if (ipcp_fsm[0].state != OPENED) {
- ipcp_script_state = s_down;
-- ipcp_script(_PATH_IPDOWN);
-+ ipcp_script(path_ipdown);
- }
- break;
- case s_down:
- if (ipcp_fsm[0].state == OPENED) {
- ipcp_script_state = s_up;
-- ipcp_script(_PATH_IPUP);
-+ ipcp_script(path_ipup);
- }
- break;
- }
-diff -ruNp ppp-2.4.3.orig/pppd/main.c ppp-2.4.3/pppd/main.c
---- ppp-2.4.3.orig/pppd/main.c 2005-02-20 18:46:14.409879384 +0100
-+++ ppp-2.4.3/pppd/main.c 2005-02-20 18:45:22.243809832 +0100
-@@ -314,6 +314,9 @@ main(argc, argv)
- struct protent *protp;
- char numbuf[16];
-
-+ strlcpy(path_ipup, _PATH_IPUP, sizeof(path_ipup));
-+ strlcpy(path_ipdown, _PATH_IPDOWN, sizeof(path_ipdown));
-+
- link_stats_valid = 0;
- new_phase(PHASE_INITIALIZE);
-
-diff -ruNp ppp-2.4.3.orig/pppd/options.c ppp-2.4.3/pppd/options.c
---- ppp-2.4.3.orig/pppd/options.c 2005-02-20 18:46:14.410879232 +0100
-+++ ppp-2.4.3/pppd/options.c 2005-02-20 18:46:02.154742448 +0100
-@@ -108,6 +108,8 @@ char linkname[MAXPATHLEN]; /* logical na
- bool tune_kernel; /* may alter kernel settings */
- int connect_delay = 1000; /* wait this many ms after connect script */
- int req_unit = -1; /* requested interface unit */
-+char path_ipup[MAXPATHLEN]; /* pathname of ip-up script */
-+char path_ipdown[MAXPATHLEN];/* pathname of ip-down script */
- bool multilink = 0; /* Enable multilink operation */
- char *bundle_name = NULL; /* bundle name for multilink */
- bool dump_options; /* print out option values */
-@@ -276,6 +278,13 @@ option_t general_options[] = {
- "Number of seconds to wait for child processes at exit",
- OPT_PRIO },
-
-+ { "ip-up-script", o_string, path_ipup,
-+ "Set pathname of ip-up script",
-+ OPT_PRIV|OPT_STATIC, NULL, MAXPATHLEN },
-+ { "ip-down-script", o_string, path_ipdown,
-+ "Set pathname of ip-down script",
-+ OPT_PRIV|OPT_STATIC, NULL, MAXPATHLEN },
-+
- #ifdef HAVE_MULTILINK
- { "multilink", o_bool, &multilink,
- "Enable multilink operation", OPT_PRIO | 1 },
-diff -ruNp ppp-2.4.3.orig/pppd/pppd.h ppp-2.4.3/pppd/pppd.h
---- ppp-2.4.3.orig/pppd/pppd.h 2005-02-20 18:46:14.414878624 +0100
-+++ ppp-2.4.3/pppd/pppd.h 2005-02-20 18:45:22.247809224 +0100
-@@ -312,6 +312,8 @@ extern bool tune_kernel; /* May alter ke
- extern int connect_delay; /* Time to delay after connect script */
- extern int max_data_rate; /* max bytes/sec through charshunt */
- extern int req_unit; /* interface unit number to use */
-+extern char path_ipup[MAXPATHLEN]; /* pathname of ip-up script */
-+extern char path_ipdown[MAXPATHLEN]; /* pathname of ip-down script */
- extern bool multilink; /* enable multilink operation */
- extern bool noendpoint; /* don't send or accept endpt. discrim. */
- extern char *bundle_name; /* bundle name for multilink */
diff --git a/openwrt/package/ppp/patches/102-debian_pppoe_multicast_pado.patch b/openwrt/package/ppp/patches/102-debian_pppoe_multicast_pado.patch
deleted file mode 100644
index ea5275c461..0000000000
--- a/openwrt/package/ppp/patches/102-debian_pppoe_multicast_pado.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -ruNp ppp-2.4.3.orig/pppd/plugins/rp-pppoe/discovery.c ppp-2.4.3/pppd/plugins/rp-pppoe/discovery.c
---- ppp-2.4.3.orig/pppd/plugins/rp-pppoe/discovery.c 2004-11-04 11:07:37.000000000 +0100
-+++ ppp-2.4.3/pppd/plugins/rp-pppoe/discovery.c 2005-02-24 21:00:11.586697752 +0100
-@@ -365,8 +365,8 @@ waitForPADO(PPPoEConnection *conn, int t
- if (!packetIsForMe(conn, &packet)) continue;
-
- if (packet.code == CODE_PADO) {
-- if (NOT_UNICAST(packet.ethHdr.h_source)) {
-- printErr("Ignoring PADO packet from non-unicast MAC address");
-+ if (BROADCAST(packet.ethHdr.h_source)) {
-+ printErr("Ignoring PADO packet from broadcast MAC address");
- continue;
- }
- parsePacket(&packet, parsePADOTags, &pc);
diff --git a/openwrt/package/ppp/patches/103-debian_pppoe_cleanup.patch b/openwrt/package/ppp/patches/103-debian_pppoe_cleanup.patch
deleted file mode 100644
index 8a97a0b2e5..0000000000
--- a/openwrt/package/ppp/patches/103-debian_pppoe_cleanup.patch
+++ /dev/null
@@ -1,1079 +0,0 @@
-diff -ruNp ppp-2.4.3.orig/pppd/plugins/rp-pppoe/common.c ppp-2.4.3/pppd/plugins/rp-pppoe/common.c
---- ppp-2.4.3.orig/pppd/plugins/rp-pppoe/common.c 2004-02-02 04:36:46.000000000 +0100
-+++ ppp-2.4.3/pppd/plugins/rp-pppoe/common.c 2005-03-11 02:09:19.000000000 +0100
-@@ -18,10 +18,6 @@ static char const RCSID[] =
-
- #include "pppoe.h"
-
--#ifdef HAVE_SYSLOG_H
--#include <syslog.h>
--#endif
--
- #include <string.h>
- #include <errno.h>
- #include <stdlib.h>
-@@ -50,17 +46,17 @@ parsePacket(PPPoEPacket *packet, ParseFu
- UINT16_t tagType, tagLen;
-
- if (packet->ver != 1) {
-- syslog(LOG_ERR, "Invalid PPPoE version (%d)", (int) packet->ver);
-+ error("Invalid PPPoE version (%u)", packet->ver);
- return -1;
- }
- if (packet->type != 1) {
-- syslog(LOG_ERR, "Invalid PPPoE type (%d)", (int) packet->type);
-+ error("Invalid PPPoE type (%u)", packet->type);
- return -1;
- }
-
- /* Do some sanity checks on packet */
- if (len > ETH_DATA_LEN - 6) { /* 6-byte overhead for PPPoE header */
-- syslog(LOG_ERR, "Invalid PPPoE packet length (%u)", len);
-+ error("Invalid PPPoE packet length (%u)", len);
- return -1;
- }
-
-@@ -76,7 +72,7 @@ parsePacket(PPPoEPacket *packet, ParseFu
- return 0;
- }
- if ((curTag - packet->payload) + tagLen + TAG_HDR_SIZE > len) {
-- syslog(LOG_ERR, "Invalid PPPoE tag length (%u)", tagLen);
-+ error("Invalid PPPoE tag length (%u)", tagLen);
- return -1;
- }
- func(tagType, tagLen, curTag+TAG_HDR_SIZE, extra);
-@@ -105,17 +101,17 @@ findTag(PPPoEPacket *packet, UINT16_t ty
- UINT16_t tagType, tagLen;
-
- if (packet->ver != 1) {
-- syslog(LOG_ERR, "Invalid PPPoE version (%d)", (int) packet->ver);
-+ error("Invalid PPPoE version (%u)", packet->ver);
- return NULL;
- }
- if (packet->type != 1) {
-- syslog(LOG_ERR, "Invalid PPPoE type (%d)", (int) packet->type);
-+ error("Invalid PPPoE type (%u)", packet->type);
- return NULL;
- }
-
- /* Do some sanity checks on packet */
- if (len > ETH_DATA_LEN - 6) { /* 6-byte overhead for PPPoE header */
-- syslog(LOG_ERR, "Invalid PPPoE packet length (%u)", len);
-+ error("Invalid PPPoE packet length (%u)", len);
- return NULL;
- }
-
-@@ -131,7 +127,7 @@ findTag(PPPoEPacket *packet, UINT16_t ty
- return NULL;
- }
- if ((curTag - packet->payload) + tagLen + TAG_HDR_SIZE > len) {
-- syslog(LOG_ERR, "Invalid PPPoE tag length (%u)", tagLen);
-+ error("Invalid PPPoE tag length (%u)", tagLen);
- return NULL;
- }
- if (tagType == type) {
-@@ -143,6 +139,7 @@ findTag(PPPoEPacket *packet, UINT16_t ty
- return NULL;
- }
-
-+#ifdef unused
- /**********************************************************************
- *%FUNCTION: printErr
- *%ARGUMENTS:
-@@ -158,6 +155,7 @@ printErr(char const *str)
- fprintf(stderr, "pppoe: %s\n", str);
- syslog(LOG_ERR, "%s", str);
- }
-+#endif
-
-
- /**********************************************************************
-@@ -172,7 +170,7 @@ strDup(char const *str)
- {
- char *copy = malloc(strlen(str)+1);
- if (!copy) {
-- rp_fatal("strdup failed");
-+ fatal("strdup failed");
- }
- strcpy(copy, str);
- return copy;
-@@ -467,9 +465,10 @@ sendPADT(PPPoEConnection *conn, char con
- fprintf(conn->debugFile, "\n");
- fflush(conn->debugFile);
- }
-- syslog(LOG_INFO,"Sent PADT");
-+ info("Sent PADT");
- }
-
-+#ifdef unused
- /**********************************************************************
- *%FUNCTION: parseLogErrs
- *%ARGUMENTS:
-@@ -501,4 +500,5 @@ parseLogErrs(UINT16_t type, UINT16_t len
- break;
- }
- }
-+#endif
-
-diff -ruNp ppp-2.4.3.orig/pppd/plugins/rp-pppoe/discovery.c ppp-2.4.3/pppd/plugins/rp-pppoe/discovery.c
---- ppp-2.4.3.orig/pppd/plugins/rp-pppoe/discovery.c 2005-03-11 02:12:52.000000000 +0100
-+++ ppp-2.4.3/pppd/plugins/rp-pppoe/discovery.c 2005-03-10 12:24:19.000000000 +0100
-@@ -13,10 +13,6 @@ static char const RCSID[] =
-
- #include "pppoe.h"
-
--#ifdef HAVE_SYSLOG_H
--#include <syslog.h>
--#endif
--
- #include <string.h>
- #include <stdlib.h>
- #include <errno.h>
-@@ -167,24 +163,21 @@ parsePADOTags(UINT16_t type, UINT16_t le
- if (conn->printACNames) {
- printf("Got a Service-Name-Error tag: %.*s\n", (int) len, data);
- } else {
-- syslog(LOG_ERR, "PADO: Service-Name-Error: %.*s", (int) len, data);
-- exit(1);
-+ fatal("PADO: Service-Name-Error: %.*s", (int) len, data);
- }
- break;
- case TAG_AC_SYSTEM_ERROR:
- if (conn->printACNames) {
- printf("Got a System-Error tag: %.*s\n", (int) len, data);
- } else {
-- syslog(LOG_ERR, "PADO: System-Error: %.*s", (int) len, data);
-- exit(1);
-+ fatal("PADO: System-Error: %.*s", (int) len, data);
- }
- break;
- case TAG_GENERIC_ERROR:
- if (conn->printACNames) {
- printf("Got a Generic-Error tag: %.*s\n", (int) len, data);
- } else {
-- syslog(LOG_ERR, "PADO: Generic-Error: %.*s", (int) len, data);
-- exit(1);
-+ fatal("PADO: Generic-Error: %.*s", (int) len, data);
- }
- break;
- }
-@@ -209,20 +202,14 @@ parsePADSTags(UINT16_t type, UINT16_t le
- PPPoEConnection *conn = (PPPoEConnection *) extra;
- switch(type) {
- case TAG_SERVICE_NAME:
-- syslog(LOG_DEBUG, "PADS: Service-Name: '%.*s'", (int) len, data);
-+ dbglog("PADS: Service-Name: '%.*s'", (int) len, data);
- break;
- case TAG_SERVICE_NAME_ERROR:
-- syslog(LOG_ERR, "PADS: Service-Name-Error: %.*s", (int) len, data);
-- fprintf(stderr, "PADS: Service-Name-Error: %.*s\n", (int) len, data);
-- exit(1);
-+ fatal("PADS: Service-Name-Error: %.*s", (int) len, data);
- case TAG_AC_SYSTEM_ERROR:
-- syslog(LOG_ERR, "PADS: System-Error: %.*s", (int) len, data);
-- fprintf(stderr, "PADS: System-Error: %.*s\n", (int) len, data);
-- exit(1);
-+ fatal("PADS: System-Error: %.*s", (int) len, data);
- case TAG_GENERIC_ERROR:
-- syslog(LOG_ERR, "PADS: Generic-Error: %.*s", (int) len, data);
-- fprintf(stderr, "PADS: Generic-Error: %.*s\n", (int) len, data);
-- exit(1);
-+ fatal("PADS: Generic-Error: %.*s", (int) len, data);
- case TAG_RELAY_SESSION_ID:
- conn->relayId.type = htons(type);
- conn->relayId.length = htons(len);
-@@ -336,7 +323,7 @@ waitForPADO(PPPoEConnection *conn, int t
- if (r >= 0 || errno != EINTR) break;
- }
- if (r < 0) {
-- fatalSys("select (waitForPADO)");
-+ fatal("waitForPADO: select: %m");
- }
- if (r == 0) return; /* Timed out */
- }
-@@ -346,8 +333,7 @@ waitForPADO(PPPoEConnection *conn, int t
-
- /* Check length */
- if (ntohs(packet.length) + HDR_SIZE > len) {
-- syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
-- (unsigned int) ntohs(packet.length));
-+ error("Bogus PPPoE length field (%u)", ntohs(packet.length));
- continue;
- }
-
-@@ -366,16 +352,16 @@ waitForPADO(PPPoEConnection *conn, int t
-
- if (packet.code == CODE_PADO) {
- if (BROADCAST(packet.ethHdr.h_source)) {
-- printErr("Ignoring PADO packet from broadcast MAC address");
-+ error("Ignoring PADO packet from broadcast MAC address");
- continue;
- }
- parsePacket(&packet, parsePADOTags, &pc);
- if (!pc.seenACName) {
-- printErr("Ignoring PADO packet with no AC-Name tag");
-+ error("Ignoring PADO packet with no AC-Name tag");
- continue;
- }
- if (!pc.seenServiceName) {
-- printErr("Ignoring PADO packet with no Service-Name tag");
-+ error("Ignoring PADO packet with no Service-Name tag");
- continue;
- }
- conn->numPADOs++;
-@@ -513,7 +499,7 @@ waitForPADS(PPPoEConnection *conn, int t
- if (r >= 0 || errno != EINTR) break;
- }
- if (r < 0) {
-- fatalSys("select (waitForPADS)");
-+ fatal("waitForPADS: select: %m");
- }
- if (r == 0) return;
- }
-@@ -523,8 +509,7 @@ waitForPADS(PPPoEConnection *conn, int t
-
- /* Check length */
- if (ntohs(packet.length) + HDR_SIZE > len) {
-- syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
-- (unsigned int) ntohs(packet.length));
-+ error("Bogus PPPoE length field (%u)", ntohs(packet.length));
- continue;
- }
-
-@@ -556,11 +541,12 @@ waitForPADS(PPPoEConnection *conn, int t
- /* Don't bother with ntohs; we'll just end up converting it back... */
- conn->session = packet.session;
-
-- syslog(LOG_INFO, "PPP session is %d", (int) ntohs(conn->session));
-+ info("PPP session is %d", ntohs(conn->session));
-
- /* RFC 2516 says session id MUST NOT be zero or 0xFFFF */
- if (ntohs(conn->session) == 0 || ntohs(conn->session) == 0xFFFF) {
-- syslog(LOG_ERR, "Access concentrator used a session value of %x -- the AC is violating RFC 2516", (unsigned int) ntohs(conn->session));
-+ error("Access concentrator used a session value of 0x%x"
-+ " -- the AC is violating RFC 2516", ntohs(conn->session));
- }
- }
-
-@@ -620,7 +606,7 @@ discovery(PPPoEConnection *conn)
-
- /* If we're only printing access concentrator names, we're done */
- if (conn->printACNames) {
-- die(0);
-+ exit(0);
- }
-
- timeout = PADI_TIMEOUT;
-diff -ruNp ppp-2.4.3.orig/pppd/plugins/rp-pppoe/if.c ppp-2.4.3/pppd/plugins/rp-pppoe/if.c
---- ppp-2.4.3.orig/pppd/plugins/rp-pppoe/if.c 2001-12-14 03:55:20.000000000 +0100
-+++ ppp-2.4.3/pppd/plugins/rp-pppoe/if.c 2005-03-10 13:32:43.000000000 +0100
-@@ -40,10 +40,6 @@ static char const RCSID[] =
- #include <sys/ioctl.h>
- #endif
-
--#ifdef HAVE_SYSLOG_H
--#include <syslog.h>
--#endif
--
- #include <errno.h>
- #include <stdlib.h>
- #include <string.h>
-@@ -127,7 +123,7 @@ etherType(PPPoEPacket *packet)
- {
- UINT16_t type = (UINT16_t) ntohs(packet->ethHdr.h_proto);
- if (type != Eth_PPPOE_Discovery && type != Eth_PPPOE_Session) {
-- syslog(LOG_ERR, "Invalid ether type 0x%x", type);
-+ error("Invalid ethernet type 0x%x", type);
- }
- return type;
- }
-@@ -156,7 +152,7 @@ getHWaddr(int sock, char const *ifname,
- ifc.ifc_len = sizeof(inbuf);
- ifc.ifc_buf = inbuf;
- if (ioctl(sock, SIOCGIFCONF, &ifc) < 0) {
-- fatalSys("SIOCGIFCONF");
-+ fatal("SIOCGIFCONF: %m");
- }
- ifr = ifc.ifc_req;
- ifreq.ifr_name[0] = '\0';
-@@ -172,9 +168,7 @@ getHWaddr(int sock, char const *ifname,
- (sdl->sdl_alen == ETH_ALEN) &&
- !strncmp(ifname, ifr->ifr_name, sizeof(ifr->ifr_name))) {
- if (found) {
-- char buffer[256];
-- sprintf(buffer, "interface %.16s has more than one ethernet address", ifname);
-- rp_fatal(buffer);
-+ fatal("interface %s has more than one ethernet address", ifname);
- } else {
- found = 1;
- memcpy(hwaddr, LLADDR(sdl), ETH_ALEN);
-@@ -183,9 +177,7 @@ getHWaddr(int sock, char const *ifname,
- }
- }
- if (!found) {
-- char buffer[256];
-- sprintf(buffer, "interface %.16s has no ethernet address", ifname);
-- rp_fatal(buffer);
-+ fatal("interface %s has no ethernet address", ifname);
- }
- }
-
-@@ -252,7 +244,7 @@ initFilter(int fd, UINT16_t type, unsign
-
- /* Apply the filter */
- if (ioctl(fd, BIOCSETF, &bpfProgram) < 0) {
-- fatalSys("ioctl(BIOCSETF)");
-+ fatal("ioctl(BIOCSETF): %m");
- }
- }
- }
-@@ -298,42 +290,36 @@ openInterface(char const *ifname, UINT16
- if (fd < 0) {
- switch (errno) {
- case EACCES: /* permission denied */
-- {
-- char buffer[256];
-- sprintf(buffer, "Cannot open %.32s -- pppoe must be run as root.", bpfName);
-- rp_fatal(buffer);
-- }
-+ fatal("Cannot open %s -- pppoe must be run as root.", bpfName);
- break;
- case EBUSY:
- case ENOENT: /* no such file */
- if (i == 0) {
-- rp_fatal("No /dev/bpf* devices (check your kernel configuration for BPF support)");
-+ fatal("No /dev/bpf* devices (check your kernel configuration for BPF support)");
- } else {
-- rp_fatal("All /dev/bpf* devices are in use");
-+ fatal("All /dev/bpf* devices are in use");
- }
- break;
- }
-- fatalSys(bpfName);
-+ fatal("%s: %m", bpfName);
- }
-
- if ((sock = socket(AF_LOCAL, SOCK_DGRAM, 0)) < 0) {
-- fatalSys("socket");
-+ fatal("socket: %m");
- }
-
- /* Check that the interface is up */
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(sock, SIOCGIFFLAGS, &ifr) < 0) {
-- fatalSys("ioctl(SIOCGIFFLAGS)");
-+ fatal("ioctl(SIOCGIFFLAGS): %m");
- }
- if ((ifr.ifr_flags & IFF_UP) == 0) {
-- char buffer[256];
-- sprintf(buffer, "Interface %.16s is not up\n", ifname);
-- rp_fatal(buffer);
-+ fatal("Interface %s is not up", ifname);
- }
-
- /* Fill in hardware address and initialize the packet filter rules */
- if (hwaddr == NULL) {
-- rp_fatal("openInterface: no hwaddr arg.");
-+ fatal("openInterface: no hwaddr arg.");
- }
- getHWaddr(sock, ifname, hwaddr);
- initFilter(fd, type, hwaddr);
-@@ -342,58 +328,52 @@ openInterface(char const *ifname, UINT16
- #if !defined(__OpenBSD__)
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(sock, SIOCGIFMTU, &ifr) < 0) {
-- fatalSys("ioctl(SIOCGIFMTU)");
-+ fatal("ioctl(SIOCGIFMTU): %m");
- }
- if (ifr.ifr_mtu < ETH_DATA_LEN) {
-- char buffer[256];
-- sprintf(buffer, "Interface %.16s has MTU of %d -- should be %d. You may have serious connection problems.",
-+ error("Interface %s has MTU of %d -- should be %d."
-+ " You may have serious connection problems.",
- ifname, ifr.ifr_mtu, ETH_DATA_LEN);
-- printErr(buffer);
- }
- #endif
-
- /* done with the socket */
- if (close(sock) < 0) {
-- fatalSys("close");
-+ fatal("close: %m");
- }
-
- /* Check the BPF version number */
- if (ioctl(fd, BIOCVERSION, &bpf_ver) < 0) {
-- fatalSys("ioctl(BIOCVERSION)");
-+ fatal("ioctl(BIOCVERSION): %m");
- }
- if ((bpf_ver.bv_major != BPF_MAJOR_VERSION) ||
- (bpf_ver.bv_minor < BPF_MINOR_VERSION)) {
-- char buffer[256];
-- sprintf(buffer, "Unsupported BPF version: %d.%d (kernel: %d.%d)",
-+ fatal("Unsupported BPF version: %d.%d (kernel: %d.%d)",
- BPF_MAJOR_VERSION, BPF_MINOR_VERSION,
- bpf_ver.bv_major, bpf_ver.bv_minor);
-- rp_fatal(buffer);
- }
-
- /* allocate a receive packet buffer */
- if (ioctl(fd, BIOCGBLEN, &bpfLength) < 0) {
-- fatalSys("ioctl(BIOCGBLEN)");
-+ fatal("ioctl(BIOCGBLEN): %m");
- }
- if (!(bpfBuffer = (unsigned char *) malloc(bpfLength))) {
-- rp_fatal("malloc");
-+ fatal("malloc");
- }
-
- /* reads should return as soon as there is a packet available */
- optval = 1;
- if (ioctl(fd, BIOCIMMEDIATE, &optval) < 0) {
-- fatalSys("ioctl(BIOCIMMEDIATE)");
-+ fatal("ioctl(BIOCIMMEDIATE): %m");
- }
-
- /* Bind the interface to the filter */
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(fd, BIOCSETIF, &ifr) < 0) {
-- char buffer[256];
-- sprintf(buffer, "ioctl(BIOCSETIF) can't select interface %.16s",
-- ifname);
-- rp_fatal(buffer);
-+ fatal("ioctl(BIOCSETIF) can't select interface %s: %m", ifname);
- }
-
-- syslog(LOG_INFO, "Interface=%.16s HWaddr=%02X:%02X:%02X:%02X:%02X:%02X Device=%.32s Buffer size=%d",
-+ info("Interface=%s HWaddr=%02X:%02X:%02X:%02X:%02X:%02X Device=%s Buffer size=%d",
- ifname,
- hwaddr[0], hwaddr[1], hwaddr[2],
- hwaddr[3], hwaddr[4], hwaddr[5],
-@@ -442,48 +422,41 @@ openInterface(char const *ifname, UINT16
- if ((fd = socket(domain, stype, htons(type))) < 0) {
- /* Give a more helpful message for the common error case */
- if (errno == EPERM) {
-- rp_fatal("Cannot create raw socket -- pppoe must be run as root.");
-+ fatal("Cannot create raw socket -- pppoe must be run as root.");
- }
-- fatalSys("socket");
-+ fatal("cannot create the raw socket: %m");
- }
-
- if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &optval, sizeof(optval)) < 0) {
-- fatalSys("setsockopt");
-+ fatal("setsockopt(SOL_SOCKET, SO_BROADCAST): %m");
- }
-
- /* Fill in hardware address */
- if (hwaddr) {
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
-- if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0) {
-- fatalSys("ioctl(SIOCGIFHWADDR)");
-- }
-+ if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0)
-+ fatal("ioctl(SIOCGIFHWADDR): %m");
- memcpy(hwaddr, ifr.ifr_hwaddr.sa_data, ETH_ALEN);
- #ifdef ARPHRD_ETHER
- if (ifr.ifr_hwaddr.sa_family != ARPHRD_ETHER) {
-- char buffer[256];
-- sprintf(buffer, "Interface %.16s is not Ethernet", ifname);
-- rp_fatal(buffer);
-+ fatal("Interface %s is not Ethernet", ifname);
- }
- #endif
- if (NOT_UNICAST(hwaddr)) {
-- char buffer[256];
-- sprintf(buffer,
-- "Interface %.16s has broadcast/multicast MAC address??",
-+ fatal("Interface %s has broadcast/multicast MAC address",
- ifname);
-- rp_fatal(buffer);
- }
- }
-
- /* Sanity check on MTU */
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(fd, SIOCGIFMTU, &ifr) < 0) {
-- fatalSys("ioctl(SIOCGIFMTU)");
-+ fatal("ioctl(SIOCGIFMTU): %m");
- }
- if (ifr.ifr_mtu < ETH_DATA_LEN) {
-- char buffer[256];
-- sprintf(buffer, "Interface %.16s has MTU of %d -- should be %d. You may have serious connection problems.",
-+ error("Interface %s has MTU of %d -- should be %d."
-+ " You may have serious connection problems.",
- ifname, ifr.ifr_mtu, ETH_DATA_LEN);
-- printErr(buffer);
- }
-
- #ifdef HAVE_STRUCT_SOCKADDR_LL
-@@ -493,7 +466,7 @@ openInterface(char const *ifname, UINT16
-
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(fd, SIOCGIFINDEX, &ifr) < 0) {
-- fatalSys("ioctl(SIOCFIGINDEX): Could not get interface index");
-+ fatal("ioctl(SIOCFIGINDEX): Could not get interface index: %m");
- }
- sa.sll_ifindex = ifr.ifr_ifindex;
-
-@@ -503,7 +476,7 @@ openInterface(char const *ifname, UINT16
-
- /* We're only interested in packets on specified interface */
- if (bind(fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
-- fatalSys("bind");
-+ fatal("bind: %m");
- }
-
- return fd;
-@@ -527,13 +500,11 @@ sendPacket(PPPoEConnection *conn, int so
- {
- #if defined(USE_BPF)
- if (write(sock, pkt, size) < 0) {
-- sysErr("write (sendPacket)");
-- return -1;
-+ fatal("sendPacket: write: %m");
- }
- #elif defined(HAVE_STRUCT_SOCKADDR_LL)
- if (send(sock, pkt, size, 0) < 0) {
-- sysErr("send (sendPacket)");
-- return -1;
-+ fatal("sendPacket: send: %m");
- }
- #else
- #ifdef USE_DLPI
-@@ -577,12 +548,11 @@ sendPacket(PPPoEConnection *conn, int so
- struct sockaddr sa;
-
- if (!conn) {
-- rp_fatal("relay and server not supported on Linux 2.0 kernels");
-+ fatal("relay and server not supported on Linux 2.0 kernels");
- }
- strcpy(sa.sa_data, conn->ifName);
- if (sendto(sock, pkt, size, 0, &sa, sizeof(sa)) < 0) {
-- sysErr("sendto (sendPacket)");
-- return -1;
-+ fatal("sendPacket: sendto: %m");
- }
- #endif
- #endif
-@@ -632,26 +602,24 @@ receivePacket(int sock, PPPoEPacket *pkt
- if (bpfSize <= 0) {
- bpfOffset = 0;
- if ((bpfSize = read(sock, bpfBuffer, bpfLength)) < 0) {
-- sysErr("read (receivePacket)");
-- return -1;
-+ fatal("receivePacket: read: %m");
- }
- }
- if (bpfSize < sizeof(hdr)) {
-- syslog(LOG_ERR, "Truncated bpf packet header: len=%d", bpfSize);
-+ error("Truncated bpf packet header: len=%d", bpfSize);
- clearPacketHeader(pkt); /* resets bpfSize and bpfOffset */
- return 0;
- }
- memcpy(&hdr, bpfBuffer + bpfOffset, sizeof(hdr));
- if (hdr.bh_caplen != hdr.bh_datalen) {
-- syslog(LOG_ERR, "Truncated bpf packet: caplen=%d, datalen=%d",
-+ error("Truncated bpf packet: caplen=%d, datalen=%d",
- hdr.bh_caplen, hdr.bh_datalen);
- clearPacketHeader(pkt); /* resets bpfSize and bpfOffset */
- return 0;
- }
- seglen = hdr.bh_hdrlen + hdr.bh_caplen;
- if (seglen > bpfSize) {
-- syslog(LOG_ERR, "Truncated bpf packet: seglen=%d, bpfSize=%d",
-- seglen, bpfSize);
-+ error("Truncated bpf packet: seglen=%d, bpfSize=%d", seglen, bpfSize);
- clearPacketHeader(pkt); /* resets bpfSize and bpfOffset */
- return 0;
- }
-@@ -676,16 +644,14 @@ receivePacket(int sock, PPPoEPacket *pkt
- data.len = 0;
-
- if ((retval = getmsg(sock, NULL, &data, &flags)) < 0) {
-- sysErr("read (receivePacket)");
-- return -1;
-+ fatal("receivePacket: getmsg: %m");
- }
-
- *size = data.len;
-
- #else
- if ((*size = recv(sock, pkt, sizeof(PPPoEPacket), 0)) < 0) {
-- sysErr("recv (receivePacket)");
-- return -1;
-+ fatal("receivePacket: recv: %m");
- }
- #endif
- #endif
-@@ -716,7 +682,7 @@ openInterface(char const *ifname, UINT16
- int ppa;
-
- if(strlen(ifname) > PATH_MAX) {
-- rp_fatal("socket: string to long");
-+ fatal("openInterface: interface name too long");
- }
-
- ppa = atoi(&ifname[strlen(ifname)-1]);
-@@ -729,9 +695,9 @@ openInterface(char const *ifname, UINT16
- if (( fd = open(base_dev, O_RDWR)) < 0) {
- /* Give a more helpful message for the common error case */
- if (errno == EPERM) {
-- rp_fatal("Cannot create raw socket -- pppoe must be run as root.");
-+ fatal("Cannot create raw socket -- pppoe must be run as root.");
- }
-- fatalSys("socket");
-+ fatal("open(%s): %m", base_dev);
- }
-
- /* rearranged order of DLPI code - delphys 20010803 */
-@@ -747,17 +713,18 @@ openInterface(char const *ifname, UINT16
- dl_abssaplen = ABS(dlp->info_ack.dl_sap_length);
- dl_saplen = dlp->info_ack.dl_sap_length;
- if (ETHERADDRL != (dlp->info_ack.dl_addr_length - dl_abssaplen))
-- fatalSys("invalid destination physical address length");
-+ fatal("invalid destination physical address length");
- dl_addrlen = dl_abssaplen + ETHERADDRL;
-
- /* ethernet address retrieved as part of DL_INFO_ACK - delphys 20010803 */
- memcpy(hwaddr, (u_char*)((char*)(dlp) + (int)(dlp->info_ack.dl_addr_offset)), ETHERADDRL);
-
- if ( strioctl(fd, DLIOCRAW, -1, 0, NULL) < 0 ) {
-- fatalSys("DLIOCRAW");
-+ fatal("DLIOCRAW: %m");
- }
-
-- if (ioctl(fd, I_FLUSH, FLUSHR) < 0) fatalSys("I_FLUSH");
-+ if (ioctl(fd, I_FLUSH, FLUSHR) < 0)
-+ fatal("I_FLUSH: %m");
-
- return fd;
- }
-@@ -780,7 +747,7 @@ void dlpromisconreq(int fd, u_long level
- flags = 0;
-
- if (putmsg(fd, &ctl, (struct strbuf*) NULL, flags) < 0)
-- fatalSys("dlpromiscon: putmsg");
-+ fatal("dlpromiscon: putmsg: %m");
-
- }
-
-@@ -799,7 +766,7 @@ void dlinforeq(int fd)
- flags = RS_HIPRI;
-
- if (putmsg(fd, &ctl, (struct strbuf*) NULL, flags) < 0)
-- fatalSys("dlinforeq: putmsg");
-+ fatal("dlinforeq: putmsg: %m");
- }
-
- void dlunitdatareq(int fd, u_char *addrp, int addrlen, u_long minpri, u_long maxpri, u_char *datap, int datalen)
-@@ -827,7 +794,7 @@ void dlunitdatareq(int fd, u_char *addrp
- data.buf = (char *) datap;
-
- if (putmsg(fd, &ctl, &data, 0) < 0)
-- fatalSys("dlunitdatareq: putmsg");
-+ fatal("dlunitdatareq: putmsg: %m");
- }
-
- void dlinfoack(int fd, char *bufp)
-@@ -847,18 +814,14 @@ void dlinfoack(int fd, char *bufp)
- expecting(DL_INFO_ACK, dlp);
-
- if (ctl.len < sizeof (dl_info_ack_t)) {
-- char buffer[256];
-- sprintf(buffer, "dlinfoack: response ctl.len too short: %d", ctl.len);
-- rp_fatal(buffer);
-+ fatal("dlinfoack: response ctl.len too short: %d", ctl.len);
- }
-
- if (flags != RS_HIPRI)
-- rp_fatal("dlinfoack: DL_INFO_ACK was not M_PCPROTO");
-+ fatal("dlinfoack: DL_INFO_ACK was not M_PCPROTO");
-
- if (ctl.len < sizeof (dl_info_ack_t)) {
-- char buffer[256];
-- sprintf(buffer, "dlinfoack: short response ctl.len: %d", ctl.len);
-- rp_fatal(buffer);
-+ fatal("dlinfoack: short response ctl.len: %d", ctl.len);
- }
- }
-
-@@ -882,7 +845,7 @@ void dlbindreq(int fd, u_long sap, u_lon
- flags = 0;
-
- if (putmsg(fd, &ctl, (struct strbuf*) NULL, flags) < 0)
-- fatalSys("dlbindreq: putmsg");
-+ fatal("dlbindreq: putmsg: %m");
- }
-
- void dlattachreq(int fd, u_long ppa)
-@@ -901,7 +864,7 @@ void dlattachreq(int fd, u_long ppa)
- flags = 0;
-
- if (putmsg(fd, &ctl, (struct strbuf*) NULL, flags) < 0)
-- fatalSys("dlattachreq: putmsg");
-+ fatal("dlattachreq: putmsg: %m");
- }
-
- void dlokack(int fd, char *bufp)
-@@ -921,18 +884,14 @@ void dlokack(int fd, char *bufp)
- expecting(DL_OK_ACK, dlp);
-
- if (ctl.len < sizeof (dl_ok_ack_t)) {
-- char buffer[256];
-- sprintf(buffer, "dlokack: response ctl.len too short: %d", ctl.len);
-- rp_fatal(buffer);
-+ fatal("dlokack: response ctl.len too short: %d", ctl.len);
- }
-
- if (flags != RS_HIPRI)
-- rp_fatal("dlokack: DL_OK_ACK was not M_PCPROTO");
-+ fatal("dlokack: DL_OK_ACK was not M_PCPROTO");
-
- if (ctl.len < sizeof (dl_ok_ack_t)) {
-- char buffer[256];
-- sprintf(buffer, "dlokack: short response ctl.len: %d", ctl.len);
-- rp_fatal(buffer);
-+ fatal("dlokack: short response ctl.len: %d", ctl.len);
- }
- }
-
-@@ -953,12 +912,10 @@ void dlbindack(int fd, char *bufp)
- expecting(DL_BIND_ACK, dlp);
-
- if (flags != RS_HIPRI)
-- rp_fatal("dlbindack: DL_OK_ACK was not M_PCPROTO");
-+ fatal("dlbindack: DL_OK_ACK was not M_PCPROTO");
-
- if (ctl.len < sizeof (dl_bind_ack_t)) {
-- char buffer[256];
-- sprintf(buffer, "dlbindack: short response ctl.len: %d", ctl.len);
-- rp_fatal(buffer);
-+ fatal("dlbindack: short response ctl.len: %d", ctl.len);
- }
- }
-
-@@ -989,8 +946,7 @@ void strgetmsg(int fd, struct strbuf *ct
- */
- (void) signal(SIGALRM, sigalrm);
- if (alarm(MAXWAIT) < 0) {
-- (void) sprintf(errmsg, "%s: alarm", caller);
-- fatalSys(errmsg);
-+ fatal("%s: alarm", caller);
- }
-
- /*
-@@ -998,61 +954,48 @@ void strgetmsg(int fd, struct strbuf *ct
- */
- *flagsp = 0;
- if ((rc = getmsg(fd, ctlp, datap, flagsp)) < 0) {
-- (void) sprintf(errmsg, "%s: getmsg", caller);
-- fatalSys(errmsg);
-+ fatal(errmsg, "%s: getmsg: %m", caller);
- }
-
- /*
- * Stop timer.
- */
- if (alarm(0) < 0) {
-- (void) sprintf(errmsg, "%s: alarm", caller);
-- fatalSys(errmsg);
-+ fatal("%s: alarm", caller);
- }
-
- /*
- * Check for MOREDATA and/or MORECTL.
- */
- if ((rc & (MORECTL | MOREDATA)) == (MORECTL | MOREDATA)) {
-- char buffer[256];
-- sprintf(buffer, "%s: MORECTL|MOREDATA", caller);
-- rp_fatal(buffer);
-+ fatal("%s: MORECTL|MOREDATA", caller);
- }
-
- if (rc & MORECTL) {
-- char buffer[256];
-- sprintf(buffer, "%s: MORECTL", caller);
-- rp_fatal(buffer);
-+ fatal("%s: MORECTL", caller);
- }
-
- if (rc & MOREDATA) {
-- char buffer[256];
-- sprintf(buffer, "%s: MOREDATA", caller);
-- rp_fatal(buffer);
-+ fatal("%s: MOREDATA", caller);
- }
-
- /*
- * Check for at least sizeof (long) control data portion.
- */
- if (ctlp->len < sizeof (long)) {
-- char buffer[256];
-- sprintf(buffer, "getmsg: control portion length < sizeof (long): %d", ctlp->len);
-- rp_fatal(buffer);
-+ fatal("getmsg: control portion length < sizeof (long): %d", ctlp->len);
- }
- }
-
- void sigalrm(int sig)
- {
-- (void) rp_fatal("sigalrm: TIMEOUT");
-+ fatal("sigalrm: TIMEOUT");
- }
-
- void expecting(int prim, union DL_primitives *dlp)
- {
- if (dlp->dl_primitive != (u_long)prim) {
-- char buffer[256];
-- sprintf(buffer, "expected %s got %s", dlprim(prim), dlprim(dlp->dl_primitive));
-- rp_fatal(buffer);
-- exit(1);
-+ fatal("expected %s got %s", dlprim(prim), dlprim(dlp->dl_primitive));
- }
- }
-
-diff -ruNp ppp-2.4.3.orig/pppd/plugins/rp-pppoe/Makefile.linux ppp-2.4.3/pppd/plugins/rp-pppoe/Makefile.linux
---- ppp-2.4.3.orig/pppd/plugins/rp-pppoe/Makefile.linux 2004-11-14 08:58:37.000000000 +0100
-+++ ppp-2.4.3/pppd/plugins/rp-pppoe/Makefile.linux 2005-03-11 01:48:27.000000000 +0100
-@@ -28,8 +28,8 @@ COPTS=-O2 -g
- CFLAGS=$(COPTS) -I../../../include/linux
- all: rp-pppoe.so pppoe-discovery
-
--pppoe-discovery: libplugin.a pppoe-discovery.o
-- $(CC) -o pppoe-discovery pppoe-discovery.o libplugin.a
-+pppoe-discovery: pppoe-discovery.o utils.o libplugin.a
-+ $(CC) -o pppoe-discovery pppoe-discovery.o utils.o libplugin.a
-
- pppoe-discovery.o: pppoe-discovery.c
- $(CC) $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o pppoe-discovery.o pppoe-discovery.c
-diff -ruNp ppp-2.4.3.orig/pppd/plugins/rp-pppoe/plugin.c ppp-2.4.3/pppd/plugins/rp-pppoe/plugin.c
---- ppp-2.4.3.orig/pppd/plugins/rp-pppoe/plugin.c 2004-11-04 11:07:37.000000000 +0100
-+++ ppp-2.4.3/pppd/plugins/rp-pppoe/plugin.c 2005-03-11 02:12:39.000000000 +0100
-@@ -35,7 +35,6 @@ static char const RCSID[] =
- #include "pppd/pathnames.h"
-
- #include <linux/types.h>
--#include <syslog.h>
- #include <sys/ioctl.h>
- #include <sys/types.h>
- #include <sys/socket.h>
-@@ -173,10 +172,8 @@ PPPOEConnectDevice(void)
- (unsigned) conn->peerEth[5]);
-
- if (connect(conn->sessionSocket, (struct sockaddr *) &sp,
-- sizeof(struct sockaddr_pppox)) < 0) {
-+ sizeof(struct sockaddr_pppox)) < 0)
- fatal("Failed to connect PPPoE socket: %d %m", errno);
-- return -1;
-- }
-
- return conn->sessionSocket;
- }
-@@ -365,11 +362,9 @@ plugin_init(void)
- }
-
- add_options(Options);
--
-- info("RP-PPPoE plugin version %s compiled against pppd %s",
-- RP_VERSION, VERSION);
- }
-
-+#ifdef unused
- /**********************************************************************
- *%FUNCTION: fatalSys
- *%ARGUMENTS:
-@@ -423,6 +418,7 @@ sysErr(char const *str)
- {
- rp_fatal(str);
- }
-+#endif
-
-
- struct channel pppoe_channel = {
-diff -ruNp ppp-2.4.3.orig/pppd/plugins/rp-pppoe/pppoe-discovery.c ppp-2.4.3/pppd/plugins/rp-pppoe/pppoe-discovery.c
---- ppp-2.4.3.orig/pppd/plugins/rp-pppoe/pppoe-discovery.c 2004-11-13 13:12:05.000000000 +0100
-+++ ppp-2.4.3/pppd/plugins/rp-pppoe/pppoe-discovery.c 2005-03-11 02:06:13.000000000 +0100
-@@ -17,14 +17,8 @@
-
- #include "pppoe.h"
-
--char *xstrdup(const char *s);
- void usage(void);
-
--void die(int status)
--{
-- exit(status);
--}
--
- int main(int argc, char *argv[])
- {
- int opt;
-@@ -32,17 +26,17 @@ int main(int argc, char *argv[])
-
- conn = malloc(sizeof(PPPoEConnection));
- if (!conn)
-- fatalSys("malloc");
-+ fatal("malloc");
-
- memset(conn, 0, sizeof(PPPoEConnection));
-
- while ((opt = getopt(argc, argv, "I:D:VUAS:C:h")) > 0) {
- switch(opt) {
- case 'S':
-- conn->serviceName = xstrdup(optarg);
-+ conn->serviceName = strDup(optarg);
- break;
- case 'C':
-- conn->acName = xstrdup(optarg);
-+ conn->acName = strDup(optarg);
- break;
- case 'U':
- conn->useHostUniq = 1;
-@@ -57,7 +51,7 @@ int main(int argc, char *argv[])
- fprintf(conn->debugFile, "pppoe-discovery %s\n", VERSION);
- break;
- case 'I':
-- conn->ifName = xstrdup(optarg);
-+ conn->ifName = strDup(optarg);
- break;
- case 'A':
- /* this is the default */
-@@ -74,7 +68,7 @@ int main(int argc, char *argv[])
-
- /* default interface name */
- if (!conn->ifName)
-- conn->ifName = strdup("eth0");
-+ conn->ifName = strDup("eth0");
-
- conn->discoverySocket = -1;
- conn->sessionSocket = -1;
-@@ -84,39 +78,6 @@ int main(int argc, char *argv[])
- exit(0);
- }
-
--void rp_fatal(char const *str)
--{
-- char buf[1024];
--
-- printErr(str);
-- sprintf(buf, "pppoe-discovery: %.256s", str);
-- exit(1);
--}
--
--void fatalSys(char const *str)
--{
-- char buf[1024];
-- int i = errno;
--
-- sprintf(buf, "%.256s: %.256s", str, strerror(i));
-- printErr(buf);
-- sprintf(buf, "pppoe-discovery: %.256s: %.256s", str, strerror(i));
-- exit(1);
--}
--
--void sysErr(char const *str)
--{
-- rp_fatal(str);
--}
--
--char *xstrdup(const char *s)
--{
-- register char *ret = strdup(s);
-- if (!ret)
-- sysErr("strdup");
-- return ret;
--}
--
- void usage(void)
- {
- fprintf(stderr, "Usage: pppoe-discovery [options]\n");
-diff -ruNp ppp-2.4.3.orig/pppd/plugins/rp-pppoe/pppoe.h ppp-2.4.3/pppd/plugins/rp-pppoe/pppoe.h
---- ppp-2.4.3.orig/pppd/plugins/rp-pppoe/pppoe.h 2004-11-04 11:07:37.000000000 +0100
-+++ ppp-2.4.3/pppd/plugins/rp-pppoe/pppoe.h 2005-03-11 02:08:00.000000000 +0100
-@@ -307,12 +307,18 @@ void discovery(PPPoEConnection *conn);
- unsigned char *findTag(PPPoEPacket *packet, UINT16_t tagType,
- PPPoETag *tag);
-
-+void dbglog(char *, ...); /* log a debug message */
-+void info(char *, ...); /* log an informational message */
-+void warn(char *, ...); /* log a warning message */
-+void error(char *, ...); /* log an error message */
-+void fatal(char *, ...); /* log an error message and die(1) */
-+
- #define SET_STRING(var, val) do { if (var) free(var); var = strDup(val); } while(0);
-
- #define CHECK_ROOM(cursor, start, len) \
- do {\
- if (((cursor)-(start))+(len) > MAX_PPPOE_PAYLOAD) { \
-- syslog(LOG_ERR, "Would create too-long packet"); \
-+ error("Would create too-long packet"); \
- return; \
- } \
- } while(0)
-diff -ruNp ppp-2.4.3.orig/pppd/plugins/rp-pppoe/utils.c ppp-2.4.3/pppd/plugins/rp-pppoe/utils.c
---- ppp-2.4.3.orig/pppd/plugins/rp-pppoe/utils.c 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-2.4.3/pppd/plugins/rp-pppoe/utils.c 2005-03-11 02:07:57.000000000 +0100
-@@ -0,0 +1,62 @@
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <stdarg.h>
-+#include <syslog.h>
-+
-+void dbglog(const char *fmt, ...)
-+{
-+ va_list ap;
-+
-+ va_start(ap, fmt);
-+ vsyslog(LOG_DEBUG, fmt, ap);
-+ vfprintf(stderr, fmt, ap);
-+ fputs("\n", stderr);
-+ va_end(ap);
-+}
-+
-+void info(const char *fmt, ...)
-+{
-+ va_list ap;
-+
-+ va_start(ap, fmt);
-+ vsyslog(LOG_INFO, fmt, ap);
-+ vfprintf(stderr, fmt, ap);
-+ fputs("\n", stderr);
-+ va_end(ap);
-+}
-+
-+void warn(const char *fmt, ...)
-+{
-+ va_list ap;
-+
-+ va_start(ap, fmt);
-+ vsyslog(LOG_WARNING, fmt, ap);
-+ vfprintf(stderr, fmt, ap);
-+ fputs("\n", stderr);
-+ va_end(ap);
-+}
-+
-+void error(const char *fmt, ...)
-+{
-+ va_list ap;
-+
-+ va_start(ap, fmt);
-+ vsyslog(LOG_ERR, fmt, ap);
-+ vfprintf(stderr, fmt, ap);
-+ fputs("\n", stderr);
-+ va_end(ap);
-+}
-+
-+void fatal(const char *fmt, ...)
-+{
-+ va_list ap;
-+
-+ va_start(ap, fmt);
-+ vsyslog(LOG_ERR, fmt, ap);
-+ vfprintf(stderr, fmt, ap);
-+ fputs("\n", stderr);
-+ va_end(ap);
-+ exit(1);
-+}
-+
diff --git a/openwrt/package/ppp/patches/104-debian_fix_linkpidfile.patch b/openwrt/package/ppp/patches/104-debian_fix_linkpidfile.patch
deleted file mode 100644
index 9e32adcae1..0000000000
--- a/openwrt/package/ppp/patches/104-debian_fix_linkpidfile.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Subject: Bug#284382: ppp: linkpidfile is not created upon detachment
-From: <herbert@gondor.apana.org.au>
-
-Package: ppp
-Version: 2.4.2+20040428-2
-Severity: wishlist
-
-When pppd detaches from the parent normally, that is, without nodetach
-or updetach set, the linkpidfile is not created even when linkname is
-set.
-
-This is because the create_linkpidfile call in detach() is only made
-if the linkpidfile is filled in. However, linkpidfile is never filled
-in until create_linkpidfile has been called.
-
-IMHO the call should be made uncondtionally in detach() since
-create_linkpidfile does its own check on linkname anyway.
-
-Please note that the version of pppd in woody always wrote the
-linkpidfile after detaching. It did so in main() however. That
-call has now been removed which is why I'm seeing this problem.
-
-[...]
-
---
-Index: pppd/main.c
-===================================================================
-RCS file: /var/cvs/snwb/packages/ppp/pppd/main.c,v
-retrieving revision 1.11
-diff -u -r1.11 main.c
---- ppp/pppd/main.c 29 Nov 2004 22:49:23 -0000 1.11
-+++ ppp/pppd/main.c 5 Dec 2004 23:59:58 -0000
-@@ -819,8 +819,7 @@
- /* update pid files if they have been written already */
- if (pidfilename[0])
- create_pidfile(pid);
-- if (linkpidfile[0])
-- create_linkpidfile(pid);
-+ create_linkpidfile(pid);
- exit(0); /* parent dies */
- }
- setsid();
-
diff --git a/openwrt/package/ppp/patches/105-debian_pppoatm_cleanup.patch b/openwrt/package/ppp/patches/105-debian_pppoatm_cleanup.patch
deleted file mode 100644
index 2437a12003..0000000000
--- a/openwrt/package/ppp/patches/105-debian_pppoatm_cleanup.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-diff -ruNp ppp-2.4.3.orig/pppd/plugins/pppoatm/pppoatm.c ppp-2.4.3/pppd/plugins/pppoatm/pppoatm.c
---- ppp-2.4.3.orig/pppd/plugins/pppoatm/pppoatm.c 2005-03-22 14:44:18.000000000 +0100
-+++ ppp-2.4.3/pppd/plugins/pppoatm/pppoatm.c 2005-03-22 14:44:02.000000000 +0100
-@@ -70,18 +70,20 @@ static int setdevname_pppoatm(const char
- {
- struct sockaddr_atmpvc addr;
- extern struct stat devstat;
-+
- if (device_got_set)
- return 0;
-- //info("PPPoATM setdevname_pppoatm: '%s'", cp);
-+
- memset(&addr, 0, sizeof addr);
- if (text2atm(cp, (struct sockaddr *) &addr, sizeof(addr),
- T2A_PVC | T2A_NAME) < 0) {
-- if(doit)
-- info("atm does not recognize: %s", cp);
-+ if (doit)
-+ info("cannot parse the ATM address: %s", cp);
- return 0;
-- }
-- if (!doit) return 1;
-- //if (!dev_set_ok()) return -1;
-+ }
-+ if (!doit)
-+ return 1;
-+
- memcpy(&pvcaddr, &addr, sizeof pvcaddr);
- strlcpy(devnam, cp, sizeof devnam);
- devstat.st_mode = S_IFSOCK;
-@@ -93,7 +95,6 @@ static int setdevname_pppoatm(const char
- lcp_allowoptions[0].neg_asyncmap = 0;
- lcp_wantoptions[0].neg_pcompression = 0;
- }
-- info("PPPoATM setdevname_pppoatm - SUCCESS:%s", cp);
- device_got_set = 1;
- return 1;
- }
-@@ -108,6 +109,7 @@ static void no_device_given_pppoatm(void
- static void set_line_discipline_pppoatm(int fd)
- {
- struct atm_backend_ppp be;
-+
- be.backend_num = ATM_BACKEND_PPP;
- if (!llc_encaps)
- be.encaps = PPPOATM_ENCAPS_VC;
-@@ -115,6 +117,7 @@ static void set_line_discipline_pppoatm(
- be.encaps = PPPOATM_ENCAPS_LLC;
- else
- be.encaps = PPPOATM_ENCAPS_AUTODETECT;
-+
- if (ioctl(fd, ATM_SETBACKEND, &be) < 0)
- fatal("ioctl(ATM_SETBACKEND): %m");
- }
-@@ -179,16 +182,19 @@ static void send_config_pppoa(int mtu,
- {
- int sock;
- struct ifreq ifr;
-+
- if (mtu > pppoatm_max_mtu)
- error("Couldn't increase MTU to %d", mtu);
-+
- sock = socket(AF_INET, SOCK_DGRAM, 0);
- if (sock < 0)
- fatal("Couldn't create IP socket: %m");
-+
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- ifr.ifr_mtu = mtu;
- if (ioctl(sock, SIOCSIFMTU, (caddr_t) &ifr) < 0)
- fatal("ioctl(SIOCSIFMTU): %m");
-- (void) close (sock);
-+ close(sock);
- }
-
- static void recv_config_pppoa(int mru,
-@@ -202,7 +208,7 @@ static void recv_config_pppoa(int mru,
-
- void plugin_init(void)
- {
--#if defined(__linux__)
-+#ifdef linux
- extern int new_style_driver; /* From sys-linux.c */
- if (!ppp_available() && !new_style_driver)
- fatal("Kernel doesn't support ppp_generic - "
-@@ -210,9 +216,9 @@ void plugin_init(void)
- #else
- fatal("No PPPoATM support on this OS");
- #endif
-- info("PPPoATM plugin_init");
- add_options(pppoa_options);
- }
-+
- struct channel pppoa_channel = {
- options: pppoa_options,
- process_extra_options: NULL,
diff --git a/openwrt/package/ppp/patches/106-debian_pppoatm_fix_mtu.patch b/openwrt/package/ppp/patches/106-debian_pppoatm_fix_mtu.patch
deleted file mode 100644
index ef28b5cf2b..0000000000
--- a/openwrt/package/ppp/patches/106-debian_pppoatm_fix_mtu.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff -ruNp ppp-2.4.3.orig/pppd/plugins/pppoatm/pppoatm.c ppp-2.4.3/pppd/plugins/pppoatm/pppoatm.c
---- ppp-2.4.3.orig/pppd/plugins/pppoatm/pppoatm.c 2005-05-04 02:00:28.000000000 +0200
-+++ ppp-2.4.3/pppd/plugins/pppoatm/pppoatm.c 2005-05-04 01:59:11.000000000 +0200
-@@ -183,8 +183,11 @@ static void send_config_pppoa(int mtu,
- int sock;
- struct ifreq ifr;
-
-- if (mtu > pppoatm_max_mtu)
-- error("Couldn't increase MTU to %d", mtu);
-+ if (pppoatm_max_mtu && mtu > pppoatm_max_mtu) {
-+ warn("Couldn't increase MTU to %d. Using %d",
-+ mtu, pppoatm_max_mtu);
-+ mtu = pppoatm_max_mtu;
-+ }
-
- sock = socket(AF_INET, SOCK_DGRAM, 0);
- if (sock < 0)
-@@ -202,8 +205,11 @@ static void recv_config_pppoa(int mru,
- int pcomp,
- int accomp)
- {
-- if (mru > pppoatm_max_mru)
-- error("Couldn't increase MRU to %d", mru);
-+ if (pppoatm_max_mru && mru > pppoatm_max_mru) {
-+ warn("Couldn't increase MRU to %d. Using %d",
-+ mru, pppoatm_max_mru);
-+ mru = pppoatm_max_mru;
-+ }
- }
-
- void plugin_init(void)
diff --git a/openwrt/package/ppp/patches/107-debian_stripMSdomain.patch b/openwrt/package/ppp/patches/107-debian_stripMSdomain.patch
deleted file mode 100644
index d52e38645d..0000000000
--- a/openwrt/package/ppp/patches/107-debian_stripMSdomain.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff -ruN ppp.orig/pppd/chap-new.c ppp/pppd/chap-new.c
---- ppp.orig/pppd/chap-new.c 2003-11-27 23:25:17.000000000 +0100
-+++ ppp/pppd/chap-new.c 2003-12-02 12:26:21.000000000 +0100
-@@ -57,6 +57,7 @@
- int chap_timeout_time = 3;
- int chap_max_transmits = 10;
- int chap_rechallenge_time = 0;
-+int chapms_strip_domain = 0;
-
- /*
- * Command-line options.
-@@ -68,6 +69,8 @@
- "Set max #xmits for challenge", OPT_PRIO },
- { "chap-interval", o_int, &chap_rechallenge_time,
- "Set interval for rechallenge", OPT_PRIO },
-+ { "chapms-strip-domain", o_bool, &chapms_strip_domain,
-+ "Strip the domain prefix before the Username", 1 },
- { NULL }
- };
-
-@@ -338,6 +341,14 @@
- /* Null terminate and clean remote name. */
- slprintf(rname, sizeof(rname), "%.*v", len, name);
- name = rname;
-+
-+ /* strip the MS domain name */
-+ if (chapms_strip_domain && strrchr(rname, '\\')) {
-+ char tmp[MAXNAMELEN+1];
-+
-+ strcpy(tmp, strrchr(rname, '\\') + 1);
-+ strcpy(rname, tmp);
-+ }
- }
-
- if (chap_verify_hook)
diff --git a/openwrt/package/ppp/patches/108-debian_defaultroute.patch b/openwrt/package/ppp/patches/108-debian_defaultroute.patch
deleted file mode 100644
index 76b444e4b2..0000000000
--- a/openwrt/package/ppp/patches/108-debian_defaultroute.patch
+++ /dev/null
@@ -1,253 +0,0 @@
---- ppp/pppd/ipcp.c Wed May 31 17:20:41 2000
-+++ ppp/pppd/ipcp.c Wed May 31 17:27:19 2000
-@@ -145,7 +145,17 @@
- { "-defaultroute", o_bool, &ipcp_allowoptions[0].default_route,
- "disable defaultroute option", OPT_A2COPY,
- &ipcp_wantoptions[0].default_route },
-
-+#ifdef __linux__
-+ { "replacedefaultroute", o_bool,
-+ &ipcp_wantoptions[0].replace_default_route,
-+ "Replace default route", 1
-+ },
-+ { "noreplacedefaultroute", o_bool,
-+ &ipcp_allowoptions[0].replace_default_route,
-+ "Never replace default route", OPT_A2COPY,
-+ &ipcp_wantoptions[0].replace_default_route },
-+#endif
- { "proxyarp", o_bool, &ipcp_wantoptions[0].proxy_arp,
- "Add proxy ARP entry", OPT_ENABLE|1, &ipcp_allowoptions[0].proxy_arp },
- { "noproxyarp", o_bool, &ipcp_allowoptions[0].proxy_arp,
-@@ -195,7 +205,7 @@
- ip_active_pkt
- };
-
--static void ipcp_clear_addrs __P((int, u_int32_t, u_int32_t));
-+static void ipcp_clear_addrs __P((int, u_int32_t, u_int32_t, bool));
- static void ipcp_script __P((char *)); /* Run an up/down script */
- static void ipcp_script_done __P((void *));
-
-@@ -1344,7 +1354,12 @@
- if (!sifnpmode(u, PPP_IP, NPMODE_QUEUE))
- return 0;
- if (wo->default_route)
-+#ifndef __linux__
- if (sifdefaultroute(u, wo->ouraddr, wo->hisaddr))
-+#else
-+ if (sifdefaultroute(u, wo->ouraddr, wo->hisaddr,
-+ wo->replace_default_route))
-+#endif
- default_route_set[u] = 1;
- if (wo->proxy_arp)
- if (sifproxyarp(u, wo->hisaddr))
-@@ -1420,7 +1435,8 @@
- */
- if (demand) {
- if (go->ouraddr != wo->ouraddr || ho->hisaddr != wo->hisaddr) {
-- ipcp_clear_addrs(f->unit, wo->ouraddr, wo->hisaddr);
-+ ipcp_clear_addrs(f->unit, wo->ouraddr, wo->hisaddr,
-+ wo->replace_default_route);
- if (go->ouraddr != wo->ouraddr) {
- warn("Local IP address changed to %I", go->ouraddr);
- script_setenv("OLDIPLOCAL", ip_ntoa(wo->ouraddr));
-@@ -1445,7 +1461,12 @@
-
- /* assign a default route through the interface if required */
- if (ipcp_wantoptions[f->unit].default_route)
-+#ifndef __linux__
- if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
-+#else
-+ if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr,
-+ wo->replace_default_route))
-+#endif
- default_route_set[f->unit] = 1;
-
- /* Make a proxy ARP entry if requested. */
-@@ -1492,7 +1513,12 @@
-
- /* assign a default route through the interface if required */
- if (ipcp_wantoptions[f->unit].default_route)
-+#ifndef __linux__
- if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
-+#else
-+ if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr,
-+ wo->replace_default_route))
-+#endif
- default_route_set[f->unit] = 1;
-
- /* Make a proxy ARP entry if requested. */
-@@ -1559,7 +1585,7 @@
- sifnpmode(f->unit, PPP_IP, NPMODE_DROP);
- sifdown(f->unit);
- ipcp_clear_addrs(f->unit, ipcp_gotoptions[f->unit].ouraddr,
-- ipcp_hisoptions[f->unit].hisaddr);
-+ ipcp_hisoptions[f->unit].hisaddr, 0);
- }
-
- /* Execute the ip-down script */
-@@ -1575,16 +1601,25 @@
- * proxy arp entries, etc.
- */
- static void
--ipcp_clear_addrs(unit, ouraddr, hisaddr)
-+ipcp_clear_addrs(unit, ouraddr, hisaddr, replacedefaultroute)
- int unit;
- u_int32_t ouraddr; /* local address */
- u_int32_t hisaddr; /* remote address */
-+ bool replacedefaultroute;
- {
- if (proxy_arp_set[unit]) {
- cifproxyarp(unit, hisaddr);
- proxy_arp_set[unit] = 0;
- }
-- if (default_route_set[unit]) {
-+ /* If replacedefaultroute, sifdefaultroute will be called soon
-+ * with replacedefaultroute set and that will overwrite the current
-+ * default route. This is the case only when doing demand, otherwise
-+ * during demand, this cifdefaultroute would restore the old default
-+ * route which is not what we want in this case. In the non-demand
-+ * case, we'll delete the default route and restore the old if there
-+ * is one saved by an sifdefaultroute with replacedefaultroute.
-+ */
-+ if (!replacedefaultroute && default_route_set[unit]) {
- cifdefaultroute(unit, ouraddr, hisaddr);
- default_route_set[unit] = 0;
- }
---- ppp/pppd/ipcp.h Wed May 31 17:20:41 2000
-+++ ppp/pppd/ipcp.h Wed May 31 15:56:17 2000
-@@ -47,6 +47,7 @@
- bool old_addrs; /* Use old (IP-Addresses) option? */
- bool req_addr; /* Ask peer to send IP address? */
- bool default_route; /* Assign default route through interface? */
-+ bool replace_default_route; /* Replace default route through interface? */
- bool proxy_arp; /* Make proxy ARP entry for peer? */
- bool neg_vj; /* Van Jacobson Compression? */
- bool old_vj; /* use old (short) form of VJ option? */
---- ppp/pppd/pppd.h Wed May 31 17:20:41 2000
-+++ ppp/pppd/pppd.h Wed May 31 15:56:17 2000
-@@ -416,7 +416,11 @@
- int cif6addr __P((int, eui64_t, eui64_t));
- /* Remove an IPv6 address from i/f */
- #endif
-+#ifndef __linux__
- int sifdefaultroute __P((int, u_int32_t, u_int32_t));
-+#else
-+int sifdefaultroute __P((int, u_int32_t, u_int32_t, bool replace_default_rt));
-+#endif
- /* Create default route through i/f */
- int cifdefaultroute __P((int, u_int32_t, u_int32_t));
- /* Delete default route through i/f */
---- ppp/pppd/sys-linux.c Wed May 31 17:20:41 2000
-+++ ppp/pppd/sys-linux.c Wed May 31 17:37:23 2000
-@@ -143,6 +143,8 @@
-
- static int if_is_up; /* Interface has been marked up */
- static u_int32_t default_route_gateway; /* Gateway for default route added */
-+static struct rtentry old_def_rt; /* Old default route */
-+static int default_rt_repl_rest; /* replace and restore old default rt */
- static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */
- static char proxy_arp_dev[16]; /* Device for proxy arp entry */
- static u_int32_t our_old_addr; /* for detecting address changes */
-@@ -1209,6 +1211,9 @@
- p = NULL;
- }
-
-+ SET_SA_FAMILY (rt->rt_dst, AF_INET);
-+ SET_SA_FAMILY (rt->rt_gateway, AF_INET);
-+
- SIN_ADDR(rt->rt_dst) = strtoul(cols[route_dest_col], NULL, 16);
- SIN_ADDR(rt->rt_gateway) = strtoul(cols[route_gw_col], NULL, 16);
- SIN_ADDR(rt->rt_genmask) = strtoul(cols[route_mask_col], NULL, 16);
-@@ -1278,19 +1283,53 @@
- /********************************************************************
- *
- * sifdefaultroute - assign a default route through the address given.
-+ *
-+ * If the global default_rt_repl_rest flag is set, then this function
-+ * already replaced the original system defaultroute with some other
-+ * route and it should just replace the current defaultroute with
-+ * another one, without saving the current route. Use: demand mode,
-+ * when pppd sets first a defaultroute it it's temporary ppp0 addresses
-+ * and then changes the temporary addresses to the addresses for the real
-+ * ppp connection when it has come up.
- */
-
--int sifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway)
-+int sifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway, bool replace)
- {
-- struct rtentry rt;
--
-- if (defaultroute_exists(&rt) && strcmp(rt.rt_dev, ifname) != 0) {
-- u_int32_t old_gateway = SIN_ADDR(rt.rt_gateway);
-+ struct rtentry rt, tmp_rt;
-+ struct rtentry *del_rt = NULL;
-
-- if (old_gateway != gateway)
-- error("not replacing existing default route to %s [%I]",
-- rt.rt_dev, old_gateway);
-- return 0;
-+
-+ if (default_rt_repl_rest) {
-+ /* We have already reclaced the original defaultroute, if we
-+ * are called again, we will delete the current default route
-+ * and set the new default route in this function.
-+ * - this is normally only the case the doing demand: */
-+ if (defaultroute_exists( &tmp_rt ))
-+ del_rt = &tmp_rt;
-+ } else if ( defaultroute_exists( &old_def_rt ) &&
-+ strcmp( old_def_rt.rt_dev, ifname ) != 0) {
-+ /* We did not yet replace an existing default route, let's
-+ * check if we should save and replace a default route:
-+ */
-+ u_int32_t old_gateway = SIN_ADDR(old_def_rt.rt_gateway);
-+
-+ if (old_gateway != gateway) {
-+ if (!replace) {
-+ error("not replacing default route to %s [%I]",
-+ old_def_rt.rt_dev, old_gateway);
-+ return 0;
-+ } else {
-+ // we need to copy rt_dev because we need it permanent too:
-+ char * tmp_dev = malloc(strlen(old_def_rt.rt_dev)+1);
-+ strcpy(tmp_dev, old_def_rt.rt_dev);
-+ old_def_rt.rt_dev = tmp_dev;
-+
-+ notice("replacing old default route to %s [%I]",
-+ old_def_rt.rt_dev, old_gateway);
-+ default_rt_repl_rest = 1;
-+ del_rt = &old_def_rt;
-+ }
-+ }
- }
-
- memset (&rt, '\0', sizeof (rt));
-@@ -1310,6 +1349,12 @@
- error("default route ioctl(SIOCADDRT): %m(%d)", errno);
- return 0;
- }
-+ if (default_rt_repl_rest && del_rt)
-+ if (ioctl(sock_fd, SIOCDELRT, del_rt) < 0) {
-+ if ( ! ok_error ( errno ))
-+ error("del old default route ioctl(SIOCDELRT): %m(%d)", errno);
-+ return 0;
-+ }
-
- default_route_gateway = gateway;
- return 1;
-@@ -1344,6 +1389,16 @@
- error("default route ioctl(SIOCDELRT): %m (%d)", errno);
- return 0;
- }
-+ }
-+ if (default_rt_repl_rest) {
-+ notice("restoring old default route to %s [%I]",
-+ old_def_rt.rt_dev, SIN_ADDR(old_def_rt.rt_gateway));
-+ if (ioctl(sock_fd, SIOCADDRT, &old_def_rt) < 0) {
-+ if ( ! ok_error ( errno ))
-+ error("restore default route ioctl(SIOCADDRT): %m(%d)", errno);
-+ return 0;
-+ }
-+ default_rt_repl_rest = 0;
- }
-
- return 1;
diff --git a/openwrt/package/ppp/patches/109-debian_demand.patch b/openwrt/package/ppp/patches/109-debian_demand.patch
deleted file mode 100644
index e024696697..0000000000
--- a/openwrt/package/ppp/patches/109-debian_demand.patch
+++ /dev/null
@@ -1,172 +0,0 @@
---- ppp/pppd/demand.c
-+++ ppp/pppd/demand.c 2000/06/28 14:54:04
-@@ -25,6 +25,8 @@
- #include <errno.h>
- #include <fcntl.h>
- #include <netdb.h>
-+#include <unistd.h>
-+#include <syslog.h>
- #include <sys/param.h>
- #include <sys/types.h>
- #include <sys/wait.h>
-@@ -32,6 +34,8 @@
- #include <sys/resource.h>
- #include <sys/stat.h>
- #include <sys/socket.h>
-+#include <netinet/in.h>
-+#include <arpa/inet.h>
- #ifdef PPP_FILTER
- #include <net/if.h>
- #include <net/bpf.h>
-@@ -210,6 +214,14 @@
- int c, rv;
-
- rv = 0;
-+
-+/* check for synchronous connection... */
-+
-+ if ( (p[0] == 0xFF) && (p[1] == 0x03) ) {
-+ rv = loop_frame(p,n);
-+ return rv;
-+ }
-+
- for (; n > 0; --n) {
- c = *p++;
- if (c == PPP_FLAG) {
-@@ -288,17 +300,102 @@
- * loopback, now that the real serial link is up.
- */
- void
--demand_rexmit(proto)
-+demand_rexmit(proto, newip)
- int proto;
-+ u_int32_t newip;
- {
- struct packet *pkt, *prev, *nextpkt;
-+ unsigned short checksum;
-+ unsigned short pkt_checksum = 0;
-+ unsigned iphdr;
-+ struct timeval tv;
-+ char cv = 0;
-+ char ipstr[16];
-
- prev = NULL;
- pkt = pend_q;
- pend_q = NULL;
-+ tv.tv_sec = 1;
-+ tv.tv_usec = 0;
-+ select(0,NULL,NULL,NULL,&tv); /* Sleep for 1 Seconds */
- for (; pkt != NULL; pkt = nextpkt) {
- nextpkt = pkt->next;
- if (PPP_PROTOCOL(pkt->data) == proto) {
-+ if ( (proto == PPP_IP) && newip ) {
-+ /* Get old checksum */
-+
-+ iphdr = (pkt->data[4] & 15) << 2;
-+ checksum = *((unsigned short *) (pkt->data+14));
-+ if (checksum == 0xFFFF) {
-+ checksum = 0;
-+ }
-+
-+
-+ if (pkt->data[13] == 17) {
-+ pkt_checksum = *((unsigned short *) (pkt->data+10+iphdr));
-+ if (pkt_checksum) {
-+ cv = 1;
-+ if (pkt_checksum == 0xFFFF) {
-+ pkt_checksum = 0;
-+ }
-+ }
-+ else {
-+ cv = 0;
-+ }
-+ }
-+
-+ if (pkt->data[13] == 6) {
-+ pkt_checksum = *((unsigned short *) (pkt->data+20+iphdr));
-+ cv = 1;
-+ if (pkt_checksum == 0xFFFF) {
-+ pkt_checksum = 0;
-+ }
-+ }
-+
-+ /* Delete old Source-IP-Address */
-+ checksum -= *((unsigned short *) (pkt->data+16)) ^ 0xFFFF;
-+ checksum -= *((unsigned short *) (pkt->data+18)) ^ 0xFFFF;
-+
-+ pkt_checksum -= *((unsigned short *) (pkt->data+16)) ^ 0xFFFF;
-+ pkt_checksum -= *((unsigned short *) (pkt->data+18)) ^ 0xFFFF;
-+
-+ /* Change Source-IP-Address */
-+ * ((u_int32_t *) (pkt->data + 16)) = newip;
-+
-+ /* Add new Source-IP-Address */
-+ checksum += *((unsigned short *) (pkt->data+16)) ^ 0xFFFF;
-+ checksum += *((unsigned short *) (pkt->data+18)) ^ 0xFFFF;
-+
-+ pkt_checksum += *((unsigned short *) (pkt->data+16)) ^ 0xFFFF;
-+ pkt_checksum += *((unsigned short *) (pkt->data+18)) ^ 0xFFFF;
-+
-+ /* Write new checksum */
-+ if (!checksum) {
-+ checksum = 0xFFFF;
-+ }
-+ *((unsigned short *) (pkt->data+14)) = checksum;
-+ if (pkt->data[13] == 6) {
-+ *((unsigned short *) (pkt->data+20+iphdr)) = pkt_checksum;
-+ }
-+ if (cv && (pkt->data[13] == 17) ) {
-+ *((unsigned short *) (pkt->data+10+iphdr)) = pkt_checksum;
-+ }
-+
-+ /* Log Packet */
-+ strcpy(ipstr,inet_ntoa(*( (struct in_addr *) (pkt->data+16))));
-+ if (pkt->data[13] == 1) {
-+ syslog(LOG_INFO,"Open ICMP %s -> %s\n",
-+ ipstr,
-+ inet_ntoa(*( (struct in_addr *) (pkt->data+20))));
-+ } else {
-+ syslog(LOG_INFO,"Open %s %s:%d -> %s:%d\n",
-+ pkt->data[13] == 6 ? "TCP" : "UDP",
-+ ipstr,
-+ ntohs(*( (short *) (pkt->data+iphdr+4))),
-+ inet_ntoa(*( (struct in_addr *) (pkt->data+20))),
-+ ntohs(*( (short *) (pkt->data+iphdr+6))));
-+ }
-+ }
- output(0, pkt->data, pkt->length);
- free(pkt);
- } else {
---- ppp/pppd/ipcp.c
-+++ ppp/pppd/ipcp.c 2000/06/28 12:32:05
-@@ -1454,7 +1454,7 @@
- proxy_arp_set[f->unit] = 1;
-
- }
-- demand_rexmit(PPP_IP);
-+ demand_rexmit(PPP_IP,go->ouraddr);
- sifnpmode(f->unit, PPP_IP, NPMODE_PASS);
-
- } else {
---- ppp/pppd/ipv6cp.c
-+++ ppp/pppd/ipv6cp.c 2000/06/28 12:32:06
-@@ -1153,7 +1153,7 @@
- }
-
- }
-- demand_rexmit(PPP_IPV6);
-+ demand_rexmit(PPP_IPV6,0);
- sifnpmode(f->unit, PPP_IPV6, NPMODE_PASS);
-
- } else {
---- ppp/pppd/pppd.h
-+++ ppp/pppd/pppd.h 2000/06/28 12:32:06
-@@ -359,7 +359,7 @@
- void demand_block __P((void)); /* set all NPs to queue up packets */
- void demand_unblock __P((void)); /* set all NPs to pass packets */
- void demand_discard __P((void)); /* set all NPs to discard packets */
--void demand_rexmit __P((int)); /* retransmit saved frames for an NP */
-+void demand_rexmit __P((int, u_int32_t)); /* retransmit saved frames for an NP*/
- int loop_chars __P((unsigned char *, int)); /* process chars from loopback */
- int loop_frame __P((unsigned char *, int)); /* should we bring link up? */
-
diff --git a/openwrt/package/ppp/patches/200-makefile.patch b/openwrt/package/ppp/patches/200-makefile.patch
deleted file mode 100644
index 5bbf8602d1..0000000000
--- a/openwrt/package/ppp/patches/200-makefile.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-diff -ruN ppp-2.4.3-orig/pppd/Makefile.linux ppp-2.4.3-3/pppd/Makefile.linux
---- ppp-2.4.3-orig/pppd/Makefile.linux 2004-11-13 13:02:22.000000000 +0100
-+++ ppp-2.4.3-3/pppd/Makefile.linux 2004-12-16 04:43:41.000000000 +0100
-@@ -48,19 +48,19 @@
- # Uncomment the next line to include support for PPP packet filtering.
- # This requires that the libpcap library and headers be installed
- # and that the kernel driver support PPP packet filtering.
--FILTER=y
-+#FILTER=y
-
- # Uncomment the next line to enable multilink PPP (enabled by default)
- # Linux distributions: Please leave multilink ENABLED in your builds
- # of pppd!
--HAVE_MULTILINK=y
-+#HAVE_MULTILINK=y
-
- # Uncomment the next line to enable the TDB database (enabled by default.)
- # If you enable multilink, then TDB is automatically enabled also.
- # Linux distributions: Please leave TDB ENABLED in your builds.
--USE_TDB=y
-+#USE_TDB=y
-
--HAS_SHADOW=y
-+#HAS_SHADOW=y
- #USE_PAM=y
- #HAVE_INET6=y
-
-@@ -77,7 +77,7 @@
-
- INCLUDE_DIRS= -I../include
-
--COMPILE_FLAGS= -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MMAP
-+COMPILE_FLAGS= -DHAVE_PATHS_H -DHAVE_MMAP
-
- CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS)
-
-@@ -117,12 +117,12 @@
- #LIBS += -lshadow $(LIBS)
- endif
-
--ifneq ($(wildcard /usr/include/crypt.h),)
-+#ifneq ($(wildcard /usr/include/crypt.h),)
- CFLAGS += -DHAVE_CRYPT_H=1
--endif
--ifneq ($(wildcard /usr/lib/libcrypt.*),)
-+#endif
-+#ifneq ($(wildcard /usr/lib/libcrypt.*),)
- LIBS += -lcrypt
--endif
-+#endif
-
- ifdef NEEDDES
- ifndef USE_CRYPT
diff --git a/openwrt/package/ppp/patches/201-mppe_mppc_1.1.patch b/openwrt/package/ppp/patches/201-mppe_mppc_1.1.patch
deleted file mode 100644
index 7e09f1a792..0000000000
--- a/openwrt/package/ppp/patches/201-mppe_mppc_1.1.patch
+++ /dev/null
@@ -1,1585 +0,0 @@
-diff -ruN ppp-2.4.3.orig/include/linux/ppp-comp.h ppp-2.4.3/include/linux/ppp-comp.h
---- ppp-2.4.3.orig/include/linux/ppp-comp.h 2002-12-06 10:49:15.000000000 +0100
-+++ ppp-2.4.3/include/linux/ppp-comp.h 2004-11-21 13:54:09.000000000 +0100
-@@ -36,7 +36,7 @@
- */
-
- /*
-- * ==FILEVERSION 20020319==
-+ * ==FILEVERSION 20020715==
- *
- * NOTE TO MAINTAINERS:
- * If you modify this file at all, please set the above date.
-@@ -86,7 +86,7 @@
-
- /* Compress a packet */
- int (*compress) (void *state, unsigned char *rptr,
-- unsigned char *obuf, int isize, int osize);
-+ unsigned char *obuf, int isize, int osize);
-
- /* Return compression statistics */
- void (*comp_stat) (void *state, struct compstat *stats);
-@@ -107,7 +107,7 @@
-
- /* Decompress a packet. */
- int (*decompress) (void *state, unsigned char *ibuf, int isize,
-- unsigned char *obuf, int osize);
-+ unsigned char *obuf, int osize);
-
- /* Update state for an incompressible packet received */
- void (*incomp) (void *state, unsigned char *ibuf, int icnt);
-@@ -288,6 +288,33 @@
- opts |= MPPE_OPT_UNKNOWN; \
- } while (/* CONSTCOND */ 0)
-
-+/* MPPE/MPPC definitions by J.D.*/
-+#define MPPE_STATELESS MPPE_H_BIT /* configuration bit H */
-+#define MPPE_40BIT MPPE_L_BIT /* configuration bit L */
-+#define MPPE_56BIT MPPE_M_BIT /* configuration bit M */
-+#define MPPE_128BIT MPPE_S_BIT /* configuration bit S */
-+#define MPPE_MPPC MPPE_C_BIT /* configuration bit C */
-+
-+/*
-+ * Definitions for Stac LZS.
-+ */
-+
-+#define CI_LZS 17 /* config option for Stac LZS */
-+#define CILEN_LZS 5 /* length of config option */
-+
-+#define LZS_OVHD 4 /* max. LZS overhead */
-+#define LZS_HIST_LEN 2048 /* LZS history size */
-+#define LZS_MAX_CCOUNT 0x0FFF /* max. coherency counter value */
-+
-+#define LZS_MODE_NONE 0
-+#define LZS_MODE_LCB 1
-+#define LZS_MODE_CRC 2
-+#define LZS_MODE_SEQ 3
-+#define LZS_MODE_EXT 4
-+
-+#define LZS_EXT_BIT_FLUSHED 0x80 /* bit A */
-+#define LZS_EXT_BIT_COMP 0x20 /* bit C */
-+
- /*
- * Definitions for other, as yet unsupported, compression methods.
- */
-diff -ruN ppp-2.4.3.orig/include/net/ppp-comp.h ppp-2.4.3/include/net/ppp-comp.h
---- ppp-2.4.3.orig/include/net/ppp-comp.h 2002-12-06 10:49:15.000000000 +0100
-+++ ppp-2.4.3/include/net/ppp-comp.h 2004-11-21 13:54:09.000000000 +0100
-@@ -255,6 +255,33 @@
- opts |= MPPE_OPT_UNKNOWN; \
- } while (/* CONSTCOND */ 0)
-
-+/* MPPE/MPPC definitions by J.D.*/
-+#define MPPE_STATELESS MPPE_H_BIT /* configuration bit H */
-+#define MPPE_40BIT MPPE_L_BIT /* configuration bit L */
-+#define MPPE_56BIT MPPE_M_BIT /* configuration bit M */
-+#define MPPE_128BIT MPPE_S_BIT /* configuration bit S */
-+#define MPPE_MPPC MPPE_C_BIT /* configuration bit C */
-+
-+/*
-+ * Definitions for Stac LZS.
-+ */
-+
-+#define CI_LZS 17 /* config option for Stac LZS */
-+#define CILEN_LZS 5 /* length of config option */
-+
-+#define LZS_OVHD 4 /* max. LZS overhead */
-+#define LZS_HIST_LEN 2048 /* LZS history size */
-+#define LZS_MAX_CCOUNT 0x0FFF /* max. coherency counter value */
-+
-+#define LZS_MODE_NONE 0
-+#define LZS_MODE_LCB 1
-+#define LZS_MODE_CRC 2
-+#define LZS_MODE_SEQ 3
-+#define LZS_MODE_EXT 4
-+
-+#define LZS_EXT_BIT_FLUSHED 0x80 /* bit A */
-+#define LZS_EXT_BIT_COMP 0x20 /* bit C */
-+
- /*
- * Definitions for other, as yet unsupported, compression methods.
- */
-diff -ruN ppp-2.4.3.orig/pppd/ccp.c ppp-2.4.3/pppd/ccp.c
---- ppp-2.4.3.orig/pppd/ccp.c 2004-11-13 03:28:15.000000000 +0100
-+++ ppp-2.4.3/pppd/ccp.c 2004-11-21 13:54:09.000000000 +0100
-@@ -62,12 +62,10 @@
- static char bsd_value[8];
- static char deflate_value[8];
-
--/*
-- * Option variables.
-- */
- #ifdef MPPE
--bool refuse_mppe_stateful = 1; /* Allow stateful mode? */
--#endif
-+static int setmppe(char **);
-+static int setnomppe(void);
-+#endif /* MPPE */
-
- static option_t ccp_option_list[] = {
- { "noccp", o_bool, &ccp_protent.enabled_flag,
-@@ -108,54 +106,36 @@
- "don't allow Predictor-1", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
- &ccp_allowoptions[0].predictor_1 },
-
-+ { "lzs", o_bool, &ccp_wantoptions[0].lzs,
-+ "request Stac LZS", 1, &ccp_allowoptions[0].lzs, OPT_PRIO },
-+ { "+lzs", o_bool, &ccp_wantoptions[0].lzs,
-+ "request Stac LZS", 1, &ccp_allowoptions[0].lzs, OPT_ALIAS | OPT_PRIO },
-+ { "nolzs", o_bool, &ccp_wantoptions[0].lzs,
-+ "don't allow Stac LZS", OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].lzs },
-+ { "-lzs", o_bool, &ccp_wantoptions[0].lzs,
-+ "don't allow Stac LZS", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].lzs },
-+
- #ifdef MPPE
-- /* MPPE options are symmetrical ... we only set wantoptions here */
-- { "require-mppe", o_bool, &ccp_wantoptions[0].mppe,
-- "require MPPE encryption",
-- OPT_PRIO | MPPE_OPT_40 | MPPE_OPT_128 },
-- { "+mppe", o_bool, &ccp_wantoptions[0].mppe,
-- "require MPPE encryption",
-- OPT_ALIAS | OPT_PRIO | MPPE_OPT_40 | MPPE_OPT_128 },
-- { "nomppe", o_bool, &ccp_wantoptions[0].mppe,
-- "don't allow MPPE encryption", OPT_PRIO },
-- { "-mppe", o_bool, &ccp_wantoptions[0].mppe,
-- "don't allow MPPE encryption", OPT_ALIAS | OPT_PRIO },
--
-- /* We use ccp_allowoptions[0].mppe as a junk var ... it is reset later */
-- { "require-mppe-40", o_bool, &ccp_allowoptions[0].mppe,
-- "require MPPE 40-bit encryption", OPT_PRIO | OPT_A2OR | MPPE_OPT_40,
-- &ccp_wantoptions[0].mppe },
-- { "+mppe-40", o_bool, &ccp_allowoptions[0].mppe,
-- "require MPPE 40-bit encryption", OPT_PRIO | OPT_A2OR | MPPE_OPT_40,
-- &ccp_wantoptions[0].mppe },
-- { "nomppe-40", o_bool, &ccp_allowoptions[0].mppe,
-- "don't allow MPPE 40-bit encryption",
-- OPT_PRIOSUB | OPT_A2CLRB | MPPE_OPT_40, &ccp_wantoptions[0].mppe },
-- { "-mppe-40", o_bool, &ccp_allowoptions[0].mppe,
-- "don't allow MPPE 40-bit encryption",
-- OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLRB | MPPE_OPT_40,
-- &ccp_wantoptions[0].mppe },
--
-- { "require-mppe-128", o_bool, &ccp_allowoptions[0].mppe,
-- "require MPPE 128-bit encryption", OPT_PRIO | OPT_A2OR | MPPE_OPT_128,
-- &ccp_wantoptions[0].mppe },
-- { "+mppe-128", o_bool, &ccp_allowoptions[0].mppe,
-- "require MPPE 128-bit encryption",
-- OPT_ALIAS | OPT_PRIO | OPT_A2OR | MPPE_OPT_128,
-- &ccp_wantoptions[0].mppe },
-- { "nomppe-128", o_bool, &ccp_allowoptions[0].mppe,
-- "don't allow MPPE 128-bit encryption",
-- OPT_PRIOSUB | OPT_A2CLRB | MPPE_OPT_128, &ccp_wantoptions[0].mppe },
-- { "-mppe-128", o_bool, &ccp_allowoptions[0].mppe,
-- "don't allow MPPE 128-bit encryption",
-- OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLRB | MPPE_OPT_128,
-- &ccp_wantoptions[0].mppe },
--
-- /* strange one; we always request stateless, but will we allow stateful? */
-- { "mppe-stateful", o_bool, &refuse_mppe_stateful,
-- "allow MPPE stateful mode", OPT_PRIO },
-- { "nomppe-stateful", o_bool, &refuse_mppe_stateful,
-- "disallow MPPE stateful mode", OPT_PRIO | 1 },
-+ { "mppc", o_bool, &ccp_wantoptions[0].mppc,
-+ "request MPPC compression", 1, &ccp_allowoptions[0].mppc },
-+ { "+mppc", o_bool, &ccp_wantoptions[0].mppc,
-+ "request MPPC compression", 1, &ccp_allowoptions[0].mppc, OPT_ALIAS },
-+ { "nomppc", o_bool, &ccp_wantoptions[0].mppc,
-+ "don't allow MPPC compression", OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppc },
-+ { "-mppc", o_bool, &ccp_wantoptions[0].mppc,
-+ "don't allow MPPC compression", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppc },
-+ { "mppe", o_special, (void *)setmppe,
-+ "request MPPE encryption" },
-+ { "+mppe", o_special, (void *)setmppe,
-+ "request MPPE encryption" },
-+ { "nomppe", o_special_noarg, (void *)setnomppe,
-+ "don't allow MPPE encryption" },
-+ { "-mppe", o_special_noarg, (void *)setnomppe,
-+ "don't allow MPPE encryption" },
- #endif /* MPPE */
-
- { NULL }
-@@ -241,7 +221,7 @@
- */
- #define ANY_COMPRESS(opt) ((opt).deflate || (opt).bsd_compress \
- || (opt).predictor_1 || (opt).predictor_2 \
-- || (opt).mppe)
-+ || (opt).lzs || (opt).mppc || (opt).mppe)
-
- /*
- * Local state (mainly for handling reset-reqs and reset-acks).
-@@ -344,6 +324,100 @@
- return 1;
- }
-
-+#ifdef MPPE
-+/*
-+ * Functions called from config options
-+ */
-+/*
-+ MPPE suboptions:
-+ required - require MPPE; disconnect if peer doesn't support it
-+ stateless - use stateless mode
-+ no40 - disable 40 bit keys
-+ no56 - disable 56 bit keys
-+ no128 - disable 128 bit keys
-+*/
-+int setmppe(char **argv)
-+{
-+ int i;
-+ char *str, cmdbuf[16];
-+
-+ ccp_allowoptions[0].mppe = 1;
-+ ccp_allowoptions[0].mppe_40 = 1;
-+ ccp_allowoptions[0].mppe_56 = 1;
-+ ccp_allowoptions[0].mppe_128 = 1;
-+ ccp_allowoptions[0].mppe_stateless = 0;
-+ ccp_wantoptions[0].mppe = 0;
-+
-+ str = *argv;
-+
-+ while (1) {
-+ i = 0;
-+ memset(cmdbuf, '\0', 16);
-+ while ((i < 16) && (*str != ',') && (*str != '\0'))
-+ cmdbuf[i++] = *str++;
-+ cmdbuf[i] = '\0';
-+ if (!strncasecmp(cmdbuf, "no40", strlen("no40"))) {
-+ ccp_allowoptions[0].mppe_40 = 0;
-+ goto next_param;
-+ } else if (!strncasecmp(cmdbuf, "no56", strlen("no56"))) {
-+ ccp_allowoptions[0].mppe_56 = 0;
-+ goto next_param;
-+ } else if (!strncasecmp(cmdbuf, "no128", strlen("no128"))) {
-+ ccp_allowoptions[0].mppe_128 = 0;
-+ goto next_param;
-+ } else if (!strncasecmp(cmdbuf, "stateless", strlen("stateless"))) {
-+ ccp_allowoptions[0].mppe_stateless = 1;
-+ goto next_param;
-+ } else if (!strncasecmp(cmdbuf, "required", strlen("required"))) {
-+ ccp_wantoptions[0].mppe = 1;
-+ goto next_param;
-+ } else {
-+ option_error("invalid parameter '%s' for mppe option", cmdbuf);
-+ return 0;
-+ }
-+
-+ next_param:
-+ if (*str == ',') {
-+ str++;
-+ continue;
-+ }
-+ if (*str == '\0') {
-+ if (!(ccp_allowoptions[0].mppe_40 || ccp_allowoptions[0].mppe_56 ||
-+ ccp_allowoptions[0].mppe_128)) {
-+ if (ccp_wantoptions[0].mppe == 1) {
-+ option_error("You require MPPE but you have switched off "
-+ "all encryption key lengths.");
-+ return 0;
-+ }
-+ ccp_wantoptions[0].mppe = ccp_allowoptions[0].mppe = 0;
-+ ccp_wantoptions[0].mppe_stateless =
-+ ccp_allowoptions[0].mppe_stateless = 0;
-+ } else {
-+ ccp_allowoptions[0].mppe = 1;
-+ ccp_wantoptions[0].mppe_stateless =
-+ ccp_allowoptions[0].mppe_stateless;
-+ if (ccp_wantoptions[0].mppe == 1) {
-+ ccp_wantoptions[0].mppe_40 = ccp_allowoptions[0].mppe_40;
-+ ccp_wantoptions[0].mppe_56 = ccp_allowoptions[0].mppe_56;
-+ ccp_wantoptions[0].mppe_128 = ccp_allowoptions[0].mppe_128;
-+ }
-+ }
-+ return 1;
-+ }
-+ }
-+}
-+
-+int setnomppe(void)
-+{
-+ ccp_wantoptions[0].mppe = ccp_allowoptions[0].mppe = 0;
-+ ccp_wantoptions[0].mppe_40 = ccp_allowoptions[0].mppe_40 = 0;
-+ ccp_wantoptions[0].mppe_56 = ccp_allowoptions[0].mppe_56 = 0;
-+ ccp_wantoptions[0].mppe_128 = ccp_allowoptions[0].mppe_128 = 0;
-+ ccp_wantoptions[0].mppe_stateless = ccp_allowoptions[0].mppe_stateless = 0;
-+ return 1;
-+}
-+#endif /* MPPE */
-+
- /*
- * ccp_init - initialize CCP.
- */
-@@ -378,6 +452,30 @@
- ccp_allowoptions[0].bsd_bits = BSD_MAX_BITS;
-
- ccp_allowoptions[0].predictor_1 = 1;
-+
-+ ccp_wantoptions[0].lzs = 0; /* Stac LZS - will be enabled in the future */
-+ ccp_wantoptions[0].lzs_mode = LZS_MODE_SEQ;
-+ ccp_wantoptions[0].lzs_hists = 1;
-+ ccp_allowoptions[0].lzs = 0; /* Stac LZS - will be enabled in the future */
-+ ccp_allowoptions[0].lzs_mode = LZS_MODE_SEQ;
-+ ccp_allowoptions[0].lzs_hists = 1;
-+
-+#ifdef MPPE
-+ /* by default allow and request MPPC... */
-+ ccp_wantoptions[0].mppc = ccp_allowoptions[0].mppc = 1;
-+
-+ /* ... and allow but don't request MPPE */
-+ ccp_allowoptions[0].mppe = 1;
-+ ccp_allowoptions[0].mppe_40 = 1;
-+ ccp_allowoptions[0].mppe_56 = 1;
-+ ccp_allowoptions[0].mppe_128 = 1;
-+ ccp_allowoptions[0].mppe_stateless = 1;
-+ ccp_wantoptions[0].mppe = 0;
-+ ccp_wantoptions[0].mppe_40 = 0;
-+ ccp_wantoptions[0].mppe_56 = 0;
-+ ccp_wantoptions[0].mppe_128 = 0;
-+ ccp_wantoptions[0].mppe_stateless = 0;
-+#endif /* MPPE */
- }
-
- /*
-@@ -455,11 +553,11 @@
- if (oldstate == OPENED && p[0] == TERMREQ && f->state != OPENED) {
- notice("Compression disabled by peer.");
- #ifdef MPPE
-- if (ccp_gotoptions[unit].mppe) {
-+ if (ccp_wantoptions[unit].mppe) {
- error("MPPE disabled, closing LCP");
- lcp_close(unit, "MPPE disabled by peer");
- }
--#endif
-+#endif /* MPPE */
- }
-
- /*
-@@ -487,6 +585,15 @@
- break;
- /* send a reset-ack, which the transmitter will see and
- reset its compression state. */
-+
-+ /* In case of MPPE/MPPC or LZS we shouldn't send CCP_RESETACK,
-+ but we do it in order to reset compressor; CCP_RESETACK is
-+ then silently discarded. See functions ppp_send_frame and
-+ ppp_ccp_peek in ppp_generic.c (Linux only !!!). All the
-+ confusion is caused by the fact that CCP code is splited
-+ into two parts - one part is handled by pppd, the other one
-+ is handled by kernel. */
-+
- fsm_sdata(f, CCP_RESETACK, id, NULL, 0);
- break;
-
-@@ -515,12 +622,11 @@
- fsm_lowerdown(&ccp_fsm[unit]);
-
- #ifdef MPPE
-- if (ccp_gotoptions[unit].mppe) {
-+ if (ccp_wantoptions[unit].mppe) {
- error("MPPE required but peer negotiation failed");
- lcp_close(unit, "MPPE required but peer negotiation failed");
- }
--#endif
--
-+#endif /* MPPE */
- }
-
- /*
-@@ -537,7 +643,7 @@
- all_rejected[f->unit] = 0;
-
- #ifdef MPPE
-- if (go->mppe) {
-+ if (go->mppe || go->mppc) {
- ccp_options *ao = &ccp_allowoptions[f->unit];
- int auth_mschap_bits = auth_done[f->unit];
- int numbits;
-@@ -551,80 +657,109 @@
- * NB: If MPPE is required, all other compression opts are invalid.
- * So, we return right away if we can't do it.
- */
-+ if (ccp_wantoptions[f->unit].mppe) {
-+ /* Leave only the mschap auth bits set */
-+ auth_mschap_bits &= (CHAP_MS_WITHPEER | CHAP_MS_PEER |
-+ CHAP_MS2_WITHPEER | CHAP_MS2_PEER);
-+ /* Count the mschap auths */
-+ auth_mschap_bits >>= CHAP_MS_SHIFT;
-+ numbits = 0;
-+ do {
-+ numbits += auth_mschap_bits & 1;
-+ auth_mschap_bits >>= 1;
-+ } while (auth_mschap_bits);
-+ if (numbits > 1) {
-+ error("MPPE required, but auth done in both directions.");
-+ lcp_close(f->unit, "MPPE required but not available");
-+ return;
-+ }
-+ if (!numbits) {
-+ error("MPPE required, but MS-CHAP[v2] auth not performed.");
-+ lcp_close(f->unit, "MPPE required but not available");
-+ return;
-+ }
-
-- /* Leave only the mschap auth bits set */
-- auth_mschap_bits &= (CHAP_MS_WITHPEER | CHAP_MS_PEER |
-- CHAP_MS2_WITHPEER | CHAP_MS2_PEER);
-- /* Count the mschap auths */
-- auth_mschap_bits >>= CHAP_MS_SHIFT;
-- numbits = 0;
-- do {
-- numbits += auth_mschap_bits & 1;
-- auth_mschap_bits >>= 1;
-- } while (auth_mschap_bits);
-- if (numbits > 1) {
-- error("MPPE required, but auth done in both directions.");
-- lcp_close(f->unit, "MPPE required but not available");
-- return;
-- }
-- if (!numbits) {
-- error("MPPE required, but MS-CHAP[v2] auth not performed.");
-- lcp_close(f->unit, "MPPE required but not available");
-- return;
-- }
--
-- /* A plugin (eg radius) may not have obtained key material. */
-- if (!mppe_keys_set) {
-- error("MPPE required, but keys are not available. "
-- "Possible plugin problem?");
-- lcp_close(f->unit, "MPPE required but not available");
-- return;
-- }
--
-- /* LM auth not supported for MPPE */
-- if (auth_done[f->unit] & (CHAP_MS_WITHPEER | CHAP_MS_PEER)) {
-- /* This might be noise */
-- if (go->mppe & MPPE_OPT_40) {
-- notice("Disabling 40-bit MPPE; MS-CHAP LM not supported");
-- go->mppe &= ~MPPE_OPT_40;
-- ccp_wantoptions[f->unit].mppe &= ~MPPE_OPT_40;
-+ /* A plugin (eg radius) may not have obtained key material. */
-+ if (!mppe_keys_set) {
-+ error("MPPE required, but keys are not available. "
-+ "Possible plugin problem?");
-+ lcp_close(f->unit, "MPPE required but not available");
-+ return;
- }
- }
-
-- /* Last check: can we actually negotiate something? */
-- if (!(go->mppe & (MPPE_OPT_40 | MPPE_OPT_128))) {
-- /* Could be misconfig, could be 40-bit disabled above. */
-- error("MPPE required, but both 40-bit and 128-bit disabled.");
-- lcp_close(f->unit, "MPPE required but not available");
-- return;
-+ /*
-+ * Check whether the kernel knows about the various
-+ * compression methods we might request. Key material
-+ * unimportant here.
-+ */
-+ if (go->mppc) {
-+ opt_buf[0] = CI_MPPE;
-+ opt_buf[1] = CILEN_MPPE;
-+ opt_buf[2] = 0;
-+ opt_buf[3] = 0;
-+ opt_buf[4] = 0;
-+ opt_buf[5] = MPPE_MPPC;
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE, 0) <= 0)
-+ go->mppc = 0;
-+ }
-+ if (go->mppe_40) {
-+ opt_buf[0] = CI_MPPE;
-+ opt_buf[1] = CILEN_MPPE;
-+ opt_buf[2] = MPPE_STATELESS;
-+ opt_buf[3] = 0;
-+ opt_buf[4] = 0;
-+ opt_buf[5] = MPPE_40BIT;
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0) <= 0)
-+ go->mppe_40 = 0;
-+ }
-+ if (go->mppe_56) {
-+ opt_buf[0] = CI_MPPE;
-+ opt_buf[1] = CILEN_MPPE;
-+ opt_buf[2] = MPPE_STATELESS;
-+ opt_buf[3] = 0;
-+ opt_buf[4] = 0;
-+ opt_buf[5] = MPPE_56BIT;
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0) <= 0)
-+ go->mppe_56 = 0;
-+ }
-+ if (go->mppe_128) {
-+ opt_buf[0] = CI_MPPE;
-+ opt_buf[1] = CILEN_MPPE;
-+ opt_buf[2] = MPPE_STATELESS;
-+ opt_buf[3] = 0;
-+ opt_buf[4] = 0;
-+ opt_buf[5] = MPPE_128BIT;
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0) <= 0)
-+ go->mppe_128 = 0;
-+ }
-+ if (!go->mppe_40 && !go->mppe_56 && !go->mppe_128) {
-+ if (ccp_wantoptions[f->unit].mppe) {
-+ error("MPPE required, but kernel has no support.");
-+ lcp_close(f->unit, "MPPE required but not available");
-+ }
-+ go->mppe = go->mppe_stateless = 0;
-+ } else {
-+ /* MPPE is not compatible with other compression types */
-+ if (ccp_wantoptions[f->unit].mppe) {
-+ ao->bsd_compress = go->bsd_compress = 0;
-+ ao->predictor_1 = go->predictor_1 = 0;
-+ ao->predictor_2 = go->predictor_2 = 0;
-+ ao->deflate = go->deflate = 0;
-+ ao->lzs = go->lzs = 0;
-+ }
- }
--
-- /* sync options */
-- ao->mppe = go->mppe;
-- /* MPPE is not compatible with other compression types */
-- ao->bsd_compress = go->bsd_compress = 0;
-- ao->predictor_1 = go->predictor_1 = 0;
-- ao->predictor_2 = go->predictor_2 = 0;
-- ao->deflate = go->deflate = 0;
- }
- #endif /* MPPE */
--
-- /*
-- * Check whether the kernel knows about the various
-- * compression methods we might request.
-- */
--#ifdef MPPE
-- if (go->mppe) {
-- opt_buf[0] = CI_MPPE;
-- opt_buf[1] = CILEN_MPPE;
-- MPPE_OPTS_TO_CI(go->mppe, &opt_buf[2]);
-- /* Key material unimportant here. */
-- if (ccp_test(f->unit, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0) <= 0) {
-- error("MPPE required, but kernel has no support.");
-- lcp_close(f->unit, "MPPE required but not available");
-- }
-+ if (go->lzs) {
-+ opt_buf[0] = CI_LZS;
-+ opt_buf[1] = CILEN_LZS;
-+ opt_buf[2] = go->lzs_hists >> 8;
-+ opt_buf[3] = go->lzs_hists & 0xff;
-+ opt_buf[4] = LZS_MODE_SEQ;
-+ if (ccp_test(f->unit, opt_buf, CILEN_LZS, 0) <= 0)
-+ go->lzs = 0;
- }
--#endif
- if (go->bsd_compress) {
- opt_buf[0] = CI_BSD_COMPRESS;
- opt_buf[1] = CILEN_BSD_COMPRESS;
-@@ -679,7 +814,8 @@
- + (go->deflate? CILEN_DEFLATE: 0)
- + (go->predictor_1? CILEN_PREDICTOR_1: 0)
- + (go->predictor_2? CILEN_PREDICTOR_2: 0)
-- + (go->mppe? CILEN_MPPE: 0);
-+ + (go->lzs? CILEN_LZS: 0)
-+ + ((go->mppe || go->mppc)? CILEN_MPPE: 0);
- }
-
- /*
-@@ -693,6 +829,8 @@
- {
- int res;
- ccp_options *go = &ccp_gotoptions[f->unit];
-+ ccp_options *ao = &ccp_allowoptions[f->unit];
-+ ccp_options *wo = &ccp_wantoptions[f->unit];
- u_char *p0 = p;
-
- /*
-@@ -701,22 +839,43 @@
- * in case it gets Acked.
- */
- #ifdef MPPE
-- if (go->mppe) {
-+ if (go->mppe || go->mppc || (!wo->mppe && ao->mppe)) {
- u_char opt_buf[CILEN_MPPE + MPPE_MAX_KEY_LEN];
-
-- p[0] = opt_buf[0] = CI_MPPE;
-- p[1] = opt_buf[1] = CILEN_MPPE;
-- MPPE_OPTS_TO_CI(go->mppe, &p[2]);
-- MPPE_OPTS_TO_CI(go->mppe, &opt_buf[2]);
-+ p[0] = CI_MPPE;
-+ p[1] = CILEN_MPPE;
-+ p[2] = (go->mppe_stateless ? MPPE_STATELESS : 0);
-+ p[3] = 0;
-+ p[4] = 0;
-+ p[5] = (go->mppe_40 ? MPPE_40BIT : 0) | (go->mppe_56 ? MPPE_56BIT : 0) |
-+ (go->mppe_128 ? MPPE_128BIT : 0) | (go->mppc ? MPPE_MPPC : 0);
-+
-+ BCOPY(p, opt_buf, CILEN_MPPE);
- BCOPY(mppe_recv_key, &opt_buf[CILEN_MPPE], MPPE_MAX_KEY_LEN);
- res = ccp_test(f->unit, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0);
-- if (res > 0)
-+ if (res > 0) {
- p += CILEN_MPPE;
-- else
-+ } else {
- /* This shouldn't happen, we've already tested it! */
-- lcp_close(f->unit, "MPPE required but not available in kernel");
-+ go->mppe = go->mppe_40 = go->mppe_56 = go->mppe_128 =
-+ go->mppe_stateless = go->mppc = 0;
-+ if (ccp_wantoptions[f->unit].mppe)
-+ lcp_close(f->unit, "MPPE required but not available in kernel");
-+ }
-+ }
-+#endif /* MPPE */
-+ if (go->lzs) {
-+ p[0] = CI_LZS;
-+ p[1] = CILEN_LZS;
-+ p[2] = go->lzs_hists >> 8;
-+ p[3] = go->lzs_hists & 0xff;
-+ p[4] = LZS_MODE_SEQ;
-+ res = ccp_test(f->unit, p, CILEN_LZS, 0);
-+ if (res > 0) {
-+ p += CILEN_LZS;
-+ } else
-+ go->lzs = 0;
- }
--#endif
- if (go->deflate) {
- p[0] = go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT;
- p[1] = CILEN_DEFLATE;
-@@ -802,7 +961,7 @@
-
- /*
- * ccp_ackci - process a received configure-ack, and return
-- * 1 iff the packet was OK.
-+ * 1 if the packet was OK.
- */
- static int
- ccp_ackci(f, p, len)
-@@ -811,24 +970,44 @@
- int len;
- {
- ccp_options *go = &ccp_gotoptions[f->unit];
-+ ccp_options *ao = &ccp_allowoptions[f->unit];
-+ ccp_options *wo = &ccp_wantoptions[f->unit];
- u_char *p0 = p;
-
- #ifdef MPPE
-- if (go->mppe) {
-- u_char opt_buf[CILEN_MPPE];
--
-- opt_buf[0] = CI_MPPE;
-- opt_buf[1] = CILEN_MPPE;
-- MPPE_OPTS_TO_CI(go->mppe, &opt_buf[2]);
-- if (len < CILEN_MPPE || memcmp(opt_buf, p, CILEN_MPPE))
-+ if (go->mppe || go->mppc || (!wo->mppe && ao->mppe)) {
-+ if (len < CILEN_MPPE
-+ || p[1] != CILEN_MPPE || p[0] != CI_MPPE
-+ || p[2] != (go->mppe_stateless ? MPPE_STATELESS : 0)
-+ || p[3] != 0
-+ || p[4] != 0
-+ || (p[5] != ((go->mppe_40 ? MPPE_40BIT : 0) |
-+ (go->mppc ? MPPE_MPPC : 0))
-+ && p[5] != ((go->mppe_56 ? MPPE_56BIT : 0) |
-+ (go->mppc ? MPPE_MPPC : 0))
-+ && p[5] != ((go->mppe_128 ? MPPE_128BIT : 0) |
-+ (go->mppc ? MPPE_MPPC : 0))))
- return 0;
-+ if (go->mppe_40 || go->mppe_56 || go->mppe_128)
-+ go->mppe = 1;
- p += CILEN_MPPE;
- len -= CILEN_MPPE;
-+ /* Cope with first/fast ack */
-+ if (p == p0 && len == 0)
-+ return 1;
-+ }
-+#endif /* MPPE */
-+ if (go->lzs) {
-+ if (len < CILEN_LZS || p[0] != CI_LZS || p[1] != CILEN_LZS
-+ || p[2] != go->lzs_hists>>8 || p[3] != (go->lzs_hists&0xff)
-+ || p[4] != LZS_MODE_SEQ)
-+ return 0;
-+ p += CILEN_LZS;
-+ len -= CILEN_LZS;
- /* XXX Cope with first/fast ack */
-- if (len == 0)
-+ if (p == p0 && len == 0)
- return 1;
- }
--#endif
- if (go->deflate) {
- if (len < CILEN_DEFLATE
- || p[0] != (go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT)
-@@ -891,7 +1070,7 @@
-
- /*
- * ccp_nakci - process received configure-nak.
-- * Returns 1 iff the nak was OK.
-+ * Returns 1 if the nak was OK.
- */
- static int
- ccp_nakci(f, p, len, treat_as_reject)
-@@ -900,6 +1079,8 @@
- int len;
- {
- ccp_options *go = &ccp_gotoptions[f->unit];
-+ ccp_options *ao = &ccp_allowoptions[f->unit];
-+ ccp_options *wo = &ccp_wantoptions[f->unit];
- ccp_options no; /* options we've seen already */
- ccp_options try; /* options to ask for next time */
-
-@@ -907,28 +1088,100 @@
- try = *go;
-
- #ifdef MPPE
-- if (go->mppe && len >= CILEN_MPPE
-- && p[0] == CI_MPPE && p[1] == CILEN_MPPE) {
-- no.mppe = 1;
-- /*
-- * Peer wants us to use a different strength or other setting.
-- * Fail if we aren't willing to use his suggestion.
-- */
-- MPPE_CI_TO_OPTS(&p[2], try.mppe);
-- if ((try.mppe & MPPE_OPT_STATEFUL) && refuse_mppe_stateful) {
-- error("Refusing MPPE stateful mode offered by peer");
-- try.mppe = 0;
-- } else if (((go->mppe | MPPE_OPT_STATEFUL) & try.mppe) != try.mppe) {
-- /* Peer must have set options we didn't request (suggest) */
-- try.mppe = 0;
-- }
-+ if ((go->mppe || go->mppc || (!wo->mppe && ao->mppe)) &&
-+ len >= CILEN_MPPE && p[0] == CI_MPPE && p[1] == CILEN_MPPE) {
-
-- if (!try.mppe) {
-- error("MPPE required but peer negotiation failed");
-- lcp_close(f->unit, "MPPE required but peer negotiation failed");
-+ if (go->mppc) {
-+ no.mppc = 1;
-+ if (!(p[5] & MPPE_MPPC))
-+ try.mppc = 0;
-+ }
-+
-+ if (go->mppe)
-+ no.mppe = 1;
-+ if (go->mppe_40)
-+ no.mppe_40 = 1;
-+ if (go->mppe_56)
-+ no.mppe_56 = 1;
-+ if (go->mppe_128)
-+ no.mppe_128 = 1;
-+ if (go->mppe_stateless)
-+ no.mppe_stateless = 1;
-+
-+ if (ao->mppe_40) {
-+ if ((p[5] & MPPE_40BIT))
-+ try.mppe_40 = 1;
-+ else
-+ try.mppe_40 = (p[5] == 0) ? 1 : 0;
-+ }
-+ if (ao->mppe_56) {
-+ if ((p[5] & MPPE_56BIT))
-+ try.mppe_56 = 1;
-+ else
-+ try.mppe_56 = (p[5] == 0) ? 1 : 0;
-+ }
-+ if (ao->mppe_128) {
-+ if ((p[5] & MPPE_128BIT))
-+ try.mppe_128 = 1;
-+ else
-+ try.mppe_128 = (p[5] == 0) ? 1 : 0;
-+ }
-+
-+ if (ao->mppe_stateless) {
-+ if ((p[2] & MPPE_STATELESS) || wo->mppe_stateless)
-+ try.mppe_stateless = 1;
-+ else
-+ try.mppe_stateless = 0;
-+ }
-+
-+ if (!try.mppe_56 && !try.mppe_40 && !try.mppe_128) {
-+ try.mppe = try.mppe_stateless = 0;
-+ if (wo->mppe) {
-+ /* we require encryption, but peer doesn't support it
-+ so we close connection */
-+ wo->mppc = wo->mppe = wo->mppe_stateless = wo->mppe_40 =
-+ wo->mppe_56 = wo->mppe_128 = 0;
-+ lcp_close(f->unit, "MPPE required but cannot negotiate MPPE "
-+ "key length");
-+ }
-+ }
-+ if (wo->mppe && (wo->mppe_40 != try.mppe_40) &&
-+ (wo->mppe_56 != try.mppe_56) && (wo->mppe_128 != try.mppe_128)) {
-+ /* cannot negotiate key length */
-+ wo->mppc = wo->mppe = wo->mppe_stateless = wo->mppe_40 =
-+ wo->mppe_56 = wo->mppe_128 = 0;
-+ lcp_close(f->unit, "Cannot negotiate MPPE key length");
- }
-+ if (try.mppe_40 && try.mppe_56 && try.mppe_128)
-+ try.mppe_40 = try.mppe_56 = 0;
-+ else
-+ if (try.mppe_56 && try.mppe_128)
-+ try.mppe_56 = 0;
-+ else
-+ if (try.mppe_40 && try.mppe_128)
-+ try.mppe_40 = 0;
-+ else
-+ if (try.mppe_40 && try.mppe_56)
-+ try.mppe_40 = 0;
-+
-+ p += CILEN_MPPE;
-+ len -= CILEN_MPPE;
- }
- #endif /* MPPE */
-+
-+ if (go->lzs && len >= CILEN_LZS && p[0] == CI_LZS && p[1] == CILEN_LZS) {
-+ no.lzs = 1;
-+ if (((p[2]<<8)|p[3]) > 1 || (p[4] != LZS_MODE_SEQ &&
-+ p[4] != LZS_MODE_EXT))
-+ try.lzs = 0;
-+ else {
-+ try.lzs_mode = p[4];
-+ try.lzs_hists = (p[2] << 8) | p[3];
-+ }
-+ p += CILEN_LZS;
-+ len -= CILEN_LZS;
-+ }
-+
- if (go->deflate && len >= CILEN_DEFLATE
- && p[0] == (go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT)
- && p[1] == CILEN_DEFLATE) {
-@@ -1001,14 +1254,50 @@
- return -1;
-
- #ifdef MPPE
-- if (go->mppe && len >= CILEN_MPPE
-+ if ((go->mppe || go->mppc) && len >= CILEN_MPPE
- && p[0] == CI_MPPE && p[1] == CILEN_MPPE) {
-- error("MPPE required but peer refused");
-- lcp_close(f->unit, "MPPE required but peer refused");
-+ ccp_options *wo = &ccp_wantoptions[f->unit];
-+ if (p[2] != (go->mppe_stateless ? MPPE_STATELESS : 0) ||
-+ p[3] != 0 ||
-+ p[4] != 0 ||
-+ p[5] != ((go->mppe_40 ? MPPE_40BIT : 0) |
-+ (go->mppe_56 ? MPPE_56BIT : 0) |
-+ (go->mppe_128 ? MPPE_128BIT : 0) |
-+ (go->mppc ? MPPE_MPPC : 0)))
-+ return 0;
-+ if (go->mppc)
-+ try.mppc = 0;
-+ if (go->mppe) {
-+ try.mppe = 0;
-+ if (go->mppe_40)
-+ try.mppe_40 = 0;
-+ if (go->mppe_56)
-+ try.mppe_56 = 0;
-+ if (go->mppe_128)
-+ try.mppe_128 = 0;
-+ if (go->mppe_stateless)
-+ try.mppe_stateless = 0;
-+ if (!try.mppe_56 && !try.mppe_40 && !try.mppe_128)
-+ try.mppe = try.mppe_stateless = 0;
-+ if (wo->mppe) { /* we want MPPE but cannot negotiate key length */
-+ wo->mppc = wo->mppe = wo->mppe_stateless = wo->mppe_40 =
-+ wo->mppe_56 = wo->mppe_128 = 0;
-+ lcp_close(f->unit, "MPPE required but cannot negotiate MPPE "
-+ "key length");
-+ }
-+ }
- p += CILEN_MPPE;
- len -= CILEN_MPPE;
- }
--#endif
-+#endif /* MPPE */
-+ if (go->lzs && len >= CILEN_LZS && p[0] == CI_LZS && p[1] == CILEN_LZS) {
-+ if (p[2] != go->lzs_hists>>8 || p[3] != (go->lzs_hists&0xff)
-+ || p[4] != go->lzs_mode)
-+ return 0;
-+ try.lzs = 0;
-+ p += CILEN_LZS;
-+ len -= CILEN_LZS;
-+ }
- if (go->deflate_correct && len >= CILEN_DEFLATE
- && p[0] == CI_DEFLATE && p[1] == CILEN_DEFLATE) {
- if (p[2] != DEFLATE_MAKE_OPT(go->deflate_size)
-@@ -1072,14 +1361,15 @@
- int dont_nak;
- {
- int ret, newret, res;
-- u_char *p0, *retp;
-+ u_char *p0, *retp, p2, p5;
- int len, clen, type, nb;
- ccp_options *ho = &ccp_hisoptions[f->unit];
- ccp_options *ao = &ccp_allowoptions[f->unit];
-+ ccp_options *wo = &ccp_wantoptions[f->unit];
- #ifdef MPPE
-- bool rej_for_ci_mppe = 1; /* Are we rejecting based on a bad/missing */
-- /* CI_MPPE, or due to other options? */
--#endif
-+ u_char opt_buf[CILEN_MPPE + MPPE_MAX_KEY_LEN];
-+/* int mtu; */
-+#endif /* MPPE */
-
- ret = CONFACK;
- retp = p0 = p;
-@@ -1102,103 +1392,305 @@
- switch (type) {
- #ifdef MPPE
- case CI_MPPE:
-- if (!ao->mppe || clen != CILEN_MPPE) {
-+ if ((!ao->mppc && !ao->mppe) || clen != CILEN_MPPE) {
- newret = CONFREJ;
- break;
- }
-- MPPE_CI_TO_OPTS(&p[2], ho->mppe);
-
-- /* Nak if anything unsupported or unknown are set. */
-- if (ho->mppe & MPPE_OPT_UNSUPPORTED) {
-- newret = CONFNAK;
-- ho->mppe &= ~MPPE_OPT_UNSUPPORTED;
-- }
-- if (ho->mppe & MPPE_OPT_UNKNOWN) {
-+ p2 = p[2];
-+ p5 = p[5];
-+ /* not sure what they want, tell 'em what we got */
-+ if (((p[2] & ~MPPE_STATELESS) != 0 || p[3] != 0 || p[4] != 0 ||
-+ (p[5] & ~(MPPE_40BIT | MPPE_56BIT | MPPE_128BIT |
-+ MPPE_MPPC)) != 0 || p[5] == 0) ||
-+ (p[2] == 0 && p[3] == 0 && p[4] == 0 && p[5] == 0)) {
- newret = CONFNAK;
-- ho->mppe &= ~MPPE_OPT_UNKNOWN;
-+ p[2] = (wo->mppe_stateless ? MPPE_STATELESS : 0);
-+ p[3] = 0;
-+ p[4] = 0;
-+ p[5] = (wo->mppe_40 ? MPPE_40BIT : 0) |
-+ (wo->mppe_56 ? MPPE_56BIT : 0) |
-+ (wo->mppe_128 ? MPPE_128BIT : 0) |
-+ (wo->mppc ? MPPE_MPPC : 0);
-+ break;
- }
-
-- /* Check state opt */
-- if (ho->mppe & MPPE_OPT_STATEFUL) {
-- /*
-- * We can Nak and request stateless, but it's a
-- * lot easier to just assume the peer will request
-- * it if he can do it; stateful mode is bad over
-- * the Internet -- which is where we expect MPPE.
-- */
-- if (refuse_mppe_stateful) {
-- error("Refusing MPPE stateful mode offered by peer");
-+ if ((p[5] & MPPE_MPPC)) {
-+ if (ao->mppc) {
-+ ho->mppc = 1;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ opt_buf[2] = opt_buf[3] = opt_buf[4] = 0;
-+ opt_buf[5] = MPPE_MPPC;
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE, 1) <= 0) {
-+ ho->mppc = 0;
-+ p[5] &= ~MPPE_MPPC;
-+ newret = CONFNAK;
-+ }
-+ } else {
- newret = CONFREJ;
-- break;
-+ if (wo->mppe || ao->mppe) {
-+ p[5] &= ~MPPE_MPPC;
-+ newret = CONFNAK;
-+ }
-+ }
-+ }
-+
-+ if (ao->mppe)
-+ ho->mppe = 1;
-+
-+ if ((p[2] & MPPE_STATELESS)) {
-+ if (ao->mppe_stateless) {
-+ if (wo->mppe_stateless)
-+ ho->mppe_stateless = 1;
-+ else {
-+ newret = CONFNAK;
-+ if (!dont_nak)
-+ p[2] &= ~MPPE_STATELESS;
-+ }
-+ } else {
-+ newret = CONFNAK;
-+ if (!dont_nak)
-+ p[2] &= ~MPPE_STATELESS;
-+ }
-+ } else {
-+ if (wo->mppe_stateless && !dont_nak) {
-+ wo->mppe_stateless = 0;
-+ newret = CONFNAK;
-+ p[2] |= MPPE_STATELESS;
- }
- }
-
-- /* Find out which of {S,L} are set. */
-- if ((ho->mppe & MPPE_OPT_128)
-- && (ho->mppe & MPPE_OPT_40)) {
-- /* Both are set, negotiate the strongest. */
-+ if ((p[5] & ~MPPE_MPPC) == (MPPE_40BIT|MPPE_56BIT|MPPE_128BIT)) {
- newret = CONFNAK;
-- if (ao->mppe & MPPE_OPT_128)
-- ho->mppe &= ~MPPE_OPT_40;
-- else if (ao->mppe & MPPE_OPT_40)
-- ho->mppe &= ~MPPE_OPT_128;
-- else {
-- newret = CONFREJ;
-- break;
-+ if (ao->mppe_128) {
-+ ho->mppe_128 = 1;
-+ p[5] &= ~(MPPE_40BIT|MPPE_56BIT);
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_128 = 0;
-+ p[5] |= (MPPE_40BIT|MPPE_56BIT);
-+ p[5] &= ~MPPE_128BIT;
-+ goto check_mppe_56_40;
-+ }
-+ goto check_mppe;
- }
-- } else if (ho->mppe & MPPE_OPT_128) {
-- if (!(ao->mppe & MPPE_OPT_128)) {
-- newret = CONFREJ;
-- break;
-+ p[5] &= ~MPPE_128BIT;
-+ goto check_mppe_56_40;
-+ }
-+ if ((p[5] & ~MPPE_MPPC) == (MPPE_56BIT|MPPE_128BIT)) {
-+ newret = CONFNAK;
-+ if (ao->mppe_128) {
-+ ho->mppe_128 = 1;
-+ p[5] &= ~MPPE_56BIT;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_128 = 0;
-+ p[5] |= MPPE_56BIT;
-+ p[5] &= ~MPPE_128BIT;
-+ goto check_mppe_56;
-+ }
-+ goto check_mppe;
- }
-- } else if (ho->mppe & MPPE_OPT_40) {
-- if (!(ao->mppe & MPPE_OPT_40)) {
-- newret = CONFREJ;
-- break;
-+ p[5] &= ~MPPE_128BIT;
-+ goto check_mppe_56;
-+ }
-+ if ((p[5] & ~MPPE_MPPC) == (MPPE_40BIT|MPPE_128BIT)) {
-+ newret = CONFNAK;
-+ if (ao->mppe_128) {
-+ ho->mppe_128 = 1;
-+ p[5] &= ~MPPE_40BIT;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_128 = 0;
-+ p[5] |= MPPE_40BIT;
-+ p[5] &= ~MPPE_128BIT;
-+ goto check_mppe_40;
-+ }
-+ goto check_mppe;
-+ }
-+ p[5] &= ~MPPE_128BIT;
-+ goto check_mppe_40;
-+ }
-+ if ((p[5] & ~MPPE_MPPC) == MPPE_128BIT) {
-+ if (ao->mppe_128) {
-+ ho->mppe_128 = 1;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_128 = 0;
-+ p[5] &= ~MPPE_128BIT;
-+ newret = CONFNAK;
-+ }
-+ goto check_mppe;
-+ }
-+ p[5] &= ~MPPE_128BIT;
-+ newret = CONFNAK;
-+ goto check_mppe;
-+ }
-+ check_mppe_56_40:
-+ if ((p[5] & ~MPPE_MPPC) == (MPPE_40BIT|MPPE_56BIT)) {
-+ newret = CONFNAK;
-+ if (ao->mppe_56) {
-+ ho->mppe_56 = 1;
-+ p[5] &= ~MPPE_40BIT;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_56 = 0;
-+ p[5] |= MPPE_40BIT;
-+ p[5] &= ~MPPE_56BIT;
-+ newret = CONFNAK;
-+ goto check_mppe_40;
-+ }
-+ goto check_mppe;
-+ }
-+ p[5] &= ~MPPE_56BIT;
-+ goto check_mppe_40;
-+ }
-+ check_mppe_56:
-+ if ((p[5] & ~MPPE_MPPC) == MPPE_56BIT) {
-+ if (ao->mppe_56) {
-+ ho->mppe_56 = 1;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_56 = 0;
-+ p[5] &= ~MPPE_56BIT;
-+ newret = CONFNAK;
-+ }
-+ goto check_mppe;
-+ }
-+ p[5] &= ~MPPE_56BIT;
-+ newret = CONFNAK;
-+ goto check_mppe;
-+ }
-+ check_mppe_40:
-+ if ((p[5] & ~MPPE_MPPC) == MPPE_40BIT) {
-+ if (ao->mppe_40) {
-+ ho->mppe_40 = 1;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_40 = 0;
-+ p[5] &= ~MPPE_40BIT;
-+ newret = CONFNAK;
-+ }
-+ goto check_mppe;
-+ }
-+ p[5] &= ~MPPE_40BIT;
-+ }
-+
-+ check_mppe:
-+ if (!ho->mppe_40 && !ho->mppe_56 && !ho->mppe_128) {
-+ if (wo->mppe_40 || wo->mppe_56 || wo->mppe_128) {
-+ newret = CONFNAK;
-+ p[2] |= (wo->mppe_stateless ? MPPE_STATELESS : 0);
-+ p[5] |= (wo->mppe_40 ? MPPE_40BIT : 0) |
-+ (wo->mppe_56 ? MPPE_56BIT : 0) |
-+ (wo->mppe_128 ? MPPE_128BIT : 0) |
-+ (wo->mppc ? MPPE_MPPC : 0);
-+ } else {
-+ ho->mppe = ho->mppe_stateless = 0;
- }
- } else {
-- /* Neither are set. */
-+ /* MPPE is not compatible with other compression types */
-+ if (wo->mppe) {
-+ ao->bsd_compress = 0;
-+ ao->predictor_1 = 0;
-+ ao->predictor_2 = 0;
-+ ao->deflate = 0;
-+ ao->lzs = 0;
-+ }
-+ }
-+ if ((!ho->mppc || !ao->mppc) && !ho->mppe) {
-+ p[2] = p2;
-+ p[5] = p5;
- newret = CONFREJ;
- break;
- }
-
-- /* rebuild the opts */
-- MPPE_OPTS_TO_CI(ho->mppe, &p[2]);
-- if (newret == CONFACK) {
-- u_char opt_buf[CILEN_MPPE + MPPE_MAX_KEY_LEN];
-- int mtu;
--
-- BCOPY(p, opt_buf, CILEN_MPPE);
-- BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-- MPPE_MAX_KEY_LEN);
-- if (ccp_test(f->unit, opt_buf,
-- CILEN_MPPE + MPPE_MAX_KEY_LEN, 1) <= 0) {
-- /* This shouldn't happen, we've already tested it! */
-- error("MPPE required, but kernel has no support.");
-- lcp_close(f->unit, "MPPE required but not available");
-- newret = CONFREJ;
-- break;
-- }
-- /*
-- * We need to decrease the interface MTU by MPPE_PAD
-- * because MPPE frames **grow**. The kernel [must]
-- * allocate MPPE_PAD extra bytes in xmit buffers.
-- */
-- mtu = netif_get_mtu(f->unit);
-- if (mtu)
-- netif_set_mtu(f->unit, mtu - MPPE_PAD);
-- else
-- newret = CONFREJ;
-- }
-+ /*
-+ * I have commented the code below because according to RFC1547
-+ * MTU is only information for higher level protocols about
-+ * "the maximum allowable length for a packet (q.v.) transmitted
-+ * over a point-to-point link without incurring network layer
-+ * fragmentation." Of course a PPP implementation should be able
-+ * to handle overhead added by MPPE - in our case apropriate code
-+ * is located in drivers/net/ppp_generic.c in the kernel sources.
-+ *
-+ * According to RFC1661:
-+ * - when negotiated MRU is less than 1500 octets, a PPP
-+ * implementation must still be able to receive at least 1500
-+ * octets,
-+ * - when PFC is negotiated, a PPP implementation is still
-+ * required to receive frames with uncompressed protocol field.
-+ *
-+ * So why not to handle MPPE overhead without changing MTU value?
-+ * I am sure that RFC3078, unfortunately silently, assumes that.
-+ */
-
- /*
-- * We have accepted MPPE or are willing to negotiate
-- * MPPE parameters. A CONFREJ is due to subsequent
-- * (non-MPPE) processing.
-+ * We need to decrease the interface MTU by MPPE_PAD
-+ * because MPPE frames **grow**. The kernel [must]
-+ * allocate MPPE_PAD extra bytes in xmit buffers.
- */
-- rej_for_ci_mppe = 0;
-+/*
-+ mtu = netif_get_mtu(f->unit);
-+ if (mtu) {
-+ netif_set_mtu(f->unit, mtu - MPPE_PAD);
-+ } else {
-+ newret = CONFREJ;
-+ if (ccp_wantoptions[f->unit].mppe) {
-+ error("Cannot adjust MTU needed by MPPE.");
-+ lcp_close(f->unit, "Cannot adjust MTU needed by MPPE.");
-+ }
-+ }
-+*/
- break;
- #endif /* MPPE */
-+
-+ case CI_LZS:
-+ if (!ao->lzs || clen != CILEN_LZS) {
-+ newret = CONFREJ;
-+ break;
-+ }
-+
-+ ho->lzs = 1;
-+ ho->lzs_hists = (p[2] << 8) | p[3];
-+ ho->lzs_mode = p[4];
-+ if ((ho->lzs_hists != ao->lzs_hists) ||
-+ (ho->lzs_mode != ao->lzs_mode)) {
-+ newret = CONFNAK;
-+ if (!dont_nak) {
-+ p[2] = ao->lzs_hists >> 8;
-+ p[3] = ao->lzs_hists & 0xff;
-+ p[4] = ao->lzs_mode;
-+ } else
-+ break;
-+ }
-+
-+ if (p == p0 && ccp_test(f->unit, p, CILEN_LZS, 1) <= 0) {
-+ newret = CONFREJ;
-+ }
-+ break;
-+
- case CI_DEFLATE:
- case CI_DEFLATE_DRAFT:
- if (!ao->deflate || clen != CILEN_DEFLATE
-@@ -1340,12 +1832,6 @@
- else
- *lenp = retp - p0;
- }
--#ifdef MPPE
-- if (ret == CONFREJ && ao->mppe && rej_for_ci_mppe) {
-- error("MPPE required but peer negotiation failed");
-- lcp_close(f->unit, "MPPE required but peer negotiation failed");
-- }
--#endif
- return ret;
- }
-
-@@ -1367,24 +1853,35 @@
- char *p = result;
- char *q = result + sizeof(result); /* 1 past result */
-
-- slprintf(p, q - p, "MPPE ");
-- p += 5;
-- if (opt->mppe & MPPE_OPT_128) {
-- slprintf(p, q - p, "128-bit ");
-- p += 8;
-- }
-- if (opt->mppe & MPPE_OPT_40) {
-- slprintf(p, q - p, "40-bit ");
-- p += 7;
-- }
-- if (opt->mppe & MPPE_OPT_STATEFUL)
-- slprintf(p, q - p, "stateful");
-- else
-- slprintf(p, q - p, "stateless");
--
-+ if (opt->mppe) {
-+ if (opt->mppc) {
-+ slprintf(p, q - p, "MPPC/MPPE ");
-+ p += 10;
-+ } else {
-+ slprintf(p, q - p, "MPPE ");
-+ p += 5;
-+ }
-+ if (opt->mppe_128) {
-+ slprintf(p, q - p, "128-bit ");
-+ p += 8;
-+ } else if (opt->mppe_56) {
-+ slprintf(p, q - p, "56-bit ");
-+ p += 7;
-+ } else if (opt->mppe_40) {
-+ slprintf(p, q - p, "40-bit ");
-+ p += 7;
-+ }
-+ if (opt->mppe_stateless)
-+ slprintf(p, q - p, "stateless");
-+ else
-+ slprintf(p, q - p, "stateful");
-+ } else if (opt->mppc)
-+ slprintf(p, q - p, "MPPC");
- break;
- }
--#endif
-+#endif /* MPPE */
-+ case CI_LZS:
-+ return "Stac LZS";
- case CI_DEFLATE:
- case CI_DEFLATE_DRAFT:
- if (opt2 != NULL && opt2->deflate_size != opt->deflate_size)
-@@ -1440,12 +1937,12 @@
- } else if (ANY_COMPRESS(*ho))
- notice("%s transmit compression enabled", method_name(ho, NULL));
- #ifdef MPPE
-- if (go->mppe) {
-+ if (go->mppe || go->mppc) {
- BZERO(mppe_recv_key, MPPE_MAX_KEY_LEN);
- BZERO(mppe_send_key, MPPE_MAX_KEY_LEN);
- continue_networks(f->unit); /* Bring up IP et al */
- }
--#endif
-+#endif /* MPPE */
- }
-
- /*
-@@ -1468,7 +1965,7 @@
- lcp_close(f->unit, "MPPE disabled");
- }
- }
--#endif
-+#endif /* MPPE */
- }
-
- /*
-@@ -1528,24 +2025,28 @@
- #ifdef MPPE
- case CI_MPPE:
- if (optlen >= CILEN_MPPE) {
-- u_char mppe_opts;
--
-- MPPE_CI_TO_OPTS(&p[2], mppe_opts);
-- printer(arg, "mppe %s %s %s %s %s %s%s",
-- (p[2] & MPPE_H_BIT)? "+H": "-H",
-- (p[5] & MPPE_M_BIT)? "+M": "-M",
-- (p[5] & MPPE_S_BIT)? "+S": "-S",
-- (p[5] & MPPE_L_BIT)? "+L": "-L",
-+ printer(arg, "mppe %s %s %s %s %s %s",
-+ (p[2] & MPPE_STATELESS)? "+H": "-H",
-+ (p[5] & MPPE_56BIT)? "+M": "-M",
-+ (p[5] & MPPE_128BIT)? "+S": "-S",
-+ (p[5] & MPPE_40BIT)? "+L": "-L",
- (p[5] & MPPE_D_BIT)? "+D": "-D",
-- (p[5] & MPPE_C_BIT)? "+C": "-C",
-- (mppe_opts & MPPE_OPT_UNKNOWN)? " +U": "");
-- if (mppe_opts & MPPE_OPT_UNKNOWN)
-+ (p[5] & MPPE_MPPC)? "+C": "-C");
-+ if ((p[5] & ~(MPPE_56BIT | MPPE_128BIT | MPPE_40BIT |
-+ MPPE_D_BIT | MPPE_MPPC)) ||
-+ (p[2] & ~MPPE_STATELESS))
- printer(arg, " (%.2x %.2x %.2x %.2x)",
- p[2], p[3], p[4], p[5]);
- p += CILEN_MPPE;
- }
- break;
--#endif
-+#endif /* MPPE */
-+ case CI_LZS:
-+ if (optlen >= CILEN_LZS) {
-+ printer(arg, "lzs %.2x %.2x %.2x", p[2], p[3], p[4]);
-+ p += CILEN_LZS;
-+ }
-+ break;
- case CI_DEFLATE:
- case CI_DEFLATE_DRAFT:
- if (optlen >= CILEN_DEFLATE) {
-@@ -1631,6 +2132,7 @@
- error("Lost compression sync: disabling compression");
- ccp_close(unit, "Lost compression sync");
- #ifdef MPPE
-+ /* My module dosn't need this. J.D., 2003-07-06 */
- /*
- * If we were doing MPPE, we must also take the link down.
- */
-@@ -1638,9 +2140,18 @@
- error("Too many MPPE errors, closing LCP");
- lcp_close(unit, "Too many MPPE errors");
- }
--#endif
-+#endif /* MPPE */
- } else {
- /*
-+ * When LZS or MPPE/MPPC is negotiated we just send CCP_RESETREQ
-+ * and don't wait for CCP_RESETACK
-+ */
-+ if ((ccp_gotoptions[f->unit].method == CI_LZS) ||
-+ (ccp_gotoptions[f->unit].method == CI_MPPE)) {
-+ fsm_sdata(f, CCP_RESETREQ, f->reqid = ++f->id, NULL, 0);
-+ return;
-+ }
-+ /*
- * Send a reset-request to reset the peer's compressor.
- * We don't do that if we are still waiting for an
- * acknowledgement to a previous reset-request.
-@@ -1671,4 +2182,3 @@
- } else
- ccp_localstate[f->unit] &= ~RACK_PENDING;
- }
--
-diff -ruN ppp-2.4.3.orig/pppd/ccp.h ppp-2.4.3/pppd/ccp.h
---- ppp-2.4.3.orig/pppd/ccp.h 2004-11-04 11:02:26.000000000 +0100
-+++ ppp-2.4.3/pppd/ccp.h 2004-11-21 13:54:09.000000000 +0100
-@@ -37,9 +37,17 @@
- bool predictor_2; /* do Predictor-2? */
- bool deflate_correct; /* use correct code for deflate? */
- bool deflate_draft; /* use draft RFC code for deflate? */
-+ bool lzs; /* do Stac LZS? */
-+ bool mppc; /* do MPPC? */
- bool mppe; /* do MPPE? */
-+ bool mppe_40; /* allow 40 bit encryption? */
-+ bool mppe_56; /* allow 56 bit encryption? */
-+ bool mppe_128; /* allow 128 bit encryption? */
-+ bool mppe_stateless; /* allow stateless encryption */
- u_short bsd_bits; /* # bits/code for BSD Compress */
- u_short deflate_size; /* lg(window size) for Deflate */
-+ u_short lzs_mode; /* LZS check mode */
-+ u_short lzs_hists; /* number of LZS histories */
- short method; /* code for chosen compression method */
- } ccp_options;
-
-diff -ruN ppp-2.4.3.orig/pppd/chap_ms.c ppp-2.4.3/pppd/chap_ms.c
---- ppp-2.4.3.orig/pppd/chap_ms.c 2004-11-12 10:57:43.000000000 +0100
-+++ ppp-2.4.3/pppd/chap_ms.c 2004-11-21 13:54:09.000000000 +0100
-@@ -895,13 +895,17 @@
- /*
- * Disable undesirable encryption types. Note that we don't ENABLE
- * any encryption types, to avoid overriding manual configuration.
-+ *
-+ * It seems that 56 bit keys are unsupported in MS-RADIUS (see RFC 2548)
- */
- switch(types) {
- case MPPE_ENC_TYPES_RC4_40:
-- ccp_wantoptions[0].mppe &= ~MPPE_OPT_128; /* disable 128-bit */
-+ ccp_wantoptions[0].mppe_128 = 0; /* disable 128-bit */
-+ ccp_wantoptions[0].mppe_56 = 0; /* disable 56-bit */
- break;
- case MPPE_ENC_TYPES_RC4_128:
-- ccp_wantoptions[0].mppe &= ~MPPE_OPT_40; /* disable 40-bit */
-+ ccp_wantoptions[0].mppe_56 = 0; /* disable 56-bit */
-+ ccp_wantoptions[0].mppe_40 = 0; /* disable 40-bit */
- break;
- default:
- break;
-diff -ruN ppp-2.4.3.orig/pppd/pppd.8 ppp-2.4.3/pppd/pppd.8
---- ppp-2.4.3.orig/pppd/pppd.8 2004-11-13 13:22:49.000000000 +0100
-+++ ppp-2.4.3/pppd/pppd.8 2004-11-21 14:24:47.000000000 +0100
-@@ -622,9 +622,29 @@
- Enables the use of PPP multilink; this is an alias for the `multilink'
- option. This option is currently only available under Linux.
- .TP
--.B mppe\-stateful
--Allow MPPE to use stateful mode. Stateless mode is still attempted first.
--The default is to disallow stateful mode.
-+.B mppc
-+Enables MPPC (Microsoft Point to Point Compression). This is the default.
-+.TP
-+.B mppe \fIsubopt1[,subopt2[,subopt3[..]]]
-+Modify MPPE (Microsoft Point to Point Encryption) parameters. In order
-+for MPPE to successfully come up, you must have authenticated with either
-+MS-CHAP or MS-CHAPv2. By default MPPE is optional, it means that pppd will
-+not propose MPPE to the peer, but will negotiate MPPE if peer wants that.
-+You can change this using \fIrequired\fR suboption.
-+This option is presently only supported under Linux, and only if your
-+kernel has been configured to include MPPE support.
-+.IP
-+MPPE suboptions:
-+.br
-+\fIrequired\fR - require MPPE; disconnect if peer doesn't support it,
-+.br
-+\fIstateless\fR - try to negotiate stateless mode; default is stateful,
-+.br
-+\fIno40\fR - disable 40 bit keys,
-+.br
-+\fIno56\fR - disable 56 bit keys,
-+.br
-+\fIno128\fR - disable 128 bit keys
- .TP
- .B mpshortseq
- Enables the use of short (12-bit) sequence numbers in multilink
-@@ -757,17 +777,11 @@
- Disables the use of PPP multilink. This option is currently only
- available under Linux.
- .TP
--.B nomppe
--Disables MPPE (Microsoft Point to Point Encryption). This is the default.
--.TP
--.B nomppe\-40
--Disable 40-bit encryption with MPPE.
-+.B nomppc
-+Disables MPPC (Microsoft Point to Point Compression).
- .TP
--.B nomppe\-128
--Disable 128-bit encryption with MPPE.
--.TP
--.B nomppe\-stateful
--Disable MPPE stateful mode. This is the default.
-+.B nomppe
-+Disables MPPE (Microsoft Point to Point Encryption).
- .TP
- .B nompshortseq
- Disables the use of short (12-bit) sequence numbers in the PPP
-@@ -948,19 +962,6 @@
- Require the peer to authenticate itself using CHAP [Challenge
- Handshake Authentication Protocol] authentication.
- .TP
--.B require\-mppe
--Require the use of MPPE (Microsoft Point to Point Encryption). This
--option disables all other compression types. This option enables
--both 40-bit and 128-bit encryption. In order for MPPE to successfully
--come up, you must have authenticated with either MS\-CHAP or MS\-CHAPv2.
--This option is presently only supported under Linux, and only if your
--kernel has been configured to include MPPE support.
--.TP
--.B require\-mppe\-40
--Require the use of MPPE, with 40-bit encryption.
--.TP
--.B require\-mppe\-128
--Require the use of MPPE, with 128-bit encryption.
- .TP
- .B require\-mschap
- Require the peer to authenticate itself using MS\-CHAP [Microsoft Challenge
diff --git a/openwrt/package/ppp/patches/202-atm_fix.patch b/openwrt/package/ppp/patches/202-atm_fix.patch
deleted file mode 100644
index 40d9d595cf..0000000000
--- a/openwrt/package/ppp/patches/202-atm_fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ppp-2.4.3/pppd/plugins/pppoatm/pppoatm.c 2005-08-26 15:18:55.000000000 +0200
-+++ ppp-2.4.3/pppd/plugins/pppoatm/pppoatm.c 2005-08-26 15:19:51.000000000 +0200
-@@ -136,8 +136,6 @@
- int fd;
- struct atm_qos qos;
-
-- system ("/sbin/modprobe pppoatm");
--
- if (!device_got_set)
- no_device_given_pppoatm();
- fd = socket(AF_ATMPVC, SOCK_DGRAM, 0);
diff --git a/openwrt/package/ppp/patches/203-no_strip.patch b/openwrt/package/ppp/patches/203-no_strip.patch
deleted file mode 100644
index 216973cf59..0000000000
--- a/openwrt/package/ppp/patches/203-no_strip.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-diff -ruN ppp-2.4.3-orig/chat/Makefile.linux ppp-2.4.3-3/chat/Makefile.linux
---- ppp-2.4.3-orig/chat/Makefile.linux 2004-11-03 12:51:47.000000000 +0100
-+++ ppp-2.4.3-3/chat/Makefile.linux 2004-12-05 17:42:43.000000000 +0100
-@@ -25,7 +25,7 @@
-
- install: chat
- mkdir -p $(BINDIR)
-- $(INSTALL) -s -c chat $(BINDIR)
-+ $(INSTALL) -c chat $(BINDIR)
- $(INSTALL) -c -m 644 chat.8 $(MANDIR)
-
- clean:
-diff -ruN ppp-2.4.3-orig/pppd/Makefile.linux ppp-2.4.3-3/pppd/Makefile.linux
---- ppp-2.4.3-orig/pppd/Makefile.linux 2004-11-13 13:02:22.000000000 +0100
-+++ ppp-2.4.3-3/pppd/Makefile.linux 2004-12-16 04:43:41.000000000 +0100
-@@ -99,7 +99,7 @@
- CFLAGS += -DUSE_SRP -DOPENSSL -I/usr/local/ssl/include
- LIBS += -lsrp -L/usr/local/ssl/lib -lcrypto
- TARGETS += srp-entry
--EXTRAINSTALL = $(INSTALL) -s -c -m 555 srp-entry $(BINDIR)/srp-entry
-+EXTRAINSTALL = $(INSTALL) -c -m 555 srp-entry $(BINDIR)/srp-entry
- MANPAGES += srp-entry.8
- EXTRACLEAN += srp-entry.o
- NEEDDES=y
-@@ -202,7 +202,7 @@
- install: pppd
- mkdir -p $(BINDIR) $(MANDIR)
- $(EXTRAINSTALL)
-- $(INSTALL) -s -c -m 555 pppd $(BINDIR)/pppd
-+ $(INSTALL) -c -m 555 pppd $(BINDIR)/pppd
- if chgrp pppusers $(BINDIR)/pppd 2>/dev/null; then \
- chmod o-rx,u+s $(BINDIR)/pppd; fi
- $(INSTALL) -c -m 444 pppd.8 $(MANDIR)
-diff -ruN ppp-2.4.3-orig/pppd/plugins/radius/Makefile.linux ppp-2.4.3-3/pppd/plugins/radius/Makefile.linux
---- ppp-2.4.3-orig/pppd/plugins/radius/Makefile.linux 2004-11-14 08:02:31.000000000 +0100
-+++ ppp-2.4.3-3/pppd/plugins/radius/Makefile.linux 2004-12-05 17:43:17.000000000 +0100
-@@ -36,9 +37,9 @@
-
- install: all
- $(INSTALL) -d -m 755 $(LIBDIR)
-- $(INSTALL) -s -c -m 755 radius.so $(LIBDIR)
-- $(INSTALL) -s -c -m 755 radattr.so $(LIBDIR)
-- $(INSTALL) -s -c -m 755 radrealms.so $(LIBDIR)
-+ $(INSTALL) -c -m 755 radius.so $(LIBDIR)
-+ $(INSTALL) -c -m 755 radattr.so $(LIBDIR)
-+ $(INSTALL) -c -m 755 radrealms.so $(LIBDIR)
- $(INSTALL) -c -m 444 pppd-radius.8 $(MANDIR)
- $(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR)
-
-diff -ruN ppp-2.4.3-orig/pppd/plugins/rp-pppoe/Makefile.linux ppp-2.4.3-3/pppd/plugins/rp-pppoe/Makefile.linux
---- ppp-2.4.3-orig/pppd/plugins/rp-pppoe/Makefile.linux 2004-11-14 08:58:37.000000000 +0100
-+++ ppp-2.4.3-3/pppd/plugins/rp-pppoe/Makefile.linux 2004-12-05 17:43:23.000000000 +0100
-@@ -39,9 +39,9 @@
-
- install: all
- $(INSTALL) -d -m 755 $(LIBDIR)
-- $(INSTALL) -s -c -m 4550 rp-pppoe.so $(LIBDIR)
-+ $(INSTALL) -c -m 4550 rp-pppoe.so $(LIBDIR)
- $(INSTALL) -d -m 755 $(BINDIR)
-- $(INSTALL) -s -c -m 555 pppoe-discovery $(BINDIR)
-+ $(INSTALL) -c -m 555 pppoe-discovery $(BINDIR)
-
- clean:
- rm -f *.o *.so
-diff -ruN ppp-2.4.3-orig/pppdump/Makefile.linux ppp-2.4.3-3/pppdump/Makefile.linux
---- ppp-2.4.3-orig/pppdump/Makefile.linux 2004-10-31 02:36:52.000000000 +0200
-+++ ppp-2.4.3-3/pppdump/Makefile.linux 2004-12-05 17:50:34.000000000 +0100
-@@ -17,5 +18,5 @@
-
- install:
- mkdir -p $(BINDIR) $(MANDIR)
-- $(INSTALL) -s -c pppdump $(BINDIR)
-+ $(INSTALL) -c pppdump $(BINDIR)
- $(INSTALL) -c -m 444 pppdump.8 $(MANDIR)
-diff -ruN ppp-2.4.3-orig/pppstats/Makefile.linux ppp-2.4.3-3/pppstats/Makefile.linux
---- ppp-2.4.3-orig/pppstats/Makefile.linux 2004-10-31 23:09:03.000000000 +0100
-+++ ppp-2.4.3-3/pppstats/Makefile.linux 2004-12-05 17:43:38.000000000 +0100
-@@ -22,7 +22,7 @@
-
- install: pppstats
- -mkdir -p $(MANDIR)
-- $(INSTALL) -s -c pppstats $(BINDIR)
-+ $(INSTALL) -c pppstats $(BINDIR)
- $(INSTALL) -c -m 444 pppstats.8 $(MANDIR)
-
- pppstats: $(PPPSTATSRCS)
diff --git a/openwrt/package/ppp/patches/204-opt_flags.patch b/openwrt/package/ppp/patches/204-opt_flags.patch
deleted file mode 100644
index 200e76b5b5..0000000000
--- a/openwrt/package/ppp/patches/204-opt_flags.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -ruN ppp-2.4.3-orig/pppd/plugins/radius/Makefile.linux ppp-2.4.3-3/pppd/plugins/radius/Makefile.linux
---- ppp-2.4.3-orig/pppd/plugins/radius/Makefile.linux 2004-11-14 08:02:31.000000000 +0100
-+++ ppp-2.4.3-3/pppd/plugins/radius/Makefile.linux 2004-12-05 17:43:17.000000000 +0100
-@@ -12,7 +12,8 @@
- INSTALL = install
-
- PLUGIN=radius.so radattr.so radrealms.so
--CFLAGS=-I. -I../.. -I../../../include -O2 -fPIC -DRC_LOG_FACILITY=LOG_DAEMON
-+COPTS = -O2
-+CFLAGS=-I. -I../.. -I../../../include $(COPTS) -fPIC -DRC_LOG_FACILITY=LOG_DAEMON
-
- # Uncomment the next line to include support for Microsoft's
- # MS-CHAP authentication protocol.
-diff -ruN ppp-2.4.3-orig/pppdump/Makefile.linux ppp-2.4.3-3/pppdump/Makefile.linux
---- ppp-2.4.3-orig/pppdump/Makefile.linux 2004-10-31 02:36:52.000000000 +0200
-+++ ppp-2.4.3-3/pppdump/Makefile.linux 2004-12-05 17:50:34.000000000 +0100
-@@ -2,7 +2,8 @@
- BINDIR = $(DESTDIR)/sbin
- MANDIR = $(DESTDIR)/share/man/man8
-
--CFLAGS= -O -I../include/net
-+COPTS = -O
-+CFLAGS= $(COPTS) -I../include/net
- OBJS = pppdump.o bsd-comp.o deflate.o zlib.o
-
- INSTALL= install
diff --git a/openwrt/package/ppp/patches/205-pppoe_iface_name.patch b/openwrt/package/ppp/patches/205-pppoe_iface_name.patch
deleted file mode 100644
index 0961eca623..0000000000
--- a/openwrt/package/ppp/patches/205-pppoe_iface_name.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN ppp-2.4.3-orig/pppd/plugins/rp-pppoe/plugin.c ppp-2.4.3-3/pppd/plugins/rp-pppoe/plugin.c
---- ppp-2.4.3-orig/pppd/plugins/rp-pppoe/plugin.c 2004-11-04 11:07:37.000000000 +0100
-+++ ppp-2.4.3-3/pppd/plugins/rp-pppoe/plugin.c 2004-12-16 01:07:22.000000000 +0100
-@@ -286,7 +286,7 @@
- /* Strip off "nic-" */
- cmd += 4;
- } else if (strlen(cmd) < 4
-- || (strncmp(cmd, "eth", 3) && strncmp(cmd, "nas", 3)
-+ || (strncmp(cmd, "eth", 3) && strncmp(cmd, "nas", 3) && strncmp(cmd, "vlan", 4) && strncmp(cmd, "ath", 3)
- && strncmp(cmd, "tap", 3) && strncmp(cmd, "br", 2))) {
- return 0;
- }
diff --git a/openwrt/package/ppp/patches/206-radius_config.patch b/openwrt/package/ppp/patches/206-radius_config.patch
deleted file mode 100644
index 90c02af4c1..0000000000
--- a/openwrt/package/ppp/patches/206-radius_config.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-diff -ruN ppp-2.4.3-orig/pppd/plugins/radius/config.c ppp-2.4.3-3/pppd/plugins/radius/config.c
---- ppp-2.4.3-orig/pppd/plugins/radius/config.c 2004-11-14 08:26:26.000000000 +0100
-+++ ppp-2.4.3-3/pppd/plugins/radius/config.c 2004-12-16 04:03:46.000000000 +0100
-@@ -369,31 +369,37 @@
- }
- #endif
-
-+#if 0
- if (rc_conf_int("login_tries") <= 0)
- {
- error("%s: login_tries <= 0 is illegal", filename);
- return (-1);
- }
-+#endif
- if (rc_conf_str("seqfile") == NULL)
- {
- error("%s: seqfile not specified", filename);
- return (-1);
- }
-+#if 0
- if (rc_conf_int("login_timeout") <= 0)
- {
- error("%s: login_timeout <= 0 is illegal", filename);
- return (-1);
- }
-+#endif
- if (rc_conf_str("mapfile") == NULL)
- {
- error("%s: mapfile not specified", filename);
- return (-1);
- }
-+#if 0
- if (rc_conf_str("nologin") == NULL)
- {
- error("%s: nologin not specified", filename);
- return (-1);
- }
-+#endif
-
- return 0;
- }
-diff -ruN ppp-2.4.3-orig/pppd/plugins/radius/options.h ppp-2.4.3-3/pppd/plugins/radius/options.h
---- ppp-2.4.3-orig/pppd/plugins/radius/options.h 2004-11-14 08:26:26.000000000 +0100
-+++ ppp-2.4.3-3/pppd/plugins/radius/options.h 2004-12-16 04:09:16.000000000 +0100
-@@ -31,24 +31,21 @@
- static SERVER acctserver = {0};
- static SERVER authserver = {0};
-
--int default_tries = 4;
--int default_timeout = 60;
--
- static OPTION config_options[] = {
- /* internally used options */
- {"config_file", OT_STR, ST_UNDEF, NULL},
- /* General options */
- {"auth_order", OT_AUO, ST_UNDEF, NULL},
--{"login_tries", OT_INT, ST_UNDEF, &default_tries},
--{"login_timeout", OT_INT, ST_UNDEF, &default_timeout},
--{"nologin", OT_STR, ST_UNDEF, "/etc/nologin"},
--{"issue", OT_STR, ST_UNDEF, "/etc/radiusclient/issue"},
-+{"login_tries", OT_INT, ST_UNDEF, NULL},
-+{"login_timeout", OT_INT, ST_UNDEF, NULL},
-+{"nologin", OT_STR, ST_UNDEF, NULL},
-+{"issue", OT_STR, ST_UNDEF, NULL},
- /* RADIUS specific options */
- {"authserver", OT_SRV, ST_UNDEF, &authserver},
- {"acctserver", OT_SRV, ST_UNDEF, &acctserver},
- {"servers", OT_STR, ST_UNDEF, NULL},
- {"dictionary", OT_STR, ST_UNDEF, NULL},
--{"login_radius", OT_STR, ST_UNDEF, "/usr/sbin/login.radius"},
-+{"login_radius", OT_STR, ST_UNDEF, NULL},
- {"seqfile", OT_STR, ST_UNDEF, NULL},
- {"mapfile", OT_STR, ST_UNDEF, NULL},
- {"default_realm", OT_STR, ST_UNDEF, NULL},
diff --git a/openwrt/package/ppp/patches/207-ppp_reconnect.patch b/openwrt/package/ppp/patches/207-ppp_reconnect.patch
deleted file mode 100644
index 9311c9ef4e..0000000000
--- a/openwrt/package/ppp/patches/207-ppp_reconnect.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-diff -urN -x'*.swp' ppp.old/pppd/auth.c ppp.dev/pppd/auth.c
---- ppp.old/pppd/auth.c 2004-11-12 11:30:51.000000000 +0100
-+++ ppp.dev/pppd/auth.c 2005-07-13 14:54:23.000000000 +0200
-@@ -532,6 +532,12 @@
- link_required(unit)
- int unit;
- {
-+}
-+
-+void
-+start_link(unit)
-+ int unit;
-+{
- new_phase(PHASE_SERIALCONN);
-
- devfd = the_channel->connect();
-@@ -984,10 +990,12 @@
- int unit, protocol, prot_flavor;
- {
- int bit;
-+ const char *prot = "";
-
- switch (protocol) {
- case PPP_CHAP:
- bit = CHAP_WITHPEER;
-+ prot = "CHAP";
- switch (prot_flavor) {
- case CHAP_MD5:
- bit |= CHAP_MD5_WITHPEER;
-@@ -1006,15 +1014,19 @@
- if (passwd_from_file)
- BZERO(passwd, MAXSECRETLEN);
- bit = PAP_WITHPEER;
-+ prot = "PAP";
- break;
- case PPP_EAP:
- bit = EAP_WITHPEER;
-+ prot = "EAP";
- break;
- default:
- warn("auth_withpeer_success: unknown protocol %x", protocol);
- bit = 0;
- }
-
-+ notice("%s authentication succeeded", prot);
-+
- /* Save the authentication method for later. */
- auth_done[unit] |= bit;
-
-@@ -1648,6 +1660,7 @@
- static void
- plogout()
- {
-+ char *tty;
- #ifdef USE_PAM
- int pam_error;
-
-@@ -1658,14 +1671,12 @@
- }
- /* Apparently the pam stuff does closelog(). */
- reopen_log();
--#else /* ! USE_PAM */
-- char *tty;
-+#endif /* USE_PAM */
-
- tty = devnam;
- if (strncmp(tty, "/dev/", 5) == 0)
- tty += 5;
- logwtmp(tty, "", ""); /* Wipe out utmp logout entry */
--#endif /* ! USE_PAM */
- logged_in = 0;
- }
-
-diff -urN -x'*.swp' ppp.old/pppd/main.c ppp.dev/pppd/main.c
---- ppp.old/pppd/main.c 2005-07-13 11:34:28.000000000 +0200
-+++ ppp.dev/pppd/main.c 2005-07-13 14:49:06.000000000 +0200
-@@ -537,6 +537,7 @@
- script_unsetenv("BYTES_RCVD");
-
- lcp_open(0); /* Start protocol */
-+ start_link(0);
- while (phase != PHASE_DEAD) {
- handle_events();
- get_input();
-diff -urN -x'*.swp' ppp.old/pppd/pppd.h ppp.dev/pppd/pppd.h
---- ppp.old/pppd/pppd.h 2005-07-13 11:34:28.000000000 +0200
-+++ ppp.dev/pppd/pppd.h 2005-07-13 14:48:56.000000000 +0200
-@@ -526,6 +526,7 @@
-
- /* Procedures exported from auth.c */
- void link_required __P((int)); /* we are starting to use the link */
-+void start_link __P((int)); /* bring the link up now */
- void link_terminated __P((int)); /* we are finished with the link */
- void link_down __P((int)); /* the LCP layer has left the Opened state */
- void upper_layers_down __P((int));/* take all NCPs down */
-diff -urN -x'*.swp' ppp.old/pppd/tty.c ppp.dev/pppd/tty.c
---- ppp.old/pppd/tty.c 2004-11-13 13:07:29.000000000 +0100
-+++ ppp.dev/pppd/tty.c 2005-07-13 14:46:57.000000000 +0200
-@@ -755,14 +755,6 @@
- close(pty_master);
- pty_master = -1;
- }
-- if (pty_slave >= 0) {
-- close(pty_slave);
-- pty_slave = -1;
-- }
-- if (real_ttyfd >= 0) {
-- close(real_ttyfd);
-- real_ttyfd = -1;
-- }
- ttyfd = -1;
- if (got_sigterm)
- asked_to_quit = 1;
-@@ -781,6 +773,7 @@
- } else {
- info("Serial link disconnected.");
- }
-+ stop_charshunt(NULL, 0);
- }
-
- void tty_close_fds()
-@@ -944,7 +937,6 @@
- exit(0);
- }
- charshunt_pid = cpid;
-- add_notifier(&sigreceived, stop_charshunt, 0);
- record_child(cpid, "pppd (charshunt)", charshunt_done, NULL);
- return 1;
- }
diff --git a/openwrt/package/ppp/patches/208-no_exponential_timeout.patch b/openwrt/package/ppp/patches/208-no_exponential_timeout.patch
deleted file mode 100644
index d6c986a7ed..0000000000
--- a/openwrt/package/ppp/patches/208-no_exponential_timeout.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -urN ppp.old/pppd/plugins/rp-pppoe/discovery.c ppp.dev/pppd/plugins/rp-pppoe/discovery.c
---- ppp.old/pppd/plugins/rp-pppoe/discovery.c 2005-09-05 15:25:35.917232000 +0200
-+++ ppp.dev/pppd/plugins/rp-pppoe/discovery.c 2005-09-05 15:29:17.233586872 +0200
-@@ -593,12 +593,14 @@
- conn->discoveryState = STATE_SENT_PADI;
- waitForPADO(conn, timeout);
-
-+#if 0
- /* If we're just probing for access concentrators, don't do
- exponential backoff. This reduces the time for an unsuccessful
- probe to 15 seconds. */
- if (!conn->printACNames) {
- timeout *= 2;
- }
-+#endif
- if (conn->printACNames && conn->numPADOs) {
- break;
- }
-@@ -621,7 +623,9 @@
- sendPADR(conn);
- conn->discoveryState = STATE_SENT_PADR;
- waitForPADS(conn, timeout);
-+#if 0
- timeout *= 2;
-+#endif
- } while (conn->discoveryState == STATE_SENT_PADR);
-
- /* We're done. */
diff --git a/openwrt/package/ppp/patches/209-compensate_time_change.patch b/openwrt/package/ppp/patches/209-compensate_time_change.patch
deleted file mode 100644
index f43085ab11..0000000000
--- a/openwrt/package/ppp/patches/209-compensate_time_change.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-diff -urN ppp.old/pppd/main.c ppp.dev/pppd/main.c
---- ppp.old/pppd/main.c 2005-11-11 19:19:28.177790000 +0100
-+++ ppp.dev/pppd/main.c 2005-11-11 20:18:05.957363000 +0100
-@@ -90,6 +90,7 @@
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
-+#include <sys/sysinfo.h>
-
- #include "pppd.h"
- #include "magic.h"
-@@ -227,6 +228,7 @@
-
- /* Prototypes for procedures local to this file. */
-
-+static void check_time(void);
- static void setup_signals __P((void));
- static void create_pidfile __P((int pid));
- static void create_linkpidfile __P((int pid));
-@@ -531,6 +533,7 @@
- info("Starting link");
- }
-
-+ check_time();
- gettimeofday(&start_time, NULL);
- script_unsetenv("CONNECT_TIME");
- script_unsetenv("BYTES_SENT");
-@@ -1195,6 +1198,36 @@
-
- static struct callout *callout = NULL; /* Callout list */
- static struct timeval timenow; /* Current time */
-+static long uptime_diff = 0;
-+static int uptime_diff_set = 0;
-+
-+static void check_time(void)
-+{
-+ long new_diff;
-+ struct timeval t;
-+ struct sysinfo i;
-+ struct callout *p;
-+
-+ gettimeofday(&t, NULL);
-+ sysinfo(&i);
-+ new_diff = t.tv_sec - i.uptime;
-+
-+ if (!uptime_diff_set) {
-+ uptime_diff = new_diff;
-+ uptime_diff_set = 1;
-+ return;
-+ }
-+
-+ if ((new_diff - 5 > uptime_diff) || (new_diff + 5 < uptime_diff)) {
-+ /* system time has changed, update counters and timeouts */
-+ info("System time change detected.");
-+ start_time.tv_sec += new_diff - uptime_diff;
-+
-+ for (p = callout; p != NULL; p = p->c_next)
-+ p->c_time.tv_sec += new_diff - uptime_diff;
-+ }
-+ uptime_diff = new_diff;
-+}
-
- /*
- * timeout - Schedule a timeout.
-@@ -1265,6 +1298,8 @@
- {
- struct callout *p;
-
-+ check_time();
-+
- while (callout != NULL) {
- p = callout;
-
-@@ -1292,6 +1327,8 @@
- {
- if (callout == NULL)
- return NULL;
-+
-+ check_time();
-
- gettimeofday(&timenow, NULL);
- tvp->tv_sec = callout->c_time.tv_sec - timenow.tv_sec;
diff --git a/openwrt/package/ppp/patches/300-filter-pcap-includes-lib.patch b/openwrt/package/ppp/patches/300-filter-pcap-includes-lib.patch
deleted file mode 100644
index 3f6247d6ef..0000000000
--- a/openwrt/package/ppp/patches/300-filter-pcap-includes-lib.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -urN ppp-2.4.3.orig/pppd/Makefile.linux ppp-2.4.3/pppd/Makefile.linux
---- ppp-2.4.3.orig/pppd/Makefile.linux 2006-02-05 20:13:06.000000000 +0100
-+++ ppp-2.4.3/pppd/Makefile.linux 2006-02-05 20:24:22.000000000 +0100
-@@ -172,8 +172,8 @@
-
- ifdef FILTER
- ifneq ($(wildcard /usr/include/pcap-bpf.h),)
--LIBS += -lpcap
--CFLAGS += -DPPP_FILTER
-+LIBS += -lpcap -L$(STAGING_DIR)/usr/lib
-+CFLAGS += -DPPP_FILTER -I$(STAGING_DIR)/usr/include
- endif
- endif
-
diff --git a/openwrt/package/ppp/patches/310-precompiled_filter.patch b/openwrt/package/ppp/patches/310-precompiled_filter.patch
deleted file mode 100644
index df9452c379..0000000000
--- a/openwrt/package/ppp/patches/310-precompiled_filter.patch
+++ /dev/null
@@ -1,231 +0,0 @@
-diff -urN ppp.old/pppd/Makefile.linux ppp.dev/pppd/Makefile.linux
---- ppp.old/pppd/Makefile.linux 2006-03-18 15:58:00.000000000 +0100
-+++ ppp.dev/pppd/Makefile.linux 2006-03-18 16:52:01.000000000 +0100
-@@ -50,6 +50,9 @@
- # and that the kernel driver support PPP packet filtering.
- #FILTER=y
-
-+# Support for precompiled filters
-+PRECOMPILED_FILTER=y
-+
- # Uncomment the next line to enable multilink PPP (enabled by default)
- # Linux distributions: Please leave multilink ENABLED in your builds
- # of pppd!
-@@ -177,6 +180,14 @@
- endif
- endif
-
-+ifdef PRECOMPILED_FILTER
-+PPPDSRCS += pcap_pcc.c
-+HEADERS += pcap_pcc.h
-+PPPDOBJS += pcap_pcc.o
-+LIBS += $(STAGING_DIR)/usr/lib/libpcap.a
-+CFLAGS += -DPPP_FILTER -DPPP_PRECOMPILED_FILTER -I$(STAGING_DIR)/usr/include
-+endif
-+
- ifdef HAVE_INET6
- PPPDSRCS += ipv6cp.c eui64.c
- HEADERS += ipv6cp.h eui64.h
-diff -urN ppp.old/pppd/demand.c ppp.dev/pppd/demand.c
---- ppp.old/pppd/demand.c 2006-03-18 15:58:00.000000000 +0100
-+++ ppp.dev/pppd/demand.c 2006-03-18 18:09:16.000000000 +0100
-@@ -438,12 +438,14 @@
- return 0;
- proto = PPP_PROTOCOL(p);
- #ifdef PPP_FILTER
-+ *p = 1; /* set outbound for the filter rule */
- if (pass_filter.bf_len != 0
- && bpf_filter(pass_filter.bf_insns, p, len, len) == 0)
- return 0;
- if (active_filter.bf_len != 0
- && bpf_filter(active_filter.bf_insns, p, len, len) == 0)
- return 0;
-+ *p = 0xff; /* restore original ppp header */
- #endif
- for (i = 0; (protp = protocols[i]) != NULL; ++i) {
- if (protp->protocol < 0xC000 && (protp->protocol & ~0x8000) == proto) {
-diff -urN ppp.old/pppd/options.c ppp.dev/pppd/options.c
---- ppp.old/pppd/options.c 2006-03-18 15:58:00.000000000 +0100
-+++ ppp.dev/pppd/options.c 2006-03-18 18:05:58.000000000 +0100
-@@ -57,14 +57,7 @@
-
- #ifdef PPP_FILTER
- #include <pcap.h>
--/*
-- * DLT_PPP_WITH_DIRECTION is in current libpcap cvs, and should be in
-- * libpcap-0.8.4. Until that is released, use DLT_PPP - but that means
-- * we lose the inbound and outbound qualifiers.
-- */
--#ifndef DLT_PPP_WITH_DIRECTION
--#define DLT_PPP_WITH_DIRECTION DLT_PPP
--#endif
-+#include <pcap-bpf.h>
- #endif
-
- #include "pppd.h"
-@@ -155,6 +148,13 @@
- static int loadplugin __P((char **));
- #endif
-
-+#ifdef PPP_PRECOMPILED_FILTER
-+#include "pcap_pcc.h"
-+static int setprecompiledpassfilter __P((char **));
-+static int setprecompiledactivefilter __P((char **));
-+#undef PPP_FILTER
-+#endif
-+
- #ifdef PPP_FILTER
- static int setpassfilter __P((char **));
- static int setactivefilter __P((char **));
-@@ -312,6 +312,14 @@
- "set filter for active pkts", OPT_PRIO },
- #endif
-
-+#ifdef PPP_PRECOMPILED_FILTER
-+ { "precompiled-pass-filter", 1, setprecompiledpassfilter,
-+ "set precompiled filter for packets to pass", OPT_PRIO },
-+
-+ { "precompiled-active-filter", 1, setprecompiledactivefilter,
-+ "set precompiled filter for active pkts", OPT_PRIO },
-+#endif
-+
- #ifdef MAXOCTETS
- { "maxoctets", o_int, &maxoctets,
- "Set connection traffic limit",
-@@ -1447,6 +1455,29 @@
- return ok;
- }
-
-+#ifdef PPP_PRECOMPILED_FILTER
-+/*
-+ * setprecompiledpassfilter - Set the pass filter for packets using a
-+ * precompiled expression
-+ */
-+static int
-+setprecompiledpassfilter(argv)
-+ char **argv;
-+{
-+ return pcap_pre_compiled (*argv, &pass_filter);
-+}
-+
-+/*
-+ * setactivefilter - Set the active filter for packets
-+ */
-+static int
-+setprecompiledactivefilter(argv)
-+ char **argv;
-+{
-+ return pcap_pre_compiled (*argv, &active_filter);
-+}
-+#endif
-+
- #ifdef PPP_FILTER
- /*
- * setpassfilter - Set the pass filter for packets
-@@ -1458,7 +1489,7 @@
- pcap_t *pc;
- int ret = 0;
-
-- pc = pcap_open_dead(DLT_PPP_WITH_DIRECTION, 65535);
-+ pc = pcap_open_dead(DLT_PPP_PPPD, 65535);
- if (pcap_compile(pc, &pass_filter, *argv, 1, netmask) == -1) {
- option_error("error in pass-filter expression: %s\n",
- pcap_geterr(pc));
-@@ -1479,7 +1510,7 @@
- pcap_t *pc;
- int ret = 0;
-
-- pc = pcap_open_dead(DLT_PPP_WITH_DIRECTION, 65535);
-+ pc = pcap_open_dead(DLT_PPP_PPPD, 65535);
- if (pcap_compile(pc, &active_filter, *argv, 1, netmask) == -1) {
- option_error("error in active-filter expression: %s\n",
- pcap_geterr(pc));
-diff -urN ppp.old/pppd/pcap_pcc.c ppp.dev/pppd/pcap_pcc.c
---- ppp.old/pppd/pcap_pcc.c 1970-01-01 01:00:00.000000000 +0100
-+++ ppp.dev/pppd/pcap_pcc.c 2006-03-18 16:51:31.000000000 +0100
-@@ -0,0 +1,74 @@
-+#include <pcap.h>
-+#include <pcap-bpf.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <errno.h>
-+#include "pppd.h"
-+
-+int pcap_pre_compiled (char * fname, struct bpf_program *p)
-+{
-+ char buf[128];
-+ int line = 0, size = 0, index=0, ret=1;
-+ FILE *f = fopen (fname, "r");
-+ if (!f)
-+ {
-+ option_error("error opening precompiled active-filter '%s': %s",
-+ fname, strerror (errno));
-+ return 0;
-+ }
-+ while (fgets (buf, 127, f))
-+ {
-+ line++;
-+ if (*buf == '#')
-+ continue;
-+ if (size)
-+ {
-+ /*
-+ struct bpf_insn {
-+ u_short code;
-+ u_char jt;
-+ u_char jf;
-+ bpf_int32 k;
-+ }
-+ */
-+ struct bpf_insn * insn = & p->bf_insns[index];
-+ unsigned code, jt, jf, k;
-+ if (sscanf (buf, "%u %u %u %u", &code, &jt, &jf, &k) != 4)
-+ {
-+ goto err;
-+ }
-+ insn->code = code;
-+ insn->jt = jt;
-+ insn->jf = jf;
-+ insn->k = k;
-+ index++;
-+ }
-+ else
-+ {
-+ if (sscanf (buf, "%u", &size) != 1)
-+ {
-+ goto err;
-+ }
-+ p->bf_len = size;
-+ p->bf_insns = (struct bpf_insn *)
-+ malloc (size * sizeof (struct bpf_insn));
-+ }
-+ }
-+ if (size != index)
-+ {
-+ option_error("error in precompiled active-filter,"
-+ " expected %d expressions, got %dn",
-+ size, index);
-+ ret = 0;
-+ }
-+ fclose(f);
-+ return ret;
-+
-+err:
-+ option_error("error in precompiled active-filter"
-+ " expression line %s:%d (wrong size)\n",
-+ fname, line);
-+ fclose (f);
-+ return 0;
-+}
-diff -urN ppp.old/pppd/pcap_pcc.h ppp.dev/pppd/pcap_pcc.h
---- ppp.old/pppd/pcap_pcc.h 1970-01-01 01:00:00.000000000 +0100
-+++ ppp.dev/pppd/pcap_pcc.h 2006-03-18 15:59:14.000000000 +0100
-@@ -0,0 +1,7 @@
-+#ifndef PCAP_PCC_H
-+#define PCAP_PCC_H
-+
-+#include <pcap.h>
-+
-+int pcap_pre_compiled (char * fname, struct bpf_program *p);
-+#endif /* PCAP_PCC_H */
diff --git a/openwrt/package/ppp/utils/pfc.c b/openwrt/package/ppp/utils/pfc.c
deleted file mode 100644
index 5476be170a..0000000000
--- a/openwrt/package/ppp/utils/pfc.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Taken from fli4l 3.0
- * Make sure you compile it against the same libpcap version used in OpenWrt
- */
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <string.h>
-
-#include <linux/types.h>
-#include <linux/ppp_defs.h>
-
-#include <pcap.h>
-#include <pcap-bpf.h>
-
-int main (int argc, char ** argv)
-{
- pcap_t *pc; /* Fake struct pcap so we can compile expr */
- struct bpf_program filter; /* Filter program for link-active pkts */
- u_int32_t netmask=0;
-
- int dflag = 3;
- if (argc == 4)
- {
- if (!strcmp (argv[1], "-d"))
- {
- dflag = atoi (argv[2]);
- argv += 2;
- argc -=2;
- }
- }
- if (argc != 2)
- {
- printf ("usage; %s [ -d <debug_level> ] expression\n", argv[0]);
- return 1;
- }
-
- pc = pcap_open_dead(DLT_PPP_PPPD, PPP_HDRLEN);
- if (pcap_compile(pc, &filter, argv[1], 1, netmask) == 0)
- {
- printf ("#\n# Expression: %s\n#\n", argv[1]);
- bpf_dump (&filter, dflag);
- return 0;
- }
- else
- {
- printf("error in active-filter expression: %s\n", pcap_geterr(pc));
- }
- return 1;
-}
diff --git a/openwrt/package/pptp/Config.in b/openwrt/package/pptp/Config.in
deleted file mode 100644
index 88da23748c..0000000000
--- a/openwrt/package/pptp/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_PPTP
- prompt "pptp.............................. PPTP (Point-to-Point Tunneling Protocol) client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_KMOD_GRE
- select BR2_PACKAGE_PPP
- help
- A Point-to-Point Tunneling Protocol Client
-
- http://pptpclient.sourceforge.net/
-
diff --git a/openwrt/package/pptp/Makefile b/openwrt/package/pptp/Makefile
deleted file mode 100644
index 870341c87d..0000000000
--- a/openwrt/package/pptp/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pptp
-PKG_VERSION:=1.6.0
-PKG_RELEASE:=3
-PKG_MD5SUM:=9a706327fb9827541d7c86d48ceb9631
-
-PKG_SOURCE_URL:=@SF/pptpclient
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PPTP,pptp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- CFLAGS="$(TARGET_CFLAGS)" \
- all
- touch $@
-
-$(IPKG_PPTP):
- install -d -m0755 $(IDIR_PPTP)/sbin
- install -m0755 ./files/ifup.pptp $(IDIR_PPTP)/sbin/ifup.pptp
- install -d -m0755 $(IDIR_PPTP)/etc/ppp
- install -m0644 ./files/options.pptp $(IDIR_PPTP)/etc/ppp/
- install -d -m0755 $(IDIR_PPTP)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/pptp $(IDIR_PPTP)/usr/sbin/
- $(RSTRIP) $(IDIR_PPTP)
- $(IPKG_BUILD) $(IDIR_PPTP) $(PACKAGE_DIR)
diff --git a/openwrt/package/pptp/files/ifup.pptp b/openwrt/package/pptp/files/ifup.pptp
deleted file mode 100644
index f401a36b2f..0000000000
--- a/openwrt/package/pptp/files/ifup.pptp
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-[ $# = 0 ] && { echo " $0 <group>"; exit; }
-. /etc/config/network
-type=$1
-
-eval "proto=\"\${${type}_proto}\""
-[ "$proto" = "pptp" ] || {
- echo "$0: ${type}_proto isn't pptp"
- exit
-}
-
-mkdir -p /var/lock
-
-for module in slhc ppp_generic ppp_async ip_gre; do
- /sbin/insmod $module 2>&- >&-
-done
-
-KEEPALIVE=${ppp_redialperiod:+lcp-echo-interval $ppp_redialperiod lcp-echo-failure 5}
-case "$ppp_demand" in
- on|1|enabled)
- DEMAND=${ppp_idletime:+demand idle $ppp_idletime}
- [ -f /etc/ppp/filter ] && DEMAND=${DEMAND:+precompiled-active-filter /etc/ppp/filter $DEMAND}
- ;;
- *) DEMAND="persist";;
-esac
-MTU=${ppp_mtu:-1452}
-
-[ "$pptp_proto" = "static" ] || pptp_proto="dhcp"
-do_ifup $pptp_proto $type
-
-/usr/sbin/pppd \
- pty "/usr/sbin/pptp $pptp_server_ip --loglevel 0 --nolaunchpppd" \
- file /etc/ppp/options.pptp \
- connect /bin/true \
- usepeerdns \
- defaultroute \
- replacedefaultroute \
- linkname "$type" \
- ipparam "$type" \
- user "$ppp_username" \
- password "$ppp_passwd" \
- mtu $MTU mru $MTU \
- $DEMAND \
- $KEEPALIVE
-
diff --git a/openwrt/package/pptp/files/options.pptp b/openwrt/package/pptp/files/options.pptp
deleted file mode 100644
index c520de74b7..0000000000
--- a/openwrt/package/pptp/files/options.pptp
+++ /dev/null
@@ -1,6 +0,0 @@
-lock
-noauth
-nobsdcomp
-nodeflate
-idle 0
-defaultroute
diff --git a/openwrt/package/pptp/ipkg/pptp.conffiles b/openwrt/package/pptp/ipkg/pptp.conffiles
deleted file mode 100644
index 136db31f1c..0000000000
--- a/openwrt/package/pptp/ipkg/pptp.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/ppp/options.pptp \ No newline at end of file
diff --git a/openwrt/package/pptp/ipkg/pptp.control b/openwrt/package/pptp/ipkg/pptp.control
deleted file mode 100644
index e582c6221a..0000000000
--- a/openwrt/package/pptp/ipkg/pptp.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: pptp
-Priority: optional
-Section: net
-Description: a Point-to-Point Tunneling Protocol (PPTP) client
-Depends: ppp, kmod-gre
diff --git a/openwrt/package/pptpd/Config.in b/openwrt/package/pptpd/Config.in
deleted file mode 100644
index e75d71a033..0000000000
--- a/openwrt/package/pptpd/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_PPTPD
- prompt "pptpd............................. PPTP (Point-to-Point Tunneling Protocol) server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_KMOD_GRE
- select BR2_PACKAGE_PPP
- help
- A Point-to-Point Tunneling Protocol server
-
- http://poptop.sourceforge.net/
-
diff --git a/openwrt/package/pptpd/Makefile b/openwrt/package/pptpd/Makefile
deleted file mode 100644
index 34d2229ab9..0000000000
--- a/openwrt/package/pptpd/Makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pptpd
-PKG_VERSION:=1.3.0
-PKG_RELEASE:=2
-PKG_MD5SUM:=75d494e881f7027f4e60b114163f6b67
-
-PKG_SOURCE_URL:=@SF/poptop
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PPTPD,pptpd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --with-pppd-ip-alloc \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- CFLAGS="$(TARGET_CFLAGS) -DSBINDIR=\\\"/usr/sbin\\\"" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- INSTALL="install" \
- all install
- touch $@
-
-$(IPKG_PPTPD):
- install -d -m0755 $(IDIR_PPTPD)/etc
- install -m0644 ./files/pptpd.conf $(IDIR_PPTPD)/etc/
- install -d -m0755 $(IDIR_PPTPD)/etc/init.d
- install -m0755 ./files/pptpd.init $(IDIR_PPTPD)/etc/init.d/pptpd
- install -d -m0755 $(IDIR_PPTPD)/etc/ppp
- install -m0644 ./files/options.pptpd $(IDIR_PPTPD)/etc/ppp/
- install -d -m0755 $(IDIR_PPTPD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/pptpd $(IDIR_PPTPD)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/pptpctrl $(IDIR_PPTPD)/usr/sbin/
- $(RSTRIP) $(IDIR_PPTPD)
- $(IPKG_BUILD) $(IDIR_PPTPD) $(PACKAGE_DIR)
diff --git a/openwrt/package/pptpd/files/options.pptpd b/openwrt/package/pptpd/files/options.pptpd
deleted file mode 100644
index 5dd2daf797..0000000000
--- a/openwrt/package/pptpd/files/options.pptpd
+++ /dev/null
@@ -1,23 +0,0 @@
-#debug
-#logfile /tmp/pptp-server.log
-172.16.1.1:
-auth
-name "pptp-server"
-lcp-echo-failure 3
-lcp-echo-interval 60
-default-asyncmap
-mtu 1482
-mru 1482
-nobsdcomp
-nodeflate
-#noproxyarp
-#nomppc
-mppe required,no40,no56,stateless
-require-mschap-v2
-refuse-chap
-refuse-mschap
-refuse-eap
-refuse-pap
-#ms-dns 172.16.1.1
-#plugin radius.so
-#radius-config-file /etc/radius.conf
diff --git a/openwrt/package/pptpd/files/pptpd.conf b/openwrt/package/pptpd/files/pptpd.conf
deleted file mode 100644
index 354745f592..0000000000
--- a/openwrt/package/pptpd/files/pptpd.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-#debug
-option /etc/ppp/options.pptpd
-speed 115200
-stimeout 10
-#localip & remoteip are not needed, ip management is done by pppd
diff --git a/openwrt/package/pptpd/files/pptpd.init b/openwrt/package/pptpd/files/pptpd.init
deleted file mode 100644
index d4944c7677..0000000000
--- a/openwrt/package/pptpd/files/pptpd.init
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-BIN=pptpd
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- mkdir -p $RUN_D
- for m in arc4 sha1 slhc crc-ccitt ppp_generic ppp_async ppp_mppe_mppc; do
- insmod $m >/dev/null 2>&1
- done
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/pptpd/ipkg/pptpd.conffiles b/openwrt/package/pptpd/ipkg/pptpd.conffiles
deleted file mode 100644
index c5afda91fb..0000000000
--- a/openwrt/package/pptpd/ipkg/pptpd.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/ppp/options.pptpd
-/etc/pptpd.conf
diff --git a/openwrt/package/pptpd/ipkg/pptpd.control b/openwrt/package/pptpd/ipkg/pptpd.control
deleted file mode 100644
index 135fa944c5..0000000000
--- a/openwrt/package/pptpd/ipkg/pptpd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: pptpd
-Priority: optional
-Section: net
-Description: a Point-to-Point Tunneling Protocol (PPTP) server
-Depends: ppp, kmod-crypto, kmod-mppe, kmod-ppp
diff --git a/openwrt/package/pptpd/patches/bad-pqueue-debug.patch b/openwrt/package/pptpd/patches/bad-pqueue-debug.patch
deleted file mode 100644
index 87e76648a1..0000000000
--- a/openwrt/package/pptpd/patches/bad-pqueue-debug.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -urN pptpd-1.3.0/pqueue.c.orig pptpd-1.3.0/pqueue.c
---- pptpd-1.3.0/pqueue.c.orig 2006-04-17 20:44:28.000000000 -0400
-+++ pptpd-1.3.0/pqueue.c 2006-04-17 20:44:58.000000000 -0400
-@@ -6,14 +6,11 @@
- #include "pqueue.h"
-
- #ifdef DEBUG_PQUEUE
--#define DEBUG_ON 1
-+#define DEBUG_CMD(_a) { _a }
- #else
--#define DEBUG_ON 0
-+#define DEBUG_CMD(_a)
- #endif
-
--#define DEBUG_CMD(_a) if (DEBUG_ON) { _a }
--
--
- #define MIN_CAPACITY 128 /* min allocated buffer for a packet */
-
- static int pqueue_alloc (int seq, unsigned char *packet, int packlen, pqueue_t **new);
diff --git a/openwrt/package/pptpd/patches/pptpgre-use-debug-option.patch b/openwrt/package/pptpd/patches/pptpgre-use-debug-option.patch
deleted file mode 100644
index d4ffe5c2e9..0000000000
--- a/openwrt/package/pptpd/patches/pptpgre-use-debug-option.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff -Nur pptpd-1.3.0/pptpgre.c.orig pptpd-1.3.0/pptpgre.c
---- pptpd-1.3.0/pptpgre.c.orig 2006-04-18 02:13:10.000000000 -0400
-+++ pptpd-1.3.0/pptpgre.c 2006-04-18 02:14:19.000000000 -0400
-@@ -46,6 +46,9 @@
-
- #define PACKET_MAX 8196
-
-+/* Command Line Variable Args */
-+extern int pptpctrl_debug;
-+
- typedef int (*callback_t)(int cl, void *pack, unsigned int len);
-
- /* test for a 32 bit counter overflow */
-@@ -319,7 +322,9 @@
- stats.rx_lost += head->seq - gre.seq_recv - 1;
- syslog(LOG_DEBUG, "GRE: timeout waiting for %d packets", head->seq - gre.seq_recv - 1);
- }
-- syslog(LOG_DEBUG, "GRE: accepting #%d from queue", head->seq);
-+ if (pptpctrl_debug) {
-+ syslog(LOG_DEBUG, "GRE: accepting #%d from queue", head->seq);
-+ }
- gre.seq_recv = head->seq;
- status = callback(cl, head->packet, head->packlen);
- pqueue_del(head);
-@@ -399,7 +404,9 @@
- }
- /* check for out-of-order sequence number */
- if (seq_greater(seq, gre.seq_recv)) {
-- syslog(LOG_DEBUG, "GRE: accepting packet #%d", seq);
-+ if (pptpctrl_debug) {
-+ syslog(LOG_DEBUG, "GRE: accepting packet #%d", seq);
-+ }
- stats.rx_accepted++;
- gre.seq_recv = seq;
- return cb(cl, buffer + ip_len + headersize, payload_len);
diff --git a/openwrt/package/privoxy/Config.in b/openwrt/package/privoxy/Config.in
deleted file mode 100644
index ba1e4b061e..0000000000
--- a/openwrt/package/privoxy/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_PRIVOXY
- prompt "privoxy........................... web proxy with advanced filtering capabilities"
- tristate
- default m if CONFIG_DEVEL
- help
-
- Privoxy is a web proxy with advanced filtering capabilities for
- protecting privacy, modifying web page content, managing cookies,
- controlling access, and removing ads, banners, pop-ups and other
- obnoxious Internet junk. Privoxy has a very flexible configuration
- and can be customized to suit individual needs and tastes. Privoxy
- has application for both stand-alone systems and multi-user networks.
-
- http://www.privoxy.org/
diff --git a/openwrt/package/privoxy/Makefile b/openwrt/package/privoxy/Makefile
deleted file mode 100644
index 24c0525246..0000000000
--- a/openwrt/package/privoxy/Makefile
+++ /dev/null
@@ -1,64 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=privoxy
-PKG_VERSION:=3.0.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=b0710be8af09409bfb03f52523a17010
-
-PKG_SOURCE_URL:=@SF/ijbswa
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-stable-src.tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-stable
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PRIVOXY,privoxy,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- autoheader && autoconf && \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- --disable-static \
- );
- touch $(PKG_BUILD_DIR)/.configured
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- SPECIAL_CFLAGS="-pthread -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib"
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- touch $(PKG_BUILD_DIR)/.built
-
-$(IPKG_PRIVOXY):
- install -d -m0755 $(IDIR_PRIVOXY)/usr/sbin $(IDIR_PRIVOXY)/etc/privoxy
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/privoxy $(IDIR_PRIVOXY)/usr/sbin/
- $(RSTRIP) $(IDIR_PRIVOXY)
- $(IPKG_BUILD) $(IDIR_PRIVOXY) $(PACKAGE_DIR)
diff --git a/openwrt/package/privoxy/ipkg/privoxy.control b/openwrt/package/privoxy/ipkg/privoxy.control
deleted file mode 100644
index 2d6ba8a773..0000000000
--- a/openwrt/package/privoxy/ipkg/privoxy.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: privoxy
-Version: 3.0.3
-Section: net
-Description: web proxy with advanced filtering capabilities
-Priority: optional
diff --git a/openwrt/package/privoxy/patches/100-crosscompile.patch b/openwrt/package/privoxy/patches/100-crosscompile.patch
deleted file mode 100644
index c2b6738b2f..0000000000
--- a/openwrt/package/privoxy/patches/100-crosscompile.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -Nur privoxy-3.0.3-stable/configure.in privoxy-3.0.3-stable.patched/configure.in
---- privoxy-3.0.3-stable/configure.in 2004-01-30 10:26:03.000000000 +0100
-+++ privoxy-3.0.3-stable.patched/configure.in 2006-03-13 20:50:57.000000000 +0100
-@@ -1092,7 +1092,8 @@
- AC_PROG_GCC_TRADITIONAL
- dnl uncommenting does not work for swa. suse linux
- dnl AC_FUNC_MALLOC
--AC_FUNC_SETPGRP
-+dnl uncommenting does not work for openwrt
-+dnl AC_FUNC_SETPGRP
- AC_TYPE_SIGNAL
- dnl uncommenting does not work for swa. suse linux
- dnl AC_FUNC_STAT
diff --git a/openwrt/package/privoxy/patches/101-destdir.patch b/openwrt/package/privoxy/patches/101-destdir.patch
deleted file mode 100644
index 9e22ab670d..0000000000
--- a/openwrt/package/privoxy/patches/101-destdir.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -Nur privoxy-3.0.3-stable/GNUmakefile.in privoxy-3.0.3-stable.patched/GNUmakefile.in
---- privoxy-3.0.3-stable/GNUmakefile.in 2004-01-31 02:15:33.000000000 +0100
-+++ privoxy-3.0.3-stable.patched/GNUmakefile.in 2006-03-13 21:39:29.000000000 +0100
-@@ -55,17 +55,17 @@
- USER = @USER@
- GROUP = @GROUP@
-
--prefix = @prefix@
--exec_prefix = @exec_prefix@
--CONF_BASE = @sysconfdir@
--SBIN_DEST = @sbindir@
--MAN_DIR = @mandir@
--MAN_DEST = $(MAN_DIR)/man1
--SHARE_DEST = @datadir@
--DOC_DEST = $(SHARE_DEST)/doc/privoxy
--VAR_DEST = @localstatedir@
--LOGS_DEST = $(VAR_DEST)/log/privoxy
--PIDS_DEST = $(VAR_DEST)/run
-+prefix = $(DESTDIR)@prefix@
-+exec_prefix = $(DESTDIR)@exec_prefix@
-+CONF_BASE = $(DESTDIR)@sysconfdir@
-+SBIN_DEST = $(DESTDIR)@sbindir@
-+MAN_DIR = $(DESTDIR)@mandir@
-+MAN_DEST = $(DESTDIR)$(MAN_DIR)/man1
-+SHARE_DEST = $(DESTDIR)@datadir@
-+DOC_DEST = $(DESTDIR)$(SHARE_DEST)/doc/privoxy
-+VAR_DEST = $(DESTDIR)@localstatedir@
-+LOGS_DEST = $(DESTDIR)$(VAR_DEST)/log/privoxy
-+PIDS_DEST = $(DESTDIR)$(VAR_DEST)/run
-
- # if $prefix = /usr/local then the default CONFDEST change from
- # CONF_DEST = $(CONF_BASE) to CONF_DEST = $(CONF_BASE)/privoxy
diff --git a/openwrt/package/procmail/Config.in b/openwrt/package/procmail/Config.in
deleted file mode 100644
index 548b8e6001..0000000000
--- a/openwrt/package/procmail/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_PROCMAIL
- prompt "procmail.......................... mail processing tool"
- tristate
- default n
- help
- Procmail is able to process and classify incoming mail into
- different mail boxes.
-
- Very useful in conjunction with mutt.
-
- http://www.procmail.org
diff --git a/openwrt/package/procmail/Makefile b/openwrt/package/procmail/Makefile
deleted file mode 100644
index ace0a0bf7b..0000000000
--- a/openwrt/package/procmail/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=procmail
-PKG_VERSION:=3.22
-PKG_RELEASE:=1
-
-PKG_SOURCE_URL:=http://www.procmail.org/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=1678ea99b973eb77eda4ecf6acae53f1
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PROCMAIL,procmail,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)/src -f ../Makefile.openwrt \
- CC=$(TARGET_CC)
-
- touch $@
-
-$(IPKG_PROCMAIL):
- mkdir -p $(IDIR_PROCMAIL)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/src/procmail $(IDIR_PROCMAIL)/usr/bin/
- $(CP) $(PKG_BUILD_DIR)/src/formail $(IDIR_PROCMAIL)/usr/bin/
- $(RSTRIP) $(IDIR_PROCMAIL)
- $(IPKG_BUILD) $(IDIR_PROCMAIL) $(PACKAGE_DIR)
diff --git a/openwrt/package/procmail/ipkg/procmail.control b/openwrt/package/procmail/ipkg/procmail.control
deleted file mode 100644
index 6a87f9ff5e..0000000000
--- a/openwrt/package/procmail/ipkg/procmail.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: procmail
-Priority: optional
-Section: text
-Description: Mail processing tool
diff --git a/openwrt/package/procmail/patches/promail_openwrt.patch b/openwrt/package/procmail/patches/promail_openwrt.patch
deleted file mode 100644
index c33d826053..0000000000
--- a/openwrt/package/procmail/patches/promail_openwrt.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-This patch is required to make procmail cross compile - it tries to run some automatic tests which
-obviously do not work in a cross compiled environment.
-
-
-diff -Naur procmail-3.22_orig/autoconf.h procmail-3.22/autoconf.h
---- procmail-3.22_orig/autoconf.h 1970-01-01 10:00:00.000000000 +1000
-+++ procmail-3.22/autoconf.h 2006-03-23 12:15:36.000000000 +1100
-@@ -0,0 +1,21 @@
-+/* This file was automagically generated by autoconf */
-+
-+/* 5 moves in 64 steps of size 16384 when reallocing */
-+#define NOpw_class
-+#define NOstrlcat
-+#define NOsetrgid
-+#define MAX_argc 7588
-+/* Your system's strstr() is 1.12 times FASTER than my C-routine */
-+#define UDP_protocolno 17
-+#define BIFF_serviceport "512"
-+#define IP_localhost {127,0,0,1}
-+#define MAILSPOOLDIR "/var/spool/mail/"
-+#define SENDMAIL "/usr/sbin/sendmail"
-+#define CF_no_procmail_yet
-+#define buggy_SENDMAIL
-+#define defPATH "PATH=$HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/bin/X11"
-+#define defSPATH "PATH=/bin:/usr/bin:/usr/local/bin:/usr/bin/X11"
-+#define PM_VERSION "3.22"
-+/* Hotwire LOCKINGTEST=100 */
-+/* Procmail will lock via: dotlocking, fcntl() */
-+/* autoconf completed */
-diff -Naur procmail-3.22_orig/Makefile.openwrt procmail-3.22/Makefile.openwrt
---- procmail-3.22_orig/Makefile.openwrt 1970-01-01 10:00:00.000000000 +1000
-+++ procmail-3.22/Makefile.openwrt 2006-03-23 12:15:36.000000000 +1100
-@@ -0,0 +1,18 @@
-+PM_OBJ=cstdio.o common.o exopen.o goodies.o locking.o \
-+ mailfold.o foldinfo.o misc.o pipes.o regexp.o robust.o \
-+ sublib.o acommon.o mcommon.o lastdirsep.o authenticate.o \
-+ lmtp.o memblk.o variables.o from.o comsat.o
-+
-+FM_OBJ=common.o fields.o formisc.o sublib.o ecommon.o \
-+ acommon.o
-+
-+LDFLAGS = -lm -lnsl -ldl -lc
-+CFLAGS = -Os -DPROCMAIL
-+
-+all: procmail formail
-+
-+procmail: procmail.o $(PM_OBJ)
-+ $(CC) $(CFLAGS) $@.o $(PM_OBJ) -o $@ $(LDFLAGS)
-+
-+formail: formail.o $(FM_OBJ)
-+ $(CC) $(CFLAGS) $@.o $(FM_OBJ) -o $@ $(LDFLAGS)
diff --git a/openwrt/package/psybnc/Config.in b/openwrt/package/psybnc/Config.in
deleted file mode 100644
index 6c76b68e1e..0000000000
--- a/openwrt/package/psybnc/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_PSYBNC
- prompt "psybnc............................ An IRC-Bouncer with many features"
- tristate
- default m if CONFIG_DEVEL
- help
- psyBNC is an easy-to-use, multi-user, permanent
- IRC-Bouncer with many features. Some of its features
- vhost- and relay support to connected bouncers and an
- extensive online help system. Many other helpful
- functions are included.
-
- http://www.psybnc.info/
-
diff --git a/openwrt/package/psybnc/Makefile b/openwrt/package/psybnc/Makefile
deleted file mode 100644
index b4f9b284c1..0000000000
--- a/openwrt/package/psybnc/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=psybnc
-PKG_VERSION:=2.3.2-7
-PKG_RELEASE:=1
-PKG_MD5SUM:=4b893a92f914813450e0921b2894ad6c
-
-PKG_SOURCE_URL:=http://www.psybnc.info/download/beta/
-PKG_SOURCE:=psyBNC-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PSYBNC,psybnc,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC="$(TARGET_CC)" \
- CFLAGS="$(TARGET_CFLAGS)" \
- HOSTCC="$(HOSTCC)" \
- all
- touch $@
-
-$(IPKG_PSYBNC):
- install -d -m0755 $(IDIR_PSYBNC)/usr/share/psybnc/lang/
- install -d -m0755 $(IDIR_PSYBNC)/usr/share/psybnc/log/
- install -d -m0755 $(IDIR_PSYBNC)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/psybnc $(IDIR_PSYBNC)/usr/share/psybnc/
- install -m0600 $(PKG_BUILD_DIR)/psybnc.conf $(IDIR_PSYBNC)/usr/share/psybnc/
- install -m0644 $(PKG_BUILD_DIR)/lang/english.lng $(IDIR_PSYBNC)/usr/share/psybnc/lang/
- install -m0755 $(PKG_BUILD_DIR)/psybnc.sh $(IDIR_PSYBNC)/usr/sbin/psybnc
- $(RSTRIP) $(IDIR_PSYBNC)
- $(IPKG_BUILD) $(IDIR_PSYBNC) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/psybnc/ipkg/psybnc.control b/openwrt/package/psybnc/ipkg/psybnc.control
deleted file mode 100644
index 92e92ce7cf..0000000000
--- a/openwrt/package/psybnc/ipkg/psybnc.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: psybnc
-Priority: optional
-Section: net
-Description: IRC-Bouncer with many features
diff --git a/openwrt/package/psybnc/patches/Makefile.patch b/openwrt/package/psybnc/patches/Makefile.patch
deleted file mode 100644
index 2db956072c..0000000000
--- a/openwrt/package/psybnc/patches/Makefile.patch
+++ /dev/null
@@ -1,59 +0,0 @@
---- psybnc/Makefile 2005-06-04 20:22:45.000000000 +0200
-+++ psybnc_patched/Makefile 2005-11-04 11:50:28.879157626 +0100
-@@ -1,16 +1,16 @@
--CC = gcc
-+HOSTCC = gcc
- CCFLAGS =
-
- all: $(OBJS)
- @echo Initializing bouncer compilation
- @echo [*] Running Conversion Tool for older psyBNC Data.
-- @$(CC) tools/convconf.c -o tools/convconf
-+ @$(HOSTCC) tools/convconf.c -o tools/convconf
- @tools/convconf
- @echo [*] Running Autoconfig.
-- @$(CC) -I. tools/autoconf.c -o tools/autoconf
-+ @$(HOSTCC) -I. tools/autoconf.c -o tools/autoconf
- @tools/autoconf
- @echo [*] Compiling MakeSalt for Encryption..
-- @$(CC) -I. -o makesalt tools/makesalt.c
-+ @$(HOSTCC) -I. -o makesalt tools/makesalt.c
- @./makesalt
- @echo [*] Compiling Bouncer..
- @make -f makefile.out
-@@ -20,14 +20,14 @@
- menuconfig:
- @echo Initializing Menu-Configuration
- @echo [*] Running Conversion Tool for older psyBNC Data.
-- @$(CC) tools/convconf.c -o tools/convconf
-+ @$(HOSTCC) tools/convconf.c -o tools/convconf
- @tools/convconf
- @echo [*] Running Autoconfig.
-- @$(CC) -I. tools/autoconf.c -o tools/autoconf
-+ @$(HOSTCC) -I. tools/autoconf.c -o tools/autoconf
- @tools/autoconf
- @echo [*] Creating Menu, please wait.
- @echo This needs the 'ncurses' library. If it is not available, menuconf wont work. If you are using 'curses', use make menuconfig-curses instead.
-- @$(CC) menuconf/menuconf.c menuconf/inputbox.c menuconf/util.c menuconf/checklist.c menuconf/menubox.c menuconf/textbox.c src/snprintf.c -I. -lncurses -lm -o menuconf/menuconf 2>/dev/null
-+ @$(HOSTCC) menuconf/menuconf.c menuconf/inputbox.c menuconf/util.c menuconf/checklist.c menuconf/menubox.c menuconf/textbox.c src/snprintf.c -I. -lncurses -lm -o menuconf/menuconf 2>/dev/null
- @menuconf/menuconf
- @clear
- @echo Now compile psyBNC using make, if not yet compiled, or if Options were changed.
-@@ -36,14 +36,14 @@
- menuconfig-curses:
- @echo Initializing Menu-Configuration using Curses
- @echo [*] Running Conversion Tool for older psyBNC Data.
-- @$(CC) tools/convconf.c -o tools/convconf
-+ @$(HOSTCC) tools/convconf.c -o tools/convconf
- @tools/convconf
- @echo [*] Running Autoconfig.
-- @$(CC) -I. tools/autoconf.c -o tools/autoconf
-+ @$(HOSTCC) -I. tools/autoconf.c -o tools/autoconf
- @tools/autoconf
- @echo [*] Creating Menu, please wait.
- @echo This needs the 'curses' library. If it is not available, menuconf wont work.
-- @$(CC) menuconf/menuconf.c menuconf/inputbox.c menuconf/util.c menuconf/checklist.c menuconf/menubox.c menuconf/textbox.c src/snprintf.c -DNONCURSES -I. -lcurses -lm -o menuconf/menuconf 2>/dev/null
-+ @$(HOSTCC) menuconf/menuconf.c menuconf/inputbox.c menuconf/util.c menuconf/checklist.c menuconf/menubox.c menuconf/textbox.c src/snprintf.c -DNONCURSES -I. -lcurses -lm -o menuconf/menuconf 2>/dev/null
- @menuconf/menuconf
- @clear
- @echo Now compile psyBNC using make, if not yet compiled, or if Options were changed.
diff --git a/openwrt/package/psybnc/patches/psybnc.conf.patch b/openwrt/package/psybnc/patches/psybnc.conf.patch
deleted file mode 100644
index 98e9ad5a9b..0000000000
--- a/openwrt/package/psybnc/patches/psybnc.conf.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -Naur psybnc/psybnc.conf psybnc_finish/psybnc.conf
---- psybnc/psybnc.conf 1970-01-01 01:00:00.000000000 +0100
-+++ psybnc_finish/psybnc.conf 2005-11-03 18:27:44.726264185 +0100
-@@ -0,0 +1,10 @@
-+PSYBNC.SYSTEM.PORT1=50001
-+PSYBNC.SYSTEM.ME=psybnc_mipsel
-+PSYBNC.SYSTEM.HOST1=*
-+PSYBNC.HOSTALLOWS.ENTRY0=*;*
-+USER1.USER.NICK=change_me
-+USER1.USER.USER=psybnc_admin
-+USER1.USER.PASS=change_me
-+USER1.USER.RIGHTS=1
-+USER1.USER.VLINK=0
-+USER1.USER.LOGIN=psybnc_admin
diff --git a/openwrt/package/psybnc/patches/psybnc.patch b/openwrt/package/psybnc/patches/psybnc.patch
deleted file mode 100644
index 32f2165ea0..0000000000
--- a/openwrt/package/psybnc/patches/psybnc.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-diff -ur psybnc/config.h psybnc_finish/config.h
---- psybnc/config.h 2005-06-04 20:22:45.000000000 +0200
-+++ psybnc_finish/config.h 2005-11-03 17:05:40.802998216 +0100
-@@ -1,40 +1,7 @@
--/* $Id: config.h,v 1.2 2005/06/04 18:05:33 hisi Exp $ */
- /*
- * Configuration file for psyBNC, created by menuconf
- */
-
--/* Encryption */
--
--#define CRYPT
--
--/* Encryption Type*/
--
--#define BLOWFISH
--
--/* Allow Translation */
--
--#define TRANSLATE
--
--/* Allow internal network */
--
--#define INTNET
--
--/* Allow traffic logging */
--
--#define TRAFFICLOG
--
--/* Allow linkage of bouncers */
--
--#define LINKAGE
--
--/* Allow the dcc File-Functions */
--
--#define DCCFILES
--
--/* Pipe dcc Chats */
--
--#define DCCCHAT
--
- /* Allow to add more users */
-
- #define MULTIUSER
-@@ -47,28 +14,27 @@
-
- #define MAXCONN 99
-
--/* Allow the usage of scripts */
-+/* Use blocking DNS */
-
--#define SCRIPTING
-+#define BLOCKDNS
-
- /* Allow multiple irc connections per user */
-
- #define NETWORK
-
--/* Allow Proxy Support */
-+/* The logging level */
-
--#define PROXYS
-+#define LOGLEVEL 2
-
--/* The logging level */
-+/* The ctcp Version reply */
-
--#define LOGLEVEL 0
-+#define CTCPVERSION "psyBNC 2.3.2-7 running on mipsel, ported by piie visit www.linuX-gamers.net"
-
--/* SSL-Security */
-+/* The Path to SSL */
-
--#define SSLSEC 2
-+#define SSLPATH "/tmp/"
-
--/* Blocking DNS is preferred. Non Blocking DNS is experimental */
-+/* SSL-Security */
-+
-+#define SSLSEC 0
-
--#ifndef BLOCKDNS
--#define BLOCKDNS
--#endif
-diff -ur psybnc/tools/autoconf.c psybnc_finish/tools/autoconf.c
---- psybnc/tools/autoconf.c 2005-06-04 20:22:45.000000000 +0200
-+++ psybnc_finish/tools/autoconf.c 2005-10-29 14:46:49.000000000 +0200
-@@ -425,7 +425,7 @@
- printf("Can't create makefile.out .. aborting\n");
- exit(0x1);
- }
-- fprintf(makefile,"CC = gcc\n");
-+ fprintf(makefile,"CC = mipsel-linux-gcc\n");
- fprintf(makefile,"SRC = src/\n");
- #ifdef BOUNDCHECK
- fprintf(makefile,"CFLAGS = -O -fbounds-checking -fno-builtin\n");
-@@ -450,7 +450,7 @@
- fprintf(makefile,"\n");
- fprintf(makefile,"all: $(OBJS)\n");
- fprintf(makefile," $(CC) -o $(TARGET) $(CFLAGS) $(OBJS) $(LIBS)\n");
-- fprintf(makefile," @strip $(TARGET)\n");
-+ /*fprintf(makefile," @strip $(TARGET)\n");*/
- if(ssl==0)
- {
- if(!fexists("key/psybnc.cert.pem")) /* only create, if not exist */
diff --git a/openwrt/package/psybnc/patches/startscript.patch b/openwrt/package/psybnc/patches/startscript.patch
deleted file mode 100644
index 635213db7b..0000000000
--- a/openwrt/package/psybnc/patches/startscript.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -Naur psybnc/psybnc.sh psybnc_patched/psybnc.sh
---- psybnc/psybnc.sh 1970-01-01 01:00:00.000000000 +0100
-+++ psybnc_finish/psybnc.sh 2005-11-04 12:51:26.478557377 +0100
-@@ -0,0 +1,12 @@
-+#!/bin/sh
-+
-+PDIR=$(pwd);
-+cd /usr/share/psybnc;
-+./psybnc "$@";
-+cd "$PDIR";
-+
-+echo;
-+echo;
-+echo "Configuration is located at /usr/share/psybnc/psybnc.conf";
-+echo "everything can be configured within your chatclient,";
-+echo "after logging in as psybnc_admin ( /bhelp shows bnc help )";
diff --git a/openwrt/package/ptunnel/Config.in b/openwrt/package/ptunnel/Config.in
deleted file mode 100644
index bea6e010e7..0000000000
--- a/openwrt/package/ptunnel/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_PTUNNEL
- prompt "ptunnel........................... Tunnel TCP connections over ICMP packets"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPTHREAD
- help
- ptunnel is an application that allows you to reliably tunnel TCP connections to
- a remote host using ICMP echo request and reply packets, commonly known as ping
- requests and replies. It acts as a proxy and can handle sockets and secured
- identification.
-
- http://www.cs.uit.no/~daniels/PingTunnel/
-
diff --git a/openwrt/package/ptunnel/Makefile b/openwrt/package/ptunnel/Makefile
deleted file mode 100644
index 4a2a3fe63f..0000000000
--- a/openwrt/package/ptunnel/Makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ptunnel
-PKG_VERSION:=0.61
-PKG_RELEASE:=1
-PKG_MD5SUM:=b45f73875f2af48f101816672f83a5fe
-
-PKG_SOURCE_URL:=http://www.cti.ecp.fr/~beauxir5/ptunnel/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PTUNNEL,ptunnel,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- BUILD_CC=$(TARGET_CC) \
- HOSTCC=$(HOSTCC) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_linux_vers=2 \
- td_cv_buggygetaddrinfo="no" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --with-gnu-ld \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_PTUNNEL):
- install -m0755 -d $(IDIR_PTUNNEL)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/ptunnel $(IDIR_PTUNNEL)/usr/sbin/
- $(RSTRIP) $(IDIR_PTUNNEL)
- $(IPKG_BUILD) $(IDIR_PTUNNEL) $(PACKAGE_DIR)
diff --git a/openwrt/package/ptunnel/ipkg/ptunnel.control b/openwrt/package/ptunnel/ipkg/ptunnel.control
deleted file mode 100644
index 0020f1377c..0000000000
--- a/openwrt/package/ptunnel/ipkg/ptunnel.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ptunnel
-Priority: optional
-Section: net
-Description: Tunnel TCP connections over ICMP packets
-Depends: libpcap, libpthread
diff --git a/openwrt/package/pwlib/Config.in b/openwrt/package/pwlib/Config.in
deleted file mode 100644
index 0d9d11c768..0000000000
--- a/openwrt/package/pwlib/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_COMPILE_PWLIB
-# prompt "pwlib............................. Portable Windows library"
- tristate
- select BR2_PACKAGE_LIBPTHREAD
- default n
- help
- Portable Windows library
diff --git a/openwrt/package/pwlib/Makefile b/openwrt/package/pwlib/Makefile
deleted file mode 100644
index 68857ff279..0000000000
--- a/openwrt/package/pwlib/Makefile
+++ /dev/null
@@ -1,104 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pwlib
-PKG_VERSION:=cvs-20051227
-PKG_RELEASE:=1
-PKG_MD5SUM:=7d5b8e9ab61a05658a5630f91505420d
-
-PKG_SOURCE_URL:=http://trash.uid0.hu/openwrt
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PWLIB,pwlib,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- ( cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- CFLAGS="$(TARGET_CFLAGS)" \
- CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- $(TARGET_CONFIGURE_OPTS) \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- \
- --enable-minsize \
- --enable-openh323 \
- --disable-opal \
- --disable-internalregex \
- --disable-plugins \
- --enable-audio \
- --disable-alsa \
- --disable-asn \
- --disable-avc \
- --disable-dc \
- --disable-dtmf \
- --disable-expat \
- --disable-ftp \
- --disable-http \
- --disable-httpsvc \
- --disable-ipv6 \
- --disable-jabber \
- --disable-openldap \
- --disable-openssl \
- --disable-oss \
- --disable-pipechan \
- --disable-pop3smtp \
- --disable-remconn \
- --disable-resolver \
- --disable-qos \
- --disable-sasl \
- --disable-sdl \
- --disable-serial \
- --disable-shm-video \
- --disable-snmp \
- --disable-soap \
- --disable-socks \
- --disable-stun \
- --disable-telnet \
- --disable-tts \
- --disable-v4l \
- --disable-v4l2 \
- --disable-bsdvideo \
- --disable-video \
- --disable-vxml \
- --disable-wavfile \
- --disable-xmlrpc \
- );
- ln -sf $(PKG_NAME)-$(PKG_VERSION) $(BUILD_DIR)/$(PKG_NAME)
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- optnoshared
- touch $@
-
-uninstall-link:
- rm -f $(BUILD_DIR)/$(PKG_NAME)
-
-compile-targets: $(PKG_BUILD_DIR)/.built
-clean-targets: uninstall-link
diff --git a/openwrt/package/pwlib/ipkg/pwlib.control b/openwrt/package/pwlib/ipkg/pwlib.control
deleted file mode 100644
index b573a956b1..0000000000
--- a/openwrt/package/pwlib/ipkg/pwlib.control
+++ /dev/null
@@ -1,11 +0,0 @@
-Package: pwlib
-Priority: optional
-Section: admin
-Description: Portable Windows Library
- "PWLib is a moderately large class library that has its genesis
- many years ago asa method to product applications to run on both M
- icrosoft Windows and Unix X-Windows systems.
- [...]
- Classes for I/O portability, multi-threading portability, aid in
- producing unix daemons and NT services portably and all
- sorts of internet protocols were added over the years." \ No newline at end of file
diff --git a/openwrt/package/pwlib/patches/002-lib_mak.patch b/openwrt/package/pwlib/patches/002-lib_mak.patch
deleted file mode 100644
index 43018bdd60..0000000000
--- a/openwrt/package/pwlib/patches/002-lib_mak.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- pwlib-cvs-20051227/make/lib.mak.orig 2005-09-25 12:51:23.000000000 +0200
-+++ pwlib-cvs-20051227/make/lib.mak 2005-12-30 01:18:21.000000000 +0100
-@@ -201,7 +201,7 @@
- LDSOOPTS += -Wl,--kill-at
- else
- ifneq ($(OSTYPE),Darwin)
-- LDSOOPTS += -Wl,-soname,$(LIB_SONAME)
-+ LDSOOPTS += -soname,$(LIB_SONAME)
- endif
- endif
- LD = $(CPLUS)
diff --git a/openwrt/package/quagga/Config.in b/openwrt/package/quagga/Config.in
deleted file mode 100644
index 758faebf34..0000000000
--- a/openwrt/package/quagga/Config.in
+++ /dev/null
@@ -1,66 +0,0 @@
-menu "quagga............................ The Quagga Software Routing Suite"
-
-config BR2_PACKAGE_QUAGGA
- prompt "quagga............................ The Quagga Software Routing Suite"
- tristate
- default m if CONFIG_DEVEL
- help
- A routing software package that provides TCP/IP based routing services
- with routing protocols support such as RIPv1, RIPv2, RIPng, OSPFv2,
- OSPFv3, BGP-4, and BGP-4+
-
- http://www.quagga.net/
-
-config BR2_PACKAGE_QUAGGA_BGPD
- prompt "quagga-bgpd..................... BGPv4, BGPv4+, BGPv4- routing engine"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_QUAGGA
- help
- A BGPv4, BGPv4+, BGPv4- routing engine for use with Quagga routing
- software.
-
-config BR2_PACKAGE_QUAGGA_OSPFD
- prompt "quagga-ospfd.................... OSPFv2 routing engine"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_QUAGGA
- help
- An OSPFv2 (IPv4) routing engine for use with Quagga routing software.
-
-config BR2_PACKAGE_QUAGGA_OSPF6D
- prompt "quagga-ospf6d................... OSPFv3 routing engine"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_QUAGGA
- help
- An OSPFv3 (IPv6) routing engine for use with Quagga routing software.
-
-config BR2_PACKAGE_QUAGGA_RIPD
- prompt "quagga-ripd..................... RIP routing engine"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_QUAGGA
- help
- A RIP (IPv4) routing engine for use with Quagga routing software.
-
-config BR2_PACKAGE_QUAGGA_RIPNGD
- prompt "quagga-ripngd................... RIPNG routing engine"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_QUAGGA
- help
- A RIPNG (IPv6) routing engine for use with Quagga routing software.
-
-config BR2_PACKAGE_QUAGGA_VTYSH
- prompt "quagga-vtysh.................... integrated shell for Quagga routing software"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_QUAGGA
- select BR2_PACKAGE_LIBREADLINE
- select BR2_PACKAGE_LIBNCURSES
- help
- vtysh lets you interact with all the Quagga routing daemons
- at once in an integrated shell.
-
-endmenu
diff --git a/openwrt/package/quagga/Makefile b/openwrt/package/quagga/Makefile
deleted file mode 100644
index 8b85555807..0000000000
--- a/openwrt/package/quagga/Makefile
+++ /dev/null
@@ -1,125 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=quagga
-PKG_VERSION:=0.98.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=ec09c1ec624aea98e18aa19282666784
-
-PKG_SOURCE_URL:=http://www.quagga.net/download/ \
- http://www.de.quagga.net/download/ \
- http://www.uk.quagga.net/download/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,QUAGGA,quagga,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,QUAGGA_BGPD,quagga-bgpd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,QUAGGA_OSPFD,quagga-ospfd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,QUAGGA_OSPF6D,quagga-ospf6d,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,QUAGGA_RIPD,quagga-ripd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,QUAGGA_RIPNGD,quagga-ripngd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,QUAGGA_VTYSH,quagga-vtysh,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include" \
- LDFLAGS="$(TARGET_LDFLAGS) -L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var/run/quagga \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc/quagga \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --disable-static \
- --enable-ipv6 \
- --enable-vtysh \
- --enable-user=quagga \
- --enable-group=quagga \
- --enable-multipath=8 \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR=$(PKG_INSTALL_DIR) \
- all install
- touch $@
-
-$(IPKG_QUAGGA):
- install -d -m0755 $(IDIR_QUAGGA)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libzebra.so.* $(IDIR_QUAGGA)/usr/lib/
- install -d -m0755 $(IDIR_QUAGGA)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/zebra $(IDIR_QUAGGA)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/watchquagga $(IDIR_QUAGGA)/usr/sbin/
- # avoid /etc being set to 0750
- install -d -m0755 $(IDIR_QUAGGA)/etc/quagga/
- chmod 0750 $(IDIR_QUAGGA)/etc/quagga/
- install -d -m0755 $(IDIR_QUAGGA)/etc/init.d/
- install -m0755 ./files/quagga.init $(IDIR_QUAGGA)/etc/init.d/quagga
- ln -sf quagga $(IDIR_QUAGGA)/etc/init.d/S49quagga
- install -d -m0755 $(IDIR_QUAGGA)/var/run/quagga
- $(RSTRIP) $(IDIR_QUAGGA)
- $(IPKG_BUILD) $(IDIR_QUAGGA) $(PACKAGE_DIR)
-
-$(IPKG_QUAGGA_BGPD):
- install -d -m0755 $(IDIR_QUAGGA_BGPD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/bgpd $(IDIR_QUAGGA_BGPD)/usr/sbin/
- $(RSTRIP) $(IDIR_QUAGGA_BGPD)
- $(IPKG_BUILD) $(IDIR_QUAGGA_BGPD) $(PACKAGE_DIR)
-
-$(IPKG_QUAGGA_OSPFD):
- install -d -m0755 $(IDIR_QUAGGA_OSPFD)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libospf.so.* $(IDIR_QUAGGA_OSPFD)/usr/lib/
- install -d -m0755 $(IDIR_QUAGGA_OSPFD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/ospfd $(IDIR_QUAGGA_OSPFD)/usr/sbin/
- $(RSTRIP) $(IDIR_QUAGGA_OSPFD)
- $(IPKG_BUILD) $(IDIR_QUAGGA_OSPFD) $(PACKAGE_DIR)
-
-$(IPKG_QUAGGA_OSPF6D):
- install -d -m0755 $(IDIR_QUAGGA_OSPF6D)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/ospf6d $(IDIR_QUAGGA_OSPF6D)/usr/sbin/
- $(RSTRIP) $(IDIR_QUAGGA_OSPF6D)
- $(IPKG_BUILD) $(IDIR_QUAGGA_OSPF6D) $(PACKAGE_DIR)
-
-$(IPKG_QUAGGA_RIPD):
- install -d -m0755 $(IDIR_QUAGGA_RIPD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/ripd $(IDIR_QUAGGA_RIPD)/usr/sbin/
- $(RSTRIP) $(IDIR_QUAGGA_RIPD)
- $(IPKG_BUILD) $(IDIR_QUAGGA_RIPD) $(PACKAGE_DIR)
-
-$(IPKG_QUAGGA_RIPNGD):
- install -d -m0755 $(IDIR_QUAGGA_RIPNGD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/ripngd $(IDIR_QUAGGA_RIPNGD)/usr/sbin/
- $(RSTRIP) $(IDIR_QUAGGA_RIPNGD)
- $(IPKG_BUILD) $(IDIR_QUAGGA_RIPNGD) $(PACKAGE_DIR)
-
-$(IPKG_QUAGGA_VTYSH):
- install -d -m0755 $(IDIR_QUAGGA_VTYSH)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/vtysh $(IDIR_QUAGGA_VTYSH)/usr/bin/
- $(RSTRIP) $(IDIR_QUAGGA_VTYSH)
- $(IPKG_BUILD) $(IDIR_QUAGGA_VTYSH) $(PACKAGE_DIR)
diff --git a/openwrt/package/quagga/files/quagga.init b/openwrt/package/quagga/files/quagga.init
deleted file mode 100644
index 01f8d7137d..0000000000
--- a/openwrt/package/quagga/files/quagga.init
+++ /dev/null
@@ -1,333 +0,0 @@
-#!/bin/sh
-#
-# quagga Starts/stops quagga daemons and watchquagga.
-# Create a daemon.conf file to have that routing daemon
-# started/stopped automagically when using this script
-# without any daemon names as args.
-# If watchquagga is available, it will also be
-# started/stopped if the script is called without
-# any daemon names.
-#
-
-ME=$(basename $0)
-
-usage() {
- echo "Usage: ${ME} {start|stop|restart} [daemon ...]"
- exit 2
-}
-
-if [ -z "$1" ]
-then
- usage
-else
- COMMAND=$1
-fi
-shift
-ARG_DAEMONS=$*
-BINDIR=/usr/sbin
-CONFDIR=/etc/quagga
-STATEDIR=/var/run/quagga
-DAEMONS="zebra ripd ripngd ospfd ospf6d bgpd"
-DAEMON_FLAGS=-d
-WATCHQUAGGA_FLAGS="-d -z -T 60 -R"
-WATCHQUAGGA_CMD="$0 watchrestart"
-if [ ${COMMAND} != "watchrestart" ]
-then
- DAEMONS="${DAEMONS} watchquagga"
-fi
-DAEMONS_STARTSEQ=${DAEMONS}
-
-reverse()
-{
- local revlist r
- revlist=
- for r
- do
- revlist="$r $revlist"
- done
- echo $revlist
-}
-
-DAEMONS_STOPSEQ=$(reverse ${DAEMONS_STARTSEQ})
-
-#pidof() {
-# ps ax | awk 'match($5, "(^|/)'"$1"'$") > 0 { printf " %s", $1 }'
-#}
-
-quit() {
- echo "${ME}: $1"
- exit 0
-}
-
-die() {
- echo "${ME}: $1"
- exit 1
-}
-
-is_in() {
- local i
- for i in $2
- do
- [ "$1" = "$i" ] && return 0
- done
- return 1
-}
-
-select_subset() {
- local unknown i j
- unknown=
- RESULT=
- for i in $1
- do
- is_in $i "$2" || unknown="$unknown $i"
- done
- if [ -n "$unknown" ]
- then
- RESULT=$unknown
- return 1
- else
- for j in $2
- do
- is_in $j "$1" && RESULT="$RESULT $j"
- done
- return 0
- fi
-}
-
-# check command
-
-case ${COMMAND}
-in
- start|stop|restart)
- ;;
- watchrestart)
- if [ -n "$ARG_DAEMONS" ]
- then
- echo "${ME}: watchrestart mode is only for use by watchquagga"
- exit 2
- fi
- ;;
- *)
- usage
- ;;
-esac
-
-# select daemons to start
-
-case ${COMMAND}
-in
- start|restart|watchrestart)
- START_DAEMONS=
- for d in ${DAEMONS_STARTSEQ}
- do
- [ -x "${BINDIR}/${d}" -a -f "${CONFDIR}/${d}.conf" ] \
- && START_DAEMONS="${START_DAEMONS}${d} "
- done
- WATCHQUAGGA_DAEMONS=${START_DAEMONS}
- if is_in watchquagga "${DAEMONS_STARTSEQ}"
- then
- START_DAEMONS="${START_DAEMONS} watchquagga"
- fi
- if [ -n "${ARG_DAEMONS}" ]
- then
- if select_subset "${ARG_DAEMONS}" "${DAEMONS}"
- then
- if select_subset "${ARG_DAEMONS}" "${START_DAEMONS}"
- then
- START_DAEMONS=${RESULT}
- else
- die "these daemons are not startable:${RESULT}."
- fi
- else
- die "unknown daemons:${RESULT}; choose from: ${DAEMONS}."
- fi
- fi
- ;;
-esac
-
-# select daemons to stop
-
-case ${COMMAND}
-in
- stop|restart|watchrestart)
- STOP_DAEMONS=${DAEMONS_STOPSEQ}
- if [ -n "${ARG_DAEMONS}" ]
- then
- if select_subset "${ARG_DAEMONS}" "${STOP_DAEMONS}"
- then
- STOP_DAEMONS=${RESULT}
- else
- die "unknown daemons:${RESULT}; choose from: ${DAEMONS}."
- fi
- fi
- stop_daemons=
- for d in ${STOP_DAEMONS}
- do
- pidfile=${STATEDIR}/${d}.pid
- if [ -f "${pidfile}" -o -n "$(pidof ${d})" ]
- then
- stop_daemons="${stop_daemons}${d} "
- elif [ -n "${ARG_DAEMONS}" ]
- then
- echo "${ME}: found no ${d} process running."
- fi
- done
- STOP_DAEMONS=${stop_daemons}
- ;;
-esac
-
-# stop daemons
-
-for d in $STOP_DAEMONS
-do
- echo -n "${ME}: Stopping ${d} ... "
- pidfile=${STATEDIR}/${d}.pid
- if [ -f "${pidfile}" ]
- then
- file_pid=$(cat ${pidfile})
- if [ -z "${file_pid}" ]
- then
- echo -n "no pid file entry found ... "
- fi
- else
- file_pid=
- echo -n "no pid file found ... "
- fi
- proc_pid=$(pidof ${d})
- if [ -z "${proc_pid}" ]
- then
- echo -n "found no ${d} process running ... "
- else
- count=0
- notinpidfile=
- for p in ${proc_pid}
- do
- count=$((${count}+1))
- if kill ${p}
- then
- echo -n "killed ${p} ... "
- else
- echo -n "failed to kill ${p} ... "
- fi
- [ "${p}" = "${file_pid}" ] \
- || notinpidfile="${notinpidfile} ${p}"
- done
- [ ${count} -le 1 ] \
- || echo -n "WARNING: ${count} ${d} processes were found running ... "
- for n in ${notinpidfile}
- do
- echo -n "WARNING: process ${n} was not in pid file ... "
- done
- fi
- count=0
- survivors=$(pidof ${d})
- while [ -n "${survivors}" ]
- do
- sleep 1
- count=$((${count}+1))
- survivors=$(pidof ${d})
- [ -z "${survivors}" -o ${count} -gt 5 ] && break
- for p in ${survivors}
- do
- sleep 1
- echo -n "${p} "
- kill ${p}
- done
- done
- survivors=$(pidof ${d})
- [ -n "${survivors}" ] && \
- if kill -KILL ${survivors}
- then
- echo -n "KILLed ${survivors} ... "
- else
- echo -n "failed to KILL ${survivors} ... "
- fi
- sleep 1
- survivors=$(pidof ${d})
- if [ -z "${survivors}" ]
- then
- echo -n "done."
- if [ -f "${pidfile}" ]
- then
- rm -f ${pidfile} \
- || echo -n " Failed to remove pidfile."
- fi
- else
- echo -n "failed to stop ${survivors} - giving up."
- if [ "${survivors}" != "${file_pid}" ]
- then
- if echo "${survivors}" > ${pidfile}
- then
- chown quagga:quagga ${pidfile}
- echo -n " Wrote ${survivors} to pidfile."
- else
- echo -n " Failed to write ${survivors} to pidfile."
- fi
- fi
- fi
- echo
-done
-
-# start daemons
-
-if [ -n "$START_DAEMONS" ]
-then
- [ -d ${CONFDIR} ] \
- || quit "${ME}: no config directory ${CONFDIR} - exiting."
- chown -R quagga:quagga ${CONFDIR}
- [ -d ${STATEDIR} ] || mkdir -p ${STATEDIR} \
- || die "${ME}: could not create state directory ${STATEDIR} - exiting."
- chown -R quagga:quagga ${STATEDIR}
-
- for d in $START_DAEMONS
- do
- echo -n "${ME}: Starting ${d} ... "
- proc_pid=$(pidof ${d})
- pidfile=${STATEDIR}/${d}.pid
- file_pid=
- if [ -f "${pidfile}" ]
- then
- file_pid=$(cat ${pidfile})
- if [ -n "${file_pid}" ]
- then
- echo -n "found old pid file entry ${file_pid} ... "
- fi
- fi
- if [ -n "${proc_pid}" ]
- then
- echo -n "found ${d} running (${proc_pid}) - skipping ${d}."
- if [ "${proc_pid}" != "${file_pid}" ]
- then
- if echo "${proc_pid}" > ${pidfile}
- then
- chown quagga:quagga ${pidfile}
- echo -n " Wrote ${proc_pid} to pidfile."
- else
- echo -n " Failed to write ${proc_pid} to pidfile."
- fi
- fi
- elif rm -f "${pidfile}"
- then
- if [ "${d}" = "watchquagga" ]
- then
- $("${BINDIR}/${d}" \
- ${WATCHQUAGGA_FLAGS} \
- "${WATCHQUAGGA_CMD}" \
- ${WATCHQUAGGA_DAEMONS})
- status=$?
- else
- $("${BINDIR}/${d}" ${DAEMON_FLAGS})
- status=$?
- fi
- if [ $status -eq 0 ]
- then
- echo -n "done."
- else
- echo -n "failed."
- fi
- else
- echo -n " failed to remove pidfile."
- fi
- echo
- done
-fi
diff --git a/openwrt/package/quagga/ipkg/quagga-bgpd.control b/openwrt/package/quagga/ipkg/quagga-bgpd.control
deleted file mode 100644
index d8e9b80b2c..0000000000
--- a/openwrt/package/quagga/ipkg/quagga-bgpd.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: quagga-bgpd
-Priority: optional
-Section: net
-Depends: quagga
-Description: A BGPv4, BGPv4+, BGPv4- routing engine for use with Quagga
- routing software
diff --git a/openwrt/package/quagga/ipkg/quagga-ospf6d.control b/openwrt/package/quagga/ipkg/quagga-ospf6d.control
deleted file mode 100644
index 07cf20582b..0000000000
--- a/openwrt/package/quagga/ipkg/quagga-ospf6d.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: quagga-ospf6d
-Priority: optional
-Section: net
-Depends: quagga
-Description: An OSPFv3 routing engine for use with Quagga
- routing software
diff --git a/openwrt/package/quagga/ipkg/quagga-ospfd.control b/openwrt/package/quagga/ipkg/quagga-ospfd.control
deleted file mode 100644
index c9fc77ce81..0000000000
--- a/openwrt/package/quagga/ipkg/quagga-ospfd.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: quagga-ospfd
-Priority: optional
-Section: net
-Depends: quagga
-Description: An OSPFv2 routing engine for use with Quagga
- routing software
diff --git a/openwrt/package/quagga/ipkg/quagga-ripd.control b/openwrt/package/quagga/ipkg/quagga-ripd.control
deleted file mode 100644
index e7ff899523..0000000000
--- a/openwrt/package/quagga/ipkg/quagga-ripd.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: quagga-ripd
-Priority: optional
-Section: net
-Depends: quagga
-Description: A RIP routing engine for use with Quagga
- routing software
diff --git a/openwrt/package/quagga/ipkg/quagga-ripngd.control b/openwrt/package/quagga/ipkg/quagga-ripngd.control
deleted file mode 100644
index f6b2804c24..0000000000
--- a/openwrt/package/quagga/ipkg/quagga-ripngd.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: quagga-ripngd
-Priority: optional
-Section: net
-Depends: quagga
-Description: A RIPNG routing engine for use with Quagga
- routing software
diff --git a/openwrt/package/quagga/ipkg/quagga-vtysh.control b/openwrt/package/quagga/ipkg/quagga-vtysh.control
deleted file mode 100644
index b26d11df33..0000000000
--- a/openwrt/package/quagga/ipkg/quagga-vtysh.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: quagga-vtysh
-Priority: optional
-Section: net
-Depends: quagga, libncurses, libreadline
-Description: integrated shell for interacting with Quagga
- routing software
diff --git a/openwrt/package/quagga/ipkg/quagga.control b/openwrt/package/quagga/ipkg/quagga.control
deleted file mode 100644
index 303f299e81..0000000000
--- a/openwrt/package/quagga/ipkg/quagga.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: quagga
-Priority: optional
-Section: net
-Description: A routing software package that provides TCP/IP
- based routing services with routing protocols support such
- as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+.
diff --git a/openwrt/package/quagga/ipkg/quagga.postinst b/openwrt/package/quagga/ipkg/quagga.postinst
deleted file mode 100644
index 90ffe61e28..0000000000
--- a/openwrt/package/quagga/ipkg/quagga.postinst
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/sh
-
-name=quagga
-id=51
-dir=/var/run/quagga
-
-# do not change below
-# check if we are on real system
-if [ -z "${IPKG_INSTROOT}" ]; then
- # create copies of passwd and group, if we use squashfs
- rootfs=`mount |awk '/root/ { print $5 }'`
- if [ "$rootfs" = "squashfs" ]; then
- if [ -h /etc/group ]; then
- rm /etc/group
- cp /rom/etc/group /etc/group
- fi
- if [ -h /etc/passwd ]; then
- rm /etc/passwd
- cp /rom/etc/passwd /etc/passwd
- fi
- fi
-fi
-
-echo ""
-if [ -z "$(grep ^\\${name}: ${IPKG_INSTROOT}/etc/group)" ]; then
- echo "adding group $name to /etc/group"
- echo "${name}:x:${id}:" >> ${IPKG_INSTROOT}/etc/group
-fi
-
-if [ -z "$(grep ^\\${name}: ${IPKG_INSTROOT}/etc/passwd)" ]; then
- echo "adding user $name to /etc/passwd"
- echo "${name}:x:${id}:${id}:${name}:/tmp/.${name}:/bin/false" >> ${IPKG_INSTROOT}/etc/passwd
-fi
-
-grep -q '^zebra[[:space:]]*2601/tcp' ${IPKG_INSTROOT}/etc/services 2>/dev/null
-if [ $? -ne 0 ]; then
-echo "zebrasrv 2600/tcp" >>${IPKG_INSTROOT}/etc/services
-echo "zebra 2601/tcp" >>${IPKG_INSTROOT}/etc/services
-echo "ripd 2602/tcp" >>${IPKG_INSTROOT}/etc/services
-echo "ripngd 2603/tcp" >>${IPKG_INSTROOT}/etc/services
-echo "ospfd 2604/tcp" >>${IPKG_INSTROOT}/etc/services
-echo "bgpd 2605/tcp" >>${IPKG_INSTROOT}/etc/services
-echo "ospf6d 2606/tcp" >>${IPKG_INSTROOT}/etc/services
-echo "ospfapi 2607/tcp" >>${IPKG_INSTROOT}/etc/services
-echo "isisd 2608/tcp" >>${IPKG_INSTROOT}/etc/services
-fi
-
-chown -R $name:$name $dir
diff --git a/openwrt/package/quagga/patches/quagga-cross.patch b/openwrt/package/quagga/patches/quagga-cross.patch
deleted file mode 100644
index 5b8276bcc1..0000000000
--- a/openwrt/package/quagga/patches/quagga-cross.patch
+++ /dev/null
@@ -1,84 +0,0 @@
---- quagga-0.98.4/configure.orig Mon Jun 27 19:05:31 2005
-+++ quagga-0.98.4/configure Mon Jul 11 20:32:07 2005
-@@ -12623,69 +12623,6 @@
-
-
-
--echo "$as_me:$LINENO: checking for broken CMSG_FIRSTHDR" >&5
--echo $ECHO_N "checking for broken CMSG_FIRSTHDR... $ECHO_C" >&6
--if test "$cross_compiling" = yes; then
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--else
-- cat >conftest.$ac_ext <<_ACEOF
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--
--#ifdef SUNOS_5
--#define _XPG4_2
--#define __EXTENSIONS__
--#endif
--#include <stdlib.h>
--#include <sys/types.h>
--#include <sys/socket.h>
--
--main()
--{
-- struct msghdr msg;
-- char buf[4];
--
-- msg.msg_control = buf;
-- msg.msg_controllen = 0;
--
-- if (CMSG_FIRSTHDR(&msg) != NULL)
-- exit(0);
-- exit (1);
--}
--_ACEOF
--rm -f conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-- echo "$as_me:$LINENO: result: yes - using workaround" >&5
--echo "${ECHO_T}yes - using workaround" >&6
--cat >>confdefs.h <<\_ACEOF
--#define HAVE_BROKEN_CMSG_FIRSTHDR
--_ACEOF
--
--else
-- echo "$as_me: program exited with status $ac_status" >&5
--echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--( exit $ac_status )
--echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
--fi
--
- echo "$as_me:$LINENO: checking route read method check" >&5
- echo $ECHO_N "checking route read method check... $ECHO_C" >&6
- if test "${zebra_rtread+set}" = set; then
-@@ -12783,10 +12720,7 @@
- if test "${zebra_ipforward_path+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
--do
-- test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
--done
-+ zebra_ipforward_path="/proc/net/snmp"
- case $zebra_ipforward_path in
- "/proc/net/snmp") IPFORWARD=ipforward_proc.o
- zebra_ipforward_path="proc";;
diff --git a/openwrt/package/quagga/patches/quagga-readline.patch b/openwrt/package/quagga/patches/quagga-readline.patch
deleted file mode 100644
index 8e3b805621..0000000000
--- a/openwrt/package/quagga/patches/quagga-readline.patch
+++ /dev/null
@@ -1,58 +0,0 @@
---- quagga-0.98.4/configure.orig Mon Jun 27 19:05:31 2005
-+++ quagga-0.98.4/configure Thu Jul 28 07:02:12 2005
-@@ -10937,7 +10937,7 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- ac_check_lib_save_LIBS=$LIBS
--LIBS="-lcurses $LIBS"
-+#LIBS="-lcurses $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -11071,7 +11071,8 @@
- #define HAVE_LIBNCURSES 1
- _ACEOF
-
-- LIBS="-lncurses $LIBS"
-+# LIBS="-lncurses $LIBS"
-+CURSES=-lncurses
-
- fi
-
-@@ -11088,7 +11089,7 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- ac_check_lib_save_LIBS=$LIBS
--LIBS="-lreadline $LIBS"
-+LIBS="-lreadline $CURSES $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -11144,7 +11145,8 @@
- #define HAVE_LIBREADLINE 1
- _ACEOF
-
-- LIBS="-lreadline $LIBS"
-+# LIBS="-lreadline $LIBS"
-+CURSES="$CURSES -lreadline"
-
- fi
-
-@@ -11303,7 +11305,7 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- ac_check_lib_save_LIBS=$LIBS
--LIBS="-lreadline $LIBS"
-+LIBS="-lreadline $CURSES $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -11365,7 +11367,7 @@
- #define HAVE_LIBREADLINE 1
- _ACEOF
-
-- LIBS="-lreadline $LIBS"
-+# LIBS="-lreadline $LIBS"
-
- fi
-
diff --git a/openwrt/package/raddump/Config.in b/openwrt/package/raddump/Config.in
deleted file mode 100755
index 68f391d52a..0000000000
--- a/openwrt/package/raddump/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_RADDUMP
- prompt "raddump........................... raddump interprets captured RADIUS packets."
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_LIBPCAP
- help
- raddump interprets captured RADIUS packets to print a
- timestamp, packet length, RADIUS packet type, source and
- destination hosts and ports, and included attribute names and
- values for each packet.
diff --git a/openwrt/package/raddump/Makefile b/openwrt/package/raddump/Makefile
deleted file mode 100755
index 1526ea80a8..0000000000
--- a/openwrt/package/raddump/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=raddump
-PKG_VERSION:=0.3.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=f8c29c67141ea78bb6ae8b97d5149480
-PKG_SOURCE_URL:=@SF/raddump
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=zcat
-
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,RADDUMP,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- ac_cv_c_bigendian=no \
- ac_cv_func_malloc_0_nonnull=yes \
- ac_cv_func_realloc_0_nonnull=yes \
- $(DISABLE_NLS) \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --program-prefix="" \
- --with-gnu-ld \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) DESTDIR=$(PKG_INSTALL_DIR) -C $(PKG_BUILD_DIR) install
- touch $@
-
-$(IPKG_RADDUMP):
- mkdir -p $(IDIR_RADDUMP)
- $(CP) $(PKG_INSTALL_DIR)/* $(IDIR_RADDUMP)/
- $(RSTRIP) $(IDIR_RADDUMP)
- $(IPKG_BUILD) $(IDIR_RADDUMP) $(PACKAGE_DIR)
diff --git a/openwrt/package/raddump/ipkg/raddump.control b/openwrt/package/raddump/ipkg/raddump.control
deleted file mode 100755
index 2d31b0221a..0000000000
--- a/openwrt/package/raddump/ipkg/raddump.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: raddump
-Depends: libpcap, libopenssl
-Section: net
-Architecture: mipsel
-Priority: optional
-Description: raddump interprets captured RADIUS packets to print a timestamp, packet length, RADIUS packet type, source and destination hosts and ports, and included attribute names and values for each packet.
diff --git a/openwrt/package/radiusclient-ng/Config.in b/openwrt/package/radiusclient-ng/Config.in
deleted file mode 100644
index 7a2c171280..0000000000
--- a/openwrt/package/radiusclient-ng/Config.in
+++ /dev/null
@@ -1,27 +0,0 @@
-config BR2_COMPILE_RADIUSCLIENT_NG
- tristate
- default n
- depends BR2_PACKAGE_LIBRADIUSCLIENT_NG
-
-config BR2_PACKAGE_RADIUSCLIENT_NG
- prompt "radiusclient-ng................... RADIUS client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_LIBRADIUSCLIENT_NG
- help
- Purpose of this project is to build portable, easy-to-use and standard compliant
- library suitable for developing free and commercial software that need support
- for a RADIUS protocol (RFCs 2128 and 2139).
-
- http://developer.berlios.de/projects/radiusclient-ng/
-
- Depends: libopenssl
-
-config BR2_PACKAGE_LIBRADIUSCLIENT_NG
- prompt "libradiusclient-ng................ RADIUS client library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_RADIUSCLIENT_NG
- help
- Developpment library from radiusclient-ng
diff --git a/openwrt/package/radiusclient-ng/Makefile b/openwrt/package/radiusclient-ng/Makefile
deleted file mode 100644
index 5814202aa2..0000000000
--- a/openwrt/package/radiusclient-ng/Makefile
+++ /dev/null
@@ -1,80 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=radiusclient-ng
-PKG_VERSION:=0.5.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=c54eb70e964bdd22dd44b39a9b4df8ca
-
-PKG_SOURCE_URL:=http://download.berlios.de/radiusclient-ng/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,RADIUSCLIENT_NG,radiusclient-ng,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LIBRADIUSCLIENT_NG,libradiusclient-ng,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ac_cv_func_getdomainname=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR=$(PKG_INSTALL_DIR) \
- install-exec install-data
- touch $@
-
-$(IPKG_RADIUSCLIENT_NG):
- mkdir -p $(IDIR_RADIUSCLIENT_NG)/usr
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin $(IDIR_RADIUSCLIENT_NG)/usr/
- $(CP) $(PKG_INSTALL_DIR)/etc $(IDIR_RADIUSCLIENT_NG)/
- $(RSTRIP) $(IDIR_RADIUSCLIENT_NG)/
- $(IPKG_BUILD) $(IDIR_RADIUSCLIENT_NG) $(PACKAGE_DIR)
-
-$(IPKG_LIBRADIUSCLIENT_NG):
- mkdir -p $(IDIR_LIBRADIUSCLIENT_NG)/usr
- $(CP) $(PKG_INSTALL_DIR)/usr/lib $(IDIR_LIBRADIUSCLIENT_NG)/usr/
- $(RSTRIP) $(IDIR_LIBRADIUSCLIENT_NG)/
- $(IPKG_BUILD) $(IDIR_LIBRADIUSCLIENT_NG) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libradiusclient-ng.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/ $(STAGING_DIR)/usr/
- mkdir -p $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libradiusclient-ng{a,la,so}* $(STAGING_DIR)/usr/lib/
- touch $@
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/radiusclient-ng/ipkg/libradiusclient-ng.control b/openwrt/package/radiusclient-ng/ipkg/libradiusclient-ng.control
deleted file mode 100644
index 8b8726cd22..0000000000
--- a/openwrt/package/radiusclient-ng/ipkg/libradiusclient-ng.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libradiusclient-ng
-Section: libs
-Description: RADIUS client library
-Priority: optional
diff --git a/openwrt/package/radiusclient-ng/ipkg/radiusclient-ng.control b/openwrt/package/radiusclient-ng/ipkg/radiusclient-ng.control
deleted file mode 100644
index d11a837bdc..0000000000
--- a/openwrt/package/radiusclient-ng/ipkg/radiusclient-ng.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: radiusclient-ng
-Section: net
-Description: RADIUS client
-Priority: optional
-Depends: libopenssl
diff --git a/openwrt/package/radiusclient-ng/patches/01-cross_compile.patch b/openwrt/package/radiusclient-ng/patches/01-cross_compile.patch
deleted file mode 100644
index fa45afb12d..0000000000
--- a/openwrt/package/radiusclient-ng/patches/01-cross_compile.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-diff -urN radiusclient-ng-0.5.2/configure radiusclient-ng-0.5.2.new/configure
---- radiusclient-ng-0.5.2/configure 2005-11-07 22:18:59.000000000 +0100
-+++ radiusclient-ng-0.5.2.new/configure 2006-03-10 01:51:59.489383320 +0100
-@@ -23791,8 +23791,7 @@
- { { 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; }; }
-+See \`config.log' for more details." >&2;} }
- else
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
-diff -urN radiusclient-ng-0.5.2/etc/Makefile.in radiusclient-ng-0.5.2.new/etc/Makefile.in
---- radiusclient-ng-0.5.2/etc/Makefile.in 2005-11-08 00:15:35.000000000 +0100
-+++ radiusclient-ng-0.5.2.new/etc/Makefile.in 2006-03-10 01:58:29.345116240 +0100
-@@ -376,9 +376,9 @@
- <$(srcdir)/radiusclient.conf.in >radiusclient.conf
-
- install-data-local: servers
-- $(mkinstalldirs) $(pkgsysconfdir); \
-- echo " $(INSTALL) -m 600 $(srcdir)/servers $(pkgsysconfdir)/servers"; \
-- $(INSTALL) -m 600 $(srcdir)/servers $(pkgsysconfdir)/servers
-+ $(mkinstalldirs) $(DESTDIR)/$(pkgsysconfdir); \
-+ echo " $(INSTALL) -m 600 $(srcdir)/servers $(DESTDIR)/$(pkgsysconfdir)/servers"; \
-+ $(INSTALL) -m 600 $(srcdir)/servers $(DESTDIR)/$(pkgsysconfdir)/servers
-
- uninstall-local:
- rm -f $(pkgsysconfdir)/servers
diff --git a/openwrt/package/radvd/Config.in b/openwrt/package/radvd/Config.in
deleted file mode 100644
index 46bc355dbe..0000000000
--- a/openwrt/package/radvd/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_RADVD
- prompt "radvd............................. IPv6 Routing Advertisement Daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_KMOD_IPV6
- help
- Routing Advertisement Daemon for IPv6
-
- http://v6web.litech.org/radvd/
-
diff --git a/openwrt/package/radvd/Makefile b/openwrt/package/radvd/Makefile
deleted file mode 100644
index e31264b028..0000000000
--- a/openwrt/package/radvd/Makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=radvd
-PKG_VERSION:=0.7.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=56ce3f8cbf5966a0d531c21813320423
-
-PKG_SOURCE_URL:=http://v6web.litech.org/radvd/dist \
- http://download.sourcemage.org/mirror
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,RADVD,radvd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --with-configfile=/etc/radvd.conf \
- --with-logfile=/var/log/radvd.log \
- --with-pidfile=/var/run/radvd.pid \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- radvd_LDADD=""
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- touch $@
-
-$(IPKG_RADVD):
- install -d -m0755 $(IDIR_RADVD)/etc
- install -m0644 ./files/radvd.conf $(IDIR_RADVD)/etc/radvd.conf
- install -d -m0755 $(IDIR_RADVD)/etc/init.d
- install -m0755 ./files/radvd.init $(IDIR_RADVD)/etc/init.d/S51radvd
- install -d -m0755 $(IDIR_RADVD)/usr/sbin
- install -m 755 $(PKG_INSTALL_DIR)/usr/sbin/radvd $(IDIR_RADVD)/usr/sbin/
- install -m 755 $(PKG_INSTALL_DIR)/usr/sbin/radvdump $(IDIR_RADVD)/usr/sbin/
- $(RSTRIP) $(IDIR_RADVD)
- $(IPKG_BUILD) $(IDIR_RADVD) $(PACKAGE_DIR)
diff --git a/openwrt/package/radvd/files/radvd.conf b/openwrt/package/radvd/files/radvd.conf
deleted file mode 100644
index 06d8357041..0000000000
--- a/openwrt/package/radvd/files/radvd.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-# For more examples, see the radvd documentation.
-
-interface br0
-{
- AdvSendAdvert off;
-
-#
-# Disable Mobile IPv6 support
-#
- AdvHomeAgentFlag off;
-
-#
-# example of a standard prefix
-#
- prefix fec0:0:0:1::/64
- {
- AdvOnLink on;
- AdvAutonomous on;
- AdvRouterAddr off;
- };
-
-};
diff --git a/openwrt/package/radvd/files/radvd.init b/openwrt/package/radvd/files/radvd.init
deleted file mode 100644
index 2d9e500090..0000000000
--- a/openwrt/package/radvd/files/radvd.init
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-case "$1" in
- start)
- echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
- mkdir -p /var/log
- mkdir -p /var/run
- /usr/sbin/radvd
- ;;
-
- stop)
- killall radvd
- echo 0 > /proc/sys/net/ipv6/conf/all/forwarding
- ;;
-
- restart)
- $0 stop
- $0 start
- ;;
- *)
- echo "Usage: $0 {start|stop|restart}"
- exit 1
- ;;
-esac
diff --git a/openwrt/package/radvd/ipkg/radvd.conffiles b/openwrt/package/radvd/ipkg/radvd.conffiles
deleted file mode 100644
index a1418c0a1c..0000000000
--- a/openwrt/package/radvd/ipkg/radvd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/radvd.conf
diff --git a/openwrt/package/radvd/ipkg/radvd.control b/openwrt/package/radvd/ipkg/radvd.control
deleted file mode 100644
index 67df96e731..0000000000
--- a/openwrt/package/radvd/ipkg/radvd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: radvd
-Priority: optional
-Section: net
-Depends: kmod-ipv6
-Description: Routing Advertisement Daemon for IPv6
diff --git a/openwrt/package/radvd/patches/no-libfl.patch b/openwrt/package/radvd/patches/no-libfl.patch
deleted file mode 100644
index e17a127c95..0000000000
--- a/openwrt/package/radvd/patches/no-libfl.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN radvd-0.7.3.old/scanner.l radvd-0.7.3/scanner.l
---- radvd-0.7.3.old/scanner.l 2004-10-26 07:30:34.000000000 +0200
-+++ radvd-0.7.3/scanner.l 2005-04-05 00:01:42.000000000 +0200
-@@ -21,6 +21,8 @@
-
- extern char *conf_file;
-
-+int yywrap(void) { return 1; }
-+
- int num_lines = 1;
- %}
-
diff --git a/openwrt/package/rarpd/Config.in b/openwrt/package/rarpd/Config.in
deleted file mode 100644
index 648866938d..0000000000
--- a/openwrt/package/rarpd/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_RARPD
- prompt "rarpd............................. Reverse ARP Daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBNET
- help
- Rarpd is a daemon which responds to RARP requests.
- RARP is used by some machines at boot time to discover their
- IP address. They provide their Ethernet address and rarpd
- responds with their IP address if it finds it in the ethers
- database.
-
- ftp://ftp.dementia.org/pub/net-tools/
-
diff --git a/openwrt/package/rarpd/Makefile b/openwrt/package/rarpd/Makefile
deleted file mode 100644
index b91cd83a43..0000000000
--- a/openwrt/package/rarpd/Makefile
+++ /dev/null
@@ -1,79 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=rarpd
-PKG_VERSION:=1.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=04e2ca849e758d0b88c8281775ec3b58
-
-PKG_SOURCE_URL:=ftp://ftp.dementia.org/pub/net-tools
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-# Hack Alert!
-# The configure script for rarpd, when used with the --with-libnet option
-# doesn't correctly detect and set -DNEW_LIBNET_INTERFACE.
-EXTRA_CFLAGS = -DNEW_LIBNET_INTERFACE
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,RARPD,rarpd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-I$(STAGING_DIR)/usr/lib -I$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --with-libnet="$(STAGING_DIR)/usr" \
- --with-pcap="$(STAGING_DIR)/usr" \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_RARPD):
- install -d -m0755 $(IDIR_RARPD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/rarpd $(IDIR_RARPD)/usr/sbin/
- install -d -m0755 $(IDIR_RARPD)/etc/default
- install -m644 ./files/rarpd.default $(IDIR_RARPD)/etc/default/rarpd
- install -d -m0755 $(IDIR_RARPD)/etc/init.d
- install -m755 ./files/rarpd.init $(IDIR_RARPD)/etc/init.d/rarpd
- ln -sf rarpd $(IDIR_RARPD)/etc/init.d/S50rarpd
- $(RSTRIP) $(IDIR_RARPD)
- $(IPKG_BUILD) $(IDIR_RARPD) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/rarpd/files/rarpd.default b/openwrt/package/rarpd/files/rarpd.default
deleted file mode 100644
index 1dd41e9b37..0000000000
--- a/openwrt/package/rarpd/files/rarpd.default
+++ /dev/null
@@ -1,4 +0,0 @@
-# /etc/default/rarpd
-#
-# Only listen on vlan0
-#OPTIONS="-i vlan0"
diff --git a/openwrt/package/rarpd/files/rarpd.init b/openwrt/package/rarpd/files/rarpd.init
deleted file mode 100644
index 04ca0b4f38..0000000000
--- a/openwrt/package/rarpd/files/rarpd.init
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-RARPD=/usr/sbin/rarpd
-DEFAULT=/etc/default/rarpd
-[ -f $DEFAULT ] && . $DEFAULT
-
-$RARPD $OPTIONS
diff --git a/openwrt/package/rarpd/ipkg/rarpd.conffiles b/openwrt/package/rarpd/ipkg/rarpd.conffiles
deleted file mode 100644
index 067611849b..0000000000
--- a/openwrt/package/rarpd/ipkg/rarpd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/default/rarpd
diff --git a/openwrt/package/rarpd/ipkg/rarpd.control b/openwrt/package/rarpd/ipkg/rarpd.control
deleted file mode 100644
index 221e869af2..0000000000
--- a/openwrt/package/rarpd/ipkg/rarpd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: rarpd
-Priority: optional
-Section: net
-Depends: libnet
-Description: Reverse ARP Daemon
diff --git a/openwrt/package/readline/Config.in b/openwrt/package/readline/Config.in
deleted file mode 100644
index 9c5519b4d9..0000000000
--- a/openwrt/package/readline/Config.in
+++ /dev/null
@@ -1,20 +0,0 @@
-config BR2_COMPILE_READLINE
- tristate
- default n
- depends BR2_PACKAGE_LIBREADLINE
-
-config BR2_PACKAGE_LIBREADLINE
- prompt "libreadline....................... Command lines edition library"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_READLINE
- help
- The Readline library provides a set of functions for use by applications
- that allow users to edit command lines as they are typed in. Both Emacs
- and vi editing modes are available. The Readline library includes
- additional functions to maintain a list of previously-entered command
- lines, to recall and perhaps reedit those lines, and perform csh-like
- history expansion on previous commands.
-
- http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html
-
diff --git a/openwrt/package/readline/Makefile b/openwrt/package/readline/Makefile
deleted file mode 100644
index 2e044a1844..0000000000
--- a/openwrt/package/readline/Makefile
+++ /dev/null
@@ -1,82 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=readline
-PKG_VERSION:=5.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=
-
-PKG_SOURCE_URL:=@GNU/readline
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBREADLINE,libreadline,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --with-curses \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBREADLINE):
- install -m0755 -d $(IDIR_LIBREADLINE)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{history,readline}.so.* $(IDIR_LIBREADLINE)/usr/lib/
- $(RSTRIP) $(IDIR_LIBREADLINE)
- $(IPKG_BUILD) $(IDIR_LIBREADLINE) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libreadline.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/readline $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{history,readline}.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libreadline.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/readline \
- $(STAGING_DIR)/usr/lib/lib{history,readline}.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/readline/ipkg/libreadline.control b/openwrt/package/readline/ipkg/libreadline.control
deleted file mode 100644
index d1c71e4b85..0000000000
--- a/openwrt/package/readline/ipkg/libreadline.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libreadline
-Priority: optional
-Section: libs
-Description: Command lines edition library
diff --git a/openwrt/package/reaim/Config.in b/openwrt/package/reaim/Config.in
deleted file mode 100644
index 02cda070d4..0000000000
--- a/openwrt/package/reaim/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_REAIM
- prompt "reaim............................. A transparent AIM / MSN proxy"
- tristate
- default m if CONFIG_DEVEL
- help
- ReAIM is a proxy for file transfers with MSN/AIM.
-
- http://reaim.sourceforge.net/
-
diff --git a/openwrt/package/reaim/Makefile b/openwrt/package/reaim/Makefile
deleted file mode 100644
index 959e0de91d..0000000000
--- a/openwrt/package/reaim/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=reaim
-PKG_VERSION:=0.8
-PKG_RELEASE:=1
-PKG_MD5SUM:=647d2ab72ec454f89294accfb3182c09
-
-PKG_SOURCE_URL:=@SF/reaim
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,REAIM,reaim,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- CFLAGS="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_REAIM):
- install -d -m0755 $(IDIR_REAIM)/etc/init.d
- install -m0755 ./files/reaim.init $(IDIR_REAIM)/etc/init.d/reaim
- ln -sf reaim $(IDIR_REAIM)/etc/init.d/S63reaim
- install -d -m0755 $(IDIR_REAIM)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/reaim $(IDIR_REAIM)/usr/sbin/
- $(RSTRIP) $(IDIR_REAIM)
- $(IPKG_BUILD) $(IDIR_REAIM) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/reaim/files/reaim.init b/openwrt/package/reaim/files/reaim.init
deleted file mode 100644
index 93ceea3d42..0000000000
--- a/openwrt/package/reaim/files/reaim.init
+++ /dev/null
@@ -1,62 +0,0 @@
-#! /bin/sh
-
-PATH=/sbin:/bin:/usr/sbin:/usr/bin
-NAME=reaim
-DESC="Transparent proxy for IM behind NAT"
-. /etc/functions.sh
-WAN=$(nvram get wan_ifname)
-IPT=/usr/sbin/iptables
-case "$1" in
- start)
- if [ -e /var/run/$NAME.pid ]; then
- echo "$DESC: $NAME already started."
- exit 0
- fi
- echo -n "Starting $DESC: $NAME"
- $IPT -A input_rule -i $WAN -p tcp --dport 1863:1864 -j ACCEPT
- $IPT -A input_rule -i $WAN -p tcp --dport 4443 -j ACCEPT
- $IPT -A input_rule -i $WAN -p tcp --dport 5566 -j ACCEPT
- $IPT -A input_rule -i $WAN -p tcp --dport 40000:40099 -j ACCEPT
-
- test -e /var/run/$NAME.pid || touch /var/run/$NAME.pid
- /usr/sbin/$NAME
- echo "."
- ;;
-
- stop)
- if [ ! -e /var/run/$NAME.pid ]; then
- echo "$DESC: $NAME is not running."
- exit 0
- fi
- echo -n "Stopping $DESC: $NAME"
- killall $NAME
- rm -f /var/run/$NAME.pid
-
- echo "."
- ;;
-
- restart|force-reload)
- if [ ! -e /var/run/$NAME.pid ]; then
- $0 start
- exit 0
- fi
- echo -n "Restarting $DESC: $NAME"
- $IPT -A input_rule -i $WAN -p tcp --dport 1863:1864 -j ACCEPT
- $IPT -A input_rule -i $WAN -p tcp --dport 4443 -j ACCEPT
- $IPT -A input_rule -i $WAN -p tcp --dport 5566 -j ACCEPT
- $IPT -A input_rule -i $WAN -p tcp --dport 40000:40099 -j ACCEPT
- killall $NAME
- sleep 1
- /usr/sbin/$NAME
- echo "."
- ;;
-
- *)
- N=/etc/init.d/$NAME
- echo "Usage: $N {start|stop|restart|force-reload}" >&2
- exit 1
- ;;
-
-esac
-
-exit 0
diff --git a/openwrt/package/reaim/ipkg/reaim.control b/openwrt/package/reaim/ipkg/reaim.control
deleted file mode 100644
index a0a1afc67c..0000000000
--- a/openwrt/package/reaim/ipkg/reaim.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: reaim
-Priority: optional
-Section: net
-Depends:
-Description: A transparent AIM / MSN proxy
diff --git a/openwrt/package/reaim/patches/501-cross_compile-install.patch b/openwrt/package/reaim/patches/501-cross_compile-install.patch
deleted file mode 100644
index 9e88f617e6..0000000000
--- a/openwrt/package/reaim/patches/501-cross_compile-install.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -urN reaim-0.8/Makefile reaim-0.8/Makefile
---- reaim-0.8/Makefile 2002-11-28 06:10:38.000000000 +0100
-+++ reaim-0.8/Makefile 2005-10-07 12:07:43.000000000 +0200
-@@ -11,7 +11,10 @@
- endif
-
- reaim: reaim.c
-- gcc -o reaim reaim.c -g -Wall $(FW_FLAGS)
--
-+ $(CC) $(CFLAGS) -o reaim reaim.c -Wall $(FW_FLAGS)
- clean:
- -rm reaim
-+
-+install:
-+ install -d -m 0755 $(DESTDIR)/usr/sbin
-+ install -m 0755 reaim $(DESTDIR)/usr/sbin/
diff --git a/openwrt/package/robocfg/Config.in b/openwrt/package/robocfg/Config.in
deleted file mode 100644
index db90c8b113..0000000000
--- a/openwrt/package/robocfg/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_ROBOCFG
- prompt "robocfg........................... BCM5325E/536x switch configuration utility"
- tristate
- default m if CONFIG_DEVEL
- help
- Broadcom BCM5325E/536x switch configuration utility
-
diff --git a/openwrt/package/robocfg/Makefile b/openwrt/package/robocfg/Makefile
deleted file mode 100644
index 54daea8e86..0000000000
--- a/openwrt/package/robocfg/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=robocfg
-PKG_VERSION:=0.01
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/robocfg
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,ROBOCFG,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.prepared:
- mkdir -p $(PKG_BUILD_DIR)
- touch $@
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(TARGET_CC) $(TARGET_CFLAGS) -o $(PKG_BUILD_DIR)/robocfg robocfg.c
- touch $@
-
-$(IPKG_ROBOCFG):
- install -d -m0755 $(IDIR_ROBOCFG)/sbin
- install -m0755 $(PKG_BUILD_DIR)/robocfg $(IDIR_ROBOCFG)/sbin/
- $(RSTRIP) $(IDIR_ROBOCFG)
- $(IPKG_BUILD) $(IDIR_ROBOCFG) $(PACKAGE_DIR)
diff --git a/openwrt/package/robocfg/etc53xx.h b/openwrt/package/robocfg/etc53xx.h
deleted file mode 100644
index 4e1f8ad8a2..0000000000
--- a/openwrt/package/robocfg/etc53xx.h
+++ /dev/null
@@ -1,620 +0,0 @@
-/*
- * Broadcom Home Gateway Reference Design
- * BCM53xx Register definitions
- *
- * Copyright 2004, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- * $Id$
- */
-
-#ifndef __BCM535M_H_
-#define __BCM535M_H_
-
-/* ROBO embedded device type */
-#define ROBO_DEV_5380 1
-#define ROBO_DEV_5365 2
-#define ROBO_DEV_5350 3
-
-/* BCM5325m GLOBAL PAGE REGISTER MAP */
-#ifndef _CFE_
-#pragma pack(1)
-#endif
-
-/* BCM5325m Serial Management Port (SMP) Page offsets */
-#define ROBO_CTRL_PAGE 0x00 /* Control registers */
-#define ROBO_STAT_PAGE 0x01 /* Status register */
-#define ROBO_MGMT_PAGE 0x02 /* Management Mode registers */
-#define ROBO_MIB_AC_PAGE 0x03 /* MIB Autocast registers */
-#define ROBO_ARLCTRL_PAGE 0x04 /* ARL Control Registers */
-#define ROBO_ARLIO_PAGE 0x05 /* ARL Access Registers */
-#define ROBO_FRAMEBUF_PAGE 0x06 /* Management frame access registers */
-#define ROBO_MEM_ACCESS_PAGE 0x08 /* Memory access registers */
-
-/* PHY Registers */
-#define ROBO_PORT0_MII_PAGE 0x10 /* Port 0 MII Registers */
-#define ROBO_PORT1_MII_PAGE 0x11 /* Port 1 MII Registers */
-#define ROBO_PORT2_MII_PAGE 0x12 /* Port 2 MII Registers */
-#define ROBO_PORT3_MII_PAGE 0x13 /* Port 3 MII Registers */
-#define ROBO_PORT4_MII_PAGE 0x14 /* Port 4 MII Registers */
-/* (start) registers only for BCM5380 */
-#define ROBO_PORT5_MII_PAGE 0x15 /* Port 5 MII Registers */
-#define ROBO_PORT6_MII_PAGE 0x16 /* Port 6 MII Registers */
-#define ROBO_PORT7_MII_PAGE 0x17 /* Port 7 MII Registers */
-/* (end) registers only for BCM5380 */
-#define ROBO_IM_PORT_PAGE 0x18 /* Inverse MII Port (to EMAC) */
-#define ROBO_ALL_PORT_PAGE 0x19 /* All ports MII Registers (broadcast)*/
-
-/* MAC Statistics registers */
-#define ROBO_PORT0_MIB_PAGE 0x20 /* Port 0 10/100 MIB Statistics */
-#define ROBO_PORT1_MIB_PAGE 0x21 /* Port 1 10/100 MIB Statistics */
-#define ROBO_PORT2_MIB_PAGE 0x22 /* Port 2 10/100 MIB Statistics */
-#define ROBO_PORT3_MIB_PAGE 0x23 /* Port 3 10/100 MIB Statistics */
-#define ROBO_PORT4_MIB_PAGE 0x24 /* Port 4 10/100 MIB Statistics */
-/* (start) registers only for BCM5380 */
-#define ROBO_PORT5_MIB_PAGE 0x25 /* Port 5 10/100 MIB Statistics */
-#define ROBO_PORT6_MIB_PAGE 0x26 /* Port 6 10/100 MIB Statistics */
-#define ROBO_PORT7_MIB_PAGE 0x27 /* Port 7 10/100 MIB Statistics */
-/* (end) registers only for BCM5380 */
-#define ROBO_IM_PORT_MIB_PAGE 0x28 /* Inverse MII Port MIB Statistics */
-
-/* Quality of Service (QoS) Registers */
-#define ROBO_QOS_PAGE 0x30 /* QoS Registers */
-
-/* VLAN Registers */
-#define ROBO_VLAN_PAGE 0x34 /* VLAN Registers */
-
-/* Note SPI Data/IO Registers not used */
-#define ROBO_SPI_DATA_IO_0_PAGE 0xf0 /* SPI Data I/O 0 */
-#define ROBO_SPI_DATA_IO_1_PAGE 0xf1 /* SPI Data I/O 1 */
-#define ROBO_SPI_DATA_IO_2_PAGE 0xf2 /* SPI Data I/O 2 */
-#define ROBO_SPI_DATA_IO_3_PAGE 0xf3 /* SPI Data I/O 3 */
-#define ROBO_SPI_DATA_IO_4_PAGE 0xf4 /* SPI Data I/O 4 */
-#define ROBO_SPI_DATA_IO_5_PAGE 0xf5 /* SPI Data I/O 5 */
-#define ROBO_SPI_DATA_IO_6_PAGE 0xf6 /* SPI Data I/O 6 */
-#define ROBO_SPI_DATA_IO_7_PAGE 0xf7 /* SPI Data I/O 7 */
-
-#define ROBO_SPI_STATUS_PAGE 0xfe /* SPI Status Registers */
-#define ROBO_PAGE_PAGE 0xff /* Page Registers */
-
-
-/* BCM5325m CONTROL PAGE (0x00) REGISTER MAP : 8bit (byte) registers */
-typedef struct _ROBO_PORT_CTRL_STRUC
-{
- unsigned char rx_disable:1; /* rx disable */
- unsigned char tx_disable:1; /* tx disable */
- unsigned char rsvd:3; /* reserved */
- unsigned char stp_state:3; /* spanning tree state */
-} ROBO_PORT_CTRL_STRUC;
-
-#define ROBO_PORT0_CTRL 0x00 /* 10/100 Port 0 Control */
-#define ROBO_PORT1_CTRL 0x01 /* 10/100 Port 1 Control */
-#define ROBO_PORT2_CTRL 0x02 /* 10/100 Port 2 Control */
-#define ROBO_PORT3_CTRL 0x03 /* 10/100 Port 3 Control */
-#define ROBO_PORT4_CTRL 0x04 /* 10/100 Port 4 Control */
-/* (start) registers only for BCM5380 */
-#define ROBO_PORT5_CTRL 0x05 /* 10/100 Port 5 Control */
-#define ROBO_PORT6_CTRL 0x06 /* 10/100 Port 6 Control */
-#define ROBO_PORT7_CTRL 0x07 /* 10/100 Port 7 Control */
-/* (end) registers only for BCM5380 */
-#define ROBO_IM_PORT_CTRL 0x08 /* 10/100 Port 8 Control */
-#define ROBO_SMP_CTRL 0x0a /* SMP Control register */
-#define ROBO_SWITCH_MODE 0x0b /* Switch Mode Control */
-#define ROBO_PORT_OVERRIDE_CTRL 0x0e /* Port state override */
-#define ROBO_PORT_OVERRIDE_RVMII (1<<4) /* Bit 4 enables RvMII */
-#define ROBO_PD_MODE_CTRL 0x0f /* Power-down mode control */
-#define ROBO_IP_MULTICAST_CTRL 0x21 /* IP Multicast control */
-
-/* BCM5325m STATUS PAGE (0x01) REGISTER MAP : 16bit/48bit registers */
-#define ROBO_HALF_DUPLEX 0
-#define ROBO_FULL_DUPLEX 1
-
-#define ROBO_LINK_STAT_SUMMARY 0x00 /* Link Status Summary: 16bit */
-#define ROBO_LINK_STAT_CHANGE 0x02 /* Link Status Change: 16bit */
-#define ROBO_SPEED_STAT_SUMMARY 0x04 /* Port Speed Summary: 16bit*/
-#define ROBO_DUPLEX_STAT_SUMMARY 0x06 /* Duplex Status Summary: 16bit */
-#define ROBO_PAUSE_STAT_SUMMARY 0x08 /* PAUSE Status Summary: 16bit */
-#define ROBO_SOURCE_ADDR_CHANGE 0x0C /* Source Address Change: 16bit */
-#define ROBO_LSA_PORT0 0x10 /* Last Source Addr, Port 0: 48bits*/
-#define ROBO_LSA_PORT1 0x16 /* Last Source Addr, Port 1: 48bits*/
-#define ROBO_LSA_PORT2 0x1c /* Last Source Addr, Port 2: 48bits*/
-#define ROBO_LSA_PORT3 0x22 /* Last Source Addr, Port 3: 48bits*/
-#define ROBO_LSA_PORT4 0x28 /* Last Source Addr, Port 4: 48bits*/
-#define ROBO_LSA_IM_PORT 0x40 /* Last Source Addr, IM Port: 48bits*/
-
-/* BCM5325m MANAGEMENT MODE REGISTERS (0x02) REGISTER MAP: 8/48 bit regs*/
-typedef struct _ROBO_GLOBAL_CONFIG_STRUC
-{
- unsigned char resetMIB:1; /* reset MIB counters */
- unsigned char rxBPDU:1; /* receive BDPU enable */
- unsigned char rsvd1:2; /* reserved */
- unsigned char MIBacHdrCtrl:1; /* MIB autocast header control */
- unsigned char MIBac:1; /* MIB autocast enable */
- unsigned char frameMgmtPort:2; /* frame management port */
-} ROBO_GLOBAL_CONFIG_STRUC;
-#define ROBO_GLOBAL_CONFIG 0x00 /* Global Management Config: 8bit*/
-#define ROBO_MGMT_PORT_ID 0x02 /* Management Port ID: 8bit*/
-#define ROBO_RMON_MIB_STEER 0x04 /* RMON Mib Steering: 16bit */
-#define ROBO_MIB_MODE_SELECT 0x04 /* MIB Mode select: 16bit (BCM5350) */
-#define ROBO_AGE_TIMER_CTRL 0x06 /* Age time control: 32bit */
-#define ROBO_MIRROR_CAP_CTRL 0x10 /* Mirror Capture : 16bit */
-#define ROBO_MIRROR_ING_CTRL 0x12 /* Mirror Ingress Control: 16bit */
-#define ROBO_MIRROR_ING_DIV_CTRL 0x14 /* Mirror Ingress Divider: 16bit */
-#define ROBO_MIRROR_ING_MAC_ADDR 0x16 /* Ingress Mirror MAC Addr: 48bit*/
-#define ROBO_MIRROR_EGR_CTRL 0x1c /* Mirror Egress Control: 16bit */
-#define ROBO_MIRROR_EGR_DIV_CTRL 0x1e /* Mirror Egress Divider: 16bit */
-#define ROBO_MIRROR_EGR_MAC_ADDR 0x20 /* Egress Mirror MAC Addr: 48bit*/
-
-/* BCM5325m MIB AUTOCAST REGISTERS (0x03) REGISTER MAP: 8/16/48 bit regs */
-#define ROBO_MIB_AC_PORT 0x00 /* MIB Autocast Port: 16bit */
-#define ROBO_MIB_AC_HDR_PTR 0x02 /* MIB Autocast Header pointer:16bit*/
-#define ROBO_MIB_AC_HDR_LEN 0x04 /* MIB Autocast Header Len: 16bit */
-#define ROBO_MIB_AC_DA 0x06 /* MIB Autocast DA: 48bit */
-#define ROBO_MIB_AC_SA 0x0c /* MIB Autocast SA: 48bit */
-#define ROBO_MIB_AC_TYPE 0x12 /* MIB Autocast Type: 16bit */
-#define ROBO_MIB_AC_RATE 0x14 /* MIB Autocast Rate: 8bit */
-#define ROBO_GET_AC_RATE(secs) ((secs)*10)
-#define ROBO_AC_RATE_MAX 0xff
-#define ROBO_AC_RATE_DEFAULT 0x64 /* 10 secs */
-typedef struct _ROBO_MIB_AC_STRUCT
-{
- unsigned char opcode:4; /* Tx MIB Autocast opcode */
- unsigned char portno:4; /* zero-based port no. */
- unsigned char portstate:8; /* port state */
- unsigned long long TxOctets;
- unsigned int TxDropPkts;
- unsigned int rsvd;
- unsigned int TxBroadcastPkts;
- unsigned int TxMulticastPkts;
- unsigned int TxUnicastPkts;
- unsigned int TxCollisions;
- unsigned int TxSingleCollision;
- unsigned int TxMultiCollision;
- unsigned int TxDeferredTransmit;
- unsigned int TxLateCollision;
- unsigned int TxExcessiveCollision;
- unsigned int TxFrameInDiscards;
- unsigned int TxPausePkts;
- unsigned int rsvd1[2];
- unsigned long long RxOctets;
- unsigned int RxUndersizePkts;
- unsigned int RxPausePkts;
- unsigned int RxPkts64Octets;
- unsigned int RxPkts64to127Octets;
- unsigned int RxPkts128to255Octets;
- unsigned int RxPkts256to511Octets;
- unsigned int RxPkts512to1023Octets;
- unsigned int RxPkts1024to1522Octets;
- unsigned int RxOversizePkts;
- unsigned int RxJabbers;
- unsigned int RxAlignmentErrors;
- unsigned int RxFCSErrors;
- unsigned long long RxGoodOctets;
- unsigned int RxDropPkts;
- unsigned int RxUnicastPkts;
- unsigned int RxMulticastPkts;
- unsigned int RxBroadcastPkts;
- unsigned int RxSAChanges;
- unsigned int RxFragments;
- unsigned int RxExcessSizeDisc;
- unsigned int RxSymbolError;
-} ROBO_MIB_AC_STRUCT;
-
-/* BCM5325m ARL CONTROL REGISTERS (0x04) REGISTER MAP: 8/16/48/64 bit regs */
-#define ROBO_ARL_CONFIG 0x00 /* ARL Global Configuration: 8bit*/
-#define ROBO_BPDU_MC_ADDR_REG 0x04 /* BPDU Multicast Address Reg:64bit*/
-#define ROBO_MULTIPORT_ADDR_1 0x10 /* Multiport Address 1: 48 bits*/
-#define ROBO_MULTIPORT_VECTOR_1 0x16 /* Multiport Vector 1: 16 bits */
-#define ROBO_MULTIPORT_ADDR_2 0x20 /* Multiport Address 2: 48 bits*/
-#define ROBO_MULTIPORT_VECTOR_2 0x26 /* Multiport Vector 2: 16 bits */
-#define ROBO_SECURE_SRC_PORT_MASK 0x30 /* Secure Source Port Mask: 16 bits*/
-#define ROBO_SECURE_DST_PORT_MASK 0x32 /* Secure Dest Port Mask: 16 bits */
-
-
-/* BCM5325m ARL IO REGISTERS (0x05) REGISTER MAP: 8/16/48/64 bit regs */
-#define ARL_TABLE_WRITE 0 /* for read/write state in control reg */
-#define ARL_TABLE_READ 1 /* for read/write state in control reg */
-#ifdef BCM5380
-#define ARL_VID_BYTES 2 /* number of bytes for VID */
-#else
-#define ARL_VID_BYTES 1 /* number of bytes for VID */
-#endif
-typedef struct _ROBO_ARL_RW_CTRL_STRUC
-{
- unsigned char ARLrw:1; /* ARL read/write (1=read) */
- unsigned char rsvd:6; /* reserved */
- unsigned char ARLStart:1; /* ARL start/done (1=start) */
-} ROBO_ARL_RW_CTRL_STRUC;
-typedef struct _ROBO_ARL_SEARCH_CTRL_STRUC
-{
- unsigned char valid:1; /* ARL search result valid */
- unsigned char rsvd:6; /* reserved */
- unsigned char ARLStart:1; /* ARL start/done (1=start) */
-} ROBO_ARL_SEARCH_CTRL_STRUC;
-typedef struct _ROBO_ARL_ENTRY_CTRL_STRUC
-{
- unsigned char portID:4; /* port id */
- unsigned char chipID:2; /* chip id */
- unsigned char rsvd:5; /* reserved */
- unsigned char prio:2; /* priority */
- unsigned char age:1; /* age */
- unsigned char staticEn:1; /* static */
- unsigned char valid:1; /* valid */
-} ROBO_ARL_ENTRY_CTRL_STRUC;
-typedef struct _ROBO_ARL_SEARCH_RESULT_CTRL_STRUC
-{
- unsigned char portID:4; /* port id */
- unsigned char rsvd:1; /* reserved */
- unsigned char vid:8; /* vlan id */
- unsigned char age:1; /* age */
- unsigned char staticEn:1; /* static */
- unsigned char valid:1; /* valid */
-} ROBO_ARL_SEARCH_RESULT_CTRL_STRUC;
-typedef struct _ROBO_ARL_ENTRY_MAC_STRUC
-{
- unsigned char macBytes[6]; /* MAC address */
-} ROBO_ARL_ENTRY_MAC_STRUC;
-
-typedef struct _ROBO_ARL_ENTRY_STRUC
-{
- ROBO_ARL_ENTRY_MAC_STRUC mac; /* MAC address */
- ROBO_ARL_ENTRY_CTRL_STRUC ctrl; /* control bits */
-} ROBO_ARL_ENTRY_STRUC;
-
-typedef struct _ROBO_ARL_SEARCH_RESULT_STRUC
-{
- ROBO_ARL_ENTRY_MAC_STRUC mac; /* MAC address */
- ROBO_ARL_SEARCH_RESULT_CTRL_STRUC ctrl; /* control bits */
-} ROBO_ARL_SEARCH_RESULT_STRUC;
-
-/* multicast versions of ARL entry structs */
-typedef struct _ROBO_ARL_ENTRY_MCAST_CTRL_STRUC
-{
- unsigned int portMask:12;/* multicast port mask */
- unsigned char prio:1; /* priority */
- unsigned char gigPort:1; /* gigabit port 1 mask */
- unsigned char staticEn:1; /* static */
- unsigned char valid:1; /* valid */
-} ROBO_ARL_ENTRY_MCAST_CTRL_STRUC;
-typedef struct _ROBO_ARL_SEARCH_RESULT_MCAST_CTRL_STRUC
-{
- unsigned int portMask:13; /* multicast port mask */
- unsigned char age:1; /* age */
- unsigned char staticEn:1; /* static */
- unsigned char valid:1; /* valid */
-} ROBO_ARL_SEARCH_RESULT_MCAST_CTRL_STRUC;
-/* BCM5350 extension register */
-typedef struct _ROBO_ARL_SEARCH_RESULT_EXTENSION
-{
- unsigned int prio:2; /* priority */
- unsigned int portMask:1; /* MSB (MII) of port mask for multicast */
- unsigned int reserved:5;
-} ROBO_ARL_SEARCH_RESULT_EXTENSION;
-
-typedef struct _ROBO_ARL_ENTRY_MCAST_STRUC
-{
- ROBO_ARL_ENTRY_MAC_STRUC mac; /* MAC address */
- ROBO_ARL_ENTRY_MCAST_CTRL_STRUC ctrl; /* control bits */
-} ROBO_ARL_ENTRY_MCAST_STRUC;
-typedef struct _ROBO_ARL_SEARCH_RESULT_MCAST_STRUC
-{
- ROBO_ARL_ENTRY_MAC_STRUC mac; /* MAC address */
- ROBO_ARL_SEARCH_RESULT_MCAST_CTRL_STRUC ctrl; /* control bits */
-} ROBO_ARL_SEARCH_RESULT_MCAST_STRUC;
-
-#define ROBO_ARL_RW_CTRL 0x00 /* ARL Read/Write Control : 8bit */
-#define ROBO_ARL_MAC_ADDR_IDX 0x02 /* MAC Address Index: 48bit */
-#define ROBO_ARL_VID_TABLE_IDX 0x08 /* VID Table Address Index: 8bit */
-#define ROBO_ARL_ENTRY0 0x10 /* ARL Entry 0 : 64 bit */
-#define ROBO_ARL_ENTRY1 0x18 /* ARL Entry 1 : 64 bit */
-#define ROBO_ARL_SEARCH_CTRL 0x20 /* ARL Search Control: 8bit */
-#define ROBO_ARL_SEARCH_ADDR 0x22 /* ARL Search Address: 16bit */
-#define ROBO_ARL_SEARCH_RESULT 0x24 /* ARL Search Result: 64bit */
-#define ROBO_ARL_SEARCH_RESULT_EXT 0x2c /* ARL Search Result Extension (5350): 8bit */
-#define ROBO_ARL_VID_ENTRY0 0x30 /* ARL VID Entry 0: 64bit */
-#define ROBO_ARL_VID_ENTRY1 0x32 /* ARL VID Entry 1: 64bit */
-
-/* BCM5325m MANAGEMENT FRAME REGISTERS (0x6) REGISTER MAP: 8/16 bit regs */
-#define ROBO_MGMT_FRAME_RD_DATA 0x00 /* Management Frame Read Data :8bit*/
-#define ROBO_MGMT_FRAME_WR_DATA 0x01 /* Management Frame Write Data:8bit*/
-#define ROBO_MGMT_FRAME_WR_CTRL 0x02 /* Write Control: 16bit */
-#define ROBO_MGMT_FRAME_RD_STAT 0x04 /* Read Status: 16bit */
-
-/* BCM5325m MEMORY ACCESS REGISTERS (Page 0x08) REGISTER MAP: 32 bit regs */
-#define MEM_TABLE_READ 1 /* for read/write state in mem access reg */
-#define MEM_TABLE_WRITE 0 /* for read/write state in mem access reg */
-#define MEM_TABLE_ACCESS_START 1 /* for mem access read/write start */
-#define MEM_TABLE_ACCESS_DONE 0 /* for mem access read/write done */
-#define VLAN_TABLE_ADDR 0x3800 /* BCM5380 only */
-#ifdef BCM5380
-#define NUM_ARL_TABLE_ENTRIES 4096 /* number of entries in ARL table */
-#define NUM_VLAN_TABLE_ENTRIES 2048 /* number of entries in VLAN table */
-#define ARL_TABLE_ADDR 0 /* offset of ARL table start */
-#else
-#define NUM_ARL_TABLE_ENTRIES 2048 /* number of entries in ARL table */
-#define NUM_VLAN_TABLE_ENTRIES 256 /* number of entries in VLAN table */
-#define ARL_TABLE_ADDR 0x3800 /* offset of ARL table start */
-/* corresponding values for 5350 */
-#define NUM_ARL_TABLE_ENTRIES_5350 1024 /* number of entries in ARL table (5350) */
-#define NUM_VLAN_TABLE_ENTRIES_5350 16 /* number of entries in VLAN table */
-#define ARL_TABLE_ADDR_5350 0x1c00 /* offset of ARL table start (5350) */
-#endif
-typedef struct _ROBO_MEM_ACCESS_CTRL_STRUC
-{
- unsigned int memAddr:14; /* 64-bit memory address */
- unsigned char rsvd:4; /* reserved */
- unsigned char readEn:1; /* read enable (0 == write) */
- unsigned char startDone:1;/* memory access start/done */
- unsigned int rsvd1:12; /* reserved */
-} ROBO_MEM_ACCESS_CTRL_STRUC;
-typedef struct _ROBO_MEM_ACCESS_DATA_STRUC
-{
- unsigned int memData[2]; /* 64-bit data */
- unsigned short rsvd; /* reserved */
-} ROBO_MEM_ACCESS_DATA_STRUC;
-
-#ifdef BCM5380
-typedef struct _ROBO_ARL_TABLE_DATA_STRUC
-{
- unsigned char MACaddr[6]; /* MAC addr */
- unsigned int portID:4; /* port ID */
- unsigned int chipID:2; /* chip ID */
- unsigned int rsvd:6; /* reserved */
- unsigned int highPrio:1; /* high priority address */
- unsigned int age:1; /* entry accessed/learned since ageing process */
- unsigned int staticAddr:1;/* entry is static */
- unsigned int valid:1; /* entry is valid */
- unsigned int vid:12; /* vlan id */
- unsigned int rsvd2:4; /* reserved */
-} ROBO_ARL_TABLE_DATA_STRUC;
-#else
-typedef struct _ROBO_ARL_TABLE_DATA_STRUC
-{
- unsigned char MACaddr[6]; /* MAC addr */
- unsigned int portID:4; /* port ID */
- unsigned int chipID:2; /* chip ID */
- unsigned int rsvd:7; /* reserved */
- unsigned int age:1; /* entry accessed/learned since ageing process */
- unsigned int staticAddr:1;/* entry is static */
- unsigned int valid:1; /* entry is valid */
-} ROBO_ARL_TABLE_DATA_STRUC;
-#endif
-
-/* multicast format*/
-typedef struct _ROBO_ARL_TABLE_MCAST_DATA_STRUC
-{
- unsigned char MACaddr[6]; /* MAC addr */
- unsigned int portMask:12;/* multicast port mask */
- unsigned char prio:1; /* priority */
- unsigned char gigPort:1; /* gigabit port 1 mask */
- unsigned char staticEn:1; /* static */
- unsigned char valid:1; /* valid */
- unsigned int vid:12; /* vlan id */
- unsigned int rsvd2:4; /* reserved */
-} ROBO_ARL_TABLE_MCAST_DATA_STRUC;
-#define ROBO_MEM_ACCESS_CTRL 0x00 /* Memory Read/Write Control :32bit*/
-#define ROBO_MEM_ACCESS_DATA 0x04 /* Memory Read/Write Data:64bit*/
-
-/* BCM5325m SWITCH PORT (0x10-18) REGISTER MAP: 8/16 bit regs */
-typedef struct _ROBO_MII_CTRL_STRUC
-{
- unsigned char rsvd:8; /* reserved */
- unsigned char duplex:1; /* duplex mode */
- unsigned char restartAN:1;/* restart auto-negotiation */
- unsigned char rsvd1:1; /* reserved */
- unsigned char powerDown:1;/* power down */
- unsigned char ANenable:1; /* auto-negotiation enable */
- unsigned char speed:1; /* forced speed selection */
- unsigned char loopback:1; /* loopback */
- unsigned char reset:1; /* reset */
-} ROBO_MII_CTRL_STRUC;
-typedef struct _ROBO_MII_AN_ADVERT_STRUC
-{
- unsigned char selector:5; /* advertise selector field */
- unsigned char T10BaseT:1; /* advertise 10BaseT */
- unsigned char T10BaseTFull:1; /* advertise 10BaseT, full duplex */
- unsigned char T100BaseX:1; /* advertise 100BaseX */
- unsigned char T100BaseXFull:1;/* advertise 100BaseX full duplex */
- unsigned char noT4:1; /* do not advertise T4 */
- unsigned char pause:1; /* advertise pause for full duplex */
- unsigned char rsvd:2; /* reserved */
- unsigned char remoteFault:1; /* transmit remote fault */
- unsigned char rsvd1:1; /* reserved */
- unsigned char nextPage:1; /* nex page operation supported */
-} ROBO_MII_AN_ADVERT_STRUC;
-#define ROBO_MII_CTRL 0x00 /* Port MII Control */
-#define ROBO_MII_STAT 0x02 /* Port MII Status */
-/* Fields of link status register */
-#define ROBO_MII_STAT_JABBER (1<<1) /* Jabber detected */
-#define ROBO_MII_STAT_LINK (1<<2) /* Link status */
-
-#define ROBO_MII_PHYID_HI 0x04 /* Port PHY ID High */
-#define ROBO_MII_PHYID_LO 0x06 /* Port PHY ID Low */
-#define ROBO_MII_ANA_REG 0x08 /* MII Auto-Neg Advertisement */
-#define ROBO_MII_ANP_REG 0x0a /* MII Auto-Neg Partner Ability */
-#define ROBO_MII_AN_EXP_REG 0x0c /* MII Auto-Neg Expansion */
-#define ROBO_MII_AN_NP_REG 0x0e /* MII next page */
-#define ROBO_MII_ANP_NP_REG 0x10 /* MII Partner next page */
-#define ROBO_MII_100BX_AUX_CTRL 0x20 /* 100BASE-X Auxiliary Control */
-#define ROBO_MII_100BX_AUX_STAT 0x22 /* 100BASE-X Auxiliary Status */
-#define ROBO_MII_100BX_RCV_ERR_CTR 0x24 /* 100BASE-X Receive Error Ctr */
-#define ROBO_MII_100BX_RCV_FS_ERR 0x26 /* 100BASE-X Rcv False Sense Ctr */
-#define ROBO_MII_AUX_CTRL 0x30 /* Auxiliary Control/Status */
-/* Fields of Auxiliary control register */
-#define ROBO_MII_AUX_CTRL_FD (1<<0) /* Full duplex link detected*/
-#define ROBO_MII_AUX_CTRL_SP100 (1<<1) /* Speed 100 indication */
-#define ROBO_MII_AUX_STATUS 0x32 /* Aux Status Summary */
-#define ROBO_MII_CONN_STATUS 0x34 /* Aux Connection Status */
-#define ROBO_MII_AUX_MODE2 0x36 /* Aux Mode 2 */
-#define ROBO_MII_AUX_ERR_STATUS 0x38 /* Aux Error and General Status */
-#define ROBO_MII_AUX_MULTI_PHY 0x3c /* Aux Multiple PHY Register*/
-#define ROBO_MII_BROADCOM_TEST 0x3e /* Broadcom Test Register */
-
-
-/* BCM5325m PORT MIB REGISTERS (Pages 0x20-0x24,0x28) REGISTER MAP: 64/32 */
-/* Tranmit Statistics */
-#define ROBO_MIB_TX_OCTETS 0x00 /* 64b: TxOctets */
-#define ROBO_MIB_TX_DROP_PKTS 0x08 /* 32b: TxDropPkts */
-#define ROBO_MIB_TX_BC_PKTS 0x10 /* 32b: TxBroadcastPkts */
-#define ROBO_MIB_TX_MC_PKTS 0x14 /* 32b: TxMulticastPkts */
-#define ROBO_MIB_TX_UC_PKTS 0x18 /* 32b: TxUnicastPkts */
-#define ROBO_MIB_TX_COLLISIONS 0x1c /* 32b: TxCollisions */
-#define ROBO_MIB_TX_SINGLE_COLLISIONS 0x20 /* 32b: TxSingleCollision */
-#define ROBO_MIB_TX_MULTI_COLLISIONS 0x24 /* 32b: TxMultiCollision */
-#define ROBO_MIB_TX_DEFER_TX 0x28 /* 32b: TxDeferred Transmit */
-#define ROBO_MIB_TX_LATE_COLLISIONS 0x2c /* 32b: TxLateCollision */
-#define ROBO_MIB_EXCESS_COLLISIONS 0x30 /* 32b: TxExcessiveCollision*/
-#define ROBO_MIB_FRAME_IN_DISCARDS 0x34 /* 32b: TxFrameInDiscards */
-#define ROBO_MIB_TX_PAUSE_PKTS 0x38 /* 32b: TxPausePkts */
-
-/* Receive Statistics */
-#define ROBO_MIB_RX_OCTETS 0x44 /* 64b: RxOctets */
-#define ROBO_MIB_RX_UNDER_SIZE_PKTS 0x4c /* 32b: RxUndersizePkts(runts)*/
-#define ROBO_MIB_RX_PAUSE_PKTS 0x50 /* 32b: RxPausePkts */
-#define ROBO_MIB_RX_PKTS_64 0x54 /* 32b: RxPkts64Octets */
-#define ROBO_MIB_RX_PKTS_65_TO_127 0x58 /* 32b: RxPkts64to127Octets*/
-#define ROBO_MIB_RX_PKTS_128_TO_255 0x5c /* 32b: RxPkts128to255Octets*/
-#define ROBO_MIB_RX_PKTS_256_TO_511 0x60 /* 32b: RxPkts256to511Octets*/
-#define ROBO_MIB_RX_PKTS_512_TO_1023 0x64 /* 32b: RxPkts512to1023Octets*/
-#define ROBO_MIB_RX_PKTS_1024_TO_1522 0x68 /* 32b: RxPkts1024to1522Octets*/
-#define ROBO_MIB_RX_OVER_SIZE_PKTS 0x6c /* 32b: RxOversizePkts*/
-#define ROBO_MIB_RX_JABBERS 0x70 /* 32b: RxJabbers*/
-#define ROBO_MIB_RX_ALIGNMENT_ERRORS 0x74 /* 32b: RxAlignmentErrors*/
-#define ROBO_MIB_RX_FCS_ERRORS 0x78 /* 32b: RxFCSErrors */
-#define ROBO_MIB_RX_GOOD_OCTETS 0x7c /* 32b: RxGoodOctets */
-#define ROBO_MIB_RX_DROP_PKTS 0x84 /* 32b: RxDropPkts */
-#define ROBO_MIB_RX_UC_PKTS 0x88 /* 32b: RxUnicastPkts */
-#define ROBO_MIB_RX_MC_PKTS 0x8c /* 32b: RxMulticastPkts */
-#define ROBO_MIB_RX_BC_PKTS 0x90 /* 32b: RxBroadcastPkts */
-#define ROBO_MIB_RX_SA_CHANGES 0x94 /* 32b: RxSAChanges */
-#define ROBO_MIB_RX_FRAGMENTS 0x98 /* 32b: RxFragments */
-#define ROBO_MIB_RX_EXCESS_SZ_DISC 0x9c /* 32b: RxExcessSizeDisc*/
-#define ROBO_MIB_RX_SYMBOL_ERROR 0xa0 /* 32b: RxSymbolError */
-
-/* BCM5350 MIB Statistics */
-/* Group 0 */
-#define ROBO_MIB_TX_GOOD_PKTS 0x00 /* 16b: TxGoodPkts */
-#define ROBO_MIB_TX_UNICAST_PKTS 0x02 /* 16b: TxUnicastPkts */
-#define ROBO_MIB_RX_GOOD_PKTS 0x04 /* 16b: RxGoodPkts */
-#define ROBO_MIB_RX_GOOD_UNICAST_PKTS 0x06 /* 16b: RxGoodUnicastPkts */
-/* Group 1 */
-#define ROBO_MIB_TX_COLLISION 0x00 /* 16b: TxCollision */
-#define ROBO_MIB_TX_OCTETS_5350 0x02 /* 16b: TxOctets */
-#define ROBO_MIB_RX_FCS_ERRORS_5350 0x04 /* 16b: RxFCSErrors */
-#define ROBO_MIB_RX_GOOD_OCTETS_5350 0x06 /* 16b: RxGoodOctets */
-
-/* BCM5325m QoS REGISTERS (Page 0x30) REGISTER MAP: 8/16 */
-#define ROBO_QOS_CTRL 0x00 /* 16b: QoS Control Register */
-#define ROBO_QOS_LOCAL_WEIGHT_CTRL 0x10 /* 8b: Local HQ/LQ Weight Register*/
-#define ROBO_QOS_CPU_WEIGHT_CTRL 0x12 /* 8b: CPU HQ/LQ Weight Register*/
-#define ROBO_QOS_PAUSE_ENA 0x13 /* 16b: Qos Pause Enable Register*/
-#define ROBO_QOS_PRIO_THRESHOLD 0x15 /* 8b: Priority Threshold Register*/
-#define ROBO_QOS_RESERVED 0x16 /* 8b: Qos Reserved Register */
-
-/* BCM5325m VLAN REGISTERS (Page 0x34) REGISTER MAP: 8/16bit */
-typedef struct _ROBO_VLAN_CTRL0_STRUC
-{
- unsigned char frameControlP:2; /* 802.1P frame control */
- unsigned char frameControlQ:2; /* 802.1Q frame control */
- unsigned char dropMissedVID:1; /* enable drop missed VID packet */
- unsigned char vidMacHash:1; /* VID_MAC hash enable */
- unsigned char vidMacCheck:1; /* VID_MAC check enable */
- unsigned char VLANen:1; /* 802.1Q VLAN enable */
-} ROBO_VLAN_CTRL0_STRUC;
-#define VLAN_TABLE_WRITE 1 /* for read/write state in table access reg */
-#define VLAN_TABLE_READ 0 /* for read/write state in table access reg */
-#define VLAN_ID_HIGH_BITS 0 /* static high bits in table access reg */
-#define VLAN_ID_MAX 255 /* max VLAN id */
-#define VLAN_ID_MAX5350 15 /* max VLAN id (5350) */
-#define VLAN_ID_MASK VLAN_ID_MAX /* VLAN id mask */
-#ifdef BCM5380
-#define VLAN_UNTAG_SHIFT 13 /* for postioning untag bits in write reg */
-#define VLAN_VALID 0x4000000 /* valid bit in write reg */
-#else
-#define VLAN_UNTAG_SHIFT 7 /* for postioning untag bits in write reg */
-#define VLAN_VALID 0x4000 /* valid bit in write reg */
-/* corresponding values for 5350 */
-#define VLAN_UNTAG_SHIFT_5350 6 /* for postioning untag bits in write reg */
-#define VLAN_VALID_5350 0x00100000 /* valid bit in write reg */
-#endif
-typedef struct _ROBO_VLAN_TABLE_ACCESS_STRUC
-{
- unsigned char VLANid:8; /* VLAN ID (low 8 bits) */
- unsigned char VLANidHi:4; /* VLAN ID (fixed upper portion) */
- unsigned char readWriteState:1; /* read/write state (write = 1) */
- volatile unsigned char readWriteEnable:1; /* table read/write enable */
- unsigned char rsvd:2; /* reserved */
-} ROBO_VLAN_TABLE_ACCESS_STRUC;
-#ifdef BCM5380
-typedef struct _ROBO_VLAN_READ_WRITE_STRUC
-{
- unsigned int VLANgroup:13;/* VLAN group mask */
- unsigned int VLANuntag:13;/* VLAN untag enable mask */
- unsigned char valid:1; /* valid */
- unsigned char rsvd:5; /* reserved */
-} ROBO_VLAN_READ_WRITE_STRUC;
-#else
-typedef struct _ROBO_VLAN_READ_WRITE_STRUC
-{
- unsigned char VLANgroup:7; /* VLAN group mask */
- unsigned char VLANuntag:7; /* VLAN untag enable mask */
- unsigned char valid:1; /* valid */
- unsigned char rsvd:1; /* reserved */
-} ROBO_VLAN_READ_WRITE_STRUC;
-typedef struct _ROBO_VLAN_READ_WRITE_STRUC_5350
-{
- unsigned char VLANgroup:6; /* VLAN group mask */
- unsigned char VLANuntag:6; /* VLAN untag enable mask */
- unsigned char highVID:8; /* upper bits of vid */
- unsigned char valid:1; /* valid */
- unsigned int rsvd:11; /* reserved */
-} ROBO_VLAN_READ_WRITE_STRUC_5350;
-#endif
-#define ROBO_VLAN_CTRL0 0x00 /* 8b: VLAN Control 0 Register */
-#define ROBO_VLAN_CTRL1 0x01 /* 8b: VLAN Control 1 Register */
-#define ROBO_VLAN_CTRL2 0x02 /* 8b: VLAN Control 2 Register */
-#define ROBO_VLAN_CTRL3 0x03 /* 8b: VLAN Control 3 Register */
-#define ROBO_VLAN_CTRL4 0x04 /* 8b: VLAN Control 4 Register */
-#define ROBO_VLAN_CTRL5 0x05 /* 8b: VLAN Control 5 Register */
-#define ROBO_VLAN_TABLE_ACCESS 0x08 /* 14b: VLAN Table Access Register */
-#define ROBO_VLAN_TABLE_ACCESS_5350 0x06 /* 14b: VLAN Table Access Register (5350) */
-#define ROBO_VLAN_WRITE 0x0a /* 15b: VLAN Write Register */
-#define ROBO_VLAN_WRITE_5350 0x08 /* 15b: VLAN Write Register (5350) */
-#define ROBO_VLAN_READ 0x0c /* 15b: VLAN Read Register */
-#define ROBO_VLAN_PORT0_DEF_TAG 0x10 /* 16b: VLAN Port 0 Default Tag Register */
-#define ROBO_VLAN_PORT1_DEF_TAG 0x12 /* 16b: VLAN Port 1 Default Tag Register */
-#define ROBO_VLAN_PORT2_DEF_TAG 0x14 /* 16b: VLAN Port 2 Default Tag Register */
-#define ROBO_VLAN_PORT3_DEF_TAG 0x16 /* 16b: VLAN Port 3 Default Tag Register */
-#define ROBO_VLAN_PORT4_DEF_TAG 0x18 /* 16b: VLAN Port 4 Default Tag Register */
-#define ROBO_VLAN_PORTMII_DEF_TAG 0x1a /* 16b: VLAN Port MII Default Tag Register */
-/* 5380 only */
-#define ROBO_VLAN_PORT5_DEF_TAG 0x1a /* 16b: VLAN Port 5 Default Tag Register */
-#define ROBO_VLAN_PORT6_DEF_TAG 0x1c /* 16b: VLAN Port 6 Default Tag Register */
-#define ROBO_VLAN_PORT7_DEF_TAG 0x1e /* 16b: VLAN Port 7 Default Tag Register */
-
-/* obsolete */
-#define ROBO_VLAN_PORT0_CTRL 0x00 /* 16b: Port 0 VLAN Register */
-#define ROBO_VLAN_PORT1_CTRL 0x02 /* 16b: Port 1 VLAN Register */
-#define ROBO_VLAN_PORT2_CTRL 0x04 /* 16b: Port 2 VLAN Register */
-#define ROBO_VLAN_PORT3_CTRL 0x06 /* 16b: Port 3 VLAN Register */
-#define ROBO_VLAN_PORT4_CTRL 0x08 /* 16b: Port 4 VLAN Register */
-#define ROBO_VLAN_IM_PORT_CTRL 0x10 /* 16b: Inverse MII Port VLAN Reg */
-#define ROBO_VLAN_SMP_PORT_CTRL 0x12 /* 16b: Serial Port VLAN Register */
-#define ROBO_VLAN_PORTSPI_DEF_TAG 0x1c /* 16b: VLAN Port SPI Default Tag Register */
-#define ROBO_VLAN_PRIORITY_REMAP 0x20 /* 24b: VLAN Priority Re-Map Register */
-
-#ifndef _CFE_
-#pragma pack()
-#endif
-
-
-#endif /* !__BCM535M_H_ */
-
-
-
-
-
diff --git a/openwrt/package/robocfg/ipkg/robocfg.control b/openwrt/package/robocfg/ipkg/robocfg.control
deleted file mode 100644
index 0d8b54c975..0000000000
--- a/openwrt/package/robocfg/ipkg/robocfg.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: robocfg
-Priority: optional
-Section: net
-Description: Broadcom BCM5325E/536x switch configuration utility
diff --git a/openwrt/package/robocfg/robocfg.c b/openwrt/package/robocfg/robocfg.c
deleted file mode 100644
index b8fc49f499..0000000000
--- a/openwrt/package/robocfg/robocfg.c
+++ /dev/null
@@ -1,533 +0,0 @@
-/*
- * Broadcom BCM5325E/536x switch configuration utility
- *
- * Copyright (C) 2005 Oleg I. Vdovikin
- *
- * 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.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/param.h>
-#include <sys/ioctl.h>
-#include <sys/socket.h>
-
-/* linux stuff */
-typedef u_int64_t u64;
-typedef u_int32_t u32;
-typedef u_int16_t u16;
-typedef u_int8_t u8;
-
-#include <linux/if.h>
-#include <linux/sockios.h>
-#include <linux/ethtool.h>
-#include <linux/mii.h>
-
-#include "etc53xx.h"
-#define ROBO_PHY_ADDR 0x1E /* robo switch phy address */
-
-/* MII registers */
-#define REG_MII_PAGE 0x10 /* MII Page register */
-#define REG_MII_ADDR 0x11 /* MII Address register */
-#define REG_MII_DATA0 0x18 /* MII Data register 0 */
-
-#define REG_MII_PAGE_ENABLE 1
-#define REG_MII_ADDR_WRITE 1
-#define REG_MII_ADDR_READ 2
-
-/* Private et.o ioctls */
-#define SIOCGETCPHYRD (SIOCDEVPRIVATE + 9)
-#define SIOCSETCPHYWR (SIOCDEVPRIVATE + 10)
-
-typedef struct {
- struct ifreq ifr;
- int fd;
- int et; /* use private ioctls */
-} robo_t;
-
-static u16 mdio_read(robo_t *robo, u16 phy_id, u8 reg)
-{
- if (robo->et) {
- int args[2] = { reg };
-
- if (phy_id != ROBO_PHY_ADDR) {
- fprintf(stderr,
- "Access to real 'phy' registers unavaliable.\n"
- "Upgrade kernel driver.\n");
-
- return 0xffff;
- }
-
- robo->ifr.ifr_data = (caddr_t) args;
- if (ioctl(robo->fd, SIOCGETCPHYRD, (caddr_t)&robo->ifr) < 0) {
- perror("SIOCGETCPHYRD");
- exit(1);
- }
-
- return args[1];
- } else {
- struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&robo->ifr.ifr_data;
- mii->phy_id = phy_id;
- mii->reg_num = reg;
- if (ioctl(robo->fd, SIOCGMIIREG, &robo->ifr) < 0) {
- perror("SIOCGMIIREG");
- exit(1);
- }
- return mii->val_out;
- }
-}
-
-static void mdio_write(robo_t *robo, u16 phy_id, u8 reg, u16 val)
-{
- if (robo->et) {
- int args[2] = { reg, val };
-
- if (phy_id != ROBO_PHY_ADDR) {
- fprintf(stderr,
- "Access to real 'phy' registers unavaliable.\n"
- "Upgrade kernel driver.\n");
- return;
- }
-
- robo->ifr.ifr_data = (caddr_t) args;
- if (ioctl(robo->fd, SIOCSETCPHYWR, (caddr_t)&robo->ifr) < 0) {
- perror("SIOCGETCPHYWR");
- exit(1);
- }
- } else {
- struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&robo->ifr.ifr_data;
- mii->phy_id = phy_id;
- mii->reg_num = reg;
- mii->val_in = val;
- if (ioctl(robo->fd, SIOCSMIIREG, &robo->ifr) < 0) {
- perror("SIOCSMIIREG");
- exit(1);
- }
- }
-}
-
-static int robo_reg(robo_t *robo, u8 page, u8 reg, u8 op)
-{
- int i = 3;
-
- /* set page number */
- mdio_write(robo, ROBO_PHY_ADDR, REG_MII_PAGE,
- (page << 8) | REG_MII_PAGE_ENABLE);
-
- /* set register address */
- mdio_write(robo, ROBO_PHY_ADDR, REG_MII_ADDR,
- (reg << 8) | op);
-
- /* check if operation completed */
- while (i--) {
- if ((mdio_read(robo, ROBO_PHY_ADDR, REG_MII_ADDR) & 3) == 0)
- return 0;
- }
-
- fprintf(stderr, "robo_reg: timeout\n");
- exit(1);
-
- return 0;
-}
-
-static void robo_read(robo_t *robo, u8 page, u8 reg, u16 *val, int count)
-{
- int i;
-
- robo_reg(robo, page, reg, REG_MII_ADDR_READ);
-
- for (i = 0; i < count; i++)
- val[i] = mdio_read(robo, ROBO_PHY_ADDR, REG_MII_DATA0 + i);
-}
-
-static u16 robo_read16(robo_t *robo, u8 page, u8 reg)
-{
- robo_reg(robo, page, reg, REG_MII_ADDR_READ);
-
- return mdio_read(robo, ROBO_PHY_ADDR, REG_MII_DATA0);
-}
-
-static u32 robo_read32(robo_t *robo, u8 page, u8 reg)
-{
- robo_reg(robo, page, reg, REG_MII_ADDR_READ);
-
- return mdio_read(robo, ROBO_PHY_ADDR, REG_MII_DATA0) +
- (mdio_read(robo, ROBO_PHY_ADDR, REG_MII_DATA0 + 1) << 16);
-}
-
-static void robo_write16(robo_t *robo, u8 page, u8 reg, u16 val16)
-{
- /* write data */
- mdio_write(robo, ROBO_PHY_ADDR, REG_MII_DATA0, val16);
-
- robo_reg(robo, page, reg, REG_MII_ADDR_WRITE);
-}
-
-static void robo_write32(robo_t *robo, u8 page, u8 reg, u32 val32)
-{
- /* write data */
- mdio_write(robo, ROBO_PHY_ADDR, REG_MII_DATA0, val32 & 65535);
- mdio_write(robo, ROBO_PHY_ADDR, REG_MII_DATA0 + 1, val32 >> 16);
-
- robo_reg(robo, page, reg, REG_MII_ADDR_WRITE);
-}
-
-/* checks that attached switch is 5325E/5350 */
-static int robo_vlan5350(robo_t *robo)
-{
- /* set vlan access id to 15 and read it back */
- u16 val16 = 15;
- robo_write16(robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS_5350, val16);
-
- /* 5365 will refuse this as it does not have this reg */
- return (robo_read16(robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS_5350) == val16);
-}
-
-u8 port[6] = { 0, 1, 2, 3, 4, 8 };
-char ports[6] = { 'W', '4', '3', '2', '1', 'C' };
-char *rxtx[4] = { "enabled", "rx_disabled", "tx_disabled", "disabled" };
-char *stp[8] = { "none", "disable", "block", "listen", "learn", "forward", "6", "7" };
-
-struct {
- char *name;
- u16 bmcr;
-} media[5] = { { "auto", BMCR_ANENABLE | BMCR_ANRESTART },
- { "10HD", 0 }, { "10FD", BMCR_FULLDPLX },
- { "100HD", BMCR_SPEED100 }, { "100FD", BMCR_SPEED100 | BMCR_FULLDPLX } };
-
-struct {
- char *name;
- u16 value;
-} mdix[3] = { { "auto", 0x0000 }, { "on", 0x1800 }, { "off", 0x0800 } };
-
-void usage()
-{
- fprintf(stderr, "Broadcom BCM5325E/536x switch configuration utility\n"
- "Copyright (C) 2005 Oleg I. Vdovikin\n\n"
- "This program is distributed in the hope that it will be useful,\n"
- "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
- "GNU General Public License for more details.\n\n");
-
- fprintf(stderr, "Usage: robocfg <op> ... <op>\n"
- "Operations are as below:\n"
- "\tshow\n"
- "\tswitch <enable|disable>\n"
- "\tport <port_number> [state <%s|%s|%s|%s>]\n\t\t[stp %s|%s|%s|%s|%s|%s] [tag <vlan_tag>]\n"
- "\t\t[media %s|%s|%s|%s|%s] [mdi-x %s|%s|%s]\n"
- "\tvlan <vlan_number> [ports <ports_list>]\n"
- "\tvlans <enable|disable|reset>\n\n"
- "\tports_list should be one argument, space separated, quoted if needed,\n"
- "\tport number could be followed by 't' to leave packet vlan tagged (CPU \n"
- "\tport default) or by 'u' to untag packet (other ports default) before \n"
- "\tbringing it to the port, '*' is ignored\n"
- "\nSamples:\n"
- "1) ASUS WL-500g Deluxe stock config (eth0 is WAN, eth0.1 is LAN):\n"
- "robocfg switch disable vlans enable reset vlan 0 ports \"0 5u\" vlan 1 ports \"1 2 3 4 5t\""
- " port 0 state enabled stp none switch enable\n"
- "2) WRT54g, WL-500g Deluxe OpenWRT config (vlan0 is LAN, vlan1 is WAN):\n"
- "robocfg switch disable vlans enable reset vlan 0 ports \"1 2 3 4 5t\" vlan 1 ports \"0 5t\""
- " port 0 state enabled stp none switch enable\n",
- rxtx[0], rxtx[1], rxtx[2], rxtx[3], stp[0], stp[1], stp[2], stp[3], stp[4], stp[5],
- media[0].name, media[1].name, media[2].name, media[3].name, media[4].name,
- mdix[0].name, mdix[1].name, mdix[2].name);
-}
-
-int
-main(int argc, char *argv[])
-{
- u16 val16;
- u16 mac[3];
- int i = 0, j;
- int robo5350 = 0;
- u32 phyid;
-
- static robo_t robo;
- struct ethtool_drvinfo info;
-
- if ((robo.fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- perror("socket");
- exit(1);
- }
-
- /* the only interface for now */
- strcpy(robo.ifr.ifr_name, "eth0");
-
- memset(&info, 0, sizeof(info));
- info.cmd = ETHTOOL_GDRVINFO;
- robo.ifr.ifr_data = (caddr_t)&info;
- if (ioctl(robo.fd, SIOCETHTOOL, (caddr_t)&robo.ifr) < 0) {
- perror("SIOCETHTOOL: your ethernet module is either unsupported or outdated");
-// exit(1);
- } else
- if (strcmp(info.driver, "et0") && strcmp(info.driver, "b44")) {
- fprintf(stderr, "No suitable module found for %s (managed by %s)\n",
- robo.ifr.ifr_name, info.driver);
- exit(1);
- }
-
- /* try access using MII ioctls - get phy address */
- if (ioctl(robo.fd, SIOCGMIIPHY, &robo.ifr) < 0) {
- robo.et = 1;
- } else {
- /* got phy address check for robo address */
- struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&robo.ifr.ifr_data;
- if (mii->phy_id != ROBO_PHY_ADDR) {
- fprintf(stderr, "Invalid phy address (%d)\n", mii->phy_id);
- exit(1);
- }
- }
-
- phyid = mdio_read(&robo, ROBO_PHY_ADDR, 0x2) |
- (mdio_read(&robo, ROBO_PHY_ADDR, 0x3) << 16);
-
- if (phyid == 0xffffffff || phyid == 0x55210022) {
- fprintf(stderr, "No Robo switch in managed mode found\n");
- exit(1);
- }
-
- robo5350 = robo_vlan5350(&robo);
-
- for (i = 1; i < argc;) {
- if (strcasecmp(argv[i], "port") == 0 && (i + 1) < argc)
- {
- int index = atoi(argv[++i]);
- /* read port specs */
- while (++i < argc) {
- if (strcasecmp(argv[i], "state") == 0 && ++i < argc) {
- for (j = 0; j < 4 && strcasecmp(argv[i], rxtx[j]); j++);
- if (j < 4) {
- /* change state */
- robo_write16(&robo,ROBO_CTRL_PAGE, port[index],
- (robo_read16(&robo, ROBO_CTRL_PAGE, port[index]) & ~(3 << 0)) | (j << 0));
- } else {
- fprintf(stderr, "Invalid state '%s'.\n", argv[i]);
- exit(1);
- }
- } else
- if (strcasecmp(argv[i], "stp") == 0 && ++i < argc) {
- for (j = 0; j < 8 && strcasecmp(argv[i], stp[j]); j++);
- if (j < 8) {
- /* change stp */
- robo_write16(&robo,ROBO_CTRL_PAGE, port[index],
- (robo_read16(&robo, ROBO_CTRL_PAGE, port[index]) & ~(7 << 5)) | (j << 5));
- } else {
- fprintf(stderr, "Invalid stp '%s'.\n", argv[i]);
- exit(1);
- }
- } else
- if (strcasecmp(argv[i], "media") == 0 && ++i < argc) {
- for (j = 0; j < 5 && strcasecmp(argv[i], media[j].name); j++);
- if (j < 5) {
- mdio_write(&robo, port[index], MII_BMCR, media[j].bmcr);
- } else {
- fprintf(stderr, "Invalid media '%s'.\n", argv[i]);
- exit(1);
- }
- } else
- if (strcasecmp(argv[i], "mdi-x") == 0 && ++i < argc) {
- for (j = 0; j < 3 && strcasecmp(argv[i], mdix[j].name); j++);
- if (j < 3) {
- mdio_write(&robo, port[index], 0x1c, mdix[j].value |
- (mdio_read(&robo, port[index], 0x1c) & ~0x1800));
- } else {
- fprintf(stderr, "Invalid mdi-x '%s'.\n", argv[i]);
- exit(1);
- }
- } else
- if (strcasecmp(argv[i], "tag") == 0 && ++i < argc) {
- j = atoi(argv[i]);
- /* change vlan tag */
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_PORT0_DEF_TAG + (index << 1), j);
- } else break;
- }
- } else
- if (strcasecmp(argv[i], "vlan") == 0 && (i + 1) < argc)
- {
- int index = atoi(argv[++i]);
- while (++i < argc) {
- if (strcasecmp(argv[i], "ports") == 0 && ++i < argc) {
- char *ports = argv[i];
- int untag = 0;
- int member = 0;
-
- while (*ports >= '0' && *ports <= '9') {
- j = *ports++ - '0';
- member |= 1 << j;
-
- /* untag if needed, CPU port requires special handling */
- if (*ports == 'u' || (j != 5 && (*ports == ' ' || *ports == 0)))
- {
- untag |= 1 << j;
- if (*ports) ports++;
- /* change default vlan tag */
- robo_write16(&robo, ROBO_VLAN_PAGE,
- ROBO_VLAN_PORT0_DEF_TAG + (j << 1), index);
- } else
- if (*ports == '*' || *ports == 't' || *ports == ' ') ports++;
- else break;
-
- while (*ports == ' ') ports++;
- }
-
- if (*ports) {
- fprintf(stderr, "Invalid ports '%s'.\n", argv[i]);
- exit(1);
- } else {
- /* write config now */
- val16 = (index) /* vlan */ | (1 << 12) /* write */ | (1 << 13) /* enable */;
- if (robo5350) {
- robo_write32(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_WRITE_5350,
- (1 << 20) /* valid */ | (untag << 6) | member);
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS_5350, val16);
- } else {
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_WRITE,
- (1 << 14) /* valid */ | (untag << 7) | member);
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS, val16);
- }
- }
- } else break;
- }
- } else
- if (strcasecmp(argv[i], "switch") == 0 && (i + 1) < argc)
- {
- /* enable/disable switching */
- robo_write16(&robo, ROBO_CTRL_PAGE, ROBO_SWITCH_MODE,
- (robo_read16(&robo, ROBO_CTRL_PAGE, ROBO_SWITCH_MODE) & ~2) |
- (*argv[++i] == 'e' ? 2 : 0));
- i++;
- } else
- if (strcasecmp(argv[i], "vlans") == 0 && (i + 1) < argc)
- {
- while (++i < argc) {
- if (strcasecmp(argv[i], "reset") == 0) {
- /* reset vlan validity bit */
- for (j = 0; j <= (robo5350 ? VLAN_ID_MAX5350 : VLAN_ID_MAX); j++)
- {
- /* write config now */
- val16 = (j) /* vlan */ | (1 << 12) /* write */ | (1 << 13) /* enable */;
- if (robo5350) {
- robo_write32(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_WRITE_5350, 0);
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS_5350, val16);
- } else {
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_WRITE, 0);
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS, val16);
- }
- }
- } else
- if (strcasecmp(argv[i], "enable") == 0 || strcasecmp(argv[i], "disable") == 0)
- {
- int disable = (*argv[i] == 'd') || (*argv[i] == 'D');
- /* enable/disable vlans */
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_CTRL0, disable ? 0 :
- (1 << 7) /* 802.1Q VLAN */ | (3 << 5) /* mac check and hash */);
-
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_CTRL1, disable ? 0 :
- (1 << 1) | (1 << 2) | (1 << 3) /* RSV multicast */);
-
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_CTRL4, disable ? 0 :
- (1 << 6) /* drop invalid VID frames */);
-
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_CTRL5, disable ? 0 :
- (1 << 3) /* drop miss V table frames */);
-
- } else break;
- }
- } else
- if (strcasecmp(argv[i], "show") == 0)
- {
- break;
- } else {
- fprintf(stderr, "Invalid option %s\n", argv[i]);
- usage();
- exit(1);
- }
- }
-
- if (i == argc) {
- if (argc == 1) usage();
- return 0;
- }
-
- /* show config */
-
- printf("Switch: %sabled\n", robo_read16(&robo, ROBO_CTRL_PAGE, ROBO_SWITCH_MODE) & 2 ? "en" : "dis");
-
- for (i = 0; i < 6; i++) {
- printf(robo_read16(&robo, ROBO_STAT_PAGE, ROBO_LINK_STAT_SUMMARY) & (1 << port[i]) ?
- "Port %d(%c): %s%s " : "Port %d(%c): DOWN ", i, ports[i],
- robo_read16(&robo, ROBO_STAT_PAGE, ROBO_SPEED_STAT_SUMMARY) & (1 << port[i]) ? "100" : " 10",
- robo_read16(&robo, ROBO_STAT_PAGE, ROBO_DUPLEX_STAT_SUMMARY) & (1 << port[i]) ? "FD" : "HD");
-
- val16 = robo_read16(&robo, ROBO_CTRL_PAGE, port[i]);
-
- printf("%s stp: %s vlan: %d ", rxtx[val16 & 3], stp[(val16 >> 5) & 7],
- robo_read16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_PORT0_DEF_TAG + (i << 1)));
-
- robo_read(&robo, ROBO_STAT_PAGE, ROBO_LSA_PORT0 + port[i] * 6, mac, 3);
-
- printf("mac: %02x:%02x:%02x:%02x:%02x:%02x\n",
- mac[2] >> 8, mac[2] & 255, mac[1] >> 8, mac[1] & 255, mac[0] >> 8, mac[0] & 255);
- }
-
- val16 = robo_read16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_CTRL0);
-
- printf("VLANs: %s %sabled%s%s\n",
- robo5350 ? "BCM5325/535x" : "BCM536x",
- (val16 & (1 << 7)) ? "en" : "dis",
- (val16 & (1 << 6)) ? " mac_check" : "",
- (val16 & (1 << 5)) ? " mac_hash" : "");
-
- /* scan VLANs */
- for (i = 0; i <= (robo5350 ? VLAN_ID_MAX5350 : VLAN_ID_MAX); i++) {
- /* issue read */
- val16 = (i) /* vlan */ | (0 << 12) /* read */ | (1 << 13) /* enable */;
-
- if (robo5350) {
- u32 val32;
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS_5350, val16);
- /* actual read */
- val32 = robo_read32(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_READ);
- if ((val32 & (1 << 20)) /* valid */) {
- printf("vlan%d:", i);
- for (j = 0; j < 6; j++) {
- if (val32 & (1 << j)) {
- printf(" %d%s", j, (val32 & (1 << (j + 6))) ?
- (j == 5 ? "u" : "") : "t");
- }
- }
- printf("\n");
- }
- } else {
- robo_write16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_TABLE_ACCESS, val16);
- /* actual read */
- val16 = robo_read16(&robo, ROBO_VLAN_PAGE, ROBO_VLAN_READ);
- if ((val16 & (1 << 14)) /* valid */) {
- printf("vlan%d:", i);
- for (j = 0; j < 6; j++) {
- if (val16 & (1 << j)) {
- printf(" %d%s", j, (val16 & (1 << (j + 7))) ?
- (j == 5 ? "u" : "") : "t");
- }
- }
- printf("\n");
- }
- }
- }
-
- return (0);
-}
diff --git a/openwrt/package/rp-l2tp/Config.in b/openwrt/package/rp-l2tp/Config.in
deleted file mode 100644
index 962f27397d..0000000000
--- a/openwrt/package/rp-l2tp/Config.in
+++ /dev/null
@@ -1,34 +0,0 @@
-#menu "rp-l2tp............................ Roaring Penguin PPPoE (PPP over Ethernet) implementation"
-
-config BR2_COMPILE_RP_L2TP
- tristate
- default n
- depends BR2_PACKAGE_RP_L2TPD
-
-config BR2_PACKAGE_RP_L2TPD
- prompt "rp-l2tpd.......................... an L2TP (Layer 2 Tunneling Protocol) daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_RP_L2TP
- help
- An L2TP (Layer 2 Tunneling Protocol) daemon.
-
- http://sourceforge.net/projects/rp-l2tp/
-
-config BR2_PACKAGE_RP_L2TPD_MOD_CMD
- prompt "rp-l2tpd-mod-cmd................ a simple command handler for the L2TP daemon"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_RP_L2TPD
- help
- A simple command handler for the L2TP daemon.
-
-config BR2_PACKAGE_RP_L2TPD_MOD_PPP
- prompt "rp-l2tpd-mod-ppp................ a PPP handler for the L2TP daeomon"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_RP_L2TPD
- help
- A PPP handler for the L2TP daeomon.
-
-#endmenu
diff --git a/openwrt/package/rp-l2tp/Makefile b/openwrt/package/rp-l2tp/Makefile
deleted file mode 100644
index e8bf08857b..0000000000
--- a/openwrt/package/rp-l2tp/Makefile
+++ /dev/null
@@ -1,82 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=rp-l2tp
-PKG_VERSION:=0.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=0e45d11cb4fa6c56cce6b1d119733ed9
-
-PKG_SOURCE_URL:=@SF/rp-l2tp
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,RP_L2TPD,rp-l2tpd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,RP_L2TPD_MOD_CMD,rp-l2tpd-mod-cmd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,RP_L2TPD_MOD_PPP,rp-l2tpd-mod-ppp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_RP_L2TPD):
- install -d -m0755 $(IDIR_RP_L2TPD)/etc
- $(CP) $(PKG_INSTALL_DIR)/etc/l2tp.conf.example $(IDIR_RP_L2TPD)/etc/l2tp.conf
- install -d -m0755 $(IDIR_RP_L2TPD)/etc/init.d
- install -m0755 ./files/rp-l2tpd.init $(IDIR_RP_L2TPD)/etc/init.d/rp-l2tpd
- install -d -m0755 $(IDIR_RP_L2TPD)/usr/lib/l2tp
- install -d -m0755 $(IDIR_RP_L2TPD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/l2tpd $(IDIR_RP_L2TPD)/usr/sbin/
- $(RSTRIP) $(IDIR_RP_L2TPD)
- $(IPKG_BUILD) $(IDIR_RP_L2TPD) $(PACKAGE_DIR)
-
-$(IPKG_RP_L2TPD_MOD_CMD):
- install -d -m0755 $(IDIR_RP_L2TPD_MOD_CMD)/usr/lib/l2tp
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/l2tp/cmd.so $(IDIR_RP_L2TPD_MOD_CMD)/usr/lib/l2tp/
- install -d -m0755 $(IDIR_RP_L2TPD_MOD_CMD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/l2tp-control $(IDIR_RP_L2TPD_MOD_CMD)/usr/sbin/
- $(RSTRIP) $(IDIR_RP_L2TPD_MOD_CMD)
- $(IPKG_BUILD) $(IDIR_RP_L2TPD_MOD_CMD) $(PACKAGE_DIR)
-
-$(IPKG_RP_L2TPD_MOD_PPP):
- install -d -m0755 $(IDIR_RP_L2TPD_MOD_PPP)/usr/lib/l2tp
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/l2tp/sync-pppd.so $(IDIR_RP_L2TPD_MOD_PPP)/usr/lib/l2tp/
- $(RSTRIP) $(IDIR_RP_L2TPD_MOD_PPP)
- $(IPKG_BUILD) $(IDIR_RP_L2TPD_MOD_PPP) $(PACKAGE_DIR)
diff --git a/openwrt/package/rp-l2tp/files/rp-l2tpd.init b/openwrt/package/rp-l2tp/files/rp-l2tpd.init
deleted file mode 100755
index 4e03836bbe..0000000000
--- a/openwrt/package/rp-l2tp/files/rp-l2tpd.init
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/rp-l2tpd
-RUN_D=/var/run
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- [ -d $RUN_D ] || mkdir -p $RUN_D
- l2tpd $OPTIONS
- ;;
- *)
- echo "usage: $0 (start)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/rp-l2tp/ipkg/rp-l2tpd-mod-cmd.control b/openwrt/package/rp-l2tp/ipkg/rp-l2tpd-mod-cmd.control
deleted file mode 100644
index d8ee698105..0000000000
--- a/openwrt/package/rp-l2tp/ipkg/rp-l2tpd-mod-cmd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: rp-l2tpd-mod-cmd
-Priority: optional
-Section: net
-Description: a simple command handler for the L2TP daemon
-Depends: rp-l2tpd
diff --git a/openwrt/package/rp-l2tp/ipkg/rp-l2tpd-mod-ppp.control b/openwrt/package/rp-l2tp/ipkg/rp-l2tpd-mod-ppp.control
deleted file mode 100644
index 4237dff0d8..0000000000
--- a/openwrt/package/rp-l2tp/ipkg/rp-l2tpd-mod-ppp.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: rp-l2tpd-mod-ppp
-Priority: optional
-Section: net
-Description: a PPP handler for the L2TP daeomon
-Depends: rp-l2tpd, ppp
diff --git a/openwrt/package/rp-l2tp/ipkg/rp-l2tpd.conffiles b/openwrt/package/rp-l2tp/ipkg/rp-l2tpd.conffiles
deleted file mode 100644
index 6d441f4bfb..0000000000
--- a/openwrt/package/rp-l2tp/ipkg/rp-l2tpd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/l2tp.conf
diff --git a/openwrt/package/rp-l2tp/ipkg/rp-l2tpd.control b/openwrt/package/rp-l2tp/ipkg/rp-l2tpd.control
deleted file mode 100644
index f1ba72fb83..0000000000
--- a/openwrt/package/rp-l2tp/ipkg/rp-l2tpd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: rp-l2tpd
-Priority: optional
-Section: net
-Description: an L2TP (Layer 2 Tunneling Protocol) daemon
diff --git a/openwrt/package/rp-l2tp/patches/01-cross.patch b/openwrt/package/rp-l2tp/patches/01-cross.patch
deleted file mode 100644
index 654402efd0..0000000000
--- a/openwrt/package/rp-l2tp/patches/01-cross.patch
+++ /dev/null
@@ -1,235 +0,0 @@
-diff -ruN rp-l2tp-0.4-orig/Makefile.in rp-l2tp-0.4-4/Makefile.in
---- rp-l2tp-0.4-orig/Makefile.in 2004-07-01 17:17:11.000000000 +0200
-+++ rp-l2tp-0.4-4/Makefile.in 2005-03-09 16:26:49.000000000 +0100
-@@ -27,10 +27,10 @@
- sbindir=@sbindir@
-
- OBJS=auth.o debug.o dgram.o main.o md5.o network.o options.o peer.o session.o tunnel.o utils.o
--EXTRA_LIBS=@LIBEVENT@/*.o -ldl
-+EXTRA_LIBS=@LIBEVENT@/*.o -lc -ldl
-
- SRCS=$(OBJS:.o=.c)
--CFLAGS=-g -I.. -I@LIBEVENT@ -Wall -Wstrict-prototypes -ansi -pedantic -D_GNU_SOURCE -DVERSION=\"$(VERSION)\" -DPREFIX=\"$(prefix)\"
-+CFLAGS=@CFLAGS@ -I@LIBEVENT@ -Wall -Wstrict-prototypes -ansi -pedantic -D_GNU_SOURCE -DVERSION=\"$(VERSION)\" -DPREFIX=\"$(prefix)\"
-
- TARGETS=l2tpd libl2tp.a handlers
-
-@@ -38,12 +38,12 @@
-
- libl2tp.a: $(OBJS)
- rm -f $@
-- ar -rc $@ $^
-- ranlib $@ || true
-+ $(AR) -rc $@ $^
-+ @RANLIB@ $@ || true
-
- l2tpd: libl2tp.a libevent/libevent.a
- $(MAKE) -C handlers
-- @CC@ -o l2tpd -rdynamic $(OBJS) $(EXTRA_LIBS)
-+ @CC@ $(CFLAGS) -o l2tpd -rdynamic $(OBJS) $(EXTRA_LIBS)
-
- libevent/libevent.a:
- test -d libevent || ln -s ../libevent .
-@@ -72,18 +72,20 @@
- rm -f *.o *.a *~
- rm -f l2tpd
- $(MAKE) -C handlers clean
-+ $(MAKE) -C libevent clean
-
- distclean: clean
-- rm -f Makefile config.cache
-+ rm -f Makefile config.cache config.log config.status .depend
- $(MAKE) -C handlers distclean
-+ $(MAKE) -C libevent distclean
-
- -include .depend
-
- install: all
- -mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
-- $(install) -m 755 -s l2tpd $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
-+ $(install) -m 755 l2tpd $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
- -mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/l2tp
-- $(install) -m 644 l2tp.conf $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/l2tp/l2tp.conf.example
-+ $(install) -m 644 l2tp.conf $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/l2tp.conf.example
- -mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)$(mandir)/man8
- -mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)$(mandir)/man5
- $(install) -m 644 man/l2tpd.8 $(RPM_INSTALL_ROOT)$(DESTDIR)$(mandir)/man8
-diff -ruN rp-l2tp-0.4-orig/handlers/Makefile.in rp-l2tp-0.4-4/handlers/Makefile.in
---- rp-l2tp-0.4-orig/handlers/Makefile.in 2002-09-30 21:45:00.000000000 +0200
-+++ rp-l2tp-0.4-4/handlers/Makefile.in 2005-03-09 16:26:49.000000000 +0100
-@@ -14,32 +14,34 @@
-
- OBJS=pty.o sync-pppd.o dstring.o
- SRCS=$(OBJS:.o=.c)
--CFLAGS=-g -O2 -I.. -I../libevent -I../../libevent -Wall
-+CFLAGS=@CFLAGS@ -I.. -I../libevent -I../../libevent -Wall
-
- all: $(HANDLERS) l2tp-control
-
- l2tp-control: cmd-control.o
-- gcc -o l2tp-control cmd-control.o
-+ $(CC) $(CFLAGS) -o l2tp-control cmd-control.o
-
- cmd-control.o: cmd-control.c
-- gcc -c -o $@ $^
-+ $(CC) $(CFLAGS) -c -o $@ $^
-
- %.o: %.c
-- gcc $(CFLAGS) -fPIC -c -o $@ $<
-+ $(CC) $(CFLAGS) -fPIC -c -o $@ $<
-
- sync-pppd.so: pty.o sync-pppd.o
-- gcc -shared -o $@ $^
-+ $(CC) $(CFLAGS) -shared -o $@ $^
-
- cmd.so: cmd.o dstring.o
-- gcc -shared -o $@ $^
-+ $(CC) $(CFLAGS) -shared -o $@ $^
-
- clean:
- rm -f *.so *.o *~
- rm -f l2tp-control
-
- install: all
-- -mkdir -p $(RPM_INSTALL_ROOT)$(sbindir)
-- -mkdir -p $(RPM_INSTALL_ROOT)$(prefix)/lib/l2tp/plugins
-- $(install) -m 755 -s l2tp-control $(RPM_INSTALL_ROOT)$(sbindir)
-- $(install) -m 755 $(HANDLERS) $(RPM_INSTALL_ROOT)$(prefix)/lib/l2tp/plugins
-+ -mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
-+ -mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)$(prefix)/lib/l2tp
-+ $(install) -m 755 l2tp-control $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
-+ $(install) -m 755 $(HANDLERS) $(RPM_INSTALL_ROOT)$(DESTDIR)$(prefix)/lib/l2tp
-+
- distclean: clean
-+ rm -f Makefile
-diff -ruN rp-l2tp-0.4-orig/handlers/cmd-control.c rp-l2tp-0.4-4/handlers/cmd-control.c
---- rp-l2tp-0.4-orig/handlers/cmd-control.c 2002-09-30 21:45:00.000000000 +0200
-+++ rp-l2tp-0.4-4/handlers/cmd-control.c 2005-03-09 16:26:49.000000000 +0100
-@@ -52,7 +52,7 @@
-
- memset(&addr, 0, sizeof(addr));
- addr.sun_family = AF_LOCAL;
-- strncpy(addr.sun_path, "/var/run/l2tpctrl", sizeof(addr.sun_path) - 1);
-+ strncpy(addr.sun_path, "/var/run/l2tp.sock", sizeof(addr.sun_path) - 1);
-
- fd = socket(AF_LOCAL, SOCK_STREAM, 0);
- if (fd < 0) {
-diff -ruN rp-l2tp-0.4-orig/handlers/cmd.c rp-l2tp-0.4-4/handlers/cmd.c
---- rp-l2tp-0.4-orig/handlers/cmd.c 2004-07-01 16:58:56.000000000 +0200
-+++ rp-l2tp-0.4-4/handlers/cmd.c 2005-03-09 16:26:49.000000000 +0100
-@@ -162,7 +162,7 @@
-
- /* We have hit the end of our options. Open command socket */
- if (!sockname) {
-- sockname = "/var/run/l2tpctrl";
-+ sockname = "/var/run/l2tp.sock";
- }
-
- (void) remove(sockname);
-diff -ruN rp-l2tp-0.4-orig/libevent/Makefile.in rp-l2tp-0.4-4/libevent/Makefile.in
---- rp-l2tp-0.4-orig/libevent/Makefile.in 2002-09-30 21:45:00.000000000 +0200
-+++ rp-l2tp-0.4-4/libevent/Makefile.in 2005-03-09 16:26:49.000000000 +0100
-@@ -18,24 +18,27 @@
-
- libevent.a: $(OBJS)
- rm -f libevent.a
-- ar -cq libevent.a $(OBJS)
-+ $(AR) r libevent.a $(OBJS)
- @RANLIB@ libevent.a
-
- event.o: event.c $(HDRS)
-- gcc $(CFLAGS) -c -o event.o event.c
-+ $(CC) $(CFLAGS) -c -o event.o event.c
-
- hash.o: hash.c $(HDRS)
-- gcc $(CFLAGS) -c -o hash.o hash.c
-+ $(CC) $(CFLAGS) -c -o hash.o hash.c
-
- event_sig.o: event_sig.c $(HDRS)
-- gcc $(CFLAGS) -c -o event_sig.o event_sig.c
-+ $(CC) $(CFLAGS) -c -o event_sig.o event_sig.c
-
- event_tcp.o: event_tcp.c $(HDRS)
-- gcc $(CFLAGS) -c -o event_tcp.o event_tcp.c
-+ $(CC) $(CFLAGS) -c -o event_tcp.o event_tcp.c
-
- clean: FORCE
- rm -f *.a *.o *~
-
-+distclean: clean
-+ rm -f Makefile
-+
- FORCE:
-
--.phony: FORCE
-\ No newline at end of file
-+.phony: FORCE
-diff -ruN rp-l2tp-0.4-orig/main.c rp-l2tp-0.4-4/main.c
---- rp-l2tp-0.4-orig/main.c 2002-09-30 21:45:00.000000000 +0200
-+++ rp-l2tp-0.4-4/main.c 2005-03-09 16:26:49.000000000 +0100
-@@ -68,7 +68,7 @@
- l2tp_peer_init();
- l2tp_debug_set_bitmask(debugmask);
-
-- if (l2tp_parse_config_file(es, "/etc/l2tp/l2tp.conf") < 0) {
-+ if (l2tp_parse_config_file(es, "/etc/l2tp.conf") < 0) {
- l2tp_die();
- }
-
-diff -ruN rp-l2tp-0.4-orig/man/l2tp.conf.5 rp-l2tp-0.4-4/man/l2tp.conf.5
---- rp-l2tp-0.4-orig/man/l2tp.conf.5 2004-07-01 16:58:56.000000000 +0200
-+++ rp-l2tp-0.4-4/man/l2tp.conf.5 2005-03-09 16:26:49.000000000 +0100
-@@ -155,7 +155,7 @@
- in the global section. The only option available is:
- .IP "\fBsocket-path\fP \fIpathname\fR"
- Specifies the path name of the UNIX-domain socket for controlling the
--daemon. Defaults to \fI/var/run/l2tpctrl\fR.
-+daemon. Defaults to \fI/var/run/l2tp.sock\fR.
- .PP
- Even if you do not supply any options to cmd, you \fImust\fR have
- a \fBsection cmd\fR line to activate the handler.
-diff -ruN rp-l2tp-0.4-orig/man/l2tpd.8 rp-l2tp-0.4-4/man/l2tpd.8
---- rp-l2tp-0.4-orig/man/l2tpd.8 2002-09-30 21:45:00.000000000 +0200
-+++ rp-l2tp-0.4-4/man/l2tpd.8 2005-03-09 16:26:49.000000000 +0100
-@@ -47,17 +47,17 @@
- fairly lightweight and efficient.
-
- .SH L2TPD CONFIGURATION
--On startup, \fBl2tpd\fR reads the configuration file \fB/etc/l2tp/l2tp.conf\fR.
-+On startup, \fBl2tpd\fR reads the configuration file \fB/etc/l2tp.conf\fR.
- This configuration file sets operating parameters, describes peers and loads
- and configures handlers. See \fBl2tp.conf\fR(5) for configuration
- file details.
-
- .SH FILES
- .TP
--.B /etc/l2tp/l2tp.conf
-+.B /etc/l2tp.conf
- Main configuration file.
- .TP
--.B /var/run/l2tpctrl
-+.B /var/run/l2tp.sock
- Control socket for \fBcmd.so\fR handler.
-
- .SH AUTHORS
-diff -ruN rp-l2tp-0.4-orig/utils.c rp-l2tp-0.4-4/utils.c
---- rp-l2tp-0.4-orig/utils.c 2002-09-30 21:45:00.000000000 +0200
-+++ rp-l2tp-0.4-4/utils.c 2005-03-09 16:26:49.000000000 +0100
-@@ -182,7 +182,7 @@
- * -1 on error, 0 if OK
- * %DESCRIPTION:
- * Dynamically-loads a handler and initializes it. If fname is not
--* an absolute path name, we load the handler from /usr/lib/l2tp/plugins
-+* an absolute path name, we load the handler from /usr/lib/l2tp
- ***********************************************************************/
- int
- l2tp_load_handler(EventSelector *es,
-@@ -196,7 +196,7 @@
- if (*fname == '/') {
- handle = dlopen(fname, RTLD_NOW);
- } else {
-- snprintf(buf, sizeof(buf), "%s/lib/l2tp/plugins/%s", PREFIX, fname);
-+ snprintf(buf, sizeof(buf), "%s/lib/l2tp/%s", PREFIX, fname);
- buf[sizeof(buf)-1] = 0;
- handle = dlopen(buf, RTLD_NOW);
- }
diff --git a/openwrt/package/rp-pppoe/Config.in b/openwrt/package/rp-pppoe/Config.in
deleted file mode 100644
index a88b09b0cf..0000000000
--- a/openwrt/package/rp-pppoe/Config.in
+++ /dev/null
@@ -1,50 +0,0 @@
-#menu "rp-pppoe.......................... Roaring Penguin PPPoE (PPP over Ethernet) implementation"
-
-config BR2_COMPILE_RP_PPPOE
- tristate
- default n
- depends BR2_PACKAGE_PPPOE_CLIENT || BR2_PACKAGE_PPPOE_RELAY || BR2_PACKAGE_PPPOE_SERVER || BR2_PACKAGE_PPPOE_SNIFF
-
-config BR2_PACKAGE_PPPOE_CLIENT
- prompt "pppoe-client...................... PPPoE (PPP over Ethernet) client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_RP_PPPOE
- select BR2_PACKAGE_PPP
- help
- PPPoE (PPP over Ethernet) client
-
- http://roaringpenguin.com/penguin/open_source_rp-pppoe.php
-
-config BR2_PACKAGE_PPPOE_RELAY
- prompt "pppoe-relay....................... PPPoE (PPP over Ethernet) relay"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_RP_PPPOE
- help
- PPPoE (PPP over Ethernet) relay
-
- http://roaringpenguin.com/penguin/open_source_rp-pppoe.php
-
-config BR2_PACKAGE_PPPOE_SERVER
- prompt "pppoe-server...................... PPPoE (PPP over Ethernet) server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_RP_PPPOE
- select BR2_PACKAGE_PPP
- help
- PPPoE (PPP over Ethernet) server
-
- http://roaringpenguin.com/penguin/open_source_rp-pppoe.php
-
-config BR2_PACKAGE_PPPOE_SNIFF
- prompt "pppoe-sniff....................... PPPoE (PPP over Ethernet) frame sniffer"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_RP_PPPOE
- help
- PPPoE (PPP over Ethernet) frame sniffer
-
- http://roaringpenguin.com/penguin/open_source_rp-pppoe.php
-
-#endmenu
diff --git a/openwrt/package/rp-pppoe/Makefile b/openwrt/package/rp-pppoe/Makefile
deleted file mode 100644
index 1b829d8363..0000000000
--- a/openwrt/package/rp-pppoe/Makefile
+++ /dev/null
@@ -1,101 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=rp-pppoe
-PKG_VERSION:=3.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=
-
-PKG_SOURCE_URL:=http://roaringpenguin.com/penguin/pppoe/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,PPPOE_CLIENT,pppoe-client,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PPPOE_RELAY,pppoe-relay,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PPPOE_SERVER,pppoe-server,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,PPPOE_SNIFF,pppoe-sniff,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR)/src ; rm -rf config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ac_cv_func_setvbuf_reversed=no \
- ac_cv_sizeof_unsigned_short=2 \
- ac_cv_sizeof_unsigned_int=4 \
- ac_cv_sizeof_unsigned_long=4 \
- ac_cv_linux_kernel_pppoe=yes \
- ac_cv_pack_bitfields_reversed=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)/src \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_PPPOE_CLIENT):
- install -d -m0755 $(IDIR_PPPOE_CLIENT)/etc/init.d
- install -m0755 ./files/pppoe-client.init $(IDIR_PPPOE_CLIENT)/etc/init.d/pppoe-client
- install -d -m0755 $(IDIR_PPPOE_CLIENT)/etc/ppp
- install -m0644 $(PKG_INSTALL_DIR)/etc/pppoe.conf $(IDIR_PPPOE_CLIENT)/etc/
- install -d -m0755 $(IDIR_PPPOE_CLIENT)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/pppoe $(IDIR_PPPOE_CLIENT)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/adsl-* $(IDIR_PPPOE_CLIENT)/usr/sbin/
- $(RSTRIP) $(IDIR_PPPOE_CLIENT)
- $(IPKG_BUILD) $(IDIR_PPPOE_CLIENT) $(PACKAGE_DIR)
-
-$(IPKG_PPPOE_RELAY):
- install -d -m0755 $(IDIR_PPPOE_RELAY)/etc/default
- install -m0755 ./files/pppoe-relay.default $(IDIR_PPPOE_RELAY)/etc/default/pppoe-relay
- install -d -m0755 $(IDIR_PPPOE_RELAY)/etc/init.d
- install -m0755 ./files/pppoe-relay.init $(IDIR_PPPOE_RELAY)/etc/init.d/pppoe-relay
- install -d -m0755 $(IDIR_PPPOE_RELAY)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/pppoe-relay $(IDIR_PPPOE_RELAY)/usr/sbin/
- $(RSTRIP) $(IDIR_PPPOE_RELAY)
- $(IPKG_BUILD) $(IDIR_PPPOE_RELAY) $(PACKAGE_DIR)
-
-$(IPKG_PPPOE_SERVER):
- install -d -m0755 $(IDIR_PPPOE_SERVER)/etc/default
- install -m0755 ./files/pppoe-server.default $(IDIR_PPPOE_SERVER)/etc/default/pppoe-server
- install -d -m0755 $(IDIR_PPPOE_SERVER)/etc/init.d
- install -m0755 ./files/pppoe-server.init $(IDIR_PPPOE_SERVER)/etc/init.d/pppoe-server
- install -d -m0755 $(IDIR_PPPOE_SERVER)/etc/ppp
- install -m0644 $(PKG_INSTALL_DIR)/etc/ppp/pppoe-server-options $(IDIR_PPPOE_SERVER)/etc/ppp/
- install -d -m0755 $(IDIR_PPPOE_SERVER)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/pppoe-server $(IDIR_PPPOE_SERVER)/usr/sbin/
- $(RSTRIP) $(IDIR_PPPOE_SERVER)
- $(IPKG_BUILD) $(IDIR_PPPOE_SERVER) $(PACKAGE_DIR)
-
-$(IPKG_PPPOE_SNIFF):
- install -d -m0755 $(IDIR_PPPOE_SNIFF)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/pppoe-sniff $(IDIR_PPPOE_SNIFF)/usr/sbin/
- $(RSTRIP) $(IDIR_PPPOE_SNIFF)
- $(IPKG_BUILD) $(IDIR_PPPOE_SNIFF) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/rp-pppoe/files/pppoe-client.init b/openwrt/package/rp-pppoe/files/pppoe-client.init
deleted file mode 100644
index fb3f4ca3e8..0000000000
--- a/openwrt/package/rp-pppoe/files/pppoe-client.init
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-case "$1" in
- start|stop)
- adsl-$1
- ;;
- *)
- echo "usage: $0 {start|stop}"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/rp-pppoe/files/pppoe-relay.default b/openwrt/package/rp-pppoe/files/pppoe-relay.default
deleted file mode 100644
index 47a3892c4c..0000000000
--- a/openwrt/package/rp-pppoe/files/pppoe-relay.default
+++ /dev/null
@@ -1 +0,0 @@
-OPTIONS="-C eth2 -S vlan1"
diff --git a/openwrt/package/rp-pppoe/files/pppoe-relay.init b/openwrt/package/rp-pppoe/files/pppoe-relay.init
deleted file mode 100644
index d8212f2588..0000000000
--- a/openwrt/package/rp-pppoe/files/pppoe-relay.init
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/pppoe-relay
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- pppoe-relay $OPTIONS
- ;;
- *)
- echo "usage: $0 (start)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/rp-pppoe/files/pppoe-server.default b/openwrt/package/rp-pppoe/files/pppoe-server.default
deleted file mode 100644
index 72a8c01990..0000000000
--- a/openwrt/package/rp-pppoe/files/pppoe-server.default
+++ /dev/null
@@ -1 +0,0 @@
-OPTIONS="-C MyRouter -I eth2"
diff --git a/openwrt/package/rp-pppoe/files/pppoe-server.init b/openwrt/package/rp-pppoe/files/pppoe-server.init
deleted file mode 100644
index 2768895de0..0000000000
--- a/openwrt/package/rp-pppoe/files/pppoe-server.init
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/pppoe-server
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- pppoe-server $OPTIONS
- ;;
- *)
- echo "usage: $0 (start)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/rp-pppoe/ipkg/pppoe-client.conffiles b/openwrt/package/rp-pppoe/ipkg/pppoe-client.conffiles
deleted file mode 100644
index 95004e5cd9..0000000000
--- a/openwrt/package/rp-pppoe/ipkg/pppoe-client.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/pppoe.conf
diff --git a/openwrt/package/rp-pppoe/ipkg/pppoe-client.control b/openwrt/package/rp-pppoe/ipkg/pppoe-client.control
deleted file mode 100644
index dd64953c31..0000000000
--- a/openwrt/package/rp-pppoe/ipkg/pppoe-client.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: pppoe-client
-Priority: optional
-Section: net
-Description: PPPoE (PPP over Ethernet) client
-Depends: ppp
diff --git a/openwrt/package/rp-pppoe/ipkg/pppoe-relay.conffiles b/openwrt/package/rp-pppoe/ipkg/pppoe-relay.conffiles
deleted file mode 100644
index 9bcce348af..0000000000
--- a/openwrt/package/rp-pppoe/ipkg/pppoe-relay.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/default/pppoe-relay
diff --git a/openwrt/package/rp-pppoe/ipkg/pppoe-relay.control b/openwrt/package/rp-pppoe/ipkg/pppoe-relay.control
deleted file mode 100644
index de64b0becc..0000000000
--- a/openwrt/package/rp-pppoe/ipkg/pppoe-relay.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: pppoe-relay
-Priority: optional
-Section: net
-Description: PPPoE (PPP over Ethernet) relay
diff --git a/openwrt/package/rp-pppoe/ipkg/pppoe-server.conffiles b/openwrt/package/rp-pppoe/ipkg/pppoe-server.conffiles
deleted file mode 100644
index e2ffe55451..0000000000
--- a/openwrt/package/rp-pppoe/ipkg/pppoe-server.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/default/pppoe-server
-/etc/ppp/pppoe-server-options
diff --git a/openwrt/package/rp-pppoe/ipkg/pppoe-server.control b/openwrt/package/rp-pppoe/ipkg/pppoe-server.control
deleted file mode 100644
index 530017b965..0000000000
--- a/openwrt/package/rp-pppoe/ipkg/pppoe-server.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: pppoe-server
-Priority: optional
-Section: net
-Description: PPPoE (PPP over Ethernet) server
-Depends: ppp
diff --git a/openwrt/package/rp-pppoe/ipkg/pppoe-sniff.control b/openwrt/package/rp-pppoe/ipkg/pppoe-sniff.control
deleted file mode 100644
index df7b95cf27..0000000000
--- a/openwrt/package/rp-pppoe/ipkg/pppoe-sniff.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: pppoe-sniff
-Priority: optional
-Section: net
-Description: PPPoE (PPP over Ethernet) frame sniffer
diff --git a/openwrt/package/rp-pppoe/ipkg/rules b/openwrt/package/rp-pppoe/ipkg/rules
deleted file mode 100644
index dc8444704a..0000000000
--- a/openwrt/package/rp-pppoe/ipkg/rules
+++ /dev/null
@@ -1,170 +0,0 @@
-#!/usr/bin/make -f
-
-ifneq ($(strip ${IPKG_RULES_INC}),)
- include $(IPKG_RULES_INC)
-endif
-
-##
-
-PKG_VERSION := $(shell cat ./ipkg/version)
-CURRENT_DIR := $(shell pwd)
-INSTALL_DIR ?= $(CURRENT_DIR)/ipkg-install
-
-unexport INSTALL_DIR
-
-I_PPPOE_SERVER := ipkg/pppoe-server
-I_PPPOE_RELAY := ipkg/pppoe-relay
-I_PPPOE_SNIFF := ipkg/pppoe-sniff
-I_PPPOE_CLIENT := ipkg/pppoe-client
-
-BUILD_DEPS = \
-
-CONFIGURE_OPTS = \
-
-##
-
-all: package
-
-
-.stamp-configured: $(BUILD_DEPS)
-
- cd src ; \
- rm -rf config.cache ; \
- $(TARGET_CONFIGURE_OPTS) \
- ac_cv_func_setvbuf_reversed=no \
- ac_cv_sizeof_unsigned_short=2 \
- ac_cv_sizeof_unsigned_int=4 \
- ac_cv_sizeof_unsigned_long=4 \
- ac_cv_linux_kernel_pppoe=yes \
- ac_cv_pack_bitfields_reversed=yes \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- $(CONFIGURE_OPTS) \
-
- touch .stamp-configured
-
-
-.stamp-built: .stamp-configured
-
- $(MAKE) -C src \
- $(TARGET_CONFIGURE_OPTS) \
-
- touch .stamp-built
-
-
-$(INSTALL_DIR)/usr/sbin/pppoe: .stamp-built
-
- mkdir -p $(INSTALL_DIR)
-
- $(MAKE) -C src \
- DESTDIR="$(INSTALL_DIR)" \
- install
-
-
-configure: .stamp-configured
-
-
-build: .stamp-built
-
-
-install: $(INSTALL_DIR)/usr/sbin/pppoe
-
-
-package: $(INSTALL_DIR)/usr/sbin/pppoe
-
- mkdir -p $(I_PPPOE_SERVER)/etc/ppp
- cp -fpR $(INSTALL_DIR)/etc/ppp/pppoe-server-options $(I_PPPOE_SERVER)/etc/ppp/
- mkdir -p $(I_PPPOE_SERVER)/usr/sbin
- cp -fpR $(INSTALL_DIR)/usr/sbin/pppoe-server $(I_PPPOE_SERVER)/usr/sbin/
- $(STRIP) $(I_PPPOE_SERVER)/usr/sbin/*
-
- mkdir -p $(I_PPPOE_RELAY)/usr/sbin
- cp -fpR $(INSTALL_DIR)/usr/sbin/pppoe-relay $(I_PPPOE_RELAY)/usr/sbin/
- $(STRIP) $(I_PPPOE_RELAY)/usr/sbin/*
-
- mkdir -p $(I_PPPOE_SNIFF)/usr/sbin
- cp -fpR $(INSTALL_DIR)/usr/sbin/pppoe-sniff $(I_PPPOE_SNIFF)/usr/sbin/
- $(STRIP) $(I_PPPOE_SNIFF)/usr/sbin/*
-
- mkdir -p $(I_PPPOE_CLIENT)/etc
- cp -fpR $(INSTALL_DIR)/etc/pppoe.conf $(I_PPPOE_CLIENT)/etc/
- mkdir -p $(I_PPPOE_CLIENT)/usr/sbin
- cp -fpR $(INSTALL_DIR)/usr/sbin/pppoe $(I_PPPOE_CLIENT)/usr/sbin/
- $(STRIP) $(I_PPPOE_CLIENT)/usr/sbin/*
- cp -fpR $(INSTALL_DIR)/usr/sbin/adsl-* $(I_PPPOE_CLIENT)/usr/sbin/
-
- chmod 0755 ipkg/*/etc/
- chmod 0755 ipkg/*/etc/default/
- chmod 0644 ipkg/*/etc/default/*
- chmod 0755 ipkg/*/etc/init.d/
- chmod 0755 ipkg/*/etc/init.d/*
-
- chmod 0755 ipkg/*/CONTROL/
- chmod 0644 ipkg/*/CONTROL/control
- -chmod 0644 ipkg/*/CONTROL/conffiles
-
- perl -pi -e "s/^Arch.*:.*/Architecture: $(ARCH)/g" ipkg/*/CONTROL/control
-ifneq ($(strip $(PKG_VERSION)),)
- perl -pi -e "s/^Vers.*:.*/Version: $(PKG_VERSION)/g" ipkg/*/CONTROL/control
-endif
-
- $(IPKG_BUILD) $(I_PPPOE_SERVER) $(IPKG_TARGET_DIR)
- $(IPKG_BUILD) $(I_PPPOE_RELAY) $(IPKG_TARGET_DIR)
- $(IPKG_BUILD) $(I_PPPOE_SNIFF) $(IPKG_TARGET_DIR)
- $(IPKG_BUILD) $(I_PPPOE_CLIENT) $(IPKG_TARGET_DIR)
-
-
-clean:
-
- -$(MAKE) -C src \
- clean
-
- rm -rf .stamp-* \
- $(INSTALL_DIR)/etc/pppoe.conf \
- $(INSTALL_DIR)/etc/ppp/pppoe-server-options \
- $(INSTALL_DIR)/usr/doc/rp-pppoe* \
- $(INSTALL_DIR)/usr/sbin/adsl-* \
- $(INSTALL_DIR)/usr/sbin/pppoe* \
- $(INSTALL_DIR)/usr/share/man/man5/pppoe.conf.5* \
- $(INSTALL_DIR)/usr/share/man/man8/adsl-*.8* \
- $(INSTALL_DIR)/usr/share/man/man8/pppoe*.8* \
- $(I_PPPOE_SERVER)/etc/ppp \
- $(I_PPPOE_SERVER)/usr \
- $(I_PPPOE_RELAY)/usr \
- $(I_PPPOE_SNIFF)/usr \
- $(I_PPPOE_CLIENT)/etc/ppp* \
- $(I_PPPOE_CLIENT)/usr \
-
-
-control:
-
- @cat $(I_PPPOE_SERVER)/CONTROL/control
- @echo
- @cat $(I_PPPOE_RELAY)/CONTROL/control
- @echo
- @cat $(I_PPPOE_SNIFF)/CONTROL/control
- @echo
- @cat $(I_PPPOE_CLIENT)/CONTROL/control
- @echo
-
-
-.PHONY: configure build install package clean control
diff --git a/openwrt/package/rp-pppoe/ipkg/version b/openwrt/package/rp-pppoe/ipkg/version
deleted file mode 100644
index 99d9948ce5..0000000000
--- a/openwrt/package/rp-pppoe/ipkg/version
+++ /dev/null
@@ -1 +0,0 @@
-3.5-4
diff --git a/openwrt/package/rp-pppoe/patches/rp-pppoe-3.5-Makefile.patch b/openwrt/package/rp-pppoe/patches/rp-pppoe-3.5-Makefile.patch
deleted file mode 100644
index 188a0e11cf..0000000000
--- a/openwrt/package/rp-pppoe/patches/rp-pppoe-3.5-Makefile.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-diff -ruN rp-pppoe-3.5-orig/src/Makefile.in rp-pppoe-3.5-4/src/Makefile.in
---- rp-pppoe-3.5-orig/src/Makefile.in 2002-07-08 16:38:24.000000000 +0200
-+++ rp-pppoe-3.5-4/src/Makefile.in 2005-03-09 16:37:38.000000000 +0100
-@@ -62,21 +62,23 @@
- TARGETS=@TARGETS@
- PPPOE_SERVER_LIBS=$(LIC_LIBDIR) $(LIC_LIB)
-
-+LIBS="-lc"
-+
- all: $(TARGETS)
- @echo ""
- @echo "Type 'make install' as root to install the software."
-
- pppoe-sniff: pppoe-sniff.o if.o common.o debug.o
-- @CC@ -o pppoe-sniff pppoe-sniff.o if.o common.o debug.o
-+ @CC@ $(CFLAGS) -o pppoe-sniff pppoe-sniff.o if.o common.o debug.o $(LIBS)
-
- pppoe-server: pppoe-server.o if.o debug.o common.o md5.o libevent/libevent.a @PPPOE_SERVER_DEPS@
-- @CC@ -o pppoe-server @RDYNAMIC@ pppoe-server.o if.o debug.o common.o md5.o $(PPPOE_SERVER_LIBS) -Llibevent -levent
-+ @CC@ $(CFLAGS) -o pppoe-server @RDYNAMIC@ pppoe-server.o if.o debug.o common.o md5.o $(PPPOE_SERVER_LIBS) -Llibevent -levent $(LIBS)
-
- pppoe: pppoe.o if.o debug.o common.o ppp.o discovery.o
-- @CC@ -o pppoe pppoe.o if.o debug.o common.o ppp.o discovery.o
-+ @CC@ $(CFLAGS) -o pppoe pppoe.o if.o debug.o common.o ppp.o discovery.o $(LIBS)
-
- pppoe-relay: relay.o if.o debug.o common.o
-- @CC@ -o pppoe-relay relay.o if.o debug.o common.o
-+ @CC@ $(CFLAGS) -o pppoe-relay relay.o if.o debug.o common.o $(LIBS)
-
- pppoe.o: pppoe.c pppoe.h
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o pppoe.o pppoe.c
-@@ -119,7 +121,7 @@
- @CC@ '-DRP_VERSION="$(VERSION)"' $(CFLAGS) -I$(PPPD_INCDIR) -c -o plugin/plugin.o -fPIC plugin.c
-
- plugin/libplugin.a: plugin/discovery.o plugin/if.o plugin/common.o plugin/debug.o
-- ar -rc $@ $^
-+ $(AR) -rc $@ $^
-
- plugin/discovery.o: discovery.c
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o plugin/discovery.o -fPIC discovery.c
-@@ -134,78 +136,78 @@
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o plugin/common.o -fPIC common.c
-
- install: all
-- -mkdir -p $(RPM_INSTALL_ROOT)$(sbindir)
-- $(install) -m 755 -s pppoe $(RPM_INSTALL_ROOT)$(sbindir)
-- $(install) -m 755 -s pppoe-server $(RPM_INSTALL_ROOT)$(sbindir)
-- if test -x licensed-only/pppoe-server-control ; then $(install) -m 755 -s licensed-only/pppoe-server-control $(RPM_INSTALL_ROOT)$(sbindir); fi
-- if test -x pppoe-relay ; then $(install) -m 755 -s pppoe-relay $(RPM_INSTALL_ROOT)$(sbindir); fi
-- if test -x pppoe-sniff; then $(install) -m 755 -s pppoe-sniff $(RPM_INSTALL_ROOT)$(sbindir); fi
-- $(install) -m 755 ../scripts/adsl-connect $(RPM_INSTALL_ROOT)$(sbindir)
-- $(install) -m 755 ../scripts/adsl-start $(RPM_INSTALL_ROOT)$(sbindir)
-- $(install) -m 755 ../scripts/adsl-status $(RPM_INSTALL_ROOT)$(sbindir)
-- $(install) -m 755 ../scripts/adsl-stop $(RPM_INSTALL_ROOT)$(sbindir)
-- $(install) -m 755 ../scripts/adsl-setup $(RPM_INSTALL_ROOT)$(sbindir)
-- -mkdir -p $(RPM_INSTALL_ROOT)$(docdir)
-- $(install) -m 644 ../doc/CHANGES $(RPM_INSTALL_ROOT)$(docdir)
-- $(install) -m 644 ../doc/KERNEL-MODE-PPPOE $(RPM_INSTALL_ROOT)$(docdir)
-- $(install) -m 644 ../doc/HOW-TO-CONNECT $(RPM_INSTALL_ROOT)$(docdir)
-- $(install) -m 644 ../doc/LICENSE $(RPM_INSTALL_ROOT)$(docdir)
-- $(install) -m 644 ../README $(RPM_INSTALL_ROOT)$(docdir)
-- $(install) -m 644 ../SERVPOET $(RPM_INSTALL_ROOT)$(docdir)
-- $(install) -m 644 ../configs/pap-secrets $(RPM_INSTALL_ROOT)$(docdir)
-- -mkdir -p $(RPM_INSTALL_ROOT)$(mandir)/man8
-+ -mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
-+ $(install) -m 755 pppoe $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
-+ $(install) -m 755 pppoe-server $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
-+ if test -x licensed-only/pppoe-server-control ; then $(install) -m 755 licensed-only/pppoe-server-control $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir); fi
-+ if test -x pppoe-relay ; then $(install) -m 755 pppoe-relay $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir); fi
-+ if test -x pppoe-sniff; then $(install) -m 755 pppoe-sniff $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir); fi
-+ $(install) -m 755 ../scripts/adsl-connect $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
-+ $(install) -m 755 ../scripts/adsl-start $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
-+ $(install) -m 755 ../scripts/adsl-status $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
-+ $(install) -m 755 ../scripts/adsl-stop $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
-+ $(install) -m 755 ../scripts/adsl-setup $(RPM_INSTALL_ROOT)$(DESTDIR)$(sbindir)
-+ -mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)$(docdir)
-+ $(install) -m 644 ../doc/CHANGES $(RPM_INSTALL_ROOT)$(DESTDIR)$(docdir)
-+ $(install) -m 644 ../doc/KERNEL-MODE-PPPOE $(RPM_INSTALL_ROOT)$(DESTDIR)$(docdir)
-+ $(install) -m 644 ../doc/HOW-TO-CONNECT $(RPM_INSTALL_ROOT)$(DESTDIR)$(docdir)
-+ $(install) -m 644 ../doc/LICENSE $(RPM_INSTALL_ROOT)$(DESTDIR)$(docdir)
-+ $(install) -m 644 ../README $(RPM_INSTALL_ROOT)$(DESTDIR)$(docdir)
-+ $(install) -m 644 ../SERVPOET $(RPM_INSTALL_ROOT)$(DESTDIR)$(docdir)
-+ $(install) -m 644 ../configs/pap-secrets $(RPM_INSTALL_ROOT)$(DESTDIR)$(docdir)
-+ -mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)$(mandir)/man8
- for i in $(TARGETS) ; do \
- if test -f ../man/$$i.8 ; then \
-- $(install) -m 644 ../man/$$i.8 $(RPM_INSTALL_ROOT)$(mandir)/man8 || exit 1; \
-+ $(install) -m 644 ../man/$$i.8 $(RPM_INSTALL_ROOT)$(DESTDIR)$(mandir)/man8 || exit 1; \
- fi; \
- done
-- $(install) -m 644 ../man/adsl-start.8 $(RPM_INSTALL_ROOT)$(mandir)/man8
-- $(install) -m 644 ../man/adsl-stop.8 $(RPM_INSTALL_ROOT)$(mandir)/man8
-- $(install) -m 644 ../man/adsl-status.8 $(RPM_INSTALL_ROOT)$(mandir)/man8
-- $(install) -m 644 ../man/adsl-connect.8 $(RPM_INSTALL_ROOT)$(mandir)/man8
-- $(install) -m 644 ../man/adsl-setup.8 $(RPM_INSTALL_ROOT)$(mandir)/man8
-- -mkdir -p $(RPM_INSTALL_ROOT)$(mandir)/man5
-- $(install) -m 644 ../man/pppoe.conf.5 $(RPM_INSTALL_ROOT)$(mandir)/man5
-- -mkdir -p $(RPM_INSTALL_ROOT)/etc/ppp
-- -mkdir -p $(RPM_INSTALL_ROOT)$(PLUGIN_DIR)
-- -echo "# Directory created by rp-pppoe for kernel-mode plugin" > $(RPM_INSTALL_ROOT)$(PLUGIN_DIR)/README
-- @if test -r rp-pppoe.so; then $(install) -m 755 rp-pppoe.so $(RPM_INSTALL_ROOT)$(PLUGIN_DIR); fi
-- @for i in pppoe.conf firewall-standalone firewall-masq ; do \
-- if [ ! -f $(RPM_INSTALL_ROOT)/etc/ppp/$$i ] ; then \
-- $(install) -m 644 ../configs/$$i $(RPM_INSTALL_ROOT)/etc/ppp ; \
-+ $(install) -m 644 ../man/adsl-start.8 $(RPM_INSTALL_ROOT)$(DESTDIR)$(mandir)/man8
-+ $(install) -m 644 ../man/adsl-stop.8 $(RPM_INSTALL_ROOT)$(DESTDIR)$(mandir)/man8
-+ $(install) -m 644 ../man/adsl-status.8 $(RPM_INSTALL_ROOT)$(DESTDIR)$(mandir)/man8
-+ $(install) -m 644 ../man/adsl-connect.8 $(RPM_INSTALL_ROOT)$(DESTDIR)$(mandir)/man8
-+ $(install) -m 644 ../man/adsl-setup.8 $(RPM_INSTALL_ROOT)$(DESTDIR)$(mandir)/man8
-+ -mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)$(mandir)/man5
-+ $(install) -m 644 ../man/pppoe.conf.5 $(RPM_INSTALL_ROOT)$(DESTDIR)$(mandir)/man5
-+ -mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/ppp
-+ -mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)$(PLUGIN_DIR)
-+ -echo "# Directory created by rp-pppoe for kernel-mode plugin" > $(RPM_INSTALL_ROOT)$(DESTDIR)$(PLUGIN_DIR)/README
-+ @if test -r rp-pppoe.so; then $(install) -m 755 rp-pppoe.so $(RPM_INSTALL_ROOT)$(DESTDIR)$(PLUGIN_DIR); fi
-+ @for i in pppoe.conf; do \
-+ if [ ! -f $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/$$i ] ; then \
-+ $(install) -m 644 ../configs/$$i $(RPM_INSTALL_ROOT)$(DESTDIR)/etc ; \
- else \
-- echo "NOT overwriting existing $(RPM_INSTALL_ROOT)/etc/ppp/$$i" ;\
-- $(install) -m 644 ../configs/$$i $(RPM_INSTALL_ROOT)/etc/ppp/$$i-$(VERSION) ;\
-+ echo "NOT overwriting existing $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/$$i" ;\
-+ $(install) -m 644 ../configs/$$i $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/$$i-$(VERSION) ;\
- fi ;\
- done
-- @if [ ! -f $(RPM_INSTALL_ROOT)$(PPPOESERVER_PPPD_OPTIONS) ] ; then \
-- $(install) -m 644 ../configs/pppoe-server-options $(RPM_INSTALL_ROOT)$(PPPOESERVER_PPPD_OPTIONS) ; \
-+ @if [ ! -f $(RPM_INSTALL_ROOT)$(DESTDIR)$(PPPOESERVER_PPPD_OPTIONS) ] ; then \
-+ $(install) -m 644 ../configs/pppoe-server-options $(RPM_INSTALL_ROOT)$(DESTDIR)$(PPPOESERVER_PPPD_OPTIONS) ; \
- else \
-- echo "NOT overwriting existing $(RPM_INSTALL_ROOT)$(PPPOESERVER_PPPD_OPTIONS)"; \
-- $(install) -m 644 ../configs/pppoe-server-options $(RPM_INSTALL_ROOT)$(PPPOESERVER_PPPD_OPTIONS)-example ; \
-+ echo "NOT overwriting existing $(RPM_INSTALL_ROOT)$(DESTDIR)$(PPPOESERVER_PPPD_OPTIONS)"; \
-+ $(install) -m 644 ../configs/pppoe-server-options $(RPM_INSTALL_ROOT)$(DESTDIR)$(PPPOESERVER_PPPD_OPTIONS)-example ; \
- fi
- @if [ -f /etc/redhat-release ] ; then \
-- echo "Looks like a Red Hat system; installing $(RPM_INSTALL_ROOT)/etc/rc.d/init.d/adsl" ; \
-- mkdir -p $(RPM_INSTALL_ROOT)/etc/rc.d/init.d ;\
-- $(install) -m 755 ../scripts/adsl-init $(RPM_INSTALL_ROOT)/etc/rc.d/init.d/adsl ; \
-+ echo "Looks like a Red Hat system; installing $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/rc.d/init.d/adsl" ; \
-+ mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/rc.d/init.d ;\
-+ $(install) -m 755 ../scripts/adsl-init $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/rc.d/init.d/adsl ; \
- fi
- @if [ -f /etc/turbolinux-release ] ; then \
-- echo "Looks like a TurboLinux system; installing $(RPM_INSTALL_ROOT)/etc/rc.d/init.d/adsl" ; \
-- mkdir -p $(RPM_INSTALL_ROOT)/etc/rc.d/init.d ;\
-- $(install) -m 755 ../scripts/adsl-init-turbolinux $(RPM_INSTALL_ROOT)/etc/rc.d/init.d/adsl ; \
-+ echo "Looks like a TurboLinux system; installing $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/rc.d/init.d/adsl" ; \
-+ mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/rc.d/init.d ;\
-+ $(install) -m 755 ../scripts/adsl-init-turbolinux $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/rc.d/init.d/adsl ; \
- fi
- @if [ -f /etc/SuSE-release ] ; then \
-- echo "Looks like a SuSE Linux system; installing $(RPM_INSTALL_ROOT)/etc/rc.d/init.d/adsl" ; \
-- mkdir -p $(RPM_INSTALL_ROOT)/etc/rc.d/init.d ;\
-- $(install) -m 755 ../scripts/adsl-init-suse $(RPM_INSTALL_ROOT)/etc/rc.d/init.d/adsl ; \
-+ echo "Looks like a SuSE Linux system; installing $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/rc.d/init.d/adsl" ; \
-+ mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/rc.d/init.d ;\
-+ $(install) -m 755 ../scripts/adsl-init-suse $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/rc.d/init.d/adsl ; \
- fi
-
- # L2TP
- @if [ -f l2tp/handlers/sync-pppd.so ] ; then \
-- mkdir -p $(RPM_INSTALL_ROOT)/usr/lib/l2tp/plugins ; \
-- $(install) -m 755 l2tp/handlers/sync-pppd.so $(RPM_INSTALL_ROOT)/usr/lib/l2tp/plugins ; \
-- mkdir -p $(RPM_INSTALL_ROOT)/etc/l2tp ; \
-- $(install) -m 600 l2tp/l2tp.conf $(RPM_INSTALL_ROOT)/etc/l2tp/l2tp.conf.example ; \
-+ mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)/usr/lib/l2tp/plugins ; \
-+ $(install) -m 755 l2tp/handlers/sync-pppd.so $(RPM_INSTALL_ROOT)$(DESTDIR)/usr/lib/l2tp/plugins ; \
-+ mkdir -p $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/l2tp ; \
-+ $(install) -m 600 l2tp/l2tp.conf $(RPM_INSTALL_ROOT)$(DESTDIR)/etc/l2tp/l2tp.conf.example ; \
- fi
- @echo ""
- @echo "Type 'adsl-setup' to configure the software."
-@@ -288,7 +290,7 @@
- cd .. && rpm -ba servpoet.spec
-
- clean:
-- rm -f *.o pppoe pppoe-sniff pppoe-server core rp-pppoe.so plugin/*.o plugin/libplugin.a *~
-+ rm -f *.o pppoe pppoe-relay pppoe-sniff pppoe-server core rp-pppoe.so plugin/*.o plugin/libplugin.a *~
- test -f licensed-only/Makefile && $(MAKE) -C licensed-only clean || true
- test -f libevent/Makefile && $(MAKE) -C libevent clean || true
- test -f l2tp/Makefile && $(MAKE) -C l2tp clean || true
-diff -ruN rp-pppoe-3.5-orig/src/libevent/Makefile.in rp-pppoe-3.5-4/src/libevent/Makefile.in
---- rp-pppoe-3.5-orig/src/libevent/Makefile.in 2002-07-08 16:38:24.000000000 +0200
-+++ rp-pppoe-3.5-4/src/libevent/Makefile.in 2005-03-09 16:37:38.000000000 +0100
-@@ -18,24 +18,24 @@
-
- libevent.a: $(OBJS)
- rm -f libevent.a
-- ar -cq libevent.a $(OBJS)
-+ $(AR) r libevent.a $(OBJS)
- @RANLIB@ libevent.a
-
- event.o: event.c $(HDRS)
-- gcc $(CFLAGS) -c -o event.o event.c
-+ @CC@ $(CFLAGS) -c -o event.o event.c
-
- hash.o: hash.c $(HDRS)
-- gcc $(CFLAGS) -c -o hash.o hash.c
-+ @CC@ $(CFLAGS) -c -o hash.o hash.c
-
- event_sig.o: event_sig.c $(HDRS)
-- gcc $(CFLAGS) -c -o event_sig.o event_sig.c
-+ @CC@ $(CFLAGS) -c -o event_sig.o event_sig.c
-
- event_tcp.o: event_tcp.c $(HDRS)
-- gcc $(CFLAGS) -c -o event_tcp.o event_tcp.c
-+ @CC@ $(CFLAGS) -c -o event_tcp.o event_tcp.c
-
- clean: FORCE
- rm -f *.a *.o *~
-
- FORCE:
-
--.phony: FORCE
-\ No newline at end of file
-+.phony: FORCE
diff --git a/openwrt/package/rp-pppoe/patches/rp-pppoe-3.5-configure.patch b/openwrt/package/rp-pppoe/patches/rp-pppoe-3.5-configure.patch
deleted file mode 100644
index d50e467969..0000000000
--- a/openwrt/package/rp-pppoe/patches/rp-pppoe-3.5-configure.patch
+++ /dev/null
@@ -1,241 +0,0 @@
-diff -ruN rp-pppoe-3.5-orig/src/configure rp-pppoe-3.5-4/src/configure
---- rp-pppoe-3.5-orig/src/configure 2002-07-08 16:38:24.000000000 +0200
-+++ rp-pppoe-3.5-4/src/configure 2005-03-09 16:37:38.000000000 +0100
-@@ -1707,6 +1707,7 @@
- #line 1708 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -1715,7 +1716,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:1719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:1720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_unsigned_short=`cat conftestval`
- else
-@@ -1735,7 +1736,7 @@
-
-
- echo $ac_n "checking size of unsigned int""... $ac_c" 1>&6
--echo "configure:1739: checking size of unsigned int" >&5
-+echo "configure:1740: checking size of unsigned int" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_int'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -1743,9 +1744,10 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 1747 "configure"
-+#line 1748 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -1754,7 +1756,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:1758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:1760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_unsigned_int=`cat conftestval`
- else
-@@ -1774,7 +1776,7 @@
-
-
- echo $ac_n "checking size of unsigned long""... $ac_c" 1>&6
--echo "configure:1778: checking size of unsigned long" >&5
-+echo "configure:1780: checking size of unsigned long" >&5
- if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_long'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -1782,9 +1784,10 @@
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 1786 "configure"
-+#line 1788 "configure"
- #include "confdefs.h"
- #include <stdio.h>
-+#include <sys/types.h>
- main()
- {
- FILE *f=fopen("conftestval", "w");
-@@ -1793,7 +1796,7 @@
- exit(0);
- }
- EOF
--if { (eval echo configure:1797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:1800: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
- ac_cv_sizeof_unsigned_long=`cat conftestval`
- else
-@@ -1816,7 +1819,7 @@
- # Extract the first word of "pppd", so it can be a program name with args.
- set dummy pppd; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:1820: checking for $ac_word" >&5
-+echo "configure:1823: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_PPPD'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -1853,7 +1856,7 @@
- # Extract the first word of "setsid", so it can be a program name with args.
- set dummy setsid; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:1857: checking for $ac_word" >&5
-+echo "configure:1860: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_SETSID'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -1890,7 +1893,7 @@
- # Extract the first word of "id", so it can be a program name with args.
- set dummy id; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:1894: checking for $ac_word" >&5
-+echo "configure:1897: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_path_ID'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -1925,14 +1928,11 @@
-
-
- echo $ac_n "checking for Linux 2.4.X kernel-mode PPPoE support""... $ac_c" 1>&6
--echo "configure:1929: checking for Linux 2.4.X kernel-mode PPPoE support" >&5
--if test "`uname -s`" = "Linux" ; then
--modprobe ppp_generic > /dev/null 2>&1
--modprobe ppp_async > /dev/null 2>&1
--modprobe n_hdlc > /dev/null 2>&1
--modprobe ppp_synctty > /dev/null 2>&1
--modprobe pppoe > /dev/null 2>&1
--if test "$cross_compiling" = yes; then
-+echo "configure:1932: checking for Linux 2.4.X kernel-mode PPPoE support" >&5
-+if eval "test \"`echo '$''{'ac_cv_linux_kernel_pppoe'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
-@@ -1960,10 +1960,10 @@
- rm -fr conftest*
- fi
-
--else
-- ac_cv_linux_kernel_pppoe=no
- fi
-
-+echo "$ac_t""$ac_cv_linux_kernel_pppoe" 1>&6
-+
- $ECHO $ac_cv_linux_kernel_pppoe
- if test "$ac_cv_linux_kernel_pppoe" != yes ; then
- if test "$LINUX_KERNELMODE_PLUGIN" = rp-pppoe.so; then
-@@ -2018,11 +2018,14 @@
-
- echo $ac_n "checking packing order of bit fields""... $ac_c" 1>&6
- echo "configure:2021: checking packing order of bit fields" >&5
--if test "$cross_compiling" = yes; then
-+if eval "test \"`echo '$''{'ac_cv_pack_bitfields_reversed'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
--#line 2026 "configure"
-+#line 2029 "configure"
- #include "confdefs.h"
-
- union foo {
-@@ -2048,20 +2051,23 @@
- }
- }
- EOF
--if { (eval echo configure:2052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-+if { (eval echo configure:2055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
- then
-- PACK=normal
-+ ac_cv_pack_bitfields_reversed=no
- else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
-- PACK=rev
-+ ac_cv_pack_bitfields_reversed=yes
- fi
- rm -fr conftest*
- fi
-
-+fi
-+
-+echo "$ac_t""$ac_cv_pack_bitfields_reversed" 1>&6
-
--if test "$PACK" = "rev" ; then
-+if test "$ac_cv_pack_bitfields_reversed" = "yes" ; then
- $ECHO "reversed"
- cat >> confdefs.h <<\EOF
- #define PACK_BITFIELDS_REVERSED 1
-diff -ruN rp-pppoe-3.5-orig/src/configure.in rp-pppoe-3.5-4/src/configure.in
---- rp-pppoe-3.5-orig/src/configure.in 2002-07-08 16:38:24.000000000 +0200
-+++ rp-pppoe-3.5-4/src/configure.in 2005-03-09 16:37:38.000000000 +0100
-@@ -130,15 +130,8 @@
- AC_PATH_PROG(ID, id, "", /usr/xpg4/bin:$PATH)
-
- dnl Check for Linux-specific kernel support for PPPoE
--AC_MSG_CHECKING(for Linux 2.4.X kernel-mode PPPoE support)
--if test "`uname -s`" = "Linux" ; then
--dnl Do a bunch of modprobes. Can't hurt; might help.
--modprobe ppp_generic > /dev/null 2>&1
--modprobe ppp_async > /dev/null 2>&1
--modprobe n_hdlc > /dev/null 2>&1
--modprobe ppp_synctty > /dev/null 2>&1
--modprobe pppoe > /dev/null 2>&1
--AC_TRY_RUN([#include <sys/socket.h>
-+AC_CACHE_CHECK([for Linux 2.4.X kernel-mode PPPoE support], ac_cv_linux_kernel_pppoe,
-+[AC_TRY_RUN([#include <sys/socket.h>
- #include <net/ethernet.h>
- #include <linux/if.h>
- #include <linux/if_pppox.h>
-@@ -146,10 +139,7 @@
- {
- if (socket(AF_PPPOX, SOCK_DGRAM, PX_PROTO_OE) >= 0) return 0; else return 1;
- }
--], ac_cv_linux_kernel_pppoe=yes, ac_cv_linux_kernel_pppoe=no)
--else
-- ac_cv_linux_kernel_pppoe=no
--fi
-+], ac_cv_linux_kernel_pppoe=yes, ac_cv_linux_kernel_pppoe=no)])
-
- $ECHO $ac_cv_linux_kernel_pppoe
- if test "$ac_cv_linux_kernel_pppoe" != yes ; then
-@@ -208,8 +198,8 @@
- esac
-
- dnl Figure out packing order of structures
--AC_MSG_CHECKING(packing order of bit fields)
--AC_TRY_RUN([
-+AC_CACHE_CHECK([packing order of bit fields], ac_cv_pack_bitfields_reversed,
-+[AC_TRY_RUN([
- union foo {
- struct bar {
- unsigned int ver:4;
-@@ -231,9 +221,9 @@
- } else {
- return 2;
- }
--}], PACK=normal, PACK=rev)
-+}], ac_cv_pack_bitfields_reversed=no, ac_cv_pack_bitfields_reversed=yes)])
-
--if test "$PACK" = "rev" ; then
-+if test "$ac_cv_pack_bitfields_reversed" = "yes" ; then
- $ECHO "reversed"
- AC_DEFINE(PACK_BITFIELDS_REVERSED)
- else
diff --git a/openwrt/package/rp-pppoe/patches/rp-pppoe-3.5-scripts-fixes.patch b/openwrt/package/rp-pppoe/patches/rp-pppoe-3.5-scripts-fixes.patch
deleted file mode 100644
index 7a86abbcb4..0000000000
--- a/openwrt/package/rp-pppoe/patches/rp-pppoe-3.5-scripts-fixes.patch
+++ /dev/null
@@ -1,227 +0,0 @@
-diff -ruN rp-pppoe-3.5-orig/scripts/adsl-connect.in rp-pppoe-3.5-4/scripts/adsl-connect.in
---- rp-pppoe-3.5-orig/scripts/adsl-connect.in 2002-07-08 16:38:24.000000000 +0200
-+++ rp-pppoe-3.5-4/scripts/adsl-connect.in 2005-03-10 01:01:15.000000000 +0100
-@@ -18,7 +18,7 @@
- # Usage: adsl-connect [config_file]
- # adsl-connect interface user [config_file]
- # Second form overrides USER and ETH from config file.
--# If config_file is omitted, defaults to /etc//ppp/pppoe.conf
-+# If config_file is omitted, defaults to /etc/pppoe.conf
- #
- #***********************************************************************
-
-@@ -30,25 +30,22 @@
- # Paths to programs
- IFCONFIG=/sbin/ifconfig
- PPPD=@PPPD@
--SETSID=@SETSID@
-+SETSID=
- PPPOE=@sbindir@/pppoe
- LOGGER="/usr/bin/logger -t `basename $0`"
-
-+#MODPROBE=modprobe
-+MODPROBE=insmod
-+
- # Set to "C" locale so we can parse messages from commands
- LANG=C
- export LANG
-
--# Must be root
--if test "`@ID@ -u`" != 0 ; then
-- echo "$0: You must be root to run this script" >& 2
-- exit 1
--fi
--
- if test "$SETSID" != "" -a ! -x "$SETSID"; then
- SETSID=""
- fi
-
--CONFIG=/etc//ppp/pppoe.conf
-+CONFIG=/etc/pppoe.conf
- USER=""
- ETH=""
-
-@@ -117,12 +114,12 @@
- if test `uname -s` = Linux ; then
- $IFCONFIG $ETH up mtu 1500
- # For 2.4 kernels. Will fail on 2.2.x, but who cares?
-- modprobe ppp_generic > /dev/null 2>&1
-- modprobe ppp_async > /dev/null 2>&1
-- modprobe ppp_synctty > /dev/null 2>&1
-+ $MODPROBE ppp_generic > /dev/null 2>&1
-+ $MODPROBE ppp_async > /dev/null 2>&1
-+ $MODPROBE ppp_synctty > /dev/null 2>&1
- if test -n "$LINUX_PLUGIN" ; then
-- modprobe pppox > /dev/null 2>&1
-- modprobe pppoe > /dev/null 2>&1
-+ $MODPROBE pppox > /dev/null 2>&1
-+ $MODPROBE pppoe > /dev/null 2>&1
- fi
- fi
-
-@@ -131,7 +128,7 @@
- PPPD_SYNC=sync
- # Increase the chances of it working on Linux...
- if test `uname -s` = Linux ; then
-- modprobe n_hdlc > /dev/null 2>&1
-+ $MODPROBE n_hdlc > /dev/null 2>&1
- fi
- else
- PPPOE_SYNC=""
-@@ -204,7 +201,7 @@
-
- # Interface name MUST BE LAST!!
- PLUGIN_OPTS="$PLUGIN_OPTS $ETH"
-- modprobe pppoe > /dev/null 2>&1
-+ $MODPROBE pppoe > /dev/null 2>&1
- fi
-
- if test "$DEFAULTROUTE" != "no" ; then
-diff -ruN rp-pppoe-3.5-orig/scripts/adsl-setup.in rp-pppoe-3.5-4/scripts/adsl-setup.in
---- rp-pppoe-3.5-orig/scripts/adsl-setup.in 2002-07-08 16:38:24.000000000 +0200
-+++ rp-pppoe-3.5-4/scripts/adsl-setup.in 2005-03-09 17:24:02.000000000 +0100
-@@ -27,7 +27,7 @@
- LANG=C
- export LANG
-
--CONFIG=/etc/ppp/pppoe.conf
-+CONFIG=/etc/pppoe.conf
-
- # Protect created files
- umask 077
-@@ -46,12 +46,6 @@
- $ECHO "properly..."
- $ECHO ""
-
--# Must be root
--if [ "`@ID@ -u`" != 0 ] ; then
-- $ECHO "$0: Sorry, you must be root to run this script"
-- exit 1
--fi
--
- # Prototype config file must exist
- if [ ! -r "$CONFIG" ] ; then
- $ECHO "Oh, dear, I don't see the file '$CONFIG' anywhere. Please"
-@@ -280,12 +274,7 @@
- fi
- fi
-
--# Where is pppd likely to put its pid?
--if [ -d /var/run ] ; then
-- VARRUN=/var/run
--else
-- VARRUN=/etc/ppp
--fi
-+VARRUN=/var/run
-
- # Some #$(*& ISP's use a slash in the user name...
- sed -e "s&^USER=.*&USER='$U'&" \
-diff -ruN rp-pppoe-3.5-orig/scripts/adsl-start.in rp-pppoe-3.5-4/scripts/adsl-start.in
---- rp-pppoe-3.5-orig/scripts/adsl-start.in 2002-07-08 16:38:24.000000000 +0200
-+++ rp-pppoe-3.5-4/scripts/adsl-start.in 2005-03-10 00:53:13.000000000 +0100
-@@ -18,7 +18,7 @@
- # Usage: adsl-start [config_file]
- # adsl-start interface user [config_file]
- # Second form overrides USER and ETH from config file.
--# If config_file is omitted, defaults to /etc/ppp/pppoe.conf
-+# If config_file is omitted, defaults to /etc/pppoe.conf
- #
- #***********************************************************************
-
-@@ -36,15 +36,13 @@
- export LANG
-
- # Defaults
--CONFIG=/etc/ppp/pppoe.conf
-+CONFIG=/etc/pppoe.conf
- USER=""
- ETH=""
- ME=`basename $0`
--# Must be root
--if [ "`@ID@ -u`" != 0 ] ; then
-- $ECHO "$ME: You must be root to run this script" >& 2
-- exit 1
--fi
-+
-+#TTY_S="tty -s"
-+TTY_S=/bin/true
-
- # Debugging
- if [ "$DEBUG" = "1" ] ; then
-@@ -139,6 +137,8 @@
- fi
- # Delete bogus PIDFILE
- rm -f "$PIDFILE" "$PIDFILE.pppd" "$PIDFILE.pppoe" "$PIDFILE.start"
-+else
-+ mkdir -p /var/run
- fi
-
- echo $$ > $PIDFILE.start
-@@ -169,14 +169,14 @@
- # Looks like the interface came up
- if [ $? = 0 ] ; then
- # Print newline if standard input is a TTY
-- tty -s && $ECHO " Connected!"
-+ $TTY_S && $ECHO " Connected!"
- exit 0
- fi
-
- if test -n "$FORCEPING" ; then
- $ECHO -n "$FORCEPING"
- else
-- tty -s && $ECHO -n "$PING"
-+ $TTY_S && $ECHO -n "$PING"
- fi
- sleep $CONNECT_POLL
- TIME=`expr $TIME + $CONNECT_POLL`
-diff -ruN rp-pppoe-3.5-orig/scripts/adsl-status rp-pppoe-3.5-4/scripts/adsl-status
---- rp-pppoe-3.5-orig/scripts/adsl-status 2002-07-08 16:38:24.000000000 +0200
-+++ rp-pppoe-3.5-4/scripts/adsl-status 2005-03-10 01:01:17.000000000 +0100
-@@ -15,12 +15,12 @@
- # LIC: GPL
- #
- # Usage: adsl-status [config_file]
--# If config_file is omitted, defaults to /etc/ppp/pppoe.conf
-+# If config_file is omitted, defaults to /etc/pppoe.conf
- #
- #***********************************************************************
-
- # Defaults
--CONFIG=/etc/ppp/pppoe.conf
-+CONFIG=/etc/pppoe.conf
-
- case "$#" in
- 1)
-@@ -58,10 +58,7 @@
-
- PPPD_PID=`cat "$PPPD_PIDFILE"`
-
--# Sigh. Some versions of pppd put PID files in /var/run; others put them
--# in /etc/ppp. Since it's too messy to figure out what pppd does, we
--# try both locations.
--for i in /etc/ppp/ppp*.pid /var/run/ppp*.pid ; do
-+for i in /var/run/ppp*.pid ; do
- if [ -r $i ] ; then
- PID=`cat $i`
- if [ "$PID" = "$PPPD_PID" ] ; then
-diff -ruN rp-pppoe-3.5-orig/scripts/adsl-stop.in rp-pppoe-3.5-4/scripts/adsl-stop.in
---- rp-pppoe-3.5-orig/scripts/adsl-stop.in 2002-07-08 16:38:24.000000000 +0200
-+++ rp-pppoe-3.5-4/scripts/adsl-stop.in 2005-03-09 16:37:38.000000000 +0100
-@@ -16,7 +16,7 @@
- # LIC: GPL
- #
- # Usage: adsl-stop [config_file]
--# If config_file is omitted, defaults to /etc/ppp/pppoe.conf
-+# If config_file is omitted, defaults to /etc/pppoe.conf
- #
- #***********************************************************************
-
-@@ -28,7 +28,7 @@
- LOGGER="/usr/bin/logger -t $ME"
- CONFIG="$1"
- if [ "$CONFIG" = "" ] ; then
-- CONFIG=/etc/ppp/pppoe.conf
-+ CONFIG=/etc/pppoe.conf
- fi
-
- if [ ! -f "$CONFIG" -o ! -r "$CONFIG" ] ; then
diff --git a/openwrt/package/rrdcollect/Config.in b/openwrt/package/rrdcollect/Config.in
deleted file mode 100644
index 62add2e962..0000000000
--- a/openwrt/package/rrdcollect/Config.in
+++ /dev/null
@@ -1,33 +0,0 @@
-config BR2_PACKAGE_RRDCOLLECT
- prompt "rrdcollect........................ Round-Robin Database (RRD) collecting daemon"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBRRD || BR2_PACKAGE_LIBRRD1
- help
- RRDcollect is a daemon which polls ceratin files in /proc/
- directory, gathering data and storing it inside RRDtool's
- database files. Being written in C should be both fast
- and resources-friendly. Supports both scanf(3)-style
- pattern matches and perl compatible regular expressions.
-
- http://rrdcollect.sourceforge.net/
-
- This package contains only the deamon program.
-
-config BR2_PACKAGE_RRDCOLLECT_EXAMPLE
- prompt "rrdcollect-example.............. Example setup for RRD collecting daemon above"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_RRDCOLLECT
- help
- RRDcollect is a daemon which polls ceratin files in /proc/
- directory, gathering data and storing it inside RRDtool's
- database files. Being written in C should be both fast
- and resources-friendly. Supports both scanf(3)-style
- pattern matches and perl compatible regular expressions.
-
- http://rrdcollect.sourceforge.net/
-
- This packages contains programs and configuration files to
- start graphing a basic set of ressources on your router.
-
diff --git a/openwrt/package/rrdcollect/Makefile b/openwrt/package/rrdcollect/Makefile
deleted file mode 100644
index 9f105dbe09..0000000000
--- a/openwrt/package/rrdcollect/Makefile
+++ /dev/null
@@ -1,92 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=rrdcollect
-PKG_VERSION:=0.2.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=5e4305c612bc3cccbaf802c275c81a11
-
-PKG_SOURCE_URL:=@SF/rrdcollect
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-ifneq ($(BR2_PACKAGE_LIBRRD),)
-RRDTOOL_LIBS:=-lart_lgpl_2 -lfreetype -lpng
-endif
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,RRDCOLLECT,rrdcollect,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,RRDCOLLECT_EXAMPLE,rrdcollect-example,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -DSOCKET_COMM" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="$(RRDTOOL_LIBS) -lz" \
- PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \
- ac_cv_func_malloc_0_nonnull=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --disable-static \
- --disable-rpath \
- --with-gnu-ld \
- --enable-exec \
- --without-rrdtool \
- --with-librrd \
- --without-libpcre \
- --without-libpcap \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_RRDCOLLECT):
- install -d -m0755 $(IDIR_RRDCOLLECT)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/rrdcollect $(IDIR_RRDCOLLECT)/usr/sbin/
- $(RSTRIP) $(IDIR_RRDCOLLECT)
- $(IPKG_BUILD) $(IDIR_RRDCOLLECT) $(PACKAGE_DIR)
-
-$(IPKG_RRDCOLLECT_EXAMPLE):
- install -d -m0755 $(IDIR_RRDCOLLECT_EXAMPLE)/etc
- install -m0644 ./files/rrd.conf $(IDIR_RRDCOLLECT_EXAMPLE)/etc/
- install -m0644 ./files/rrdcollect.conf $(IDIR_RRDCOLLECT_EXAMPLE)/etc/
- install -d -m0755 $(IDIR_RRDCOLLECT_EXAMPLE)/etc/init.d
- install -m0755 ./files/rrdcollect.init $(IDIR_RRDCOLLECT_EXAMPLE)/etc/init.d/S98rrdcollect
- install -d -m0755 $(IDIR_RRDCOLLECT_EXAMPLE)/usr/bin
- install -m0755 ./files/rrd.sh $(IDIR_RRDCOLLECT_EXAMPLE)/usr/bin/
- install -d -m0755 $(IDIR_RRDCOLLECT_EXAMPLE)/www/cgi-bin
- ln -sf /var/lib/rrdcollect/rrd.cgi $(IDIR_RRDCOLLECT_EXAMPLE)/www/cgi-bin/rrd.cgi
- ln -sf /var/lib/rrdcollect/img $(IDIR_RRDCOLLECT_EXAMPLE)/www/img
- $(RSTRIP) $(IDIR_RRDCOLLECT_EXAMPLE)
- $(IPKG_BUILD) $(IDIR_RRDCOLLECT_EXAMPLE) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/rrdcollect/files/rrd.conf b/openwrt/package/rrdcollect/files/rrd.conf
deleted file mode 100644
index 4ee13ce94f..0000000000
--- a/openwrt/package/rrdcollect/files/rrd.conf
+++ /dev/null
@@ -1,381 +0,0 @@
-#
-# Author: Christian Rost (chr@baltic-online.de)
-# Purpose: Shell-Interface to rrdtool
-#
-# Configuration-File for rrd.sh
-#
-DATADIR=/var/lib/rrdcollect
-# Location of *.rrd-data-files
-RRDDIR=$DATADIR/rrd
-# Location of *.png-files
-IMGDIR=$DATADIR/img
-# Hostname used in title of png-images
-HOSTNAME="WRT54GS"
-# Location of rrdtool
-RRDTOOL=/usr/bin/rrdtool
-# Location of rrdcgi
-RRDCGI=/usr/bin/rrdcgi
-# Location of generated cgi-script
-RRDCGISCRIPT=$DATADIR/rrd.cgi
-# Image-Path relative to webserver-root
-RRDCGIIMGPATH="/img"
-# Location of netcat (used for fetching data from rrdcollect-daemon)
-NETCAT=/usr/bin/nc
-
-# Alternative settings for use on external machines
-#RRDDIR=/home/webm/htdocs/stats/rrd/rrd
-#IMGDIR=/home/webm/htdocs/stats/rrd/web
-#RRDTOOL=/opt/rrd/bin/rrdtool
-#RRDCGI=/opt/rrd/bin/rrdcgi
-#RRDCGISCRIPT=/home/webm/cgi-bin/rrd.cgi
-#RRDCGIIMGPATH="/stats/rrd/web"
-#NETCAT=/opt/bin/nc
-
-
-####################################################################################
-# Configuration of statistic sources:
-#
-# Column 1: Time-periods
-# I'm interrested in last-24hour-, last-week- and last-month-plots.
-# Column 2: Define precision/resolution of above three intervalls
-# These values have an impact on the size of your rrd-files,
-# and on the sharpness of your plots
-# RES=1 means maximum precision (every pixel in the plot is individual)
-# RES=4 -> 4 pixel represents one interval
-
-# Optimized values for storing rather small rrd-files on the openwrt-box
-HOURS=24;H_RES=2;DAYS=7;D_RES=4;WEEKS=4;W_RES=4;
-# Measure-Step (Same value should be in the rrdcollect.conf) Optimal: STEP=$HOURS / $PIXWIDTH * 3600 * $H_RES
-STEP=360; MAXSTEP=`expr $STEP \* 2`
-
-# Values for storing rrd-files externally outside the router allowing better resolution
-#HOURS=24;H_RES=1;DAYS=32;D_RES=2;WEEKS=50;W_RES=2;
-#STEP=180; MAXSTEP=`expr $STEP \* 2`
-# Even better resolution
-#HOURS=8;H_RES=1;DAYS=32;D_RES=2;WEEKS=50;W_RES=2;
-#STEP=60; MAXSTEP=`expr $STEP \* 2`
-
-# Format and size of the plots PIXWIDTH will be used in
-# calculating rrd-data-file dimensions during init of rrd-files
-# If you change the size you must change NCGIPIXWIDTH too
-PIXWIDTH=480
-PIXHEIGHT=120
-PIXFORMAT=PNG
-
-# Image-Size of the thumbnail for rrdcgi
-SCGIPIXWIDTH=400
-# Normal Image-Size for rrdcgi (480px plotsize in rrd)
-NCGIPIXWIDTH=571
-
-# Predefined colors
-RED0=#ff0000; RED1=#ff5555;
-GRN0=#009828; GRN1=#81ffa2;
-ORG0=#ff9900; ORG1=#ffc571;
-BLU0=#0030ff; BLU1=#8ba1ff;
-CYA0=#ff00FF; CYA1=#ffbcfe;
-YEL0=#ffff00; YEL1=#e0df76;
-BLK0=#000000; BLK1=#7d7d7d;
-WHI0=#FFFFFF; WHI1=#c1c1c1;
-
-# Date-String used when creating images with rrd.sh
-DATE=`/bin/date "+%d.%m.%Y %H:%M:%S"`
-
-# Max-Values bytes/second and packets/second for WAN/Wifi/LAN Interfaces
-MAXWANB=130000
-MAXWANP=500
-MAXWIFB=600000
-MAXWIFP=800
-MAXLANB=1200000
-MAXLANP=1000
-
-# RRD-Types:
-# GAUGE=save the value itself, no calculations at all
-# COUNTER=continuously increasing value. difference between last 2 values must be positive ! (Traffic-Counter)
-# DERIVE=like counter but can store negative values (rate of change in free disk-space)
-#
-# General syntax: PREFIX_POSTFIX=[-]<rrdcollect-variable>|Legend|RRD-Type|Maximum|Color|RRD-Plot-Type|Printf-Precision|Optional rrdgraph def-arguments
-
-################
-# Sys-Statistics
-################
-SYS_L01=" l1|System Load (1 min)|GAUGE|U|$YEL0|AREA|%6.2lf"
-SYS_L05=" l2|System Load (5 min)|GAUGE|U|$ORG0|STACK|%6.2lf"
-SYS_L15=" l3|System Load (15 min)|GAUGE|U|$RED0|STACK|%6.2lf"
-
-SYS_CPN=" cn|CPU nice |COUNTER|U|$YEL0|AREA|%6.2lf%%"
-SYS_CPU=" cu|CPU user |COUNTER|U|$ORG0|STACK|%6.2lf%%"
-SYS_CPS=" cs|CPU system |COUNTER|U|$RED0|STACK|%6.2lf%%"
-SYS_CPI=" ci|CPU idle |COUNTER|U|$GRN0|STACK|%6.2lf%%"
-
-SYS_MEU=" mu|Memory used |GAUGE|U|$BLU0|AREA"
-SYS_MEF=" mf|Memory free |GAUGE|U|$GRN0|STACK"
-#SYS_MES=" ms|Memory shared |GAUGE|U|$BLK0|LINE1"
-SYS_MEB=" mb|Memory buffer |GAUGE|U|$YEL0|LINE1"
-SYS_MEC=" mc|Memory cached |GAUGE|U|$RED0|LINE1"
-
-SYS_FUS=" us|Flash Disk Used |GAUGE|U|$BLU0|AREA|%6.2lf%s|CDEF:usC=us,1024,* CDEF:MAXusC=us,1024,*"
-SYS_FAV=" av|Flash Disk Available|GAUGE|U|$GRN0|STACK|%6.2lf%s|CDEF:avC=av,1024,* CDEF:MAXavC=av,1024,*"
-
-SYS_IRA="ira|Interrupts total |COUNTER|U|$RED0|AREA"
-SYS_IRE="ire|Interrupts eth0 |COUNTER|U|$ORG0|AREA"
-SYS_IRW="irw|Interrupts wifi |COUNTER|U|$YEL0|STACK"
-
-SYS_PRT=" pt|Processes total |GAUGE|U|$BLU0|AREA|%6.0lf"
-SYS_CTX=" ct|Context switches |COUNTER|U|$RED0|LINE2|%6.0lf"
-SYS_PRR=" pr|Processes active |GAUGE|U|$ORG0|AREA|%6.0lf"
-SYS_ARP="arp|Arp Entries |GAUGE|U|$YEL0|LINE2|%6.0lf"
-SYS_PFK=" fk|Forks |COUNTER|U|$GRN0|LINE2|%6.0lf"
-SYS_CON="con|NAT-Connections |GAUGE|U|$CYA0|LINE2|%6.0lf"
-
-# Plot-Titles
-MISC_STATS="Misc ($HOSTNAME)"
-DSK_STATS="Flash Disk Usage ($HOSTNAME)"
-USG_STATS="System Load ($HOSTNAME)"
-MEM_STATS="Memory Usage ($HOSTNAME)"
-CPU_STATS="CPU Usage ($HOSTNAME)"
-IRQ_STATS="Interrupts ($HOSTNAME)"
-
-# Plot-Definitions (sort-order is relevant)
-SYS_CPU_STATS="CPN CPU CPS CPI"
-#SYS_MEM_STATS="MEU MEF MES MEB MEC"
-SYS_MEM_STATS="MEU MEF MEB MEC"
-SYS_USG_STATS="L01 L05 L15"
-SYS_DSK_STATS="FUS FAV"
-SYS_MISC_STATS="PRT PRR ARP PFK CTX CON"
-SYS_IRQ_STATS="IRA IRE IRW"
-
-# Data-Definition needed by init()
-SYS_ALL="$SYS_CPU_STATS $SYS_MEM_STATS $SYS_USG_STATS $SYS_DSK_STATS $SYS_MISC_STATS $SYS_IRQ_STATS"
-
-#################################################################################################
-# Wifi Traffic & Wan Traffic & Tunnel Traffic Statistics ; # LAN: vlan0 , WAN: vlan1 , eth1: WIFI
-#################################################################################################
-IF_WLOBY="Wibo |Outgoing Traffic Wifi |COUNTER|$MAXWIFB|$GRN1|AREA"
-IF_WLIBY="-Wibi|Incoming Traffic Wifi |COUNTER|$MAXWIFB|$RED0|AREA"
-IF_WLOPK="Wipo |Outgoing Packets Wifi |COUNTER|$MAXWIFP|$GRN1|AREA|%6.0lf"
-IF_WLIPK="-Wipi|Incoming Packets Wifi |COUNTER|$MAXWIFP|$RED0|AREA|%6.0lf"
-
-IF_WAIBY="-Wabi|Incoming Traffic Wan |COUNTER|$MAXWANB|$BLU0|AREA"
-IF_WAOBY="Wabo |Outgoing Traffic Wan |COUNTER|$MAXWANB|$ORG1|AREA"
-IF_WAIPK="-Wapi|Incoming Packets Wan |COUNTER|$MAXWANP|$BLU0|AREA|%6.0lf"
-IF_WAOPK="Wapo |Outgoing Packets Wan |COUNTER|$MAXWANP|$ORG1|AREA|%6.0lf"
-
-IF_LAIBY="-Labi|Incoming Traffic Lan |COUNTER|$MAXLANB|$BLU0|AREA"
-IF_LAOBY="Labo |Outgoing Traffic Lan |COUNTER|$MAXLANB|$ORG1|AREA"
-IF_LAIPK="-Lapi|Incoming Packets Lan |COUNTER|$MAXLANP|$BLU0|AREA|%6.0lf"
-IF_LAOPK="Lapo |Outgoing Packets Lan |COUNTER|$MAXLANP|$ORG1|AREA|%6.0lf"
-
-#IF_TUIBY="-tbi|Incoming Traffic VPN-Tunnel|COUNTER|$MAXWANB|$CYA0|AREA"
-#IF_TUOBY="tbo |Outgoing Traffic VPN-Tunnel|COUNTER|$MAXWANB|$YEL1|AREA"
-#IF_TUIPK="-tpi|Incoming Packets VPN-Tunnel|COUNTER|$MAXWANP|$CYA0|AREA|%6.0lf"
-#IF_TUOPK="tpo |Outgoing Packets VPN-Tunnel|COUNTER|$MAXWANP|$YEL1|AREA|%6.0lf"
-
-# Plot-Titles
-WIFI_TRAFFIC="Wifi Interface Traffic Statistics ($HOSTNAME)"
-WIFI_PACKETS="Wifi Interface Packets Statistics ($HOSTNAME)"
-WAN_TRAFFIC="Wan Interface Traffic Statistics ($HOSTNAME)"
-WAN_PACKETS="Wan Interface Packets Statistics ($HOSTNAME)"
-LAN_TRAFFIC="Lan Interface Traffic Statistics ($HOSTNAME)"
-LAN_PACKETS="Lan Interface Packets Statistics ($HOSTNAME)"
-
-#TUN_TRAFFIC="VPN-Tunnel Interface Traffic Statistics ($HOSTNAME)"
-#TUN_PACKETS="VPN-Tunnel Interface Packets Statistics ($HOSTNAME)"
-
-# Plot-Definitions (sort-order is relevant)
-IF_WIFI_TRAFFIC="WLOBY WLIBY"
-IF_WIFI_PACKETS="WLOPK WLIPK"
-IF_WAN_TRAFFIC="WAIBY WAOBY"
-IF_WAN_PACKETS="WAIPK WAOPK"
-IF_LAN_TRAFFIC="LAIBY LAOBY"
-IF_LAN_PACKETS="LAIPK LAOPK"
-#IF_TUN_TRAFFIC="TUIBY TUOBY"
-#IF_TUN_PACKETS="TUIPK TUOPK"
-
-# Data-Definition needed by init()
-#IF_ALL="$IF_WIFI_TRAFFIC $IF_WIFI_PACKETS $IF_WAN_TRAFFIC $IF_WAN_PACKETS $IF_TUN_TRAFFIC $IF_TUN_PACKETS"
-IF_ALL="$IF_LAN_TRAFFIC $IF_LAN_PACKETS $IF_WAN_TRAFFIC $IF_WAN_PACKETS $IF_WIFI_TRAFFIC $IF_WIFI_PACKETS"
-
-##############################################
-# Port Traffic Statistics for Port 1 - Port 4
-##############################################
-#PT_OPK1="po1 |Port 1 Outgoing Packets |COUNTER|U|$ORG1|AREA|%6.0lf"
-#PT_IPK1="-pi1|Port 1 Incoming Packets |COUNTER|U|$GRN0|AREA|%6.0lf"
-#PT_COL1="cl1 |Port 1 Collisions |COUNTER|U|$BLU0|AREA|%6.0lf"
-#PT_ERR1="er1 |Port 1 Errors |COUNTER|U|$CYA0|AREA|%6.0lf"
-#PT_OBY1="bo1 |Port 1 Outgoing Traffic |COUNTER|U|$ORG1|AREA"
-#PT_IBY1="-bi1|Port 1 Incoming Traffic |COUNTER|U|$GRN0|AREA"
-#PT_OPK2="po2 |Port 2 Outgoing Packets |COUNTER|U|$RED1|AREA|%6.0lf"
-#PT_IPK2="-pi2|Port 2 Incoming Packets |COUNTER|U|$BLK0|AREA|%6.0lf"
-#PT_COL2="cl2 |Port 2 Collisions |COUNTER|U|$GRN0|AREA|%6.0lf"
-#PT_ERR2="er2 |Port 2 Errors |COUNTER|U|$ORG0|AREA|%6.0lf"
-#PT_OBY2="bo2 |Port 2 Outgoing Traffic |COUNTER|U|$RED1|AREA"
-#PT_IBY2="-bi2|Port 2 Incoming Traffic |COUNTER|U|$BLK0|AREA"
-#PT_OPK3="po3 |Port 3 Outgoing Packets |COUNTER|U|$BLU1|AREA|%6.0lf"
-#PT_IPK3="-pi3|Port 3 Incoming Packets |COUNTER|U|$CYA0|AREA|%6.0lf"
-#PT_COL3="cl3 |Port 3 Collisions |COUNTER|U|$GRN0|AREA|%6.0lf"
-#PT_ERR3="er3 |Port 3 Errors |COUNTER|U|$ORG0|AREA|%6.0lf"
-#PT_OBY3="bo3 |Port 3 Outgoing Traffic |COUNTER|U|$BLU1|AREA"
-#PT_IBY3="-bi3|Port 3 Incoming Traffic |COUNTER|U|$CYA0|AREA"
-#PT_OPK4="po4 |Port 4 Outgoing Packets |COUNTER|U|$YEL1|AREA|%6.0lf"
-#PT_IPK4="-pi4|Port 4 Incoming Packets |COUNTER|U|$CYA0|AREA|%6.0lf"
-#PT_COL4="cl4 |Port 4 Collisions |COUNTER|U|$BLK0|AREA|%6.0lf"
-#PT_ERR4="er4 |Port 4 Errors |COUNTER|U|$RED0|AREA|%6.0lf"
-#PT_OBY4="bo4 |Port 4 Outgoing Traffic |COUNTER|U|$YEL1|AREA"
-#PT_IBY4="-bi4|Port 4 Incoming Traffic |COUNTER|U|$CYA0|AREA"
-
-# Plot-Titles
-#TRAFFIC_1="Traffic Statistics Port 1 ($HOSTNAME)"
-#TRAFFIC_2="Traffic Statistics Port 2 ($HOSTNAME)"
-#TRAFFIC_3="Traffic Statistics Port 3 ($HOSTNAME)"
-#TRAFFIC_4="Traffic Statistics Port 4 ($HOSTNAME)"
-#PACKETS_1="Packet Statistics Port 1 ($HOSTNAME)"
-#PACKETS_2="Packet Statistics Port 2 ($HOSTNAME)"
-#PACKETS_3="Packet Statistics Port 3 ($HOSTNAME)"
-#PACKETS_4="Packet Statistics Port 4 ($HOSTNAME)"
-
-# Plot-Definitions (sort-order is relevant)
-#PT_TRAFFIC_1="OBY1 IBY1"
-#PT_TRAFFIC_2="OBY2 IBY2"
-#PT_TRAFFIC_3="OBY3 IBY3"
-#PT_TRAFFIC_4="OBY4 IBY4"
-#PT_PACKETS_1="OPK1 IPK1 COL1 ERR1"
-#PT_PACKETS_2="OPK2 IPK2 COL2 ERR2"
-#PT_PACKETS_3="OPK3 IPK3 COL3 ERR3"
-#PT_PACKETS_4="OPK4 IPK4 COL4 ERR4"
-#PT_PACKETS_1="OPK1 IPK1"
-#PT_PACKETS_2="OPK2 IPK2"
-#PT_PACKETS_3="OPK3 IPK3"
-#PT_PACKETS_4="OPK4 IPK4"
-
-# Data Definition needed by init()
-#PT_ALL="$PT_TRAFFIC_1 $PT_TRAFFIC_2 $PT_TRAFFIC_3 $PT_TRAFFIC_4 $PT_PACKETS_1 $PT_PACKETS_2 $PT_PACKETS_3 $PT_PACKETS_4"
-
-#################################
-# Traffic Priorisation Statistics
-#################################
-#TC_APRIB="bwa|Ack Priority Queue Bandwidth |COUNTER|$MAXWANB|$YEL0|AREA"
-#TC_DPRIB="bwd|Default Priority Queue Bandwidth |COUNTER|$MAXWANB|$ORG0|STACK"
-#TC_HPRIB="bwh|High Priority Queue Bandwidth |COUNTER|$MAXWANB|$RED0|STACK"
-#TC_LPRIB="bwl|Low Priority Queue Bandwidth |COUNTER|$MAXWANB|$GRN0|STACK"
-#TC_APRID="dra|Ack Priority Queue Packet Dropped |COUNTER|100|$YEL0|AREA"
-#TC_DPRID="drd|Default Priority Queue Packet Dropped|COUNTER|100|$ORG0|STACK"
-#TC_HPRID="drh|High Priority Queue Packet Dropped |COUNTER|100|$RED0|STACK"
-#TC_LPRID="drl|Low Priority Queue Packet Dropped |COUNTER|100|$GRN0|STACK"
-
-# Plot-Titles
-#TRAFFIC="Traffic Priorisation Stats"
-#PACKETS="Packet Priorisation Stats"
-
-# Plot-Definitions (sort-order is relevant)
-#TC_TRAFFIC="APRIB DPRIB HPRIB LPRIB"
-#TC_PACKETS="APRID DPRID HPRID LPRID"
-
-# Data Definition needed by init()
-#TC_ALL="$TC_TRAFFIC $TC_PACKETS"
-
-#################################
-# Firewall Packet Drop Statistics
-#################################
-#PC_WIN="win|Windows Traffic |COUNTER|U|$YEL0|AREA"
-#PC_INV="inv|Invalid State Traffic |COUNTER|U|$ORG0|STACK"
-#PC_TCP="tcp|TCP Packets |COUNTER|U|$RED0|STACK"
-#PC_OTH="oth|Other Packets |COUNTER|U|$BLU0|STACK"
-
-# Plot-Titles
-#DROPPED="Firewall Packet Drop Statistics"
-
-# Plot-Definitions (sort-order is relevant)
-#PC_DROPPED="WIN INV TCP OTH"
-
-# Data Definition needed by init()
-#PC_ALL="$PC_DROPPED"
-
-##########################
-# Traffic Accounting Stats
-##########################
-#ACI="Incoming for "; ACO="Outgoing for "
-#IP14="notebook"; COL14=$ORG0; COL_14=$ORG1
-#IP15="saugi "; COL15=$RED0; COL_15=$RED1
-#IP20="aplink "; COL20=$GRN0; COL_20=$GRN1
-#IP50="sunny "; COL50=$BLU0; COL_50=$BLU1
-
-#TYPE=AREA
-#for i in 15 50 20 14
-#do
-# # Packet-Statistics
-# eval AC_TIP$i='-TIP$i\|$ACI'"\$IP$i\|COUNTER\|$MAXWANP\|\$COL$i\|$TYPE"
-# eval AC_TOP$i='TOP$i\|$ACO'"\$IP$i\|COUNTER\|$MAXWANP\|\$COL_$i\|$TYPE"
-# eval AC_UIP$i='-UIP$i\|$ACI'"\$IP$i\|COUNTER\|$MAXWANP\|\$COL$i\|$TYPE"
-# eval AC_UOP$i='UOP$i\|$ACO'"\$IP$i\|COUNTER\|$MAXWANP\|\$COL_$i\|$TYPE"
-# eval AC_IIP$i='-IIP$i\|$ACI'"\$IP$i\|COUNTER\|$MAXWANP\|\$COL$i\|$TYPE"
-# eval AC_IOP$i='IOP$i\|$ACO'"\$IP$i\|COUNTER\|$MAXWANP\|\$COL_$i\|$TYPE"
-# # Traffic Statistics
-# eval AC_TIB$i='-TIB$i\|$ACI'"\$IP$i\|COUNTER\|$MAXWANB\|\$COL$i\|$TYPE"
-# eval AC_TOB$i='TOB$i\|$ACO'"\$IP$i\|COUNTER\|$MAXWANB\|\$COL_$i\|$TYPE"
-# eval AC_UIB$i='-UIB$i\|$ACI'"\$IP$i\|COUNTER\|$MAXWANB\|\$COL$i\|$TYPE"
-# eval AC_UOB$i='UOB$i\|$ACO'"\$IP$i\|COUNTER\|$MAXWANB\|\$COL_$i\|$TYPE"
-# eval AC_IIB$i='-IIB$i\|$ACI'"\$IP$i\|COUNTER\|$MAXWANB\|\$COL$i\|$TYPE"
-# eval AC_IOB$i='IOB$i\|$ACO'"\$IP$i\|COUNTER\|$MAXWANB\|\$COL_$i\|$TYPE"
-# # Plot-Definitions (sort-order is relevant)
-# AC_TB_O="$AC_TB_O TOB$i"; AC_TB_I="$AC_TB_I TIB$i"
-# AC_TP_O="$AC_TP_O TOP$i"; AC_TP_I="$AC_TP_I TIP$i"
-# AC_UB_O="$AC_UB_O UOB$i"; AC_UB_I="$AC_UB_I UIB$i"
-# AC_UP_O="$AC_UP_O UOP$i"; AC_UP_I="$AC_UP_I UIP$i"
-# AC_IB_O="$AC_IB_O IOB$i"; AC_IB_I="$AC_IB_I IIB$i"
-# AC_IP_O="$AC_IP_O IOP$i"; AC_IP_I="$AC_IP_I IIP$i"
-# TYPE=STACK
-#done
-#AC_TB="$AC_TB_O $AC_TB_I"; AC_TP="$AC_TP_O $AC_TP_I"
-#AC_UB="$AC_UB_O $AC_UB_I"; AC_UP="$AC_UP_O $AC_UP_I"
-#AC_IB="$AC_IB_O $AC_IB_I"; AC_IP="$AC_IP_O $AC_IP_I";
-
-# Plot-Titles
-#TB="TCP Traffic Accounting Stats ($HOSTNAME)"; TP="TCP Packet Accounting Stats ($HOSTNAME)"
-#UB="UDP Traffic Accounting Stats ($HOSTNAME)"; UP="UDP Packet Accounting Stats ($HOSTNAME)"
-#IB="ICMP Traffic Accounting Stats ($HOSTNAME)";IP="ICMP Packet Accounting Stats ($HOSTNAME)"
-
-# Data Definition needed by init()
-#AC_ALL="$AC_TB $AC_TP $AC_UB $AC_UP $AC_IB $AC_IP"
-
-
-# System Statistics
-GRAPH_1="SYS|USG_STATS|$USG_STATS|Load"
-GRAPH_2="SYS|CPU_STATS|$CPU_STATS|CPU-Time_in_%|1000|--upper-limit 100 --rigid --logarithmic --lower-limit 0.1"
-GRAPH_3="SYS|MEM_STATS|$MEM_STATS|Bytes|1024"
-GRAPH_4="SYS|DSK_STATS|$DSK_STATS|Bytes|1024"
-GRAPH_5="SYS|MISC_STATS|$MISC_STATS|_|1000|--logarithmic"
-GRAPH_6="SYS|IRQ_STATS|$IRQ_STATS|IRQ_per_second|1000"
-# Interface Traffic Statistics
-GRAPH_7="IF|LAN_TRAFFIC|$LAN_TRAFFIC|Bytes_per_second"
-GRAPH_8="IF|LAN_PACKETS|$LAN_PACKETS|Packets_per_second"
-GRAPH_9="IF|WAN_TRAFFIC|$WAN_TRAFFIC|Bytes_per_second"
-GRAPH_10="IF|WAN_PACKETS|$WAN_PACKETS|Packets_per_second"
-GRAPH_11="IF|WIFI_TRAFFIC|$WIFI_TRAFFIC|Bytes_per_second"
-GRAPH_12="IF|WIFI_PACKETS|$WIFI_PACKETS|Packets_per_second"
-#GRAPH_11="IF|TUN_TRAFFIC|$TUN_TRAFFIC|Bytes_per_second"
-#GRAPH_12="IF|TUN_PACKETS|$TUN_PACKETS|Packets_per_second"
-# Port Traffic Statistics
-#GRAPH_13="PT|TRAFFIC_1|$TRAFFIC_1|Bytes_per_second"
-#GRAPH_14="PT|PACKETS_1|$PACKETS_1|Packets_per_second"
-#GRAPH_15="PT|TRAFFIC_2|$TRAFFIC_2|Bytes_per_second"
-#GRAPH_16="PT|PACKETS_2|$PACKETS_2|Packets_per_second"
-#GRAPH_17="PT|TRAFFIC_3|$TRAFFIC_3|Bytes_per_second"
-#GRAPH_18="PT|PACKETS_3|$PACKETS_3|Packets_per_second"
-#GRAPH_19="PT|TRAFFIC_4|$TRAFFIC_4|Bytes_per_second"
-#GRAPH_20="PT|PACKETS_4|$PACKETS_4|Packets_per_second"
-# Traffic Priorisation Statistics
-# GRAPH_21="TC|TRAFFIC|$TRAFFIC|Bytes_per_second|1000|--logarithmic"
-# GRAPH_22="TC|PACKETS|$PACKETS|Packets_per_second"
-# Accounting Statistics
-#GRAPH_23="AC|TB|$TB|Bytes_per_second"
-#GRAPH_24="AC|TP|$TP|Packets_per_second"
-#GRAPH_25="AC|UB|$UB|Bytes_per_second"
-#GRAPH_26="AC|UP|$UP|Packets_per_second"
-#GRAPH_27="AC|IB|$IB|Bytes_per_second"
-#GRAPH_28="AC|IP|$IP|Packets_per_second"
-# Firewall Drop Statistics
-#GRAPH_29="PC|DROPPED|$DROPPED|Packets_per_second"
-
-#ALL_PRAEFIXES="SYS IF PT TC AC PC"
-ALL_PRAEFIXES="SYS IF"
-GRAPH_MAX=12
diff --git a/openwrt/package/rrdcollect/files/rrd.sh b/openwrt/package/rrdcollect/files/rrd.sh
deleted file mode 100644
index 3faa4fb8d7..0000000000
--- a/openwrt/package/rrdcollect/files/rrd.sh
+++ /dev/null
@@ -1,288 +0,0 @@
-#!/bin/sh
-#
-# Author: Christian Rost (chr@baltic-online.de)
-# Purpose: Shell-Interface to rrdtool
-#
-RRDCNF=/etc/rrd.conf
-. $RRDCNF
-
-######################################
-# init() function to create .rrd-file
-# $1=VAR-PRAEFIX $2=VAR-POSTFIX
-######################################
-init()
-{
- # Calculate optimal step by assuming highest precision on the last-xhour plot
- OPTSTEP=`expr $HOURS \* 3600 \/ $PIXWIDTH \* $H_RES`
- [ $OPTSTEP != $STEP ] && echo "WARNING: Your optimal step is: $OPTSTEP. But you are using: $STEP"
-
- ARH_AVG=`expr $HOURS \* 3600 \/ $PIXWIDTH \* $H_RES \/ $STEP`; ARH_CNT=`expr $HOURS \* 3600 \/ $ARH_AVG \/ $STEP`
- ARD_AVG=`expr $DAYS \* 86400 \/ $PIXWIDTH \* $D_RES \/ $STEP`; ARD_CNT=`expr $DAYS \* 86400 \/ $ARD_AVG \/ $STEP`
- ARW_AVG=`expr $WEEKS \* 604800 \/ $PIXWIDTH \* $W_RES \/ $STEP`; ARW_CNT=`expr $WEEKS \* 604800 \/ $ARW_AVG \/ $STEP`
-
- PRAEFIX=$1; POSTFIX=$2
- DSOURCE=""
-
- echo "Init storage for $HOURS hours on averages: $ARH_AVG x $STEP seconds ($ARH_CNT total values)"
- echo "Init storage for $DAYS days on averages: $ARD_AVG x $STEP seconds ($ARD_CNT total values)"
- echo "Init storage for $WEEKS weeks on averages: $ARW_AVG x $STEP seconds ($ARW_CNT total values)"
-
- eval SOURCE=\$${PRAEFIX}_${POSTFIX}
- for i in $SOURCE
- do
- eval var=\$${PRAEFIX}_${i}
- ifs="$IFS"; IFS="|"; set -- $var
- if [ "`echo ${1} | cut -b1`" = "-" ]
- then
- VAR="`echo ${1} | cut -b2-`"
- else
- VAR=`echo $1 | sed "s/ //g"`
- fi
- DSOURCE="$DSOURCE DS:${VAR}:${3}:$MAXSTEP:0:${4}"
- IFS="$ifs"
- done
- $DEBUG $RRDTOOL create $RRDDIR/$PRAEFIX.rrd \
- --step ${STEP} \
- $DSOURCE \
- RRA:AVERAGE:0.5:$ARH_AVG:$ARH_CNT \
- RRA:AVERAGE:0.5:$ARD_AVG:$ARD_CNT \
- RRA:AVERAGE:0.5:$ARW_AVG:$ARW_CNT \
- RRA:MAX:0.5:$ARH_AVG:$ARH_CNT \
- RRA:MAX:0.5:$ARD_AVG:$ARD_CNT \
- RRA:MAX:0.5:$ARW_AVG:$ARW_CNT
- return $?
-}
-
-#################################################################################################################
-# graph() function to create png-graphics
-# $1=IMG-DIR $2=VAR-PRAEFIX, $3=VAR-POSTFIX, $4=Headline, $5=end, $6=start, $7=base,
-# $8=DEFS/ENTRIES $9=other rrdgraph options (Vertlabel,...)
-#################################################################################################################
-# COMMENT:"$DATE\c"
-do_rrdgraph()
-{
- $DEBUG $NICE $RRDTOOL graph "$1/$2_$3.png" \
- --title "$4" \
- --imgformat $PIXFORMAT \
- --width $PIXWIDTH \
- --height $PIXHEIGHT \
- --end "$5" \
- --start "$6" \
- --base "$7" \
- $8 $9
-}
-
-#################################################################################################################
-# graph() function to create png-graphics
-# $1=IMG-DIR $2=VAR-PRAEFIX, $3=VAR-POSTFIX, $4=Headline, $5=end, $6=start, $7=base,
-# $8=DEFS/ENTRIES $9=other rrdgraph options (Vertlabel,...)
-#################################################################################################################
-# COMMENT:"<RRD::TIME::NOW %c>\c"
-do_rrdcgi()
-{
- cat << EOF > $1/$2_$3.def
-
-<RRD::GRAPH $1/<RRD::CV START>$2_$3.png \
---title "$4" \
---imgformat $PIXFORMAT \
---width $PIXWIDTH \
---height $PIXHEIGHT \
---end "$5" \
---start <RRD::CV START> \
---base $7 \
---imginfo "<IMG NAME=$2_$3 SRC=$RRDCGIIMGPATH/%s OnClick=zoomToggle('${SCGIPIXWIDTH}px','${NCGIPIXWIDTH}px',this); WIDTH=${SCGIPIXWIDTH}px>" \
---lazy \
-$8 $9 >
-EOF
-
- cat << EOF >> $RRDCGISCRIPT
-$NEWLINE <TD valign=top>$4<br>
- <RRD::INCLUDE $1/$2_$3.def>
-</TD>
-EOF
-}
-
-
-
-gen_cgi_header()
-{
- cat << EOF > $RRDCGISCRIPT
-#!$RRDCGI
-<HEAD><TITLE>RRDCGI Router Statistics</TITLE></HEAD>
-<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-function update_radio_check(robj,value) { for (var i=0; i<robj.length; i++) if (robj[i].value==value) robj[i].checked=1; }
-var nW,oW;
-function zoomToggle(iWideSmall,iWideLarge,whichImage){
-oW=whichImage.style.width;
-if(oW==iWideLarge){
-nW=iWideSmall;}else{
-nW=iWideLarge;}
-whichImage.style.width=nW;
-}
-</SCRIPT>
-<BODY onload="update_radio_check(document.RangeForm.START,'<RRD::CV START>')">
-<H1>RRDCGI Router Statistics <font size-=2><em>(<RRD::TIME::NOW %c>)</em></font></H1>
-<FORM NAME=RangeForm>
- <INPUT NAME=START TYPE=RADIO VALUE=end-${HOURS}h checked>${HOURS} hours ago
- <INPUT NAME=START TYPE=RADIO VALUE=end-${DAYS}d>${DAYS} days ago
- <INPUT NAME=START TYPE=RADIO VALUE=end-${WEEKS}w>${WEEKS} weeks ago
- <INPUT TYPE=SUBMIT>
-</FORM>
-<P>
-<TABLE>
-EOF
-}
-
-gen_cgi_footer()
-{
- cat << EOF >> $RRDCGISCRIPT
-</TABLE>
-</P>
-</BODY>
-</HTML>
-EOF
- chmod +x $RRDCGISCRIPT
-}
-
-#################################################################################################################
-# $1=mode $2=VAR-PRAEFIX, $3=VAR-POSTFIX, $4=Headline, $5=Vertlabel, $6=start, $7=end, $8=base, $9=other rrdgraph options
-#################################################################################################################
-do_graph()
-{
- MODE=$1; PRAEFIX=$2; POSTFIX=$3; HEADLINE=$4; VERTLABEL=$5; START=$6; END=$7; BASE=$8; SRC=${RRDDIR}/${PRAEFIX}.rrd
- if [ ! -r "$SRC" ]
- then
- echo "$SRC not found. Aborting all operations now..."
- exit 1
- fi
-
- # For Graphing Memory BASE should be set to 1024, default is 1000
- [ -n "$8" ] && BASE=$8 || BASE=1000
- [ -n "$9" ] && OPTS=$9 || OPTS="--lower-limit 0"
- DEFS=""; ENTRIES=""
- eval SOURCE=\$${PRAEFIX}_${POSTFIX}
- for i in $SOURCE
- do
- eval var=\$${PRAEFIX}_${i}
- ifs="$IFS"; IFS="|"; set -- $var
- if [ "`echo ${1} | cut -b1`" = "-" ]
- then
- VAR="`echo ${1} | cut -b2-`"
- NEG=1
- else
- VAR=`echo $1 | sed "s/ //g"`
- NEG=0
- fi
-
- if [ "$NEG" = 1 ]
- then
- [ -n "${8}" ] && DEFS="$DEFS DEF:${VAR}=$SRC:${VAR}:AVERAGE DEF:MAX${VAR}=$SRC:${VAR}:MAX ${8} CDEF:N${VAR}C=${VAR}C,-1,* " \
- || DEFS="$DEFS DEF:${VAR}=$SRC:${VAR}:AVERAGE DEF:MAX${VAR}=$SRC:${VAR}:MAX CDEF:N${VAR}=${VAR},-1,*"
- else
- [ -n "${8}" ] && DEFS="$DEFS DEF:${VAR}=$SRC:${VAR}:AVERAGE DEF:MAX${VAR}=$SRC:${VAR}:MAX ${8}" \
- || DEFS="$DEFS DEF:${VAR}=$SRC:${VAR}:AVERAGE DEF:MAX${VAR}=$SRC:${VAR}:MAX"
- fi
- # Now this is a bit ugly, but i don't know how to escape the blanks in a proper way.
- # If you know any better way to keep the blanks in the legend of the graphics please inform me.
- #L=`echo ${2} | tr -s "[= =]" '\014'`
- #L=`echo ${2} | tr -s "[= =]" '_'`
- L=`echo ${2} | sed "s/ /_/g"`
- if [ -n "${7}" ]
- then
- if [ -n "${8}" ]
- then
- [ "$NEG" = 1 ] && ENTRIES="$ENTRIES ${6}:N${VAR}C${5}:${L}: GPRINT:${VAR}C:AVERAGE:Average\:${7} GPRINT:MAX${VAR}C:MAX:Max\:${7} GPRINT:${VAR}C:LAST:Last\:${7}\\j" \
- || ENTRIES="$ENTRIES ${6}:${VAR}C${5}:${L}: GPRINT:${VAR}C:AVERAGE:Average\:${7} GPRINT:MAX${VAR}C:MAX:Max\:${7} GPRINT:${VAR}C:LAST:Last\:${7}\\j"
- else
- [ "$NEG" = 1 ] && ENTRIES="$ENTRIES ${6}:N${VAR}${5}:${L}: GPRINT:${VAR}:AVERAGE:Average\:${7} GPRINT:MAX${VAR}:MAX:Max\:${7} GPRINT:${VAR}:LAST:Last\:${7}\\j" \
- || ENTRIES="$ENTRIES ${6}:${VAR}${5}:${L}: GPRINT:${VAR}:AVERAGE:Average\:${7} GPRINT:MAX${VAR}:MAX:Max\:${7} GPRINT:${VAR}:LAST:Last\:${7}\\j"
- fi
- else
- [ "$NEG" = 1 ] && ENTRIES="$ENTRIES ${6}:N${VAR}${5}:${L}: GPRINT:${VAR}:AVERAGE:Average\:%6.2lf%s GPRINT:MAX${VAR}:MAX:Max\:%6.0lf%s GPRINT:${VAR}:LAST:Last\:%6.2lf%s\\j" \
- || ENTRIES="$ENTRIES ${6}:${VAR}${5}:${L}: GPRINT:${VAR}:AVERAGE:Average\:%6.2lf%s GPRINT:MAX${VAR}:MAX:Max\:%6.0lf%s GPRINT:${VAR}:LAST:Last\:%6.2lf%s\\j"
- fi
- IFS="$ifs"
- done
-
- #[ "$POSTFIX" = "CPU_STATS" ] && (echo $OPTS; echo $DEFS ; echo $ENTRIES; echo $OPTS)
-
- $MODE "$IMGDIR" "$PRAEFIX" "$POSTFIX" "$HEADLINE" "$END" "$START" "$BASE" "$DEFS $ENTRIES" "--vertical-label $VERTLABEL $OPTS"
-}
-
-# Check if all rrd-files are present
-# and create them if not
-init_loop()
-{
- for j in $ALL_PRAEFIXES
- do
- if [ ! -f $RRDDIR/$j.rrd ]
- then
- echo "Creating $RRDDIR/$j.rrd ..."
- init $j ALL
- [ ! -f $RRDDIR/$j.rrd ] && EXIT=1
- fi
- done
- [ "$EXIT" = 1 ] && return 1 || return 0
-}
-
-
-graph_loop()
-{
- mode=$1; start=$2; end=$3; c=1
- while [ $c -le $GRAPH_MAX ]
- do
- eval var=\$GRAPH_${c}
- # $1=VAR-PRAEFIX $2=VAR-POSTFIX $3=Headline $4=Vertlabel $5=base $6=other rrdgraph options
- ifs="$IFS"; IFS="|"; set -- $var
- IFS="$ifs"
- [ "$1" != "$OLD" -o "`expr \( $c - 1 \) % 2`" = 0 ] && NEWLINE="</TR><TR>" || NEWLINE=""
- do_graph $mode $1 $2 "$3" "$4" $start $end $5 "$6"
- c=`expr $c + 1`; OLD=$1
- done
-}
-
-
-case "$1" in
- init)
- if init_loop
- then
- exit 0
- else
- echo "Initialisation of rrd-database-files failed"
- exit 1
- fi
- ;;
- cgi)
- echo "Updating $RRDCGISCRIPT and $IMGDIR/*.def"
- gen_cgi_header
- # The start-time will be not used
- graph_loop do_rrdcgi end now
- gen_cgi_footer
- ;;
- images)
- # Create the graphs
- [ -n "$2" ] && STH=$2 || STH=24h
- echo "Updating Graphs ($STH ago -> now) for $RRDDIR/*.rrd"
- graph_loop do_rrdgraph "end-${STH}" now
- ;;
- fetch)
- # Fetch data from rrdcollect daemon
- if [ ! -n "$3" ]
- then
- echo "Usage: $0 fetch <host> <port>"
- exit 1
- else
- echo "Fetching ascii-logs from rrdcollect daemon"
- (cd $RRDDIR && $NETCAT $2 $3 | sed -n "s:^\(update .*\):$RRDTOOL \1:p" | sh -x ) 2>&1 | wc -l #>/dev/null
- exit 0
- fi
- ;;
- *) echo "Usage: $0 <init|cgi|fetch|images>"
- echo " init: Initialize rrd-datafiles if neeeded"
- echo " cgi: Creates cgi-script for use with rrdcgi"
- echo " fetch: Fetching data from rrdcollect via netcat"
- echo " images: Generates images"
- exit 1
- ;;
-esac
-exit 0
diff --git a/openwrt/package/rrdcollect/files/rrdcollect.conf b/openwrt/package/rrdcollect/files/rrdcollect.conf
deleted file mode 100644
index e34c9bff7b..0000000000
--- a/openwrt/package/rrdcollect/files/rrdcollect.conf
+++ /dev/null
@@ -1,33 +0,0 @@
-step = 360
-directory = /var/lib/rrdcollect/rrd
-
-file:///proc/stat
-"cpu0 %d %d %d %d" SYS.rrd:cu,cn,cs,ci
-"ctxt %u" SYS.rrd:ct
-"processes %u" SYS.rrd:fk
-"intr %u" SYS.rrd:ira
-
-file:///proc/meminfo
-#"Mem: %*d %d %d %d %d %d" SYS.rrd:mu,mf,ms,mb,mc
-"Mem: %*d %d %d %*d %d %d" SYS.rrd:mu,mf,mb,mc
-
-file:///proc/loadavg
-"%f %f %f %d/%d %*d" SYS.rrd:l1,l2,l3,pr,pt
-
-exec:///bin/df
-"/dev/mtdblock/4 %*d %d %d" SYS.rrd:us,av
-
-# LAN: vlan0, WAN: vlan1, WIFI: eth1
-file:///proc/net/dev
-" vlan0:%d %d %*d %*d %*d %*d %*d %*d %d %d" IF.rrd:Labi,Lapi,Labo,Lapo
-" vlan1:%d %d %*d %*d %*d %*d %*d %*d %d %d" IF.rrd:Wabi,Wapi,Wabo,Wapo
-" eth1:%d %d %*d %*d %*d %*d %*d %*d %d %d" IF.rrd:Wibi,Wipi,Wibo,Wipo
-#" tun0:%d %d %*d %*d %*d %*d %*d %*d %d %d" IF.rrd:tbi,tpi,tbo,tpo
-
-file:///proc/slabinfo
-"ip_conntrack %d %*d %*d %*d %*d %*d" SYS.rrd:con
-"arp_cache %d %*d %*d %*d %*d %*d" SYS.rrd:arp
-
-file:///proc/interrupts
-" 4: %d MIPS eth1" SYS.rrd:irw
-" 5: %d MIPS eth0" SYS.rrd:ire
diff --git a/openwrt/package/rrdcollect/files/rrdcollect.init b/openwrt/package/rrdcollect/files/rrdcollect.init
deleted file mode 100644
index f9ee8bcaab..0000000000
--- a/openwrt/package/rrdcollect/files/rrdcollect.init
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-BIN=rrdcollect
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-LIB_D=/var/lib/rrdcollect
-CGI_S=$LIB_D/rrd.cgi
-IMG_D=$LIB_D/img
-RRD_D=$LIB_D/rrd
-RRD_F=$(find $RRD_D -name "*.rrd" 2>/dev/null)
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- mkdir -p $RUN_D
- mkdir -p $IMG_D
- mkdir -p $RRD_D
- [ -n "$RRD_F" ] || /usr/bin/rrd.sh init
- [ -x $CGI_S ] || /usr/bin/rrd.sh cgi
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/rrdcollect/ipkg/rrdcollect-example.conffiles b/openwrt/package/rrdcollect/ipkg/rrdcollect-example.conffiles
deleted file mode 100644
index 9e9a33a22a..0000000000
--- a/openwrt/package/rrdcollect/ipkg/rrdcollect-example.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/rrd.conf
-/etc/rrdcollect.conf
diff --git a/openwrt/package/rrdcollect/ipkg/rrdcollect-example.control b/openwrt/package/rrdcollect/ipkg/rrdcollect-example.control
deleted file mode 100644
index ab4c68e5a2..0000000000
--- a/openwrt/package/rrdcollect/ipkg/rrdcollect-example.control
+++ /dev/null
@@ -1,10 +0,0 @@
-Package: rrdcollect-example
-Priority: optional
-Section: admin
-Depends: rrdcgi, rrdtool, rrdcollect
-Description: Example setup for Round-Robin Database (RRD) collecting daemon
- RRDcollect is a daemon which polls certain files in /proc/
- directory, gathering data and storing it inside RRDtool's
- database files. Being written in C should be both fast
- and resources-friendly. Supports both scanf(3)-style
- pattern matches and perl compatible regular expressions.
diff --git a/openwrt/package/rrdcollect/ipkg/rrdcollect.control b/openwrt/package/rrdcollect/ipkg/rrdcollect.control
deleted file mode 100644
index effe8b13c9..0000000000
--- a/openwrt/package/rrdcollect/ipkg/rrdcollect.control
+++ /dev/null
@@ -1,10 +0,0 @@
-Package: rrdcollect
-Priority: optional
-Section: admin
-Depends: librrd | librrd1
-Description: Round-Robin Database (RRD) collecting daemon
- RRDcollect is a daemon which polls certain files in /proc/
- directory, gathering data and storing it inside RRDtool's
- database files. Being written in C should be both fast
- and resources-friendly. Supports both scanf(3)-style
- pattern matches and perl compatible regular expressions.
diff --git a/openwrt/package/rrdcollect/patches/rrdcollect-scan.patch b/openwrt/package/rrdcollect/patches/rrdcollect-scan.patch
deleted file mode 100644
index f47301ed13..0000000000
--- a/openwrt/package/rrdcollect/patches/rrdcollect-scan.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-diff -ruN rrdcollect-0.2.3.orig/src/scan.c rrdcollect-0.2.3/src/scan.c
---- rrdcollect-0.2.3.orig/src/scan.c 2005-01-20 18:42:17.000000000 +0100
-+++ rrdcollect-0.2.3/src/scan.c 2006-01-22 00:51:52.000000000 +0100
-@@ -74,6 +74,11 @@
- } while (isdigit(*fmt));
- }
-
-+ /* skip white spaces like scanf does */
-+ if (strchr("difuoxX", *fmt))
-+ while (isspace(*buf))
-+ buf++;
-+
- /* FIXME: we should check afterward:
- * if (start == buf || start == '-' && buf-start == 1)
- * die("WTF??? zero-length number???");
-@@ -150,27 +155,22 @@
- buf++, length--;
- }
-
-- /* ignore if value not found */
-- if(value == 0)
-- return 0;
--
- if (!ignore)
-- counter[i++]->value = valuedup(value);
-+ counter[i++]->value = strndup(start, buf - start);
- break;
-
- case 'c':
-+ if (length < 0)
-+ length = 1; // default length is 1
-+
- while (*buf && length > 0) {
- buf++, length--;
- }
- if (length > 0)
- return 2;
-
-- /* ignore if value not found */
-- if(value == 0)
-- return 0;
--
- if (!ignore)
-- counter[i++]->value = valuedup(value);
-+ counter[i++]->value = strndup(start, buf - start);
- break;
-
-
-@@ -192,7 +192,7 @@
- case '\f':
- case '\v':
- /* don't match if not at least one space */
-- if(!isspace(*(buf)))
-+ if(!isspace(*buf))
- return 0;
- else
- buf++;
-@@ -208,7 +208,7 @@
- case '\v':
- break;
- default:
-- while (isspace(*(buf)))
-+ while (isspace(*buf))
- buf++;
- }
- fmt++;
diff --git a/openwrt/package/rrdtool/Config.in b/openwrt/package/rrdtool/Config.in
deleted file mode 100644
index 6993c4e0e3..0000000000
--- a/openwrt/package/rrdtool/Config.in
+++ /dev/null
@@ -1,67 +0,0 @@
-config BR2_COMPILE_RRDTOOL
- prompt "rrdtool........................... Round Robin Database (RRD) tools (v1.2.x)"
- bool
- default n
-
-config BR2_PACKAGE_LIBRRD
- prompt "librrd.......................... Round Robin Database (RRD) management library (v1.2.x)"
- tristate
- default n
- depends BR2_COMPILE_RRDTOOL
- select BR2_PACKAGE_LIBART
- select BR2_PACKAGE_LIBFREETYPE
- select BR2_PACKAGE_LIBPNG
- select BR2_PACKAGE_ZLIB
- help
- RRD is the Acronym for Round Robin Database. RRD is a system to store and
- display time-series data (i.e. network bandwidth, machine-room temperature,
- server load average). It stores the data in a very compact way that will
- not expand over time, and it presents useful graphs by processing the data
- to enforce a certain data density. It can be used either via simple wrapper
- scripts (from shell or Perl) or via frontends that poll network devices and
- put friendly user interface on it.
-
- http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
-
- This package contains command line tools used to manage RRDs.
-
-config BR2_PACKAGE_RRDCGI
- prompt "rrdcgi.......................... Round Robin Database (RRD) CGI graphing tool (v1.2.x)"
- tristate
- default n
- depends BR2_COMPILE_RRDTOOL
- select BR2_PACKAGE_LIBRRD
- select BR2_PACKAGE_CGILIB
- help
- RRD is the Acronym for Round Robin Database. RRD is a system to store and
- display time-series data (i.e. network bandwidth, machine-room temperature,
- server load average). It stores the data in a very compact way that will
- not expand over time, and it presents useful graphs by processing the data
- to enforce a certain data density. It can be used either via simple wrapper
- scripts (from shell or Perl) or via frontends that poll network devices and
- put friendly user interface on it.
-
- http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
-
- This package contains the rrdcgi tool used to create web pages containing
- RRD graphs based on templates.
-
-config BR2_PACKAGE_RRDTOOL
- prompt "rrdtool......................... Round Robin Database (RRD) management tools (v1.2.x)"
- tristate
- default n
- depends BR2_COMPILE_RRDTOOL
- select BR2_PACKAGE_LIBRRD
- help
- RRD is the Acronym for Round Robin Database. RRD is a system to store and
- display time-series data (i.e. network bandwidth, machine-room temperature,
- server load average). It stores the data in a very compact way that will
- not expand over time, and it presents useful graphs by processing the data
- to enforce a certain data density. It can be used either via simple wrapper
- scripts (from shell or Perl) or via frontends that poll network devices and
- put friendly user interface on it.
-
- http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
-
- This package contains command line tools used to manage RRDs.
-
diff --git a/openwrt/package/rrdtool/Makefile b/openwrt/package/rrdtool/Makefile
deleted file mode 100644
index 3bea4aa9a6..0000000000
--- a/openwrt/package/rrdtool/Makefile
+++ /dev/null
@@ -1,111 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=rrdtool
-PKG_VERSION:=1.2.11
-PKG_RELEASE:=1
-PKG_MD5SUM:=d61c5755cb77207f9ad3584b26e8bf08
-
-PKG_SOURCE_URL:=http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBRRD,librrd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,RRDCGI,rrdcgi,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,RRDTOOL,rrdtool,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include/freetype2 -I$(STAGING_DIR)/usr/include/libart-2.0" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib " \
- LIBS="-lnotimpl" \
- PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \
- rd_cv_ieee_works=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared=yes \
- --enable-static=yes \
- --disable-rpath \
- --with-gnu-ld \
- --enable-rrdcgi \
- --disable-mmap \
- --disable-perl \
- --disable-tcl \
- --disable-python \
- --without-x \
- --with-rrd-default-font=/usr/share/rrdtool/fonts/DejaVuSansMono-Roman.ttf \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_RRDTOOL):
- install -d -m0755 $(IDIR_RRDTOOL)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/rrdtool $(IDIR_RRDTOOL)/usr/bin/
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/rrdupdate $(IDIR_RRDTOOL)/usr/bin/
- $(RSTRIP) $(IDIR_RRDTOOL)
- $(IPKG_BUILD) $(IDIR_RRDTOOL) $(PACKAGE_DIR)
-
-$(IPKG_RRDCGI):
- install -d -m0755 $(IDIR_RRDCGI)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/rrdcgi $(IDIR_RRDCGI)/usr/bin/
- $(RSTRIP) $(IDIR_RRDCGI)
- $(IPKG_BUILD) $(IDIR_RRDCGI) $(PACKAGE_DIR)
-
-$(IPKG_LIBRRD):
- install -d -m0755 $(IDIR_LIBRRD)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/librrd.so.* $(IDIR_LIBRRD)/usr/lib/
- install -d -m0755 $(IDIR_LIBRRD)/usr/share/rrdtool/fonts
- $(CP) $(PKG_BUILD_DIR)/src/DejaVuSansMono-Roman.ttf \
- $(IDIR_LIBRRD)/usr/share/rrdtool/fonts/
- $(RSTRIP) $(IDIR_LIBRRD)
- $(IPKG_BUILD) $(IDIR_LIBRRD) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/librrd.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/rrd.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/librrd.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/librrd.so* $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/librrd.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/rrd.h \
- $(STAGING_DIR)/usr/lib/librrd.a \
- $(STAGING_DIR)/usr/lib/librrd.so* \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/rrdtool/ipkg/librrd.control b/openwrt/package/rrdtool/ipkg/librrd.control
deleted file mode 100644
index fe34716ba1..0000000000
--- a/openwrt/package/rrdtool/ipkg/librrd.control
+++ /dev/null
@@ -1,14 +0,0 @@
-Package: librrd
-Priority: optional
-Section: libs
-Depends: libart, libfreetype, libpng, zlib
-Description: Round Robin Database (RRD) management library.
- RRD is the Acronym for Round Robin Database. RRD is a system to store and
- display time-series data (i.e. network bandwidth, machine-room temperature,
- server load average). It stores the data in a very compact way that will
- not expand over time, and it presents useful graphs by processing the data
- to enforce a certain data density. It can be used either via simple wrapper
- scripts (from shell or Perl) or via frontends that poll network devices and
- put friendly user interface on it.
- .
- This package contains the shared library used to manage RRDs.
diff --git a/openwrt/package/rrdtool/ipkg/rrdcgi.control b/openwrt/package/rrdtool/ipkg/rrdcgi.control
deleted file mode 100644
index ca0f7cacd9..0000000000
--- a/openwrt/package/rrdtool/ipkg/rrdcgi.control
+++ /dev/null
@@ -1,15 +0,0 @@
-Package: rrdcgi
-Priority: optional
-Section: web
-Depends: cgilib, librrd
-Description: Round Robin Database (RRD) CGI graphing tool.
- RRD is the Acronym for Round Robin Database. RRD is a system to store and
- display time-series data (i.e. network bandwidth, machine-room temperature,
- server load average). It stores the data in a very compact way that will
- not expand over time, and it presents useful graphs by processing the data
- to enforce a certain data density. It can be used either via simple wrapper
- scripts (from shell or Perl) or via frontends that poll network devices and
- put friendly user interface on it.
- .
- This package contains the rrdcgi tool used to create web pages containing
- RRD graphs based on templates.
diff --git a/openwrt/package/rrdtool/ipkg/rrdtool.control b/openwrt/package/rrdtool/ipkg/rrdtool.control
deleted file mode 100644
index 6e273331b4..0000000000
--- a/openwrt/package/rrdtool/ipkg/rrdtool.control
+++ /dev/null
@@ -1,14 +0,0 @@
-Package: rrdtool
-Priority: optional
-Section: admin
-Depends: librrd
-Description: Round Robin Database (RRD) management tools.
- RRD is the Acronym for Round Robin Database. RRD is a system to store and
- display time-series data (i.e. network bandwidth, machine-room temperature,
- server load average). It stores the data in a very compact way that will
- not expand over time, and it presents useful graphs by processing the data
- to enforce a certain data density. It can be used either via simple wrapper
- scripts (from shell or Perl) or via frontends that poll network devices and
- put friendly user interface on it.
- .
- This package contains command line tools used to manage RRDs.
diff --git a/openwrt/package/rrdtool1/Config.in b/openwrt/package/rrdtool1/Config.in
deleted file mode 100644
index e79df5b4aa..0000000000
--- a/openwrt/package/rrdtool1/Config.in
+++ /dev/null
@@ -1,75 +0,0 @@
-config BR2_COMPILE_RRDTOOL1
- prompt "rrdtool1.......................... Round Robin Database (RRD) tools (v1.0.x)"
- tristate
- default m if CONFIG_DEVEL
-
-config BR2_PACKAGE_LIBRRD1
- prompt "librrd1......................... Round Robin Database (RRD) management library (v1.0.x)"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_RRDTOOL1
- select BR2_PACKAGE_ZLIB
- help
- RRD is the Acronym for Round Robin Database. RRD is a system to store and
- display time-series data (i.e. network bandwidth, machine-room temperature,
- server load average). It stores the data in a very compact way that will
- not expand over time, and it presents useful graphs by processing the data
- to enforce a certain data density. It can be used either via simple wrapper
- scripts (from shell or Perl) or via frontends that poll network devices and
- put friendly user interface on it.
-
- http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
-
- This package contains command line tools used to manage RRDs.
-
- This is version 1.0.x with cgilib-0.4, gd1.3 and libpng-1.0.9 linked into
- librrd.so. The library is much smaller compared to the 1.2.x version with
- separate dynamic linked libraries.
-
-config BR2_PACKAGE_RRDCGI1
- prompt "rrdcgi1......................... Round Robin Database (RRD) CGI graphing tool (v1.0.x)"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_RRDTOOL1
- select BR2_PACKAGE_LIBRRD1
- help
- RRD is the Acronym for Round Robin Database. RRD is a system to store and
- display time-series data (i.e. network bandwidth, machine-room temperature,
- server load average). It stores the data in a very compact way that will
- not expand over time, and it presents useful graphs by processing the data
- to enforce a certain data density. It can be used either via simple wrapper
- scripts (from shell or Perl) or via frontends that poll network devices and
- put friendly user interface on it.
-
- http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
-
- This package contains the rrdcgi tool used to create web pages containing
- RRD graphs based on templates.
-
- This is version 1.0.x with cgilib-0.4, gd1.3 and libpng-1.0.9 linked into
- librrd.so. The library is much smaller compared to the 1.2.x version with
- separate dynamic linked libraries.
-
-config BR2_PACKAGE_RRDTOOL1
- prompt "rrdtool1........................ Round Robin Database (RRD) management tools (v1.0.x)"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_COMPILE_RRDTOOL1
- select BR2_PACKAGE_LIBRRD1
- help
- RRD is the Acronym for Round Robin Database. RRD is a system to store and
- display time-series data (i.e. network bandwidth, machine-room temperature,
- server load average). It stores the data in a very compact way that will
- not expand over time, and it presents useful graphs by processing the data
- to enforce a certain data density. It can be used either via simple wrapper
- scripts (from shell or Perl) or via frontends that poll network devices and
- put friendly user interface on it.
-
- http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
-
- This package contains command line tools used to manage RRDs.
-
- This is version 1.0.x with cgilib-0.4, gd1.3 and libpng-1.0.9 linked into
- librrd.so. The library is much smaller compared to the 1.2.x version with
- separate dynamic linked libraries.
-
diff --git a/openwrt/package/rrdtool1/Makefile b/openwrt/package/rrdtool1/Makefile
deleted file mode 100644
index b0eb9fcc71..0000000000
--- a/openwrt/package/rrdtool1/Makefile
+++ /dev/null
@@ -1,105 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=rrdtool1
-PKG_VERSION:=1.0.50
-PKG_RELEASE:=1
-PKG_MD5SUM:=c466e2e7df95fa8e318e46437da87686
-
-PKG_SOURCE_URL:=http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.0.x
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/rrdtool-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBRRD1,librrd1,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,RRDCGI1,rrdcgi1,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,RRDTOOL1,rrdtool1,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{status,cache} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_path_PERL=no \
- rd_cv_ieee_works=yes \
- shrext_cmds=".so" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared=yes \
- --enable-static=yes \
- --disable-rpath \
- --with-gnu-ld \
- --enable-local-zlib \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- shrext_cmds=".so" \
- all install
- touch $@
-
-$(IPKG_RRDTOOL1):
- install -d -m0755 $(IDIR_RRDTOOL1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/rrdtool $(IDIR_RRDTOOL1)/usr/bin/
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/rrdupdate $(IDIR_RRDTOOL1)/usr/bin/
- $(RSTRIP) $(IDIR_RRDTOOL1)
- $(IPKG_BUILD) $(IDIR_RRDTOOL1) $(PACKAGE_DIR)
-
-$(IPKG_RRDCGI1):
- install -d -m0755 $(IDIR_RRDCGI1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/rrdcgi $(IDIR_RRDCGI1)/usr/bin/
- $(RSTRIP) $(IDIR_RRDCGI1)
- $(IPKG_BUILD) $(IDIR_RRDCGI1) $(PACKAGE_DIR)
-
-$(IPKG_LIBRRD1):
- install -d -m0755 $(IDIR_LIBRRD1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/librrd.so.* $(IDIR_LIBRRD1)/usr/lib/
- $(RSTRIP) $(IDIR_LIBRRD1)
- $(IPKG_BUILD) $(IDIR_LIBRRD1) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/librrd.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/rrd.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/librrd.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/librrd.so* $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/librrd.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/rrd.h \
- $(STAGING_DIR)/usr/lib/librrd.a \
- $(STAGING_DIR)/usr/lib/librrd.so* \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/rrdtool1/ipkg/librrd1.control b/openwrt/package/rrdtool1/ipkg/librrd1.control
deleted file mode 100644
index 1c0494c90a..0000000000
--- a/openwrt/package/rrdtool1/ipkg/librrd1.control
+++ /dev/null
@@ -1,18 +0,0 @@
-Package: librrd1
-Priority: optional
-Section: libs
-Depends: zlib
-Description: Round Robin Database (RRD) management library.
- RRD is the Acronym for Round Robin Database. RRD is a system to store and
- display time-series data (i.e. network bandwidth, machine-room temperature,
- server load average). It stores the data in a very compact way that will
- not expand over time, and it presents useful graphs by processing the data
- to enforce a certain data density. It can be used either via simple wrapper
- scripts (from shell or Perl) or via frontends that poll network devices and
- put friendly user interface on it.
- .
- This package contains the shared library used to manage RRDs.
- .
- This is version 1.0.x with cgilib-0.4, gd1.3 and libpng-1.0.9 linked into
- librrd.so. The library is much smaller compared to the 1.2.x version with
- separate dynamic linked libraries.
diff --git a/openwrt/package/rrdtool1/ipkg/rrdcgi1.control b/openwrt/package/rrdtool1/ipkg/rrdcgi1.control
deleted file mode 100644
index 330f77a3ad..0000000000
--- a/openwrt/package/rrdtool1/ipkg/rrdcgi1.control
+++ /dev/null
@@ -1,19 +0,0 @@
-Package: rrdcgi1
-Priority: optional
-Section: web
-Depends: librrd1
-Description: Round Robin Database (RRD) CGI graphing tool.
- RRD is the Acronym for Round Robin Database. RRD is a system to store and
- display time-series data (i.e. network bandwidth, machine-room temperature,
- server load average). It stores the data in a very compact way that will
- not expand over time, and it presents useful graphs by processing the data
- to enforce a certain data density. It can be used either via simple wrapper
- scripts (from shell or Perl) or via frontends that poll network devices and
- put friendly user interface on it.
- .
- This package contains the rrdcgi tool used to create web pages containing
- RRD graphs based on templates.
- .
- This is version 1.0.x with cgilib-0.4, gd1.3 and libpng-1.0.9 linked into
- librrd.so. The library is much smaller compared to the 1.2.x version with
- separate dynamic linked libraries.
diff --git a/openwrt/package/rrdtool1/ipkg/rrdtool1.control b/openwrt/package/rrdtool1/ipkg/rrdtool1.control
deleted file mode 100644
index 1bf7eaec3f..0000000000
--- a/openwrt/package/rrdtool1/ipkg/rrdtool1.control
+++ /dev/null
@@ -1,18 +0,0 @@
-Package: rrdtool1
-Priority: optional
-Section: admin
-Depends: librrd1
-Description: Round Robin Database (RRD) management tools.
- RRD is the Acronym for Round Robin Database. RRD is a system to store and
- display time-series data (i.e. network bandwidth, machine-room temperature,
- server load average). It stores the data in a very compact way that will
- not expand over time, and it presents useful graphs by processing the data
- to enforce a certain data density. It can be used either via simple wrapper
- scripts (from shell or Perl) or via frontends that poll network devices and
- put friendly user interface on it.
- .
- This package contains command line tools used to manage RRDs.
- .
- This is version 1.0.x with cgilib-0.4, gd1.3 and libpng-1.0.9 linked into
- librrd.so. The library is much smaller compared to the 1.2.x version with
- separate dynamic linked libraries.
diff --git a/openwrt/package/rrs/Config.in b/openwrt/package/rrs/Config.in
deleted file mode 100644
index 28a3f0bde2..0000000000
--- a/openwrt/package/rrs/Config.in
+++ /dev/null
@@ -1,31 +0,0 @@
-#menu "rrs............................... A reverse (connecting) remote shell"
-
-config BR2_COMPILE_RRS
- tristate
- default n
- depends BR2_PACKAGE_RRS || BR2_PACKAGE_RRS_NOSSL
-
-config BR2_PACKAGE_RRS
- prompt "rrs............................... A reverse (connecting) remote shell, with SSL support"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_RRS
- select BR2_PACKAGE_UCLIBCXX
- select BR2_PACKAGE_LIBOPENSSL
- help
- A reverse (connecting) remote shell, built with SSL support.
-
- http://www.cycom.se/dl/rrs/
-
-config BR2_PACKAGE_RRS_NOSSL
- prompt "rrs-nossl......................... A reverse (connecting) remote shell, without SSL support"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_RRS
- select BR2_PACKAGE_UCLIBCXX
- help
- A reverse (connecting) remote shell, built without SSL support.
-
- http://www.cycom.se/dl/rrs/
-
-#endmenu
diff --git a/openwrt/package/rrs/Makefile b/openwrt/package/rrs/Makefile
deleted file mode 100644
index 0024f513fc..0000000000
--- a/openwrt/package/rrs/Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=rrs
-PKG_VERSION:=1.70
-PKG_RELEASE:=1
-PKG_MD5SUM:=b400d03c0e39e3e78a7327ba78f789f0
-
-PKG_SOURCE_URL:=http://www.cycom.se/uploads/36/19
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,RRS,rrs,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,RRS_NOSSL,rrs-nossl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
-ifneq ($(BR2_PACKAGE_RRS),)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC="$(TARGET_CC)" \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -fno-builtin -fno-rtti -nostdinc++" \
- LDFLAGS="-nodefaultlibs -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib -luClibc++ -lc -lm -lutil -lssl -lcrypto" \
- generic
- ( cd $(PKG_BUILD_DIR); mv rrs rrs-ssl; )
- -$(MAKE) -C $(PKG_BUILD_DIR) \
- clean
-endif
-ifneq ($(BR2_PACKAGE_RRS_NOSSL),)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC="$(TARGET_CC)" \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -fno-builtin -fno-rtti -nostdinc++" \
- LDFLAGSNOSSL="-nodefaultlibs -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib -luClibc++ -lc -lm -lutil" \
- generic-nossl
- ( cd $(PKG_BUILD_DIR); mv rrs rrs-nossl; )
-endif
- touch $@
-
-$(IPKG_RRS):
- install -d -m0755 $(IDIR_RRS)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/rrs-ssl $(IDIR_RRS)/usr/bin/rrs
- $(RSTRIP) $(IDIR_RRS)
- $(IPKG_BUILD) $(IDIR_RRS) $(PACKAGE_DIR)
-
-$(IPKG_RRS_NOSSL):
- install -d -m0755 $(IDIR_RRS_NOSSL)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/rrs-nossl $(IDIR_RRS_NOSSL)/usr/bin/rrs
- $(RSTRIP) $(IDIR_RRS_NOSSL)
- $(IPKG_BUILD) $(IDIR_RRS_NOSSL) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/rrs/ipkg/rrs-nossl.control b/openwrt/package/rrs/ipkg/rrs-nossl.control
deleted file mode 100644
index f69f0832f4..0000000000
--- a/openwrt/package/rrs/ipkg/rrs-nossl.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: rrs-nossl
-Priority: optional
-Section: net
-Depends: uclibc++
-Description: A reverse (connecting) remote shell, without SSL support.
-
diff --git a/openwrt/package/rrs/ipkg/rrs.control b/openwrt/package/rrs/ipkg/rrs.control
deleted file mode 100644
index adddb163f4..0000000000
--- a/openwrt/package/rrs/ipkg/rrs.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: rrs
-Priority: optional
-Section: net
-Depends: uclibc++, libopenssl
-Description: A reverse (connecting) remote shell, with SSL support.
-
diff --git a/openwrt/package/rrs/patches/rrs-1.70-shell.patch b/openwrt/package/rrs/patches/rrs-1.70-shell.patch
deleted file mode 100644
index 822ce7c18e..0000000000
--- a/openwrt/package/rrs/patches/rrs-1.70-shell.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN rrs-1.70-old/rrs.c rrs-1.70-new/rrs.c
---- rrs-1.70-old/rrs.c 2004-05-30 02:32:03.000000000 +0200
-+++ rrs-1.70-new/rrs.c 2005-10-12 12:41:24.000000000 +0200
-@@ -920,7 +920,7 @@
- close(slave_fd);
- signal(SIGHUP, SIG_DFL);
- signal(SIGCHLD, SIG_DFL);
-- execl("/bin/sh", "", NULL);
-+ execl("/bin/sh", "/bin/sh", NULL);
- /* should not return */
- exit(1);
- } else if (pid > 0) {
diff --git a/openwrt/package/rsync/Config.in b/openwrt/package/rsync/Config.in
deleted file mode 100644
index f9f02bfdb6..0000000000
--- a/openwrt/package/rsync/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_RSYNC
- prompt "rsync............................. file transfer utility"
- tristate
- select BR2_PACKAGE_LIBPOPT
- default m if CONFIG_DEVEL
- help
- An utility that provides fast incremental file transfer
-
- http://rsync.samba.org
-
diff --git a/openwrt/package/rsync/Makefile b/openwrt/package/rsync/Makefile
deleted file mode 100644
index 0089326e31..0000000000
--- a/openwrt/package/rsync/Makefile
+++ /dev/null
@@ -1,63 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=rsync
-PKG_VERSION:=2.6.5
-PKG_RELEASE:=0
-PKG_MD5SUM:=3691cdf1540d0649ba679edce6bae8fc
-
-PKG_SOURCE_URL:=http://rsync.samba.org/ftp/rsync/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,RSYNC,rsync,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_RSYNC):
- install -d -m0755 $(IDIR_RSYNC)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(IDIR_RSYNC)/usr/bin
- $(RSTRIP) $(IDIR_RSYNC)
- $(IPKG_BUILD) $(IDIR_RSYNC) $(PACKAGE_DIR)
diff --git a/openwrt/package/rsync/ipkg/rsync.control b/openwrt/package/rsync/ipkg/rsync.control
deleted file mode 100644
index 5cfa16dc8e..0000000000
--- a/openwrt/package/rsync/ipkg/rsync.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: rsync
-Priority: optional
-Section: net
-Depends: libpopt
-Description: utility that provides fast incremental file transfer
diff --git a/openwrt/package/rules.mk b/openwrt/package/rules.mk
deleted file mode 100644
index 9bbf4fa48f..0000000000
--- a/openwrt/package/rules.mk
+++ /dev/null
@@ -1,105 +0,0 @@
-# invoke ipkg with configuration in $(STAGING_DIR)/etc/ipkg.conf
-
-define PKG_template
-IPKG_$(1):=$(PACKAGE_DIR)/$(2)_$(3)_$(4).ipk
-IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg/$(2)
-INFO_$(1):=$(IPKG_STATE_DIR)/info/$(2).list
-
-ifneq ($(BR2_PACKAGE_$(1)),)
-compile-targets: $$(IPKG_$(1))
-endif
-ifneq ($(DEVELOPER),)
-compile-targets: $$(IPKG_$(1))
-endif
-ifeq ($(BR2_PACKAGE_$(1)),y)
-install-targets: $$(INFO_$(1))
-endif
-
-IDEPEND_$(1):=$$(strip $(5))
-
-$$(IDIR_$(1))/CONTROL/control: $(PKG_BUILD_DIR)/.prepared
- $(SCRIPT_DIR)/make-ipkg-dir.sh $$(IDIR_$(1)) ./ipkg/$(2).control $(3) $(4)
- if [ "$$(IDEPEND_$(1))" != "" ]; then echo "Depends: $$(IDEPEND_$(1))" >> $$(IDIR_$(1))/CONTROL/control; fi
- for file in conffiles preinst postinst prerm postrm; do \
- [ -f ./ipkg/$(2).$$$$file ] && cp ./ipkg/$(2).$$$$file $$(IDIR_$(1))/CONTROL/$$$$file || true; \
- done
-
-$$(IPKG_$(1)): $$(IDIR_$(1))/CONTROL/control $(PKG_BUILD_DIR)/.built $(PACKAGE_DIR)
-
-$$(INFO_$(1)): $$(IPKG_$(1))
- $(IPKG) install $$(IPKG_$(1))
-
-$(2)-clean:
- rm -f $$(IPKG_$(1))
-clean: $(2)-clean
-endef
-
-
-ifneq ($(strip $(PKG_SOURCE)),)
-$(DL_DIR)/$(PKG_SOURCE):
- @$(CMD_TRACE) "downloading... "
- $(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(PKG_SOURCE)" "$(PKG_MD5SUM)" $(PKG_SOURCE_URL) $(MAKE_TRACE)
-endif
-
-ifneq ($(strip $(PKG_CAT)),)
-$(PKG_BUILD_DIR)/.prepared: $(DL_DIR)/$(PKG_SOURCE)
- rm -rf $(PKG_BUILD_DIR)
- mkdir -p $(PKG_BUILD_DIR)
- if [ "$(PKG_CAT)" = "unzip" ]; then \
- unzip -d $(PKG_BUILD_DIR) $(DL_DIR)/$(PKG_SOURCE) ; \
- else \
- $(PKG_CAT) $(DL_DIR)/$(PKG_SOURCE) | tar -C $(PKG_BUILD_DIR)/.. $(TAR_OPTIONS) - ; \
- fi
- if [ -d ./patches ]; then \
- $(PATCH) $(PKG_BUILD_DIR) ./patches ; \
- fi
- touch $(PKG_BUILD_DIR)/.prepared
-endif
-
-all: compile
-
-source: $(DL_DIR)/$(PKG_SOURCE)
-prepare: source
- @[ -f $(PKG_BUILD_DIR)/.prepared ] || { \
- $(CMD_TRACE) "preparing... "; \
- $(MAKE) $(PKG_BUILD_DIR)/.prepared $(MAKE_TRACE); \
- }
-
-configure: prepare
- @[ -f $(PKG_BUILD_DIR)/.configured ] || { \
- $(CMD_TRACE) "configuring... "; \
- $(MAKE) $(PKG_BUILD_DIR)/.configured $(MAKE_TRACE); \
- }
-
-compile-targets:
-compile: configure
- @$(CMD_TRACE) "compiling... "
- @$(MAKE) compile-targets $(MAKE_TRACE)
-
-install-targets:
-install:
- @$(CMD_TRACE) "installing... "
- @$(MAKE) install-targets $(MAKE_TRACE)
-
-mostlyclean:
-rebuild:
- $(CMD_TRACE) "rebuilding... "
- @-$(MAKE) mostlyclean 2>&1 >/dev/null
- if [ -f $(PKG_BUILD_DIR)/.built ]; then \
- $(MAKE) clean $(MAKE_TRACE); \
- fi
- $(MAKE) compile $(MAKE_TRACE)
-
-$(PKG_BUILD_DIR)/.configured:
-$(PKG_BUILD_DIR)/.built:
-
-$(PACKAGE_DIR):
- mkdir -p $@
-
-clean-targets:
-clean:
- @$(CMD_TRACE) "cleaning... "
- @$(MAKE) clean-targets $(MAKE_TRACE)
- rm -rf $(PKG_BUILD_DIR)
-
-.PHONY: all source prepare compile install clean
diff --git a/openwrt/package/sablevm-classpath/Config.in b/openwrt/package/sablevm-classpath/Config.in
deleted file mode 100644
index 4aef84db33..0000000000
--- a/openwrt/package/sablevm-classpath/Config.in
+++ /dev/null
@@ -1,59 +0,0 @@
-config BR2_COMPILE_SABLEVM_CLASSPATH
- tristate
- default n
- depends BR2_PACKAGE_LIBSABLEVM_CLASSPATH
-
-config BR2_PACKAGE_LIBSABLEVM_CLASSPATH
- prompt "libsablevm-classpath.............. Essential native libraries for Java"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_SABLEVM_CLASSPATH
- help
- GNU Classpath, Essential Libraries for Java, is a GNU project to create
- free core class libraries for use with virtual machines and compilers for
- the java programming language.
-
- This is a modified version for use with SableVM.
-
- http://www.gnu.org/software/classpath/
-
- This package contains the native shared libraries, needed by other packages.
-
-choice
- prompt "sablevm-classpath............... Essential classes for Java"
- tristate
- depends BR2_PACKAGE_LIBSABLEVM_CLASSPATH
- optional
-
-config BR2_PACKAGE_SABLEVM_CLASSPATH_FULL
- prompt "sablevm-classpath-full........ Full set"
- tristate
- help
- GNU Classpath, Essential Libraries for Java, is a GNU project to create
- free core class libraries for use with virtual machines and compilers for
- the java programming language.
-
- This is a modified version for use with SableVM.
-
- http://www.gnu.org/software/classpath/
-
- This package contains the full set of Java compiled classes.
- It will unlikely fit on your router as-is.
-
-config BR2_PACKAGE_SABLEVM_CLASSPATH_MINI
- prompt "sablevm-classpath-mini........ Minimal set"
- tristate
- help
-
- GNU Classpath, Essential Libraries for Java, is a GNU project to create
- free core class libraries for use with virtual machines and compilers for
- the java programming language.
-
- This is a modified version for use with SableVM.
-
- http://www.gnu.org/software/classpath/
-
- This package contains only a minimal set of Java compiled classes, just
- enough to run the famous "Hello World !" test program.
-
-endchoice
diff --git a/openwrt/package/sablevm-classpath/Makefile b/openwrt/package/sablevm-classpath/Makefile
deleted file mode 100644
index a111920e2e..0000000000
--- a/openwrt/package/sablevm-classpath/Makefile
+++ /dev/null
@@ -1,89 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=sablevm-classpath
-PKG_VERSION:=1.13
-PKG_RELEASE:=1
-PKG_MD5SUM:=9476bb7a0ad67c6cfa353d06f094cdce
-
-PKG_SOURCE_URL:=http://sablevm.org/download/release/$(PKG_VERSION)/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-BR2_PACKAGE_LIBSABLEVM_CLASSPATH=m
-BR2_PACKAGE_SABLEVM_CLASSPATH_FULL=m
-BR2_PACKAGE_SABLEVM_CLASSPATH_MINI=m
-
-$(eval $(call PKG_template,LIBSABLEVM_CLASSPATH,libsablevm-classpath,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SABLEVM_CLASSPATH_FULL,sablevm-classpath-full,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SABLEVM_CLASSPATH_MINI,sablevm-classpath-mini,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --disable-gtk-peer \
- --disable-gtk-cairo \
- --without-x \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- $(CP) ./files/mini.classlist $(PKG_BUILD_DIR)/lib/
- cd $(PKG_BUILD_DIR)/lib ; fastjar -Mcf mini.jar -@ < mini.classlist
- touch $@
-
-$(IPKG_LIBSABLEVM_CLASSPATH):
- install -d -m0755 $(IDIR_LIBSABLEVM_CLASSPATH)/usr/lib/sablevm-classpath
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/sablevm-classpath/libjava*.so $(IDIR_LIBSABLEVM_CLASSPATH)/usr/lib/sablevm-classpath/
- install -d -m0755 $(IDIR_LIBSABLEVM_CLASSPATH)/usr/lib/security
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/security/classpath.security $(IDIR_LIBSABLEVM_CLASSPATH)/usr/lib/security/
- $(RSTRIP) $(IDIR_LIBSABLEVM_CLASSPATH)
- $(IPKG_BUILD) $(IDIR_LIBSABLEVM_CLASSPATH) $(PACKAGE_DIR)
-
-$(IPKG_SABLEVM_CLASSPATH_FULL):
- install -d -m0755 $(IDIR_SABLEVM_CLASSPATH_FULL)/usr/share/sablevm-classpath
- $(CP) $(PKG_INSTALL_DIR)/usr/share/sablevm-classpath/{libclasspath,resources}.jar \
- $(IDIR_SABLEVM_CLASSPATH_FULL)/usr/share/sablevm-classpath/
- $(IPKG_BUILD) $(IDIR_SABLEVM_CLASSPATH_FULL) $(PACKAGE_DIR)
-
-$(IPKG_SABLEVM_CLASSPATH_MINI):
- install -d -m0755 $(IDIR_SABLEVM_CLASSPATH_MINI)/usr/share/sablevm-classpath
- install -m0755 $(PKG_BUILD_DIR)/lib/mini.jar \
- $(IDIR_SABLEVM_CLASSPATH_MINI)/usr/share/sablevm-classpath/libclasspath.jar
- $(IPKG_BUILD) $(IDIR_SABLEVM_CLASSPATH_MINI) $(PACKAGE_DIR)
diff --git a/openwrt/package/sablevm-classpath/files/mini.classlist b/openwrt/package/sablevm-classpath/files/mini.classlist
deleted file mode 100644
index 55f19f99a3..0000000000
--- a/openwrt/package/sablevm-classpath/files/mini.classlist
+++ /dev/null
@@ -1,215 +0,0 @@
-./gnu/classpath/SystemProperties.class
-./gnu/classpath/VMStackWalker.class
-./gnu/classpath/VMSystemProperties.class
-./gnu/java/io/PlatformHelper.class
-./gnu/java/net/protocol/file/Handler.class
-./gnu/java/nio/channels/FileChannelImpl.class
-./gnu/java/nio/charset/ByteCharset.class
-./gnu/java/nio/charset/ISO_8859_1$Encoder.class
-./gnu/java/nio/charset/ISO_8859_1.class
-./gnu/java/nio/charset/ISO_8859_13.class
-./gnu/java/nio/charset/ISO_8859_15.class
-./gnu/java/nio/charset/ISO_8859_2.class
-./gnu/java/nio/charset/ISO_8859_4.class
-./gnu/java/nio/charset/ISO_8859_5.class
-./gnu/java/nio/charset/ISO_8859_7.class
-./gnu/java/nio/charset/ISO_8859_9.class
-./gnu/java/nio/charset/KOI_8.class
-./gnu/java/nio/charset/Provider.class
-./gnu/java/nio/charset/US_ASCII.class
-./gnu/java/nio/charset/UTF_16.class
-./gnu/java/nio/charset/UTF_16BE.class
-./gnu/java/nio/charset/UTF_16LE.class
-./gnu/java/nio/charset/UTF_8.class
-./gnu/java/nio/charset/UnicodeLittle.class
-./gnu/java/nio/charset/Windows1250.class
-./gnu/java/nio/charset/Windows1251.class
-./gnu/java/nio/charset/Windows1252.class
-./gnu/java/nio/charset/Windows1253.class
-./gnu/java/nio/charset/Windows1254.class
-./gnu/java/nio/charset/Windows1257.class
-./gnu/java/security/provider/DefaultPolicy.class
-./java/io/BufferedInputStream.class
-./java/io/BufferedOutputStream.class
-./java/io/File.class
-./java/io/FileDescriptor.class
-./java/io/FileInputStream.class
-./java/io/FileOutputStream.class
-./java/io/FilePermission.class
-./java/io/FilterInputStream.class
-./java/io/FilterOutputStream.class
-./java/io/InputStream.class
-./java/io/OutputStream.class
-./java/io/PrintStream.class
-./java/io/Serializable.class
-./java/io/VMFile.class
-./java/lang/AbstractMethodError.class
-./java/lang/ArithmeticException.class
-./java/lang/ArrayIndexOutOfBoundsException.class
-./java/lang/ArrayStoreException.class
-./java/lang/CharSequence.class
-./java/lang/Character.class
-./java/lang/Class.class
-./java/lang/ClassCastException.class
-./java/lang/ClassCircularityError.class
-./java/lang/ClassFormatError.class
-./java/lang/ClassLoader$1.class
-./java/lang/ClassLoader$StaticData.class
-./java/lang/ClassLoader.class
-./java/lang/ClassNotFoundException.class
-./java/lang/Cloneable.class
-./java/lang/Comparable.class
-./java/lang/Error.class
-./java/lang/Exception.class
-./java/lang/ExceptionInInitializerError.class
-./java/lang/IllegalMonitorStateException.class
-./java/lang/IncompatibleClassChangeError.class
-./java/lang/IndexOutOfBoundsException.class
-./java/lang/Integer.class
-./java/lang/InternalError.class
-./java/lang/InterruptedException.class
-./java/lang/LinkageError.class
-./java/lang/Math.class
-./java/lang/NegativeArraySizeException.class
-./java/lang/NoClassDefFoundError.class
-./java/lang/NoSuchFieldError.class
-./java/lang/NoSuchFieldException.class
-./java/lang/NoSuchMethodError.class
-./java/lang/NoSuchMethodException.class
-./java/lang/NullPointerException.class
-./java/lang/Number.class
-./java/lang/Object.class
-./java/lang/OutOfMemoryError.class
-./java/lang/Runnable.class
-./java/lang/Runtime.class
-./java/lang/RuntimeException.class
-./java/lang/SecurityManager.class
-./java/lang/StackTraceElement.class
-./java/lang/String$CaseInsensitiveComparator.class
-./java/lang/String.class
-./java/lang/StringBuffer.class
-./java/lang/StringCreator.class
-./java/lang/System.class
-./java/lang/Thread.class
-./java/lang/ThreadGroup.class
-./java/lang/ThreadLocal$Key.class
-./java/lang/ThreadLocal.class
-./java/lang/Throwable.class
-./java/lang/UnsatisfiedLinkError.class
-./java/lang/UnsupportedClassVersionError.class
-./java/lang/VMClass.class
-./java/lang/VMClassLoader.class
-./java/lang/VMObject.class
-./java/lang/VMRuntime.class
-./java/lang/VMString.class
-./java/lang/VMSystem.class
-./java/lang/VMThread.class
-./java/lang/VerifyError.class
-./java/lang/VirtualMachine.class
-./java/lang/VirtualMachineError.class
-./java/lang/ref/Reference.class
-./java/lang/ref/ReferenceQueue.class
-./java/lang/ref/WeakReference.class
-./java/lang/reflect/AccessibleObject.class
-./java/lang/reflect/Constructor.class
-./java/lang/reflect/Field.class
-./java/lang/reflect/InvocationTargetException.class
-./java/lang/reflect/Member.class
-./java/lang/reflect/Method.class
-./java/lang/reflect/Modifier.class
-./java/lang/reflect/ReflectUtil.class
-./java/net/URL$1.class
-./java/net/URL.class
-./java/net/URLClassLoader$FileResource.class
-./java/net/URLClassLoader$FileURLLoader.class
-./java/net/URLClassLoader$Resource.class
-./java/net/URLClassLoader$URLLoader.class
-./java/net/URLClassLoader.class
-./java/net/URLStreamHandler.class
-./java/nio/Buffer.class
-./java/nio/ByteBuffer$vm.class
-./java/nio/ByteBuffer.class
-./java/nio/ByteBufferImpl.class
-./java/nio/ByteOrder.class
-./java/nio/CharBuffer.class
-./java/nio/CharBufferImpl.class
-./java/nio/channels/ByteChannel.class
-./java/nio/channels/Channel.class
-./java/nio/channels/FileChannel.class
-./java/nio/channels/GatheringByteChannel.class
-./java/nio/channels/InterruptibleChannel.class
-./java/nio/channels/ReadableByteChannel.class
-./java/nio/channels/ScatteringByteChannel.class
-./java/nio/channels/WritableByteChannel.class
-./java/nio/channels/spi/AbstractInterruptibleChannel.class
-./java/nio/charset/Charset.class
-./java/nio/charset/CharsetEncoder.class
-./java/nio/charset/CoderResult$1.class
-./java/nio/charset/CoderResult$2.class
-./java/nio/charset/CoderResult$Cache.class
-./java/nio/charset/CoderResult.class
-./java/nio/charset/CodingErrorAction.class
-./java/nio/charset/spi/CharsetProvider.class
-./java/security/AccessControlContext.class
-./java/security/AccessController.class
-./java/security/AllPermission$AllPermissionCollection.class
-./java/security/AllPermission.class
-./java/security/CodeSource.class
-./java/security/Guard.class
-./java/security/Permission.class
-./java/security/PermissionCollection.class
-./java/security/Permissions$PermissionsHash.class
-./java/security/Permissions.class
-./java/security/Policy.class
-./java/security/Principal.class
-./java/security/PrivilegedAction.class
-./java/security/ProtectionDomain.class
-./java/security/SecureClassLoader.class
-./java/security/VMAccessController.class
-./java/util/AbstractCollection.class
-./java/util/AbstractList.class
-./java/util/AbstractMap$BasicMapEntry.class
-./java/util/AbstractMap.class
-./java/util/AbstractSequentialList.class
-./java/util/AbstractSet.class
-./java/util/ArrayList.class
-./java/util/Collection.class
-./java/util/Collections$EmptyList.class
-./java/util/Collections$EmptyMap.class
-./java/util/Collections$EmptySet.class
-./java/util/Collections$ReverseComparator.class
-./java/util/Collections$SynchronizedCollection.class
-./java/util/Collections$SynchronizedIterator.class
-./java/util/Collections$SynchronizedSet.class
-./java/util/Collections$UnmodifiableCollection.class
-./java/util/Collections$UnmodifiableIterator.class
-./java/util/Collections$UnmodifiableSet.class
-./java/util/Collections.class
-./java/util/Comparator.class
-./java/util/Dictionary.class
-./java/util/Enumeration.class
-./java/util/HashMap$HashEntry.class
-./java/util/HashMap$HashIterator.class
-./java/util/HashMap.class
-./java/util/HashSet.class
-./java/util/Hashtable$3.class
-./java/util/Hashtable$HashEntry.class
-./java/util/Hashtable$HashIterator.class
-./java/util/Hashtable.class
-./java/util/Iterator.class
-./java/util/LinkedList$Entry.class
-./java/util/LinkedList.class
-./java/util/List.class
-./java/util/Locale.class
-./java/util/Map$Entry.class
-./java/util/Map.class
-./java/util/Properties.class
-./java/util/RandomAccess.class
-./java/util/Set.class
-./java/util/StringTokenizer.class
-./java/util/Vector.class
-./java/util/WeakHashMap$1.class
-./java/util/WeakHashMap$WeakBucket$WeakEntry.class
-./java/util/WeakHashMap$WeakBucket.class
-./java/util/WeakHashMap$WeakEntrySet.class
-./java/util/WeakHashMap.class
diff --git a/openwrt/package/sablevm-classpath/ipkg/libsablevm-classpath.control b/openwrt/package/sablevm-classpath/ipkg/libsablevm-classpath.control
deleted file mode 100644
index 2788fc15af..0000000000
--- a/openwrt/package/sablevm-classpath/ipkg/libsablevm-classpath.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: libsablevm-classpath
-Priority: optional
-Section: libs
-Description: Essential native libraries for Java
-Depends: sablevm
diff --git a/openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-full.control b/openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-full.control
deleted file mode 100644
index 3798800c03..0000000000
--- a/openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-full.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: sablevm-classpath-full
-Priority: optional
-Section: libs
-Description: Essential classes for Java (full set)
-Depends: sablevm, libsablevm-classpath
diff --git a/openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-mini.control b/openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-mini.control
deleted file mode 100644
index 81f53d3151..0000000000
--- a/openwrt/package/sablevm-classpath/ipkg/sablevm-classpath-mini.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: sablevm-classpath-mini
-Priority: optional
-Section: libs
-Description: Essential classes for Java (minimal set)
-Depends: sablevm, libsablevm-classpath
diff --git a/openwrt/package/sablevm/Config.in b/openwrt/package/sablevm/Config.in
deleted file mode 100644
index 2897018228..0000000000
--- a/openwrt/package/sablevm/Config.in
+++ /dev/null
@@ -1,18 +0,0 @@
-config BR2_PACKAGE_SABLEVM
- prompt "sablevm........................... A Java Virtual Machine (JVM) implementation"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBFFI_SABLE
- select BR2_PACKAGE_LIBLTDL
- select BR2_PACKAGE_LIBPOPT
- select BR2_PACKAGE_LIBPTHREAD
- select BR2_PACKAGE_ZLIB
- help
- SableVM is a robust, extremely portable, efficient, and specifications-
- -compliant Java virtual machine that aims to be easy to maintain and to
- extend. It features a state-of-the-art and efficient interpreter engine.
- Its source code is very accessible and easy to understand. It also has
- many robustness features that have been the object of careful design.
-
- http://sablevm.org/
-
diff --git a/openwrt/package/sablevm/Makefile b/openwrt/package/sablevm/Makefile
deleted file mode 100644
index d09b116843..0000000000
--- a/openwrt/package/sablevm/Makefile
+++ /dev/null
@@ -1,68 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=sablevm
-PKG_VERSION:=1.13
-PKG_RELEASE:=1
-PKG_MD5SUM:=d5828200032bfe921dd43e450931e38c
-
-PKG_SOURCE_URL:=http://sablevm.org/download/release/$(PKG_VERSION)/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-BR2_PACKAGE_SABLEVM=m
-
-$(eval $(call PKG_template,SABLEVM,sablevm,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -lffi -lltdl -lpopt -lz" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_SABLEVM):
- install -m0755 -d $(IDIR_SABLEVM)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/{java-,}sablevm $(IDIR_SABLEVM)/usr/bin/
- install -m0755 -d $(IDIR_SABLEVM)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsablevm-*.so $(IDIR_SABLEVM)/usr/lib/
- $(RSTRIP) $(IDIR_SABLEVM)
- $(IPKG_BUILD) $(IDIR_SABLEVM) $(PACKAGE_DIR)
diff --git a/openwrt/package/sablevm/ipkg/sablevm.control b/openwrt/package/sablevm/ipkg/sablevm.control
deleted file mode 100644
index 516fc72b32..0000000000
--- a/openwrt/package/sablevm/ipkg/sablevm.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: sablevm
-Priority: optional
-Section: misc
-Description: A Java Virtual Machine (JVM) implementation
-Depends: libffi-sable, libltdl, libpopt, libpthread, zlib
diff --git a/openwrt/package/sablevm/patches/001-heap_size.patch b/openwrt/package/sablevm/patches/001-heap_size.patch
deleted file mode 100644
index d28237296a..0000000000
--- a/openwrt/package/sablevm/patches/001-heap_size.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -ruN sablevm-1.11.1-orig/src/libsablevm/system.h sablevm-1.11.1-1/src/libsablevm/system.h
---- sablevm-1.11.1-orig/src/libsablevm/system.h 2005-03-18 01:25:09.000000000 +0100
-+++ sablevm-1.11.1-1/src/libsablevm/system.h 2005-03-22 01:05:19.000000000 +0100
-@@ -279,9 +279,9 @@
-
- #elif defined (_SABLEVM_COPY_GC) || (_SABLEVM_GENCOPY_GC)
-
--#define SVM_HEAP_DEFAULT_MIN_SIZE 16777216
-+#define SVM_HEAP_DEFAULT_MIN_SIZE 1048576
- #define SVM_HEAP_DEFAULT_MAX_SIZE 0
--#define SVM_HEAP_DEFAULT_ALLOCATION_INCREMENT 1048576
-+#define SVM_HEAP_DEFAULT_ALLOCATION_INCREMENT 65536
-
- #if defined (_SABLEVM_GENCOPY_GC)
-
diff --git a/openwrt/package/samba/Config.in b/openwrt/package/samba/Config.in
deleted file mode 100644
index fba7de31b1..0000000000
--- a/openwrt/package/samba/Config.in
+++ /dev/null
@@ -1,40 +0,0 @@
-#menu "samba............................. A NetBIOS/SMB implementation"
-
-config BR2_COMPILE_SAMBA
- tristate
- default n
- depends BR2_PACKAGE_SAMBA || BR2_PACKAGE_SAMBA_CLIENT || BR2_PACKAGE_SMBFS
-
-config BR2_PACKAGE_SAMBA
- prompt "samba............................. NetBIOS/SMB file and print server"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_SAMBA
- select BR2_PACKAGE_LIBGCC
- help
- The Samba software suite is a collection of programs that implements the
- SMB protocol for unix systems, allowing you to serve files and printers to
- Windows, NT, OS/2 and DOS clients. This protocol is sometimes also referred
- to as the LanManager or Netbios protocol.
-
- http://www.samba.org/
-
- This package contains the SMB file and print server daemons.
-
-config BR2_PACKAGE_SAMBA_CLIENT
- prompt "samba-client...................... NetBIOS/SMB simple client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_SAMBA
- select BR2_PACKAGE_LIBGCC
- help
- The Samba software suite is a collection of programs that implements the
- SMB protocol for unix systems, allowing you to serve files and printers to
- Windows, NT, OS/2 and DOS clients. This protocol is sometimes also referred
- to as the LanManager or Netbios protocol.
-
- http://www.samba.org/
-
- This package contains a simple command-line SMB client.
-
-#endmenu
diff --git a/openwrt/package/samba/Makefile b/openwrt/package/samba/Makefile
deleted file mode 100644
index 2d9defc343..0000000000
--- a/openwrt/package/samba/Makefile
+++ /dev/null
@@ -1,177 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=samba
-PKG_VERSION:=2.0.10
-PKG_RELEASE:=2
-PKG_MD5SUM:=54870482fe036b7e69dd48c90661eec6
-
-PKG_SOURCE_URL:=ftp://se.samba.org/pub/samba/stable \
- ftp://ftp.easynet.be/samba/stable
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SAMBA,samba,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SAMBA_CLIENT,samba-client,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- (cd $(PKG_BUILD_DIR)/source ; rm -rf config.{cache,status} ; \
- ./configure \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var/log/samba \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc/samba \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --with-lockdir=/var/run/samba \
- --with-privatedir=/etc/samba \
- );
- $(MAKE) -C $(PKG_BUILD_DIR)/source \
- bin/make_smbcodepage bin/make_unicodemap
- (cd $(PKG_BUILD_DIR)/source/bin ; \
- mv -f make_smbcodepage make_smbcodepage.old ; \
- mv -f make_unicodemap make_unicodemap.old ; \
- );
-
- $(MAKE) -C $(PKG_BUILD_DIR)/source \
- clean
-
- (cd $(PKG_BUILD_DIR)/source; rm -rf config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE -DNDEBUG -DSHMEM_SIZE=524288 -Dfcntl=fcntl64" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-lgcc_s -L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
- ac_cv_lib_cups_httpConnect=no \
- ac_cv_sizeof_int=4 \
- ac_cv_sizeof_long=4 \
- ac_cv_sizeof_short=2 \
- samba_cv_FTRUNCATE_NEEDS_ROOT=no \
- samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no \
- samba_cv_HAVE_BROKEN_GETGROUPS=no \
- samba_cv_HAVE_BROKEN_READDIR=no \
- samba_cv_HAVE_FCNTL_LOCK=yes \
- samba_cv_HAVE_FNMATCH=yes \
- samba_cv_HAVE_FTRUNCATE_EXTEND=no \
- samba_cv_HAVE_GETTIMEOFDAY_TZ=yes \
- samba_cv_HAVE_IFACE_AIX=no \
- samba_cv_HAVE_IFACE_IFCONF=yes \
- samba_cv_HAVE_IFACE_IFREQ=yes \
- samba_cv_HAVE_INO64_T=yes \
- samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no \
- samba_cv_HAVE_OFF64_T=yes \
- samba_cv_HAVE_ROOT=yes \
- samba_cv_HAVE_SECURE_MKSTEMP=yes \
- samba_cv_HAVE_SHARED_MMAP=yes \
- samba_cv_HAVE_STRUCT_FLOCK64=yes \
- samba_cv_HAVE_SYSV_IPC=no \
- samba_cv_HAVE_TRUNCATED_SALT=no \
- samba_cv_HAVE_UNION_SEMUN=no \
- samba_cv_HAVE_UNSIGNED_CHAR=yes \
- samba_cv_NEED_SGI_SEMUN_HACK=no \
- samba_cv_REPLACE_INET_NTOA=no \
- samba_cv_SIZEOF_INO_T=4 \
- samba_cv_SIZEOF_OFF_T=4 \
- samba_cv_SYSCONF_SC_NGROUPS_MAX=yes \
- samba_cv_USE_SETEUID=yes \
- samba_cv_USE_SETRESUID=no \
- samba_cv_USE_SETREUID=yes \
- samba_cv_USE_SETUIDX=no \
- samba_cv_have_longlong=yes \
- samba_cv_have_setresgid=no \
- samba_cv_have_setresuid=no \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var/log/samba \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc/samba \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --with-lockdir=/var/run/samba \
- --with-privatedir=/etc/samba \
- --with-syslog \
- );
- $(MAKE) -C $(PKG_BUILD_DIR)/source \
- $(TARGET_CONFIGURE_OPTS) \
- CODEPAGEDIR="/usr/share/samba" \
- all shared
- (cd $(PKG_BUILD_DIR)/source/bin ; \
- mv -f make_smbcodepage.old make_smbcodepage ; touch make_smbcodepage ; \
- mv -f make_unicodemap.old make_unicodemap ; touch make_unicodemap ; \
- );
- mkdir -p $(PKG_INSTALL_DIR)/usr/share/samba
- mkdir -p $(PKG_INSTALL_DIR)/var/log
- $(MAKE) -C $(PKG_BUILD_DIR)/source \
- BASEDIR="$(PKG_INSTALL_DIR)/usr" \
- BINDIR="$(PKG_INSTALL_DIR)/usr/bin" \
- SBINDIR="$(PKG_INSTALL_DIR)/usr/bin" \
- LIBDIR="$(PKG_INSTALL_DIR)/usr/lib" \
- VARDIR="$(PKG_INSTALL_DIR)/var/log/samba" \
- MANDIR="$(PKG_INSTALL_DIR)/usr/share/man" \
- CONFIGDIR="$(PKG_INSTALL_DIR)/etc/samba" \
- PRIVATEDIR="$(PKG_INSTALL_DIR)/etc/samba" \
- SWATDIR="$(PKG_INSTALL_DIR)/usr/swat" \
- LOCKDIR="$(PKG_INSTALL_DIR)/var/run/samba" \
- SAMBABOOK="$(PKG_INSTALL_DIR)/usr/swat/using_samba" \
- CODEPAGEDIR="$(PKG_INSTALL_DIR)/usr/share/samba" \
- install
- touch $@
-
-$(IPKG_SAMBA):
- install -d -m0755 $(IDIR_SAMBA)/etc/init.d
- install -m0755 ./files/samba.init $(IDIR_SAMBA)/etc/init.d/samba
- install -d -m0755 $(IDIR_SAMBA)/etc/samba
- install -m0644 ./files/smb.conf $(IDIR_SAMBA)/etc/samba/smb.conf
- install -d -m0755 $(IDIR_SAMBA)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/source/bin/smbpasswd.shared $(IDIR_SAMBA)/usr/bin/smbpasswd
- install -d -m0755 $(IDIR_SAMBA)/usr/lib
- install -m0755 $(PKG_BUILD_DIR)/source/bin/libsmb.so $(IDIR_SAMBA)/usr/lib/
- install -d -m0755 $(IDIR_SAMBA)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/source/bin/nmbd.shared $(IDIR_SAMBA)/usr/sbin/nmbd
- install -m0755 $(PKG_BUILD_DIR)/source/bin/smbd.shared $(IDIR_SAMBA)/usr/sbin/smbd
- install -d -m0755 $(IDIR_SAMBA)/usr/share/samba
- install -m0644 $(PKG_INSTALL_DIR)/usr/share/samba/codepage.{437,850} $(IDIR_SAMBA)/usr/share/samba/
- install -m0644 $(PKG_INSTALL_DIR)/usr/share/samba/unicode_map.{437,850} $(IDIR_SAMBA)/usr/share/samba/
- $(RSTRIP) $(IDIR_SAMBA)
- $(IPKG_BUILD) $(IDIR_SAMBA) $(PACKAGE_DIR)
-
-$(IPKG_SAMBA_CLIENT):
- install -d -m0755 $(IDIR_SAMBA_CLIENT)/usr/bin
- install -m0755 $(PKG_INSTALL_DIR)/usr/bin/smbclient $(IDIR_SAMBA_CLIENT)/usr/bin/
- $(RSTRIP) $(IDIR_SAMBA_CLIENT)
- $(IPKG_BUILD) $(IDIR_SAMBA_CLIENT) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/samba/files/samba.init b/openwrt/package/samba/files/samba.init
deleted file mode 100644
index c3c600ae3e..0000000000
--- a/openwrt/package/samba/files/samba.init
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/samba
-RUN_D=/var/run/samba
-NMBD_PID_F=$RUN_D/nmbd.pid
-SMBD_PID_F=$RUN_D/smbd.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- mkdir -p $RUN_D
- nmbd -D $NMBD_OPTIONS
- smbd -D $SMBD_OPTIONS
- ;;
- stop)
- [ -f $SMBD_PID_F ] && kill $(cat $SMBD_PID_F)
- [ -f $NMBD_PID_F ] && kill $(cat $NMBD_PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/samba/files/smb.conf b/openwrt/package/samba/files/smb.conf
deleted file mode 100644
index c52d6dd1b0..0000000000
--- a/openwrt/package/samba/files/smb.conf
+++ /dev/null
@@ -1,18 +0,0 @@
-[global]
- syslog = 0
- syslog only = yes
- workgroup = OpenWrt
- server string = OpenWrt Samba Server
- security = share
- encrypt passwords = yes
- guest account = nobody
- local master = yes
- name resolve order = lmhosts hosts bcast
-
-[tmp]
- comment = /tmp
- path = /tmp
- browseable = yes
- public = yes
- writeable = no
-
diff --git a/openwrt/package/samba/ipkg/samba-client.control b/openwrt/package/samba/ipkg/samba-client.control
deleted file mode 100644
index c9d71b0029..0000000000
--- a/openwrt/package/samba/ipkg/samba-client.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: samba-client
-Priority: optional
-Section: net
-Depends:
-Description: NetBIOS/SMB client
diff --git a/openwrt/package/samba/ipkg/samba.conffiles b/openwrt/package/samba/ipkg/samba.conffiles
deleted file mode 100644
index 5c10c50ad0..0000000000
--- a/openwrt/package/samba/ipkg/samba.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/samba/smb.conf
diff --git a/openwrt/package/samba/ipkg/samba.control b/openwrt/package/samba/ipkg/samba.control
deleted file mode 100644
index c1cf603c4d..0000000000
--- a/openwrt/package/samba/ipkg/samba.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: samba
-Priority: optional
-Section: net
-Depends: libgcc
-Description: NetBIOS/SMB file and print server
diff --git a/openwrt/package/samba/patches/100-samba.patch b/openwrt/package/samba/patches/100-samba.patch
deleted file mode 100644
index 3bfeed3596..0000000000
--- a/openwrt/package/samba/patches/100-samba.patch
+++ /dev/null
@@ -1,489 +0,0 @@
-diff -ruN samba-2.0.10.orig/source/include/smb.h samba-2.0.10/source/include/smb.h
---- samba-2.0.10.orig/source/include/smb.h 2001-06-23 10:52:20.000000000 +0200
-+++ samba-2.0.10/source/include/smb.h 2006-03-06 22:21:12.000000000 +0100
-@@ -115,6 +115,22 @@
- * Usage:
- * DEBUGADD( 2, ("Some additional text.\n") );
- */
-+
-+#ifdef NDEBUG
-+
-+#define DEBUGLVL( level ) \
-+ ( (0 == (level)) \
-+ && dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) ) )
-+
-+#define DEBUG( level, body ) \
-+ (void)( (0 == (level)) \
-+ && (dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) )) \
-+ && (dbgtext body) )
-+
-+#define DEBUGADD( level, body ) \
-+ (void)( (0 == (level)) && (dbgtext body) )
-+
-+#else
- #define DEBUGLVL( level ) \
- ( (DEBUGLEVEL >= (level)) \
- && dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) ) )
-@@ -140,7 +156,7 @@
- (void)( (DEBUGLEVEL >= (level)) && (dbgtext body) )
-
- #endif
--
-+#endif
- /* End Debugging code section.
- * -------------------------------------------------------------------------- **
- */
-@@ -1612,7 +1628,9 @@
- #define CAP_LOCK_AND_READ 0x0100
- #define CAP_NT_FIND 0x0200
- #define CAP_DFS 0x1000
-+#define CAP_W2K_SMBS 0x2000
- #define CAP_LARGE_READX 0x4000
-+#define CAP_LARGE_WRITEX 0x8000
- #define CAP_EXTENDED_SECURITY 0x80000000
-
- /* protocol types. It assumes that higher protocols include lower protocols
-diff -ruN samba-2.0.10.orig/source/Makefile.in samba-2.0.10/source/Makefile.in
---- samba-2.0.10.orig/source/Makefile.in 2000-03-16 23:57:08.000000000 +0100
-+++ samba-2.0.10/source/Makefile.in 2006-03-06 22:21:12.000000000 +0100
-@@ -37,8 +37,8 @@
- # set these to where to find various files
- # These can be overridden by command line switches (see smbd(8))
- # or in smb.conf (see smb.conf(5))
--SMBLOGFILE = $(VARDIR)/log.smb
--NMBLOGFILE = $(VARDIR)/log.nmb
-+SMBLOGFILE = $(VARDIR)/smb
-+NMBLOGFILE = $(VARDIR)/nmb
- CONFIGFILE = $(LIBDIR)/smb.conf
- LMHOSTSFILE = $(LIBDIR)/lmhosts
- DRIVERFILE = $(LIBDIR)/printers.def
-@@ -55,7 +55,7 @@
- LOCKDIR = @lockdir@
-
- # The directory where code page definition files go
--CODEPAGEDIR = $(LIBDIR)/codepages
-+CODEPAGEDIR = $(BASEDIR)/codepages
-
- # The current codepage definition list.
- CODEPAGELIST= 437 737 775 850 852 861 932 866 949 950 936 1251 ISO8859-1 ISO8859-2 ISO8859-5 ISO8859-7 KOI8-R
-@@ -82,6 +82,7 @@
- PROGS2 = bin/rpcclient bin/smbpasswd bin/make_smbcodepage bin/make_unicodemap @WRAP@ @WRAP32@
- MPROGS = @MPROGS@
- PROGS = $(PROGS1) $(PROGS2) $(MPROGS) bin/nmblookup bin/make_printerdef
-+SHAREDPROGS = bin/smbd.shared bin/nmbd.shared bin/smbpasswd.shared
-
- SCRIPTS = $(srcdir)/script/smbtar $(srcdir)/script/addtosmbpass $(srcdir)/script/convert_smbpasswd
-
-@@ -159,6 +160,8 @@
- $(RPC_SERVER_OBJ) $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) \
- $(LOCKING_OBJ) $(PASSDB_OBJ) $(PRINTING_OBJ) $(PROFILE_OBJ) $(LIB_OBJ)
-
-+SMBDSHARED_OBJ = $(SMBD_OBJ1) $(RPC_SERVER_OBJ) \
-+ $(LOCKING_OBJ) $(PROFILE_OBJ) #$(PRINTING_OBJ)
-
- NMBD_OBJ1 = nmbd/asyncdns.o nmbd/nmbd.o nmbd/nmbd_become_dmb.o \
- nmbd/nmbd_become_lmb.o nmbd/nmbd_browserdb.o \
-@@ -176,6 +179,8 @@
- NMBD_OBJ = $(NMBD_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) \
- $(LIB_OBJ)
-
-+NMBDSHARED_OBJ = $(NMBD_OBJ1)
-+
- SWAT_OBJ = web/cgi.o web/diagnose.o web/startstop.o web/statuspage.o \
- web/swat.o $(LIBSMB_OBJ) $(LOCKING_OBJ) \
- $(PARAM_OBJ) $(PASSDB_OBJ) $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) \
-@@ -207,6 +212,8 @@
- SMBPASSWD_OBJ = utils/smbpasswd.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(PASSDB_OBJ) \
- $(UBIQX_OBJ) $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) $(LIB_OBJ)
-
-+SMBPASSWDSHARED_OBJ = utils/smbpasswd.o
-+
- RPCCLIENT_OBJ = rpcclient/rpcclient.o \
- rpcclient/display.o \
- rpcclient/cmd_lsarpc.o \
-@@ -265,6 +272,11 @@
- PROTO_OBJ = $(SMBD_OBJ) $(NMBD_OBJ) $(SWAT_OBJ) $(CLIENT_OBJ) \
- $(RPCCLIENT_OBJ) $(SMBWRAPPER_OBJ) $(SMBTORTURE_OBJ)
-
-+LIBSMBSHARED_OBJ = $(LIB_OBJ) $(LIBSMB_OBJ) $(PARAM_OBJ) $(UBIQX_OBJ) \
-+ $(PASSDB_OBJ) $(RPC_PARSE_OBJ) #$(RPC_CLIENT_OBJ)
-+
-+LIBSMB_PICOBJS = $(LIBSMBSHARED_OBJ:.o=.po)
-+
- PICOBJS = $(SMBWRAPPER_OBJ:.o=.po)
- PICOBJS32 = $(SMBWRAPPER_OBJ:.o=.po32)
-
-@@ -274,6 +286,8 @@
-
- all : CHECK $(SPROGS) $(PROGS)
-
-+shared : CHECK $(SHAREDPROGS)
-+
- smbwrapper : CHECK bin/smbsh bin/smbwrapper.@SHLIBEXT@ @WRAP32@
-
- smbtorture : CHECK bin/smbtorture
-@@ -359,10 +373,18 @@
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(LDFLAGS) $(LIBS)
-
-+bin/smbd.shared: $(SMBDSHARED_OBJ) bin/libsmb.@SHLIBEXT@ bin/.dummy
-+ @echo Linking $@
-+ @$(CC) $(FLAGS) -o $@ $(SMBDSHARED_OBJ) $(LDFLAGS) $(LIBS) -Lbin -lsmb
-+
- bin/nmbd: $(NMBD_OBJ) bin/.dummy
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(NMBD_OBJ) $(LDFLAGS) $(LIBS)
-
-+bin/nmbd.shared: $(NMBDSHARED_OBJ) bin/libsmb.@SHLIBEXT@ bin/.dummy
-+ @echo Linking $@
-+ @$(CC) $(FLAGS) -o $@ $(NMBDSHARED_OBJ) $(LDFLAGS) $(LIBS) -Lbin -lsmb
-+
- bin/swat: $(SWAT_OBJ) bin/.dummy
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(SWAT_OBJ) $(LDFLAGS) $(LIBS)
-@@ -411,6 +433,10 @@
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(SMBPASSWD_OBJ) $(LDFLAGS) $(LIBS)
-
-+bin/smbpasswd.shared: $(SMBPASSWDSHARED_OBJ) bin/libsmb.@SHLIBEXT@ bin/.dummy
-+ @echo Linking $@
-+ @$(CC) $(FLAGS) -o $@ $(SMBPASSWDSHARED_OBJ) $(LDFLAGS) $(LIBS) -Lbin -lsmb
-+
- bin/make_smbcodepage: $(MAKE_SMBCODEPAGE_OBJ) bin/.dummy
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(MAKE_SMBCODEPAGE_OBJ) $(LDFLAGS) $(LIBS)
-@@ -459,6 +485,10 @@
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(SMBSH_OBJ) $(LDFLAGS) $(LIBS)
-
-+bin/libsmb.@SHLIBEXT@: $(LIBSMB_PICOBJS) bin/.dummy
-+ @echo Linking shared library $@
-+ @$(LD) @LDSHFLAGS@ -o $@ $(LIBSMB_PICOBJS) $(LIBS)
-+
- install: installbin installman installscripts installcp installswat
-
- installdirs:
-@@ -518,7 +548,7 @@
- ctags `find . -name "*.[ch]" | grep -v /CVS/`
-
- realclean: clean
-- -rm -f config.log $(PROGS) $(SPROGS) bin/.dummy
-+ -rm -f config.log $(PROGS) $(SPROGS) $(SHAREDPROGS) bin/.dummy
- -rmdir bin
-
- distclean: realclean
-diff -ruN samba-2.0.10.orig/source/nmbd/nmbd_mynames.c samba-2.0.10/source/nmbd/nmbd_mynames.c
---- samba-2.0.10.orig/source/nmbd/nmbd_mynames.c 2000-03-16 23:59:24.000000000 +0100
-+++ samba-2.0.10/source/nmbd/nmbd_mynames.c 2006-03-06 22:21:12.000000000 +0100
-@@ -215,8 +215,8 @@
- */
- if( !is_refresh_already_queued( subrec, namerec) )
- refresh_name( subrec, namerec, NULL, NULL, NULL );
-- namerec->data.death_time += lp_max_ttl();
-- namerec->data.refresh_time += MIN(lp_max_ttl(), MAX_REFRESH_TIME);
-+ namerec->data.death_time = t + lp_max_ttl();
-+ namerec->data.refresh_time = t + MIN(lp_max_ttl(), MAX_REFRESH_TIME);
- }
- }
- }
-diff -ruN samba-2.0.10.orig/source/smbd/close.c samba-2.0.10/source/smbd/close.c
---- samba-2.0.10.orig/source/smbd/close.c 2000-04-21 19:43:13.000000000 +0200
-+++ samba-2.0.10/source/smbd/close.c 2006-03-06 22:21:12.000000000 +0100
-@@ -122,11 +122,11 @@
- last_reference = True;
-
- fsp->fd_ptr = NULL;
--
-+#ifdef PRINTING
- /* NT uses smbclose to start a print - weird */
- if (normal_close && fsp->print_file)
- print_file(conn, fsp);
--
-+#endif
- /* check for magic scripts */
- if (normal_close) {
- check_magic(fsp,conn);
-diff -ruN samba-2.0.10.orig/source/smbd/ipc.c samba-2.0.10/source/smbd/ipc.c
---- samba-2.0.10.orig/source/smbd/ipc.c 2000-03-30 00:20:06.000000000 +0200
-+++ samba-2.0.10/source/smbd/ipc.c 2006-03-06 22:21:12.000000000 +0100
-@@ -472,7 +472,7 @@
- PACK(desc,t,v);
- }
-
--
-+#ifdef PRINTING
- /****************************************************************************
- get a print queue
- ****************************************************************************/
-@@ -1004,7 +1004,7 @@
-
- return True;
- }
--
-+#endif
- /****************************************************************************
- get info level for a server list query
- ****************************************************************************/
-@@ -1834,7 +1834,7 @@
-
- return(True);
- }
--
-+#ifdef PRINTING
- /****************************************************************************
- delete a print job
- Form: <W> <>
-@@ -2091,7 +2091,7 @@
-
- return(True);
- }
--
-+#endif
-
- /****************************************************************************
- get info about the server
-@@ -2756,7 +2756,7 @@
-
- return(True);
- }
--
-+#ifdef PRINTING
- /****************************************************************************
- api_WPrintJobEnumerate
- ****************************************************************************/
-@@ -3189,7 +3189,7 @@
- DEBUG(4,("WPrintPortEnum: errorcode %d\n",desc.errcode));
- return(True);
- }
--
-+#endif
- /****************************************************************************
- Start the first part of an RPC reply which began with an SMBtrans request.
- ****************************************************************************/
-@@ -3407,6 +3407,7 @@
- {"RNetUserGetInfo", 56, api_RNetUserGetInfo,0},
- {"NetUserGetGroups", 59, api_NetUserGetGroups,0},
- {"NetWkstaGetInfo", 63, api_NetWkstaGetInfo,0},
-+#ifdef PRINTING
- {"DosPrintQEnum", 69, api_DosPrintQEnum,0},
- {"DosPrintQGetInfo", 70, api_DosPrintQGetInfo,0},
- {"WPrintQueuePause", 74, api_WPrintQueuePurge,0},
-@@ -3418,16 +3419,21 @@
- {"RDosPrintJobResume",83, api_RDosPrintJobDel,0},
- {"WPrintDestEnum", 84, api_WPrintDestEnum,0},
- {"WPrintDestGetInfo", 85, api_WPrintDestGetInfo,0},
-+#endif
- {"NetRemoteTOD", 91, api_NetRemoteTOD,0},
-+#ifdef PRINTING
- {"WPrintQueuePurge", 103, api_WPrintQueuePurge,0},
-+#endif
- {"NetServerEnum", 104, api_RNetServerEnum,0},
- {"WAccessGetUserPerms",105, api_WAccessGetUserPerms,0},
- {"SetUserPassword", 115, api_SetUserPassword,0},
- {"WWkstaUserLogon", 132, api_WWkstaUserLogon,0},
-+#ifdef PRINTING
- {"PrintJobInfo", 147, api_PrintJobInfo,0},
- {"WPrintDriverEnum", 205, api_WPrintDriverEnum,0},
- {"WPrintQProcEnum", 206, api_WPrintQProcEnum,0},
- {"WPrintPortEnum", 207, api_WPrintPortEnum,0},
-+#endif
- {"SamOEMChangePassword", 214, api_SamOEMChangePassword,0},
- {NULL, -1, api_Unsupported,0}};
-
-diff -ruN samba-2.0.10.orig/source/smbd/negprot.c samba-2.0.10/source/smbd/negprot.c
---- samba-2.0.10.orig/source/smbd/negprot.c 2000-03-16 23:59:47.000000000 +0100
-+++ samba-2.0.10/source/smbd/negprot.c 2006-03-06 22:21:12.000000000 +0100
-@@ -160,7 +160,7 @@
- /* dual names + lock_and_read + nt SMBs + remote API calls */
- int capabilities = CAP_NT_FIND|CAP_LOCK_AND_READ|
- (lp_nt_smb_support() ? CAP_NT_SMBS | CAP_RPC_REMOTE_APIS : 0) |
-- (SMB_OFF_T_BITS == 64 ? CAP_LARGE_FILES : 0);
-+ (SMB_OFF_T_BITS == 64 ? CAP_LARGE_FILES | CAP_LARGE_READX | CAP_LARGE_WRITEX /*| CAP_W2K_SMBS*/ : 0);
-
-
- /*
-diff -ruN samba-2.0.10.orig/source/smbd/password.c samba-2.0.10/source/smbd/password.c
---- samba-2.0.10.orig/source/smbd/password.c 2000-03-16 23:59:48.000000000 +0100
-+++ samba-2.0.10/source/smbd/password.c 2006-03-06 22:21:12.000000000 +0100
-@@ -1149,7 +1149,7 @@
-
- return(True);
- }
--
-+#ifdef RPCCLIENT
- /***********************************************************************
- Connect to a remote machine for domain security authentication
- given a name or IP address.
-@@ -1504,3 +1504,4 @@
- cli_shutdown(&cli);
- return True;
- }
-+#endif
-diff -ruN samba-2.0.10.orig/source/smbd/process.c samba-2.0.10/source/smbd/process.c
---- samba-2.0.10.orig/source/smbd/process.c 2000-04-15 02:21:27.000000000 +0200
-+++ samba-2.0.10/source/smbd/process.c 2006-03-06 22:21:12.000000000 +0100
-@@ -343,10 +343,12 @@
- {SMBlseek,"SMBlseek",reply_lseek,AS_USER},
- {SMBflush,"SMBflush",reply_flush,AS_USER},
- {SMBctemp,"SMBctemp",reply_ctemp,AS_USER | QUEUE_IN_OPLOCK },
-+#ifdef PRINTING
- {SMBsplopen,"SMBsplopen",reply_printopen,AS_USER | QUEUE_IN_OPLOCK },
- {SMBsplclose,"SMBsplclose",reply_printclose,AS_USER},
- {SMBsplretq,"SMBsplretq",reply_printqueue,AS_USER},
- {SMBsplwr,"SMBsplwr",reply_printwrite,AS_USER},
-+#endif
- {SMBlock,"SMBlock",reply_lock,AS_USER},
- {SMBunlock,"SMBunlock",reply_unlock,AS_USER},
-
-@@ -908,7 +910,7 @@
- DEBUG(2,("Closing idle connection 2.\n"));
- return False;
- }
--
-+#ifdef RPCLIENT
- if(global_machine_password_needs_changing)
- {
- unsigned char trust_passwd_hash[16];
-@@ -954,7 +956,7 @@
- trust_password_unlock();
- global_machine_password_needs_changing = False;
- }
--
-+#endif
- /*
- * Check to see if we have any blocking locks
- * outstanding on the queue.
-diff -ruN samba-2.0.10.orig/source/smbd/reply.c samba-2.0.10/source/smbd/reply.c
---- samba-2.0.10.orig/source/smbd/reply.c 2001-06-23 10:51:24.000000000 +0200
-+++ samba-2.0.10/source/smbd/reply.c 2006-03-06 22:21:12.000000000 +0100
-@@ -597,12 +597,12 @@
-
- if (!check_domain_match(orig_user, domain))
- return False;
--
-+#ifdef RPCCLIENT
- ret = domain_client_validate(orig_user, domain,
- smb_apasswd, smb_apasslen,
- smb_ntpasswd, smb_ntpasslen,
- &user_exists);
--
-+#endif
- if(ret) {
- /*
- * User validated ok against Domain controller.
-@@ -2991,7 +2991,7 @@
- return -1;
- }
-
--
-+#ifdef PRINTING
- /****************************************************************************
- reply to a printopen
- ****************************************************************************/
-@@ -3176,7 +3176,7 @@
-
- return(outsize);
- }
--
-+#endif
-
- /****************************************************************************
- reply to a mkdir
-diff -ruN samba-2.0.10.orig/source/smbd/server.c samba-2.0.10/source/smbd/server.c
---- samba-2.0.10.orig/source/smbd/server.c 2000-03-16 23:59:52.000000000 +0100
-+++ samba-2.0.10/source/smbd/server.c 2006-03-06 22:21:12.000000000 +0100
-@@ -300,9 +300,9 @@
- lp_killunused(conn_snum_used);
-
- ret = lp_load(servicesf,False,False,True);
--
-+#ifdef PRINTING
- load_printers();
--
-+#endif
- /* perhaps the config filename is now set */
- if (!test)
- reload_services(True);
-diff -ruN samba-2.0.10.orig/source/smbd/service.c samba-2.0.10/source/smbd/service.c
---- samba-2.0.10.orig/source/smbd/service.c 2000-03-16 23:59:52.000000000 +0100
-+++ samba-2.0.10/source/smbd/service.c 2006-03-06 22:21:12.000000000 +0100
-@@ -121,7 +121,7 @@
- }
- }
- }
--
-+#ifdef PRINTING
- /* If we still don't have a service, attempt to add it as a printer. */
- if (iService < 0)
- {
-@@ -146,7 +146,7 @@
- DEBUG(3,("%s is not a valid printer name\n", service));
- }
- }
--
-+#endif
- /* just possibly it's a default service? */
- if (iService < 0)
- {
-diff -ruN samba-2.0.10.orig/source/utils/smbpasswd.c samba-2.0.10/source/utils/smbpasswd.c
---- samba-2.0.10.orig/source/utils/smbpasswd.c 2000-03-16 23:59:57.000000000 +0100
-+++ samba-2.0.10/source/utils/smbpasswd.c 2006-03-06 22:21:12.000000000 +0100
-@@ -71,7 +71,7 @@
- }
- exit(1);
- }
--
-+#ifdef RPCCLIENT
- /*********************************************************
- Join a domain.
- **********************************************************/
-@@ -143,7 +143,7 @@
-
- return (int)ret;
- }
--
-+#endif
-
- static void set_line_buffering(FILE *f)
- {
-@@ -335,13 +335,13 @@
- if((local_flags & (LOCAL_ADD_USER|LOCAL_DELETE_USER)) && ((remote_machine != NULL) || joining_domain)) {
- usage();
- }
--
-+#ifdef RPCCLIENT
- if(joining_domain) {
- if (argc != 0)
- usage();
- return join_domain(new_domain, remote_machine);
- }
--
-+#endif
- /*
- * Deal with root - can add a user, but only locally.
- */
-diff -ruN samba-2.0.10.orig/source/web/swat.c samba-2.0.10/source/web/swat.c
---- samba-2.0.10.orig/source/web/swat.c 2000-04-11 19:36:36.000000000 +0200
-+++ samba-2.0.10/source/web/swat.c 2006-03-06 22:21:12.000000000 +0100
-@@ -357,8 +357,9 @@
- return 0;
- }
- iNumNonAutoPrintServices = lp_numservices();
-+#ifdef PRINTING
- load_printers();
--
-+#endif
- return 1;
- }
-
-@@ -997,8 +998,9 @@
- charset_initialise();
- load_config(True);
- iNumNonAutoPrintServices = lp_numservices();
-+#ifdef PRINTING
- load_printers();
--
-+#endif
- cgi_setup(SWATDIR, !demo_mode);
-
- print_header();
diff --git a/openwrt/package/samba/patches/200-security.patch b/openwrt/package/samba/patches/200-security.patch
deleted file mode 100644
index 8e51549e1a..0000000000
--- a/openwrt/package/samba/patches/200-security.patch
+++ /dev/null
@@ -1,606 +0,0 @@
-diff -ruN samba-2.0.10.orig/source/include/smb.h samba-2.0.10/source/include/smb.h
---- samba-2.0.10.orig/source/include/smb.h 2006-03-06 22:25:08.000000000 +0100
-+++ samba-2.0.10/source/include/smb.h 2006-03-06 22:25:53.000000000 +0100
-@@ -272,6 +272,7 @@
- #define ERRlock 33 /* Lock request conflicts with existing lock */
- #define ERRunsup 50 /* Request unsupported, returned by Win 95, RJS 20Jun98 */
- #define ERRfilexists 80 /* File in operation already exists */
-+#define ERRinvalidparam 87
- #define ERRcannotopen 110 /* Cannot open the file specified */
- #define ERRunknownlevel 124
- #define ERRrename 183
-@@ -1911,4 +1912,7 @@
-
- #define SAFE_NETBIOS_CHARS ". -_"
-
-+#ifndef SAFE_FREE
-+#define SAFE_FREE(x) do { if ((x) != NULL) {free((x)); (x)=NULL;} } while(0)
-+#endif
- #endif /* _SMB_H */
-diff -ruN samba-2.0.10.orig/source/include/version.h samba-2.0.10/source/include/version.h
---- samba-2.0.10.orig/source/include/version.h 2001-06-23 15:23:59.000000000 +0200
-+++ samba-2.0.10/source/include/version.h 2006-03-06 22:25:53.000000000 +0100
-@@ -1 +1 @@
--#define VERSION "2.0.10"
-+#define VERSION "2.0.10-security-rollup"
-diff -ruN samba-2.0.10.orig/source/smbd/filename.c samba-2.0.10/source/smbd/filename.c
---- samba-2.0.10.orig/source/smbd/filename.c 2000-03-16 23:59:44.000000000 +0100
-+++ samba-2.0.10/source/smbd/filename.c 2006-03-06 22:25:53.000000000 +0100
-@@ -172,7 +172,7 @@
- * StrnCpy always null terminates.
- */
-
-- StrnCpy(orig_name, full_orig_name, namelen);
-+ StrnCpy(orig_name, full_orig_name, MIN(namelen, sizeof(orig_name)-1));
- if(!case_sensitive)
- strupper( orig_name );
-
-diff -ruN samba-2.0.10.orig/source/smbd/ipc.c samba-2.0.10/source/smbd/ipc.c
---- samba-2.0.10.orig/source/smbd/ipc.c 2006-03-06 22:25:08.000000000 +0100
-+++ samba-2.0.10/source/smbd/ipc.c 2006-03-06 22:25:53.000000000 +0100
-@@ -3556,18 +3556,18 @@
- uint16 *setup=NULL;
- int outsize = 0;
- uint16 vuid = SVAL(inbuf,smb_uid);
-- int tpscnt = SVAL(inbuf,smb_vwv0);
-- int tdscnt = SVAL(inbuf,smb_vwv1);
-- int mprcnt = SVAL(inbuf,smb_vwv2);
-- int mdrcnt = SVAL(inbuf,smb_vwv3);
-- int msrcnt = CVAL(inbuf,smb_vwv4);
-+ unsigned int tpscnt = SVAL(inbuf,smb_vwv0);
-+ unsigned int tdscnt = SVAL(inbuf,smb_vwv1);
-+ unsigned int mprcnt = SVAL(inbuf,smb_vwv2);
-+ unsigned int mdrcnt = SVAL(inbuf,smb_vwv3);
-+ unsigned int msrcnt = CVAL(inbuf,smb_vwv4);
- BOOL close_on_completion = BITSETW(inbuf+smb_vwv5,0);
- BOOL one_way = BITSETW(inbuf+smb_vwv5,1);
-- int pscnt = SVAL(inbuf,smb_vwv9);
-- int psoff = SVAL(inbuf,smb_vwv10);
-- int dscnt = SVAL(inbuf,smb_vwv11);
-- int dsoff = SVAL(inbuf,smb_vwv12);
-- int suwcnt = CVAL(inbuf,smb_vwv13);
-+ unsigned int pscnt = SVAL(inbuf,smb_vwv9);
-+ unsigned int psoff = SVAL(inbuf,smb_vwv10);
-+ unsigned int dscnt = SVAL(inbuf,smb_vwv11);
-+ unsigned int dsoff = SVAL(inbuf,smb_vwv12);
-+ unsigned int suwcnt = CVAL(inbuf,smb_vwv13);
-
- memset(name, '\0',sizeof(name));
- fstrcpy(name,smb_buf(inbuf));
-@@ -3578,26 +3578,44 @@
-
- if (tdscnt) {
- if((data = (char *)malloc(tdscnt)) == NULL) {
-- DEBUG(0,("reply_trans: data malloc fail for %d bytes !\n", tdscnt));
-+ DEBUG(0,("reply_trans: data malloc fail for %u bytes !\n", tdscnt));
- return(ERROR(ERRDOS,ERRnomem));
- }
-+ if ((dsoff+dscnt < dsoff) || (dsoff+dscnt < dscnt))
-+ goto bad_param;
-+ if (smb_base(inbuf)+dsoff+dscnt > inbuf + size)
-+ goto bad_param;
-+
- memcpy(data,smb_base(inbuf)+dsoff,dscnt);
- }
-
- if (tpscnt) {
- if((params = (char *)malloc(tpscnt)) == NULL) {
-- DEBUG(0,("reply_trans: param malloc fail for %d bytes !\n", tpscnt));
-+ DEBUG(0,("reply_trans: param malloc fail for %u bytes !\n", tpscnt));
-+ SAFE_FREE(data);
- return(ERROR(ERRDOS,ERRnomem));
- }
-+ if ((psoff+pscnt < psoff) || (psoff+pscnt < pscnt))
-+ goto bad_param;
-+ if (smb_base(inbuf)+psoff+pscnt > inbuf + size)
-+ goto bad_param;
-+
- memcpy(params,smb_base(inbuf)+psoff,pscnt);
- }
-
- if (suwcnt) {
- int i;
- if((setup = (uint16 *)malloc(suwcnt*sizeof(uint16))) == NULL) {
-- DEBUG(0,("reply_trans: setup malloc fail for %d bytes !\n", (int)(suwcnt * sizeof(uint16))));
-- return(ERROR(ERRDOS,ERRnomem));
-- }
-+ DEBUG(0,("reply_trans: setup malloc fail for %u bytes !\n", (unsigned int)(suwcnt * sizeof(uint16))));
-+ SAFE_FREE(data);
-+ SAFE_FREE(params);
-+ return(ERROR(ERRDOS,ERRnomem));
-+ }
-+ if (inbuf+smb_vwv14+(suwcnt*SIZEOFWORD) > inbuf + size)
-+ goto bad_param;
-+ if ((smb_vwv14+(suwcnt*SIZEOFWORD) < smb_vwv14) || (smb_vwv14+(suwcnt*SIZEOFWORD) < (suwcnt*SIZEOFWORD)))
-+ goto bad_param;
-+
- for (i=0;i<suwcnt;i++)
- setup[i] = SVAL(inbuf,smb_vwv14+i*SIZEOFWORD);
- }
-@@ -3614,7 +3632,7 @@
- /* receive the rest of the trans packet */
- while (pscnt < tpscnt || dscnt < tdscnt) {
- BOOL ret;
-- int pcnt,poff,dcnt,doff,pdisp,ddisp;
-+ unsigned int pcnt,poff,dcnt,doff,pdisp,ddisp;
-
- ret = receive_next_smb(inbuf,bufsize,SMB_SECONDARY_WAIT);
-
-@@ -3625,19 +3643,19 @@
- DEBUG(0,("reply_trans: %s in getting secondary trans response.\n",
- (smb_read_error == READ_ERROR) ? "error" : "timeout" ));
- }
-- if (params)
-- free(params);
-- if (data)
-- free(data);
-- if (setup)
-- free(setup);
-+ SAFE_FREE(params);
-+ SAFE_FREE(data);
-+ SAFE_FREE(setup);
- return(ERROR(ERRSRV,ERRerror));
- }
-
- show_msg(inbuf);
-
-- tpscnt = SVAL(inbuf,smb_vwv0);
-- tdscnt = SVAL(inbuf,smb_vwv1);
-+ /* Revise total_params and total_data in case they have changed downwards */
-+ if (SVAL(inbuf,smb_vwv0) < tpscnt)
-+ tpscnt = SVAL(inbuf,smb_vwv0);
-+ if (SVAL(inbuf,smb_vwv1) < tdscnt)
-+ tdscnt = SVAL(inbuf,smb_vwv1);
-
- pcnt = SVAL(inbuf,smb_vwv2);
- poff = SVAL(inbuf,smb_vwv3);
-@@ -3650,17 +3668,36 @@
- pscnt += pcnt;
- dscnt += dcnt;
-
-- if (dscnt > tdscnt || pscnt > tpscnt) {
-- exit_server("invalid trans parameters\n");
-- }
-+ if (dscnt > tdscnt || pscnt > tpscnt)
-+ goto bad_param;
-
-- if (pcnt)
-+ if (pcnt) {
-+ if (pdisp+pcnt >= tpscnt)
-+ goto bad_param;
-+ if ((pdisp+pcnt < pdisp) || (pdisp+pcnt < pcnt))
-+ goto bad_param;
-+ if (smb_base(inbuf) + poff + pcnt >= inbuf + bufsize)
-+ goto bad_param;
-+ if (params + pdisp < params)
-+ goto bad_param;
-+
- memcpy(params+pdisp,smb_base(inbuf)+poff,pcnt);
-- if (dcnt)
-+ }
-+
-+ if (dcnt) {
-+ if (ddisp+dcnt >= tdscnt)
-+ goto bad_param;
-+ if ((ddisp+dcnt < ddisp) || (ddisp+dcnt < dcnt))
-+ goto bad_param;
-+ if (smb_base(inbuf) + doff + dcnt >= inbuf + bufsize)
-+ goto bad_param;
-+ if (data + ddisp < data)
-+ goto bad_param;
-+
- memcpy(data+ddisp,smb_base(inbuf)+doff,dcnt);
-+ }
- }
--
--
-+
- DEBUG(3,("trans <%s> data=%d params=%d setup=%d\n",
- name,tdscnt,tpscnt,suwcnt));
-
-@@ -3700,4 +3737,12 @@
- return(ERROR(ERRSRV,ERRnosupport));
-
- return(outsize);
-+
-+ bad_param:
-+
-+ DEBUG(0,("reply_trans: invalid trans parameters\n"));
-+ SAFE_FREE(data);
-+ SAFE_FREE(params);
-+ SAFE_FREE(setup);
-+ return(ERROR(ERRSRV,ERRerror));
- }
-diff -ruN samba-2.0.10.orig/source/smbd/nttrans.c samba-2.0.10/source/smbd/nttrans.c
---- samba-2.0.10.orig/source/smbd/nttrans.c 2000-04-24 19:27:30.000000000 +0200
-+++ samba-2.0.10/source/smbd/nttrans.c 2006-03-06 22:25:53.000000000 +0100
-@@ -2575,11 +2575,14 @@
- params = (char *)malloc(total_parameter_count);
- if (total_data_count > 0)
- data = (char *)malloc(total_data_count);
--
-+
- if ((total_parameter_count && !params) || (total_data_count && !data) ||
- (setup_count && !setup)) {
-+ SAFE_FREE(setup);
-+ SAFE_FREE(params);
-+ SAFE_FREE(data);
- DEBUG(0,("reply_nttrans : Out of memory\n"));
-- return(ERROR(ERRDOS,ERRnomem));
-+ return ERROR(ERRDOS,ERRnomem);
- }
-
- /* Copy the param and data bytes sent with this request into
-@@ -2588,64 +2591,112 @@
- num_data_sofar = data_count;
-
- if (parameter_count > total_parameter_count || data_count > total_data_count)
-- exit_server("reply_nttrans: invalid sizes in packet.\n");
-+ goto bad_param;
-
- if(setup) {
-- memcpy( setup, &inbuf[smb_nt_SetupStart], setup_count);
- DEBUG(10,("reply_nttrans: setup_count = %d\n", setup_count));
-- dump_data(10, setup, setup_count);
-+ if ((smb_nt_SetupStart + setup_count < smb_nt_SetupStart) ||
-+ (smb_nt_SetupStart + setup_count < setup_count))
-+ goto bad_param;
-+ if (smb_nt_SetupStart + setup_count > length)
-+ goto bad_param;
-+
-+ memcpy( setup, &inbuf[smb_nt_SetupStart], setup_count);
- }
- if(params) {
-- memcpy( params, smb_base(inbuf) + parameter_offset, parameter_count);
- DEBUG(10,("reply_nttrans: parameter_count = %d\n", parameter_count));
-- dump_data(10, params, parameter_count);
-+ if ((parameter_offset + parameter_count < parameter_offset) ||
-+ (parameter_offset + parameter_count < parameter_count))
-+ goto bad_param;
-+ if (smb_base(inbuf) + parameter_offset + parameter_count > inbuf + length)
-+ goto bad_param;
-+
-+ memcpy( params, smb_base(inbuf) + parameter_offset, parameter_count);
- }
- if(data) {
-- memcpy( data, smb_base(inbuf) + data_offset, data_count);
- DEBUG(10,("reply_nttrans: data_count = %d\n",data_count));
-- dump_data(10, data, data_count);
-+ if ((data_offset + data_count < data_offset) || (data_offset + data_count < data_count))
-+ goto bad_param;
-+ if (smb_base(inbuf) + data_offset + data_count > inbuf + length)
-+ goto bad_param;
-+
-+ memcpy( data, smb_base(inbuf) + data_offset, data_count);
-+
- }
-
- if(num_data_sofar < total_data_count || num_params_sofar < total_parameter_count) {
- /* We need to send an interim response then receive the rest
- of the parameter/data bytes */
- outsize = set_message(outbuf,0,0,True);
-- send_smb(Client,outbuf);
-+ if (!send_smb(Client,outbuf))
-+ exit_server("reply_nttrans: send_smb failed.");
-
- while( num_data_sofar < total_data_count || num_params_sofar < total_parameter_count) {
- BOOL ret;
--
-+ uint32 parameter_displacement;
-+ uint32 data_displacement;
-+
- ret = receive_next_smb(inbuf,bufsize,SMB_SECONDARY_WAIT);
--
-+
- if((ret && (CVAL(inbuf, smb_com) != SMBnttranss)) || !ret) {
-- outsize = set_message(outbuf,0,0,True);
-- if(ret) {
-- DEBUG(0,("reply_nttrans: Invalid secondary nttrans packet\n"));
-- } else {
-- DEBUG(0,("reply_nttrans: %s in getting secondary nttrans response.\n",
-- (smb_read_error == READ_ERROR) ? "error" : "timeout" ));
-+ outsize = set_message(outbuf,0,0,True);
-+ if(ret) {
-+ DEBUG(0,("reply_nttrans: Invalid secondary nttrans packet\n"));
-+ } else {
-+ DEBUG(0,("reply_nttrans: %s in getting secondary nttrans response.\n",
-+ (smb_read_error == READ_ERROR) ? "error" : "timeout" ));
- }
-- if(params)
-- free(params);
-- if(data)
-- free(data);
-- if(setup)
-- free(setup);
-- return(ERROR(ERRSRV,ERRerror));
-+ goto bad_param;
- }
-
- /* Revise total_params and total_data in case they have changed downwards */
-- total_parameter_count = IVAL(inbuf, smb_nts_TotalParameterCount);
-- total_data_count = IVAL(inbuf, smb_nts_TotalDataCount);
-- num_params_sofar += (parameter_count = IVAL(inbuf,smb_nts_ParameterCount));
-- num_data_sofar += ( data_count = IVAL(inbuf, smb_nts_DataCount));
-- if (num_params_sofar > total_parameter_count || num_data_sofar > total_data_count)
-- exit_server("reply_nttrans2: data overflow in secondary nttrans packet\n");
--
-- memcpy( &params[ IVAL(inbuf, smb_nts_ParameterDisplacement)],
-- smb_base(inbuf) + IVAL(inbuf, smb_nts_ParameterOffset), parameter_count);
-- memcpy( &data[IVAL(inbuf, smb_nts_DataDisplacement)],
-- smb_base(inbuf)+ IVAL(inbuf, smb_nts_DataOffset), data_count);
-+ if (IVAL(inbuf, smb_nts_TotalParameterCount) < total_parameter_count)
-+ total_parameter_count = IVAL(inbuf, smb_nts_TotalParameterCount);
-+ if (IVAL(inbuf, smb_nts_TotalDataCount) < total_data_count)
-+ total_data_count = IVAL(inbuf, smb_nts_TotalDataCount);
-+
-+ parameter_count = IVAL(inbuf,smb_nts_ParameterCount);
-+ parameter_offset = IVAL(inbuf, smb_nts_ParameterOffset);
-+ parameter_displacement = IVAL(inbuf, smb_nts_ParameterDisplacement);
-+ num_params_sofar += parameter_count;
-+
-+ data_count = IVAL(inbuf, smb_nts_DataCount);
-+ data_displacement = IVAL(inbuf, smb_nts_DataDisplacement);
-+ data_offset = IVAL(inbuf, smb_nts_DataOffset);
-+ num_data_sofar += data_count;
-+
-+ if (num_params_sofar > total_parameter_count || num_data_sofar > total_data_count) {
-+ DEBUG(0,("reply_nttrans2: data overflow in secondary nttrans packet"));
-+ goto bad_param;
-+ }
-+
-+ if (parameter_count) {
-+ if (parameter_displacement + parameter_count >= total_parameter_count)
-+ goto bad_param;
-+ if ((parameter_displacement + parameter_count < parameter_displacement) ||
-+ (parameter_displacement + parameter_count < parameter_count))
-+ goto bad_param;
-+ if (smb_base(inbuf) + parameter_offset + parameter_count >= inbuf + bufsize)
-+ goto bad_param;
-+ if (params + parameter_displacement < params)
-+ goto bad_param;
-+
-+ memcpy( &params[parameter_displacement], smb_base(inbuf) + parameter_offset, parameter_count);
-+ }
-+
-+ if (data_count) {
-+ if (data_displacement + data_count >= total_data_count)
-+ goto bad_param;
-+ if ((data_displacement + data_count < data_displacement) ||
-+ (data_displacement + data_count < data_count))
-+ goto bad_param;
-+ if (smb_base(inbuf) + data_offset + data_count >= inbuf + bufsize)
-+ goto bad_param;
-+ if (data + data_displacement < data)
-+ goto bad_param;
-+
-+ memcpy( &data[data_displacement], smb_base(inbuf)+ data_offset, data_count);
-+ }
- }
- }
-
-@@ -2714,4 +2765,10 @@
- return outsize; /* If a correct response was needed the call_nt_transact_xxxx
- calls have already sent it. If outsize != -1 then it is
- returning an error packet. */
-+ bad_param:
-+
-+ SAFE_FREE(params);
-+ SAFE_FREE(data);
-+ SAFE_FREE(setup);
-+ return ERROR(ERRDOS,ERRinvalidparam);
- }
-diff -ruN samba-2.0.10.orig/source/smbd/password.c samba-2.0.10/source/smbd/password.c
---- samba-2.0.10.orig/source/smbd/password.c 2006-03-06 22:25:08.000000000 +0100
-+++ samba-2.0.10/source/smbd/password.c 2006-03-06 22:25:53.000000000 +0100
-@@ -770,7 +770,7 @@
- if (!ok && lp_username(snum)) {
- char *auser;
- pstring user_list;
-- StrnCpy(user_list,lp_username(snum),sizeof(pstring));
-+ StrnCpy(user_list,lp_username(snum),sizeof(pstring)-1);
-
- pstring_sub(user_list,"%S",lp_servicename(snum));
-
-diff -ruN samba-2.0.10.orig/source/smbd/reply.c samba-2.0.10/source/smbd/reply.c
---- samba-2.0.10.orig/source/smbd/reply.c 2006-03-06 22:25:08.000000000 +0100
-+++ samba-2.0.10/source/smbd/reply.c 2006-03-06 22:25:53.000000000 +0100
-@@ -1413,6 +1413,9 @@
-
- for (i=numentries;(i<maxentries) && !finished;i++)
- {
-+ /* check to make sure we have room in the buffer */
-+ if ( ((PTR_DIFF(p, outbuf))+DIR_STRUCT_SIZE) > BUFFER_SIZE )
-+ break;
- finished =
- !get_dir_entry(conn,mask,dirtype,fname,&size,&mode,&date,check_descend);
- if (!finished)
-@@ -3122,6 +3125,9 @@
-
-
- for (i=first;i<first+num_to_get;i++) {
-+ /* check to make sure we have room in the buffer */
-+ if ( (PTR_DIFF(p, outbuf)+28) > BUFFER_SIZE )
-+ break;
- put_dos_date2(p,0,queue[i].time);
- CVAL(p,4) = (queue[i].status==LPQ_PRINTING?2:3);
- SSVAL(p,5,printjob_encode(SNUM(conn),
-diff -ruN samba-2.0.10.orig/source/smbd/trans2.c samba-2.0.10/source/smbd/trans2.c
---- samba-2.0.10.orig/source/smbd/trans2.c 2000-04-24 19:27:31.000000000 +0200
-+++ samba-2.0.10/source/smbd/trans2.c 2006-03-06 22:25:53.000000000 +0100
-@@ -201,7 +201,6 @@
- int16 open_ofun = SVAL(params,12);
- int32 open_size = IVAL(params,14);
- char *pname = &params[28];
-- int16 namelen = strlen(pname)+1;
-
- pstring fname;
- mode_t unixmode;
-@@ -213,7 +212,7 @@
- BOOL bad_path = False;
- files_struct *fsp;
-
-- StrnCpy(fname,pname,namelen);
-+ pstrcpy(fname,pname);
-
- DEBUG(3,("trans2open %s mode=%d attr=%d ofun=%d size=%d\n",
- fname,open_mode, open_attr, open_ofun, open_size));
-@@ -2185,7 +2184,7 @@
- unsigned int suwcnt = SVAL(inbuf, smb_suwcnt);
- unsigned int tran_call = SVAL(inbuf, smb_setup0);
- char *params = NULL, *data = NULL;
-- int num_params, num_params_sofar, num_data, num_data_sofar;
-+ unsigned int num_params, num_params_sofar, num_data, num_data_sofar;
-
- if(global_oplock_break && (tran_call == TRANSACT2_OPEN)) {
- /* Queue this open message as we are the process of an
-@@ -2203,8 +2202,9 @@
- /* All trans2 messages we handle have smb_sucnt == 1 - ensure this
- is so as a sanity check */
- if (suwcnt != 1) {
-- DEBUG(2,("Invalid smb_sucnt in trans2 call\n"));
-- return(ERROR(ERRSRV,ERRerror));
-+ DEBUG(2,("Invalid smb_sucnt in trans2 call(%u)\n",suwcnt));
-+ DEBUG(2,("Transaction is %d\n",tran_call));
-+ ERROR(ERRDOS,ERRinvalidparam);
- }
-
- /* Allocate the space for the maximum needed parameters and data */
-@@ -2215,11 +2215,9 @@
-
- if ((total_params && !params) || (total_data && !data)) {
- DEBUG(2,("Out of memory in reply_trans2\n"));
-- if(params)
-- free(params);
-- if(data)
-- free(data);
-- return(ERROR(ERRDOS,ERRnomem));
-+ SAFE_FREE(params);
-+ SAFE_FREE(data);
-+ return ERROR(ERRDOS,ERRnomem);
- }
-
- /* Copy the param and data bytes sent with this request into
-@@ -2230,20 +2228,37 @@
- if (num_params > total_params || num_data > total_data)
- exit_server("invalid params in reply_trans2");
-
-- if(params)
-- memcpy( params, smb_base(inbuf) + SVAL(inbuf, smb_psoff), num_params);
-- if(data)
-- memcpy( data, smb_base(inbuf) + SVAL(inbuf, smb_dsoff), num_data);
-+ if(params) {
-+ unsigned int psoff = SVAL(inbuf, smb_psoff);
-+ if ((psoff + num_params < psoff) || (psoff + num_params < num_params))
-+ goto bad_param;
-+ if (smb_base(inbuf) + psoff + num_params > inbuf + length)
-+ goto bad_param;
-+ memcpy( params, smb_base(inbuf) + psoff, num_params);
-+ }
-+ if(data) {
-+ unsigned int dsoff = SVAL(inbuf, smb_dsoff);
-+ if ((dsoff + num_data < dsoff) || (dsoff + num_data < num_data))
-+ goto bad_param;
-+ if (smb_base(inbuf) + dsoff + num_data > inbuf + length)
-+ goto bad_param;
-+ memcpy( data, smb_base(inbuf) + dsoff, num_data);
-+ }
-
- if(num_data_sofar < total_data || num_params_sofar < total_params) {
- /* We need to send an interim response then receive the rest
- of the parameter/data bytes */
- outsize = set_message(outbuf,0,0,True);
-- send_smb(Client,outbuf);
-+ if (!send_smb(Client,outbuf))
-+ exit_server("reply_trans2: send_smb failed.");
-
- while (num_data_sofar < total_data ||
- num_params_sofar < total_params) {
- BOOL ret;
-+ unsigned int param_disp;
-+ unsigned int param_off;
-+ unsigned int data_disp;
-+ unsigned int data_off;
-
- ret = receive_next_smb(inbuf,bufsize,SMB_SECONDARY_WAIT);
-
-@@ -2255,26 +2270,55 @@
- else
- DEBUG(0,("reply_trans2: %s in getting secondary trans2 response.\n",
- (smb_read_error == READ_ERROR) ? "error" : "timeout" ));
-- if(params)
-- free(params);
-- if(data)
-- free(data);
-- return(ERROR(ERRSRV,ERRerror));
-+ goto bad_param;
- }
-
- /* Revise total_params and total_data in case
- they have changed downwards */
-- total_params = SVAL(inbuf, smb_tpscnt);
-- total_data = SVAL(inbuf, smb_tdscnt);
-- num_params_sofar += (num_params = SVAL(inbuf,smb_spscnt));
-- num_data_sofar += ( num_data = SVAL(inbuf, smb_sdscnt));
-+ if (SVAL(inbuf, smb_tpscnt) < total_params)
-+ total_params = SVAL(inbuf, smb_tpscnt);
-+ if (SVAL(inbuf, smb_tdscnt) < total_data)
-+ total_data = SVAL(inbuf, smb_tdscnt);
-+
-+ num_params = SVAL(inbuf,smb_spscnt);
-+ param_off = SVAL(inbuf, smb_spsoff);
-+ param_disp = SVAL(inbuf, smb_spsdisp);
-+ num_params_sofar += num_params;
-+
-+ num_data = SVAL(inbuf, smb_sdscnt);
-+ data_off = SVAL(inbuf, smb_sdsoff);
-+ data_disp = SVAL(inbuf, smb_sdsdisp);
-+ num_data_sofar += num_data;
-+
- if (num_params_sofar > total_params || num_data_sofar > total_data)
-- exit_server("data overflow in trans2");
-+ goto bad_param;
-
-- memcpy( &params[ SVAL(inbuf, smb_spsdisp)],
-- smb_base(inbuf) + SVAL(inbuf, smb_spsoff), num_params);
-- memcpy( &data[SVAL(inbuf, smb_sdsdisp)],
-- smb_base(inbuf)+ SVAL(inbuf, smb_sdsoff), num_data);
-+ if (num_params) {
-+ if (param_disp + num_params >= total_params)
-+ goto bad_param;
-+ if ((param_disp + num_params < param_disp) ||
-+ (param_disp + num_params < num_params))
-+ goto bad_param;
-+ if (smb_base(inbuf) + param_off + num_params >= inbuf + bufsize)
-+ goto bad_param;
-+ if (params + param_disp < params)
-+ goto bad_param;
-+
-+ memcpy( &params[param_disp], smb_base(inbuf) + param_off, num_params);
-+ }
-+ if (num_data) {
-+ if (data_disp + num_data >= total_data)
-+ goto bad_param;
-+ if ((data_disp + num_data < data_disp) ||
-+ (data_disp + num_data < num_data))
-+ goto bad_param;
-+ if (smb_base(inbuf) + data_off + num_data >= inbuf + bufsize)
-+ goto bad_param;
-+ if (data + data_disp < data)
-+ goto bad_param;
-+
-+ memcpy( &data[data_disp], smb_base(inbuf) + data_off, num_data);
-+ }
- }
- }
-
-@@ -2367,4 +2411,10 @@
- return outsize; /* If a correct response was needed the
- call_trans2xxx calls have already sent
- it. If outsize != -1 then it is returning */
-+
-+ bad_param:
-+
-+ SAFE_FREE(params);
-+ SAFE_FREE(data);
-+ return (ERROR(ERRDOS,ERRinvalidparam));
- }
diff --git a/openwrt/package/samba/patches/250-writex.patch b/openwrt/package/samba/patches/250-writex.patch
deleted file mode 100644
index ed0495e92b..0000000000
--- a/openwrt/package/samba/patches/250-writex.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-diff -ruN samba-2.0.10.orig/source/include/smb.h samba-2.0.10/source/include/smb.h
---- samba-2.0.10.orig/source/include/smb.h 2006-03-06 22:25:53.000000000 +0100
-+++ samba-2.0.10/source/include/smb.h 2006-03-06 22:27:31.000000000 +0100
-@@ -24,8 +24,14 @@
- #ifndef _SMB_H
- #define _SMB_H
-
-+#if defined(LARGE_SMB_OFF_T)
-+#define BUFFER_SIZE (128*1024)
-+#else /* no large readwrite possible */
- #define BUFFER_SIZE (0xFFFF)
-+#endif
-+
- #define SAFETY_MARGIN 1024
-+#define LARGE_WRITEX_HDR_SIZE 65
-
- #define NMB_PORT 137
- #define DGRAM_PORT 138
-diff -ruN samba-2.0.10.orig/source/lib/util_sock.c samba-2.0.10/source/lib/util_sock.c
---- samba-2.0.10.orig/source/lib/util_sock.c 2000-03-16 23:59:18.000000000 +0100
-+++ samba-2.0.10/source/lib/util_sock.c 2006-03-06 22:27:31.000000000 +0100
-@@ -649,19 +649,21 @@
- memset(buffer,'\0',smb_size + 100);
-
- len = read_smb_length_return_keepalive(fd,buffer,timeout);
-- if (len < 0)
-- {
-+ if (len < 0) {
- DEBUG(10,("receive_smb: length < 0!\n"));
- return(False);
- }
-
-- if (len > BUFFER_SIZE) {
-+ /*
-+ * A WRITEX with CAP_LARGE_WRITEX can be 64k worth of data plus 65 bytes
-+ * of header. Don't print the error if this fits.... JRA.
-+ */
-+
-+ if (len > (BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE)) {
- DEBUG(0,("Invalid packet length! (%d bytes).\n",len));
- if (len > BUFFER_SIZE + (SAFETY_MARGIN/2))
-- {
- exit(1);
- }
-- }
-
- if(len > 0) {
- ret = read_socket_data(fd,buffer+4,len);
-diff -ruN samba-2.0.10.orig/source/smbd/oplock.c samba-2.0.10/source/smbd/oplock.c
---- samba-2.0.10.orig/source/smbd/oplock.c 2000-04-25 04:32:14.000000000 +0200
-+++ samba-2.0.10/source/smbd/oplock.c 2006-03-06 22:27:31.000000000 +0100
-@@ -887,13 +887,13 @@
- messages crossing on the wire.
- */
-
-- if((inbuf = (char *)malloc(BUFFER_SIZE + SAFETY_MARGIN))==NULL)
-+ if((inbuf = (char *)malloc(BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE + SAFETY_MARGIN))==NULL)
- {
- DEBUG(0,("oplock_break: malloc fail for input buffer.\n"));
- return False;
- }
-
-- if((outbuf = (char *)malloc(BUFFER_SIZE + SAFETY_MARGIN))==NULL)
-+ if((outbuf = (char *)malloc(BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE + SAFETY_MARGIN))==NULL)
- {
- DEBUG(0,("oplock_break: malloc fail for output buffer.\n"));
- free(inbuf);
-diff -ruN samba-2.0.10.orig/source/smbd/process.c samba-2.0.10/source/smbd/process.c
---- samba-2.0.10.orig/source/smbd/process.c 2006-03-06 22:25:28.000000000 +0100
-+++ samba-2.0.10/source/smbd/process.c 2006-03-06 22:27:31.000000000 +0100
-@@ -995,8 +995,8 @@
- time_t last_timeout_processing_time = time(NULL);
- unsigned int num_smbs = 0;
-
-- InBuffer = (char *)malloc(BUFFER_SIZE + SAFETY_MARGIN);
-- OutBuffer = (char *)malloc(BUFFER_SIZE + SAFETY_MARGIN);
-+ InBuffer = (char *)malloc(BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE + SAFETY_MARGIN);
-+ OutBuffer = (char *)malloc(BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE + SAFETY_MARGIN);
- if ((InBuffer == NULL) || (OutBuffer == NULL))
- return;
-
-@@ -1027,7 +1027,7 @@
- /* free up temporary memory */
- lp_talloc_free();
-
-- while(!receive_message_or_smb(InBuffer,BUFFER_SIZE,select_timeout,&got_smb))
-+ while(!receive_message_or_smb(InBuffer,BUFFER_SIZE+LARGE_WRITEX_HDR_SIZE,select_timeout,&got_smb))
- {
- if(!timeout_processing( deadtime, &select_timeout, &last_timeout_processing_time))
- return;
-diff -ruN samba-2.0.10.orig/source/smbd/reply.c samba-2.0.10/source/smbd/reply.c
---- samba-2.0.10.orig/source/smbd/reply.c 2006-03-06 22:25:53.000000000 +0100
-+++ samba-2.0.10/source/smbd/reply.c 2006-03-06 22:27:31.000000000 +0100
-@@ -2551,17 +2551,28 @@
- size_t numtowrite = SVAL(inbuf,smb_vwv10);
- BOOL write_through = BITSETW(inbuf+smb_vwv7,0);
- ssize_t nwritten = -1;
-- int smb_doff = SVAL(inbuf,smb_vwv11);
-+ unsigned int smb_doff = SVAL(inbuf,smb_vwv11);
-+ unsigned int smblen = smb_len(inbuf);
- char *data;
-+ BOOL large_writeX = ((CVAL(inbuf,smb_wct) == 14) && (smblen > 0xFFFF));
-
- /* If it's an IPC, pass off the pipe handler. */
-- if (IS_IPC(conn))
-+ if (IS_IPC(conn)) {
- return reply_pipe_write_and_X(inbuf,outbuf,length,bufsize);
-+ }
-
- CHECK_FSP(fsp,conn);
- CHECK_WRITE(fsp);
- CHECK_ERROR(fsp);
-
-+ /* Deal with possible LARGE_WRITEX */
-+ if (large_writeX)
-+ numtowrite |= ((((size_t)SVAL(inbuf,smb_vwv9)) & 1 )<<16);
-+
-+ if(smb_doff > smblen || (smb_doff + numtowrite > smblen)) {
-+ return(ERROR(ERRDOS,ERRbadmem));
-+ }
-+
- data = smb_base(inbuf) + smb_doff;
-
- if(CVAL(inbuf,smb_wct) == 14) {
-@@ -2586,8 +2597,9 @@
- #endif /* LARGE_SMB_OFF_T */
- }
-
-- if (is_locked(fsp,conn,numtowrite,startpos, F_WRLCK))
-+ if (is_locked(fsp,conn,(SMB_BIG_UINT)numtowrite,(SMB_BIG_UINT)startpos, WRITE_LOCK)) {
- return(ERROR(ERRDOS,ERRlock));
-+ }
-
- /* X/Open SMB protocol says that, unlike SMBwrite
- if the length is zero then NO truncation is
-@@ -2598,12 +2610,15 @@
- else
- nwritten = write_file(fsp,data,startpos,numtowrite);
-
-- if(((nwritten == 0) && (numtowrite != 0))||(nwritten < 0))
-+ if(((nwritten == 0) && (numtowrite != 0))||(nwritten < 0)) {
- return(UNIXERROR(ERRDOS,ERRnoaccess));
-+ }
-
- set_message(outbuf,6,0,True);
-
- SSVAL(outbuf,smb_vwv2,nwritten);
-+ if (large_writeX)
-+ SSVAL(outbuf,smb_vwv4,(nwritten>>16)&1);
-
- if (nwritten < (ssize_t)numtowrite) {
- CVAL(outbuf,smb_rcls) = ERRHRD;
diff --git a/openwrt/package/samba/patches/300-shared_lib_ldflags_fix.patch b/openwrt/package/samba/patches/300-shared_lib_ldflags_fix.patch
deleted file mode 100644
index 7428facc42..0000000000
--- a/openwrt/package/samba/patches/300-shared_lib_ldflags_fix.patch
+++ /dev/null
@@ -1,25 +0,0 @@
---- samba-2.0.10/source/Makefile.in.orig 2005-08-20 20:34:44.000000000 +0200
-+++ samba-2.0.10/source/Makefile.in 2005-08-20 20:36:27.000000000 +0200
-@@ -475,11 +475,11 @@
-
- bin/smbwrapper.@SHLIBEXT@: $(PICOBJS)
- @echo Linking shared library $@
-- @$(LD) @LDSHFLAGS@ -o $@ $(PICOBJS) $(LIBS)
-+ @$(LD) @LDSHFLAGS@ -o $@ $(PICOBJS) $(LDFLAGS) $(LIBS)
-
- bin/smbwrapper.32.@SHLIBEXT@: $(PICOBJS32)
- @echo Linking shared library $@
-- @$(LD) -32 @LDSHFLAGS@ -o $@ $(PICOBJS32) $(LIBS)
-+ @$(LD) -32 @LDSHFLAGS@ -o $@ $(PICOBJS32) $(LDFLAGS) $(LIBS)
-
- bin/smbsh: $(SMBSH_OBJ) bin/.dummy
- @echo Linking $@
-@@ -487,7 +487,7 @@
-
- bin/libsmb.@SHLIBEXT@: $(LIBSMB_PICOBJS) bin/.dummy
- @echo Linking shared library $@
-- @$(LD) @LDSHFLAGS@ -o $@ $(LIBSMB_PICOBJS) $(LIBS)
-+ @$(LD) @LDSHFLAGS@ -o $@ $(LIBSMB_PICOBJS) $(LDFLAGS) $(LIBS)
-
- install: installbin installman installscripts installcp installswat
-
diff --git a/openwrt/package/samba/patches/301-config_files_path.patch b/openwrt/package/samba/patches/301-config_files_path.patch
deleted file mode 100644
index 089d9f6ef5..0000000000
--- a/openwrt/package/samba/patches/301-config_files_path.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -ruN samba-2.0.10-old/source/Makefile.in samba-2.0.10-new/source/Makefile.in
---- samba-2.0.10-old/source/Makefile.in 2005-08-22 03:03:17.000000000 +0200
-+++ samba-2.0.10-new/source/Makefile.in 2005-08-22 03:08:23.000000000 +0200
-@@ -31,6 +31,8 @@
- MANDIR = @mandir@
- SAMBABOOK = @sambabook@
-
-+CONFIGDIR = @sysconfdir@
-+
- # The permissions to give the executables
- INSTALLPERMS = 0755
-
-@@ -39,9 +41,9 @@
- # or in smb.conf (see smb.conf(5))
- SMBLOGFILE = $(VARDIR)/smb
- NMBLOGFILE = $(VARDIR)/nmb
--CONFIGFILE = $(LIBDIR)/smb.conf
--LMHOSTSFILE = $(LIBDIR)/lmhosts
--DRIVERFILE = $(LIBDIR)/printers.def
-+CONFIGFILE = $(CONFIGDIR)/smb.conf
-+LMHOSTSFILE = $(CONFIGDIR)/lmhosts
-+DRIVERFILE = $(CONFIGDIR)/printers.def
- PASSWD_PROGRAM = /bin/passwd
- # This is where smbpasswd et al go
- PRIVATEDIR = @privatedir@
diff --git a/openwrt/package/sane-backends/Config.in b/openwrt/package/sane-backends/Config.in
deleted file mode 100644
index f927413d2e..0000000000
--- a/openwrt/package/sane-backends/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_SANE_BACKENDS
- prompt "sane-backends..................... Scanner Access Now Easy (backends)"
- tristate
- default m if CONFIG_DEVEL
- help
- SANE (Scanner Access Now Easy) is a universal scanner interface.
-
- http://www.sane-project.org
diff --git a/openwrt/package/sane-backends/Makefile b/openwrt/package/sane-backends/Makefile
deleted file mode 100644
index 31ac686939..0000000000
--- a/openwrt/package/sane-backends/Makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=sane-backends
-PKG_VERSION:=1.0.17
-PKG_RELEASE:=1
-PKG_MD5SUM:=b51c10da8a81a04e1bae88c9e6556df2
-
-PKG_SOURCE_URL:=ftp://ftp.sane-project.org/pub/sane/$(PKG_NAME)-$(PKG_VERSION)/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SANE_BACKENDS,sane-backends,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --disable-ipv6 \
- --disable-translations \
- --without-gphoto2 \
- --disable-debug \
- );
- touch $(PKG_BUILD_DIR)/.configured
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- touch $(PKG_BUILD_DIR)/.built
-
-$(IPKG_SANE_BACKENDS):
- install -d -m0755 $(IDIR_SANE_BACKENDS)/etc/sane.d
- $(CP) $(PKG_INSTALL_DIR)/etc/sane.d/*.conf $(IDIR_SANE_BACKENDS)/etc/sane.d/
- install -d -m0755 $(IDIR_SANE_BACKENDS)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/saned $(IDIR_SANE_BACKENDS)/usr/sbin/
- $(RSTRIP) $(IDIR_SANE_BACKENDS)
- $(IPKG_BUILD) $(IDIR_SANE_BACKENDS) $(PACKAGE_DIR)
diff --git a/openwrt/package/sane-backends/ipkg/sane-backends.conffiles b/openwrt/package/sane-backends/ipkg/sane-backends.conffiles
deleted file mode 100644
index a1a6a0b82f..0000000000
--- a/openwrt/package/sane-backends/ipkg/sane-backends.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/sane.d/saned.conf
diff --git a/openwrt/package/sane-backends/ipkg/sane-backends.control b/openwrt/package/sane-backends/ipkg/sane-backends.control
deleted file mode 100644
index e6f4be1954..0000000000
--- a/openwrt/package/sane-backends/ipkg/sane-backends.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: sane-backends
-Priority: optional
-Section: misc
-Description: Scanner access now easy
diff --git a/openwrt/package/sane-backends/patches/001-remove-unneeded.patch b/openwrt/package/sane-backends/patches/001-remove-unneeded.patch
deleted file mode 100644
index f398984d1e..0000000000
--- a/openwrt/package/sane-backends/patches/001-remove-unneeded.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur sane-backends-1.0.16/Makefile.in sane-backends-1.0.16.patched/Makefile.in
---- sane-backends-1.0.16/Makefile.in 2005-07-17 13:52:54.000000000 +0200
-+++ sane-backends-1.0.16.patched/Makefile.in 2005-12-17 00:28:38.144022500 +0100
-@@ -33,7 +33,7 @@
-
- @SET_MAKE@
-
--SUBDIRS = include lib sanei backend frontend tools doc po
-+SUBDIRS = include lib sanei backend frontend
-
- DISTFILES = AUTHORS COPYING ChangeLog ChangeLog-1.0.0 ChangeLog-1.0.1 \
- ChangeLog-1.0.2 ChangeLog-1.0.3 ChangeLog-1.0.4 ChangeLog-1.0.5 \
diff --git a/openwrt/package/scanlogd/Config.in b/openwrt/package/scanlogd/Config.in
deleted file mode 100644
index 024308edc5..0000000000
--- a/openwrt/package/scanlogd/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_SCANLOGD
- prompt "scanlogd.......................... a port scan detection tool"
- tristate
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBNET
- select BR2_PACKAGE_LIBNIDS
- default m if CONFIG_DEVEL
- help
- Scanlogd is a TCP port scan detection tool, originally designed
- to illustrate various attacks an IDS developer has to deal with.
- Thus, unlike some of the other port scan detection tools out there,
- scanlogd is designed to be totally safe to use.
-
- http://www.openwall.com/scanlogd
diff --git a/openwrt/package/scanlogd/Makefile b/openwrt/package/scanlogd/Makefile
deleted file mode 100644
index afde593995..0000000000
--- a/openwrt/package/scanlogd/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=scanlogd
-PKG_VERSION:=2.2.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=7b8187ea718ebe47f22805b921b909ab
-
-PKG_SOURCE_URL:=http://www.openwall.com/scanlogd/ \
- ftp://ftp.wiretapped.net/pub/openwall/ \
- http://distro.ibiblio.org/pub/linux/distributions/openwall/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SCANLOGD,scanlogd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- $(SED) "s,/var/empty,/tmp/.scanlogd," $(PKG_BUILD_DIR)/params.h
- $(SED) "s,#undef SCANLOGD_DEVICE,#define SCANLOGD_DEVICE \"all\"," $(PKG_BUILD_DIR)/params.h
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CC=$(TARGET_CC) LD=$(TARGET_CC) CFLAGS="-c $(TARGET_CFLAGS)" \
- LDFLAGS= \
- PCAP_H="-I$(STAGING_DIR)/usr/include" \
- NIDS_H="-I$(STAGING_DIR)/usr/include" \
- NIDS_L="-L$(STAGING_DIR)/usr/lib -lnids -lnet -lpcap" \
- libnids
- touch $@
-
-$(IPKG_SCANLOGD):
- install -d -m0755 $(IDIR_SCANLOGD)/etc/init.d
- install -m0755 ./files/scanlogd.init $(IDIR_SCANLOGD)/etc/init.d/S60scanlogd
- install -d -m0755 $(IDIR_SCANLOGD)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/$(PKG_NAME) $(IDIR_SCANLOGD)/usr/sbin/
- $(RSTRIP) $(IDIR_SCANLOGD)
- $(IPKG_BUILD) $(IDIR_SCANLOGD) $(PACKAGE_DIR)
diff --git a/openwrt/package/scanlogd/files/scanlogd.init b/openwrt/package/scanlogd/files/scanlogd.init
deleted file mode 100755
index 762d55e8cd..0000000000
--- a/openwrt/package/scanlogd/files/scanlogd.init
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-mkdir -p `grep "^scanlogd:" /etc/passwd | cut -d: -f6`
-/usr/sbin/scanlogd
diff --git a/openwrt/package/scanlogd/ipkg/scanlogd.control b/openwrt/package/scanlogd/ipkg/scanlogd.control
deleted file mode 100644
index 307a8dd570..0000000000
--- a/openwrt/package/scanlogd/ipkg/scanlogd.control
+++ /dev/null
@@ -1,9 +0,0 @@
-Package: scanlogd
-Priority: optional
-Section: net
-Version: [TBDL]
-Architecture: [TBDL]
-Maintainer: OpenWrt Developer <bugs@openwrt.org>
-Description: Port scan logger.
-Source: http://www.openwall.com/scanlogd/
-Depends: libpcap, libnet, libnids
diff --git a/openwrt/package/scanlogd/ipkg/scanlogd.postinst b/openwrt/package/scanlogd/ipkg/scanlogd.postinst
deleted file mode 100644
index ab720092c7..0000000000
--- a/openwrt/package/scanlogd/ipkg/scanlogd.postinst
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-name=scanlogd
-id=53
-
-# do not change below
-# check if we are on real system
-if [ -z "${IPKG_INSTROOT}" ]; then
- # create copies of passwd and group, if we use squashfs
- rootfs=`mount |awk '/root/ { print $5 }'`
- if [ "$rootfs" = "squashfs" ]; then
- if [ -h /etc/group ]; then
- rm /etc/group
- cp /rom/etc/group /etc/group
- fi
- if [ -h /etc/passwd ]; then
- rm /etc/passwd
- cp /rom/etc/passwd /etc/passwd
- fi
- fi
-fi
-
-echo ""
-if [ -z "$(grep ^\\${name}: ${IPKG_INSTROOT}/etc/group)" ]; then
- echo "adding group $name to /etc/group"
- echo "${name}:x:${id}:" >> ${IPKG_INSTROOT}/etc/group
-fi
-
-if [ -z "$(grep ^\\${name}: ${IPKG_INSTROOT}/etc/passwd)" ]; then
- echo "adding user $name to /etc/passwd"
- echo "${name}:x:${id}:${id}:${name}:/tmp/.${name}:/bin/false" >> ${IPKG_INSTROOT}/etc/passwd
-fi
-
diff --git a/openwrt/package/scdp/Config.in b/openwrt/package/scdp/Config.in
deleted file mode 100644
index 789a8bb8d3..0000000000
--- a/openwrt/package/scdp/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_SCDP
- prompt "scdp.............................. An utility to send CDP (Cisco Discovery Protocol) packets"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBNET
- help
- This program sends CDP (Cisco Discovery Protocol) packets out on
- selected interfaces and tells the connected switch (cisco only)
- where the host is connected.
-
- http://sourceforge.net/projects/scdp
-
diff --git a/openwrt/package/scdp/Makefile b/openwrt/package/scdp/Makefile
deleted file mode 100644
index c8909c6fef..0000000000
--- a/openwrt/package/scdp/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=scdp
-PKG_VERSION:=1.0b
-PKG_RELEASE:=1
-PKG_MD5SUM:=7eafaf5a422e37d04715613993ed5d95
-
-PKG_SOURCE_URL:=@SF/scdp
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SCDP,scdp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --with-gnu-ld \
- );
- touch $(PKG_BUILD_DIR)/.configured
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)/
- mkdir -p $(PKG_INSTALL_DIR)/
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR=$(PKG_INSTALL_DIR) \
- all install
- touch $@
-
-$(IPKG_SCDP):
- install -d -m0755 $(IDIR_SCDP)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/scdp $(IDIR_SCDP)/usr/bin/
- $(RSTRIP) $(IDIR_SCDP)
- $(IPKG_BUILD) $(IDIR_SCDP) $(PACKAGE_DIR)
diff --git a/openwrt/package/scdp/ipkg/scdp.control b/openwrt/package/scdp/ipkg/scdp.control
deleted file mode 100644
index 3cb61a0611..0000000000
--- a/openwrt/package/scdp/ipkg/scdp.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: scdp
-Priority: optional
-Section: net
-Depends: libnet
-Description: An utility to send CDP (Cisco Discovery Protocol) packets.
diff --git a/openwrt/package/screen/Config.in b/openwrt/package/screen/Config.in
deleted file mode 100644
index de25fe09b0..0000000000
--- a/openwrt/package/screen/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_SCREEN
- prompt "screen............................ Full-screen terminal window manager"
- tristate
- default m if CONFIG_DEVEL
- help
- Screen is a full-screen window manager that multiplexes a physical
- terminal between several processes, typically interactive shells.
-
- http://www.gnu.org/software/screen/
-
diff --git a/openwrt/package/screen/Makefile b/openwrt/package/screen/Makefile
deleted file mode 100644
index 7bc25482cf..0000000000
--- a/openwrt/package/screen/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=screen
-PKG_VERSION:=4.0.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=ed68ea9b43d9fba0972cb017a24940a1
-
-PKG_SOURCE_URL:=@GNU/screen
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SCREEN,screen,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- $(foreach flag,rename fchmod fchown strerror lstat _exit utimes vsnprintf getcwd setlocale strftime,ac_cv_func_$(flag)=yes ) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)
- touch $@
-
-$(IPKG_SCREEN):
- install -d -m0755 $(IDIR_SCREEN)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/screen $(IDIR_SCREEN)/usr/sbin/
- $(RSTRIP) $(IDIR_SCREEN)
- $(IPKG_BUILD) $(IDIR_SCREEN) $(PACKAGE_DIR)
diff --git a/openwrt/package/screen/ipkg/screen.control b/openwrt/package/screen/ipkg/screen.control
deleted file mode 100644
index cb19298a81..0000000000
--- a/openwrt/package/screen/ipkg/screen.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: screen
-Priority: optional
-Section: misc
-Depends: libncurses
-Description: A 'window manager' for the terminal session
diff --git a/openwrt/package/screen/patches/100-cross_compile_fix.patch b/openwrt/package/screen/patches/100-cross_compile_fix.patch
deleted file mode 100644
index a05459f1de..0000000000
--- a/openwrt/package/screen/patches/100-cross_compile_fix.patch
+++ /dev/null
@@ -1,509 +0,0 @@
-Binary files screen-4.0.2.old/.configure.swp and screen-4.0.2.dev/.configure.swp differ
-diff -urN screen-4.0.2.old/configure screen-4.0.2.dev/configure
---- screen-4.0.2.old/configure 2003-12-05 14:46:53.000000000 +0100
-+++ screen-4.0.2.dev/configure 2005-05-05 12:13:03.000000000 +0200
-@@ -124,7 +124,7 @@
- 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
- '')
-@@ -174,7 +174,7 @@
- ' >$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
-@@ -397,7 +397,7 @@
- # Reject names that are not valid shell variable names.
- 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" ;;
-
-@@ -406,7 +406,7 @@
- # Reject names that are not valid shell variable names.
- 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"`;;
-@@ -588,7 +588,7 @@
- # Reject names that are not valid shell variable names.
- 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"`;;
-@@ -601,7 +601,7 @@
- # Reject names that are not valid shell variable names.
- 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" ;;
-
-@@ -625,7 +625,7 @@
-
- -*) { echo "$as_me: error: unrecognized option: $ac_option
- Try \`$0 --help' for more information." >&2
-- { (exit 1); exit 1; }; }
-+ }
- ;;
-
- *=*)
-@@ -633,7 +633,7 @@
- # Reject names that are not valid shell variable names.
- 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'"
- export $ac_envvar ;;
-@@ -652,7 +652,7 @@
- if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { echo "$as_me: error: missing argument to $ac_option" >&2
-- { (exit 1); exit 1; }; }
-+ }
- fi
-
- # Be sure to have absolute paths.
-@@ -662,7 +662,7 @@
- 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
-
-@@ -674,7 +674,7 @@
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) ;;
- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-- { (exit 1); exit 1; }; };;
-+ };;
- esac
- done
-
-@@ -728,15 +728,15 @@
- 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
-@@ -1243,7 +1243,7 @@
- echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
- echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-- { (exit 1); exit 1; }; }
-+ }
- fi
-
- ac_ext=c
-@@ -1734,7 +1734,7 @@
- See \`config.log' for more details." >&5
- echo "$as_me: error: no acceptable C compiler found in \$PATH
- See \`config.log' for more details." >&2;}
-- { (exit 1); exit 1; }; }
-+ }
-
- # Provide some information about the compiler.
- echo "$as_me:$LINENO:" \
-@@ -1856,7 +1856,7 @@
- echo "$as_me: error: cannot run C compiled programs.
- If you meant to cross compile, use \`--host'.
- See \`config.log' for more details." >&2;}
-- { (exit 1); exit 1; }; }
-+ }
- fi
- fi
- fi
-@@ -1898,7 +1898,7 @@
- See \`config.log' for more details." >&5
- echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
- See \`config.log' for more details." >&2;}
-- { (exit 1); exit 1; }; }
-+ }
- fi
-
- rm -f conftest$ac_cv_exeext
-@@ -1950,7 +1950,7 @@
- See \`config.log' for more details." >&5
- echo "$as_me: error: cannot compute suffix of object files: cannot compile
- See \`config.log' for more details." >&2;}
-- { (exit 1); exit 1; }; }
-+ }
- fi
-
- rm -f conftest.$ac_cv_objext conftest.$ac_ext
-@@ -2514,7 +2514,7 @@
- See \`config.log' for more details." >&5
- echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
- See \`config.log' for more details." >&2;}
-- { (exit 1); exit 1; }; }
-+ }
- fi
-
- ac_ext=c
-@@ -2704,7 +2704,7 @@
- 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
- #line $LINENO "configure"
-@@ -2753,7 +2753,7 @@
- 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
- #line $LINENO "configure"
-@@ -2790,7 +2790,7 @@
-
- { { echo "$as_me:$LINENO: error: Can't run the compiler - sorry" >&5
- echo "$as_me: error: Can't run the compiler - sorry" >&2;}
-- { (exit 1); exit 1; }; }
-+ }
- fi
- rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
- fi
-@@ -2800,7 +2800,7 @@
- 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
- #line $LINENO "configure"
-@@ -2830,7 +2830,7 @@
- (exit $ac_status); }; }; then
- { { echo "$as_me:$LINENO: error: Your compiler does not set the exit status - sorry" >&5
- echo "$as_me: error: Your compiler does not set the exit status - sorry" >&2;}
-- { (exit 1); exit 1; }; }
-+ }
- else
- echo "$as_me: program exited with status $ac_status" >&5
- echo "$as_me: failed program was:" >&5
-@@ -2900,7 +2900,7 @@
- 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;}
-- { (exit 1); exit 1; }; }
-+ }
- fi
- ac_config_guess="$SHELL $ac_aux_dir/config.guess"
- ac_config_sub="$SHELL $ac_aux_dir/config.sub"
-@@ -4149,7 +4149,7 @@
-
- { { echo "$as_me:$LINENO: error: !!! no select - no screen" >&5
- echo "$as_me: error: !!! no select - no screen" >&2;}
-- { (exit 1); exit 1; }; }
-+ }
- fi
- rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-@@ -4163,7 +4163,7 @@
- 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
- #line $LINENO "configure"
-@@ -4272,7 +4272,7 @@
- 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
- #line $LINENO "configure"
-@@ -4365,7 +4365,7 @@
- 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
- #line $LINENO "configure"
-@@ -4460,7 +4460,7 @@
- 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
- #line $LINENO "configure"
-@@ -4562,7 +4562,7 @@
- else
- { { echo "$as_me:$LINENO: error: you have neither usable sockets nor usable pipes -> no screen" >&5
- echo "$as_me: error: you have neither usable sockets nor usable pipes -> no screen" >&2;}
-- { (exit 1); exit 1; }; }
-+ }
- fi
-
-
-@@ -4573,7 +4573,7 @@
- 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
- #line $LINENO "configure"
-@@ -4898,7 +4898,7 @@
-
- { { echo "$as_me:$LINENO: error: !!! no tgetent - no screen" >&5
- echo "$as_me: error: !!! no tgetent - no screen" >&2;}
-- { (exit 1); exit 1; }; }
-+ }
- fi
- rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- fi
-@@ -4915,7 +4915,7 @@
- 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
- #line $LINENO "configure"
-@@ -5359,7 +5356,7 @@
- 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
- #line $LINENO "configure"
-@@ -6206,7 +6203,7 @@
- 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
- #line $LINENO "configure"
-@@ -6482,7 +6479,7 @@
- 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
- #line $LINENO "configure"
-@@ -7004,7 +7001,7 @@
- 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
- #line $LINENO "configure"
-@@ -7056,7 +7053,7 @@
- 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
- #line $LINENO "configure"
-@@ -7110,7 +7107,7 @@
- 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
- #line $LINENO "configure"
-@@ -7951,7 +7948,7 @@
- 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
- #line $LINENO "configure"
-@@ -7982,7 +7979,7 @@
- ( exit $ac_status )
- { { echo "$as_me:$LINENO: error: Can't run the compiler - internal error. Sorry." >&5
- echo "$as_me: error: Can't run the compiler - internal error. Sorry." >&2;}
-- { (exit 1); exit 1; }; }
-+ }
- fi
- rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
- fi
-@@ -8251,7 +8248,7 @@
- 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
- '')
-@@ -8302,7 +8299,7 @@
- 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;}
-- { (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
-@@ -8494,7 +8491,7 @@
- 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 )
-@@ -8516,7 +8513,7 @@
- Try \`$0 --help' for more information." >&5
- 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" ;;
-
-@@ -8555,7 +8552,7 @@
- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
- *) { { 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
-
-@@ -8750,7 +8747,7 @@
- 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=.
-
-@@ -8816,7 +8813,7 @@
- # 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
-@@ -8829,7 +8826,7 @@
- # /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; }
-@@ -8907,7 +8904,7 @@
- # 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
-@@ -8920,7 +8917,7 @@
- # /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; }
-@@ -9073,7 +9070,7 @@
- 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
-diff -urN screen-4.0.2.old/pty.c screen-4.0.2.dev/pty.c
---- screen-4.0.2.old/pty.c 2003-09-08 16:26:18.000000000 +0200
-+++ screen-4.0.2.dev/pty.c 2005-05-05 12:32:20.000000000 +0200
-@@ -34,9 +34,9 @@
- #endif
-
- /* for solaris 2.1, Unixware (SVR4.2) and possibly others */
--#ifdef HAVE_SVR4_PTYS
--# include <sys/stropts.h>
--#endif
-+//#ifdef HAVE_SVR4_PTYS
-+//# include <sys/stropts.h>
-+//#endif
-
- #if defined(sun) && defined(LOCKPTY) && !defined(TIOCEXCL)
- # include <sys/ttold.h>
---- screen-4.0.2/configure.old 2005-05-24 18:49:30.000000000 +0200
-+++ screen-4.0.2/configure 2005-05-24 18:49:54.000000000 +0200
-@@ -6598,8 +6598,6 @@
- LIBS="$oldlibs"
- fi
- rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
--test -f /lib/libsec.a || test -f /usr/lib/libsec.a && LIBS="$LIBS -lsec"
--test -f /lib/libshadow.a || test -f /usr/lib/libshadow.a && LIBS="$LIBS -lshadow"
- oldlibs="$LIBS"
- LIBS="$LIBS -lsun"
- { echo "$as_me:$LINENO: checking IRIX sun library..." >&5
diff --git a/openwrt/package/sdk/Config.in b/openwrt/package/sdk/Config.in
deleted file mode 100644
index f70810ba02..0000000000
--- a/openwrt/package/sdk/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_SDK
- bool "OpenWrt SDK"
- default y if CONFIG_DEVEL
- help
- Build an OpenWrt SDK.
- This is essentially a stripped-down version of the buildroot
- with a precompiled toolchain. It can be used to develop and
- test packages for OpenWrt before including them in the buildroot
-
diff --git a/openwrt/package/sdk/Makefile b/openwrt/package/sdk/Makefile
deleted file mode 100644
index 3f62aec115..0000000000
--- a/openwrt/package/sdk/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_OS:=$(shell uname -s)
-PKG_CPU:=$(shell uname -m)
-
-PKG_RELEASE:=1
-SDK_NAME:=OpenWrt-SDK-$(PKG_OS)-$(PKG_CPU)-$(PKG_RELEASE)
-
-SDK_BUILD_DIR:=$(BUILD_DIR)/$(SDK_NAME)
-
-all: compile
-
-$(BIN_DIR)/$(SDK_NAME).tar.bz2:
- (cd $(STAGING_DIR); \
- rm -rf info man share; \
- cd usr; \
- rm -rf doc info man share; \
- )
- rm -rf $(SDK_BUILD_DIR)
- mkdir -p $(SDK_BUILD_DIR)/dl $(SDK_BUILD_DIR)/examples $(SDK_BUILD_DIR)/package
- $(CP) $(STAGING_DIR) $(SCRIPT_DIR) $(TOPDIR)/docs $(SDK_BUILD_DIR)/
- $(CP) $(TOPDIR)/package/strace $(TOPDIR)/package/iproute2 $(SDK_BUILD_DIR)/examples
- $(CP) $(TOPDIR)/rules.mk $(SDK_BUILD_DIR)/
- $(CP) ./files/Makefile.sdk $(SDK_BUILD_DIR)/Makefile
- $(CP) ./files/README.SDK $(SDK_BUILD_DIR)/
- $(CP) ./files/depend.mk $(SDK_BUILD_DIR)/package/
- $(CP) $(TOPDIR)/package/rules.mk $(SDK_BUILD_DIR)/package/
- egrep '^BR2_(ARCH|WGET|STAGING|JLEVEL|LARGEFILE|TARGET_OPT)' $(TOPDIR)/.config > $(SDK_BUILD_DIR)/.config
- find $(SDK_BUILD_DIR) -name .svn | xargs rm -rf
- find $(SDK_BUILD_DIR) -name CVS | xargs rm -rf
- (cd $(BUILD_DIR); \
- tar cfj $@ $(SDK_NAME); \
- )
-
-source:
-prepare:
-compile: $(BIN_DIR)/$(SDK_NAME).tar.bz2
-install:
-
-clean:
- rm -rf $(SDK_BUILD_DIR) $(BIN_DIR)/$(SDK_NAME).tar.bz2
diff --git a/openwrt/package/sdk/files/Makefile.sdk b/openwrt/package/sdk/files/Makefile.sdk
deleted file mode 100644
index 6d5f61ad11..0000000000
--- a/openwrt/package/sdk/files/Makefile.sdk
+++ /dev/null
@@ -1,42 +0,0 @@
-# OpenWrt SDK Makefile
-TOPDIR:=${shell pwd}
-export TOPDIR
-DEVELOPER:=1
-export DEVELOPER
-
-include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/depend.mk
-
-PACKAGES:=$(filter-out %.mk,$(shell ls $(TOPDIR)/package))
-PACKAGES_PREPARE:=$(foreach package,$(PACKAGES),$(package)-prepare)
-PACKAGES_COMPILE:=$(foreach package,$(PACKAGES),$(package)-compile)
-PACKAGES_CLEAN:=$(foreach package,$(PACKAGES),$(package)-clean)
-
-all: compile package_index
-compile: $(PACKAGES_COMPILE)
-clean: $(PACKAGES_CLEAN)
- rm -rf $(BUILD_DIR)
- rm -rf bin
-
-distclean: clean
- rm -rf $(DL_DIR)
-
-%-prepare: $(BUILD_DIR)
- @$(MAKE) -C package/$(patsubst %-prepare,%,$@) prepare
-
-%-compile: %-prepare
- @$(MAKE) -C package/$(patsubst %-compile,%,$@) compile
-
-%-clean:
- @$(MAKE) -C package/$(patsubst %-clean,%,$@) clean
-
-
-$(BUILD_DIR):
- mkdir -p $@
- mkdir -p $(DL_DIR)
-
-package_index:
- (cd $(PACKAGE_DIR); \
- $(STAGING_DIR)/usr/bin/ipkg-make-index . > Packages \
- )
-
diff --git a/openwrt/package/sdk/files/README.SDK b/openwrt/package/sdk/files/README.SDK
deleted file mode 100644
index 454e32b2fc..0000000000
--- a/openwrt/package/sdk/files/README.SDK
+++ /dev/null
@@ -1,7 +0,0 @@
-This is the OpenWrt SDK. It contains a stripped-down version of
-the buildroot. You can use it to test/develop packages without
-having to compile your own toolchain or any of the libraries
-included with OpenWrt.
-
-To use it, just put your buildroot-compatible package directory
-in the subdir 'package/' and run 'make' from this directory.
diff --git a/openwrt/package/sdk/files/depend.mk b/openwrt/package/sdk/files/depend.mk
deleted file mode 100644
index d7b844db55..0000000000
--- a/openwrt/package/sdk/files/depend.mk
+++ /dev/null
@@ -1,6 +0,0 @@
-# You can put your package dependencies in here
-# Example (make openvpn depend on openssl):
-# openvpn-compile: openssl-compile
-#
-# Note: This file is not present in the full buildroot. There you
-# have to put your package dependencies in buildroot/package/Makefile
diff --git a/openwrt/package/ser2net/Config.in b/openwrt/package/ser2net/Config.in
deleted file mode 100644
index b52c26bb68..0000000000
--- a/openwrt/package/ser2net/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_SER2NET
- prompt "ser2net........................... Serial port TCP/IP redirector"
- tristate
- default m if CONFIG_DEVEL
- help
- This is ser2net, a program for allowing network connections to serial
- ports. See the man page for information about using the program. Note
- that ser2net supports RFC 2217 (remote control of serial port parameters),
- but you must have a complient client.
-
diff --git a/openwrt/package/ser2net/Makefile b/openwrt/package/ser2net/Makefile
deleted file mode 100644
index 3651155ea1..0000000000
--- a/openwrt/package/ser2net/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ser2net
-PKG_VERSION:=2.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=5f83a3e8aec18331cb61069dccdfba47
-
-PKG_SOURCE_URL:=@SF/ser2net/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SER2NET,ser2net,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --sysconfdir=/etc \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_SER2NET):
- install -d -m0755 $(IDIR_SER2NET)/usr/sbin
- cp -fpR $(PKG_INSTALL_DIR)/usr/sbin/ser2net $(IDIR_SER2NET)/usr/sbin
- install -d -m0755 $(IDIR_SER2NET)/etc
- cp -fpR $(PKG_BUILD_DIR)/ser2net.conf $(IDIR_SER2NET)/etc
- $(RSTRIP) $(IDIR_SER2NET)
- $(IPKG_BUILD) $(IDIR_SER2NET) $(PACKAGE_DIR)
diff --git a/openwrt/package/ser2net/ipkg/ser2net.conffiles b/openwrt/package/ser2net/ipkg/ser2net.conffiles
deleted file mode 100644
index 16bb67f207..0000000000
--- a/openwrt/package/ser2net/ipkg/ser2net.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/ser2net.conf
diff --git a/openwrt/package/ser2net/ipkg/ser2net.control b/openwrt/package/ser2net/ipkg/ser2net.control
deleted file mode 100644
index 0b1b22ad43..0000000000
--- a/openwrt/package/ser2net/ipkg/ser2net.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ser2net
-Priority: optional
-Section: net
-Source: http://jaist.dl.sourceforge.net/sourceforge/ser2net/
-Description: a program for allowing network connections to serial ports
diff --git a/openwrt/package/serdisplib/Config.in b/openwrt/package/serdisplib/Config.in
deleted file mode 100644
index c5181a5c57..0000000000
--- a/openwrt/package/serdisplib/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_SERDISPLIB
- prompt "serdisplib........................ a library for controlling displays"
- tristate
- default m if CONFIG_DEVEL
- help
- serdisplib is a library to drive serial and parallel displays
- with built-in controllers.
-
- http://serdisplib.sourceforge.net/
-
diff --git a/openwrt/package/serdisplib/Makefile b/openwrt/package/serdisplib/Makefile
deleted file mode 100644
index f28b26913e..0000000000
--- a/openwrt/package/serdisplib/Makefile
+++ /dev/null
@@ -1,82 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=serdisplib
-PKG_VERSION:=1.96
-PKG_RELEASE:=1
-PKG_MD5SUM:=b074e02d8d63f34cba8ec45c23f63f78
-
-PKG_SOURCE_URL:=@SF/serdisplib
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SERDISPLIB,serdisplib,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_func_malloc_0_nonnull=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --with-gnu-ld \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) all
- touch $@
-
-$(IPKG_SERDISPLIB):
- install -d -m0755 $(IDIR_SERDISPLIB)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/lib/libserdisp.so.* $(IDIR_SERDISPLIB)/usr/lib
- $(RSTRIP) $(IDIR_SERDISPLIB)
- $(IPKG_BUILD) $(IDIR_SERDISPLIB) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libserdisp.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_BUILD_DIR)/include/serdisplib $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/lib/libserdisp.{a,so*} $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libserdisp.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/serdisplib \
- $(STAGING_DIR)/usr/lib/libserdisp.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/serdisplib/ipkg/serdisplib.control b/openwrt/package/serdisplib/ipkg/serdisplib.control
deleted file mode 100644
index 3fcddcc70a..0000000000
--- a/openwrt/package/serdisplib/ipkg/serdisplib.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: serdisplib
-Priority: optional
-Section: libs
-Description: A library for controlling displays
diff --git a/openwrt/package/serdisplib/patches/100-io.patch b/openwrt/package/serdisplib/patches/100-io.patch
deleted file mode 100644
index 5b78e10f2a..0000000000
--- a/openwrt/package/serdisplib/patches/100-io.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -ru serdisplib-1.96.orig/src/serdisp_connect.c serdisplib-1.96/src/serdisp_connect.c
---- serdisplib-1.96.orig/src/serdisp_connect.c 2005-10-07 20:40:50.000000000 +0200
-+++ serdisplib-1.96/src/serdisp_connect.c 2005-12-12 18:48:58.000000000 +0200
-@@ -60,6 +60,7 @@
- /* directIO only with linux and i386 */
- #if defined(__linux__) && (defined(__i386__) || defined(__x86_64__))
- #define __sd_linux_use_directIO__ 1
-+ #include <sys/io.h>
- #endif
-
-
-@@ -67,7 +68,6 @@
- #if defined(__linux__)
- #include <linux/ppdev.h>
- #include <linux/parport.h>
-- #include <sys/io.h>
- #include <stdlib.h>
- #define OUTB(_d, _p) outb( (_d), (_p) )
- #define INB(_p) inb( (_p) )
diff --git a/openwrt/package/serdisplib/patches/101-test_shared.patch b/openwrt/package/serdisplib/patches/101-test_shared.patch
deleted file mode 100644
index af0cd5d387..0000000000
--- a/openwrt/package/serdisplib/patches/101-test_shared.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -ru serdisplib-1.96.orig/src/Makefile.in serdisplib-1.96/src/Makefile.in
---- serdisplib-1.96.orig/src/Makefile.in 2005-10-19 01:12:42.000000000 +0200
-+++ serdisplib-1.96/src/Makefile.in 2005-12-12 19:18:12.000000000 +0200
-@@ -73,8 +73,8 @@
- $(CC) -fPIC -shared -o $(LIB_DIR)/$(LIB_SHARED) $(LIB_OBJECTS)
- cd $(LIB_DIR) && $(LN_S) -f $(LIB_SHARED) $(LIB_NAME).so
-
--testserdisp: $(LIB_DIR)/$(LIB_STATIC) $(OBJECTS)
-- $(CC) -o testserdisp $(OBJECTS) $(LIB_DIR)/$(LIB_STATIC)
-+testserdisp: $(LIB_DIR)/$(LIB_SHARED) $(OBJECTS)
-+ $(CC) -o testserdisp $(OBJECTS) $(LIB_DIR)/$(LIB_SHARED)
-
- clean:
- /bin/rm -f $(OBJECTS) $(LIB_OBJECTS) $(LIB_DIR)/*.a $(LIB_DIR)/*.so*
diff --git a/openwrt/package/setpwc/Config.in b/openwrt/package/setpwc/Config.in
deleted file mode 100644
index 19f32c641c..0000000000
--- a/openwrt/package/setpwc/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_SETPWC
- prompt "setpwc............................ Philips (and compatibles) WebCams (PWC) control utility"
- tristate
- default m if CONFIG_DEVEL
- help
- Philips (and compatibles) WebCams (PWC) control utility.
-
- http://www.vanheusden.com/setpwc/
-
diff --git a/openwrt/package/setpwc/Makefile b/openwrt/package/setpwc/Makefile
deleted file mode 100644
index dbd41c5bc7..0000000000
--- a/openwrt/package/setpwc/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=setpwc
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=a125d76f630c4aab940df5912f161965
-
-PKG_SOURCE_URL:=http://www.vanheusden.com/setpwc/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SETPWC,setpwc,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(TARGET_CC) $(TARGET_CFLAGS) -DVERSION=\"$(PKG_VERSION)\" -o $(PKG_BUILD_DIR)/setpwc $(PKG_BUILD_DIR)/setpwc.c
- touch $@
-
-$(IPKG_SETPWC):
- install -d -m0755 $(IDIR_SETPWC)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/setpwc $(IDIR_SETPWC)/usr/bin/
- $(RSTRIP) $(IDIR_SETPWC)
- $(IPKG_BUILD) $(IDIR_SETPWC) $(PACKAGE_DIR)
diff --git a/openwrt/package/setpwc/ipkg/setpwc.control b/openwrt/package/setpwc/ipkg/setpwc.control
deleted file mode 100644
index 1d7299a8d5..0000000000
--- a/openwrt/package/setpwc/ipkg/setpwc.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: setpwc
-Priority: optional
-Section: admin
-Description: Philips (and compatibles) WebCams (PWC) control utility
diff --git a/openwrt/package/setserial/Config.in b/openwrt/package/setserial/Config.in
deleted file mode 100644
index e13502a97e..0000000000
--- a/openwrt/package/setserial/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_SETSERIAL
- prompt "setserial......................... Serial port configuration utility"
- tristate
- default m if CONFIG_DEVEL
- help
- setserial is a program designed to set and/or report the
- configuration information associated with a serial port. This
- information includes what I/O port and IRQ a particular
- serial port is using, and whether or not the break key should
- be interpreted as the Secure Attention Key, and so on.
-
- http://setserial.sourceforge.net/
-
diff --git a/openwrt/package/setserial/Makefile b/openwrt/package/setserial/Makefile
deleted file mode 100644
index 5c3565a2f3..0000000000
--- a/openwrt/package/setserial/Makefile
+++ /dev/null
@@ -1,64 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=setserial
-PKG_VERSION:=2.17
-PKG_RELEASE:=1
-PKG_MD5SUM:=c4867d72c41564318e0107745eb7a0f2
-
-PKG_SOURCE_URL:=@SF/setserial
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SETSERIAL,setserial,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- all
- touch $@
-
-$(IPKG_SETSERIAL):
- install -d -m0755 $(IDIR_SETSERIAL)/etc/init.d
- install -m0755 ./files/serial.init $(IDIR_SETSERIAL)/etc/init.d/S15serial
- install -d -m0755 $(IDIR_SETSERIAL)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/setserial $(IDIR_SETSERIAL)/usr/sbin/
- $(RSTRIP) $(IDIR_SETSERIAL)
- $(IPKG_BUILD) $(IDIR_SETSERIAL) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- clean
- rm -f $(PKG_BUILD_DIR)/.built
-
diff --git a/openwrt/package/setserial/files/serial.init b/openwrt/package/setserial/files/serial.init
deleted file mode 100644
index ffd729e1e7..0000000000
--- a/openwrt/package/setserial/files/serial.init
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-/usr/sbin/setserial /dev/tts/1 irq 3
diff --git a/openwrt/package/setserial/ipkg/setserial.control b/openwrt/package/setserial/ipkg/setserial.control
deleted file mode 100644
index 9a0860b585..0000000000
--- a/openwrt/package/setserial/ipkg/setserial.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: setserial
-Priority: optional
-Section: console
-Description: configuration utility for serial ports
diff --git a/openwrt/package/shat/Config.in b/openwrt/package/shat/Config.in
deleted file mode 100644
index 50b226a32d..0000000000
--- a/openwrt/package/shat/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_SHAT
- prompt "shat.............................. Source Hardware Address Translation"
- tristate
- default m if CONFIG_DEVEL
- help
- A tool which allows hosts with arbitrary IP configuration
- to connect to the internet over a SHAT gateway.
-
- http://www.teddy-net.com/cvs/Maxina/128gw/service/arpcatch/shat/
-
diff --git a/openwrt/package/shat/Makefile b/openwrt/package/shat/Makefile
deleted file mode 100644
index dac308cd4d..0000000000
--- a/openwrt/package/shat/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=shat
-PKG_VERSION:=0.9.7
-PKG_RELEASE:=1
-PKG_MD5SUM:= da06846f35838b14d1513523dad84d24
-
-PKG_SOURCE_URL:=http://world.maxina.de/src/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SHAT,shat,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)/src \
- CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld \
- CFLAGS="$(TARGET_CFLAGS) -Wall -I$(PKG_BUILD_DIR)/include/linux/include -I$(PKG_BUILD_DIR)/include -DVERSION=\\\"$(PKG_VERSION)\\\" -DDROP_NETBIOS"
- touch $@
-
-$(IPKG_SHAT):
- install -d -m0755 $(IDIR_SHAT)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/src/shatd $(IDIR_SHAT)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/src/shatc $(IDIR_SHAT)/usr/sbin/
- $(RSTRIP) $(IDIR_SHAT)
- $(IPKG_BUILD) $(IDIR_SHAT) $(PACKAGE_DIR)
diff --git a/openwrt/package/shat/ipkg/shat.control b/openwrt/package/shat/ipkg/shat.control
deleted file mode 100644
index 8143c73a66..0000000000
--- a/openwrt/package/shat/ipkg/shat.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: shat
-Priority: optional
-Section: net
-Description: Source Hardware Address Translation - a tool for "nomadic routing"
diff --git a/openwrt/package/shfs/Config.in b/openwrt/package/shfs/Config.in
deleted file mode 100644
index b7c7cfa859..0000000000
--- a/openwrt/package/shfs/Config.in
+++ /dev/null
@@ -1,32 +0,0 @@
-config BR2_COMPILE_SHFS
- tristate
- default n
- depends BR2_PACKAGE_SHFS_UTILS
-
-config BR2_PACKAGE_SHFS_UTILS
- prompt "shfs-utils........................ ShFS mount/umount utilities"
- tristate
- select BR2_COMPILE_SHFS
- select BR2_PACKAGE_KMOD_SHFS
- default m if CONFIG_DEVEL
- help
- ShFS is a simple and easy to use Linux kernel module which
- allows you to mount remote filesystems using a plain shell
- (SSH) connection. When using ShFS, you can access all remote
- files just like the local ones, only the access is governed
- through the transport security of SSH.
-
- ShFS supports some nice features:
-
- * file cache for access speedup
- * perl and shell code for the remote (server) side
- * could preserve uid/gid (root connection)
- * number of remote host platforms (Linux, Solaris, Cygwin, ...)
- * Linux kernel 2.4.10+ and 2.6
- * arbitrary command used for connection (instead of SSH)
- * persistent connection (reconnect after SSH dies)
-
- http://shfs.sourceforge.net/
-
- This package contains the shfs mount/umount utilities.
-
diff --git a/openwrt/package/shfs/Makefile b/openwrt/package/shfs/Makefile
deleted file mode 100644
index b1509a7c4a..0000000000
--- a/openwrt/package/shfs/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=shfs
-PKG_VERSION:=0.35
-PKG_RELEASE:=2
-PKG_MD5SUM:=016f49d71bc32eee2b5d11fc1600cfbe
-
-PKG_SOURCE_URL:=@SF/shfs
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SHFS_UTILS,shfs-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- OFLAGS="$(TARGET_CFLAGS)" \
- CC="$(TARGET_CC)" \
- LINKER="$(TARGET_CC)" \
- KERNEL_SOURCES="$(LINUX_DIR)" \
- ROOT="$(PKG_INSTALL_DIR)" \
- utils utils-install
- touch $@
-
-$(IPKG_SHFS_UTILS):
- install -m0755 -d $(IDIR_SHFS_UTILS)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/shfs{,u}mount $(IDIR_SHFS_UTILS)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/mount.shfs $(IDIR_SHFS_UTILS)/usr/sbin/
- $(RSTRIP) $(IDIR_SHFS_UTILS)
- $(IPKG_BUILD) $(IDIR_SHFS_UTILS) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/shfs/ipkg/shfs-utils.control b/openwrt/package/shfs/ipkg/shfs-utils.control
deleted file mode 100644
index 869a5d699a..0000000000
--- a/openwrt/package/shfs/ipkg/shfs-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: shfs-utils
-Priority: optional
-Section: net
-Description: SHell FileSystem Linux mount/umount utilities
-Depends: kmod-shfs
diff --git a/openwrt/package/shfs/patches/101-kmod-build.patch b/openwrt/package/shfs/patches/101-kmod-build.patch
deleted file mode 100644
index 635900472d..0000000000
--- a/openwrt/package/shfs/patches/101-kmod-build.patch
+++ /dev/null
@@ -1,103 +0,0 @@
---- shfs-0.35-orig/shfs/Linux-2.4/Makefile 2004-06-01 15:16:19.000000000 +0200
-+++ shfs-0.35-2/shfs/Linux-2.4/Makefile 2005-04-09 02:34:35.000000000 +0200
-@@ -1,3 +1,17 @@
-+#
-+# the original Makefile was trashed and replaced by this one
-+# The main reason is that loadable modules should be built with
-+# the same compile flags the kernel was built with, so we'd better
-+# let the kernel tree build the module for us, like that :
-+#
-+# make -C $(KERNEL_DIR) SUBDIRS="$(shell pwd)" modules
-+# make -C $(KERNEL_DIR) SUBDIRS="$(shell pwd)" modules_install
-+#
-+#
-+# $(TOPDIR)/lib/string.o is needed at link time because the memchr function
-+# is not exported on mips (insmod: unresolved symbol memchr)
-+#
-+
- ifndef KERNEL
- KERNEL=$(shell uname -r)
- endif
-@@ -10,67 +24,30 @@
- KERNEL_SOURCES=${MODULESDIR}/build
- endif
-
--ifeq (${MODVERSIONS},detect)
-- ifeq ($(shell test -e ${KERNEL_SOURCES}/include/linux/modversions.h; echo $$?),0)
-- MODVERSIONS=yes
-- endif
--endif
--
--ifeq (${MODVERSIONS},yes)
--MVER=-DMODVERSIONS -DEXPORT_SYMTAB
--endif
--
--LINVER=linux-${KERNEL}
--
--ALL_TARGETS := shfs.o
--
--SEARCHDIRS := -I- -I. -I${KERNEL_SOURCES}/include #-I/usr/src/linux/include/
-+all: all-y
-
--CC := gcc
--CFLAGS = -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -Wall ${SEARCHDIRS} -DMODULE ${MVER} -D__KERNEL__ -DLINUX
--LINKER := ld
--LDFLAGS = -r
--LOADLIBES :=
-+O_TARGET := shfs.o
-
--all: ${ALL_TARGETS}
-+shfs-objs := dcache.o dir.o fcache.o file.o inode.o ioctl.o proc.o shell.o symlink.o
-
--%.o: %.c $(wildcard *.h)
-- ${CC} ${CFLAGS} -c $< -o $@
-+obj-y := $(shfs-objs)
-+obj-m := $(O_TARGET)
-
--shfs.o: dcache.o dir.o fcache.o file.o inode.o ioctl.o proc.o shell.o symlink.o
-- ${LINKER} ${LDFLAGS} -o $@ ${filter-out %.a %.so, $^} ${LOADLIBES}
--
--tidy:
-- ${RM} core dcache.o dir.o fcache.o file.o inode.o ioctl.o proc.o shell.o symlink.o
--
--clean: tidy patch-clean
-- ${RM} shfs.o
-+-include $(TOPDIR)/Rules.make
-
-+all-y:
-+ make -C ${KERNEL_SOURCES} TOPDIR="${KERNEL_SOURCES}" SUBDIRS="$(shell pwd)" modules
-+
- install: shfs.o
- rm -f ${MODULESDIR}/kernel/fs/shfs/shfs.o
- install -m644 -b -D shfs.o ${MODULESDIR}/kernel/fs/shfs/shfs.o
-- if [ -x /sbin/depmod -a "${ROOT}" = "/" ]; then /sbin/depmod -aq; fi
-
- uninstall:
- rm -rf ${MODULESDIR}/kernel/fs/shfs
-- if [ -x /sbin/depmod -a "${ROOT}" = "/" ]; then /sbin/depmod -aq; fi
-
--patch:
-- rm -rf ${LINVER} ${LINVER}.orig; mkdir ${LINVER};
-- for i in Documentation fs/shfs include/linux; do \
-- mkdir -p ${LINVER}/$$i; \
-- done
-- cp ${KERNEL_SOURCES}/Documentation/Configure.help ${LINVER}/Documentation
-- cp ${KERNEL_SOURCES}/fs/{Makefile,Config.in} ${LINVER}/fs
-- cp -r ${LINVER} ${LINVER}.orig
-- cp ../../Changelog *.c shfs_debug.h proc.h ${LINVER}/fs/shfs/
-- cp shfs.h shfs_fs* ${LINVER}/include/linux/
-- (cd ${LINVER}; patch -p1 <../kernel-config.diff)
-- find . -type f -name "*.orig" -print | xargs rm -f
-- diff -urN ${LINVER}.orig ${LINVER} >${LINVER}.diff; true
--
--patch-clean:
-- rm -rf ${LINVER} ${LINVER}.orig;
-- rm -f ${LINVER}.diff
--
--.PHONY : all tidy clean install uninstall patch patch-clean
-+clean:
-+ rm -f core *.o *.a *.s
-+
-+shfs.o: $(shfs-objs)
-+ $(LD) -r -o $@ $(shfs-objs) $(TOPDIR)/lib/string.o
-+
diff --git a/openwrt/package/shfs/patches/102-utils-build-fixes.patch b/openwrt/package/shfs/patches/102-utils-build-fixes.patch
deleted file mode 100644
index affce43570..0000000000
--- a/openwrt/package/shfs/patches/102-utils-build-fixes.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- shfs-0.35-orig/shfsmount/Makefile 2004-06-01 15:16:19.000000000 +0200
-+++ shfs-0.35-2/shfsmount/Makefile 2005-04-09 01:27:22.000000000 +0200
-@@ -2,15 +2,16 @@
- SHFS_VERSION=unknown
- endif
-
--SHFSMOUNT := /usr/bin/shfsmount
--SHFSUMOUNT := /usr/bin/shfsumount
-+SHFSMOUNT := /usr/sbin/shfsmount
-+SHFSUMOUNT := /usr/sbin/shfsumount
-
- ALL_TARGETS := shfsmount shfsumount
-
- SEARCHDIRS := -I- -I. -I../shfs/Linux-2.4/
-
- CC := gcc
--CFLAGS = -g -Wall ${SEARCHDIRS} -DSHFS_VERSION=\"${SHFS_VERSION}\"
-+OFLAGS = -g
-+CFLAGS = $(OFLAGS) -Wall ${SEARCHDIRS} -DSHFS_VERSION=\"${SHFS_VERSION}\"
-
- LINKER := gcc
- LDFLAGS =
-@@ -40,12 +41,12 @@
-
-
- install: shfsmount shfsumount
-- install -m755 -b -D shfsmount ${ROOT}${SHFSMOUNT}
-- install -m755 -b -D shfsumount ${ROOT}${SHFSUMOUNT}
-- if [ ! -d ${ROOT}/sbin ]; then mkdir ${ROOT}/sbin; fi
-- ln -fs ${SHFSMOUNT} ${ROOT}/sbin/mount.shfs
-+ install -m755 -D shfsmount ${ROOT}${SHFSMOUNT}
-+ install -m755 -D shfsumount ${ROOT}${SHFSUMOUNT}
-+ if [ ! -d ${ROOT}/usr/sbin ]; then mkdir ${ROOT}/usr/sbin; fi
-+ ln -fs ${SHFSMOUNT} ${ROOT}/usr/sbin/mount.shfs
-
- uninstall:
-- rm -f ${ROOT}${SHFSMOUNT} ${ROOT}${SHFSUMOUNT} ${ROOT}/sbin/mount.shfs
-+ rm -f ${ROOT}${SHFSMOUNT} ${ROOT}${SHFSUMOUNT} ${ROOT}/usr/sbin/mount.shfs
-
- .PHONY : all tidy clean install uninstall
diff --git a/openwrt/package/sipp/Config.in b/openwrt/package/sipp/Config.in
deleted file mode 100644
index 1792b1d2bd..0000000000
--- a/openwrt/package/sipp/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_SIPP
- prompt "sipp.............................. test tool / traffic generator for the SIP protocol"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_UCLIBCXX
- select BR2_PACKAGE_LIBPTHREAD
- select BR2_PACKAGE_LIBNCURSES
- help
- SIPp is a free Open Source test tool / traffic generator for the SIP protocol.
- It includes a few basic SipStone user agent scenarios (UAC and UAS) and
- establishes and releases multiple calls with the INVITE and BYE methods.
-
- http://sipp.sourceforge.net
diff --git a/openwrt/package/sipp/Makefile b/openwrt/package/sipp/Makefile
deleted file mode 100644
index 544d2efac1..0000000000
--- a/openwrt/package/sipp/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=sipp
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=8866e9af0d3bc29e91ebb6eab89a7f1f
-
-PKG_SOURCE_URL:=@SF/sipp
-PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SIPP,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- CC_linux=$(TARGET_CC) \
- CPP_linux=$(TARGET_CC) \
- CCLINK_linux=$(TARGET_CC) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS_linux="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -fno-builtin -nostdinc++" \
- LFLAGS_linux="-nodefaultlibs -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-luClibc++ -lc -lm -lgcc -lpthread -ldl -lncurses" \
- STAGING_DIR=$(STAGING_DIR) \
- all
- touch $@
-
-$(IPKG_SIPP):
- mkdir -p $(IDIR_SIPP)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME) $(IDIR_SIPP)/usr/sbin/
- $(STRIP) $(IDIR_SIPP)/usr/sbin/*
- $(IPKG_BUILD) $(IDIR_SIPP) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/sipp/ipkg/sipp.control b/openwrt/package/sipp/ipkg/sipp.control
deleted file mode 100644
index 3e1b257906..0000000000
--- a/openwrt/package/sipp/ipkg/sipp.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: sipp
-Section: net
-Priority: optional
-Description: traffic generator for the SIP protocol
-Depends: uclibc++, libpthread, libncurses
diff --git a/openwrt/package/siproxd/Config.in b/openwrt/package/siproxd/Config.in
deleted file mode 100644
index 2d48badcbc..0000000000
--- a/openwrt/package/siproxd/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_SIPROXD
- prompt "siproxd........................... SIP (Session Initiation Protocol) proxy"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBOSIP2
- help
- A SIP (Session Initiation Protocol) proxy
-
- http://siproxd.sourceforge.net/
-
- Depends: libosip2
-
diff --git a/openwrt/package/siproxd/Makefile b/openwrt/package/siproxd/Makefile
deleted file mode 100644
index 5b3e1a5642..0000000000
--- a/openwrt/package/siproxd/Makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=siproxd
-PKG_VERSION:=0.5.12
-PKG_RELEASE:=1
-PKG_MD5SUM:=2fa02bd6f83070593bfc2d383ce614fa
-
-PKG_SOURCE_URL:=@SF/siproxd
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SIPROXD,siproxd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_SIPROXD):
- install -d -m0755 $(IDIR_SIPROXD)/etc
- $(CP) $(PKG_INSTALL_DIR)/etc/siproxd.conf.example $(IDIR_SIPROXD)/etc/siproxd.conf
- $(CP) $(PKG_INSTALL_DIR)/etc/siproxd_passwd.cfg $(IDIR_SIPROXD)/etc/
- install -d -m0755 $(IDIR_SIPROXD)/etc/init.d
- install -m0755 files/siproxd.init $(IDIR_SIPROXD)/etc/init.d/siproxd
- install -d -m0755 $(IDIR_SIPROXD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/siproxd $(IDIR_SIPROXD)/usr/sbin/
- $(RSTRIP) $(IDIR_SIPROXD)
- $(IPKG_BUILD) $(IDIR_SIPROXD) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/siproxd/files/siproxd.init b/openwrt/package/siproxd/files/siproxd.init
deleted file mode 100644
index f8739d43f0..0000000000
--- a/openwrt/package/siproxd/files/siproxd.init
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-BIN=siproxd
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- mkdir -p $RUN_D
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-exit $?
diff --git a/openwrt/package/siproxd/ipkg/siproxd.conffiles b/openwrt/package/siproxd/ipkg/siproxd.conffiles
deleted file mode 100644
index abb4ba5a13..0000000000
--- a/openwrt/package/siproxd/ipkg/siproxd.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/siproxd.conf
-/etc/siproxd_passwd.cfg
diff --git a/openwrt/package/siproxd/ipkg/siproxd.control b/openwrt/package/siproxd/ipkg/siproxd.control
deleted file mode 100644
index 96f73e21ce..0000000000
--- a/openwrt/package/siproxd/ipkg/siproxd.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: siproxd
-Priority: optional
-Section: net
-Description: a SIP (Session Initiation Protocol) proxy
-Depends: libosip2, libpthread
diff --git a/openwrt/package/sipsak/Config.in b/openwrt/package/sipsak/Config.in
deleted file mode 100644
index dd4976cf28..0000000000
--- a/openwrt/package/sipsak/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_SIPSAK
- prompt "sipsak............................ SIP (Session Initiation Protocol) stress and diagnostics utility"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBOPENSSL
- help
- A SIP (Session Initiation Protocol) stress and diagnostics utility
-
- http://www.sipsak.org/
-
- Depends: openssl
-
diff --git a/openwrt/package/sipsak/Makefile b/openwrt/package/sipsak/Makefile
deleted file mode 100644
index ae9b1b0aa3..0000000000
--- a/openwrt/package/sipsak/Makefile
+++ /dev/null
@@ -1,67 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=sipsak
-PKG_VERSION:=0.9.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=c4eb8e282902e75f4f040f09ea9d99d5
-
-PKG_SOURCE_URL:=http://download.berlios.de/sipsak/ \
- http://ftp.iptel.org/pub/sipsak/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SIPSAK,sipsak,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_func_malloc_0_nonnull=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --disable-gnutls \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_SIPSAK):
- install -d -m0755 $(IDIR_SIPSAK)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/sipsak $(IDIR_SIPSAK)/usr/bin/
- $(RSTRIP) $(IDIR_SIPSAK)
- $(IPKG_BUILD) $(IDIR_SIPSAK) $(PACKAGE_DIR)
diff --git a/openwrt/package/sipsak/ipkg/sipsak.control b/openwrt/package/sipsak/ipkg/sipsak.control
deleted file mode 100644
index 790629f78e..0000000000
--- a/openwrt/package/sipsak/ipkg/sipsak.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: sipsak
-Priority: optional
-Section: net
-Depends: libopenssl
-Description: a SIP (Session Initiation Protocol) stress and diagnostics utility
diff --git a/openwrt/package/slurm/Config.in b/openwrt/package/slurm/Config.in
deleted file mode 100644
index caf5e03328..0000000000
--- a/openwrt/package/slurm/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_PACKAGE_SLURM
- prompt "slurm............................. A realtime network interface monitor"
- tristate
- default m if CONFIG_DEVEL
- help
- A realtime network interface monitor with the following features:
-
- * realtime traffic statistics divided into incoming and outgoing
- * optional combined view
- * can monitor any kind of network interface
- * shows detailed statistics about the interface.
- * it's themeable
-
- http://www.wormulon.net/projects/slurm
-
diff --git a/openwrt/package/slurm/Makefile b/openwrt/package/slurm/Makefile
deleted file mode 100644
index 91467adfb8..0000000000
--- a/openwrt/package/slurm/Makefile
+++ /dev/null
@@ -1,73 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=slurm
-PKG_VERSION:=0.3.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=e68d09202b835c644f7f6b7f070f29a2
-
-PKG_SOURCE_URL:=http://www.wormulon.net/files/code/slurm/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SLURM,slurm,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- touch configure.in; \
- touch aclocal.m4; \
- touch Makefile.in; \
- touch config.h.in; \
- touch configure; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-lncurses" \
- ac_cv_func_malloc_0_nonnull=yes \
- ac_cv_lib_ncurses_use_default_colors=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_SLURM):
- install -d -m0755 $(IDIR_SLURM)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/slurm $(IDIR_SLURM)/usr/bin/
- $(RSTRIP) $(IDIR_SLURM)
- $(IPKG_BUILD) $(IDIR_SLURM) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/slurm/ipkg/slurm.control b/openwrt/package/slurm/ipkg/slurm.control
deleted file mode 100644
index 7f83d77b1c..0000000000
--- a/openwrt/package/slurm/ipkg/slurm.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: slurm
-Priority: standard
-Section: net
-Depends: libncurses
-Description: Realtime network interface monitor
-
diff --git a/openwrt/package/slurm/patches/no_host_ncurses.patch b/openwrt/package/slurm/patches/no_host_ncurses.patch
deleted file mode 100644
index ce97478d6b..0000000000
--- a/openwrt/package/slurm/patches/no_host_ncurses.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-diff -ruN slurm-0.3.3-old/configure slurm-0.3.3-new/configure
---- slurm-0.3.3-old/configure 2004-09-28 16:34:56.000000000 +0200
-+++ slurm-0.3.3-new/configure 2005-11-06 22:08:53.000000000 +0100
-@@ -4762,35 +4762,35 @@
- _ACEOF
-
-
--for cursespath in /usr/include/ncurses.h /usr/local/include/ncurses.h /usr/local/include/ncurses/ncurses.h /opt/include/ncurses.h /opt/include/curses.h /usr/include/curses.h /usr/local/include/curses.h /dev/null
--do
-- test -f "${cursespath}" && break
--done
--case ${cursespath} in
-- /usr/include/*)
-- CFLAGS="$CFLAGS -I/usr/include"
-- LDFLAGS=""
-- ;;
-- /usr/local/include/ncurses/*)
-- CFLAGS="${CFLAGS} -I/usr/local/include/ncurses"
-- LDFLAGS="-L/usr/local/lib"
-- SOLLDFLAGS="-R/usr/local/lib"
-- ;;
-- /usr/local/include/*)
-- CFLAGS="${CFLAGS} -I/usr/local/include"
-- LDFLAGS="-L/usr/local/lib"
-- SOLLDFLAGS="-R/usr/local/lib"
-- ;;
-- /opt/include/*)
-- CFLAGS="${CFLAGS} -I/opt/include"
-- LDFLAGS="-L/opt/lib"
-- SOLLDFLAGS="-R/opt/lib"
-- ;;
--esac
-+#for cursespath in /usr/include/ncurses.h /usr/local/include/ncurses.h /usr/local/include/ncurses/ncurses.h /opt/include/ncurses.h /opt/include/curses.h /usr/include/curses.h /usr/local/include/curses.h /dev/null
-+#do
-+# test -f "${cursespath}" && break
-+#done
-+#case ${cursespath} in
-+# /usr/include/*)
-+# CFLAGS="$CFLAGS -I/usr/include"
-+# LDFLAGS=""
-+# ;;
-+# /usr/local/include/ncurses/*)
-+# CFLAGS="${CFLAGS} -I/usr/local/include/ncurses"
-+# LDFLAGS="-L/usr/local/lib"
-+# SOLLDFLAGS="-R/usr/local/lib"
-+# ;;
-+# /usr/local/include/*)
-+# CFLAGS="${CFLAGS} -I/usr/local/include"
-+# LDFLAGS="-L/usr/local/lib"
-+# SOLLDFLAGS="-R/usr/local/lib"
-+# ;;
-+# /opt/include/*)
-+# CFLAGS="${CFLAGS} -I/opt/include"
-+# LDFLAGS="-L/opt/lib"
-+# SOLLDFLAGS="-R/opt/lib"
-+# ;;
-+#esac
- # add Slowlaris -R and libraries to LDFLAGS
--if test ${OSTYPE} = "solaris" ; then
-- LDFLAGS="${LDFLAGS} ${SOLLDFLAGS} -lnsl -lsocket -lkstat"
--fi
-+#if test ${OSTYPE} = "solaris" ; then
-+# LDFLAGS="${LDFLAGS} ${SOLLDFLAGS} -lnsl -lsocket -lkstat"
-+#fi
-
- echo "$as_me:$LINENO: checking for vanilla_coke in -lfridge" >&5
- echo $ECHO_N "checking for vanilla_coke in -lfridge... $ECHO_C" >&6
diff --git a/openwrt/package/snort-wireless/Config.in b/openwrt/package/snort-wireless/Config.in
deleted file mode 100644
index 059b4b1ebc..0000000000
--- a/openwrt/package/snort-wireless/Config.in
+++ /dev/null
@@ -1,89 +0,0 @@
-menu "snort-wireless.................... Ligthweight Wireless Network Intrusion Detection System (NIDS)"
-
-config BR2_COMPILE_SNORT_WIRELESS
- tristate
- default n
- depends BR2_PACKAGE_SNORT_WIRELESS_BASIC || BR2_PACKAGE_SNORT_WIRELESS_MYSQL || BR2_PACKAGE_SNORT_WIRELESS_PGSQL || BR2_PACKAGE_SNORT_WIRELESS_CUSTOM
-
-choice
- prompt "snort-wireless.................... Ligthweight Wireless Network Intrusion Detection System (NIDS)"
- tristate
- optional
- help
-
- A ligthweight Wireless Network Intrusion Detection System (NIDS)
-
- http://www.snort-wireless.org/
-
- Depends:
- - libmysqlclient (for MySQL database logging support)
- - libnet
- - libpcap
- - libpcre
- - libpq (for PostgreSQL database logging support)
-
-
- config BR2_PACKAGE_SNORT_WIRELESS_BASIC
- prompt "snort-wireless.................. without database support"
- tristate
- select BR2_COMPILE_SNORT_WIRELESS
- select BR2_PACKAGE_LIBNET
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPCRE
-
- config BR2_PACKAGE_SNORT_WIRELESS_MYSQL
- prompt "snort-wireless-mysql............ with MySQL database support"
- tristate
- select BR2_COMPILE_SNORT_WIRELESS
- select BR2_PACKAGE_LIBNET
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPCRE
- select BR2_PACKAGE_LIBMYSQLCLIENT
-
- config BR2_PACKAGE_SNORT_WIRELESS_PGSQL
- prompt "snort-wireless-pgsql............ with PostgreSQL database support"
- tristate
- select BR2_COMPILE_SNORT_WIRELESS
- select BR2_PACKAGE_LIBNET
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPCRE
- select BR2_PACKAGE_LIBPQ
-
- config BR2_PACKAGE_SNORT_WIRELESS_CUSTOM
- prompt "snort-wireless-custom........... customized to your needs"
- tristate
- select BR2_COMPILE_SNORT_WIRELESS
- select BR2_PACKAGE_LIBNET
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPCRE
-
- config BR2_PACKAGE_SNORT_WIRELESS_ENABLE_DEBUG
- prompt "enable debug (enable debugging options, useful for bugreports)"
- bool
- default n
- depends BR2_PACKAGE_SNORT_WIRELESS_CUSTOM
-
- config BR2_PACKAGE_SNORT_WIRELESS_ENABLE_INLINE
- prompt "enable inline mode (read packets from iptables instead of libpcap)"
- bool
- default n
- depends BR2_PACKAGE_SNORT_WIRELESS_CUSTOM
- select BR2_PACKAGE_IPTABLES
-
- config BR2_PACKAGE_SNORT_WIRELESS_WITH_MYSQL
- prompt "with MySQL database support"
- bool
- default n
- depends BR2_PACKAGE_SNORT_WIRELESS_CUSTOM
- select BR2_PACKAGE_LIBMYSQLCLIENT
-
- config BR2_PACKAGE_SNORT_WIRELESS_WITH_PGSQL
- prompt "with PostgreSQL database support"
- bool
- default n
- depends BR2_PACKAGE_SNORT_WIRELESS_CUSTOM
- select BR2_PACKAGE_LIBPQ
-
-endchoice
-
-endmenu
diff --git a/openwrt/package/snort-wireless/Makefile b/openwrt/package/snort-wireless/Makefile
deleted file mode 100644
index ebb9a3a661..0000000000
--- a/openwrt/package/snort-wireless/Makefile
+++ /dev/null
@@ -1,155 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=snort-wireless
-PKG_VERSION:=2.4.3-alpha04
-PKG_RELEASE:=1
-PKG_MD5SUM:=1aa699ae279bf7a1140cf6cca02f9999
-
-PKG_SOURCE_URL:=http://www.snort-wireless.org/files/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-PKG_CONFIGURE_OPTS := \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/sbin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib/locate \
- --localstatedir=/var/lib \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --enable-flexresp \
- --with-libnet-includes="$(STAGING_DIR)/usr/include" \
- --with-libnet-libraries="$(STAGING_DIR)/usr/lib" \
- --with-libpcap-includes="$(STAGING_DIR)/usr/include" \
- --with-libpcap-libraries="$(STAGING_DIR)/usr/lib" \
- --with-libpcre-includes="$(STAGING_DIR)/usr/include" \
- --with-libpcre-libraries="$(STAGING_DIR)/usr/lib" \
-
-SNORT_WIRELESS_BASIC_CONFIGURE_OPTS := \
- --without-mysql \
- --without-postgresql \
-
-SNORT_WIRELESS_MYSQL_CONFIGURE_OPTS := \
- --with-mysql=$(STAGING_DIR)/usr \
- --without-postgresql \
-
-SNORT_WIRELESS_PGSQL_CONFIGURE_OPTS := \
- --without-mysql \
- --with-postgresql=$(STAGING_DIR)/usr \
-
-SNORT_WIRELESS_CUSTOM_CONFIGURE_OPTS := \
-
-ifeq ($(BR2_PACKAGE_SNORT_WIRELESS_ENABLE_DEBUG),y)
-SNORT_WIRELESS_CUSTOM_CONFIGURE_OPTS += --enable-debug
-else
-SNORT_WIRELESS_CUSTOM_CONFIGURE_OPTS += --disable-debug
-endif
-
-ifeq ($(BR2_PACKAGE_SNORT_WIRELESS_ENABLE_INLINE),y)
-SNORT_WIRELESS_CUSTOM_CONFIGURE_OPTS += --enable-inline
-SNORT_WIRELESS_CUSTOM_CONFIGURE_OPTS += --with-libipq-includes="$(STAGING_DIR)/include/libipq"
-SNORT_WIRELESS_CUSTOM_CONFIGURE_OPTS += --with-libipq-libraries="$(STAGING_DIR)/lib"
-else
-SNORT_WIRELESS_CUSTOM_CONFIGURE_OPTS += --disable-inline
-endif
-
-ifeq ($(BR2_PACKAGE_SNORT_WIRELESS_WITH_MYSQL),y)
-SNORT_WIRELESS_CUSTOM_CONFIGURE_OPTS += --with-mysql="$(STAGING_DIR)/usr"
-else
-SNORT_WIRELESS_CUSTOM_CONFIGURE_OPTS += --without-mysql
-endif
-
-ifeq ($(BR2_PACKAGE_SNORT_WIRELESS_WITH_PGSQL),y)
-SNORT_WIRELESS_CUSTOM_CONFIGURE_OPTS += --with-postgresql="$(STAGING_DIR)/usr"
-else
-SNORT_WIRELESS_CUSTOM_CONFIGURE_OPTS += --without-postgresql
-endif
-
-define PKG_build
-
-ifneq ($(BR2_PACKAGE_$(1)),)
-BUILD_TARGETS += $(PKG_BUILD_DIR)/$(2)
-endif
-
-$(PKG_BUILD_DIR)/$(2): $(PKG_BUILD_DIR)/.prepared
- touch -r $(PKG_BUILD_DIR)/Makefile.am $(PKG_BUILD_DIR)/configure.in
- touch -r $(PKG_BUILD_DIR)/Makefile.in $(PKG_BUILD_DIR)/configure
- -$(MAKE) -C $(PKG_BUILD_DIR) distclean
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include/mysql" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/usr/lib/mysql" \
- ./configure \
- $(PKG_CONFIGURE_OPTS) \
- $$($(1)_CONFIGURE_OPTS) \
- );
- $(MAKE) -C $(PKG_BUILD_DIR)
- mv $(PKG_BUILD_DIR)/src/snort $(PKG_BUILD_DIR)/$(2)
-
-$$(IPKG_$(1)): $(PKG_BUILD_DIR)/.installed $(PKG_BUILD_DIR)/$(2)
- install -m0644 ./ipkg/snort-wireless.conffiles $$(IDIR_$(1))/CONTROL/conffiles
- install -d -m0755 $$(IDIR_$(1))/etc/default
- install -m0644 ./files/snort-wireless.default $$(IDIR_$(1))/etc/default/snort
- install -d -m0755 $$(IDIR_$(1))/etc/init.d
- install -m0755 ./files/snort-wireless.init $$(IDIR_$(1))/etc/init.d/snort
- install -d -m0755 $$(IDIR_$(1))/etc/snort
- install -m0644 $(PKG_BUILD_DIR)/etc/snort.conf $$(IDIR_$(1))/etc/snort/
- install -m0644 $(PKG_BUILD_DIR)/etc/classification.config $$(IDIR_$(1))/etc/snort/
- install -m0644 $(PKG_BUILD_DIR)/etc/gen-msg.map $$(IDIR_$(1))/etc/snort/
- install -m0644 $(PKG_BUILD_DIR)/etc/reference.config $$(IDIR_$(1))/etc/snort/
- install -m0644 $(PKG_BUILD_DIR)/etc/sid-msg.map $$(IDIR_$(1))/etc/snort/
- install -m0644 $(PKG_BUILD_DIR)/etc/threshold.conf $$(IDIR_$(1))/etc/snort/
- install -m0644 $(PKG_BUILD_DIR)/etc/unicode.map $$(IDIR_$(1))/etc/snort/
- install -d -m0755 $$(IDIR_$(1))/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/$(2) $$(IDIR_$(1))/usr/sbin/snort
- $(RSTRIP) $$(IDIR_$(1))
- mkdir -p $(PACKAGE_DIR)
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-$(eval $(call PKG_template,SNORT_WIRELESS_BASIC,snort-wireless,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SNORT_WIRELESS_MYSQL,snort-wireless-mysql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SNORT_WIRELESS_PGSQL,snort-wireless-pgsql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SNORT_WIRELESS_CUSTOM,snort-wireless-custom,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_build,SNORT_WIRELESS_BASIC,snort-wireless,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_build,SNORT_WIRELESS_MYSQL,snort-wireless-mysql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_build,SNORT_WIRELESS_PGSQL,snort-wireless-pgsql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_build,SNORT_WIRELESS_CUSTOM,snort-wireless-custom,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(BUILD_TARGETS)
- touch $@
-
-$(PKG_BUILD_DIR)/.installed: $(PKG_BUILD_DIR)/.built
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- touch $@
-
diff --git a/openwrt/package/snort-wireless/files/snort-wireless.default b/openwrt/package/snort-wireless/files/snort-wireless.default
deleted file mode 100644
index 796a893b02..0000000000
--- a/openwrt/package/snort-wireless/files/snort-wireless.default
+++ /dev/null
@@ -1,2 +0,0 @@
-INTERFACE="vlan1" # WAN
-OPTIONS="-i $INTERFACE -c /etc/snort/snort.conf -D -N -q -s"
diff --git a/openwrt/package/snort-wireless/files/snort-wireless.init b/openwrt/package/snort-wireless/files/snort-wireless.init
deleted file mode 100644
index 8c019c41d4..0000000000
--- a/openwrt/package/snort-wireless/files/snort-wireless.init
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/snort
-LOG_D=/var/log/snort
-RUN_D=/var/run
-[ -f $DEFAULT ] && . $DEFAULT
-PID_F=$RUN_D/snort_$INTERFACE.pid
-
-case $1 in
- start)
- [ -d $LOG_D ] || mkdir -p $LOG_D
- [ -d $RUN_D ] || mkdir -p $RUN_D
- snort $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/snort-wireless/ipkg/snort-wireless-custom.control b/openwrt/package/snort-wireless/ipkg/snort-wireless-custom.control
deleted file mode 100644
index 121b837e6b..0000000000
--- a/openwrt/package/snort-wireless/ipkg/snort-wireless-custom.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: snort-wireless-custom
-Priority: optional
-Section: net
-Description: a flexible Wireless Network Intrusion Detection System (NIDS),
- built with custom options
-Depends: libnet, libpcap, libpcre
diff --git a/openwrt/package/snort-wireless/ipkg/snort-wireless-mysql.control b/openwrt/package/snort-wireless/ipkg/snort-wireless-mysql.control
deleted file mode 100644
index 30104168dd..0000000000
--- a/openwrt/package/snort-wireless/ipkg/snort-wireless-mysql.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: snort-wireless-mysql
-Priority: optional
-Section: net
-Description: a flexible Wireless Network Intrusion Detection System (NIDS),
- built with MySQL database logging support
-Depends: libnet, libpcap, libpcre, libmysqlclient
diff --git a/openwrt/package/snort-wireless/ipkg/snort-wireless-pgsql.control b/openwrt/package/snort-wireless/ipkg/snort-wireless-pgsql.control
deleted file mode 100644
index ffb9d5b22c..0000000000
--- a/openwrt/package/snort-wireless/ipkg/snort-wireless-pgsql.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: snort-wireless-pgsql
-Priority: optional
-Section: net
-Description: a flexible Wireless Network Intrusion Detection System (NIDS),
- built with PostgreSQL database logging support
-Depends: libnet, libpcap, libpcre, libpq
diff --git a/openwrt/package/snort-wireless/ipkg/snort-wireless.conffiles b/openwrt/package/snort-wireless/ipkg/snort-wireless.conffiles
deleted file mode 100644
index c387672486..0000000000
--- a/openwrt/package/snort-wireless/ipkg/snort-wireless.conffiles
+++ /dev/null
@@ -1,3 +0,0 @@
-/etc/default/snort
-/etc/snort/snort.conf
-/etc/snort/threshold.conf
diff --git a/openwrt/package/snort-wireless/ipkg/snort-wireless.control b/openwrt/package/snort-wireless/ipkg/snort-wireless.control
deleted file mode 100644
index 6a5cb26b33..0000000000
--- a/openwrt/package/snort-wireless/ipkg/snort-wireless.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: snort-wireless
-Priority: optional
-Section: net
-Description: a flexible Wireless Network Intrusion Detection System (NIDS),
- built without database logging support
-Depends: libnet, libpcap, libpcre
diff --git a/openwrt/package/snort-wireless/patches/500-no-config-search.patch b/openwrt/package/snort-wireless/patches/500-no-config-search.patch
deleted file mode 100644
index d674ba66aa..0000000000
--- a/openwrt/package/snort-wireless/patches/500-no-config-search.patch
+++ /dev/null
@@ -1,35 +0,0 @@
---- snort-2.3.2-orig/src/snort.c 2005-01-13 21:36:20.000000000 +0100
-+++ snort-2.3.2-1/src/snort.c 2005-04-04 20:03:34.000000000 +0200
-@@ -1949,7 +1949,7 @@
- {
- struct stat st;
- int i;
-- char *conf_files[]={"/etc/snort.conf", "./snort.conf", NULL};
-+ char *conf_files[]={"/etc/snort/snort.conf", NULL};
- char *fname = NULL;
- char *home_dir = NULL;
- char *rval = NULL;
-@@ -1970,23 +1970,6 @@
- i++;
- }
-
-- /* search for .snortrc in the HOMEDIR */
-- if(!rval)
-- {
-- if((home_dir = getenv("HOME")))
-- {
-- /* create the full path */
-- fname = (char *)malloc(strlen(home_dir) + strlen("/.snortrc") + 1);
-- if(!fname)
-- FatalError("Out of memory searching for config file\n");
--
-- if(stat(fname, &st) != -1)
-- rval = fname;
-- else
-- free(fname);
-- }
-- }
--
- return rval;
- }
-
diff --git a/openwrt/package/snort-wireless/patches/750-lightweight-config.patch b/openwrt/package/snort-wireless/patches/750-lightweight-config.patch
deleted file mode 100644
index daea3be5ac..0000000000
--- a/openwrt/package/snort-wireless/patches/750-lightweight-config.patch
+++ /dev/null
@@ -1,178 +0,0 @@
---- snort-wireless-2.4.3-alpha04/etc/snort.conf 2005-10-21 09:41:01.000000000 +0200
-+++ /Users/florian/telechargements/snort.conf 2005-10-30 13:20:17.000000000 +0100
-@@ -6,6 +6,7 @@
- #
- ###################################################
- # This file contains a sample snort configuration.
-+# Most preprocessors and rules were disabled to save memory.
- # You can take the following steps to create your own custom configuration:
- #
- # 1) Set the variables for your network
-@@ -42,10 +43,10 @@
- # or you can specify the variable to be any IP address
- # like this:
-
--var HOME_NET any
-+var HOME_NET 192.168.1.0/24
-
- # Set up the external network addresses as well. A good start may be "any"
--var EXTERNAL_NET any
-+var EXTERNAL_NET !$HOME_NET
-
- # Configure your wireless AP lists. This allows snort to look for attacks
- # against your wireless network, such as rogue access points or adhoc wireless
-@@ -137,7 +138,7 @@
- # Path to your rules files (this can be a relative path)
- # Note for Windows users: You are advised to make this an absolute path,
- # such as: c:\snort\rules
--var RULE_PATH ../rules
-+var RULE_PATH /etc/snort/rules
-
- # Configure the snort decoder
- # ============================
-@@ -413,11 +414,11 @@
- # lots of options available here. See doc/README.http_inspect.
- # unicode.map should be wherever your snort.conf lives, or given
- # a full path to where snort can find it.
--preprocessor http_inspect: global \
-- iis_unicode_map unicode.map 1252
-+#preprocessor http_inspect: global \
-+# iis_unicode_map unicode.map 1252
-
--preprocessor http_inspect_server: server default \
-- profile all ports { 80 8080 8180 } oversize_dir_length 500
-+#preprocessor http_inspect_server: server default \
-+# profile all ports { 80 8080 8180 } oversize_dir_length 500
-
- #
- # Example unique server configuration
-@@ -451,7 +452,7 @@
- # no_alert_incomplete - don't alert when a single segment
- # exceeds the current packet size
-
--preprocessor rpc_decode: 111 32771
-+#preprocessor rpc_decode: 111 32771
-
- # bo: Back Orifice detector
- # -------------------------
-@@ -474,7 +475,7 @@
- # 3 Back Orifice Server Traffic Detected
- # 4 Back Orifice Snort Buffer Attack
-
--preprocessor bo
-+#preprocessor bo
-
- # telnet_decode: Telnet negotiation string normalizer
- # ---------------------------------------------------
-@@ -486,7 +487,7 @@
- # This preprocessor requires no arguments.
- # Portscan uses Generator ID 109 and does not generate any SID currently.
-
--preprocessor telnet_decode
-+#preprocessor telnet_decode
-
- # sfPortscan
- # ----------
-@@ -537,9 +538,9 @@
- # are still watched as scanner hosts. The 'ignore_scanned' option is
- # used to tune alerts from very active hosts such as syslog servers, etc.
- #
--preprocessor sfportscan: proto { all } \
-- memcap { 10000000 } \
-- sense_level { low }
-+#preprocessor sfportscan: proto { all } \
-+# memcap { 10000000 } \
-+# sense_level { low }
-
- # arpspoof
- #----------------------------------------
-@@ -814,41 +815,41 @@
- include $RULE_PATH/bad-traffic.rules
- include $RULE_PATH/exploit.rules
- include $RULE_PATH/scan.rules
--include $RULE_PATH/finger.rules
--include $RULE_PATH/ftp.rules
--include $RULE_PATH/telnet.rules
--include $RULE_PATH/rpc.rules
--include $RULE_PATH/rservices.rules
--include $RULE_PATH/dos.rules
--include $RULE_PATH/ddos.rules
--include $RULE_PATH/dns.rules
--include $RULE_PATH/tftp.rules
--
--include $RULE_PATH/web-cgi.rules
--include $RULE_PATH/web-coldfusion.rules
--include $RULE_PATH/web-iis.rules
--include $RULE_PATH/web-frontpage.rules
--include $RULE_PATH/web-misc.rules
--include $RULE_PATH/web-client.rules
--include $RULE_PATH/web-php.rules
--
--include $RULE_PATH/sql.rules
--include $RULE_PATH/x11.rules
--include $RULE_PATH/icmp.rules
--include $RULE_PATH/netbios.rules
--include $RULE_PATH/misc.rules
--include $RULE_PATH/attack-responses.rules
--include $RULE_PATH/oracle.rules
--include $RULE_PATH/mysql.rules
--include $RULE_PATH/snmp.rules
--
--include $RULE_PATH/smtp.rules
--include $RULE_PATH/imap.rules
--include $RULE_PATH/pop2.rules
--include $RULE_PATH/pop3.rules
-+#include $RULE_PATH/finger.rules
-+#include $RULE_PATH/ftp.rules
-+#include $RULE_PATH/telnet.rules
-+#include $RULE_PATH/rpc.rules
-+#include $RULE_PATH/rservices.rules
-+#include $RULE_PATH/dos.rules
-+#include $RULE_PATH/ddos.rules
-+#include $RULE_PATH/dns.rules
-+#include $RULE_PATH/tftp.rules
-+
-+#include $RULE_PATH/web-cgi.rules
-+#include $RULE_PATH/web-coldfusion.rules
-+#include $RULE_PATH/web-iis.rules
-+#include $RULE_PATH/web-frontpage.rules
-+#include $RULE_PATH/web-misc.rules
-+#include $RULE_PATH/web-client.rules
-+#include $RULE_PATH/web-php.rules
-+
-+#include $RULE_PATH/sql.rules
-+#include $RULE_PATH/x11.rules
-+#include $RULE_PATH/icmp.rules
-+#include $RULE_PATH/netbios.rules
-+#include $RULE_PATH/misc.rules
-+#include $RULE_PATH/attack-responses.rules
-+#include $RULE_PATH/oracle.rules
-+#include $RULE_PATH/mysql.rules
-+#include $RULE_PATH/snmp.rules
-+
-+#include $RULE_PATH/smtp.rules
-+#include $RULE_PATH/imap.rules
-+#include $RULE_PATH/pop2.rules
-+#include $RULE_PATH/pop3.rules
-
--include $RULE_PATH/nntp.rules
--include $RULE_PATH/other-ids.rules
-+#include $RULE_PATH/nntp.rules
-+#include $RULE_PATH/other-ids.rules
- # include $RULE_PATH/web-attacks.rules
- # include $RULE_PATH/backdoor.rules
- # include $RULE_PATH/shellcode.rules
-@@ -856,11 +857,11 @@
- # include $RULE_PATH/porn.rules
- # include $RULE_PATH/info.rules
- # include $RULE_PATH/icmp-info.rules
-- include $RULE_PATH/virus.rules
-+# include $RULE_PATH/virus.rules
- # include $RULE_PATH/chat.rules
- # include $RULE_PATH/multimedia.rules
- # include $RULE_PATH/p2p.rules
--include $RULE_PATH/experimental.rules
-+#include $RULE_PATH/experimental.rules
- #include $RULE_PATH/wifi.rules
-
- # Include any thresholding or suppression commands. See threshold.conf in the
diff --git a/openwrt/package/snort/Config.in b/openwrt/package/snort/Config.in
deleted file mode 100644
index b3e9d4fe9c..0000000000
--- a/openwrt/package/snort/Config.in
+++ /dev/null
@@ -1,88 +0,0 @@
-menu "snort............................. Ligthweight Network Intrusion Detection System (NIDS)"
-
-config BR2_COMPILE_SNORT
- tristate
- default n
- depends BR2_PACKAGE_SNORT_BASIC || BR2_PACKAGE_SNORT_MYSQL || BR2_PACKAGE_SNORT_PGSQL || BR2_PACKAGE_SNORT_CUSTOM
-
-choice
- prompt "snort............................. Ligthweight Network Intrusion Detection System (NIDS)"
- tristate
- optional
- help
-
- A ligthweight Network Intrusion Detection System (NIDS)
-
- http://www.snort.org/
-
- Depends:
- - libmysqlclient (for MySQL database logging support)
- - libnet
- - libpcap
- - libpcre
- - libpq (for PostgreSQL database logging support)
-
- config BR2_PACKAGE_SNORT_BASIC
- prompt "snort........................... without database support"
- tristate
- select BR2_COMPILE_SNORT
- select BR2_PACKAGE_LIBNET
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPCRE
-
- config BR2_PACKAGE_SNORT_MYSQL
- prompt "snort-mysql..................... with MySQL database support"
- tristate
- select BR2_COMPILE_SNORT
- select BR2_PACKAGE_LIBNET
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPCRE
- select BR2_PACKAGE_LIBMYSQLCLIENT
-
- config BR2_PACKAGE_SNORT_PGSQL
- prompt "snort-pgsql..................... with PostgreSQL database support"
- tristate
- select BR2_COMPILE_SNORT
- select BR2_PACKAGE_LIBNET
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPCRE
- select BR2_PACKAGE_LIBPQ
-
- config BR2_PACKAGE_SNORT_CUSTOM
- prompt "snort-custom.................... customized to your needs"
- tristate
- select BR2_COMPILE_SNORT
- select BR2_PACKAGE_LIBNET
- select BR2_PACKAGE_LIBPCAP
- select BR2_PACKAGE_LIBPCRE
-
- config BR2_PACKAGE_SNORT_ENABLE_DEBUG
- prompt "debug (enable debugging options, useful for bugreports)"
- bool
- default n
- depends BR2_PACKAGE_SNORT_CUSTOM
-
- config BR2_PACKAGE_SNORT_ENABLE_INLINE
- prompt "Inline mode (read packets from iptables instead of libpcap)"
- bool
- default n
- depends BR2_PACKAGE_SNORT_CUSTOM
- select BR2_PACKAGE_IPTABLES
-
- config BR2_PACKAGE_SNORT_WITH_MYSQL
- prompt "MySQL database support"
- bool
- default n
- depends BR2_PACKAGE_SNORT_CUSTOM
- select BR2_PACKAGE_LIBMYSQLCLIENT
-
- config BR2_PACKAGE_SNORT_WITH_PGSQL
- prompt "PostgreSQL database support"
- bool
- default n
- depends BR2_PACKAGE_SNORT_CUSTOM
- select BR2_PACKAGE_LIBPQ
-
-endchoice
-
-endmenu
diff --git a/openwrt/package/snort/Makefile b/openwrt/package/snort/Makefile
deleted file mode 100644
index 04a6efc37e..0000000000
--- a/openwrt/package/snort/Makefile
+++ /dev/null
@@ -1,155 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=snort
-PKG_VERSION:=2.4.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=9dc9060d1f2e248663eceffadfc45e7e
-
-PKG_SOURCE_URL:=http://www.snort.org/dl/current/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-PKG_CONFIGURE_OPTS := \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/sbin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib/locate \
- --localstatedir=/var/lib \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --enable-flexresp \
- --with-libnet-includes="$(STAGING_DIR)/usr/include" \
- --with-libnet-libraries="$(STAGING_DIR)/usr/lib" \
- --with-libpcap-includes="$(STAGING_DIR)/usr/include" \
- --with-libpcap-libraries="$(STAGING_DIR)/usr/lib" \
- --with-libpcre-includes="$(STAGING_DIR)/usr/include" \
- --with-libpcre-libraries="$(STAGING_DIR)/usr/lib" \
-
-SNORT_BASIC_CONFIGURE_OPTS := \
- --without-mysql \
- --without-postgresql \
-
-SNORT_MYSQL_CONFIGURE_OPTS := \
- --with-mysql=$(STAGING_DIR)/usr \
- --without-postgresql \
-
-SNORT_PGSQL_CONFIGURE_OPTS := \
- --without-mysql \
- --with-postgresql=$(STAGING_DIR)/usr \
-
-SNORT_CUSTOM_CONFIGURE_OPTS := \
-
-ifeq ($(BR2_PACKAGE_SNORT_ENABLE_DEBUG),y)
-SNORT_CUSTOM_CONFIGURE_OPTS += --enable-debug
-else
-SNORT_CUSTOM_CONFIGURE_OPTS += --disable-debug
-endif
-
-ifeq ($(BR2_PACKAGE_SNORT_ENABLE_INLINE),y)
-SNORT_CUSTOM_CONFIGURE_OPTS += --enable-inline
-SNORT_CUSTOM_CONFIGURE_OPTS += --with-libipq-includes="$(STAGING_DIR)/include/libipq"
-SNORT_CUSTOM_CONFIGURE_OPTS += --with-libipq-libraries="$(STAGING_DIR)/lib"
-else
-SNORT_CUSTOM_CONFIGURE_OPTS += --disable-inline
-endif
-
-ifeq ($(BR2_PACKAGE_SNORT_WITH_MYSQL),y)
-SNORT_CUSTOM_CONFIGURE_OPTS += --with-mysql="$(STAGING_DIR)/usr"
-else
-SNORT_CUSTOM_CONFIGURE_OPTS += --without-mysql
-endif
-
-ifeq ($(BR2_PACKAGE_SNORT_WITH_PGSQL),y)
-SNORT_CUSTOM_CONFIGURE_OPTS += --with-postgresql="$(STAGING_DIR)/usr"
-else
-SNORT_CUSTOM_CONFIGURE_OPTS += --without-postgresql
-endif
-
-define PKG_build
-
-ifneq ($(BR2_PACKAGE_$(1)),)
-BUILD_TARGETS += $(PKG_BUILD_DIR)/$(2)
-endif
-
-$(PKG_BUILD_DIR)/$(2): $(PKG_BUILD_DIR)/.prepared
- touch -r $(PKG_BUILD_DIR)/Makefile.am $(PKG_BUILD_DIR)/configure.in
- touch -r $(PKG_BUILD_DIR)/Makefile.in $(PKG_BUILD_DIR)/configure
- -$(MAKE) -C $(PKG_BUILD_DIR) distclean
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include/mysql" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib/mysql" \
- ./configure \
- $(PKG_CONFIGURE_OPTS) \
- $$($(1)_CONFIGURE_OPTS) \
- );
- $(MAKE) -C $(PKG_BUILD_DIR)
- mv $(PKG_BUILD_DIR)/src/snort $(PKG_BUILD_DIR)/$(2)
-
-$$(IPKG_$(1)): $(PKG_BUILD_DIR)/.installed $(PKG_BUILD_DIR)/$(2)
- install -m0644 ./ipkg/snort.conffiles $$(IDIR_$(1))/CONTROL/conffiles
- install -d -m0755 $$(IDIR_$(1))/etc/default
- install -m0644 ./files/snort.default $$(IDIR_$(1))/etc/default/snort
- install -d -m0755 $$(IDIR_$(1))/etc/init.d
- install -m0755 ./files/snort.init $$(IDIR_$(1))/etc/init.d/snort
- install -d -m0755 $$(IDIR_$(1))/etc/snort
- install -m0644 $(PKG_BUILD_DIR)/etc/snort.conf $$(IDIR_$(1))/etc/snort/
- install -m0644 $(PKG_BUILD_DIR)/etc/classification.config $$(IDIR_$(1))/etc/snort/
- install -m0644 $(PKG_BUILD_DIR)/etc/gen-msg.map $$(IDIR_$(1))/etc/snort/
- install -m0644 $(PKG_BUILD_DIR)/etc/reference.config $$(IDIR_$(1))/etc/snort/
- install -m0644 $(PKG_BUILD_DIR)/etc/sid-msg.map $$(IDIR_$(1))/etc/snort/
- install -m0644 $(PKG_BUILD_DIR)/etc/threshold.conf $$(IDIR_$(1))/etc/snort/
- install -m0644 $(PKG_BUILD_DIR)/etc/unicode.map $$(IDIR_$(1))/etc/snort/
- install -d -m0755 $$(IDIR_$(1))/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/$(2) $$(IDIR_$(1))/usr/sbin/snort
- $(RSTRIP) $$(IDIR_$(1))
- mkdir -p $(PACKAGE_DIR)
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-$(eval $(call PKG_template,SNORT_BASIC,snort,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SNORT_MYSQL,snort-mysql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SNORT_PGSQL,snort-pgsql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SNORT_CUSTOM,snort-custom,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_build,SNORT_BASIC,snort,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_build,SNORT_MYSQL,snort-mysql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_build,SNORT_PGSQL,snort-pgsql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_build,SNORT_CUSTOM,snort-custom,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(BUILD_TARGETS)
- touch $@
-
-$(PKG_BUILD_DIR)/.installed: $(PKG_BUILD_DIR)/.built
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- touch $(PKG_BUILD_DIR)/.installed
-
diff --git a/openwrt/package/snort/files/snort.default b/openwrt/package/snort/files/snort.default
deleted file mode 100644
index 796a893b02..0000000000
--- a/openwrt/package/snort/files/snort.default
+++ /dev/null
@@ -1,2 +0,0 @@
-INTERFACE="vlan1" # WAN
-OPTIONS="-i $INTERFACE -c /etc/snort/snort.conf -D -N -q -s"
diff --git a/openwrt/package/snort/files/snort.init b/openwrt/package/snort/files/snort.init
deleted file mode 100644
index 8c019c41d4..0000000000
--- a/openwrt/package/snort/files/snort.init
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/snort
-LOG_D=/var/log/snort
-RUN_D=/var/run
-[ -f $DEFAULT ] && . $DEFAULT
-PID_F=$RUN_D/snort_$INTERFACE.pid
-
-case $1 in
- start)
- [ -d $LOG_D ] || mkdir -p $LOG_D
- [ -d $RUN_D ] || mkdir -p $RUN_D
- snort $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/snort/ipkg/snort-custom.control b/openwrt/package/snort/ipkg/snort-custom.control
deleted file mode 100644
index b3a9f3c523..0000000000
--- a/openwrt/package/snort/ipkg/snort-custom.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: snort-custom
-Priority: optional
-Section: net
-Description: a flexible Network Intrusion Detection System (NIDS),
- built with custom options
-Depends: libnet, libpcap, libpcre
diff --git a/openwrt/package/snort/ipkg/snort-mysql.control b/openwrt/package/snort/ipkg/snort-mysql.control
deleted file mode 100644
index d7390bf655..0000000000
--- a/openwrt/package/snort/ipkg/snort-mysql.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: snort-mysql
-Priority: optional
-Section: net
-Description: a flexible Network Intrusion Detection System (NIDS),
- built with MySQL database logging support
-Depends: libnet, libpcap, libpcre, libmysqlclient
diff --git a/openwrt/package/snort/ipkg/snort-pgsql.control b/openwrt/package/snort/ipkg/snort-pgsql.control
deleted file mode 100644
index fa7bbbc862..0000000000
--- a/openwrt/package/snort/ipkg/snort-pgsql.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: snort-pgsql
-Priority: optional
-Section: net
-Description: a flexible Network Intrusion Detection System (NIDS),
- built with PostgreSQL database logging support
-Depends: libnet, libpcap, libpcre, libpq
diff --git a/openwrt/package/snort/ipkg/snort.conffiles b/openwrt/package/snort/ipkg/snort.conffiles
deleted file mode 100644
index c387672486..0000000000
--- a/openwrt/package/snort/ipkg/snort.conffiles
+++ /dev/null
@@ -1,3 +0,0 @@
-/etc/default/snort
-/etc/snort/snort.conf
-/etc/snort/threshold.conf
diff --git a/openwrt/package/snort/ipkg/snort.control b/openwrt/package/snort/ipkg/snort.control
deleted file mode 100644
index 23ed58724a..0000000000
--- a/openwrt/package/snort/ipkg/snort.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: snort
-Priority: optional
-Section: net
-Description: a flexible Network Intrusion Detection System (NIDS),
- built without database logging support
-Depends: libnet, libpcap, libpcre
diff --git a/openwrt/package/snort/patches/500-no-config-search.patch b/openwrt/package/snort/patches/500-no-config-search.patch
deleted file mode 100644
index d674ba66aa..0000000000
--- a/openwrt/package/snort/patches/500-no-config-search.patch
+++ /dev/null
@@ -1,35 +0,0 @@
---- snort-2.3.2-orig/src/snort.c 2005-01-13 21:36:20.000000000 +0100
-+++ snort-2.3.2-1/src/snort.c 2005-04-04 20:03:34.000000000 +0200
-@@ -1949,7 +1949,7 @@
- {
- struct stat st;
- int i;
-- char *conf_files[]={"/etc/snort.conf", "./snort.conf", NULL};
-+ char *conf_files[]={"/etc/snort/snort.conf", NULL};
- char *fname = NULL;
- char *home_dir = NULL;
- char *rval = NULL;
-@@ -1970,23 +1970,6 @@
- i++;
- }
-
-- /* search for .snortrc in the HOMEDIR */
-- if(!rval)
-- {
-- if((home_dir = getenv("HOME")))
-- {
-- /* create the full path */
-- fname = (char *)malloc(strlen(home_dir) + strlen("/.snortrc") + 1);
-- if(!fname)
-- FatalError("Out of memory searching for config file\n");
--
-- if(stat(fname, &st) != -1)
-- rval = fname;
-- else
-- free(fname);
-- }
-- }
--
- return rval;
- }
-
diff --git a/openwrt/package/snort/patches/750-lightweight-config.patch b/openwrt/package/snort/patches/750-lightweight-config.patch
deleted file mode 100644
index c8bde27f51..0000000000
--- a/openwrt/package/snort/patches/750-lightweight-config.patch
+++ /dev/null
@@ -1,178 +0,0 @@
---- snort-2.3.2-orig/etc/snort.conf 2005-03-10 23:04:38.000000000 +0100
-+++ snort-2.3.2-1/etc/snort.conf 2005-04-04 20:01:41.000000000 +0200
-@@ -6,6 +6,7 @@
- #
- ###################################################
- # This file contains a sample snort configuration.
-+# Most preprocessors and rules were disabled to save memory.
- # You can take the following steps to create your own custom configuration:
- #
- # 1) Set the network variables for your network
-@@ -41,10 +42,10 @@
- # or you can specify the variable to be any IP address
- # like this:
-
--var HOME_NET any
-+var HOME_NET 192.168.1.0/24
-
- # Set up the external network addresses as well. A good start may be "any"
--var EXTERNAL_NET any
-+var EXTERNAL_NET !$HOME_NET
-
- # Configure your server lists. This allows snort to only look for attacks to
- # systems that have a service up. Why look for HTTP attacks if you are not
-@@ -106,7 +107,7 @@
- # Path to your rules files (this can be a relative path)
- # Note for Windows users: You are advised to make this an absolute path,
- # such as: c:\snort\rules
--var RULE_PATH ../rules
-+var RULE_PATH /etc/snort/rules
-
- # Configure the snort decoder
- # ============================
-@@ -297,11 +298,11 @@
- # lots of options available here. See doc/README.http_inspect.
- # unicode.map should be wherever your snort.conf lives, or given
- # a full path to where snort can find it.
--preprocessor http_inspect: global \
-- iis_unicode_map unicode.map 1252
-+#preprocessor http_inspect: global \
-+# iis_unicode_map unicode.map 1252
-
--preprocessor http_inspect_server: server default \
-- profile all ports { 80 8080 8180 } oversize_dir_length 500
-+#preprocessor http_inspect_server: server default \
-+# profile all ports { 80 8080 8180 } oversize_dir_length 500
-
- #
- # Example unique server configuration
-@@ -335,7 +336,7 @@
- # no_alert_incomplete - don't alert when a single segment
- # exceeds the current packet size
-
--preprocessor rpc_decode: 111 32771
-+#preprocessor rpc_decode: 111 32771
-
- # bo: Back Orifice detector
- # -------------------------
-@@ -347,7 +348,7 @@
- # ----- -------------------
- # 1 Back Orifice traffic detected
-
--preprocessor bo
-+#preprocessor bo
-
- # telnet_decode: Telnet negotiation string normalizer
- # ---------------------------------------------------
-@@ -359,7 +360,7 @@
- # This preprocessor requires no arguments.
- # Portscan uses Generator ID 109 and does not generate any SID currently.
-
--preprocessor telnet_decode
-+#preprocessor telnet_decode
-
- # Flow-Portscan: detect a variety of portscans
- # ---------------------------------------
-@@ -455,9 +456,9 @@
- # are still watched as scanner hosts. The 'ignore_scanned' option is
- # used to tune alerts from very active hosts such as syslog servers, etc.
- #
--preprocessor sfportscan: proto { all } \
-- memcap { 10000000 } \
-- sense_level { low }
-+#preprocessor sfportscan: proto { all } \
-+# memcap { 10000000 } \
-+# sense_level { low }
-
- # arpspoof
- #----------------------------------------
-@@ -642,41 +643,41 @@
- include $RULE_PATH/bad-traffic.rules
- include $RULE_PATH/exploit.rules
- include $RULE_PATH/scan.rules
--include $RULE_PATH/finger.rules
--include $RULE_PATH/ftp.rules
--include $RULE_PATH/telnet.rules
--include $RULE_PATH/rpc.rules
--include $RULE_PATH/rservices.rules
--include $RULE_PATH/dos.rules
--include $RULE_PATH/ddos.rules
--include $RULE_PATH/dns.rules
--include $RULE_PATH/tftp.rules
--
--include $RULE_PATH/web-cgi.rules
--include $RULE_PATH/web-coldfusion.rules
--include $RULE_PATH/web-iis.rules
--include $RULE_PATH/web-frontpage.rules
--include $RULE_PATH/web-misc.rules
--include $RULE_PATH/web-client.rules
--include $RULE_PATH/web-php.rules
--
--include $RULE_PATH/sql.rules
--include $RULE_PATH/x11.rules
--include $RULE_PATH/icmp.rules
--include $RULE_PATH/netbios.rules
--include $RULE_PATH/misc.rules
--include $RULE_PATH/attack-responses.rules
--include $RULE_PATH/oracle.rules
--include $RULE_PATH/mysql.rules
--include $RULE_PATH/snmp.rules
--
--include $RULE_PATH/smtp.rules
--include $RULE_PATH/imap.rules
--include $RULE_PATH/pop2.rules
--include $RULE_PATH/pop3.rules
-+#include $RULE_PATH/finger.rules
-+#include $RULE_PATH/ftp.rules
-+#include $RULE_PATH/telnet.rules
-+#include $RULE_PATH/rpc.rules
-+#include $RULE_PATH/rservices.rules
-+#include $RULE_PATH/dos.rules
-+#include $RULE_PATH/ddos.rules
-+#include $RULE_PATH/dns.rules
-+#include $RULE_PATH/tftp.rules
-+
-+#include $RULE_PATH/web-cgi.rules
-+#include $RULE_PATH/web-coldfusion.rules
-+#include $RULE_PATH/web-iis.rules
-+#include $RULE_PATH/web-frontpage.rules
-+#include $RULE_PATH/web-misc.rules
-+#include $RULE_PATH/web-client.rules
-+#include $RULE_PATH/web-php.rules
-+
-+#include $RULE_PATH/sql.rules
-+#include $RULE_PATH/x11.rules
-+#include $RULE_PATH/icmp.rules
-+#include $RULE_PATH/netbios.rules
-+#include $RULE_PATH/misc.rules
-+#include $RULE_PATH/attack-responses.rules
-+#include $RULE_PATH/oracle.rules
-+#include $RULE_PATH/mysql.rules
-+#include $RULE_PATH/snmp.rules
-+
-+#include $RULE_PATH/smtp.rules
-+#include $RULE_PATH/imap.rules
-+#include $RULE_PATH/pop2.rules
-+#include $RULE_PATH/pop3.rules
-
--include $RULE_PATH/nntp.rules
--include $RULE_PATH/other-ids.rules
-+#include $RULE_PATH/nntp.rules
-+#include $RULE_PATH/other-ids.rules
- # include $RULE_PATH/web-attacks.rules
- # include $RULE_PATH/backdoor.rules
- # include $RULE_PATH/shellcode.rules
-@@ -684,11 +685,11 @@
- # include $RULE_PATH/porn.rules
- # include $RULE_PATH/info.rules
- # include $RULE_PATH/icmp-info.rules
-- include $RULE_PATH/virus.rules
-+# include $RULE_PATH/virus.rules
- # include $RULE_PATH/chat.rules
- # include $RULE_PATH/multimedia.rules
- # include $RULE_PATH/p2p.rules
--include $RULE_PATH/experimental.rules
-+#include $RULE_PATH/experimental.rules
-
- # Include any thresholding or suppression commands. See threshold.conf in the
- # <snort src>/etc directory for details. Commands don't necessarily need to be
diff --git a/openwrt/package/socat/Config.in b/openwrt/package/socat/Config.in
deleted file mode 100644
index d66693dc1b..0000000000
--- a/openwrt/package/socat/Config.in
+++ /dev/null
@@ -1,18 +0,0 @@
-config BR2_PACKAGE_SOCAT
- prompt "socat............................. A multipurpose relay (SOcket CAT)"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_LIBPTHREAD
- help
- SoCat (for SOcket CAT) establishes two bidirectional byte streams and
- transfers data between them.
- Data channels may be files, pipes, devices (terminal or modem, etc.), or
- sockets (Unix, IPv4, IPv6, raw, UDP, TCP, SSL). It provides forking,
- logging and tracing, different modes for interprocess communication and
- many more options.
-
- http://www.dest-unreach.org/socat/
-
- Depends: openssl
-
diff --git a/openwrt/package/socat/Makefile b/openwrt/package/socat/Makefile
deleted file mode 100644
index 034a6186a4..0000000000
--- a/openwrt/package/socat/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=socat
-PKG_VERSION:=1.4.3.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=ce574e75c2fda4456e8efd4efb86ec5e
-
-PKG_SOURCE_URL:=http://www.dest-unreach.org/socat/download/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-1.4
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SOCAT,socat,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- sc_cv_termios_ispeed="no" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --disable-libwrap \
- --disable-readline \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_SOCAT):
- install -d -m0755 $(IDIR_SOCAT)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/socat $(IDIR_SOCAT)/usr/bin/
- $(RSTRIP) $(IDIR_SOCAT)
- $(IPKG_BUILD) $(IDIR_SOCAT) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/socat/ipkg/socat.control b/openwrt/package/socat/ipkg/socat.control
deleted file mode 100644
index 7c079a9207..0000000000
--- a/openwrt/package/socat/ipkg/socat.control
+++ /dev/null
@@ -1,11 +0,0 @@
-Package: socat
-Priority: optional
-Section: net
-Depends: libpthread, libopenssl
-Description: A multipurpose relay (SOcket CAT).
- SoCat (for SOcket CAT) establishes two bidirectional byte streams and
- transfers data between them.
- Data channels may be files, pipes, devices (terminal or modem, etc.), or
- sockets (Unix, IPv4, IPv6, raw, UDP, TCP, SSL). It provides forking,
- logging and tracing, different modes for interprocess communication and
- many more options.
diff --git a/openwrt/package/socat/patches/501-honor_ldflags.patch b/openwrt/package/socat/patches/501-honor_ldflags.patch
deleted file mode 100644
index a41a929f1e..0000000000
--- a/openwrt/package/socat/patches/501-honor_ldflags.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -ruN socat-1.4-old/Makefile.in socat-1.4-new/Makefile.in
---- socat-1.4-old/Makefile.in 2005-09-10 22:09:11.000000000 +0200
-+++ socat-1.4-new/Makefile.in 2005-10-08 17:12:45.000000000 +0200
-@@ -36,7 +36,8 @@
-
- #0 CFLAGS = @CFLAGS@ $(CCOPTS) $(DEFS) $(INCLS)
- CFLAGS = @CFLAGS@ $(CCOPTS) $(DEFS) $(CPPFLAGS)
--CLIBS = $(LIBS)
-+LDFLAGS = @LDFLAGS@
-+CLIBS = $(LDFLAGS) $(LIBS)
- #CLIBS = $(LIBS) -lm -lefence
- XIOSRCS = xioinitialize.c xiohelp.c xioparam.c xiodiag.c xioopen.c xioopts.c \
- xiosignal.c xiosigchld.c xioread.c xiowrite.c \
diff --git a/openwrt/package/speex/Config.in b/openwrt/package/speex/Config.in
deleted file mode 100644
index 2a51044650..0000000000
--- a/openwrt/package/speex/Config.in
+++ /dev/null
@@ -1,23 +0,0 @@
-config BR2_COMPILE_SPEEX
- tristate
- default n
- depends BR2_PACKAGE_LIBSPEEX
-
-config BR2_PACKAGE_LIBSPEEX
- prompt "libspeex.......................... Open source patent-free speech compression codec"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_SPEEX
- help
-
- Speex is an Open Source/Free Software patent-free audio compression
- format designed for speech. The Speex Project aims to lower the
- barrier of entry for voice applications by providing a free
- alternative to expensive proprietary speech codecs. Moreover, Speex
- is well-adapted to Internet applications and provides useful features
- that are not present in most other codecs.
-
- http://www.speex.org/
-
- This package contains the shared codec library, needed by other programs.
-
diff --git a/openwrt/package/speex/Makefile b/openwrt/package/speex/Makefile
deleted file mode 100644
index 903966b516..0000000000
--- a/openwrt/package/speex/Makefile
+++ /dev/null
@@ -1,88 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=speex
-PKG_VERSION:=1.1.8
-PKG_RELEASE:=1
-PKG_MD5SUM:=734892c8ca5e7e835828048a1289a0cc
-
-PKG_SOURCE_URL:=http://us.speex.org/download
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBSPEEX,libspeex,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-oggtest \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- bin_PROGRAMS="" \
- all install
- touch $@
-
-$(IPKG_LIBSPEEX):
- install -d -m0755 $(IDIR_LIBSPEEX)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libspeex.so.* $(IDIR_LIBSPEEX)/usr/lib/
- $(RSTRIP) $(IDIR_LIBSPEEX)
- $(IPKG_BUILD) $(IDIR_LIBSPEEX) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libspeex.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/speex $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libspeex.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/speex.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I$${includedir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/speex.pc
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/speex.pc
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libspeex.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/speex \
- $(STAGING_DIR)/usr/lib/libspeex.{a,so*} \
- $(STAGING_DIR)/usr/lib/pkgconfig/speex.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/speex/ipkg/libspeex.control b/openwrt/package/speex/ipkg/libspeex.control
deleted file mode 100644
index 5dc542eeee..0000000000
--- a/openwrt/package/speex/ipkg/libspeex.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libspeex
-Priority: optional
-Section: libs
-Description: an open source patent-free speech compression codec
diff --git a/openwrt/package/sqlite/Config.in b/openwrt/package/sqlite/Config.in
deleted file mode 100644
index 600a05e154..0000000000
--- a/openwrt/package/sqlite/Config.in
+++ /dev/null
@@ -1,75 +0,0 @@
-config BR2_COMPILE_SQLITE
- tristate
- default n
- depends BR2_PACKAGE_LIBSQLITE
-
-config BR2_PACKAGE_LIBSQLITE
- prompt "libsqlite......................... Self-contained, embeddable, zero-configuration SQL database engine"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_SQLITE
- select BR2_PACKAGE_LIBNCURSES
- select BR2_PACKAGE_LIBREADLINE
- help
- SQLite is a small C library that implements a self-contained, embeddable,
- zero-configuration SQL database engine. Features include:
-
- * Transactions are atomic, consistent, isolated, and durable (ACID)
- even after system crashes and power failures.
- * Zero-configuration - no setup or administration needed.
- * Implements most of SQL92. (Features not supported)
- * A complete database is stored in a single disk file.
- * Database files can be freely shared between machines with different
- byte orders.
- * Supports databases up to 2 terabytes (241 bytes) in size.
- * Sizes of strings and BLOBs limited only by available memory.
- * Small code footprint: less than 30K lines of C code, less than 250KB
- code space (gcc on i486)
- * Faster than popular client/server database engines for most common
- operations.
- * Simple, easy to use API.
- * TCL bindings included. Bindings for many other languages available
- separately.
- * Well-commented source code with over 95% test coverage.
- * Self-contained: no external dependencies.
- * Sources are in the public domain. Use for any purpose.
-
- http://www.sqlite.org/
-
- This package contains the shared library, needed by other programs.
-
-config BR2_PACKAGE_SQLITE_CLI
- prompt "sqlite-cli...................... Command line interface for SQLite"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBSQLITE
- help
- SQLite is a small C library that implements a self-contained, embeddable,
- zero-configuration SQL database engine. Features include:
-
- * Transactions are atomic, consistent, isolated, and durable (ACID)
- even after system crashes and power failures.
- * Zero-configuration - no setup or administration needed.
- * Implements most of SQL92. (Features not supported)
- * A complete database is stored in a single disk file.
- * Database files can be freely shared between machines with different
- byte orders.
- * Supports databases up to 2 terabytes (241 bytes) in size.
- * Sizes of strings and BLOBs limited only by available memory.
- * Small code footprint: less than 30K lines of C code, less than 250KB
- code space (gcc on i486)
- * Faster than popular client/server database engines for most common
- operations.
- * Simple, easy to use API.
- * TCL bindings included. Bindings for many other languages available
- separately.
- * Well-commented source code with over 95% test coverage.
- * Self-contained: no external dependencies.
- * Sources are in the public domain. Use for any purpose.
-
- http://www.sqlite.org/
-
- This package contains a terminal-based front-end to the SQLite library
- that can evaluate queries interactively and display the results in
- multiple formats.
-
diff --git a/openwrt/package/sqlite/Makefile b/openwrt/package/sqlite/Makefile
deleted file mode 100644
index 003f478371..0000000000
--- a/openwrt/package/sqlite/Makefile
+++ /dev/null
@@ -1,104 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=sqlite
-PKG_VERSION:=3.3.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=eb5d9d7e7853b3af78e767d709b7fced
-
-PKG_SOURCE_URL:=http://www.sqlite.org/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBSQLITE,libsqlite,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQLITE_CLI,sqlite-cli,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- config_BUILD_CC="$(HOSTCC)" \
- config_BUILD_CFLAGS="-O2" \
- config_TARGET_CC="$(TARGET_CC)" \
- config_TARGET_CFLAGS="$(TARGET_CFLAGS)" \
- config_TARGET_READLINE_INC="-I$(STAGING_DIR)/usr/include" \
- config_TARGET_READLINE_LIBS="-L$(STAGING_DIR)/usr/lib -lreadline -lncurses" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-tcl \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBSQLITE):
- install -d -m0755 $(IDIR_LIBSQLITE)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsqlite3.so.* $(IDIR_LIBSQLITE)/usr/lib/
- $(RSTRIP) $(IDIR_LIBSQLITE)
- $(IPKG_BUILD) $(IDIR_LIBSQLITE) $(PACKAGE_DIR)
-
-$(IPKG_SQLITE_CLI):
- install -d -m0755 $(IDIR_SQLITE_CLI)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/sqlite3 $(IDIR_SQLITE_CLI)/usr/bin/
- $(RSTRIP) $(IDIR_SQLITE_CLI)
- $(IPKG_BUILD) $(IDIR_SQLITE_CLI) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libsqlite3.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/sqlite3.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsqlite3.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/sqlite3.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I$${includedir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/sqlite3.pc
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/sqlite3.pc
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libsqlite3.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/sqlite3.h \
- $(STAGING_DIR)/usr/lib/libsqlite3.{a,so*} \
- $(STAGING_DIR)/usr/lib/pkgconfig/sqlite3.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/sqlite/ipkg/libsqlite.control b/openwrt/package/sqlite/ipkg/libsqlite.control
deleted file mode 100644
index 4b19270426..0000000000
--- a/openwrt/package/sqlite/ipkg/libsqlite.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libsqlite
-Priority: optional
-Section: libs
-Description: Self-contained, embeddable, zero-configuration SQL database engine
diff --git a/openwrt/package/sqlite/ipkg/sqlite-cli.control b/openwrt/package/sqlite/ipkg/sqlite-cli.control
deleted file mode 100644
index b70c9cf5b2..0000000000
--- a/openwrt/package/sqlite/ipkg/sqlite-cli.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: sqlite-cli
-Priority: optional
-Section: libs
-Description: Command Line Interface (CLI) for SQLite
-Depends: libsqlite, libncurses, libreadline
diff --git a/openwrt/package/sqlite2/Config.in b/openwrt/package/sqlite2/Config.in
deleted file mode 100644
index 99ba351c8a..0000000000
--- a/openwrt/package/sqlite2/Config.in
+++ /dev/null
@@ -1,74 +0,0 @@
-config BR2_COMPILE_SQLITE2
- tristate
- default n
- depends BR2_PACKAGE_LIBSQLITE2
-
-config BR2_PACKAGE_LIBSQLITE2
- prompt "libsqlite2........................ Self-contained, embeddable, zero-configuration SQL database engine (v2.x)"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_SQLITE2
- select BR2_PACKAGE_LIBNCURSES
- select BR2_PACKAGE_LIBREADLINE
- help
- SQLite is a small C library that implements a self-contained, embeddable,
- zero-configuration SQL database engine. Features include:
-
- * Transactions are atomic, consistent, isolated, and durable (ACID)
- even after system crashes and power failures.
- * Zero-configuration - no setup or administration needed.
- * Implements most of SQL92. (Features not supported)
- * A complete database is stored in a single disk file.
- * Database files can be freely shared between machines with different
- byte orders.
- * Supports databases up to 2 terabytes (241 bytes) in size.
- * Sizes of strings and BLOBs limited only by available memory.
- * Small code footprint: less than 30K lines of C code, less than 250KB
- code space (gcc on i486)
- * Faster than popular client/server database engines for most common
- operations.
- * Simple, easy to use API.
- * TCL bindings included. Bindings for many other languages available
- separately.
- * Well-commented source code with over 95% test coverage.
- * Self-contained: no external dependencies.
- * Sources are in the public domain. Use for any purpose.
-
- http://www.sqlite.org/
-
- This package contains the shared library, needed by other programs.
-
-config BR2_PACKAGE_SQLITE2_CLI
- prompt "sqlite2-cli..................... Command line interface for SQLite (v2.x)"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_LIBSQLITE2
- help
- SQLite is a small C library that implements a self-contained, embeddable,
- zero-configuration SQL database engine. Features include:
-
- * Transactions are atomic, consistent, isolated, and durable (ACID)
- even after system crashes and power failures.
- * Zero-configuration - no setup or administration needed.
- * Implements most of SQL92. (Features not supported)
- * A complete database is stored in a single disk file.
- * Database files can be freely shared between machines with different
- byte orders.
- * Supports databases up to 2 terabytes (241 bytes) in size.
- * Sizes of strings and BLOBs limited only by available memory.
- * Small code footprint: less than 30K lines of C code, less than 250KB
- code space (gcc on i486)
- * Faster than popular client/server database engines for most common
- operations.
- * Simple, easy to use API.
- * TCL bindings included. Bindings for many other languages available
- separately.
- * Well-commented source code with over 95% test coverage.
- * Self-contained: no external dependencies.
- * Sources are in the public domain. Use for any purpose.
-
- http://www.sqlite.org/
-
- This package contains a terminal-based front-end to the SQLite library
- that can evaluate queries interactively and display the results in
- multiple formats.
diff --git a/openwrt/package/sqlite2/Makefile b/openwrt/package/sqlite2/Makefile
deleted file mode 100644
index 6db13ddbb1..0000000000
--- a/openwrt/package/sqlite2/Makefile
+++ /dev/null
@@ -1,103 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=sqlite2
-PKG_VERSION:=2.8.17
-PKG_RELEASE:=1
-PKG_MD5SUM:=838dbac20b56d2c4292e98848505a05b
-
-PKG_SOURCE_URL:=http://www.sqlite.org/
-PKG_SOURCE:=sqlite-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/sqlite-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LIBSQLITE2,libsqlite2,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQLITE2_CLI,sqlite2-cli,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- config_BUILD_CC="$(HOSTCC)" \
- config_BUILD_CFLAGS="-O2" \
- config_TARGET_CC="$(TARGET_CC)" \
- config_TARGET_CFLAGS="$(TARGET_CFLAGS)" \
- config_TARGET_READLINE_INC="-I$(STAGING_DIR)/usr/include" \
- config_TARGET_READLINE_LIBS="-L$(STAGING_DIR)/usr/lib -lreadline -lncurses" \
- config_TARGET_TCL_INC="-DNO_TCL=1" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LIBSQLITE2):
- install -d -m0755 $(IDIR_LIBSQLITE2)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsqlite.so.* $(IDIR_LIBSQLITE2)/usr/lib/
- $(RSTRIP) $(IDIR_LIBSQLITE2)
- $(IPKG_BUILD) $(IDIR_LIBSQLITE2) $(PACKAGE_DIR)
-
-$(IPKG_SQLITE2_CLI):
- install -d -m0755 $(IDIR_SQLITE2_CLI)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/sqlite $(IDIR_SQLITE2_CLI)/usr/bin/
- $(RSTRIP) $(IDIR_SQLITE2_CLI)
- $(IPKG_BUILD) $(IDIR_SQLITE2_CLI) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libsqlite.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/sqlite.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsqlite.{a,so*} $(STAGING_DIR)/usr/lib/
- mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/sqlite.pc $(STAGING_DIR)/usr/lib/pkgconfig/
- $(SED) 's,-I$${includedir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/sqlite.pc
- $(SED) 's,-L$${libdir},,g' $(STAGING_DIR)/usr/lib/pkgconfig/sqlite.pc
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libsqlite.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/sqlite.h \
- $(STAGING_DIR)/usr/lib/libsqlite.{a,so*} \
- $(STAGING_DIR)/usr/lib/pkgconfig/sqlite.pc \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/sqlite2/ipkg/libsqlite2.control b/openwrt/package/sqlite2/ipkg/libsqlite2.control
deleted file mode 100644
index 9e20474b8b..0000000000
--- a/openwrt/package/sqlite2/ipkg/libsqlite2.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: libsqlite2
-Priority: optional
-Section: libs
-Description: Self-contained, embeddable, zero-configuration SQL database engine (v2.x)
diff --git a/openwrt/package/sqlite2/ipkg/sqlite2-cli.control b/openwrt/package/sqlite2/ipkg/sqlite2-cli.control
deleted file mode 100644
index 40ea238f59..0000000000
--- a/openwrt/package/sqlite2/ipkg/sqlite2-cli.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: sqlite2-cli
-Priority: optional
-Section: libs
-Description: Command Line Interface (CLI) for SQLite (v2.x)
-Depends: libsqlite2, libncurses, libreadline
diff --git a/openwrt/package/squid/Config.in b/openwrt/package/squid/Config.in
deleted file mode 100644
index 100740cd9d..0000000000
--- a/openwrt/package/squid/Config.in
+++ /dev/null
@@ -1,93 +0,0 @@
-menu "squid............................. proxy and web cache"
-
-config BR2_PACKAGE_SQUID
- prompt "squid................................. full-featured Web proxy cache"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBOPENSSL
- help
- Squid is a high-performance proxy caching server for web clients,
- supporting FTP, gopher, and HTTP data objects. Unlike traditional
- caching software, Squid handles all requests in a single,
- non-blocking, I/O-driven process.
-
- http://www.squid-cache.org
-
-config BR2_PACKAGE_SQUID_MOD_BASIC_AUTH_GETPWNAM
- prompt "squid-mod-basic-auth-getpwnam......... getpwnam basic authentication helper"
- tristate
- depends BR2_PACKAGE_SQUID
- help
- Password basic authentication helper
-
-config BR2_PACKAGE_SQUID_MOD_BASIC_AUTH_NCSA
- prompt "squid-mod-basic-auth-ncsa............. NCSA basic authentication helper"
- tristate
- depends BR2_PACKAGE_SQUID
- help
- NCSA basic authentication helper
-
-config BR2_PACKAGE_SQUID_MOD_BASIC_AUTH_SMB
- prompt "squid-mod-basic-auth-smb.............. Samba basic authentication helper"
- tristate
- depends BR2_PACKAGE_SQUID
- help
- Samba basic authentication helper
-
-config BR2_PACKAGE_SQUID_MOD_BASIC_AUTH_WINBIND
- prompt "squid-mod-basic-auth-winbind.......... Winbind basic authentication helper"
- tristate
- depends BR2_PACKAGE_SQUID
- help
- Winbind basic authentication helper
-
-config BR2_PACKAGE_SQUID_MOD_DIGEST_AUTH_PASSWORD
- prompt "squid-mod-digest-auth-password........ Password digest authentication ehlper"
- tristate
- depends BR2_PACKAGE_SQUID
- help
- Password digest authentication helper
-
-config BR2_PACKAGE_SQUID_MOD_EXTERNAL_ACL_IP_USER
- prompt "squid-mod-external-acl-ip_user........ IP user external ACL helper"
- tristate
- depends BR2_PACKAGE_SQUID
- help
- IP user external ACL helper
-
-config BR2_PACKAGE_SQUID_MOD_EXTERNAL_ACL_UNIX_GROUP
- prompt "squid-mod-external-acl-unix-group..... Unix group external ACL helper"
- tristate
- depends BR2_PACKAGE_SQUID
- help
- Unix group external ACL helper
-
-config BR2_PACKAGE_SQUID_MOD_EXTERNAL_ACL_WINBIND_GROUP
- prompt "squid-mod-external-acl-winbind-group.. Winbind group external ACL helper"
- tristate
- depends BR2_PACKAGE_SQUID
- help
- Winbind group external ACL helper
-
-config BR2_PACKAGE_SQUID_MOD_NTLM_AUTH_FAKEAUTH
- prompt "squid-mod-ntlm-auth-fakeauth.......... Fakeauth NTLM authentication helper"
- tristate
- depends BR2_PACKAGE_SQUID
- help
- Fakeauth NTLM authentication helper
-
-config BR2_PACKAGE_SQUID_MOD_NTLM_AUTH_SMB_AUTH
- prompt "squid-mod-ntlm-auth-smb-auth.......... Samba NTLM authentication helper"
- tristate
- depends BR2_PACKAGE_SQUID
- help
- Samba NTLM authentication helper
-
-config BR2_PACKAGE_SQUID_MOD_NTLM_AUTH_WINBIND_AUTH
- prompt "squid-mod-ntlm-auth-winbind-auth...... Winbind NTLM authentication helper"
- tristate
- depends BR2_PACKAGE_SQUID
- help
- Winbind NTLM authentication helper
-
-endmenu
diff --git a/openwrt/package/squid/Makefile b/openwrt/package/squid/Makefile
deleted file mode 100644
index 1bd2e5abcc..0000000000
--- a/openwrt/package/squid/Makefile
+++ /dev/null
@@ -1,186 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=squid
-PKG_VERSION:=2.5.STABLE13
-PKG_RELEASE:=1
-PKG_MD5SUM:=3e64468e123be1246d17486dab6bee87
-
-PKG_SOURCE_URL:=http://www.squid-cache.org/Versions/v2/2.5/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=bzcat
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-AUTH_MODULES:=basic digest ntlm
-ifneq ($(BR2_PACKAGE_SQUID_MOD_BASIC_AUTH_GETPWNAM),)
-BASIC_AUTH_HELPERS+= getpwnam
-endif
-ifneq ($(BR2_PACKAGE_SQUID_MOD_BASIC_AUTH_NCSA),)
-BASIC_AUTH_HELPERS+= NCSA
-endif
-ifneq ($(BR2_PACKAGE_SQUID_MOD_BASIC_AUTH_SMB),)
-BASIC_AUTH_HELPERS+= SMB
-endif
-ifneq ($(BR2_PACKAGE_SQUID_MOD_BASIC_AUTH_WINBIND),)
-BASIC_AUTH_HELPERS+= winbind
-endif
-
-ifneq ($(BR2_PACKAGE_SQUID_MOD_DIGEST_AUTH_PASSWORD),)
-DIGEST_AUTH_HELPERS:=password
-endif
-
-ifneq ($(BR2_PACKAGE_SQUID_MOD_EXTERNAL_ACL_IP_USER),)
-EXTERNAL_ACL_HELPERS+= ip_user
-endif
-ifneq ($(BR2_PACKAGE_SQUID_MOD_EXTERNAL_ACL_UNIX_GROUP),)
-EXTERNAL_ACL_HELPERS+= unix_group
-endif
-ifneq ($(BR2_PACKAGE_SQUID_MOD_EXTERNAL_ACL_WINBIND_GROUP),)
-EXTERNAL_ACL_HELPERS+= winbind_group
-endif
-
-ifneq ($(BR2_PACKAGE_SQUID_MOD_NTLM_AUTH_FAKEAUTH),)
-NTLM_AUTH_HELPERS+= fakeauth
-endif
-ifneq ($(BR2_PACKAGE_SQUID_MOD_NTLM_AUTH_SMB_AUTH),)
-NTLM_AUTH_HELPERS+= SMB
-endif
-ifneq ($(BR2_PACKAGE_SQUID_MOD_NTLM_AUTH_WINBIND_AUTH),)
-NTLM_AUTH_HELPERS+= winbind
-endif
-
-include $(TOPDIR)/package/rules.mk
-
-define PKG_mod_template
-
-$$(IPKG_$(1)):
- install -d -m0755 $$(IDIR_$(1))/usr/lib/squid
- if [ -e $(PKG_INSTALL_DIR)/usr/lib/squid/$(2) ]; then \
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/squid/$(2) $$(IDIR_$(1))/usr/lib/squid/ ; \
- fi
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-
-$(eval $(call PKG_template,SQUID,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQUID_MOD_BASIC_AUTH_GETPWNAM,$(PKG_NAME)-mod-basic-auth-getpwnam,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQUID_MOD_BASIC_AUTH_NCSA,$(PKG_NAME)-mod-basic-auth-ncsa,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQUID_MOD_BASIC_AUTH_SMB,$(PKG_NAME)-mod-basic-auth-smb,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQUID_MOD_BASIC_AUTH_WINBIND,$(PKG_NAME)-mod-basic-auth-winbind,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQUID_MOD_DIGEST_AUTH_PASSWORD,$(PKG_NAME)-mod-digest-auth-password,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQUID_MOD_EXTERNAL_ACL_IP_USER,$(PKG_NAME)-mod-external-acl-ip-user,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQUID_MOD_EXTERNAL_ACL_UNIX_GROUP,$(PKG_NAME)-mod-external-acl-unix-group,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQUID_MOD_EXTERNAL_ACL_WINBIND_GROUP,$(PKG_NAME)-mod-external-acl-winbind-group,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQUID_MOD_NTLM_AUTH_FAKEAUTH,$(PKG_NAME)-mod-ntlm-auth-fakeauth,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQUID_MOD_NTLM_AUTH_SMB_AUTH,$(PKG_NAME)-mod-ntlm-auth-smb-auth,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SQUID_MOD_NTLM_AUTH_WINBIND_AUTH,$(PKG_NAME)-mod-ntlm-auth-winbind-auth,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_mod_template,SQUID_MOD_BASIC_AUTH_GETPWNAM,getpwname_auth))
-$(eval $(call PKG_mod_template,SQUID_MOD_BASIC_AUTH_LDAP,ldap))
-$(eval $(call PKG_mod_template,SQUID_MOD_BASIC_AUTH_NCSA,ncsa_auth))
-$(eval $(call PKG_mod_template,SQUID_MOD_BASIC_AUTH_SMB,smb_auth))
-$(eval $(call PKG_mod_template,SQUID_MOD_BASIC_AUTH_WINBIND,wb_auth))
-$(eval $(call PKG_mod_template,SQUID_MOD_DIGEST_AUTH_PASSWORD,digest_pw_auth))
-$(eval $(call PKG_mod_template,SQUID_MOD_EXTERNAL_ACL_IP_USER,ip_user_check))
-$(eval $(call PKG_mod_template,SQUID_MOD_EXTERNAL_ACL_LDAP_GROUP,ldap_auth))
-$(eval $(call PKG_mod_template,SQUID_MOD_EXTERNAL_ACL_UNIX_GROUP,squid_unix_group))
-$(eval $(call PKG_mod_template,SQUID_MOD_EXTERNAL_ACL_WINBIND_GROUP,wb_group))
-$(eval $(call PKG_mod_template,SQUID_MOD_NTLM_AUTH_FAKEAUTH,fakeauth_auth))
-$(eval $(call PKG_mod_template,SQUID_MOD_NTLM_AUTH_SMB_AUTH,ntlm_auth))
-$(eval $(call PKG_mod_template,SQUID_MOD_NTLM_AUTH_WINBIND_AUTH,wb_ntlmauth))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_sizeof_void_p=4 \
- ac_cv_sizeof_short=2 \
- ac_cv_sizeof_int=4 \
- ac_cv_sizeof_long=4 \
- ac_cv_sizeof_long_long=8 \
- ac_cv_sizeof___int64=0 \
- ac_cv_sizeof_int16_t=2 \
- ac_cv_sizeof_uint16_t=2 \
- ac_cv_sizeof_u_int16_t=2 \
- ac_cv_sizeof_int32_t=4 \
- ac_cv_sizeof_uint32_t=4 \
- ac_cv_sizeof_u_int32_t=4 \
- ac_cv_sizeof_int64_t=8 \
- ac_cv_sizeof_uint64_t=8 \
- ac_cv_sizeof_u_int64_t=8 \
- ac_cv_func_setresuid=no \
- ac_cv_func_va_copy=no \
- ac_cv_func___va_copy=no \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share/squid \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib/squid \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc/squid \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --enable-static \
- --with-gnu-ld \
- --enable-x-accelerator-vary \
- --with-pthreads \
- --with-dl \
- --enable-icmp \
- --enable-kill-parent-hack \
- --enable-arp-acl \
- --enable-ssl \
- --enable-htcp \
- --enable-err-languages=English \
- --enable-default-err-language=English \
- --enable-linux-netfilter \
- --enable-icmp \
- --enable-external-acl-helpers="" \
- --enable-underscores \
- --enable-cache-digests \
- --enable-referer-log \
- --enable-delay-pools \
- --enable-useragent-log \
- --with-openssl=$(STAGING_DIR)/usr \
- --enable-auth="$(AUTH_MODULES)" \
- --enable-basic-auth-helpers="$(BASIC_AUTH_HELPERS)" \
- --enable-ntlm-auth-helpers="$(NTLM_AUTH_HELPERS)" \
- --enable-digest-auth-helpers="$(DIGEST_AUTH_HELPERS)" \
- --enable-external-acl-helpers="$(EXTERNAL_ACL_HELPERS)" \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR=$(PKG_INSTALL_DIR) \
- all install
- touch $@
-
-$(IPKG_SQUID):
- install -d -m0755 $(IDIR_SQUID)/etc/squid
- $(CP) $(PKG_INSTALL_DIR)/etc/squid/mime.conf $(IDIR_SQUID)/etc/squid/
- $(CP) $(PKG_INSTALL_DIR)/etc/squid/squid.conf $(IDIR_SQUID)/etc/squid/
- install -d -m0755 $(IDIR_SQUID)/usr/share/squid
- $(CP) $(PKG_INSTALL_DIR)/usr/share/squid/* $(IDIR_SQUID)/usr/share/squid/
- install -d -m0755 $(IDIR_SQUID)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/squid $(IDIR_SQUID)/usr/sbin/
- $(RSTRIP) $(IDIR_SQUID)
- $(IPKG_BUILD) $(IDIR_SQUID) $(PACKAGE_DIR)
diff --git a/openwrt/package/squid/ipkg/squid-mod-basic-auth-getpwnam.control b/openwrt/package/squid/ipkg/squid-mod-basic-auth-getpwnam.control
deleted file mode 100644
index cc9dfe661e..0000000000
--- a/openwrt/package/squid/ipkg/squid-mod-basic-auth-getpwnam.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: squid-mod-basic-auth-getpwnam
-Section: net
-Depends: squid
-Priority: optional
-Description: getpwnam basic authentication helper
diff --git a/openwrt/package/squid/ipkg/squid-mod-basic-auth-ncsa.control b/openwrt/package/squid/ipkg/squid-mod-basic-auth-ncsa.control
deleted file mode 100644
index 94b8e9ece1..0000000000
--- a/openwrt/package/squid/ipkg/squid-mod-basic-auth-ncsa.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: squid-mod-basic-auth-ncsa
-Section: net
-Depends: squid
-Priority: optional
-Description: ncsa basic authentication helper
diff --git a/openwrt/package/squid/ipkg/squid-mod-basic-auth-smb.control b/openwrt/package/squid/ipkg/squid-mod-basic-auth-smb.control
deleted file mode 100644
index 9adbeaa01f..0000000000
--- a/openwrt/package/squid/ipkg/squid-mod-basic-auth-smb.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: squid-mod-basic-auth-smb
-Section: net
-Depends: squid
-Priority: optional
-Description: Samba basic authentication helper
diff --git a/openwrt/package/squid/ipkg/squid-mod-basic-auth-winbind.control b/openwrt/package/squid/ipkg/squid-mod-basic-auth-winbind.control
deleted file mode 100644
index 49047fab55..0000000000
--- a/openwrt/package/squid/ipkg/squid-mod-basic-auth-winbind.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: squid-mod-basic-auth-winbind
-Section: net
-Depends: squid
-Priority: optional
-Description: winbind basic authentication helper
diff --git a/openwrt/package/squid/ipkg/squid-mod-digest-auth-password.control b/openwrt/package/squid/ipkg/squid-mod-digest-auth-password.control
deleted file mode 100644
index a78b61636b..0000000000
--- a/openwrt/package/squid/ipkg/squid-mod-digest-auth-password.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: squid-mod-digest-auth-password
-Section: net
-Depends: squid
-Priority: optional
-Description: password digest authentication helper
diff --git a/openwrt/package/squid/ipkg/squid-mod-external-acl-ip-user.control b/openwrt/package/squid/ipkg/squid-mod-external-acl-ip-user.control
deleted file mode 100644
index eb613a3703..0000000000
--- a/openwrt/package/squid/ipkg/squid-mod-external-acl-ip-user.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: squid-mod-external-acl-ip-user
-Section: net
-Depends: squid
-Priority: optional
-Description: IP user external acl helper
diff --git a/openwrt/package/squid/ipkg/squid-mod-external-acl-unix-group.control b/openwrt/package/squid/ipkg/squid-mod-external-acl-unix-group.control
deleted file mode 100644
index 01614125fc..0000000000
--- a/openwrt/package/squid/ipkg/squid-mod-external-acl-unix-group.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: squid-mod-external-acl-unix-group
-Section: net
-Depends: squid
-Priority: optional
-Description: Unix group external acl helper
diff --git a/openwrt/package/squid/ipkg/squid-mod-external-acl-winbind-group.control b/openwrt/package/squid/ipkg/squid-mod-external-acl-winbind-group.control
deleted file mode 100644
index 308a32d468..0000000000
--- a/openwrt/package/squid/ipkg/squid-mod-external-acl-winbind-group.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: squid-mod-external-acl-winbind-group
-Section: net
-Depends: squid
-Priority: optional
-Description: winbind group external acl helper
diff --git a/openwrt/package/squid/ipkg/squid-mod-ntlm-auth-fakeauth.control b/openwrt/package/squid/ipkg/squid-mod-ntlm-auth-fakeauth.control
deleted file mode 100644
index 51779ec010..0000000000
--- a/openwrt/package/squid/ipkg/squid-mod-ntlm-auth-fakeauth.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: squid-mod-ntlm-auth-fakeauth
-Section: net
-Depends: squid
-Priority: optional
-Description: fakeauht NTLM authentication helper
diff --git a/openwrt/package/squid/ipkg/squid-mod-ntlm-auth-smb-auth.control b/openwrt/package/squid/ipkg/squid-mod-ntlm-auth-smb-auth.control
deleted file mode 100644
index 1561bfa68a..0000000000
--- a/openwrt/package/squid/ipkg/squid-mod-ntlm-auth-smb-auth.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: squid-mod-ntlm-auth-smb-auth
-Section: net
-Depends: squid
-Priority: optional
-Description: samba NTLM authentication helper
diff --git a/openwrt/package/squid/ipkg/squid-mod-ntlm-auth-winbind-auth.control b/openwrt/package/squid/ipkg/squid-mod-ntlm-auth-winbind-auth.control
deleted file mode 100644
index 1480c2965d..0000000000
--- a/openwrt/package/squid/ipkg/squid-mod-ntlm-auth-winbind-auth.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: squid-mod-ntlm-auth-winbind-auth
-Section: net
-Depends: squid
-Priority: optional
-Description: winbind NTLM authentication helper
diff --git a/openwrt/package/squid/ipkg/squid.conffiles b/openwrt/package/squid/ipkg/squid.conffiles
deleted file mode 100644
index cd06f9da58..0000000000
--- a/openwrt/package/squid/ipkg/squid.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/squid/mime.conf
-/etc/squid/squid.conf
diff --git a/openwrt/package/squid/ipkg/squid.control b/openwrt/package/squid/ipkg/squid.control
deleted file mode 100644
index 0657eb1efb..0000000000
--- a/openwrt/package/squid/ipkg/squid.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: squid
-Section: net
-Depends: libopenssl, libpthread
-Priority: optional
-Description: squid web and cache proxy
diff --git a/openwrt/package/squid/patches/01-cross_compile.patch b/openwrt/package/squid/patches/01-cross_compile.patch
deleted file mode 100644
index fd8f9b0e73..0000000000
--- a/openwrt/package/squid/patches/01-cross_compile.patch
+++ /dev/null
@@ -1,775 +0,0 @@
-diff -urN squid-2.5.STABLE13/configure squid-2.5.STABLE13.new/configure
---- squid-2.5.STABLE13/configure 2006-03-12 12:29:22.000000000 +0100
-+++ squid-2.5.STABLE13.new/configure 2006-04-15 10:30:10.000000000 +0200
-@@ -2441,10 +2441,6 @@
- if test -z "$SSLLIB"; then
- SSLLIB="-lcrypto" # for MD5 routines
- fi
-- if $PKGCONFIG --exists openssl; then
-- SSLLIB="`$PKGCONFIG --libs openssl`"
-- SSLFLAGS="`$PKGCONFIG --cflags openssl`"
-- fi
- CPPFLAGS="${SSLFLAGS} $CPPFLAGS"
- fi
-
-diff -urN squid-2.5.STABLE13/include/autoconf.h.in squid-2.5.STABLE13.new/include/autoconf.h.in
---- squid-2.5.STABLE13/include/autoconf.h.in 2005-09-13 02:12:34.000000000 +0200
-+++ squid-2.5.STABLE13.new/include/autoconf.h.in 2006-04-15 10:29:39.000000000 +0200
-@@ -729,10 +729,10 @@
- #undef HAVE_OPENSSL_ERR_H
-
- /* Define if you have the <openssl/md5.h> header file. */
--#undef HAVE_OPENSSL_MD5_H
-+#define HAVE_OPENSSL_MD5_H 1
-
- /* Define if you have the <openssl/ssl.h> header file. */
--#undef HAVE_OPENSSL_SSL_H
-+#define HAVE_OPENSSL_SSL_H 1
-
- /* Define if you have the <poll.h> header file. */
- #undef HAVE_POLL_H
-diff -urN squid-2.5.STABLE13/lib/Makefile.in squid-2.5.STABLE13.new/lib/Makefile.in
---- squid-2.5.STABLE13/lib/Makefile.in 2005-09-28 22:57:20.000000000 +0200
-+++ squid-2.5.STABLE13.new/lib/Makefile.in 2006-04-15 10:29:39.000000000 +0200
-@@ -63,6 +63,7 @@
- host_triplet = @host@
- AMTAR = @AMTAR@
- AR = @AR@
-+HOST_AR = ar
- AR_R = @AR_R@
- AUTH_LIBS = @AUTH_LIBS@
- AUTH_MODULES = @AUTH_MODULES@
-@@ -72,6 +73,7 @@
- CACHE_HTTP_PORT = @CACHE_HTTP_PORT@
- CACHE_ICP_PORT = @CACHE_ICP_PORT@
- CC = @CC@
-+HOST_CC = gcc
- CGIEXT = @CGIEXT@
- CPP = @CPP@
- CRYPTLIB = @CRYPTLIB@
-@@ -95,6 +97,8 @@
- MV = @MV@
- NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
- OBJEXT = @OBJEXT@
-+HOST_OBJEXT = @OBJEXT@.$(shell uname -m)
-+HOST_DEPEXT = .$(shell uname -m)
- PACKAGE = @PACKAGE@
- PERL = @PERL@
- PKGCONFIG = @PKGCONFIG@
-@@ -133,6 +137,7 @@
- noinst_LIBRARIES = \
- @LIBDLMALLOC@ \
- libmiscutil.a \
-+ libmiscutil$(shell uname -m).a \
- libntlmauth.a \
- @LIBREGEX@
-
-@@ -162,9 +167,34 @@
- util.c \
- uudecode.c
-
-+libmiscutil_a_HOST_SOURCES = \
-+ Array.c \
-+ base64.c \
-+ getfullhostname.c \
-+ hash.c \
-+ heap.c \
-+ html_quote.c \
-+ iso3307.c \
-+ $(MD5SOURCE) \
-+ radix.c \
-+ rfc1035.c \
-+ rfc1123.c \
-+ rfc1738.c \
-+ rfc2617.c \
-+ safe_inet_addr.c \
-+ $(SNPRINTFSOURCE) \
-+ splay.c \
-+ Stack.c \
-+ stub_memaccount.c \
-+ util.c \
-+ uudecode.c
-+
- libmiscutil_a_LIBADD = \
- @LIBOBJS@
-
-+libmiscutil_a_HOST_LIBADD = \
-+ @LIBOBJS@
-+
- # $(top_srcdir)/include/version.h should be a dependency
- libregex_a_SOURCES = \
- GNUregex.c
-@@ -193,9 +223,11 @@
- libmiscutil_a_AR = $(AR) cru
- libmiscutil_a_DEPENDENCIES = @LIBOBJS@
- @NEED_OWN_MD5_TRUE@am__objects_1 = md5.$(OBJEXT)
-+@NEED_OWN_MD5_TRUE@am__host_objects_1 = md5.$(HOST_OBJEXT)
- @NEED_OWN_MD5_FALSE@am__objects_1 =
- @NEED_OWN_SNPRINTF_FALSE@am__objects_2 =
- @NEED_OWN_SNPRINTF_TRUE@am__objects_2 = snprintf.$(OBJEXT)
-+@NEED_OWN_SNPRINTF_TRUE@am__host_objects_2 = snprintf.$(HOST_OBJEXT)
- am_libmiscutil_a_OBJECTS = Array.$(OBJEXT) base64.$(OBJEXT) \
- getfullhostname.$(OBJEXT) hash.$(OBJEXT) heap.$(OBJEXT) \
- html_quote.$(OBJEXT) iso3307.$(OBJEXT) $(am__objects_1) \
-@@ -203,7 +235,19 @@
- rfc1738.$(OBJEXT) rfc2617.$(OBJEXT) safe_inet_addr.$(OBJEXT) \
- $(am__objects_2) splay.$(OBJEXT) Stack.$(OBJEXT) \
- stub_memaccount.$(OBJEXT) util.$(OBJEXT) uudecode.$(OBJEXT)
-+am_libmiscutil_a_HOST_OBJECTS = Array.$(HOST_OBJEXT) \
-+ base64.$(HOST_OBJEXT) getfullhostname.$(HOST_OBJEXT) \
-+ hash.$(HOST_OBJEXT) heap.$(HOST_OBJEXT) \
-+ html_quote.$(HOST_OBJEXT) iso3307.$(HOST_OBJEXT) \
-+ $(am__host_objects_1) radix.$(HOST_OBJEXT) \
-+ rfc1035.$(HOST_OBJEXT) rfc1123.$(HOST_OBJEXT) \
-+ rfc1738.$(HOST_OBJEXT) rfc2617.$(HOST_OBJEXT) \
-+ safe_inet_addr.$(HOST_OBJEXT) $(am__host_objects_2) \
-+ splay.$(HOST_OBJEXT) Stack.$(HOST_OBJEXT) \
-+ stub_memaccount.$(HOST_OBJEXT) util.$(HOST_OBJEXT) \
-+ uudecode.$(HOST_OBJEXT)
- libmiscutil_a_OBJECTS = $(am_libmiscutil_a_OBJECTS)
-+libmiscutil_a_HOST_OBJECTS = $(am_libmiscutil_a_HOST_OBJECTS)
- libntlmauth_a_AR = $(AR) cru
- libntlmauth_a_DEPENDENCIES = @LIBOBJS@
- am_libntlmauth_a_OBJECTS = ntlmauth.$(OBJEXT)
-@@ -233,22 +277,42 @@
- @AMDEP_TRUE@ $(DEPDIR)/splay.Po $(DEPDIR)/strerror.Po \
- @AMDEP_TRUE@ $(DEPDIR)/stub_memaccount.Po $(DEPDIR)/tempnam.Po \
- @AMDEP_TRUE@ $(DEPDIR)/util.Po $(DEPDIR)/uudecode.Po
-+@AMDEP_TRUE@DEP_HOST_FILES = $(DEPDIR)/Array.Po.$(HOST_DEPEXT) $(DEPDIR)/GNUregex.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/Stack.Po.$(HOST_DEPEXT) $(DEPDIR)/base64.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/dlmalloc.Po.$(HOST_DEPEXT) $(DEPDIR)/drand48.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/getfullhostname.Po.$(HOST_DEPEXT) $(DEPDIR)/hash.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/heap.Po.$(HOST_DEPEXT) $(DEPDIR)/html_quote.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/inet_ntoa.Po.$(HOST_DEPEXT) $(DEPDIR)/initgroups.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/iso3307.Po.$(HOST_DEPEXT) $(DEPDIR)/md5.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/ntlmauth.Po.$(HOST_DEPEXT) $(DEPDIR)/radix.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/rfc1035.Po.$(HOST_DEPEXT) $(DEPDIR)/rfc1123.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/rfc1738.Po.$(HOST_DEPEXT) $(DEPDIR)/rfc2617.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/safe_inet_addr.Po.$(HOST_DEPEXT) $(DEPDIR)/snprintf.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/splay.Po.$(HOST_DEPEXT) $(DEPDIR)/strerror.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/stub_memaccount.Po.$(HOST_DEPEXT) $(DEPDIR)/tempnam.Po.$(HOST_DEPEXT) \
-+@AMDEP_TRUE@ $(DEPDIR)/util.Po.$(HOST_DEPEXT) $(DEPDIR)/uudecode.Po.$(HOST_DEPEXT)
-+
-+
- COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+HOST_COMPILE = $(HOST_CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+ $(AM_CFLAGS)
- CCLD = $(CC)
-+HOST_CCLD = ld
- LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+HOST_LINK = $(HOST_CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
- CFLAGS = @CFLAGS@
- DIST_SOURCES = $(libdlmalloc_a_SOURCES) $(libmiscutil_a_SOURCES) \
- $(EXTRA_libmiscutil_a_SOURCES) $(libntlmauth_a_SOURCES) \
-- $(libregex_a_SOURCES)
-+ $(libregex_a_SOURCES) $(libmiscutil_a_HOST_SOURCES)
- DIST_COMMON = Makefile.am Makefile.in drand48.c inet_ntoa.c \
- initgroups.c strerror.c tempnam.c
--SOURCES = $(libdlmalloc_a_SOURCES) $(libmiscutil_a_SOURCES) $(EXTRA_libmiscutil_a_SOURCES) $(libntlmauth_a_SOURCES) $(libregex_a_SOURCES)
-+SOURCES = $(libdlmalloc_a_SOURCES) $(libmiscutil_a_SOURCES) $(libmiscutil_a_HOST_SOURCES) $(EXTRA_libmiscutil_a_SOURCES) $(libntlmauth_a_SOURCES) $(libregex_a_SOURCES)
-
- all: all-am
-
- .SUFFIXES:
--.SUFFIXES: .c .o .obj
-+.SUFFIXES: .c .o .obj .o.$(shell uname -m)
- $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign lib/Makefile
-@@ -265,10 +329,13 @@
- -rm -f libdlmalloc.a
- $(libdlmalloc_a_AR) libdlmalloc.a $(libdlmalloc_a_OBJECTS) $(libdlmalloc_a_LIBADD)
- $(RANLIB) libdlmalloc.a
--libmiscutil.a: $(libmiscutil_a_OBJECTS) $(libmiscutil_a_DEPENDENCIES)
-+libmiscutil.a: $(libmiscutil_a_OBJECTS) $(libmiscutil_a_HOST_OBJECTS) $(libmiscutil_a_DEPENDENCIES)
- -rm -f libmiscutil.a
-+ -rm -f libmiscutil$(shell uname -m).a
- $(libmiscutil_a_AR) libmiscutil.a $(libmiscutil_a_OBJECTS) $(libmiscutil_a_LIBADD)
-+ ar rcu libmiscutil$(shell uname -m).a $(libmiscutil_a_HOST_OBJECTS) $(libmiscutil_a_HOST_LIBADD)
- $(RANLIB) libmiscutil.a
-+ ranlib libmiscutil$(shell uname -m).a
- libntlmauth.a: $(libntlmauth_a_OBJECTS) $(libntlmauth_a_DEPENDENCIES)
- -rm -f libntlmauth.a
- $(libntlmauth_a_AR) libntlmauth.a $(libntlmauth_a_OBJECTS) $(libntlmauth_a_LIBADD)
-@@ -313,6 +380,7 @@
- @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/util.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/uudecode.Po@am__quote@
-
-+
- distclean-depend:
- -rm -rf $(DEPDIR)
-
-@@ -321,7 +389,8 @@
- @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$<
--
-+.c.o.$(shell uname -m):
-+ $(HOST_COMPILE) -o $(shell basename $< .c).o.$(shell uname -m) -c $<
- .c.obj:
- @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-diff -urN squid-2.5.STABLE13/src/ctype.c squid-2.5.STABLE13.new/src/ctype.c
---- squid-2.5.STABLE13/src/ctype.c 1970-01-01 01:00:00.000000000 +0100
-+++ squid-2.5.STABLE13.new/src/ctype.c 2006-04-15 10:29:39.000000000 +0200
-@@ -0,0 +1,546 @@
-+/*
-+ Static ctype data for IFC-7.1 / RedHat-9 workaround.
-+ This is taken from the GLIBC source code.
-+ Hack by Joe Krahn <krahn@niehs.nih.gov>
-+
-+ To use, compile with gcc (ifc should work as well):
-+
-+ gcc -c ctype.c
-+
-+ Next, include the resulting ctype.o when creating executables.
-+ Do this automatically using a ~/.ifcrc file with a line like this:
-+
-+ -Wl,/some/path/ctype.o
-+
-+ That's all.
-+
-+ My .ifcrc also turns off the typically excessive warnings:
-+ -cm -w90 -w95 -Wl,/home/krahn/Prog/ctype/ctype.o
-+
-+ To IFC maintainters: it would be nice to flag on/off specific
-+ warning types, like -woff=22,33,44
-+
-+*/
-+
-+/*
-+ file: ctype.c
-+
-+ Derived from C-ctype.c and ctype-info.c in the GLIBC 2.3 source.
-+
-+ To compile: (either gcc or icc is OK)
-+ icc -c ctype.c
-+
-+ To use, just add the object file ctype.o at link stage. Example:
-+ ifc -o hello hello.f ctype.o
-+
-+*/
-+
-+
-+/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
-+
-+ 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 <stdint.h>
-+
-+/* This table's entries are taken from POSIX.2 Table 2-6
-+ ``LC_CTYPE Category Definition in the POSIX Locale''.
-+
-+ The `_nl_C_LC_CTYPE_width' array is a GNU extension.
-+
-+ In the `_nl_C_LC_CTYPE_class' array the value for EOF (== -1)
-+ is set to always return 0 and the conversion arrays return EOF. */
-+
-+const char _nl_C_LC_CTYPE_class[768] =
-+ /* 0x80 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0x86 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0x8c */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0x92 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0x98 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0x9e */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xa4 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xaa */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xb0 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xb6 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xbc */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xc2 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xc8 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xce */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xd4 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xda */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xe0 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xe6 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xec */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xf2 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xf8 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xfe */ "\000\000" "\000\000" "\002\000" "\002\000" "\002\000" "\002\000"
-+ /* 0x04 */ "\002\000" "\002\000" "\002\000" "\002\000" "\002\000" "\003\040"
-+ /* 0x0a */ "\002\040" "\002\040" "\002\040" "\002\040" "\002\000" "\002\000"
-+ /* 0x10 */ "\002\000" "\002\000" "\002\000" "\002\000" "\002\000" "\002\000"
-+ /* 0x16 */ "\002\000" "\002\000" "\002\000" "\002\000" "\002\000" "\002\000"
-+ /* 0x1c */ "\002\000" "\002\000" "\002\000" "\002\000" "\001\140" "\004\300"
-+ /* 0x22 */ "\004\300" "\004\300" "\004\300" "\004\300" "\004\300" "\004\300"
-+ /* 0x28 */ "\004\300" "\004\300" "\004\300" "\004\300" "\004\300" "\004\300"
-+ /* 0x2e */ "\004\300" "\004\300" "\010\330" "\010\330" "\010\330" "\010\330"
-+ /* 0x34 */ "\010\330" "\010\330" "\010\330" "\010\330" "\010\330" "\010\330"
-+ /* 0x3a */ "\004\300" "\004\300" "\004\300" "\004\300" "\004\300" "\004\300"
-+ /* 0x40 */ "\004\300" "\010\325" "\010\325" "\010\325" "\010\325" "\010\325"
-+ /* 0x46 */ "\010\325" "\010\305" "\010\305" "\010\305" "\010\305" "\010\305"
-+ /* 0x4c */ "\010\305" "\010\305" "\010\305" "\010\305" "\010\305" "\010\305"
-+ /* 0x52 */ "\010\305" "\010\305" "\010\305" "\010\305" "\010\305" "\010\305"
-+ /* 0x58 */ "\010\305" "\010\305" "\010\305" "\004\300" "\004\300" "\004\300"
-+ /* 0x5e */ "\004\300" "\004\300" "\004\300" "\010\326" "\010\326" "\010\326"
-+ /* 0x64 */ "\010\326" "\010\326" "\010\326" "\010\306" "\010\306" "\010\306"
-+ /* 0x6a */ "\010\306" "\010\306" "\010\306" "\010\306" "\010\306" "\010\306"
-+ /* 0x70 */ "\010\306" "\010\306" "\010\306" "\010\306" "\010\306" "\010\306"
-+ /* 0x76 */ "\010\306" "\010\306" "\010\306" "\010\306" "\010\306" "\004\300"
-+ /* 0x7c */ "\004\300" "\004\300" "\004\300" "\002\000" "\000\000" "\000\000"
-+ /* 0x82 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0x88 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0x8e */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0x94 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0x9a */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xa0 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xa6 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xac */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xb2 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xb8 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xbe */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xc4 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xca */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xd0 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xd6 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xdc */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xe2 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xe8 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xee */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xf4 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+ /* 0xfa */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
-+;
-+const char _nl_C_LC_CTYPE_class32[1024] =
-+ /* 0x00 */ "\000\000\002\000" "\000\000\002\000" "\000\000\002\000"
-+ /* 0x03 */ "\000\000\002\000" "\000\000\002\000" "\000\000\002\000"
-+ /* 0x06 */ "\000\000\002\000" "\000\000\002\000" "\000\000\002\000"
-+ /* 0x09 */ "\000\000\003\040" "\000\000\002\040" "\000\000\002\040"
-+ /* 0x0c */ "\000\000\002\040" "\000\000\002\040" "\000\000\002\000"
-+ /* 0x0f */ "\000\000\002\000" "\000\000\002\000" "\000\000\002\000"
-+ /* 0x12 */ "\000\000\002\000" "\000\000\002\000" "\000\000\002\000"
-+ /* 0x15 */ "\000\000\002\000" "\000\000\002\000" "\000\000\002\000"
-+ /* 0x18 */ "\000\000\002\000" "\000\000\002\000" "\000\000\002\000"
-+ /* 0x1b */ "\000\000\002\000" "\000\000\002\000" "\000\000\002\000"
-+ /* 0x1e */ "\000\000\002\000" "\000\000\002\000" "\000\000\001\140"
-+ /* 0x21 */ "\000\000\004\300" "\000\000\004\300" "\000\000\004\300"
-+ /* 0x24 */ "\000\000\004\300" "\000\000\004\300" "\000\000\004\300"
-+ /* 0x27 */ "\000\000\004\300" "\000\000\004\300" "\000\000\004\300"
-+ /* 0x2a */ "\000\000\004\300" "\000\000\004\300" "\000\000\004\300"
-+ /* 0x2d */ "\000\000\004\300" "\000\000\004\300" "\000\000\004\300"
-+ /* 0x30 */ "\000\000\010\330" "\000\000\010\330" "\000\000\010\330"
-+ /* 0x33 */ "\000\000\010\330" "\000\000\010\330" "\000\000\010\330"
-+ /* 0x36 */ "\000\000\010\330" "\000\000\010\330" "\000\000\010\330"
-+ /* 0x39 */ "\000\000\010\330" "\000\000\004\300" "\000\000\004\300"
-+ /* 0x3c */ "\000\000\004\300" "\000\000\004\300" "\000\000\004\300"
-+ /* 0x3f */ "\000\000\004\300" "\000\000\004\300" "\000\000\010\325"
-+ /* 0x42 */ "\000\000\010\325" "\000\000\010\325" "\000\000\010\325"
-+ /* 0x45 */ "\000\000\010\325" "\000\000\010\325" "\000\000\010\305"
-+ /* 0x48 */ "\000\000\010\305" "\000\000\010\305" "\000\000\010\305"
-+ /* 0x4b */ "\000\000\010\305" "\000\000\010\305" "\000\000\010\305"
-+ /* 0x4e */ "\000\000\010\305" "\000\000\010\305" "\000\000\010\305"
-+ /* 0x51 */ "\000\000\010\305" "\000\000\010\305" "\000\000\010\305"
-+ /* 0x54 */ "\000\000\010\305" "\000\000\010\305" "\000\000\010\305"
-+ /* 0x57 */ "\000\000\010\305" "\000\000\010\305" "\000\000\010\305"
-+ /* 0x5a */ "\000\000\010\305" "\000\000\004\300" "\000\000\004\300"
-+ /* 0x5d */ "\000\000\004\300" "\000\000\004\300" "\000\000\004\300"
-+ /* 0x60 */ "\000\000\004\300" "\000\000\010\326" "\000\000\010\326"
-+ /* 0x63 */ "\000\000\010\326" "\000\000\010\326" "\000\000\010\326"
-+ /* 0x66 */ "\000\000\010\326" "\000\000\010\306" "\000\000\010\306"
-+ /* 0x69 */ "\000\000\010\306" "\000\000\010\306" "\000\000\010\306"
-+ /* 0x6c */ "\000\000\010\306" "\000\000\010\306" "\000\000\010\306"
-+ /* 0x6f */ "\000\000\010\306" "\000\000\010\306" "\000\000\010\306"
-+ /* 0x72 */ "\000\000\010\306" "\000\000\010\306" "\000\000\010\306"
-+ /* 0x75 */ "\000\000\010\306" "\000\000\010\306" "\000\000\010\306"
-+ /* 0x78 */ "\000\000\010\306" "\000\000\010\306" "\000\000\010\306"
-+ /* 0x7b */ "\000\000\004\300" "\000\000\004\300" "\000\000\004\300"
-+ /* 0x7e */ "\000\000\004\300" "\000\000\002\000" "\000\000\000\000"
-+ /* 0x81 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0x84 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0x87 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0x8a */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0x8d */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0x90 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0x93 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0x96 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0x99 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0x9c */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0x9f */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xa2 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xa5 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xa8 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xab */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xae */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xb1 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xb4 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xb7 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xba */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xbd */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xc0 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xc3 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xc6 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xc9 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xcc */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xcf */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xd2 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xd5 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xd8 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xdb */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xde */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xe1 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xe4 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xe7 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xea */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xed */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xf0 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xf3 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xf6 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xf9 */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xfc */ "\000\000\000\000" "\000\000\000\000" "\000\000\000\000"
-+ /* 0xff */ "\000\000\000\000"
-+;
-+const uint32_t _nl_C_LC_CTYPE_toupper[384] =
-+{
-+ /* 0x80 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
-+ /* 0x88 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
-+ /* 0x90 */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
-+ /* 0x98 */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
-+ /* 0xa0 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
-+ /* 0xa8 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
-+ /* 0xb0 */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
-+ /* 0xb8 */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
-+ /* 0xc0 */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
-+ /* 0xc8 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
-+ /* 0xd0 */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
-+ /* 0xd8 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
-+ /* 0xe0 */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
-+ /* 0xe8 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
-+ /* 0xf0 */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
-+ /* 0xf8 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xffffffff,
-+ /* 0x00 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-+ /* 0x08 */ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-+ /* 0x10 */ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
-+ /* 0x18 */ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
-+ /* 0x20 */ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
-+ /* 0x28 */ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
-+ /* 0x30 */ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-+ /* 0x38 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
-+ /* 0x40 */ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
-+ /* 0x48 */ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
-+ /* 0x50 */ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
-+ /* 0x58 */ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
-+ /* 0x60 */ 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
-+ /* 0x68 */ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
-+ /* 0x70 */ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
-+ /* 0x78 */ 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
-+ /* 0x80 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
-+ /* 0x88 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
-+ /* 0x90 */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
-+ /* 0x98 */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
-+ /* 0xa0 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
-+ /* 0xa8 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
-+ /* 0xb0 */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
-+ /* 0xb8 */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
-+ /* 0xc0 */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
-+ /* 0xc8 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
-+ /* 0xd0 */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
-+ /* 0xd8 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
-+ /* 0xe0 */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
-+ /* 0xe8 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
-+ /* 0xf0 */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
-+ /* 0xf8 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
-+};
-+const uint32_t _nl_C_LC_CTYPE_tolower[384] =
-+{
-+ /* 0x80 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
-+ /* 0x88 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
-+ /* 0x90 */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
-+ /* 0x98 */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
-+ /* 0xa0 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
-+ /* 0xa8 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
-+ /* 0xb0 */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
-+ /* 0xb8 */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
-+ /* 0xc0 */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
-+ /* 0xc8 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
-+ /* 0xd0 */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
-+ /* 0xd8 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
-+ /* 0xe0 */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
-+ /* 0xe8 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
-+ /* 0xf0 */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
-+ /* 0xf8 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xffffffff,
-+ /* 0x00 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-+ /* 0x08 */ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-+ /* 0x10 */ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
-+ /* 0x18 */ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
-+ /* 0x20 */ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
-+ /* 0x28 */ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
-+ /* 0x30 */ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-+ /* 0x38 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
-+ /* 0x40 */ 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
-+ /* 0x48 */ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
-+ /* 0x50 */ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
-+ /* 0x58 */ 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
-+ /* 0x60 */ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
-+ /* 0x68 */ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
-+ /* 0x70 */ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
-+ /* 0x78 */ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
-+ /* 0x80 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
-+ /* 0x88 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
-+ /* 0x90 */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
-+ /* 0x98 */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
-+ /* 0xa0 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
-+ /* 0xa8 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
-+ /* 0xb0 */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
-+ /* 0xb8 */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
-+ /* 0xc0 */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
-+ /* 0xc8 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
-+ /* 0xd0 */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
-+ /* 0xd8 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
-+ /* 0xe0 */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
-+ /* 0xe8 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
-+ /* 0xf0 */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
-+ /* 0xf8 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
-+};
-+
-+#define STRUCT_CTYPE_CLASS(p, q) \
-+ struct \
-+ { \
-+ uint32_t isctype_data[8]; \
-+ uint32_t header[5]; \
-+ uint32_t level1[1]; \
-+ uint32_t level2[1 << q]; \
-+ uint32_t level3[1 << p]; \
-+ }
-+
-+const STRUCT_CTYPE_CLASS(1, 1) _nl_C_LC_CTYPE_class_upper =
-+{
-+ { 0x00000000, 0x00000000, 0x07fffffe, 0x00000000,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ },
-+ { 7, 1, 6, 1, 1 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 0, 8 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ { 0x07fffffe, 0x00000000 }
-+};
-+const STRUCT_CTYPE_CLASS(1, 1) _nl_C_LC_CTYPE_class_lower =
-+{
-+ { 0x00000000, 0x00000000, 0x00000000, 0x07fffffe,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ },
-+ { 7, 1, 6, 1, 1 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 0, 8 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ { 0x00000000, 0x07fffffe }
-+};
-+const STRUCT_CTYPE_CLASS(1, 1) _nl_C_LC_CTYPE_class_alpha =
-+{
-+ { 0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ },
-+ { 7, 1, 6, 1, 1 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 0, 8 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ { 0x07fffffe, 0x07fffffe }
-+};
-+const STRUCT_CTYPE_CLASS(1, 0) _nl_C_LC_CTYPE_class_digit =
-+{
-+ { 0x00000000, 0x03ff0000, 0x00000000, 0x00000000,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ },
-+ { 6, 1, 6, 0, 1 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 7 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ { 0x00000000, 0x03ff0000 }
-+};
-+const STRUCT_CTYPE_CLASS(2, 0) _nl_C_LC_CTYPE_class_xdigit =
-+{
-+ { 0x00000000, 0x03ff0000, 0x0000007e, 0x0000007e,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ },
-+ { 7, 1, 7, 0, 3 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 7 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ { 0x00000000, 0x03ff0000, 0x0000007e, 0x0000007e }
-+};
-+const STRUCT_CTYPE_CLASS(1, 0) _nl_C_LC_CTYPE_class_space =
-+{
-+ { 0x00003e00, 0x00000001, 0x00000000, 0x00000000,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ },
-+ { 6, 1, 6, 0, 1 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 7 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ { 0x00003e00, 0x00000001 }
-+};
-+const STRUCT_CTYPE_CLASS(2, 0) _nl_C_LC_CTYPE_class_print =
-+{
-+ { 0x00000000, 0xffffffff, 0xffffffff, 0x7fffffff,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ },
-+ { 7, 1, 7, 0, 3 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 7 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ { 0x00000000, 0xffffffff, 0xffffffff, 0x7fffffff }
-+};
-+const STRUCT_CTYPE_CLASS(2, 0) _nl_C_LC_CTYPE_class_graph =
-+{
-+ { 0x00000000, 0xfffffffe, 0xffffffff, 0x7fffffff,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ },
-+ { 7, 1, 7, 0, 3 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 7 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ { 0x00000000, 0xfffffffe, 0xffffffff, 0x7fffffff }
-+};
-+const STRUCT_CTYPE_CLASS(1, 0) _nl_C_LC_CTYPE_class_blank =
-+{
-+ { 0x00000200, 0x00000001, 0x00000000, 0x00000000,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ },
-+ { 6, 1, 6, 0, 1 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 7 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ { 0x00000200, 0x00000001 }
-+};
-+const STRUCT_CTYPE_CLASS(2, 0) _nl_C_LC_CTYPE_class_cntrl =
-+{
-+ { 0xffffffff, 0x00000000, 0x00000000, 0x80000000,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ },
-+ { 7, 1, 7, 0, 3 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 7 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ { 0xffffffff, 0x00000000, 0x00000000, 0x80000000 }
-+};
-+const STRUCT_CTYPE_CLASS(2, 0) _nl_C_LC_CTYPE_class_punct =
-+{
-+ { 0x00000000, 0xfc00fffe, 0xf8000001, 0x78000001,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ },
-+ { 7, 1, 7, 0, 3 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 7 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ { 0x00000000, 0xfc00fffe, 0xf8000001, 0x78000001 }
-+};
-+const STRUCT_CTYPE_CLASS(2, 0) _nl_C_LC_CTYPE_class_alnum =
-+{
-+ { 0x00000000, 0x03ff0000, 0x07fffffe, 0x07fffffe,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ },
-+ { 7, 1, 7, 0, 3 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 7 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ { 0x00000000, 0x03ff0000, 0x07fffffe, 0x07fffffe }
-+};
-+
-+const struct
-+{
-+ uint32_t header[5];
-+ uint32_t level1[1];
-+ uint32_t level2[4];
-+ int32_t level3[32];
-+}
-+_nl_C_LC_CTYPE_map_toupper =
-+{
-+ { 7, 1, 5, 3, 31 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 0, 0, 0, 10 * sizeof (uint32_t) },
-+ /* 3rd-level table */
-+ {
-+ 0x00000000, 0xffffffe0, 0xffffffe0, 0xffffffe0,
-+ 0xffffffe0, 0xffffffe0, 0xffffffe0, 0xffffffe0,
-+ 0xffffffe0, 0xffffffe0, 0xffffffe0, 0xffffffe0,
-+ 0xffffffe0, 0xffffffe0, 0xffffffe0, 0xffffffe0,
-+ 0xffffffe0, 0xffffffe0, 0xffffffe0, 0xffffffe0,
-+ 0xffffffe0, 0xffffffe0, 0xffffffe0, 0xffffffe0,
-+ 0xffffffe0, 0xffffffe0, 0xffffffe0, 0x00000000,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ }
-+},
-+_nl_C_LC_CTYPE_map_tolower =
-+{
-+ { 7, 1, 5, 3, 31 },
-+ /* 1st-level table */
-+ { 6 * sizeof (uint32_t) },
-+ /* 2nd-level table */
-+ { 0, 0, 10 * sizeof (uint32_t), 0 },
-+ /* 3rd-level table */
-+ {
-+ 0x00000000, 0x00000020, 0x00000020, 0x00000020,
-+ 0x00000020, 0x00000020, 0x00000020, 0x00000020,
-+ 0x00000020, 0x00000020, 0x00000020, 0x00000020,
-+ 0x00000020, 0x00000020, 0x00000020, 0x00000020,
-+ 0x00000020, 0x00000020, 0x00000020, 0x00000020,
-+ 0x00000020, 0x00000020, 0x00000020, 0x00000020,
-+ 0x00000020, 0x00000020, 0x00000020, 0x00000000,
-+ 0x00000000, 0x00000000, 0x00000000, 0x00000000
-+ }
-+};
-+
-+#define b(t,x,o) (((const t *) _nl_C_LC_CTYPE_##x) + o)
-+
-+const uint16_t *__ctype_b = b (uint16_t, class, 128);
-+const uint32_t *__ctype32_b = b (uint32_t, class32, 0);
-+const int32_t *__ctype_tolower = b (int32_t, tolower, 128);
-+const int32_t *__ctype_toupper = b (int32_t, toupper, 128);
-+const uint32_t *__ctype32_tolower = b (uint32_t, tolower, 128);
-+const uint32_t *__ctype32_toupper = b (uint32_t, toupper, 128);
-+
-diff -urN squid-2.5.STABLE13/src/Makefile.in squid-2.5.STABLE13.new/src/Makefile.in
---- squid-2.5.STABLE13/src/Makefile.in 2005-09-28 22:57:21.000000000 +0200
-+++ squid-2.5.STABLE13.new/src/Makefile.in 2006-04-15 10:29:39.000000000 +0200
-@@ -1141,6 +1143,9 @@
- $(SHELL) -c "test -f squid.conf.default || ./cf_gen cf.data"
-
- cf_parser.h: cf.data cf_gen$(EXEEXT)
-+ rm -f cf_gen
-+ gcc -c ctype.c
-+ gcc -o cf_gen cf_gen.c -I./ -I../ -I../include/ -L../lib -lmiscutil$(shell uname -m) -lm -lnsl -Wl,ctype.o
- ./cf_gen cf.data
-
- cf_gen_defines.h: $(srcdir)/cf_gen_defines $(srcdir)/cf.data.pre
diff --git a/openwrt/package/srelay/Config.in b/openwrt/package/srelay/Config.in
deleted file mode 100644
index b33a47ecb4..0000000000
--- a/openwrt/package/srelay/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_SRELAY
- prompt "srelay............................ A socks 4/5 proxy server"
- tristate
- default m if CONFIG_DEVEL
- help
- A socks 4/5 protocol proxy server
-
- http://www.c-wind.com/srelay/
-
diff --git a/openwrt/package/srelay/Makefile b/openwrt/package/srelay/Makefile
deleted file mode 100644
index 9dc0b9545b..0000000000
--- a/openwrt/package/srelay/Makefile
+++ /dev/null
@@ -1,67 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=srelay
-PKG_VERSION:=0.4.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=4a9f3298b38d8588f0ffde31b946a47f
-
-PKG_SOURCE_URL:=@SF/socks-relay
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-PKG_INIT_LEVEL:=60
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SRELAY,srelay,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- --disable-thread \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- all
- $(CP) $(PKG_BUILD_DIR)/srelay $(PKG_INSTALL_DIR)
- touch $@
-
-$(IPKG_SRELAY):
- install -m0755 -d $(IDIR_SRELAY)/usr/bin
- install -m0755 -d $(IDIR_SRELAY)/etc/init.d
- $(CP) $(PKG_INSTALL_DIR)/srelay $(IDIR_SRELAY)/usr/bin/
- $(CP) files/srelay.init $(IDIR_SRELAY)/etc/init.d/S$(PKG_INIT_LEVEL)srelay
- $(CP) files/srelay.conf $(IDIR_SRELAY)/etc
- chmod 755 $(IDIR_SRELAY)/etc/init.d/S$(PKG_INIT_LEVEL)srelay
- $(RSTRIP) $(IDIR_SRELAY)
- $(IPKG_BUILD) $(IDIR_SRELAY) $(PACKAGE_DIR)
diff --git a/openwrt/package/srelay/files/srelay.conf b/openwrt/package/srelay/files/srelay.conf
deleted file mode 100644
index e5d53ec966..0000000000
--- a/openwrt/package/srelay/files/srelay.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-# allow local subnet to access socks proxy
-192.168.1.0/24 any -
diff --git a/openwrt/package/srelay/files/srelay.init b/openwrt/package/srelay/files/srelay.init
deleted file mode 100755
index 9e5a5f5654..0000000000
--- a/openwrt/package/srelay/files/srelay.init
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-if [ -f /etc/srelay.conf ];then
- srelay -c /etc/srelay.conf -r -s
-fi
diff --git a/openwrt/package/srelay/ipkg/srelay.conffiles b/openwrt/package/srelay/ipkg/srelay.conffiles
deleted file mode 100644
index d821cfd26c..0000000000
--- a/openwrt/package/srelay/ipkg/srelay.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/srelay.conf
diff --git a/openwrt/package/srelay/ipkg/srelay.control b/openwrt/package/srelay/ipkg/srelay.control
deleted file mode 100644
index fdc21c8649..0000000000
--- a/openwrt/package/srelay/ipkg/srelay.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: srelay
-Priority: optional
-Section: net
-Description: A socks 4/5 proxy server
diff --git a/openwrt/package/srelay/patches/01-cross_compile.patch b/openwrt/package/srelay/patches/01-cross_compile.patch
deleted file mode 100644
index cda32e6aa7..0000000000
--- a/openwrt/package/srelay/patches/01-cross_compile.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN srelay-0.4.6/configure srelay-0.4.6.new/configure
---- srelay-0.4.6/configure 2003-04-14 07:36:15.000000000 +0200
-+++ srelay-0.4.6.new/configure 2006-03-28 15:11:42.000000000 +0200
-@@ -1395,7 +1395,7 @@
- ;;
- linux*)
- case "$build_cpu" in
-- i*86)
-+ i*86 | mips* | powerpc* | sparc*)
- OS=LINUX
- cat >>confdefs.h <<\_ACEOF
- #define LINUX 1
diff --git a/openwrt/package/ssltunnel/Config.in b/openwrt/package/ssltunnel/Config.in
deleted file mode 100644
index 169c5c528c..0000000000
--- a/openwrt/package/ssltunnel/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_SSLTUNNEL
- prompt "ssltunnel ........................ A PPP over SSL vpn tool"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_PPP
- help
- A PPP over SSL vpn tool
-
- http://www.hsc.fr/ressources/outils/ssltunnel/index.html
-
diff --git a/openwrt/package/ssltunnel/Makefile b/openwrt/package/ssltunnel/Makefile
deleted file mode 100644
index a880bd411c..0000000000
--- a/openwrt/package/ssltunnel/Makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ssltunnel
-PKG_VERSION:=1.15
-PKG_RELEASE:=1
-PKG_MD5SUM:=bfe529edb9b6c97bc03d213676b1f35d
-
-PKG_SOURCE_URL:=http://www.hsc.fr/ressources/outils/ssltunnel/download
-PKG_SOURCE:=${PKG_NAME}-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SSLTUNNEL,ssltunnel,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- BUILD_CC=$(TARGET_CC) HOSTCC=$(HOSTCC) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CCOPT="$(TARGET_CFLAGS)" INCLS="-I. -I$(STAGING_DIR)/usr/include" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_SSLTUNNEL):
- install -m0755 -d $(IDIR_SSLTUNNEL)/usr/bin
- install -m0755 -d $(IDIR_SSLTUNNEL)/usr/sbin
- install -m0755 -d $(IDIR_SSLTUNNEL)/usr/lib
- install -m0755 $(PKG_INSTALL_DIR)/usr/bin/pppclient $(IDIR_SSLTUNNEL)/usr/bin/
- install -m0755 $(PKG_INSTALL_DIR)/usr/sbin/pppwho $(IDIR_SSLTUNNEL)/usr/sbin/
- install -m0755 $(PKG_INSTALL_DIR)/usr/lib/pppserver $(IDIR_SSLTUNNEL)/usr/lib/
- $(RSTRIP) $(IDIR_SSLTUNNEL)
- $(IPKG_BUILD) $(IDIR_SSLTUNNEL) $(PACKAGE_DIR)
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/ssltunnel/ipkg/ssltunnel.control b/openwrt/package/ssltunnel/ipkg/ssltunnel.control
deleted file mode 100644
index 84fb8b68a7..0000000000
--- a/openwrt/package/ssltunnel/ipkg/ssltunnel.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ssltunnel
-Priority: optional
-Section: net
-Description: A PPP over SSL vpn tool
-Depends: libopenssl, ppp
diff --git a/openwrt/package/ssmtp/Config.in b/openwrt/package/ssmtp/Config.in
deleted file mode 100644
index a85cc090ec..0000000000
--- a/openwrt/package/ssmtp/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_SSMTP
- prompt "ssmtp............................. A minimal and secure mail sender"
- tristate
- default m if CONFIG_DEVEL
- help
- A secure, effective and simple way of getting mail off a system to your
- mail hub. It contains no suid-binaries or other dangerous things - no
- mail spool to poke around in, and no daemons running in the background.
- Mail is simply forwarded to the configured mailhost. Extremely easy
- configuration.
-
- http://packages.debian.org/stable/mail/ssmtp
-
diff --git a/openwrt/package/ssmtp/Makefile b/openwrt/package/ssmtp/Makefile
deleted file mode 100644
index 3204ca8786..0000000000
--- a/openwrt/package/ssmtp/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ssmtp
-PKG_VERSION:=2.61
-PKG_RELEASE:=1
-PKG_MD5SUM:=957e6fff08625fe34f4fc33d0925bbc9
-
-PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/s/ssmtp/
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-BR2_PACKAGE_SSMTP=m
-
-$(eval $(call PKG_template,SSMTP,ssmtp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- all
- touch $@
-
-$(IPKG_SSMTP):
- install -m0755 -d $(IDIR_SSMTP)/etc/ssmtp
- install -m0644 $(PKG_BUILD_DIR)/ssmtp.conf $(IDIR_SSMTP)/etc/ssmtp/
- install -m0644 $(PKG_BUILD_DIR)/revaliases $(IDIR_SSMTP)/etc/ssmtp/
- install -m0755 -d $(IDIR_SSMTP)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/ssmtp $(IDIR_SSMTP)/usr/sbin/
- ln -sf ssmtp $(IDIR_SSMTP)/usr/sbin/sendmail
- $(RSTRIP) $(IDIR_SSMTP)
- $(IPKG_BUILD) $(IDIR_SSMTP) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/ssmtp/ipkg/ssmtp.conffiles b/openwrt/package/ssmtp/ipkg/ssmtp.conffiles
deleted file mode 100644
index d1da3e1792..0000000000
--- a/openwrt/package/ssmtp/ipkg/ssmtp.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/ssmtp/ssmtp.conf
-/etc/ssmtp/revaliases
diff --git a/openwrt/package/ssmtp/ipkg/ssmtp.control b/openwrt/package/ssmtp/ipkg/ssmtp.control
deleted file mode 100644
index ec93600595..0000000000
--- a/openwrt/package/ssmtp/ipkg/ssmtp.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: ssmtp
-Priority: optional
-Section: net
-Description: A minimal and secure mail sender
diff --git a/openwrt/package/ssmtp/patches/500-debian-subset-2.61-2.patch b/openwrt/package/ssmtp/patches/500-debian-subset-2.61-2.patch
deleted file mode 100644
index f682c97a13..0000000000
--- a/openwrt/package/ssmtp/patches/500-debian-subset-2.61-2.patch
+++ /dev/null
@@ -1,248 +0,0 @@
---- ssmtp-2.61.orig/ssmtp.conf
-+++ ssmtp-2.61/ssmtp.conf
-@@ -36,3 +36,8 @@
-
- # Use this RSA certificate.
- #TLSCert=/etc/ssl/certs/ssmtp.pem
-+
-+# Get enhanced (*really* enhanced) debugging information in the logs
-+# If you want to have debugging of the config file parsing, move this option
-+# to the top of the config file and uncomment
-+#Debug=YES
---- ssmtp-2.61.orig/ssmtp.c
-+++ ssmtp-2.61/ssmtp.c
-@@ -93,6 +93,7 @@
- static char hextab[]="0123456789abcdef";
- #endif
-
-+ssize_t outbytes;
-
- /*
- log_event() -- Write event to syslog (or log file if defined)
-@@ -129,7 +130,7 @@
- #endif
- }
-
--void smtp_write(int fd, char *format, ...);
-+ssize_t smtp_write(int fd, char *format, ...);
- int smtp_read(int fd, char *response);
- int smtp_read_all(int fd, char *response);
- int smtp_okay(int fd, char *response);
-@@ -150,7 +151,7 @@
- if(isatty(fileno(stdin))) {
- if(log_level > 0) {
- log_event(LOG_ERR,
-- "stdin is a TTY - not saving to %s/dead.letter, pw->pw_dir");
-+ "stdin is a TTY - not saving to %s/dead.letter", pw->pw_dir);
- }
- return;
- }
-@@ -964,6 +965,17 @@
- log_event(LOG_INFO, "Set AuthMethod=\"%s\"\n", auth_method);
- }
- }
-+ else if (strcasecmp(p, "Debug") == 0)
-+ {
-+ if (strcasecmp(q, "YES") == 0)
-+ {
-+ log_level = 1;
-+ }
-+ else
-+ {
-+ log_level = 0;
-+ }
-+ }
- else {
- log_event(LOG_INFO, "Unable to set %s=\"%s\"\n", p, q);
- }
-@@ -1232,10 +1244,11 @@
- /*
- smtp_write() -- A printf to an fd and append <CR/LF>
- */
--void smtp_write(int fd, char *format, ...)
-+ssize_t smtp_write(int fd, char *format, ...)
- {
- char buf[(BUF_SZ + 1)];
- va_list ap;
-+ ssize_t outbytes = 0;
-
- va_start(ap, format);
- if(vsnprintf(buf, (BUF_SZ - 2), format, ap) == -1) {
-@@ -1252,7 +1265,9 @@
- }
- (void)strcat(buf, "\r\n");
-
-- (void)fd_puts(fd, buf, strlen(buf));
-+ outbytes = fd_puts(fd, buf, strlen(buf));
-+
-+ return (outbytes >= 0) ? outbytes : 0;
- }
-
- /*
-@@ -1282,6 +1297,8 @@
- int i, sock;
- uid_t uid;
-
-+ outbytes = 0;
-+
- uid = getuid();
- if((pw = getpwuid(uid)) == (struct passwd *)NULL) {
- die("Could not find password entry for UID %d", uid);
-@@ -1335,10 +1352,10 @@
-
- /* If user supplied username and password, then try ELHO */
- if(auth_user) {
-- smtp_write(sock, "EHLO %s", hostname);
-+ outbytes += smtp_write(sock, "EHLO %s", hostname);
- }
- else {
-- smtp_write(sock, "HELO %s", hostname);
-+ outbytes += smtp_write(sock, "HELO %s", hostname);
- }
- (void)alarm((unsigned) MEDWAIT);
-
-@@ -1354,7 +1371,7 @@
- }
-
- if(strcasecmp(auth_method, "cram-md5") == 0) {
-- smtp_write(sock, "AUTH CRAM-MD5");
-+ outbytes += smtp_write(sock, "AUTH CRAM-MD5");
- (void)alarm((unsigned) MEDWAIT);
-
- if(smtp_read(sock, buf) != 3) {
-@@ -1369,7 +1386,7 @@
- #endif
- memset(buf, 0, sizeof(buf));
- to64frombits(buf, auth_user, strlen(auth_user));
-- smtp_write(sock, "AUTH LOGIN %s", buf);
-+ outbytes += smtp_write(sock, "AUTH LOGIN %s", buf);
-
- (void)alarm((unsigned) MEDWAIT);
- if(smtp_read(sock, buf) != 3) {
-@@ -1381,7 +1398,7 @@
- #ifdef MD5AUTH
- }
- #endif
-- smtp_write(sock, "%s", buf);
-+ outbytes += smtp_write(sock, "%s", buf);
- (void)alarm((unsigned) MEDWAIT);
-
- if(smtp_okay(sock, buf) == False) {
-@@ -1390,7 +1407,7 @@
- }
-
- /* Send "MAIL FROM:" line */
-- smtp_write(sock, "MAIL FROM:<%s>", uad);
-+ outbytes += smtp_write(sock, "MAIL FROM:<%s>", uad);
-
- (void)alarm((unsigned) MEDWAIT);
-
-@@ -1408,7 +1425,7 @@
-
- while(rt->next) {
- p = rcpt_remap(rt->string);
-- smtp_write(sock, "RCPT TO:<%s>", p);
-+ outbytes += smtp_write(sock, "RCPT TO:<%s>", p);
-
- (void)alarm((unsigned)MEDWAIT);
-
-@@ -1425,7 +1442,7 @@
- while(p) {
- /* RFC822 Address -> "foo@bar" */
- q = rcpt_remap(addr_parse(p));
-- smtp_write(sock, "RCPT TO:<%s>", q);
-+ outbytes += smtp_write(sock, "RCPT TO:<%s>", q);
-
- (void)alarm((unsigned) MEDWAIT);
-
-@@ -1439,7 +1456,7 @@
- }
-
- /* Send DATA */
-- smtp_write(sock, "DATA");
-+ outbytes += smtp_write(sock, "DATA");
- (void)alarm((unsigned) MEDWAIT);
-
- if(smtp_read(sock, buf) != 3) {
-@@ -1447,45 +1464,45 @@
- die("%s", buf);
- }
-
-- smtp_write(sock,
-+ outbytes += smtp_write(sock,
- "Received: by %s (sSMTP sendmail emulation); %s", hostname, arpadate);
-
- if(have_from == False) {
-- smtp_write(sock, "From: %s", from);
-+ outbytes += smtp_write(sock, "From: %s", from);
- }
-
- if(have_date == False) {
-- smtp_write(sock, "Date: %s", arpadate);
-+ outbytes += smtp_write(sock, "Date: %s", arpadate);
- }
-
- #ifdef HASTO_OPTION
- if(have_to == False) {
-- smtp_write(sock, "To: postmaster");
-+ outbytes += smtp_write(sock, "To: postmaster");
- }
- #endif
-
- ht = &headers;
- while(ht->next) {
-- smtp_write(sock, "%s", ht->string);
-+ outbytes += smtp_write(sock, "%s", ht->string);
- ht = ht->next;
- }
-
- (void)alarm((unsigned) MEDWAIT);
-
- /* End of headers, start body */
-- smtp_write(sock, "");
-+ outbytes += smtp_write(sock, "");
-
- while(fgets(buf, sizeof(buf), stdin)) {
- /* Trim off \n, double leading .'s */
- standardise(buf);
-
-- smtp_write(sock, "%s", buf);
-+ outbytes += smtp_write(sock, "%s", buf);
-
- (void)alarm((unsigned) MEDWAIT);
- }
- /* End of body */
-
-- smtp_write(sock, ".");
-+ outbytes += smtp_write(sock, ".");
- (void)alarm((unsigned) MAXWAIT);
-
- if(smtp_okay(sock, buf) == 0) {
-@@ -1495,11 +1512,12 @@
- /* Close conection */
- (void)signal(SIGALRM, SIG_IGN);
-
-- smtp_write(sock, "QUIT");
-+ outbytes += smtp_write(sock, "QUIT");
- (void)smtp_okay(sock, buf);
- (void)close(sock);
-
-- log_event(LOG_INFO, "Sent mail for %s (%s)", from_strip(uad), buf);
-+ log_event(LOG_INFO, "Sent mail for %s (%s) uid=%d username=%s outbytes=%d",
-+ from_strip(uad), buf, uid, pw->pw_name, outbytes);
-
- return(0);
- }
---- ssmtp-2.61.orig/configure.in
-+++ ssmtp-2.61/configure.in
-@@ -24,8 +24,8 @@
- AC_STRUCT_TM
-
- dnl Checks for libraries.
--AC_CHECK_LIB(nsl, gethostname)
--AC_CHECK_LIB(socket, socket)
-+AC_SEARCH_LIBS(gethostname, nsl)
-+AC_SEARCH_LIBS(socket, socket)
-
- dnl Checks for library functions.
- AC_TYPE_SIGNAL
diff --git a/openwrt/package/ssmtp/patches/901-strftime_space_padding.patch b/openwrt/package/ssmtp/patches/901-strftime_space_padding.patch
deleted file mode 100644
index dd0b9b116a..0000000000
--- a/openwrt/package/ssmtp/patches/901-strftime_space_padding.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN ssmtp-2.60-old/arpadate.c ssmtp-2.60-new/arpadate.c
---- ssmtp-2.60-old/arpadate.c 2002-12-08 18:30:11.000000000 +0100
-+++ ssmtp-2.60-new/arpadate.c 2004-05-23 18:54:32.000000000 +0200
-@@ -79,7 +79,7 @@
- time_t now;
-
- /* RFC822 format string borrowed from GNU shellutils date.c */
-- const char *format = "%a, %_d %b %Y %H:%M:%S %z";
-+ const char *format = "%a, %d %b %Y %H:%M:%S %z";
-
- now = time(NULL);
-
diff --git a/openwrt/package/strace/Config.in b/openwrt/package/strace/Config.in
deleted file mode 100644
index 708e41aba8..0000000000
--- a/openwrt/package/strace/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_STRACE
- prompt "strace............................ System call tracer"
- tristate
- default m if CONFIG_DEVEL
- help
- A useful diagnostic, instructional, and debugging tool.
- Allows you to track what system calls a program makes
- while it is running.
-
- http://sourceforge.net/projects/strace/
-
diff --git a/openwrt/package/strace/Makefile b/openwrt/package/strace/Makefile
deleted file mode 100644
index d356f918ad..0000000000
--- a/openwrt/package/strace/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=strace
-PKG_VERSION:=4.5.11
-PKG_RELEASE:=1
-PKG_MD5SUM:=28335e15c83456a3db055a0a0efcb4fe
-
-PKG_SOURCE_URL:=@SF/strace
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,STRACE,strace,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC)
- touch $@
-
-$(IPKG_STRACE):
- mkdir -p $(IDIR_STRACE)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME) $(IDIR_STRACE)/usr/sbin/
- $(STRIP) $(IDIR_STRACE)/usr/sbin/*
- $(IPKG_BUILD) $(IDIR_STRACE) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/strace/ipkg/strace.control b/openwrt/package/strace/ipkg/strace.control
deleted file mode 100644
index 8561e55b48..0000000000
--- a/openwrt/package/strace/ipkg/strace.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: strace
-Priority: optional
-Section: net
-Description: System call trace program
diff --git a/openwrt/package/syslog-ng/Config.in b/openwrt/package/syslog-ng/Config.in
deleted file mode 100644
index 726586142a..0000000000
--- a/openwrt/package/syslog-ng/Config.in
+++ /dev/null
@@ -1,31 +0,0 @@
-config BR2_PACKAGE_SYSLOG_NG
- prompt "syslog-ng......................... A powerful syslog daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBOL
- help
- syslog-ng reads and logs messages to the system console, log
- files, other machines and/or users as specified by its
- configuration file.
-
- The configuration file is read at startup and is reread after
- receipt of a hangup (HUP) signal. When reloading the
- configuration file, all destination files are closed and
- reopened as appropriate. For more information about the
- configuration file, see syslog-ng.conf(5).
-
- Typically messages are sent to syslog-ng via a Unix domain
- socket (/dev/log) or via UDP, to port 514 or to whatever
- syslog/udp is defined to be in /etc/services. To receive
- messages from the kernel, /dev/klog is opened for reading.
-
- Messages sent to syslog-ng should be an entire line, prefixed
- by a pri- ority code in between '<' and '>'. Definititions
- of the recognised values can be found in the include file
- <sys/syslog.h>.
-
- syslog-ng can be configured to pass messages on to other
- syslog-ng's and when doing so, it sends the message on with the
- priority as a pre- fix.
-
- http://www.balabit.com/products/syslog_ng/
diff --git a/openwrt/package/syslog-ng/Makefile b/openwrt/package/syslog-ng/Makefile
deleted file mode 100644
index 72045ae06d..0000000000
--- a/openwrt/package/syslog-ng/Makefile
+++ /dev/null
@@ -1,73 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=syslog-ng
-PKG_VERSION:=1.6.9
-PKG_RELEASE:=1
-PKG_MD5SUM:=5280a86b4f5c25b2ba157c8cea302cf0
-
-PKG_SOURCE_URL:=http://www.balabit.com/downloads/syslog-ng/stable/src \
- http://www.balabit.com/downloads/syslog-ng/1.6/src
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-PKG_INIT_LEVEL:=60
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,SYSLOG_NG,syslog-ng,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include/libol" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/usr/lib/libol" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --disable-dependency-tracking \
- --disable-full-static \
- --enable-tcp-wrapper \
- --with-libol="$(STAGING_DIR)/usr/bin" \
- );
- touch $(PKG_BUILD_DIR)/.configured
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_SYSLOG_NG):
- install -d -m0755 $(IDIR_SYSLOG_NG)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/syslog-ng $(IDIR_SYSLOG_NG)/usr/sbin/
- install -d -m0755 $(IDIR_SYSLOG_NG)/etc/init.d
- install -m0755 ./files/syslog-ng.init $(IDIR_SYSLOG_NG)/etc/init.d/S$(PKG_INIT_LEVEL)syslog-ng
- install -d -m0755 $(IDIR_SYSLOG_NG)/etc/syslog-ng
- install -m0644 ./files/syslog-ng.conf $(IDIR_SYSLOG_NG)/etc/syslog-ng/
- $(RSTRIP) $(IDIR_SYSLOG_NG)
- $(IPKG_BUILD) $(IDIR_SYSLOG_NG) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/syslog-ng/files/syslog-ng.conf b/openwrt/package/syslog-ng/files/syslog-ng.conf
deleted file mode 100644
index 658abead21..0000000000
--- a/openwrt/package/syslog-ng/files/syslog-ng.conf
+++ /dev/null
@@ -1,16 +0,0 @@
-options {
- chain_hostnames(off);
- sync(0);
-
- # The default action of syslog-ng 1.6.0 is to log a STATS line
- # to the file every 10 minutes. That's pretty ugly after a while.
- # Change it to every 12 hours so you get a nice daily update of
- # how many messages syslog-ng missed (0).
- stats(43200);
-};
-
-source src { unix-stream("/dev/log"); internal(); };
-
-destination messages { file("/var/log/messages"); };
-
-log { source(src); destination(messages); };
diff --git a/openwrt/package/syslog-ng/files/syslog-ng.init b/openwrt/package/syslog-ng/files/syslog-ng.init
deleted file mode 100755
index 40472ed3b9..0000000000
--- a/openwrt/package/syslog-ng/files/syslog-ng.init
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-
-syslog_start() {
- [ -f /etc/syslog-ng/syslog-ng.conf ] || {
- echo "/etc/syslog-ng/syslog-ng.conf does not exist !";
- exit 0;
- };
- [ -d /var/run ] || mkdir -p /var/run
- [ -x /usr/sbin/syslog-ng ] && /usr/sbin/syslog-ng
-}
-
-syslog_stop() {
- killall syslog-ng
-}
-
-case "$1" in
- start)
- syslog_start
- ;;
- stop)
- syslog_stop
- ;;
- restart)
- syslog_stop
- sleep 1s
- syslog_start
- ;;
- reload)
- kill -HUP `cat /var/run/syslog-ng.pid` &>/dev/null
- ;;
- *)
- echo "Usage: $0 <start|stop|restart|reload>"
- ;;
-esac
diff --git a/openwrt/package/syslog-ng/ipkg/syslog-ng.conffiles b/openwrt/package/syslog-ng/ipkg/syslog-ng.conffiles
deleted file mode 100644
index 453ebbe668..0000000000
--- a/openwrt/package/syslog-ng/ipkg/syslog-ng.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/syslog-ng/syslog-ng.conf
diff --git a/openwrt/package/syslog-ng/ipkg/syslog-ng.control b/openwrt/package/syslog-ng/ipkg/syslog-ng.control
deleted file mode 100644
index 074fff1898..0000000000
--- a/openwrt/package/syslog-ng/ipkg/syslog-ng.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: syslog-ng
-Priority: optional
-Section: admin
-Description: A powerful syslog daemon
diff --git a/openwrt/package/syslog-ng/patches/01-no_lfl.patch b/openwrt/package/syslog-ng/patches/01-no_lfl.patch
deleted file mode 100644
index e17a5c6af2..0000000000
--- a/openwrt/package/syslog-ng/patches/01-no_lfl.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-diff -urN syslog-ng-1.6.9/Makefile.in syslog-ng-1.6.9.new/Makefile.in
---- syslog-ng-1.6.9/Makefile.in 2005-11-23 09:58:28.000000000 +0100
-+++ syslog-ng-1.6.9.new/Makefile.in 2006-03-23 19:02:04.000000000 +0100
-@@ -64,7 +64,7 @@
- INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- LDFLAGS = @LDFLAGS@
- LEX = @LEX@
--LEXLIB = @LEXLIB@
-+LEXLIB =
- LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
- LIBOBJS = @LIBOBJS@
- LIBOL_DIR = @LIBOL_DIR@
-diff -urN syslog-ng-1.6.9/configure syslog-ng-1.6.9.new/configure
---- syslog-ng-1.6.9/configure 2005-11-23 09:58:29.000000000 +0100
-+++ syslog-ng-1.6.9.new/configure 2006-03-23 21:56:43.000000000 +0100
-@@ -3160,7 +3160,7 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- ac_check_lib_save_LIBS=$LIBS
--LIBS="-lfl $LIBS"
-+LIBS="$LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-diff -urN syslog-ng-1.6.9/src/Makefile.in syslog-ng-1.6.9.new/src/Makefile.in
---- syslog-ng-1.6.9/src/Makefile.in 2005-11-23 09:58:37.000000000 +0100
-+++ syslog-ng-1.6.9.new/src/Makefile.in 2006-03-23 19:02:27.000000000 +0100
-@@ -64,7 +64,7 @@
- INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- LDFLAGS = @LDFLAGS@
- LEX = @LEX@
--LEXLIB = @LEXLIB@
-+LEXLIB =
- LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
- LIBOBJS = @LIBOBJS@
- LIBOL_DIR = @LIBOL_DIR@
-diff -urN syslog-ng-1.6.9/src/cfg-lex.c syslog-ng-1.6.9.new/src/cfg-lex.c
---- syslog-ng-1.6.9/src/cfg-lex.c 2005-11-15 19:41:46.000000000 +0100
-+++ syslog-ng-1.6.9.new/src/cfg-lex.c 2006-03-23 19:03:25.000000000 +0100
-@@ -666,7 +666,9 @@
- #ifdef __cplusplus
- extern "C" int yywrap (void );
- #else
--extern int yywrap (void );
-+int yywrap (void ) {
-+ return 1;
-+}
- #endif
- #endif
-
diff --git a/openwrt/package/tcp_wrappers/Config.in b/openwrt/package/tcp_wrappers/Config.in
deleted file mode 100644
index 455a9bc870..0000000000
--- a/openwrt/package/tcp_wrappers/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_COMPILE_TCP_WRAPPERS
- bool
- default n
- depends BR2_PACKAGE_LIBWRAP
-
-config BR2_PACKAGE_LIBWRAP
- prompt "libwrap........................... Security wrapper library for TCP services"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_TCP_WRAPPERS
- help
- Security wrapper library for TCP services.
-
- ftp://ftp.porcupine.org/pub/security/index.html
-
diff --git a/openwrt/package/tcp_wrappers/Makefile b/openwrt/package/tcp_wrappers/Makefile
deleted file mode 100644
index 9eb1d77533..0000000000
--- a/openwrt/package/tcp_wrappers/Makefile
+++ /dev/null
@@ -1,64 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=tcp_wrappers
-PKG_VERSION:=7.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=e6fa25f71226d090f34de3f6b122fb5a
-
-PKG_SOURCE_URL:=ftp://ftp.porcupine.org/pub/security
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-#$(eval $(call PKG_template,LIBWRAP,libwrap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-.NOTPARALLEL:
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -j1 -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- OPT_CFLAGS="$(TARGET_CFLAGS)" \
- LIBS=-lnsl \
- NETGROUP= \
- VSYSLOG= \
- BUGS= \
- EXTRA_CFLAGS="-DSYS_ERRLIST_DEFINED -DHAVE_STRERROR -DHAVE_WEAKSYMS -D_REENTRANT -DINET6=1 \
- -Dss_family=__ss_family -Dss_len=__ss_len" \
- FACILITY=LOG_DAEMON \
- SEVERITY=LOG_INFO \
- REAL_DAEMON_DIR=/usr/sbin \
- STYLE="-DPROCESS_OPTIONS" \
- tidy all
- touch $@
-
-$(IPKG_LIBWRAP):
- install -d -m0755 $(IDIR_LIBWRAP)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/shared/libwrap.so.* $(IDIR_LIBWRAP)/usr/lib/
- $(RSTRIP) $(IDIR_LIBWRAP)
- $(IPKG_BUILD) $(IDIR_LIBWRAP) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libwrap.a: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_BUILD_DIR)/tcpd.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/libwrap.a $(STAGING_DIR)/usr/lib/
-# $(CP) $(PKG_BUILD_DIR)/shared/libwrap.so* $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libwrap.a
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/tcpd.h \
- $(STAGING_DIR)/usr/lib/libwrap.{a,so*} \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/tcp_wrappers/patches/debian-subset.patch b/openwrt/package/tcp_wrappers/patches/debian-subset.patch
deleted file mode 100644
index c0c37501d5..0000000000
--- a/openwrt/package/tcp_wrappers/patches/debian-subset.patch
+++ /dev/null
@@ -1,936 +0,0 @@
---- tcp-wrappers-7.6.orig/hosts_access.c
-+++ tcp-wrappers-7.6/hosts_access.c
-@@ -240,6 +240,26 @@
- }
- }
-
-+/* hostfile_match - look up host patterns from file */
-+
-+static int hostfile_match(path, host)
-+char *path;
-+struct hosts_info *host;
-+{
-+ char tok[BUFSIZ];
-+ int match = NO;
-+ FILE *fp;
-+
-+ if ((fp = fopen(path, "r")) != 0) {
-+ while (fscanf(fp, "%s", tok) == 1 && !(match = host_match(tok, host)))
-+ /* void */ ;
-+ fclose(fp);
-+ } else if (errno != ENOENT) {
-+ tcpd_warn("open %s: %m", path);
-+ }
-+ return (match);
-+}
-+
- /* host_match - match host name and/or address against pattern */
-
- static int host_match(tok, host)
-@@ -267,6 +287,8 @@
- tcpd_warn("netgroup support is disabled"); /* not tcpd_jump() */
- return (NO);
- #endif
-+ } else if (tok[0] == '/') { /* /file hack */
-+ return (hostfile_match(tok, host));
- } else if (STR_EQ(tok, "KNOWN")) { /* check address and name */
- char *name = eval_hostname(host);
- return (STR_NE(eval_hostaddr(host), unknown) && HOSTNAME_KNOWN(name));
---- tcp-wrappers-7.6.orig/tcpd.h
-+++ tcp-wrappers-7.6/tcpd.h
-@@ -4,6 +4,25 @@
- * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
- */
-
-+#ifndef _TCPWRAPPERS_TCPD_H
-+#define _TCPWRAPPERS_TCPD_H
-+
-+/* someone else may have defined this */
-+#undef __P
-+
-+/* use prototypes if we have an ANSI C compiler or are using C++ */
-+#if defined(__STDC__) || defined(__cplusplus)
-+#define __P(args) args
-+#else
-+#define __P(args) ()
-+#endif
-+
-+/* Need definitions of struct sockaddr_in and FILE. */
-+#include <netinet/in.h>
-+#include <stdio.h>
-+
-+__BEGIN_DECLS
-+
- /* Structure to describe one communications endpoint. */
-
- #define STRING_LENGTH 128 /* hosts, users, processes */
-@@ -25,10 +44,10 @@
- char pid[10]; /* access via eval_pid(request) */
- struct host_info client[1]; /* client endpoint info */
- struct host_info server[1]; /* server endpoint info */
-- void (*sink) (); /* datagram sink function or 0 */
-- void (*hostname) (); /* address to printable hostname */
-- void (*hostaddr) (); /* address to printable address */
-- void (*cleanup) (); /* cleanup function or 0 */
-+ void (*sink) __P((int)); /* datagram sink function or 0 */
-+ void (*hostname) __P((struct host_info *)); /* address to printable hostname */
-+ void (*hostaddr) __P((struct host_info *)); /* address to printable address */
-+ void (*cleanup) __P((struct request_info *)); /* cleanup function or 0 */
- struct netconfig *config; /* netdir handle */
- };
-
-@@ -61,25 +80,30 @@
- /* Global functions. */
-
- #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
--extern void fromhost(); /* get/validate client host info */
-+extern void fromhost __P((struct request_info *)); /* get/validate client host info */
- #else
- #define fromhost sock_host /* no TLI support needed */
- #endif
-
--extern int hosts_access(); /* access control */
--extern void shell_cmd(); /* execute shell command */
--extern char *percent_x(); /* do %<char> expansion */
--extern void rfc931(); /* client name from RFC 931 daemon */
--extern void clean_exit(); /* clean up and exit */
--extern void refuse(); /* clean up and exit */
--extern char *xgets(); /* fgets() on steroids */
--extern char *split_at(); /* strchr() and split */
--extern unsigned long dot_quad_addr(); /* restricted inet_addr() */
-+extern void shell_cmd __P((char *)); /* execute shell command */
-+extern char *percent_x __P((char *, int, char *, struct request_info *)); /* do %<char> expansion */
-+extern void rfc931 __P((struct sockaddr_in *, struct sockaddr_in *, char *)); /* client name from RFC 931 daemon */
-+extern void clean_exit __P((struct request_info *)); /* clean up and exit */
-+extern void refuse __P((struct request_info *)); /* clean up and exit */
-+extern char *xgets __P((char *, int, FILE *)); /* fgets() on steroids */
-+extern char *split_at __P((char *, int)); /* strchr() and split */
-+extern unsigned long dot_quad_addr __P((char *)); /* restricted inet_addr() */
-
- /* Global variables. */
-
-+#ifdef HAVE_WEAKSYMS
-+extern int allow_severity __attribute__ ((weak)); /* for connection logging */
-+extern int deny_severity __attribute__ ((weak)); /* for connection logging */
-+#else
- extern int allow_severity; /* for connection logging */
- extern int deny_severity; /* for connection logging */
-+#endif
-+
- extern char *hosts_allow_table; /* for verification mode redirection */
- extern char *hosts_deny_table; /* for verification mode redirection */
- extern int hosts_access_verbose; /* for verbose matching mode */
-@@ -92,9 +116,14 @@
- */
-
- #ifdef __STDC__
-+extern int hosts_access(struct request_info *request);
-+extern int hosts_ctl(char *daemon, char *client_name, char *client_addr,
-+ char *client_user);
- extern struct request_info *request_init(struct request_info *,...);
- extern struct request_info *request_set(struct request_info *,...);
- #else
-+extern int hosts_access();
-+extern int hosts_ctl();
- extern struct request_info *request_init(); /* initialize request */
- extern struct request_info *request_set(); /* update request structure */
- #endif
-@@ -117,27 +146,31 @@
- * host_info structures serve as caches for the lookup results.
- */
-
--extern char *eval_user(); /* client user */
--extern char *eval_hostname(); /* printable hostname */
--extern char *eval_hostaddr(); /* printable host address */
--extern char *eval_hostinfo(); /* host name or address */
--extern char *eval_client(); /* whatever is available */
--extern char *eval_server(); /* whatever is available */
-+extern char *eval_user __P((struct request_info *)); /* client user */
-+extern char *eval_hostname __P((struct host_info *)); /* printable hostname */
-+extern char *eval_hostaddr __P((struct host_info *)); /* printable host address */
-+extern char *eval_hostinfo __P((struct host_info *)); /* host name or address */
-+extern char *eval_client __P((struct request_info *)); /* whatever is available */
-+extern char *eval_server __P((struct request_info *)); /* whatever is available */
- #define eval_daemon(r) ((r)->daemon) /* daemon process name */
- #define eval_pid(r) ((r)->pid) /* process id */
-
- /* Socket-specific methods, including DNS hostname lookups. */
-
--extern void sock_host(); /* look up endpoint addresses */
--extern void sock_hostname(); /* translate address to hostname */
--extern void sock_hostaddr(); /* address to printable address */
-+/* look up endpoint addresses */
-+extern void sock_host __P((struct request_info *));
-+/* translate address to hostname */
-+extern void sock_hostname __P((struct host_info *));
-+/* address to printable address */
-+extern void sock_hostaddr __P((struct host_info *));
-+
- #define sock_methods(r) \
- { (r)->hostname = sock_hostname; (r)->hostaddr = sock_hostaddr; }
-
- /* The System V Transport-Level Interface (TLI) interface. */
-
- #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
--extern void tli_host(); /* look up endpoint addresses etc. */
-+extern void tli_host __P((struct request_info *)); /* look up endpoint addresses etc. */
- #endif
-
- /*
-@@ -178,7 +211,7 @@
- * behavior.
- */
-
--extern void process_options(); /* execute options */
-+extern void process_options __P((char *, struct request_info *)); /* execute options */
- extern int dry_run; /* verification flag */
-
- /* Bug workarounds. */
-@@ -217,3 +250,7 @@
- #define strtok my_strtok
- extern char *my_strtok();
- #endif
-+
-+__END_DECLS
-+
-+#endif /* tcpd.h */
---- tcp-wrappers-7.6.orig/Makefile
-+++ tcp-wrappers-7.6/Makefile
-@@ -1,5 +1,10 @@
-+GLIBC=$(shell grep -s -c __GLIBC__ /usr/include/features.h)
-+
- # @(#) Makefile 1.23 97/03/21 19:27:20
-
-+# unset the HOSTNAME environment variable
-+HOSTNAME =
-+
- what:
- @echo
- @echo "Usage: edit the REAL_DAEMON_DIR definition in the Makefile then:"
-@@ -19,7 +24,7 @@
- @echo " generic (most bsd-ish systems with sys5 compatibility)"
- @echo " 386bsd aix alpha apollo bsdos convex-ultranet dell-gcc dgux dgux543"
- @echo " dynix epix esix freebsd hpux irix4 irix5 irix6 isc iunix"
-- @echo " linux machten mips(untested) ncrsvr4 netbsd next osf power_unix_211"
-+ @echo " linux gnu machten mips(untested) ncrsvr4 netbsd next osf power_unix_211"
- @echo " ptx-2.x ptx-generic pyramid sco sco-nis sco-od2 sco-os5 sinix sunos4"
- @echo " sunos40 sunos5 sysv4 tandem ultrix unicos7 unicos8 unixware1 unixware2"
- @echo " uts215 uxp"
-@@ -43,8 +48,8 @@
- # Ultrix 4.x SunOS 4.x ConvexOS 10.x Dynix/ptx
- #REAL_DAEMON_DIR=/usr/etc
- #
--# SysV.4 Solaris 2.x OSF AIX
--#REAL_DAEMON_DIR=/usr/sbin
-+# SysV.4 Solaris 2.x OSF AIX Linux
-+REAL_DAEMON_DIR=/usr/sbin
- #
- # BSD 4.4
- #REAL_DAEMON_DIR=/usr/libexec
-@@ -141,10 +146,21 @@
- LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ= NETGROUP= TLI= \
- EXTRA_CFLAGS=-DSYS_ERRLIST_DEFINED VSYSLOG= all
-
-+ifneq ($(GLIBC),0)
-+MYLIB=-lnsl
-+endif
-+
- linux:
- @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \
-- LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ=setenv.o \
-- NETGROUP= TLI= EXTRA_CFLAGS="-DBROKEN_SO_LINGER" all
-+ LIBS=$(MYLIB) RANLIB=ranlib ARFLAGS=rv AUX_OBJ=weak_symbols.o \
-+ NETGROUP=-DNETGROUP TLI= VSYSLOG= BUGS= all \
-+ EXTRA_CFLAGS="-DSYS_ERRLIST_DEFINED -DHAVE_WEAKSYMS -D_REENTRANT"
-+
-+gnu:
-+ @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \
-+ LIBS=$(MYLIB) RANLIB=ranlib ARFLAGS=rv AUX_OBJ=weak_symbols.o \
-+ NETGROUP=-DNETGROUP TLI= VSYSLOG= BUGS= all \
-+ EXTRA_CFLAGS="-DHAVE_STRERROR -DHAVE_WEAKSYMS -D_REENTRANT"
-
- # This is good for many SYSV+BSD hybrids with NIS, probably also for HP-UX 7.x.
- hpux hpux8 hpux9 hpux10:
-@@ -391,7 +407,7 @@
- # the ones provided with this source distribution. The environ.c module
- # implements setenv(), getenv(), and putenv().
-
--AUX_OBJ= setenv.o
-+#AUX_OBJ= setenv.o
- #AUX_OBJ= environ.o
- #AUX_OBJ= environ.o strcasecmp.o
-
-@@ -454,7 +470,8 @@
- # host name aliases. Compile with -DSOLARIS_24_GETHOSTBYNAME_BUG to work
- # around this. The workaround does no harm on other Solaris versions.
-
--BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DLIBC_CALLS_STRTOK
-+BUGS =
-+#BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DLIBC_CALLS_STRTOK
- #BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DINET_ADDR_BUG
- #BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DSOLARIS_24_GETHOSTBYNAME_BUG
-
-@@ -464,7 +481,7 @@
- # If your system supports NIS or YP-style netgroups, enable the following
- # macro definition. Netgroups are used only for host access control.
- #
--#NETGROUP= -DNETGROUP
-+NETGROUP= -DNETGROUP
-
- ###############################################################
- # System dependencies: whether or not your system has vsyslog()
-@@ -491,7 +508,7 @@
- # Uncomment the next definition to turn on the language extensions
- # (examples: allow, deny, banners, twist and spawn).
- #
--#STYLE = -DPROCESS_OPTIONS # Enable language extensions.
-+STYLE = -DPROCESS_OPTIONS # Enable language extensions.
-
- ################################################################
- # Optional: Changing the default disposition of logfile records
-@@ -514,7 +531,7 @@
- #
- # The LOG_XXX names below are taken from the /usr/include/syslog.h file.
-
--FACILITY= LOG_MAIL # LOG_MAIL is what most sendmail daemons use
-+FACILITY= LOG_DAEMON # LOG_MAIL is what most sendmail daemons use
-
- # The syslog priority at which successful connections are logged.
-
-@@ -610,7 +627,7 @@
- # Paranoid mode implies hostname lookup. In order to disable hostname
- # lookups altogether, see the next section.
-
--PARANOID= -DPARANOID
-+#PARANOID= -DPARANOID
-
- ########################################
- # Optional: turning off hostname lookups
-@@ -623,7 +640,7 @@
- # In order to perform selective hostname lookups, disable paranoid
- # mode (see previous section) and comment out the following definition.
-
--HOSTNAME= -DALWAYS_HOSTNAME
-+#HOSTNAME= -DALWAYS_HOSTNAME
-
- #############################################
- # Optional: Turning on host ADDRESS checking
-@@ -649,28 +666,46 @@
- # source-routed traffic in the kernel. Examples: 4.4BSD derivatives,
- # Solaris 2.x, and Linux. See your system documentation for details.
- #
--# KILL_OPT= -DKILL_IP_OPTIONS
-+KILL_OPT= -DKILL_IP_OPTIONS
-
- ## End configuration options
- ############################
-
- # Protection against weird shells or weird make programs.
-
-+CC = gcc
- SHELL = /bin/sh
--.c.o:; $(CC) $(CFLAGS) -c $*.c
-+.c.o:; $(CC) $(CFLAGS) -o $*.o -c $*.c
-+
-+SOMAJOR = 0
-+SOMINOR = 7.6
-+
-+LIB = libwrap.a
-+SHLIB = shared/libwrap.so.$(SOMAJOR).$(SOMINOR)
-+SHLIBSOMAJ= shared/libwrap.so.$(SOMAJOR)
-+SHLIBSO = shared/libwrap.so
-+SHLIBFLAGS = -Lshared -lwrap
-
--CFLAGS = -O -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \
-+shared/%.o: %.c
-+ $(CC) $(CFLAGS) $(SHCFLAGS) -c $< -o $@
-+
-+CFLAGS = -O2 -g -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \
- $(BUGS) $(SYSTYPE) $(AUTH) $(UMASK) \
- -DREAL_DAEMON_DIR=\"$(REAL_DAEMON_DIR)\" $(STYLE) $(KILL_OPT) \
- -DSEVERITY=$(SEVERITY) -DRFC931_TIMEOUT=$(RFC931_TIMEOUT) \
- $(UCHAR) $(TABLES) $(STRINGS) $(TLI) $(EXTRA_CFLAGS) $(DOT) \
- $(VSYSLOG) $(HOSTNAME)
-
-+SHLINKFLAGS = -shared -Xlinker -soname -Xlinker libwrap.so.$(SOMAJOR) -lc $(LIBS)
-+SHCFLAGS = -fPIC -shared -D_REENTRANT
-+
- LIB_OBJ= hosts_access.o options.o shell_cmd.o rfc931.o eval.o \
- hosts_ctl.o refuse.o percent_x.o clean_exit.o $(AUX_OBJ) \
- $(FROM_OBJ) fix_options.o socket.o tli.o workarounds.o \
- update.o misc.o diag.o percent_m.o myvsyslog.o
-
-+SHLIB_OBJ= $(addprefix shared/, $(LIB_OBJ));
-+
- FROM_OBJ= fromhost.o
-
- KIT = README miscd.c tcpd.c fromhost.c hosts_access.c shell_cmd.c \
-@@ -684,46 +719,78 @@
- refuse.c tcpdchk.8 setenv.c inetcf.c inetcf.h scaffold.c \
- scaffold.h tcpdmatch.8 README.NIS
-
--LIB = libwrap.a
--
--all other: config-check tcpd tcpdmatch try-from safe_finger tcpdchk
-+all other: config-check tcpd tcpdmatch try-from safe_finger tcpdchk $(LIB)
-
- # Invalidate all object files when the compiler options (CFLAGS) have changed.
-
- config-check:
- @set +e; test -n "$(REAL_DAEMON_DIR)" || { make; exit 1; }
-- @set +e; echo $(CFLAGS) >/tmp/cflags.$$$$ ; \
-- if cmp cflags /tmp/cflags.$$$$ ; \
-- then rm /tmp/cflags.$$$$ ; \
-- else mv /tmp/cflags.$$$$ cflags ; \
-+ @set +e; echo $(CFLAGS) >cflags.new ; \
-+ if cmp cflags cflags.new ; \
-+ then rm cflags.new ; \
-+ else mv cflags.new cflags ; \
- fi >/dev/null 2>/dev/null
-+ @if [ ! -d shared ]; then mkdir shared; fi
-
- $(LIB): $(LIB_OBJ)
- rm -f $(LIB)
- $(AR) $(ARFLAGS) $(LIB) $(LIB_OBJ)
- -$(RANLIB) $(LIB)
-
--tcpd: tcpd.o $(LIB)
-- $(CC) $(CFLAGS) -o $@ tcpd.o $(LIB) $(LIBS)
-+$(SHLIB): $(SHLIB_OBJ)
-+ rm -f $(SHLIB)
-+ $(CC) -o $(SHLIB) $(SHLINKFLAGS) $(SHLIB_OBJ)
-+ ln -s $(notdir $(SHLIB)) $(SHLIBSOMAJ)
-+ ln -s $(notdir $(SHLIBSOMAJ)) $(SHLIBSO)
-+
-+tcpd: tcpd.o $(SHLIB)
-+ $(CC) $(CFLAGS) -o $@ tcpd.o $(SHLIBFLAGS)
-
--miscd: miscd.o $(LIB)
-- $(CC) $(CFLAGS) -o $@ miscd.o $(LIB) $(LIBS)
-+miscd: miscd.o $(SHLIB)
-+ $(CC) $(CFLAGS) -o $@ miscd.o $(SHLIBFLAGS)
-
--safe_finger: safe_finger.o $(LIB)
-- $(CC) $(CFLAGS) -o $@ safe_finger.o $(LIB) $(LIBS)
-+safe_finger: safe_finger.o $(SHLIB)
-+ $(CC) $(CFLAGS) -o $@ safe_finger.o $(SHLIBFLAGS)
-
- TCPDMATCH_OBJ = tcpdmatch.o fakelog.o inetcf.o scaffold.o
-
--tcpdmatch: $(TCPDMATCH_OBJ) $(LIB)
-- $(CC) $(CFLAGS) -o $@ $(TCPDMATCH_OBJ) $(LIB) $(LIBS)
-+tcpdmatch: $(TCPDMATCH_OBJ) $(SHLIB)
-+ $(CC) $(CFLAGS) -o $@ $(TCPDMATCH_OBJ) $(SHLIBFLAGS)
-
--try-from: try-from.o fakelog.o $(LIB)
-- $(CC) $(CFLAGS) -o $@ try-from.o fakelog.o $(LIB) $(LIBS)
-+try-from: try-from.o fakelog.o $(SHLIB)
-+ $(CC) $(CFLAGS) -o $@ try-from.o fakelog.o $(SHLIBFLAGS)
-
- TCPDCHK_OBJ = tcpdchk.o fakelog.o inetcf.o scaffold.o
-
--tcpdchk: $(TCPDCHK_OBJ) $(LIB)
-- $(CC) $(CFLAGS) -o $@ $(TCPDCHK_OBJ) $(LIB) $(LIBS)
-+tcpdchk: $(TCPDCHK_OBJ) $(SHLIB)
-+ $(CC) $(CFLAGS) -o $@ $(TCPDCHK_OBJ) $(SHLIBFLAGS)
-+
-+install: install-lib install-bin install-dev
-+
-+install-lib:
-+ install -o root -g root -m 0644 $(SHLIB) ${DESTDIR}/lib/
-+ ln -s $(notdir $(SHLIB)) ${DESTDIR}/lib/$(notdir $(SHLIBSOMAJ))
-+
-+install-bin:
-+ install -o root -g root -m 0755 tcpd ${DESTDIR}/usr/sbin/
-+ install -o root -g root -m 0755 tcpdchk ${DESTDIR}/usr/sbin/
-+ install -o root -g root -m 0755 tcpdmatch ${DESTDIR}/usr/sbin/
-+ install -o root -g root -m 0755 try-from ${DESTDIR}/usr/sbin/
-+ install -o root -g root -m 0755 safe_finger ${DESTDIR}/usr/sbin/
-+ install -o root -g root -m 0644 tcpd.8 ${DESTDIR}/usr/share/man/man8/
-+ install -o root -g root -m 0644 tcpdchk.8 ${DESTDIR}/usr/share/man/man8/
-+ install -o root -g root -m 0644 tcpdmatch.8 ${DESTDIR}/usr/share/man/man8/
-+ install -o root -g root -m 0644 hosts_access.5 ${DESTDIR}/usr/share/man/man5/
-+ install -o root -g root -m 0644 hosts_options.5 ${DESTDIR}/usr/share/man/man5/
-+
-+install-dev:
-+ ln -s /lib/$(notdir $(SHLIBSOMAJ)) ${DESTDIR}/usr/lib/$(notdir $(SHLIBSO))
-+ install -o root -g root -m 0644 hosts_access.3 ${DESTDIR}/usr/share/man/man3/
-+ install -o root -g root -m 0644 tcpd.h ${DESTDIR}/usr/include/
-+ install -o root -g root -m 0644 $(LIB) ${DESTDIR}/usr/lib/
-+ ln -s hosts_access.3 ${DESTDIR}/usr/share/man/man3/hosts_ctl.3
-+ ln -s hosts_access.3 ${DESTDIR}/usr/share/man/man3/request_init.3
-+ ln -s hosts_access.3 ${DESTDIR}/usr/share/man/man3/request_set.3
-
- shar: $(KIT)
- @shar $(KIT)
-@@ -739,7 +806,8 @@
-
- clean:
- rm -f tcpd miscd safe_finger tcpdmatch tcpdchk try-from *.[oa] core \
-- cflags
-+ cflags libwrap*.so*
-+ rm -rf shared
-
- tidy: clean
- chmod -R a+r .
-@@ -885,5 +953,6 @@
- update.o: mystdarg.h
- update.o: tcpd.h
- vfprintf.o: cflags
-+weak_symbols.o: tcpd.h
- workarounds.o: cflags
- workarounds.o: tcpd.h
---- tcp-wrappers-7.6.orig/hosts_access.5
-+++ tcp-wrappers-7.6/hosts_access.5
-@@ -8,9 +8,9 @@
- impatient reader is encouraged to skip to the EXAMPLES section for a
- quick introduction.
- .PP
--An extended version of the access control language is described in the
--\fIhosts_options\fR(5) document. The extensions are turned on at
--program build time by building with -DPROCESS_OPTIONS.
-+The extended version of the access control language is described in the
-+\fIhosts_options\fR(5) document. \fBNote that this language supersedes
-+the meaning of \fIshell_command\fB as documented below.\fR
- .PP
- In the following text, \fIdaemon\fR is the the process name of a
- network daemon process, and \fIclient\fR is the name and/or address of
-@@ -40,7 +40,7 @@
- character. This permits you to break up long lines so that they are
- easier to edit.
- .IP \(bu
--Blank lines or lines that begin with a `#\' character are ignored.
-+Blank lines or lines that begin with a `#' character are ignored.
- This permits you to insert comments and whitespace so that the tables
- are easier to read.
- .IP \(bu
-@@ -69,26 +69,33 @@
- .SH PATTERNS
- The access control language implements the following patterns:
- .IP \(bu
--A string that begins with a `.\' character. A host name is matched if
-+A string that begins with a `.' character. A host name is matched if
- the last components of its name match the specified pattern. For
--example, the pattern `.tue.nl\' matches the host name
--`wzv.win.tue.nl\'.
-+example, the pattern `.tue.nl' matches the host name
-+`wzv.win.tue.nl'.
- .IP \(bu
--A string that ends with a `.\' character. A host address is matched if
-+A string that ends with a `.' character. A host address is matched if
- its first numeric fields match the given string. For example, the
--pattern `131.155.\' matches the address of (almost) every host on the
-+pattern `131.155.' matches the address of (almost) every host on the
- Eind\%hoven University network (131.155.x.x).
- .IP \(bu
--A string that begins with an `@\' character is treated as an NIS
-+A string that begins with an `@' character is treated as an NIS
- (formerly YP) netgroup name. A host name is matched if it is a host
- member of the specified netgroup. Netgroup matches are not supported
- for daemon process names or for client user names.
- .IP \(bu
--An expression of the form `n.n.n.n/m.m.m.m\' is interpreted as a
--`net/mask\' pair. A host address is matched if `net\' is equal to the
--bitwise AND of the address and the `mask\'. For example, the net/mask
--pattern `131.155.72.0/255.255.254.0\' matches every address in the
--range `131.155.72.0\' through `131.155.73.255\'.
-+An expression of the form `n.n.n.n/m.m.m.m' is interpreted as a
-+`net/mask' pair. A host address is matched if `net' is equal to the
-+bitwise AND of the address and the `mask'. For example, the net/mask
-+pattern `131.155.72.0/255.255.254.0' matches every address in the
-+range `131.155.72.0' through `131.155.73.255'.
-+.IP \(bu
-+A string that begins with a `/' character is treated as a file
-+name. A host name or address is matched if it matches any host name
-+or address pattern listed in the named file. The file format is
-+zero or more lines with zero or more host name or address patterns
-+separated by whitespace. A file name pattern can be used anywhere
-+a host name or address pattern can be used.
- .SH WILDCARDS
- The access control language supports explicit wildcards:
- .IP ALL
-@@ -115,19 +122,19 @@
- .ne 6
- .SH OPERATORS
- .IP EXCEPT
--Intended use is of the form: `list_1 EXCEPT list_2\'; this construct
-+Intended use is of the form: `list_1 EXCEPT list_2'; this construct
- matches anything that matches \fIlist_1\fR unless it matches
- \fIlist_2\fR. The EXCEPT operator can be used in daemon_lists and in
- client_lists. The EXCEPT operator can be nested: if the control
--language would permit the use of parentheses, `a EXCEPT b EXCEPT c\'
--would parse as `(a EXCEPT (b EXCEPT c))\'.
-+language would permit the use of parentheses, `a EXCEPT b EXCEPT c'
-+would parse as `(a EXCEPT (b EXCEPT c))'.
- .br
- .ne 6
- .SH SHELL COMMANDS
- If the first-matched access control rule contains a shell command, that
- command is subjected to %<letter> substitutions (see next section).
- The result is executed by a \fI/bin/sh\fR child process with standard
--input, output and error connected to \fI/dev/null\fR. Specify an `&\'
-+input, output and error connected to \fI/dev/null\fR. Specify an `&'
- at the end of the command if you do not want to wait until it has
- completed.
- .PP
-@@ -159,7 +166,7 @@
- .IP %u
- The client user name (or "unknown").
- .IP %%
--Expands to a single `%\' character.
-+Expands to a single `%' character.
- .PP
- Characters in % expansions that may confuse the shell are replaced by
- underscores.
-@@ -243,9 +250,9 @@
- less trustworthy. It is possible for an intruder to spoof both the
- client connection and the IDENT lookup, although doing so is much
- harder than spoofing just a client connection. It may also be that
--the client\'s IDENT server is lying.
-+the client's IDENT server is lying.
- .PP
--Note: IDENT lookups don\'t work with UDP services.
-+Note: IDENT lookups don't work with UDP services.
- .SH EXAMPLES
- The language is flexible enough that different types of access control
- policy can be expressed with a minimum of fuss. Although the language
-@@ -285,7 +292,7 @@
- .br
- ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
- .PP
--The first rule permits access from hosts in the local domain (no `.\'
-+The first rule permits access from hosts in the local domain (no `.'
- in the host name) and from members of the \fIsome_netgroup\fP
- netgroup. The second rule permits access from all hosts in the
- \fIfoobar.edu\fP domain (notice the leading dot), with the exception of
-@@ -322,8 +329,8 @@
- /etc/hosts.deny:
- .in +3
- .nf
--in.tftpd: ALL: (/some/where/safe_finger -l @%h | \\
-- /usr/ucb/mail -s %d-%h root) &
-+in.tftpd: ALL: (/usr/sbin/safe_finger -l @%h | \\
-+ /usr/bin/mail -s %d-%h root) &
- .fi
- .PP
- The safe_finger command comes with the tcpd wrapper and should be
-@@ -349,7 +356,7 @@
- capacity of an internal buffer; when an access control rule is not
- terminated by a newline character; when the result of %<letter>
- expansion would overflow an internal buffer; when a system call fails
--that shouldn\'t. All problems are reported via the syslog daemon.
-+that shouldn't. All problems are reported via the syslog daemon.
- .SH FILES
- .na
- .nf
---- tcp-wrappers-7.6.orig/rfc931.c
-+++ tcp-wrappers-7.6/rfc931.c
-@@ -33,7 +33,7 @@
-
- int rfc931_timeout = RFC931_TIMEOUT;/* Global so it can be changed */
-
--static jmp_buf timebuf;
-+static sigjmp_buf timebuf;
-
- /* fsocket - open stdio stream on top of socket */
-
-@@ -62,7 +62,7 @@
- static void timeout(sig)
- int sig;
- {
-- longjmp(timebuf, sig);
-+ siglongjmp(timebuf, sig);
- }
-
- /* rfc931 - return remote user name, given socket structures */
-@@ -99,7 +99,7 @@
- * Set up a timer so we won't get stuck while waiting for the server.
- */
-
-- if (setjmp(timebuf) == 0) {
-+ if (sigsetjmp(timebuf,1) == 0) {
- signal(SIGALRM, timeout);
- alarm(rfc931_timeout);
-
---- tcp-wrappers-7.6.orig/tcpd.8
-+++ tcp-wrappers-7.6/tcpd.8
-@@ -94,7 +94,7 @@
- .PP
- The example assumes that the network daemons live in /usr/etc. On some
- systems, network daemons live in /usr/sbin or in /usr/libexec, or have
--no `in.\' prefix to their name.
-+no `in.' prefix to their name.
- .SH EXAMPLE 2
- This example applies when \fItcpd\fR expects that the network daemons
- are left in their original place.
-@@ -110,26 +110,26 @@
- becomes:
- .sp
- .ti +5
--finger stream tcp nowait nobody /some/where/tcpd in.fingerd
-+finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd
- .sp
- .fi
- .PP
- The example assumes that the network daemons live in /usr/etc. On some
- systems, network daemons live in /usr/sbin or in /usr/libexec, the
--daemons have no `in.\' prefix to their name, or there is no userid
-+daemons have no `in.' prefix to their name, or there is no userid
- field in the inetd configuration file.
- .PP
- Similar changes will be needed for the other services that are to be
--covered by \fItcpd\fR. Send a `kill -HUP\' to the \fIinetd\fR(8)
-+covered by \fItcpd\fR. Send a `kill -HUP' to the \fIinetd\fR(8)
- process to make the changes effective. AIX users may also have to
--execute the `inetimp\' command.
-+execute the `inetimp' command.
- .SH EXAMPLE 3
- In the case of daemons that do not live in a common directory ("secret"
- or otherwise), edit the \fIinetd\fR configuration file so that it
- specifies an absolute path name for the process name field. For example:
- .nf
- .sp
-- ntalk dgram udp wait root /some/where/tcpd /usr/local/lib/ntalkd
-+ ntalk dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.ntalkd
- .sp
- .fi
- .PP
---- tcp-wrappers-7.6.orig/hosts_access.3
-+++ tcp-wrappers-7.6/hosts_access.3
-@@ -3,7 +3,7 @@
- hosts_access, hosts_ctl, request_init, request_set \- access control library
- .SH SYNOPSIS
- .nf
--#include "tcpd.h"
-+#include <tcpd.h>
-
- extern int allow_severity;
- extern int deny_severity;
---- tcp-wrappers-7.6.orig/options.c
-+++ tcp-wrappers-7.6/options.c
-@@ -473,6 +473,9 @@
- #ifdef LOG_CRON
- "cron", LOG_CRON,
- #endif
-+#ifdef LOG_FTP
-+ "ftp", LOG_FTP,
-+#endif
- #ifdef LOG_LOCAL0
- "local0", LOG_LOCAL0,
- #endif
---- tcp-wrappers-7.6.orig/fix_options.c
-+++ tcp-wrappers-7.6/fix_options.c
-@@ -35,7 +35,12 @@
- #ifdef IP_OPTIONS
- unsigned char optbuf[BUFFER_SIZE / 3], *cp;
- char lbuf[BUFFER_SIZE], *lp;
-+#if !defined(__GLIBC__)
- int optsize = sizeof(optbuf), ipproto;
-+#else /* __GLIBC__ */
-+ size_t optsize = sizeof(optbuf);
-+ int ipproto;
-+#endif /* __GLIBC__ */
- struct protoent *ip;
- int fd = request->fd;
- unsigned int opt;
---- tcp-wrappers-7.6.orig/workarounds.c
-+++ tcp-wrappers-7.6/workarounds.c
-@@ -163,7 +163,11 @@
- int fix_getpeername(sock, sa, len)
- int sock;
- struct sockaddr *sa;
-+#if !defined(__GLIBC__)
- int *len;
-+#else /* __GLIBC__ */
-+size_t *len;
-+#endif /* __GLIBC__ */
- {
- int ret;
- struct sockaddr_in *sin = (struct sockaddr_in *) sa;
---- tcp-wrappers-7.6.orig/socket.c
-+++ tcp-wrappers-7.6/socket.c
-@@ -76,7 +76,11 @@
- {
- static struct sockaddr_in client;
- static struct sockaddr_in server;
-+#if !defined (__GLIBC__)
- int len;
-+#else /* __GLIBC__ */
-+ size_t len;
-+#endif /* __GLIBC__ */
- char buf[BUFSIZ];
- int fd = request->fd;
-
-@@ -224,7 +228,11 @@
- {
- char buf[BUFSIZ];
- struct sockaddr_in sin;
-+#if !defined(__GLIBC__)
- int size = sizeof(sin);
-+#else /* __GLIBC__ */
-+ size_t size = sizeof(sin);
-+#endif /* __GLIBC__ */
-
- /*
- * Eat up the not-yet received datagram. Some systems insist on a
---- tcp-wrappers-7.6.orig/safe_finger.c
-+++ tcp-wrappers-7.6/safe_finger.c
-@@ -26,21 +26,24 @@
- #include <stdio.h>
- #include <ctype.h>
- #include <pwd.h>
-+#include <syslog.h>
-
- extern void exit();
-
- /* Local stuff */
-
--char path[] = "PATH=/bin:/usr/bin:/usr/ucb:/usr/bsd:/etc:/usr/etc:/usr/sbin";
-+char path[] = "PATH=/bin:/usr/bin:/sbin:/usr/sbin";
-
- #define TIME_LIMIT 60 /* Do not keep listinging forever */
- #define INPUT_LENGTH 100000 /* Do not keep listinging forever */
- #define LINE_LENGTH 128 /* Editors can choke on long lines */
- #define FINGER_PROGRAM "finger" /* Most, if not all, UNIX systems */
- #define UNPRIV_NAME "nobody" /* Preferred privilege level */
--#define UNPRIV_UGID 32767 /* Default uid and gid */
-+#define UNPRIV_UGID 65534 /* Default uid and gid */
-
- int finger_pid;
-+int allow_severity = SEVERITY;
-+int deny_severity = LOG_WARNING;
-
- void cleanup(sig)
- int sig;
---- tcp-wrappers-7.6.orig/hosts_options.5
-+++ tcp-wrappers-7.6/hosts_options.5
-@@ -58,12 +58,12 @@
- Execute, in a child process, the specified shell command, after
- performing the %<letter> expansions described in the hosts_access(5)
- manual page. The command is executed with stdin, stdout and stderr
--connected to the null device, so that it won\'t mess up the
-+connected to the null device, so that it won't mess up the
- conversation with the client host. Example:
- .sp
- .nf
- .ti +3
--spawn (/some/where/safe_finger -l @%h | /usr/ucb/mail root) &
-+spawn (/usr/sbin/safe_finger -l @%h | /usr/bin/mail root) &
- .fi
- .sp
- executes, in a background child process, the shell command "safe_finger
---- tcp-wrappers-7.6.orig/tcpdchk.c
-+++ tcp-wrappers-7.6/tcpdchk.c
-@@ -350,6 +350,8 @@
- {
- if (pat[0] == '@') {
- tcpd_warn("%s: daemon name begins with \"@\"", pat);
-+ } else if (pat[0] == '/') {
-+ tcpd_warn("%s: daemon name begins with \"/\"", pat);
- } else if (pat[0] == '.') {
- tcpd_warn("%s: daemon name begins with dot", pat);
- } else if (pat[strlen(pat) - 1] == '.') {
-@@ -382,6 +384,8 @@
- {
- if (pat[0] == '@') { /* @netgroup */
- tcpd_warn("%s: user name begins with \"@\"", pat);
-+ } else if (pat[0] == '/') {
-+ tcpd_warn("%s: user name begins with \"/\"", pat);
- } else if (pat[0] == '.') {
- tcpd_warn("%s: user name begins with dot", pat);
- } else if (pat[strlen(pat) - 1] == '.') {
-@@ -402,8 +406,13 @@
- static int check_host(pat)
- char *pat;
- {
-+ char buf[BUFSIZ];
- char *mask;
- int addr_count = 1;
-+ FILE *fp;
-+ struct tcpd_context saved_context;
-+ char *cp;
-+ char *wsp = " \t\r\n";
-
- if (pat[0] == '@') { /* @netgroup */
- #ifdef NO_NETGRENT
-@@ -422,6 +431,21 @@
- tcpd_warn("netgroup support disabled");
- #endif
- #endif
-+ } else if (pat[0] == '/') { /* /path/name */
-+ if ((fp = fopen(pat, "r")) != 0) {
-+ saved_context = tcpd_context;
-+ tcpd_context.file = pat;
-+ tcpd_context.line = 0;
-+ while (fgets(buf, sizeof(buf), fp)) {
-+ tcpd_context.line++;
-+ for (cp = strtok(buf, wsp); cp; cp = strtok((char *) 0, wsp))
-+ check_host(cp);
-+ }
-+ tcpd_context = saved_context;
-+ fclose(fp);
-+ } else if (errno != ENOENT) {
-+ tcpd_warn("open %s: %m", pat);
-+ }
- } else if (mask = split_at(pat, '/')) { /* network/netmask */
- if (dot_quad_addr(pat) == INADDR_NONE
- || dot_quad_addr(mask) == INADDR_NONE)
---- tcp-wrappers-7.6.orig/percent_m.c
-+++ tcp-wrappers-7.6/percent_m.c
-@@ -13,7 +13,7 @@
- #include <string.h>
-
- extern int errno;
--#ifndef SYS_ERRLIST_DEFINED
-+#if !defined(SYS_ERRLIST_DEFINED) && !defined(HAVE_STRERROR)
- extern char *sys_errlist[];
- extern int sys_nerr;
- #endif
-@@ -29,11 +29,15 @@
-
- while (*bp = *cp)
- if (*cp == '%' && cp[1] == 'm') {
-+#ifdef HAVE_STRERROR
-+ strcpy(bp, strerror(errno));
-+#else
- if (errno < sys_nerr && errno > 0) {
- strcpy(bp, sys_errlist[errno]);
- } else {
- sprintf(bp, "Unknown error %d", errno);
- }
-+#endif
- bp += strlen(bp);
- cp += 2;
- } else {
---- tcp-wrappers-7.6.orig/scaffold.c
-+++ tcp-wrappers-7.6/scaffold.c
-@@ -180,10 +180,12 @@
-
- /* ARGSUSED */
-
--void rfc931(request)
--struct request_info *request;
-+void rfc931(rmt_sin, our_sin, dest)
-+struct sockaddr_in *rmt_sin;
-+struct sockaddr_in *our_sin;
-+char *dest;
- {
-- strcpy(request->user, unknown);
-+ strcpy(dest, unknown);
- }
-
- /* check_path - examine accessibility */
---- tcp-wrappers-7.6.orig/weak_symbols.c
-+++ tcp-wrappers-7.6/weak_symbols.c
-@@ -0,0 +1,11 @@
-+ /*
-+ * @(#) weak_symbols.h 1.5 99/12/29 23:50
-+ *
-+ * Author: Anthony Towns <ajt@debian.org>
-+ */
-+
-+#ifdef HAVE_WEAKSYMS
-+#include <syslog.h>
-+int deny_severity = LOG_WARNING;
-+int allow_severity = SEVERITY;
-+#endif
diff --git a/openwrt/package/tcp_wrappers/patches/opt_cflags.patch b/openwrt/package/tcp_wrappers/patches/opt_cflags.patch
deleted file mode 100644
index 7b76333938..0000000000
--- a/openwrt/package/tcp_wrappers/patches/opt_cflags.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- tcp_wrappers_7.6/Makefile.orig 2005-05-21 18:11:32.000000000 +0200
-+++ tcp_wrappers_7.6/Makefile 2005-05-21 18:14:28.000000000 +0200
-@@ -689,7 +689,8 @@
- shared/%.o: %.c
- $(CC) $(CFLAGS) $(SHCFLAGS) -c $< -o $@
-
--CFLAGS = -O2 -g -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \
-+OPT_CFLAGS = -O2 -g
-+CFLAGS = $(OPT_CFLAGS) -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \
- $(BUGS) $(SYSTYPE) $(AUTH) $(UMASK) \
- -DREAL_DAEMON_DIR=\"$(REAL_DAEMON_DIR)\" $(STYLE) $(KILL_OPT) \
- -DSEVERITY=$(SEVERITY) -DRFC931_TIMEOUT=$(RFC931_TIMEOUT) \
diff --git a/openwrt/package/tcpdump/Config.in b/openwrt/package/tcpdump/Config.in
deleted file mode 100644
index 1e32c604f5..0000000000
--- a/openwrt/package/tcpdump/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_TCPDUMP
- prompt "tcpdump........................... Network monitoring and data acquisition tool"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPCAP
- help
- A tool for network monitoring and data acquisition.
-
- http://www.tcpdump.org/
-
diff --git a/openwrt/package/tcpdump/Makefile b/openwrt/package/tcpdump/Makefile
deleted file mode 100644
index b19c0efe4e..0000000000
--- a/openwrt/package/tcpdump/Makefile
+++ /dev/null
@@ -1,73 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=tcpdump
-PKG_VERSION:=3.9.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=4b64755bbc8ba1af49c747271a6df5b8
-
-PKG_SOURCE_URL:=http://www.tcpdump.org/release/ \
- http://ftp.gwdg.de/pub/misc/tcpdump/ \
- http://www.at.tcpdump.org/ \
- http://www.br.tcpdump.org/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,TCPDUMP,tcpdump,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- BUILD_CC=$(TARGET_CC) HOSTCC=$(HOSTCC) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ac_cv_linux_vers=2 \
- td_cv_buggygetaddrinfo="no" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --enable-shared \
- --disable-static \
- --enable-ipv6 \
- --without-crypto \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CCOPT="$(TARGET_CFLAGS)" INCLS="-I. -I$(STAGING_DIR)/usr/include" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_TCPDUMP):
- install -m0755 -d $(IDIR_TCPDUMP)/usr/sbin
- install -m0755 $(PKG_INSTALL_DIR)/usr/sbin/tcpdump $(IDIR_TCPDUMP)/usr/sbin/
- $(RSTRIP) $(IDIR_TCPDUMP)
- $(IPKG_BUILD) $(IDIR_TCPDUMP) $(PACKAGE_DIR)
diff --git a/openwrt/package/tcpdump/ipkg/tcpdump.control b/openwrt/package/tcpdump/ipkg/tcpdump.control
deleted file mode 100644
index ca3616976f..0000000000
--- a/openwrt/package/tcpdump/ipkg/tcpdump.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: tcpdump
-Priority: optional
-Section: net
-Description: A tool for network monitoring and data acquisition.
-Depends: libpcap
diff --git a/openwrt/package/tcpdump/patches/remove-pcap-debug.patch b/openwrt/package/tcpdump/patches/remove-pcap-debug.patch
deleted file mode 100644
index d8993f057a..0000000000
--- a/openwrt/package/tcpdump/patches/remove-pcap-debug.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -urN tcpdump-3.9.4.orig/tcpdump.c tcpdump-3.9.4/tcpdump.c
---- tcpdump-3.9.4.orig/tcpdump.c 2005-08-23 12:29:41.000000000 +0200
-+++ tcpdump-3.9.4/tcpdump.c 2006-02-05 17:52:37.000000000 +0100
-@@ -762,20 +762,6 @@
- error("invalid data link type %s", gndo->ndo_dltname);
- break;
-
--#if defined(HAVE_PCAP_DEBUG) || defined(HAVE_YYDEBUG)
-- case 'Y':
-- {
-- /* Undocumented flag */
--#ifdef HAVE_PCAP_DEBUG
-- extern int pcap_debug;
-- pcap_debug = 1;
--#else
-- extern int yydebug;
-- yydebug = 1;
--#endif
-- }
-- break;
--#endif
- case 'Z':
- if (optarg) {
- username = strdup(optarg);
diff --git a/openwrt/package/tinc/Config.in b/openwrt/package/tinc/Config.in
deleted file mode 100644
index 59c245fe13..0000000000
--- a/openwrt/package/tinc/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_TINC
- prompt "tinc.............................. VPN tunneling daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_KMOD_TUN
- select BR2_PACKAGE_LIBLZO
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- A VPN tunneling daemon
-
- http://www.tinc-vpn.org/
-
diff --git a/openwrt/package/tinc/Makefile b/openwrt/package/tinc/Makefile
deleted file mode 100644
index 912fcc3db0..0000000000
--- a/openwrt/package/tinc/Makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=tinc
-PKG_VERSION:=1.0.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=63887373dd763f8d90cecc5a3616c363
-
-PKG_SOURCE_URL:=http://www.tinc-vpn.org/packages \
- http://ftp.yi.se/pub/tinc/ \
- http://www.mirrors.wiretapped.net/security/network-security/tinc/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,TINC,tinc,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --with-kernel=$(LINUX_DIR) \
- --with-zlib=$(STAGING_DIR)/usr/ \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- CFLAGS="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_TINC):
- install -m0755 -d $(IDIR_TINC)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/tincd $(IDIR_TINC)/usr/sbin/
- $(RSTRIP) $(IDIR_TINC)
- $(IPKG_BUILD) $(IDIR_TINC) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/tinc/ipkg/tinc.control b/openwrt/package/tinc/ipkg/tinc.control
deleted file mode 100644
index df0d138618..0000000000
--- a/openwrt/package/tinc/ipkg/tinc.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: tinc
-Priority: optional
-Section: net
-Description: VPN tunnel daemon
-Depends: zlib, liblzo, libopenssl, kmod-tun
diff --git a/openwrt/package/tinyproxy/Config.in b/openwrt/package/tinyproxy/Config.in
deleted file mode 100644
index 53c0176ce0..0000000000
--- a/openwrt/package/tinyproxy/Config.in
+++ /dev/null
@@ -1,30 +0,0 @@
-menu "tinyproxy......................... Tinyproxy is a lightweight HTTP and HTTPS proxy."
-
-config BR2_PACKAGE_TINYPROXY
- prompt "tinyproxy......................... Tinyproxy is a lightweight HTTP and HTTPS proxy"
- tristate
- default m if CONFIG_DEVEL
- help
- Tinyproxy is a lightweight HTTP and HTTPS proxy.
-
- http://tinyproxy.sourceforge.net
-
-config BR2_COMPILE_TINYPROXY_WITH_TRANSPARENT_PROXY
- prompt "Enable transparent proxying"
- bool
- default y
- depends BR2_PACKAGE_TINYPROXY
-
-config BR2_COMPILE_TINYPROXY_WITH_FILTER
- prompt "Enable filtering support"
- bool
- default y
- depends BR2_PACKAGE_TINYPROXY
-
-config BR2_COMPILE_TINYPROXY_WITH_UPSTREAM
- prompt "Enable upstream support"
- bool
- default y
- depends BR2_PACKAGE_TINYPROXY
-
-endmenu
diff --git a/openwrt/package/tinyproxy/Makefile b/openwrt/package/tinyproxy/Makefile
deleted file mode 100644
index 3f2173ac48..0000000000
--- a/openwrt/package/tinyproxy/Makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=tinyproxy
-PKG_VERSION:=1.6.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=bd14d029b12621bcfd7ee71b2f4893da
-
-PKG_SOURCE_URL:=@SF/tinyproxy
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,TINYPROXY,tinyproxy,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-ifeq ($(BR2_COMPILE_TINYPROXY_WITH_TRANSPARENT_PROXY),y)
-ENABLE_TRANSPARENT:=--enable-transparent-proxy
-endif
-ifneq ($(BR2_COMPILE_TINYPROXY_WITH_UPSTREAM),y)
-DISABLE_UPSTREAM:=--disable-upstream
-endif
-ifneq ($(BR2_COMPILE_TINYPROXY_WITH_FILTER),y)
-DISABLE_FILTER:=--disable-filter
-endif
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(strip $(TARGET_CFLAGS))" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- --disable-static \
- $(ENABLE_TRANSPARENT) \
- $(DISABLE_UPSTREAM) \
- $(DISABLE_FILTER) \
- );
- touch $(PKG_BUILD_DIR)/.configured
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- find $(PKG_INSTALL_DIR) -name '*dist' | xargs rm -f
- touch $(PKG_BUILD_DIR)/.built
-
-$(IPKG_TINYPROXY):
- install -d -m0755 $(IDIR_TINYPROXY)/usr/sbin \
- $(IDIR_TINYPROXY)/etc/tinyproxy \
- $(IDIR_TINYPROXY)/etc/init.d \
- $(IDIR_TINYPROXY)/var/log \
- $(IDIR_TINYPROXY)/usr/share
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/tinyproxy $(IDIR_TINYPROXY)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/usr/share/tinyproxy $(IDIR_TINYPROXY)/usr/share/
- $(CP) $(PKG_INSTALL_DIR)/etc/tinyproxy $(IDIR_TINYPROXY)/etc/
- $(CP) files/$(PKG_NAME).init $(IDIR_TINYPROXY)/etc/init.d/$(PKG_NAME)
- $(RSTRIP) $(IDIR_TINYPROXY)
- $(IPKG_BUILD) $(IDIR_TINYPROXY) $(PACKAGE_DIR)
diff --git a/openwrt/package/tinyproxy/files/tinyproxy.init b/openwrt/package/tinyproxy/files/tinyproxy.init
deleted file mode 100755
index 3830d95a4d..0000000000
--- a/openwrt/package/tinyproxy/files/tinyproxy.init
+++ /dev/null
@@ -1,50 +0,0 @@
-#! /bin/sh
-
-PATH=/sbin:/bin:/usr/sbin:/usr/bin
-NAME=tinyproxy
-DESC="Tiny HTTP and HTTPS proxy"
-case "$1" in
- start)
- if [ -e /var/run/$NAME.pid ]; then
- echo "$DESC: $NAME already started."
- exit 0
- fi
- echo -n "Starting $DESC: $NAME"
- test -e /var/run/$NAME.pid || touch /var/run/$NAME.pid
- /usr/sbin/$NAME
- echo "."
- ;;
-
- stop)
- if [ ! -e /var/run/$NAME.pid ]; then
- echo "$DESC: $NAME is not running."
- exit 0
- fi
- echo -n "Stopping $DESC: $NAME"
- killall $NAME
- rm -f /var/run/$NAME.pid
-
- echo "."
- ;;
-
- restart|force-reload)
- if [ ! -e /var/run/$NAME.pid ]; then
- $0 start
- exit 0
- fi
- echo -n "Restarting $DESC: $NAME"
- killall $NAME
- sleep 1
-/usr/sbin/$NAME
- echo "."
- ;;
-
- *)
- N=/etc/init.d/$NAME
- echo "Usage: $N {start|stop|restart|force-reload}" >&2
- exit 1
- ;;
-
-esac
-
-exit 0 \ No newline at end of file
diff --git a/openwrt/package/tinyproxy/ipkg/tinyproxy.control b/openwrt/package/tinyproxy/ipkg/tinyproxy.control
deleted file mode 100644
index 821b927e4c..0000000000
--- a/openwrt/package/tinyproxy/ipkg/tinyproxy.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: tinyproxy
-Version: 1.6.3
-Section: net
-Description: Tinyproxy is a lightweight HTTP and HTTPS proxy.
-Priority: optional
diff --git a/openwrt/package/tmsnc/Config.in b/openwrt/package/tmsnc/Config.in
deleted file mode 100644
index 0ebe5135ef..0000000000
--- a/openwrt/package/tmsnc/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_TMSNC
- tristate "tmsnc............................. text-based MSN client"
- default m if CONFIG_DEVEL
- help
- TMSNC is a textbased (console) MSN client written in C.
-
- http://tmsnc.sourceforge.net
diff --git a/openwrt/package/tmsnc/Makefile b/openwrt/package/tmsnc/Makefile
deleted file mode 100644
index 32098d0001..0000000000
--- a/openwrt/package/tmsnc/Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=tmsnc
-PKG_VERSION:=0.3.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=3b30e5dab0b1b679d2b945c3a5713636
-PKG_SOURCE_URL:=@SF/tmsnc
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=zcat
-
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,TMSNC,tmsnc,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- ac_cv_func_malloc_0_nonnull=yes \
- ac_cv_func_realloc_0_nonnull=yes \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- $(DISABLE_NLS) \
- --with-libiconv-prefix=$(STAGING_DIR)/usr \
- --with-openssl=$(STAGING_DIR)/usr \
- --with-ncurses=$(STAGING_DIR) \
- --with-gnu-ld \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- rm -rf $(PKG_INSTALL_DIR)/usr/man
- touch $@
-
-$(IPKG_TMSNC):
- mkdir -p $(IDIR_TMSNC)
- $(CP) $(PKG_INSTALL_DIR)/* $(IDIR_TMSNC)/
- $(RSTRIP) $(IDIR_TMSNC)
- $(IPKG_BUILD) $(IDIR_TMSNC) $(PACKAGE_DIR)
diff --git a/openwrt/package/tmsnc/ipkg/tmsnc.control b/openwrt/package/tmsnc/ipkg/tmsnc.control
deleted file mode 100644
index 065ed43f88..0000000000
--- a/openwrt/package/tmsnc/ipkg/tmsnc.control
+++ /dev/null
@@ -1,9 +0,0 @@
-Package: tmsnc
-Priority: optional
-Section: net
-Maintainer: Florian Fainelli <florian@alphacore.net>
-Source: http://tmsnc.sourceforge.net
-Priority: optional
-Section: net
-Description: TMSNC is a textbased (console) MSN client written in C. TMSNC should work on most Unix (Linux, BSD, MacOS) compatible operating systems. The goal of this project is to create a client like MSN Messenger (with sound, webcam and file transfer support), but without any graphical features.
-Depends: libncurses, libopenssl
diff --git a/openwrt/package/tor/Config.in b/openwrt/package/tor/Config.in
deleted file mode 100644
index aa0ac5c9d2..0000000000
--- a/openwrt/package/tor/Config.in
+++ /dev/null
@@ -1,18 +0,0 @@
-config BR2_PACKAGE_TOR
- prompt "tor............................... An anonymous Internet communication system"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBEVENT
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_LIBPTHREAD
- select BR2_PACKAGE_ZLIB
- help
- Tor is a toolset for a wide range of organizations and people that want
- to improve their safety and security on the Internet. Using Tor can
- help you anonymize web browsing and publishing, instant messaging,
- IRC, SSH, and more. Tor also provides a platform on which software
- developers can build new applications with built-in anonymity, safety,
- and privacy features.
-
- http://tor.eff.org/
-
diff --git a/openwrt/package/tor/Makefile b/openwrt/package/tor/Makefile
deleted file mode 100644
index 40d239b28d..0000000000
--- a/openwrt/package/tor/Makefile
+++ /dev/null
@@ -1,76 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=tor
-PKG_VERSION:=0.1.0.17
-PKG_RELEASE:=1
-PKG_MD5SUM:=83c4afe29fa82473afcb2ec7e17771b9
-
-PKG_SOURCE_URL:=http://tor.eff.org/dist/ \
- http://ftp.se.linux.org/crypto/tor/ \
- http://tor.meulie.net/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,TOR,tor,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ac_cv_libevent_normal=yes \
- ac_cv_openssldir="$(STAGING_DIR)/usr" \
- tor_cv_null_is_zero=yes \
- tor_cv_unaligned_ok=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/sbin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CFLAGS="$(TARGET_CFLAGS) -Wall" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_TOR):
- install -d -m0755 $(IDIR_TOR)/etc/init.d
- install -m0755 ./files/tor.init $(IDIR_TOR)/etc/init.d/tor
- install -d -m0755 $(IDIR_TOR)/etc/tor
- install -m0644 ./files/torrc $(IDIR_TOR)/etc/tor/torrc
- install -d -m0755 $(IDIR_TOR)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/tor $(IDIR_TOR)/usr/sbin/
- $(RSTRIP) $(IDIR_TOR)
- $(IPKG_BUILD) $(IDIR_TOR) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/tor/files/tor.init b/openwrt/package/tor/files/tor.init
deleted file mode 100644
index 8eb2db49f9..0000000000
--- a/openwrt/package/tor/files/tor.init
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-BIN=tor
-DEFAULT=/etc/default/$BIN
-LOG_D=/var/log/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- mkdir -p $LOG_D
- mkdir -p $RUN_D
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/tor/files/torrc b/openwrt/package/tor/files/torrc
deleted file mode 100644
index e5cf75b6e1..0000000000
--- a/openwrt/package/tor/files/torrc
+++ /dev/null
@@ -1,136 +0,0 @@
-## Configuration file for a typical tor user
-## Built for Tor version 0.1.0.8-rc
-## (May or may not work for older or newer versions of Tor.)
-#
-# On Unix, Tor will look for this file in someplace like "~/.tor/torrc" or
-# "/etc/torrc"
-#
-# On Windows, Tor will look for the configuration file in someplace like
-# "Application Data\tor\torrc" or "Application Data\<username>\tor\torrc"
-#
-# With the default Mac OS X installer, Tor will look in ~/.tor/torrc or
-# /Library/Tor/torrc
-
-
-## Replace this with "SocksPort 0" if you plan to run Tor only as a
-## server, and not make any local application connections yourself.
-SocksPort 9050 # what port to open for local application connections
-SocksBindAddress 127.0.0.1 # accept connections only from localhost
-#SocksBindAddress 192.168.0.1:9100 # listen on a chosen IP/port too
-
-## Entry policies to allow/deny SOCKS requests based on IP address.
-## First entry that matches wins. If no SocksPolicy is set, we accept
-## all (and only) requests from SocksBindAddress.
-#SocksPolicy accept 192.168.0.1/16
-#SocksPolicy reject *
-
-## Allow no-name routers (ones that the dirserver operators don't
-## know anything about) in only these positions in your circuits.
-## Other choices (not advised) are entry,exit,introduction.
-AllowUnverifiedNodes middle,rendezvous
-
-## Logs go to stdout at level "notice" unless redirected by something
-## else, like one of the below lines. You can have as many log lines as
-## you want.
-##
-## Send all messages of level 'notice' or higher to /var/log/tor/notices.log
-#Log notice file /var/log/tor/notices.log
-## Send only debug and info messages to /var/log/tor/debug.log
-#Log debug-info file /var/log/tor/debug.log
-## Send ONLY debug messages to /var/log/tor/debug.log
-#Log debug-debug file /var/log/tor/debug.log
-## To use the system log instead of Tor's logfiles, uncomment these lines:
-#Log notice syslog
-## To send all messages to stderr:
-#Log debug stderr
-
-## Uncomment this to start the process in the background... or use
-## --runasdaemon 1 on the command line.
-RunAsDaemon 1
-
-## Tor only trusts directories signed with one of these keys, and
-## uses the given addresses to connect to the trusted directory
-## servers. If no DirServer lines are specified, Tor uses the built-in
-## defaults (moria1, moria2, tor26), so you can leave this alone unless
-## you need to change it.
-#DirServer 18.244.0.188:9031 FFCB 46DB 1339 DA84 674C 70D7 CB58 6434 C437 0441
-#DirServer 18.244.0.114:80 719B E45D E224 B607 C537 07D0 E214 3E2D 423E 74CF
-#DirServer 62.116.124.106:9030 847B 1F85 0344 D787 6491 A548 92F9 0493 4E4E B85D
-
-## The directory for keeping all the keys/etc. By default, we store
-## things in $HOME/.tor on Unix, and in Application Data\tor on Windows.
-#DataDirectory /var/lib/tor
-
-## The port on which Tor will listen for local connections from Tor controller
-## applications, as documented in control-spec.txt. NB: this feature is
-## currently experimental.
-#ControlPort 9051
-
-############### This section is just for location-hidden services ###
-
-## Look in .../hidden_service/hostname for the address to tell people.
-## HiddenServicePort x y:z says to redirect a port x request from the
-## client to y:z.
-
-#HiddenServiceDir /var/lib/tor/hidden_service/
-#HiddenServicePort 80 127.0.0.1:80
-
-#HiddenServiceDir /var/lib/tor/other_hidden_service/
-#HiddenServicePort 80 127.0.0.1:80
-#HiddenServicePort 22 127.0.0.1:22
-#HiddenServiceNodes moria1,moria2
-#HiddenServiceExcludeNodes bad,otherbad
-
-################ This section is just for servers #####################
-
-## NOTE: If you enable these, you should consider mailing your identity
-## key fingerprint to the tor-ops, so we can add you to the list of
-## servers that clients will trust. See
-## http://tor.eff.org/doc/tor-doc.html#server for details.
-
-## Required: A unique handle for this server
-#Nickname ididnteditheconfig
-
-## The IP or fqdn for this server. Leave blank and Tor will guess.
-#Address noname.example.com
-
-## Contact info that will be published in the directory, so we can
-## contact you if you need to upgrade or if something goes wrong.
-## This is optional but recommended.
-#ContactInfo Random Person <nobody AT example dot com>
-## You might also include your PGP or GPG fingerprint if you have one:
-#ContactInfo 1234D/FFFFFFFF Random Person <nobody AT example dot com>
-
-## Required: what port to advertise for tor connections
-#ORPort 9001
-## If you want to listen on a port other than the one advertised
-## in ORPort (e.g. to advertise 443 but bind to 9090), uncomment
-## the line below. You'll need to do ipchains or other port forwarding
-## yourself to make this work.
-#ORBindAddress 0.0.0.0:9090
-
-## Uncomment this to mirror the directory for others (please do)
-#DirPort 9030 # what port to advertise for directory connections
-## If you want to listen on a port other than the one advertised
-## in DirPort (e.g. to advertise 80 but bind 9091), uncomment the line
-## below. You'll need to do ipchains or other port forwarding yourself
-## to make this work.
-#DirBindAddress 0.0.0.0:9091
-
-## A comma-separated list of exit policies. They're considered first
-## to last, and the first match wins. If you want to *replace*
-## the default exit policy, end this with either a reject *:* or an
-## accept *:*. Otherwise, you're *augmenting* (prepending to) the
-## default exit policy. Leave commented to just use the default, which is
-## available in the man page or at http://tor.eff.org/documentation.html
-##
-## Look at http://wiki.noreply.org/noreply/TheOnionRouter/TorFAQ#Abuse
-## for issues you might encounter if you use the default exit policy.
-##
-#ExitPolicy accept *:6660-6667,reject *:* # allow irc ports but no more
-#ExitPolicy accept *:119 # accept nntp as well as default exit policy
-#ExitPolicy reject *:* # middleman only -- no exits allowed
-
-User tor
-Group tor
-PidFile /var/run/tor.pid
diff --git a/openwrt/package/tor/ipkg/tor.conffiles b/openwrt/package/tor/ipkg/tor.conffiles
deleted file mode 100644
index 2954287e67..0000000000
--- a/openwrt/package/tor/ipkg/tor.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/tor/torrc
diff --git a/openwrt/package/tor/ipkg/tor.control b/openwrt/package/tor/ipkg/tor.control
deleted file mode 100644
index bd1f79cbed..0000000000
--- a/openwrt/package/tor/ipkg/tor.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: tor
-Priority: optional
-Section: net
-Description: An anonymous Internet communication system
-Depends: libevent, libopenssl, libpthread, zlib
diff --git a/openwrt/package/tor/ipkg/tor.postinst b/openwrt/package/tor/ipkg/tor.postinst
deleted file mode 100644
index e52e8a5596..0000000000
--- a/openwrt/package/tor/ipkg/tor.postinst
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-name=tor
-id=52
-
-# do not change below
-# check if we are on real system
-if [ -z "${IPKG_INSTROOT}" ]; then
- # create copies of passwd and group, if we use squashfs
- rootfs=`mount |awk '/root/ { print $5 }'`
- if [ "$rootfs" = "squashfs" ]; then
- if [ -h /etc/group ]; then
- rm /etc/group
- cp /rom/etc/group /etc/group
- fi
- if [ -h /etc/passwd ]; then
- rm /etc/passwd
- cp /rom/etc/passwd /etc/passwd
- fi
- fi
-fi
-
-echo ""
-if [ -z "$(grep ^\\${name}: ${IPKG_INSTROOT}/etc/group)" ]; then
- echo "adding group $name to /etc/group"
- echo "${name}:x:${id}:" >> ${IPKG_INSTROOT}/etc/group
-fi
-
-if [ -z "$(grep ^\\${name}: ${IPKG_INSTROOT}/etc/passwd)" ]; then
- echo "adding user $name to /etc/passwd"
- echo "${name}:x:${id}:${id}:${name}:/tmp/.${name}:/bin/false" >> ${IPKG_INSTROOT}/etc/passwd
-fi
-
diff --git a/openwrt/package/ttcp/Config.in b/openwrt/package/ttcp/Config.in
deleted file mode 100644
index d4b81a1989..0000000000
--- a/openwrt/package/ttcp/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_TTCP
- prompt "ttcp.............................. A TCP connection performance tester"
- tristate
- default m if CONFIG_DEVEL
- help
- A small utility to test TCP connection performance
-
diff --git a/openwrt/package/ttcp/Makefile b/openwrt/package/ttcp/Makefile
deleted file mode 100644
index 6591482e97..0000000000
--- a/openwrt/package/ttcp/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ttcp
-PKG_VERSION:=3.8
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/ttcp
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,TTCP,ttcp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.prepared:
- mkdir -p $(PKG_BUILD_DIR)
- touch $@
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(TARGET_CC) $(TARGET_CFLAGS) -o $(PKG_BUILD_DIR)/ttcp ttcp.c
- touch $@
-
-$(IPKG_TTCP):
- install -d -m0755 $(IDIR_TTCP)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/ttcp $(IDIR_TTCP)/usr/bin/
- $(RSTRIP) $(IDIR_TTCP)
- $(IPKG_BUILD) $(IDIR_TTCP) $(PACKAGE_DIR)
diff --git a/openwrt/package/ttcp/ipkg/ttcp.control b/openwrt/package/ttcp/ipkg/ttcp.control
deleted file mode 100644
index ebcbbbdf4a..0000000000
--- a/openwrt/package/ttcp/ipkg/ttcp.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: ttcp
-Priority: optional
-Section: net
-Description: A small utility to test TCP connection performance
diff --git a/openwrt/package/ttcp/ttcp.c b/openwrt/package/ttcp/ttcp.c
deleted file mode 100644
index 7233ace990..0000000000
--- a/openwrt/package/ttcp/ttcp.c
+++ /dev/null
@@ -1,2374 +0,0 @@
-/*
- * T T C P . C
- *
- * Test TCP connection. Makes a connection on port 5010
- * and transfers fabricated buffers or data copied from stdin.
- *
- * Usable on 4.2, 4.3, and 4.1a systems by defining one of
- * BSD42 BSD43 (BSD41a)
- * Machines using System V with BSD sockets should define SYSV.
- *
- * Modified for operation under 4.2BSD, 18 Dec 84
- * T.C. Slattery, USNA
- * Minor improvements, Mike Muuss and Terry Slattery, 16-Oct-85.
- * Modified in 1989 at Silicon Graphics, Inc.
- * catch SIGPIPE to be able to print stats when receiver has died
- * for tcp, don't look for sentinel during reads to allow small transfers
- * increased default buffer size to 8K, nbuf to 2K to transfer 16MB
- * moved default port to 5001, beyond IPPORT_USERRESERVED
- * make sinkmode default because it is more popular,
- * -s now means don't sink/source
- * count number of read/write system calls to see effects of
- * blocking from full socket buffers
- * for tcp, -D option turns off buffered writes (sets TCP_NODELAY sockopt)
- * buffer alignment options, -A and -O
- * print stats in a format that's a bit easier to use with grep & awk
- * for SYSV, mimic BSD routines to use most of the existing timing code
- * Modified by Steve Miller of the University of Maryland, College Park
- * -b sets the socket buffer size (SO_SNDBUF/SO_RCVBUF)
- * Modified Sept. 1989 at Silicon Graphics, Inc.
- * restored -s sense at request of tcs@brl
- * Modified Oct. 1991 at Silicon Graphics, Inc.
- * use getopt(3) for option processing, add -f and -T options.
- * SGI IRIX 3.3 and 4.0 releases don't need #define SYSV.
- *
- * Modified --> Nov 1996 at CERN (Daniel DAVIDS)
- * printout of the Socket-Buffer-Sizes
- * configured for HP-UX 9000 OS
- * configured for Windows NT OS
- * Modified Dec 1996 at CERN (Jacques ROCHEZ)
- * severe cleanup
- * addaptation to the gcc compiler (ANSI)
- * configured for Lynx OS
- * automatic format for the rate display (G/M/K/)bytes/sec
- * added log (L) and more help (h) options.
- * Modified May 1997 at CERN (Jacques ROCHEZ)
- * removed the mes() function following err() function.
- * changed the default port to 5010
- * Modified jul 1997 at CERN (Jacques ROCHEZ)
- * adapted the timing calculation in microseconds
- * addapted the code for Vsisual C++ under NT4.0
- * Modified aug 1997 at CERN (Jacques ROCHEZ)
- * initialise to 0 the variables nbytes, numcalls
- * moved the buffer pre-load outside the measured timed area
- * Distribution Status -
- * Public Domain. Distribution Unlimited.
- * Modified jun 1998 at Epigram
- * - print hash marks to indicate prograss on transmitting side
- * - sleep between bursts of buffers
- * - set number of buffers/burst
- * Modified jul 1998 at Epigram
- * - send random size buffers
- * Modified jan 1999 at Epigram (WES)
- * - added start and end patterns to UDP start and end packets
- * - added handling of missed start, end, or data packets for UDP tests
- */
-#ifndef lint
-static char RCSid[] = "ttcp.c $- CERN Revision: 3.8 (dev level) -$";
-#endif
-
-static char VersDate[] = "Epigram 15-jul-98";
-
-/* system dependent setting
- * ------------------------
- * uname -a,gcc -v a.c are the tools used
- *
- * Platform/OS #define MACRO predefined
- * ----------- ------- ---------------------------------------------------
- * SunOS OS BSD43 __unix__ __sun__ __sparc__
- * SUN Solaris SYSV __unix__ __sun__ __sparc__ __svr4__
- * SGI-IRIX < 3.3 SYSV set as #define sgi
- * HP-UX 9000 SYSV __unix__ __hpux__ __hp9k8__
- * OSF/1 V3.2 SYSV __unix__ __osf__ __alpha__
- * OSF/1 V4.0 SYSV __unix__ __osf__ __alpha__ _CFE
- * LynxOS SYSV __unix__ __lynx__ __powerpc__
- * Windows NT SYSV __WINNT__ __i386__ __M_COFF__
- * AIX SYSV _AIX _AIX32 _POWER _IBMR2 _ARCH_PWR
-
-
- * Micosoft Visual C++ compiler under WindowNT 4.0
- * Windows NT _WINDOWS WIN32
-
- * Unix BSD 41a BSD41a
- * 42 BSD42
- * 43 BSD43
-
- * Machines using System V with BSD sockets should define SYSV.
- *
- * Compiler commands
- * -----------------
- * LynxOS : gcc -c ttcp.c -o ttcp.o | gcc -o ttcp -O ttcp.o -lnetinet -lc_p -lc
- */
-
-/* -------------attempt to set an automatic UNIX OS family detection -------*/
-
-#if defined(__hp9k8__) || defined(__osf__) || defined(__srv4__)
-#define SYSV
-#endif
-#if defined(__lynx__)
-#define SYSV
-#endif
-/* for solaris (__srv4__) the parameters SYSV is already set */
-
-/* version A.09.01 'key words' differs from A.09.05 A */
-#if defined(__hpux)
-#define __hpux__
-#endif
-
-#if defined(__sun__)&&!defined(__srv4__)
-#define BSD43 /* changed by BSD42 if necessary */
-#endif
-
-#if defined(_WIN32) /* Window NT 4.0 compiled with VisualC++ 4 */
-#define __NTVIS__
-#define SYSV
-#endif
-
-#if defined(__FreeBSD__)
-#define BSD43
-#endif
-
-#if defined(__linux__)
-#define BSD43
-#endif
-/*--------------------------------------------------------------------------*/
-
-#if !defined(UNDER_CE)
-#include <signal.h>
-#include <ctype.h>
-#include <errno.h>
-#include <sys/types.h>
-#endif
-
-#if defined(SYSV)
-
-#if defined(__osf__)
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <sys/time.h> /* struct timeval */
-#include <sys/resource.h> /* definition of struct rusage */
-
-#else /* else of __osf__ */
-#if defined(__NTVIS__)
-#include <winsock2.h>
-#include <windows.h> /* required for all Windows applications */
-#include <ws2tcpip.h>
-#include <memory.h>
-#include <time.h>
-#if !defined(UNDER_CE)
-#include <sys\timeb.h>
-#include <fcntl.h>
-#endif
-#include <stdlib.h>
-#include <io.h>
-struct rusage { struct timeval ru_utime, ru_stime; };
-#define RUSAGE_SELF 0
-#else /* else of __NTVIS__ */
-#if defined(__lynx__)
-#include <socket.h> /* located in /usr/include/..... */
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <time.h>
-#include <resource.h> /* definition of struct rusage */
-#include <sys/times.h>
-#define RUSAGE_SELF 0
-#include <conf.h> /* definition of TICKSPERSEC (HZ) */
-#include <sys/param.h>
-
-#else /* else of __Lynx__ */
-#if defined(__svr4__)
-#include <sys/socket.h>
-#include <sys/uio.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <sys/time.h> /* struct timeval */
-#include <sys/resource.h> /* definition of struct rusage */
-#include <sys/times.h>
-#define RUSAGE_SELF 0
-#include <sys/param.h>
-
-#else /* else of __svr4__ all SYSV cases except those mentionned before */
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <sys/time.h> /* struct timeval */
-#include <sys/resource.h> /* definition of struct rusage */
-#include <sys/times.h>
-#define RUSAGE_SELF 0
-#include <sys/param.h>
-
-#endif /* __svr4__ */
-#endif /* __lynx__ */
-#endif /* __NTVIS__ */
-#endif /* __osf__ */
-
-#else /* else of SYSV it is a BSD OS */
-#include <stdlib.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#if defined(__linux__)
-#include <time.h> /* struct timeval */
-#else
-#include <sys/time.h> /* struct timeval */
-#endif
-#include <sys/resource.h> /* definition of struct rusage */
-#include <unistd.h> /* for usleep() - henry */
-#define SOCKET_ERROR -1
-
-#endif /* SYSV */
-
-#if defined(__NTVIS__)
-
-#if defined(_DEBUG) /* usual debug symbol for VC++ */
-#define DEBUG 1
-#endif
-
-void usleep(unsigned int microseconds);
-
-#define bcopy(a,b,n) memcpy((b), (a), (n))
-#define bzero(a,n) memset((a), 0, (n))
-
-#ifndef _GETOPT_
-#define _GETOPT_
-int getopt(int argc, char **argv, char *optstring);
-
-extern char *optarg; // returned arg to go with this option
-extern int optind; // index to next argv element to process
-extern int opterr; // should error messages be printed?
-extern int optopt; //
-
-#define BADCH ('?')
-#endif // _GETOPT
-
-/* get option letter from argument vector */
-int
- opterr = 1, // should error messages be printed?
- optind = 1, // index into parent argv vector
- optopt; // character checked for validity
-char *optarg; // argument associated with option
-
-#define EMSG ""
-char *progname; // may also be defined elsewhere
-#endif /*__NTVIS__*/
-
-/* sockaddr_in == file server address structure
- *
- * Socket address, internet style. declared in : /netinet/in.h
- * struct sockaddr_in {short sin_family;
- * u_short sin_port;
- * struct in_addr sin_addr;
- * char sin_zero[8];
- * };
- *
- * Structure used by kernel to store most addresses. declared in ./sys/socket.h
- * struct sockaddr{u_short sa_family; address family
- * char sa_data[14]; up to 14 bytes of direct address
- * };
- * PS : sin stand for "socket internet number"
- */
-
-#ifndef __NTVIS__
-#define FAR
-#endif
-
-#if defined(__CONST_SOCKADDR_ARG)
-#define SOCKADDR_CAST (__CONST_SOCKADDR_ARG)
-#elif defined(__lynx__) || defined(__sun__) || defined(_AIX) || defined(__FreeBSD__) || defined(__NTVIS__)
-#define SOCKADDR_CAST (struct sockaddr FAR *)
-#else
-#define SOCKADDR_CAST
-#endif
-
-#if defined(__sun__)
-struct sockaddr_in sockaddr; /* done in ./X11/Xdmcp.h */
-#endif
-
-struct sockaddr_in sinme; /* is the socket struct. in the local host */
-struct sockaddr_in sinhim; /* is the socket struc. in the remote host */
-
-#if defined(__lynx__) || defined(__svr4__) || defined(_AIX)
-struct sockaddr frominet;
-#else
-struct sockaddr_in frominet;
-#endif /* __lynx__ */
-
-int domain, fromlen;
-
-#if !defined(__NTVIS__)
-#define SOCKET int
-#endif /* __NTVIS__ */
-SOCKET fd; /* fd of network socket */
-
-#if !defined(__lynx__)
-extern int errno;
-#endif
-
-#include <stdio.h>
-
-FILE *fplog = NULL; /* file pointer for the log file */
-char logfile[100]; /* file name for the log */
-static char logfile_head[] ="ttcp_log"; /* header name for the log */
-int buflen = 8 * 1024; /* length of buffer */
-char *buf; /* ptr to dynamic buffer */
-int nbuf = 2 * 1024; /* number of buffers to send in sinkmode */
-
-#define START_PKT_LEN 4
-#define START_PATTERN_LEN 4
-#define END_PKT_LEN 8
-#define END_PATTERN_LEN 4
-#define MIN_UDP_LEN 5
-
-char start_pattern[START_PATTERN_LEN] = {1, 2, 3, 4};
-char end_pattern[END_PATTERN_LEN] = {2, 2, 2, 2};
-
-int bufoffset = 0; /* align buffer to this */
-int bufalign = 16*1024; /* modulo this */
-
-int udp = 0; /* 0 = tcp, !0 = udp */
-int options = 0; /* socket options */
-int one = 1; /* for 4.3 BSD style setsockopt() */
-short port = 5010; /* TCP port number */
-char *host; /* ptr to name of host */
-int rndm = 0; /* 0="normal", !0=random data */
-int trans; /* 0=receive, !0=transmit mode */
-int timeout; /* read timeout in millisec */
-int debug = 0; /* 0=No-Debug, 1=Debug-Set-On */
-int sinkmode = 0; /* 0=normal I/O, !0=sink/source mode */
-int verbose = 0; /* 0=print basic info, 1=print cpu rate,
- * proc resource usage. */
-int nodelay = 0; /* set TCP_NODELAY socket option */
-int pri = 0; /* link layer priority */
-int b_flag = 0; /* use mread() */
-int log_cnt = 0; /* append result to a log */
-int sockbufsize = 0; /* socket buffer size to use */
-char fmt = 'A'; /* output format:
- * b = bits, B = bytes,
- * k = kilobits, K = kilobytes,
- * m = megabits, M = megabytes,
- * g = gigabits, G = gigabytes,
- * A = automatic Xbytes (default) */
-int touchdata = 0; /* access data after reading */
-int seq_info = 0; /* report out of order seq nums */
-
-int hash = 0; /* print hash marks for each buffer */
-int udpsleep = 0; /* sleep in between udp buffers */
-int burstn = 1; /* number of buffers per burst */
-int bufmin = -1; /* minimum buffer size to use when
- sending random-size buffers */
-unsigned int seed = 1; /* seed for random number generator
- used for random buffer lengths */
-int no_start = 0; /* skip the start frames for UDP */
-int no_data = 0; /* skip all data frames for UDP */
-int no_end = 0; /* skip the end frames for UDP */
-
-double nbytes; /* bytes on net */
-unsigned long numCalls; /* # of I/O system calls */
-
-struct hostent *addr;
-extern int optind;
-extern char *optarg;
-
-#if defined(UNDER_CE)
-static int errno;
-static char *weekday[] ={"Sun", "Mon","Tues", "Wed", "Thurs", "Fri", "Sat"};
-static char *month[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "July", "Aug", "Sep", "Oct", "Nov", "Dec"};
-#define perror printf
-#endif
-
-/*--------------------------------------------------------------------------*/
-static struct timeval time0; /* Time at which timing started */
-static struct timeval time1;
-static struct rusage ru0; /* Resource utilization at the start */
-static struct rusage ru1;
-static struct tm *tms; /* system time structure */
-
-
-/*-----------Prototype functions definitions -------------------------------*/
-/*--------------------------------------------------------------------------*/
-
- /* ANSI input/output functions (stdio.h) */
-
-#if defined(__lynx__)
-int getopt(int, char**, char*);
-int gettimeofday(struct timeval *tp, struct timezone *tzp);
-
-#else
-#if defined(__svr4__)
-
-#else
-#if defined(_AIX)
-
-#else
-#if defined(__hpux__)
-#else
-#if defined(__NTVIS__)
-#else
-#if defined(BSD42) || defined(BSD43)
-#else
-
-int printf( char*, ...);
-int fprintf(FILE*,char*, ...);
-void perror(char*);
-int getopt(int, char**, char*);
-int gettimeofday(struct timeval *tp, struct timezone *tzp);
-#endif /* BSD42 || BSD43 */
-#endif /* __NTVIS__ */
-#endif /* __hpux__ */
-#endif /* _AIX */
-#endif /* __svr4__ */
-#endif /* __lynx__ */
-
-int main(int argc, char* argv[]);
-#if ( (!(defined(BSD42))) && (!(defined(BSD43))) && (!(defined(__NTVIS__))) )
-int read(int, char*, int);
-int write(int, char*, int);
-int close(int);
-#endif /* !(BSD42) && !(BSD43) */
-int fclose(FILE *stream);
-
-#if !defined(BSD43) && !defined(__NTVIS__)
-void bzero(char*,int);
-void bcopy(char*, char*, int);
-char strncpy(char *s1,char *s2,size_t n);
-int atoi(char*);
-int malloc(int);
-#endif
-
-
- /* ANSI socket functions prototype /sys/socket.h */
-#if defined(__lynx__)
-int select(int, fd_set*, fd_set*, fd_set*, struct timeval*);
-
-#else
-#if defined(__svr4__) && !defined(sparc)
-
-/* informations in : /usr/include/sys/socket.h */
-int socket(int, int, int);
-int connect(int, struct sockaddr *, int);
-int bind(int, struct sockaddr *, int);
-int listen(int, int);
-int accept(int, struct sockaddr *, int *);
-int sendto(int, const char *, int, int, const struct sockaddr *, int);
-int recvfrom(int, char *, int, int, struct sockaddr *, int *);
-int getpeername(int, struct sockaddr *, int *);
-int getsockopt(int, int, int, char *, int *);
-int select(int, fd_set*, fd_set*, fd_set*, struct timeval*);
-
-#else
-#if defined(_AIX)
-int select(unsigned long, void *, void *, void *, struct timeval *);
-
-#else
-#if defined(__hpux__)
-int getrusage(int who,struct rusage *rusage);
-
-#else
-#if defined(__NTVIS__)
-
-#else
-#if defined(BSD42) || defined(BSD43)
-
-#else
-
-int socket(int, int, int);
-int connect(int s,struct sockaddr_in *name, int namelen);
-int bind(int s,struct sockaddr *name,int namelen);
-int listen(int, int);
-int accept(int, struct sockaddr_in *, int *);
-int sendto(int, char *, int, int, struct sockaddr_in *, int);
-int recvfrom(int, char *, int, int, struct sockaddr_in *, int *);
-int getpeername(int, struct sockaddr *, int *);
-int setsockopt(int, int, int, char *, int);
-
-int getsockopt(int, int, int, char*, int*);
-int select(int, fd_set*, fd_set*, fd_set*, struct timeval*);
-
-#endif /* BSD42 || BSD43 */
-#endif /* __hpux__ */
-#endif /* _AIX */
-#endif /* __svr4__ */
-#endif /* __lynx__ */
-#endif /* __NTVIS__ */
-
-/* ttcp prototype functions */
-void udp_rcv_test(void);
-double calc_cpu_time(struct rusage *r0, struct rusage *r1);
-double calc_real_time(struct timeval *t0, struct timeval *t1);
-int getrusage(int who,struct rusage *rusage);
-void sockets_err(char*);
-void err(char *);
-void mes(char *);
-void pattern(char *, int);
-int Nread(SOCKET, void *, int);
-int Nwrite(int, void *, int);
-void delay(int);
-int mread(int, char *,unsigned);
-char *outfmt(char format, double b);
-void prep_timer(void);
-void read_timer(void);
-void result_summary(void);
-void prusage(struct rusage*, struct rusage*,
- struct timeval*, struct timeval*);
-void tvadd(struct timeval *tsum, struct timeval *t0,struct timeval *t1);
-void tvsub(struct timeval *tdiff, struct timeval *t1, struct timeval *t0);
-void psecs(int);
-void open_log(void);
-void close_log(void);
-void do_Usage(void);
-void do_help(void);
-
-/*--------------------------------------------------------------------------*/
-#if !defined(__NTVIS__)
-void
-sigpipe()
-{;
-}
-#endif
-/*--------------------------------------------------------------------------*/
-/*--------------------------------------------------------------------------*/
-int
-main(int argc, char **argv)
-{
- unsigned long addr_tmp;
- int c,k;
- int sockbufsndsize,sockbufrcvsize;
- int sockbuflen;
- struct sockaddr_in peer;
- int peerlen = sizeof(peer);
-
-#if defined(__NTVIS__)
- extern char *optarg;
- WSADATA WSAData;
- WSAStartup(MAKEWORD(1,1), &WSAData);
-#endif /* __NTVIS__ */
-
- if (argc < 2) { do_Usage(); exit(1); }
-
- while (1) {
- while ((c=getopt(argc, argv, "hidrstuvxHVBDTLb:f:l:n:p:A:O:S:N:P:R:I:w:")) != -1) {
- switch (c) {
- case 'w':
- timeout = atoi(optarg);
- break;
- case 'I':
- seed = atoi(optarg);
- break;
- case 'N':
- burstn = atoi(optarg);
- break;
- case 'P':
-#if defined(__linux__)
- pri = atoi(optarg);
- break;
-#else
- fprintf(stderr, "ttcp: -P option not supported on this OS\n");
- exit(1);
-#endif
- case 'R':
- bufmin = atoi(optarg);
- break;
- case 'S':
- udpsleep = atoi(optarg);
- if (udpsleep < 0) udpsleep = 0;
- /* convert msec arg to usec for usleep, minimum 10ms */
- udpsleep = udpsleep * 1000;
- break;
- case 'H':
- hash = 1;
- break;
- case 'V':
- fprintf(stdout,"%s %s\n" , RCSid , VersDate );
- exit(0);
- case 'B':
- b_flag = 1;
- break;
- case 'L':
- log_cnt = 1;
- break;
- case 'h':
- do_help();
- exit(1);
- break;
- case 't':
- trans = 1;
- break;
- case 'r':
- trans = 0;
- break;
- case 'x':
- rndm = 1;
- break;
- case 'd':
- options |= SO_DEBUG;
- break;
- case 'D':
-#ifdef TCP_NODELAY
- nodelay = 1;
-#else
- fprintf(stderr,
- "ttcp: -D option ignored: TCP_NODELAY socket option not supported\n");
-#endif
- break;
- case 'n':
- nbuf = atoi(optarg);
- break;
- case 'l':
- buflen = atoi(optarg);
- break;
- case 's':
- sinkmode = !sinkmode;
- break;
- case 'p':
- port = atoi(optarg);
- break;
- case 'u':
- udp = 1;
- break;
- case 'v':
- verbose = 1;
- break;
- case 'A':
- bufalign = atoi(optarg);
- break;
- case 'O':
- bufoffset = atoi(optarg);
- break;
- case 'b':
-#if defined(SO_SNDBUF) || defined(SO_RCVBUF)
- sockbufsize = atoi(optarg);
-#else
- fprintf(stderr,
-"ttcp: -b option ignored: SO_SNDBUF/SO_RCVBUF socket options not supported\n");
-#endif
- break;
- case 'f':
- fmt = *optarg;
- break;
- case 'T':
- touchdata = 1;
- break;
- case 'i':
- seq_info = 1;
- break;
-
- default:
- {do_Usage(); exit(1);}
- }/*switch */
- }/* while getopt() */
-
- argc -= optind;
- argv += optind;
- optind = 0;
-
- /* check for '--' args */
- if (argc == 0) {
- /* no more args */
- break; /* while (1) */
-#if defined(DEBUG)
- } else if (!strcmp(argv[0], "--nostart")) {
- no_start = 1;
- argc--; argv++;
- } else if (!strcmp(argv[0], "--nodata")) {
- no_data = 1;
- argc--; argv++;
- } else if (!strcmp(argv[0], "--noend")) {
- no_end = 1;
- argc--; argv++;
- } else if (!strcmp(argv[0], "--debug")) {
- debug = 1;
- argc--; argv++;
-#endif /* DEBUG */
- } else if (!strncmp(argv[0], "--", 2)) {
- fprintf(stderr, "ttcp: illegal option: %s\n", argv[0]);
- do_Usage(); exit(1);
- } else {
- /* the arg was not a '--' arg */
- break; /* while (1) */
- }
- } /* while (1) */
-
-
- /* ----------------------- main part ----------------------- */
-
-#if defined(__NTVIS__) && !defined(UNDER_CE)
- /* Set "stdin" to have binary mode: */
- if (_setmode(_fileno(stdin), _O_BINARY) == -1)
- perror("%s: Error setting stdin to binary mode");
- /* Set "stdout" to have binary mode: */
- if (_setmode(_fileno(stdout), _O_BINARY) == -1)
- perror("%s: Error setting stdout to binary mode");
-#endif /* __NTVIS__ */
-
-if (log_cnt) open_log();
-
-/* input error checking */
-if (burstn > nbuf) {
- fprintf(stderr, "ttcp: buffers per burst must be less than or equal to "
- "total number of buffers\n");
- exit(1);
-}
-if (bufmin < -1) {
- fprintf(stderr, "ttcp: minimum buffer size specified with -R option must "
- "be non-negative\n");
- exit(1);
-}
-if (buflen > 65535) {
- fprintf(stderr, "ttcp: maximum buffer size specified with -l option must "
- "be <= 65536\n");
- exit(1);
-}
-if (bufmin > buflen) {
- fprintf(stderr, "ttcp: minimum buffer size specified with -R option must "
- "be less than or equal to (maximum) buffer size specified with -l\n");
- exit(1);
-}
-
-/* buffer allocation */
-
- if (udp && buflen < MIN_UDP_LEN)
- buflen = MIN_UDP_LEN; /* send more than the sentinel size */
-
- if ( (buf = (char *)malloc(buflen+bufalign)) == (char *)NULL)
- err("malloc");
- if (bufalign != 0)
- buf +=(bufalign - ((int)buf % bufalign) + bufoffset) % bufalign;
-
- fprintf(stderr,"ttcp%s: buflen=%d, nbuf=%d, align=%d/%d, port=%d\n",
- trans?"-t":"-r",buflen, nbuf, bufalign, bufoffset, port);
- if (log_cnt)fprintf(fplog," %6d %6d %6d %6d %4d",
- buflen, nbuf, bufalign, bufoffset, port);
-
- /* preload the buffer for the transmit condition */
- pattern( buf, buflen );
-
- /* seed the random number generator */
- if ((bufmin != -1) || (rndm != 0)) {
-#if defined(__NTVIS__)
- srand(seed);
-#else /* ! __NTVIS__ */
- srandom(seed);
-#endif /* __NTVIS__ */
- }
-
- if(trans)
- {/* xmitr */
- if (argc == 0) {
- fprintf(stderr, "ttcp: missing destination host arg\n");
- do_Usage(); exit(1);
- }
-
- bzero((char *)&sinhim, sizeof(sinhim));
- host = argv[0];
- if (atoi(host) > 0 )
- {/* Numeric */
- sinhim.sin_family = AF_INET;
- sinhim.sin_addr.s_addr = inet_addr(host);
- }
- else
- {if ((addr=gethostbyname(host)) == NULL) sockets_err("bad hostname");
- sinhim.sin_family = addr->h_addrtype;
- bcopy(addr->h_addr,(char*)&addr_tmp, addr->h_length);
- sinhim.sin_addr.s_addr = addr_tmp;
- }
- sinhim.sin_port = htons(port);
- sinme.sin_port = 0; /* free choice */
- }
- else
- {/* rcvr */
- sinme.sin_port = htons(port);
- }
-#if defined(__NTVIS__)
- sinme.sin_family = AF_INET;
-#endif
-
- fd = socket(AF_INET, udp?SOCK_DGRAM:SOCK_STREAM, 0);
-
-#if defined(__NTVIS__)
- if (fd == INVALID_SOCKET) sockets_err("socket");
-#else
- if (fd < 0) sockets_err("socket");
-#endif
-
- if (verbose) {
- char *label = trans?"ttcp-t":"ttcp-r";
-#if defined(UNDER_CE)
- SYSTEMTIME SystemTime;
- char time_str[30];
-
- GetLocalTime(&SystemTime);
- sprintf(time_str, "%s %s %d %02d:%02d:%02d %d\n", weekday[SystemTime.wDayOfWeek], month[SystemTime.wMonth - 1],
- SystemTime.wDay, SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond, SystemTime.wYear);
-#else
- time_t now;
- char *time_str;
-
- time(&now);
- time_str = ctime(&now);
-#endif
- fprintf(stdout,"%s: start time %s", label, time_str);
- fprintf(stdout,"%s: File-Descriptor 0x%x Opened\n", label, fd );
- }
-
-#if defined(__NTVIS__)
- if (bind(fd, (struct sockaddr FAR *)&sinme, sizeof(sinme)) == SOCKET_ERROR)
- sockets_err("bind");
-#else
- if (bind(fd, SOCKADDR_CAST &sinme, sizeof(sinme)) < 0)
- sockets_err("bind");
-#endif /* __NTVIS__ */
-
-
-#if defined(SO_SNDBUF) || defined(SO_RCVBUF)
- if (sockbufsize)
- {
-#if defined(__lynx__) || defined(__sun__) || defined(__NTVIS__)
- if (trans)
- {if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char *)&sockbufsize,
- sizeof sockbufsize) < 0)
- sockets_err("setsockopt: sndbuf");
- }
- else
- {if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char *)&sockbufsize,
- sizeof sockbufsize) < 0)
- sockets_err("setsockopt: rcvbuf");
- }
-
-#else
- if (trans)
-
- {if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sockbufsize,
- sizeof sockbufsize) < 0)
- sockets_err("setsockopt: sndbuf");
- }
- else
- {if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &sockbufsize,
- sizeof sockbufsize) < 0)
- sockets_err("setsockopt: rcvbuf");
- }
-#endif /* __lynx__ __sun__ __NTVIS__ */
- }
- else
- {/*
- ** Added by Daniel Davids to Know Socket-Buffer-Sizes
- */
- sockbuflen = sizeof sockbufsndsize;
-#if defined(__lynx__) || defined(__sun__) || defined(__NTVIS__)
- getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char *)&sockbufsndsize,
- &sockbuflen);
- sockbuflen = sizeof sockbufrcvsize;
- getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char *)&sockbufrcvsize,
- &sockbuflen);
-#else
- getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sockbufsndsize, &sockbuflen);
- sockbuflen = sizeof sockbufrcvsize;
- getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &sockbufrcvsize, &sockbuflen);
-#endif /* __lynx__ __sun__ __NTVIS__ */
- sockbufsize = ( sockbufsndsize + sockbufrcvsize ) / 2;
-
- if ( sockbufsndsize != sockbufrcvsize )
- {fprintf(stderr, "sockbufsndsize=%d, ", sockbufsndsize );
- fprintf(stderr, "sockbufrcvsize=%d, ", sockbufrcvsize );
- }
- }
-#endif /* defined(SO_SNDBUF) || defined(SO_RCVBUF) */
-
- if (sockbufsize) fprintf(stderr, "sockbufsize=%d, \n", sockbufsize);
-
- if (log_cnt)
- {if (sockbufsize)fprintf(fplog," %6d",sockbufsize);
- else fprintf(fplog," 0");
- }
-
-#if defined(__linux__)
- if (setsockopt(fd, SOL_SOCKET, SO_PRIORITY, (char *)&pri, sizeof pri) < 0)
- sockets_err("setsockopt: priority");
-#endif
-
-
- if (trans) fprintf(stderr, "# %s sender -> %s #\n", udp?"udp":"tcp", host);
- else fprintf(stderr, "# %s receiver #\n", udp?"udp":"tcp");
-
- if (!udp)
- {
-#if !defined(__NTVIS__)
- signal(SIGPIPE, sigpipe);
-#endif /* !__NTVIS__ */
-
- if (trans)
- {/* We are the client if transmitting */
- if (options)
- {
-#if defined(BSD42)
- if( setsockopt(fd, SOL_SOCKET, options, 0, 0) < 0)
-#else /* BSD43 */
- if( setsockopt(fd, SOL_SOCKET, options, (char *)&one, sizeof(one)) < 0)
-#endif /* BDS42 */
- sockets_err("setsockopt");
- }
-#ifdef TCP_NODELAY
- if (nodelay)
- {struct protoent *p;
- p = getprotobyname("tcp");
-#if defined(__lynx__) || defined(__sun__) || defined(__NTVIS__)
- if( p && setsockopt(fd, p->p_proto, TCP_NODELAY,
- (char *) &one, sizeof(one)) < 0)
-#else
- if( p && setsockopt(fd, p->p_proto, TCP_NODELAY,
- &one, sizeof(one)) < 0)
-#endif /* __lynx__ __sun__ __NTVIS__ */
- sockets_err("setsockopt: nodelay");
- }
-#endif /* TCP_NODELAY */
- if (connect(fd, SOCKADDR_CAST &sinhim, sizeof(sinhim) ) < 0)
- sockets_err("connect");
- }/* if (trans) */
- else
- {/* otherwise, we are the server and should listen for connections */
-
-errno = 0;
-
-#if defined(sgi) || ( defined(__osf__) && !defined(_CFE) )
- if( listen(fd,1) <0 )
-#else
- if( listen(fd,0) <0 ) /* allow a queue of 0 */
-#endif
- sockets_err("listen");
-
- if(options) {
- int err;
-#if defined(BSD42)
- err = setsockopt(fd, SOL_SOCKET, options, 0, 0);
-#elif defined(__lynx__) || defined(__sun__) || defined(__NTVIS__)
- err = setsockopt(fd, SOL_SOCKET, options, (char *) &one, sizeof(one));
-#else
- err = setsockopt(fd, SOL_SOCKET, options, &one, sizeof(one));
-#endif /* BSD42 */
- if (err < 0)
- sockets_err("setsockopt");
- }
- fromlen = sizeof(frominet);
- domain = AF_INET;
- if (timeout > 0) {
- fd_set readfds, exceptfds;
- struct timeval tv_timeout;
- int n;
-
- tv_timeout.tv_sec = timeout/1000;
- tv_timeout.tv_usec = (timeout%1000)*1000;
-
- FD_ZERO(&readfds);
- FD_ZERO(&exceptfds);
- FD_SET(fd, &readfds);
- FD_SET(fd, &exceptfds);
-
- n = select( fd+1, &readfds, NULL, &exceptfds, &tv_timeout );
- if (n == 0 || n == SOCKET_ERROR) {
- sockets_err("select listen");
- return 0;
- }
- }
- if((fd=accept(fd, SOCKADDR_CAST &frominet, &fromlen) ) < 0)
- sockets_err("accept");
-
- if (getpeername(fd, SOCKADDR_CAST &peer, &peerlen) < 0)
- sockets_err("getpeername");
-
- fprintf(stderr,"ttcp-r: accept from %s\n",inet_ntoa(peer.sin_addr));
-
- } /* otherwise we are ... */
- }
-
- prep_timer();
- errno = 0;
- nbytes = 0.0;
- numCalls = 0;
-
- {
- register int cnt,multi;
- char *pb;
- int nb = 0;
- unsigned long rbuflen = 0;
- multi = nbuf;
-
- if (trans) {
-#if !defined(BSD43)
- if(udp) {
- int err;
- int nochecksum_opt = 0;
- err = setsockopt(fd, IPPROTO_UDP, UDP_NOCHECKSUM,
- (char *)&nochecksum_opt, sizeof(nochecksum_opt));
- if (err < 0)
- sockets_err("setsockopt");
- }
-#endif
-
- if(udp && !no_start) {
- int start_count = 2;
- char start_pkt[START_PKT_LEN];
- memset(start_pkt, 0, START_PKT_LEN);
- memcpy(start_pkt, start_pattern, START_PATTERN_LEN);
-
- while (start_count-- > 0) {
- (void)Nwrite( fd, start_pkt, START_PKT_LEN ); /* rcvr start */
- if (udpsleep) {
- usleep(udpsleep);
- /* clear errno (see man page for errno(3), definition of
- EINTR. usleep() uses SIGCONT? ) */
- if (errno == EINTR) errno = 0;
- } /* udpsleep */
- }
- }
-
- /* initial seqence num for UDP */
- if (udp) buf[0] = 0;
- k = burstn;
-
- if (sinkmode) {
- while (multi-- > 0 && !no_data) {
-
- if (bufmin == -1) {
- rbuflen = buflen;
- } else {
- /* set rbuflen to a random value evenly distributed in
- [bufmin, buflen]. As long as buflen is < 2^16, we can
- fit the calculation in 32 bits */
-#if defined(__NTVIS__)
- rbuflen = (( (unsigned long)rand() *
- ((unsigned long)(buflen-bufmin+1)) ) >> 15) + bufmin;
-#else /* ! __NTVIS__ */
- rbuflen = (( ((unsigned long)random() >> 15) *
- ((unsigned long)(buflen-bufmin+1)) ) >> 16) + bufmin;
-#endif /* __NTVIS__ */
- }
-
- if (rndm) {
- unsigned int i, j, l;
- unsigned long data;
-
- if (udp)
- l = 1;
- else
- l = 0;
-
- for (i = l; i < rbuflen; /* null */) {
-#if defined(__NTVIS__)
- data = (unsigned long)rand();
-#else /* ! __NTVIS__ */
- data = (unsigned long)random();
-#endif /* __NTVIS__ */
- /*fprintf(stderr, "%08x\n",data);*/ /* DEBUG */
- /* The NT rand() function returns only 16 useful bits! */
- for (j = 0; (j < 2/*4*/) && (i < rbuflen) ; j++) {
- buf[i++] = (unsigned char)(data & 0xff);
- data >>= 8;
- }
- }
- }
-
- if ((cnt=Nwrite(fd,buf,rbuflen)) != (int)rbuflen)
- sockets_err("error from the socket write");
- /* increment sequence num if UDP */
- if (udp) buf[0] = (char)(((unsigned char)(buf[0])+1) & 0xFF);
-
- if (debug)
- fprintf(stdout,"ttcp-t: %5d | %d Bytes Written in %d write commands \n",
- ++nb, cnt, nbuf );
-
- nbytes += rbuflen;
-
- /* hashes */
- if (hash) {
- fprintf(stderr,"#");
- }
-
- /* Check for the end of a burst */
- if (--k <= 0) {
- k = burstn;
-
- /* sleep to avoid overrunning slower receivers - henry */
- if (udpsleep) {
- usleep(udpsleep);
- /* clear errno (see man page for errno(3), definition of
- EINTR. usleep() uses SIGCONT? ) */
- if (errno == EINTR) errno = 0;
- } /* udpsleep */
- }
- } /* while */
-
- } /* if (sinkmode) */
- else
- {
-
- nbuf = 0;
-
- if (bufmin == -1) {
- rbuflen = buflen;
- } else {
- /* set rbuflen to a random value evenly distributed in
- [bufmin, buflen]. As long as buflen is < 2^16, we can
- fit the calculation in 32 bits */
-#if defined(__NTVIS__)
- rbuflen = (( (unsigned long)rand() *
- ((unsigned long)(buflen-bufmin+1)) ) >> 15) + bufmin;
-#else /* ! __NTVIS__ */
- rbuflen = (( ((unsigned long)random() >> 15) *
- ((unsigned long)(buflen-bufmin+1)) ) >> 16) + bufmin;
-#endif /* __NTVIS__ */
- }
-
- if (udp)
- pb = &(buf[1]);
- else
- pb = &(buf[0]);
-
-#if !defined(__NTVIS__) /* else case specific to WINNT */
- while((cnt=read(0,pb,rbuflen)) > 0)
-#else /* __NTVIS__ */
- while((cnt=(int)fread(pb,1,rbuflen,stdin)) > 0)
-#endif /* __NTVIS__ */
- {
-
- if (udp)
- multi = cnt+1; /* don't include seq. num. in count of data */
- else
- multi = cnt;
- if ((cnt=Nwrite(fd,buf,multi)) != (int)multi)
- sockets_err("error from the socket write");
- /* increment seqence num if UDP */
- if (udp) buf[0] = (char)(((unsigned char)(buf[0])+1) & 0xFF);
- nbuf++;
-
- if (debug)
- fprintf(stdout,"ttcp-t: %5d | %d Bytes Written in %d write commands \n",
- ++nb, cnt, nbuf );
-
- nbytes += multi;
-
- /* hashes */
- if (hash) {
- fprintf(stderr,"#");
- }
-
- /* Check for the end of a burst */
- if (--k <= 0) {
- k = burstn;
-
- /* sleep to avoid overrunning slower receivers - henry */
- if (udpsleep) {
- usleep(udpsleep);
- /* clear errno (see man page for errno(3), definition of
- EINTR. usleep() uses SIGCONT? ) */
- if (errno == EINTR) errno = 0;
- } /* udpsleep */
- }
-
- if (bufmin == -1) {
- rbuflen = buflen;
- } else {
- /* set rbuflen to a random value evenly distributed in
- [bufmin, buflen]. As long as buflen is < 2^16, we can
- fit the calculation in 32 bits */
-#if defined(__NTVIS__)
- rbuflen = (( (unsigned long)rand() *
- ((unsigned long)(buflen-bufmin+1)) ) >> 15) + bufmin;
-#else /* ! __NTVIS__ */
- rbuflen = (( ((unsigned long)random() >> 15) *
- ((unsigned long)(buflen-bufmin+1)) ) >> 16) + bufmin;
-#endif /* __NTVIS__ */
- }
-
- } /* while */
-
- } /* if (sinkmode) */
-
- if (hash) {
- fprintf(stderr,"\n");
- fflush(stderr);
- }
-
-#if defined(UNDER_CE)
- errno = WSAGetLastError();
-#endif
- if (!errno) {
- read_timer();
- if(udp && !no_end) {
- int end_count = 4;
- int data_count = nbuf;
- char end_pkt[END_PKT_LEN];
- unsigned char* net_byte = &end_pkt[END_PATTERN_LEN];
- memset(end_pkt, 0, END_PKT_LEN);
- memcpy(end_pkt, end_pattern, END_PATTERN_LEN);
- net_byte[3] = data_count & 0xFF; data_count >>= 8;
- net_byte[2] = data_count & 0xFF; data_count >>= 8;
- net_byte[1] = data_count & 0xFF; data_count >>= 8;
- net_byte[0] = data_count & 0xFF;
-
- while (end_count-- > 0) {
- Nwrite( fd, end_pkt, END_PKT_LEN ); /* rcvr end */
- if (udpsleep && end_count>0) usleep(udpsleep);
- }
- }
- result_summary();
- }
- } /* trans */
- else
- {
- if (udp) {
- udp_rcv_test();
- }
- else
- {/* not udp received transfer */
- while ((cnt=Nread(fd,buf,buflen)) > 0)
- {if(debug)fprintf(stdout,
- "ttcp%s: %5d | %d Bytes Read\n",
- trans?"-t":"-r", ++nb, cnt );
- nbytes += cnt;
- if (!sinkmode) {
-#if !defined(__NTVIS__) /* else case specific to WINNT */
- if (write(1,buf,cnt) != cnt) err("write");
-#else /* __NTVIS__ */
- if ((int)fwrite(buf,1,cnt,stdout) != cnt) err("fwrite");
-#endif /* __NTVIS__ */
- }
- }
-#if defined(UNDER_CE)
- errno = WSAGetLastError();
-#endif
- if (!errno) {
- read_timer();
- result_summary();
- }
- }
- }
- }
-
- if(errno) err("IO");
-
-#if defined(__NTVIS__)
- closesocket ( fd );
-#else
- close ( fd );
-#endif /* __NTVIS__ */
-
- if (verbose) fprintf(stdout,"ttcp%s: File-Descriptor fd 0x%x Closed\n" ,
- trans?"-t":"-r", fd );
-
- if (log_cnt) close_log();
-
- fprintf(stderr,"ttcp done.\n");
- fflush(stdout);
-
- exit(0);
-}
-/*--------------------------------------------------------------------------*/
-void
-udp_rcv_test(void)
-{
- enum {START_WAIT, DATA_WAIT, DATA_RCV, END_TEST} rcv_state;
- enum {START_PKT_TYPE, END_PKT_TYPE, DATA_PKT_TYPE} pkt_type;
- int cnt;
- int nbuffers = 0;
- unsigned int start_pkt_cnt = 0;
- unsigned int end_pkt_cnt = 0;
- unsigned int data_pkt_cnt = 0;
- unsigned int expected_pkt_cnt = 0;
- unsigned char seq = 0;
- unsigned char buf_seq;
-
- rcv_state = START_WAIT;
- while (rcv_state != END_TEST && (cnt=Nread(fd,buf,buflen)) > 0) {
- /* Determine the type of packet received */
- if (!memcmp(buf, start_pattern, START_PATTERN_LEN)) {
- pkt_type = START_PKT_TYPE;
- start_pkt_cnt++;
- } else if (!memcmp(buf, end_pattern, END_PATTERN_LEN)) {
- /* read the expected data packet count from the end packet */
- unsigned char* net_byte = buf;
- net_byte += END_PATTERN_LEN;
- expected_pkt_cnt = ((net_byte[0] << 24) + (net_byte[1] << 16) +
- (net_byte[2] << 8) + net_byte[3]);
- pkt_type = END_PKT_TYPE;
- end_pkt_cnt++;
- } else {
- data_pkt_cnt++;
- pkt_type = DATA_PKT_TYPE;
- }
-
- if (rcv_state == START_WAIT) {
- /* Wait until we see a vaild start packet */
- if (pkt_type == START_PKT_TYPE) {
- prep_timer();
- rcv_state = DATA_WAIT;
- } else if (pkt_type == DATA_PKT_TYPE) {
- fprintf(stderr, "ERROR: Missed UDP start packet.\n");
- prep_timer();
- rcv_state = DATA_RCV;
- } else if (pkt_type == END_PKT_TYPE) {
- fprintf(stderr, "ERROR: Found UDP end packet before start packet or data.\n");
- rcv_state = END_TEST;
- }
- } else if (rcv_state == DATA_WAIT) {
- /* Skip any extra start packets until we see data */
- if (pkt_type == START_PKT_TYPE) {
- prep_timer();
- } else if (pkt_type == DATA_PKT_TYPE) {
- rcv_state = DATA_RCV;
- } else if (pkt_type == END_PKT_TYPE) {
- fprintf(stderr, "ERROR: Found UDP end packet without receiving "
- "any data packets.\n");
- rcv_state = END_TEST;
- }
- } else { /* DATA_RCV */
- /* Collect data packets until we see a vaild end packet */
- if (pkt_type == START_PKT_TYPE) {
- /* We missed the end packets and now a new test is
- * starting. Report the results of this test then start
- * another. */
- read_timer();
- result_summary();
- fprintf(stderr, "ERROR: Found UDP start packet while receiving data.\n"
- "ERROR: Expected more data packets or an end packet.\n");
- nbytes = 0.0;
- nbuffers = 0;
- numCalls = 0;
- prep_timer();
- rcv_state = DATA_WAIT;
- } else if (pkt_type == DATA_PKT_TYPE) {
- /* loop in this state */
- } else if (pkt_type == END_PKT_TYPE) {
- /* we used to print results here but now we do when the loop ends */
- rcv_state = END_TEST;
- }
- }
-
- /* tally data packets the same way from whatever state we are in */
- if (pkt_type == DATA_PKT_TYPE) {
- if (debug)
- fprintf(stderr, "ttcp-r: %5d | %d Bytes Read\n", ++nbuffers, cnt);
- nbytes += cnt;
- if (seq_info) {
- /* check seqence num */
- buf_seq = (unsigned char)(buf[0]);
- if (buf_seq != seq) {
- fprintf(stderr, "ERROR: Out of sequence. "
- "Buffer %u, seq %u, expected %u\n",
- data_pkt_cnt, buf_seq, seq);
- seq = buf_seq;
- }
- seq++;
- }
- if (!sinkmode) {
-#if !defined(__NTVIS__) /* else case specific to WINNT */
- if (write(1,&(buf[1]),cnt-1) != cnt-1) err("write");
-#else /* __NTVIS__ */
- if ((int)fwrite(&(buf[1]),1,cnt-1,stdout) != cnt-1) err("fwrite");
-#endif /* __NTVIS__ */
- }
- }
- } /* end-while */
-
- /* normal end of test */
- read_timer();
- result_summary();
- fprintf(stderr, "ttcp-r: packets %u data, %u start, %u end\n",
- data_pkt_cnt, start_pkt_cnt, end_pkt_cnt);
- if (expected_pkt_cnt != 0) {
- int lost_cnt = expected_pkt_cnt - data_pkt_cnt;
-
- fprintf(stderr, "ttcp-r: %g%% (%u/%u) packet loss\n",
- 100.0 * (double)lost_cnt/(double)expected_pkt_cnt,
- lost_cnt, expected_pkt_cnt);
- }
-}
-
-/*--------------------------------------------------------------------------*/
-/* calc_cpu_time(): Time difference, in usecs, of the combined user and
- * sys times of the given start and end usage info */
-double
-calc_cpu_time(
- struct rusage *r0,
- struct rusage *r1
-)
-{
- double time;
- time_t ms;
- struct timeval tdiff, tend, tstart;
-
- /* total user delta time + total system delta time */
- tvadd( &tend, &r1->ru_utime, &r1->ru_stime ); /* user + sys time @ end */
- tvadd( &tstart, &r0->ru_utime, &r0->ru_stime ); /* user + sys time @ start*/
- tvsub( &tdiff, &tend, &tstart );
-
- /* useconds */
- time = ((double)tdiff.tv_sec)*1e6 + (double)tdiff.tv_usec;
-
- /* debug mseconds */
- ms = tdiff.tv_sec*(time_t)1000 + tdiff.tv_usec/(time_t)1000;
- if (ms != (time_t)(time/1000.0)) {
- fprintf(stderr, "ERROR: time calc mismatch of msec (%d) to usec (%f)\n",
- (int)ms, time/1000.0);
- }
-
- return time;
-}
-
-/*--------------------------------------------------------------------------*/
-/* calc_real_time(): Time difference in usecs of the given times */
-double
-calc_real_time(
- struct timeval *t0,
- struct timeval *t1
-)
-{
- double time;
- time_t ms;
- struct timeval tdiff;
-
- tvsub(&tdiff, t1 ,t0);
-
- /* useconds */
- time = ((double)tdiff.tv_sec)*1e6 + (double)tdiff.tv_usec;
-
- /* debug mseconds */
- ms = tdiff.tv_sec*(time_t)1000 + tdiff.tv_usec/(time_t)1000;
- if (ms != (time_t)(time/1000.0)) {
- fprintf(stderr, "ERROR: time calc mismatch of msec (%d) to usec (%f)\n",
- (int)ms, time/1000.0);
- }
-
- return time;
-}
-/*--------------------------------------------------------------------------*/
-void
-result_summary(void)
-{
- char* label = trans ? "ttcp-t" : "ttcp-r";
- double cput = calc_cpu_time(&ru0, &ru1);
- double realt = calc_real_time(&time0, &time1);
- double t_min;
- double bytes_per_sec;
-
- /* lower end boundary conditions */
- t_min = 10.0; /* 10 usec */
-#if defined(__NTVIS__)
- t_min = 1000.0; /* 1 msec */
-#endif
- if (cput <= t_min) { /* value in usec */
- cput = t_min;
- fprintf(stderr,"%s: cpu time too short set at %.0f usec, NOT accurate result.\n",
- label,t_min);
- }
- if (realt <= t_min) { /* value in usec */
- realt = t_min;
- fprintf(stderr,"%s: real time too short, set at %.0f usec, NOT accurate result.\n",
- label,t_min);
- }
-
- bytes_per_sec = (nbytes/realt)*1e6;
-
- fprintf(stderr,"%s: %.0f bytes in %.06f real seconds = %s/sec +++\n",
- label, nbytes, realt/1e6, outfmt(fmt, bytes_per_sec));
-
- if (verbose)
- fprintf(stderr,"%s: %.0f bytes in %.06f cpu seconds = %s/cpu sec\n",
- label, nbytes,cput/1e6, outfmt(fmt, (nbytes/cput)*1e6));
-
- fprintf(stderr,"%s: %ld I/O calls, %.3f msec(real)/call, %.3f msec(cpu)/call\n",
- label, numCalls,
- (numCalls>0)?(realt/(double)numCalls)/1000.0:0.0,
- (numCalls>0)?(cput /(double)numCalls)/1000.0:0.0);
-
- fprintf(stderr,"%s: ", label);
- prusage(&ru0, &ru1, &time0, &time1);
- fprintf(stderr,"\n");
-
- if (verbose)
- printf("%s: buffer address %#x\n", label, (unsigned int)buf);
-
- if (fplog) {
- struct timeval tdiff;
- /* User time */
- tvsub(&tdiff, &ru1.ru_utime, &ru0.ru_utime);
- fprintf(fplog," %ld.%06ld", (long)tdiff.tv_sec, (long)tdiff.tv_usec);
- /* System time */
- tvsub(&tdiff, &ru1.ru_stime, &ru0.ru_stime);
- fprintf(fplog," %ld.%06ld", (long)tdiff.tv_sec, (long)tdiff.tv_usec);
- /* Percent of cput usage */
- fprintf(fplog," %.1f", 100.0 * (cput/realt));
- /* validity of real time mesurment */
- fprintf(fplog, (realt == t_min)?" 0":" 1");
- /* bytes, seconds, MBytes/sec, IO calls */
- fprintf(fplog," %10.0f %4.06f %4.3f %6ld",
- nbytes, realt/1e6, bytes_per_sec/(1024.0*1024.0), numCalls);
- }
-}
-/*--------------------------------------------------------------------------*/
-void
-sockets_err(char* s)
-{
-#if defined(__NTVIS__)
- int err = WSAGetLastError();
- char* prefix = trans?"ttcp-t":"ttcp-r";
- fprintf(stderr,"%s: %s\n", prefix, s);
- fprintf(stderr,"%s: errno=%d\n", prefix, err);
- exit(1);
-#else
- err(s);
-#endif /* __NTVIS__ */
-}
-
-/*--------------------------------------------------------------------------*/
-void
-err(char *s)
-{
- char* prefix = trans?"ttcp-t":"ttcp-r";
- fprintf(stderr,"%s: ", prefix);
- perror(s);
- fprintf(stderr,"%s: errno=%d\n", prefix, errno);
- exit(1);
-}
-/*--------------------------------------------------------------------------*/
-void
-mes(char *s)
-{
- fprintf(stderr,"ttcp%s: %s\n", trans?"-t":"-r", s);
-}
-/*--------------------------------------------------------------------------*/
-void
-pattern( char *cp, int cnt )
-{
- register char c;
- register int cnt1;
- cnt1 = cnt;
- c = 0;
- while( cnt1-- > 0 ) {
- while( !isprint((c&0x7F)) ) c++;
- *cp++ = (c++&0x7F);
- }
-}
-/*--------------------------------------------------------------------------*/
-char *
-outfmt(char format, double b)
-{
- static char obuf[50];
- double giga = 1024.0 * 1024.0 * 1024.0;
- double mega = 1024.0 * 1024.0;
- double kilo = 1024.0;
-
- if (format == 'A') {
- if (b >= giga)
- format = 'G';
- else if (b >= mega)
- format = 'M';
- else if (b >= kilo)
- format = 'K';
- else
- format = 'B';
- }
-
- switch (format) {
- case 'G':
- sprintf(obuf, "%.3f GB", b / giga);
- break;
- case 'M':
- sprintf(obuf, "%.3f MB", b / mega);
- break;
- case 'K':
- sprintf(obuf, "%.3f KB", b / kilo);
- break;
- case 'B':
- sprintf(obuf, "%4f B", b);
- break;
- case 'g':
- sprintf(obuf, "%.3f Gbit", b * 8.0 / giga);
- break;
- case 'm':
- sprintf(obuf, "%.3f Mbit", b * 8.0 / mega);
- break;
- case 'k':
- sprintf(obuf, "%.3f Kbit", b * 8.0 / kilo);
- break;
- case 'b':
- sprintf(obuf, "%4f b", b * 8.0);
- break;
- default:
- sprintf(obuf, "default..........");
- }
- return obuf;
-}
-/*--------------------------------------------------------------------------*/
-#if defined(SYSV)
-
-/*ARGSUSED*/
-
-#if defined(__osf__)
-/* getrusage defined in the system lib */
-#else
-#if defined(__lynx__)
-/* getrusage defined in the system lib */
-#else
-#if defined(__sun__)
-/* getrusage defined in the system lib */
-#else
-
-int
-getrusage(ignored, ru)
- int ignored;
- register struct rusage *ru;
-{
-
-
-#if defined(__NTVIS__)
- HANDLE phd;
- FILETIME CreateTime, ExitTime, KernelTime, UserTime;
- SYSTEMTIME SysTime;
-#if defined(UNDER_CE)
- phd = GetCurrentThread();
- if( GetThreadTimes(phd, &CreateTime, &ExitTime, &KernelTime, &UserTime)
- != TRUE)
-#else
- phd = GetCurrentProcess();
- if( GetProcessTimes(phd, &CreateTime, &ExitTime, &KernelTime, &UserTime)
- != TRUE)
-#endif
- {ru->ru_stime.tv_sec = 0;
- ru->ru_stime.tv_usec = 0;
- ru->ru_utime.tv_sec = 0;
- ru->ru_utime.tv_usec = 0;
- }
- else
- {
- (void) FileTimeToSystemTime(&KernelTime, &SysTime);
- /*
- * fprintf(stdout,
- * "System sec=%d, msec=%d\n", SysTime.wSecond, SysTime.wMilliseconds);
- */
- ru->ru_stime.tv_sec = SysTime.wSecond;
- ru->ru_stime.tv_usec = SysTime.wMilliseconds * 1000;
- (void) FileTimeToSystemTime(&UserTime, &SysTime);
- /*
- * fprintf(stdout,
- * " User sec=%d, msec=%d\n", SysTime.wSecond, SysTime.wMilliseconds);
- */
- ru->ru_utime.tv_sec = SysTime.wSecond;
- ru->ru_utime.tv_usec = SysTime.wMilliseconds * 1000;
- }
-
-#else /* __NTVIS__ */
-
- struct tms buftime;
- times(&buftime);
- /* Assumption: HZ <= 2147 (LONG_MAX/1000000) */
- /* info : in lynxOS HZ is called TICKSPERSEC (<conf.h>) */
-
- ru->ru_stime.tv_sec = buftime.tms_stime / HZ;
- ru->ru_stime.tv_usec = ((buftime.tms_stime % HZ) * 1000000) / HZ;
- ru->ru_utime.tv_sec = buftime.tms_utime / HZ;
- ru->ru_utime.tv_usec = ((buftime.tms_utime % HZ) * 1000000) / HZ;
-#endif /* __NTVIS__ */
-return(0);
-
-} /* static getrusage */
-
-#endif /* __sun__ */
-#endif /* __lynx__ */
-#endif /* __osf__ */
-#endif /* SYSV */
-/*--------------------------------------------------------------------------*/
-#if defined(SYSV)
-#if defined(__hpux__) || defined(_AIX) || defined(__sun__)
-/* gettimeofday defined in the system lib */
-#else
-# if defined (__osf__) ||defined (__lynx__)
-/* gettimeofday defined in the system lib */
-#else
-/*ARGSUSED*/
-static
-gettimeofday(tp, zp)
-struct timeval *tp;
-struct timezone *zp;
-{
-#if defined(__NTVIS__)
-#if defined(UNDER_CE)
- SYSTEMTIME SystemTime;
-
- GetLocalTime(&SystemTime);
- tp->tv_sec = SystemTime.wSecond;
- tp->tv_usec = SystemTime.wMilliseconds * 1000;
-#else
- struct _timeb timeptr;
-
- _ftime(&timeptr);
- tp->tv_sec = timeptr.time;
- tp->tv_usec = timeptr.millitm * 1000;
-#endif
-#else /* all cases */
- tp->tv_sec = time(0);
- tp->tv_usec = 0;
-#endif /* __NTVIS__ */
-return(1);
-} /* static gettimeofday */
-
-#endif /*__osf__ || __lynx__ */
-#endif /* __hpux__ || _AIX || __sun__ || __osf__*/
-#endif /* SYSV */
-/*--------------------------------------------------------------------------*/
-/*
- * P R E P _ T I M E R
- */
-void
-prep_timer(void)
-{
- gettimeofday(&time0, (struct timezone *)0);
- getrusage(RUSAGE_SELF, &ru0);
-}
-/*--------------------------------------------------------------------------*/
-/*
- * R E A D _ T I M E R
- *
- */
-void
-read_timer(void)
-{
- getrusage(RUSAGE_SELF, &ru1);
- gettimeofday(&time1, (struct timezone *)0);
-}
-/*--------------------------------------------------------------------------*/
-/* Print the process usage calculated from timers values extracted
- * before and after the transfer execution.
- */
-void
-prusage(
- struct rusage *r0, struct rusage *r1,
- struct timeval *t0, struct timeval *t1
-)
-{
- struct timeval tdiff;
- int t, ms;
- register char *cp;
- double cput = calc_cpu_time(r0, r1);
- double realt = calc_real_time(t0, t1);
-
- /* t == total user delta time + total system delta time */
- if (debug)
- {
- printf("timers : end startup\n");
- printf("user (sec) : %9ld %9ld\n",r1->ru_utime.tv_sec,
- r0->ru_utime.tv_sec);
- printf("user (usec): %9ld %9ld\n",r1->ru_utime.tv_usec,
- r0->ru_utime.tv_usec);
- printf("sys (sec) : %9ld %9ld\n",r1->ru_stime.tv_sec,
- r0->ru_stime.tv_sec);
- printf("sys (usec): %9ld %9ld\n",r1->ru_stime.tv_usec,
- r0->ru_stime.tv_usec);
- printf("time (sec) : %9ld %9ld\n",t1->tv_sec,t0->tv_sec);
- printf("time (usec): %9ld %9ld\n",t1->tv_usec,t0->tv_usec);
- }
- /* for the AIX debug, most counters are outside a good range
- printf(" r0 r1\n");
- printf("ru_ixrss %20ld %20ld \n", r0->ru_ixrss ,r1->ru_ixrss );
- printf("ru_idrss %20ld %20ld \n", r0->ru_idrss ,r1->ru_idrss );
- printf("ru_isrss %20ld %20ld \n", r0->ru_isrss ,r1->ru_isrss );
- printf("ru_minflt %20ld %20ld \n", r0->ru_minflt ,r1->ru_minflt );
- printf("ru_majflt %20ld %20ld \n", r0->ru_majflt ,r1->ru_majflt );
- printf("ru_nswap %20ld %20ld \n", r0->ru_nswap ,r1->ru_nswap );
- printf("ru_inblock %20ld %20ld \n", r0->ru_inblock ,r1->ru_inblock );
- printf("ru_oublock %20ld %20ld \n", r0->ru_oublock ,r1->ru_oublock );
- printf("ru_msgsnd %20ld %20ld \n", r0->ru_msgsnd ,r1->ru_msgsnd );
- printf("ru_msgrcv %20ld %20ld \n", r0->ru_msgrcv ,r1->ru_msgrcv );
- printf("ru_nsignals %20ld %20ld \n", r0->ru_nsignals ,r1->ru_nsignals);
- printf("ru_nvcsw %20ld %20ld \n", r0->ru_nvcsw ,r1->ru_nvcsw );
- printf("ru_nivcsw %20ld %20ld \n", r0->ru_nivcsw ,r1->ru_nivcsw );
- */
-
- /* cpu time in mseconds */
- t = (int)(cput / 1000.0);
-
- /* ms == value of the internal clock at the end of the xfer */
- /* also called real time. */
- /* real time in mseconds */
- ms = (int)(realt / 1000.0);
-
- /* The display is based on variables provided by the function getrusage
- Info located in : /usr/include/sys/resource.h
- */
-#if defined(SYSV)
-
-#if defined(_AIX)
- /* with AIX cernsp most counters are wrong
- * cp = "%Uuser %Ssys %Ereal %P %Xi+%Dd %Mmaxrss %F+%Rpf %Ccsw\0";
- */
- cp = "%Uuser %Ssys %Ereal %P\0";
-
-#else
-#if defined(__osf__)
- cp = "%Uuser %Ssys %Ereal %P %Xi+%Dd %Mmaxrss %F+%Rpf %Ccsw\0";
-#else
-#if defined(sgi) /* IRIX 3.3 will show 0 for %M,%F,%R,%C */
- cp = "%Uuser %Ssys %Ereal %P %Mmaxrss %F+%Rpf %Ccsw\0";
-#else
-#if defined(__Lynx__)
- cp = "%Uuser %Ssys %Ereal %P\0";
-#else
- cp = "%Uuser %Ssys %Ereal %P\0"; /* all SYSV except those mentionned */
-#endif /*__lynx__ */
-#endif /* sgi */
-#endif /*__osf__ */
-#endif /* _AIX */
-
-#else /* BSD system */
- cp = "%Uuser %Ssys %Ereal %P %Xi+%Dd %Mmaxrss %F+%Rpf %Ccsw\0";
-
-#endif /* SYSV */
-
- for (; *cp; cp++) {
- if (*cp != '%') {
- putc(*cp, stderr);
- /* *outp++ = *cp; */
- } else if (cp[1])
- switch(*++cp) {
- case 'U':
- tvsub(&tdiff, &r1->ru_utime, &r0->ru_utime);
- fprintf(stderr,"%ld.%06ld", (long)tdiff.tv_sec, (long)tdiff.tv_usec);
- break;
-
- case 'S':
- tvsub(&tdiff, &r1->ru_stime, &r0->ru_stime);
- fprintf(stderr,"%ld.%06ld", (long)tdiff.tv_sec, (long)tdiff.tv_usec);
- break;
-
- case 'E':
- psecs( ms / 1000);
- break;
-
- case 'P':
- fprintf(stderr,"%.1f%%", (cput*100.0 / (realt ? realt : 1.0)) );
- break;
-
-#if !defined(SYSV) || defined(__osf__) || defined(_AIX)
- case 'W':
- {
- int i = r1->ru_nswap - r0->ru_nswap;
- fprintf(stderr,"%d", i);
- break;
- }
-
- case 'X':
- fprintf(stderr,"%ld", t == 0 ? 0 : (r1->ru_ixrss-r0->ru_ixrss)/t);
- break;
-
- case 'D':
- fprintf(stderr,"%ld", t == 0 ? 0 :
- (r1->ru_idrss+r1->ru_isrss - (r0->ru_idrss+r0->ru_isrss))/t);
- break;
-
- case 'K':
- fprintf(stderr,"%ld", t == 0 ? 0 :
- ((r1->ru_ixrss+r1->ru_isrss+r1->ru_idrss) -
- (r0->ru_ixrss+r0->ru_idrss+r0->ru_isrss))/t);
- break;
-
- case 'M':
- fprintf(stderr,"%ld", r1->ru_maxrss/2);
- break;
-
- case 'F':
- fprintf(stderr,"%ld", r1->ru_majflt-r0->ru_majflt);
- break;
-
- case 'R':
- fprintf(stderr,"%ld", r1->ru_minflt-r0->ru_minflt);
- break;
-
- case 'I':
- fprintf(stderr,"%ld", r1->ru_inblock-r0->ru_inblock);
- break;
-
- case 'O':
- fprintf(stderr,"%ld", r1->ru_oublock-r0->ru_oublock);
- break;
-
- case 'C':
- fprintf(stderr,"%ld+%ld",
- r1->ru_nvcsw-r0->ru_nvcsw, r1->ru_nivcsw-r0->ru_nivcsw);
- break;
-#endif /* !SYSV || __osf__ */
- default:
- putc(*cp, stderr);
- break;
- } /* switch */
- } /* for */
-}
-/*--------------------------------------------------------------------------*/
-/* add 2 times structure and move usec bigger than 1000000 to sec */
-void
-tvadd(tsum, t0, t1)
- struct timeval *tsum, *t0, *t1;
-{
- tsum->tv_sec = t0->tv_sec + t1->tv_sec;
- tsum->tv_usec = t0->tv_usec + t1->tv_usec;
- if (tsum->tv_usec > 1000000) tsum->tv_sec++, tsum->tv_usec -= 1000000;
-}
-/*--------------------------------------------------------------------------*/
-/* substract 2 time structure (t1 > t0) */
-void
-tvsub(tdiff, t1, t0)
- struct timeval *tdiff, *t1, *t0;
-{
- tdiff->tv_sec = t1->tv_sec - t0->tv_sec;
- tdiff->tv_usec = t1->tv_usec - t0->tv_usec;
- if (tdiff->tv_usec < 0) tdiff->tv_sec--, tdiff->tv_usec += 1000000;
-}
-
-/*--------------------------------------------------------------------------*/
-void
-psecs(int l)
-{
- int i = (int)l/3600;
-
- if (i) {
- /* hours:min:sec */
- fprintf(stderr,"%d:", i);
- i = (int)l % 3600;
- fprintf(stderr,"%.2d:%.2d", i/60, i%60);
- } else {
- /* min:sec */
- i = (int)l;
- fprintf(stderr,"%d:%.2d", i/60, i%60);
- }
-}
-/*--------------------------------------------------------------------------*/
-/* N R E A D */
-
-int
-Nread(SOCKET s, void* bufp, int count )
-{
-#if defined(__lynx__) || defined(__svr4__) || defined(_AIX) || defined(__NTVIS__) || defined(__FreeBSD__)
- struct sockaddr from;
-#else
- struct sockaddr_in from;
-#endif
- int len = sizeof(from);
- register int cnt;
-
- if (timeout > 0) {
- fd_set readfds, exceptfds;
- struct timeval tv_timeout;
- int n;
-
- tv_timeout.tv_sec = timeout/1000;
- tv_timeout.tv_usec = (timeout%1000)*1000;
-
- FD_ZERO(&readfds);
- FD_ZERO(&exceptfds);
- FD_SET(s, &readfds);
- FD_SET(s, &exceptfds);
-
- n = select( s+1, &readfds, NULL, &exceptfds, &tv_timeout );
- if (n == SOCKET_ERROR) {
- sockets_err("select read");
- } else if (n == 0) {
- return (0);
- }
-
- }
-
- if( udp )
- {cnt = recvfrom( s, bufp, count, 0, SOCKADDR_CAST &from, &len );
- numCalls++;
- }
- else
- {if( b_flag ) cnt = mread( s, bufp, count ); /* fill bufp */
- else
- {
-#if defined(__NTVIS__)
- cnt = recv( s, bufp, count, 0 );
-#else
- cnt = read( s, bufp, count );
-#endif /* __NTVIS__ */
- numCalls++;
- }
- if (touchdata && cnt > 0)
- {register int c = cnt, sum = 0;
- register char *b = bufp;
- while (c--) sum += *b++;
- }
- }
- /* rchrch printf (" numcall %d read buffer %d bytes \n",numCalls,cnt); */
- return(cnt);
-}
-/*--------------------------------------------------------------------------*/
-/* N W R I T E */
-
-int
-Nwrite( int s, void* bufp, int count )
-{
- register int cnt;
- if( udp )
- {
- again:
- cnt = sendto( s, bufp, count, 0, SOCKADDR_CAST &sinhim,
- sizeof(sinhim) );
-
- numCalls++;
-
-#if defined(__NTVIS__)
- if( cnt<0 && WSAENOBUFS == WSAGetLastError())
-#else
- if( cnt<0 && errno == ENOBUFS )
-#endif /* __NTVIS__ */
-
- { delay(18000); errno = 0; goto again; }
- } else /* if (udp) */
- {
-
-#if defined(__NTVIS__)
- cnt = send( s, bufp, count, 0 );
- numCalls++;
-#else
- cnt = write( s, bufp, count );
- numCalls++;
-#endif /* __NTVIS__ */
- }
- return(cnt);
-}
-/*--------------------------------------------------------------------------*/
-void
-delay(us)
-int us;
-{
- struct timeval tv;
-
- tv.tv_sec = 0;
- tv.tv_usec = (time_t)us;
-
-#if defined(__hpux__)
- select(1, 0, 0, 0, &tv);
-#else
- select(1, (fd_set *)0, (fd_set *)0, (fd_set *)0, &tv);
-#endif
-}
-/*--------------------------------------------------------------------------*/
-/* M R E A D
- *
- * This function performs the function of a read(II) but will
- * call read(II) multiple times in order to get the requested
- * number of characters. This can be necessary because
- * network connections don't deliver data with the same
- * grouping as it is written with. Written by Robert S. Miles, BRL.
- */
-int
-mread(int s, char* bufp, unsigned n)
-{
- register unsigned count = 0;
- register int nread;
-
- do
- {
-#if defined(__NTVIS__)
- nread = recv(s, bufp, n-count, 0);
-#else
- nread = read(s, bufp, n-count);
-#endif /* __NTVIS__ */
- numCalls++;
- if(nread < 0) {perror("ttcp_mread"); return(-1); }
- if(nread == 0) return((int)count);
- count += (unsigned)nread;
- bufp += nread;
- }while(count < n);
- return((int)count);
-}
-
-/*--------------------------------------------------------------------------*/
-void
-open_log()
-{static long sysTicks;
-#if defined(UNDER_CE)
- SYSTEMTIME SystemTime;
-#endif
- sprintf(logfile,"%s_%s",logfile_head,trans?"t":"r");
-
- fprintf(stderr,"open the log file >%s<\n",logfile);
- if ((fplog = fopen(logfile,"r")) == NULL)
-
- {if ((fplog = fopen(logfile,"a+")) == NULL)
- {fprintf(stderr,"Failure : creation of the file >%s< \n",logfile );
- exit(1);
- }
- else
- {fprintf(fplog," creation date : ");
- /* get date */
-#if defined(UNDER_CE)
- GetLocalTime(&SystemTime);
- sprintf(fplog,"%02d-%02d-%02d %02d:%02d\n", SystemTime.wDay, month[SystemTime.wMonth - 1],
- SystemTime.wYear, SystemTime.wHour, SystemTime.wMinute);
-#else
- time(&sysTicks);
- tms = localtime(&sysTicks);
- fprintf(fplog,"%02d-%02d-%02d %02d:%02d\n",
- tms->tm_mday, tms->tm_mon, tms->tm_year,tms->tm_hour, tms->tm_min);
-#endif
-
- /* An other version will produce : Mon Aug 4 16:32:16 1997
- * long lDxcomsTicks; char *pDateTime;
- * time(&lDxcomsTicks);
- * pDateTime = ctime(&lDxcomsTicks); *(pDateTime+24) = '\0';
- * fprintf(fplog," ttcp called : %s", pDateTime);
- */
- fprintf(fplog,"format\n");
- fprintf(fplog,",buflen, nbuf(byte), bufalign(byte), bufoffset(byte)");
- fprintf(fplog,", port, sockbufsize(byte), UserTime(sec), SysTime(sec)\n");
- fprintf(fplog,", CPUusage(%%), Validity, nbytes(byte), realt(sec)");
- fprintf(fplog,", rate(MB/sec), I/O call, hours*3600+min*60+sec\n\n");
- /* day-month-year, hour:minute\n\n"); */
- }
- } /* file already exist */
- else
- {fclose (fplog);
- if ((fplog = fopen(logfile,"a+")) == NULL)
- {fprintf(stderr,"Failure : access of the file >%s< \n",logfile );
- exit(1);
- }
- }
-}
-/*--------------------------------------------------------------------------*/
-void
-close_log()
-{
-#if defined(UNDER_CE)
- SYSTEMTIME SystemTime;
-
- GetLocalTime(&SystemTime);
- fprintf(fplog," %d\n", SystemTime.wHour * 3600 + SystemTime.wMinute * 60 + SystemTime.wSecond);
-#else
- static long sysTicks;
- time(&sysTicks);
- tms = localtime(&sysTicks);
- fprintf(fplog," %d\n",((tms->tm_hour)*3600 + (tms->tm_min)*60 + tms->tm_sec));
-#endif
- fclose(fplog);
- fflush(fplog);
-}
-/*--------------------------------------------------------------------------*/
-/* routine emulating UNIX function under NT */
-#if defined(__NTVIS__)
-
-/*---------------------------------------------------------------------------*/
-static void
-error(char *pch)
-{
- if (!opterr) {
- return; // without printing
- }
- fprintf(stderr, "%s: %s: %c\n",
- (NULL != progname) ? progname : "getopt", pch, optopt);
-}
-/*---------------------------------------------------------------------------*/
-int
-getopt(int argc, char **argv, char *ostr)
-{
- static char *place = EMSG; /* option letter processing */
- register char *oli; /* option letter list index */
-
- if (!*place) {
- // update scanning pointer
- if (optind >= argc || *(place = argv[optind]) != '-' || !*++place) {
- place = EMSG;
- return -1;
- }
- // place now points to the first char past the initial '-'
- if (place[0] == '-') {
- // found "--"
- // Was the word just a '--'?
- if (place[1] == '\0')
- ++optind; // yes, so consume the word
- // otherwise, the '--' was the start of a longer word,
- // so do not consume it.
- place = EMSG;
- return -1;
- }
- }
-
- /* option letter okay? */
- if ((optopt = (int)*place++) == (int)':'
- || !(oli = strchr(ostr, optopt))) {
- if (!*place) {
- ++optind;
- }
- error("illegal option");
- return BADCH;
- }
- if (*++oli != ':') {
- /* don't need argument */
- optarg = NULL;
- if (!*place)
- ++optind;
- } else {
- /* need an argument */
- if (*place) {
- optarg = place; /* no white space */
- } else if (argc <= ++optind) {
- /* no arg */
- place = EMSG;
- error("option requires an argument");
- return BADCH;
- } else {
- optarg = argv[optind]; /* white space */
- }
- place = EMSG;
- ++optind;
- }
- return optopt; // return option letter
-}
-
-void
-usleep(unsigned int microseconds)
-{
- Sleep(microseconds/1000);
-}
-#endif /* __NTVIS__ */
-/*--------------------------------------------------------------------------*/
-/*--------------------------------------------------------------------------*/
-void
-do_help()
-{
-char More_help[] =
-" Details about the reply: \n"
-" Example: \n"
-" ttcp-t: buflen=8192, nbuf=100, align=16384/0, port=5010\n"
-" ttcp-t: File-Descriptor 0x4 Opened\n"
-" # tcp sender -> <host> #\n"
-" ttcp-t: 819200 bytes in 1.152557 real seconds = 694.109 KB/sec +++\n"
-" ttcp-t: 100 I/O calls, 11.526 msec(real)/call, 0.213 msec(cpu)/call\n"
-" ttcp-t: 0.001914user 0.019388sys 0:01real 1% 9i+58d 190maxrss 1+2pf 177+180csw\n"
-" ttcp-t: buffer address 0x28000\n"
-" ttcp-t: File-Descriptor fd 0x4 Closed\n"
-" ttcp done.\n\n"
-"cpu seconds == (sec) elapse ru_utime + elapse ru_stime.\n"
-" ru_utime == The total amount of time running in user mode.\n"
-" ru_stime == The total amount of time spent in the system.\n"
-" executing on behalf of the process.\n"
-"real seconds == elapse time calculated by the system timer (date).\n"
-"I/O calls == I/O call to the driver.\n"
-"msec/call == average elapse time (Real seconds) between each I/O.\n"
-"calls/sec == invert of msec/call.\n"
-"user == (sec.msec) elaspe ru_utime.\n"
-"sys == (sec.msec) elapse ru_stime.\n"
-"real == (min:sec) CPU seconds.\n"
-"%% == Real seconds / CPU seconds.\n"
-"(ru_ixrss)i+(ru_idrss)d\n"
-" ru_ixrss == An integral value indicating the amount of memory \n"
-" used by the text segment that was also shared among\n"
-" other processes. This value is expressed in units of\n"
-" kilobytes * seconds-of-execution and is calculated \n"
-" by adding the number of shared memory pages in use \n"
-" each time the internal system clock ticks, and then\n"
-" averaging over one-second intervals.\n"
-" ru_idrss == An integral value of the amount of unshared memory \n"
-" in the data segment of a process (expressed in \n"
-" units of kilobytes * seconds-of-execution).\n";
-
-char More_help1[] =
-" (ru_maxrss/2)maxrss.\n"
-" ru_maxrss == The maximum size, in kilobytes, of the used\n"
-" resident set size. \n"
-" (ru_majflt)+(ru_minflt)pf : Page fault\n"
-" ru_majflt == The number of page faults serviced that required\n"
-" I/O activity.\n"
-" ru_minflt == The number of page faults serviced without any\n"
-" I/O activity. In this case, I/O activity is \n"
-" avoided by reclaiming a page frame from the list \n"
-" of pages awaiting reallocation. \n"
-"(ru_nvcsw)+(ru_nivcsw)csw : context switch\n"
-" ru_nvcsw == The number of times a context switch resulted \n"
-" because a process voluntarily gave up the \n"
-" processor before its time slice was completed. \n"
-" This usually occurs while the process waits \n"
-" for availability of a resource.\n"
-" ru_nivcsw == The number of times a context switch resulted \n"
-" because a higher priority process ran or because\n"
-" the current process exceeded its time slice.\n\n";
-
-char More_help2[] =
-"log file format :\n"
-" buflen, nbuf(byte), bufalign(byte), bufoffset(byte)\n"
-" port, sockbufsize(byte), UserTime(sec), SysTime(sec), CPUusage(%)\n"
-" nbytes(byte), realt(sec), rate(MB/sec), I/O call,\n"
-" hours*3600+min*60+sec\n\n";
-
- fprintf(stderr,More_help);
- fprintf(stderr,More_help1);
- fprintf(stderr,More_help2);
-}
-/*---------------------------------------------------------------------------*/
-void
-do_Usage()
-{
-char Usage[] =
-" Usage: ttcp -t [-options] host [ < in ] ttcp -r [-options > out]\n"
-"Example: ttcp -t -s -v -n100 host ttcp -r -s -v -n100\n"
-"Common options:\n"
-" -V prints version number and date of last modification\n"
-" -L create and append all results to a file named ttcp_log\n"
-" -h more help\n"
-" -l ## length of bufs read from or written to network (default 8192,\n"
-" max 65535)\n"
-" -u use UDP instead of TCP\n"
-" -p ## port number to send to or listen at (default 5010)\n"
-#if defined(__linux__)
-" -P ## link-layer priority (default 0)\n"
-#endif
-" -s (ttcp -t) : source a pattern to network\n"
-" (ttcp -r) : sink (discard) all data from network\n"
-" -A ## align the start of buffers to this modulus (default 16384)\n"
-" -O ## start buffers at this offset from the modulus (default 0)\n"
-" -v verbose: print more statistics\n"
-" -d set SO_DEBUG socket option\n"
-" -b ## set socket buffer size (if supported)\n"
-" -f X format for rate: b,B = bits, bytes k,K = kilo{bits,bytes};\n"
-" m,M = mega{bits,bytes}; g,G = giga{bits,bytes}\n"
-" -w ## set timeout value (in milliseconds) to exit if no receive data or tcp connect\n"
-"Options specific to (ttcp -t) :\n"
-" -n ## number of source bufs written to network (default 2048)\n"
-" -x use random data in tcp/udp frames (-I provides seed)\n"
-" -D don't buffer TCP writes (sets TCP_NODELAY socket option)\n"
-" -H print hash marks to indicate progress, one per buffer\n"
-" -I init/seed value for RNG when sending random size bufs (default 1)\n"
-" -N ## number of source bufs per burst, i.e between sleeps (default 1)\n"
-" -R ## send random size buffers with minimum size specified, max size\n"
-" is value of -l option\n"
-" -S ## millisecs between bursts (only used for udp, 10ms resolution)\n"
-"Options specific to (ttcp -r) :\n"
-" -B for -s, only output full blocks as specified by -l (for TAR)\n"
-" -T \"touch\": access each byte as it's read\n"
-" -i report information on out of order sequence numbers\n"
-#if defined(DEBUG)
-"Options for debug:\n"
-" --nostart do not send UDP start packets\n"
-" --noend do not send UDP end packets\n"
-" --nodata do not send UDP data packets\n"
-" --debug print extra debug outputs\n"
-#endif /* DEBUG */
-;
-
- fprintf(stderr,Usage);
-}
-
-/* Define automatic Emacs variables for consistent code formatting */
-/* Local Variables: */
-/* c-basic-offset:2 */
-/* indent-tabs-mode:nil */
-/* End: */
diff --git a/openwrt/package/uclibc++/Config.in b/openwrt/package/uclibc++/Config.in
deleted file mode 100644
index 48c5b6b477..0000000000
--- a/openwrt/package/uclibc++/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_UCLIBCXX
- prompt "uClibc++.......................... C++ library for embedded systems"
- tristate
- default m if CONFIG_DEVEL
- help
- A standard C++ library for embedded systems
-
diff --git a/openwrt/package/uclibc++/Makefile b/openwrt/package/uclibc++/Makefile
deleted file mode 100644
index bb08547321..0000000000
--- a/openwrt/package/uclibc++/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=uClibc++
-PKG_VERSION:=0.1.11
-PKG_RELEASE:=1
-PKG_MD5SUM:=8a8e0ee8fefef150c08a649fd7da04aa
-
-PKG_SOURCE_URL:=http://cxx.uclibc.org/src/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tbz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,UCLIBCXX,uclibc++,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-UCLIBC_TARGET_ARCH:=$(shell echo $(ARCH) | sed -e s'/-.*//' \
- -e 's/i.86/i386/' \
- -e 's/sparc.*/sparc/' \
- -e 's/arm.*/arm/g' \
- -e 's/m68k.*/m68k/' \
- -e 's/ppc/powerpc/g' \
- -e 's/v850.*/v850/g' \
- -e 's/sh64/sh/' \
- -e 's/sh[234].*/sh/' \
- -e 's/mips.*/mips/' \
- -e 's/mipsel.*/mips/' \
- -e 's/cris.*/cris/' \
-)
-
-$(PKG_BUILD_DIR)/.configured:
- $(CP) ./files/config.$(UCLIBC_TARGET_ARCH) $(PKG_BUILD_DIR)/.config
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- TOPDIR="$(PKG_BUILD_DIR)/" \
- $(TARGET_CONFIGURE_OPTS) \
- ARCH_CFLAGS="$(TARGET_CFLAGS)" \
- CROSS="$(TARGET_CROSS)" \
- all
- touch $@
-
-$(IPKG_UCLIBCXX):
- install -d -m0755 $(IDIR_UCLIBCXX)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/src/libuClibc++*.so* $(IDIR_UCLIBCXX)/usr/lib/
- $(STRIP) $(IDIR_UCLIBCXX)/usr/lib/*.so*
- mkdir -p $(PACKAGE_DIR)
- $(IPKG_BUILD) $(IDIR_UCLIBCXX) $(PACKAGE_DIR)
-
-compile-targets: install-dev
-install-dev: $(PKG_BUILD_DIR)/.built
- $(MAKE) -C $(PKG_BUILD_DIR) \
- TOPDIR="$(PKG_BUILD_DIR)/" \
- $(TARGET_CONFIGURE_OPTS) \
- ARCH_CFLAGS="$(TARGET_CFLAGS)" \
- CROSS="$(TARGET_CROSS)" \
- DESTDIR="$(STAGING_DIR)" \
- install
diff --git a/openwrt/package/uclibc++/files/config.i386 b/openwrt/package/uclibc++/files/config.i386
deleted file mode 100644
index 4db0e36efd..0000000000
--- a/openwrt/package/uclibc++/files/config.i386
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-# TARGET_arm is not set
-TARGET_i386=y
-# TARGET_mips is not set
-# TARGET_powerpc is not set
-
-#
-# Target Architecture Features and Options
-#
-HAVE_ELF=y
-TARGET_ARCH="i386"
-# CONFIG_GENERIC_386 is not set
-# CONFIG_386 is not set
-CONFIG_486=y
-# CONFIG_586 is not set
-# CONFIG_586MMX is not set
-# CONFIG_686 is not set
-# CONFIG_PENTIUMIII is not set
-# CONFIG_PENTIUM4 is not set
-# CONFIG_K6 is not set
-# CONFIG_K7 is not set
-# CONFIG_CRUSOE is not set
-# CONFIG_WINCHIPC6 is not set
-# CONFIG_WINCHIP2 is not set
-# CONFIG_CYRIXIII is not set
-ARCH_LITTLE_ENDIAN=y
-# ARCH_BIG_ENDIAN is not set
-UCLIBCXX_HAS_FLOATS=y
-WARNINGS="-Wall"
-HAVE_DOT_CONFIG=y
-
-#
-# String and I/O Stream Support
-#
-UCLIBCXX_HAS_WCHAR=y
-UCLIBCXX_IOSTREAM_BUFSIZE=32
-UCLIBCXX_HAS_LFS=y
-UCLIBCXX_SUPPORT_CDIR=y
-UCLIBCXX_SUPPORT_CIN=y
-UCLIBCXX_SUPPORT_COUT=y
-UCLIBCXX_SUPPORT_CERR=y
-# UCLIBCXX_SUPPORT_CLOG is not set
-# UCLIBCXX_SUPPORT_WCIN is not set
-# UCLIBCXX_SUPPORT_WCOUT is not set
-# UCLIBCXX_SUPPORT_WCERR is not set
-# UCLIBCXX_SUPPORT_WCLOG is not set
-
-#
-# STL and Code Expansion
-#
-UCLIBCXX_STL_BUFFER_SIZE=32
-UCLIBCXX_CODE_EXPANSION=y
-# UCLIBCXX_EXPAND_CONSTRUCTORS_DESTRUCTORS is not set
-UCLIBCXX_EXPAND_STRING_CHAR=y
-UCLIBCXX_EXPAND_VECTOR_BASIC=y
-# UCLIBCXX_EXPAND_IOS_CHAR is not set
-# UCLIBCXX_EXPAND_STREAMBUF_CHAR is not set
-UCLIBCXX_EXPAND_ISTREAM_CHAR=y
-UCLIBCXX_EXPAND_OSTREAM_CHAR=y
-UCLIBCXX_EXPAND_FSTREAM_CHAR=y
-# UCLIBCXX_EXPAND_SSTREAM_CHAR is not set
-
-#
-# Library Installation Options
-#
-UCLIBCXX_RUNTIME_PREFIX=""
-UCLIBCXX_RUNTIME_INCLUDE_SUBDIR="/include"
-UCLIBCXX_RUNTIME_LIB_SUBDIR="/lib"
-UCLIBCXX_RUNTIME_BIN_SUBDIR="/bin"
-UCLIBCXX_EXCEPTION_SUPPORT=y
-IMPORT_LIBSUP=y
-# IMPORT_LIBGCC_EH is not set
-# BUILD_STATIC_LIB is not set
-# DODEBUG is not set
diff --git a/openwrt/package/uclibc++/files/config.mips b/openwrt/package/uclibc++/files/config.mips
deleted file mode 100644
index cc9eb49fc4..0000000000
--- a/openwrt/package/uclibc++/files/config.mips
+++ /dev/null
@@ -1,69 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-# TARGET_arm is not set
-# TARGET_i386 is not set
-TARGET_mips=y
-# TARGET_powerpc is not set
-
-#
-# Target Architecture Features and Options
-#
-HAVE_ELF=y
-TARGET_ARCH="mips"
-ARCH_CFLAGS="-mno-split-addresses"
-# CONFIG_MIPS_ISA_1 is not set
-# CONFIG_MIPS_ISA_2 is not set
-# CONFIG_MIPS_ISA_3 is not set
-# CONFIG_MIPS_ISA_4 is not set
-CONFIG_MIPS_ISA_MIPS32=y
-# CONFIG_MIPS_ISA_MIPS64 is not set
-ARCH_LITTLE_ENDIAN=y
-# ARCH_BIG_ENDIAN is not set
-UCLIBCXX_HAS_FLOATS=y
-WARNINGS="-Wall"
-HAVE_DOT_CONFIG=y
-
-#
-# String and I/O Stream Support
-#
-UCLIBCXX_HAS_WCHAR=y
-UCLIBCXX_IOSTREAM_BUFSIZE=32
-UCLIBCXX_HAS_LFS=y
-UCLIBCXX_SUPPORT_CDIR=y
-UCLIBCXX_SUPPORT_CIN=y
-UCLIBCXX_SUPPORT_COUT=y
-UCLIBCXX_SUPPORT_CERR=y
-# UCLIBCXX_SUPPORT_CLOG is not set
-# UCLIBCXX_SUPPORT_WCIN is not set
-# UCLIBCXX_SUPPORT_WCOUT is not set
-# UCLIBCXX_SUPPORT_WCERR is not set
-# UCLIBCXX_SUPPORT_WCLOG is not set
-
-#
-# STL and Code Expansion
-#
-UCLIBCXX_STL_BUFFER_SIZE=32
-UCLIBCXX_CODE_EXPANSION=y
-# UCLIBCXX_EXPAND_CONSTRUCTORS_DESTRUCTORS is not set
-UCLIBCXX_EXPAND_STRING_CHAR=y
-UCLIBCXX_EXPAND_VECTOR_BASIC=y
-# UCLIBCXX_EXPAND_IOS_CHAR is not set
-# UCLIBCXX_EXPAND_STREAMBUF_CHAR is not set
-UCLIBCXX_EXPAND_ISTREAM_CHAR=y
-UCLIBCXX_EXPAND_OSTREAM_CHAR=y
-UCLIBCXX_EXPAND_FSTREAM_CHAR=y
-# UCLIBCXX_EXPAND_SSTREAM_CHAR is not set
-
-#
-# Library Installation Options
-#
-UCLIBCXX_RUNTIME_PREFIX=""
-UCLIBCXX_RUNTIME_INCLUDE_SUBDIR="/include"
-UCLIBCXX_RUNTIME_LIB_SUBDIR="/lib"
-UCLIBCXX_RUNTIME_BIN_SUBDIR="/bin"
-UCLIBCXX_EXCEPTION_SUPPORT=y
-IMPORT_LIBSUP=y
-# IMPORT_LIBGCC_EH is not set
-# BUILD_STATIC_LIB is not set
-# DODEBUG is not set
diff --git a/openwrt/package/uclibc++/ipkg/uclibc++.control b/openwrt/package/uclibc++/ipkg/uclibc++.control
deleted file mode 100644
index 5919e20c26..0000000000
--- a/openwrt/package/uclibc++/ipkg/uclibc++.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: uclibc++
-Priority: optional
-Section: libs
-Description: A standard c++ library for embedded systems
diff --git a/openwrt/package/uclibc++/patches/cross-compile.patch b/openwrt/package/uclibc++/patches/cross-compile.patch
deleted file mode 100644
index bd14950278..0000000000
--- a/openwrt/package/uclibc++/patches/cross-compile.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -urN uClibc++.old/extra/Configs/Config.in uClibc++.dev/extra/Configs/Config.in
---- uClibc++.old/extra/Configs/Config.in 2005-01-14 22:47:46.000000000 +0100
-+++ uClibc++.dev/extra/Configs/Config.in 2005-04-25 21:12:01.000000000 +0200
-@@ -38,8 +38,8 @@
- #config TARGET_microblaze
- # bool "microblaze"
-
--#config TARGET_mips
--# bool "mips"
-+config TARGET_mips
-+ bool "mips"
-
- config TARGET_powerpc
- bool "powerpc"
diff --git a/openwrt/package/udev/Config.in b/openwrt/package/udev/Config.in
deleted file mode 100644
index e9601d10c6..0000000000
--- a/openwrt/package/udev/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_UDEV
- prompt "udev.............................. Dynamic device management subsystem"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_UTIL_LINUX
- help
- udev provides a dynamic device directory containing only the files for
- actually present devices. It creates or removes device node files in
- the /dev directory, or it renames network interfaces.
-
- http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
diff --git a/openwrt/package/udev/Makefile b/openwrt/package/udev/Makefile
deleted file mode 100644
index 39d79b4c01..0000000000
--- a/openwrt/package/udev/Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=udev
-PKG_VERSION:=077
-PKG_RELEASE:=1
-PKG_MD5SUM:=61ec646daf7795e9777e8f33975408fe
-
-PKG_SOURCE_URL:=ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/ \
- http://ftp.kernel.org/pub/linux/utils/kernel/hotplug/ \
- ftp://ftp.de.kernel.org/pub/linux/utils/kernel/hotplug/ \
- http://ftp.de.kernel.org/pub/linux/utils/kernel/hotplug/ \
- ftp://ftp.fr.kernel.org/pub/linux/utils/kernel/hotplug/ \
- http://ftp.fr.kernel.org/pub/linux/utils/kernel/hotplug/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,UDEV,udev,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CROSS="$(TARGET_CROSS)" \
- STRIP="/bin/true" \
- OPTFLAGS="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- INSTALL="install -c" \
- all install
- touch $@
-
-$(IPKG_UDEV):
- install -d -m0775 $(IDIR_UDEV)/etc/udev
- $(CP) $(PKG_INSTALL_DIR)/etc/udev/* $(IDIR_UDEV)/etc/udev/
- install -d -m0775 $(IDIR_UDEV)/lib/udev
- install -d -m0775 $(IDIR_UDEV)/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/udev $(IDIR_UDEV)/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/udevcontrol $(IDIR_UDEV)/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/udevd $(IDIR_UDEV)/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/udevsend $(IDIR_UDEV)/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/udevstart $(IDIR_UDEV)/sbin/
- install -d -m0775 $(IDIR_UDEV)/usr/bin/
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/udevinfo $(IDIR_UDEV)/usr/bin/
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/udevtest $(IDIR_UDEV)/usr/bin/
- install -d -m0775 $(IDIR_UDEV)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/udevmonitor $(IDIR_UDEV)/usr/sbin/
- $(RSTRIP) $(IDIR_UDEV)
- $(IPKG_BUILD) $(IDIR_UDEV) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/udev/ipkg/udev.conffiles b/openwrt/package/udev/ipkg/udev.conffiles
deleted file mode 100644
index 50a5fb8891..0000000000
--- a/openwrt/package/udev/ipkg/udev.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/udev/udev.conf
diff --git a/openwrt/package/udev/ipkg/udev.control b/openwrt/package/udev/ipkg/udev.control
deleted file mode 100644
index 7ca98a0aab..0000000000
--- a/openwrt/package/udev/ipkg/udev.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: udev
-Priority: optional
-Section: base
-Description: Dynamic device management subsystem
diff --git a/openwrt/package/udev/patches/01-no_debug.patch b/openwrt/package/udev/patches/01-no_debug.patch
deleted file mode 100644
index dcbc1051a9..0000000000
--- a/openwrt/package/udev/patches/01-no_debug.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -ruN udev-077-old/Makefile udev-077-new/Makefile
---- udev-077-old/Makefile 2005-12-04 03:01:48.000000000 +0100
-+++ udev-077-new/Makefile 2005-12-07 16:48:11.000000000 +0100
-@@ -136,7 +136,7 @@
- # check if compiler option is supported
- cc-supports = ${shell if $(CC) ${1} -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi;}
-
--CFLAGS = -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
-+CFLAGS = -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
- WARNINGS = -Wstrict-prototypes -Wsign-compare -Wshadow \
- -Wchar-subscripts -Wmissing-declarations -Wnested-externs \
- -Wpointer-arith -Wcast-align -Wsign-compare -Wmissing-prototypes
-@@ -159,7 +159,7 @@
-
- # if DEBUG is enabled, then we do not strip
- ifeq ($(strip $(DEBUG)),true)
-- CFLAGS += -DDEBUG
-+ CFLAGS += -g -DDEBUG
- STRIPCMD =
- endif
-
diff --git a/openwrt/package/udp-broadcast-relay/Config.in b/openwrt/package/udp-broadcast-relay/Config.in
deleted file mode 100644
index da3c2241fe..0000000000
--- a/openwrt/package/udp-broadcast-relay/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_UDP_BROADCAST_RELAY
- prompt "udp-broadcast-relay............... listens for packets on a specified UDP broadcast port."
- tristate
- default m if CONFIG_DEVEL
- help
- This program listens for packets on a specified UDP broadcast port. When a packet is received, it sends that packet to all specified interfaces but the one it came from as though it originated from the original sender.
-
- The primary purpose of this is to allow games on machines on separated local networks (Ethernet, WLAN) that use udp broadcasts to find each other to do so.
-
- It also works on ppp links, so you can log in from windows boxes (e.g. using pptp) and play LAN-based games together. Currently, you have to care about upcoming or downgoing interfaces yourself.
-
- http://www.joachim-breitner.de/udp-broadcast-relay/
diff --git a/openwrt/package/udp-broadcast-relay/Makefile b/openwrt/package/udp-broadcast-relay/Makefile
deleted file mode 100644
index e96d1d2ac4..0000000000
--- a/openwrt/package/udp-broadcast-relay/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=udp-broadcast-relay
-PKG_VERSION:=0.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=a32f983b7063d6ac670e6b22be9b9d24
-
-PKG_SOURCE_URL:=http://www.joachim-breitner.de/udp-broadcast-relay/files/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,UDP_BROADCAST_RELAY,udp-broadcast-relay,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(TARGET_CC) $(PKG_BUILD_DIR)/main.c -o $(PKG_BUILD_DIR)/$(PKG_NAME)
- touch $@
-
-$(IPKG_UDP_BROADCAST_RELAY):
- mkdir -p $(IDIR_UDP_BROADCAST_RELAY)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME) $(IDIR_UDP_BROADCAST_RELAY)/usr/sbin/
- $(STRIP) $(IDIR_UDP_BROADCAST_RELAY)/usr/sbin/*
- $(IPKG_BUILD) $(IDIR_UDP_BROADCAST_RELAY) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/udp-broadcast-relay/ipkg/udp-broadcast-relay.control b/openwrt/package/udp-broadcast-relay/ipkg/udp-broadcast-relay.control
deleted file mode 100644
index f83247ac70..0000000000
--- a/openwrt/package/udp-broadcast-relay/ipkg/udp-broadcast-relay.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: udp-broadcast-relay
-Priority: optional
-Section: net
-Description: This program listens for packets on a specified UDP broadcast port. When a packet is received, it sends that packet to all specified interfaces but the one it came from as though it originated from the original sender.
diff --git a/openwrt/package/ulogd/Config.in b/openwrt/package/ulogd/Config.in
deleted file mode 100644
index 875a148bd2..0000000000
--- a/openwrt/package/ulogd/Config.in
+++ /dev/null
@@ -1,47 +0,0 @@
-menu "ulogd............................. Netfilter userspace logging daemon"
-
-config BR2_PACKAGE_ULOGD
- prompt "ulogd............................. Netfilter userspace logging daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_IPTABLES
- help
- The netfilter userspace logging daemon
-
- http://gnumonks.org/projects/ulogd
-
-config BR2_PACKAGE_ULOGD_MOD_MYSQL
- prompt "ulogd-mod-mysql................. Output plugin for logging into a MySQL database"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_ULOGD
- select BR2_PACKAGE_LIBMYSQLCLIENT
-
-config BR2_PACKAGE_ULOGD_MOD_PCAP
- prompt "ulogd-mod-pcap................... Output plugin for logging into pcap format"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_ULOGD
- select BR2_PACKAGE_LIBPCAP
-
-config BR2_PACKAGE_ULOGD_MOD_PGSQL
- prompt "ulogd-mod-pgsql................. Output plugin for logging into a PostgreSQL database"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_ULOGD
- select BR2_PACKAGE_LIBPQ
-
-config BR2_PACKAGE_ULOGD_MOD_SQLITE
- prompt "ulogd-mod-sqlite................ Output plugin for logging into an SQLite database"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_ULOGD
- select BR2_PACKAGE_LIBSQLITE
-
-config BR2_PACKAGE_ULOGD_MOD_EXTRA
- prompt "ulogd-mod-extra................. All other plugins"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_ULOGD
-
-endmenu
diff --git a/openwrt/package/ulogd/Makefile b/openwrt/package/ulogd/Makefile
deleted file mode 100644
index 85b7b08cef..0000000000
--- a/openwrt/package/ulogd/Makefile
+++ /dev/null
@@ -1,123 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ulogd
-PKG_VERSION:=1.24
-PKG_RELEASE:=1
-PKG_MD5SUM:=05b4ed2926b9a22aaeaf642917bbf8ff
-
-PKG_SOURCE_URL:=ftp://ftp.netfilter.org/pub/ulogd/ \
- ftp://ftp.be.netfilter.org/pub/netfilter/ulogd/ \
- ftp://ftp.de.netfilter.org/pub/netfilter/ulogd/ \
- ftp://ftp.no.netfilter.org/pub/netfilter/ulogd/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-ifneq ($(BR2_PACKAGE_ULOGD_MOD_MYSQL),)
-ULOGD_MYSQL_OPTION:=--with-mysql=$(STAGING_DIR)/usr
-endif
-
-ifneq ($(BR2_PACKAGE_ULOGD_MOD_PCAP),)
-ULOGD_PCAP_HEADER:=yes
-else
-ULOGD_PCAP_HEADER:=no
-endif
-
-ifneq ($(BR2_PACKAGE_ULOGD_MOD_PGSQL),)
-ULOGD_PGSQL_OPTION:=--with-pgsql=$(STAGING_DIR)/usr
-endif
-
-ifneq ($(BR2_PACKAGE_ULOGD_MOD_SQLITE),)
-ULOGD_SQLITE_OPTION:=--with-sqlite3=$(STAGING_DIR)/usr
-endif
-
-define IPKG_plugin_template
-
-$$(IPKG_$(1)):
- install -m0755 -d $$(IDIR_$(1))/usr/lib/ulogd
- for m in $(2); do \
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ulogd/ulogd_$$$${m}.so $$(IDIR_$(1))/usr/lib/ulogd/ ; \
- done
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,ULOGD,ulogd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,ULOGD_MOD_MYSQL,ulogd-mod-mysql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,ULOGD_MOD_PCAP,ulogd-mod-pcap,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,ULOGD_MOD_PGSQL,ulogd-mod-pgsql,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,ULOGD_MOD_SQLITE,ulogd-mod-sqlite,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,ULOGD_MOD_EXTRA,ulogd-mod-extra,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call IPKG_plugin_template,ULOGD_MOD_MYSQL,MYSQL))
-$(eval $(call IPKG_plugin_template,ULOGD_MOD_PCAP,PCAP))
-$(eval $(call IPKG_plugin_template,ULOGD_MOD_PGSQL,PGSQL))
-$(eval $(call IPKG_plugin_template,ULOGD_MOD_SQLITE,SQLITE3))
-$(eval $(call IPKG_plugin_template,ULOGD_MOD_EXTRA,LOCAL LOGEMU OPRINT PWSNIFF SYSLOG))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_header_pcap_h=$(ULOGD_PCAP_HEADER) \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- $(ULOGD_MYSQL_OPTION) \
- $(ULOGD_PGSQL_OPTION) \
- $(ULOGD_SQLITE_OPTION) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- STAGING_DIR=$(STAGING_DIR) \
- all install
- touch $@
-
-$(IPKG_ULOGD):
- install -d -m0755 $(IDIR_ULOGD)/etc
- $(CP) $(PKG_INSTALL_DIR)/etc/ulogd.conf $(IDIR_ULOGD)/etc/
- install -d -m0755 $(IDIR_ULOGD)/etc/default
- install -m0644 ./files/ulogd.default $(IDIR_ULOGD)/etc/default/ulogd
- install -d -m0755 $(IDIR_ULOGD)/etc/init.d
- install -m0755 ./files/ulogd.init $(IDIR_ULOGD)/etc/init.d/ulogd
- ln -sf ulogd $(IDIR_ULOGD)/etc/init.d/S49ulogd
- install -d -m0755 $(IDIR_ULOGD)/usr/lib/ulogd
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ulogd/ulogd_BASE.so $(IDIR_ULOGD)/usr/lib/ulogd/
- install -d -m0755 $(IDIR_ULOGD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/ulogd $(IDIR_ULOGD)/usr/sbin/
- $(RSTRIP) $(IDIR_ULOGD)
- $(IPKG_BUILD) $(IDIR_ULOGD) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/ulogd/files/ulogd.default b/openwrt/package/ulogd/files/ulogd.default
deleted file mode 100644
index 86bf444806..0000000000
--- a/openwrt/package/ulogd/files/ulogd.default
+++ /dev/null
@@ -1 +0,0 @@
-OPTIONS="-d" \ No newline at end of file
diff --git a/openwrt/package/ulogd/files/ulogd.init b/openwrt/package/ulogd/files/ulogd.init
deleted file mode 100644
index d3863c5f2a..0000000000
--- a/openwrt/package/ulogd/files/ulogd.init
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-BIN=ulogd
-DEFAULT=/etc/default/$BIN
-LOG_D=/var/log
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- $BIN $OPTIONS
- ;;
- *)
- echo "usage: $0 (start)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/ulogd/ipkg/ulogd-mod-extra.control b/openwrt/package/ulogd/ipkg/ulogd-mod-extra.control
deleted file mode 100644
index 95332ba34e..0000000000
--- a/openwrt/package/ulogd/ipkg/ulogd-mod-extra.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ulogd-mod-extra
-Priority: optional
-Section: net
-Description: Netfilter userspace logging daemon (extra plugins)
-Depends: ulogd
diff --git a/openwrt/package/ulogd/ipkg/ulogd-mod-mysql.control b/openwrt/package/ulogd/ipkg/ulogd-mod-mysql.control
deleted file mode 100644
index 3556bb1558..0000000000
--- a/openwrt/package/ulogd/ipkg/ulogd-mod-mysql.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ulogd-mod-mysql
-Priority: optional
-Section: net
-Description: Netfilter userspace logging daemon (MySQL plugin)
-Depends: libmysqlclient, ulogd
diff --git a/openwrt/package/ulogd/ipkg/ulogd-mod-pcap.control b/openwrt/package/ulogd/ipkg/ulogd-mod-pcap.control
deleted file mode 100644
index 521ad94e8f..0000000000
--- a/openwrt/package/ulogd/ipkg/ulogd-mod-pcap.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ulogd-mod-pcap
-Priority: optional
-Section: net
-Description: Netfilter userspace logging daemon (PCAP plugin)
-Depends: libpcap, ulogd
diff --git a/openwrt/package/ulogd/ipkg/ulogd-mod-pgsql.control b/openwrt/package/ulogd/ipkg/ulogd-mod-pgsql.control
deleted file mode 100644
index dbc97765d5..0000000000
--- a/openwrt/package/ulogd/ipkg/ulogd-mod-pgsql.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ulogd-mod-pgsql
-Priority: optional
-Section: net
-Description: Netfilter userspace logging daemon (PostgreSQL plugin)
-Depends: libpq, ulogd
diff --git a/openwrt/package/ulogd/ipkg/ulogd-mod-sqlite.control b/openwrt/package/ulogd/ipkg/ulogd-mod-sqlite.control
deleted file mode 100644
index d76b2d62f6..0000000000
--- a/openwrt/package/ulogd/ipkg/ulogd-mod-sqlite.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: ulogd-mod-sqlite
-Priority: optional
-Section: net
-Description: Netfilter userspace logging daemon (SQLite plugin)
-Depends: libsqlite, ulogd
diff --git a/openwrt/package/ulogd/ipkg/ulogd.conffiles b/openwrt/package/ulogd/ipkg/ulogd.conffiles
deleted file mode 100644
index 4d41604a91..0000000000
--- a/openwrt/package/ulogd/ipkg/ulogd.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/default/ulogd
-/etc/ulogd.conf
diff --git a/openwrt/package/ulogd/ipkg/ulogd.control b/openwrt/package/ulogd/ipkg/ulogd.control
deleted file mode 100644
index 48eda41f30..0000000000
--- a/openwrt/package/ulogd/ipkg/ulogd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: ulogd
-Priority: optional
-Section: net
-Description: Netfilter userspace logging daemon
diff --git a/openwrt/package/ulogd/patches/ulogd-1.23-inc-patch.patch b/openwrt/package/ulogd/patches/ulogd-1.23-inc-patch.patch
deleted file mode 100644
index b4721121f6..0000000000
--- a/openwrt/package/ulogd/patches/ulogd-1.23-inc-patch.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN ulogd-1.23-old/Rules.make.in ulogd-1.23-new/Rules.make.in
---- ulogd-1.23-old/Rules.make.in 2005-02-19 22:32:40.000000000 +0100
-+++ ulogd-1.23-new/Rules.make.in 2005-05-27 07:45:18.000000000 +0200
-@@ -22,7 +22,7 @@
- CFLAGS+=-DULOGD_CONFIGFILE=\"$(ULOGD_CONFIGFILE)\"
- # doesn't work for subdirs
- #CFLAGS+=$(INCIPULOG) $(INCCONFFILE)
--CFLAGS+=-I/lib/modules/`uname -r`/build/include
-+#CFLAGS+=-I/lib/modules/`uname -r`/build/include
- #CFLAGS+=@DEFS@
- #CFLAGS+=-g -DDEBUG -DDEBUG_MYSQL -DDEBUG_PGSQL
-
-diff -ruN ulogd-1.23-old/libipulog/Makefile.in ulogd-1.23-new/libipulog/Makefile.in
---- ulogd-1.23-old/libipulog/Makefile.in 2004-03-23 23:36:06.000000000 +0100
-+++ ulogd-1.23-new/libipulog/Makefile.in 2005-05-27 07:44:21.000000000 +0200
-@@ -1,7 +1,7 @@
- #
-
- include @top_srcdir@/Rules.make
--CFLAGS+=-Iinclude -I/usr/src/linux/include
-+CFLAGS+=-Iinclude
-
- libipulog.a: libipulog.o
- $(LD) -i $< -o $@
diff --git a/openwrt/package/ulogd/patches/ulogd-1.23-pcap_ldflags.patch b/openwrt/package/ulogd/patches/ulogd-1.23-pcap_ldflags.patch
deleted file mode 100644
index d45182329f..0000000000
--- a/openwrt/package/ulogd/patches/ulogd-1.23-pcap_ldflags.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN ulogd-1.23/pcap/Makefile.in ulogd-1.23.new/pcap/Makefile.in
---- ulogd-1.23/pcap/Makefile.in 2004-03-23 23:36:04.000000000 +0100
-+++ ulogd-1.23.new/pcap/Makefile.in 2006-04-19 11:30:45.000000000 +0200
-@@ -14,7 +14,7 @@
- distrib:
-
- $(SHARED_LIBS): %.so: %_sh.o
-- $(LD) -shared -o $@ $< -lc -lpcap
-+ $(LD) -shared -o $@ $< -lc -lpcap -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib
-
- %_sh.o: %.c
- $(CC) $(SH_CFLAGS) -o $@ -c $<
diff --git a/openwrt/package/updatedd/Config.in b/openwrt/package/updatedd/Config.in
deleted file mode 100644
index 77bda5e192..0000000000
--- a/openwrt/package/updatedd/Config.in
+++ /dev/null
@@ -1,73 +0,0 @@
-menu "updatedd.......................... A tool to update dynamic dns services"
-
-config BR2_PACKAGE_UPDATEDD
- prompt "updatedd.......................... A tool to update dynamic DNS services"
- tristate
- default m if CONFIG_DEVEL
- help
- Updatedd is a small tool that will update one of many dynamic
- dns services on boot.
-
- Please look at the /etc/init.d/S50ddns script for more info.
-
- http://www.philipp-benner.de/updatedd/
-
-if BR2_PACKAGE_UPDATEDD
-comment "Plugin Dynamic DNS service"
-endif
-
-config BR2_PACKAGE_UPDATEDD_MOD_CHANGEIP
- prompt "updatedd-mod-changeip........... changeip.com"
- tristate
- depends on BR2_PACKAGE_UPDATEDD
- default m if CONFIG_DEVEL
-
-config BR2_PACKAGE_UPDATEDD_MOD_DYNDNS
- prompt "updatedd-mod-dyndns............. dyndns.org"
- tristate
- depends on BR2_PACKAGE_UPDATEDD
- default m if CONFIG_DEVEL
-
-config BR2_PACKAGE_UPDATEDD_MOD_EURODYNDNS
- prompt "updatedd-mod-eurodyndns......... eurodyndns.org"
- tristate
- depends on BR2_PACKAGE_UPDATEDD
- default m if CONFIG_DEVEL
-
-config BR2_PACKAGE_UPDATEDD_MOD_HN
- prompt "updatedd-mod-hn................. hn.org"
- tristate
- depends on BR2_PACKAGE_UPDATEDD
- default m if CONFIG_DEVEL
-
-config BR2_PACKAGE_UPDATEDD_MOD_NOIP
- prompt "updatedd-mod-noip............... no-ip.com"
- tristate
- depends on BR2_PACKAGE_UPDATEDD
- default m if CONFIG_DEVEL
-
-config BR2_PACKAGE_UPDATEDD_MOD_ODS
- prompt "updatedd-mod-ods................ ods.org"
- tristate
- depends on BR2_PACKAGE_UPDATEDD
- default m if CONFIG_DEVEL
-
-config BR2_PACKAGE_UPDATEDD_MOD_OVH
- prompt "updatedd-mod-ovh................ ovh.com"
- tristate
- depends on BR2_PACKAGE_UPDATEDD
- default m if CONFIG_DEVEL
-
-config BR2_PACKAGE_UPDATEDD_MOD_REGFISH
- prompt "updatedd-mod-regfish............ regfish.com"
- tristate
- depends on BR2_PACKAGE_UPDATEDD
- default m if CONFIG_DEVEL
-
-config BR2_PACKAGE_UPDATEDD_MOD_TZO
- prompt "updatedd-mod-tzo................ tzo.com"
- tristate
- depends on BR2_PACKAGE_UPDATEDD
- default m if CONFIG_DEVEL
-
-endmenu
diff --git a/openwrt/package/updatedd/Makefile b/openwrt/package/updatedd/Makefile
deleted file mode 100644
index 1edc3dd4e8..0000000000
--- a/openwrt/package/updatedd/Makefile
+++ /dev/null
@@ -1,80 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=updatedd
-PKG_VERSION:=2.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=2957496de0c8e08e9c6492fabf1a88be
-
-PKG_SOURCE_URL:=http://savannah.nongnu.org/download/updatedd/
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-define PKG_mod_template
-
-$$(IPKG_$(1)):
- install -d -m0755 $$(IDIR_$(1))/usr/lib/updatedd
- install -m0755 $(PKG_INSTALL_DIR)/usr/lib/updatedd/$(2).so $$(IDIR_$(1))/usr/lib/updatedd/
- $(RSTRIP) $$(IDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-endef
-
-$(eval $(call PKG_template,UPDATEDD,updatedd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,UPDATEDD_MOD_CHANGEIP,updatedd-mod-changeip,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,UPDATEDD_MOD_DYNDNS,updatedd-mod-dyndns,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,UPDATEDD_MOD_EURODYNDNS,updatedd-mod-eurodyndns,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,UPDATEDD_MOD_HN,updatedd-mod-hn,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,UPDATEDD_MOD_NOIP,updatedd-mod-noip,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,UPDATEDD_MOD_ODS,updatedd-mod-ods,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,UPDATEDD_MOD_OVH,updatedd-mod-ovh,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,UPDATEDD_MOD_REGFISH,updatedd-mod-regfish,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,UPDATEDD_MOD_TZO,updatedd-mod-tzo,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(eval $(call PKG_mod_template,UPDATEDD_MOD_CHANGEIP,changeip))
-$(eval $(call PKG_mod_template,UPDATEDD_MOD_DYNDNS,dyndns))
-$(eval $(call PKG_mod_template,UPDATEDD_MOD_EURODYNDNS,eurodyndns))
-$(eval $(call PKG_mod_template,UPDATEDD_MOD_HN,hn))
-$(eval $(call PKG_mod_template,UPDATEDD_MOD_NOIP,noip))
-$(eval $(call PKG_mod_template,UPDATEDD_MOD_ODS,ods))
-$(eval $(call PKG_mod_template,UPDATEDD_MOD_OVH,ovh))
-$(eval $(call PKG_mod_template,UPDATEDD_MOD_REGFISH,regfish))
-$(eval $(call PKG_mod_template,UPDATEDD_MOD_TZO,tzo))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --sysconfdir=/etc \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(TARGET_CONFIGURE_OPTS) \
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_UPDATEDD):
- install -d -m0755 $(IDIR_UPDATEDD)/etc/init.d
- install -m0755 ./files/S55ddns $(IDIR_UPDATEDD)/etc/init.d/
- install -d -m0755 $(IDIR_UPDATEDD)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/updatedd $(IDIR_UPDATEDD)/usr/bin/
- install -d -m0755 $(IDIR_UPDATEDD)/usr/lib/updatedd
- $(RSTRIP) $(IDIR_UPDATEDD)
- $(IPKG_BUILD) $(IDIR_UPDATEDD) $(PACKAGE_DIR)
diff --git a/openwrt/package/updatedd/files/S55ddns b/openwrt/package/updatedd/files/S55ddns
deleted file mode 100644
index b02d579178..0000000000
--- a/openwrt/package/updatedd/files/S55ddns
+++ /dev/null
@@ -1,10 +0,0 @@
-ddnsupdate=$(nvram get ddns_update)
-[ "$ddnsupdate" = 1 ]&& {
- service=$(nvram get ddns_service)
- uname=$(nvram get ddns_user)
- passwd=$(nvram get ddns_password)
- host=$(nvram get ddns_host)
-
- /usr/bin/updatedd -Y $service -- $uname:$passwd $host
-}
-
diff --git a/openwrt/package/updatedd/ipkg/updatedd-mod-changeip.control b/openwrt/package/updatedd/ipkg/updatedd-mod-changeip.control
deleted file mode 100644
index 986752b77d..0000000000
--- a/openwrt/package/updatedd/ipkg/updatedd-mod-changeip.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: updatedd-mod-changeip
-Priority: optional
-Section: net
-Description: Plugin for updatedd, support for changeip.com dynamic DNS service.
diff --git a/openwrt/package/updatedd/ipkg/updatedd-mod-dyndns.control b/openwrt/package/updatedd/ipkg/updatedd-mod-dyndns.control
deleted file mode 100644
index 93c62fd47b..0000000000
--- a/openwrt/package/updatedd/ipkg/updatedd-mod-dyndns.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: updatedd-mod-dyndns
-Priority: optional
-Section: net
-Description: Plugin for updatedd, support for dyndns.org dynamic DNS service.
diff --git a/openwrt/package/updatedd/ipkg/updatedd-mod-eurodyndns.control b/openwrt/package/updatedd/ipkg/updatedd-mod-eurodyndns.control
deleted file mode 100644
index f29e59810c..0000000000
--- a/openwrt/package/updatedd/ipkg/updatedd-mod-eurodyndns.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: updatedd-mod-eurodyndns
-Priority: optional
-Section: net
-Description: Plugin for updatedd, support for eurodyndns.org dynamic DNS service.
diff --git a/openwrt/package/updatedd/ipkg/updatedd-mod-hn.control b/openwrt/package/updatedd/ipkg/updatedd-mod-hn.control
deleted file mode 100644
index d5b57c076a..0000000000
--- a/openwrt/package/updatedd/ipkg/updatedd-mod-hn.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: updatedd-mod-hn
-Priority: optional
-Section: net
-Description: Plugin for updatedd, support for hn.org dynamic DNS service.
diff --git a/openwrt/package/updatedd/ipkg/updatedd-mod-noip.control b/openwrt/package/updatedd/ipkg/updatedd-mod-noip.control
deleted file mode 100644
index 925bd7685b..0000000000
--- a/openwrt/package/updatedd/ipkg/updatedd-mod-noip.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: updatedd-mod-noip
-Priority: optional
-Section: net
-Description: Plugin for updatedd, support for no-ip.org dynamic DNS service.
diff --git a/openwrt/package/updatedd/ipkg/updatedd-mod-ods.control b/openwrt/package/updatedd/ipkg/updatedd-mod-ods.control
deleted file mode 100644
index e47b4a6e36..0000000000
--- a/openwrt/package/updatedd/ipkg/updatedd-mod-ods.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: updatedd-mod-ods
-Priority: optional
-Section: net
-Description: Plugin for updatedd, support for ods.org dynamic DNS service.
diff --git a/openwrt/package/updatedd/ipkg/updatedd-mod-ovh.control b/openwrt/package/updatedd/ipkg/updatedd-mod-ovh.control
deleted file mode 100644
index d1eb9f219a..0000000000
--- a/openwrt/package/updatedd/ipkg/updatedd-mod-ovh.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: updatedd-mod-ovh
-Priority: optional
-Section: net
-Description: Plugin for updatedd, support for ovh.com dynamic DNS service.
diff --git a/openwrt/package/updatedd/ipkg/updatedd-mod-regfish.control b/openwrt/package/updatedd/ipkg/updatedd-mod-regfish.control
deleted file mode 100644
index f17fffe875..0000000000
--- a/openwrt/package/updatedd/ipkg/updatedd-mod-regfish.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: updatedd-mod-regfish
-Priority: optional
-Section: net
-Description: Plugin for updatedd, support for regfish.com dynamic DNS service.
diff --git a/openwrt/package/updatedd/ipkg/updatedd-mod-tzo.control b/openwrt/package/updatedd/ipkg/updatedd-mod-tzo.control
deleted file mode 100644
index 089dfde077..0000000000
--- a/openwrt/package/updatedd/ipkg/updatedd-mod-tzo.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: updatedd-mod-tzo
-Priority: optional
-Section: net
-Description: Plugin for updatedd, support for tzo.com dynamic DNS service.
diff --git a/openwrt/package/updatedd/ipkg/updatedd.control b/openwrt/package/updatedd/ipkg/updatedd.control
deleted file mode 100644
index f3eafcb48b..0000000000
--- a/openwrt/package/updatedd/ipkg/updatedd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: updatedd
-Priority: optional
-Section: net
-Description: A tool to update dynamic dns services.
diff --git a/openwrt/package/usbutils/Config.in b/openwrt/package/usbutils/Config.in
deleted file mode 100644
index c9f525be5b..0000000000
--- a/openwrt/package/usbutils/Config.in
+++ /dev/null
@@ -1,15 +0,0 @@
-config BR2_COMPILE_USBUTILS
- tristate
- depends BR2_PACKAGE_LSUSB
-
-config BR2_PACKAGE_LSUSB
- prompt "lsusb............................. USB devices listing program"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_USBUTILS
- select BR2_PACKAGE_LIBUSB
- help
- A program to list Linux USB devices
-
- http://linux-usb.sourceforge.net/
-
diff --git a/openwrt/package/usbutils/Makefile b/openwrt/package/usbutils/Makefile
deleted file mode 100644
index 5ce35bcfb5..0000000000
--- a/openwrt/package/usbutils/Makefile
+++ /dev/null
@@ -1,67 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=usbutils
-PKG_VERSION:=0.71
-PKG_RELEASE:=1
-PKG_MD5SUM:=479d7c7098ef44cc95e7978fd71c712c
-
-PKG_SOURCE_URL:=@SF/linux-usb
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,LSUSB,lsusb,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ac_cv_func_malloc_0_nonnull=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_LSUSB):
- install -d -m0755 $(IDIR_LSUSB)/usr/share
- $(CP) $(PKG_INSTALL_DIR)/usr/share/usb.ids $(IDIR_LSUSB)/usr/share/
- install -d -m0755 $(IDIR_LSUSB)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/lsusb $(IDIR_LSUSB)/usr/sbin/
- $(RSTRIP) $(IDIR_LSUSB)
- $(IPKG_BUILD) $(IDIR_LSUSB) $(PACKAGE_DIR)
diff --git a/openwrt/package/usbutils/ipkg/lsusb.control b/openwrt/package/usbutils/ipkg/lsusb.control
deleted file mode 100644
index e9c6dbcc45..0000000000
--- a/openwrt/package/usbutils/ipkg/lsusb.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: lsusb
-Priority: optional
-Section: net
-Depends: libusb
-Description: A program to list USB devices
diff --git a/openwrt/package/ustl/Config.in b/openwrt/package/ustl/Config.in
deleted file mode 100644
index b08bc791dc..0000000000
--- a/openwrt/package/ustl/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_USTL
- prompt "ustl.............................. C++ Standard Template Library for embedded systems"
- tristate
- default m if CONFIG_DEVEL
- help
- uSTL is a partial implementation of the STL (Standard Template
- Library) that reduces code size by factoring memory management
- code into a non-template base class and deriving containers
- from it.
-
- http://ustl.sourceforge.net/
-
diff --git a/openwrt/package/ustl/Makefile b/openwrt/package/ustl/Makefile
deleted file mode 100644
index f211f812d6..0000000000
--- a/openwrt/package/ustl/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ustl
-PKG_VERSION:=0.8
-PKG_RELEASE:=1
-PKG_MD5SUM:=dd59483c327f1bd1356273bc5ae4dde0
-
-PKG_SOURCE_URL:=@SF/ustl
-PKG_SOURCE:=$(PKG_NAME)-0.8-0.tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-BR2_PACKAGE_USTL:=m
-
-$(eval $(call PKG_template,USTL,ustl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- $(CP) ./files/config.h $(PKG_BUILD_DIR)/
- $(CP) ./files/Common.mk $(PKG_BUILD_DIR)/
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CROSS="$(TARGET_CROSS)" \
- OPTFLAGS="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_USTL):
- install -d -m0755 $(IDIR_USTL)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libustl.so.* $(IDIR_USTL)/usr/lib/
- $(RSTRIP) $(IDIR_USTL)
- $(IPKG_BUILD) $(IDIR_USTL) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libustl.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/ustl* $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libustl.a $(STAGING_DIR)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libustl.so* $(STAGING_DIR)/usr/lib/
- touch $@
-
-install-dev: $(STAGING_DIR)/usr/lib/libustl.so
-
-uninstall-dev:
- rm -rf \
- $(STAGING_DIR)/usr/include/ustl* \
- $(STAGING_DIR)/usr/lib/libustl.a \
- $(STAGING_DIR)/usr/lib/libustl.so* \
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/ustl/files/Common.mk b/openwrt/package/ustl/files/Common.mk
deleted file mode 100644
index 88e62329d9..0000000000
--- a/openwrt/package/ustl/files/Common.mk
+++ /dev/null
@@ -1,74 +0,0 @@
-LIBNAME = ustl
-MAJOR = 0
-MINOR = 8
-BUILD = 0
-
-CC = $(CROSS)gcc
-CXX = $(CROSS)g++
-LD = $(CROSS)gcc
-AR = $(CROSS)ar
-RANLIB = $(CROSS)ranlib
-DOXYGEN = echo
-INSTALL = install
-RM = rm -f
-LN = ln -sf
-
-prefix = /usr
-exec_prefix = /usr
-BINDIR = /usr/bin
-INCDIR = /usr/include
-LIBDIR = /usr/lib
-
-DESTDIR =
-
-INSTALLDIR = ${INSTALL} -d
-INSTALLLIB = ${INSTALL} -p -m 644
-INSTALLEXE = ${INSTALL} -p -m 755
-INSTALLDATA = ${INSTALL} -p -m 644
-
-CWARNOPTS = -Wall -W -Wpointer-arith -Wno-cast-align \
- -Wcast-qual -Wwrite-strings -Wredundant-decls
-CXXWARNOPTS = ${CWARNOPTS} -Wconversion -Wsign-promo -Wsynth -Woverloaded-virtual
-PROCESSOR_OPTS =
-INLINE_OPTS = -finline-limit=65535
-CUSTOMINCDIR =
-CUSTOMLIBDIR =
-
-BUILD_SHARED = 1
-BUILD_STATIC = 1
-#DEBUG = 1
-#PROFILE = 1
-STANDALONE = -nodefaultlibs
-
-CFLAGS = \
- ${CUSTOMINCDIR} ${OPTFLAGS} ${CWARNOPTS} ${STANDALONE}
-CXXFLAGS = \
- ${CUSTOMINCDIR} ${OPTFLAGS} ${INLINE_OPTS} \
- ${CXXWARNOPTS} ${STANDALONE} -fno-builtin
-LDFLAGS = ${CUSTOMLIBDIR} ${STANDALONE}
-OPTFLAGS = ${PROCESSOR_OPTS}
-ifdef DEBUG
- OPTFLAGS += -O0 -g
-else
- OPTFLAGS += -O3 -DNDEBUG=1
-endif
-ifdef PROFILE
- OPTFLAGS += -pg
-endif
-ifdef STANDALONE
- LIBS += -lsupc++ -lgcc_eh -lgcc -lc
-endif
-ifdef BUILD_SHARED
- CFLAGS += -fPIC
- CXXFLAGS += -fPIC
-endif
-SHBLDFL = -shared
-
-LIBA = lib${LIBNAME}.a
-LIBSO = lib${LIBNAME}.so
-ifdef MAJOR
-LIBSOLNK = ${LIBSO}.${MAJOR}.${MINOR}
-LIBSOBLD = ${LIBSO}.${MAJOR}.${MINOR}.${BUILD}
-endif
-TOCLEAN += ${LIBSO} ${LIBA} ${LIBSOBLD}
-
diff --git a/openwrt/package/ustl/files/config.h b/openwrt/package/ustl/files/config.h
deleted file mode 100644
index 348649678a..0000000000
--- a/openwrt/package/ustl/files/config.h
+++ /dev/null
@@ -1,286 +0,0 @@
-// config.h
-//
-// Autogenerated from config.h.in by bsconf.
-//
-
-#ifndef CONFIG_H_01E33670634DAAC779EE5FF41CCBB36F
-#define CONFIG_H_01E33670634DAAC779EE5FF41CCBB36F
-
-// Define to the one symbol short name of this package.
-#define USTL_NAME "ustl"
-// Define to the full name and version of this package.
-#define USTL_STRING "ustl 0.8"
-// Define to the version of this package.
-#define USTL_VERSION 0x080
-// Define to the address where bug reports for this package should be sent.
-#define USTL_BUGREPORT "Mike Sharov <msharov@users.sourceforge.net>"
-
-/// Define to 1 if you want stream operations to throw exceptions on
-/// insufficient data or insufficient space. All these errors should
-/// be preventable in output code; the input code should verify the
-/// data in a separate step. It slows down stream operations a lot,
-/// but it's your call. By default only debug builds throw.
-///
-#undef WANT_STREAM_BOUNDS_CHECKING
-
-#if !defined(WANT_STREAM_BOUNDS_CHECKING) && !defined(NDEBUG)
- #define WANT_STREAM_BOUNDS_CHECKING 1
-#endif
-
-/// Define to 1 if you want to build without libstdc++
-#define WITHOUT_LIBSTDCPP 1
-
-/// Define to 1 if you don't want the standard streams.
-/// You will not be able to run bvt tests if you do this.
-///
-#undef WITHOUT_CIN_COUT_CERR
-
-/// Define GNU extensions if unavailable.
-#ifndef __GNUC__
- /// GCC (and some other compilers) define '__attribute__'; ustl is using this
- /// macro to alert the compiler to flag inconsistencies in printf/scanf-like
- /// function calls. Just in case '__attribute__' isn't defined, make a dummy.
- ///
- #ifndef __attribute__
- #define __attribute__(p)
- #endif
-#endif
-#if defined(__GNUC__) && (__GNUC__ >= 4)
- #define DLL_EXPORT __attribute__((visibility("default")))
- #define DLL_LOCAL __attribute__((visibility("hidden")))
-#else
- #define DLL_EXPORT
- #define DLL_LOCAL
-#endif
-#if defined(__GNUC__) && (__GNUC__ >= 3) && defined(__i386__)
- /// GCC 3+ supports the prefetch directive, which some CPUs use to improve caching
- #define prefetch(p,rw,loc) __builtin_prefetch(p,rw,loc)
-#else
- #define prefetch(p,rw,loc)
-#endif
-#if !defined(__GNUC__) || (__GNUC__ < 3)
- /// __alignof__ returns the recommended alignment for the type
- #define __alignof__(v) min(sizeof(v), sizeof(void*))
-#endif
-
-/// Define to 1 if you have the `atexit' function.
-#define HAVE_ATEXIT 1
-
-/// Define to 1 if you have the <assert.h> header file.
-#define HAVE_ASSERT_H 1
-
-/// Define to 1 if you have the <ctype.h> header file.
-#define HAVE_CTYPE_H 1
-
-/// Define to 1 if you have the <errno.h> header file.
-#define HAVE_ERRNO_H 1
-
-/// Define to 1 if you have the <fcntl.h> header file.
-#define HAVE_FCNTL_H 1
-
-/// Define to 1 if you have the <float.h> header file.
-#define HAVE_FLOAT_H 1
-
-/// Define to 1 if you have the <inttypes.h> header file.
-#define HAVE_INTTYPES_H 1
-
-/// Define to 1 if you have the <limits.h> header file.
-#define HAVE_LIMITS_H 1
-
-/// Define to 1 if you have the <locale.h> header file.
-#define HAVE_LOCALE_H 1
-
-/// Define to 1 if your system has a working `malloc' function.
-#define HAVE_MALLOC 1
-
-// Define to 1 if you have the <malloc.h> header file.
-#define HAVE_MALLOC_H 1
-
-// Define to 1 if you have the <alloca.h> header file.
-#define HAVE_ALLOCA_H 1
-
-// Define to 1 if you have the `memchr' function.
-#define HAVE_MEMCHR 1
-
-// Define to 1 if you have the `memmove' function.
-#define HAVE_MEMMOVE 1
-
-// Define to 1 if you have the <memory.h> header file.
-#define HAVE_MEMORY_H 1
-
-// Define to 1 if you have the `memset' function.
-#define HAVE_MEMSET 1
-
-// Define to 1 if the system has the type `ptrdiff_t'.
-#define HAVE_PTRDIFF_T 1
-
-// Define to 1 if you have the <signal.h> header file.
-#define HAVE_SIGNAL_H 1
-
-// Define to 1 if you have the __va_copy function
-#define HAVE_VA_COPY 1
-
-// Define to 1 if `stat' has the bug that it succeeds when given the
-// zero-length file name argument.
-/* #undef HAVE_STAT_EMPTY_STRING_BUG */
-
-// Define to 1 if you have the <stdarg.h> header file.
-#define HAVE_STDARG_H 1
-
-// Define to 1 if you have the <stddef.h> header file.
-#define HAVE_STDDEF_H 1
-
-// Define to 1 if you have the <stdint.h> header file.
-#define HAVE_STDINT_H 1
-
-// Define to 1 if you have the <stdio.h> header file.
-#define HAVE_STDIO_H 1
-
-// Define to 1 if you have the <stdlib.h> header file.
-#define HAVE_STDLIB_H 1
-
-// Define to 1 if you have the `strerror' function.
-#define HAVE_STRERROR 1
-
-// Define to 1 if you have the <strings.h> header file.
-#define HAVE_STRINGS_H 1
-
-// Define to 1 if you have the <string.h> header file.
-#define HAVE_STRING_H 1
-
-// Define to 1 if you have the `strrchr' function.
-#define HAVE_STRRCHR 1
-
-// Define to 1 if you have the `strsignal' function.
-#define HAVE_STRSIGNAL 1
-
-// Define to 1 if you have the `strtol' function.
-#define HAVE_STRTOL 1
-
-// Define to 1 if you have the <sys/stat.h> header file.
-#define HAVE_SYS_STAT_H 1
-
-// Define to 1 if you have the <sys/types.h> header file.
-#define HAVE_SYS_TYPES_H 1
-
-// Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible.
-#define HAVE_SYS_WAIT_H 1
-
-// Define to 1 if you have the <time.h> header file.
-#define HAVE_TIME_H 1
-
-// Define to 1 if you have the <unistd.h> header file.
-#define HAVE_UNISTD_H 1
-
-// Define to 1 if you have the <math.h> header file.
-#define HAVE_MATH_H 1
-
-// Define to 1 if you have the rintf function. Will use rint otherwise.
-#undef HAVE_RINTF
-
-// STDC_HEADERS is defined to 1 on sane systems.
-#if defined(HAVE_ASSERT_H) && defined(HAVE_CTYPE_H) &&\
- defined(HAVE_ERRNO_H) && defined(HAVE_FLOAT_H) &&\
- defined(HAVE_LIMITS_H) && defined(HAVE_LOCALE_H) &&\
- defined(HAVE_MATH_H) && defined(HAVE_SIGNAL_H) &&\
- defined(HAVE_STDARG_H) && defined(HAVE_STDDEF_H) &&\
- defined(HAVE_STDIO_H) && defined(HAVE_STDLIB_H) &&\
- defined(HAVE_STRING_H) && defined(HAVE_TIME_H)
-#define STDC_HEADERS 1
-#endif
-
-// STDC_HEADERS is defined to 1 on unix systems.
-#if defined(HAVE_FCNTL_H) && defined(HAVE_SYS_STAT_H) && defined(HAVE_UNISTD_H)
-#define STDUNIX_HEADERS 1
-#endif
-
-// Define to 1 if you have the <byteswap.h> header file.
-#if (__GNUC__ >= 3) // gcc 2.95 somehow doesn't recognize 'asm volatile' in libc byteswap.h
-#define HAVE_BYTESWAP_H 1
-#endif
-
-// Define to 1 if `lstat' dereferences a symlink specified with a trailing slash.
-#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
-
-// Define to 1 if your compiler treats char as a separate type along with
-// signed char and unsigned char. This will create overloads for char.
-#define HAVE_THREE_CHAR_TYPES 1
-
-// Define as the return type of signal handlers (`int' or `void').
-#define RETSIGTYPE void
-
-// Define to 1 if you have 64 bit types available
-#define HAVE_INT64_T 1
-
-// Define to 1 if you have the long long type
-#define HAVE_LONG_LONG 1
-
-// Define to 1 if you want unrolled specializations for fill and copy
-#undef WANT_UNROLLED_COPY
-
-// Define to 1 if you want to use MMX/SSE/3dNow! processor instructions
-#undef WANT_MMX
-
-// Define to byte sizes of types
-#define SIZE_OF_CHAR 1
-#define SIZE_OF_SHORT 2
-#define SIZE_OF_INT 4
-#define SIZE_OF_LONG 4
-#define SIZE_OF_LONG_LONG 8
-#define SIZE_OF_POINTER 4
-#define SIZE_OF_SIZE_T 4
-#define SIZE_OF_BOOL SIZE_OF_CHAR
-#undef SIZE_T_IS_LONG
-
-// Byte order macros, converted in utypes.h
-#define USTL_LITTLE_ENDIAN 4321
-#define USTL_BIG_ENDIAN 1234
-#define USTL_BYTE_ORDER USTL_LITTLE_ENDIAN
-
-// Extended CPU capabilities
-#define CPU_HAS_FPU 1
-#define CPU_HAS_EXT_DEBUG 1
-#define CPU_HAS_TIMESTAMPC 1
-#define CPU_HAS_MSR 1
-#define CPU_HAS_CMPXCHG8 1
-#define CPU_HAS_APIC 1
-#define CPU_HAS_SYSCALL 1
-#define CPU_HAS_MTRR 1
-#define CPU_HAS_CMOV 1
-#define CPU_HAS_FCMOV 1
-#if WANT_MMX
-#undef CPU_HAS_MMX 1
-#undef CPU_HAS_FXSAVE
-#undef CPU_HAS_SSE 1
-#undef CPU_HAS_SSE2 1
-#undef CPU_HAS_SSE3
-#undef CPU_HAS_EXT_3DNOW
-#undef CPU_HAS_3DNOW
-#endif
-
-// GCC vector extensions
-#if defined(CPU_HAS_MMX) || defined(CPU_HAS_SSE)
- #undef HAVE_VECTOR_EXTENSIONS
-#endif
-
-#if CPU_HAS_SSE && defined(__GNUC__)
- #define __sse_align __attribute__((aligned(16)))
-#else
- #define __sse_align
-#endif
-
-// Define to empty if `const' does not conform to ANSI C.
-/* #define const */
-
-// Define as `__inline' if that's what the C compiler calls it, or to nothing
-// if it is not supported.
-/* #define inline __inline */
-
-// Define to `long' if <sys/types.h> does not define.
-/* typedef long off_t; */
-
-// Define to `unsigned' if <sys/types.h> does not define.
-/* typedef long size_t; */
-
-#endif // CONFIG_H_01E33670634DAAC779EE5FF41CCBB36F
-
diff --git a/openwrt/package/ustl/ipkg/ustl.control b/openwrt/package/ustl/ipkg/ustl.control
deleted file mode 100644
index 210877d62f..0000000000
--- a/openwrt/package/ustl/ipkg/ustl.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: ustl
-Priority: optional
-Section: libs
-Description: An STL (Standard Template Library) for embedded systems
diff --git a/openwrt/package/ustl/patches/01-install-DESTDIR.patch b/openwrt/package/ustl/patches/01-install-DESTDIR.patch
deleted file mode 100644
index ec3a959d3f..0000000000
--- a/openwrt/package/ustl/patches/01-install-DESTDIR.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-diff -ruN ustl-0.8-old/Makefile ustl-0.8-new/Makefile
---- ustl-0.8-old/Makefile 2005-11-10 21:06:53.000000000 +0100
-+++ ustl-0.8-new/Makefile 2005-12-08 13:57:07.000000000 +0100
-@@ -39,35 +39,35 @@
- .PHONY: install-static install-shared uninstall-static uninstall-shared
-
- install-shared: ${LIBSOBLD} install-incs
-- @echo "Installing ${LIBSOBLD} to ${LIBDIR} ..."
-- @${INSTALLDIR} ${LIBDIR}
-- @${INSTALLLIB} ${LIBSOBLD} ${LIBDIR}
-- @(cd ${LIBDIR}; ${RM} ${LIBSO} ${LIBSOLNK}; ${LN} -sf ${LIBSOBLD} ${LIBSO}; ${LN} -sf ${LIBSOBLD} ${LIBSOLNK})
-+ @echo "Installing ${LIBSOBLD} to ${DESTDIR}${LIBDIR} ..."
-+ @${INSTALLDIR} ${DESTDIR}${LIBDIR}
-+ @${INSTALLLIB} ${LIBSOBLD} ${DESTDIR}${LIBDIR}
-+ @(cd ${DESTDIR}${LIBDIR}; ${RM} ${LIBSO} ${LIBSOLNK}; ${LN} -sf ${LIBSOBLD} ${LIBSO}; ${LN} -sf ${LIBSOBLD} ${LIBSOLNK})
-
- uninstall-shared: uninstall-incs
-- @echo "Removing ${LIBSOBLD} from ${LIBDIR} ..."
-- @${RM} -f ${LIBDIR}/${LIBSO} ${LIBDIR}/${LIBSOLNK} ${LIBDIR}/${LIBSOBLD}
-+ @echo "Removing ${LIBSOBLD} from ${DESTDIR}${LIBDIR} ..."
-+ @${RM} -f ${DESTDIR}${LIBDIR}/${LIBSO} ${DESTDIR}${LIBDIR}/${LIBSOLNK} ${DESTDIR}${LIBDIR}/${LIBSOBLD}
-
- install-static: ${LIBA} install-incs
-- @echo "Installing ${LIBA} to ${LIBDIR} ..."
-- @${INSTALLDIR} ${LIBDIR}
-- @${INSTALLLIB} ${LIBA} ${LIBDIR}
-+ @echo "Installing ${LIBA} to ${DESTDIR}${LIBDIR} ..."
-+ @${INSTALLDIR} ${DESTDIR}${LIBDIR}
-+ @${INSTALLLIB} ${LIBA} ${DESTDIR}${LIBDIR}
-
- uninstall-static: uninstall-incs
-- @echo "Removing ${LIBA} from ${LIBDIR} ..."
-- @${RM} -f ${LIBDIR}/${LIBA}
-+ @echo "Removing ${LIBA} from ${DESTDIR}${LIBDIR} ..."
-+ @${RM} -f ${DESTDIR}${LIBDIR}/${LIBA}
-
- install-incs: ${INCS}
-- @echo "Installing headers to ${INCDIR} ..."
-- @${INSTALLDIR} ${INCDIR}/${LIBNAME}
-+ @echo "Installing headers to ${DESTDIR}${INCDIR} ..."
-+ @${INSTALLDIR} ${DESTDIR}${INCDIR}/${LIBNAME}
- @for i in $(filter-out ${LIBNAME}.h,${INCS}); do \
-- ${INSTALLDATA} $$i ${INCDIR}/${LIBNAME}/$$i; \
-+ ${INSTALLDATA} $$i ${DESTDIR}${INCDIR}/${LIBNAME}/$$i; \
- done;
-- @${INSTALLDATA} ${LIBNAME}.h ${INCDIR}
-+ @${INSTALLDATA} ${LIBNAME}.h ${DESTDIR}${INCDIR}
-
- uninstall-incs:
-- @echo "Removing headers from ${INCDIR} ..."
-- @${RM} -rf ${INCDIR}/${LIBNAME} ${INCDIR}/${LIBNAME}.h
-+ @echo "Removing headers from ${DESTDIR}${INCDIR} ..."
-+ @${RM} -rf ${DESTDIR}${INCDIR}/${LIBNAME} ${DESTDIR}${INCDIR}/${LIBNAME}.h
-
-
- %.o: %.cc
diff --git a/openwrt/package/ustl/patches/02-install_path.patch b/openwrt/package/ustl/patches/02-install_path.patch
deleted file mode 100644
index 3a7cf8a05d..0000000000
--- a/openwrt/package/ustl/patches/02-install_path.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN ustl.old/Common.mk.in ustl.dev/Common.mk.in
---- ustl.old/Common.mk.in 2005-11-10 21:06:53.000000000 +0100
-+++ ustl.dev/Common.mk.in 2006-03-23 16:12:05.000000000 +0100
-@@ -9,7 +9,7 @@
- AR = @AR@
- RANLIB = @RANLIB@
- DOXYGEN = @DOXYGEN@
--INSTALL = @INSTALL@
-+INSTALL = install
- RM = @RM@
- LN = @LN@
-
diff --git a/openwrt/package/util-linux/Config.in b/openwrt/package/util-linux/Config.in
deleted file mode 100644
index 8faceb6e7c..0000000000
--- a/openwrt/package/util-linux/Config.in
+++ /dev/null
@@ -1,42 +0,0 @@
-menu "util-linux"
-
-config BR2_COMPILE_UTIL_LINUX
- tristate
- default n
- depends BR2_PACKAGE_FDISK || BR2_PACKAGE_SWAP_UTILS
-
-config BR2_PACKAGE_FDISK
- prompt "fdisk............................. Partition table manipulation utility"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_UTIL_LINUX
- help
- A partition table manipulation utility
-
- http://www.kernel.org/pub/linux/utils/util-linux/
-
-config BR2_PACKAGE_LOSETUP
- prompt "losetup........................... Loop devices setup and control utility"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_UTIL_LINUX
- select BR2_PACKAGE_KMOD_LOOP
- help
- A loop devices setup and control utility
-
- http://www.kernel.org/pub/linux/utils/util-linux/
-
-config BR2_PACKAGE_SWAP_UTILS
- prompt "swap-utils........................ Swap space management utilities"
- tristate
- default m if CONFIG_DEVEL
- select BR2_COMPILE_UTIL_LINUX
- help
- A collection of tools to manage swap space :
- * mkswap
- * swapon
- * swapoff
-
- http://www.kernel.org/pub/linux/utils/util-linux/
-
-endmenu
diff --git a/openwrt/package/util-linux/Makefile b/openwrt/package/util-linux/Makefile
deleted file mode 100644
index 6e8f5abd7f..0000000000
--- a/openwrt/package/util-linux/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=fdisk
-PKG_VERSION:=2.12r
-PKG_RELEASE:=1
-PKG_MD5SUM:=c261230b27fc0fbcc287c76884caf2d3
-
-PKG_SOURCE_URL:=ftp://ftp.kernel.org/pub/linux/utils/util-linux/ \
- http://ftp.kernel.org/pub/linux/utils/util-linux/ \
- ftp://ftp.de.kernel.org/pub/linux/utils/util-linux/ \
- http://ftp.de.kernel.org/pub/linux/utils/util-linux/
-PKG_SOURCE:=util-linux-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-PKG_BUILD_DIR:=$(BUILD_DIR)/util-linux-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,FDISK,fdisk,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,LOSETUP,losetup,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-$(eval $(call PKG_template,SWAP_UTILS,swap-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- OPT="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- INSTALLSUID="install -m 4755" \
- all install
- touch $@
-
-$(IPKG_FDISK):
- install -d -m0755 $(IDIR_FDISK)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/sbin/fdisk $(IDIR_FDISK)/usr/sbin/
- $(RSTRIP) $(IDIR_FDISK)
- $(IPKG_BUILD) $(IDIR_FDISK) $(PACKAGE_DIR)
-
-$(IPKG_LOSETUP):
- install -d -m0755 $(IDIR_LOSETUP)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/sbin/losetup $(IDIR_LOSETUP)/usr/sbin/
- $(RSTRIP) $(IDIR_LOSETUP)
- $(IPKG_BUILD) $(IDIR_LOSETUP) $(PACKAGE_DIR)
-
-$(IPKG_SWAP_UTILS):
- install -d -m0755 $(IDIR_SWAP_UTILS)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/sbin/mkswap $(IDIR_SWAP_UTILS)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/sbin/swap{on,off} $(IDIR_SWAP_UTILS)/usr/sbin/
- $(RSTRIP) $(IDIR_SWAP_UTILS)
- $(IPKG_BUILD) $(IDIR_SWAP_UTILS) $(PACKAGE_DIR)
-
-mostlyclean:
- -$(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/util-linux/ipkg/fdisk.control b/openwrt/package/util-linux/ipkg/fdisk.control
deleted file mode 100644
index cf73e98df3..0000000000
--- a/openwrt/package/util-linux/ipkg/fdisk.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: fdisk
-Priority: optional
-Section: admin
-Depends:
-Description: Partition table manipulation utility
diff --git a/openwrt/package/util-linux/ipkg/losetup.control b/openwrt/package/util-linux/ipkg/losetup.control
deleted file mode 100644
index 5023050585..0000000000
--- a/openwrt/package/util-linux/ipkg/losetup.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: losetup
-Priority: optional
-Section: admin
-Depends: kmod-loop
-Description: Loop devices setup and control utility
diff --git a/openwrt/package/util-linux/ipkg/swap-utils.control b/openwrt/package/util-linux/ipkg/swap-utils.control
deleted file mode 100644
index c888251f63..0000000000
--- a/openwrt/package/util-linux/ipkg/swap-utils.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: swap-utils
-Priority: optional
-Section: admin
-Depends:
-Description: Swap space management utilities
diff --git a/openwrt/package/util-linux/patches/501-mconfig.patch b/openwrt/package/util-linux/patches/501-mconfig.patch
deleted file mode 100644
index 67e6530de9..0000000000
--- a/openwrt/package/util-linux/patches/501-mconfig.patch
+++ /dev/null
@@ -1,68 +0,0 @@
---- util-linux-2.12r-orig/MCONFIG 2004-12-13 00:15:48.000000000 +0100
-+++ util-linux-2.12r/MCONFIG 2005-10-03 17:54:15.945049312 +0200
-@@ -16,8 +16,8 @@
- # Select for ARCH one of intel, alpha, sparc, arm, m68k, mips
- # Select for CPU i386 if the binaries must be able to run on an intel 386
- # (by default i486 code is generated, see below)
--CPU=$(shell uname -m)
--ARCH=$(shell echo $(CPU) | sed 's/i.86/intel/;s/arm.*/arm/')
-+CPU=
-+ARCH=mips
-
- # If HAVE_PAM is set to "yes", then login, chfn, chsh, and newgrp
- # will use PAM for authentication. Additionally, passwd will not be
-@@ -64,12 +64,12 @@
- # If HAVE_WRITE is set to "yes", then write will not be built or
- # installed from the misc-utils subdirectory.
- # (There is a network aware write in netwrite from NetKit 0.16 or later.)
--HAVE_WRITE=no
-+HAVE_WRITE=yes
-
- # If HAVE_GETTY is set to "yes", then agetty will not be built or
- # installed from the login-utils subdirectory. Note that agetty can
- # co-exist with other gettys, so this option should never be used.
--HAVE_GETTY=no
-+HAVE_GETTY=yes
-
- # If USE_TTY_GROUP is set to "yes", then wall and write will be installed
- # setgid to the "tty" group, and mesg will only set the group write bit.
-@@ -82,13 +82,13 @@
- # If HAVE_KILL is set to "yes", then kill will not be built or
- # installed from the misc-utils subdirectory.
- # (There is also a kill in the procps package.)
--HAVE_KILL=no
-+HAVE_KILL=yes
-
- # If ALLOW_VCS_USE is set to "yes", then login will chown /dev/vcsN
- # to the current user, allowing her to make a screendump and do other
- # nifty things on the console, but also allowing him to keep an open
- # file descriptor after logging out to trick the next user.
--ALLOW_VCS_USE=yes
-+ALLOW_VCS_USE=no
-
- # If DO_STAT_MAIL is set to "yes", then login will stat() the mailbox
- # and tell the user that she has new mail. This can hang the login if
-@@ -102,19 +102,19 @@
- # If HAVE_SLN is set to "yes", then sln won't be installed
- # (but the man page sln.8 will be installed anyway).
- # sln also comes with libc and glibc.
--HAVE_SLN=no
-+HAVE_SLN=yes
-
- # If HAVE_FDUTILS is set to "yes", then setfdprm won't be installed.
--HAVE_FDUTILS=no
-+HAVE_FDUTILS=yes
-
- # If SILENT_PG is set to "yes", then pg will not ring the bell
- # when an invalid key is pressed
--SILENT_PG=no
-+SILENT_PG=yes
-
- # If configure decides that Native Language Support (NLS) is available,
- # it sets MAY_ENABLE_NLS in defines.h. If you don't want NLS, set
- # DISABLE_NLS to "yes".
--DISABLE_NLS=no
-+DISABLE_NLS=yes
-
- # Different optimizations for different cpus.
- # Before gcc 2.8.0 only -m486
diff --git a/openwrt/package/vgp/Config.in b/openwrt/package/vgp/Config.in
deleted file mode 100755
index db543c3451..0000000000
--- a/openwrt/package/vgp/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_VGP
- prompt "vgp............................... a daemon working like Cisco(c) HSRP"
- tristate
- default m if CONFIG_DEVEL
- help
- VGP (Virtual Gateway Protocol)is a very simple protocol able to
- work in a way similar to Cisco(c) HSRP. It implements the idea
- of Virtual Gateway to provide fault tollerance (and load
- balancing) on your net. Each client on your net has as its
- default gateway the virtual gateway and not the real router.
-
- http://vgpd.freaknet.org/
diff --git a/openwrt/package/vgp/Makefile b/openwrt/package/vgp/Makefile
deleted file mode 100755
index 29fd8711ec..0000000000
--- a/openwrt/package/vgp/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=vgp
-PKG_VERSION:=0.2.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=b8c25b5dfcb944f78bbc584be9c230c7
-PKG_SOURCE_URL:=http://vgpd.freaknet.org/files/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=zcat
-
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,VGP,vgp,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --program-prefix="" \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) DESTDIR=$(PKG_INSTALL_DIR) -C $(PKG_BUILD_DIR) install
- touch $@
-
-$(IPKG_VGP):
- mkdir -p $(IDIR_VGP)
- $(CP) $(PKG_INSTALL_DIR)/* $(IDIR_VGP)/
- $(RSTRIP) $(IDIR_VGP)
- $(IPKG_BUILD) $(IDIR_VGP) $(PACKAGE_DIR)
diff --git a/openwrt/package/vgp/ipkg/vgp.control b/openwrt/package/vgp/ipkg/vgp.control
deleted file mode 100755
index 18fdc91ee9..0000000000
--- a/openwrt/package/vgp/ipkg/vgp.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: vgp
-Section: net
-Architecture: mipsel
-Priority: optional
-Description: vgp is a daemon working like Cisco(c) HSRP
diff --git a/openwrt/package/vim/Config.in b/openwrt/package/vim/Config.in
deleted file mode 100644
index b7b0a249aa..0000000000
--- a/openwrt/package/vim/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_VIM
- prompt "vim............................... VI Improved"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBNCURSES
- help
- An improved version of VI.
-
- http://www.vim.org
-
diff --git a/openwrt/package/vim/Makefile b/openwrt/package/vim/Makefile
deleted file mode 100644
index a769373b5c..0000000000
--- a/openwrt/package/vim/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=vim
-PKG_VERSION:=5.8
-PKG_RELEASE:=1
-
-PKG_SOURCE_URL:=ftp://ftp.vim.org/pub/vim/unix/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-src.tar.gz
-PKG_MD5SUM:=
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,VIM,vim,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR)/src; rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ac_cv_c_bigendian=no \
- ac_cv_sizeof_off_t=8 \
- ac_cv_sizeof_int=4 \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --sbindir=/usr/sbin \
- --libexecdir=/usr/lib \
- --sysconfdir=/etc \
- --datadir=/usr/share \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --program-prefix="" \
- $(DISABLE_NLS) \
- --enable-min-features \
- --disable-gui \
- --without-x \
- --disable-multibyte \
- --disable-cscope \
- --disable-gpm \
- --with-tlib=ncurses \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC)
- touch $@
-
-$(IPKG_VIM):
- mkdir -p $(IDIR_VIM)/usr/bin
- mkdir -p $(IDIR_VIM)//usr/share/vim
- $(CP) ./files/vimrc $(IDIR_VIM)//usr/share/vim
- $(CP) $(PKG_BUILD_DIR)/src/$(PKG_NAME) $(IDIR_VIM)/usr/bin/
- $(RSTRIP) $(IDIR_VIM)
- $(IPKG_BUILD) $(IDIR_VIM) $(PACKAGE_DIR)
diff --git a/openwrt/package/vim/files/vimrc b/openwrt/package/vim/files/vimrc
deleted file mode 100644
index 792d68076a..0000000000
--- a/openwrt/package/vim/files/vimrc
+++ /dev/null
@@ -1,13 +0,0 @@
-set showcmd " Show (partial) command in status line.
-set showmatch " Show matching brackets.
-set ignorecase " Do case insensitive matching
-set incsearch " Incremental search
-set autowrite " Automatically save before commands like :next and :make
-set nocompatible " Use Vim defaults instead of 100% vi compatibility
-set backspace=indent,eol,start " more powerful backspacing
-set autoindent " always set autoindenting on
-set linebreak " Don't wrap words by default
-set textwidth=0 " Don't wrap lines by default
-set ruler " show the cursor position all the time
-
-
diff --git a/openwrt/package/vim/ipkg/vim.control b/openwrt/package/vim/ipkg/vim.control
deleted file mode 100644
index 2b5d928431..0000000000
--- a/openwrt/package/vim/ipkg/vim.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: vim
-Priority: optional
-Section: text
-Depends: libncurses
-Description: Vi Improved
diff --git a/openwrt/package/vim/patches/vim_configure.patch b/openwrt/package/vim/patches/vim_configure.patch
deleted file mode 100644
index c8ae5c8f28..0000000000
--- a/openwrt/package/vim/patches/vim_configure.patch
+++ /dev/null
@@ -1,248 +0,0 @@
-This patch is required to stop vim's configure script from insisting on
-compiling test programs which obviously do not work in a cross compiled
-environment.
-
---- vim-5.8_original/src/configure 2001-05-11 04:59:18.000000000 +1000
-+++ vim-5.8/src/configure 2006-03-24 01:04:55.000000000 +1100
-@@ -995,10 +995,6 @@
-
- test "$GCC" = yes && CFLAGS="$CFLAGS -Wall"
-
--if test "$cross_compiling" = yes; then
-- { echo "configure: error: cannot compile a simple program, check CC and CFLAGS" 1>&2; exit 1; }
--fi
--
- test "$GCC" = yes && CPP_MM=M;
-
- if test -f ./toolcheck; then
-@@ -3365,29 +3361,7 @@
-
- echo $ac_n "checking quality of toupper""... $ac_c" 1>&6
- echo "configure:3368: checking quality of toupper" >&5
--if test "$cross_compiling" = yes; then
-- { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
--else
-- cat > conftest.$ac_ext <<EOF
--#line 3373 "configure"
--#include "confdefs.h"
--#include <ctype.h>
--main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
--EOF
--if { (eval echo configure:3378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
--then
-- cat >> confdefs.h <<\EOF
--#define BROKEN_TOUPPER 1
--EOF
-- echo "$ac_t""bad" 1>&6
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -fr conftest*
-- echo "$ac_t""good" 1>&6
--fi
--rm -fr conftest*
--fi
-+echo "$ac_t""good" 1>&6
-
-
- echo $ac_n "checking whether __DATE__ and __TIME__ work""... $ac_c" 1>&6
-@@ -4340,34 +4314,10 @@
- if test "x$olibs" != "x$LIBS"; then
- echo $ac_n "checking whether we talk terminfo""... $ac_c" 1>&6
- echo "configure:4343: checking whether we talk terminfo" >&5
-- if test "$cross_compiling" = yes; then
-- { echo "configure: error: failed to compile test program." 1>&2; exit 1; }
--else
-- cat > conftest.$ac_ext <<EOF
--#line 4348 "configure"
--#include "confdefs.h"
--
--#ifdef HAVE_TERMCAP_H
--# include <termcap.h>
--#endif
--main()
--{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
--EOF
--if { (eval echo configure:4357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
--then
-- echo "$ac_t""no -- we are in termcap land" 1>&6
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -fr conftest*
-- echo "$ac_t""yes -- terminfo spoken here" 1>&6; cat >> confdefs.h <<\EOF
-+echo "$ac_t""yes -- terminfo spoken here" 1>&6; cat >> confdefs.h <<\EOF
- #define TERMINFO 1
- EOF
-
--fi
--rm -fr conftest*
--fi
--
- else
- echo "$ac_t""none found" 1>&6
- fi
-@@ -4600,70 +4550,14 @@
-
- echo $ac_n "checking for struct sigcontext""... $ac_c" 1>&6
- echo "configure:4603: checking for struct sigcontext" >&5
--cat > conftest.$ac_ext <<EOF
--#line 4605 "configure"
--#include "confdefs.h"
-
--#include <signal.h>
--test_sig()
--{
-- struct sigcontext *scont;
-- scont = (struct sigcontext *)0;
-- return 1;
--}
--int main() {
--
--; return 0; }
--EOF
--if { (eval echo configure:4619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-- rm -rf conftest*
-- echo "$ac_t""yes" 1>&6
-- cat >> confdefs.h <<\EOF
-+cat >> confdefs.h <<\EOF
- #define HAVE_SIGCONTEXT 1
- EOF
-
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -rf conftest*
-- echo "$ac_t""no" 1>&6
--fi
--rm -f conftest*
--
- echo $ac_n "checking getcwd implementation""... $ac_c" 1>&6
- echo "configure:4635: checking getcwd implementation" >&5
--if test "$cross_compiling" = yes; then
-- { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
--else
-- cat > conftest.$ac_ext <<EOF
--#line 4640 "configure"
--#include "confdefs.h"
--
--char *dagger[] = { "IFS=pwd", 0 };
--main()
--{
-- char buffer[500];
-- extern char **environ;
-- environ = dagger;
-- return getcwd(buffer, 500) ? 0 : 1;
--}
--EOF
--if { (eval echo configure:4652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
--then
-- echo "$ac_t""it is usable" 1>&6
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -fr conftest*
-- echo "$ac_t""it stinks" 1>&6
-- cat >> confdefs.h <<\EOF
--#define BAD_GETCWD 1
--EOF
--
--fi
--rm -fr conftest*
--fi
--
-+echo "$ac_t""it is usable" 1>&6
-
- for ac_func in bcmp fchdir fchown fseeko fsync ftello getcwd getpwnam getpwuid \
- gettimeofday getwd lstat memcmp memset nanosleep opendir putenv qsort \
-@@ -4872,89 +4766,11 @@
-
- echo $ac_n "checking whether memmove/bcopy/memcpy handle overlaps""... $ac_c" 1>&6
- echo "configure:4875: checking whether memmove/bcopy/memcpy handle overlaps" >&5
--bcopy_test_prog='
--main() {
-- char buf[10];
-- strcpy(buf, "abcdefghi");
-- mch_memmove(buf, buf + 2, 3);
-- if (strncmp(buf, "ababcf", 6))
-- exit(1);
-- strcpy(buf, "abcdefghi");
-- mch_memmove(buf + 2, buf, 3);
-- if (strncmp(buf, "cdedef", 6))
-- exit(1);
-- exit(0); /* libc version works properly. */
--}'
--
--
--if test "$cross_compiling" = yes; then
-- { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
--else
-- cat > conftest.$ac_ext <<EOF
--#line 4895 "configure"
--#include "confdefs.h"
--#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog
--EOF
--if { (eval echo configure:4899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
--then
-- cat >> confdefs.h <<\EOF
-+cat >> confdefs.h <<\EOF
- #define USEMEMMOVE 1
--EOF
-- echo "$ac_t""memmove does" 1>&6
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -fr conftest*
-- if test "$cross_compiling" = yes; then
-- { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
--else
-- cat > conftest.$ac_ext <<EOF
--#line 4913 "configure"
--#include "confdefs.h"
--#define mch_memmove(s,d,l) bcopy(d,s,l) $bcopy_test_prog
--EOF
--if { (eval echo configure:4917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
--then
-- cat >> confdefs.h <<\EOF
- #define USEBCOPY 1
--EOF
-- echo "$ac_t""bcopy does" 1>&6
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -fr conftest*
-- if test "$cross_compiling" = yes; then
-- { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
--else
-- cat > conftest.$ac_ext <<EOF
--#line 4931 "configure"
--#include "confdefs.h"
--#define mch_memmove(s,d,l) memcpy(d,s,l) $bcopy_test_prog
--EOF
--if { (eval echo configure:4935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
--then
-- cat >> confdefs.h <<\EOF
- #define USEMEMCPY 1
- EOF
-- echo "$ac_t""memcpy does" 1>&6
--else
-- echo "configure: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-- rm -fr conftest*
-- echo "$ac_t""no" 1>&6
--fi
--rm -fr conftest*
--fi
--
--fi
--rm -fr conftest*
--fi
--
--fi
--rm -fr conftest*
--fi
--
--
-
- if test "$enable_multibyte" = "yes"; then
- cflags_save=$CFLAGS
diff --git a/openwrt/package/vnc-reflector/Config.in b/openwrt/package/vnc-reflector/Config.in
deleted file mode 100755
index 22679fcedf..0000000000
--- a/openwrt/package/vnc-reflector/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_VNC_REFLECTOR
- prompt "vnc-reflector..................... VNC proxy for multiple clients"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBJPEG
- select BR2_PACKAGE_ZLIB
- help
- VNC Reflector is a specialized VNC server which acts as
- a proxy sitting between real VNC server (a host) and a
- number of VNC clients. It was designed to work efficiently
- with large number of clients.
-
- http://sourceforge.net/projects/vnc-reflector
-
diff --git a/openwrt/package/vnc-reflector/Makefile b/openwrt/package/vnc-reflector/Makefile
deleted file mode 100644
index 00d1cbad0f..0000000000
--- a/openwrt/package/vnc-reflector/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=vnc-reflector
-PKG_VERSION:=1.2.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=c3f88bc62f228b335c25c07f9744ab0c
-
-PKG_SOURCE_URL:=@SF/vnc-reflector
-PKG_SOURCE:=vnc_reflector-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/vnc_reflector
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,VNC_REFLECTOR,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- OFLAGS="$(TARGET_CFLAGS)" \
- STAGING_DIR=$(STAGING_DIR) \
- default
- touch $@
-
-$(IPKG_VNC_REFLECTOR):
- install -d -m0755 $(IDIR_VNC_REFLECTOR)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/vncreflector $(IDIR_VNC_REFLECTOR)/usr/sbin/
- $(RSTRIP) $(IDIR_VNC_REFLECTOR)
- $(IPKG_BUILD) $(IDIR_VNC_REFLECTOR) $(PACKAGE_DIR)
diff --git a/openwrt/package/vnc-reflector/ipkg/vnc-reflector.control b/openwrt/package/vnc-reflector/ipkg/vnc-reflector.control
deleted file mode 100755
index 293a0a0701..0000000000
--- a/openwrt/package/vnc-reflector/ipkg/vnc-reflector.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: vnc-reflector
-Depends: jpeg, zlib
-Section: net
-Architecture: mipsel
-Priority: optional
-Description: VNC Reflector is a specialized VNC server which acts as a proxy sitting between real VNC server (a host) and a number of VNC clients. It was designed to work efficiently with large number of clients.
diff --git a/openwrt/package/vnc-reflector/patches/01-honor_include_lib_path.patch b/openwrt/package/vnc-reflector/patches/01-honor_include_lib_path.patch
deleted file mode 100644
index fb409ac43f..0000000000
--- a/openwrt/package/vnc-reflector/patches/01-honor_include_lib_path.patch
+++ /dev/null
@@ -1,25 +0,0 @@
---- vnc_reflector/Makefile.orig 2005-12-14 01:25:53.000000000 +0100
-+++ vnc_reflector/Makefile 2005-12-14 01:28:05.000000000 +0100
-@@ -14,10 +14,11 @@
- #
- # Variables you might want to edit: CFLAGS, CONFFLAGS
-
--IFLAGS = -I.
-+IFLAGS = -I. -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include
-+OFLAGS = -O2
-
- # Production
--CFLAGS = -O2 $(IFLAGS)
-+CFLAGS = $(OFLAGS) $(IFLAGS)
- # Debug (strict)
- #CFLAGS = -g -pedantic -Wall $(IFLAGS)
- # Debug (profiling)
-@@ -29,7 +30,7 @@
- CONFFLAGS = -DUSE_POLL
-
- # Link with zlib and JPEG libraries
--LDFLAGS = -L/usr/local/lib -lz -ljpeg
-+LDFLAGS = -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib -lz -ljpeg
-
- PROG = vncreflector
-
diff --git a/openwrt/package/vncrepeater/Config.in b/openwrt/package/vncrepeater/Config.in
deleted file mode 100644
index 418f48509a..0000000000
--- a/openwrt/package/vncrepeater/Config.in
+++ /dev/null
@@ -1,17 +0,0 @@
-config BR2_PACKAGE_VNCREPEATER
- prompt "vncrepeater....................... UltraVNC repeater for Linux"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_UCLIBCXX
- help
- Viewer can be behind Nat router or directly connected to the internet
-
- Instead of forwarding serveral ports, you only need to forward 1 port
-
- If the PC that runs the Repeater has access to the local DNS server,
- you can use your local DNS names instead of 10.10.10.12.
-
- This could be handy when you have a dynamic DHCP server allocating
- ip adresses for your PC.
-
- http://ultravnc.sourceforge.net/addons/repeater.html
diff --git a/openwrt/package/vncrepeater/Makefile b/openwrt/package/vncrepeater/Makefile
deleted file mode 100644
index 2d1d4505f2..0000000000
--- a/openwrt/package/vncrepeater/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# $Id: Makefile 3112 2006-02-01 23:53:19Z mbm $
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=vncrepeater
-PKG_VERSION:=0.12
-PKG_RELEASE:=1
-PKG_MD5SUM:=5951740a8a103d7d9668558b3639c6c4
-
-PKG_SOURCE_URL:=http://www.rit.edu/~reh5586/openwrt/packages/vncrepeater/src
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,VNCREPEATER,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- CFLAGS="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- repeater
- touch $@
-
-$(IPKG_VNCREPEATER):
- install -d -m0755 $(IDIR_VNCREPEATER)/usr/sbin $(IDIR_VNCREPEATER)/etc
- $(CP) $(PKG_BUILD_DIR)/repeater $(IDIR_VNCREPEATER)/usr/sbin/$(PKG_NAME)
- install -d -m0755 $(IDIR_VNCREPEATER)/etc
- $(CP) $(PKG_BUILD_DIR)/uvncrepeater.ini $(IDIR_VNCREPEATER)/etc/vncrepeater.conf
- install -d -m0755 $(IDIR_VNCREPEATER)/etc/init.d
- $(CP) $(PKG_BUILD_DIR)/S60vncrepeater $(IDIR_VNCREPEATER)/etc/init.d/
- $(RSTRIP) $(IDIR_VNCREPEATER)
- $(IPKG_BUILD) $(IDIR_VNCREPEATER) $(PACKAGE_DIR)
diff --git a/openwrt/package/vncrepeater/ipkg/vncrepeater.control b/openwrt/package/vncrepeater/ipkg/vncrepeater.control
deleted file mode 100644
index 3996c86075..0000000000
--- a/openwrt/package/vncrepeater/ipkg/vncrepeater.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: vncrepeater
-Section: net
-Depends: uclibc++
-Priority: optional
-Description: UltraVNC repeater for Linux
diff --git a/openwrt/package/vncrepeater/patches/01-uclibcxx_linking.patch b/openwrt/package/vncrepeater/patches/01-uclibcxx_linking.patch
deleted file mode 100644
index 06020eeba5..0000000000
--- a/openwrt/package/vncrepeater/patches/01-uclibcxx_linking.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -urN vncrepeater-0.12/Makefile vncrepeater-0.12.new/Makefile
---- vncrepeater-0.12/Makefile 2006-03-31 07:40:14.000000000 +0200
-+++ vncrepeater-0.12.new/Makefile 2006-04-11 10:26:06.345879104 +0200
-@@ -1,21 +1,21 @@
--CFLAGS=-Wall
-+CFLAGS=-Wall
- repeater: repeater.o repeaterproc.o openbsd_stringfuncs.o iniparser.o readini.o
-- g++ $(CFLAGS) -o repeater repeater.o repeaterproc.o openbsd_stringfuncs.o iniparser.o readini.o
-+ $(CC) $(CFLAGS) -o repeater repeater.o repeaterproc.o openbsd_stringfuncs.o iniparser.o readini.o -nodefaultlibs -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib -luClibc++
-
- repeater.o: repeater.cpp
-- g++ $(CFLAGS) -c repeater.cpp
-+ $(CC) $(CFLAGS) -c repeater.cpp
-
- repeaterproc.o: repeaterproc.cpp
-- g++ $(CFLAGS) -c repeaterproc.cpp
-+ $(CC) $(CFLAGS) -c repeaterproc.cpp
-
- openbsd_stringfuncs.o: openbsd_stringfuncs.cpp
-- g++ $(CFLAGS) -c openbsd_stringfuncs.cpp
-+ $(CC) $(CFLAGS) -c openbsd_stringfuncs.cpp
-
- iniparser.o: iniparser.cpp
-- g++ $(CFLAGS) -c iniparser.cpp
-+ $(CC) $(CFLAGS) -c iniparser.cpp
-
- readini.o: readini.cpp
-- g++ $(CFLAGS) -c readini.cpp
-+ $(CC) $(CFLAGS) -c readini.cpp
-
- clean:
- rm -f *.o repeater
diff --git a/openwrt/package/vnstat/Config.in b/openwrt/package/vnstat/Config.in
deleted file mode 100644
index ab6a8dee35..0000000000
--- a/openwrt/package/vnstat/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_VNSTAT
- prompt "vnstat............................ Console-based network traffic monitor"
- tristate
- default m if CONFIG_DEVEL
- help
- vnStat is a network traffic monitor for Linux that keeps a log of daily
- network traffic for the selected interface(s). vnStat isn't a packet
- sniffer. The traffic information is analyzed from the /proc -filesystem,
- so vnStat can be used without root permissions.
- .
- http://humdi.net/vnstat/
diff --git a/openwrt/package/vnstat/Makefile b/openwrt/package/vnstat/Makefile
deleted file mode 100644
index 009388e208..0000000000
--- a/openwrt/package/vnstat/Makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=vnstat
-PKG_VERSION:=1.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=9184f79b5e60499bc059f670032291e5
-
-PKG_SOURCE_URL:=http://humdi.net/vnstat
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,VNSTAT,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS)
- touch $@
-
-$(IPKG_VNSTAT):
- install -d -m0755 $(IDIR_VNSTAT)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/src/vnstat $(IDIR_VNSTAT)/usr/bin/
- $(STRIP) $(IDIR_VNSTAT)/usr/bin/*
- $(IPKG_BUILD) $(IDIR_VNSTAT) $(PACKAGE_DIR)
diff --git a/openwrt/package/vnstat/ipkg/vnstat.control b/openwrt/package/vnstat/ipkg/vnstat.control
deleted file mode 100644
index 9d7ba79072..0000000000
--- a/openwrt/package/vnstat/ipkg/vnstat.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: vnstat
-Priority: optional
-Section: net
-Description: Console-based network traffic monitor
diff --git a/openwrt/package/vpnc/Config.in b/openwrt/package/vpnc/Config.in
deleted file mode 100755
index 6e360a1b90..0000000000
--- a/openwrt/package/vpnc/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_VPNC
- prompt "vpnc.............................. VPN client for Cisco 3000"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_KMOD_TUN
- select BR2_PACKAGE_LIBGPG_ERROR
- select BR2_PACKAGE_LIBGCRYPT
- help
- Client for cisco3000 VPN Concentrator.
diff --git a/openwrt/package/vpnc/Makefile b/openwrt/package/vpnc/Makefile
deleted file mode 100644
index eb21240c07..0000000000
--- a/openwrt/package/vpnc/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=vpnc
-PKG_VERSION:=0.3.3
-PKG_RELEASE:=1
-
-PKG_MD5SUM:=e7518cff21326fe7eb9795b60c25ae6a
-PKG_SOURCE_URL:=http://www.unix-ag.uni-kl.de/~massar/vpnc/
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_CAT:=zcat
-
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,VPNC,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- OFLAGS="$(TARGET_CFLAGS)" \
- OS="Linux" \
- STAGING_DIR=$(STAGING_DIR) \
- DESTDIR=$(PKG_INSTALL_DIR) \
- PREFIX=/usr \
- all install
- touch $@
-
-$(IPKG_VPNC):
- install -d -m0755 $(IDIR_VPNC)
- $(CP) $(PKG_INSTALL_DIR)/* $(IDIR_VPNC)/
- $(RSTRIP) $(IDIR_VPNC)
- $(IPKG_BUILD) $(IDIR_VPNC) $(PACKAGE_DIR)
diff --git a/openwrt/package/vpnc/ipkg/vpnc.conffiles b/openwrt/package/vpnc/ipkg/vpnc.conffiles
deleted file mode 100644
index 8185af9cbb..0000000000
--- a/openwrt/package/vpnc/ipkg/vpnc.conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/vpnc/vpnc.conf
-/etc/vpnc/vpnc-script
diff --git a/openwrt/package/vpnc/ipkg/vpnc.control b/openwrt/package/vpnc/ipkg/vpnc.control
deleted file mode 100755
index 5087af9b29..0000000000
--- a/openwrt/package/vpnc/ipkg/vpnc.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: vpnc
-Section: net
-Architecture: mipsel
-Priority: optional
-Description: client for cisco3000 VPN Concentrator.
-Depends: libgpg-error libgcrypt kmod-tun
diff --git a/openwrt/package/vpnc/patches/01-cross.patch b/openwrt/package/vpnc/patches/01-cross.patch
deleted file mode 100644
index ff96a83652..0000000000
--- a/openwrt/package/vpnc/patches/01-cross.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-diff -Nur vpnc-0.3.3/Makefile vpnc-0.3.3.patched/Makefile
---- vpnc-0.3.3/Makefile 2005-05-01 22:30:35.000000000 +0200
-+++ vpnc-0.3.3.patched/Makefile 2005-12-23 23:43:55.222055250 +0100
-@@ -17,31 +17,32 @@
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
- DESTDIR=
--PREFIX=/usr/local
-+PREFIX=/usr
- ETCDIR=/etc/vpnc
- SBINDIR=$(PREFIX)/sbin
- MANDIR=$(PREFIX)/share/man
-
- CC=gcc
--CFLAGS=-W -Wall -O -g '-DVERSION="$(shell cat VERSION)"' $(shell libgcrypt-config --cflags)
--LDFLAGS=-g $(shell libgcrypt-config --libs)
-+CFLAGS=-W -Wall -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include $(OFLAGS) '-DVERSION="$(shell cat VERSION)"'
-+LDFLAGS=-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib -lgcrypt -lgpg-error
-
--ifeq ($(shell uname -s), Linux)
-+OS=$(shell uname -s)
-+ifeq ($(OS), Linux)
- SYSDEP=sysdep-linux.o
- endif
--ifeq ($(shell uname -s), FreeBSD)
-+ifeq ($(OS), FreeBSD)
- CFLAGS += -DSOCKADDR_IN_SIN_LEN -DHAVE_SA_LEN
- SYSDEP=sysdep-bsd.o
- endif
--ifeq ($(shell uname -s), NetBSD)
-+ifeq ($(OS), NetBSD)
- CFLAGS += -DSOCKADDR_IN_SIN_LEN -DHAVE_SA_LEN
- SYSDEP=sysdep-bsd.o
- endif
--ifeq ($(shell uname -s), OpenBSD)
-+ifeq ($(OS), OpenBSD)
- CFLAGS += -DSOCKADDR_IN_SIN_LEN -DHAVE_SA_LEN -DNEED_IPLEN_FIX -DNEW_TUN
- SYSDEP=sysdep-bsd.o
- endif
--ifeq ($(shell uname -s), SunOS)
-+ifeq ($(OS), SunOS)
- CFLAGS += -DNEED_IPLEN_FIX
- LDFLAGS += -lnsl -lresolv -lsocket
- SYSDEP=sysdep-svr4.o
diff --git a/openwrt/package/vrrpd/Config.in b/openwrt/package/vrrpd/Config.in
deleted file mode 100644
index 767e2dd0ec..0000000000
--- a/openwrt/package/vrrpd/Config.in
+++ /dev/null
@@ -1,13 +0,0 @@
-config BR2_PACKAGE_VRRPD
- prompt "vrrpd............................. Virtual Router Redundancy Protocol daemon"
- tristate
- default m if CONFIG_DEVEL
- help
- VRRPd is an implementation of Virtual Router Redundancy
- Protocol as specified in rfc2338. VRRPd is interoperable with
- other RFC-based VRRP implementations, including Cisco and
- Juniper, and is included as a standard feature on ImageStream
- routers.
-
- http://www.sourceforge.net/projects/vrrpd
-
diff --git a/openwrt/package/vrrpd/Makefile b/openwrt/package/vrrpd/Makefile
deleted file mode 100644
index 8805450c64..0000000000
--- a/openwrt/package/vrrpd/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=vrrpd
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=6d5066ea1a6ced817376ca0f54765447
-
-PKG_SOURCE_URL:=@SF/vrrpd
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,VRRPD,vrrpd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- DBG_OPT="" \
- MAIN_OPT="$(TARGET_CFLAGS)" \
- vrrpd
- touch $@
-
-$(IPKG_VRRPD):
- install -d -m0755 $(IDIR_VRRPD)/etc/default
- install -m0644 ./files/vrrpd.default $(IDIR_VRRPD)/etc/default/vrrpd
- install -d -m0755 $(IDIR_VRRPD)/etc/init.d
- install -m0755 ./files/vrrpd.init $(IDIR_VRRPD)/etc/init.d/vrrpd
- install -d -m0755 $(IDIR_VRRPD)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/vrrpd $(IDIR_VRRPD)/usr/sbin/
- $(RSTRIP) $(IDIR_VRRPD)
- $(IPKG_BUILD) $(IDIR_VRRPD) $(PACKAGE_DIR)
diff --git a/openwrt/package/vrrpd/files/vrrpd.default b/openwrt/package/vrrpd/files/vrrpd.default
deleted file mode 100644
index 0dfee0cfb9..0000000000
--- a/openwrt/package/vrrpd/files/vrrpd.default
+++ /dev/null
@@ -1,4 +0,0 @@
-ID=1
-IF=vlan1
-IP=10.0.0.1
-OPTIONS="-i $IF -v $ID $IP"
diff --git a/openwrt/package/vrrpd/files/vrrpd.init b/openwrt/package/vrrpd/files/vrrpd.init
deleted file mode 100644
index 5afc734381..0000000000
--- a/openwrt/package/vrrpd/files/vrrpd.init
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-BIN=vrrpd
-DEFAULT=/etc/default/$BIN
-[ -f $DEFAULT ] && . $DEFAULT
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN_${IF}_${ID}.pid
-
-case $1 in
- start)
- $BIN $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F) >/dev/null 2>&1
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/vrrpd/ipkg/vrrpd.conffiles b/openwrt/package/vrrpd/ipkg/vrrpd.conffiles
deleted file mode 100644
index 9680ca3c05..0000000000
--- a/openwrt/package/vrrpd/ipkg/vrrpd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/default/vrrpd
diff --git a/openwrt/package/vrrpd/ipkg/vrrpd.control b/openwrt/package/vrrpd/ipkg/vrrpd.control
deleted file mode 100644
index 435dda18f5..0000000000
--- a/openwrt/package/vrrpd/ipkg/vrrpd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: vrrpd
-Priority: optional
-Section: net
-Description: An implementation of the Virtual Router Redundancy Protocol
diff --git a/openwrt/package/vsftpd/Config.in b/openwrt/package/vsftpd/Config.in
deleted file mode 100644
index 2db9287098..0000000000
--- a/openwrt/package/vsftpd/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_VSFTPD
- prompt "vsftpd............................ Fast and secure FTP server"
- tristate
- default m if CONFIG_DEVEL
- help
- A fast and secure FTP server
-
- http://vsftpd.beasts.org/
-
diff --git a/openwrt/package/vsftpd/Makefile b/openwrt/package/vsftpd/Makefile
deleted file mode 100644
index d3c72c8598..0000000000
--- a/openwrt/package/vsftpd/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=vsftpd
-PKG_VERSION:=2.0.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=c0bf8c7b8e15ab15827172786fc56115
-
-PKG_SOURCE_URL:=ftp://vsftpd.beasts.org/users/cevans/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,VSFTPD,vsftpd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- vsftpd install
- touch $@
-
-$(IPKG_VSFTPD):
- install -d -m0755 $(IDIR_VSFTPD)/etc
- install -m0644 ./files/vsftpd.conf $(IDIR_VSFTPD)/etc/vsftpd.conf
- install -d -m0755 $(IDIR_VSFTPD)/etc/init.d
- install -m0755 ./files/vsftpd.init $(IDIR_VSFTPD)/etc/init.d/vsftpd
- install -d -m0755 $(IDIR_VSFTPD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/vsftpd $(IDIR_VSFTPD)/usr/sbin/
- $(RSTRIP) $(IDIR_VSFTPD)
- $(IPKG_BUILD) $(IDIR_VSFTPD) $(PACKAGE_DIR)
diff --git a/openwrt/package/vsftpd/files/vsftpd.conf b/openwrt/package/vsftpd/files/vsftpd.conf
deleted file mode 100644
index f3ba34f507..0000000000
--- a/openwrt/package/vsftpd/files/vsftpd.conf
+++ /dev/null
@@ -1,17 +0,0 @@
-background=YES
-listen=YES
-anonymous_enable=NO
-local_enable=YES
-write_enable=YES
-local_umask=022
-check_shell=NO
-#dirmessage_enable=YES
-#ftpd_banner=Welcome to blah FTP service.
-session_support=NO
-#syslog_enable=YES
-#userlist_enable=YES
-#userlist_deny=NO
-#userlist_file=/etc/vsftpd.users
-#xferlog_enable=YES
-#xferlog_file=/var/log/vsftpd.log
-#xferlog_std_format=YES
diff --git a/openwrt/package/vsftpd/files/vsftpd.init b/openwrt/package/vsftpd/files/vsftpd.init
deleted file mode 100644
index 4d4f4f240d..0000000000
--- a/openwrt/package/vsftpd/files/vsftpd.init
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-RUN_D=/var/run/vsftpd
-
-case $1 in
- start)
- [ -d $RUN_D ] || mkdir -p $RUN_D
- vsftpd
- ;;
- *)
- echo "usage: $0 (start)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/vsftpd/ipkg/vsftpd.conffiles b/openwrt/package/vsftpd/ipkg/vsftpd.conffiles
deleted file mode 100644
index 45632cf311..0000000000
--- a/openwrt/package/vsftpd/ipkg/vsftpd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/vsftpd.conf
diff --git a/openwrt/package/vsftpd/ipkg/vsftpd.control b/openwrt/package/vsftpd/ipkg/vsftpd.control
deleted file mode 100644
index 6c7e49039b..0000000000
--- a/openwrt/package/vsftpd/ipkg/vsftpd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: vsftpd
-Priority: optional
-Section: net
-Description: a fast and secure FTP server
diff --git a/openwrt/package/vsftpd/patches/chroot.patch b/openwrt/package/vsftpd/patches/chroot.patch
deleted file mode 100644
index e80d1377b3..0000000000
--- a/openwrt/package/vsftpd/patches/chroot.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- vsftpd-2.0.4-orig/tunables.c 2006-01-07 20:32:44.000000000 +0100
-+++ vsftpd-2.0.4/tunables.c 2006-01-11 18:25:15.000000000 +0100
-@@ -92,7 +92,7 @@
- unsigned int tunable_max_per_ip = 0;
- unsigned int tunable_trans_chunk_size = 0;
-
--const char* tunable_secure_chroot_dir = "/usr/share/empty";
-+const char* tunable_secure_chroot_dir = "/var/run/vsftpd";
- const char* tunable_ftp_username = "ftp";
- const char* tunable_chown_username = "root";
- const char* tunable_xferlog_file = "/var/log/xferlog";
diff --git a/openwrt/package/vsftpd/patches/destdir.patch b/openwrt/package/vsftpd/patches/destdir.patch
deleted file mode 100644
index 13f3954753..0000000000
--- a/openwrt/package/vsftpd/patches/destdir.patch
+++ /dev/null
@@ -1,47 +0,0 @@
---- vsftpd-2.0.4-orig/Makefile 2005-06-29 00:24:03.000000000 +0200
-+++ vsftpd-2.0.4/Makefile 2006-01-11 18:29:12.000000000 +0100
-@@ -17,6 +17,8 @@
- ssl.o sysutil.o sysdeputil.o
-
-
-+DESTDIR =
-+
- .c.o:
- $(CC) -c $*.c $(CFLAGS) $(IFLAGS)
-
-@@ -24,21 +26,20 @@
- $(CC) -o vsftpd $(OBJS) $(LINK) $(LIBS) $(LDFLAGS)
-
- install:
-- if [ -x /usr/local/sbin ]; then \
-- $(INSTALL) -m 755 vsftpd /usr/local/sbin/vsftpd; \
-- else \
-- $(INSTALL) -m 755 vsftpd /usr/sbin/vsftpd; fi
-- if [ -x /usr/local/man ]; then \
-- $(INSTALL) -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \
-- $(INSTALL) -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; \
-- elif [ -x /usr/share/man ]; then \
-- $(INSTALL) -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \
-- $(INSTALL) -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5; \
-- else \
-- $(INSTALL) -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \
-- $(INSTALL) -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi
-- if [ -x /etc/xinetd.d ]; then \
-- $(INSTALL) -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi
-+ mkdir -p $(DESTDIR)/usr/sbin
-+ $(INSTALL) -m 755 vsftpd $(DESTDIR)/usr/sbin/
-+ mkdir -p $(DESTDIR)/usr/share/man/man8
-+ $(INSTALL) -m 644 vsftpd.8 $(DESTDIR)/usr/share/man/man8/
-+ mkdir -p $(DESTDIR)/usr/share/man/man5
-+ $(INSTALL) -m 644 vsftpd.conf.5 $(DESTDIR)/usr/share/man/man5/
-+ mkdir -p $(DESTDIR)/etc/xinetd.d
-+ $(INSTALL) -m 644 xinetd.d/vsftpd $(DESTDIR)/etc/xinetd.d/
-+
-+uninstall:
-+ rm -f $(DESTDIR)/usr/sbin/vsftpd
-+ rm -f $(DESTDIR)/usr/share/man/man8/vsftpd.8
-+ rm -f $(DESTDIR)/usr/share/man/man5/vsftpd.conf.5
-+ rm -f $(DESTDIR)/etc/xinetd.d/vsftpd
-
- clean:
- rm -f *.o *.swp vsftpd
diff --git a/openwrt/package/vsftpd/patches/find-libs.patch b/openwrt/package/vsftpd/patches/find-libs.patch
deleted file mode 100644
index ae8e9f7dbf..0000000000
--- a/openwrt/package/vsftpd/patches/find-libs.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -ruN vsftpd-1.2.2-orig/Makefile vsftpd-1.2.2-3/Makefile
---- vsftpd-1.2.2-orig/Makefile 2003-09-15 13:41:58.000000000 +0200
-+++ vsftpd-1.2.2-3/Makefile 2005-03-09 22:23:12.000000000 +0100
-@@ -5,8 +5,8 @@
- #CFLAGS = -g
- CFLAGS = -O2 -Wall -W -Wshadow #-pedantic -Werror -Wconversion
-
--LIBS = `./vsf_findlibs.sh`
--LINK = -Wl,-s
-+LIBS = -lcrypt -lnsl
-+LINK =
-
- OBJS = main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o \
- tunables.o ftpdataio.o secbuf.o ls.o \
diff --git a/openwrt/package/vtun/Config.in b/openwrt/package/vtun/Config.in
deleted file mode 100644
index c2fa9f50b0..0000000000
--- a/openwrt/package/vtun/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_VTUN
- prompt "vtun.............................. VPN tunneling daemon"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBLZO
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_ZLIB
- help
- A VPN tunneling daemon
-
- http://vtun.sourceforge.net
-
diff --git a/openwrt/package/vtun/Makefile b/openwrt/package/vtun/Makefile
deleted file mode 100644
index 306c25d3fe..0000000000
--- a/openwrt/package/vtun/Makefile
+++ /dev/null
@@ -1,63 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=vtun
-PKG_VERSION:=2.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=309534fd03c5d13a19c43916f61f4bbf
-
-PKG_SOURCE_URL:=@SF/vtun
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,VTUN,vtun,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR) ; rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LIBS="-L$(STAGING_DIR)/usr/lib" \
- BLOWFISH_HDR_DIR="$(STAGING_DIR)/usr/include/openssl" \
- LZO_HDR_DIR="$(STAGING_DIR)/usr/include" \
- SSL_HDR_DIR="$(STAGING_DIR)/usr/include/openssl" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- vtund
- touch $@
-
-$(IPKG_VTUN):
- install -m0755 -d $(IDIR_VTUN)/etc
- install -m0600 $(PKG_BUILD_DIR)/vtund.conf $(IDIR_VTUN)/etc/
- install -m0755 -d $(IDIR_VTUN)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/vtund $(IDIR_VTUN)/usr/sbin/
- $(RSTRIP) $(IDIR_VTUN)
- $(IPKG_BUILD) $(IDIR_VTUN) $(PACKAGE_DIR)
diff --git a/openwrt/package/vtun/ipkg/vtun.conffiles b/openwrt/package/vtun/ipkg/vtun.conffiles
deleted file mode 100644
index 1195041c56..0000000000
--- a/openwrt/package/vtun/ipkg/vtun.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/vtund.conf
diff --git a/openwrt/package/vtun/ipkg/vtun.control b/openwrt/package/vtun/ipkg/vtun.control
deleted file mode 100644
index 6d823de1e4..0000000000
--- a/openwrt/package/vtun/ipkg/vtun.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: vtun
-Priority: optional
-Section: net
-Description: A VPN tunnel daemon
-Depends: libopenssl, liblzo, zlib, kmod-tun
diff --git a/openwrt/package/wakelan/Config.in b/openwrt/package/wakelan/Config.in
deleted file mode 100644
index f724fd0a1c..0000000000
--- a/openwrt/package/wakelan/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_WAKELAN
- prompt "wakelan........................... Send a wake-on-lan packet"
- tristate
- default m if CONFIG_DEVEL
- help
- WakeLan sends a properly formatted UDP packet across the network
- which will cause a wake-on-lan enabled computer to power on.
diff --git a/openwrt/package/wakelan/Makefile b/openwrt/package/wakelan/Makefile
deleted file mode 100644
index 553471fe73..0000000000
--- a/openwrt/package/wakelan/Makefile
+++ /dev/null
@@ -1,64 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wakelan
-PKG_VERSION:=1.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=4a3a31d874967cd6ac761b7d4323e0d5
-
-PKG_SOURCE_URL:=ftp://metalab.unc.edu/pub/Linux/system/network/misc
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WAKELAN,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --without-libiconv-prefix \
- --without-libintl-prefix \
- --disable-nls \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) all
- touch $@
-
-$(IPKG_WAKELAN):
- install -d -m0755 $(IDIR_WAKELAN)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/wakelan $(IDIR_WAKELAN)/usr/bin/
- $(RSTRIP) $(IDIR_WAKELAN)
- $(IPKG_BUILD) $(IDIR_WAKELAN) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/wakelan/ipkg/wakelan.control b/openwrt/package/wakelan/ipkg/wakelan.control
deleted file mode 100644
index aa67ec9b9b..0000000000
--- a/openwrt/package/wakelan/ipkg/wakelan.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: wakelan
-Priority: optional
-Section: net
-Description: Send a wake-on-lan packet
diff --git a/openwrt/package/watchdog/Config.in b/openwrt/package/watchdog/Config.in
deleted file mode 100644
index 5827fda995..0000000000
--- a/openwrt/package/watchdog/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_WATCHDOG
- prompt "watchdog.......................... configurable watchdog"
- tristate
- default m if CONFIG_DEVEL
- help
- watchdog
-
diff --git a/openwrt/package/watchdog/Makefile b/openwrt/package/watchdog/Makefile
deleted file mode 100644
index 415fc40ca7..0000000000
--- a/openwrt/package/watchdog/Makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=watchdog
-PKG_VERSION:=5.2.4
-PKG_RELEASE:=1
-PKG_MD5SUM:=c6ac132d92110eb2c4670d4f684105c3
-
-PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/w/watchdog
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION).orig
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WATCHDOG,watchdog,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CCOPT="$(TARGET_CFLAGS)" \
- INCLS="-I. -I$(STAGING_DIR)/usr/include" \
- LIBS="-L$(STAGING_DIR)/usr/lib" \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_WATCHDOG):
- install -d -m0755 $(IDIR_WATCHDOG)/etc
- $(CP) $(PKG_INSTALL_DIR)/etc/watchdog.conf $(IDIR_WATCHDOG)/etc/
- install -d -m0755 $(IDIR_WATCHDOG)/etc/init.d
- install -m0755 ./files/watchdog.init $(IDIR_WATCHDOG)/etc/init.d/watchdog
- ln -sf watchdog $(IDIR_WATCHDOG)/etc/init.d/S90watchdog
- install -d -m0755 $(IDIR_WATCHDOG)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/watchdog $(IDIR_WATCHDOG)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/wd_keepalive $(IDIR_WATCHDOG)/usr/sbin/
- $(RSTRIP) $(IDIR_WATCHDOG)
- $(IPKG_BUILD) $(IDIR_WATCHDOG) $(PACKAGE_DIR)
diff --git a/openwrt/package/watchdog/files/watchdog.init b/openwrt/package/watchdog/files/watchdog.init
deleted file mode 100644
index 8a45df92d0..0000000000
--- a/openwrt/package/watchdog/files/watchdog.init
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-RUN_D=/var/run
-PID_F=$RUN_D/watchdog.pid
-
-case $1 in
- start)
- /usr/sbin/watchdog
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F) >/dev/null 2>&1
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/watchdog/ipkg/watchdog.conffiles b/openwrt/package/watchdog/ipkg/watchdog.conffiles
deleted file mode 100644
index 3ef13592a0..0000000000
--- a/openwrt/package/watchdog/ipkg/watchdog.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/watchdog.conf
diff --git a/openwrt/package/watchdog/ipkg/watchdog.control b/openwrt/package/watchdog/ipkg/watchdog.control
deleted file mode 100644
index 1cde1974e6..0000000000
--- a/openwrt/package/watchdog/ipkg/watchdog.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: watchdog
-Priority: opt
-Section: sys
-Description: watchdog
diff --git a/openwrt/package/watchdog/patches/01-fstab-sys_siglist.patch b/openwrt/package/watchdog/patches/01-fstab-sys_siglist.patch
deleted file mode 100644
index a71ca5951c..0000000000
--- a/openwrt/package/watchdog/patches/01-fstab-sys_siglist.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- watchdog-5.2.4.orig.orig/src/fstab.c 2003-01-28 07:47:38.000000000 +0100
-+++ watchdog-5.2.4.orig/src/fstab.c 2005-12-29 20:05:47.859043112 +0100
-@@ -237,7 +237,7 @@
- /* Ensure that the lock is released if we are interrupted. */
- static void
- handler (int sig) {
-- die (EX_USER, "%s", sys_siglist[sig]);
-+ die (EX_USER, "%s", "sys_siglist[sig]");
- }
-
- static void
diff --git a/openwrt/package/wccpd/Config.in b/openwrt/package/wccpd/Config.in
deleted file mode 100644
index ed219ed5f7..0000000000
--- a/openwrt/package/wccpd/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_WCCPD
- prompt "wccpd............................. a Web Cache Coordination daemon"
- tristate
- default m if CONFIG_DEVEL
- help
- wccpd is a WCCP (Web Cache Coordination Protocol) server daemon
- It allows a router (running Linux) to redirect web traffic to a
- group of Squid servers using WCCP as the monitoring/controling
- protocol.
-
- http://wccpd.sourceforge.net/
diff --git a/openwrt/package/wccpd/Makefile b/openwrt/package/wccpd/Makefile
deleted file mode 100644
index 0ecb34e1b4..0000000000
--- a/openwrt/package/wccpd/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wccpd
-PKG_VERSION:=0.2
-PKG_RELEASE:=1
-PKG_MD5SUM:=5f15c274de61dfb88e0dbfc1ccbe6b67
-
-PKG_SOURCE_URL:=@SF/wccpd
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WCCPD,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAAGING_DIR)/lib" \
- ac_cv_func_setpgrp_void=yes \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- --with-gnu-ld \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR=$(PKG_INSTALL_DIR) \
- all install
- touch $@
-
-$(IPKG_WCCPD):
- install -d -m0755 $(IDIR_WCCPD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/wccpd $(IDIR_WCCPD)/usr/sbin/
- $(RSTRIP) $(IDIR_WCCPD)
- $(IPKG_BUILD) $(IDIR_WCCPD) $(PACKAGE_DIR)
diff --git a/openwrt/package/wccpd/ipkg/wccpd.control b/openwrt/package/wccpd/ipkg/wccpd.control
deleted file mode 100644
index e62539a7d5..0000000000
--- a/openwrt/package/wccpd/ipkg/wccpd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: wccpd
-Priority: optional
-Section: net
-Description: A WCCP (Web Cache Coordination Protocol) server daemon
diff --git a/openwrt/package/weechat/Config.in b/openwrt/package/weechat/Config.in
deleted file mode 100644
index 79d0161e07..0000000000
--- a/openwrt/package/weechat/Config.in
+++ /dev/null
@@ -1,25 +0,0 @@
-menu "weechat........................... Lightweight IRC client"
-
-config BR2_PACKAGE_WEECHAT
- prompt "weechat.......................... Lightweight IRC client"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBNCURSES
- help
- Fast, light & extensible IRC client
-
- http://weechat.flashtux.org
-
-config BR2_COMPILE_WEECHAT_WITH_TLS
- prompt "Enable TLS support"
- bool
- select BR2_PACKAGE_LIBGNUTLS
- depends BR2_PACKAGE_WEECHAT
-
-config BR2_COMPILE_WEECHAT_WITH_LUA
- prompt "Enable LUA scripting"
- bool
- select BR2_PACKAGE_LIBLUA
- depends BR2_PACKAGE_WEECHAT
-
-endmenu
diff --git a/openwrt/package/weechat/Makefile b/openwrt/package/weechat/Makefile
deleted file mode 100644
index 35ddae5706..0000000000
--- a/openwrt/package/weechat/Makefile
+++ /dev/null
@@ -1,76 +0,0 @@
-# $Id: buildroot-documentation.html,v 1.7.4.3 2005/09/04 10:44:06 wbx Exp $
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=weechat
-PKG_VERSION:=0.1.8
-PKG_RELEASE:=1
-PKG_MD5SUM:=73d6bc211ac32c597f0d278506480a20
-
-PKG_SOURCE_URL:=http://weechat.flashtux.org/download/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WEECHAT,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-PKG_DEPEND:=libncurses
-
-ifeq ($(BR2_COMPILE_WEECHAT_WITH_TLS),y)
-ENABLE_TLS:=--with-libgnutls-prefix=$(STAGING_DIR)/usr
-PKG_DEPEND += , gnutls
-else
-ENABLE_TLS:=--disable-gnutls
-endif
-
-ifneq ($(BR2_COMPILE_WEECHAT_WITH_LUA),y)
-DISABLE_LUA:=--disable-lua
-else
-PKG_DEPEND+=, liblua
-endif
-
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --sysconfdir=/etc \
- --disable-nls \
- $(ENABLE_TLS) \
- --with-debug=0 \
- --disable-perl \
- --disable-python \
- --disable-ruby \
- $(DISABLE_LUA) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_WEECHAT):
- install -d -m0755 $(IDIR_WEECHAT)/usr/bin
- cp -fpR $(PKG_INSTALL_DIR)/usr/bin/weechat-curses $(IDIR_WEECHAT)/usr/bin
- echo "Depends: $(PKG_DEPEND)" >> $(IDIR_WEECHAT)/CONTROL/control
- $(RSTRIP) $(IDIR_WEECHAT)
- $(IPKG_BUILD) $(IDIR_WEECHAT) $(PACKAGE_DIR)
-
-mostlyclean:
- make -C $(PKG_BUILD_DIR) clean
- rm $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/weechat/ipkg/weechat.control b/openwrt/package/weechat/ipkg/weechat.control
deleted file mode 100644
index 81a2bec6ca..0000000000
--- a/openwrt/package/weechat/ipkg/weechat.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: weechat
-Section: net
-Priority: optional
-Description: Lightweight IRC client
diff --git a/openwrt/package/wificonf/Config.in b/openwrt/package/wificonf/Config.in
deleted file mode 100644
index 410f33107d..0000000000
--- a/openwrt/package/wificonf/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_WIFICONF
- prompt "wificonf.......................... replacement utility for wlconf"
- tristate
- default y
- depends BR2_PACKAGE_NVRAM
- help
- Replacement utility for wlconf
-
diff --git a/openwrt/package/wificonf/Makefile b/openwrt/package/wificonf/Makefile
deleted file mode 100644
index 5f8c9a03a6..0000000000
--- a/openwrt/package/wificonf/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wificonf
-PKG_RELEASE:=5
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/wificonf
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WIFICONF,$(PKG_NAME),$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.prepared:
- mkdir -p $@
- touch $@
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(TARGET_CC) $(TARGET_CFLAGS) -Iinclude/ -I$(STAGING_DIR)/usr/include -o $(PKG_BUILD_DIR)/wifi wificonf.c -L$(STAGING_DIR)/usr/lib -lnvram -lshared $(STAGING_DIR)/usr/lib/libiw.so
- touch $@
-
-$(IPKG_WIFICONF):
- install -d -m0755 $(IDIR_WIFICONF)/sbin
- install -m0755 $(PKG_BUILD_DIR)/wifi $(IDIR_WIFICONF)/sbin/
- $(RSTRIP) $(IDIR_WIFICONF)
- $(IPKG_BUILD) $(IDIR_WIFICONF) $(PACKAGE_DIR)
diff --git a/openwrt/package/wificonf/include/proto/802.11.h b/openwrt/package/wificonf/include/proto/802.11.h
deleted file mode 100644
index ac2b898e2e..0000000000
--- a/openwrt/package/wificonf/include/proto/802.11.h
+++ /dev/null
@@ -1,930 +0,0 @@
-/*
- * Copyright 2005, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- * Fundamental types and constants relating to 802.11
- *
- * $Id$
- */
-
-#ifndef _802_11_H_
-#define _802_11_H_
-
-#ifndef _TYPEDEFS_H_
-#include <typedefs.h>
-#endif
-
-#ifndef _NET_ETHERNET_H_
-#include <proto/ethernet.h>
-#endif
-
-#include <proto/wpa.h>
-
-
-/* enable structure packing */
-#if defined(__GNUC__)
-#define PACKED __attribute__((packed))
-#else
-#pragma pack(1)
-#define PACKED
-#endif
-
-#define DOT11_TU_TO_US 1024 /* 802.11 Time Unit is 1024 microseconds */
-
-/* Generic 802.11 frame constants */
-#define DOT11_A3_HDR_LEN 24
-#define DOT11_A4_HDR_LEN 30
-#define DOT11_MAC_HDR_LEN DOT11_A3_HDR_LEN
-#define DOT11_FCS_LEN 4
-#define DOT11_ICV_LEN 4
-#define DOT11_ICV_AES_LEN 8
-#define DOT11_QOS_LEN 2
-
-#define DOT11_KEY_INDEX_SHIFT 6
-#define DOT11_IV_LEN 4
-#define DOT11_IV_TKIP_LEN 8
-#define DOT11_IV_AES_OCB_LEN 4
-#define DOT11_IV_AES_CCM_LEN 8
-
-/* Includes MIC */
-#define DOT11_MAX_MPDU_BODY_LEN 2304
-/* A4 header + QoS + CCMP + PDU + ICV + FCS = 2352 */
-#define DOT11_MAX_MPDU_LEN (DOT11_A4_HDR_LEN + \
- DOT11_QOS_LEN + \
- DOT11_IV_AES_CCM_LEN + \
- DOT11_MAX_MPDU_BODY_LEN + \
- DOT11_ICV_LEN + \
- DOT11_FCS_LEN)
-
-#define DOT11_MAX_SSID_LEN 32
-
-/* dot11RTSThreshold */
-#define DOT11_DEFAULT_RTS_LEN 2347
-#define DOT11_MAX_RTS_LEN 2347
-
-/* dot11FragmentationThreshold */
-#define DOT11_MIN_FRAG_LEN 256
-#define DOT11_MAX_FRAG_LEN 2346 /* Max frag is also limited by aMPDUMaxLength of the attached PHY */
-#define DOT11_DEFAULT_FRAG_LEN 2346
-
-/* dot11BeaconPeriod */
-#define DOT11_MIN_BEACON_PERIOD 1
-#define DOT11_MAX_BEACON_PERIOD 0xFFFF
-
-/* dot11DTIMPeriod */
-#define DOT11_MIN_DTIM_PERIOD 1
-#define DOT11_MAX_DTIM_PERIOD 0xFF
-
-/* 802.2 LLC/SNAP header used by 802.11 per 802.1H */
-#define DOT11_LLC_SNAP_HDR_LEN 8
-#define DOT11_OUI_LEN 3
-struct dot11_llc_snap_header {
- uint8 dsap; /* always 0xAA */
- uint8 ssap; /* always 0xAA */
- uint8 ctl; /* always 0x03 */
- uint8 oui[DOT11_OUI_LEN]; /* RFC1042: 0x00 0x00 0x00
- Bridge-Tunnel: 0x00 0x00 0xF8 */
- uint16 type; /* ethertype */
-} PACKED;
-
-/* RFC1042 header used by 802.11 per 802.1H */
-#define RFC1042_HDR_LEN (ETHER_HDR_LEN + DOT11_LLC_SNAP_HDR_LEN)
-
-/* Generic 802.11 MAC header */
-/*
- * N.B.: This struct reflects the full 4 address 802.11 MAC header.
- * The fields are defined such that the shorter 1, 2, and 3
- * address headers just use the first k fields.
- */
-struct dot11_header {
- uint16 fc; /* frame control */
- uint16 durid; /* duration/ID */
- struct ether_addr a1; /* address 1 */
- struct ether_addr a2; /* address 2 */
- struct ether_addr a3; /* address 3 */
- uint16 seq; /* sequence control */
- struct ether_addr a4; /* address 4 */
-} PACKED;
-
-/* Control frames */
-
-struct dot11_rts_frame {
- uint16 fc; /* frame control */
- uint16 durid; /* duration/ID */
- struct ether_addr ra; /* receiver address */
- struct ether_addr ta; /* transmitter address */
-} PACKED;
-#define DOT11_RTS_LEN 16
-
-struct dot11_cts_frame {
- uint16 fc; /* frame control */
- uint16 durid; /* duration/ID */
- struct ether_addr ra; /* receiver address */
-} PACKED;
-#define DOT11_CTS_LEN 10
-
-struct dot11_ack_frame {
- uint16 fc; /* frame control */
- uint16 durid; /* duration/ID */
- struct ether_addr ra; /* receiver address */
-} PACKED;
-#define DOT11_ACK_LEN 10
-
-struct dot11_ps_poll_frame {
- uint16 fc; /* frame control */
- uint16 durid; /* AID */
- struct ether_addr bssid; /* receiver address, STA in AP */
- struct ether_addr ta; /* transmitter address */
-} PACKED;
-#define DOT11_PS_POLL_LEN 16
-
-struct dot11_cf_end_frame {
- uint16 fc; /* frame control */
- uint16 durid; /* duration/ID */
- struct ether_addr ra; /* receiver address */
- struct ether_addr bssid; /* transmitter address, STA in AP */
-} PACKED;
-#define DOT11_CS_END_LEN 16
-
-/* Management frame header */
-struct dot11_management_header {
- uint16 fc; /* frame control */
- uint16 durid; /* duration/ID */
- struct ether_addr da; /* receiver address */
- struct ether_addr sa; /* transmitter address */
- struct ether_addr bssid; /* BSS ID */
- uint16 seq; /* sequence control */
-} PACKED;
-#define DOT11_MGMT_HDR_LEN 24
-
-/* Management frame payloads */
-
-struct dot11_bcn_prb {
- uint32 timestamp[2];
- uint16 beacon_interval;
- uint16 capability;
-} PACKED;
-#define DOT11_BCN_PRB_LEN 12
-
-struct dot11_auth {
- uint16 alg; /* algorithm */
- uint16 seq; /* sequence control */
- uint16 status; /* status code */
-} PACKED;
-#define DOT11_AUTH_FIXED_LEN 6 /* length of auth frame without challenge info elt */
-
-struct dot11_assoc_req {
- uint16 capability; /* capability information */
- uint16 listen; /* listen interval */
-} PACKED;
-#define DOT11_ASSOC_REQ_FIXED_LEN 4 /* length of assoc frame without info elts */
-
-struct dot11_reassoc_req {
- uint16 capability; /* capability information */
- uint16 listen; /* listen interval */
- struct ether_addr ap; /* Current AP address */
-} PACKED;
-#define DOT11_REASSOC_REQ_FIXED_LEN 10 /* length of assoc frame without info elts */
-
-struct dot11_assoc_resp {
- uint16 capability; /* capability information */
- uint16 status; /* status code */
- uint16 aid; /* association ID */
-} PACKED;
-
-struct dot11_action_measure {
- uint8 category;
- uint8 action;
- uint8 token;
- uint8 data[1];
-} PACKED;
-#define DOT11_ACTION_MEASURE_LEN 3
-
-struct dot11_action_switch_channel {
- uint8 category;
- uint8 action;
- uint8 data[5]; /* for switch IE */
-} PACKED;
-
-/**************
- 802.11h related definitions.
-**************/
-typedef struct {
- uint8 id;
- uint8 len;
- uint8 power;
-} dot11_power_cnst_t;
-
-typedef struct {
- uint8 min;
- uint8 max;
-} dot11_power_cap_t;
-
-typedef struct {
- uint8 id;
- uint8 len;
- uint8 tx_pwr;
- uint8 margin;
-} dot11_tpc_rep_t;
-#define DOT11_MNG_IE_TPC_REPORT_LEN 2 /* length of IE data, not including 2 byte header */
-
-typedef struct {
- uint8 id;
- uint8 len;
- uint8 first_channel;
- uint8 num_channels;
-} dot11_supp_channels_t;
-
-/* csa mode type */
-#define DOT11_CSA_MODE_ADVISORY 0
-#define DOT11_CSA_MODE_NO_TX 1
-struct dot11_channel_switch {
- uint8 id;
- uint8 len;
- uint8 mode;
- uint8 channel;
- uint8 count;
-} PACKED;
-typedef struct dot11_channel_switch dot11_channel_switch_t;
-
-/* length of IE data, not including 2 byte header */
-#define DOT11_SWITCH_IE_LEN 3
-
-/* 802.11h Measurement Request/Report IEs */
-/* Measurement Type field */
-#define DOT11_MEASURE_TYPE_BASIC 0
-#define DOT11_MEASURE_TYPE_CCA 1
-#define DOT11_MEASURE_TYPE_RPI 2
-
-/* Measurement Mode field */
-
-/* Measurement Request Modes */
-#define DOT11_MEASURE_MODE_ENABLE (1<<1)
-#define DOT11_MEASURE_MODE_REQUEST (1<<2)
-#define DOT11_MEASURE_MODE_REPORT (1<<3)
-/* Measurement Report Modes */
-#define DOT11_MEASURE_MODE_LATE (1<<0)
-#define DOT11_MEASURE_MODE_INCAPABLE (1<<1)
-#define DOT11_MEASURE_MODE_REFUSED (1<<2)
-/* Basic Measurement Map bits */
-#define DOT11_MEASURE_BASIC_MAP_BSS ((uint8)(1<<0))
-#define DOT11_MEASURE_BASIC_MAP_OFDM ((uint8)(1<<1))
-#define DOT11_MEASURE_BASIC_MAP_UKNOWN ((uint8)(1<<2))
-#define DOT11_MEASURE_BASIC_MAP_RADAR ((uint8)(1<<3))
-#define DOT11_MEASURE_BASIC_MAP_UNMEAS ((uint8)(1<<4))
-
-typedef struct {
- uint8 id;
- uint8 len;
- uint8 token;
- uint8 mode;
- uint8 type;
- uint8 channel;
- uint8 start_time[8];
- uint16 duration;
-} dot11_meas_req_t;
-#define DOT11_MNG_IE_MREQ_LEN 14
-/* length of Measure Request IE data not including variable len */
-#define DOT11_MNG_IE_MREQ_FIXED_LEN 3
-
-struct dot11_meas_rep {
- uint8 id;
- uint8 len;
- uint8 token;
- uint8 mode;
- uint8 type;
- union
- {
- struct {
- uint8 channel;
- uint8 start_time[8];
- uint16 duration;
- uint8 map;
- } PACKED basic;
- uint8 data[1];
- } PACKED rep;
-} PACKED;
-typedef struct dot11_meas_rep dot11_meas_rep_t;
-
-/* length of Measure Report IE data not including variable len */
-#define DOT11_MNG_IE_MREP_FIXED_LEN 3
-
-struct dot11_meas_rep_basic {
- uint8 channel;
- uint8 start_time[8];
- uint16 duration;
- uint8 map;
-} PACKED;
-typedef struct dot11_meas_rep_basic dot11_meas_rep_basic_t;
-#define DOT11_MEASURE_BASIC_REP_LEN 12
-
-struct dot11_quiet {
- uint8 id;
- uint8 len;
- uint8 count; /* TBTTs until beacon interval in quiet starts */
- uint8 period; /* Beacon intervals between periodic quiet periods ? */
- uint16 duration;/* Length of quiet period, in TU's */
- uint16 offset; /* TU's offset from TBTT in Count field */
-} PACKED;
-typedef struct dot11_quiet dot11_quiet_t;
-
-typedef struct {
- uint8 channel;
- uint8 map;
-} chan_map_tuple_t;
-
-typedef struct {
- uint8 id;
- uint8 len;
- uint8 eaddr[ETHER_ADDR_LEN];
- uint8 interval;
- chan_map_tuple_t map[1];
-} dot11_ibss_dfs_t;
-
-/* WME Elements */
-#define WME_OUI "\x00\x50\xf2"
-#define WME_VER 1
-#define WME_TYPE 2
-#define WME_SUBTYPE_IE 0 /* Information Element */
-#define WME_SUBTYPE_PARAM_IE 1 /* Parameter Element */
-#define WME_SUBTYPE_TSPEC 2 /* Traffic Specification */
-
-/* WME Access Category Indices (ACIs) */
-#define AC_BE 0 /* Best Effort */
-#define AC_BK 1 /* Background */
-#define AC_VI 2 /* Video */
-#define AC_VO 3 /* Voice */
-#define AC_MAX 4
-
-/* WME Information Element (IE) */
-struct wme_ie {
- uint8 oui[3];
- uint8 type;
- uint8 subtype;
- uint8 version;
- uint8 acinfo;
-} PACKED;
-typedef struct wme_ie wme_ie_t;
-#define WME_IE_LEN 7
-
-struct wme_acparam {
- uint8 ACI;
- uint8 ECW;
- uint16 TXOP; /* stored in network order (ls octet first) */
-} PACKED;
-typedef struct wme_acparam wme_acparam_t;
-
-/* WME Parameter Element (PE) */
-struct wme_params {
- uint8 oui[3];
- uint8 type;
- uint8 subtype;
- uint8 version;
- uint8 acinfo;
- uint8 rsvd;
- wme_acparam_t acparam[4];
-} PACKED;
-typedef struct wme_params wme_params_t;
-#define WME_PARAMS_IE_LEN 24
-
-/* acinfo */
-#define WME_COUNT_MASK 0x0f
-/* ACI */
-#define WME_AIFS_MASK 0x0f
-#define WME_ACM_MASK 0x10
-#define WME_ACI_MASK 0x60
-#define WME_ACI_SHIFT 5
-/* ECW */
-#define WME_CWMIN_MASK 0x0f
-#define WME_CWMAX_MASK 0xf0
-#define WME_CWMAX_SHIFT 4
-
-#define WME_TXOP_UNITS 32
-
-/* AP: default params to be announced in the Beacon Frames/Probe Responses Table 12 WME Draft*/
-/* AP: default params to be Used in the AP Side Table 14 WME Draft January 2004 802.11-03-504r5 */
-#define WME_AC_BK_ACI_STA 0x27
-#define WME_AC_BK_ECW_STA 0xA4
-#define WME_AC_BK_TXOP_STA 0x0000
-#define WME_AC_BE_ACI_STA 0x03
-#define WME_AC_BE_ECW_STA 0xA4
-#define WME_AC_BE_TXOP_STA 0x0000
-#define WME_AC_VI_ACI_STA 0x42
-#define WME_AC_VI_ECW_STA 0x43
-#define WME_AC_VI_TXOP_STA 0x005e
-#define WME_AC_VO_ACI_STA 0x62
-#define WME_AC_VO_ECW_STA 0x32
-#define WME_AC_VO_TXOP_STA 0x002f
-
-#define WME_AC_BK_ACI_AP 0x27
-#define WME_AC_BK_ECW_AP 0xA4
-#define WME_AC_BK_TXOP_AP 0x0000
-#define WME_AC_BE_ACI_AP 0x03
-#define WME_AC_BE_ECW_AP 0x64
-#define WME_AC_BE_TXOP_AP 0x0000
-#define WME_AC_VI_ACI_AP 0x41
-#define WME_AC_VI_ECW_AP 0x43
-#define WME_AC_VI_TXOP_AP 0x005e
-#define WME_AC_VO_ACI_AP 0x61
-#define WME_AC_VO_ECW_AP 0x32
-#define WME_AC_VO_TXOP_AP 0x002f
-
-/* WME Traffic Specification (TSPEC) element */
-#define WME_SUBTYPE_TSPEC 2
-#define WME_TSPEC_HDR_LEN 2
-#define WME_TSPEC_BODY_OFF 2
-struct wme_tspec {
- uint8 oui[DOT11_OUI_LEN]; /* WME_OUI */
- uint8 type; /* WME_TYPE */
- uint8 subtype; /* WME_SUBTYPE_TSPEC */
- uint8 version; /* WME_VERSION */
- uint16 ts_info; /* TS Info */
- uint16 nom_msdu_size; /* (Nominal or fixed) MSDU Size (bytes) */
- uint16 max_msdu_size; /* Maximum MSDU Size (bytes) */
- uint32 min_service_interval; /* Minimum Service Interval (us) */
- uint32 max_service_interval; /* Maximum Service Interval (us) */
- uint32 inactivity_interval; /* Inactivity Interval (us) */
- uint32 service_start; /* Service Start Time (us) */
- uint32 min_rate; /* Minimum Data Rate (bps) */
- uint32 mean_rate; /* Mean Data Rate (bps) */
- uint32 max_burst_size; /* Maximum Burst Size (bytes) */
- uint32 min_phy_rate; /* Minimum PHY Rate (bps) */
- uint32 peak_rate; /* Peak Data Rate (bps) */
- uint32 delay_bound; /* Delay Bound (us) */
- uint16 surplus_bandwidth; /* Surplus Bandwidth Allowance Factor */
- uint16 medium_time; /* Medium Time (32 us/s periods) */
-} PACKED;
-typedef struct wme_tspec wme_tspec_t;
-#define WME_TSPEC_LEN 56 /* not including 2-byte header */
-
-/* ts_info */
-/* 802.1D priority is duplicated - bits 13-11 AND bits 3-1 */
-#define TS_INFO_PRIO_SHIFT_HI 11
-#define TS_INFO_PRIO_MASK_HI (0x7 << TS_INFO_PRIO_SHIFT_HI)
-#define TS_INFO_PRIO_SHIFT_LO 1
-#define TS_INFO_PRIO_MASK_LO (0x7 << TS_INFO_PRIO_SHIFT_LO)
-#define TS_INFO_CONTENTION_SHIFT 7
-#define TS_INFO_CONTENTION_MASK (0x1 << TS_INFO_CONTENTION_SHIFT)
-#define TS_INFO_DIRECTION_SHIFT 5
-#define TS_INFO_DIRECTION_MASK (0x3 << TS_INFO_DIRECTION_SHIFT)
-#define TS_INFO_UPLINK (0 << TS_INFO_DIRECTION_SHIFT)
-#define TS_INFO_DOWNLINK (1 << TS_INFO_DIRECTION_SHIFT)
-#define TS_INFO_BIDIRECTIONAL (3 << TS_INFO_DIRECTION_SHIFT)
-
-/* nom_msdu_size */
-#define FIXED_MSDU_SIZE 0x8000 /* MSDU size is fixed */
-#define MSDU_SIZE_MASK 0x7fff /* (Nominal or fixed) MSDU size */
-
-/* surplus_bandwidth */
-/* Represented as 3 bits of integer, binary point, 13 bits fraction */
-#define INTEGER_SHIFT 13
-#define FRACTION_MASK 0x1FFF
-
-/* Management Notification Frame */
-struct dot11_management_notification {
- uint8 category; /* DOT11_ACTION_NOTIFICATION */
- uint8 action;
- uint8 token;
- uint8 status;
- uint8 data[1]; /* Elements */
-} PACKED;
-#define DOT11_MGMT_NOTIFICATION_LEN 4 /* Fixed length */
-
-/* WME Action Codes */
-#define WME_SETUP_REQUEST 0
-#define WME_SETUP_RESPONSE 1
-#define WME_TEARDOWN 2
-
-/* WME Setup Response Status Codes */
-#define WME_ADMISSION_ACCEPTED 0
-#define WME_INVALID_PARAMETERS 1
-#define WME_ADMISSION_REFUSED 3
-
-/* Macro to take a pointer to a beacon or probe response
- * header and return the char* pointer to the SSID info element
- */
-#define BCN_PRB_SSID(hdr) ((char*)(hdr) + DOT11_MGMT_HDR_LEN + DOT11_BCN_PRB_LEN)
-
-/* Authentication frame payload constants */
-#define DOT11_OPEN_SYSTEM 0
-#define DOT11_SHARED_KEY 1
-#define DOT11_CHALLENGE_LEN 128
-
-/* Frame control macros */
-#define FC_PVER_MASK 0x3
-#define FC_PVER_SHIFT 0
-#define FC_TYPE_MASK 0xC
-#define FC_TYPE_SHIFT 2
-#define FC_SUBTYPE_MASK 0xF0
-#define FC_SUBTYPE_SHIFT 4
-#define FC_TODS 0x100
-#define FC_TODS_SHIFT 8
-#define FC_FROMDS 0x200
-#define FC_FROMDS_SHIFT 9
-#define FC_MOREFRAG 0x400
-#define FC_MOREFRAG_SHIFT 10
-#define FC_RETRY 0x800
-#define FC_RETRY_SHIFT 11
-#define FC_PM 0x1000
-#define FC_PM_SHIFT 12
-#define FC_MOREDATA 0x2000
-#define FC_MOREDATA_SHIFT 13
-#define FC_WEP 0x4000
-#define FC_WEP_SHIFT 14
-#define FC_ORDER 0x8000
-#define FC_ORDER_SHIFT 15
-
-/* sequence control macros */
-#define SEQNUM_SHIFT 4
-#define FRAGNUM_MASK 0xF
-
-/* Frame Control type/subtype defs */
-
-/* FC Types */
-#define FC_TYPE_MNG 0
-#define FC_TYPE_CTL 1
-#define FC_TYPE_DATA 2
-
-/* Management Subtypes */
-#define FC_SUBTYPE_ASSOC_REQ 0
-#define FC_SUBTYPE_ASSOC_RESP 1
-#define FC_SUBTYPE_REASSOC_REQ 2
-#define FC_SUBTYPE_REASSOC_RESP 3
-#define FC_SUBTYPE_PROBE_REQ 4
-#define FC_SUBTYPE_PROBE_RESP 5
-#define FC_SUBTYPE_BEACON 8
-#define FC_SUBTYPE_ATIM 9
-#define FC_SUBTYPE_DISASSOC 10
-#define FC_SUBTYPE_AUTH 11
-#define FC_SUBTYPE_DEAUTH 12
-#define FC_SUBTYPE_ACTION 13
-
-/* Control Subtypes */
-#define FC_SUBTYPE_PS_POLL 10
-#define FC_SUBTYPE_RTS 11
-#define FC_SUBTYPE_CTS 12
-#define FC_SUBTYPE_ACK 13
-#define FC_SUBTYPE_CF_END 14
-#define FC_SUBTYPE_CF_END_ACK 15
-
-/* Data Subtypes */
-#define FC_SUBTYPE_DATA 0
-#define FC_SUBTYPE_DATA_CF_ACK 1
-#define FC_SUBTYPE_DATA_CF_POLL 2
-#define FC_SUBTYPE_DATA_CF_ACK_POLL 3
-#define FC_SUBTYPE_NULL 4
-#define FC_SUBTYPE_CF_ACK 5
-#define FC_SUBTYPE_CF_POLL 6
-#define FC_SUBTYPE_CF_ACK_POLL 7
-#define FC_SUBTYPE_QOS_DATA 8
-#define FC_SUBTYPE_QOS_NULL 12
-
-/* type-subtype combos */
-#define FC_KIND_MASK (FC_TYPE_MASK | FC_SUBTYPE_MASK)
-
-#define FC_KIND(t, s) (((t) << FC_TYPE_SHIFT) | ((s) << FC_SUBTYPE_SHIFT))
-
-#define FC_ASSOC_REQ FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ASSOC_REQ)
-#define FC_ASSOC_RESP FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ASSOC_RESP)
-#define FC_REASSOC_REQ FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_REASSOC_REQ)
-#define FC_REASSOC_RESP FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_REASSOC_RESP)
-#define FC_PROBE_REQ FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_PROBE_REQ)
-#define FC_PROBE_RESP FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_PROBE_RESP)
-#define FC_BEACON FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_BEACON)
-#define FC_DISASSOC FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_DISASSOC)
-#define FC_AUTH FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_AUTH)
-#define FC_DEAUTH FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_DEAUTH)
-#define FC_ACTION FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ACTION)
-
-#define FC_PS_POLL FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_PS_POLL)
-#define FC_RTS FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_RTS)
-#define FC_CTS FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CTS)
-#define FC_ACK FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_ACK)
-#define FC_CF_END FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CF_END)
-#define FC_CF_END_ACK FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CF_END_ACK)
-
-#define FC_DATA FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_DATA)
-#define FC_NULL_DATA FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_NULL)
-#define FC_DATA_CF_ACK FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_DATA_CF_ACK)
-#define FC_QOS_DATA FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_QOS_DATA)
-#define FC_QOS_NULL FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_QOS_NULL)
-
-/* QoS Control Field */
-
-/* 802.1D Tag */
-#define QOS_PRIO_SHIFT 0
-#define QOS_PRIO_MASK 0x0007
-#define QOS_PRIO(qos) (((qos) & QOS_PRIO_MASK) >> QOS_PRIO_SHIFT)
-
-#define QOS_TID_SHIFT 0
-#define QOS_TID_MASK 0x000f
-#define QOS_TID(qos) (((qos) & QOS_TID_MASK) >> QOS_TID_SHIFT)
-
-/* Ack Policy (0 means Acknowledge) */
-#define QOS_ACK_SHIFT 5
-#define QOS_ACK_MASK 0x0060
-#define QOS_ACK(qos) (((qos) & QOS_ACK_MASK) >> QOS_ACK_SHIFT)
-
-/* Management Frames */
-
-/* Management Frame Constants */
-
-/* Fixed fields */
-#define DOT11_MNG_AUTH_ALGO_LEN 2
-#define DOT11_MNG_AUTH_SEQ_LEN 2
-#define DOT11_MNG_BEACON_INT_LEN 2
-#define DOT11_MNG_CAP_LEN 2
-#define DOT11_MNG_AP_ADDR_LEN 6
-#define DOT11_MNG_LISTEN_INT_LEN 2
-#define DOT11_MNG_REASON_LEN 2
-#define DOT11_MNG_AID_LEN 2
-#define DOT11_MNG_STATUS_LEN 2
-#define DOT11_MNG_TIMESTAMP_LEN 8
-
-/* DUR/ID field in assoc resp is 0xc000 | AID */
-#define DOT11_AID_MASK 0x3fff
-
-/* Reason Codes */
-#define DOT11_RC_RESERVED 0
-#define DOT11_RC_UNSPECIFIED 1 /* Unspecified reason */
-#define DOT11_RC_AUTH_INVAL 2 /* Previous authentication no longer valid */
-#define DOT11_RC_DEAUTH_LEAVING 3 /* Deauthenticated because sending station is
- leaving (or has left) IBSS or ESS */
-#define DOT11_RC_INACTIVITY 4 /* Disassociated due to inactivity */
-#define DOT11_RC_BUSY 5 /* Disassociated because AP is unable to handle
- all currently associated stations */
-#define DOT11_RC_INVAL_CLASS_2 6 /* Class 2 frame received from
- nonauthenticated station */
-#define DOT11_RC_INVAL_CLASS_3 7 /* Class 3 frame received from
- nonassociated station */
-#define DOT11_RC_DISASSOC_LEAVING 8 /* Disassociated because sending station is
- leaving (or has left) BSS */
-#define DOT11_RC_NOT_AUTH 9 /* Station requesting (re)association is
- not authenticated with responding station */
-#define DOT11_RC_MAX 23 /* Reason codes > 23 are reserved */
-
-/* Status Codes */
-#define DOT11_STATUS_SUCCESS 0 /* Successful */
-#define DOT11_STATUS_FAILURE 1 /* Unspecified failure */
-#define DOT11_STATUS_CAP_MISMATCH 10 /* Cannot support all requested capabilities
- in the Capability Information field */
-#define DOT11_STATUS_REASSOC_FAIL 11 /* Reassociation denied due to inability to
- confirm that association exists */
-#define DOT11_STATUS_ASSOC_FAIL 12 /* Association denied due to reason outside
- the scope of this standard */
-#define DOT11_STATUS_AUTH_MISMATCH 13 /* Responding station does not support the
- specified authentication algorithm */
-#define DOT11_STATUS_AUTH_SEQ 14 /* Received an Authentication frame with
- authentication transaction sequence number
- out of expected sequence */
-#define DOT11_STATUS_AUTH_CHALLENGE_FAIL 15 /* Authentication rejected because of challenge failure */
-#define DOT11_STATUS_AUTH_TIMEOUT 16 /* Authentication rejected due to timeout waiting
- for next frame in sequence */
-#define DOT11_STATUS_ASSOC_BUSY_FAIL 17 /* Association denied because AP is unable to
- handle additional associated stations */
-#define DOT11_STATUS_ASSOC_RATE_MISMATCH 18 /* Association denied due to requesting station
- not supporting all of the data rates in the
- BSSBasicRateSet parameter */
-#define DOT11_STATUS_ASSOC_SHORT_REQUIRED 19 /* Association denied due to requesting station
- not supporting the Short Preamble option */
-#define DOT11_STATUS_ASSOC_PBCC_REQUIRED 20 /* Association denied due to requesting station
- not supporting the PBCC Modulation option */
-#define DOT11_STATUS_ASSOC_AGILITY_REQUIRED 21 /* Association denied due to requesting station
- not supporting the Channel Agility option */
-#define DOT11_STATUS_ASSOC_SPECTRUM_REQUIRED 22 /* Association denied because Spectrum Management
- capability is required. */
-#define DOT11_STATUS_ASSOC_BAD_POWER_CAP 23 /* Association denied because the info in the
- Power Cap element is unacceptable. */
-#define DOT11_STATUS_ASSOC_BAD_SUP_CHANNELS 24 /* Association denied because the info in the
- Supported Channel element is unacceptable */
-#define DOT11_STATUS_ASSOC_SHORTSLOT_REQUIRED 25 /* Association denied due to requesting station
- not supporting the Short Slot Time option */
-#define DOT11_STATUS_ASSOC_ERPBCC_REQUIRED 26 /* Association denied due to requesting station
- not supporting the ER-PBCC Modulation option */
-#define DOT11_STATUS_ASSOC_DSSOFDM_REQUIRED 27 /* Association denied due to requesting station
- not supporting the DSS-OFDM option */
-
-/* Info Elts, length of INFORMATION portion of Info Elts */
-#define DOT11_MNG_DS_PARAM_LEN 1
-#define DOT11_MNG_IBSS_PARAM_LEN 2
-
-/* TIM Info element has 3 bytes fixed info in INFORMATION field,
- * followed by 1 to 251 bytes of Partial Virtual Bitmap */
-#define DOT11_MNG_TIM_FIXED_LEN 3
-#define DOT11_MNG_TIM_DTIM_COUNT 0
-#define DOT11_MNG_TIM_DTIM_PERIOD 1
-#define DOT11_MNG_TIM_BITMAP_CTL 2
-#define DOT11_MNG_TIM_PVB 3
-
-/* TLV defines */
-#define TLV_TAG_OFF 0
-#define TLV_LEN_OFF 1
-#define TLV_HDR_LEN 2
-#define TLV_BODY_OFF 2
-
-/* Management Frame Information Element IDs */
-#define DOT11_MNG_SSID_ID 0
-#define DOT11_MNG_RATES_ID 1
-#define DOT11_MNG_FH_PARMS_ID 2
-#define DOT11_MNG_DS_PARMS_ID 3
-#define DOT11_MNG_CF_PARMS_ID 4
-#define DOT11_MNG_TIM_ID 5
-#define DOT11_MNG_IBSS_PARMS_ID 6
-#define DOT11_MNG_COUNTRY_ID 7
-#define DOT11_MNG_HOPPING_PARMS_ID 8
-#define DOT11_MNG_HOPPING_TABLE_ID 9
-#define DOT11_MNG_REQUEST_ID 10
-#define DOT11_MNG_CHALLENGE_ID 16
-#define DOT11_MNG_PWR_CONSTRAINT_ID 32 /* 11H PowerConstraint */
-#define DOT11_MNG_PWR_CAP_ID 33 /* 11H PowerCapability */
-#define DOT11_MNG_TPC_REQUEST_ID 34 /* 11H TPC Request */
-#define DOT11_MNG_TPC_REPORT_ID 35 /* 11H TPC Report */
-#define DOT11_MNG_SUPP_CHANNELS_ID 36 /* 11H Supported Channels */
-#define DOT11_MNG_CHANNEL_SWITCH_ID 37 /* 11H ChannelSwitch Announcement*/
-#define DOT11_MNG_MEASURE_REQUEST_ID 38 /* 11H MeasurementRequest */
-#define DOT11_MNG_MEASURE_REPORT_ID 39 /* 11H MeasurementReport */
-#define DOT11_MNG_QUIET_ID 40 /* 11H Quiet */
-#define DOT11_MNG_IBSS_DFS_ID 41 /* 11H IBSS_DFS */
-#define DOT11_MNG_ERP_ID 42
-#define DOT11_MNG_NONERP_ID 47
-#ifdef BCMWPA2
-#define DOT11_MNG_RSN_ID 48
-#endif /* BCMWPA2 */
-#define DOT11_MNG_EXT_RATES_ID 50
-#define DOT11_MNG_WPA_ID 221
-#define DOT11_MNG_PROPR_ID 221
-
-/* ERP info element bit values */
-#define DOT11_MNG_ERP_LEN 1 /* ERP is currently 1 byte long */
-#define DOT11_MNG_NONERP_PRESENT 0x01 /* NonERP (802.11b) STAs are present in the BSS */
-#define DOT11_MNG_USE_PROTECTION 0x02 /* Use protection mechanisms for ERP-OFDM frames */
-#define DOT11_MNG_BARKER_PREAMBLE 0x04 /* Short Preambles: 0 == allowed, 1 == not allowed */
-
-/* Capability Information Field */
-#define DOT11_CAP_ESS 0x0001
-#define DOT11_CAP_IBSS 0x0002
-#define DOT11_CAP_POLLABLE 0x0004
-#define DOT11_CAP_POLL_RQ 0x0008
-#define DOT11_CAP_PRIVACY 0x0010
-#define DOT11_CAP_SHORT 0x0020
-#define DOT11_CAP_PBCC 0x0040
-#define DOT11_CAP_AGILITY 0x0080
-#define DOT11_CAP_SPECTRUM 0x0100
-#define DOT11_CAP_SHORTSLOT 0x0400
-#define DOT11_CAP_CCK_OFDM 0x2000
-
-/* Action Frame Constants */
-#define DOT11_ACTION_CAT_ERR_MASK 0x80
-#define DOT11_ACTION_CAT_SPECT_MNG 0x00
-#define DOT11_ACTION_NOTIFICATION 0x11 /* 17 */
-
-#define DOT11_ACTION_ID_M_REQ 0
-#define DOT11_ACTION_ID_M_REP 1
-#define DOT11_ACTION_ID_TPC_REQ 2
-#define DOT11_ACTION_ID_TPC_REP 3
-#define DOT11_ACTION_ID_CHANNEL_SWITCH 4
-
-/* MLME Enumerations */
-#define DOT11_BSSTYPE_INFRASTRUCTURE 0
-#define DOT11_BSSTYPE_INDEPENDENT 1
-#define DOT11_BSSTYPE_ANY 2
-#define DOT11_SCANTYPE_ACTIVE 0
-#define DOT11_SCANTYPE_PASSIVE 1
-
-/* 802.11 A PHY constants */
-#define APHY_SLOT_TIME 9
-#define APHY_SIFS_TIME 16
-#define APHY_DIFS_TIME (APHY_SIFS_TIME + (2 * APHY_SLOT_TIME))
-#define APHY_PREAMBLE_TIME 16
-#define APHY_SIGNAL_TIME 4
-#define APHY_SYMBOL_TIME 4
-#define APHY_SERVICE_NBITS 16
-#define APHY_TAIL_NBITS 6
-#define APHY_CWMIN 15
-
-/* 802.11 B PHY constants */
-#define BPHY_SLOT_TIME 20
-#define BPHY_SIFS_TIME 10
-#define BPHY_DIFS_TIME 50
-#define BPHY_PLCP_TIME 192
-#define BPHY_PLCP_SHORT_TIME 96
-#define BPHY_CWMIN 31
-
-/* 802.11 G constants */
-#define DOT11_OFDM_SIGNAL_EXTENSION 6
-
-#define PHY_CWMAX 1023
-
-#define DOT11_MAXNUMFRAGS 16 /* max # fragments per MSDU */
-
-/* dot11Counters Table - 802.11 spec., Annex D */
-typedef struct d11cnt {
- uint32 txfrag; /* dot11TransmittedFragmentCount */
- uint32 txmulti; /* dot11MulticastTransmittedFrameCount */
- uint32 txfail; /* dot11FailedCount */
- uint32 txretry; /* dot11RetryCount */
- uint32 txretrie; /* dot11MultipleRetryCount */
- uint32 rxdup; /* dot11FrameduplicateCount */
- uint32 txrts; /* dot11RTSSuccessCount */
- uint32 txnocts; /* dot11RTSFailureCount */
- uint32 txnoack; /* dot11ACKFailureCount */
- uint32 rxfrag; /* dot11ReceivedFragmentCount */
- uint32 rxmulti; /* dot11MulticastReceivedFrameCount */
- uint32 rxcrc; /* dot11FCSErrorCount */
- uint32 txfrmsnt; /* dot11TransmittedFrameCount */
- uint32 rxundec; /* dot11WEPUndecryptableCount */
-} d11cnt_t;
-
-/* BRCM OUI */
-#define BRCM_OUI "\x00\x10\x18"
-
-/* BRCM info element */
-struct brcm_ie {
- uchar id; /* 221, DOT11_MNG_PROPR_ID */
- uchar len;
- uchar oui[3];
- uchar ver;
- uchar assoc; /* # of assoc STAs */
- uchar flags; /* misc flags */
-} PACKED;
-#define BRCM_IE_LEN 8
-typedef struct brcm_ie brcm_ie_t;
-#define BRCM_IE_VER 2
-#define BRCM_IE_LEGACY_AES_VER 1
-
-/* brcm_ie flags */
-#define BRF_ABCAP 0x1 /* afterburner capable */
-#define BRF_ABRQRD 0x2 /* afterburner requested */
-#define BRF_LZWDS 0x4 /* lazy wds enabled */
-#define BRF_ABCOUNTER_MASK 0xf0 /* afterburner wds "state" counter */
-#define BRF_ABCOUNTER_SHIFT 4
-
-#define AB_WDS_TIMEOUT_MAX 15 /* afterburner wds Max count indicating not locally capable */
-#define AB_WDS_TIMEOUT_MIN 1 /* afterburner wds, use zero count as indicating "downrev" */
-
-
-/* OUI for BRCM proprietary IE */
-#define BRCM_PROP_OUI "\x00\x90\x4C"
-
-/* Vendor IE structure */
-struct vndr_ie {
- uchar id;
- uchar len;
- uchar oui [3];
- uchar data [1]; /* Variable size data */
-}PACKED;
-typedef struct vndr_ie vndr_ie_t;
-
-#define VNDR_IE_HDR_LEN 2 /* id + len field */
-#define VNDR_IE_MIN_LEN 3 /* size of the oui field */
-#define VNDR_IE_MAX_LEN 256
-
-/* WPA definitions */
-#define WPA_VERSION 1
-#define WPA_OUI "\x00\x50\xF2"
-
-#ifdef BCMWPA2
-#define WPA2_VERSION 1
-#define WPA2_VERSION_LEN 2
-#define WPA2_OUI "\x00\x0F\xAC"
-#endif /* BCMWPA2 */
-
-#define WPA_OUI_LEN 3
-
-/* RSN authenticated key managment suite */
-#define RSN_AKM_NONE 0 /* None (IBSS) */
-#define RSN_AKM_UNSPECIFIED 1 /* Over 802.1x */
-#define RSN_AKM_PSK 2 /* Pre-shared Key */
-
-
-/* Key related defines */
-#define DOT11_MAX_DEFAULT_KEYS 4 /* number of default keys */
-#define DOT11_MAX_KEY_SIZE 32 /* max size of any key */
-#define DOT11_MAX_IV_SIZE 16 /* max size of any IV */
-#define DOT11_EXT_IV_FLAG (1<<5) /* flag to indicate IV is > 4 bytes */
-
-#define WEP1_KEY_SIZE 5 /* max size of any WEP key */
-#define WEP1_KEY_HEX_SIZE 10 /* size of WEP key in hex. */
-#define WEP128_KEY_SIZE 13 /* max size of any WEP key */
-#define WEP128_KEY_HEX_SIZE 26 /* size of WEP key in hex. */
-#define TKIP_MIC_SIZE 8 /* size of TKIP MIC */
-#define TKIP_EOM_SIZE 7 /* max size of TKIP EOM */
-#define TKIP_EOM_FLAG 0x5a /* TKIP EOM flag byte */
-#define TKIP_KEY_SIZE 32 /* size of any TKIP key */
-#define TKIP_MIC_AUTH_TX 16 /* offset to Authenticator MIC TX key */
-#define TKIP_MIC_AUTH_RX 24 /* offset to Authenticator MIC RX key */
-#define TKIP_MIC_SUP_RX 16 /* offset to Supplicant MIC RX key */
-#define TKIP_MIC_SUP_TX 24 /* offset to Supplicant MIC TX key */
-#define AES_KEY_SIZE 16 /* size of AES key */
-
-#undef PACKED
-#if !defined(__GNUC__)
-#pragma pack()
-#endif
-
-#endif /* _802_11_H_ */
diff --git a/openwrt/package/wificonf/include/proto/bcmeth.h b/openwrt/package/wificonf/include/proto/bcmeth.h
deleted file mode 100644
index 7a97fe87fa..0000000000
--- a/openwrt/package/wificonf/include/proto/bcmeth.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Broadcom Ethernettype protocol definitions
- *
- * Copyright 2005, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- */
-
-/*
- * Broadcom Ethernet protocol defines
- *
- */
-
-#ifndef _BCMETH_H_
-#define _BCMETH_H_
-
-/* enable structure packing */
-#if defined(__GNUC__)
-#define PACKED __attribute__((packed))
-#else
-#pragma pack(1)
-#define PACKED
-#endif
-
-/* ETHER_TYPE_BRCM is defined in ethernet.h */
-
-/*
- * Following the 2byte BRCM ether_type is a 16bit BRCM subtype field
- * in one of two formats: (only subtypes 32768-65535 are in use now)
- *
- * subtypes 0-32767:
- * 8 bit subtype (0-127)
- * 8 bit length in bytes (0-255)
- *
- * subtypes 32768-65535:
- * 16 bit big-endian subtype
- * 16 bit big-endian length in bytes (0-65535)
- *
- * length is the number of additional bytes beyond the 4 or 6 byte header
- *
- * Reserved values:
- * 0 reserved
- * 5-15 reserved for iLine protocol assignments
- * 17-126 reserved, assignable
- * 127 reserved
- * 32768 reserved
- * 32769-65534 reserved, assignable
- * 65535 reserved
- */
-
-/*
- * While adding the subtypes and their specific processing code make sure
- * bcmeth_bcm_hdr_t is the first data structure in the user specific data structure definition
- */
-
-#define BCMILCP_SUBTYPE_RATE 1
-#define BCMILCP_SUBTYPE_LINK 2
-#define BCMILCP_SUBTYPE_CSA 3
-#define BCMILCP_SUBTYPE_LARQ 4
-#define BCMILCP_SUBTYPE_VENDOR 5
-#define BCMILCP_SUBTYPE_FLH 17
-
-#define BCMILCP_SUBTYPE_VENDOR_LONG 32769
-#define BCMILCP_SUBTYPE_CERT 32770
-#define BCMILCP_SUBTYPE_SES 32771
-
-
-#define BCMILCP_BCM_SUBTYPE_RESERVED 0
-#define BCMILCP_BCM_SUBTYPE_EVENT 1
-#define BCMILCP_BCM_SUBTYPE_SES 2
-/*
-The EAPOL type is not used anymore. Instead EAPOL messages are now embedded
-within BCMILCP_BCM_SUBTYPE_EVENT type messages
-*/
-/*#define BCMILCP_BCM_SUBTYPE_EAPOL 3*/
-
-#define BCMILCP_BCM_SUBTYPEHDR_MINLENGTH 8
-#define BCMILCP_BCM_SUBTYPEHDR_VERSION 0
-
-/* These fields are stored in network order */
-typedef struct bcmeth_hdr
-{
- uint16 subtype; /* Vendor specific..32769*/
- uint16 length;
- uint8 version; /* Version is 0*/
- uint8 oui[3]; /* Broadcom OUI*/
- /* user specific Data */
- uint16 usr_subtype;
-} PACKED bcmeth_hdr_t;
-
-
-
-#undef PACKED
-#if !defined(__GNUC__)
-#pragma pack()
-#endif
-
-#endif
diff --git a/openwrt/package/wificonf/include/proto/bcmevent.h b/openwrt/package/wificonf/include/proto/bcmevent.h
deleted file mode 100644
index 3d93f441b9..0000000000
--- a/openwrt/package/wificonf/include/proto/bcmevent.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Broadcom Event protocol definitions
- *
- * Copyright 2005, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- *
- * Dependencies: proto/bcmeth.h
- *
- */
-
-/*
- * Broadcom Ethernet Events protocol defines
- *
- */
-
-#ifndef _BCMEVENT_H_
-#define _BCMEVENT_H_
-
-/* enable structure packing */
-#if defined(__GNUC__)
-#define PACKED __attribute__((packed))
-#else
-#pragma pack(1)
-#define PACKED
-#endif
-
-
-
-#define BCM_EVENT_MSG_VERSION 1
-#define BCM_MSG_IFNAME_MAX 16
-
-
-/* flags */
-#define WLC_EVENT_MSG_LINK 0x01
-#define WLC_EVENT_MSG_FLUSHTXQ 0x02
-#define WLC_EVENT_MSG_GROUP 0x04
-
-
-
-/* theses fields are stored in network order */
-typedef struct
-{
- uint16 version;
- uint16 flags; /* see flags below */
- uint32 event_type; /* Message (see below) */
- uint32 status; /* Status code (see below) */
- uint32 reason; /* Reason code (if applicable) */
- uint32 auth_type; /* WLC_E_AUTH */
- uint32 datalen; /* data buf */
- struct ether_addr addr; /* Station address (if applicable) */
- char ifname[BCM_MSG_IFNAME_MAX]; /* name of the packet incoming interface*/
-} PACKED wl_event_msg_t;
-
-/* used by driver msgs */
-typedef struct bcm_event {
- struct ether_header eth;
- bcmeth_hdr_t bcm_hdr;
- wl_event_msg_t event;
- /* data portion follows */
-} PACKED bcm_event_t;
-
-#define BCM_MSG_LEN (sizeof(bcm_event_t) - sizeof(bcmeth_hdr_t) - sizeof(struct ether_header))
-
-
-
-/* Event messages */
-#define WLC_E_SET_SSID 0 /* indicates status of set SSID */
-#define WLC_E_JOIN 1 /* differentiates join IBSS from found (WLC_E_START) IBSS */
-#define WLC_E_START 2 /* STA founded an IBSS or AP started a BSS */
-#define WLC_E_AUTH 3 /* 802.11 AUTH request */
-#define WLC_E_AUTH_IND 4 /* 802.11 AUTH indication */
-#define WLC_E_DEAUTH 5 /* 802.11 DEAUTH request */
-#define WLC_E_DEAUTH_IND 6 /* 802.11 DEAUTH indication */
-#define WLC_E_ASSOC 7 /* 802.11 ASSOC request */
-#define WLC_E_ASSOC_IND 8 /* 802.11 ASSOC indication */
-#define WLC_E_REASSOC 9 /* 802.11 REASSOC request */
-#define WLC_E_REASSOC_IND 10 /* 802.11 REASSOC indication */
-#define WLC_E_DISASSOC 11 /* 802.11 DISASSOC request */
-#define WLC_E_DISASSOC_IND 12 /* 802.11 DISASSOC indication */
-#define WLC_E_QUIET_START 13 /* 802.11h Quiet period started */
-#define WLC_E_QUIET_END 14 /* 802.11h Quiet period ended */
-#define WLC_E_GOT_BEACONS 15 /* internal use: IBSS mode: saw another STA's BEACONS */
-#define WLC_E_LINK 16 /* generic link indication */
-#define WLC_E_MIC_ERROR 17 /* TKIP MIC error occurred */
-#define WLC_E_NDIS_LINK 18 /* NDIS style link indication */
-#define WLC_E_ROAM 19 /* roam attempt occurred: indicate status & reason for roam */
-#define WLC_E_TXFAIL 20 /* change in dot11FailedCount (txfail) */
-#define WLC_E_PMKID_CACHE 21 /* WPA2 pmkid cache indication */
-#define WLC_E_RETROGRADE_TSF 22 /* current AP's TSF value went backward */
-#define WLC_E_PRUNE 23 /* AP was pruned from join list for reason */
-#define WLC_E_AUTOAUTH 24 /* report AutoAuth table entry match for join attempt */
-#define WLC_E_EAPOL_MSG 25 /* Event encapsulating an EAPOL message */
-#define WLC_E_LAST 26
-
-/* Event status codes */
-#define WLC_E_STATUS_SUCCESS 0
-#define WLC_E_STATUS_FAIL 1
-#define WLC_E_STATUS_TIMEOUT 2
-#define WLC_E_STATUS_NO_NETWORKS 3
-#define WLC_E_STATUS_ABORT 4
-#define WLC_E_STATUS_NO_ACK 5
-#define WLC_E_STATUS_UNSOLICITED 6
-#define WLC_E_STATUS_ATTEMPT 7
-
-/* roam reason codes */
-#define WLC_E_REASON_LOW_RSSI 1
-#define WLC_E_REASON_DEAUTH 2
-#define WLC_E_REASON_DISASSOC 3
-#define WLC_E_REASON_BCNS_LOST 4
-#define WLC_E_REASON_FAST_ROAM_FAILED 5
-
-/* prune reason codes */
-#define WLC_E_PRUNE_ENCR_MISMATCH 1 /* ecryption mismatch */
-#define WLC_E_PRUNE_BCAST_BSSID 2 /* AP uses a broadcast BSSID */
-#define WLC_E_PRUNE_MAC_DENY 3 /* STA's MAC addr is in AP's MAC deny list */
-#define WLC_E_PRUNE_MAC_NA 4 /* STA's MAC addr is not in AP's MAC allow list */
-#define WLC_E_PRUNE_REG_PASSV 5 /* AP not allowed due to regulatory restriction */
-#define WLC_E_PRUNE_SPCT_MGMT 6 /* AP does not support STA locale spectrum mgmt */
-#define WLC_E_PRUNE_RADAR 7 /* AP is on a radar channel of STA locale */
-#define WLC_E_RSN_MISMATCH 8 /* STA does not support AP's RSN */
-#define WLC_E_PRUNE_NO_COMMON_RATES 9 /* No rates in common with AP */
-#define WLC_E_PRUNE_BASIC_RATES 10 /* STA does not support all basic rates of BSS */
-#define WLC_E_PRUNE_CCXFAST_PREVAP 11 /* CCX FAST ROAM: prune previous AP */
-#define WLC_E_PRUNE_CIPHER_NA 12 /* BSS's cipher not supported */
-#define WLC_E_PRUNE_KNOWN_STA 13 /* AP is already known to us as a STA */
-
-/* WLC_SET_CALLBACK data type */
-typedef struct wlc_event_cb {
- void (*fn)(void *, bcm_event_t *); /* Callback function */
- void *context; /* Passed to callback function */
-} wlc_event_cb_t;
-
-
-
-
-#undef PACKED
-#if !defined(__GNUC__)
-#pragma pack()
-#endif
-
-#endif
diff --git a/openwrt/package/wificonf/include/proto/bcmip.h b/openwrt/package/wificonf/include/proto/bcmip.h
deleted file mode 100644
index da2d8f8b60..0000000000
--- a/openwrt/package/wificonf/include/proto/bcmip.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2005, Broadcom Corporation
- * All Rights Reserved.
- *
- * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
- * the contents of this file may not be disclosed to third parties, copied
- * or duplicated in any form, in whole or in part, without the prior
- * written permission of Broadcom Corporation.
- *
- * Fundamental constants relating to IP Protocol
- *
- * $Id$
- */
-
-#ifndef _bcmip_h_
-#define _bcmip_h_
-
-/* IP header */
-#define IPV4_VERIHL_OFFSET 0 /* version and ihl byte offset */
-#define IPV4_TOS_OFFSET 1 /* TOS offset */
-#define IPV4_PROT_OFFSET 9 /* protocol type offset */
-#define IPV4_CHKSUM_OFFSET 10 /* IP header checksum offset */
-#define IPV4_SRC_IP_OFFSET 12 /* src IP addr offset */
-#define IPV4_DEST_IP_OFFSET 16 /* dest IP addr offset */
-
-#define IPV4_VER_MASK 0xf0
-#define IPV4_IHL_MASK 0x0f
-
-#define IPV4_PROT_UDP 17 /* UDP protocol type */
-
-#define IPV4_ADDR_LEN 4 /* IP v4 address length */
-
-#define IPV4_VER_NUM 0x40 /* IP v4 version number */
-
-/* NULL IP address check */
-#define IPV4_ISNULLADDR(a) ((((uint8 *)(a))[0] + ((uint8 *)(a))[1] + \
- ((uint8 *)(a))[2] + ((uint8 *)(a))[3]) == 0)
-
-#define IPV4_ADDR_STR_LEN 16
-
-#endif /* #ifndef _bcmip_h_ */
-
diff --git a/openwrt/package/wificonf/include/proto/ethernet.h b/openwrt/package/wificonf/include/proto/ethernet.h
deleted file mode 100644
index c2718a6511..0000000000
--- a/openwrt/package/wificonf/include/proto/ethernet.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
- * $Id$
- * Copyright 2005, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- * From FreeBSD 2.2.7: Fundamental constants relating to ethernet.
- ******************************************************************************/
-
-#ifndef ETHER_ADDR_LEN
-#define _NET_ETHERNET_H_
-
-#ifndef _TYPEDEFS_H_
-#include "typedefs.h"
-#endif
-
-/* enable structure packing */
-#if defined(__GNUC__)
-#define PACKED __attribute__((packed))
-#else
-#pragma pack(1)
-#define PACKED
-#endif
-
-/*
- * The number of bytes in an ethernet (MAC) address.
- */
-#define ETHER_ADDR_LEN 6
-
-/*
- * The number of bytes in the type field.
- */
-#define ETHER_TYPE_LEN 2
-
-/*
- * The number of bytes in the trailing CRC field.
- */
-#define ETHER_CRC_LEN 4
-
-/*
- * The length of the combined header.
- */
-#define ETHER_HDR_LEN (ETHER_ADDR_LEN*2+ETHER_TYPE_LEN)
-
-/*
- * The minimum packet length.
- */
-#define ETHER_MIN_LEN 64
-
-/*
- * The minimum packet user data length.
- */
-#define ETHER_MIN_DATA 46
-
-/*
- * The maximum packet length.
- */
-#define ETHER_MAX_LEN 1518
-
-/*
- * The maximum packet user data length.
- */
-#define ETHER_MAX_DATA 1500
-
-/* ether types */
-#define ETHER_TYPE_IP 0x0800 /* IP */
-#define ETHER_TYPE_ARP 0x0806 /* ARP */
-#define ETHER_TYPE_8021Q 0x8100 /* 802.1Q */
-#define ETHER_TYPE_BRCM 0x886c /* Broadcom Corp. */
-#define ETHER_TYPE_802_1X 0x888e /* 802.1x */
-#ifdef BCMWPA2
-#define ETHER_TYPE_802_1X_PREAUTH 0x88c7 /* 802.1x preauthentication*/
-#endif
-
-/* Broadcom subtype follows ethertype; First 2 bytes are reserved; Next 2 are subtype; */
-#define ETHER_BRCM_SUBTYPE_LEN 4 /* Broadcom 4 byte subtype */
-#define ETHER_BRCM_CRAM 0x1 /* Broadcom subtype cram protocol */
-
-/* ether header */
-#define ETHER_DEST_OFFSET 0 /* dest address offset */
-#define ETHER_SRC_OFFSET 6 /* src address offset */
-#define ETHER_TYPE_OFFSET 12 /* ether type offset */
-
-/*
- * A macro to validate a length with
- */
-#define ETHER_IS_VALID_LEN(foo) \
- ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN)
-
-
-#ifndef __INCif_etherh /* Quick and ugly hack for VxWorks */
-/*
- * Structure of a 10Mb/s Ethernet header.
- */
-struct ether_header {
- uint8 ether_dhost[ETHER_ADDR_LEN];
- uint8 ether_shost[ETHER_ADDR_LEN];
- uint16 ether_type;
-} PACKED;
-
-/*
- * Structure of a 48-bit Ethernet address.
- */
-struct ether_addr {
- uint8 octet[ETHER_ADDR_LEN];
-} PACKED;
-#endif
-
-/*
- * Takes a pointer, sets locally admininistered
- * address bit in the 48-bit Ethernet address.
- */
-#define ETHER_SET_LOCALADDR(ea) ( ((uint8 *)(ea))[0] = \
- (((uint8 *)(ea))[0] | 2) )
-
-/*
- * Takes a pointer, returns true if a 48-bit multicast address
- * (including broadcast, since it is all ones)
- */
-#define ETHER_ISMULTI(ea) (((uint8 *)(ea))[0] & 1)
-
-
-/* compare two ethernet addresses - assumes the pointers can be referenced as shorts */
-#define ether_cmp(a, b) ( \
- !(((short*)a)[0] == ((short*)b)[0]) | \
- !(((short*)a)[1] == ((short*)b)[1]) | \
- !(((short*)a)[2] == ((short*)b)[2]))
-
-/* copy an ethernet address - assumes the pointers can be referenced as shorts */
-#define ether_copy(s, d) { \
- ((short*)d)[0] = ((short*)s)[0]; \
- ((short*)d)[1] = ((short*)s)[1]; \
- ((short*)d)[2] = ((short*)s)[2]; }
-
-/*
- * Takes a pointer, returns true if a 48-bit broadcast (all ones)
- */
-#define ETHER_ISBCAST(ea) ((((uint8 *)(ea))[0] & \
- ((uint8 *)(ea))[1] & \
- ((uint8 *)(ea))[2] & \
- ((uint8 *)(ea))[3] & \
- ((uint8 *)(ea))[4] & \
- ((uint8 *)(ea))[5]) == 0xff)
-
-static const struct ether_addr ether_bcast = {{255, 255, 255, 255, 255, 255}};
-
-/*
- * Takes a pointer, returns true if a 48-bit null address (all zeros)
- */
-#define ETHER_ISNULLADDR(ea) ((((uint8 *)(ea))[0] | \
- ((uint8 *)(ea))[1] | \
- ((uint8 *)(ea))[2] | \
- ((uint8 *)(ea))[3] | \
- ((uint8 *)(ea))[4] | \
- ((uint8 *)(ea))[5]) == 0)
-
-/* Differentiated Services Codepoint - upper 6 bits of tos in iphdr */
-#define DSCP_MASK 0xFC /* upper 6 bits */
-#define DSCP_SHIFT 2
-#define DSCP_WME_PRI_MASK 0xE0 /* upper 3 bits */
-#define DSCP_WME_PRI_SHIFT 5
-
-#undef PACKED
-#if !defined(__GNUC__)
-#pragma pack()
-#endif
-
-#endif /* _NET_ETHERNET_H_ */
diff --git a/openwrt/package/wificonf/include/proto/vlan.h b/openwrt/package/wificonf/include/proto/vlan.h
deleted file mode 100644
index ba136e9ed6..0000000000
--- a/openwrt/package/wificonf/include/proto/vlan.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 802.1Q VLAN protocol definitions
- *
- * Copyright 2005, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- * $Id$
- */
-
-#ifndef _vlan_h_
-#define _vlan_h_
-
-/* enable structure packing */
-#if defined(__GNUC__)
-#define PACKED __attribute__((packed))
-#else
-#pragma pack(1)
-#define PACKED
-#endif
-
-#define VLAN_VID_MASK 0xfff /* low 12 bits are vlan id */
-#define VLAN_CFI_SHIFT 12 /* canonical format indicator bit */
-#define VLAN_PRI_SHIFT 13 /* user priority */
-
-#define VLAN_PRI_MASK 7 /* 3 bits of priority */
-
-#define VLAN_TAG_LEN 4
-#define VLAN_TAG_OFFSET (2 * ETHER_ADDR_LEN)
-
-struct ethervlan_header {
- uint8 ether_dhost[ETHER_ADDR_LEN];
- uint8 ether_shost[ETHER_ADDR_LEN];
- uint16 vlan_type; /* 0x8100 */
- uint16 vlan_tag; /* priority, cfi and vid */
- uint16 ether_type;
-};
-
-#define ETHERVLAN_HDR_LEN (ETHER_HDR_LEN + VLAN_TAG_LEN)
-
-#undef PACKED
-#if !defined(__GNUC__)
-#pragma pack()
-#endif
-
-#endif /* _vlan_h_ */
diff --git a/openwrt/package/wificonf/include/proto/wpa.h b/openwrt/package/wificonf/include/proto/wpa.h
deleted file mode 100644
index db49b76308..0000000000
--- a/openwrt/package/wificonf/include/proto/wpa.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Fundamental types and constants relating to WPA
- *
- * Copyright 2005, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- * $Id$
- */
-
-#ifndef _proto_wpa_h_
-#define _proto_wpa_h_
-
-#include <typedefs.h>
-#include <proto/ethernet.h>
-
-/* enable structure packing */
-#if defined(__GNUC__)
-#define PACKED __attribute__((packed))
-#else
-#pragma pack(1)
-#define PACKED
-#endif
-
-/* Reason Codes */
-
-/* 10 and 11 are from TGh. */
-#define DOT11_RC_BAD_PC 10 /* Unacceptable power capability element */
-#define DOT11_RC_BAD_CHANNELS 11 /* Unacceptable supported channels element */
-/* 12 is unused */
-/* 13 through 23 taken from P802.11i/D3.0, November 2002 */
-#define DOT11_RC_INVALID_WPA_IE 13 /* Invalid info. element */
-#define DOT11_RC_MIC_FAILURE 14 /* Michael failure */
-#define DOT11_RC_4WH_TIMEOUT 15 /* 4-way handshake timeout */
-#define DOT11_RC_GTK_UPDATE_TIMEOUT 16 /* Group key update timeout */
-#define DOT11_RC_WPA_IE_MISMATCH 17 /* WPA IE in 4-way handshake differs from (re-)assoc. request/probe response */
-#define DOT11_RC_INVALID_MC_CIPHER 18 /* Invalid multicast cipher */
-#define DOT11_RC_INVALID_UC_CIPHER 19 /* Invalid unicast cipher */
-#define DOT11_RC_INVALID_AKMP 20 /* Invalid authenticated key management protocol */
-#define DOT11_RC_BAD_WPA_VERSION 21 /* Unsupported WPA version */
-#define DOT11_RC_INVALID_WPA_CAP 22 /* Invalid WPA IE capabilities */
-#define DOT11_RC_8021X_AUTH_FAIL 23 /* 802.1X authentication failure */
-
-#define WPA2_PMKID_LEN 16
-
-/* WPA IE fixed portion */
-typedef struct
-{
- uint8 tag; /* TAG */
- uint8 length; /* TAG length */
- uint8 oui[3]; /* IE OUI */
- uint8 oui_type; /* OUI type */
- struct {
- uint8 low;
- uint8 high;
- } PACKED version; /* IE version */
-} PACKED wpa_ie_fixed_t;
-#define WPA_IE_OUITYPE_LEN 4
-#define WPA_IE_FIXED_LEN 8
-#define WPA_IE_TAG_FIXED_LEN 6
-
-typedef struct {
- uint8 tag; /* TAG */
- uint8 length; /* TAG length */
- struct {
- uint8 low;
- uint8 high;
- } PACKED version; /* IE version */
-} PACKED wpa_rsn_ie_fixed_t;
-#define WPA_RSN_IE_FIXED_LEN 4
-#define WPA_RSN_IE_TAG_FIXED_LEN 2
-typedef uint8 wpa_pmkid_t[WPA2_PMKID_LEN];
-
-/* WPA suite/multicast suite */
-typedef struct
-{
- uint8 oui[3];
- uint8 type;
-} PACKED wpa_suite_t, wpa_suite_mcast_t;
-#define WPA_SUITE_LEN 4
-
-/* WPA unicast suite list/key management suite list */
-typedef struct
-{
- struct {
- uint8 low;
- uint8 high;
- } PACKED count;
- wpa_suite_t list[1];
-} PACKED wpa_suite_ucast_t, wpa_suite_auth_key_mgmt_t;
-#define WPA_IE_SUITE_COUNT_LEN 2
-typedef struct
-{
- struct {
- uint8 low;
- uint8 high;
- } PACKED count;
- wpa_pmkid_t list[1];
-} PACKED wpa_pmkid_list_t;
-
-/* WPA cipher suites */
-#define WPA_CIPHER_NONE 0 /* None */
-#define WPA_CIPHER_WEP_40 1 /* WEP (40-bit) */
-#define WPA_CIPHER_TKIP 2 /* TKIP: default for WPA */
-#define WPA_CIPHER_AES_OCB 3 /* AES (OCB) */
-#define WPA_CIPHER_AES_CCM 4 /* AES (CCM) */
-#define WPA_CIPHER_WEP_104 5 /* WEP (104-bit) */
-
-#define IS_WPA_CIPHER(cipher) ((cipher) == WPA_CIPHER_NONE || \
- (cipher) == WPA_CIPHER_WEP_40 || \
- (cipher) == WPA_CIPHER_WEP_104 || \
- (cipher) == WPA_CIPHER_TKIP || \
- (cipher) == WPA_CIPHER_AES_OCB || \
- (cipher) == WPA_CIPHER_AES_CCM)
-
-/* WPA TKIP countermeasures parameters */
-#define WPA_TKIP_CM_DETECT 60 /* multiple MIC failure window (seconds) */
-#define WPA_TKIP_CM_BLOCK 60 /* countermeasures active window (seconds) */
-
-/* WPA capabilities defined in 802.11i */
-#define WPA_CAP_4_REPLAY_CNTRS 2
-#define WPA_CAP_16_REPLAY_CNTRS 3
-#define WPA_CAP_REPLAY_CNTR_SHIFT 2
-#define WPA_CAP_REPLAY_CNTR_MASK 0x000c
-
-/* WPA Specific defines */
-#define WPA_CAP_LEN 2
-
-#define WPA_CAP_WPA2_PREAUTH 1
-
-#undef PACKED
-#if !defined(__GNUC__)
-#pragma pack()
-#endif
-
-#endif /* _proto_wpa_h_ */
diff --git a/openwrt/package/wificonf/include/wlioctl.h b/openwrt/package/wificonf/include/wlioctl.h
deleted file mode 100644
index 43b4e02ea9..0000000000
--- a/openwrt/package/wificonf/include/wlioctl.h
+++ /dev/null
@@ -1,1238 +0,0 @@
-/*
- * Custom OID/ioctl definitions for
- * Broadcom 802.11abg Networking Device Driver
- *
- * Definitions subject to change without notice.
- *
- * Copyright 2005, Broadcom Corporation
- * All Rights Reserved.
- *
- * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
- * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
- * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
- *
- * $Id$
- */
-
-#ifndef _wlioctl_h_
-#define _wlioctl_h_
-
-#include "typedefs.h"
-#include "proto/wpa.h"
-#include "proto/ethernet.h"
-#include "proto/bcmeth.h"
-#include "proto/bcmevent.h"
-#include "proto/802.11.h"
-
-/* require default structure packing */
-#if !defined(__GNUC__)
-#pragma pack(push,8)
-#endif
-
-#define WL_NUMRATES 255 /* max # of rates in a rateset */
-
-typedef struct wl_rateset {
- uint32 count; /* # rates in this set */
- uint8 rates[WL_NUMRATES]; /* rates in 500kbps units w/hi bit set if basic */
-} wl_rateset_t;
-
-#define WL_CHANSPEC_CHAN_MASK 0x0fff
-#define WL_CHANSPEC_BAND_MASK 0xf000
-#define WL_CHANSPEC_BAND_SHIFT 12
-#define WL_CHANSPEC_BAND_A 0x1000
-#define WL_CHANSPEC_BAND_B 0x2000
-
-/*
- * Per-bss information structure.
- */
-
-#define WL_BSS_INFO_VERSION 107 /* current version of wl_bss_info struct */
-
-typedef struct wl_bss_info {
- uint32 version; /* version field */
- uint32 length; /* byte length of data in this record, starting at version and including IEs */
- struct ether_addr BSSID;
- uint16 beacon_period; /* units are Kusec */
- uint16 capability; /* Capability information */
- uint8 SSID_len;
- uint8 SSID[32];
- struct {
- uint count; /* # rates in this set */
- uint8 rates[16]; /* rates in 500kbps units w/hi bit set if basic */
- } rateset; /* supported rates */
- uint8 channel; /* Channel no. */
- uint16 atim_window; /* units are Kusec */
- uint8 dtim_period; /* DTIM period */
- int16 RSSI; /* receive signal strength (in dBm) */
- int8 phy_noise; /* noise (in dBm) */
- uint32 ie_length; /* byte length of Information Elements */
- /* variable length Information Elements */
-} wl_bss_info_t;
-
-typedef struct wlc_ssid {
- uint32 SSID_len;
- uchar SSID[32];
-} wlc_ssid_t;
-
-typedef struct wl_scan_params {
- wlc_ssid_t ssid; /* default is {0, ""} */
- struct ether_addr bssid;/* default is bcast */
- int8 bss_type; /* default is any, DOT11_BSSTYPE_ANY/INFRASTRUCTURE/INDEPENDENT */
- int8 scan_type; /* -1 use default, DOT11_SCANTYPE_ACTIVE/PASSIVE */
- int32 nprobes; /* -1 use default, number of probes per channel */
- int32 active_time; /* -1 use default, dwell time per channel for active scanning */
- int32 passive_time; /* -1 use default, dwell time per channel for passive scanning */
- int32 home_time; /* -1 use default, dwell time for the home channel between channel scans */
- int32 channel_num; /* 0 use default (all available channels), count of channels in channel_list */
- uint16 channel_list[1]; /* list of chanspecs */
-} wl_scan_params_t;
-/* size of wl_scan_params not including variable length array */
-#define WL_SCAN_PARAMS_FIXED_SIZE 64
-
-typedef struct wl_scan_results {
- uint32 buflen;
- uint32 version;
- uint32 count;
- wl_bss_info_t bss_info[1];
-} wl_scan_results_t;
-/* size of wl_scan_results not including variable length array */
-#define WL_SCAN_RESULTS_FIXED_SIZE 12
-
-/* uint32 list */
-typedef struct wl_uint32_list {
- /* in - # of elements, out - # of entries */
- uint32 count;
- /* variable length uint32 list */
- uint32 element[1];
-} wl_uint32_list_t;
-
-#define WLC_CNTRY_BUF_SZ 4 /* Country string is 3 bytes + NULL */
-
-typedef struct wl_channels_in_country {
- uint32 buflen;
- uint32 band;
- char country_abbrev[WLC_CNTRY_BUF_SZ];
- uint32 count;
- uint32 channel[1];
-} wl_channels_in_country_t;
-
-typedef struct wl_country_list {
- uint32 buflen;
- uint32 band_set;
- uint32 band;
- uint32 count;
- char country_abbrev[1];
-} wl_country_list_t;
-
-#define WL_RM_TYPE_BASIC 1
-#define WL_RM_TYPE_CCA 2
-#define WL_RM_TYPE_RPI 3
-
-#define WL_RM_FLAG_PARALLEL (1<<0)
-
-#define WL_RM_FLAG_LATE (1<<1)
-#define WL_RM_FLAG_INCAPABLE (1<<2)
-#define WL_RM_FLAG_REFUSED (1<<3)
-
-typedef struct wl_rm_req_elt {
- int8 type;
- int8 flags;
- uint16 chanspec;
- uint32 token; /* token for this measurement */
- uint32 tsf_h; /* TSF high 32-bits of Measurement start time */
- uint32 tsf_l; /* TSF low 32-bits */
- uint32 dur; /* TUs */
-} wl_rm_req_elt_t;
-
-typedef struct wl_rm_req {
- uint32 token; /* overall measurement set token */
- uint32 count; /* number of measurement reqests */
- wl_rm_req_elt_t req[1]; /* variable length block of requests */
-} wl_rm_req_t;
-#define WL_RM_REQ_FIXED_LEN 8
-
-typedef struct wl_rm_rep_elt {
- int8 type;
- int8 flags;
- uint16 chanspec;
- uint32 token; /* token for this measurement */
- uint32 tsf_h; /* TSF high 32-bits of Measurement start time */
- uint32 tsf_l; /* TSF low 32-bits */
- uint32 dur; /* TUs */
- uint32 len; /* byte length of data block */
- uint8 data[1]; /* variable length data block */
-} wl_rm_rep_elt_t;
-#define WL_RM_REP_ELT_FIXED_LEN 24 /* length excluding data block */
-
-#define WL_RPI_REP_BIN_NUM 8
-typedef struct wl_rm_rpi_rep {
- uint8 rpi[WL_RPI_REP_BIN_NUM];
- int8 rpi_max[WL_RPI_REP_BIN_NUM];
-} wl_rm_rpi_rep_t;
-
-typedef struct wl_rm_rep {
- uint32 token; /* overall measurement set token */
- uint32 len; /* length of measurement report block */
- wl_rm_rep_elt_t rep[1]; /* variable length block of reports */
-} wl_rm_rep_t;
-#define WL_RM_REP_FIXED_LEN 8
-
-
-#define WLC_MAX_KEY_SIZE 32 /* max size of any key */
-#define WLC_MAX_IV_SIZE 16 /* max size of any IV */
-#define WLC_EXT_IV_FLAG (1<<5) /* flag to indicate IV is > 4 bytes */
-#define WLC_MAX_DEFAULT_KEYS 4 /* # of default WEP keys */
-#define WLC_MAX_KEYS 54 /* Max # of WEP keys */
-#define WLC_WEP1_KEY_SIZE 5 /* max size of any WEP key */
-#define WLC_WEP1_KEY_HEX_SIZE 10 /* size of WEP key in hex. */
-#define WLC_WEP128_KEY_SIZE 13 /* max size of any WEP key */
-#define WLC_WEP128_KEY_HEX_SIZE 26 /* size of WEP key in hex. */
-#define WLC_TKIP_MIC_SIZE 8 /* size of TKIP MIC */
-#define WLC_TKIP_EOM_SIZE 7 /* max size of TKIP EOM */
-#define WLC_TKIP_EOM_FLAG 0x5a /* TKIP EOM flag byte */
-#define WLC_TKIP_KEY_SIZE 32 /* size of any TKIP key */
-#define WLC_TKIP_MIC_AUTH_TX 16 /* offset to Authenticator MIC TX key */
-#define WLC_TKIP_MIC_AUTH_RX 24 /* offset to Authenticator MIC RX key */
-#define WLC_TKIP_MIC_SUP_RX 16 /* offset to Supplicant MIC RX key */
-#define WLC_TKIP_MIC_SUP_TX 24 /* offset to Supplicant MIC TX key */
-#define WLC_TKIP_P1_KEY_SIZE 10 /* size of TKHash Phase1 output, in bytes */
-#define WLC_TKIP_P2_KEY_SIZE 16 /* size of TKHash Phase2 output */
-#define WLC_AES_KEY_SIZE 16 /* size of AES key */
-
-
-typedef enum sup_auth_status {
- WLC_SUP_DISCONNECTED = 0,
- WLC_SUP_CONNECTING,
- WLC_SUP_IDREQUIRED,
- WLC_SUP_AUTHENTICATING,
- WLC_SUP_AUTHENTICATED,
- WLC_SUP_KEYXCHANGE,
- WLC_SUP_KEYED,
- WLC_SUP_TIMEOUT
-} sup_auth_status_t;
-
-
-/* Enumerate crypto algorithms */
-#define CRYPTO_ALGO_OFF 0
-#define CRYPTO_ALGO_WEP1 1
-#define CRYPTO_ALGO_TKIP 2
-#define CRYPTO_ALGO_WEP128 3
-#define CRYPTO_ALGO_AES_CCM 4
-#define CRYPTO_ALGO_AES_OCB_MSDU 5
-#define CRYPTO_ALGO_AES_OCB_MPDU 6
-#define CRYPTO_ALGO_NALG 7
-
-#define WSEC_GEN_MIC_ERROR 0x0001
-#define WSEC_GEN_REPLAY 0x0002
-
-#define WL_SOFT_KEY (1 << 0) /* Indicates this key is using soft encrypt */
-#define WL_PRIMARY_KEY (1 << 1) /* Indicates this key is the primary (ie tx) key */
-#define WL_KF_RES_4 (1 << 4) /* Reserved for backward compat */
-#define WL_KF_RES_5 (1 << 5) /* Reserved for backward compat */
-
-
-typedef struct wlc_tkip_info {
- uint16 phase1[WLC_TKIP_P1_KEY_SIZE/sizeof(uint16)]; /* tkhash phase1 result */
- uint8 phase2[WLC_TKIP_P2_KEY_SIZE]; /* tkhash phase2 result */
- uint32 micl;
- uint32 micr;
-} tkip_info_t;
-
-typedef struct _wsec_iv {
- uint32 hi; /* upper 32 bits of IV */
- uint16 lo; /* lower 16 bits of IV */
-} wsec_iv_t;
-
-typedef struct wsec_key {
- uint32 index; /* key index */
- uint32 len; /* key length */
- uint8 data[WLC_MAX_KEY_SIZE]; /* key data */
- tkip_info_t tkip_tx; /* tkip transmit state */
- tkip_info_t tkip_rx; /* tkip receive state */
- uint32 algo; /* CRYPTO_ALGO_AES_CCM, CRYPTO_ALGO_WEP128, etc */
- uint32 flags; /* misc flags */
- uint32 algo_hw; /* cache for hw register*/
- uint32 aes_mode; /* cache for hw register*/
- int iv_len; /* IV length */
- int iv_initialized; /* has IV been initialized already? */
- int icv_len; /* ICV length */
- wsec_iv_t rxiv; /* Rx IV */
- wsec_iv_t txiv; /* Tx IV */
- struct ether_addr ea; /* per station */
-} wsec_key_t;
-
-
-
-typedef struct wl_wsec_key {
- uint32 index; /* key index */
- uint32 len; /* key length */
- uint8 data[DOT11_MAX_KEY_SIZE]; /* key data */
- uint32 pad_1[18];
- uint32 algo; /* CRYPTO_ALGO_AES_CCM, CRYPTO_ALGO_WEP128, etc */
- uint32 flags; /* misc flags */
- uint32 pad_2[2];
- int pad_3;
- int iv_initialized; /* has IV been initialized already? */
- int pad_4;
- /* Rx IV */
- struct {
- uint32 hi; /* upper 32 bits of IV */
- uint16 lo; /* lower 16 bits of IV */
- } rxiv;
- uint32 pad_5[2];
- struct ether_addr ea; /* per station */
-} wl_wsec_key_t;
-
-
-#define WSEC_MIN_PSK_LEN 8
-#define WSEC_MAX_PSK_LEN 64
-
-/* Flag for key material needing passhash'ing */
-#define WSEC_PASSPHRASE (1<<0)
-
-/* recepticle for WLC_SET_WSEC_PMK parameter */
-typedef struct {
- ushort key_len; /* octets in key material */
- ushort flags; /* key handling qualification */
- uint8 key[WSEC_MAX_PSK_LEN]; /* PMK material */
-} wsec_pmk_t;
-
-/* wireless security bitvec */
-#define WEP_ENABLED 0x0001
-#define TKIP_ENABLED 0x0002
-#define AES_ENABLED 0x0004
-#define WSEC_SWFLAG 0x0008
-#define SES_OW_ENABLED 0x0040 /* to go into transition mode without setting wep */
-
-/* WPA authentication mode bitvec */
-#define WPA_AUTH_DISABLED 0x0000 /* Legacy (i.e., non-WPA) */
-#define WPA_AUTH_NONE 0x0001 /* none (IBSS) */
-#define WPA_AUTH_UNSPECIFIED 0x0002 /* over 802.1x */
-#define WPA_AUTH_PSK 0x0004 /* Pre-shared key */
-/*#define WPA_AUTH_8021X 0x0020*/ /* 802.1x, reserved */
-
-#define WPA2_AUTH_UNSPECIFIED 0x0040 /* over 802.1x */
-#define WPA2_AUTH_PSK 0x0080 /* Pre-shared key */
-
-
-
-/* pmkid */
-#define MAXPMKID 16
-
-typedef struct _pmkid
-{
- struct ether_addr BSSID;
- uint8 PMKID[WPA2_PMKID_LEN];
-} pmkid_t;
-
-typedef struct _pmkid_list
-{
- uint32 npmkid;
- pmkid_t pmkid[1];
-} pmkid_list_t;
-
-typedef struct _pmkid_cand {
- struct ether_addr BSSID;
- uint8 preauth;
-} pmkid_cand_t;
-
-typedef struct _pmkid_cand_list {
- uint32 npmkid_cand;
- pmkid_cand_t pmkid_cand[1];
-} pmkid_cand_list_t;
-
-
-typedef struct wl_led_info {
- uint32 index; /* led index */
- uint32 behavior;
- bool activehi;
-} wl_led_info_t;
-
-typedef struct wlc_assoc_info {
- uint32 req_len;
- uint32 resp_len;
- uint32 flags;
- struct dot11_assoc_req req;
- struct ether_addr reassoc_bssid; /* used in reassoc's */
- struct dot11_assoc_resp resp;
-} wl_assoc_info_t;
-/* flags */
-#define WLC_ASSOC_REQ_IS_REASSOC 0x01 /* assoc req was actually a reassoc */
-/* srom read/write struct passed through ioctl */
-typedef struct {
- uint byteoff; /* byte offset */
- uint nbytes; /* number of bytes */
- uint16 buf[1];
-} srom_rw_t;
-
-/* R_REG and W_REG struct passed through ioctl */
-typedef struct {
- uint32 byteoff; /* byte offset of the field in d11regs_t */
- uint32 val; /* read/write value of the field */
- uint32 size; /* sizeof the field */
- uint band; /* band (optional) */
-} rw_reg_t;
-
-/* Structure used by GET/SET_ATTEN ioctls */
-typedef struct {
- uint16 auto_ctrl; /* 1: Automatic control, 0: overriden */
- uint16 bb; /* Baseband attenuation */
- uint16 radio; /* Radio attenuation */
- uint16 txctl1; /* Radio TX_CTL1 value */
-} atten_t;
-
-/* Used to get specific STA parameters */
-typedef struct {
- uint32 val;
- struct ether_addr ea;
-} scb_val_t;
-
-
-/* Event data type */
-typedef struct wlc_event {
- wl_event_msg_t event; /* encapsulated event */
- struct ether_addr *addr; /* used to keep a trace of the potential present of
- an address in wlc_event_msg_t */
- void *data; /* used to hang additional data on an event */
- struct wlc_event *next; /* enables ordered list of pending events */
-} wlc_event_t;
-
-#define BCM_MAC_STATUS_INDICATION (0x40010200L)
-
-typedef struct {
- uint16 ver; /* version of this struct */
- uint16 len; /* length in bytes of this structure */
- uint16 cap; /* sta's advertized capabilities */
- uint32 flags; /* flags defined below */
- uint32 idle; /* time since data pkt rx'd from sta */
- struct ether_addr ea; /* Station address */
- wl_rateset_t rateset; /* rateset in use */
- uint32 in; /* seconds elapsed since associated */
- uint32 listen_interval_inms; /* Min Listen interval in ms for this STA*/
-} sta_info_t;
-
-#define WL_STA_VER 2
-
-/* flags fields */
-#define WL_STA_BRCM 0x01
-#define WL_STA_WME 0x02
-#define WL_STA_ABCAP 0x04
-#define WL_STA_AUTHE 0x08
-#define WL_STA_ASSOC 0x10
-#define WL_STA_AUTHO 0x20
-#define WL_STA_WDS 0x40
-#define WL_WDS_LINKUP 0x80
-
-/*
- * Country locale determines which channels are available to us.
- */
-typedef enum _wlc_locale {
- WLC_WW = 0, /* Worldwide */
- WLC_THA, /* Thailand */
- WLC_ISR, /* Israel */
- WLC_JDN, /* Jordan */
- WLC_PRC, /* China */
- WLC_JPN, /* Japan */
- WLC_FCC, /* USA */
- WLC_EUR, /* Europe */
- WLC_USL, /* US Low Band only */
- WLC_JPH, /* Japan High Band only */
- WLC_ALL, /* All the channels in this band */
- WLC_11D, /* Represents locale recieved by 11d beacons */
- WLC_LAST_LOCALE,
- WLC_UNDEFINED_LOCALE = 0xf
-} wlc_locale_t;
-
-/* channel encoding */
-typedef struct channel_info {
- int hw_channel;
- int target_channel;
- int scan_channel;
-} channel_info_t;
-
-/* For ioctls that take a list of MAC addresses */
-struct maclist {
- uint count; /* number of MAC addresses */
- struct ether_addr ea[1]; /* variable length array of MAC addresses */
-};
-
-/* get pkt count struct passed through ioctl */
-typedef struct get_pktcnt {
- uint rx_good_pkt;
- uint rx_bad_pkt;
- uint tx_good_pkt;
- uint tx_bad_pkt;
-} get_pktcnt_t;
-
-/* Linux network driver ioctl encoding */
-typedef struct wl_ioctl {
- uint cmd; /* common ioctl definition */
- void *buf; /* pointer to user buffer */
- uint len; /* length of user buffer */
- bool set; /* get or set request (optional) */
- uint used; /* bytes read or written (optional) */
- uint needed; /* bytes needed (optional) */
-} wl_ioctl_t;
-
-/*
- * Structure for passing hardware and software
- * revision info up from the driver.
- */
-typedef struct wlc_rev_info {
- uint vendorid; /* PCI vendor id */
- uint deviceid; /* device id of chip */
- uint radiorev; /* radio revision */
- uint chiprev; /* chip revision */
- uint corerev; /* core revision */
- uint boardid; /* board identifier (usu. PCI sub-device id) */
- uint boardvendor; /* board vendor (usu. PCI sub-vendor id) */
- uint boardrev; /* board revision */
- uint driverrev; /* driver version */
- uint ucoderev; /* microcode version */
- uint bus; /* bus type */
- uint chipnum; /* chip number */
-} wlc_rev_info_t;
-
-#define WL_BRAND_MAX 10
-typedef struct wl_instance_info {
- uint instance;
- char brand[WL_BRAND_MAX];
-} wl_instance_info_t;
-
-/* check this magic number */
-#define WLC_IOCTL_MAGIC 0x14e46c77
-
-/* bump this number if you change the ioctl interface */
-#define WLC_IOCTL_VERSION 1
-
-#define WLC_IOCTL_MAXLEN 8192 /* max length ioctl buffer required */
-#define WLC_IOCTL_SMLEN 256 /* "small" length ioctl buffer required */
-
-/* common ioctl definitions */
-#define WLC_GET_MAGIC 0
-#define WLC_GET_VERSION 1
-#define WLC_UP 2
-#define WLC_DOWN 3
-#define WLC_DUMP 6
-#define WLC_GET_MSGLEVEL 7
-#define WLC_SET_MSGLEVEL 8
-#define WLC_GET_PROMISC 9
-#define WLC_SET_PROMISC 10
-#define WLC_GET_RATE 12
-/* #define WLC_SET_RATE 13 */ /* no longer supported */
-#define WLC_GET_INSTANCE 14
-#define WLC_GET_FRAG 15 /* no longer supported in the new driver */
-#define WLC_SET_FRAG 16 /* no longer supported in the new driver */
-#define WLC_GET_RTS 17 /* no longer supported in the new driver */
-#define WLC_SET_RTS 18 /* no longer supported in the new driver */
-#define WLC_GET_INFRA 19
-#define WLC_SET_INFRA 20
-#define WLC_GET_AUTH 21
-#define WLC_SET_AUTH 22
-#define WLC_GET_BSSID 23
-#define WLC_SET_BSSID 24
-#define WLC_GET_SSID 25
-#define WLC_SET_SSID 26
-#define WLC_RESTART 27
-#define WLC_DUMP_SCB 28
-#define WLC_GET_CHANNEL 29
-#define WLC_SET_CHANNEL 30
-#define WLC_GET_SRL 31
-#define WLC_SET_SRL 32
-#define WLC_GET_LRL 33
-#define WLC_SET_LRL 34
-#define WLC_GET_PLCPHDR 35
-#define WLC_SET_PLCPHDR 36
-#define WLC_GET_RADIO 37
-#define WLC_SET_RADIO 38
-#define WLC_GET_PHYTYPE 39
-#define WLC_DUMP_RATE 40
-#define WLC_SET_RATE_PARAMS 41
-#define WLC_GET_WEP 42
-#define WLC_SET_WEP 43
-#define WLC_GET_KEY 44
-#define WLC_SET_KEY 45
-#define WLC_GET_REGULATORY 46
-#define WLC_SET_REGULATORY 47
-#define WLC_GET_PASSIVE 48
-#define WLC_SET_PASSIVE 49
-#define WLC_SCAN 50
-#define WLC_SCAN_RESULTS 51
-#define WLC_DISASSOC 52
-#define WLC_REASSOC 53
-#define WLC_GET_ROAM_TRIGGER 54
-#define WLC_SET_ROAM_TRIGGER 55
-#define WLC_GET_ROAM_DELTA 56
-#define WLC_SET_ROAM_DELTA 57
-#define WLC_GET_ROAM_SCAN_PERIOD 58
-#define WLC_SET_ROAM_SCAN_PERIOD 59
-#define WLC_EVM 60
-#define WLC_GET_TXANT 61
-#define WLC_SET_TXANT 62
-#define WLC_GET_ANTDIV 63
-#define WLC_SET_ANTDIV 64
-#define WLC_GET_TXPWR 65
-#define WLC_SET_TXPWR 66
-#define WLC_GET_CLOSED 67
-#define WLC_SET_CLOSED 68
-#define WLC_GET_MACLIST 69
-#define WLC_SET_MACLIST 70
-#define WLC_GET_RATESET 71
-#define WLC_SET_RATESET 72
-#define WLC_GET_LOCALE 73
-// #define WLC_SET_LOCALE 74
-#define WLC_GET_BCNPRD 75
-#define WLC_SET_BCNPRD 76
-#define WLC_GET_DTIMPRD 77
-#define WLC_SET_DTIMPRD 78
-#define WLC_GET_SROM 79
-#define WLC_SET_SROM 80
-#define WLC_GET_WEP_RESTRICT 81
-#define WLC_SET_WEP_RESTRICT 82
-#define WLC_GET_COUNTRY 83
-#define WLC_SET_COUNTRY 84
-#define WLC_GET_PM 85
-#define WLC_SET_PM 86
-#define WLC_GET_WAKE 87
-#define WLC_SET_WAKE 88
-#define WLC_GET_D11CNTS 89
-#define WLC_GET_FORCELINK 90 /* ndis only */
-#define WLC_SET_FORCELINK 91 /* ndis only */
-#define WLC_FREQ_ACCURACY 92
-#define WLC_CARRIER_SUPPRESS 93
-#define WLC_GET_PHYREG 94
-#define WLC_SET_PHYREG 95
-#define WLC_GET_RADIOREG 96
-#define WLC_SET_RADIOREG 97
-#define WLC_GET_REVINFO 98
-#define WLC_GET_UCANTDIV 99
-#define WLC_SET_UCANTDIV 100
-#define WLC_R_REG 101
-#define WLC_W_REG 102
-#define WLC_DIAG_LOOPBACK 103
-#define WLC_RESET_D11CNTS 104
-#define WLC_GET_MACMODE 105
-#define WLC_SET_MACMODE 106
-#define WLC_GET_MONITOR 107
-#define WLC_SET_MONITOR 108
-#define WLC_GET_GMODE 109
-#define WLC_SET_GMODE 110
-#define WLC_GET_LEGACY_ERP 111
-#define WLC_SET_LEGACY_ERP 112
-#define WLC_GET_RX_ANT 113
-#define WLC_GET_CURR_RATESET 114 /* current rateset */
-#define WLC_GET_SCANSUPPRESS 115
-#define WLC_SET_SCANSUPPRESS 116
-#define WLC_GET_AP 117
-#define WLC_SET_AP 118
-#define WLC_GET_EAP_RESTRICT 119
-#define WLC_SET_EAP_RESTRICT 120
-#define WLC_SCB_AUTHORIZE 121
-#define WLC_SCB_DEAUTHORIZE 122
-#define WLC_GET_WDSLIST 123
-#define WLC_SET_WDSLIST 124
-#define WLC_GET_ATIM 125
-#define WLC_SET_ATIM 126
-#define WLC_GET_RSSI 127
-#define WLC_GET_PHYANTDIV 128
-#define WLC_SET_PHYANTDIV 129
-#define WLC_AP_RX_ONLY 130
-#define WLC_GET_TX_PATH_PWR 131
-#define WLC_SET_TX_PATH_PWR 132
-#define WLC_GET_WSEC 133
-#define WLC_SET_WSEC 134
-#define WLC_GET_PHY_NOISE 135
-#define WLC_GET_BSS_INFO 136
-#define WLC_GET_PKTCNTS 137
-#define WLC_GET_LAZYWDS 138
-#define WLC_SET_LAZYWDS 139
-#define WLC_GET_BANDLIST 140
-#define WLC_GET_BAND 141
-#define WLC_SET_BAND 142
-#define WLC_SCB_DEAUTHENTICATE 143
-#define WLC_GET_SHORTSLOT 144
-#define WLC_GET_SHORTSLOT_OVERRIDE 145
-#define WLC_SET_SHORTSLOT_OVERRIDE 146
-#define WLC_GET_SHORTSLOT_RESTRICT 147
-#define WLC_SET_SHORTSLOT_RESTRICT 148
-#define WLC_GET_GMODE_PROTECTION 149
-#define WLC_GET_GMODE_PROTECTION_OVERRIDE 150
-#define WLC_SET_GMODE_PROTECTION_OVERRIDE 151
-#define WLC_UPGRADE 152
-#define WLC_GET_MRATE 153
-#define WLC_SET_MRATE 154
-#define WLC_GET_IGNORE_BCNS 155
-#define WLC_SET_IGNORE_BCNS 156
-#define WLC_GET_SCB_TIMEOUT 157
-#define WLC_SET_SCB_TIMEOUT 158
-#define WLC_GET_ASSOCLIST 159
-#define WLC_GET_CLK 160
-#define WLC_SET_CLK 161
-#define WLC_GET_UP 162
-#define WLC_OUT 163
-#define WLC_GET_WPA_AUTH 164
-#define WLC_SET_WPA_AUTH 165
-#define WLC_GET_UCFLAGS 166
-#define WLC_SET_UCFLAGS 167
-#define WLC_GET_PWRIDX 168
-#define WLC_SET_PWRIDX 169
-#define WLC_GET_TSSI 170
-#define WLC_GET_SUP_RATESET_OVERRIDE 171
-#define WLC_SET_SUP_RATESET_OVERRIDE 172
-#define WLC_SET_FAST_TIMER 173
-#define WLC_GET_FAST_TIMER 174
-#define WLC_SET_SLOW_TIMER 175
-#define WLC_GET_SLOW_TIMER 176
-#define WLC_DUMP_PHYREGS 177
-#define WLC_GET_GMODE_PROTECTION_CONTROL 178
-#define WLC_SET_GMODE_PROTECTION_CONTROL 179
-#define WLC_GET_PHYLIST 180
-#define WLC_ENCRYPT_STRENGTH 181 /* ndis only */
-#define WLC_DECRYPT_STATUS 182 /* ndis only */
-#define WLC_GET_KEY_SEQ 183
-#define WLC_GET_SCAN_CHANNEL_TIME 184
-#define WLC_SET_SCAN_CHANNEL_TIME 185
-#define WLC_GET_SCAN_UNASSOC_TIME 186
-#define WLC_SET_SCAN_UNASSOC_TIME 187
-#define WLC_GET_SCAN_HOME_TIME 188
-#define WLC_SET_SCAN_HOME_TIME 189
-#define WLC_GET_SCAN_PASSES 190
-#define WLC_SET_SCAN_PASSES 191
-#define WLC_GET_PRB_RESP_TIMEOUT 192
-#define WLC_SET_PRB_RESP_TIMEOUT 193
-#define WLC_GET_ATTEN 194
-#define WLC_SET_ATTEN 195
-#define WLC_GET_SHMEM 196 /* diag */
-#define WLC_SET_SHMEM 197 /* diag */
-#define WLC_GET_GMODE_PROTECTION_CTS 198
-#define WLC_SET_GMODE_PROTECTION_CTS 199
-#define WLC_SET_TKIP_MIC_FLAG 200
-#define WLC_SCB_DEAUTHENTICATE_FOR_REASON 201
-#define WLC_TKIP_COUNTERMEASURES 202
-#define WLC_GET_PIOMODE 203
-#define WLC_SET_PIOMODE 204
-#define WLC_SET_LED 209
-#define WLC_GET_LED 210
-#define WLC_GET_INTERFERENCE_MODE 211
-#define WLC_SET_INTERFERENCE_MODE 212
-#define WLC_GET_CHANNEL_QA 213
-#define WLC_START_CHANNEL_QA 214
-#define WLC_GET_CHANNEL_SEL 215
-#define WLC_START_CHANNEL_SEL 216
-#define WLC_GET_VALID_CHANNELS 217
-#define WLC_GET_FAKEFRAG 218
-#define WLC_SET_FAKEFRAG 219
-#define WLC_GET_PWROUT_PERCENTAGE 220
-#define WLC_SET_PWROUT_PERCENTAGE 221
-#define WLC_SET_BAD_FRAME_PREEMPT 222
-#define WLC_GET_BAD_FRAME_PREEMPT 223
-#define WLC_SET_LEAP_LIST 224
-#define WLC_GET_LEAP_LIST 225
-#define WLC_GET_CWMIN 226
-#define WLC_SET_CWMIN 227
-#define WLC_GET_CWMAX 228
-#define WLC_SET_CWMAX 229
-#define WLC_GET_WET 230
-#define WLC_SET_WET 231
-#define WLC_GET_KEY_PRIMARY 235
-#define WLC_SET_KEY_PRIMARY 236
-#define WLC_SCAN_WITH_CALLBACK 240
-#define WLC_GET_RADAR 242
-#define WLC_SET_RADAR 243
-#define WLC_SET_SPECT_MANAGMENT 244
-#define WLC_GET_SPECT_MANAGMENT 245
-#define WLC_WDS_GET_REMOTE_HWADDR 246 /* currently handled in wl_linux.c/wl_vx.c */
-#define WLC_SET_CS_SCAN_TIMER 248
-#define WLC_GET_CS_SCAN_TIMER 249
-#define WLC_SEND_PWR_CONSTRAINT 254
-#define WLC_CURRENT_PWR 256
-#define WLC_GET_CHANNELS_IN_COUNTRY 260
-#define WLC_GET_COUNTRY_LIST 261
-#define WLC_GET_VAR 262 /* get value of named variable */
-#define WLC_SET_VAR 263 /* set named variable to value */
-#define WLC_NVRAM_GET 264
-#define WLC_NVRAM_SET 265
-#define WLC_SET_WSEC_PMK 268
-#define WLC_GET_AUTH_MODE 269
-#define WLC_SET_AUTH_MODE 270
-#define WLC_NDCONFIG_ITEM 273 /* currently handled in wl_oid.c */
-#define WLC_NVOTPW 274
-/* #define WLC_OTPW 275 */ /* no longer supported */
-#define WLC_SET_LOCALE 278
-#define WLC_LAST 279 /* do not change - use get_var/set_var */
-
-/*
- * Minor kludge alert:
- * Duplicate a few definitions that irelay requires from epiioctl.h here
- * so caller doesn't have to include this file and epiioctl.h .
- * If this grows any more, it would be time to move these irelay-specific
- * definitions out of the epiioctl.h and into a separate driver common file.
- */
-#ifndef EPICTRL_COOKIE
-#define EPICTRL_COOKIE 0xABADCEDE
-#endif
-
-/* vx wlc ioctl's offset */
-#define CMN_IOCTL_OFF 0x180
-
-/*
- * custom OID support
- *
- * 0xFF - implementation specific OID
- * 0xE4 - first byte of Broadcom PCI vendor ID
- * 0x14 - second byte of Broadcom PCI vendor ID
- * 0xXX - the custom OID number
- */
-
-/* begin 0x1f values beyond the start of the ET driver range. */
-#define WL_OID_BASE 0xFFE41420
-
-/* NDIS overrides */
-#define OID_WL_GETINSTANCE (WL_OID_BASE + WLC_GET_INSTANCE)
-#define OID_WL_NDCONFIG_ITEM (WL_OID_BASE + WLC_NDCONFIG_ITEM)
-
-#define WL_DECRYPT_STATUS_SUCCESS 1
-#define WL_DECRYPT_STATUS_FAILURE 2
-#define WL_DECRYPT_STATUS_UNKNOWN 3
-
-/* allows user-mode app to poll the status of USB image upgrade */
-#define WLC_UPGRADE_SUCCESS 0
-#define WLC_UPGRADE_PENDING 1
-
-/* Bit masks for radio disabled status - returned by WL_GET_RADIO */
-#define WL_RADIO_SW_DISABLE (1<<0)
-#define WL_RADIO_HW_DISABLE (1<<1)
-#define WL_RADIO_MPC_DISABLE (1<<2)
-#define WL_RADIO_COUNTRY_DISABLE (1<<3) /* some countries don't support any 802.11 channel */
-
-/* Override bit for WLC_SET_TXPWR. if set, ignore other level limits */
-#define WL_TXPWR_OVERRIDE (1<<31)
-
-/* "diag" iovar argument and error code */
-#define WL_DIAG_INTERRUPT 1 /* d11 loopback interrupt test */
-#define WL_DIAG_MEMORY 3 /* d11 memory test */
-#define WL_DIAG_LED 4 /* LED test */
-#define WL_DIAG_REG 5 /* d11/phy register test */
-#define WL_DIAG_SROM 6 /* srom read/crc test */
-#define WL_DIAG_DMA 7 /* DMA test */
-
-#define WL_DIAGERR_SUCCESS 0
-#define WL_DIAGERR_FAIL_TO_RUN 1 /* unable to run requested diag */
-#define WL_DIAGERR_NOT_SUPPORTED 2 /* diag requested is not supported */
-#define WL_DIAGERR_INTERRUPT_FAIL 3 /* loopback interrupt test failed */
-#define WL_DIAGERR_LOOPBACK_FAIL 4 /* loopback data test failed */
-#define WL_DIAGERR_SROM_FAIL 5 /* srom read failed */
-#define WL_DIAGERR_SROM_BADCRC 6 /* srom crc failed */
-#define WL_DIAGERR_REG_FAIL 7 /* d11/phy register test failed */
-#define WL_DIAGERR_MEMORY_FAIL 8 /* d11 memory test failed */
-#define WL_DIAGERR_NOMEM 9 /* diag test failed due to no memory */
-#define WL_DIAGERR_DMA_FAIL 10 /* DMA test failed */
-
-/* Bus types */
-#define WL_SB_BUS 0 /* Silicon Backplane */
-#define WL_PCI_BUS 1 /* PCI target */
-#define WL_PCMCIA_BUS 2 /* PCMCIA target */
-
-/* band types */
-#define WLC_BAND_AUTO 0 /* auto-select */
-#define WLC_BAND_A 1 /* "a" band (5 Ghz) */
-#define WLC_BAND_B 2 /* "b" band (2.4 Ghz) */
-
-/* phy types (returned by WLC_GET_PHYTPE) */
-#define WLC_PHY_TYPE_A 0
-#define WLC_PHY_TYPE_B 1
-#define WLC_PHY_TYPE_G 2
-#define WLC_PHY_TYPE_NULL 0xf
-
-/* MAC list modes */
-#define WLC_MACMODE_DISABLED 0 /* MAC list disabled */
-#define WLC_MACMODE_DENY 1 /* Deny specified (i.e. allow unspecified) */
-#define WLC_MACMODE_ALLOW 2 /* Allow specified (i.e. deny unspecified) */
-
-
-/* 54g modes (basic bits may still be overridden) */
-#define GMODE_LEGACY_B 0 /* Rateset: 1b, 2b, 5.5, 11 */
- /* Preamble: Long */
- /* Shortslot: Off */
-#define GMODE_AUTO 1 /* Rateset: 1b, 2b, 5.5b, 11b, 18, 24, 36, 54 */
- /* Extended Rateset: 6, 9, 12, 48 */
- /* Preamble: Long */
- /* Shortslot: Auto */
-#define GMODE_ONLY 2 /* Rateset: 1b, 2b, 5.5b, 11b, 18, 24b, 36, 54 */
- /* Extended Rateset: 6b, 9, 12b, 48 */
- /* Preamble: Short required */
- /* Shortslot: Auto */
-#define GMODE_B_DEFERRED 3 /* Rateset: 1b, 2b, 5.5b, 11b, 18, 24, 36, 54 */
- /* Extended Rateset: 6, 9, 12, 48 */
- /* Preamble: Long */
- /* Shortslot: On */
-#define GMODE_PERFORMANCE 4 /* Rateset: 1b, 2b, 5.5b, 6b, 9, 11b, 12b, 18, 24b, 36, 48, 54 */
- /* Preamble: Short required */
- /* Shortslot: On and required */
-#define GMODE_LRS 5 /* Rateset: 1b, 2b, 5.5b, 11b */
- /* Extended Rateset: 6, 9, 12, 18, 24, 36, 48, 54 */
- /* Preamble: Long */
- /* Shortslot: Auto */
-#define GMODE_MAX 6
-
-
-/* values for PLCPHdr_override */
-#define WLC_PLCP_AUTO -1
-#define WLC_PLCP_SHORT 0
-#define WLC_PLCP_LONG 1
-
-/* values for g_protection_override */
-#define WLC_G_PROTECTION_AUTO -1
-#define WLC_G_PROTECTION_OFF 0
-#define WLC_G_PROTECTION_ON 1
-
-/* values for g_protection_control */
-#define WLC_G_PROTECTION_CTL_OFF 0
-#define WLC_G_PROTECTION_CTL_LOCAL 1
-#define WLC_G_PROTECTION_CTL_OVERLAP 2
-
-/* Values for PM */
-#define PM_OFF 0
-#define PM_MAX 1
-#define PM_FAST 2
-
-/* interference mitigation options */
-#define INTERFERE_NONE 0 /* off */
-#define NON_WLAN 1 /* foreign/non 802.11 interference, no auto detect */
-#define WLAN_MANUAL 2 /* ACI: no auto detection */
-#define WLAN_AUTO 3 /* ACI: auto - detact */
-
-/* Message levels */
-#define WL_ERROR_VAL 0x0001
-#define WL_TRACE_VAL 0x0002
-#define WL_PRHDRS_VAL 0x0004
-#define WL_PRPKT_VAL 0x0008
-#define WL_INFORM_VAL 0x0010
-#define WL_TMP_VAL 0x0020
-#define WL_OID_VAL 0x0040
-#define WL_RATE_VAL 0x0080
-#define WL_ASSOC_VAL 0x0100
-#define WL_PRUSR_VAL 0x0200
-#define WL_PS_VAL 0x0400
-#define WL_TXPWR_VAL 0x0800
-#define WL_GMODE_VAL 0x1000
-#define WL_DUAL_VAL 0x2000
-#define WL_WSEC_VAL 0x4000
-#define WL_WSEC_DUMP_VAL 0x8000
-#define WL_LOG_VAL 0x10000
-#define WL_NRSSI_VAL 0x20000
-#define WL_LOFT_VAL 0x40000
-#define WL_REGULATORY_VAL 0x80000
-#define WL_ACI_VAL 0x100000
-
-
-/* 802.11h enforcement levels */
-#define SPECT_MNGMT_OFF 0 /* 11h disabled */
-#define SPECT_MNGMT_LOOSE 1 /* Allow scan lists to contain non-11h AP */
- /* when 11h is enabled */
-#define SPECT_MNGMT_STRICT 2 /* Prine out non-11h APs from scan list */
-
-typedef struct {
- int npulses; /* required number of pulses at n * t_int */
- int ncontig; /* required number of pulses at t_int */
- int min_pw; /* minimum pulse width (20 MHz clocks) */
- int max_pw; /* maximum pulse width (20 MHz clocks) */
- uint16 thresh0; /* Radar detection, thresh 0 */
- uint16 thresh1; /* Radar detection, thresh 1 */
-} wl_radar_args_t;
-
-/* radar iovar SET defines */
-#define WL_RADRA_DETECTOR_OFF 0 /* radar dector off */
-#define WL_RADAR_DETECTOR_ON 1 /* radar detector on */
-#define WL_RADAR_SIMULATED 2 /* force radar detector to declare detection once */
-
-/* dfs_status iovar-related defines */
-
-/* cac - channel availability check,
- * ism - in-service monitoring
- * csa - channel switching anouncement
- */
-
-/* cac state values */
-#define WL_DFS_CACSTATE_IDLE 0 /* state for operating in non-radar channel */
-#define WL_DFS_CACSTATE_PREISM_CAC 1 /* CAC in progress */
-#define WL_DFS_CACSTATE_ISM 2 /* ISM in progress */
-#define WL_DFS_CACSTATE_CSA 3 /* csa */
-#define WL_DFS_CACSTATE_POSTISM_CAC 4 /* ISM CAC */
-#define WL_DFS_CACSTATE_PREISM_OOC 5 /* PREISM OOC */
-#define WL_DFS_CACSTATE_POSTISM_OOC 6 /* POSTISM OOC */
-#define WL_DFS_CACSTATES 7 /* this many states exist */
-
-/* data structure used in 'dfs_status' wl interface, which is used to query dfs status */
-typedef struct {
- uint state; /* noted by WL_DFS_CACSTATE_XX. */
- uint duration; /* time spent in ms in state. */
- /* as dfs enters ISM state, it removes the operational channel from quiet channel list
- * and notes the channel in channel_cleared. set to 0 if no channel is cleared
- */
- uint channel_cleared;
-} wl_dfs_status_t;
-
-#define NUM_PWRCTRL_RATES 12
-
-
-/* 802.11h enforcement levels */
-#define SPECT_MNGMT_OFF 0 /* 11h disabled */
-#define SPECT_MNGMT_LOOSE 1 /* allow scan lists to contain non-11h AP */
-#define SPECT_MNGMT_STRICT 2 /* prune out non-11h APs from scan list */
-#define SPECT_MNGMT_11D 3 /* switch to 802.11D mode */
-
-#define WL_CHAN_VALID_HW (1 << 0) /* valid with current HW */
-#define WL_CHAN_VALID_SW (1 << 1) /* valid with current country setting */
-#define WL_CHAN_BAND_A (1 << 2) /* A-band channel */
-#define WL_CHAN_RADAR (1 << 3) /* radar sensitive channel */
-#define WL_CHAN_INACTIVE (1 << 4) /* temporarily out of service due to radar */
-#define WL_CHAN_RADAR_PASSIVE (1 << 5) /* radar channel is in passive mode */
-
-#define WL_MPC_VAL 0x00400000
-#define WL_APSTA_VAL 0x00800000
-#define WL_DFS_VAL 0x01000000
-
-
-/* max # of leds supported by GPIO (gpio pin# == led index#) */
-#define WL_LED_NUMGPIO 16 /* gpio 0-15 */
-
-/* led per-pin behaviors */
-#define WL_LED_OFF 0 /* always off */
-#define WL_LED_ON 1 /* always on */
-#define WL_LED_ACTIVITY 2 /* activity */
-#define WL_LED_RADIO 3 /* radio enabled */
-#define WL_LED_ARADIO 4 /* 5 Ghz radio enabled */
-#define WL_LED_BRADIO 5 /* 2.4Ghz radio enabled */
-#define WL_LED_BGMODE 6 /* on if gmode, off if bmode */
-#define WL_LED_WI1 7
-#define WL_LED_WI2 8
-#define WL_LED_WI3 9
-#define WL_LED_ASSOC 10 /* associated state indicator */
-#define WL_LED_INACTIVE 11 /* null behavior (clears default behavior) */
-#define WL_LED_NUMBEHAVIOR 12
-
-/* led behavior numeric value format */
-#define WL_LED_BEH_MASK 0x7f /* behavior mask */
-#define WL_LED_AL_MASK 0x80 /* activelow (polarity) bit */
-
-
-/* maximum channels */
-#define WL_NUMCHANNELS 64 /* max # of channels in the band */
-
-/* rate check */
-#define WL_RATE_OFDM(r) (((r) & 0x7f) == 12 || ((r) & 0x7f) == 18 || \
- ((r) & 0x7f) == 24 || ((r) & 0x7f) == 36 || \
- ((r) & 0x7f) == 48 || ((r) & 0x7f) == 72 || \
- ((r) & 0x7f) == 96 || ((r) & 0x7f) == 108)
-
-/* WDS link local endpoint WPA role */
-#define WL_WDS_WPA_ROLE_AUTH 0 /* authenticator */
-#define WL_WDS_WPA_ROLE_SUP 1 /* supplicant */
-#define WL_WDS_WPA_ROLE_AUTO 255 /* auto, based on mac addr value */
-
-/* afterburner_override */
-#define ABO_AUTO -1 /* auto - no override */
-#define ABO_OFF 0 /* force afterburner off */
-#define ABO_ON 1 /* force afterburner on */
-
-#define GMODE_AFTERBURNER 6
-
-/* number of bytes needed to define a 128-bit mask for MAC event reporting */
-#define WL_EVENTING_MASK_LEN 16
-
-/* Structures and constants used for "vndr_ie" IOVar interface */
-#define VNDR_IE_CMD_LEN 4 /* length of the set command string: "add", "del" (+ NULL) */
-
-/* 802.11 Mgmt Packet flags */
-#define VNDR_IE_BEACON_FLAG 0x1
-#define VNDR_IE_PRBRSP_FLAG 0x2
-#define VNDR_IE_ASSOCRSP_FLAG 0x4
-#define VNDR_IE_AUTHRSP_FLAG 0x8
-
-typedef struct {
- uint32 pktflag; /* bitmask indicating which packet(s) contain this IE */
- vndr_ie_t vndr_ie_data; /* vendor IE data */
-} vndr_ie_info_t;
-
-typedef struct {
- int iecount; /* number of entries in the vndr_ie_list[] array */
- vndr_ie_info_t vndr_ie_list[1]; /* variable size list of vndr_ie_info_t structs */
-} vndr_ie_buf_t;
-
-typedef struct {
- char cmd[VNDR_IE_CMD_LEN]; /* vndr_ie IOVar set command : "add", "del" + NULL */
- vndr_ie_buf_t vndr_ie_buffer; /* buffer containing Vendor IE list information */
-} vndr_ie_setbuf_t;
-
-/* join target preference types */
-#define WL_JOIN_PREF_RSSI 1 /* by RSSI, mandatory */
-#define WL_JOIN_PREF_WPA 2 /* by akm and ciphers, optional, RSN and WPA as values */
-#define WL_JOIN_PREF_BAND 3 /* by 802.11 band, optional, WLC_BAND_XXXX as values */
-
-/* band preference */
-#define WLJP_BAND_ASSOC_PREF 255 /* use assoc preference settings */
- /* others use WLC_BAND_XXXX as values */
-
-/* any multicast cipher suite */
-#define WL_WPA_ACP_MCS_ANY "\x00\x00\x00\x00"
-
-#if !defined(__GNUC__)
-#pragma pack(pop)
-#endif
-
-#define NFIFO 6 /* # tx/rx fifopairs */
-
-#define WL_CNT_T_VERSION 1 /* current version of wl_cnt_t struct */
-
-typedef struct {
- uint16 version; /* see definition of WL_CNT_T_VERSION */
- uint16 length; /* length of entire structure */
-
- /* transmit stat counters */
- uint32 txframe; /* tx data frames */
- uint32 txbyte; /* tx data bytes */
- uint32 txretrans; /* tx mac retransmits */
- uint32 txerror; /* tx data errors */
- uint32 txctl; /* tx management frames */
- uint32 txprshort; /* tx short preamble frames */
- uint32 txserr; /* tx status errors */
- uint32 txnobuf; /* tx out of buffers errors */
- uint32 txnoassoc; /* tx discard because we're not associated */
- uint32 txrunt; /* tx runt frames */
- uint32 txchit; /* tx header cache hit (fastpath) */
- uint32 txcmiss; /* tx header cache miss (slowpath) */
-
- /* transmit chip error counters */
- uint32 txuflo; /* tx fifo underflows */
- uint32 txphyerr; /* tx phy errors (indicated in tx status) */
- uint32 txphycrs;
-
- /* receive stat counters */
- uint32 rxframe; /* rx data frames */
- uint32 rxbyte; /* rx data bytes */
- uint32 rxerror; /* rx data errors */
- uint32 rxctl; /* rx management frames */
- uint32 rxnobuf; /* rx out of buffers errors */
- uint32 rxnondata; /* rx non data frames in the data channel errors */
- uint32 rxbadds; /* rx bad DS errors */
- uint32 rxbadcm; /* rx bad control or management frames */
- uint32 rxfragerr; /* rx fragmentation errors */
- uint32 rxrunt; /* rx runt frames */
- uint32 rxgiant; /* rx giant frames */
- uint32 rxnoscb; /* rx no scb error */
- uint32 rxbadproto; /* rx invalid frames */
- uint32 rxbadsrcmac; /* rx frames with Invalid Src Mac*/
- uint32 rxbadda; /* rx frames tossed for invalid da */
- uint32 rxfilter; /* rx frames filtered out */
-
- /* receive chip error counters */
- uint32 rxoflo; /* rx fifo overflow errors */
- uint32 rxuflo[NFIFO]; /* rx dma descriptor underflow errors */
-
- uint32 d11cnt_txrts_off; /* d11cnt txrts value when reset d11cnt */
- uint32 d11cnt_rxcrc_off; /* d11cnt rxcrc value when reset d11cnt */
- uint32 d11cnt_txnocts_off; /* d11cnt txnocts value when reset d11cnt */
-
- /* misc counters */
- uint32 dmade; /* tx/rx dma descriptor errors */
- uint32 dmada; /* tx/rx dma data errors */
- uint32 dmape; /* tx/rx dma descriptor protocol errors */
- uint32 reset; /* reset count */
- uint32 tbtt; /* cnts the TBTT int's */
- uint32 txdmawar;
-
- /* MAC counters: 32-bit version of d11.h's macstat_t */
- uint32 txallfrm; /* total number of frames sent, incl. Data, ACK, RTS, CTS,
- Control Management (includes retransmissions) */
- uint32 txrtsfrm; /* number of RTS sent out by the MAC */
- uint32 txctsfrm; /* number of CTS sent out by the MAC */
- uint32 txackfrm; /* number of ACK frames sent out */
- uint32 txdnlfrm; /* Not used */
- uint32 txbcnfrm; /* beacons transmitted */
- uint32 txfunfl[8]; /* per-fifo tx underflows */
- uint32 txtplunfl; /* Template underflows (mac was too slow to transmit ACK/CTS or BCN) */
- uint32 txphyerror; /* Transmit phy error, type of error is reported in tx-status for
- driver enqueued frames*/
- uint32 rxfrmtoolong; /* Received frame longer than legal limit (2346 bytes) */
- uint32 rxfrmtooshrt; /* Received frame did not contain enough bytes for its frame type */
- uint32 rxinvmachdr; /* Either the protocol version != 0 or frame type not
- data/control/management*/
- uint32 rxbadfcs; /* number of frames for which the CRC check failed in the MAC */
- uint32 rxbadplcp; /* parity check of the PLCP header failed */
- uint32 rxcrsglitch; /* PHY was able to correlate the preamble but not the header */
- uint32 rxstrt; /* Number of received frames with a good PLCP (i.e. passing parity check) */
- uint32 rxdfrmucastmbss; /* Number of received DATA frames with good FCS and matching RA */
- uint32 rxmfrmucastmbss; /* number of received mgmt frames with good FCS and matching RA */
- uint32 rxcfrmucast; /* number of received CNTRL frames with good FCS and matching RA */
- uint32 rxrtsucast; /* number of unicast RTS addressed to the MAC (good FCS) */
- uint32 rxctsucast; /* number of unicast CTS addressed to the MAC (good FCS)*/
- uint32 rxackucast; /* number of ucast ACKS received (good FCS)*/
- uint32 rxdfrmocast; /* number of received DATA frames with good FCS and not matching RA */
- uint32 rxmfrmocast; /* number of received MGMT frames with good FCS and not matching RA */
- uint32 rxcfrmocast; /* number of received CNTRL frame with good FCS and not matching RA */
- uint32 rxrtsocast; /* number of received RTS not addressed to the MAC */
- uint32 rxctsocast; /* number of received CTS not addressed to the MAC */
- uint32 rxdfrmmcast; /* number of RX Data multicast frames received by the MAC */
- uint32 rxmfrmmcast; /* number of RX Management multicast frames received by the MAC */
- uint32 rxcfrmmcast; /* number of RX Control multicast frames received by the MAC (unlikely
- to see these) */
- uint32 rxbeaconmbss; /* beacons received from member of BSS */
- uint32 rxdfrmucastobss; /* number of unicast frames addressed to the MAC from other BSS (WDS FRAME) */
- uint32 rxbeaconobss; /* beacons received from other BSS */
- uint32 rxrsptmout; /* Number of response timeouts for transmitted frames expecting a
- response */
- uint32 bcntxcancl; /* transmit beacons cancelled due to receipt of beacon (IBSS) */
- uint32 rxf0ovfl; /* Number of receive fifo 0 overflows */
- uint32 rxf1ovfl; /* Number of receive fifo 1 overflows (obsolete) */
- uint32 rxf2ovfl; /* Number of receive fifo 2 overflows (obsolete) */
- uint32 txsfovfl; /* Number of transmit status fifo overflows (obsolete) */
- uint32 pmqovfl; /* Number of PMQ overflows */
- uint32 rxcgprqfrm; /* Number of received Probe requests that made it into the PRQ fifo */
- uint32 rxcgprsqovfl; /* Rx Probe Request Que overflow in the AP */
- uint32 txcgprsfail; /* Tx Probe Response Fail. AP sent probe response but did not get ACK */
- uint32 txcgprssuc; /* Tx Probe Rresponse Success (ACK was received) */
- uint32 prs_timeout; /* Number of probe requests that were dropped from the PRQ fifo because
- a probe response could not be sent out within the time limit defined
- in M_PRS_MAXTIME */
- uint32 rxnack; /* Number of NACKS received (Afterburner) */
- uint32 frmscons; /* Number of frames completed without transmission because of an
- Afterburner re-queue */
- uint32 txnack; /* Number of NACKs transmtitted (Afterburner) */
- uint32 txglitch_nack; /* obsolete */
- uint32 txburst; /* obsolete */
- uint32 rxburst; /* obsolete */
-
- /* 802.11 MIB counters, pp. 614 of 802.11 reaff doc. */
- uint32 txfrag; /* dot11TransmittedFragmentCount */
- uint32 txmulti; /* dot11MulticastTransmittedFrameCount */
- uint32 txfail; /* dot11FailedCount */
- uint32 txretry; /* dot11RetryCount */
- uint32 txretrie; /* dot11MultipleRetryCount */
- uint32 rxdup; /* dot11FrameduplicateCount */
- uint32 txrts; /* dot11RTSSuccessCount */
- uint32 txnocts; /* dot11RTSFailureCount */
- uint32 txnoack; /* dot11ACKFailureCount */
- uint32 rxfrag; /* dot11ReceivedFragmentCount */
- uint32 rxmulti; /* dot11MulticastReceivedFrameCount */
- uint32 rxcrc; /* dot11FCSErrorCount */
- uint32 txfrmsnt; /* dot11TransmittedFrameCount (bogus MIB?) */
- uint32 rxundec; /* dot11WEPUndecryptableCount */
-
- /* WPA2 counters (see rxundec for DecryptFailureCount) */
- uint32 tkipmicfaill; /* TKIPLocalMICFailures */
- uint32 tkipcntrmsr; /* TKIPCounterMeasuresInvoked */
- uint32 tkipreplay; /* TKIPReplays */
- uint32 ccmpfmterr; /* CCMPFormatErrors */
- uint32 ccmpreplay; /* CCMPReplays */
- uint32 ccmpundec; /* CCMPDecryptErrors */
- uint32 fourwayfail; /* FourWayHandshakeFailures */
- uint32 wepundec; /* dot11WEPUndecryptableCount */
- uint32 wepicverr; /* dot11WEPICVErrorCount */
- uint32 decsuccess; /* DecryptSuccessCount */
- uint32 tkipicverr; /* TKIPICVErrorCount */
- uint32 wepexcluded; /* dot11WEPExcludedCount */
-} wl_cnt_t;
-
-#endif /* _wlioctl_h_ */
diff --git a/openwrt/package/wificonf/ipkg/wificonf.control b/openwrt/package/wificonf/ipkg/wificonf.control
deleted file mode 100644
index 94a0bde198..0000000000
--- a/openwrt/package/wificonf/ipkg/wificonf.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: wificonf
-Priority: optional
-Section: net
-Maintainer: Felix Fietkau <nbd@openwrt.org>
-Description: Replacement utility for wlconf
diff --git a/openwrt/package/wificonf/wificonf.c b/openwrt/package/wificonf/wificonf.c
deleted file mode 100644
index b243cfa577..0000000000
--- a/openwrt/package/wificonf/wificonf.c
+++ /dev/null
@@ -1,1026 +0,0 @@
-/*
- * Wireless Network Adapter configuration utility
- *
- * Copyright (C) 2005 Felix Fietkau <nbd@openwrt.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.
- */
-
-#include <stdio.h>
-#include <unistd.h>
-#include <iwlib.h>
-#include <bcmnvram.h>
-#include <shutils.h>
-#include <wlioctl.h>
-#include <signal.h>
-
-#define ADD_VIF_RETRIES 5
-// #define DEBUG
-
-/*------------------------------------------------------------------*/
-/*
- * Macro to handle errors when setting WE
- * Print a nice error message and exit...
- * We define them as macro so that "return" do the right thing.
- * The "do {...} while(0)" is a standard trick
- */
-#define ERR_SET_EXT(rname, request) \
- fprintf(stderr, "Error for wireless request \"%s\" (%X) :\n", \
- rname, request)
-
-#define ABORT_ARG_NUM(rname, request) \
- do { \
- ERR_SET_EXT(rname, request); \
- fprintf(stderr, " too few arguments.\n"); \
- } while(0)
-
-#define ABORT_ARG_TYPE(rname, request, arg) \
- do { \
- ERR_SET_EXT(rname, request); \
- fprintf(stderr, " invalid argument \"%s\".\n", arg); \
- } while(0)
-
-#define ABORT_ARG_SIZE(rname, request, max) \
- do { \
- ERR_SET_EXT(rname, request); \
- fprintf(stderr, " argument too big (max %d)\n", max); \
- } while(0)
-
-/*------------------------------------------------------------------*/
-/*
- * Wrapper to push some Wireless Parameter in the driver
- * Use standard wrapper and add pretty error message if fail...
- */
-#define IW_SET_EXT_ERR(skfd, ifname, request, wrq, rname) \
- do { \
- if(iw_set_ext(skfd, ifname, request, wrq) < 0) { \
- ERR_SET_EXT(rname, request); \
- fprintf(stderr, " SET failed on device %-1.16s ; %s.\n", \
- ifname, strerror(errno)); \
- } } while(0)
-
-/*------------------------------------------------------------------*/
-/*
- * Wrapper to extract some Wireless Parameter out of the driver
- * Use standard wrapper and add pretty error message if fail...
- */
-#define IW_GET_EXT_ERR(skfd, ifname, request, wrq, rname) \
- do { \
- if(iw_get_ext(skfd, ifname, request, wrq) < 0) { \
- ERR_SET_EXT(rname, request); \
- fprintf(stderr, " GET failed on device %-1.16s ; %s.\n", \
- ifname, strerror(errno)); \
- } } while(0)
-
-static void set_wext_ssid(int skfd, char *ifname);
-
-static char *prefix;
-static char buffer[128];
-static int wpa_enc = 0;
-
-static char *wl_var(char *name)
-{
- sprintf(buffer, "%s_%s", prefix, name);
- return buffer;
-}
-
-static char *vif_var(int vif, char *name)
-{
- if (vif == 0)
- return wl_var(name);
-
- sprintf(buffer, "%s.%d_%s", prefix, vif, name);
- return buffer;
-}
-
-static int nvram_enabled(char *name)
-{
- return (nvram_match(name, "1") || nvram_match(name, "on") || nvram_match(name, "enabled") || nvram_match(name, "true") || nvram_match(name, "yes") ? 1 : 0);
-}
-
-static int nvram_disabled(char *name)
-{
- return (nvram_match(name, "0") || nvram_match(name, "off") || nvram_match(name, "disabled") || nvram_match(name, "false") || nvram_match(name, "no") ? 1 : 0);
-}
-
-
-/* Quarter dBm units to mW
- * Table starts at QDBM_OFFSET, so the first entry is mW for qdBm=153
- * Table is offset so the last entry is largest mW value that fits in
- * a uint16.
- */
-
-#define QDBM_OFFSET 153
-#define QDBM_TABLE_LEN 40
-
-/* Smallest mW value that will round up to the first table entry, QDBM_OFFSET.
- * Value is ( mW(QDBM_OFFSET - 1) + mW(QDBM_OFFSET) ) / 2
- */
-#define QDBM_TABLE_LOW_BOUND 6493
-
-/* Largest mW value that will round down to the last table entry,
- * QDBM_OFFSET + QDBM_TABLE_LEN-1.
- * Value is ( mW(QDBM_OFFSET + QDBM_TABLE_LEN - 1) + mW(QDBM_OFFSET + QDBM_TABLE_LEN) ) / 2.
- */
-#define QDBM_TABLE_HIGH_BOUND 64938
-
-static const uint16 nqdBm_to_mW_map[QDBM_TABLE_LEN] = {
-/* qdBm: +0 +1 +2 +3 +4 +5 +6 +7 */
-/* 153: */ 6683, 7079, 7499, 7943, 8414, 8913, 9441, 10000,
-/* 161: */ 10593, 11220, 11885, 12589, 13335, 14125, 14962, 15849,
-/* 169: */ 16788, 17783, 18836, 19953, 21135, 22387, 23714, 25119,
-/* 177: */ 26607, 28184, 29854, 31623, 33497, 35481, 37584, 39811,
-/* 185: */ 42170, 44668, 47315, 50119, 53088, 56234, 59566, 63096
-};
-
-unsigned char mw_to_qdbm(uint16 mw)
-{
- char qdbm;
- int offset;
- uint mw_uint = mw;
- uint boundary;
-
- /* handle boundary case */
- if (mw_uint <= 1)
- return 0;
-
- offset = QDBM_OFFSET;
-
- /* move mw into the range of the table */
- while (mw_uint < QDBM_TABLE_LOW_BOUND) {
- mw_uint *= 10;
- offset -= 40;
- }
-
- for (qdbm = 0; qdbm < QDBM_TABLE_LEN-1; qdbm++) {
- boundary = nqdBm_to_mW_map[qdbm] + (nqdBm_to_mW_map[qdbm+1] - nqdBm_to_mW_map[qdbm])/2;
- if (mw_uint < boundary) break;
- }
-
- qdbm += (unsigned char)offset;
-
- return(qdbm);
-}
-
-static int bcom_ioctl(int skfd, char *ifname, int cmd, void *buf, int len)
-{
- struct ifreq ifr;
- wl_ioctl_t ioc;
- int ret;
-
- ioc.cmd = cmd;
- ioc.buf = buf;
- ioc.len = len;
-
- ifr.ifr_data = (caddr_t) &ioc;
- strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
-
- ret = ioctl(skfd, SIOCDEVPRIVATE, &ifr);
-
-#ifdef DEBUG
- if (ret < 0)
- fprintf(stderr, "IOCTL %d failed: %d\n", cmd, ret);
-#endif
-
- return ret;
-}
-
-static int bcom_set_var(int skfd, char *ifname, char *var, void *val, int len)
-{
- char buf[8192];
- int ret;
-
- if (strlen(var) + 1 > sizeof(buf) || len > sizeof(buf))
- return -1;
-
- bzero(buf, sizeof(buf));
- strcpy(buf, var);
- memcpy(&buf[strlen(var) + 1], val, len);
-
- ret = bcom_ioctl(skfd, ifname, WLC_SET_VAR, buf, sizeof(buf));
-
-#ifdef DEBUG
- if (ret < 0)
- fprintf(stderr, "SET_VAR %s failed: %d\n", var, ret);
-#endif
-
- return ret;
-}
-
-static int bcom_get_var(int skfd, char *ifname, char *var, void *buf, int len)
-{
- int ret;
-
- if (strlen(var) + 1 > sizeof(buf) || len > sizeof(buf))
- return -1;
-
- bzero(buf, sizeof(buf));
- strcpy(buf, var);
-
- ret = bcom_ioctl(skfd, ifname, WLC_GET_VAR, buf, sizeof(buf));
-
-#ifdef DEBUG
- if (ret < 0)
- fprintf(stderr, "GET_VAR %s failed: %d\n", var, ret);
-#endif
-
- return ret;
-}
-
-static int bcom_set_bss_var(int skfd, char *ifname, int bss, char *var, void *val, int len)
-{
- char buf[8192];
- int i = 0, ret;
-
- bzero(buf, sizeof(buf));
- if (strlen(var) + len + 8 > sizeof(buf) || len > sizeof(buf))
- return -1;
-
- // "bsscfg:<name>\x00" <bss> <data>
- i = sprintf(buf, "bsscfg:%s", var);
- buf[i++] = 0;
-
- memcpy(buf + i, &bss, sizeof(bss));
- i += sizeof(bss);
-
- memcpy(buf + i, val, len);
- i += len;
-
- ret = bcom_ioctl(skfd, ifname, WLC_SET_VAR, buf, i);
-
-#ifdef DEBUG
- if (ret < 0)
- fprintf(stderr, "SET_BSS_VAR %s failed: %d\n", var, ret);
-#endif
-
- return ret;
-}
-
-static int bcom_set_int(int skfd, char *ifname, char *var, int val)
-{
- return bcom_set_var(skfd, ifname, var, &val, sizeof(val));
-}
-
-static int bcom_set_bss_int(int skfd, char *ifname, int bss, char *var, int val)
-{
- return bcom_set_bss_var(skfd, ifname, bss, var, &val, sizeof(val));
-}
-
-static int is_new_bcom(int skfd, char *ifname)
-{
- char buf[8192];
-
- bzero(buf, 8192);
- bcom_ioctl(skfd, ifname, WLC_DUMP, buf, 8192);
-
- if (strstr(buf, "3.90"))
- return 0;
-
- return 1;
-}
-
-static int bcom_get_wsec(int vif)
-{
- int val;
-
- if (nvram_match(vif_var(vif, "crypto"), "tkip"))
- val = TKIP_ENABLED;
- else if (nvram_match(vif_var(vif, "crypto"), "aes"))
- val = AES_ENABLED;
- else if (nvram_match(vif_var(vif, "crypto"), "tkip+aes") || nvram_match(vif_var(vif, "crypto"), "aes+tkip"))
- val = TKIP_ENABLED | AES_ENABLED;
- else
- val = 0;
-
- return val;
-}
-
-static int bcom_get_wauth(int vif)
-{
- char *v, *next, var[80];
- int res = 0;
-
- if (!(v = nvram_get(vif_var(vif, "akm"))))
- v = nvram_safe_get(vif_var(vif, "auth_mode"));
-
- foreach(var, v, next) {
- if (strcmp(var, "psk") == 0)
- res |= WPA_AUTH_PSK;
- else if (strcmp(var, "psk2") == 0)
- res |= WPA2_AUTH_PSK;
- else if (strcmp(var, "wpa") == 0)
- res |= WPA_AUTH_UNSPECIFIED;
- else if (strcmp(var, "wpa2") == 0)
- res |= WPA2_AUTH_UNSPECIFIED;
- }
-
- return res;
-}
-
-static void stop_bcom(int skfd, char *ifname)
-{
- int val = 0;
- wlc_ssid_t ssid;
-
- if (bcom_ioctl(skfd, ifname, WLC_GET_MAGIC, &val, sizeof(val)) < 0)
- return;
-
- ssid.SSID_len = 0;
- ssid.SSID[0] = 0;
- bcom_ioctl(skfd, ifname, WLC_SET_SSID, &ssid, sizeof(ssid));
- bcom_ioctl(skfd, ifname, WLC_DOWN, NULL, 0);
-
-}
-
-static void start_bcom(int skfd, char *ifname)
-{
- int val = 0;
-
- if (bcom_ioctl(skfd, ifname, WLC_GET_MAGIC, &val, sizeof(val)) < 0)
- return;
-
- bcom_ioctl(skfd, ifname, WLC_UP, &val, sizeof(val));
-}
-
-static int setup_bcom_wds(int skfd, char *ifname)
-{
- char buf[8192];
- char wbuf[80];
- char *v;
- int wds_enabled = 0;
-
- if (v = nvram_get(wl_var("wds"))) {
- struct maclist *wdslist = (struct maclist *) buf;
- struct ether_addr *addr = wdslist->ea;
- char *next;
-
- memset(buf, 0, 8192);
- foreach(wbuf, v, next) {
- if (ether_atoe(wbuf, addr->ether_addr_octet)) {
- wdslist->count++;
- addr++;
- wds_enabled = 1;
- }
- }
- bcom_ioctl(skfd, ifname, WLC_SET_WDSLIST, buf, sizeof(buf));
- }
- return wds_enabled;
-}
-
-static void set_wext_mode(skfd, ifname)
-{
- struct iwreq wrq;
- int ap = 0, infra = 0, wet = 0;
-
- /* Set operation mode */
- ap = !nvram_match(wl_var("mode"), "sta") && !nvram_match(wl_var("mode"), "wet");
- infra = !nvram_disabled(wl_var("infra"));
- wet = !ap && nvram_match(wl_var("mode"), "wet");
-
- wrq.u.mode = (!infra ? IW_MODE_ADHOC : (ap ? IW_MODE_MASTER : (wet ? IW_MODE_REPEAT : IW_MODE_INFRA)));
- IW_SET_EXT_ERR(skfd, ifname, SIOCSIWMODE, &wrq, "Set Mode");
-}
-
-
-void start_watchdog(int skfd, char *ifname)
-{
- FILE *f;
- char *v, *next;
- unsigned char buf[8192], buf2[8192], wbuf[80], *p, *tmp;
- int wds = 0, i, j, restart_wds;
- wlc_ssid_t ssid;
-
- if (fork())
- return;
-
- system("kill $(cat /var/run/wifi.pid) 2>&- >&-");
- f = fopen("/var/run/wifi.pid", "w");
- fprintf(f, "%d\n", getpid());
- fclose(f);
-
- v = nvram_safe_get(wl_var("wds"));
- memset(buf2, 0, 8192);
- p = buf2;
- foreach(wbuf, v, next) {
- if (ether_atoe(wbuf, p)) {
- p += 6;
- wds++;
- }
- }
- v = nvram_safe_get(wl_var("ssid"));
- ssid.SSID_len = strlen(v);
- strncpy(ssid.SSID, v, 32);
-
- for (;;) {
- sleep(5);
-
- /* client mode */
- bcom_ioctl(skfd, ifname, WLC_GET_AP, &i, sizeof(i));
- if (!i) {
- i = 0;
- if (bcom_ioctl(skfd, ifname, WLC_GET_BSSID, buf, 6) < 0)
- i = 1;
- memcpy(buf + 6, "\x00\x00\x00\x00\x00\x00", 6);
- if (memcmp(buf, buf + 6, 6) == 0)
- i = 1;
-
- memset(buf, 0, 8192);
- strcpy(buf, "sta_info");
- bcom_ioctl(skfd, ifname, WLC_GET_BSSID, buf + strlen(buf) + 1, 6);
- if (bcom_ioctl(skfd, ifname, WLC_GET_VAR, buf, 8192) < 0) {
- i = 1;
- } else {
- sta_info_t *sta = (sta_info_t *) (buf + 4);
- if ((sta->flags & 0x18) != 0x18)
- i = 1;
- if (sta->idle > 20)
- i = 1;
- }
-
- if (i)
- bcom_ioctl(skfd, ifname, WLC_SET_SSID, &ssid, sizeof(ssid));
- }
-
-
- /* wds */
- p = buf2;
- restart_wds = 0;
- for (i = 0; i < wds; i++) {
- memset(buf, 0, 8192);
- strcpy(buf, "sta_info");
- memcpy(buf + strlen(buf) + 1, p, 6);
- if (bcom_ioctl(skfd, ifname, WLC_GET_VAR, buf, 8192) < 0) {
- } else {
- sta_info_t *sta = (sta_info_t *) (buf + 4);
- if (!(sta->flags & 0x40)) {
- } else {
- if (sta->idle > 120)
- restart_wds = 1;
- }
- }
- p += 6;
- }
- if (restart_wds)
- setup_bcom_wds(skfd, ifname);
- }
-}
-
-static void setup_bcom_vif_sec(int skfd, char *ifname, int vif)
-{
- int val, wep, wsec, i;
- char *v;
-
- wsec = bcom_get_wsec(vif);
- if (wsec)
- val = bcom_get_wauth(vif);
- else
- val = 0;
-
- bcom_set_bss_int(skfd, ifname, vif, "wpa_auth", val);
-
- if (val) {
- if (WPA_AUTH_PSK | WPA2_AUTH_PSK) {
- v = nvram_safe_get(wl_var("wpa_psk"));
- if ((strlen(v) >= 8) && (strlen(v) < 63) && nvram_match(wl_var("mode"), "wet") && (vif == 0)) {
- /* Enable in-driver WPA supplicant */
- wsec_pmk_t pmk;
-
- pmk.key_len = (unsigned short) strlen(v);
- pmk.flags = WSEC_PASSPHRASE;
- strcpy(pmk.key, v);
- bcom_ioctl(skfd, ifname, WLC_SET_WSEC_PMK, &pmk, sizeof(pmk));
- bcom_set_int(skfd, ifname, "sup_wpa", 1);
- } else {
- bcom_set_int(skfd, ifname, "sup_wpa", 0);
- }
- }
- bcom_set_bss_int(skfd, ifname, vif, "eap_restrict", 1);
- bcom_set_bss_int(skfd, ifname, vif, "wsec", wsec);
- bcom_set_bss_int(skfd, ifname, vif, "wsec_restrict", 1);
- } else {
- bcom_set_bss_int(skfd, ifname, vif, "eap_restrict", 0);
- if (wep = nvram_enabled(vif_var(vif, "wep"))) {
- wep = atoi(nvram_safe_get(vif_var(vif, "key")));
- if ((wep >= 1) && (wep <= 4)) {
- for (i = 1; i < 4; i++) {
- wl_wsec_key_t k;
- char name[5] = "key0";
- unsigned char *kdata = k.data;
- unsigned char *kstr;
-
- bzero(&k, sizeof(k));
- name[3] += i;
- kstr = nvram_safe_get(vif_var(vif, name));
- k.len = strlen(kstr);
- if ((k.len == 10) || (k.len == 26)) {
- k.index = i - 1;
-#ifdef DEBUG
- fprintf(stderr, "Adding WEP key %d to VIF %d: ", i, vif);
-#endif
- k.len = 0;
- while (*kstr != 0) {
- strncpy(name, kstr, 2);
- name[2] = 0;
- *kdata = (unsigned char) strtoul(name, NULL, 16);
-#ifdef DEBUG
- fprintf(stderr, "%02x", *kdata);
-#endif
- kstr += 2;
- kdata++;
- k.len++;
- }
-#ifdef DEBUG
- fprintf(stderr, "\n");
-#endif
- } else {
- k.len = 0;
- }
- if ((k.len > 0) && (i == wep))
- k.flags = WL_PRIMARY_KEY;
-
- bcom_set_bss_var(skfd, ifname, vif, "wsec_key", &k, sizeof(k));
- }
- wep = 1;
- bcom_set_bss_int(skfd, ifname, vif, "wsec", WEP_ENABLED);
- bcom_set_bss_int(skfd, ifname, vif, "wsec_restrict", 1);
- bcom_set_bss_int(skfd, ifname, vif, "auth", nvram_enabled(vif_var(vif, "auth")));
- } else {
- wep = 0;
- }
- }
- }
-
- if (!wep && !val) {
- bcom_set_bss_int(skfd, ifname, vif, "wsec", 0);
- bcom_set_bss_int(skfd, ifname, vif, "wsec_restrict", 0);
- }
-
-// bcom_set_bss_int(skfd, ifname, vif, "auth", atoi(nvram_safe_get(vif_var(vif, "auth"))));
-}
-
-static void setup_bcom_vif(int skfd, char *ifname, int vif)
-{
- int val, wep, wsec, i;
- char *s, *v;
- wlc_ssid_t ssid;
-
- s = nvram_safe_get(vif_var(vif, "ssid"));
- strncpy(ssid.SSID, s, sizeof(ssid.SSID));
- ssid.SSID_len = strlen(ssid.SSID);
- ssid.SSID_len = ((ssid.SSID_len > sizeof(ssid.SSID)) ? sizeof(ssid.SSID) : ssid.SSID_len);
- bcom_set_bss_var(skfd, ifname, vif, "ssid", &ssid, sizeof(ssid));
-
- val = nvram_enabled(vif_var(vif, "closed"));
- bcom_set_bss_int(skfd, ifname, vif, "closednet", val);
-
- val = nvram_enabled(wl_var("ap_isolate"));
- bcom_set_bss_int(skfd, ifname, vif, "ap_isolate", val);
-
-}
-
-static void start_bcom_vif(int skfd, char *ifname, int vif)
-{
- int cfg[2];
- int i;
-
- cfg[0] = vif;
- cfg[1] = 1;
- for (i = 0; i < ADD_VIF_RETRIES; i++) {
- if (bcom_set_var(skfd, ifname, "bss" , cfg, sizeof(cfg)) == 0)
- break;
- usleep(1000 * 1000);
- }
-}
-
-static void setup_bcom_common(int skfd, char *ifname)
-{
- int val = 0, ap;
- char buf[8192], wbuf[80], *v;
-
- nvram_set(wl_var("ifname"), ifname);
-
- /* Set Country */
- strncpy(buf, nvram_safe_get(wl_var("country_code")), 4);
- buf[3] = 0;
- bcom_ioctl(skfd, ifname, WLC_SET_COUNTRY, buf, 4);
-
- if (v = nvram_get(wl_var("txpwr"))) {
- val = atoi(v);
- val = mw_to_qdbm(val);
- bcom_set_int(skfd, ifname, "qtxpower", val);
- }
-
- /* Set other options */
- val = nvram_enabled(wl_var("lazywds"));
- bcom_ioctl(skfd, ifname, WLC_SET_LAZYWDS, &val, sizeof(val));
-
- if (v = nvram_get(wl_var("dtim"))) {
- val = atoi(v);
- bcom_ioctl(skfd, ifname, WLC_SET_DTIMPRD, &val, sizeof(val));
- }
- if (v = nvram_get(wl_var("bcn"))) {
- val = atoi(v);
- bcom_ioctl(skfd, ifname, WLC_SET_BCNPRD, &val, sizeof(val));
- }
- if (v = nvram_get(wl_var("antdiv"))) {
- val = atoi(v);
- bcom_ioctl(skfd, ifname, WLC_SET_ANTDIV, &val, sizeof(val));
- }
- if (v = nvram_get(wl_var("txant"))) {
- val = atoi(v);
- bcom_ioctl(skfd, ifname, WLC_SET_TXANT, &val, sizeof(val));
- }
- if (v = nvram_get(wl_var("maxassoc"))) {
- val = atoi(v);
- bcom_set_int(skfd, ifname, "maxassoc", val);
- }
-
- val = nvram_enabled(wl_var("frameburst"));
- bcom_ioctl(skfd, ifname, WLC_SET_FAKEFRAG, &val, sizeof(val));
-
- ap = !nvram_match(wl_var("mode"), "sta") && !nvram_match(wl_var("mode"), "wet");
-
- if (ap)
- val = setup_bcom_wds(skfd, ifname);
-
- if ((!ap || val) && is_new_bcom(skfd, ifname))
- start_watchdog(skfd, ifname);
-
- /* Set up afterburner, disabled it if WDS is enabled */
- if (val || nvram_enabled(wl_var("lazywds"))) {
- val = ABO_OFF;
- } else {
- val = ABO_AUTO;
- if (nvram_enabled(wl_var("afterburner")))
- val = ABO_ON;
- if (nvram_disabled(wl_var("afterburner")))
- val = ABO_OFF;
- }
-
- bcom_set_var(skfd, ifname, "afterburner_override", &val, sizeof(val));
-
- /* Set up MAC list */
- if (nvram_match(wl_var("macmode"), "allow"))
- val = WLC_MACMODE_ALLOW;
- else if (nvram_match(wl_var("macmode"), "deny"))
- val = WLC_MACMODE_DENY;
- else
- val = WLC_MACMODE_DISABLED;
-
- if ((val != WLC_MACMODE_DISABLED) && (v = nvram_get(wl_var("maclist")))) {
- struct maclist *mac_list;
- struct ether_addr *addr;
- char *next;
-
- memset(buf, 0, 8192);
- mac_list = (struct maclist *) buf;
- addr = mac_list->ea;
-
- foreach(wbuf, v, next) {
- if (ether_atoe(wbuf, addr->ether_addr_octet)) {
- mac_list->count++;
- addr++;
- }
- }
- bcom_ioctl(skfd, ifname, WLC_SET_MACLIST, buf, sizeof(buf));
- } else {
- val = WLC_MACMODE_DISABLED;
- }
- bcom_ioctl(skfd, ifname, WLC_SET_MACMODE, &val, sizeof(val));
-
- /* Set up G mode */
- bcom_ioctl(skfd, ifname, WLC_GET_PHYTYPE, &val, sizeof(val));
- if (val == 2) {
- int override = WLC_G_PROTECTION_OFF;
- int control = WLC_G_PROTECTION_CTL_OFF;
-
- if (v = nvram_get(wl_var("gmode")))
- val = atoi(v);
- else
- val = 1;
-
- if (val > 5)
- val = 1;
-
- bcom_ioctl(skfd, ifname, WLC_SET_GMODE, &val, sizeof(val));
-
- if (nvram_match(wl_var("gmode_protection"), "auto")) {
- override = WLC_G_PROTECTION_AUTO;
- control = WLC_G_PROTECTION_CTL_OVERLAP;
- }
- if (nvram_enabled(wl_var("gmode_protection"))) {
- override = WLC_G_PROTECTION_ON;
- control = WLC_G_PROTECTION_CTL_OVERLAP;
- }
- bcom_ioctl(skfd, ifname, WLC_SET_GMODE_PROTECTION_CONTROL, &override, sizeof(control));
- bcom_ioctl(skfd, ifname, WLC_SET_GMODE_PROTECTION_OVERRIDE, &override, sizeof(override));
-
- if (val = 0) {
- if (nvram_match(wl_var("plcphdr"), "long"))
- val = WLC_PLCP_AUTO;
- else
- val = WLC_PLCP_SHORT;
-
- bcom_ioctl(skfd, ifname, WLC_SET_PLCPHDR, &val, sizeof(val));
- }
- }
-}
-
-static void setup_bcom_new(int skfd, char *ifname)
-{
- int val = 0, i;
- int iface[16], ifaces = 1;
- int ap, apsta, sta, wet;
- char *v;
-
- if (bcom_ioctl(skfd, ifname, WLC_GET_MAGIC, &val, sizeof(val)) < 0)
- return;
-
- /* Clear all VIFs */
- iface[0] = 0;
- for (i = 0; i < 16; i++) {
- int cfg[2]; /* index, enabled */
-
- cfg[0] = i;
- cfg[1] = 0;
-
- bcom_set_var(skfd, ifname, "bss", cfg, sizeof(cfg));
-
- if ((i > 0) && nvram_enabled(vif_var(i, "enabled")) && (i == 0 || nvram_get(vif_var(i, "ssid")))) {
- iface[ifaces] = i;
- ifaces++;
- }
- }
-
- set_wext_mode(skfd, ifname);
-
- ap = nvram_match(wl_var("mode"), "ap") || nvram_match(wl_var("mode"), "apsta");
- apsta = nvram_match(wl_var("mode"), "apsta");
- sta = nvram_match(wl_var("mode"), "sta");
-
- bcom_set_int(skfd, ifname, "apsta", apsta);
- bcom_set_int(skfd, ifname, "mssid", (ifaces > 1));
-
- for (i = 0; i < (sta ? 0 : ifaces); i++) {
-#ifdef DEBUG
- fprintf(stderr, "setup_bcom_vif(%d) start\n", iface[i]);
-#endif
- setup_bcom_vif(skfd, ifname, iface[i]);
-#ifdef DEBUG
- fprintf(stderr, "setup_bcom_vif(%d) end\n", iface[i]);
-#endif
- }
-
-
- if ((val = atoi(nvram_safe_get(wl_var("rate")))) > 0) {
- val /= 500000;
- bcom_set_int(skfd, ifname, "bg_rate", val);
- bcom_set_int(skfd, ifname, "a_rate", val);
- }
- if (v = nvram_get(wl_var("rts"))) {
- val = atoi(v);
- bcom_set_int(skfd, ifname, "rtsthresh", val);
- }
- if (v = nvram_get(wl_var("frag"))) {
- val = atoi(v);
- bcom_set_int(skfd, ifname, "fragthresh", val);
- }
-
- val = (nvram_disabled(wl_var("radio")) ? (1 | (1 << 16)) : 0);
- bcom_ioctl(skfd, ifname, WLC_SET_RADIO, &val, sizeof(val));
-
- setup_bcom_common(skfd, ifname);
- start_bcom(skfd, ifname);
-
- val = atoi(nvram_safe_get(wl_var("channel")));
- if (val > 0)
- bcom_ioctl(skfd, ifname, WLC_SET_CHANNEL, &val, sizeof(val));
-
- val = (ap ? 15 : 0);
- bcom_ioctl(skfd, ifname, WLC_SET_CS_SCAN_TIMER, &val, sizeof(val));
-
- for (i = 0; i < (sta ? 0 : ifaces); i++) {
- setup_bcom_vif_sec(skfd, ifname, iface[i]);
- }
-
- for (i = 0; i < (sta ? 0 : ifaces); i++) {
- start_bcom_vif(skfd, ifname, iface[i]);
- }
-}
-
-static void setup_bcom_old(int skfd, char *ifname)
-{
- int val = 0, i;
- char buf[8192];
- char wbuf[80];
- char *v;
-
- if (bcom_ioctl(skfd, ifname, WLC_GET_MAGIC, &val, sizeof(val)) < 0)
- return;
-
- setup_bcom_common(skfd, ifname);
-
- if ((val = atoi(nvram_safe_get(wl_var("rate")))) > 0) {
- val *= 2;
- bcom_ioctl(skfd, ifname, 13, &val, sizeof(val));
- }
- if (v = nvram_get(wl_var("frag"))) {
- val = atoi(v);
- bcom_ioctl(skfd, ifname, WLC_SET_FRAG, &val, sizeof(val));
- }
- if (v = nvram_get(wl_var("rts"))) {
- val = atoi(v);
- bcom_ioctl(skfd, ifname, WLC_SET_RTS, &val, sizeof(val));
- }
-
- val = nvram_enabled(wl_var("closed"));
- bcom_ioctl(skfd, ifname, WLC_SET_CLOSED, &val, sizeof(val));
-
- val = nvram_enabled(wl_var("ap_isolate"));
- bcom_set_int(skfd, ifname, "ap_isolate", val);
-
- start_bcom(skfd, ifname);
- set_wext_ssid(skfd, ifname);
-
- val = bcom_get_wauth(0);
- bcom_ioctl(skfd, ifname, WLC_SET_WPA_AUTH, &val, sizeof(val));
-
- if (val & (WPA_AUTH_PSK | WPA2_AUTH_PSK)) {
- v = nvram_safe_get(wl_var("wpa_psk"));
- if ((strlen(v) >= 8) && (strlen(v) < 63) && nvram_match(wl_var("mode"), "wet")) {
- /* Enable in-driver WPA supplicant */
- wsec_pmk_t pmk;
-
- pmk.key_len = (unsigned short) strlen(v);
- pmk.flags = WSEC_PASSPHRASE;
- strcpy(pmk.key, v);
- bcom_ioctl(skfd, ifname, WLC_SET_WSEC_PMK, &pmk, sizeof(pmk));
- bcom_set_int(skfd, ifname, "sup_wpa", 1);
- }
- }
- if (val) {
- val = 1;
- bcom_ioctl(skfd, ifname, WLC_SET_EAP_RESTRICT, &val, sizeof(val));
- val = bcom_get_wsec(0);
- bcom_ioctl(skfd, ifname, WLC_SET_WSEC, &val, sizeof(val));
- } else {
- val = 0;
- bcom_ioctl(skfd, ifname, WLC_SET_WSEC, &val, sizeof(val));
- bcom_ioctl(skfd, ifname, WLC_SET_EAP_RESTRICT, &val, sizeof(val));
- bcom_set_int(skfd, ifname, "sup_wpa", 0);
- }
-
- if (v = nvram_get(wl_var("auth"))) {
- val = atoi(v);
- bcom_ioctl(skfd, ifname, WLC_SET_AUTH, &val, sizeof(val));
- }
-}
-
-
-static void set_wext_ssid(int skfd, char *ifname)
-{
- char *buffer;
- char essid[IW_ESSID_MAX_SIZE + 1];
- struct iwreq wrq;
-
- buffer = nvram_get(wl_var("ssid"));
-
- if (!buffer || (strlen(buffer) > IW_ESSID_MAX_SIZE))
- buffer = "OpenWrt";
-
- wrq.u.essid.flags = 1;
- strcpy(essid, buffer);
- wrq.u.essid.pointer = (caddr_t) essid;
- wrq.u.essid.length = strlen(essid) + 1;
- IW_SET_EXT_ERR(skfd, ifname, SIOCSIWESSID, &wrq, "Set ESSID");
-}
-
-static void setup_wext_wep(int skfd, char *ifname)
-{
- int i, keylen;
- struct iwreq wrq;
- char keystr[5];
- char *keyval;
- unsigned char key[IW_ENCODING_TOKEN_MAX];
-
- memset(&wrq, 0, sizeof(wrq));
- strcpy(keystr, "key1");
- for (i = 1; i <= 4; i++) {
- if (keyval = nvram_get(wl_var(keystr))) {
- keylen = iw_in_key(keyval, key);
-
- if (keylen > 0) {
- wrq.u.data.length = keylen;
- wrq.u.data.pointer = (caddr_t) key;
- wrq.u.data.flags = i;
- IW_SET_EXT_ERR(skfd, ifname, SIOCSIWENCODE, &wrq, "Set Encode");
- }
- }
- keystr[3]++;
- }
-
- memset(&wrq, 0, sizeof(wrq));
- i = atoi(nvram_safe_get(wl_var("key")));
- if (i > 0 && i < 4) {
- wrq.u.data.flags = i | IW_ENCODE_RESTRICTED;
- IW_SET_EXT_ERR(skfd, ifname, SIOCSIWENCODE, &wrq, "Set Encode");
- }
-}
-
-static void setup_wext(int skfd, char *ifname)
-{
- char *buffer;
- struct iwreq wrq;
-
- /* Set channel */
- int channel = atoi(nvram_safe_get(wl_var("channel")));
-
- wrq.u.freq.m = -1;
- wrq.u.freq.e = 0;
- wrq.u.freq.flags = 0;
-
- if (channel > 0) {
- wrq.u.freq.flags = IW_FREQ_FIXED;
- wrq.u.freq.m = channel;
- IW_SET_EXT_ERR(skfd, ifname, SIOCSIWFREQ, &wrq, "Set Frequency");
- }
-
- /* Disable radio if wlX_radio is set and not enabled */
- wrq.u.txpower.disabled = nvram_disabled(wl_var("radio"));
-
- wrq.u.txpower.value = -1;
- wrq.u.txpower.fixed = 1;
- wrq.u.txpower.flags = IW_TXPOW_DBM;
- IW_SET_EXT_ERR(skfd, ifname, SIOCSIWTXPOW, &wrq, "Set Tx Power");
-
- /* Set up WEP */
- if (nvram_enabled(wl_var("wep")) && !wpa_enc)
- setup_wext_wep(skfd, ifname);
-
- /* Set ESSID */
- set_wext_ssid(skfd, ifname);
-
-}
-
-static int setup_interfaces(int skfd, char *ifname, char *args[], int count)
-{
- struct iwreq wrq;
- int rc;
-
- /* Avoid "Unused parameter" warning */
- args = args; count = count;
-
- if(iw_get_ext(skfd, ifname, SIOCGIWNAME, &wrq) < 0)
- return 0;
-
- if (strncmp(ifname, "ath", 3) == 0) {
- set_wext_mode(skfd, ifname);
- setup_wext(skfd, ifname);
- } else {
- if (is_new_bcom(skfd, ifname)) {
-#ifdef DEBUG
- fprintf(stderr, "New Broadcom driver detected.\n");
-#endif
- stop_bcom(skfd, ifname);
-#ifdef DEBUG
- fprintf(stderr, "Setup start.\n");
-#endif
- setup_bcom_new(skfd, ifname);
-#ifdef DEBUG
- fprintf(stderr, "Setup done.\n");
-#endif
- } else {
-#ifdef DEBUG
- fprintf(stderr, "Old Broadcom driver detected.\n");
-#endif
- stop_bcom(skfd, ifname);
- set_wext_mode(skfd, ifname);
- setup_bcom_old(skfd, ifname);
- setup_wext(skfd, ifname);
- }
- }
-
- prefix[2]++;
-}
-
-int main(int argc, char **argv)
-{
- int skfd;
- if((skfd = iw_sockets_open()) < 0) {
- perror("socket");
- exit(-1);
- }
-
- prefix = strdup("wl0");
- iw_enum_devices(skfd, &setup_interfaces, NULL, 0);
-
- return 0;
-}
diff --git a/openwrt/package/wifidog/Config.in b/openwrt/package/wifidog/Config.in
deleted file mode 100644
index 9a51eca9c0..0000000000
--- a/openwrt/package/wifidog/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_WIFIDOG
- prompt "wifidog........................... A wireless captive portal solution"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_IPTABLES
- select BR2_PACKAGE_IPTABLES_EXTRA
- help
- The Wifidog project is a complete and embeddable captive
- portal solution for wireless community groups or individuals
- who wish to open a free Hotspot while still preventing abuse
- of their Internet connection.
-
- http://www.wifidog.org/
-
diff --git a/openwrt/package/wifidog/Makefile b/openwrt/package/wifidog/Makefile
deleted file mode 100644
index 094c7c41c3..0000000000
--- a/openwrt/package/wifidog/Makefile
+++ /dev/null
@@ -1,74 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wifidog
-PKG_VERSION:=1.1.3_beta2
-PKG_RELEASE:=1
-PKG_MD5SUM:=ba1611c7eb959f9c6f93e12b97d70b82
-
-PKG_SOURCE_URL:= @SF/$(PKG_NAME)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WIFIDOG,wifidog,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ac_cv_func_malloc_0_nonnull=yes \
- ac_cv_func_memcmp_working=yes \
- ac_cv_func_setvbuf_reversed=no \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- );
- touch $(PKG_BUILD_DIR)/.configured
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- touch $(PKG_BUILD_DIR)/.built
-
-$(IPKG_WIFIDOG):
- install -m0755 -d $(IDIR_WIFIDOG)/etc/init.d
- install -m0755 ./files/$(PKG_NAME).init $(IDIR_WIFIDOG)/etc/init.d/S65wifidog
- install -m0644 ./files/wifidog.conf $(IDIR_WIFIDOG)/etc/
- install -m0755 -d $(IDIR_WIFIDOG)/usr/bin
- install -m0755 -d $(IDIR_WIFIDOG)/usr/lib
- install -m0755 $(PKG_BUILD_DIR)/scripts/init.d/wifidog $(IDIR_WIFIDOG)/usr/bin/wifidog-init
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/wifidog $(IDIR_WIFIDOG)/usr/bin/
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/wdctl $(IDIR_WIFIDOG)/usr/bin/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libhttpd.so* $(IDIR_WIFIDOG)/usr/lib/
- $(RSTRIP) $(IDIR_WIFIDOG)
- $(IPKG_BUILD) $(IDIR_WIFIDOG) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/wifidog/files/wifidog.conf b/openwrt/package/wifidog/files/wifidog.conf
deleted file mode 100644
index 10b173a9a2..0000000000
--- a/openwrt/package/wifidog/files/wifidog.conf
+++ /dev/null
@@ -1,177 +0,0 @@
-# $Header$
-# WiFiDog Configuration file
-
-# Parameter: GatewayID
-# Default: default
-# Optional but essential for monitoring purposes
-#
-# Set this to the template ID on the auth server
-# this is used to give a customized login page to the clients
-# If none is supplied, the default login page will be used.
-
-GatewayID default
-
-# Parameter: ExternalInterface
-# Default: NONE
-# Optional
-#
-# Set this to the external interface. Typically vlan1 for OpenWrt, and eth0 or ppp0 otherwise
-
-# ExternalInterface eth0
-
-# Parameter: GatewayInterface
-# Default: NONE
-# Mandatory
-#
-# Set this to the internal interface. Typically br0 for OpenWrt, and eth1 otherwise
-
-GatewayInterface br0
-
-# Parameter: GatewayAddress
-# Default: Find it from GatewayInterface
-# Optional
-#
-# Set this to the internal IP address of the gateway
-
-# GatewayAddress 192.168.1.1
-
-# Parameter: AuthServMaxTries
-# Default: 1
-# Optional
-#
-# Sets the number of auth servers the gateway will attempt to contact when a request fails.
-# this number should be equal to the number of AuthServer lines in this
-# configuration but it should probably not exceed 3.
-
-# AuthServMaxTries 3
-
-# Parameter: AuthServer
-# Default: NONE
-# Mandatory
-#
-# Set this to the hostname or IP of your auth server, the path where
-# WiFiDog-auth resides and optionally as a second argument, the port it
-# listens on.
-#AuthServer {
-# Hostname (Mandatory; Default: NONE)
-# SSLAvailable (Optional; Default: no; Possible values: yes, no)
-# SSLPort 443 (Optional; Default: 443)
-# HTTPPort 80 (Optional; Default: 80)
-# Path wifidog/ (Optional; Default: /wifidog/ Note: The path must be both prefixed and suffixed by /. Use a single / for server root.)
-#}
-
-#AuthServer {
-# Hostname auth.ilesansfil.org
-# SSLAvailable yes
-# Path /
-#}
-
-#AuthServer {
-# Hostname auth2.ilesansfil.org
-# SSLAvailable yes
-# Path /
-#}
-
-#AuthServer {
-# Hostname auth3.ilesansfil.org
-# SSLAvailable yes
-# Path /
-#}
-
-# Parameter: Daemon
-# Default: 1
-# Optional
-#
-# Set this to true if you want to run as a daemon
-# Daemon 1
-
-# Parameter: GatewayPort
-# Default: 2060
-# Optional
-#
-# Listen on this port
-# GatewayPort 2060
-
-# Parameter: HTTPDName
-# Default: WiFiDog
-# Optional
-#
-# Define what name the HTTPD server will respond
-# HTTPDName WiFiDog
-
-# Parameter: HTTPDMaxConn
-# Default: 10
-# Optional
-#
-# How many sockets to listen to
-# HTTPDMaxConn 10
-
-# Parameter: CheckInterval
-# Default: 60
-# Optional
-#
-# How many seconds should we wait between timeout checks
-CheckInterval 60
-
-# Parameter: ClientTimeout
-# Default: 5
-# Optional
-#
-# Set this to the desired of number of CheckInterval of inactivity before a client is logged out
-# The timeout will be INTERVAL * TIMEOUT
-ClientTimeout 5
-
-# Parameter: FirewallRuleSet
-# Default: none
-# Mandatory
-#
-# Groups a number of FirewallRule statements together.
-
-# Parameter: FirewallRule
-# Default: none
-#
-# Define one firewall rule in a rule set.
-
-# Rule Set: global
-#
-# Used for rules to be applied to all other rulesets except locked.
-# This is the default config for the Teliphone service.
-FirewallRuleSet global {
- FirewallRule allow udp to 69.90.89.192/27
- FirewallRule allow udp to 69.90.85.0/27
- FirewallRule allow tcp port 80 to 69.90.89.205
-}
-
-# Rule Set: validating-users
-#
-# Used for new users validating their account
-FirewallRuleSet validating-users {
- FirewallRule block tcp port 25
- FirewallRule allow to 0.0.0.0/0
-}
-
-# Rule Set: known-users
-#
-# Used for normal validated users.
-FirewallRuleSet known-users {
- FirewallRule allow to 0.0.0.0/0
-}
-
-# Rule Set: unknown-users
-#
-# Used for unvalidated users, this is the ruleset that gets redirected.
-#
-# XXX The redirect code adds the Default DROP clause.
-FirewallRuleSet unknown-users {
- FirewallRule allow udp port 53
- FirewallRule allow tcp port 53
- FirewallRule allow udp port 67
- FirewallRule allow tcp port 67
-}
-
-# Rule Set: locked-users
-#
-# Used for users that have been locked out.
-FirewallRuleSet locked-users {
- FirewallRule block to 0.0.0.0/0
-}
diff --git a/openwrt/package/wifidog/files/wifidog.init b/openwrt/package/wifidog/files/wifidog.init
deleted file mode 100644
index 03e2ea2217..0000000000
--- a/openwrt/package/wifidog/files/wifidog.init
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-/usr/bin/wifidog-init start
-
diff --git a/openwrt/package/wifidog/ipkg/wifidog.conffiles b/openwrt/package/wifidog/ipkg/wifidog.conffiles
deleted file mode 100644
index aaa3dd140c..0000000000
--- a/openwrt/package/wifidog/ipkg/wifidog.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/wifidog.conf
diff --git a/openwrt/package/wifidog/ipkg/wifidog.control b/openwrt/package/wifidog/ipkg/wifidog.control
deleted file mode 100644
index 18d498552e..0000000000
--- a/openwrt/package/wifidog/ipkg/wifidog.control
+++ /dev/null
@@ -1,8 +0,0 @@
-Package: wifidog
-Priority: optional
-Section: net
-Depends: iptables, iptables-extra, kmod-iptables-extra
-Description: WiFiDog is a complete and embeddable captive portal
- solution for wireless community groups or individuals who
- wish to open a free Hotspot while still preventing abuse
- of their Internet connection.
diff --git a/openwrt/package/wireless-tools/Config.in b/openwrt/package/wireless-tools/Config.in
deleted file mode 100644
index deed30fda0..0000000000
--- a/openwrt/package/wireless-tools/Config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_PACKAGE_WIRELESS_TOOLS
- prompt "wireless-tools.................... Tools for manipulating Linux Wireless Extensions"
- tristate
- default y
- help
- Tools for configuring Wireless Adapters implementing the "Wireless Extension"
-
diff --git a/openwrt/package/wireless-tools/Makefile b/openwrt/package/wireless-tools/Makefile
deleted file mode 100644
index 8d1da1990a..0000000000
--- a/openwrt/package/wireless-tools/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wireless-tools
-PKG_VERSION:=28
-PKG_RELEASE:=1
-PKG_MD5SUM:=599c94497f9c9073c7b052d3dcb7cd16
-
-PKG_SOURCE_URL:=http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux
-PKG_SOURCE:=wireless_tools.$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/wireless_tools.28
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WIRELESS_TOOLS,wireless-tools,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS) -I." \
- libiw.so.28 iwmulticall
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- PREFIX="$(PKG_INSTALL_DIR)" \
- INSTALL_DIR="$(PKG_INSTALL_DIR)/usr/sbin" \
- INSTALL_LIB="$(PKG_INSTALL_DIR)/usr/lib" \
- install-iwmulticall
- touch $@
-
-$(IPKG_WIRELESS_TOOLS):
- mkdir -p $(IDIR_WIRELESS_TOOLS)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/libiw.so.28 $(IDIR_WIRELESS_TOOLS)/usr/lib/
- mkdir -p $(IDIR_WIRELESS_TOOLS)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/iw{config,getid,list,priv,spy} $(IDIR_WIRELESS_TOOLS)/usr/sbin/
- $(RSTRIP) $(IDIR_WIRELESS_TOOLS)
- $(IPKG_BUILD) $(IDIR_WIRELESS_TOOLS) $(PACKAGE_DIR)
-
-install-dev: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/{lib,include}
- $(CP) $(PKG_BUILD_DIR)/libiw.so* $(STAGING_DIR)/usr/lib/
- ln -sf libiw.so.28 $(STAGING_DIR)/usr/lib/libiw.so
- $(CP) $(PKG_BUILD_DIR)/{iwlib,wireless}.h $(STAGING_DIR)/usr/include/
-
-uninstall-dev:
- rm -f $(STAGING_DIR)/usr/lib/libiw.*
- rm -f $(STAGING_DIR)/usr/include/{iwlib,wireless}.h
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/wireless-tools/ipkg/wireless-tools.control b/openwrt/package/wireless-tools/ipkg/wireless-tools.control
deleted file mode 100644
index 5f472d958d..0000000000
--- a/openwrt/package/wireless-tools/ipkg/wireless-tools.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: wireless-tools
-Priority: optional
-Section: net
-Description: Tools for setting up WiFi cards using the Wireless Extension
diff --git a/openwrt/package/wireless-tools/patches/debian-2.patch b/openwrt/package/wireless-tools/patches/debian-2.patch
deleted file mode 100644
index ba8755b705..0000000000
--- a/openwrt/package/wireless-tools/patches/debian-2.patch
+++ /dev/null
@@ -1,35 +0,0 @@
---- wireless-tools-27.orig/iwlib.c
-+++ wireless-tools-27/iwlib.c
-@@ -622,6 +622,7 @@
- {
- struct iwreq wrq;
-
-+ memset((char *) &wrq, 0, sizeof(struct iwreq));
- memset((char *) info, 0, sizeof(struct wireless_config));
-
- /* Get wireless name */
---- wireless-tools-27.orig/Makefile
-+++ wireless-tools-27/Makefile
-@@ -64,8 +64,8 @@
- # Install directories
- INSTALL_DIR= $(PREFIX)/sbin/
- INSTALL_LIB= $(PREFIX)/lib/
--INSTALL_INC= $(PREFIX)/include/
--INSTALL_MAN= $(PREFIX)/man/
-+INSTALL_INC= $(PREFIX)/usr/include/
-+INSTALL_MAN= $(PREFIX)/usr/share/man/
-
- # Various commands
- RM = rm -f
-@@ -81,9 +81,9 @@
- endif
-
- # Other flags
--CFLAGS=-Os -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow \
-+#CFLAGS=-Os -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow \
- -Wpointer-arith -Wcast-qual -Winline -I.
--#CFLAGS=-O2 -W -Wall -Wstrict-prototypes -I.
-+CFLAGS=-O2 -W -Wall -Wstrict-prototypes -I.
- DEPFLAGS=-MMD
- XCFLAGS=$(CFLAGS) $(DEPFLAGS) $(WARN) $(HEADERS) $(WELIB_FLAG)
- PICFLAG=-fPIC
diff --git a/openwrt/package/wiviz/Config.in b/openwrt/package/wiviz/Config.in
deleted file mode 100644
index 5778e0e719..0000000000
--- a/openwrt/package/wiviz/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_WIVIZ
- prompt "wiviz............................. Wireless Network Visualization"
- tristate
- default m if CONFIG_DEVEL
- help
- Wireless Network Visualization
-
- http://students.washington.edu/natetrue/wiviz/
-
diff --git a/openwrt/package/wiviz/Makefile b/openwrt/package/wiviz/Makefile
deleted file mode 100644
index d5317f1ba6..0000000000
--- a/openwrt/package/wiviz/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wiviz
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WIVIZ,wiviz,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.prepared:
- mkdir -p $(PKG_BUILD_DIR)
- $(CP) ./src/* $(PKG_BUILD_DIR)/
- touch $@
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC="$(TARGET_CC)" \
- CCOPTS="$(TARGET_CFLAGS)" \
- INCLUDE="-I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib"
- touch $@
-
-$(IPKG_WIVIZ):
- mkdir -p $(IDIR_WIVIZ)/usr/sbin
- $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME) $(IDIR_WIVIZ)/usr/sbin/
- $(RSTRIP) $(IDIR_WIVIZ)
- $(CP) ./files/* $(IDIR_WIVIZ)
- find $(IDIR_WIVIZ) -name CVS | xargs rm -rf
- find $(IDIR_WIVIZ) -name .svn | xargs rm -rf
- $(IPKG_BUILD) $(IDIR_WIVIZ) $(PACKAGE_DIR)
-
-mostlyclean:
- $(MAKE) -C $(PKG_BUILD_DIR) clean
- rm -f $(PKG_BUILD_DIR)/.built
diff --git a/openwrt/package/wiviz/files/www/cgi-bin/wiviz/get.cgi b/openwrt/package/wiviz/files/www/cgi-bin/wiviz/get.cgi
deleted file mode 100755
index 161fc75ee1..0000000000
--- a/openwrt/package/wiviz/files/www/cgi-bin/wiviz/get.cgi
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-WIVIZ_PATH=wiviz
-
-echo Content-type: text/html
-echo
-killall -USR1 wiviz >/dev/null 2>&1
-if [ 0 -ne $? ]
- then #### Wi-Viz daemon not running, start it
- $WIVIZ_PATH >/dev/null </dev/null 2>&1 &
- killall -USR1 wiviz > /dev/null
- fi
-echo "<html><head><script language='JavaScript1.2'>"
-cat /tmp/wiviz-pipe
-echo "</script></head><body></body></html>"
diff --git a/openwrt/package/wiviz/files/www/cgi-bin/wiviz/set.cgi b/openwrt/package/wiviz/files/www/cgi-bin/wiviz/set.cgi
deleted file mode 100755
index 17b47873ae..0000000000
--- a/openwrt/package/wiviz/files/www/cgi-bin/wiviz/set.cgi
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-httpd -d $QUERY_STRING > /tmp/wiviz-cfg
-killall -USR2 wiviz
diff --git a/openwrt/package/wiviz/files/www/wiviz/adhoc-idle.gif b/openwrt/package/wiviz/files/www/wiviz/adhoc-idle.gif
deleted file mode 100755
index 05e479f78b..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/adhoc-idle.gif
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/adhoc-idle.png b/openwrt/package/wiviz/files/www/wiviz/adhoc-idle.png
deleted file mode 100755
index b10b102ec9..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/adhoc-idle.png
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/adhoc.gif b/openwrt/package/wiviz/files/www/wiviz/adhoc.gif
deleted file mode 100755
index d07c80cce3..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/adhoc.gif
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/adhoc.png b/openwrt/package/wiviz/files/www/wiviz/adhoc.png
deleted file mode 100755
index 57db25c28a..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/adhoc.png
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/ap-idle.gif b/openwrt/package/wiviz/files/www/wiviz/ap-idle.gif
deleted file mode 100755
index a929696112..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/ap-idle.gif
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/ap-idle.png b/openwrt/package/wiviz/files/www/wiviz/ap-idle.png
deleted file mode 100755
index a6e6fb3202..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/ap-idle.png
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/ap-wep-idle.gif b/openwrt/package/wiviz/files/www/wiviz/ap-wep-idle.gif
deleted file mode 100755
index a929696112..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/ap-wep-idle.gif
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/ap-wep-idle.png b/openwrt/package/wiviz/files/www/wiviz/ap-wep-idle.png
deleted file mode 100755
index a6e6fb3202..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/ap-wep-idle.png
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/ap-wep.gif b/openwrt/package/wiviz/files/www/wiviz/ap-wep.gif
deleted file mode 100755
index 29015207c2..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/ap-wep.gif
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/ap-wep.png b/openwrt/package/wiviz/files/www/wiviz/ap-wep.png
deleted file mode 100755
index 3436183a85..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/ap-wep.png
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/ap.gif b/openwrt/package/wiviz/files/www/wiviz/ap.gif
deleted file mode 100755
index 7eb5b3a6bb..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/ap.gif
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/ap.png b/openwrt/package/wiviz/files/www/wiviz/ap.png
deleted file mode 100755
index ccfc86431c..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/ap.png
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/pip-idle.gif b/openwrt/package/wiviz/files/www/wiviz/pip-idle.gif
deleted file mode 100755
index fa923bdf16..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/pip-idle.gif
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/pip-idle.png b/openwrt/package/wiviz/files/www/wiviz/pip-idle.png
deleted file mode 100755
index 3fe25fe333..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/pip-idle.png
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/pip.gif b/openwrt/package/wiviz/files/www/wiviz/pip.gif
deleted file mode 100755
index 1c566e9aa2..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/pip.gif
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/pip.png b/openwrt/package/wiviz/files/www/wiviz/pip.png
deleted file mode 100755
index 5c05a737ae..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/pip.png
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/station-idle.gif b/openwrt/package/wiviz/files/www/wiviz/station-idle.gif
deleted file mode 100755
index 155f02208e..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/station-idle.gif
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/station-idle.png b/openwrt/package/wiviz/files/www/wiviz/station-idle.png
deleted file mode 100755
index eb1621e056..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/station-idle.png
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/station.gif b/openwrt/package/wiviz/files/www/wiviz/station.gif
deleted file mode 100755
index c8a075f420..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/station.gif
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/station.png b/openwrt/package/wiviz/files/www/wiviz/station.png
deleted file mode 100755
index 8daf8df35a..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/station.png
+++ /dev/null
Binary files differ
diff --git a/openwrt/package/wiviz/files/www/wiviz/wiviz.css b/openwrt/package/wiviz/files/www/wiviz/wiviz.css
deleted file mode 100755
index 7b5afa7061..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/wiviz.css
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-This file is part of Wi-viz (http://wiviz.natetrue.com).
-
-Wi-viz is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License v2 as published by
-the Free Software Foundation.
-
-Wi-viz 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 Wi-viz; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-body {
- background-color: #D0D0D0;
- vertical-align: center;
- text-align: center;
-}
-div.main {
- background-color: #D0F0D0;
- width: 500px;
- height: 500px;
- border: 1px solid #555599;
- vertical-align: center;
- text-align: center;
-}
-div.floater {
- background-color: #D0F0D0;
- width: 125px;
- height: 300px;
- border: 1px solid #555599;
- float: right;
- z-index: 3;
-}
-span.status {
- color: #FF0000;
-}
-img.icon {
- width: 50px;
- height: 50px;
-}
-img.pip {
- width: 12px;
- height: 12px;
- position: absolute;
- z-index: 1;
-}
-td {
- vertical-align: center;
- text-align: center;
-}
-span.hostdesc {
- font-size: 10pt;
-}
-span.extrafo {
- font-size: 10pt;
- visibility: hidden;
-}
-div.hostdiv {
- position: absolute;
- background-color: transparent;
- text-align: center;
- width: 150px;
- z-index: 2;
-}
-div.hostdiv_hov {
- position: absolute;
- background-color: #C0E0C0;
- text-align: center;
- width: 150px;
- z-index: 3;
- border: 1px solid #000000;
-}
diff --git a/openwrt/package/wiviz/files/www/wiviz/wiviz.html b/openwrt/package/wiviz/files/www/wiviz/wiviz.html
deleted file mode 100755
index f1356fd824..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/wiviz.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<html>
-<head>
-<!--
-This file is part of Wi-viz (http://wiviz.natetrue.com).
-
-Wi-viz is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License v2 as published by
-the Free Software Foundation.
-
-Wi-viz 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 Wi-viz; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--->
-<title>Wi-viz wireless network environment visualization</title>
-<link rel='stylesheet' type='text/css' href='wiviz.css'>
-<script language='JavaScript1.2' src='wiviz.js'>
-</script>
-</head>
-<body>
-<h2>OpenWRT Wi-viz network visualization</h2>
-<div class='floater'>
-Status: <span id='status' class='status'>Monitoring</span><br>
-<input type='button' id='togglelisten' value='Stop monitoring' onclick='toggleListen()'>
-<p><form name='channelform' action='/cgi-bin/wiviz/set.cgi' method='get' target='wivizGetFrame'>
-Channel setting:
-<select id='channelsel' name='channelsel' onchange='channelSet()'>
-<option value='nochange' selected>No change</option>
-<option value='hop'>Hopping</option>
-<option>1</option>
-<option>2</option>
-<option>3</option>
-<option>4</option>
-<option>5</option>
-<option>6</option>
-<option>7</option>
-<option>8</option>
-<option>9</option>
-<option>10</option>
-<option>11</option>
-<option>12</option>
-<option>13</option>
-<option>14</option>
-</select><br>
-<span id='hopoptions' style='display: none'>
-Time/channel: <select name='hopdwell'>
-<option value='500'>0.5 sec</option>
-<option selected value='1000'>1 sec</option>
-<option value='2000'>2 sec</option>
-<option value='5000'>5 sec</option>
-</select><br>
-Hop sequence: <select name='hopseq'>
-<option selected>1,3,6,8,11</option>
-<option>1,3,6,8,11,14</option>
-<option>1,6,11</option>
-<option value='1,2,3,4,5,6,7,8,9,10,11'>1 to 11</option>
-<option value='1,2,3,4,5,6,7,8,9,10,11,12,13,14'>1 to 14</option>
-</select><br>
-<input type='submit' value='Set'>
-</form>
-</span>
-</div>
-<center>
-<div id='infodiv' class='main'>
-<table height=100% width=100%><tr><td>
-<span id='pips' style='position: relative'></span>
-<span id='content' style='position: relative'></span>
-</td></tr></table>
-</div>
-</center>
-<span id='debug' style='display: none'></span>
-<iframe style='display:none' id='wivizGetFrame' name='wivizGetFrame' src='about:blank'></iframe>
-<script language='JavaScript1.2'>
- scan_thread();
-</script>
-</body>
-</html>
diff --git a/openwrt/package/wiviz/files/www/wiviz/wiviz.js b/openwrt/package/wiviz/files/www/wiviz/wiviz.js
deleted file mode 100755
index dc67d8f011..0000000000
--- a/openwrt/package/wiviz/files/www/wiviz/wiviz.js
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
-This file is part of Wi-viz (http://wiviz.natetrue.com).
-
-Wi-viz is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License v2 as published by
-the Free Software Foundation.
-
-Wi-viz 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 Wi-viz; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-var mv = 353;
-var stupid = eval('window.attachEvent') ? 1 : 0;
-var hosts;
-var idle_timeout = 20;
-var erase_timeout = 35;
-var skew_x = 0; skew_y = 0;
-var listening = 1;
-var wiviz_cgi_url = "/cgi-bin/wiviz/get.cgi";
-
-//What? You mean the POSIX thread API hasn't been ported to Javascript? Bugger.
-function scan_thread() {
- var loc = document.getElementById('wivizGetFrame').contentWindow.location;
- if (!listening) return;
- if (loc.href != wiviz_cgi_url) {
- loc.replace(wiviz_cgi_url);
- }
- else {
- loc.reload(true);
- }
- setTimeout("scan_thread()", 5000);
-}
-
-function toggleListen() {
- statusel = document.getElementById('status');
- statusbutton = document.getElementById('togglelisten');
- listening = 1 - listening;
- if (listening) {
- statusel.innerHTML = "Monitoring";
- statusbutton.value = "Stop monitoring";
- document.getElementById('content').innerHTML = '';
- scan_thread();
- }
- else {
- statusel.innerHTML = "Stopped";
- statusbutton.value = "Start monitoring";
- }
-}
-
-function channelSet() {
- channelset = document.getElementById('channelsel').value;
- if (channelset == 'hop') {
- document.getElementById('hopoptions').style.display = 'inline';
- }
- else {
- document.getElementById('hopoptions').style.display = 'none';
- if (channelset != 'nochange') document.forms[0].submit();
- }
-}
-
-function mousenter(e) {
- if (stupid) e = event;
- el = stupid ? e.srcElement : e.currentTarget;
- el.parentNode.parentNode.className = 'hostdiv_hov';
- el.nextSibling.nextSibling.nextSibling.style.visibility = 'visible';
-}
-
-function mouseout(e) {
- if (stupid) e = event;
- el = stupid ? e.srcElement : e.currentTarget;
- el.parentNode.parentNode.className = 'hostdiv';
- el.nextSibling.nextSibling.nextSibling.style.visibility = 'hidden';
-}
-
-function generate_mnemonic(hash) {
- c = new Array('b','c','d','f','g','h','j','k','l','m','n','p','qu','r','s',
- 't','v','w','y','z','th','ch','sh','cc','rr');
- v = new Array('a','e','i','o','u','ae','ai','ao','au','eo','ei','eu','iu','oa','oe');
- var i, a;
- var p = hash & 1;
- var n = '';
- for (i = 0; i < 4; i++) {
- a = p ? c : v;
- n += a[hash % a.length];
- hash += a.length << 3 + a.length / 2;
- hash *= hash;
- p = 1 - p;
- }
- return n;
-}
-
-function mkhash(mac) {
- var macarr = mac.split(/:/);
- var hash = 0;
- for (j = 0; j < 6; j++) {
- hash += parseInt(macarr[j]) * j << j;
- hash += 11;
- }
- if (hash < 0) hash = -hash;
- return hash;
-}
-
-function wiviz_callback(mhosts, cfgstring) {
- var nh = '';
- hosts = mhosts;
- for (i = 0; i < hosts.length; i++) {
- hs = hosts[i];
- if (hs.length == 0) break;
- hs.mac = hs[0];
- hs.rssi = hs[1];
- hs.desc = hs[2];
- hs.descarr = hs.desc.split(/-/)
- hs.age = hs[3];
- hs.hash = mkhash(hs.mac);
- hs.mnem = generate_mnemonic(hs.hash)
- hs.name = hs.mnem;
- el = document.getElementById(hs.mnem);
- if (el) {
- if (hs.age > erase_timeout) {
- el.parentNode.removeChild(el);
- continue;
- }
- el.innerHTML = genHTML(hs);
- }
- else {
- if (hs.age > erase_timeout) continue;
- hs.x = Math.sin(hs.hash / mv) * hs.rssi * 2 - 67;
- hs.y = Math.cos(hs.hash / mv) * hs.rssi * 2;
- nh += "<div class='hostdiv' id='" + hs.mnem + "' style='top: ";
- nh += parseInt(hs.y) + "px; left: " + parseInt(hs.x) + "px'>";
- nh += genHTML(hs) + "</div>";
- }
- }
- document.getElementById('content').innerHTML += nh;
-
- cfgarr = cfgstring.split(/-/);
- if (cfgarr[1]) {
- if (cfgarr[1] == 'hopping') cfgarr[1] = 'hop';
- document.getElementById('channelsel').value = cfgarr[1];
- if (cfgarr[1] == 'hop') channelSet();
- }
-
- //repip();
- setTimeout("declump(); repip();", 250);
-}
-
-function repip() {
- var nh = "";
- if (!hosts) return;
- for (i = 0; i < hosts.length; i++) {
- hs = hosts[i];
- if (hs.length == 0) break;
- mac = hs[0];
- rssi = hs[1];
- desc = hs[2].split(/-/);
- if (desc[0] == 'sta' && desc[1] == 'assoc') {
- bss = desc[2];
- hs.apmnem = generate_mnemonic(mkhash(bss));
- ap = document.getElementById(hs.apmnem);
- sta = document.getElementById(hs.mnem);
- if (ap && sta) {
- x = parseInt(sta.style.left);
- y = parseInt(sta.style.top);
- dx = parseInt(ap.style.left) - x;
- dy = parseInt(ap.style.top) - y;
- x += 67;
- y += 10;
- d = Math.sqrt(dx*dx+dy*dy);
- for (j = 0; j < d; j += 15) {
- nh += "<img src='"
- + ((hs.age < idle_timeout) ? "pip" : "pip-idle")
- + (stupid ? ".gif" : ".png")
- + "' class='pip' style='top:"
- + parseInt(y+dy * j / d) + "; left:"
- + parseInt(x+dx * j / d) + "'>";
- }
- }
- }
- }
- document.getElementById('pips').innerHTML = nh;
-}
-
-function declump() {
- var c = 0;
- var top = 30000,left = 30000,right = -30000,bottom = -30000;
- for (i = 0; i < hosts.length; i++) {
- for (j = 0; j < hosts.length; j++) {
- if (i == j) continue;
- e1 = document.getElementById(hosts[i].mnem);
- e2 = document.getElementById(hosts[j].mnem);
- if (!e1 || !e2) continue;
- x1 = parseInt(e1.style.left);
- x2 = parseInt(e2.style.left);
- y1 = parseInt(e1.style.top);
- y2 = parseInt(e2.style.top);
- if (x1 < left) left = x1;
- if (y1 < top) top = y1;
- if (x1 > right) right = x1;
- if (y1 > bottom) bottom = y1;
- ox = x2;
- oy = y2;
- dist = Math.sqrt(Math.pow((x1-x2), 2) + Math.pow((y1-y2), 2));
- if (dist == 0) {
- x2 += Math.random() * 5;
- y2 += Math.random() * 5;
- dist = 10;
- }
- if (dist < 100) {
- cx = (x1-x2) * 5 / (dist / 3);
- cy = (y1-y2) * 5 / (dist / 3);
- x2 -= cx;
- y2 -= cy;
- }
- if (hosts[j].apmnem == hosts[i].mnem
- || hosts[i].apmnem == hosts[j].mnem) {
- cx = (x1-x2) * 5 / (dist / 3);
- cy = (y1-y2) * 5 / (dist / 3);
- if (dist > 150) {
- x2 += cx;
- y2 += cy;
- }
- }
- if (Math.abs(ox-x2) > 2 || Math.abs(oy-y2) > 2) {
- e2.style.left = parseInt(x2);
- e2.style.top = parseInt(y2);
- c++;
- }
- }
- }
- if (top < bottom && left < right) {
- document.getElementById('debug').innerHTML = left + "," + right + "," + top + "," +bottom;
- document.getElementById('content').style.left =
- document.getElementById('pips').style.left =
- -(right - left) / 2 - left - 67;
- document.getElementById('content').style.top =
- document.getElementById('pips').style.top =
- -(bottom - top) / 2 - top - 25;
- }
- repip();
- if (c) setTimeout("declump()", 100);
-}
-
-function genHTML(hs) {
- var nh = '';
- nh += "<center><img class='icon' src='"
- a = hs.descarr;
- if (a[0] == 'ap' || a[0] == 'adhoc') {
- if (a[0] == 'ap') {
- nh += "ap";
- if (a[5] == 'enc') nh += "-wep";
- }
- else {
- nh += "adhoc";
- }
- hs.channel = a[2];
- hs.name = a[4];
- }
- else if (a[0] == 'sta') {
- nh += "station";
- hs.channel = 0;
- }
- nh += (hs.age < idle_timeout) ? "": "-idle";
- nh += stupid ? ".gif" : ".png";
- nh += "' onmouseover='mousenter(event)' onmouseout='mouseout(event)'"
- + "><br><span class='hostdesc'>" + hs.mac + "<br><i>'" + hs.name;
- nh += "'</i>";
- if (hs.channel) {
- nh += " ch" + hs.channel;
- }
- nh += "</span><span class='extrafo'><br>";
- if (a[0] == 'ap') nh += "Access point";
- if (a[0] == 'sta') nh += "Station";
- if (a[0] == 'adhoc') nh += "Logical ad-hoc entity";
- if (a[0] == 'ap' || a[0] == 'adhoc') {
- nh += "<br>";
- if (a[5] == '?enc') nh += "Encryption unknown";
- if (a[5] == 'enc') nh += "Encrypted";
- if (a[5] == 'unenc') nh += "Unencrypted";
- if (a[6] == 'wep') nh += "-WEP";
- if (a[6] == 'wpa') nh += "-WPA";
- }
- nh += "<br>RSSI: " + hs.rssi + " dBm<br>"
- + "Seen " + hs.age + " seconds ago<br>";
- nh += "</span></center>";
- return nh;
-}
diff --git a/openwrt/package/wiviz/ipkg/wiviz.control b/openwrt/package/wiviz/ipkg/wiviz.control
deleted file mode 100644
index 5b1adb1293..0000000000
--- a/openwrt/package/wiviz/ipkg/wiviz.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: wiviz
-Priority: optional
-Section: net
-Depends: libpcap
-Description: Wireless Network Visualization
diff --git a/openwrt/package/wiviz/src/Makefile b/openwrt/package/wiviz/src/Makefile
deleted file mode 100644
index 6f230359df..0000000000
--- a/openwrt/package/wiviz/src/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-## Wi-viz makefile
-# Supply your own C cross-compiler; I recommend the one from the OpenWRT buildroot
-# Also requires a libpcap to link with, use libpcap.a for static, .so for shared
-CC=~/buildroot/staging_dir_mipsel/bin/mipsel-linux-gcc
-LDFLAGS=-L~/buildroot/staging_dir_mipsel/lib
-LIBS=-lpcap
-
-CCOPTS=-O2 -Os -pipe -mips32 -mtune=mips32
-INCLUDE=-I~/buildroot/staging_dir_mipsel/include
-SOURCES=wiviz.c wl_access.c channelhopper.c
-OBJS=wiviz.o wl_access.o channelhopper.o
-TARGET=wiviz
-
-wiviz: ${OBJS}
- ${CC} ${CCOPTS} ${INCLUDE} -o ${TARGET} ${OBJS} ${LDFLAGS} ${LIBS}
-
-wiviz.o: wiviz.c
- ${CC} ${CCOPTS} ${INCLUDE} -c ${SOURCES}
-wl_access.o: wl_access.c
- ${CC} ${CCOPTS} ${INCLUDE} -c ${SOURCES}
-channelhopper.o: channelhopper.c
- ${CC} ${CCOPTS} ${INCLUDE} -c ${SOURCES}
-
-remake:
- touch wiviz.c wl_access.c channelhopper.c
diff --git a/openwrt/package/wiviz/src/channelhopper.c b/openwrt/package/wiviz/src/channelhopper.c
deleted file mode 100644
index 0a3e6feb08..0000000000
--- a/openwrt/package/wiviz/src/channelhopper.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-This file is part of Wi-viz (http://wiviz.natetrue.com).
-
-Wi-viz is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License v2 as published by
-the Free Software Foundation.
-
-Wi-viz 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 Wi-viz; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-#include <stdio.h>
-#include <pcap.h>
-#include <signal.h>
-#include <sys/time.h>
-#include "wl_access.h"
-#include "channelhopper.h"
-#include "structs.h"
-
-void ch_sig_handler(int i) {
-
- }
-
-void channelHopper(wiviz_cfg * cfg) {
- int hopPos;
- int nc;
-
- //Turn off signal handling from parent process
- signal(SIGUSR1, &ch_sig_handler);
- signal(SIGUSR2, &ch_sig_handler);
-
- //Start hoppin'!
- hopPos = 0;
- while (1) {
- nc = cfg->channelHopSeq[hopPos];
- hopPos = (hopPos + 1) % cfg->channelHopSeqLen;
- //Set the channel
- fprintf(stderr, "It sets the channel to %i\n", nc);
- wl_ioctl(WL_DEVICE, WLC_SET_CHANNEL, &nc, 4);
- //Sleep
- usleep(cfg->channelDwellTime * 1000);
- }
- }
diff --git a/openwrt/package/wiviz/src/channelhopper.h b/openwrt/package/wiviz/src/channelhopper.h
deleted file mode 100644
index 6ab63af088..0000000000
--- a/openwrt/package/wiviz/src/channelhopper.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-This file is part of Wi-viz (http://wiviz.natetrue.com).
-
-Wi-viz is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License v2 as published by
-the Free Software Foundation.
-
-Wi-viz 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 Wi-viz; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-// Channel hopper definition
-
-void channelHopper();
diff --git a/openwrt/package/wiviz/src/structs.h b/openwrt/package/wiviz/src/structs.h
deleted file mode 100644
index 10f80f336e..0000000000
--- a/openwrt/package/wiviz/src/structs.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
-This file is part of Wi-viz (http://wiviz.natetrue.com).
-
-Wi-viz is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License v2 as published by
-the Free Software Foundation.
-
-Wi-viz 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 Wi-viz; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-//Structure definitions for wireless packets
-
-#define MAX_HOSTS 257
-
-#ifdef DEFINE_TYPES
-typedef unsigned short u_short;
-typedef unsigned char u_char;
-typedef unsigned int u_int;
-#endif
-
-typedef enum {
- mgt_assocRequest = 0,
- mgt_assocResponse = 1,
- mgt_reassocRequest = 2,
- mgt_reassocResponse = 3,
- mgt_probeRequest = 4,
- mgt_probeResponse = 5,
- mgt_beacon = 8,
- mgt_disassoc = 10,
- mgt_auth = 11,
- mgt_deauth = 12
- } wifi_frametype;
-
-typedef struct ieee802_11_hdr {
- u_char frame_control;
- u_char flags;
-#define IEEE80211_TO_DS 0x01
-#define IEEE80211_FROM_DS 0x02
-#define IEEE80211_MORE_FRAG 0x04
-#define IEEE80211_RETRY 0x08
-#define IEEE80211_PWR_MGT 0x10
-#define IEEE80211_MORE_DATA 0x20
-#define IEEE80211_WEP_FLAG 0x40
-#define IEEE80211_ORDER_FLAG 0x80
- u_short duration;
- u_char addr1[6];
- u_char addr2[6];
- u_char addr3[6];
- u_short frag_and_seq;
- } ieee802_11_hdr;
-
-typedef struct {
- u_char timestamp[8];
- u_short bcn_interval;
- u_short caps;
-#define MGT_CAPS_AP 0x1
-#define MGT_CAPS_IBSS 0x2
-#define MGT_CAPS_WEP 0x10
- } ieee_802_11_mgt_frame;
-
-typedef struct {
- u_char tag;
- u_char length;
- } ieee_802_11_tag;
-
-typedef enum {
- tagSSID = 0,
- tagRates = 1,
- tagChannel = 3,
- tagVendorSpecific = 0xDD
- } i81tag;
-
-typedef struct prism_hdr {
- u_int msg_code;
- u_int msg_length;
- char cap_device[16];
- //char dids[0];
- } prism_hdr;
-
-typedef struct prism_did {
- u_short did;
- u_short status1;
- u_short status2;
- u_short length;
- //int value[0];
- } prism_did;
-
-typedef enum prism_did_num {
- pdn_host_time = 0x1041,
- pdn_mac_time = 0x2041,
- pdn_rssi = 0x4041,
- pdn_sq = 0x5041,
- pdn_datarate = 0x8041,
- pdn_framelen = 0xa041
- } prism_did_num;
-
-
-
-//Structure definitions for data collection
-
-typedef enum {
- typeUnknown,
- typeAP,
- typeSta,
- typeAdhocHub
- } host_type;
-
-typedef enum {
- ssUnknown,
- ssUnassociated,
- ssAssociated
- } sta_state;
-
-typedef enum {
- aetUnknown,
- aetUnencrypted,
- aetEncUnknown,
- aetEncWEP,
- aetEncWPA
- } ap_enc_type;
-
-typedef struct {
- u_char bssid[6];
- char * ssid[32];
- u_char ssidlen;
- u_char channel;
- u_short flags;
- ap_enc_type encryption;
- } ap_info;
-
-typedef struct {
- sta_state state;
- u_char connectedBSSID[6];
- } sta_info;
-
-typedef struct {
- u_char occupied;
- u_char mac[6];
- host_type type;
- time_t lastSeen;
- int RSSI;
- ap_info * apInfo;
- sta_info * staInfo;
- } wiviz_host;
-
-//Primary config struct
-typedef struct {
- wiviz_host hosts[MAX_HOSTS];
- int numHosts;
- int readFromWl;
- time_t lastKeepAlive;
- int channelHopping;
- int channelDwellTime;
- int channelHopSeq[14];
- int channelHopSeqLen;
- int curChannel;
- int channelHopperPID;
- } wiviz_cfg;
-
-
-
-
-
diff --git a/openwrt/package/wiviz/src/wiviz.c b/openwrt/package/wiviz/src/wiviz.c
deleted file mode 100644
index d2ad9f2ee4..0000000000
--- a/openwrt/package/wiviz/src/wiviz.c
+++ /dev/null
@@ -1,572 +0,0 @@
-/*
-This file is part of Wi-viz (http://wiviz.natetrue.com).
-
-Wi-viz is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License v2 as published by
-the Free Software Foundation.
-
-Wi-viz 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 Wi-viz; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-#include <stdio.h>
-#include <pcap.h>
-#include <signal.h>
-
-#define HOST_TIMEOUT 300
-
-#include "wl_access.h"
-#include "structs.h"
-#include "channelhopper.h"
-
-#ifdef WIN32
-#define OFFLINE
-#endif
-#ifndef __cplusplus
-#define __cdecl
-#endif
-
-#define nonzeromac(x) memcmp(x, "\0\0\0\0\0\0", 6)
-
-void dealWithPacket(wiviz_cfg * cfg, struct pcap_pkthdr * header, const u_char * packet);
-wiviz_host * gotHost(wiviz_cfg * cfg, u_char * mac, host_type type);
-void fprint_mac(FILE * outf, u_char * mac, char * extra);
-void print_mac(u_char * mac, char * extra);
-void print_host(FILE * outf, wiviz_host * host);
-void __cdecl signal_handler(int);
-void readWL(wiviz_cfg * cfg);
-void reloadConfig();
-
-wiviz_cfg * global_cfg;
-
-////////////////////////////////////////////////////////////////////////////////
-int main(int argc, char * * argv) {
- pcap_t *handle;
- char *dev;
- char errbuf[PCAP_ERRBUF_SIZE];
- int stop = 0;
- int oldMonitor, newMonitor;
- struct pcap_pkthdr header;
- const u_char *packet;
- wiviz_cfg cfg;
- int i;
- int defaultHopSeq[] = { 1, 3, 6, 8, 11 };
-
- global_cfg = &cfg;
- signal(SIGUSR1, &signal_handler);
- signal(SIGUSR2, &signal_handler);
-
- fprintf(stderr, "Wi-Viz infogathering daemon by Nathan True\n");
-
- memset(&cfg, 0, sizeof(wiviz_cfg));
- cfg.numHosts = 0;
- cfg.lastKeepAlive = time(NULL);
- cfg.channelHopping = 0;
- cfg.channelDwellTime = 1000;
- cfg.channelHopSeqLen = 5;
- memcpy(cfg.channelHopSeq, defaultHopSeq, sizeof(defaultHopSeq));
-
- wl_ioctl(WL_DEVICE, WLC_GET_MAGIC, &i, 4);
- if (i != WLC_IOCTL_MAGIC) {
- fprintf(stderr, "Wireless magic not correct, not querying wl for info\n");
- cfg.readFromWl = 0;
- }
- else {
- cfg.readFromWl = 1;
- wl_ioctl(WL_DEVICE, WLC_GET_MONITOR, &oldMonitor, 4);
- newMonitor = 1;
- wl_ioctl(WL_DEVICE, WLC_SET_MONITOR, &newMonitor, 4);
- }
-
- reloadConfig();
-
-#ifndef OFFLINE
- dev = "prism0";
- handle = pcap_open_live(dev, BUFSIZ, 1, 0, errbuf);
-#else
- dev = "c:\\cifsroot\\wdump2.pcap";
- handle = pcap_open_offline(dev, errbuf);
-#endif
-
- if (cfg.readFromWl) {
- readWL(&cfg);
- }
-
- if (!handle) {
- fprintf(stderr, "Failure to open pcap!\nErr=%s\n", errbuf);
- return -1;
- }
- while (!stop) {
- packet = pcap_next(handle, &header);
- if (!packet) break;
- dealWithPacket(&cfg, &header, packet);
- if (time(NULL) - cfg.lastKeepAlive > 30) stop = 1;
- }
-
- signal_handler(SIGUSR1);
-
- if (cfg.channelHopperPID) kill(cfg.channelHopperPID, SIGKILL);
-
- for (i = 0; i < MAX_HOSTS; i++) {
- print_host(stderr, cfg.hosts + i);
- if (cfg.hosts[i].occupied) printf("\n");
- if (cfg.hosts[i].apInfo) free(cfg.hosts[i].apInfo);
- if (cfg.hosts[i].staInfo) free(cfg.hosts[i].staInfo);
- }
-
- wl_ioctl(WL_DEVICE, WLC_SET_MONITOR, &oldMonitor, 4);
-
- pcap_close(handle);
- return 0;
- }
-
-////////////////////////////////////////////////////////////////////////////////
-void writeJavascript() {
- int i;
- FILE * outf;
- wiviz_host * h;
-
- outf = fopen("/tmp/wiviz-pipe", "w");
- if (!outf) {
- fprintf(stderr, "Failure to open output file\n");
- return;
- }
-
- global_cfg->lastKeepAlive = time(NULL);
-
- if(global_cfg->readFromWl) readWL(global_cfg);
-
- fprintf(outf, "top.hosts = new Array(\n");
- for (i = 0; i < MAX_HOSTS; i++) {
- h = global_cfg->hosts + i;
- if (h->occupied == 0) continue;
- if (time(NULL) - h->lastSeen > HOST_TIMEOUT) {
- h->occupied = 0;
- }
- fprintf(outf, " new Array(");
- print_host(outf, h);
- fprintf(outf, "),\n");
- }
- fprintf(outf, "new Array());\n");
- fprintf(outf, "var cfg_string = 'channel-");
- if (global_cfg->channelHopping) {
- fprintf(outf, "hopping");
- }
- else {
- fprintf(outf, "%i", global_cfg->curChannel);
- }
- fprintf(outf, "';\ntop.wiviz_callback(top.hosts, cfg_string);\n");
- fclose(outf);
- }
-
-////////////////////////////////////////////////////////////////////////////////
-void reloadConfig() {
- FILE * cnf;
- wiviz_cfg * cfg = global_cfg;
- char filebuffer[512];
- char * fbptr, * p, * v, * vv;
- int fblen, val;
- int hopCfgChanged = 0;
- int newHopSeq[12];
- int newHopSeqLen = 0;
-
- fprintf(stderr, "Loading config file\n");
-
- cnf = fopen("/tmp/wiviz-cfg", "r");
- if (!cnf) {
- fprintf(stderr, "Wiviz: No config file (/tmp/wiviz-cfg) present, using defaults\n");
- return;
- }
-
- fblen = fread(filebuffer, 1, 512, cnf);
- fclose(cnf);
- if (fblen >= 512) {
- fprintf(stderr, "Error reading config file\n");
- return;
- }
- filebuffer[fblen] = 0;
- fprintf(stderr, "Read %i bytes from config file\n", fblen);
-
- fbptr = filebuffer;
-
- while (fbptr < filebuffer + fblen && *fbptr != 0) {
- p = fbptr;
- //Find end of parameter
- for (; *fbptr != '=' && *fbptr != 0; fbptr++);
- *fbptr = 0;
- v = ++fbptr;
- //Find end of value
- for (; *fbptr != '&' && *fbptr != 0; fbptr++);
- *(fbptr++) = 0;
- fprintf(stderr, "Config: %s=%s\n", p, v);
- //Apply configuration
- if (!strcmp(p, "channelsel")) {
- //Channel selector
- cfg->channelHopping = 0;
- if (!strcmp(v, "hop")) {
- //Set channel hopping
- cfg->channelHopping = 1;
- hopCfgChanged = 1;
- }
- else if (!strcmp(v, "nochange")) {
- //Don't change anything, read channel from wireless card
- readWL(cfg);
- }
- else {
- val = atoi(v);
- if (val < 1 || val > 14) {
- fprintf(stderr, "Channel setting in config file invalid (%i)\n", cfg->curChannel);
- }
- else {
- cfg->curChannel = val;
- if (cfg->readFromWl) {
- if (wl_ioctl(WL_DEVICE, WLC_SET_CHANNEL, &cfg->curChannel, 4) < 0) {
- fprintf(stderr, "Channel set to %i failed\n", cfg->curChannel);
- }
- }
- else {
- fprintf(stderr, "Can't set channel, no Broadcom wireless device present\n");
- }
- }
- }
- }
- if (!strcmp(p, "hopdwell")) {
- val = atoi(v);
- if (val < 100) val = 100;
- if (val > 30000) val = 30000;
- if (cfg->channelDwellTime != val) hopCfgChanged = 1;
- cfg->channelDwellTime = val;
- }
- if (!strcmp(p, "hopseq")) {
- cfg->channelHopSeqLen = 0;
- while (v < fbptr) {
- for (vv = v; *vv != ',' && *vv != 0; vv++);
- if (*vv == 0) {
- cfg->channelHopSeq[cfg->channelHopSeqLen++] = atoi(v);
- break;
- }
- *vv = 0;
- cfg->channelHopSeq[cfg->channelHopSeqLen++] = atoi(v);
- v = vv + 1;
- }
- }
- /*
- if (!strcmp(p, "")) {
- }
- */
- }
- //Apply channel hopper settings
- if (cfg->channelHopping == 0 && cfg->channelHopperPID) {
- kill(cfg->channelHopperPID, SIGKILL);
- cfg->channelHopperPID = 0;
- }
- if (cfg->channelHopping == 1 && hopCfgChanged) {
- if (cfg->channelHopperPID) kill(cfg->channelHopperPID, SIGKILL);
- if ((cfg->channelHopperPID = fork()) == 0) {
- channelHopper(cfg);
- }
- }
- }
-
-////////////////////////////////////////////////////////////////////////////////
-void __cdecl signal_handler(int signum) {
- if (signum == SIGUSR1) writeJavascript();
- if (signum == SIGUSR2) reloadConfig();
- }
-
-////////////////////////////////////////////////////////////////////////////////
-void dealWithPacket(wiviz_cfg * cfg, struct pcap_pkthdr * header, const u_char * packet) {
- ieee802_11_hdr * hWifi;
- prism_hdr * hPrism;
- wiviz_host * host;
- wiviz_host * emergebss;
- host_type type = typeUnknown;
- int wfType;
- int rssi = 0;
- int to_ds, from_ds;
- prism_did * i;
- ieee_802_11_tag * e;
- ieee_802_11_mgt_frame * m;
- char * src = "\0\0\0\0\0\0";
- char * dst = "\0\0\0\0\0\0";
- char * bss = "\0\0\0\0\0\0";
- char * ssid = "";
- int channel = 0;
- int adhocbeacon = 0;
- u_char ssidlen = 0;
- ap_enc_type encType = aetUnknown;
-
- if (!packet) return;
- if (header->len < sizeof(prism_hdr) + sizeof(ieee802_11_hdr)) return;
- hPrism = (prism_hdr *) packet;
- hWifi = (ieee802_11_hdr *) (packet + (hPrism->msg_length));
-
- //Parse the prism DIDs
- i = (prism_did *)((char *)hPrism + sizeof(prism_hdr));
- while ((int)i < (int)hWifi) {
- if (i->did == pdn_rssi) rssi = *(int *)(i+1);
- i = (prism_did *) ((int)(i+1) + i->length);
- }
-
- //Establish the frame type
- wfType = ((hWifi->frame_control & 0xF0) >> 4) + ((hWifi->frame_control & 0xC) << 2);
- switch (wfType) {
- case mgt_assocRequest:
- case mgt_reassocRequest:
- case mgt_probeRequest:
- type = typeSta;
- src=hWifi->addr2;
- dst=hWifi->addr1;
- break;
- case mgt_assocResponse:
- case mgt_reassocResponse:
- case mgt_probeResponse:
- case mgt_beacon:
- src=hWifi->addr2;
- dst=hWifi->addr1;
- bss=hWifi->addr3;
- type = typeAP;
- break;
- }
- to_ds = hWifi->flags & IEEE80211_TO_DS;
- from_ds = hWifi->flags & IEEE80211_FROM_DS;
- if ((wfType & 0xF0) == 0x20 && (wfType & 0xF) < 4) {
- //Data frame
- src=hWifi->addr2;
- dst=hWifi->addr1;
- if (!from_ds) type = typeSta;
- else type = typeAP;
- if (!to_ds && !from_ds) bss = hWifi->addr3;
- if (to_ds && !from_ds) bss = hWifi->addr1;
- if (!to_ds && from_ds) bss = hWifi->addr2;
- }
- if (type == typeUnknown) return;
-
- //Parse the 802.11 tags
- if (wfType == mgt_probeResponse || wfType == mgt_beacon) {
- m = (ieee_802_11_mgt_frame *) (hWifi + 1);
- if (m->caps & MGT_CAPS_IBSS) {
- type = typeSta;
- adhocbeacon = 1;
- }
- if (m->caps & MGT_CAPS_WEP) encType = aetEncWEP;
- else encType = aetUnencrypted;
- e = (ieee_802_11_tag *) ((int) m + sizeof(ieee_802_11_mgt_frame));
- while ((u_int)e < (u_int)packet + header->len) {
- if (e->tag == tagSSID) {
- ssidlen = e->length;
- ssid = (char *)(e + 1);
- }
- if (e->tag == tagChannel) {
- channel = *(char *)(e + 1);
- }
- if (e->tag == tagVendorSpecific) {
- if (e->length >= 4 && memcmp(e + 1, "\x00\x50\xf2\x01", 4) == 0) {
- //WPA encryption
- encType = aetEncWPA;
- }
- }
- e = (ieee_802_11_tag *) ((int)(e + 1) + e->length);
- }
- }
-
- //Look up the host in the hash table
- host = gotHost(cfg, src, type);
-
- //Add any info we received
- if (host->RSSI) {
- host->RSSI = host->RSSI * 9 / 10 + (-rssi * 10);
- }
- else {
- host->RSSI = -rssi * 100;
- }
- if (type == typeSta) {
- if (nonzeromac(bss)) {
- memcpy(host->staInfo->connectedBSSID, bss, 6);
- host->staInfo->state = ssAssociated;
- emergebss = gotHost(cfg, bss, typeAP);
- if (emergebss->RSSI == 0) emergebss->RSSI = 10000;
- memcpy(emergebss->apInfo->bssid, bss, 6);
- if (adhocbeacon) {
- emergebss->type = typeAdhocHub;
- if (ssidlen > 0 && ssidlen <= 32) {
- memcpy(emergebss->apInfo->ssid, ssid, ssidlen);
- emergebss->apInfo->ssidlen = ssidlen;
- }
- if (channel) emergebss->apInfo->channel = channel;
- emergebss->apInfo->flags = hWifi->flags;
- emergebss->RSSI = host->RSSI;
- if (encType != aetUnknown) emergebss->apInfo->encryption = encType;
- }
- }
- if (wfType == mgt_probeRequest && host->staInfo->state == ssUnknown) host->staInfo->state = ssUnassociated;
- }
- if (type == typeAP) {
- if (nonzeromac(bss)) {
- memcpy(host->apInfo->bssid, bss, 6);
- }
- if (ssidlen > 0 && ssidlen <= 32) {
- memcpy(host->apInfo->ssid, ssid, ssidlen);
- host->apInfo->ssidlen = ssidlen;
- }
- if (channel) host->apInfo->channel = channel;
- host->apInfo->flags = hWifi->flags;
- if (encType != aetUnknown) host->apInfo->encryption = encType;
- }
- }
-
-////////////////////////////////////////////////////////////////////////////////
-void print_mac(u_char * mac, char * extra) {
- fprint_mac(stdout, mac, extra);
- }
-
-////////////////////////////////////////////////////////////////////////////////
-void fprint_mac(FILE * outf, u_char * mac, char * extra) {
- fprintf(outf, "%02X:%02X:%02X:%02X:%02X:%02X%s",
- mac[0] & 0xFF,
- mac[1] & 0xFF,
- mac[2] & 0xFF,
- mac[3] & 0xFF,
- mac[4] & 0xFF,
- mac[5] & 0xFF,
- extra);
- }
-
-////////////////////////////////////////////////////////////////////////////////
-#define MAX_PROBES MAX_HOSTS/2
-wiviz_host * gotHost(wiviz_cfg * cfg, u_char * mac, host_type type) {
- int i = (mac[5] + (mac[4] << 8)) % MAX_HOSTS;
- int c = 0;
- wiviz_host * h = cfg->hosts + i;
- while (h->occupied && memcmp(h->mac, mac, 6)) {
- i++; h++; c++;
- if (i >= MAX_HOSTS) {
- i = 0;
- h = cfg->hosts;
- }
- if (c > MAX_PROBES) break;
- }
- if (!h->occupied) {
- fprintf(stderr, "New host, ");
- fprint_mac(stderr, mac, ", type=");
- fprintf(stderr, "%s\n", (type==typeAP) ? "AP" : ((type==typeSta) ? "Sta" : "Unk"));
- }
- h->occupied = 1;
- h->lastSeen = time(NULL);
- h->type = type;
- memcpy(h->mac, mac, 6);
- if (h->type == typeAP && !h->apInfo) {
- h->apInfo = (ap_info *) malloc(sizeof(ap_info));
- memset(h->apInfo, 0, sizeof(ap_info));
- }
- if (h->type == typeSta && !h->staInfo) {
- h->staInfo = (sta_info *) malloc(sizeof(sta_info));
- memset(h->staInfo, 0, sizeof(sta_info));
- }
- return h;
- }
-
-////////////////////////////////////////////////////////////////////////////////
-void print_host(FILE * outf, wiviz_host * host) {
- int i;
-
- if (!host->occupied) return;
- fprintf(outf, "'");
- fprint_mac(outf, host->mac, "'");
- fprintf(outf, ", -%i, '", host->RSSI / 100);
- switch (host->type) {
- case typeAP: fprintf(outf, "ap"); break;
- case typeSta: fprintf(outf, "sta"); break;
- case typeAdhocHub: fprintf(outf, "adhoc"); break;
- }
- if (host->type == typeSta) {
- switch(host->staInfo->state) {
- case ssAssociated:
- fprintf(outf, "-assoc-");
- fprint_mac(outf, host->staInfo->connectedBSSID, "");
- break;
- case ssUnassociated:
- fprintf(outf, "-unassoc");
- }
- }
- if (host->type == typeAP || host->type == typeAdhocHub) {
- fprintf(outf, "-channel-%i-ssid-", host->apInfo->channel & 0xFF);
- for (i = 0; i < host->apInfo->ssidlen; i++) {
- fprintf(outf, "\\x%02X", *((char *)host->apInfo->ssid + i) & 0xFF);
- }
- switch (host->apInfo->encryption) {
- case aetUnknown: fprintf(outf, "-?enc-?alg"); break;
- case aetUnencrypted: fprintf(outf, "-unenc-na"); break;
- case aetEncUnknown: fprintf(outf, "-enc-unknown"); break;
- case aetEncWEP: fprintf(outf, "-enc-wep"); break;
- case aetEncWPA: fprintf(outf, "-enc-wpa"); break;
- }
- }
- fprintf(outf, "', %i", time(0) - host->lastSeen);
- }
-
-////////////////////////////////////////////////////////////////////////////////
-#define MAX_STA_COUNT 64
-void readWL(wiviz_cfg * cfg) {
- int ap, i;
- wiviz_host * host, * sta;
- uchar mac[6];
- wlc_ssid_t ssid;
- channel_info_t channel;
- maclist_t * macs;
- sta_rssi_t starssi;
-
- get_mac(WL_DEVICE, mac);
- printf("AP mac: ");
- print_mac(mac, "\n");
- if (!nonzeromac(mac)) return;
- wl_ioctl(WL_DEVICE, WLC_GET_AP, &ap, 4);
- if (ap) {
- host = gotHost(cfg, mac, typeAP);
- wl_ioctl(WL_DEVICE, WLC_GET_BSSID, host->apInfo->bssid, 6);
- wl_ioctl(WL_DEVICE, WLC_GET_SSID, &ssid, sizeof(wlc_ssid_t));
- memcpy(host->apInfo->ssid, ssid.SSID, 32);
- host->apInfo->ssidlen = ssid.SSID_len;
- host->RSSI = 0;
- wl_ioctl(WL_DEVICE, WLC_GET_CHANNEL, &channel, sizeof(channel_info_t));
- host->apInfo->channel = channel.hw_channel;
- macs = (maclist_t *) malloc(4 + MAX_STA_COUNT * sizeof(ether_addr_t));
- macs->count = MAX_STA_COUNT;
- if (wl_ioctl(WL_DEVICE, WLC_GET_ASSOCLIST, macs, 4 + MAX_STA_COUNT * sizeof(ether_addr_t)) > -1) {
- for (i = 0; i < macs->count; i++) {
- sta = gotHost(cfg, (char *)&macs->ea[i], typeSta);
- memcpy(starssi.mac, &macs->ea[i], 6);
- starssi.RSSI = 3000;
- starssi.zero_ex_forty_one = 0x41;
- if (wl_ioctl(WL_DEVICE, WLC_GET_RSSI, &starssi, 12) < 0) printf("rssifail\n");
- sta->RSSI = -starssi.RSSI * 100;
- sta->staInfo->state = ssAssociated;
- memcpy(sta->staInfo->connectedBSSID, host->apInfo->bssid, 6);
- }
- }
- }
- else {
- host = gotHost(cfg, mac, typeSta);
- host->RSSI = 0;
- if (wl_ioctl(WL_DEVICE, WLC_GET_BSSID, &host->staInfo->connectedBSSID, 6) < 0) {
- host->staInfo->state = ssUnassociated;
- }
- else {
- host->staInfo->state = ssAssociated;
- }
- }
- if (wl_ioctl(WL_DEVICE, WLC_GET_CHANNEL, &channel, sizeof(channel_info_t)) >= 0) {
- cfg->curChannel = channel.hw_channel;
- fprintf(stderr, "Current channel is %i\n", cfg->curChannel);
- }
-}
-
-
-
-
-
diff --git a/openwrt/package/wiviz/src/wl_access.c b/openwrt/package/wiviz/src/wl_access.c
deleted file mode 100644
index a5172c3665..0000000000
--- a/openwrt/package/wiviz/src/wl_access.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-This file is part of Wi-viz (http://wiviz.natetrue.com).
-
-Wi-viz is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License v2 as published by
-the Free Software Foundation.
-
-Wi-viz 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 Wi-viz; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-#include <net/if.h>
-
-#include "wl_access.h"
-
-int wl_ioctl(char *name, int cmd, void *buf, int len)
-{
- struct ifreq ifr;
- wl_ioctl_t ioc;
- int ret = 0;
- int s;
-
- /* open socket to kernel */
- if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- perror("socket");
- return errno;
- }
-
- /* do it */
- ioc.cmd = cmd;
- ioc.buf = buf;
- ioc.len = len;
- strncpy(ifr.ifr_name, name, IFNAMSIZ);
- ifr.ifr_data = (caddr_t) &ioc;
- ret = ioctl(s, SIOCDEVPRIVATE, &ifr);
-
- /* cleanup */
- close(s);
- return ret;
-}
-
-int get_mac(char *name, void *buf)
-{
- struct ifreq ifr;
- int ret = 0;
- int s;
-
- /* open socket to kernel */
- if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- perror("socket");
- return errno;
- }
-
- strncpy(ifr.ifr_name, name, IFNAMSIZ);
- //ifr.ifr_data = (caddr_t) buf;
- if ((ret = ioctl(s, SIOCGIFHWADDR, &ifr)) < 0)
- perror(ifr.ifr_name);
-
- /* cleanup */
- close(s);
- memcpy(buf, &ifr.ifr_hwaddr.sa_data, 6);
- return ret;
-}
diff --git a/openwrt/package/wiviz/src/wl_access.h b/openwrt/package/wiviz/src/wl_access.h
deleted file mode 100644
index 96f239d9b7..0000000000
--- a/openwrt/package/wiviz/src/wl_access.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-This file is part of Wi-viz (http://wiviz.natetrue.com).
-
-Wi-viz is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License v2 as published by
-the Free Software Foundation.
-
-Wi-viz 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 Wi-viz; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-//wl_access.h - functions for accessing broadcom crap
-
-#define WL_DEVICE "eth1"
-
-typedef unsigned int uint32;
-typedef unsigned char uchar;
-typedef int bool;
-
-typedef struct ether_addr {
- uchar addr[6];
-} ether_addr_t;
-
-typedef struct wlc_ssid {
- uint32 SSID_len;
- uchar SSID[32];
-} wlc_ssid_t;
-/* For ioctls that take a list of MAC addresses */
-typedef struct maclist {
- uint count; /* number of MAC addresses */
- struct ether_addr ea[1]; /* variable length array of MAC addresses */
-} maclist_t;
-/* Linux network driver ioctl encoding */
-typedef struct wl_ioctl {
- uint cmd; /* common ioctl definition */
- void *buf; /* pointer to user buffer */
- uint len; /* length of user buffer */
- bool set; /* get or set request (optional) */
- uint used; /* bytes read or written (optional) */
- uint needed; /* bytes needed (optional) */
-} wl_ioctl_t;
-/* channel encoding */
-typedef struct channel_info {
- int hw_channel;
- int target_channel;
- int scan_channel;
-} channel_info_t;
-/* RSSI info for sta */
-typedef struct sta_rssi {
- int RSSI;
- char mac[6];
- u_short zero_ex_forty_one;
- } sta_rssi_t;
-/* check this magic number */
-#define WLC_IOCTL_MAGIC 0x14e46c77
-
-#define WLC_GET_MAGIC 0
-#define WLC_GET_BSSID 23
-#define WLC_SET_BSSID 24
-#define WLC_GET_SSID 25
-#define WLC_SET_SSID 26
-#define WLC_GET_CHANNEL 29
-#define WLC_SET_CHANNEL 30
-#define WLC_GET_MONITOR 107 /* discovered by nbd */
-#define WLC_SET_MONITOR 108 /* discovered by nbd */
-#define WLC_GET_AP 117
-#define WLC_SET_AP 118
-#define WLC_GET_RSSI 127
-#define WLC_GET_ASSOCLIST 159
-
-
-int wl_ioctl(char *name, int cmd, void *buf, int len);
diff --git a/openwrt/package/wknock/Config.in b/openwrt/package/wknock/Config.in
deleted file mode 100644
index 106068da3f..0000000000
--- a/openwrt/package/wknock/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_WKNOCK
- prompt "wknock............................ A tool to hide your Access Point against opportunistic attackers."
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPCAP
- help
- A tool to hide your Access Point against opportunistic attackers.
-
- http://www.rstack.org/oudot/wknock/
-
diff --git a/openwrt/package/wknock/Makefile b/openwrt/package/wknock/Makefile
deleted file mode 100644
index de5d0ea9c3..0000000000
--- a/openwrt/package/wknock/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wknock
-PKG_VERSION:=1
-PKG_RELEASE:=1
-PKG_MD5SUM:=6b7a1f3cbb0af88da02e5d30cefd8e7f
-
-PKG_SOURCE_URL:=http://blackhat.com/presentations/bh-europe-05/BH_EU_05-Oudot/
-PKG_SOURCE:=$(PKG_NAME).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WKNOCK,wknock,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib -lpcap" \
- all
- touch $@
-
-$(IPKG_WKNOCK):
- install -d -m0755 $(IDIR_WKNOCK)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/wknock $(IDIR_WKNOCK)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/wknock-ng $(IDIR_WKNOCK)/usr/sbin/
- $(RSTRIP) $(IDIR_WKNOCK)/
- $(IPKG_BUILD) $(IDIR_WKNOCK) $(PACKAGE_DIR)
diff --git a/openwrt/package/wknock/ipkg/wknock.control b/openwrt/package/wknock/ipkg/wknock.control
deleted file mode 100644
index e781daebb6..0000000000
--- a/openwrt/package/wknock/ipkg/wknock.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: wknock
-Section: net
-Priority: optional
-Depends: libpcap, wl
-Description: A tool to hide your Access Point against opportunistic attackers.
diff --git a/openwrt/package/wol/Config.in b/openwrt/package/wol/Config.in
deleted file mode 100644
index 1413d6b988..0000000000
--- a/openwrt/package/wol/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_WOL
- prompt "wol............................... Wake On LAN client"
- tristate
- default m if CONFIG_DEVEL
- help
- wol implements Wake On LAN functionality in a small program.
- It wakes up hardware that is Magic Packet compliant.
-
- http://ahh.sourceforge.net/wol/
-
diff --git a/openwrt/package/wol/Makefile b/openwrt/package/wol/Makefile
deleted file mode 100644
index efdb670378..0000000000
--- a/openwrt/package/wol/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wol
-PKG_VERSION:=0.7.1
-PKG_RELEASE:=1
-PKG_MD5SUM:=c2fa9d7e771134ac8c89d56b8197d4ca
-
-PKG_SOURCE_URL:=@SF/ahh
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WOL,wol,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- ac_cv_func_malloc_0_nonnull=yes \
- ac_cv_func_realloc_0_nonnull=yes \
- ac_cv_func_mmap_fixed_mapped=yes \
- jm_cv_func_working_malloc=yes \
- ac_cv_func_alloca_works=yes \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_WOL):
- install -m0755 -d $(IDIR_WOL)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/wol $(IDIR_WOL)/usr/bin/
- $(RSTRIP) $(IDIR_WOL)
- $(IPKG_BUILD) $(IDIR_WOL) $(PACKAGE_DIR)
diff --git a/openwrt/package/wol/ipkg/wol.control b/openwrt/package/wol/ipkg/wol.control
deleted file mode 100644
index 179ba7c86c..0000000000
--- a/openwrt/package/wol/ipkg/wol.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: wol
-Priority: optional
-Section: net
-Description: A Program to send magic Wake-on-LAN packets
diff --git a/openwrt/package/wondershaper/Config.in b/openwrt/package/wondershaper/Config.in
deleted file mode 100644
index 8e5adfdf8e..0000000000
--- a/openwrt/package/wondershaper/Config.in
+++ /dev/null
@@ -1,10 +0,0 @@
-config BR2_PACKAGE_WONDERSHAPER
- prompt "wondershaper...................... The Wonder Shaper"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_TC
- help
- WonderShaper is a tc based traffic shaping tool.
-
- Depends: tc
-
diff --git a/openwrt/package/wondershaper/Makefile b/openwrt/package/wondershaper/Makefile
deleted file mode 100644
index 44533c64df..0000000000
--- a/openwrt/package/wondershaper/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wondershaper
-PKG_VERSION:=1.1a
-PKG_RELEASE:=1
-PKG_MD5SUM:=bbc5a3a4485ab286e337ce8550e7b990
-
-PKG_SOURCE_URL:=http://lartc.org/wondershaper/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WONDERSHAPER,wondershaper,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- mkdir -p $(PKG_INSTALL_DIR)
- touch $@
-
-$(IPKG_WONDERSHAPER):
- install -d -m0755 $(IDIR_WONDERSHAPER)/usr/sbin
- install -d -m0755 $(IDIR_WONDERSHAPER)/etc/init.d
- $(CP) $(PKG_BUILD_DIR)/wshaper.htb $(IDIR_WONDERSHAPER)/usr/sbin/wshaper
- $(CP) $(PKG_BUILD_DIR)/wshaper.conf $(IDIR_WONDERSHAPER)/etc/wshaper.conf
- ln -fs /usr/sbin/wshaper $(IDIR_WONDERSHAPER)/etc/init.d/S60wondershaper
- $(IPKG_BUILD) $(IDIR_WONDERSHAPER) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/wondershaper/ipkg/wondershaper.conffiles b/openwrt/package/wondershaper/ipkg/wondershaper.conffiles
deleted file mode 100644
index 14e366cc99..0000000000
--- a/openwrt/package/wondershaper/ipkg/wondershaper.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/wshaper.conf
diff --git a/openwrt/package/wondershaper/ipkg/wondershaper.control b/openwrt/package/wondershaper/ipkg/wondershaper.control
deleted file mode 100644
index d90c7bb6ff..0000000000
--- a/openwrt/package/wondershaper/ipkg/wondershaper.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: wondershaper
-Priority: optional
-Section: net
-Depends: tc
-Description: WonderShaper is a tc based traffic shaping tool.
diff --git a/openwrt/package/wondershaper/patches/wondershaper-OpenWrt.patch b/openwrt/package/wondershaper/patches/wondershaper-OpenWrt.patch
deleted file mode 100644
index 43d7fb115c..0000000000
--- a/openwrt/package/wondershaper/patches/wondershaper-OpenWrt.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-diff -Nur wondershaper-1.1a/wshaper.conf wondershaper-1.1a_openwrt/wshaper.conf
---- wondershaper-1.1a/wshaper.conf 1970-01-01 01:00:00.000000000 +0100
-+++ wondershaper-1.1a_openwrt/wshaper.conf 2005-09-09 00:31:54.239340744 +0200
-@@ -0,0 +1,27 @@
-+# Wonder Shaper
-+# please read the README before filling out these values
-+#
-+# Set the following values to somewhat less than your actual download
-+# and uplink speed. In kilobits.
-+DOWNLINK=1000
-+UPLINK=220
-+
-+# low priority OUTGOING traffic - you can leave this blank if you want
-+# low priority source netmasks
-+NOPRIOHOSTSRC=80
-+
-+# low priority destination netmasks
-+NOPRIOHOSTDST=
-+
-+# low priority source ports
-+NOPRIOPORTSRC=
-+
-+# low priority destination ports
-+NOPRIOPORTDST=
-+
-+# WAN device
-+DEV=$(nvram get wan_ifname)
-+
-+# tc location
-+TC=/usr/sbin/tc
-+
-diff -Nur wondershaper-1.1a/wshaper.htb wondershaper-1.1a_openwrt/wshaper.htb
---- wondershaper-1.1a/wshaper.htb 2002-04-16 16:26:51.000000000 +0200
-+++ wondershaper-1.1a_openwrt/wshaper.htb 2005-09-11 13:24:56.143626544 +0200
-@@ -1,44 +1,22 @@
--#!/bin/bash
-+#!/bin/ash
- # Wonder Shaper
--# please read the README before filling out these values
--#
--# Set the following values to somewhat less than your actual download
--# and uplink speed. In kilobits. Also set the device that is to be shaped.
--
--DOWNLINK=800
--UPLINK=220
--DEV=ppp0
--
--# low priority OUTGOING traffic - you can leave this blank if you want
--# low priority source netmasks
--NOPRIOHOSTSRC=
--
--# low priority destination netmasks
--NOPRIOHOSTDST=
-+. /etc/functions.sh
-+. /etc/wshaper.conf
-
--# low priority source ports
--NOPRIOPORTSRC=
-
--# low priority destination ports
--NOPRIOPORTDST=
--
--
--# Now remove the following two lines :-)
--
--echo Please read the documentation in 'README' first
--exit
-+# do the magic
-
- if [ "$1" = "status" ]
- then
-- tc -s qdisc ls dev $DEV
-- tc -s class ls dev $DEV
-+ $TC -s qdisc ls dev $DEV
-+ $TC -s class ls dev $DEV
- exit
- fi
-
-
- # clean existing down- and uplink qdiscs, hide errors
--tc qdisc del dev $DEV root 2> /dev/null > /dev/null
--tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
-+$TC qdisc del dev $DEV root 2> /dev/null > /dev/null
-+$TC qdisc del dev $DEV ingress 2> /dev/null > /dev/null
-
- if [ "$1" = "stop" ]
- then
-@@ -46,50 +24,66 @@
- fi
-
-
-+# wondershaper must be executed everytime an interface comes up
-+# if we have dynamic interface ppp0 add wondershaper to ip-up
-+if [ $DEV = "ppp0" ] && ! grep -q wshaper /etc/ppp/ip-up
-+then
-+ echo "/usr/sbin/wshaper" >> /etc/ppp/ip-up
-+ chmod 755 /etc/ppp/ip-up
-+fi
-+
-+
-+
-+# load the needed kernel modules
-+for module in sch_prio sch_htb sch_sfq sch_ingress cls_tcindex cls_fw cls_route cls_u32
-+do
-+ insmod $module 2> /dev/null > /dev/null
-+done
-+
- ###### uplink
-
- # install root HTB, point default traffic to 1:20:
-
--tc qdisc add dev $DEV root handle 1: htb default 20
-+$TC qdisc add dev $DEV root handle 1: htb default 20
-
- # shape everything at $UPLINK speed - this prevents huge queues in your
- # DSL modem which destroy latency:
-
--tc class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit burst 6k
-+$TC class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit burst 6k
-
- # high prio class 1:10:
-
--tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${UPLINK}kbit \
-+$TC class add dev $DEV parent 1:1 classid 1:10 htb rate ${UPLINK}kbit \
- burst 6k prio 1
-
- # bulk & default class 1:20 - gets slightly less traffic,
- # and a lower priority:
-
--tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[9*$UPLINK/10]kbit \
-+$TC class add dev $DEV parent 1:1 classid 1:20 htb rate $((9*$UPLINK/10))kbit \
- burst 6k prio 2
-
--tc class add dev $DEV parent 1:1 classid 1:30 htb rate $[8*$UPLINK/10]kbit \
-+$TC class add dev $DEV parent 1:1 classid 1:30 htb rate $((8*$UPLINK/10))kbit \
- burst 6k prio 2
-
- # all get Stochastic Fairness:
--tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
--tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
--tc qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10
-+$TC qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
-+$TC qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
-+$TC qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10
-
- # TOS Minimum Delay (ssh, NOT scp) in 1:10:
-
--tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
-+$TC filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
- match ip tos 0x10 0xff flowid 1:10
-
- # ICMP (ip protocol 1) in the interactive class 1:10 so we
- # can do measurements & impress our friends:
--tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
-+$TC filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
- match ip protocol 1 0xff flowid 1:10
-
- # To speed up downloads while an upload is going on, put ACK packets in
- # the interactive class:
-
--tc filter add dev $DEV parent 1: protocol ip prio 10 u32 \
-+$TC filter add dev $DEV parent 1: protocol ip prio 10 u32 \
- match ip protocol 6 0xff \
- match u8 0x05 0x0f at 0 \
- match u16 0x0000 0xffc0 at 2 \
-@@ -101,31 +95,31 @@
- # some traffic however suffers a worse fate
- for a in $NOPRIOPORTDST
- do
-- tc filter add dev $DEV parent 1: protocol ip prio 14 u32 \
-+ $TC filter add dev $DEV parent 1: protocol ip prio 14 u32 \
- match ip dport $a 0xffff flowid 1:30
- done
-
- for a in $NOPRIOPORTSRC
- do
-- tc filter add dev $DEV parent 1: protocol ip prio 15 u32 \
-+ $TC filter add dev $DEV parent 1: protocol ip prio 15 u32 \
- match ip sport $a 0xffff flowid 1:30
- done
-
- for a in $NOPRIOHOSTSRC
- do
-- tc filter add dev $DEV parent 1: protocol ip prio 16 u32 \
-+ $TC filter add dev $DEV parent 1: protocol ip prio 16 u32 \
- match ip src $a flowid 1:30
- done
-
- for a in $NOPRIOHOSTDST
- do
-- tc filter add dev $DEV parent 1: protocol ip prio 17 u32 \
-+ $TC filter add dev $DEV parent 1: protocol ip prio 17 u32 \
- match ip dst $a flowid 1:30
- done
-
- # rest is 'non-interactive' ie 'bulk' and ends up in 1:20
-
--tc filter add dev $DEV parent 1: protocol ip prio 18 u32 \
-+$TC filter add dev $DEV parent 1: protocol ip prio 18 u32 \
- match ip dst 0.0.0.0/0 flowid 1:20
-
-
-@@ -136,12 +130,12 @@
- #
- # attach ingress policer:
-
--tc qdisc add dev $DEV handle ffff: ingress
-+$TC qdisc add dev $DEV handle ffff: ingress
-
- # filter *everything* to it (0.0.0.0/0), drop everything that's
- # coming in too fast:
-
--tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src \
-+$TC filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src \
- 0.0.0.0/0 police rate ${DOWNLINK}kbit burst 10k drop flowid :1
-
-
diff --git a/openwrt/package/wpa_supplicant/Config.in b/openwrt/package/wpa_supplicant/Config.in
deleted file mode 100644
index bac4e46a02..0000000000
--- a/openwrt/package/wpa_supplicant/Config.in
+++ /dev/null
@@ -1,16 +0,0 @@
-config BR2_PACKAGE_WPA_SUPPLICANT
- prompt "wpa_supplicant.................... WPA Supplicant with support for WPA and WPA2"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_KMOD_MADWIFI
- select BR2_PACKAGE_LIBOPENSSL
- help
- WPA Supplicant with support for WPA and WPA2 (IEEE 802.11i / RSN).
- Supplicant is the IEEE 802.1X/WPA component that is used in the client
- stations. It implements key negotiation with a WPA Authenticator and it
- controls the roaming and IEEE 802.11 authentication/association.
-
- http://hostap.epitest.fi/wpa_supplicant/
-
- Depends: openssl
-
diff --git a/openwrt/package/wpa_supplicant/Makefile b/openwrt/package/wpa_supplicant/Makefile
deleted file mode 100644
index 442769693e..0000000000
--- a/openwrt/package/wpa_supplicant/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wpa_supplicant
-PKG_VERSION:=0.4.9
-PKG_RELEASE:=1
-PKG_MD5SUM:=98498c152cbfc388c306fd9bbf7d57d4
-
-PKG_SOURCE_URL:=http://hostap.epitest.fi/releases/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WPA_SUPPLICANT,wpa-supplicant,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- $(CP) ./files/config $(PKG_BUILD_DIR)/.config
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include/madwifi" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- OPT_FLAGS="$(TARGET_CFLAGS)" \
- KERNEL=$(LINUX_DIR) \
- all
- touch $@
-
-$(IPKG_WPA_SUPPLICANT):
- install -m0755 -d $(IDIR_WPA_SUPPLICANT)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/wpa_cli $(IDIR_WPA_SUPPLICANT)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/wpa_passphrase $(IDIR_WPA_SUPPLICANT)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/wpa_supplicant $(IDIR_WPA_SUPPLICANT)/usr/sbin/
- $(RSTRIP) $(IDIR_WPA_SUPPLICANT)
- $(IPKG_BUILD) $(IDIR_WPA_SUPPLICANT) $(PACKAGE_DIR)
diff --git a/openwrt/package/wpa_supplicant/files/config b/openwrt/package/wpa_supplicant/files/config
deleted file mode 100644
index 19a0fd3294..0000000000
--- a/openwrt/package/wpa_supplicant/files/config
+++ /dev/null
@@ -1,17 +0,0 @@
-# rather important
-CONFIG_DRIVER_BROADCOM=y
-CONFIG_DRIVER_HOSTAP=y
-CONFIG_DRIVER_MADWIFI=y
-CONFIG_DRIVER_WEXT=y
-CONFIG_IEEE8021X_EAPOL=y
-CONFIG_CTRL_IFACE=y
-
-# default
-CONFIG_EAP_PSK=y
-CONFIG_EAP_MD5=y
-
-# optional
-CONFIG_MSCHAPV2=y
-CONFIG_EAP_TLS=y
-CONFIG_EAP_PEAP=y
-CONFIG_EAP_TTLS=y
diff --git a/openwrt/package/wpa_supplicant/ipkg/wpa-supplicant.control b/openwrt/package/wpa_supplicant/ipkg/wpa-supplicant.control
deleted file mode 100644
index ea4f7f8ed6..0000000000
--- a/openwrt/package/wpa_supplicant/ipkg/wpa-supplicant.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: wpa-supplicant
-Priority: optional
-Section: net
-Description: WPA Supplicant with support for WPA and WPA2
-Depends: libopenssl
diff --git a/openwrt/package/wpa_supplicant/patches/101-ldflags.patch b/openwrt/package/wpa_supplicant/patches/101-ldflags.patch
deleted file mode 100644
index b8b6f66610..0000000000
--- a/openwrt/package/wpa_supplicant/patches/101-ldflags.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- wpa_supplicant-0.3.8/Makefile.orig 2005-05-22 12:37:28.000000000 +0200
-+++ wpa_supplicant-0.3.8/Makefile 2005-05-22 12:40:04.000000000 +0200
-@@ -304,7 +304,7 @@
- OBJS += wpa_supplicant.o wpa.o l2_packet.o drivers.o
-
- wpa_supplicant: .config $(OBJS)
-- $(CC) -o wpa_supplicant $(OBJS) $(LIBS)
-+ $(CC) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS)
-
- eapol_test: .config $(OBJS_t)
- $(CC) -o eapol_test $(OBJS_t) $(LIBS)
-@@ -313,10 +313,10 @@
- $(CC) -o preauth_test $(OBJS_t2) $(LIBS)
-
- wpa_passphrase: $(OBJS_p)
-- $(CC) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
-+ $(CC) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
-
- wpa_cli: $(OBJS_c)
-- $(CC) -o wpa_cli $(OBJS_c) $(LIBS_c)
-+ $(CC) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
-
- win_if_list: win_if_list.c
- $(CC) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
diff --git a/openwrt/package/wpa_supplicant/patches/102-opt_cflags.patch b/openwrt/package/wpa_supplicant/patches/102-opt_cflags.patch
deleted file mode 100644
index ec38b733e9..0000000000
--- a/openwrt/package/wpa_supplicant/patches/102-opt_cflags.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- wpa_supplicant-0.3.8/Makefile.orig 2005-02-14 02:55:47.000000000 +0100
-+++ wpa_supplicant-0.3.8/Makefile 2005-05-21 21:06:03.000000000 +0200
-@@ -3,7 +3,8 @@
- endif
-
- ifndef CFLAGS
--CFLAGS = -MMD -O2 -Wall -g
-+OPT_FLAGS = -O2 -g
-+CFLAGS = -MMD $(OPT_FLAGS) -Wall
- endif
-
- # Include directories for CVS version
diff --git a/openwrt/package/wput/Config.in b/openwrt/package/wput/Config.in
deleted file mode 100644
index e1e7b7ab77..0000000000
--- a/openwrt/package/wput/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_WPUT
- prompt "wput.............................. A wget-like command-line FTP client"
- tristate
- default m if CONFIG_DEVEL
- help
- A wget-like command-line FTP client.
-
- http://itooktheredpill.dyndns.org/wput/
-
diff --git a/openwrt/package/wput/Makefile b/openwrt/package/wput/Makefile
deleted file mode 100644
index 5c70c331d2..0000000000
--- a/openwrt/package/wput/Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wput
-PKG_VERSION:=0.5
-PKG_RELEASE:=1
-PKG_MD5SUM:=441b2e07219f78167b29a7ac33488fff
-
-PKG_SOURCE_URL:=@SF/wput
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WPUT,wput,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --disable-g-switch \
- )
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR)
- touch $@
-
-$(IPKG_WPUT):
- install -d -m0755 $(IDIR_WPUT)/usr/bin
- install -m0755 $(PKG_BUILD_DIR)/wput $(IDIR_WPUT)/usr/bin/
- $(RSTRIP) $(IDIR_WPUT)
- $(IPKG_BUILD) $(IDIR_WPUT) $(PACKAGE_DIR)
-
diff --git a/openwrt/package/wput/ipkg/wput.control b/openwrt/package/wput/ipkg/wput.control
deleted file mode 100644
index 06d51ad761..0000000000
--- a/openwrt/package/wput/ipkg/wput.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: wput
-Priority: optional
-Section: net
-Description: a wget-like command-line FTP client
diff --git a/openwrt/package/wrt-radauth/Config.in b/openwrt/package/wrt-radauth/Config.in
deleted file mode 100644
index 38222bf7be..0000000000
--- a/openwrt/package/wrt-radauth/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_WRT_RADAUTH
- prompt "wrt-radauth....................... A Radius MAC authenticator for Broadcom based access points"
- tristate
- default m if CONFIG_DEVEL
- depends BR2_PACKAGE_NVRAM
- help
- This software watches the stations associating to a broadcom based
- AccessPoint (e.g. Linksys WRT54G) and sends an authentication request
- to the radius-server specified in nvram.
-
- http://www.zerfleddert.de/wrt54g/
-
diff --git a/openwrt/package/wrt-radauth/Makefile b/openwrt/package/wrt-radauth/Makefile
deleted file mode 100644
index cb11737c79..0000000000
--- a/openwrt/package/wrt-radauth/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wrt-radauth
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
-PKG_MD5SUM:=f941e3139175dc6b87f6c89ba8848a07
-
-PKG_SOURCE_URL:=http://www.zerfleddert.de/wrt54g/
-PKG_SOURCE:=$(PKG_NAME).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-include $(TOPDIR)/package/rules.mk
-
-BR2_PACKAGE_WRT_RADAUTH:=m
-
-$(eval $(call PKG_template,WRT_RADAUTH,wrt-radauth,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC="$(TARGET_CC)" \
- CFLAGS="$(TARGET_CFLAGS)" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- clean all
- touch $@
-
-$(IPKG_WRT_RADAUTH):
- install -d -m0755 $(IDIR_WRT_RADAUTH)/usr/sbin
- install -m0755 $(PKG_BUILD_DIR)/radius-client $(IDIR_WRT_RADAUTH)/usr/sbin/
- install -m0755 $(PKG_BUILD_DIR)/wrt-radauth $(IDIR_WRT_RADAUTH)/usr/sbin/
- $(RSTRIP) $(IDIR_WRT_RADAUTH)
- $(IPKG_BUILD) $(IDIR_WRT_RADAUTH) $(PACKAGE_DIR)
diff --git a/openwrt/package/wrt-radauth/ipkg/wrt-radauth.control b/openwrt/package/wrt-radauth/ipkg/wrt-radauth.control
deleted file mode 100644
index 8f1bd64ff8..0000000000
--- a/openwrt/package/wrt-radauth/ipkg/wrt-radauth.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: wrt-radauth
-Priority: optional
-Section: net
-Description: A RADIUS MAC authenticator for Broadcom based access points.
diff --git a/openwrt/package/wx200d/Config.in b/openwrt/package/wx200d/Config.in
deleted file mode 100644
index f9c5b6b66c..0000000000
--- a/openwrt/package/wx200d/Config.in
+++ /dev/null
@@ -1,11 +0,0 @@
-config BR2_PACKAGE_WX200D
- prompt "wx200d............................ weather station data collector"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBPQ
- help
- wx200d is a weather station data collector and server daemon
- for the WX200, WM918, WMR918 and WMR968 weather station
- hardware.
-
- http://wx200d.sourceforge.net/
diff --git a/openwrt/package/wx200d/Makefile b/openwrt/package/wx200d/Makefile
deleted file mode 100644
index 4673e83f28..0000000000
--- a/openwrt/package/wx200d/Makefile
+++ /dev/null
@@ -1,70 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wx200d
-PKG_VERSION:=1.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=0f90c099dddcdd46ac568d707822ec4c
-
-PKG_SOURCE_URL:=@SF/wx200d
-PKG_SOURCE:=wx200d-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,WX200D,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_NLS) \
- $(DISABLE_LARGEFILE) \
- --without-libiconv-prefix \
- --without-libintl-prefix \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- touch $@
-
-$(IPKG_WX200D):
- install -d -m0755 $(IDIR_WX200D)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/wx200 \
- $(PKG_INSTALL_DIR)/usr/bin/wxstdout \
- $(PKG_INSTALL_DIR)/usr/bin/wxfilter \
- $(PKG_INSTALL_DIR)/usr/bin/wxdebug $(IDIR_WX200D)/usr/bin/
- install -d -m0755 $(IDIR_WX200D)/usr/sbin/
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/wx200d \
- $(PKG_INSTALL_DIR)/usr/sbin/wxread $(IDIR_WX200D)/usr/sbin/
- $(RSTRIP) $(IDIR_WX200D)
- $(IPKG_BUILD) $(IDIR_WX200D) $(PACKAGE_DIR)
diff --git a/openwrt/package/wx200d/ipkg/wx200d.control b/openwrt/package/wx200d/ipkg/wx200d.control
deleted file mode 100644
index 717e50b58d..0000000000
--- a/openwrt/package/wx200d/ipkg/wx200d.control
+++ /dev/null
@@ -1,7 +0,0 @@
-Package: wx200d
-Priority: optional
-Section: misc
-Maintainer: Name <gkruse@gmail.com>
-Source: http://
-Description:Utils for Oregon Scientific wx* and related weather stations
-Depends: libpq
diff --git a/openwrt/package/xinetd/Config.in b/openwrt/package/xinetd/Config.in
deleted file mode 100644
index f833c5d700..0000000000
--- a/openwrt/package/xinetd/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_XINETD
- prompt "xinetd............................ Powerful and secure superserver"
- tristate
- default m if CONFIG_DEVEL
- help
- A powerful and secure superserver
-
- http://www.xinetd.org/
-
diff --git a/openwrt/package/xinetd/Makefile b/openwrt/package/xinetd/Makefile
deleted file mode 100644
index a3e5d59e6a..0000000000
--- a/openwrt/package/xinetd/Makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=xinetd
-PKG_VERSION:=2.3.13
-PKG_RELEASE:=2
-PKG_MD5SUM:=4295b5fe12350f09b5892b363348ac8b
-
-PKG_SOURCE_URL:=http://www.xinetd.org/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,XINETD,xinetd,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status} ; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --enable-shared \
- --disable-static \
- --without-libwrap \
- --with-loadavg \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- build install
- touch $@
-
-$(IPKG_XINETD):
- install -d -m0755 $(IDIR_XINETD)/etc
- install -m0644 ./files/xinetd.conf $(IDIR_XINETD)/etc/xinetd.conf
- install -d -m0755 $(IDIR_XINETD)/etc/xinetd.d
- install -d -m0755 $(IDIR_XINETD)/etc/init.d
- install -m0755 ./files/xinetd.init $(IDIR_XINETD)/etc/init.d/xinetd
- install -d -m0755 $(IDIR_XINETD)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/xinetd $(IDIR_XINETD)/usr/sbin/
- $(RSTRIP) $(IDIR_XINETD)
- $(IPKG_BUILD) $(IDIR_XINETD) $(PACKAGE_DIR)
diff --git a/openwrt/package/xinetd/files/xinetd.conf b/openwrt/package/xinetd/files/xinetd.conf
deleted file mode 100644
index bd473ed3db..0000000000
--- a/openwrt/package/xinetd/files/xinetd.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-defaults
-{
-
-}
-
-includedir /etc/xinetd.d
diff --git a/openwrt/package/xinetd/files/xinetd.init b/openwrt/package/xinetd/files/xinetd.init
deleted file mode 100644
index 2df7a8196c..0000000000
--- a/openwrt/package/xinetd/files/xinetd.init
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-DEFAULT=/etc/default/xinetd
-RUN_D=/var/run
-PID_F=$RUN_D/xinetd.pid
-[ -f $DEFAULT ] && . $DEFAULT
-
-case $1 in
- start)
- [ -d $RUN_D ] || mkdir -p $RUN_D
- xinetd $OPTIONS
- ;;
- stop)
- [ -f $PID_F ] && kill $(cat $PID_F)
- ;;
- *)
- echo "usage: $0 (start|stop)"
- exit 1
-esac
-
-exit $?
diff --git a/openwrt/package/xinetd/ipkg/xinetd.conffiles b/openwrt/package/xinetd/ipkg/xinetd.conffiles
deleted file mode 100644
index f49d840c4d..0000000000
--- a/openwrt/package/xinetd/ipkg/xinetd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/xinetd.conf
diff --git a/openwrt/package/xinetd/ipkg/xinetd.control b/openwrt/package/xinetd/ipkg/xinetd.control
deleted file mode 100644
index 34cefb59a9..0000000000
--- a/openwrt/package/xinetd/ipkg/xinetd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: xinetd
-Priority: optional
-Section: net
-Description: a powerful and secure superserver
diff --git a/openwrt/package/xinetd/patches/ar.patch b/openwrt/package/xinetd/patches/ar.patch
deleted file mode 100644
index f0d4f0dea5..0000000000
--- a/openwrt/package/xinetd/patches/ar.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-diff -ruN xinetd-2.3.13-orig/libs/src/misc/Makefile.in xinetd-2.3.13-6/libs/src/misc/Makefile.in
---- xinetd-2.3.13-orig/libs/src/misc/Makefile.in 2003-02-19 18:29:27.000000000 +0100
-+++ xinetd-2.3.13-6/libs/src/misc/Makefile.in 2005-03-09 22:53:15.000000000 +0100
-@@ -62,7 +62,7 @@
-
-
- $(LIBNAME): $(OBJECTS)
-- ar r $@ $?
-+ $(AR) r $@ $?
- $(RANLIB) $@
-
- install: $(LIBNAME)
-diff -ruN xinetd-2.3.13-orig/libs/src/portable/Makefile.in xinetd-2.3.13-6/libs/src/portable/Makefile.in
---- xinetd-2.3.13-orig/libs/src/portable/Makefile.in 2003-02-19 18:29:27.000000000 +0100
-+++ xinetd-2.3.13-6/libs/src/portable/Makefile.in 2005-03-09 22:53:15.000000000 +0100
-@@ -57,7 +57,7 @@
-
-
- $(LIBNAME): $(OBJECTS)
-- ar r $@ $?
-+ $(AR) r $@ $?
- $(RANLIB) $@
-
- install: $(LIBNAME)
-diff -ruN xinetd-2.3.13-orig/libs/src/pset/Makefile.in xinetd-2.3.13-6/libs/src/pset/Makefile.in
---- xinetd-2.3.13-orig/libs/src/pset/Makefile.in 2003-02-19 18:29:27.000000000 +0100
-+++ xinetd-2.3.13-6/libs/src/pset/Makefile.in 2005-03-09 22:53:15.000000000 +0100
-@@ -53,7 +53,7 @@
- mv $(LIBNAME) $(LIBDIR)/optimized
-
- $(LIBNAME): $(OBJECTS)
-- ar r $@ $?
-+ $(AR) r $@ $?
- $(RANLIB) $@
-
- install: $(LIBNAME)
-diff -ruN xinetd-2.3.13-orig/libs/src/sio/Makefile.in xinetd-2.3.13-6/libs/src/sio/Makefile.in
---- xinetd-2.3.13-orig/libs/src/sio/Makefile.in 2003-02-19 18:29:27.000000000 +0100
-+++ xinetd-2.3.13-6/libs/src/sio/Makefile.in 2005-03-09 22:53:15.000000000 +0100
-@@ -52,7 +52,7 @@
- $(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)/optimized
-
- $(LIBNAME): $(OBJECTS)
-- ar r $@ $?
-+ $(AR) r $@ $?
- $(RANLIB) $@
-
- install: $(LIBNAME)
-diff -ruN xinetd-2.3.13-orig/libs/src/str/Makefile.in xinetd-2.3.13-6/libs/src/str/Makefile.in
---- xinetd-2.3.13-orig/libs/src/str/Makefile.in 2003-02-19 18:29:27.000000000 +0100
-+++ xinetd-2.3.13-6/libs/src/str/Makefile.in 2005-03-09 22:53:15.000000000 +0100
-@@ -63,7 +63,7 @@
- $(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)-O
-
- $(LIBNAME): $(OBJECTS)
-- ar r $@ $?
-+ $(AR) r $@ $?
- $(RANLIB) $@
-
- LINT_IGNORE=possible pointer alignment|RCSid unused
-diff -ruN xinetd-2.3.13-orig/libs/src/xlog/Makefile.in xinetd-2.3.13-6/libs/src/xlog/Makefile.in
---- xinetd-2.3.13-orig/libs/src/xlog/Makefile.in 2003-02-19 18:29:27.000000000 +0100
-+++ xinetd-2.3.13-6/libs/src/xlog/Makefile.in 2005-03-09 22:53:15.000000000 +0100
-@@ -58,7 +58,7 @@
- $(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)/optimized
-
- $(LIBNAME): $(OBJECTS)
-- ar r $@ $?
-+ $(AR) r $@ $?
- $(RANLIB) $@
-
- install: $(LIBNAME)
diff --git a/openwrt/package/xinetd/patches/destdir.patch b/openwrt/package/xinetd/patches/destdir.patch
deleted file mode 100644
index 91fd816606..0000000000
--- a/openwrt/package/xinetd/patches/destdir.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -ruN xinetd-2.3.13-orig/Makefile.in xinetd-2.3.13-6/Makefile.in
---- xinetd-2.3.13-orig/Makefile.in 2003-08-15 16:00:45.000000000 +0200
-+++ xinetd-2.3.13-6/Makefile.in 2005-03-09 22:53:15.000000000 +0100
-@@ -75,15 +75,15 @@
-
- install: build
- for i in $(DAEMONDIR) $(BINDIR) $(MANDIR)/man5 $(MANDIR)/man8 ; do \
-- test -d $$i || mkdir -p $$i ; done
-- $(INSTALL_CMD) -m 755 xinetd/xinetd $(DAEMONDIR)
-- $(INSTALL_CMD) -m 755 xinetd/itox $(DAEMONDIR)
-- $(INSTALL_CMD) -m 755 $(SRCDIR)/xinetd/xconv.pl $(DAEMONDIR)
-- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.conf.man $(MANDIR)/man5/xinetd.conf.5
-- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.log.man $(MANDIR)/man8/xinetd.log.8
-- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.man $(MANDIR)/man8/xinetd.8
-- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/itox.8 $(MANDIR)/man8/itox.8
-- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xconv.pl.8 $(MANDIR)/man8/xconv.pl.8
-+ test -d $(DESTDIR)$$i || mkdir -p $(DESTDIR)$$i ; done
-+ $(INSTALL_CMD) -m 755 xinetd/xinetd $(DESTDIR)$(DAEMONDIR)
-+ $(INSTALL_CMD) -m 755 xinetd/itox $(DESTDIR)$(DAEMONDIR)
-+ $(INSTALL_CMD) -m 755 $(SRCDIR)/xinetd/xconv.pl $(DESTDIR)$(DAEMONDIR)
-+ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.conf.man $(DESTDIR)$(MANDIR)/man5/xinetd.conf.5
-+ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.log.man $(DESTDIR)$(MANDIR)/man8/xinetd.log.8
-+ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.man $(DESTDIR)$(MANDIR)/man8/xinetd.8
-+ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/itox.8 $(DESTDIR)$(MANDIR)/man8/itox.8
-+ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xconv.pl.8 $(DESTDIR)$(MANDIR)/man8/xconv.pl.8
- @echo "You must put your xinetd.conf in /etc/xinetd.conf"
- @echo "There is a sample config file in xinetd/sample.conf and you can"
- @echo "use xconv.pl to convert your old inetd.conf file to an xinetd format"
diff --git a/openwrt/package/xinetd/patches/xinetd-2.3.13-gcc4-1.patch b/openwrt/package/xinetd/patches/xinetd-2.3.13-gcc4-1.patch
deleted file mode 100644
index 49ac327bc1..0000000000
--- a/openwrt/package/xinetd/patches/xinetd-2.3.13-gcc4-1.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Submitted By: Randy McMurchy <randy_at_linuxfromscratch_dot_org>
-Date: 2005-08-07
-Initial Package Version: 2.3.13
-Upstream Status: Not submitted
-Origin: Fedora Development CVS
-Description: Fixes compilation error if using GCC-4.x
-
-
-diff -Naur xinetd-2.3.13-orig/xinetd/service.c xinetd-2.3.13/xinetd/service.c
---- xinetd-2.3.13-orig/xinetd/service.c 2003-11-16 12:44:10.000000000 +0000
-+++ xinetd-2.3.13/xinetd/service.c 2005-08-07 18:37:33.395942648 +0000
-@@ -764,8 +764,8 @@
- return FAILED;
-
- if ( last == NULL ) {
-- last = SAIN( SVC_LAST_DGRAM_ADDR(sp) ) =
-- SAIN( calloc( 1, sizeof(union xsockaddr) ) );
-+ SVC_LAST_DGRAM_ADDR(sp) = calloc( 1, sizeof(union xsockaddr) );
-+ last = SAIN(SVC_LAST_DGRAM_ADDR(sp));
- }
-
- (void) time( &current_time ) ;
-@@ -791,8 +791,8 @@
- return FAILED;
-
- if( last == NULL ) {
-- last = SAIN6(SVC_LAST_DGRAM_ADDR(sp)) =
-- SAIN6(calloc( 1, sizeof(union xsockaddr) ) );
-+ SVC_LAST_DGRAM_ADDR(sp) = calloc( 1, sizeof(union xsockaddr) );
-+ last = SAIN6( SVC_LAST_DGRAM_ADDR(sp) );
- }
-
- (void) time( &current_time ) ;
diff --git a/openwrt/package/xsupplicant/Config.in b/openwrt/package/xsupplicant/Config.in
deleted file mode 100644
index f9746d0b4d..0000000000
--- a/openwrt/package/xsupplicant/Config.in
+++ /dev/null
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_XSUPPLICANT
- prompt "xsupplicant....................... A fully compliant 802.1x authenticator"
- tristate
- default m if CONFIG_DEVEL
- select BR2_PACKAGE_LIBOPENSSL
- select BR2_PACKAGE_WIRELESS_TOOLS
- help
- This software allows a GNU/Linux or BSD workstation to authenticate with
- a RADIUS server using 802.1x and various EAP protocols.
-
- http://open1x.sourceforge.net/
-
diff --git a/openwrt/package/xsupplicant/Makefile b/openwrt/package/xsupplicant/Makefile
deleted file mode 100644
index 2dcf371d07..0000000000
--- a/openwrt/package/xsupplicant/Makefile
+++ /dev/null
@@ -1,74 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=xsupplicant
-PKG_VERSION:=1.2.3
-PKG_RELEASE:=1
-PKG_MD5SUM:=c9b17b2e1879bac85c583980338fed85
-
-PKG_SOURCE_URL:=@SF/open1x
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_CAT:=zcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,XSUPPLICANT,xsupplicant,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- touch configure.in; \
- touch aclocal.m4; \
- touch Makefile.in; \
- touch configure; \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include \
- -I$(PKG_BUILD_DIR)/lib/libxsupconfig/ \
- -I$(STAGING_DIR)/usr/include/madwifi" \
- LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --program-prefix="" \
- --program-suffix="" \
- --prefix=/usr \
- --exec-prefix=/usr \
- --bindir=/usr/bin \
- --datadir=/usr/share \
- --includedir=/usr/include \
- --infodir=/usr/share/info \
- --libdir=/usr/lib \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- $(DISABLE_LARGEFILE) \
- $(DISABLE_NLS) \
- --with-openssl="$(STAGING_DIR)/usr" \
- --with-madwifi-path="$(STAGING_DIR)/usr/include/madwifi" \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- rm -rf $(PKG_INSTALL_DIR)
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR=$(PKG_INSTALL_DIR) \
- all install
- touch $@
-
-$(IPKG_XSUPPLICANT):
- install -d -m0755 $(IDIR_XSUPPLICANT)/etc
- install -m0644 $(PKG_BUILD_DIR)/etc/xsupplicant.conf $(IDIR_XSUPPLICANT)/etc/
- install -d -m0755 $(IDIR_XSUPPLICANT)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/xsup_* $(IDIR_XSUPPLICANT)/usr/bin/
- install -d -m0755 $(IDIR_XSUPPLICANT)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/usr/sbin/xsupplicant $(IDIR_XSUPPLICANT)/usr/sbin/
- $(RSTRIP) $(IDIR_XSUPPLICANT)
- $(IPKG_BUILD) $(IDIR_XSUPPLICANT) $(PACKAGE_DIR)
diff --git a/openwrt/package/xsupplicant/ipkg/xsupplicant.conffiles b/openwrt/package/xsupplicant/ipkg/xsupplicant.conffiles
deleted file mode 100644
index 8503d2bd49..0000000000
--- a/openwrt/package/xsupplicant/ipkg/xsupplicant.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/xsupplicant.conf
diff --git a/openwrt/package/xsupplicant/ipkg/xsupplicant.control b/openwrt/package/xsupplicant/ipkg/xsupplicant.control
deleted file mode 100644
index 36ae6afa9c..0000000000
--- a/openwrt/package/xsupplicant/ipkg/xsupplicant.control
+++ /dev/null
@@ -1,6 +0,0 @@
-Package: xsupplicant
-Priority: optional
-Section: net
-Depends: libopenssl, wireless-tools
-Description: A fully compliant 802.1x authenticator
-
diff --git a/openwrt/package/xsupplicant/patches/001-no-lfl.patch b/openwrt/package/xsupplicant/patches/001-no-lfl.patch
deleted file mode 100644
index 9f0ed94456..0000000000
--- a/openwrt/package/xsupplicant/patches/001-no-lfl.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN xsupplicant-1.2.2-old/configure xsupplicant-1.2.2-new/configure
---- xsupplicant-1.2.2-old/configure 2005-09-14 05:34:54.000000000 +0200
-+++ xsupplicant-1.2.2-new/configure 2005-10-20 06:24:23.000000000 +0200
-@@ -3316,7 +3316,7 @@
- fi
- if test -n "$LEX"; then
- LFLAGS="$LFLAGS -i"
-- MORELIBS="${MORELIBS} -lfl"
-+
- fi
-
- echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
-diff -ruN xsupplicant-1.2.2-old/configure.in xsupplicant-1.2.2-new/configure.in
---- xsupplicant-1.2.2-old/configure.in 2005-09-14 05:34:54.000000000 +0200
-+++ xsupplicant-1.2.2-new/configure.in 2005-10-20 06:23:38.000000000 +0200
-@@ -17,7 +17,7 @@
- AM_PROG_LEX
- if test -n "$LEX"; then
- LFLAGS="$LFLAGS -i"
-- MORELIBS="${MORELIBS} -lfl"
-+
- fi
-
- AC_C_BIGENDIAN([big_endian=true;AC_DEFINE(BIGENDIAN)],[big_endian=false;AC_DEFINE(LILENDIAN)])
diff --git a/openwrt/package/xsupplicant/patches/002-cardif_madwifi_driver_h.patch b/openwrt/package/xsupplicant/patches/002-cardif_madwifi_driver_h.patch
deleted file mode 100644
index 4333d346be..0000000000
--- a/openwrt/package/xsupplicant/patches/002-cardif_madwifi_driver_h.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -ruN xsupplicant-1.2.2-old/src/cardif/linux/cardif_madwifi_driver.h xsupplicant-1.2.2-new/src/cardif/linux/cardif_madwifi_driver.h
---- xsupplicant-1.2.2-old/src/cardif/linux/cardif_madwifi_driver.h 2005-04-06 04:21:53.000000000 +0200
-+++ xsupplicant-1.2.2-new/src/cardif/linux/cardif_madwifi_driver.h 2005-10-17 22:03:19.000000000 +0200
-@@ -21,6 +21,7 @@
- int cardif_madwifi_driver_set_key(char *, int, unsigned char *, int, int,
- char *, int, char *, int);
- int cardif_madwifi_driver_wpa_state(struct interface_data *, char);
-+void cardif_madwifi_driver_associate(struct interface_data *, char *);
- int cardif_madwifi_driver_disassociate(struct interface_data *, int);
-
- #endif // _CARDIF_MADWIFI_DRIVER_H_
diff --git a/openwrt/package/xsupplicant/patches/004-madwifi-ng.patch b/openwrt/package/xsupplicant/patches/004-madwifi-ng.patch
deleted file mode 100644
index 7c009bc7ce..0000000000
--- a/openwrt/package/xsupplicant/patches/004-madwifi-ng.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -ruN xsupplicant-1.2.2-old/src/cardif/linux/cardif_madwifi_driver.c xsupplicant-1.2.2-new/src/cardif/linux/cardif_madwifi_driver.c
---- xsupplicant-1.2.2-old/src/cardif/linux/cardif_madwifi_driver.c 2005-10-13 20:57:28.000000000 +0200
-+++ xsupplicant-1.2.2-new/src/cardif/linux/cardif_madwifi_driver.c 2005-10-23 19:28:46.000000000 +0200
-@@ -140,19 +140,19 @@
- "ioctl[IEEE80211_IOCTL_SETKEY]",
- "ioctl[IEEE80211_IOCTL_GETKEY]",
- "ioctl[IEEE80211_IOCTL_DELKEY]",
-- NULL,
-+ "ioctl[IEEE80211_IOCTL_SETWMMPARAMS]",
- "ioctl[IEEE80211_IOCTL_SETMLME]",
-- NULL,
-+ "ioctl[IEEE80211_IOCTL_GETCHANINFO]",
- "ioctl[IEEE80211_IOCTL_SETOPTIE]",
- "ioctl[IEEE80211_IOCTL_GETOPTIE]",
- "ioctl[IEEE80211_IOCTL_ADDMAC]",
- NULL,
- "ioctl[IEEE80211_IOCTL_DELMAC]",
-- NULL,
-- "ioctl[IEEE80211_IOCTL_CHANLIST]",
-+ "ioctl[IEEE80211_IOCTL_GETCHANLIST]",
-+ "ioctl[IEEE80211_IOCTL_SETCHANLIST]",
- };
- if (IEEE80211_IOCTL_SETPARAM <= op &&
-- op <= IEEE80211_IOCTL_CHANLIST)
-+ op <= IEEE80211_IOCTL_SETCHANLIST)
- debug_printf(DEBUG_NORMAL, "%s\n", opnames[op - SIOCIWFIRSTPRIV]);
- else
- debug_printf(DEBUG_NORMAL, "ioctl[unknown???]");
diff --git a/openwrt/package/xsupplicant/patches/005-disable-procfs-check.patch b/openwrt/package/xsupplicant/patches/005-disable-procfs-check.patch
deleted file mode 100644
index b9dab9caa1..0000000000
--- a/openwrt/package/xsupplicant/patches/005-disable-procfs-check.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff -Nur xsupplicant-1.2.2/configure xsupplicant-1.2.2.patched/configure
---- xsupplicant-1.2.2/configure 2005-09-14 05:34:54.000000000 +0200
-+++ xsupplicant-1.2.2.patched/configure 2005-12-23 23:51:47.031541500 +0100
-@@ -4809,19 +4809,6 @@
- FRAMER="generic"
- fi
-
--if test $FRAMER = "linux"; then
-- echo "$as_me:$LINENO: checking for procfs support" >&5
--echo $ECHO_N "checking for procfs support... $ECHO_C" >&6
-- if test -r /proc/net/dev; then
-- echo "$as_me:$LINENO: result: okay" >&5
--echo "${ECHO_T}okay" >&6
-- else
-- { { echo "$as_me:$LINENO: error: You must have ProcFS enabled in your kernel!" >&5
--echo "$as_me: error: You must have ProcFS enabled in your kernel!" >&2;}
-- { (exit 1); exit 1; }; };
-- fi
--fi
--
- if test "$MADWIFI_PATH" != ""; then
- echo "$as_me:$LINENO: result: Adding MADWIFI WPA support." >&5
- echo "${ECHO_T}Adding MADWIFI WPA support." >&6
diff --git a/openwrt/package/zlib/Config.in b/openwrt/package/zlib/Config.in
deleted file mode 100644
index 4b96d94153..0000000000
--- a/openwrt/package/zlib/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_ZLIB
- prompt "zlib.............................. Library implementing the deflate compression method"
- tristate
- default m if CONFIG_DEVEL
- help
- A library implementing the 'deflate' compression method
-
- http://www.zlib.net/
-
diff --git a/openwrt/package/zlib/Makefile b/openwrt/package/zlib/Makefile
deleted file mode 100644
index cfd82800a8..0000000000
--- a/openwrt/package/zlib/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=zlib
-PKG_VERSION:=1.2.3
-PKG_RELEASE:=3
-PKG_MD5SUM:=dee233bf288ee795ac96a98cc2e369b6
-
-PKG_SOURCE_URL:=http://www.zlib.net \
- @SF/zlib
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_CAT:=bzcat
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(TOPDIR)/package/rules.mk
-
-$(eval $(call PKG_template,ZLIB,zlib,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
-
-$(PKG_BUILD_DIR)/.configured:
- (cd $(PKG_BUILD_DIR); \
- $(TARGET_CONFIGURE_OPTS) \
- LDSHARED="$(TARGET_CC) -shared -Wl,-soname,libz.so.1" \
- CFLAGS="$(TARGET_CFLAGS) $(CFLAGS_LARGEFILE)" \
- ./configure \
- --prefix=/usr \
- --shared \
- );
- touch $@
-
-$(PKG_BUILD_DIR)/.built:
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- CFLAGS="$(TARGET_CFLAGS) $(CFLAGS_LARGEFILE)" \
- libz.a libz.so
- mkdir -p $(PKG_INSTALL_DIR)
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
- touch $@
-
-$(IPKG_ZLIB):
- install -m0755 -d $(IDIR_ZLIB)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libz.so.* $(IDIR_ZLIB)/usr/lib/
- $(RSTRIP) $(IDIR_ZLIB)
- $(IPKG_BUILD) $(IDIR_ZLIB) $(PACKAGE_DIR)
-
-$(STAGING_DIR)/usr/lib/libz.so: $(PKG_BUILD_DIR)/.built
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(STAGING_DIR)/usr/include
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(STAGING_DIR)/usr/lib
- touch $(STAGING_DIR)/usr/lib/libz.so
-
-install-dev: $(STAGING_DIR)/usr/lib/libz.so
-
-uninstall-dev:
- rm -rf $(STAGING_DIR)/usr/include/zconf.h
- rm -rf $(STAGING_DIR)/usr/include/zlib.h
- rm -rf $(STAGING_DIR)/usr/lib/libz.*
-
-compile-targets: install-dev
-clean-targets: uninstall-dev
diff --git a/openwrt/package/zlib/ipkg/zlib.control b/openwrt/package/zlib/ipkg/zlib.control
deleted file mode 100644
index 35fcac26e5..0000000000
--- a/openwrt/package/zlib/ipkg/zlib.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: zlib
-Priority: optional
-Section: libs
-Description: an implementation of the deflate compression method (library)
diff --git a/openwrt/package/zlib/patches/zlib.patch b/openwrt/package/zlib/patches/zlib.patch
deleted file mode 100644
index 1325462ba5..0000000000
--- a/openwrt/package/zlib/patches/zlib.patch
+++ /dev/null
@@ -1,206 +0,0 @@
-diff -ruN zlib-1.2.3-orig/Makefile.in zlib-1.2.3-2/Makefile.in
---- zlib-1.2.3-orig/Makefile.in 2004-09-15 16:27:20.000000000 +0200
-+++ zlib-1.2.3-2/Makefile.in 2004-11-13 13:38:12.000000000 +0100
-@@ -25,20 +25,23 @@
- # -Wstrict-prototypes -Wmissing-prototypes
-
- LDFLAGS=libz.a
--LDSHARED=$(CC)
-+LDSHARED=$(CC) -shared -Wl,-soname,$(SHAREDLIBM)
- CPP=$(CC) -E
-
--LIBS=libz.a
-+LIBS=
-+STATICLIB=libz.a
- SHAREDLIB=libz.so
- SHAREDLIBV=libz.so.1.2.3
- SHAREDLIBM=libz.so.1
-
--AR=ar rc
-+AR=ar
- RANLIB=ranlib
- TAR=tar
- SHELL=/bin/sh
- EXE=
-
-+DESTDIR =
-+
- prefix = /usr/local
- exec_prefix = ${prefix}
- libdir = ${exec_prefix}/lib
-@@ -67,8 +70,8 @@
- echo ' *** zlib test FAILED ***'; \
- fi
-
--libz.a: $(OBJS) $(OBJA)
-- $(AR) $@ $(OBJS) $(OBJA)
-+$(STATICLIB): $(OBJS) $(OBJA)
-+ $(AR) rc $@ $(OBJS) $(OBJA)
- -@ ($(RANLIB) $@ || true) >/dev/null 2>&1
-
- match.o: match.S
-@@ -77,8 +80,10 @@
- mv _match.o match.o
- rm -f _match.s
-
-+$(SHAREDLIB): $(SHAREDLIBV)
-+
- $(SHAREDLIBV): $(OBJS)
-- $(LDSHARED) -o $@ $(OBJS)
-+ $(LDSHARED) -lc -o $@ $(OBJS)
- rm -f $(SHAREDLIB) $(SHAREDLIBM)
- ln -s $@ $(SHAREDLIB)
- ln -s $@ $(SHAREDLIBM)
-@@ -90,23 +95,23 @@
- $(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS)
-
- install: $(LIBS)
-- -@if [ ! -d $(exec_prefix) ]; then mkdir -p $(exec_prefix); fi
-- -@if [ ! -d $(includedir) ]; then mkdir -p $(includedir); fi
-- -@if [ ! -d $(libdir) ]; then mkdir -p $(libdir); fi
-- -@if [ ! -d $(man3dir) ]; then mkdir -p $(man3dir); fi
-- cp zlib.h zconf.h $(includedir)
-- chmod 644 $(includedir)/zlib.h $(includedir)/zconf.h
-- cp $(LIBS) $(libdir)
-- cd $(libdir); chmod 755 $(LIBS)
-- -@(cd $(libdir); $(RANLIB) libz.a || true) >/dev/null 2>&1
-- cd $(libdir); if test -f $(SHAREDLIBV); then \
-+ -@if [ ! -d $(DESTDIR)$(exec_prefix) ]; then mkdir -p $(DESTDIR)$(exec_prefix); fi
-+ -@if [ ! -d $(DESTDIR)$(includedir) ]; then mkdir -p $(DESTDIR)$(includedir); fi
-+ -@if [ ! -d $(DESTDIR)$(libdir) ]; then mkdir -p $(DESTDIR)$(libdir); fi
-+ -@if [ ! -d $(DESTDIR)$(man3dir) ]; then mkdir -p $(DESTDIR)$(man3dir); fi
-+ cp zlib.h zconf.h $(DESTDIR)$(includedir)
-+ chmod 644 $(DESTDIR)$(includedir)/zlib.h $(DESTDIR)$(includedir)/zconf.h
-+ cp $(STATICLIB) $(SHAREDLIBV) $(DESTDIR)$(libdir)
-+ cd $(DESTDIR)$(libdir); chmod 755 $(LIBS)
-+ -@(cd $(DESTDIR)$(libdir); $(RANLIB) libz.a || true) >/dev/null 2>&1
-+ cd $(DESTDIR)$(libdir); if test -f $(SHAREDLIBV); then \
- rm -f $(SHAREDLIB) $(SHAREDLIBM); \
- ln -s $(SHAREDLIBV) $(SHAREDLIB); \
- ln -s $(SHAREDLIBV) $(SHAREDLIBM); \
- (ldconfig || true) >/dev/null 2>&1; \
- fi
-- cp zlib.3 $(man3dir)
-- chmod 644 $(man3dir)/zlib.3
-+ cp zlib.3 $(DESTDIR)$(man3dir)
-+ chmod 644 $(DESTDIR)$(man3dir)/zlib.3
- # The ranlib in install is needed on NeXTSTEP which checks file times
- # ldconfig is for Linux
-
-diff -ruN zlib-1.2.3-orig/configure zlib-1.2.3-2/configure
---- zlib-1.2.3-orig/configure 2004-09-07 07:50:06.000000000 +0200
-+++ zlib-1.2.3-2/configure 2004-11-13 12:37:43.000000000 +0100
-@@ -23,7 +23,7 @@
- VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`
- VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h`
- VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h`
--AR=${AR-"ar rc"}
-+AR=${AR-"ar"}
- RANLIB=${RANLIB-"ranlib"}
- prefix=${prefix-/usr/local}
- exec_prefix=${exec_prefix-'${prefix}'}
-@@ -73,7 +73,7 @@
-
- if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then
- CC="$cc"
-- SFLAGS=${CFLAGS-"-fPIC -O3"}
-+ SFLAGS=${CFLAGS-"-D_REENTRANT -fPIC -O3"}
- CFLAGS="$cflags"
- case `(uname -s || echo unknown) 2>/dev/null` in
- Linux | linux | GNU | GNU/*) LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1"};;
-@@ -408,6 +408,29 @@
- echo Checking for mmap support... No.
- fi
-
-+cat > $test.c <<EOF
-+#include <stdio.h>
-+int main() { char buf[10]; snprintf(buf, sizeof(buf), "%s", "F"); return 0; }
-+EOF
-+if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
-+ echo "Checking for snprintf... Yes."
-+ CFLAGS="$CFLAGS -DHAS_snprintf"
-+else
-+ echo "Checking for snprintf.. No."
-+fi
-+
-+cat > $test.c <<EOF
-+#include <stdio.h>
-+#include <stdarg.h>
-+int main(void) { va_list a; vsnprintf(0, 0, "", a); return 0; }
-+EOF
-+if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
-+ echo "Checking for vsnprintf... Yes."
-+ CFLAGS="$CFLAGS -DHAS_vsnprintf"
-+else
-+ echo "Checking for vsnprintf.. No."
-+fi
-+
- CPP=${CPP-"$CC -E"}
- case $CFLAGS in
- *ASMV*)
-@@ -424,20 +447,21 @@
- # udpate Makefile
- sed < Makefile.in "
- /^CC *=/s#=.*#=$CC#
--/^CFLAGS *=/s#=.*#=$CFLAGS#
--/^CPP *=/s#=.*#=$CPP#
--/^LDSHARED *=/s#=.*#=$LDSHARED#
--/^LIBS *=/s#=.*#=$LIBS#
--/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
--/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
--/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
--/^AR *=/s#=.*#=$AR#
--/^RANLIB *=/s#=.*#=$RANLIB#
--/^EXE *=/s#=.*#=$EXE#
--/^prefix *=/s#=.*#=$prefix#
--/^exec_prefix *=/s#=.*#=$exec_prefix#
--/^libdir *=/s#=.*#=$libdir#
--/^includedir *=/s#=.*#=$includedir#
--/^mandir *=/s#=.*#=$mandir#
--/^LDFLAGS *=/s#=.*#=$LDFLAGS#
-+/^CC *=/s%=.*%= $CC%
-+/^CFLAGS *=/s%=.*%= $CFLAGS%
-+/^CPP *=/s%=.*%= $CPP%
-+/^LDSHARED *=/s%=.*%= $LDSHARED%
-+/^LIBS *=/s%=.*%= $LIBS%
-+/^SHAREDLIB *=/s%=.*%= $SHAREDLIB%
-+/^SHAREDLIBV *=/s%=.*%= $SHAREDLIBV%
-+/^SHAREDLIBM *=/s%=.*%= $SHAREDLIBM%
-+/^AR *=/s%=.*%= $AR%
-+/^RANLIB *=/s%=.*%= $RANLIB%
-+/^EXE *=/s%=.*%= $EXE%
-+/^prefix *=/s%=.*%= $prefix%
-+/^exec_prefix *=/s%=.*%= $exec_prefix%
-+/^libdir *=/s%=.*%= $libdir%
-+/^includedir *=/s%=.*%= $includedir%
-+/^mandir *=/s%=.*%= $mandir%
-+/^LDFLAGS *=/s%=.*%= $LDFLAGS%
- " > Makefile
-diff -ruN zlib-1.2.3-orig/contrib/minizip/Makefile zlib-1.2.3-2/contrib/minizip/Makefile
---- zlib-1.2.3-orig/contrib/minizip/Makefile 2003-09-10 20:00:16.000000000 +0200
-+++ zlib-1.2.3-2/contrib/minizip/Makefile 2004-11-13 12:37:43.000000000 +0100
-@@ -1,8 +1,8 @@
- CC=cc
--CFLAGS=-O -I../..
-+CFLAGS=-O2 -g -I../.. -Dunix
-
--UNZ_OBJS = miniunz.o unzip.o ioapi.o ../../libz.a
--ZIP_OBJS = minizip.o zip.o ioapi.o ../../libz.a
-+UNZ_OBJS = miniunz.o unzip.o ioapi.o
-+ZIP_OBJS = minizip.o zip.o ioapi.o
-
- .c.o:
- $(CC) -c $(CFLAGS) $*.c
-@@ -10,10 +10,10 @@
- all: miniunz minizip
-
- miniunz: $(UNZ_OBJS)
-- $(CC) $(CFLAGS) -o $@ $(UNZ_OBJS)
-+ $(CC) $(CFLAGS) -o $@ $(UNZ_OBJS) -L ../.. -lz
-
- minizip: $(ZIP_OBJS)
-- $(CC) $(CFLAGS) -o $@ $(ZIP_OBJS)
-+ $(CC) $(CFLAGS) -o $@ $(ZIP_OBJS) -L ../.. -lz
-
- test: miniunz minizip
- ./minizip test readme.txt
diff --git a/openwrt/rules.mk b/openwrt/rules.mk
deleted file mode 100644
index 9d924a5b40..0000000000
--- a/openwrt/rules.mk
+++ /dev/null
@@ -1,149 +0,0 @@
-include $(TOPDIR)/.config
-SHELL=/bin/bash
-export SHELL
-
-ifeq ($(V),)
-V=5
-endif
-
-
-ifneq ($(V),0)
-TRACE:=echo "---> "
-START_TRACE:=echo -n "---> "
-END_TRACE:=echo
-else
-START_TRACE:=:
-END_TRACE:=:
-TRACE:=:
-endif
-
-ifeq (${shell [ "$(V)" -ge 5 ] && echo 1},)
-CMD_TRACE:=:
-PKG_TRACE:=:
-else
-CMD_TRACE:=echo -n
-PKG_TRACE:=echo "------> "
-endif
-
-ifeq (${shell [ "$(V)" -ge 10 ] && echo 1},)
-EXTRA_MAKEFLAGS:=-s
-MAKE_TRACE:=2>&1 >&/dev/null || { echo "Build failed. Please re-run make with V=99 to see what's going on"; /bin/false; }
-else
-MAKE_TRACE:=
-EXTRA_MAKEFLAGS:=
-TRACE:=:
-PKG_TRACE:=:
-CMD_TRACE:=:
-START_TRACE:=:
-END_TRACE:=:
-endif
-
-CP=cp -fpR
-MAKE1=make
-MAKEFLAGS=-j$(BR2_JLEVEL) V=$(V) $(EXTRA_MAKEFLAGS)
-# Strip off the annoying quoting
-ARCH:=$(strip $(subst ",, $(BR2_ARCH)))
-WGET:=$(strip $(subst ",, $(BR2_WGET)))
-GCC_VERSION:=$(strip $(subst ",, $(BR2_GCC_VERSION)))
-GCC_USE_SJLJ_EXCEPTIONS:=$(strip $(subst ",, $(BR2_GCC_USE_SJLJ_EXCEPTIONS)))
-TARGET_OPTIMIZATION:=$(strip $(subst ",, $(BR2_TARGET_OPTIMIZATION)))
-#"))"))"))"))")) # for vim's broken syntax highlighting :)
-
-
-ifeq ($(BR2_SOFT_FLOAT),y)
-# gcc 3.4.x soft float configuration is different than previous versions.
-ifeq ($(findstring 3.4.,$(GCC_VERSION)),3.4.)
-SOFT_FLOAT_CONFIG_OPTION:=--with-float=soft
-else
-SOFT_FLOAT_CONFIG_OPTION:=--without-float
-endif
-TARGET_SOFT_FLOAT:=-msoft-float
-ARCH_FPU_SUFFIX:=_nofpu
-else
-SOFT_FLOAT_CONFIG_OPTION:=
-TARGET_SOFT_FLOAT:=
-ARCH_FPU_SUFFIX:=
-endif
-
-
-ifeq ($(BR2_TAR_VERBOSITY),y)
-TAR_OPTIONS=-xvf
-else
-TAR_OPTIONS=-xf
-endif
-
-ifneq ($(BR2_LARGEFILE),y)
-DISABLE_LARGEFILE= --disable-largefile
-endif
-TARGET_CFLAGS:=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING)
-
-OPTIMIZE_FOR_CPU=$(ARCH)
-HOSTCC:=gcc
-BASE_DIR:=$(TOPDIR)
-DL_DIR:=$(BASE_DIR)/dl
-BUILD_DIR:=$(BASE_DIR)/build_$(ARCH)$(ARCH_FPU_SUFFIX)
-STAGING_DIR:=$(BASE_DIR)/staging_dir_$(ARCH)$(ARCH_FPU_SUFFIX)
-SCRIPT_DIR:=$(BASE_DIR)/scripts
-BIN_DIR:=$(BASE_DIR)/bin
-STAMP_DIR:=$(BUILD_DIR)/stamp
-PACKAGE_DIR:=$(BIN_DIR)/packages
-STAMP_DIR:=$(BUILD_DIR)/stamp
-TARGET_DIR:=$(BUILD_DIR)/root
-TOOL_BUILD_DIR=$(BASE_DIR)/toolchain_build_$(ARCH)$(ARCH_FPU_SUFFIX)
-TARGET_PATH=$(STAGING_DIR)/usr/bin:$(STAGING_DIR)/bin:/bin:/sbin:/usr/bin:/usr/sbin
-IMAGE:=$(BUILD_DIR)/root_fs_$(ARCH)$(ARCH_FPU_SUFFIX)
-REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux-uclibc
-GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux
-KERNEL_CROSS:=$(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-
-TARGET_CROSS:=$(STAGING_DIR)/bin/$(OPTIMIZE_FOR_CPU)-linux-uclibc-
-TARGET_CC:=$(TARGET_CROSS)gcc
-STRIP:=$(STAGING_DIR)/bin/sstrip
-PATCH=$(SCRIPT_DIR)/patch-kernel.sh
-SED:=$(STAGING_DIR)/bin/sed -i -e
-LINUX_DIR:=$(BUILD_DIR)/linux
-LINUX_HEADERS_DIR:=$(TOOL_BUILD_DIR)/linux
-
-
-HOST_ARCH:=$(shell $(HOSTCC) -dumpmachine | sed -e s'/-.*//' \
- -e 's/sparc.*/sparc/' \
- -e 's/arm.*/arm/g' \
- -e 's/m68k.*/m68k/' \
- -e 's/ppc/powerpc/g' \
- -e 's/v850.*/v850/g' \
- -e 's/sh[234]/sh/' \
- -e 's/mips-.*/mips/' \
- -e 's/mipsel-.*/mipsel/' \
- -e 's/cris.*/cris/' \
- -e 's/i[3-9]86/i386/' \
- )
-GNU_HOST_NAME:=$(HOST_ARCH)-pc-linux-gnu
-TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
- AR=$(TARGET_CROSS)ar \
- AS=$(TARGET_CROSS)as \
- LD=$(TARGET_CROSS)ld \
- NM=$(TARGET_CROSS)nm \
- CC=$(TARGET_CROSS)gcc \
- GCC=$(TARGET_CROSS)gcc \
- CXX=$(TARGET_CROSS)g++ \
- RANLIB=$(TARGET_CROSS)ranlib
-
-ifeq ($(ENABLE_LOCALE),true)
-DISABLE_NLS:=
-else
-DISABLE_NLS:=--disable-nls
-endif
-
-ifeq ($(BR2_ENABLE_MULTILIB),y)
-MULTILIB:=--enable-multilib
-endif
-
-# invoke ipkg-build with some default options
-IPKG_BUILD := PATH="$(TARGET_PATH)" ipkg-build -c -o root -g root
-# where to build (and put) .ipk packages
-IPKG_TARGET_DIR := $(PACKAGE_DIR)
-IPKG:=IPKG_TMP=$(BUILD_DIR)/tmp IPKG_INSTROOT=$(TARGET_DIR) IPKG_CONF_DIR=$(STAGING_DIR)/etc IPKG_OFFLINE_ROOT=$(BUILD_DIR)/root $(SCRIPT_DIR)/ipkg -force-defaults -force-depends
-IPKG_STATE_DIR := $(TARGET_DIR)/usr/lib/ipkg
-
-RSTRIP:=STRIP="$(STRIP)" $(SCRIPT_DIR)/rstrip.sh
-RSTRIP_KMOD:=STRIP="$(TARGET_CROSS)strip --strip-unneeded --remove-section=.comment" $(SCRIPT_DIR)/rstrip.sh
-
diff --git a/openwrt/scripts/adam2flash.pl b/openwrt/scripts/adam2flash.pl
deleted file mode 100755
index bd0fa69a61..0000000000
--- a/openwrt/scripts/adam2flash.pl
+++ /dev/null
@@ -1,174 +0,0 @@
-#!/usr/bin/perl
-#
-# D-Link DSL-G6x4T flash utility
-#
-# Copyright (C) 2005 Felix Fietkau <mailto@nbd.name>
-# based on fbox recovery util by Enrik Berkhan
-#
-# 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
-#
-
-use IO::Socket::INET;
-use Socket;
-use strict;
-use warnings;
-
-sub usage() {
- print STDERR "Usage: $0 <ip> [firmware.bin]\n\n";
- exit 0;
-}
-
-my $ip = shift @ARGV;
-$ip and $ip =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/ or usage();
-
-my $probe = IO::Socket::INET->new(Proto => 'udp',
- Broadcast => 1,
- LocalPort => 5035) or die "socket: $!";
-my $setip = unpack("N", inet_aton($ip));
-$setip > 0 or usage();
-
-my @packets;
-foreach my $ver ([18, 1], [22, 2]) {
- push @packets, pack("vCCVNV", 0, @$ver, 1, $setip, 0);
-}
-print STDERR "Looking for device: ";
-my $broadcast = sockaddr_in(5035, INADDR_BROADCAST);
-my $scanning;
-my $box;
-
-$SIG{"ALRM"} = sub {
- return if --$scanning <= 0;
- foreach my $packet (@packets) {
- $probe->send($packet, 0, $broadcast);
- }
- print STDERR ".";
-};
-
-$scanning = 10;
-foreach my $packet (@packets) {
- $probe->send($packet, 0, $broadcast);
-}
-print STDERR ".";
-
-while($scanning) {
- my $reply;
-
- alarm(1);
- if (my $peer = $probe->recv($reply, 16)) {
- next if (length($reply) < 16);
- my ($port, $addr) = sockaddr_in($peer);
- my ($major, $minor1, $minor2, $code, $addr2) = unpack("vCCVV", $reply);
- $addr2 = pack("N", $addr2);
- if ($code == 2) {
- $scanning = 0;
- printf STDERR " found!\nADAM2 version $major.$minor1.$minor2 at %s (%s)\n", inet_ntoa($addr), inet_ntoa($addr2);
- $box = inet_ntoa($addr);
- }
- }
-}
-
-$box or die " not found!\n";
-
-{
- package ADAM2FTP;
- use base qw(Net::FTP);
-
- # ADAM2 requires upper case commands, some brain dead firewall doesn't ;-)
- sub _USER {
- shift->command("USER",@_)->response()
- }
-
- sub _GETENV {
- my $ftp = shift;
- my ($ok, $name, $value);
-
- $ftp->command("GETENV",@_);
- while(length($ok = $ftp->response()) < 1) {
- my $line = $ftp->getline();
- unless (defined($value)) {
- chomp($line);
- ($name, $value) = split(/\s+/, $line, 2);
- }
- }
- $ftp->debug_print(0, "getenv: $value\n")
- if $ftp->debug();
- return $value;
- }
-
- sub getenv {
- my $ftp = shift;
- my $name = shift;
- return $ftp->_GETENV($name);
- }
-
- sub _REBOOT {
- shift->command("REBOOT")->response() == Net::FTP::CMD_OK
- }
-
- sub reboot {
- my $ftp = shift;
- $ftp->_REBOOT;
- $ftp->close;
- }
-}
-
-my $file = shift @ARGV;
-$file || exit 0;
-
-open FILE, "<$file" or die "can't open firmware file\n";
-my $ftp = ADAM2FTP->new($box, Debug => 0, Timeout => 600) or die "can't open control connection\n";
-$ftp->login("adam2", "adam2") or die "can't login\n";
-
-my $mtd0 = $ftp->getenv("mtd0");
-my $mtd1 = $ftp->getenv("mtd1");
-my ($ksize, $fssize);
-
-$mtd1 =~ /^(0x\w+),(0x\w+)$/ and $ksize = hex($2) - hex($1);
-$mtd0 =~ /^(0x\w+),(0x\w+)$/ and $fssize = hex($2) - hex($1);
-$ksize and $fssize or die 'cannot read partition offsets';
-printf STDERR "Available flash space: 0x%08x (0x%08x + 0x%08x)\n", $ksize + $fssize, $ksize, $fssize;
-
-$ftp->command("MEDIA FLSH")->response();
-$ftp->binary();
-print STDERR "Writing to mtd1...\n";
-
-my $dc = $ftp->stor("fs mtd1");
-$dc or die "can't open data connection\n";
-my $rbytes = 1;
-
-while (($ksize > 0) and ($rbytes > 0)) {
- my $buffer;
- my $len = ($ksize > 1024 ? 1024 : $ksize);
- $rbytes = read FILE, $buffer, $len;
- $rbytes and $ksize -= $dc->write($buffer, $rbytes, 600);
-}
-
-$dc->close();
-$rbytes or die "no more data left to write\n";
-
-print STDERR "Writing to mtd0...\n";
-
-$dc = $ftp->stor("fs mtd0");
-$dc or die "can't open data connection\n";
-
-while (($fssize > 0) and ($rbytes > 0)) {
- my $buffer;
- my $len = ($fssize > 1024 ? 1024 : $fssize);
- $rbytes = read FILE, $buffer, $len;
- $rbytes and $fssize -= $dc->write($buffer, $rbytes, 600);
-}
-
-$dc->close();
-$ftp->reboot();
diff --git a/openwrt/scripts/configtest.pl b/openwrt/scripts/configtest.pl
deleted file mode 100755
index 476bba7dce..0000000000
--- a/openwrt/scripts/configtest.pl
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/perl
-my %change = (
- '^BUSYBOX' => 'make package/busybox-clean',
- 'OPENVPN_' => 'make package/openvpn-clean',
- 'SYSCONF_' => 'make package/base-files-clean target_clean',
- '' => 'make target_clean'
-);
-
-my @configfiles = (
-# ['package/linux/linux.config', 'build_mipsel/linux/.config' =>
-# 'make -C package linux-clean']
-);
-
-
-
-foreach my $change (keys %change) {
- my $v1 = `grep '$change' .config.test`;
- my $v2 = `grep '$change' .config`;
- $v1 eq $v2 or system($change{$change});
-}
-
-foreach my $file (@configfiles) {
- if ((-f $file->[0]) and (-f $file->[1])) {
- my @s1 = stat $file->[0];
- my @s2 = stat $file->[1];
- $s1[9] > $s2[9] and system($file->[2]);
- }
-}
diff --git a/openwrt/scripts/download.pl b/openwrt/scripts/download.pl
deleted file mode 100755
index 794d8edeb8..0000000000
--- a/openwrt/scripts/download.pl
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/perl
-use strict;
-use warnings;
-
-my $target = shift @ARGV;
-my $filename = shift @ARGV;
-my $md5sum = shift @ARGV;
-my @mirrors;
-
-my $ok;
-
-@ARGV > 0 or die "Syntax: $0 <target dir> <filename> <md5sum> <mirror> [<mirror> ...]\n";
-
-sub download
-{
- my $mirror = shift;
-
- open WGET, "wget -t1 --timeout=20 -O- \"$mirror/$filename\" |" or die "Cannot launch wget.\n";
- open MD5SUM, "| md5sum > \"$target/$filename.md5sum\"" or die "Cannot launch md5sum.\n";
- open OUTPUT, "> $target/$filename.dl" or die "Cannot create file $target/$filename.dl: $!\n";
- my $buffer;
- while (read WGET, $buffer, 1048576) {
- print MD5SUM $buffer;
- print OUTPUT $buffer;
- }
- close MD5SUM;
- close WGET;
- close OUTPUT;
-
- if (($? >> 8) != 0 ) {
- print STDERR "Download failed.\n";
- cleanup();
- return;
- }
-
- my $sum = `cat "$target/$filename.md5sum"`;
- $sum =~ /^(\w+)\s+/ or die "Could not generate md5sum\n";
- $sum = $1;
-
- if (($md5sum =~ /\w{32}/) and ($sum ne $md5sum)) {
- print STDERR "MD5 sum of the downloaded file does not match - deleting download.\n";
- cleanup();
- return;
- }
-
- unlink "$target/$filename";
- system("mv \"$target/$filename.dl\" \"$target/$filename\"");
- cleanup();
-}
-
-sub cleanup
-{
- unlink "$target/$filename.dl";
- unlink "$target/$filename.md5sum";
-}
-
-foreach my $mirror (@ARGV) {
- if ($mirror =~ /^\@SF\/(.+)$/) {
- my $sfpath = $1;
- open SF, "wget -t1 -q -O- 'http://prdownloads.sourceforge.net/$sfpath/$filename' |";
- while (<SF>) {
- /RADIO NAME=use_default VALUE=(\w+) OnClick="form\.submit\(\)">/ or
- /type="radio" name="use_default" value="(\w+)" onclick="form\.submit\(\)"\/>/ and do {
- push @mirrors, "http://$1.dl.sourceforge.net/sourceforge/$sfpath";
- };
- /<a href="\/.+\?use_mirror=(\w+)"><b>Download/ and do {
- push @mirrors, "http://$1.dl.sourceforge.net/sourceforge/$sfpath";
- };
- }
- push @mirrors, "http://dl.sourceforge.net/sourceforge/$sfpath";
- close SF;
- } elsif ($mirror =~ /^\@GNU\/(.+)$/) {
- my $gnupath = $1;
- push @mirrors, "ftp://ftp.gnu.org/gnu/$gnupath";
- push @mirrors, "ftp://ftp.belnet.be/mirror/ftp.gnu.org/gnu/$gnupath";
- push @mirrors, "ftp://ftp.mirror.nl/pub/mirror/gnu/$gnupath";
- push @mirrors, "http://mirror.switch.ch/ftp/mirror/gnu/$gnupath";
- push @mirrors, "ftp://ftp.uu.net/archive/systems/gnu/$gnupath";
- push @mirrors, "ftp://ftp.eu.uu.net/pub/gnu/$gnupath";
- push @mirrors, "ftp://ftp.leo.org/pub/comp/os/unix/gnu/$gnupath";
- push @mirrors, "ftp://ftp.digex.net/pub/gnu/$gnupath";
- } else {
- push @mirrors, $mirror;
- }
-}
-
-push @mirrors, 'http://mirror1.openwrt.org/';
-push @mirrors, 'http://downloads.openwrt.org/sources/';
-
-while (!$ok) {
- my $mirror = shift @mirrors;
- $mirror or die "No more mirrors to try - giving up.\n";
-
- download($mirror);
- -f "$target/$filename" and $ok = 1;
-}
-
-$SIG{INT} = \&cleanup;
-
diff --git a/openwrt/scripts/flash.sh b/openwrt/scripts/flash.sh
deleted file mode 100644
index 8841c35684..0000000000
--- a/openwrt/scripts/flash.sh
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/bash
-#
-# tftp flash script for wireless routers
-#
-# Copyright (C) 2004 by Oleg I. Vdovikin <oleg@cs.msu.su>
-# Copyright (C) 2005 by Waldemar Brodkorb <wbx@openwrt.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
-#
-
-if [ -z "$1" ] || [ ! -f $1 ] || [ -z $2 ]; then
- echo Usage: $0 firmware vendor
-cat << EOF
-IMPORTANT:
-Notes for Linksys / Asus WL500gx router:
- be sure you have set boot_wait to yes. Power on your router
- after executing this script.
-
-Notes for Asus WL500g router:
- be sure POWER led is flashing (If this is not the case
- poweroff the device, push the reset button & power on
- it again, then release button)
-
-1) connect your pc to the LAN port
-2) be sure your link is up and has an address in the
- 192.168.1.0/24 address range (and not the 192.168.1.1)
-
-Notes for Toshiba router:
- boot_wait is enabled by default on these units.
-
-1) connect your pc to any of the four LAN ports
-2) be sure your link is up and has an address in the
- 192.168.10.1/24 address range (and not the 192.168.10.1)
-3) run this script (unit will only accept .trx images)
-4) Turn unit power on.
-
-EOF
- exit 0
-fi
-if [ "$2" == "asus" ]; then
-echo Confirming IP address setting...
-echo -en "get ASUSSPACELINK\x01\x01\xa8\xc0 /dev/null\nquit\n" | tftp 192.168.1.1
-echo Flashing 192.168.1.1 using $1...
-echo -en "binary\nput $1 ASUSSPACELINK\nquit\n" | tftp 192.168.1.1
-echo Please wait until leds stops flashing.
-elif [ "$2" == "linksys" ]; then
-echo Flashing 192.168.1.1 using $1...
-echo -en "rexmt 1\ntrace\nbinary\nput $1\nquit\n" | tftp 192.168.1.1
-echo Please wait until power led stops flashing. Do not poweroff! Then you can login via telnet 192.168.1.1.
-elif [ "$2" == "toshiba" ]; then
-echo Flashing 192.168.10.1 using $1...
-echo -en "rexmt 1\ntrace\nbinary\nput $1\nquit\n" | tftp 192.168.10.1
-echo Unit will automatically reboot within 5 minutes. Do not power off. Then you can login via telnet 192.168.10.1.
-fi
diff --git a/openwrt/scripts/gen_busybox_config.pl b/openwrt/scripts/gen_busybox_config.pl
deleted file mode 100755
index 1a84ab999d..0000000000
--- a/openwrt/scripts/gen_busybox_config.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/perl
-use strict;
-
-my $line;
-my $l1 = '';
-my $l2 = '=y';
-while (<>) {
- chomp;
- /^(# )BR2_LARGEFILE(.+)$/ and do {
- $l1 = $1;
- $l2 = $2;
- };
- /^(# )?BUSYBOX_(.+)/ and do {
- my $p1 = $1;
- my $p2 = $2;
- $p2 =~ /(CONFIG_LFS|FDISK_SUPPORT_LARGE_DISKS)/ and do {
- $p1 = $l1;
- $p2 = "$1$l2";
- };
- print "$p1$p2\n";
- }
-}
diff --git a/openwrt/scripts/gen_busybox_menuconfig.pl b/openwrt/scripts/gen_busybox_menuconfig.pl
deleted file mode 100644
index 6ce323bb13..0000000000
--- a/openwrt/scripts/gen_busybox_menuconfig.pl
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/perl
-use strict;
-my $PATH = $ARGV[0];
-($PATH and -d $PATH) or die 'invalid path';
-my $DEFCONFIG = $ARGV[1];
-($DEFCONFIG and -f $DEFCONFIG) or die 'invalid config file';
-
-my %config;
-
-open CONFIG, $DEFCONFIG or die 'cannot open config file';
-while (<CONFIG>) {
- /^([\w_]+)=([ym])/ and $config{$1} = $2;
- /^([\w_]+)=(\d+)/ and $config{$1} = $2;
- /^([\w_]+)=(".+")/ and $config{$1} = $2;
-}
-close CONFIG;
-
-open FIND, "find \"$PATH\" -name Config.in |";
-while (<FIND>) {
- chomp;
- my $input = $_;
- s/^$PATH\///g;
- s/sysdeps\/linux\///g;
- my $output = $_;
- print STDERR "$input => $output\n";
- $output =~ /^(.+)\/[^\/]+$/ and system("mkdir -p $1");
-
- open INPUT, $input;
- open OUTPUT, ">$output";
- my ($cur, $default_set, $line);
- while ($line = <INPUT>) {
- next if $line =~ /^\s*mainmenu/;
-
- # FIXME: make this dynamic
- $line =~ s/default CONFIG_FEATURE_BUFFERS_USE_MALLOC/default CONFIG_FEATURE_BUFFERS_GO_ON_STACK/;
- $line =~ s/default BUSYBOX_CONFIG_FEATURE_SH_IS_NONE/default BUSYBOX_CONFIG_FEATURE_SH_IS_ASH/;
-
- if ($line =~ /^\s*config\s*([\w_]+)/) {
- $cur = $1;
- undef $default_set;
- }
- if ($line =~ /^\s*(menu|choice|end|source)/) {
- undef $cur;
- undef $default_set;
- }
- $line =~ s/^(\s*source\s+)/$1package\/busybox\/config\//;
-
- $line =~ s/(\s+)((CONFIG|FDISK|USING|CROSS|EXTRA|PREFIX|FEATURE|HAVE|BUSYBOX)[\w_]*)/$1BUSYBOX_$2/g;
-
- if ($cur) {
- ($cur !~ /^CONFIG/ or $cur eq 'CONFIG_LFS') and do {
- $line =~ s/^(\s*(bool|tristate|string))\s*".+"$/$1/;
- };
- if ($line =~ /^\s*default/) {
- my $c;
- $default_set = 1;
- $c = $config{$cur} or $c = 'n';
-
- $line =~ s/^(\s*default\s*)(\w+|"[^"]*")(.*)/$1$c$3/;
- }
- }
-
- print OUTPUT $line;
- }
- close OUTPUT;
- close INPUT;
-
-}
-close FIND;
diff --git a/openwrt/scripts/ipkg b/openwrt/scripts/ipkg
deleted file mode 100755
index 57e4457cc5..0000000000
--- a/openwrt/scripts/ipkg
+++ /dev/null
@@ -1,1185 +0,0 @@
-#!/bin/sh
-# ipkg - the itsy package management system
-#
-# Copyright (C) 2001 Carl D. Worth
-#
-# 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.
-
-set -e
-
-# By default do not do globbing. Any command wanting globbing should
-# explicitly enable it first and disable it afterwards.
-set -o noglob
-
-ipkg_is_upgrade () {
- local A B a b
- A=$(echo $1 | sed -r "s/([0-9]+)[^[:alnum:]]*/ \1 /g").
- B=$(echo $2 | sed -r "s/([0-9]+)[^[:alnum:]]*/ \1 /g").
- while [ \! -z "$A" ] && [ \! -z "$B" ]; do {
- set $A; a=$1; shift; A=$*
- set $B; b=$1; shift; B=$*
- [ "$a" -lt "$b" ] 2>&- && return 1
- { [ "$a" -gt "$b" ] 2>&- || [ "$a" ">" "$b" ]; } && return
- }; done
- return 1
-}
-
-ipkg_srcs() {
- local srcre="$1"
- sed -ne "s/^src[[:space:]]\+$srcre[[:space:]]\+//p" < $IPKG_CONF
-}
-
-ipkg_src_names() {
- sed -ne "s/^src[[:space:]]\+\([^[:space:]]\+\).*/\1/p" < $IPKG_CONF
-}
-
-ipkg_src_byname() {
- local src="$1"
- ipkg_srcs $src | head -n 1
-}
-
-ipkg_dests() {
- local destre="`echo $1 | ipkg_protect_slashes`"
- sed -ne "/^dest[[:space:]]\+$destre/{
-s/^dest[[:space:]]\+[^[:space:]]\+[[:space:]]\+//
-s/^/`echo $IPKG_OFFLINE_ROOT | ipkg_protect_slashes`/
-p
-}" < $IPKG_CONF
-}
-
-ipkg_dest_names() {
- sed -ne "s/^dest[[:space:]]\+\([^[:space:]]\+\).*/\1/p" < $IPKG_CONF
-}
-
-ipkg_dests_all() {
- ipkg_dests '.*'
-}
-
-ipkg_state_dirs() {
- ipkg_dests_all | sed "s|\$|/$IPKG_DIR_PREFIX|"
-}
-
-ipkg_dest_default() {
- ipkg_dests_all | head -n 1
-}
-
-ipkg_dest_default_name() {
- ipkg_dest_names | head -n 1
-}
-
-ipkg_dest_byname() {
- local dest="$1"
- ipkg_dests $dest | head -n 1
-}
-
-ipkg_option() {
- local option="$1"
- sed -ne "s/^option[[:space:]]\+$option[[:space:]]\+//p" < $IPKG_CONF
-}
-
-ipkg_load_configuration() {
- if [ -z "$IPKG_CONF_DIR" ]; then
- IPKG_CONF_DIR=/etc
- fi
-
- IPKG_CONF="$IPKG_CONF_DIR/ipkg.conf"
-
- if [ -z "$IPKG_OFFLINE_ROOT" ]; then
- IPKG_OFFLINE_ROOT="`ipkg_option offline_root`"
- fi
- # Export IPKG_OFFLINE_ROOT for use by update-alternatives
- export IPKG_OFFLINE_ROOT
- if [ -n "$DEST_NAME" ]; then
- IPKG_ROOT="`ipkg_dest_byname $DEST_NAME`"
- if [ -z "$IPKG_ROOT" ]; then
- if [ -d "$IPKG_OFFLINE_ROOT$DEST_NAME" ]; then
- IPKG_ROOT="$IPKG_OFFLINE_ROOT$DEST_NAME";
- else
- echo "ipkg: invalid destination specification: $DEST_NAME
-Valid destinations are directories or one of the dest names from $IPKG_CONF:" >&2
- ipkg_dest_names >&2
- return 1
- fi
- fi
- else
- IPKG_ROOT="`ipkg_dest_default`"
- fi
-
- # Global ipkg state directories
- IPKG_DIR_PREFIX=usr/lib/ipkg
- IPKG_LISTS_DIR=$IPKG_OFFLINE_ROOT/$IPKG_DIR_PREFIX/lists
- IPKG_PENDING_DIR=$IPKG_OFFLINE_ROOT/$IPKG_DIR_PREFIX/pending
- if [ -z "$IPKG_TMP" ]; then
- IPKG_TMP=$IPKG_ROOT/tmp/ipkg
- fi
-
- [ -e "$IPKG_TMP" ] || mkdir -p $IPKG_TMP
-
- # Destination specific ipkg meta-data directory
- IPKG_STATE_DIR=$IPKG_ROOT/$IPKG_DIR_PREFIX
-
- # Proxy Support
- IPKG_PROXY_USERNAME="`ipkg_option proxy_username`"
- IPKG_PROXY_PASSWORD="`ipkg_option proxy_password`"
- IPKG_HTTP_PROXY="`ipkg_option http_proxy`"
- IPKG_FTP_PROXY="`ipkg_option ftp_proxy`"
- IPKG_NO_PROXY="`ipkg_option no_proxy`"
- if [ -n "$IPKG_HTTP_PROXY" ]; then
- export http_proxy="$IPKG_HTTP_PROXY"
- fi
-
- if [ -n "$IPKG_FTP_PROXY" ]; then
- export ftp_proxy="$IPKG_FTP_PROXY"
- fi
-
- if [ -n "$IPKG_NO_PROXY" ]; then
- export no_proxy="$IPKG_NO_PROXY"
- fi
-
- IPKG_STATUS_FIELDS='\(Package\|Status\|Essential\|Version\|Conffiles\|Root\)'
-}
-
-ipkg_usage() {
- [ $# -gt 0 ] && echo "ipkg: $*"
- echo "
-usage: ipkg [options...] sub-command [arguments...]
-where sub-command is one of:
-
-Package Manipulation:
- update Update list of available packages
- upgrade Upgrade all installed packages to latest version
- install <pkg> Download and install <pkg> (and dependencies)
- install <file.ipk> Install package <file.ipk>
- install <file.deb> Install package <file.deb>
- remove <pkg> Remove package <pkg>
-
-Informational Commands:
- list List available packages and descriptions
- files <pkg> List all files belonging to <pkg>
- search <file> Search for a packaging providing <file>
- info [pkg [<field>]] Display all/some info fields for <pkg> or all
- status [pkg [<field>]] Display all/some status fields for <pkg> or all
- depends <pkg> Print uninstalled package dependencies for <pkg>
-
-Options:
- -d <dest_name> Use <dest_name> as the the root directory for
- -dest <dest_name> package installation, removal, upgrading.
- <dest_name> should be a defined dest name from the
- configuration file, (but can also be a directory
- name in a pinch).
- -o <offline_root> Use <offline_root> as the root for offline installation.
- -offline <offline_root>
-
-Force Options (use when ipkg is too smart for its own good):
- -force-depends Make dependency checks warnings instead of errors
- -force-defaults Use default options for questions asked by ipkg.
- (no prompts). Note that this will not prevent
- package installation scripts from prompting.
-" >&2
- exit 1
-}
-
-ipkg_dir_part() {
- local dir="`echo $1 | sed -ne 's/\(.*\/\).*/\1/p'`"
- if [ -z "$dir" ]; then
- dir="./"
- fi
- echo $dir
-}
-
-ipkg_file_part() {
- echo $1 | sed 's/.*\///'
-}
-
-ipkg_protect_slashes() {
- sed -e 's/\//\\\//g'
-}
-
-ipkg_download() {
- local src="$1"
- local dest="$2"
-
- local src_file="`ipkg_file_part $src`"
- local dest_dir="`ipkg_dir_part $dest`"
- if [ -z "$dest_dir" ]; then
- dest_dir="$IPKG_TMP"
- fi
-
- local dest_file="`ipkg_file_part $dest`"
- if [ -z "$dest_file" ]; then
- dest_file="$src_file"
- fi
-
- # Proxy support
- local proxyuser=""
- local proxypassword=""
- local proxyoption=""
-
- if [ -n "$IPKG_PROXY_USERNAME" ]; then
- proxyuser="--proxy-user=\"$IPKG_PROXY_USERNAME\""
- proxypassword="--proxy-passwd=\"$IPKG_PROXY_PASSWORD\""
- fi
-
- if [ -n "$IPKG_PROXY_HTTP" -o -n "$IPKG_PROXY_FTP" ]; then
- proxyoption="--proxy=on"
- fi
-
- echo "Downloading $src ..."
- rm -f $IPKG_TMP/$src_file
- case "$src" in
- http://* | ftp://*)
- if ! wget --passive-ftp $proxyoption $proxyuser $proxypassword -P $IPKG_TMP $src; then
- echo "ipkg_download: ERROR: Failed to retrieve $src, returning $err"
- return 1
- fi
- mv $IPKG_TMP/$src_file $dest_dir/$dest_file 2>/dev/null
- ;;
- file:/* )
- ln -s `echo $src | sed 's/^file://'` $dest_dir/$dest_file 2>/dev/null
- ;;
- *)
- echo "DEBUG: $src"
- ;;
- esac
-
- echo "Done."
- return 0
-}
-
-ipkg_update() {
- if [ ! -e "$IPKG_LISTS_DIR" ]; then
- mkdir -p $IPKG_LISTS_DIR
- fi
-
- local err=
- for src_name in `ipkg_src_names`; do
- local src="`ipkg_src_byname $src_name`"
- if ! ipkg_download $src/Packages $IPKG_LISTS_DIR/$src_name; then
- echo "ipkg_update: Error downloading $src/Packages to $IPKG_LISTS_DIR/$src_name" >&2
- err=t
- else
- echo "Updated list of available packages in $IPKG_LISTS_DIR/$src_name"
- fi
- done
-
- [ -n "$err" ] && return 1
-
- return 0
-}
-
-ipkg_list() {
- for src in `ipkg_src_names`; do
- if ipkg_require_list $src; then
-# black magic...
-sed -ne "
-/^Package:/{
-s/^Package:[[:space:]]*\<\([a-z0-9.+-]*$1[a-z0-9.+-]*\).*/\1/
-h
-}
-/^Description:/{
-s/^Description:[[:space:]]*\(.*\)/\1/
-H
-g
-s/\\
-/ - /
-p
-}
-" $IPKG_LISTS_DIR/$src
- fi
- done
-}
-
-ipkg_extract_paragraph() {
- local pkg="$1"
- sed -ne "/Package:[[:space:]]*$pkg[[:space:]]*\$/,/^\$/p"
-}
-
-ipkg_extract_field() {
- local field="$1"
-# blacker magic...
- sed -ne "
-: TOP
-/^$field:/{
-p
-n
-b FIELD
-}
-d
-: FIELD
-/^$/b TOP
-/^[^[:space:]]/b TOP
-p
-n
-b FIELD
-"
-}
-
-ipkg_extract_value() {
- sed -e "s/^[^:]*:[[:space:]]*//"
-}
-
-ipkg_require_list() {
- [ $# -lt 1 ] && return 1
- local src="$1"
- if [ ! -f "$IPKG_LISTS_DIR/$src" ]; then
- echo "ERROR: File not found: $IPKG_LISTS_DIR/$src" >&2
- echo " You probably want to run \`ipkg update'" >&2
- return 1
- fi
- return 0
-}
-
-ipkg_info() {
- for src in `ipkg_src_names`; do
- if ipkg_require_list $src; then
- case $# in
- 0)
- cat $IPKG_LISTS_DIR/$src
- ;;
- 1)
- ipkg_extract_paragraph $1 < $IPKG_LISTS_DIR/$src
- ;;
- *)
- ipkg_extract_paragraph $1 < $IPKG_LISTS_DIR/$src | ipkg_extract_field $2
- ;;
- esac
- fi
- done
-}
-
-ipkg_status_sd() {
- [ $# -lt 1 ] && return 0
- sd="$1"
- shift
- if [ -f $sd/status ]; then
- case $# in
- 0)
- cat $sd/status
- ;;
- 1)
- ipkg_extract_paragraph $1 < $sd/status
- ;;
- *)
- ipkg_extract_paragraph $1 < $sd/status | ipkg_extract_field $2
- ;;
- esac
- fi
- return 0
-}
-
-ipkg_status_all() {
- for sd in `ipkg_state_dirs`; do
- ipkg_status_sd $sd $*
- done
-}
-
-ipkg_status() {
- if [ -n "$DEST_NAME" ]; then
- ipkg_status_sd $IPKG_STATE_DIR $*
- else
- ipkg_status_all $*
- fi
-}
-
-ipkg_status_matching_sd() {
- local sd="$1"
- local re="$2"
- if [ -f $sd/status ]; then
- sed -ne "
-: TOP
-/^Package:/{
-s/^Package:[[:space:]]*//
-s/[[:space:]]*$//
-h
-}
-/$re/{
-g
-p
-b NEXT
-}
-d
-: NEXT
-/^$/b TOP
-n
-b NEXT
-" < $sd/status
- fi
- return 0
-}
-
-ipkg_status_matching_all() {
- for sd in `ipkg_state_dirs`; do
- ipkg_status_matching_sd $sd $*
- done
-}
-
-ipkg_status_matching() {
- if [ -n "$DEST_NAME" ]; then
- ipkg_status_matching_sd $IPKG_STATE_DIR $*
- else
- ipkg_status_matching_all $*
- fi
-}
-
-ipkg_status_installed_sd() {
- local sd="$1"
- local pkg="$2"
- ipkg_status_sd $sd $pkg Status | grep -q "Status: install ok installed"
-}
-
-ipkg_status_installed_all() {
- local ret=1
- for sd in `ipkg_state_dirs`; do
- if `ipkg_status_installed_sd $sd $*`; then
- ret=0
- fi
- done
- return $ret
-}
-
-ipkg_status_mentioned_sd() {
- local sd="$1"
- local pkg="$2"
- [ -n "`ipkg_status_sd $sd $pkg Status`" ]
-}
-
-ipkg_files() {
- local pkg="$1"
- if [ -n "$DEST_NAME" ]; then
- dests=$IPKG_ROOT
- else
- dests="`ipkg_dests_all`"
- fi
- for dest in $dests; do
- if [ -f $dest/$IPKG_DIR_PREFIX/info/$pkg.list ]; then
- dest_sed="`echo $dest | ipkg_protect_slashes`"
- sed -e "s/^/$dest_sed/" < $dest/$IPKG_DIR_PREFIX/info/$pkg.list
- fi
- done
-}
-
-ipkg_search() {
- local pattern="$1"
-
- for dest_name in `ipkg_dest_names`; do
- dest="`ipkg_dest_byname $dest_name`"
- dest_sed="`echo $dest | ipkg_protect_slashes`"
-
- set +o noglob
- local list_files="`ls -1 $dest/$IPKG_DIR_PREFIX/info/*.list 2>/dev/null`"
- set -o noglob
- for file in $list_files; do
- if sed "s/^/$dest_sed/" $file | grep -q $pattern; then
- local pkg="`echo $file | sed "s/^.*\/\(.*\)\.list/\1/"`"
- [ "$dest_name" != `ipkg_dest_default_name` ] && pkg="$pkg ($dest_name)"
- sed "s/^/$dest_sed/" $file | grep $pattern | sed "s/^/$pkg: /"
- fi
- done
- done
-}
-
-ipkg_status_remove_sd() {
- local sd="$1"
- local pkg="$2"
-
- if [ ! -f $sd/status ]; then
- mkdir -p $sd
- touch $sd/status
- fi
- sed -ne "/Package:[[:space:]]*$pkg[[:space:]]*\$/,/^\$/!p" < $sd/status > $sd/status.new
- mv $sd/status.new $sd/status
-}
-
-ipkg_status_remove_all() {
- for sd in `ipkg_state_dirs`; do
- ipkg_status_remove_sd $sd $*
- done
-}
-
-ipkg_status_remove() {
- if [ -n "$DEST_NAME" ]; then
- ipkg_status_remove_sd $IPKG_STATE_DIR $*
- else
- ipkg_status_remove_all $*
- fi
-}
-
-ipkg_status_update_sd() {
- local sd="$1"
- local pkg="$2"
-
- ipkg_status_remove_sd $sd $pkg
- ipkg_extract_field "$IPKG_STATUS_FIELDS" >> $sd/status
- echo "" >> $sd/status
-}
-
-ipkg_status_update() {
- ipkg_status_update_sd $IPKG_STATE_DIR $*
-}
-
-ipkg_unsatisfied_dependences() {
- local pkg=$1
- local deps="`ipkg_get_depends $pkg`"
- local remaining_deps=
- for dep in $deps; do
- local installed="`ipkg_get_installed $dep`"
- if [ "$installed" != "installed" ] ; then
- remaining_deps="$remaining_deps $dep"
- fi
- done
- ## echo "ipkg_unsatisfied_dependences pkg=$pkg $remaining_deps" > /dev/console
- echo $remaining_deps
-}
-
-ipkg_safe_pkg_name() {
- local pkg=$1
- local spkg="`echo pkg_$pkg | sed -e y/-+./___/`"
- echo $spkg
-}
-
-ipkg_set_depends() {
- local pkg=$1; shift
- local new_deps="$*"
- pkg="`ipkg_safe_pkg_name $pkg`"
- ## setvar ${pkg}_depends "$new_deps"
- echo $new_deps > $IPKG_TMP/${pkg}.depends
-}
-
-ipkg_get_depends() {
- local pkg=$1
- pkg="`ipkg_safe_pkg_name $pkg`"
- cat $IPKG_TMP/${pkg}.depends
- ## eval "echo \$${pkg}_depends"
-}
-
-ipkg_set_installed() {
- local pkg=$1
- pkg="`ipkg_safe_pkg_name $pkg`"
- echo installed > $IPKG_TMP/${pkg}.installed
- ## setvar ${pkg}_installed "installed"
-}
-
-ipkg_set_uninstalled() {
- local pkg=$1
- pkg="`ipkg_safe_pkg_name $pkg`"
- ### echo ipkg_set_uninstalled $pkg > /dev/console
- echo uninstalled > $IPKG_TMP/${pkg}.installed
- ## setvar ${pkg}_installed "uninstalled"
-}
-
-ipkg_get_installed() {
- local pkg=$1
- pkg="`ipkg_safe_pkg_name $pkg`"
- if [ -f $IPKG_TMP/${pkg}.installed ]; then
- cat $IPKG_TMP/${pkg}.installed
- fi
- ## eval "echo \$${pkg}_installed"
-}
-
-ipkg_depends() {
- local new_pkgs="$*"
- local all_deps=
- local installed_pkgs="`ipkg_status_matching_all 'Status:.*[[:space:]]installed'`"
- for pkg in $installed_pkgs; do
- ipkg_set_installed $pkg
- done
- while [ -n "$new_pkgs" ]; do
- all_deps="$all_deps $new_pkgs"
- local new_deps=
- for pkg in $new_pkgs; do
- if echo $pkg | grep -q '[^a-z0-9.+-]'; then
- echo "ipkg_depends: ERROR: Package name $pkg contains illegal characters (should be [a-z0-9.+-])" >&2
- return 1
- fi
- # TODO: Fix this. For now I am ignoring versions and alternations in dependencies.
- new_deps="$new_deps "`ipkg_info $pkg '\(Pre-\)\?Depends' | ipkg_extract_value | sed -e 's/([^)]*)//g
-s/\(|[[:space:]]*[a-z0-9.+-]\+[[:space:]]*\)\+//g
-s/,/ /g
-s/ \+/ /g'`
- ipkg_set_depends $pkg $new_deps
- done
-
- new_deps=`echo $new_deps | sed -e 's/[[:space:]]\+/\n/g' | sort | uniq`
-
- local maybe_new_pkgs=
- for pkg in $new_deps; do
- if ! echo $installed_pkgs | grep -q "\<$pkg\>"; then
- maybe_new_pkgs="$maybe_new_pkgs $pkg"
- fi
- done
-
- new_pkgs=
- for pkg in $maybe_new_pkgs; do
- if ! echo $all_deps | grep -q "\<$pkg\>"; then
- if [ -z "`ipkg_info $pkg`" ]; then
- echo "ipkg_depends: Warning: $pkg mentioned in dependency but no package found in $IPKG_LISTS_DIR" >&2
- ipkg_set_installed $pkg
- else
- new_pkgs="$new_pkgs $pkg"
- ipkg_set_uninstalled $pkg
- fi
- else
- ipkg_set_uninstalled $pkg
- fi
- done
- done
-
- echo $all_deps
-}
-
-ipkg_get_install_dest() {
- local dest="$1"
- shift
- local sd=$dest/$IPKG_DIR_PREFIX
- local info_dir=$sd/info
-
- local requested_pkgs="$*"
- local pkgs="`ipkg_depends $*`"
-
- mkdir -p $info_dir
- for pkg in $pkgs; do
- if ! ipkg_status_mentioned_sd $sd $pkg; then
- echo "Package: $pkg
-Status: install ok not-installed" | ipkg_status_update_sd $sd $pkg
- fi
- done
- ## mark the packages that we were directly requested to install as uninstalled
- for pkg in $requested_pkgs; do ipkg_set_uninstalled $pkg; done
-
- local new_pkgs=
- local pkgs_installed=0
- while [ -n "pkgs" ]; do
- curcheck=0
- ## echo "pkgs to install: {$pkgs}" > /dev/console
- for pkg in $pkgs; do
- curcheck="`expr $curcheck + 1`"
- local is_installed="`ipkg_get_installed $pkg`"
- if [ "$is_installed" = "installed" ]; then
- echo "$pkg is installed" > /dev/console
- continue
- fi
-
- local remaining_deps="`ipkg_unsatisfied_dependences $pkg`"
- if [ -n "$remaining_deps" ]; then
- new_pkgs="$new_pkgs $pkg"
- ### echo "Dependences not satisfied for $pkg: $remaining_deps"
- if [ $curcheck -ne `echo $pkgs|wc -w` ]; then
- continue
- fi
- fi
-
- local filename=
- for src in `ipkg_src_names`; do
- if ipkg_require_list $src; then
- filename="`ipkg_extract_paragraph $pkg < $IPKG_LISTS_DIR/$src | ipkg_extract_field Filename | ipkg_extract_value`"
- [ -n "$filename" ] && break
- fi
- done
-
- if [ -z "$filename" ]; then
- echo "ipkg_get_install: ERROR: Cannot find package $pkg in $IPKG_LISTS_DIR"
- echo "ipkg_get_install: Check the spelling and maybe run \`ipkg update'."
- ipkg_status_remove_sd $sd $pkg
- return 1;
- fi
-
- echo ""
- local tmp_pkg_file="$IPKG_TMP/"`ipkg_file_part $filename`
- if ! ipkg_download `ipkg_src_byname $src`/$filename $tmp_pkg_file; then
- echo "ipkg_get_install: Perhaps you need to run \`ipkg update'?"
- return 1
- fi
-
- if ! ipkg_install_file_dest $dest $tmp_pkg_file; then
- echo "ipkg_get_install: ERROR: Failed to install $tmp_pkg_file"
- echo "ipkg_get_install: I'll leave it there for you to try a manual installation"
- return 1
- fi
-
- ipkg_set_installed $pkg
- pkgs_installed="`expr $pkgs_installed + 1`"
- rm $tmp_pkg_file
- done
- ### echo "Installed $pkgs_installed package(s) this round"
- if [ $pkgs_installed -eq 0 ]; then
- if [ -z "$new_pkgs" ]; then
- break
- fi
- fi
- pkgs_installed=0
- pkgs="$new_pkgs"
- new_pkgs=
- curcheck=0
- done
-}
-
-ipkg_get_install() {
- ipkg_get_install_dest $IPKG_ROOT $*
-}
-
-ipkg_install_file_dest() {
- local dest="$1"
- local filename="$2"
- local sd=$dest/$IPKG_DIR_PREFIX
- local info_dir=$sd/info
-
- if [ ! -f "$filename" ]; then
- echo "ipkg_install_file: ERROR: File $filename not found"
- return 1
- fi
-
- local pkg="`ipkg_file_part $filename | sed 's/\([a-z0-9.+-]\+\)_.*/\1/'`"
- local ext="`echo $filename | sed 's/.*\.//'`"
- local pkg_extract_stdout
- if [ "$ext" = "ipk" ]; then
- pkg_extract_stdout="tar -xzOf"
- elif [ "$ext" = "deb" ]; then
- pkg_extract_stdout="ar p"
- else
- echo "ipkg_install_file: ERROR: File $filename has unknown extension $ext (not .ipk or .deb)"
- return 1
- fi
-
- # Check dependencies
- local depends="`ipkg_depends $pkg | sed -e "s/\<$pkg\>//"`"
-
- # Don't worry about deps that are scheduled for installation
- local missing_deps=
- for dep in $depends; do
- if ! ipkg_status_all $dep | grep -q 'Status:[[:space:]]install'; then
- missing_deps="$missing_deps $dep"
- fi
- done
-
- if [ ! -z "$missing_deps" ]; then
- if [ -n "$FORCE_DEPENDS" ]; then
- echo "ipkg_install_file: Warning: $pkg depends on the following uninstalled programs: $missing_deps"
- else
- echo "ipkg_install_file: ERROR: $pkg depends on the following uninstalled programs:
- $missing_deps"
- echo "ipkg_install_file: You may want to use \`ipkg install' to install these."
- return 1
- fi
- fi
-
- mkdir -p $IPKG_TMP/$pkg/control
- mkdir -p $IPKG_TMP/$pkg/data
- mkdir -p $info_dir
-
- if ! $pkg_extract_stdout $filename ./control.tar.gz | (cd $IPKG_TMP/$pkg/control; tar -xzf - ) ; then
- echo "ipkg_install_file: ERROR unpacking control.tar.gz from $filename"
- return 1
- fi
-
- if [ -n "$IPKG_OFFLINE_ROOT" ]; then
- if grep -q '^InstallsOffline:[[:space:]]*no' $IPKG_TMP/$pkg/control/control; then
- echo "*** Warning: Package $pkg may not be installed in offline mode"
- echo "*** Warning: Scheduling $filename for pending installation (installing into $IPKG_PENDING_DIR)"
- echo "Package: $pkg
-Status: install ok pending" | ipkg_status_update_sd $sd $pkg
- mkdir -p $IPKG_PENDING_DIR
- cp -f $filename $IPKG_PENDING_DIR
- rm -r $IPKG_TMP/$pkg/control
- rm -r $IPKG_TMP/$pkg/data
- rmdir $IPKG_TMP/$pkg
- return 0
- fi
- fi
-
-
- echo -n "Unpacking $pkg..."
- set +o noglob
- for file in $IPKG_TMP/$pkg/control/*; do
- local base_file="`ipkg_file_part $file`"
- mv $file $info_dir/$pkg.$base_file
- done
- set -o noglob
- rm -r $IPKG_TMP/$pkg/control
-
- if ! $pkg_extract_stdout $filename ./data.tar.gz | (cd $IPKG_TMP/$pkg/data; tar -xzf - ) ; then
- echo "ipkg_install_file: ERROR unpacking data.tar.gz from $filename"
- return 1
- fi
- echo "Done."
-
- echo -n "Configuring $pkg..."
- export PKG_ROOT=$dest
- if [ -x "$info_dir/$pkg.preinst" ]; then
- if ! $info_dir/$pkg.preinst install; then
- echo "$info_dir/$pkg.preinst failed. Aborting installation of $pkg"
- rm -rf $IPKG_TMP/$pkg/data
- rmdir $IPKG_TMP/$pkg
- return 1
- fi
- fi
-
- local old_conffiles="`ipkg_status_sd $sd $pkg Conffiles | ipkg_extract_value`"
- local new_conffiles=
- if [ -f "$info_dir/$pkg.conffiles" ]; then
- for conffile in `cat $info_dir/$pkg.conffiles`; do
- if [ -f "$dest/$conffile" ] && ! echo " $old_conffiles " | grep -q " $conffile "`md5sum $dest/$conffile | sed 's/ .*//'`; then
- local use_maintainers_conffile=
- if [ -z "$FORCE_DEFAULTS" ]; then
- while true; do
- echo -n "Configuration file \`$conffile'
- ==> File on system created by you or by a script.
- ==> File also in package provided by package maintainer.
- What would you like to do about it ? Your options are:
- Y or I : install the package maintainer's version
- N or O : keep your currently-installed version
- D : show the differences between the versions (if diff is installed)
- The default action is to keep your current version.
-*** `ipkg_file_part $conffile` (Y/I/N/O/D) [default=N] ? "
- read response
- case "$response" in
- [YyIi] | [Yy][Ee][Ss])
- use_maintainers_conffile=t
- break
- ;;
- [Dd])
- echo "
-diff -u $dest/$conffile $IPKG_TMP/$pkg/data/$conffile"
- diff -u $dest/$conffile $IPKG_TMP/$pkg/data/$conffile || true
- echo "[Press ENTER to continue]"
- read junk
- ;;
- *)
- break
- ;;
- esac
- done
- fi
- if [ -n "$use_maintainers_conffile" ]; then
- local md5sum="`md5sum $IPKG_TMP/$pkg/data/$conffile | sed 's/ .*//'`"
- new_conffiles="$new_conffiles $conffile $md5sum"
- else
- new_conffiles="$new_conffiles $conffile <custom>"
- rm $IPKG_TMP/$pkg/data/$conffile
- fi
- else
- md5sum="`md5sum $IPKG_TMP/$pkg/data/$conffile | sed 's/ .*//'`"
- new_conffiles="$new_conffiles $conffile $md5sum"
- fi
- done
- fi
-
- local owd="`pwd`"
- (cd $IPKG_TMP/$pkg/data/; tar cf - . | (cd $owd; cd $dest; tar xf -))
- rm -rf $IPKG_TMP/$pkg/data
- rmdir $IPKG_TMP/$pkg
- rm -f $info_dir/$pkg.list
- $pkg_extract_stdout $filename ./data.tar.gz | tar tzf - | sed -e 's/^\.//' > $info_dir/$pkg.list
-
- if [ -x "$info_dir/$pkg.postinst" ]; then
- $info_dir/$pkg.postinst configure
- fi
-
- if [ -n "$new_conffiles" ]; then
- new_conffiles='Conffiles: '`echo $new_conffiles | ipkg_protect_slashes`
- fi
- local sed_safe_offline_root="`echo ${IPKG_OFFLINE_ROOT} | ipkg_protect_slashes`"
- local sed_safe_root="`echo $dest | sed -e "s/^${sed_safe_offline_root}//" | ipkg_protect_slashes`"
- sed -e "s/\(Package:.*\)/\1\\
-Status: install ok installed\\
-Root: ${sed_safe_root}\\
-${new_conffiles}/" $info_dir/$pkg.control | ipkg_status_update_sd $sd $pkg
-
- rm -f $info_dir/$pkg.control
- rm -f $info_dir/$pkg.conffiles
- rm -f $info_dir/$pkg.preinst
- rm -f $info_dir/$pkg.postinst
-
- echo "Done."
-}
-
-ipkg_install_file() {
- ipkg_install_file_dest $IPKG_ROOT $*
-}
-
-ipkg_install() {
-
- while [ $# -gt 0 ]; do
- local pkg="$1"
- shift
-
- case "$pkg" in
- http://* | ftp://*)
- local tmp_pkg_file="$IPKG_TMP/"`ipkg_file_part $pkg`
- if ipkg_download $pkg $tmp_pkg_file; then
- ipkg_install_file $tmp_pkg_file
- rm $tmp_pkg_file
- fi
- ;;
- file:/*.ipk | file://*.deb)
- local ipkg_filename="`echo $pkg|sed 's/^file://'`"
- ipkg_install_file $ipkg_filename
- ;;
- *.ipk | *.deb)
- ipkg_install_file $pkg
- ;;
- *)
- ipkg_get_install $pkg || true
- ;;
- esac
- done
-}
-
-ipkg_install_pending() {
- [ -n "$IPKG_OFFLINE_ROOT" ] && return 0
-
- if [ -d "$IPKG_PENDING_DIR" ]; then
- set +o noglob
- local pending="`ls -1d $IPKG_PENDING_DIR/*.ipk 2> /dev/null`" || true
- set -o noglob
- if [ -n "$pending" ]; then
- echo "The following packages in $IPKG_PENDING_DIR will now be installed:"
- echo $pending
- for filename in $pending; do
- if ipkg_install_file $filename; then
- rm $filename
- fi
- done
- fi
- fi
- return 0
-}
-
-ipkg_install_wanted() {
- local wanted="`ipkg_status_matching 'Status:[[:space:]]*install.*not-installed'`"
-
- if [ -n "$wanted" ]; then
- echo "The following package were previously requested but have not been installed:"
- echo $wanted
-
- if [ -n "$FORCE_DEFAULTS" ]; then
- echo "Installing them now."
- else
- echo -n "Install them now [Y/n] ? "
- read response
- case "$response" in
- [Nn] | [Nn][Oo])
- return 0
- ;;
- esac
- fi
-
- ipkg_install $wanted
- fi
-
- return 0
-}
-
-ipkg_upgrade_pkg() {
- local pkg="$1"
- local avail_ver="`ipkg_info $pkg Version | ipkg_extract_value | head -n 1`"
-
- is_installed=
- for dest_name in `ipkg_dest_names`; do
- local dest="`ipkg_dest_byname $dest_name`"
- local sd=$dest/$IPKG_DIR_PREFIX
- local inst_ver="`ipkg_status_sd $sd $pkg Version | ipkg_extract_value`"
- if [ -n "$inst_ver" ]; then
- is_installed=t
-
- if [ -z "$avail_ver" ]; then
- echo "Assuming locally installed package $pkg ($inst_ver) is up to date"
- return 0
- fi
-
- if [ "$avail_ver" = "$inst_ver" ]; then
- echo "Package $pkg ($inst_ver) installed in $dest_name is up to date"
- elif ipkg_is_upgrade "$avail_ver" "$inst_ver"; then
- echo "Upgrading $pkg ($dest_name) from $inst_ver to $avail_ver"
- ipkg_get_install_dest $dest $pkg
- else
- echo "Not downgrading package $pkg from $inst_ver to $avail_ver"
- fi
- fi
- done
-
- if [ -z "$is_installed" ]; then
- echo "Package $pkg does not appear to be installed"
- return 0
- fi
-
-}
-
-ipkg_upgrade() {
- if [ $# -lt 1 ]; then
- local pkgs="`ipkg_status_matching 'Status:.*[[:space:]]installed'`"
- else
- pkgs="$*"
- fi
-
- for pkg in $pkgs; do
- ipkg_upgrade_pkg $pkg
- done
-}
-
-ipkg_remove_pkg_dest() {
- local dest="$1"
- local pkg="$2"
- local sd=$dest/$IPKG_DIR_PREFIX
- local info_dir=$sd/info
-
- if ! ipkg_status_installed_sd $sd $pkg; then
- echo "ipkg_remove: Package $pkg does not appear to be installed in $dest"
- if ipkg_status_mentioned_sd $sd $pkg; then
- echo "Purging mention of $pkg from the ipkg database"
- ipkg_status_remove_sd $sd $pkg
- fi
- return 1
- fi
-
- echo "ipkg_remove: Removing $pkg... "
-
- local files="`cat $info_dir/$pkg.list`"
-
- export PKG_ROOT=$dest
- if [ -x "$info_dir/$pkg.prerm" ]; then
- $info_dir/$pkg.prerm remove
- fi
-
- local conffiles="`ipkg_status_sd $sd $pkg Conffiles | ipkg_extract_value`"
-
- local dirs_to_remove=
- for file in $files; do
- if [ -d "$dest/$file" ]; then
- dirs_to_remove="$dirs_to_remove $dest/$file"
- else
- if echo " $conffiles " | grep -q " $file "; then
- if echo " $conffiles " | grep -q " $file "`md5sum $dest/$file | sed 's/ .*//'`; then
- rm -f $dest/$file
- fi
- else
- rm -f $dest/$file
- fi
- fi
- done
-
- local removed_a_dir=t
- while [ -n "$removed_a_dir" ]; do
- removed_a_dir=
- local new_dirs_to_remove=
- for dir in $dirs_to_remove; do
- if rmdir $dir >/dev/null 2>&1; then
- removed_a_dir=t
- else
- new_dirs_to_remove="$new_dirs_to_remove $dir"
- fi
- done
- dirs_to_remove="$new_dirs_to_remove"
- done
-
- if [ -n "$dirs_to_remove" ]; then
- echo "ipkg_remove: Warning: Not removing the following directories since they are not empty:" >&2
- echo "$dirs_to_remove" | sed -e 's/\/[/]\+/\//g' >&2
- fi
-
- if [ -x "$info_dir/$pkg.postrm" ]; then
- $info_dir/$pkg.postrm remove
- fi
-
- ipkg_status_remove_sd $sd $pkg
- set +o noglob
- rm -f $info_dir/$pkg.*
- set -o noglob
-
- echo "Done."
-}
-
-ipkg_remove_pkg() {
- local pkg="$1"
- for dest in `ipkg_dests_all`; do
- local sd=$dest/$IPKG_DIR_PREFIX
- if ipkg_status_mentioned_sd $sd $pkg; then
- ipkg_remove_pkg_dest $dest $pkg
- fi
- done
-}
-
-ipkg_remove() {
- while [ $# -gt 0 ]; do
- local pkg="$1"
- shift
- if [ -n "$DEST_NAME" ]; then
- ipkg_remove_pkg_dest $IPKG_ROOT $pkg
- else
- ipkg_remove_pkg $pkg
- fi
- done
-}
-
-###########
-# ipkg main
-###########
-
-# Parse options
-while [ $# -gt 0 ]; do
- arg="$1"
- case $arg in
- -d | -dest)
- [ $# -gt 1 ] || ipkg_usage "option $arg requires an argument"
- DEST_NAME="$2"
- shift
- ;;
- -o | -offline)
- [ $# -gt 1 ] || ipkg_usage "option $arg requires an argument"
- IPKG_OFFLINE_ROOT="$2"
- shift
- ;;
- -force-depends)
- FORCE_DEPENDS=t
- ;;
- -force-defaults)
- FORCE_DEFAULTS=t
- ;;
- -*)
- ipkg_usage "unknown option $arg"
- ;;
- *)
- break
- ;;
- esac
- shift
-done
-
-[ $# -lt 1 ] && ipkg_usage "ipkg must have one sub-command argument"
-cmd="$1"
-shift
-
-ipkg_load_configuration
-mkdir -p /tmp/ipkg
-
-case "$cmd" in
-update|upgrade|list|info|status|install_pending)
- ;;
-install|depends|remove|files|search)
- [ $# -lt 1 ] && ipkg_usage "ERROR: the \`\`$cmd'' command requires an argument"
- ;;
-*)
- echo "ERROR: unknown sub-command \`$cmd'"
- ipkg_usage
- ;;
-esac
-
-# Only install pending if we have an interactive sub-command
-case "$cmd" in
-upgrade|install)
- ipkg_install_pending
- ipkg_install_wanted
- ;;
-esac
-
-ipkg_$cmd $*
-for a in `ls $IPKG_TMP`; do
- rm -rf $IPKG_TMP/$a
-done
diff --git a/openwrt/scripts/make-ipkg-dir.sh b/openwrt/scripts/make-ipkg-dir.sh
deleted file mode 100755
index 236cb6feb4..0000000000
--- a/openwrt/scripts/make-ipkg-dir.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-BASE=http://svn.openwrt.org/openwrt/trunk/openwrt
-TARGET=$1
-CONTROL=$2
-VERSION=$3
-ARCH=$4
-
-WD=$(pwd)
-
-mkdir -p "$TARGET/CONTROL"
-grep '^[^(Version|Architecture)]' "$CONTROL" > "$TARGET/CONTROL/control"
-grep '^Maintainer' "$CONTROL" 2>&1 >/dev/null || \
- echo "Maintainer: OpenWrt Developers Team <openwrt-devel@openwrt.org>" >> "$TARGET/CONTROL/control"
-grep '^Source' "$CONTROL" 2>&1 >/dev/null || {
- pkgbase=$(echo "$WD" | sed -e "s|^$TOPDIR/||g")
- [ "$pkgbase" = "$WD" ] && src="N/A" || src="$BASE/$pkgbase"
- echo "Source: $src" >> "$TARGET/CONTROL/control"
-}
-echo "Version: $VERSION" >> "$TARGET/CONTROL/control"
-echo "Architecture: $ARCH" >> "$TARGET/CONTROL/control"
-chmod 644 "$TARGET/CONTROL/control"
diff --git a/openwrt/scripts/patch-kernel.sh b/openwrt/scripts/patch-kernel.sh
deleted file mode 100755
index 5455a0cf8d..0000000000
--- a/openwrt/scripts/patch-kernel.sh
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /bin/sh
-# A little script I whipped up to make it easy to
-# patch source trees and have sane error handling
-# -Erik
-#
-# (c) 2002 Erik Andersen <andersen@codepoet.org>
-
-# Set directories from arguments, or use defaults.
-targetdir=${1-.}
-patchdir=${2-../kernel-patches}
-patchpattern=${3-*}
-
-if [ ! -d "${targetdir}" ] ; then
- echo "Aborting. '${targetdir}' is not a directory."
- exit 1
-fi
-if [ ! -d "${patchdir}" ] ; then
- echo "Aborting. '${patchdir}' is not a directory."
- exit 1
-fi
-
-for i in ${patchdir}/${patchpattern} ; do
- case "$i" in
- *.gz)
- type="gzip"; uncomp="gunzip -dc"; ;;
- *.bz)
- type="bzip"; uncomp="bunzip -dc"; ;;
- *.bz2)
- type="bzip2"; uncomp="bunzip2 -dc"; ;;
- *.zip)
- type="zip"; uncomp="unzip -d"; ;;
- *.Z)
- type="compress"; uncomp="uncompress -c"; ;;
- *)
- type="plaintext"; uncomp="cat"; ;;
- esac
- [ -d "${i}" ] && echo "Ignoring subdirectory ${i}" && continue
- echo ""
- echo "Applying ${i} using ${type}: "
- ${uncomp} ${i} | patch -p1 -E -d ${targetdir}
- if [ $? != 0 ] ; then
- echo "Patch failed! Please fix $i!"
- exit 1
- fi
-done
-
-# Check for rejects...
-if [ "`find $targetdir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ] ; then
- echo "Aborting. Reject files found."
- exit 1
-fi
-
-# Remove backup files
-find $targetdir/ '(' -name '*.orig' -o -name '.*.orig' ')' -exec rm -f {} \;
diff --git a/openwrt/scripts/rstrip.sh b/openwrt/scripts/rstrip.sh
deleted file mode 100755
index d9d3ad21b6..0000000000
--- a/openwrt/scripts/rstrip.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-
-SELF=${0##*/}
-
-[ -z "$STRIP" ] && {
- echo "$SELF: strip command not defined (STRIP variable not set)"
- exit 1
-}
-
-TARGETS=$*
-
-[ -z "$TARGETS" ] && {
- echo "$SELF: no directories / files specified"
- echo "usage: $SELF [PATH...]"
- exit 1
-}
-
-find $TARGETS -type f -a -exec file {} \; | \
- sed -n -e 's/^\(.*\):.*ELF.*\(executable\|relocatable\|shared object\).*, not stripped/\1:\2/p' | \
-(
- IFS=":"
- while read F S; do
- echo "$SELF: $F:$S"
- eval "$STRIP $F"
- done
-)
diff --git a/openwrt/target/Config.in b/openwrt/target/Config.in
deleted file mode 100644
index 3d5e01d9ad..0000000000
--- a/openwrt/target/Config.in
+++ /dev/null
@@ -1,140 +0,0 @@
-choice
- prompt "Target System"
- default BR2_LINUX_2_4_BRCM
-
-config BR2_LINUX_2_6_AU1000
- bool "AMD Alchemy 1xxx [2.6]"
- select BR2_mipsel
- select BR2_LINUX_2_6
- select BR2_LINUX_PCMCIA_SUPPORT
- help
- Build firmware for AMD Alchemy 1500 boards
- (e.g. 4G-Systems Mesh/Access Cube ...)
-
-config BR2_LINUX_2_6_ARUBA
- bool "Aruba [2.6]"
- select BR2_mips
- select BR2_LINUX_2_6
- help
- Build firmware images for Aruba boards
-
-config BR2_LINUX_2_4_AR531X
- bool "Atheros AR531x [2.4]"
- select BR2_mips
- help
- Build firmware images for Atheros AR531x based boards
- (e.g. Netgear WGT624, Linksys WRT55AG)
-
-config BR2_LINUX_2_4_BRCM
- bool "Broadcom BCM47xx/53xx [2.4]"
- select BR2_mipsel
- select BR2_LINUX_PCMCIA_SUPPORT
- help
- Build firmware images for Broadcom based routers
- (e.g. Linksys WRT54G(S), Asus WL-500g, Motorola WR850G)
-
- This one builds the generic .trx images, activate one of the
- options below for creating device specific files for use
- with TFTP client too.
-
-config BR2_LINUX_2_6_BRCM
- bool "Broadcom BCM47xx/53xx [2.6]"
- select BR2_mipsel
- select BR2_LINUX_2_6
- select BR2_LINUX_PCMCIA_SUPPORT
- help
- Build firmware images for Broadcom based routers
- (e.g. Netgear WGT634u)
-
-config BR2_LINUX_2_6_XSCALE
- bool "Intel XScale IXP42x [2.6]"
- select BR2_armeb
- select BR2_LINUX_2_6
- help
- Build firmware image for Intel Xscale based routers
- (e.g. Gateway 7001 series)
-
-config BR2_LINUX_2_4_AR7
- bool "TI AR7 [2.4]"
- select BR2_mipsel
- help
- Build firmware images for TI AR7 based routers (w.g. Linksys WAG54G v2)
-
-config BR2_LINUX_2_4_X86
- bool "x86 [2.4]"
- select BR2_i386
- select BR2_LINUX_PCMCIA_SUPPORT
- help
- Build firmware images for x86 based boards
- (e.g. Soekris net4521 and net4801, PC Engines WRAP...)
-
-config BR2_LINUX_2_6_X86
- bool "x86 [2.6]"
- select BR2_i386
- select BR2_LINUX_2_6
- select BR2_LINUX_PCMCIA_SUPPORT
- help
- Build firmware images for x86 based boards
- (e.g. Soekris net4521 and net4801, PC Engines WRAP...)
-
-config BR2_LINUX_2_6_SIBYTE
- bool "SiByte [2.6]"
- select BR2_mips
- select BR2_LINUX_2_6
-
-if CONFIG_DEVEL
-
-config BR2_LINUX_2_6_MIPS64
- bool "UNSUPPORTED mips64 platform"
- select BR2_mips64
-
-config BR2_LINUX_2_6_ARM
- bool "UNSUPPORTED little-endian arm platform"
- select BR2_arm
-
-config BR2_LINUX_2_6_CRIS
- bool "UNSUPPORTED cris platform"
- select BR2_cris
-
-config BR2_LINUX_2_6_M68K
- bool "UNSUPPORTED m68k platform"
- select BR2_m68k
-
-config BR2_LINUX_2_6_PPC
- bool "UNSUPPORTED powerpc platform"
- select BR2_powerpc
-
-config BR2_LINUX_2_6_SH3
- bool "UNSUPPORTED little-endian sh3 platform"
- select BR2_sh3
-
-config BR2_LINUX_2_6_SH3EB
- bool "UNSUPPORTED big-endian sh3 platform"
- select BR2_sh3eb
-
-config BR2_LINUX_2_6_SH4
- bool "UNSUPPORTED little-endian sh4 platform"
- select BR2_sh4
-
-config BR2_LINUX_2_6_SH4EB
- bool "UNSUPPORTED big-endian sh4 platform"
- select BR2_sh4eb
-
-config BR2_LINUX_2_6_SPARC
- bool "UNSUPPORTED sparc platform"
- select BR2_sparc
-
-endif
-
-endchoice
-
-config BR2_LINUX_2_6
- bool
- default n
- depends BR2_LINUX_2_6_X86 || BR2_LINUX_2_6_BRCM || BR2_LINUX_2_6_ARUBA
-
-config BR2_LINUX_PCMCIA_SUPPORT
- bool
- default n
- depends BR2_LINUX_2_4_X86 || BR2_LINUX_2_4_BRCM || BR2_LINUX_2_6_X86 || BR2_LINUX_2_6_BRCM
-
diff --git a/openwrt/target/Makefile b/openwrt/target/Makefile
deleted file mode 100644
index 24c34036de..0000000000
--- a/openwrt/target/Makefile
+++ /dev/null
@@ -1,41 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-all: install
-
-$(BIN_DIR):
- mkdir -p $(BIN_DIR)
-
-linux-compile: utils-install lzma-install
-linux-install: $(BIN_DIR)
-
-prepare: linux-prepare
-compile: linux-compile
-install: image_clean linux-install
-clean: linux-clean utils-clean lzma-clean image_clean
-
-image_clean:
- rm -f $(BIN_DIR)/openwrt-*
-
-linux/package/%:
- $(MAKE) -C $(TOPDIR)/target/linux $(patsubst linux/%,%,$@)
-
-%-clean:
- @$(TRACE) target/$(patsubst %-clean,%,$@)-clean
- $(MAKE) -C $(patsubst %-clean,%,$@) clean
-%-prepare:
- @$(TRACE) target/$(patsubst %-prepare,%,$@)-prepare
- $(MAKE) -C $(patsubst %-prepare,%,$@) prepare
-%-compile: %-prepare
- @$(TRACE) target/$(patsubst %-compile,%,$@)-compile
- $(MAKE) -C $(patsubst %-compile,%,$@) compile
-%-rebuild:
- @$(TRACE) target/$(patsubst %-rebuild,%,$@)-rebuild
- $(MAKE) -C $(patsubst %-rebuild,%,$@) rebuild
-%-install: %-compile
- @$(TRACE) target/$(patsubst %-install,%,$@)-install
- $(MAKE) -C $(patsubst %-install,%,$@) install
-linux-imagebuilder:
- @$(TRACE) target/linux/imagebuilder
- $(MAKE) -C linux imagebuilder
-
-
diff --git a/openwrt/target/linux/Config.in b/openwrt/target/linux/Config.in
deleted file mode 100644
index eae8b43e9a..0000000000
--- a/openwrt/target/linux/Config.in
+++ /dev/null
@@ -1,780 +0,0 @@
-menu "Target Root Filesystem"
-
- config BR2_TARGET_ROOTFS_JFFS2
- bool "jffs2"
- default y
- help
- Build a jffs2 root filesystem
-
- config BR2_TARGET_ROOTFS_SQUASHFS_LZMA
- bool "squashfs-lzma"
- default y
- depends !BR2_LINUX_2_6_ARUBA
- depends !BR2_LINUX_2_6_XSCALE
- help
- Build a squashfs-lzma root filesystem
-
- config BR2_TARGET_ROOTFS_TGZ
- bool "tgz"
- default y
- help
- Build a compressed tar archive of the the root filesystem
-
-endmenu
-
-menu "Kernel Configuration / Device Support"
-
-comment "Device specific configuration"
-
-source "target/linux/*-2.[46]/Config.in"
-
-comment "Kernel modules"
-
-menu "Networking modules"
-
-config BR2_PACKAGE_KMOD_ATM
- prompt "kmod-atm.......................... ATM support"
- tristate
- default y if BR2_LINUX_2_4_AR7
- default m
- help
- ATM support
-
-config BR2_PACKAGE_KMOD_GRE
- prompt "kmod-gre.......................... GRE tunneling driver"
- tristate
- default m
- help
- Kernel support for GRE tunnels
-
-config BR2_PACKAGE_KMOD_IMQ
- prompt "kmod-imq.......................... Intermediate Queueing device"
- tristate
- default m
- help
- Kernel support for the Intermediate Queueing device
-
-config BR2_PACKAGE_KMOD_IPIP
- prompt "kmod-ipip......................... IP in IP encapsulation support"
- tristate
- default m
- help
- Kernel module for IP in IP encapsulation
-
-config BR2_PACKAGE_KMOD_IPV6
- prompt "kmod-ipv6......................... IPv6 support"
- tristate
- default m
- help
- Kernel modules for IPv6 protocol support
-
-config BR2_PACKAGE_KMOD_PPP
- prompt "kmod-ppp.......................... PPP support"
- tristate
- default m
- help
- Kernel support for PPP
-
-config BR2_PACKAGE_KMOD_MPPE
- prompt "kmod-mppe....................... PPP MPPE/MPPC module"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_PPP
- select BR2_PACKAGE_KMOD_CRYPTO
- help
- Support for Microsoft PPP Encryption/Compression
-
-config BR2_PACKAGE_KMOD_PPPOATM
- prompt "kmod-pppoatm.................... PPPoA (PPP over ATM) kernel support"
- tristate
- default y if BR2_LINUX_2_4_AR7
- default m
- depends BR2_PACKAGE_KMOD_PPP
- select BR2_PACKAGE_KMOD_ATM
- help
- Support for PPP over ATM
-
-config BR2_PACKAGE_KMOD_PPPOE
- prompt "kmod-pppoe...................... PPPoE (PPP over Ethernet) kernel support"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_PPP
- help
- Support for PPP over Ethernet
-
-config BR2_PACKAGE_KMOD_RING
- prompt "kmod-ring......................... PF Ring"
- tristate
- default m
- help
- PF Ring
-
-config BR2_PACKAGE_KMOD_SCHED
- prompt "kmod-sched........................ Traffic schedulers"
- tristate
- default m
- help
- Kernel schedulers for IP traffic
-
-config BR2_PACKAGE_KMOD_TUN
- prompt "kmod-tun.......................... Universal TUN/TAP driver"
- tristate
- default m
- help
- Kernel support for the TUN/TAP tunneling device
-
-endmenu
-
-menu "Filtering/Firewalling"
-
-config BR2_PACKAGE_KMOD_ARPTABLES
- prompt "kmod-arptables.................... ARP firewalling support"
- tristate
- default m
- help
- Kernel modules for ARP firewalling
-
-config BR2_PACKAGE_KMOD_EBTABLES
- prompt "kmod-ebtables..................... Ethernet Bridge firewalling support"
- tristate
- default m
- help
- Kernel modules for bridge firewalling
-
-config BR2_PACKAGE_KMOD_IPTABLES
- prompt "kmod-iptables..................... Core Netfilter modules for IPv4 firewalling"
- tristate
- default y
- help
- Kernel modules for IPv4 firewalling
-
-config BR2_PACKAGE_KMOD_IPTABLES_EXTRA
- prompt "kmod-iptables-extra............... Extra Netfilter modules for IPv4 firewalling (meta-package)"
- tristate
- default m
- select BR2_PACKAGE_KMOD_IPT_CONNTRACK
- select BR2_PACKAGE_KMOD_IPT_FILTER
- select BR2_PACKAGE_KMOD_IPT_IPOPT
- select BR2_PACKAGE_KMOD_IPT_IPSEC
- select BR2_PACKAGE_KMOD_IPT_NAT
- select BR2_PACKAGE_KMOD_IPT_NAT_EXTRA
- select BR2_PACKAGE_KMOD_IPT_QUEUE
- select BR2_PACKAGE_KMOD_IPT_ULOG
- select BR2_PACKAGE_KMOD_IPT_EXTRA
- help
- Extra Netfilter kernel modules for IPv4 firewalling (meta-package)
-
-config BR2_PACKAGE_KMOD_IPT_CONNTRACK
- prompt "kmod-ipt-conntrack................ Netfilter modules for connection tracking"
- tristate
- default m
- help
- Netfilter (IPv4) kernel modules for connection tracking
-
- Includes:
- * ipt_conntrack
- * ipt_helper
- * ipt_connmark/CONNMARK
-
-config BR2_PACKAGE_KMOD_IPT_FILTER
- prompt "kmod-ipt-filter................... Netfilter modules for packet content inspection"
- tristate
- default m
- help
- Netfilter (IPv4) kernel modules for packet content inspection
-
- Includes:
- * ipt_ipp2p
- * ipt_layer7
-
-config BR2_PACKAGE_KMOD_IPT_IPOPT
- prompt "kmod-ipt-ipopt.................... Netfilter modules for matching/changing IP packet options"
- tristate
- default m
- help
- Netfilter (IPv4) kernel modules for matching/changing IP packet options
-
- Includes:
- * ipt_dscp/DSCP
- * ipt_ecn/ECN
- * ipt_length
- * ipt_mac
- * ipt_tos/TOS
- * ipt_tcpmms
- * ipt_ttl/TTL
- * ipt_unclean
-
-config BR2_PACKAGE_KMOD_IPT_IPSEC
- prompt "kmod-ipt-ipsec.................... Netfilter modules for matching IPsec packets"
- tristate
- default m
- help
- Netfilter (IPv4) kernel modules for matching IPsec packets
-
- Includes:
- * ipt_ah
- * ipt_esp
-
-config BR2_PACKAGE_KMOD_IPT_NAT
- prompt "kmod-ipt-nat...................... Netfilter modules for different NAT targets"
- tristate
- default m
- help
- Netfilter (IPv4) kernel modules for different NAT targets
-
- Includes:
- * ipt_REDIRECT
-
-config BR2_PACKAGE_KMOD_IPT_NAT_EXTRA
- prompt "kmod-ipt-nat-extra................ Extra Netfilter NAT modules for special protocols"
- tristate
- default m
- help
- Extra Netfilter (IPv4) NAT kernel modules for special protocols
-
- Includes:
- * ip_conntrack_amanda
- * ip_conntrack_proto_gre
- * ip_nat_proto_gre
- * ip_conntrack_pptp
- * ip_nat_pptp
- * ip_conntrack_sip
- * ip_nat_sip
- * ip_nat_snmp_basic
- * ip_conntrack_tftp
-
-config BR2_PACKAGE_KMOD_IPT_QUEUE
- prompt "kmod-ipt-queue.................... Netfilter module for user-space packet queueing"
- tristate
- default m
- help
- Netfilter (IPv4) module for user-space packet queueing
-
- Includes:
- * ipt_QUEUE
-
-config BR2_PACKAGE_KMOD_IPT_ULOG
- prompt "kmod-ipt-ulog..................... Netfilter module for user-space packet logging"
- tristate
- default m
- help
- Netfilter (IPv4) module for user-space packet logging
-
- Includes:
- * ipt_ULOG
-
-config BR2_PACKAGE_KMOD_IPT_EXTRA
- prompt "kmod-ipt-extra.................... Other extra Netfilter modules"
- tristate
- default m
- help
- Other extra Netfilter (IPv4) kernel modules
-
- Includes:
- * ipt_limit
- * ipt_owner
- * ipt_physdev
- * ipt_pkttype
- * ipt_recent
-
-config BR2_PACKAGE_KMOD_IP6TABLES
- prompt "kmod-ip6tables.................... Kernel modules for ip6tables"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_IPV6
- help
- IPv6 firewalling support
-
-endmenu
-
-menu "Block devices support"
-
-config BR2_PACKAGE_KMOD_IDE
- prompt "kmod-ide.......................... IDE support"
- tristate
- default m
- depends BR2_LINUX_2_4_X86 || BR2_LINUX_2_6_X86 || BR2_LINUX_2_4_BRCM || BR2_LINUX_2_6_BRCM
- help
- Kernel modules for IDE support
- useful for usb mass storage devices (e.g. on WL-HDD)
-
- Includes:
- - ide-core
- - ide-detect
- - ide-disk
- - pdc202xx_old
-
-config BR2_PACKAGE_KMOD_LOOP
- prompt "kmod-loop......................... Loop mount support"
- tristate
- default m
- help
- Kernel module for loop mount support
-
-config BR2_PACKAGE_KMOD_NBD
- prompt "kmod-nbd.......................... Network Block Device"
- tristate
- default m
- help
- Kernel module for network block device
-
-endmenu
-
-config BR2_PACKAGE_KMOD_CRYPTO
- prompt "CryptoAPI modules"
- tristate
- default m
- select BUSYBOX_CONFIG_FEATURE_CHECK_TAINTED_MODULE
- help
- Kernel modules for cryptographic algorithms
-
-menu "Filesystems support"
-
-config BR2_PACKAGE_KMOD_FS_CIFS
- prompt "kmod-fs-cifs...................... CIFS support"
- tristate
- default m
- help
- Kernel modules for CIFS support
-
-config BR2_PACKAGE_KMOD_FS_EXT2
- prompt "kmod-fs-ext2...................... EXT2 filesystem support"
- tristate
- default m
- help
- Kernel modules for EXT2 filesystem support
-
-config BR2_PACKAGE_KMOD_FS_EXT3
- prompt "kmod-fs-ext3...................... EXT3 filesystem support"
- tristate
- default m
- help
- Kernel modules for EXT3 filesystem support
-
-config BR2_PACKAGE_KMOD_FS_HFSPLUS
- prompt "kmod-fs-hfsplus................... HFS+ filesystem support"
- tristate
- default m
- help
- Kernel modules for HFS+ filesystem support
-
-config BR2_PACKAGE_KMOD_FS_NFS
- prompt "kmod-fs-nfs....................... NFS support"
- tristate
- default m
- help
- Kernel modules for NFS support
- Includes lockd, nfs and sunrpc
-
-config BR2_PACKAGE_KMOD_FS_VFAT
- prompt "kmod-fs-vfat...................... VFAT filesystem support"
- tristate
- default m
- help
- Kernel modules for VFAT filesystem support
- useful for usb mass storage devices
-
-config BR2_PACKAGE_KMOD_FS_XFS
- prompt "kmod-fs-xfs....................... XFS filesystem support"
- tristate
- default m
- help
- Kernel modules for XFS filesystem support
-
-endmenu
-
-menu "Multimedia devices support"
-
-config BR2_PACKAGE_KMOD_PWC
- prompt "kmod-pwc.......................... Kernel driver for USB Philips Cameras"
- tristate
- depends BR2_PACKAGE_KMOD_USB
- default m
-
-config BR2_PACKAGE_KMOD_SOUNDCORE
- prompt "kmod-soundcore.................... Soundcard support"
- tristate
- default n
- help
- Base support for soundcards
- Requires either USB soundcard support (OSS) or ALSA package to be useful
-
-config BR2_PACKAGE_KMOD_VIDEODEV
- prompt "kmod-videodev..................... Video (For Linux) kernel support"
- tristate
- default m
-
-endmenu
-
-menu "Native Language support"
-
-config BR2_PACKAGE_KMOD_NLS_BASE
- prompt "kmod-nls-base..................... Native Language support"
- tristate
- default m
- help
- Kernel native language support
-
-config BR2_PACKAGE_KMOD_NLS_CP437
- prompt "kmod-nls-cp437.................. Codepage 437 (United States, Canada)"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_NLS_BASE
- help
- Kernel native language support
-
-config BR2_PACKAGE_KMOD_NLS_CP850
- prompt "kmod-nls-cp850.................. Codepage 850 (Europe)"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_NLS_BASE
- help
- Kernel native language support
-
-config BR2_PACKAGE_KMOD_NLS_ISO8859_1
- prompt "kmod-nls-iso8859-1.............. NLS ISO 8859-1 (Latin 1; Western European Languages)"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_NLS_BASE
- help
- Kernel native language support
-
-config BR2_PACKAGE_KMOD_NLS_ISO8859_15
- prompt "kmod-nls-iso8859-15............. NLS ISO 8859-15 (Latin 15; Western European Languages with Euro)"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_NLS_BASE
- help
- Kernel native language support
-
-config BR2_PACKAGE_KMOD_NLS_UTF8
- prompt "kmod-nls-utf8................... NLS UTF8"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_NLS_BASE
- help
- Kernel native language support
-
-endmenu
-
-menu "Network devices support"
- depends BR2_LINUX_2_4_X86 || BR2_LINUX_2_6_X86
-
-config BR2_PACKAGE_KMOD_NET_3C59X
- prompt "kmod-net-3c59x.................... 3Com 3c590/3c900 series (592/595/597) \"Vortex/Boomerang\" Ethernet kernel support"
- tristate
- depends BR2_LINUX_2_4_X86 || BR2_LINUX_2_6_X86
- default m
- help
- This option enables driver support for a large number of 10mbps and
- 10/100mbps EISA, PCI and PCMCIA 3Com network cards:
-
- * "Vortex" (Fast EtherLink 3c590/3c592/3c595/3c597) EISA and PCI
- * "Boomerang" (EtherLink XL 3c900 or 3c905) PCI
- * "Cyclone" (3c540/3c900/3c905/3c980/3c575/3c656) PCI and Cardbus
- * "Tornado" (3c905) PCI
- * "Hurricane" (3c555/3cSOHO) PCI
-
-config BR2_PACKAGE_KMOD_NET_8139TOO
- prompt "kmod-net-8139too.................. RealTek RTL-8139 PCI Fast Ethernet Adapter kernel support"
- tristate
- depends BR2_LINUX_2_4_X86 || BR2_LINUX_2_6_X86
- default m
- help
- This is a driver for the Fast Ethernet PCI network cards based on
- the RTL8139 chips.
-
-config BR2_PACKAGE_KMOD_NET_AIRO
- prompt "kmod-net-airo..................... Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards kernel support"
- tristate
- depends BR2_LINUX_2_4_X86 || BR2_LINUX_2_6_X86
- default m
- help
- This is the standard Linux driver to support Cisco/Aironet ISA and
- PCI 802.11 wireless cards.
- It supports the new 802.11b cards from Cisco (Cisco 34X, Cisco 35X
- - with or without encryption) as well as card before the Cisco
- acquisition (Aironet 4500, Aironet 4800, Aironet 4800B).
-
- This driver support both the standard Linux Wireless Extensions
- and Cisco proprietary API, so both the Linux Wireless Tools and the
- Cisco Linux utilities can be used to configure the card.
-
-config BR2_PACKAGE_KMOD_NET_E100
- prompt "kmod-net-e100..................... Intel(R) PRO/100+ cards kernel support"
- tristate
- depends BR2_LINUX_2_4_X86 || BR2_LINUX_2_6_X86
- default m
- help
- Intel(R) PRO/100+ cards kernel support
-
-config BR2_PACKAGE_KMOD_NET_HERMES
- prompt "kmod-net-hermes................... Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) kernel support"
- tristate
- depends BR2_LINUX_2_4_X86 || BR2_LINUX_2_6_X86
- default m
- help
- A driver for 802.11b wireless cards based based on the "Hermes" or
- Intersil HFA384x (Prism 2) MAC controller. This includes the vast
- majority of the PCMCIA 802.11b cards (which are nearly all rebadges)
- - except for the Cisco/Aironet cards. Cards supported include the
- Apple Airport (not a PCMCIA card), WavelanIEEE/Orinoco,
- Cabletron/EnteraSys Roamabout, ELSA AirLancer, MELCO Buffalo, Avaya,
- IBM High Rate Wireless, Farralon Syyline, Samsung MagicLAN, Netgear
- MA401, LinkSys WPC-11, D-Link DWL-650, 3Com AirConnect, Intel
- PRO/Wireless, and Symbol Spectrum24 High Rate amongst others.
-
-config BR2_PACKAGE_KMOD_NET_HERMES_PCI
- prompt "kmod-net-hermes-pci............. Intersil Prism 2.5 PCI 802.11b adaptor support"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_NET_HERMES
- help
- Enable support for PCI and mini-PCI 802.11b wireless NICs based on
- the Prism 2.5 chipset. These are true PCI cards, not the 802.11b
- PCMCIA cards bundled with PCI<->PCMCIA adaptors which are also
- common. Some of the built-in wireless adaptors in laptops are of
- this variety.
-
-config BR2_PACKAGE_KMOD_NET_HERMES_PLX
- prompt "kmod-net-hermes-plx............. Hermes in PLX9052 based PCI adaptor (Netgear MA301, etc.) kernel support"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_NET_HERMES
- help
- Enable support for PCMCIA cards supported by the "Hermes" (aka
- orinoco_cs) driver when used in PLX9052 based PCI adaptors. These
- adaptors are not a full PCMCIA controller but act as a more limited
- PCI <-> PCMCIA bridge. Several vendors sell such adaptors so that
- 802.11b PCMCIA cards can be used in desktop machines. The Netgear
- MA301 is such an adaptor.
-
-config BR2_PACKAGE_KMOD_NET_NATSEMI
- prompt "kmod-net-natsemi.................. National Semiconductor DP8381x series PCI Ethernet kernel support"
- tristate
- depends BR2_LINUX_2_4_X86 || BR2_LINUX_2_6_X86
- default m
- help
- This driver is for the National Semiconductor DP83810 series,
- which is used in cards from PureData, NetGear, Linksys
- and others, including the 83815 chip.
-
-config BR2_PACKAGE_KMOD_NET_PRISM54
- prompt "kmod-net-prism54.................. Intersil Prism GT/Duette/Indigo PCI/PCMCIA cards kernel support"
- tristate
- depends BR2_LINUX_2_4_X86 || BR2_LINUX_2_6_X86 || BR2_LINUX_2_4_BRCM || BR2_LINUX_2_6_BRCM
- default m
- help
- Enable PCI and Cardbus support for the following chipset based cards:
-
- * ISL3880 - Prism GT 802.11 b/g
- * ISL3877 - Prism Indigo 802.11 a
- * ISL3890 - Prism Duette 802.11 a/b/g
-
- For a complete list of supported cards visit <http://prism54.org>.
- Here is the latest confirmed list of supported cards:
-
- * 3com OfficeConnect 11g Cardbus Card aka 3CRWE154G72
- * Allnet ALL0271 PCI Card
- * Compex WL54G Cardbus Card
- * Corega CG-WLCB54GT Cardbus Card
- * D-Link Air Plus Xtreme G A1 Cardbus Card aka DWL-g650
- * I-O Data WN-G54/CB Cardbus Card
- * Kobishi XG-300 aka Z-Com Cardbus Card
- * Netgear WG511 Cardbus Card
- * Ovislink WL-5400PCI PCI Card
- * Peabird WLG-PCI PCI Card
- * Sitecom WL-100i Cardbus Card
- * Sitecom WL-110i PCI Card
- * SMC2802W - EZ Connect g 2.4GHz 54 Mbps Wireless PCI Card
- * SMC2835W - EZ Connect g 2.4GHz 54 Mbps Wireless Cardbus Card
- * Z-Com XG-900 PCI Card
- * Zyxel G-100 Cardbus Card
-
- If you enable this, you require a firmware file as well.
- You will need to copy this to /usr/lib/hotplug/firmware/isl3890.
- You can get this non-GPL'd firmware file from the Prism54 project page:
- <http://prism54.org>.
-
- Note: You need a motherboard with DMA support to use any of these cards.
-
-endmenu
-
-menu "PCMCIA/CardBus support"
- depends BR2_LINUX_2_4_X86 || BR2_LINUX_2_6_X86 || BR2_LINUX_2_4_BRCM || BR2_LINUX_2_6_BRCM
-
-config BR2_PACKAGE_KMOD_PCMCIA_CORE
- prompt "kmod-pcmcia-core.................. PCMCIA/CardBus support"
- depends BR2_LINUX_PCMCIA_SUPPORT
- tristate
- depends BR2_LINUX_2_4_X86 || BR2_LINUX_2_6_X86 || BR2_LINUX_2_4_BRCM || BR2_LINUX_2_6_BRCM
- default m
-
-config BR2_PACKAGE_KMOD_PCMCIA_SERIAL
- prompt "kmod-pcmcia-serial.............. PCMCIA/CardBus serial device support"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_PCMCIA_CORE
-
-endmenu
-
-menu "USB support"
-
-config BR2_PACKAGE_KMOD_USB
- prompt "kmod-usb-core..................... USB support"
- tristate
- default n if BR2_LINUX_2_4_AR531X
- default m
-
-config BR2_PACKAGE_KMOD_USB_UHCI
- prompt "kmod-usb-uhci................... Support for UHCI controllers"
- tristate
- default n if BR2_LINUX_2_6_AU1000
- depends BR2_PACKAGE_KMOD_USB
- select BR2_PACKAGE_KMOD_USB_CONTROLLER
-
-config BR2_PACKAGE_KMOD_USB_OHCI
- prompt "kmod-usb-ohci................... Support for OHCI controllers"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB
- select BR2_PACKAGE_KMOD_USB_CONTROLLER
-
-config BR2_PACKAGE_KMOD_USB2
- prompt "kmod-usb2....................... Support for USB 2.0 controllers"
- tristate
- default n if BR2_LINUX_2_6_AU1000
- depends BR2_PACKAGE_KMOD_USB
- select BR2_PACKAGE_KMOD_USB_CONTROLLER
-
-config BR2_PACKAGE_KMOD_USB_CONTROLLER
- tristate
- depends on BR2_PACKAGE_KMOD_USB_UHCI || BR2_PACKAGE_KMOD_USB_OHCI || BR2_PACKAGE_KMOD_USB2
- default n
-
-config BR2_PACKAGE_KMOD_USB_ACM
- prompt "kmod-usb-acm...................... Support for USB modems/isdn controllers"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB_CONTROLLER
-
-config BR2_PACKAGE_KMOD_USB_AUDIO
- prompt "kmod-usb-audio.................... Support for USB soundcards"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB_CONTROLLER
- select BR2_PACKAGE_KMOD_SOUNDCORE
-
-config BR2_PACKAGE_KMOD_USB_PRINTER
- prompt "kmod-usb-printer.................. Support for USB printers"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB_CONTROLLER
-
-config BR2_PACKAGE_KMOD_USB_SERIAL
- prompt "kmod-usb-serial................... Support for USB-to-serial converters"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB_CONTROLLER
-
-config BR2_PACKAGE_KMOD_USB_SERIAL_BELKIN
- prompt "kmod-usb-serial-belkin.......... Support for Belkin USB-to-serial converters"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB_SERIAL
-
-config BR2_PACKAGE_KMOD_USB_SERIAL_FTDI
- prompt "kmod-usb-serial-ftdi............ Support for FTDI USB-to-serial converterr"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB_SERIAL
-
-config BR2_PACKAGE_KMOD_USB_SERIAL_MCT_U232
- prompt "kmod-usb-serial-mct-u232........ Support for Magic Control Technology USB-to-Serial converters"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB_SERIAL
-
-config BR2_PACKAGE_KMOD_USB_SERIAL_PL2303
- prompt "kmod-usb-serial-pl2303.......... Support for Prolific PL2303 USB-to-Serial converters"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB_SERIAL
-
-config BR2_PACKAGE_KMOD_USB_SERIAL_VISOR
- prompt "kmod-usb-serial-visor........... Support for Handspring Visor / Palm m50x / Sony Clie Driver"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB_SERIAL
-
-config BR2_PACKAGE_KMOD_USB_STORAGE
- prompt "kmod-usb-storage.................. Support for USB storage devices"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB_CONTROLLER
-
-config BR2_PACKAGE_KMOD_USB_ATM
- prompt "kmod-usb-atm...................... Support for USB ATM devices"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB_CONTROLLER
-
-config BR2_PACKAGE_KMOD_USB_ATM_SPEEDTOUCH
- prompt "kmod-usb-atm-speedtouch......... Support for USB Speedtouch ADSL modem"
- tristate
- default m
- depends BR2_PACKAGE_KMOD_USB_ATM
-
-endmenu
-
-menu "Misc. devices support"
-
-config BR2_PACKAGE_KMOD_AX25
- prompt "kmod-ax25......................... AX25 support"
- tristate
- default m
- help
- Kernel modules for AX25 protocol family
-
- This package contains both the AX25 layer 2 support (ax25) and AX25 KISS driver (mkiss)
-
-config BR2_PACKAGE_KMOD_BLUETOOTH
- prompt "kmod-bluetooth.................... Bluetooth drivers and network stack"
- tristate
- default m
- default n if BR2_LINUX_2_4_AR531X
- help
- Bluetooth drivers and network stack
-
-config BR2_PACKAGE_KMOD_LP
- prompt "kmod-lp........................... Parallel port and lp support"
- tristate
- default m
- help
- Kernel modules for line printer and parallel port support
-
-config BR2_PACKAGE_KMOD_SOFTDOG
- prompt "kmod-softdog...................... Software watchdog"
- tristate
- default m
- help
- Kernel modules for software watchdog driver
-
-config BR2_PACKAGE_KMOD_WD1100
- prompt "kmod-wd1100....................... Soekris net4801 watchdog"
- tristate
- default y
- depends BR2_LINUX_2_4_X86
- help
- Driver for the NatSemi SC1x00 series Watchdog
- found on Soekris net4801 boards
-
-endmenu
-
-menu "Additional kernel modules"
-
-source "target/linux/package/Config.in"
-
-endmenu
-
-endmenu
diff --git a/openwrt/target/linux/Makefile b/openwrt/target/linux/Makefile
deleted file mode 100644
index e82e1052db..0000000000
--- a/openwrt/target/linux/Makefile
+++ /dev/null
@@ -1,97 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_OS:=$(shell uname -s)
-PKG_CPU:=$(shell uname -m)
-
-IB_NAME:=OpenWrt-ImageBuilder-$(PKG_OS)-$(PKG_CPU)
-IB_DIR:=$(BUILD_DIR)/$(IB_NAME)
-
-define kernel_template
-
-$(1)/$(2)-clean:
- @$(TRACE) target/linux/$(2)-$(1)-clean
- $(MAKE) -C $(2)-$(1) BOARD="$(2)" clean
-
-$(1)/$(2)-prepare:
- @$(TRACE) target/linux/$(2)-$(1)-prepare
- $(MAKE) -C $(2)-$(1) BOARD="$(2)" prepare
-
-$(1)/$(2)-compile:
- @$(TRACE) target/linux/$(2)-$(1)-compile
- $(MAKE) -C $(2)-$(1) BOARD="$(2)" compile
-
-$(1)/$(2)-rebuild:
- @$(TRACE) target/linux/$(2)-$(1)-rebuild
- $(MAKE) -C $(2)-$(1) BOARD="$(2)" rebuild
-
-$(1)/$(2)-install:
- @$(TRACE) target/linux/$(2)-$(1)-install
- $(MAKE) -C $(2)-$(1) BOARD="$(2)" install
-
-$(1)/$(2)-image: $(1)/$(2)-install
- @$(TRACE) target/linux/image-install
- $(MAKE) -C image KERNEL="$(1)" BOARD="$(2)" install
-
-$(1)/$(2)-install-ib:
- @$(TRACE) target/linux/image-install-ib
- $(MAKE) -C image KERNEL="$(1)" BOARD="$(2)" IB_DIR="$(IB_DIR)" install-ib
- echo '$$$$(eval $$$$(call image_template,$(2),$(1)))' >> $(IB_DIR)/kernel.mk
-
-
-ifeq ($(BR2_LINUX_$(3)),y)
-clean: $(1)/$(2)-clean
-prepare: $(1)/$(2)-prepare
-compile: $(1)/$(2)-compile
-rebuild: $(1)/$(2)-rebuild
-$(BIN_DIR)/$(IB_NAME).tar.bz2 install: $(1)/$(2)-image
-install-ib: $(1)/$(2)-install-ib
-package/%:
- $(MAKE) -C $(2)-$(1) BOARD="$(2)" $$@
-endif
-
-.PHONY: $(1)/$(2)-clean $(1)/$(2)-prepare $(1)/$(2)-compile $(1)/$(2)-rebuild $(1)/$(2)-install $(1)/$(2)-image $(1)/$(2)-install-ib
-endef
-
-.PHONY: clean prepare compile rebuild install imagebuilder install-ib
-
-install-ib:
-
-$(BIN_DIR)/$(IB_NAME).tar.bz2:
- rm -rf $(IB_DIR)
- mkdir -p $(IB_DIR)/packages
- mkdir -p $(IB_DIR)/scripts
- $(CP) ./imagebuilder/* $(IB_DIR)/
- $(CP) $(TOPDIR)/bin/packages/*.ipk $(IB_DIR)/packages/
- $(CP) $(TOPDIR)/scripts/ipkg $(IB_DIR)/scripts/
- $(MAKE) install-ib
- $(CP) $(TOPDIR)/rules.mk $(IB_DIR)
- $(CP) ./image $(IB_DIR)/
- $(CP) $(TOPDIR)/.config $(IB_DIR)/
- find $(IB_DIR) -name .svn | xargs rm -rf
- find $(IB_DIR) -name CVS | xargs rm -rf
- (cd $(BUILD_DIR); tar c $(IB_NAME) | bzip2 -c > $(BIN_DIR)/$(IB_NAME).tar.bz2)
-
-ifeq ($(BR2_PACKAGE_IMAGEBUILDER),y)
-install: $(BIN_DIR)/$(IB_NAME).tar.bz2
-endif
-
-prepare:
- @$(TRACE) target/linux/image-prepare
- $(MAKE) -C image prepare
-compile:
- @$(TRACE) target/linux/image-compile
- $(MAKE) -C image compile
-install:
-rebuild:
-clean:
-
-$(eval $(call kernel_template,2.4,brcm,2_4_BRCM))
-$(eval $(call kernel_template,2.4,ar7,2_4_AR7))
-$(eval $(call kernel_template,2.4,x86,2_4_X86))
-$(eval $(call kernel_template,2.6,brcm,2_6_BRCM))
-$(eval $(call kernel_template,2.6,x86,2_6_X86))
-$(eval $(call kernel_template,2.4,ar531x,2_4_AR531X))
-$(eval $(call kernel_template,2.6,aruba,2_6_ARUBA))
-$(eval $(call kernel_template,2.6,au1000,2_6_AU1000))
-$(eval $(call kernel_template,2.6,xscale,2_6_XSCALE))
-$(eval $(call kernel_template,2.6,sibyte,2_6_SIBYTE))
diff --git a/openwrt/target/linux/ar531x-2.4/Makefile b/openwrt/target/linux/ar531x-2.4/Makefile
deleted file mode 100644
index 6e6551b193..0000000000
--- a/openwrt/target/linux/ar531x-2.4/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-LINUX_VERSION:=2.4.32
-LINUX_RELEASE:=1
-LINUX_KERNEL_MD5SUM:=38f4d0830e95a20f4bfed17622d5557c
-
-include ../rules.mk
-include ./config
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
-
-$(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
- [ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches $(MAKE_TRACE)
- [ -d ./patches ] && $(PATCH) $(LINUX_DIR) ./patches $(MAKE_TRACE)
- @$(CP) config $(LINUX_DIR)/.config
- touch $@
-
diff --git a/openwrt/target/linux/ar531x-2.4/config b/openwrt/target/linux/ar531x-2.4/config
deleted file mode 100644
index 782d1de4c7..0000000000
--- a/openwrt/target/linux/ar531x-2.4/config
+++ /dev/null
@@ -1,1164 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_MIPS=y
-CONFIG_MIPS32=y
-# CONFIG_MIPS64 is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# Machine selection
-#
-# CONFIG_ACER_PICA_61 is not set
-# CONFIG_MIPS_BOSPORUS is not set
-# CONFIG_MIPS_FICMMP is not set
-# CONFIG_MIPS_MIRAGE is not set
-# CONFIG_MIPS_DB1000 is not set
-# CONFIG_MIPS_DB1100 is not set
-# CONFIG_MIPS_DB1500 is not set
-# CONFIG_MIPS_DB1550 is not set
-# CONFIG_MIPS_DB1200 is not set
-# CONFIG_MIPS_PB1000 is not set
-# CONFIG_MIPS_PB1100 is not set
-# CONFIG_MIPS_PB1500 is not set
-# CONFIG_MIPS_PB1550 is not set
-# CONFIG_MIPS_PB1200 is not set
-# CONFIG_MIPS_HYDROGEN3 is not set
-CONFIG_AR531X=y
-# CONFIG_MIPS_XXS1500 is not set
-# CONFIG_MIPS_MTX1 is not set
-# CONFIG_COGENT_CSB250 is not set
-# CONFIG_BAGET_MIPS is not set
-# CONFIG_CASIO_E55 is not set
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_DECSTATION is not set
-# CONFIG_MIPS_EV64120 is not set
-# CONFIG_MIPS_EV96100 is not set
-# CONFIG_MIPS_IVR is not set
-# CONFIG_HP_LASERJET is not set
-# CONFIG_IBM_WORKPAD is not set
-# CONFIG_LASAT is not set
-# CONFIG_MIPS_ITE8172 is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_MAGNUM_4000 is not set
-# CONFIG_MIPS_MALTA is not set
-# CONFIG_MIPS_SEAD is not set
-# CONFIG_MOMENCO_OCELOT is not set
-# CONFIG_MOMENCO_OCELOT_G is not set
-# CONFIG_MOMENCO_OCELOT_C is not set
-# CONFIG_MOMENCO_JAGUAR_ATX is not set
-# CONFIG_PMC_BIG_SUR is not set
-# CONFIG_PMC_STRETCH is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_DDB5074 is not set
-# CONFIG_DDB5476 is not set
-# CONFIG_DDB5477 is not set
-# CONFIG_NEC_OSPREY is not set
-# CONFIG_NEC_EAGLE is not set
-# CONFIG_OLIVETTI_M700 is not set
-# CONFIG_NINO is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SIBYTE_SB1xxx_SOC is not set
-# CONFIG_SNI_RM200_PCI is not set
-# CONFIG_TANBAC_TB0226 is not set
-# CONFIG_TANBAC_TB0229 is not set
-# CONFIG_TOSHIBA_JMR3927 is not set
-# CONFIG_TOSHIBA_RBTX4927 is not set
-# CONFIG_VICTOR_MPC30X is not set
-# CONFIG_ZAO_CAPCELLA is not set
-# CONFIG_HIGHMEM is not set
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-CONFIG_IRQ_CPU=y
-CONFIG_CPU_R4X00=y
-CONFIG_SERIAL=y
-CONFIG_NEW_IRQ=y
-CONFIG_NEW_TIME_C=y
-CONFIG_NONCOHERENT_IO=y
-CONFIG_EARLY_PRINTK_HACK=y
-# CONFIG_SCSI is not set
-
-#
-# Board selection
-#
-# CONFIG_APUNKNOWN is not set
-CONFIG_AP30=y
-# CONFIG_AP31 is not set
-# CONFIG_AP33 is not set
-# CONFIG_AP38 is not set
-# CONFIG_AP43 is not set
-# CONFIG_AP48 is not set
-# CONFIG_AP51 is not set
-# CONFIG_AP30ASK is not set
-CONFIG_MTD_PHYSMAP_BUSWIDTH=2
-
-#
-# Flash Selection
-#
-CONFIG_FLASH_2MB=y
-# CONFIG_FLASH_4MB is not set
-# CONFIG_MIPS_AU1000 is not set
-
-#
-# CPU selection
-#
-# CONFIG_CPU_MIPS32 is not set
-# CONFIG_CPU_MIPS64 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_VR41XX is not set
-# CONFIG_CPU_R4300 is not set
-CONFIG_CPU_R4X00=y
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-CONFIG_PAGE_SIZE_4KB=y
-# CONFIG_PAGE_SIZE_16KB is not set
-# CONFIG_PAGE_SIZE_64KB is not set
-# CONFIG_64BIT_PHYS_ADDR is not set
-CONFIG_CPU_ADVANCED=y
-# CONFIG_CPU_HAS_LLSC is not set
-# CONFIG_CPU_HAS_LLDSCD is not set
-# CONFIG_CPU_HAS_WB is not set
-CONFIG_CPU_HAS_SYNC=y
-
-#
-# General setup
-#
-# CONFIG_CPU_LITTLE_ENDIAN is not set
-# CONFIG_BUILD_ELF64 is not set
-# CONFIG_BINFMT_IRIX is not set
-CONFIG_NET=y
-# CONFIG_PCI is not set
-# CONFIG_PCI_NEW is not set
-CONFIG_PCI_AUTO=y
-# CONFIG_ISA is not set
-# CONFIG_TC is not set
-# CONFIG_MCA is not set
-# CONFIG_SBUS is not set
-# CONFIG_HOTPLUG is not set
-# CONFIG_PCMCIA is not set
-# CONFIG_HOTPLUG_PCI is not set
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_ELF_AOUT is not set
-# CONFIG_MIPS32_COMPAT is not set
-# CONFIG_MIPS32_O32 is not set
-# CONFIG_MIPS32_N32 is not set
-# CONFIG_BINFMT_ELF32 is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_OOM_KILLER is not set
-# CONFIG_CMDLINE_BOOL is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_REDBOOT_PARTS=y
-# 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
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=y
-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_CFI_B1 is not set
-CONFIG_MTD_CFI_B2=y
-# CONFIG_MTD_CFI_B4 is not set
-# CONFIG_MTD_CFI_B8 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_CFI_INTELEXT=y
-CONFIG_MTD_CFI_AMDSTD=y
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_SSTSTD=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_OBSOLETE_CHIPS=y
-CONFIG_MTD_AMDSTD=y
-# CONFIG_MTD_SHARP is not set
-CONFIG_MTD_JEDEC=y
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_PHYSMAP_START=0xbe000000
-CONFIG_MTD_PHYSMAP_LEN=200000
-CONFIG_MTD_PHYSMAP_BUSWIDTH=2
-# CONFIG_MTD_PB1000 is not set
-# CONFIG_MTD_PB1500 is not set
-# CONFIG_MTD_PB1100 is not set
-# CONFIG_MTD_BOSPORUS is not set
-# CONFIG_MTD_XXS1500 is not set
-# CONFIG_MTD_MTX1 is not set
-# CONFIG_MTD_DB1X00 is not set
-# CONFIG_MTD_PB1550 is not set
-# CONFIG_MTD_HYDROGEN3 is not set
-# CONFIG_MTD_MIRAGE is not set
-# CONFIG_MTD_CSTM_MIPS_IXX is not set
-# CONFIG_MTD_OCELOT is not set
-# CONFIG_MTD_LASAT is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=m
-# CONFIG_PARPORT_PC is not set
-# CONFIG_PARPORT_AMIGA is not set
-# CONFIG_PARPORT_MFC3 is not set
-# CONFIG_PARPORT_ATARI is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_SUNBPP is not set
-# CONFIG_PARPORT_IP22 is not set
-# CONFIG_PARPORT_OTHER is not set
-# CONFIG_PARPORT_1284 is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# 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_CISS_SCSI_TAPE is not set
-# CONFIG_CISS_MONITOR_THREAD is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_SX8 is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=3072
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_STATS is not set
-
-#
-# MIPS initrd options
-#
-# CONFIG_EMBEDDED_RAMDISK is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_FWMARK=y
-CONFIG_IP_ROUTE_NAT=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_TOS=y
-# CONFIG_IP_ROUTE_VERBOSE is not set
-# CONFIG_IP_PNP 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_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=y
-CONFIG_IP_NF_CONNTRACK_MARK=y
-CONFIG_IP_NF_FTP=y
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_IRC=y
-CONFIG_IP_NF_CT_ACCT=m
-CONFIG_IP_NF_MATCH_CONNBYTES=m
-CONFIG_IP_NF_CT_PROTO_GRE=m
-CONFIG_IP_NF_PPTP=m
-CONFIG_IP_NF_H323=m
-CONFIG_IP_NF_RTSP=m
-CONFIG_IP_NF_MMS=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_QUOTA=m
-CONFIG_IP_NF_SET=m
-CONFIG_IP_NF_SET_MAX=256
-CONFIG_IP_NF_SET_HASHSIZE=1024
-CONFIG_IP_NF_MATCH_SET=m
-CONFIG_IP_NF_TARGET_SET=m
-CONFIG_IP_NF_SET_IPMAP=m
-CONFIG_IP_NF_SET_PORTMAP=m
-CONFIG_IP_NF_SET_MACIPMAP=m
-CONFIG_IP_NF_SET_IPHASH=m
-CONFIG_IP_NF_SET_NETHASH=m
-CONFIG_IP_NF_SET_IPTREE=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=y
-CONFIG_IP_NF_MATCH_MULTIPORT=y
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_TIME=m
-CONFIG_IP_NF_MATCH_CONDITION=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_IPP2P=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=y
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_CONNMARK=m
-CONFIG_IP_NF_MATCH_UNCLEAN=m
-CONFIG_IP_NF_MATCH_STRING=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_LAYER7=m
-# CONFIG_IP_NF_MATCH_LAYER7_DEBUG is not set
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-CONFIG_IP_NF_TARGET_MIRROR=m
-CONFIG_IP_NF_NAT=y
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=y
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_NAT_PPTP=m
-CONFIG_IP_NF_NAT_PROTO_GRE=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_NAT_H323=m
-CONFIG_IP_NF_NAT_RTSP=m
-CONFIG_IP_NF_NAT_MMS=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=y
-CONFIG_IP_NF_NAT_FTP=y
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_MANGLE=y
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_MARK=y
-CONFIG_IP_NF_TARGET_IMQ=m
-CONFIG_IP_NF_TARGET_CONNMARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=y
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IP: Virtual Server Configuration
-#
-CONFIG_IP_VS=m
-# CONFIG_IP_VS_DEBUG is not set
-CONFIG_IP_VS_TAB_BITS=12
-
-#
-# IPVS scheduler
-#
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-
-#
-# IPVS application helper
-#
-CONFIG_IP_VS_FTP=m
-CONFIG_IPV6=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_CONDITION=m
-CONFIG_IP6_NF_MATCH_MAC=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_MARK=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-CONFIG_IP6_NF_MATCH_LENGTH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-CONFIG_IP6_NF_TARGET_IMQ=m
-# CONFIG_KHTTPD is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-# CONFIG_ATM is not set
-CONFIG_VLAN_8021Q=y
-
-#
-#
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-CONFIG_BRIDGE=y
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-CONFIG_WAN_ROUTER=m
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-CONFIG_NET_SCHED=y
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_CSZ=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_NETEM is not set
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_INGRESS=m
-CONFIG_NET_QOS=y
-CONFIG_NET_ESTIMATOR=y
-CONFIG_NET_CLS=y
-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_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_POLICE=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_IPSEC_NAT_TRAVERSAL=y
-
-#
-# Telephony Support
-#
-# CONFIG_PHONE is not set
-# CONFIG_PHONE_IXJ is not set
-# CONFIG_PHONE_IXJ_PCMCIA is not set
-
-#
-# ATA/IDE/MFM/RLL support
-#
-CONFIG_IDE=m
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=m
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_IDEDISK_STROKE=y
-# CONFIG_BLK_DEV_IDECS is not set
-# CONFIG_BLK_DEV_DELKIN is not set
-# 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_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-# CONFIG_BLK_DEV_ATARAID_MEDLEY is not set
-# CONFIG_BLK_DEV_ATARAID_SII is not set
-
-#
-# SCSI support
-#
-# CONFIG_SCSI is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_BOOT is not set
-# CONFIG_FUSION_ISENSE is not set
-# CONFIG_FUSION_CTL is not set
-# CONFIG_FUSION_LAN is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_IMQ=m
-CONFIG_TUN=m
-CONFIG_NET_RANDOM=y
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_VENETDEV is not set
-# CONFIG_NET_ATHEROS_ETHER is not set
-CONFIG_MARVELL_ENET_PHY=y
-# CONFIG_SUNLANCE is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 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=y
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE_MPPC=m
-CONFIG_PPPOE=m
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-
-#
-# Prism54 PCI/PCMCIA GT/Duette Driver - 802.11(a/b/g)
-#
-# CONFIG_PRISM54 is not set
-# CONFIG_NET_WIRELESS is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-CONFIG_SHAPER=m
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# Amateur Radio support
-#
-CONFIG_HAMRADIO=y
-
-#
-# Packet Radio protocols
-#
-CONFIG_AX25=m
-# CONFIG_AX25_DAMA_SLAVE is not set
-# CONFIG_NETROM is not set
-# CONFIG_ROSE is not set
-
-#
-# AX.25 network device drivers
-#
-
-#
-# AX.25 network device drivers
-#
-CONFIG_MKISS=m
-# CONFIG_6PACK is not set
-# CONFIG_BPQETHER is not set
-# CONFIG_SCC_DELAY is not set
-# CONFIG_SCC_TRXECHO is not set
-# CONFIG_BAYCOM_SER_FDX is not set
-# CONFIG_BAYCOM_SER_HDX is not set
-# CONFIG_BAYCOM_PAR is not set
-# CONFIG_BAYCOM_EPP is not set
-# CONFIG_SOUNDMODEM is not set
-# CONFIG_YAM is not set
-
-#
-# IrDA (infrared) support
-#
-# CONFIG_IRDA is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-# CONFIG_INPUT is not set
-# CONFIG_INPUT_KEYBDEV is not set
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Character devices
-#
-# CONFIG_VT is not set
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=128
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-CONFIG_PPDEV=m
-# CONFIG_TIPAR is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-
-#
-# Input core support is needed for gameports
-#
-
-#
-# Input core support is needed for joysticks
-#
-# CONFIG_QIC02_TAPE is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_IPMI_PANIC_EVENT is not set
-# CONFIG_IPMI_DEVICE_INTERFACE is not set
-# CONFIG_IPMI_KCS is not set
-# CONFIG_IPMI_WATCHDOG is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_ALIM1535_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_WAFER_WDT is not set
-# CONFIG_I810_TCO is not set
-# CONFIG_MIXCOMWD is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SCx200_WDT is not set
-CONFIG_SOFT_WATCHDOG=m
-# CONFIG_W83877F_WDT is not set
-# CONFIG_WDT is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_SCx200 is not set
-# CONFIG_SCx200_GPIO is not set
-# CONFIG_AMD_PM768 is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC 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_FTAPE is not set
-# CONFIG_AGP is not set
-
-#
-# Direct Rendering Manager (XFree86 DRI support)
-#
-# CONFIG_DRM is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_QFMT_V2 is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-CONFIG_HFSPLUS_FS=m
-# CONFIG_BEFS_FS is not set
-# CONFIG_BEFS_DEBUG is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=m
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_BBC_ARMLIB is not set
-# CONFIG_JFFS2_BBC_LZO is not set
-CONFIG_JFFS2_BBC_LZARI=y
-# CONFIG_JFFS2_BBC_LZHD is not set
-# CONFIG_JFFS2_BBC_LZSS is not set
-# CONFIG_CRAMFS is not set
-CONFIG_SQUASHFS=y
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-CONFIG_MINIX_FS=m
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=m
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-CONFIG_XFS_FS=m
-# CONFIG_XFS_QUOTA is not set
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_TRACE is not set
-# CONFIG_XFS_DEBUG is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_POSIX=y
-# CONFIG_SMB_FS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_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=y
-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_EFI_PARTITION is not set
-# CONFIG_SMB_NLS is not set
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-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_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
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-CONFIG_VIDEO_PROC_FS=y
-# CONFIG_I2C_PARPORT is not set
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_BT848 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_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_ZORAN_BUZ is not set
-# CONFIG_VIDEO_ZORAN_DC10 is not set
-# CONFIG_VIDEO_ZORAN_LML33 is not set
-# CONFIG_VIDEO_ZR36120 is not set
-# CONFIG_VIDEO_MEYE 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_RADIO_MIROPCM20 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-# CONFIG_SOUND_ALI5455 is not set
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_FORTE is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_TVMIXER is not set
-# CONFIG_SOUND_AD1980 is not set
-# CONFIG_SOUND_WM97XX is not set
-
-#
-# USB support
-#
-# CONFIG_USB is not set
-
-#
-# Support for USB gadgets
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BLUEZ_HCIUSB is not set
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y
-# CONFIG_BLUEZ_HCIBFUSB is not set
-# CONFIG_BLUEZ_HCIDTL1 is not set
-# CONFIG_BLUEZ_HCIBT3C is not set
-# CONFIG_BLUEZ_HCIBLUECARD is not set
-# CONFIG_BLUEZ_HCIBTUART is not set
-# CONFIG_BLUEZ_HCIVHCI is not set
-
-#
-# Kernel hacking
-#
-CONFIG_CROSSCOMPILE=y
-# CONFIG_RUNTIME_DEBUG is not set
-# CONFIG_KGDB is not set
-# CONFIG_GDB_CONSOLE is not set
-# CONFIG_DEBUG_INFO is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_MIPS_UNCACHED is not set
-CONFIG_LOG_BUF_SHIFT=0
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-# 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_DES=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_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Library routines
-#
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/openwrt/target/linux/ar531x-2.4/patches/000-atheros-support.patch b/openwrt/target/linux/ar531x-2.4/patches/000-atheros-support.patch
deleted file mode 100644
index de7115b46a..0000000000
--- a/openwrt/target/linux/ar531x-2.4/patches/000-atheros-support.patch
+++ /dev/null
@@ -1,11411 +0,0 @@
-diff -urN linux-mips/arch/mips/ar531x/ar531xdbg_io.c mips-linux-2.4.25/arch/mips/ar531x/ar531xdbg_io.c
---- linux-mips/arch/mips/ar531x/ar531xdbg_io.c 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/ar531xdbg_io.c 2005-12-30 17:26:30.606883840 +0000
-@@ -0,0 +1,234 @@
-+/*
-+ * 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 MontaVista Software Inc
-+ * Copyright © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * Basic support for polled character input/output
-+ * using the AR531X's serial port.
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
-+#include <linux/serial.h>
-+#include <linux/types.h>
-+#include <linux/string.h>
-+
-+#include <asm/reboot.h>
-+#include <asm/io.h>
-+#include <asm/time.h>
-+#include <asm/pgtable.h>
-+#include <asm/processor.h>
-+#include <asm/reboot.h>
-+#include <asm/system.h>
-+#include <asm/serial.h>
-+#include <asm/gdb-stub.h>
-+
-+#include "ar531xlnx.h"
-+
-+#if CONFIG_EARLY_PRINTK_HACK || CONFIG_KGDB
-+/* base addr of uart and clock timing */
-+#if CONFIG_AR5315
-+#define BASE AR5315_UART0
-+#else
-+#define BASE AR531X_UART0
-+#endif
-+
-+/* distance in bytes between two serial registers */
-+#define REG_OFFSET 4
-+
-+/*
-+ * 0 - we need to do serial init
-+ * 1 - skip serial init
-+ */
-+static int serialPortInitialized = 0;
-+
-+/*
-+ * * the default baud rate *if* we do serial init
-+ * */
-+#define BAUD_DEFAULT UART16550_BAUD_9600
-+
-+/* === END OF CONFIG === */
-+
-+#define UART16550_BAUD_2400 2400
-+#define UART16550_BAUD_4800 4800
-+#define UART16550_BAUD_9600 9600
-+#define UART16550_BAUD_19200 19200
-+#define UART16550_BAUD_38400 38400
-+#define UART16550_BAUD_57600 57600
-+#define UART16550_BAUD_115200 115200
-+
-+#define UART16550_PARITY_NONE 0
-+#define UART16550_PARITY_ODD 0x08
-+#define UART16550_PARITY_EVEN 0x18
-+#define UART16550_PARITY_MARK 0x28
-+#define UART16550_PARITY_SPACE 0x38
-+
-+#define UART16550_DATA_5BIT 0x0
-+#define UART16550_DATA_6BIT 0x1
-+#define UART16550_DATA_7BIT 0x2
-+#define UART16550_DATA_8BIT 0x3
-+
-+#define UART16550_STOP_1BIT 0x0
-+#define UART16550_STOP_2BIT 0x4
-+
-+/* register offset */
-+#define OFS_RCV_BUFFER (0*REG_OFFSET)
-+#define OFS_TRANS_HOLD (0*REG_OFFSET)
-+#define OFS_SEND_BUFFER (0*REG_OFFSET)
-+#define OFS_INTR_ENABLE (1*REG_OFFSET)
-+#define OFS_INTR_ID (2*REG_OFFSET)
-+#define OFS_DATA_FORMAT (3*REG_OFFSET)
-+#define OFS_LINE_CONTROL (3*REG_OFFSET)
-+#define OFS_MODEM_CONTROL (4*REG_OFFSET)
-+#define OFS_RS232_OUTPUT (4*REG_OFFSET)
-+#define OFS_LINE_STATUS (5*REG_OFFSET)
-+#define OFS_MODEM_STATUS (6*REG_OFFSET)
-+#define OFS_RS232_INPUT (6*REG_OFFSET)
-+#define OFS_SCRATCH_PAD (7*REG_OFFSET)
-+
-+#define OFS_DIVISOR_LSB (0*REG_OFFSET)
-+#define OFS_DIVISOR_MSB (1*REG_OFFSET)
-+
-+
-+/* memory-mapped read/write of the port */
-+#define UART16550_READ(y) (*((volatile u8*)(BASE + y)))
-+#define UART16550_WRITE(y, z) ((*((volatile u8*)(BASE + y))) = z)
-+
-+void
-+debugPortInit(u32 baud, u8 data, u8 parity, u8 stop)
-+{
-+ /* Pull UART out of reset */
-+#if CONFIG_AR5315
-+ sysRegWrite(AR5315_RESET,
-+ sysRegRead(AR5315_RESET) & ~(RESET_UART0));
-+#else
-+ sysRegWrite(AR531X_RESET,
-+ sysRegRead(AR531X_RESET) & ~(AR531X_RESET_UART0));
-+#endif
-+
-+ /* disable interrupts */
-+ UART16550_WRITE(OFS_LINE_CONTROL, 0x0);
-+ UART16550_WRITE(OFS_INTR_ENABLE, 0);
-+
-+ /* set up buad rate */
-+ {
-+ u32 divisor;
-+#if CONFIG_AR5315
-+ u32 uart_clock_rate = ar531x_apb_frequency();
-+#else
-+ u32 uart_clock_rate = ar531x_cpu_frequency() / 4;
-+#endif
-+ u32 base_baud = uart_clock_rate / 16;
-+
-+ /* set DIAB bit */
-+ UART16550_WRITE(OFS_LINE_CONTROL, 0x80);
-+
-+ /* set divisor */
-+ divisor = base_baud / baud;
-+ UART16550_WRITE(OFS_DIVISOR_LSB, divisor & 0xff);
-+ UART16550_WRITE(OFS_DIVISOR_MSB, (divisor & 0xff00)>>8);
-+
-+ /* clear DIAB bit */
-+ UART16550_WRITE(OFS_LINE_CONTROL, 0x0);
-+ }
-+
-+ /* set data format */
-+ UART16550_WRITE(OFS_DATA_FORMAT, data | parity | stop);
-+}
-+
-+u8
-+getDebugChar(void)
-+{
-+ if (!serialPortInitialized) {
-+ serialPortInitialized = 1;
-+ debugPortInit(BAUD_DEFAULT,
-+ UART16550_DATA_8BIT,
-+ UART16550_PARITY_NONE, UART16550_STOP_1BIT);
-+ }
-+
-+ while((UART16550_READ(OFS_LINE_STATUS) & 0x1) == 0);
-+ return UART16550_READ(OFS_RCV_BUFFER);
-+}
-+
-+#if CONFIG_KGDB
-+/*
-+ * Peek at the most recently received character.
-+ * Don't wait for a new character to be received.
-+ */
-+u8
-+peekDebugChar(void)
-+{
-+ return UART16550_READ(OFS_RCV_BUFFER);
-+}
-+
-+static int kgdbInitialized = 0;
-+
-+void
-+kgdbInit(void)
-+{
-+#if CONFIG_AR5315
-+ sysRegWrite(AR5315_WDC, WDC_IGNORE_EXPIRATION);
-+#else
-+ sysRegWrite(AR531X_WD_CTRL, AR531X_WD_CTRL_IGNORE_EXPIRATION);
-+#endif
-+
-+ if (!kgdbInitialized) {
-+ printk("Setting debug traps - please connect the remote debugger.\n");
-+ set_debug_traps();
-+ kgdbInitialized = 1;
-+ }
-+ breakpoint();
-+}
-+
-+int
-+kgdbEnabled(void)
-+{
-+ return kgdbInitialized;
-+}
-+
-+#define DEBUG_CHAR '\001';
-+
-+int
-+kgdbInterrupt(void)
-+{
-+ if (!kgdbInitialized) {
-+ return 0;
-+ }
-+
-+ /*
-+ * Try to avoid swallowing too much input: Only consume
-+ * a character if nothing new has arrived. Yes, there's
-+ * still a small hole here, and we may lose an input
-+ * character now and then.
-+ */
-+ if (UART16550_READ(OFS_LINE_STATUS) & 1) {
-+ return 0;
-+ } else {
-+ return UART16550_READ(OFS_RCV_BUFFER) == DEBUG_CHAR;
-+ }
-+}
-+#endif
-+
-+
-+void
-+putDebugChar(char byte)
-+{
-+ if (!serialPortInitialized) {
-+ serialPortInitialized = 1;
-+ debugPortInit(BAUD_DEFAULT,
-+ UART16550_DATA_8BIT,
-+ UART16550_PARITY_NONE, UART16550_STOP_1BIT);
-+ }
-+
-+ while ((UART16550_READ(OFS_LINE_STATUS) &0x20) == 0);
-+ UART16550_WRITE(OFS_SEND_BUFFER, byte);
-+ }
-+#endif /* CONFIG_EARLY_PRINTK_HACK || CONFIG_KGDB */
-diff -urN linux-mips/arch/mips/ar531x/ar531xgpio.c mips-linux-2.4.25/arch/mips/ar531x/ar531xgpio.c
---- linux-mips/arch/mips/ar531x/ar531xgpio.c 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/ar531xgpio.c 2005-12-30 17:26:30.606883840 +0000
-@@ -0,0 +1,147 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * Support for GPIO -- General Purpose Input/Output Pins
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/kernel.h>
-+#include <linux/signal.h>
-+#include <linux/interrupt.h>
-+#include <linux/irq.h>
-+
-+#include "ar531xlnx.h"
-+
-+/* GPIO Interrupt Support */
-+
-+/* Turn on the specified AR531X_GPIO_IRQ interrupt */
-+static unsigned int
-+ar531x_gpio_intr_startup(unsigned int irq)
-+{
-+ ar531x_gpio_intr_enable(irq);
-+ return 0;
-+}
-+
-+/* Turn off the specified AR531X_GPIO_IRQ interrupt */
-+static void
-+ar531x_gpio_intr_shutdown(unsigned int irq)
-+{
-+ ar531x_gpio_intr_disable(irq);
-+}
-+
-+u32 gpioIntMask = 0;
-+
-+/* Enable the specified AR531X_GPIO_IRQ interrupt */
-+void
-+ar531x_gpio_intr_enable(unsigned int irq)
-+{
-+ u32 reg;
-+ int gpio;
-+
-+#ifndef CONFIG_AR5315
-+ gpio = irq - AR531X_GPIO_IRQ_BASE;
-+ gpioIntMask |= gpio;
-+
-+ reg = sysRegRead(AR531X_GPIO_CR);
-+ reg &= ~(GPIO_CR_M(gpio) | GPIO_CR_UART(gpio) | GPIO_CR_INT(gpio));
-+ reg |= GPIO_CR_I(gpio);
-+ reg |= GPIO_CR_INT(gpio);
-+
-+ sysRegWrite(AR531X_GPIO_CR, reg);
-+ (void)sysRegRead(AR531X_GPIO_CR); /* flush to hardware */
-+#endif
-+}
-+
-+/* Disable the specified AR531X_GPIO_IRQ interrupt */
-+void
-+ar531x_gpio_intr_disable(unsigned int irq)
-+{
-+ u32 reg;
-+ int gpio;
-+
-+#ifndef CONFIG_AR5315
-+ gpio = irq - AR531X_GPIO_IRQ_BASE;
-+ reg = sysRegRead(AR531X_GPIO_CR);
-+ reg &= ~(GPIO_CR_M(gpio) | GPIO_CR_UART(gpio) | GPIO_CR_INT(gpio));
-+ reg |= GPIO_CR_I(gpio);
-+ /* No GPIO_CR_INT bit */
-+
-+ sysRegWrite(AR531X_GPIO_CR, reg);
-+ (void)sysRegRead(AR531X_GPIO_CR); /* flush to hardware */
-+
-+ gpioIntMask &= ~gpio;
-+#endif
-+}
-+
-+static void
-+ar531x_gpio_intr_ack(unsigned int irq)
-+{
-+ ar531x_gpio_intr_disable(irq);
-+}
-+
-+static void
-+ar531x_gpio_intr_end(unsigned int irq)
-+{
-+ if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
-+ ar531x_gpio_intr_enable(irq);
-+}
-+
-+static void
-+ar531x_gpio_intr_set_affinity(unsigned int irq, unsigned long mask)
-+{
-+ /* Only 1 CPU; ignore affinity request */
-+}
-+
-+int ar531x_gpio_irq_base;
-+
-+struct hw_interrupt_type ar531x_gpio_intr_controller = {
-+ "AR531X GPIO",
-+ ar531x_gpio_intr_startup,
-+ ar531x_gpio_intr_shutdown,
-+ ar531x_gpio_intr_enable,
-+ ar531x_gpio_intr_disable,
-+ ar531x_gpio_intr_ack,
-+ ar531x_gpio_intr_end,
-+ ar531x_gpio_intr_set_affinity,
-+};
-+
-+void
-+ar531x_gpio_intr_init(int irq_base)
-+{
-+ int i;
-+
-+ for (i = irq_base; i < irq_base + AR531X_GPIO_IRQ_COUNT; i++) {
-+ irq_desc[i].status = IRQ_DISABLED;
-+ irq_desc[i].action = NULL;
-+ irq_desc[i].depth = 1;
-+ irq_desc[i].handler = &ar531x_gpio_intr_controller;
-+ }
-+
-+ ar531x_gpio_irq_base = irq_base;
-+}
-+
-+/* ARGSUSED */
-+void
-+spurious_gpio_handler(int cpl, void *dev_id, struct pt_regs *regs)
-+{
-+ u32 gpioDataIn;
-+#if CONFIG_AR5315
-+ gpioDataIn = sysRegRead(AR5315_GPIO_DI) & gpioIntMask;
-+#else
-+ gpioDataIn = sysRegRead(AR531X_GPIO_DI) & gpioIntMask;
-+#endif
-+
-+ printk("spurious_gpio_handler: 0x%x di=0x%8.8x gpioIntMask=0x%8.8x\n",
-+ cpl, gpioDataIn, gpioIntMask);
-+}
-+
-+struct irqaction spurious_gpio =
-+ {spurious_gpio_handler, SA_INTERRUPT, 0, "spurious_gpio",
-+ NULL, NULL};
-+
-diff -urN linux-mips/arch/mips/ar531x/ar531x.h mips-linux-2.4.25/arch/mips/ar531x/ar531x.h
---- linux-mips/arch/mips/ar531x/ar531x.h 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/ar531x.h 2005-12-30 17:26:30.605883992 +0000
-@@ -0,0 +1,1018 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+#ifndef AR531X_H
-+#define AR531X_H 1
-+
-+#ifndef CONFIG_AR5315
-+
-+#include <asm/addrspace.h>
-+
-+/* Address Map */
-+#define AR531X_WLAN0 0x18000000
-+#define AR531X_WLAN1 0x18500000
-+#define AR531X_ENET0 0x18100000
-+#define AR531X_ENET1 0x18200000
-+#define AR531X_SDRAMCTL 0x18300000
-+#define AR531X_FLASHCTL 0x18400000
-+#define AR531X_APBBASE 0x1c000000
-+#define AR531X_FLASH 0x1e000000
-+#define AR531X_UART0 0xbc000003 /* UART MMR */
-+
-+/*
-+ * AR531X_NUM_ENET_MAC defines the number of ethernet MACs that
-+ * should be considered available. The AR5312 supports 2 enet MACS,
-+ * even though many reference boards only actually use 1 of them
-+ * (i.e. Only MAC 0 is actually connected to an enet PHY or PHY switch.
-+ * The AR2312 supports 1 enet MAC.
-+ */
-+#define AR531X_NUM_ENET_MAC 2
-+
-+/*
-+ * Need these defines to determine true number of ethernet MACs
-+ */
-+#define AR5212_AR5312_REV2 0x0052 /* AR5312 WMAC (AP31) */
-+#define AR5212_AR5312_REV7 0x0057 /* AR5312 WMAC (AP30-040) */
-+#define AR5212_AR2313_REV8 0x0058 /* AR2313 WMAC (AP43-030) */
-+#define AR531X_RADIO_MASK_OFF 0xc8
-+#define AR531X_RADIO0_MASK 0x0003
-+#define AR531X_RADIO1_MASK 0x000c
-+#define AR531X_RADIO1_S 2
-+
-+/*
-+ * AR531X_NUM_WMAC defines the number of Wireless MACs that\
-+ * should be considered available.
-+ */
-+#define AR531X_NUM_WMAC 2
-+
-+/* Reset/Timer Block Address Map */
-+#define AR531X_RESETTMR (AR531X_APBBASE + 0x3000)
-+#define AR531X_TIMER (AR531X_RESETTMR + 0x0000) /* countdown timer */
-+#define AR531X_WD_CTRL (AR531X_RESETTMR + 0x0008) /* watchdog cntrl */
-+#define AR531X_WD_TIMER (AR531X_RESETTMR + 0x000c) /* watchdog timer */
-+#define AR531X_ISR (AR531X_RESETTMR + 0x0010) /* Intr Status Reg */
-+#define AR531X_IMR (AR531X_RESETTMR + 0x0014) /* Intr Mask Reg */
-+#define AR531X_RESET (AR531X_RESETTMR + 0x0020)
-+#define AR5312_CLOCKCTL1 (AR531X_RESETTMR + 0x0064)
-+#define AR5312_SCRATCH (AR531X_RESETTMR + 0x006c)
-+#define AR531X_PROCADDR (AR531X_RESETTMR + 0x0070)
-+#define AR531X_PROC1 (AR531X_RESETTMR + 0x0074)
-+#define AR531X_DMAADDR (AR531X_RESETTMR + 0x0078)
-+#define AR531X_DMA1 (AR531X_RESETTMR + 0x007c)
-+#define AR531X_ENABLE (AR531X_RESETTMR + 0x0080) /* interface enb */
-+#define AR531X_REV (AR531X_RESETTMR + 0x0090) /* revision */
-+
-+/* AR531X_WD_CTRL register bit field definitions */
-+#define AR531X_WD_CTRL_IGNORE_EXPIRATION 0x0000
-+#define AR531X_WD_CTRL_NMI 0x0001
-+#define AR531X_WD_CTRL_RESET 0x0002
-+
-+/* AR531X_ISR register bit field definitions */
-+#define AR531X_ISR_NONE 0x0000
-+#define AR531X_ISR_TIMER 0x0001
-+#define AR531X_ISR_AHBPROC 0x0002
-+#define AR531X_ISR_AHBDMA 0x0004
-+#define AR531X_ISR_GPIO 0x0008
-+#define AR531X_ISR_UART0 0x0010
-+#define AR531X_ISR_UART0DMA 0x0020
-+#define AR531X_ISR_WD 0x0040
-+#define AR531X_ISR_LOCAL 0x0080
-+
-+/* AR531X_RESET register bit field definitions */
-+#define AR531X_RESET_SYSTEM 0x00000001 /* cold reset full system */
-+#define AR531X_RESET_PROC 0x00000002 /* cold reset MIPS core */
-+#define AR531X_RESET_WLAN0 0x00000004 /* cold reset WLAN MAC and BB */
-+#define AR531X_RESET_EPHY0 0x00000008 /* cold reset ENET0 phy */
-+#define AR531X_RESET_EPHY1 0x00000010 /* cold reset ENET1 phy */
-+#define AR531X_RESET_ENET0 0x00000020 /* cold reset ENET0 mac */
-+#define AR531X_RESET_ENET1 0x00000040 /* cold reset ENET1 mac */
-+#define AR531X_RESET_UART0 0x00000100 /* cold reset UART0 (high speed) */
-+#define AR531X_RESET_WLAN1 0x00000200 /* cold reset WLAN MAC/BB */
-+#define AR531X_RESET_APB 0x00000400 /* cold reset APB (ar5312) */
-+#define AR531X_RESET_WARM_PROC 0x00001000 /* warm reset MIPS core */
-+#define AR531X_RESET_WARM_WLAN0_MAC 0x00002000 /* warm reset WLAN0 MAC */
-+#define AR531X_RESET_WARM_WLAN0_BB 0x00004000 /* warm reset WLAN0 BaseBand */
-+#define AR531X_RESET_NMI 0x00010000 /* send an NMI to the processor */
-+#define AR531X_RESET_WARM_WLAN1_MAC 0x00020000 /* warm reset WLAN1 mac */
-+#define AR531X_RESET_WARM_WLAN1_BB 0x00040000 /* warm reset WLAN1 baseband */
-+#define AR531X_RESET_LOCAL_BUS 0x00080000 /* reset local bus */
-+#define AR531X_RESET_WDOG 0x00100000 /* last reset was a watchdog */
-+
-+#define AR531X_RESET_WMAC0_BITS \
-+ AR531X_RESET_WLAN0 |\
-+ AR531X_RESET_WARM_WLAN0_MAC |\
-+ AR531X_RESET_WARM_WLAN0_BB
-+
-+#define AR531X_RESERT_WMAC1_BITS \
-+ AR531X_RESET_WLAN1 |\
-+ AR531X_RESET_WARM_WLAN1_MAC |\
-+ AR531X_RESET_WARM_WLAN1_BB
-+
-+/* AR5312_CLOCKCTL1 register bit field definitions */
-+#define AR5312_CLOCKCTL1_PREDIVIDE_MASK 0x00000030
-+#define AR5312_CLOCKCTL1_PREDIVIDE_SHIFT 4
-+#define AR5312_CLOCKCTL1_MULTIPLIER_MASK 0x00001f00
-+#define AR5312_CLOCKCTL1_MULTIPLIER_SHIFT 8
-+#define AR5312_CLOCKCTL1_DOUBLER_MASK 0x00010000
-+
-+/* Valid for AR5312 and AR2312 */
-+#define AR5312_CLOCKCTL1_PREDIVIDE_MASK 0x00000030
-+#define AR5312_CLOCKCTL1_PREDIVIDE_SHIFT 4
-+#define AR5312_CLOCKCTL1_MULTIPLIER_MASK 0x00001f00
-+#define AR5312_CLOCKCTL1_MULTIPLIER_SHIFT 8
-+#define AR5312_CLOCKCTL1_DOUBLER_MASK 0x00010000
-+
-+/* Valid for AR2313 */
-+#define AR2313_CLOCKCTL1_PREDIVIDE_MASK 0x00003000
-+#define AR2313_CLOCKCTL1_PREDIVIDE_SHIFT 12
-+#define AR2313_CLOCKCTL1_MULTIPLIER_MASK 0x001f0000
-+#define AR2313_CLOCKCTL1_MULTIPLIER_SHIFT 16
-+#define AR2313_CLOCKCTL1_DOUBLER_MASK 0x00000000
-+
-+
-+/* AR531X_ENABLE register bit field definitions */
-+#define AR531X_ENABLE_WLAN0 0x0001
-+#define AR531X_ENABLE_ENET0 0x0002
-+#define AR531X_ENABLE_ENET1 0x0004
-+#define AR531X_ENABLE_UART_AND_WLAN1_PIO 0x0008 /* UART, and WLAN1 PIOs */
-+#define AR531X_ENABLE_WLAN1_DMA 0x0010 /* WLAN1 DMAs */
-+#define AR531X_ENABLE_WLAN1 \
-+ (AR531X_ENABLE_UART_AND_WLAN1_PIO | AR531X_ENABLE_WLAN1_DMA)
-+
-+/* AR531X_REV register bit field definitions */
-+#define AR531X_REV_WMAC_MAJ 0xf000
-+#define AR531X_REV_WMAC_MAJ_S 12
-+#define AR531X_REV_WMAC_MIN 0x0f00
-+#define AR531X_REV_WMAC_MIN_S 8
-+#define AR531X_REV_MAJ 0x00f0
-+#define AR531X_REV_MAJ_S 4
-+#define AR531X_REV_MIN 0x000f
-+#define AR531X_REV_MIN_S 0
-+#define AR531X_REV_CHIP (REV_MAJ|REV_MIN)
-+
-+/* Major revision numbers, bits 7..4 of Revision ID register */
-+#define AR531X_REV_MAJ_AR5312 0x4
-+#define AR531X_REV_MAJ_AR2313 0x5
-+
-+/* Minor revision numbers, bits 3..0 of Revision ID register */
-+#define AR5312_REV_MIN_DUAL 0x0 /* Dual WLAN version */
-+#define AR5312_REV_MIN_SINGLE 0x1 /* Single WLAN version */
-+
-+/* AR531X_FLASHCTL register bit field definitions */
-+#define FLASHCTL_IDCY 0x0000000f /* Idle cycle turn around time */
-+#define FLASHCTL_IDCY_S 0
-+#define FLASHCTL_WST1 0x000003e0 /* Wait state 1 */
-+#define FLASHCTL_WST1_S 5
-+#define FLASHCTL_RBLE 0x00000400 /* Read byte lane enable */
-+#define FLASHCTL_WST2 0x0000f800 /* Wait state 2 */
-+#define FLASHCTL_WST2_S 11
-+#define FLASHCTL_AC 0x00070000 /* Flash address check (added) */
-+#define FLASHCTL_AC_S 16
-+#define FLASHCTL_AC_128K 0x00000000
-+#define FLASHCTL_AC_256K 0x00010000
-+#define FLASHCTL_AC_512K 0x00020000
-+#define FLASHCTL_AC_1M 0x00030000
-+#define FLASHCTL_AC_2M 0x00040000
-+#define FLASHCTL_AC_4M 0x00050000
-+#define FLASHCTL_AC_8M 0x00060000
-+#define FLASHCTL_AC_RES 0x00070000 /* 16MB is not supported */
-+#define FLASHCTL_E 0x00080000 /* Flash bank enable (added) */
-+#define FLASHCTL_BUSERR 0x01000000 /* Bus transfer error status flag */
-+#define FLASHCTL_WPERR 0x02000000 /* Write protect error status flag */
-+#define FLASHCTL_WP 0x04000000 /* Write protect */
-+#define FLASHCTL_BM 0x08000000 /* Burst mode */
-+#define FLASHCTL_MW 0x30000000 /* Memory width */
-+#define FLASHCTL_MWx8 0x00000000 /* Memory width x8 */
-+#define FLASHCTL_MWx16 0x10000000 /* Memory width x16 */
-+#define FLASHCTL_MWx32 0x20000000 /* Memory width x32 (not supported) */
-+#define FLASHCTL_ATNR 0x00000000 /* Access type == no retry */
-+#define FLASHCTL_ATR 0x80000000 /* Access type == retry every */
-+#define FLASHCTL_ATR4 0xc0000000 /* Access type == retry every 4 */
-+
-+/* ARM Flash Controller -- 3 flash banks with either x8 or x16 devices. */
-+#define AR531X_FLASHCTL0 (AR531X_FLASHCTL + 0x00)
-+#define AR531X_FLASHCTL1 (AR531X_FLASHCTL + 0x04)
-+#define AR531X_FLASHCTL2 (AR531X_FLASHCTL + 0x08)
-+
-+/* ARM SDRAM Controller -- just enough to determine memory size */
-+#define AR531X_MEM_CFG1 (AR531X_SDRAMCTL + 0x04)
-+#define MEM_CFG1_AC0 0x00000700 /* bank 0: SDRAM addr check (added) */
-+#define MEM_CFG1_AC0_S 8
-+#define MEM_CFG1_AC1 0x00007000 /* bank 1: SDRAM addr check (added) */
-+#define MEM_CFG1_AC1_S 12
-+
-+/* GPIO Address Map */
-+#define AR531X_GPIO (AR531X_APBBASE + 0x2000)
-+#define AR531X_GPIO_DO (AR531X_GPIO + 0x00) /* output register */
-+#define AR531X_GPIO_DI (AR531X_GPIO + 0x04) /* intput register */
-+#define AR531X_GPIO_CR (AR531X_GPIO + 0x08) /* control register */
-+
-+/* GPIO Control Register bit field definitions */
-+#define GPIO_CR_M(x) (1 << (x)) /* mask for i/o */
-+#define GPIO_CR_O(x) (0 << (x)) /* mask for output */
-+#define GPIO_CR_I(x) (1 << (x)) /* mask for input */
-+#define GPIO_CR_INT(x) (1 << ((x)+8)) /* mask for interrupt */
-+#define GPIO_CR_UART(x) (1 << ((x)+16)) /* uart multiplex */
-+
-+
-+typedef unsigned int AR531X_REG;
-+
-+#define sysRegRead(phys) \
-+ (*(volatile AR531X_REG *)PHYS_TO_K1(phys))
-+
-+#define sysRegWrite(phys, val) \
-+ ((*(volatile AR531X_REG *)PHYS_TO_K1(phys)) = (val))
-+
-+
-+/*
-+ * This is board-specific data that is stored in a "fixed" location in flash.
-+ * It is shared across operating systems, so it should not be changed lightly.
-+ * The main reason we need it is in order to extract the ethernet MAC
-+ * address(es).
-+ */
-+struct ar531x_boarddata {
-+ u32 magic; /* board data is valid */
-+#define AR531X_BD_MAGIC 0x35333131 /* "5311", for all 531x platforms */
-+ u16 cksum; /* checksum (starting with BD_REV 2) */
-+ u16 rev; /* revision of this struct */
-+#define BD_REV 4
-+ char boardName[64]; /* Name of board */
-+ u16 major; /* Board major number */
-+ u16 minor; /* Board minor number */
-+ u32 config; /* Board configuration */
-+#define BD_ENET0 0x00000001 /* ENET0 is stuffed */
-+#define BD_ENET1 0x00000002 /* ENET1 is stuffed */
-+#define BD_UART1 0x00000004 /* UART1 is stuffed */
-+#define BD_UART0 0x00000008 /* UART0 is stuffed (dma) */
-+#define BD_RSTFACTORY 0x00000010 /* Reset factory defaults stuffed */
-+#define BD_SYSLED 0x00000020 /* System LED stuffed */
-+#define BD_EXTUARTCLK 0x00000040 /* External UART clock */
-+#define BD_CPUFREQ 0x00000080 /* cpu freq is valid in nvram */
-+#define BD_SYSFREQ 0x00000100 /* sys freq is set in nvram */
-+#define BD_WLAN0 0x00000200 /* Enable WLAN0 */
-+#define BD_MEMCAP 0x00000400 /* CAP SDRAM @ memCap for testing */
-+#define BD_DISWATCHDOG 0x00000800 /* disable system watchdog */
-+#define BD_WLAN1 0x00001000 /* Enable WLAN1 (ar5212) */
-+#define BD_ISCASPER 0x00002000 /* FLAG for AR2312 */
-+#define BD_WLAN0_2G_EN 0x00004000 /* FLAG for radio0_2G */
-+#define BD_WLAN0_5G_EN 0x00008000 /* FLAG for radio0_2G */
-+#define BD_WLAN1_2G_EN 0x00020000 /* FLAG for radio0_2G */
-+#define BD_WLAN1_5G_EN 0x00040000 /* FLAG for radio0_2G */
-+ u16 resetConfigGpio; /* Reset factory GPIO pin */
-+ u16 sysLedGpio; /* System LED GPIO pin */
-+
-+ u32 cpuFreq; /* CPU core frequency in Hz */
-+ u32 sysFreq; /* System frequency in Hz */
-+ u32 cntFreq; /* Calculated C0_COUNT frequency */
-+
-+ u8 wlan0Mac[6];
-+ u8 enet0Mac[6];
-+ u8 enet1Mac[6];
-+
-+ u16 pciId; /* Pseudo PCIID for common code */
-+ u16 memCap; /* cap bank1 in MB */
-+
-+ /* version 3 */
-+ u8 wlan1Mac[6]; /* (ar5212) */
-+};
-+
-+#else
-+
-+/*
-+ * Address map
-+ */
-+#define AR5315_SDRAM0 0x00000000 /* DRAM */
-+#define AR5315_SPI_READ 0x08000000 /* SPI FLASH */
-+#define AR5315_WLAN0 0xB0000000 /* Wireless MMR */
-+#define AR5315_PCI 0xB0100000 /* PCI MMR */
-+#define AR5315_SDRAMCTL 0xB0300000 /* SDRAM MMR */
-+#define AR5315_LOCAL 0xB0400000 /* LOCAL BUS MMR */
-+#define AR5315_ENET0 0xB0500000 /* ETHERNET MMR */
-+#define AR5315_DSLBASE 0xB1000000 /* RESET CONTROL MMR */
-+#define AR5315_UART0 0xB1100003 /* UART MMR */
-+#define AR5315_SPI 0xB1300000 /* SPI FLASH MMR */
-+#define AR5315_FLASHBT 0xBfc00000 /* ro boot alias to FLASH */
-+#define AR5315_RAM1 0x40000000 /* ram alias */
-+#define AR5315_PCIEXT 0x80000000 /* pci external */
-+#define AR5315_RAM2 0xc0000000 /* ram alias */
-+#define AR5315_RAM3 0xe0000000 /* ram alias */
-+
-+/*
-+ * Reset Register
-+ */
-+#define AR5315_COLD_RESET (AR5315_DSLBASE + 0x0000)
-+
-+/* Cold Reset */
-+#define RESET_COLD_AHB 0x00000001
-+#define RESET_COLD_APB 0x00000002
-+#define RESET_COLD_CPU 0x00000004
-+#define RESET_COLD_CPUWARM 0x00000008
-+#define RESET_SYSTEM (RESET_COLD_CPU | RESET_COLD_APB | RESET_COLD_AHB) /* full system */
-+
-+/* Warm Reset */
-+
-+#define AR5315_RESET (AR5315_DSLBASE + 0x0004)
-+
-+#define RESET_WARM_WLAN0_MAC 0x00000001 /* warm reset WLAN0 MAC */
-+#define RESET_WARM_WLAN0_BB 0x00000002 /* warm reset WLAN0 BaseBand */
-+#define RESET_MPEGTS_RSVD 0x00000004 /* warm reset MPEG-TS */
-+#define RESET_PCIDMA 0x00000008 /* warm reset PCI ahb/dma */
-+#define RESET_MEMCTL 0x00000010 /* warm reset memory controller */
-+#define RESET_LOCAL 0x00000020 /* warm reset local bus */
-+#define RESET_I2C_RSVD 0x00000040 /* warm reset I2C bus */
-+#define RESET_SPI 0x00000080 /* warm reset SPI interface */
-+#define RESET_UART0 0x00000100 /* warm reset UART0 */
-+#define RESET_IR_RSVD 0x00000200 /* warm reset IR interface */
-+#define RESET_EPHY0 0x00000400 /* cold reset ENET0 phy */
-+#define RESET_ENET0 0x00000800 /* cold reset ENET0 mac */
-+
-+/*
-+ * AHB master arbitration control
-+ */
-+#define AR5315_AHB_ARB_CTL (AR5315_DSLBASE + 0x0008)
-+
-+#define ARB_CPU 0x00000001 /* CPU, default */
-+#define ARB_WLAN 0x00000002 /* WLAN */
-+#define ARB_MPEGTS_RSVD 0x00000004 /* MPEG-TS */
-+#define ARB_LOCAL 0x00000008 /* LOCAL */
-+#define ARB_PCI 0x00000010 /* PCI */
-+#define ARB_ETHERNET 0x00000020 /* Ethernet */
-+#define ARB_RETRY 0x00000100 /* retry policy, debug only */
-+
-+/*
-+ * Config Register
-+ */
-+#define AR5315_ENDIAN_CTL (AR5315_DSLBASE + 0x000c)
-+
-+#define CONFIG_AHB 0x00000001 /* EC - AHB bridge endianess */
-+#define CONFIG_WLAN 0x00000002 /* WLAN byteswap */
-+#define CONFIG_MPEGTS_RSVD 0x00000004 /* MPEG-TS byteswap */
-+#define CONFIG_PCI 0x00000008 /* PCI byteswap */
-+#define CONFIG_MEMCTL 0x00000010 /* Memory controller endianess */
-+#define CONFIG_LOCAL 0x00000020 /* Local bus byteswap */
-+#define CONFIG_ETHERNET 0x00000040 /* Ethernet byteswap */
-+
-+#define CONFIG_MERGE 0x00000200 /* CPU write buffer merge */
-+#define CONFIG_CPU 0x00000400 /* CPU big endian */
-+#define CONFIG_PCIAHB 0x00000800
-+#define CONFIG_PCIAHB_BRIDGE 0x00001000
-+#define CONFIG_SPI 0x00008000 /* SPI byteswap */
-+#define CONFIG_CPU_DRAM 0x00010000
-+#define CONFIG_CPU_PCI 0x00020000
-+#define CONFIG_CPU_MMR 0x00040000
-+#define CONFIG_BIG 0x00000400
-+
-+
-+/*
-+ * NMI control
-+ */
-+#define AR5315_NMI_CTL (AR5315_DSLBASE + 0x0010)
-+
-+#define NMI_EN 1
-+
-+/*
-+ * Revision Register - Initial value is 0x3010 (WMAC 3.0, AR531X 1.0).
-+ */
-+#define AR5315_SREV (AR5315_DSLBASE + 0x0014)
-+
-+#define REV_MAJ 0x00f0
-+#define REV_MAJ_S 4
-+#define REV_MIN 0x000f
-+#define REV_MIN_S 0
-+#define REV_CHIP (REV_MAJ|REV_MIN)
-+
-+/*
-+ * Interface Enable
-+ */
-+#define AR5315_IF_CTL (AR5315_DSLBASE + 0x0018)
-+
-+#define IF_MASK 0x00000007
-+#define IF_DISABLED 0
-+#define IF_PCI 1
-+#define IF_TS_LOCAL 2
-+#define IF_ALL 3 /* only for emulation with separate pins */
-+#define IF_LOCAL_HOST 0x00000008
-+#define IF_PCI_HOST 0x00000010
-+#define IF_PCI_INTR 0x00000020
-+#define IF_PCI_CLK_MASK 0x00030000
-+#define IF_PCI_CLK_INPUT 0
-+#define IF_PCI_CLK_OUTPUT_LOW 1
-+#define IF_PCI_CLK_OUTPUT_CLK 2
-+#define IF_PCI_CLK_OUTPUT_HIGH 3
-+#define IF_PCI_CLK_SHIFT 16
-+
-+
-+/* Major revision numbers, bits 7..4 of Revision ID register */
-+#define REV_MAJ_AR5311 0x01
-+#define REV_MAJ_AR5312 0x04
-+#define REV_MAJ_AR5315 0x0B
-+
-+/*
-+ * APB Interrupt control
-+ */
-+
-+#define AR5315_ISR (AR5315_DSLBASE + 0x0020)
-+#define AR5315_IMR (AR5315_DSLBASE + 0x0024)
-+#define AR5315_GISR (AR5315_DSLBASE + 0x0028)
-+
-+#define ISR_UART0 0x0001 /* high speed UART */
-+#define ISR_I2C_RSVD 0x0002 /* I2C bus */
-+#define ISR_SPI 0x0004 /* SPI bus */
-+#define ISR_AHB 0x0008 /* AHB error */
-+#define ISR_APB 0x0010 /* APB error */
-+#define ISR_TIMER 0x0020 /* timer */
-+#define ISR_GPIO 0x0040 /* GPIO */
-+#define ISR_WD 0x0080 /* watchdog */
-+#define ISR_IR_RSVD 0x0100 /* IR */
-+
-+#define IMR_UART0 ISR_UART0
-+#define IMR_I2C_RSVD ISR_I2C_RSVD
-+#define IMR_SPI ISR_SPI
-+#define IMR_AHB ISR_AHB
-+#define IMR_APB ISR_APB
-+#define IMR_TIMER ISR_TIMER
-+#define IMR_GPIO ISR_GPIO
-+#define IMR_WD ISR_WD
-+#define IMR_IR_RSVD ISR_IR_RSVD
-+
-+#define GISR_MISC 0x0001
-+#define GISR_WLAN0 0x0002
-+#define GISR_MPEGTS_RSVD 0x0004
-+#define GISR_LOCALPCI 0x0008
-+#define GISR_WMACPOLL 0x0010
-+#define GISR_TIMER 0x0020
-+#define GISR_ETHERNET 0x0040
-+
-+/*
-+ * Interrupt routing from IO to the processor IP bits
-+ * Define our inter mask and level
-+ */
-+#define AR5315_INTR_MISCIO SR_IBIT3
-+#define AR5315_INTR_WLAN0 SR_IBIT4
-+#define AR5315_INTR_ENET0 SR_IBIT5
-+#define AR5315_INTR_LOCALPCI SR_IBIT6
-+#define AR5315_INTR_WMACPOLL SR_IBIT7
-+#define AR5315_INTR_COMPARE SR_IBIT8
-+
-+/*
-+ * Timers
-+ */
-+#define AR5315_TIMER (AR5315_DSLBASE + 0x0030)
-+#define AR5315_RELOAD (AR5315_DSLBASE + 0x0034)
-+#define AR5315_WD (AR5315_DSLBASE + 0x0038)
-+#define AR5315_WDC (AR5315_DSLBASE + 0x003c)
-+
-+#define WDC_RESET 0x00000002 /* reset on watchdog */
-+#define WDC_NMI 0x00000001 /* NMI on watchdog */
-+#define WDC_IGNORE_EXPIRATION 0x00000000
-+
-+/*
-+ * Interface Debug
-+ */
-+#define AR531X_FLASHDBG (AR531X_RESETTMR + 0x0040)
-+#define AR531X_MIIDBG (AR531X_RESETTMR + 0x0044)
-+
-+
-+/*
-+ * CPU Performance Counters
-+ */
-+#define AR5315_PERFCNT0 (AR5315_DSLBASE + 0x0048)
-+#define AR5315_PERFCNT1 (AR5315_DSLBASE + 0x004c)
-+
-+#define PERF_DATAHIT 0x0001 /* Count Data Cache Hits */
-+#define PERF_DATAMISS 0x0002 /* Count Data Cache Misses */
-+#define PERF_INSTHIT 0x0004 /* Count Instruction Cache Hits */
-+#define PERF_INSTMISS 0x0008 /* Count Instruction Cache Misses */
-+#define PERF_ACTIVE 0x0010 /* Count Active Processor Cycles */
-+#define PERF_WBHIT 0x0020 /* Count CPU Write Buffer Hits */
-+#define PERF_WBMISS 0x0040 /* Count CPU Write Buffer Misses */
-+
-+#define PERF_EB_ARDY 0x0001 /* Count EB_ARdy signal */
-+#define PERF_EB_AVALID 0x0002 /* Count EB_AValid signal */
-+#define PERF_EB_WDRDY 0x0004 /* Count EB_WDRdy signal */
-+#define PERF_EB_RDVAL 0x0008 /* Count EB_RdVal signal */
-+#define PERF_VRADDR 0x0010 /* Count valid read address cycles */
-+#define PERF_VWADDR 0x0020 /* Count valid write address cycles */
-+#define PERF_VWDATA 0x0040 /* Count valid write data cycles */
-+
-+/*
-+ * AHB Error Reporting.
-+ */
-+#define AR5315_AHB_ERR0 (AR5315_DSLBASE + 0x0050) /* error */
-+#define AR5315_AHB_ERR1 (AR5315_DSLBASE + 0x0054) /* haddr */
-+#define AR5315_AHB_ERR2 (AR5315_DSLBASE + 0x0058) /* hwdata */
-+#define AR5315_AHB_ERR3 (AR5315_DSLBASE + 0x005c) /* hrdata */
-+#define AR5315_AHB_ERR4 (AR5315_DSLBASE + 0x0060) /* status */
-+
-+#define AHB_ERROR_DET 1 /* AHB Error has been detected, */
-+ /* write 1 to clear all bits in ERR0 */
-+#define AHB_ERROR_OVR 2 /* AHB Error overflow has been detected */
-+#define AHB_ERROR_WDT 4 /* AHB Error due to wdt instead of hresp */
-+
-+#define PROCERR_HMAST 0x0000000f
-+#define PROCERR_HMAST_DFLT 0
-+#define PROCERR_HMAST_WMAC 1
-+#define PROCERR_HMAST_ENET 2
-+#define PROCERR_HMAST_PCIENDPT 3
-+#define PROCERR_HMAST_LOCAL 4
-+#define PROCERR_HMAST_CPU 5
-+#define PROCERR_HMAST_PCITGT 6
-+
-+#define PROCERR_HMAST_S 0
-+#define PROCERR_HWRITE 0x00000010
-+#define PROCERR_HSIZE 0x00000060
-+#define PROCERR_HSIZE_S 5
-+#define PROCERR_HTRANS 0x00000180
-+#define PROCERR_HTRANS_S 7
-+#define PROCERR_HBURST 0x00000e00
-+#define PROCERR_HBURST_S 9
-+
-+
-+
-+/*
-+ * Clock Control
-+ */
-+#define AR5315_PLLC_CTL (AR5315_DSLBASE + 0x0064)
-+#define AR5315_PLLV_CTL (AR5315_DSLBASE + 0x0068)
-+#define AR5315_CPUCLK (AR5315_DSLBASE + 0x006c)
-+#define AR5315_AMBACLK (AR5315_DSLBASE + 0x0070)
-+#define AR5315_SYNCCLK (AR5315_DSLBASE + 0x0074)
-+#define AR5315_DSL_SLEEP_CTL (AR5315_DSLBASE + 0x0080)
-+#define AR5315_DSL_SLEEP_DUR (AR5315_DSLBASE + 0x0084)
-+
-+/* PLLc Control fields */
-+#define PLLC_REF_DIV_M 0x00000003
-+#define PLLC_REF_DIV_S 0
-+#define PLLC_FDBACK_DIV_M 0x0000007C
-+#define PLLC_FDBACK_DIV_S 2
-+#define PLLC_ADD_FDBACK_DIV_M 0x00000080
-+#define PLLC_ADD_FDBACK_DIV_S 7
-+#define PLLC_CLKC_DIV_M 0x0001c000
-+#define PLLC_CLKC_DIV_S 14
-+#define PLLC_CLKM_DIV_M 0x00700000
-+#define PLLC_CLKM_DIV_S 20
-+
-+/* CPU CLK Control fields */
-+#define CPUCLK_CLK_SEL_M 0x00000003
-+#define CPUCLK_CLK_SEL_S 0
-+#define CPUCLK_CLK_DIV_M 0x0000000c
-+#define CPUCLK_CLK_DIV_S 2
-+
-+/* AMBA CLK Control fields */
-+#define AMBACLK_CLK_SEL_M 0x00000003
-+#define AMBACLK_CLK_SEL_S 0
-+#define AMBACLK_CLK_DIV_M 0x0000000c
-+#define AMBACLK_CLK_DIV_S 2
-+
-+#if defined(COBRA_EMUL)
-+#define AR5315_AMBA_CLOCK_RATE 20000000
-+#define AR5315_CPU_CLOCK_RATE 40000000
-+#else
-+#if defined(DEFAULT_PLL)
-+#define AR5315_AMBA_CLOCK_RATE 40000000
-+#define AR5315_CPU_CLOCK_RATE 40000000
-+#else
-+#define AR5315_AMBA_CLOCK_RATE 92000000
-+#define AR5315_CPU_CLOCK_RATE 184000000
-+#endif /* ! DEFAULT_PLL */
-+#endif /* ! COBRA_EMUL */
-+
-+#define AR5315_UART_CLOCK_RATE AR5315_AMBA_CLOCK_RATE
-+#define AR5315_SDRAM_CLOCK_RATE AR5315_AMBA_CLOCK_RATE
-+
-+/*
-+ * The UART computes baud rate as:
-+ * baud = clock / (16 * divisor)
-+ * where divisor is specified as a High Byte (DLM) and a Low Byte (DLL).
-+ */
-+#define DESIRED_BAUD_RATE 38400
-+
-+/*
-+ * The WATCHDOG value is computed as
-+ * 10 seconds * AR531X_WATCHDOG_CLOCK_RATE
-+ */
-+#define DESIRED_WATCHDOG_SECONDS 10
-+#define AR531X_WATCHDOG_TIME \
-+ (DESIRED_WATCHDOG_SECONDS * AR531X_WATCHDOG_CLOCK_RATE)
-+
-+
-+#define CLOCKCTL_UART0 0x0010 /* enable UART0 external clock */
-+
-+
-+ /*
-+ * Applicable "PCICFG" bits for WLAN(s). Assoc status and LED mode.
-+ */
-+#define AR531X_PCICFG (AR531X_RESETTMR + 0x00b0)
-+#define ASSOC_STATUS_M 0x00000003
-+#define ASSOC_STATUS_NONE 0
-+#define ASSOC_STATUS_PENDING 1
-+#define ASSOC_STATUS_ASSOCIATED 2
-+#define LED_MODE_M 0x0000001c
-+#define LED_BLINK_THRESHOLD_M 0x000000e0
-+#define LED_SLOW_BLINK_MODE 0x00000100
-+
-+/*
-+ * GPIO
-+ */
-+
-+#define AR5315_GPIO_DI (AR5315_DSLBASE + 0x0088)
-+#define AR5315_GPIO_DO (AR5315_DSLBASE + 0x0090)
-+#define AR5315_GPIO_CR (AR5315_DSLBASE + 0x0098)
-+#define AR5315_GPIO_INT (AR5315_DSLBASE + 0x00a0)
-+
-+#define GPIO_CR_M(x) (1 << (x)) /* mask for i/o */
-+#define GPIO_CR_O(x) (1 << (x)) /* output */
-+#define GPIO_CR_I(x) (0 << (x)) /* input */
-+
-+#define GPIO_INT(x,Y) ((x) << (8 * (Y))) /* interrupt enable */
-+#define GPIO_INT_M(Y) ((0x3F) << (8 * (Y))) /* mask for int */
-+#define GPIO_INT_LVL(x,Y) ((x) << (8 * (Y) + 6)) /* interrupt level */
-+#define GPIO_INT_LVL_M(Y) ((0x3) << (8 * (Y) + 6)) /* mask for int level */
-+
-+#define AR5315_RESET_GPIO 5
-+#define AR5315_NUM_GPIO 22
-+
-+
-+/*
-+ * PCI Clock Control
-+ */
-+
-+#define AR5315_PCICLK (AR5315_DSLBASE + 0x00a4)
-+
-+#define PCICLK_INPUT_M 0x3
-+#define PCICLK_INPUT_S 0
-+
-+#define PCICLK_PLLC_CLKM 0
-+#define PCICLK_PLLC_CLKM1 1
-+#define PCICLK_PLLC_CLKC 2
-+#define PCICLK_REF_CLK 3
-+
-+#define PCICLK_DIV_M 0xc
-+#define PCICLK_DIV_S 2
-+
-+#define PCICLK_IN_FREQ 0
-+#define PCICLK_IN_FREQ_DIV_6 1
-+#define PCICLK_IN_FREQ_DIV_8 2
-+#define PCICLK_IN_FREQ_DIV_10 3
-+
-+/*
-+ * Observation Control Register
-+ */
-+#define AR5315_OCR (AR5315_DSLBASE + 0x00b0)
-+#define OCR_GPIO0_IRIN 0x0040
-+#define OCR_GPIO1_IROUT 0x0080
-+#define OCR_GPIO3_RXCLR 0x0200
-+
-+/*
-+ * General Clock Control
-+ */
-+
-+#define AR5315_MISCCLK (AR5315_DSLBASE + 0x00b4)
-+#define MISCCLK_PLLBYPASS_EN 0x00000001
-+#define MISCCLK_PROCREFCLK 0x00000002
-+
-+/*
-+ * SDRAM Controller
-+ * - No read or write buffers are included.
-+ */
-+#define AR5315_MEM_CFG (AR5315_SDRAMCTL + 0x00)
-+#define AR5315_MEM_CTRL (AR5315_SDRAMCTL + 0x0c)
-+#define AR5315_MEM_REF (AR5315_SDRAMCTL + 0x10)
-+
-+#define SDRAM_DATA_WIDTH_M 0x00006000
-+#define SDRAM_DATA_WIDTH_S 13
-+
-+#define SDRAM_COL_WIDTH_M 0x00001E00
-+#define SDRAM_COL_WIDTH_S 9
-+
-+#define SDRAM_ROW_WIDTH_M 0x000001E0
-+#define SDRAM_ROW_WIDTH_S 5
-+
-+#define SDRAM_BANKADDR_BITS_M 0x00000018
-+#define SDRAM_BANKADDR_BITS_S 3
-+
-+
-+/*
-+ * SDRAM Memory Refresh (MEM_REF) value is computed as:
-+ * MEMCTL_SREFR = (Tr * hclk_freq) / R
-+ * where Tr is max. time of refresh of any single row
-+ * R is number of rows in the DRAM
-+ * For most 133MHz SDRAM parts, Tr=64ms, R=4096 or 8192
-+ */
-+#if defined(COBRA_EMUL)
-+#define AR5315_SDRAM_MEMORY_REFRESH_VALUE 0x96
-+#else
-+#if defined(DEFAULT_PLL)
-+#define AR5315_SDRAM_MEMORY_REFRESH_VALUE 0x200
-+#else
-+#define AR5315_SDRAM_MEMORY_REFRESH_VALUE 0x61a
-+#endif /* ! DEFAULT_PLL */
-+#endif
-+
-+#if defined(AR5315)
-+
-+#define AR5315_SDRAM_DDR_SDRAM 0 /* Not DDR SDRAM */
-+#define AR5315_SDRAM_DATA_WIDTH 16 /* bits */
-+#define AR5315_SDRAM_COL_WIDTH 8
-+#define AR5315_SDRAM_ROW_WIDTH 12
-+
-+#else
-+
-+#define AR5315_SDRAM_DDR_SDRAM 0 /* Not DDR SDRAM */
-+#define AR5315_SDRAM_DATA_WIDTH 16
-+#define AR5315_SDRAM_COL_WIDTH 8
-+#define AR5315_SDRAM_ROW_WIDTH 12
-+
-+#endif /* ! AR5315 */
-+
-+/*
-+ * SPI Flash Interface Registers
-+ */
-+
-+#define AR5315_SPI_CTL (AR5315_SPI + 0x00)
-+#define AR5315_SPI_OPCODE (AR5315_SPI + 0x04)
-+#define AR5315_SPI_DATA (AR5315_SPI + 0x08)
-+
-+#define SPI_CTL_START 0x00000100
-+#define SPI_CTL_BUSY 0x00010000
-+#define SPI_CTL_TXCNT_MASK 0x0000000f
-+#define SPI_CTL_RXCNT_MASK 0x000000f0
-+#define SPI_CTL_TX_RX_CNT_MASK 0x000000ff
-+#define SPI_CTL_SIZE_MASK 0x00060000
-+
-+#define SPI_CTL_CLK_SEL_MASK 0x03000000
-+#define SPI_OPCODE_MASK 0x000000ff
-+
-+/*
-+ * PCI-MAC Configuration registers
-+ */
-+#define PCI_MAC_RC (AR5315_PCI + 0x4000)
-+#define PCI_MAC_SCR (AR5315_PCI + 0x4004)
-+#define PCI_MAC_INTPEND (AR5315_PCI + 0x4008)
-+#define PCI_MAC_SFR (AR5315_PCI + 0x400C)
-+#define PCI_MAC_PCICFG (AR5315_PCI + 0x4010)
-+#define PCI_MAC_SREV (AR5315_PCI + 0x4020)
-+
-+#define PCI_MAC_RC_MAC 0x00000001
-+#define PCI_MAC_RC_BB 0x00000002
-+
-+#define PCI_MAC_SCR_SLMODE_M 0x00030000
-+#define PCI_MAC_SCR_SLMODE_S 16
-+#define PCI_MAC_SCR_SLM_FWAKE 0
-+#define PCI_MAC_SCR_SLM_FSLEEP 1
-+#define PCI_MAC_SCR_SLM_NORMAL 2
-+
-+#define PCI_MAC_SFR_SLEEP 0x00000001
-+
-+#define PCI_MAC_PCICFG_SPWR_DN 0x00010000
-+
-+
-+
-+
-+/*
-+ * PCI Bus Interface Registers
-+ */
-+#define AR5315_PCI_1MS_REG (AR5315_PCI + 0x0008)
-+#define AR5315_PCI_1MS_MASK 0x3FFFF /* # of AHB clk cycles in 1ms */
-+
-+#define AR5315_PCI_MISC_CONFIG (AR5315_PCI + 0x000c)
-+#define AR5315_PCIMISC_TXD_EN 0x00000001 /* Enable TXD for fragments */
-+#define AR5315_PCIMISC_CFG_SEL 0x00000002 /* mem or config cycles */
-+#define AR5315_PCIMISC_GIG_MASK 0x0000000C /* bits 31-30 for pci req */
-+#define AR5315_PCIMISC_RST_MODE 0x00000030
-+#define AR5315_PCIRST_INPUT 0x00000000 /* 4:5=0 rst is input */
-+#define AR5315_PCIRST_LOW 0x00000010 /* 4:5=1 rst to GND */
-+#define AR5315_PCIRST_HIGH 0x00000020 /* 4:5=2 rst to VDD */
-+#define AR5315_PCIGRANT_EN 0x00000000 /* 6:7=0 early grant en */
-+#define AR5315_PCIGRANT_FRAME 0x00000040 /* 6:7=1 grant waits 4 frame */
-+#define AR5315_PCIGRANT_IDLE 0x00000080 /* 6:7=2 grant waits 4 idle */
-+#define AR5315_PCIGRANT_GAP 0x00000000 /* 6:7=2 grant waits 4 idle */
-+#define AR5315_PCICACHE_DIS 0x00001000 /* PCI external access cache disable */
-+
-+#define AR5315_PCI_OUT_TSTAMP (AR5315_PCI + 0x0010)
-+
-+#define AR5315_PCI_UNCACHE_CFG (AR5315_PCI + 0x0014)
-+
-+#define AR5315_PCI_IN_EN (AR5315_PCI + 0x0100)
-+#define AR5315_PCI_IN_EN0 0x01 /* Enable chain 0 */
-+#define AR5315_PCI_IN_EN1 0x02 /* Enable chain 1 */
-+#define AR5315_PCI_IN_EN2 0x04 /* Enable chain 2 */
-+#define AR5315_PCI_IN_EN3 0x08 /* Enable chain 3 */
-+
-+#define AR5315_PCI_IN_DIS (AR5315_PCI + 0x0104)
-+#define AR5315_PCI_IN_DIS0 0x01 /* Disable chain 0 */
-+#define AR5315_PCI_IN_DIS1 0x02 /* Disable chain 1 */
-+#define AR5315_PCI_IN_DIS2 0x04 /* Disable chain 2 */
-+#define AR5315_PCI_IN_DIS3 0x08 /* Disable chain 3 */
-+
-+#define AR5315_PCI_IN_PTR (AR5315_PCI + 0x0200)
-+
-+#define AR5315_PCI_OUT_EN (AR5315_PCI + 0x0400)
-+#define AR5315_PCI_OUT_EN0 0x01 /* Enable chain 0 */
-+
-+#define AR5315_PCI_OUT_DIS (AR5315_PCI + 0x0404)
-+#define AR5315_PCI_OUT_DIS0 0x01 /* Disable chain 0 */
-+
-+#define AR5315_PCI_OUT_PTR (AR5315_PCI + 0x0408)
-+
-+#define AR5315_PCI_INT_STATUS (AR5315_PCI + 0x0500) /* write one to clr */
-+#define AR5315_PCI_TXINT 0x00000001 /* Desc In Completed */
-+#define AR5315_PCI_TXOK 0x00000002 /* Desc In OK */
-+#define AR5315_PCI_TXERR 0x00000004 /* Desc In ERR */
-+#define AR5315_PCI_TXEOL 0x00000008 /* Desc In End-of-List */
-+#define AR5315_PCI_RXINT 0x00000010 /* Desc Out Completed */
-+#define AR5315_PCI_RXOK 0x00000020 /* Desc Out OK */
-+#define AR5315_PCI_RXERR 0x00000040 /* Desc Out ERR */
-+#define AR5315_PCI_RXEOL 0x00000080 /* Desc Out EOL */
-+#define AR5315_PCI_TXOOD 0x00000200 /* Desc In Out-of-Desc */
-+#define AR5315_PCI_MASK 0x0000FFFF /* Desc Mask */
-+#define AR5315_PCI_EXT_INT 0x02000000
-+#define AR5315_PCI_ABORT_INT 0x04000000
-+
-+#define AR5315_PCI_INT_MASK (AR5315_PCI + 0x0504) /* same as INT_STATUS */
-+
-+#define AR5315_PCI_INTEN_REG (AR5315_PCI + 0x0508)
-+#define AR5315_PCI_INT_DISABLE 0x00 /* disable pci interrupts */
-+#define AR5315_PCI_INT_ENABLE 0x01 /* enable pci interrupts */
-+
-+#define AR5315_PCI_HOST_IN_EN (AR5315_PCI + 0x0800)
-+#define AR5315_PCI_HOST_IN_DIS (AR5315_PCI + 0x0804)
-+#define AR5315_PCI_HOST_IN_PTR (AR5315_PCI + 0x0810)
-+#define AR5315_PCI_HOST_OUT_EN (AR5315_PCI + 0x0900)
-+#define AR5315_PCI_HOST_OUT_DIS (AR5315_PCI + 0x0904)
-+#define AR5315_PCI_HOST_OUT_PTR (AR5315_PCI + 0x0908)
-+
-+
-+/*
-+ * Local Bus Interface Registers
-+ */
-+#define AR5315_LB_CONFIG (AR5315_LOCAL + 0x0000)
-+#define AR5315_LBCONF_OE 0x00000001 /* =1 OE is low-true */
-+#define AR5315_LBCONF_CS0 0x00000002 /* =1 first CS is low-true */
-+#define AR5315_LBCONF_CS1 0x00000004 /* =1 2nd CS is low-true */
-+#define AR5315_LBCONF_RDY 0x00000008 /* =1 RDY is low-true */
-+#define AR5315_LBCONF_WE 0x00000010 /* =1 Write En is low-true */
-+#define AR5315_LBCONF_WAIT 0x00000020 /* =1 WAIT is low-true */
-+#define AR5315_LBCONF_ADS 0x00000040 /* =1 Adr Strobe is low-true */
-+#define AR5315_LBCONF_MOT 0x00000080 /* =0 Intel, =1 Motorola */
-+#define AR5315_LBCONF_8CS 0x00000100 /* =1 8 bits CS, 0= 16bits */
-+#define AR5315_LBCONF_8DS 0x00000200 /* =1 8 bits Data S, 0=16bits */
-+#define AR5315_LBCONF_ADS_EN 0x00000400 /* =1 Enable ADS */
-+#define AR5315_LBCONF_ADR_OE 0x00000800 /* =1 Adr cap on OE, WE or DS */
-+#define AR5315_LBCONF_ADDT_MUX 0x00001000 /* =1 Adr and Data share bus */
-+#define AR5315_LBCONF_DATA_OE 0x00002000 /* =1 Data cap on OE, WE, DS */
-+#define AR5315_LBCONF_16DATA 0x00004000 /* =1 Data is 16 bits wide */
-+#define AR5315_LBCONF_SWAPDT 0x00008000 /* =1 Byte swap data */
-+#define AR5315_LBCONF_SYNC 0x00010000 /* =1 Bus synchronous to clk */
-+#define AR5315_LBCONF_INT 0x00020000 /* =1 Intr is low true */
-+#define AR5315_LBCONF_INT_CTR0 0x00000000 /* GND high-Z, Vdd is high-Z */
-+#define AR5315_LBCONF_INT_CTR1 0x00040000 /* GND drive, Vdd is high-Z */
-+#define AR5315_LBCONF_INT_CTR2 0x00080000 /* GND high-Z, Vdd drive */
-+#define AR5315_LBCONF_INT_CTR3 0x000C0000 /* GND drive, Vdd drive */
-+#define AR5315_LBCONF_RDY_WAIT 0x00100000 /* =1 RDY is negative of WAIT */
-+#define AR5315_LBCONF_INT_PULSE 0x00200000 /* =1 Interrupt is a pulse */
-+#define AR5315_LBCONF_ENABLE 0x00400000 /* =1 Falcon respond to LB */
-+
-+#define AR5315_LB_CLKSEL (AR5315_LOCAL + 0x0004)
-+#define AR5315_LBCLK_EXT 0x0001 /* use external clk for lb */
-+
-+#define AR5315_LB_1MS (AR5315_LOCAL + 0x0008)
-+#define AR5315_LB1MS_MASK 0x3FFFF /* # of AHB clk cycles in 1ms */
-+
-+#define AR5315_LB_MISCCFG (AR5315_LOCAL + 0x000C)
-+#define AR5315_LBM_TXD_EN 0x00000001 /* Enable TXD for fragments */
-+#define AR5315_LBM_RX_INTEN 0x00000002 /* Enable LB ints on RX ready */
-+#define AR5315_LBM_MBOXWR_INTEN 0x00000004 /* Enable LB ints on mbox wr */
-+#define AR5315_LBM_MBOXRD_INTEN 0x00000008 /* Enable LB ints on mbox rd */
-+#define AR5315_LMB_DESCSWAP_EN 0x00000010 /* Byte swap desc enable */
-+#define AR5315_LBM_TIMEOUT_MASK 0x00FFFF80
-+#define AR5315_LBM_TIMEOUT_SHFT 7
-+#define AR5315_LBM_PORTMUX 0x07000000
-+
-+
-+#define AR5315_LB_RXTSOFF (AR5315_LOCAL + 0x0010)
-+
-+#define AR5315_LB_TX_CHAIN_EN (AR5315_LOCAL + 0x0100)
-+#define AR5315_LB_TXEN_0 0x01
-+#define AR5315_LB_TXEN_1 0x02
-+#define AR5315_LB_TXEN_2 0x04
-+#define AR5315_LB_TXEN_3 0x08
-+
-+#define AR5315_LB_TX_CHAIN_DIS (AR5315_LOCAL + 0x0104)
-+#define AR5315_LB_TX_DESC_PTR (AR5315_LOCAL + 0x0200)
-+
-+#define AR5315_LB_RX_CHAIN_EN (AR5315_LOCAL + 0x0400)
-+#define AR5315_LB_RXEN 0x01
-+
-+#define AR5315_LB_RX_CHAIN_DIS (AR5315_LOCAL + 0x0404)
-+#define AR5315_LB_RX_DESC_PTR (AR5315_LOCAL + 0x0408)
-+
-+#define AR5315_LB_INT_STATUS (AR5315_LOCAL + 0x0500)
-+#define AR5315_INT_TX_DESC 0x0001
-+#define AR5315_INT_TX_OK 0x0002
-+#define AR5315_INT_TX_ERR 0x0004
-+#define AR5315_INT_TX_EOF 0x0008
-+#define AR5315_INT_RX_DESC 0x0010
-+#define AR5315_INT_RX_OK 0x0020
-+#define AR5315_INT_RX_ERR 0x0040
-+#define AR5315_INT_RX_EOF 0x0080
-+#define AR5315_INT_TX_TRUNC 0x0100
-+#define AR5315_INT_TX_STARVE 0x0200
-+#define AR5315_INT_LB_TIMEOUT 0x0400
-+#define AR5315_INT_LB_ERR 0x0800
-+#define AR5315_INT_MBOX_WR 0x1000
-+#define AR5315_INT_MBOX_RD 0x2000
-+
-+/* Bit definitions for INT MASK are the same as INT_STATUS */
-+#define AR5315_LB_INT_MASK (AR5315_LOCAL + 0x0504)
-+
-+#define AR5315_LB_INT_EN (AR5315_LOCAL + 0x0508)
-+#define AR5315_LB_MBOX (AR5315_LOCAL + 0x0600)
-+
-+
-+
-+/*
-+ * IR Interface Registers
-+ */
-+#define AR5315_IR_PKTDATA (AR5315_IR + 0x0000)
-+
-+#define AR5315_IR_PKTLEN (AR5315_IR + 0x07fc) /* 0 - 63 */
-+
-+#define AR5315_IR_CONTROL (AR5315_IR + 0x0800)
-+#define AR5315_IRCTL_TX 0x00000000 /* use as tranmitter */
-+#define AR5315_IRCTL_RX 0x00000001 /* use as receiver */
-+#define AR5315_IRCTL_SAMPLECLK_MASK 0x00003ffe /* Sample clk divisor mask */
-+#define AR5315_IRCTL_SAMPLECLK_SHFT 1
-+#define AR5315_IRCTL_OUTPUTCLK_MASK 0x03ffc000 /* Output clk divisor mask */
-+#define AR5315_IRCTL_OUTPUTCLK_SHFT 14
-+
-+#define AR5315_IR_STATUS (AR5315_IR + 0x0804)
-+#define AR5315_IRSTS_RX 0x00000001 /* receive in progress */
-+#define AR5315_IRSTS_TX 0x00000002 /* transmit in progress */
-+
-+#define AR5315_IR_CONFIG (AR5315_IR + 0x0808)
-+#define AR5315_IRCFG_INVIN 0x00000001 /* invert input polarity */
-+#define AR5315_IRCFG_INVOUT 0x00000002 /* invert output polarity */
-+#define AR5315_IRCFG_SEQ_START_WIN_SEL 0x00000004 /* 1 => 28, 0 => 7 */
-+#define AR5315_IRCFG_SEQ_START_THRESH 0x000000f0 /* */
-+#define AR5315_IRCFG_SEQ_END_UNIT_SEL 0x00000100 /* */
-+#define AR5315_IRCFG_SEQ_END_UNIT_THRESH 0x00007e00 /* */
-+#define AR5315_IRCFG_SEQ_END_WIN_SEL 0x00008000 /* */
-+#define AR5315_IRCFG_SEQ_END_WIN_THRESH 0x001f0000 /* */
-+#define AR5315_IRCFG_NUM_BACKOFF_WORDS 0x01e00000 /* */
-+
-+/*
-+ * PCI memory constants: Memory area 1 and 2 are the same size -
-+ * (twice the PCI_TLB_PAGE_SIZE). The definition of
-+ * CPU_TO_PCI_MEM_SIZE is coupled with the TLB setup routine
-+ * sysLib.c/sysTlbInit(), in that it assumes that 2 pages of size
-+ * PCI_TLB_PAGE_SIZE are set up in the TLB for each PCI memory space.
-+ */
-+
-+#define CPU_TO_PCI_MEM_BASE1 0xE0000000
-+#define CPU_TO_PCI_MEM_SIZE1 (2*PCI_TLB_PAGE_SIZE)
-+
-+
-+/* TLB attributes for PCI transactions */
-+
-+#define PCI_MMU_PAGEMASK 0x00003FFF
-+#define MMU_PAGE_UNCACHED 0x00000010
-+#define MMU_PAGE_DIRTY 0x00000004
-+#define MMU_PAGE_VALID 0x00000002
-+#define MMU_PAGE_GLOBAL 0x00000001
-+#define PCI_MMU_PAGEATTRIB (MMU_PAGE_UNCACHED|MMU_PAGE_DIRTY|\
-+ MMU_PAGE_VALID|MMU_PAGE_GLOBAL)
-+#define PCI_MEMORY_SPACE1_VIRT 0xE0000000 /* Used for non-prefet mem */
-+#define PCI_MEMORY_SPACE1_PHYS 0x80000000
-+#define PCI_TLB_PAGE_SIZE 0x01000000
-+#define TLB_HI_MASK 0xFFFFE000
-+#define TLB_LO_MASK 0x3FFFFFFF
-+#define PAGEMASK_SHIFT 11
-+#define TLB_LO_SHIFT 6
-+
-+#define PCI_MAX_LATENCY 0xFFF /* Max PCI latency */
-+
-+#define HOST_PCI_DEV_ID 3
-+#define HOST_PCI_MBAR0 0x10000000
-+#define HOST_PCI_MBAR1 0x20000000
-+#define HOST_PCI_MBAR2 0x30000000
-+
-+#define HOST_PCI_SDRAM_BASEADDR HOST_PCI_MBAR1
-+#define PCI_DEVICE_MEM_SPACE 0x800000
-+
-+
-+typedef unsigned int AR531X_REG;
-+
-+#define sysRegRead(phys) \
-+ (*(volatile AR531X_REG *)PHYS_TO_K1(phys))
-+
-+#define sysRegWrite(phys, val) \
-+ ((*(volatile AR531X_REG *)PHYS_TO_K1(phys)) = (val))
-+#endif
-+
-+#endif
-diff -urN linux-mips/arch/mips/ar531x/ar531xintr.S mips-linux-2.4.25/arch/mips/ar531x/ar531xintr.S
---- linux-mips/arch/mips/ar531x/ar531xintr.S 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/ar531xintr.S 2005-12-30 17:26:31.000823952 +0000
-@@ -0,0 +1,30 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+#include <asm/asm.h>
-+#include <asm/mipsregs.h>
-+#include <asm/regdef.h>
-+#include <asm/stackframe.h>
-+
-+/*
-+ * Glue code to save registers and get us to the interrupt dispatcher
-+ */
-+ .text
-+ .set noat
-+ .align 5
-+NESTED(ar531x_interrupt_receive, PT_SIZE, sp)
-+ SAVE_ALL
-+ CLI
-+ .set at
-+
-+ move a0, sp
-+ jal ar531x_irq_dispatch
-+
-+ j ret_from_irq
-+
-+ END(ar531x_interrupt_receive)
-diff -urN linux-mips/arch/mips/ar531x/ar531xirq.c mips-linux-2.4.25/arch/mips/ar531x/ar531xirq.c
---- linux-mips/arch/mips/ar531x/ar531xirq.c 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/ar531xirq.c 2005-12-30 17:26:31.000823952 +0000
-@@ -0,0 +1,442 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * Interrupt support for AR531X WiSOC.
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/kernel_stat.h>
-+#include <linux/signal.h>
-+#include <linux/sched.h>
-+#include <linux/interrupt.h>
-+#include <linux/slab.h>
-+#include <linux/random.h>
-+#include <linux/pm.h>
-+#include <linux/delay.h>
-+#include <linux/reboot.h>
-+
-+#include <asm/irq.h>
-+#include <asm/mipsregs.h>
-+#include <asm/gdb-stub.h>
-+
-+#include "ar531xlnx.h"
-+#include <asm/irq_cpu.h>
-+
-+extern int setup_irq(unsigned int irq, struct irqaction *irqaction);
-+
-+static void ar531x_misc_intr_enable(unsigned int irq);
-+static void ar531x_misc_intr_disable(unsigned int irq);
-+
-+/* Turn on the specified AR531X_MISC_IRQ interrupt */
-+static unsigned int
-+ar531x_misc_intr_startup(unsigned int irq)
-+{
-+ ar531x_misc_intr_enable(irq);
-+ return 0;
-+}
-+
-+/* Turn off the specified AR531X_MISC_IRQ interrupt */
-+static void
-+ar531x_misc_intr_shutdown(unsigned int irq)
-+{
-+ ar531x_misc_intr_disable(irq);
-+}
-+
-+/* Enable the specified AR531X_MISC_IRQ interrupt */
-+static void
-+ar531x_misc_intr_enable(unsigned int irq)
-+{
-+ unsigned int imr;
-+
-+#if CONFIG_AR5315
-+ imr = sysRegRead(AR5315_IMR);
-+ switch(irq)
-+ {
-+ case AR531X_MISC_IRQ_TIMER:
-+ imr |= IMR_TIMER;
-+ break;
-+
-+ case AR531X_MISC_IRQ_AHB_PROC:
-+ imr |= IMR_AHB;
-+ break;
-+
-+ case AR531X_MISC_IRQ_AHB_DMA:
-+ imr |= 0/* ?? */;
-+ break;
-+ /*
-+ case AR531X_ISR_GPIO:
-+ imr |= IMR_GPIO;
-+ break;
-+ */
-+
-+ case AR531X_MISC_IRQ_UART0:
-+ imr |= IMR_UART0;
-+ break;
-+
-+
-+ case AR531X_MISC_IRQ_WATCHDOG:
-+ imr |= IMR_WD;
-+ break;
-+
-+ case AR531X_MISC_IRQ_LOCAL:
-+ imr |= 0/* ?? */;
-+ break;
-+
-+ }
-+ sysRegWrite(AR5315_IMR, imr);
-+ imr=sysRegRead(AR5315_IMR); /* flush write buffer */
-+ //printk("enable Interrupt irq 0x%x imr 0x%x \n",irq,imr);
-+
-+#else
-+ imr = sysRegRead(AR531X_IMR);
-+ imr |= (1 << (irq - AR531X_MISC_IRQ_BASE - 1));
-+ sysRegWrite(AR531X_IMR, imr);
-+ sysRegRead(AR531X_IMR); /* flush write buffer */
-+#endif
-+}
-+
-+/* Disable the specified AR531X_MISC_IRQ interrupt */
-+static void
-+ar531x_misc_intr_disable(unsigned int irq)
-+{
-+ unsigned int imr;
-+
-+#if CONFIG_AR5315
-+ imr = sysRegRead(AR5315_IMR);
-+ switch(irq)
-+ {
-+ case AR531X_MISC_IRQ_TIMER:
-+ imr &= (~IMR_TIMER);
-+ break;
-+
-+ case AR531X_MISC_IRQ_AHB_PROC:
-+ imr &= (~IMR_AHB);
-+ break;
-+
-+ case AR531X_MISC_IRQ_AHB_DMA:
-+ imr &= 0/* ?? */;
-+ break;
-+ /*
-+ case AR531X_ISR_GPIO:
-+ imr &= ~IMR_GPIO;
-+ break;
-+ */
-+
-+ case AR531X_MISC_IRQ_UART0:
-+ imr &= (~IMR_UART0);
-+ break;
-+
-+ case AR531X_MISC_IRQ_WATCHDOG:
-+ imr &= (~IMR_WD);
-+ break;
-+
-+ case AR531X_MISC_IRQ_LOCAL:
-+ imr &= ~0/* ?? */;
-+ break;
-+
-+ }
-+ sysRegWrite(AR5315_IMR, imr);
-+ sysRegRead(AR5315_IMR); /* flush write buffer */
-+#else
-+ imr = sysRegRead(AR531X_IMR);
-+ imr &= ~(1 << (irq - AR531X_MISC_IRQ_BASE - 1));
-+ sysRegWrite(AR531X_IMR, imr);
-+ sysRegRead(AR531X_IMR); /* flush write buffer */
-+#endif
-+}
-+
-+static void
-+ar531x_misc_intr_ack(unsigned int irq)
-+{
-+ ar531x_misc_intr_disable(irq);
-+}
-+
-+static void
-+ar531x_misc_intr_end(unsigned int irq)
-+{
-+ if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
-+ ar531x_misc_intr_enable(irq);
-+}
-+
-+static void
-+ar531x_misc_intr_set_affinity(unsigned int irq, unsigned long mask)
-+{
-+ /* Only 1 CPU; ignore affinity request */
-+}
-+
-+struct hw_interrupt_type ar531x_misc_intr_controller = {
-+ "AR531X MISC",
-+ ar531x_misc_intr_startup,
-+ ar531x_misc_intr_shutdown,
-+ ar531x_misc_intr_enable,
-+ ar531x_misc_intr_disable,
-+ ar531x_misc_intr_ack,
-+ ar531x_misc_intr_end,
-+ ar531x_misc_intr_set_affinity,
-+};
-+
-+int ar531x_misc_irq_base;
-+
-+/*
-+ * Determine interrupt source among interrupts that use IP6
-+ */
-+void
-+ar531x_misc_intr_init(int irq_base)
-+{
-+ int i;
-+
-+ for (i = irq_base; i < irq_base + AR531X_MISC_IRQ_COUNT; i++) {
-+ irq_desc[i].status = IRQ_DISABLED;
-+ irq_desc[i].action = NULL;
-+ irq_desc[i].depth = 1;
-+ irq_desc[i].handler = &ar531x_misc_intr_controller;
-+ }
-+
-+ ar531x_misc_irq_base = irq_base;
-+}
-+
-+/* ARGSUSED */
-+void
-+spurious_irq_handler(int cpl, void *dev_id, struct pt_regs *regs)
-+{
-+ /*
-+ printk("spurious_irq_handler: %d cause=0x%8.8x status=0x%8.8x\n",
-+ cpl, cause_intrs, status_intrs);
-+ */
-+}
-+
-+/* ARGSUSED */
-+void
-+spurious_misc_handler(int cpl, void *dev_id, struct pt_regs *regs)
-+{
-+ /*
-+ printk("spurious_misc_handler: 0x%x isr=0x%8.8x imr=0x%8.8x\n",
-+ cpl, ar531x_isr, ar531x_imr);
-+ */
-+}
-+
-+void
-+ar531x_timer_handler(int cpl, void *dev_id, struct pt_regs *regs)
-+{
-+#if CONFIG_AR5315
-+ (void)sysRegRead(AR5315_TIMER); /* clear interrupt */
-+#else
-+ (void)sysRegRead(AR531X_TIMER); /* clear interrupt */
-+#endif
-+}
-+
-+void
-+ar531x_ahb_proc_handler(int cpl, void *dev_id, struct pt_regs *regs)
-+{
-+ u32 procAddr;
-+ u32 proc1;
-+ u32 dmaAddr;
-+ u32 dma1;
-+#if CONFIG_AR5315
-+ sysRegWrite(AR5315_AHB_ERR0,AHB_ERROR_DET);
-+ sysRegRead(AR5315_AHB_ERR1);
-+#else
-+ proc1 = sysRegRead(AR531X_PROC1);
-+ procAddr = sysRegRead(AR531X_PROCADDR); /* clears error state */
-+ dma1 = sysRegRead(AR531X_DMA1);
-+ dmaAddr = sysRegRead(AR531X_DMAADDR); /* clears error state */
-+#endif
-+
-+ printk("AHB interrupt: PROCADDR=0x%8.8x PROC1=0x%8.8x DMAADDR=0x%8.8x DMA1=0x%8.8x\n",
-+ procAddr, proc1, dmaAddr, dma1);
-+
-+ machine_restart("AHB error"); /* Catastrophic failure */
-+}
-+
-+static struct irqaction cascade =
-+ {no_action, SA_INTERRUPT, 0, "cascade",
-+ NULL, NULL};
-+
-+static struct irqaction spurious_irq =
-+ {spurious_irq_handler, SA_INTERRUPT, 0, "spurious_irq",
-+ NULL, NULL};
-+
-+static struct irqaction spurious_misc =
-+ {spurious_misc_handler, SA_INTERRUPT, 0, "spurious_misc",
-+ NULL, NULL};
-+
-+static struct irqaction ar531x_timer_interrupt =
-+ {ar531x_timer_handler, SA_INTERRUPT, 0, "ar531x_timer_interrupt",
-+ NULL, NULL};
-+
-+static struct irqaction ar531x_ahb_proc_interrupt =
-+ {ar531x_ahb_proc_handler, SA_INTERRUPT, 0, "ar531x_ahb_proc_interrupt",
-+ NULL, NULL};
-+
-+extern asmlinkage void ar531x_interrupt_receive(void);
-+
-+/*
-+ * Called when an interrupt is received, this function
-+ * determines exactly which interrupt it was, and it
-+ * invokes the appropriate handler.
-+ *
-+ * Implicitly, we also define interrupt priority by
-+ * choosing which to dispatch first.
-+ */
-+extern void dump_uart(void *);
-+
-+#if CONFIG_AR5315
-+
-+void
-+ar531x_irq_dispatch(struct pt_regs *regs)
-+{
-+ int cause_intrs = regs->cp0_cause;
-+ int status_intrs = regs->cp0_status;
-+ int pending = cause_intrs & status_intrs;
-+
-+ if (pending & CAUSEF_IP3) {
-+ do_IRQ(AR531X_IRQ_WLAN0_INTRS, regs);
-+ }
-+ else if (pending & CAUSEF_IP4) {
-+ do_IRQ(AR531X_IRQ_ENET0_INTRS, regs);
-+ }
-+ else if (pending & CAUSEF_IP2) {
-+ AR531X_REG ar531x_isr = sysRegRead(AR5315_ISR);
-+ AR531X_REG ar531x_imr = sysRegRead(AR5315_IMR);
-+ unsigned int ar531x_misc_intrs = ar531x_isr & ar531x_imr;
-+
-+ if (ar531x_misc_intrs & ISR_TIMER)
-+ do_IRQ(AR531X_MISC_IRQ_TIMER, regs);
-+ else if (ar531x_misc_intrs & ISR_AHB)
-+ do_IRQ(AR531X_MISC_IRQ_AHB_PROC, regs);
-+ else if (ar531x_misc_intrs & ISR_GPIO)
-+ {
-+ int i;
-+ u32 gpioIntPending;
-+
-+ gpioIntPending = sysRegRead(AR5315_GPIO_DI) & gpioIntMask;
-+ for (i=0; i<AR531X_GPIO_IRQ_COUNT; i++) {
-+ if (gpioIntPending & (1 << i))
-+ do_IRQ(AR531X_GPIO_IRQ(i), regs);
-+ }
-+ }
-+ else if (ar531x_misc_intrs & ISR_UART0) {
-+ do_IRQ(AR531X_MISC_IRQ_UART0, regs);
-+#if CONFIG_KGDB
-+ if (kgdbInterrupt()) {
-+ if (!user_mode(regs))
-+ set_async_breakpoint((unsigned long *)&regs->cp0_epc);
-+ }
-+#endif /* CONFIG_KGDB */
-+ }
-+ else if (ar531x_misc_intrs & ISR_WD)
-+ do_IRQ(AR531X_MISC_IRQ_WATCHDOG, regs);
-+ else
-+ do_IRQ(AR531X_MISC_IRQ_NONE, regs);
-+ } else if (pending & CAUSEF_IP7) {
-+ do_IRQ(AR531X_IRQ_CPU_CLOCK, regs);
-+ }
-+ else {
-+ do_IRQ(AR531X_IRQ_NONE, regs);
-+ }
-+}
-+
-+#else
-+
-+void
-+ar531x_irq_dispatch(struct pt_regs *regs)
-+{
-+ int cause_intrs = regs->cp0_cause;
-+ int status_intrs = regs->cp0_status;
-+ int pending = cause_intrs & status_intrs;
-+
-+ if (pending & CAUSEF_IP2) {
-+ do_IRQ(AR531X_IRQ_WLAN0_INTRS, regs);
-+ }
-+ else if (pending & CAUSEF_IP3) {
-+ do_IRQ(AR531X_IRQ_ENET0_INTRS, regs);
-+ }
-+ else if (pending & CAUSEF_IP4) {
-+ do_IRQ(AR531X_IRQ_ENET1_INTRS, regs);
-+ }
-+ else if (pending & CAUSEF_IP5) {
-+ do_IRQ(AR531X_IRQ_WLAN1_INTRS, regs);
-+ }
-+ else if (pending & CAUSEF_IP6) {
-+ AR531X_REG ar531x_isr = sysRegRead(AR531X_ISR);
-+ AR531X_REG ar531x_imr = sysRegRead(AR531X_IMR);
-+ unsigned int ar531x_misc_intrs = ar531x_isr & ar531x_imr;
-+
-+ if (ar531x_misc_intrs & AR531X_ISR_TIMER)
-+ do_IRQ(AR531X_MISC_IRQ_TIMER, regs);
-+ else if (ar531x_misc_intrs & AR531X_ISR_AHBPROC)
-+ do_IRQ(AR531X_MISC_IRQ_AHB_PROC, regs);
-+ else if (ar531x_misc_intrs & AR531X_ISR_AHBDMA)
-+ do_IRQ(AR531X_MISC_IRQ_AHB_DMA, regs);
-+ else if (ar531x_misc_intrs & AR531X_ISR_GPIO)
-+ {
-+ int i;
-+ u32 gpioIntPending;
-+
-+ gpioIntPending = sysRegRead(AR531X_GPIO_DI) & gpioIntMask;
-+ for (i=0; i<AR531X_GPIO_IRQ_COUNT; i++) {
-+ if (gpioIntPending & (1 << i))
-+ do_IRQ(AR531X_GPIO_IRQ(i), regs);
-+ }
-+ }
-+ else if ((ar531x_misc_intrs & AR531X_ISR_UART0) ||
-+ (ar531x_misc_intrs & AR531X_ISR_UART0DMA)) {
-+ do_IRQ(AR531X_MISC_IRQ_UART0, regs);
-+#if CONFIG_KGDB
-+ if (kgdbInterrupt()) {
-+ if (!user_mode(regs))
-+ set_async_breakpoint((unsigned long *)&regs->cp0_epc);
-+ }
-+#endif /* CONFIG_KGDB */
-+ }
-+ else if (ar531x_misc_intrs & AR531X_ISR_WD)
-+ do_IRQ(AR531X_MISC_IRQ_WATCHDOG, regs);
-+ else if (ar531x_misc_intrs & AR531X_ISR_LOCAL)
-+ do_IRQ(AR531X_MISC_IRQ_LOCAL, regs);
-+ else
-+ do_IRQ(AR531X_MISC_IRQ_NONE, regs);
-+ } else if (pending & CAUSEF_IP7) {
-+ do_IRQ(AR531X_IRQ_CPU_CLOCK, regs);
-+ } else
-+ do_IRQ(AR531X_IRQ_NONE, regs);
-+}
-+
-+#endif
-+
-+void __init init_IRQ(void)
-+{
-+ init_generic_irq();
-+ set_except_vector(0, ar531x_interrupt_receive);
-+
-+ /* Initialize interrupt controllers */
-+ mips_cpu_irq_init(MIPS_CPU_IRQ_BASE);
-+ ar531x_misc_intr_init(AR531X_MISC_IRQ_BASE);
-+ ar531x_gpio_intr_init(AR531X_GPIO_IRQ_BASE);
-+ setup_irq(AR531X_IRQ_MISC_INTRS, &cascade);
-+ /*
-+ * AR531X_IRQ_CPU_CLOCK is setup by ar531x_timer_setup.
-+ */
-+
-+ /* Default "spurious interrupt" handlers */
-+ setup_irq(AR531X_IRQ_NONE, &spurious_irq);
-+ setup_irq(AR531X_MISC_IRQ_NONE, &spurious_misc);
-+ setup_irq(AR531X_GPIO_IRQ_NONE, &spurious_gpio);
-+#ifndef CONFIG_AR5315
-+ setup_irq(AR531X_MISC_IRQ_TIMER, &ar531x_timer_interrupt);
-+#endif
-+ setup_irq(AR531X_MISC_IRQ_AHB_PROC, &ar531x_ahb_proc_interrupt);
-+ setup_irq(AR531X_MISC_IRQ_GPIO, &cascade);
-+
-+#ifdef CONFIG_KGDB
-+#if CONFIG_EARLY_STOP
-+ kgdbInit();
-+#endif
-+#endif
-+}
-diff -urN linux-mips/arch/mips/ar531x/ar531xksyms.c mips-linux-2.4.25/arch/mips/ar531x/ar531xksyms.c
---- linux-mips/arch/mips/ar531x/ar531xksyms.c 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/ar531xksyms.c 2005-12-30 17:26:31.001823800 +0000
-@@ -0,0 +1,17 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+#include <linux/module.h>
-+#include "asm/atheros/ar531xbsp.h"
-+
-+#ifdef CONFIG_KGDB
-+EXPORT_SYMBOL(kgdbInit);
-+EXPORT_SYMBOL(kgdbEnabled);
-+#endif
-+EXPORT_SYMBOL(ar531x_sys_frequency);
-+EXPORT_SYMBOL(get_system_type);
-diff -urN linux-mips/arch/mips/ar531x/ar531xlnx.h mips-linux-2.4.25/arch/mips/ar531x/ar531xlnx.h
---- linux-mips/arch/mips/ar531x/ar531xlnx.h 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/ar531xlnx.h 2005-12-30 17:26:31.001823800 +0000
-@@ -0,0 +1,135 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * This file contains definitions needed in order to compile
-+ * AR531X products for linux. Definitions that are largely
-+ * AR531X-specific and independent of operating system belong
-+ * in ar531x.h rather than this file.
-+ */
-+#include "ar531x.h"
-+
-+#define MIPS_CPU_IRQ_BASE 0x00
-+#define AR531X_HIGH_PRIO 0x10
-+#define AR531X_MISC_IRQ_BASE 0x20
-+#define AR531X_GPIO_IRQ_BASE 0x30
-+
-+/* Software's idea of interrupts handled by "CPU Interrupt Controller" */
-+#if CONFIG_AR5315
-+#define AR531X_IRQ_NONE MIPS_CPU_IRQ_BASE+0
-+#define AR531X_IRQ_MISC_INTRS MIPS_CPU_IRQ_BASE+2 /* C0_CAUSE: 0x0400 */
-+#define AR531X_IRQ_WLAN0_INTRS MIPS_CPU_IRQ_BASE+3 /* C0_CAUSE: 0x0800 */
-+#define AR531X_IRQ_ENET0_INTRS MIPS_CPU_IRQ_BASE+4 /* C0_CAUSE: 0x1000 */
-+#define AR531X_IRQ_LCBUS_PCI MIPS_CPU_IRQ_BASE+6 /* C0_CAUSE: 0x4000 */
-+#define AR531X_IRQ_WLAN0_POLL MIPS_CPU_IRQ_BASE+6 /* C0_CAUSE: 0x4000 */
-+#define AR531X_IRQ_CPU_CLOCK MIPS_CPU_IRQ_BASE+7 /* C0_CAUSE: 0x8000 */
-+#else
-+#define AR531X_IRQ_NONE MIPS_CPU_IRQ_BASE+0
-+#define AR531X_IRQ_WLAN0_INTRS MIPS_CPU_IRQ_BASE+2 /* C0_CAUSE: 0x0400 */
-+#define AR531X_IRQ_ENET0_INTRS MIPS_CPU_IRQ_BASE+3 /* C0_CAUSE: 0x0800 */
-+#define AR531X_IRQ_ENET1_INTRS MIPS_CPU_IRQ_BASE+4 /* C0_CAUSE: 0x1000 */
-+#define AR531X_IRQ_WLAN1_INTRS MIPS_CPU_IRQ_BASE+5 /* C0_CAUSE: 0x2000 */
-+#define AR531X_IRQ_MISC_INTRS MIPS_CPU_IRQ_BASE+6 /* C0_CAUSE: 0x4000 */
-+#define AR531X_IRQ_CPU_CLOCK MIPS_CPU_IRQ_BASE+7 /* C0_CAUSE: 0x8000 */
-+#endif
-+/* Miscellaneous interrupts, which share IP6 */
-+#define AR531X_MISC_IRQ_NONE AR531X_MISC_IRQ_BASE+0
-+#define AR531X_MISC_IRQ_TIMER AR531X_MISC_IRQ_BASE+1
-+#define AR531X_MISC_IRQ_AHB_PROC AR531X_MISC_IRQ_BASE+2
-+#define AR531X_MISC_IRQ_AHB_DMA AR531X_MISC_IRQ_BASE+3
-+#define AR531X_MISC_IRQ_GPIO AR531X_MISC_IRQ_BASE+4
-+#define AR531X_MISC_IRQ_UART0 AR531X_MISC_IRQ_BASE+5
-+#define AR531X_MISC_IRQ_UART0_DMA AR531X_MISC_IRQ_BASE+6
-+#define AR531X_MISC_IRQ_WATCHDOG AR531X_MISC_IRQ_BASE+7
-+#define AR531X_MISC_IRQ_LOCAL AR531X_MISC_IRQ_BASE+8
-+#define AR531X_MISC_IRQ_COUNT 9
-+
-+/* GPIO Interrupts [0..7], share AR531X_MISC_IRQ_GPIO */
-+#define AR531X_GPIO_IRQ_NONE AR531X_MISC_IRQ_BASE+0
-+#define AR531X_GPIO_IRQ(n) AR531X_MISC_IRQ_BASE+(n)+1
-+#ifdef CONFIG_AR5315
-+#define AR531X_GPIO_IRQ_COUNT 2
-+#else
-+#define AR531X_GPIO_IRQ_COUNT 9
-+#endif
-+
-+#define PHYS_TO_K1(physaddr) KSEG1ADDR(physaddr)
-+#define PHYS_TO_K0(physaddr) KSEG0ADDR(physaddr)
-+#define UNMAPPED_TO_PHYS(vaddr) PHYSADDR(vaddr)
-+#define IS_UNMAPPED_VADDR(vaddr) \
-+ ((KSEGX(vaddr) == KSEG0) || (KSEGX(vaddr) == KSEG1))
-+
-+/* IOCTL commands for /proc/ar531x */
-+#define AR531X_CTRL_DO_BREAKPOINT 1
-+#define AR531X_CTRL_DO_MADWIFI 2
-+
-+/*
-+ * Definitions for operating system portability.
-+ * These are vxWorks-->Linux translations.
-+ */
-+#define LOCAL static
-+#define BOOL int
-+#define TRUE 1
-+#define FALSE 0
-+#define UINT8 u8
-+#define UINT16 u16
-+#define UINT32 u32
-+#define PRINTF printk
-+#if /* DEBUG */ 1
-+#define DEBUG_PRINTF printk
-+#define INLINE
-+#else
-+DEBUG_PRINTF while (0) printk
-+#define INLINE inline
-+#endif
-+#define sysUDelay(usecs) udelay(usecs)
-+#define sysMsDelay(msecs) mdelay(msecs)
-+typedef volatile UINT8 *VIRT_ADDR;
-+#define MALLOC(sz) kmalloc(sz, GFP_KERNEL)
-+#define MALLOC_NOSLEEP(sz) kmalloc(sz, GFP_ATOMIC)
-+#define FREE(ptr) kfree((void *)ptr)
-+#define BSP_BUG() do { printk("kernel BSP BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0)
-+#define BSP_BUG_ON(condition) do { if (unlikely((condition)!=0)) BSP_BUG(); } while(0)
-+#define ASSERT(x) BSP_BUG_ON(!(x))
-+
-+extern struct ar531x_boarddata *ar531x_board_configuration;
-+extern char *ar531x_radio_configuration;
-+extern char *enet_mac_address_get(int MACUnit);
-+
-+extern void kgdbInit(void);
-+extern int kgdbEnabled(void);
-+extern void breakpoint(void);
-+extern int kgdbInterrupt(void);
-+extern unsigned int ar531x_cpu_frequency(void);
-+extern unsigned int ar531x_sys_frequency(void);
-+
-+/* GPIO support */
-+extern struct irqaction spurious_gpio;
-+extern unsigned int gpioIntMask;
-+extern void ar531x_gpio_intr_init(int irq_base);
-+extern void ar531x_gpio_ctrl_output(int gpio);
-+extern void ar531x_gpio_ctrl_input(int gpio);
-+extern void ar531x_gpio_set(int gpio, int val);
-+extern int ar531x_gpio_get(int gpio);
-+extern void ar531x_gpio_intr_enable(unsigned int irq);
-+extern void ar531x_gpio_intr_disable(unsigned int irq);
-+
-+/* Watchdog Timer support */
-+extern int watchdog_start(unsigned int milliseconds);
-+extern int watchdog_stop(void);
-+extern int watchdog_is_enabled(void);
-+extern unsigned int watchdog_min_timer_reached(void);
-+extern void watchdog_notify_alive(void);
-+
-+#define A_DATA_CACHE_INVAL(start, length) \
-+ dma_cache_inv((UINT32)(start),(length))
-+
-+#define sysWbFlush() mb()
-+
-+#define intDisable(x) cli()
-+#define intEnable(x) sti()
-diff -urN linux-mips/arch/mips/ar531x/ar531xprom.c mips-linux-2.4.25/arch/mips/ar531x/ar531xprom.c
---- linux-mips/arch/mips/ar531x/ar531xprom.c 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/ar531xprom.c 2005-12-30 17:26:31.001823800 +0000
-@@ -0,0 +1,88 @@
-+/*
-+ * 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 MontaVista Software Inc
-+ * Copyright © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * Prom setup file for ar531x
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/config.h>
-+#include <linux/kernel.h>
-+#include <linux/string.h>
-+#include <linux/mm.h>
-+#include <linux/bootmem.h>
-+
-+#include <asm/bootinfo.h>
-+#include <asm/addrspace.h>
-+
-+#include "ar531xlnx.h"
-+
-+#define COMMAND_LINE_SIZE 512
-+
-+char arcs_cmdline[COMMAND_LINE_SIZE];
-+
-+void __init prom_init(int argc, char *argv[])
-+{
-+ int i;
-+ unsigned int memcfg1;
-+ int bank0AC, bank1AC;
-+ int memsz_in_mb;
-+ strcpy(arcs_cmdline, "console=ttyS0,9600");
-+ for (i=0; i<argc; i++) {
-+ strcat(arcs_cmdline, " ");
-+ strcat(arcs_cmdline, argv[i]);
-+ }
-+
-+ mips_machgroup = MACH_GROUP_AR531X;
-+#ifdef CONFIG_APUNUSED
-+ mips_machtype = MACH_ATHEROS_UNUSED;
-+#endif
-+#ifdef CONFIG_AP30
-+ mips_machtype = MACH_ATHEROS_AP30;
-+#endif
-+#ifdef CONFIG_AP33
-+ mips_machtype = MACH_ATHEROS_AP33;
-+#endif
-+#ifdef CONFIG_AP38
-+ mips_machtype = MACH_ATHEROS_AP38;
-+#endif
-+#ifdef CONFIG_AP43
-+ mips_machtype = MACH_ATHEROS_AP43;
-+#endif
-+#ifdef CONFIG_AP48
-+ mips_machtype = MACH_ATHEROS_AP48;
-+#endif
-+#ifdef CONFIG_PB32
-+ mips_machtype = MACH_ATHEROS_PB32;
-+#endif
-+
-+
-+ /* Determine SDRAM size based on Address Checks done at startup */
-+#if CONFIG_AR5315
-+ /* TO-DO : compute the SDRAM size */
-+ memsz_in_mb=8;
-+#else
-+ memcfg1 = sysRegRead(AR531X_MEM_CFG1);
-+ bank0AC = (memcfg1 & MEM_CFG1_AC0) >> MEM_CFG1_AC0_S;
-+ bank1AC = (memcfg1 & MEM_CFG1_AC1) >> MEM_CFG1_AC1_S;
-+ memsz_in_mb = (bank0AC ? (1 << (bank0AC+1)) : 0)
-+ + (bank1AC ? (1 << (bank1AC+1)) : 0);
-+#endif
-+
-+ /*
-+ * By default, use all available memory. You can override this
-+ * to use, say, 8MB by specifying "mem=8M" as an argument on the
-+ * linux bootup command line.
-+ */
-+ add_memory_region(0, memsz_in_mb << 20, BOOT_MEM_RAM);
-+}
-+
-+void __init prom_free_prom_memory(void)
-+{
-+}
-diff -urN linux-mips/arch/mips/ar531x/ar531xsetup.c mips-linux-2.4.25/arch/mips/ar531x/ar531xsetup.c
---- linux-mips/arch/mips/ar531x/ar531xsetup.c 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/ar531xsetup.c 2005-12-30 17:26:31.002823648 +0000
-@@ -0,0 +1,406 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * Initialization for ar531x SOC.
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
-+#include <linux/serial.h>
-+#include <linux/types.h>
-+#include <linux/string.h>
-+
-+#include <asm/reboot.h>
-+#include <asm/io.h>
-+#include <asm/time.h>
-+#include <asm/pgtable.h>
-+#include <asm/processor.h>
-+#include <asm/reboot.h>
-+#include <asm/system.h>
-+#include <asm/serial.h>
-+
-+#include "ar531xlnx.h"
-+
-+void
-+ar531x_restart(char *command)
-+{
-+ for(;;) {
-+#if CONFIG_AR5315
-+ /*
-+ ** Cold reset does not work,work around is to use the GPIO reset bit.
-+ */
-+ unsigned int reg;
-+ reg = sysRegRead(AR5315_GPIO_DO);
-+ reg &= ~(1 << AR5315_RESET_GPIO);
-+ sysRegWrite(AR5315_GPIO_DO, reg);
-+ (void)sysRegRead(AR5315_GPIO_DO); /* flush write to hardware */
-+
-+#else
-+ sysRegWrite(AR531X_RESET, AR531X_RESET_SYSTEM);
-+#endif
-+ }
-+}
-+
-+void
-+ar531x_halt(void)
-+{
-+ printk(KERN_NOTICE "\n** You can safely turn off the power\n");
-+ while (1);
-+}
-+
-+void
-+ar531x_power_off(void)
-+{
-+ ar531x_halt();
-+}
-+
-+const char *
-+get_system_type(void)
-+{
-+#if CONFIG_AR5315
-+ return "Atheros AR5315";
-+#else
-+ return "Atheros AR531X";
-+#endif
-+}
-+
-+/*
-+ * This table is indexed by bits 5..4 of the CLOCKCTL1 register
-+ * to determine the predevisor value.
-+ */
-+static int CLOCKCTL1_PREDIVIDE_TABLE[4] = {
-+ 1,
-+ 2,
-+ 4,
-+ 5
-+};
-+
-+#if CONFIG_AR5315
-+static int PLLC_DIVIDE_TABLE[5] = {
-+ 2,
-+ 3,
-+ 4,
-+ 6,
-+ 3
-+};
-+
-+unsigned int
-+ar531x_cpu_frequency(void)
-+{
-+ static unsigned int ar531x_calculated_cpu_freq=0;
-+ unsigned int clockCtl,pllcCtrl,cpuDiv;
-+ unsigned int pllcOut,refdiv,fdiv,divby2;
-+
-+ if(ar531x_calculated_cpu_freq)
-+ return ar531x_calculated_cpu_freq;
-+
-+
-+ pllcCtrl = sysRegRead(AR5315_PLLC_CTL);
-+ refdiv = (pllcCtrl & PLLC_REF_DIV_M) >> PLLC_REF_DIV_S;
-+ refdiv = CLOCKCTL1_PREDIVIDE_TABLE[refdiv];
-+ fdiv = (pllcCtrl & PLLC_FDBACK_DIV_M) >> PLLC_FDBACK_DIV_S;
-+ divby2 = (pllcCtrl & PLLC_ADD_FDBACK_DIV_M) >> PLLC_ADD_FDBACK_DIV_S;
-+ divby2 += 1;
-+ pllcOut = (40000000/refdiv)*(2*divby2)*fdiv;
-+
-+ clockCtl = sysRegRead(AR5315_CPUCLK);
-+
-+ /* clkm input selected */
-+ if((clockCtl & CPUCLK_CLK_SEL_M) == 0 || (clockCtl & CPUCLK_CLK_SEL_M) == 1 ) {
-+ unsigned int clkMdiv;
-+ clkMdiv = (pllcCtrl & PLLC_CLKM_DIV_M) >> PLLC_CLKM_DIV_S;
-+ clkMdiv = PLLC_DIVIDE_TABLE[clkMdiv];
-+
-+ cpuDiv = (clockCtl & CPUCLK_CLK_DIV_M) >> CPUCLK_CLK_DIV_S;
-+ if(cpuDiv) cpuDiv *= 2;
-+ else cpuDiv=1;
-+
-+ ar531x_calculated_cpu_freq= (pllcOut/(clkMdiv * cpuDiv)) ;
-+
-+ return ar531x_calculated_cpu_freq;
-+ }
-+
-+ /* clkc input selected */
-+ if((clockCtl & CPUCLK_CLK_SEL_M) == 2 ) {
-+ unsigned int clkCdiv;
-+ clkCdiv = (pllcCtrl & PLLC_CLKC_DIV_M) >> PLLC_CLKC_DIV_S;
-+ clkCdiv = PLLC_DIVIDE_TABLE[clkCdiv];
-+
-+ cpuDiv = (clockCtl & CPUCLK_CLK_DIV_M) >> CPUCLK_CLK_DIV_S;
-+ if(cpuDiv) cpuDiv *= 2;
-+ else cpuDiv=1;
-+
-+ ar531x_calculated_cpu_freq= (pllcOut/(clkCdiv * cpuDiv)) ;
-+
-+ return ar531x_calculated_cpu_freq;
-+ } else { /* ref_clk selected */
-+
-+ cpuDiv = (clockCtl & CPUCLK_CLK_DIV_M) >> CPUCLK_CLK_DIV_S;
-+ if(cpuDiv) cpuDiv *= 2;
-+ else cpuDiv=1;
-+
-+ ar531x_calculated_cpu_freq= (40000000/(cpuDiv)) ;
-+ return ar531x_calculated_cpu_freq;
-+ }
-+}
-+
-+unsigned int
-+ar531x_apb_frequency(void)
-+{
-+ static unsigned int ar531x_calculated_cpu_freq=0;
-+ unsigned int clockCtl,pllcCtrl,cpuDiv;
-+ unsigned int pllcOut,refdiv,fdiv,divby2;
-+
-+ if(ar531x_calculated_cpu_freq)
-+ return ar531x_calculated_cpu_freq;
-+
-+
-+ pllcCtrl = sysRegRead(AR5315_PLLC_CTL);
-+ refdiv = (pllcCtrl & PLLC_REF_DIV_M) >> PLLC_REF_DIV_S;
-+ refdiv = CLOCKCTL1_PREDIVIDE_TABLE[refdiv];
-+ fdiv = (pllcCtrl & PLLC_FDBACK_DIV_M) >> PLLC_FDBACK_DIV_S;
-+ divby2 = (pllcCtrl & PLLC_ADD_FDBACK_DIV_M) >> PLLC_ADD_FDBACK_DIV_S;
-+ divby2 += 1;
-+ pllcOut = (40000000/refdiv)*(2*divby2)*fdiv;
-+
-+ clockCtl = sysRegRead(AR5315_AMBACLK);
-+
-+ /* clkm input selected */
-+ if((clockCtl & CPUCLK_CLK_SEL_M) == 0 || (clockCtl & CPUCLK_CLK_SEL_M) == 1 ) {
-+ unsigned int clkMdiv;
-+ clkMdiv = (pllcCtrl & PLLC_CLKM_DIV_M) >> PLLC_CLKM_DIV_S;
-+ clkMdiv = PLLC_DIVIDE_TABLE[clkMdiv];
-+
-+ cpuDiv = (clockCtl & CPUCLK_CLK_DIV_M) >> CPUCLK_CLK_DIV_S;
-+ if(cpuDiv) cpuDiv *= 2;
-+ else cpuDiv=1;
-+
-+ ar531x_calculated_cpu_freq= (pllcOut/(clkMdiv * cpuDiv)) ;
-+
-+ return ar531x_calculated_cpu_freq;
-+ }
-+
-+ /* clkc input selected */
-+ if((clockCtl & CPUCLK_CLK_SEL_M) == 2 ) {
-+ unsigned int clkCdiv;
-+ clkCdiv = (pllcCtrl & PLLC_CLKC_DIV_M) >> PLLC_CLKC_DIV_S;
-+ clkCdiv = PLLC_DIVIDE_TABLE[clkCdiv];
-+
-+ cpuDiv = (clockCtl & CPUCLK_CLK_DIV_M) >> CPUCLK_CLK_DIV_S;
-+ if(cpuDiv) cpuDiv *= 2;
-+ else cpuDiv=1;
-+
-+ ar531x_calculated_cpu_freq= (pllcOut/(clkCdiv * cpuDiv)) ;
-+
-+ return ar531x_calculated_cpu_freq;
-+ } else { /* ref_clk selected */
-+
-+ cpuDiv = (clockCtl & CPUCLK_CLK_DIV_M) >> CPUCLK_CLK_DIV_S;
-+ if(cpuDiv) cpuDiv *= 2;
-+ else cpuDiv=1;
-+
-+ ar531x_calculated_cpu_freq= (40000000/(cpuDiv)) ;
-+ return ar531x_calculated_cpu_freq;
-+ }
-+}
-+
-+#else
-+unsigned int
-+ar531x_cpu_frequency(void)
-+{
-+ static unsigned int ar531x_calculated_cpu_freq;
-+ unsigned int clockctl1_predivide_mask;
-+ unsigned int clockctl1_predivide_shift;
-+ unsigned int clockctl1_multiplier_mask;
-+ unsigned int clockctl1_multiplier_shift;
-+ unsigned int clockctl1_doubler_mask;
-+ int wisoc_revision;
-+
-+ /*
-+ * Trust the bootrom's idea of cpu frequency.
-+ */
-+ ar531x_calculated_cpu_freq = sysRegRead(AR5312_SCRATCH);
-+ if (ar531x_calculated_cpu_freq)
-+ return ar531x_calculated_cpu_freq;
-+
-+ wisoc_revision = (sysRegRead(AR531X_REV) & AR531X_REV_MAJ) >> AR531X_REV_MAJ_S;
-+
-+ if (wisoc_revision == AR531X_REV_MAJ_AR2313) {
-+ clockctl1_predivide_mask = AR2313_CLOCKCTL1_PREDIVIDE_MASK;
-+ clockctl1_predivide_shift = AR2313_CLOCKCTL1_PREDIVIDE_SHIFT;
-+ clockctl1_multiplier_mask = AR2313_CLOCKCTL1_MULTIPLIER_MASK;
-+ clockctl1_multiplier_shift = AR2313_CLOCKCTL1_MULTIPLIER_SHIFT;
-+ clockctl1_doubler_mask = AR2313_CLOCKCTL1_DOUBLER_MASK;
-+ } else { /* AR5312 and AR2312 */
-+ clockctl1_predivide_mask = AR5312_CLOCKCTL1_PREDIVIDE_MASK;
-+ clockctl1_predivide_shift = AR5312_CLOCKCTL1_PREDIVIDE_SHIFT;
-+ clockctl1_multiplier_mask = AR5312_CLOCKCTL1_MULTIPLIER_MASK;
-+ clockctl1_multiplier_shift = AR5312_CLOCKCTL1_MULTIPLIER_SHIFT;
-+ clockctl1_doubler_mask = AR5312_CLOCKCTL1_DOUBLER_MASK;
-+ }
-+
-+ /*
-+ * Clocking is derived from a fixed 40MHz input clock.
-+ * cpuFreq = InputClock * MULT (where MULT is PLL multiplier)
-+ *
-+ * sysFreq = cpuFreq / 4 (used for APB clock, serial,
-+ * flash, Timer, Watchdog Timer)
-+ *
-+ * cntFreq = cpuFreq / 2 (use for CPU count/compare)
-+ *
-+ * So, for example, with a PLL multiplier of 5, we have
-+ * cpuFrez = 200MHz
-+ * sysFreq = 50MHz
-+ * cntFreq = 100MHz
-+ *
-+ * We compute the CPU frequency, based on PLL settings.
-+ */
-+ if (ar531x_calculated_cpu_freq == 0) {
-+ unsigned int clockCtl1 = sysRegRead(AR5312_CLOCKCTL1);
-+
-+ int preDivideSelect = (clockCtl1 & clockctl1_predivide_mask) >>
-+ clockctl1_predivide_shift;
-+
-+ int preDivisor = CLOCKCTL1_PREDIVIDE_TABLE[preDivideSelect];
-+
-+ int multiplier = (clockCtl1 & clockctl1_multiplier_mask) >>
-+ clockctl1_multiplier_shift;
-+
-+ if (clockCtl1 & clockctl1_doubler_mask) {
-+ multiplier = multiplier << 1;
-+ }
-+
-+ ar531x_calculated_cpu_freq = (40000000 / preDivisor) * multiplier;
-+ }
-+
-+ return ar531x_calculated_cpu_freq;
-+}
-+#endif
-+
-+unsigned int
-+ar531x_sys_frequency(void)
-+{
-+ static unsigned int ar531x_calculated_sys_freq = 0;
-+
-+ if (ar531x_calculated_sys_freq == 0) {
-+ ar531x_calculated_sys_freq = ar531x_cpu_frequency() / 4;
-+ }
-+
-+ return ar531x_calculated_sys_freq;
-+}
-+
-+static void __init
-+flash_setup(void)
-+{
-+ UINT32 flash_ctl;
-+#ifndef CONFIG_AR5315
-+ /* Configure flash bank 0 */
-+ flash_ctl = FLASHCTL_E |
-+ FLASHCTL_AC_8M |
-+ FLASHCTL_RBLE |
-+ (0x01 << FLASHCTL_IDCY_S) |
-+ (0x07 << FLASHCTL_WST1_S) |
-+ (0x07 << FLASHCTL_WST2_S) |
-+ (sysRegRead(AR531X_FLASHCTL0) & FLASHCTL_MW);
-+
-+ sysRegWrite(AR531X_FLASHCTL0, flash_ctl);
-+
-+ /* Disable other flash banks */
-+ sysRegWrite(AR531X_FLASHCTL1,
-+ sysRegRead(AR531X_FLASHCTL1) & ~(FLASHCTL_E | FLASHCTL_AC));
-+
-+ sysRegWrite(AR531X_FLASHCTL2,
-+ sysRegRead(AR531X_FLASHCTL2) & ~(FLASHCTL_E | FLASHCTL_AC));
-+#endif
-+}
-+
-+
-+
-+void __init
-+serial_setup(void)
-+{
-+ struct serial_struct s;
-+
-+ memset(&s, 0, sizeof(s));
-+
-+ s.flags = STD_COM_FLAGS;
-+ s.io_type = SERIAL_IO_MEM;
-+#if CONFIG_AR5315
-+ s.baud_base = ar531x_apb_frequency()/16;
-+#else
-+ s.baud_base = ar531x_sys_frequency()/16;
-+#endif
-+ s.irq = AR531X_MISC_IRQ_UART0;
-+ s.iomem_reg_shift = 2;
-+#if CONFIG_AR5315
-+ s.iomem_base = (u8 *)AR5315_UART0;
-+#else
-+ s.iomem_base = (u8 *)AR531X_UART0;
-+#endif
-+
-+ if (early_serial_setup(&s) != 0)
-+ printk(KERN_ERR "early_serial_setup failed\n");
-+}
-+
-+extern int setup_irq(unsigned int irq, struct irqaction *irqaction);
-+static void __init
-+ar531x_timer_setup(struct irqaction *irq)
-+{
-+ unsigned int count;
-+
-+ /* Usually irq is timer_irqaction (timer_interrupt) */
-+ setup_irq(AR531X_IRQ_CPU_CLOCK, irq);
-+
-+ /* to generate the first CPU timer interrupt */
-+ count = read_c0_count();
-+ write_c0_compare(count + 1000);
-+}
-+
-+extern void (*board_time_init)(void);
-+
-+static void __init
-+ar531x_time_init(void)
-+{
-+ mips_hpt_frequency = ar531x_cpu_frequency() / 2;
-+}
-+
-+void __init
-+ar531x_setup(void)
-+{
-+ /* Clear any lingering AHB errors */
-+#if CONFIG_AR5315
-+ unsigned int config = read_c0_config();
-+ write_c0_config(config & ~0x3);
-+ sysRegWrite(AR5315_AHB_ERR0,AHB_ERROR_DET);
-+ sysRegRead(AR5315_AHB_ERR1);
-+ sysRegWrite(AR5315_WDC, WDC_IGNORE_EXPIRATION);
-+#else
-+ sysRegRead(AR531X_PROCADDR);
-+ sysRegRead(AR531X_DMAADDR);
-+
-+ sysRegWrite(AR531X_WD_CTRL, AR531X_WD_CTRL_IGNORE_EXPIRATION);
-+
-+#endif
-+
-+ /* Disable data watchpoints */
-+ write_c0_watchlo0(0);
-+
-+ board_time_init = ar531x_time_init;
-+ board_timer_setup = ar531x_timer_setup;
-+
-+ _machine_restart = ar531x_restart;
-+ _machine_halt = ar531x_halt;
-+ _machine_power_off = ar531x_power_off;
-+
-+ flash_setup();
-+ serial_setup();
-+}
-diff -urN linux-mips/arch/mips/ar531x/Makefile mips-linux-2.4.25/arch/mips/ar531x/Makefile
---- linux-mips/arch/mips/ar531x/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/Makefile 2005-12-30 17:26:29.912989328 +0000
-@@ -0,0 +1,33 @@
-+#
-+# 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+#
-+
-+# Makefile for Atheros ar531x boards
-+#
-+# Note! Dependencies are done automagically by 'make dep', which also
-+# removes any old dependencies. DON'T put your own dependencies here
-+# unless it's something special (ie not a .c file).
-+#
-+
-+.S.s:
-+ $(CPP) $(CFLAGS) $< -o $*.s
-+.S.o:
-+ $(CC) $(CFLAGS) -D__ASSEMBLY__ -c $< -o $*.o
-+
-+O_TARGET:= ar531x.o
-+
-+export-objs = ar531xksyms.o
-+
-+obj-y := ar531xdbg_io.o \
-+ ar531xsetup.o \
-+ ar531xprom.o \
-+ ar531xirq.o \
-+ ar531xintr.o \
-+ ar531xgpio.o \
-+ ar531xksyms.o
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-mips/arch/mips/ar531x/README mips-linux-2.4.25/arch/mips/ar531x/README
---- linux-mips/arch/mips/ar531x/README 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/README 2005-12-30 17:26:30.478903296 +0000
-@@ -0,0 +1,68 @@
-+Basic information for the AR531X Board Support Package
-+
-+This directory contains the "LBSP" -- Linux Board Support Package --
-+for Linux on the Atheros AR531X Wireless System-On-a-Chip. It is intended
-+primarily as a building block for wireless products. At this time, the
-+AR531X Linux BSP is experimental code, and is actively UNDER CONSTRUCTION.
-+
-+Some components that are supported by this LBSP along with a standard 2.4
-+Linux MIPS kernel include
-+ R4Kc CPU
-+ instruction and data caches
-+ SDRAM
-+ flash (Macronix, AMD, STS, etc.)
-+ 16550 serial port
-+ ethernet MACs
-+ ethernet PHY or PHY Switch (RealTek, Kendin, Marvell)
-+ General-Purpose I/O pins
-+ kernel debugging with kgdb
-+
-+This LBSP code does NOT include drivers for the wireless components of the
-+chip/boards! Drivers for those components may be distributed separately.
-+In particular, the MADWiFi project under SourceForge supports (not yet!)
-+wireless functions on the AR531X chipset. See
-+ http://www.sourceforge.net/projects/madwifi
-+
-+Files included in this BSP:
-+ae531xlnx.c - Linux-specific portions of the ethernet driver
-+ae531xmac.c - OS-independent AR531X ethernet MAC code
-+ae531xmac.h - OS-independent AR531X ethernet MAC software definitions
-+ae531xreg.h - OS-independent AR531X ethernet MAC hardware definitions
-+ar531x.h - OS-independent AR531X system hardware definitions
-+ar531xlnx.h - Linux-specific AR531X system definitions and externs
-+defconfig-ar531x - Default Linux configuration file
-+intr_recv.S - Linux interrupt "glue" code
-+ar531xirq.c - Linux Interrupt Request management
-+Makefile - Linux makefile
-+mvPhy.c - OS-independent ethernet PHY code for Marvell Switch
-+mvPhy.h - OS-independent ethernet PHY definitions for Marvell Switch
-+ar531xprom.c - Linux prom "glue" code
-+ar531xsetup.c - Linux startup code
-+ar531xdbg_io.c - Support for kgdb-based debugging and for EARLY_PRINTK_HACK
-+ar531xproc.c - Pseudo-device driver for /proc/ar531x device
-+ar531xgpio.c - Support for General Purpose I/O pins
-+ar531xwmacsl.c - Wireless MAC Support Layer
-+
-+Additional files, distributed with the BSP:
-+README - This file
-+README.BUILD - Instructions for building a linux kernel from source
-+README.EXECUTE - Instructions for testing your linux kernel
-+README.RAMDISK - Instructions for building a root ramdisk image
-+
-+ramdisk.gz - A binary ramdisk image, suitable for use with AR531X.
-+DIFFS - Directory that contains "patch" files (See README.BUILD)
-+
-+
-+There are several ways to boot a vmlinux image on an AR531X board:
-+ -You can boot in over ethernet from the vxWorks bootrom, which is preloaded
-+ on all Atheros boards
-+ -You can use an ICE (e.g. VisionICE) to load the vmlinux image. You will
-+ need appropriate register initialization (e.g. AP30.ini file)
-+ -You can use the eCos RedBoot bootrom loader. This is a full-featured
-+ bootrom which as been ported to AR531x. It can boot vmlinux over ethernet
-+ or from flash. Source code is available from Atheros.
-+
-+Please send comments, corrections, complaints, criticisms, suggestions,
-+enhancements, requests, or any other reasonable communications regarding
-+this effort, to "linux@atheros.com". Your email will be received by a
-+couple of engineers, and redirected as appropriate.
-diff -urN linux-mips/arch/mips/ar531x/README.BUILD mips-linux-2.4.25/arch/mips/ar531x/README.BUILD
---- linux-mips/arch/mips/ar531x/README.BUILD 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/README.BUILD 2005-12-30 17:26:30.478903296 +0000
-@@ -0,0 +1,47 @@
-+ How to BUILD a linux kernel for an AR531X system
-+
-+It is expected that you will build Linux on an existing Linux system, which
-+has all of the standard Linux tools.
-+
-+01) Obtain a MIPS BigEndian ELF gcc-compatible toolchain. For example,
-+ if you're cross-compiling on a x86 Linux system, you could use:
-+ ftp://ftp.mips.com/pub/tools/software/sde-for-linux/sdelinux-5.01-4eb.i386.rpm
-+
-+02) Obtain the latest working MIPS Linux kernel
-+ cvs -d :pserver:cvs@ftp.linux-mips.org:/home/cvs login (password "cvs")
-+ cvs -d :pserver:cvs@ftp.linux-mips.org:/home/cvs co -r linux_2_4 linux
-+
-+ Now "cd linux". The remainder of these instructions assume
-+ that you are in the linux directory.
-+
-+03) Place the contents of this directory at arch/mips/ar531x.
-+
-+04) Use the patch command to patch generic linux files according
-+ to the DIFFS directory
-+ for i in arch/mips/ar531x/DIFFS/*.diff
-+ do
-+ patch -p1 < $i
-+ done
-+ NOTE: This version of the AR531X Linux BSP was tested with
-+ MIPS Linux 2.4.22 as of 11/14/03. If you use a different
-+ (e.g. more recent) version of Linux source, you may need to
-+ resolve some minor patch and compilation issues.
-+
-+05) Set up a RAMDISK image.
-+ See the instructions in README.RAMDISK.
-+
-+06) Set up a linux configuration using ar531x/defconfig-ar531x.
-+ cp arch/mips/ar531x/defconfig-ar531x .config
-+ make oldconfig (answer all questions that are asked)
-+ NOTE: For development/debug purposes, you may want to
-+ enable CONFIG_RUNTIME_DEBUG and CONFIG_KGDB.
-+
-+07) Make dependencies.
-+ make dep
-+
-+08) Build the linux kernel
-+ make
-+
-+09) The linux image you just built is in vmlinux.
-+ See instructions in README.EXECUTE to run your vmlinux
-+ image on an AP531X-based board.
-diff -urN linux-mips/arch/mips/ar531x/README.EXECUTE mips-linux-2.4.25/arch/mips/ar531x/README.EXECUTE
---- linux-mips/arch/mips/ar531x/README.EXECUTE 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/README.EXECUTE 2005-12-30 17:26:30.479903144 +0000
-@@ -0,0 +1,23 @@
-+ How to EXECUTE a linux image on an AR531X system
-+
-+There are currently three ways to run you vmlinux image:
-+ 1) Load it using the vxWorks bootrom that is supplied with the board.
-+ You can load it over ethernet or from the TFFS file system, if you
-+ have sufficient flash to store the image.
-+ 2) Load it using an ICE (e.g. VisionICE).
-+ 3) Use a bootrom loader, such as eCos RedBoot.
-+
-+After you have booted linux:
-+ By default, the root filesystem on ramdisk is read-only.
-+ To make it writable, use "mount -o remount w /".
-+
-+ The user-level commands are slightly non-standard, as they
-+ are based on "busybox".
-+
-+ The "wget" command is included. You can use wget to fetch
-+ files from any ftp server. So, for instance, you can fetch
-+ a kernel module and then "insmod" it.
-+
-+Note that the standard source-level kernel debugger, kgdb, works well
-+over the serial line with this port. We use kgdb and the kgdb_demux perl
-+script -- available over the www -- for debugging.
-diff -urN linux-mips/arch/mips/ar531x/README.VERSION mips-linux-2.4.25/arch/mips/ar531x/README.VERSION
---- linux-mips/arch/mips/ar531x/README.VERSION 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/arch/mips/ar531x/README.VERSION 2005-12-30 17:26:30.479903144 +0000
-@@ -0,0 +1 @@
-+Source release last modified: 12/16/03
-diff -urN linux-mips/arch/mips/config-shared.in mips-linux-2.4.25/arch/mips/config-shared.in
---- linux-mips/arch/mips/config-shared.in 2005-12-24 15:11:15.963885864 +0000
-+++ mips-linux-2.4.25/arch/mips/config-shared.in 2005-12-30 17:26:31.611731080 +0000
-@@ -34,6 +34,7 @@
- dep_bool 'Support for Alchemy PB1550 board' CONFIG_MIPS_PB1550 $CONFIG_MIPS32
- dep_bool 'Support for Alchemy PB1200 board' CONFIG_MIPS_PB1200 $CONFIG_MIPS32
- dep_bool 'Support for Alchemy Hydrogen3 board' CONFIG_MIPS_HYDROGEN3 $CONFIG_MIPS32
-+dep_bool 'Support for Atheros AR5312/AR2312 WiSoC (EXPERIMENTAL)' CONFIG_AR531X $CONFIG_AR531X $CONFIG_EXPERIMENTAL
- dep_bool 'Support for MyCable XXS1500 board' CONFIG_MIPS_XXS1500 $CONFIG_MIPS32
- dep_bool 'Support for 4G Systems MTX-1 board' CONFIG_MIPS_MTX1 $CONFIG_MIPS32
- dep_bool 'Support for Cogent CSB250 board' CONFIG_COGENT_CSB250 $CONFIG_MIPS32
-@@ -238,6 +239,63 @@
- define_bool CONFIG_PC_KEYB y
- define_bool CONFIG_OLD_TIME_C y
- fi
-+if [ "$CONFIG_AR531X" = "y" ]; then
-+ define_bool CONFIG_IRQ_CPU y
-+ define_bool CONFIG_CPU_R4X00 y
-+ define_bool CONFIG_SERIAL y
-+ define_bool CONFIG_NEW_IRQ y
-+ define_bool CONFIG_NEW_TIME_C y
-+ define_bool CONFIG_AR5312
-+ define_bool CONFIG_NONCOHERENT_IO y
-+ bool 'Enable early printk hack' CONFIG_EARLY_PRINTK_HACK
-+ define_bool CONFIG_SCSI n
-+ mainmenu_option next_comment
-+ comment 'Board selection'
-+ choice 'Board type' \
-+ "UNKNOWN CONFIG_APUNKNOWN \
-+ AP30 CONFIG_AP30 \
-+ AP31 CONFIG_AP31 \
-+ AP33 CONFIG_AP33 \
-+ AP38 CONFIG_AP38 \
-+ AP43 CONFIG_AP43 \
-+ AP48 CONFIG_AP48 \
-+ AP51 CONFIG_AP51 \
-+ AP30-ASK CONFIG_AP30ASK" AP30
-+ if [ "$CONFIG_AP30" = "y" -o "$CONFIG_AP30ASK" = "y" ]; then
-+ define_int CONFIG_MTD_PHYSMAP_BUSWIDTH 2
-+ fi
-+ if [ "$CONFIG_AP33" = "y" ]; then
-+ define_int CONFIG_MTD_PHYSMAP_BUSWIDTH 1
-+ fi
-+ if [ "$CONFIG_AP38" = "y" ]; then
-+ define_int CONFIG_MTD_PHYSMAP_BUSWIDTH 1
-+ fi
-+ if [ "$CONFIG_AP43" = "y" ]; then
-+ define_int CONFIG_MTD_PHYSMAP_BUSWIDTH 1
-+ fi
-+ if [ "$CONFIG_AP48" = "y" ]; then
-+ define_int CONFIG_MTD_PHYSMAP_BUSWIDTH 1
-+ fi
-+ if [ "$CONFIG_AP51" = "y" ]; then
-+ define_int CONFIG_MTD_PHYSMAP_BUSWIDTH 1
-+ define_bool CONFIG_MTD_REDBOOT_PARTS y
-+ define_bool CONFIG_AR5315 y
-+ define_bool CONFIG_MTD_SPIFLASH y
-+ define_bool CONFIG_MTD_CFI n
-+ define_bool CONFIG_MTD_JEDECPROBE n
-+ define_bool CONFIG_MTD_CFI_INTELEXT n
-+ define_bool CONFIG_MTD_CFI_AMDSTD n
-+ define_bool CONFIG_MTD_OBSOLETE_CHIPS n
-+ define_bool CONFIG_MTD_AMDSTD n
-+ define_bool CONFIG_MTD_JEDEC n
-+ define_bool CONFIG_MTD_PHYSMAP n
-+ fi
-+ mainmenu_option next_comment
-+ comment 'Flash Selection'
-+ choice 'Flash Size' \
-+ "2MB CONFIG_FLASH_2MB \
-+ 4MB CONFIG_FLASH_4MB" 2MB
-+fi
- if [ "$CONFIG_CASIO_E55" = "y" ]; then
- define_bool CONFIG_IRQ_CPU y
- define_bool CONFIG_NEW_TIME_C y
-
-diff -urN linux-mips/arch/mips/kernel/setup.c mips-linux-2.4.25/arch/mips/kernel/setup.c
---- linux-mips/arch/mips/kernel/setup.c 2005-12-24 15:11:16.188851664 +0000
-+++ mips-linux-2.4.25/arch/mips/kernel/setup.c 2005-12-30 17:26:33.536438480 +0000
-@@ -496,6 +496,7 @@
- void hp_setup(void);
- void au1x00_setup(void);
- void frame_info_init(void);
-+ void ar531x_setup(void);
-
- frame_info_init();
- #if defined(CONFIG_BLK_DEV_FD) || defined(CONFIG_BLK_DEV_FD_MODULE)
-@@ -693,6 +694,12 @@
- pmc_yosemite_setup();
- break;
- #endif
-+
-+#ifdef CONFIG_AR531X
-+ case MACH_GROUP_AR531X:
-+ ar531x_setup();
-+ break;
-+#endif
- default:
- panic("Unsupported architecture");
- }
-diff -urN linux-mips/arch/mips/Makefile mips-linux-2.4.25/arch/mips/Makefile
---- linux-mips/arch/mips/Makefile 2005-12-24 15:11:15.903894984 +0000
-+++ mips-linux-2.4.25/arch/mips/Makefile 2005-12-30 17:26:29.911989480 +0000
-@@ -701,6 +701,17 @@
- LOADADDR += 0x80020000
- endif
-
-+ifdef CONFIG_AR531X
-+SUBDIRS += arch/mips/ar531x
-+LIBS += arch/mips/ar531x/ar531x.o
-+ifdef CONFIG_AP51
-+LOADADDR += 0x80041000
-+else
-+LOADADDR += 0x80002000
-+endif
-+
-+endif
-+
- #
- # Choosing incompatible machines durings configuration will result in
- # error messages during linking. Select a default linkscript if
-diff -urN linux-mips/ath_version.mk mips-linux-2.4.25/ath_version.mk
---- linux-mips/ath_version.mk 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/ath_version.mk 2005-12-30 17:27:00.579327336 +0000
-@@ -0,0 +1 @@
-+EXTRAVERSION=-LSDK-5.0.0-RC5
-diff -urN linux-mips/drivers/char/serial.c mips-linux-2.4.25/drivers/char/serial.c
---- linux-mips/drivers/char/serial.c 2005-12-24 15:11:21.796999096 +0000
-+++ mips-linux-2.4.25/drivers/char/serial.c 2005-12-30 17:27:10.815771160 +0000
-@@ -3441,7 +3441,7 @@
-
- static _INLINE_ void show_serial_version(void)
- {
-- printk(KERN_INFO "%s version %s%s (%s) with%s", serial_name,
-+ printk(KERN_INFO "%s version %s%s (%s) with%s\n", serial_name,
- serial_version, LOCAL_VERSTRING, serial_revdate,
- serial_options);
- }
-@@ -5567,7 +5567,7 @@
- printk(KERN_INFO"ttyS%02d%s at 0x%p (irq = %d) is a %s\n",
- state->line + SERIAL_DEV_OFFSET,
- (state->flags & ASYNC_FOURPORT) ? " FourPort" : "",
-- state->iomem_base, state->irq,
-+ (void *)state->iomem_base, state->irq,
- uart_config[state->type].name);
- }
- else {
-diff -urN linux-mips/drivers/mtd/chips/cfi_cmdset_0002.c mips-linux-2.4.25/drivers/mtd/chips/cfi_cmdset_0002.c
---- linux-mips/drivers/mtd/chips/cfi_cmdset_0002.c 2005-12-24 15:11:25.102496584 +0000
-+++ mips-linux-2.4.25/drivers/mtd/chips/cfi_cmdset_0002.c 2005-12-30 17:27:21.333172272 +0000
-@@ -511,7 +511,7 @@
- or tells us why it failed. */
- dq6 = CMD(1<<6);
- dq5 = CMD(1<<5);
-- timeo = jiffies + (HZ/1000); /* setting timeout to 1ms for now */
-+ timeo = jiffies + (HZ/1000) + 1; /* setting timeout to 1ms for now */
-
- oldstatus = cfi_read(map, adr);
- status = cfi_read(map, adr);
-@@ -536,16 +536,18 @@
- if( (status & dq5) == dq5 ) {
- /* When DQ5 raises, we must check once again
- if DQ6 is toggling. If not, the erase has been
-- completed OK. If not, reset chip. */
-+ completed OK. But if so, reset chip. */
- oldstatus = cfi_read(map, adr);
- status = cfi_read(map, adr);
-
- if ( (oldstatus & 0x00FF) == (status & 0x00FF) ) {
-+#if 0
- printk(KERN_WARNING "Warning: DQ5 raised while program operation was in progress, however operation completed OK\n" );
-+#endif
- } else {
- /* DQ5 is active so we can do a reset and stop the erase */
- cfi_write(map, CMD(0xF0), chip->start);
-- printk(KERN_WARNING "Internal flash device timeout occurred or write operation was performed while flash was programming.\n" );
-+ printk(KERN_WARNING "Internal flash device timeout pt A occurred or write operation was performed while flash was programming. timeout=%d\n",chip->word_write_time );
- }
- } else {
- printk(KERN_WARNING "Waiting for write to complete timed out in do_write_oneword.");
-@@ -959,7 +961,7 @@
- {
- /* DQ5 is active so we can do a reset and stop the erase */
- cfi_write(map, CMD(0xF0), chip->start);
-- printk( KERN_WARNING "Internal flash device timeout occured or write operation was performed while flash was erasing\n" );
-+ printk( KERN_WARNING "Internal flash device timeout pt B occured or write operation was performed while flash was erasing\n" );
- }
- }
- else
-diff -urN linux-mips/drivers/mtd/chips/cfi_probe.c mips-linux-2.4.25/drivers/mtd/chips/cfi_probe.c
---- linux-mips/drivers/mtd/chips/cfi_probe.c 2005-12-24 15:11:25.103496432 +0000
-+++ mips-linux-2.4.25/drivers/mtd/chips/cfi_probe.c 2005-12-30 17:27:21.507145824 +0000
-@@ -51,7 +51,7 @@
- struct flchip *chips, struct cfi_private *cfi)
- {
- int i;
--
-+
- if ((base + 0) >= map->size) {
- printk(KERN_NOTICE
- "Probe at base[0x00](0x%08lx) past the end of the map(0x%08lx)\n",
-@@ -221,12 +221,10 @@
-
- static void print_cfi_ident(struct cfi_ident *cfip)
- {
--#if 0
- if (cfip->qry[0] != 'Q' || cfip->qry[1] != 'R' || cfip->qry[2] != 'Y') {
- printk("Invalid CFI ident structure.\n");
- return;
- }
--#endif
- printk("Primary Vendor Command Set: %4.4X (%s)\n", cfip->P_ID, vendorname(cfip->P_ID));
- if (cfip->P_ADR)
- printk("Primary Algorithm Table at %4.4X\n", cfip->P_ADR);
-diff -urN linux-mips/drivers/mtd/chips/jedec_probe.c mips-linux-2.4.25/drivers/mtd/chips/jedec_probe.c
---- linux-mips/drivers/mtd/chips/jedec_probe.c 2005-12-24 15:11:25.126492936 +0000
-+++ mips-linux-2.4.25/drivers/mtd/chips/jedec_probe.c 2005-12-30 17:27:21.532142024 +0000
-@@ -104,6 +104,7 @@
- #define SST29LE512 0x003d
- #define SST39LF800 0x2781
- #define SST39LF160 0x2782
-+#define SST39LF1601 0x234b
- #define SST39LF512 0x00D4
- #define SST39LF010 0x00D5
- #define SST39LF020 0x00D6
-@@ -113,6 +114,8 @@
- #define SST49LF030A 0x001C
- #define SST49LF040A 0x0051
- #define SST49LF080A 0x005B
-+#define SST39VF3201 0x235B
-+#define SST39VF3202 0x235A
-
- /* Toshiba */
- #define TC58FVT160 0x00C2
-@@ -900,7 +903,43 @@
- NumEraseRegions: 1,
- regions: {ERASEINFO(0x01000,256),
- }
-- }
-+ }, {
-+ mfr_id: MANUFACTURER_SST,
-+ dev_id: SST39LF160,
-+ name: "SST 39LF160",
-+ DevSize: SIZE_2MiB,
-+ CmdSet: P_ID_AMD_STD,
-+ NumEraseRegions: 1,
-+ regions: {ERASEINFO(0x01000,512),
-+ }
-+ }, {
-+ mfr_id: MANUFACTURER_SST,
-+ dev_id: SST39LF1601,
-+ name: "SST 39LF1601",
-+ DevSize: SIZE_2MiB,
-+ CmdSet: P_ID_AMD_STD,
-+ NumEraseRegions: 1,
-+ regions: {ERASEINFO(0x01000,512),
-+ }
-+ }, {
-+ mfr_id: MANUFACTURER_SST,
-+ dev_id: SST39VF3201,
-+ name: "SST 39VF3201",
-+ DevSize: SIZE_4MiB,
-+ CmdSet: P_ID_AMD_STD,
-+ NumEraseRegions: 1,
-+ regions: {ERASEINFO(0x01000,1024),
-+ }
-+ }, {
-+ mfr_id: MANUFACTURER_SST,
-+ dev_id: SST39VF3202,
-+ name: "SST 39VF3202",
-+ DevSize: SIZE_4MiB,
-+ CmdSet: P_ID_AMD_STD,
-+ NumEraseRegions: 1,
-+ regions: {ERASEINFO(0x01000,1024),
-+ }
-+ }
- };
-
-
-@@ -967,6 +1006,35 @@
- p_cfi->cfiq->DevSize = jedec_table[index].DevSize;
- p_cfi->cfi_mode = CFI_MODE_JEDEC;
-
-+ /*
-+ * Add the following code to set the flash timing parameters.
-+ * Maybe this is done in a table somwehere else? I can't find it.
-+ */
-+
-+
-+ switch(jedec_table[index].dev_id) {
-+ case SST39VF3201:
-+ case SST39VF3202:
-+ p_cfi->cfiq->WordWriteTimeoutTyp = 3; /* 8 us */
-+ p_cfi->cfiq->WordWriteTimeoutMax = 4; /* 16 us */
-+ p_cfi->cfiq->BlockEraseTimeoutTyp = 15; /* Actually 18ms, max 25 */
-+ p_cfi->cfiq->BlockEraseTimeoutMax = 15; /* Actually 25ms */
-+ p_cfi->cfiq->ChipEraseTimeoutTyp = 16; /* Max is 50ms, typical is 40ms */
-+ p_cfi->cfiq->ChipEraseTimeoutMax = 16;
-+ break;
-+ case SST39LF160:
-+ case SST39LF1601:
-+ p_cfi->cfiq->WordWriteTimeoutTyp = 4; /* 14 us */
-+ p_cfi->cfiq->WordWriteTimeoutMax = 5; /* 20 us */
-+ p_cfi->cfiq->BlockEraseTimeoutTyp = 15; /* Actually 18ms, max 25 */
-+ p_cfi->cfiq->BlockEraseTimeoutMax = 15; /* Actually 25ms */
-+ p_cfi->cfiq->ChipEraseTimeoutTyp = 17; /* Max is 70ms, typical is 40ms */
-+ p_cfi->cfiq->ChipEraseTimeoutMax = 17;
-+ break;
-+ }
-+
-+
-+
- for (i=0; i<num_erase_regions; i++){
- p_cfi->cfiq->EraseRegionInfo[i] = jedec_table[index].regions[i];
- }
-diff -urN linux-mips/drivers/mtd/Config.in mips-linux-2.4.25/drivers/mtd/Config.in
---- linux-mips/drivers/mtd/Config.in 2005-12-24 15:11:25.091498256 +0000
-+++ mips-linux-2.4.25/drivers/mtd/Config.in 2005-12-30 17:27:21.182195224 +0000
-@@ -14,6 +14,9 @@
- dep_tristate ' MTD partitioning support' CONFIG_MTD_PARTITIONS $CONFIG_MTD
- dep_tristate ' MTD concatenating support' CONFIG_MTD_CONCAT $CONFIG_MTD
- dep_tristate ' RedBoot partition table parsing' CONFIG_MTD_REDBOOT_PARTS $CONFIG_MTD_PARTITIONS
-+ if [ "$CONFIG_MTD_END_RESERVED" != "" ]; then
-+ define_int CONFIG_MTD_END_RESERVED $CONFIG_MTD_END_RESERVED
-+ fi
- dep_tristate ' Command line partition table parsing' CONFIG_MTD_CMDLINE_PARTS $CONFIG_MTD_PARTITIONS
- if [ "$CONFIG_ARM" = "y" ]; then
- dep_tristate ' ARM Firmware Suite partition parsing' CONFIG_MTD_AFS_PARTS $CONFIG_MTD_PARTITIONS
-diff -urN linux-mips/drivers/mtd/devices/Makefile mips-linux-2.4.25/drivers/mtd/devices/Makefile
---- linux-mips/drivers/mtd/devices/Makefile 2005-12-24 15:11:25.128492632 +0000
-+++ mips-linux-2.4.25/drivers/mtd/devices/Makefile 2005-12-30 17:27:21.561137616 +0000
-@@ -22,5 +22,6 @@
- obj-$(CONFIG_MTD_MTDRAM) += mtdram.o
- obj-$(CONFIG_MTD_LART) += lart.o
- obj-$(CONFIG_MTD_BLKMTD) += blkmtd.o
-+obj-$(CONFIG_MTD_SPIFLASH) += spiflash.o
-
- include $(TOPDIR)/Rules.make
-diff -urN linux-mips/drivers/mtd/devices/spiflash.c mips-linux-2.4.25/drivers/mtd/devices/spiflash.c
---- linux-mips/drivers/mtd/devices/spiflash.c 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/drivers/mtd/devices/spiflash.c 2005-12-30 17:27:21.652123784 +0000
-@@ -0,0 +1,506 @@
-+
-+/*
-+ * MTD driver for the SPI Flash Memory support.
-+ *
-+ * $Id: //depot/sw/releases/linuxsrc/src/kernels/mips-linux-2.4.25/drivers/mtd/devices/spiflash.c#3 $
-+ *
-+ *
-+ * Copyright (c) 2005-2006 Atheros Communications Inc.
-+ *
-+ * This code 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.
-+ *
-+ */
-+
-+/*===========================================================================
-+** !!!! VERY IMPORTANT NOTICE !!!! FLASH DATA STORED IN LITTLE ENDIAN FORMAT
-+**
-+** This module contains the Serial Flash access routines for the Atheros SOC.
-+** The Atheros SOC integrates a SPI flash controller that is used to access
-+** serial flash parts. The SPI flash controller executes in "Little Endian"
-+** mode. THEREFORE, all WRITES and READS from the MIPS CPU must be
-+** BYTESWAPPED! The SPI Flash controller hardware by default performs READ
-+** ONLY byteswapping when accessed via the SPI Flash Alias memory region
-+** (Physical Address 0x0800_0000 - 0x0fff_ffff). The data stored in the
-+** flash sectors is stored in "Little Endian" format.
-+**
-+** The spiflash_write() routine performs byteswapping on all write
-+** operations.
-+**===========================================================================*/
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/version.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/partitions.h>
-+#include <asm/delay.h>
-+#include <asm/io.h>
-+#include "spiflash.h"
-+
-+/* debugging */
-+/* #define SPIFLASH_DEBUG */
-+
-+#ifndef __BIG_ENDIAN
-+#error This driver currently only works with big endian CPU.
-+#endif
-+
-+static char module_name[] = "spiflash";
-+
-+#define MIN(a,b) ((a) < (b) ? (a) : (b))
-+#define FALSE 0
-+#define TRUE 1
-+
-+#define ROOTFS_NAME "rootfs"
-+
-+static __u32 spiflash_regread32(int reg);
-+static void spiflash_regwrite32(int reg, __u32 data);
-+static __u32 spiflash_sendcmd (int op);
-+
-+int __init spiflash_init (void);
-+void __exit spiflash_exit (void);
-+static int spiflash_probe (void);
-+static int spiflash_erase (struct mtd_info *mtd,struct erase_info *instr);
-+static int spiflash_read (struct mtd_info *mtd, loff_t from,size_t len,size_t *retlen,u_char *buf);
-+static int spiflash_write (struct mtd_info *mtd,loff_t to,size_t len,size_t *retlen,const u_char *buf);
-+
-+/* Flash configuration table */
-+struct flashconfig {
-+ __u32 byte_cnt;
-+ __u32 sector_cnt;
-+ __u32 sector_size;
-+ __u32 cs_addrmask;
-+} flashconfig_tbl[MAX_FLASH] =
-+ {
-+ { 0, 0, 0, 0},
-+ { STM_1MB_BYTE_COUNT, STM_1MB_SECTOR_COUNT, STM_1MB_SECTOR_SIZE, 0x0},
-+ { STM_2MB_BYTE_COUNT, STM_2MB_SECTOR_COUNT, STM_2MB_SECTOR_SIZE, 0x0},
-+ { STM_4MB_BYTE_COUNT, STM_4MB_SECTOR_COUNT, STM_4MB_SECTOR_SIZE, 0x0}
-+ };
-+
-+/* Mapping of generic opcodes to STM serial flash opcodes */
-+struct opcodes {
-+ __u16 code;
-+ __s8 tx_cnt;
-+ __s8 rx_cnt;
-+} stm_opcodes[] = {
-+ {STM_OP_WR_ENABLE, 1, 0},
-+ {STM_OP_WR_DISABLE, 1, 0},
-+ {STM_OP_RD_STATUS, 1, 1},
-+ {STM_OP_WR_STATUS, 1, 0},
-+ {STM_OP_RD_DATA, 4, 4},
-+ {STM_OP_FAST_RD_DATA, 1, 0},
-+ {STM_OP_PAGE_PGRM, 8, 0},
-+ {STM_OP_SECTOR_ERASE, 4, 0},
-+ {STM_OP_BULK_ERASE, 1, 0},
-+ {STM_OP_DEEP_PWRDOWN, 1, 0},
-+ {STM_OP_RD_SIG, 4, 1}
-+};
-+
-+/* Driver private data structure */
-+struct spiflash_data {
-+ struct mtd_info *mtd;
-+ struct mtd_partition *parsed_parts; /* parsed partitions */
-+ void *spiflash_readaddr; /* memory mapped data for read */
-+ void *spiflash_mmraddr; /* memory mapped register space */
-+};
-+
-+static struct spiflash_data *spidata;
-+
-+extern int parse_redboot_partitions(struct mtd_info *master, struct mtd_partition **pparts);
-+
-+/***************************************************************************************************/
-+
-+static __u32
-+spiflash_regread32(int reg)
-+{
-+ volatile __u32 *data = (__u32 *)(spidata->spiflash_mmraddr + reg);
-+
-+ return (*data);
-+}
-+
-+static void
-+spiflash_regwrite32(int reg, __u32 data)
-+{
-+ volatile __u32 *addr = (__u32 *)(spidata->spiflash_mmraddr + reg);
-+
-+ *addr = data;
-+ return;
-+}
-+
-+static __u32
-+spiflash_sendcmd (int op)
-+{
-+ __u32 reg;
-+ __u32 mask;
-+ struct opcodes *ptr_opcode;
-+
-+ ptr_opcode = &stm_opcodes[op];
-+
-+ do {
-+ reg = spiflash_regread32(SPI_FLASH_CTL);
-+ } while (reg & SPI_CTL_BUSY);
-+
-+ spiflash_regwrite32(SPI_FLASH_OPCODE, ptr_opcode->code);
-+
-+ reg = (reg & ~SPI_CTL_TX_RX_CNT_MASK) | ptr_opcode->tx_cnt |
-+ (ptr_opcode->rx_cnt << 4) | SPI_CTL_START;
-+
-+ spiflash_regwrite32(SPI_FLASH_CTL, reg);
-+
-+ if (ptr_opcode->rx_cnt > 0) {
-+ do {
-+ reg = spiflash_regread32(SPI_FLASH_CTL);
-+ } while (reg & SPI_CTL_BUSY);
-+
-+ reg = (__u32) spiflash_regread32(SPI_FLASH_DATA);
-+
-+ switch (ptr_opcode->rx_cnt) {
-+ case 1:
-+ mask = 0x000000ff;
-+ break;
-+ case 2:
-+ mask = 0x0000ffff;
-+ break;
-+ case 3:
-+ mask = 0x00ffffff;
-+ break;
-+ default:
-+ mask = 0xffffffff;
-+ break;
-+ }
-+
-+ reg &= mask;
-+ }
-+ else {
-+ reg = 0;
-+ }
-+
-+ return reg;
-+}
-+
-+/* Probe SPI flash device
-+ * Function returns 0 for failure.
-+ * and flashconfig_tbl array index for success.
-+ */
-+static int
-+spiflash_probe (void)
-+{
-+ __u32 sig;
-+ int flash_size;
-+
-+ /* Read the signature on the flash device */
-+ sig = spiflash_sendcmd(SPI_RD_SIG);
-+
-+ switch (sig) {
-+ case STM_8MBIT_SIGNATURE:
-+ flash_size = FLASH_1MB;
-+ break;
-+ case STM_16MBIT_SIGNATURE:
-+ flash_size = FLASH_2MB;
-+ break;
-+ case STM_32MBIT_SIGNATURE:
-+ flash_size = FLASH_4MB;
-+ break;
-+ default:
-+ printk (KERN_WARNING "%s: Read of flash device signature failed!\n", module_name);
-+ return (0);
-+ }
-+
-+ return (flash_size);
-+}
-+
-+
-+static int
-+spiflash_erase (struct mtd_info *mtd,struct erase_info *instr)
-+{
-+ struct opcodes *ptr_opcode;
-+ __u32 temp, reg;
-+ int finished = FALSE;
-+
-+#ifdef SPIFLASH_DEBUG
-+ printk (KERN_DEBUG "%s(addr = 0x%.8x, len = %d)\n",__FUNCTION__,instr->addr,instr->len);
-+#endif
-+
-+ /* sanity checks */
-+ if (instr->addr + instr->len > mtd->size) return (-EINVAL);
-+
-+ ptr_opcode = &stm_opcodes[SPI_SECTOR_ERASE];
-+
-+ temp = ((__u32)instr->addr << 8) | (__u32)(ptr_opcode->code);
-+ spiflash_sendcmd(SPI_WRITE_ENABLE);
-+ do {
-+ reg = spiflash_regread32(SPI_FLASH_CTL);
-+ } while (reg & SPI_CTL_BUSY);
-+
-+ spiflash_regwrite32(SPI_FLASH_OPCODE, temp);
-+
-+ reg = (reg & ~SPI_CTL_TX_RX_CNT_MASK) | ptr_opcode->tx_cnt | SPI_CTL_START;
-+ spiflash_regwrite32(SPI_FLASH_CTL, reg);
-+
-+ do {
-+ reg = spiflash_sendcmd(SPI_RD_STATUS);
-+ if (!(reg & SPI_STATUS_WIP)) {
-+ finished = TRUE;
-+ }
-+ } while (!finished);
-+
-+ instr->state = MTD_ERASE_DONE;
-+ if (instr->callback) instr->callback (instr);
-+
-+#ifdef SPIFLASH_DEBUG
-+ printk (KERN_DEBUG "%s return\n",__FUNCTION__);
-+#endif
-+ return (0);
-+}
-+
-+static int
-+spiflash_read (struct mtd_info *mtd, loff_t from,size_t len,size_t *retlen,u_char *buf)
-+{
-+ u_char *read_addr;
-+
-+#ifdef SPIFLASH_DEBUG
-+ printk (KERN_DEBUG "%s(from = 0x%.8x, len = %d)\n",__FUNCTION__,(__u32) from,(int)len);
-+#endif
-+
-+ /* sanity checks */
-+ if (!len) return (0);
-+ if (from + len > mtd->size) return (-EINVAL);
-+
-+
-+ /* we always read len bytes */
-+ *retlen = len;
-+
-+ read_addr = (u_char *)(spidata->spiflash_readaddr + from);
-+ memcpy(buf, read_addr, len);
-+
-+ return (0);
-+}
-+
-+static int
-+spiflash_write (struct mtd_info *mtd,loff_t to,size_t len,size_t *retlen,const u_char *buf)
-+{
-+ int done = FALSE, page_offset, bytes_left, finished;
-+ __u32 xact_len, spi_data = 0, opcode, reg;
-+
-+#ifdef SPIFLASH_DEBUG
-+ printk (KERN_DEBUG "%s(to = 0x%.8x, len = %d)\n",__FUNCTION__,(__u32) to,len);
-+#endif
-+
-+ *retlen = 0;
-+
-+ /* sanity checks */
-+ if (!len) return (0);
-+ if (to + len > mtd->size) return (-EINVAL);
-+
-+ opcode = stm_opcodes[SPI_PAGE_PROGRAM].code;
-+ bytes_left = len;
-+
-+ while (done == FALSE) {
-+ xact_len = MIN(bytes_left, sizeof(__u32));
-+
-+ /* 32-bit writes cannot span across a page boundary
-+ * (256 bytes). This types of writes require two page
-+ * program operations to handle it correctly. The STM part
-+ * will write the overflow data to the beginning of the
-+ * current page as opposed to the subsequent page.
-+ */
-+ page_offset = (to & (STM_PAGE_SIZE - 1)) + xact_len;
-+
-+ if (page_offset > STM_PAGE_SIZE) {
-+ xact_len -= (page_offset - STM_PAGE_SIZE);
-+ }
-+
-+ spiflash_sendcmd(SPI_WRITE_ENABLE);
-+
-+ do {
-+ reg = spiflash_regread32(SPI_FLASH_CTL);
-+ } while (reg & SPI_CTL_BUSY);
-+
-+ switch (xact_len) {
-+ case 1:
-+ (__u8)spi_data = *buf;
-+ break;
-+ case 2:
-+ spi_data = (buf[1] << 8) | buf[0];
-+ break;
-+ case 3:
-+ spi_data = (buf[2] << 16) | (buf[1] << 8) | buf[0];
-+ break;
-+ case 4:
-+ spi_data = (buf[3] << 24) | (buf[2] << 16) |
-+ (buf[1] << 8) | buf[0];
-+ break;
-+ default:
-+ printk("spiflash_write: default case\n");
-+ break;
-+ }
-+
-+ spiflash_regwrite32(SPI_FLASH_DATA, spi_data);
-+ opcode = (opcode & SPI_OPCODE_MASK) | ((__u32)to << 8);
-+ spiflash_regwrite32(SPI_FLASH_OPCODE, opcode);
-+
-+ reg = (reg & ~SPI_CTL_TX_RX_CNT_MASK) | (xact_len + 4) | SPI_CTL_START;
-+ spiflash_regwrite32(SPI_FLASH_CTL, reg);
-+ finished = FALSE;
-+
-+ do {
-+ udelay(1);
-+ reg = spiflash_sendcmd(SPI_RD_STATUS);
-+ if (!(reg & SPI_STATUS_WIP)) {
-+ finished = TRUE;
-+ }
-+ } while (!finished);
-+
-+ bytes_left -= xact_len;
-+ to += xact_len;
-+ buf += xact_len;
-+
-+ *retlen += xact_len;
-+
-+ if (bytes_left == 0) {
-+ done = TRUE;
-+ }
-+ }
-+
-+ return (0);
-+}
-+
-+
-+int __init
-+spiflash_init (void)
-+{
-+ int result, i;
-+ int index, num_parts;
-+ struct mtd_info *mtd;
-+ struct mtd_partition *mtd_parts;
-+
-+ spidata = kmalloc(sizeof(struct spiflash_data), GFP_KERNEL);
-+ if (!spidata)
-+ return (-ENXIO);
-+
-+ spidata->spiflash_mmraddr = ioremap_nocache(SPI_FLASH_MMR, SPI_FLASH_MMR_SIZE);
-+ if (!spidata->spiflash_mmraddr) {
-+ printk (KERN_WARNING "%s: Failed to map flash device\n", module_name);
-+ kfree(spidata);
-+ return (-ENXIO);
-+ }
-+
-+ mtd = kmalloc(sizeof(struct mtd_info), GFP_KERNEL);
-+ if (!mtd) {
-+ kfree(spidata);
-+ return (-ENXIO);
-+ }
-+
-+ memset (mtd,0,sizeof (*mtd));
-+
-+ printk ("MTD driver for SPI flash.\n");
-+ printk ("%s: Probing for Serial flash ...\n", module_name);
-+ if (!(index = spiflash_probe ())) {
-+ printk (KERN_WARNING "%s: Found no serial flash device\n", module_name);
-+ kfree(mtd);
-+ kfree(spidata);
-+ return (-ENXIO);
-+ }
-+ printk ("%s: Found SPI serial Flash.\n", module_name);
-+ printk ("%d: size\n", flashconfig_tbl[index].byte_cnt);
-+
-+ spidata->spiflash_readaddr = ioremap_nocache(SPI_FLASH_READ, flashconfig_tbl[index].byte_cnt);
-+ if (!spidata->spiflash_readaddr) {
-+ printk (KERN_WARNING "%s: Failed to map flash device\n", module_name);
-+ kfree(mtd);
-+ kfree(spidata);
-+ return (-ENXIO);
-+ }
-+
-+ mtd->name = module_name;
-+ mtd->type = MTD_NORFLASH;
-+ mtd->flags = (MTD_CAP_NORFLASH|MTD_WRITEABLE);
-+ mtd->size = flashconfig_tbl[index].byte_cnt;
-+ mtd->erasesize = flashconfig_tbl[index].sector_size;
-+ mtd->numeraseregions = 0;
-+ mtd->eraseregions = NULL;
-+ mtd->module = THIS_MODULE;
-+ mtd->erase = spiflash_erase;
-+ mtd->read = spiflash_read;
-+ mtd->write = spiflash_write;
-+
-+#ifdef SPIFLASH_DEBUG
-+ printk (KERN_DEBUG
-+ "mtd->name = %s\n"
-+ "mtd->size = 0x%.8x (%uM)\n"
-+ "mtd->erasesize = 0x%.8x (%uK)\n"
-+ "mtd->numeraseregions = %d\n",
-+ mtd->name,
-+ mtd->size, mtd->size / (1024*1024),
-+ mtd->erasesize, mtd->erasesize / 1024,
-+ mtd->numeraseregions);
-+
-+ if (mtd->numeraseregions) {
-+ for (result = 0; result < mtd->numeraseregions; result++) {
-+ printk (KERN_DEBUG
-+ "\n\n"
-+ "mtd->eraseregions[%d].offset = 0x%.8x\n"
-+ "mtd->eraseregions[%d].erasesize = 0x%.8x (%uK)\n"
-+ "mtd->eraseregions[%d].numblocks = %d\n",
-+ result,mtd->eraseregions[result].offset,
-+ result,mtd->eraseregions[result].erasesize,mtd->eraseregions[result].erasesize / 1024,
-+ result,mtd->eraseregions[result].numblocks);
-+ }
-+ }
-+#endif
-+
-+#ifndef CONFIG_BLK_DEV_INITRD
-+ /* parse redboot partitions */
-+ num_parts = parse_redboot_partitions(mtd, &spidata->parsed_parts);
-+
-+#ifdef SPIFLASH_DEBUG
-+ printk (KERN_DEBUG "Found %d redboot partitions\n", num_parts);
-+#endif
-+
-+ if (num_parts) {
-+ result = add_mtd_partitions(mtd, spidata->parsed_parts, num_parts);
-+ /* Find root partition */
-+ mtd_parts = spidata->parsed_parts;
-+ for (i=0; i < num_parts; i++) {
-+ if (!strcmp(mtd_parts[i].name, ROOTFS_NAME)) {
-+ /* Create root device */
-+ ROOT_DEV = MKDEV(MTD_BLOCK_MAJOR, i);
-+ break;
-+ }
-+ }
-+ } else {
-+#ifdef SPIFLASH_DEBUG
-+ printk (KERN_DEBUG "Did not find any redboot partitions\n");
-+#endif
-+ kfree(mtd);
-+ kfree(spidata);
-+ return (-ENXIO);
-+ }
-+#endif
-+
-+ spidata->mtd = mtd;
-+
-+ return (result);
-+}
-+
-+void __exit
-+spiflash_exit (void)
-+{
-+ if (spidata && spidata->parsed_parts) {
-+ del_mtd_partitions (spidata->mtd);
-+ kfree(spidata->mtd);
-+ kfree(spidata);
-+ }
-+}
-+
-+module_init (spiflash_init);
-+module_exit (spiflash_exit);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Atheros Communications Inc");
-+MODULE_DESCRIPTION("MTD driver for SPI Flash on Atheros SOC");
-+
-diff -urN linux-mips/drivers/mtd/devices/spiflash.h mips-linux-2.4.25/drivers/mtd/devices/spiflash.h
---- linux-mips/drivers/mtd/devices/spiflash.h 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/drivers/mtd/devices/spiflash.h 2005-12-30 17:27:21.652123784 +0000
-@@ -0,0 +1,113 @@
-+/*
-+ * SPI Flash Memory support header file.
-+ *
-+ * $Id: //depot/sw/releases/linuxsrc/src/kernels/mips-linux-2.4.25/drivers/mtd/devices/spiflash.h#3 $
-+ *
-+ *
-+ * Copyright (c) 2005, Atheros Communications Inc.
-+ *
-+ * This code 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 FLASH_1MB 1
-+#define FLASH_2MB 2
-+#define FLASH_4MB 3
-+#define MAX_FLASH 4
-+
-+#define STM_PAGE_SIZE 256
-+
-+#define STM_8MBIT_SIGNATURE 0x13
-+#define STM_M25P80_BYTE_COUNT 1048576
-+#define STM_M25P80_SECTOR_COUNT 16
-+#define STM_M25P80_SECTOR_SIZE 0x10000
-+
-+#define STM_16MBIT_SIGNATURE 0x14
-+#define STM_M25P16_BYTE_COUNT 2097152
-+#define STM_M25P16_SECTOR_COUNT 32
-+#define STM_M25P16_SECTOR_SIZE 0x10000
-+
-+#define STM_32MBIT_SIGNATURE 0x15
-+#define STM_M25P32_BYTE_COUNT 4194304
-+#define STM_M25P32_SECTOR_COUNT 64
-+#define STM_M25P32_SECTOR_SIZE 0x10000
-+
-+#define STM_1MB_BYTE_COUNT STM_M25P80_BYTE_COUNT
-+#define STM_1MB_SECTOR_COUNT STM_M25P80_SECTOR_COUNT
-+#define STM_1MB_SECTOR_SIZE STM_M25P80_SECTOR_SIZE
-+#define STM_2MB_BYTE_COUNT STM_M25P16_BYTE_COUNT
-+#define STM_2MB_SECTOR_COUNT STM_M25P16_SECTOR_COUNT
-+#define STM_2MB_SECTOR_SIZE STM_M25P16_SECTOR_SIZE
-+#define STM_4MB_BYTE_COUNT STM_M25P32_BYTE_COUNT
-+#define STM_4MB_SECTOR_COUNT STM_M25P32_SECTOR_COUNT
-+#define STM_4MB_SECTOR_SIZE STM_M25P32_SECTOR_SIZE
-+
-+#define SPI_WRITE_ENABLE 0
-+#define SPI_WRITE_DISABLE 1
-+#define SPI_RD_STATUS 2
-+#define SPI_WR_STATUS 3
-+#define SPI_RD_DATA 4
-+#define SPI_FAST_RD_DATA 5
-+#define SPI_PAGE_PROGRAM 6
-+#define SPI_SECTOR_ERASE 7
-+#define SPI_BULK_ERASE 8
-+#define SPI_DEEP_PWRDOWN 9
-+#define SPI_RD_SIG 10
-+#define SPI_MAX_OPCODES 11
-+
-+#define SFI_WRITE_BUFFER_SIZE 4
-+#define SFI_FLASH_ADDR_MASK 0x00ffffff
-+
-+/*
-+ * ST Microelectronics Opcodes for Serial Flash
-+ */
-+
-+#define STM_OP_WR_ENABLE 0x06 /* Write Enable */
-+#define STM_OP_WR_DISABLE 0x04 /* Write Disable */
-+#define STM_OP_RD_STATUS 0x05 /* Read Status */
-+#define STM_OP_WR_STATUS 0x01 /* Write Status */
-+#define STM_OP_RD_DATA 0x03 /* Read Data */
-+#define STM_OP_FAST_RD_DATA 0x0b /* Fast Read Data */
-+#define STM_OP_PAGE_PGRM 0x02 /* Page Program */
-+#define STM_OP_SECTOR_ERASE 0xd8 /* Sector Erase */
-+#define STM_OP_BULK_ERASE 0xc7 /* Bulk Erase */
-+#define STM_OP_DEEP_PWRDOWN 0xb9 /* Deep Power-Down Mode */
-+#define STM_OP_RD_SIG 0xab /* Read Electronic Signature */
-+
-+#define STM_STATUS_WIP 0x01 /* Write-In-Progress */
-+#define STM_STATUS_WEL 0x02 /* Write Enable Latch */
-+#define STM_STATUS_BP0 0x04 /* Block Protect 0 */
-+#define STM_STATUS_BP1 0x08 /* Block Protect 1 */
-+#define STM_STATUS_BP2 0x10 /* Block Protect 2 */
-+#define STM_STATUS_SRWD 0x80 /* Status Register Write Disable */
-+
-+/*
-+ * SPI Flash Interface Registers
-+ */
-+#define AR531XPLUS_SPI_READ 0x1fc00000
-+#define AR531XPLUS_SPI_MMR 0x11300000
-+#define AR531XPLUS_SPI_MMR_SIZE 12
-+
-+#define AR531XPLUS_SPI_CTL 0x00
-+#define AR531XPLUS_SPI_OPCODE 0x04
-+#define AR531XPLUS_SPI_DATA 0x08
-+
-+#define SPI_FLASH_READ AR531XPLUS_SPI_READ
-+#define SPI_FLASH_MMR AR531XPLUS_SPI_MMR
-+#define SPI_FLASH_MMR_SIZE AR531XPLUS_SPI_MMR_SIZE
-+#define SPI_FLASH_CTL AR531XPLUS_SPI_CTL
-+#define SPI_FLASH_OPCODE AR531XPLUS_SPI_OPCODE
-+#define SPI_FLASH_DATA AR531XPLUS_SPI_DATA
-+
-+#define SPI_CTL_START 0x00000100
-+#define SPI_CTL_BUSY 0x00010000
-+#define SPI_CTL_TXCNT_MASK 0x0000000f
-+#define SPI_CTL_RXCNT_MASK 0x000000f0
-+#define SPI_CTL_TX_RX_CNT_MASK 0x000000ff
-+#define SPI_CTL_SIZE_MASK 0x00060000
-+
-+#define SPI_CTL_CLK_SEL_MASK 0x03000000
-+#define SPI_OPCODE_MASK 0x000000ff
-+
-+#define SPI_STATUS_WIP STM_STATUS_WIP
-diff -urN linux-mips/drivers/mtd/maps/Config.in mips-linux-2.4.25/drivers/mtd/maps/Config.in
---- linux-mips/drivers/mtd/maps/Config.in 2005-12-24 15:11:25.158488072 +0000
-+++ mips-linux-2.4.25/drivers/mtd/maps/Config.in 2005-12-30 17:27:21.660122568 +0000
-@@ -9,7 +9,14 @@
- dep_tristate ' CFI Flash device in physical memory map' CONFIG_MTD_PHYSMAP $CONFIG_MTD_GEN_PROBE
- if [ "$CONFIG_MTD_PHYSMAP" = "y" -o "$CONFIG_MTD_PHYSMAP" = "m" ]; then
- hex ' Physical start address of flash mapping' CONFIG_MTD_PHYSMAP_START 0x8000000
-- hex ' Physical length of flash mapping' CONFIG_MTD_PHYSMAP_LEN 0x4000000
-+ if [ "$CONFIG_FLASH_2MB" = "y" ]; then
-+ define_hex CONFIG_MTD_PHYSMAP_LEN 200000
-+ fi
-+ if [ "$CONFIG_FLASH_4MB" = "y" ]; then
-+ define_hex CONFIG_MTD_PHYSMAP_LEN 400000
-+ fi
-+
-+# hex ' Physical length of flash mapping' CONFIG_MTD_PHYSMAP_LEN 0x4000000
- int ' Bus width in octets' CONFIG_MTD_PHYSMAP_BUSWIDTH 2
- fi
-
-diff -urN linux-mips/drivers/mtd/maps/physmap.c mips-linux-2.4.25/drivers/mtd/maps/physmap.c
---- linux-mips/drivers/mtd/maps/physmap.c 2005-12-24 15:11:25.217479104 +0000
-+++ mips-linux-2.4.25/drivers/mtd/maps/physmap.c 2005-12-30 17:27:22.044064200 +0000
-@@ -80,12 +80,25 @@
- };
-
- #ifdef CONFIG_MTD_PARTITIONS
--#ifdef CONFIG_MTD_CMDLINE_PARTS
-+#if defined(CONFIG_MTD_CMDLINE_PARTS) || defined(CONFIG_MTD_REDBOOT_PARTS)
- static struct mtd_partition *mtd_parts = 0;
- static int mtd_parts_nb = 0;
- #else
- static struct mtd_partition physmap_partitions[] = {
- /* Put your own partition definitions here */
-+ {
-+ name: "rootfs",
-+#ifdef CONFIG_FLASH_2MB
-+ size: 0x000e0000,
-+ offset: 0x000f0000,
-+#endif
-+#ifdef CONFIG_FLASH_4MB
-+ size: 0x002dd000,
-+ offset: 0x00100000,
-+#endif
-+
-+ /* Allow file system to be mounted for writing */
-+ }
- #if 0
- {
- name: "bootROM",
-@@ -138,6 +151,22 @@
-
- add_mtd_device(mymtd);
- #ifdef CONFIG_MTD_PARTITIONS
-+#ifdef CONFIG_MTD_REDBOOT_PARTS
-+ {
-+ extern int parse_redboot_partitions(struct mtd_info *master,
-+ struct mtd_partition **pparts);
-+
-+ struct mtd_partition *rb_parts = 0;
-+ int rb_parts_nb = 0;
-+
-+ rb_parts_nb = parse_redboot_partitions(mymtd, &rb_parts);
-+ if (rb_parts_nb > 0) {
-+ printk(KERN_NOTICE
-+ "Using redboot flash partitioning");
-+ add_mtd_partitions (mymtd, rb_parts, rb_parts_nb);
-+ }
-+ }
-+#endif
- #ifdef CONFIG_MTD_CMDLINE_PARTS
- mtd_parts_nb = parse_cmdline_partitions(mymtd, &mtd_parts,
- "phys");
-@@ -147,7 +176,8 @@
- "Using command line partition definition\n");
- add_mtd_partitions (mymtd, mtd_parts, mtd_parts_nb);
- }
--#else
-+#endif
-+#if !defined(CONFIG_MTD_CMDLINE_PARTS) && !defined(CONFIG_MTD_REDBOOT_PARTS)
- if (NUM_PARTITIONS != 0)
- {
- printk(KERN_NOTICE
-diff -urN linux-mips/drivers/mtd/redboot.c mips-linux-2.4.25/drivers/mtd/redboot.c
---- linux-mips/drivers/mtd/redboot.c 2005-12-24 15:11:25.249474240 +0000
-+++ mips-linux-2.4.25/drivers/mtd/redboot.c 2005-12-30 17:27:22.517992152 +0000
-@@ -51,8 +51,14 @@
- return -ENOMEM;
-
- /* Read the start of the last erase block */
-- ret = master->read(master, master->size - master->erasesize,
-+ {
-+ u_int32_t part_table_start = master->size - master->erasesize;
-+#if defined(CONFIG_MTD_END_RESERVED)
-+ part_table_start -= CONFIG_MTD_END_RESERVED;
-+#endif
-+ ret = master->read(master, part_table_start,
- PAGE_SIZE, &retlen, (void *)buf);
-+ }
-
- if (ret)
- goto out;
-diff -urN linux-mips/drivers/net/Config.in mips-linux-2.4.25/drivers/net/Config.in
---- linux-mips/drivers/net/Config.in 2005-12-24 15:11:25.725401888 +0000
-+++ mips-linux-2.4.25/drivers/net/Config.in 2005-12-30 17:27:22.684966768 +0000
-@@ -24,6 +24,18 @@
- comment 'Ethernet (10 or 100Mbit)'
- bool 'Ethernet (10 or 100Mbit)' CONFIG_NET_ETHERNET
- if [ "$CONFIG_NET_ETHERNET" = "y" ]; then
-+ define_bool CONFIG_VENETDEV n
-+ tristate ' BUILT-IN ATHEROS ENET DRIVER' CONFIG_NET_ATHEROS_ETHER
-+ if [ "$CONFIG_AP38" = "y" -o "$CONFIG_AP48" = "y" ]; then
-+ define_bool CONFIG_KENDIN_ENET_PHY y
-+ elif [ "$CONFIG_AP30ASK" = "y" ]; then
-+ define_bool CONFIG_KENDIN_KS8995XA_ENET_PHY y
-+ bool 'Multiple Ethernet address hack ' CONFIG_ASK_MULT_MAC_HACK
-+ elif [ "$CONFIG_AP51" = "y" ]; then
-+ define_bool CONFIG_ICPLUS_ENET_PHY y
-+ else
-+ define_bool CONFIG_MARVELL_ENET_PHY y
-+ fi
- if [ "$CONFIG_ARM" = "y" ]; then
- dep_bool ' ARM EBSA110 AM79C961A support' CONFIG_ARM_AM79C961A $CONFIG_ARCH_EBSA110
- tristate ' Cirrus Logic CS8900A support' CONFIG_ARM_CIRRUS
-diff -urN linux-mips/drivers/net/Makefile mips-linux-2.4.25/drivers/net/Makefile
---- linux-mips/drivers/net/Makefile 2005-12-24 15:11:25.726401736 +0000
-+++ mips-linux-2.4.25/drivers/net/Makefile 2005-12-30 17:27:22.709962968 +0000
-@@ -31,6 +31,10 @@
- obj-y += e1000/e1000.o
- endif
-
-+ifeq ($(CONFIG_NET_ATHEROS_ETHER),y)
-+ obj-y += ath/ae531x.o
-+endif
-+
- ifeq ($(CONFIG_BONDING),y)
- obj-y += bonding/bonding.o
- endif
-@@ -53,8 +57,13 @@
- subdir-$(CONFIG_SKFP) += skfp
- subdir-$(CONFIG_E100) += e100
- subdir-$(CONFIG_E1000) += e1000
-+subdir-$(CONFIG_NET_ATHEROS_ETHER) += ath
- subdir-$(CONFIG_BONDING) += bonding
-
-+ifeq ($(CONFIG_ATHAP33),y)
-+subdir-$(CONFIG_ATHAP33) += athap33
-+endif
-+
- #
- # link order important here
- #
-@@ -242,6 +251,10 @@
- obj-$(CONFIG_R8169) += r8169.o
- obj-$(CONFIG_AMD8111_ETH) += amd8111e.o mii.o
-
-+ifeq ($(CONFIG_ATHAP33),y)
-+obj-$(CONFIG_ATHAP33) += athap33/ath_ap_mips.o
-+endif
-+
- # non-drivers/net drivers who want mii lib
- obj-$(CONFIG_PCMCIA_SMC91C92) += mii.o
- obj-$(CONFIG_USB_USBNET) += mii.o
-diff -urN linux-mips/fs/jffs2/nodelist.h mips-linux-2.4.25/fs/jffs2/nodelist.h
---- linux-mips/fs/jffs2/nodelist.h 2005-12-24 15:11:50.407649616 +0000
-+++ mips-linux-2.4.25/fs/jffs2/nodelist.h 2005-12-30 17:27:51.289618200 +0000
-@@ -31,7 +31,7 @@
- * provisions above, a recipient may use your version of this file
- * under either the RHEPL or the GPL.
- *
-- * $Id: nodelist.h,v 1.46.2.5 2003/11/02 13:54:20 dwmw2 Exp $
-+ * $Id: //depot/sw/releases/linuxsrc/src/kernels/mips-linux-2.4.25/fs/jffs2/nodelist.h#3 $
- *
- */
-
-@@ -222,8 +222,8 @@
- #define ALLOC_DELETION 1 /* Deletion node. Best to allow it */
- #define ALLOC_GC 2 /* Space requested for GC. Give it or die */
-
--#define JFFS2_RESERVED_BLOCKS_BASE 3 /* Number of free blocks there must be before we... */
--#define JFFS2_RESERVED_BLOCKS_WRITE (JFFS2_RESERVED_BLOCKS_BASE + 2) /* ... allow a normal filesystem write */
-+#define JFFS2_RESERVED_BLOCKS_BASE 2 /* Number of free blocks there must be before we... */
-+#define JFFS2_RESERVED_BLOCKS_WRITE (JFFS2_RESERVED_BLOCKS_BASE + 1) /* ... allow a normal filesystem write */
- #define JFFS2_RESERVED_BLOCKS_DELETION (JFFS2_RESERVED_BLOCKS_BASE + 1) /* ... allow a normal filesystem deletion */
- #define JFFS2_RESERVED_BLOCKS_GCTRIGGER (JFFS2_RESERVED_BLOCKS_BASE + 3) /* ... wake up the GC thread */
- #define JFFS2_RESERVED_BLOCKS_GCBAD (JFFS2_RESERVED_BLOCKS_BASE + 1) /* ... pick a block from the bad_list to GC */
-diff -urN linux-mips/fs/partitions/Config.in mips-linux-2.4.25/fs/partitions/Config.in
---- linux-mips/fs/partitions/Config.in 2005-12-24 15:11:52.366351848 +0000
-+++ mips-linux-2.4.25/fs/partitions/Config.in 2005-12-30 17:27:52.279467720 +0000
-@@ -39,7 +39,7 @@
- fi
- if [ "$CONFIG_AMIGA" != "y" -a "$CONFIG_ATARI" != "y" -a \
- "$CONFIG_MAC" != "y" -a "$CONFIG_SGI_IP22" != "y" -a \
-- "$CONFIG_SGI_IP27" != "y" ]; then
-+ "$CONFIG_SGI_IP27" != "y" -a "$CONFIG_AR531X" != "y" ]; then
- define_bool CONFIG_MSDOS_PARTITION y
- fi
- if [ "$CONFIG_AMIGA" = "y" -o "$CONFIG_AFFS_FS" = "y" ]; then
-diff -urN linux-mips/include/asm-mips/atheros/ar531xbsp.h mips-linux-2.4.25/include/asm-mips/atheros/ar531xbsp.h
---- linux-mips/include/asm-mips/atheros/ar531xbsp.h 1970-01-01 01:00:00.000000000 +0100
-+++ mips-linux-2.4.25/include/asm-mips/atheros/ar531xbsp.h 2005-12-30 17:28:01.523062480 +0000
-@@ -0,0 +1,17 @@
-+#ifndef __ASM_ATHEROS_BSP_SUPPORT_H
-+#define __ASM_ATHEROS_BSP_SUPPORT_H
-+/*
-+ * These are definitions and functions provided by the bsp to support the
-+ * AR5312 WiSoC running LSDK. For different BSP implementations, different
-+ * BSP functions will be needed.
-+ */
-+
-+extern unsigned int ar531x_sys_frequency(void);
-+extern const char* get_system_type(void);
-+
-+#ifdef CONFIG_KGDB
-+extern void kgdbInit(void);
-+extern int kgdbEnabled(void);
-+#endif
-+
-+#endif /* __ASM_ATHEROS_BSP_SUPPORT_H */
-diff -urN linux-mips/include/asm-mips/bootinfo.h mips-linux-2.4.25/include/asm-mips/bootinfo.h
---- linux-mips/include/asm-mips/bootinfo.h 2005-12-24 15:12:00.645093288 +0000
-+++ mips-linux-2.4.25/include/asm-mips/bootinfo.h 2005-12-30 17:28:01.534060808 +0000
-@@ -37,6 +37,7 @@
- #define MACH_GROUP_HP_LJ 20 /* Hewlett Packard LaserJet */
- #define MACH_GROUP_LASAT 21
- #define MACH_GROUP_TITAN 22 /* PMC-Sierra Titan */
-+#define MACH_GROUP_AR531X 23 /* Atheros AR531X */
-
- /*
- * Valid machtype values for group unknown (low order halfword of mips_machtype)
-@@ -198,6 +199,17 @@
- */
- #define MACH_TITAN_YOSEMITE 1 /* PMC-Sierra Yosemite */
-
-+/*
-+ * Valid machtype for group MACH_GROUP_AR5312
-+ */
-+#define MACH_ATHEROS_UNUSED 0
-+#define MACH_ATHEROS_AP30 1 /* AP30 */
-+#define MACH_ATHEROS_AP33 2 /* AP33 */
-+#define MACH_ATHEROS_AP38 3 /* AP38 */
-+#define MACH_ATHEROS_AP43 4 /* AP43 */
-+#define MACH_ATHEROS_AP48 5 /* AP48 */
-+#define MACH_ATHEROS_PB32 6 /* PB32 */
-+
- #define CL_SIZE (256)
-
- const char *get_system_type(void);
-diff -urN linux-mips/include/asm-mips/page.h mips-linux-2.4.25/include/asm-mips/page.h
---- linux-mips/include/asm-mips/page.h 2005-12-24 15:12:01.097024584 +0000
-+++ mips-linux-2.4.25/include/asm-mips/page.h 2005-12-30 17:28:01.898005480 +0000
-@@ -13,7 +13,6 @@
- #include <linux/config.h>
- #include <asm/break.h>
-
--#ifdef __KERNEL__
-
- /*
- * PAGE_SHIFT determines the page size
-@@ -30,6 +29,7 @@
- #define PAGE_SIZE (1L << PAGE_SHIFT)
- #define PAGE_MASK (~(PAGE_SIZE-1))
-
-+#ifdef __KERNEL__
- #ifndef __ASSEMBLY__
-
- #include <asm/cacheflush.h>
-diff -urN linux-mips/include/asm-mips/serial.h mips-linux-2.4.25/include/asm-mips/serial.h
---- linux-mips/include/asm-mips/serial.h 2005-12-24 15:12:01.130019568 +0000
-+++ mips-linux-2.4.25/include/asm-mips/serial.h 2005-12-30 17:28:02.143968088 +0000
-@@ -410,6 +410,11 @@
- #define DDB5477_SERIAL_PORT_DEFNS
- #endif
-
-+#if defined(CONFIG_AR531X)
-+#undef RS_TABLE_SIZE
-+#define RS_TABLE_SIZE 1
-+#endif
-+
- #define SERIAL_PORT_DFNS \
- ATLAS_SERIAL_PORT_DEFNS \
- AU1000_SERIAL_PORT_DEFNS \
-diff -urN linux-mips/kernel/printk.c mips-linux-2.4.25/kernel/printk.c
---- linux-mips/kernel/printk.c 2005-12-24 15:12:09.361768152 +0000
-+++ mips-linux-2.4.25/kernel/printk.c 2005-12-30 17:28:11.943478336 +0000
-@@ -383,6 +383,18 @@
- _call_console_drivers(start_print, end, msg_level);
- }
-
-+#if CONFIG_EARLY_PRINTK_HACK
-+void putDebugChar(char byte);
-+static void emit_log_char(char c)
-+{
-+ if (c == '\n') {
-+ putDebugChar('\r');
-+ putDebugChar('\n');
-+ } else {
-+ putDebugChar(c);
-+ }
-+}
-+#else
- static void emit_log_char(char c)
- {
- LOG_BUF(log_end) = c;
-@@ -394,6 +406,7 @@
- if (logged_chars < LOG_BUF_LEN)
- logged_chars++;
- }
-+#endif
-
- /*
- * This is printk. It can be called from any context. We want it to work.
-@@ -696,3 +709,4 @@
- tty->driver.write(tty, 0, msg, strlen(msg));
- return;
- }
-+
-diff -urN linux-mips-orig/drivers/net/ath/ae531x.h linux-mips-new/drivers/net/ath/ae531x.h
---- linux-mips-orig/drivers/net/ath/ae531x.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/ae531x.h 2005-12-31 12:33:57.672538976 +0000
-@@ -0,0 +1,43 @@
-+#ifndef __AE531X_H
-+#define __AE531X_H
-+
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/delay.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <asm/io.h>
-+
-+#include "ar531xlnx.h"
-+#include "ae531xreg.h"
-+#include "ae531xmac.h"
-+
-+extern void *ae531x_rxbuf_alloc(ae531x_MAC_t *MACInfo, char **rxBuffp,
-+ int *rxBuffSizep);
-+extern void ae531x_swptr_free(VIRT_ADDR desc);
-+extern BOOL ae531x_twisted_enet(void);
-+extern void ae531x_MiiWrite(UINT32 phyBase, UINT32 phyAddr, UINT8 reg,
-+ UINT16 data);
-+extern UINT16 ae531x_MiiRead(UINT32 phyBase, UINT32 phyAddr, UINT8 reg);
-+extern void ae531x_unitLinkGained(int ethUnit);
-+extern void ae531x_unitLinkLost(int ethUnit);
-+extern void ae531x_WriteDmaReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 data);
-+extern void ae531x_MACReset(ae531x_MAC_t *MACInfo);
-+extern void ae531x_DisableComm(ae531x_MAC_t *MACInfo);
-+extern void ae531x_FreeQueues(ae531x_MAC_t *MACInfo);
-+extern void ae531x_reset(ae531x_MAC_t *MACInfo);
-+extern int ae531x_AllocateQueues(ae531x_MAC_t *MACInfo);
-+extern void ae531x_EnableComm(ae531x_MAC_t *MACInfo);
-+extern void ae531x_DmaIntEnable(ae531x_MAC_t *MACInfo);
-+extern void ae531x_DmaIntDisable(ae531x_MAC_t *MACInfo);
-+extern void ae531x_DmaReset(ae531x_MAC_t *MACInfo);
-+extern void ae531x_BeginResetMode(ae531x_MAC_t *MACInfo);
-+extern void ae531x_AckIntr(ae531x_MAC_t *MACInfo, UINT32 data);
-+extern void ae531x_SetDmaReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 val);
-+extern BOOL ae531x_IsInResetMode(ae531x_MAC_t *MACInfo);
-+extern UINT32 ae531x_ReadDmaReg(ae531x_MAC_t *MACInfo, UINT32 reg);
-+extern void ae531x_ClearDmaReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 val);
-+
-+#endif /* __AE531X_H */
-diff -urN linux-mips-orig/drivers/net/ath/ae531xlnx.c linux-mips-new/drivers/net/ath/ae531xlnx.c
---- linux-mips-orig/drivers/net/ath/ae531xlnx.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/ae531xlnx.c 2005-12-31 12:33:57.673538824 +0000
-@@ -0,0 +1,1303 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * Ethernet driver for Atheros' ae531x ethernet MAC.
-+ * This is a fairly generic driver, but it's intended
-+ * for use in typical Atheros products.
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/delay.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/init.h>
-+#include <linux/skbuff.h>
-+#include <asm/io.h>
-+
-+#include "ar531xlnx.h"
-+#include "ae531xreg.h"
-+#include "ae531xmac.h"
-+#include "ae531x.h"
-+
-+#ifndef EXPORT_SYMTAB
-+#define EXPORT_SYMTAB
-+#endif
-+
-+#ifdef DEBUG
-+void my_mvPhyShow(int ethUnit);
-+#endif
-+
-+static struct ar531x_boarddata *ar531x_boardConfig=NULL;
-+
-+static char *radioConfig=NULL;
-+
-+#define AE531X_LAN_PORT 0
-+#define AE531X_DEV_PER_MAC 1
-+
-+/*
-+ * ae531x_MAC_state contains driver-specific linux-specific per-MAC information.
-+ * The OSinfo member of ae531x_MAC_t points to one of these.
-+ */
-+typedef struct ae531x_MAC_state {
-+ int irq;
-+ struct tq_struct restart_task;
-+ struct net_device_stats stats;
-+ struct ae531x_dev_sw_state *dev_sw_state[AE531X_DEV_PER_MAC];
-+ int primary_dev;
-+ ae531x_MAC_t MACInfo; /* hardware state */
-+} ae531x_MAC_state_t;
-+
-+/*
-+ * ae531x_dev_sw_state contains driver-specific linux-specific per-device
-+ * information. The net_device priv member points to one of these, and
-+ * this structure contains a pointer to the associated MAC information.
-+ */
-+
-+typedef struct ae531x_dev_sw_state {
-+ int enetUnit; /* system unit number "eth%d" */
-+ int unit_on_MAC; /* MAC-relative unit number */
-+ struct net_device *dev;
-+ ae531x_MAC_state_t *MAC_state; /* underlying MAC hw/sw state */
-+} ae531x_dev_sw_state_t;
-+
-+/*
-+ * Driver-independent linux-specific per-ethernet device software information.
-+ */
-+static struct net_device *ae531x_MAC_dev[AR531X_NUM_ENET_MAC * AE531X_DEV_PER_MAC];
-+
-+/* Driver-dependent per-MAC information */
-+static ae531x_MAC_state_t per_MAC_info[AR531X_NUM_ENET_MAC];
-+
-+/*
-+ * Receive buffers need enough room to hold the following:
-+ * 1) a max MTU-sized packet.
-+ * 2) space for an ethernet header
-+ * 3) room at the beginning of the receive buffer in order
-+ * to facilitate cooperating drivers that need to PREpend
-+ * data.
-+ * 4) Depending on configuration, we may need some additional
-+ * room at the END of the rx buffer for phy-supplied
-+ * trailers (if any). (c.f. CONFIG_VENETDEV)
-+ *
-+ * The DMA engine insists on 32-bit aligned RX buffers.
-+ * TBDXXX: With current code, the IP stack ends up looking
-+ * at misaligned headers with word operations. The misaligned
-+ * reads are software-emulated via handle_adel_int. We'd
-+ * rather align the buffers on a 16-bit boundary, but the
-+ * DMA engine doesn't permit it???
-+ */
-+#define ETH_MAX_MTU 1518
-+#define AE531X_RX_BUF_SIZE \
-+ (((RXBUFF_RESERVE + ETH_HLEN + ETH_MAX_MTU + PHY_TRAILER_SIZE) + 3) & ~3)
-+
-+/* Forward references to local functions */
-+static void ae531x_TxReap(ae531x_MAC_state_t *MAC_state);
-+static int ae531x_phy_poll(void *data);
-+static int ae531x_MAC_stop(struct net_device *dev);
-+static int ae531x_MAC_open(struct net_device *dev);
-+
-+/*******************************************************************************
-+* ae531x_MAC_poll checks for received packets, and sends data
-+* up the stack.
-+*/
-+int
-+ae531x_MAC_poll(struct net_device *dev, int *budget)
-+{
-+ struct sk_buff *skb;
-+ struct sk_buff *newskb;
-+ char *rxBufp;
-+ int unused_length;
-+ VIRT_ADDR rxDesc;
-+ int length;
-+ ae531x_dev_sw_state_t *dev_sw_state;
-+ ae531x_MAC_state_t *MAC_state;
-+ ae531x_MAC_t *MACInfo;
-+ u32 cmdsts;
-+ int rx_limit;
-+ int rx_received;
-+ int rxDescCount;
-+ struct net_device *rxdev;
-+ int early_stop;
-+ int retval;
-+#ifdef DEBUG
-+ static int rxDescCountMax = 0;
-+#endif
-+
-+ ARRIVE();
-+
-+ dev_sw_state = (ae531x_dev_sw_state_t *)dev->priv;
-+ MAC_state = dev_sw_state->MAC_state;
-+ MACInfo = &MAC_state->MACInfo;
-+ rx_limit = MAC_state->dev_sw_state[MAC_state->primary_dev]->dev->quota;
-+ rx_received = 0;
-+
-+ rxDescCount = 0;
-+
-+ early_stop = 0;
-+ do {
-+ ae531x_AckIntr(MACInfo, DmaIntRxCompleted);
-+
-+ for(;!early_stop;) {
-+ rxDesc = MACInfo->rxQueue.curDescAddr;
-+ cmdsts = AE531X_DESC_STATUS_GET(KSEG1ADDR(rxDesc));
-+
-+ AE531X_PRINT(AE531X_DEBUG_RX,
-+ ("examine rxDesc %p with cmdsts=0x%x\n",
-+ (void *)rxDesc, cmdsts));
-+
-+ if (cmdsts & DescOwnByDma) {
-+ /* There's nothing left to process in the RX ring */
-+ goto rx_all_done;
-+ }
-+
-+ rxDescCount++;
-+
-+ AE531X_CONSUME_DESC((&MACInfo->rxQueue));
-+
-+ A_DATA_CACHE_INVAL(rxDesc, AE531X_DESC_SIZE);
-+
-+ /* Process a packet */
-+ length = AE531X_DESC_STATUS_RX_SIZE(cmdsts) - ETH_CRC_LEN;
-+ if ( (cmdsts & (DescRxFirst |DescRxLast | DescRxErrors)) ==
-+ (DescRxFirst | DescRxLast) ) {
-+ /* Descriptor status indicates "NO errors" */
-+ skb = AE531X_DESC_SWPTR_GET(rxDesc);
-+
-+ /*
-+ * Allocate a replacement skb.
-+ * We want to get another buffer ready for Rx ASAP.
-+ */
-+ newskb = (struct sk_buff *)ae531x_rxbuf_alloc(MACInfo, &rxBufp, &unused_length);
-+ if(newskb == NULL ) {
-+ /*
-+ * Give this descriptor back to the DMA engine,
-+ * and drop the received packet.
-+ */
-+ MAC_state->stats.rx_dropped++;
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("Can't allocate new skb\n"));
-+ } else {
-+ AE531X_DESC_BUFPTR_SET(rxDesc, virt_to_bus(rxBufp));
-+ AE531X_DESC_SWPTR_SET(rxDesc, newskb);
-+ }
-+
-+ AE531X_DESC_STATUS_SET(rxDesc, DescOwnByDma);
-+ rxDesc = NULL; /* sanity -- cannot use rxDesc now */
-+ sysWbFlush();
-+
-+ if (newskb == NULL) {
-+ retval = 1;
-+ goto rx_no_skbs;
-+ } else {
-+ /* Sync data cache w.r.t. DMA */
-+ A_DATA_CACHE_INVAL(skb->data, length);
-+
-+ rxdev = dev_sw_state->dev;
-+
-+ if (rxdev == NULL) {
-+ /*
-+ * We received a packet for a virtual enet device
-+ * that is no longer up. Ignore it.
-+ */
-+ kfree_skb(skb);
-+ continue;
-+ }
-+
-+ /* Advance data pointer to show that there's data here */
-+ skb_put(skb, length);
-+ skb->protocol = eth_type_trans(skb, rxdev);
-+ skb->dev = rxdev;
-+ rxdev->last_rx = jiffies;
-+ rxdev->quota--;
-+
-+ if (rx_limit-- < 0) {
-+ early_stop=1;
-+ /* We've done enough for now -- more later */
-+ AE531X_PRINT(AE531X_DEBUG_RX_STOP,
-+ ("Enet%d RX early stop. Quota=%d rxDescCount=%d budget=%d\n",
-+ MACInfo->unit, dev->quota, rxDescCount, *budget));
-+ }
-+ rx_received++;
-+
-+ /* Send the data up the stack */
-+ AE531X_PRINT(AE531X_DEBUG_RX,
-+ ("Send data up stack: skb=%p data=%p length=%d\n",
-+ (void *)skb, (void *)skb->data, length));
-+
-+ netif_receive_skb(skb);
-+
-+ MAC_state->stats.rx_packets++;
-+ MAC_state->stats.rx_bytes += length;
-+ }
-+ } else {
-+ /* Descriptor status indicates ERRORS */
-+ MAC_state->stats.rx_errors++;
-+
-+ if (cmdsts & (DescRxRunt | DescRxLateColl)) {
-+ MAC_state->stats.collisions++;
-+ }
-+
-+ if (cmdsts & DescRxLengthError) {
-+ MAC_state->stats.rx_length_errors++;
-+ }
-+
-+ if (cmdsts & DescRxCrc) {
-+ MAC_state->stats.rx_crc_errors++;
-+ }
-+
-+ if (cmdsts & DescRxDribbling) {
-+ MAC_state->stats.rx_frame_errors++;
-+ }
-+
-+ AE531X_DESC_STATUS_SET(rxDesc, DescOwnByDma);
-+
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("Bad receive. rxDesc=%p cmdsts=0x%8.8x\n",
-+ (void *)rxDesc, cmdsts));
-+ }
-+ }
-+ } while ((!early_stop) &&
-+ ae531x_ReadDmaReg(MACInfo, DmaStatus) & DmaIntRxCompleted);
-+
-+rx_all_done:
-+ AE531X_PRINT(AE531X_DEBUG_RX,
-+ ("rx done (%d)\n", rxDescCount));
-+ *budget -= rxDescCount;
-+
-+ if (!early_stop) {
-+ netif_rx_complete(dev);
-+
-+ ae531x_SetDmaReg(MACInfo, DmaIntrEnb,
-+ DmaIeRxCompleted | DmaIeRxNoBuffer);
-+ ae531x_WriteDmaReg(MACInfo, DmaRxPollDemand, 0);
-+ }
-+
-+ retval = early_stop;
-+
-+rx_no_skbs:
-+
-+ LEAVE();
-+
-+#ifdef DEBUG
-+ if (rxDescCount > rxDescCountMax) {
-+ printk("max rx %d\n", rxDescCount);
-+ rxDescCountMax = rxDescCount;
-+ }
-+#endif
-+
-+ return retval;
-+}
-+
-+/*******************************************************************************
-+* ae531x_restart stops all ethernet devices associated with a physical MAC,
-+* then shuts down the MAC. Then it re-opens all devices that were in use.
-+* TBDXXX: needs testing!
-+*/
-+static void
-+ae531x_restart(void *data)
-+{
-+ ae531x_MAC_t *MACInfo = (ae531x_MAC_t *)data;
-+ ae531x_MAC_state_t *MAC_state = (ae531x_MAC_state_t *)MACInfo->OSinfo;
-+ struct net_device *saved_dev[AE531X_DEV_PER_MAC];
-+ int i;
-+
-+ for (i=0; i<AE531X_DEV_PER_MAC; i++) {
-+ if ((saved_dev[i] = MAC_state->dev_sw_state[i]->dev) != NULL) {
-+ ae531x_MAC_stop(saved_dev[i]);
-+ }
-+ }
-+
-+ for (i=0; i<AE531X_DEV_PER_MAC; i++) {
-+ if (saved_dev[i])
-+ ae531x_MAC_open(saved_dev[i]);
-+ }
-+}
-+
-+/*******************************************************************************
-+* ae531x_MAC_intr handle interrupts from an ethernet MAC.
-+* It checks MAC status registers, and dispatches as appropriate.
-+*/
-+void
-+ae531x_MAC_intr(int cpl, void *dev_id, struct pt_regs *regs)
-+{
-+ ae531x_MAC_state_t *MAC_state;
-+ ae531x_MAC_t *MACInfo;
-+ u32 regIsr;
-+ u32 regImr;
-+ u32 pendIntrs;
-+
-+ ARRIVE();
-+ MACInfo = (ae531x_MAC_t *)dev_id;
-+ MAC_state = (ae531x_MAC_state_t *)MACInfo->OSinfo;
-+ for(;;) {
-+ /* Clear any unhandled intr causes. */
-+ ae531x_WriteDmaReg(MACInfo, DmaStatus, UnhandledIntrMask);
-+
-+ regIsr = ae531x_ReadDmaReg(MACInfo, DmaStatus);
-+ regImr = ae531x_ReadDmaReg(MACInfo, DmaIntrEnb);
-+ pendIntrs = regIsr & regImr;
-+
-+ AE531X_PRINT(AE531X_DEBUG_INT,
-+ ("ethmac%d: intIsr=0x%8.8x intImr=0x%8.8x pendIntrs=0x%8.8x\n",
-+ MACInfo->unit, regIsr, regImr, pendIntrs ));
-+
-+ if ((pendIntrs & DmaAllIntCauseMask) == 0)
-+ break;
-+
-+ if ((pendIntrs & DmaIntRxCompleted) ||
-+ (pendIntrs & DmaIntRxNoBuffer)) {
-+ if (netif_rx_schedule_prep(MAC_state->dev_sw_state[MAC_state->primary_dev]->dev)) {
-+ ae531x_ClearDmaReg(MACInfo,
-+ DmaIntrEnb,
-+ DmaIeRxCompleted | DmaIeRxNoBuffer);
-+ ae531x_AckIntr(MACInfo,
-+ DmaIntRxCompleted | DmaIntRxNoBuffer);
-+ (void)ae531x_ReadDmaReg(MACInfo, DmaIntrEnb);
-+ __netif_rx_schedule(MAC_state->dev_sw_state[MAC_state->primary_dev]->dev);
-+ } else {
-+#if 0
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("%s: Interrupt (0x%8.8x/0x%8.8x) while in poll. regs@%p, pc=%p, ra=%p\n",
-+ __FILE__,
-+ regIsr,
-+ ae531x_ReadDmaReg(MACInfo, DmaIntrEnb),
-+ (void *)regs,
-+ (void *)regs->cp0_epc,
-+ (void *)regs->regs[31]));
-+#endif
-+ ae531x_AckIntr(MACInfo,
-+ DmaIntRxCompleted | DmaIntRxNoBuffer);
-+ }
-+ }
-+
-+ if (pendIntrs &
-+ (DmaIntTxStopped | DmaIntTxJabber | DmaIntTxUnderflow)) {
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("ethmac%d: TX Error Intr (0x%x)\n",
-+ MACInfo->unit, pendIntrs));
-+ ae531x_AckIntr(MACInfo,
-+ (DmaIntTxStopped | DmaIntTxJabber | DmaIntTxUnderflow));
-+ }
-+
-+ if (pendIntrs & DmaIntBusError) {
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("ethmac%d: DMA Bus Error Intr (0x%x)\n",
-+ MACInfo->unit, pendIntrs));
-+ ae531x_AckIntr(MACInfo, DmaIntBusError);
-+ /* Reset the chip, if it's not already being done */
-+ if (ae531x_IsInResetMode(MACInfo)) {
-+ goto intr_done;
-+ }
-+ ae531x_BeginResetMode(MACInfo);
-+ schedule_task(&MAC_state->restart_task);
-+ }
-+
-+ if (pendIntrs & DmaIntRxStopped) {
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("ethmac%d: RX Stopped Intr (0x%x)\n",
-+ MACInfo->unit, pendIntrs));
-+ ae531x_AckIntr(MACInfo, DmaIntRxStopped);
-+ }
-+ }
-+
-+ intr_done:
-+ LEAVE();
-+}
-+
-+/*******************************************************************************
-+* ae531x_MAC_get_stats returns statistics for a specified device
-+*/
-+static struct net_device_stats*
-+ae531x_MAC_get_stats(struct net_device *dev)
-+{
-+ ae531x_dev_sw_state_t *dev_sw_state;
-+ ae531x_MAC_state_t *MAC_state;
-+
-+ ARRIVE();
-+ dev_sw_state = (ae531x_dev_sw_state_t *)dev->priv;
-+ MAC_state = dev_sw_state->MAC_state;
-+
-+ LEAVE();
-+ return &MAC_state->stats;
-+}
-+
-+#define AE531X_PHY_POLL_SECONDS 2
-+
-+#if CONFIG_AR5315
-+
-+/*******************************************************************************
-+* ae531x_getMACInfo returns the MACInfo of the interface given by unit
-+*/
-+ae531x_MAC_t *ae531x_getMAcInfo(int ethUnit)
-+{
-+ int i,j;
-+ for(i=0;i<AR531X_NUM_ENET_MAC;++i) {
-+ if(per_MAC_info[i].dev_sw_state) {
-+ for(j=0;j<AE531X_DEV_PER_MAC;++j) {
-+ if(per_MAC_info[i].dev_sw_state[j]
-+ && per_MAC_info[i].dev_sw_state[j]->enetUnit == ethUnit)
-+ return (&(per_MAC_info[i].MACInfo));
-+ }
-+ }
-+ }
-+ return NULL;
-+}
-+
-+
-+#endif
-+
-+/*******************************************************************************
-+* ae531x_phy_poll periodically checks for changes in phy status
-+* (e.g. dropped link).
-+*/
-+static int
-+ae531x_phy_poll(void *data)
-+{
-+ ae531x_dev_sw_state_t *dev_sw_state = (ae531x_dev_sw_state_t *)data;
-+ ae531x_MAC_t *MACInfo = &dev_sw_state->MAC_state->MACInfo;
-+ int unit = dev_sw_state->enetUnit;
-+
-+ while(dev_sw_state->dev!=NULL) {
-+ if (MACInfo->port_is_up) {
-+ phyCheckStatusChange(unit);
-+ }
-+
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ schedule_timeout(AE531X_PHY_POLL_SECONDS * HZ);
-+ }
-+
-+ return 0;
-+}
-+
-+
-+static char invalid_enet_MAC_addr[] = {0, 0, 0, 0, 0, 0};
-+
-+/*
-+ * Fetch a pointer to an ethernet's MAC address
-+ * in the Board Configuration data (in flash).
-+ */
-+char *
-+ae531x_enet_mac_address_get(int MACUnit)
-+{
-+ /* XXX: Hack for poorly configured boards.
-+ * Cannot setup bridging properly (brctl) when both enet
-+ * interfaces share the same MAC address.
-+ *
-+ */
-+
-+#ifdef CONFIG_ASK_MULT_MAC_HACK
-+ static u8 enet0Mac[6] = {0x00, 0x0d, 0x0b, 0x13, 0x6b, 0x16};
-+ static u8 enet1Mac[6] = {0x00, 0x0d, 0x0b, 0x13, 0x6b, 0x17};
-+#endif
-+
-+ if (!ar531x_boardConfig)
-+ return invalid_enet_MAC_addr;
-+ if (MACUnit == 0) {
-+#ifndef CONFIG_ASK_MULT_MAC_HACK
-+ return ar531x_boardConfig->enet0Mac;
-+#else
-+ return enet0Mac;
-+#endif
-+ }
-+ if (MACUnit == 1) {
-+#ifndef CONFIG_ASK_MULT_MAC_HACK
-+ return ar531x_boardConfig->enet1Mac;
-+#else
-+ return enet1Mac;
-+#endif
-+ }
-+ printk("Invalid ethernet MAC unit number (%d)!\n", MACUnit);
-+ return invalid_enet_MAC_addr;
-+}
-+
-+
-+
-+/*******************************************************************************
-+* ae531x_MAC_open is the standard Linux open function. It puts
-+* hardware into a known good state, allocates queues, starts
-+* the phy polling task, and arranges for interrupts to be handled.
-+*/
-+static int
-+ae531x_MAC_open(struct net_device *dev)
-+{
-+ ae531x_dev_sw_state_t *dev_sw_state;
-+ ae531x_MAC_state_t *MAC_state;
-+ ae531x_MAC_t *MACInfo;
-+ u8 *MACAddr;
-+ int rv;
-+ struct tq_struct *restart_task;
-+ pid_t phy_poll_pid;
-+ ARRIVE();
-+
-+ dev_sw_state = (ae531x_dev_sw_state_t *)dev->priv;
-+ dev_sw_state->dev = dev;
-+ MAC_state = dev_sw_state->MAC_state;
-+ MACInfo = &MAC_state->MACInfo;
-+
-+ restart_task = &MAC_state->restart_task;
-+ restart_task->routine = ae531x_restart;
-+ restart_task->data = (void *)MACInfo;
-+
-+ AE531X_PRINT(AE531X_DEBUG_RESET,
-+ ("ae531x_MAC_open eth%d ethmac%d macBase=0x%x dmaBase=0x%x irq=0x%x\n",
-+ dev_sw_state->enetUnit,
-+ MACInfo->unit,
-+ MACInfo->macBase,
-+ MACInfo->dmaBase,
-+ MAC_state->irq));
-+
-+ /* Default MAC address */
-+ MACAddr = ae531x_enet_mac_address_get(MACInfo->unit);
-+ memcpy(dev->dev_addr, MACAddr, dev->addr_len );
-+
-+ if (!MACInfo->port_is_up) {
-+ /* Bring MAC and PHY out of reset */
-+ ae531x_reset(MACInfo);
-+
-+ /* Attach interrupt handler */
-+ rv = request_irq(MAC_state->irq, ae531x_MAC_intr, SA_INTERRUPT,
-+ "ae531x_MAC_intr", (void *)MACInfo);
-+ if (rv < 0) {
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("request_irq(0x%x) failed (%d)\n",
-+ MAC_state->irq, rv));
-+ goto open_failure;
-+ }
-+
-+ /* Initialize PHY */
-+ AE531X_PRINT(AE531X_DEBUG_RESET, ("\n --- phyBase: %08x\n", MACInfo->phyBase));
-+ phySetup(MACInfo->unit, MACInfo->phyBase);
-+
-+ /* Start thread to poll for phy link status changes */
-+ phy_poll_pid = kernel_thread(ae531x_phy_poll, dev_sw_state, 0);
-+ if (phy_poll_pid < 0) {
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("ethmac%d unable to start Phy Poll thread\n",
-+ MACInfo->unit));
-+ }
-+
-+ /* Allocate RX/TX Queues */
-+ if (ae531x_AllocateQueues(MACInfo) < 0) {
-+ AE531X_PRINT(AE531X_DEBUG_RESET, ("Queue allocation failed"));
-+ free_irq(MAC_state->irq, (void *)MACInfo);
-+ goto open_failure;
-+ }
-+
-+ /* Initialize DMA and descriptors */
-+ ae531x_DmaReset(MACInfo);
-+
-+ /* Initialize MAC */
-+ ae531x_MACReset(MACInfo);
-+
-+ /* Enable Receive/Transmit */
-+ ae531x_EnableComm(MACInfo);
-+
-+ MAC_state->primary_dev = dev_sw_state->unit_on_MAC;
-+ MACInfo->port_is_up = TRUE;
-+ }
-+
-+ dev->trans_start = jiffies;
-+ SET_MODULE_OWNER(dev);
-+
-+ LEAVE();
-+ return 0;
-+
-+open_failure:
-+ LEAVE();
-+ return -1;
-+}
-+
-+/*
-+ * Shut down MAC hardware.
-+ */
-+static void
-+ae531x_MAC_shutdown(ae531x_MAC_state_t *MAC_state)
-+{
-+ ae531x_MAC_t *MACInfo;
-+
-+ MACInfo = &MAC_state->MACInfo;
-+ MACInfo->port_is_up = FALSE;
-+
-+ /* Disable Receive/Transmit */
-+ ae531x_DisableComm(MACInfo);
-+
-+ /* Disable Interrupts */
-+ ae531x_DmaIntDisable(MACInfo);
-+ sysWbFlush();
-+ free_irq(MAC_state->irq, (void *)MACInfo);
-+
-+ /* Free Transmit & Receive skb's/descriptors */
-+ ae531x_TxReap(MAC_state); /* one last time */
-+ ae531x_FreeQueues(MACInfo);
-+}
-+
-+/*******************************************************************************
-+* ae531x_MAC_stop is the standard Linux stop function. It undoes
-+* everything set up by ae531x_MAC_open.
-+*/
-+static int
-+ae531x_MAC_stop(struct net_device *dev)
-+{
-+ ae531x_dev_sw_state_t *dev_sw_state;
-+ ae531x_MAC_state_t *MAC_state;
-+ ae531x_MAC_t *MACInfo;
-+ int i;
-+
-+ ARRIVE();
-+
-+ dev_sw_state = (ae531x_dev_sw_state_t *)dev->priv;
-+ MAC_state = dev_sw_state->MAC_state;
-+ MACInfo = &MAC_state->MACInfo;
-+
-+ for (i=0; i<AE531X_DEV_PER_MAC; i++) {
-+ if ((MAC_state->dev_sw_state[i]->dev) &&
-+ (MAC_state->dev_sw_state[i]->dev != dev_sw_state->dev)) {
-+ break;
-+ }
-+ }
-+
-+ if (i < AE531X_DEV_PER_MAC) {
-+ /* Physical MAC is still in use */
-+ if (MAC_state->primary_dev == dev_sw_state->unit_on_MAC) {
-+ /*
-+ * If the primary_dev is being stopped
-+ * then we need to assign a new one.
-+ */
-+ MAC_state->primary_dev = i;
-+ }
-+ } else {
-+ /* Physical MAC is no longer in use */
-+ ae531x_MAC_shutdown(MAC_state);
-+ }
-+
-+ dev_sw_state->dev = NULL;
-+ LEAVE();
-+ return 0;
-+}
-+
-+/*******************************************************************************
-+* ae531x_rxbuf_alloc - Allocate an skb to be associated with an RX descriptor.
-+*
-+* RETURNS: A pointer to the skb. Also returns a pointer to the underlying
-+* buffer and the size of that buffer.
-+*/
-+void *
-+ae531x_rxbuf_alloc(ae531x_MAC_t *MACInfo, char **rxBuffp, int *rxBuffSizep)
-+{
-+ int buf_size;
-+ struct sk_buff *skb;
-+ char *rxBuff;
-+ int rxBuffSize;
-+
-+ buf_size = AE531X_RX_BUF_SIZE;
-+
-+ skb = dev_alloc_skb(buf_size);
-+ if (skb) {
-+ /* skb->dev = dev; */
-+ skb_reserve(skb, RXBUFF_RESERVE);
-+
-+ rxBuffSize = skb_tailroom(skb);
-+ rxBuff = skb->tail;
-+
-+ *rxBuffp = rxBuff;
-+ *rxBuffSizep = rxBuffSize;
-+ }
-+
-+ return skb;
-+}
-+
-+/*******************************************************************************
-+* ae531x_swptr_free - Free the skb, if any, associated with a descriptor.
-+*/
-+void
-+ae531x_swptr_free(VIRT_ADDR desc)
-+{
-+ struct sk_buff *skb;
-+
-+ skb = (struct sk_buff *)AE531X_DESC_SWPTR_GET(desc);
-+ if (skb) {
-+ AE531X_DESC_SWPTR_SET(desc, NULL);
-+ kfree_skb(skb);
-+ }
-+}
-+
-+/*******************************************************************************
-+*
-+* ae531x_TxReap - the driver Tx completion routine.
-+*
-+* This routine reaps sk_buffs which have already been transmitted.
-+*
-+*/
-+static void
-+ae531x_TxReap(ae531x_MAC_state_t *MAC_state)
-+{
-+ AE531X_QUEUE *txq;
-+ VIRT_ADDR txDesc;
-+ UINT32 cmdsts;
-+ struct sk_buff *skb;
-+ int reaped;
-+ ae531x_MAC_t *MACInfo;
-+ static int aeUselessReap = 0;
-+#ifdef DEBUG
-+ static int aeMaxReap = 0;
-+#endif
-+ ARRIVE();
-+
-+ MACInfo = &MAC_state->MACInfo;
-+ txq = &MACInfo->txQueue;
-+ reaped = 0;
-+
-+ while (1) {
-+
-+ txDesc = AE531X_QUEUE_ELE_NEXT_GET(txq, txq->reapDescAddr);
-+ if (txDesc == txq->curDescAddr) {
-+ break;
-+ }
-+
-+ cmdsts = AE531X_DESC_STATUS_GET(KSEG1ADDR(txDesc));
-+ if (cmdsts & DescOwnByDma) {
-+ break;
-+ }
-+
-+ /* Release sk_buff associated with completed transmit */
-+ skb = (struct sk_buff *)AE531X_DESC_SWPTR_GET(txDesc);
-+ if (skb) {
-+ kfree_skb(skb);
-+ AE531X_DESC_SWPTR_SET(txDesc, NULL);
-+ }
-+
-+ /* Update statistics according to completed transmit desc */
-+ if (cmdsts & DescTxErrors) {
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("enetmac%d Tx prior error: 0x%8.8x <0x%8.8x> 0x%8.8x\n",
-+ MACInfo->unit,
-+ cmdsts,
-+ DescTxErrors,
-+ (int)txDesc));
-+#ifdef DEBUG
-+ //my_mvPhyShow(MACInfo->unit);
-+ printk ("ae531xMacControl: 0x%08x\tMacFlowControl: 0x%08x\n",
-+ ae531x_ReadMacReg(MACInfo, MacControl),
-+ ae531x_ReadMacReg(MACInfo, MacFlowControl));
-+#endif
-+ MAC_state->stats.tx_errors++;
-+ if (cmdsts & (DescTxLateCollision | DescTxExcCollisions)) {
-+ MAC_state->stats.tx_aborted_errors++;
-+ }
-+ if (cmdsts & (DescTxLostCarrier | DescTxNoCarrier)) {
-+ MAC_state->stats.tx_carrier_errors++;
-+ }
-+ } else {
-+ MAC_state->stats.tx_bytes += AE531X_DESC_STATUS_RX_SIZE(cmdsts);
-+ MAC_state->stats.tx_packets++;
-+ }
-+
-+ MAC_state->stats.collisions +=
-+ ((cmdsts & DescTxCollMask) >> DescTxCollShift);
-+
-+ txq->reapDescAddr = txDesc;
-+ reaped++;
-+ }
-+
-+ if (reaped > 0) {
-+ int i;
-+
-+#ifdef DEBUG
-+ if (reaped > aeMaxReap) {
-+ aeMaxReap = reaped;
-+ printk("max reaped = %d\n", reaped);
-+ }
-+#endif
-+ AE531X_PRINT(AE531X_DEBUG_TX_REAP,
-+ ("reaped %d\n", reaped));
-+
-+ /*
-+ * Re-start transmit queues for all ethernet devices
-+ * associated with this MAC.
-+ */
-+ for (i=0; i<AE531X_DEV_PER_MAC; i++) {
-+ if (MAC_state->dev_sw_state[i]->dev)
-+ netif_start_queue(MAC_state->dev_sw_state[i]->dev);
-+ }
-+ } else {
-+ aeUselessReap++;
-+ }
-+
-+ LEAVE();
-+}
-+
-+
-+/*******************************************************************************
-+* ae531x_MAC_start_xmit sends a packet.
-+*/
-+static int
-+ae531x_MAC_start_xmit(struct sk_buff *skb, struct net_device *dev)
-+{
-+ ae531x_dev_sw_state_t *dev_sw_state;
-+ ae531x_MAC_state_t *MAC_state;
-+ ae531x_MAC_t *MACInfo;
-+ u32 buf;
-+ u32 ctrlen;
-+ u32 length;
-+ int mtu;
-+ int max_buf_size;
-+ VIRT_ADDR txDesc;
-+
-+ ARRIVE();
-+
-+ dev_sw_state = (ae531x_dev_sw_state_t *)dev->priv;
-+ MAC_state = dev_sw_state->MAC_state;
-+ MACInfo = &MAC_state->MACInfo;
-+
-+ length = skb->len;
-+
-+ /* Check if this port is up, else toss packet */
-+ if (!MACInfo->port_is_up) {
-+ buf = virt_to_bus(skb->data);
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("eth%d Tx Down, dropping buf=0x%8.8x, length=0x%8.8x, skb=%p\n",
-+ dev_sw_state->enetUnit, buf, length, (void *)skb));
-+
-+ MAC_state->stats.tx_dropped++;
-+ MAC_state->stats.tx_carrier_errors++;
-+ goto dropFrame;
-+ }
-+
-+ if (ae531x_IsInResetMode(MACInfo)) {
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("eth%d Tx: In Chip reset - drop frame\n",
-+ dev_sw_state->enetUnit));
-+
-+ MAC_state->stats.tx_dropped++;
-+ MAC_state->stats.tx_aborted_errors++;
-+ goto dropFrame;
-+ }
-+
-+ /* Check if we can transport this packet */
-+ length = max((u32)60, length); /* total length */
-+ mtu = dev->mtu;
-+ max_buf_size = mtu + ETH_HLEN;
-+ if (length > max_buf_size) {
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("eth%d Tx: length %d too long. mtu=%d, trailer=%d\n",
-+ dev_sw_state->enetUnit, length, mtu, PHY_TRAILER_SIZE));
-+
-+ MAC_state->stats.tx_errors++;
-+ MAC_state->stats.tx_aborted_errors++;
-+
-+ goto dropFrame;
-+ }
-+
-+ /* Reap any old, completed Tx descriptors */
-+ ae531x_TxReap(MAC_state);
-+
-+ txDesc = MACInfo->txQueue.curDescAddr;
-+ if (txDesc == MACInfo->txQueue.reapDescAddr) {
-+ int i;
-+
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("eth%d Tx: cannot get txDesc\n",
-+ dev_sw_state->enetUnit));
-+
-+ MAC_state->stats.tx_dropped++;
-+ MAC_state->stats.tx_fifo_errors++;
-+
-+ /*
-+ * Stop transmit queues for any ethernet devices
-+ * associated with this MAC.
-+ */
-+#if 0 /* XXX: no way to recover from queue stop until ae531x_MAC_tx_timeout()
-+ * is rewritten to avoid calls to shedule().
-+ */
-+ for (i=0; i<AE531X_DEV_PER_MAC; i++) {
-+ if (MAC_state->dev_sw_state[i]->dev)
-+ netif_stop_queue(MAC_state->dev_sw_state[i]->dev);
-+ }
-+#endif
-+ goto dropFrame;
-+ }
-+
-+ /* We won't fail now; so consume this descriptor */
-+ AE531X_CONSUME_DESC((&MACInfo->txQueue));
-+
-+ /* Update the descriptor */
-+ buf = virt_to_bus(skb->data);
-+ AE531X_DESC_BUFPTR_SET(txDesc, buf);
-+ AE531X_DESC_SWPTR_SET(txDesc, skb);
-+ ctrlen = AE531X_DESC_CTRLEN_GET(txDesc);
-+ ctrlen = (ctrlen & (DescEndOfRing)) |
-+ DescTxFirst |
-+ DescTxLast |
-+ DescTxIntEnable;
-+
-+ ctrlen |= ((length << DescSize1Shift) & DescSize1Mask);
-+
-+ AE531X_DESC_CTRLEN_SET(txDesc, ctrlen);
-+ AE531X_DESC_STATUS_SET(txDesc, DescOwnByDma);
-+
-+ /* Alert DMA engine to resume Tx */
-+ ae531x_WriteDmaReg(MACInfo, DmaTxPollDemand, 0);
-+ sysWbFlush();
-+
-+ AE531X_PRINT(AE531X_DEBUG_TX,
-+ ("eth%d Tx: Desc=0x%8.8x, L=0x%8.8x, D=0x%8.8x, d=0x%8.8x, length=0x%8.8x\n",
-+ dev_sw_state->enetUnit,
-+ (UINT32)txDesc,
-+ AE531X_DESC_CTRLEN_GET(txDesc),
-+ buf,
-+ AE531X_DESC_LNKBUF_GET(txDesc),
-+ length));
-+
-+ /* Tell upper layers to keep it coming */
-+ dev->trans_start = jiffies;
-+
-+ LEAVE();
-+
-+ return 0;
-+
-+dropFrame:
-+ kfree_skb(skb);
-+ LEAVE();
-+ return 0;
-+}
-+
-+
-+/*******************************************************************************
-+* ae531x_MAC_tx_timeout handles transmit timeouts
-+*/
-+static void
-+ae531x_MAC_tx_timeout(struct net_device *dev)
-+{
-+ ae531x_dev_sw_state_t *dev_sw_state;
-+ ae531x_MAC_state_t *MAC_state;
-+ ae531x_MAC_t *MACInfo;
-+
-+ ARRIVE();
-+
-+ dev_sw_state = (ae531x_dev_sw_state_t *)dev->priv;
-+ MAC_state = dev_sw_state->MAC_state;
-+ MACInfo = &MAC_state->MACInfo;
-+
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("enet%d: Tx timeout\n", dev_sw_state->enetUnit));
-+
-+ ae531x_restart(MACInfo);
-+
-+ LEAVE();
-+}
-+
-+
-+/*******************************************************************************
-+* ae531x_MAC_do_ioctl is a placeholder for future ioctls.
-+*/
-+static int
-+ae531x_MAC_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
-+{
-+ int rv;
-+ ae531x_MAC_t *MACInfo;
-+ struct ioctl_data {
-+ u32 unit;
-+ u32 addr;
-+ u32 data;
-+ } *req;
-+ ae531x_dev_sw_state_t *dev_sw_state;
-+ ae531x_MAC_state_t *MAC_state;
-+
-+ ARRIVE();
-+
-+ dev_sw_state = (ae531x_dev_sw_state_t *)dev->priv;
-+ MAC_state = dev_sw_state->MAC_state;
-+ MACInfo = &MAC_state->MACInfo;
-+
-+ req = (struct ioctl_data *)ifr->ifr_data;
-+
-+ switch( cmd ) {
-+ default:
-+ AE531X_PRINT(AE531X_DEBUG_ERROR,
-+ ("Unsupported ioctl: 0x%x\n", cmd));
-+ rv = -EOPNOTSUPP;
-+ }
-+
-+ LEAVE();
-+ return rv;
-+}
-+
-+static void
-+ae531x_MAC_setup_fntable(struct net_device *dev)
-+{
-+ ARRIVE();
-+
-+ dev->get_stats = ae531x_MAC_get_stats;
-+ dev->open = ae531x_MAC_open;
-+ dev->stop = ae531x_MAC_stop;
-+ dev->hard_start_xmit = ae531x_MAC_start_xmit;
-+ dev->do_ioctl = ae531x_MAC_do_ioctl;
-+ dev->poll = ae531x_MAC_poll;
-+ dev->weight = 16;
-+#if 0 /* XXX: currently, ae531x_MAC_tx_timeout() will call functions
-+ * that in turn call schedule(). this is BAD, since the
-+ * timeout call runs at interrupt time. until ae531x_MAC_tx_timeout
-+ * is rewritten to avoid schedule() calls, we do not use it.
-+ */
-+ dev->tx_timeout = ae531x_MAC_tx_timeout;
-+#else
-+ dev->tx_timeout = NULL;
-+#endif
-+ dev->features = NETIF_F_HW_CSUM |\
-+ NETIF_F_HIGHDMA;
-+
-+ LEAVE();
-+}
-+
-+static void
-+ar5312EepromRead(char *EepromAddr, u_int16_t id, unsigned int off,
-+ unsigned int nbytes, char *data)
-+{
-+ int i;
-+
-+ for (i=0; i<nbytes; i++, off++) {
-+ data[i] = EepromAddr[off];
-+ }
-+}
-+
-+int
-+ae531x_get_numMACs(void)
-+{
-+ int devid;
-+ u16 radioMask;
-+
-+ /* Probe to find out the silicon revision and enable the
-+ correct number of macs */
-+ devid = ((u_int16_t) ((sysRegRead(AR531X_REV) >>8) &
-+ (AR531X_REV_MAJ | AR531X_REV_MIN)));
-+ switch (devid) {
-+ case AR5212_AR5312_REV2:
-+ case AR5212_AR5312_REV7:
-+ /* Need to determine if we have a 5312 or a 2312 since they
-+ have the same Silicon Rev ID*/
-+ ar5312EepromRead(radioConfig,0,2*AR531X_RADIO_MASK_OFF,2,
-+ (char *) &radioMask);
-+ if ((radioMask & AR531X_RADIO0_MASK) != 0) {
-+ return 2;
-+ }
-+ return 1;
-+ case AR5212_AR2313_REV8:
-+ return 1;
-+ }
-+
-+ /* default to 1 */
-+ return 1;
-+}
-+
-+BOOL
-+ae531x_twisted_enet(void)
-+{
-+ int wisoc_revision;
-+
-+ wisoc_revision = (sysRegRead(AR531X_REV) & AR531X_REV_MAJ) >> AR531X_REV_MAJ_S;
-+ if ( (wisoc_revision == AR531X_REV_MAJ_AR2313) ||
-+ /* next clause is used to determine AR2312, based on number of MACs.
-+ * must do this since revision is same for 5312 and 2312.
-+ */
-+ (wisoc_revision == AR531X_REV_MAJ_AR5312 && ae531x_get_numMACs() == 1) ) {
-+ return TRUE;
-+ } else {
-+ return FALSE;
-+ }
-+}
-+
-+int
-+ae531x_get_board_config(void)
-+{
-+ int dataFound;
-+ char *bd_config;
-+
-+ /*
-+ * Find start of Board Configuration data, using heuristics:
-+ * Search back from the (aliased) end of flash by 0x1000 bytes
-+ * at a time until we find the string "5311", which marks the
-+ * start of Board Configuration. Give up if we've searched
-+ * more than 500KB.
-+ */
-+ dataFound = 0;
-+ for (bd_config = (char *)0xbffff000;
-+ bd_config > (char *)0xbff80000;
-+ bd_config -= 0x1000)
-+ {
-+ if ( *(int *)bd_config == AR531X_BD_MAGIC) {
-+ dataFound = 1;
-+ break;
-+ }
-+ }
-+
-+ if (!dataFound) {
-+ printk("Could not find Board Configuration Data\n");
-+ bd_config = NULL;
-+ }
-+
-+ ar531x_boardConfig = (struct ar531x_boarddata *) bd_config;
-+
-+ return(dataFound);
-+}
-+
-+int
-+ae531x_get_radio_config(void)
-+{
-+ int dataFound;
-+ char *radio_config;
-+
-+ /*
-+ * Now find the start of Radio Configuration data, using heuristics:
-+ * Search forward from Board Configuration data by 0x1000 bytes
-+ * at a time until we find non-0xffffffff.
-+ */
-+ dataFound = 0;
-+ for (radio_config = ((char *) ar531x_boardConfig) + 0x1000;
-+ radio_config < (char *)0xbffff000;
-+ radio_config += 0x1000)
-+ {
-+ if (*(int *)radio_config != 0xffffffff) {
-+ dataFound = 1;
-+ break;
-+ }
-+ }
-+
-+ if (!dataFound) { /* AR2316 relocates radio config to new location */
-+ dataFound = 0;
-+ for (radio_config = ((char *) ar531x_boardConfig) + 0xf8;
-+ radio_config < (char *)0xbffff0f8;
-+ radio_config += 0x1000)
-+ {
-+ if (*(int *)radio_config != 0xffffffff) {
-+ dataFound = 1;
-+ break;
-+ }
-+ }
-+ }
-+
-+ if (!dataFound) {
-+ printk("Could not find Radio Configuration data\n");
-+ radio_config = NULL;
-+ }
-+ radioConfig = radio_config;
-+ return(dataFound);
-+}
-+
-+static int __init
-+ae531x_MAC_setup(void)
-+{
-+ int next_dev, i;
-+ struct net_device *dev;
-+ ae531x_dev_sw_state_t *dev_sw_state;
-+ ae531x_MAC_state_t *MAC_state;
-+ ae531x_MAC_t *MACInfo;
-+ char *addr;
-+
-+ ARRIVE();
-+
-+ MOD_INC_USE_COUNT;
-+ for (i=0;i<AR531X_NUM_ENET_MAC * AE531X_DEV_PER_MAC; i++) {
-+ ae531x_MAC_dev[i] = NULL;
-+ }
-+
-+ if (!ae531x_get_board_config()) {
-+ LEAVE();
-+ return -1;
-+ }
-+ if (!ae531x_get_radio_config()) {
-+ LEAVE();
-+ return(-1);
-+ }
-+ for(i=0, next_dev = AR531X_NUM_ENET_MAC-1;
-+ i<ae531x_get_numMACs() && next_dev>=0;
-+ i++, next_dev--){
-+
-+ /* if MAC is bogus in config data, skip */
-+ addr = ae531x_enet_mac_address_get(next_dev);
-+ if((*(u32 *)addr == 0xffffffff) && (*(u16 *)(addr+4)==0xffff)){
-+ /* bogus MAC config data */
-+ continue;
-+ }
-+
-+ dev = ae531x_MAC_dev[next_dev] =
-+ init_etherdev(NULL, sizeof(ae531x_dev_sw_state_t));
-+
-+ if (dev == NULL) {
-+ LEAVE();
-+ return -1;
-+ }
-+
-+ ae531x_MAC_setup_fntable(dev);
-+
-+ dev_sw_state = (ae531x_dev_sw_state_t *)dev->priv;
-+ dev_sw_state->enetUnit = next_dev;
-+ dev_sw_state->unit_on_MAC = 0;
-+ MAC_state = &per_MAC_info[next_dev];
-+ dev_sw_state->MAC_state = MAC_state;
-+ MAC_state->dev_sw_state[AE531X_LAN_PORT] = dev_sw_state;
-+ MAC_state->primary_dev = -1;
-+
-+ /* Initialize per-MAC information */
-+ MACInfo = &MAC_state->MACInfo;
-+
-+ MACInfo->unit = next_dev;
-+
-+ if (MACInfo->unit == 0) {
-+ MACInfo->macBase = (u32)(PHYS_TO_K1(AR531X_ENET0)+AE531X_MAC_OFFSET);
-+ MACInfo->dmaBase = (u32)(PHYS_TO_K1(AR531X_ENET0)+AE531X_DMA_OFFSET);
-+ MACInfo->phyBase = (u32)(PHYS_TO_K1(AR531X_ENET0)+AE531X_PHY_OFFSET);
-+ MAC_state->irq = AR531X_IRQ_ENET0_INTRS;
-+ } else {
-+#ifndef CONFIG_AR5315
-+ MACInfo->macBase = (u32) (PHYS_TO_K1(AR531X_ENET1)+AE531X_MAC_OFFSET);
-+ MACInfo->dmaBase = (u32) (PHYS_TO_K1(AR531X_ENET1)+AE531X_DMA_OFFSET);
-+ if (ae531x_twisted_enet()) {
-+ MACInfo->phyBase = (u32)(PHYS_TO_K1(AR531X_ENET0)+AE531X_PHY_OFFSET);
-+ } else {
-+ MACInfo->phyBase = (u32)(PHYS_TO_K1(AR531X_ENET1)+AE531X_PHY_OFFSET);
-+ }
-+ MAC_state->irq = AR531X_IRQ_ENET1_INTRS;
-+#endif
-+ }
-+
-+ MACInfo->OSinfo = (void *)MAC_state;
-+
-+ }
-+
-+ LEAVE();
-+ return 0;
-+}
-+module_init(ae531x_MAC_setup);
-+
-+/*******************************************************************************
-+* ae531x_MAC_unload is the module unload function
-+*/
-+static void __exit
-+ae531x_MAC_unload(void)
-+{
-+ int i;
-+
-+ for (i=0;i<AR531X_NUM_ENET_MAC * AE531X_DEV_PER_MAC; i++) {
-+ if (ae531x_MAC_dev[i] != NULL) {
-+ if( (((ae531x_dev_sw_state_t *)ae531x_MAC_dev[i]->priv)->dev) != NULL)
-+ ae531x_MAC_stop(ae531x_MAC_dev[i]);
-+ ae531x_MAC_dev[i] = NULL;
-+ }
-+ }
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+MODULE_AUTHOR("Atheros Communications, Inc.");
-+MODULE_DESCRIPTION("Support for Atheros WiSoC Ethernet device");
-+#ifdef MODULE_LICENSE
-+MODULE_LICENSE("Atheros");
-+#endif
-+module_exit(ae531x_MAC_unload);
-diff -urN linux-mips-orig/drivers/net/ath/ae531xmac.c linux-mips-new/drivers/net/ath/ae531xmac.c
---- linux-mips-orig/drivers/net/ath/ae531xmac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/ae531xmac.c 2005-12-31 12:33:57.673538824 +0000
-@@ -0,0 +1,951 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+
-+/*
-+ * Ethernet driver for Atheros' ae531x ethernet MAC.
-+ */
-+
-+#if linux
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/delay.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/init.h>
-+#include <asm/io.h>
-+
-+#include "ar531xlnx.h"
-+#endif /* linux */
-+
-+#include "ae531xreg.h"
-+#include "ae531xmac.h"
-+
-+#ifdef DEBUG
-+int ae531x_MAC_debug = AE531X_DEBUG_ERROR;
-+#else
-+int ae531x_MAC_debug = 0;
-+#endif
-+
-+extern char *ae531x_enet_mac_address_get(int);
-+
-+/* Forward references to local functions */
-+static void ae531x_QueueDestroy(AE531X_QUEUE *q);
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_ReadMacReg - read AE MAC register
-+*
-+* RETURNS: register value
-+*/
-+UINT32
-+ae531x_ReadMacReg(ae531x_MAC_t *MACInfo, UINT32 reg)
-+{
-+ UINT32 addr = MACInfo->macBase+reg;
-+ UINT32 data;
-+
-+ data = RegRead(addr);
-+ return data;
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_WriteMacReg - write AE MAC register
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_WriteMacReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 data)
-+{
-+ UINT32 addr = MACInfo->macBase+reg;
-+
-+ RegWrite(data, addr);
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_SetMacReg - set bits in AE MAC register
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_SetMacReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 val)
-+{
-+ UINT32 addr = MACInfo->macBase+reg;
-+ UINT32 data = RegRead(addr);
-+
-+ data |= val;
-+ RegWrite(data, addr);
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_ClearMacReg - clear bits in AE MAC register
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_ClearMacReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 val)
-+{
-+ UINT32 addr = MACInfo->macBase+reg;
-+ UINT32 data = RegRead(addr);
-+
-+ data &= ~val;
-+ RegWrite(data, addr);
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_ReadDmaReg - read AE DMA register
-+*
-+* RETURNS: register value
-+*/
-+UINT32
-+ae531x_ReadDmaReg(ae531x_MAC_t *MACInfo, UINT32 reg)
-+{
-+ UINT32 addr = MACInfo->dmaBase+reg;
-+ UINT32 data = RegRead(addr);
-+
-+ return data;
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_WriteDmaReg - write AE DMA register
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_WriteDmaReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 data)
-+{
-+ UINT32 addr = MACInfo->dmaBase+reg;
-+
-+ RegWrite(data, addr);
-+}
-+
-+
-+/******************************************************************************
-+ *
-+ * ae531x_AckIntr - clear interrupt bits in the status register.
-+ * Note: Interrupt bits are *cleared* by writing a 1.
-+ */
-+void
-+ae531x_AckIntr(ae531x_MAC_t *MACInfo, UINT32 data)
-+{
-+ ae531x_WriteDmaReg(MACInfo, DmaStatus, data);
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_SetDmaReg - set bits in an AE DMA register
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_SetDmaReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 val)
-+{
-+ UINT32 addr = MACInfo->dmaBase+reg;
-+ UINT32 data = RegRead(addr);
-+
-+ data |= val;
-+ RegWrite(data, addr);
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_ClearDmaReg - clear bits in an AE DMA register
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_ClearDmaReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 val)
-+{
-+ UINT32 addr = MACInfo->dmaBase+reg;
-+ UINT32 data = RegRead(addr);
-+
-+ data &= ~val;
-+ RegWrite(data, addr);
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_ReadMiiReg - read PHY registers via AE MAC Mii addr/data registers
-+*
-+* RETURNS: register value
-+*/
-+UINT32
-+ae531x_ReadMiiReg(UINT32 phyBase, UINT32 reg)
-+{
-+ UINT32 data;
-+ UINT32 addr = phyBase+reg;
-+
-+ data = RegRead(addr);
-+ return data;
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_WriteMiiReg - write PHY registers via AE MAC Mii addr/data registers
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_WriteMiiReg(UINT32 phyBase, UINT32 reg, UINT32 data)
-+{
-+ UINT32 addr = phyBase+reg;
-+
-+ RegWrite(data, addr);
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_MiiRead - read AE Mii register
-+*
-+* RETURNS: register value
-+*/
-+UINT16
-+ae531x_MiiRead(UINT32 phyBase, UINT32 phyAddr, UINT8 reg)
-+{
-+ UINT32 addr;
-+ UINT16 data;
-+
-+ addr = ((phyAddr << MiiDevShift) & MiiDevMask) | ((reg << MiiRegShift) & MiiRegMask);
-+
-+ ae531x_WriteMiiReg(phyBase, MacMiiAddr, addr );
-+ do {
-+ /* nop */
-+ } while ((ae531x_ReadMiiReg(phyBase, MacMiiAddr ) & MiiBusy) == MiiBusy);
-+
-+ data = ae531x_ReadMiiReg(phyBase, MacMiiData) & 0xFFFF;
-+
-+ return data;
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_MiiWrite - write AE Mii register
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_MiiWrite(UINT32 phyBase, UINT32 phyAddr, UINT8 reg, UINT16 data)
-+{
-+ UINT32 addr;
-+
-+ ae531x_WriteMiiReg(phyBase, MacMiiData, data );
-+
-+ addr = ((phyAddr << MiiDevShift) & MiiDevMask) |
-+ ((reg << MiiRegShift) & MiiRegMask) | MiiWrite;
-+ ae531x_WriteMiiReg(phyBase, MacMiiAddr, addr );
-+
-+ do {
-+ /* nop */
-+ } while ((ae531x_ReadMiiReg(phyBase, MacMiiAddr ) & MiiBusy) == MiiBusy);
-+}
-+
-+
-+/*******************************************************************************
-+* ae531x_BeginResetMode - enter a special "reset mode" in which
-+* -no interrupts are expected from the device
-+* -the device will not transmit nor receive
-+* -attempts to send or receive will return with an error and
-+* -the device will be reset at the next convenient opportunity.
-+*/
-+void
-+ae531x_BeginResetMode(ae531x_MAC_t *MACInfo)
-+{
-+ /* Set the reset flag */
-+ MACInfo->aeProcessRst = 1;
-+}
-+
-+
-+/*******************************************************************************
-+* ae531x_EndResetMode - exit the special "reset mode" entered
-+* earlier via a call to ae531x_BeginResetMode.
-+*/
-+void
-+ae531x_EndResetMode(ae531x_MAC_t *MACInfo)
-+{
-+ MACInfo->aeProcessRst = 0;
-+}
-+
-+
-+/*******************************************************************************
-+* ae531x_IsInResetMode - determine whether or not the device is
-+* currently in "reset mode" (i.e. that a device reset is pending)
-+*/
-+BOOL
-+ae531x_IsInResetMode(ae531x_MAC_t *MACInfo)
-+{
-+ return MACInfo->aeProcessRst;
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_DmaRxStart - Start Rx
-+*
-+* RETURNS: N/A
-+*/
-+static void
-+ae531x_DmaRxStart(ae531x_MAC_t *MACInfo)
-+{
-+ ae531x_SetDmaReg(MACInfo, DmaControl, DmaRxStart);
-+ sysWbFlush();
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_DmaRxStop - Stop Rx
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_DmaRxStop(ae531x_MAC_t *MACInfo)
-+{
-+ ae531x_ClearDmaReg(MACInfo, DmaControl, DmaRxStart);
-+ sysWbFlush();
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_DmaTxStart - Start Tx
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_DmaTxStart(ae531x_MAC_t *MACInfo)
-+{
-+ ae531x_SetDmaReg(MACInfo, DmaControl, DmaTxStart);
-+ sysWbFlush();
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_DmaTxStop - Stop Tx
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_DmaTxStop(ae531x_MAC_t *MACInfo)
-+{
-+ ae531x_ClearDmaReg(MACInfo, DmaControl, DmaTxStart);
-+ sysWbFlush();
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_DmaIntEnable - Enable DMA interrupts
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_DmaIntEnable(ae531x_MAC_t *MACInfo)
-+{
-+ ae531x_WriteDmaReg(MACInfo, DmaIntrEnb, DmaIntEnable);
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_DmaIntDisable - Disable DMA interrupts
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_DmaIntDisable(ae531x_MAC_t *MACInfo)
-+{
-+ ae531x_WriteDmaReg(MACInfo, DmaIntrEnb, DmaIntDisable);
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_DmaIntClear - Clear DMA interrupts
-+*
-+* RETURNS: N/A
-+*/
-+static void
-+ae531x_DmaIntClear(ae531x_MAC_t *MACInfo)
-+{
-+ /* clear all interrupt requests */
-+ ae531x_WriteDmaReg(MACInfo, DmaStatus,
-+ ae531x_ReadDmaReg(MACInfo, DmaStatus));
-+}
-+
-+
-+/******************************************************************************
-+* Initialize generic queue data
-+*/
-+void
-+ae531x_QueueInit(AE531X_QUEUE *q, char *pMem, int count)
-+{
-+ ARRIVE();
-+ q->firstDescAddr = pMem;
-+ q->lastDescAddr = (VIRT_ADDR)((UINT32)q->firstDescAddr +
-+ (count - 1) * AE531X_QUEUE_ELE_SIZE);
-+ q->curDescAddr = q->firstDescAddr;
-+ q->count = count;
-+ LEAVE();
-+}
-+
-+
-+/******************************************************************************
-+* ae531x_TxQueueCreate - create a circular queue of descriptors for Transmit
-+*/
-+static int
-+ae531x_TxQueueCreate(ae531x_MAC_t *MACInfo,
-+ AE531X_QUEUE *q,
-+ char *pMem,
-+ int count)
-+{
-+ int i;
-+ VIRT_ADDR descAddr;
-+
-+ ARRIVE();
-+
-+ ae531x_QueueInit(q, pMem, count);
-+ q->reapDescAddr = q->lastDescAddr;
-+
-+ /* Initialize Tx buffer descriptors. */
-+ for (i=0, descAddr=q->firstDescAddr;
-+ i<count;
-+ i++, descAddr=(VIRT_ADDR)((UINT32)descAddr + AE531X_QUEUE_ELE_SIZE))
-+ {
-+ /* Update the size, BUFPTR, and SWPTR fields */
-+
-+ AE531X_DESC_STATUS_SET(descAddr, 0);
-+ AE531X_DESC_CTRLEN_SET(descAddr, 0);
-+
-+ AE531X_DESC_BUFPTR_SET(descAddr, (UINT32)0);
-+ AE531X_DESC_LNKBUF_SET(descAddr, (UINT32)0);
-+ AE531X_DESC_SWPTR_SET(descAddr, (void *)0);
-+ } /* for each desc */
-+
-+ /* Make the queue circular */
-+ AE531X_DESC_CTRLEN_SET(q->lastDescAddr,
-+ DescEndOfRing|AE531X_DESC_CTRLEN_GET(q->lastDescAddr));
-+
-+ AE531X_PRINT(AE531X_DEBUG_RESET,
-+ ("ethmac%d Txbuf begin = %x, end = %x\n",
-+ MACInfo->unit,
-+ (UINT32)q->firstDescAddr,
-+ (UINT32)q->lastDescAddr));
-+
-+ LEAVE();
-+ return 0;
-+}
-+
-+
-+/******************************************************************************
-+* ae531x_RxQueueCreate - create a circular queue of Rx descriptors
-+*/
-+int
-+ae531x_RxQueueCreate(ae531x_MAC_t *MACInfo,
-+ AE531X_QUEUE *q,
-+ char *pMem,
-+ int count)
-+{
-+ int i;
-+ VIRT_ADDR descAddr;
-+
-+ ARRIVE();
-+
-+ ae531x_QueueInit(q, pMem, count);
-+ q->reapDescAddr = NULL;
-+
-+
-+ /* Initialize Rx buffer descriptors */
-+ for (i=0, descAddr=q->firstDescAddr;
-+ i<count;
-+ i++, descAddr=(VIRT_ADDR)((UINT32)descAddr + AE531X_QUEUE_ELE_SIZE))
-+ {
-+ void *swptr;
-+ char *rxBuffer;
-+ int rxBufferSize;
-+
-+ swptr = ae531x_rxbuf_alloc(MACInfo, &rxBuffer, &rxBufferSize);
-+ if (swptr == NULL) {
-+ AE531X_PRINT(AE531X_DEBUG_RESET,
-+ ("ethmac%d RX queue: ae531x_rxbuf_alloc failed\n",
-+ MACInfo->unit));
-+ ae531x_QueueDestroy(q);
-+ return -1;
-+ }
-+ AE531X_DESC_SWPTR_SET(descAddr, swptr);
-+
-+ AE531X_DESC_STATUS_SET(descAddr, DescOwnByDma);
-+ AE531X_DESC_CTRLEN_SET(descAddr, rxBufferSize);
-+ AE531X_DESC_BUFPTR_SET(descAddr, virt_to_bus(rxBuffer));
-+ AE531X_DESC_LNKBUF_SET(descAddr, (UINT32)0);
-+ } /* for each desc */
-+
-+ /* Make the queue circular */
-+ AE531X_DESC_CTRLEN_SET(q->lastDescAddr,
-+ DescEndOfRing|AE531X_DESC_CTRLEN_GET(q->lastDescAddr));
-+
-+ AE531X_PRINT(AE531X_DEBUG_RESET,
-+ ("ethmac%d Rxbuf begin = %x, end = %x\n",
-+ MACInfo->unit,
-+ (UINT32)q->firstDescAddr,
-+ (UINT32)q->lastDescAddr));
-+
-+ LEAVE();
-+ return 0;
-+}
-+
-+
-+/******************************************************************************
-+* ae531x_QueueDestroy -- Free all buffers and descriptors associated
-+* with a queue.
-+*/
-+static void
-+ae531x_QueueDestroy(AE531X_QUEUE *q)
-+{
-+ int i;
-+ int count;
-+ VIRT_ADDR descAddr;
-+
-+ ARRIVE();
-+
-+ count = q->count;
-+
-+ for (i=0, descAddr=q->firstDescAddr;
-+ i<count;
-+ i++, descAddr=(VIRT_ADDR)((UINT32)descAddr + AE531X_QUEUE_ELE_SIZE)) {
-+
-+ AE531X_DESC_STATUS_SET(descAddr, 0);
-+ AE531X_DESC_CTRLEN_SET(descAddr, 0);
-+ AE531X_DESC_BUFPTR_SET(descAddr, (UINT32)0);
-+ AE531X_DESC_LNKBUF_SET(descAddr, (UINT32)0);
-+
-+ ae531x_swptr_free(descAddr); /* Free OS-specific software pointer */
-+ }
-+
-+ LEAVE();
-+}
-+
-+static void
-+ae531x_TxQueueDestroy(ae531x_MAC_t *MACInfo)
-+{
-+ ae531x_QueueDestroy(&MACInfo->txQueue);
-+}
-+
-+static void
-+ae531x_RxQueueDestroy(ae531x_MAC_t *MACInfo)
-+{
-+ ae531x_QueueDestroy(&MACInfo->rxQueue);
-+}
-+
-+
-+/******************************************************************************
-+* ae531x_AllocateQueues - Allocate receive and transmit queues
-+*/
-+int
-+ae531x_AllocateQueues(ae531x_MAC_t *MACInfo)
-+{
-+ size_t QMemSize;
-+ char *pTxBuf = NULL;
-+ char *pRxBuf = NULL;
-+
-+ ARRIVE();
-+
-+ MACInfo->txDescCount = AE531X_TX_DESC_COUNT_DEFAULT;
-+ QMemSize = AE531X_QUEUE_ELE_SIZE * MACInfo->txDescCount;
-+ pTxBuf = MALLOC(QMemSize);
-+ if (pTxBuf == NULL) {
-+ AE531X_PRINT(AE531X_DEBUG_RESET,
-+ ("ethmac%d Failed to allocate TX queue\n", MACInfo->unit));
-+ goto AllocQFail;
-+ }
-+
-+ if (ae531x_TxQueueCreate(MACInfo, &MACInfo->txQueue, pTxBuf,
-+ MACInfo->txDescCount) < 0)
-+ {
-+ AE531X_PRINT(AE531X_DEBUG_RESET,
-+ ("ethmac%d Failed to create TX queue\n", MACInfo->unit));
-+ goto AllocQFail;
-+ }
-+
-+ MACInfo->rxDescCount = AE531X_RX_DESC_COUNT_DEFAULT;
-+ QMemSize = AE531X_QUEUE_ELE_SIZE * MACInfo->rxDescCount;
-+ pRxBuf = MALLOC(QMemSize);
-+ if (pRxBuf == NULL) {
-+ AE531X_PRINT(AE531X_DEBUG_RESET,
-+ ("ethmac%d Failed to allocate RX queue\n", MACInfo->unit));
-+ goto AllocQFail;
-+ }
-+
-+ if (ae531x_RxQueueCreate(MACInfo, &MACInfo->rxQueue, pRxBuf,
-+ MACInfo->rxDescCount) < 0)
-+ {
-+ AE531X_PRINT(AE531X_DEBUG_RESET,
-+ ("ethmac%d Failed to create RX queue\n", MACInfo->unit));
-+ goto AllocQFail;
-+ }
-+
-+ AE531X_PRINT(AE531X_DEBUG_RESET,
-+ ("ethmac%d Memory setup complete.\n", MACInfo->unit));
-+
-+ LEAVE();
-+ return 0;
-+
-+AllocQFail:
-+ MACInfo->txDescCount = 0; /* sanity */
-+ MACInfo->rxDescCount = 0; /* sanity */
-+
-+ if (pTxBuf) {
-+ FREE(pTxBuf);
-+ }
-+ if (pRxBuf) {
-+ FREE(pRxBuf);
-+ }
-+
-+ LEAVE();
-+ return -1;
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_FreeQueues - Free Transmit & Receive queues
-+*/
-+void
-+ae531x_FreeQueues(ae531x_MAC_t *MACInfo)
-+{
-+ ae531x_TxQueueDestroy(MACInfo);
-+ FREE(MACInfo->txQueue.firstDescAddr);
-+
-+ ae531x_RxQueueDestroy(MACInfo);
-+ FREE(MACInfo->rxQueue.firstDescAddr);
-+}
-+
-+/******************************************************************************
-+*
-+* ae531x_DmaReset - Reset DMA and TLI controllers
-+*
-+* RETURNS: N/A
-+*/
-+void
-+ae531x_DmaReset(ae531x_MAC_t *MACInfo)
-+{
-+ int i;
-+ UINT32 descAddr;
-+
-+ ARRIVE();
-+
-+ /* Disable device interrupts prior to any errors during stop */
-+ intDisable(MACInfo->ilevel);
-+
-+ /* Disable MAC rx and tx */
-+ ae531x_ClearMacReg(MACInfo, MacControl, (MacRxEnable | MacTxEnable));
-+
-+ udelay(1);
-+
-+ /* Reset dma controller */
-+
-+ ae531x_WriteDmaReg(MACInfo, DmaBusMode, DmaResetOn);
-+
-+ /* Delay 2 usec */
-+ sysUDelay(2);
-+
-+ /* Flush the rx queue */
-+ descAddr = (UINT32)MACInfo->rxQueue.firstDescAddr;
-+ MACInfo->rxQueue.curDescAddr = MACInfo->rxQueue.firstDescAddr;
-+ for (i=0;
-+ i<(MACInfo->rxDescCount);
-+ i++, descAddr += AE531X_QUEUE_ELE_SIZE) {
-+ AE531X_DESC_STATUS_SET(descAddr, DescOwnByDma);
-+ }
-+
-+ /* Flush the tx queue */
-+ descAddr = (UINT32)MACInfo->txQueue.firstDescAddr;
-+ MACInfo->txQueue.curDescAddr = MACInfo->txQueue.firstDescAddr;
-+ MACInfo->txQueue.reapDescAddr = MACInfo->txQueue.lastDescAddr;
-+ for (i=0;
-+ i<(MACInfo->txDescCount);
-+ i++, descAddr += AE531X_QUEUE_ELE_SIZE) {
-+ AE531X_DESC_STATUS_SET (descAddr, 0);
-+ }
-+
-+ /* Set init register values */
-+ ae531x_WriteDmaReg(MACInfo, DmaBusMode, DmaBusModeInit);
-+
-+ /* Install the first Tx and Rx queues on the device */
-+ ae531x_WriteDmaReg(MACInfo, DmaRxBaseAddr,
-+ virt_to_bus(MACInfo->rxQueue.firstDescAddr));
-+ ae531x_WriteDmaReg(MACInfo, DmaTxBaseAddr,
-+ virt_to_bus(MACInfo->txQueue.firstDescAddr));
-+
-+
-+ ae531x_WriteDmaReg(MACInfo, DmaControl, DmaStoreAndForward);
-+
-+ ae531x_WriteDmaReg(MACInfo, DmaIntrEnb, DmaIntDisable);
-+
-+ AE531X_PRINT(AE531X_DEBUG_RESET,
-+ ("ethmac%d: DMA RESET!\n", MACInfo->unit));
-+
-+ /* Turn on device interrupts -- enable most errors */
-+ ae531x_DmaIntClear(MACInfo); /* clear interrupt requests */
-+ ae531x_DmaIntEnable(MACInfo); /* enable interrupts */
-+
-+ ae531x_EndResetMode(MACInfo);
-+
-+ intEnable(MACInfo->ilevel);
-+
-+ LEAVE();
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae531x_MACAddressSet - Set the ethernet address
-+*
-+* Sets the ethernet address according to settings in flash.
-+*
-+* RETURNS: void
-+*/
-+static void
-+ae531x_MACAddressSet(ae531x_MAC_t *MACInfo)
-+{
-+ unsigned int data;
-+ UINT8 *macAddr;
-+
-+ ARRIVE();
-+
-+ macAddr = ae531x_enet_mac_address_get(MACInfo->unit);
-+
-+ /* set our MAC address */
-+ data = (macAddr[5]<<8) | macAddr[4];
-+ ae531x_WriteMacReg(MACInfo, MacAddrHigh, data );
-+
-+ data = (macAddr[3]<<24) | (macAddr[2]<<16) | (macAddr[1]<<8) | macAddr[0];
-+ ae531x_WriteMacReg(MACInfo, MacAddrLow, data );
-+
-+ AE531X_PRINT(AE531X_DEBUG_RESET,
-+ ("ethmac%d Verify MAC address %8.8X %8.8X \n",
-+ MACInfo->unit,
-+ ae531x_ReadMacReg(MACInfo, MacAddrLow),
-+ ae531x_ReadMacReg(MACInfo, MacAddrHigh)));
-+
-+ AE531X_PRINT(AE531X_DEBUG_RESET,
-+ (" sb = %2.2X %2.2X %2.2X %2.2X %2.2X %2.2X\n",
-+ 0xff&macAddr[0],
-+ 0xff&macAddr[1],
-+ 0xff&macAddr[2],
-+ 0xff&macAddr[3],
-+ 0xff&macAddr[4],
-+ 0xff&macAddr[5]));
-+ LEAVE();
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ae_SetMACFromPhy - read Phy settings and update Mac
-+* with current duplex and speed.
-+*
-+* RETURNS:
-+*/
-+static void
-+ae531x_SetMACFromPhy(ae531x_MAC_t *MACInfo)
-+{
-+ UINT32 macCtl;
-+ BOOL fullDuplex;
-+ UINT32 timeout;
-+
-+ ARRIVE();
-+
-+ timeout = jiffies+(HZ/1000)*AE531X_NEGOT_TIMEOUT;
-+
-+ /* Get duplex mode from Phy */
-+ while (((fullDuplex = phyIsFullDuplex(MACInfo->unit)) == -1) &&
-+ (jiffies <= timeout));
-+
-+ /* Flag is set for full duplex mode, else cleared */
-+ macCtl = ae531x_ReadMacReg(MACInfo, MacControl);
-+
-+ if (fullDuplex) {
-+ /* set values of control registers */
-+ macCtl &= ~MacDisableRxOwn;
-+ macCtl |= MacFullDuplex;
-+ ae531x_WriteMacReg(MACInfo, MacControl, macCtl);
-+ ae531x_WriteMacReg(MACInfo, MacFlowControl, MacFlowControlInitFdx);
-+ } else {
-+ /* set values of control registers */
-+ ae531x_WriteMacReg(MACInfo, MacFlowControl, MacFlowControlInitHdx);
-+ macCtl |= MacDisableRxOwn;
-+ macCtl &= ~MacFullDuplex;
-+ ae531x_WriteMacReg(MACInfo, MacControl, macCtl);
-+ }
-+
-+ LEAVE();
-+}
-+
-+
-+/******************************************************************************
-+* ae531x_MACReset -- sets MAC address and duplex.
-+*/
-+void
-+ae531x_MACReset(ae531x_MAC_t *MACInfo)
-+{
-+ ae531x_MACAddressSet(MACInfo);
-+#ifndef CONFIG_AR5315
-+ ae531x_SetMACFromPhy(MACInfo);
-+#endif
-+}
-+
-+
-+/******************************************************************************
-+* ae531x_EnableComm -- enable Transmit and Receive
-+*/
-+void
-+ae531x_EnableComm(ae531x_MAC_t *MACInfo)
-+{
-+ ae531x_SetMacReg(MACInfo, MacControl, (MacRxEnable | MacTxEnable));
-+ ae531x_DmaRxStart(MACInfo); /* start receiver */
-+ ae531x_DmaTxStart(MACInfo); /* start transmitter */
-+}
-+
-+
-+/******************************************************************************
-+* ae531x_DisableComm -- disable Transmit and Receive
-+*/
-+void
-+ae531x_DisableComm(ae531x_MAC_t *MACInfo)
-+{
-+ ae531x_ClearMacReg(MACInfo, MacControl, (MacRxEnable | MacTxEnable));
-+}
-+
-+
-+/******************************************************************************
-+* ae531x_reset -- Cold reset ethernet interface
-+*/
-+void
-+ae531x_reset(ae531x_MAC_t *MACInfo)
-+{
-+ UINT32 mask = 0;
-+ UINT32 regtmp;
-+#ifndef CONFIG_AR5315
-+
-+ if (MACInfo->unit == 0) {
-+ mask = AR531X_RESET_ENET0 | AR531X_RESET_EPHY0;
-+ } else {
-+ mask = AR531X_RESET_ENET1 | AR531X_RESET_EPHY1;
-+ }
-+
-+ /* Put into reset */
-+ regtmp = sysRegRead(AR531X_RESET);
-+ sysRegWrite(AR531X_RESET, regtmp | mask);
-+ sysMsDelay(15);
-+
-+ /* Pull out of reset */
-+ regtmp = sysRegRead(AR531X_RESET);
-+ sysRegWrite(AR531X_RESET, regtmp & ~mask);
-+ sysUDelay(25);
-+
-+ /* Enable */
-+ if (MACInfo->unit == 0) {
-+ mask = AR531X_ENABLE_ENET0;
-+ } else {
-+ mask = AR531X_ENABLE_ENET1;
-+ }
-+ regtmp = sysRegRead(AR531X_ENABLE);
-+ sysRegWrite(AR531X_ENABLE, regtmp | mask);
-+#else
-+ if (MACInfo->unit == 0) {
-+ mask = AR531X_RESET_ENET0 | AR531X_RESET_EPHY0;
-+ }
-+ /* Enable Arbitration for Ethernet bus */
-+ regtmp = sysRegRead(AR531XPLUS_AHB_ARB_CTL);
-+ regtmp |= ARB_ETHERNET;
-+ sysRegWrite(AR531XPLUS_AHB_ARB_CTL, regtmp);
-+
-+ /* Put into reset */
-+ regtmp = sysRegRead(AR531X_RESET);
-+ sysRegWrite(AR531X_RESET, regtmp | mask);
-+ sysMsDelay(10);
-+
-+ /* Pull out of reset */
-+ regtmp = sysRegRead(AR531X_RESET);
-+ sysRegWrite(AR531X_RESET, regtmp & ~mask);
-+ sysMsDelay(10);
-+
-+ regtmp = sysRegRead(AR531XPLUS_IF_CTL);
-+ regtmp |= IF_TS_LOCAL;
-+ sysRegWrite(AR531XPLUS_IF_CTL, regtmp);
-+#endif
-+}
-+
-+
-+/******************************************************************************
-+* ae531x_unitLinkLost -- Called from PHY layer to notify the MAC layer
-+* that there are no longer any live links associated with a MAC.
-+*/
-+void
-+ae531x_unitLinkLost(int ethUnit)
-+{
-+ AE531X_PRINT(AE531X_DEBUG_LINK_CHANGE,
-+ ("enetmac%d link down\n", ethUnit));
-+}
-+
-+
-+/******************************************************************************
-+* ae531x_unitLinkGained -- Called from PHY layer to notify the MAC layer
-+* that there are 1 or more live links associated with a MAC.
-+*/
-+void
-+ae531x_unitLinkGained(int ethUnit)
-+{
-+#if CONFIG_AR5315
-+#define AE531X_POLL_MILLI_SECONDS 200
-+ ae531x_MAC_t *MACInfo = ae531x_getMAcInfo(ethUnit);
-+ while(!MACInfo || !MACInfo->port_is_up)
-+ {
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ schedule_timeout((AE531X_POLL_MILLI_SECONDS * HZ)/1000);
-+ MACInfo = ae531x_getMAcInfo(ethUnit);
-+ }
-+ ae531x_SetMACFromPhy(MACInfo);
-+#endif
-+ AE531X_PRINT(AE531X_DEBUG_LINK_CHANGE,
-+ ("enet%d link up\n", ethUnit));
-+}
-+
-+/******************************************************************************
-+* ae531x_ethMacDefault -- Called from PHY layer to determine the default
-+* ethernet MAC. On some "twisted" platforms, the only usable MAC is 1,
-+* while on others the usable MAC is 0. Future boards may allow both MACs
-+* to be used; in this case, return -1 to indicate that there IS NO default
-+* MAC.
-+*/
-+int
-+ae531x_ethMacDefault(void)
-+{
-+ if (ae531x_twisted_enet())
-+ return 1;
-+
-+ return 0;
-+
-+}
-diff -urN linux-mips-orig/drivers/net/ath/ae531xmac.h linux-mips-new/drivers/net/ath/ae531xmac.h
---- linux-mips-orig/drivers/net/ath/ae531xmac.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/ae531xmac.h 2005-12-31 12:33:57.674538672 +0000
-@@ -0,0 +1,229 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * See README to understand the decomposition of the ethernet driver.
-+ *
-+ * This file contains OS-independent pure software definitions for
-+ * ethernet support on the AR531X platform.
-+ */
-+
-+#ifndef _AE531XMAC_H_
-+#define _AE531XMAC_H_
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+/*
-+ * DEBUG switches to control verbosity.
-+ * Just modify the value of ae531x_MAC_debug.
-+ */
-+#define AE531X_DEBUG_ALL 0xffffffff
-+#define AE531X_DEBUG_ERROR 0x00000001 /* Unusual conditions and Errors */
-+#define AE531X_DEBUG_ARRIVE 0x00000002 /* Arrive into a function */
-+#define AE531X_DEBUG_LEAVE 0x00000004 /* Leave a function */
-+#define AE531X_DEBUG_RESET 0x00000008 /* Reset */
-+#define AE531X_DEBUG_TX 0x00000010 /* Transmit */
-+#define AE531X_DEBUG_TX_REAP 0x00000020 /* Transmit Descriptor Reaping */
-+#define AE531X_DEBUG_RX 0x00000040 /* Receive */
-+#define AE531X_DEBUG_RX_STOP 0x00000080 /* Receive Early Stop */
-+#define AE531X_DEBUG_INT 0x00000100 /* Interrupts */
-+#define AE531X_DEBUG_LINK_CHANGE 0x00000200 /* PHY Link status changed */
-+
-+#define AE531X_NEGOT_TIMEOUT 500 /* ms to wait for autonegotiation */
-+
-+extern int ae531x_MAC_debug;
-+
-+#define AE531X_PRINT(FLG, X) \
-+{ \
-+ if (ae531x_MAC_debug & (FLG)) { \
-+ DEBUG_PRINTF("%s#%d:%s ", \
-+ __FILE__, \
-+ __LINE__, \
-+ __FUNCTION__); \
-+ DEBUG_PRINTF X; \
-+ } \
-+}
-+
-+#define ARRIVE() AE531X_PRINT(AE531X_DEBUG_ARRIVE, ("Arrive{\n"))
-+#define LEAVE() AE531X_PRINT(AE531X_DEBUG_LEAVE, ("}Leave\n"))
-+
-+#define RegRead(addr) \
-+ (*(volatile unsigned int *)(addr))
-+
-+#define RegWrite(val,addr) \
-+ ((*(volatile unsigned int *)(addr)) = (val))
-+
-+/*****************************************************************
-+ * Phy code is broken out into a separate layer, so that different
-+ * PHY hardware can easily be supported.
-+ *
-+ * These functions are provided by the PHY layer for use by the MAC layer.
-+ * phySetup -- Set phy hardware appropriately for a MAC unit
-+ *
-+ * phyCheckStatusChange -- Look for dropped/initiated links on any
-+ * phy port associated with a MAC unit
-+ *
-+ * phyIsSpeed100 -- Determines whether or not a PHY is up and
-+ * running at 100Mbit
-+ *
-+ * phyIsFullDuplex -- Determines whether or not a PHY is up and
-+ * running in Full Duplex mode
-+ *
-+ */
-+#if CONFIG_MARVELL_ENET_PHY
-+/*
-+ * Mapping of generic phy APIs to Marvell Ethernet Switch phy functions.
-+ */
-+#include "mvPhy.h"
-+#define phySetup(ethUnit, phyBase) mv_phySetup((ethUnit), (phyBase))
-+#define phyCheckStatusChange(ethUnit) mv_phyCheckStatusChange(ethUnit)
-+#define phyIsSpeed100(ethUnit) mv_phyIsSpeed100(ethUnit)
-+#define phyIsFullDuplex(ethUnit) mv_phyIsFullDuplex(ethUnit)
-+
-+#if CONFIG_VENETDEV
-+#define PHY_TRAILER_SIZE MV_PHY_TRAILER_SIZE
-+extern void mv_phyDetermineSource(char *data, int len, int *pFromLAN);
-+extern void mv_phySetDestinationPort(char *data, int len, int fromLAN);
-+#define phyDetermineSource(data, len, pFromLAN) mv_phyDetermineSource((data), (len), (pFromLAN))
-+#define phySetDestinationPort(data, len, fromLAN) mv_phySetDestinationPort((data), (len), (fromLAN))
-+#else
-+#define PHY_TRAILER_SIZE 0
-+#endif
-+#endif /* CONFIG_MARVELL_ENET_PHY */
-+
-+#if CONFIG_KENDIN_ENET_PHY || CONFIG_REALTEK_ENET_PHY || CONFIG_KENDIN_KS8995XA_ENET_PHY
-+/*
-+ * Mapping of generic phy APIs to Kendin KS8721B and RealTek RTL8201BL phys.
-+ */
-+#include "rtPhy.h"
-+#define phySetup(ethUnit, phyBase) rt_phySetup((ethUnit), (phyBase))
-+#define phyCheckStatusChange(ethUnit) rt_phyCheckStatusChange(ethUnit)
-+#define phyIsSpeed100(ethUnit) rt_phyIsSpeed100(ethUnit)
-+#define phyIsFullDuplex(ethUnit) rt_phyIsFullDuplex(ethUnit)
-+#endif
-+
-+#if CONFIG_ICPLUS_ENET_PHY
-+/*
-+ * Mapping of generic phy APIs to Icplus phys.
-+ */
-+#include "ipPhy.h"
-+#define phySetup(ethUnit, phyBase) ip_phySetup((ethUnit), (phyBase))
-+#define phyCheckStatusChange(ethUnit) ip_phyCheckStatusChange(ethUnit)
-+#define phyIsSpeed100(ethUnit) ip_phyIsSpeed100(ethUnit)
-+#define phyIsFullDuplex(ethUnit) ip_phyIsFullDuplex(ethUnit)
-+#endif
-+
-+#if !defined(PHY_TRAILER_SIZE)
-+#define PHY_TRAILER_SIZE 0
-+#endif
-+
-+/*****************************************************************
-+ * MAC-independent interface to be used by PHY code
-+ *
-+ * These functions are provided by the MAC layer for use by the PHY layer.
-+ */
-+#define phyRegRead ae531x_MiiRead
-+#define phyRegWrite ae531x_MiiWrite
-+#define phyLinkLost(ethUnit) ae531x_unitLinkLost(ethUnit)
-+#define phyLinkGained(ethUnit) ae531x_unitLinkGained(ethUnit)
-+#define phyEthMacDefault() ae531x_ethMacDefault()
-+
-+void ae531x_unitLinkLost(int unit);
-+void ae531x_unitLinkGained(int unit);
-+int ae531x_ethMacDefault(void);
-+
-+
-+/*
-+ * RXBUFF_RESERVE enables building header on WLAN-side in place
-+ * NB: Divisible by 2 but NOT 4. Otherwise handle_adel_int() will
-+ * be used by the ip layer for misaligned word accesses and
-+ * performance will suffer - a lot.
-+ */
-+#define ETH_CRC_LEN 4
-+#define RXBUFF_RESERVE 98
-+// #define RXBUFF_RESERVE 98
-+
-+/*****************************************************************
-+ * Descriptor queue
-+ */
-+typedef struct ae531x_queue {
-+ VIRT_ADDR firstDescAddr; /* descriptor array address */
-+ VIRT_ADDR lastDescAddr; /* last descriptor address */
-+ VIRT_ADDR curDescAddr; /* current descriptor address */
-+ VIRT_ADDR reapDescAddr; /* current tail of tx descriptors reaped */
-+ UINT16 count; /* number of elements */
-+} AE531X_QUEUE;
-+
-+/* Given a descriptor, return the next one in a circular list */
-+#define AE531X_QUEUE_ELE_NEXT_GET(q, descAddr) \
-+ ((descAddr) == (q)->lastDescAddr) ? (q)->firstDescAddr : \
-+ (VIRT_ADDR)((UINT32)(descAddr) + AE531X_QUEUE_ELE_SIZE)
-+
-+/* Move the "current descriptor" forward to the next one */
-+#define AE531X_CONSUME_DESC(q) \
-+ q->curDescAddr = AE531X_QUEUE_ELE_NEXT_GET(q, q->curDescAddr)
-+
-+/*****************************************************************
-+ * Per-ethernet-MAC OS-independent information
-+ */
-+typedef struct ae531x_MAC_s {
-+ u32 unit; /* MAC unit ID */
-+ u32 macBase; /* MAC base address */
-+ u32 dmaBase; /* DMA base address */
-+ u32 phyBase; /* PHY base address */
-+ AE531X_QUEUE txQueue; /* Transmit descriptor queue */
-+ AE531X_QUEUE rxQueue; /* Receive descriptor queue */
-+ UINT16 txDescCount; /* Transmit descriptor count */
-+ UINT16 rxDescCount; /* Receive descriptor count */
-+ BOOL aeProcessRst; /* flag to indicate reset in progress */
-+ BOOL port_is_up; /* flag to indicate port is up */
-+ void *OSinfo; /* OS-dependent data */
-+} ae531x_MAC_t;
-+
-+#define AE531X_TX_DESC_COUNT_DEFAULT 128 /* Transmit descriptors */
-+#define AE531X_RX_DESC_COUNT_DEFAULT 128 /* Receive descriptors */
-+
-+
-+/*****************************************************************
-+ * Interfaces exported by the OS-independent MAC layer
-+ */
-+void ae531x_BeginResetMode(ae531x_MAC_t *MACInfo);
-+void ae531x_EndResetMode(ae531x_MAC_t *MACInfo);
-+BOOL ae531x_IsInResetMode(ae531x_MAC_t *MACInfo);
-+int ae531x_RxQueueCreate(ae531x_MAC_t *MACInfo, AE531X_QUEUE *q,
-+ char *pMem, int count);
-+int ae531x_QueueDelete(struct ae531x_queue *q);
-+void ae531x_DmaReset(ae531x_MAC_t *MACInfo);
-+void ae531x_MACReset(ae531x_MAC_t *MACInfo);
-+void ae531x_EnableComm(ae531x_MAC_t *MACInfo);
-+void ae531x_DisableComm(ae531x_MAC_t *MACInfo);
-+void ae531x_reset(ae531x_MAC_t *MACInfo);
-+int ae531x_AllocateQueues(ae531x_MAC_t *MACInfo);
-+void ae531x_FreeQueues(ae531x_MAC_t *MACInfo);
-+void ae531x_QueueInit(AE531X_QUEUE *q, char *pMem, int count);
-+UINT32 ae531x_ReadMacReg(ae531x_MAC_t *MACInfo, UINT32 reg);
-+void ae531x_WriteMacReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 data);
-+void ae531x_SetMacReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 val);
-+void ae531x_ClearMacReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 val);
-+void ae531x_SetDmaReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 val);
-+void ae531x_ClearDmaReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 val);
-+UINT32 ae531x_ReadDmaReg(ae531x_MAC_t *MACInfo, UINT32 reg);
-+void ae531x_WriteDmaReg(ae531x_MAC_t *MACInfo, UINT32 reg, UINT32 data);
-+UINT32 ae531x_ReadMiiReg(UINT32 phyBase, UINT32 reg);
-+void ae531x_WriteMiiReg(UINT32 phyBase, UINT32 reg, UINT32 data);
-+UINT16 ae531x_MiiRead(UINT32 phyBase, UINT32 phyAddr, UINT8 reg);
-+void ae531x_MiiWrite(UINT32 phyBase, UINT32 phyAddr, UINT8 reg, UINT16 data);
-+void ae531x_DmaIntEnable(ae531x_MAC_t *MACInfo);
-+void ae531x_DmaIntDisable(ae531x_MAC_t *MACInfo);
-+void ae531x_AckIntr(ae531x_MAC_t *MACInfo, UINT32 val);
-+void *ae531x_rxbuf_alloc(ae531x_MAC_t *MACInfo, char **rxBptr, int *rxBSize);
-+void ae531x_swptr_free(VIRT_ADDR txDesc);
-+BOOL ae531x_twisted_enet(void);
-+
-+#endif /* _AE531XMAC_H_ */
-diff -urN linux-mips-orig/drivers/net/ath/ae531xreg.h linux-mips-new/drivers/net/ath/ae531xreg.h
---- linux-mips-orig/drivers/net/ath/ae531xreg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/ae531xreg.h 2005-12-31 12:33:57.675538520 +0000
-@@ -0,0 +1,439 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * See README to understand the decomposition of the ethernet driver.
-+ *
-+ * Register definitions for Atheros AR531X Ethernet MAC.
-+ */
-+
-+#ifndef _AE531XREG_H_
-+#define _AE531XREG_H_
-+
-+#define AE531X_MAC_OFFSET 0x0000
-+#define AE531X_PHY_OFFSET 0x0000 /* Same as MAC offset */
-+#define AE531X_DMA_OFFSET 0x1000
-+
-+/***********************************************************/
-+/* MAC110 registers, base address is BAR+AE531X_MAC_OFFSET */
-+/***********************************************************/
-+#define MacControl 0x00 /* control */
-+#define MacAddrHigh 0x04 /* address high */
-+#define MacAddrLow 0x08 /* address low */
-+#define MacMultiHashHigh 0x0C /* multicast hash table high */
-+#define MacMultiHashLow 0x10 /* multicast hash table low */
-+#define MacMiiAddr 0x14 /* MII address */
-+#define MacMiiData 0x18 /* MII data */
-+#define MacFlowControl 0x1C /* Flow control */
-+#define MacVlan1Tag 0x4C /* VLAN1 tag */
-+#define MacVlan2Tag 0x50 /* VLAN2 tag */
-+
-+
-+/***************************************************************/
-+/* DMA engine registers, base address is BAR+AE531X_DMA_OFFSET */
-+/***************************************************************/
-+#define DmaBusMode 0x00 /* CSR0 - Bus Mode */
-+#define DmaTxPollDemand 0x04 /* CSR1 - Transmit Poll Demand */
-+#define DmaRxPollDemand 0x08 /* CSR2 - Receive Poll Demand */
-+#define DmaRxBaseAddr 0x0C /* CSR3 - Receive list base address */
-+#define DmaTxBaseAddr 0x10 /* CSR4 - Transmit list base address */
-+#define DmaStatus 0x14 /* CSR5 - Dma status */
-+#define DmaControl 0x18 /* CSR6 - Dma control */
-+#define DmaIntrEnb 0x1C /* CSR7 - Interrupt enable */
-+#define DmaOverflowCnt 0x20 /* CSR8 - Missed Frame and Buff Overflow counter */
-+#define DmaTxCurrAddr 0x50 /* CSR20 - Current host transmit buffer address */
-+#define DmaRxCurrAddr 0x54 /* CSR21 - Current host receive buffer address */
-+
-+/**********************************************************/
-+/* MAC Control register layout */
-+/**********************************************************/
-+#define MacFilterOff 0x80000000 /* Receive all incoming packets RW */
-+#define MacFilterOn 0 /* Receive filtered packets only 0 */
-+#define MacBigEndian 0x40000000 /* Big endian mode RW */
-+#define MacLittleEndian 0 /* Little endian 0 */
-+#define MacHeartBeatOff 0x10000000 /* Heartbeat signal qual disable RW*/
-+#define MacHeartBeatOn 0 /* Heartbeat signal qual enable 0 */
-+#define MacSelectSrl 0x08000000 /* Select SRL port RW */
-+#define MacSelectMii 0 /* Select MII port 0 */
-+#define MacDisableRxOwn 0x00800000 /* Disable receive own packets RW */
-+#define MacEnableRxOwn 0 /* Enable receive own packets 0 */
-+#define MacLoopbackExt 0x00400000 /* External loopback RW */
-+#define MacLoopbackInt 0x00200000 /* Internal loopback */
-+#define MacLoopbackOff 0 /* Normal mode 00 */
-+#define MacFullDuplex 0x00100000 /* Full duplex mode RW */
-+#define MacHalfDuplex 0 /* Half duplex mode 0 */
-+#define MacMulticastFilterOff 0x00080000 /* Pass all multicast packets RW */
-+#define MacMulticastFilterOn 0 /* Pass filtered mcast packets 0 */
-+#define MacPromiscuousModeOn 0x00040000 /* Receive all valid packets RW 1 */
-+#define MacPromiscuousModeOff 0 /* Receive filtered packets only */
-+#define MacFilterInverse 0x00020000 /* Inverse filtering RW */
-+#define MacFilterNormal 0 /* Normal filtering 0 */
-+#define MacBadFramesEnable 0x00010000 /* Pass bad frames RW */
-+#define MacBadFramesDisable 0 /* Do not pass bad frames 0 */
-+#define MacPerfectFilterOff 0x00008000 /* Hash filtering only RW */
-+#define MacPerfectFilterOn 0 /* Both perfect and hash filtering 0 */
-+#define MacHashFilterOn 0x00002000 /* perform hash filtering RW */
-+#define MacHashFilterOff 0 /* perfect filtering only 0 */
-+#define MacLateCollisionOn 0x00001000 /* Enable late collision control RW */
-+#define MacLateCollisionOff 0 /* Disable late collision control 0 */
-+#define MacBroadcastDisable 0x00000800 /* Disable reception of bcast frames RW */
-+#define MacBroadcastEnable 0 /* Enable broadcast frames 0 */
-+#define MacRetryDisable 0x00000400 /* Disable retransmission RW */
-+#define MacRetryEnable 0 /* Enable retransmission 0 */
-+#define MacPadStripEnable 0x00000100 /* Pad stripping enable RW */
-+#define MacPadStripDisable 0 /* Pad stripping disable 0 */
-+#define MacBackoff 0 /* Backoff Limit RW 00 */
-+#define MacDeferralCheckEnable 0x00000020 /* Deferral check enable RW */
-+#define MacDeferralCheckDisable 0 /* Deferral check disable 0 */
-+#define MacTxEnable 0x00000008 /* Transmitter enable RW */
-+#define MacTxDisable 0 /* Transmitter disable 0 */
-+#define MacRxEnable 0x00000004 /* Receiver enable RW */
-+#define MacRxDisable 0 /* Receiver disable 0 */
-+
-+
-+/**********************************************************/
-+/* MII address register layout */
-+/**********************************************************/
-+#define MiiDevMask 0x0000F800 /* MII device address */
-+#define MiiDevShift 11
-+#define MiiRegMask 0x000007C0 /* MII register */
-+#define MiiRegShift 6
-+#define MiiWrite 0x00000002 /* Write to register */
-+#define MiiRead 0 /* Read from register */
-+#define MiiBusy 0x00000001 /* MII interface is busy */
-+
-+/**********************************************************/
-+/* MII Data register layout */
-+/**********************************************************/
-+#define MiiDataMask 0x0000FFFF /* MII Data */
-+
-+/**********************************************************/
-+/* MAC flow control register layout */
-+/**********************************************************/
-+#define MacPauseTimeMask 0xFFFF0000 /* PAUSE TIME field in ctrl frame */
-+#define MacPauseTimeShift 15
-+#define MacControlFrameEnable 0x00000004 /* Enable pass ctrl frames to host */
-+#define MacControlFrameDisable 0 /* Do not pass ctrl frames to host */
-+#define MacFlowControlEnable 0x00000002 /* Enable flow control */
-+#define MacFlowControlDisable 0 /* Disable flow control */
-+#define MacSendPauseFrame 0x00000001 /* send pause frame */
-+
-+/**********************************************************/
-+/* DMA bus mode register layout */
-+/**********************************************************/
-+#define DmaRxAlign16 0x01000000 /* Force all rx buffers to align on odd hw bndry */
-+#define DmaBigEndianDes 0x00100000 /* Big endian data buffer descriptors RW */
-+#define DmaLittleEndianDesc 0 /* Little endian data descriptors */
-+#define DmaBurstLength32 0x00002000 /* Dma burst length 32 RW */
-+#define DmaBurstLength16 0x00001000 /* Dma burst length 16 */
-+#define DmaBurstLength8 0x00000800 /* Dma burst length 8 */
-+#define DmaBurstLength4 0x00000400 /* Dma burst length 4 */
-+#define DmaBurstLength2 0x00000200 /* Dma burst length 2 */
-+#define DmaBurstLength1 0x00000100 /* Dma burst length 1 */
-+#define DmaBurstLength0 0x00000000 /* Dma burst length 0 */
-+#define DmaBigEndianData 0x00000080 /* Big endian data buffers RW */
-+#define DmaLittleEndianData 0 /* Little endian data buffers 0 */
-+#define DmaDescriptorSkip16 0x00000040 /* number of dwords to skip RW */
-+#define DmaDescriptorSkip8 0x00000020 /* between two unchained descriptors */
-+#define DmaDescriptorSkip4 0x00000010
-+#define DmaDescriptorSkip2 0x00000008
-+#define DmaDescriptorSkip1 0x00000004
-+#define DmaDescriptorSkip0 0
-+#define DmaReceivePriorityOff 0x00000002 /* equal rx and tx priorities RW */
-+#define DmaReceivePriorityOn 0 /* Rx has prioryty over Tx 0 */
-+#define DmaResetOn 0x00000001 /* Reset DMA engine RW */
-+#define DmaResetOff 0
-+
-+/**********************************************************/
-+/* DMA Status register layout */
-+/**********************************************************/
-+#define DmaRxAbort 0x01000000 /* receiver bus abort R 0 */
-+#define DmaTxAbort 0x00800000 /* transmitter bus abort R 0 */
-+#define DmaTxState 0x00700000 /* Transmit process state R 000 */
-+#define DmaTxStopped 0x00000000 /* Stopped */
-+#define DmaTxFetching 0x00100000 /* Running - fetching the descriptor */
-+#define DmaTxWaiting 0x00200000 /* Running - waiting for end of transmission */
-+#define DmaTxReading 0x00300000 /* Running - reading the data from memory */
-+#define DmaTxSuspended 0x00600000 /* Suspended */
-+#define DmaTxClosing 0x00700000 /* Running - closing descriptor */
-+#define DmaRxState 0x000E0000 /* Receive process state 000 */
-+#define DmaRxStopped 0x00000000 /* Stopped */
-+#define DmaRxFetching 0x00020000 /* Running - fetching the descriptor */
-+#define DmaRxChecking 0x00040000 /* Running - checking for end of packet */
-+#define DmaRxWaiting 0x00060000 /* Running - waiting for packet */
-+#define DmaRxSuspended 0x00080000 /* Suspended */
-+#define DmaRxClosing 0x000A0000 /* Running - closing descriptor */
-+#define DmaRxFlushing 0x000C0000 /* Running - flushing the current frame */
-+#define DmaRxQueuing 0x000E0000 /* Running - queuing the recieve frame into host memory */
-+#define DmaIntNormal 0x00010000 /* Normal interrupt summary RW 0 */
-+#define DmaIntAbnormal 0x00008000 /* Abnormal interrupt summary RW 0 */
-+#define DmaIntEarlyRx 0x00004000 /* Early receive interrupt (Normal) RW 0 */
-+#define DmaIntBusError 0x00002000 /* Fatal bus error (Abnormal) RW 0 */
-+#define DmaIntEarlyTx 0x00000400 /* Early transmit interrupt RW 0 */
-+#define DmaIntRxStopped 0x00000100 /* Receive process stopped (Abnormal) RW 0 */
-+#define DmaIntRxNoBuffer 0x00000080 /* Receive buffer unavailable (Abnormal) RW 0*/
-+#define DmaIntRxCompleted 0x00000040 /* Completion of frame reception(Normal) RW 0*/
-+#define DmaIntTxUnderflow 0x00000020 /* Transmit underflow (Abnormal) RW 0 */
-+#define DmaIntTxJabber 0x00000008 /* Transmit Jabber Timeout (Abnormal) RW 0 */
-+#define DmaIntTxNoBuffer 0x00000004 /* Transmit buffer unavailable (Normal) RW 0*/
-+#define DmaIntTxStopped 0x00000002 /* Transmit process stopped (Abnormal) RW 0 */
-+#define DmaIntTxCompleted 0x00000001 /* Transmit completed (Normal) RW 0 */
-+
-+/**********************************************************/
-+/* DMA control register layout */
-+/**********************************************************/
-+#define DmaStoreAndForward 0x00000000 /* Store and forward RW 0 */
-+#define DmaTxThreshCtl256 0x0000c000 /* Non-SF threshold is 256 words */
-+#define DmaTxThreshCtl128 0x00008000 /* Non-SF threshold is 128 words */
-+#define DmaTxThreshCtl064 0x00004000 /* Non-SF threshold is 64 words */
-+#define DmaTxThreshCtl032 0x00000000 /* Non-SF threshold is 32 words */
-+#define DmaTxStart 0x00002000 /* Start/Stop transmission RW 0 */
-+#define DmaTxSecondFrame 0x00000004 /* Operate on second frame RW 0 */
-+#define DmaRxStart 0x00000002 /* Start/Stop reception RW 0 */
-+
-+/**********************************************************/
-+/* DMA interrupt enable register layout */
-+/**********************************************************/
-+#define DmaIeNormal DmaIntNormal /* Normal interrupt enable RW 0 */
-+#define DmaIeAbnormal DmaIntAbnormal /* Abnormal interrupt enable RW 0 */
-+#define DmaIeEarlyRx DmaIntEarlyRx /* Early receive interrupt enable RW 0 */
-+#define DmaIeBusError DmaIntBusError /* Fatal bus error enable RW 0 */
-+#define DmaIeEarlyTx DmaIntEarlyTx /* Early transmit interrupt enable RW 0 */
-+#define DmaIeRxStopped DmaIntRxStopped /* Receive process stopped enable RW 0 */
-+#define DmaIeRxNoBuffer DmaIntRxNoBuffer /* Receive buffer unavailable enable RW 0 */
-+#define DmaIeRxCompleted DmaIntRxCompleted /* Completion of frame reception enable RW 0 */
-+#define DmaIeTxUnderflow DmaIntTxUnderflow /* Transmit underflow enable RW 0 */
-+#define DmaIeTxJabber DmaIntTxJabber /* Transmit jabber timeout RW 0 */
-+#define DmaIeTxNoBuffer DmaIntTxNoBuffer /* Transmit buffer unavailable enable RW 0 */
-+#define DmaIeTxStopped DmaIntTxStopped /* Transmit process stopped enable RW 0 */
-+#define DmaIeTxCompleted DmaIntTxCompleted /* Transmit completed enable RW 0 */
-+
-+/****************************************************************/
-+/* DMA Missed Frame and Buffer Overflow Counter register layout */
-+/****************************************************************/
-+#define DmaRxBufferMissedFrame 0xffff0000 /* cleared on read */
-+#define DmaMissedFrameShift 16
-+#define DmaRxBufferOverflowCnt 0x0000ffff /* cleared on read */
-+#define DmaMissedFrameCountMask 0x0000ffff
-+
-+/**********************************************************/
-+/* DMA Engine descriptor layout */
-+/**********************************************************/
-+/* status word of DMA descriptor */
-+#define DescOwnByDma 0x80000000 /* Descriptor is owned by DMA engine */
-+#define DescFrameLengthMask 0x3FFF0000 /* Receive descriptor frame length */
-+#define DescFrameLengthShift 16
-+#define DescError 0x00008000 /* Error summary bit OR of following bits */
-+#define DescRxTruncated 0x00004000 /* Rx - no more descs for receive frame */
-+#define DescRxLengthError 0x00001000 /* Rx - frame size not matching with length field */
-+#define DescRxRunt 0x00000800 /* Rx - runt frame, damaged by a
-+ collision or term before 64 bytes */
-+#define DescRxMulticast 0x00000400 /* Rx - received frame is multicast */
-+#define DescRxFirst 0x00000200 /* Rx - first descriptor of the frame */
-+#define DescRxLast 0x00000100 /* Rx - last descriptor of the frame */
-+#define DescRxLongFrame 0x00000080 /* Rx - frame is longer than 1518 bytes */
-+#define DescRxLateColl 0x00000040 /* Rx - frame was damaged by a late collision */
-+#define DescRxFrameEther 0x00000020 /* Rx - Frame type Ethernet 802.3*/
-+#define DescRxMiiError 0x00000008 /* Rx - error reported by MII interface */
-+#define DescRxDribbling 0x00000004 /* Rx - frame contains noninteger multiple of 8 bits */
-+#define DescRxCrc 0x00000002 /* Rx - CRC error */
-+#define DescTxTimeout 0x00004000 /* Tx - Transmit jabber timeout */
-+#define DescTxLostCarrier 0x00000800 /* Tx - carrier lost during tramsmission */
-+#define DescTxNoCarrier 0x00000400 /* Tx - no carrier signal from tranceiver */
-+#define DescTxLateCollision 0x00000200 /* Tx - transmission aborted due to collision */
-+#define DescTxExcCollisions 0x00000100 /* Tx - transmission aborted after 16 collisions */
-+#define DescTxHeartbeatFail 0x00000080 /* Tx - heartbeat collision check failure */
-+#define DescTxCollMask 0x00000078 /* Tx - Collision count */
-+#define DescTxCollShift 3
-+#define DescTxExcDeferral 0x00000004 /* Tx - excessive deferral */
-+#define DescTxUnderflow 0x00000002 /* Tx - late data arrival from memory */
-+#define DescTxDeferred 0x00000001 /* Tx - frame transmision deferred */
-+
-+/* length word of DMA descriptor */
-+#define DescTxIntEnable 0x80000000 /* Tx - interrupt on completion */
-+#define DescTxLast 0x40000000 /* Tx - Last segment of the frame */
-+#define DescTxFirst 0x20000000 /* Tx - First segment of the frame */
-+#define DescTxDisableCrc 0x04000000 /* Tx - Add CRC disabled (first segment only) */
-+#define DescEndOfRing 0x02000000 /* End of descriptors ring */
-+#define DescChain 0x01000000 /* Second buffer address is chain address */
-+#define DescTxDisablePadd 0x00800000 /* disable padding */
-+#define DescSize2Mask 0x003FF800 /* Buffer 2 size */
-+#define DescSize2Shift 11
-+#define DescSize1Mask 0x000007FF /* Buffer 1 size */
-+#define DescSize1Shift 0
-+
-+/**********************************************************/
-+/* Initial register values */
-+/**********************************************************/
-+/* Full-duplex mode with perfect filter on */
-+#define MacControlInitFdx \
-+ ( MacFilterOn \
-+ | MacLittleEndian \
-+ | MacHeartBeatOn \
-+ | MacSelectMii \
-+ | MacEnableRxOwn \
-+ | MacLoopbackOff \
-+ | MacFullDuplex \
-+ | MacMulticastFilterOn \
-+ | MacPromiscuousModeOff \
-+ | MacFilterNormal \
-+ | MacBadFramesDisable \
-+ | MacPerfectFilterOn \
-+ | MacHashFilterOff \
-+ | MacLateCollisionOff \
-+ | MacBroadcastEnable \
-+ | MacRetryEnable \
-+ | MacPadStripDisable \
-+ | MacDeferralCheckDisable \
-+ | MacTxEnable \
-+ | MacRxEnable)
-+
-+/* Full-duplex mode */
-+#define MacFlowControlInitFdx \
-+ ( MacControlFrameDisable \
-+ | MacFlowControlEnable)
-+
-+/* Half-duplex mode with perfect filter on */
-+#define MacControlInitHdx \
-+ ( MacFilterOn \
-+ | MacLittleEndian \
-+ | MacHeartBeatOn \
-+ | MacSelectMii \
-+ | MacDisableRxOwn \
-+ | MacLoopbackOff \
-+ | MacHalfDuplex \
-+ | MacMulticastFilterOn \
-+ | MacPromiscuousModeOff \
-+ | MacFilterNormal \
-+ | MacBadFramesDisable \
-+ | MacPerfectFilterOn \
-+ | MacHashFilterOff \
-+ | MacLateCollisionOff \
-+ | MacBroadcastEnable \
-+ | MacRetryEnable \
-+ | MacPadStripDisable \
-+ | MacDeferralCheckDisable \
-+ | MacTxEnable \
-+ | MacRxEnable)
-+
-+/* Half-duplex mode */
-+#define MacFlowControlInitHdx \
-+ ( MacControlFrameDisable \
-+ | MacFlowControlDisable)
-+
-+/* Bus Mode Rx odd half word align */
-+#define DmaBusModeInit \
-+ ( DmaLittleEndianDesc \
-+ | DmaRxAlign16 \
-+ | DmaBurstLength32 \
-+ | DmaBigEndianData \
-+ | DmaDescriptorSkip1 \
-+ | DmaReceivePriorityOn \
-+ | DmaResetOff)
-+
-+#define DmaControlInit (DmaStoreAndForward)
-+
-+/* Interrupt groups */
-+#define DmaIntEnable \
-+ ( DmaIeNormal \
-+ | DmaIeAbnormal \
-+ | DmaIntBusError \
-+ | DmaIntRxStopped \
-+ | DmaIntRxNoBuffer \
-+ | DmaIntRxCompleted \
-+ | DmaIntTxUnderflow \
-+ | DmaIntTxStopped)
-+
-+#define DmaIntDisable 0
-+
-+#define DmaAllIntCauseMask \
-+ ( DmaIeNormal \
-+ | DmaIeAbnormal \
-+ | DmaIntEarlyRx \
-+ | DmaIntBusError \
-+ | DmaIntEarlyTx \
-+ | DmaIntRxStopped \
-+ | DmaIntRxNoBuffer \
-+ | DmaIntRxCompleted \
-+ | DmaIntTxUnderflow \
-+ | DmaIntTxJabber \
-+ | DmaIntTxNoBuffer \
-+ | DmaIntTxStopped \
-+ | DmaIntTxCompleted)
-+
-+#define UnhandledIntrMask \
-+ (DmaAllIntCauseMask \
-+ & ~(DmaIntRxNoBuffer \
-+ | DmaIntTxStopped \
-+ | DmaIntTxJabber \
-+ | DmaIntTxUnderflow \
-+ | DmaIntBusError \
-+ | DmaIntRxCompleted ))
-+
-+#define DescRxErrors \
-+ (DescRxTruncated \
-+ | DescRxRunt \
-+ | DescRxLateColl \
-+ | DescRxMiiError \
-+ | DescRxCrc)
-+
-+#define DescTxErrors \
-+ ( DescTxTimeout \
-+ | DescTxLateCollision \
-+ | DescTxExcCollisions \
-+ | DescTxExcDeferral \
-+ | DescTxUnderflow)
-+
-+/**********************************************************/
-+/* Descriptor Layout */
-+/**********************************************************/
-+#define AE531X_DESC_STATUS 0x00 /* Status offset */
-+#define AE531X_DESC_CTRLEN 0x04 /* Control and Length offset */
-+#define AE531X_DESC_BUFPTR 0x08 /* Buffer pointer offset */
-+#define AE531X_DESC_LNKBUF 0x0c /* Link field offset, or ptr to 2nd buf */
-+#define AE531X_DESC_SWPTR 0x10 /* OS-Dependent software pointer */
-+
-+#define AE531X_DESC_SIZE 0x10 /* 4 words, 16 bytes */
-+#define AE531X_QUEUE_ELE_SIZE 0x14 /* with software pointer extension */
-+
-+/* Accessors to the dma descriptor fields */
-+#define AE531X_DESC_STATUS_GET(ptr) \
-+ *(volatile UINT32 *)((UINT32)(ptr) + AE531X_DESC_STATUS)
-+
-+#define AE531X_DESC_STATUS_SET(ptr, val) \
-+ AE531X_DESC_STATUS_GET(ptr) = (val)
-+
-+#define AE531X_DESC_CTRLEN_GET(ptr) \
-+ *(volatile UINT32 *)((UINT32)ptr + AE531X_DESC_CTRLEN)
-+
-+#define AE531X_DESC_CTRLEN_SET(ptr, val) \
-+ AE531X_DESC_CTRLEN_GET(ptr) = (val)
-+
-+#define AE531X_DESC_BUFPTR_GET(ptr) \
-+ *(volatile UINT32 *)((UINT32)ptr + AE531X_DESC_BUFPTR)
-+
-+#define AE531X_DESC_BUFPTR_SET(ptr,val) \
-+ AE531X_DESC_BUFPTR_GET(ptr) = (UINT32)(val)
-+
-+#define AE531X_DESC_LNKBUF_GET(ptr) \
-+ *(volatile UINT32 *)((UINT32)ptr + AE531X_DESC_LNKBUF)
-+
-+#define AE531X_DESC_LNKBUF_SET(ptr, val) \
-+ AE531X_DESC_LNKBUF_GET(ptr) = (val)
-+
-+#define AE531X_DESC_SWPTR_GET(ptr) \
-+ (void *)(*(volatile UINT32 *) ((UINT32)ptr + AE531X_DESC_SWPTR))
-+
-+#define AE531X_DESC_SWPTR_SET(ptr,val) \
-+ AE531X_DESC_SWPTR_GET(ptr) = (void *)(val)
-+
-+/* Get size of Rx data from desc, in bytes */
-+#define AE531X_DESC_STATUS_RX_SIZE(x) \
-+ (((x) & DescFrameLengthMask) >> DescFrameLengthShift)
-+
-+#endif /* _AE531XREG_H_ */
-diff -urN linux-mips-orig/drivers/net/ath/ar531x.h linux-mips-new/drivers/net/ath/ar531x.h
---- linux-mips-orig/drivers/net/ath/ar531x.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/ar531x.h 2005-12-31 12:33:57.676538368 +0000
-@@ -0,0 +1,1124 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+#ifndef AR531X_H
-+#define AR531X_H 1
-+
-+
-+#ifndef CONFIG_AR5315
-+
-+#include <asm/addrspace.h>
-+
-+/* Address Map */
-+#define AR531X_WLAN0 0x18000000
-+#define AR531X_WLAN1 0x18500000
-+#define AR531X_ENET0 0x18100000
-+#define AR531X_ENET1 0x18200000
-+#define AR531X_SDRAMCTL 0x18300000
-+#define AR531X_FLASHCTL 0x18400000
-+#define AR531X_APBBASE 0x1c000000
-+#define AR531X_FLASH 0x1e000000
-+
-+/*
-+ * AR531X_NUM_ENET_MAC defines the number of ethernet MACs that
-+ * should be considered available. The AR5312 supports 2 enet MACS,
-+ * even though many reference boards only actually use 1 of them
-+ * (i.e. Only MAC 0 is actually connected to an enet PHY or PHY switch.
-+ * The AR2312 supports 1 enet MAC.
-+ */
-+#define AR531X_NUM_ENET_MAC 2
-+
-+/*
-+ * Need these defines to determine true number of ethernet MACs
-+ */
-+#define AR5212_AR5312_REV2 0x0052 /* AR5312 WMAC (AP31) */
-+#define AR5212_AR5312_REV7 0x0057 /* AR5312 WMAC (AP30-040) */
-+#define AR5212_AR2313_REV8 0x0058 /* AR2313 WMAC (AP43-030) */
-+#define AR531X_RADIO_MASK_OFF 0xc8
-+#define AR531X_RADIO0_MASK 0x0003
-+#define AR531X_RADIO1_MASK 0x000c
-+#define AR531X_RADIO1_S 2
-+
-+/*
-+ * AR531X_NUM_WMAC defines the number of Wireless MACs that\
-+ * should be considered available.
-+ */
-+#define AR531X_NUM_WMAC 2
-+
-+/* Reset/Timer Block Address Map */
-+#define AR531X_RESETTMR (AR531X_APBBASE + 0x3000)
-+#define AR531X_TIMER (AR531X_RESETTMR + 0x0000) /* countdown timer */
-+#define AR531X_WD_CTRL (AR531X_RESETTMR + 0x0008) /* watchdog cntrl */
-+#define AR531X_WD_TIMER (AR531X_RESETTMR + 0x000c) /* watchdog timer */
-+#define AR531X_ISR (AR531X_RESETTMR + 0x0010) /* Intr Status Reg */
-+#define AR531X_IMR (AR531X_RESETTMR + 0x0014) /* Intr Mask Reg */
-+#define AR531X_RESET (AR531X_RESETTMR + 0x0020)
-+#define AR5312_CLOCKCTL1 (AR531X_RESETTMR + 0x0064)
-+#define AR5312_SCRATCH (AR531X_RESETTMR + 0x006c)
-+#define AR531X_PROCADDR (AR531X_RESETTMR + 0x0070)
-+#define AR531X_PROC1 (AR531X_RESETTMR + 0x0074)
-+#define AR531X_DMAADDR (AR531X_RESETTMR + 0x0078)
-+#define AR531X_DMA1 (AR531X_RESETTMR + 0x007c)
-+#define AR531X_ENABLE (AR531X_RESETTMR + 0x0080) /* interface enb */
-+#define AR531X_REV (AR531X_RESETTMR + 0x0090) /* revision */
-+
-+/* AR531X_WD_CTRL register bit field definitions */
-+#define AR531X_WD_CTRL_IGNORE_EXPIRATION 0x0000
-+#define AR531X_WD_CTRL_NMI 0x0001
-+#define AR531X_WD_CTRL_RESET 0x0002
-+
-+/* AR531X_ISR register bit field definitions */
-+#define AR531X_ISR_NONE 0x0000
-+#define AR531X_ISR_TIMER 0x0001
-+#define AR531X_ISR_AHBPROC 0x0002
-+#define AR531X_ISR_AHBDMA 0x0004
-+#define AR531X_ISR_GPIO 0x0008
-+#define AR531X_ISR_UART0 0x0010
-+#define AR531X_ISR_UART0DMA 0x0020
-+#define AR531X_ISR_WD 0x0040
-+#define AR531X_ISR_LOCAL 0x0080
-+
-+/* AR531X_RESET register bit field definitions */
-+#define AR531X_RESET_SYSTEM 0x00000001 /* cold reset full system */
-+#define AR531X_RESET_PROC 0x00000002 /* cold reset MIPS core */
-+#define AR531X_RESET_WLAN0 0x00000004 /* cold reset WLAN MAC and BB */
-+#define AR531X_RESET_EPHY0 0x00000008 /* cold reset ENET0 phy */
-+#define AR531X_RESET_EPHY1 0x00000010 /* cold reset ENET1 phy */
-+#define AR531X_RESET_ENET0 0x00000020 /* cold reset ENET0 mac */
-+#define AR531X_RESET_ENET1 0x00000040 /* cold reset ENET1 mac */
-+#define AR531X_RESET_UART0 0x00000100 /* cold reset UART0 (high speed) */
-+#define AR531X_RESET_WLAN1 0x00000200 /* cold reset WLAN MAC/BB */
-+#define AR531X_RESET_APB 0x00000400 /* cold reset APB (ar5312) */
-+#define AR531X_RESET_WARM_PROC 0x00001000 /* warm reset MIPS core */
-+#define AR531X_RESET_WARM_WLAN0_MAC 0x00002000 /* warm reset WLAN0 MAC */
-+#define AR531X_RESET_WARM_WLAN0_BB 0x00004000 /* warm reset WLAN0 BaseBand */
-+#define AR531X_RESET_NMI 0x00010000 /* send an NMI to the processor */
-+#define AR531X_RESET_WARM_WLAN1_MAC 0x00020000 /* warm reset WLAN1 mac */
-+#define AR531X_RESET_WARM_WLAN1_BB 0x00040000 /* warm reset WLAN1 baseband */
-+#define AR531X_RESET_LOCAL_BUS 0x00080000 /* reset local bus */
-+#define AR531X_RESET_WDOG 0x00100000 /* last reset was a watchdog */
-+
-+#define AR531X_RESET_WMAC0_BITS \
-+ AR531X_RESET_WLAN0 |\
-+ AR531X_RESET_WARM_WLAN0_MAC |\
-+ AR531X_RESET_WARM_WLAN0_BB
-+
-+#define AR531X_RESERT_WMAC1_BITS \
-+ AR531X_RESET_WLAN1 |\
-+ AR531X_RESET_WARM_WLAN1_MAC |\
-+ AR531X_RESET_WARM_WLAN1_BB
-+
-+/* AR5312_CLOCKCTL1 register bit field definitions */
-+#define AR5312_CLOCKCTL1_PREDIVIDE_MASK 0x00000030
-+#define AR5312_CLOCKCTL1_PREDIVIDE_SHIFT 4
-+#define AR5312_CLOCKCTL1_MULTIPLIER_MASK 0x00001f00
-+#define AR5312_CLOCKCTL1_MULTIPLIER_SHIFT 8
-+#define AR5312_CLOCKCTL1_DOUBLER_MASK 0x00010000
-+
-+/* Valid for AR5312 and AR2312 */
-+#define AR5312_CLOCKCTL1_PREDIVIDE_MASK 0x00000030
-+#define AR5312_CLOCKCTL1_PREDIVIDE_SHIFT 4
-+#define AR5312_CLOCKCTL1_MULTIPLIER_MASK 0x00001f00
-+#define AR5312_CLOCKCTL1_MULTIPLIER_SHIFT 8
-+#define AR5312_CLOCKCTL1_DOUBLER_MASK 0x00010000
-+
-+/* Valid for AR2313 */
-+#define AR2313_CLOCKCTL1_PREDIVIDE_MASK 0x00003000
-+#define AR2313_CLOCKCTL1_PREDIVIDE_SHIFT 12
-+#define AR2313_CLOCKCTL1_MULTIPLIER_MASK 0x001f0000
-+#define AR2313_CLOCKCTL1_MULTIPLIER_SHIFT 16
-+#define AR2313_CLOCKCTL1_DOUBLER_MASK 0x00000000
-+
-+
-+/* AR531X_ENABLE register bit field definitions */
-+#define AR531X_ENABLE_WLAN0 0x0001
-+#define AR531X_ENABLE_ENET0 0x0002
-+#define AR531X_ENABLE_ENET1 0x0004
-+#define AR531X_ENABLE_UART_AND_WLAN1_PIO 0x0008 /* UART, and WLAN1 PIOs */
-+#define AR531X_ENABLE_WLAN1_DMA 0x0010 /* WLAN1 DMAs */
-+#define AR531X_ENABLE_WLAN1 \
-+ (AR531X_ENABLE_UART_AND_WLAN1_PIO | AR531X_ENABLE_WLAN1_DMA)
-+
-+/* AR531X_REV register bit field definitions */
-+#define AR531X_REV_WMAC_MAJ 0xf000
-+#define AR531X_REV_WMAC_MAJ_S 12
-+#define AR531X_REV_WMAC_MIN 0x0f00
-+#define AR531X_REV_WMAC_MIN_S 8
-+#define AR531X_REV_MAJ 0x00f0
-+#define AR531X_REV_MAJ_S 4
-+#define AR531X_REV_MIN 0x000f
-+#define AR531X_REV_MIN_S 0
-+#define AR531X_REV_CHIP (REV_MAJ|REV_MIN)
-+
-+/* Major revision numbers, bits 7..4 of Revision ID register */
-+#define AR531X_REV_MAJ_AR5312 0x4
-+#define AR531X_REV_MAJ_AR2313 0x5
-+
-+/* Minor revision numbers, bits 3..0 of Revision ID register */
-+#define AR5312_REV_MIN_DUAL 0x0 /* Dual WLAN version */
-+#define AR5312_REV_MIN_SINGLE 0x1 /* Single WLAN version */
-+
-+/* AR531X_FLASHCTL register bit field definitions */
-+#define FLASHCTL_IDCY 0x0000000f /* Idle cycle turn around time */
-+#define FLASHCTL_IDCY_S 0
-+#define FLASHCTL_WST1 0x000003e0 /* Wait state 1 */
-+#define FLASHCTL_WST1_S 5
-+#define FLASHCTL_RBLE 0x00000400 /* Read byte lane enable */
-+#define FLASHCTL_WST2 0x0000f800 /* Wait state 2 */
-+#define FLASHCTL_WST2_S 11
-+#define FLASHCTL_AC 0x00070000 /* Flash address check (added) */
-+#define FLASHCTL_AC_S 16
-+#define FLASHCTL_AC_128K 0x00000000
-+#define FLASHCTL_AC_256K 0x00010000
-+#define FLASHCTL_AC_512K 0x00020000
-+#define FLASHCTL_AC_1M 0x00030000
-+#define FLASHCTL_AC_2M 0x00040000
-+#define FLASHCTL_AC_4M 0x00050000
-+#define FLASHCTL_AC_8M 0x00060000
-+#define FLASHCTL_AC_RES 0x00070000 /* 16MB is not supported */
-+#define FLASHCTL_E 0x00080000 /* Flash bank enable (added) */
-+#define FLASHCTL_BUSERR 0x01000000 /* Bus transfer error status flag */
-+#define FLASHCTL_WPERR 0x02000000 /* Write protect error status flag */
-+#define FLASHCTL_WP 0x04000000 /* Write protect */
-+#define FLASHCTL_BM 0x08000000 /* Burst mode */
-+#define FLASHCTL_MW 0x30000000 /* Memory width */
-+#define FLASHCTL_MWx8 0x00000000 /* Memory width x8 */
-+#define FLASHCTL_MWx16 0x10000000 /* Memory width x16 */
-+#define FLASHCTL_MWx32 0x20000000 /* Memory width x32 (not supported) */
-+#define FLASHCTL_ATNR 0x00000000 /* Access type == no retry */
-+#define FLASHCTL_ATR 0x80000000 /* Access type == retry every */
-+#define FLASHCTL_ATR4 0xc0000000 /* Access type == retry every 4 */
-+
-+/* ARM Flash Controller -- 3 flash banks with either x8 or x16 devices. */
-+#define AR531X_FLASHCTL0 (AR531X_FLASHCTL + 0x00)
-+#define AR531X_FLASHCTL1 (AR531X_FLASHCTL + 0x04)
-+#define AR531X_FLASHCTL2 (AR531X_FLASHCTL + 0x08)
-+
-+/* ARM SDRAM Controller -- just enough to determine memory size */
-+#define AR531X_MEM_CFG1 (AR531X_SDRAMCTL + 0x04)
-+#define MEM_CFG1_AC0 0x00000700 /* bank 0: SDRAM addr check (added) */
-+#define MEM_CFG1_AC0_S 8
-+#define MEM_CFG1_AC1 0x00007000 /* bank 1: SDRAM addr check (added) */
-+#define MEM_CFG1_AC1_S 12
-+
-+/* GPIO Address Map */
-+#define AR531X_GPIO (AR531X_APBBASE + 0x2000)
-+#define AR531X_GPIO_DO (AR531X_GPIO + 0x00) /* output register */
-+#define AR531X_GPIO_DI (AR531X_GPIO + 0x04) /* intput register */
-+#define AR531X_GPIO_CR (AR531X_GPIO + 0x08) /* control register */
-+
-+/* GPIO Control Register bit field definitions */
-+#define GPIO_CR_M(x) (1 << (x)) /* mask for i/o */
-+#define GPIO_CR_O(x) (0 << (x)) /* mask for output */
-+#define GPIO_CR_I(x) (1 << (x)) /* mask for input */
-+#define GPIO_CR_INT(x) (1 << ((x)+8)) /* mask for interrupt */
-+#define GPIO_CR_UART(x) (1 << ((x)+16)) /* uart multiplex */
-+
-+
-+typedef unsigned int AR531X_REG;
-+
-+#define sysRegRead(phys) \
-+ (*(volatile AR531X_REG *)PHYS_TO_K1(phys))
-+
-+#define sysRegWrite(phys, val) \
-+ ((*(volatile AR531X_REG *)PHYS_TO_K1(phys)) = (val))
-+
-+
-+/*
-+ * This is board-specific data that is stored in a "fixed" location in flash.
-+ * It is shared across operating systems, so it should not be changed lightly.
-+ * The main reason we need it is in order to extract the ethernet MAC
-+ * address(es).
-+ */
-+struct ar531x_boarddata {
-+ u32 magic; /* board data is valid */
-+#define AR531X_BD_MAGIC 0x35333131 /* "5311", for all 531x platforms */
-+ u16 cksum; /* checksum (starting with BD_REV 2) */
-+ u16 rev; /* revision of this struct */
-+#define BD_REV 4
-+ char boardName[64]; /* Name of board */
-+ u16 major; /* Board major number */
-+ u16 minor; /* Board minor number */
-+ u32 config; /* Board configuration */
-+#define BD_ENET0 0x00000001 /* ENET0 is stuffed */
-+#define BD_ENET1 0x00000002 /* ENET1 is stuffed */
-+#define BD_UART1 0x00000004 /* UART1 is stuffed */
-+#define BD_UART0 0x00000008 /* UART0 is stuffed (dma) */
-+#define BD_RSTFACTORY 0x00000010 /* Reset factory defaults stuffed */
-+#define BD_SYSLED 0x00000020 /* System LED stuffed */
-+#define BD_EXTUARTCLK 0x00000040 /* External UART clock */
-+#define BD_CPUFREQ 0x00000080 /* cpu freq is valid in nvram */
-+#define BD_SYSFREQ 0x00000100 /* sys freq is set in nvram */
-+#define BD_WLAN0 0x00000200 /* Enable WLAN0 */
-+#define BD_MEMCAP 0x00000400 /* CAP SDRAM @ memCap for testing */
-+#define BD_DISWATCHDOG 0x00000800 /* disable system watchdog */
-+#define BD_WLAN1 0x00001000 /* Enable WLAN1 (ar5212) */
-+#define BD_ISCASPER 0x00002000 /* FLAG for AR2312 */
-+#define BD_WLAN0_2G_EN 0x00004000 /* FLAG for radio0_2G */
-+#define BD_WLAN0_5G_EN 0x00008000 /* FLAG for radio0_2G */
-+#define BD_WLAN1_2G_EN 0x00020000 /* FLAG for radio0_2G */
-+#define BD_WLAN1_5G_EN 0x00040000 /* FLAG for radio0_2G */
-+ u16 resetConfigGpio; /* Reset factory GPIO pin */
-+ u16 sysLedGpio; /* System LED GPIO pin */
-+
-+ u32 cpuFreq; /* CPU core frequency in Hz */
-+ u32 sysFreq; /* System frequency in Hz */
-+ u32 cntFreq; /* Calculated C0_COUNT frequency */
-+
-+ u8 wlan0Mac[6];
-+ u8 enet0Mac[6];
-+ u8 enet1Mac[6];
-+
-+ u16 pciId; /* Pseudo PCIID for common code */
-+ u16 memCap; /* cap bank1 in MB */
-+
-+ /* version 3 */
-+ u8 wlan1Mac[6]; /* (ar5212) */
-+};
-+
-+#else
-+
-+/*
-+ * Add support for Cobra
-+ *
-+ * AR531XPLUSreg.h Register definitions for Atheros AR5311 and AR5312 chipsets.
-+ * - WLAN registers are listed in
-+ * hal/ar5211/ar5211Reg.h
-+ * hal/ar5212/ar5212Reg.h
-+ * - Ethernet registers are listed in ar531xenet.h
-+ * - Standard UART is 16550 compatible.
-+ */
-+
-+
-+/*
-+ * Address map
-+ */
-+#define AR531XPLUS_SDRAM0 0x00000000 /* DRAM */
-+#define AR531XPLUS_SPI_READ 0x08000000 /* SPI FLASH */
-+#define AR531XPLUS_WLAN0 0xB0000000 /* Wireless MMR */
-+#define AR531XPLUS_PCI 0xB0100000 /* PCI MMR */
-+#define AR531XPLUS_SDRAMCTL 0xB0300000 /* SDRAM MMR */
-+#define AR531XPLUS_LOCAL 0xB0400000 /* LOCAL BUS MMR */
-+#define AR531XPLUS_ENET0 0xB0500000 /* ETHERNET MMR */
-+#define AR531XPLUS_DSLBASE 0xB1000000 /* RESET CONTROL MMR */
-+#define AR531XPLUS_UART0 0xB1100003 /* UART MMR */
-+#define AR531XPLUS_SPI 0xB1300000 /* SPI FLASH MMR */
-+#define AR531XPLUS_FLASHBT 0xBfc00000 /* ro boot alias to FLASH */
-+#define AR531XPLUS_RAM1 0x40000000 /* ram alias */
-+#define AR531XPLUS_PCIEXT 0x80000000 /* pci external */
-+#define AR531XPLUS_RAM2 0xc0000000 /* ram alias */
-+#define AR531XPLUS_RAM3 0xe0000000 /* ram alias */
-+
-+#define AR531X_ENET0 AR531XPLUS_ENET0
-+#define AR531X_ENET1 0
-+/*
-+ * Reset Register
-+ */
-+#define AR531XPLUS_COLD_RESET (AR531XPLUS_DSLBASE + 0x0000)
-+
-+/* Cold Reset */
-+#define RESET_COLD_AHB 0x00000001
-+#define RESET_COLD_APB 0x00000002
-+#define RESET_COLD_CPU 0x00000004
-+#define RESET_COLD_CPUWARM 0x00000008
-+#define RESET_SYSTEM (RESET_COLD_CPU | RESET_COLD_APB | RESET_COLD_AHB) /* full system */
-+
-+/* Warm Reset */
-+
-+#define AR531XPLUS_RESET (AR531XPLUS_DSLBASE + 0x0004)
-+#define AR531X_RESET AR531XPLUS_RESET
-+
-+#define RESET_WARM_WLAN0_MAC 0x00000001 /* warm reset WLAN0 MAC */
-+#define RESET_WARM_WLAN0_BB 0x00000002 /* warm reset WLAN0 BaseBand */
-+#define RESET_MPEGTS_RSVD 0x00000004 /* warm reset MPEG-TS */
-+#define RESET_PCIDMA 0x00000008 /* warm reset PCI ahb/dma */
-+#define RESET_MEMCTL 0x00000010 /* warm reset memory controller */
-+#define RESET_LOCAL 0x00000020 /* warm reset local bus */
-+#define RESET_I2C_RSVD 0x00000040 /* warm reset I2C bus */
-+#define RESET_SPI 0x00000080 /* warm reset SPI interface */
-+#define RESET_UART0 0x00000100 /* warm reset UART0 */
-+#define RESET_IR_RSVD 0x00000200 /* warm reset IR interface */
-+#define RESET_EPHY0 0x00000400 /* cold reset ENET0 phy */
-+#define RESET_ENET0 0x00000800 /* cold reset ENET0 mac */
-+
-+#define AR531X_RESET_ENET0 RESET_ENET0
-+#define AR531X_RESET_EPHY0 RESET_EPHY0
-+#define AR531X_RESET_ENET1 0
-+#define AR531X_RESET_EPHY1 0
-+
-+/*
-+ * AHB master arbitration control
-+ */
-+#define AR531XPLUS_AHB_ARB_CTL (AR531XPLUS_DSLBASE + 0x0008)
-+
-+#define ARB_CPU 0x00000001 /* CPU, default */
-+#define ARB_WLAN 0x00000002 /* WLAN */
-+#define ARB_MPEGTS_RSVD 0x00000004 /* MPEG-TS */
-+#define ARB_LOCAL 0x00000008 /* LOCAL */
-+#define ARB_PCI 0x00000010 /* PCI */
-+#define ARB_ETHERNET 0x00000020 /* Ethernet */
-+#define ARB_RETRY 0x00000100 /* retry policy, debug only */
-+
-+/*
-+ * Config Register
-+ */
-+#define AR531XPLUS_ENDIAN_CTL (AR531XPLUS_DSLBASE + 0x000c)
-+
-+#define CONFIG_AHB 0x00000001 /* EC - AHB bridge endianess */
-+#define CONFIG_WLAN 0x00000002 /* WLAN byteswap */
-+#define CONFIG_MPEGTS_RSVD 0x00000004 /* MPEG-TS byteswap */
-+#define CONFIG_PCI 0x00000008 /* PCI byteswap */
-+#define CONFIG_MEMCTL 0x00000010 /* Memory controller endianess */
-+#define CONFIG_LOCAL 0x00000020 /* Local bus byteswap */
-+#define CONFIG_ETHERNET 0x00000040 /* Ethernet byteswap */
-+
-+#define CONFIG_MERGE 0x00000200 /* CPU write buffer merge */
-+#define CONFIG_CPU 0x00000400 /* CPU big endian */
-+#define CONFIG_PCIAHB 0x00000800
-+#define CONFIG_PCIAHB_BRIDGE 0x00001000
-+#define CONFIG_SPI 0x00008000 /* SPI byteswap */
-+#define CONFIG_CPU_DRAM 0x00010000
-+#define CONFIG_CPU_PCI 0x00020000
-+#define CONFIG_CPU_MMR 0x00040000
-+#define CONFIG_BIG 0x00000400
-+
-+
-+/*
-+ * NMI control
-+ */
-+#define AR531XPLUS_NMI_CTL (AR531XPLUS_DSLBASE + 0x0010)
-+
-+#define NMI_EN 1
-+
-+/*
-+ * Revision Register - Initial value is 0x3010 (WMAC 3.0, AR531X 1.0).
-+ */
-+#define AR531XPLUS_SREV (AR531XPLUS_DSLBASE + 0x0014)
-+
-+#define AR531X_REV AR531XPLUS_SREV
-+
-+#define REV_MAJ 0x00f0
-+#define REV_MAJ_S 4
-+#define REV_MIN 0x000f
-+#define REV_MIN_S 0
-+#define REV_CHIP (REV_MAJ|REV_MIN)
-+
-+#define AR531X_REV_MAJ REV_MAJ
-+#define AR531X_REV_MAJ_S REV_MAJ_S
-+#define AR531X_REV_MIN REV_MIN
-+#define AR531X_REV_MIN_S REV_MIN_S
-+#define REV_CHIP (REV_MAJ|REV_MIN)
-+/*
-+ * Need these defines to determine true number of ethernet MACs
-+ */
-+#define AR5212_AR5312_REV2 0x0052 /* AR5312 WMAC (AP31) */
-+#define AR5212_AR5312_REV7 0x0057 /* AR5312 WMAC (AP30-040) */
-+#define AR5212_AR2313_REV8 0x0058 /* AR2313 WMAC (AP43-030) */
-+#define AR531X_RADIO_MASK_OFF 0xc8
-+#define AR531X_RADIO0_MASK 0x0003
-+#define AR531X_RADIO1_MASK 0x000c
-+#define AR531X_RADIO1_S 2
-+
-+/* Major revision numbers, bits 7..4 of Revision ID register */
-+#define AR531X_REV_MAJ_AR5312 0x4
-+#define AR531X_REV_MAJ_AR2313 0x5
-+
-+/*
-+ * AR531X_NUM_ENET_MAC defines the number of ethernet MACs that
-+ * should be considered available. The AR5312 supports 2 enet MACS,
-+ * even though many reference boards only actually use 1 of them
-+ * (i.e. Only MAC 0 is actually connected to an enet PHY or PHY switch.
-+ * The AR2312 supports 1 enet MAC.
-+ */
-+#define AR531X_NUM_ENET_MAC 1
-+
-+/*
-+ * Interface Enable
-+ */
-+#define AR531XPLUS_IF_CTL (AR531XPLUS_DSLBASE + 0x0018)
-+
-+#define IF_MASK 0x00000007
-+#define IF_DISABLED 0
-+#define IF_PCI 1
-+#define IF_TS_LOCAL 2
-+#define IF_ALL 3 /* only for emulation with separate pins */
-+#define IF_LOCAL_HOST 0x00000008
-+#define IF_PCI_HOST 0x00000010
-+#define IF_PCI_INTR 0x00000020
-+#define IF_PCI_CLK_MASK 0x00030000
-+#define IF_PCI_CLK_INPUT 0
-+#define IF_PCI_CLK_OUTPUT_LOW 1
-+#define IF_PCI_CLK_OUTPUT_CLK 2
-+#define IF_PCI_CLK_OUTPUT_HIGH 3
-+#define IF_PCI_CLK_SHIFT 16
-+
-+
-+/* Major revision numbers, bits 7..4 of Revision ID register */
-+#define REV_MAJ_AR5311 0x01
-+#define REV_MAJ_AR5312 0x04
-+#define REV_MAJ_AR5315 0x0B
-+
-+/*
-+ * APB Interrupt control
-+ */
-+
-+#define AR531XPLUS_ISR (AR531XPLUS_DSLBASE + 0x0020)
-+#define AR531XPLUS_IMR (AR531XPLUS_DSLBASE + 0x0024)
-+#define AR531XPLUS_GISR (AR531XPLUS_DSLBASE + 0x0028)
-+
-+#define ISR_UART0 0x0001 /* high speed UART */
-+#define ISR_I2C_RSVD 0x0002 /* I2C bus */
-+#define ISR_SPI 0x0004 /* SPI bus */
-+#define ISR_AHB 0x0008 /* AHB error */
-+#define ISR_APB 0x0010 /* APB error */
-+#define ISR_TIMER 0x0020 /* timer */
-+#define ISR_GPIO 0x0040 /* GPIO */
-+#define ISR_WD 0x0080 /* watchdog */
-+#define ISR_IR_RSVD 0x0100 /* IR */
-+
-+#define IMR_UART0 ISR_UART0
-+#define IMR_I2C_RSVD ISR_I2C_RSVD
-+#define IMR_SPI ISR_SPI
-+#define IMR_AHB ISR_AHB
-+#define IMR_APB ISR_APB
-+#define IMR_TIMER ISR_TIMER
-+#define IMR_GPIO ISR_GPIO
-+#define IMR_WD ISR_WD
-+#define IMR_IR_RSVD ISR_IR_RSVD
-+
-+#define GISR_MISC 0x0001
-+#define GISR_WLAN0 0x0002
-+#define GISR_MPEGTS_RSVD 0x0004
-+#define GISR_LOCALPCI 0x0008
-+#define GISR_WMACPOLL 0x0010
-+#define GISR_TIMER 0x0020
-+#define GISR_ETHERNET 0x0040
-+
-+/*
-+ * Interrupt routing from IO to the processor IP bits
-+ * Define our inter mask and level
-+ */
-+#define AR531XPLUS_INTR_MISCIO SR_IBIT3
-+#define AR531XPLUS_INTR_WLAN0 SR_IBIT4
-+#define AR531XPLUS_INTR_ENET0 SR_IBIT5
-+#define AR531XPLUS_INTR_LOCALPCI SR_IBIT6
-+#define AR531XPLUS_INTR_WMACPOLL SR_IBIT7
-+#define AR531XPLUS_INTR_COMPARE SR_IBIT8
-+
-+/*
-+ * Timers
-+ */
-+#define AR531XPLUS_TIMER (AR531XPLUS_DSLBASE + 0x0030)
-+#define AR531XPLUS_RELOAD (AR531XPLUS_DSLBASE + 0x0034)
-+#define AR531XPLUS_WD (AR531XPLUS_DSLBASE + 0x0038)
-+#define AR531XPLUS_WDC (AR531XPLUS_DSLBASE + 0x003c)
-+
-+#define WDC_RESET 0x00000002 /* reset on watchdog */
-+#define WDC_NMI 0x00000001 /* NMI on watchdog */
-+#define WDC_IGNORE_EXPIRATION 0x00000000
-+
-+/*
-+ * Interface Debug
-+ */
-+#define AR531X_FLASHDBG (AR531X_RESETTMR + 0x0040)
-+#define AR531X_MIIDBG (AR531X_RESETTMR + 0x0044)
-+
-+
-+/*
-+ * CPU Performance Counters
-+ */
-+#define AR531XPLUS_PERFCNT0 (AR531XPLUS_DSLBASE + 0x0048)
-+#define AR531XPLUS_PERFCNT1 (AR531XPLUS_DSLBASE + 0x004c)
-+
-+#define PERF_DATAHIT 0x0001 /* Count Data Cache Hits */
-+#define PERF_DATAMISS 0x0002 /* Count Data Cache Misses */
-+#define PERF_INSTHIT 0x0004 /* Count Instruction Cache Hits */
-+#define PERF_INSTMISS 0x0008 /* Count Instruction Cache Misses */
-+#define PERF_ACTIVE 0x0010 /* Count Active Processor Cycles */
-+#define PERF_WBHIT 0x0020 /* Count CPU Write Buffer Hits */
-+#define PERF_WBMISS 0x0040 /* Count CPU Write Buffer Misses */
-+
-+#define PERF_EB_ARDY 0x0001 /* Count EB_ARdy signal */
-+#define PERF_EB_AVALID 0x0002 /* Count EB_AValid signal */
-+#define PERF_EB_WDRDY 0x0004 /* Count EB_WDRdy signal */
-+#define PERF_EB_RDVAL 0x0008 /* Count EB_RdVal signal */
-+#define PERF_VRADDR 0x0010 /* Count valid read address cycles */
-+#define PERF_VWADDR 0x0020 /* Count valid write address cycles */
-+#define PERF_VWDATA 0x0040 /* Count valid write data cycles */
-+
-+/*
-+ * AHB Error Reporting.
-+ */
-+#define AR531XPLUS_AHB_ERR0 (AR531XPLUS_DSLBASE + 0x0050) /* error */
-+#define AR531XPLUS_AHB_ERR1 (AR531XPLUS_DSLBASE + 0x0054) /* haddr */
-+#define AR531XPLUS_AHB_ERR2 (AR531XPLUS_DSLBASE + 0x0058) /* hwdata */
-+#define AR531XPLUS_AHB_ERR3 (AR531XPLUS_DSLBASE + 0x005c) /* hrdata */
-+#define AR531XPLUS_AHB_ERR4 (AR531XPLUS_DSLBASE + 0x0060) /* status */
-+
-+#define AHB_ERROR_DET 1 /* AHB Error has been detected, */
-+ /* write 1 to clear all bits in ERR0 */
-+#define AHB_ERROR_OVR 2 /* AHB Error overflow has been detected */
-+#define AHB_ERROR_WDT 4 /* AHB Error due to wdt instead of hresp */
-+
-+#define PROCERR_HMAST 0x0000000f
-+#define PROCERR_HMAST_DFLT 0
-+#define PROCERR_HMAST_WMAC 1
-+#define PROCERR_HMAST_ENET 2
-+#define PROCERR_HMAST_PCIENDPT 3
-+#define PROCERR_HMAST_LOCAL 4
-+#define PROCERR_HMAST_CPU 5
-+#define PROCERR_HMAST_PCITGT 6
-+
-+#define PROCERR_HMAST_S 0
-+#define PROCERR_HWRITE 0x00000010
-+#define PROCERR_HSIZE 0x00000060
-+#define PROCERR_HSIZE_S 5
-+#define PROCERR_HTRANS 0x00000180
-+#define PROCERR_HTRANS_S 7
-+#define PROCERR_HBURST 0x00000e00
-+#define PROCERR_HBURST_S 9
-+
-+
-+
-+/*
-+ * Clock Control
-+ */
-+#define AR531XPLUS_PLLC_CTL (AR531XPLUS_DSLBASE + 0x0064)
-+#define AR531XPLUS_PLLV_CTL (AR531XPLUS_DSLBASE + 0x0068)
-+#define AR531XPLUS_CPUCLK (AR531XPLUS_DSLBASE + 0x006c)
-+#define AR531XPLUS_AMBACLK (AR531XPLUS_DSLBASE + 0x0070)
-+#define AR531XPLUS_SYNCCLK (AR531XPLUS_DSLBASE + 0x0074)
-+#define AR531XPLUS_DSL_SLEEP_CTL (AR531XPLUS_DSLBASE + 0x0080)
-+#define AR531XPLUS_DSL_SLEEP_DUR (AR531XPLUS_DSLBASE + 0x0084)
-+
-+/* PLLc Control fields */
-+#define PLLC_REF_DIV_M 0x00000003
-+#define PLLC_REF_DIV_S 0
-+#define PLLC_FDBACK_DIV_M 0x0000007C
-+#define PLLC_FDBACK_DIV_S 2
-+#define PLLC_ADD_FDBACK_DIV_M 0x00000080
-+#define PLLC_ADD_FDBACK_DIV_S 7
-+#define PLLC_CLKC_DIV_M 0x0001c000
-+#define PLLC_CLKC_DIV_S 14
-+#define PLLC_CLKM_DIV_M 0x00700000
-+#define PLLC_CLKM_DIV_S 20
-+
-+/* CPU CLK Control fields */
-+#define CPUCLK_CLK_SEL_M 0x00000003
-+#define CPUCLK_CLK_SEL_S 0
-+#define CPUCLK_CLK_DIV_M 0x0000000c
-+#define CPUCLK_CLK_DIV_S 2
-+
-+/* AMBA CLK Control fields */
-+#define AMBACLK_CLK_SEL_M 0x00000003
-+#define AMBACLK_CLK_SEL_S 0
-+#define AMBACLK_CLK_DIV_M 0x0000000c
-+#define AMBACLK_CLK_DIV_S 2
-+
-+#if defined(COBRA_EMUL)
-+#define AR531XPLUS_AMBA_CLOCK_RATE 20000000
-+#define AR531XPLUS_CPU_CLOCK_RATE 40000000
-+#else
-+#if defined(DEFAULT_PLL)
-+#define AR531XPLUS_AMBA_CLOCK_RATE 40000000
-+#define AR531XPLUS_CPU_CLOCK_RATE 40000000
-+#else
-+#define AR531XPLUS_AMBA_CLOCK_RATE 92000000
-+#define AR531XPLUS_CPU_CLOCK_RATE 184000000
-+#endif /* ! DEFAULT_PLL */
-+#endif /* ! COBRA_EMUL */
-+
-+#define AR531XPLUS_UART_CLOCK_RATE AR531XPLUS_AMBA_CLOCK_RATE
-+#define AR531XPLUS_SDRAM_CLOCK_RATE AR531XPLUS_AMBA_CLOCK_RATE
-+
-+/*
-+ * The UART computes baud rate as:
-+ * baud = clock / (16 * divisor)
-+ * where divisor is specified as a High Byte (DLM) and a Low Byte (DLL).
-+ */
-+#define DESIRED_BAUD_RATE 38400
-+
-+/*
-+ * The WATCHDOG value is computed as
-+ * 10 seconds * AR531X_WATCHDOG_CLOCK_RATE
-+ */
-+#define DESIRED_WATCHDOG_SECONDS 10
-+#define AR531X_WATCHDOG_TIME \
-+ (DESIRED_WATCHDOG_SECONDS * AR531X_WATCHDOG_CLOCK_RATE)
-+
-+
-+#define CLOCKCTL_UART0 0x0010 /* enable UART0 external clock */
-+
-+
-+ /*
-+ * Applicable "PCICFG" bits for WLAN(s). Assoc status and LED mode.
-+ */
-+#define AR531X_PCICFG (AR531X_RESETTMR + 0x00b0)
-+#define ASSOC_STATUS_M 0x00000003
-+#define ASSOC_STATUS_NONE 0
-+#define ASSOC_STATUS_PENDING 1
-+#define ASSOC_STATUS_ASSOCIATED 2
-+#define LED_MODE_M 0x0000001c
-+#define LED_BLINK_THRESHOLD_M 0x000000e0
-+#define LED_SLOW_BLINK_MODE 0x00000100
-+
-+/*
-+ * GPIO
-+ */
-+
-+#define AR531XPLUS_GPIO_DI (AR531XPLUS_DSLBASE + 0x0088)
-+#define AR531XPLUS_GPIO_DO (AR531XPLUS_DSLBASE + 0x0090)
-+#define AR531XPLUS_GPIO_CR (AR531XPLUS_DSLBASE + 0x0098)
-+#define AR531XPLUS_GPIO_INT (AR531XPLUS_DSLBASE + 0x00a0)
-+
-+#define GPIO_CR_M(x) (1 << (x)) /* mask for i/o */
-+#define GPIO_CR_O(x) (1 << (x)) /* output */
-+#define GPIO_CR_I(x) (0 << (x)) /* input */
-+
-+#define GPIO_INT(x,Y) ((x) << (8 * (Y))) /* interrupt enable */
-+#define GPIO_INT_M(Y) ((0x3F) << (8 * (Y))) /* mask for int */
-+#define GPIO_INT_LVL(x,Y) ((x) << (8 * (Y) + 6)) /* interrupt level */
-+#define GPIO_INT_LVL_M(Y) ((0x3) << (8 * (Y) + 6)) /* mask for int level */
-+
-+#define AR531XPLUS_RESET_GPIO 5
-+#define AR531XPLUS_NUM_GPIO 22
-+
-+
-+/*
-+ * PCI Clock Control
-+ */
-+
-+#define AR531XPLUS_PCICLK (AR531XPLUS_DSLBASE + 0x00a4)
-+
-+#define PCICLK_INPUT_M 0x3
-+#define PCICLK_INPUT_S 0
-+
-+#define PCICLK_PLLC_CLKM 0
-+#define PCICLK_PLLC_CLKM1 1
-+#define PCICLK_PLLC_CLKC 2
-+#define PCICLK_REF_CLK 3
-+
-+#define PCICLK_DIV_M 0xc
-+#define PCICLK_DIV_S 2
-+
-+#define PCICLK_IN_FREQ 0
-+#define PCICLK_IN_FREQ_DIV_6 1
-+#define PCICLK_IN_FREQ_DIV_8 2
-+#define PCICLK_IN_FREQ_DIV_10 3
-+
-+/*
-+ * Observation Control Register
-+ */
-+#define AR531XPLUS_OCR (AR531XPLUS_DSLBASE + 0x00b0)
-+#define OCR_GPIO0_IRIN 0x0040
-+#define OCR_GPIO1_IROUT 0x0080
-+#define OCR_GPIO3_RXCLR 0x0200
-+
-+/*
-+ * General Clock Control
-+ */
-+
-+#define AR531XPLUS_MISCCLK (AR531XPLUS_DSLBASE + 0x00b4)
-+#define MISCCLK_PLLBYPASS_EN 0x00000001
-+#define MISCCLK_PROCREFCLK 0x00000002
-+
-+/*
-+ * SDRAM Controller
-+ * - No read or write buffers are included.
-+ */
-+#define AR531XPLUS_MEM_CFG (AR531XPLUS_SDRAMCTL + 0x00)
-+#define AR531XPLUS_MEM_CTRL (AR531XPLUS_SDRAMCTL + 0x0c)
-+#define AR531XPLUS_MEM_REF (AR531XPLUS_SDRAMCTL + 0x10)
-+
-+#define SDRAM_DATA_WIDTH_M 0x00006000
-+#define SDRAM_DATA_WIDTH_S 13
-+
-+#define SDRAM_COL_WIDTH_M 0x00001E00
-+#define SDRAM_COL_WIDTH_S 9
-+
-+#define SDRAM_ROW_WIDTH_M 0x000001E0
-+#define SDRAM_ROW_WIDTH_S 5
-+
-+#define SDRAM_BANKADDR_BITS_M 0x00000018
-+#define SDRAM_BANKADDR_BITS_S 3
-+
-+
-+/*
-+ * SDRAM Memory Refresh (MEM_REF) value is computed as:
-+ * MEMCTL_SREFR = (Tr * hclk_freq) / R
-+ * where Tr is max. time of refresh of any single row
-+ * R is number of rows in the DRAM
-+ * For most 133MHz SDRAM parts, Tr=64ms, R=4096 or 8192
-+ */
-+#if defined(COBRA_EMUL)
-+#define AR531XPLUS_SDRAM_MEMORY_REFRESH_VALUE 0x96
-+#else
-+#if defined(DEFAULT_PLL)
-+#define AR531XPLUS_SDRAM_MEMORY_REFRESH_VALUE 0x200
-+#else
-+#define AR531XPLUS_SDRAM_MEMORY_REFRESH_VALUE 0x61a
-+#endif /* ! DEFAULT_PLL */
-+#endif
-+
-+#if defined(AR531XPLUS)
-+
-+#define AR531XPLUS_SDRAM_DDR_SDRAM 0 /* Not DDR SDRAM */
-+#define AR531XPLUS_SDRAM_DATA_WIDTH 16 /* bits */
-+#define AR531XPLUS_SDRAM_COL_WIDTH 8
-+#define AR531XPLUS_SDRAM_ROW_WIDTH 12
-+
-+#else
-+
-+#define AR531XPLUS_SDRAM_DDR_SDRAM 0 /* Not DDR SDRAM */
-+#define AR531XPLUS_SDRAM_DATA_WIDTH 16
-+#define AR531XPLUS_SDRAM_COL_WIDTH 8
-+#define AR531XPLUS_SDRAM_ROW_WIDTH 12
-+
-+#endif /* ! AR531XPLUS */
-+
-+/*
-+ * SPI Flash Interface Registers
-+ */
-+
-+#define AR531XPLUS_SPI_CTL (AR531XPLUS_SPI + 0x00)
-+#define AR531XPLUS_SPI_OPCODE (AR531XPLUS_SPI + 0x04)
-+#define AR531XPLUS_SPI_DATA (AR531XPLUS_SPI + 0x08)
-+
-+#define SPI_CTL_START 0x00000100
-+#define SPI_CTL_BUSY 0x00010000
-+#define SPI_CTL_TXCNT_MASK 0x0000000f
-+#define SPI_CTL_RXCNT_MASK 0x000000f0
-+#define SPI_CTL_TX_RX_CNT_MASK 0x000000ff
-+#define SPI_CTL_SIZE_MASK 0x00060000
-+
-+#define SPI_CTL_CLK_SEL_MASK 0x03000000
-+#define SPI_OPCODE_MASK 0x000000ff
-+
-+/*
-+ * PCI-MAC Configuration registers
-+ */
-+#define PCI_MAC_RC (AR531XPLUS_PCI + 0x4000)
-+#define PCI_MAC_SCR (AR531XPLUS_PCI + 0x4004)
-+#define PCI_MAC_INTPEND (AR531XPLUS_PCI + 0x4008)
-+#define PCI_MAC_SFR (AR531XPLUS_PCI + 0x400C)
-+#define PCI_MAC_PCICFG (AR531XPLUS_PCI + 0x4010)
-+#define PCI_MAC_SREV (AR531XPLUS_PCI + 0x4020)
-+
-+#define PCI_MAC_RC_MAC 0x00000001
-+#define PCI_MAC_RC_BB 0x00000002
-+
-+#define PCI_MAC_SCR_SLMODE_M 0x00030000
-+#define PCI_MAC_SCR_SLMODE_S 16
-+#define PCI_MAC_SCR_SLM_FWAKE 0
-+#define PCI_MAC_SCR_SLM_FSLEEP 1
-+#define PCI_MAC_SCR_SLM_NORMAL 2
-+
-+#define PCI_MAC_SFR_SLEEP 0x00000001
-+
-+#define PCI_MAC_PCICFG_SPWR_DN 0x00010000
-+
-+
-+
-+
-+/*
-+ * PCI Bus Interface Registers
-+ */
-+#define AR531XPLUS_PCI_1MS_REG (AR531XPLUS_PCI + 0x0008)
-+#define AR531XPLUS_PCI_1MS_MASK 0x3FFFF /* # of AHB clk cycles in 1ms */
-+
-+#define AR531XPLUS_PCI_MISC_CONFIG (AR531XPLUS_PCI + 0x000c)
-+#define AR531XPLUS_PCIMISC_TXD_EN 0x00000001 /* Enable TXD for fragments */
-+#define AR531XPLUS_PCIMISC_CFG_SEL 0x00000002 /* mem or config cycles */
-+#define AR531XPLUS_PCIMISC_GIG_MASK 0x0000000C /* bits 31-30 for pci req */
-+#define AR531XPLUS_PCIMISC_RST_MODE 0x00000030
-+#define AR531XPLUS_PCIRST_INPUT 0x00000000 /* 4:5=0 rst is input */
-+#define AR531XPLUS_PCIRST_LOW 0x00000010 /* 4:5=1 rst to GND */
-+#define AR531XPLUS_PCIRST_HIGH 0x00000020 /* 4:5=2 rst to VDD */
-+#define AR531XPLUS_PCIGRANT_EN 0x00000000 /* 6:7=0 early grant en */
-+#define AR531XPLUS_PCIGRANT_FRAME 0x00000040 /* 6:7=1 grant waits 4 frame */
-+#define AR531XPLUS_PCIGRANT_IDLE 0x00000080 /* 6:7=2 grant waits 4 idle */
-+#define AR531XPLUS_PCIGRANT_GAP 0x00000000 /* 6:7=2 grant waits 4 idle */
-+#define AR531XPLUS_PCICACHE_DIS 0x00001000 /* PCI external access cache disable */
-+
-+#define AR531XPLUS_PCI_OUT_TSTAMP (AR531XPLUS_PCI + 0x0010)
-+
-+#define AR531XPLUS_PCI_UNCACHE_CFG (AR531XPLUS_PCI + 0x0014)
-+
-+#define AR531XPLUS_PCI_IN_EN (AR531XPLUS_PCI + 0x0100)
-+#define AR531XPLUS_PCI_IN_EN0 0x01 /* Enable chain 0 */
-+#define AR531XPLUS_PCI_IN_EN1 0x02 /* Enable chain 1 */
-+#define AR531XPLUS_PCI_IN_EN2 0x04 /* Enable chain 2 */
-+#define AR531XPLUS_PCI_IN_EN3 0x08 /* Enable chain 3 */
-+
-+#define AR531XPLUS_PCI_IN_DIS (AR531XPLUS_PCI + 0x0104)
-+#define AR531XPLUS_PCI_IN_DIS0 0x01 /* Disable chain 0 */
-+#define AR531XPLUS_PCI_IN_DIS1 0x02 /* Disable chain 1 */
-+#define AR531XPLUS_PCI_IN_DIS2 0x04 /* Disable chain 2 */
-+#define AR531XPLUS_PCI_IN_DIS3 0x08 /* Disable chain 3 */
-+
-+#define AR531XPLUS_PCI_IN_PTR (AR531XPLUS_PCI + 0x0200)
-+
-+#define AR531XPLUS_PCI_OUT_EN (AR531XPLUS_PCI + 0x0400)
-+#define AR531XPLUS_PCI_OUT_EN0 0x01 /* Enable chain 0 */
-+
-+#define AR531XPLUS_PCI_OUT_DIS (AR531XPLUS_PCI + 0x0404)
-+#define AR531XPLUS_PCI_OUT_DIS0 0x01 /* Disable chain 0 */
-+
-+#define AR531XPLUS_PCI_OUT_PTR (AR531XPLUS_PCI + 0x0408)
-+
-+#define AR531XPLUS_PCI_INT_STATUS (AR531XPLUS_PCI + 0x0500) /* write one to clr */
-+#define AR531XPLUS_PCI_TXINT 0x00000001 /* Desc In Completed */
-+#define AR531XPLUS_PCI_TXOK 0x00000002 /* Desc In OK */
-+#define AR531XPLUS_PCI_TXERR 0x00000004 /* Desc In ERR */
-+#define AR531XPLUS_PCI_TXEOL 0x00000008 /* Desc In End-of-List */
-+#define AR531XPLUS_PCI_RXINT 0x00000010 /* Desc Out Completed */
-+#define AR531XPLUS_PCI_RXOK 0x00000020 /* Desc Out OK */
-+#define AR531XPLUS_PCI_RXERR 0x00000040 /* Desc Out ERR */
-+#define AR531XPLUS_PCI_RXEOL 0x00000080 /* Desc Out EOL */
-+#define AR531XPLUS_PCI_TXOOD 0x00000200 /* Desc In Out-of-Desc */
-+#define AR531XPLUS_PCI_MASK 0x0000FFFF /* Desc Mask */
-+#define AR531XPLUS_PCI_EXT_INT 0x02000000
-+#define AR531XPLUS_PCI_ABORT_INT 0x04000000
-+
-+#define AR531XPLUS_PCI_INT_MASK (AR531XPLUS_PCI + 0x0504) /* same as INT_STATUS */
-+
-+#define AR531XPLUS_PCI_INTEN_REG (AR531XPLUS_PCI + 0x0508)
-+#define AR531XPLUS_PCI_INT_DISABLE 0x00 /* disable pci interrupts */
-+#define AR531XPLUS_PCI_INT_ENABLE 0x01 /* enable pci interrupts */
-+
-+#define AR531XPLUS_PCI_HOST_IN_EN (AR531XPLUS_PCI + 0x0800)
-+#define AR531XPLUS_PCI_HOST_IN_DIS (AR531XPLUS_PCI + 0x0804)
-+#define AR531XPLUS_PCI_HOST_IN_PTR (AR531XPLUS_PCI + 0x0810)
-+#define AR531XPLUS_PCI_HOST_OUT_EN (AR531XPLUS_PCI + 0x0900)
-+#define AR531XPLUS_PCI_HOST_OUT_DIS (AR531XPLUS_PCI + 0x0904)
-+#define AR531XPLUS_PCI_HOST_OUT_PTR (AR531XPLUS_PCI + 0x0908)
-+
-+
-+/*
-+ * Local Bus Interface Registers
-+ */
-+#define AR531XPLUS_LB_CONFIG (AR531XPLUS_LOCAL + 0x0000)
-+#define AR531XPLUS_LBCONF_OE 0x00000001 /* =1 OE is low-true */
-+#define AR531XPLUS_LBCONF_CS0 0x00000002 /* =1 first CS is low-true */
-+#define AR531XPLUS_LBCONF_CS1 0x00000004 /* =1 2nd CS is low-true */
-+#define AR531XPLUS_LBCONF_RDY 0x00000008 /* =1 RDY is low-true */
-+#define AR531XPLUS_LBCONF_WE 0x00000010 /* =1 Write En is low-true */
-+#define AR531XPLUS_LBCONF_WAIT 0x00000020 /* =1 WAIT is low-true */
-+#define AR531XPLUS_LBCONF_ADS 0x00000040 /* =1 Adr Strobe is low-true */
-+#define AR531XPLUS_LBCONF_MOT 0x00000080 /* =0 Intel, =1 Motorola */
-+#define AR531XPLUS_LBCONF_8CS 0x00000100 /* =1 8 bits CS, 0= 16bits */
-+#define AR531XPLUS_LBCONF_8DS 0x00000200 /* =1 8 bits Data S, 0=16bits */
-+#define AR531XPLUS_LBCONF_ADS_EN 0x00000400 /* =1 Enable ADS */
-+#define AR531XPLUS_LBCONF_ADR_OE 0x00000800 /* =1 Adr cap on OE, WE or DS */
-+#define AR531XPLUS_LBCONF_ADDT_MUX 0x00001000 /* =1 Adr and Data share bus */
-+#define AR531XPLUS_LBCONF_DATA_OE 0x00002000 /* =1 Data cap on OE, WE, DS */
-+#define AR531XPLUS_LBCONF_16DATA 0x00004000 /* =1 Data is 16 bits wide */
-+#define AR531XPLUS_LBCONF_SWAPDT 0x00008000 /* =1 Byte swap data */
-+#define AR531XPLUS_LBCONF_SYNC 0x00010000 /* =1 Bus synchronous to clk */
-+#define AR531XPLUS_LBCONF_INT 0x00020000 /* =1 Intr is low true */
-+#define AR531XPLUS_LBCONF_INT_CTR0 0x00000000 /* GND high-Z, Vdd is high-Z */
-+#define AR531XPLUS_LBCONF_INT_CTR1 0x00040000 /* GND drive, Vdd is high-Z */
-+#define AR531XPLUS_LBCONF_INT_CTR2 0x00080000 /* GND high-Z, Vdd drive */
-+#define AR531XPLUS_LBCONF_INT_CTR3 0x000C0000 /* GND drive, Vdd drive */
-+#define AR531XPLUS_LBCONF_RDY_WAIT 0x00100000 /* =1 RDY is negative of WAIT */
-+#define AR531XPLUS_LBCONF_INT_PULSE 0x00200000 /* =1 Interrupt is a pulse */
-+#define AR531XPLUS_LBCONF_ENABLE 0x00400000 /* =1 Falcon respond to LB */
-+
-+#define AR531XPLUS_LB_CLKSEL (AR531XPLUS_LOCAL + 0x0004)
-+#define AR531XPLUS_LBCLK_EXT 0x0001 /* use external clk for lb */
-+
-+#define AR531XPLUS_LB_1MS (AR531XPLUS_LOCAL + 0x0008)
-+#define AR531XPLUS_LB1MS_MASK 0x3FFFF /* # of AHB clk cycles in 1ms */
-+
-+#define AR531XPLUS_LB_MISCCFG (AR531XPLUS_LOCAL + 0x000C)
-+#define AR531XPLUS_LBM_TXD_EN 0x00000001 /* Enable TXD for fragments */
-+#define AR531XPLUS_LBM_RX_INTEN 0x00000002 /* Enable LB ints on RX ready */
-+#define AR531XPLUS_LBM_MBOXWR_INTEN 0x00000004 /* Enable LB ints on mbox wr */
-+#define AR531XPLUS_LBM_MBOXRD_INTEN 0x00000008 /* Enable LB ints on mbox rd */
-+#define AR531XPLUS_LMB_DESCSWAP_EN 0x00000010 /* Byte swap desc enable */
-+#define AR531XPLUS_LBM_TIMEOUT_MASK 0x00FFFF80
-+#define AR531XPLUS_LBM_TIMEOUT_SHFT 7
-+#define AR531XPLUS_LBM_PORTMUX 0x07000000
-+
-+
-+#define AR531XPLUS_LB_RXTSOFF (AR531XPLUS_LOCAL + 0x0010)
-+
-+#define AR531XPLUS_LB_TX_CHAIN_EN (AR531XPLUS_LOCAL + 0x0100)
-+#define AR531XPLUS_LB_TXEN_0 0x01
-+#define AR531XPLUS_LB_TXEN_1 0x02
-+#define AR531XPLUS_LB_TXEN_2 0x04
-+#define AR531XPLUS_LB_TXEN_3 0x08
-+
-+#define AR531XPLUS_LB_TX_CHAIN_DIS (AR531XPLUS_LOCAL + 0x0104)
-+#define AR531XPLUS_LB_TX_DESC_PTR (AR531XPLUS_LOCAL + 0x0200)
-+
-+#define AR531XPLUS_LB_RX_CHAIN_EN (AR531XPLUS_LOCAL + 0x0400)
-+#define AR531XPLUS_LB_RXEN 0x01
-+
-+#define AR531XPLUS_LB_RX_CHAIN_DIS (AR531XPLUS_LOCAL + 0x0404)
-+#define AR531XPLUS_LB_RX_DESC_PTR (AR531XPLUS_LOCAL + 0x0408)
-+
-+#define AR531XPLUS_LB_INT_STATUS (AR531XPLUS_LOCAL + 0x0500)
-+#define AR531XPLUS_INT_TX_DESC 0x0001
-+#define AR531XPLUS_INT_TX_OK 0x0002
-+#define AR531XPLUS_INT_TX_ERR 0x0004
-+#define AR531XPLUS_INT_TX_EOF 0x0008
-+#define AR531XPLUS_INT_RX_DESC 0x0010
-+#define AR531XPLUS_INT_RX_OK 0x0020
-+#define AR531XPLUS_INT_RX_ERR 0x0040
-+#define AR531XPLUS_INT_RX_EOF 0x0080
-+#define AR531XPLUS_INT_TX_TRUNC 0x0100
-+#define AR531XPLUS_INT_TX_STARVE 0x0200
-+#define AR531XPLUS_INT_LB_TIMEOUT 0x0400
-+#define AR531XPLUS_INT_LB_ERR 0x0800
-+#define AR531XPLUS_INT_MBOX_WR 0x1000
-+#define AR531XPLUS_INT_MBOX_RD 0x2000
-+
-+/* Bit definitions for INT MASK are the same as INT_STATUS */
-+#define AR531XPLUS_LB_INT_MASK (AR531XPLUS_LOCAL + 0x0504)
-+
-+#define AR531XPLUS_LB_INT_EN (AR531XPLUS_LOCAL + 0x0508)
-+#define AR531XPLUS_LB_MBOX (AR531XPLUS_LOCAL + 0x0600)
-+
-+
-+
-+/*
-+ * IR Interface Registers
-+ */
-+#define AR531XPLUS_IR_PKTDATA (AR531XPLUS_IR + 0x0000)
-+
-+#define AR531XPLUS_IR_PKTLEN (AR531XPLUS_IR + 0x07fc) /* 0 - 63 */
-+
-+#define AR531XPLUS_IR_CONTROL (AR531XPLUS_IR + 0x0800)
-+#define AR531XPLUS_IRCTL_TX 0x00000000 /* use as tranmitter */
-+#define AR531XPLUS_IRCTL_RX 0x00000001 /* use as receiver */
-+#define AR531XPLUS_IRCTL_SAMPLECLK_MASK 0x00003ffe /* Sample clk divisor mask */
-+#define AR531XPLUS_IRCTL_SAMPLECLK_SHFT 1
-+#define AR531XPLUS_IRCTL_OUTPUTCLK_MASK 0x03ffc000 /* Output clk divisor mask */
-+#define AR531XPLUS_IRCTL_OUTPUTCLK_SHFT 14
-+
-+#define AR531XPLUS_IR_STATUS (AR531XPLUS_IR + 0x0804)
-+#define AR531XPLUS_IRSTS_RX 0x00000001 /* receive in progress */
-+#define AR531XPLUS_IRSTS_TX 0x00000002 /* transmit in progress */
-+
-+#define AR531XPLUS_IR_CONFIG (AR531XPLUS_IR + 0x0808)
-+#define AR531XPLUS_IRCFG_INVIN 0x00000001 /* invert input polarity */
-+#define AR531XPLUS_IRCFG_INVOUT 0x00000002 /* invert output polarity */
-+#define AR531XPLUS_IRCFG_SEQ_START_WIN_SEL 0x00000004 /* 1 => 28, 0 => 7 */
-+#define AR531XPLUS_IRCFG_SEQ_START_THRESH 0x000000f0 /* */
-+#define AR531XPLUS_IRCFG_SEQ_END_UNIT_SEL 0x00000100 /* */
-+#define AR531XPLUS_IRCFG_SEQ_END_UNIT_THRESH 0x00007e00 /* */
-+#define AR531XPLUS_IRCFG_SEQ_END_WIN_SEL 0x00008000 /* */
-+#define AR531XPLUS_IRCFG_SEQ_END_WIN_THRESH 0x001f0000 /* */
-+#define AR531XPLUS_IRCFG_NUM_BACKOFF_WORDS 0x01e00000 /* */
-+
-+/*
-+ * PCI memory constants: Memory area 1 and 2 are the same size -
-+ * (twice the PCI_TLB_PAGE_SIZE). The definition of
-+ * CPU_TO_PCI_MEM_SIZE is coupled with the TLB setup routine
-+ * sysLib.c/sysTlbInit(), in that it assumes that 2 pages of size
-+ * PCI_TLB_PAGE_SIZE are set up in the TLB for each PCI memory space.
-+ */
-+
-+#define CPU_TO_PCI_MEM_BASE1 0xE0000000
-+#define CPU_TO_PCI_MEM_SIZE1 (2*PCI_TLB_PAGE_SIZE)
-+
-+
-+/* TLB attributes for PCI transactions */
-+
-+#define PCI_MMU_PAGEMASK 0x00003FFF
-+#define MMU_PAGE_UNCACHED 0x00000010
-+#define MMU_PAGE_DIRTY 0x00000004
-+#define MMU_PAGE_VALID 0x00000002
-+#define MMU_PAGE_GLOBAL 0x00000001
-+#define PCI_MMU_PAGEATTRIB (MMU_PAGE_UNCACHED|MMU_PAGE_DIRTY|\
-+ MMU_PAGE_VALID|MMU_PAGE_GLOBAL)
-+#define PCI_MEMORY_SPACE1_VIRT 0xE0000000 /* Used for non-prefet mem */
-+#define PCI_MEMORY_SPACE1_PHYS 0x80000000
-+#define PCI_TLB_PAGE_SIZE 0x01000000
-+#define TLB_HI_MASK 0xFFFFE000
-+#define TLB_LO_MASK 0x3FFFFFFF
-+#define PAGEMASK_SHIFT 11
-+#define TLB_LO_SHIFT 6
-+
-+#define PCI_MAX_LATENCY 0xFFF /* Max PCI latency */
-+
-+#define HOST_PCI_DEV_ID 3
-+#define HOST_PCI_MBAR0 0x10000000
-+#define HOST_PCI_MBAR1 0x20000000
-+#define HOST_PCI_MBAR2 0x30000000
-+
-+#define HOST_PCI_SDRAM_BASEADDR HOST_PCI_MBAR1
-+#define PCI_DEVICE_MEM_SPACE 0x800000
-+
-+
-+typedef unsigned int AR531X_REG;
-+
-+#define sysRegRead(phys) \
-+ (*(volatile AR531X_REG *)PHYS_TO_K1(phys))
-+
-+#define sysRegWrite(phys, val) \
-+ ((*(volatile AR531X_REG *)PHYS_TO_K1(phys)) = (val))
-+
-+
-+
-+/*
-+ * This is board-specific data that is stored in a "fixed" location in flash.
-+ * It is shared across operating systems, so it should not be changed lightly.
-+ * The main reason we need it is in order to extract the ethernet MAC
-+ * address(es).
-+ */
-+struct ar531x_boarddata {
-+ u32 magic; /* board data is valid */
-+#define AR531X_BD_MAGIC 0x35333131 /* "5311", for all 531x platforms */
-+ u16 cksum; /* checksum (starting with BD_REV 2) */
-+ u16 rev; /* revision of this struct */
-+#define BD_REV 4
-+ char boardName[64]; /* Name of board */
-+ u16 major; /* Board major number */
-+ u16 minor; /* Board minor number */
-+ u32 config; /* Board configuration */
-+#define BD_ENET0 0x00000001 /* ENET0 is stuffed */
-+#define BD_ENET1 0x00000002 /* ENET1 is stuffed */
-+#define BD_UART1 0x00000004 /* UART1 is stuffed */
-+#define BD_UART0 0x00000008 /* UART0 is stuffed (dma) */
-+#define BD_RSTFACTORY 0x00000010 /* Reset factory defaults stuffed */
-+#define BD_SYSLED 0x00000020 /* System LED stuffed */
-+#define BD_EXTUARTCLK 0x00000040 /* External UART clock */
-+#define BD_CPUFREQ 0x00000080 /* cpu freq is valid in nvram */
-+#define BD_SYSFREQ 0x00000100 /* sys freq is set in nvram */
-+#define BD_WLAN0 0x00000200 /* Enable WLAN0 */
-+#define BD_MEMCAP 0x00000400 /* CAP SDRAM @ memCap for testing */
-+#define BD_DISWATCHDOG 0x00000800 /* disable system watchdog */
-+#define BD_WLAN1 0x00001000 /* Enable WLAN1 (ar5212) */
-+#define BD_ISCASPER 0x00002000 /* FLAG for AR2312 */
-+#define BD_WLAN0_2G_EN 0x00004000 /* FLAG for radio0_2G */
-+#define BD_WLAN0_5G_EN 0x00008000 /* FLAG for radio0_2G */
-+#define BD_WLAN1_2G_EN 0x00020000 /* FLAG for radio0_2G */
-+#define BD_WLAN1_5G_EN 0x00040000 /* FLAG for radio0_2G */
-+ u16 resetConfigGpio; /* Reset factory GPIO pin */
-+ u16 sysLedGpio; /* System LED GPIO pin */
-+
-+ u32 cpuFreq; /* CPU core frequency in Hz */
-+ u32 sysFreq; /* System frequency in Hz */
-+ u32 cntFreq; /* Calculated C0_COUNT frequency */
-+
-+ u8 wlan0Mac[6];
-+ u8 enet0Mac[6];
-+ u8 enet1Mac[6];
-+
-+ u16 pciId; /* Pseudo PCIID for common code */
-+ u16 memCap; /* cap bank1 in MB */
-+
-+ /* version 3 */
-+ u8 wlan1Mac[6]; /* (ar5212) */
-+};
-+
-+#endif
-+
-+#endif /* AR531X_H */
-diff -urN linux-mips-orig/drivers/net/ath/ar531xlnx.h linux-mips-new/drivers/net/ath/ar531xlnx.h
---- linux-mips-orig/drivers/net/ath/ar531xlnx.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/ar531xlnx.h 2005-12-31 12:33:57.676538368 +0000
-@@ -0,0 +1,137 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * This file contains definitions needed in order to compile
-+ * AR531X products for linux. Definitions that are largely
-+ * AR531X-specific and independent of operating system belong
-+ * in ar531x.h rather than this file.
-+ */
-+#ifndef __AR531XLNX_H
-+#define __AR531XLNX_H
-+#include "ar531x.h"
-+
-+#define MIPS_CPU_IRQ_BASE 0x00
-+#define AR531X_HIGH_PRIO 0x10
-+#define AR531X_MISC_IRQ_BASE 0x20
-+#define AR531X_GPIO_IRQ_BASE 0x30
-+
-+/* Software's idea of interrupts handled by "CPU Interrupt Controller" */
-+#if CONFIG_AR5315
-+#define AR531X_IRQ_NONE MIPS_CPU_IRQ_BASE+0
-+#define AR531X_IRQ_MISC_INTRS MIPS_CPU_IRQ_BASE+2 /* C0_CAUSE: 0x0400 */
-+#define AR531X_IRQ_WLAN0_INTRS MIPS_CPU_IRQ_BASE+3 /* C0_CAUSE: 0x0800 */
-+#define AR531X_IRQ_ENET0_INTRS MIPS_CPU_IRQ_BASE+4 /* C0_CAUSE: 0x1000 */
-+#define AR531X_IRQ_LCBUS_PCI MIPS_CPU_IRQ_BASE+6 /* C0_CAUSE: 0x4000 */
-+#define AR531X_IRQ_WLAN0_POLL MIPS_CPU_IRQ_BASE+6 /* C0_CAUSE: 0x4000 */
-+#define AR531X_IRQ_CPU_CLOCK MIPS_CPU_IRQ_BASE+7 /* C0_CAUSE: 0x8000 */
-+#else
-+#define AR531X_IRQ_NONE MIPS_CPU_IRQ_BASE+0
-+#define AR531X_IRQ_WLAN0_INTRS MIPS_CPU_IRQ_BASE+2 /* C0_CAUSE: 0x0400 */
-+#define AR531X_IRQ_ENET0_INTRS MIPS_CPU_IRQ_BASE+3 /* C0_CAUSE: 0x0800 */
-+#define AR531X_IRQ_ENET1_INTRS MIPS_CPU_IRQ_BASE+4 /* C0_CAUSE: 0x1000 */
-+#define AR531X_IRQ_WLAN1_INTRS MIPS_CPU_IRQ_BASE+5 /* C0_CAUSE: 0x2000 */
-+#define AR531X_IRQ_MISC_INTRS MIPS_CPU_IRQ_BASE+6 /* C0_CAUSE: 0x4000 */
-+#define AR531X_IRQ_CPU_CLOCK MIPS_CPU_IRQ_BASE+7 /* C0_CAUSE: 0x8000 */
-+#endif
-+
-+/* Miscellaneous interrupts, which share IP6 or IP2 */
-+#define AR531X_MISC_IRQ_NONE AR531X_MISC_IRQ_BASE+0
-+#define AR531X_MISC_IRQ_TIMER AR531X_MISC_IRQ_BASE+1
-+#define AR531X_MISC_IRQ_AHB_PROC AR531X_MISC_IRQ_BASE+2
-+#define AR531X_MISC_IRQ_AHB_DMA AR531X_MISC_IRQ_BASE+3
-+#define AR531X_MISC_IRQ_GPIO AR531X_MISC_IRQ_BASE+4
-+#define AR531X_MISC_IRQ_UART0 AR531X_MISC_IRQ_BASE+5
-+#define AR531X_MISC_IRQ_UART0_DMA AR531X_MISC_IRQ_BASE+6
-+#define AR531X_MISC_IRQ_WATCHDOG AR531X_MISC_IRQ_BASE+7
-+#define AR531X_MISC_IRQ_LOCAL AR531X_MISC_IRQ_BASE+8
-+#define AR531X_MISC_IRQ_COUNT 9
-+
-+/* GPIO Interrupts [0..7], share AR531X_MISC_IRQ_GPIO */
-+#define AR531X_GPIO_IRQ_NONE AR531X_MISC_IRQ_BASE+0
-+#define AR531X_GPIO_IRQ(n) AR531X_MISC_IRQ_BASE+(n)+1
-+#define AR531X_GPIO_IRQ_COUNT 9
-+
-+#define PHYS_TO_K1(physaddr) KSEG1ADDR(physaddr)
-+#define PHYS_TO_K0(physaddr) KSEG0ADDR(physaddr)
-+#define UNMAPPED_TO_PHYS(vaddr) PHYSADDR(vaddr)
-+#define IS_UNMAPPED_VADDR(vaddr) \
-+ ((KSEGX(vaddr) == KSEG0) || (KSEGX(vaddr) == KSEG1))
-+
-+/* IOCTL commands for /proc/ar531x */
-+#define AR531X_CTRL_DO_BREAKPOINT 1
-+#define AR531X_CTRL_DO_MADWIFI 2
-+
-+/*
-+ * Definitions for operating system portability.
-+ * These are vxWorks-->Linux translations.
-+ */
-+#define LOCAL static
-+#define BOOL int
-+#define TRUE 1
-+#define FALSE 0
-+#define UINT8 u8
-+#define UINT16 u16
-+#define UINT32 u32
-+#define PRINTF printk
-+#if /* DEBUG */ 1
-+#define DEBUG_PRINTF printk
-+#define printf printk
-+#define INLINE
-+#else
-+DEBUG_PRINTF while (0) printk
-+#define INLINE inline
-+#endif
-+#define sysUDelay(usecs) udelay(usecs)
-+#define sysMsDelay(msecs) mdelay(msecs)
-+typedef volatile UINT8 *VIRT_ADDR;
-+#define MALLOC(sz) kmalloc(sz, GFP_KERNEL)
-+#define MALLOC_NOSLEEP(sz) kmalloc(sz, GFP_ATOMIC)
-+#define FREE(ptr) kfree((void *)ptr)
-+#define BSP_BUG() do { printk("kernel BSP BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0)
-+#define BSP_BUG_ON(condition) do { if (unlikely((condition)!=0)) BSP_BUG(); } while(0)
-+#define ASSERT(x) BSP_BUG_ON(!(x))
-+
-+extern struct ar531x_boarddata *ar531x_board_configuration;
-+extern char *ar531x_radio_configuration;
-+extern char *enet_mac_address_get(int MACUnit);
-+
-+extern void kgdbInit(void);
-+extern int kgdbEnabled(void);
-+extern void breakpoint(void);
-+extern int kgdbInterrupt(void);
-+extern unsigned int ar531x_cpu_frequency(void);
-+extern unsigned int ar531x_sys_frequency(void);
-+
-+/* GPIO support */
-+extern struct irqaction spurious_gpio;
-+extern unsigned int gpioIntMask;
-+extern void ar531x_gpio_intr_init(int irq_base);
-+extern void ar531x_gpio_ctrl_output(int gpio);
-+extern void ar531x_gpio_ctrl_input(int gpio);
-+extern void ar531x_gpio_set(int gpio, int val);
-+extern int ar531x_gpio_get(int gpio);
-+extern void ar531x_gpio_intr_enable(unsigned int irq);
-+extern void ar531x_gpio_intr_disable(unsigned int irq);
-+
-+/* Watchdog Timer support */
-+extern int watchdog_start(unsigned int milliseconds);
-+extern int watchdog_stop(void);
-+extern int watchdog_is_enabled(void);
-+extern unsigned int watchdog_min_timer_reached(void);
-+extern void watchdog_notify_alive(void);
-+
-+#define A_DATA_CACHE_INVAL(start, length) \
-+ dma_cache_inv((UINT32)(start),(length))
-+
-+#define sysWbFlush() mb()
-+
-+#define intDisable(x) cli()
-+#define intEnable(x) sti()
-+
-+#endif /* __AR531XLNX_H */
-diff -urN linux-mips-orig/drivers/net/ath/ipPhy.c linux-mips-new/drivers/net/ath/ipPhy.c
---- linux-mips-orig/drivers/net/ath/ipPhy.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/ipPhy.c 2005-12-31 12:33:57.677538216 +0000
-@@ -0,0 +1,833 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * Manage the ICPLUS ethernet PHY.
-+ *
-+ * All definitions in this file are operating system independent!
-+ */
-+
-+#if defined(linux)
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/delay.h>
-+
-+#include "ar531xlnx.h"
-+#endif
-+
-+#include "ae531xmac.h"
-+#include "ae531xreg.h"
-+#include "ipPhy.h"
-+
-+/* PHY selections and access functions */
-+
-+typedef enum {
-+ PHY_SRCPORT_INFO,
-+ PHY_PORTINFO_SIZE,
-+} PHY_CAP_TYPE;
-+
-+typedef enum {
-+ PHY_SRCPORT_NONE,
-+ PHY_SRCPORT_VLANTAG,
-+ PHY_SRCPORT_TRAILER,
-+} PHY_SRCPORT_TYPE;
-+
-+#ifdef DEBUG
-+#define DRV_DEBUG 1
-+#endif
-+#define DRV_DEBUG 1
-+
-+#if DRV_DEBUG
-+#define DRV_DEBUG_PHYERROR 0x00000001
-+#define DRV_DEBUG_PHYCHANGE 0x00000002
-+#define DRV_DEBUG_PHYSETUP 0x00000004
-+
-+int ipPhyDebug = DRV_DEBUG_PHYERROR;
-+
-+#define DRV_LOG(FLG, X0, X1, X2, X3, X4, X5, X6) \
-+{ \
-+ if (ipPhyDebug & (FLG)) { \
-+ logMsg(X0, X1, X2, X3, X4, X5, X6); \
-+ } \
-+}
-+
-+#define DRV_MSG(x,a,b,c,d,e,f) \
-+ logMsg(x,a,b,c,d,e,f)
-+
-+#define DRV_PRINT(FLG, X) \
-+{ \
-+ if (ipPhyDebug & (FLG)) { \
-+ printf X; \
-+ } \
-+}
-+
-+#else /* !DRV_DEBUG */
-+#define DRV_LOG(DBG_SW, X0, X1, X2, X3, X4, X5, X6)
-+#define DRV_MSG(x,a,b,c,d,e,f)
-+#define DRV_PRINT(DBG_SW,X)
-+#endif
-+
-+#define IP_LAN_PORT_VLAN 1
-+#define IP_WAN_PORT_VLAN 2
-+
-+#define ENET_UNIT_DEFAULT 0
-+
-+/*
-+ * Track per-PHY port information.
-+ */
-+typedef struct {
-+ BOOL isEnetPort; /* normal enet port */
-+ BOOL isPhyAlive; /* last known state of link */
-+ int ethUnit; /* MAC associated with this phy port */
-+ UINT32 phyBase;
-+ UINT32 phyAddr; /* PHY registers associated with this phy port */
-+ UINT32 VLANTableSetting; /* Value to be written to VLAN table */
-+} ipPhyInfo_t;
-+
-+/*
-+ * Per-PHY information, indexed by PHY unit number.
-+ */
-+ipPhyInfo_t ipPhyInfo[] = {
-+ /*
-+ * On AP30/AR5312, all PHYs are associated with MAC0.
-+ * AP30/AR5312's MAC1 isn't used for anything.
-+ * CONFIG_VENETDEV==1 (router) configuration:
-+ * Ports 0,1,2, and 3 are "LAN ports"
-+ * Port 4 is a WAN port
-+ * Port 5 connects to MAC0 in the AR5312
-+ * CONFIG_VENETDEV==0 (bridge) configuration:
-+ * Ports 0,1,2,3,4 are "LAN ports"
-+ * Port 5 connects to the MAC0 in the AR5312
-+ */
-+ {TRUE, /* phy port 0 -- LAN port 0 */
-+ FALSE,
-+ ENET_UNIT_DEFAULT,
-+ (UINT32) (PHYS_TO_K1(AR531X_ENET0)+AE531X_PHY_OFFSET),
-+ IP_PHY0_ADDR,
-+ IP_LAN_PORT_VLAN
-+ },
-+
-+ {TRUE, /* phy port 1 -- LAN port 1 */
-+ FALSE,
-+ ENET_UNIT_DEFAULT,
-+ (UINT32) (PHYS_TO_K1(AR531X_ENET0)+AE531X_PHY_OFFSET),
-+ IP_PHY1_ADDR,
-+ IP_LAN_PORT_VLAN
-+ },
-+
-+ {TRUE, /* phy port 2 -- LAN port 2 */
-+ FALSE,
-+ ENET_UNIT_DEFAULT,
-+ (UINT32) (PHYS_TO_K1(AR531X_ENET0)+AE531X_PHY_OFFSET),
-+ IP_PHY2_ADDR,
-+ IP_LAN_PORT_VLAN
-+ },
-+
-+ {TRUE, /* phy port 3 -- LAN port 3 */
-+ FALSE,
-+ ENET_UNIT_DEFAULT,
-+ (UINT32) (PHYS_TO_K1(AR531X_ENET0)+AE531X_PHY_OFFSET),
-+ IP_PHY3_ADDR,
-+ IP_LAN_PORT_VLAN
-+ },
-+
-+ {TRUE, /* phy port 4 -- WAN port or LAN port 4 */
-+ FALSE,
-+ ENET_UNIT_DEFAULT,
-+ (UINT32) (PHYS_TO_K1(AR531X_ENET0)+AE531X_PHY_OFFSET),
-+ IP_PHY4_ADDR,
-+ IP_LAN_PORT_VLAN /* Send to all ports */
-+ },
-+
-+ {FALSE, /* phy port 5 -- CPU port (no RJ45 connector) */
-+ TRUE,
-+ ENET_UNIT_DEFAULT,
-+ (UINT32) (PHYS_TO_K1(AR531X_ENET0)+AE531X_PHY_OFFSET),
-+ 0x00,
-+ IP_LAN_PORT_VLAN /* Send to all ports */
-+ },
-+};
-+
-+#define IP_GLOBALREGBASE ((UINT32) (PHYS_TO_K1(AR531X_ENET0)))
-+
-+#define IP_PHY_MAX (sizeof(ipPhyInfo) / sizeof(ipPhyInfo[0]))
-+
-+/* Range of valid PHY IDs is [MIN..MAX] */
-+#define IP_ID_MIN 0
-+#define IP_ID_MAX (IP_PHY_MAX-1)
-+
-+/* Convenience macros to access myPhyInfo */
-+#define IP_IS_ENET_PORT(phyUnit) (ipPhyInfo[phyUnit].isEnetPort)
-+#define IP_IS_PHY_ALIVE(phyUnit) (ipPhyInfo[phyUnit].isPhyAlive)
-+#define IP_ETHUNIT(phyUnit) (ipPhyInfo[phyUnit].ethUnit)
-+#define IP_PHYBASE(phyUnit) (ipPhyInfo[phyUnit].phyBase)
-+#define IP_PHYADDR(phyUnit) (ipPhyInfo[phyUnit].phyAddr)
-+#define IP_VLAN_TABLE_SETTING(phyUnit) (ipPhyInfo[phyUnit].VLANTableSetting)
-+
-+
-+#define IP_IS_ETHUNIT(phyUnit, ethUnit) \
-+ (IP_IS_ENET_PORT(phyUnit) && \
-+ IP_ETHUNIT(phyUnit) == (ethUnit))
-+
-+/* Forward references */
-+BOOL ip_phyIsLinkAlive(int phyUnit);
-+LOCAL void ip_VLANInit(int ethUnit);
-+LOCAL void ip_verifyReady(int ethUnit);
-+#if DEBUG
-+void ip_phyShow(int phyUnit);
-+void ip_phySet(int phyUnit, UINT32 regnum, UINT32 value);
-+void ip_globalSet(UINT32 phyAddr, UINT32 regnum, UINT32 value);
-+#endif
-+
-+/******************************************************************************
-+*
-+* ip_phyIsLinkAlive - test to see if the specified link is alive
-+*
-+* RETURNS:
-+* TRUE --> link is alive
-+* FALSE --> link is down
-+*/
-+BOOL
-+ip_phyIsLinkAlive(int phyUnit)
-+{
-+ UINT16 phyHwStatus;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ phyBase = IP_PHYBASE(phyUnit);
-+ phyAddr = IP_PHYADDR(phyUnit);
-+
-+ phyHwStatus = phyRegRead(phyBase, phyAddr, IP_PHY_STATUS);
-+
-+ if (phyHwStatus & IP_STATUS_LINK_PASS) {
-+ return TRUE;
-+ } else {
-+ return FALSE;
-+ }
-+}
-+
-+/******************************************************************************
-+*
-+* ip_VLANInit - initialize "port-based VLANs" for the specified enet unit.
-+*/
-+LOCAL void
-+ip_VLANInit(int ethUnit)
-+{
-+ int phyUnit;
-+ UINT32 phyBase;
-+ UINT32 phyReg;
-+
-+ phyBase = IP_GLOBALREGBASE;
-+
-+ for (phyUnit=0; phyUnit < IP_PHY_MAX; phyUnit++) {
-+ if (IP_ETHUNIT(phyUnit) != ethUnit) {
-+ continue;
-+ }
-+ phyRegWrite(phyBase, IP_GLOBAL_PHY29_ADDR,
-+ IP_GLOBAL_PHY29_24_REG + ((phyUnit == 5) ? (phyUnit + 1) : phyUnit),
-+ IP_VLAN_TABLE_SETTING(phyUnit));
-+
-+ /* Send all packets to all ports */
-+ phyReg = phyRegRead(phyBase, IP_GLOBAL_PHY30_ADDR, IP_GLOBAL_PHY30_1_REG);
-+ phyReg = phyReg | ((1 << phyUnit) << IP_VLAN1_OUTPUT_PORT_MASK_S);
-+ phyRegWrite(phyBase, IP_GLOBAL_PHY30_ADDR, IP_GLOBAL_PHY30_1_REG, phyReg);
-+ }
-+ phyReg = phyRegRead(phyBase, IP_GLOBAL_PHY30_ADDR, IP_GLOBAL_PHY30_9_REG);
-+ phyReg = phyReg | TAG_VLAN_ENABLE;
-+ phyReg = phyReg & ~VID_INDX_SEL_M;
-+ phyRegWrite(phyBase, IP_GLOBAL_PHY30_ADDR, IP_GLOBAL_PHY30_9_REG, phyReg);
-+
-+}
-+
-+
-+LOCAL void
-+ip_verifyReady(int ethUnit)
-+{
-+ int phyUnit;
-+ UINT32 phyBase = 0;
-+ UINT32 phyAddr;
-+ UINT16 phyID1;
-+ UINT16 phyID2;
-+
-+ /*
-+ * The first read to the Phy port registers always fails and
-+ * returns 0. So get things started with a bogus read.
-+ */
-+ for (phyUnit=0; phyUnit < IP_PHY_MAX; phyUnit++) {
-+ if (!IP_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+
-+ phyBase = IP_PHYBASE(phyUnit);
-+ phyAddr = IP_PHYADDR(phyUnit);
-+
-+ phyID1 = phyRegRead(phyBase, phyAddr, IP_PHY_ID1); /* returns 0 */
-+ break;
-+ }
-+
-+ for (phyUnit=0; phyUnit < IP_PHY_MAX; phyUnit++) {
-+ if (!IP_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+
-+ /*******************/
-+ /* Verify phy port */
-+ /*******************/
-+ phyBase = IP_PHYBASE(phyUnit);
-+ phyAddr = IP_PHYADDR(phyUnit);
-+
-+ phyID1 = phyRegRead(phyBase, phyAddr, IP_PHY_ID1);
-+ if (phyID1 != IP_PHY_ID1_EXPECTATION) {
-+ DRV_PRINT(DRV_DEBUG_PHYERROR,
-+ ("Invalid PHY ID1 for enet%d port%d. Expected 0x%04x, read 0x%04x\n",
-+ ethUnit,
-+ phyUnit,
-+ IP_PHY_ID1_EXPECTATION,
-+ phyID1));
-+ return;
-+ }
-+
-+ phyID2 = phyRegRead(phyBase, phyAddr, IP_PHY_ID2);
-+ if ((phyID2 & IP_OUI_LSB_MASK) != IP_OUI_LSB_EXPECTATION) {
-+ DRV_PRINT(DRV_DEBUG_PHYERROR,
-+ ("Invalid PHY ID2 for enet%d port %d. Expected 0x%04x, read 0x%04x\n",
-+ ethUnit,
-+ phyUnit,
-+ IP_OUI_LSB_EXPECTATION,
-+ phyID2));
-+ return;
-+ }
-+
-+ DRV_PRINT(DRV_DEBUG_PHYSETUP,
-+ ("Found PHY enet%d port%d: model 0x%x revision 0x%x\n",
-+ ethUnit,
-+ phyUnit,
-+ (phyID2 & IP_MODEL_NUM_MASK) >> IP_MODEL_NUM_SHIFT,
-+ (phyID2 & IP_REV_NUM_MASK) >> IP_REV_NUM_SHIFT));
-+
-+ }
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ip_phySetup - reset and setup the PHY associated with
-+* the specified MAC unit number.
-+*
-+* Resets the associated PHY port.
-+*
-+* RETURNS:
-+* TRUE --> associated PHY is alive
-+* FALSE --> no LINKs on this ethernet unit
-+*/
-+
-+BOOL
-+ip_phySetup(int ethUnit, UINT32 _phyBase)
-+{
-+ int phyUnit;
-+ UINT16 phyHwStatus;
-+ UINT16 timeout;
-+ int liveLinks = 0;
-+ UINT32 phyBase = 0;
-+ BOOL foundPhy = FALSE;
-+ UINT32 phyAddr;
-+
-+ /* Reset PHYs*/
-+ for (phyUnit=0; phyUnit < IP_PHY_MAX; phyUnit++) {
-+ if (!IP_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+
-+ phyBase = IP_PHYBASE(phyUnit);
-+ phyAddr = IP_PHYADDR(phyUnit);
-+
-+ phyRegWrite(phyBase, phyAddr, IP_PHY_CONTROL,
-+ IP_CTRL_SOFTWARE_RESET);
-+ }
-+ /*
-+ * After the phy is reset, it takes a little while before
-+ * it can respond properly.
-+ */
-+ sysMsDelay(300);
-+ /* Verify that the switch is what we think it is, and that it's ready */
-+ ip_verifyReady(ethUnit);
-+
-+ /* See if there's any configuration data for this enet */
-+ for (phyUnit=0; phyUnit < IP_PHY_MAX; phyUnit++) {
-+ if (IP_ETHUNIT(phyUnit) != ethUnit) {
-+ continue;
-+ }
-+
-+ phyBase = IP_PHYBASE(phyUnit);
-+ foundPhy = TRUE;
-+ break;
-+ }
-+
-+ if (!foundPhy) {
-+ return FALSE; /* No PHY's configured for this ethUnit */
-+ }
-+
-+#ifdef COBRA_TODO
-+ /* Initialize global switch settings */
-+
-+ /* Initialize the aging time */
-+
-+ /* Set the learning properties */
-+#endif
-+
-+ /* start auto negogiation on each phy */
-+ for (phyUnit=0; phyUnit < IP_PHY_MAX; phyUnit++) {
-+ if (!IP_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+
-+ phyBase = IP_PHYBASE(phyUnit);
-+ phyAddr = IP_PHYADDR(phyUnit);
-+
-+ phyRegWrite(phyBase, phyAddr, IP_AUTONEG_ADVERT,
-+ IP_ADVERTISE_ALL);
-+ phyRegWrite(phyBase, phyAddr, IP_PHY_CONTROL,
-+ IP_CTRL_AUTONEGOTIATION_ENABLE | IP_CTRL_START_AUTONEGOTIATION);
-+ }
-+
-+ /*
-+ * Wait up to .75 seconds for ALL associated PHYs to finish
-+ * autonegotiation. The only way we get out of here sooner is
-+ * if ALL PHYs are connected AND finish autonegotiation.
-+ */
-+ timeout=5;
-+ for (phyUnit=0; (phyUnit < IP_PHY_MAX) /*&& (timeout > 0) */; phyUnit++) {
-+ if (!IP_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+ for (;;) {
-+ phyBase = IP_PHYBASE(phyUnit);
-+ phyAddr = IP_PHYADDR(phyUnit);
-+
-+ phyHwStatus = phyRegRead(phyBase, phyAddr, IP_PHY_STATUS);
-+
-+ if (IP_AUTONEG_DONE(phyHwStatus)) {
-+ DRV_PRINT(DRV_DEBUG_PHYSETUP,
-+ ("Port %d, Neg Success\n", phyUnit));
-+ break;
-+ }
-+ if (timeout == 0) {
-+ DRV_PRINT(DRV_DEBUG_PHYSETUP,
-+ ("Port %d, Negogiation timeout\n", phyUnit));
-+ break;
-+ }
-+ if (--timeout == 0) {
-+ DRV_PRINT(DRV_DEBUG_PHYSETUP,
-+ ("Port %d, Negogiation timeout\n", phyUnit));
-+ break;
-+ }
-+
-+ sysMsDelay(150);
-+ }
-+ }
-+
-+ /*
-+ * All PHYs have had adequate time to autonegotiate.
-+ * Now initialize software status.
-+ *
-+ * It's possible that some ports may take a bit longer
-+ * to autonegotiate; but we can't wait forever. They'll
-+ * get noticed by mv_phyCheckStatusChange during regular
-+ * polling activities.
-+ */
-+ for (phyUnit=0; phyUnit < IP_PHY_MAX; phyUnit++) {
-+ if (!IP_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+
-+ if (ip_phyIsLinkAlive(phyUnit)) {
-+ liveLinks++;
-+ IP_IS_PHY_ALIVE(phyUnit) = TRUE;
-+ } else {
-+ IP_IS_PHY_ALIVE(phyUnit) = FALSE;
-+ }
-+
-+ DRV_PRINT(DRV_DEBUG_PHYSETUP,
-+ ("eth%d: Phy Status=%4.4x\n",
-+ ethUnit,
-+ phyRegRead(IP_PHYBASE(phyUnit),
-+ IP_PHYADDR(phyUnit),
-+ IP_PHY_STATUS)));
-+ }
-+#if 0
-+ /* XXX Divy. Disable WAN/LAN seggregation. See bug 17866 */
-+ ip_VLANInit(ethUnit);
-+#endif
-+ return (liveLinks > 0);
-+}
-+
-+/******************************************************************************
-+*
-+* ip_phyIsDuplexFull - Determines whether the phy ports associated with the
-+* specified device are FULL or HALF duplex.
-+*
-+* RETURNS:
-+* 1 --> FULL
-+* 0 --> HALF
-+*/
-+int
-+ip_phyIsFullDuplex(int ethUnit)
-+{
-+ int phyUnit;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+ UINT16 phyHwStatus;
-+
-+ for (phyUnit=0; phyUnit < IP_PHY_MAX; phyUnit++) {
-+ if (!IP_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+
-+ if (ip_phyIsLinkAlive(phyUnit)) {
-+
-+ phyBase = IP_PHYBASE(phyUnit);
-+ phyAddr = IP_PHYADDR(phyUnit);
-+
-+ phyHwStatus = phyRegRead(phyBase, phyAddr, IP_LINK_PARTNER_ABILITY);
-+ printk("ipPhy.c: phyHwStatus 0x%x\n",phyHwStatus);
-+ if ((phyHwStatus & IP_LINK_100BASETX_FULL_DUPLEX) ||
-+ (phyHwStatus & IP_LINK_10BASETX_FULL_DUPLEX)) {
-+ return TRUE;
-+ }
-+ }
-+ return -1;
-+ }
-+
-+ return FALSE;
-+
-+}
-+
-+
-+/******************************************************************************
-+*
-+* ip_phyIsSpeed100 - Determines the speed of phy ports associated with the
-+* specified device.
-+*
-+* RETURNS:
-+* TRUE --> 100Mbit
-+* FALSE --> 10Mbit
-+*/
-+
-+BOOL
-+ip_phyIsSpeed100(int ethUnit)
-+{
-+ int phyUnit;
-+ UINT16 phyHwStatus;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ for (phyUnit=0; phyUnit < IP_PHY_MAX; phyUnit++) {
-+ if (!IP_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+
-+ if (ip_phyIsLinkAlive(phyUnit)) {
-+
-+ phyBase = IP_PHYBASE(phyUnit);
-+ phyAddr = IP_PHYADDR(phyUnit);
-+
-+ phyHwStatus = phyRegRead(phyBase, phyAddr, IP_LINK_PARTNER_ABILITY);
-+
-+ if (phyHwStatus & IP_LINK_100BASETX) {
-+ return TRUE;
-+ }
-+ }
-+ }
-+
-+ return FALSE;
-+}
-+
-+/*****************************************************************************
-+*
-+* ip_phyCheckStatusChange -- checks for significant changes in PHY state.
-+*
-+* A "significant change" is:
-+* dropped link (e.g. ethernet cable unplugged) OR
-+* autonegotiation completed + link (e.g. ethernet cable plugged in)
-+*
-+* When a PHY is plugged in, phyLinkGained is called.
-+* When a PHY is unplugged, phyLinkLost is called.
-+*/
-+
-+void
-+ip_phyCheckStatusChange(int ethUnit)
-+{
-+
-+ int phyUnit;
-+ UINT16 phyHwStatus;
-+ ipPhyInfo_t *lastStatus;
-+ int linkCount = 0;
-+ int lostLinks = 0;
-+ int gainedLinks = 0;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ for (phyUnit=0; phyUnit < IP_PHY_MAX; phyUnit++) {
-+ if (!IP_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+
-+ phyBase = IP_PHYBASE(phyUnit);
-+ phyAddr = IP_PHYADDR(phyUnit);
-+
-+ lastStatus = &ipPhyInfo[phyUnit];
-+ phyHwStatus = phyRegRead(phyBase, phyAddr, IP_PHY_STATUS);
-+
-+ if (lastStatus->isPhyAlive) { /* last known link status was ALIVE */
-+ /* See if we've lost link */
-+ if (phyHwStatus & IP_STATUS_LINK_PASS) {
-+ linkCount++;
-+ } else {
-+ lostLinks++;
-+#ifdef COBRA_TODO
-+ mv_flushATUDB(phyUnit);
-+#endif
-+ DRV_PRINT(DRV_DEBUG_PHYCHANGE,("\nenet%d port%d down\n",
-+ ethUnit, phyUnit));
-+ lastStatus->isPhyAlive = FALSE;
-+ }
-+ } else { /* last known link status was DEAD */
-+ /* Check for AutoNegotiation complete */
-+ if (IP_AUTONEG_DONE(phyHwStatus)) {
-+ gainedLinks++;
-+ linkCount++;
-+ DRV_PRINT(DRV_DEBUG_PHYCHANGE,("\nenet%d port%d up\n",
-+ ethUnit, phyUnit));
-+ lastStatus->isPhyAlive = TRUE;
-+ }
-+ }
-+ }
-+
-+ if (linkCount == 0) {
-+ if (lostLinks) {
-+ /* We just lost the last link for this MAC */
-+ phyLinkLost(ethUnit);
-+ }
-+ } else {
-+ if (gainedLinks == linkCount) {
-+ /* We just gained our first link(s) for this MAC */
-+ phyLinkGained(ethUnit);
-+ }
-+ }
-+
-+}
-+
-+#if DEBUG
-+
-+/* Define the registers of interest for a phyShow command */
-+typedef struct ipRegisterTableEntry_s {
-+ UINT32 regNum;
-+ char *regIdString;
-+} ipRegisterTableEntry_t;
-+
-+ipRegisterTableEntry_t ipPhyRegisterTable[] = {
-+ {IP_PHY_CONTROL, "PHY Control "},
-+ {IP_PHY_STATUS, "PHY Status "},
-+ {IP_PHY_ID1, "PHY Identifier 1 "},
-+ {IP_PHY_ID2, "PHY Identifier 2 "},
-+ {IP_AUTONEG_ADVERT, "Auto-Negotiation Advertisement "},
-+ {IP_LINK_PARTNER_ABILITY, "Link Partner Ability "},
-+ {IP_AUTONEG_EXPANSION, "Auto-Negotiation Expansion "},
-+};
-+int ipPhyNumRegs = sizeof(ipPhyRegisterTable) / sizeof(ipPhyRegisterTable[0]);
-+
-+
-+ipRegisterTableEntry_t ipPhy29GlobalRegisterTable[] = {
-+ {IP_GLOBAL_PHY29_18_REG, "29_18_REG "},
-+ {IP_GLOBAL_PHY29_19_REG, "29_19_REG "},
-+ {IP_GLOBAL_PHY29_20_REG, "29_20_REG "},
-+ {IP_GLOBAL_PHY29_21_REG, "29_21_REG "},
-+ {IP_GLOBAL_PHY29_22_REG, "29_22_REG "},
-+ {IP_GLOBAL_PHY29_23_REG, "29_23_REG "},
-+ {IP_GLOBAL_PHY29_24_REG, "29_24_REG "},
-+ {IP_GLOBAL_PHY29_25_REG, "29_25_REG "},
-+ {IP_GLOBAL_PHY29_26_REG, "29_26_REG "},
-+ {IP_GLOBAL_PHY29_27_REG, "29_27_REG "},
-+ {IP_GLOBAL_PHY29_28_REG, "29_28_REG "},
-+ {IP_GLOBAL_PHY29_29_REG, "29_29_REG "},
-+ {IP_GLOBAL_PHY29_30_REG, "29_30_REG "},
-+ {IP_GLOBAL_PHY29_31_REG, "29_31_REG "},
-+};
-+int ipPhy29GlobalNumRegs =
-+ sizeof(ipPhy29GlobalRegisterTable) / sizeof(ipPhy29GlobalRegisterTable[0]);
-+
-+
-+ipRegisterTableEntry_t ipPhy30GlobalRegisterTable[] = {
-+ {IP_GLOBAL_PHY30_0_REG, "30_0_REG "},
-+ {IP_GLOBAL_PHY30_1_REG, "30_1_REG "},
-+ {IP_GLOBAL_PHY30_2_REG, "30_2_REG "},
-+ {IP_GLOBAL_PHY30_3_REG, "30_3_REG "},
-+ {IP_GLOBAL_PHY30_4_REG, "30_4_REG "},
-+ {IP_GLOBAL_PHY30_5_REG, "30_5_REG "},
-+ {IP_GLOBAL_PHY30_6_REG, "30_6_REG "},
-+ {IP_GLOBAL_PHY30_7_REG, "30_7_REG "},
-+ {IP_GLOBAL_PHY30_8_REG, "30_8_REG "},
-+ {IP_GLOBAL_PHY30_9_REG, "30_9_REG "},
-+ {IP_GLOBAL_PHY30_10_REG, "30_10_REG "},
-+ {IP_GLOBAL_PHY30_11_REG, "30_11_REG "},
-+ {IP_GLOBAL_PHY30_12_REG, "30_12_REG "},
-+ {IP_GLOBAL_PHY30_13_REG, "30_13_REG "},
-+ {IP_GLOBAL_PHY30_16_REG, "30_16_REG "},
-+ {IP_GLOBAL_PHY30_17_REG, "30_17_REG "},
-+ {IP_GLOBAL_PHY30_18_REG, "30_18_REG "},
-+ {IP_GLOBAL_PHY30_20_REG, "30_20_REG "},
-+ {IP_GLOBAL_PHY30_21_REG, "30_21_REG "},
-+ {IP_GLOBAL_PHY30_22_REG, "30_22_REG "},
-+ {IP_GLOBAL_PHY30_23_REG, "30_23_REG "},
-+ {IP_GLOBAL_PHY30_24_REG, "30_24_REG "},
-+ {IP_GLOBAL_PHY30_25_REG, "30_25_REG "},
-+ {IP_GLOBAL_PHY30_26_REG, "30_26_REG "},
-+ {IP_GLOBAL_PHY30_27_REG, "30_27_REG "},
-+ {IP_GLOBAL_PHY30_28_REG, "30_28_REG "},
-+ {IP_GLOBAL_PHY30_29_REG, "30_29_REG "},
-+ {IP_GLOBAL_PHY30_30_REG, "30_30_REG "},
-+ {IP_GLOBAL_PHY30_31_REG, "30_31_REG "},
-+};
-+int ipPhy30GlobalNumRegs =
-+ sizeof(ipPhy30GlobalRegisterTable) / sizeof(ipPhy30GlobalRegisterTable[0]);
-+
-+ipRegisterTableEntry_t ipPhy31GlobalRegisterTable[] = {
-+ {IP_GLOBAL_PHY31_0_REG, "31_0_REG "},
-+ {IP_GLOBAL_PHY31_1_REG, "31_1_REG "},
-+ {IP_GLOBAL_PHY31_2_REG, "31_2_REG "},
-+ {IP_GLOBAL_PHY31_3_REG, "31_3_REG "},
-+ {IP_GLOBAL_PHY31_4_REG, "31_4_REG "},
-+ {IP_GLOBAL_PHY31_5_REG, "31_5_REG "},
-+ {IP_GLOBAL_PHY31_6_REG, "31_6_REG "},
-+};
-+
-+int ipPhy31GlobalNumRegs =
-+ sizeof(ipPhy31GlobalRegisterTable) / sizeof(ipPhy31GlobalRegisterTable[0]);
-+
-+
-+/*****************************************************************************
-+*
-+* ip_phyShow - Dump the state of a PHY.
-+* There are two sets of registers for each phy port:
-+* "phy registers" and
-+* "switch port registers"
-+* We dump 'em all, plus the switch global registers.
-+*/
-+void
-+ip_phyShow(int phyUnit)
-+{
-+ int i;
-+ UINT16 value;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ if (!ip_validPhyId(phyUnit)) {
-+ return;
-+ }
-+
-+ phyBase = IP_PHYBASE(phyUnit);
-+ phyAddr = IP_PHYADDR(phyUnit);
-+
-+ printf("PHY state for PHY%d (enet%d, phyBase 0x%8x, phyAddr 0x%x)\n",
-+ phyUnit,
-+ IP_ETHUNIT(phyUnit),
-+ IP_PHYBASE(phyUnit),
-+ IP_PHYADDR(phyUnit));
-+
-+ printf("PHY Registers:\n");
-+ for (i=0; i < ipPhyNumRegs; i++) {
-+
-+ value = phyRegRead(phyBase, phyAddr, ipPhyRegisterTable[i].regNum);
-+
-+ printf("Reg %02d (0x%02x) %s = 0x%08x\n",
-+ ipPhyRegisterTable[i].regNum,
-+ ipPhyRegisterTable[i].regNum,
-+ ipPhyRegisterTable[i].regIdString,
-+ value);
-+ }
-+
-+ phyBase = IP_GLOBALREGBASE;
-+
-+ printf("Switch Global Registers:\n");
-+ printf("Phy29 Registers:\n");
-+ for (i=0; i < ipPhy29GlobalNumRegs; i++) {
-+
-+ value = phyRegRead(phyBase, IP_GLOBAL_PHY29_ADDR,
-+ ipPhy29GlobalRegisterTable[i].regNum);
-+
-+ printf("Reg %02d (0x%02x) %s = 0x%08x\n",
-+ ipPhy29GlobalRegisterTable[i].regNum,
-+ ipPhy29GlobalRegisterTable[i].regNum,
-+ ipPhy29GlobalRegisterTable[i].regIdString,
-+ value);
-+ }
-+
-+ printf("Phy30 Registers:\n");
-+ for (i=0; i < ipPhy30GlobalNumRegs; i++) {
-+
-+ value = phyRegRead(phyBase, IP_GLOBAL_PHY30_ADDR,
-+ ipPhy30GlobalRegisterTable[i].regNum);
-+
-+ printf("Reg %02d (0x%02x) %s = 0x%08x\n",
-+ ipPhy30GlobalRegisterTable[i].regNum,
-+ ipPhy30GlobalRegisterTable[i].regNum,
-+ ipPhy30GlobalRegisterTable[i].regIdString,
-+ value);
-+ }
-+ printf("Phy31 Registers:\n");
-+ for (i=0; i < ipPhy31GlobalNumRegs; i++) {
-+
-+ value = phyRegRead(phyBase, IP_GLOBAL_PHY31_ADDR,
-+ ipPhy31GlobalRegisterTable[i].regNum);
-+
-+ printf("Reg %02d (0x%02x) %s = 0x%08x\n",
-+ ipPhy31GlobalRegisterTable[i].regNum,
-+ ipPhy31GlobalRegisterTable[i].regNum,
-+ ipPhy31GlobalRegisterTable[i].regIdString,
-+ value);
-+ }
-+}
-+
-+/*****************************************************************************
-+*
-+* ip_phySet - Modify the value of a PHY register (debug only).
-+*/
-+void
-+ip_phySet(int phyUnit, UINT32 regnum, UINT32 value)
-+{
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ if (ip_validPhyId(phyUnit)) {
-+
-+ phyBase = IP_PHYBASE(phyUnit);
-+ phyAddr = IP_PHYADDR(phyUnit);
-+
-+ phyRegWrite(phyBase, phyAddr, regnum, value);
-+ }
-+}
-+
-+/*****************************************************************************
-+*
-+* ip_globalSet - Modify the value of a global register
-+* (debug only).
-+*/
-+void
-+ip_globalSet(UINT32 phyAddr, UINT32 regnum, UINT32 value)
-+{
-+ UINT32 phyBase;
-+
-+ phyBase = IP_GLOBALREGBASE;
-+
-+ phyRegWrite(phyBase, phyAddr, regnum, value);
-+}
-+
-+
-+#endif
-diff -urN linux-mips-orig/drivers/net/ath/ipPhy.h linux-mips-new/drivers/net/ath/ipPhy.h
---- linux-mips-orig/drivers/net/ath/ipPhy.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/ipPhy.h 2005-12-31 12:33:57.678538064 +0000
-@@ -0,0 +1,172 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * icPhy.h - definitions for the ethernet PHY.
-+ * This code supports a simple 1-port ethernet phy, ICPLUS,
-+ * All definitions in this file are operating system independent!
-+ */
-+
-+#ifndef IPPHY_H
-+#define IPPHY_H
-+
-+/*****************/
-+/* PHY Registers */
-+/*****************/
-+#define IP_PHY_CONTROL 0
-+#define IP_PHY_STATUS 1
-+#define IP_PHY_ID1 2
-+#define IP_PHY_ID2 3
-+#define IP_AUTONEG_ADVERT 4
-+#define IP_LINK_PARTNER_ABILITY 5
-+#define IP_AUTONEG_EXPANSION 6
-+
-+
-+/* IP_PHY_CONTROL fields */
-+#define IP_CTRL_SOFTWARE_RESET 0x8000
-+#define IP_CTRL_SPEED_100 0x2000
-+#define IP_CTRL_AUTONEGOTIATION_ENABLE 0x1000
-+#define IP_CTRL_START_AUTONEGOTIATION 0x0200
-+#define IP_CTRL_SPEED_FULL_DUPLEX 0x0100
-+
-+/* Phy status fields */
-+#define IP_STATUS_AUTO_NEG_DONE 0x0020
-+#define IP_STATUS_LINK_PASS 0x0004
-+
-+#define IP_AUTONEG_DONE(ip_phy_status) \
-+ (((ip_phy_status) & \
-+ (IP_STATUS_AUTO_NEG_DONE)) == \
-+ (IP_STATUS_AUTO_NEG_DONE))
-+
-+/* ICPLUS_PHY_ID1 fields */
-+#define IP_PHY_ID1_EXPECTATION 0x0243 /* OUI >> 6 */
-+
-+/* ICPLUS_PHY_ID2 fields */
-+#define IP_OUI_LSB_MASK 0xfc00
-+#define IP_OUI_LSB_EXPECTATION 0x0c00
-+#define IP_OUI_LSB_SHIFT 10
-+#define IP_MODEL_NUM_MASK 0x03f0
-+#define IP_MODEL_NUM_SHIFT 4
-+#define IP_REV_NUM_MASK 0x000f
-+#define IP_REV_NUM_SHIFT 0
-+
-+/* Link Partner ability */
-+#define IP_LINK_100BASETX_FULL_DUPLEX 0x0100
-+#define IP_LINK_100BASETX 0x0080
-+#define IP_LINK_10BASETX_FULL_DUPLEX 0x0040
-+#define IP_LINK_10BASETX 0x0020
-+
-+/* Advertisement register. */
-+#define IP_ADVERTISE_100FULL 0x0100
-+#define IP_ADVERTISE_100HALF 0x0080
-+#define IP_ADVERTISE_10FULL 0x0040
-+#define IP_ADVERTISE_10HALF 0x0020
-+
-+#define IP_ADVERTISE_ALL (IP_ADVERTISE_10HALF | IP_ADVERTISE_10FULL | \
-+ IP_ADVERTISE_100HALF | IP_ADVERTISE_100FULL)
-+
-+
-+#define IP_VLAN_TAG_VALID 0x81
-+#define IP_VLAN_TAG_SIZE 4
-+#define IP_VLAN_TAG_OFFSET 12 /* After DA & SA */
-+#define IP_SPECIAL_TAG_VALID 0x81
-+
-+/****************************/
-+/* Global Control Registers */
-+/****************************/
-+/* IP Global register doesn't have names based on functionality
-+ * hence has to live with this names for now */
-+#define IP_GLOBAL_PHY29_18_REG 18
-+#define IP_GLOBAL_PHY29_19_REG 19
-+#define IP_GLOBAL_PHY29_20_REG 20
-+#define IP_GLOBAL_PHY29_21_REG 21
-+#define IP_GLOBAL_PHY29_22_REG 22
-+#define IP_GLOBAL_PHY29_23_REG 23
-+#define IP_GLOBAL_PHY29_24_REG 24
-+#define IP_GLOBAL_PHY29_25_REG 25
-+#define IP_GLOBAL_PHY29_26_REG 26
-+#define IP_GLOBAL_PHY29_27_REG 27
-+#define IP_GLOBAL_PHY29_28_REG 28
-+#define IP_GLOBAL_PHY29_29_REG 29
-+#define IP_GLOBAL_PHY29_30_REG 30
-+#define IP_GLOBAL_PHY29_31_REG 31
-+
-+
-+#define IP_GLOBAL_PHY30_0_REG 0
-+#define IP_GLOBAL_PHY30_1_REG 1
-+#define IP_GLOBAL_PHY30_2_REG 2
-+#define IP_GLOBAL_PHY30_3_REG 3
-+#define IP_GLOBAL_PHY30_4_REG 4
-+#define IP_GLOBAL_PHY30_5_REG 5
-+#define IP_GLOBAL_PHY30_6_REG 6
-+#define IP_GLOBAL_PHY30_7_REG 7
-+#define IP_GLOBAL_PHY30_8_REG 8
-+#define IP_GLOBAL_PHY30_9_REG 9
-+#define IP_GLOBAL_PHY30_10_REG 10
-+#define IP_GLOBAL_PHY30_11_REG 11
-+#define IP_GLOBAL_PHY30_12_REG 12
-+#define IP_GLOBAL_PHY30_13_REG 13
-+#define IP_GLOBAL_PHY30_16_REG 16
-+#define IP_GLOBAL_PHY30_17_REG 17
-+#define IP_GLOBAL_PHY30_18_REG 18
-+#define IP_GLOBAL_PHY30_20_REG 20
-+#define IP_GLOBAL_PHY30_21_REG 21
-+#define IP_GLOBAL_PHY30_22_REG 22
-+#define IP_GLOBAL_PHY30_23_REG 23
-+#define IP_GLOBAL_PHY30_24_REG 24
-+#define IP_GLOBAL_PHY30_25_REG 25
-+#define IP_GLOBAL_PHY30_26_REG 26
-+#define IP_GLOBAL_PHY30_27_REG 27
-+#define IP_GLOBAL_PHY30_28_REG 28
-+#define IP_GLOBAL_PHY30_29_REG 29
-+#define IP_GLOBAL_PHY30_30_REG 30
-+#define IP_GLOBAL_PHY30_31_REG 31
-+
-+#define IP_GLOBAL_PHY31_0_REG 0
-+#define IP_GLOBAL_PHY31_1_REG 1
-+#define IP_GLOBAL_PHY31_2_REG 2
-+#define IP_GLOBAL_PHY31_3_REG 3
-+#define IP_GLOBAL_PHY31_4_REG 4
-+#define IP_GLOBAL_PHY31_5_REG 5
-+#define IP_GLOBAL_PHY31_6_REG 6
-+
-+#define IP_GLOBAL_PHY29_31_REG 31
-+
-+
-+#define IP_VLAN0_OUTPUT_PORT_MASK_S 0
-+#define IP_VLAN1_OUTPUT_PORT_MASK_S 8
-+#define IP_VLAN2_OUTPUT_PORT_MASK_S 0
-+#define IP_VLAN3_OUTPUT_PORT_MASK_S 8
-+
-+/* Masks and shifts for 29.23 register */
-+#define IP_PORTX_ADD_TAG_S 11
-+#define IP_PORTX_REMOVE_TAG_S 6
-+#define IP_PORT5_ADD_TAG_S 1
-+#define IP_PORT5_REMOVE_TAG_S 0
-+
-+/*
-+ * 30.9 Definitions
-+ */
-+#define TAG_VLAN_ENABLE 0x0080
-+#define VID_INDX_SEL_M 0x0070
-+#define VID_INDX_SEL_S 4
-+
-+
-+/* PHY Addresses */
-+#define IP_PHY0_ADDR 0
-+#define IP_PHY1_ADDR 1
-+#define IP_PHY2_ADDR 2
-+#define IP_PHY3_ADDR 3
-+#define IP_PHY4_ADDR 4
-+
-+#define IP_GLOBAL_PHY29_ADDR 29
-+#define IP_GLOBAL_PHY30_ADDR 30
-+#define IP_GLOBAL_PHY31_ADDR 31
-+
-+
-+#endif
-diff -urN linux-mips-orig/drivers/net/ath/kendSwitchPhy.c linux-mips-new/drivers/net/ath/kendSwitchPhy.c
---- linux-mips-orig/drivers/net/ath/kendSwitchPhy.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/kendSwitchPhy.c 2005-12-31 12:33:57.678538064 +0000
-@@ -0,0 +1,286 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * Manage the ethernet PHY.
-+ * This code supports a simple 1-port ethernet phy, Realtek RTL8201BL,
-+ * and compatible PHYs, such as the Kendin KS8721B.
-+ * All definitions in this file are operating system independent!
-+ */
-+
-+#if defined(linux)
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/delay.h>
-+
-+#include "ar531xlnx.h"
-+#endif
-+
-+#if defined(__ECOS)
-+#include "ae531xecos.h"
-+#endif
-+
-+
-+#include "ae531xmac.h"
-+#include "ae531xreg.h"
-+#include "rtPhy.h"
-+
-+#define RT_MAX_PORTS 5 /* max addressable ports per MIIM */
-+
-+#if /* DEBUG */ 1
-+#define RT_DEBUG_ERROR 0x00000001
-+#define RT_DEBUG_PHYSETUP 0x00000002
-+#define RT_DEBUG_PHYCHANGE 0x00000004
-+
-+/* XXX: must hardcode this since same MIIM for all ethUnits */
-+const UINT32 phyBase = 0xb8100000;
-+
-+int rtPhyDebug = RT_DEBUG_ERROR;
-+
-+#define RT_PRINT(FLG, X) \
-+{ \
-+ if (rtPhyDebug & (FLG)) { \
-+ DEBUG_PRINTF X; \
-+ } \
-+}
-+#else
-+#define RT_PRINT(FLG, X)
-+#endif
-+
-+/*
-+ * Track per-PHY state.
-+ */
-+static BOOL rtPhyAlive[RT_MAX_PORTS];
-+
-+
-+/******************************************************************************
-+*
-+* rt_phySetup - reset and setup the PHY associated with
-+* the specified MAC unit number.
-+*
-+* Resets the associated PHY port.
-+*
-+* RETURNS:
-+* TRUE --> associated PHY is alive
-+* FALSE --> no LINKs on this ethernet unit
-+*/
-+
-+BOOL
-+rt_phySetup(int ethUnit, UINT32 phyBaseIgnored)
-+{
-+ BOOL linkAlive = FALSE;
-+
-+ /* Reset phy */
-+ if (ethUnit == 0) {
-+ int i;
-+ for (i=1; i<5; i++) {
-+ phyRegWrite(phyBase, i, GEN_ctl, AUTONEGENA);
-+ sysMsDelay(200);
-+ if (phyRegRead(phyBase, i, GEN_sts) & (AUTOCMPLT | LINK)) {
-+ rtPhyAlive[i] = TRUE;
-+ }
-+ else {
-+ rtPhyAlive[i] = FALSE;
-+ }
-+ }
-+ }
-+ else {
-+ phyRegWrite(phyBase, 5, GEN_ctl, AUTONEGENA);
-+ sysMsDelay(200);
-+ if (phyRegRead(phyBase, 5, GEN_sts) & (AUTOCMPLT | LINK)) {
-+ rtPhyAlive[5] = TRUE;
-+ }
-+ else {
-+ rtPhyAlive[5] = FALSE;
-+ }
-+ }
-+
-+ return linkAlive;
-+}
-+
-+/******************************************************************************
-+*
-+* rt_phyIsDuplexFull - Determines whether the phy ports associated with the
-+* specified device are FULL or HALF duplex.
-+*
-+* RETURNS:
-+* 1 --> FULL
-+* 0 --> HALF
-+*/
-+int
-+rt_phyIsFullDuplex(int ethUnit)
-+{
-+ UINT16 phyLpa = 0;
-+
-+ if (ethUnit == 0) {
-+ int i;
-+ /* 4 ports connected. If any are half-duplex report half. */
-+ for (i=1; i<5; i++) {
-+ phyLpa = phyRegRead(phyBase, i, AN_lpa);
-+ if ( (!(phyLpa & (LPA_TXFD | LPA_10FD))) &&
-+ (phyLpa & (LPA_TX | LPA_10)) ) {
-+ return 0;
-+ }
-+ }
-+ return 1;
-+ }
-+ else {
-+ phyLpa = phyRegRead(phyBase, 5, AN_lpa);
-+ if (phyLpa & (LPA_TXFD | LPA_10FD) ) {
-+ return 1;
-+ }
-+ else {
-+ return 0;
-+ }
-+ }
-+}
-+
-+/******************************************************************************
-+*
-+* rt_phyIsSpeed100 - Determines the speed of phy ports associated with the
-+* specified device.
-+*
-+* RETURNS:
-+* TRUE --> 100Mbit
-+* FALSE --> 10Mbit
-+*/
-+BOOL
-+rt_phyIsSpeed100(int ethUnit)
-+{
-+ UINT16 phyLpa;
-+
-+ if (ethUnit == 0) {
-+ int i;
-+ /* 4 ports connected. If any are not 100 report 10. */
-+ for (i=1; i<5; i++) {
-+ phyLpa = phyRegRead(phyBase, i, AN_lpa);
-+ if ( (!(phyLpa & (LPA_TXFD | LPA_TX))) &&
-+ (phyLpa & (LPA_10FD | LPA_10)) ) {
-+ printk("10\n");
-+ return FALSE;
-+ }
-+ }
-+ printk("100\n");
-+ return TRUE;
-+ }
-+ else {
-+ phyLpa = phyRegRead(phyBase, 5, AN_lpa);
-+ if (phyLpa & (LPA_TXFD | LPA_TX) ) {
-+ printk("100\n");
-+ return TRUE;
-+ }
-+ else {
-+ printk("10\n");
-+ return FALSE;
-+ }
-+ }
-+}
-+
-+/*****************************************************************************
-+*
-+* rt_phyCheckStatusChange -- checks for significant changes in PHY state.
-+*
-+* A "significant change" is:
-+* dropped link (e.g. ethernet cable unplugged) OR
-+* autonegotiation completed + link (e.g. ethernet cable plugged in)
-+*
-+* When a PHY is plugged in, phyLinkGained is called.
-+* When a PHY is unplugged, phyLinkLost is called.
-+*/
-+void
-+rt_phyCheckStatusChange(int ethUnit)
-+{
-+ UINT16 phyHwStatus;
-+ int i, loopLower, loopUpper;
-+
-+ if (ethUnit == 0) {
-+ loopLower = 1;
-+ loopUpper = 4;
-+ }
-+ else {
-+ loopLower = 5;
-+ loopUpper = 5;
-+ }
-+
-+ for (i=loopLower; i<=loopUpper; i++) {
-+ phyHwStatus = phyRegRead(phyBase, i, GEN_sts);
-+
-+ if (rtPhyAlive[i]) { /* last known status was ALIVE */
-+ /* See if we've lost link */
-+ if (!(phyHwStatus & LINK)) {
-+ RT_PRINT(RT_DEBUG_PHYCHANGE,("\nethmac%d link down\n", ethUnit));
-+ rtPhyAlive[i] = FALSE;
-+ phyLinkLost(ethUnit);
-+ }
-+ } else { /* last known status was DEAD */
-+ /* Check for AN complete */
-+ if ((phyHwStatus & (AUTOCMPLT | LINK)) == (AUTOCMPLT | LINK)) {
-+ RT_PRINT(RT_DEBUG_PHYCHANGE,("\nethmac%d link up\n", ethUnit));
-+ rtPhyAlive[i] = TRUE;
-+ phyLinkGained(ethUnit);
-+ }
-+ }
-+ }
-+}
-+
-+#if DEBUG
-+
-+/* Define the PHY registers of interest for a phyShow command */
-+struct rtRegisterTable_s {
-+ UINT32 regNum;
-+ char *regIdString;
-+} rtRegisterTable[] =
-+{
-+ {GEN_ctl, "Basic Mode Control (GEN_ctl) "},
-+ {GEN_sts, "Basic Mode Status (GEN_sts) "},
-+ {GEN_id_hi, "PHY Identifier 1 (GET_id_hi) "},
-+ {GEN_id_lo, "PHY Identifier 2 (GET_id_lo) "},
-+ {AN_adv, "Auto-Neg Advertisement (AN_adv) "},
-+ {AN_lpa, "Auto-Neg Link Partner Ability "},
-+ {AN_exp, "Auto-Neg Expansion "},
-+};
-+
-+int rtNumRegs = sizeof(rtRegisterTable) / sizeof(rtRegisterTable[0]);
-+
-+/*
-+ * Dump the state of a PHY.
-+ */
-+void
-+rt_phyShow(int phyUnit)
-+{
-+ int i;
-+ UINT16 value;
-+ int j, loopLower, loopUpper;
-+
-+ printf("PHY state for ethphy%d\n", phyUnit);
-+
-+ if (phyUnit == 0) {
-+ loopLower = 1;
-+ loopUpper = 4;
-+ }
-+ else {
-+ loopLower = 5;
-+ loopUpper = 5;
-+ }
-+
-+ for (j=loopLower; j<=loopUpper; j++) {
-+ printk("PHY port %d:\n", j);
-+ for (i=0; i<rtNumRegs; i++) {
-+
-+ value = phyRegRead(phyBase, j, rtRegisterTable[i].regNum);
-+
-+ printf("Reg %02d (0x%02x) %s = 0x%08x\n",
-+ rtRegisterTable[i].regNum, rtRegisterTable[i].regNum,
-+ rtRegisterTable[i].regIdString, value);
-+ }
-+ }
-+}
-+
-+#endif
-diff -urN linux-mips-orig/drivers/net/ath/Makefile linux-mips-new/drivers/net/ath/Makefile
---- linux-mips-orig/drivers/net/ath/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/Makefile 2005-12-31 12:33:57.678538064 +0000
-@@ -0,0 +1,78 @@
-+################################################################################
-+#
-+# 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 © 2004 Atheros Communications, Inc., All Rights Reserved.
-+#
-+# Makefile for Atheros ar531x ethernet driver
-+#
-+# Note! Dependencies are done automagically by 'make dep', which also
-+# removes any old dependencies. DON'T put your own dependencies here
-+# unless it's something special (ie not a .c file).
-+#
-+################################################################################
-+
-+#
-+# Makefile for the Atheros ar531x ethernet driver
-+#
-+
-+obj= .
-+
-+obj-m += ae531x.o
-+ae531x-objs := ae531xlnx.o ae531xmac.o
-+export-objs := ae531xlnx.o
-+list-multi := ae531x.o
-+
-+ifeq ($(CONFIG_KENDIN_ENET_PHY),y)
-+ ae531x-objs += rtPhy.o
-+endif
-+ifeq ($(CONFIG_KENDIN_KS8995XA_ENET_PHY),y)
-+ ae531x-objs += kendSwitchPhy.o
-+endif
-+ifeq ($(CONFIG_MARVELL_ENET_PHY),y)
-+ ae531x-objs += mvPhy.o
-+endif
-+ifeq ($(CONFIG_ICPLUS_ENET_PHY),y)
-+ ae531x-objs += ipPhy.o
-+endif
-+
-+#
-+# If building directly into kernel
-+#
-+ifneq ($(MAKING_MODULES),1)
-+obj-$(CONFIG_NET_ATHEROS_ETHER) := ae531x.o $(ae531x-objs)
-+O_TARGET := ae531x.o
-+endif
-+
-+INCS += -I.
-+
-+EXTRA_CFLAGS+=$(INCS) ${COPTS} -g
-+ifeq ($(DEBUG_BUILD),1)
-+EXTRA_CFLAGS+=-DDEBUG
-+endif
-+
-+# release tag versioning
-+-include $(KERNELPATH)/ath_version.mk
-+
-+-include $(TOPDIR)/Rules.make
-+STRIP= ${TOOLPREFIX}strip
-+
-+ifndef MODPATH
-+MODPATH = ${KERNELPATH}/arch/mips/ar531x/ROOTDISK/rootdir/lib/modules/${KERNELRELEASE}/
-+endif
-+
-+all:
-+ $(MAKE) -C ${KERNELPATH} SUBDIRS=$(shell pwd) modules
-+
-+install: all
-+ $(STRIP) -S ae531x.o
-+ cp ae531x.o ${KERNELPATH}/arch/mips/ar531x/ROOTDISK/rootdir/lib/modules/$(strip $(shell head -n 1 $(KERNELPATH)/Makefile | cut -f 2 -d'=')).$(strip $(shell head -n 2 $(KERNELPATH)/Makefile | tail -1 | cut -f 2 -d'=')).$(strip $(shell head -n 3 $(KERNELPATH)/Makefile | tail -1 | cut -f 2 -d'='))${EXTRAVERSION}/net/.
-+
-+clean:
-+ -rm -f *~ *.o *.ko *.mod.c
-+ -rm -f .version .*.o.flags .*.o.d .*.o.cmd .*.ko.cmd
-+
-+ae531x.o : $(ae531x-objs)
-+ $(LD) -o ae531x.o -r $(ae531x-objs)
-diff -urN linux-mips-orig/drivers/net/ath/mvPhy.c linux-mips-new/drivers/net/ath/mvPhy.c
---- linux-mips-orig/drivers/net/ath/mvPhy.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/mvPhy.c 2005-12-31 12:33:57.726530768 +0000
-@@ -0,0 +1,1230 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+* Manage the ethernet PHY switch, Marvell 88E6060.
-+*
-+* This module is intended to be largely OS and platform-independent.
-+*/
-+
-+#if defined(linux)
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/delay.h>
-+
-+#include "ar531xlnx.h"
-+#endif
-+
-+#if defined(__ECOS)
-+#include "ae531xecos.h"
-+#endif
-+
-+
-+#include "ae531xmac.h"
-+#include "ae531xreg.h"
-+#include "mvPhy.h"
-+
-+#if /* DEBUG */ 1
-+#define MV_DEBUG_ERROR 0x00000001
-+#define MV_DEBUG_PHYSETUP 0x00000002
-+#define MV_DEBUG_PHYCHANGE 0x00000004
-+
-+int mvPhyDebug = MV_DEBUG_ERROR;
-+
-+#define MV_PRINT(FLG, X) \
-+{ \
-+ if (mvPhyDebug & (FLG)) { \
-+ DEBUG_PRINTF X; \
-+ } \
-+}
-+#else
-+#define MV_PRINT(FLG, X)
-+#endif
-+
-+#if CONFIG_VENETDEV
-+/*
-+ * On AR5312 with CONFIG_VENETDEV==1,
-+ * ports 0..3 are LAN ports (accessed through ae0)
-+ * port 4 is the WAN port. (accessed through ae1)
-+ *
-+ * The phy switch settings in the mvPhyInfo table are set accordingly.
-+ */
-+#define MV_WAN_PORT 4
-+#define MV_IS_LAN_PORT(port) ((port) < MV_WAN_PORT)
-+#define MV_IS_WAN_PORT(port) ((port) == MV_WAN_PORT)
-+#endif
-+
-+/*
-+ * Track per-PHY port information.
-+ */
-+typedef struct {
-+ BOOL isEnetPort; /* normal enet port */
-+ BOOL isPhyAlive; /* last known state of link */
-+ int ethUnit; /* MAC associated with this phy port */
-+ UINT32 phyBase;
-+ UINT32 phyAddr; /* PHY registers associated with this phy port */
-+ UINT32 switchPortAddr; /* switch port regs assoc'ed with this phy port */
-+ UINT32 VLANTableSetting; /* Value to be written to VLAN table */
-+} mvPhyInfo_t;
-+
-+/******************************************************************************
-+ * Per-PHY information, indexed by PHY unit number.
-+ *
-+ * This table is board-dependent. It includes information
-+ * about which enet MAC controls which PHY port.
-+ */
-+mvPhyInfo_t mvPhyInfo[] = {
-+ /*
-+ * On AP30/AR5312, all PHYs are associated with MAC0.
-+ * AP30/AR5312's MAC1 isn't used for anything.
-+ * CONFIG_VENETDEV==1 (router) configuration:
-+ * Ports 0,1,2, and 3 are "LAN ports"
-+ * Port 4 is a WAN port
-+ * Port 5 connects to MAC0 in the AR5312
-+ * CONFIG_VENETDEV==0 (bridge) configuration:
-+ * Ports 0,1,2,3,4 are "LAN ports"
-+ * Port 5 connects to the MAC0 in the AR5312
-+ */
-+ {isEnetPort: TRUE, /* phy port 0 -- LAN port 0 */
-+ isPhyAlive: FALSE,
-+ ethUnit: 0,
-+ phyBase: 0,
-+ phyAddr: 0x10,
-+ switchPortAddr: 0x18,
-+#if CONFIG_VENETDEV
-+ VLANTableSetting: 0x2e
-+#else
-+ VLANTableSetting: 0x3e
-+#endif
-+ },
-+
-+ {isEnetPort: TRUE, /* phy port 1 -- LAN port 1 */
-+ isPhyAlive: FALSE,
-+ ethUnit: 0,
-+ phyBase: 0,
-+ phyAddr: 0x11,
-+ switchPortAddr: 0x19,
-+#if CONFIG_VENETDEV
-+ VLANTableSetting: 0x2d
-+#else
-+ VLANTableSetting: 0x3d
-+#endif
-+ },
-+
-+ {isEnetPort: TRUE, /* phy port 2 -- LAN port 2 */
-+ isPhyAlive: FALSE,
-+ ethUnit: 0,
-+ phyBase: 0,
-+ phyAddr: 0x12,
-+ switchPortAddr: 0x1a,
-+#if CONFIG_VENETDEV
-+ VLANTableSetting: 0x2b
-+#else
-+ VLANTableSetting: 0x3b
-+#endif
-+ },
-+
-+ {isEnetPort: TRUE, /* phy port 3 -- LAN port 3 */
-+ isPhyAlive: FALSE,
-+ ethUnit: 0,
-+ phyBase: 0,
-+ phyAddr: 0x13,
-+ switchPortAddr: 0x1b,
-+#if CONFIG_VENETDEV
-+ VLANTableSetting: 0x27
-+#else
-+ VLANTableSetting: 0x37
-+#endif
-+ },
-+
-+ {isEnetPort: TRUE, /* phy port 4 -- WAN port or LAN port 4 */
-+ isPhyAlive: FALSE,
-+ ethUnit: 0,
-+ phyBase: 0,
-+ phyAddr: 0x14,
-+ switchPortAddr: 0x1c,
-+#if CONFIG_VENETDEV
-+ VLANTableSetting: 0x1020 /* WAN port */
-+#else
-+ VLANTableSetting: 0x2f /* LAN port 4 */
-+#endif
-+ },
-+
-+ {isEnetPort: FALSE, /* phy port 5 -- CPU port (no RJ45 connector) */
-+ isPhyAlive: TRUE,
-+ ethUnit: 0,
-+ phyBase: 0,
-+ phyAddr: 0x15,
-+ switchPortAddr: 0x1d,
-+#if CONFIG_VENETDEV
-+ VLANTableSetting: 0x0f /* Send only to LAN ports */
-+#else
-+ VLANTableSetting: 0x1f /* Send to all ports */
-+#endif
-+ },
-+};
-+
-+#define MV_PHY_MAX (sizeof(mvPhyInfo) / sizeof(mvPhyInfo[0]))
-+
-+/* Range of valid PHY IDs is [MIN..MAX] */
-+#define MV_ID_MIN 0
-+#define MV_ID_MAX (MV_PHY_MAX-1)
-+
-+/* Convenience macros to access myPhyInfo */
-+#define MV_IS_ENET_PORT(phyUnit) (mvPhyInfo[phyUnit].isEnetPort)
-+#define MV_IS_PHY_ALIVE(phyUnit) (mvPhyInfo[phyUnit].isPhyAlive)
-+#define MV_ETHUNIT(phyUnit) (mvPhyInfo[phyUnit].ethUnit)
-+#define MV_PHYBASE(phyUnit) (mvPhyInfo[phyUnit].phyBase)
-+#define MV_PHYADDR(phyUnit) (mvPhyInfo[phyUnit].phyAddr)
-+#define MV_SWITCH_PORT_ADDR(phyUnit) (mvPhyInfo[phyUnit].switchPortAddr)
-+#define MV_VLAN_TABLE_SETTING(phyUnit) (mvPhyInfo[phyUnit].VLANTableSetting)
-+
-+#define MV_IS_ETHUNIT(phyUnit, ethUnit) \
-+ (MV_IS_ENET_PORT(phyUnit) && \
-+ MV_ETHUNIT(phyUnit) == (ethUnit))
-+
-+
-+/* Forward references */
-+BOOL mv_phyIsLinkAlive(int phyUnit);
-+LOCAL void mv_VLANInit(int ethUnit);
-+LOCAL void mv_enableConfiguredPorts(int ethUnit);
-+LOCAL void mv_verifyReady(int ethUnit);
-+BOOL mv_phySetup(int ethUnit, UINT32 phyBase);
-+int mv_phyIsFullDuplex(int ethUnit);
-+BOOL mv_phyIsSpeed100(int phyUnit);
-+LOCAL BOOL mv_validPhyId(int phyUnit);
-+void mv_flushATUDB(int phyUnit);
-+void mv_phyCheckStatusChange(int ethUnit);
-+#if DEBUG
-+void mv_phyShow(int phyUnit);
-+void mv_phySet(int phyUnit, UINT32 regnum, UINT32 value);
-+void mv_switchPortSet(int phyUnit, UINT32 regnum, UINT32 value);
-+void mv_switchGlobalSet(int phyUnit, UINT32 regnum, UINT32 value);
-+void mv_showATUDB(int phyUnit);
-+void mv_countGoodFrames(int phyUnit);
-+void mv_countBadFrames(int phyUnit);
-+void mv_showFrameCounts(int phyUnit);
-+#endif
-+
-+
-+/******************************************************************************
-+*
-+* mv_phyIsLinkAlive - test to see if the specified link is alive
-+*
-+* RETURNS:
-+* TRUE --> link is alive
-+* FALSE --> link is down
-+*/
-+BOOL
-+mv_phyIsLinkAlive(int phyUnit)
-+{
-+ UINT16 phyHwStatus;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+ phyAddr = MV_PHYADDR(phyUnit);
-+
-+ phyHwStatus = phyRegRead(phyBase, phyAddr, MV_PHY_SPECIFIC_STATUS);
-+
-+ if (phyHwStatus & MV_STATUS_REAL_TIME_LINK_UP) {
-+ return TRUE;
-+ } else {
-+ return FALSE;
-+ }
-+}
-+
-+/******************************************************************************
-+*
-+* mv_VLANInit - initialize "port-based VLANs" for the specified enet unit.
-+*/
-+LOCAL void
-+mv_VLANInit(int ethUnit)
-+{
-+ int phyUnit;
-+ UINT32 phyBase;
-+ UINT32 switchPortAddr;
-+
-+ for (phyUnit=0; phyUnit < MV_PHY_MAX; phyUnit++) {
-+ if (MV_ETHUNIT(phyUnit) != ethUnit) {
-+ continue;
-+ }
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+ switchPortAddr = MV_SWITCH_PORT_ADDR(phyUnit);
-+
-+ phyRegWrite(phyBase, switchPortAddr, MV_PORT_BASED_VLAN_MAP,
-+ MV_VLAN_TABLE_SETTING(phyUnit));
-+ }
-+}
-+
-+#define phyPortConfigured(phyUnit) TRUE /* TBDFREEDOM2 */
-+
-+/******************************************************************************
-+*
-+* mv_enableConfiguredPorts - enable whichever PHY ports are supposed
-+* to be enabled according to administrative configuration.
-+*/
-+LOCAL void
-+mv_enableConfiguredPorts(int ethUnit)
-+{
-+ int phyUnit;
-+ UINT32 phyBase;
-+ UINT32 switchPortAddr;
-+ UINT16 portControl;
-+ UINT16 portAssociationVector;
-+
-+ for (phyUnit=0; phyUnit < MV_PHY_MAX; phyUnit++) {
-+ if (MV_ETHUNIT(phyUnit) != ethUnit) {
-+ continue;
-+ }
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+ switchPortAddr = MV_SWITCH_PORT_ADDR(phyUnit);
-+
-+ if (phyPortConfigured(phyUnit)) {
-+
-+ portControl = MV_PORT_CONTROL_PORT_STATE_FORWARDING;
-+#if CONFIG_VENETDEV
-+ if (!MV_IS_ENET_PORT(phyUnit)) { /* CPU port */
-+ portControl |= MV_PORT_CONTROL_INGRESS_TRAILER
-+ | MV_PORT_CONTROL_EGRESS_MODE;
-+ }
-+#endif
-+ phyRegWrite(phyBase, switchPortAddr, MV_PORT_CONTROL, portControl);
-+
-+ portAssociationVector = 1 << phyUnit;
-+
-+ phyRegWrite(phyBase, switchPortAddr,
-+ MV_PORT_ASSOCIATION_VECTOR, portAssociationVector);
-+ }
-+ }
-+}
-+
-+/******************************************************************************
-+*
-+* mv_verifyReady - validates that we're dealing with the device
-+* we think we're dealing with, and that it's ready.
-+*/
-+LOCAL void
-+mv_verifyReady(int ethUnit)
-+{
-+ int phyUnit;
-+ UINT16 globalStatus;
-+ UINT32 phyBase = 0;
-+ UINT32 phyAddr;
-+ UINT32 switchPortAddr;
-+ UINT16 phyID1;
-+ UINT16 phyID2;
-+ UINT16 switchID;
-+
-+ /*
-+ * The first read to the Phy port registers always fails and
-+ * returns 0. So get things started with a bogus read.
-+ */
-+ for (phyUnit=0; phyUnit < MV_PHY_MAX; phyUnit++) {
-+ if (!MV_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+ phyBase = MV_PHYBASE(phyUnit);
-+ phyAddr = MV_PHYADDR(phyUnit);
-+
-+ (void)phyRegRead(phyBase, phyAddr, MV_PHY_ID1); /* returns 0 */
-+ break;
-+ }
-+
-+ for (phyUnit=0; phyUnit < MV_PHY_MAX; phyUnit++) {
-+ if (!MV_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+
-+ /*******************/
-+ /* Verify phy port */
-+ /*******************/
-+ phyBase = MV_PHYBASE(phyUnit);
-+ phyAddr = MV_PHYADDR(phyUnit);
-+
-+ phyID1 = phyRegRead(phyBase, phyAddr, MV_PHY_ID1);
-+ if (phyID1 != MV_PHY_ID1_EXPECTATION) {
-+ MV_PRINT(MV_DEBUG_PHYSETUP,
-+ ("Invalid PHY ID1 for ethmac%d port%d. Expected 0x%04x, read 0x%04x\n",
-+ ethUnit,
-+ phyUnit,
-+ MV_PHY_ID1_EXPECTATION,
-+ phyID1));
-+ return;
-+ }
-+
-+ phyID2 = phyRegRead(phyBase, phyAddr, MV_PHY_ID2);
-+ if ((phyID2 & MV_OUI_LSB_MASK) != MV_OUI_LSB_EXPECTATION) {
-+ MV_PRINT(MV_DEBUG_PHYSETUP,
-+ ("Invalid PHY ID2 for ethmac%d port %d. Expected 0x%04x, read 0x%04x\n",
-+ ethUnit,
-+ phyUnit,
-+ MV_OUI_LSB_EXPECTATION,
-+ phyID2));
-+ return;
-+ }
-+
-+ MV_PRINT(MV_DEBUG_PHYSETUP,
-+ ("Found PHY ethmac%d port%d: model 0x%x revision 0x%x\n",
-+ ethUnit,
-+ phyUnit,
-+ (phyID2 & MV_MODEL_NUM_MASK) >> MV_MODEL_NUM_SHIFT,
-+ (phyID2 & MV_REV_NUM_MASK) >> MV_REV_NUM_SHIFT));
-+
-+
-+ /**********************/
-+ /* Verify switch port */
-+ /**********************/
-+ switchPortAddr = MV_SWITCH_PORT_ADDR(phyUnit);
-+
-+ switchID = phyRegRead(phyBase, switchPortAddr, MV_SWITCH_ID);
-+ if ((switchID & MV_SWITCH_ID_DEV_MASK) !=
-+ MV_SWITCH_ID_DEV_EXPECTATION) {
-+
-+ MV_PRINT(MV_DEBUG_PHYSETUP,
-+ ("Invalid switch ID for ethmac%d port %d. Expected 0x%04x, read 0x%04x\n",
-+ ethUnit,
-+ phyUnit,
-+ MV_SWITCH_ID_DEV_EXPECTATION,
-+ switchID));
-+ return;
-+ }
-+
-+ MV_PRINT(MV_DEBUG_PHYSETUP,
-+ ("Found PHY switch for enet %d port %d deviceID 0x%x revision 0x%x\n",
-+ ethUnit,
-+ phyUnit,
-+ (switchID & MV_SWITCH_ID_DEV_MASK) >> MV_SWITCH_ID_DEV_SHIFT,
-+ (switchID & MV_SWITCH_ID_REV_MASK) >> MV_SWITCH_ID_REV_SHIFT))
-+ }
-+
-+ /*******************************/
-+ /* Verify that switch is ready */
-+ /*******************************/
-+ if (phyBase) {
-+ globalStatus = phyRegRead(phyBase, MV_SWITCH_GLOBAL_ADDR,
-+ MV_SWITCH_GLOBAL_STATUS);
-+
-+ if (!(globalStatus & MV_SWITCH_STATUS_READY_MASK)) {
-+ MV_PRINT(MV_DEBUG_PHYSETUP,
-+ ("PHY switch for ethmac%d NOT ready!\n",
-+ ethUnit));
-+ }
-+ } else {
-+ MV_PRINT(MV_DEBUG_PHYSETUP,
-+ ("No ports configured for ethmac%d\n", ethUnit));
-+ }
-+}
-+
-+/******************************************************************************
-+*
-+* mv_phySetup - reset and setup the PHY switch.
-+*
-+* Resets each PHY port.
-+*
-+* RETURNS:
-+* TRUE --> at least 1 PHY with LINK
-+* FALSE --> no LINKs on this ethernet unit
-+*/
-+BOOL
-+mv_phySetup(int ethUnit, UINT32 phyBase)
-+{
-+ int phyUnit;
-+ int liveLinks = 0;
-+ BOOL foundPhy = FALSE;
-+ UINT32 phyAddr;
-+ UINT16 atuControl;
-+
-+ /*
-+ * Allow platform-specific code to determine the default Ethernet MAC
-+ * at run-time. If phyEthMacDefault returns a negative value, use the
-+ * static mvPhyInfo table "as is". But if phyEthMacDefault returns a
-+ * non-negative value, use it as the default ethernet unit.
-+ */
-+ {
-+ int ethMacDefault = phyEthMacDefault();
-+
-+ if (ethMacDefault >= 0) {
-+ for (phyUnit=0; phyUnit < MV_PHY_MAX; phyUnit++) {
-+ MV_ETHUNIT(phyUnit)=ethMacDefault;
-+ }
-+ }
-+ }
-+
-+ /*
-+ * See if there's any configuration data for this enet,
-+ * and set up phyBase in table.
-+ */
-+ for (phyUnit=0; phyUnit < MV_PHY_MAX; phyUnit++) {
-+ if (MV_ETHUNIT(phyUnit) != ethUnit) {
-+ continue;
-+ }
-+
-+ MV_PHYBASE(phyUnit) = phyBase;
-+ foundPhy = TRUE;
-+ }
-+
-+ if (!foundPhy) {
-+ return FALSE; /* No PHY's configured for this ethUnit */
-+ }
-+
-+ /* Verify that the switch is what we think it is, and that it's ready */
-+ mv_verifyReady(ethUnit);
-+
-+ /* Initialize global switch settings */
-+ atuControl = MV_ATUCTRL_AGE_TIME_DEFAULT << MV_ATUCTRL_AGE_TIME_SHIFT;
-+ atuControl |= MV_ATUCTRL_ATU_SIZE_DEFAULT << MV_ATUCTRL_ATU_SIZE_SHIFT;
-+ phyRegWrite(phyBase, MV_SWITCH_GLOBAL_ADDR, MV_ATU_CONTROL, atuControl);
-+
-+ /* Reset PHYs and start autonegoation on each. */
-+ for (phyUnit=0; phyUnit < MV_PHY_MAX; phyUnit++) {
-+ if (MV_ETHUNIT(phyUnit) != ethUnit) {
-+ continue;
-+ }
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+ phyAddr = MV_PHYADDR(phyUnit);
-+
-+ phyRegWrite(phyBase, phyAddr, MV_PHY_CONTROL,
-+ MV_CTRL_SOFTWARE_RESET | MV_CTRL_AUTONEGOTIATION_ENABLE);
-+ }
-+
-+#if 0 /* Don't wait -- we'll detect shortly after the link comes up */
-+{
-+ int timeout;
-+ UINT16 phyHwStatus;
-+
-+ /*
-+ * Wait 5 seconds for ALL associated PHYs to finish autonegotiation.
-+ */
-+ timeout=50;
-+ for (phyUnit=0; (phyUnit < MV_PHY_MAX) && (timeout > 0); phyUnit++) {
-+ if (!MV_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+ for (;;) {
-+ phyBase = MV_PHYBASE(phyUnit);
-+ phyAddr = MV_PHYADDR(phyUnit);
-+
-+ phyHwStatus = phyRegRead(phyBase, phyAddr, MV_PHY_SPECIFIC_STATUS);
-+
-+ if (MV_AUTONEG_DONE(phyHwStatus)) {
-+ break;
-+ }
-+
-+ if (--timeout == 0) {
-+ break;
-+ }
-+
-+ sysMsDelay(100);
-+ }
-+ }
-+}
-+#endif
-+
-+ /*
-+ * All PHYs have had adequate time to autonegotiate.
-+ * Now initialize software status.
-+ *
-+ * It's possible that some ports may take a bit longer
-+ * to autonegotiate; but we can't wait forever. They'll
-+ * get noticed by mv_phyCheckStatusChange during regular
-+ * polling activities.
-+ */
-+ for (phyUnit=0; phyUnit < MV_PHY_MAX; phyUnit++) {
-+ if (!MV_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+
-+ if (mv_phyIsLinkAlive(phyUnit)) {
-+ liveLinks++;
-+ MV_IS_PHY_ALIVE(phyUnit) = TRUE;
-+ } else {
-+ MV_IS_PHY_ALIVE(phyUnit) = FALSE;
-+ }
-+
-+ MV_PRINT(MV_DEBUG_PHYSETUP,
-+ ("ethmac%d: Phy Status=%4.4x\n",
-+ ethUnit,
-+ phyRegRead(MV_PHYBASE(phyUnit),
-+ MV_PHYADDR(phyUnit),
-+ MV_PHY_SPECIFIC_STATUS)));
-+ }
-+
-+ mv_VLANInit(ethUnit);
-+
-+ mv_enableConfiguredPorts(ethUnit);
-+
-+ return (liveLinks > 0);
-+}
-+
-+
-+/******************************************************************************
-+*
-+* mv_phyIsDuplexFull - Determines whether the phy ports associated with the
-+* specified device are FULL or HALF duplex.
-+*
-+* RETURNS:
-+* 1 --> at least one associated PHY in FULL DUPLEX
-+* 0 --> all half duplex
-+* -1 --> No links
-+*/
-+int
-+mv_phyIsFullDuplex(int ethUnit)
-+{
-+ int phyUnit;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+ UINT16 phyHwStatus;
-+ int oneIsReady=0;
-+
-+ for (phyUnit=0; phyUnit < MV_PHY_MAX; phyUnit++) {
-+ if (!MV_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+
-+ if (mv_phyIsLinkAlive(phyUnit)) {
-+ oneIsReady = 1;
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+ phyAddr = MV_PHYADDR(phyUnit);
-+
-+ phyHwStatus = phyRegRead(phyBase, phyAddr, MV_PHY_SPECIFIC_STATUS);
-+
-+ if (phyHwStatus & MV_STATUS_RESOLVED_DUPLEX_FULL) {
-+ return 1;
-+ }
-+ }
-+ }
-+ if (oneIsReady)
-+ return 0;
-+ else
-+ return -1;
-+}
-+
-+/******************************************************************************
-+*
-+* mv_phyIsSpeed100 - Determines the speed of a phy port
-+*
-+* RETURNS:
-+* TRUE --> PHY operating at 100 Mbit
-+* FALSE --> link down, or not operating at 100 Mbit
-+*/
-+BOOL
-+mv_phyIsSpeed100(int phyUnit)
-+{
-+ UINT16 phyHwStatus;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ if (MV_IS_ENET_PORT(phyUnit)) {
-+ if (mv_phyIsLinkAlive(phyUnit)) {
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+ phyAddr = MV_PHYADDR(phyUnit);
-+
-+ phyHwStatus = phyRegRead(phyBase, phyAddr, MV_PHY_SPECIFIC_STATUS);
-+
-+ if (phyHwStatus & MV_STATUS_RESOLVED_SPEED_100) {
-+ return TRUE;
-+ }
-+ }
-+ }
-+
-+ return FALSE;
-+}
-+
-+#if CONFIG_VENETDEV
-+/******************************************************************************
-+*
-+* mv_phyDetermineSource - Examine a received frame's Egress Trailer
-+* to determine whether it came from a LAN or WAN port.
-+*
-+* RETURNS:
-+* Sets *pFromLAN: 1-->LAN, 0-->WAN
-+* Modifies *pLen to remove PHY trailer from frame
-+*/
-+void
-+mv_phyDetermineSource(char *data, int len, int *pFromLAN)
-+{
-+ unsigned char *phyTrailer;
-+ unsigned char incomingPort;
-+
-+ phyTrailer = &data[len - MV_PHY_TRAILER_SIZE];
-+ ASSERT(phyTrailer[0] == MV_EGRESS_TRAILER_VALID);
-+
-+ incomingPort = phyTrailer[1];
-+ if (MV_IS_LAN_PORT(incomingPort)) {
-+ *pFromLAN = 1;
-+ } else {
-+ ASSERT(MV_IS_WAN_PORT(incomingPort));
-+ *pFromLAN = 0;
-+ }
-+}
-+
-+
-+/******************************************************************************
-+*
-+* mv_phySetDestinationPort - Set the Ingress Trailer to force the
-+* frame to be sent to LAN or WAN, as specified.
-+*
-+*/
-+void
-+mv_phySetDestinationPort(char *data, int len, int fromLAN)
-+{
-+ char *phyTrailer;
-+
-+ phyTrailer = &data[len];
-+ if (fromLAN) {
-+ /* LAN ports: Use default settings, as per mvPhyInfo */
-+ phyTrailer[0] = 0x00;
-+ phyTrailer[1] = 0x00;
-+ } else {
-+ /* WAN port: Direct to WAN port */
-+ phyTrailer[0] = MV_INGRESS_TRAILER_OVERRIDE;
-+ phyTrailer[1] = 1 << MV_WAN_PORT;
-+ }
-+ phyTrailer[2] = 0x00;
-+ phyTrailer[3] = 0x00;
-+}
-+#endif
-+
-+
-+/*****************************************************************************
-+*
-+* Validate that the specified PHY unit number is a valid PHY ID.
-+* Print a message if it is invalid.
-+* RETURNS
-+* TRUE --> valid
-+* FALSE --> invalid
-+*/
-+LOCAL BOOL
-+mv_validPhyId(int phyUnit)
-+{
-+ if ((phyUnit >= MV_ID_MIN) && (phyUnit <= MV_ID_MAX)) {
-+ return TRUE;
-+ } else {
-+ PRINTF("PHY unit number must be in the range [%d..%d]\n",
-+ MV_ID_MIN, MV_ID_MAX);
-+ return FALSE;
-+ }
-+}
-+
-+
-+/*****************************************************************************
-+*
-+* mv_waitWhileATUBusy - spins until the ATU completes
-+* its previous operation.
-+*/
-+LOCAL void
-+mv_waitWhileATUBusy(UINT32 phyBase)
-+{
-+ BOOL isBusy;
-+ UINT16 ATUOperation;
-+
-+ do {
-+
-+ ATUOperation = phyRegRead(phyBase, MV_SWITCH_GLOBAL_ADDR,
-+ MV_ATU_OPERATION);
-+
-+ isBusy = (ATUOperation & MV_ATU_BUSY_MASK) == MV_ATU_IS_BUSY;
-+
-+ } while(isBusy);
-+}
-+
-+/*****************************************************************************
-+*
-+* mv_flushATUDB - flushes ALL entries in the Address Translation Unit
-+* DataBase associated with phyUnit. [Since we use a single DB for
-+* all PHYs, this flushes the entire shared DataBase.]
-+*
-+* The current implementation flushes even more than absolutely needed --
-+* it flushes all entries for all phyUnits on the same ethernet as the
-+* specified phyUnit.
-+*
-+* It is called only when a link failure is detected on a port that was
-+* previously working. In other words, when the cable is unplugged.
-+*/
-+void
-+mv_flushATUDB(int phyUnit)
-+{
-+ UINT32 phyBase;
-+
-+ if (!mv_validPhyId(phyUnit)) {
-+ PRINTF("Invalid port number: %d\n", phyUnit);
-+ return;
-+ }
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+
-+ /* Wait for previous operation (if any) to complete */
-+ mv_waitWhileATUBusy(phyBase);
-+
-+ /* Tell hardware to flush all entries */
-+ phyRegWrite(phyBase, MV_SWITCH_GLOBAL_ADDR, MV_ATU_OPERATION,
-+ MV_ATU_OP_FLUSH_ALL | MV_ATU_IS_BUSY);
-+
-+ mv_waitWhileATUBusy(phyBase);
-+}
-+
-+/*****************************************************************************
-+*
-+* mv_phyCheckStatusChange -- checks for significant changes in PHY state.
-+*
-+* A "significant change" is:
-+* dropped link (e.g. ethernet cable unplugged) OR
-+* autonegotiation completed + link (e.g. ethernet cable plugged in)
-+*/
-+void
-+mv_phyCheckStatusChange(int ethUnit)
-+{
-+ int phyUnit;
-+ UINT16 phyHwStatus;
-+ mvPhyInfo_t *lastStatus;
-+ int linkCount = 0;
-+ int lostLinks = 0;
-+ int gainedLinks = 0;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ for (phyUnit=0; phyUnit < MV_PHY_MAX; phyUnit++) {
-+ if (!MV_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+ phyAddr = MV_PHYADDR(phyUnit);
-+
-+ lastStatus = &mvPhyInfo[phyUnit];
-+ phyHwStatus = phyRegRead(phyBase, phyAddr, MV_PHY_SPECIFIC_STATUS);
-+
-+ if (lastStatus->isPhyAlive) { /* last known link status was ALIVE */
-+ /* See if we've lost link */
-+ if (phyHwStatus & MV_STATUS_REAL_TIME_LINK_UP) {
-+ linkCount++;
-+ } else {
-+ lostLinks++;
-+ mv_flushATUDB(phyUnit);
-+ MV_PRINT(MV_DEBUG_PHYCHANGE,("\nethmac%d port%d down\n",
-+ ethUnit, phyUnit));
-+ lastStatus->isPhyAlive = FALSE;
-+ }
-+ } else { /* last known link status was DEAD */
-+ /* Check for AutoNegotiation complete */
-+ if (MV_AUTONEG_DONE(phyHwStatus)) {
-+ gainedLinks++;
-+ linkCount++;
-+ MV_PRINT(MV_DEBUG_PHYCHANGE,("\nethmac%d port%d up\n",
-+ ethUnit, phyUnit));
-+ lastStatus->isPhyAlive = TRUE;
-+ }
-+ }
-+ }
-+
-+ if (linkCount == 0) {
-+ if (lostLinks) {
-+ /* We just lost the last link for this MAC */
-+ phyLinkLost(ethUnit);
-+ }
-+ } else {
-+ if (gainedLinks == linkCount) {
-+ /* We just gained our first link(s) for this MAC */
-+ phyLinkGained(ethUnit);
-+ }
-+ }
-+}
-+
-+#if DEBUG
-+
-+/* Define the registers of interest for a phyShow command */
-+typedef struct mvRegisterTableEntry_s {
-+ UINT32 regNum;
-+ char *regIdString;
-+} mvRegisterTableEntry_t;
-+
-+mvRegisterTableEntry_t mvPhyRegisterTable[] = {
-+ {MV_PHY_CONTROL, "PHY Control "},
-+ {MV_PHY_STATUS, "PHY Status "},
-+ {MV_PHY_ID1, "PHY Identifier 1 "},
-+ {MV_PHY_ID2, "PHY Identifier 2 "},
-+ {MV_AUTONEG_ADVERT, "Auto-Negotiation Advertisement "},
-+ {MV_LINK_PARTNER_ABILITY, "Link Partner Ability "},
-+ {MV_AUTONEG_EXPANSION, "Auto-Negotiation Expansion "},
-+ {MV_NEXT_PAGE_TRANSMIT, "Next Page Transmit "},
-+ {MV_LINK_PARTNER_NEXT_PAGE, "Link Partner Next Page "},
-+ {MV_PHY_SPECIFIC_CONTROL_1, "PHY-Specific Control Register 1 "},
-+ {MV_PHY_SPECIFIC_STATUS, "PHY-Specific Status "},
-+ {MV_PHY_INTERRUPT_ENABLE, "PHY Interrupt Enable "},
-+ {MV_PHY_INTERRUPT_STATUS, "PHY Interrupt Status "},
-+ {MV_PHY_INTERRUPT_PORT_SUMMARY, "PHY Interrupt Port Summary "},
-+ {MV_RECEIVE_ERROR_COUNTER, "Receive Error Counter "},
-+ {MV_LED_PARALLEL_SELECT, "LED Parallel Select "},
-+ {MV_LED_STREAM_SELECT_LEDS, "LED Stream Select "},
-+ {MV_PHY_LED_CONTROL, "PHY LED Control "},
-+ {MV_PHY_MANUAL_LED_OVERRIDE, "PHY Manual LED Override "},
-+ {MV_VCT_CONTROL, "VCT Control "},
-+ {MV_VCT_STATUS, "VCT Status "},
-+ {MV_PHY_SPECIFIC_CONTROL_2, "PHY-Specific Control Register 2 "},
-+};
-+int mvPhyNumRegs = sizeof(mvPhyRegisterTable) / sizeof(mvPhyRegisterTable[0]);
-+
-+
-+mvRegisterTableEntry_t mvSwitchPortRegisterTable[] = {
-+ {MV_PORT_STATUS, "Port Status "},
-+ {MV_SWITCH_ID, "Switch ID "},
-+ {MV_PORT_CONTROL, "Port Control "},
-+ {MV_PORT_BASED_VLAN_MAP, "Port-Based VLAN Map "},
-+ {MV_PORT_ASSOCIATION_VECTOR, "Port Association Vector "},
-+ {MV_RX_COUNTER, "RX Counter "},
-+ {MV_TX_COUNTER, "TX Counter "},
-+};
-+int mvSwitchPortNumRegs =
-+ sizeof(mvSwitchPortRegisterTable) / sizeof(mvSwitchPortRegisterTable[0]);
-+
-+
-+mvRegisterTableEntry_t mvSwitchGlobalRegisterTable[] = {
-+ {MV_SWITCH_GLOBAL_STATUS, "Switch Global Status "},
-+ {MV_SWITCH_MAC_ADDR0, "Switch MAC Addr 0 & 1 "},
-+ {MV_SWITCH_MAC_ADDR2, "Switch MAC Addr 2 & 3 "},
-+ {MV_SWITCH_MAC_ADDR4, "Switch MAC Addr 4 & 5 "},
-+ {MV_SWITCH_GLOBAL_CONTROL, "Switch Global Control "},
-+ {MV_ATU_CONTROL, "ATU Control "},
-+ {MV_ATU_OPERATION, "ATU Operation "},
-+ {MV_ATU_DATA, "ATU Data "},
-+ {MV_ATU_MAC_ADDR0, "ATU MAC Addr 0 & 1 "},
-+ {MV_ATU_MAC_ADDR2, "ATU MAC Addr 2 & 3 "},
-+ {MV_ATU_MAC_ADDR4, "ATU MAC Addr 4 & 5 "},
-+};
-+int mvSwitchGlobalNumRegs =
-+ sizeof(mvSwitchGlobalRegisterTable) / sizeof(mvSwitchGlobalRegisterTable[0]);
-+
-+void my_mvPhyShow(int ethUnit)
-+{
-+ int phyUnit;
-+ for (phyUnit=0; (phyUnit < MV_PHY_MAX); phyUnit++) {
-+ if (!MV_IS_ETHUNIT(phyUnit, ethUnit)) {
-+ continue;
-+ }
-+ mv_phyShow(phyUnit);
-+ }
-+}
-+
-+/*****************************************************************************
-+*
-+* mv_phyShow - Dump the state of a PHY.
-+* There are two sets of registers for each phy port:
-+* "phy registers" and
-+* "switch port registers"
-+* We dump 'em all, plus the switch global registers.
-+*/
-+void
-+mv_phyShow(int phyUnit)
-+{
-+ int i;
-+ UINT16 value;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+ UINT32 switchPortAddr;
-+
-+ if (!mv_validPhyId(phyUnit)) {
-+ return;
-+ }
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+ phyAddr = MV_PHYADDR(phyUnit);
-+ switchPortAddr = MV_SWITCH_PORT_ADDR(phyUnit);
-+
-+ printk("PHY state for PHY%d (ethmac%d, phyBase 0x%8x, phyAddr 0x%x, switchAddr 0x%x)\n",
-+ phyUnit,
-+ MV_ETHUNIT(phyUnit),
-+ MV_PHYBASE(phyUnit),
-+ MV_PHYADDR(phyUnit),
-+ MV_SWITCH_PORT_ADDR(phyUnit));
-+
-+ printk("PHY Registers:\n");
-+ for (i=0; i < mvPhyNumRegs; i++) {
-+
-+ value = phyRegRead(phyBase, phyAddr, mvPhyRegisterTable[i].regNum);
-+
-+ printk("Reg %02d (0x%02x) %s = 0x%08x\n",
-+ mvPhyRegisterTable[i].regNum,
-+ mvPhyRegisterTable[i].regNum,
-+ mvPhyRegisterTable[i].regIdString,
-+ value);
-+ }
-+
-+ printk("Switch Port Registers:\n");
-+ for (i=0; i < mvSwitchPortNumRegs; i++) {
-+
-+ value = phyRegRead(phyBase, switchPortAddr,
-+ mvSwitchPortRegisterTable[i].regNum);
-+
-+ printk("Reg %02d (0x%02x) %s = 0x%08x\n",
-+ mvSwitchPortRegisterTable[i].regNum,
-+ mvSwitchPortRegisterTable[i].regNum,
-+ mvSwitchPortRegisterTable[i].regIdString,
-+ value);
-+ }
-+
-+ printk("Switch Global Registers:\n");
-+ for (i=0; i < mvSwitchGlobalNumRegs; i++) {
-+
-+ value = phyRegRead(phyBase, MV_SWITCH_GLOBAL_ADDR,
-+ mvSwitchGlobalRegisterTable[i].regNum);
-+
-+ printk("Reg %02d (0x%02x) %s = 0x%08x\n",
-+ mvSwitchGlobalRegisterTable[i].regNum,
-+ mvSwitchGlobalRegisterTable[i].regNum,
-+ mvSwitchGlobalRegisterTable[i].regIdString,
-+ value);
-+ }
-+}
-+
-+/*****************************************************************************
-+*
-+* mv_phySet - Modify the value of a PHY register (debug only).
-+*/
-+void
-+mv_phySet(int phyUnit, UINT32 regnum, UINT32 value)
-+{
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ if (mv_validPhyId(phyUnit)) {
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+ phyAddr = MV_PHYADDR(phyUnit);
-+
-+ phyRegWrite(phyBase, phyAddr, regnum, value);
-+ }
-+}
-+
-+
-+/*****************************************************************************
-+*
-+* mv_switchPortSet - Modify the value of a switch port register (debug only).
-+*/
-+void
-+mv_switchPortSet(int phyUnit, UINT32 regnum, UINT32 value)
-+{
-+ UINT32 phyBase;
-+ UINT32 switchPortAddr;
-+
-+ if (mv_validPhyId(phyUnit)) {
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+ switchPortAddr = MV_SWITCH_PORT_ADDR(phyUnit);
-+
-+ phyRegWrite(phyBase, switchPortAddr, regnum, value);
-+ }
-+}
-+
-+/*****************************************************************************
-+*
-+* mv_switchGlobalSet - Modify the value of a switch global register
-+* (debug only).
-+*/
-+void
-+mv_switchGlobalSet(int phyUnit, UINT32 regnum, UINT32 value)
-+{
-+ UINT32 phyBase;
-+
-+ if (mv_validPhyId(phyUnit)) {
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+
-+ phyRegWrite(phyBase, MV_SWITCH_GLOBAL_ADDR, regnum, value);
-+ }
-+}
-+
-+/*****************************************************************************
-+*
-+* mv_showATUDB - Dump the contents of the Address Translation Unit DataBase
-+* for the PHY switch associated with the specified phy.
-+*/
-+void
-+mv_showATUDB(int phyUnit)
-+{
-+ UINT32 phyBase;
-+ UINT16 ATUData;
-+ UINT16 ATUMac0;
-+ UINT16 ATUMac2;
-+ UINT16 ATUMac4;
-+ int portVec;
-+ int entryState;
-+
-+ if (!mv_validPhyId(phyUnit)) {
-+ printk("Invalid port number: %d\n", phyUnit);
-+ return;
-+ }
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+
-+ /* Wait for previous operation (if any) to complete */
-+ mv_waitWhileATUBusy(phyBase);
-+
-+ /* Initialize ATU MAC to all 1's */
-+ phyRegWrite(phyBase, MV_SWITCH_GLOBAL_ADDR, MV_ATU_MAC_ADDR0, 0xffff);
-+ phyRegWrite(phyBase, MV_SWITCH_GLOBAL_ADDR, MV_ATU_MAC_ADDR2, 0xffff);
-+ phyRegWrite(phyBase, MV_SWITCH_GLOBAL_ADDR, MV_ATU_MAC_ADDR4, 0xffff);
-+
-+ printk(" MAC ADDRESS EntryState PortVector\n");
-+
-+ for(;;) {
-+ /* Tell hardware to get next MAC info */
-+ phyRegWrite(phyBase, MV_SWITCH_GLOBAL_ADDR, MV_ATU_OPERATION,
-+ MV_ATU_OP_GET_NEXT | MV_ATU_IS_BUSY);
-+
-+ mv_waitWhileATUBusy(phyBase);
-+
-+ ATUData = phyRegRead(phyBase, MV_SWITCH_GLOBAL_ADDR, MV_ATU_DATA);
-+ entryState = (ATUData & MV_ENTRYSTATE_MASK) >> MV_ENTRYSTATE_SHIFT;
-+
-+ if (entryState == 0) {
-+ /* We've hit the end of the list */
-+ break;
-+ }
-+
-+ ATUMac0 = phyRegRead(phyBase, MV_SWITCH_GLOBAL_ADDR, MV_ATU_MAC_ADDR0);
-+ ATUMac2 = phyRegRead(phyBase, MV_SWITCH_GLOBAL_ADDR, MV_ATU_MAC_ADDR2);
-+ ATUMac4 = phyRegRead(phyBase, MV_SWITCH_GLOBAL_ADDR, MV_ATU_MAC_ADDR4);
-+
-+ portVec = (ATUData & MV_PORTVEC_MASK) >> MV_PORTVEC_SHIFT;
-+
-+ printk("%02x:%02x:%02x:%02x:%02x:%02x 0x%02x 0x%02x\n",
-+ ATUMac0 >> 8, /* MAC byte 0 */
-+ ATUMac0 & 0xff, /* MAC byte 1 */
-+ ATUMac2 >> 8, /* MAC byte 2 */
-+ ATUMac2 & 0xff, /* MAC byte 3 */
-+ ATUMac4 >> 8, /* MAC byte 4 */
-+ ATUMac4 & 0xff, /* MAC byte 5 */
-+ entryState,
-+ portVec);
-+ }
-+}
-+
-+LOCAL BOOL countingGoodFrames;
-+
-+/*****************************************************************************
-+*
-+* mv_countGoodFrames - starts counting GOOD RX/TX frames per port
-+*/
-+void
-+mv_countGoodFrames(int phyUnit)
-+{
-+ UINT32 phyBase;
-+ UINT16 globalControl;
-+
-+ if (mv_validPhyId(phyUnit)) {
-+ /*
-+ * Guarantee that counters are cleared by
-+ * forcing CtrMode to toggle and end on GOODFRAMES.
-+ */
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+
-+ /* Read current Switch Global Control Register */
-+ globalControl = phyRegRead(phyBase, MV_SWITCH_GLOBAL_ADDR,
-+ MV_SWITCH_GLOBAL_CONTROL);
-+
-+ /* Set CtrMode to count BAD frames */
-+ globalControl = ((globalControl & ~MV_CTRMODE_MASK) |
-+ MV_CTRMODE_BADFRAMES);
-+
-+ /* Push new value out to hardware */
-+ phyRegWrite(phyBase, MV_SWITCH_GLOBAL_ADDR,
-+ MV_SWITCH_GLOBAL_CONTROL, globalControl);
-+
-+ /* Now toggle CtrMode to count GOOD frames */
-+ globalControl = ((globalControl & ~MV_CTRMODE_MASK) |
-+ MV_CTRMODE_GOODFRAMES);
-+
-+ /* Push new value out to hardware */
-+ phyRegWrite(phyBase, MV_SWITCH_GLOBAL_ADDR,
-+ MV_SWITCH_GLOBAL_CONTROL, globalControl);
-+
-+ countingGoodFrames = TRUE;
-+ }
-+}
-+
-+/*****************************************************************************
-+*
-+* mv_countBadFrames - starts counting BAD RX/TX frames per port
-+*/
-+void
-+mv_countBadFrames(int phyUnit)
-+{
-+ UINT32 phyBase;
-+ UINT16 globalControl;
-+
-+ if (mv_validPhyId(phyUnit)) {
-+ /*
-+ * Guarantee that counters are cleared by
-+ * forcing CtrMode to toggle and end on BADFRAMES.
-+ */
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+
-+ /* Read current Switch Global Control Register */
-+ globalControl = phyRegRead(phyBase, MV_SWITCH_GLOBAL_ADDR,
-+ MV_SWITCH_GLOBAL_CONTROL);
-+
-+ /* Set CtrMode to count GOOD frames */
-+ globalControl = ((globalControl & ~MV_CTRMODE_MASK) |
-+ MV_CTRMODE_GOODFRAMES);
-+
-+ /* Push new value out to hardware */
-+ phyRegWrite(phyBase, MV_SWITCH_GLOBAL_ADDR,
-+ MV_SWITCH_GLOBAL_CONTROL, globalControl);
-+
-+ /* Now toggle CtrMode to count BAD frames */
-+ globalControl = ((globalControl & ~MV_CTRMODE_MASK) |
-+ MV_CTRMODE_BADFRAMES);
-+
-+ /* Push new value out to hardware */
-+ phyRegWrite(phyBase, MV_SWITCH_GLOBAL_ADDR,
-+ MV_SWITCH_GLOBAL_CONTROL, globalControl);
-+
-+ countingGoodFrames = FALSE;
-+ }
-+}
-+
-+/*****************************************************************************
-+*
-+* mv_showFrameCounts - shows current GOOD/BAD Frame counts
-+*/
-+void
-+mv_showFrameCounts(int phyUnit)
-+{
-+ UINT16 rxCounter;
-+ UINT16 txCounter;
-+ UINT32 phyBase;
-+ UINT32 switchPortAddr;
-+
-+ if (!mv_validPhyId(phyUnit)) {
-+ return;
-+ }
-+
-+ phyBase = MV_PHYBASE(phyUnit);
-+ switchPortAddr = MV_SWITCH_PORT_ADDR(phyUnit);
-+
-+ rxCounter = phyRegRead(phyBase, switchPortAddr, MV_RX_COUNTER);
-+
-+ txCounter = phyRegRead(phyBase, switchPortAddr, MV_TX_COUNTER);
-+
-+ printk("port%d %s frames: receive: %05d transmit: %05d\n",
-+ phyUnit,
-+ (countingGoodFrames ? "good" : "error"),
-+ rxCounter,
-+ txCounter);
-+}
-+#endif
-diff -urN linux-mips-orig/drivers/net/ath/mvPhy.h linux-mips-new/drivers/net/ath/mvPhy.h
---- linux-mips-orig/drivers/net/ath/mvPhy.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/mvPhy.h 2005-12-31 12:33:57.727530616 +0000
-@@ -0,0 +1,162 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * mvPhy.h - definitions for the ethernet PHY -- Marvell 88E6060
-+ * All definitions in this file are operating system independent!
-+ */
-+
-+#ifndef MVPHY_H
-+#define MVPHY_H
-+
-+/*****************/
-+/* PHY Registers */
-+/*****************/
-+#define MV_PHY_CONTROL 0
-+#define MV_PHY_STATUS 1
-+#define MV_PHY_ID1 2
-+#define MV_PHY_ID2 3
-+#define MV_AUTONEG_ADVERT 4
-+#define MV_LINK_PARTNER_ABILITY 5
-+#define MV_AUTONEG_EXPANSION 6
-+#define MV_NEXT_PAGE_TRANSMIT 7
-+#define MV_LINK_PARTNER_NEXT_PAGE 8
-+#define MV_PHY_SPECIFIC_CONTROL_1 16
-+#define MV_PHY_SPECIFIC_STATUS 17
-+#define MV_PHY_INTERRUPT_ENABLE 18
-+#define MV_PHY_INTERRUPT_STATUS 19
-+#define MV_PHY_INTERRUPT_PORT_SUMMARY 20
-+#define MV_RECEIVE_ERROR_COUNTER 21
-+#define MV_LED_PARALLEL_SELECT 22
-+#define MV_LED_STREAM_SELECT_LEDS 23
-+#define MV_PHY_LED_CONTROL 24
-+#define MV_PHY_MANUAL_LED_OVERRIDE 25
-+
-+#define MV_VCT_CONTROL 26
-+#define MV_VCT_STATUS 27
-+#define MV_PHY_SPECIFIC_CONTROL_2 28
-+
-+/* MV_PHY_CONTROL fields */
-+#define MV_CTRL_SOFTWARE_RESET 0x8000
-+#define MV_CTRL_AUTONEGOTIATION_ENABLE 0x1000
-+#define MV_CTRL_FULL_DUPLEX 0x0100
-+#define MV_CTRL_100_MBPS 0x2000
-+
-+/* MV_PHY_ID1 fields */
-+#define MV_PHY_ID1_EXPECTATION 0x0141 /* OUI >> 6 */
-+
-+/* MV_PHY_ID2 fields */
-+#define MV_OUI_LSB_MASK 0xfc00
-+#define MV_OUI_LSB_EXPECTATION 0x0c00
-+#define MV_OUI_LSB_SHIFT 10
-+#define MV_MODEL_NUM_MASK 0x03f0
-+#define MV_MODEL_NUM_SHIFT 4
-+#define MV_REV_NUM_MASK 0x000f
-+#define MV_REV_NUM_SHIFT 0
-+
-+/* MV_PHY_SPECIFIC_STATUS fields */
-+#define MV_STATUS_RESOLVED_SPEED_100 0x4000
-+#define MV_STATUS_RESOLVED_DUPLEX_FULL 0x2000
-+#define MV_STATUS_RESOLVED 0x0800
-+#define MV_STATUS_REAL_TIME_LINK_UP 0x0400
-+
-+/* Check if autonegotiation is complete and link is up */
-+#define MV_AUTONEG_DONE(mv_phy_specific_status) \
-+ (((mv_phy_specific_status) & \
-+ (MV_STATUS_RESOLVED | MV_STATUS_REAL_TIME_LINK_UP)) == \
-+ (MV_STATUS_RESOLVED | MV_STATUS_REAL_TIME_LINK_UP))
-+
-+
-+/*************************/
-+/* Switch Port Registers */
-+/*************************/
-+#define MV_PORT_STATUS 0
-+#define MV_SWITCH_ID 3
-+#define MV_PORT_CONTROL 4
-+#define MV_PORT_BASED_VLAN_MAP 6
-+#define MV_PORT_ASSOCIATION_VECTOR 11
-+#define MV_RX_COUNTER 16
-+#define MV_TX_COUNTER 17
-+
-+/* MV_SWITCH_ID fields */
-+#define MV_SWITCH_ID_DEV_MASK 0xfff0
-+#define MV_SWITCH_ID_DEV_EXPECTATION 0x0600
-+#define MV_SWITCH_ID_DEV_SHIFT 4
-+#define MV_SWITCH_ID_REV_MASK 0x000f
-+#define MV_SWITCH_ID_REV_SHIFT 0
-+
-+/* MV_PORT_CONTROL fields */
-+#define MV_PORT_CONTROL_PORT_STATE_MASK 0x0003
-+#define MV_PORT_CONTROL_PORT_STATE_DISABLED 0x0000
-+#define MV_PORT_CONTROL_PORT_STATE_FORWARDING 0x0003
-+
-+#define MV_PORT_CONTROL_EGRESS_MODE 0x0100 /* Receive */
-+#define MV_PORT_CONTROL_INGRESS_TRAILER 0x4000 /* Transmit */
-+
-+#define MV_EGRESS_TRAILER_VALID 0x80
-+#define MV_INGRESS_TRAILER_OVERRIDE 0x80
-+
-+#define MV_PHY_TRAILER_SIZE 4
-+
-+
-+/***************************/
-+/* Switch Global Registers */
-+/***************************/
-+#define MV_SWITCH_GLOBAL_STATUS 0
-+#define MV_SWITCH_MAC_ADDR0 1
-+#define MV_SWITCH_MAC_ADDR2 2
-+#define MV_SWITCH_MAC_ADDR4 3
-+#define MV_SWITCH_GLOBAL_CONTROL 4
-+#define MV_ATU_CONTROL 10
-+#define MV_ATU_OPERATION 11
-+#define MV_ATU_DATA 12
-+#define MV_ATU_MAC_ADDR0 13
-+#define MV_ATU_MAC_ADDR2 14
-+#define MV_ATU_MAC_ADDR4 15
-+
-+/* MV_SWITCH_GLOBAL_STATUS fields */
-+#define MV_SWITCH_STATUS_READY_MASK 0x0800
-+
-+/* MV_SWITCH_GLOBAL_CONTROL fields */
-+#define MV_CTRMODE_MASK 0x0100
-+#define MV_CTRMODE_GOODFRAMES 0x0000
-+#define MV_CTRMODE_BADFRAMES 0x0100
-+
-+/* MV_ATU_CONTROL fields */
-+#define MV_ATUCTRL_ATU_SIZE_MASK 0x3000
-+#define MV_ATUCTRL_ATU_SIZE_SHIFT 12
-+#define MV_ATUCTRL_ATU_SIZE_DEFAULT 2 /* 1024 entry database */
-+#define MV_ATUCTRL_AGE_TIME_MASK 0x0ff0
-+#define MV_ATUCTRL_AGE_TIME_SHIFT 4
-+#define MV_ATUCTRL_AGE_TIME_DEFAULT 19 /* 19 * 16 = 304 seconds */
-+
-+/* MV_ATU_OPERATION fields */
-+#define MV_ATU_BUSY_MASK 0x8000
-+#define MV_ATU_IS_BUSY 0x8000
-+#define MV_ATU_IS_FREE 0x0000
-+#define MV_ATU_OP_MASK 0x7000
-+#define MV_ATU_OP_FLUSH_ALL 0x1000
-+#define MV_ATU_OP_GET_NEXT 0x4000
-+
-+/* MV_ATU_DATA fields */
-+#define MV_ENTRYPRI_MASK 0xc000
-+#define MV_ENTRYPRI_SHIFT 14
-+#define MV_PORTVEC_MASK 0x03f0
-+#define MV_PORTVEC_SHIFT 4
-+#define MV_ENTRYSTATE_MASK 0x000f
-+#define MV_ENTRYSTATE_SHIFT 0
-+
-+/* PHY Address for the switch itself */
-+#define MV_SWITCH_GLOBAL_ADDR 0x1f
-+
-+BOOL mv_phySetup(int ethUnit, UINT32 phyBase);
-+void mv_phyCheckStatusChange(int ethUnit);
-+BOOL mv_phyIsSpeed100(int ethUnit);
-+int mv_phyIsFullDuplex(int ethUnit);
-+
-+#endif /* MVPHY_H */
-diff -urN linux-mips-orig/drivers/net/ath/rtPhy.c linux-mips-new/drivers/net/ath/rtPhy.c
---- linux-mips-orig/drivers/net/ath/rtPhy.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/rtPhy.c 2005-12-31 12:33:57.727530616 +0000
-@@ -0,0 +1,272 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * Manage the ethernet PHY.
-+ * This code supports a simple 1-port ethernet phy, Realtek RTL8201BL,
-+ * and compatible PHYs, such as the Kendin KS8721B.
-+ * All definitions in this file are operating system independent!
-+ */
-+
-+#if defined(linux)
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/delay.h>
-+
-+#include "ar531xlnx.h"
-+#endif
-+
-+#if defined(__ECOS)
-+#include "ae531xecos.h"
-+#endif
-+
-+
-+#include "ae531xmac.h"
-+#include "ae531xreg.h"
-+#include "rtPhy.h"
-+
-+#if /* DEBUG */ 1
-+#define RT_DEBUG_ERROR 0x00000001
-+#define RT_DEBUG_PHYSETUP 0x00000002
-+#define RT_DEBUG_PHYCHANGE 0x00000004
-+
-+int rtPhyDebug = RT_DEBUG_ERROR;
-+
-+#define RT_PRINT(FLG, X) \
-+{ \
-+ if (rtPhyDebug & (FLG)) { \
-+ DEBUG_PRINTF X; \
-+ } \
-+}
-+#else
-+#define RT_PRINT(FLG, X)
-+#endif
-+
-+/*
-+ * Track per-PHY port information.
-+ */
-+typedef struct {
-+ BOOL phyAlive; /* last known state of link */
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+} rtPhyInfo_t;
-+
-+#define ETH_PHY_ADDR 1
-+
-+/*
-+ * This table defines the mapping from phy units to
-+ * per-PHY information.
-+ *
-+ * This table is somewhat board-dependent.
-+ */
-+rtPhyInfo_t rtPhyInfo[] = {
-+ {phyAlive: FALSE, /* PHY 0 */
-+ phyBase: 0, /* filled in by rt_phySetup */
-+ phyAddr: ETH_PHY_ADDR},
-+
-+ {phyAlive: FALSE, /* PHY 1 */
-+ phyBase: 0, /* filled in by rt_phySetup */
-+ phyAddr: ETH_PHY_ADDR}
-+};
-+
-+/* Convert from phy unit# to (phyBase, phyAddr) pair */
-+#define RT_PHYBASE(phyUnit) (rtPhyInfo[phyUnit].phyBase)
-+#define RT_PHYADDR(phyUnit) (rtPhyInfo[phyUnit].phyAddr)
-+
-+
-+/******************************************************************************
-+*
-+* rt_phySetup - reset and setup the PHY associated with
-+* the specified MAC unit number.
-+*
-+* Resets the associated PHY port.
-+*
-+* RETURNS:
-+* TRUE --> associated PHY is alive
-+* FALSE --> no LINKs on this ethernet unit
-+*/
-+
-+BOOL
-+rt_phySetup(int ethUnit, UINT32 phyBase)
-+{
-+ BOOL linkAlive = FALSE;
-+ UINT32 phyAddr;
-+
-+ RT_PHYBASE(ethUnit) = phyBase;
-+
-+ phyAddr = RT_PHYADDR(ethUnit);
-+
-+ /* Reset phy */
-+ phyRegWrite(phyBase, phyAddr, GEN_ctl, PHY_SW_RST | AUTONEGENA);
-+
-+ sysMsDelay(1500);
-+
-+ return linkAlive;
-+}
-+
-+/******************************************************************************
-+*
-+* rt_phyIsDuplexFull - Determines whether the phy ports associated with the
-+* specified device are FULL or HALF duplex.
-+*
-+* RETURNS:
-+* 1 --> FULL
-+* 0 --> HALF
-+*/
-+int
-+rt_phyIsFullDuplex(int ethUnit)
-+{
-+ UINT16 phyCtl;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ phyBase = RT_PHYBASE(ethUnit);
-+ phyAddr = RT_PHYADDR(ethUnit);
-+
-+ phyCtl = phyRegRead(phyBase, phyAddr, GEN_ctl);
-+
-+ if (phyCtl & DUPLEX) {
-+ return 1;
-+ } else {
-+ return 0;
-+ }
-+}
-+
-+/******************************************************************************
-+*
-+* rt_phyIsSpeed100 - Determines the speed of phy ports associated with the
-+* specified device.
-+*
-+* RETURNS:
-+* TRUE --> 100Mbit
-+* FALSE --> 10Mbit
-+*/
-+BOOL
-+rt_phyIsSpeed100(int phyUnit)
-+{
-+ UINT16 phyLpa;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ phyBase = RT_PHYBASE(phyUnit);
-+ phyAddr = RT_PHYADDR(phyUnit);
-+
-+ phyLpa = phyRegRead(phyBase, phyAddr, AN_lpa);
-+
-+ if (phyLpa & (LPA_TXFD | LPA_TX)) {
-+ return TRUE;
-+ } else {
-+ return FALSE;
-+ }
-+}
-+
-+/*****************************************************************************
-+*
-+* rt_phyCheckStatusChange -- checks for significant changes in PHY state.
-+*
-+* A "significant change" is:
-+* dropped link (e.g. ethernet cable unplugged) OR
-+* autonegotiation completed + link (e.g. ethernet cable plugged in)
-+*
-+* On AR5311, there is a 1-to-1 mapping of ethernet units to PHYs.
-+* When a PHY is plugged in, phyLinkGained is called.
-+* When a PHY is unplugged, phyLinkLost is called.
-+*/
-+void
-+rt_phyCheckStatusChange(int ethUnit)
-+{
-+ UINT16 phyHwStatus;
-+ rtPhyInfo_t *lastStatus = &rtPhyInfo[ethUnit];
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ phyBase = RT_PHYBASE(ethUnit);
-+ phyAddr = RT_PHYADDR(ethUnit);
-+
-+ phyHwStatus = phyRegRead(phyBase, phyAddr, GEN_sts);
-+
-+ if (lastStatus->phyAlive) { /* last known status was ALIVE */
-+ /* See if we've lost link */
-+ if (!(phyHwStatus & LINK)) {
-+ RT_PRINT(RT_DEBUG_PHYCHANGE,("\nethmac%d link down\n", ethUnit));
-+ lastStatus->phyAlive = FALSE;
-+ phyLinkLost(ethUnit);
-+ }
-+ } else { /* last known status was DEAD */
-+ /* Check for AN complete */
-+ if ((phyHwStatus & (AUTOCMPLT | LINK)) == (AUTOCMPLT | LINK)) {
-+ RT_PRINT(RT_DEBUG_PHYCHANGE,("\nethmac%d link up\n", ethUnit));
-+ lastStatus->phyAlive = TRUE;
-+ phyLinkGained(ethUnit);
-+ }
-+ }
-+}
-+
-+#if DEBUG
-+
-+/* Define the PHY registers of interest for a phyShow command */
-+struct rtRegisterTable_s {
-+ UINT32 regNum;
-+ char *regIdString;
-+} rtRegisterTable[] =
-+{
-+ {GEN_ctl, "Basic Mode Control (GEN_ctl) "},
-+ {GEN_sts, "Basic Mode Status (GEN_sts) "},
-+ {GEN_id_hi, "PHY Identifier 1 (GET_id_hi) "},
-+ {GEN_id_lo, "PHY Identifier 2 (GET_id_lo) "},
-+ {AN_adv, "Auto-Neg Advertisement (AN_adv) "},
-+ {AN_lpa, "Auto-Neg Link Partner Ability "},
-+ {AN_exp, "Auto-Neg Expansion "},
-+};
-+
-+int rtNumRegs = sizeof(rtRegisterTable) / sizeof(rtRegisterTable[0]);
-+
-+/*
-+ * Dump the state of a PHY.
-+ */
-+void
-+rt_phyShow(int phyUnit)
-+{
-+ int i;
-+ UINT16 value;
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ phyBase = RT_PHYBASE(phyUnit);
-+ phyAddr = RT_PHYADDR(phyUnit);
-+
-+ printf("PHY state for ethphy%d\n", phyUnit);
-+
-+ for (i=0; i<rtNumRegs; i++) {
-+
-+ value = phyRegRead(phyBase, phyAddr, rtRegisterTable[i].regNum);
-+
-+ printf("Reg %02d (0x%02x) %s = 0x%08x\n",
-+ rtRegisterTable[i].regNum, rtRegisterTable[i].regNum,
-+ rtRegisterTable[i].regIdString, value);
-+ }
-+}
-+
-+/*
-+ * Modify the value of a PHY register.
-+ * This makes it a bit easier to modify PHY values during debug.
-+ */
-+void
-+rt_phySet(int phyUnit, UINT32 regnum, UINT32 value)
-+{
-+ UINT32 phyBase;
-+ UINT32 phyAddr;
-+
-+ phyBase = RT_PHYBASE(phyUnit);
-+ phyAddr = RT_PHYADDR(phyUnit);
-+
-+ phyRegWrite(phyBase, phyAddr, regnum, value);
-+}
-+#endif
-diff -urN linux-mips-orig/drivers/net/ath/rtPhy.h linux-mips-new/drivers/net/ath/rtPhy.h
---- linux-mips-orig/drivers/net/ath/rtPhy.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips-new/drivers/net/ath/rtPhy.h 2005-12-31 12:33:57.727530616 +0000
-@@ -0,0 +1,50 @@
-+/*
-+ * 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 © 2003 Atheros Communications, Inc., All Rights Reserved.
-+ */
-+
-+/*
-+ * rtPhy.h - definitions for the ethernet PHY.
-+ * This code supports a simple 1-port ethernet phy, Realtek RTL8201BL,
-+ * and compatible PHYs, such as the Kendin KS8721B.
-+ * All definitions in this file are operating system independent!
-+ */
-+
-+#ifndef RTPHY_H
-+#define RTPHY_H
-+
-+/* MII Registers */
-+
-+#define GEN_ctl 00
-+#define GEN_sts 01
-+#define GEN_id_hi 02
-+#define GEN_id_lo 03
-+#define AN_adv 04
-+#define AN_lpa 05
-+#define AN_exp 06
-+
-+/* GEN_ctl */
-+#define PHY_SW_RST 0x8000
-+#define LOOPBACK 0x4000
-+#define SPEED 0x2000 /* 100 Mbit/s */
-+#define AUTONEGENA 0x1000
-+#define DUPLEX 0x0100 /* Duplex mode */
-+
-+
-+/* GEN_sts */
-+#define AUTOCMPLT 0x0020 /* Autonegotiation completed */
-+#define LINK 0x0004 /* Link status */
-+
-+/* GEN_ids */
-+#define RT_PHY_ID1_EXPECTATION 0x22
-+
-+/* AN_lpa */
-+#define LPA_TXFD 0x0100 /* Link partner supports 100 TX Full Duplex */
-+#define LPA_TX 0x0080 /* Link partner supports 100 TX Half Duplex */
-+#define LPA_10FD 0x0040 /* Link partner supports 10 BT Full Duplex */
-+#define LPA_10 0x0020 /* Link partner supports 10 BT Half Duplex */
-+
-+#endif /* RTPHY_H */
-diff -urN linux-mips/include/linux/raid/md_p.h mips-linux-2.4.25/include/linux/raid/md_p.h
---- linux-mips/include/linux/raid/md_p.h 2005-12-24 15:12:07.189098448 +0000
-+++ mips-linux-2.4.25/include/linux/raid/md_p.h 2005-12-30 17:28:10.345721232 +0000
-@@ -151,10 +151,12 @@
- */
- mdp_disk_t disks[MD_SB_DISKS];
-
-+#if MD_SB_RESERVED_WORDS
- /*
- * Reserved
- */
- __u32 reserved[MD_SB_RESERVED_WORDS];
-+#endif
-
- /*
- * Active descriptor
diff --git a/openwrt/target/linux/ar7-2.4/Config.in b/openwrt/target/linux/ar7-2.4/Config.in
deleted file mode 100644
index 9d1fe7b813..0000000000
--- a/openwrt/target/linux/ar7-2.4/Config.in
+++ /dev/null
@@ -1,29 +0,0 @@
-config BR2_PACKAGE_KMOD_CPMAC
- prompt "kmod-cpmac........................ AR7 CPMAC Network Driver"
- tristate
- default y
- depends BR2_LINUX_2_4_AR7
- help
- Driver for the AR7 CPMAC network chip
-
-config BR2_PACKAGE_KMOD_SANGAM_ATM_A
- prompt "kmod-sangam-atm-annex-a........... AR7 Sangam ADSL Driver (Annex A)"
- tristate
- default m
- depends BR2_LINUX_2_4_AR7
- select BR2_PACKAGE_KMOD_ATM
- help
- ATM driver for the Sangam ADSL chip on AR7
- Annex A version
-
-config BR2_PACKAGE_KMOD_SANGAM_ATM_B
- prompt "kmod-sangam-atm-annex-b........... AR7 Sangam ADSL Driver (Annex B)"
- tristate
- default y
- depends BR2_LINUX_2_4_AR7
- select BR2_PACKAGE_KMOD_ATM
- help
- ATM driver for the Sangam ADSL chip on AR7
- Annex B version
-
-
diff --git a/openwrt/target/linux/ar7-2.4/Makefile b/openwrt/target/linux/ar7-2.4/Makefile
deleted file mode 100644
index 10be12117b..0000000000
--- a/openwrt/target/linux/ar7-2.4/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-LINUX_VERSION:=2.4.32
-LINUX_RELEASE:=1
-LINUX_KERNEL_MD5SUM:=38f4d0830e95a20f4bfed17622d5557c
-
-include ../rules.mk
-include ./config
-
-ATM_FIRMWARE_VERSION:=0.4
-ATM_FIRMWARE_DIR=sangam-atm-firmware-$(ATM_FIRMWARE_VERSION)
-
-$(eval $(call KMOD_template,SANGAM_ATM_A,sangam-atm-annex-a,\
- $(MODULES_DIR)/kernel/drivers/atm/tiatm.o \
-,CONFIG_MIPS_SANGAM_ATM,kmod-atm,60,tiatm, \
- $(CP) $(BUILD_DIR)/$(ATM_FIRMWARE_DIR)/ar0700xx_a.bin $$(I_SANGAM_ATM_A)/lib/modules/ar0700xx.bin \
-))
-
-$(eval $(call KMOD_template,SANGAM_ATM_B,sangam-atm-annex-b,\
- $(MODULES_DIR)/kernel/drivers/atm/tiatm.o \
-,CONFIG_MIPS_SANGAM_ATM,kmod-atm,60,tiatm, \
- $(CP) $(BUILD_DIR)/$(ATM_FIRMWARE_DIR)/ar0700xx_b.bin $$(I_SANGAM_ATM_B)/lib/modules/ar0700xx.bin \
-))
-
-$(eval $(call KMOD_template,CPMAC,cpmac,\
- $(MODULES_DIR)/kernel/drivers/net/avalanche_cpmac/avalanche_cpmac.o \
-,CONFIG_MIPS_AVALANCHE_CPMAC,,10,avalanche_cpmac))
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
-
-
-$(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
- [ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches $(MAKE_TRACE)
- [ -d ./patches ] && $(PATCH) $(LINUX_DIR) ./patches $(MAKE_TRACE)
- @$(CP) config $(LINUX_DIR)/.config
- touch $@
-
-
-###############################################
-# ATM firmware for the DSL modem
-###############################################
-
-DOWNLOAD_SITE=http://openwrt.org/downloads/sources
-# extracted from netgear DG834B V1.0.5 GPL release
-ATM_FIRMWARE_FILE=$(ATM_FIRMWARE_DIR).tar.gz
-ATM_FIRMWARE_MD5SUM=8bfcb31109796502d66b11baaeb2fba6
-
-$(DL_DIR)/$(ATM_FIRMWARE_FILE):
- $(SCRIPT_DIR)/download.pl $(DL_DIR) $(ATM_FIRMWARE_FILE) $(ATM_FIRMWARE_MD5SUM) $(DOWNLOAD_SITE) $(MAKE_TRACE)
-
-$(LINUX_DIR)/.unpacked: $(DL_DIR)/$(ATM_FIRMWARE_FILE)
-$(LINUX_DIR)/.depend_done: $(LINUX_DIR)/.drivers-unpacked
-$(LINUX_DIR)/.modules_done: $(LINUX_DIR)/.drivers-unpacked
-
-$(LINUX_DIR)/.drivers-unpacked: $(LINUX_DIR)/.unpacked
- -mkdir -p $(BUILD_DIR)
- zcat $(DL_DIR)/$(ATM_FIRMWARE_FILE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
- touch $@
-
-linux-dirclean: drivers-clean
-
-drivers-clean:
- rm -rf $(BUILD_DIR)/$(ATM_FIRMWARE_DIR)
-
-
diff --git a/openwrt/target/linux/ar7-2.4/config b/openwrt/target/linux/ar7-2.4/config
deleted file mode 100644
index 5f7a1513b7..0000000000
--- a/openwrt/target/linux/ar7-2.4/config
+++ /dev/null
@@ -1,1080 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_MIPS=y
-CONFIG_MIPS32=y
-# CONFIG_MIPS64 is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_KMOD is not set
-
-#
-# Machine selection
-#
-# CONFIG_ACER_PICA_61 is not set
-CONFIG_AR7=y
-# CONFIG_AR7DB is not set
-# CONFIG_AR7RD is not set
-CONFIG_AR7WRD=y
-CONFIG_AR7_CPU=150
-CONFIG_AR7_SYS=125
-CONFIG_AR7_MEMORY=0x14000000
-# CONFIG_MIPS_BOSPORUS is not set
-# CONFIG_MIPS_FICMMP is not set
-# CONFIG_MIPS_MIRAGE is not set
-# CONFIG_MIPS_DB1000 is not set
-# CONFIG_MIPS_DB1100 is not set
-# CONFIG_MIPS_DB1500 is not set
-# CONFIG_MIPS_DB1550 is not set
-# CONFIG_MIPS_DB1200 is not set
-# CONFIG_MIPS_PB1000 is not set
-# CONFIG_MIPS_PB1100 is not set
-# CONFIG_MIPS_PB1500 is not set
-# CONFIG_MIPS_PB1550 is not set
-# CONFIG_MIPS_PB1200 is not set
-# CONFIG_MIPS_HYDROGEN3 is not set
-# CONFIG_MIPS_XXS1500 is not set
-# CONFIG_MIPS_MTX1 is not set
-# CONFIG_COGENT_CSB250 is not set
-# CONFIG_BAGET_MIPS is not set
-# CONFIG_CASIO_E55 is not set
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_DECSTATION is not set
-# CONFIG_MIPS_EV64120 is not set
-# CONFIG_MIPS_EV96100 is not set
-# CONFIG_MIPS_IVR is not set
-# CONFIG_HP_LASERJET is not set
-# CONFIG_IBM_WORKPAD is not set
-# CONFIG_LASAT is not set
-# CONFIG_MIPS_ITE8172 is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_MAGNUM_4000 is not set
-# CONFIG_MIPS_MALTA is not set
-# CONFIG_MIPS_SEAD is not set
-# CONFIG_MOMENCO_OCELOT is not set
-# CONFIG_MOMENCO_OCELOT_G is not set
-# CONFIG_MOMENCO_OCELOT_C is not set
-# CONFIG_MOMENCO_JAGUAR_ATX is not set
-# CONFIG_PMC_BIG_SUR is not set
-# CONFIG_PMC_STRETCH is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_DDB5074 is not set
-# CONFIG_DDB5476 is not set
-# CONFIG_DDB5477 is not set
-# CONFIG_NEC_OSPREY is not set
-# CONFIG_NEC_EAGLE is not set
-# CONFIG_OLIVETTI_M700 is not set
-# CONFIG_NINO is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SIBYTE_SB1xxx_SOC is not set
-# CONFIG_SNI_RM200_PCI is not set
-# CONFIG_TANBAC_TB0226 is not set
-# CONFIG_TANBAC_TB0229 is not set
-# CONFIG_TOSHIBA_JMR3927 is not set
-# CONFIG_TOSHIBA_RBTX4927 is not set
-# CONFIG_VICTOR_MPC30X is not set
-# CONFIG_ZAO_CAPCELLA is not set
-# CONFIG_HIGHMEM is not set
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-CONFIG_IRQ_CPU=y
-CONFIG_NONCOHERENT_IO=y
-CONFIG_SWAP_IO_SPACE=y
-# CONFIG_MIPS_AU1000 is not set
-
-#
-# CPU selection
-#
-CONFIG_CPU_MIPS32=y
-# CONFIG_CPU_MIPS64 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_VR41XX is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-CONFIG_PAGE_SIZE_4KB=y
-# CONFIG_PAGE_SIZE_16KB is not set
-# CONFIG_PAGE_SIZE_64KB is not set
-CONFIG_CPU_HAS_PREFETCH=y
-# CONFIG_VTAG_ICACHE is not set
-# CONFIG_64BIT_PHYS_ADDR is not set
-# CONFIG_CPU_ADVANCED is not set
-CONFIG_CPU_HAS_LLSC=y
-# CONFIG_CPU_HAS_LLDSCD is not set
-# CONFIG_CPU_HAS_WB is not set
-CONFIG_CPU_HAS_SYNC=y
-
-#
-# General setup
-#
-CONFIG_CPU_LITTLE_ENDIAN=y
-# CONFIG_BUILD_ELF64 is not set
-CONFIG_NET=y
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_TC is not set
-# CONFIG_MCA is not set
-# CONFIG_SBUS is not set
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-# CONFIG_PCMCIA is not set
-
-#
-# PCI Hotplug Support
-#
-# CONFIG_HOTPLUG_PCI is not set
-# CONFIG_HOTPLUG_PCI_COMPAQ is not set
-# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
-# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set
-# CONFIG_HOTPLUG_PCI_PCIE is not set
-# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_ELF_AOUT is not set
-# CONFIG_MIPS32_COMPAT is not set
-# CONFIG_MIPS32_O32 is not set
-# CONFIG_MIPS32_N32 is not set
-# CONFIG_BINFMT_ELF32 is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_OOM_KILLER is not set
-CONFIG_CMDLINE_BOOL=y
-CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=squashfs,jffs2 init=/etc/preinit noinitrd"
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# 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
-
-#
-# 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_CFI_B1 is not set
-CONFIG_MTD_CFI_B2=y
-# CONFIG_MTD_CFI_B4 is not set
-# CONFIG_MTD_CFI_B8 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_CFI_INTELEXT=y
-CONFIG_MTD_CFI_AMDSTD=y
-# CONFIG_MTD_CFI_STAA is not set
-# CONFIG_MTD_CFI_SSTSTD 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
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_AR7=y
-CONFIG_MTD_AR7_DEFAULTS=y
-CONFIG_MTD_AR7_START=0x10000000
-CONFIG_MTD_AR7_LEN=0x400000
-CONFIG_MTD_AR7_BUSWIDTH=2
-# CONFIG_MTD_PB1000 is not set
-# CONFIG_MTD_PB1500 is not set
-# CONFIG_MTD_PB1100 is not set
-# CONFIG_MTD_BOSPORUS is not set
-# CONFIG_MTD_XXS1500 is not set
-# CONFIG_MTD_MTX1 is not set
-# CONFIG_MTD_DB1X00 is not set
-# CONFIG_MTD_PB1550 is not set
-# CONFIG_MTD_HYDROGEN3 is not set
-# CONFIG_MTD_MIRAGE is not set
-# CONFIG_MTD_CSTM_MIPS_IXX is not set
-# CONFIG_MTD_OCELOT is not set
-# CONFIG_MTD_LASAT is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# 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_CISS_SCSI_TAPE is not set
-# CONFIG_CISS_MONITOR_THREAD is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_SX8 is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_BLK_STATS is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-# CONFIG_FILTER is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_FWMARK=y
-CONFIG_IP_ROUTE_NAT=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_TOS=y
-# CONFIG_IP_ROUTE_VERBOSE is not set
-# CONFIG_IP_PNP 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_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=y
-CONFIG_IP_NF_CONNTRACK_MARK=y
-CONFIG_IP_NF_FTP=y
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_IRC=y
-CONFIG_IP_NF_CT_ACCT=m
-CONFIG_IP_NF_MATCH_CONNBYTES=m
-CONFIG_IP_NF_CT_PROTO_GRE=m
-CONFIG_IP_NF_PPTP=m
-CONFIG_IP_NF_H323=m
-CONFIG_IP_NF_MMS=m
-CONFIG_IP_NF_RTSP=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_QUOTA=m
-CONFIG_IP_NF_SET=m
-CONFIG_IP_NF_SET_MAX=256
-CONFIG_IP_NF_SET_HASHSIZE=1024
-CONFIG_IP_NF_MATCH_SET=m
-CONFIG_IP_NF_TARGET_SET=m
-CONFIG_IP_NF_SET_IPMAP=m
-CONFIG_IP_NF_SET_PORTMAP=m
-CONFIG_IP_NF_SET_MACIPMAP=m
-CONFIG_IP_NF_SET_IPHASH=m
-CONFIG_IP_NF_SET_NETHASH=m
-CONFIG_IP_NF_SET_IPTREE=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=y
-CONFIG_IP_NF_MATCH_MULTIPORT=y
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_TIME=m
-CONFIG_IP_NF_MATCH_CONDITION=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_IPP2P=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=y
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_CONNMARK=m
-CONFIG_IP_NF_MATCH_UNCLEAN=m
-CONFIG_IP_NF_MATCH_STRING=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_LAYER7=m
-# CONFIG_IP_NF_MATCH_LAYER7_DEBUG is not set
-CONFIG_IP_NF_MATCH_LAYER7_MAXDATALEN=2048
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-CONFIG_IP_NF_TARGET_MIRROR=m
-CONFIG_IP_NF_NAT=y
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=y
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_NAT_PPTP=m
-CONFIG_IP_NF_NAT_PROTO_GRE=m
-CONFIG_IP_NF_NAT_H323=m
-CONFIG_IP_NF_NAT_MMS=m
-CONFIG_IP_NF_NAT_RTSP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=y
-CONFIG_IP_NF_NAT_FTP=y
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_MANGLE=y
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_MARK=y
-CONFIG_IP_NF_TARGET_IMQ=m
-CONFIG_IP_NF_TARGET_CONNMARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=y
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_CONDITION=m
-CONFIG_IP6_NF_MATCH_MAC=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_MARK=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-CONFIG_IP6_NF_MATCH_LENGTH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-CONFIG_IP6_NF_TARGET_IMQ=m
-# CONFIG_KHTTPD is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-CONFIG_ATM=m
-# CONFIG_ATM_CLIP is not set
-# CONFIG_ATM_LANE is not set
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-CONFIG_VLAN_8021Q=y
-
-#
-#
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-CONFIG_BRIDGE=y
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-CONFIG_WAN_ROUTER=m
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-CONFIG_NET_SCHED=y
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_CSZ=m
-CONFIG_NET_SCH_HFSC=m
-# CONFIG_NET_SCH_ATM is not set
-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_NETEM is not set
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_INGRESS=m
-CONFIG_NET_QOS=y
-CONFIG_NET_ESTIMATOR=y
-CONFIG_NET_CLS=y
-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_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_POLICE=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_IPSEC_NAT_TRAVERSAL=y
-
-#
-# Telephony Support
-#
-# CONFIG_PHONE is not set
-# CONFIG_PHONE_IXJ is not set
-# CONFIG_PHONE_IXJ_PCMCIA is not set
-
-#
-# ATA/IDE/MFM/RLL support
-#
-# CONFIG_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=m
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_SD_EXTRA_DEVS=5
-# 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=m
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# 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_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID is not set
-# CONFIG_SCSI_MEGARAID2 is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_SATA_AHCI is not set
-# CONFIG_SCSI_SATA_SVW is not set
-# CONFIG_SCSI_ATA_PIIX is not set
-# CONFIG_SCSI_SATA_NV 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_SIS is not set
-# CONFIG_SCSI_SATA_ULI is not set
-# CONFIG_SCSI_SATA_VIA is not set
-# CONFIG_SCSI_SATA_VITESSE 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_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_BOOT is not set
-# CONFIG_FUSION_ISENSE is not set
-# CONFIG_FUSION_CTL is not set
-# CONFIG_FUSION_LAN is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_IMQ=m
-CONFIG_TUN=m
-CONFIG_NET_RANDOM=y
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MIPS_AVALANCHE_CPMAC=m
-CONFIG_MIPS_CPMAC_INIT_BUF_MALLOC=y
-CONFIG_MIPS_CPMAC_PORTS=1
-CONFIG_AVALANCHE_CPMAC_AUTO=y
-# CONFIG_AVALANCHE_LOW_CPMAC is not set
-# CONFIG_AVALANCHE_HIGH_CPMAC is not set
-# CONFIG_SUNLANCE is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 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=y
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE_MPPC=m
-CONFIG_PPPOE=m
-CONFIG_PPPOATM=m
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_HERMES is not set
-
-#
-# Prism54 PCI/PCMCIA GT/Duette Driver - 802.11(a/b/g)
-#
-# CONFIG_PRISM54 is not set
-# CONFIG_NET_WIRELESS is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-CONFIG_SHAPER=m
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# ATM drivers
-#
-# CONFIG_ATM_TCP is not set
-CONFIG_MIPS_SANGAM_ATM=m
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-# CONFIG_IRDA is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-# CONFIG_INPUT is not set
-# CONFIG_INPUT_KEYBDEV is not set
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Character devices
-#
-# CONFIG_VT is not set
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_AR7_LED=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=128
-CONFIG_AR7_VLYNQ=y
-CONFIG_VLYNQ_CLK_LOCAL=y
-CONFIG_AR7_VLYNQ_PORTS=2
-CONFIG_AR7_ADAM2=y
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-
-#
-# Input core support is needed for gameports
-#
-
-#
-# Input core support is needed for joysticks
-#
-# CONFIG_QIC02_TAPE is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_IPMI_PANIC_EVENT is not set
-# CONFIG_IPMI_DEVICE_INTERFACE is not set
-# CONFIG_IPMI_KCS is not set
-# CONFIG_IPMI_WATCHDOG is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-CONFIG_AR7_WDT=y
-CONFIG_SOFT_WATCHDOG=m
-# CONFIG_SCx200 is not set
-# CONFIG_SCx200_GPIO is not set
-# CONFIG_AMD_PM768 is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC 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_FTAPE is not set
-# CONFIG_AGP is not set
-
-#
-# Direct Rendering Manager (XFree86 DRI support)
-#
-# CONFIG_DRM is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_QFMT_V2 is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-CONFIG_HFSPLUS_FS=m
-# CONFIG_BEFS_FS is not set
-# CONFIG_BEFS_DEBUG is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=m
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_BBC_ARMLIB is not set
-# CONFIG_JFFS2_BBC_LZO is not set
-CONFIG_JFFS2_BBC_LZARI=y
-# CONFIG_JFFS2_BBC_LZHD is not set
-# CONFIG_JFFS2_BBC_LZSS is not set
-# CONFIG_CRAMFS is not set
-CONFIG_SQUASHFS=y
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=m
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-CONFIG_XFS_FS=m
-# CONFIG_XFS_QUOTA is not set
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_TRACE is not set
-# CONFIG_XFS_DEBUG is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_POSIX=y
-# CONFIG_SMB_FS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_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=y
-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_EFI_PARTITION is not set
-# CONFIG_SMB_NLS is not set
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-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_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
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-# CONFIG_USB is not set
-
-#
-# Support for USB gadgets
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BLUEZ_HCIUSB is not set
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y
-# CONFIG_BLUEZ_HCIBFUSB is not set
-# CONFIG_BLUEZ_HCIDTL1 is not set
-# CONFIG_BLUEZ_HCIBT3C is not set
-# CONFIG_BLUEZ_HCIBLUECARD is not set
-# CONFIG_BLUEZ_HCIBTUART is not set
-# CONFIG_BLUEZ_HCIVHCI is not set
-
-#
-# Kernel hacking
-#
-CONFIG_CROSSCOMPILE=y
-# CONFIG_RUNTIME_DEBUG is not set
-# CONFIG_KGDB is not set
-# CONFIG_GDB_CONSOLE is not set
-# CONFIG_DEBUG_INFO is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_MIPS_UNCACHED is not set
-CONFIG_LOG_BUF_SHIFT=0
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-# 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_DES=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_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Library routines
-#
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-# CONFIG_FW_LOADER is not set
diff --git a/openwrt/target/linux/ar7-2.4/patches/000-ar7_support.patch b/openwrt/target/linux/ar7-2.4/patches/000-ar7_support.patch
deleted file mode 100644
index 0c9c0d3028..0000000000
--- a/openwrt/target/linux/ar7-2.4/patches/000-ar7_support.patch
+++ /dev/null
@@ -1,9549 +0,0 @@
-diff -urN linux.old/arch/mips/Makefile linux.dev/arch/mips/Makefile
---- linux.old/arch/mips/Makefile 2005-10-21 16:43:16.316951500 +0200
-+++ linux.dev/arch/mips/Makefile 2005-11-10 01:10:45.775570250 +0100
-@@ -369,6 +369,16 @@
- endif
-
- #
-+# Texas Instruments AR7
-+#
-+
-+ifdef CONFIG_AR7
-+LIBS += arch/mips/ar7/ar7.o
-+SUBDIRS += arch/mips/ar7
-+LOADADDR += 0x94020000
-+endif
-+
-+#
- # DECstation family
- #
- ifdef CONFIG_DECSTATION
-diff -urN linux.old/arch/mips/ar7/Makefile linux.dev/arch/mips/ar7/Makefile
---- linux.old/arch/mips/ar7/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/Makefile 2005-11-10 01:13:51.443173750 +0100
-@@ -0,0 +1,14 @@
-+.S.s:
-+ $(CPP) $(AFLAGS) $< -o $*.s
-+
-+.S.o:
-+ $(CC) $(AFLAGS) -c $< -o $*.o
-+
-+EXTRA_CFLAGS := -I$(TOPDIR)/include/asm/ar7 -DLITTLE_ENDIAN -D_LINK_KSEG0_
-+O_TARGET := ar7.o
-+
-+obj-y := tnetd73xx_misc.o misc.o
-+export-objs := misc.o irq.o init.o
-+obj-y += setup.o irq.o int-handler.o reset.o init.o psp_env.o memory.o promlib.o cmdline.o
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux.old/arch/mips/ar7/cmdline.c linux.dev/arch/mips/ar7/cmdline.c
---- linux.old/arch/mips/ar7/cmdline.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/cmdline.c 2005-11-10 01:14:16.372731750 +0100
-@@ -0,0 +1,88 @@
-+/*
-+ * Carsten Langgaard, carstenl@mips.com
-+ * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
-+ *
-+ * This program is free software; you can distribute it and/or modify it
-+ * under the terms of the GNU General Public License (Version 2) as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope 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.
-+ *
-+ * Kernel command line creation using the prom monitor (YAMON) argc/argv.
-+ */
-+#include <linux/init.h>
-+#include <linux/string.h>
-+
-+#include <asm/bootinfo.h>
-+
-+extern int prom_argc;
-+extern int *_prom_argv;
-+
-+/*
-+ * YAMON (32-bit PROM) pass arguments and environment as 32-bit pointer.
-+ * This macro take care of sign extension.
-+ */
-+#define prom_argv(index) ((char *)(((int *)(int)_prom_argv)[(index)]))
-+
-+char arcs_cmdline[CL_SIZE];
-+#ifdef CONFIG_CMDLINE_BOOL
-+char __initdata cfg_cmdline[] = CONFIG_CMDLINE;
-+#endif
-+
-+char * __init prom_getcmdline(void)
-+{
-+ return &(arcs_cmdline[0]);
-+}
-+
-+
-+void __init prom_init_cmdline(void)
-+{
-+ char *cp, *end;
-+ int actr;
-+ char *env_cmdline = prom_getenv("kernel_args");
-+ size_t len;
-+
-+ actr = 1; /* Always ignore argv[0] */
-+
-+ cp = end = &(arcs_cmdline[0]);
-+ end += sizeof(arcs_cmdline);
-+
-+ if (env_cmdline) {
-+ len = strlen(env_cmdline);
-+ if (len > end - cp - 1)
-+ len = end - cp - 1;
-+ strncpy(cp, env_cmdline, len);
-+ cp += len;
-+ *cp++ = ' ';
-+ }
-+#ifdef CONFIG_CMDLINE_BOOL
-+ else {
-+ len = strlen(cfg_cmdline);
-+ if (len > end - cp - 1)
-+ len = end - cp - 1;
-+ strncpy(cp, cfg_cmdline, len);
-+ cp += len;
-+ *cp++ = ' ';
-+ }
-+#endif
-+
-+ while(actr < prom_argc) {
-+ len = strlen(prom_argv(actr));
-+ if (len > end - cp - 1)
-+ break;
-+ strncpy(cp, prom_argv(actr), len);
-+ cp += len;
-+ *cp++ = ' ';
-+ actr++;
-+ }
-+ if (cp != &(arcs_cmdline[0])) /* get rid of trailing space */
-+ --cp;
-+ *cp = '\0';
-+}
-diff -urN linux.old/arch/mips/ar7/init.c linux.dev/arch/mips/ar7/init.c
---- linux.old/arch/mips/ar7/init.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/init.c 2005-11-10 01:10:45.795571500 +0100
-@@ -0,0 +1,199 @@
-+/*
-+ * Carsten Langgaard, carstenl@mips.com
-+ * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
-+ *
-+ * This program is free software; you can distribute it and/or modify it
-+ * under the terms of the GNU General Public License (Version 2) as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope 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.
-+ *
-+ * PROM library initialisation code.
-+ */
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/string.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+
-+#include <asm/io.h>
-+#include <asm/mips-boards/prom.h>
-+#include <asm/mips-boards/generic.h>
-+
-+#include <asm/ar7/adam2_env.h>
-+
-+int prom_argc;
-+int *_prom_argv, *_prom_envp;
-+
-+/* max # of Adam2 environment variables */
-+#define MAX_ENV_ENTRY 80
-+
-+static t_env_var local_envp[MAX_ENV_ENTRY];
-+static int env_type = 0;
-+int init_debug = 0;
-+
-+unsigned int max_env_entry;
-+
-+extern char *prom_psp_getenv(char *envname);
-+
-+static inline char *prom_adam2_getenv(char *envname)
-+{
-+ /*
-+ * Return a pointer to the given environment variable.
-+ * In 64-bit mode: we're using 64-bit pointers, but all pointers
-+ * in the PROM structures are only 32-bit, so we need some
-+ * workarounds, if we are running in 64-bit mode.
-+ */
-+ int i;
-+ t_env_var *env = (t_env_var *) local_envp;
-+
-+ if (strcmp("bootloader", envname) == 0)
-+ return "Adam2";
-+
-+ i = strlen(envname);
-+ while (env->name) {
-+ if(strncmp(envname, env->name, i) == 0) {
-+ return(env->val);
-+ }
-+ env++;
-+ }
-+
-+ return NULL;
-+}
-+
-+/* XXX "bootloader" won't be returned.
-+ * Better make it an element of local_envp */
-+static inline t_env_var *
-+prom_adam2_iterenv(t_env_var *env) {
-+ if (!env)
-+ env = local_envp;
-+ else
-+ env++;
-+ if (env - local_envp > MAX_ENV_ENTRY || !env->name)
-+ return 0;
-+ return env;
-+}
-+
-+char *prom_getenv(char *envname)
-+{
-+ if (env_type == 1)
-+ return prom_psp_getenv(envname);
-+ else
-+ return prom_adam2_getenv(envname);
-+}
-+
-+t_env_var *
-+prom_iterenv(t_env_var *last)
-+{
-+ if (env_type == 1)
-+ return 0; /* not yet implemented */
-+ return prom_adam2_iterenv(last);
-+}
-+
-+static inline unsigned char str2hexnum(unsigned char c)
-+{
-+ if (c >= '0' && c <= '9')
-+ return c - '0';
-+ if (c >= 'a' && c <= 'f')
-+ return c - 'a' + 10;
-+ return 0; /* foo */
-+}
-+
-+static inline void str2eaddr(unsigned char *ea, unsigned char *str)
-+{
-+ int i;
-+
-+ for (i = 0; i < 6; i++) {
-+ unsigned char num;
-+
-+ if((*str == '.') || (*str == ':'))
-+ str++;
-+ num = str2hexnum(*str++) << 4;
-+ num |= (str2hexnum(*str++));
-+ ea[i] = num;
-+ }
-+}
-+
-+int get_ethernet_addr(char *ethernet_addr)
-+{
-+ char *ethaddr_str;
-+
-+ ethaddr_str = prom_getenv("ethaddr");
-+ if (!ethaddr_str) {
-+ printk("ethaddr not set in boot prom\n");
-+ return -1;
-+ }
-+ str2eaddr(ethernet_addr, ethaddr_str);
-+
-+ if (init_debug > 1) {
-+ int i;
-+ printk("get_ethernet_addr: ");
-+ for (i=0; i<5; i++)
-+ printk("%02x:", (unsigned char)*(ethernet_addr+i));
-+ printk("%02x\n", *(ethernet_addr+i));
-+ }
-+
-+ return 0;
-+}
-+
-+struct psbl_rec {
-+ unsigned int psbl_size;
-+ unsigned int env_base;
-+ unsigned int env_size;
-+ unsigned int ffs_base;
-+ unsigned int ffs_size;
-+};
-+
-+static const char psp_env_version[] = "TIENV0.8";
-+
-+int __init prom_init(int argc, char **argv, char **envp)
-+{
-+ int i;
-+
-+ t_env_var *env = (t_env_var *) envp;
-+ struct psbl_rec *psbl = (struct psbl_rec *)(KSEG1ADDR(0x94000300));
-+ void *psp_env = (void *)KSEG1ADDR(psbl->env_base);
-+
-+ prom_argc = argc;
-+ _prom_argv = (int *)argv;
-+ _prom_envp = (int *)envp;
-+
-+ if(strcmp(psp_env, psp_env_version) == 0) {
-+ /* PSPBOOT */
-+
-+ env_type = 1;
-+ _prom_envp = psp_env;
-+ max_env_entry = (psbl->env_size / 16) - 1;
-+ } else {
-+ /* Copy what we need locally so we are not dependent on
-+ * bootloader RAM. In Adam2, the environment parameters
-+ * are in flash but the table that references them is in
-+ * RAM
-+ */
-+
-+ for(i=0; i < MAX_ENV_ENTRY; i++, env++) {
-+ if (env->name) {
-+ local_envp[i].name = env->name;
-+ local_envp[i].val = env->val;
-+ } else {
-+ local_envp[i].name = NULL;
-+ local_envp[i].val = NULL;
-+ }
-+ }
-+ }
-+
-+ set_io_port_base(0);
-+
-+ prom_printf("\nLINUX started...\n");
-+ prom_init_cmdline();
-+ prom_meminit();
-+
-+ return 0;
-+}
-diff -urN linux.old/arch/mips/ar7/int-handler.S linux.dev/arch/mips/ar7/int-handler.S
---- linux.old/arch/mips/ar7/int-handler.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/int-handler.S 2005-11-10 01:12:43.938955000 +0100
-@@ -0,0 +1,63 @@
-+/*
-+ * Copyright 2004 PMC-Sierra Inc.
-+ * Author: Manish Lachwani (lachwani@pmc-sierra.com)
-+ * Adaption for AR7: Enrik Berkhan <enrik@akk.org>
-+ *
-+ * First-level interrupt dispatcher for the TI AR7
-+ *
-+ * 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.
-+ */
-+#define __ASSEMBLY__
-+#include <linux/config.h>
-+#include <asm/asm.h>
-+#include <asm/mipsregs.h>
-+#include <asm/addrspace.h>
-+#include <asm/regdef.h>
-+#include <asm/stackframe.h>
-+
-+/*
-+ * First level interrupt dispatcher for TI AR7 based boards
-+ */
-+
-+ .align 5
-+ NESTED(ar7IRQ, PT_SIZE, sp)
-+ SAVE_ALL
-+ CLI
-+ .set at
-+
-+ mfc0 t0, CP0_CAUSE
-+ mfc0 t2, CP0_STATUS
-+
-+ and t0, t2
-+
-+ andi t1, t0, STATUSF_IP2 /* hw0 hardware interrupt */
-+ bnez t1, ll_hw0_irq
-+
-+ andi t1, t0, STATUSF_IP7 /* R4k CPU timer */
-+ bnez t1, ll_timer_irq
-+
-+ .set reorder
-+
-+ /* wrong alarm or masked ... */
-+ j spurious_interrupt
-+ nop
-+ END(ar7IRQ)
-+
-+ .align 5
-+
-+ll_hw0_irq:
-+ li a0, 2
-+ move a1, sp
-+ jal do_IRQ
-+ j ret_from_irq
-+
-+ll_timer_irq:
-+ li a0, 7
-+ move a1, sp
-+ jal do_IRQ
-+ j ret_from_irq
-+
-+
-diff -urN linux.old/arch/mips/ar7/irq.c linux.dev/arch/mips/ar7/irq.c
---- linux.old/arch/mips/ar7/irq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/irq.c 2005-11-10 01:12:43.938955000 +0100
-@@ -0,0 +1,427 @@
-+/*
-+ * Nitin Dhingra, iamnd@ti.com
-+ * Copyright (C) 2002 Texas Instruments, Inc. All rights reserved.
-+ *
-+ * ########################################################################
-+ *
-+ * This program is free software; you can distribute it and/or modify it
-+ * under the terms of the GNU General Public License (Version 2) as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope 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.
-+ *
-+ * ########################################################################
-+ *
-+ * Routines for generic manipulation of the interrupts found on the Texas
-+ * Instruments avalanche board
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/interrupt.h>
-+
-+#include <asm/irq.h>
-+#include <asm/mipsregs.h>
-+#include <asm/ar7/ar7.h>
-+#include <asm/ar7/avalanche_intc.h>
-+
-+#define shutdown_avalanche_irq disable_avalanche_irq
-+#define mask_and_ack_avalanche_irq disable_avalanche_irq
-+
-+static unsigned int startup_avalanche_irq(unsigned int irq);
-+static void end_avalanche_irq(unsigned int irq);
-+void enable_avalanche_irq(unsigned int irq_nr);
-+void disable_avalanche_irq(unsigned int irq_nr);
-+void ar7_hw0_interrupt(int interrupt, void *dev, struct pt_regs *regs);
-+
-+static struct hw_interrupt_type avalanche_irq_type = {
-+ "AR7",
-+ startup_avalanche_irq,
-+ shutdown_avalanche_irq,
-+ enable_avalanche_irq,
-+ disable_avalanche_irq,
-+ mask_and_ack_avalanche_irq,
-+ end_avalanche_irq,
-+ NULL
-+};
-+
-+static int ar7_irq_base;
-+
-+static struct irqaction ar7_hw0_action = {
-+ ar7_hw0_interrupt, 0, 0, "AR7 on hw0", NULL, NULL
-+};
-+
-+struct avalanche_ictrl_regs *avalanche_hw0_icregs; /* Interrupt control regs (primary) */
-+struct avalanche_exctrl_regs *avalanche_hw0_ecregs; /* Exception control regs (secondary) */
-+struct avalanche_ipace_regs *avalanche_hw0_ipaceregs;
-+struct avalanche_channel_int_number *avalanche_hw0_chregs; /* Channel control registers */
-+
-+/*
-+ This remaps interrupts to exist on other channels than the default
-+ channels. essentially we can use the line # as the index for this
-+ array
-+ */
-+
-+static unsigned long line_to_channel[AVINTNUM(AVALANCHE_INT_END_PRIMARY)];
-+unsigned long uni_secondary_interrupt = 0;
-+
-+static void end_avalanche_irq(unsigned int irq)
-+{
-+ if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-+ enable_avalanche_irq(irq);
-+}
-+
-+void disable_avalanche_irq(unsigned int irq_nr)
-+{
-+ unsigned long flags;
-+ unsigned long chan_nr=0;
-+
-+ save_and_cli(flags);
-+
-+ /* irq_nr represents the line number for the interrupt. We must
-+ * disable the channel number associated with that line number.
-+ */
-+
-+ if(irq_nr > AVALANCHE_INT_END_PRIMARY_REG2)
-+ chan_nr = AVINTNUM(irq_nr); /*CHECK THIS ALSO*/
-+ else
-+ chan_nr = line_to_channel[AVINTNUM(irq_nr)];/* WE NEED A LINE TO CHANNEL MAPPING FUNCTION HERE*/
-+
-+ /* disable the interrupt channel bit */
-+
-+ /* primary interrupt #'s 0-31 */
-+
-+ if(chan_nr <= AVINTNUM(AVALANCHE_INT_END_PRIMARY_REG1))
-+ avalanche_hw0_icregs->intecr1 = (1 << chan_nr);
-+
-+ /* primary interrupt #'s 32-39 */
-+
-+ else if ((chan_nr <= AVINTNUM(AVALANCHE_INT_END_PRIMARY_REG2)) &&
-+ (chan_nr > AVINTNUM(AVALANCHE_INT_END_PRIMARY_REG1)))
-+ avalanche_hw0_icregs->intecr2 = (1 << (chan_nr - AVINTNUM(AVALANCHE_INT_END_SECONDARY)));
-+
-+ else /* secondary interrupt #'s 0-31 */
-+ avalanche_hw0_ecregs->exiecr = (1 << (chan_nr - AVINTNUM(AVALANCHE_INT_END_PRIMARY)));
-+
-+ restore_flags(flags);
-+}
-+
-+void enable_avalanche_irq(unsigned int irq_nr)
-+{
-+ unsigned long flags;
-+ unsigned long chan_nr=0;
-+
-+ save_and_cli(flags);
-+
-+ /* irq_nr represents the line number for the interrupt. We must
-+ * disable the channel number associated with that line number.
-+ */
-+
-+ if(irq_nr > AVALANCHE_INT_END_PRIMARY_REG2)
-+ chan_nr = AVINTNUM(irq_nr);
-+ else
-+ chan_nr = line_to_channel[AVINTNUM(irq_nr)];
-+
-+ /* enable the interrupt channel bit */
-+
-+ /* primary interrupt #'s 0-31 */
-+ if(chan_nr <= AVINTNUM(AVALANCHE_INT_END_PRIMARY_REG1))
-+ avalanche_hw0_icregs->intesr1 = (1 << chan_nr);
-+
-+ /* primary interrupt #'s 32 throuth 39 */
-+ else if ((chan_nr <= AVINTNUM(AVALANCHE_INT_END_PRIMARY_REG2)) &&
-+ (chan_nr > AVINTNUM(AVALANCHE_INT_END_PRIMARY_REG1)))
-+ avalanche_hw0_icregs->intesr2 = (1 << (chan_nr - AVINTNUM(AVALANCHE_INT_END_SECONDARY)));
-+
-+ else /* secondary interrupt #'s 0-31 */
-+ avalanche_hw0_ecregs->exiesr = (1 << (chan_nr - AVINTNUM(AVALANCHE_INT_END_PRIMARY)));
-+
-+ restore_flags(flags);
-+}
-+
-+static unsigned int startup_avalanche_irq(unsigned int irq)
-+{
-+ enable_avalanche_irq(irq);
-+ return 0; /* never anything pending */
-+}
-+
-+void __init ar7_irq_init(int base)
-+{
-+ int i;
-+
-+ avalanche_hw0_icregs = (struct avalanche_ictrl_regs *)AVALANCHE_ICTRL_REGS_BASE;
-+ avalanche_hw0_ecregs = (struct avalanche_exctrl_regs *)AVALANCHE_ECTRL_REGS_BASE;
-+ avalanche_hw0_ipaceregs = (struct avalanche_ipace_regs *)AVALANCHE_IPACE_REGS_BASE;
-+ avalanche_hw0_chregs = (struct avalanche_channel_int_number *)AVALANCHE_CHCTRL_REGS_BASE;
-+
-+ /* Disable interrupts and clear pending
-+ */
-+
-+ avalanche_hw0_icregs->intecr1 = 0xffffffff; /* disable interrupts 0:31 */
-+ avalanche_hw0_icregs->intcr1 = 0xffffffff; /* clear interrupts 0:31 */
-+ avalanche_hw0_icregs->intecr2 = 0xff; /* disable interrupts 32:39 */
-+ avalanche_hw0_icregs->intcr2 = 0xff; /* clear interrupts 32:39 */
-+ avalanche_hw0_ecregs->exiecr = 0xffffffff; /* disable secondary interrupts 0:31 */
-+ avalanche_hw0_ecregs->excr = 0xffffffff; /* clear secondary interrupts 0:31 */
-+
-+
-+ // avalanche_hw0_ipaceregs->ipacep = (2*get_avalanche_vbus_freq()/1000000)*4;
-+ /* hack for speeding up the pacing. */
-+ printk("the pacing pre-scalar has been set as 600.\n");
-+ avalanche_hw0_ipaceregs->ipacep = 600;
-+ /* Channel to line mapping, Line to Channel mapping */
-+
-+ for(i = 0; i < 40; i++)
-+ avalanche_int_set(i,i);
-+
-+ ar7_irq_base = base;
-+ for (i = base; i <= base+40; i++)
-+ {
-+ irq_desc[i].status = IRQ_DISABLED;
-+ irq_desc[i].action = 0;
-+ irq_desc[i].depth = 1;
-+ irq_desc[i].handler = &avalanche_irq_type;
-+ }
-+
-+ setup_irq(2, &ar7_hw0_action);
-+ set_c0_status(IE_IRQ0);
-+
-+ return;
-+}
-+
-+void ar7_hw0_interrupt(int interrupt, void *dev, struct pt_regs *regs)
-+{
-+ int irq;
-+ unsigned long int_line_number, status;
-+ int i, chan_nr = 0;
-+
-+ int_line_number = ((avalanche_hw0_icregs->pintir >> 16) & 0x3F);
-+ chan_nr = ((avalanche_hw0_icregs->pintir) & 0x3F);
-+
-+ if(chan_nr < 32) /* primary 0-31 */
-+ {
-+ if( chan_nr != uni_secondary_interrupt)
-+ avalanche_hw0_icregs->intcr1 = (1<<chan_nr);
-+
-+ }
-+
-+ if((chan_nr < 40) && (chan_nr > 31)) /* primary 32-39 */
-+ {
-+ avalanche_hw0_icregs->intcr2 = (1<<(chan_nr-32));
-+ }
-+
-+
-+ /* If the Priority Interrupt Index Register returns 40 then no
-+ * interrupts are pending
-+ */
-+
-+ if(chan_nr == 40)
-+ return;
-+
-+ if(chan_nr == uni_secondary_interrupt) /* secondary 0-31 */
-+ {
-+ status = avalanche_hw0_ecregs->exsr;
-+ for(i=0; i < 32; i++)
-+ {
-+ if (status & 1<<i)
-+ {
-+ /* clear secondary interrupt */
-+ avalanche_hw0_ecregs->excr = 1 << i;
-+ break;
-+ }
-+ }
-+ irq = i+40;
-+
-+ /* clear the universal secondary interrupt */
-+ avalanche_hw0_icregs->intcr1 = 1 << uni_secondary_interrupt;
-+
-+ }
-+ else
-+ irq = chan_nr;
-+
-+ do_IRQ(irq + ar7_irq_base, regs);
-+ return;
-+}
-+
-+void avalanche_int_set(int channel, int line)
-+{
-+ switch(channel)
-+ {
-+ case(0):
-+ avalanche_hw0_chregs->cintnr0 = line;
-+ break;
-+ case(1):
-+ avalanche_hw0_chregs->cintnr1 = line;
-+ break;
-+ case(2):
-+ avalanche_hw0_chregs->cintnr2 = line;
-+ break;
-+ case(3):
-+ avalanche_hw0_chregs->cintnr3 = line;
-+ break;
-+ case(4):
-+ avalanche_hw0_chregs->cintnr4 = line;
-+ break;
-+ case(5):
-+ avalanche_hw0_chregs->cintnr5 = line;
-+ break;
-+ case(6):
-+ avalanche_hw0_chregs->cintnr6 = line;
-+ break;
-+ case(7):
-+ avalanche_hw0_chregs->cintnr7 = line;
-+ break;
-+ case(8):
-+ avalanche_hw0_chregs->cintnr8 = line;
-+ break;
-+ case(9):
-+ avalanche_hw0_chregs->cintnr9 = line;
-+ break;
-+ case(10):
-+ avalanche_hw0_chregs->cintnr10 = line;
-+ break;
-+ case(11):
-+ avalanche_hw0_chregs->cintnr11 = line;
-+ break;
-+ case(12):
-+ avalanche_hw0_chregs->cintnr12 = line;
-+ break;
-+ case(13):
-+ avalanche_hw0_chregs->cintnr13 = line;
-+ break;
-+ case(14):
-+ avalanche_hw0_chregs->cintnr14 = line;
-+ break;
-+ case(15):
-+ avalanche_hw0_chregs->cintnr15 = line;
-+ break;
-+ case(16):
-+ avalanche_hw0_chregs->cintnr16 = line;
-+ break;
-+ case(17):
-+ avalanche_hw0_chregs->cintnr17 = line;
-+ break;
-+ case(18):
-+ avalanche_hw0_chregs->cintnr18 = line;
-+ break;
-+ case(19):
-+ avalanche_hw0_chregs->cintnr19 = line;
-+ break;
-+ case(20):
-+ avalanche_hw0_chregs->cintnr20 = line;
-+ break;
-+ case(21):
-+ avalanche_hw0_chregs->cintnr21 = line;
-+ break;
-+ case(22):
-+ avalanche_hw0_chregs->cintnr22 = line;
-+ break;
-+ case(23):
-+ avalanche_hw0_chregs->cintnr23 = line;
-+ break;
-+ case(24):
-+ avalanche_hw0_chregs->cintnr24 = line;
-+ break;
-+ case(25):
-+ avalanche_hw0_chregs->cintnr25 = line;
-+ break;
-+ case(26):
-+ avalanche_hw0_chregs->cintnr26 = line;
-+ break;
-+ case(27):
-+ avalanche_hw0_chregs->cintnr27 = line;
-+ break;
-+ case(28):
-+ avalanche_hw0_chregs->cintnr28 = line;
-+ break;
-+ case(29):
-+ avalanche_hw0_chregs->cintnr29 = line;
-+ break;
-+ case(30):
-+ avalanche_hw0_chregs->cintnr30 = line;
-+ break;
-+ case(31):
-+ avalanche_hw0_chregs->cintnr31 = line;
-+ break;
-+ case(32):
-+ avalanche_hw0_chregs->cintnr32 = line;
-+ break;
-+ case(33):
-+ avalanche_hw0_chregs->cintnr33 = line;
-+ break;
-+ case(34):
-+ avalanche_hw0_chregs->cintnr34 = line;
-+ break;
-+ case(35):
-+ avalanche_hw0_chregs->cintnr35 = line;
-+ break;
-+ case(36):
-+ avalanche_hw0_chregs->cintnr36 = line;
-+ break;
-+ case(37):
-+ avalanche_hw0_chregs->cintnr37 = line;
-+ break;
-+ case(38):
-+ avalanche_hw0_chregs->cintnr38 = line;
-+ break;
-+ case(39):
-+ avalanche_hw0_chregs->cintnr39 = line;
-+ break;
-+ default:
-+ printk("Error: Unknown Avalanche interrupt channel\n");
-+ }
-+
-+ line_to_channel[line] = channel; /* Suraj check */
-+
-+ if (channel == UNIFIED_SECONDARY_INTERRUPT)
-+ uni_secondary_interrupt = line;
-+
-+}
-+
-+
-+#define AVALANCHE_MAX_PACING_BLK 3
-+#define AVALANCHE_PACING_LOW_VAL 2
-+#define AVALANCHE_PACING_HIGH_VAL 63
-+
-+int avalanche_request_pacing(int irq_nr, unsigned int blk_num,
-+ unsigned int pace_value)
-+{
-+ unsigned int blk_offset;
-+ unsigned long flags;
-+
-+ if(irq_nr < MIPS_EXCEPTION_OFFSET &&
-+ irq_nr >= AVALANCHE_INT_END_PRIMARY)
-+ return (0);
-+
-+ if(blk_num > AVALANCHE_MAX_PACING_BLK)
-+ return(-1);
-+
-+ if(pace_value > AVALANCHE_PACING_HIGH_VAL &&
-+ pace_value < AVALANCHE_PACING_LOW_VAL)
-+ return(-1);
-+
-+ blk_offset = blk_num*8;
-+
-+ save_and_cli(flags);
-+
-+ /* disable the interrupt pacing, if enabled previously */
-+ avalanche_hw0_ipaceregs->ipacemax &= ~(0xff << blk_offset);
-+
-+ /* clear the pacing map */
-+ avalanche_hw0_ipaceregs->ipacemap &= ~(0xff << blk_offset);
-+
-+ /* setup the new values */
-+ avalanche_hw0_ipaceregs->ipacemap |= ((AVINTNUM(irq_nr)) << blk_offset);
-+ avalanche_hw0_ipaceregs->ipacemax |= ((0x80 | pace_value) << blk_offset);
-+
-+ restore_flags(flags);
-+
-+ return(0);
-+}
-diff -urN linux.old/arch/mips/ar7/memory.c linux.dev/arch/mips/ar7/memory.c
---- linux.old/arch/mips/ar7/memory.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/memory.c 2005-11-10 01:14:16.372731750 +0100
-@@ -0,0 +1,103 @@
-+/*
-+ * Carsten Langgaard, carstenl@mips.com
-+ * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
-+ *
-+ * ########################################################################
-+ *
-+ * This program is free software; you can distribute it and/or modify it
-+ * under the terms of the GNU General Public License (Version 2) as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope 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 <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/mm.h>
-+#include <linux/bootmem.h>
-+
-+#include <asm/bootinfo.h>
-+#include <asm/page.h>
-+#include <asm/mips-boards/prom.h>
-+
-+extern char _ftext;
-+extern int preserve_adam2;
-+
-+void __init prom_meminit(void)
-+{
-+ char *memsize_str;
-+ unsigned long memsize, adam2size;
-+
-+ /* assume block before kernel is used by bootloader */
-+ adam2size = __pa(&_ftext) - PHYS_OFFSET;
-+
-+ memsize_str = prom_getenv("memsize");
-+ if (!memsize_str) {
-+ memsize = 0x02000000;
-+ } else {
-+ memsize = simple_strtol(memsize_str, NULL, 0);
-+ }
-+
-+#if 0
-+ add_memory_region(0x00000000, PHYS_OFFSET, BOOT_MEM_RESERVED);
-+#endif
-+ add_memory_region(PHYS_OFFSET, adam2size, BOOT_MEM_ROM_DATA);
-+ add_memory_region(PHYS_OFFSET+adam2size, memsize-adam2size,
-+ BOOT_MEM_RAM);
-+}
-+
-+unsigned long __init prom_free_prom_memory (void)
-+{
-+ int i;
-+ unsigned long freed = 0;
-+ unsigned long addr;
-+
-+ if (preserve_adam2) {
-+ char *firstfree_str = prom_getenv("firstfreeaddress");
-+ unsigned long firstfree = 0;
-+
-+ if (firstfree_str)
-+ firstfree = simple_strtol(firstfree_str, NULL, 0);
-+
-+ if (firstfree && firstfree < (unsigned long)&_ftext) {
-+ printk("Preserving ADAM2 memory.\n");
-+ } else if (firstfree) {
-+ printk("Can't preserve ADAM2 memory, "
-+ "firstfreeaddress = %08lx.\n", firstfree);
-+ preserve_adam2 = 0;
-+ } else {
-+ printk("Can't preserve ADAM2 memory, "
-+ "firstfreeaddress unknown!\n");
-+ preserve_adam2 = 0;
-+ }
-+ }
-+
-+ if (!preserve_adam2) {
-+ for (i = 0; i < boot_mem_map.nr_map; i++) {
-+ if (boot_mem_map.map[i].type != BOOT_MEM_ROM_DATA)
-+ continue;
-+
-+ addr = boot_mem_map.map[i].addr;
-+ while (addr < boot_mem_map.map[i].addr
-+ + boot_mem_map.map[i].size) {
-+ ClearPageReserved(virt_to_page(__va(addr)));
-+ set_page_count(virt_to_page(__va(addr)), 1);
-+ free_page((unsigned long)__va(addr));
-+ addr += PAGE_SIZE;
-+ freed += PAGE_SIZE;
-+ }
-+ }
-+ printk("Freeing prom memory: %ldkb freed\n", freed >> 10);
-+ }
-+ return freed >> PAGE_SHIFT;
-+}
-diff -urN linux.old/arch/mips/ar7/misc.c linux.dev/arch/mips/ar7/misc.c
---- linux.old/arch/mips/ar7/misc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/misc.c 2005-11-10 01:12:43.946955500 +0100
-@@ -0,0 +1,322 @@
-+#include <asm/ar7/sangam.h>
-+#include <asm/ar7/avalanche_misc.h>
-+#include <linux/module.h>
-+#include <linux/spinlock.h>
-+
-+#define TRUE 1
-+
-+static unsigned int avalanche_vbus_freq;
-+
-+REMOTE_VLYNQ_DEV_RESET_CTRL_FN p_remote_vlynq_dev_reset_ctrl = NULL;
-+
-+/*****************************************************************************
-+ * Reset Control Module.
-+ *****************************************************************************/
-+void avalanche_reset_ctrl(unsigned int module_reset_bit,
-+ AVALANCHE_RESET_CTRL_T reset_ctrl)
-+{
-+ volatile unsigned int *reset_reg = (unsigned int*) AVALANCHE_RST_CTRL_PRCR;
-+
-+ if(module_reset_bit >= 32 && module_reset_bit < 64)
-+ return;
-+
-+ if(module_reset_bit >= 64)
-+ {
-+ if(p_remote_vlynq_dev_reset_ctrl) {
-+ p_remote_vlynq_dev_reset_ctrl(module_reset_bit - 64, reset_ctrl);
-+ return;
-+ }
-+ else
-+ return;
-+ }
-+
-+ if(reset_ctrl == OUT_OF_RESET)
-+ *reset_reg |= 1 << module_reset_bit;
-+ else
-+ *reset_reg &= ~(1 << module_reset_bit);
-+ return;
-+}
-+
-+AVALANCHE_RESET_CTRL_T avalanche_get_reset_status(unsigned int module_reset_bit)
-+{
-+ volatile unsigned int *reset_reg = (unsigned int*) AVALANCHE_RST_CTRL_PRCR;
-+
-+ return (((*reset_reg) & (1 << module_reset_bit)) ? OUT_OF_RESET : IN_RESET );
-+}
-+
-+void avalanche_sys_reset(AVALANCHE_SYS_RST_MODE_T mode)
-+{
-+ volatile unsigned int *sw_reset_reg = (unsigned int*) AVALANCHE_RST_CTRL_SWRCR;
-+ *sw_reset_reg = mode;
-+}
-+
-+#define AVALANCHE_RST_CTRL_RSR_MASK 0x3
-+
-+AVALANCHE_SYS_RESET_STATUS_T avalanche_get_sys_last_reset_status()
-+{
-+ volatile unsigned int *sys_reset_status = (unsigned int*) AVALANCHE_RST_CTRL_RSR;
-+
-+ return ( (AVALANCHE_SYS_RESET_STATUS_T) (*sys_reset_status & AVALANCHE_RST_CTRL_RSR_MASK) );
-+}
-+
-+
-+/*****************************************************************************
-+ * Power Control Module
-+ *****************************************************************************/
-+#define AVALANCHE_GLOBAL_POWER_DOWN_MASK 0x3FFFFFFF /* bit 31, 30 masked */
-+#define AVALANCHE_GLOBAL_POWER_DOWN_BIT 30 /* shift to bit 30, 31 */
-+
-+
-+void avalanche_power_ctrl(unsigned int module_power_bit, AVALANCHE_POWER_CTRL_T power_ctrl)
-+{
-+ volatile unsigned int *power_reg = (unsigned int*)AVALANCHE_POWER_CTRL_PDCR;
-+
-+ if (power_ctrl == POWER_CTRL_POWER_DOWN)
-+ /* power down the module */
-+ *power_reg |= (1 << module_power_bit);
-+ else
-+ /* power on the module */
-+ *power_reg &= (~(1 << module_power_bit));
-+}
-+
-+AVALANCHE_POWER_CTRL_T avalanche_get_power_status(unsigned int module_power_bit)
-+{
-+ volatile unsigned int *power_status_reg = (unsigned int*)AVALANCHE_POWER_CTRL_PDCR;
-+
-+ return (((*power_status_reg) & (1 << module_power_bit)) ? POWER_CTRL_POWER_DOWN : POWER_CTRL_POWER_UP);
-+}
-+
-+void avalanche_set_global_power_mode(AVALANCHE_SYS_POWER_MODE_T power_mode)
-+{
-+ volatile unsigned int *power_status_reg = (unsigned int*)AVALANCHE_POWER_CTRL_PDCR;
-+
-+ *power_status_reg &= AVALANCHE_GLOBAL_POWER_DOWN_MASK;
-+ *power_status_reg |= ( power_mode << AVALANCHE_GLOBAL_POWER_DOWN_BIT);
-+}
-+
-+AVALANCHE_SYS_POWER_MODE_T avalanche_get_global_power_mode(void)
-+{
-+ volatile unsigned int *power_status_reg = (unsigned int*)AVALANCHE_POWER_CTRL_PDCR;
-+
-+ return((AVALANCHE_SYS_POWER_MODE_T) (((*power_status_reg) & (~AVALANCHE_GLOBAL_POWER_DOWN_MASK))
-+ >> AVALANCHE_GLOBAL_POWER_DOWN_BIT));
-+}
-+
-+/*****************************************************************************
-+ * GPIO Control
-+ *****************************************************************************/
-+
-+/****************************************************************************
-+ * FUNCTION: avalanche_gpio_init
-+ ***************************************************************************/
-+void avalanche_gpio_init(void)
-+{
-+ spinlock_t closeLock;
-+ unsigned int closeFlag;
-+ volatile unsigned int *reset_reg = (unsigned int*) AVALANCHE_RST_CTRL_PRCR;
-+ spin_lock_irqsave(&closeLock, closeFlag);
-+ *reset_reg |= (1 << AVALANCHE_GPIO_RESET_BIT);
-+ spin_unlock_irqrestore(&closeLock, closeFlag);
-+}
-+
-+/****************************************************************************
-+ * FUNCTION: avalanche_gpio_ctrl
-+ ***************************************************************************/
-+int avalanche_gpio_ctrl(unsigned int gpio_pin,
-+ AVALANCHE_GPIO_PIN_MODE_T pin_mode,
-+ AVALANCHE_GPIO_PIN_DIRECTION_T pin_direction)
-+{
-+ spinlock_t closeLock;
-+ unsigned int closeFlag;
-+ volatile unsigned int *gpio_ctrl = (unsigned int*)AVALANCHE_GPIO_ENBL;
-+
-+ if(gpio_pin >= 32)
-+ return(-1);
-+
-+ spin_lock_irqsave(&closeLock, closeFlag);
-+
-+ if(pin_mode == GPIO_PIN)
-+ {
-+ *gpio_ctrl |= (1 << gpio_pin);
-+
-+ gpio_ctrl = (unsigned int*)AVALANCHE_GPIO_DIR;
-+
-+ if(pin_direction == GPIO_INPUT_PIN)
-+ *gpio_ctrl |= (1 << gpio_pin);
-+ else
-+ *gpio_ctrl &= ~(1 << gpio_pin);
-+ }
-+ else /* FUNCTIONAL PIN */
-+ {
-+ *gpio_ctrl &= ~(1 << gpio_pin);
-+ }
-+
-+ spin_unlock_irqrestore(&closeLock, closeFlag);
-+
-+ return (0);
-+}
-+
-+/****************************************************************************
-+ * FUNCTION: avalanche_gpio_out
-+ ***************************************************************************/
-+int avalanche_gpio_out_bit(unsigned int gpio_pin, int value)
-+{
-+ spinlock_t closeLock;
-+ unsigned int closeFlag;
-+ volatile unsigned int *gpio_out = (unsigned int*) AVALANCHE_GPIO_DATA_OUT;
-+
-+ if(gpio_pin >= 32)
-+ return(-1);
-+
-+ spin_lock_irqsave(&closeLock, closeFlag);
-+ if(value == TRUE)
-+ *gpio_out |= 1 << gpio_pin;
-+ else
-+ *gpio_out &= ~(1 << gpio_pin);
-+ spin_unlock_irqrestore(&closeLock, closeFlag);
-+
-+ return(0);
-+}
-+
-+/****************************************************************************
-+ * FUNCTION: avalanche_gpio_in
-+ ***************************************************************************/
-+int avalanche_gpio_in_bit(unsigned int gpio_pin)
-+{
-+ spinlock_t closeLock;
-+ unsigned int closeFlag;
-+ volatile unsigned int *gpio_in = (unsigned int*) AVALANCHE_GPIO_DATA_IN;
-+ int ret_val = 0;
-+
-+ if(gpio_pin >= 32)
-+ return(-1);
-+
-+ spin_lock_irqsave(&closeLock, closeFlag);
-+ ret_val = ((*gpio_in) & (1 << gpio_pin));
-+ spin_unlock_irqrestore(&closeLock, closeFlag);
-+
-+ return (ret_val);
-+}
-+
-+/****************************************************************************
-+ * FUNCTION: avalanche_gpio_out_val
-+ ***************************************************************************/
-+int avalanche_gpio_out_value(unsigned int out_val, unsigned int out_mask,
-+ unsigned int reg_index)
-+{
-+ spinlock_t closeLock;
-+ unsigned int closeFlag;
-+ volatile unsigned int *gpio_out = (unsigned int*) AVALANCHE_GPIO_DATA_OUT;
-+
-+ if(reg_index > 0)
-+ return(-1);
-+
-+ spin_lock_irqsave(&closeLock, closeFlag);
-+ *gpio_out &= ~out_mask;
-+ *gpio_out |= out_val;
-+ spin_unlock_irqrestore(&closeLock, closeFlag);
-+
-+ return(0);
-+}
-+
-+/****************************************************************************
-+ * FUNCTION: avalanche_gpio_in_value
-+ ***************************************************************************/
-+int avalanche_gpio_in_value(unsigned int* in_val, unsigned int reg_index)
-+{
-+ spinlock_t closeLock;
-+ unsigned int closeFlag;
-+ volatile unsigned int *gpio_in = (unsigned int*) AVALANCHE_GPIO_DATA_IN;
-+
-+ if(reg_index > 0)
-+ return(-1);
-+
-+ spin_lock_irqsave(&closeLock, closeFlag);
-+ *in_val = *gpio_in;
-+ spin_unlock_irqrestore(&closeLock, closeFlag);
-+
-+ return (0);
-+}
-+
-+/***********************************************************************
-+ *
-+ * Wakeup Control Module for TNETV1050 Communication Processor
-+ *
-+ ***********************************************************************/
-+
-+#define AVALANCHE_WAKEUP_POLARITY_BIT 16
-+
-+void avalanche_wakeup_ctrl(AVALANCHE_WAKEUP_INTERRUPT_T wakeup_int,
-+ AVALANCHE_WAKEUP_CTRL_T wakeup_ctrl,
-+ AVALANCHE_WAKEUP_POLARITY_T wakeup_polarity)
-+{
-+ volatile unsigned int *wakeup_status_reg = (unsigned int*) AVALANCHE_WAKEUP_CTRL_WKCR;
-+
-+ /* enable/disable */
-+ if (wakeup_ctrl == WAKEUP_ENABLED)
-+ /* enable wakeup */
-+ *wakeup_status_reg |= wakeup_int;
-+ else
-+ /* disable wakeup */
-+ *wakeup_status_reg &= (~wakeup_int);
-+
-+ /* set polarity */
-+ if (wakeup_polarity == WAKEUP_ACTIVE_LOW)
-+ *wakeup_status_reg |= (wakeup_int << AVALANCHE_WAKEUP_POLARITY_BIT);
-+ else
-+ *wakeup_status_reg &= ~(wakeup_int << AVALANCHE_WAKEUP_POLARITY_BIT);
-+}
-+
-+void avalanche_set_vbus_freq(unsigned int new_vbus_freq)
-+{
-+ avalanche_vbus_freq = new_vbus_freq;
-+}
-+
-+unsigned int avalanche_get_vbus_freq()
-+{
-+ return(avalanche_vbus_freq);
-+}
-+
-+unsigned int avalanche_get_chip_version_info()
-+{
-+ return(*(volatile unsigned int*)AVALANCHE_CVR);
-+}
-+
-+SET_MDIX_ON_CHIP_FN_T p_set_mdix_on_chip_fn = NULL;
-+
-+int avalanche_set_mdix_on_chip(unsigned int base_addr, unsigned int operation)
-+{
-+ if(p_set_mdix_on_chip_fn)
-+ return (p_set_mdix_on_chip_fn(base_addr, operation));
-+ else
-+ return(-1);
-+}
-+
-+unsigned int avalanche_is_mdix_on_chip(void)
-+{
-+ return(p_set_mdix_on_chip_fn ? 1:0);
-+}
-+
-+EXPORT_SYMBOL(avalanche_reset_ctrl);
-+EXPORT_SYMBOL(avalanche_get_reset_status);
-+EXPORT_SYMBOL(avalanche_sys_reset);
-+EXPORT_SYMBOL(avalanche_get_sys_last_reset_status);
-+EXPORT_SYMBOL(avalanche_power_ctrl);
-+EXPORT_SYMBOL(avalanche_get_power_status);
-+EXPORT_SYMBOL(avalanche_set_global_power_mode);
-+EXPORT_SYMBOL(avalanche_get_global_power_mode);
-+EXPORT_SYMBOL(avalanche_set_mdix_on_chip);
-+EXPORT_SYMBOL(avalanche_is_mdix_on_chip);
-+
-+EXPORT_SYMBOL(avalanche_gpio_init);
-+EXPORT_SYMBOL(avalanche_gpio_ctrl);
-+EXPORT_SYMBOL(avalanche_gpio_out_bit);
-+EXPORT_SYMBOL(avalanche_gpio_in_bit);
-+EXPORT_SYMBOL(avalanche_gpio_out_value);
-+EXPORT_SYMBOL(avalanche_gpio_in_value);
-+
-+EXPORT_SYMBOL(avalanche_set_vbus_freq);
-+EXPORT_SYMBOL(avalanche_get_vbus_freq);
-+
-+EXPORT_SYMBOL(avalanche_get_chip_version_info);
-+
-diff -urN linux.old/arch/mips/ar7/platform.h linux.dev/arch/mips/ar7/platform.h
---- linux.old/arch/mips/ar7/platform.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/platform.h 2005-11-10 01:10:45.799571750 +0100
-@@ -0,0 +1,65 @@
-+#ifndef _PLATFORM_H_
-+#define _PLATFORM_H_
-+
-+#include <linux/config.h>
-+
-+
-+/* Important: The definition of ENV_SPACE_SIZE should match with that in
-+ * PSPBoot. (/psp_boot/inc/psbl/env.h)
-+ */
-+#ifdef CONFIG_MIPS_AVALANCHE_TICFG
-+#define ENV_SPACE_SIZE (10 * 1024)
-+#endif
-+
-+#ifdef CONFIG_MIPS_TNETV1050SDB
-+#define TNETV1050SDB
-+#define DUAL_FLASH
-+#endif
-+
-+#ifdef CONFIG_MIPS_AR7DB
-+#define TNETD73XX_BOARD
-+#define AR7DB
-+#endif
-+
-+#ifdef CONFIG_MIPS_AR7RD
-+#define TNETD73XX_BOARD
-+#define AR7RD
-+#endif
-+
-+#ifdef CONFIG_AR7WRD
-+#define TNETD73XX_BOARD
-+#define AR7WRD
-+#endif
-+
-+#ifdef CONFIG_MIPS_AR7VWI
-+#define TNETD73XX_BOARD
-+#define AR7VWi
-+#endif
-+
-+/* Merging from the DEV_DSL-PSPL4.3.2.7_Patch release. */
-+#ifdef CONFIG_MIPS_AR7VW
-+#define TNETD73XX_BOARD
-+#define AR7WRD
-+#endif
-+
-+#ifdef CONFIG_MIPS_AR7WI
-+#define TNETD73XX_BOARD
-+#define AR7Wi
-+#endif
-+
-+#ifdef CONFIG_MIPS_AR7V
-+#define TNETD73XX_BOARD
-+#define AR7V
-+#endif
-+
-+#ifdef CONFIG_MIPS_AR7V
-+#define TNETD73XX_BOARD
-+#define AR7V
-+#endif
-+
-+#ifdef CONFIG_MIPS_WA1130
-+#define AVALANCHE
-+#define WLAN
-+#endif
-+
-+#endif
-diff -urN linux.old/arch/mips/ar7/promlib.c linux.dev/arch/mips/ar7/promlib.c
---- linux.old/arch/mips/ar7/promlib.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/promlib.c 2005-11-10 01:14:16.372731750 +0100
-@@ -0,0 +1,48 @@
-+/*
-+ * Carsten Langgaard, carstenl@mips.com
-+ * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
-+ *
-+ * This program is free software; you can distribute it and/or modify it
-+ * under the terms of the GNU General Public License (Version 2) as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope 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.
-+ *
-+ * Putting things on the screen/serial line using Adam2 facilities.
-+ */
-+
-+#include <linux/types.h>
-+#include <asm/addrspace.h>
-+
-+#define AVALANCHE_YAMON_FUNCTION_BASE (KSEG1ADDR(0x10000500))
-+#define AVALANCHE_YAMON_PROM_PRINT_COUNT_ADDR \
-+ (AVALANCHE_YAMON_FUNCTION_BASE + 1 * 0x4)
-+#define AVALANCHE_YAMON_PROM_EXIT \
-+ (AVALANCHE_YAMON_FUNCTION_BASE + 8 * 0x4)
-+
-+void prom_putchar(char c)
-+{
-+ static char buf[1];
-+ void (*prom_print_str)(unsigned int dummy, char *s, int len) =
-+ (void *)(*(uint32_t *)AVALANCHE_YAMON_PROM_PRINT_COUNT_ADDR);
-+
-+ buf[0] = c;
-+ prom_print_str(1, buf, 1);
-+ return;
-+}
-+
-+void adam2_exit(int retval)
-+{
-+ void (*yamon_exit)(int retval) =
-+ (void *)(*(uint32_t *)AVALANCHE_YAMON_PROM_EXIT);
-+
-+ yamon_exit(retval);
-+ return;
-+}
-diff -urN linux.old/arch/mips/ar7/psp_env.c linux.dev/arch/mips/ar7/psp_env.c
---- linux.old/arch/mips/ar7/psp_env.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/psp_env.c 2005-11-10 01:10:45.799571750 +0100
-@@ -0,0 +1,350 @@
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/string.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <asm/io.h>
-+
-+#include "platform.h"
-+
-+#define ENV_CELL_SIZE 16
-+
-+/* control field decode */
-+#define ENV_GARBAGE_BIT 0x01 /* Env is garbage if this bit is off */
-+#define ENV_DYNAMIC_BIT 0x02 /* Env is dynamic if this bit is off */
-+
-+#define ENV_CTRL_MASK 0x03
-+#define ENV_PREFINED (ENV_GARBAGE_BIT | ENV_DYNAMIC_BIT)
-+#define ENV_DYNAMIC (ENV_GARBAGE_BIT)
-+
-+struct env_variable {
-+ unsigned char varNum;
-+ unsigned char ctrl;
-+ unsigned short chksum;
-+ unsigned char numCells;
-+ unsigned char data[ENV_CELL_SIZE - 5]; /* The data section starts
-+ * here, continues for
-+ * numCells.
-+ */
-+};
-+
-+extern unsigned int max_env_entry;
-+
-+/* Internal macros */
-+#define get_next_block(var) ((struct env_variable *)( (char*)(var) + (var)->numCells * ENV_CELL_SIZE))
-+
-+typedef enum ENV_VARS {
-+ env_vars_start = 0,
-+ CPUFREQ,
-+ MEMSZ,
-+ FLASHSZ,
-+ MODETTY0,
-+ MODETTY1,
-+ PROMPT,
-+ BOOTCFG,
-+ HWA_0,
-+#if !defined (AVALANCHE) || defined(TNETC401B)
-+ HWA_1,
-+#endif
-+#if !defined(TNETV1020_BOARD)
-+ HWA_RNDIS,
-+#endif
-+#if defined (TNETD73XX_BOARD)
-+ HWA_3,
-+#endif
-+ IPA,
-+ IPA_SVR,
-+ BLINE_MAC0,
-+#if !defined (AVALANCHE) || defined(TNETC401B)
-+ BLINE_MAC1,
-+#endif
-+#if !defined(TNETV1020_BOARD)
-+ BLINE_RNDIS,
-+#endif
-+#if defined (TNETD73XX_BOARD)
-+ BLINE_ATM,
-+#endif
-+#if !defined(TNETV1020_BOARD)
-+ USB_PID,
-+ USB_VID,
-+ USB_EPPOLLI,
-+#endif
-+ IPA_GATEWAY,
-+ SUBNET_MASK,
-+#if defined (TNETV1050_BOARD)
-+ BLINE_ESWITCH,
-+#endif
-+#if !defined(TNETV1020_BOARD)
-+ USB_SERIAL,
-+ HWA_HRNDIS, /* Host (PC) side RNDIS address */
-+#endif
-+ REMOTE_USER,
-+ REMOTE_PASS,
-+ REMOTE_DIR,
-+ SYSFREQ,
-+ LINK_TIMEOUT,
-+#ifndef AVALANCHE /* Avalanche boards use only one mac port */
-+ MAC_PORT,
-+#endif
-+ PATH,
-+ HOSTNAME,
-+#ifdef WLAN
-+ HW_REV_MAJOR,
-+ HW_REV_MINOR,
-+ HW_PATCH,
-+ SW_PATCH,
-+ SERIAL_NUMBER,
-+#endif
-+ TFTPCFG,
-+#if defined (TNETV1050_BOARD)
-+ HWA_ESWITCH,
-+#endif
-+ /*
-+ * Add new env variables here.
-+ * NOTE: New environment variables should always be placed at the end, ie
-+ * just before env_vars_end.
-+ */
-+
-+ env_vars_end
-+} ENV_VARS;
-+
-+
-+struct env_description {
-+ ENV_VARS idx;
-+ char *nm;
-+ char *alias;
-+};
-+
-+#define ENVSTR(x) #x
-+#define _ENV_ENTRY(x) {.idx = x, .nm = ENVSTR(x), .alias = NULL}
-+
-+struct env_description env_ns[] = {
-+ _ENV_ENTRY(env_vars_start), /* start. */
-+ _ENV_ENTRY(CPUFREQ),
-+ _ENV_ENTRY(MEMSZ),
-+ _ENV_ENTRY(FLASHSZ),
-+ _ENV_ENTRY(MODETTY0),
-+ _ENV_ENTRY(MODETTY1),
-+ _ENV_ENTRY(PROMPT),
-+ _ENV_ENTRY(BOOTCFG),
-+ _ENV_ENTRY(HWA_0),
-+#if !defined (AVALANCHE) || defined(TNETC401B)
-+ _ENV_ENTRY(HWA_1),
-+#endif
-+#if !defined(TNETV1020_BOARD)
-+ _ENV_ENTRY(HWA_RNDIS),
-+#endif
-+#if defined (TNETD73XX_BOARD)
-+ _ENV_ENTRY(HWA_3),
-+#endif
-+ _ENV_ENTRY(IPA),
-+ _ENV_ENTRY(IPA_SVR),
-+ _ENV_ENTRY(IPA_GATEWAY),
-+ _ENV_ENTRY(SUBNET_MASK),
-+ _ENV_ENTRY(BLINE_MAC0),
-+#if !defined (AVALANCHE) || defined(TNETC401B)
-+ _ENV_ENTRY(BLINE_MAC1),
-+#endif
-+#if !defined(TNETV1020_BOARD)
-+ _ENV_ENTRY(BLINE_RNDIS),
-+#endif
-+#if defined (TNETD73XX_BOARD)
-+ _ENV_ENTRY(BLINE_ATM),
-+#endif
-+#if !defined(TNETV1020_BOARD)
-+ _ENV_ENTRY(USB_PID),
-+ _ENV_ENTRY(USB_VID),
-+ _ENV_ENTRY(USB_EPPOLLI),
-+#endif
-+#if defined (TNETV1050_BOARD)
-+ _ENV_ENTRY(BLINE_ESWITCH),
-+#endif
-+#if !defined(TNETV1020_BOARD)
-+ _ENV_ENTRY(USB_SERIAL),
-+ _ENV_ENTRY(HWA_HRNDIS),
-+#endif
-+ _ENV_ENTRY(REMOTE_USER),
-+ _ENV_ENTRY(REMOTE_PASS),
-+ _ENV_ENTRY(REMOTE_DIR),
-+ _ENV_ENTRY(SYSFREQ),
-+ _ENV_ENTRY(LINK_TIMEOUT),
-+#ifndef AVALANCHE /* Avalanche boards use only one mac port */
-+ _ENV_ENTRY(MAC_PORT),
-+#endif
-+ _ENV_ENTRY(PATH),
-+ _ENV_ENTRY(HOSTNAME),
-+#ifdef WLAN
-+ _ENV_ENTRY(HW_REV_MAJOR),
-+ _ENV_ENTRY(HW_REV_MINOR),
-+ _ENV_ENTRY(HW_PATCH),
-+ _ENV_ENTRY(SW_PATCH),
-+ _ENV_ENTRY(SERIAL_NUMBER),
-+#endif
-+ _ENV_ENTRY(TFTPCFG),
-+#if defined (TNETV1050_BOARD)
-+ _ENV_ENTRY(HWA_ESWITCH),
-+#endif
-+ /*
-+ * Add new entries below this.
-+ */
-+ /* Adam2 environment name alias. */
-+ { .idx = IPA, .nm = "my_ipaddress" },
-+ { .idx = CPUFREQ, .nm = "cpufrequency" },
-+ { .idx = SYSFREQ, .nm = "sysfrequency" },
-+ { .idx = HWA_0, .nm = "maca" },
-+#ifndef AVALANCHE
-+ { .idx = HWA_1, .nm = "macb" },
-+#endif
-+ { .idx = MODETTY0, .nm = "modetty0" },
-+ { .idx = MODETTY1, .nm = "modetty1" },
-+ { .idx = MEMSZ, .nm = "memsize" },
-+
-+ _ENV_ENTRY(env_vars_end) /* delimiter. */
-+};
-+
-+static inline int var_to_idx(const char* var)
-+{
-+ int ii;
-+
-+ /* go over the list of pre-defined environment variables */
-+ for (ii = env_vars_start; env_ns[ii].idx != env_vars_end; ii++){
-+ /* check if the env variable is listed */
-+ if (strcmp(env_ns[ii].nm, var) == 0) {
-+ return env_ns[ii].idx;
-+ }
-+
-+ /* if an alias is present, check if the alias matches
-+ * the description
-+ */
-+ if (env_ns[ii].alias != NULL) {
-+ if (strcmp(env_ns[ii].alias, var) == 0) {
-+ return env_ns[ii].idx;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+extern int *_prom_envp;
-+
-+/* FIXME: reading from the flash is extremly unstable. Sometime a read returns garbage,
-+ * the next read some seconds later is ok. It looks like something is hidding or
-+ * overlay the flash address at 0xb0000000. Is this possible?
-+ *
-+ * The readb() and while() usage below is a attempt of a workarround - with limited success.
-+ */
-+
-+static inline struct env_variable* get_var_by_number(int index)
-+{
-+ struct env_variable *env_var = (struct env_variable *)_prom_envp;
-+ volatile unsigned char nr;
-+ int i;
-+
-+ env_var++; /* skip signature */
-+
-+ i = 0;
-+ nr = readb(&(env_var->varNum));
-+
-+ while (i < max_env_entry && nr != 0xFF) {
-+ if ((env_var->ctrl & ENV_CTRL_MASK) == ENV_PREFINED) {
-+ if (nr == index) {
-+ return env_var;
-+ }
-+ }
-+ i++;
-+ env_var = get_next_block(env_var);
-+ nr = readb(&(env_var->varNum));
-+ }
-+
-+ return NULL;
-+}
-+
-+static inline struct env_variable* get_var_by_name(char *var)
-+{
-+ struct env_variable *env_var = (struct env_variable *)_prom_envp;
-+ volatile unsigned char nr;
-+ int i;
-+
-+ env_var++; /* skip signature */
-+
-+ nr = readb(&(env_var->varNum));
-+ i = 0;
-+
-+ while (i < max_env_entry && nr != 0xFF) {
-+ if ((env_var->ctrl & ENV_CTRL_MASK) == ENV_DYNAMIC) {
-+ if (strcmp(var, env_var->data) == 0)
-+ return env_var;
-+ }
-+ i++;
-+ env_var = get_next_block(env_var);
-+ nr = readb(&(env_var->varNum));
-+ }
-+ return NULL;
-+}
-+
-+static inline struct env_variable* get_var(char *var)
-+{
-+ int index = var_to_idx(var);
-+
-+ if (index)
-+ return get_var_by_number(index);
-+ else
-+ return get_var_by_name(var);
-+
-+ return NULL;
-+}
-+
-+static inline char *get_value(struct env_variable* env_var)
-+{
-+ unsigned char *name;
-+ unsigned char *value;
-+ unsigned short chksum;
-+ int i;
-+
-+ chksum = env_var->varNum + env_var->ctrl + env_var->numCells;
-+
-+ if ((env_var->ctrl & ENV_CTRL_MASK) == ENV_DYNAMIC) {
-+ name = env_var->data;
-+ value = env_var->data + strlen(name) + 1;
-+
-+ for(i = 0; i < strlen(name); i++)
-+ chksum += name[i];
-+ } else
-+ value = env_var->data;
-+
-+ for (i = 0; i < strlen(value); i++)
-+ chksum += value[i];
-+
-+ chksum += env_var->chksum;
-+ chksum = ~(chksum);
-+
-+ if(chksum != 0) {
-+ return NULL;
-+ }
-+
-+ return value;
-+}
-+
-+struct psbl_rec {
-+ unsigned int psbl_size;
-+ unsigned int env_base;
-+ unsigned int env_size;
-+ unsigned int ffs_base;
-+ unsigned int ffs_size;
-+};
-+
-+char *prom_psp_getenv(char *envname)
-+{
-+ struct env_variable* env_var;
-+ char *value;
-+
-+ if (strcmp("bootloader", envname) == 0)
-+ return "PSPBoot";
-+
-+ if (!(env_var = get_var(envname)))
-+ return NULL;
-+
-+ value = get_value(env_var);
-+
-+ return value;
-+}
-diff -urN linux.old/arch/mips/ar7/reset.c linux.dev/arch/mips/ar7/reset.c
---- linux.old/arch/mips/ar7/reset.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/reset.c 2005-11-10 01:14:16.372731750 +0100
-@@ -0,0 +1,98 @@
-+/*
-+ * Carsten Langgaard, carstenl@mips.com
-+ * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
-+ *
-+ * ########################################################################
-+ *
-+ * This program is free software; you can distribute it and/or modify it
-+ * under the terms of the GNU General Public License (Version 2) as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope 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.
-+ *
-+ * ########################################################################
-+ *
-+ * Reset the AR7 boards.
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/string.h>
-+#include <linux/types.h>
-+
-+#include <asm/mipsregs.h>
-+#include <asm/reboot.h>
-+#include <asm/addrspace.h>
-+
-+int preserve_adam2 = 1;
-+
-+extern void adam2_exit(int retval);
-+
-+static void ar7_machine_restart(char *command);
-+static void ar7_machine_halt(void);
-+static void ar7_machine_power_off(void);
-+
-+static void ar7_machine_restart(char *command)
-+{
-+ volatile uint32_t *softres_reg = (void *)(KSEG1ADDR(0x08611600 + 0x4));
-+
-+ *softres_reg = 1;
-+}
-+
-+static void ar7_machine_halt(void)
-+{
-+
-+ if (preserve_adam2) {
-+ set_c0_status(ST0_BEV);
-+ adam2_exit(0);
-+ } else {
-+ /* I'd like to have Alt-SysRq-b work in this state.
-+ * What's missing here? The timer interrupt is still running.
-+ * Why doesn't the UART work anymore? */
-+ while(1) {
-+ __asm__(".set\tmips3\n\t"
-+ "wait\n\t"
-+ ".set\tmips0");
-+ }
-+ }
-+}
-+
-+static void ar7_machine_power_off(void)
-+{
-+ volatile uint32_t *power_reg = (void *)(KSEG1ADDR(0x08610A00));
-+ uint32_t power_state = *power_reg;
-+
-+ /* add something to turn LEDs off? */
-+
-+ power_state &= ~(3 << 30);
-+ power_state |= (3 << 30); /* power down */
-+ *power_reg = power_state;
-+
-+ printk("after power down?\n");
-+}
-+
-+void ar7_reboot_setup(void)
-+{
-+ _machine_restart = ar7_machine_restart;
-+ _machine_halt = ar7_machine_halt;
-+ _machine_power_off = ar7_machine_power_off;
-+}
-+
-+static int __init ar7_do_preserve_adam2(char *s)
-+{
-+ if (!strcmp(s, "no") || !strcmp(s, "0"))
-+ preserve_adam2 = 0;
-+ else
-+ preserve_adam2 = 1;
-+ return 1;
-+}
-+
-+__setup("adam2=", ar7_do_preserve_adam2);
-diff -urN linux.old/arch/mips/ar7/setup.c linux.dev/arch/mips/ar7/setup.c
---- linux.old/arch/mips/ar7/setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/setup.c 2005-11-10 01:12:43.946955500 +0100
-@@ -0,0 +1,143 @@
-+/*
-+ * Carsten Langgaard, carstenl@mips.com
-+ * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
-+ *
-+ * This program is free software; you can distribute it and/or modify it
-+ * under the terms of the GNU General Public License (Version 2) as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope 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 <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/string.h>
-+#include <linux/irq.h>
-+
-+#include <asm/processor.h>
-+#include <asm/irq.h>
-+#include <asm/irq_cpu.h>
-+#include <asm/time.h>
-+#include <asm/mipsregs.h>
-+#include <asm/mips-boards/prom.h>
-+
-+#ifdef CONFIG_KGDB
-+extern void rs_kgdb_hook(int);
-+extern void breakpoint(void);
-+int remote_debug = 0;
-+#endif
-+
-+extern void ar7_reboot_setup(void);
-+extern void ar7_irq_init(int);
-+extern asmlinkage void ar7IRQ(void);
-+
-+void ar7_time_init(void)
-+{
-+ /* XXX runtime */
-+ mips_hpt_frequency = CONFIG_AR7_CPU * 500000;
-+}
-+
-+void ar7_timer_setup(struct irqaction *irq)
-+{
-+ setup_irq(7, irq);
-+ set_c0_status(IE_IRQ5);
-+}
-+
-+void __init init_IRQ(void)
-+{
-+ init_generic_irq();
-+ mips_cpu_irq_init(0);
-+ ar7_irq_init(8);
-+
-+ /* Now safe to set the exception vector. */
-+ set_except_vector(0, ar7IRQ);
-+
-+#ifdef CONFIG_KGDB
-+ if (remote_debug)
-+ {
-+ set_debug_traps();
-+ breakpoint();
-+ }
-+#endif
-+}
-+
-+const char *get_system_type(void)
-+{
-+ return "Texas Instruments AR7";
-+}
-+
-+void __init ar7_setup(void)
-+{
-+#ifdef CONFIG_KGDB
-+ int rs_putDebugChar(char);
-+ char rs_getDebugChar(void);
-+ extern int (*generic_putDebugChar)(char);
-+ extern char (*generic_getDebugChar)(void);
-+#endif
-+ char *argptr;
-+#ifdef CONFIG_SERIAL_CONSOLE
-+ argptr = prom_getcmdline();
-+ if ((argptr = strstr(argptr, "console=")) == NULL) {
-+ char console[20];
-+ char *s;
-+ int i = 0;
-+
-+ s = prom_getenv("modetty0");
-+ strcpy(console, "38400");
-+
-+ if (s != NULL) {
-+ while (s[i] >= '0' && s[i] <= '9')
-+ i++;
-+
-+ if (i > 0) {
-+ strncpy(console, s, i);
-+ console[i] = 0;
-+ }
-+ }
-+
-+ argptr = prom_getcmdline();
-+ strcat(argptr, " console=ttyS0,");
-+ strcat(argptr, console);
-+ }
-+#endif
-+
-+#ifdef CONFIG_KGDB
-+ argptr = prom_getcmdline();
-+ if ((argptr = strstr(argptr, "kgdb=ttyS")) != NULL) {
-+ int line;
-+ argptr += strlen("kgdb=ttyS");
-+ if (*argptr != '0' && *argptr != '1')
-+ printk("KGDB: Uknown serial line /dev/ttyS%c, "
-+ "falling back to /dev/ttyS1\n", *argptr);
-+ line = *argptr == '0' ? 0 : 1;
-+ printk("KGDB: Using serial line /dev/ttyS%d for session\n",
-+ line ? 1 : 0);
-+
-+ rs_kgdb_hook(line);
-+ generic_putDebugChar = rs_putDebugChar;
-+ generic_getDebugChar = rs_getDebugChar;
-+
-+ prom_printf("KGDB: Using serial line /dev/ttyS%d for session, "
-+ "please connect your debugger\n", line ? 1 : 0);
-+
-+ remote_debug = 1;
-+ /* Breakpoints are in init_IRQ() */
-+ }
-+#endif
-+
-+ argptr = prom_getcmdline();
-+ if ((argptr = strstr(argptr, "nofpu")) != NULL)
-+ cpu_data[0].options &= ~MIPS_CPU_FPU;
-+
-+ ar7_reboot_setup();
-+
-+ board_time_init = ar7_time_init;
-+ board_timer_setup = ar7_timer_setup;
-+}
-diff -urN linux.old/arch/mips/ar7/tnetd73xx_misc.c linux.dev/arch/mips/ar7/tnetd73xx_misc.c
---- linux.old/arch/mips/ar7/tnetd73xx_misc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/ar7/tnetd73xx_misc.c 2005-11-10 01:12:43.946955500 +0100
-@@ -0,0 +1,921 @@
-+/******************************************************************************
-+ * FILE PURPOSE: TNETD73xx Misc modules API Source
-+ ******************************************************************************
-+ * FILE NAME: tnetd73xx_misc.c
-+ *
-+ * DESCRIPTION: Clock Control, Reset Control, Power Management, GPIO
-+ * FSER Modules API
-+ * As per TNETD73xx specifications
-+ *
-+ * REVISION HISTORY:
-+ * 27 Nov 02 - Sharath Kumar PSP TII
-+ * 14 Feb 03 - Anant Gole PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+#include <linux/types.h>
-+#include <asm/ar7/tnetd73xx.h>
-+#include <asm/ar7/tnetd73xx_misc.h>
-+
-+/* TNETD73XX Revision */
-+u32 tnetd73xx_get_revision(void)
-+{
-+ /* Read Chip revision register - This register is from GPIO module */
-+ return ( (u32) REG32_DATA(TNETD73XX_CVR));
-+}
-+
-+/*****************************************************************************
-+ * Reset Control Module
-+ *****************************************************************************/
-+
-+
-+void tnetd73xx_reset_ctrl(TNETD73XX_RESET_MODULE_T reset_module, TNETD73XX_RESET_CTRL_T reset_ctrl)
-+{
-+ u32 reset_status;
-+
-+ /* read current reset register */
-+ REG32_READ(TNETD73XX_RST_CTRL_PRCR, reset_status);
-+
-+ if (reset_ctrl == OUT_OF_RESET)
-+ {
-+ /* bring module out of reset */
-+ reset_status |= (1 << reset_module);
-+ }
-+ else
-+ {
-+ /* put module in reset */
-+ reset_status &= (~(1 << reset_module));
-+ }
-+
-+ /* write to the reset register */
-+ REG32_WRITE(TNETD73XX_RST_CTRL_PRCR, reset_status);
-+}
-+
-+
-+TNETD73XX_RESET_CTRL_T tnetd73xx_get_reset_status (TNETD73XX_RESET_MODULE_T reset_module)
-+{
-+ u32 reset_status;
-+
-+ REG32_READ(TNETD73XX_RST_CTRL_PRCR, reset_status);
-+ return ( (reset_status & (1 << reset_module)) ? OUT_OF_RESET : IN_RESET );
-+}
-+
-+void tnetd73xx_sys_reset(TNETD73XX_SYS_RST_MODE_T mode)
-+{
-+ REG32_WRITE(TNETD73XX_RST_CTRL_SWRCR, mode);
-+}
-+
-+#define TNETD73XX_RST_CTRL_RSR_MASK 0x3
-+
-+TNETD73XX_SYS_RESET_STATUS_T tnetd73xx_get_sys_last_reset_status()
-+{
-+ u32 sys_reset_status;
-+
-+ REG32_READ(TNETD73XX_RST_CTRL_RSR, sys_reset_status);
-+
-+ return ( (TNETD73XX_SYS_RESET_STATUS_T) (sys_reset_status & TNETD73XX_RST_CTRL_RSR_MASK) );
-+}
-+
-+
-+/*****************************************************************************
-+ * Power Control Module
-+ *****************************************************************************/
-+#define TNETD73XX_GLOBAL_POWER_DOWN_MASK 0x3FFFFFFF /* bit 31, 30 masked */
-+#define TNETD73XX_GLOBAL_POWER_DOWN_BIT 30 /* shift to bit 30, 31 */
-+
-+
-+void tnetd73xx_power_ctrl(TNETD73XX_POWER_MODULE_T power_module, TNETD73XX_POWER_CTRL_T power_ctrl)
-+{
-+ u32 power_status;
-+
-+ /* read current power down control register */
-+ REG32_READ(TNETD73XX_POWER_CTRL_PDCR, power_status);
-+
-+ if (power_ctrl == POWER_CTRL_POWER_DOWN)
-+ {
-+ /* power down the module */
-+ power_status |= (1 << power_module);
-+ }
-+ else
-+ {
-+ /* power on the module */
-+ power_status &= (~(1 << power_module));
-+ }
-+
-+ /* write to the reset register */
-+ REG32_WRITE(TNETD73XX_POWER_CTRL_PDCR, power_status);
-+}
-+
-+TNETD73XX_POWER_CTRL_T tnetd73xx_get_pwr_status(TNETD73XX_POWER_MODULE_T power_module)
-+{
-+ u32 power_status;
-+
-+ /* read current power down control register */
-+ REG32_READ(TNETD73XX_POWER_CTRL_PDCR, power_status);
-+
-+ return ( (power_status & (1 << power_module)) ? POWER_CTRL_POWER_DOWN : POWER_CTRL_POWER_UP );
-+}
-+
-+void tnetd73xx_set_global_pwr_mode(TNETD73XX_SYS_POWER_MODE_T power_mode)
-+{
-+ u32 power_status;
-+
-+ /* read current power down control register */
-+ REG32_READ(TNETD73XX_POWER_CTRL_PDCR, power_status);
-+
-+ power_status &= TNETD73XX_GLOBAL_POWER_DOWN_MASK;
-+ power_status |= ( power_mode << TNETD73XX_GLOBAL_POWER_DOWN_BIT);
-+
-+ /* write to power down control register */
-+ REG32_WRITE(TNETD73XX_POWER_CTRL_PDCR, power_status);
-+}
-+
-+TNETD73XX_SYS_POWER_MODE_T tnetd73xx_get_global_pwr_mode()
-+{
-+ u32 power_status;
-+
-+ /* read current power down control register */
-+ REG32_READ(TNETD73XX_POWER_CTRL_PDCR, power_status);
-+
-+ power_status &= (~TNETD73XX_GLOBAL_POWER_DOWN_MASK);
-+ power_status = ( power_status >> TNETD73XX_GLOBAL_POWER_DOWN_BIT);
-+
-+ return ( (TNETD73XX_SYS_POWER_MODE_T) power_status );
-+}
-+
-+
-+/*****************************************************************************
-+ * Wakeup Control
-+ *****************************************************************************/
-+
-+#define TNETD73XX_WAKEUP_POLARITY_BIT 16
-+
-+void tnetd73xx_wakeup_ctrl(TNETD73XX_WAKEUP_INTERRUPT_T wakeup_int,
-+ TNETD73XX_WAKEUP_CTRL_T wakeup_ctrl,
-+ TNETD73XX_WAKEUP_POLARITY_T wakeup_polarity)
-+{
-+ u32 wakeup_status;
-+
-+ /* read the wakeup control register */
-+ REG32_READ(TNETD73XX_POWER_CTRL_WKCR, wakeup_status);
-+
-+ /* enable/disable */
-+ if (wakeup_ctrl == WAKEUP_ENABLED)
-+ {
-+ /* enable wakeup */
-+ wakeup_status |= wakeup_int;
-+ }
-+ else
-+ {
-+ /* disable wakeup */
-+ wakeup_status &= (~wakeup_int);
-+ }
-+
-+ /* set polarity */
-+ if (wakeup_polarity == WAKEUP_ACTIVE_LOW)
-+ {
-+ wakeup_status |= (wakeup_int << TNETD73XX_WAKEUP_POLARITY_BIT);
-+ }
-+ else
-+ {
-+ wakeup_status &= ~(wakeup_int << TNETD73XX_WAKEUP_POLARITY_BIT);
-+ }
-+
-+ /* write the wakeup control register */
-+ REG32_WRITE(TNETD73XX_POWER_CTRL_WKCR, wakeup_status);
-+}
-+
-+
-+/*****************************************************************************
-+ * FSER Control
-+ *****************************************************************************/
-+
-+void tnetd73xx_fser_ctrl(TNETD73XX_FSER_MODE_T fser_mode)
-+{
-+ REG32_WRITE(TNETD73XX_FSER_BASE, fser_mode);
-+}
-+
-+/*****************************************************************************
-+ * Clock Control
-+ *****************************************************************************/
-+
-+#define MIN(x,y) ( ((x) < (y)) ? (x) : (y) )
-+#define MAX(x,y) ( ((x) > (y)) ? (x) : (y) )
-+#define ABS(x) ( ((signed)(x) > 0) ? (x) : (-(x)) )
-+#define CEIL(x,y) ( ((x) + (y) / 2) / (y) )
-+
-+#define CLKC_CLKCR(x) (TNETD73XX_CLOCK_CTRL_BASE + 0x20 + (0x20 * (x)))
-+#define CLKC_CLKPLLCR(x) (TNETD73XX_CLOCK_CTRL_BASE + 0x30 + (0x20 * (x)))
-+
-+#define CLKC_PRE_DIVIDER 0x0000001F
-+#define CLKC_POST_DIVIDER 0x001F0000
-+
-+#define CLKC_PLL_STATUS 0x1
-+#define CLKC_PLL_FACTOR 0x0000F000
-+
-+#define BOOTCR_PLL_BYPASS (1 << 5)
-+#define BOOTCR_MIPS_ASYNC_MODE (1 << 25)
-+
-+#define MIPS_PLL_SELECT 0x00030000
-+#define SYSTEM_PLL_SELECT 0x0000C000
-+#define USB_PLL_SELECT 0x000C0000
-+#define ADSLSS_PLL_SELECT 0x00C00000
-+
-+#define MIPS_AFECLKI_SELECT 0x00000000
-+#define MIPS_REFCLKI_SELECT 0x00010000
-+#define MIPS_XTAL3IN_SELECT 0x00020000
-+
-+#define SYSTEM_AFECLKI_SELECT 0x00000000
-+#define SYSTEM_REFCLKI_SELECT 0x00004000
-+#define SYSTEM_XTAL3IN_SELECT 0x00008000
-+#define SYSTEM_MIPSPLL_SELECT 0x0000C000
-+
-+#define USB_SYSPLL_SELECT 0x00000000
-+#define USB_REFCLKI_SELECT 0x00040000
-+#define USB_XTAL3IN_SELECT 0x00080000
-+#define USB_MIPSPLL_SELECT 0x000C0000
-+
-+#define ADSLSS_AFECLKI_SELECT 0x00000000
-+#define ADSLSS_REFCLKI_SELECT 0x00400000
-+#define ADSLSS_XTAL3IN_SELECT 0x00800000
-+#define ADSLSS_MIPSPLL_SELECT 0x00C00000
-+
-+#define SYS_MAX CLK_MHZ(150)
-+#define SYS_MIN CLK_MHZ(1)
-+
-+#define MIPS_SYNC_MAX SYS_MAX
-+#define MIPS_ASYNC_MAX CLK_MHZ(160)
-+#define MIPS_MIN CLK_MHZ(1)
-+
-+#define USB_MAX CLK_MHZ(100)
-+#define USB_MIN CLK_MHZ(1)
-+
-+#define ADSL_MAX CLK_MHZ(180)
-+#define ADSL_MIN CLK_MHZ(1)
-+
-+#define PLL_MUL_MAXFACTOR 15
-+#define MAX_DIV_VALUE 32
-+#define MIN_DIV_VALUE 1
-+
-+#define MIN_PLL_INP_FREQ CLK_MHZ(8)
-+#define MAX_PLL_INP_FREQ CLK_MHZ(100)
-+
-+#define DIVIDER_LOCK_TIME 10100
-+#define PLL_LOCK_TIME 10100 * 75
-+
-+
-+
-+ /****************************************************************************
-+ * DATA PURPOSE: PRIVATE Variables
-+ **************************************************************************/
-+ static u32 *clk_src[4];
-+ static u32 mips_pll_out;
-+ static u32 sys_pll_out;
-+ static u32 afeclk_inp;
-+ static u32 refclk_inp;
-+ static u32 xtal_inp;
-+ static u32 present_min;
-+ static u32 present_max;
-+
-+ /* Forward References */
-+ static u32 find_gcd(u32 min, u32 max);
-+ static u32 compute_prediv( u32 divider, u32 min, u32 max);
-+ static void get_val(u32 base_freq, u32 output_freq,u32 *multiplier, u32 *divider);
-+ static u32 get_base_frequency(TNETD73XX_CLKC_ID_T clk_id);
-+ static void find_approx(u32 *,u32 *,u32);
-+
-+ /****************************************************************************
-+ * FUNCTION: tnetd73xx_clkc_init
-+ ****************************************************************************
-+ * Description: The routine initializes the internal variables depending on
-+ * on the sources selected for different clocks.
-+ ***************************************************************************/
-+void tnetd73xx_clkc_init(u32 afeclk, u32 refclk, u32 xtal3in)
-+{
-+
-+ u32 choice;
-+
-+ afeclk_inp = afeclk;
-+ refclk_inp = refclk;
-+ xtal_inp = xtal3in;
-+
-+ choice = REG32_DATA(TNETD73XX_DCL_BOOTCR) & MIPS_PLL_SELECT;
-+ switch(choice)
-+ {
-+ case MIPS_AFECLKI_SELECT:
-+ clk_src[CLKC_MIPS] = &afeclk_inp;
-+ break;
-+
-+ case MIPS_REFCLKI_SELECT:
-+ clk_src[CLKC_MIPS] = &refclk_inp;
-+ break;
-+
-+ case MIPS_XTAL3IN_SELECT:
-+ clk_src[CLKC_MIPS] = &xtal_inp;
-+ break;
-+
-+ default :
-+ clk_src[CLKC_MIPS] = 0;
-+
-+ }
-+
-+ choice = REG32_DATA(TNETD73XX_DCL_BOOTCR) & SYSTEM_PLL_SELECT;
-+ switch(choice)
-+ {
-+ case SYSTEM_AFECLKI_SELECT:
-+ clk_src[CLKC_SYS] = &afeclk_inp;
-+ break;
-+
-+ case SYSTEM_REFCLKI_SELECT:
-+ clk_src[CLKC_SYS] = &refclk_inp;
-+ break;
-+
-+ case SYSTEM_XTAL3IN_SELECT:
-+ clk_src[CLKC_SYS] = &xtal_inp;
-+ break;
-+
-+ case SYSTEM_MIPSPLL_SELECT:
-+ clk_src[CLKC_SYS] = &mips_pll_out;
-+ break;
-+
-+ default :
-+ clk_src[CLKC_SYS] = 0;
-+
-+ }
-+
-+
-+ choice = REG32_DATA(TNETD73XX_DCL_BOOTCR) & ADSLSS_PLL_SELECT;
-+ switch(choice)
-+ {
-+ case ADSLSS_AFECLKI_SELECT:
-+ clk_src[CLKC_ADSLSS] = &afeclk_inp;
-+ break;
-+
-+ case ADSLSS_REFCLKI_SELECT:
-+ clk_src[CLKC_ADSLSS] = &refclk_inp;
-+ break;
-+
-+ case ADSLSS_XTAL3IN_SELECT:
-+ clk_src[CLKC_ADSLSS] = &xtal_inp;
-+ break;
-+
-+ case ADSLSS_MIPSPLL_SELECT:
-+ clk_src[CLKC_ADSLSS] = &mips_pll_out;
-+ break;
-+
-+ default :
-+ clk_src[CLKC_ADSLSS] = 0;
-+
-+ }
-+
-+
-+ choice = REG32_DATA(TNETD73XX_DCL_BOOTCR) & USB_PLL_SELECT;
-+ switch(choice)
-+ {
-+ case USB_SYSPLL_SELECT:
-+ clk_src[CLKC_USB] = &sys_pll_out ;
-+ break;
-+
-+ case USB_REFCLKI_SELECT:
-+ clk_src[CLKC_USB] = &refclk_inp;
-+ break;
-+
-+ case USB_XTAL3IN_SELECT:
-+ clk_src[CLKC_USB] = &xtal_inp;
-+ break;
-+
-+ case USB_MIPSPLL_SELECT:
-+ clk_src[CLKC_USB] = &mips_pll_out;
-+ break;
-+
-+ default :
-+ clk_src[CLKC_USB] = 0;
-+
-+ }
-+}
-+
-+
-+
-+/****************************************************************************
-+ * FUNCTION: tnetd73xx_clkc_set_freq
-+ ****************************************************************************
-+ * Description: The above routine is called to set the output_frequency of the
-+ * selected clock(using clk_id) to the required value given
-+ * by the variable output_freq.
-+ ***************************************************************************/
-+TNETD73XX_ERR tnetd73xx_clkc_set_freq
-+(
-+ TNETD73XX_CLKC_ID_T clk_id,
-+ u32 output_freq
-+ )
-+{
-+ u32 base_freq;
-+ u32 multiplier;
-+ u32 divider;
-+ u32 min_prediv;
-+ u32 max_prediv;
-+ u32 prediv;
-+ u32 postdiv;
-+ u32 temp;
-+
-+ /* check if PLLs are bypassed*/
-+ if(REG32_DATA(TNETD73XX_DCL_BOOTCR) & BOOTCR_PLL_BYPASS)
-+ {
-+ return TNETD73XX_ERR_ERROR;
-+ }
-+
-+ /*check if the requested output_frequency is in valid range*/
-+ switch( clk_id )
-+ {
-+ case CLKC_SYS:
-+ if( output_freq < SYS_MIN || output_freq > SYS_MAX)
-+ {
-+ return TNETD73XX_ERR_ERROR;
-+ }
-+ present_min = SYS_MIN;
-+ present_max = SYS_MAX;
-+ break;
-+
-+ case CLKC_MIPS:
-+ if((output_freq < MIPS_MIN) ||
-+ (output_freq > ((REG32_DATA(TNETD73XX_DCL_BOOTCR) & BOOTCR_MIPS_ASYNC_MODE) ? MIPS_ASYNC_MAX: MIPS_SYNC_MAX)))
-+ {
-+ return TNETD73XX_ERR_ERROR;
-+ }
-+ present_min = MIPS_MIN;
-+ present_max = (REG32_DATA(TNETD73XX_DCL_BOOTCR) & BOOTCR_MIPS_ASYNC_MODE) ? MIPS_ASYNC_MAX: MIPS_SYNC_MAX;
-+ break;
-+
-+ case CLKC_USB:
-+ if( output_freq < USB_MIN || output_freq > USB_MAX)
-+ {
-+ return TNETD73XX_ERR_ERROR;
-+ }
-+ present_min = USB_MIN;
-+ present_max = USB_MAX;
-+ break;
-+
-+ case CLKC_ADSLSS:
-+ if( output_freq < ADSL_MIN || output_freq > ADSL_MAX)
-+ {
-+ return TNETD73XX_ERR_ERROR;
-+ }
-+ present_min = ADSL_MIN;
-+ present_max = ADSL_MAX;
-+ break;
-+ }
-+
-+
-+ base_freq = get_base_frequency(clk_id);
-+
-+
-+ /* check for minimum base frequency value */
-+ if( base_freq < MIN_PLL_INP_FREQ)
-+ {
-+ return TNETD73XX_ERR_ERROR;
-+ }
-+
-+ get_val(output_freq, base_freq, &multiplier, &divider);
-+
-+ /* check multiplier range */
-+ if( (multiplier > PLL_MUL_MAXFACTOR) || (multiplier <= 0) )
-+ {
-+ return TNETD73XX_ERR_ERROR;
-+ }
-+
-+ /* check divider value */
-+ if( divider == 0 )
-+ {
-+ return TNETD73XX_ERR_ERROR;
-+ }
-+
-+ /*compute minimum and maximum predivider values */
-+ min_prediv = MAX(base_freq / MAX_PLL_INP_FREQ + 1, divider / MAX_DIV_VALUE + 1);
-+ max_prediv = MIN(base_freq / MIN_PLL_INP_FREQ, MAX_DIV_VALUE);
-+
-+ /*adjust the value of divider so that it not less than minimum predivider value*/
-+ if (divider < min_prediv)
-+ {
-+ temp = CEIL(min_prediv, divider);
-+ if ((temp * multiplier) > PLL_MUL_MAXFACTOR)
-+ {
-+ return TNETD73XX_ERR_ERROR ;
-+ }
-+ else
-+ {
-+ multiplier = temp * multiplier;
-+ divider = min_prediv;
-+ }
-+
-+ }
-+
-+ /* compute predivider and postdivider values */
-+ prediv = compute_prediv (divider, min_prediv, max_prediv);
-+ postdiv = CEIL(divider,prediv);
-+
-+ /*return fail if postdivider value falls out of range */
-+ if(postdiv > MAX_DIV_VALUE)
-+ {
-+ return TNETD73XX_ERR_ERROR;
-+ }
-+
-+
-+ /*write predivider and postdivider values*/
-+ /* pre-Divider and post-divider are 5 bit N+1 dividers */
-+ REG32_WRITE(CLKC_CLKCR(clk_id), ((postdiv -1) & 0x1F) << 16 | ((prediv -1) & 0x1F) );
-+
-+ /*wait for divider output to stabilise*/
-+ for(temp =0; temp < DIVIDER_LOCK_TIME; temp++);
-+
-+ /*write to PLL clock register*/
-+
-+ if(clk_id == CLKC_SYS)
-+ {
-+ /* but before writing put DRAM to hold mode */
-+ REG32_DATA(TNETD73XX_EMIF_SDRAM_CFG) |= 0x80000000;
-+ }
-+ /*Bring PLL into div mode */
-+ REG32_WRITE(CLKC_CLKPLLCR(clk_id), 0x4);
-+
-+ /*compute the word to be written to PLLCR
-+ *corresponding to multiplier value
-+ */
-+ multiplier = (((multiplier - 1) & 0xf) << 12)| ((255 <<3) | 0x0e);
-+
-+ /* wait till PLL enters div mode */
-+ while(REG32_DATA(CLKC_CLKPLLCR(clk_id)) & CLKC_PLL_STATUS)
-+ /*nothing*/;
-+
-+ REG32_WRITE(CLKC_CLKPLLCR(clk_id), multiplier);
-+
-+ while(!REG32_DATA(CLKC_CLKPLLCR(clk_id)) & CLKC_PLL_STATUS)
-+ /*nothing*/;
-+
-+
-+ /*wait for External pll to lock*/
-+ for(temp =0; temp < PLL_LOCK_TIME; temp++);
-+
-+ if(clk_id == CLKC_SYS)
-+ {
-+ /* Bring DRAM out of hold */
-+ REG32_DATA(TNETD73XX_EMIF_SDRAM_CFG) &= ~0x80000000;
-+ }
-+
-+ return TNETD73XX_ERR_OK ;
-+}
-+
-+/****************************************************************************
-+ * FUNCTION: tnetd73xx_clkc_get_freq
-+ ****************************************************************************
-+ * Description: The above routine is called to get the output_frequency of the
-+ * selected clock( clk_id)
-+ ***************************************************************************/
-+u32 tnetd73xx_clkc_get_freq
-+(
-+ TNETD73XX_CLKC_ID_T clk_id
-+ )
-+{
-+
-+ u32 clk_ctrl_register;
-+ u32 clk_pll_setting;
-+ u32 clk_predivider;
-+ u32 clk_postdivider;
-+ u16 pll_factor;
-+ u32 base_freq;
-+ u32 divider;
-+
-+ base_freq = get_base_frequency(clk_id);
-+
-+ clk_ctrl_register = REG32_DATA(CLKC_CLKCR(clk_id));
-+
-+ /* pre-Divider and post-divider are 5 bit N+1 dividers */
-+ clk_predivider = (CLKC_PRE_DIVIDER & clk_ctrl_register) + 1;
-+ clk_postdivider = ((CLKC_POST_DIVIDER & clk_ctrl_register) >> 16) + 1;
-+
-+ divider = clk_predivider * clk_postdivider;
-+
-+
-+ if( (REG32_DATA(TNETD73XX_DCL_BOOTCR) & BOOTCR_PLL_BYPASS))
-+ {
-+ return (CEIL(base_freq, divider)); /* PLLs bypassed.*/
-+ }
-+
-+
-+ else
-+ {
-+ /* return the current clock speed based upon the PLL setting */
-+ clk_pll_setting = REG32_DATA(CLKC_CLKPLLCR(clk_id));
-+
-+ /* Get the PLL multiplication factor */
-+ pll_factor = ((clk_pll_setting & CLKC_PLL_FACTOR) >> 12) + 1;
-+
-+ /* Check if we're in divide mode or multiply mode */
-+ if((clk_pll_setting & 0x1) == 0)
-+ {
-+ /* We're in divide mode */
-+ if(pll_factor < 0x10)
-+ return (CEIL(base_freq >> 1, divider));
-+ else
-+ return (CEIL(base_freq >> 2, divider));
-+ }
-+
-+ else /* We're in PLL mode */
-+ {
-+ /* See if PLLNDIV & PLLDIV are set */
-+ if((clk_pll_setting & 0x0800) && (clk_pll_setting & 0x2))
-+ {
-+ if(clk_pll_setting & 0x1000)
-+ {
-+ /* clk = base_freq * k/2 */
-+ return(CEIL((base_freq * pll_factor) >> 1, divider));
-+ }
-+ else
-+ {
-+ /* clk = base_freq * (k-1) / 4)*/
-+ return(CEIL((base_freq * (pll_factor - 1)) >>2, divider));
-+ }
-+ }
-+ else
-+ {
-+ if(pll_factor < 0x10)
-+ {
-+ /* clk = base_freq * k */
-+ return(CEIL(base_freq * pll_factor, divider));
-+ }
-+
-+ else
-+ {
-+ /* clk = base_freq */
-+ return(CEIL(base_freq, divider));
-+ }
-+ }
-+ }
-+ return(0); /* Should never reach here */
-+
-+ }
-+
-+}
-+
-+
-+/* local helper functions */
-+
-+/****************************************************************************
-+ * FUNCTION: get_base_frequency
-+ ****************************************************************************
-+ * Description: The above routine is called to get base frequency of the clocks.
-+ ***************************************************************************/
-+
-+static u32 get_base_frequency(TNETD73XX_CLKC_ID_T clk_id)
-+{
-+ /* update the current MIPs PLL output value, if the required
-+ * source is MIPS PLL
-+ */
-+ if ( clk_src[clk_id] == &mips_pll_out)
-+ {
-+ *clk_src[clk_id] = tnetd73xx_clkc_get_freq(CLKC_MIPS);
-+ }
-+
-+
-+ /* update the current System PLL output value, if the required
-+ * source is system PLL
-+ */
-+ if ( clk_src[clk_id] == &sys_pll_out)
-+ {
-+ *clk_src[clk_id] = tnetd73xx_clkc_get_freq(CLKC_SYS);
-+ }
-+
-+ return (*clk_src[clk_id]);
-+
-+}
-+
-+
-+
-+/****************************************************************************
-+ * FUNCTION: find_gcd
-+ ****************************************************************************
-+ * Description: The above routine is called to find gcd of 2 numbers.
-+ ***************************************************************************/
-+static u32 find_gcd
-+(
-+ u32 min,
-+ u32 max
-+ )
-+{
-+ if (max % min == 0)
-+ {
-+ return min;
-+ }
-+ else
-+ {
-+ return find_gcd(max % min, min);
-+ }
-+}
-+
-+/****************************************************************************
-+ * FUNCTION: compute_prediv
-+ ****************************************************************************
-+ * Description: The above routine is called to compute predivider value
-+ ***************************************************************************/
-+static u32 compute_prediv(u32 divider, u32 min, u32 max)
-+{
-+ u16 prediv;
-+
-+ /* return the divider itself it it falls within the range of predivider*/
-+ if (min <= divider && divider <= max)
-+ {
-+ return divider;
-+ }
-+
-+ /* find a value for prediv such that it is a factor of divider */
-+ for (prediv = max; prediv >= min ; prediv--)
-+ {
-+ if ( (divider % prediv) == 0 )
-+ {
-+ return prediv;
-+ }
-+ }
-+
-+ /* No such factor exists, return min as prediv */
-+ return min;
-+}
-+
-+/****************************************************************************
-+ * FUNCTION: get_val
-+ ****************************************************************************
-+ * Description: This routine is called to get values of divider and multiplier.
-+ ***************************************************************************/
-+
-+static void get_val(u32 output_freq, u32 base_freq,u32 *multiplier, u32 *divider)
-+{
-+ u32 temp_mul;
-+ u32 temp_div;
-+ u32 gcd;
-+ u32 min_freq;
-+ u32 max_freq;
-+
-+ /* find gcd of base_freq, output_freq */
-+ min_freq = (base_freq < output_freq) ? base_freq : output_freq;
-+ max_freq = (base_freq > output_freq) ? base_freq : output_freq;
-+ gcd = find_gcd(min_freq , max_freq);
-+
-+ if(gcd == 0)
-+ return; /* ERROR */
-+
-+ /* compute values of multiplier and divider */
-+ temp_mul = output_freq / gcd;
-+ temp_div = base_freq / gcd;
-+
-+
-+ /* set multiplier such that 1 <= multiplier <= PLL_MUL_MAXFACTOR */
-+ if( temp_mul > PLL_MUL_MAXFACTOR )
-+ {
-+ if((temp_mul / temp_div) > PLL_MUL_MAXFACTOR)
-+ return;
-+
-+ find_approx(&temp_mul,&temp_div,base_freq);
-+ }
-+
-+ *multiplier = temp_mul;
-+ *divider = temp_div;
-+}
-+
-+/****************************************************************************
-+ * FUNCTION: find_approx
-+ ****************************************************************************
-+ * Description: This function gets the approx value of num/denom.
-+ ***************************************************************************/
-+
-+static void find_approx(u32 *num,u32 *denom,u32 base_freq)
-+{
-+ u32 num1;
-+ u32 denom1;
-+ u32 num2;
-+ u32 denom2;
-+ int32_t closest;
-+ int32_t prev_closest;
-+ u32 temp_num;
-+ u32 temp_denom;
-+ u32 normalize;
-+ u32 gcd;
-+ u32 output_freq;
-+
-+ num1 = *num;
-+ denom1 = *denom;
-+
-+ prev_closest = 0x7fffffff; /* maximum possible value */
-+ num2 = num1;
-+ denom2 = denom1;
-+
-+ /* start with max */
-+ for(temp_num = 15; temp_num >=1; temp_num--)
-+ {
-+
-+ temp_denom = CEIL(temp_num * denom1, num1);
-+ output_freq = (temp_num * base_freq) / temp_denom;
-+
-+ if(temp_denom < 1)
-+ {
-+ break;
-+ }
-+ else
-+ {
-+ normalize = CEIL(num1,temp_num);
-+ closest = (ABS((num1 * (temp_denom) ) - (temp_num * denom1))) * normalize;
-+ if(closest < prev_closest && output_freq > present_min && output_freq <present_max)
-+ {
-+ prev_closest = closest;
-+ num2 = temp_num;
-+ denom2 = temp_denom;
-+ }
-+
-+ }
-+
-+ }
-+
-+ gcd = find_gcd(num2,denom2);
-+ num2 = num2 / gcd;
-+ denom2 = denom2 /gcd;
-+
-+ *num = num2;
-+ *denom = denom2;
-+}
-+
-+
-+/*****************************************************************************
-+ * GPIO Control
-+ *****************************************************************************/
-+
-+/****************************************************************************
-+ * FUNCTION: tnetd73xx_gpio_init
-+ ***************************************************************************/
-+void tnetd73xx_gpio_init()
-+{
-+ /* Bring module out of reset */
-+ tnetd73xx_reset_ctrl(RESET_MODULE_GPIO, OUT_OF_RESET);
-+ REG32_WRITE(TNETD73XX_GPIOENR, 0xFFFFFFFF);
-+}
-+
-+/****************************************************************************
-+ * FUNCTION: tnetd73xx_gpio_ctrl
-+ ***************************************************************************/
-+void tnetd73xx_gpio_ctrl(TNETD73XX_GPIO_PIN_T gpio_pin,
-+ TNETD73XX_GPIO_PIN_MODE_T pin_mode,
-+ TNETD73XX_GPIO_PIN_DIRECTION_T pin_direction)
-+{
-+ u32 pin_status;
-+ REG32_READ(TNETD73XX_GPIOENR, pin_status);
-+ if (pin_mode == GPIO_PIN)
-+ {
-+ pin_status |= (1 << gpio_pin);
-+ REG32_WRITE(TNETD73XX_GPIOENR, pin_status);
-+
-+ /* Set pin direction */
-+ REG32_READ(TNETD73XX_GPIOPDIRR, pin_status);
-+ if (pin_direction == GPIO_INPUT_PIN)
-+ {
-+ pin_status |= (1 << gpio_pin);
-+ }
-+ else /* GPIO_OUTPUT_PIN */
-+ {
-+ pin_status &= (~(1 << gpio_pin));
-+ }
-+ REG32_WRITE(TNETD73XX_GPIOPDIRR, pin_status);
-+ }
-+ else /* FUNCTIONAL PIN */
-+ {
-+ pin_status &= (~(1 << gpio_pin));
-+ REG32_WRITE(TNETD73XX_GPIOENR, pin_status);
-+ }
-+
-+}
-+
-+/****************************************************************************
-+ * FUNCTION: tnetd73xx_gpio_out
-+ ***************************************************************************/
-+void tnetd73xx_gpio_out(TNETD73XX_GPIO_PIN_T gpio_pin, int value)
-+{
-+ u32 pin_value;
-+
-+ REG32_READ(TNETD73XX_GPIODOUTR, pin_value);
-+ if (value == 1)
-+ {
-+ pin_value |= (1 << gpio_pin);
-+ }
-+ else
-+ {
-+ pin_value &= (~(1 << gpio_pin));
-+ }
-+ REG32_WRITE(TNETD73XX_GPIODOUTR, pin_value);
-+}
-+
-+/****************************************************************************
-+ * FUNCTION: tnetd73xx_gpio_in
-+ ***************************************************************************/
-+int tnetd73xx_gpio_in(TNETD73XX_GPIO_PIN_T gpio_pin)
-+{
-+ u32 pin_value;
-+ REG32_READ(TNETD73XX_GPIODINR, pin_value);
-+ return ( (pin_value & (1 << gpio_pin)) ? 1 : 0 );
-+}
-+
-diff -urN linux.old/arch/mips/config-shared.in linux.dev/arch/mips/config-shared.in
---- linux.old/arch/mips/config-shared.in 2005-10-21 16:43:18.917114000 +0200
-+++ linux.dev/arch/mips/config-shared.in 2005-11-10 01:12:43.950955750 +0100
-@@ -20,6 +20,16 @@
- mainmenu_option next_comment
- comment 'Machine selection'
- dep_bool 'Support for Acer PICA 1 chipset (EXPERIMENTAL)' CONFIG_ACER_PICA_61 $CONFIG_EXPERIMENTAL
-+dep_bool 'Support for Texas Instruments AR7 (EXPERIMENTAL)' CONFIG_AR7 $CONFIG_MIPS32 $CONFIG_EXPERIMENTAL
-+if [ "$CONFIG_AR7" = "y" ]; then
-+ choice 'Texas Instruments Reference Platform' \
-+ "AR7DB CONFIG_AR7DB \
-+ AR7RD CONFIG_AR7RD \
-+ AR7WRD CONFIG_AR7WRD" AR7DB
-+ int 'Texas Instruments AR7 CPU Frequency' CONFIG_AR7_CPU 150
-+ int 'Texas Instruments AR7 System Frequency' CONFIG_AR7_SYS 125
-+ hex 'Texas Instruments AR7 SDRAM Start' CONFIG_AR7_MEMORY 0x14000000
-+fi
- dep_bool 'Support for Alchemy Bosporus board' CONFIG_MIPS_BOSPORUS $CONFIG_MIPS32
- dep_bool 'Support for FIC Multimedia Player board' CONFIG_MIPS_FICMMP $CONFIG_MIPS32
- dep_bool 'Support for Alchemy Mirage board' CONFIG_MIPS_MIRAGE $CONFIG_MIPS32
-@@ -239,6 +249,11 @@
- define_bool CONFIG_NONCOHERENT_IO y
- define_bool CONFIG_PC_KEYB y
- fi
-+if [ "$CONFIG_AR7" = "y" ]; then
-+ define_bool CONFIG_IRQ_CPU y
-+ define_bool CONFIG_NONCOHERENT_IO y
-+ define_bool CONFIG_SWAP_IO_SPACE y
-+fi
- if [ "$CONFIG_CASIO_E55" = "y" ]; then
- define_bool CONFIG_IRQ_CPU y
- define_bool CONFIG_NONCOHERENT_IO y
-@@ -736,6 +751,7 @@
- mainmenu_option next_comment
- comment 'General setup'
- if [ "$CONFIG_ACER_PICA_61" = "y" -o \
-+ "$CONFIG_AR7" = "y" -o \
- "$CONFIG_CASIO_E55" = "y" -o \
- "$CONFIG_DDB5074" = "y" -o \
- "$CONFIG_DDB5476" = "y" -o \
-@@ -797,6 +813,7 @@
- bool 'Networking support' CONFIG_NET
-
- if [ "$CONFIG_ACER_PICA_61" = "y" -o \
-+ "$CONFIG_AR7" = "y" -o \
- "$CONFIG_CASIO_E55" = "y" -o \
- "$CONFIG_DECSTATION" = "y" -o \
- "$CONFIG_IBM_WORKPAD" = "y" -o \
-diff -urN linux.old/arch/mips/kernel/head.S linux.dev/arch/mips/kernel/head.S
---- linux.old/arch/mips/kernel/head.S 2005-10-21 16:43:16.396956500 +0200
-+++ linux.dev/arch/mips/kernel/head.S 2005-11-10 01:10:45.807572250 +0100
-@@ -75,11 +75,11 @@
- * size!
- */
- NESTED(except_vec4, 0, sp)
-- .set push
-- .set noreorder
--1: j 1b /* Dummy, will be replaced */
-- nop
-- .set pop
-+ .set mips2
-+ lui k0, 0x9400
-+ ori k0, 0x200
-+ jr k0
-+ nop
- END(except_vec4)
-
- /*
-diff -urN linux.old/arch/mips/kernel/mips_ksyms.c linux.dev/arch/mips/kernel/mips_ksyms.c
---- linux.old/arch/mips/kernel/mips_ksyms.c 2004-02-18 14:36:30.000000000 +0100
-+++ linux.dev/arch/mips/kernel/mips_ksyms.c 2005-11-10 01:10:45.811572500 +0100
-@@ -40,6 +40,12 @@
- extern long __strnlen_user_nocheck_asm(const char *s);
- extern long __strnlen_user_asm(const char *s);
-
-+#ifdef CONFIG_AR7
-+#include <asm/ar7/adam2_env.h>
-+int avalanche_request_pacing(int irq_nr, unsigned int blk_num, unsigned int pace_value);
-+#endif
-+
-+
- EXPORT_SYMBOL(mips_machtype);
- #ifdef CONFIG_EISA
- EXPORT_SYMBOL(EISA_bus);
-@@ -103,3 +109,10 @@
- #endif
-
- EXPORT_SYMBOL(get_wchan);
-+
-+#ifdef CONFIG_AR7
-+EXPORT_SYMBOL_NOVERS(avalanche_request_pacing);
-+EXPORT_SYMBOL_NOVERS(prom_getenv);
-+EXPORT_SYMBOL_NOVERS(prom_iterenv);
-+#endif
-+
-diff -urN linux.old/arch/mips/kernel/setup.c linux.dev/arch/mips/kernel/setup.c
---- linux.old/arch/mips/kernel/setup.c 2005-10-21 16:43:16.396956500 +0200
-+++ linux.dev/arch/mips/kernel/setup.c 2005-11-10 01:14:16.376732000 +0100
-@@ -38,6 +38,7 @@
- #include <asm/io.h>
- #include <asm/ptrace.h>
- #include <asm/system.h>
-+#include <asm/addrspace.h>
-
- struct cpuinfo_mips cpu_data[NR_CPUS];
- EXPORT_SYMBOL(cpu_data);
-@@ -88,7 +89,7 @@
- struct boot_mem_map boot_mem_map;
-
- unsigned char aux_device_present;
--extern char _ftext, _etext, _fdata, _edata, _end;
-+extern char _ftext, _etext, _fdata, _edata, _fbss, _end;
-
- static char command_line[CL_SIZE];
- char saved_command_line[CL_SIZE];
-@@ -116,6 +117,7 @@
-
- static struct resource code_resource = { "Kernel code" };
- static struct resource data_resource = { "Kernel data" };
-+static struct resource bss_resource = { "Kernel bss" };
-
- asmlinkage void __init
- init_arch(int argc, char **argv, char **envp, int *prom_vec)
-@@ -272,7 +274,7 @@
- for (i = 0; i < boot_mem_map.nr_map; i++) {
- unsigned long start, end;
-
-- if (boot_mem_map.map[i].type != BOOT_MEM_RAM)
-+ if (boot_mem_map.map[i].type == BOOT_MEM_RESERVED)
- continue;
-
- start = PFN_UP(boot_mem_map.map[i].addr);
-@@ -320,7 +322,8 @@
- #endif
-
- /* Initialize the boot-time allocator with low memory only. */
-- bootmap_size = init_bootmem(first_usable_pfn, max_low_pfn);
-+ bootmap_size = init_bootmem_node(NODE_DATA(0), first_usable_pfn,
-+ PFN_UP(PHYS_OFFSET), max_low_pfn);
-
- /*
- * Register fully available low RAM pages with the bootmem allocator.
-@@ -371,11 +374,12 @@
- continue;
-
- /* Register lowmem ranges */
-- free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(size));
-+ free_bootmem_node(NODE_DATA(0), PFN_PHYS(curr_pfn),
-+ size<<PAGE_SHIFT);
- }
-
- /* Reserve the bootmap memory. */
-- reserve_bootmem(PFN_PHYS(first_usable_pfn), bootmap_size);
-+ reserve_bootmem_node(NODE_DATA(0), PFN_PHYS(first_usable_pfn), bootmap_size);
-
- #ifdef CONFIG_BLK_DEV_INITRD
- /* Board specific code should have set up initrd_start and initrd_end */
-@@ -409,6 +413,8 @@
- code_resource.end = virt_to_bus(&_etext) - 1;
- data_resource.start = virt_to_bus(&_fdata);
- data_resource.end = virt_to_bus(&_edata) - 1;
-+ bss_resource.start = virt_to_bus(&_fbss);
-+ bss_resource.end = virt_to_bus(&_end) - 1;
-
- /*
- * Request address space for all standard RAM.
-@@ -448,6 +454,7 @@
- */
- request_resource(res, &code_resource);
- request_resource(res, &data_resource);
-+ request_resource(res, &bss_resource);
- }
- }
-
-@@ -494,6 +501,7 @@
- void hp_setup(void);
- void au1x00_setup(void);
- void frame_info_init(void);
-+ void ar7_setup(void);
-
- frame_info_init();
- #if defined(CONFIG_BLK_DEV_FD) || defined(CONFIG_BLK_DEV_FD_MODULE)
-@@ -691,6 +699,11 @@
- pmc_yosemite_setup();
- break;
- #endif
-+#ifdef CONFIG_AR7
-+ case MACH_GROUP_UNKNOWN:
-+ ar7_setup();
-+ break;
-+#endif
- default:
- panic("Unsupported architecture");
- }
-diff -urN linux.old/arch/mips/kernel/time.c linux.dev/arch/mips/kernel/time.c
---- linux.old/arch/mips/kernel/time.c 2005-01-19 15:09:29.000000000 +0100
-+++ linux.dev/arch/mips/kernel/time.c 2005-11-10 01:12:43.950955750 +0100
-@@ -143,7 +143,6 @@
- expirelo = (count / cycles_per_jiffy + 1) * cycles_per_jiffy;
- write_c0_count(expirelo - cycles_per_jiffy);
- write_c0_compare(expirelo);
-- write_c0_count(count);
- }
-
- int (*mips_timer_state)(void);
-diff -urN linux.old/arch/mips/kernel/traps.c linux.dev/arch/mips/kernel/traps.c
---- linux.old/arch/mips/kernel/traps.c 2005-10-21 16:43:16.400956750 +0200
-+++ linux.dev/arch/mips/kernel/traps.c 2005-11-10 01:13:28.301727500 +0100
-@@ -869,9 +869,24 @@
-
- exception_handlers[n] = handler;
- if (n == 0 && cpu_has_divec) {
-+ printk(KERN_DEBUG "%s: using long jump via k0 to reach %08x\n",
-+ __FUNCTION__, handler);
-+ /* where does the 8 byte limit mentioned in head.S come from??? */
-+ if (handler > 0x0fffffff) { /* maximum for single J instruction */
-+ /* lui k0, 0x0000 */
-+ *(volatile u32 *)(KSEG0+0x200) = 0x3c1a0000 | (handler >> 16);
-+ /* ori k0, 0x0000 */
-+ *(volatile u32 *)(KSEG0+0x204) = 0x375a0000 | (handler & 0xffff);
-+ /* jr k0 */
-+ *(volatile u32 *)(KSEG0+0x208) = 0x03400008;
-+ /* nop */
-+ *(volatile u32 *)(KSEG0+0x20C) = 0x00000000;
-+ flush_icache_range(KSEG0+0x200, KSEG0+0x210);
-+ } else {
- *(volatile u32 *)(KSEG0+0x200) = 0x08000000 |
- (0x03ffffff & (handler >> 2));
-- flush_icache_range(KSEG0+0x200, KSEG0 + 0x204);
-+ flush_icache_range(KSEG0+0x200, KSEG0+0x204);
-+ }
- }
- return (void *)old_handler;
- }
-diff -urN linux.old/arch/mips/mm/init.c linux.dev/arch/mips/mm/init.c
---- linux.old/arch/mips/mm/init.c 2004-02-18 14:36:30.000000000 +0100
-+++ linux.dev/arch/mips/mm/init.c 2005-11-10 01:14:16.376732000 +0100
-@@ -235,10 +235,13 @@
- #endif
- }
-
-+#define START_PFN (NODE_DATA(0)->bdata->node_boot_start >> PAGE_SHIFT)
-+#define MAX_LOW_PFN (NODE_DATA(0)->bdata->node_low_pfn)
-+
- void __init paging_init(void)
- {
- unsigned long zones_size[MAX_NR_ZONES] = {0, 0, 0};
-- unsigned long max_dma, high, low;
-+ unsigned long max_dma, high, low, start;
-
- pagetable_init();
-
-@@ -247,7 +250,8 @@
- #endif
-
- max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;
-- low = max_low_pfn;
-+ start = START_PFN;
-+ low = MAX_LOW_PFN - start;
- high = highend_pfn;
-
- #ifdef CONFIG_ISA
-@@ -270,7 +274,8 @@
- zones_size[ZONE_HIGHMEM] = high - low;
- #endif
-
-- free_area_init(zones_size);
-+ free_area_init_node(0, NODE_DATA(0), 0, zones_size,
-+ start << PAGE_SHIFT, 0);
- }
-
- #define PFN_UP(x) (((x) + PAGE_SIZE - 1) >> PAGE_SHIFT)
-@@ -283,7 +288,7 @@
- for (i = 0; i < boot_mem_map.nr_map; i++) {
- unsigned long addr, end;
-
-- if (boot_mem_map.map[i].type != BOOT_MEM_RAM)
-+ if (boot_mem_map.map[i].type == BOOT_MEM_RESERVED)
- /* not usable memory */
- continue;
-
-@@ -313,16 +318,17 @@
- max_mapnr = num_physpages = highend_pfn;
- num_mappedpages = max_low_pfn;
- #else
-- max_mapnr = num_mappedpages = num_physpages = max_low_pfn;
-+ max_mapnr = num_mappedpages = num_physpages = MAX_LOW_PFN - START_PFN;
- #endif
-- high_memory = (void *) __va(max_low_pfn * PAGE_SIZE);
--
-- totalram_pages += free_all_bootmem();
-+
-+ high_memory = (void *) __va(MAX_LOW_PFN * PAGE_SIZE);
-+
-+ totalram_pages += free_all_bootmem_node(NODE_DATA(0));
- totalram_pages -= setup_zero_pages(); /* Setup zeroed pages. */
-
- reservedpages = ram = 0;
-- for (tmp = 0; tmp < max_low_pfn; tmp++)
-- if (page_is_ram(tmp)) {
-+ for (tmp = 0; tmp < max_mapnr; tmp++)
-+ if (page_is_ram(START_PFN + tmp)) {
- ram++;
- if (PageReserved(mem_map+tmp))
- reservedpages++;
-@@ -377,13 +383,13 @@
- #endif
-
- extern char __init_begin, __init_end;
--extern void prom_free_prom_memory(void) __init;
-+extern unsigned long prom_free_prom_memory(void) __init;
-
- void free_initmem(void)
- {
- unsigned long addr;
-
-- prom_free_prom_memory ();
-+ totalram_pages += prom_free_prom_memory ();
-
- addr = (unsigned long) &__init_begin;
- while (addr < (unsigned long) &__init_end) {
-diff -urN linux.old/drivers/char/Config.in linux.dev/drivers/char/Config.in
---- linux.old/drivers/char/Config.in 2005-10-21 16:43:16.440959250 +0200
-+++ linux.dev/drivers/char/Config.in 2005-11-10 01:10:45.843574500 +0100
-@@ -188,6 +188,14 @@
- tristate 'Total Impact briQ front panel driver' CONFIG_BRIQ_PANEL
- fi
-
-+if [ "$CONFIG_AR7" = "y" ]; then
-+ bool 'VLYNQ support for the TI SOC' CONFIG_AR7_VLYNQ
-+ dep_bool 'VLYNQ clock source Internal' CONFIG_VLYNQ_CLK_LOCAL $CONFIG_AR7_VLYNQ
-+
-+ define_int CONFIG_AR7_VLYNQ_PORTS 2
-+ tristate 'ADAM2 environment support (read-only)' CONFIG_AR7_ADAM2
-+fi
-+
- source drivers/i2c/Config.in
-
- mainmenu_option next_comment
-diff -urN linux.old/drivers/char/Config.in.orig linux.dev/drivers/char/Config.in.orig
---- linux.old/drivers/char/Config.in.orig 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/char/Config.in.orig 2005-11-10 01:10:45.863575750 +0100
-@@ -0,0 +1,414 @@
-+#
-+# Character device configuration
-+#
-+mainmenu_option next_comment
-+comment 'Character devices'
-+
-+bool 'Virtual terminal' CONFIG_VT
-+if [ "$CONFIG_VT" = "y" ]; then
-+ bool ' Support for console on virtual terminal' CONFIG_VT_CONSOLE
-+ if [ "$CONFIG_GSC_LASI" = "y" ]; then
-+ bool ' Support for Lasi/Dino PS2 port' CONFIG_GSC_PS2
-+ fi
-+fi
-+tristate 'Standard/generic (8250/16550 and compatible UARTs) serial support' CONFIG_SERIAL
-+if [ "$CONFIG_SERIAL" = "y" ]; then
-+ bool ' Support for console on serial port' CONFIG_SERIAL_CONSOLE
-+ if [ "$CONFIG_GSC_LASI" = "y" ]; then
-+ bool ' serial port on GSC support' CONFIG_SERIAL_GSC
-+ fi
-+ if [ "$CONFIG_IA64" = "y" ]; then
-+ bool ' Support for serial port described by EFI HCDP table' CONFIG_SERIAL_HCDP
-+ fi
-+ if [ "$CONFIG_ARCH_ACORN" = "y" ]; then
-+ tristate ' Atomwide serial port support' CONFIG_ATOMWIDE_SERIAL
-+ tristate ' Dual serial port support' CONFIG_DUALSP_SERIAL
-+ fi
-+fi
-+dep_mbool 'Extended dumb serial driver options' CONFIG_SERIAL_EXTENDED $CONFIG_SERIAL
-+if [ "$CONFIG_SERIAL_EXTENDED" = "y" ]; then
-+ bool ' Support more than 4 serial ports' CONFIG_SERIAL_MANY_PORTS
-+ bool ' Support for sharing serial interrupts' CONFIG_SERIAL_SHARE_IRQ
-+ bool ' Autodetect IRQ on standard ports (unsafe)' CONFIG_SERIAL_DETECT_IRQ
-+ bool ' Support special multiport boards' CONFIG_SERIAL_MULTIPORT
-+ bool ' Support the Bell Technologies HUB6 card' CONFIG_HUB6
-+fi
-+bool 'Non-standard serial port support' CONFIG_SERIAL_NONSTANDARD
-+if [ "$CONFIG_SERIAL_NONSTANDARD" = "y" ]; then
-+ tristate ' Computone IntelliPort Plus serial support' CONFIG_COMPUTONE
-+ tristate ' Comtrol Rocketport support' CONFIG_ROCKETPORT
-+ tristate ' Cyclades async mux support' CONFIG_CYCLADES
-+ if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_CYCLADES" != "n" ]; then
-+ bool ' Cyclades-Z interrupt mode operation (EXPERIMENTAL)' CONFIG_CYZ_INTR
-+ fi
-+ if [ "$CONFIG_X86_64" != "y" ]; then
-+ tristate ' Digiboard Intelligent Async Support' CONFIG_DIGIEPCA
-+ if [ "$CONFIG_DIGIEPCA" = "n" ]; then
-+ tristate ' Digiboard PC/Xx Support' CONFIG_DIGI
-+ fi
-+ fi
-+ dep_tristate ' Hayes ESP serial port support' CONFIG_ESPSERIAL $CONFIG_ISA
-+ tristate ' Moxa Intellio support' CONFIG_MOXA_INTELLIO
-+ tristate ' Moxa SmartIO support' CONFIG_MOXA_SMARTIO
-+ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-+ dep_tristate ' Multi-Tech multiport card support (EXPERIMENTAL)' CONFIG_ISI m
-+ fi
-+ tristate ' Microgate SyncLink card support' CONFIG_SYNCLINK
-+ tristate ' SyncLink Multiport support' CONFIG_SYNCLINKMP
-+ tristate ' HDLC line discipline support' CONFIG_N_HDLC
-+ tristate ' SDL RISCom/8 card support' CONFIG_RISCOM8
-+ if [ "$CONFIG_X86_64" != "y" ]; then
-+ tristate ' Specialix IO8+ card support' CONFIG_SPECIALIX
-+ if [ "$CONFIG_SPECIALIX" != "n" ]; then
-+ bool ' Specialix DTR/RTS pin is RTS' CONFIG_SPECIALIX_RTSCTS
-+ fi
-+ tristate ' Specialix SX (and SI) card support' CONFIG_SX
-+ tristate ' Specialix RIO system support' CONFIG_RIO
-+ if [ "$CONFIG_RIO" != "n" ]; then
-+ bool ' Support really old RIO/PCI cards' CONFIG_RIO_OLDPCI
-+ fi
-+ fi
-+ bool ' Stallion multiport serial support' CONFIG_STALDRV
-+ if [ "$CONFIG_STALDRV" = "y" ]; then
-+ tristate ' Stallion EasyIO or EC8/32 support' CONFIG_STALLION
-+ tristate ' Stallion EC8/64, ONboard, Brumby support' CONFIG_ISTALLION
-+ fi
-+ if [ "$CONFIG_PARISC" = "y" ]; then
-+ if [ "$CONFIG_PDC_CONSOLE" != "y" ]; then
-+ bool ' Serial MUX support' CONFIG_SERIAL_MUX CONFIG_SERIAL_NONSTANDARD
-+ fi
-+ if [ "$CONFIG_SERIAL_MUX" != "y" ]; then
-+ bool ' PDC software console support' CONFIG_PDC_CONSOLE CONFIG_SERIAL_NONSTANDARD
-+ fi
-+ fi
-+ if [ "$CONFIG_MIPS" = "y" ]; then
-+ bool ' TX3912/PR31700 serial port support' CONFIG_SERIAL_TX3912
-+ dep_bool ' Console on TX3912/PR31700 serial port' CONFIG_SERIAL_TX3912_CONSOLE $CONFIG_SERIAL_TX3912
-+ bool ' TMPTX39XX/49XX serial port support' CONFIG_SERIAL_TXX9
-+ dep_bool ' Console on TMPTX39XX/49XX serial port' CONFIG_SERIAL_TXX9_CONSOLE $CONFIG_SERIAL_TXX9
-+ if [ "$CONFIG_SOC_AU1X00" = "y" ]; then
-+ bool ' Enable Au1x00 UART Support' CONFIG_AU1X00_UART
-+ if [ "$CONFIG_AU1X00_UART" = "y" ]; then
-+ bool ' Enable Au1x00 serial console' CONFIG_AU1X00_SERIAL_CONSOLE
-+ fi
-+ dep_tristate ' Au1x00 USB TTY Device support' CONFIG_AU1X00_USB_TTY $CONFIG_SOC_AU1X00
-+ if [ "$CONFIG_AU1000_USB_TTY" != "y" ]; then
-+ dep_tristate ' Au1x00 USB Raw Device support' CONFIG_AU1X00_USB_RAW $CONFIG_SOC_AU1X00
-+ fi
-+ if [ "$CONFIG_AU1X00_USB_TTY" != "n" -o \
-+ "$CONFIG_AU1X00_USB_RAW" != "n" ]; then
-+ define_bool CONFIG_AU1X00_USB_DEVICE y
-+ fi
-+ fi
-+ bool ' TXx927 SIO support' CONFIG_TXX927_SERIAL
-+ if [ "$CONFIG_TXX927_SERIAL" = "y" ]; then
-+ bool ' TXx927 SIO Console support' CONFIG_TXX927_SERIAL_CONSOLE
-+ fi
-+ if [ "$CONFIG_SIBYTE_SB1xxx_SOC" = "y" ]; then
-+ bool ' Support for BCM1xxx onchip DUART' CONFIG_SIBYTE_SB1250_DUART
-+ if [ "$CONFIG_SIBYTE_SB1250_DUART" = "y" ]; then
-+ bool ' Console on BCM1xxx DUART' CONFIG_SIBYTE_SB1250_DUART_CONSOLE
-+ if [ "$CONFIG_SIBYTE_SB1250_DUART_CONSOLE" = "y" ]; then
-+ define_bool CONFIG_SERIAL_CONSOLE y
-+ fi
-+ fi
-+ fi
-+ fi
-+ if [ "$CONFIG_DECSTATION" = "y" ]; then
-+ bool ' DECstation serial support' CONFIG_SERIAL_DEC
-+ dep_bool ' Support for console on a DECstation serial port' CONFIG_SERIAL_DEC_CONSOLE $CONFIG_SERIAL_DEC
-+ dep_bool ' DZ11 serial support' CONFIG_DZ $CONFIG_SERIAL_DEC $CONFIG_MIPS32
-+ dep_bool ' Z85C30 serial support' CONFIG_ZS $CONFIG_SERIAL_DEC $CONFIG_TC
-+ fi
-+ if [ "$CONFIG_SGI_IP22" = "y" ]; then
-+ bool ' SGI Zilog85C30 serial support' CONFIG_IP22_SERIAL
-+ fi
-+ if [ "$CONFIG_IA64" = "y" ]; then
-+ bool ' SGI SN2 l1 serial port support' CONFIG_SGI_L1_SERIAL
-+ if [ "$CONFIG_SGI_L1_SERIAL" = "y" ]; then
-+ bool ' SGI SN2 l1 Console support' CONFIG_SGI_L1_SERIAL_CONSOLE
-+ fi
-+ if [ "$CONFIG_IA64_GENERIC" = "y" -o "$CONFIG_IA64_SGI_SN2" = "y" ]; then
-+ bool ' SGI SN2 IOC4 serial port support' CONFIG_SGI_IOC4_SERIAL
-+ fi
-+ fi
-+fi
-+if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_ZORRO" = "y" ]; then
-+ tristate 'Commodore A2232 serial support (EXPERIMENTAL)' CONFIG_A2232
-+fi
-+if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
-+ bool 'DC21285 serial port support' CONFIG_SERIAL_21285
-+ if [ "$CONFIG_SERIAL_21285" = "y" ]; then
-+ if [ "$CONFIG_OBSOLETE" = "y" ]; then
-+ bool ' Use /dev/ttyS0 device (OBSOLETE)' CONFIG_SERIAL_21285_OLD
-+ fi
-+ bool ' Console on DC21285 serial port' CONFIG_SERIAL_21285_CONSOLE
-+ fi
-+ if [ "$CONFIG_PARISC" = "y" ]; then
-+ bool ' PDC software console support' CONFIG_PDC_CONSOLE
-+ fi
-+fi
-+if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
-+ bool 'Enable Qtronix 990P Keyboard Support' CONFIG_QTRONIX_KEYBOARD
-+ if [ "$CONFIG_QTRONIX_KEYBOARD" = "y" ]; then
-+ define_bool CONFIG_IT8172_CIR y
-+ else
-+ bool ' Enable PS2 Keyboard Support' CONFIG_PC_KEYB
-+ fi
-+ bool 'Enable Smart Card Reader 0 Support ' CONFIG_IT8172_SCR0
-+ bool 'Enable Smart Card Reader 1 Support ' CONFIG_IT8172_SCR1
-+fi
-+if [ "$CONFIG_MIPS_IVR" = "y" ]; then
-+ bool 'Enable Qtronix 990P Keyboard Support' CONFIG_QTRONIX_KEYBOARD
-+ if [ "$CONFIG_QTRONIX_KEYBOARD" = "y" ]; then
-+ define_bool CONFIG_IT8172_CIR y
-+ fi
-+ bool 'Enable Smart Card Reader 0 Support ' CONFIG_IT8172_SCR0
-+fi
-+if [ "$CONFIG_CPU_VR41XX" = "y" ]; then
-+ bool 'NEC VR4100 series Keyboard Interface Unit Support ' CONFIG_VR41XX_KIU
-+fi
-+bool 'Unix98 PTY support' CONFIG_UNIX98_PTYS
-+if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then
-+ int 'Maximum number of Unix98 PTYs in use (0-2048)' CONFIG_UNIX98_PTY_COUNT 256
-+fi
-+if [ "$CONFIG_PARPORT" != "n" ]; then
-+ dep_tristate 'Parallel printer support' CONFIG_PRINTER $CONFIG_PARPORT
-+ if [ "$CONFIG_PRINTER" != "n" ]; then
-+ bool ' Support for console on line printer' CONFIG_LP_CONSOLE
-+ fi
-+ dep_tristate 'Support for user-space parallel port device drivers' CONFIG_PPDEV $CONFIG_PARPORT
-+ dep_tristate 'Texas Instruments parallel link cable support' CONFIG_TIPAR $CONFIG_PARPORT
-+fi
-+
-+if [ "$CONFIG_PPC64" = "y" ] ; then
-+ bool 'pSeries Hypervisor Virtual Console support' CONFIG_HVC_CONSOLE
-+fi
-+if [ "$CONFIG_ALL_PPC" = "y" ]; then
-+ tristate 'Total Impact briQ front panel driver' CONFIG_BRIQ_PANEL
-+fi
-+
-+if [ "$CONFIG_AR7" = "y" ]; then
-+ bool 'VLYNQ support for the TI SOC' CONFIG_AR7_VLYNQ
-+ dep_bool 'VLYNQ clock source Internal' CONFIG_VLYNQ_CLK_LOCAL $CONFIG_AR7_VLYNQ
-+
-+ define_int CONFIG_AR7_VLYNQ_PORTS 2
-+fi
-+
-+source drivers/i2c/Config.in
-+
-+mainmenu_option next_comment
-+comment 'Mice'
-+tristate 'Bus Mouse Support' CONFIG_BUSMOUSE
-+if [ "$CONFIG_BUSMOUSE" != "n" ]; then
-+ dep_tristate ' ATIXL busmouse support' CONFIG_ATIXL_BUSMOUSE $CONFIG_BUSMOUSE
-+ dep_tristate ' Logitech busmouse support' CONFIG_LOGIBUSMOUSE $CONFIG_BUSMOUSE
-+ dep_tristate ' Microsoft busmouse support' CONFIG_MS_BUSMOUSE $CONFIG_BUSMOUSE
-+ if [ "$CONFIG_ADB" = "y" -a "$CONFIG_ADB_KEYBOARD" = "y" ]; then
-+ dep_tristate ' Apple Desktop Bus mouse support (old driver)' CONFIG_ADBMOUSE $CONFIG_BUSMOUSE
-+ fi
-+# if [ "$CONFIG_DECSTATION" = "y" ]; then
-+# dep_bool ' MAXINE Access.Bus mouse (VSXXX-BB/GB) support' CONFIG_DTOP_MOUSE $CONFIG_ACCESSBUS
-+# fi
-+fi
-+
-+tristate 'Mouse Support (not serial and bus mice)' CONFIG_MOUSE
-+if [ "$CONFIG_MOUSE" != "n" ]; then
-+ bool ' PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
-+ tristate ' C&T 82C710 mouse port support (as on TI Travelmate)' CONFIG_82C710_MOUSE
-+ tristate ' PC110 digitizer pad support' CONFIG_PC110_PAD
-+ tristate ' MK712 touch screen support' CONFIG_MK712_MOUSE
-+fi
-+endmenu
-+
-+source drivers/char/joystick/Config.in
-+
-+tristate 'QIC-02 tape support' CONFIG_QIC02_TAPE
-+if [ "$CONFIG_QIC02_TAPE" != "n" ]; then
-+ bool ' Do you want runtime configuration for QIC-02' CONFIG_QIC02_DYNCONF
-+ if [ "$CONFIG_QIC02_DYNCONF" != "y" ]; then
-+ comment ' Edit configuration parameters in ./include/linux/tpqic02.h!'
-+ else
-+ comment ' Setting runtime QIC-02 configuration is done with qic02conf'
-+ comment ' from the tpqic02-support package. It is available at'
-+ comment ' metalab.unc.edu or ftp://titus.cfw.com/pub/Linux/util/'
-+ fi
-+fi
-+
-+tristate 'IPMI top-level message handler' CONFIG_IPMI_HANDLER
-+dep_mbool ' Generate a panic event to all BMCs on a panic' CONFIG_IPMI_PANIC_EVENT $CONFIG_IPMI_HANDLER
-+dep_tristate ' Device interface for IPMI' CONFIG_IPMI_DEVICE_INTERFACE $CONFIG_IPMI_HANDLER
-+dep_tristate ' IPMI KCS handler' CONFIG_IPMI_KCS $CONFIG_IPMI_HANDLER
-+dep_tristate ' IPMI Watchdog Timer' CONFIG_IPMI_WATCHDOG $CONFIG_IPMI_HANDLER
-+
-+mainmenu_option next_comment
-+comment 'Watchdog Cards'
-+bool 'Watchdog Timer Support' CONFIG_WATCHDOG
-+if [ "$CONFIG_WATCHDOG" != "n" ]; then
-+ bool ' Disable watchdog shutdown on close' CONFIG_WATCHDOG_NOWAYOUT
-+ tristate ' Acquire SBC Watchdog Timer' CONFIG_ACQUIRE_WDT
-+ tristate ' Advantech SBC Watchdog Timer' CONFIG_ADVANTECH_WDT
-+ tristate ' ALi M7101 PMU on ALi 1535D+ Watchdog Timer' CONFIG_ALIM1535_WDT
-+ tristate ' ALi M7101 PMU Watchdog Timer' CONFIG_ALIM7101_WDT
-+ tristate ' AMD "Elan" SC520 Watchdog Timer' CONFIG_SC520_WDT
-+ tristate ' Berkshire Products PC Watchdog' CONFIG_PCWATCHDOG
-+ if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
-+ tristate ' DC21285 watchdog' CONFIG_21285_WATCHDOG
-+ if [ "$CONFIG_ARCH_NETWINDER" = "y" ]; then
-+ tristate ' NetWinder WB83C977 watchdog' CONFIG_977_WATCHDOG
-+ fi
-+ fi
-+ tristate ' Eurotech CPU-1220/1410 Watchdog Timer' CONFIG_EUROTECH_WDT
-+ tristate ' IB700 SBC Watchdog Timer' CONFIG_IB700_WDT
-+ tristate ' ICP ELectronics Wafer 5823 Watchdog' CONFIG_WAFER_WDT
-+ tristate ' Intel i810 TCO timer / Watchdog' CONFIG_I810_TCO
-+ tristate ' Mixcom Watchdog' CONFIG_MIXCOMWD
-+ tristate ' SBC-60XX Watchdog Timer' CONFIG_60XX_WDT
-+ dep_tristate ' SC1200 Watchdog Timer (EXPERIMENTAL)' CONFIG_SC1200_WDT $CONFIG_EXPERIMENTAL
-+ tristate ' NatSemi SCx200 Watchdog' CONFIG_SCx200_WDT
-+ tristate ' Software Watchdog' CONFIG_SOFT_WATCHDOG
-+ tristate ' W83877F (EMACS) Watchdog Timer' CONFIG_W83877F_WDT
-+ tristate ' WDT Watchdog timer' CONFIG_WDT
-+ tristate ' WDT PCI Watchdog timer' CONFIG_WDTPCI
-+ if [ "$CONFIG_WDT" != "n" ]; then
-+ bool ' WDT501 features' CONFIG_WDT_501
-+ if [ "$CONFIG_WDT_501" = "y" ]; then
-+ bool ' Fan Tachometer' CONFIG_WDT_501_FAN
-+ fi
-+ fi
-+ tristate ' ZF MachZ Watchdog' CONFIG_MACHZ_WDT
-+ if [ "$CONFIG_SGI_IP22" = "y" ]; then
-+ dep_tristate ' Indy/I2 Hardware Watchdog' CONFIG_INDYDOG $CONFIG_SGI_IP22
-+ fi
-+ if [ "$CONFIG_8xx" = "y" ]; then
-+ tristate ' MPC8xx Watchdog Timer' CONFIG_8xx_WDT
-+ fi
-+fi
-+endmenu
-+
-+if [ "$CONFIG_ARCH_NETWINDER" = "y" ]; then
-+ tristate 'NetWinder thermometer support' CONFIG_DS1620
-+ tristate 'NetWinder Button' CONFIG_NWBUTTON
-+ if [ "$CONFIG_NWBUTTON" != "n" ]; then
-+ bool ' Reboot Using Button' CONFIG_NWBUTTON_REBOOT
-+ fi
-+ tristate 'NetWinder flash support' CONFIG_NWFLASH
-+fi
-+tristate 'NatSemi SCx200 Support' CONFIG_SCx200
-+dep_tristate ' NatSemi SCx200 GPIO Support' CONFIG_SCx200_GPIO $CONFIG_SCx200
-+
-+if [ "$CONFIG_IA64_GENERIC" = "y" -o "$CONFIG_IA64_SGI_SN2" = "y" ] ; then
-+ bool 'SGI SN2 fetchop support' CONFIG_FETCHOP
-+fi
-+
-+if [ "$CONFIG_X86" = "y" -o "$CONFIG_X86_64" = "y" ]; then
-+ dep_tristate 'AMD 768/8111 Random Number Generator support' CONFIG_AMD_RNG $CONFIG_PCI
-+fi
-+if [ "$CONFIG_X86" = "y" -o "$CONFIG_IA64" = "y" ]; then
-+ dep_tristate 'Intel i8x0 Random Number Generator support' CONFIG_INTEL_RNG $CONFIG_PCI
-+fi
-+if [ "$CONFIG_X86" = "y" -o "$CONFIG_IA64" = "y" -o \
-+ "$CONFIG_X86_64" = "y" ]; then
-+ dep_tristate 'Intel/AMD/VIA HW Random Number Generator support' CONFIG_HW_RANDOM $CONFIG_PCI
-+fi
-+dep_tristate 'AMD 76x native power management (Experimental)' CONFIG_AMD_PM768 $CONFIG_PCI
-+tristate '/dev/nvram support' CONFIG_NVRAM
-+tristate 'Enhanced Real Time Clock Support' CONFIG_RTC
-+if [ "$CONFIG_IA64" = "y" ]; then
-+ bool 'EFI Real Time Clock Services' CONFIG_EFI_RTC
-+fi
-+if [ "$CONFIG_OBSOLETE" = "y" -a "$CONFIG_ALPHA_BOOK1" = "y" ]; then
-+ bool 'Tadpole ANA H8 Support (OBSOLETE)' CONFIG_H8
-+fi
-+if [ "$CONFIG_SGI_IP22" = "y" ]; then
-+ tristate 'Dallas DS1286 RTC support' CONFIG_DS1286
-+fi
-+if [ "$CONFIG_SGI_IP27" = "y" ]; then
-+ tristate 'SGI M48T35 RTC support' CONFIG_SGI_IP27_RTC
-+fi
-+if [ "$CONFIG_TOSHIBA_RBTX4927" = "y" -o "$CONFIG_TOSHIBA_JMR3927" = "y" ]; then
-+ tristate 'Dallas DS1742 RTC support' CONFIG_DS1742
-+fi
-+
-+tristate 'Double Talk PC internal speech card support' CONFIG_DTLK
-+tristate 'Siemens R3964 line discipline' CONFIG_R3964
-+tristate 'Applicom intelligent fieldbus card support' CONFIG_APPLICOM
-+if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_X86" = "y" -a "$CONFIG_X86_64" != "y" ]; then
-+ dep_tristate 'Sony Vaio Programmable I/O Control Device support (EXPERIMENTAL)' CONFIG_SONYPI $CONFIG_PCI
-+fi
-+
-+mainmenu_option next_comment
-+comment 'Ftape, the floppy tape device driver'
-+tristate 'Ftape (QIC-80/Travan) support' CONFIG_FTAPE
-+if [ "$CONFIG_FTAPE" != "n" ]; then
-+ source drivers/char/ftape/Config.in
-+fi
-+
-+endmenu
-+
-+if [ "$CONFIG_GART_IOMMU" = "y" ]; then
-+ bool '/dev/agpgart (AGP Support)' CONFIG_AGP
-+ define_bool CONFIG_AGP_AMD_K8 y
-+else
-+ tristate '/dev/agpgart (AGP Support)' CONFIG_AGP
-+fi
-+if [ "$CONFIG_AGP" != "n" ]; then
-+ bool ' Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support' CONFIG_AGP_INTEL
-+ bool ' Intel I810/I815/I830M (on-board) support' CONFIG_AGP_I810
-+ bool ' VIA chipset support' CONFIG_AGP_VIA
-+ bool ' AMD Irongate, 761, and 762 support' CONFIG_AGP_AMD
-+ if [ "$CONFIG_GART_IOMMU" != "y" ]; then
-+ bool ' AMD Opteron/Athlon64 on-CPU GART support' CONFIG_AGP_AMD_K8
-+ fi
-+ bool ' Generic SiS support' CONFIG_AGP_SIS
-+ bool ' ALI chipset support' CONFIG_AGP_ALI
-+ bool ' Serverworks LE/HE support' CONFIG_AGP_SWORKS
-+ if [ "$CONFIG_X86" = "y" ]; then
-+ bool ' NVIDIA chipset support' CONFIG_AGP_NVIDIA
-+ fi
-+ if [ "$CONFIG_IA64" = "y" ]; then
-+ bool ' Intel 460GX support' CONFIG_AGP_I460
-+ bool ' HP ZX1 AGP support' CONFIG_AGP_HP_ZX1
-+ fi
-+ bool ' ATI IGP chipset support' CONFIG_AGP_ATI
-+fi
-+
-+mainmenu_option next_comment
-+comment 'Direct Rendering Manager (XFree86 DRI support)'
-+bool 'Direct Rendering Manager (XFree86 DRI support)' CONFIG_DRM
-+if [ "$CONFIG_DRM" = "y" ]; then
-+ bool ' Build drivers for old (XFree 4.0) DRM' CONFIG_DRM_OLD
-+ if [ "$CONFIG_DRM_OLD" = "y" ]; then
-+ comment 'DRM 4.0 drivers'
-+ source drivers/char/drm-4.0/Config.in
-+ else
-+ comment 'DRM 4.1 drivers'
-+ define_bool CONFIG_DRM_NEW y
-+ source drivers/char/drm/Config.in
-+ fi
-+fi
-+
-+if [ "$CONFIG_X86" = "y" ]; then
-+ tristate 'ACP Modem (Mwave) support' CONFIG_MWAVE
-+fi
-+
-+endmenu
-+
-+if [ "$CONFIG_HOTPLUG" = "y" -a "$CONFIG_PCMCIA" != "n" ]; then
-+ source drivers/char/pcmcia/Config.in
-+fi
-+if [ "$CONFIG_SOC_AU1X00" = "y" ]; then
-+ tristate ' Alchemy Au1x00 GPIO device support' CONFIG_AU1X00_GPIO
-+ tristate ' Au1000/ADS7846 touchscreen support' CONFIG_TS_AU1X00_ADS7846
-+ #tristate ' Alchemy Au1550 PSC SPI support' CONFIG_AU1550_PSC_SPI
-+fi
-+if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
-+ tristate ' ITE GPIO' CONFIG_ITE_GPIO
-+fi
-+
-+if [ "$CONFIG_X86" = "y" ]; then
-+ tristate 'ACP Modem (Mwave) support' CONFIG_MWAVE
-+ dep_tristate 'HP OB600 C/CT Pop-up mouse support' CONFIG_OBMOUSE $CONFIG_INPUT_MOUSEDEV
-+fi
-+
-+endmenu
-diff -urN linux.old/drivers/char/Makefile linux.dev/drivers/char/Makefile
---- linux.old/drivers/char/Makefile 2005-10-21 16:43:16.460960500 +0200
-+++ linux.dev/drivers/char/Makefile 2005-11-10 01:10:45.871576250 +0100
-@@ -240,6 +240,13 @@
- obj-y += joystick/js.o
- endif
-
-+#
-+# Texas Intruments VLYNQ driver
-+#
-+
-+subdir-$(CONFIG_AR7_VLYNQ) += avalanche_vlynq
-+obj-$(CONFIG_AR7_VLYNQ) += avalanche_vlynq/avalanche_vlynq.o
-+
- obj-$(CONFIG_FETCHOP) += fetchop.o
- obj-$(CONFIG_BUSMOUSE) += busmouse.o
- obj-$(CONFIG_DTLK) += dtlk.o
-@@ -340,6 +347,11 @@
- obj-y += ipmi/ipmi.o
- endif
-
-+subdir-$(CONFIG_AR7_ADAM2) += ticfg
-+ifeq ($(CONFIG_AR7_ADAM2),y)
-+ obj-y += ticfg/ticfg.o
-+endif
-+
- include $(TOPDIR)/Rules.make
-
- fastdep:
-diff -urN linux.old/drivers/char/Makefile.orig linux.dev/drivers/char/Makefile.orig
---- linux.old/drivers/char/Makefile.orig 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/char/Makefile.orig 2005-11-10 01:10:45.871576250 +0100
-@@ -0,0 +1,374 @@
-+#
-+# Makefile for the kernel character device drivers.
-+#
-+# Note! Dependencies are done automagically by 'make dep', which also
-+# removes any old dependencies. DON'T put your own dependencies here
-+# unless it's something special (ie not a .c file).
-+#
-+# Note 2! The CFLAGS definitions are now inherited from the
-+# parent makes..
-+#
-+
-+#
-+# This file contains the font map for the default (hardware) font
-+#
-+FONTMAPFILE = cp437.uni
-+
-+O_TARGET := char.o
-+
-+obj-y += mem.o tty_io.o n_tty.o tty_ioctl.o raw.o pty.o misc.o random.o
-+
-+# All of the (potential) objects that export symbols.
-+# This list comes from 'grep -l EXPORT_SYMBOL *.[hc]'.
-+
-+export-objs := busmouse.o console.o keyboard.o sysrq.o \
-+ misc.o pty.o random.o selection.o serial.o \
-+ sonypi.o tty_io.o tty_ioctl.o generic_serial.o \
-+ au1000_gpio.o vac-serial.o hp_psaux.o nvram.o \
-+ scx200.o fetchop.o
-+
-+mod-subdirs := joystick ftape drm drm-4.0 pcmcia
-+
-+list-multi :=
-+
-+KEYMAP =defkeymap.o
-+KEYBD =pc_keyb.o
-+CONSOLE =console.o
-+SERIAL =serial.o
-+
-+ifeq ($(ARCH),s390)
-+ KEYMAP =
-+ KEYBD =
-+ CONSOLE =
-+ SERIAL =
-+endif
-+
-+ifeq ($(ARCH),mips)
-+ ifneq ($(CONFIG_PC_KEYB),y)
-+ KEYBD =
-+ endif
-+ ifeq ($(CONFIG_VR41XX_KIU),y)
-+ ifeq ($(CONFIG_IBM_WORKPAD),y)
-+ KEYMAP = ibm_workpad_keymap.o
-+ endif
-+ ifeq ($(CONFIG_VICTOR_MPC30X),y)
-+ KEYMAP = victor_mpc30x_keymap.o
-+ endif
-+ KEYBD = vr41xx_keyb.o
-+ endif
-+endif
-+
-+ifeq ($(ARCH),s390x)
-+ KEYMAP =
-+ KEYBD =
-+ CONSOLE =
-+ SERIAL =
-+endif
-+
-+ifeq ($(ARCH),m68k)
-+ ifdef CONFIG_AMIGA
-+ KEYBD = amikeyb.o
-+ else
-+ ifndef CONFIG_MAC
-+ KEYBD =
-+ endif
-+ endif
-+ SERIAL =
-+endif
-+
-+ifeq ($(ARCH),parisc)
-+ ifdef CONFIG_GSC_PS2
-+ KEYBD = hp_psaux.o hp_keyb.o
-+ else
-+ KEYBD =
-+ endif
-+ ifdef CONFIG_SERIAL_MUX
-+ CONSOLE += mux.o
-+ endif
-+ ifdef CONFIG_PDC_CONSOLE
-+ CONSOLE += pdc_console.o
-+ endif
-+endif
-+
-+ifdef CONFIG_Q40
-+ KEYBD += q40_keyb.o
-+ SERIAL = serial.o
-+endif
-+
-+ifdef CONFIG_APOLLO
-+ KEYBD += dn_keyb.o
-+endif
-+
-+ifeq ($(ARCH),parisc)
-+ ifdef CONFIG_GSC_PS2
-+ KEYBD = hp_psaux.o hp_keyb.o
-+ else
-+ KEYBD =
-+ endif
-+ ifdef CONFIG_PDC_CONSOLE
-+ CONSOLE += pdc_console.o
-+ endif
-+endif
-+
-+ifeq ($(ARCH),arm)
-+ ifneq ($(CONFIG_PC_KEYMAP),y)
-+ KEYMAP =
-+ endif
-+ ifneq ($(CONFIG_PC_KEYB),y)
-+ KEYBD =
-+ endif
-+endif
-+
-+ifeq ($(ARCH),sh)
-+ KEYMAP =
-+ KEYBD =
-+ CONSOLE =
-+ ifeq ($(CONFIG_SH_HP600),y)
-+ KEYMAP = defkeymap.o
-+ KEYBD = scan_keyb.o hp600_keyb.o
-+ CONSOLE = console.o
-+ endif
-+ ifeq ($(CONFIG_SH_DMIDA),y)
-+ # DMIDA does not connect the HD64465 PS/2 keyboard port
-+ # but we allow for USB keyboards to be plugged in.
-+ KEYMAP = defkeymap.o
-+ KEYBD = # hd64465_keyb.o pc_keyb.o
-+ CONSOLE = console.o
-+ endif
-+ ifeq ($(CONFIG_SH_EC3104),y)
-+ KEYMAP = defkeymap.o
-+ KEYBD = ec3104_keyb.o
-+ CONSOLE = console.o
-+ endif
-+ ifeq ($(CONFIG_SH_DREAMCAST),y)
-+ KEYMAP = defkeymap.o
-+ KEYBD =
-+ CONSOLE = console.o
-+ endif
-+endif
-+
-+ifeq ($(CONFIG_DECSTATION),y)
-+ KEYMAP =
-+ KEYBD =
-+endif
-+
-+ifeq ($(CONFIG_BAGET_MIPS),y)
-+ KEYBD =
-+ SERIAL = vac-serial.o
-+endif
-+
-+ifeq ($(CONFIG_NINO),y)
-+ SERIAL =
-+endif
-+
-+ifneq ($(CONFIG_SUN_SERIAL),)
-+ SERIAL =
-+endif
-+
-+ifeq ($(CONFIG_QTRONIX_KEYBOARD),y)
-+ KEYBD = qtronix.o
-+ KEYMAP = qtronixmap.o
-+endif
-+
-+ifeq ($(CONFIG_DUMMY_KEYB),y)
-+ KEYBD = dummy_keyb.o
-+endif
-+
-+obj-$(CONFIG_VT) += vt.o vc_screen.o consolemap.o consolemap_deftbl.o $(CONSOLE) selection.o
-+obj-$(CONFIG_SERIAL) += $(SERIAL)
-+obj-$(CONFIG_PARPORT_SERIAL) += parport_serial.o
-+obj-$(CONFIG_SERIAL_HCDP) += hcdp_serial.o
-+obj-$(CONFIG_SERIAL_21285) += serial_21285.o
-+obj-$(CONFIG_SERIAL_SA1100) += serial_sa1100.o
-+obj-$(CONFIG_SERIAL_AMBA) += serial_amba.o
-+obj-$(CONFIG_TS_AU1X00_ADS7846) += au1000_ts.o
-+obj-$(CONFIG_SERIAL_DEC) += decserial.o
-+
-+ifndef CONFIG_SUN_KEYBOARD
-+ obj-$(CONFIG_VT) += keyboard.o $(KEYMAP) $(KEYBD)
-+else
-+ obj-$(CONFIG_PCI) += keyboard.o $(KEYMAP)
-+endif
-+
-+obj-$(CONFIG_HIL) += hp_keyb.o
-+obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o
-+obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o
-+obj-$(CONFIG_ROCKETPORT) += rocket.o
-+obj-$(CONFIG_MOXA_SMARTIO) += mxser.o
-+obj-$(CONFIG_MOXA_INTELLIO) += moxa.o
-+obj-$(CONFIG_DIGI) += pcxx.o
-+obj-$(CONFIG_DIGIEPCA) += epca.o
-+obj-$(CONFIG_CYCLADES) += cyclades.o
-+obj-$(CONFIG_STALLION) += stallion.o
-+obj-$(CONFIG_ISTALLION) += istallion.o
-+obj-$(CONFIG_SIBYTE_SB1250_DUART) += sb1250_duart.o
-+obj-$(CONFIG_COMPUTONE) += ip2.o ip2main.o
-+obj-$(CONFIG_RISCOM8) += riscom8.o
-+obj-$(CONFIG_ISI) += isicom.o
-+obj-$(CONFIG_ESPSERIAL) += esp.o
-+obj-$(CONFIG_SYNCLINK) += synclink.o
-+obj-$(CONFIG_SYNCLINKMP) += synclinkmp.o
-+obj-$(CONFIG_N_HDLC) += n_hdlc.o
-+obj-$(CONFIG_SPECIALIX) += specialix.o
-+obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
-+obj-$(CONFIG_A2232) += ser_a2232.o generic_serial.o
-+obj-$(CONFIG_SX) += sx.o generic_serial.o
-+obj-$(CONFIG_RIO) += rio/rio.o generic_serial.o
-+obj-$(CONFIG_SH_SCI) += sh-sci.o generic_serial.o
-+obj-$(CONFIG_SERIAL167) += serial167.o
-+obj-$(CONFIG_MVME147_SCC) += generic_serial.o vme_scc.o
-+obj-$(CONFIG_MVME162_SCC) += generic_serial.o vme_scc.o
-+obj-$(CONFIG_BVME6000_SCC) += generic_serial.o vme_scc.o
-+obj-$(CONFIG_HVC_CONSOLE) += hvc_console.o
-+obj-$(CONFIG_SERIAL_TX3912) += generic_serial.o serial_tx3912.o
-+obj-$(CONFIG_TXX927_SERIAL) += serial_txx927.o
-+obj-$(CONFIG_SERIAL_TXX9) += generic_serial.o serial_txx9.o
-+obj-$(CONFIG_IP22_SERIAL) += sgiserial.o
-+obj-$(CONFIG_AU1X00_UART) += au1x00-serial.o
-+obj-$(CONFIG_SGI_L1_SERIAL) += sn_serial.o
-+
-+subdir-$(CONFIG_RIO) += rio
-+subdir-$(CONFIG_INPUT) += joystick
-+
-+obj-$(CONFIG_ATIXL_BUSMOUSE) += atixlmouse.o
-+obj-$(CONFIG_LOGIBUSMOUSE) += logibusmouse.o
-+obj-$(CONFIG_PRINTER) += lp.o
-+obj-$(CONFIG_TIPAR) += tipar.o
-+obj-$(CONFIG_OBMOUSE) += obmouse.o
-+
-+ifeq ($(CONFIG_INPUT),y)
-+obj-y += joystick/js.o
-+endif
-+
-+#
-+# Texas Intruments VLYNQ driver
-+#
-+
-+subdir-$(CONFIG_AR7_VLYNQ) += avalanche_vlynq
-+obj-$(CONFIG_AR7_VLYNQ) += avalanche_vlynq/avalanche_vlynq.o
-+
-+obj-$(CONFIG_FETCHOP) += fetchop.o
-+obj-$(CONFIG_BUSMOUSE) += busmouse.o
-+obj-$(CONFIG_DTLK) += dtlk.o
-+obj-$(CONFIG_R3964) += n_r3964.o
-+obj-$(CONFIG_APPLICOM) += applicom.o
-+obj-$(CONFIG_SONYPI) += sonypi.o
-+obj-$(CONFIG_MS_BUSMOUSE) += msbusmouse.o
-+obj-$(CONFIG_82C710_MOUSE) += qpmouse.o
-+obj-$(CONFIG_AMIGAMOUSE) += amigamouse.o
-+obj-$(CONFIG_ATARIMOUSE) += atarimouse.o
-+obj-$(CONFIG_ADBMOUSE) += adbmouse.o
-+obj-$(CONFIG_PC110_PAD) += pc110pad.o
-+obj-$(CONFIG_MK712_MOUSE) += mk712.o
-+obj-$(CONFIG_RTC) += rtc.o
-+obj-$(CONFIG_GEN_RTC) += genrtc.o
-+obj-$(CONFIG_EFI_RTC) += efirtc.o
-+obj-$(CONFIG_MIPS_RTC) += mips_rtc.o
-+obj-$(CONFIG_SGI_IP27_RTC) += ip27-rtc.o
-+ifeq ($(CONFIG_PPC),)
-+ obj-$(CONFIG_NVRAM) += nvram.o
-+endif
-+obj-$(CONFIG_TOSHIBA) += toshiba.o
-+obj-$(CONFIG_I8K) += i8k.o
-+obj-$(CONFIG_DS1286) += ds1286.o
-+obj-$(CONFIG_DS1620) += ds1620.o
-+obj-$(CONFIG_DS1742) += ds1742.o
-+obj-$(CONFIG_INTEL_RNG) += i810_rng.o
-+obj-$(CONFIG_AMD_RNG) += amd768_rng.o
-+obj-$(CONFIG_HW_RANDOM) += hw_random.o
-+obj-$(CONFIG_AMD_PM768) += amd76x_pm.o
-+obj-$(CONFIG_BRIQ_PANEL) += briq_panel.o
-+
-+obj-$(CONFIG_ITE_GPIO) += ite_gpio.o
-+obj-$(CONFIG_AU1X00_GPIO) += au1000_gpio.o
-+obj-$(CONFIG_AU1550_PSC_SPI) += au1550_psc_spi.o
-+obj-$(CONFIG_AU1X00_USB_TTY) += au1000_usbtty.o
-+obj-$(CONFIG_AU1X00_USB_RAW) += au1000_usbraw.o
-+obj-$(CONFIG_COBALT_LCD) += lcd.o
-+
-+obj-$(CONFIG_QIC02_TAPE) += tpqic02.o
-+
-+subdir-$(CONFIG_FTAPE) += ftape
-+subdir-$(CONFIG_DRM_OLD) += drm-4.0
-+subdir-$(CONFIG_DRM_NEW) += drm
-+subdir-$(CONFIG_PCMCIA) += pcmcia
-+subdir-$(CONFIG_AGP) += agp
-+
-+ifeq ($(CONFIG_FTAPE),y)
-+obj-y += ftape/ftape.o
-+endif
-+
-+obj-$(CONFIG_H8) += h8.o
-+obj-$(CONFIG_PPDEV) += ppdev.o
-+obj-$(CONFIG_DZ) += dz.o
-+obj-$(CONFIG_NWBUTTON) += nwbutton.o
-+obj-$(CONFIG_NWFLASH) += nwflash.o
-+obj-$(CONFIG_SCx200) += scx200.o
-+obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o
-+
-+# Only one watchdog can succeed. We probe the hardware watchdog
-+# drivers first, then the softdog driver. This means if your hardware
-+# watchdog dies or is 'borrowed' for some reason the software watchdog
-+# still gives you some cover.
-+
-+obj-$(CONFIG_PCWATCHDOG) += pcwd.o
-+obj-$(CONFIG_ACQUIRE_WDT) += acquirewdt.o
-+obj-$(CONFIG_ADVANTECH_WDT) += advantechwdt.o
-+obj-$(CONFIG_IB700_WDT) += ib700wdt.o
-+obj-$(CONFIG_MIXCOMWD) += mixcomwd.o
-+obj-$(CONFIG_60XX_WDT) += sbc60xxwdt.o
-+obj-$(CONFIG_W83877F_WDT) += w83877f_wdt.o
-+obj-$(CONFIG_SC520_WDT) += sc520_wdt.o
-+obj-$(CONFIG_WDT) += wdt.o
-+obj-$(CONFIG_WDTPCI) += wdt_pci.o
-+obj-$(CONFIG_21285_WATCHDOG) += wdt285.o
-+obj-$(CONFIG_977_WATCHDOG) += wdt977.o
-+obj-$(CONFIG_I810_TCO) += i810-tco.o
-+obj-$(CONFIG_MACHZ_WDT) += machzwd.o
-+obj-$(CONFIG_SH_WDT) += shwdt.o
-+obj-$(CONFIG_EUROTECH_WDT) += eurotechwdt.o
-+obj-$(CONFIG_ALIM7101_WDT) += alim7101_wdt.o
-+obj-$(CONFIG_ALIM1535_WDT) += alim1535d_wdt.o
-+obj-$(CONFIG_INDYDOG) += indydog.o
-+obj-$(CONFIG_SC1200_WDT) += sc1200wdt.o
-+obj-$(CONFIG_SCx200_WDT) += scx200_wdt.o
-+obj-$(CONFIG_WAFER_WDT) += wafer5823wdt.o
-+obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o
-+obj-$(CONFIG_INDYDOG) += indydog.o
-+obj-$(CONFIG_8xx_WDT) += mpc8xx_wdt.o
-+
-+subdir-$(CONFIG_MWAVE) += mwave
-+ifeq ($(CONFIG_MWAVE),y)
-+ obj-y += mwave/mwave.o
-+endif
-+
-+subdir-$(CONFIG_IPMI_HANDLER) += ipmi
-+ifeq ($(CONFIG_IPMI_HANDLER),y)
-+ obj-y += ipmi/ipmi.o
-+endif
-+
-+include $(TOPDIR)/Rules.make
-+
-+fastdep:
-+
-+conmakehash: conmakehash.c
-+ $(HOSTCC) $(HOSTCFLAGS) -o conmakehash conmakehash.c
-+
-+consolemap_deftbl.c: $(FONTMAPFILE) conmakehash
-+ ./conmakehash $(FONTMAPFILE) > consolemap_deftbl.c
-+
-+consolemap_deftbl.o: consolemap_deftbl.c $(TOPDIR)/include/linux/types.h
-+
-+.DELETE_ON_ERROR:
-+
-+defkeymap.c: defkeymap.map
-+ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
-+
-+qtronixmap.c: qtronixmap.map
-+ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
-+
-+ibm_workpad_keymap.c: ibm_workpad_keymap.map
-+ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
-+
-+victor_mpc30x_keymap.c: victor_mpc30x_keymap.map
-+ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
-diff -urN linux.old/drivers/char/avalanche_vlynq/Makefile linux.dev/drivers/char/avalanche_vlynq/Makefile
---- linux.old/drivers/char/avalanche_vlynq/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/char/avalanche_vlynq/Makefile 2005-11-10 01:10:45.871576250 +0100
-@@ -0,0 +1,16 @@
-+#
-+# Makefile for the linux kernel.
-+#
-+# Note! Dependencies are done automagically by 'make dep', which also
-+# removes any old dependencies. DON'T put your own dependencies here
-+# unless it's something special (ie not a .c file).
-+#
-+# Note 2! The CFLAGS definitions are now in the main makefile...
-+
-+O_TARGET := avalanche_vlynq.o
-+
-+export-objs := vlynq_board.o
-+
-+obj-y += vlynq_drv.o vlynq_hal.o vlynq_board.o
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux.old/drivers/char/avalanche_vlynq/vlynq_board.c linux.dev/drivers/char/avalanche_vlynq/vlynq_board.c
---- linux.old/drivers/char/avalanche_vlynq/vlynq_board.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/char/avalanche_vlynq/vlynq_board.c 2005-11-10 01:10:45.871576250 +0100
-@@ -0,0 +1,184 @@
-+/*
-+ * Jeff Harrell, jharrell@ti.com
-+ * Copyright (C) 2001 Texas Instruments, Inc. All rights reserved.
-+ *
-+ * This program is free software; you can distribute it and/or modify it
-+ * under the terms of the GNU General Public License (Version 2) as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope 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.
-+ *
-+ * Texas Instruments Sangam specific setup.
-+ */
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <asm/ar7/sangam.h>
-+#include <asm/ar7/avalanche_misc.h>
-+#include <asm/ar7/vlynq.h>
-+
-+#define SYS_VLYNQ_LOCAL_INTERRUPT_VECTOR 30 /* MSB - 1 bit */
-+#define SYS_VLYNQ_REMOTE_INTERRUPT_VECTOR 31 /* MSB bit */
-+#define SYS_VLYNQ_OPTIONS 0x7F; /* all options*/
-+
-+/* These defines are board specific */
-+
-+
-+#define VLYNQ0_REMOTE_WINDOW1_OFFSET (0x0C000000)
-+#define VLYNQ0_REMOTE_WINDOW1_SIZE (0x500)
-+
-+
-+#define VLYNQ1_REMOTE_WINDOW1_OFFSET (0x0C000000)
-+#define VLYNQ1_REMOTE_WINDOW1_SIZE (0x500)
-+
-+
-+extern VLYNQ_DEV vlynqDevice0, vlynqDevice1;
-+int vlynq_init_status[2] = {0, 0};
-+EXPORT_SYMBOL(vlynq_init_status);
-+static int reset_hack = 1;
-+
-+void vlynq_ar7wrd_dev_init()
-+{
-+ *(unsigned long*) AVALANCHE_GPIO_ENBL |= (1<<18);
-+ vlynq_delay(20000);
-+ *(unsigned long*) AVALANCHE_GPIO_DIR &= ~(1<<18);
-+ vlynq_delay(20000);
-+ *(unsigned long*) AVALANCHE_GPIO_DATA_OUT&= ~(1<<18);
-+ vlynq_delay(50000);
-+ *(unsigned long*) AVALANCHE_GPIO_DATA_OUT|= (1<<18);
-+ vlynq_delay(50000);
-+
-+ /* Initialize the MIPS host vlynq driver for a given vlynq interface */
-+ vlynqDevice0.dev_idx = 0; /* first vlynq module - this parameter is for reference only */
-+ vlynqDevice0.module_base = AVALANCHE_LOW_VLYNQ_CONTROL_BASE; /* vlynq0 module base address */
-+
-+#if defined(CONFIG_VLYNQ_CLK_LOCAL)
-+ vlynqDevice0.clk_source = VLYNQ_CLK_SOURCE_LOCAL;
-+#else
-+ vlynqDevice0.clk_source = VLYNQ_CLK_SOURCE_REMOTE;
-+#endif
-+ vlynqDevice0.clk_div = 0x01; /* board/hardware specific */
-+ vlynqDevice0.state = VLYNQ_DRV_STATE_UNINIT; /* uninitialized module */
-+
-+ /* Populate vlynqDevice0.local_mem & Vlynq0.remote_mem based on system configuration */
-+ /*Local memory configuration */
-+
-+ /* Demiurg : not good !*/
-+#if 0
-+ vlynqDevice0.local_mem.Txmap= AVALANCHE_LOW_VLYNQ_MEM_MAP_BASE & ~(0xc0000000) ; /* physical address */
-+ vlynqDevice0.remote_mem.RxOffset[0]= VLYNQ0_REMOTE_WINDOW1_OFFSET; /* This is specific to the board on the other end */
-+ vlynqDevice0.remote_mem.RxSize[0]=VLYNQ0_REMOTE_WINDOW1_SIZE;
-+#endif
-+
-+ /* Demiurg : This is how it should be ! */
-+ vlynqDevice0.local_mem.Txmap = PHYSADDR(AVALANCHE_LOW_VLYNQ_MEM_MAP_BASE);
-+#define VLYNQ_ACX111_MEM_OFFSET 0xC0000000 /* Physical address of ACX111 memory */
-+#define VLYNQ_ACX111_MEM_SIZE 0x00040000 /* Total size of the ACX111 memory */
-+#define VLYNQ_ACX111_REG_OFFSET 0xF0000000 /* PHYS_ADDR of ACX111 control registers */
-+#define VLYNQ_ACX111_REG_SIZE 0x00022000 /* Size of ACX111 registers area, MAC+PHY */
-+#define ACX111_VL1_REMOTE_SIZE 0x1000000
-+ vlynqDevice0.remote_mem.RxOffset[0] = VLYNQ_ACX111_MEM_OFFSET;
-+ vlynqDevice0.remote_mem.RxSize[0] = VLYNQ_ACX111_MEM_SIZE ;
-+ vlynqDevice0.remote_mem.RxOffset[1] = VLYNQ_ACX111_REG_OFFSET;
-+ vlynqDevice0.remote_mem.RxSize[1] = VLYNQ_ACX111_REG_SIZE ;
-+ vlynqDevice0.remote_mem.Txmap = 0;
-+ vlynqDevice0.local_mem.RxOffset[0] = AVALANCHE_SDRAM_BASE;
-+ vlynqDevice0.local_mem.RxSize[0] = ACX111_VL1_REMOTE_SIZE;
-+
-+
-+ /* Local interrupt configuration */
-+ vlynqDevice0.local_irq.intLocal = VLYNQ_INT_LOCAL; /* Host handles vlynq interrupts*/
-+ vlynqDevice0.local_irq.intRemote = VLYNQ_INT_ROOT_ISR; /* vlynq root isr used */
-+ vlynqDevice0.local_irq.map_vector = SYS_VLYNQ_LOCAL_INTERRUPT_VECTOR;
-+ vlynqDevice0.local_irq.intr_ptr = 0; /* Since remote interrupts part of vlynq root isr this is unused */
-+
-+ /* Remote interrupt configuration */
-+ vlynqDevice0.remote_irq.intLocal = VLYNQ_INT_REMOTE; /* MIPS handles interrupts */
-+ vlynqDevice0.remote_irq.intRemote = VLYNQ_INT_ROOT_ISR; /* Not significant since MIPS handles interrupts */
-+ vlynqDevice0.remote_irq.map_vector = SYS_VLYNQ_REMOTE_INTERRUPT_VECTOR;
-+ vlynqDevice0. remote_irq.intr_ptr = AVALANCHE_INTC_BASE; /* Not significant since MIPS handles interrupts */
-+
-+ if(reset_hack != 1)
-+ printk("About to re-init the VLYNQ.\n");
-+
-+ if(vlynq_init(&vlynqDevice0,VLYNQ_INIT_PERFORM_ALL)== 0)
-+ {
-+ /* Suraj added the following to keep the 1130 going. */
-+ vlynq_interrupt_vector_set(&vlynqDevice0, 0 /* intr vector line running into 1130 vlynq */,
-+ 0 /* intr mapped onto the interrupt register on remote vlynq and this vlynq */,
-+ VLYNQ_REMOTE_DVC, 0 /* polarity active high */, 0 /* interrupt Level triggered */);
-+
-+ /* System wide interrupt is 80 for 1130, please note. */
-+ vlynq_init_status[0] = 1;
-+ reset_hack = 2;
-+ }
-+ else
-+ {
-+ if(reset_hack == 1)
-+ printk("VLYNQ INIT FAILED: Please try cold reboot. \n");
-+ else
-+ printk("Failed to initialize the VLYNQ interface at insmod.\n");
-+
-+ }
-+}
-+
-+void vlynq_dev_init(void)
-+{
-+ volatile unsigned int *reset_base = (unsigned int *) AVALANCHE_RESET_CONTROL_BASE;
-+
-+ *reset_base &= ~((1 << AVALANCHE_LOW_VLYNQ_RESET_BIT)); /* | (1 << AVALANCHE_HIGH_VLYNQ_RESET_BIT)); */
-+
-+ vlynq_delay(20000);
-+
-+ /* Bring vlynq out of reset if not already done */
-+ *reset_base |= (1 << AVALANCHE_LOW_VLYNQ_RESET_BIT); /* | (1 << AVALANCHE_HIGH_VLYNQ_RESET_BIT); */
-+ vlynq_delay(20000); /* Allowing sufficient time to VLYNQ to settle down.*/
-+
-+ vlynq_ar7wrd_dev_init( );
-+
-+}
-+
-+/* This function is board specific and should be ported for each board. */
-+void remote_vlynq_dev_reset_ctrl(unsigned int module_reset_bit,
-+ AVALANCHE_RESET_CTRL_T reset_ctrl)
-+{
-+ if(module_reset_bit >= 32)
-+ return;
-+
-+ switch(module_reset_bit)
-+ {
-+ case 0:
-+ if(OUT_OF_RESET == reset_ctrl)
-+ {
-+ if(reset_hack) return;
-+
-+ vlynq_delay(20000);
-+ printk("Un-resetting the remote device.\n");
-+ vlynq_dev_init();
-+ printk("Re-initialized the VLYNQ.\n");
-+ reset_hack = 2;
-+ }
-+ else if(IN_RESET == reset_ctrl)
-+ {
-+ *(unsigned long*) AVALANCHE_GPIO_DATA_OUT &= ~(1<<18);
-+
-+ vlynq_delay(20000);
-+ printk("Resetting the remote device.\n");
-+ reset_hack = 0;
-+ }
-+ else
-+ ;
-+ break;
-+
-+ default:
-+ break;
-+
-+ }
-+}
-+
-diff -urN linux.old/drivers/char/avalanche_vlynq/vlynq_drv.c linux.dev/drivers/char/avalanche_vlynq/vlynq_drv.c
---- linux.old/drivers/char/avalanche_vlynq/vlynq_drv.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/char/avalanche_vlynq/vlynq_drv.c 2005-11-10 01:10:45.891577500 +0100
-@@ -0,0 +1,243 @@
-+/******************************************************************************
-+ * FILE PURPOSE: Vlynq Linux Device Driver Source
-+ ******************************************************************************
-+ * FILE NAME: vlynq_drv.c
-+ *
-+ * DESCRIPTION: Vlynq Linux Device Driver Source
-+ *
-+ * REVISION HISTORY:
-+ *
-+ * Date Description Author
-+ *-----------------------------------------------------------------------------
-+ * 17 July 2003 Initial Creation Anant Gole
-+ * 17 Dec 2003 Updates Sharath Kumar
-+ *
-+ * (C) Copyright 2003, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/sched.h>
-+#include <linux/miscdevice.h>
-+#include <linux/smp_lock.h>
-+#include <linux/delay.h>
-+#include <linux/proc_fs.h>
-+#include <linux/capability.h>
-+#include <asm/ar7/avalanche_intc.h>
-+#include <asm/ar7/sangam.h>
-+#include <asm/ar7/vlynq.h>
-+
-+
-+#define TI_VLYNQ_VERSION "0.2"
-+
-+/* debug on ? */
-+#define VLYNQ_DEBUG
-+
-+/* Macro for debug and error printf's */
-+#ifdef VLYNQ_DEBUG
-+#define DBGPRINT printk
-+#else
-+#define DBGPRINT(x)
-+#endif
-+
-+#define ERRPRINT printk
-+
-+/* Define the max vlynq ports this driver will support.
-+ Device name strings are statically added here */
-+#define MAX_VLYNQ_PORTS 2
-+
-+
-+/* Type define for VLYNQ private structure */
-+typedef struct vlynqPriv{
-+ int irq;
-+ VLYNQ_DEV *vlynqDevice;
-+}VLYNQ_PRIV;
-+
-+extern int vlynq_init_status[2];
-+
-+/* Extern Global variable for vlynq devices used in initialization of the vlynq device
-+ * These variables need to be populated/initialized by the system as part of initialization
-+ * process. The vlynq enumerator can run at initialization and populate these globals
-+ */
-+
-+VLYNQ_DEV vlynqDevice0;
-+VLYNQ_DEV vlynqDevice1;
-+
-+/* Defining dummy macro AVALANCHE_HIGH_VLYNQ_INT to take
-+ * care of compilation in case of single vlynq device
-+ */
-+
-+#ifndef AVALANCHE_HIGH_VLYNQ_INT
-+#define AVALANCHE_HIGH_VLYNQ_INT 0
-+#endif
-+
-+
-+
-+/* vlynq private object */
-+VLYNQ_PRIV vlynq_priv[CONFIG_AR7_VLYNQ_PORTS] = {
-+ { LNXINTNUM(AVALANCHE_LOW_VLYNQ_INT),&vlynqDevice0},
-+ { LNXINTNUM(AVALANCHE_HIGH_VLYNQ_INT),&vlynqDevice1},
-+};
-+
-+extern void vlynq_dev_init(void);
-+
-+
-+/* =================================== all the operations */
-+
-+static int
-+vlynq_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
-+{
-+ return 0;
-+}
-+
-+static struct file_operations vlynq_fops = {
-+ owner: THIS_MODULE,
-+ ioctl: vlynq_ioctl,
-+};
-+
-+/* Vlynq device object */
-+static struct miscdevice vlynq_dev [MAX_VLYNQ_PORTS] = {
-+ { MISC_DYNAMIC_MINOR , "vlynq0", &vlynq_fops },
-+ { MISC_DYNAMIC_MINOR , "vlynq1", &vlynq_fops },
-+};
-+
-+
-+/* Proc read function */
-+static int
-+vlynq_read_link_proc(char *buf, char **start, off_t offset, int count, int *eof, void *unused)
-+{
-+ int instance;
-+ int len = 0;
-+
-+ len += sprintf(buf +len,"VLYNQ Devices : %d\n",CONFIG_AR7_VLYNQ_PORTS);
-+
-+ for(instance =0;instance < CONFIG_AR7_VLYNQ_PORTS;instance++)
-+ {
-+ int link_state;
-+ char *link_msg[] = {" DOWN "," UP "};
-+
-+ if(vlynq_init_status[instance] == 0)
-+ link_state = 0;
-+
-+ else if (vlynq_link_check(vlynq_priv[instance].vlynqDevice))
-+ link_state = 1;
-+
-+ else
-+ link_state = 0;
-+
-+ len += sprintf(buf + len, "VLYNQ %d: Link state: %s\n",instance,link_msg[link_state]);
-+
-+ }
-+ /* Print info about vlynq device 1 */
-+
-+ return len;
-+}
-+
-+
-+/* Proc function to display driver version */
-+static int
-+vlynq_read_ver_proc(char *buf, char **start, off_t offset, int count, int *eof, void *data)
-+{
-+ int instance;
-+ int len=0;
-+
-+ len += sprintf(buf +len,"\nTI Linux VLYNQ Driver Version %s\n",TI_VLYNQ_VERSION);
-+ return len;
-+}
-+
-+
-+
-+
-+/* Wrapper for vlynq ISR */
-+static void lnx_vlynq_root_isr(int irq, void * arg, struct pt_regs *regs)
-+{
-+ vlynq_root_isr(arg);
-+}
-+
-+/* =================================== init and cleanup */
-+
-+int vlynq_init_module(void)
-+{
-+ int ret;
-+ int unit = 0;
-+ int instance_count = CONFIG_AR7_VLYNQ_PORTS;
-+ volatile int *ptr;
-+
-+ vlynq_dev_init();
-+
-+ DBGPRINT("Vlynq CONFIG_AR7_VLYNQ_PORTS=%d\n", CONFIG_AR7_VLYNQ_PORTS);
-+ /* If num of configured vlynq ports > supported by driver return error */
-+ if (instance_count > MAX_VLYNQ_PORTS)
-+ {
-+ ERRPRINT("ERROR: vlynq_init_module(): Max %d supported\n", MAX_VLYNQ_PORTS);
-+ return (-1);
-+ }
-+
-+ /* register the misc device */
-+ for (unit = 0; unit < CONFIG_AR7_VLYNQ_PORTS; unit++)
-+ {
-+ ret = misc_register(&vlynq_dev[unit]);
-+
-+ if(ret < 0)
-+ {
-+ ERRPRINT("ERROR:Could not register vlynq device:%d\n",unit);
-+ continue;
-+ }
-+ else
-+ DBGPRINT("Vlynq Device %s registered with minor no %d as misc device. Result=%d\n",
-+ vlynq_dev[unit].name, vlynq_dev[unit].minor, ret);
-+#if 0
-+
-+ DBGPRINT("Calling vlynq init\n");
-+
-+ /* Read the global variable for VLYNQ device structure and initialize vlynq driver */
-+ ret = vlynq_init(vlynq_priv[unit].vlynqDevice,VLYNQ_INIT_PERFORM_ALL );
-+#endif
-+
-+ if(vlynq_init_status[unit] == 0)
-+ {
-+ printk("VLYNQ %d : init failed\n",unit);
-+ continue;
-+ }
-+
-+ /* Check link before proceeding */
-+ if (!vlynq_link_check(vlynq_priv[unit].vlynqDevice))
-+ {
-+ DBGPRINT("\nError: Vlynq link not available.trying once before Exiting");
-+ }
-+ else
-+ {
-+ DBGPRINT("Vlynq instance:%d Link UP\n",unit);
-+
-+ /* Install the vlynq local root ISR */
-+ request_irq(vlynq_priv[unit].irq,lnx_vlynq_root_isr,0,vlynq_dev[unit].name,vlynq_priv[unit].vlynqDevice);
-+ }
-+ }
-+
-+ proc_mkdir("avalanche", NULL);
-+ /* Creating proc entry for the devices */
-+ create_proc_read_entry("avalanche/vlynq_link", 0, NULL, vlynq_read_link_proc, NULL);
-+ create_proc_read_entry("avalanche/vlynq_ver", 0, NULL, vlynq_read_ver_proc, NULL);
-+
-+ return 0;
-+}
-+
-+void vlynq_cleanup_module(void)
-+{
-+ int unit = 0;
-+
-+ for (unit = 0; unit < CONFIG_AR7_VLYNQ_PORTS; unit++)
-+ {
-+ DBGPRINT("vlynq_cleanup_module(): Unregistring misc device %s\n",vlynq_dev[unit].name);
-+ misc_deregister(&vlynq_dev[unit]);
-+ }
-+
-+ remove_proc_entry("avalanche/vlynq_link", NULL);
-+ remove_proc_entry("avalanche/vlynq_ver", NULL);
-+}
-+
-+
-+module_init(vlynq_init_module);
-+module_exit(vlynq_cleanup_module);
-+
-diff -urN linux.old/drivers/char/avalanche_vlynq/vlynq_hal.c linux.dev/drivers/char/avalanche_vlynq/vlynq_hal.c
---- linux.old/drivers/char/avalanche_vlynq/vlynq_hal.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/char/avalanche_vlynq/vlynq_hal.c 2005-11-10 01:10:45.975582750 +0100
-@@ -0,0 +1,1214 @@
-+/***************************************************************************
-+**+----------------------------------------------------------------------+**
-+**| **** |**
-+**| **** |**
-+**| ******o*** |**
-+**| ********_///_**** |**
-+**| ***** /_//_/ **** |**
-+**| ** ** (__/ **** |**
-+**| ********* |**
-+**| **** |**
-+**| *** |**
-+**| |**
-+**| Copyright (c) 2003 Texas Instruments Incorporated |**
-+**| ALL RIGHTS RESERVED |**
-+**| |**
-+**| Permission is hereby granted to licensees of Texas Instruments |**
-+**| Incorporated (TI) products to use this computer program for the sole |**
-+**| purpose of implementing a licensee product based on TI products. |**
-+**| No other rights to reproduce, use, or disseminate this computer |**
-+**| program, whether in part or in whole, are granted. |**
-+**| |**
-+**| TI makes no representation or warranties with respect to the |**
-+**| performance of this computer program, and specifically disclaims |**
-+**| any responsibility for any damages, special or consequential, |**
-+**| connected with the use of this program. |**
-+**| |**
-+**+----------------------------------------------------------------------+**
-+***************************************************************************/
-+
-+/***************************************************************************
-+ * ------------------------------------------------------------------------------
-+ * Module : vlynq_hal.c
-+ * Description : This file implements VLYNQ HAL API.
-+ * ------------------------------------------------------------------------------
-+ ***************************************************************************/
-+
-+#include <linux/stddef.h>
-+#include <linux/types.h>
-+#include <asm/ar7/vlynq.h>
-+
-+/**** Local Function prototypes *******/
-+static int vlynqInterruptInit(VLYNQ_DEV *pdev);
-+static void vlynq_configClock(VLYNQ_DEV *pdev);
-+
-+/*** Second argument must be explicitly type casted to
-+ * (VLYNQ_DEV*) inside the following functions */
-+static void vlynq_local_module_isr(void *arg1, void *arg2, void *arg3);
-+static void vlynq_remote_module_isr(void *arg1, void *arg2, void *arg3);
-+
-+
-+volatile int vlynq_delay_value = 0;
-+
-+/* Code adopted from original vlynq driver */
-+void vlynq_delay(unsigned int clktime)
-+{
-+ int i = 0;
-+ volatile int *ptr = &vlynq_delay_value;
-+ *ptr = 0;
-+
-+ /* We are assuming that the each cycle takes about
-+ * 23 assembly instructions. */
-+ for(i = 0; i < (clktime + 23)/23; i++)
-+ {
-+ *ptr = *ptr + 1;
-+ }
-+}
-+
-+
-+/* ----------------------------------------------------------------------------
-+ * Function : vlynq_configClock()
-+ * Description: Configures clock settings based on input parameters
-+ * Adapted from original vlyna driver from Cable
-+ */
-+static void vlynq_configClock(VLYNQ_DEV * pdev)
-+{
-+ unsigned int tmp;
-+
-+ switch( pdev->clk_source)
-+ {
-+ case VLYNQ_CLK_SOURCE_LOCAL: /* we output the clock, clk_div in range [1..8]. */
-+ tmp = ((pdev->clk_div - 1) << 16) | VLYNQ_CTL_CLKDIR_MASK ;
-+ VLYNQ_CTRL_REG = tmp;
-+ VLYNQ_R_CTRL_REG = 0ul;
-+ break;
-+ case VLYNQ_CLK_SOURCE_REMOTE: /* we need to set the clock pin as input */
-+ VLYNQ_CTRL_REG = 0ul;
-+ tmp = ((pdev->clk_div - 1) << 16) | VLYNQ_CTL_CLKDIR_MASK ;
-+ VLYNQ_R_CTRL_REG = tmp;
-+ break;
-+ default: /* do nothing about the clock, but clear other bits. */
-+ tmp = ~(VLYNQ_CTL_CLKDIR_MASK | VLYNQ_CTL_CLKDIV_MASK);
-+ VLYNQ_CTRL_REG &= tmp;
-+ break;
-+ }
-+}
-+
-+ /* ----------------------------------------------------------------------------
-+ * Function : vlynq_link_check()
-+ * Description: This function checks the current VLYNQ for a link.
-+ * An arbitrary amount of time is allowed for the link to come up .
-+ * Returns 0 for "no link / failure " and 1 for "link available".
-+ * -----------------------------------------------------------------------------
-+ */
-+unsigned int vlynq_link_check( VLYNQ_DEV * pdev)
-+{
-+ /*sleep for 64 cycles, allow link to come up*/
-+ vlynq_delay(64);
-+
-+ /* check status register return OK if link is found. */
-+ if (VLYNQ_STATUS_REG & VLYNQ_STS_LINK_MASK)
-+ {
-+ return 1; /* Link Available */
-+ }
-+ else
-+ {
-+ return 0; /* Link Failure */
-+ }
-+}
-+
-+/* ----------------------------------------------------------------------------
-+ * Function : vlynq_init()
-+ * Description: Initialization function accepting paramaters for VLYNQ module
-+ * initialization. The Options bitmap decides what operations are performed
-+ * as a part of initialization. The Input parameters are obtained through the
-+ * sub fields of VLYNQ_DEV structure.
-+ */
-+
-+int vlynq_init(VLYNQ_DEV *pdev, VLYNQ_INIT_OPTIONS options)
-+{
-+ unsigned int map;
-+ unsigned int val=0,cnt,tmp;
-+ unsigned int counter=0;
-+ VLYNQ_INTERRUPT_CNTRL *intSetting=NULL;
-+
-+ /* validate arguments */
-+ if( VLYNQ_OUTRANGE(pdev->clk_source, VLYNQ_CLK_SOURCE_REMOTE, VLYNQ_CLK_SOURCE_NONE) ||
-+ VLYNQ_OUTRANGE(pdev->clk_div, 8, 1) )
-+ {
-+ return VLYNQ_INVALID_ARG;
-+ }
-+
-+ /** perform all sanity checks first **/
-+ if(pdev->state != VLYNQ_DRV_STATE_UNINIT)
-+ return VLYNQ_INVALID_DRV_STATE;
-+
-+ /** Initialize local and remote register set addresses- additional
-+ * provision to access the registers directly if need be */
-+ pdev->local = (VLYNQ_REG_SET*)pdev->module_base;
-+ pdev->remote = (VLYNQ_REG_SET*) (pdev->module_base + VLYNQ_REMOTE_REGS_OFFSET);
-+
-+ /* Detect faulty int configuration that might induce int pkt looping */
-+ if ( (options & VLYNQ_INIT_LOCAL_INTERRUPTS) && (options & VLYNQ_INIT_REMOTE_INTERRUPTS) )
-+ {
-+ /* case when both local and remote are configured */
-+ if((pdev->local_irq.intLocal== VLYNQ_INT_REMOTE ) /* interrupts transfered to remote from local */
-+ && (pdev->remote_irq.intLocal== VLYNQ_INT_REMOTE) /* interrupts transfered from remote to local */
-+ && ((pdev->local_irq.intRemote == VLYNQ_INT_ROOT_ISR) || (pdev->remote_irq.intRemote == VLYNQ_INT_ROOT_ISR)) )
-+ {
-+ return (VLYNQ_INT_CONFIG_ERR);
-+ }
-+ }
-+
-+ pdev->state = VLYNQ_DRV_STATE_ININIT;
-+ pdev->intCount = 0;
-+ pdev->isrCount = 0;
-+
-+ /*** Its assumed that the vlynq module has been brought out of reset
-+ * before invocation of vlynq_init. Since, this operation is board specific
-+ * it must be handled outside this generic driver */
-+
-+ /* Assert reset the remote device, call reset_cb,
-+ * reset CB holds Reset according to the device needs. */
-+ VLYNQ_RESETCB(VLYNQ_RESET_ASSERT);
-+
-+ /* Handle VLYNQ clock, HW default (Sense On Reset) is
-+ * usually input for all the devices. */
-+ if (options & VLYNQ_INIT_CONFIG_CLOCK)
-+ {
-+ vlynq_configClock(pdev);
-+ }
-+
-+ /* Call reset_cb again. It will release the remote device
-+ * from reset, and wait for a while. */
-+ VLYNQ_RESETCB(VLYNQ_RESET_DEASSERT);
-+
-+ if(options & VLYNQ_INIT_CHECK_LINK )
-+ {
-+ /* Check for link up during initialization*/
-+ while( counter < 25 )
-+ {
-+ /* loop around giving a chance for link status to settle down */
-+ counter++;
-+ if(vlynq_link_check(pdev))
-+ {
-+ /* Link is up exit loop*/
-+ break;
-+ }
-+
-+ vlynq_delay(4000);
-+ }/*end of while counter loop */
-+
-+ if(!vlynq_link_check(pdev))
-+ {
-+ /* Handle this case as abort */
-+ pdev->state = VLYNQ_DRV_STATE_ERROR;
-+ VLYNQ_RESETCB( VLYNQ_RESET_INITFAIL);
-+ return VLYNQ_LINK_DOWN;
-+ }/* end of if not vlynq_link_check conditional block */
-+
-+ }/*end of if options & VLYNQ_INIT_CHECK_LINK conditional block */
-+
-+
-+ if (options & VLYNQ_INIT_LOCAL_MEM_REGIONS)
-+ {
-+ /* Initialise local memory regions . This initialization lets
-+ * the local host access remote device memory regions*/
-+ int i;
-+
-+ /* configure the VLYNQ portal window to a PHYSICAL
-+ * address of the local CPU */
-+ VLYNQ_ALIGN4(pdev->local_mem.Txmap);
-+ VLYNQ_TXMAP_REG = (pdev->local_mem.Txmap);
-+
-+ /*This code assumes input parameter is itself a physical address */
-+ for(i=0; i < VLYNQ_MAX_MEMORY_REGIONS ; i++)
-+ {
-+ /* Physical address on the remote */
-+ map = i+1;
-+ VLYNQ_R_RXMAP_SIZE_REG(map) = 0;
-+ if( pdev->remote_mem.RxSize[i])
-+ {
-+ VLYNQ_ALIGN4(pdev->remote_mem.RxOffset[i]);
-+ VLYNQ_ALIGN4(pdev->remote_mem.RxSize[i]);
-+ VLYNQ_R_RXMAP_OFFSET_REG(map) = pdev->remote_mem.RxOffset[i];
-+ VLYNQ_R_RXMAP_SIZE_REG(map) = pdev->remote_mem.RxSize[i];
-+ }
-+ }
-+ }
-+
-+ if(options & VLYNQ_INIT_REMOTE_MEM_REGIONS )
-+ {
-+ int i;
-+
-+ /* Initialise remote memory regions. This initialization lets remote
-+ * device access local host memory regions. It configures the VLYNQ portal
-+ * window to a PHYSICAL address of the remote */
-+ VLYNQ_ALIGN4(pdev->remote_mem.Txmap);
-+ VLYNQ_R_TXMAP_REG = pdev->remote_mem.Txmap;
-+
-+ for( i=0; i<VLYNQ_MAX_MEMORY_REGIONS; i++)
-+ {
-+ /* Physical address on the local */
-+ map = i+1;
-+ VLYNQ_RXMAP_SIZE_REG(map) = 0;
-+ if( pdev->local_mem.RxSize[i])
-+ {
-+ VLYNQ_ALIGN4(pdev->local_mem.RxOffset[i]);
-+ VLYNQ_ALIGN4(pdev->local_mem.RxSize[i]);
-+ VLYNQ_RXMAP_OFFSET_REG(map) = (pdev->local_mem.RxOffset[i]);
-+ VLYNQ_RXMAP_SIZE_REG(map) = (pdev->local_mem.RxSize[i]);
-+ }
-+ }
-+ }
-+
-+ /* Adapted from original vlynq driver from cable - Calculate VLYNQ bus width */
-+ pdev->width = 3 + VLYNQ_STATUS_FLD_WIDTH(VLYNQ_STATUS_REG)
-+ + VLYNQ_STATUS_FLD_WIDTH(VLYNQ_R_STATUS_REG);
-+
-+ /* chance to initialize the device, e.g. to boost VLYNQ
-+ * clock by modifying pdev->clk_div or and verify the width. */
-+ VLYNQ_RESETCB(VLYNQ_RESET_LINKESTABLISH);
-+
-+ /* Handle VLYNQ clock, HW default (Sense On Reset) is
-+ * usually input for all the devices. */
-+ if(options & VLYNQ_INIT_CONFIG_CLOCK )
-+ {
-+ vlynq_configClock(pdev);
-+ }
-+
-+ /* last check for link*/
-+ if(options & VLYNQ_INIT_CHECK_LINK )
-+ {
-+ /* Final Check for link during initialization*/
-+ while( counter < 25 )
-+ {
-+ /* loop around giving a chance for link status to settle down */
-+ counter++;
-+ if(vlynq_link_check(pdev))
-+ {
-+ /* Link is up exit loop*/
-+ break;
-+ }
-+
-+ vlynq_delay(4000);
-+ }/*end of while counter loop */
-+
-+ if(!vlynq_link_check(pdev))
-+ {
-+ /* Handle this case as abort */
-+ pdev->state = VLYNQ_DRV_STATE_ERROR;
-+ VLYNQ_RESETCB( VLYNQ_RESET_INITFAIL);
-+ return VLYNQ_LINK_DOWN;
-+ }/* end of if not vlynq_link_check conditional block */
-+
-+ } /* end of if options & VLYNQ_INIT_CHECK_LINK */
-+
-+ if(options & VLYNQ_INIT_LOCAL_INTERRUPTS )
-+ {
-+ /* Configure local interrupt settings */
-+ intSetting = &(pdev->local_irq);
-+
-+ /* Map local module status interrupts to interrupt vector*/
-+ val = intSetting->map_vector << VLYNQ_CTL_INTVEC_SHIFT ;
-+
-+ /* enable local module status interrupts */
-+ val |= 0x01 << VLYNQ_CTL_INTEN_SHIFT;
-+
-+ if ( intSetting->intLocal == VLYNQ_INT_LOCAL )
-+ {
-+ /*set the intLocal bit*/
-+ val |= 0x01 << VLYNQ_CTL_INTLOCAL_SHIFT;
-+ }
-+
-+ /* Irrespective of whether interrupts are handled locally, program
-+ * int2Cfg. Error checking for accidental loop(when intLocal=0 and int2Cfg=1
-+ * i.e remote packets are set intPending register->which will result in
-+ * same packet being sent out) has been done already
-+ */
-+
-+ if (intSetting->intRemote == VLYNQ_INT_ROOT_ISR)
-+ {
-+ /* Set the int2Cfg register, so that remote interrupt
-+ * packets are written to intPending register */
-+ val |= 0x01 << VLYNQ_CTL_INT2CFG_SHIFT;
-+
-+ /* Set intPtr register to point to intPending register */
-+ VLYNQ_INT_PTR_REG = VLYNQ_INT_PENDING_REG_PTR ;
-+ }
-+ else
-+ {
-+ /*set the interrupt pointer register*/
-+ VLYNQ_INT_PTR_REG = intSetting->intr_ptr;
-+ /* Dont bother to modify int2Cfg as it would be zero */
-+ }
-+
-+ /** Clear bits related to INT settings in control register **/
-+ VLYNQ_CTRL_REG = VLYNQ_CTRL_REG & (~VLYNQ_CTL_INTFIELDS_CLEAR_MASK);
-+
-+ /** Or the bits to be set with Control register **/
-+ VLYNQ_CTRL_REG = VLYNQ_CTRL_REG | val;
-+
-+ /* initialise local ICB */
-+ if(vlynqInterruptInit(pdev)==VLYNQ_MEMALLOC_FAIL)
-+ return VLYNQ_MEMALLOC_FAIL;
-+
-+ /* Install handler for local module status interrupts. By default when
-+ * local interrupt setting is initialised, the local module status are
-+ * enabled and handler hooked up */
-+ if(vlynq_install_isr(pdev, intSetting->map_vector, vlynq_local_module_isr,
-+ pdev, NULL, NULL) == VLYNQ_INVALID_ARG)
-+ return VLYNQ_INVALID_ARG;
-+ } /* end of init local interrupts */
-+
-+ if(options & VLYNQ_INIT_REMOTE_INTERRUPTS )
-+ {
-+ /* Configure remote interrupt settings from configuration */
-+ intSetting = &(pdev->remote_irq);
-+
-+ /* Map remote module status interrupts to remote interrupt vector*/
-+ val = intSetting->map_vector << VLYNQ_CTL_INTVEC_SHIFT ;
-+ /* enable remote module status interrupts */
-+ val |= 0x01 << VLYNQ_CTL_INTEN_SHIFT;
-+
-+ if ( intSetting->intLocal == VLYNQ_INT_LOCAL )
-+ {
-+ /*set the intLocal bit*/
-+ val |= 0x01 << VLYNQ_CTL_INTLOCAL_SHIFT;
-+ }
-+
-+ /* Irrespective of whether interrupts are handled locally, program
-+ * int2Cfg. Error checking for accidental loop(when intLocal=0 and int2Cfg=1
-+ * i.e remote packets are set intPending register->which will result in
-+ * same packet being sent out) has been done already
-+ */
-+
-+ if (intSetting->intRemote == VLYNQ_INT_ROOT_ISR)
-+ {
-+ /* Set the int2Cfg register, so that remote interrupt
-+ * packets are written to intPending register */
-+ val |= 0x01 << VLYNQ_CTL_INT2CFG_SHIFT;
-+ /* Set intPtr register to point to intPending register */
-+ VLYNQ_R_INT_PTR_REG = VLYNQ_R_INT_PENDING_REG_PTR ;
-+ }
-+ else
-+ {
-+ /*set the interrupt pointer register*/
-+ VLYNQ_R_INT_PTR_REG = intSetting->intr_ptr;
-+ /* Dont bother to modify int2Cfg as it would be zero */
-+ }
-+
-+ if( (intSetting->intLocal == VLYNQ_INT_REMOTE) &&
-+ (options & VLYNQ_INIT_LOCAL_INTERRUPTS) &&
-+ (pdev->local_irq.intRemote == VLYNQ_INT_ROOT_ISR) )
-+ {
-+ /* Install handler for remote module status interrupts. By default when
-+ * remote interrupts are forwarded to local root_isr then remote_module_isr is
-+ * enabled and handler hooked up */
-+ if(vlynq_install_isr(pdev,intSetting->map_vector,vlynq_remote_module_isr,
-+ pdev, NULL, NULL) == VLYNQ_INVALID_ARG)
-+ return VLYNQ_INVALID_ARG;
-+ }
-+
-+
-+ /** Clear bits related to INT settings in control register **/
-+ VLYNQ_R_CTRL_REG = VLYNQ_R_CTRL_REG & (~VLYNQ_CTL_INTFIELDS_CLEAR_MASK);
-+
-+ /** Or the bits to be set with the remote Control register **/
-+ VLYNQ_R_CTRL_REG = VLYNQ_R_CTRL_REG | val;
-+
-+ } /* init remote interrupt settings*/
-+
-+ if(options & VLYNQ_INIT_CLEAR_ERRORS )
-+ {
-+ /* Clear errors during initialization */
-+ tmp = VLYNQ_STATUS_REG & (VLYNQ_STS_RERROR_MASK | VLYNQ_STS_LERROR_MASK);
-+ VLYNQ_STATUS_REG = tmp;
-+ tmp = VLYNQ_R_STATUS_REG & (VLYNQ_STS_RERROR_MASK | VLYNQ_STS_LERROR_MASK);
-+ VLYNQ_R_STATUS_REG = tmp;
-+ }
-+
-+ /* clear int status */
-+ val = VLYNQ_INT_STAT_REG;
-+ VLYNQ_INT_STAT_REG = val;
-+
-+ /* finish initialization */
-+ pdev->state = VLYNQ_DRV_STATE_RUN;
-+ VLYNQ_RESETCB( VLYNQ_RESET_INITOK);
-+ return VLYNQ_SUCCESS;
-+
-+}
-+
-+
-+/* ----------------------------------------------------------------------------
-+ * Function : vlynqInterruptInit()
-+ * Description: This local function is used to set up the ICB table for the
-+ * VLYNQ_STATUS_REG vlynq module. The input parameter "pdev" points the vlynq
-+ * device instance whose ICB is allocated.
-+ * Return : returns VLYNQ_SUCCESS or vlynq error for failure
-+ * -----------------------------------------------------------------------------
-+ */
-+static int vlynqInterruptInit(VLYNQ_DEV *pdev)
-+{
-+ int i, numslots;
-+
-+ /* Memory allocated statically.
-+ * Initialise ICB,free list.Indicate primary slot empty.
-+ * Intialise intVector <==> map_vector translation table*/
-+ for(i=0; i < VLYNQ_NUM_INT_BITS; i++)
-+ {
-+ pdev->pIntrCB[i].isr = NULL;
-+ pdev->pIntrCB[i].next = NULL; /*nothing chained */
-+ pdev->vector_map[i] = -1; /* indicates unmapped */
-+ }
-+
-+ /* In the ICB slots, [VLYNQ_NUM_INT_BITS i.e 32 to ICB array size) are expansion slots
-+ * required only when interrupt chaining/sharing is supported. In case
-+ * of chained interrupts the list starts from primary slot and the
-+ * additional slots are obtained from the common free area */
-+
-+ /* Initialise freelist */
-+
-+ numslots = VLYNQ_NUM_INT_BITS + VLYNQ_IVR_CHAIN_SLOTS;
-+
-+ if (numslots > VLYNQ_NUM_INT_BITS)
-+ {
-+ pdev->freelist = &(pdev->pIntrCB[VLYNQ_NUM_INT_BITS]);
-+
-+ for(i = VLYNQ_NUM_INT_BITS; i < (numslots-1) ; i++)
-+ {
-+ pdev->pIntrCB[i].next = &(pdev->pIntrCB[i+1]);
-+ pdev->pIntrCB[i].isr = NULL;
-+ }
-+ pdev->pIntrCB[i].next=NULL; /* Indicate end of freelist*/
-+ pdev->pIntrCB[i].isr=NULL;
-+ }
-+ else
-+ {
-+ pdev->freelist = NULL;
-+ }
-+
-+ /** Reset mapping for IV 0-7 **/
-+ VLYNQ_IVR_03TO00_REG = 0;
-+ VLYNQ_IVR_07TO04_REG = 0;
-+
-+ return VLYNQ_SUCCESS;
-+}
-+
-+/** remember that hooking up of root ISR handler with the interrupt controller
-+ * is not done as a part of this driver. Typically, it must be done after
-+ * invoking vlynq_init*/
-+
-+
-+ /* ----------------------------------------------------------------------------
-+ * ISR with the SOC interrupt controller. This ISR typically scans
-+ * the Int PENDING/SET register in the VLYNQ module and calls the
-+ * appropriate ISR associated with the correponding vector number.
-+ * -----------------------------------------------------------------------------
-+ */
-+void vlynq_root_isr(void *arg)
-+{
-+ int source; /* Bit position of pending interrupt, start from 0 */
-+ unsigned int interrupts, clrInterrupts;
-+ VLYNQ_DEV * pdev;
-+ VLYNQ_INTR_CNTRL_ICB *entry;
-+
-+ pdev=(VLYNQ_DEV*)(arg); /*obtain the vlynq device pointer*/
-+
-+ interrupts = VLYNQ_INT_STAT_REG; /* Get the list of pending interrupts */
-+ VLYNQ_INT_STAT_REG = interrupts; /* clear the int CR register */
-+ clrInterrupts = interrupts; /* save them for further analysis */
-+
-+ debugPrint("vlynq_root_isr: dev %u. INTCR = 0x%08lx\n", pdev->dev_idx, clrInterrupts,0,0,0,0);
-+
-+ /* Scan interrupt bits */
-+ source =0;
-+ while( clrInterrupts != 0)
-+ {
-+ /* test if bit is set? */
-+ if( 0x1ul & clrInterrupts)
-+ {
-+ entry = &(pdev->pIntrCB[source]); /* Get the ISR entry */
-+ pdev->intCount++; /* update interrupt count */
-+ if(entry->isr != NULL)
-+ {
-+ do
-+ {
-+ pdev->isrCount++; /* update isr invocation count */
-+ /* Call the user ISR and update the count for ISR */
-+ entry->isrCount++;
-+ entry->isr(entry->arg1, entry->arg2, entry->arg3);
-+ if (entry->next == NULL) break;
-+ entry = entry->next;
-+
-+ } while (entry->isr != NULL);
-+ }
-+ else
-+ {
-+ debugPrint(" ISR not installed for vlynq vector:%d\n",source,0,0,0,0,0);
-+ }
-+ }
-+ clrInterrupts >>= 1; /* Next source bit */
-+ ++source;
-+ } /* endWhile clrInterrupts != 0 */
-+}
-+
-+
-+ /* ----------------------------------------------------------------------------
-+ * Function : vlynq_local__module_isr()
-+ * Description: This ISR is attached to the local VLYNQ interrupt vector
-+ * by the Vlynq Driver when local interrupts are being handled. i.e.
-+ * intLocal=1. This ISR handles local Vlynq module status interrupts only
-+ * AS a part of this ISR, user callback in VLYNQ_DEV structure
-+ * is invoked.
-+ * VLYNQ_DEV is passed as arg1. arg2 and arg3 are unused.
-+ * -----------------------------------------------------------------------------
-+ */
-+static void vlynq_local_module_isr(void *arg1,void *arg2, void *arg3)
-+{
-+ VLYNQ_REPORT_CB func;
-+ unsigned int dwStatRegVal;
-+ VLYNQ_DEV * pdev;
-+
-+ pdev = (VLYNQ_DEV*) arg1;
-+ /* Callback function is read from the device pointer that is passed as an argument */
-+ func = pdev->report_cb;
-+
-+ /* read local status register */
-+ dwStatRegVal = VLYNQ_STATUS_REG;
-+
-+ /* clear pending events */
-+ VLYNQ_STATUS_REG = dwStatRegVal;
-+
-+ /* invoke user callback */
-+ if( func != NULL)
-+ func( pdev, VLYNQ_LOCAL_DVC, dwStatRegVal);
-+
-+}
-+
-+ /* ----------------------------------------------------------------------------
-+ * Function : vlynq_remote_module_isr()
-+ * Description: This ISR is attached to the remote VLYNQ interrupt vector
-+ * by the Vlynq Driver when remote interrupts are being handled locally. i.e.
-+ * intLocal=1. This ISR handles local Vlynq module status interrupts only
-+ * AS a part of this ISR, user callback in VLYNQ_DEV structure
-+ * is invoked.
-+ * The parameters irq,regs ar unused.
-+ * -----------------------------------------------------------------------------
-+ */
-+static void vlynq_remote_module_isr(void *arg1,void *arg2, void *arg3)
-+{
-+ VLYNQ_REPORT_CB func;
-+ unsigned int dwStatRegVal;
-+ VLYNQ_DEV * pdev;
-+
-+
-+ pdev = (VLYNQ_DEV*) arg1;
-+
-+ /* Callback function is read from the device pointer that is passed as an argument */
-+ func = pdev->report_cb;
-+
-+ /* read local status register */
-+ dwStatRegVal = VLYNQ_R_STATUS_REG;
-+
-+ /* clear pending events */
-+ VLYNQ_R_STATUS_REG = dwStatRegVal;
-+
-+ /* invoke user callback */
-+ if( func != NULL)
-+ func( pdev, VLYNQ_REMOTE_DVC, dwStatRegVal);
-+
-+}
-+
-+/* ----------------------------------------------------------------------------
-+ * Function : vlynq_interrupt_get_count()
-+ * Description: This function returns the number of times a particular intr
-+ * has been invoked.
-+ *
-+ * It returns 0, if erroneous map_vector is specified or if the corres isr
-+ * has not been registered with VLYNQ.
-+ */
-+unsigned int vlynq_interrupt_get_count(VLYNQ_DEV *pdev,
-+ unsigned int map_vector)
-+{
-+ VLYNQ_INTR_CNTRL_ICB *entry;
-+ unsigned int count = 0;
-+
-+ if (map_vector > (VLYNQ_NUM_INT_BITS-1))
-+ return count;
-+
-+ entry = &(pdev->pIntrCB[map_vector]);
-+
-+ if (entry)
-+ count = entry->isrCount;
-+
-+ return (count);
-+}
-+
-+
-+/* ----------------------------------------------------------------------------
-+ * Function : vlynq_install_isr()
-+ * Description: This function installs ISR for Vlynq interrupt vector
-+ * bits(in IntPending register). This function should be used only when
-+ * Vlynq interrupts are being handled locally(remote may be programmed to send
-+ * interrupt packets).Also, the int2cfg should be 1 and the least significant
-+ * 8 bits of the Interrupt Pointer Register must point to Interrupt
-+ * Pending/Set Register).
-+ * If host int2cfg=0 and the Interrupt Pointer register contains
-+ * the address of the interrupt set register in the interrupt controller
-+ * module of the local device , then the ISR for the remote interrupt must be
-+ * directly registered with the Interrupt controller and must not use this API
-+ * Note: this function simply installs the ISR in ICB It doesnt modify
-+ * any register settings
-+ */
-+int
-+vlynq_install_isr(VLYNQ_DEV *pdev,
-+ unsigned int map_vector,
-+ VLYNQ_INTR_CNTRL_ISR isr,
-+ void *arg1, void *arg2, void *arg3)
-+{
-+ VLYNQ_INTR_CNTRL_ICB *entry;
-+
-+ if ( (map_vector > (VLYNQ_NUM_INT_BITS-1)) || (isr == NULL) )
-+ return VLYNQ_INVALID_ARG;
-+
-+ entry = &(pdev->pIntrCB[map_vector]);
-+
-+ if(entry->isr == NULL)
-+ {
-+ entry->isr = isr;
-+ entry->arg1 = arg1;
-+ entry->arg2 = arg2;
-+ entry->arg3 = arg3;
-+ entry->next = NULL;
-+ }
-+ else
-+ {
-+ /** No more empty slots,return error */
-+ if(pdev->freelist == NULL)
-+ return VLYNQ_MEMALLOC_FAIL;
-+
-+ while(entry->next != NULL)
-+ {
-+ entry = entry->next;
-+ }
-+
-+ /* Append new node to the chain */
-+ entry->next = pdev->freelist;
-+ /* Remove the appended node from freelist */
-+ pdev->freelist = pdev->freelist->next;
-+ entry= entry->next;
-+
-+ /*** Set the ICB fields ***/
-+ entry->isr = isr;
-+ entry->arg1 = arg1;
-+ entry->arg2 = arg2;
-+ entry->arg3 = arg3;
-+ entry->next = NULL;
-+ }
-+
-+ return VLYNQ_SUCCESS;
-+}
-+
-+
-+
-+/* ----------------------------------------------------------------------------
-+ * Function : vlynq_uninstall_isr
-+ * Description: This function is used to uninstall a previously
-+ * registered ISR. In case of shared/chained interrupts, the
-+ * void * arg parameter must uniquely identify the ISR to be
-+ * uninstalled.
-+ * Note: this function simply uninstalls the ISR in ICB
-+ * It doesnt modify any register settings
-+ */
-+int
-+vlynq_uninstall_isr(VLYNQ_DEV *pdev,
-+ unsigned int map_vector,
-+ void *arg1, void *arg2, void *arg3)
-+{
-+ VLYNQ_INTR_CNTRL_ICB *entry,*temp;
-+
-+ if (map_vector > (VLYNQ_NUM_INT_BITS-1))
-+ return VLYNQ_INVALID_ARG;
-+
-+ entry = &(pdev->pIntrCB[map_vector]);
-+
-+ if(entry->isr == NULL )
-+ return VLYNQ_ISR_NON_EXISTENT;
-+
-+ if ( (entry->arg1 == arg1) && (entry->arg2 == arg2) && (entry->arg3 == arg3) )
-+ {
-+ if(entry->next == NULL)
-+ {
-+ entry->isr=NULL;
-+ return VLYNQ_SUCCESS;
-+ }
-+ else
-+ {
-+ temp = entry->next;
-+ /* Copy next node in the chain to prim.slot */
-+ entry->isr = temp->isr;
-+ entry->arg1 = temp->arg1;
-+ entry->arg2 = temp->arg2;
-+ entry->arg3 = temp->arg3;
-+ entry->next = temp->next;
-+ /* Free the just copied node */
-+ temp->isr = NULL;
-+ temp->arg1 = NULL;
-+ temp->arg2 = NULL;
-+ temp->arg3 = NULL;
-+ temp->next = pdev->freelist;
-+ pdev->freelist = temp;
-+ return VLYNQ_SUCCESS;
-+ }
-+ }
-+ else
-+ {
-+ temp = entry;
-+ while ( (entry = temp->next) != NULL)
-+ {
-+ if ( (entry->arg1 == arg1) && (entry->arg2 == arg2) && (entry->arg3 == arg3) )
-+ {
-+ /* remove node from chain */
-+ temp->next = entry->next;
-+ /* Add the removed node to freelist */
-+ entry->isr = NULL;
-+ entry->arg1 = NULL;
-+ entry->arg2 = NULL;
-+ entry->arg3 = NULL;
-+ entry->next = pdev->freelist;
-+ entry->isrCount = 0;
-+ pdev->freelist = entry;
-+ return VLYNQ_SUCCESS;
-+ }
-+ temp = entry;
-+ }
-+
-+ return VLYNQ_ISR_NON_EXISTENT;
-+ }
-+}
-+
-+
-+
-+
-+/* ----------------------------------------------------------------------------
-+ * function : vlynq_interrupt_vector_set()
-+ * description:configures interrupt vector mapping,interrupt type
-+ * polarity -all in one go.
-+ */
-+int
-+vlynq_interrupt_vector_set(VLYNQ_DEV *pdev, /* vlynq device */
-+ unsigned int int_vector, /* int vector on vlynq device */
-+ unsigned int map_vector, /* bit for this interrupt */
-+ VLYNQ_DEV_TYPE dev_type, /* local or remote device */
-+ VLYNQ_INTR_POLARITY pol, /* polarity of interrupt */
-+ VLYNQ_INTR_TYPE type) /* pulsed/level interrupt */
-+{
-+ volatile unsigned int * vecreg;
-+ unsigned int val=0;
-+ unsigned int bytemask=0XFF;
-+
-+ /* use the lower 8 bits of val to set the value , shift it to
-+ * appropriate byte position in the ivr and write it to the
-+ * corresponding register */
-+
-+ /* validate the number of interrupts supported */
-+ if (int_vector >= VLYNQ_IVR_MAXIVR)
-+ return VLYNQ_INVALID_ARG;
-+
-+ if(map_vector > (VLYNQ_NUM_INT_BITS - 1) )
-+ return VLYNQ_INVALID_ARG;
-+
-+ if (dev_type == VLYNQ_LOCAL_DVC)
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_IVR_OFFSET(int_vector));
-+ }
-+ else
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_R_IVR_OFFSET(int_vector));
-+ }
-+
-+ /* Update the intVector<==> bit position translation table */
-+ pdev->vector_map[map_vector] = int_vector;
-+
-+ /* val has been initialised to zero. we only have to turn on appropriate bits*/
-+ if(type == VLYNQ_INTR_PULSED)
-+ val |= VLYNQ_IVR_INTTYPE_MASK;
-+
-+ if(pol == VLYNQ_INTR_ACTIVE_LOW)
-+ val |= VLYNQ_IVR_INTPOL_MASK;
-+
-+ val |= map_vector;
-+
-+ /** clear the correct byte position and then or val **/
-+ *vecreg = (*vecreg) & ( ~(bytemask << ( (int_vector %4)*8) ) );
-+
-+ /** write to correct byte position in vecreg*/
-+ *vecreg = (*vecreg) | (val << ( (int_vector % 4)*8) ) ;
-+
-+ /* Setting a interrupt vector, leaves the interrupt disabled
-+ * which must be enabled subsequently */
-+
-+ return VLYNQ_SUCCESS;
-+}
-+
-+
-+/* ----------------------------------------------------------------------------
-+ * Function : vlynq_interrupt_vector_cntl()
-+ * Description:enables/disable interrupt
-+ */
-+int vlynq_interrupt_vector_cntl( VLYNQ_DEV *pdev,
-+ unsigned int int_vector,
-+ VLYNQ_DEV_TYPE dev_type,
-+ unsigned int enable)
-+{
-+ volatile unsigned int *vecReg;
-+ unsigned int val=0;
-+ unsigned int intenMask=0x80;
-+
-+ /* validate the number of interrupts supported */
-+ if (int_vector >= VLYNQ_IVR_MAXIVR)
-+ return VLYNQ_INVALID_ARG;
-+
-+ if (dev_type == VLYNQ_LOCAL_DVC)
-+ {
-+ vecReg = (volatile unsigned int *) (VLYNQ_IVR_OFFSET(int_vector));
-+ }
-+ else
-+ {
-+ vecReg = (volatile unsigned int *) (VLYNQ_R_IVR_OFFSET(int_vector));
-+ }
-+
-+ /** Clear the correct byte position and then or val **/
-+ *vecReg = (*vecReg) & ( ~(intenMask << ( (int_vector %4)*8) ) );
-+
-+ if(enable)
-+ {
-+ val |= VLYNQ_IVR_INTEN_MASK;
-+ /** Write to correct byte position in vecReg*/
-+ *vecReg = (*vecReg) | (val << ( (int_vector % 4)*8) ) ;
-+ }
-+
-+ return VLYNQ_SUCCESS;
-+
-+}/* end of function vlynq_interrupt_vector_cntl */
-+
-+
-+
-+/* ----------------------------------------------------------------------------
-+ * Function : vlynq_interrupt_vector_map()
-+ * Description:Configures interrupt vector mapping alone
-+ */
-+int
-+vlynq_interrupt_vector_map( VLYNQ_DEV *pdev,
-+ VLYNQ_DEV_TYPE dev_type,
-+ unsigned int int_vector,
-+ unsigned int map_vector)
-+{
-+ volatile unsigned int * vecreg;
-+ unsigned int val=0;
-+ unsigned int bytemask=0x1f; /* mask to turn off bits corresponding to int vector */
-+
-+ /* use the lower 8 bits of val to set the value , shift it to
-+ * appropriate byte position in the ivr and write it to the
-+ * corresponding register */
-+
-+ /* validate the number of interrupts supported */
-+ if (int_vector >= VLYNQ_IVR_MAXIVR)
-+ return VLYNQ_INVALID_ARG;
-+
-+ if(map_vector > (VLYNQ_NUM_INT_BITS - 1) )
-+ return VLYNQ_INVALID_ARG;
-+
-+ if (dev_type == VLYNQ_LOCAL_DVC)
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_IVR_OFFSET(int_vector));
-+ }
-+ else
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_R_IVR_OFFSET(int_vector));
-+ }
-+
-+ /* Update the intVector<==> bit position translation table */
-+ pdev->vector_map[map_vector] = int_vector;
-+
-+ /** val has been initialised to zero. we only have to turn on
-+ * appropriate bits*/
-+ val |= map_vector;
-+
-+ /** clear the correct byte position and then or val **/
-+ *vecreg = (*vecreg) & ( ~(bytemask << ( (int_vector %4)*8) ) );
-+
-+ /** write to correct byte position in vecreg*/
-+ *vecreg = (*vecreg) | (val << ( (int_vector % 4)*8) ) ;
-+
-+ return VLYNQ_SUCCESS;
-+}
-+
-+
-+/* ----------------------------------------------------------------------------
-+ * function : vlynq_interrupt_set_polarity()
-+ * description:configures interrupt polarity .
-+ */
-+int
-+vlynq_interrupt_set_polarity( VLYNQ_DEV *pdev ,
-+ VLYNQ_DEV_TYPE dev_type,
-+ unsigned int map_vector,
-+ VLYNQ_INTR_POLARITY pol)
-+{
-+ volatile unsigned int * vecreg;
-+ int int_vector;
-+ unsigned int val=0;
-+ unsigned int bytemask=0x20; /** mask to turn off bits corresponding to int polarity */
-+
-+ /* get the int_vector from map_vector */
-+ int_vector = pdev->vector_map[map_vector];
-+
-+ if(int_vector == -1)
-+ return VLYNQ_INTVEC_MAP_NOT_FOUND;
-+
-+ /* use the lower 8 bits of val to set the value , shift it to
-+ * appropriate byte position in the ivr and write it to the
-+ * corresponding register */
-+
-+ if (dev_type == VLYNQ_LOCAL_DVC)
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_IVR_OFFSET(int_vector));
-+ }
-+ else
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_R_IVR_OFFSET(int_vector));
-+ }
-+
-+ /* val has been initialised to zero. we only have to turn on
-+ * appropriate bits, if need be*/
-+
-+ /** clear the correct byte position and then or val **/
-+ *vecreg = (*vecreg) & ( ~(bytemask << ( (int_vector %4)*8) ) );
-+
-+ if( pol == VLYNQ_INTR_ACTIVE_LOW)
-+ {
-+ val |= VLYNQ_IVR_INTPOL_MASK;
-+ /** write to correct byte position in vecreg*/
-+ *vecreg = (*vecreg) | (val << ( (int_vector % 4)*8) ) ;
-+ }
-+
-+ return VLYNQ_SUCCESS;
-+}
-+
-+int vlynq_interrupt_get_polarity( VLYNQ_DEV *pdev ,
-+ VLYNQ_DEV_TYPE dev_type,
-+ unsigned int map_vector)
-+{
-+ volatile unsigned int * vecreg;
-+ int int_vector;
-+ unsigned int val=0;
-+
-+ /* get the int_vector from map_vector */
-+ int_vector = pdev->vector_map[map_vector];
-+
-+ if (map_vector > (VLYNQ_NUM_INT_BITS-1))
-+ return(-1);
-+
-+ if(int_vector == -1)
-+ return VLYNQ_INTVEC_MAP_NOT_FOUND;
-+
-+ /* use the lower 8 bits of val to set the value , shift it to
-+ * appropriate byte position in the ivr and write it to the
-+ * corresponding register */
-+
-+ if (dev_type == VLYNQ_LOCAL_DVC)
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_IVR_OFFSET(int_vector));
-+ }
-+ else
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_R_IVR_OFFSET(int_vector));
-+ }
-+
-+ /** read the information into val **/
-+ val = (*vecreg) & ((VLYNQ_IVR_INTPOL_MASK << ( (int_vector %4)*8) ) );
-+
-+ return (val ? (VLYNQ_INTR_ACTIVE_LOW) : (VLYNQ_INTR_ACTIVE_HIGH));
-+}
-+
-+
-+/* ----------------------------------------------------------------------------
-+ * function : vlynq_interrupt_set_type()
-+ * description:configures interrupt type .
-+ */
-+int vlynq_interrupt_set_type( VLYNQ_DEV *pdev,
-+ VLYNQ_DEV_TYPE dev_type,
-+ unsigned int map_vector,
-+ VLYNQ_INTR_TYPE type)
-+{
-+ volatile unsigned int * vecreg;
-+ unsigned int val=0;
-+ int int_vector;
-+
-+ /** mask to turn off bits corresponding to interrupt type */
-+ unsigned int bytemask=0x40;
-+
-+ /* get the int_vector from map_vector */
-+ int_vector = pdev->vector_map[map_vector];
-+ if(int_vector == -1)
-+ return VLYNQ_INTVEC_MAP_NOT_FOUND;
-+
-+ /* use the lower 8 bits of val to set the value , shift it to
-+ * appropriate byte position in the ivr and write it to the
-+ * corresponding register */
-+ if (dev_type == VLYNQ_LOCAL_DVC)
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_IVR_OFFSET(int_vector));
-+ }
-+ else
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_R_IVR_OFFSET(int_vector));
-+ }
-+
-+ /** val has been initialised to zero. we only have to turn on
-+ * appropriate bits if need be*/
-+
-+ /** clear the correct byte position and then or val **/
-+ *vecreg = (*vecreg) & ( ~(bytemask << ( (int_vector %4)*8) ) );
-+
-+ if( type == VLYNQ_INTR_PULSED)
-+ {
-+ val |= VLYNQ_IVR_INTTYPE_MASK;
-+ /** write to correct byte position in vecreg*/
-+ *vecreg = (*vecreg) | (val << ( (int_vector % 4)*8) ) ;
-+ }
-+
-+ return VLYNQ_SUCCESS;
-+}
-+
-+/* ----------------------------------------------------------------------------
-+ * function : vlynq_interrupt_get_type()
-+ * description:returns interrupt type .
-+ */
-+int vlynq_interrupt_get_type( VLYNQ_DEV *pdev, VLYNQ_DEV_TYPE dev_type,
-+ unsigned int map_vector)
-+{
-+ volatile unsigned int * vecreg;
-+ unsigned int val=0;
-+ int int_vector;
-+
-+ if (map_vector > (VLYNQ_NUM_INT_BITS-1))
-+ return(-1);
-+
-+ /* get the int_vector from map_vector */
-+ int_vector = pdev->vector_map[map_vector];
-+ if(int_vector == -1)
-+ return VLYNQ_INTVEC_MAP_NOT_FOUND;
-+
-+ /* use the lower 8 bits of val to set the value , shift it to
-+ * appropriate byte position in the ivr and write it to the
-+ * corresponding register */
-+ if (dev_type == VLYNQ_LOCAL_DVC)
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_IVR_OFFSET(int_vector));
-+ }
-+ else
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_R_IVR_OFFSET(int_vector));
-+ }
-+
-+ /** Read the correct bit position into val **/
-+ val = (*vecreg) & ((VLYNQ_IVR_INTTYPE_MASK << ( (int_vector %4)*8) ) );
-+
-+ return (val ? (VLYNQ_INTR_PULSED) : (VLYNQ_INTR_LEVEL));
-+}
-+
-+/* ----------------------------------------------------------------------------
-+ * function : vlynq_interrupt_enable()
-+ * description:Enable interrupt by writing to IVR register.
-+ */
-+int vlynq_interrupt_enable( VLYNQ_DEV *pdev,
-+ VLYNQ_DEV_TYPE dev_type,
-+ unsigned int map_vector)
-+{
-+ volatile unsigned int * vecreg;
-+ unsigned int val=0;
-+ int int_vector;
-+
-+ /** mask to turn off bits corresponding to interrupt enable */
-+ unsigned int bytemask=0x80;
-+
-+ /* get the int_vector from map_vector */
-+ int_vector = pdev->vector_map[map_vector];
-+ if(int_vector == -1)
-+ return VLYNQ_INTVEC_MAP_NOT_FOUND;
-+
-+ /* use the lower 8 bits of val to set the value , shift it to
-+ * appropriate byte position in the ivr and write it to the
-+ * corresponding register */
-+
-+ if (dev_type == VLYNQ_LOCAL_DVC)
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_IVR_OFFSET(int_vector));
-+ }
-+ else
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_R_IVR_OFFSET(int_vector));
-+ }
-+
-+ /** val has been initialised to zero. we only have to turn on
-+ * bit corresponding to interrupt enable*/
-+ val |= VLYNQ_IVR_INTEN_MASK;
-+
-+ /** clear the correct byte position and then or val **/
-+ *vecreg = (*vecreg) & ( ~(bytemask << ( (int_vector %4)*8) ) );
-+
-+ /** write to correct byte position in vecreg*/
-+ *vecreg = (*vecreg) | (val << ( (int_vector % 4)*8) ) ;
-+
-+ return VLYNQ_SUCCESS;
-+}
-+
-+
-+/* ----------------------------------------------------------------------------
-+ * function : vlynq_interrupt_disable()
-+ * description:Disable interrupt by writing to IVR register.
-+ */
-+int
-+vlynq_interrupt_disable( VLYNQ_DEV *pdev,
-+ VLYNQ_DEV_TYPE dev_type,
-+ unsigned int map_vector)
-+{
-+ volatile unsigned int * vecreg;
-+ int int_vector;
-+
-+ /** mask to turn off bits corresponding to interrupt enable */
-+ unsigned int bytemask=0x80;
-+
-+ /* get the int_vector from map_vector */
-+ int_vector = pdev->vector_map[map_vector];
-+ if(int_vector == -1)
-+ return VLYNQ_INTVEC_MAP_NOT_FOUND;
-+
-+ /* use the lower 8 bits of val to set the value , shift it to
-+ * appropriate byte position in the ivr and write it to the
-+ * corresponding register */
-+ if (dev_type == VLYNQ_LOCAL_DVC)
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_IVR_OFFSET(int_vector));
-+ }
-+ else
-+ {
-+ vecreg = (volatile unsigned int *) (VLYNQ_R_IVR_OFFSET(int_vector));
-+ }
-+
-+ /* We disable the interrupt by simply turning off the bit
-+ * corresponding to Interrupt enable.
-+ * Clear the interrupt enable bit in the correct byte position **/
-+ *vecreg = (*vecreg) & ( ~(bytemask << ( (int_vector %4)*8) ) );
-+
-+ /* Dont have to set any bit positions */
-+
-+ return VLYNQ_SUCCESS;
-+
-+}
-+
-+
-+
-+
-diff -urN linux.old/drivers/char/serial.c linux.dev/drivers/char/serial.c
---- linux.old/drivers/char/serial.c 2005-10-21 16:43:20.709226000 +0200
-+++ linux.dev/drivers/char/serial.c 2005-11-10 01:10:46.015585250 +0100
-@@ -419,7 +419,40 @@
- return 0;
- }
-
--#if defined(CONFIG_MIPS_ATLAS) || defined(CONFIG_MIPS_SEAD)
-+#if defined(CONFIG_AR7)
-+
-+static _INLINE_ unsigned int serial_in(struct async_struct *info, int offset)
-+{
-+ return (inb(info->port + (offset * 4)) & 0xff);
-+}
-+
-+
-+static _INLINE_ unsigned int serial_inp(struct async_struct *info, int offset)
-+{
-+#ifdef CONFIG_SERIAL_NOPAUSE_IO
-+ return (inb(info->port + (offset * 4)) & 0xff);
-+#else
-+ return (inb_p(info->port + (offset * 4)) & 0xff);
-+#endif
-+}
-+
-+static _INLINE_ void serial_out(struct async_struct *info, int offset, int value)
-+{
-+ outb(value, info->port + (offset * 4));
-+}
-+
-+
-+static _INLINE_ void serial_outp(struct async_struct *info, int offset,
-+ int value)
-+{
-+#ifdef CONFIG_SERIAL_NOPAUSE_IO
-+ outb(value, info->port + (offset * 4));
-+#else
-+ outb_p(value, info->port + (offset * 4));
-+#endif
-+}
-+
-+#elif defined(CONFIG_MIPS_ATLAS) || defined(CONFIG_MIPS_SEAD)
-
- #include <asm/mips-boards/atlas.h>
-
-@@ -478,8 +511,10 @@
- * needed for certain old 386 machines, I've left these #define's
- * in....
- */
-+#ifndef CONFIG_AR7
- #define serial_inp(info, offset) serial_in(info, offset)
- #define serial_outp(info, offset, value) serial_out(info, offset, value)
-+#endif
-
-
- /*
-@@ -1728,7 +1763,15 @@
- /* Special case since 134 is really 134.5 */
- quot = (2*baud_base / 269);
- else if (baud)
-+#ifdef CONFIG_AR7
-+ quot = (CONFIG_AR7_SYS*500000) / baud;
-+
-+ if ((quot%16)>7)
-+ quot += 8;
-+ quot /=16;
-+#else
- quot = baud_base / baud;
-+#endif
- }
- /* If the quotient is zero refuse the change */
- if (!quot && old_termios) {
-@@ -5540,8 +5583,10 @@
- state->irq = irq_cannonicalize(state->irq);
- if (state->hub6)
- state->io_type = SERIAL_IO_HUB6;
-+#ifndef CONFIG_AR7
- if (state->port && check_region(state->port,8))
- continue;
-+#endif
- #ifdef CONFIG_MCA
- if ((state->flags & ASYNC_BOOT_ONLYMCA) && !MCA_bus)
- continue;
-@@ -5997,7 +6042,15 @@
- info->io_type = state->io_type;
- info->iomem_base = state->iomem_base;
- info->iomem_reg_shift = state->iomem_reg_shift;
-+#ifdef CONFIG_AR7
-+ quot = (CONFIG_AR7_SYS*500000) / baud;
-+
-+ if ((quot%16)>7)
-+ quot += 8;
-+ quot /=16;
-+#else
- quot = state->baud_base / baud;
-+#endif
- cval = cflag & (CSIZE | CSTOPB);
- #if defined(__powerpc__) || defined(__alpha__)
- cval >>= 8;
-diff -urN linux.old/drivers/char/ticfg/Makefile linux.dev/drivers/char/ticfg/Makefile
---- linux.old/drivers/char/ticfg/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/char/ticfg/Makefile 2005-11-10 01:10:46.051587500 +0100
-@@ -0,0 +1,6 @@
-+
-+O_TARGET := ticfg.o
-+
-+obj-$(CONFIG_AR7_ADAM2) := adam2_env.o
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux.old/drivers/char/ticfg/adam2_env.c linux.dev/drivers/char/ticfg/adam2_env.c
---- linux.old/drivers/char/ticfg/adam2_env.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/char/ticfg/adam2_env.c 2005-11-10 01:10:46.051587500 +0100
-@@ -0,0 +1,85 @@
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/proc_fs.h>
-+#include <linux/fcntl.h>
-+#include <linux/init.h>
-+
-+#include <asm/ar7/adam2_env.h>
-+
-+#undef ADAM2_ENV_DEBUG
-+
-+#ifdef ADAM2_ENV_DEBUG
-+#define DPRINTK(args...) do { printk(args); } while(0);
-+#else
-+#define DPRINTK(args...) do { } while(0);
-+#endif
-+
-+#define ADAM2_ENV_DIR "ticfg"
-+#define ADAM2_ENV_NAME "env"
-+
-+static struct proc_dir_entry *adam2_env_proc_dir;
-+static struct proc_dir_entry *adam2_env_proc_ent;
-+
-+static int
-+adam2_proc_read_env(char *page, char **start, off_t pos, int count,
-+ int *eof, void *data)
-+{
-+ int len;
-+ t_env_var *env;
-+
-+ if (pos > 0)
-+ return 0;
-+
-+ len=0;
-+ for (env = prom_iterenv(0); env; env = prom_iterenv(env)) {
-+ if (env->val) {
-+ /* XXX check for page len */
-+ len += sprintf(page + len, "%s\t%s\n",
-+ env->name, env->val);
-+ }
-+ }
-+
-+ *eof=1;
-+ return len;
-+}
-+
-+static int __init
-+adam2_env_init(void)
-+{
-+
-+ DPRINTK("%s\n", __FUNCTION__);
-+
-+ adam2_env_proc_dir = proc_mkdir(ADAM2_ENV_DIR, NULL);
-+ if (!adam2_env_proc_dir) {
-+ printk(KERN_ERR "%s: Unable to create /proc/%s entry\n",
-+ __FUNCTION__, ADAM2_ENV_DIR);
-+ return -ENOMEM;
-+ }
-+
-+ adam2_env_proc_ent =
-+ create_proc_entry(ADAM2_ENV_NAME, 0444, adam2_env_proc_dir);
-+ if (!adam2_env_proc_ent) {
-+ printk(KERN_ERR "%s: Unable to create /proc/%s/%s entry\n",
-+ __FUNCTION__, ADAM2_ENV_DIR, ADAM2_ENV_NAME);
-+ remove_proc_entry(ADAM2_ENV_DIR, NULL);
-+ return -ENOMEM;
-+ }
-+ adam2_env_proc_ent->read_proc = adam2_proc_read_env;
-+
-+ return 0;
-+}
-+
-+static
-+void __exit
-+adam2_env_cleanup(void)
-+{
-+ remove_proc_entry(ADAM2_ENV_NAME, adam2_env_proc_dir);
-+ remove_proc_entry(ADAM2_ENV_DIR, NULL);
-+}
-+
-+module_init(adam2_env_init);
-+module_exit(adam2_env_cleanup);
-+
-+MODULE_LICENSE("GPL");
-diff -urN linux.old/include/asm-mips/addrspace.h linux.dev/include/asm-mips/addrspace.h
---- linux.old/include/asm-mips/addrspace.h 2002-11-29 00:53:15.000000000 +0100
-+++ linux.dev/include/asm-mips/addrspace.h 2005-11-10 01:14:16.400733500 +0100
-@@ -11,6 +11,8 @@
- #ifndef __ASM_MIPS_ADDRSPACE_H
- #define __ASM_MIPS_ADDRSPACE_H
-
-+#include <linux/config.h>
-+
- /*
- * Configure language
- */
-@@ -102,4 +104,11 @@
- #define XKPHYS_TO_PHYS(p) ((p) & TO_PHYS_MASK)
- #define PHYS_TO_XKPHYS(cm,a) (0x8000000000000000 | ((cm)<<59) | (a))
-
-+#ifdef CONFIG_AR7_MEMORY
-+#define PHYS_OFFSET ((unsigned long)(CONFIG_AR7_MEMORY))
-+#else
-+#define PHYS_OFFSET (0)
-+#endif
-+#define PHYS_PFN_OFFSET (PHYS_OFFSET >> PAGE_SHIFT)
-+
- #endif /* __ASM_MIPS_ADDRSPACE_H */
-diff -urN linux.old/include/asm-mips/ar7/adam2_env.h linux.dev/include/asm-mips/ar7/adam2_env.h
---- linux.old/include/asm-mips/ar7/adam2_env.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/adam2_env.h 2005-11-10 01:10:46.067588500 +0100
-@@ -0,0 +1,13 @@
-+#ifndef _INCLUDE_ASM_AR7_ADAM2_ENV_H_
-+#define _INCLUDE_ASM_AR7_ADAM2_ENV_H_
-+
-+/* Environment variable */
-+typedef struct {
-+ char *name;
-+ char *val;
-+} t_env_var;
-+
-+char *prom_getenv(char *);
-+t_env_var *prom_iterenv(t_env_var *);
-+
-+#endif /* _INCLUDE_ASM_AR7_ADAM2_ENV_H_ */
-diff -urN linux.old/include/asm-mips/ar7/ar7.h linux.dev/include/asm-mips/ar7/ar7.h
---- linux.old/include/asm-mips/ar7/ar7.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/ar7.h 2005-11-10 01:10:46.067588500 +0100
-@@ -0,0 +1,33 @@
-+/*
-+ * $Id$
-+ * Copyright (C) $Date$ $Author$
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-+ *
-+ */
-+
-+#ifndef _AR7_H
-+#define _AR7_H
-+
-+#include <asm/addrspace.h>
-+#include <linux/config.h>
-+
-+#define AVALANCHE_VECS_KSEG0 (KSEG0ADDR(CONFIG_AR7_MEMORY))
-+
-+#define AR7_UART0_REGS_BASE (KSEG1ADDR(0x08610E00))
-+#define AR7_UART1_REGS_BASE (KSEG1ADDR(0x08610F00))
-+#define AR7_BASE_BAUD ( 3686400 / 16 )
-+
-+#endif
-diff -urN linux.old/include/asm-mips/ar7/avalanche_intc.h linux.dev/include/asm-mips/ar7/avalanche_intc.h
---- linux.old/include/asm-mips/ar7/avalanche_intc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/avalanche_intc.h 2005-11-10 01:10:46.067588500 +0100
-@@ -0,0 +1,292 @@
-+ /*
-+ * Nitin Dhingra, iamnd@ti.com
-+ * Copyright (C) 2000 Texas Instruments Inc.
-+ *
-+ *
-+ * ########################################################################
-+ *
-+ * This program is free software; you can distribute it and/or modify it
-+ * under the terms of the GNU General Public License (Version 2) as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope 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.
-+ *
-+ * ########################################################################
-+ *
-+ * Defines of the Sead board specific address-MAP, registers, etc.
-+ *
-+ */
-+#ifndef _AVALANCHE_INTC_H
-+#define _AVALANCHE_INTC_H
-+
-+#include <linux/config.h>
-+
-+/* ----- */
-+
-+#define KSEG1_BASE 0xA0000000
-+#define KSEG_INV_MASK 0x1FFFFFFF /* Inverted mask for kseg address */
-+#define PHYS_ADDR(addr) ((addr) & KSEG_INV_MASK)
-+#define PHYS_TO_K1(addr) (PHYS_ADDR(addr)|KSEG1_BASE)
-+#define AVALANCHE_INTC_BASE PHYS_TO_K1(0x08612400)
-+
-+/* ----- */
-+
-+#define MIPS_EXCEPTION_OFFSET 8
-+
-+/******************************************************************************
-+ Avalanche Interrupt number
-+******************************************************************************/
-+#define AVINTNUM(x) ((x) - MIPS_EXCEPTION_OFFSET)
-+
-+/*******************************************************************************
-+*Linux Interrupt number
-+*******************************************************************************/
-+#define LNXINTNUM(x)((x) + MIPS_EXCEPTION_OFFSET)
-+
-+
-+
-+#define AVALANCHE_INT_END_PRIMARY (40 + MIPS_EXCEPTION_OFFSET)
-+#define AVALANCHE_INT_END_SECONDARY (32 + MIPS_EXCEPTION_OFFSET)
-+
-+#define AVALANCHE_INT_END_PRIMARY_REG1 (31 + MIPS_EXCEPTION_OFFSET)
-+#define AVALANCHE_INT_END_PRIMARY_REG2 (39 + MIPS_EXCEPTION_OFFSET)
-+
-+#define AVALANCHE_INTC_END (AVINTNUM(AVALANCHE_INT_END_PRIMARY) + \
-+ AVINTNUM(AVALANCHE_INT_END_SECONDARY) + \
-+ MIPS_EXCEPTION_OFFSET)
-+
-+#if defined(CONFIG_AR7_VLYNQ)
-+#define AVALANCHE_INT_END_LOW_VLYNQ (AVALANCHE_INTC_END + 32)
-+#define AVALANCHE_INT_END_VLYNQ (AVALANCHE_INTC_END + 32 * CONFIG_AR7_VLYNQ_PORTS)
-+#define AVALANCHE_INT_END AVALANCHE_INT_END_VLYNQ
-+#else
-+#define AVALANCHE_INT_END AVALANCHE_INTC_END
-+#endif
-+
-+
-+/*
-+ * Avalanche interrupt controller register base (primary)
-+ */
-+#define AVALANCHE_ICTRL_REGS_BASE AVALANCHE_INTC_BASE
-+
-+/******************************************************************************
-+ * Avalanche exception controller register base (secondary)
-+ ******************************************************************************/
-+#define AVALANCHE_ECTRL_REGS_BASE (AVALANCHE_ICTRL_REGS_BASE + 0x80)
-+
-+
-+/******************************************************************************
-+ * Avalanche Interrupt pacing register base (secondary)
-+ ******************************************************************************/
-+#define AVALANCHE_IPACE_REGS_BASE (AVALANCHE_ICTRL_REGS_BASE + 0xA0)
-+
-+
-+
-+/******************************************************************************
-+ * Avalanche Interrupt Channel Control register base
-+ *****************************************************************************/
-+#define AVALANCHE_CHCTRL_REGS_BASE (AVALANCHE_ICTRL_REGS_BASE + 0x200)
-+
-+
-+struct avalanche_ictrl_regs /* Avalanche Interrupt control registers */
-+{
-+ volatile unsigned long intsr1; /* Interrupt Status/Set Register 1 0x00 */
-+ volatile unsigned long intsr2; /* Interrupt Status/Set Register 2 0x04 */
-+ volatile unsigned long unused1; /*0x08 */
-+ volatile unsigned long unused2; /*0x0C */
-+ volatile unsigned long intcr1; /* Interrupt Clear Register 1 0x10 */
-+ volatile unsigned long intcr2; /* Interrupt Clear Register 2 0x14 */
-+ volatile unsigned long unused3; /*0x18 */
-+ volatile unsigned long unused4; /*0x1C */
-+ volatile unsigned long intesr1; /* Interrupt Enable (Set) Register 1 0x20 */
-+ volatile unsigned long intesr2; /* Interrupt Enable (Set) Register 2 0x24 */
-+ volatile unsigned long unused5; /*0x28 */
-+ volatile unsigned long unused6; /*0x2C */
-+ volatile unsigned long intecr1; /* Interrupt Enable Clear Register 1 0x30 */
-+ volatile unsigned long intecr2; /* Interrupt Enable Clear Register 2 0x34 */
-+ volatile unsigned long unused7; /* 0x38 */
-+ volatile unsigned long unused8; /* 0x3c */
-+ volatile unsigned long pintir; /* Priority Interrupt Index Register 0x40 */
-+ volatile unsigned long intmsr; /* Priority Interrupt Mask Index Reg 0x44 */
-+ volatile unsigned long unused9; /* 0x48 */
-+ volatile unsigned long unused10; /* 0x4C */
-+ volatile unsigned long intpolr1; /* Interrupt Polarity Mask register 10x50 */
-+ volatile unsigned long intpolr2; /* Interrupt Polarity Mask register 20x54 */
-+ volatile unsigned long unused11; /* 0x58 */
-+ volatile unsigned long unused12; /*0x5C */
-+ volatile unsigned long inttypr1; /* Interrupt Type Mask register 10x60 */
-+ volatile unsigned long inttypr2; /* Interrupt Type Mask register 20x64 */
-+};
-+
-+struct avalanche_exctrl_regs /* Avalanche Exception control registers */
-+{
-+ volatile unsigned long exsr; /* Exceptions Status/Set register 0x80 */
-+ volatile unsigned long reserved; /*0x84 */
-+ volatile unsigned long excr; /* Exceptions Clear Register 0x88 */
-+ volatile unsigned long reserved1; /*0x8c */
-+ volatile unsigned long exiesr; /* Exceptions Interrupt Enable (set) 0x90 */
-+ volatile unsigned long reserved2; /*0x94 */
-+ volatile unsigned long exiecr; /* Exceptions Interrupt Enable(clear)0x98 */
-+};
-+struct avalanche_ipace_regs
-+{
-+
-+ volatile unsigned long ipacep; /* Interrupt pacing register 0xa0 */
-+ volatile unsigned long ipacemap; /*Interrupt Pacing Map Register 0xa4 */
-+ volatile unsigned long ipacemax; /*Interrupt Pacing Max Register 0xa8 */
-+};
-+struct avalanche_channel_int_number
-+{
-+ volatile unsigned long cintnr0; /* Channel Interrupt Number Register0x200 */
-+ volatile unsigned long cintnr1; /* Channel Interrupt Number Register0x204 */
-+ volatile unsigned long cintnr2; /* Channel Interrupt Number Register0x208 */
-+ volatile unsigned long cintnr3; /* Channel Interrupt Number Register0x20C */
-+ volatile unsigned long cintnr4; /* Channel Interrupt Number Register0x210 */
-+ volatile unsigned long cintnr5; /* Channel Interrupt Number Register0x214 */
-+ volatile unsigned long cintnr6; /* Channel Interrupt Number Register0x218 */
-+ volatile unsigned long cintnr7; /* Channel Interrupt Number Register0x21C */
-+ volatile unsigned long cintnr8; /* Channel Interrupt Number Register0x220 */
-+ volatile unsigned long cintnr9; /* Channel Interrupt Number Register0x224 */
-+ volatile unsigned long cintnr10; /* Channel Interrupt Number Register0x228 */
-+ volatile unsigned long cintnr11; /* Channel Interrupt Number Register0x22C */
-+ volatile unsigned long cintnr12; /* Channel Interrupt Number Register0x230 */
-+ volatile unsigned long cintnr13; /* Channel Interrupt Number Register0x234 */
-+ volatile unsigned long cintnr14; /* Channel Interrupt Number Register0x238 */
-+ volatile unsigned long cintnr15; /* Channel Interrupt Number Register0x23C */
-+ volatile unsigned long cintnr16; /* Channel Interrupt Number Register0x240 */
-+ volatile unsigned long cintnr17; /* Channel Interrupt Number Register0x244 */
-+ volatile unsigned long cintnr18; /* Channel Interrupt Number Register0x248 */
-+ volatile unsigned long cintnr19; /* Channel Interrupt Number Register0x24C */
-+ volatile unsigned long cintnr20; /* Channel Interrupt Number Register0x250 */
-+ volatile unsigned long cintnr21; /* Channel Interrupt Number Register0x254 */
-+ volatile unsigned long cintnr22; /* Channel Interrupt Number Register0x358 */
-+ volatile unsigned long cintnr23; /* Channel Interrupt Number Register0x35C */
-+ volatile unsigned long cintnr24; /* Channel Interrupt Number Register0x260 */
-+ volatile unsigned long cintnr25; /* Channel Interrupt Number Register0x264 */
-+ volatile unsigned long cintnr26; /* Channel Interrupt Number Register0x268 */
-+ volatile unsigned long cintnr27; /* Channel Interrupt Number Register0x26C */
-+ volatile unsigned long cintnr28; /* Channel Interrupt Number Register0x270 */
-+ volatile unsigned long cintnr29; /* Channel Interrupt Number Register0x274 */
-+ volatile unsigned long cintnr30; /* Channel Interrupt Number Register0x278 */
-+ volatile unsigned long cintnr31; /* Channel Interrupt Number Register0x27C */
-+ volatile unsigned long cintnr32; /* Channel Interrupt Number Register0x280 */
-+ volatile unsigned long cintnr33; /* Channel Interrupt Number Register0x284 */
-+ volatile unsigned long cintnr34; /* Channel Interrupt Number Register0x288 */
-+ volatile unsigned long cintnr35; /* Channel Interrupt Number Register0x28C */
-+ volatile unsigned long cintnr36; /* Channel Interrupt Number Register0x290 */
-+ volatile unsigned long cintnr37; /* Channel Interrupt Number Register0x294 */
-+ volatile unsigned long cintnr38; /* Channel Interrupt Number Register0x298 */
-+ volatile unsigned long cintnr39; /* Channel Interrupt Number Register0x29C */
-+};
-+
-+struct avalanche_interrupt_line_to_channel
-+{
-+ unsigned long int_line0; /* Start of primary interrupts */
-+ unsigned long int_line1;
-+ unsigned long int_line2;
-+ unsigned long int_line3;
-+ unsigned long int_line4;
-+ unsigned long int_line5;
-+ unsigned long int_line6;
-+ unsigned long int_line7;
-+ unsigned long int_line8;
-+ unsigned long int_line9;
-+ unsigned long int_line10;
-+ unsigned long int_line11;
-+ unsigned long int_line12;
-+ unsigned long int_line13;
-+ unsigned long int_line14;
-+ unsigned long int_line15;
-+ unsigned long int_line16;
-+ unsigned long int_line17;
-+ unsigned long int_line18;
-+ unsigned long int_line19;
-+ unsigned long int_line20;
-+ unsigned long int_line21;
-+ unsigned long int_line22;
-+ unsigned long int_line23;
-+ unsigned long int_line24;
-+ unsigned long int_line25;
-+ unsigned long int_line26;
-+ unsigned long int_line27;
-+ unsigned long int_line28;
-+ unsigned long int_line29;
-+ unsigned long int_line30;
-+ unsigned long int_line31;
-+ unsigned long int_line32;
-+ unsigned long int_line33;
-+ unsigned long int_line34;
-+ unsigned long int_line35;
-+ unsigned long int_line36;
-+ unsigned long int_line37;
-+ unsigned long int_line38;
-+ unsigned long int_line39;
-+};
-+
-+
-+/* Interrupt Line #'s (Sangam peripherals) */
-+
-+/*------------------------------*/
-+/* Sangam primary interrupts */
-+/*------------------------------*/
-+
-+#define UNIFIED_SECONDARY_INTERRUPT 0
-+#define AVALANCHE_EXT_INT_0 1
-+#define AVALANCHE_EXT_INT_1 2
-+/* Line #3 Reserved */
-+/* Line #4 Reserved */
-+#define AVALANCHE_TIMER_0_INT 5
-+#define AVALANCHE_TIMER_1_INT 6
-+#define AVALANCHE_UART0_INT 7
-+#define AVALANCHE_UART1_INT 8
-+#define AVALANCHE_PDMA_INT0 9
-+#define AVALANCHE_PDMA_INT1 10
-+/* Line #11 Reserved */
-+/* Line #12 Reserved */
-+/* Line #13 Reserved */
-+/* Line #14 Reserved */
-+#define AVALANCHE_ATM_SAR_INT 15
-+/* Line #16 Reserved */
-+/* Line #17 Reserved */
-+/* Line #18 Reserved */
-+#define AVALANCHE_MAC0_INT 19
-+/* Line #20 Reserved */
-+#define AVALANCHE_VLYNQ0_INT 21
-+#define AVALANCHE_CODEC_WAKE_INT 22
-+/* Line #23 Reserved */
-+#define AVALANCHE_USB_INT 24
-+#define AVALANCHE_VLYNQ1_INT 25
-+/* Line #26 Reserved */
-+/* Line #27 Reserved */
-+#define AVALANCHE_MAC1_INT 28
-+#define AVALANCHE_I2CM_INT 29
-+#define AVALANCHE_PDMA_INT2 30
-+#define AVALANCHE_PDMA_INT3 31
-+/* Line #32 Reserved */
-+/* Line #33 Reserved */
-+/* Line #34 Reserved */
-+/* Line #35 Reserved */
-+/* Line #36 Reserved */
-+#define AVALANCHE_VDMA_VT_RX_INT 37
-+#define AVALANCHE_VDMA_VT_TX_INT 38
-+#define AVALANCHE_ADSLSS_INT 39
-+
-+/*-----------------------------------*/
-+/* Sangam Secondary Interrupts */
-+/*-----------------------------------*/
-+#define PRIMARY_INTS 40
-+
-+#define EMIF_INT (7 + PRIMARY_INTS)
-+
-+
-+extern void avalanche_int_set(int channel, int line);
-+
-+
-+#endif /* _AVALANCHE_INTC_H */
-diff -urN linux.old/include/asm-mips/ar7/avalanche_misc.h linux.dev/include/asm-mips/ar7/avalanche_misc.h
---- linux.old/include/asm-mips/ar7/avalanche_misc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/avalanche_misc.h 2005-11-10 01:10:46.067588500 +0100
-@@ -0,0 +1,174 @@
-+#ifndef _AVALANCHE_MISC_H_
-+#define _AVALANCHE_MISC_H_
-+
-+typedef enum AVALANCHE_ERR_t
-+{
-+ AVALANCHE_ERR_OK = 0, /* OK or SUCCESS */
-+ AVALANCHE_ERR_ERROR = -1, /* Unspecified/Generic ERROR */
-+
-+ /* Pointers and args */
-+ AVALANCHE_ERR_INVARG = -2, /* Invaild argument to the call */
-+ AVALANCHE_ERR_NULLPTR = -3, /* NULL pointer */
-+ AVALANCHE_ERR_BADPTR = -4, /* Bad (out of mem) pointer */
-+
-+ /* Memory issues */
-+ AVALANCHE_ERR_ALLOC_FAIL = -10, /* allocation failed */
-+ AVALANCHE_ERR_FREE_FAIL = -11, /* free failed */
-+ AVALANCHE_ERR_MEM_CORRUPT = -12, /* corrupted memory */
-+ AVALANCHE_ERR_BUF_LINK = -13, /* buffer linking failed */
-+
-+ /* Device issues */
-+ AVALANCHE_ERR_DEVICE_TIMEOUT = -20, /* device timeout on read/write */
-+ AVALANCHE_ERR_DEVICE_MALFUNC = -21, /* device malfunction */
-+
-+ AVALANCHE_ERR_INVID = -30 /* Invalid ID */
-+
-+} AVALANCHE_ERR;
-+
-+/*****************************************************************************
-+ * Reset Control Module
-+ *****************************************************************************/
-+
-+typedef enum AVALANCHE_RESET_MODULE_tag
-+{
-+ RESET_MODULE_UART0 = 0,
-+ RESET_MODULE_UART1 = 1,
-+ RESET_MODULE_I2C = 2,
-+ RESET_MODULE_TIMER0 = 3,
-+ RESET_MODULE_TIMER1 = 4,
-+ RESET_MODULE_GPIO = 6,
-+ RESET_MODULE_ADSLSS = 7,
-+ RESET_MODULE_USBS = 8,
-+ RESET_MODULE_SAR = 9,
-+ RESET_MODULE_VDMA_VT = 11,
-+ RESET_MODULE_FSER = 12,
-+ RESET_MODULE_VLYNQ1 = 16,
-+ RESET_MODULE_EMAC0 = 17,
-+ RESET_MODULE_DMA = 18,
-+ RESET_MODULE_BIST = 19,
-+ RESET_MODULE_VLYNQ0 = 20,
-+ RESET_MODULE_EMAC1 = 21,
-+ RESET_MODULE_MDIO = 22,
-+ RESET_MODULE_ADSLSS_DSP = 23,
-+ RESET_MODULE_EPHY = 26
-+} AVALANCHE_RESET_MODULE_T;
-+
-+typedef enum AVALANCHE_RESET_CTRL_tag
-+{
-+ IN_RESET = 0,
-+ OUT_OF_RESET
-+} AVALANCHE_RESET_CTRL_T;
-+
-+typedef enum AVALANCHE_SYS_RST_MODE_tag
-+{
-+ RESET_SOC_WITH_MEMCTRL = 1, /* SW0 bit in SWRCR register */
-+ RESET_SOC_WITHOUT_MEMCTRL = 2 /* SW1 bit in SWRCR register */
-+} AVALANCHE_SYS_RST_MODE_T;
-+
-+typedef enum AVALANCHE_SYS_RESET_STATUS_tag
-+{
-+ HARDWARE_RESET = 0,
-+ SOFTWARE_RESET0, /* Caused by writing 1 to SW0 bit in SWRCR register */
-+ WATCHDOG_RESET,
-+ SOFTWARE_RESET1 /* Caused by writing 1 to SW1 bit in SWRCR register */
-+} AVALANCHE_SYS_RESET_STATUS_T;
-+
-+AVALANCHE_RESET_CTRL_T avalanche_get_reset_status(AVALANCHE_RESET_MODULE_T reset_module);
-+void avalanche_sys_reset(AVALANCHE_SYS_RST_MODE_T mode);
-+AVALANCHE_SYS_RESET_STATUS_T avalanche_get_sys_last_reset_status(void);
-+
-+typedef int (*REMOTE_VLYNQ_DEV_RESET_CTRL_FN)(unsigned int reset_module, AVALANCHE_RESET_CTRL_T reset_ctrl);
-+
-+/*****************************************************************************
-+ * Power Control Module
-+ *****************************************************************************/
-+
-+typedef enum AVALANCHE_POWER_CTRL_tag
-+{
-+ POWER_CTRL_POWER_UP = 0,
-+ POWER_CTRL_POWER_DOWN
-+} AVALANCHE_POWER_CTRL_T;
-+
-+typedef enum AVALANCHE_SYS_POWER_MODE_tag
-+{
-+ GLOBAL_POWER_MODE_RUN = 0, /* All system is up */
-+ GLOBAL_POWER_MODE_IDLE, /* MIPS is power down, all peripherals working */
-+ GLOBAL_POWER_MODE_STANDBY, /* Chip in power down, but clock to ADSKL subsystem is running */
-+ GLOBAL_POWER_MODE_POWER_DOWN /* Total chip is powered down */
-+} AVALANCHE_SYS_POWER_MODE_T;
-+
-+void avalanche_power_ctrl(unsigned int power_module, AVALANCHE_POWER_CTRL_T power_ctrl);
-+AVALANCHE_POWER_CTRL_T avalanche_get_power_status(unsigned int power_module);
-+void avalanche_set_global_power_mode(AVALANCHE_SYS_POWER_MODE_T power_mode);
-+AVALANCHE_SYS_POWER_MODE_T avalanche_get_global_power_mode(void);
-+
-+/*****************************************************************************
-+ * Wakeup Control
-+ *****************************************************************************/
-+
-+typedef enum AVALANCHE_WAKEUP_INTERRUPT_tag
-+{
-+ WAKEUP_INT0 = 1,
-+ WAKEUP_INT1 = 2,
-+ WAKEUP_INT2 = 4,
-+ WAKEUP_INT3 = 8
-+} AVALANCHE_WAKEUP_INTERRUPT_T;
-+
-+typedef enum TNETV1050_WAKEUP_CTRL_tag
-+{
-+ WAKEUP_DISABLED = 0,
-+ WAKEUP_ENABLED
-+} AVALANCHE_WAKEUP_CTRL_T;
-+
-+typedef enum TNETV1050_WAKEUP_POLARITY_tag
-+{
-+ WAKEUP_ACTIVE_HIGH = 0,
-+ WAKEUP_ACTIVE_LOW
-+} AVALANCHE_WAKEUP_POLARITY_T;
-+
-+void avalanche_wakeup_ctrl(AVALANCHE_WAKEUP_INTERRUPT_T wakeup_int,
-+ AVALANCHE_WAKEUP_CTRL_T wakeup_ctrl,
-+ AVALANCHE_WAKEUP_POLARITY_T wakeup_polarity);
-+
-+/*****************************************************************************
-+ * GPIO Control
-+ *****************************************************************************/
-+
-+typedef enum AVALANCHE_GPIO_PIN_MODE_tag
-+{
-+ FUNCTIONAL_PIN = 0,
-+ GPIO_PIN = 1
-+} AVALANCHE_GPIO_PIN_MODE_T;
-+
-+typedef enum AVALANCHE_GPIO_PIN_DIRECTION_tag
-+{
-+ GPIO_OUTPUT_PIN = 0,
-+ GPIO_INPUT_PIN = 1
-+} AVALANCHE_GPIO_PIN_DIRECTION_T;
-+
-+typedef enum { GPIO_FALSE, GPIO_TRUE } AVALANCHE_GPIO_BOOL_T;
-+
-+void avalanche_gpio_init(void);
-+int avalanche_gpio_ctrl(unsigned int gpio_pin,
-+ AVALANCHE_GPIO_PIN_MODE_T pin_mode,
-+ AVALANCHE_GPIO_PIN_DIRECTION_T pin_direction);
-+int avalanche_gpio_ctrl_with_link_count(unsigned int gpio_pin,
-+ AVALANCHE_GPIO_PIN_MODE_T pin_mode,
-+ AVALANCHE_GPIO_PIN_DIRECTION_T pin_direction);
-+int avalanche_gpio_out_bit(unsigned int gpio_pin, int value);
-+int avalanche_gpio_in_bit(unsigned int gpio_pin);
-+int avalanche_gpio_out_value(unsigned int out_val, unsigned int set_mask, unsigned int reg_index);
-+int avalanche_gpio_out_value_with_link_count(unsigned int out_val, unsigned int set_mask, unsigned int reg_index);
-+int avalanche_gpio_in_value(unsigned int *in_val, unsigned int reg_index);
-+
-+unsigned int avalanche_get_chip_version_info(void);
-+
-+unsigned int avalanche_get_vbus_freq(void);
-+void avalanche_set_vbus_freq(unsigned int);
-+
-+
-+typedef int (*SET_MDIX_ON_CHIP_FN_T)(unsigned int base_addr, unsigned int operation);
-+int avalanche_set_mdix_on_chip(unsigned int base_addr, unsigned int operation);
-+unsigned int avalanche_is_mdix_on_chip(void);
-+
-+#endif
-diff -urN linux.old/include/asm-mips/ar7/avalanche_regs.h linux.dev/include/asm-mips/ar7/avalanche_regs.h
---- linux.old/include/asm-mips/ar7/avalanche_regs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/avalanche_regs.h 2005-11-10 01:10:46.071588750 +0100
-@@ -0,0 +1,567 @@
-+/*
-+ * $Id$
-+ * Avalanche Register Descriptions
-+ *
-+ * Jeff Harrell, jharrell@ti.com
-+ * 2000 (c) Texas Instruments Inc.
-+ */
-+
-+#ifndef __AVALANCHE_REGS_H
-+#define __AVALANCHE_REGS_H
-+
-+#include <asm/addrspace.h>
-+#include <linux/config.h>
-+
-+/*----------------------------------------*/
-+/* Base offsets within the Avalanche ASIC */
-+/*----------------------------------------*/
-+
-+#define BBIF_SPACE0 (KSEG1ADDR(0x01000000))
-+#define BBIF_SPACE1 (KSEG1ADDR(0x01800000))
-+#define BBIF_CONTROL (KSEG1ADDR(0x02000000))
-+#define ATM_SAR_BASE (KSEG1ADDR(0x03000000))
-+#define USB_MCU_BASE (KSEG1ADDR(0x03400000))
-+#define DES_BASE (KSEG1ADDR(0x08600000))
-+#define ETH_MACA_BASE (KSEG1ADDR(0x08610000))
-+#define ETH_MACB_BASE (KSEG1ADDR(0x08612800))
-+#define MEM_CTRLR_BASE (KSEG1ADDR(0x08610800))
-+#define GPIO_BASE (KSEG1ADDR(0x08610900))
-+#define CLK_CTRL_BASE (KSEG1ADDR(0x08610A00))
-+#define WATCH_DOG_BASE (KSEG1ADDR(0x08610B00))
-+#define TMR1_BASE (KSEG1ADDR(0x08610C00))
-+#define TRM2_BASE (KSEG1ADDR(0x08610D00))
-+#define UARTA_BASE (KSEG1ADDR(0x08610E00))
-+#define UARTB_BASE (KSEG1ADDR(0x08610F00))
-+#define I2C_BASE (KSEG1ADDR(0x08611000))
-+#define DEV_ID_BASE (KSEG1ADDR(0x08611100))
-+#define USB_BASE (KSEG1ADDR(0x08611200))
-+#define PCI_CONFIG_BASE (KSEG1ADDR(0x08611300))
-+#define DMA_BASE (KSEG1ADDR(0x08611400))
-+#define RESET_CTRL_BASE (KSEG1ADDR(0x08611600))
-+#define DSL_IF_BASE (KSEG1ADDR(0x08611B00))
-+#define INT_CTL_BASE (KSEG1ADDR(0x08612400))
-+#define PHY_BASE (KSEG1ADDR(0x1E000000))
-+
-+/*---------------------------------*/
-+/* Device ID, chip version number */
-+/*---------------------------------*/
-+
-+#define AVALANCHE_CHVN (*(volatile unsigned int *)(DEV_ID_BASE+0x14))
-+#define AVALANCHE_DEVID1 (*(volatile unsigned int *)(DEV_ID_BASE+0x18))
-+#define AVALANCHE_DEVID2 (*(volatile unsigned int *)(DEV_ID_BASE+0x1C))
-+
-+/*----------------------------------*/
-+/* Reset Control VW changed to ptrs */
-+/*----------------------------------*/
-+
-+#define AVALANCHE_PRCR (*(volatile unsigned int *)(RESET_CTRL_BASE + 0x0)) /* Peripheral reset control */
-+#define AVALANCHE_SWRCR (*(volatile unsigned int *)(RESET_CTRL_BASE + 0x4)) /* Software reset control */
-+#define AVALANCHE_RSR (*(volatile unsigned int *)(RESET_CTRL_BASE + 0x8)) /* Reset status register */
-+
-+/* reset control bits */
-+
-+#define AV_RST_UART0 (1<<0) /* Brings UART0 out of reset */
-+#define AV_RST_UART1 (1<<1) /* Brings UART1 out of reset */
-+#define AV_RST_IICM (1<<2) /* Brings the I2CM out of reset */
-+#define AV_RST_TIMER0 (1<<3) /* Brings Timer 0 out of reset */
-+#define AV_RST_TIMER1 (1<<4) /* Brings Timer 1 out of reset */
-+#define AV_RST_DES (1<<5) /* Brings the DES module out of reset */
-+#define AV_RST_GPIO (1<<6) /* Brings the GPIO module out of reset (see note below) */
-+/*
-+ JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE
-+ If you reset the GPIO interface all of the directions (i/o) of the UART B
-+ interface pins are inputs and must be reconfigured so as not to lose the
-+ serial console interface
-+ JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE
-+*/
-+#define AV_RST_BBIF (1<<7) /* Brings the Broadband interface out of reset */
-+#define AV_RST_USB (1<<8) /* Brings the USB module out of reset */
-+#define AV_RST_SAR (1<<9) /* Brings the SAR out of reset */
-+#define AV_RST_HDLC (1<<10) /* Brings the HDLC module out of reset */
-+#define AV_RST_PCI (1<<16) /* Brings the PCI module out of reset */
-+#define AV_RST_ETH_MAC0 (1<<17) /* Brings the Ethernet MAC0 out of reset */
-+#define AV_RST_PICO_DMA (1<<18) /* Brings the PICO DMA module out of reset */
-+#define AV_RST_BIST (1<<19) /* Brings the BIST module out of reset */
-+#define AV_RST_DSP (1<<20) /* Brings the DSP sub system out of reset */
-+#define AV_RST_ETH_MAC1 (1<<21) /* Brings the Ethernet MAC1 out of reset */
-+
-+/*----------------------*/
-+/* Physical interfaces */
-+/*----------------------*/
-+
-+/* Phy loopback */
-+#define PHY_LOOPBACK 1
-+
-+
-+/* Phy 0 */
-+#define PHY0BASE (PHY_BASE)
-+#define PHY0RST (*(volatile unsigned char *) (PHY0BASE)) /* reset */
-+#define PHY0CTRL (*(volatile unsigned char *) (PHY0BASE+0x5)) /* control */
-+#define PHY0RACPCTRL (*(volatile unsigned char *) (PHY0BASE+0x50)) /* RACP control/status */
-+#define PHY0TACPCTRL (*(volatile unsigned char *) (PHY0BASE+0x60)) /* TACP idle/unassigned cell hdr */
-+#define PHY0RACPINT (*(volatile unsigned char *) (PHY0BASE+0x51)) /* RACP interrupt enable/Status */
-+
-+
-+/* Phy 1 */
-+
-+#define PHY1BASE (PHY_BASE + 0x100000)
-+#define PHY1RST (*(volatile unsigned char *) (PHY1BASE)) /* reset */
-+#define PHY1CTRL (*(volatile unsigned char *) (PHY1BASE+0x5)) /* control */
-+#define PHY1RACPCTRL (*(volatile unsigned char *) (PHY1BASE+0x50))
-+#define PHY1TACPCTRL (*(volatile unsigned char *) (PHY1BASE+0x60))
-+#define PHY1RACPINT (*(volatile unsigned char *) (PHY1BASE+0x51))
-+
-+/* Phy 2 */
-+
-+#define PHY2BASE (PHY_BASE + 0x200000)
-+#define PHY2RST (*(volatile unsigned char *) (PHY2BASE)) /* reset */
-+#define PHY2CTRL (*(volatile unsigned char *) (PHY2BASE+0x5)) /* control */
-+#define PHY2RACPCTRL (*(volatile unsigned char *) (PHY2BASE+0x50))
-+#define PHY2TACPCTRL (*(volatile unsigned char *) (PHY2BASE+0x60))
-+#define PHY2RACPINT (*(volatile unsigned char *) (PHY2BASE+0x51))
-+
-+/*-------------------*/
-+/* Avalanche ATM SAR */
-+/*-------------------*/
-+
-+#define AVSAR_SYSCONFIG (*(volatile unsigned int*)(ATM_SAR_BASE+0x00000000)) /* SAR system config register */
-+#define AVSAR_SYSSTATUS (*(volatile unsigned int*)(ATM_SAR_BASE+0x00000004)) /* SAR system status register */
-+#define AVSAR_INT_ENABLE (*(volatile unsigned int*)(ATM_SAR_BASE+0x00000008)) /* SAR interrupt enable register */
-+#define AVSAR_CONN_VPI_VCI (*(volatile unsigned int*)(ATM_SAR_BASE+0x0000000c)) /* VPI/VCI connection config */
-+#define AVSAR_CONN_CONFIG (*(volatile unsigned int*)(ATM_SAR_BASE+0x00000010)) /* Connection config register */
-+#define AVSAR_OAM_CONFIG (*(volatile unsigned int*)(ATM_SAR_BASE+0x00000018)) /* OAM configuration register */
-+
-+/* Transmit completion ring registers */
-+
-+#define AVSAR_TCRAPTR (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000100))
-+#define AVSAR_TCRASIZE (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000104))
-+#define AVSAR_TCRAINTTHRESH (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000108))
-+#define AVSAR_TCRATOTENT (*(volatile unsigned int *)(ATM_SAR_BASE+0x0000010c))
-+#define AVSAR_TCRAFREEENT (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000110))
-+#define AVSAR_TCRAPENDENT (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000114))
-+#define AVSAR_TCRAENTINC (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000118))
-+#define AVSAR_TCRBPTR (*(volatile unsigned int *)(ATM_SAR_BASE+0x0000011c))
-+#define AVSAR_TCRBSIZE (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000120))
-+#define AVSAR_TCRBINTTHRESH (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000124))
-+#define AVSAR_TCRBTOTENT (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000128))
-+#define AVSAR_TCRBFREEENT (*(volatile unsigned int *)(ATM_SAR_BASE+0x0000012c))
-+#define AVSAR_TCRBPENDENT (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000130))
-+#define AVSAR_TCRBENTINC (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000134))
-+
-+/* Transmit Queue Packet registers */
-+#define AVSAR_TXQUEUE_PKT0 (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000140))
-+#define AVSAR_TXQUEUE_PKT1 (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000144))
-+#define AVSAR_TXQUEUE_PKT2 (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000148))
-+#define AVSAR_TX_FLUSH (*(volatile unsigned int *)(ATM_SAR_BASE+0x0000014C))
-+/* Receive completion ring registers */
-+
-+#define AVSAR_RCRAPTR (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000200))
-+#define AVSAR_RCRASIZE (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000204))
-+#define AVSAR_RCRAINTTHRESH (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000208))
-+#define AVSAR_RCRATOTENT (*(volatile unsigned int *)(ATM_SAR_BASE+0x0000020c))
-+#define AVSAR_RCRAFREEENT (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000210))
-+#define AVSAR_RCRAPENDENT (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000214))
-+#define AVSAR_RCRAENTINC (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000218))
-+#define AVSAR_RCRBPTR (*(volatile unsigned int *)(ATM_SAR_BASE+0x0000021c))
-+#define AVSAR_RCRBSIZE (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000220))
-+#define AVSAR_RCRBINTTHRESH (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000224))
-+#define AVSAR_RCRBTOTENT (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000228))
-+#define AVSAR_RCRBFREEENT (*(volatile unsigned int *)(ATM_SAR_BASE+0x0000022c))
-+#define AVSAR_RCRBPENDENT (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000230))
-+#define AVSAR_RCRBENTINC (*(volatile unsigned int *)(ATM_SAR_BASE+0x00000234))
-+
-+#define AVSAR_RXFBL_ADD0 (*(volatile unsigned int*)(ATM_SAR_BASE+0x00000240)) /* Rx Free buffer list add 0 */
-+#define AVSAR_RXFBL_ADD1 (*(volatile unsigned int*)(ATM_SAR_BASE+0x00000244)) /* Rx Free buffer list add 1 */
-+#define AVSAR_RXFBL_ADD2 (*(volatile unsigned int*)(ATM_SAR_BASE+0x00000248)) /* Rx Free buffer list add 2 */
-+#define AVSAR_RXFBLSIZE_0 (*(volatile unsigned int*)(ATM_SAR_BASE+0x0000028c)) /* Rx Free buffer list size 0 */
-+#define AVSAR_RXFBLSIZE_1 (*(volatile unsigned int*)(ATM_SAR_BASE+0x0000029c)) /* Rx Free buffer list size 1 */
-+#define AVSAR_RXFBLSIZE_2 (*(volatile unsigned int*)(ATM_SAR_BASE+0x000002ac)) /* Rx Free buffer list size 2 */
-+#define AVSAR_RXFBLSIZE_3 (*(volatile unsigned int*)(ATM_SAR_BASE+0x000002bc)) /* Rx Free buffer list size 3 */
-+
-+
-+#if defined(CONFIG_MIPS_EVM3D) || defined(CONFIG_MIPS_AR5D01) || defined(CONFIG_MIPS_AR5W01)
-+
-+#define AVSAR_SAR_FREQUENCY (*(volatile unsigned int*)(ATM_SAR_BASE+0x00010480))
-+#define AVSAR_OAM_CC_SINK (*(volatile unsigned int*)(ATM_SAR_BASE+0x00010484))
-+#define AVSAR_OAM_AIS_RDI_RX (*(volatile unsigned int*)(ATM_SAR_BASE+0x00010488))
-+#define AVSAR_OAM_CPID0 (*(volatile unsigned int*)(ATM_SAR_BASE+0x000104E0))
-+#define AVSAR_OAM_LLID0 (*(volatile unsigned int*)(ATM_SAR_BASE+0x000104F0))
-+#define AVSAR_OAM_CPID1 (*(volatile unsigned int*)(ATM_SAR_BASE+0x000104E4))
-+#define AVSAR_OAM_LLID1 (*(volatile unsigned int*)(ATM_SAR_BASE+0x000104F4))
-+#define AVSAR_OAM_CPID2 (*(volatile unsigned int*)(ATM_SAR_BASE+0x000104E8))
-+#define AVSAR_OAM_LLID2 (*(volatile unsigned int*)(ATM_SAR_BASE+0x000104F8))
-+#define AVSAR_OAM_CPID3 (*(volatile unsigned int*)(ATM_SAR_BASE+0x000104EC))
-+#define AVSAR_OAM_LLID3 (*(volatile unsigned int*)(ATM_SAR_BASE+0x000104FC))
-+#define AVSAR_OAM_CORR_TAG (*(volatile unsigned int*)(ATM_SAR_BASE+0x00010500))
-+#define AVSAR_OAM_FAR_COUNT (*(volatile unsigned int*)(ATM_SAR_BASE+0x00010520))
-+#define AVSAR_OAM_NEAR_COUNT (*(volatile unsigned int*)(ATM_SAR_BASE+0x00010540))
-+#define AVSAR_OAM_CONFIG_REG (*(volatile unsigned int*)(ATM_SAR_BASE+0x00000018))
-+#define AVSAR_FAIRNESS_REG (*(volatile unsigned int*)(ATM_SAR_BASE+0x000104B8))
-+#define AVSAR_UBR_PCR_REG (*(volatile unsigned int*)(ATM_SAR_BASE+0x00010490))
-+
-+
-+/*
-+
-+#define OAM_CPID_ADD 0xa30104e0
-+
-+#define OAM_LLID_ADD 0xa30104f0
-+
-+#define OAM_LLID_VAL 0xffffffff
-+
-+#define OAM_CORR_TAG 0xa3010500
-+
-+#define OAM_FAR_COUNT_ADD 0xa3010520
-+
-+#define OAM_NEAR_COUNT_ADD 0xa3010540
-+
-+#define OAM_CONFIG_REG_ADD 0xa3000018
-+*/
-+
-+
-+#else /* CONFIG_MIPS_EVM3 || CONFIG_MIPS_ACPEP */
-+
-+#define AVSAR_SAR_FREQUENCY (*(volatile unsigned int*)(ATM_SAR_BASE+0x00012000))
-+#define AVSAR_OAM_CC_SINK (*(volatile unsigned int*)(ATM_SAR_BASE+0x00012004))
-+#define AVSAR_OAM_AIS_RDI_RX (*(volatile unsigned int*)(ATM_SAR_BASE+0x00012008))
-+#define AVSAR_OAM_CPID (*(volatile unsigned int*)(ATM_SAR_BASE+0x00012300))
-+
-+#endif /* CONFIG_MIPS_EVM3D || CONFIG_MIPS_AR5D01 || CONFIG_MIPS_AR5W01 */
-+
-+
-+#define AVSAR_STATE_RAM (ATM_SAR_BASE + 0x010000) /* SAR state RAM */
-+#define AVSAR_PDSP_BASE (ATM_SAR_BASE + 0x020000) /* SAR PDSP base address */
-+#define AVSAR_TXDMA_BASE (ATM_SAR_BASE + 0x030000) /* Transmit DMA state base */
-+#define AVSAR_TDMASTATE6 0x18 /* Transmit DMA state word 6 */
-+#define AVSAR_RXDMA_BASE (ATM_SAR_BASE + 0x040000) /* Receive DMA state base */
-+#define AVSAR_RDMASTATE0 0x0 /* Receive DMA state word 0 */
-+
-+/*------------------------------------------*/
-+/* DSL Interface */
-+/*------------------------------------------*/
-+
-+#define AVDSL_TX_EN (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000000))
-+#define AVDSL_RX_EN (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000004))
-+#define AVDSL_POLL (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000008))
-+
-+/* Fast */
-+
-+#define AVDSL_TX_FIFO_ADDR0 (*(volatile unsigned int *)(DSL_IF_BASE + 0x0000000C))
-+#define AVDSL_TX_FIFO_BASE0 (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000010))
-+#define AVDSL_TX_FIFO_LEN0 (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000014))
-+#define AVDSL_TX_FIFO_PR0 (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000018))
-+#define AVDSL_RX_FIFO_ADDR0 (*(volatile unsigned int *)(DSL_IF_BASE + 0x0000001C))
-+#define AVDSL_RX_FIFO_BASE0 (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000020))
-+#define AVDSL_RX_FIFO_LEN0 (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000024))
-+#define AVDSL_RX_FIFO_PR0 (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000028))
-+
-+/* Interleaved */
-+
-+#define AVDSL_TX_FIFO_ADDR1 (*(volatile unsigned int *)(DSL_IF_BASE + 0x0000002C))
-+#define AVDSL_TX_FIFO_BASE1 (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000030))
-+#define AVDSL_TX_FIFO_LEN1 (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000034))
-+#define AVDSL_TX_FIFO_PR1 (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000038))
-+#define AVDSL_RX_FIFO_ADDR1 (*(volatile unsigned int *)(DSL_IF_BASE + 0x0000003C))
-+#define AVDSL_RX_FIFO_BASE1 (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000040))
-+#define AVDSL_RX_FIFO_LEN1 (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000044))
-+#define AVDSL_RX_FIFO_PR1 (*(volatile unsigned int *)(DSL_IF_BASE + 0x00000048))
-+
-+/*------------------------------------------*/
-+/* Broadband I/F */
-+/*------------------------------------------*/
-+
-+#define AVBBIF_BBIF_CNTRL (*(volatile unsigned int *)(BBIF_CONTROL + 0x00000000))
-+#define AVBBIF_ADDR_TRANS_0 (*(volatile unsigned int *)(BBIF_CONTROL + 0x00000004))
-+#define AVBBIF_ADDR_TRANS_1 (*(volatile unsigned int *)(BBIF_CONTROL + 0x00000008))
-+#define AVBBIF_ADDR_XB_MX_BL (*(volatile unsigned int *)(BBIF_CONTROL + 0x0000000C))
-+#define AVBBIF_INFIFO_LVL (*(volatile unsigned int *)(BBIF_CONTROL + 0x00000010))
-+#define AVBBIF_OUTFIFO_LVL (*(volatile unsigned int *)(BBIF_CONTROL + 0x00000014))
-+
-+#define AVBBIF_DISABLED 0x0
-+#define AVBBIF_LBT4040_INT 0x1
-+#define AVBBIF_XBUS 0x2
-+#define AVBBIF_LBT4040_EXT 0x4
-+
-+#define AVBBIF_ADDR_MASK0 0xff000000 /* handles upper bits of BBIF 0 address */
-+#define AVBBIF_ADDR_MASK1 0xff800000 /* handles upper bits of BBIF 1 address */
-+#define AVBBIF_TRANS_MASK 0xff000000
-+/*------------------------------------------*/
-+/* GPIO I/F */
-+/*------------------------------------------*/
-+
-+#define GPIO_DATA_INPUT (*(volatile unsigned int *)(GPIO_BASE + 0x00000000))
-+#define GPIO_DATA_OUTPUT (*(volatile unsigned int *)(GPIO_BASE + 0x00000004))
-+#define GPIO_DATA_DIR (*(volatile unsigned int *)(GPIO_BASE + 0x00000008)) /* 0=output 1=input */
-+#define GPIO_DATA_ENABLE (*(volatile unsigned int *)(GPIO_BASE + 0x0000000C)) /* 0=GPIO Mux 1=GPIO */
-+
-+#define GPIO_0 (1<<21)
-+#define GPIO_1 (1<<22)
-+#define GPIO_2 (1<<23)
-+#define GPIO_3 (1<<24)
-+#define EINT_1 (1<<18)
-+
-+/*
-+ JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE
-+ If you reset the GPIO interface all of the directions (i/o) of the UART B
-+ interface pins are inputs and must be reconfigured so as not to lose the
-+ serial console interface
-+ JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE JAH NOTE
-+*/
-+
-+/*------------------------------------------*/
-+/* CLK_CTRL */
-+/*------------------------------------------*/
-+#define PERIPH_CLK_CTL (*(volatile unsigned int *)(CLK_CTRL_BASE + 0x00000004))
-+
-+#define PCLK_0_HALF_VBUS (0<<16)
-+#define PCLK_EQ_INPUT (1<<16)
-+#define BBIF_CLK_HALF_VBUS (0<<17)
-+#define BBIF_CLK_EQ_VBUS (1<<17)
-+#define BBIF_CLK_EQ_BBCLK (3<<17)
-+#define DSP_MODCLK_DSPCLKI (0<<20)
-+#define DSP_MODCLK_REFCLKI (1<<20)
-+#define USB_CLK_EQ_USBCLKI (0<<21)
-+#define USB_CLK_EQ_REFCLKI (1<<21)
-+
-+/*------------------------------------------*/
-+/* PCI Control Registers */
-+/*------------------------------------------*/
-+#define PCIC_CONTROL (*(volatile unsigned int *)(PCI_CONFIG_BASE))
-+#define PCIC_CONTROL_CFG_DONE (1<<0)
-+#define PCIC_CONTROL_DIS_SLAVE_TO (1<<1)
-+#define PCIC_CONTROL_FORCE_DELAY_READ (1<<2)
-+#define PCIC_CONTROL_FORCE_DELAY_READ_LINE (1<<3)
-+#define PCIC_CONTROL_FORCE_DELAY_READ_MULT (1<<4)
-+#define PCIC_CONTROL_MEM_SPACE_EN (1<<5)
-+#define PCIC_CONTROL_MEM_MASK (1<<6)
-+#define PCIC_CONTROL_IO_SPACE_EN (1<<7)
-+#define PCIC_CONTROL_IO_MASK (1<<8)
-+/* PCIC_CONTROL_RESERVED (1<<9) */
-+#define PCIC_CONTROL_BASE0_EN (1<<10)
-+#define PCIC_CONTROL_BASE1_EN (1<<11)
-+#define PCIC_CONTROL_BASE2_EN (1<<12)
-+#define PCIC_CONTROL_HOLD_MASTER_WRITE (1<<13)
-+#define PCIC_CONTROL_ARBITER_EN (1<<14)
-+#define PCIC_INT_SOURCE (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000004))
-+#define PCIC_INT_SOURCE_PWR_MGMT (1<<0)
-+#define PCIC_INT_SOURCE_PCI_TARGET (1<<1)
-+#define PCIC_INT_SOURCE_PCI_MASTER (1<<2)
-+#define PCIC_INT_SOURCE_POWER_WAKEUP (1<<3)
-+#define PCIC_INT_SOURCE_PMEIN (1<<4)
-+/* PCIC_INT_SOURCE_RESERVED (1<<5) */
-+/* PCIC_INT_SOURCE_RESERVED (1<<6) */
-+#define PCIC_INT_SOURCE_PIC_INTA (1<<7)
-+#define PCIC_INT_SOURCE_PIC_INTB (1<<8)
-+#define PCIC_INT_SOURCE_PIC_INTC (1<<9)
-+#define PCIC_INT_SOURCE_PIC_INTD (1<<10)
-+#define PCIC_INT_SOURCE_SOFT_INT0 (1<<11)
-+#define PCIC_INT_SOURCE_SOFT_INT1 (1<<12)
-+#define PCIC_INT_SOURCE_SOFT_INT2 (1<<13)
-+#define PCIC_INT_SOURCE_SOFT_INT3 (1<<14)
-+#define PCIC_INT_CLEAR (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000008))
-+#define PCIC_INT_CLEAR_PM (1<<0)
-+#define PCIC_INT_CLEAR_PCI_TARGET (1<<1)
-+#define PCIC_INT_CLEAR_PCI_MASTER (1<<2)
-+/* PCIC_INT_CLEAR_RESERVED (1<<3) */
-+#define PCIC_INT_CLEAR_PMEIN (1<<4)
-+/* PCIC_INT_CLEAR_RESERVED (1<<5) */
-+/* PCIC_INT_CLEAR_RESERVED (1<<6) */
-+#define PCIC_INT_CLEAR_PCI_INTA (1<<7)
-+#define PCIC_INT_CLEAR_PCI_INTB (1<<8)
-+#define PCIC_INT_CLEAR_PCI_INTC (1<<9)
-+#define PCIC_INT_CLEAR_PCI_INTD (1<<10)
-+#define PCIC_INT_CLEAR_SOFT_INT0 (1<<11)
-+#define PCIC_INT_CLEAR_SOFT_INT1 (1<<12)
-+#define PCIC_INT_CLEAR_SOFT_INT2 (1<<13)
-+#define PCIC_INT_CLEAR_SOFT_INT3 (1<<14)
-+#define PCIC_INT_EN_AVAL (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x0000000c))
-+#define PCIC_INT_EN_AVAL_PM (1<<0)
-+#define PCIC_INT_EN_AVAL_PCI_TARGET (1<<1)
-+#define PCIC_INT_EN_AVAL_PCI_MASTER (1<<2)
-+/* PCIC_INT_EN_AVAL_RESERVED (1<<3) */
-+#define PCIC_INT_EN_AVAL_PMEIN (1<<4)
-+/* PCIC_INT_EN_AVAL_RESERVED (1<<5) */
-+/* PCIC_INT_EN_AVAL_RESERVED (1<<6) */
-+#define PCIC_INT_EN_AVAL_PCI_INTA (1<<7)
-+#define PCIC_INT_EN_AVAL_PCI_INTB (1<<8)
-+#define PCIC_INT_EN_AVAL_PCI_INTC (1<<9)
-+#define PCIC_INT_EN_AVAL_PCI_INTD (1<<10)
-+#define PCIC_INT_EN_AVAL_SOFT_INT0 (1<<11)
-+#define PCIC_INT_EN_AVAL_SOFT_INT1 (1<<12)
-+#define PCIC_INT_EN_AVAL_SOFT_INT2 (1<<13)
-+#define PCIC_INT_EN_AVAL_SOFT_INT3 (1<<14)
-+#define PCIC_INT_EN_PCI (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000010))
-+#define PCIC_INT_EN_PCI_PM (1<<0)
-+#define PCIC_INT_EN_PCI_PCI_TARGET (1<<1)
-+#define PCIC_INT_EN_PCI_PCI_MASTER (1<<2)
-+/* PCIC_INT_EN_PCI_RESERVED (1<<3) */
-+#define PCIC_INT_EN_PCI_PMEIN (1<<4)
-+/* PCIC_INT_EN_PCI_RESERVED (1<<5) */
-+/* PCIC_INT_EN_PCI_RESERVED (1<<6) */
-+#define PCIC_INT_EN_PCI_PCI_INTA (1<<7)
-+#define PCIC_INT_EN_PCI_PCI_INTB (1<<8)
-+#define PCIC_INT_EN_PCI_PCI_INTC (1<<9)
-+#define PCIC_INT_EN_PCI_PCI_INTD (1<<10)
-+#define PCIC_INT_EN_PCI_SOFT_INT0 (1<<11)
-+#define PCIC_INT_EN_PCI_SOFT_INT1 (1<<12)
-+#define PCIC_INT_EN_PCI_SOFT_INT2 (1<<13)
-+#define PCIC_INT_EN_PCI_SOFT_INT3 (1<<14)
-+#define PCIC_INT_SWSET (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000014))
-+#define PCIC_INT_SWSET_SOFT_INT0 (1<<0)
-+#define PCIC_INT_SWSET_SOFT_INT1 (1<<1)
-+#define PCIC_INT_SWSET_SOFT_INT2 (1<<2)
-+#define PCIC_INT_SWSET_SOFT_INT3 (1<<3)
-+#define PCIC_PM_CTL (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000018))
-+#define PCIC_PM_CTL_PWR_STATE_MASK (0x02)
-+/* PCIC_PM_CTL_RESERVED (1<<2) */
-+/* PCIC_PM_CTL_RESERVED (1<<3) */
-+/* PCIC_PM_CTL_RESERVED (1<<4) */
-+/* PCIC_PM_CTL_RESERVED (1<<5) */
-+/* PCIC_PM_CTL_RESERVED (1<<6) */
-+/* PCIC_PM_CTL_RESERVED (1<<7) */
-+/* PCIC_PM_CTL_RESERVED (1<<8) */
-+/* PCIC_PM_CTL_RESERVED (1<<9) */
-+#define PCIC_PM_CTL_PWR_SUPPORT (1<<10)
-+#define PCIC_PM_CTL_PMEIN (1<<11)
-+#define PCIC_PM_CTL_CAP_MASK (*(volatile unsigned short int *)(PCI_CONFIG_BASE + 0x0000001a))
-+#define PCIC_PM_CONSUME (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x0000001c))
-+#define PCIC_PM_CONSUME_D0 (*(volatile unsigned char *)(PCI_CONFIG_BASE + 0x0000001c))
-+#define PCIC_PM_CONSUME_D1 (*(volatile unsigned char *)(PCI_CONFIG_BASE + 0x0000001d))
-+#define PCIC_PM_CONSUME_D2 (*(volatile unsigned char *)(PCI_CONFIG_BASE + 0x0000001e))
-+#define PCIC_PM_CONSUME_D3 (*(volatile unsigned char *)(PCI_CONFIG_BASE + 0x0000001f))
-+#define PCIC_PM_DISSAPATED (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000020))
-+#define PCIC_PM_DISSAPATED_D0 (*(volatile unsigned char *)(PCI_CONFIG_BASE + 0x00000020))
-+#define PCIC_PM_DISSAPATED_D1 (*(volatile unsigned char *)(PCI_CONFIG_BASE + 0x00000021))
-+#define PCIC_PM_DISSAPATED_D2 (*(volatile unsigned char *)(PCI_CONFIG_BASE + 0x00000022))
-+#define PCIC_PM_DISSAPATED_D3 (*(volatile unsigned char *)(PCI_CONFIG_BASE + 0x00000023))
-+#define PCIC_PM_DATA_SCALE (*(volatile unsigned short int *)(PCI_CONFIG_BASE + 0x00000024))
-+#define PCIC_VEND_DEV_ID (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000028))
-+#define PCIC_SUB_VEND_DEV_ID (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x0000002c))
-+#define PCIC_CLASS_REV_ID (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000030))
-+#define PCIC_MAX_MIN (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000034))
-+#define PCIC_MAST_MEM_AT0 (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x0000003c))
-+#define PCIC_MAST_MEM_AT1 (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000040))
-+#define PCIC_MAST_MEM_AT2 (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000044))
-+#define PCIC_SLAVE_MASK0 (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x0000004c))
-+#define PCIC_SLAVE_MASK1 (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000050))
-+#define PCIC_SLAVE_MASK2 (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000054))
-+#define PCIC_SLAVE_BASE_AT0 (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000058))
-+#define PCIC_SLAVE_BASE_AT1 (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x0000005c))
-+#define PCIC_SLAVE_BASE_AT2 (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000060))
-+#define PCIC_CONF_COMMAND (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000090))
-+#define PCIC_CONF_ADDR (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000094))
-+#define PCIC_CONF_DATA (*(volatile unsigned int *)(PCI_CONFIG_BASE + 0x00000098))
-+
-+/*------------------------------------------*/
-+/* IIC_INTERFACE */
-+/*------------------------------------------*/
-+#define I2C_DATA_HI (*(volatile unsigned int *)(I2C_BASE + 0x0))
-+#define I2C_DATA_LOW (*(volatile unsigned int *)(I2C_BASE + 0x4))
-+#define I2C_CONFIG (*(volatile unsigned int *)(I2C_BASE + 0x8))
-+#define I2C_DATA_READ (*(volatile unsigned int *)(I2C_BASE + 0xC))
-+#define I2C_CLOCK_DIV (*(volatile unsigned int *)(I2C_BASE + 0x10))
-+
-+#define I2CWRITE 0x200
-+#define I2CREAD 0x300
-+#define I2C_END_BURST 0x400
-+
-+/* read bits */
-+#define I2C_READ_ERROR 0x8000
-+#define I2C_READ_COMPLETE 0x4000
-+#define I2C_READ_BUSY 0x2000
-+
-+/* device types */
-+#define I2C_IO_EXPANDER 0x2
-+#define I2C_RTC 0xd
-+
-+/* device Addresses on I2C bus (EVM3) */
-+#define SEVEN_SEGMENT_DISP 0x23 /* Device type = 0x2, Addr = 3 */
-+#define EVM3_RTC 0xd0 /* Device type = 0xd, Addr = 0 */
-+#define EVM3_RTC_I2C_ADDR 0x0
-+
-+/*------------------------------------------*/
-+/* Ethernet MAC register offset definitions */
-+/*------------------------------------------*/
-+#define VMAC_DMACONFIG(X) (*(volatile unsigned int *)(X + 0x00000000))
-+#define VMAC_INTSTS(X) (*(volatile unsigned int *)(X + 0x00000004))
-+#define VMAC_INTMASK(X) (*(volatile unsigned int *)(X + 0x00000008))
-+
-+#define VMAC_WRAPCLK(X) (*(volatile unsigned int *)(X + 0x00000340))
-+#define VMAC_STATSBASE(X) (*(volatile unsigned int *)(X + 0x00000400))
-+
-+#define VMAC_TCRPTR(X) (*(volatile unsigned int *)(X + 0x00000100))
-+#define VMAC_TCRSIZE(X) (*(volatile unsigned int *)(X + 0x00000104))
-+#define VMAC_TCRINTTHRESH(X) (*(volatile unsigned int *)(X + 0x00000108))
-+#define VMAC_TCRTOTENT(X) (*(volatile unsigned int *)(X + 0x0000010C))
-+#define VMAC_TCRFREEENT(X) (*(volatile unsigned int *)(X + 0x00000110))
-+#define VMAC_TCRPENDENT(X) (*(volatile unsigned int *)(X + 0x00000114))
-+#define VMAC_TCRENTINC(X) (*(volatile unsigned int *)(X + 0x00000118))
-+#define VMAC_TXISRPACE(X) (*(volatile unsigned int *)(X + 0x0000011c))
-+
-+
-+#define VMAC_TDMASTATE0(X) (*(volatile unsigned int *)(X + 0x00000120))
-+#define VMAC_TDMASTATE1(X) (*(volatile unsigned int *)(X + 0x00000124))
-+#define VMAC_TDMASTATE2(X) (*(volatile unsigned int *)(X + 0x00000128))
-+#define VMAC_TDMASTATE3(X) (*(volatile unsigned int *)(X + 0x0000012C))
-+#define VMAC_TDMASTATE4(X) (*(volatile unsigned int *)(X + 0x00000130))
-+#define VMAC_TDMASTATE5(X) (*(volatile unsigned int *)(X + 0x00000134))
-+#define VMAC_TDMASTATE6(X) (*(volatile unsigned int *)(X + 0x00000138))
-+#define VMAC_TDMASTATE7(X) (*(volatile unsigned int *)(X + 0x0000013C))
-+#define VMAC_TXPADDCNT(X) (*(volatile unsigned int *)(X + 0x00000140))
-+#define VMAC_TXPADDSTART(X) (*(volatile unsigned int *)(X + 0x00000144))
-+#define VMAC_TXPADDEND(X) (*(volatile unsigned int *)(X + 0x00000148))
-+#define VMAC_TXQFLUSH(X) (*(volatile unsigned int *)(X + 0x0000014C))
-+
-+#define VMAC_RCRPTR(X) (*(volatile unsigned int *)(X + 0x00000200))
-+#define VMAC_RCRSIZE(X) (*(volatile unsigned int *)(X + 0x00000204))
-+#define VMAC_RCRINTTHRESH(X) (*(volatile unsigned int *)(X + 0x00000208))
-+#define VMAC_RCRTOTENT(X) (*(volatile unsigned int *)(X + 0x0000020C))
-+#define VMAC_RCRFREEENT(X) (*(volatile unsigned int *)(X + 0x00000210))
-+#define VMAC_RCRPENDENT(X) (*(volatile unsigned int *)(X + 0x00000214))
-+#define VMAC_RCRENTINC(X) (*(volatile unsigned int *)(X + 0x00000218))
-+#define VMAC_RXISRPACE(X) (*(volatile unsigned int *)(X + 0x0000021c))
-+
-+#define VMAC_RDMASTATE0(X) (*(volatile unsigned int *)(X + 0x00000220))
-+#define VMAC_RDMASTATE1(X) (*(volatile unsigned int *)(X + 0x00000224))
-+#define VMAC_RDMASTATE2(X) (*(volatile unsigned int *)(X + 0x00000228))
-+#define VMAC_RDMASTATE3(X) (*(volatile unsigned int *)(X + 0x0000022C))
-+#define VMAC_RDMASTATE4(X) (*(volatile unsigned int *)(X + 0x00000230))
-+#define VMAC_RDMASTATE5(X) (*(volatile unsigned int *)(X + 0x00000234))
-+#define VMAC_RDMASTATE6(X) (*(volatile unsigned int *)(X + 0x00000238))
-+#define VMAC_RDMASTATE7(X) (*(volatile unsigned int *)(X + 0x0000023C))
-+#define VMAC_FBLADDCNT(X) (*(volatile unsigned int *)(X + 0x00000240))
-+#define VMAC_FBLADDSTART(X) (*(volatile unsigned int *)(X + 0x00000244))
-+#define VMAC_FBLADDEND(X) (*(volatile unsigned int *)(X + 0x00000248))
-+#define VMAC_RXONOFF(X) (*(volatile unsigned int *)(X + 0x0000024C))
-+
-+#define VMAC_FBL0NEXTD(X) (*(volatile unsigned int *)(X + 0x00000280))
-+#define VMAC_FBL0LASTD(X) (*(volatile unsigned int *)(X + 0x00000284))
-+#define VMAC_FBL0COUNTD(X) (*(volatile unsigned int *)(X + 0x00000288))
-+#define VMAC_FBL0BUFSIZE(X) (*(volatile unsigned int *)(X + 0x0000028C))
-+
-+#define VMAC_MACCONTROL(X) (*(volatile unsigned int *)(X + 0x00000300))
-+#define VMAC_MACSTATUS(X) (*(volatile unsigned int *)(X + 0x00000304))
-+#define VMAC_MACADDRHI(X) (*(volatile unsigned int *)(X + 0x00000308))
-+#define VMAC_MACADDRLO(X) (*(volatile unsigned int *)(X + 0x0000030C))
-+#define VMAC_MACHASH1(X) (*(volatile unsigned int *)(X + 0x00000310))
-+#define VMAC_MACHASH2(X) (*(volatile unsigned int *)(X + 0x00000314))
-+
-+#define VMAC_WRAPCLK(X) (*(volatile unsigned int *)(X + 0x00000340))
-+#define VMAC_BOFTEST(X) (*(volatile unsigned int *)(X + 0x00000344))
-+#define VMAC_PACTEST(X) (*(volatile unsigned int *)(X + 0x00000348))
-+#define VMAC_PAUSEOP(X) (*(volatile unsigned int *)(X + 0x0000034C))
-+
-+#define VMAC_MDIOCONTROL(X) (*(volatile unsigned int *)(X + 0x00000380))
-+#define VMAC_MDIOUSERACCESS(X) (*(volatile unsigned int *)(X +0x00000384))
-+#define VMAC_MDIOACK(X) (*(volatile unsigned int *)(X + 0x00000388))
-+#define VMAC_MDIOLINK(X) (*(volatile unsigned int *)(X + 0x0000038C))
-+#define VMAC_MDIOMACPHY(X) (*(volatile unsigned int *)(X + 0x00000390))
-+
-+#define VMAC_STATS_BASE(X) (X + 0x00000400)
-+
-+#endif __AVALANCHE_REGS_H
-+
-+
-+
-+
-+
-+
-diff -urN linux.old/include/asm-mips/ar7/avalanche_types.h linux.dev/include/asm-mips/ar7/avalanche_types.h
---- linux.old/include/asm-mips/ar7/avalanche_types.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/avalanche_types.h 2005-11-10 01:10:46.071588750 +0100
-@@ -0,0 +1,126 @@
-+/*------------------------------------------------------------------------------------------*\
-+\*------------------------------------------------------------------------------------------*/
-+#ifndef _avalanche_types_h_
-+#define _avalanche_types_h_
-+
-+/*--- #include <asm/avalanche/generic/hal_modules/haltypes.h> ---*/
-+#ifndef TRUE
-+#define TRUE 1
-+#endif
-+#ifndef FALSE
-+#define FALSE 0
-+#endif
-+#ifndef NULL
-+#define NULL (void *)0
-+#endif
-+
-+/*------------------------------------------------------------------------------------------*\
-+ * Typen für Texas GPL Module
-+\*------------------------------------------------------------------------------------------*/
-+#ifndef __UINT8_T__
-+typedef unsigned char UINT8;
-+#define __UINT8_T__
-+#endif
-+
-+#ifndef __UCHAR_T__
-+typedef unsigned char UCHAR;
-+#define __UCHAR_T__
-+#endif
-+
-+#ifndef __INT8_T__
-+typedef signed char INT8;
-+#define __INT8_T__
-+#endif
-+
-+#ifndef __UINT16_T__
-+typedef unsigned short UINT16;
-+#define __UINT16_T__
-+#endif
-+
-+#ifndef __USHORT_T__
-+typedef unsigned short USHORT;
-+#define __USHORT_T__
-+#endif
-+
-+#ifndef __INT16_T__
-+typedef signed short INT16;
-+#define __INT16_T__
-+#endif
-+
-+#ifndef __UINT32_T__
-+typedef unsigned int UINT32;
-+#define __UINT32_T__
-+#endif
-+
-+#ifndef __UINT_T__
-+typedef unsigned int UINT;
-+#define __UINT_T__
-+#endif
-+
-+#ifndef __INT32_T__
-+typedef signed int INT32;
-+#define __INT32_T__
-+#endif
-+
-+#ifndef __ULONG_T__
-+typedef unsigned long ULONG;
-+#define __ULONG_T__
-+#endif
-+
-+#ifndef __BOOL_T__
-+typedef int BOOL;
-+#define __BOOL_T__
-+#endif
-+
-+#ifndef __STATUS_T__
-+typedef int STATUS;
-+#define __STATUS_T__
-+#endif
-+
-+/*------------------------------------------------------------------------------------------*\
-+\*------------------------------------------------------------------------------------------*/
-+typedef void (*p_vlynq_intr_cntrl_isr_t)(void *,void *,void *);
-+typedef INT32 (*p_vlynq_interrupt_vector_set_t)(void *, UINT32, UINT32, INT32, INT32, INT32);
-+typedef INT32 (*p_vlynq_interrupt_vector_cntl_t)(void *, UINT32, INT32, UINT32);
-+typedef UINT32 (*p_vlynq_interrupt_get_count_t)(void *, UINT32);
-+typedef INT32 (*p_vlynq_install_isr_t)(void *, UINT32, p_vlynq_intr_cntrl_isr_t, void *, void *, void *);
-+typedef INT32 (*p_vlynq_uninstall_isr_t)(void *, UINT32, void *, void *, void *);
-+typedef void (*p_vlynq_root_isr_t)(void *);
-+typedef void (*p_vlynq_delay_t)(UINT32);
-+typedef INT32 (*p_vlynq_interrupt_vector_map_t)(void *, INT32, UINT32, UINT32);
-+typedef INT32 (*p_vlynq_interrupt_set_polarity_t)(void *, INT32, UINT32, INT32);
-+typedef INT32 (*p_vlynq_interrupt_get_polarity_t)(void *, INT32, UINT32);
-+typedef INT32 (*p_vlynq_interrupt_set_type_t)(void *, INT32, UINT32, INT32);
-+typedef INT32 (*p_vlynq_interrupt_get_type_t)(void *, INT32, UINT32);
-+typedef INT32 (*p_vlynq_interrupt_enable_t)(void *, INT32, UINT32);
-+typedef INT32 (*p_vlynq_interrupt_disable_t)(void *, INT32, UINT32);
-+
-+/*------------------------------------------------------------------------------------------*\
-+\*------------------------------------------------------------------------------------------*/
-+extern p_vlynq_interrupt_vector_set_t p_vlynq_interrupt_vector_set;
-+extern p_vlynq_interrupt_vector_cntl_t p_vlynq_interrupt_vector_cntl;
-+extern p_vlynq_interrupt_get_count_t p_vlynq_interrupt_get_count;
-+extern p_vlynq_install_isr_t p_vlynq_install_isr;
-+extern p_vlynq_uninstall_isr_t p_vlynq_uninstall_isr;
-+extern p_vlynq_root_isr_t p_vlynq_root_isr;
-+extern p_vlynq_delay_t p_vlynq_delay;
-+extern p_vlynq_interrupt_vector_map_t p_vlynq_interrupt_vector_map;
-+extern p_vlynq_interrupt_set_polarity_t p_vlynq_interrupt_set_polarity;
-+extern p_vlynq_interrupt_get_polarity_t p_vlynq_interrupt_get_polarity;
-+extern p_vlynq_interrupt_set_type_t p_vlynq_interrupt_set_type;
-+extern p_vlynq_interrupt_get_type_t p_vlynq_interrupt_get_type;
-+extern p_vlynq_interrupt_enable_t p_vlynq_interrupt_enable;
-+extern p_vlynq_interrupt_disable_t p_vlynq_interrupt_disable;
-+extern void *p_vlynqDevice0;
-+extern void *p_vlynqDevice1;
-+
-+/*------------------------------------------------------------------------------------------*\
-+\*------------------------------------------------------------------------------------------*/
-+enum _avalanche_need_ {
-+ avalanche_need_vlynq,
-+ avalanche_need_auto_mdix
-+};
-+
-+int avalanche_need(enum _avalanche_need_);
-+
-+#endif /*--- #ifndef _avalanche_types_h_ ---*/
-diff -urN linux.old/include/asm-mips/ar7/if_port.h linux.dev/include/asm-mips/ar7/if_port.h
---- linux.old/include/asm-mips/ar7/if_port.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/if_port.h 2005-11-10 01:10:46.071588750 +0100
-@@ -0,0 +1,26 @@
-+/*******************************************************************************
-+ * FILE PURPOSE: Interface port id Header file
-+ *******************************************************************************
-+ * FILE NAME: if_port.h
-+ *
-+ * DESCRIPTION: Header file carrying information about port ids of interfaces
-+ *
-+ *
-+ * (C) Copyright 2003, Texas Instruments, Inc
-+ ******************************************************************************/
-+#ifndef _IF_PORT_H_
-+#define _IF_PORT_H_
-+
-+#define AVALANCHE_CPMAC_LOW_PORT_ID 0
-+#define AVALANCHE_CPMAC_HIGH_PORT_ID 1
-+#define AVALANCHE_USB_PORT_ID 2
-+#define AVALANCHE_WLAN_PORT_ID 3
-+
-+
-+#define AVALANCHE_MARVELL_BASE_PORT_ID 4
-+
-+/* The marvell ports occupy port ids from 4 to 8 */
-+/* so the next port id number should start at 9 */
-+
-+
-+#endif /* _IF_PORT_H_ */
-diff -urN linux.old/include/asm-mips/ar7/sangam.h linux.dev/include/asm-mips/ar7/sangam.h
---- linux.old/include/asm-mips/ar7/sangam.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/sangam.h 2005-11-10 01:10:46.071588750 +0100
-@@ -0,0 +1,180 @@
-+#ifndef _SANGAM_H_
-+#define _SANGAM_H_
-+
-+#include <linux/config.h>
-+#include <asm/addrspace.h>
-+
-+/*----------------------------------------------------
-+ * Sangam's Module Base Addresses
-+ *--------------------------------------------------*/
-+#define AVALANCHE_ADSL_SUB_SYS_MEM_BASE (KSEG1ADDR(0x01000000)) /* AVALANCHE ADSL Mem Base */
-+#define AVALANCHE_BROADBAND_INTERFACE__BASE (KSEG1ADDR(0x02000000)) /* AVALANCHE BBIF */
-+#define AVALANCHE_ATM_SAR_BASE (KSEG1ADDR(0x03000000)) /* AVALANCHE ATM SAR */
-+#define AVALANCHE_USB_SLAVE_BASE (KSEG1ADDR(0x03400000)) /* AVALANCHE USB SLAVE */
-+#define AVALANCHE_LOW_VLYNQ_MEM_MAP_BASE (KSEG1ADDR(0x04000000)) /* AVALANCHE VLYNQ 0 Mem map */
-+#define AVALANCHE_LOW_CPMAC_BASE (KSEG1ADDR(0x08610000)) /* AVALANCHE CPMAC 0 */
-+#define AVALANCHE_EMIF_CONTROL_BASE (KSEG1ADDR(0x08610800)) /* AVALANCHE EMIF */
-+#define AVALANCHE_GPIO_BASE (KSEG1ADDR(0x08610900)) /* AVALANCHE GPIO */
-+#define AVALANCHE_CLOCK_CONTROL_BASE (KSEG1ADDR(0x08610A00)) /* AVALANCHE Clock Control */
-+#define AVALANCHE_WATCHDOG_TIMER_BASE (KSEG1ADDR(0x08610B00)) /* AVALANCHE Watch Dog Timer */
-+#define AVALANCHE_TIMER0_BASE (KSEG1ADDR(0x08610C00)) /* AVALANCHE Timer 1 */
-+#define AVALANCHE_TIMER1_BASE (KSEG1ADDR(0x08610D00)) /* AVALANCHE Timer 2 */
-+#define AVALANCHE_UART0_REGS_BASE (KSEG1ADDR(0x08610E00)) /* AVALANCHE UART 0 */
-+#define AVALANCHE_UART1_REGS_BASE (KSEG1ADDR(0x08610F00)) /* AVALANCHE UART 0 */
-+#define AVALANCHE_I2C_BASE (KSEG1ADDR(0x08611000)) /* AVALANCHE I2C */
-+#define AVALANCHE_USB_SLAVE_CONTROL_BASE (KSEG1ADDR(0x08611200)) /* AVALANCHE USB DMA */
-+#define AVALANCHE_MCDMA0_CTRL_BASE (KSEG1ADDR(0x08611400)) /* AVALANCHE MC DMA 0 (channels 0-3) */
-+#define AVALANCHE_RESET_CONTROL_BASE (KSEG1ADDR(0x08611600)) /* AVALANCHE Reset Control */
-+#define AVALANCHE_BIST_CONTROL_BASE (KSEG1ADDR(0x08611700)) /* AVALANCHE BIST Control */
-+#define AVALANCHE_LOW_VLYNQ_CONTROL_BASE (KSEG1ADDR(0x08611800)) /* AVALANCHE VLYNQ0 Control */
-+#define AVALANCHE_DEVICE_CONFIG_LATCH_BASE (KSEG1ADDR(0x08611A00)) /* AVALANCHE Device Config Latch */
-+#define AVALANCHE_HIGH_VLYNQ_CONTROL_BASE (KSEG1ADDR(0x08611C00)) /* AVALANCHE VLYNQ1 Control */
-+#define AVALANCHE_MDIO_BASE (KSEG1ADDR(0x08611E00)) /* AVALANCHE MDIO */
-+#define AVALANCHE_FSER_BASE (KSEG1ADDR(0x08612000)) /* AVALANCHE FSER base */
-+#define AVALANCHE_INTC_BASE (KSEG1ADDR(0x08612400)) /* AVALANCHE INTC */
-+#define AVALANCHE_HIGH_CPMAC_BASE (KSEG1ADDR(0x08612800)) /* AVALANCHE CPMAC 1 */
-+#define AVALANCHE_HIGH_VLYNQ_MEM_MAP_BASE (KSEG1ADDR(0x0C000000)) /* AVALANCHE VLYNQ 1 Mem map */
-+
-+#define AVALANCHE_SDRAM_BASE 0x14000000UL
-+
-+
-+/*----------------------------------------------------
-+ * Sangam Interrupt Map (Primary Interrupts)
-+ *--------------------------------------------------*/
-+
-+#define AVALANCHE_UNIFIED_SECONDARY_INT 0
-+#define AVALANCHE_EXT_INT_0 1
-+#define AVALANCHE_EXT_INT_1 2
-+/* Line# 3 to 4 are reserved */
-+#define AVALANCHE_TIMER_0_INT 5
-+#define AVALANCHE_TIMER_1_INT 6
-+#define AVALANCHE_UART0_INT 7
-+#define AVALANCHE_UART1_INT 8
-+#define AVALANCHE_DMA_INT0 9
-+#define AVALANCHE_DMA_INT1 10
-+/* Line# 11 to 14 are reserved */
-+#define AVALANCHE_ATM_SAR_INT 15
-+/* Line# 16 to 18 are reserved */
-+#define AVALANCHE_LOW_CPMAC_INT 19
-+/* Line# 20 is reserved */
-+#define AVALANCHE_LOW_VLYNQ_INT 21
-+#define AVALANCHE_CODEC_WAKEUP_INT 22
-+/* Line# 23 is reserved */
-+#define AVALANCHE_USB_SLAVE_INT 24
-+#define AVALANCHE_HIGH_VLYNQ_INT 25
-+/* Line# 26 to 27 are reserved */
-+#define AVALANCHE_UNIFIED_PHY_INT 28
-+#define AVALANCHE_I2C_INT 29
-+#define AVALANCHE_DMA_INT2 30
-+#define AVALANCHE_DMA_INT3 31
-+/* Line# 32 is reserved */
-+#define AVALANCHE_HIGH_CPMAC_INT 33
-+/* Line# 34 to 36 is reserved */
-+#define AVALANCHE_VDMA_VT_RX_INT 37
-+#define AVALANCHE_VDMA_VT_TX_INT 38
-+#define AVALANCHE_ADSL_SUB_SYSTEM_INT 39
-+
-+
-+#define AVALANCHE_EMIF_INT 47
-+
-+
-+
-+/*-----------------------------------------------------------
-+ * Sangam's Reset Bits
-+ *---------------------------------------------------------*/
-+
-+#define AVALANCHE_UART0_RESET_BIT 0
-+#define AVALANCHE_UART1_RESET_BIT 1
-+#define AVALANCHE_I2C_RESET_BIT 2
-+#define AVALANCHE_TIMER0_RESET_BIT 3
-+#define AVALANCHE_TIMER1_RESET_BIT 4
-+/* Reset bit 5 is reserved. */
-+#define AVALANCHE_GPIO_RESET_BIT 6
-+#define AVALANCHE_ADSL_SUB_SYS_RESET_BIT 7
-+#define AVALANCHE_USB_SLAVE_RESET_BIT 8
-+#define AVALANCHE_ATM_SAR_RESET_BIT 9
-+/* Reset bit 10 is reserved. */
-+#define AVALANCHE_VDMA_VT_RESET_BIT 11
-+#define AVALANCHE_FSER_RESET_BIT 12
-+/* Reset bit 13 to 15 are reserved */
-+#define AVALANCHE_HIGH_VLYNQ_RESET_BIT 16
-+#define AVALANCHE_LOW_CPMAC_RESET_BIT 17
-+#define AVALANCHE_MCDMA_RESET_BIT 18
-+#define AVALANCHE_BIST_RESET_BIT 19
-+#define AVALANCHE_LOW_VLYNQ_RESET_BIT 20
-+#define AVALANCHE_HIGH_CPMAC_RESET_BIT 21
-+#define AVALANCHE_MDIO_RESET_BIT 22
-+#define AVALANCHE_ADSL_SUB_SYS_DSP_RESET_BIT 23
-+/* Reset bit 24 to 25 are reserved */
-+#define AVALANCHE_LOW_EPHY_RESET_BIT 26
-+/* Reset bit 27 to 31 are reserved */
-+
-+
-+#define AVALANCHE_POWER_MODULE_USBSP 0
-+#define AVALANCHE_POWER_MODULE_WDTP 1
-+#define AVALANCHE_POWER_MODULE_UT0P 2
-+#define AVALANCHE_POWER_MODULE_UT1P 3
-+#define AVALANCHE_POWER_MODULE_IICP 4
-+#define AVALANCHE_POWER_MODULE_VDMAP 5
-+#define AVALANCHE_POWER_MODULE_GPIOP 6
-+#define AVALANCHE_POWER_MODULE_VLYNQ1P 7
-+#define AVALANCHE_POWER_MODULE_SARP 8
-+#define AVALANCHE_POWER_MODULE_ADSLP 9
-+#define AVALANCHE_POWER_MODULE_EMIFP 10
-+#define AVALANCHE_POWER_MODULE_ADSPP 12
-+#define AVALANCHE_POWER_MODULE_RAMP 13
-+#define AVALANCHE_POWER_MODULE_ROMP 14
-+#define AVALANCHE_POWER_MODULE_DMAP 15
-+#define AVALANCHE_POWER_MODULE_BISTP 16
-+#define AVALANCHE_POWER_MODULE_TIMER0P 18
-+#define AVALANCHE_POWER_MODULE_TIMER1P 19
-+#define AVALANCHE_POWER_MODULE_EMAC0P 20
-+#define AVALANCHE_POWER_MODULE_EMAC1P 22
-+#define AVALANCHE_POWER_MODULE_EPHYP 24
-+#define AVALANCHE_POWER_MODULE_VLYNQ0P 27
-+
-+
-+
-+
-+
-+/*
-+ * Sangam board vectors
-+ */
-+
-+#define AVALANCHE_VECS (KSEG1ADDR(AVALANCHE_SDRAM_BASE))
-+#define AVALANCHE_VECS_KSEG0 (KSEG0ADDR(AVALANCHE_SDRAM_BASE))
-+
-+/*-----------------------------------------------------------------------------
-+ * Sangam's system register.
-+ *
-+ *---------------------------------------------------------------------------*/
-+#define AVALANCHE_DCL_BOOTCR (KSEG1ADDR(0x08611A00))
-+#define AVALANCHE_EMIF_SDRAM_CFG (AVALANCHE_EMIF_CONTROL_BASE + 0x8)
-+#define AVALANCHE_RST_CTRL_PRCR (KSEG1ADDR(0x08611600))
-+#define AVALANCHE_RST_CTRL_SWRCR (KSEG1ADDR(0x08611604))
-+#define AVALANCHE_RST_CTRL_RSR (KSEG1ADDR(0x08611600))
-+
-+#define AVALANCHE_POWER_CTRL_PDCR (KSEG1ADDR(0x08610A00))
-+#define AVALANCHE_WAKEUP_CTRL_WKCR (KSEG1ADDR(0x08610A0C))
-+
-+#define AVALANCHE_GPIO_DATA_IN (AVALANCHE_GPIO_BASE + 0x0)
-+#define AVALANCHE_GPIO_DATA_OUT (AVALANCHE_GPIO_BASE + 0x4)
-+#define AVALANCHE_GPIO_DIR (AVALANCHE_GPIO_BASE + 0x8)
-+#define AVALANCHE_GPIO_ENBL (AVALANCHE_GPIO_BASE + 0xC)
-+#define AVALANCHE_CVR (AVALANCHE_GPIO_BASE + 0x14)
-+
-+/*
-+ * Yamon Prom print address.
-+ */
-+#define AVALANCHE_YAMON_FUNCTION_BASE (KSEG1ADDR(0x10000500))
-+#define AVALANCHE_YAMON_PROM_PRINT_COUNT_ADDR (AVALANCHE_YAMON_FUNCTION_BASE + 0x4) /* print_count function */
-+#define AVALANCHE_YAMON_PROM_PRINT_ADDR (AVALANCHE_YAMON_FUNCTION_BASE + 0x34)
-+
-+#define AVALANCHE_BASE_BAUD ( 3686400 / 16 )
-+
-+#define AVALANCHE_GPIO_PIN_COUNT 32
-+#define AVALANCHE_GPIO_OFF_MAP {0xF34FFFC0}
-+
-+#include "sangam_boards.h"
-+
-+#endif /*_SANGAM_H_ */
-diff -urN linux.old/include/asm-mips/ar7/sangam_boards.h linux.dev/include/asm-mips/ar7/sangam_boards.h
---- linux.old/include/asm-mips/ar7/sangam_boards.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/sangam_boards.h 2005-11-10 01:10:46.071588750 +0100
-@@ -0,0 +1,77 @@
-+#ifndef _SANGAM_BOARDS_H
-+#define _SANGAM_BOARDS_H
-+
-+// Let us define board specific information here.
-+
-+
-+#if defined(CONFIG_AR7DB)
-+
-+#define AFECLK_FREQ 35328000
-+#define REFCLK_FREQ 25000000
-+#define OSC3_FREQ 24000000
-+#define AVALANCHE_LOW_CPMAC_PHY_MASK 0x80000000
-+#define AVALANCHE_HIGH_CPMAC_PHY_MASK 0x55555555
-+#define AVALANCHE_LOW_CPMAC_MDIX_MASK 0x80000000
-+
-+#endif
-+
-+
-+#if defined(CONFIG_AR7RD)
-+#define AFECLK_FREQ 35328000
-+#define REFCLK_FREQ 25000000
-+#define OSC3_FREQ 24000000
-+#define AVALANCHE_LOW_CPMAC_PHY_MASK 0x80000000
-+#define AVALANCHE_HIGH_CPMAC_PHY_MASK 0x2
-+#define AVALANCHE_LOW_CPMAC_MDIX_MASK 0x80000000
-+#endif
-+
-+
-+#if defined(CONFIG_AR7WI)
-+#define AFECLK_FREQ 35328000
-+#define REFCLK_FREQ 25000000
-+#define OSC3_FREQ 24000000
-+#define AVALANCHE_LOW_CPMAC_PHY_MASK 0x80000000
-+#define AVALANCHE_HIGH_CPMAC_PHY_MASK 0x2
-+#define AVALANCHE_LOW_CPMAC_MDIX_MASK 0x80000000
-+#endif
-+
-+
-+#if defined(CONFIG_AR7V)
-+#define AFECLK_FREQ 35328000
-+#define REFCLK_FREQ 25000000
-+#define OSC3_FREQ 24000000
-+#define AVALANCHE_LOW_CPMAC_PHY_MASK 0x80000000
-+#define AVALANCHE_HIGH_CPMAC_PHY_MASK 0x2
-+#define AVALANCHE_LOW_CPMAC_MDIX_MASK 0x80000000
-+#endif
-+
-+
-+#if defined(CONFIG_AR7WRD)
-+#define AFECLK_FREQ 35328000
-+#define REFCLK_FREQ 25000000
-+#define OSC3_FREQ 24000000
-+#define AVALANCHE_LOW_CPMAC_PHY_MASK 0x80000000
-+#define AVALANCHE_HIGH_CPMAC_PHY_MASK 0x00010000
-+#define AVALANCHE_LOW_CPMAC_MDIX_MASK 0x80000000
-+#endif
-+
-+
-+#if defined(CONFIG_AR7VWI)
-+#define AFECLK_FREQ 35328000
-+#define REFCLK_FREQ 25000000
-+#define OSC3_FREQ 24000000
-+#define AVALANCHE_LOW_CPMAC_PHY_MASK 0x80000000
-+#define AVALANCHE_HIGH_CPMAC_PHY_MASK 0x00010000
-+#define AVALANCHE_LOW_CPMAC_MDIX_MASK 0x80000000
-+#endif
-+
-+
-+#if defined CONFIG_SEAD2
-+#define AVALANCHE_LOW_CPMAC_PHY_MASK 0xAAAAAAAA
-+#define AVALANCHE_HIGH_CPMAC_PHY_MASK 0x55555555
-+#define AVALANCHE_LOW_CPMAC_MDIX_MASK 0
-+#include <asm/mips-boards/sead.h>
-+#endif
-+
-+
-+#endif
-diff -urN linux.old/include/asm-mips/ar7/tnetd73xx.h linux.dev/include/asm-mips/ar7/tnetd73xx.h
---- linux.old/include/asm-mips/ar7/tnetd73xx.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/tnetd73xx.h 2005-11-10 01:10:46.075589000 +0100
-@@ -0,0 +1,338 @@
-+/******************************************************************************
-+ * FILE PURPOSE: TNETD73xx Common Header File
-+ ******************************************************************************
-+ * FILE NAME: tnetd73xx.h
-+ *
-+ * DESCRIPTION: shared typedef's, constants and API for TNETD73xx
-+ *
-+ * REVISION HISTORY:
-+ * 27 Nov 02 - PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+/*
-+ *
-+ *
-+ * These are const, typedef, and api definitions for tnetd73xx.
-+ *
-+ * NOTES:
-+ * 1. This file may be included into both C and Assembly files.
-+ * - for .s files, please do #define _ASMLANGUAGE in your ASM file to
-+ * avoid C data types (typedefs) below;
-+ * - for .c files, you don't have to do anything special.
-+ *
-+ * 2. This file has a number of sections for each SOC subsystem. When adding
-+ * a new constant, find the subsystem you are working on and follow the
-+ * name pattern. If you are adding another typedef for your interface, please,
-+ * place it with other typedefs and function prototypes.
-+ *
-+ * 3. Please, DO NOT add any macros or types that are local to a subsystem to avoid
-+ * cluttering. Include such items directly into the module's .c file or have a
-+ * local .h file to pass data between smaller modules. This file defines only
-+ * shared items.
-+ */
-+
-+#ifndef __TNETD73XX_H__
-+#define __TNETD73XX_H__
-+
-+#ifndef _ASMLANGUAGE /* This part not for assembly language */
-+
-+extern unsigned int tnetd73xx_mips_freq;
-+extern unsigned int tnetd73xx_vbus_freq;
-+
-+#include "tnetd73xx_err.h"
-+
-+#endif /* _ASMLANGUAGE */
-+
-+
-+/*******************************************************************************************
-+* Emerald core specific
-+******************************************************************************************** */
-+
-+#ifdef BIG_ENDIAN
-+#elif defined(LITTLE_ENDIAN)
-+#else
-+#error Need to define endianism
-+#endif
-+
-+#ifndef KSEG_MSK
-+#define KSEG_MSK 0xE0000000 /* Most significant 3 bits denote kseg choice */
-+#endif
-+
-+#ifndef KSEG_INV_MASK
-+#define KSEG_INV_MASK 0x1FFFFFFF /* Inverted mask for kseg address */
-+#endif
-+
-+#ifndef KSEG0_BASE
-+#define KSEG0_BASE 0x80000000
-+#endif
-+
-+#ifndef KSEG1_BASE
-+#define KSEG1_BASE 0xA0000000
-+#endif
-+
-+#ifndef KSEG0
-+#define KSEG0(addr) (((__u32)(addr) & ~KSEG_MSK) | KSEG0_BASE)
-+#endif
-+
-+#ifndef KSEG1
-+#define KSEG1(addr) (((__u32)(addr) & ~KSEG_MSK) | KSEG1_BASE)
-+#endif
-+
-+#ifndef KUSEG
-+#define KUSEG(addr) ((__u32)(addr) & ~KSEG_MSK)
-+#endif
-+
-+#ifndef PHYS_ADDR
-+#define PHYS_ADDR(addr) ((addr) & KSEG_INV_MASK)
-+#endif
-+
-+#ifndef PHYS_TO_K0
-+#define PHYS_TO_K0(addr) (PHYS_ADDR(addr)|KSEG0_BASE)
-+#endif
-+
-+#ifndef PHYS_TO_K1
-+#define PHYS_TO_K1(addr) (PHYS_ADDR(addr)|KSEG1_BASE)
-+#endif
-+
-+#ifndef REG8_ADDR
-+#define REG8_ADDR(addr) (volatile __u8 *)(PHYS_TO_K1(addr))
-+#define REG8_DATA(addr) (*(volatile __u8 *)(PHYS_TO_K1(addr)))
-+#define REG8_WRITE(addr, data) REG8_DATA(addr) = data;
-+#define REG8_READ(addr, data) data = (__u8) REG8_DATA(addr);
-+#endif
-+
-+#ifndef REG16_ADDR
-+#define REG16_ADDR(addr) (volatile __u16 *)(PHYS_TO_K1(addr))
-+#define REG16_DATA(addr) (*(volatile __u16 *)(PHYS_TO_K1(addr)))
-+#define REG16_WRITE(addr, data) REG16_DATA(addr) = data;
-+#define REG16_READ(addr, data) data = (__u16) REG16_DATA(addr);
-+#endif
-+
-+#ifndef REG32_ADDR
-+#define REG32_ADDR(addr) (volatile __u32 *)(PHYS_TO_K1(addr))
-+#define REG32_DATA(addr) (*(volatile __u32 *)(PHYS_TO_K1(addr)))
-+#define REG32_WRITE(addr, data) REG32_DATA(addr) = data;
-+#define REG32_READ(addr, data) data = (__u32) REG32_DATA(addr);
-+#endif
-+
-+#ifdef _LINK_KSEG0_ /* Application is linked into KSEG0 space */
-+#define VIRT_ADDR(addr) PHYS_TO_K0(PHYS_ADDR(addr))
-+#endif
-+
-+#ifdef _LINK_KSEG1_ /* Application is linked into KSEG1 space */
-+#define VIRT_ADDR(addr) PHYS_TO_K1(PHYS_ADDR(addr))
-+#endif
-+
-+#if !defined(_LINK_KSEG0_) && !defined(_LINK_KSEG1_)
-+#error You must define _LINK_KSEG0_ or _LINK_KSEG1_ to compile the code.
-+#endif
-+
-+/* TNETD73XX chip definations */
-+
-+#define FREQ_1MHZ 1000000
-+#define TNETD73XX_MIPS_FREQ tnetd73xx_mips_freq /* CPU clock frequency */
-+#define TNETD73XX_VBUS_FREQ tnetd73xx_vbus_freq /* originally (TNETD73XX_MIPS_FREQ/2) */
-+
-+#ifdef AR7SEAD2
-+#define TNETD73XX_MIPS_FREQ_DEFAULT 25000000 /* 25 Mhz for sead2 board crystal */
-+#else
-+#define TNETD73XX_MIPS_FREQ_DEFAULT 125000000 /* 125 Mhz */
-+#endif
-+#define TNETD73XX_VBUS_FREQ_DEFAULT (TNETD73XX_MIPS_FREQ_DEFAULT / 2) /* Sync mode */
-+
-+
-+
-+/* Module base addresses */
-+#define TNETD73XX_ADSLSS_BASE PHYS_TO_K1(0x01000000) /* ADSLSS Module */
-+#define TNETD73XX_BBIF_CTRL_BASE PHYS_TO_K1(0x02000000) /* BBIF Control */
-+#define TNETD73XX_ATMSAR_BASE PHYS_TO_K1(0x03000000) /* ATM SAR */
-+#define TNETD73XX_USB_BASE PHYS_TO_K1(0x03400000) /* USB Module */
-+#define TNETD73XX_VLYNQ0_BASE PHYS_TO_K1(0x04000000) /* VLYNQ0 Module */
-+#define TNETD73xx_EMAC0_BASE PHYS_TO_K1(0x08610000) /* EMAC0 Module*/
-+#define TNETD73XX_EMIF_BASE PHYS_TO_K1(0x08610800) /* EMIF Module */
-+#define TNETD73XX_GPIO_BASE PHYS_TO_K1(0x08610900) /* GPIO control */
-+#define TNETD73XX_CLOCK_CTRL_BASE PHYS_TO_K1(0x08610A00) /* Clock Control */
-+#define TNETD73XX_WDTIMER_BASE PHYS_TO_K1(0x08610B00) /* WDTIMER Module */
-+#define TNETD73XX_TIMER0_BASE PHYS_TO_K1(0x08610C00) /* TIMER0 Module */
-+#define TNETD73XX_TIMER1_BASE PHYS_TO_K1(0x08610D00) /* TIMER1 Module */
-+#define TNETD73XX_UARTA_BASE PHYS_TO_K1(0x08610E00) /* UART A */
-+#define TNETD73XX_UARTB_BASE PHYS_TO_K1(0x08610F00) /* UART B */
-+#define TNETD73XX_I2C_BASE PHYS_TO_K1(0x08611000) /* I2C Module */
-+#define TNETD73XX_USB_DMA_BASE PHYS_TO_K1(0x08611200) /* USB Module */
-+#define TNETD73XX_MCDMA_BASE PHYS_TO_K1(0x08611400) /* MC-DMA */
-+#define TNETD73xx_VDMAVT_BASE PHYS_TO_K1(0x08611500) /* VDMAVT Control */
-+#define TNETD73XX_RST_CTRL_BASE PHYS_TO_K1(0x08611600) /* Reset Control */
-+#define TNETD73xx_BIST_CTRL_BASE PHYS_TO_K1(0x08611700) /* BIST Control */
-+#define TNETD73xx_VLYNQ0_CTRL_BASE PHYS_TO_K1(0x08611800) /* VLYNQ0 Control */
-+#define TNETD73XX_DCL_BASE PHYS_TO_K1(0x08611A00) /* Device Configuration Latch */
-+#define TNETD73xx_VLYNQ1_CTRL_BASE PHYS_TO_K1(0x08611C00) /* VLYNQ1 Control */
-+#define TNETD73xx_MDIO_BASE PHYS_TO_K1(0x08611E00) /* MDIO Control */
-+#define TNETD73XX_FSER_BASE PHYS_TO_K1(0x08612000) /* FSER Control */
-+#define TNETD73XX_INTC_BASE PHYS_TO_K1(0x08612400) /* Interrupt Controller */
-+#define TNETD73xx_EMAC1_BASE PHYS_TO_K1(0x08612800) /* EMAC1 Module*/
-+#define TNETD73XX_VLYNQ1_BASE PHYS_TO_K1(0x0C000000) /* VLYNQ1 Module */
-+
-+/* BBIF Registers */
-+#define TNETD73XX_BBIF_ADSLADR (TNETD73XX_BBIF_CTRL_BASE + 0x0)
-+
-+/* Device Configuration Latch Registers */
-+#define TNETD73XX_DCL_BOOTCR (TNETD73XX_DCL_BASE + 0x0)
-+#define TNETD73XX_DCL_DPLLSELR (TNETD73XX_DCL_BASE + 0x10)
-+#define TNETD73XX_DCL_SPEEDCTLR (TNETD73XX_DCL_BASE + 0x14)
-+#define TNETD73XX_DCL_SPEEDPWDR (TNETD73XX_DCL_BASE + 0x18)
-+#define TNETD73XX_DCL_SPEEDCAPR (TNETD73XX_DCL_BASE + 0x1C)
-+
-+/* GPIO Control */
-+#define TNETD73XX_GPIODINR (TNETD73XX_GPIO_BASE + 0x0)
-+#define TNETD73XX_GPIODOUTR (TNETD73XX_GPIO_BASE + 0x4)
-+#define TNETD73XX_GPIOPDIRR (TNETD73XX_GPIO_BASE + 0x8)
-+#define TNETD73XX_GPIOENR (TNETD73XX_GPIO_BASE + 0xC)
-+#define TNETD73XX_CVR (TNETD73XX_GPIO_BASE + 0x14)
-+#define TNETD73XX_DIDR1 (TNETD73XX_GPIO_BASE + 0x18)
-+#define TNETD73XX_DIDR2 (TNETD73XX_GPIO_BASE + 0x1C)
-+
-+/* Reset Control */
-+#define TNETD73XX_RST_CTRL_PRCR (TNETD73XX_RST_CTRL_BASE + 0x0)
-+#define TNETD73XX_RST_CTRL_SWRCR (TNETD73XX_RST_CTRL_BASE + 0x4)
-+#define TNETD73XX_RST_CTRL_RSR (TNETD73XX_RST_CTRL_BASE + 0x8)
-+
-+/* Power Control */
-+#define TNETD73XX_POWER_CTRL_PDCR (TNETD73XX_CLOCK_CTRL_BASE + 0x0)
-+#define TNETD73XX_POWER_CTRL_PCLKCR (TNETD73XX_CLOCK_CTRL_BASE + 0x4)
-+#define TNETD73XX_POWER_CTRL_PDUCR (TNETD73XX_CLOCK_CTRL_BASE + 0x8)
-+#define TNETD73XX_POWER_CTRL_WKCR (TNETD73XX_CLOCK_CTRL_BASE + 0xC)
-+
-+/* Clock Control */
-+#define TNETD73XX_CLK_CTRL_SCLKCR (TNETD73XX_CLOCK_CTRL_BASE + 0x20)
-+#define TNETD73XX_CLK_CTRL_SCLKPLLCR (TNETD73XX_CLOCK_CTRL_BASE + 0x30)
-+#define TNETD73XX_CLK_CTRL_MCLKCR (TNETD73XX_CLOCK_CTRL_BASE + 0x40)
-+#define TNETD73XX_CLK_CTRL_MCLKPLLCR (TNETD73XX_CLOCK_CTRL_BASE + 0x50)
-+#define TNETD73XX_CLK_CTRL_UCLKCR (TNETD73XX_CLOCK_CTRL_BASE + 0x60)
-+#define TNETD73XX_CLK_CTRL_UCLKPLLCR (TNETD73XX_CLOCK_CTRL_BASE + 0x70)
-+#define TNETD73XX_CLK_CTRL_ACLKCR0 (TNETD73XX_CLOCK_CTRL_BASE + 0x80)
-+#define TNETD73XX_CLK_CTRL_ACLKPLLCR0 (TNETD73XX_CLOCK_CTRL_BASE + 0x90)
-+#define TNETD73XX_CLK_CTRL_ACLKCR1 (TNETD73XX_CLOCK_CTRL_BASE + 0xA0)
-+#define TNETD73XX_CLK_CTRL_ACLKPLLCR1 (TNETD73XX_CLOCK_CTRL_BASE + 0xB0)
-+
-+/* EMIF control */
-+#define TNETD73XX_EMIF_SDRAM_CFG ( TNETD73XX_EMIF_BASE + 0x08 )
-+
-+/* UART */
-+#ifdef AR7SEAD2
-+#define TNETD73XX_UART_FREQ 3686400
-+#else
-+#define TNETD73XX_UART_FREQ TNETD73XX_VBUS_FREQ
-+#endif
-+
-+/* Interrupt Controller */
-+
-+/* Primary interrupts */
-+#define TNETD73XX_INTC_UNIFIED_SECONDARY 0 /* Unified secondary interrupt */
-+#define TNETD73XX_INTC_EXTERNAL0 1 /* External Interrupt Line 0 */
-+#define TNETD73XX_INTC_EXTERNAL1 2 /* External Interrupt Line 1 */
-+#define TNETD73XX_INTC_RESERVED3 3 /* Reserved */
-+#define TNETD73XX_INTC_RESERVED4 4 /* Reserved */
-+#define TNETD73XX_INTC_TIMER0 5 /* TIMER 0 int */
-+#define TNETD73XX_INTC_TIMER1 6 /* TIMER 1 int */
-+#define TNETD73XX_INTC_UART0 7 /* UART 0 int */
-+#define TNETD73XX_INTC_UART1 8 /* UART 1 int */
-+#define TNETD73XX_INTC_MCDMA0 9 /* MCDMA 0 int */
-+#define TNETD73XX_INTC_MCDMA1 10 /* MCDMA 1 int */
-+#define TNETD73XX_INTC_RESERVED11 11 /* Reserved */
-+#define TNETD73XX_INTC_RESERVED12 12 /* Reserved */
-+#define TNETD73XX_INTC_RESERVED13 13 /* Reserved */
-+#define TNETD73XX_INTC_RESERVED14 14 /* Reserved */
-+#define TNETD73XX_INTC_ATMSAR 15 /* ATM SAR int */
-+#define TNETD73XX_INTC_RESERVED16 16 /* Reserved */
-+#define TNETD73XX_INTC_RESERVED17 17 /* Reserved */
-+#define TNETD73XX_INTC_RESERVED18 18 /* Reserved */
-+#define TNETD73XX_INTC_EMAC0 19 /* EMAC 0 int */
-+#define TNETD73XX_INTC_RESERVED20 20 /* Reserved */
-+#define TNETD73XX_INTC_VLYNQ0 21 /* VLYNQ 0 int */
-+#define TNETD73XX_INTC_CODEC 22 /* CODEC int */
-+#define TNETD73XX_INTC_RESERVED23 23 /* Reserved */
-+#define TNETD73XX_INTC_USBSLAVE 24 /* USB Slave int */
-+#define TNETD73XX_INTC_VLYNQ1 25 /* VLYNQ 1 int */
-+#define TNETD73XX_INTC_RESERVED26 26 /* Reserved */
-+#define TNETD73XX_INTC_RESERVED27 27 /* Reserved */
-+#define TNETD73XX_INTC_ETH_PHY 28 /* Ethernet PHY */
-+#define TNETD73XX_INTC_I2C 29 /* I2C int */
-+#define TNETD73XX_INTC_MCDMA2 30 /* MCDMA 2 int */
-+#define TNETD73XX_INTC_MCDMA3 31 /* MCDMA 3 int */
-+#define TNETD73XX_INTC_RESERVED32 32 /* Reserved */
-+#define TNETD73XX_INTC_EMAC1 33 /* EMAC 1 int */
-+#define TNETD73XX_INTC_RESERVED34 34 /* Reserved */
-+#define TNETD73XX_INTC_RESERVED35 35 /* Reserved */
-+#define TNETD73XX_INTC_RESERVED36 36 /* Reserved */
-+#define TNETD73XX_INTC_VDMAVTRX 37 /* VDMAVTRX */
-+#define TNETD73XX_INTC_VDMAVTTX 38 /* VDMAVTTX */
-+#define TNETD73XX_INTC_ADSLSS 39 /* ADSLSS */
-+
-+/* Secondary interrupts */
-+#define TNETD73XX_INTC_SEC0 40 /* Secondary */
-+#define TNETD73XX_INTC_SEC1 41 /* Secondary */
-+#define TNETD73XX_INTC_SEC2 42 /* Secondary */
-+#define TNETD73XX_INTC_SEC3 43 /* Secondary */
-+#define TNETD73XX_INTC_SEC4 44 /* Secondary */
-+#define TNETD73XX_INTC_SEC5 45 /* Secondary */
-+#define TNETD73XX_INTC_SEC6 46 /* Secondary */
-+#define TNETD73XX_INTC_EMIF 47 /* EMIF */
-+#define TNETD73XX_INTC_SEC8 48 /* Secondary */
-+#define TNETD73XX_INTC_SEC9 49 /* Secondary */
-+#define TNETD73XX_INTC_SEC10 50 /* Secondary */
-+#define TNETD73XX_INTC_SEC11 51 /* Secondary */
-+#define TNETD73XX_INTC_SEC12 52 /* Secondary */
-+#define TNETD73XX_INTC_SEC13 53 /* Secondary */
-+#define TNETD73XX_INTC_SEC14 54 /* Secondary */
-+#define TNETD73XX_INTC_SEC15 55 /* Secondary */
-+#define TNETD73XX_INTC_SEC16 56 /* Secondary */
-+#define TNETD73XX_INTC_SEC17 57 /* Secondary */
-+#define TNETD73XX_INTC_SEC18 58 /* Secondary */
-+#define TNETD73XX_INTC_SEC19 59 /* Secondary */
-+#define TNETD73XX_INTC_SEC20 60 /* Secondary */
-+#define TNETD73XX_INTC_SEC21 61 /* Secondary */
-+#define TNETD73XX_INTC_SEC22 62 /* Secondary */
-+#define TNETD73XX_INTC_SEC23 63 /* Secondary */
-+#define TNETD73XX_INTC_SEC24 64 /* Secondary */
-+#define TNETD73XX_INTC_SEC25 65 /* Secondary */
-+#define TNETD73XX_INTC_SEC26 66 /* Secondary */
-+#define TNETD73XX_INTC_SEC27 67 /* Secondary */
-+#define TNETD73XX_INTC_SEC28 68 /* Secondary */
-+#define TNETD73XX_INTC_SEC29 69 /* Secondary */
-+#define TNETD73XX_INTC_SEC30 70 /* Secondary */
-+#define TNETD73XX_INTC_SEC31 71 /* Secondary */
-+
-+/* These ugly macros are to access the -1 registers, like config1 */
-+#define MFC0_SEL1_OPCODE(dst, src)\
-+ .word (0x40000000 | ((dst)<<16) | ((src)<<11) | 1);\
-+ nop; \
-+ nop; \
-+ nop
-+
-+#define MTC0_SEL1_OPCODE(dst, src)\
-+ .word (0x40800000 | ((dst)<<16) | ((src)<<11) | 1);\
-+ nop; \
-+ nop; \
-+ nop
-+
-+
-+/* Below are Jade core specific */
-+#define CFG0_4K_IL_MASK 0x00380000
-+#define CFG0_4K_IL_SHIFT 19
-+#define CFG0_4K_IA_MASK 0x00070000
-+#define CFG0_4K_IA_SHIFT 16
-+#define CFG0_4K_IS_MASK 0x01c00000
-+#define CFG0_4K_IS_SHIFT 22
-+
-+#define CFG0_4K_DL_MASK 0x00001c00
-+#define CFG0_4K_DL_SHIFT 10
-+#define CFG0_4K_DA_MASK 0x00000380
-+#define CFG0_4K_DA_SHIFT 7
-+#define CFG0_4K_DS_MASK 0x0000E000
-+#define CFG0_4K_DS_SHIFT 13
-+
-+
-+
-+#endif /* __TNETD73XX_H_ */
-diff -urN linux.old/include/asm-mips/ar7/tnetd73xx_err.h linux.dev/include/asm-mips/ar7/tnetd73xx_err.h
---- linux.old/include/asm-mips/ar7/tnetd73xx_err.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/tnetd73xx_err.h 2005-11-10 01:10:46.075589000 +0100
-@@ -0,0 +1,42 @@
-+/******************************************************************************
-+ * FILE PURPOSE: TNETD73xx Error Definations Header File
-+ ******************************************************************************
-+ * FILE NAME: tnetd73xx_err.h
-+ *
-+ * DESCRIPTION: Error definations for TNETD73XX
-+ *
-+ * REVISION HISTORY:
-+ * 27 Nov 02 - PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+
-+#ifndef __TNETD73XX_ERR_H__
-+#define __TNETD73XX_ERR_H__
-+
-+typedef enum TNETD73XX_ERR_t
-+{
-+ TNETD73XX_ERR_OK = 0, /* OK or SUCCESS */
-+ TNETD73XX_ERR_ERROR = -1, /* Unspecified/Generic ERROR */
-+
-+ /* Pointers and args */
-+ TNETD73XX_ERR_INVARG = -2, /* Invaild argument to the call */
-+ TNETD73XX_ERR_NULLPTR = -3, /* NULL pointer */
-+ TNETD73XX_ERR_BADPTR = -4, /* Bad (out of mem) pointer */
-+
-+ /* Memory issues */
-+ TNETD73XX_ERR_ALLOC_FAIL = -10, /* allocation failed */
-+ TNETD73XX_ERR_FREE_FAIL = -11, /* free failed */
-+ TNETD73XX_ERR_MEM_CORRUPT = -12, /* corrupted memory */
-+ TNETD73XX_ERR_BUF_LINK = -13, /* buffer linking failed */
-+
-+ /* Device issues */
-+ TNETD73XX_ERR_DEVICE_TIMEOUT = -20, /* device timeout on read/write */
-+ TNETD73XX_ERR_DEVICE_MALFUNC = -21, /* device malfunction */
-+
-+ TNETD73XX_ERR_INVID = -30 /* Invalid ID */
-+
-+} TNETD73XX_ERR;
-+
-+#endif /* __TNETD73XX_ERR_H__ */
-diff -urN linux.old/include/asm-mips/ar7/tnetd73xx_misc.h linux.dev/include/asm-mips/ar7/tnetd73xx_misc.h
---- linux.old/include/asm-mips/ar7/tnetd73xx_misc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/tnetd73xx_misc.h 2005-11-10 01:10:46.075589000 +0100
-@@ -0,0 +1,239 @@
-+/******************************************************************************
-+ * FILE PURPOSE: TNETD73xx Misc modules API Header
-+ ******************************************************************************
-+ * FILE NAME: tnetd73xx_misc.h
-+ *
-+ * DESCRIPTION: Clock Control, Reset Control, Power Management, GPIO
-+ * FSER Modules API
-+ * As per TNETD73xx specifications
-+ *
-+ * REVISION HISTORY:
-+ * 27 Nov 02 - Sharath Kumar PSP TII
-+ * 14 Feb 03 - Anant Gole PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+#ifndef __TNETD73XX_MISC_H__
-+#define __TNETD73XX_MISC_H__
-+
-+/*****************************************************************************
-+ * Reset Control Module
-+ *****************************************************************************/
-+
-+typedef enum TNETD73XX_RESET_MODULE_tag
-+{
-+ RESET_MODULE_UART0 = 0,
-+ RESET_MODULE_UART1 = 1,
-+ RESET_MODULE_I2C = 2,
-+ RESET_MODULE_TIMER0 = 3,
-+ RESET_MODULE_TIMER1 = 4,
-+ RESET_MODULE_GPIO = 6,
-+ RESET_MODULE_ADSLSS = 7,
-+ RESET_MODULE_USBS = 8,
-+ RESET_MODULE_SAR = 9,
-+ RESET_MODULE_VDMA_VT = 11,
-+ RESET_MODULE_FSER = 12,
-+ RESET_MODULE_VLYNQ1 = 16,
-+ RESET_MODULE_EMAC0 = 17,
-+ RESET_MODULE_DMA = 18,
-+ RESET_MODULE_BIST = 19,
-+ RESET_MODULE_VLYNQ0 = 20,
-+ RESET_MODULE_EMAC1 = 21,
-+ RESET_MODULE_MDIO = 22,
-+ RESET_MODULE_ADSLSS_DSP = 23,
-+ RESET_MODULE_EPHY = 26
-+} TNETD73XX_RESET_MODULE_T;
-+
-+typedef enum TNETD73XX_RESET_CTRL_tag
-+{
-+ IN_RESET = 0,
-+ OUT_OF_RESET
-+} TNETD73XX_RESET_CTRL_T;
-+
-+typedef enum TNETD73XX_SYS_RST_MODE_tag
-+{
-+ RESET_SOC_WITH_MEMCTRL = 1, /* SW0 bit in SWRCR register */
-+ RESET_SOC_WITHOUT_MEMCTRL = 2 /* SW1 bit in SWRCR register */
-+} TNETD73XX_SYS_RST_MODE_T;
-+
-+typedef enum TNETD73XX_SYS_RESET_STATUS_tag
-+{
-+ HARDWARE_RESET = 0,
-+ SOFTWARE_RESET0, /* Caused by writing 1 to SW0 bit in SWRCR register */
-+ WATCHDOG_RESET,
-+ SOFTWARE_RESET1 /* Caused by writing 1 to SW1 bit in SWRCR register */
-+} TNETD73XX_SYS_RESET_STATUS_T;
-+
-+void tnetd73xx_reset_ctrl(TNETD73XX_RESET_MODULE_T reset_module,
-+ TNETD73XX_RESET_CTRL_T reset_ctrl);
-+TNETD73XX_RESET_CTRL_T tnetd73xx_get_reset_status(TNETD73XX_RESET_MODULE_T reset_module);
-+void tnetd73xx_sys_reset(TNETD73XX_SYS_RST_MODE_T mode);
-+TNETD73XX_SYS_RESET_STATUS_T tnetd73xx_get_sys_last_reset_status(void);
-+
-+/*****************************************************************************
-+ * Power Control Module
-+ *****************************************************************************/
-+
-+typedef enum TNETD73XX_POWER_MODULE_tag
-+{
-+ POWER_MODULE_USBSP = 0,
-+ POWER_MODULE_WDTP = 1,
-+ POWER_MODULE_UT0P = 2,
-+ POWER_MODULE_UT1P = 3,
-+ POWER_MODULE_IICP = 4,
-+ POWER_MODULE_VDMAP = 5,
-+ POWER_MODULE_GPIOP = 6,
-+ POWER_MODULE_VLYNQ1P = 7,
-+ POWER_MODULE_SARP = 8,
-+ POWER_MODULE_ADSLP = 9,
-+ POWER_MODULE_EMIFP = 10,
-+ POWER_MODULE_ADSPP = 12,
-+ POWER_MODULE_RAMP = 13,
-+ POWER_MODULE_ROMP = 14,
-+ POWER_MODULE_DMAP = 15,
-+ POWER_MODULE_BISTP = 16,
-+ POWER_MODULE_TIMER0P = 18,
-+ POWER_MODULE_TIMER1P = 19,
-+ POWER_MODULE_EMAC0P = 20,
-+ POWER_MODULE_EMAC1P = 22,
-+ POWER_MODULE_EPHYP = 24,
-+ POWER_MODULE_VLYNQ0P = 27,
-+} TNETD73XX_POWER_MODULE_T;
-+
-+typedef enum TNETD73XX_POWER_CTRL_tag
-+{
-+ POWER_CTRL_POWER_UP = 0,
-+ POWER_CTRL_POWER_DOWN
-+} TNETD73XX_POWER_CTRL_T;
-+
-+typedef enum TNETD73XX_SYS_POWER_MODE_tag
-+{
-+ GLOBAL_POWER_MODE_RUN = 0, /* All system is up */
-+ GLOBAL_POWER_MODE_IDLE, /* MIPS is power down, all peripherals working */
-+ GLOBAL_POWER_MODE_STANDBY, /* Chip in power down, but clock to ADSKL subsystem is running */
-+ GLOBAL_POWER_MODE_POWER_DOWN /* Total chip is powered down */
-+} TNETD73XX_SYS_POWER_MODE_T;
-+
-+void tnetd73xx_power_ctrl(TNETD73XX_POWER_MODULE_T power_module, TNETD73XX_POWER_CTRL_T power_ctrl);
-+TNETD73XX_POWER_CTRL_T tnetd73xx_get_pwr_status(TNETD73XX_POWER_MODULE_T power_module);
-+void tnetd73xx_set_global_pwr_mode(TNETD73XX_SYS_POWER_MODE_T power_mode);
-+TNETD73XX_SYS_POWER_MODE_T tnetd73xx_get_global_pwr_mode(void);
-+
-+/*****************************************************************************
-+ * Wakeup Control
-+ *****************************************************************************/
-+
-+typedef enum TNETD73XX_WAKEUP_INTERRUPT_tag
-+{
-+ WAKEUP_INT0 = 1,
-+ WAKEUP_INT1 = 2,
-+ WAKEUP_INT2 = 4,
-+ WAKEUP_INT3 = 8
-+} TNETD73XX_WAKEUP_INTERRUPT_T;
-+
-+typedef enum TNETD73XX_WAKEUP_CTRL_tag
-+{
-+ WAKEUP_DISABLED = 0,
-+ WAKEUP_ENABLED
-+} TNETD73XX_WAKEUP_CTRL_T;
-+
-+typedef enum TNETD73XX_WAKEUP_POLARITY_tag
-+{
-+ WAKEUP_ACTIVE_HIGH = 0,
-+ WAKEUP_ACTIVE_LOW
-+} TNETD73XX_WAKEUP_POLARITY_T;
-+
-+void tnetd73xx_wakeup_ctrl(TNETD73XX_WAKEUP_INTERRUPT_T wakeup_int,
-+ TNETD73XX_WAKEUP_CTRL_T wakeup_ctrl,
-+ TNETD73XX_WAKEUP_POLARITY_T wakeup_polarity);
-+
-+/*****************************************************************************
-+ * FSER Control
-+ *****************************************************************************/
-+
-+typedef enum TNETD73XX_FSER_MODE_tag
-+{
-+ FSER_I2C = 0,
-+ FSER_UART = 1
-+} TNETD73XX_FSER_MODE_T;
-+
-+void tnetd73xx_fser_ctrl(TNETD73XX_FSER_MODE_T fser_mode);
-+
-+/*****************************************************************************
-+ * Clock Control
-+ *****************************************************************************/
-+
-+#define CLK_MHZ(x) ( (x) * 1000000 )
-+
-+typedef enum TNETD73XX_CLKC_ID_tag
-+{
-+ CLKC_SYS = 0,
-+ CLKC_MIPS,
-+ CLKC_USB,
-+ CLKC_ADSLSS
-+} TNETD73XX_CLKC_ID_T;
-+
-+void tnetd73xx_clkc_init(__u32 afeclk, __u32 refclk, __u32 xtal3in);
-+TNETD73XX_ERR tnetd73xx_clkc_set_freq(TNETD73XX_CLKC_ID_T clk_id, __u32 output_freq);
-+__u32 tnetd73xx_clkc_get_freq(TNETD73XX_CLKC_ID_T clk_id);
-+
-+/*****************************************************************************
-+ * GPIO Control
-+ *****************************************************************************/
-+
-+typedef enum TNETD73XX_GPIO_PIN_tag
-+{
-+ GPIO_UART0_RD = 0,
-+ GPIO_UART0_TD = 1,
-+ GPIO_UART0_RTS = 2,
-+ GPIO_UART0_CTS = 3,
-+ GPIO_FSER_CLK = 4,
-+ GPIO_FSER_D = 5,
-+ GPIO_EXT_AFE_SCLK = 6,
-+ GPIO_EXT_AFE_TX_FS = 7,
-+ GPIO_EXT_AFE_TXD = 8,
-+ GPIO_EXT_AFE_RS_FS = 9,
-+ GPIO_EXT_AFE_RXD1 = 10,
-+ GPIO_EXT_AFE_RXD0 = 11,
-+ GPIO_EXT_AFE_CDIN = 12,
-+ GPIO_EXT_AFE_CDOUT = 13,
-+ GPIO_EPHY_SPEED100 = 14,
-+ GPIO_EPHY_LINKON = 15,
-+ GPIO_EPHY_ACTIVITY = 16,
-+ GPIO_EPHY_FDUPLEX = 17,
-+ GPIO_EINT0 = 18,
-+ GPIO_EINT1 = 19,
-+ GPIO_MBSP0_TCLK = 20,
-+ GPIO_MBSP0_RCLK = 21,
-+ GPIO_MBSP0_RD = 22,
-+ GPIO_MBSP0_TD = 23,
-+ GPIO_MBSP0_RFS = 24,
-+ GPIO_MBSP0_TFS = 25,
-+ GPIO_MII_DIO = 26,
-+ GPIO_MII_DCLK = 27,
-+} TNETD73XX_GPIO_PIN_T;
-+
-+typedef enum TNETD73XX_GPIO_PIN_MODE_tag
-+{
-+ FUNCTIONAL_PIN = 0,
-+ GPIO_PIN = 1
-+} TNETD73XX_GPIO_PIN_MODE_T;
-+
-+typedef enum TNETD73XX_GPIO_PIN_DIRECTION_tag
-+{
-+ GPIO_OUTPUT_PIN = 0,
-+ GPIO_INPUT_PIN = 1
-+} TNETD73XX_GPIO_PIN_DIRECTION_T;
-+
-+void tnetd73xx_gpio_init(void);
-+void tnetd73xx_gpio_ctrl(TNETD73XX_GPIO_PIN_T gpio_pin,
-+ TNETD73XX_GPIO_PIN_MODE_T pin_mode,
-+ TNETD73XX_GPIO_PIN_DIRECTION_T pin_direction);
-+void tnetd73xx_gpio_out(TNETD73XX_GPIO_PIN_T gpio_pin, int value);
-+int tnetd73xx_gpio_in(TNETD73XX_GPIO_PIN_T gpio_pin);
-+
-+/* TNETD73XX Revision */
-+__u32 tnetd73xx_get_revision(void);
-+
-+#endif /* __TNETD73XX_MISC_H__ */
-diff -urN linux.old/include/asm-mips/ar7/vlynq.h linux.dev/include/asm-mips/ar7/vlynq.h
---- linux.old/include/asm-mips/ar7/vlynq.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/vlynq.h 2005-11-10 01:10:46.095590250 +0100
-@@ -0,0 +1,610 @@
-+/***************************************************************************
-+**+----------------------------------------------------------------------+**
-+**| **** |**
-+**| **** |**
-+**| ******o*** |**
-+**| ********_///_**** |**
-+**| ***** /_//_/ **** |**
-+**| ** ** (__/ **** |**
-+**| ********* |**
-+**| **** |**
-+**| *** |**
-+**| |**
-+**| Copyright (c) 2003 Texas Instruments Incorporated |**
-+**| ALL RIGHTS RESERVED |**
-+**| |**
-+**| Permission is hereby granted to licensees of Texas Instruments |**
-+**| Incorporated (TI) products to use this computer program for the sole |**
-+**| purpose of implementing a licensee product based on TI products. |**
-+**| No other rights to reproduce, use, or disseminate this computer |**
-+**| program, whether in part or in whole, are granted. |**
-+**| |**
-+**| TI makes no representation or warranties with respect to the |**
-+**| performance of this computer program, and specifically disclaims |**
-+**| any responsibility for any damages, special or consequential, |**
-+**| connected with the use of this program. |**
-+**| |**
-+**+----------------------------------------------------------------------+**
-+***************************************************************************/
-+
-+/*********************************************************************************
-+ * ------------------------------------------------------------------------------
-+ * Module : vlynq_hal.h
-+ * Description :
-+ * This header file provides the set of functions exported by the
-+ * VLYNQ HAL. This file is included from the SOC specific VLYNQ driver wrapper.
-+ * ------------------------------------------------------------------------------
-+ *********************************************************************************/
-+
-+#ifndef _VLYNQ_HAL_H_
-+#define _VLYNQ_HAL_H_
-+
-+/* Enable/Disable debug feature */
-+#undef VLYNQ_DEBUG
-+
-+#ifdef VLYNQ_DEBUG /* This needs to be OS abstracted - for testing use vxworks/linux calls */
-+#define debugPrint(format,args...)
-+#else
-+#define debugPrint(format,args...)
-+#endif
-+
-+ /* number of VLYNQ memory regions supported */
-+#define VLYNQ_MAX_MEMORY_REGIONS 0x04
-+
-+ /* Max.number of external interrupt inputs supported by VLYNQ module */
-+#define VLYNQ_IVR_MAXIVR 0x08
-+
-+#define VLYNQ_CLK_DIV_MAX 0x08
-+#define VLYNQ_CLK_DIV_MIN 0x01
-+
-+
-+/*** the total number of entries allocated for ICB would be
-+ * 32(for 32 bits in IntPending register) + VLYNQ_IVR_CHAIN_SLOTS*/
-+#define VLYNQ_IVR_CHAIN_SLOTS 10
-+
-+
-+/* Error defines */
-+#define VLYNQ_SUCCESS 0
-+
-+#define VLYNQ_ERRCODE_BASE 0 /* Chosen by system */
-+#define VLYNQ_INVALID_ARG -(VLYNQ_ERRCODE_BASE+1)
-+#define VLYNQ_INVALID_DRV_STATE -(VLYNQ_ERRCODE_BASE+2)
-+#define VLYNQ_INT_CONFIG_ERR -(VLYNQ_ERRCODE_BASE+3)
-+#define VLYNQ_LINK_DOWN -(VLYNQ_ERRCODE_BASE+4)
-+#define VLYNQ_MEMALLOC_FAIL -(VLYNQ_ERRCODE_BASE+5)
-+#define VLYNQ_ISR_NON_EXISTENT -(VLYNQ_ERRCODE_BASE+6)
-+#define VLYNQ_INTVEC_MAP_NOT_FOUND -(VLYNQ_ERRCODE_BASE+7)
-+
-+/* Vlynq Defines and Macros */
-+
-+#define VLYNQ_NUM_INT_BITS 32 /* 32 bit interrupt staus register */
-+
-+/* Base address of module */
-+#define VLYNQ_BASE (pdev->module_base)
-+
-+#define VLYNQ_REMOTE_REGS_OFFSET 0x0080
-+
-+#define VLYNQ_REV_OFFSET 0x0000
-+#define VLYNQ_CTRL_OFFSET 0x0004
-+#define VLYNQ_STATUS_OFFSET 0x0008
-+#define VLYNQ_INT_STAT_OFFSET 0x0010
-+#define VLYNQ_INT_PEND_OFFSET 0x0014
-+#define VLYNQ_INT_PTR_OFFSET 0x0018
-+#define VLYNQ_TXMAP_OFFSET 0x001c
-+
-+#define VLYNQ_RX0MAP_SIZE_REG_OFFSET 0x0020
-+#define VLYNQ_RX0MAP_OFFSET_REG_OFFSET 0x0024
-+
-+#define VLYNQ_CHIP_VER_OFFSET 0x0040
-+#define VLYNQ_IVR_REGS_OFFSET 0x0060
-+
-+#define VLYNQ_INT_PENDING_REG_PTR 0x14
-+#define VLYNQ_R_INT_PENDING_REG_PTR VLYNQ_REMOTE_REGS_OFFSET + 0x14
-+
-+#define VLYNQ_REV_REG *((volatile unsigned int *)(VLYNQ_BASE+VLYNQ_REV_OFFSET))
-+#define VLYNQ_CTRL_REG *((volatile unsigned int *)(VLYNQ_BASE+VLYNQ_CTRL_OFFSET))
-+#define VLYNQ_STATUS_REG *((volatile unsigned int *)(VLYNQ_BASE+VLYNQ_STATUS_OFFSET))
-+#define VLYNQ_INT_STAT_REG *((volatile unsigned int *)(VLYNQ_BASE+VLYNQ_INT_STAT_OFFSET))
-+#define VLYNQ_INT_PEND_REG *((volatile unsigned int *)(VLYNQ_BASE+VLYNQ_INT_PEND_OFFSET))
-+#define VLYNQ_INT_PTR_REG *((volatile unsigned int *)(VLYNQ_BASE+VLYNQ_INT_PTR_OFFSET))
-+#define VLYNQ_TXMAP_REG *((volatile unsigned int *)(VLYNQ_BASE+VLYNQ_TXMAP_OFFSET))
-+
-+/** map takes on values between 1 to VLYNQ_MAX_MEMORY_REGIONS **/
-+#define VLYNQ_RXMAP_SIZE_REG(map) \
-+ *((volatile unsigned int *)(VLYNQ_BASE+VLYNQ_RX0MAP_SIZE_REG_OFFSET+( (map-1)<<3)))
-+
-+/** map takes on values between 1 to VLYNQ_MAX_MEMORY_REGIONS **/
-+#define VLYNQ_RXMAP_OFFSET_REG(map) \
-+ *((volatile unsigned int *)(VLYNQ_BASE+VLYNQ_RX0MAP_OFFSET_REG_OFFSET+( (map-1)<<3)))
-+
-+#define VLYNQ_CHIP_VER_REG *((volatile unsigned int *)(VLYNQ_BASE+VLYNQ_CHIP_VER_OFFSET))
-+
-+/* 0 =< ivr <= 31; currently ivr < VLYNQ_IVR_MAXIVR=8) */
-+#define VLYNQ_IVR_OFFSET(ivr) \
-+ (VLYNQ_BASE + VLYNQ_IVR_REGS_OFFSET +((((unsigned)(ivr)) & 31) & ~3) )
-+
-+#define VLYNQ_IVR_03TO00_REG *((volatile unsigned int*) (VLYNQ_IVR_OFFSET(0)) )
-+#define VLYNQ_IVR_07TO04_REG *((volatile unsigned int*) (VLYNQ_IVR_OFFSET(4)) )
-+/*** Can be extended for 11TO08...31TO28 when all 31 are supported**/
-+
-+#define VLYNQ_IVR_INTEN(ivr) (((unsigned int)(0x80)) << ((((unsigned)(ivr)) % 4) * 8))
-+#define VLYNQ_IVR_INTTYPE(ivr) (((unsigned int)(0x40)) << ((((unsigned)(ivr)) % 4) * 8))
-+#define VLYNQ_IVR_INTPOL(ivr) (((unsigned int)(0x20)) << ((((unsigned)(ivr)) % 4) * 8))
-+#define VLYNQ_IVR_INTVEC(ivr) (((unsigned int)(0x1F)) << ((((unsigned)(ivr)) % 4) * 8))
-+#define VLYNQ_IVR_INTALL(ivr) (((unsigned int)(0xFF)) << ((((unsigned)(ivr)) % 4) * 8))
-+
-+
-+
-+/*********************************
-+ * Remote VLYNQ register set *
-+ *********************************/
-+
-+#define VLYNQ_R_REV_OFFSET 0x0080
-+#define VLYNQ_R_CTRL_OFFSET 0x0084
-+#define VLYNQ_R_STATUS_OFFSET 0x0088
-+#define VLYNQ_R_INT_STAT_OFFSET 0x0090
-+#define VLYNQ_R_INT_PEND_OFFSET 0x0094
-+#define VLYNQ_R_INT_PTR_OFFSET 0x0098
-+#define VLYNQ_R_TXMAP_OFFSET 0x009c
-+
-+#define VLYNQ_R_RX0MAP_SIZE_REG_OFFSET 0x00A0
-+#define VLYNQ_R_RX0MAP_OFFSET_REG_OFFSET 0x00A4
-+
-+#define VLYNQ_R_CHIP_VER_OFFSET 0x00C0
-+#define VLYNQ_R_IVR_REGS_OFFSET 0x00E0
-+
-+#define VLYNQ_R_REV_REG *((volatile unsigned int *)(VLYNQ_BASE + VLYNQ_R_REV_OFFSET))
-+#define VLYNQ_R_CTRL_REG *((volatile unsigned int *)(VLYNQ_BASE + VLYNQ_R_CTRL_OFFSET))
-+#define VLYNQ_R_STATUS_REG *((volatile unsigned int *)(VLYNQ_BASE + VLYNQ_R_STATUS_OFFSET))
-+#define VLYNQ_R_INT_STAT_REG *((volatile unsigned int *)(VLYNQ_BASE + VLYNQ_R_INT_STAT_OFFSET))
-+#define VLYNQ_R_INT_PEND_REG *((volatile unsigned int *)(VLYNQ_BASE + VLYNQ_R_INT_PEND_OFFSET))
-+#define VLYNQ_R_INT_PTR_REG *((volatile unsigned int *)(VLYNQ_BASE + VLYNQ_R_INT_PTR_OFFSET))
-+#define VLYNQ_R_TXMAP_REG *((volatile unsigned int *)(VLYNQ_BASE + VLYNQ_R_TXMAP_OFFSET))
-+
-+/** map takes on values between 1 to VLYNQ_MAX_MEMORY_REGIONS **/
-+#define VLYNQ_R_RXMAP_SIZE_REG(map) \
-+ *((volatile unsigned int *)(VLYNQ_BASE + VLYNQ_R_RX0MAP_SIZE_REG_OFFSET + ((map-1)<<3)))
-+
-+/** map takes on values between 1 to VLYNQ_MAX_MEMORY_REGIONS **/
-+#define VLYNQ_R_RXMAP_OFFSET_REG(map) \
-+ *((volatile unsigned int *)(VLYNQ_BASE + VLYNQ_R_RX0MAP_OFFSET_REG_OFFSET + ((map-1)<<3)))
-+
-+#define VLYNQ_R_CHIP_VER_REG *((volatile unsigned int *)(VLYNQ_BASE + VLYNQ_R_CHIP_VER_OFFSET)
-+
-+#define VLYNQ_R_IVR_OFFSET(ivr) \
-+ (VLYNQ_BASE + VLYNQ_R_IVR_REGS_OFFSET +((((unsigned)(ivr)) & 31) & ~3))
-+
-+
-+/*** Can be extended for 11TO08...31TO28 when all 31 are supported**/
-+#define VLYNQ_R_IVR_03TO00_REG *((volatile unsigned int*) (VLYNQ_R_IVR_OFFSET(0)) )
-+#define VLYNQ_R_IVR_07TO04_REG *((volatile unsigned int*) (VLYNQ_R_IVR_OFFSET(4)) )
-+
-+
-+/****End of remote register set definition******/
-+
-+
-+/*** Masks for individual register fields ***/
-+
-+#define VLYNQ_MODULE_ID_MASK 0xffff0000
-+#define VLYNQ_MAJOR_REV_MASK 0x0000ff00
-+#define VLYNQ_MINOR_REV_MASK 0x000000ff
-+
-+
-+#define VLYNQ_CTL_ILOOP_MASK 0x00000002
-+#define VLYNQ_CTL_INT2CFG_MASK 0x00000080
-+#define VLYNQ_CTL_INTVEC_MASK 0x00001f00
-+#define VLYNQ_CTL_INTEN_MASK 0x00002000
-+#define VLYNQ_CTL_INTLOCAL_MASK 0x00004000
-+#define VLYNQ_CTL_CLKDIR_MASK 0x00008000
-+#define VLYNQ_CTL_CLKDIV_MASK 0x00070000
-+#define VLYNQ_CTL_MODE_MASK 0x00e00000
-+
-+
-+#define VLYNQ_STS_LINK_MASK 0x00000001 /* Link is active */
-+#define VLYNQ_STS_MPEND_MASK 0x00000002 /* Pending master requests */
-+#define VLYNQ_STS_SPEND_MASK 0x00000004 /* Pending slave requests */
-+#define VLYNQ_STS_NFEMPTY0_MASK 0x00000008 /* Master data FIFO not empty */
-+#define VLYNQ_STS_NFEMPTY1_MASK 0x00000010 /* Master command FIFO not empty */
-+#define VLYNQ_STS_NFEMPTY2_MASK 0x00000020 /* Slave data FIFO not empty */
-+#define VLYNQ_STS_NFEMPTY3_MASK 0x00000040 /* Slave command FIFO not empty */
-+#define VLYNQ_STS_LERROR_MASK 0x00000080 /* Local error, w/c */
-+#define VLYNQ_STS_RERROR_MASK 0x00000100 /* remote error w/c */
-+#define VLYNQ_STS_OFLOW_MASK 0x00000200
-+#define VLYNQ_STS_IFLOW_MASK 0x00000400
-+#define VLYNQ_STS_MODESUP_MASK 0x00E00000 /* Highest mode supported */
-+#define VLYNQ_STS_SWIDTH_MASK 0x07000000 /* Used for reading the width of VLYNQ bus */
-+#define VLYNQ_STS_DEBUG_MASK 0xE0000000
-+
-+#define VLYNQ_CTL_INTVEC_SHIFT 0x08
-+#define VLYNQ_CTL_INTEN_SHIFT 0x0D
-+#define VLYNQ_CTL_INT2CFG_SHIFT 0x07
-+#define VLYNQ_CTL_INTLOCAL_SHIFT 0x0E
-+
-+#define VLYNQ_CTL_INTFIELDS_CLEAR_MASK 0x7F80
-+
-+#define VLYNQ_CHIPVER_DEVREV_MASK 0xffff0000
-+#define VLYNQ_CHIPVER_DEVID_MASK 0x0000ffff
-+
-+#define VLYNQ_IVR_INTEN_MASK 0x80
-+#define VLYNQ_IVR_INTTYPE_MASK 0x40
-+#define VLYNQ_IVR_INTPOL_MASK 0x20
-+
-+
-+/**** Helper macros ****/
-+
-+#define VLYNQ_RESETCB(arg) \
-+ if( pdev->reset_cb != NULL) \
-+ { \
-+ (pdev->reset_cb)(pdev, (arg)); \
-+ }
-+
-+#define VLYNQ_STATUS_FLD_WIDTH(sts) (((sts) & VLYNQ_STS_SWIDTH_MASK) >> 24 )
-+#define VLYNQ_CTL_INTVEC(x) (((x) & 31) << 8 )
-+
-+#define VLYNQ_INRANGE(x,hi,lo) (((x) <= (hi)) && ((x) >= (lo)))
-+#define VLYNQ_OUTRANGE(x,hi,lo) (((x) > (hi)) || ((x) < (lo)))
-+
-+#define VLYNQ_ALIGN4(x) (x)=(x)&(~3)
-+
-+
-+/*************************************
-+ * Enums *
-+ *************************************/
-+
-+/* Initialization options define what operations are
-+ * undertaken during vlynq module initialization */
-+typedef enum
-+{
-+ /* Init host local memory regions.This allows
-+ * local host access remote memory regions */
-+ VLYNQ_INIT_LOCAL_MEM_REGIONS = 0x01,
-+ /* Init host remote memory regions.This allows
-+ * remote device access local memory regions */
-+ VLYNQ_INIT_REMOTE_MEM_REGIONS =0x02,
-+ /* Init local interrupt config*/
-+ VLYNQ_INIT_LOCAL_INTERRUPTS =0x04,
-+ /* Init remote interrupt config*/
-+ VLYNQ_INIT_REMOTE_INTERRUPTS =0x08,
-+ /* Check link during initialization*/
-+ VLYNQ_INIT_CHECK_LINK =0x10,
-+ /* configure clock during init */
-+ VLYNQ_INIT_CONFIG_CLOCK =0x20,
-+ /* Clear errors during init */
-+ VLYNQ_INIT_CLEAR_ERRORS =0x40,
-+ /* All options */
-+ VLYNQ_INIT_PERFORM_ALL =0x7F
-+}VLYNQ_INIT_OPTIONS;
-+
-+
-+/* VLYNQ_DEV_TYPE identifies local or remote device */
-+typedef enum
-+{
-+ VLYNQ_LOCAL_DVC = 0, /* vlynq local device (SOC's vlynq module) */
-+ VLYNQ_REMOTE_DVC = 1 /* vlynq remote device (remote vlynq module) */
-+}VLYNQ_DEV_TYPE;
-+
-+
-+/* VLYNQ_CLK_SOURCE identifies the vlynq module clock source */
-+typedef enum
-+{
-+ VLYNQ_CLK_SOURCE_NONE = 0, /* do not initialize clock generator*/
-+ VLYNQ_CLK_SOURCE_LOCAL = 1, /* clock is generated by local machine */
-+ VLYNQ_CLK_SOURCE_REMOTE = 2 /* clock is generated by remote machine */
-+}VLYNQ_CLK_SOURCE;
-+
-+
-+/* VLYNQ_DRV_STATE indicates the current driver state */
-+typedef enum
-+{
-+ VLYNQ_DRV_STATE_UNINIT = 0, /* driver is uninitialized */
-+ VLYNQ_DRV_STATE_ININIT = 1, /* VLYNQ is being initialized */
-+ VLYNQ_DRV_STATE_RUN = 2, /* VLYNQ is running properly */
-+ VLYNQ_DRV_STATE_HOLD = 3, /* driver stopped temporarily */
-+ VLYNQ_DRV_STATE_ERROR = 4 /* driver stopped on unrecoverable error */
-+}VLYNQ_DRV_STATE;
-+
-+
-+/* VLYNQ_BUS_WIDTH identifies the vlynq module bus width */
-+typedef enum
-+{
-+ VLYNQ_BUS_WIDTH_3 = 3,
-+ VLYNQ_BUS_WIDTH_5 = 5,
-+ VLYNQ_BUS_WIDTH_7 = 7,
-+ VLYNQ_BUS_WIDTH_9 = 9
-+}VLYNQ_BUS_WIDTH;
-+
-+
-+/* VLYNQ_LOCAL_INT_CONFIG indicates whether the local vlynq
-+ * interrupts are processed by the host or passed on to the
-+ * remote device.
-+ */
-+typedef enum
-+{
-+ VLYNQ_INT_REMOTE = 0, /* Interrupt packets sent to remote, intlocal=0 */
-+ VLYNQ_INT_LOCAL = 1 /* Interrupts are handled locally, intlocal=1 */
-+}VLYNQ_LOCAL_INT_CONFIG;
-+
-+
-+/* VLYNQ_REMOTE_INT_CONFIG indicates whether the remote
-+ * interrupts are to be handled by the SOC system ISR
-+ * or via the vlynq root ISR
-+ */
-+typedef enum
-+{
-+ VLYNQ_INT_ROOT_ISR = 0, /* remote ints handled via vlynq root ISR */
-+ VLYNQ_INT_SYSTEM_ISR = 1 /* remote ints handled via system ISR */
-+}VLYNQ_REMOTE_INT_CONFIG;
-+
-+
-+/* VLYNQ_INTR_POLARITY - vlynq interrupt polarity setting */
-+typedef enum
-+{
-+ VLYNQ_INTR_ACTIVE_HIGH = 0,
-+ VLYNQ_INTR_ACTIVE_LOW = 1
-+}VLYNQ_INTR_POLARITY;
-+
-+
-+/* VLYNQ_INTR_TYPE - vlynq interrupt type */
-+typedef enum
-+{
-+ VLYNQ_INTR_LEVEL = 0,
-+ VLYNQ_INTR_PULSED = 1
-+}VLYNQ_INTR_TYPE;
-+
-+
-+/* VLYNQ_RESET_MODE - vlynq reset mode */
-+typedef enum
-+{
-+ VLYNQ_RESET_ASSERT, /* hold device in reset state */
-+ VLYNQ_RESET_DEASSERT, /* release device from reset state */
-+ VLYNQ_RESET_INITFAIL, /* handle the device in case driver initialization fails */
-+ VLYNQ_RESET_LINKESTABLISH, /* handle the device in case driver established link */
-+ VLYNQ_RESET_INITFAIL2, /* Driver initialization failed but VLYNQ link exist. */
-+ VLYNQ_RESET_INITOK /* Driver initialization finished OK. */
-+}VLYNQ_RESET_MODE;
-+
-+
-+
-+/*************************************
-+ * Typedefs *
-+ *************************************/
-+
-+struct VLYNQ_DEV_t; /*forward declaration*/
-+
-+/*--------Function Pointers defintions -----------*/
-+
-+/* prototype for interrupt handler definition */
-+typedef void (*VLYNQ_INTR_CNTRL_ISR)(void *arg1,void *arg2,void *arg3);
-+
-+typedef void
-+(*VLYNQ_RESET_REMOTE)(struct VLYNQ_DEV_t *pDev, VLYNQ_RESET_MODE mode);
-+
-+typedef void
-+(*VLYNQ_REPORT_CB)( struct VLYNQ_DEV_t *pDev, /* This VLYNQ */
-+ VLYNQ_DEV_TYPE aSrcDvc, /* Event Cause -local/remote? */
-+ unsigned int dwStatRegVal); /* Value of the relevant status register */
-+
-+
-+/*-------Structure Definitions------------*/
-+
-+typedef struct VLYNQ_MEMORY_MAP_t
-+{
-+ unsigned int Txmap;
-+ unsigned int RxOffset[VLYNQ_MAX_MEMORY_REGIONS];
-+ unsigned int RxSize[VLYNQ_MAX_MEMORY_REGIONS];
-+}VLYNQ_MEMORY_MAP;
-+
-+
-+/**VLYNQ_INTERRUPT_CNTRL - defines the vlynq module interrupt
-+ * settings in vlynq Control register */
-+typedef struct VLYNQ_INTERRUPT_CNTRL_t
-+{
-+ /* vlynq interrupts handled by host or remote - maps to
-+ * intLocal bit in vlynq control register */
-+ VLYNQ_LOCAL_INT_CONFIG intLocal;
-+
-+ /* remote interrupts handled by vlynq isr or host system
-+ * interrupt controller - maps to the int2Cfg in vlynq
-+ * control register */
-+ VLYNQ_REMOTE_INT_CONFIG intRemote;
-+
-+ /* bit in pending/set register used for module interrupts*/
-+ unsigned int map_vector;
-+
-+ /* used only if remote interrupts are to be handled by system ISR*/
-+ unsigned int intr_ptr;
-+
-+}VLYNQ_INTERRUPT_CNTRL;
-+
-+
-+/* VLYNQ_INTR_CNTRL_ICB - defines the Interrupt control block which hold
-+ * the interrupt dispatch table. The vlynq_root_isr() indexes into this
-+ * table to identify the ISR to be invoked
-+ */
-+typedef struct VLYNQ_INTR_CNTRL_ICB_t
-+{
-+ VLYNQ_INTR_CNTRL_ISR isr; /* Clear errors during initialization */
-+ void *arg1 ; /* Arg 1 for the ISR */
-+ void *arg2 ; /* Arg 2 for the ISR */
-+ void *arg3 ; /* Arg 3 for the ISR */
-+ unsigned int isrCount; /* number of ISR invocations so far */
-+ struct VLYNQ_INTR_CNTRL_ICB_t *next;
-+}VLYNQ_INTR_CNTRL_ICB;
-+
-+/* overlay of vlynq register set */
-+typedef struct VLYNQ_REG_SET_t
-+{
-+ unsigned int revision; /*offset : 0x00 */
-+ unsigned int control; /* 0x04*/
-+ unsigned int status; /* 0x08*/
-+ unsigned int pad1; /* 0x0c*/
-+ unsigned int intStatus; /*0x10*/
-+ unsigned int intPending; /*0x14*/
-+ unsigned int intPtr; /*0x18*/
-+ unsigned int txMap; /*0x1C*/
-+ unsigned int rxSize1; /*0x20*/
-+ unsigned int rxOffset1; /*0x24*/
-+ unsigned int rxSize2; /*0x28*/
-+ unsigned int rxOffset2; /*0x2C*/
-+ unsigned int rxSize3; /*0x30*/
-+ unsigned int rxOffset3; /*0x34*/
-+ unsigned int rxSize4; /*0x38*/
-+ unsigned int rxOffset4; /*0x3C*/
-+ unsigned int chipVersion; /*0x40*/
-+ unsigned int pad2[8];
-+ unsigned int ivr30; /*0x60*/
-+ unsigned int ivr74; /*0x64*/
-+ unsigned int pad3[7];
-+}VLYNQ_REG_SET;
-+
-+
-+typedef struct VLYNQ_DEV_t
-+{
-+ /** module index:1,2,3... used for debugging purposes */
-+ unsigned int dev_idx;
-+
-+ /*VLYNQ module base address */
-+ unsigned int module_base;
-+
-+ /* clock source selection */
-+ VLYNQ_CLK_SOURCE clk_source;
-+
-+ /* Clock Divider.Val=1 to 8. VLYNQ_clk = VBUSCLK/clk_div */
-+ unsigned int clk_div;
-+
-+ /* State of the VLYNQ driver, set to VLYNQ_DRV_STATE_UNINIT, when initializing */
-+ VLYNQ_DRV_STATE state;
-+
-+ /* Valid VLYNQ bus width, filled by driver */
-+ VLYNQ_BUS_WIDTH width;
-+
-+ /* local memory mapping */
-+ VLYNQ_MEMORY_MAP local_mem;
-+
-+ /* remote memory mapping */
-+ VLYNQ_MEMORY_MAP remote_mem;
-+
-+ /* Local module interrupt params */
-+ VLYNQ_INTERRUPT_CNTRL local_irq;
-+
-+ /* remote module interrupt params */
-+ VLYNQ_INTERRUPT_CNTRL remote_irq;
-+
-+ /*** ICB related fields **/
-+
-+ /* Sizeof of ICB = VLYNQ_NUM_INT_BITS(for 32 bits in IntPending) +
-+ * expansion slots for shared interrupts*/
-+ VLYNQ_INTR_CNTRL_ICB pIntrCB[VLYNQ_NUM_INT_BITS + VLYNQ_IVR_CHAIN_SLOTS];
-+ VLYNQ_INTR_CNTRL_ICB *freelist;
-+
-+ /* table holding mapping between intVector and the bit position the interrupt
-+ * is mapped to(mapVector)*/
-+ char vector_map[32];
-+
-+ /* user callback for vlynq events, NULL if unused */
-+ VLYNQ_REPORT_CB report_cb;
-+
-+ /* user callback for resetting/realeasing remote device */
-+ VLYNQ_RESET_REMOTE reset_cb;
-+
-+ /*** Handles provided for direct access to register set if need be
-+ * Must be intialized to point to appropriate address during
-+ * vlynq_init */
-+ volatile VLYNQ_REG_SET * local;
-+ volatile VLYNQ_REG_SET * remote;
-+
-+ unsigned int intCount; /* number of interrupts generated so far */
-+ unsigned int isrCount; /* number of ISR invocations so far */
-+}VLYNQ_DEV;
-+
-+
-+typedef struct VLYNQ_ISR_ARGS_t
-+{
-+ int irq;
-+ void * arg;
-+ void * regset;
-+}VLYNQ_ISR_ARGS;
-+
-+
-+/****************************************
-+ * Function Prototypes *
-+ * API exported by generic vlynq driver *
-+ ****************************************/
-+/* Initialization function */
-+int vlynq_init( VLYNQ_DEV *pdev, VLYNQ_INIT_OPTIONS options);
-+
-+/* Check vlynq link */
-+unsigned int vlynq_link_check( VLYNQ_DEV * pdev);
-+
-+/* Set interrupt vector in local or remote device */
-+int vlynq_interrupt_vector_set( VLYNQ_DEV *pdev,
-+ unsigned int int_vector,
-+ unsigned int map_vector,
-+ VLYNQ_DEV_TYPE dev,
-+ VLYNQ_INTR_POLARITY pol,
-+ VLYNQ_INTR_TYPE type);
-+
-+
-+int vlynq_interrupt_vector_cntl( VLYNQ_DEV *pdev,
-+ unsigned int int_vector,
-+ VLYNQ_DEV_TYPE dev,
-+ unsigned int enable);
-+
-+unsigned int vlynq_interrupt_get_count( VLYNQ_DEV *pdev,
-+ unsigned int map_vector);
-+
-+int vlynq_install_isr( VLYNQ_DEV *pdev,
-+ unsigned int map_vector,
-+ VLYNQ_INTR_CNTRL_ISR isr,
-+ void *arg1, void *arg2, void *arg3);
-+
-+int vlynq_uninstall_isr( VLYNQ_DEV *pdev,
-+ unsigned int map_vector,
-+ void *arg1, void *arg2, void *arg3);
-+
-+
-+void vlynq_root_isr(void *arg);
-+
-+void vlynq_delay(unsigned int clktime);
-+
-+/* The following functions, provide better granularity in setting
-+ * interrupt parameters. (for better support of linux INT Controller)
-+ * Note: The interrupt source is identified by "map_vector"- the bit
-+ * position in interrupt status register*/
-+
-+int vlynq_interrupt_vector_map(VLYNQ_DEV * pdev,
-+ VLYNQ_DEV_TYPE dev,
-+ unsigned int int_vector,
-+ unsigned int map_vector);
-+
-+int vlynq_interrupt_set_polarity(VLYNQ_DEV * pdev,
-+ VLYNQ_DEV_TYPE dev,
-+ unsigned int map_vector,
-+ VLYNQ_INTR_POLARITY pol);
-+
-+int vlynq_interrupt_get_polarity( VLYNQ_DEV *pdev ,
-+ VLYNQ_DEV_TYPE dev_type,
-+ unsigned int map_vector);
-+
-+int vlynq_interrupt_set_type(VLYNQ_DEV * pdev,
-+ VLYNQ_DEV_TYPE dev,
-+ unsigned int map_vector,
-+ VLYNQ_INTR_TYPE type);
-+
-+int vlynq_interrupt_get_type( VLYNQ_DEV *pdev,
-+ VLYNQ_DEV_TYPE dev_type,
-+ unsigned int map_vector);
-+
-+int vlynq_interrupt_enable(VLYNQ_DEV* pdev,
-+ VLYNQ_DEV_TYPE dev,
-+ unsigned int map_vector);
-+
-+int vlynq_interrupt_disable(VLYNQ_DEV * pdev,
-+ VLYNQ_DEV_TYPE dev,
-+ unsigned int map_vector);
-+
-+
-+
-+
-+
-+#endif /* _VLYNQ_HAL_H_ */
-diff -urN linux.old/include/asm-mips/ar7/vlynq_hal.h linux.dev/include/asm-mips/ar7/vlynq_hal.h
---- linux.old/include/asm-mips/ar7/vlynq_hal.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/vlynq_hal.h 2005-11-10 01:10:46.095590250 +0100
-@@ -0,0 +1,606 @@
-+/***************************************************************************
-+**+----------------------------------------------------------------------+**
-+**| **** |**
-+**| **** |**
-+**| ******o*** |**
-+**| ********_///_**** |**
-+**| ***** /_//_/ **** |**
-+**| ** ** (__/ **** |**
-+**| ********* |**
-+**| **** |**
-+**| *** |**
-+**| |**
-+**| Copyright (c) 2003 Texas Instruments Incorporated |**
-+**| ALL RIGHTS RESERVED |**
-+**| |**
-+**| Permission is hereby granted to licensees of Texas Instruments |**
-+**| Incorporated (TI) products to use this computer program for the sole |**
-+**| purpose of implementing a licensee product based on TI products. |**
-+**| No other rights to reproduce, use, or disseminate this computer |**
-+**| program, whether in part or in whole, are granted. |**
-+**| |**
-+**| TI makes no representation or warranties with respect to the |**
-+**| performance of this computer program, and specifically disclaims |**
-+**| any responsibility for any damages, special or consequential, |**
-+**| connected with the use of this program. |**
-+**| |**
-+**+----------------------------------------------------------------------+**
-+***************************************************************************/
-+
-+/*********************************************************************************
-+ * ------------------------------------------------------------------------------
-+ * Module : vlynq_hal.h
-+ * Description :
-+ * This header file provides the set of functions exported by the
-+ * VLYNQ HAL. This file is included from the SOC specific VLYNQ driver wrapper.
-+ * ------------------------------------------------------------------------------
-+ *********************************************************************************/
-+
-+#ifndef _VLYNQ_HAL_H_
-+#define _VLYNQ_HAL_H_
-+
-+#include <asm/ar7/avalanche_types.h>
-+#include <asm/ar7/vlynq_hal_params.h>
-+
-+#ifndef PRIVATE
-+#define PRIVATE static
-+#endif
-+
-+#ifndef GLOBAL
-+#define GLOBAL
-+#endif
-+
-+/* Enable/Disable debug feature */
-+#undef VLYNQ_DEBUG
-+
-+#ifdef VLYNQ_DEBUG /* This needs to be OS abstracted - for testing use vxworks/linux calls */
-+#define debugPrint(format,args...)
-+#else
-+#define debugPrint(format,args...)
-+#endif
-+
-+/* Error defines */
-+#define VLYNQ_SUCCESS 0
-+
-+#define VLYNQ_ERRCODE_BASE 0 /* Chosen by system */
-+#define VLYNQ_INVALID_ARG -(VLYNQ_ERRCODE_BASE+1)
-+#define VLYNQ_INVALID_DRV_STATE -(VLYNQ_ERRCODE_BASE+2)
-+#define VLYNQ_INT_CONFIG_ERR -(VLYNQ_ERRCODE_BASE+3)
-+#define VLYNQ_LINK_DOWN -(VLYNQ_ERRCODE_BASE+4)
-+#define VLYNQ_MEMALLOC_FAIL -(VLYNQ_ERRCODE_BASE+5)
-+#define VLYNQ_ISR_NON_EXISTENT -(VLYNQ_ERRCODE_BASE+6)
-+#define VLYNQ_INTVEC_MAP_NOT_FOUND -(VLYNQ_ERRCODE_BASE+7)
-+
-+/* Vlynq Defines and Macros */
-+
-+#define VLYNQ_NUM_INT_BITS 32 /* 32 bit interrupt staus register */
-+
-+/* Base address of module */
-+#define VLYNQ_BASE (pdev->module_base)
-+
-+#define VLYNQ_REMOTE_REGS_OFFSET 0x0080
-+
-+#define VLYNQ_REV_OFFSET 0x0000
-+#define VLYNQ_CTRL_OFFSET 0x0004
-+#define VLYNQ_STATUS_OFFSET 0x0008
-+#define VLYNQ_INT_STAT_OFFSET 0x0010
-+#define VLYNQ_INT_PEND_OFFSET 0x0014
-+#define VLYNQ_INT_PTR_OFFSET 0x0018
-+#define VLYNQ_TXMAP_OFFSET 0x001c
-+
-+#define VLYNQ_RX0MAP_SIZE_REG_OFFSET 0x0020
-+#define VLYNQ_RX0MAP_OFFSET_REG_OFFSET 0x0024
-+
-+#define VLYNQ_CHIP_VER_OFFSET 0x0040
-+#define VLYNQ_IVR_REGS_OFFSET 0x0060
-+
-+#define VLYNQ_INT_PENDING_REG_PTR 0x14
-+#define VLYNQ_R_INT_PENDING_REG_PTR VLYNQ_REMOTE_REGS_OFFSET + 0x14
-+
-+#define VLYNQ_REV_REG *((volatile UINT32 *)(VLYNQ_BASE+VLYNQ_REV_OFFSET))
-+#define VLYNQ_CTRL_REG *((volatile UINT32 *)(VLYNQ_BASE+VLYNQ_CTRL_OFFSET))
-+#define VLYNQ_STATUS_REG *((volatile UINT32 *)(VLYNQ_BASE+VLYNQ_STATUS_OFFSET))
-+#define VLYNQ_INT_STAT_REG *((volatile UINT32 *)(VLYNQ_BASE+VLYNQ_INT_STAT_OFFSET))
-+#define VLYNQ_INT_PEND_REG *((volatile UINT32 *)(VLYNQ_BASE+VLYNQ_INT_PEND_OFFSET))
-+#define VLYNQ_INT_PTR_REG *((volatile UINT32 *)(VLYNQ_BASE+VLYNQ_INT_PTR_OFFSET))
-+#define VLYNQ_TXMAP_REG *((volatile UINT32 *)(VLYNQ_BASE+VLYNQ_TXMAP_OFFSET))
-+
-+/** map takes on values between 1 to VLYNQ_MAX_MEMORY_REGIONS **/
-+#define VLYNQ_RXMAP_SIZE_REG(map) \
-+ *((volatile UINT32 *)(VLYNQ_BASE+VLYNQ_RX0MAP_SIZE_REG_OFFSET+( (map-1)<<3)))
-+
-+/** map takes on values between 1 to VLYNQ_MAX_MEMORY_REGIONS **/
-+#define VLYNQ_RXMAP_OFFSET_REG(map) \
-+ *((volatile UINT32 *)(VLYNQ_BASE+VLYNQ_RX0MAP_OFFSET_REG_OFFSET+( (map-1)<<3)))
-+
-+#define VLYNQ_CHIP_VER_REG *((volatile UINT32 *)(VLYNQ_BASE+VLYNQ_CHIP_VER_OFFSET))
-+
-+/* 0 =< ivr <= 31; currently ivr < VLYNQ_IVR_MAXIVR=8) */
-+#define VLYNQ_IVR_OFFSET(ivr) \
-+ (VLYNQ_BASE + VLYNQ_IVR_REGS_OFFSET +((((unsigned)(ivr)) & 31) & ~3) )
-+
-+#define VLYNQ_IVR_03TO00_REG *((volatile UINT32*) (VLYNQ_IVR_OFFSET(0)) )
-+#define VLYNQ_IVR_07TO04_REG *((volatile UINT32*) (VLYNQ_IVR_OFFSET(4)) )
-+/*** Can be extended for 11TO08...31TO28 when all 31 are supported**/
-+
-+#define VLYNQ_IVR_INTEN(ivr) (((UINT32)(0x80)) << ((((unsigned)(ivr)) % 4) * 8))
-+#define VLYNQ_IVR_INTTYPE(ivr) (((UINT32)(0x40)) << ((((unsigned)(ivr)) % 4) * 8))
-+#define VLYNQ_IVR_INTPOL(ivr) (((UINT32)(0x20)) << ((((unsigned)(ivr)) % 4) * 8))
-+#define VLYNQ_IVR_INTVEC(ivr) (((UINT32)(0x1F)) << ((((unsigned)(ivr)) % 4) * 8))
-+#define VLYNQ_IVR_INTALL(ivr) (((UINT32)(0xFF)) << ((((unsigned)(ivr)) % 4) * 8))
-+
-+
-+
-+/*********************************
-+ * Remote VLYNQ register set *
-+ *********************************/
-+
-+#define VLYNQ_R_REV_OFFSET 0x0080
-+#define VLYNQ_R_CTRL_OFFSET 0x0084
-+#define VLYNQ_R_STATUS_OFFSET 0x0088
-+#define VLYNQ_R_INT_STAT_OFFSET 0x0090
-+#define VLYNQ_R_INT_PEND_OFFSET 0x0094
-+#define VLYNQ_R_INT_PTR_OFFSET 0x0098
-+#define VLYNQ_R_TXMAP_OFFSET 0x009c
-+
-+#define VLYNQ_R_RX0MAP_SIZE_REG_OFFSET 0x00A0
-+#define VLYNQ_R_RX0MAP_OFFSET_REG_OFFSET 0x00A4
-+
-+#define VLYNQ_R_CHIP_VER_OFFSET 0x00C0
-+#define VLYNQ_R_IVR_REGS_OFFSET 0x00E0
-+
-+#define VLYNQ_R_REV_REG *((volatile UINT32 *)(VLYNQ_BASE + VLYNQ_R_REV_OFFSET))
-+#define VLYNQ_R_CTRL_REG *((volatile UINT32 *)(VLYNQ_BASE + VLYNQ_R_CTRL_OFFSET))
-+#define VLYNQ_R_STATUS_REG *((volatile UINT32 *)(VLYNQ_BASE + VLYNQ_R_STATUS_OFFSET))
-+#define VLYNQ_R_INT_STAT_REG *((volatile UINT32 *)(VLYNQ_BASE + VLYNQ_R_INT_STAT_OFFSET))
-+#define VLYNQ_R_INT_PEND_REG *((volatile UINT32 *)(VLYNQ_BASE + VLYNQ_R_INT_PEND_OFFSET))
-+#define VLYNQ_R_INT_PTR_REG *((volatile UINT32 *)(VLYNQ_BASE + VLYNQ_R_INT_PTR_OFFSET))
-+#define VLYNQ_R_TXMAP_REG *((volatile UINT32 *)(VLYNQ_BASE + VLYNQ_R_TXMAP_OFFSET))
-+
-+/** map takes on values between 1 to VLYNQ_MAX_MEMORY_REGIONS **/
-+#define VLYNQ_R_RXMAP_SIZE_REG(map) \
-+ *((volatile UINT32 *)(VLYNQ_BASE + VLYNQ_R_RX0MAP_SIZE_REG_OFFSET + ((map-1)<<3)))
-+
-+/** map takes on values between 1 to VLYNQ_MAX_MEMORY_REGIONS **/
-+#define VLYNQ_R_RXMAP_OFFSET_REG(map) \
-+ *((volatile UINT32 *)(VLYNQ_BASE + VLYNQ_R_RX0MAP_OFFSET_REG_OFFSET + ((map-1)<<3)))
-+
-+#define VLYNQ_R_CHIP_VER_REG *((volatile UINT32 *)(VLYNQ_BASE + VLYNQ_R_CHIP_VER_OFFSET)
-+
-+#define VLYNQ_R_IVR_OFFSET(ivr) \
-+ (VLYNQ_BASE + VLYNQ_R_IVR_REGS_OFFSET +((((unsigned)(ivr)) & 31) & ~3))
-+
-+
-+/*** Can be extended for 11TO08...31TO28 when all 31 are supported**/
-+#define VLYNQ_R_IVR_03TO00_REG *((volatile UINT32*) (VLYNQ_R_IVR_OFFSET(0)) )
-+#define VLYNQ_R_IVR_07TO04_REG *((volatile UINT32*) (VLYNQ_R_IVR_OFFSET(4)) )
-+
-+
-+/****End of remote register set definition******/
-+
-+
-+/*** Masks for individual register fields ***/
-+
-+#define VLYNQ_MODULE_ID_MASK 0xffff0000
-+#define VLYNQ_MAJOR_REV_MASK 0x0000ff00
-+#define VLYNQ_MINOR_REV_MASK 0x000000ff
-+
-+
-+#define VLYNQ_CTL_ILOOP_MASK 0x00000002
-+#define VLYNQ_CTL_INT2CFG_MASK 0x00000080
-+#define VLYNQ_CTL_INTVEC_MASK 0x00001f00
-+#define VLYNQ_CTL_INTEN_MASK 0x00002000
-+#define VLYNQ_CTL_INTLOCAL_MASK 0x00004000
-+#define VLYNQ_CTL_CLKDIR_MASK 0x00008000
-+#define VLYNQ_CTL_CLKDIV_MASK 0x00070000
-+#define VLYNQ_CTL_MODE_MASK 0x00e00000
-+
-+
-+#define VLYNQ_STS_LINK_MASK 0x00000001 /* Link is active */
-+#define VLYNQ_STS_MPEND_MASK 0x00000002 /* Pending master requests */
-+#define VLYNQ_STS_SPEND_MASK 0x00000004 /* Pending slave requests */
-+#define VLYNQ_STS_NFEMPTY0_MASK 0x00000008 /* Master data FIFO not empty */
-+#define VLYNQ_STS_NFEMPTY1_MASK 0x00000010 /* Master command FIFO not empty */
-+#define VLYNQ_STS_NFEMPTY2_MASK 0x00000020 /* Slave data FIFO not empty */
-+#define VLYNQ_STS_NFEMPTY3_MASK 0x00000040 /* Slave command FIFO not empty */
-+#define VLYNQ_STS_LERROR_MASK 0x00000080 /* Local error, w/c */
-+#define VLYNQ_STS_RERROR_MASK 0x00000100 /* remote error w/c */
-+#define VLYNQ_STS_OFLOW_MASK 0x00000200
-+#define VLYNQ_STS_IFLOW_MASK 0x00000400
-+#define VLYNQ_STS_MODESUP_MASK 0x00E00000 /* Highest mode supported */
-+#define VLYNQ_STS_SWIDTH_MASK 0x07000000 /* Used for reading the width of VLYNQ bus */
-+#define VLYNQ_STS_DEBUG_MASK 0xE0000000
-+
-+#define VLYNQ_CTL_INTVEC_SHIFT 0x08
-+#define VLYNQ_CTL_INTEN_SHIFT 0x0D
-+#define VLYNQ_CTL_INT2CFG_SHIFT 0x07
-+#define VLYNQ_CTL_INTLOCAL_SHIFT 0x0E
-+
-+#define VLYNQ_CTL_INTFIELDS_CLEAR_MASK 0x7F80
-+
-+#define VLYNQ_CHIPVER_DEVREV_MASK 0xffff0000
-+#define VLYNQ_CHIPVER_DEVID_MASK 0x0000ffff
-+
-+#define VLYNQ_IVR_INTEN_MASK 0x80
-+#define VLYNQ_IVR_INTTYPE_MASK 0x40
-+#define VLYNQ_IVR_INTPOL_MASK 0x20
-+
-+
-+/**** Helper macros ****/
-+
-+#define VLYNQ_RESETCB(arg) \
-+ if( pdev->reset_cb != NULL) \
-+ { \
-+ (pdev->reset_cb)(pdev, (arg)); \
-+ }
-+
-+#define VLYNQ_STATUS_FLD_WIDTH(sts) (((sts) & VLYNQ_STS_SWIDTH_MASK) >> 24 )
-+#define VLYNQ_CTL_INTVEC(x) (((x) & 31) << 8 )
-+
-+#define VLYNQ_INRANGE(x,hi,lo) (((x) <= (hi)) && ((x) >= (lo)))
-+#define VLYNQ_OUTRANGE(x,hi,lo) (((x) > (hi)) || ((x) < (lo)))
-+
-+#define VLYNQ_ALIGN4(x) (x)=(x)&(~3)
-+
-+
-+/*************************************
-+ * Enums *
-+ *************************************/
-+
-+/* Initialization options define what operations are
-+ * undertaken during vlynq module initialization */
-+typedef enum
-+{
-+ /* Init host local memory regions.This allows
-+ * local host access remote memory regions */
-+ VLYNQ_INIT_LOCAL_MEM_REGIONS = 0x01,
-+ /* Init host remote memory regions.This allows
-+ * remote device access local memory regions */
-+ VLYNQ_INIT_REMOTE_MEM_REGIONS =0x02,
-+ /* Init local interrupt config*/
-+ VLYNQ_INIT_LOCAL_INTERRUPTS =0x04,
-+ /* Init remote interrupt config*/
-+ VLYNQ_INIT_REMOTE_INTERRUPTS =0x08,
-+ /* Check link during initialization*/
-+ VLYNQ_INIT_CHECK_LINK =0x10,
-+ /* configure clock during init */
-+ VLYNQ_INIT_CONFIG_CLOCK =0x20,
-+ /* Clear errors during init */
-+ VLYNQ_INIT_CLEAR_ERRORS =0x40,
-+ /* All options */
-+ VLYNQ_INIT_PERFORM_ALL =0x7F
-+}VLYNQ_INIT_OPTIONS;
-+
-+
-+/* VLYNQ_DEV_TYPE identifies local or remote device */
-+typedef enum
-+{
-+ VLYNQ_LOCAL_DVC = 0, /* vlynq local device (SOC's vlynq module) */
-+ VLYNQ_REMOTE_DVC = 1 /* vlynq remote device (remote vlynq module) */
-+}VLYNQ_DEV_TYPE;
-+
-+
-+/* VLYNQ_CLK_SOURCE identifies the vlynq module clock source */
-+typedef enum
-+{
-+ VLYNQ_CLK_SOURCE_NONE = 0, /* do not initialize clock generator*/
-+ VLYNQ_CLK_SOURCE_LOCAL = 1, /* clock is generated by local machine */
-+ VLYNQ_CLK_SOURCE_REMOTE = 2 /* clock is generated by remote machine */
-+}VLYNQ_CLK_SOURCE;
-+
-+
-+/* VLYNQ_DRV_STATE indicates the current driver state */
-+typedef enum
-+{
-+ VLYNQ_DRV_STATE_UNINIT = 0, /* driver is uninitialized */
-+ VLYNQ_DRV_STATE_ININIT = 1, /* VLYNQ is being initialized */
-+ VLYNQ_DRV_STATE_RUN = 2, /* VLYNQ is running properly */
-+ VLYNQ_DRV_STATE_HOLD = 3, /* driver stopped temporarily */
-+ VLYNQ_DRV_STATE_ERROR = 4 /* driver stopped on unrecoverable error */
-+}VLYNQ_DRV_STATE;
-+
-+
-+/* VLYNQ_BUS_WIDTH identifies the vlynq module bus width */
-+typedef enum
-+{
-+ VLYNQ_BUS_WIDTH_3 = 3,
-+ VLYNQ_BUS_WIDTH_5 = 5,
-+ VLYNQ_BUS_WIDTH_7 = 7,
-+ VLYNQ_BUS_WIDTH_9 = 9
-+}VLYNQ_BUS_WIDTH;
-+
-+
-+/* VLYNQ_LOCAL_INT_CONFIG indicates whether the local vlynq
-+ * interrupts are processed by the host or passed on to the
-+ * remote device.
-+ */
-+typedef enum
-+{
-+ VLYNQ_INT_REMOTE = 0, /* Interrupt packets sent to remote, intlocal=0 */
-+ VLYNQ_INT_LOCAL = 1 /* Interrupts are handled locally, intlocal=1 */
-+}VLYNQ_LOCAL_INT_CONFIG;
-+
-+
-+/* VLYNQ_REMOTE_INT_CONFIG indicates whether the remote
-+ * interrupts are to be handled by the SOC system ISR
-+ * or via the vlynq root ISR
-+ */
-+typedef enum
-+{
-+ VLYNQ_INT_ROOT_ISR = 0, /* remote ints handled via vlynq root ISR */
-+ VLYNQ_INT_SYSTEM_ISR = 1 /* remote ints handled via system ISR */
-+}VLYNQ_REMOTE_INT_CONFIG;
-+
-+
-+/* VLYNQ_INTR_POLARITY - vlynq interrupt polarity setting */
-+typedef enum
-+{
-+ VLYNQ_INTR_ACTIVE_HIGH = 0,
-+ VLYNQ_INTR_ACTIVE_LOW = 1
-+}VLYNQ_INTR_POLARITY;
-+
-+
-+/* VLYNQ_INTR_TYPE - vlynq interrupt type */
-+typedef enum
-+{
-+ VLYNQ_INTR_LEVEL = 0,
-+ VLYNQ_INTR_PULSED = 1
-+}VLYNQ_INTR_TYPE;
-+
-+
-+/* VLYNQ_RESET_MODE - vlynq reset mode */
-+typedef enum
-+{
-+ VLYNQ_RESET_ASSERT, /* hold device in reset state */
-+ VLYNQ_RESET_DEASSERT, /* release device from reset state */
-+ VLYNQ_RESET_INITFAIL, /* handle the device in case driver initialization fails */
-+ VLYNQ_RESET_LINKESTABLISH, /* handle the device in case driver established link */
-+ VLYNQ_RESET_INITFAIL2, /* Driver initialization failed but VLYNQ link exist. */
-+ VLYNQ_RESET_INITOK /* Driver initialization finished OK. */
-+}VLYNQ_RESET_MODE;
-+
-+
-+
-+/*************************************
-+ * Typedefs *
-+ *************************************/
-+
-+struct VLYNQ_DEV_t; /*forward declaration*/
-+
-+/*--------Function Pointers defintions -----------*/
-+
-+/* prototype for interrupt handler definition */
-+typedef void (*VLYNQ_INTR_CNTRL_ISR)(void *arg1,void *arg2,void *arg3);
-+
-+typedef void
-+(*VLYNQ_RESET_REMOTE)(struct VLYNQ_DEV_t *pDev, VLYNQ_RESET_MODE mode);
-+
-+typedef void
-+(*VLYNQ_REPORT_CB)( struct VLYNQ_DEV_t *pDev, /* This VLYNQ */
-+ VLYNQ_DEV_TYPE aSrcDvc, /* Event Cause -local/remote? */
-+ UINT32 dwStatRegVal); /* Value of the relevant status register */
-+
-+
-+/*-------Structure Definitions------------*/
-+
-+typedef struct VLYNQ_MEMORY_MAP_t
-+{
-+ UINT32 Txmap;
-+ UINT32 RxOffset[VLYNQ_MAX_MEMORY_REGIONS];
-+ UINT32 RxSize[VLYNQ_MAX_MEMORY_REGIONS];
-+}VLYNQ_MEMORY_MAP;
-+
-+
-+/**VLYNQ_INTERRUPT_CNTRL - defines the vlynq module interrupt
-+ * settings in vlynq Control register */
-+typedef struct VLYNQ_INTERRUPT_CNTRL_t
-+{
-+ /* vlynq interrupts handled by host or remote - maps to
-+ * intLocal bit in vlynq control register */
-+ VLYNQ_LOCAL_INT_CONFIG intLocal;
-+
-+ /* remote interrupts handled by vlynq isr or host system
-+ * interrupt controller - maps to the int2Cfg in vlynq
-+ * control register */
-+ VLYNQ_REMOTE_INT_CONFIG intRemote;
-+
-+ /* bit in pending/set register used for module interrupts*/
-+ UINT32 map_vector;
-+
-+ /* used only if remote interrupts are to be handled by system ISR*/
-+ UINT32 intr_ptr;
-+
-+}VLYNQ_INTERRUPT_CNTRL;
-+
-+
-+/* VLYNQ_INTR_CNTRL_ICB - defines the Interrupt control block which hold
-+ * the interrupt dispatch table. The vlynq_root_isr() indexes into this
-+ * table to identify the ISR to be invoked
-+ */
-+typedef struct VLYNQ_INTR_CNTRL_ICB_t
-+{
-+ VLYNQ_INTR_CNTRL_ISR isr; /* Clear errors during initialization */
-+ void *arg1 ; /* Arg 1 for the ISR */
-+ void *arg2 ; /* Arg 2 for the ISR */
-+ void *arg3 ; /* Arg 3 for the ISR */
-+ UINT32 isrCount; /* number of ISR invocations so far */
-+ struct VLYNQ_INTR_CNTRL_ICB_t *next;
-+}VLYNQ_INTR_CNTRL_ICB;
-+
-+/* overlay of vlynq register set */
-+typedef struct VLYNQ_REG_SET_t
-+{
-+ UINT32 revision; /*offset : 0x00 */
-+ UINT32 control; /* 0x04*/
-+ UINT32 status; /* 0x08*/
-+ UINT32 pad1; /* 0x0c*/
-+ UINT32 intStatus; /*0x10*/
-+ UINT32 intPending; /*0x14*/
-+ UINT32 intPtr; /*0x18*/
-+ UINT32 txMap; /*0x1C*/
-+ UINT32 rxSize1; /*0x20*/
-+ UINT32 rxOffset1; /*0x24*/
-+ UINT32 rxSize2; /*0x28*/
-+ UINT32 rxOffset2; /*0x2C*/
-+ UINT32 rxSize3; /*0x30*/
-+ UINT32 rxOffset3; /*0x34*/
-+ UINT32 rxSize4; /*0x38*/
-+ UINT32 rxOffset4; /*0x3C*/
-+ UINT32 chipVersion; /*0x40*/
-+ UINT32 pad2[8];
-+ UINT32 ivr30; /*0x60*/
-+ UINT32 ivr74; /*0x64*/
-+ UINT32 pad3[7];
-+}VLYNQ_REG_SET;
-+
-+
-+typedef struct VLYNQ_DEV_t
-+{
-+ /** module index:1,2,3... used for debugging purposes */
-+ UINT32 dev_idx;
-+
-+ /*VLYNQ module base address */
-+ UINT32 module_base;
-+
-+ /* clock source selection */
-+ VLYNQ_CLK_SOURCE clk_source;
-+
-+ /* Clock Divider.Val=1 to 8. VLYNQ_clk = VBUSCLK/clk_div */
-+ UINT32 clk_div;
-+
-+ /* State of the VLYNQ driver, set to VLYNQ_DRV_STATE_UNINIT, when initializing */
-+ VLYNQ_DRV_STATE state;
-+
-+ /* Valid VLYNQ bus width, filled by driver */
-+ VLYNQ_BUS_WIDTH width;
-+
-+ /* local memory mapping */
-+ VLYNQ_MEMORY_MAP local_mem;
-+
-+ /* remote memory mapping */
-+ VLYNQ_MEMORY_MAP remote_mem;
-+
-+ /* Local module interrupt params */
-+ VLYNQ_INTERRUPT_CNTRL local_irq;
-+
-+ /* remote module interrupt params */
-+ VLYNQ_INTERRUPT_CNTRL remote_irq;
-+
-+ /*** ICB related fields **/
-+
-+ /* Sizeof of ICB = VLYNQ_NUM_INT_BITS(for 32 bits in IntPending) +
-+ * expansion slots for shared interrupts*/
-+ VLYNQ_INTR_CNTRL_ICB pIntrCB[VLYNQ_NUM_INT_BITS + VLYNQ_IVR_CHAIN_SLOTS];
-+ VLYNQ_INTR_CNTRL_ICB *freelist;
-+
-+ /* table holding mapping between intVector and the bit position the interrupt
-+ * is mapped to(mapVector)*/
-+ INT8 vector_map[32];
-+
-+ /* user callback for vlynq events, NULL if unused */
-+ VLYNQ_REPORT_CB report_cb;
-+
-+ /* user callback for resetting/realeasing remote device */
-+ VLYNQ_RESET_REMOTE reset_cb;
-+
-+ /*** Handles provided for direct access to register set if need be
-+ * Must be intialized to point to appropriate address during
-+ * vlynq_init */
-+ volatile VLYNQ_REG_SET * local;
-+ volatile VLYNQ_REG_SET * remote;
-+
-+ UINT32 intCount; /* number of interrupts generated so far */
-+ UINT32 isrCount; /* number of ISR invocations so far */
-+}VLYNQ_DEV;
-+
-+
-+typedef struct VLYNQ_ISR_ARGS_t
-+{
-+ int irq;
-+ void * arg;
-+ void * regset;
-+}VLYNQ_ISR_ARGS;
-+
-+
-+/****************************************
-+ * Function Prototypes *
-+ * API exported by generic vlynq driver *
-+ ****************************************/
-+/* Initialization function */
-+GLOBAL INT32 vlynq_init( VLYNQ_DEV *pdev, VLYNQ_INIT_OPTIONS options);
-+
-+/* Check vlynq link */
-+GLOBAL UINT32 vlynq_link_check( VLYNQ_DEV * pdev);
-+
-+/* Set interrupt vector in local or remote device */
-+GLOBAL INT32 vlynq_interrupt_vector_set( VLYNQ_DEV *pdev,
-+ UINT32 int_vector,
-+ UINT32 map_vector,
-+ VLYNQ_DEV_TYPE dev,
-+ VLYNQ_INTR_POLARITY pol,
-+ VLYNQ_INTR_TYPE type);
-+
-+
-+GLOBAL INT32 vlynq_interrupt_vector_cntl( VLYNQ_DEV *pdev,
-+ UINT32 int_vector,
-+ VLYNQ_DEV_TYPE dev,
-+ UINT32 enable);
-+
-+GLOBAL UINT32 vlynq_interrupt_get_count( VLYNQ_DEV *pdev,
-+ UINT32 map_vector);
-+
-+GLOBAL INT32 vlynq_install_isr( VLYNQ_DEV *pdev,
-+ UINT32 map_vector,
-+ VLYNQ_INTR_CNTRL_ISR isr,
-+ void *arg1, void *arg2, void *arg3);
-+
-+GLOBAL INT32 vlynq_uninstall_isr( VLYNQ_DEV *pdev,
-+ UINT32 map_vector,
-+ void *arg1, void *arg2, void *arg3);
-+
-+
-+GLOBAL void vlynq_root_isr(void *arg);
-+
-+GLOBAL void vlynq_delay(UINT32 clktime);
-+
-+/* The following functions, provide better granularity in setting
-+ * interrupt parameters. (for better support of linux INT Controller)
-+ * Note: The interrupt source is identified by "map_vector"- the bit
-+ * position in interrupt status register*/
-+
-+GLOBAL INT32 vlynq_interrupt_vector_map(VLYNQ_DEV * pdev,
-+ VLYNQ_DEV_TYPE dev,
-+ UINT32 int_vector,
-+ UINT32 map_vector);
-+
-+GLOBAL INT32 vlynq_interrupt_set_polarity(VLYNQ_DEV * pdev,
-+ VLYNQ_DEV_TYPE dev,
-+ UINT32 map_vector,
-+ VLYNQ_INTR_POLARITY pol);
-+
-+GLOBAL INT32 vlynq_interrupt_get_polarity( VLYNQ_DEV *pdev ,
-+ VLYNQ_DEV_TYPE dev_type,
-+ UINT32 map_vector);
-+
-+GLOBAL INT32 vlynq_interrupt_set_type(VLYNQ_DEV * pdev,
-+ VLYNQ_DEV_TYPE dev,
-+ UINT32 map_vector,
-+ VLYNQ_INTR_TYPE type);
-+
-+GLOBAL INT32 vlynq_interrupt_get_type( VLYNQ_DEV *pdev,
-+ VLYNQ_DEV_TYPE dev_type,
-+ UINT32 map_vector);
-+
-+GLOBAL INT32 vlynq_interrupt_enable(VLYNQ_DEV* pdev,
-+ VLYNQ_DEV_TYPE dev,
-+ UINT32 map_vector);
-+
-+GLOBAL INT32 vlynq_interrupt_disable(VLYNQ_DEV * pdev,
-+ VLYNQ_DEV_TYPE dev,
-+ UINT32 map_vector);
-+
-+
-+
-+
-+
-+#endif /* _VLYNQ_HAL_H_ */
-diff -urN linux.old/include/asm-mips/ar7/vlynq_hal_params.h linux.dev/include/asm-mips/ar7/vlynq_hal_params.h
---- linux.old/include/asm-mips/ar7/vlynq_hal_params.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/include/asm-mips/ar7/vlynq_hal_params.h 2005-11-10 01:10:46.095590250 +0100
-@@ -0,0 +1,50 @@
-+/***************************************************************************
-+**+----------------------------------------------------------------------+**
-+**| **** |**
-+**| **** |**
-+**| ******o*** |**
-+**| ********_///_**** |**
-+**| ***** /_//_/ **** |**
-+**| ** ** (__/ **** |**
-+**| ********* |**
-+**| **** |**
-+**| *** |**
-+**| |**
-+**| Copyright (c) 2003 Texas Instruments Incorporated |**
-+**| ALL RIGHTS RESERVED |**
-+**| |**
-+**| Permission is hereby granted to licensees of Texas Instruments |**
-+**| Incorporated (TI) products to use this computer program for the sole |**
-+**| purpose of implementing a licensee product based on TI products. |**
-+**| No other rights to reproduce, use, or disseminate this computer |**
-+**| program, whether in part or in whole, are granted. |**
-+**| |**
-+**| TI makes no representation or warranties with respect to the |**
-+**| performance of this computer program, and specifically disclaims |**
-+**| any responsibility for any damages, special or consequential, |**
-+**| connected with the use of this program. |**
-+**| |**
-+**+----------------------------------------------------------------------+**
-+***************************************************************************/
-+
-+/* This file defines Vlynq module parameters*/
-+
-+#ifndef _VLYNQ_HAL_PARAMS_H
-+#define _VLYNQ_HAL_PARAMS_H
-+
-+ /* number of VLYNQ memory regions supported */
-+#define VLYNQ_MAX_MEMORY_REGIONS 0x04
-+
-+ /* Max.number of external interrupt inputs supported by VLYNQ module */
-+#define VLYNQ_IVR_MAXIVR 0x08
-+
-+#define VLYNQ_CLK_DIV_MAX 0x08
-+#define VLYNQ_CLK_DIV_MIN 0x01
-+
-+
-+/*** the total number of entries allocated for ICB would be
-+ * 32(for 32 bits in IntPending register) + VLYNQ_IVR_CHAIN_SLOTS*/
-+#define VLYNQ_IVR_CHAIN_SLOTS 10
-+
-+
-+#endif /* _VLYNQ_HAL_PARAMS_H */
-diff -urN linux.old/include/asm-mips/io.h linux.dev/include/asm-mips/io.h
---- linux.old/include/asm-mips/io.h 2003-08-25 13:44:43.000000000 +0200
-+++ linux.dev/include/asm-mips/io.h 2005-11-10 01:14:16.400733500 +0100
-@@ -61,9 +61,9 @@
- * Change "struct page" to physical address.
- */
- #ifdef CONFIG_64BIT_PHYS_ADDR
--#define page_to_phys(page) ((u64)(page - mem_map) << PAGE_SHIFT)
-+#define page_to_phys(page) (((u64)(page - mem_map) << PAGE_SHIFT) + PHYS_OFFSET)
- #else
--#define page_to_phys(page) ((page - mem_map) << PAGE_SHIFT)
-+#define page_to_phys(page) (((page - mem_map) << PAGE_SHIFT) + PHYS_OFFSET)
- #endif
-
- #define IO_SPACE_LIMIT 0xffff
-diff -urN linux.old/include/asm-mips/irq.h linux.dev/include/asm-mips/irq.h
---- linux.old/include/asm-mips/irq.h 2003-08-25 13:44:43.000000000 +0200
-+++ linux.dev/include/asm-mips/irq.h 2005-11-10 01:12:43.950955750 +0100
-@@ -14,7 +14,20 @@
- #include <linux/config.h>
- #include <linux/linkage.h>
-
-+#ifdef CONFIG_AR7
-+/* MIPS has 8 irqs
-+ * AR7 has 40 primary and 32 secondary irqs
-+ * vlynq0 has 32 irqs
-+ * vlynq1 has 32 irqs
-+ */
-+#ifdef CONFIG_AR7_VLYNQ
-+#define NR_IRQS (80 + 32 * CONFIG_AR7_VLYNQ_PORTS)
-+#else
-+#define NR_IRQS 80
-+#endif
-+#else
- #define NR_IRQS 128 /* Largest number of ints of all machines. */
-+#endif
-
- #ifdef CONFIG_I8259
- static inline int irq_cannonicalize(int irq)
-diff -urN linux.old/include/asm-mips/mips-boards/prom.h linux.dev/include/asm-mips/mips-boards/prom.h
---- linux.old/include/asm-mips/mips-boards/prom.h 2001-09-09 19:43:02.000000000 +0200
-+++ linux.dev/include/asm-mips/mips-boards/prom.h 2005-11-10 01:14:16.436735750 +0100
-@@ -33,7 +33,7 @@
- extern void prom_init_cmdline(void);
- extern void prom_meminit(void);
- extern void prom_fixup_mem_map(unsigned long start_mem, unsigned long end_mem);
--extern void prom_free_prom_memory (void);
-+extern unsigned long prom_free_prom_memory (void);
- extern void mips_display_message(const char *str);
- extern void mips_display_word(unsigned int num);
- extern int get_ethernet_addr(char *ethernet_addr);
-diff -urN linux.old/include/asm-mips/page.h linux.dev/include/asm-mips/page.h
---- linux.old/include/asm-mips/page.h 2004-02-18 14:36:32.000000000 +0100
-+++ linux.dev/include/asm-mips/page.h 2005-11-10 01:14:16.436735750 +0100
-@@ -12,6 +12,7 @@
-
- #include <linux/config.h>
- #include <asm/break.h>
-+#include <asm/addrspace.h>
-
- #ifdef __KERNEL__
-
-@@ -129,7 +130,7 @@
-
- #define __pa(x) ((unsigned long) (x) - PAGE_OFFSET)
- #define __va(x) ((void *)((unsigned long) (x) + PAGE_OFFSET))
--#define virt_to_page(kaddr) (mem_map + (__pa(kaddr) >> PAGE_SHIFT))
-+#define virt_to_page(kaddr) (mem_map + ((__pa(kaddr)-PHYS_OFFSET) >> PAGE_SHIFT))
- #define VALID_PAGE(page) ((page - mem_map) < max_mapnr)
-
- #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
-diff -urN linux.old/include/asm-mips/pgtable-32.h linux.dev/include/asm-mips/pgtable-32.h
---- linux.old/include/asm-mips/pgtable-32.h 2004-02-18 14:36:32.000000000 +0100
-+++ linux.dev/include/asm-mips/pgtable-32.h 2005-11-10 01:14:16.436735750 +0100
-@@ -108,7 +108,7 @@
- * and a page entry and page directory to the page they refer to.
- */
-
--#ifdef CONFIG_CPU_VR41XX
-+#if defined(CONFIG_CPU_VR41XX)
- #define mk_pte(page, pgprot) \
- ({ \
- pte_t __pte; \
-@@ -123,13 +123,14 @@
- ({ \
- pte_t __pte; \
- \
-- pte_val(__pte) = ((phys_t)(page - mem_map) << PAGE_SHIFT) | \
-- pgprot_val(pgprot); \
-+ pte_val(__pte) = (((phys_t)(page - mem_map) << PAGE_SHIFT) + \
-+ PHYS_OFFSET) | pgprot_val(pgprot); \
- \
- __pte; \
- })
- #endif
-
-+
- static inline pte_t mk_pte_phys(phys_t physpage, pgprot_t pgprot)
- {
- #ifdef CONFIG_CPU_VR41XX
-@@ -175,12 +176,12 @@
- set_pte(ptep, __pte(0));
- }
-
--#ifdef CONFIG_CPU_VR41XX
-+#if defined(CONFIG_CPU_VR41XX)
- #define pte_page(x) (mem_map+((unsigned long)(((x).pte_low >> (PAGE_SHIFT+2)))))
- #define __mk_pte(page_nr,pgprot) __pte(((page_nr) << (PAGE_SHIFT+2)) | pgprot_val(pgprot))
- #else
--#define pte_page(x) (mem_map+((unsigned long)(((x).pte_low >> PAGE_SHIFT))))
--#define __mk_pte(page_nr,pgprot) __pte(((page_nr) << PAGE_SHIFT) | pgprot_val(pgprot))
-+#define pte_page(x) (mem_map+((unsigned long)((((x).pte_low-PHYS_OFFSET) >> PAGE_SHIFT))))
-+#define __mk_pte(page_nr,pgprot) __pte((((page_nr) << PAGE_SHIFT)+PHYS_OFFSET)|pgprot_val(pgprot))
- #endif
-
- #endif
-diff -urN linux.old/include/asm-mips/serial.h linux.dev/include/asm-mips/serial.h
---- linux.old/include/asm-mips/serial.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux.dev/include/asm-mips/serial.h 2005-11-10 01:14:16.436735750 +0100
-@@ -65,6 +65,16 @@
-
- #define C_P(card,port) (((card)<<6|(port)<<3) + 1)
-
-+#ifdef CONFIG_AR7
-+#include <asm/ar7/ar7.h>
-+#include <asm/ar7/avalanche_intc.h>
-+#define AR7_SERIAL_PORT_DEFNS \
-+ { 0, AR7_BASE_BAUD, AR7_UART0_REGS_BASE, LNXINTNUM(AVALANCHE_UART0_INT), STD_COM_FLAGS }, \
-+ { 0, AR7_BASE_BAUD, AR7_UART1_REGS_BASE, LNXINTNUM(AVALANCHE_UART1_INT), STD_COM_FLAGS },
-+#else
-+#define AR7_SERIAL_PORT_DEFNS
-+#endif
-+
- #ifdef CONFIG_MIPS_JAZZ
- #define _JAZZ_SERIAL_INIT(int, base) \
- { .baud_base = JAZZ_BASE_BAUD, .irq = int, .flags = STD_COM_FLAGS, \
-@@ -468,6 +478,7 @@
- #endif
-
- #define SERIAL_PORT_DFNS \
-+ AR7_SERIAL_PORT_DEFNS \
- ATLAS_SERIAL_PORT_DEFNS \
- AU1000_SERIAL_PORT_DEFNS \
- COBALT_SERIAL_PORT_DEFNS \
diff --git a/openwrt/target/linux/ar7-2.4/patches/001-flash_map.patch b/openwrt/target/linux/ar7-2.4/patches/001-flash_map.patch
deleted file mode 100644
index 0b58439c8b..0000000000
--- a/openwrt/target/linux/ar7-2.4/patches/001-flash_map.patch
+++ /dev/null
@@ -1,307 +0,0 @@
-diff -urN linux.old/drivers/mtd/maps/ar7-flash.c linux.dev/drivers/mtd/maps/ar7-flash.c
---- linux.old/drivers/mtd/maps/ar7-flash.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/mtd/maps/ar7-flash.c 2005-07-22 04:35:26.624453992 +0200
-@@ -0,0 +1,267 @@
-+/*
-+ * $Id$
-+ *
-+ * Normal mappings of chips in physical memory
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <asm/io.h>
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/map.h>
-+#include <linux/config.h>
-+#include <linux/mtd/partitions.h>
-+#include <linux/squashfs_fs.h>
-+
-+#define WINDOW_ADDR CONFIG_MTD_AR7_START
-+#define WINDOW_SIZE CONFIG_MTD_AR7_LEN
-+#define BUSWIDTH CONFIG_MTD_AR7_BUSWIDTH
-+
-+#include <asm/mips-boards/prom.h>
-+extern char *prom_getenv(char *name);
-+
-+static int create_mtd_partitions(void);
-+static void __exit ar7_mtd_cleanup(void);
-+
-+#define MAX_NUM_PARTITIONS 5
-+static struct mtd_partition ar7_partinfo[MAX_NUM_PARTITIONS];
-+
-+static struct mtd_info *ar7_mtd_info;
-+
-+__u8 ar7_read8(struct map_info *map, unsigned long ofs)
-+{
-+ return __raw_readb(map->map_priv_1 + ofs);
-+}
-+
-+__u16 ar7_read16(struct map_info *map, unsigned long ofs)
-+{
-+ return __raw_readw(map->map_priv_1 + ofs);
-+}
-+
-+__u32 ar7_read32(struct map_info *map, unsigned long ofs)
-+{
-+ return __raw_readl(map->map_priv_1 + ofs);
-+}
-+
-+void ar7_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
-+{
-+ memcpy_fromio(to, map->map_priv_1 + from, len);
-+}
-+
-+void ar7_write8(struct map_info *map, __u8 d, unsigned long adr)
-+{
-+ __raw_writeb(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void ar7_write16(struct map_info *map, __u16 d, unsigned long adr)
-+{
-+ __raw_writew(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void ar7_write32(struct map_info *map, __u32 d, unsigned long adr)
-+{
-+ __raw_writel(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void ar7_copy_to(struct map_info *map, unsigned long to, const void *from, ssize_t len)
-+{
-+ memcpy_toio(map->map_priv_1 + to, from, len);
-+}
-+
-+struct map_info ar7_map = {
-+ name: "Physically mapped flash",
-+ size: WINDOW_SIZE,
-+ buswidth: BUSWIDTH,
-+ read8: ar7_read8,
-+ read16: ar7_read16,
-+ read32: ar7_read32,
-+ copy_from: ar7_copy_from,
-+ write8: ar7_write8,
-+ write16: ar7_write16,
-+ write32: ar7_write32,
-+ copy_to: ar7_copy_to
-+};
-+
-+int __init ar7_mtd_init(void)
-+{
-+ int partitions;
-+
-+ printk(KERN_NOTICE "ar7 flash device: 0x%lx at 0x%lx.\n", (unsigned long)WINDOW_SIZE, (unsigned long)WINDOW_ADDR);
-+ ar7_map.map_priv_1 = (unsigned long)ioremap_nocache(WINDOW_ADDR, WINDOW_SIZE);
-+
-+ if (!ar7_map.map_priv_1) {
-+ printk("Failed to ioremap\n");
-+ return -EIO;
-+ }
-+
-+ ar7_mtd_info = do_map_probe("cfi_probe", &ar7_map);
-+ if (!ar7_mtd_info)
-+ {
-+ ar7_mtd_cleanup();
-+ return -ENXIO;
-+ }
-+
-+ ar7_mtd_info->module = THIS_MODULE;
-+
-+ if (!(partitions = create_mtd_partitions()))
-+ add_mtd_device(ar7_mtd_info);
-+ else
-+ add_mtd_partitions(ar7_mtd_info, ar7_partinfo, partitions);
-+
-+ return 0;
-+}
-+
-+static char *strdup(char *str)
-+{
-+ int n = strlen(str)+1;
-+ char *s = kmalloc(n, GFP_KERNEL);
-+ if (!s) return NULL;
-+ return strcpy(s, str);
-+}
-+
-+
-+static int create_mtd_partitions(void)
-+{
-+ unsigned int offset;
-+ unsigned int size;
-+ unsigned int found = 0;
-+ unsigned int p = 0;
-+ unsigned char *flash_base;
-+ unsigned char *flash_end;
-+ char *env_ptr;
-+ char *base_ptr;
-+ char *end_ptr;
-+ unsigned int adam2_size = 0x20000;
-+ unsigned int config_offset = WINDOW_SIZE;
-+ unsigned int rootfs_start = 0xe0000;
-+
-+ printk("Parsing ADAM2 partition map...\n");
-+
-+ do {
-+ char env_name[20];
-+
-+ /* get base and end addresses of flash file system from environment */
-+ sprintf(env_name, "mtd%1u", p);
-+ printk("Looking for mtd device :%s:\n", env_name);
-+
-+ env_ptr = prom_getenv(env_name);
-+ if(env_ptr == NULL) {
-+ /* No more partitions to find */
-+ break;
-+ }
-+
-+ /* Extract the start and stop addresses of the partition */
-+ base_ptr = strtok(env_ptr, ",");
-+ end_ptr = strtok(NULL, ",");
-+ if ((base_ptr == NULL) || (end_ptr == NULL)) {
-+ printk("ADAM2 partition error: Invalid %s start,end.\n", env_name);
-+ break;
-+ }
-+
-+ flash_base = (unsigned char*) simple_strtol(base_ptr, NULL, 0);
-+ flash_end = (unsigned char*) simple_strtol(end_ptr, NULL, 0);
-+ if((!flash_base) || (!flash_end)) {
-+ printk("ADAM2 partition error: Invalid %s start,end.\n", env_name);
-+ break;
-+ }
-+
-+ offset = virt_to_bus(flash_base) - WINDOW_ADDR;
-+ size = flash_end - flash_base;
-+ printk("Found a %s image (0x%x), with size (0x%x).\n",env_name, offset, size);
-+
-+
-+ if (offset == 0) {
-+ printk("Assuming adam2 size of 0x%x\n", size);
-+ adam2_size = size; // boot loader
-+ } else if (offset > 0x120000) {
-+ if (config_offset > offset)
-+ config_offset = offset; // reserved at the end of the flash chip
-+ } else if (offset > 0x30000) {
-+ printk("Assuming default rootfs offset of 0x%x\n", offset);
-+ rootfs_start = offset; // probably root fs
-+ }
-+
-+ p++;
-+ } while (p < MAX_NUM_PARTITIONS);
-+
-+ p = 0;
-+
-+ ar7_partinfo[p].name = strdup("adam2");
-+ ar7_partinfo[p].offset = 0;
-+ ar7_partinfo[p].size = adam2_size;
-+ ar7_partinfo[p++].mask_flags = 0;
-+
-+ ar7_partinfo[p].name = strdup("linux");
-+ ar7_partinfo[p].offset = adam2_size;
-+ ar7_partinfo[p].size = config_offset - adam2_size;
-+ ar7_partinfo[p++].mask_flags = 0;
-+
-+ if (ar7_read32(&ar7_map, adam2_size) == 0xfeedfa42) {
-+ rootfs_start = ar7_read32(&ar7_map, adam2_size + 4) + adam2_size + 28;
-+ printk("Setting new rootfs offset to %08x\n", rootfs_start);
-+ }
-+
-+ ar7_partinfo[p].name = strdup("rootfs");
-+ ar7_partinfo[p].offset = rootfs_start;
-+ ar7_partinfo[p].size = config_offset - rootfs_start;
-+
-+ ar7_partinfo[p++].mask_flags = 0;
-+
-+ ar7_partinfo[p].name = strdup("config");
-+ ar7_partinfo[p].offset = config_offset;
-+ ar7_partinfo[p].size = WINDOW_SIZE - config_offset;
-+ ar7_partinfo[p++].mask_flags = 0;
-+
-+ if (ar7_read32(&ar7_map, rootfs_start) == SQUASHFS_MAGIC) {
-+ int newsize, newoffset;
-+ struct squashfs_super_block sb;
-+
-+ ar7_copy_from(&ar7_map, &sb, rootfs_start, sizeof(sb));
-+ printk("Squashfs detected (size = 0x%08x)\n", sb.bytes_used);
-+
-+ newoffset = rootfs_start + sb.bytes_used;
-+
-+ if ((newoffset % ar7_mtd_info->erasesize) > 0)
-+ newoffset += ar7_mtd_info->erasesize - (newoffset % ar7_mtd_info->erasesize);
-+
-+ ar7_partinfo[p - 2].size = newoffset - rootfs_start;
-+
-+ ar7_partinfo[p].name = strdup("OpenWrt");
-+ ar7_partinfo[p].offset = newoffset;
-+ ar7_partinfo[p].size = config_offset - newoffset;
-+ ar7_partinfo[p++].mask_flags = 0;
-+ } else {
-+ printk("Unknown filesystem. Moving rootfs partition to next erase block");
-+ if ((rootfs_start % ar7_mtd_info->erasesize) > 0) {
-+ ar7_partinfo[p - 2].offset += ar7_mtd_info->erasesize - (rootfs_start % ar7_mtd_info->erasesize);
-+ ar7_partinfo[p - 2].size -= ar7_mtd_info->erasesize - (rootfs_start % ar7_mtd_info->erasesize);
-+ }
-+ }
-+
-+ return p;
-+}
-+
-+static void __exit ar7_mtd_cleanup(void)
-+{
-+ if (ar7_mtd_info) {
-+ del_mtd_partitions(ar7_mtd_info);
-+ del_mtd_device(ar7_mtd_info);
-+ map_destroy(ar7_mtd_info);
-+ }
-+
-+ if (ar7_map.map_priv_1) {
-+ iounmap((void *)ar7_map.map_priv_1);
-+ ar7_map.map_priv_1 = 0;
-+ }
-+}
-+
-+module_init(ar7_mtd_init);
-+module_exit(ar7_mtd_cleanup);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Felix Fietkau");
-+MODULE_DESCRIPTION("AR7 CFI map driver");
-diff -urN linux.old/drivers/mtd/maps/Config.in linux.dev/drivers/mtd/maps/Config.in
---- linux.old/drivers/mtd/maps/Config.in 2005-07-21 05:36:32.414242296 +0200
-+++ linux.dev/drivers/mtd/maps/Config.in 2005-07-21 06:29:04.067118232 +0200
-@@ -48,6 +48,21 @@
- fi
-
- if [ "$CONFIG_MIPS" = "y" ]; then
-+ if [ "$CONFIG_AR7" = "y" ]; then
-+ dep_tristate ' Flash chip mapping on Texas Instruments AR7' CONFIG_MTD_AR7 $CONFIG_MTD_CFI $CONFIG_MTD_PARTITIONS
-+ dep_bool ' Use defaults for Texas Instruments AR7' CONFIG_MTD_AR7_DEFAULTS $CONFIG_MTD_AR7
-+ if [ "$CONFIG_MTD_AR7" = "y" -o "$CONFIG_MTD_AR7" = "m" ]; then
-+ if [ "$CONFIG_MTD_AR7_DEFAULTS" = "y" ]; then
-+ define_hex CONFIG_MTD_AR7_START 0x10000000
-+ define_hex CONFIG_MTD_AR7_LEN 0x400000
-+ define_int CONFIG_MTD_AR7_BUSWIDTH 2
-+ else
-+ hex ' Physical start address of flash mapping' CONFIG_MTD_AR7_START 0x10000000
-+ hex ' Physical length of flash mapping' CONFIG_MTD_AR7_LEN 0x400000
-+ int ' Bus width in octets' CONFIG_MTD_AR7_BUSWIDTH 2
-+ fi
-+ fi
-+ fi
- dep_tristate ' Pb1000 MTD support' CONFIG_MTD_PB1000 $CONFIG_MIPS_PB1000
- dep_tristate ' Pb1500 MTD support' CONFIG_MTD_PB1500 $CONFIG_MIPS_PB1500
- dep_tristate ' Pb1100 MTD support' CONFIG_MTD_PB1100 $CONFIG_MIPS_PB1100
-diff -urN linux.old/drivers/mtd/maps/Makefile linux.dev/drivers/mtd/maps/Makefile
---- linux.old/drivers/mtd/maps/Makefile 2005-07-21 05:36:32.414242296 +0200
-+++ linux.dev/drivers/mtd/maps/Makefile 2005-07-21 06:56:33.265401984 +0200
-@@ -10,6 +10,7 @@
- endif
-
- # Chip mappings
-+obj-$(CONFIG_MTD_AR7) += ar7-flash.o
- obj-$(CONFIG_MTD_CDB89712) += cdb89712.o
- obj-$(CONFIG_MTD_ARM_INTEGRATOR)+= integrator-flash.o
- obj-$(CONFIG_MTD_CFI_FLAGADM) += cfi_flagadm.o
diff --git a/openwrt/target/linux/ar7-2.4/patches/002-led_driver.patch b/openwrt/target/linux/ar7-2.4/patches/002-led_driver.patch
deleted file mode 100644
index 81fe153cc3..0000000000
--- a/openwrt/target/linux/ar7-2.4/patches/002-led_driver.patch
+++ /dev/null
@@ -1,1915 +0,0 @@
-diff -urN linux.dev/drivers/char/Config.in linux.dev2/drivers/char/Config.in
---- linux.dev/drivers/char/Config.in 2005-10-21 17:02:20.199991500 +0200
-+++ linux.dev2/drivers/char/Config.in 2005-10-21 18:03:44.541778750 +0200
-@@ -133,6 +133,10 @@
- fi
- fi
- fi
-+if [ "$CONFIG_AR7" = "y" ]; then
-+ bool 'Enable LED support' CONFIG_AR7_LED
-+fi
-+
- if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_ZORRO" = "y" ]; then
- tristate 'Commodore A2232 serial support (EXPERIMENTAL)' CONFIG_A2232
- fi
-diff -urN linux.dev/drivers/char/Makefile linux.dev2/drivers/char/Makefile
---- linux.dev/drivers/char/Makefile 2005-10-21 17:02:20.199991500 +0200
-+++ linux.dev2/drivers/char/Makefile 2005-10-21 18:03:44.541778750 +0200
-@@ -190,6 +190,12 @@
- obj-$(CONFIG_PCI) += keyboard.o $(KEYMAP)
- endif
-
-+#
-+# Texas Intruments LED driver
-+#
-+obj-$(CONFIG_AR7_LED) += avalanche_led/avalanche_led.o
-+subdir-$(CONFIG_AR7_LED) += avalanche_led
-+
- obj-$(CONFIG_HIL) += hp_keyb.o
- obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o
- obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o
-diff -urN linux.dev/drivers/char/avalanche_led/Makefile linux.dev2/drivers/char/avalanche_led/Makefile
---- linux.dev/drivers/char/avalanche_led/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev2/drivers/char/avalanche_led/Makefile 2005-10-21 18:03:44.513777000 +0200
-@@ -0,0 +1,23 @@
-+# File: drivers/char/avalanche_led/Makefile
-+#
-+# Makefile for the Linux LED device driver.
-+#
-+
-+
-+O_TARGET := avalanche_led.o
-+obj-m := avalanche_led.o
-+list-multi := avalanche_led.o
-+
-+EXTRA_CFLAGS := -I$(TOPDIR)/include/asm/ar7
-+
-+export-objs := ledmod.o leds.o
-+
-+avalanche_led-objs := ledmod.o gpio.o uartled.o leds.o
-+
-+include $(TOPDIR)/Rules.make
-+
-+avalanche_led.o: $(avalanche_led-objs)
-+ $(LD) -r -o $@ $(avalanche_led-objs)
-+
-+clean:
-+ rm -f core *.o *.a *.s
-diff -urN linux.dev/drivers/char/avalanche_led/gpio.c linux.dev2/drivers/char/avalanche_led/gpio.c
---- linux.dev/drivers/char/avalanche_led/gpio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev2/drivers/char/avalanche_led/gpio.c 2005-10-21 18:03:44.513777000 +0200
-@@ -0,0 +1,382 @@
-+#include <linux/kernel.h>
-+#include <asm/uaccess.h>
-+#include <linux/spinlock.h>
-+#include <linux/proc_fs.h>
-+#include <linux/fs.h>
-+#include <linux/timer.h>
-+#include <linux/module.h>
-+
-+#include <asm/ar7/tnetd73xx_err.h>
-+#include <asm/ar7/tnetd73xx_misc.h>
-+#include <asm/ar7/ledapp.h>
-+
-+#define TRUE 1
-+#define FALSE 0
-+
-+#if defined CONFIG_AR7WRD || defined CONFIG_AR7RD
-+
-+#define AR7_RESET_FILE "led_mod/ar7reset"
-+#define AR7_VERSION_FILE "led_mod/hardware_version"
-+#define AR7_RESET_GPIO 11
-+#define RESET_POLL_TIME 1
-+#define RESET_HOLD_TIME 4
-+#define NO_OF_LEDS
-+
-+static struct proc_dir_entry *reset_file;
-+static int res_state = 0;
-+static int count;
-+static struct timer_list *pTimer = NULL;
-+static ssize_t proc_read_reset_fops(struct file *filp,
-+ char *buf,size_t count , loff_t *offp);
-+
-+static ssize_t proc_read_hwversion_fops(struct file *filp,
-+ char *buf,size_t count , loff_t *offp);
-+
-+struct file_operations reset_fops = {
-+ read: proc_read_reset_fops
-+ };
-+struct file_operations hardware_version_fops = {
-+ read: proc_read_hwversion_fops
-+ };
-+#endif
-+
-+static spinlock_t device_lock;
-+led_reg_t temp[15];
-+
-+static void gpio_led_on( unsigned long param )
-+{
-+ unsigned int flags;
-+
-+ spin_lock_irqsave(&device_lock, flags);
-+
-+ tnetd73xx_gpio_out(param,FALSE);
-+ spin_unlock_irqrestore(&device_lock, flags);
-+}
-+
-+static void gpio_led_off ( unsigned long param )
-+{
-+ unsigned int flags = 0x00;
-+
-+ spin_lock_irqsave(&device_lock, flags);
-+
-+ tnetd73xx_gpio_out(param,TRUE);
-+ spin_unlock_irqrestore(&device_lock, flags);
-+}
-+
-+static void gpio_led_init( unsigned long param)
-+{
-+ tnetd73xx_gpio_ctrl(param,GPIO_PIN,GPIO_OUTPUT_PIN);
-+}
-+
-+static void board_gpio_reset(void)
-+{
-+ /* Initialize the link mask */
-+ device_lock = SPIN_LOCK_UNLOCKED;
-+ return;
-+}
-+
-+#if defined CONFIG_AR7WRD || defined CONFIG_AR7RD
-+
-+static ssize_t proc_read_hwversion_fops(struct file *filp, char *buf,
-+ size_t count, loff_t *offp)
-+{
-+ char line[8];
-+ int len = 0;
-+ if( *offp != 0 )
-+ return 0;
-+
-+ len = sprintf(line, "%d%d.%d%d%d%d\n", tnetd73xx_gpio_in(20),
-+ tnetd73xx_gpio_in(21), tnetd73xx_gpio_in(22),
-+ tnetd73xx_gpio_in(23), tnetd73xx_gpio_in(24),
-+ tnetd73xx_gpio_in(25));
-+
-+ copy_to_user(buf, line, len);
-+ *offp = len;
-+ return len;
-+}
-+
-+static ssize_t proc_read_reset_fops(struct file *filp,
-+ char *buf,size_t count , loff_t *offp)
-+{
-+ char * pdata = NULL;
-+ char line[3];
-+ int len = 0;
-+ if( *offp != 0 )
-+ return 0;
-+
-+ pdata = buf;
-+ len = sprintf(line,"%d\n", res_state );
-+//wwzh
-+// res_state = 0;
-+ copy_to_user(buf,line,len );
-+ *offp = len;
-+ return len;
-+}
-+
-+static void reset_timer_func(unsigned long data)
-+{
-+//wwzh
-+#if 0
-+ count = (tnetd73xx_gpio_in(AR7_RESET_GPIO) == 0) ? count + 1: 0;
-+ if( count >= RESET_HOLD_TIME/RESET_POLL_TIME )
-+#endif
-+ if (tnetd73xx_gpio_in(AR7_RESET_GPIO) == 0)
-+ res_state = 1;
-+ else
-+ res_state = 0;
-+ pTimer->expires = jiffies + HZ*RESET_POLL_TIME;
-+ add_timer (pTimer);
-+ return;
-+}
-+
-+static void hardware_version_init(void)
-+{
-+ static struct proc_dir_entry *hardware_version_file;
-+ hardware_version_file = create_proc_entry(AR7_VERSION_FILE, 0777, NULL);
-+ if(hardware_version_file == NULL)
-+ return;
-+
-+ hardware_version_file->owner = THIS_MODULE;
-+ hardware_version_file->proc_fops = &hardware_version_fops;
-+
-+ tnetd73xx_gpio_ctrl(20,GPIO_PIN,GPIO_INPUT_PIN);
-+ tnetd73xx_gpio_ctrl(21,GPIO_PIN,GPIO_INPUT_PIN);
-+ tnetd73xx_gpio_ctrl(22,GPIO_PIN,GPIO_INPUT_PIN);
-+ tnetd73xx_gpio_ctrl(23,GPIO_PIN,GPIO_INPUT_PIN);
-+ tnetd73xx_gpio_ctrl(24,GPIO_PIN,GPIO_INPUT_PIN);
-+ tnetd73xx_gpio_ctrl(25,GPIO_PIN,GPIO_INPUT_PIN);
-+
-+ return;
-+}
-+
-+static void reset_init(void)
-+{
-+ /* Create board reset proc file */
-+ reset_file = create_proc_entry( AR7_RESET_FILE, 0777, NULL);
-+ if( reset_file == NULL)
-+ goto reset_file;
-+ reset_file->owner = THIS_MODULE;
-+ reset_file->proc_fops = &reset_fops;
-+
-+ /* Initialise GPIO 11 for input */
-+ tnetd73xx_gpio_ctrl(AR7_RESET_GPIO,GPIO_PIN,GPIO_INPUT_PIN);
-+
-+ /* Create a timer which fires every seconds */
-+ pTimer = kmalloc(sizeof(struct timer_list),GFP_KERNEL);
-+ init_timer( pTimer );
-+ pTimer->function = reset_timer_func;
-+ pTimer->data = 0;
-+ /* Start the timer */
-+ reset_timer_func(0);
-+ return ;
-+
-+ reset_file:
-+ remove_proc_entry("AR7_RESET_FILE",NULL);
-+ return;
-+}
-+#endif
-+/*************wwzh****************/
-+#if 1
-+extern unsigned int sys_mod_state;
-+extern unsigned int wan_mod_state;
-+extern unsigned int wlan_mod_state;
-+void sys_led_init(void)
-+{
-+ tnetd73xx_gpio_ctrl(4, GPIO_PIN, GPIO_OUTPUT_PIN);
-+ tnetd73xx_gpio_ctrl(5, GPIO_PIN, GPIO_OUTPUT_PIN);
-+ tnetd73xx_gpio_ctrl(8, GPIO_PIN, GPIO_OUTPUT_PIN);
-+
-+ tnetd73xx_gpio_out(4, FALSE);
-+ tnetd73xx_gpio_out(5, TRUE);
-+ tnetd73xx_gpio_out(8, TRUE);
-+
-+
-+ sys_mod_state = 2;
-+
-+}
-+void wan_led_init(void)
-+{
-+
-+ tnetd73xx_gpio_ctrl(2, GPIO_PIN, GPIO_OUTPUT_PIN);
-+ tnetd73xx_gpio_ctrl(3, GPIO_PIN, GPIO_OUTPUT_PIN);
-+
-+ tnetd73xx_gpio_out(2, FALSE);
-+ tnetd73xx_gpio_out(3, FALSE);
-+
-+ wan_mod_state = 1;
-+}
-+//wwzh wireless
-+#if 0
-+void wlan_led_init(void)
-+{
-+ //unsigned long i = 0;
-+ tnetd73xx_gpio_ctrl(12, GPIO_PIN, GPIO_OUTPUT_PIN);
-+ tnetd73xx_gpio_ctrl(13, GPIO_PIN, GPIO_OUTPUT_PIN);
-+
-+ tnetd73xx_gpio_out(12, FALSE);
-+ tnetd73xx_gpio_out(13, TRUE);
-+ //for (i = 0; i < 0x20000000; i++);
-+ wlan_mod_state = 1;
-+}
-+#endif
-+
-+#endif
-+/*************end ****************/
-+
-+void board_gpio_init(void)
-+{
-+
-+ board_gpio_reset();
-+/**************wwzh*************/
-+ sys_led_init();
-+ wan_led_init();
-+
-+ //junzhao 2004.3.15
-+ hardware_version_init();
-+
-+ //wlan_led_init();
-+
-+ /* Register Device MAX_LED_ID + 1 for reset to factory default */
-+ temp[0].param = 0;
-+ temp[0].init = reset_init;
-+ temp[0].onfunc = 0;
-+ temp[0].offfunc = 0;
-+ register_led_drv( MAX_LED_ID + 1 , &temp[0]);
-+//wwzh for wireless led
-+#if 1
-+ /* Register led 12 WiFi 6 */
-+ temp[1].param = 6;
-+ temp[1].init = gpio_led_init;
-+ temp[1].onfunc = gpio_led_on;
-+ temp[1].offfunc = gpio_led_off;
-+ register_led_drv( 12 , &temp[1]);
-+
-+#endif
-+
-+#if 0
-+/**************end ************/
-+#if defined(CONFIG_AR5D01)
-+ /* Register led 1 GPIO0 */
-+ temp[0].param = GPIO_0;
-+ temp[0].init = gpio_led_init;
-+ temp[0].onfunc = gpio_led_on;
-+ temp[0].offfunc = gpio_led_off;
-+ register_led_drv( 1 , &temp[0]);
-+
-+ /* Register led 2 EINT1 */
-+ temp[1].param = EINT_1;
-+ temp[1].init = gpio_led_init;
-+ temp[1].onfunc = gpio_led_on;
-+ temp[1].offfunc = gpio_led_off;
-+ register_led_drv( 2 , &temp[1]);
-+
-+ /* Register led 5 EINT1 */
-+ temp[2].param = GPIO_1;
-+ temp[2].init = gpio_led_init;
-+ temp[2].onfunc = gpio_led_on;
-+ temp[2].offfunc = gpio_led_off;
-+ register_led_drv( 5 , &temp[2]);
-+#endif
-+
-+#if defined(CONFIG_AR5W01)
-+ /* Register led 5 GPIO_1 */
-+ temp[0].param = GPIO_1;
-+ temp[0].init = gpio_led_init;
-+ temp[0].onfunc = gpio_led_on;
-+ temp[0].offfunc = gpio_led_off;
-+ register_led_drv( 5 , &temp[0]);
-+
-+ /* Register led 7 GPIO_0 */
-+ temp[1].param = GPIO_0;
-+ temp[1].init = gpio_led_init;
-+ temp[1].onfunc = gpio_led_on;
-+ temp[1].offfunc = gpio_led_off;
-+ register_led_drv( 7 , &temp[1]);
-+#endif
-+
-+//wwzh #if defined(CONFIG_AR7RD)
-+#if defined CONFIG_AR7WRD || defined CONFIG_AR7RD
-+ /* Register led 5 Green PPPOE GPIO 13 */
-+ temp[0].param = 13;
-+ temp[0].init = gpio_led_init;
-+ temp[0].onfunc = gpio_led_on;
-+ temp[0].offfunc = gpio_led_off;
-+ register_led_drv( 5 , &temp[0]);
-+
-+ /* Register led 7 Green USB GPIO 12 */
-+ temp[1].param = 12;
-+ temp[1].init = gpio_led_init;
-+ temp[1].onfunc = gpio_led_on;
-+ temp[1].offfunc = gpio_led_off;
-+ register_led_drv( 7 , &temp[1]);
-+
-+ /* Register Device MAX_LED_ID + 1 for reset to factory default */
-+ temp[2].param = 0;
-+ temp[2].init = reset_init;
-+ temp[2].onfunc = 0;
-+ temp[2].offfunc = 0;
-+ register_led_drv( MAX_LED_ID + 1 , &temp[2]);
-+
-+ /* Register led 8 RED DSL GPIO 10 */
-+ temp[3].param = 10;
-+ temp[3].init = gpio_led_init;
-+ temp[3].onfunc = gpio_led_on;
-+ temp[3].offfunc = gpio_led_off;
-+ register_led_drv( 8 , &temp[3]);
-+
-+ /* Register led 9 RED PPPoE down GPIO 9 */
-+ temp[4].param = 9;
-+ temp[4].init = gpio_led_init;
-+ temp[4].onfunc = gpio_led_on;
-+ temp[4].offfunc = gpio_led_off;
-+ register_led_drv( 9 , &temp[4]);
-+
-+ /* Register led 10 DSL down GPIO 8 */
-+ temp[5].param = 8;
-+ temp[5].init = gpio_led_init;
-+ temp[5].onfunc = gpio_led_on;
-+ temp[5].offfunc = gpio_led_off;
-+ register_led_drv( 10 , &temp[5]);
-+
-+ /* Register led 11 Power GPIO 7 */
-+ temp[6].param = 7;
-+ temp[6].init = gpio_led_init;
-+ temp[6].onfunc = gpio_led_on;
-+ temp[6].offfunc = gpio_led_off;
-+ register_led_drv( 11 , &temp[6]);
-+
-+ /* Register led 12 WiFi 6 */
-+ temp[7].param = 6;
-+ temp[7].init = gpio_led_init;
-+ temp[7].onfunc = gpio_led_on;
-+ temp[7].offfunc = gpio_led_off;
-+ register_led_drv( 12 , &temp[7]);
-+
-+ /* Register led 13 ELINK(AA1313) GPIO 15 */
-+ temp[8].param = 15;
-+ temp[8].init = gpio_led_init;
-+ temp[8].onfunc = gpio_led_on;
-+ temp[8].offfunc = gpio_led_off;
-+ register_led_drv( 13 , &temp[8]);
-+
-+ /* Register led 14 EACT(Y13) GPIO 16 */
-+ temp[9].param = 16;
-+ temp[9].init = gpio_led_init;
-+ temp[9].onfunc = gpio_led_on;
-+ temp[9].offfunc = gpio_led_off;
-+ register_led_drv( 14 , &temp[9]);
-+
-+#endif
-+/**************wwzh**************/
-+#endif
-+/**************end **************/
-+ return;
-+}
-+
-+
-+
-+
-+
-+
-+
-+
-diff -urN linux.dev/drivers/char/avalanche_led/ledmod.c linux.dev2/drivers/char/avalanche_led/ledmod.c
---- linux.dev/drivers/char/avalanche_led/ledmod.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev2/drivers/char/avalanche_led/ledmod.c 2005-10-21 18:03:44.513777000 +0200
-@@ -0,0 +1,1116 @@
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/proc_fs.h>
-+#include <asm/uaccess.h>
-+#include <linux/fs.h>
-+#include <linux/timer.h>
-+#include <linux/delay.h>
-+#include <linux/spinlock.h>
-+#include <asm/ar7/avalanche_regs.h>
-+#include <asm/ar7/ledapp.h>
-+#include <linux/module.h>
-+
-+#define LED_ON 1
-+#define LED_OFF 2
-+#define LED_BLINK 3
-+#define LED_FLASH 4
-+
-+#define LED_BLINK_UP 5
-+#define LED_BLINK_DOWN 6
-+
-+extern void avalanche_leds_init(void);
-+
-+/***********wwzh**************/
-+unsigned int sys_mod_state;
-+unsigned int wan_mod_state;
-+unsigned int wlan_mod_state;
-+
-+struct timer_list *pWanTimer = NULL;
-+struct timer_list *pWlanTimer = NULL;
-+/***********end **************/
-+
-+typedef struct state_entry{
-+ unsigned char mode;
-+ unsigned char led;
-+ void (*handler)(struct state_entry *pState);
-+ unsigned long param;
-+}state_entry_t;
-+
-+typedef struct mod_entry{
-+ state_entry_t *states[MAX_STATE_ID];
-+}mod_entry_t;
-+
-+static mod_entry_t *modArr[MAX_MOD_ID];
-+static struct proc_dir_entry *led_proc_dir,*led_file;
-+
-+/* index of the array is the led number HARDWARE SPECIFIC*/
-+typedef struct led_data{
-+ led_reg_t *led;
-+ int state;
-+ struct timer_list *pTimer;
-+ unsigned char timer_running;
-+ unsigned long param;
-+}led_data_t;
-+
-+led_data_t led_arr[MAX_LED_ID + 1];
-+/*!!! The last device is actually being used for ar7 reset to factory default */
-+
-+
-+static spinlock_t config_lock;
-+
-+static void board_led_link_up( state_entry_t *pState );
-+static void board_led_link_down( state_entry_t *pState );
-+static void board_led_activity_on( state_entry_t *pState );
-+static void board_led_activity_off( state_entry_t *pState );
-+static void led_timer_func(unsigned long data);
-+
-+extern void board_gpio_init(void);
-+extern void uart_led_init(void);
-+
-+static ssize_t proc_read_led_fops(struct file *filp,
-+ char *buf,size_t count , loff_t *offp);
-+static ssize_t proc_write_led_fops(struct file *filp,const char *buffer,
-+ size_t count , loff_t *offp);
-+static int config_led( unsigned long y);
-+
-+struct file_operations led_fops = {
-+ read: proc_read_led_fops,
-+ write: proc_write_led_fops,
-+ };
-+
-+static int led_atoi( char *name)
-+{
-+ int val = 0;
-+ for(;;name++)
-+ {
-+ switch(*name)
-+ {
-+ case '0'...'9':
-+ val = val*10+(*name - '0');
-+ break;
-+ default:
-+ return val;
-+ }
-+ }
-+}
-+
-+static int free_memory(void)
-+{
-+ int i, j;
-+
-+ for( i = 0; i < MAX_MOD_ID ; i++)
-+ {
-+ if( modArr[i] != NULL )
-+ {
-+ for( j = 0; j < MAX_STATE_ID ; j++ )
-+ {
-+ if( modArr[i]->states[j] != NULL )
-+ kfree( modArr[i]->states[j]);
-+ }
-+ kfree(modArr[i]);
-+ modArr[i] = NULL;
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int led_on( state_entry_t *pState )
-+{
-+ if( led_arr[pState->led].led == NULL)
-+ return -1;
-+ led_arr[pState->led].led->onfunc( led_arr[pState->led].led->param);
-+ return 0;
-+}
-+
-+static int led_off( state_entry_t *pState )
-+{
-+ if( led_arr[pState->led].led == NULL)
-+ return -1;
-+ led_arr[pState->led].led->offfunc( led_arr[pState->led].led->param);
-+ return 0;
-+}
-+
-+static void board_led_link_up( state_entry_t *pState )
-+{
-+ led_arr[pState->led].state = LED_ON;
-+ if( led_arr[pState->led].timer_running == 0 )
-+ led_on(pState);
-+ return;
-+}
-+
-+static void board_led_link_down( state_entry_t *pState )
-+{
-+ led_arr[pState->led].state = LED_OFF;
-+ if( led_arr[pState->led].timer_running == 0 )
-+ led_off(pState);
-+ return;
-+}
-+
-+static void add_led_timer(state_entry_t *pState)
-+{
-+ led_arr[pState->led].pTimer->expires = jiffies + HZ*(pState->param)/1000;
-+ led_arr[pState->led].param = pState->param;
-+ led_arr[pState->led].pTimer->data = pState;
-+ add_timer (led_arr[pState->led].pTimer);
-+}
-+
-+static void board_led_activity_on(state_entry_t *pState)
-+{
-+ if(led_arr[pState->led].timer_running == 0)
-+ {
-+ led_on(pState);
-+ add_led_timer(pState);
-+ led_arr[pState->led].timer_running = 1;
-+ led_arr[pState->led].state = LED_BLINK_UP;
-+ }
-+ else if( led_arr[pState->led].timer_running > 0xF0)
-+ {
-+ led_arr[pState->led].state = LED_BLINK_UP;
-+ led_arr[pState->led].pTimer->expires = jiffies + HZ*(pState->param)/1000;
-+ led_arr[pState->led].param = pState->param;
-+ led_arr[pState->led].pTimer->data = pState;
-+ }
-+ return;
-+}
-+
-+static void board_led_activity_off(state_entry_t *pState)
-+{
-+ if(led_arr[pState->led].timer_running == 0)
-+ {
-+ led_off(pState);
-+ add_led_timer(pState);
-+ led_arr[pState->led].timer_running = 1;
-+ led_arr[pState->led].state = LED_BLINK_UP;
-+ }
-+ else if( led_arr[pState->led].timer_running > 0xF0)
-+ {
-+ led_arr[pState->led].state = LED_BLINK_UP;
-+ led_arr[pState->led].pTimer->expires = jiffies + HZ*(pState->param)/1000;
-+ led_arr[pState->led].param = pState->param;
-+ led_arr[pState->led].pTimer->data = pState;
-+ }
-+ return;
-+}
-+
-+static void board_led_link_flash(state_entry_t *pState)
-+{
-+ if(led_on(pState))
-+ return;
-+ if(led_arr[pState->led].timer_running == 0)
-+ add_led_timer(pState);
-+ else
-+ led_arr[pState->led].param = pState->param;
-+ led_arr[pState->led].timer_running = 0xFF;
-+ led_arr[pState->led].state = LED_FLASH;
-+ return;
-+}
-+
-+static void led_timer_func(unsigned long data)
-+{
-+ state_entry_t *pState = NULL;
-+ mod_entry_t *pMod = NULL;
-+ unsigned int flags;
-+
-+ spin_lock_irqsave(&config_lock, flags);
-+
-+ pState = (state_entry_t *)data;
-+
-+ if( led_arr[pState->led].state == LED_BLINK_DOWN )
-+ {
-+ led_arr[pState->led].timer_running = 0;
-+ if( pState->mode == 2 )
-+ led_arr[pState->led].state = LED_OFF;
-+ else
-+ led_arr[pState->led].state = LED_ON;
-+ }
-+ else if( led_arr[pState->led].state == LED_BLINK_UP )
-+ {
-+ led_arr[pState->led].pTimer->expires = jiffies + HZ*(led_arr[pState->led].param)/1000;
-+ led_arr[pState->led].pTimer->data = pState;
-+ add_timer (led_arr[pState->led].pTimer);
-+ if( pState->mode == 2 )
-+ {
-+ led_off(pState);
-+ led_arr[pState->led].state = LED_BLINK_DOWN;
-+ }
-+ else
-+ {
-+ led_on(pState);
-+ led_arr[pState->led].state = LED_BLINK_DOWN;
-+ }
-+ led_arr[pState->led].timer_running = 1;
-+ }
-+ else if( led_arr[pState->led].state == LED_FLASH )
-+ {
-+ led_arr[pState->led].pTimer->expires = jiffies + HZ*(led_arr[pState->led].param)/1000;
-+ led_arr[pState->led].pTimer->data = pState;
-+ add_timer (led_arr[pState->led].pTimer);
-+
-+ if( led_arr[pState->led].timer_running == 0xFF )
-+ {
-+ led_off(pState);
-+ led_arr[pState->led].timer_running--;
-+ }
-+ else
-+ {
-+ led_on(pState);
-+ led_arr[pState->led].timer_running++;
-+ }
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return;
-+ }
-+ else if(led_arr[pState->led].state == LED_OFF)
-+ {
-+ led_off(pState);
-+ led_arr[pState->led].timer_running = 0;
-+ }
-+ else if( led_arr[pState->led].state == LED_ON )
-+ {
-+ led_on(pState);
-+ led_arr[pState->led].timer_running = 0;
-+ }
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return;
-+}
-+/************wwzh*****************/
-+#if 0
-+/************end *****************/
-+static ssize_t proc_read_led_fops(struct file *filp,
-+ char *buf,size_t count , loff_t *offp)
-+{
-+ char * pdata = NULL;
-+ int i = 0, j = 0, len = 0, totallen = 0;
-+ char line[255];
-+
-+ if( *offp != 0 )
-+ return 0;
-+
-+ pdata = buf;
-+ len += sprintf(line,"LEDS Registered for use are:");
-+ for( i = 0; i< MAX_LED_ID; i++)
-+ if( led_arr[i].led != NULL )
-+ len += sprintf(&line[len]," %d ", i );
-+ line[len++] = '\n';
-+
-+ copy_to_user(pdata, line,len );
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+ len = sprintf(line,"USER MODULE INFORMATION:\n");
-+ copy_to_user(pdata, line,len );
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+ for( i = 0; i< MAX_MOD_ID; i++)
-+ {
-+ if( modArr[i] != NULL )
-+ {
-+ len = sprintf(line," Module ID = %d \n" , i);
-+ copy_to_user(pdata, line,len );
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+ for( j = 0; j < MAX_STATE_ID; j++)
-+ {
-+ if( modArr[i]->states[j] != NULL)
-+ {
-+ len = sprintf(line ,
-+ " State = %d , Led = %d," , j , modArr[i]->states[j]->led);
-+ copy_to_user(pdata, line,len );
-+ pdata += len;
-+ totallen += len;
-+
-+ len = 0;
-+ switch( modArr[i]->states[j]->mode )
-+ {
-+ case 1:
-+ len = sprintf(line ," Mode = OFF\n");
-+ break;
-+ case 2:
-+ len = sprintf(line ," Mode = BLINK_ON , On Time(ms) = %d\n" ,
-+ (unsigned int)modArr[i]->states[j]->param);
-+ break;
-+ case 3:
-+ len = sprintf(line ," Mode = BLINK_OFF , Off Time(ms) = %d\n" ,
-+ (unsigned int)modArr[i]->states[j]->param);
-+ break;
-+ case 4:
-+ len = sprintf(line ," Mode = ON \n");
-+ break;
-+ case 5:
-+ len = sprintf(line ," Mode = FLASH , Time Period(ms) = %d\n" ,
-+ (unsigned int)modArr[i]->states[j]->param);
-+ break;
-+ default:
-+ break;
-+
-+ }
-+ copy_to_user(pdata, line,len );
-+ pdata += len;
-+ totallen += len;
-+
-+ len = 0;
-+ }
-+ }
-+ }
-+ }
-+ /* Return with configuration information for LEDs */
-+ *offp = totallen;
-+ return totallen;
-+}
-+static ssize_t proc_write_led_fops(struct file *filp,const char *buffer,
-+ size_t count , loff_t *offp)
-+{
-+ char *pdata = NULL, *ptemp = NULL;
-+ char line[10],temp[10];
-+ int i = 0;
-+ int mod = 0xFFFF , state = 0xFFFF;
-+ int flag = 0;
-+
-+ /* Check if this write is for configuring stuff */
-+ if( *(int *)(buffer) == 0xFFEEDDCC )
-+ {
-+ printk("<1>proc write:Calling Configuration\n");
-+ config_led((unsigned long)(buffer + sizeof(int)) );
-+ return count;
-+ }
-+
-+ if( count >= 10)
-+ {
-+ printk("<1>proc write:Input too long,max length = %d\n",10);
-+ return count;
-+ }
-+ memset( temp, 0x00 , 10);
-+ memset( line, 0x00 , 10);
-+ copy_from_user(line,buffer,count);
-+ line[count] = 0x00;
-+ pdata = line;
-+ ptemp = temp;
-+ while( flag == 0)
-+ {
-+ if( i > 10 )
-+ break;
-+ if( ((*pdata) >= '0' ) && ((*pdata) <= '9') )
-+ {
-+ *ptemp = *pdata ;
-+ ptemp++;
-+ }
-+ else if( (*pdata) == ',' )
-+ {
-+ *ptemp = 0x00;
-+ flag = 1;
-+ }
-+ pdata++;
-+ i++;
-+ };
-+ if( flag == 1)
-+ mod = led_atoi( temp);
-+ else
-+ return count;
-+
-+ ptemp = temp;
-+ *ptemp = 0x00;
-+ flag = 0;
-+ while( flag == 0)
-+ {
-+ if( i > 10 )
-+ break;
-+ if( ((*pdata) >= '0' ) && ((*pdata) <= '9') )
-+ {
-+ *ptemp = *pdata ;
-+ ptemp++;
-+ }
-+ else if( (*pdata) == 0x00 )
-+ {
-+ *ptemp = 0x00;
-+ flag = 1;
-+ }
-+ pdata++;
-+ i++;
-+ };
-+ if( flag == 1)
-+ state = led_atoi( temp);
-+ else
-+ return count;
-+ if( (mod == 0xFFFF) || (state == 0xFFFF))
-+ return count;
-+ else
-+ led_operation( mod , state );
-+ return count;
-+}
-+
-+/************wwzh*******************/
-+#else
-+
-+#define TRUE 1
-+#define FALSE 0
-+#define FLICK_TIME (HZ*100/1000)
-+static unsigned int wan_txrx_state = 0;
-+static unsigned int wlan_txrx_state = 0;
-+
-+void led_operation( int mod , int state)
-+{
-+
-+ unsigned int flags;
-+
-+ spin_lock_irqsave(&config_lock, flags);
-+
-+ if( (mod >= MAX_MOD_ID) || ( state >= MAX_STATE_ID) )
-+ {
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return;
-+ }
-+ if ( modArr[mod] == NULL )
-+ {
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return;
-+ }
-+ if( modArr[mod]->states[state] == NULL )
-+ {
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return;
-+ }
-+ /* Call the function handler */
-+ modArr[mod]->states[state]->handler(modArr[mod]->states[state]);
-+
-+ spin_unlock_irqrestore(&config_lock, flags);
-+}
-+
-+static void wan_led_func(unsigned long data)
-+{
-+ if (wan_txrx_state == 0)
-+ {
-+ tnetd73xx_gpio_out(2, TRUE);
-+ tnetd73xx_gpio_out(3, FALSE);
-+ wan_txrx_state = 1;
-+ }
-+ else
-+ {
-+ tnetd73xx_gpio_out(2, FALSE);
-+ tnetd73xx_gpio_out(3, FALSE);
-+ wan_txrx_state = 0;
-+ }
-+ pWanTimer->expires = jiffies + FLICK_TIME;
-+ add_timer(pWanTimer);
-+}
-+//wwzh for wireless
-+#if 0
-+static void wlan_led_func(unsigned long data)
-+{
-+ if (wlan_txrx_state == 0)
-+ {
-+ tnetd73xx_gpio_out(12, TRUE);
-+ tnetd73xx_gpio_out(13, FALSE);
-+ wlan_txrx_state = 1;
-+ }
-+ else
-+ {
-+ tnetd73xx_gpio_out(12, FALSE);
-+ tnetd73xx_gpio_out(13, FALSE);
-+ wlan_txrx_state = 0;
-+
-+ }
-+ pWlanTimer->expires = jiffies + FLICK_TIME;
-+ add_timer(pWlanTimer);
-+}
-+#endif
-+
-+void led_active(int mod, int state)
-+{
-+ unsigned int flags = 0;
-+
-+//printk("mod = %d state = %d\n", mod, state);
-+ spin_lock_irqsave(&config_lock, flags);
-+ if ((mod >= 5) || (state >= 5))
-+ {
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return;
-+ }
-+
-+ switch (mod)
-+ {
-+ case 2: /*system led */
-+ sys_mod_state = state;
-+ switch (state)
-+ {
-+ case 1:
-+ break;
-+ case 2: /*sys led flashing green */
-+ tnetd73xx_gpio_out(4, FALSE);
-+ tnetd73xx_gpio_out(5, TRUE);
-+ tnetd73xx_gpio_out(8, TRUE);
-+ break;
-+ case 3: /*sys led solid green */
-+ tnetd73xx_gpio_out(4, TRUE);
-+ tnetd73xx_gpio_out(5, TRUE);
-+ tnetd73xx_gpio_out(8, TRUE);
-+
-+ break;
-+ case 4: /*sys fail red */
-+ tnetd73xx_gpio_out(4, TRUE);
-+ tnetd73xx_gpio_out(5, FALSE);
-+ tnetd73xx_gpio_out(8, FALSE);
-+ break;
-+ default:
-+ break;
-+ }
-+ break;
-+ case 3: /*wan led */
-+ wan_mod_state = state;
-+ switch (state)
-+ {
-+ case 1: /*no wan interface*/
-+ if (pWanTimer)
-+ {
-+ del_timer(pWanTimer);
-+ kfree(pWanTimer);
-+ pWanTimer = NULL;
-+ }
-+ tnetd73xx_gpio_out(2, FALSE);
-+ tnetd73xx_gpio_out(3, FALSE);
-+ break;
-+ case 2: /*wan connected */
-+ if (pWanTimer)
-+ {
-+ del_timer(pWanTimer);
-+ kfree(pWanTimer);
-+ pWanTimer = NULL;
-+ }
-+ tnetd73xx_gpio_out(2, TRUE);
-+ tnetd73xx_gpio_out(3, FALSE);
-+ break;
-+ case 3: /*rx/tx activity */
-+ if (pWanTimer != NULL)
-+ break;
-+
-+ pWanTimer = kmalloc(sizeof(struct timer_list), GFP_KERNEL);
-+ init_timer(pWanTimer);
-+
-+ pWanTimer->function = wan_led_func;
-+ pWanTimer->data = 0;
-+ pWanTimer->expires = jiffies + FLICK_TIME;
-+ tnetd73xx_gpio_out(2, FALSE);
-+ tnetd73xx_gpio_out(3, FALSE);
-+ wan_txrx_state = 0;
-+ add_timer(pWanTimer);
-+
-+ break;
-+ case 4: /*no ipaddress */
-+ if (pWanTimer)
-+ {
-+ del_timer(pWanTimer);
-+ kfree(pWanTimer);
-+ pWanTimer = NULL;
-+ }
-+ tnetd73xx_gpio_out(2, FALSE);
-+ tnetd73xx_gpio_out(3, TRUE);
-+ break;
-+ default:
-+ if (pWanTimer)
-+ {
-+ del_timer(pWanTimer);
-+ kfree(pWanTimer);
-+ pWanTimer = NULL;
-+ }
-+ break;
-+ }
-+ break;
-+ //wwzh for wireless
-+ #if 0
-+ case 4: /*wlan led */
-+ wlan_mod_state = state;
-+ switch (state)
-+ {
-+ case 1: /* wlan off */
-+ if (pWlanTimer)
-+ {
-+ del_timer(pWlanTimer);
-+ kfree(pWlanTimer);
-+ pWlanTimer = NULL;
-+ }
-+ tnetd73xx_gpio_out(12, FALSE);
-+ tnetd73xx_gpio_out(13, FALSE);
-+ break;
-+ case 2: /* wlan ready */
-+ if (pWlanTimer)
-+ {
-+ del_timer(pWlanTimer);
-+ kfree(pWlanTimer);
-+ pWlanTimer = NULL;
-+ }
-+ tnetd73xx_gpio_out(12, TRUE);
-+ tnetd73xx_gpio_out(13, FALSE);
-+ break;
-+ case 3: /* wlan rx/tx activity */
-+ if (pWlanTimer != NULL)
-+ break;
-+
-+ pWlanTimer = kmalloc(sizeof(struct timer_list), GFP_KERNEL);
-+ init_timer(pWlanTimer);
-+
-+ pWlanTimer->function = wlan_led_func;
-+ pWlanTimer->data = 0;
-+ pWlanTimer->expires = jiffies + FLICK_TIME;
-+ tnetd73xx_gpio_out(12, FALSE);
-+ tnetd73xx_gpio_out(13, FALSE);
-+ wlan_txrx_state = 0;
-+ add_timer(pWlanTimer);
-+
-+ break;
-+ default:
-+ if (pWlanTimer)
-+ {
-+ del_timer(pWlanTimer);
-+ kfree(pWlanTimer);
-+ pWlanTimer = NULL;
-+ }
-+
-+ break;
-+ }
-+ break;
-+ #endif //for wireless
-+ default:
-+ break;
-+ }
-+ spin_unlock_irqrestore(&config_lock, flags);
-+}
-+static ssize_t proc_read_led_fops(struct file *filp,
-+ char *buf,size_t count , loff_t *offp)
-+{
-+ char *pdata = NULL;
-+ int i = 0, j = 0, len = 0, totallen = 0;
-+ char line[255];
-+
-+ if (*offp != 0)
-+ return 0;
-+ pdata = buf;
-+ len = sprintf(line, "USER MODULE INFORMATION:\n");
-+ copy_to_user(pdata, line, len);
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+
-+ //*******add Module 1 , this Module is ADSL ********/
-+ for (i = 0; i < MAX_MOD_ID; i++)
-+ {
-+ if (modArr[i] != NULL)
-+ {
-+ len = sprintf(line, " Module ID = %d\n", i);
-+ copy_to_user(pdata, line, len);
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+ for(j = 0; j < MAX_STATE_ID; j++)
-+ {
-+ if (modArr[i]->states[j] != NULL)
-+ {
-+ len = sprintf(line, "State =%d, Led = %d,", j, modArr[i]->states[j]->led);
-+ copy_to_user(pdata, line, len);
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+ switch(modArr[i]->states[j]->mode)
-+ {
-+ case 1:
-+ len = sprintf(line, "Mode = OFF\n");
-+ break;
-+ case 2:
-+ len = sprintf(line, "Mode = BLINK_ON, On Time(ms) = %d\n", (unsigned int)modArr[i]->states[j]->param);
-+ break;
-+ case 3:
-+ len = sprintf(line, "Mode = BLINK_OFF, Off Time(ms) = %d\n", (unsigned int)modArr[i]->states[j]->param);
-+ break;
-+ case 4:
-+ len = sprintf(line, "Mode = On\n");
-+ break;
-+ case 5:
-+ len = sprintf(line, "Mode = FLASH, Time Period(ms) = %d\n", (unsigned int)modArr[i]->states[j]->param);
-+ break;
-+ default:
-+ break;
-+ }
-+ copy_to_user(pdata, line, len);
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+ }
-+ }
-+ }
-+
-+ }
-+
-+ len = sprintf(line, "Module ID = 2(system led)\n");
-+ copy_to_user(pdata, line, len);
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+ switch(sys_mod_state)
-+ {
-+ case 1:
-+ len = sprintf(line, "State = OFF\n");
-+ break;
-+ case 2:
-+ len = sprintf(line, "State = Booting\n");
-+ break;
-+ case 3:
-+ len = sprintf(line, "State = System Ready\n");
-+ break;
-+ case 4:
-+ len = sprintf(line, "State = System Failure\n");
-+ break;
-+ default:
-+ break;
-+ }
-+ copy_to_user(pdata, line, len);
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+
-+ len = sprintf(line, "Module ID = 3(WAN led)\n");
-+ copy_to_user(pdata, line, len);
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+ switch(wan_mod_state)
-+ {
-+ case 1:
-+ len = sprintf(line, "State = OFF\n");
-+ break;
-+ case 2:
-+ len = sprintf(line, "State = Wan Connected\n");
-+ break;
-+ case 3:
-+ len = sprintf(line, "State = Wan Tx/Rx Activity\n");
-+ break;
-+ case 4:
-+ len = sprintf(line, "State = Wan Connect Failure\n");
-+ break;
-+ default:
-+ break;
-+ }
-+ copy_to_user(pdata, line, len);
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+
-+//wwzh for wireless
-+#if 0
-+ len = sprintf(line, "Module ID = 4(WLAN led)\n");
-+ copy_to_user(pdata, line, len);
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+ switch(wlan_mod_state)
-+ {
-+ case 1:
-+ len = sprintf(line, "State = OFF\n");
-+ break;
-+ case 2:
-+ len = sprintf(line, "State = wlan Ready\n");
-+ break;
-+ case 3:
-+ len = sprintf(line, "State = wlan rx/tx activity\n");
-+ break;
-+ default:
-+ break;
-+ }
-+ copy_to_user(pdata, line, len);
-+ pdata += len;
-+ totallen += len;
-+ len = 0;
-+#endif //for wireless
-+
-+ *offp = totallen;
-+ return totallen;
-+}
-+static ssize_t proc_write_led_fops(struct file *filp,const char *buffer,
-+ size_t count , loff_t *offp)
-+{
-+ char *pdata = NULL, *ptemp = NULL;
-+ char line[10], temp[10];
-+ int i = 0;
-+ int mod = 0xffff, state = 0xffff;
-+ int flag = 0;
-+
-+ /* Check if this write is for configuring ADSL */
-+ if( *(int *)(buffer) == 0xFFEEDDCC )
-+ {
-+ printk("<1>proc write:Calling Configuration\n");
-+ config_led((unsigned long)(buffer + sizeof(int)) );
-+ return count;
-+ }
-+
-+ if (count > 10)
-+ {
-+ printk("<1> proc write: Input too long, max length = 10\n");
-+ return count;
-+ }
-+ memset(temp, 0x00, 10);
-+ memset(line, 0x00, 10);
-+ copy_from_user(line, buffer, count);
-+ line[count] = 0x00;
-+ pdata = line;
-+ ptemp = temp;
-+
-+ while (flag == 0)
-+ {
-+ if (i > 10)
-+ break;
-+ if (((*pdata) >= '0') && ((*pdata) <= '9'))
-+ {
-+ *ptemp = *pdata;
-+ ptemp++;
-+ }
-+ else if ((*pdata) == ',')
-+ {
-+ *ptemp = 0x00;
-+ flag = 1;
-+ }
-+ pdata++;
-+ i++;
-+ }
-+ if (flag == 1)
-+ mod = led_atoi(temp);
-+ else
-+ return count;
-+
-+ ptemp = temp;
-+ *ptemp = 0x00;
-+ flag = 0;
-+
-+ while(flag == 0)
-+ {
-+ if (i > 10)
-+ break;
-+ if (((*pdata) >= '0') && ((*pdata) <= '9'))
-+ {
-+ *ptemp = *pdata;
-+ ptemp++;
-+ }
-+ else if ((*pdata) == 0x00)
-+ {
-+ *ptemp = 0x00;
-+ flag = 1;
-+ }
-+ pdata++;
-+ i++;
-+ }
-+ if (flag == 1)
-+ state = led_atoi(temp);
-+ else
-+ return count;
-+ if ((mod == 0xFFFF) || (state == 0xFFFF))
-+ return count;
-+ else
-+ {
-+ if (mod != 4)
-+ led_active(mod, state);
-+ else
-+ led_operation(mod, state);
-+ }
-+ return 1;
-+}
-+#endif
-+/************end *******************/
-+static int config_led(unsigned long y)
-+{
-+ config_elem_t *pcfg = NULL;
-+ char *pdata = NULL;
-+ int i;
-+ int length = 0 , number = 0;
-+ unsigned int flags;
-+
-+ spin_lock_irqsave(&config_lock, flags);
-+
-+ /* ioctl to configure */
-+ length = *((int*)y);
-+ pdata = (char *)y + sizeof(int);
-+ number = (length - sizeof(int))/sizeof(config_elem_t);
-+ pcfg = (config_elem_t *)(pdata);
-+
-+ /* Check if an earlier configuration exists IF yes free it up */
-+ free_memory();
-+
-+ for ( i = 0 ; i < number ; i++ )
-+ {
-+ /* If no structure has been allocated for the module do so */
-+ if ( modArr[pcfg->name] == NULL )
-+ {
-+ printk("<1>module = %d\n",pcfg->name);
-+ if( pcfg->name >= MAX_MOD_ID)
-+ {
-+ printk("<1>Exiting Configuration: Module ID too large %d\n",pcfg->name);
-+ free_memory();
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return -1;
-+ }
-+ modArr[pcfg->name] = kmalloc(sizeof(mod_entry_t),GFP_KERNEL);
-+ if(modArr[pcfg->name] == NULL)
-+ {
-+ printk("<1>Exiting Configuration: Error in allocating memory\n");
-+ free_memory();
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return -1;
-+ }
-+ memset( modArr[pcfg->name], 0x00, sizeof(mod_entry_t));
-+ }
-+
-+ /* if no structure is allocated previously for this state
-+ allocate a structure, if it's already there fill it up */
-+ if( modArr[pcfg->name]->states[pcfg->state] == NULL)
-+ {
-+ printk("<1>STATE = %d\n",pcfg->state);
-+ if( pcfg->state >= MAX_STATE_ID)
-+ {
-+ printk("<1>Exiting Configuration: State ID too large\n");
-+ free_memory();
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return -1;
-+ }
-+ modArr[pcfg->name]->states[pcfg->state] =
-+ kmalloc(sizeof(state_entry_t),GFP_KERNEL);
-+ if( modArr[pcfg->name]->states[pcfg->state] == NULL)
-+ {
-+ free_memory();
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return -1;
-+ }
-+ memset( modArr[pcfg->name]->states[pcfg->state], 0x00, sizeof(state_entry_t));
-+ }
-+ /* Fill up the fields of the state */
-+ if( pcfg->led >= MAX_LED_ID)
-+ {
-+ printk("<1>led = %d\n",pcfg->led);
-+ free_memory();
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return -1;
-+ }
-+ modArr[pcfg->name]->states[pcfg->state]->led = pcfg->led;
-+ modArr[pcfg->name]->states[pcfg->state]->mode = pcfg->mode;
-+ modArr[pcfg->name]->states[pcfg->state]->param = pcfg->param;
-+ switch(pcfg->mode)
-+ {
-+ case 1:
-+ modArr[pcfg->name]->states[pcfg->state]->handler = board_led_link_down;
-+ break;
-+ case 2:
-+ case 3:
-+ case 5:
-+ if( pcfg->mode == 2 )
-+ modArr[pcfg->name]->states[pcfg->state]->handler = board_led_activity_on;
-+ else if( pcfg->mode == 3)
-+ modArr[pcfg->name]->states[pcfg->state]->handler = board_led_activity_off;
-+ else
-+ modArr[pcfg->name]->states[pcfg->state]->handler = board_led_link_flash;
-+ break;
-+ case 4:
-+ modArr[pcfg->name]->states[pcfg->state]->handler = board_led_link_up;
-+ break;
-+ default:
-+ printk("<1>Exiting Configuration: Unknown LED Mode\n");
-+ free_memory();
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return -1;
-+ }
-+ pcfg++;
-+ }
-+ spin_unlock_irqrestore(&config_lock, flags);
-+ return 0;
-+}
-+
-+
-+int __init led_init(void)
-+{
-+
-+ /* Clear our memory */
-+ memset(modArr,0x00,sizeof(mod_entry_t *)*MAX_MOD_ID);
-+ memset(led_arr,0x00,sizeof(led_data_t *)*MAX_LED_ID);
-+
-+ /* Create spin lock for config data structure */
-+ config_lock=SPIN_LOCK_UNLOCKED;
-+
-+ /* Create directory */
-+ led_proc_dir = proc_mkdir("led", NULL);
-+ if( led_proc_dir == NULL )
-+ goto out;
-+
-+ /* Create adsl file */
-+ led_file = create_proc_entry("led", 0777, led_proc_dir);
-+ if( led_file == NULL)
-+ goto led_file;
-+ led_file->owner = THIS_MODULE;
-+ led_file->proc_fops = &led_fops;
-+
-+ memset( modArr , 0x00 , sizeof(mod_entry_t *) * MAX_MOD_ID);
-+ /* Reset the GPIO pins */
-+ board_gpio_init();
-+
-+ /* Register the UART controlled LEDS */
-+ uart_led_init();
-+ /* Create the usb proc file */
-+ avalanche_leds_init();
-+ return 0;
-+
-+ led_file:
-+ remove_proc_entry("led",led_proc_dir);
-+ out:
-+ return 0;
-+
-+}
-+
-+void led_exit()
-+{
-+ remove_proc_entry("led", led_proc_dir);
-+}
-+
-+module_init(led_init);
-+module_exit(led_exit);
-+
-+void register_led_drv( int device , led_reg_t *pInfo)
-+{
-+ unsigned int flags;
-+ struct timer_list *pTimer = NULL;
-+
-+ spin_lock_irqsave(&config_lock, flags);
-+
-+ led_arr[device].led = pInfo;
-+ if( led_arr[device].led->init != 0x00)
-+ led_arr[device].led->init(led_arr[device].led->param);
-+ if( led_arr[device].led->offfunc != 0x00)
-+ led_arr[device].led->offfunc(led_arr[device].led->param);
-+
-+ /* Create a timer for blinking */
-+ pTimer = kmalloc(sizeof(struct timer_list),GFP_KERNEL);
-+ init_timer( pTimer );
-+ pTimer->function = led_timer_func;
-+ pTimer->data = 0;
-+ led_arr[device].pTimer = pTimer;
-+ led_arr[device].timer_running = 0;
-+
-+ spin_unlock_irqrestore(&config_lock, flags);
-+
-+ return;
-+}
-+
-+void deregister_led_drv( int device)
-+{
-+ unsigned int flags;
-+
-+ spin_lock_irqsave(&config_lock, flags);
-+ led_arr[device].led = NULL;
-+
-+ if( led_arr[device].pTimer != NULL)
-+ {
-+ del_timer(led_arr[device].pTimer);
-+ kfree(led_arr[device].pTimer);
-+ }
-+ spin_unlock_irqrestore(&config_lock, flags);
-+
-+ return;
-+}
-+
-+EXPORT_SYMBOL_NOVERS(led_operation);
-+EXPORT_SYMBOL_NOVERS(register_led_drv);
-+EXPORT_SYMBOL_NOVERS(deregister_led_drv);
-+
-diff -urN linux.dev/drivers/char/avalanche_led/leds.c linux.dev2/drivers/char/avalanche_led/leds.c
---- linux.dev/drivers/char/avalanche_led/leds.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev2/drivers/char/avalanche_led/leds.c 2005-10-21 18:03:44.513777000 +0200
-@@ -0,0 +1,133 @@
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <asm/ar7/avalanche_regs.h>
-+#include <linux/spinlock.h>
-+#include <linux/timer.h>
-+#include <linux/sched.h>
-+#include <linux/module.h>
-+#include <linux/proc_fs.h>
-+#include <asm/uaccess.h>
-+#include <linux/fs.h>
-+
-+#include <asm/ar7/ledapp.h>
-+
-+#if defined(CONFIG_AR5D01) || defined(CONFIG_AR5W01) || defined(CONFIG_AR7)
-+
-+#define ETH_MASK 0x01
-+#define USB_MASK 0x02
-+
-+static struct proc_dir_entry *usb_file;
-+static ssize_t proc_read_usb_fops(struct file *filp,
-+ char *buf,size_t count , loff_t *offp);
-+struct file_operations usb_fops = {read: proc_read_usb_fops};
-+
-+typedef struct mod_states{
-+ int module;
-+ int activity;
-+ int linkup;
-+ int idle;
-+}mod_states_t;
-+
-+mod_states_t state_arr[] = {
-+ { MOD_ETH,DEF_ETH_ACTIVITY,DEF_ETH_LINK_UP,DEF_ETH_IDLE },
-+ { MOD_USB,DEF_USB_ACTIVITY,DEF_USB_LINK_UP,DEF_USB_IDLE },
-+ { MOD_LAN,DEF_LAN_ACTIVITY,DEF_LAN_LINK_UP,DEF_LAN_IDLE }
-+ };
-+
-+unsigned char device_links = 0; /* Bitmask with the devices that are up */
-+
-+
-+void avalanche_led_activity_pulse(unsigned long device)
-+{
-+ /* If device link is not up return */
-+ if( !(device_links & (unsigned char)(1 << device)))
-+ return;
-+#ifdef MULTIPLEX_LED
-+ led_operation( state_arr[2].module, state_arr[2].activity);
-+#else
-+ led_operation( state_arr[device].module, state_arr[device].activity);
-+#endif
-+}
-+
-+void avalanche_led_link_up( unsigned long device )
-+{
-+
-+ /* If already UP ignore */
-+ if( device_links & (unsigned char)(1 << device))
-+ return;
-+ /* Turn on the bit for the device */
-+ device_links |= (unsigned char)(1 << device);
-+#ifdef MULTIPLEX_LED
-+ led_operation( state_arr[2].module, state_arr[2].linkup);
-+#else
-+ led_operation( state_arr[device].module, state_arr[device].linkup);
-+#endif
-+}
-+
-+void avalanche_led_link_down ( unsigned long device )
-+{
-+
-+ /* If already DOWN ignore */
-+ if( !(device_links & (unsigned char)(1 << device)))
-+ return;
-+
-+ /* Turn off the bit for the device */
-+ device_links &= ~(unsigned char)(1 << device);
-+#ifdef MULTIPLEX_LED
-+ /* If no links, then shut the LED off */
-+ if(!device_links)
-+ led_operation( state_arr[2].module, state_arr[2].idle);
-+#else
-+ led_operation( state_arr[device].module, state_arr[device].idle);
-+#endif
-+}
-+
-+static ssize_t proc_read_usb_fops(struct file *filp,
-+ char *buf,size_t count , loff_t *offp)
-+{
-+ char * pdata = NULL;
-+ char line[3];
-+ if( *offp != 0 )
-+ return 0;
-+ pdata = buf;
-+ if( device_links & USB_MASK)
-+ sprintf(line,"%s\n","1");
-+ else
-+ sprintf(line,"%s\n","0");
-+ copy_to_user(pdata,line,2);
-+ *offp = 2;
-+ return 2;
-+}
-+
-+
-+void avalanche_leds_init(void)
-+{
-+ /* Create usb link proc file */
-+ usb_file = create_proc_entry("avalanche/usb_link", 0444, NULL);
-+ if( usb_file == NULL)
-+ return;
-+ usb_file->owner = THIS_MODULE;
-+ usb_file->proc_fops = &usb_fops;
-+ return;
-+}
-+
-+EXPORT_SYMBOL(avalanche_led_activity_pulse);
-+EXPORT_SYMBOL(avalanche_led_link_up);
-+EXPORT_SYMBOL(avalanche_led_link_down);
-+
-+#else
-+/* We make a dummy init routine for the platforms that do not support this led
-+ API
-+*/
-+
-+void avalanche_leds_init(void)
-+{
-+}
-+
-+#endif
-+
-+
-+
-+
-+
-diff -urN linux.dev/drivers/char/avalanche_led/uartled.c linux.dev2/drivers/char/avalanche_led/uartled.c
---- linux.dev/drivers/char/avalanche_led/uartled.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev2/drivers/char/avalanche_led/uartled.c 2005-10-21 18:03:44.529778000 +0200
-@@ -0,0 +1,55 @@
-+#include <linux/kernel.h>
-+#include <asm/uaccess.h>
-+#include <linux/spinlock.h>
-+#include <asm/ar7/avalanche_regs.h>
-+#include <asm/ar7/ledapp.h>
-+
-+#define UART_LED_REG (*(volatile unsigned int *)(UARTA_BASE + 0x10))
-+
-+static spinlock_t device_lock;
-+led_reg_t temp1[2];
-+
-+static void uart_led_on(unsigned long param)
-+{
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&device_lock,flags);
-+ UART_LED_REG &= 0xFFFD;
-+ spin_unlock_irqrestore(&device_lock, flags);
-+}
-+
-+static void uart_led_off ( unsigned long param )
-+{
-+ unsigned int flags = 0x00;
-+ spin_lock_irqsave(&device_lock, flags);
-+ UART_LED_REG |= 0x02;
-+ spin_unlock_irqrestore(&device_lock, flags);
-+}
-+
-+void uart_led_init(void)
-+{
-+
-+#if defined(CONFIG_AR5D01)
-+ /* Register led 6 UART Pin 1 */
-+ temp1[0].param = 0;
-+ temp1[0].init = NULL;
-+ temp1[0].onfunc = uart_led_on;
-+ temp1[0].offfunc = uart_led_off;
-+ register_led_drv( 6 , &temp1[0]);
-+#endif
-+
-+#if defined(CONFIG_AR5W01)
-+ /* Register led 8 UART Pin 1 */
-+ temp1[0].param = 0;
-+ temp1[0].init = NULL;
-+ temp1[0].onfunc = uart_led_on;
-+ temp1[0].offfunc = uart_led_off;
-+ register_led_drv( 8 , &temp1[0]);
-+#endif
-+
-+ /* Initialize the link mask */
-+ device_lock = SPIN_LOCK_UNLOCKED;
-+
-+ return;
-+}
-+
-diff -urN linux.dev/include/asm-mips/ar7/led_config.h linux.dev2/include/asm-mips/ar7/led_config.h
---- linux.dev/include/asm-mips/ar7/led_config.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev2/include/asm-mips/ar7/led_config.h 2005-10-21 17:02:25.568327000 +0200
-@@ -0,0 +1,55 @@
-+/******************************************************************************
-+ * FILE PURPOSE: - LED config Header
-+ ******************************************************************************
-+ * FILE NAME: led_config.h
-+ *
-+ * DESCRIPTION: Header file for LED configuration parameters
-+ * and data structures
-+ *
-+ * REVISION HISTORY:
-+ * 11 Oct 03 - PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+
-+#ifndef __LED_CONFIG__
-+#define __LED_CONFIG__
-+
-+/* LED config parameters */
-+#define MAX_GPIO_PIN_NUM 64
-+#define MAX_GPIOS_PER_STATE 5
-+#define MAX_MODULE_ENTRIES 25
-+#define MAX_MODULE_INSTANCES 4
-+#define MAX_STATE_ENTRIES 25
-+#define MAX_LED_ENTRIES 25
-+
-+
-+/* LED modes */
-+#define LED_OFF 0
-+#define LED_ON 1
-+#define LED_ONESHOT_OFF 2
-+#define LED_ONESHOT_ON 3
-+#define LED_FLASH 4
-+#define LED_BLINK_CODE0 5 /*--- param1: on time, param2: blink nr , (param2 > 100 blink off) ---*/
-+#define LED_BLINK_CODE1 6
-+#define LED_BLINK_CODE2 7
-+
-+#define NUM_LED_MODES 8
-+
-+
-+
-+/* Data structure for LED configuration */
-+typedef struct led_config{
-+ unsigned char name[80];
-+ unsigned int instance;
-+ unsigned int state;
-+ unsigned int gpio[MAX_GPIOS_PER_STATE];
-+ unsigned int mode[MAX_GPIOS_PER_STATE];
-+ unsigned int gpio_num;
-+ unsigned int param1;
-+ unsigned int param2;
-+}LED_CONFIG_T;
-+
-+
-+#endif /* __LED_CONFIG__ */
-diff -urN linux.dev/include/asm-mips/ar7/led_hal.h linux.dev2/include/asm-mips/ar7/led_hal.h
---- linux.dev/include/asm-mips/ar7/led_hal.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev2/include/asm-mips/ar7/led_hal.h 2005-10-21 17:02:25.568327000 +0200
-@@ -0,0 +1,30 @@
-+/******************************************************************************
-+ * FILE PURPOSE: - LED HAL module Header
-+ ******************************************************************************
-+ * FILE NAME: led_hal.h
-+ *
-+ * DESCRIPTION: LED HAL API's.
-+ *
-+ * REVISION HISTORY:
-+ * 11 Oct 03 - PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+#ifndef __LED_HAL__
-+#define __LED_HAL__
-+
-+/* Interface prototypes */
-+#include "led_config.h"
-+
-+int avalanche_led_hal_init (int *gpio_off_value, int num_gpio_pins);
-+int avalanche_led_config_set (LED_CONFIG_T * led_cfg);
-+int avalanche_led_config_get (LED_CONFIG_T *led_cfg,int module_id,int instance, int state);
-+void *avalanche_led_register (const char *module_name, int instance_num);
-+void avalanche_led_action (void *handle, int state_id);
-+void avalanche_led_late_actions(void);
-+int avalanche_led_unregister (void *handle);
-+void avalanche_led_free_all(void);
-+void avalanche_led_hal_exit (void);
-+
-+#endif /*__LED_HAL__ */
-diff -urN linux.dev/include/asm-mips/ar7/ledapp.h linux.dev2/include/asm-mips/ar7/ledapp.h
---- linux.dev/include/asm-mips/ar7/ledapp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev2/include/asm-mips/ar7/ledapp.h 2005-10-21 18:03:44.573780750 +0200
-@@ -0,0 +1,59 @@
-+#ifndef __LED_APP__
-+#define __LED_APP__
-+
-+#define CONF_FILE "/etc/led.conf"
-+#define LED_PROC_FILE "/proc/led_mod/led"
-+
-+#define CONFIG_LED_MODULE
-+
-+#define MAX_MOD_ID 25
-+#define MAX_STATE_ID 25
-+#define MAX_LED_ID 25
-+
-+#define MOD_ADSL 1
-+#define DEF_ADSL_IDLE 1
-+#define DEF_ADSL_TRAINING 2
-+#define DEF_ADSL_SYNC 3
-+#define DEF_ADSL_ACTIVITY 4
-+
-+#define MOD_WAN 2
-+#define DEF_WAN_IDLE 1
-+#define DEF_WAN_NEGOTIATE 2
-+#define DEF_WAN_SESSION 3
-+
-+#define MOD_LAN 3
-+#define DEF_LAN_IDLE 1
-+#define DEF_LAN_LINK_UP 2
-+#define DEF_LAN_ACTIVITY 3
-+
-+#define MOD_WLAN 4
-+#define DEF_WLAN_IDLE 1
-+#define DEF_WLAN_LINK_UP 2
-+#define DEF_WLAN_ACTIVITY 3
-+
-+#define MOD_USB 5
-+#define DEF_USB_IDLE 1
-+#define DEF_USB_LINK_UP 2
-+#define DEF_USB_ACTIVITY 3
-+
-+#define MOD_ETH 6
-+#define DEF_ETH_IDLE 1
-+#define DEF_ETH_LINK_UP 2
-+#define DEF_ETH_ACTIVITY 3
-+
-+typedef struct config_elem{
-+ unsigned char name;
-+ unsigned char state;
-+ unsigned char mode;
-+ unsigned char led;
-+ int param;
-+}config_elem_t;
-+
-+typedef struct led_reg{
-+ unsigned int param;
-+ void (*init)(unsigned long param);
-+ void (*onfunc)(unsigned long param);
-+ void (*offfunc)(unsigned long param);
-+}led_reg_t;
-+
-+#endif
diff --git a/openwrt/target/linux/ar7-2.4/patches/003-net_driver_cpmac.patch b/openwrt/target/linux/ar7-2.4/patches/003-net_driver_cpmac.patch
deleted file mode 100644
index 42b64584da..0000000000
--- a/openwrt/target/linux/ar7-2.4/patches/003-net_driver_cpmac.patch
+++ /dev/null
@@ -1,13341 +0,0 @@
-diff -urN linux.old/drivers/net/avalanche_cpmac/cpcommon_cpmac.c linux.dev/drivers/net/avalanche_cpmac/cpcommon_cpmac.c
---- linux.old/drivers/net/avalanche_cpmac/cpcommon_cpmac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/cpcommon_cpmac.c 2005-07-12 02:48:41.996601000 +0200
-@@ -0,0 +1,728 @@
-+#ifndef _INC_CPCOMMON_C
-+#define _INC_CPCOMMON_C
-+
-+#ifdef _CPHAL_CPMAC
-+#include "cpremap_cpmac.c"
-+#endif
-+
-+#ifdef _CPHAL_AAL5
-+#include "cpremap_cpaal5.c"
-+#endif
-+
-+#ifdef _CPHAL_CPSAR
-+#include "cpremap_cpsar.c"
-+#endif
-+
-+#ifdef _CPHAL_AAL2
-+#include "cpremap_cpaal2.c"
-+#endif
-+
-+/**
-+@defgroup Common_Config_Params Common Configuration Parameters
-+
-+This section documents the configuration parameters that are valid across
-+all CPHAL devices.
-+@{
-+*/
-+/** This is the debug level. The field is bit defined, such that the user
-+should set to 1 all the bits corresponding to desired debug outputs. The following
-+are the meanings for each debug bit:
-+- bit0 (LSB): CPHAL Function Trace
-+- b1 : OS Function call trace
-+- b2 : Critical section entry/exit
-+- b3 : Memory allocation/destruction
-+- b4 : Detailed information in Rx path
-+- b5 : Detailed information in Tx path
-+- b6 : Extended error information
-+- b7 : General info
-+*/
-+static const char pszDebug[] = "debug";
-+/** CPU Frequency. */
-+/*static const char pszCpuFreq[] = "CpuFreq";*/ /*MJH-030403*/
-+/** Base address for the module. */
-+static const char pszBase[] = "base";
-+/** Reset bit for the module. */
-+static const char pszResetBit[] = "reset_bit";
-+/** Reset base address for the module. */
-+static const char pszResetBase[] = "ResetBase";
-+/** Interrupt line for the module. */
-+static const char pszIntLine[] = "int_line";
-+/** VLYNQ offset for the module. Disregard if not using VLYNQ. */
-+static const char pszOffset[] = "offset";
-+/** The OS may "Get" this parameter, which is a pointer
-+ to a character string that indicates the version of CPHAL. */
-+static const char pszVer[] = "Version";
-+/*@}*/
-+
-+/**
-+@defgroup Common_Control_Params Common Keys for [os]Control()
-+
-+This section documents the keys used with the OS @c Control() interface that
-+are required by CPHAL devices.
-+
-+@{
-+*/
-+/** Used to wait for an integer number of clock ticks, given as an integer
-+ pointer in the @p Value parameter. No actions are defined. */
-+static const char pszSleep[] = "Sleep";
-+/** Requests the OS to flush it's IO buffers. No actions are defined. */
-+static const char pszSioFlush[] = "SioFlush";
-+/*@}*/
-+
-+static const char pszStateChange[] = "StateChange";
-+static const char pszStatus[] = "Status";
-+
-+static const char pszGET[] = "Get";
-+static const char pszSET[] = "Set";
-+static const char pszCLEAR[] = "Clear";
-+static const char pszNULL[] = "";
-+static const char pszLocator[] = "Locator";
-+static const char pszOff[] = "Off";
-+static const char pszOn[] = "On";
-+static const char hcMaxFrags[] = "MaxFrags";
-+
-+#ifdef _CPHAL_CPMAC
-+
-+/* New method for string constants */
-+const char hcClear[] = "Clear";
-+const char hcGet[] = "Get";
-+const char hcSet[] = "Set";
-+
-+const char hcTick[] = "Tick";
-+
-+static const CONTROL_KEY KeyCommon[] =
-+ {
-+ {"" , enCommonStart},
-+ {pszStatus , enStatus},
-+ {pszOff , enOff},
-+ {pszOn , enOn},
-+ {pszDebug , enDebug},
-+ {hcCpuFrequency , enCpuFreq}, /*MJH~030403*/
-+ {"" , enCommonEnd}
-+ };
-+#endif
-+
-+/**
-+@defgroup Common_Statistics Statistics
-+
-+A broad array of module statistics is available. Statistics values are accessed
-+through the @c Control() interface of the CPHAL. There are 5 different levels
-+of statistics, each of which correspond to a unique set of data. Furthermore,
-+certain statistics data is indexed by using a channel number and Tx queue number.
-+The following is a brief description of each statistics level, along with the
-+indexes used for the level:
-+
-+- Level 0: Hardware Statistics (index with channel)
-+- Level 1: CPHAL Software Statistics (channel, queue)
-+- Level 2: CPHAL Flags (channel, queue)
-+- Level 3: CPHAL Channel Configuration (channel)
-+- Level 4: CPHAL General Configuration (no index)
-+
-+The caller requests statistics information by providing a Key string to the
-+@c Control() API in the following format: "Stats;[Level #];[Ch #];[Queue #]".
-+The only valid Action parameter for statistics usage is "Get".
-+
-+Code Examples:
-+@code
-+unsigned int *StatsData;
-+
-+# Get Level 0 stats for Channel 1
-+HalFunc->Control(OsDev->HalDev, "Stats;0;1", "Get", &StatsData);
-+
-+# Get Level 2 stats for Channel 0, Queue 0
-+HalFunc->Control(OsDev->HalDev, "Stats;2;0;0", "Get", &StatsData);
-+
-+# Get Level 4 stats
-+HalFunc->Control(OsDev->HalDev, "Stats;4", "Get", &StatsData);
-+@endcode
-+
-+The information returned in the Value parameter of @c Control() is an
-+array of pointers to strings. The pointers are arranged in pairs.
-+The first pointer is a pointer to a name string for a particular statistic.
-+The next pointer is a pointer to a string containing the representation of
-+the integer statistic value corresponding to the first pointer. This is followed
-+by another pair of pointers, and so on, until a NULL pointer is encountered. The
-+following is example code for processing the statistics data. Note that the OS
-+is responsible for freeing the memory passed back through the Value parameter of
-+@c Control().
-+
-+@code
-+unsigned int *StatsData;
-+
-+# Get Level 0 stats for Channel 1
-+HalFunc->Control(OsDev->HalDev, "Stats;0;1", "Get", &StatsData);
-+
-+# output Statistics data
-+PrintStats(StatsData);
-+
-+# the upper layer is responsible for freeing stats info
-+free(&StatsPtr);
-+
-+...
-+
-+void PrintStats(unsigned int *StatsPtr)
-+ {
-+ while(*StatsPtr)
-+ {
-+ printf("%20s:", (char *)*StatsPtr);
-+ StatsPtr++;
-+ printf("%11s\n", (char *)*StatsPtr);
-+ StatsPtr++;
-+ }
-+ MySioFlush();
-+ }
-+@endcode
-+
-+Within each statistics level, there are several statistics defined. The statistics that
-+are common to every CPPI module are listed below. In addition, each module may define
-+extra statistics in each level, which will be documented within the module-specific
-+documentation appendices.
-+
-+- Level 0 Statistics
-+ - All level 0 statistics are module-specific.
-+- Level 1 Statistics (CPHAL Software Statistics)
-+ - DmaLenErrors: Incremented when the port DMA's more data than expected (per channel). (AAL5 Only)
-+ - TxMisQCnt: Incremented when host queues a packet for transmission as the port finishes
-+transmitting the previous last packet in the queue (per channel and queue).
-+ - RxMisQCnt: Incremented when host queues adds buffers to a queue as the port finished the
-+reception of the previous last packet in the queue (per channel).
-+ - TxEOQCnt: Number of times the port has reached the end of the transmit queue (per channel and queue).
-+ - RxEOQCnt: Number of times the port has reached the end of the receive queue (per channel).
-+ - RxPacketsServiced: Number of received packets (per channel).
-+ - TxPacketsServiced: Number of transmitted packets (per channel and queue).
-+ - RxMaxServiced: Maximum number of packets that the CPHAL receive interrupt has serviced at a time (per channel).
-+ - TxMaxServiced: Maximum number of packets that the CPHAL transmit interrupt has serviced at a time (per channel and queue).
-+ - RxTotal: Total number of received packets, all channels.
-+ - TxTotal: Total number of transmitted packets, all channels and queues.
-+- Level 2 Statistics (CPHAL Flags)
-+ - RcbPool: Pointer to receive descriptor pool (per channel).
-+ - RxActQueueCount: Number of buffers currently available for receive (per channel).
-+ - RxActQueueHead: Pointer to first buffer in receive queue (per channel).
-+ - RxActQueueTail: Pointer to last buffer in receive queue (per channel).
-+ - RxActive: 0 if inactive (no buffers available), or 1 if active (buffers available).
-+ - RcbStart: Pointer to block of receive descriptors.
-+ - RxTeardownPending: 1 if Rx teardown is pending but incomplete, 0 otherwise.
-+ - TcbPool: Pointer to transmit descriptor pool (per channel and queue).
-+ - TxActQueueCount: Number of buffers currently queued to be transmitted (per channel and queue).
-+ - TxActQueueHead: Pointer to first buffer in transmit queue (per channel and queue).
-+ - TxActQueueTail: Pointer to last buffer in transmit queue (per channel and queue).
-+ - TxActive: 0 if inactive (no buffers to send), or 1 if active (buffers queued to send).
-+ - TcbStart: Pointer to block of transmit descriptors.
-+ - TxTeardownPending: 1 if Tx teardown is pending but incomplete, 0 otherwise.
-+- Level 3 Statistics (CPHAL Channel Configuration)
-+ - RxBufSize: Rx buffer size.
-+ - RxBufferOffset: Rx buffer offset.
-+ - RxNumBuffers: Number of Rx buffers.
-+ - RxServiceMax: Maximum number of receive packets to service at a time.
-+ - TxNumBuffers: Number of Tx buffer descriptors.
-+ - TxNumQueues: Number of Tx queues to use.
-+ - TxServiceMax: Maximum number of transmit packets to service at a time.
-+- Level 4 Statistics (CPHAL General Configuration)
-+ - Base Address: Base address of the module.
-+ - Offset (VLYNQ): VLYNQ relative module offset.
-+ - Interrupt Line: Interrupt number.
-+ - Debug: Debug flag, 1 to enable debug.
-+ - Inst: Instance number.
-+*/
-+
-+/*
-+ Data Type 0 = int display
-+ Data Type 1 = hex display
-+ Data Type 2 = channel structure, int display
-+ Data Type 3 = queue index and int display
-+ Data Type 4 = queue index and hex display
-+*/
-+#if (defined(_CPHAL_AAL5) || defined(_CPHAL_CPMAC)) /* +GSG 030307 */
-+static STATS_TABLE StatsTable0[] =
-+ {
-+#ifdef _CPHAL_AAL5
-+ /* Name , Data Ptr, Data Type */
-+ {"Crc Errors", 0, 0},
-+ {"Len Errors", 0, 0},
-+ {"Abort Errors", 0, 0},
-+ {"Starv Errors", 0, 0}
-+#endif
-+#ifdef _CPHAL_CPMAC
-+ {"Rx Good Frames", 0, 0}
-+#endif
-+ };
-+
-+static STATS_TABLE StatsTable1[] =
-+ {
-+ /* Name , Data Ptr, Data Type */
-+ {"DmaLenErrors", 0, 0},
-+ {"TxMisQCnt", 0, 3},
-+ {"RxMisQCnt", 0, 0},
-+ {"TxEOQCnt", 0, 3},
-+ {"RxEOQCnt", 0, 0},
-+ {"RxPacketsServiced", 0, 0},
-+ {"TxPacketsServiced", 0, 3},
-+ {"RxMaxServiced", 0, 0},
-+ {"TxMaxServiced", 0, 3},
-+ {"RxTotal", 0, 0},
-+ {"TxTotal", 0, 0},
-+ };
-+
-+static STATS_TABLE StatsTable2[] =
-+ {
-+ /* Name , Data Ptr, Data Type */
-+ {"RcbPool", 0, 1},
-+ {"RxActQueueCount", 0, 0},
-+ {"RxActQueueHead", 0, 1},
-+ {"RxActQueueTail", 0, 1},
-+ {"RxActive", 0, 0},
-+ {"RcbStart", 0, 1},
-+ {"RxTeardownPending", 0, 0},
-+ {"TcbPool", 0, 4},
-+ {"TxActQueueCount", 0, 3},
-+ {"TxActQueueHead", 0, 4},
-+ {"TxActQueueTail", 0, 4},
-+ {"TxActive", 0, 3},
-+ {"TcbStart", 0, 4},
-+ {"TxTeardownPending", 0, 0}
-+ };
-+
-+static STATS_TABLE StatsTable3[] =
-+ {
-+ /* Name , Data Ptr, Data Type */
-+ {"RxBufSize", 0, 2},
-+ {"RxBufferOffset", 0, 2},
-+ {"RxNumBuffers", 0, 2},
-+ {"RxServiceMax", 0, 2},
-+ {"TxNumBuffers", 0, 2},
-+ {"TxNumQueues", 0, 2},
-+ {"TxServiceMax", 0, 2},
-+#ifdef _CPHAL_AAL5
-+ {"CpcsUU", 0, 2},
-+ {"Gfc", 0, 2},
-+ {"Clp", 0, 2},
-+ {"Pti", 0, 2},
-+ {"DaMask", 0, 2},
-+ {"Priority", 0, 2},
-+ {"PktType", 0, 2},
-+ {"Vci", 0, 2},
-+ {"Vpi", 0, 2},
-+ {"CellRate", 0, 2},
-+ {"QosType", 0, 2},
-+ {"Mbs", 0, 2},
-+ {"Pcr", 0, 2}
-+#endif
-+ };
-+
-+static STATS_TABLE StatsTable4[] =
-+ {
-+ {"Base Address", 0, 1},
-+ {"Offset (VLYNQ)", 0, 0},
-+ {"Interrupt Line", 0, 0},
-+ {"Debug", 0, 0},
-+ {"Instance", 0, 0},
-+#ifdef _CPHAL_AAL5
-+ {"UniNni", 0, 0}
-+#endif
-+ };
-+
-+static STATS_DB StatsDb[] =
-+ {
-+ {(sizeof(StatsTable0)/sizeof(STATS_TABLE)), StatsTable0},
-+ {(sizeof(StatsTable1)/sizeof(STATS_TABLE)), StatsTable1},
-+ {(sizeof(StatsTable2)/sizeof(STATS_TABLE)), StatsTable2},
-+ {(sizeof(StatsTable3)/sizeof(STATS_TABLE)), StatsTable3},
-+ {(sizeof(StatsTable4)/sizeof(STATS_TABLE)), StatsTable4}
-+ };
-+#endif /* +GSG 030307 */
-+
-+#ifdef _CPHAL_CPMAC /* +RC 3.02 */
-+static void resetWait(HAL_DEVICE *HalDev)
-+ { /*+RC3.02*/
-+ const int TickReset=64;
-+ osfuncSleep((int*)&TickReset);
-+ } /*+RC3.02*/
-+#endif /* +RC 3.02 */
-+
-+/* I only define the reset base function for the modules
-+ that can perform a reset. The AAL5 and AAL2 modules
-+ do not perform a reset, that is done by the shared module
-+ CPSAR */
-+#if defined(_CPHAL_CPSAR) || defined(_CPHAL_CPMAC) || defined(_CPHAL_VDMAVT)
-+/*
-+ * Determines the reset register address to be used for a particular device.
-+ * It will search the current device entry for Locator information. If the
-+ * device is a root device, there will be no Locator information, and the
-+ * function will find and return the root reset register. If a Locator value
-+ * is found, the function will search each VLYNQ device entry in the system
-+ * looking for a matching Locator. Once it finds a VLYNQ device entry with
-+ * a matching Locator, it will extract the "ResetBase" parameter from that
-+ * VLYNQ device entry (thus every VLYNQ entry must have the ResetBase parameter).
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param ResetBase Pointer to integer address of reset register.
-+ *
-+ * @return 0 OK, Non-zero not OK
-+ */
-+static int ResetBaseGet(HAL_DEVICE *HalDev, bit32u *ResetBase)
-+ {
-+ char *DeviceInfo = HalDev->DeviceInfo;
-+ char *MyLocator, *NextLocator;
-+ int Inst=1;
-+ bit32u error_code;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpcommon]ResetBaseGet(HalDev:%08x, ResetBase:%08x)\n", (bit32u)HalDev, ResetBase);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ error_code = HalDev->OsFunc->DeviceFindParmValue(DeviceInfo, "Locator", &MyLocator);
-+ if (error_code)
-+ {
-+ /* if no Locator value, device is on the root, so get the "reset" device */
-+ error_code = HalDev->OsFunc->DeviceFindInfo(0, "reset", &DeviceInfo);
-+ if (error_code)
-+ {
-+ return(EC_VAL_DEVICE_NOT_FOUND);
-+ }
-+
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, "base", ResetBase);
-+ if (error_code)
-+ {
-+ return(EC_VAL_BASE_ADDR_NOT_FOUND);
-+ }
-+
-+ *ResetBase = ((bit32u)PhysToVirtNoCache(*ResetBase));
-+
-+ /* found base address for root device, so we're done */
-+ return (EC_NO_ERRORS);
-+ }
-+ else
-+ {
-+ /* we have a Locator value, so the device is remote */
-+
-+ /* Find a vlynq device with a matching locator value */
-+ while ((HalDev->OsFunc->DeviceFindInfo(Inst, "vlynq", &DeviceInfo)) == EC_NO_ERRORS)
-+ {
-+ error_code = HalDev->OsFunc->DeviceFindParmValue(DeviceInfo, "Locator", &NextLocator);
-+ if (error_code)
-+ {
-+ /* no Locator value for this VLYNQ, so move on */
-+ continue;
-+ }
-+ if (HalDev->OsFunc->Strcmpi(MyLocator, NextLocator)==0)
-+ {
-+ /* we have found a VLYNQ with a matching Locator, so extract the ResetBase */
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, "ResetBase", ResetBase);
-+ if (error_code)
-+ {
-+ return(EC_VAL_BASE_ADDR_NOT_FOUND);
-+ }
-+ *ResetBase = ((bit32u)PhysToVirtNoCache(*ResetBase));
-+
-+ /* found base address for root device, so we're done */
-+ return (EC_NO_ERRORS);
-+ }
-+ Inst++;
-+ } /* while */
-+ } /* else */
-+
-+ return (EC_NO_ERRORS);
-+ }
-+#endif
-+
-+#ifndef _CPHAL_AAL2 /* + RC 3.02 */
-+static bit32u ConfigGetCommon(HAL_DEVICE *HalDev)
-+ {
-+ bit32u ParmValue;
-+ bit32 error_code;
-+ char *DeviceInfo = HalDev->DeviceInfo;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpcommon]ConfigGetCommon(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszBase, &ParmValue);
-+ if (error_code)
-+ {
-+ return(EC_FUNC_HAL_INIT|EC_VAL_BASE_ADDR_NOT_FOUND);
-+ }
-+ HalDev->dev_base = ((bit32u)PhysToVirtNoCache(ParmValue));
-+
-+#ifndef _CPHAL_AAL5
-+#ifndef _CPHAL_AAL2
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszResetBit, &ParmValue);
-+ if(error_code)
-+ {
-+ return(EC_FUNC_HAL_INIT|EC_VAL_RESET_BIT_NOT_FOUND);
-+ }
-+ HalDev->ResetBit = ParmValue;
-+
-+ /* Get reset base address */
-+ error_code = ResetBaseGet(HalDev, &ParmValue);
-+ if (error_code)
-+ return(EC_FUNC_HAL_INIT|EC_VAL_RESET_BASE_NOT_FOUND);
-+ HalDev->ResetBase = ParmValue;
-+#endif
-+#endif
-+
-+#ifndef _CPHAL_CPSAR
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszIntLine,&ParmValue);
-+ if (error_code)
-+ {
-+ return(EC_FUNC_HAL_INIT|EC_VAL_INTERRUPT_NOT_FOUND);
-+ }
-+ HalDev->interrupt = ParmValue;
-+#endif
-+
-+ /* only look for the offset if there is a Locator field, which indicates that
-+ the module is a VLYNQ module */
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszLocator,&ParmValue);
-+ if (!error_code)
-+ {
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszOffset,&ParmValue);
-+ if (error_code)
-+ {
-+ return(EC_FUNC_HAL_INIT|EC_VAL_OFFSET_NOT_FOUND);
-+ }
-+ HalDev->offset = ParmValue;
-+ }
-+ else
-+ HalDev->offset = 0;
-+
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszDebug, &ParmValue);
-+ if (!error_code) HalDev->debug = ParmValue;
-+
-+ return (EC_NO_ERRORS);
-+ }
-+#endif /* +RC 3.02 */
-+
-+#ifdef _CPHAL_CPMAC /* +RC 3.02 */
-+static void StatsInit(HAL_DEVICE *HalDev) /* +() RC3.02 */
-+ {
-+ /* even though these statistics may be for multiple channels and
-+ queues, i need only configure the pointer to the beginning
-+ of the array, and I can index from there if necessary */
-+
-+#ifdef _CPHAL_AAL5
-+ StatsTable0[0].StatPtr = &HalDev->Stats.CrcErrors[0];
-+ StatsTable0[1].StatPtr = &HalDev->Stats.LenErrors[0];
-+ StatsTable0[2].StatPtr = &HalDev->Stats.AbortErrors[0];
-+ StatsTable0[3].StatPtr = &HalDev->Stats.StarvErrors[0];
-+
-+ StatsTable1[0].StatPtr = &HalDev->Stats.DmaLenErrors[0];
-+ StatsTable1[1].StatPtr = &HalDev->Stats.TxMisQCnt[0][0];
-+ StatsTable1[2].StatPtr = &HalDev->Stats.RxMisQCnt[0];
-+ StatsTable1[3].StatPtr = &HalDev->Stats.TxEOQCnt[0][0];
-+ StatsTable1[4].StatPtr = &HalDev->Stats.RxEOQCnt[0];
-+ StatsTable1[5].StatPtr = &HalDev->Stats.RxPacketsServiced[0];
-+ StatsTable1[6].StatPtr = &HalDev->Stats.TxPacketsServiced[0][0];
-+ StatsTable1[7].StatPtr = &HalDev->Stats.RxMaxServiced;
-+ StatsTable1[8].StatPtr = &HalDev->Stats.TxMaxServiced[0][0];
-+ StatsTable1[9].StatPtr = &HalDev->Stats.RxTotal;
-+ StatsTable1[10].StatPtr = &HalDev->Stats.TxTotal;
-+#endif
-+
-+#if (defined(_CPHAL_AAL5) || defined(_CPHAL_CPMAC))
-+ StatsTable2[0].StatPtr = (bit32u *)&HalDev->RcbPool[0];
-+ StatsTable2[1].StatPtr = &HalDev->RxActQueueCount[0];
-+ StatsTable2[2].StatPtr = (bit32u *)&HalDev->RxActQueueHead[0];
-+ StatsTable2[3].StatPtr = (bit32u *)&HalDev->RxActQueueTail[0];
-+ StatsTable2[4].StatPtr = &HalDev->RxActive[0];
-+ StatsTable2[5].StatPtr = (bit32u *)&HalDev->RcbStart[0];
-+ StatsTable2[6].StatPtr = &HalDev->RxTeardownPending[0];
-+ StatsTable2[7].StatPtr = (bit32u *)&HalDev->TcbPool[0][0];
-+ StatsTable2[8].StatPtr = &HalDev->TxActQueueCount[0][0];
-+ StatsTable2[9].StatPtr = (bit32u *)&HalDev->TxActQueueHead[0][0];
-+ StatsTable2[10].StatPtr = (bit32u *)&HalDev->TxActQueueTail[0][0];
-+ StatsTable2[11].StatPtr = &HalDev->TxActive[0][0];
-+ StatsTable2[12].StatPtr = (bit32u *)&HalDev->TcbStart[0][0];
-+ StatsTable2[13].StatPtr = &HalDev->TxTeardownPending[0];
-+
-+ StatsTable3[0].StatPtr = &HalDev->ChData[0].RxBufSize;
-+ StatsTable3[1].StatPtr = &HalDev->ChData[0].RxBufferOffset;
-+ StatsTable3[2].StatPtr = &HalDev->ChData[0].RxNumBuffers;
-+ StatsTable3[3].StatPtr = &HalDev->ChData[0].RxServiceMax;
-+ StatsTable3[4].StatPtr = &HalDev->ChData[0].TxNumBuffers;
-+ StatsTable3[5].StatPtr = &HalDev->ChData[0].TxNumQueues;
-+ StatsTable3[6].StatPtr = &HalDev->ChData[0].TxServiceMax;
-+#ifdef _CPHAL_AAL5
-+ StatsTable3[7].StatPtr = &HalDev->ChData[0].CpcsUU;
-+ StatsTable3[8].StatPtr = &HalDev->ChData[0].Gfc;
-+ StatsTable3[9].StatPtr = &HalDev->ChData[0].Clp;
-+ StatsTable3[10].StatPtr = &HalDev->ChData[0].Pti;
-+ StatsTable3[11].StatPtr = &HalDev->ChData[0].DaMask;
-+ StatsTable3[12].StatPtr = &HalDev->ChData[0].Priority;
-+ StatsTable3[13].StatPtr = &HalDev->ChData[0].PktType;
-+ StatsTable3[14].StatPtr = &HalDev->ChData[0].Vci;
-+ StatsTable3[15].StatPtr = &HalDev->ChData[0].Vpi;
-+ StatsTable3[16].StatPtr = &HalDev->ChData[0].TxVc_CellRate;
-+ StatsTable3[17].StatPtr = &HalDev->ChData[0].TxVc_QosType;
-+ StatsTable3[18].StatPtr = &HalDev->ChData[0].TxVc_Mbs;
-+ StatsTable3[19].StatPtr = &HalDev->ChData[0].TxVc_Pcr;
-+#endif
-+#endif
-+
-+ StatsTable4[0].StatPtr = &HalDev->dev_base;
-+ StatsTable4[1].StatPtr = &HalDev->offset;
-+ StatsTable4[2].StatPtr = &HalDev->interrupt;
-+ StatsTable4[3].StatPtr = &HalDev->debug;
-+ StatsTable4[4].StatPtr = &HalDev->Inst;
-+ }
-+#endif /* +RC 3.02 */
-+
-+#ifndef _CPHAL_CPSAR /* +RC 3.02 */
-+#ifndef _CPHAL_AAL2 /* +RC 3.02 */
-+/*
-+ * Returns statistics information.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return 0
-+ */
-+static int StatsGet(HAL_DEVICE *HalDev, void **StatPtr, int Index, int Ch, int Queue)
-+ {
-+ int Size;
-+ bit32u *AddrPtr;
-+ char *DataPtr;
-+ STATS_TABLE *StatsTable;
-+ int i, NumberOfStats;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpcommon]StatsGet(HalDev:%08x, StatPtr:%08x)\n",
-+ (bit32u)HalDev, (bit32u)StatPtr);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ StatsTable = StatsDb[Index].StatTable;
-+ NumberOfStats = StatsDb[Index].NumberOfStats;
-+
-+ Size = sizeof(bit32u)*((NumberOfStats*2)+1);
-+ Size += (NumberOfStats*11);
-+ *StatPtr = (bit32u *)HalDev->OsFunc->Malloc(Size);
-+
-+ AddrPtr = (bit32u *) *StatPtr;
-+ DataPtr = (char *)AddrPtr;
-+ DataPtr += sizeof(bit32u)*((NumberOfStats*2)+1);
-+
-+ for (i=0; i<NumberOfStats; i++)
-+ {
-+ *AddrPtr++ = (bit32u)StatsTable[i].StatName;
-+ *AddrPtr++ = (bit32u)DataPtr;
-+ if (&StatsTable[i].StatPtr[Ch] != 0)
-+ {
-+ switch(StatsTable[i].DataType)
-+ {
-+ case 0:
-+ HalDev->OsFunc->Sprintf(DataPtr, "%d", (bit32u *)StatsTable[i].StatPtr[Ch]);
-+ break;
-+ case 1:
-+ HalDev->OsFunc->Sprintf(DataPtr, "0x%x", (bit32u *)StatsTable[i].StatPtr[Ch]);
-+ break;
-+ case 2:
-+ HalDev->OsFunc->Sprintf(DataPtr, "%d", *((bit32u *)StatsTable[i].StatPtr + (Ch * (sizeof(CHANNEL_INFO)/4))));
-+ break;
-+ case 3:
-+ HalDev->OsFunc->Sprintf(DataPtr, "%d", *((bit32u *)StatsTable[i].StatPtr + (Ch*MAX_QUEUE)+Queue));
-+ break;
-+ case 4:
-+ HalDev->OsFunc->Sprintf(DataPtr, "0x%x", *((bit32u *)StatsTable[i].StatPtr + (Ch*MAX_QUEUE)+Queue));
-+ break;
-+ default:
-+ /* invalid data type, due to CPHAL programming error */
-+ break;
-+ }
-+ }
-+ else
-+ {
-+ /* invalid statistics pointer, probably was not initialized */
-+ }
-+ DataPtr += HalDev->OsFunc->Strlen(DataPtr) + 1;
-+ }
-+
-+ *AddrPtr = (bit32u) 0;
-+
-+ return (EC_NO_ERRORS);
-+ }
-+#endif /* +RC 3.02 */
-+#endif /* +RC 3.02 */
-+
-+#ifdef _CPHAL_CPMAC
-+static void gpioFunctional(int base, int bit)
-+ { /*+RC3.02*/
-+ bit32u GpioEnr = base + 0xC;
-+ /* To make functional, set to zero */
-+ *(volatile bit32u *)(GpioEnr) &= ~(1 << bit); /*+RC3.02*/
-+ } /*+RC3.02*/
-+
-+
-+/*+RC3.02*/
-+/* Common function, Checks to see if GPIO should be in functional mode */
-+static void gpioCheck(HAL_DEVICE *HalDev, void *moduleDeviceInfo)
-+ { /*+RC3.02*/
-+ int rc;
-+ void *DeviceInfo;
-+ char *pszMuxBits;
-+ char pszMuxBit[20];
-+ char *pszTmp;
-+ char szMuxBit[20];
-+ char *ptr;
-+ int base;
-+ int reset_bit;
-+ int bit;
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+
-+ rc = OsFunc->DeviceFindParmValue(moduleDeviceInfo, "gpio_mux",&pszTmp);
-+ if(rc) return;
-+ /* gpio entry found, get GPIO register info and make functional */
-+
-+ /* temp copy until FinParmValue fixed */
-+ ptr = &szMuxBit[0];
-+ while ((*ptr++ = *pszTmp++));
-+
-+ pszMuxBits = &szMuxBit[0];
-+
-+ rc = OsFunc->DeviceFindInfo(0,"gpio",&DeviceInfo);
-+ if(rc) return;
-+
-+ rc = OsFunc->DeviceFindParmUint(DeviceInfo, "base",&base);
-+ if(rc) return;
-+
-+ rc = OsFunc->DeviceFindParmUint(DeviceInfo, "reset_bit",&reset_bit);
-+ if(rc) return;
-+
-+ /* If GPIO still in reset, then exit */
-+ if((VOLATILE32(HalDev->ResetBase) & (1 << reset_bit)) == 0)
-+ return;
-+ /* format for gpio_mux is gpio_mux = <int>;<int>;<int>...*/
-+ while (*pszMuxBits)
-+ {
-+ pszTmp = &pszMuxBit[0];
-+ if(*pszMuxBits == ';') pszMuxBits++;
-+ while ((*pszMuxBits != ';') && (*pszMuxBits != '\0'))
-+ {
-+ osfuncSioFlush();
-+ /*If value not a number, skip */
-+ if((*pszMuxBits < '0') || (*pszMuxBits > '9'))
-+ pszMuxBits++;
-+ else
-+ *pszTmp++ = *pszMuxBits++;
-+ }
-+ *pszTmp = '\0';
-+ bit = OsFunc->Strtoul(pszMuxBit, &pszTmp, 10);
-+ gpioFunctional(base, bit);
-+ resetWait(HalDev); /* not sure if this is needed */
-+ }
-+ } /*+RC3.02*/
-+#endif /* CPMAC */
-+
-+#ifdef _CPHAL_AAL5
-+const char hcSarFrequency[] = "SarFreq";
-+#endif
-+
-+#endif /* _INC */
-diff -urN linux.old/drivers/net/avalanche_cpmac/cpcommon_cpmac.h linux.dev/drivers/net/avalanche_cpmac/cpcommon_cpmac.h
---- linux.old/drivers/net/avalanche_cpmac/cpcommon_cpmac.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/cpcommon_cpmac.h 2005-07-12 02:48:41.996601000 +0200
-@@ -0,0 +1,79 @@
-+#ifndef _INC_CPCOMMON_H
-+#define _INC_CPCOMMON_H
-+
-+#define VOLATILE32(addr) (*(volatile bit32u *)(addr))
-+#ifndef dbgPrintf
-+#define dbgPrintf HalDev->OsFunc->Printf
-+#endif
-+
-+#define ChannelUpdate(Field) if(HalChn->Field != 0xFFFFFFFF) HalDev->ChData[Ch].Field = HalChn->Field
-+
-+#define DBG(level) (HalDev->debug & (1<<(level)))
-+/*
-+#define DBG0() DBG(0)
-+#define DBG1() DBG(1)
-+#define DBG2() DBG(2)
-+#define DBG3() DBG(3)
-+#define DBG4() DBG(4)
-+#define DBG5() DBG(5)
-+#define DBG6() DBG(6)
-+#define DBG7() DBG(7)
-+*/
-+
-+/*
-+ * List of defined actions for use with Control().
-+ */
-+typedef enum
-+ {
-+ enGET=0, /**< Get the value associated with a key */
-+ enSET, /**< Set the value associates with a key */
-+ enCLEAR, /**<Clear the value */
-+ enNULL /**< No data action, used to initiate a service or send a message */
-+ }ACTION;
-+
-+/*
-+ * Enumerated hardware states.
-+ */
-+typedef enum
-+ {
-+ enConnected=1, enDevFound, enInitialized, enOpened
-+ }DEVICE_STATE;
-+
-+typedef enum
-+ {
-+ enCommonStart=0,
-+ /* General */
-+ enOff, enOn, enDebug,
-+ /* Module General */
-+ enCpuFreq,
-+ enStatus,
-+ enCommonEnd
-+ }COMMON_KEY;
-+
-+typedef struct
-+ {
-+ const char *strKey;
-+ int enKey;
-+ }CONTROL_KEY;
-+
-+typedef struct
-+ {
-+ char *StatName;
-+ unsigned int *StatPtr;
-+ int DataType; /* 0: int, 1: hex int, 2:channel data */
-+ }STATS_TABLE;
-+
-+typedef struct
-+ {
-+ int NumberOfStats;
-+ STATS_TABLE *StatTable;
-+ }STATS_DB;
-+
-+#define osfuncSioFlush() HalDev->OsFunc->Control(HalDev->OsDev,"SioFlush",pszNULL,0)
-+#define osfuncSleep(Ticks) HalDev->OsFunc->Control(HalDev->OsDev,pszSleep,pszNULL,Ticks)
-+#define osfuncStateChange() HalDev->OsFunc->Control(HalDev->OsDev,pszStateChange,pszNULL,0)
-+
-+#define CHANNEL_NAMES {"Ch0","Ch1","Ch2","Ch3","Ch4","Ch5","Ch6","Ch7","Ch8","Ch9","Ch10","Ch11","Ch12","Ch13","Ch14","Ch15"}
-+
-+#endif
-+
-diff -urN linux.old/drivers/net/avalanche_cpmac/cpmac.c linux.dev/drivers/net/avalanche_cpmac/cpmac.c
---- linux.old/drivers/net/avalanche_cpmac/cpmac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/cpmac.c 2005-07-22 01:03:12.609318544 +0200
-@@ -0,0 +1,2504 @@
-+/******************************************************************************
-+ * FILE PURPOSE: CPMAC Linux Network Device Driver Source
-+ ******************************************************************************
-+ * FILE NAME: cpmac.c
-+ *
-+ * DESCRIPTION: CPMAC Network Device Driver Source
-+ *
-+ * REVISION HISTORY:
-+ *
-+ * Date Description Author
-+ *-----------------------------------------------------------------------------
-+ * 27 Nov 2002 Initial Creation Suraj S Iyer
-+ * 09 Jun 2003 Updates for GA Suraj S Iyer
-+ * 30 Sep 2003 Updates for LED, Reset stats Suraj S Iyer
-+ *
-+ * (C) Copyright 2003, Texas Instruments, Inc
-+ *******************************************************************************/
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/delay.h>
-+#include <linux/spinlock.h>
-+#include <linux/proc_fs.h>
-+#include <linux/ioport.h>
-+#include <asm/io.h>
-+
-+#include <linux/skbuff.h>
-+
-+#include <asm/mips-boards/prom.h>
-+#include <linux/string.h>
-+#include <asm/uaccess.h>
-+#include <linux/config.h>
-+#include <asm/ar7/if_port.h>
-+
-+extern void build_psp_config(void);
-+extern void psp_config_cleanup(void);
-+
-+#include "cpmacHalLx.h"
-+#include "cpmac.h"
-+
-+static struct net_device *last_cpmac_device = NULL;
-+static int cpmac_devices_installed = 0;
-+
-+void xdump( u_char* cp, int length, char* prefix );
-+
-+unsigned int cpmac_cpu_freq = 0;
-+
-+char cpmac_version[] = "1.5";
-+
-+char l3_align_array[] = {0x02, 0x01, 0x00, 0x03};
-+#define L3_ALIGN(i) l3_align_array[i]
-+
-+char add_for_4byte_align[] = {0x04, 0x03, 0x02, 0x05};
-+#define ADD_FOR_4BYTE_ALIGN(i) add_for_4byte_align[i]
-+
-+
-+#define TPID 0x8100
-+#define IS_802_1Q_FRAME(byte_ptr) (*(unsigned short*)byte_ptr == TPID)
-+#define TPID_START_OFFSET 12
-+#define TCI_START_OFFSET 14
-+#define TCI_LENGTH 2
-+#define TPID_LENGTH 2
-+#define TPID_END_OFFSET (TPID_START_OFFSET + TPID_LENGTH)
-+#define TCI_END_OFFSET (TCI_START_OFFSET + TCI_LENGTH)
-+#define IS_VALID_VLAN_ID(byte_ptr) ((*(unsigned short*)byte_ptr) && 0xfff != 0)
-+#define MAX_CLASSES 8
-+#define MAX_USER_PRIORITY 8
-+#define CONTROL_802_1Q_SIZE (TCI_LENGTH + TPID_LENGTH)
-+
-+unsigned char user_priority_to_traffic_class_map[MAX_CLASSES][MAX_USER_PRIORITY] =
-+{
-+ {0, 0, 0, 1, 1, 1, 1, 2},
-+ {0, 0, 0, 0, 0, 0, 0, 0},
-+ {0, 0, 0, 0, 0, 0, 0, 1},
-+ {0, 0, 0, 1, 1, 2, 2, 3},
-+ {0, 1, 1, 2, 2, 3, 3, 4},
-+ {0, 1, 1, 2, 3, 4, 4, 5},
-+ {0, 1, 2, 3, 4, 5, 5, 6},
-+ {0, 1, 2, 3, 4, 5, 6, 7}
-+};
-+
-+#define GET_802_1P_CHAN(x,y) user_priority_to_traffic_class_map[x][(y & 0xe0)]
-+
-+#if defined(CONFIG_MIPS_SEAD2)
-+unsigned long temp_base_address[2] = {0xa8610000, 0xa8612800};
-+unsigned long temp_reset_value[2] = { 1<< 17,1<<21};
-+#define RESET_REG_PRCR (*(volatile unsigned int *)((0xa8611600 + 0x0)))
-+#define VERSION(base) (*(volatile unsigned int *)(((base)|0xa0000000) + 0x0))
-+#endif
-+
-+MODULE_AUTHOR("Maintainer: Suraj S Iyer <ssiyer@ti.com>");
-+MODULE_DESCRIPTION("Driver for TI CPMAC");
-+
-+static int cfg_link_speed = 0;
-+MODULE_PARM(cfg_link_speed, "i");
-+MODULE_PARM_DESC(cfg_link_speed, "Fixed speed of the Link: <100/10>");
-+
-+static char *cfg_link_mode = NULL;
-+MODULE_PARM(cfg_link_mode, "1-3s");
-+MODULE_PARM_DESC(cfg_link_mode, "Fixed mode of the Link: <fd/hd>");
-+
-+int cpmac_debug_mode = 0;
-+MODULE_PARM(debug_mode, "i");
-+MODULE_PARM_DESC(debug_mode, "Turn on the debug info: <0/1>. Default is 0 (off)");
-+
-+#define dbgPrint if (cpmac_debug_mode) printk
-+#define errPrint printk
-+
-+static int g_cfg_start_link_params = CFG_START_LINK_SPEED;
-+static int g_init_enable_flag = 0;
-+static int cfg_start_link_speed;
-+static int cpmac_max_frame_size;
-+
-+static struct net_device *g_dev_array[2];
-+static struct proc_dir_entry *gp_stats_file = NULL;
-+
-+//-----------------------------------------------------------------------------
-+// Statistics related private functions.
-+//-----------------------------------------------------------------------------
-+static int cpmac_p_update_statistics(struct net_device *p_dev, char *buf, int limit, int *len);
-+static int cpmac_p_read_rfc2665_stats(char *buf, char **start, off_t offset, int count, int *eof, void *data);
-+static int cpmac_p_read_link(char *buf, char **start, off_t offset, int count, int *eof, void *data);
-+static int cpmac_p_read_stats(char* buf, char **start, off_t offset, int count, int *eof, void *data);
-+static int cpmac_p_write_stats (struct file *fp, const char * buf, unsigned long count, void * data);
-+static int cpmac_p_reset_statistics (struct net_device *p_dev);
-+static int cpmac_p_get_version(char *buf, char **start, off_t offset, int count, int *eof, void *data);
-+
-+static int cpmac_p_detect_manual_cfg(int, char*, int);
-+static int cpmac_p_process_status_ind(CPMAC_PRIVATE_INFO_T *p_cpmac_priv);
-+
-+//-----------------------------------------------------------------------------
-+// Timer related private functions.
-+//-----------------------------------------------------------------------------
-+static int cpmac_p_timer_init(CPMAC_PRIVATE_INFO_T *p_cpmac_priv);
-+// static int cpmac_timer_cleanup(CPMAC_PRIVATE_INFO_T *p_cpmac_priv);
-+static void cpmac_p_tick_timer_expiry(unsigned long p_cb_param);
-+inline static int cpmac_p_start_timer(struct timer_list *p_timer, unsigned int delay_ticks);
-+static int cpmac_p_stop_timer(struct timer_list *p_timer);
-+
-+//------------------------------------------------------------------------------
-+// Device configuration and setup related private functions.
-+//------------------------------------------------------------------------------
-+static int cpmac_p_probe_and_setup_device(CPMAC_PRIVATE_INFO_T *p_cpmac_priv, unsigned long *p_dev_flags);
-+static int cpmac_p_setup_driver_params(CPMAC_PRIVATE_INFO_T *p_cpmac_priv);
-+inline static int cpmac_p_rx_buf_setup(CPMAC_RX_CHAN_INFO_T *p_rx_chan);
-+
-+//-----------------------------------------------------------------------------
-+// Net device related private functions.
-+//-----------------------------------------------------------------------------
-+static int cpmac_dev_init(struct net_device *p_dev);
-+static int cpmac_dev_open( struct net_device *dev );
-+static int cpmac_dev_close(struct net_device *p_dev);
-+static void cpmac_dev_mcast_set(struct net_device *p_dev);
-+static int cpmac_dev_set_mac_addr(struct net_device *p_dev,void * addr);
-+static int cpmac_dev_tx( struct sk_buff *skb, struct net_device *p_dev);
-+static struct net_device_stats *cpmac_dev_get_net_stats (struct net_device *dev);
-+
-+static int cpmac_p_dev_enable( struct net_device *p_dev);
-+
-+
-+
-+/* Max. Reserved headroom in front of each packet so that the headers can be added to
-+ * a packet. Worst case scenario would be PPPoE + 2684 LLC Encapsulation + Ethernet
-+ * header. */
-+#define MAX_RESERVED_HEADROOM 20
-+
-+/* This is the MAX size of the static buffer for pure data. */
-+#define MAX_SIZE_STATIC_BUFFER 1600
-+
-+typedef struct DRIVER_BUFFER
-+{
-+ /* Pointer to the allocated data buffer. This is the static data buffer
-+ * allocated for the TI-Cache. 60 bytes out of the below buffer are required
-+ * by the SKB shared info. We always reserve at least MAX_RESERVED_HEADROOM bytes
-+ * so that the packets always have sufficient headroom. */
-+ char ptr_buffer[MAX_SIZE_STATIC_BUFFER + MAX_RESERVED_HEADROOM + 60];
-+
-+ /* List of the driver buffers. */
-+ struct DRIVER_BUFFER* ptr_next;
-+}DRIVER_BUFFER;
-+
-+typedef struct DRIVER_BUFFER_MCB
-+{
-+ /* List of the driver buffers. */
-+ DRIVER_BUFFER* ptr_available_driver_buffers;
-+
-+ /* The number of available buffers. */
-+ int num_available_buffers;
-+}DRIVER_BUFFER_MCB;
-+
-+DRIVER_BUFFER_MCB driver_mcb;
-+int hybrid_mode = 0;
-+
-+static union {
-+ struct sk_buff_head list;
-+ char pad[SMP_CACHE_BYTES];
-+} skb_head_pool[NR_CPUS];
-+
-+/**************************************************************************
-+ * FUNCTION NAME : ti_release_skb
-+ **************************************************************************
-+ * DESCRIPTION :
-+ * This function is called from the ti_alloc_skb when there were no more
-+ * data buffers available. The allocated SKB had to released back to the
-+ * data pool. The reason why this function was moved from the fast path
-+ * below was because '__skb_queue_head' is an inline function which adds
-+ * a large code chunk on the fast path.
-+ *
-+ * NOTES :
-+ * This function is called with interrupts disabled.
-+ **************************************************************************/
-+static void ti_release_skb (struct sk_buff_head* list, struct sk_buff* skb)
-+{
-+ __skb_queue_head(list, skb);
-+ return;
-+}
-+
-+/**************************************************************************
-+ * FUNCTION NAME : ti_alloc_skb
-+ **************************************************************************
-+ * DESCRIPTION :
-+ * The function is called to allocate memory from the static allocated
-+ * TI-Cached memory pool.
-+ *
-+ * RETURNS :
-+ * Allocated static memory buffer - Success
-+ * NULL - Error.
-+ **************************************************************************/
-+struct sk_buff *ti_alloc_skb(unsigned int size,int gfp_mask)
-+{
-+ register struct sk_buff* skb;
-+ unsigned long flags;
-+ struct sk_buff_head* list;
-+ DRIVER_BUFFER* ptr_node = NULL;
-+
-+ /* Critical Section Begin: Lock out interrupts. */
-+ local_irq_save(flags);
-+
-+ /* Get the SKB Pool list associated with the processor and dequeue the head. */
-+ list = &skb_head_pool[smp_processor_id()].list;
-+ skb = __skb_dequeue(list);
-+
-+ /* Align the data size. */
-+ size = SKB_DATA_ALIGN(size);
-+
-+ /* Did we get one. */
-+ if (skb != NULL)
-+ {
-+ /* YES. Now get a data block from the head of statically allocated block. */
-+ ptr_node = driver_mcb.ptr_available_driver_buffers;
-+ if (ptr_node != NULL)
-+ {
-+ /* YES. Got a data block. Advance the free list pointer to the next available buffer. */
-+ driver_mcb.ptr_available_driver_buffers = ptr_node->ptr_next;
-+ ptr_node->ptr_next = NULL;
-+
-+ /* Decrement the number of available data buffers. */
-+ driver_mcb.num_available_buffers = driver_mcb.num_available_buffers - 1;
-+ }
-+ else
-+ {
-+ /* NO. Was unable to get a data block. So put the SKB back on the free list.
-+ * This is slow path. */
-+#ifdef DEBUG_SKB
-+ printk ("DEBUG: No Buffer memory available: Number of free buffer:%d.\n",
-+ driver_mcb.num_available_buffers);
-+#endif
-+ ti_release_skb (list, skb);
-+ }
-+ }
-+
-+ /* Critical Section End: Unlock interrupts. */
-+ local_irq_restore(flags);
-+
-+ /* Did we get an SKB and data buffer. Proceed only if we were succesful in getting both else drop */
-+ if (skb != NULL && ptr_node != NULL)
-+ {
-+ /* XXX: does not include slab overhead */
-+ skb->truesize = size + sizeof(struct sk_buff);
-+
-+ /* Load the data pointers. */
-+ skb->head = ptr_node->ptr_buffer;
-+ skb->data = ptr_node->ptr_buffer + MAX_RESERVED_HEADROOM;
-+ skb->tail = ptr_node->ptr_buffer + MAX_RESERVED_HEADROOM;
-+ skb->end = ptr_node->ptr_buffer + size + MAX_RESERVED_HEADROOM;
-+
-+ /* Set up other state */
-+ skb->len = 0;
-+ skb->cloned = 0;
-+ skb->data_len = 0;
-+
-+ /* Mark the SKB indicating that the SKB is from the TI cache. */
-+ skb->cb[45] = 1;
-+
-+ atomic_set(&skb->users, 1);
-+ atomic_set(&(skb_shinfo(skb)->dataref), 1);
-+ skb_shinfo(skb)->nr_frags = 0;
-+ skb_shinfo(skb)->frag_list = NULL;
-+ return skb;
-+ }
-+ else
-+ {
-+ /* Control comes here only when there is no statically allocated data buffers
-+ * available. This case is handled using the mode selected
-+ *
-+ * 1. Hybrid Mode.
-+ * In that case lets jump to the old allocation code. This way we
-+ * can allocate a small number of data buffers upfront and the rest will hit
-+ * this portion of the code, which is slow path. Note the number of hits here
-+ * should be kept as low as possible to satisfy performance requirements.
-+ *
-+ * 2. Pure Static Mode.
-+ * Return NULL the user should have tuned the number of static buffers for
-+ * worst case scenario. So return NULL and let the drivers handle the error. */
-+ if (hybrid_mode == 1)
-+ {
-+ /* Hybrid Mode: Old allocation. */
-+ return dev_alloc_skb(size);
-+ }
-+ else
-+ {
-+ /* Pure Static Mode: No buffers available. */
-+ return NULL;
-+ }
-+ }
-+}
-+
-+/**************************************************************************
-+ * FUNCTION NAME : ti_skb_release_fragment
-+ **************************************************************************
-+ * DESCRIPTION :
-+ * This function is called to release fragmented packets. This is NOT in
-+ * the fast path and this function requires some work.
-+ **************************************************************************/
-+static void ti_skb_release_fragment(struct sk_buff *skb)
-+{
-+ if (skb_shinfo(skb)->nr_frags)
-+ {
-+ /* PANKAJ TODO: This portion has not been tested. */
-+ int i;
-+#ifdef DEBUG_SKB
-+ printk ("DEBUG: Releasing fragments in TI-Cached code.\n");
-+#endif
-+ for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
-+ printk ("DEBUG: Fragmented Page = 0x%p.\n", skb_shinfo(skb)->frags[i].page);
-+ }
-+
-+ /* Check if there were any fragments present and if so clean all the SKB's.
-+ * This is required to recursivly clean the SKB's. */
-+ if (skb_shinfo(skb)->frag_list)
-+ skb_drop_fraglist(skb);
-+
-+ return;
-+}
-+
-+/**************************************************************************
-+ * FUNCTION NAME : ti_skb_release_data
-+ **************************************************************************
-+ * DESCRIPTION :
-+ * The function is called to release the SKB back into the TI-Cached static
-+ * memory pool.
-+ **************************************************************************/
-+static void ti_skb_release_data(struct sk_buff *skb)
-+{
-+ DRIVER_BUFFER* ptr_node;
-+ unsigned long flags;
-+
-+ /* The SKB data can be cleaned only if the packet has not been cloned and we
-+ * are the only one holding a reference to the data. */
-+ if (!skb->cloned || atomic_dec_and_test(&(skb_shinfo(skb)->dataref)))
-+ {
-+ /* Are there any fragments associated with the SKB ?*/
-+ if ((skb_shinfo(skb)->nr_frags != 0) || (skb_shinfo(skb)->frag_list != NULL))
-+ {
-+ /* Slow Path: Try and clean up the fragments. */
-+ ti_skb_release_fragment (skb);
-+ }
-+
-+ /* Cleanup the SKB data memory. This is fast path. */
-+ ptr_node = (DRIVER_BUFFER *)skb->head;
-+
-+ /* Critical Section: Lock out interrupts. */
-+ local_irq_save(flags);
-+
-+ /* Add the data buffer to the list of available buffers. */
-+ ptr_node->ptr_next = driver_mcb.ptr_available_driver_buffers;
-+ driver_mcb.ptr_available_driver_buffers = ptr_node;
-+
-+ /* Increment the number of available data buffers. */
-+ driver_mcb.num_available_buffers = driver_mcb.num_available_buffers + 1;
-+
-+ /* Criticial Section: Unlock interrupts. */
-+ local_irq_restore(flags);
-+ }
-+ return;
-+}
-+
-+
-+
-+
-+static unsigned char str2hexnum(unsigned char c)
-+{
-+ if(c >= '0' && c <= '9')
-+ return c - '0';
-+ if(c >= 'a' && c <= 'f')
-+ return c - 'a' + 10;
-+ if(c >= 'A' && c <= 'F')
-+ return c - 'A' + 10;
-+ return 0;
-+}
-+
-+static void str2eaddr(unsigned char *ea, unsigned char *str)
-+{
-+ int i;
-+ unsigned char num;
-+ for(i = 0; i < 6; i++) {
-+ if((*str == '.') || (*str == ':'))
-+ str++;
-+ num = str2hexnum(*str++) << 4;
-+ num |= (str2hexnum(*str++));
-+ ea[i] = num;
-+ }
-+}
-+
-+//-----------------------------------------------------------------------------
-+// Statistics related private functions.
-+//-----------------------------------------------------------------------------
-+static int cpmac_p_update_statistics(struct net_device *p_dev, char *buf, int limit, int *p_len)
-+{
-+ int ret_val = -1;
-+ unsigned long rx_hal_errors = 0;
-+ unsigned long rx_hal_discards = 0;
-+ unsigned long tx_hal_errors = 0;
-+ unsigned long ifOutDiscards = 0;
-+ unsigned long ifInDiscards = 0;
-+ unsigned long ifOutErrors = 0;
-+ unsigned long ifInErrors = 0;
-+
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+ CPMAC_DEVICE_MIB_T *p_device_mib = p_cpmac_priv->device_mib;
-+ CPMAC_DRV_STATS_T *p_stats = p_cpmac_priv->stats;
-+ CPMAC_DEVICE_MIB_T local_mib;
-+ CPMAC_DEVICE_MIB_T *p_local_mib = &local_mib;
-+
-+ struct net_device_stats *p_net_dev_stats = &p_cpmac_priv->net_dev_stats;
-+
-+ int len = 0;
-+ int dev_mib_elem_count = 0;
-+
-+ /* do not access the hardware if it is in the reset state. */
-+ if(!test_bit(0, &p_cpmac_priv->set_to_close))
-+ {
-+ if(p_drv_hal->hal_funcs->Control(p_drv_hal->hal_dev, "StatsDump", "Get",
-+ p_local_mib) != 0)
-+ {
-+ errPrint("The stats dump for %s is failing.\n", p_dev->name);
-+ return(ret_val);
-+ }
-+
-+ p_drv_hal->hal_funcs->Control(p_drv_hal->hal_dev, "StatsClear", "Set", NULL);
-+
-+ dev_mib_elem_count = sizeof(CPMAC_DEVICE_MIB_T)/sizeof(unsigned long);
-+
-+ /* Update the history of the stats. This takes care of any reset of the
-+ * device and stats that might have taken place during the life time of
-+ * the driver.
-+ */
-+ while(dev_mib_elem_count--)
-+ {
-+ *((unsigned long*) p_device_mib + dev_mib_elem_count) +=
-+ *((unsigned long*) p_local_mib + dev_mib_elem_count);
-+ }
-+ }
-+
-+ /* RFC2665, section 3.2.7, page 9 */
-+ rx_hal_errors = p_device_mib->ifInFragments +
-+ p_device_mib->ifInCRCErrors +
-+ p_device_mib->ifInAlignCodeErrors +
-+ p_device_mib->ifInJabberFrames;
-+
-+ /* RFC2233 */
-+ rx_hal_discards = p_device_mib->ifRxDMAOverruns;
-+
-+ /* RFC2665, section 3.2.7, page 9 */
-+ tx_hal_errors = p_device_mib->ifExcessiveCollisionFrames +
-+ p_device_mib->ifLateCollisions +
-+ p_device_mib->ifCarrierSenseErrors +
-+ p_device_mib->ifOutUnderrun;
-+
-+ /* if not set, the short frames (< 64 bytes) are considered as errors */
-+ if(!p_cpmac_priv->flags & IFF_PRIV_SHORT_FRAMES)
-+ rx_hal_errors += p_device_mib->ifInUndersizedFrames;
-+
-+ /* if not set, the long frames ( > 1518) are considered as errors
-+ * RFC2665, section 3.2.7, page 9. */
-+ if(!p_cpmac_priv->flags & IFF_PRIV_JUMBO_FRAMES)
-+ rx_hal_errors += p_device_mib->ifInOversizedFrames;
-+
-+ /* if not in promiscous, then non addr matching frames are discarded */
-+ /* CPMAC 2.0 Manual Section 2.8.1.14 */
-+ if(!p_dev->flags & IFF_PROMISC)
-+ {
-+ ifInDiscards += p_device_mib->ifInFilteredFrames;
-+ }
-+
-+ /* total rx discards = hal discards + driver discards. */
-+ ifInDiscards = rx_hal_discards + p_net_dev_stats->rx_dropped;
-+ ifInErrors = rx_hal_errors;
-+
-+ ifOutErrors = tx_hal_errors;
-+ ifOutDiscards = p_net_dev_stats->tx_dropped;
-+
-+ /* Let us update the net device stats struct. To be updated in the later releases.*/
-+ p_cpmac_priv->net_dev_stats.rx_errors = ifInErrors;
-+ p_cpmac_priv->net_dev_stats.collisions = p_device_mib->ifCollisionFrames;
-+
-+ if(buf == NULL || limit == 0)
-+ {
-+ return(0);
-+ }
-+
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %ld\n", "ifSpeed", (long)p_cpmac_priv->link_speed);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "dot3StatsDuplexStatus", (long)p_cpmac_priv->link_mode);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifAdminStatus", (long)(p_dev->flags & IFF_UP ? 1:2));
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifOperStatus", (long)(((p_dev->flags & IFF_UP) && netif_carrier_ok(p_dev)) ? 1:2));
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifLastChange", p_stats->start_tick);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInDiscards", ifInDiscards);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInErrors", ifInErrors);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifOutDiscards", ifOutDiscards);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifOutErrors", ifOutErrors);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInGoodFrames", p_device_mib->ifInGoodFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInBroadcasts", p_device_mib->ifInBroadcasts);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInMulticasts", p_device_mib->ifInMulticasts);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInPauseFrames", p_device_mib->ifInPauseFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInCRCErrors", p_device_mib->ifInCRCErrors);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInAlignCodeErrors", p_device_mib->ifInAlignCodeErrors);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInOversizedFrames", p_device_mib->ifInOversizedFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInJabberFrames", p_device_mib->ifInJabberFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInUndersizedFrames", p_device_mib->ifInUndersizedFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInFragments", p_device_mib->ifInFragments);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInFilteredFrames", p_device_mib->ifInFilteredFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInQosFilteredFrames", p_device_mib->ifInQosFilteredFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifInOctets", p_device_mib->ifInOctets);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifOutGoodFrames", p_device_mib->ifOutGoodFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifOutBroadcasts", p_device_mib->ifOutBroadcasts);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifOutMulticasts", p_device_mib->ifOutMulticasts);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifOutPauseFrames", p_device_mib->ifOutPauseFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifDeferredTransmissions", p_device_mib->ifDeferredTransmissions);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifCollisionFrames", p_device_mib->ifCollisionFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifSingleCollisionFrames", p_device_mib->ifSingleCollisionFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifMultipleCollisionFrames", p_device_mib->ifMultipleCollisionFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifExcessiveCollisionFrames", p_device_mib->ifExcessiveCollisionFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifLateCollisions", p_device_mib->ifLateCollisions);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifOutUnderrun", p_device_mib->ifOutUnderrun);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifCarrierSenseErrors", p_device_mib->ifCarrierSenseErrors);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifOutOctets", p_device_mib->ifOutOctets);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "if64OctetFrames", p_device_mib->if64OctetFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "if65To127POctetFrames", p_device_mib->if65To127OctetFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "if128To255OctetFrames", p_device_mib->if128To255OctetFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "if256To511OctetFrames", p_device_mib->if256To511OctetFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "if512To1023OctetFrames", p_device_mib->if512To1023OctetFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "if1024ToUpOctetFrames", p_device_mib->if1024ToUPOctetFrames);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifNetOctets", p_device_mib->ifNetOctets);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifRxSofOverruns", p_device_mib->ifRxSofOverruns);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifRxMofOverruns", p_device_mib->ifRxMofOverruns);
-+ if(len <= limit)
-+ len+= sprintf(buf + len, "%-35s: %lu\n", "ifRxDMAOverruns", p_device_mib->ifRxDMAOverruns);
-+
-+ *p_len = len;
-+
-+ return(0);
-+}
-+
-+
-+static int cpmac_p_read_rfc2665_stats(char* buf, char **start, off_t offset,
-+ int count, int *eof, void *data)
-+{
-+ int limit = count - 80;
-+ int len = 0;
-+ struct net_device *p_dev = (struct net_device*)data;
-+
-+ cpmac_p_update_statistics(p_dev, buf, limit, &len);
-+
-+ *eof = 1;
-+
-+ return len;
-+}
-+
-+static int cpmac_p_read_link(char *buf, char **start, off_t offset, int count,
-+ int *eof, void *data)
-+{
-+ int len = 0;
-+
-+ struct net_device *p_dev;
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv;
-+ struct net_device *cpmac_dev_list[cpmac_devices_installed];
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal;
-+
-+ int i;
-+ int phy; /* what phy are we using? */
-+
-+ len += sprintf(buf+len, "CPMAC devices = %d\n",cpmac_devices_installed);
-+
-+ p_dev = last_cpmac_device;
-+
-+ /* Reverse the the device link list to list eth0,eth1...in correct order */
-+ for(i=0; i< cpmac_devices_installed; i++)
-+ {
-+ cpmac_dev_list[cpmac_devices_installed -(i+1)] = p_dev;
-+ p_cpmac_priv = p_dev->priv;
-+ p_dev = p_cpmac_priv->next_device;
-+ }
-+
-+ for(i=0; i< cpmac_devices_installed; i++)
-+ {
-+ p_dev = cpmac_dev_list[i];
-+ p_cpmac_priv = p_dev->priv;
-+ p_drv_hal = p_cpmac_priv->drv_hal;
-+
-+ /* This prints them out from high to low because of how the devices are linked */
-+ if(netif_carrier_ok(p_dev))
-+ {
-+ p_drv_hal->hal_funcs->Control(p_drv_hal->hal_dev, "PhyNum", "Get", &phy);
-+
-+
-+ len += sprintf(buf+len,"eth%d: Link State: %s Phy:0x%x, Speed = %s, Duplex = %s\n",
-+ p_cpmac_priv->instance_num, "UP", phy,
-+ (p_cpmac_priv->link_speed == 100000000) ? "100":"10",
-+ (p_cpmac_priv->link_mode == 2) ? "Half":"Full");
-+
-+ }
-+ else
-+ len += sprintf(buf+len,"eth%d: Link State: DOWN\n",p_cpmac_priv->instance_num);
-+
-+ p_dev = p_cpmac_priv->next_device;
-+ }
-+
-+ return len;
-+
-+}
-+
-+static int cpmac_p_read_stats(char* buf, char **start, off_t offset, int count,
-+ int *eof, void *data)
-+{
-+ struct net_device *p_dev = last_cpmac_device;
-+ int len = 0;
-+ int limit = count - 80;
-+ int i;
-+ struct net_device *cpmac_dev_list[cpmac_devices_installed];
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv;
-+ CPMAC_DEVICE_MIB_T *p_device_mib;
-+
-+ /* Reverse the the device link list to list eth0,eth1...in correct order */
-+ for(i=0; i< cpmac_devices_installed; i++)
-+ {
-+ cpmac_dev_list[cpmac_devices_installed - (i+1)] = p_dev;
-+ p_cpmac_priv = p_dev->priv;
-+ p_dev = p_cpmac_priv->next_device;
-+ }
-+
-+ for(i=0; i< cpmac_devices_installed; i++)
-+ {
-+ p_dev = cpmac_dev_list[i];
-+
-+ if(!p_dev)
-+ goto proc_error;
-+
-+ /* Get Stats */
-+ cpmac_p_update_statistics(p_dev, NULL, 0, NULL);
-+
-+ p_cpmac_priv = p_dev->priv;
-+ p_device_mib = p_cpmac_priv->device_mib;
-+
-+ /* Transmit stats */
-+ if(len<=limit)
-+ len+= sprintf(buf+len, "\nCpmac %d, Address %lx\n",i+1, p_dev->base_addr);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Transmit Stats\n");
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Tx Valid Bytes Sent :%lu\n",p_device_mib->ifOutOctets);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Good Tx Frames (Hardware) :%lu\n",p_device_mib->ifOutGoodFrames);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Good Tx Frames (Software) :%lu\n",p_cpmac_priv->net_dev_stats.tx_packets);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Good Tx Broadcast Frames :%lu\n",p_device_mib->ifOutBroadcasts);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Good Tx Multicast Frames :%lu\n",p_device_mib->ifOutMulticasts);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Pause Frames Sent :%lu\n",p_device_mib->ifOutPauseFrames);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Collisions :%lu\n",p_device_mib->ifCollisionFrames);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Tx Error Frames :%lu\n",p_cpmac_priv->net_dev_stats.tx_errors);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Carrier Sense Errors :%lu\n",p_device_mib->ifCarrierSenseErrors);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, "\n");
-+
-+
-+ /* Receive Stats */
-+ if(len<=limit)
-+ len+= sprintf(buf+len, "\nCpmac %d, Address %lx\n",i+1,p_dev->base_addr);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Receive Stats\n");
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Rx Valid Bytes Received :%lu\n",p_device_mib->ifInOctets);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Good Rx Frames (Hardware) :%lu\n",p_device_mib->ifInGoodFrames);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Good Rx Frames (Software) :%lu\n",p_cpmac_priv->net_dev_stats.rx_packets);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Good Rx Broadcast Frames :%lu\n",p_device_mib->ifInBroadcasts);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Good Rx Multicast Frames :%lu\n",p_device_mib->ifInMulticasts);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Pause Frames Received :%lu\n",p_device_mib->ifInPauseFrames);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Rx CRC Errors :%lu\n",p_device_mib->ifInCRCErrors);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Rx Align/Code Errors :%lu\n",p_device_mib->ifInAlignCodeErrors);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Rx Jabbers :%lu\n",p_device_mib->ifInOversizedFrames);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Rx Filtered Frames :%lu\n",p_device_mib->ifInFilteredFrames);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Rx Fragments :%lu\n",p_device_mib->ifInFragments);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Rx Undersized Frames :%lu\n",p_device_mib->ifInUndersizedFrames);
-+ if(len<=limit)
-+ len+= sprintf(buf+len, " Rx Overruns :%lu\n",p_device_mib->ifRxDMAOverruns);
-+ }
-+
-+
-+ return len;
-+
-+ proc_error:
-+ *eof=1;
-+ return len;
-+}
-+
-+static int cpmac_p_write_stats (struct file *fp, const char * buf, unsigned long count, void * data)
-+{
-+ char local_buf[31];
-+ int ret_val = 0;
-+
-+ if(count > 30)
-+ {
-+ printk("Error : Buffer Overflow\n");
-+ printk("Use \"echo 0 > cpmac_stat\" to reset the statistics\n");
-+ return -EFAULT;
-+ }
-+
-+ copy_from_user(local_buf,buf,count);
-+ local_buf[count-1]='\0'; /* Ignoring last \n char */
-+ ret_val = count;
-+
-+ if(strcmp("0",local_buf)==0)
-+ {
-+ struct net_device *p_dev = last_cpmac_device;
-+ int i;
-+ struct net_device *cpmac_dev_list[cpmac_devices_installed];
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv;
-+
-+ /* Valid command */
-+ printk("Resetting statistics for CPMAC interface.\n");
-+
-+ /* Reverse the the device link list to list eth0,eth1...in correct order */
-+ for(i=0; i< cpmac_devices_installed; i++)
-+ {
-+ cpmac_dev_list[cpmac_devices_installed - (i+1)] = p_dev;
-+ p_cpmac_priv = p_dev->priv;
-+ p_dev = p_cpmac_priv->next_device;
-+ }
-+
-+ for(i=0; i< cpmac_devices_installed; i++)
-+ {
-+ p_dev = cpmac_dev_list[i];
-+ if(!p_dev)
-+ {
-+ ret_val = -EFAULT;
-+ break;
-+ }
-+
-+ cpmac_p_reset_statistics(p_dev);
-+ }
-+ }
-+ else
-+ {
-+ printk("Error: Unknown operation on cpmac statistics\n");
-+ printk("Use \"echo 0 > cpmac_stats\" to reset the statistics\n");
-+ return -EFAULT;
-+ }
-+
-+ return ret_val;
-+}
-+
-+static int cpmac_p_reset_statistics(struct net_device *p_dev)
-+{
-+ int ret_val = 0;
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+
-+ memset(p_cpmac_priv->device_mib, 0, sizeof(CPMAC_DEVICE_MIB_T));
-+ memset(p_cpmac_priv->stats, 0, sizeof(CPMAC_DRV_STATS_T));
-+ memset(&p_cpmac_priv->net_dev_stats, 0, sizeof(struct net_device_stats));
-+
-+ p_drv_hal->hal_funcs->Control(p_drv_hal->hal_dev, "StatsClear", "Set", NULL);
-+
-+ return(ret_val);
-+}
-+
-+static int cpmac_p_get_version(char* buf, char **start, off_t offset, int count,int *eof, void *data)
-+{
-+ int len = 0;
-+ int limit = count - 80;
-+ char *hal_version = NULL;
-+ struct net_device *p_dev = last_cpmac_device;
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+
-+ p_drv_hal->hal_funcs->Control(p_drv_hal->hal_dev, "Version", "Get", &hal_version);
-+
-+ len += sprintf(buf+len, "Texas Instruments CPMAC driver version: %s\n", cpmac_version);
-+
-+ if(len <= limit && hal_version)
-+ len += sprintf(buf+len, "Texas Instruments CPMAC HAL version: %s\n", hal_version);
-+
-+ return len;
-+}
-+
-+static struct net_device_stats *cpmac_dev_get_net_stats (struct net_device *p_dev)
-+{
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = (CPMAC_PRIVATE_INFO_T *) p_dev->priv;
-+
-+ cpmac_p_update_statistics(p_dev, NULL, 0, NULL);
-+
-+ return &p_cpmac_priv->net_dev_stats;
-+}
-+
-+static int cpmac_p_detect_manual_cfg(int link_speed, char* link_mode, int debug)
-+{
-+ char *pSpeed = NULL;
-+
-+ if(debug == 1)
-+ {
-+ cpmac_debug_mode = 1;
-+ dbgPrint("Enabled the debug print.\n");
-+ }
-+
-+ if(!link_speed && !link_mode)
-+ {
-+ dbgPrint("No manual link params, defaulting to auto negotiation.\n");
-+ return (0);
-+ }
-+
-+ if(!link_speed || (link_speed != 10 && link_speed != 100))
-+ {
-+ dbgPrint("Invalid or No value of link speed specified, defaulting to auto speed.\n");
-+ pSpeed = "auto";
-+ }
-+ else if(link_speed == 10)
-+ {
-+ g_cfg_start_link_params &= ~(_CPMDIO_100);
-+ pSpeed = "10 Mbps";
-+ }
-+ else
-+ {
-+ g_cfg_start_link_params &= ~(_CPMDIO_10);
-+ pSpeed = "100 Mbps";
-+ }
-+
-+ if(!link_mode || (!strcmp(link_mode, "fd") && !strcmp(link_mode, "hd")))
-+ {
-+ dbgPrint("Invalid or No value of link mode specified, defaulting to auto mode.\n");
-+ }
-+ else if(!strcmp(link_mode, "hd"))
-+ {
-+ g_cfg_start_link_params &= ~(_CPMDIO_FD);
-+ }
-+ else
-+ {
-+ g_cfg_start_link_params &= ~(_CPMDIO_HD);
-+ }
-+
-+ dbgPrint("Link is manually set to the speed of %s speed and %s mode.\n",
-+ pSpeed, link_mode ? link_mode : "auto");
-+
-+ return(0);
-+}
-+
-+//------------------------------------------------------------------------------
-+// Call back from the HAL.
-+//------------------------------------------------------------------------------
-+static int cpmac_p_process_status_ind(CPMAC_PRIVATE_INFO_T *p_cpmac_priv)
-+{
-+ struct net_device *p_dev = p_cpmac_priv->owner;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+ int status;
-+
-+ p_drv_hal->hal_funcs->Control(p_drv_hal->hal_dev, "Status", "Get", &status);
-+
-+ /* We do not reflect the real link status if in loopback.
-+ * After all, we want the packets to reach the hardware so
-+ * that Send() should work. */
-+ if(p_dev->flags & IFF_LOOPBACK)
-+ {
-+ dbgPrint("Maintaining the link up loopback for %s.\n", p_dev->name);
-+ netif_carrier_on(p_dev);
-+
-+//#if defined (CONFIG_MIPS_AVALANCHE_LED)
-+// avalanche_led_action(p_cpmac_priv->led_handle, CPMAC_LINK_ON);
-+//#endif
-+
-+ return(0);
-+ }
-+
-+ if(status & CPMAC_STATUS_ADAPTER_CHECK) /* ???? */
-+ {
-+ ; /* what to do ? */
-+ }
-+ else if(status)
-+ {
-+ if(!netif_carrier_ok(p_dev))
-+ {
-+ netif_carrier_on(p_cpmac_priv->owner);
-+
-+//#if defined (CONFIG_MIPS_AVALANCHE_LED)
-+// avalanche_led_action(p_cpmac_priv->led_handle, CPMAC_LINK_ON);
-+//#endif
-+ dbgPrint("Found the Link for the CPMAC instance %s.\n", p_dev->name);
-+ }
-+
-+ if(netif_running(p_dev) & netif_queue_stopped(p_dev))
-+ {
-+ netif_wake_queue(p_dev);
-+ }
-+
-+ p_cpmac_priv->link_speed = status & CPMAC_STATUS_LINK_SPEED ? 100000000:10000000;
-+ p_cpmac_priv->link_mode = status & CPMAC_STATUS_LINK_DUPLEX? 3:2;
-+
-+ }
-+ else
-+ {
-+ if(netif_carrier_ok(p_dev))
-+ {
-+ /* do we need to register synchronization issues with stats here. */
-+ p_cpmac_priv->link_speed = 100000000;
-+ p_cpmac_priv->link_mode = 1;
-+
-+ netif_carrier_off(p_dev);
-+
-+//#if defined (CONFIG_MIPS_AVALANCHE_LED)
-+// avalanche_led_action(p_cpmac_priv->led_handle, CPMAC_LINK_OFF);
-+//#endif
-+
-+ dbgPrint("Lost the Link for the CPMAC for %s.\n", p_dev->name);
-+ }
-+
-+ if(!netif_queue_stopped(p_dev))
-+ {
-+ netif_stop_queue(p_dev); /* So that kernel does not keep on xmiting pkts. */
-+ }
-+ }
-+
-+ return(0);
-+}
-+
-+//-----------------------------------------------------------------------------
-+// Timer related private functions.
-+//-----------------------------------------------------------------------------
-+static int cpmac_p_timer_init(CPMAC_PRIVATE_INFO_T *p_cpmac_priv)
-+{
-+ struct timer_list *p_timer = p_cpmac_priv->timer;
-+
-+ init_timer(p_timer);
-+
-+ p_timer = p_cpmac_priv->timer + TICK_TIMER;
-+ p_timer->expires = 0;
-+ p_timer->data = (unsigned long)p_cpmac_priv;
-+ p_timer->function = cpmac_p_tick_timer_expiry;
-+
-+ return(0);
-+}
-+
-+#if 0
-+static int cpmac_timer_cleanup(CPMAC_PRIVATE_INFO_T *p_cpmac_priv)
-+{
-+ struct timer_list *p_timer;
-+
-+ p_timer = p_cpmac_priv->timer + TICK_TIMER;
-+
-+ /* use spin lock to establish synchronization with the dispatch */
-+ if(p_timer->function) del_timer_sync(p_timer);
-+ p_timer->function = NULL;
-+
-+ return (0);
-+}
-+#endif
-+
-+static int cpmac_p_start_timer(struct timer_list *p_timer, unsigned int delay_ticks)
-+{
-+ p_timer->expires = jiffies + delay_ticks;
-+
-+ if(p_timer->function)
-+ {
-+ add_timer(p_timer);
-+ }
-+
-+ return(0);
-+}
-+
-+static void cpmac_p_tick_timer_expiry(unsigned long p_cb_param)
-+{
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = (CPMAC_PRIVATE_INFO_T*) p_cb_param;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+ struct timer_list *p_timer = p_cpmac_priv->timer + TICK_TIMER;
-+
-+ if(test_bit(0, &p_cpmac_priv->set_to_close))
-+ {
-+ return;
-+ }
-+
-+ p_drv_hal->hal_funcs->Tick(p_drv_hal->hal_dev);
-+
-+ cpmac_p_start_timer(p_timer, p_cpmac_priv->delay_ticks);
-+}
-+
-+static int cpmac_p_stop_timer(struct timer_list *p_timer)
-+{
-+ /* Ideally we need to a set flag indicating not to start the timer again
-+ before del_timer_sync() is called up. But here we assume that the
-+ caller has set the p_cpmac_priv->set_to_close (ok for now). */
-+ del_timer_sync(p_timer);
-+
-+ return(0);
-+}
-+
-+//------------------------------------------------------------------------------
-+// Device configuration and setup related private functions.
-+//------------------------------------------------------------------------------
-+static int cpmac_p_probe_and_setup_device(CPMAC_PRIVATE_INFO_T *p_cpmac_priv,
-+ unsigned long *p_dev_flags)
-+{
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+ HAL_FUNCTIONS *p_hal_funcs = p_drv_hal->hal_funcs;
-+ HAL_DEVICE *p_hal_dev = p_drv_hal->hal_dev;
-+ CPMAC_ABILITY_INFO_T *p_capability= p_cpmac_priv->ability_info;
-+ unsigned int val = 0;
-+ int channel = 0;
-+
-+ p_cpmac_priv->flags = 0;
-+
-+ p_capability->promiscous = CFG_PROMISCOUS;
-+ p_capability->broadcast = CFG_BROADCAST;
-+ p_capability->multicast = CFG_MULTICAST;
-+ p_capability->all_multi = CFG_ALL_MULTI;
-+ p_capability->jumbo_frames = CFG_JUMBO_FRAMES;
-+ p_capability->short_frames = CFG_SHORT_FRAMES;
-+ p_capability->auto_negotiation = CFG_AUTO_NEGOTIATION;
-+ p_capability->link_speed = cfg_start_link_speed;
-+ p_capability->loop_back = CFG_LOOP_BACK;
-+ p_capability->tx_flow_control = CFG_TX_FLOW_CNTL;
-+ p_capability->rx_flow_control = CFG_RX_FLOW_CNTL;
-+ p_capability->tx_pacing = CFG_TX_PACING;
-+ p_capability->rx_pass_crc = CFG_RX_PASS_CRC;
-+ p_capability->qos_802_1q = CFG_QOS_802_1Q;
-+ p_capability->tx_num_chan = CFG_TX_NUM_CHAN;
-+
-+ /* Lets probe the device for the configured capabilities (netdev specific).*/
-+
-+ /* Following are set in the set_multi_list, when indicated by the kernel
-+ * Promiscous and all multi.
-+ */
-+
-+ if(p_capability->broadcast)
-+ {
-+ channel = 0;
-+ val = 1;
-+ if((p_hal_funcs->Control(p_hal_dev, pszRX_BROAD_EN, pszSet, &val) == 0) &&
-+ (p_hal_funcs->Control(p_hal_dev, pszRX_BROAD_CH, pszSet, &channel) == 0))
-+ *p_dev_flags |= IFF_BROADCAST;
-+ else
-+ p_capability->broadcast = 0; /* no broadcast capabilities */
-+ }
-+
-+ if(p_capability->multicast)
-+ {
-+ val = 1;
-+ channel = 0;
-+ if((p_hal_funcs->Control(p_hal_dev, pszRX_MULT_EN, pszSet, &val) == 0) &&
-+ (p_hal_funcs->Control(p_hal_dev, pszRX_MULT_CH, pszSet, &channel) == 0))
-+ *p_dev_flags |= IFF_MULTICAST;
-+ else
-+ {
-+ p_capability->multicast = 0;
-+ p_capability->all_multi = 0; /* no multicast, no all-multi. */
-+ }
-+ }
-+
-+ if(p_capability->loop_back)
-+ {
-+ ; /* We do not put the device in loopback, if required use ioctl */
-+ }
-+
-+ /* Lets probe the device for the configured capabilities (Non net device specific).*/
-+
-+ if(p_capability->jumbo_frames)
-+ {
-+ val = 0;
-+ if(p_hal_funcs->Control(p_hal_dev, pszRX_NO_CHAIN, pszSet, &val) == 0)
-+ p_cpmac_priv->flags |= IFF_PRIV_JUMBO_FRAMES;
-+ else
-+ p_capability->jumbo_frames = 0;
-+ }
-+
-+ if(p_capability->short_frames)
-+ {
-+ val = 1;
-+ if(p_hal_funcs->Control(p_hal_dev, pszRX_CSF_EN, pszSet, &val) == 0)
-+ p_cpmac_priv->flags |= IFF_PRIV_SHORT_FRAMES;
-+ else
-+ p_capability->short_frames = 0;
-+ }
-+
-+ val = g_cfg_start_link_params;
-+
-+#ifdef CONFIG_AR7_MDIX
-+ if( avalanche_is_mdix_on_chip() )
-+ {
-+ val |= _CPMDIO_AUTOMDIX;
-+ }
-+#endif
-+
-+ if(p_hal_funcs->Control(p_hal_dev,pszMdioConnect,pszSet, &val) !=0)
-+ {
-+ p_capability->link_speed = 0;
-+ }
-+ else
-+ {
-+ if(g_cfg_start_link_params & (_CPMDIO_100 | _CPMDIO_HD | _CPMDIO_FD | _CPMDIO_10))
-+ p_cpmac_priv->flags |= IFF_PRIV_AUTOSPEED;
-+ else if(g_cfg_start_link_params & (_CPMDIO_100 | _CPMDIO_HD))
-+ p_cpmac_priv->flags |= IFF_PRIV_LINK100_HD;
-+ else if(g_cfg_start_link_params & (_CPMDIO_100 | _CPMDIO_FD))
-+ p_cpmac_priv->flags |= IFF_PRIV_LINK100_FD;
-+ else if(g_cfg_start_link_params & (_CPMDIO_10 | _CPMDIO_HD))
-+ p_cpmac_priv->flags |= IFF_PRIV_LINK10_HD;
-+ else if(g_cfg_start_link_params & (_CPMDIO_10 | _CPMDIO_FD))
-+ p_cpmac_priv->flags |= IFF_PRIV_LINK10_FD;
-+ else
-+ ;
-+ }
-+
-+ if(p_capability->tx_flow_control)
-+ {
-+ val = 1;
-+ if(p_hal_funcs->Control(p_hal_dev,pszTX_FLOW_EN, pszSet, &val) ==0)
-+ p_cpmac_priv->flags |= IFF_PRIV_TX_FLOW_CNTL;
-+ else
-+ p_capability->tx_flow_control = 0;
-+ }
-+
-+ if(p_capability->rx_flow_control)
-+ {
-+ val = 1;
-+ if(p_hal_funcs->Control(p_hal_dev, pszRX_FLOW_EN, pszSet, &val) ==0)
-+ p_cpmac_priv->flags |= IFF_PRIV_RX_FLOW_CNTL;
-+ else
-+ p_capability->rx_flow_control = 0;
-+ }
-+
-+ if(p_capability->tx_pacing)
-+ {
-+ val = 1;
-+ if(p_hal_funcs->Control(p_hal_dev, pszTX_PACE, pszSet, &val) ==0)
-+ p_cpmac_priv->flags |= IFF_PRIV_TX_PACING;
-+ else
-+ p_capability->tx_pacing = 0;
-+ }
-+
-+ if(p_capability->rx_pass_crc)
-+ {
-+ val = 1;
-+ if(p_hal_funcs->Control(p_hal_dev, pszRX_PASS_CRC, pszSet, &val) == 0)
-+ p_cpmac_priv->flags |= IFF_PRIV_RX_PASS_CRC;
-+ else
-+ p_capability->rx_pass_crc = 0;
-+ }
-+
-+ if(p_capability->qos_802_1q)
-+ {
-+ val = 1;
-+ if(p_hal_funcs->Control(p_hal_dev, pszRX_QOS_EN, pszSet, &val) == 0)
-+ p_cpmac_priv->flags |= IFF_PRIV_8021Q_EN;
-+ else
-+ {
-+ p_capability->qos_802_1q = 0;
-+ p_capability->tx_num_chan= 1;
-+ }
-+ }
-+
-+ if(p_capability->tx_num_chan > 1)
-+ {
-+ int cfg_tx_num_chan = p_capability->tx_num_chan;
-+ val = 0;
-+#ifdef TEST
-+ if(p_hal_funcs->Control(p_hal_dev, pszTX_NUM_CH, pszGet, &val) == 0)
-+ cfg_tx_num_chan = cfg_tx_num_chan > val ? val : cfg_tx_num_chan;
-+ else
-+ cfg_tx_num_chan = 1;
-+#endif
-+ p_capability->tx_num_chan = cfg_tx_num_chan;
-+ }
-+
-+ return(0);
-+}
-+
-+static int cpmac_p_setup_driver_params(CPMAC_PRIVATE_INFO_T *p_cpmac_priv)
-+{
-+ int i=0;
-+ int threshold = CFG_TX_NUM_BUF_SERVICE;
-+
-+ char *tx_threshold_ptr = prom_getenv("threshold");
-+
-+ CPMAC_TX_CHAN_INFO_T *p_tx_chan_info = p_cpmac_priv->tx_chan_info;
-+ CPMAC_RX_CHAN_INFO_T *p_rx_chan_info = p_cpmac_priv->rx_chan_info;
-+ CPMAC_ABILITY_INFO_T *p_capability = p_cpmac_priv->ability_info;
-+
-+ /* Timer stuff */
-+ p_cpmac_priv->timer_count = 1; /* should be < or = the MAX TIMER */
-+ p_cpmac_priv->timer_created = 0;
-+ p_cpmac_priv->timer_access_hal = 1;
-+
-+ for(i=0; i < MAX_TIMER; i++)
-+ p_cpmac_priv->timer[i].function = NULL;
-+
-+ p_cpmac_priv->enable_802_1q = p_capability->qos_802_1q;
-+
-+ /* Tx channel related.*/
-+ p_tx_chan_info->cfg_chan = p_capability->tx_num_chan;
-+ p_tx_chan_info->opened_chan = 0;
-+
-+ if(tx_threshold_ptr)
-+ threshold = simple_strtol(tx_threshold_ptr, (char **)NULL, 10);
-+
-+ if((threshold <= 0) && tx_threshold_ptr) /* If threshold set to 0 then Enable the TX interrupt */
-+ {
-+ threshold = CFG_TX_NUM_BUF_SERVICE;
-+ p_tx_chan_info->tx_int_disable = 0;
-+
-+ }
-+ else
-+ {
-+ p_tx_chan_info->tx_int_disable = CFG_TX_INT_DISABLE;
-+ }
-+
-+ for(i=0; i < MAX_TX_CHAN; i++)
-+ {
-+
-+
-+
-+ p_tx_chan_info->chan[i].state = CHAN_CLOSE;
-+ p_tx_chan_info->chan[i].num_BD = CFG_TX_NUM_BUF_DESC;
-+ p_tx_chan_info->chan[i].buffer_size = cpmac_max_frame_size;
-+ p_tx_chan_info->chan[i].buffer_offset = CFG_TX_BUF_OFFSET;
-+
-+
-+
-+ p_tx_chan_info->chan[i].service_max = threshold;
-+ }
-+
-+ if (p_tx_chan_info->tx_int_disable)
-+ printk("Cpmac driver Disable TX complete interrupt setting threshold to %d.\n",threshold);
-+ else
-+ printk("Cpmac driver Enable TX complete interrupt\n");
-+
-+
-+ /* Assuming just one rx channel for now */
-+ p_rx_chan_info->cfg_chan = 1;
-+ p_rx_chan_info->opened_chan = 0;
-+ p_rx_chan_info->chan->state = CHAN_CLOSE;
-+ p_rx_chan_info->chan->num_BD = CFG_RX_NUM_BUF_DESC;
-+ p_rx_chan_info->chan->buffer_size = cpmac_max_frame_size;
-+ p_rx_chan_info->chan->buffer_offset = CFG_RX_BUF_OFFSET;
-+ p_rx_chan_info->chan->service_max = CFG_RX_NUM_BUF_SERVICE;
-+
-+ /* Set as per RFC 2665 */
-+ p_cpmac_priv->link_speed = 100000000;
-+ p_cpmac_priv->link_mode = 1;
-+
-+ p_cpmac_priv->loop_back = 0;
-+
-+ return(0);
-+}
-+
-+inline static int cpmac_p_rx_buf_setup(CPMAC_RX_CHAN_INFO_T *p_rx_chan)
-+{
-+ /* Number of ethernet packets & max pkt length */
-+ p_rx_chan->chan->tot_buf_size = p_rx_chan->chan->buffer_size +
-+ 2*(CONTROL_802_1Q_SIZE) +
-+ p_rx_chan->chan->buffer_offset +
-+ ADD_FOR_4BYTE_ALIGN(p_rx_chan->chan->buffer_offset & 0x3);
-+
-+ p_rx_chan->chan->tot_reserve_bytes = CONTROL_802_1Q_SIZE +
-+ p_rx_chan->chan->buffer_offset +
-+ L3_ALIGN(p_rx_chan->chan->buffer_offset & 0x3);
-+
-+ return(0);
-+}
-+
-+//-----------------------------------------------------------------------------
-+// Net device related private functions.
-+//-----------------------------------------------------------------------------
-+
-+/***************************************************************
-+ * cpmac_dev_init
-+ *
-+ * Returns:
-+ * 0 on success, error code otherwise.
-+ * Parms:
-+ * dev The structure of the device to be
-+ * init'ed.
-+ *
-+ * This function completes the initialization of the
-+ * device structure and driver. It reserves the IO
-+ * addresses and assignes the device's methods.
-+ *
-+ *
-+ **************************************************************/
-+
-+static int cpmac_dev_init(struct net_device *p_dev)
-+{
-+ int retVal = -1;
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ int instance_num = p_cpmac_priv->instance_num;
-+ unsigned long net_flags = 0;
-+ char *mac_name = NULL;
-+ char *mac_string = NULL;
-+
-+ CPMAC_TX_CHAN_INFO_T *p_tx_chan_info;
-+ CPMAC_RX_CHAN_INFO_T *p_rx_chan_info;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal;
-+ int i;
-+
-+ int mem_size = sizeof(CPMAC_DRV_HAL_INFO_T)
-+ + sizeof(CPMAC_TX_CHAN_INFO_T)
-+ + sizeof(CPMAC_RX_CHAN_INFO_T)
-+ + sizeof(CPMAC_ABILITY_INFO_T)
-+ + sizeof(CPMAC_DEVICE_MIB_T)
-+ + sizeof(CPMAC_DRV_STATS_T);
-+
-+
-+#if defined(CONFIG_MIPS_SEAD2)
-+ int prev_reset_val = RESET_REG_PRCR;
-+ /* Bring the module out of reset */
-+ RESET_REG_PRCR |= temp_reset_value[p_cpmac_priv->instance_num];
-+
-+ /* Read the version id of the device to check if the device really exists */
-+ if( VERSION(temp_base_address[p_cpmac_priv->instance_num]) == 0)
-+ {
-+ printk(" CPMAC:Device not found\n");
-+ RESET_REG_PRCR = prev_reset_val;
-+ return -ENODEV;
-+ }
-+
-+ RESET_REG_PRCR = prev_reset_val;
-+#endif
-+
-+
-+ if((p_drv_hal = kmalloc(mem_size, GFP_KERNEL)) == NULL)
-+ {
-+ errPrint("Failed to allocate memory; rewinding.\n");
-+ return(-1);
-+ }
-+
-+ memset(p_drv_hal, 0, mem_size);
-+
-+ /* build the cpmac private object */
-+ p_cpmac_priv->drv_hal = p_drv_hal;
-+ p_cpmac_priv->tx_chan_info = p_tx_chan_info
-+ = (CPMAC_TX_CHAN_INFO_T*)((char*)p_drv_hal
-+ + sizeof(CPMAC_DRV_HAL_INFO_T));
-+ p_cpmac_priv->rx_chan_info = p_rx_chan_info
-+ = (CPMAC_RX_CHAN_INFO_T*)((char *)p_tx_chan_info
-+ + sizeof(CPMAC_TX_CHAN_INFO_T));
-+ p_cpmac_priv->ability_info = (CPMAC_ABILITY_INFO_T *)((char *)p_rx_chan_info
-+ + sizeof(CPMAC_RX_CHAN_INFO_T));
-+ p_cpmac_priv->device_mib = (CPMAC_DEVICE_MIB_T *)((char *)p_cpmac_priv->ability_info
-+ + sizeof(CPMAC_ABILITY_INFO_T));
-+ p_cpmac_priv->stats = (CPMAC_DRV_STATS_T *)((char *)p_cpmac_priv->device_mib
-+ + sizeof(CPMAC_DEVICE_MIB_T));
-+
-+ p_drv_hal->owner = p_cpmac_priv;
-+
-+
-+ switch(instance_num)
-+ {
-+
-+ case 0:
-+ mac_name="maca";
-+
-+ /* Also setting port information */
-+ p_dev->if_port = AVALANCHE_CPMAC_LOW_PORT_ID;
-+
-+ break;
-+
-+ case 1:
-+ mac_name="macb";
-+
-+ /* Also setting port information */
-+ p_dev->if_port = AVALANCHE_CPMAC_HIGH_PORT_ID;
-+
-+ break;
-+ }
-+
-+ if(mac_name)
-+ mac_string=prom_getenv(mac_name);
-+
-+ if(!mac_string)
-+ {
-+ mac_string="08.00.28.32.06.02";
-+ printk("Error getting mac from Boot enviroment for %s\n",p_dev->name);
-+ printk("Using default mac address: %s\n",mac_string);
-+ if(mac_name)
-+ {
-+ printk("Use Bootloader command:\n");
-+ printk(" setenv %s xx.xx.xx.xx.xx.xx\n","<env_name>");
-+ printk("to set mac address\n");
-+ }
-+ }
-+
-+ str2eaddr(p_cpmac_priv->mac_addr,mac_string);
-+
-+ for (i=0; i <= ETH_ALEN; i++)
-+ {
-+ /* This sets the hardware address */
-+ p_dev->dev_addr[i] = p_cpmac_priv->mac_addr[i];
-+ }
-+
-+ p_cpmac_priv->set_to_close = 1;
-+ p_cpmac_priv->non_data_irq_expected = 0;
-+
-+//#if defined (CONFIG_MIPS_AVALANCHE_LED)
-+// if((p_cpmac_priv->led_handle = avalanche_led_register("cpmac", instance_num)) == NULL)
-+// {
-+// errPrint("Could not allocate handle for CPMAC[%d] LED.\n", instance_num);
-+// goto cpmac_init_mod_error;
-+// }
-+//#endif
-+
-+ if(cpmac_drv_init_module(p_drv_hal, p_dev, instance_num) != 0)
-+ {
-+ errPrint("Could not initialize the HAL for %s.\n", p_dev->name);
-+ goto cpmac_init_mod_error;
-+ }
-+
-+ /* initialize the CPMAC device */
-+ if (cpmac_drv_init(p_drv_hal) == -1)
-+ {
-+ errPrint("HAL init failed for %s.\n", p_dev->name);
-+ goto cpmac_init_device_error;
-+ }
-+
-+ if(cpmac_p_probe_and_setup_device(p_cpmac_priv, &net_flags) == -1)
-+ {
-+ errPrint("Failed to configure up %s.\n", p_dev->name);
-+ goto cpmac_init_device_error;
-+ }
-+
-+ if(cpmac_p_setup_driver_params(p_cpmac_priv) == -1)
-+ {
-+ errPrint("Failed to set driver parameters for %s.\n", p_dev->name);
-+ goto cpmac_init_device_error;
-+ }
-+
-+ cpmac_p_rx_buf_setup(p_rx_chan_info);
-+
-+ /* initialize the timers for the net device */
-+ if(cpmac_p_timer_init(p_cpmac_priv) == -1)
-+ {
-+ errPrint("Failed to set timer(s) for %s.\n", p_dev->name);
-+ goto cpmac_timer_init_error;
-+ }
-+
-+ p_dev->addr_len = 6;
-+
-+ p_dev->open = &cpmac_dev_open; /* i.e. Start Device */
-+ p_dev->hard_start_xmit = &cpmac_dev_tx;
-+ p_dev->stop = &cpmac_dev_close;
-+ p_dev->get_stats = &cpmac_dev_get_net_stats;
-+
-+ p_dev->set_multicast_list = &cpmac_dev_mcast_set;
-+ p_dev->set_mac_address = cpmac_dev_set_mac_addr;
-+ /* Knocking off the default broadcast and multicast flags. Allowing the
-+ device configuration to control the flags. */
-+ p_dev->flags &= ~(IFF_BROADCAST | IFF_MULTICAST);
-+ p_dev->flags |= net_flags;
-+
-+ netif_carrier_off(p_dev);
-+
-+//#if defined (CONFIG_MIPS_AVALANCHE_LED)
-+// avalanche_led_action(p_cpmac_priv->led_handle, CPMAC_LINK_OFF);
-+//#endif
-+
-+ /* Tasklet is initialized at the isr registeration time. */
-+ p_drv_hal->hal_funcs->Control(p_drv_hal->hal_dev, "CpmacBase", "Get", &p_dev->base_addr);
-+ p_drv_hal->hal_funcs->Control(p_drv_hal->hal_dev, "CpmacSize", "Get", &p_cpmac_priv->dev_size);
-+
-+ request_mem_region(p_dev->base_addr, p_cpmac_priv->dev_size, p_dev->name);
-+
-+ retVal = 0;
-+
-+ if(g_init_enable_flag)
-+ cpmac_p_dev_enable(p_dev);
-+
-+ return(retVal);
-+
-+cpmac_timer_init_error:
-+cpmac_init_device_error :
-+ cpmac_drv_cleanup(p_drv_hal);
-+
-+cpmac_init_mod_error:
-+ kfree(p_drv_hal);
-+
-+ return (retVal);
-+
-+} /* cpmac_dev_init */
-+
-+
-+/***************************************************************
-+ * cpmac_p_dev_enable
-+ *
-+ * Returns:
-+ * 0 on success, error code otherwise.
-+ * Parms:
-+ * dev Structure of device to be opened.
-+ *
-+ * This routine puts the driver and CPMAC adapter in a
-+ * state where it is ready to send and receive packets.
-+ *
-+ *
-+ **************************************************************/
-+int cpmac_p_dev_enable( struct net_device *p_dev)
-+{
-+ int ret_val = 0;
-+ int channel = 0;
-+
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+ CPMAC_RX_CHAN_INFO_T *p_rx_chan_info = p_cpmac_priv->rx_chan_info;
-+ int max_length = p_rx_chan_info->chan->tot_buf_size;
-+
-+ p_cpmac_priv->set_to_close = 0;
-+
-+ if((ret_val = cpmac_drv_start(p_drv_hal, p_cpmac_priv->tx_chan_info,
-+ p_cpmac_priv->rx_chan_info, CHAN_SETUP))==-1)
-+ {
-+ errPrint("%s error: failed to start the device.\n", p_dev->name);
-+ ret_val = -1;
-+ }
-+ else if(p_drv_hal->hal_funcs->Control(p_drv_hal->hal_dev,"RX_UNICAST_SET",
-+ "Set", &channel)!=0)
-+ {
-+ errPrint("%s error: device chan 0 could not be enabled.\n", p_dev->name);
-+ ret_val = -1;
-+ }
-+ else if(p_drv_hal->hal_funcs->Control(p_drv_hal->hal_dev, pszRX_MAXLEN, pszSet, &max_length) != 0)
-+ {
-+ errPrint(" CPMAC registers can't be written \n");
-+ ret_val = -1;
-+ }
-+ else if(p_drv_hal->hal_funcs->Control(p_drv_hal->hal_dev, "TxIntDisable", "Set",
-+ &p_cpmac_priv->tx_chan_info->tx_int_disable) != 0)
-+ {
-+ errPrint(" CPMAC registers can't be written \n");
-+ ret_val = -1;
-+ }
-+ else
-+ {
-+ ; // Every thing went OK.
-+ }
-+
-+ return(ret_val);
-+} /* cpmac_dev_enable */
-+
-+
-+static int cpmac_dev_open(struct net_device *p_dev)
-+{
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_ISR_INFO_T *p_isr_cb_param = &p_cpmac_priv->cpmac_isr;
-+
-+ if(!g_init_enable_flag)
-+ cpmac_p_dev_enable(p_dev);
-+
-+ if(request_irq(p_isr_cb_param->intr, cpmac_hal_isr, SA_INTERRUPT,
-+ "Cpmac Driver", p_isr_cb_param))
-+ {
-+ errPrint("Failed to register the irq %d for Cpmac %s.\n",
-+ p_isr_cb_param->intr, p_dev->name);
-+ return (-1);
-+ }
-+
-+ netif_start_queue(p_dev);
-+
-+ MOD_INC_USE_COUNT;
-+ p_cpmac_priv->stats->start_tick = jiffies;
-+ dbgPrint("Started the network queue for %s.\n", p_dev->name);
-+ return(0);
-+}
-+
-+/***************************************************************
-+ * cpmac_p_dev_disable
-+ *
-+ * Returns:
-+ * An error code.
-+ * Parms:
-+ * dev The device structure of the device to
-+ * close.
-+ *
-+ * This function shuts down the adapter.
-+ *
-+ **************************************************************/
-+int cpmac_p_dev_disable(struct net_device *p_dev)
-+{
-+ int ret_val = 0;
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+
-+ set_bit(0, &p_cpmac_priv->set_to_close);
-+ set_bit(0, &p_cpmac_priv->non_data_irq_expected);
-+
-+ /* The driver does not re-schedule the tasklet after kill is called. So, this
-+ should take care of the bug in the kernel. */
-+ tasklet_kill(&p_cpmac_priv->cpmac_isr.tasklet);
-+
-+ if(cpmac_drv_stop(p_drv_hal, p_cpmac_priv->tx_chan_info,
-+ p_cpmac_priv->rx_chan_info,
-+ CHAN_TEARDOWN | FREE_BUFFER | BLOCKING | COMPLETE) == -1)
-+ {
-+ ret_val = -1;
-+ }
-+ else
-+ {
-+ /* hope that the HAL closes down the tick timer.*/
-+
-+ dbgPrint("Device %s Closed.\n", p_dev->name);
-+ p_cpmac_priv->stats->start_tick = jiffies;
-+
-+ p_cpmac_priv->link_speed = 100000000;
-+ p_cpmac_priv->link_mode = 1;
-+ netif_carrier_off(p_dev);
-+
-+//#if defined (CONFIG_MIPS_AVALANCHE_LED)
-+// avalanche_led_action(p_cpmac_priv->led_handle, CPMAC_LINK_OFF);
-+//#endif
-+
-+ clear_bit(0, &p_cpmac_priv->non_data_irq_expected);
-+
-+ }
-+
-+ return (ret_val);
-+
-+} /* cpmac_dev_close */
-+
-+
-+/***************************************************************
-+ * cpmac_dev_close
-+ *
-+ * Returns:
-+ * An error code.
-+ * Parms:
-+ * dev The device structure of the device to
-+ * close.
-+ *
-+ * This function shuts down the adapter.
-+ *
-+ **************************************************************/
-+static int cpmac_dev_close(struct net_device *p_dev)
-+{
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_ISR_INFO_T *p_isr_cb_param = &p_cpmac_priv->cpmac_isr;
-+
-+ /* inform the upper layers. */
-+ netif_stop_queue(p_dev);
-+
-+ if(!g_init_enable_flag)
-+ cpmac_p_dev_disable(p_dev);
-+ else
-+ free_irq(p_isr_cb_param->intr, p_isr_cb_param);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ return(0);
-+}
-+
-+static void cpmac_dev_mcast_set(struct net_device *p_dev)
-+{
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+ CPMAC_ABILITY_INFO_T *p_capability = p_cpmac_priv->ability_info;
-+ HAL_FUNCTIONS *p_hal_funcs = p_drv_hal->hal_funcs;
-+ HAL_DEVICE *p_hal_dev = p_drv_hal->hal_dev;
-+ int val = 1;
-+ int channel = 0;
-+
-+//#if defined (CONFIG_MIPS_AVALANCHE_LED)
-+// if(netif_carrier_ok(p_dev))
-+// avalanche_led_action(p_cpmac_priv->led_handle, CPMAC_LINK_ON);
-+//#endif
-+
-+ if(p_dev->flags & IFF_PROMISC)
-+ {
-+ if(p_capability->promiscous)
-+ {
-+ /* multi mode in the HAL, check this */
-+ val = 0;
-+ p_hal_funcs->Control(p_hal_dev, pszRX_MULTI_ALL, "Clear", &val);
-+
-+ val = 1;
-+ /* set the promiscous mode in the HAL */
-+ p_hal_funcs->Control(p_hal_dev, pszRX_CAF_EN, pszSet, &val);
-+ p_hal_funcs->Control(p_hal_dev, pszRX_PROM_CH, pszSet, &channel);
-+
-+ dbgPrint("%s set in the Promisc mode.\n", p_dev->name);
-+ }
-+ else
-+ {
-+ errPrint("%s not configured for Promisc mode.\n", p_dev->name);
-+ }
-+ }
-+ else if(p_dev->flags & IFF_ALLMULTI)
-+ {
-+ if(p_capability->all_multi)
-+ {
-+ val = 0;
-+ /* disable the promiscous mode in the HAL */
-+ p_hal_funcs->Control(p_hal_dev, pszRX_CAF_EN, "Clear", &val);
-+
-+ val = 1;
-+ /* set the all multi mode in the HAL */
-+ p_hal_funcs->Control(p_hal_dev, pszRX_MULTI_ALL, pszSet, &val);
-+ p_hal_funcs->Control(p_hal_dev, pszRX_MULT_CH, pszSet, &channel);
-+
-+ dbgPrint("%s has been set to the ALL_MULTI mode.\n", p_dev->name);
-+ }
-+ else
-+ {
-+ errPrint("%s not configured for ALL MULTI mode.\n", p_dev->name);
-+ }
-+ }
-+ else if(p_dev->mc_count)
-+ {
-+ if(p_capability->multicast)
-+ {
-+ struct dev_mc_list *p_dmi = p_dev->mc_list;
-+ int count;
-+
-+ val = 0;
-+ /* clear all the previous data, we are going to populate new ones.*/
-+ p_hal_funcs->Control(p_hal_dev, pszRX_MULTI_ALL, "Clear", &val);
-+ /* disable the promiscous mode in the HAL */
-+ p_hal_funcs->Control(p_hal_dev, pszRX_CAF_EN, pszSet, &val);
-+
-+ for(count = 0; count < p_dev->mc_count; count++, p_dmi = p_dmi->next)
-+ {
-+ p_hal_funcs->Control(p_hal_dev, "RX_MULTI_SINGLE", "Set", p_dmi->dmi_addr);
-+ }
-+
-+ dbgPrint("%s configured for %d multicast addresses.\n", p_dev->name, p_dev->mc_count);
-+ }
-+ else
-+ {
-+ errPrint("%s has not been configuted for multicast handling.\n", p_dev->name);
-+ }
-+ }
-+ else
-+ {
-+ val = 0;
-+ /* clear all the previous data, we are going to populate new ones.*/
-+ p_hal_funcs->Control(p_hal_dev, pszRX_MULTI_ALL, "Clear", &val);
-+ /* disable the promiscous mode in the HAL */
-+ p_hal_funcs->Control(p_hal_dev, pszRX_CAF_EN, pszSet, &val);
-+ dbgPrint("Dev set to Unicast mode.\n");
-+ }
-+}
-+
-+static int cpmac_dev_set_mac_addr(struct net_device *p_dev,void * addr)
-+{
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+ HAL_FUNCTIONS *p_hal_funcs = p_drv_hal->hal_funcs;
-+ HAL_DEVICE *p_hal_dev = p_drv_hal->hal_dev;
-+ struct sockaddr *sa = addr;
-+
-+ memcpy(p_cpmac_priv->mac_addr,sa->sa_data,p_dev->addr_len);
-+ memcpy(p_dev->dev_addr,sa->sa_data,p_dev->addr_len);
-+ p_hal_funcs->Control(p_hal_dev, pszMacAddr, pszSet, p_cpmac_priv->mac_addr);
-+
-+ return 0;
-+
-+}
-+
-+/* VLAN is handled by vlan/vconfig support. Here, we just check for the
-+ * 802.1q configuration of the device and en-queue the packet accordingly.
-+ * We do not do any 802.1q processing here.
-+ */
-+static int cpmac_dev_tx( struct sk_buff *skb, struct net_device *p_dev)
-+{
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+ int channel = 0;
-+ int ret_val = 0;
-+ FRAGLIST send_frag_list[1];
-+
-+#ifdef CPMAC_8021Q_SUPPORT
-+ if(skb->len < TCI_END_OFFSET)
-+ {
-+ /* Whee, frame shorter than 14 bytes !! We need to copy
-+ * fragments to understand the frame. Too much work.
-+ * Hmm, dump it. */
-+
-+ /* Free the buffer */
-+ goto cpmac_dev_tx_drop_pkt;
-+ }
-+
-+ /* 802.1p/q stuff */
-+ if(IS_802_1Q_FRAME(skb->data + TPID_START_OFFSET))
-+ {
-+ /* IEEE 802.1q, section 8.8 and section 8.11.9 */
-+ if(!p_cpmac_priv->enable_802_1q)
-+ {
-+ /* free the buffer */
-+ goto cpmac_dev_tx_drop_pkt;
-+ }
-+
-+ channel = GET_802_1P_CHAN(p_cpmac_priv->tx_chan_info->opened_chan,
-+ skb->data[TCI_START_OFFSET]);
-+
-+ }
-+ /* sending a non 802.1q frame, when configured for 802.1q: dump it.*/
-+ else if(p_cpmac_priv->enable_802_1q)
-+ {
-+ /* free the buffer */
-+ goto cpmac_dev_tx_drop_pkt;
-+ }
-+ else
-+ {
-+ ;/* it is the good old non 802.1q */
-+ }
-+#endif
-+
-+ send_frag_list->len = skb->len;
-+ send_frag_list->data = skb->data;
-+
-+#ifdef CPMAC_TEST
-+ xdump(skb->data, skb->len, "send");
-+#endif
-+
-+ dma_cache_wback_inv((unsigned long)skb->data, skb->len);
-+
-+ if(p_drv_hal->hal_funcs->Send(p_drv_hal->hal_dev, send_frag_list, 1,
-+ skb->len, skb, channel) != 0)
-+ {
-+ /* code here to stop the queue, when allowing tx timeout, perhaps next release.*/
-+ p_cpmac_priv->net_dev_stats.tx_errors++;
-+#ifndef TI_SLOW_PATH
-+ /* Free the skb in case of Send return error */
-+ dev_kfree_skb_any(skb);
-+ p_cpmac_priv->net_dev_stats.tx_dropped++;
-+ return 0;
-+#endif
-+ goto cpmac_dev_tx_drop_pkt;
-+ }
-+
-+//#if defined (CONFIG_MIPS_AVALANCHE_LED)
-+// avalanche_led_action(p_cpmac_priv->led_handle, CPMAC_TX_ACTIVITY);
-+//#endif
-+
-+ return(ret_val);
-+
-+cpmac_dev_tx_drop_pkt:
-+
-+ p_cpmac_priv->net_dev_stats.tx_dropped++;
-+ ret_val = -1;
-+ return (ret_val);
-+
-+} /*cpmac_dev_tx */
-+
-+
-+//------------------------------------------------------------------------------
-+// Public functions : Called by outsiders to this file.
-+//------------------------------------------------------------------------------
-+
-+
-+void *cpmac_hal_malloc_buffer(unsigned int size, void* mem_base, unsigned int mem_range,
-+ OS_SETUP *p_os_setup, HAL_RECEIVEINFO *HalReceiveInfo,
-+ OS_RECEIVEINFO **osReceiveInfo, OS_DEVICE *p_dev)
-+{
-+ CPMAC_RX_CHAN_INFO_T *p_rx_chan_info = (CPMAC_RX_CHAN_INFO_T *)p_os_setup;
-+ int tot_buf_size = p_rx_chan_info->chan->tot_buf_size;
-+ int tot_reserve_bytes = p_rx_chan_info->chan->tot_reserve_bytes;
-+ struct sk_buff *p_skb;
-+ void *ret_ptr;
-+
-+ /* use TI SKB private pool */
-+ p_skb = dev_alloc_skb(tot_buf_size);
-+
-+ if(p_skb == NULL)
-+ {
-+ errPrint("Failed to allocate skb for %s.\n", ((struct net_device*)p_dev)->name);
-+ return (NULL);
-+ }
-+
-+ p_skb->dev = p_dev;
-+ skb_reserve(p_skb, tot_reserve_bytes);
-+
-+ *osReceiveInfo = p_skb;
-+
-+ ret_ptr = skb_put(p_skb, p_rx_chan_info->chan->buffer_size);
-+
-+ return(ret_ptr);
-+}
-+
-+void cpmac_hal_isr(int irq, void *p_param, struct pt_regs *regs)
-+{
-+ CPMAC_ISR_INFO_T *p_cb_param = (CPMAC_ISR_INFO_T*) p_param;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cb_param->owner;
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_drv_hal->owner;
-+ int pkts_to_handle = 0;
-+
-+ if(p_cpmac_priv->non_data_irq_expected)
-+ {
-+ p_cb_param->hal_isr(p_drv_hal->hal_dev, &pkts_to_handle);
-+ p_drv_hal->hal_funcs->PacketProcessEnd(p_drv_hal->hal_dev);
-+ }
-+ else if(!p_cpmac_priv->set_to_close)
-+ tasklet_schedule(&((CPMAC_ISR_INFO_T*) p_param)->tasklet);
-+ else
-+ ; // back off from doing anything more. We are closing down.
-+}
-+
-+void cpmac_handle_tasklet(unsigned long data)
-+{
-+ CPMAC_ISR_INFO_T *p_cb_param = (CPMAC_ISR_INFO_T*) data;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cb_param->owner;
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_drv_hal->owner;
-+ int pkts_to_handle;
-+
-+ p_cb_param->hal_isr(p_drv_hal->hal_dev, &pkts_to_handle);
-+
-+ if(test_bit(0, &p_cpmac_priv->non_data_irq_expected) || !pkts_to_handle)
-+ p_drv_hal->hal_funcs->PacketProcessEnd(p_drv_hal->hal_dev);
-+ else if(!test_bit(0, &p_cpmac_priv->set_to_close))
-+ tasklet_schedule(&p_cb_param->tasklet);
-+ else
-+ ; // Back off from processing packets we are closing down.
-+}
-+
-+int cpmac_hal_control(OS_DEVICE *p_dev, const char *key,
-+ const char *action, void *value)
-+{
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ int ret_val = -1;
-+
-+ if(key == NULL)
-+ {
-+ dbgPrint("Encountered NULL key.\n");
-+ return (-1);
-+ }
-+
-+ if(cpmac_ci_strcmp(key, "Sleep") == 0 && value != NULL)
-+ {
-+ unsigned int clocks_per_tick = cpmac_cpu_freq/HZ;
-+ unsigned int requested_clocks = *(unsigned int*)value;
-+ unsigned int requested_ticks = (requested_clocks + clocks_per_tick - 1)/clocks_per_tick;
-+ mdelay(requested_ticks);
-+ ret_val = 0;
-+ }
-+ else if(cpmac_ci_strcmp(key, "StateChange") == 0)
-+ {
-+ ret_val = cpmac_p_process_status_ind(p_cpmac_priv);
-+ }
-+ else if(cpmac_ci_strcmp(key, "Tick") == 0 && action != NULL)
-+ {
-+ if(cpmac_ci_strcmp(action, "Set") == 0 && value != NULL)
-+ {
-+ if(*(unsigned int*)value == 0)
-+ {
-+ cpmac_p_stop_timer(p_cpmac_priv->timer + TICK_TIMER);
-+ ret_val = 0;
-+ }
-+ else
-+ {
-+ unsigned int clocks_per_tick = cpmac_cpu_freq/HZ;
-+ unsigned int requested_clocks = *(unsigned int*)value;
-+ unsigned int requested_ticks = (requested_clocks + clocks_per_tick - 1)/clocks_per_tick;
-+
-+ p_cpmac_priv->delay_ticks = requested_ticks; /* save it for re-triggering */
-+ ret_val = cpmac_p_start_timer(p_cpmac_priv->timer + TICK_TIMER,
-+ p_cpmac_priv->delay_ticks);
-+ }
-+ }
-+ else if(cpmac_ci_strcmp(action, "Clear") == 0)
-+ {
-+ ret_val = cpmac_p_stop_timer(p_cpmac_priv->timer + TICK_TIMER);
-+ }
-+ else
-+ ;
-+ }
-+ else if(cpmac_ci_strcmp(key, "MacAddr") == 0 && action != NULL)
-+ {
-+ if(cpmac_ci_strcmp(action, "Get") == 0 && value != NULL)
-+ {
-+ *(char **)value = p_cpmac_priv->mac_addr;
-+ ret_val = 0;
-+ }
-+ }
-+ else if(cpmac_ci_strcmp(key, "CpuFreq") == 0)
-+ {
-+ if(cpmac_ci_strcmp(action, "Get") == 0 && value != NULL)
-+ {
-+ *(unsigned int *)value = cpmac_cpu_freq;
-+ dbgPrint("Cpu frequency for cpmacs is %u\n",cpmac_cpu_freq);
-+ ret_val = 0;
-+ }
-+ }
-+ else if(cpmac_ci_strcmp(key, "SioFlush") == 0)
-+ {
-+ ret_val = 0;
-+ dbgPrint("\n");
-+ }
-+ else if(cpmac_ci_strcmp(key, "CpmacFrequency") == 0)
-+ {
-+ /* For Sangam cpmac clock is off the PBUS */
-+ /* OS Needs to supply CORRECT frequency */
-+ if(cpmac_ci_strcmp(action, "Get") == 0 && value != NULL)
-+ {
-+ *(unsigned int *)value = CONFIG_AR7_SYS * 1000 * 1000;
-+ ret_val = 0;
-+ }
-+ }
-+ /* For now, providing back the default values. */
-+ else if(cpmac_ci_strcmp(key, "MdioClockFrequency") == 0)
-+ {
-+ if(cpmac_ci_strcmp(action, "Get") == 0 && value != NULL)
-+ {
-+ *(unsigned int *)value = 2200000; /*DEFAULT */
-+ ret_val = 0;
-+ }
-+ }
-+ /* For now, providing back the default values. */
-+ else if(cpmac_ci_strcmp(key, "MdioBusFrequency") == 0)
-+ {
-+ /* For Sangam MdioBusFreq is off the PBUS */
-+ if(cpmac_ci_strcmp(action, "Get") == 0 && value != NULL)
-+ {
-+ *(unsigned int *)value = CONFIG_AR7_SYS * 1000 * 1000;
-+ ret_val = 0;
-+ }
-+ }
-+
-+#if 0
-+#if defined(CONFIG_AVALANCHE_AUTO_MDIX)
-+ /* supporting Mdio Mdix switching */
-+ else if(cpmac_ci_strcmp(key, hcMdioMdixSwitch) == 0)
-+ {
-+ /* For Sangam Mdio-switching action should be always "set"*/
-+ if(cpmac_ci_strcmp(action, hcSet) == 0 && value != NULL )
-+ {
-+ unsigned int mdix = *((unsigned int *) value) ;
-+
-+ if(mdix)
-+ avalanche_set_phy_into_mdix_mode();
-+
-+ else
-+ avalanche_set_phy_into_mdi_mode();
-+
-+ ret_val = 0;
-+ }
-+
-+ }
-+#endif
-+#endif
-+ else if(cpmac_ci_strcmp(key, hcMdioMdixSwitch) == 0)
-+ {
-+ /* For Sangam Mdio-switching action should be always "set"*/
-+ if(cpmac_ci_strcmp(action, hcSet) == 0 && value != NULL )
-+ {
-+ unsigned int mdix = *((unsigned int *) value) ;
-+
-+#ifdef CONFIG_AR7_MDIX
-+ avalanche_set_mdix_on_chip(0xa8610000 , mdix ? 1: 0);
-+#endif
-+
-+ ret_val = 0;
-+ }
-+
-+ }
-+
-+ return(ret_val);
-+}
-+
-+
-+int cpmac_hal_receive(OS_DEVICE *p_dev, FRAGLIST *fragList,
-+ unsigned int fragCount,
-+ unsigned int packet_size,
-+ HAL_RECEIVEINFO *hal_receive_info,
-+ unsigned int mode)
-+{
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+ struct sk_buff *p_skb = fragList[0].OsInfo;
-+ p_skb->len = fragList[0].len;
-+
-+ /* invalidate the cache. */
-+ dma_cache_inv((unsigned long)p_skb->data, fragList[0].len);
-+#ifdef CPMAC_TEST
-+ xdump(p_skb->data, p_skb->len, "recv");
-+#endif
-+#ifdef CPMAC_8021Q_SUPPORT
-+ /* 802.1q stuff, just does the basic checking here. */
-+ if(!p_cpmac_priv->enable_802_1q &&
-+ p_skb->len > TCI_END_OFFSET &&
-+ IS_802_1Q_FRAME(p_skb->data + TPID_START_OFFSET))
-+ {
-+ goto cpmac_hal_recv_frame_mismatch;
-+ }
-+#endif
-+ if(fragCount > 1)
-+ {
-+ int len;
-+ struct sk_buff *p_temp_skb;
-+ CPMAC_RX_CHAN_INFO_T *p_rx_chan_info = p_cpmac_priv->rx_chan_info;
-+ int count;
-+
-+ dbgPrint("Recv: It is multifragment for %s.\n", p_dev->name);
-+
-+ p_skb = dev_alloc_skb(packet_size +
-+ p_rx_chan_info->chan->tot_reserve_bytes);
-+ if(p_skb == NULL)
-+ {
-+ p_cpmac_priv->net_dev_stats.rx_errors++;
-+ goto cpmac_hal_recv_alloc_failed;
-+ }
-+
-+ p_skb->dev = p_dev;
-+ skb_reserve(p_skb, p_rx_chan_info->chan->tot_reserve_bytes);
-+
-+ for(count = 0; count < fragCount; count++)
-+ {
-+ p_temp_skb = fragList[count].OsInfo;
-+ len = fragList[count].len;
-+
-+ dma_cache_inv((unsigned long)p_temp_skb->data, len);
-+
-+ memcpy(skb_put(p_skb, len), p_temp_skb->data, len);
-+ dev_kfree_skb_any(p_temp_skb);
-+ }
-+ }
-+
-+
-+#if defined(CONFIG_MIPS_AVALANCHE_MARVELL)
-+ /* Fetch the receiving port information from EGRESS TRAILOR Bytes*/
-+ p_dev->if_port = (unsigned char)p_skb->data[packet_size -(EGRESS_TRAILOR_LEN-1)] + AVALANCHE_MARVELL_BASE_PORT_ID;
-+ skb_trim(p_skb, packet_size - EGRESS_TRAILOR_LEN);
-+#else
-+ /* set length & tail */
-+ skb_trim(p_skb, packet_size);
-+#endif
-+
-+ p_skb->protocol = eth_type_trans(p_skb, p_dev);
-+
-+ netif_rx(p_skb);
-+
-+//#if defined (CONFIG_MIPS_AVALANCHE_LED)
-+// avalanche_led_action(p_cpmac_priv->led_handle, CPMAC_RX_ACTIVITY);
-+//#endif
-+
-+ p_cpmac_priv->net_dev_stats.rx_packets++;
-+ p_cpmac_priv->net_dev_stats.rx_bytes += packet_size;
-+
-+ p_drv_hal->hal_funcs->RxReturn(hal_receive_info,1);
-+
-+ return(0);
-+
-+cpmac_hal_recv_alloc_failed:
-+
-+#ifdef CPMAC_8021Q_SUPPORT
-+cpmac_hal_recv_frame_mismatch:
-+#endif
-+
-+ fragCount--;
-+
-+ do
-+ {
-+ dev_kfree_skb_any(fragList[fragCount].OsInfo);
-+ }
-+ while(fragCount--);
-+
-+ p_cpmac_priv->net_dev_stats.rx_dropped++;
-+
-+ return(-1);
-+} /*cpmac_receive*/
-+
-+
-+void cpmac_hal_tear_down_complete(OS_DEVICE*a, int b, int ch)
-+{
-+ dbgPrint("what to do with this.\n");
-+}
-+
-+
-+int cpmac_hal_send_complete(OS_SENDINFO *p_skb)
-+{
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_skb->dev->priv;
-+
-+ p_cpmac_priv->net_dev_stats.tx_packets++;
-+ p_cpmac_priv->net_dev_stats.tx_bytes += p_skb->len;
-+
-+ dev_kfree_skb_any(p_skb);
-+
-+ return(0);
-+}
-+
-+
-+int cpmac_reset(CPMAC_PRIVATE_INFO_T *p_cpmac_priv)
-+{
-+ // code here to reset the device/hal. Not now.
-+
-+ netif_wake_queue(p_cpmac_priv->owner);
-+ return(0);
-+}
-+
-+#ifdef CPMAC_TEST
-+
-+#define isprint(a) ((a >=' ')&&(a<= '~'))
-+void xdump( u_char* cp, int length, char* prefix )
-+{
-+ int col, count;
-+ u_char prntBuf[120];
-+ u_char* pBuf = prntBuf;
-+ count = 0;
-+ while(count < length){
-+ pBuf += sprintf( pBuf, "%s", prefix );
-+ for(col = 0;count + col < length && col < 16; col++){
-+ if (col != 0 && (col % 4) == 0)
-+ pBuf += sprintf( pBuf, " " );
-+ pBuf += sprintf( pBuf, "%02X ", cp[count + col] );
-+ }
-+ while(col++ < 16){ /* pad end of buffer with blanks */
-+ if ((col % 4) == 0)
-+ sprintf( pBuf, " " );
-+ pBuf += sprintf( pBuf, " " );
-+ }
-+ pBuf += sprintf( pBuf, " " );
-+ for(col = 0;count + col < length && col < 16; col++){
-+ if (isprint((int)cp[count + col]))
-+ pBuf += sprintf( pBuf, "%c", cp[count + col] );
-+ else
-+ pBuf += sprintf( pBuf, "." );
-+ }
-+ sprintf( pBuf, "\n" );
-+ // SPrint(prntBuf);
-+ printk(prntBuf);
-+ count += col;
-+ pBuf = prntBuf;
-+ }
-+
-+} /* close xdump(... */
-+#endif
-+
-+
-+static int __init cpmac_dev_probe(void)
-+{
-+ int retVal = 0;
-+ int unit;
-+ int instance_count = CONFIG_MIPS_CPMAC_PORTS;
-+
-+ //cpmac_cpu_freq = avalanche_clkc_get_freq(CLKC_MIPS);
-+ cpmac_cpu_freq = CONFIG_AR7_CPU * 1000 * 1000;
-+
-+ build_psp_config();
-+
-+ for(unit = 0; unit < instance_count; unit++)
-+ {
-+ struct net_device *p_dev;
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv;
-+ size_t dev_size;
-+ int failed;
-+
-+ dev_size = sizeof(struct net_device)
-+ + sizeof(CPMAC_PRIVATE_INFO_T);
-+
-+
-+ if((p_dev = (struct net_device *) kmalloc(dev_size, GFP_KERNEL)) == NULL)
-+ {
-+ dbgPrint( "Could not allocate memory for device.\n" );
-+ retVal = -ENOMEM;
-+ break;
-+ }
-+
-+ memset(p_dev, 0, dev_size );
-+
-+ p_dev->priv = p_cpmac_priv
-+ = (CPMAC_PRIVATE_INFO_T*)(((char *) p_dev) + sizeof(struct net_device));
-+ p_cpmac_priv->owner = p_dev;
-+
-+ ether_setup(p_dev);
-+
-+ p_cpmac_priv->instance_num = unit;
-+ p_dev->init = cpmac_dev_init;
-+
-+ g_dev_array[p_cpmac_priv->instance_num] = p_dev;
-+
-+#if defined CONFIG_MIPS_CPMAC_INIT_BUF_MALLOC
-+ g_init_enable_flag = 1;
-+ printk("Cpmac driver is allocating buffer memory at init time.\n");
-+#endif
-+
-+ /* This section gives a default value by the number of PHY in order to
-+ * replace the default MACRO. */
-+ {
-+ char *mac_port = prom_getenv("MAC_PORT"); /* Internal: 0, External: 1 */
-+ if(!mac_port || (0 != strcmp(mac_port, "0"))) {
-+ printk("Using the MAC with external PHY\n");
-+ cfg_start_link_speed = _CPMDIO_NOPHY;
-+ cpmac_max_frame_size = CPMAC_MAX_FRAME_SIZE + 4;
-+ }
-+ else {
-+ printk("Using the MAC with internal PHY\n");
-+ cfg_start_link_speed = CFG_START_LINK_SPEED;
-+ cpmac_max_frame_size = CPMAC_MAX_FRAME_SIZE;
-+ }
-+ g_cfg_start_link_params = cfg_start_link_speed;
-+ }
-+
-+ cpmac_p_detect_manual_cfg(cfg_link_speed, cfg_link_mode, cpmac_debug_mode);
-+
-+ failed = register_netdev(p_dev);
-+ if (failed)
-+ {
-+ dbgPrint("Could not register device for inst %d because of reason \
-+ code %d.\n", unit, failed);
-+ retVal = -1;
-+ kfree(p_dev);
-+ break;
-+ }
-+ else
-+ {
-+
-+ char proc_name[100];
-+ int proc_category_name_len = 0;
-+
-+ p_cpmac_priv->next_device = last_cpmac_device;
-+ last_cpmac_device = p_dev;
-+
-+ dbgPrint(" %s irq=%2d io=%04x\n",p_dev->name, (int) p_dev->irq,
-+ (int) p_dev->base_addr);
-+
-+ strcpy(proc_name, "avalanche/");
-+ strcat(proc_name, p_dev->name);
-+ proc_category_name_len = strlen(proc_name);
-+
-+ strcpy(proc_name + proc_category_name_len, "_rfc2665_stats");
-+ create_proc_read_entry(proc_name,0,NULL,cpmac_p_read_rfc2665_stats, p_dev);
-+
-+ }
-+ }
-+
-+ if(retVal == 0)
-+ {
-+ /* To maintain backward compatibility with NSP. */
-+ gp_stats_file = create_proc_entry("avalanche/cpmac_stats", 0644, NULL);
-+ if(gp_stats_file)
-+ {
-+ gp_stats_file->read_proc = cpmac_p_read_stats;
-+ gp_stats_file->write_proc = cpmac_p_write_stats;
-+ }
-+ create_proc_read_entry("avalanche/cpmac_link", 0, NULL, cpmac_p_read_link, NULL);
-+ create_proc_read_entry("avalanche/cpmac_ver", 0, NULL, cpmac_p_get_version, NULL);
-+
-+ }
-+
-+ cpmac_devices_installed = unit;
-+ dbgPrint("Installed %d cpmac instances.\n", unit);
-+ return ( (unit >= 0 ) ? 0 : -ENODEV );
-+
-+} /* init_module */
-+
-+
-+/***************************************************************
-+ * cleanup_module
-+ *
-+ * Returns:
-+ * Nothing
-+ * Parms:
-+ * None
-+ *
-+ * Goes through the CpmacDevices list and frees the device
-+ * structs and memory associated with each device (lists
-+ * and buffers). It also ureserves the IO port regions
-+ * associated with this device.
-+ *
-+ **************************************************************/
-+
-+void cpmac_exit(void)
-+{
-+ struct net_device *p_dev;
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv;
-+
-+ while (cpmac_devices_installed)
-+ {
-+ char proc_name[100];
-+ int proc_category_name_len = 0;
-+
-+ p_dev = last_cpmac_device;
-+ p_cpmac_priv = (CPMAC_PRIVATE_INFO_T *) p_dev->priv;
-+
-+ dbgPrint("Unloading %s irq=%2d io=%04x\n",p_dev->name, (int) p_dev->irq, (int) p_dev->base_addr);
-+
-+ if(g_init_enable_flag)
-+ cpmac_p_dev_disable(p_dev);
-+
-+ cpmac_drv_cleanup(p_cpmac_priv->drv_hal);
-+
-+//#if defined (CONFIG_MIPS_AVALANCHE_LED)
-+// avalanche_led_unregister(p_cpmac_priv->led_handle);
-+//#endif
-+ strcpy(proc_name, "avalanche/");
-+ strcat(proc_name, p_dev->name);
-+ proc_category_name_len = strlen(proc_name);
-+
-+ strcpy(proc_name + proc_category_name_len, "_rfc2665_stats");
-+ remove_proc_entry(proc_name, NULL);
-+
-+ release_mem_region(p_dev->base_addr, p_cpmac_priv->dev_size);
-+ unregister_netdev(p_dev);
-+ last_cpmac_device = p_cpmac_priv->next_device;
-+
-+ kfree(p_cpmac_priv->drv_hal);
-+ kfree(p_dev);
-+
-+ cpmac_devices_installed--;
-+ }
-+
-+ if(gp_stats_file)
-+ remove_proc_entry("avalanche/cpmac_stats", NULL);
-+
-+ remove_proc_entry("avalanche/cpmac_link", NULL);
-+ remove_proc_entry("avalanche/cpmac_ver", NULL);
-+
-+ psp_config_cleanup();
-+}
-+
-+
-+module_init(cpmac_dev_probe);
-+module_exit(cpmac_exit);
-diff -urN linux.old/drivers/net/avalanche_cpmac/cpmac.h linux.dev/drivers/net/avalanche_cpmac/cpmac.h
---- linux.old/drivers/net/avalanche_cpmac/cpmac.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/cpmac.h 2005-07-12 02:48:42.043594000 +0200
-@@ -0,0 +1,379 @@
-+/******************************************************************************
-+ * FILE PURPOSE: CPMAC Linux Network Device Driver Header
-+ ******************************************************************************
-+ * FILE NAME: cpmac.h
-+ *
-+ * DESCRIPTION: CPMAC Network Device Driver Header
-+ *
-+ * REVISION HISTORY:
-+ * Date Name Details
-+ *-----------------------------------------------------------------------------
-+ * 27 Nov 2002 Suraj S Iyer Initial Create.
-+ * 09 Jun 2003 Suraj S Iyer Preparing for GA.
-+ *
-+ * (C) Copyright 2003, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+#ifndef CPMAC_H
-+#define CPMAC_H
-+
-+#include <linux/timer.h>
-+#include <linux/netdevice.h>
-+#include <asm/semaphore.h>
-+#include <linux/ctype.h>
-+#include <linux/interrupt.h>
-+
-+#include "cpmacHalLx.h"
-+/*-----------------------------------------------------------------------------
-+ * Config macros. Use these to config the driver.
-+ *---------------------------------------------------------------------------*/
-+#define CPMAC_MAX_FRAME_SIZE 1518
-+
-+#if defined(CONFIG_AR7WRD) || defined(CONFIG_AR7WI) || defined(CONFIG_AR7VWI)|| defined(CONFIG_AR7VW)
-+#define CFG_RX_NUM_BUF_DESC 64
-+#define CFG_RX_NUM_BUF_SERVICE 32
-+#else
-+#define CFG_RX_NUM_BUF_DESC 16
-+#define CFG_RX_NUM_BUF_SERVICE 8
-+#endif
-+
-+#define CFG_RX_BUF_OFFSET 0
-+
-+#define CFG_TX_NUM_BUF_DESC 128
-+#define CFG_TX_NUM_BUF_SERVICE 20
-+#define CFG_TX_BUF_OFFSET 0 /* Lets not change this. */
-+#define CFG_TX_TIMEOUT 2000 /* ticks*/
-+#define CFG_TX_INT_DISABLE 1 /* Disable the Tx Complete interrupt */
-+
-+#define CFG_JUMBO_FRAMES 1
-+#define CFG_SHORT_FRAMES 1
-+#define CFG_PROMISCOUS 1
-+#define CFG_BROADCAST 1
-+#define CFG_MULTICAST 1
-+#define CFG_ALL_MULTI (1*(CFG_MULTICAST))
-+#define CFG_AUTO_NEGOTIATION 1
-+
-+#if defined (CONFIG_MIPS_AVALANCHE_MARVELL)
-+#define EGRESS_TRAILOR_LEN 4
-+#define CFG_START_LINK_SPEED (_CPMDIO_NOPHY)
-+#undef CPMAC_MAX_FRAME_SIZE
-+#define CPMAC_MAX_FRAME_SIZE (1518 + EGRESS_TRAILOR_LEN)
-+#else
-+#define CFG_START_LINK_SPEED (_CPMDIO_10 | _CPMDIO_100 | _CPMDIO_HD | _CPMDIO_FD) /* auto nego */
-+#endif
-+
-+#define CFG_LOOP_BACK 1
-+#define CFG_TX_FLOW_CNTL 0
-+#define CFG_RX_FLOW_CNTL 0
-+#define CFG_TX_PACING 0
-+#define CFG_RX_PASS_CRC 0
-+#define CFG_QOS_802_1Q 0
-+#define CFG_TX_NUM_CHAN 1
-+
-+
-+/*-----------------------------------------------------------------------------
-+ * Private macros.
-+ *---------------------------------------------------------------------------*/
-+#define MAX_TIMER 2
-+#define TX_TIMER 0
-+#define TICK_TIMER 0
-+#define MAX_TX_CHAN 8
-+
-+#define CPMAC_LINK_OFF 0
-+#define CPMAC_LINK_ON 1
-+/*#define CPMAC_SPEED_100 2
-+#define CPMAC_SPEED_10 3
-+#define CPMAC_FULL_DPLX 4
-+#define CPMAC_HALF_DPLX 5*/
-+#define CPMAC_RX_ACTIVITY 2
-+#define CPMAC_TX_ACTIVITY 3
-+
-+struct cpmac_timer_info;
-+
-+typedef int (*CPMAC_HAL_ISR_FUNC_T)(HAL_DEVICE*, int*);
-+typedef int (*CPMAC_TIMEOUT_CB_T)(struct cpmac_timer_info*);
-+
-+typedef struct cpmac_ability_info
-+{
-+ int promiscous;
-+ int broadcast;
-+ int multicast;
-+ int all_multi;
-+ int loop_back;
-+ int jumbo_frames;
-+ int short_frames;
-+ int auto_negotiation;
-+ int tx_flow_control;
-+ int rx_flow_control;
-+ int tx_pacing;
-+ int link_speed;
-+ int rx_pass_crc;
-+ int qos_802_1q;
-+ int tx_num_chan;
-+}
-+CPMAC_ABILITY_INFO_T;
-+
-+#ifdef DEBUG
-+typedef struct cpmac_timer_info
-+{
-+ void *owner;
-+ UINT32 delay_ticks;
-+ WDOG_ID timer_id;
-+ UINT32 is_running;
-+ UINT32 timer_set_at;
-+ CPMAC_TIMEOUT_CB_T timeout_CB;
-+} CPMAC_TIMER_INFO_T;
-+
-+typedef struct
-+{
-+ void *owner;
-+ unsigned int num_cl_desc;
-+ CL_DESC *cl_desc_tbl;
-+ M_CL_CONFIG *m_cl_blk_config;
-+ NET_POOL *net_pool;
-+ CL_POOL_ID clPoolId;
-+
-+} CPMAC_NET_MEM_INFO_T;
-+
-+#endif
-+
-+typedef struct
-+{
-+ void *owner;
-+ CPMAC_HAL_ISR_FUNC_T hal_isr;
-+ struct tasklet_struct tasklet;
-+ int intr;
-+
-+} CPMAC_ISR_INFO_T;
-+
-+typedef struct cpmac_chan
-+{
-+ int num_BD;
-+ int buffer_size;
-+ int buffer_offset;
-+ int service_max;
-+ int state;
-+ int tot_buf_size;
-+ int tot_reserve_bytes;
-+
-+} CPMAC_CHAN_T;
-+
-+#define CHAN_CLOSE 0
-+#define CHAN_OPENED 1
-+
-+typedef struct
-+{
-+ int cfg_chan;
-+ int dev_chan;
-+ int opened_chan;
-+ CPMAC_CHAN_T chan[1];
-+ int enable_802_1q;
-+
-+} CPMAC_RX_CHAN_INFO_T;
-+
-+typedef struct
-+{
-+ int cfg_chan;
-+ int dev_chan;
-+ int opened_chan;
-+ int tx_int_disable;
-+ CPMAC_CHAN_T chan[MAX_TX_CHAN];
-+
-+} CPMAC_TX_CHAN_INFO_T;
-+
-+
-+
-+typedef struct
-+{
-+ void *owner;
-+ HAL_FUNCTIONS *hal_funcs;
-+ HAL_DEVICE *hal_dev;
-+ OS_FUNCTIONS *os_funcs;
-+// SEM_ID chan_teardown_sem;
-+ int non_data_irq_expected;
-+} CPMAC_DRV_HAL_INFO_T;
-+
-+
-+typedef struct
-+{
-+ unsigned long tx_discards;
-+ unsigned long rx_discards;
-+ unsigned long start_tick;
-+
-+} CPMAC_DRV_STATS_T;
-+
-+typedef struct
-+{
-+ unsigned long ifInGoodFrames;
-+ unsigned long ifInBroadcasts;
-+ unsigned long ifInMulticasts;
-+ unsigned long ifInPauseFrames;
-+ unsigned long ifInCRCErrors;
-+ unsigned long ifInAlignCodeErrors;
-+ unsigned long ifInOversizedFrames;
-+ unsigned long ifInJabberFrames;
-+ unsigned long ifInUndersizedFrames;
-+ unsigned long ifInFragments;
-+ unsigned long ifInFilteredFrames;
-+ unsigned long ifInQosFilteredFrames;
-+ unsigned long ifInOctets;
-+ unsigned long ifOutGoodFrames;
-+ unsigned long ifOutBroadcasts;
-+ unsigned long ifOutMulticasts;
-+ unsigned long ifOutPauseFrames;
-+ unsigned long ifDeferredTransmissions;
-+ unsigned long ifCollisionFrames;
-+ unsigned long ifSingleCollisionFrames;
-+ unsigned long ifMultipleCollisionFrames;
-+ unsigned long ifExcessiveCollisionFrames;
-+ unsigned long ifLateCollisions;
-+ unsigned long ifOutUnderrun;
-+ unsigned long ifCarrierSenseErrors;
-+ unsigned long ifOutOctets;
-+ unsigned long if64OctetFrames;
-+ unsigned long if65To127OctetFrames;
-+ unsigned long if128To255OctetFrames;
-+ unsigned long if256To511OctetFrames;
-+ unsigned long if512To1023OctetFrames;
-+ unsigned long if1024ToUPOctetFrames;
-+ unsigned long ifNetOctets;
-+ unsigned long ifRxSofOverruns;
-+ unsigned long ifRxMofOverruns;
-+ unsigned long ifRxDMAOverruns;
-+
-+} CPMAC_DEVICE_MIB_T;
-+
-+
-+typedef struct
-+{
-+ void *owner;
-+ int timer_count;
-+ int timer_created;
-+ struct timer_list timer[1];
-+ CPMAC_DRV_HAL_INFO_T *drv_hal;
-+ unsigned int num_of_intr;
-+ CPMAC_ISR_INFO_T cpmac_isr;
-+ unsigned int link_speed;
-+ unsigned int link_mode;
-+ unsigned int enable_802_1q;
-+ unsigned int timer_access_hal;
-+ unsigned int loop_back;
-+ CPMAC_RX_CHAN_INFO_T *rx_chan_info;
-+ CPMAC_TX_CHAN_INFO_T *tx_chan_info;
-+ CPMAC_ABILITY_INFO_T *ability_info;
-+ CPMAC_DEVICE_MIB_T *device_mib;
-+ CPMAC_DRV_STATS_T *stats;
-+ unsigned int flags;
-+ unsigned int delay_ticks;
-+ char mac_addr[6];
-+ struct net_device_stats net_dev_stats;
-+// rwlock_t rw_lock;
-+ int set_to_close;
-+ struct net_device *next_device;
-+ unsigned int instance_num;
-+ unsigned int non_data_irq_expected;
-+ unsigned long dev_size;
-+ void* led_handle;
-+} CPMAC_PRIVATE_INFO_T;
-+
-+
-+/* Private flags */
-+
-+/* bit 0 to 31, bit 32 is used to indicate set or reset */
-+
-+#define IFF_PRIV_SHORT_FRAMES 0x00010000
-+#define IFF_PRIV_JUMBO_FRAMES 0x00020000
-+#define IFF_PRIV_AUTOSPEED 0x00080000
-+#define IFF_PRIV_LINK10_HD 0x00100000
-+#define IFF_PRIV_LINK10_FD 0x00200000
-+#define IFF_PRIV_LINK100_HD 0x00400000
-+#define IFF_PRIV_LINK100_FD 0x00800000
-+#define IFF_PRIV_8021Q_EN 0x01000000
-+#define IFF_PRIV_NUM_TX_CHAN 0x02000000
-+#define IFF_PRIV_TX_FLOW_CNTL 0x04000000
-+#define IFF_PRIV_RX_FLOW_CNTL 0x08000000
-+#define IFF_PRIV_TX_PACING 0x10000000
-+#define IFF_PRIV_RX_PASS_CRC 0x20000000
-+
-+#define PRIVCSFLAGS 0x200
-+#define PRIVCGFLAGS 0x201
-+
-+
-+#define BLOCKING 1
-+#define CHAN_TEARDOWN 2
-+#define CHAN_SETUP 4
-+#define COMPLETE 8
-+#define FREE_BUFFER 16
-+
-+
-+static const char pszStats0[] = "Stats0";
-+static const char pszStats1[] = "Stats1";
-+static const char pszStats2[] = "Stats2";
-+static const char pszStats3[] = "Stats3";
-+static const char pszStats4[] = "Stats4";
-+static const char pszStatsDump[] = "StatsDump";
-+static const char pszStatsClear[] = "StatsClear";
-+static const char pszRX_PASS_CRC[] = "RX_PASS_CRC";
-+static const char pszRX_QOS_EN[] = "RX_QOS_EN";
-+static const char pszRX_NO_CHAIN[] = "RX_NO_CHAIN";
-+static const char pszRX_CMF_EN[] = "RX_CMF_EN";
-+static const char pszRX_CSF_EN[] = "RX_CSF_EN";
-+static const char pszRX_CEF_EN[] = "RX_CEF_EN";
-+static const char pszRX_CAF_EN[] = "RX_CAF_EN";
-+static const char pszRX_PROM_CH[] = "RX_PROM_CH";
-+static const char pszRX_BROAD_EN[] = "RX_BROAD_EN";
-+static const char pszRX_BROAD_CH[] = "RX_BROAD_CH";
-+static const char pszRX_MULT_EN[] = "RX_MULT_EN";
-+static const char pszRX_MULT_CH[] = "RX_MULT_CH";
-+static const char pszTX_PTYPE[] = "TX_PTYPE";
-+static const char pszTX_PACE[] = "TX_PACE";
-+static const char pszMII_EN[] = "MII_EN";
-+static const char pszTX_FLOW_EN[] = "TX_FLOW_EN";
-+static const char pszRX_FLOW_EN[] = "RX_FLOW_EN";
-+static const char pszRX_MAXLEN[] = "RX_MAXLEN";
-+static const char pszRX_FILTERLOWTHRESH[] = "RX_FILTERLOWTHRESH";
-+static const char pszRX0_FLOWTHRESH[] = "RX0_FLOWTHRESH";
-+static const char pszRX_UNICAST_SET[] = "RX_UNICAST_SET";
-+static const char pszRX_UNICAST_CLEAR[] = "RX_UNICAST_CLEAR";
-+static const char pszMdioConnect[] = "MdioConnect";
-+static const char pszMacAddr[] = "MacAddr";
-+static const char pszTick[] = "Tick";
-+static const char pszRX_MULTICAST[] = "RX_MULTICAST";
-+static const char pszRX_MULTI_ALL[] = "RX_MULTI_ALL";
-+static const char pszRX_MULTI_SINGLE[] = "RX_MULTI_SINGLE";
-+
-+static const char pszSet[] = "Set";
-+static const char pszGet[] = "Get";
-+static const char pszClear[] = "Clear";
-+
-+
-+void *cpmac_hal_malloc_buffer(unsigned int size, void *MemBase, unsigned int MemRange,
-+ HAL_DEVICE *HalDev, HAL_RECEIVEINFO *HalReceiveInfo,
-+ OS_RECEIVEINFO **OsReceiveInfo, OS_DEVICE *OsDev);
-+
-+void cpmac_hal_tear_down_complete(OS_DEVICE*, int, int);
-+int cpmac_hal_control(OS_DEVICE *p_END_obj, const char *key,
-+ const char *action, void *value);
-+int cpmac_hal_receive(OS_DEVICE *p_END_obj, FRAGLIST *fragList,
-+ unsigned int FragCount, unsigned int pkt_len,
-+ HAL_RECEIVEINFO *halReceiveInfo,
-+ unsigned int mode);
-+int cpmac_hal_send_complete(OS_SENDINFO*);
-+
-+void cpmac_hal_isr(int irq, void *p_param, struct pt_regs *p_cb_param);
-+void cpmac_handle_tasklet(unsigned long data);
-+
-+inline static int cpmac_ci_strcmp(const char *s1, const char *s2)
-+{
-+ while(*s1 && *s2)
-+ {
-+ if(tolower(*s1) != tolower(*s2))
-+ break;
-+ s1++;
-+ s2++;
-+ }
-+
-+ return(tolower(*s1) - tolower(*s2));
-+}
-+
-+#endif
-diff -urN linux.old/drivers/net/avalanche_cpmac/cpmacHalLx.c linux.dev/drivers/net/avalanche_cpmac/cpmacHalLx.c
---- linux.old/drivers/net/avalanche_cpmac/cpmacHalLx.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/cpmacHalLx.c 2005-07-12 02:48:42.044593000 +0200
-@@ -0,0 +1,492 @@
-+/******************************************************************************
-+ * FILE PURPOSE: CPMAC Net Driver HAL support Source
-+ ******************************************************************************
-+ * FILE NAME: cpmacHalLx.c
-+ *
-+ * DESCRIPTION: CPMAC Network Device Driver Source
-+ *
-+ * REVISION HISTORY:
-+ *
-+ * Date Description Author
-+ *-----------------------------------------------------------------------------
-+ * 27 Nov 2002 Initial Creation Suraj S Iyer
-+ * 09 Jun 2003 Updates for GA Suraj S Iyer
-+ * 18 Dec 2003 Updated for 5.7 Suraj S Iyer
-+ *
-+ * (C) Copyright 2003, Texas Instruments, Inc
-+ *******************************************************************************/
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/delay.h>
-+#include <linux/spinlock.h>
-+#include <linux/proc_fs.h>
-+#include <asm/io.h>
-+#include <linux/string.h>
-+
-+#include <asm/ar7/avalanche_intc.h>
-+
-+#include "cpmacHalLx.h"
-+#include "cpmac.h"
-+
-+/* PSP config headers */
-+#include "psp_config_parse.h"
-+#include "psp_config_mgr.h"
-+
-+/* debug */
-+extern int cpmac_debug_mode;
-+#define dbgPrint if (cpmac_debug_mode) printk
-+#define errPrint printk
-+
-+char CpmacSignature[] = "Cpmac driver";
-+static unsigned long irq_flags = 0;
-+OS_SETUP *p_os_setup = NULL;
-+
-+extern int avalanche_request_intr_pacing(int, unsigned int, unsigned int);
-+extern int avalanche_free_intr_pacing(unsigned int blk_num);
-+
-+/*----------------------------------------------------------------------------
-+ * Parameter extracting functionalities.
-+ *--------------------------------------------------------------------------*/
-+static int os_find_parm_u_int(void *info_ptr, const char *param, unsigned int *val)
-+{
-+ int ret_val = 0;
-+
-+ if((ret_val = psp_config_get_param_uint(info_ptr, param, val)) == -1)
-+ {
-+ dbgPrint("Error: could not locate the requested \"%s\" param.\n",param);
-+ ret_val = -1;
-+ }
-+
-+ return(ret_val);
-+}
-+
-+static int os_find_parm_val(void *info_ptr, const char *param, void *val)
-+{
-+ int ret_val = 0;
-+
-+ if(psp_config_get_param_string(info_ptr, param, val) == -1)
-+ {
-+ dbgPrint("Error: could not locate the requested \"%s\" param.\n",param);
-+ ret_val = -1;
-+ }
-+
-+ return(ret_val);
-+}
-+
-+static int os_find_device(int unit, const char *find_name, void *device_info)
-+{
-+ int ret_val = 0;
-+
-+ if(psp_config_get((char *)find_name, unit, device_info) == -1)
-+ {
-+ dbgPrint("Error: could not locate the requested \"%s\" param.\n", find_name);
-+ ret_val = -1;
-+ }
-+
-+ return(ret_val);
-+}
-+
-+/*---------------------------------------------------------------------------
-+ * Memory related OS abstraction.
-+ *--------------------------------------------------------------------------*/
-+void os_free(void *mem_ptr)
-+{
-+ kfree(mem_ptr);
-+}
-+
-+void os_free_buffer(OS_RECEIVEINFO *osReceiveInfo, void *mem_ptr)
-+{
-+ dev_kfree_skb_any(osReceiveInfo);
-+}
-+
-+void os_free_dev(void *mem_ptr)
-+{
-+ kfree(mem_ptr);
-+}
-+
-+void os_free_dma_xfer(void *mem_ptr)
-+{
-+ kfree(mem_ptr);
-+}
-+
-+static void *os_malloc(unsigned int size)
-+{
-+ return(kmalloc(size, GFP_KERNEL));
-+}
-+
-+static void *os_malloc_dma_xfer(unsigned int size,
-+ void *mem_base,
-+ unsigned int mem_range)
-+{
-+ return(kmalloc(size, GFP_KERNEL));
-+}
-+
-+static void *os_malloc_dev(unsigned int size)
-+{
-+ return(kmalloc(size, GFP_KERNEL));
-+}
-+
-+
-+/*----------------------------------------------------------------------------
-+ * CRITICAL SECTION ENABLING/DISABLING.
-+ *--------------------------------------------------------------------------*/
-+static void os_critical_on(void)
-+{
-+ save_and_cli(irq_flags);
-+}
-+
-+static void os_critical_off(void)
-+{
-+ restore_flags(irq_flags);
-+}
-+
-+/*----------------------------------------------------------------------------
-+ * Cache related abstraction
-+ *--------------------------------------------------------------------------*/
-+static void os_cache_invalidate(void *mem_ptr, int size)
-+{
-+ dma_cache_inv((unsigned long)mem_ptr, size);
-+}
-+
-+static void os_cache_writeback(void *mem_ptr, int size)
-+{
-+ dma_cache_wback_inv((unsigned long)mem_ptr, size);
-+}
-+
-+/*-----------------------------------------------------------------------------
-+ * Support functions.
-+ *---------------------------------------------------------------------------*/
-+
-+static void hal_drv_unregister_isr(OS_DEVICE *p_dev, int intr)
-+{
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_ISR_INFO_T *p_isr_cb_param = &p_cpmac_priv->cpmac_isr;
-+ intr = LNXINTNUM(intr);
-+
-+ free_irq(p_isr_cb_param->intr, p_isr_cb_param);
-+
-+ dbgPrint("cpmac_hal_unregister called for the intr %d for unit %x and isr_cb_param %x.\n",
-+ intr, p_cpmac_priv->instance_num, (unsigned int )&p_cpmac_priv->cpmac_isr);
-+}
-+
-+
-+static void hal_drv_register_isr(OS_DEVICE *p_dev,
-+ CPMAC_HAL_ISR_FUNC_T hal_isr, int intr)
-+{
-+ CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
-+ CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
-+ CPMAC_ISR_INFO_T *p_isr_cb_param = &p_cpmac_priv->cpmac_isr;
-+ intr = LNXINTNUM(intr);
-+
-+ dbgPrint("osRegister called for the intr %d for device %x and p_isr_cb_param %x.\n",
-+ intr, (bit32u)p_dev, (bit32u)p_isr_cb_param);
-+
-+ p_isr_cb_param->owner = p_drv_hal;
-+ p_isr_cb_param->hal_isr = hal_isr;
-+ p_isr_cb_param->intr = intr;
-+
-+ tasklet_init(&p_isr_cb_param->tasklet, cpmac_handle_tasklet, (unsigned long)p_isr_cb_param);
-+ dbgPrint("Success in registering irq %d for Cpmac unit# %d.\n", intr, p_cpmac_priv->instance_num);
-+}
-+
-+/*---------------------------------------------------------------------------
-+ * FUNCTIONS called by the CPMAC Net Device.
-+ *-------------------------------------------------------------------------*/
-+static int load_os_funcs(OS_FUNCTIONS *os_func)
-+{
-+ dbgPrint("os_init_module: Start\n");
-+ if( os_func == 0 )
-+ {
-+ return(sizeof(OS_FUNCTIONS));
-+ }
-+
-+ os_func->Control = cpmac_hal_control;
-+ os_func->CriticalOn = os_critical_on;
-+ os_func->CriticalOff = os_critical_off;
-+ os_func->DataCacheHitInvalidate = os_cache_invalidate;
-+ os_func->DataCacheHitWriteback = os_cache_writeback;
-+ os_func->DeviceFindInfo = os_find_device;
-+ os_func->DeviceFindParmUint = os_find_parm_u_int;
-+ os_func->DeviceFindParmValue= os_find_parm_val;
-+ os_func->Free = os_free;
-+ os_func->FreeRxBuffer = os_free_buffer;
-+ os_func->FreeDev = os_free_dev;
-+ os_func->FreeDmaXfer = os_free_dma_xfer;
-+ os_func->IsrRegister = hal_drv_register_isr;
-+ os_func->IsrUnRegister = hal_drv_unregister_isr;
-+ os_func->Malloc = os_malloc;
-+ os_func->MallocDev = os_malloc_dev;
-+ os_func->MallocDmaXfer = os_malloc_dma_xfer;
-+ os_func->MallocRxBuffer = cpmac_hal_malloc_buffer;
-+ os_func->Memset = memset;
-+ os_func->Printf = printk;
-+ os_func->Receive = cpmac_hal_receive;
-+ os_func->SendComplete = cpmac_hal_send_complete;
-+ os_func->Strcmpi = cpmac_ci_strcmp;
-+ os_func->TeardownComplete = cpmac_hal_tear_down_complete;
-+ os_func->Strstr = strstr;
-+ os_func->Strtoul = simple_strtol;
-+ os_func->Sprintf = sprintf;
-+ os_func->Strlen = strlen;
-+
-+ dbgPrint("os_init_module: Leave\n");
-+
-+ return(0);
-+}
-+
-+
-+int cpmac_drv_init(CPMAC_DRV_HAL_INFO_T *p_drv_hal)
-+{
-+ HAL_DEVICE *p_hal_dev = p_drv_hal->hal_dev;
-+ HAL_FUNCTIONS *p_hal_funcs = p_drv_hal->hal_funcs;
-+
-+ return(p_hal_funcs->Init(p_hal_dev));
-+}
-+
-+int cpmac_drv_cleanup(CPMAC_DRV_HAL_INFO_T *p_drv_hal)
-+{
-+ HAL_DEVICE *p_hal_dev = p_drv_hal->hal_dev;
-+ HAL_FUNCTIONS *p_hal_funcs = p_drv_hal->hal_funcs;
-+
-+ int ret_val = p_hal_funcs->Shutdown(p_hal_dev);
-+
-+#if 0
-+ if(ret_val == 0)
-+ kfree(p_hal_funcs);
-+ else
-+ ret_val = -1;
-+#endif
-+
-+ kfree(p_drv_hal->os_funcs);
-+
-+ return (ret_val);
-+}
-+
-+int cpmac_drv_tx_setup(HAL_FUNCTIONS *p_hal_funcs,
-+ HAL_DEVICE *p_hal_dev,
-+ CPMAC_TX_CHAN_INFO_T *p_tx_chan_info)
-+{
-+ int ret_val = 0;
-+ int count = 0;
-+ CHANNEL_INFO chan_info;
-+
-+ /* Let's setup the TX Channels. */
-+ for(count=0; count < p_tx_chan_info->cfg_chan; count++)
-+ {
-+ chan_info.Channel = count;
-+ chan_info.Direction = DIRECTION_TX;
-+ chan_info.TxNumBuffers = p_tx_chan_info->chan[count].num_BD;
-+ chan_info.TxServiceMax = p_tx_chan_info->chan[count].service_max;
-+ chan_info.TxNumQueues = 0;
-+
-+ if((ret_val = p_hal_funcs->ChannelSetup(p_hal_dev, &chan_info,
-+ NULL)) != 0)
-+ {
-+ errPrint("Error in opening channel %d for TX.\n", count);
-+ ret_val = -1;
-+ break;
-+ }
-+
-+ p_tx_chan_info->opened_chan++;
-+ }
-+
-+ return(ret_val);
-+}
-+
-+int cpmac_drv_rx_setup(HAL_FUNCTIONS *p_hal_funcs,
-+ HAL_DEVICE *p_hal_dev,
-+ CPMAC_RX_CHAN_INFO_T *p_rx_chan_info)
-+{
-+ int ret_val = 0;
-+ CHANNEL_INFO chan_info;
-+
-+ chan_info.Channel = 0;
-+ chan_info.Direction = DIRECTION_RX;
-+ chan_info.RxBufSize = p_rx_chan_info->chan[0].buffer_size;
-+ chan_info.RxBufferOffset= p_rx_chan_info->chan[0].buffer_offset;
-+ chan_info.RxNumBuffers = p_rx_chan_info->chan[0].num_BD;
-+ chan_info.RxServiceMax = p_rx_chan_info->chan[0].service_max;
-+
-+ if(p_hal_funcs->ChannelSetup(p_hal_dev, &chan_info, p_rx_chan_info) != 0)
-+ {
-+ errPrint("Error in opening channel %d for RX.\n", 0);
-+ ret_val = -1;
-+ }
-+
-+ return(ret_val);
-+}
-+
-+int cpmac_drv_start(CPMAC_DRV_HAL_INFO_T *p_drv_hal,
-+ CPMAC_TX_CHAN_INFO_T *p_tx_chan_info,
-+ CPMAC_RX_CHAN_INFO_T *p_rx_chan_info,
-+ unsigned int flags)
-+{
-+ int ret_val = 0;
-+ HAL_FUNCTIONS *p_hal_funcs = p_drv_hal->hal_funcs;
-+ HAL_DEVICE *p_hal_dev = p_drv_hal->hal_dev;
-+
-+ dbgPrint("It is in cpmac_drv_start for %x.\n", (unsigned int)p_drv_hal);
-+
-+ if(flags & CHAN_SETUP)
-+ {
-+ if(cpmac_drv_tx_setup(p_hal_funcs, p_hal_dev,
-+ p_tx_chan_info)!=0)
-+ {
-+ errPrint("Failed to set up tx channel(s).\n");
-+ ret_val = -1;
-+ }
-+ else if(cpmac_drv_rx_setup(p_hal_funcs, p_hal_dev,
-+ p_rx_chan_info)!=0)
-+ {
-+ errPrint("Failed to set up rx channel.\n");
-+ ret_val = -1;
-+ }
-+ else
-+ {
-+ ret_val = 0;
-+ }
-+ }
-+
-+ /* Error in setting up the Channels, quit. */
-+ if((ret_val == 0) && (ret_val = p_hal_funcs->Open(p_hal_dev)) != 0)
-+ {
-+ errPrint("failed to open the HAL!!!.\n");
-+ ret_val = -1;
-+ }
-+
-+ return (ret_val);
-+} /* cpmac_drv_start */
-+
-+
-+
-+int cpmac_drv_tx_teardown(HAL_FUNCTIONS *p_hal_funcs,
-+ HAL_DEVICE *p_hal_dev,
-+ CPMAC_TX_CHAN_INFO_T *p_tx_chan_info,
-+ unsigned int flags)
-+{
-+ int ret_val = 0;
-+ int count = 0;
-+
-+ /* Let's setup the TX Channels. */
-+ for(; p_tx_chan_info->opened_chan > 0;
-+ p_tx_chan_info->opened_chan--, count++)
-+ {
-+ if(p_hal_funcs->ChannelTeardown(p_hal_dev, count, flags) != 0)
-+ {
-+ errPrint("Error in tearing down channel %d for TX.\n", count);
-+ ret_val = -1;
-+ break;
-+ }
-+ }
-+
-+ return(ret_val);
-+}
-+
-+
-+int cpmac_drv_rx_teardown(HAL_FUNCTIONS *p_hal_funcs,
-+ HAL_DEVICE *p_hal_dev,
-+ unsigned int flags)
-+{
-+ int ret_val = 0;
-+
-+ if(p_hal_funcs->ChannelTeardown(p_hal_dev, 0, flags) != 0)
-+ {
-+ errPrint("Error in tearing down channel %d for RX.\n", 0);
-+ ret_val = -1;
-+ }
-+
-+ return(ret_val);
-+}
-+
-+int cpmac_drv_stop(CPMAC_DRV_HAL_INFO_T *p_drv_hal,
-+ CPMAC_TX_CHAN_INFO_T *p_tx_chan_info,
-+ CPMAC_RX_CHAN_INFO_T *p_rx_chan_info,
-+ unsigned int flags)
-+{
-+ HAL_DEVICE *p_hal_dev = p_drv_hal->hal_dev;
-+ HAL_FUNCTIONS *p_hal_funcs = p_drv_hal->hal_funcs;
-+ int ret_val = 0;
-+
-+ if(flags & CHAN_TEARDOWN)
-+ {
-+ unsigned int chan_flags = 0;
-+
-+ if(flags & FREE_BUFFER) chan_flags |= 0x4; /* full tear down */
-+ if(flags & BLOCKING) chan_flags |= 0x8; /* blocking call */
-+
-+ dbgPrint("The teardown flags are %d.\n", flags);
-+ dbgPrint("The teardown chan flags are %d.\n", chan_flags);
-+
-+ if(cpmac_drv_tx_teardown(p_hal_funcs, p_hal_dev,
-+ p_tx_chan_info, chan_flags | 0x1) != 0)
-+ {
-+ ret_val = -1;
-+ errPrint("The tx channel teardown failed.\n");
-+ }
-+ else if(cpmac_drv_rx_teardown(p_hal_funcs, p_hal_dev, chan_flags | 0x2) != 0)
-+ {
-+ ret_val = -1;
-+ errPrint("The rx channel teardown failed.\n");
-+ }
-+ else
-+ {
-+ ;
-+ }
-+ }
-+
-+ if(ret_val == 0)
-+ {
-+ int close_flags = 1;
-+
-+ if(flags & FREE_BUFFER) close_flags = 2;
-+// if(flags & COMPLETE) close_flags = 3;
-+
-+ if(p_hal_funcs->Close(p_hal_dev, close_flags) != 0)
-+ {
-+ ret_val = -1;
-+ }
-+ }
-+
-+ return(ret_val);
-+}
-+
-+int cpmac_drv_init_module(CPMAC_DRV_HAL_INFO_T *p_drv_hal, OS_DEVICE *p_os_dev, int inst)
-+{
-+ int ret_val = -1;
-+ int hal_func_size;
-+
-+ dbgPrint("Entering the CpmacInitModule for the inst %d \n", inst);
-+
-+ if((p_drv_hal->os_funcs = kmalloc(sizeof(OS_FUNCTIONS), GFP_KERNEL)) == NULL)
-+ {
-+ errPrint("Failed to allocate memory for OS_FUNCTIONS.\n");
-+ }
-+ else if(load_os_funcs(p_drv_hal->os_funcs) != 0)
-+ {
-+ errPrint("Failed to load OS funcs.\n");
-+ os_free(p_drv_hal->os_funcs);
-+ }
-+ else if(halCpmacInitModule(&p_drv_hal->hal_dev, p_os_dev,
-+ &p_drv_hal->hal_funcs, p_drv_hal->os_funcs,
-+ sizeof(*p_drv_hal->os_funcs),
-+ &hal_func_size, inst) != 0)
-+ {
-+ errPrint("halCpmacInitModule failed for inst %d \n", inst);
-+ os_free(p_drv_hal->os_funcs);
-+ }
-+ else if(p_drv_hal->hal_funcs->Probe(p_drv_hal->hal_dev) != 0)
-+ {
-+ errPrint("halCpmacProbe failed for inst %d \n", inst);
-+ os_free(p_drv_hal->os_funcs);
-+ }
-+ else
-+ {
-+ /* every thing went well. */
-+ ret_val = 0;
-+ }
-+
-+ return (ret_val);
-+}
-diff -urN linux.old/drivers/net/avalanche_cpmac/cpmacHalLx.h linux.dev/drivers/net/avalanche_cpmac/cpmacHalLx.h
---- linux.old/drivers/net/avalanche_cpmac/cpmacHalLx.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/cpmacHalLx.h 2005-07-12 02:48:42.044593000 +0200
-@@ -0,0 +1,51 @@
-+/******************************************************************************
-+ * FILE PURPOSE: CPMAC Linux Device Driver HAL support Header
-+ ******************************************************************************
-+ * FILE NAME: cpmacHalVx.h
-+ *
-+ * DESCRIPTION: CPMAC Linux Device Driver Header
-+ *
-+ * REVISION HISTORY:
-+ *
-+ * Date Description Author
-+ *-----------------------------------------------------------------------------
-+ * 27 Nov 2002 Initial Creation Suraj S Iyer
-+ * 09 Jun 2003 Updates for GA Suraj S Iyer
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+#ifndef __CPMAC_HAL_LX_H
-+#define __CPMAC_HAL_LX_H
-+
-+
-+typedef struct net_device OS_DEVICE;
-+typedef struct sk_buff OS_RECEIVEINFO;
-+typedef struct sk_buff OS_SENDINFO;
-+
-+#ifdef DEBUG
-+typedef void HAL_RECEIVEINFO;
-+typedef void HAL_DEVICE;
-+typedef void OS_SETUP;
-+#endif
-+
-+#define OS_SETUP void
-+#define HAL_DEVICE void
-+#define HAL_RECEIVEINFO void
-+
-+#define _CPHAL_CPMAC
-+
-+#include "cpswhal_cpmac.h"
-+#include "cpmac.h"
-+
-+int cpmac_drv_start(CPMAC_DRV_HAL_INFO_T *, CPMAC_TX_CHAN_INFO_T*,
-+ CPMAC_RX_CHAN_INFO_T *, unsigned int);
-+int cpmac_drv_cleanup(CPMAC_DRV_HAL_INFO_T *);
-+int cpmac_drv_init(CPMAC_DRV_HAL_INFO_T*);
-+int cpmac_drv_close(CPMAC_DRV_HAL_INFO_T*);
-+int cpmac_drv_open(CPMAC_DRV_HAL_INFO_T*);
-+int cpmac_drv_init_module(CPMAC_DRV_HAL_INFO_T*, OS_DEVICE*, int);
-+int cpmac_drv_stop(CPMAC_DRV_HAL_INFO_T *p_drv_hal,CPMAC_TX_CHAN_INFO_T *p_tx_chan_info,
-+ CPMAC_RX_CHAN_INFO_T *p_rx_chan_info,unsigned int flags);
-+
-+#endif
-diff -urN linux.old/drivers/net/avalanche_cpmac/cpmac_reg.h linux.dev/drivers/net/avalanche_cpmac/cpmac_reg.h
---- linux.old/drivers/net/avalanche_cpmac/cpmac_reg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/cpmac_reg.h 2005-07-12 02:48:42.045593000 +0200
-@@ -0,0 +1,406 @@
-+/****************************************************************************
-+ TNETD73xx Software Support
-+ Copyright(c) 2000, Texas Instruments Incorporated. All Rights Reserved.
-+
-+ FILE: cpmac_reg.h Register definitions for the CPMAC module
-+
-+ DESCRIPTION:
-+ This include file contains register definitions for the
-+ CPMAC module.
-+
-+ HISTORY:
-+ 15Nov00 BEGR Original version written
-+ 30May02 MICK Added bits for Int Vector
-+ 19Sep02 MICK Added INT_ACK per Channel
-+ 08Nov02 GDUN Updated to use base
-+ 12Nov02 MICK Incorporated into CPHAL
-+*****************************************************************************/
-+#ifndef _INC_CPMAC_REG
-+#define _INC_CPMAC_REG
-+
-+#ifndef MEM_PTR
-+#define MEM_PTR volatile bit32u *
-+#endif
-+
-+/***************************************************************************
-+ *
-+ * C P M A C M E M O R Y M A P
-+ *
-+ **************************************************************************/
-+
-+#define pCPMAC_TX_IDVER(base) ((MEM_PTR)(base+0x000))
-+#define CPMAC_TX_IDVER(base) (*pCPMAC_TX_IDVER(base))
-+#define pCPMAC_TX_CONTROL(base) ((MEM_PTR)(base+0x004))
-+#define CPMAC_TX_CONTROL(base) (*pCPMAC_TX_CONTROL(base))
-+#define pCPMAC_TX_TEARDOWN(base) ((MEM_PTR)(base+0x008))
-+#define CPMAC_TX_TEARDOWN(base) (*pCPMAC_TX_TEARDOWN(base))
-+#define pCPMAC_RX_IDVER(base) ((MEM_PTR)(base+0x010))
-+#define CPMAC_RX_IDVER(base) (*pCPMAC_RX_IDVER(base))
-+#define pCPMAC_RX_CONTROL(base) ((MEM_PTR)(base+0x014))
-+#define CPMAC_RX_CONTROL(base) (*pCPMAC_RX_CONTROL(base))
-+#define pCPMAC_RX_TEARDOWN(base) ((MEM_PTR)(base+0x018))
-+#define CPMAC_RX_TEARDOWN(base) (*pCPMAC_RX_TEARDOWN(base))
-+#define pCPMAC_RX_MBP_ENABLE(base) ((MEM_PTR)(base+0x100))
-+#define CPMAC_RX_MBP_ENABLE(base) (*pCPMAC_RX_MBP_ENABLE(base))
-+#define pCPMAC_RX_UNICAST_SET(base) ((MEM_PTR)(base+0x104))
-+#define CPMAC_RX_UNICAST_SET(base) (*pCPMAC_RX_UNICAST_SET(base))
-+#define pCPMAC_RX_UNICAST_CLEAR(base) ((MEM_PTR)(base+0x108))
-+#define CPMAC_RX_UNICAST_CLEAR(base) (*pCPMAC_RX_UNICAST_CLEAR(base))
-+#define pCPMAC_RX_MAXLEN(base) ((MEM_PTR)(base+0x10C))
-+#define CPMAC_RX_MAXLEN(base) (*pCPMAC_RX_MAXLEN(base))
-+#define pCPMAC_RX_BUFFER_OFFSET(base) ((MEM_PTR)(base+0x110))
-+#define CPMAC_RX_BUFFER_OFFSET(base) (*pCPMAC_RX_BUFFER_OFFSET(base))
-+#define pCPMAC_RX_FILTERLOWTHRESH(base) ((MEM_PTR)(base+0x114))
-+#define CPMAC_RX_FILTERLOWTHRESH(base) (*pCPMAC_RX_FILTERLOWTHRESH(base))
-+#define pCPMAC_RX0_FLOWTHRESH(base) ((MEM_PTR)(base+0x120))
-+#define CPMAC_RX0_FLOWTHRESH(base) (*pCPMAC_RX0_FLOWTHRESH(base))
-+#define pCPMAC_RX1_FLOWTHRESH(base) ((MEM_PTR)(base+0x124))
-+#define CPMAC_RX1_FLOWTHRESH(base) (*pCPMAC_RX1_FLOWTHRESH(base))
-+#define pCPMAC_RX2_FLOWTHRESH(base) ((MEM_PTR)(base+0x128))
-+#define CPMAC_RX2_FLOWTHRESH(base) (*pCPMAC_RX2_FLOWTHRESH(base))
-+#define pCPMAC_RX3_FLOWTHRESH(base) ((MEM_PTR)(base+0x12C))
-+#define CPMAC_RX3_FLOWTHRESH(base) (*pCPMAC_RX3_FLOWTHRESH(base))
-+#define pCPMAC_RX4_FLOWTHRESH(base) ((MEM_PTR)(base+0x130))
-+#define CPMAC_RX4_FLOWTHRESH(base) (*pCPMAC_RX4_FLOWTHRESH(base))
-+#define pCPMAC_RX5_FLOWTHRESH(base) ((MEM_PTR)(base+0x134))
-+#define CPMAC_RX5_FLOWTHRESH(base) (*pCPMAC_RX5_FLOWTHRESH(base))
-+#define pCPMAC_RX6_FLOWTHRESH(base) ((MEM_PTR)(base+0x138))
-+#define CPMAC_RX6_FLOWTHRESH(base) (*pCPMAC_RX6_FLOWTHRESH(base))
-+#define pCPMAC_RX7_FLOWTHRESH(base) ((MEM_PTR)(base+0x13C))
-+#define CPMAC_RX7_FLOWTHRESH(base) (*pCPMAC_RX7_FLOWTHRESH(base))
-+#define pCPMAC_RX0_FREEBUFFER(base) ((MEM_PTR)(base+0x140))
-+#define CPMAC_RX0_FREEBUFFER(base) (*pCPMAC_RX0_FREEBUFFER(base))
-+#define pCPMAC_RX1_FREEBUFFER(base) ((MEM_PTR)(base+0x144))
-+#define CPMAC_RX1_FREEBUFFER(base) (*pCPMAC_RX1_FREEBUFFER(base))
-+#define pCPMAC_RX2_FREEBUFFER(base) ((MEM_PTR)(base+0x148))
-+#define CPMAC_RX2_FREEBUFFER(base) (*pCPMAC_RX2_FREEBUFFER(base))
-+#define pCPMAC_RX3_FREEBUFFER(base) ((MEM_PTR)(base+0x14C))
-+#define CPMAC_RX3_FREEBUFFER(base) (*pCPMAC_RX3_FREEBUFFER(base))
-+#define pCPMAC_RX4_FREEBUFFER(base) ((MEM_PTR)(base+0x150))
-+#define CPMAC_RX4_FREEBUFFER(base) (*pCPMAC_RX4_FREEBUFFER(base))
-+#define pCPMAC_RX5_FREEBUFFER(base) ((MEM_PTR)(base+0x154))
-+#define CPMAC_RX5_FREEBUFFER(base) (*pCPMAC_RX5_FREEBUFFER(base))
-+#define pCPMAC_RX6_FREEBUFFER(base) ((MEM_PTR)(base+0x158))
-+#define CPMAC_RX6_FREEBUFFER(base) (*pCPMAC_RX6_FREEBUFFER(base))
-+#define pCPMAC_RX7_FREEBUFFER(base) ((MEM_PTR)(base+0x15C))
-+#define CPMAC_RX7_FREEBUFFER(base) (*pCPMAC_RX7_FREEBUFFER(base))
-+#define pCPMAC_MACCONTROL(base) ((MEM_PTR)(base+0x160))
-+#define CPMAC_MACCONTROL(base) (*pCPMAC_MACCONTROL(base))
-+#define pCPMAC_MACSTATUS(base) ((MEM_PTR)(base+0x164))
-+#define CPMAC_MACSTATUS(base) (*pCPMAC_MACSTATUS(base))
-+#define pCPMAC_EMCONTROL(base) ((MEM_PTR)(base+0x168))
-+#define CPMAC_EMCONTROL(base) (*pCPMAC_EMCONTROL(base))
-+#define pCPMAC_TX_INTSTAT_RAW(base) ((MEM_PTR)(base+0x170))
-+#define CPMAC_TX_INTSTAT_RAW(base) (*pCPMAC_TX_INTSTAT_RAW(base))
-+#define pCPMAC_TX_INTSTAT_MASKED(base) ((MEM_PTR)(base+0x174))
-+#define CPMAC_TX_INTSTAT_MASKED(base) (*pCPMAC_TX_INTSTAT_MASKED(base))
-+#define pCPMAC_TX_INTMASK_SET(base) ((MEM_PTR)(base+0x178))
-+#define CPMAC_TX_INTMASK_SET(base) (*pCPMAC_TX_INTMASK_SET(base))
-+#define pCPMAC_TX_INTMASK_CLEAR(base) ((MEM_PTR)(base+0x17C))
-+#define CPMAC_TX_INTMASK_CLEAR(base) (*pCPMAC_TX_INTMASK_CLEAR(base))
-+#define pCPMAC_MAC_IN_VECTOR(base) ((MEM_PTR)(base+0x180))
-+#define CPMAC_MAC_IN_VECTOR(base) (*pCPMAC_MAC_IN_VECTOR(base))
-+#define pCPMAC_MAC_EOI_VECTOR(base) ((MEM_PTR)(base+0x184))
-+#define CPMAC_MAC_EOI_VECTOR(base) (*pCPMAC_MAC_EOI_VECTOR(base))
-+#define pCPMAC_RX_INTSTAT_RAW(base) ((MEM_PTR)(base+0x190))
-+#define CPMAC_RX_INTSTAT_RAW(base) (*pCPMAC_RX_INTSTAT_RAW(base))
-+#define pCPMAC_RX_INTSTAT_MASKED(base) ((MEM_PTR)(base+0x194))
-+#define CPMAC_RX_INTSTAT_MASKED(base) (*pCPMAC_RX_INTSTAT_MASKED(base))
-+#define pCPMAC_RX_INTMASK_SET(base) ((MEM_PTR)(base+0x198))
-+#define CPMAC_RX_INTMASK_SET(base) (*pCPMAC_RX_INTMASK_SET(base))
-+#define pCPMAC_RX_INTMASK_CLEAR(base) ((MEM_PTR)(base+0x19C))
-+#define CPMAC_RX_INTMASK_CLEAR(base) (*pCPMAC_RX_INTMASK_CLEAR(base))
-+#define pCPMAC_MAC_INTSTAT_RAW(base) ((MEM_PTR)(base+0x1A0))
-+#define CPMAC_MAC_INTSTAT_RAW(base) (*pCPMAC_MAC_INTSTAT_RAW(base))
-+#define pCPMAC_MAC_INTSTAT_MASKED(base) ((MEM_PTR)(base+0x1A4))
-+#define CPMAC_MAC_INTSTAT_MASKED(base) (*pCPMAC_MAC_INTSTAT_MASKED(base))
-+#define pCPMAC_MAC_INTMASK_SET(base) ((MEM_PTR)(base+0x1A8))
-+#define CPMAC_MAC_INTMASK_SET(base) (*pCPMAC_MAC_INTMASK_SET(base))
-+#define pCPMAC_MAC_INTMASK_CLEAR(base) ((MEM_PTR)(base+0x1AC))
-+#define CPMAC_MAC_INTMASK_CLEAR(base) (*pCPMAC_MAC_INTMASK_CLEAR(base))
-+#define pCPMAC_MACADDRLO_0(base) ((MEM_PTR)(base+0x1B0))
-+#define CPMAC_MACADDRLO_0(base) (*pCPMAC_MACADDRLO_0(base))
-+#define pCPMAC_MACADDRLO_1(base) ((MEM_PTR)(base+0x1B4))
-+#define CPMAC_MACADDRLO_1(base) (*pCPMAC_MACADDRLO_1(base))
-+#define pCPMAC_MACADDRLO_2(base) ((MEM_PTR)(base+0x1B8))
-+#define CPMAC_MACADDRLO_2(base) (*pCPMAC_MACADDRLO_2(base))
-+#define pCPMAC_MACADDRLO_3(base) ((MEM_PTR)(base+0x1BC))
-+#define CPMAC_MACADDRLO_3(base) (*pCPMAC_MACADDRLO_3(base))
-+#define pCPMAC_MACADDRLO_4(base) ((MEM_PTR)(base+0x1C0))
-+#define CPMAC_MACADDRLO_4(base) (*pCPMAC_MACADDRLO_4(base))
-+#define pCPMAC_MACADDRLO_5(base) ((MEM_PTR)(base+0x1C4))
-+#define CPMAC_MACADDRLO_5(base) (*pCPMAC_MACADDRLO_5(base))
-+#define pCPMAC_MACADDRLO_6(base) ((MEM_PTR)(base+0x1C8))
-+#define CPMAC_MACADDRLO_6(base) (*pCPMAC_MACADDRLO_6(base))
-+#define pCPMAC_MACADDRLO_7(base) ((MEM_PTR)(base+0x1CC))
-+#define CPMAC_MACADDRLO_7(base) (*pCPMAC_MACADDRLO_7(base))
-+#define pCPMAC_MACADDRMID(base) ((MEM_PTR)(base+0x1D0))
-+#define CPMAC_MACADDRMID(base) (*pCPMAC_MACADDRMID(base))
-+#define pCPMAC_MACADDRHI(base) ((MEM_PTR)(base+0x1D4))
-+#define CPMAC_MACADDRHI(base) (*pCPMAC_MACADDRHI(base))
-+#define pCPMAC_MACHASH1(base) ((MEM_PTR)(base+0x1D8))
-+#define CPMAC_MACHASH1(base) (*pCPMAC_MACHASH1(base))
-+#define pCPMAC_MACHASH2(base) ((MEM_PTR)(base+0x1DC))
-+#define CPMAC_MACHASH2(base) (*pCPMAC_MACHASH2(base))
-+#define pCPMAC_BOFFTEST(base) ((MEM_PTR)(base+0x1E0))
-+#define CPMAC_BOFFTEST(base) (*pCPMAC_BOFFTEST(base))
-+#define pCPMAC_PACTEST(base) ((MEM_PTR)(base+0x1E4))
-+#define CPMAC_PACTEST(base) (*pCPMAC_PACTEST(base))
-+#define pCPMAC_RXPAUSE(base) ((MEM_PTR)(base+0x1E8))
-+#define CPMAC_RXPAUSE(base) (*pCPMAC_RXPAUSE(base))
-+#define pCPMAC_TXPAUSE(base) ((MEM_PTR)(base+0x1EC))
-+#define CPMAC_TXPAUSE(base) (*pCPMAC_TXPAUSE(base))
-+/* STATISTICS */
-+#define pCPMAC_RXGOODFRAMES(base) ((MEM_PTR)(base+0x200))
-+#define CPMAC_RXGOODFRAMES(base) (*pCPMAC_RXGOODFRAMES(base))
-+#define pCPMAC_RXBROADCASTFRAMES(base) ((MEM_PTR)(base+0x204))
-+#define CPMAC_RXBROADCASTFRAMES(base) (*pCPMAC_RXBROADCASTFRAMES(base))
-+#define pCPMAC_RXMULTICASTFRAMES(base) ((MEM_PTR)(base+0x208))
-+#define CPMAC_RXMULTICASTFRAMES(base) (*pCPMAC_RXMULTICASTFRAMES(base))
-+#define pCPMAC_RXPAUSEFRAMES(base) ((MEM_PTR)(base+0x20C))
-+#define CPMAC_RXPAUSEFRAMES(base) (*pCPMAC_RXPAUSEFRAMES(base))
-+#define pCPMAC_RXCRCERRORS(base) ((MEM_PTR)(base+0x210))
-+#define CPMAC_RXCRCERRORS(base) (*pCPMAC_RXCRCERRORS(base))
-+#define pCPMAC_RXALIGNCODEERRORS(base) ((MEM_PTR)(base+0x214))
-+#define CPMAC_RXALIGNCODEERRORS(base) (*pCPMAC_RXALIGNCODEERRORS(base))
-+#define pCPMAC_RXOVERSIZEDFRAMES(base) ((MEM_PTR)(base+0x218))
-+#define CPMAC_RXOVERSIZEDFRAMES(base) (*pCPMAC_RXOVERSIZEDFRAMES(base))
-+#define pCPMAC_RXJABBERFRAMES(base) ((MEM_PTR)(base+0x21C))
-+#define CPMAC_RXJABBERFRAMES(base) (*pCPMAC_RXJABBERFRAMES(base))
-+#define pCPMAC_RXUNDERSIZEDFRAMES(base) ((MEM_PTR)(base+0x220))
-+#define CPMAC_RXUNDERSIZEDFRAMES(base) (*pCPMAC_RXUNDERSIZEDFRAMES(base))
-+#define pCPMAC_RXFRAGMENTS(base) ((MEM_PTR)(base+0x224))
-+#define CPMAC_RXFRAGMENTS(base) (*pCPMAC_RXFRAGMENTS(base))
-+#define pCPMAC_RXFILTEREDFRAMES(base) ((MEM_PTR)(base+0x228))
-+#define CPMAC_RXFILTEREDFRAMES(base) (*pCPMAC_RXFILTEREDFRAMES(base))
-+#define pCPMAC_RXQOSFILTEREDFRAMES(base) ((MEM_PTR)(base+0x22C))
-+#define CPMAC_RXQOSFILTEREDFRAMES(base) (*pCPMAC_RXQOSFILTEREDFRAMES(base))
-+#define pCPMAC_RXOCTETS(base) ((MEM_PTR)(base+0x230))
-+#define CPMAC_RXOCTETS(base) (*pCPMAC_RXOCTETS(base))
-+#define pCPMAC_TXGOODFRAMES(base) ((MEM_PTR)(base+0x234))
-+#define CPMAC_TXGOODFRAMES(base) (*pCPMAC_TXGOODFRAMES(base))
-+#define pCPMAC_TXBROADCASTFRAMES(base) ((MEM_PTR)(base+0x238))
-+#define CPMAC_TXBROADCASTFRAMES(base) (*pCPMAC_TXBROADCASTFRAMES(base))
-+#define pCPMAC_TXMULTICASTFRAMES(base) ((MEM_PTR)(base+0x23C))
-+#define CPMAC_TXMULTICASTFRAMES(base) (*pCPMAC_TXMULTICASTFRAMES(base))
-+#define pCPMAC_TXPAUSEFRAMES(base) ((MEM_PTR)(base+0x240))
-+#define CPMAC_TXPAUSEFRAMES(base) (*pCPMAC_TXPAUSEFRAMES(base))
-+#define pCPMAC_TXDEFERREDFRAMES(base) ((MEM_PTR)(base+0x244))
-+#define CPMAC_TXDEFERREDFRAMES(base) (*pCPMAC_TXDEFERREDFRAMES(base))
-+#define pCPMAC_TXCOLLISIONFRAMES(base) ((MEM_PTR)(base+0x248))
-+#define CPMAC_TXCOLLISIONFRAMES(base) (*pCPMAC_TXCOLLISIONFRAMES(base))
-+#define pCPMAC_TXSINGLECOLLFRAMES(base) ((MEM_PTR)(base+0x24C))
-+#define CPMAC_TXSINGLECOLLFRAMES(base) (*pCPMAC_TXSINGLECOLLFRAMES(base))
-+#define pCPMAC_TXMULTCOLLFRAMES(base) ((MEM_PTR)(base+0x250))
-+#define CPMAC_TXMULTCOLLFRAMES(base) (*pCPMAC_TXMULTCOLLFRAMES(base))
-+#define pCPMAC_TXEXCESSIVECOLLISIONS(base) ((MEM_PTR)(base+0x254))
-+#define CPMAC_TXEXCESSIVECOLLISIONS(base) (*pCPMAC_TXEXCESSIVECOLLISIONS(base))
-+#define pCPMAC_TXLATECOLLISIONS(base) ((MEM_PTR)(base+0x258))
-+#define CPMAC_TXLATECOLLISIONS(base) (*pCPMAC_TXLATECOLLISIONS(base))
-+#define pCPMAC_TXUNDERRUN(base) ((MEM_PTR)(base+0x25C))
-+#define CPMAC_TXUNDERRUN(base) (*pCPMAC_TXUNDERRUN(base))
-+#define pCPMAC_TXCARRIERSENSEERRORS(base) ((MEM_PTR)(base+0x260))
-+#define CPMAC_TXCARRIERSENSEERRORS(base) (*pCPMAC_TXCARRIERSENSEERRORS(base))
-+#define pCPMAC_TXOCTETS(base) ((MEM_PTR)(base+0x264))
-+#define CPMAC_TXOCTETS(base) (*pCPMAC_TXOCTETS(base))
-+#define pCPMAC_64OCTETFRAMES(base) ((MEM_PTR)(base+0x268))
-+#define CPMAC_64OCTETFRAMES(base) (*pCPMAC_64OCTETFRAMES(base))
-+#define pCPMAC_65T127OCTETFRAMES(base) ((MEM_PTR)(base+0x26C))
-+#define CPMAC_65T127OCTETFRAMES(base) (*pCPMAC_65T127OCTETFRAMES(base))
-+#define pCPMAC_128T255OCTETFRAMES(base) ((MEM_PTR)(base+0x270))
-+#define CPMAC_128T255OCTETFRAMES(base) (*pCPMAC_128T255OCTETFRAMES(base))
-+#define pCPMAC_256T511OCTETFRAMES(base) ((MEM_PTR)(base+0x274))
-+#define CPMAC_256T511OCTETFRAMES(base) (*pCPMAC_256T511OCTETFRAMES(base))
-+#define pCPMAC_512T1023OCTETFRAMES(base) ((MEM_PTR)(base+0x278))
-+#define CPMAC_512T1023OCTETFRAMES(base) (*pCPMAC_512T1023OCTETFRAMES(base))
-+#define pCPMAC_1024TUPOCTETFRAMES(base) ((MEM_PTR)(base+0x27C))
-+#define CPMAC_1024TUPOCTETFRAMES(base) (*pCPMAC_1024TUPOCTETFRAMES(base))
-+#define pCPMAC_NETOCTETS(base) ((MEM_PTR)(base+0x280))
-+#define CPMAC_NETOCTETS(base) (*pCPMAC_NETOCTETS(base))
-+#define pCPMAC_RXSOFOVERRUNS(base) ((MEM_PTR)(base+0x284))
-+#define CPMAC_RXSOFOVERRUNS(base) (*pCPMAC_RXSOFOVERRUNS(base))
-+#define pCPMAC_RXMOFOVERRUNS(base) ((MEM_PTR)(base+0x288))
-+#define CPMAC_RXMOFOVERRUNS(base) (*pCPMAC_RXMOFOVERRUNS(base))
-+#define pCPMAC_RXDMAOVERRUNS(base) ((MEM_PTR)(base+0x28C))
-+#define CPMAC_RXDMAOVERRUNS(base) (*pCPMAC_RXDMAOVERRUNS(base))
-+
-+#define CPMAC_TX_HDP(base,ch) (*(MEM_PTR)(base+0x600+(4*ch)))
-+#define pCPMAC_TX0_HDP(base) ((MEM_PTR)(base+0x600))
-+#define CPMAC_TX0_HDP(base) (*pCPMAC_TX0_HDP(base))
-+#define pCPMAC_TX1_HDP(base) ((MEM_PTR)(base+0x604))
-+#define CPMAC_TX1_HDP(base) (*pCPMAC_TX1_HDP(base))
-+#define pCPMAC_TX2_HDP(base) ((MEM_PTR)(base+0x608))
-+#define CPMAC_TX2_HDP(base) (*pCPMAC_TX2_HDP(base))
-+#define pCPMAC_TX3_HDP(base) ((MEM_PTR)(base+0x60C))
-+#define CPMAC_TX3_HDP(base) (*pCPMAC_TX3_HDP(base))
-+#define pCPMAC_TX4_HDP(base) ((MEM_PTR)(base+0x610))
-+#define CPMAC_TX4_HDP(base) (*pCPMAC_TX4_HDP(base))
-+#define pCPMAC_TX5_HDP(base) ((MEM_PTR)(base+0x614))
-+#define CPMAC_TX5_HDP(base) (*pCPMAC_TX5_HDP(base))
-+#define pCPMAC_TX6_HDP(base) ((MEM_PTR)(base+0x618))
-+#define CPMAC_TX6_HDP(base) (*pCPMAC_TX6_HDP(base))
-+#define pCPMAC_TX7_HDP(base) ((MEM_PTR)(base+0x61C))
-+#define CPMAC_TX7_HDP(base) (*pCPMAC_TX7_HDP(base))
-+#define CPMAC_RX_HDP(base,ch) (*(MEM_PTR)(base+0x620+(4*ch)))
-+#define pCPMAC_RX0_HDP(base) ((MEM_PTR)(base+0x620))
-+#define CPMAC_RX0_HDP(base) (*pCPMAC_RX0_HDP(base))
-+#define pCPMAC_RX1_HDP(base) ((MEM_PTR)(base+0x624))
-+#define CPMAC_RX1_HDP(base) (*pCPMAC_RX1_HDP(base))
-+#define pCPMAC_RX2_HDP(base) ((MEM_PTR)(base+0x628))
-+#define CPMAC_RX2_HDP(base) (*pCPMAC_RX2_HDP(base))
-+#define pCPMAC_RX3_HDP(base) ((MEM_PTR)(base+0x62C))
-+#define CPMAC_RX3_HDP(base) (*pCPMAC_RX3_HDP(base))
-+#define pCPMAC_RX4_HDP(base) ((MEM_PTR)(base+0x630))
-+#define CPMAC_RX4_HDP(base) (*pCPMAC_RX4_HDP(base))
-+#define pCPMAC_RX5_HDP(base) ((MEM_PTR)(base+0x634))
-+#define CPMAC_RX5_HDP(base) (*pCPMAC_RX5_HDP(base))
-+#define pCPMAC_RX6_HDP(base) ((MEM_PTR)(base+0x638))
-+#define CPMAC_RX6_HDP(base) (*pCPMAC_RX6_HDP(base))
-+#define pCPMAC_RX7_HDP(base) ((MEM_PTR)(base+0x63C))
-+#define CPMAC_RX7_HDP(base) (*pCPMAC_RX7_HDP(base))
-+
-+
-+#define CPMAC_TX_INT_ACK(base,ch) (*(MEM_PTR)(base+0x640+(4*ch)))
-+
-+#define pCPMAC_TX0_INT_ACK(base) ((MEM_PTR)(base+0x640))
-+#define CPMAC_TX0_INT_ACK(base) (*pCPMAC_TX0_INT_ACK(base))
-+#define pCPMAC_TX1_INT_ACK(base) ((MEM_PTR)(base+0x644))
-+#define CPMAC_TX1_INT_ACK(base) (*pCPMAC_TX1_INT_ACK(base))
-+#define pCPMAC_TX2_INT_ACK(base) ((MEM_PTR)(base+0x648))
-+#define CPMAC_TX2_INT_ACK(base) (*pCPMAC_TX2_INT_ACK(base))
-+#define pCPMAC_TX3_INT_ACK(base) ((MEM_PTR)(base+0x64C))
-+#define CPMAC_TX3_INT_ACK(base) (*pCPMAC_TX3_INT_ACK(base))
-+#define pCPMAC_TX4_INT_ACK(base) ((MEM_PTR)(base+0x650))
-+#define CPMAC_TX4_INT_ACK(base) (*pCPMAC_TX4_INT_ACK(base))
-+#define pCPMAC_TX5_INT_ACK(base) ((MEM_PTR)(base+0x654))
-+#define CPMAC_TX5_INT_ACK(base) (*pCPMAC_TX5_INT_ACK(base))
-+#define pCPMAC_TX6_INT_ACK(base) ((MEM_PTR)(base+0x658))
-+#define CPMAC_TX6_INT_ACK(base) (*pCPMAC_TX6_INT_ACK(base))
-+#define pCPMAC_TX7_INT_ACK(base) ((MEM_PTR)(base+0x65C))
-+#define CPMAC_TX7_INT_ACK(base) (*pCPMAC_TX7_INT_ACK(base))
-+#define CPMAC_RX_INT_ACK(base,ch) (*(MEM_PTR)(base+0x660+(4*ch)))
-+
-+#define pCPMAC_RX0_INT_ACK(base) ((MEM_PTR)(base+0x660))
-+#define CPMAC_RX0_INT_ACK(base) (*pCPMAC_RX0_INT_ACK(base))
-+#define pCPMAC_RX1_INT_ACK(base) ((MEM_PTR)(base+0x664))
-+#define CPMAC_RX1_INT_ACK(base) (*pCPMAC_RX1_INT_ACK(base))
-+#define pCPMAC_RX2_INT_ACK(base) ((MEM_PTR)(base+0x668))
-+#define CPMAC_RX2_INT_ACK(base) (*pCPMAC_RX2_INT_ACK(base))
-+#define pCPMAC_RX3_INT_ACK(base) ((MEM_PTR)(base+0x66C))
-+#define CPMAC_RX3_INT_ACK(base) (*pCPMAC_RX3_INT_ACK(base))
-+#define pCPMAC_RX4_INT_ACK(base) ((MEM_PTR)(base+0x670))
-+#define CPMAC_RX4_INT_ACK(base) (*pCPMAC_RX4_INT_ACK(base))
-+#define pCPMAC_RX5_INT_ACK(base) ((MEM_PTR)(base+0x674))
-+#define CPMAC_RX5_INT_ACK(base) (*pCPMAC_RX5_INT_ACK(base))
-+#define pCPMAC_RX6_INT_ACK(base) ((MEM_PTR)(base+0x678))
-+#define CPMAC_RX6_INT_ACK(base) (*pCPMAC_RX6_INT_ACK(base))
-+#define pCPMAC_RX7_INT_ACK(base) ((MEM_PTR)(base+0x67C))
-+#define CPMAC_RX7_INT_ACK(base) (*pCPMAC_RX7_INT_ACK(base))
-+
-+/****************************************************************************/
-+/* */
-+/* R E G I S T E R B I T D E F I N I T I O N S */
-+/* */
-+/****************************************************************************/
-+
-+/* TX_CONTROL */
-+
-+#define TX_EN (1 << 0)
-+
-+/* RX_CONTROL */
-+
-+#define RX_EN (1 << 0)
-+
-+/* RX_MBP_ENABLE */
-+
-+#define RX_PASS_CRC (1 << 30)
-+#define RX_QOS_EN (1 << 29)
-+#define RX_NO_CHAIN (1 << 28)
-+
-+#define RX_CMF_EN (1 << 24)
-+#define RX_CSF_EN (1 << 23)
-+#define RX_CEF_EN (1 << 22)
-+#define RX_CAF_EN (1 << 21)
-+
-+#define RX_PROM_CH(n) (n << 16)
-+#define RX_PROM_CH_MASK RX_PROM_CH(7)
-+#define RX_PROM_CH_7 RX_PROM_CH(7)
-+#define RX_PROM_CH_6 RX_PROM_CH(6)
-+#define RX_PROM_CH_5 RX_PROM_CH(5)
-+#define RX_PROM_CH_4 RX_PROM_CH(4)
-+#define RX_PROM_CH_3 RX_PROM_CH(3)
-+#define RX_PROM_CH_2 RX_PROM_CH(2)
-+#define RX_PROM_CH_1 RX_PROM_CH(1)
-+#define RX_PROM_CH_0 RX_PROM_CH(0)
-+
-+#define RX_BROAD_EN (1 << 13)
-+
-+#define RX_BROAD_CH(n) (n << 8)
-+#define RX_BROAD_CH_MASK RX_BROAD_CH(7)
-+#define RX_BROAD_CH_7 RX_BROAD_CH(7)
-+#define RX_BROAD_CH_6 RX_BROAD_CH(6)
-+#define RX_BROAD_CH_5 RX_BROAD_CH(5)
-+#define RX_BROAD_CH_4 RX_BROAD_CH(4)
-+#define RX_BROAD_CH_3 RX_BROAD_CH(3)
-+#define RX_BROAD_CH_2 RX_BROAD_CH(2)
-+#define RX_BROAD_CH_1 RX_BROAD_CH(1)
-+#define RX_BROAD_CH_0 RX_BROAD_CH(0)
-+
-+#define RX_MULT_EN (1 << 5)
-+
-+#define RX_MULT_CH(n) (n << 0)
-+#define RX_MULT_CH_MASK RX_MULT_CH(7)
-+#define RX_MULT_CH_7 RX_MULT_CH(7)
-+#define RX_MULT_CH_6 RX_MULT_CH(6)
-+#define RX_MULT_CH_5 RX_MULT_CH(5)
-+#define RX_MULT_CH_4 RX_MULT_CH(4)
-+#define RX_MULT_CH_3 RX_MULT_CH(3)
-+#define RX_MULT_CH_2 RX_MULT_CH(2)
-+#define RX_MULT_CH_1 RX_MULT_CH(1)
-+#define RX_MULT_CH_0 RX_MULT_CH(0)
-+
-+
-+
-+/* RX_UNICAST_SET */
-+
-+#define RX_CH7_EN (1 << 7)
-+#define RX_CH6_EN (1 << 6)
-+#define RX_CH5_EN (1 << 5)
-+#define RX_CH4_EN (1 << 4)
-+#define RX_CH3_EN (1 << 3)
-+#define RX_CH2_EN (1 << 2)
-+#define RX_CH1_EN (1 << 1)
-+#define RX_CH0_EN (1 << 0)
-+
-+
-+
-+/* MAC control */
-+#define TX_PTYPE (1 << 9)
-+#define TX_PACE (1 << 6)
-+#define MII_EN (1 << 5)
-+#define TX_FLOW_EN (1 << 4)
-+#define RX_FLOW_EN (1 << 3)
-+#define MTEST (1 << 2)
-+#define CTRL_LOOPBACK (1 << 1)
-+#define FULLDUPLEX (1 << 0)
-+
-+
-+/* IntVec definitions */
-+#define MAC_IN_VECTOR_STATUS_INT (1 << 19)
-+#define MAC_IN_VECTOR_HOST_INT (1 << 18)
-+#define MAC_IN_VECTOR_RX_INT_OR (1 << 17)
-+#define MAC_IN_VECTOR_TX_INT_OR (1 << 16)
-+#define MAC_IN_VECTOR_RX_INT_VEC (7 << 8)
-+#define MAC_IN_VECTOR_TX_INT_VEC (7)
-+
-+
-+/* MacStatus */
-+
-+#define TX_HOST_ERR_CODE (0xF << 20)
-+#define TX_ERR_CH (0x7 << 16)
-+#define RX_HOST_ERR_CODE (0xF << 12)
-+#define RX_ERR_CH (0x7 << 8)
-+#define RX_QOS_ACT (1 << 2)
-+#define RX_FLOW_ACT (1 << 1)
-+#define TX_FLOW_ACT (1 << 0)
-+#endif _INC_CPMAC_REG
-diff -urN linux.old/drivers/net/avalanche_cpmac/cpmdio.c linux.dev/drivers/net/avalanche_cpmac/cpmdio.c
---- linux.old/drivers/net/avalanche_cpmac/cpmdio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/cpmdio.c 2005-07-12 02:48:42.046593000 +0200
-@@ -0,0 +1,960 @@
-+/***************************************************************************
-+** TNETD53xx Software Support
-+** Copyright(c) 2002, Texas Instruments Incorporated. All Rights Reserved.
-+**
-+** FILE: cpmdio.c
-+**
-+** DESCRIPTION:
-+** MDIO Polling State Machine API. Functions will enable mii-Phy
-+** negotiation.
-+**
-+** HISTORY:
-+** 01Jan01 Denis, Bill Original
-+** 27Mar02 Michael Hanrahan (modified from emacmdio.c)
-+** 07May02 Michael Hanrahan replaced clockwait for code delay
-+** 10Jul02 Michael Hanrahan more debug, if fallback link is selected
-+*****************************************************************************/
-+#define __CPHAL_CPMDIO
-+
-+#include "mdio_reg.h"
-+
-+#ifdef _CPHAL_CPMAC
-+#define mdioPrintf PhyDev->HalDev->OsFunc->Printf
-+#else
-+#define mdioPrintf printf
-+#endif
-+
-+typedef struct _phy_device
-+{
-+ bit32u miibase;
-+ bit32u inst;
-+ bit32u PhyState;
-+ bit32u MdixMask;
-+ bit32u PhyMask;
-+ bit32u MLinkMask;
-+ bit32u PhyMode;
-+#ifdef _CPHAL_CPMAC
-+ HAL_DEVICE *HalDev;
-+#endif
-+} _PHY_DEVICE;
-+
-+static void _mdioDelayEmulate(PHY_DEVICE *PhyDev, int ClockWait);
-+static void _mdioWaitForAccessComplete(PHY_DEVICE *PhyDev);
-+static void _mdioUserAccess(PHY_DEVICE *PhyDev, bit32u method, bit32u regadr, bit32u phyadr, bit32u data);
-+static bit32u _mdioUserAccessRead(PHY_DEVICE *PhyDev, bit32u regadr, bit32u phyadr);
-+static void _mdioUserAccessWrite(PHY_DEVICE *PhyDev, bit32u regadr, bit32u phyadr, bit32u data);
-+
-+static void _mdioDisablePhy(PHY_DEVICE *PhyDev,bit32u PhyNum);
-+static void _mdioPhyTimeOut(PHY_DEVICE *PhyDev);
-+static void _mdioResetPhy(PHY_DEVICE *PhyDev,bit32u PhyNum);
-+
-+static void _mdioDumpPhy(PHY_DEVICE *PhyDev, bit32u p);
-+static void _mdioDumpState(PHY_DEVICE *PhyDev);
-+
-+/* Auto Mdix */
-+static void _mdioMdixDelay(PHY_DEVICE *PhyDev);
-+static int _mdioMdixSupported(PHY_DEVICE *PhyDev);
-+
-+static void _MdioDefaultState (PHY_DEVICE *PhyDev);
-+static void _MdioFindingState (PHY_DEVICE *PhyDev);
-+static void _MdioFoundState (PHY_DEVICE *PhyDev);
-+static void _MdioInitState (PHY_DEVICE *PhyDev);
-+static void _MdioLinkedState (PHY_DEVICE *PhyDev);
-+static void _MdioLinkWaitState (PHY_DEVICE *PhyDev);
-+static void _MdioLoopbackState (PHY_DEVICE *PhyDev);
-+static void _MdioNwayStartState(PHY_DEVICE *PhyDev);
-+static void _MdioNwayWaitState (PHY_DEVICE *PhyDev);
-+
-+
-+
-+#ifndef TRUE
-+#define TRUE (1==1)
-+#endif
-+
-+#ifndef FALSE
-+#define FALSE (1==2)
-+#endif
-+
-+#define PHY_NOT_FOUND 0xFFFF /* Used in Phy Detection */
-+
-+/*PhyState breakout */
-+
-+#define PHY_DEV_OFFSET (0)
-+#define PHY_DEV_SIZE (5) /* 5 Bits used */
-+#define PHY_DEV_MASK (0x1f<<PHY_DEV_OFFSET)
-+
-+#define PHY_STATE_OFFSET (PHY_DEV_SIZE+PHY_DEV_OFFSET)
-+#define PHY_STATE_SIZE (5) /* 10 Bits used */
-+#define PHY_STATE_MASK (0x1f<<PHY_STATE_OFFSET)
-+ #define INIT (1<<PHY_STATE_OFFSET)
-+ #define FINDING (2<<PHY_STATE_OFFSET)
-+ #define FOUND (3<<PHY_STATE_OFFSET)
-+ #define NWAY_START (4<<PHY_STATE_OFFSET)
-+ #define NWAY_WAIT (5<<PHY_STATE_OFFSET)
-+ #define LINK_WAIT (6<<PHY_STATE_OFFSET)
-+ #define LINKED (7<<PHY_STATE_OFFSET)
-+ #define LOOPBACK (8<<PHY_STATE_OFFSET)
-+
-+#define PHY_SPEED_OFFSET (PHY_STATE_OFFSET+PHY_STATE_SIZE)
-+#define PHY_SPEED_SIZE (1) /* 11 Bits used */
-+#define PHY_SPEED_MASK (1<<PHY_SPEED_OFFSET)
-+
-+#define PHY_DUPLEX_OFFSET (PHY_SPEED_OFFSET+PHY_SPEED_SIZE)
-+#define PHY_DUPLEX_SIZE (1) /* 12 Bits used */
-+#define PHY_DUPLEX_MASK (1<<PHY_DUPLEX_OFFSET)
-+
-+#define PHY_TIM_OFFSET (PHY_DUPLEX_OFFSET+PHY_DUPLEX_SIZE)
-+#define PHY_TIM_SIZE (10) /* 22 Bits used */
-+#define PHY_TIM_MASK (0x3ff<<PHY_TIM_OFFSET)
-+ #define PHY_FIND_TO ( 2<<PHY_TIM_OFFSET)
-+ #define PHY_RECK_TO (200<<PHY_TIM_OFFSET)
-+ #define PHY_LINK_TO (500<<PHY_TIM_OFFSET)
-+ #define PHY_NWST_TO (500<<PHY_TIM_OFFSET)
-+ #define PHY_NWDN_TO (800<<PHY_TIM_OFFSET)
-+ #define PHY_MDIX_TO (274<<PHY_TIM_OFFSET) /* 2.74 Seconds <--Spec and empirical */
-+
-+#define PHY_SMODE_OFFSET (PHY_TIM_OFFSET+PHY_TIM_SIZE)
-+#define PHY_SMODE_SIZE (5) /* 27 Bits used */
-+#define PHY_SMODE_MASK (0x1f<<PHY_SMODE_OFFSET)
-+ #define SMODE_AUTO (0x10<<PHY_SMODE_OFFSET)
-+ #define SMODE_FD100 (0x08<<PHY_SMODE_OFFSET)
-+ #define SMODE_HD100 (0x04<<PHY_SMODE_OFFSET)
-+ #define SMODE_FD10 (0x02<<PHY_SMODE_OFFSET)
-+ #define SMODE_HD10 (0x01<<PHY_SMODE_OFFSET)
-+ #define SMODE_ALL (0x1f<<PHY_SMODE_OFFSET)
-+
-+#define PHY_CHNG_OFFSET (PHY_SMODE_OFFSET+PHY_SMODE_SIZE)
-+#define PHY_CHNG_SIZE (1) /* 28 Bits used */
-+#define PHY_CHNG_MASK (1<<PHY_CHNG_OFFSET)
-+ #define PHY_CHANGE (1<<PHY_CHNG_OFFSET)
-+
-+#define PHY_TIMEDOUT_OFFSET (PHY_CHNG_OFFSET+PHY_CHNG_SIZE)
-+#define PHY_TIMEDOUT_SIZE (1) /* 29 Bits used */
-+#define PHY_TIMEDOUT_MASK (1<<PHY_TIMEDOUT_OFFSET)
-+ #define PHY_MDIX_SWITCH (1<<PHY_TIMEDOUT_OFFSET)
-+
-+#define PHY_MDIX_OFFSET (PHY_TIMEDOUT_OFFSET+PHY_TIMEDOUT_SIZE)
-+#define PHY_MDIX_SIZE (1) /* 30 Bits used */
-+#define PHY_MDIX_MASK (1<<PHY_MDIX_OFFSET)
-+ #define PHY_MDIX (1<<PHY_MDIX_OFFSET)
-+
-+static char *lstate[]={"NULL","INIT","FINDING","FOUND","NWAY_START","NWAY_WAIT","LINK_WAIT","LINKED", "LOOPBACK"};
-+static int cpMacDebug;
-+
-+/* Local MDIO Register Macros */
-+
-+#define myMDIO_ALIVE MDIO_ALIVE (PhyDev->miibase)
-+#define myMDIO_CONTROL MDIO_CONTROL (PhyDev->miibase)
-+#define myMDIO_LINK MDIO_LINK (PhyDev->miibase)
-+#define myMDIO_LINKINT MDIO_LINKINT (PhyDev->miibase)
-+#define myMDIO_USERACCESS MDIO_USERACCESS(PhyDev->miibase, PhyDev->inst)
-+#define myMDIO_USERPHYSEL MDIO_USERPHYSEL(PhyDev->miibase, PhyDev->inst)
-+#define myMDIO_VER MDIO_VER (PhyDev->miibase)
-+
-+#ifndef VOLATILE32
-+#define VOLATILE32(addr) (*((volatile bit32u *)(addr)))
-+#endif
-+
-+/************************************
-+***
-+*** Delays at least ClockWait cylces
-+*** before returning
-+***
-+**************************************/
-+void _mdioDelayEmulate(PHY_DEVICE *PhyDev, int ClockWait)
-+ {
-+#ifdef _CPHAL_CPMAC /*+RC3.02*/
-+ HAL_DEVICE *HalDev = PhyDev->HalDev; /*+RC3.02*/
-+ osfuncSleep((int*)&ClockWait); /*+RC3.02*/
-+#else /*+RC3.02*/
-+ volatile bit32u i=0;
-+ while(ClockWait--)
-+ {
-+ i |= myMDIO_LINK; /* MDIO register access to burn cycles */
-+ }
-+#endif
-+ }
-+
-+void _mdioWaitForAccessComplete(PHY_DEVICE *PhyDev)
-+ {
-+ while((myMDIO_USERACCESS & MDIO_USERACCESS_GO)!=0)
-+ {
-+ }
-+ }
-+
-+void _mdioUserAccess(PHY_DEVICE *PhyDev, bit32u method, bit32u regadr, bit32u phyadr, bit32u data)
-+ {
-+ bit32u control;
-+
-+ control = MDIO_USERACCESS_GO |
-+ (method) |
-+ (((regadr) << 21) & MDIO_USERACCESS_REGADR) |
-+ (((phyadr) << 16) & MDIO_USERACCESS_PHYADR) |
-+ ((data) & MDIO_USERACCESS_DATA);
-+
-+ myMDIO_USERACCESS = control;
-+ }
-+
-+
-+
-+/************************************
-+***
-+*** Waits for MDIO_USERACCESS to be ready and reads data
-+*** If 'WaitForData' set, waits for read to complete and returns Data,
-+*** otherwise returns 0
-+*** Note: 'data' is 16 bits but we use 32 bits
-+*** to be consistent with rest of the code.
-+***
-+**************************************/
-+bit32u _mdioUserAccessRead(PHY_DEVICE *PhyDev, bit32u regadr, bit32u phyadr)
-+ {
-+
-+ _mdioWaitForAccessComplete(PhyDev); /* Wait until UserAccess ready */
-+ _mdioUserAccess(PhyDev, MDIO_USERACCESS_READ, regadr, phyadr, 0);
-+ _mdioWaitForAccessComplete(PhyDev); /* Wait for Read to complete */
-+
-+ return(myMDIO_USERACCESS & MDIO_USERACCESS_DATA);
-+ }
-+
-+
-+/************************************
-+***
-+*** Waits for MDIO_USERACCESS to be ready and writes data
-+***
-+**************************************/
-+void _mdioUserAccessWrite(PHY_DEVICE *PhyDev, bit32u regadr, bit32u phyadr, bit32u data)
-+ {
-+ _mdioWaitForAccessComplete(PhyDev); /* Wait until UserAccess ready */
-+ _mdioUserAccess(PhyDev, MDIO_USERACCESS_WRITE, regadr, phyadr, data);
-+ }
-+
-+void _mdioDumpPhyDetailed(PHY_DEVICE *PhyDev)
-+{
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u PhyNum;
-+ int RegData;
-+
-+ PhyNum=(*PhyState&PHY_DEV_MASK)>>PHY_DEV_OFFSET;
-+
-+ RegData = _mdioUserAccessRead(PhyDev, 0, PhyNum);
-+ mdioPrintf("PhyControl: %04X, Lookback=%s, Speed=%s, Duplex=%s\n",
-+ RegData,
-+ RegData&PHY_LOOP?"On":"Off",
-+ RegData&PHY_100?"100":"10",
-+ RegData&PHY_FD?"Full":"Half");
-+ RegData = _mdioUserAccessRead(PhyDev, 1, PhyNum);
-+ mdioPrintf("PhyStatus: %04X, AutoNeg=%s, Link=%s\n",
-+ RegData,
-+ RegData&NWAY_COMPLETE?"Complete":"NotComplete",
-+ RegData&PHY_LINKED?"Up":"Down");
-+ RegData = _mdioUserAccessRead(PhyDev, 4, PhyNum);
-+ mdioPrintf("PhyMyCapability: %04X, 100FD=%s, 100HD=%s, 10FD=%s, 10HD=%s\n",
-+ RegData,
-+ RegData&NWAY_FD100?"Yes":"No",
-+ RegData&NWAY_HD100?"Yes":"No",
-+ RegData&NWAY_FD10?"Yes":"No",
-+ RegData&NWAY_HD10?"Yes":"No");
-+
-+ RegData = _mdioUserAccessRead(PhyDev, 5, PhyNum);
-+ mdioPrintf("PhyPartnerCapability: %04X, 100FD=%s, 100HD=%s, 10FD=%s, 10HD=%s\n",
-+ RegData,
-+ RegData&NWAY_FD100?"Yes":"No",
-+ RegData&NWAY_HD100?"Yes":"No",
-+ RegData&NWAY_FD10?"Yes":"No",
-+ RegData&NWAY_HD10?"Yes":"No");
-+}
-+void _mdioDumpPhy(PHY_DEVICE *PhyDev, bit32u p)
-+ {
-+ bit32u j,n,PhyAcks;
-+ bit32u PhyRegAddr;
-+ bit32u phy_num;
-+ bit32u PhyMask = PhyDev->PhyMask;
-+
-+ PhyAcks=myMDIO_ALIVE;
-+ PhyAcks&=PhyMask; /* Only interested in 'our' Phys */
-+
-+ for(phy_num=0,j=1;phy_num<32;phy_num++,j<<=1)
-+ {
-+ if (PhyAcks&j)
-+ {
-+ mdioPrintf("%2d%s:",phy_num,(phy_num==p)?">":" ");
-+ for(PhyRegAddr=0;PhyRegAddr<6;PhyRegAddr++)
-+ {
-+ n = _mdioUserAccessRead(PhyDev, PhyRegAddr, phy_num);
-+ mdioPrintf(" %04x",n&0x0ffff);
-+ }
-+ mdioPrintf("\n");
-+ }
-+ }
-+ _mdioDumpPhyDetailed(PhyDev);
-+ }
-+
-+void _mdioDumpState(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u state = PhyDev->PhyState;
-+
-+ if (!cpMacDebug) return;
-+
-+ mdioPrintf("Phy: %d, ",(state&PHY_DEV_MASK)>>PHY_DEV_OFFSET);
-+ mdioPrintf("State: %d/%s, ",(state&PHY_STATE_MASK)>>PHY_STATE_OFFSET,lstate[(state&PHY_STATE_MASK)>>PHY_STATE_OFFSET]);
-+ mdioPrintf("Speed: %d, ",(state&PHY_SPEED_MASK)>>PHY_SPEED_OFFSET);
-+ mdioPrintf("Dup: %d, ",(state&PHY_DUPLEX_MASK)>>PHY_DUPLEX_OFFSET);
-+ mdioPrintf("Tim: %d, ",(state&PHY_TIM_MASK)>>PHY_TIM_OFFSET);
-+ mdioPrintf("SMode: %d, ",(state&PHY_SMODE_MASK)>>PHY_SMODE_OFFSET);
-+ mdioPrintf("Chng: %d",(state&PHY_CHNG_MASK)>>PHY_CHNG_OFFSET);
-+ mdioPrintf("\n");
-+
-+ if (((state&PHY_STATE_MASK)!=FINDING)&&((state&PHY_STATE_MASK)!=INIT))
-+ _mdioDumpPhy(PhyDev, (state&PHY_DEV_MASK)>>PHY_DEV_OFFSET);
-+ }
-+
-+
-+void _mdioResetPhy(PHY_DEVICE *PhyDev,bit32u PhyNum)
-+ {
-+ bit16u PhyControlReg;
-+
-+ _mdioUserAccessWrite(PhyDev, PHY_CONTROL_REG, PhyNum, PHY_RESET);
-+ if (cpMacDebug)
-+ mdioPrintf("cpMacMdioPhYReset(%d)\n",PhyNum);
-+
-+ /* Read control register until Phy Reset is complete */
-+ do
-+ {
-+ PhyControlReg = _mdioUserAccessRead(PhyDev, PHY_CONTROL_REG, PhyNum);
-+ }
-+ while (PhyControlReg & PHY_RESET); /* Wait for Reset to clear */
-+ }
-+
-+void _mdioDisablePhy(PHY_DEVICE *PhyDev,bit32u PhyNum)
-+ {
-+ _mdioUserAccessWrite(PhyDev, PHY_CONTROL_REG, PhyNum, PHY_ISOLATE|PHY_PDOWN);
-+
-+ if (cpMacDebug)
-+ mdioPrintf("cpMacMdioDisablePhy(%d)\n",PhyNum);
-+
-+ }
-+
-+void _MdioInitState(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u CurrentState;
-+
-+ CurrentState=*PhyState;
-+ CurrentState=(CurrentState&~PHY_TIM_MASK)|(PHY_FIND_TO);
-+ CurrentState=(CurrentState&~PHY_STATE_MASK)|(FINDING);
-+ CurrentState=(CurrentState&~PHY_SPEED_MASK);
-+ CurrentState=(CurrentState&~PHY_DUPLEX_MASK);
-+ CurrentState|=PHY_CHANGE;
-+
-+ *PhyState=CurrentState;
-+
-+ }
-+
-+void _MdioFindingState(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u PhyMask = PhyDev->PhyMask;
-+ bit32u PhyNum,i,j,PhyAcks;
-+
-+
-+ PhyNum=PHY_NOT_FOUND;
-+
-+ if (*PhyState&PHY_TIM_MASK)
-+ {
-+ *PhyState=(*PhyState&~PHY_TIM_MASK)|((*PhyState&PHY_TIM_MASK)-(1<<PHY_TIM_OFFSET));
-+ }
-+ else
-+ {
-+ PhyAcks=myMDIO_ALIVE;
-+ PhyAcks&=PhyMask; /* Only interested in 'our' Phys */
-+
-+ for(i=0,j=1;(i<32)&&((j&PhyAcks)==0);i++,j<<=1);
-+
-+ if ((PhyAcks)&&(i<32)) PhyNum=i;
-+ if (PhyNum!=PHY_NOT_FOUND)
-+ {
-+ /* Phy Found! */
-+ *PhyState=(*PhyState&~PHY_DEV_MASK)|((PhyNum&PHY_DEV_MASK)<<PHY_DEV_OFFSET);
-+ *PhyState=(*PhyState&~PHY_STATE_MASK)|(FOUND);
-+ *PhyState|=PHY_CHANGE;
-+ if (cpMacDebug)
-+ mdioPrintf("cpMacMdioFindingState: PhyNum: %d\n",PhyNum);
-+ }
-+ else
-+ {
-+ if (cpMacDebug)
-+ mdioPrintf("cpMacMdioFindingState: Timed Out looking for a Phy!\n");
-+ *PhyState|=PHY_RECK_TO; /* This state currently has no support?*/
-+ }
-+ }
-+ }
-+
-+void _MdioFoundState(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u PhyMask = PhyDev->PhyMask;
-+ bit32u MLinkMask = PhyDev->MLinkMask;
-+ bit32u PhyNum,PhyStatus,NWAYadvertise,m,phynum,i,j,PhyAcks;
-+ bit32u PhySel;
-+
-+ if ((*PhyState&PHY_SMODE_MASK)==0) return;
-+
-+ PhyNum=(*PhyState&PHY_DEV_MASK)>>PHY_DEV_OFFSET;
-+
-+ PhyAcks=myMDIO_ALIVE;
-+ PhyAcks&=PhyMask; /* Only interested in 'our' Phys */
-+
-+ /* Will now isolate all our Phys, except the one we have decided to use */
-+ for(phynum=0,j=1;phynum<32;phynum++,j<<=1)
-+ {
-+ if (PhyAcks&j)
-+ {
-+ if (phynum!=PhyNum) /* Do not disabled Found Phy */
-+ _mdioDisablePhy(PhyDev,phynum);
-+ }
-+ }
-+
-+ /* Reset the Phy and proceed with auto-negotiation */
-+ _mdioResetPhy(PhyDev,PhyNum);
-+
-+ /* Now setup the MDIOUserPhySel register */
-+
-+ PhySel=PhyNum; /* Set the phy address */
-+
-+ /* Set the way Link will be Monitored */
-+ /* Check the Link Selection Method */
-+ if ((1 << PhyNum) & MLinkMask)
-+ PhySel |= MDIO_USERPHYSEL_LINKSEL;
-+
-+ myMDIO_USERPHYSEL = PhySel; /* update PHYSEL */
-+
-+ /* Get the Phy Status */
-+ PhyStatus = _mdioUserAccessRead(PhyDev, PHY_STATUS_REG, PhyNum);
-+
-+
-+#ifdef _CPHAL_CPMAC
-+ /* For Phy Internal loopback test, need to wait until Phy
-+ found, then set Loopback */
-+ if (PhyDev->HalDev->MdioConnect & _CPMDIO_LOOPBK)
-+ {
-+ /* Set Phy in Loopback */
-+ _mdioUserAccessWrite(PhyDev, PHY_CONTROL_REG, PhyNum, PHY_LOOP|PHY_FD);
-+ /* Do a read to ensure PHY_LOOP has completed */
-+ _mdioUserAccessRead(PhyDev, PHY_STATUS_REG, PhyNum);
-+ *PhyState=(*PhyState&~PHY_STATE_MASK)|(LOOPBACK);
-+ *PhyState|=PHY_CHANGE;
-+ return;
-+ }
-+#endif
-+
-+
-+ if (cpMacDebug)
-+ mdioPrintf("Enable Phy to negotiate external connection\n");
-+
-+ NWAYadvertise=NWAY_SEL;
-+ if (*PhyState&SMODE_FD100) NWAYadvertise|=NWAY_FD100;
-+ if (*PhyState&SMODE_HD100) NWAYadvertise|=NWAY_HD100;
-+ if (*PhyState&SMODE_FD10) NWAYadvertise|=NWAY_FD10;
-+ if (*PhyState&SMODE_HD10) NWAYadvertise|=NWAY_HD10;
-+
-+ *PhyState&=~(PHY_TIM_MASK|PHY_STATE_MASK);
-+ if ((PhyStatus&NWAY_CAPABLE)&&(*PhyState&SMODE_AUTO)) /*NWAY Phy Detected*/
-+ {
-+ /*For NWAY compliant Phys */
-+
-+ _mdioUserAccessWrite(PhyDev, NWAY_ADVERTIZE_REG, PhyNum, NWAYadvertise);
-+
-+ if (cpMacDebug)
-+ {
-+ mdioPrintf("NWAY Advertising: ");
-+ if (NWAYadvertise&NWAY_FD100) mdioPrintf("FullDuplex-100 ");
-+ if (NWAYadvertise&NWAY_HD100) mdioPrintf("HalfDuplex-100 ");
-+ if (NWAYadvertise&NWAY_FD10) mdioPrintf("FullDuplex-10 ");
-+ if (NWAYadvertise&NWAY_HD10) mdioPrintf("HalfDuplex-10 ");
-+ mdioPrintf("\n");
-+ }
-+
-+ _mdioUserAccessWrite(PhyDev, PHY_CONTROL_REG, PhyNum, AUTO_NEGOTIATE_EN);
-+
-+ _mdioUserAccessWrite(PhyDev, PHY_CONTROL_REG, PhyNum, AUTO_NEGOTIATE_EN|RENEGOTIATE);
-+
-+ *PhyState|=PHY_CHANGE|PHY_NWST_TO|NWAY_START;
-+ }
-+ else
-+ {
-+ *PhyState&=~SMODE_AUTO; /*The Phy is not capable of auto negotiation! */
-+ m=NWAYadvertise;
-+ for(j=0x8000,i=0;(i<16)&&((j&m)==0);i++,j>>=1);
-+ m=j;
-+ j=0;
-+ if (m&(NWAY_FD100|NWAY_HD100))
-+ {
-+ j=PHY_100;
-+ m&=(NWAY_FD100|NWAY_HD100);
-+ }
-+ if (m&(NWAY_FD100|NWAY_FD10))
-+ j |= PHY_FD;
-+ if (cpMacDebug)
-+ mdioPrintf("Requested PHY mode %s Duplex %s Mbps\n",(j&PHY_FD)?"Full":"Half",(j&PHY_100)?"100":"10");
-+ _mdioUserAccessWrite(PhyDev, PHY_CONTROL_REG, PhyNum, j);
-+ *PhyState&=~PHY_SPEED_MASK;
-+ if (j&PHY_100)
-+ *PhyState|=(1<<PHY_SPEED_OFFSET);
-+ *PhyState&=~PHY_DUPLEX_MASK;
-+ if (j&PHY_FD)
-+ *PhyState|=(1<<PHY_DUPLEX_OFFSET);
-+ *PhyState|=PHY_CHANGE|PHY_LINK_TO|LINK_WAIT;
-+ }
-+ _mdioMdixDelay(PhyDev); /* If AutoMdix add delay */
-+ }
-+
-+void _MdioNwayStartState(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u PhyNum,PhyMode;
-+
-+ PhyNum=(*PhyState&PHY_DEV_MASK)>>PHY_DEV_OFFSET;
-+
-+ /*Wait for Negotiation to start */
-+
-+ PhyMode=_mdioUserAccessRead(PhyDev, PHY_CONTROL_REG, PhyNum);
-+
-+ if((PhyMode&RENEGOTIATE)==0)
-+ {
-+ _mdioUserAccessRead(PhyDev, PHY_STATUS_REG, PhyNum); /*Flush pending latch bits*/
-+ *PhyState&=~(PHY_STATE_MASK|PHY_TIM_MASK);
-+ *PhyState|=PHY_CHANGE|NWAY_WAIT|PHY_NWDN_TO;
-+ _mdioMdixDelay(PhyDev); /* If AutoMdix add delay */
-+ }
-+ else
-+ {
-+ if (*PhyState&PHY_TIM_MASK)
-+ *PhyState=(*PhyState&~PHY_TIM_MASK)|((*PhyState&PHY_TIM_MASK)-(1<<PHY_TIM_OFFSET));
-+ else
-+ _mdioPhyTimeOut(PhyDev);
-+ }
-+ }
-+
-+void _MdioNwayWaitState(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u PhyNum,PhyStatus,NWAYadvertise,NWAYREadvertise,NegMode,i,j;
-+
-+ PhyNum=(*PhyState&PHY_DEV_MASK)>>PHY_DEV_OFFSET;
-+
-+ PhyStatus=_mdioUserAccessRead(PhyDev, PHY_STATUS_REG, PhyNum);
-+
-+ if (PhyStatus&NWAY_COMPLETE)
-+ {
-+ *PhyState|=PHY_CHANGE;
-+ *PhyState&=~PHY_SPEED_MASK;
-+ *PhyState&=~PHY_DUPLEX_MASK;
-+
-+ NWAYadvertise =_mdioUserAccessRead(PhyDev, NWAY_ADVERTIZE_REG, PhyNum);
-+ NWAYREadvertise =_mdioUserAccessRead(PhyDev, NWAY_REMADVERTISE_REG, PhyNum);
-+
-+ /* Negotiated mode is we and the remote have in common */
-+ NegMode = NWAYadvertise & NWAYREadvertise;
-+
-+ if (cpMacDebug)
-+ {
-+ mdioPrintf("Phy: %d, ",(*PhyState&PHY_DEV_MASK)>>PHY_DEV_OFFSET);
-+ mdioPrintf("NegMode %04X, NWAYadvertise %04X, NWAYREadvertise %04X\n",
-+ NegMode, NWAYadvertise, NWAYREadvertise);
-+ }
-+
-+ /* Limit negotiation to fields below */
-+ NegMode &= (NWAY_FD100|NWAY_HD100|NWAY_FD10|NWAY_HD10);
-+
-+ if (NegMode==0)
-+ {
-+ NegMode=(NWAY_HD100|NWAY_HD10)&NWAYadvertise; /*or 10 ?? who knows, Phy is not MII compliant*/
-+ if(cpMacDebug)
-+ {
-+ mdioPrintf("Mdio:WARNING: Negotiation complete but NO agreement, default is HD\n");
-+ _mdioDumpPhyDetailed(PhyDev);
-+ }
-+ }
-+ for(j=0x8000,i=0;(i<16)&&((j&NegMode)==0);i++,j>>=1);
-+
-+
-+ NegMode=j;
-+ if (cpMacDebug)
-+ {
-+ mdioPrintf("Negotiated connection: ");
-+ if (NegMode&NWAY_FD100) mdioPrintf("FullDuplex 100 Mbs\n");
-+ if (NegMode&NWAY_HD100) mdioPrintf("HalfDuplex 100 Mbs\n");
-+ if (NegMode&NWAY_FD10) mdioPrintf("FullDuplex 10 Mbs\n");
-+ if (NegMode&NWAY_HD10) mdioPrintf("HalfDuplex 10 Mbs\n");
-+ }
-+ if (NegMode!=0)
-+ {
-+ if (PhyStatus&PHY_LINKED)
-+ *PhyState=(*PhyState&~PHY_STATE_MASK)|LINKED;
-+ else
-+ *PhyState=(*PhyState&~PHY_STATE_MASK)|LINK_WAIT;
-+ if (NegMode&(NWAY_FD100|NWAY_HD100))
-+ *PhyState=(*PhyState&~PHY_SPEED_MASK)|(1<<PHY_SPEED_OFFSET);
-+ if (NegMode&(NWAY_FD100|NWAY_FD10))
-+ *PhyState=(*PhyState&~PHY_DUPLEX_MASK)|(1<<PHY_DUPLEX_OFFSET);
-+ }
-+ }
-+ else
-+ {
-+ if (*PhyState&PHY_TIM_MASK)
-+ *PhyState=(*PhyState&~PHY_TIM_MASK)|((*PhyState&PHY_TIM_MASK)-(1<<PHY_TIM_OFFSET));
-+ else
-+ _mdioPhyTimeOut(PhyDev);
-+ }
-+ }
-+
-+void _MdioLinkWaitState(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u PhyStatus;
-+ bit32u PhyNum;
-+
-+ PhyNum=(*PhyState&PHY_DEV_MASK)>>PHY_DEV_OFFSET;
-+
-+ PhyStatus=_mdioUserAccessRead(PhyDev, PHY_STATUS_REG, PhyNum);
-+
-+ if (PhyStatus&PHY_LINKED)
-+ {
-+ *PhyState=(*PhyState&~PHY_STATE_MASK)|LINKED;
-+ *PhyState|=PHY_CHANGE;
-+ }
-+ else
-+ {
-+ if (*PhyState&PHY_TIM_MASK)
-+ *PhyState=(*PhyState&~PHY_TIM_MASK)|((*PhyState&PHY_TIM_MASK)-(1<<PHY_TIM_OFFSET));
-+ else
-+ _mdioPhyTimeOut(PhyDev);
-+ }
-+ }
-+
-+void _mdioPhyTimeOut(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState;
-+
-+ if(_mdioMdixSupported(PhyDev) == 0)
-+ return; /* AutoMdix not supported */
-+
-+ PhyState = &PhyDev->PhyState;
-+
-+ /* Indicate MDI/MDIX mode switch is needed */
-+ *PhyState|=PHY_MDIX_SWITCH;
-+
-+ /* Toggle the MDIX mode indicatir */
-+ if(*PhyState & PHY_MDIX)
-+ *PhyState &= ~PHY_MDIX_MASK; /* Current State is MDIX, set to MDI */
-+ else
-+ *PhyState |= PHY_MDIX_MASK; /* Current State is MDI, set to MDIX */
-+
-+ /* Reset state machine to FOUND */
-+ *PhyState=(*PhyState&~PHY_STATE_MASK)|(FOUND);
-+ }
-+
-+void _MdioLoopbackState(PHY_DEVICE *PhyDev)
-+ {
-+ return;
-+ }
-+
-+void _MdioLinkedState(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u PhyNum = (*PhyState&PHY_DEV_MASK)>>PHY_DEV_OFFSET;
-+
-+ if (myMDIO_LINK&(1<<PhyNum)) return; /* if still Linked, exit*/
-+
-+ /* Not Linked */
-+ *PhyState&=~(PHY_STATE_MASK|PHY_TIM_MASK);
-+ if (*PhyState&SMODE_AUTO)
-+ *PhyState|=PHY_CHANGE|NWAY_WAIT|PHY_NWDN_TO;
-+ else
-+ *PhyState|=PHY_CHANGE|PHY_LINK_TO|LINK_WAIT;
-+
-+ _mdioMdixDelay(PhyDev); /* If AutoMdix add delay */
-+ }
-+
-+void _MdioDefaultState(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ /*Awaiting a cpMacMdioInit call */
-+ *PhyState|=PHY_CHANGE;
-+ }
-+
-+
-+/*User Calls********************************************************* */
-+
-+void cpMacMdioClose(PHY_DEVICE *PhyDev, int Full)
-+ {
-+ }
-+
-+
-+int cpMacMdioInit(PHY_DEVICE *PhyDev, bit32u miibase, bit32u inst, bit32u PhyMask, bit32u MLinkMask, bit32u MdixMask, bit32u ResetReg, bit32u ResetBit, bit32u MdioBusFreq, bit32u MdioClockFreq, int verbose, void *Info)
-+ {
-+ bit32u HighestChannel;
-+ bit32u ControlState;
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u clkdiv; /*MJH+030328*/
-+
-+ cpMacDebug=verbose;
-+
-+ PhyDev->miibase = miibase;
-+ PhyDev->inst = inst;
-+ PhyDev->PhyMask = PhyMask;
-+ PhyDev->MLinkMask = MLinkMask;
-+ PhyDev->MdixMask = MdixMask;
-+#ifdef _CPHAL_CPMAC
-+ PhyDev->HalDev = (HAL_DEVICE*) Info;
-+#endif
-+
-+ *PhyState &= ~PHY_MDIX_MASK; /* Set initial State to MDI */
-+
-+ /* Check that the channel supplied is within range */
-+ HighestChannel = (myMDIO_CONTROL & MDIO_CONTROL_HIGHEST_USER_CHANNEL) > 8;
-+ if(inst > HighestChannel)
-+ return(HighestChannel);
-+
-+ /*Setup MII MDIO access regs */
-+
-+ /* Calculate the correct value for the mclkdiv */
-+ /* See PITS #14 */
-+ if (MdioClockFreq) /*MJH+030402*/
-+ clkdiv = (MdioBusFreq / MdioClockFreq) - 1; /*MJH+030402*/
-+ else /*MJH+030402*/
-+ clkdiv = 0xFF; /*MJH+030402*/
-+
-+ ControlState = MDIO_CONTROL_ENABLE;
-+ ControlState |= (clkdiv & MDIO_CONTROL_CLKDIV); /*MJH+030328*/
-+
-+ /*
-+ If mii is not out of reset or if the Control Register is not set correctly
-+ then initalize
-+ */
-+ if( !(VOLATILE32(ResetReg) & (1 << ResetBit)) ||
-+ ((myMDIO_CONTROL & (MDIO_CONTROL_CLKDIV | MDIO_CONTROL_ENABLE)) != ControlState) )/*GSG~030404*/
-+ {
-+ /* MII not setup, Setup initial condition */
-+ VOLATILE32(ResetReg) &= ~(1 << ResetBit);
-+ _mdioDelayEmulate(PhyDev, 64);
-+ VOLATILE32(ResetReg) |= (1 << ResetBit); /* take mii out of reset */
-+ _mdioDelayEmulate(PhyDev, 64);
-+ myMDIO_CONTROL = ControlState; /* Enable MDIO */
-+ }
-+
-+ *PhyState=INIT;
-+
-+ if (cpMacDebug)
-+ mdioPrintf("cpMacMdioInit\n");
-+ _mdioDumpState(PhyDev);
-+ return(0);
-+ }
-+
-+void cpMacMdioSetPhyMode(PHY_DEVICE *PhyDev,bit32u PhyMode)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u CurrentState;
-+
-+ PhyDev->PhyMode = PhyMode; /* used for AUTOMIDX, planned to replace PhyState fields */
-+
-+ *PhyState&=~PHY_SMODE_MASK;
-+
-+ if (PhyMode&NWAY_AUTO) *PhyState|=SMODE_AUTO;
-+ if (PhyMode&NWAY_FD100) *PhyState|=SMODE_FD100;
-+ if (PhyMode&NWAY_HD100) *PhyState|=SMODE_HD100;
-+ if (PhyMode&NWAY_FD10) *PhyState|=SMODE_FD10;
-+ if (PhyMode&NWAY_HD10) *PhyState|=SMODE_HD10;
-+
-+ CurrentState=*PhyState&PHY_STATE_MASK;
-+ if ((CurrentState==NWAY_START)||
-+ (CurrentState==NWAY_WAIT) ||
-+ (CurrentState==LINK_WAIT) ||
-+ (CurrentState==LINKED) )
-+ *PhyState=(*PhyState&~PHY_STATE_MASK)|FOUND|PHY_CHANGE;
-+ if (cpMacDebug)
-+ mdioPrintf("cpMacMdioSetPhyMode:%08X Auto:%d, FD10:%d, HD10:%d, FD100:%d, HD100:%d\n", PhyMode,
-+ PhyMode&NWAY_AUTO, PhyMode&NWAY_FD10, PhyMode&NWAY_HD10, PhyMode&NWAY_FD100,
-+ PhyMode&NWAY_HD100);
-+ _mdioDumpState(PhyDev);
-+ }
-+
-+/* cpMacMdioTic is called every 10 mili seconds to process Phy states */
-+
-+int cpMacMdioTic(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u CurrentState;
-+
-+ /*Act on current state of the Phy */
-+
-+ CurrentState=*PhyState;
-+ switch(CurrentState&PHY_STATE_MASK)
-+ {
-+ case INIT: _MdioInitState(PhyDev); break;
-+ case FINDING: _MdioFindingState(PhyDev); break;
-+ case FOUND: _MdioFoundState(PhyDev); break;
-+ case NWAY_START: _MdioNwayStartState(PhyDev); break;
-+ case NWAY_WAIT: _MdioNwayWaitState(PhyDev); break;
-+ case LINK_WAIT: _MdioLinkWaitState(PhyDev); break;
-+ case LINKED: _MdioLinkedState(PhyDev); break;
-+ case LOOPBACK: _MdioLoopbackState(PhyDev); break;
-+ default: _MdioDefaultState(PhyDev); break;
-+ }
-+
-+ /*Dump state info if a change has been detected */
-+
-+ if ((CurrentState&~PHY_TIM_MASK)!=(*PhyState&~PHY_TIM_MASK))
-+ _mdioDumpState(PhyDev);
-+
-+ /* Check is MDI/MDIX mode switch is needed */
-+ if(*PhyState & PHY_MDIX_SWITCH)
-+ {
-+ bit32u Mdix;
-+
-+ *PhyState &= ~PHY_MDIX_SWITCH; /* Clear Mdix Flip indicator */
-+
-+ if(*PhyState & PHY_MDIX)
-+ Mdix = 1;
-+ else
-+ Mdix = 0;
-+ return(_MIIMDIO_MDIXFLIP|Mdix);
-+ }
-+
-+ /*Return state change to user */
-+
-+ if (*PhyState&PHY_CHNG_MASK)
-+ {
-+ *PhyState&=~PHY_CHNG_MASK;
-+ return(1);
-+ }
-+ else
-+ return(0);
-+ }
-+
-+/* cpMacMdioGetDuplex is called to retrieve the Duplex info */
-+
-+int cpMacMdioGetDuplex(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ return((*PhyState&PHY_DUPLEX_MASK)?1:0); /* return 0 or a 1 */
-+ }
-+
-+/* cpMacMdioGetSpeed is called to retreive the Speed info */
-+
-+int cpMacMdioGetSpeed(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ return(*PhyState&PHY_SPEED_MASK);
-+ }
-+
-+/* cpMacMdioGetPhyNum is called to retreive the Phy Device Adr info */
-+
-+int cpMacMdioGetPhyNum(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ return((*PhyState&PHY_DEV_MASK)>>PHY_DEV_OFFSET);
-+ }
-+
-+/* cpMacMdioGetLoopback is called to Determine if the LOOPBACK state has been reached*/
-+
-+int cpMacMdioGetLoopback(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ return((*PhyState&PHY_STATE_MASK)==LOOPBACK);
-+ }
-+/* cpMacMdioGetLinked is called to Determine if the LINKED state has been reached*/
-+
-+int cpMacMdioGetLinked(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ return((*PhyState&PHY_STATE_MASK)==LINKED);
-+ }
-+
-+void cpMacMdioLinkChange(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u PhyNum,PhyStatus;
-+
-+ PhyNum=(*PhyState&PHY_DEV_MASK)>>PHY_DEV_OFFSET;
-+
-+ if (cpMacMdioGetLinked(PhyDev))
-+ {
-+ PhyStatus=_mdioUserAccessRead(PhyDev, PHY_STATUS_REG, PhyNum);
-+
-+ if ((PhyStatus&PHY_LINKED)==0)
-+ {
-+ *PhyState&=~(PHY_TIM_MASK|PHY_STATE_MASK);
-+ if (*PhyState&SMODE_AUTO)
-+ {
-+ _mdioUserAccessWrite(PhyDev, PHY_CONTROL_REG, PhyNum, AUTO_NEGOTIATE_EN|RENEGOTIATE);
-+ *PhyState|=PHY_CHANGE|PHY_NWST_TO|NWAY_START;
-+ }
-+ else
-+ {
-+ *PhyState|=PHY_CHANGE|PHY_LINK_TO|LINK_WAIT;
-+ }
-+ }
-+ }
-+ }
-+
-+void cpMacMdioGetVer(bit32u miibase, bit32u *ModID, bit32u *RevMaj, bit32u *RevMin)
-+ {
-+ bit32u Ver;
-+
-+ Ver = MDIO_VER(miibase);
-+
-+ *ModID = (Ver & MDIO_VER_MODID) >> 16;
-+ *RevMaj = (Ver & MDIO_VER_REVMAJ) >> 8;
-+ *RevMin = (Ver & MDIO_VER_REVMIN);
-+ }
-+
-+int cpMacMdioGetPhyDevSize(void)
-+ {
-+ return(sizeof(PHY_DEVICE));
-+ }
-+
-+ /* returns 0 if current Phy has AutoMdix support, otherwise 0 */
-+int _mdioMdixSupported(PHY_DEVICE *PhyDev)
-+ {
-+ bit32u *PhyState = &PhyDev->PhyState;
-+ bit32u PhyNum;
-+
-+ if((PhyDev->PhyMode & NWAY_AUTOMDIX) == 0)
-+ return(0); /* AutoMdix not turned on */
-+
-+ PhyNum=(*PhyState&PHY_DEV_MASK)>>PHY_DEV_OFFSET;
-+ if( ((1<<PhyNum) & PhyDev->MdixMask) == 0)
-+ return(0); /* Phy does not support AutoMdix*/
-+
-+ return(1);
-+ }
-+
-+/* If current Phy has AutoMdix support add Mdix Delay to the Timer State Value */
-+void _mdioMdixDelay(PHY_DEVICE *PhyDev)
-+ {
-+ int Delay;
-+ bit32u *PhyState = &PhyDev->PhyState;
-+#ifdef _CPHAL_CPMAC
-+ HAL_DEVICE *HalDev = PhyDev->HalDev;
-+#endif
-+
-+ if(_mdioMdixSupported(PhyDev) == 0)
-+ return; /* AutoMdix not supported */
-+/* Currently only supported when used with the CPMAC */
-+#ifdef _CPHAL_CPMAC
-+ /* Get the Delay value in milli-seconds and convert to ten-milli second value */
-+ Delay = cpmacRandomRange(HalDev, _AUTOMDIX_DELAY_MIN, _AUTOMDIX_DELAY_MAX);
-+ Delay /= 10;
-+
-+ /* Add AutoMidx Random Switch Delay to AutoMdix Link Delay */
-+
-+ Delay += (PHY_MDIX_TO>>PHY_TIM_OFFSET);
-+
-+ /* Change Timeout value to AutoMdix standard */
-+ *PhyState &= ~(PHY_TIM_MASK); /* Clear current Time out value */
-+ *PhyState |= (Delay<<PHY_TIM_OFFSET); /* Set new value */
-+#endif
-+ }
-+
-+
-diff -urN linux.old/drivers/net/avalanche_cpmac/cpmdio.h linux.dev/drivers/net/avalanche_cpmac/cpmdio.h
---- linux.old/drivers/net/avalanche_cpmac/cpmdio.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/cpmdio.h 2005-07-12 02:48:42.047593000 +0200
-@@ -0,0 +1,73 @@
-+/*****************************************************************************
-+** TNETD53xx Software Support
-+** Copyright(c) 2002, Texas Instruments Incorporated. All Rights Reserved.
-+**
-+** FILE: cpmdio.h User Include for MDIO API Access
-+**
-+** DESCRIPTION:
-+** This include file contains definitions for the the MDIO API
-+**
-+** HISTORY:
-+** 27Mar02 Michael Hanrahan Original (modified from emacmdio.h)
-+** 04Apr02 Michael Hanrahan Added Interrupt Support
-+*****************************************************************************/
-+#ifndef _INC_CPMDIO
-+#define _INC_CPMDIO
-+
-+
-+#ifndef __CPHAL_CPMDIO
-+typedef void PHY_DEVICE;
-+#endif
-+
-+
-+/*Version Information */
-+
-+void cpMacMdioGetVer(bit32u miiBase, bit32u *ModID, bit32u *RevMaj, bit32u *RevMin);
-+
-+/*Called once at the begining of time */
-+
-+int cpMacMdioInit(PHY_DEVICE *PhyDev, bit32u miibase, bit32u inst, bit32u PhyMask, bit32u MLinkMask, bit32u MdixMask, bit32u ResetBase, bit32u ResetBit, bit32u MdioBusFreq, bit32u MdioClockFreq, int verbose, void *Info);
-+int cpMacMdioGetPhyDevSize(void);
-+
-+
-+/*Called every 10 mili Seconds, returns TRUE if there has been a mode change */
-+
-+int cpMacMdioTic(PHY_DEVICE *PhyDev);
-+
-+/*Called to set Phy mode */
-+
-+void cpMacMdioSetPhyMode(PHY_DEVICE *PhyDev,bit32u PhyMode);
-+
-+/*Calls to retreive info after a mode change! */
-+
-+int cpMacMdioGetDuplex(PHY_DEVICE *PhyDev);
-+int cpMacMdioGetSpeed(PHY_DEVICE *PhyDev);
-+int cpMacMdioGetPhyNum(PHY_DEVICE *PhyDev);
-+int cpMacMdioGetLinked(PHY_DEVICE *PhyDev);
-+void cpMacMdioLinkChange(PHY_DEVICE *PhyDev);
-+
-+/* Shot Down */
-+
-+void cpMacMdioClose(PHY_DEVICE *PhyDev, int Full);
-+
-+
-+/* Phy Mode Values */
-+#define NWAY_AUTOMDIX (1<<16)
-+#define NWAY_FD100 (1<<8)
-+#define NWAY_HD100 (1<<7)
-+#define NWAY_FD10 (1<<6)
-+#define NWAY_HD10 (1<<5)
-+#define NWAY_AUTO (1<<0)
-+
-+/*
-+ *
-+ * Tic() return values
-+ *
-+ */
-+
-+#define _MIIMDIO_MDIXFLIP (1<<28)
-+
-+#define _AUTOMDIX_DELAY_MIN 80 /* milli-seconds*/
-+#define _AUTOMDIX_DELAY_MAX 200 /* milli-seconds*/
-+
-+#endif /* _INC_CPMDIO */
-diff -urN linux.old/drivers/net/avalanche_cpmac/cppi_cpmac.c linux.dev/drivers/net/avalanche_cpmac/cppi_cpmac.c
---- linux.old/drivers/net/avalanche_cpmac/cppi_cpmac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/cppi_cpmac.c 2005-07-12 02:48:42.048593000 +0200
-@@ -0,0 +1,1345 @@
-+/*************************************************************************
-+ * TNETDxxxx Software Support
-+ * Copyright (c) 2002,2003 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * FILE: cppi.c
-+ *
-+ * DESCRIPTION:
-+ * This file contains shared code for all CPPI modules.
-+ *
-+ * HISTORY:
-+ * 7Aug02 Greg RC1.00 Original Version created.
-+ * 27Sep02 Mick RC1.01 Merged for use by CPMAC/CPSAR
-+ * 16Oct02 Mick RC1.02 Performance Tweaks (see cppihist.txt)
-+ * 12Nov02 Mick RC1.02 Updated to use cpmac_reg.h
-+ * 09Jan03 Mick RC3.01 Removed modification to RxBuffer ptr
-+ * 28Mar03 Mick 1.03 RxReturn now returns error if Malloc Fails
-+ * 10Apr03 Mick 1.03.02 Added Needs Buffer Support
-+ * 11Jun03 Mick 1.06.02 halSend() errors corrected
-+ * 23Aug04 Mick 1.07.08 cpmac only - Send: bypass threshold check if TxInts re-enabled
-+ *
-+ * @author Greg Guyotte
-+ * @version 1.00
-+ * @date 7-Aug-2002
-+ *****************************************************************************/
-+/* each CPPI module must modify this file, the rest of the
-+ code in cppi.c should be totally shared *//* Each CPPI module MUST properly define all constants shown below */
-+
-+/* CPPI registers */
-+
-+/* the following defines are not CPPI specific */
-+
-+static int TxInt(HAL_DEVICE *HalDev, int Ch, int Queue, int *MoreWork);
-+
-+static void FreeRx(HAL_DEVICE *HalDev, int Ch)
-+ {
-+ HAL_RCB *rcb_ptr; /*+GSG 030303*/
-+ int rcbSize = (sizeof(HAL_RCB)+0xf)&~0xf; /*+GSG 030303*/
-+ int Num = HalDev->ChData[Ch].RxNumBuffers, i; /*+GSG 030303*/
-+
-+ /* Free Rx data buffers attached to descriptors, if necessary */
-+ if (HalDev->RcbStart[Ch] != 0) /*+GSG 030303*/
-+ { /*+GSG 030303*/
-+ for(i=0;i<Num;i++) /*+GSG 030303*/
-+ { /*+GSG 030303*/
-+ rcb_ptr = (HAL_RCB *)(HalDev->RcbStart[Ch] + (i*rcbSize)); /*+GSG 030303*/
-+
-+ /* free the data buffer */
-+ if (rcb_ptr->DatPtr != 0)
-+ {
-+
-+ HalDev->OsFunc->FreeRxBuffer((void *)rcb_ptr->OsInfo, (void *)rcb_ptr->DatPtr);
-+ rcb_ptr->OsInfo=0; /*MJH+030522*/
-+ rcb_ptr->DatPtr=0; /*MJH+030522*/
-+ }
-+ } /*+GSG 030303*/
-+ } /*+GSG 030303*/
-+
-+ /* free up all desciptors at once */
-+ HalDev->OsFunc->FreeDmaXfer(HalDev->RcbStart[Ch]);
-+
-+ /* mark buffers as freed */
-+ HalDev->RcbStart[Ch] = 0;
-+ }
-+
-+static void FreeTx(HAL_DEVICE *HalDev, int Ch, int Queue)
-+ {
-+
-+/*+GSG 030303*/
-+
-+ /* free all descriptors at once */
-+ HalDev->OsFunc->FreeDmaXfer(HalDev->TcbStart[Ch][Queue]);
-+
-+ HalDev->TcbStart[Ch][Queue] = 0;
-+ }
-+
-+/* return of 0 means that this code executed, -1 means the interrupt was not
-+ a teardown interrupt */
-+static int RxTeardownInt(HAL_DEVICE *HalDev, int Ch)
-+ {
-+ bit32u base = HalDev->dev_base;
-+
-+ /* check to see if the interrupt is a teardown interrupt */
-+ if (((CPMAC_RX_INT_ACK( base , Ch )) & TEARDOWN_VAL) == TEARDOWN_VAL)
-+ {
-+ /* finish channel teardown */
-+
-+ /* Free channel resources on a FULL teardown */
-+ if (HalDev->RxTeardownPending[Ch] & FULL_TEARDOWN)
-+ {
-+ FreeRx(HalDev, Ch);
-+ }
-+
-+ /* bug fix - clear Rx channel pointers on teardown */
-+ HalDev->RcbPool[Ch] = 0;
-+ HalDev->RxActQueueHead[Ch] = 0;
-+ HalDev->RxActQueueCount[Ch] = 0;
-+ HalDev->RxActive[Ch] = FALSE;
-+
-+ /* write completion pointer */
-+ (CPMAC_RX_INT_ACK( base , Ch )) = TEARDOWN_VAL;
-+
-+ /* use direction bit as a teardown pending bit! May be able to
-+ use only one teardown pending integer in HalDev */
-+
-+ HalDev->RxTeardownPending[Ch] &= ~RX_TEARDOWN;
-+
-+ HalDev->ChIsOpen[Ch][DIRECTION_RX] = 0;
-+
-+ HalDev->ChIsOpen[Ch][DIRECTION_RX] = 0;
-+ CPMAC_RX_INTMASK_CLEAR(HalDev->dev_base) = (1<<Ch);
-+ if ((HalDev->RxTeardownPending[Ch] & BLOCKING_TEARDOWN) == 0)
-+ {
-+
-+ HalDev->OsFunc->TeardownComplete(HalDev->OsDev, Ch, DIRECTION_RX);
-+ }
-+ HalDev->RxTeardownPending[Ch] = 0;
-+
-+ return (EC_NO_ERRORS);
-+ }
-+ return (-1);
-+ }
-+
-+/* return of 0 means that this code executed, -1 means the interrupt was not
-+ a teardown interrupt. Note: this code is always called with Queue == 0 (hi priority). */
-+static int TxTeardownInt(HAL_DEVICE *HalDev, int Ch, int Queue)
-+ {
-+ bit32u base = HalDev->dev_base;
-+ HAL_TCB *Last, *Curr, *First; /*+GSG 030303*/
-+ int i;
-+
-+ if (((CPMAC_TX_INT_ACK( base , Ch )) & TEARDOWN_VAL) == TEARDOWN_VAL)
-+ {
-+ /* perform all actions for both queues (+GSG 040212) */
-+ for (i=0; i<HalDev->ChData[Ch].TxNumQueues; i++)
-+ {
-+ /* return outstanding buffers to OS +RC3.02*/
-+ Curr = HalDev->TxActQueueHead[Ch][i]; /*+GSG 030303*/
-+ First = Curr; /*+GSG 030303*/
-+ while (Curr) /*+GSG 030303*/
-+ { /*+GSG 030303*/
-+ /* Pop TCB(s) for packet from the stack */ /*+GSG 030303*/
-+ Last = Curr->Eop; /*+GSG 030303*/
-+ HalDev->TxActQueueHead[Ch][i] = Last->Next; /*+GSG 030303*/
-+ /*+GSG 030303*/
-+ /* return to OS */ /*+GSG 030303*/
-+ HalDev->OsFunc->SendComplete(Curr->OsInfo); /*+GSG 030303*/
-+ /*+GSG 030303*/
-+ /* Push Tcb(s) back onto the stack */ /*+GSG 030303*/
-+ Curr = Last->Next; /*+GSG 030303*/
-+ Last->Next = HalDev->TcbPool[Ch][i]; /*+GSG 030303*/
-+ HalDev->TcbPool[Ch][i] = First; /*+GSG 030303*/
-+ /*+GSG 030303*/
-+ /* set the first(SOP) pointer for the next packet */ /*+GSG 030303*/
-+ First = Curr; /*+GSG 030303*/
-+ } /*+GSG 030303*/
-+ }
-+
-+ /* finish channel teardown */
-+
-+ if (HalDev->TxTeardownPending[Ch] & FULL_TEARDOWN)
-+ {
-+ FreeTx(HalDev, Ch, 0);
-+
-+ if (HalDev->ChData[Ch].TxNumQueues == 2)
-+ FreeTx(HalDev, Ch, 1);
-+ } /* if FULL teardown */
-+
-+ /* perform all actions for both queues (+GSG 040212) */
-+ for (i=0; i<HalDev->ChData[Ch].TxNumQueues; i++)
-+ {
-+ /* bug fix - clear Tx channel pointers on teardown */
-+ HalDev->TcbPool[Ch][i] = 0;
-+ HalDev->TxActQueueHead[Ch][i] = 0;
-+ HalDev->TxActQueueCount[Ch][i] = 0;
-+ HalDev->TxActive[Ch][i] = FALSE;
-+ }
-+
-+ /* write completion pointer, only needed for the high priority queue */
-+ (CPMAC_TX_INT_ACK( base , Ch )) = TEARDOWN_VAL;
-+
-+ /* no longer pending teardown */
-+ HalDev->TxTeardownPending[Ch] &= ~TX_TEARDOWN;
-+
-+ HalDev->ChIsOpen[Ch][DIRECTION_TX] = 0;
-+
-+ HalDev->ChIsOpen[Ch][DIRECTION_TX] = 0;
-+ CPMAC_TX_INTMASK_CLEAR(HalDev->dev_base) = (1<<Ch);
-+ if ((HalDev->TxTeardownPending[Ch] & BLOCKING_TEARDOWN) == 0)
-+ {
-+
-+ HalDev->OsFunc->TeardownComplete(HalDev->OsDev, Ch, DIRECTION_TX);
-+ }
-+ HalDev->TxTeardownPending[Ch] = 0;
-+
-+ return (EC_NO_ERRORS);
-+ }
-+ return (-1);
-+ }
-+
-+/* +GSG 030421 */
-+static void AddToRxQueue(HAL_DEVICE *HalDev, HAL_RCB *FirstRcb, HAL_RCB *LastRcb, int FragCount, int Ch)
-+ {
-+ if (HalDev->RxActQueueHead[Ch]==0)
-+ {
-+
-+ HalDev->RxActQueueHead[Ch]=FirstRcb;
-+ HalDev->RxActQueueTail[Ch]=LastRcb;
-+ if (!HalDev->RxActive[Ch])
-+ {
-+ /* write Rx Queue Head Descriptor Pointer */
-+ ((CPMAC_RX_HDP( HalDev->dev_base , Ch )) ) = VirtToPhys(FirstRcb) - HalDev->offset;
-+ HalDev->RxActive[Ch]=TRUE;
-+ }
-+ }
-+ else
-+ {
-+ register HAL_RCB *OldTailRcb;
-+ register bit32u rmode;
-+
-+ HalDev->OsFunc->CriticalOn();
-+ OldTailRcb=HalDev->RxActQueueTail[Ch];
-+ OldTailRcb->Next=(void *)FirstRcb;
-+ OldTailRcb=VirtToVirtNoCache(OldTailRcb);
-+ OldTailRcb->HNext=VirtToPhys(FirstRcb) - HalDev->offset;
-+ HalDev->RxActQueueTail[Ch]=LastRcb;
-+ rmode=OldTailRcb->mode;
-+ if (rmode&CB_EOQ_BIT)
-+ {
-+ rmode&=~CB_EOQ_BIT;
-+ ((CPMAC_RX_HDP( HalDev->dev_base , Ch )) ) = VirtToPhys(FirstRcb) - HalDev->offset;
-+ OldTailRcb->mode=rmode;
-+ }
-+ HalDev->OsFunc->CriticalOff();
-+ }
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function is called to indicate to the CPHAL that the upper layer
-+ * software has finished processing the receive data (given to it by
-+ * osReceive()). The CPHAL will then return the appropriate receive buffers
-+ * and buffer descriptors to the available pool.
-+ *
-+ * @param HalReceiveInfo Start of receive buffer descriptor chain returned to
-+ * CPHAL.
-+ * @param StripFlag Flag indicating whether the upper layer software has
-+ * retained ownership of the receive data buffers.
-+ *<BR>
-+ * 'FALSE' means that the CPHAL can reuse the receive data buffers.
-+ *<BR>
-+ * 'TRUE' : indicates the data buffers were retained by the OS
-+ *<BR>
-+ * NOTE: If StripFlag is TRUE, it is the responsibility of the upper layer software to free the buffers when they are no longer needed.
-+ *
-+ * @return EC_NO_ERRORS (ok). <BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * @ref EC_VAL_RCB_NEEDS_BUFFER "EC_VAL_RCB_NEEDS_BUFFER"<BR>
-+ * @ref EC_VAL_RCB_DROPPED "EC_VAL_RCB_DROPPED"<BR>
-+ */
-+static int halRxReturn(HAL_RECEIVEINFO *HalReceiveInfo,
-+ int StripFlag)
-+ {
-+ int Ch, i;
-+ HAL_RCB *LastRcb;
-+ HAL_DEVICE *HalDev;
-+ int RcbSize;
-+ int FragCount;
-+
-+ Ch = HalReceiveInfo->mode&0x0ff;
-+ HalDev = (HAL_DEVICE *)HalReceiveInfo->Off_BLen;
-+ FragCount = HalReceiveInfo->mode>>8;
-+
-+ if (HalDev->State != enOpened)
-+ return(EC_CPMAC |EC_FUNC_RXRETURN|EC_VAL_INVALID_STATE);
-+
-+ LastRcb=(HAL_RCB *)HalReceiveInfo->Eop;
-+ LastRcb->HNext=0;
-+ LastRcb->Next=0;
-+ RcbSize = HalDev->ChData[Ch].RxBufSize;
-+
-+ if (FragCount>1)
-+ {
-+ LastRcb->Off_BLen=RcbSize;
-+ LastRcb->mode=CB_OWNERSHIP_BIT;
-+ }
-+
-+ HalReceiveInfo->Off_BLen=RcbSize;
-+ HalReceiveInfo->mode=CB_OWNERSHIP_BIT;
-+
-+ /* If OS has kept the buffers for this packet, attempt to alloc new buffers */
-+ if (StripFlag)
-+ {
-+ int rc=0; /*MJH+030417*/
-+ int GoodCount=0; /*GSG+030421*/
-+ HAL_RCB *TempRcb;
-+ char *pBuf;
-+ HAL_RCB *CurrHeadRcb = HalReceiveInfo, *LastGoodRcb=0; /* +GSG 030421 */
-+
-+ TempRcb = HalReceiveInfo;
-+ for (i=0; i<FragCount; i++)
-+ {
-+ if (TempRcb == 0)
-+ {
-+ dbgPrintf("Rx Return error while allocating new buffers\n");
-+ dbgPrintf("Rcb = %08x, Rcb->Eop = %08x, FragCount = %d:%d\n",
-+ (bit32u)HalReceiveInfo, (bit32u)HalReceiveInfo->Eop, FragCount,i);
-+ osfuncSioFlush();
-+
-+ return(EC_CPPI|EC_FUNC_RXRETURN|EC_VAL_CORRUPT_RCB_CHAIN);
-+ }
-+
-+ pBuf= (char *) HalDev->OsFunc->MallocRxBuffer(RcbSize,0,
-+ 0xF,HalDev->ChData[Ch].OsSetup,
-+ (void *)TempRcb,
-+ (void *)&TempRcb->OsInfo,
-+ (void *) HalDev->OsDev);
-+ if (!pBuf)
-+ {
-+ /* malloc failed, add this RCB to Needs Buffer List */
-+ (HAL_RCB *)TempRcb->Eop = TempRcb; /* GSG +030430 */
-+ TempRcb->mode=1<<8|Ch;
-+ TempRcb->Off_BLen=(bit32u)HalDev;
-+
-+ if(HalDev->NeedsCount < MAX_NEEDS) /* +MJH 030410 */
-+ { /* +MJH 030410 */
-+ HalDev->Needs[HalDev->NeedsCount] = (HAL_RECEIVEINFO *) TempRcb; /* +MJH 030410 */
-+ HalDev->NeedsCount++; /* +MJH 030410 */
-+ rc = (EC_CPPI|EC_FUNC_RXRETURN|EC_VAL_RCB_NEEDS_BUFFER); /* ~MJH 030417 */
-+ } /* +MJH 030410 */
-+ else /* +MJH 030410 */
-+ rc = (EC_CPPI|EC_FUNC_RXRETURN|EC_VAL_RCB_DROPPED); /* ~MJH 030417 */
-+
-+ /* requeue any previous RCB's that were ready to go before this one */
-+ if (GoodCount > 0) /* +GSG 030421 */
-+ { /* +GSG 030421 */
-+ LastGoodRcb->HNext=0; /* +GSG 030430 */
-+ LastGoodRcb->Next=0; /* +GSG 030430 */
-+ osfuncDataCacheHitWritebackAndInvalidate((void *)LastGoodRcb, 16); /* +GSG 030430 */
-+
-+ AddToRxQueue(HalDev, CurrHeadRcb, LastGoodRcb, GoodCount, Ch); /* +GSG 030421 */
-+ GoodCount = 0; /* +GSG 030421 */
-+ } /* +GSG 030421 */
-+
-+ CurrHeadRcb = TempRcb->Next; /* +GSG 030421 */
-+ }
-+ else /* +GSG 030421 */
-+ { /* +GSG 030421 */
-+ /* malloc succeeded, requeue the RCB to the hardware */
-+ TempRcb->BufPtr=VirtToPhys(pBuf) - HalDev->offset;
-+ TempRcb->DatPtr=pBuf;
-+ /* Emerald fix 10/29 */
-+ osfuncDataCacheHitWritebackAndInvalidate((void *)TempRcb, 16);
-+
-+ /* i store the last good RCB in case the malloc fails for the
-+ next fragment. This ensures that I can go ahead and return
-+ a partial chain of RCB's to the hardware */
-+ LastGoodRcb = TempRcb; /* +GSG 030421 */
-+ GoodCount++; /* +GSG 030421 */
-+ } /* +GSG 030421 */
-+ TempRcb = TempRcb->Next;
-+ } /* end of Frag loop */
-+ /* if there any good RCB's to requeue, do so here */
-+ if (GoodCount > 0) /* +GSG 030421 */
-+ {
-+ AddToRxQueue(HalDev, CurrHeadRcb, LastGoodRcb, GoodCount, Ch); /* +GSG 030421 */
-+ }
-+ return(rc); /* ~GSG 030421 */
-+ }
-+ else
-+ {
-+ /* Not Stripping */
-+ /* Emerald */
-+ /* Write Back SOP and last RCB */
-+ osfuncDataCacheHitWritebackAndInvalidate((void *)HalReceiveInfo, 16);
-+
-+ if (FragCount > 1)
-+ {
-+ osfuncDataCacheHitWritebackAndInvalidate((void *)LastRcb, 16);
-+ }
-+ /* if not stripping buffers, always add to queue */
-+ AddToRxQueue(HalDev, HalReceiveInfo, LastRcb, FragCount, Ch); /*MJH~030520*/
-+ }
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/* +MJH 030410
-+ Trys to liberate an RCB until liberation fails.
-+ Note: If liberation fails then RxReturn will re-add the RCB to the
-+ Needs list.
-+*/
-+static void NeedsCheck(HAL_DEVICE *HalDev)
-+{
-+ HAL_RECEIVEINFO* HalRcb;
-+ int rc;
-+ HalDev->OsFunc->CriticalOn();
-+ while(HalDev->NeedsCount)
-+ {
-+ HalDev->NeedsCount--;
-+ HalRcb = HalDev->Needs[HalDev->NeedsCount];
-+ rc = halRxReturn(HalRcb, 1);
-+ /* short circuit if RxReturn starts to fail */
-+ if (rc != 0)
-+ break;
-+ }
-+ HalDev->OsFunc->CriticalOff();
-+}
-+
-+/*
-+ * This function allocates transmit buffer descriptors (internal CPHAL function).
-+ * It creates a high priority transmit queue by default for a single Tx
-+ * channel. If QoS is enabled for the given CPHAL device, this function
-+ * will also allocate a low priority transmit queue.
-+ *
-+ * @param HalDev CPHAL module instance. (set by cphalInitModule())
-+ * @param Ch Channel number.
-+ *
-+ * @return 0 OK, Non-Zero Not OK
-+ */
-+static int InitTcb(HAL_DEVICE *HalDev, int Ch)
-+ {
-+ int i, Num = HalDev->ChData[Ch].TxNumBuffers;
-+ HAL_TCB *pTcb=0;
-+ char *AllTcb;
-+ int tcbSize, Queue;
-+ int SizeMalloc;
-+
-+ tcbSize = (sizeof(HAL_TCB)+0xf)&~0xf;
-+ SizeMalloc = (tcbSize*Num)+0xf;
-+
-+ for (Queue=0; Queue < HalDev->ChData[Ch].TxNumQueues; Queue++)
-+ {
-+ if (HalDev->TcbStart[Ch][Queue] == 0)
-+ {
-+
-+ /* malloc all TCBs at once */
-+ AllTcb = (char *)HalDev->OsFunc->MallocDmaXfer(SizeMalloc,0,0xffffffff);
-+ if (!AllTcb)
-+ {
-+ return(EC_CPPI|EC_FUNC_HAL_INIT|EC_VAL_TCB_MALLOC_FAILED);
-+ }
-+
-+ HalDev->OsFunc->Memset(AllTcb, 0, SizeMalloc);
-+
-+ /* keep this address for freeing later */
-+ HalDev->TcbStart[Ch][Queue] = AllTcb;
-+ }
-+ else
-+ {
-+ /* if the memory has already been allocated, simply reuse it! */
-+ AllTcb = HalDev->TcbStart[Ch][Queue];
-+ }
-+
-+ /* align to cache line */
-+ AllTcb = (char *)(((bit32u)AllTcb + 0xf) &~ 0xf); /*PITS #143 MJH~030522*/
-+
-+ /* default High priority transmit queue */
-+ HalDev->TcbPool[Ch][Queue]=0;
-+ for(i=0;i<Num;i++)
-+ {
-+ /*pTcb=(HAL_TCB *) OsFunc->MallocDmaXfer(sizeof(HAL_TCB),0,0xffffffff); */
-+ pTcb= (HAL_TCB *)(AllTcb + (i*tcbSize));
-+ pTcb->mode=0;
-+ pTcb->BufPtr=0;
-+ pTcb->Next=HalDev->TcbPool[Ch][Queue];
-+ pTcb->Off_BLen=0;
-+ HalDev->TcbPool[Ch][Queue]=pTcb;
-+ }
-+ /*HalDev->TcbEnd = pTcb;*/
-+ }
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/*
-+ * This function allocates receive buffer descriptors (internal CPHAL function).
-+ * After allocation, the function 'queues' (gives to the hardware) the newly
-+ * created receive buffers to enable packet reception.
-+ *
-+ * @param HalDev CPHAL module instance. (set by cphalInitModule())
-+ * @param Ch Channel number.
-+ *
-+ * @return 0 OK, Non-Zero Not OK
-+ */
-+static int InitRcb(HAL_DEVICE *HalDev, int Ch)
-+ {
-+ int i, Num = HalDev->ChData[Ch].RxNumBuffers;
-+ int Size = HalDev->ChData[Ch].RxBufSize;
-+ HAL_RCB *pRcb;
-+ char *pBuf;
-+ char *AllRcb;
-+ int rcbSize;
-+ int DoMalloc = 0;
-+ int SizeMalloc;
-+ int MallocSize;
-+
-+ rcbSize = (sizeof(HAL_RCB)+0xf)&~0xf;
-+ SizeMalloc = (rcbSize*Num)+0xf;
-+
-+ if (HalDev->RcbStart[Ch] == 0)
-+ {
-+ DoMalloc = 1;
-+
-+ /* malloc all RCBs at once */
-+ AllRcb= (char *)HalDev->OsFunc->MallocDmaXfer(SizeMalloc,0,0xffffffff);
-+ if (!AllRcb)
-+ {
-+ return(EC_CPPI|EC_FUNC_HAL_INIT|EC_VAL_RCB_MALLOC_FAILED);
-+ }
-+
-+ HalDev->OsFunc->Memset(AllRcb, 0, SizeMalloc);
-+
-+ /* keep this address for freeing later */
-+ HalDev->RcbStart[Ch] = AllRcb;
-+ }
-+ else
-+ {
-+ /* if the memory has already been allocated, simply reuse it! */
-+ AllRcb = HalDev->RcbStart[Ch];
-+ }
-+
-+ /* align to cache line */
-+ AllRcb = (char *)(((bit32u)AllRcb + 0xf)&~0xf); /*PITS #143 MJH~030522*/
-+
-+ HalDev->RcbPool[Ch]=0;
-+ for(i=0;i<Num;i++)
-+ {
-+ pRcb = (HAL_RCB *)(AllRcb + (i*rcbSize));
-+
-+ if (DoMalloc == 1)
-+ {
-+
-+ MallocSize = Size; /*~3.01 */
-+ pBuf= (char *) HalDev->OsFunc->MallocRxBuffer(MallocSize,0,0xF,HalDev->ChData[Ch].OsSetup, (void *)pRcb, (void *)&pRcb->OsInfo, (void *) HalDev->OsDev);
-+ if(!pBuf)
-+ {
-+ return(EC_CPPI|EC_FUNC_HAL_INIT|EC_VAL_RX_BUFFER_MALLOC_FAILED);
-+ }
-+ /* -RC3.01 pBuf = (char *)(((bit32u)pBuf+0xF) & ~0xF); */
-+ pRcb->BufPtr=VirtToPhys(pBuf) - HalDev->offset;
-+ pRcb->DatPtr=pBuf;
-+ }
-+ pRcb->mode=(1<<8)|Ch; /* One Frag for Ch */
-+ pRcb->Next=(void *)HalDev->RcbPool[Ch];
-+ pRcb->Off_BLen=(bit32u)HalDev;
-+ HalDev->RcbPool[Ch]=pRcb;
-+ }
-+
-+ /* Give all of the Rx buffers to hardware */
-+
-+ while(HalDev->RcbPool[Ch])
-+ {
-+ pRcb=HalDev->RcbPool[Ch];
-+ HalDev->RcbPool[Ch]=pRcb->Next;
-+ pRcb->Eop=(void*)pRcb;
-+ pRcb->mode=(1<<8)|Ch;
-+ halRxReturn((HAL_RECEIVEINFO *)pRcb, 0);
-+ }
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function transmits the data in FragList using available transmit
-+ * buffer descriptors. More information on the use of the Mode parameter
-+ * is available in the module-specific appendices. Note: The OS should
-+ * not call Send() for a channel that has been requested to be torndown.
-+ *
-+ * @param HalDev CPHAL module instance. (set by cphalInitModule())
-+ * @param FragList Fragment List structure.
-+ * @param FragCount Number of fragments in FragList.
-+ * @param PacketSize Number of bytes to transmit.
-+ * @param OsSendInfo OS Send Information structure. <BR>
-+ * @param Mode 32-bit value with the following bit fields: <BR>
-+ * 31-16: Mode (used for module specific data). <BR>
-+ * 15-08: Queue (transmit queue to send on). <BR>
-+ * 07-00: Channel (channel number to send on).
-+ *
-+ * @return EC_NO_ERRORS (ok). <BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * @ref EC_VAL_NOT_LINKED "EC_VAL_NOT_LINKED"<BR>
-+ * @ref EC_VAL_INVALID_CH "EC_VAL_INVALID_CH"<BR>
-+ * @ref EC_VAL_OUT_OF_TCBS "EC_VAL_OUT_OF_TCBS"<BR>
-+ * @ref EC_VAL_NO_TCBS "EC_VAL_NO_TCBS"<BR>
-+ */
-+static int halSend(HAL_DEVICE *HalDev,FRAGLIST *FragList,
-+ int FragCount,int PacketSize, OS_SENDINFO *OsSendInfo,
-+ bit32u Mode)
-+ {
-+ HAL_TCB *tcb_ptr, *head;
-+ int i;
-+ int rc = EC_NO_ERRORS;
-+ int Ch = Mode & 0xFF;
-+ int Queue = (Mode>>8)&0xFF;
-+ /*int DoThresholdCheck=1; */ /* Used when TxIntDisable is set and TxInts are re-enabled */
-+
-+ if (HalDev->State != enOpened)
-+ return(EC_CPPI|EC_FUNC_SEND|EC_VAL_INVALID_STATE);
-+
-+ if (!HalDev->Linked)
-+ {
-+ rc = EC_CPPI|EC_FUNC_SEND|EC_VAL_NOT_LINKED;
-+ return(rc);
-+ }
-+
-+ if (HalDev->ChIsOpen[Ch][DIRECTION_TX] == 0) /*MJH~030611*/ /*PITS 148*/
-+ return(EC_CPMAC |EC_FUNC_SEND|EC_VAL_INVALID_CH); /*+GSG 030303*/
-+
-+ HalDev->OsFunc->CriticalOn();
-+
-+ /* Setup Tx mode and size */
-+ if (PacketSize<60)
-+ {
-+ FragList[FragCount-1].len += (60 - PacketSize); /*MJH~030506*//*PITS 132*/
-+ PacketSize = 60; /*MJH~030506*/
-+ }
-+ Mode &= CB_PASSCRC_BIT;
-+
-+ tcb_ptr = head = HalDev->TcbPool[Ch][Queue];
-+
-+ if (tcb_ptr)
-+ {
-+
-+ Mode|=PacketSize|CB_SOF_BIT|CB_OWNERSHIP_BIT;
-+
-+ for (i=0; i<FragCount; i++)
-+
-+ {
-+ /* Setup Tx mode and size */
-+ tcb_ptr->Off_BLen = FragList[i].len;
-+
-+ tcb_ptr->mode = Mode;
-+ tcb_ptr->BufPtr = VirtToPhys((bit32 *)FragList[i].data) - HalDev->offset;
-+ tcb_ptr->OsInfo = OsSendInfo;
-+
-+ if (i == (FragCount - 1))
-+ {
-+ /* last fragment */
-+ tcb_ptr->mode |= CB_EOF_BIT;
-+
-+ /* since this is the last fragment, set the TcbPool pointer before
-+ nulling out the Next pointers */
-+
-+ HalDev->TcbPool[Ch][Queue] = tcb_ptr->Next;
-+
-+ tcb_ptr->Next = 0;
-+ tcb_ptr->HNext = 0;
-+
-+ /* In the Tx Interrupt handler, we will need to know which TCB is EOP,
-+ so we can save that information in the SOP */
-+ head->Eop = tcb_ptr;
-+
-+ /* Emerald fix 10/29 */
-+ osfuncDataCacheHitWritebackAndInvalidate((void *)tcb_ptr, 16);
-+
-+ }
-+ else
-+ {
-+ Mode=CB_OWNERSHIP_BIT;
-+ tcb_ptr->HNext = VirtToPhys((bit32 *)tcb_ptr->Next) - HalDev->offset;
-+
-+ /* Emerald fix 10/29 */
-+ osfuncDataCacheHitWritebackAndInvalidate((void *)tcb_ptr, 16);
-+
-+ tcb_ptr = tcb_ptr->Next; /* what about the end of TCB list?? */
-+
-+ if (tcb_ptr == 0)
-+ {
-+ rc = EC_CPPI|EC_FUNC_SEND|EC_VAL_OUT_OF_TCBS;
-+ goto ExitSend;
-+ }
-+ }
-+ } /* for */
-+
-+ /* put it on the high priority queue */
-+ if (HalDev->TxActQueueHead[Ch][Queue] == 0)
-+ {
-+ HalDev->TxActQueueHead[Ch][Queue]=head;
-+ HalDev->TxActQueueTail[Ch][Queue]=tcb_ptr;
-+/*+GSG 030303*//*+GSG 030303*/
-+ if (!HalDev->TxActive[Ch][Queue])
-+ {
-+
-+ bit32u base = HalDev->dev_base;
-+
-+ /* write CPPI TX HDP */
-+ (CPMAC_TX_HDP( base , Ch )) = VirtToPhys(head) - HalDev->offset;
-+ HalDev->TxActive[Ch][Queue]=TRUE;
-+
-+ }
-+ }
-+ else
-+ {
-+ register volatile HAL_TCB *pTailTcb;
-+ register bit32u tmode;
-+ register bit32u pCurrentTcb;
-+
-+ HalDev->TxActQueueTail[Ch][Queue]->Next=head;
-+ /* Emerald fix 10/29 */
-+
-+ pTailTcb=(HAL_TCB *)VirtToVirtNoCache(&HalDev->TxActQueueTail[Ch][Queue]->HNext);
-+ pCurrentTcb=VirtToPhys(head) - HalDev->offset;
-+ pTailTcb->HNext=pCurrentTcb;
-+ HalDev->TxActQueueTail[Ch][Queue]=tcb_ptr;
-+/*+GSG 030303*/
-+ tmode=pTailTcb->mode;
-+ if (tmode&CB_EOQ_BIT)
-+ {
-+ bit32u base = HalDev->dev_base;
-+
-+ tmode&=~CB_EOQ_BIT;
-+ pTailTcb->mode=tmode;
-+ ((CPMAC_TX_HDP( base , Ch )) ) = pCurrentTcb;
-+ }
-+
-+ else
-+ {
-+ if(HalDev->TxIntDisable)
-+ {
-+ /* Enable Interrupts, to ensure packet goes out on wire */
-+ CPMAC_TX_INTMASK_SET(HalDev->dev_base) = (1<<Ch);
-+ halPacketProcessEnd(HalDev); /* Allow Interrupt to be seen at the OS */
-+ /*DoThresholdCheck = 0; */ /* Disable Threshold Check */
-+
-+ }
-+ }
-+
-+ }
-+ rc = EC_NO_ERRORS;
-+ goto ExitSend;
-+ } /* if (tcb_ptr) */
-+ else
-+ {
-+ rc = EC_CPPI|EC_FUNC_SEND|EC_VAL_NO_TCBS;
-+ goto ExitSend;
-+ }
-+ExitSend:
-+
-+/* 15 June 2004 - NSP Performance Update : If Tx Ints are disabled then process them here */
-+/* 29 June 2004 - NSP Performance Update : Moved to end at request of BCIL */
-+/* 23 Aug 2004 - NSP Performance Update : If Tx Ints are re-enabled do not do Threshold check */
-+
-+ if(HalDev->TxIntDisable /*&& DoThresholdCheck*/)
-+ {
-+ if(--HalDev->TxIntThreshold[Ch] <= 0)
-+ {
-+ int MoreWork;
-+ TxInt(HalDev, Ch, 0, &MoreWork);
-+ HalDev->TxIntThreshold[Ch] = HalDev->TxIntThresholdMaster[Ch];
-+ }
-+ }
-+ HalDev->OsFunc->CriticalOff();
-+
-+ return(rc);
-+ }
-+
-+/*
-+ * This function processes receive interrupts. It traverses the receive
-+ * buffer queue, extracting the data and passing it to the upper layer software via
-+ * osReceive(). It handles all error conditions and fragments without valid data by
-+ * immediately returning the RCB's to the RCB pool.
-+ *
-+ * @param HalDev CPHAL module instance. (set by cphalInitModule())
-+ * @param Ch Channel Number.
-+ * @param MoreWork Flag that indicates that there is more work to do when set to 1.
-+ *
-+ * @return 0 if OK, non-zero otherwise.
-+ */
-+static int RxInt(HAL_DEVICE *HalDev, int Ch, int *MoreWork)
-+ {
-+ HAL_RCB *CurrentRcb, *SopRcb, *EofRcb, *EopRcb;
-+ bit32u RxBufStatus,PacketsServiced, RxPktLen = 0, RxSopStatus,
-+ FrmFrags, TotalFrags, FrmLen;
-+ int base = HalDev->dev_base, Ret;
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+ int RxServiceMax = HalDev->ChData[Ch].RxServiceMax;
-+ int FragIndex; /* +GSG 030508 */
-+
-+ if(HalDev->NeedsCount) /* +MJH 030410 */
-+ NeedsCheck(HalDev); /* +MJH 030410 */
-+
-+ /* Handle case of teardown interrupt */
-+ if (HalDev->RxTeardownPending[Ch] != 0)
-+ {
-+ Ret = RxTeardownInt(HalDev, Ch);
-+ if (Ret == 0)
-+ { /*+GSG 030303*/
-+ *MoreWork = 0;
-+ return (EC_NO_ERRORS);
-+ } /*+GSG 030303*/
-+ }
-+
-+ /* Examine first RCB on the software active queue */
-+ CurrentRcb=HalDev->RxActQueueHead[Ch];
-+ osfuncDataCacheHitInvalidate((void*)CurrentRcb, 16);
-+ RxBufStatus=CurrentRcb->mode;
-+ PacketsServiced=0;
-+
-+ /* Process received packets until we find hardware owned descriptors
-+ or until we hit RxServiceMax */
-+ while((CurrentRcb)&&((RxBufStatus&CB_OWNERSHIP_BIT)==0)&&
-+ (PacketsServiced<RxServiceMax)) /* ~GSG 030307 */
-+ {
-+
-+ PacketsServiced++; /* ~GSG 030307 */
-+ SopRcb=CurrentRcb;
-+ RxSopStatus=RxBufStatus;
-+ RxPktLen = RxSopStatus&CB_SIZE_MASK;
-+
-+ FrmFrags=0;
-+ TotalFrags=0;
-+ FragIndex=0;
-+ FrmLen=0;
-+ EofRcb=0;
-+
-+/* +GSG 030508 *//* +GSG 030508 */
-+
-+ /* Loop through all fragments that comprise current packet. Build
-+ fraglist and exit when the end of the packet is reached, or the
-+ end of the descriptor list is reached. */
-+ do
-+ {
-+ bit32u DmaLen;
-+
-+
-+ DmaLen=CurrentRcb->Off_BLen;
-+
-+ FrmLen+=DmaLen;
-+ TotalFrags++;
-+ if (!EofRcb)
-+ {
-+ HalDev->fraglist[FragIndex].data=((char *)CurrentRcb->DatPtr); /* ~GSG 030508 */
-+
-+ HalDev->fraglist[FragIndex].len=DmaLen; /* ~GSG 030508 */
-+
-+ /* GSG 12/9 */
-+ HalDev->fraglist[FragIndex].OsInfo = CurrentRcb->OsInfo; /* ~GSG 030508 */
-+
-+ /* Upper layer must do the data invalidate */
-+
-+ FrmFrags++;
-+ FragIndex++; /* ~GSG 030508 */
-+ if (FrmLen>=RxPktLen)
-+ EofRcb=CurrentRcb;
-+ }
-+ EopRcb=CurrentRcb;
-+ CurrentRcb=EopRcb->Next;
-+ if (CurrentRcb)
-+ {
-+ osfuncDataCacheHitInvalidate((void*)CurrentRcb,16);
-+ }
-+ }while(((EopRcb->mode&CB_EOF_BIT)==0)&&(CurrentRcb));
-+
-+ /* Write the completion pointer for interrupt acknowledgement*/
-+ (CPMAC_RX_INT_ACK( base , Ch )) = VirtToPhys(EopRcb) - HalDev->offset;
-+
-+ EopRcb->Next=0;
-+
-+ if (CurrentRcb == 0)
-+ {
-+ /* If we are out of RCB's we must not send this packet
-+ to the OS. */
-+ int RcbSize = HalDev->ChData[Ch].RxBufSize;
-+
-+ if (TotalFrags>1)
-+ {
-+ EopRcb->Off_BLen=RcbSize;
-+ EopRcb->mode=CB_OWNERSHIP_BIT;
-+ osfuncDataCacheHitWritebackAndInvalidate((void *)EopRcb, 16);
-+ }
-+
-+ SopRcb->Off_BLen=RcbSize;
-+ SopRcb->mode=CB_OWNERSHIP_BIT;
-+ osfuncDataCacheHitWritebackAndInvalidate((void *)SopRcb, 16);
-+
-+ ((CPMAC_RX_HDP( base , Ch )) ) = VirtToPhys(SopRcb);
-+ }
-+ else
-+ {
-+ /* Dequeue packet and send to OS */
-+ int mode;
-+
-+ /* setup SopRcb for the packet */
-+ SopRcb->Eop=(void*)EopRcb;
-+
-+ /* dequeue packet */
-+ HalDev->RxActQueueHead[Ch]=CurrentRcb;
-+
-+ if (EopRcb->mode&CB_EOQ_BIT)
-+ {
-+ /* Next pointer is non-null and EOQ bit is set, which
-+ indicates misqueue packet in CPPI protocol. */
-+
-+ ((CPMAC_RX_HDP( base , Ch )) ) = EopRcb->HNext;
-+ }
-+
-+ mode = (SopRcb->mode & 0xFFFF0000) | Ch;
-+
-+ SopRcb->mode=(FrmFrags<<8)|Ch;
-+ SopRcb->Off_BLen=(bit32u)HalDev;
-+
-+ /* send packet up the higher layer driver */
-+ OsFunc->Receive(HalDev->OsDev,HalDev->fraglist,FragIndex,RxPktLen, /* ~GSG 030508 */
-+ (HAL_RECEIVEINFO *)SopRcb,mode);
-+
-+ RxBufStatus=CurrentRcb->mode;
-+ }
-+ } /* while loop */
-+
-+ if ((CurrentRcb)&&((RxBufStatus&CB_OWNERSHIP_BIT)==0)) /*~GSG 030307*/
-+ {
-+ *MoreWork = 1;
-+ }
-+ else
-+ {
-+ *MoreWork = 0;
-+ }
-+
-+ return (EC_NO_ERRORS);
-+}
-+
-+/*
-+ * This function processes transmit interrupts. It traverses the
-+ * transmit buffer queue, detecting sent data buffers and notifying the upper
-+ * layer software via osSendComplete(). (for SAR, i originally had this split
-+ * into two functions, one for each queue, but joined them on 8/8/02)
-+ *
-+ * @param HalDev CPHAL module instance. (set by cphalInitModule())
-+ * @param Queue Queue number to service (always 0 for MAC, Choose 1 for SAR to service low priority queue)
-+ * @param MoreWork Flag that indicates that there is more work to do when set to 1.
-+ *
-+ * @return 0 if OK, non-zero otherwise.
-+ */
-+int TxInt(HAL_DEVICE *HalDev, int Ch, int Queue, int *MoreWork)
-+ {
-+ HAL_TCB *CurrentTcb,*LastTcbProcessed,*FirstTcbProcessed;
-+ int PacketsServiced;
-+ bit32u TxFrameStatus;
-+ int base;
-+ int TxServiceMax = HalDev->ChData[Ch].TxServiceMax;
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+
-+/*+GSG 030303*//*+GSG 030303*/
-+
-+ /* load the module base address */
-+ base = HalDev->dev_base;
-+
-+ /* Handle case of teardown interrupt. This must be checked at
-+ the top of the function rather than the bottom, because
-+ the normal data processing can wipe out the completion
-+ pointer which is used to determine teardown complete. */
-+ if (HalDev->TxTeardownPending[Ch] != 0)
-+ {
-+ int Ret;
-+
-+ Ret = TxTeardownInt(HalDev, Ch, Queue);
-+ if (Ret == 0)
-+ { /*+GSG 030303*/
-+ *MoreWork = 0; /* bug fix 1/6 */ /*+GSG 030303*/
-+ return (EC_NO_ERRORS);
-+ } /*+GSG 030303*/
-+ }
-+
-+ OsFunc->CriticalOn(); /* 240904 */
-+
-+ CurrentTcb = HalDev->TxActQueueHead[Ch][Queue];
-+ FirstTcbProcessed=CurrentTcb;
-+
-+ if (CurrentTcb==0)
-+ {
-+ /* I saw this error a couple of times when multi-channels were added */
-+ dbgPrintf("[cppi TxInt()]TxH int with no TCB in queue!\n");
-+ dbgPrintf(" Ch=%d, CurrentTcb = 0x%08x\n", Ch, (bit32u)CurrentTcb);
-+ dbgPrintf(" HalDev = 0x%08x\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ OsFunc->CriticalOff();
-+ return(EC_CPPI|EC_FUNC_TXINT|EC_VAL_NULL_TCB);
-+ }
-+
-+ osfuncDataCacheHitInvalidate((void *)CurrentTcb, 16);
-+ TxFrameStatus=CurrentTcb->mode;
-+ PacketsServiced=0;
-+
-+ /* should the ownership bit check be inside of the loop?? could make it a
-+ while-do loop and take this check away */
-+ if ((TxFrameStatus&CB_OWNERSHIP_BIT)==0)
-+ {
-+ do
-+ {
-+ /* Pop TCB(s) for packet from the stack */
-+ LastTcbProcessed=CurrentTcb->Eop;
-+
-+ /* new location for acknowledge */
-+ /* Write the completion pointer */
-+ (CPMAC_TX_INT_ACK( base , Ch )) = VirtToPhys(LastTcbProcessed) - HalDev->offset;
-+
-+ HalDev->TxActQueueHead[Ch][Queue] = LastTcbProcessed->Next;
-+
-+/*+GSG 030303*//*+GSG 030303*/
-+
-+ osfuncDataCacheHitInvalidate((void *)LastTcbProcessed, 16);
-+
-+ if (LastTcbProcessed->mode&CB_EOQ_BIT)
-+ {
-+ if (LastTcbProcessed->Next)
-+ {
-+ /* Misqueued packet */
-+
-+ (CPMAC_TX_HDP( base , Ch )) = LastTcbProcessed->HNext;
-+
-+ }
-+ else
-+ {
-+ /* Tx End of Queue */
-+
-+ HalDev->TxActive[Ch][Queue]=FALSE;
-+ }
-+ }
-+
-+ OsFunc->SendComplete(CurrentTcb->OsInfo);
-+
-+ /* Push Tcb(s) back onto the stack */
-+ CurrentTcb = LastTcbProcessed->Next;
-+
-+ LastTcbProcessed->Next=HalDev->TcbPool[Ch][Queue];
-+
-+ HalDev->TcbPool[Ch][Queue]=FirstTcbProcessed;
-+
-+ PacketsServiced++;
-+
-+ TxFrameStatus=CB_OWNERSHIP_BIT;
-+ /* set the first(SOP) pointer for the next packet */
-+ FirstTcbProcessed = CurrentTcb;
-+ if (CurrentTcb)
-+ {
-+ osfuncDataCacheHitInvalidate((void *)CurrentTcb, 16);
-+ TxFrameStatus=CurrentTcb->mode;
-+ }
-+
-+ }while(((TxFrameStatus&CB_OWNERSHIP_BIT)==0)
-+ &&(PacketsServiced<TxServiceMax));
-+
-+ if (((TxFrameStatus&CB_OWNERSHIP_BIT)==0)
-+ &&(PacketsServiced==TxServiceMax))
-+ {
-+ *MoreWork = 1;
-+ }
-+ else
-+ {
-+ *MoreWork = 0;
-+ }
-+ }
-+ OsFunc->CriticalOff();
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function performs a teardown for the given channel. The value of the
-+ * Mode parameter controls the operation of the function, as documented below.
-+ *
-+ * Note: If bit 3 of Mode is set, this call is blocking, and will not return
-+ * until the teardown interrupt has occurred and been processed. While waiting
-+ * for a blocking teardown to complete, ChannelTeardown() will signal the OS
-+ * (via Control(.."Sleep"..)) to allow the OS to perform other tasks if
-+ * necessary. If and only if bit 3 of Mode is clear, the CPHAL will call the
-+ * OS TeardownComplete() function to indicate that the teardown has completed.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param Ch Channel number.
-+ * @param Mode Bit 0 (LSB): Perform Tx teardown (if set).<BR>
-+ * Bit 1: Perform Rx teardown (if set). <BR>
-+ * Bit 2: If set, perform full teardown (free buffers/descriptors).
-+ * If clear, perform partial teardown (keep buffers). <BR>
-+ * Bit 3 (MSB): If set, call is blocking.
-+ * If clear, call is non-blocking.
-+ *
-+ * @return EC_NO_ERRORS (ok). <BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * @ref EC_VAL_INVALID_CH "EC_VAL_INVALID_CH"<BR>
-+ * @ref EC_VAL_TX_TEARDOWN_ALREADY_PEND "EC_VAL_TX_TEARDOWN_ALREADY_PEND"<BR>
-+ * @ref EC_VAL_RX_TEARDOWN_ALREADY_PEND "EC_VAL_RX_TEARDOWN_ALREADY_PEND"<BR>
-+ * @ref EC_VAL_TX_CH_ALREADY_TORNDOWN "EC_VAL_TX_CH_ALREADY_TORNDOWN"<BR>
-+ * @ref EC_VAL_RX_CH_ALREADY_TORNDOWN "EC_VAL_RX_CH_ALREADY_TORNDOWN"<BR>
-+ * @ref EC_VAL_TX_TEARDOWN_TIMEOUT "EC_VAL_TX_TEARDOWN_TIMEOUT"<BR>
-+ * @ref EC_VAL_RX_TEARDOWN_TIMEOUT "EC_VAL_RX_TEARDOWN_TIMEOUT"<BR>
-+ * @ref EC_VAL_LUT_NOT_READY "EC_VAL_LUT_NOT_READY"<BR>
-+ */
-+static int halChannelTeardown(HAL_DEVICE *HalDev, int Ch, bit32 Mode)
-+ {
-+ int DoTx, DoRx, Sleep=2048, timeout=0; /*MJH~030306*/
-+ bit32u base = HalDev->dev_base;
-+
-+/* Set the module, used for error returns */
-+
-+ DoTx = (Mode & TX_TEARDOWN);
-+ DoRx = (Mode & RX_TEARDOWN);
-+
-+ if (HalDev->State < enInitialized)
-+ return(EC_CPMAC |EC_FUNC_CHTEARDOWN|EC_VAL_INVALID_STATE);
-+
-+ if ((Ch < 0) || (Ch > (MAX_CHAN-1) ))
-+ {
-+ return(EC_CPMAC |EC_FUNC_CHTEARDOWN|EC_VAL_INVALID_CH);
-+ }
-+
-+ /* set teardown pending bits before performing the teardown, because they
-+ will be used in the int handler (this is done for AAL5) */
-+ if (DoTx)
-+ {
-+ if (HalDev->TxTeardownPending[Ch] != 0)
-+ return(EC_CPMAC |EC_FUNC_CHTEARDOWN|EC_VAL_TX_TEARDOWN_ALREADY_PEND);
-+
-+ /* If a full teardown, this also means that the user must
-+ setup all channels again to use them */
-+ if (Mode & FULL_TEARDOWN)
-+ HalDev->ChIsSetup[Ch][DIRECTION_TX] = 0;
-+
-+ if (HalDev->State < enOpened)
-+ {
-+ /* if the hardware has never been opened, the channel has never actually
-+ been setup in the hardware, so I just need to reset the software flag
-+ and leave */
-+ HalDev->ChIsSetup[Ch][DIRECTION_TX] = 0;
-+ return (EC_NO_ERRORS);
-+ }
-+ else
-+ {
-+ if (HalDev->ChIsOpen[Ch][DIRECTION_TX] == 0)
-+ {
-+ return(EC_CPMAC |EC_FUNC_CHTEARDOWN|EC_VAL_TX_CH_ALREADY_TORNDOWN);
-+ }
-+
-+ /* set teardown flag */
-+ HalDev->TxTeardownPending[Ch] = Mode;
-+ }
-+ }
-+
-+ if (DoRx)
-+ {
-+ if (HalDev->RxTeardownPending[Ch] != 0)
-+ return(EC_CPMAC |EC_FUNC_CHTEARDOWN|EC_VAL_RX_TEARDOWN_ALREADY_PEND);
-+
-+ if (Mode & FULL_TEARDOWN)
-+ HalDev->ChIsSetup[Ch][DIRECTION_RX] = 0;
-+
-+ if (HalDev->State < enOpened)
-+ {
-+ HalDev->ChIsSetup[Ch][DIRECTION_RX] = 0;
-+ return (EC_NO_ERRORS);
-+ }
-+ else
-+ {
-+ if (HalDev->ChIsOpen[Ch][DIRECTION_RX] == 0)
-+ return(EC_CPMAC |EC_FUNC_CHTEARDOWN|EC_VAL_RX_CH_ALREADY_TORNDOWN);
-+
-+ HalDev->RxTeardownPending[Ch] = Mode;
-+ }
-+ }
-+
-+ /* Perform Tx Teardown Duties */
-+ if ((DoTx) && (HalDev->State == enOpened))
-+ {
-+ /* Request TX channel teardown */
-+ (CPMAC_TX_TEARDOWN( base )) = Ch;
-+
-+ /* wait until teardown has completed */
-+ if (Mode & BLOCKING_TEARDOWN)
-+ {
-+ timeout = 0;
-+ while (HalDev->ChIsOpen[Ch][DIRECTION_TX] == TRUE)
-+ {
-+ osfuncSleep(&Sleep);
-+
-+ timeout++;
-+ if (timeout > 100000)
-+ {
-+ return(EC_CPMAC |EC_FUNC_CHTEARDOWN|EC_VAL_TX_TEARDOWN_TIMEOUT);
-+ }
-+ }
-+ }
-+ } /* if DoTx */
-+
-+ /* Perform Rx Teardown Duties */
-+ if ((DoRx) && (HalDev->State == enOpened))
-+ {
-+
-+ /* perform CPMAC specific RX channel teardown */
-+ CPMAC_RX_TEARDOWN(base) = Ch;
-+
-+ if (Mode & BLOCKING_TEARDOWN)
-+ {
-+ timeout = 0;
-+ while (HalDev->ChIsOpen[Ch][DIRECTION_RX] == TRUE)
-+ {
-+ osfuncSleep(&Sleep);
-+
-+ timeout++;
-+ if (timeout > 100000)
-+ {
-+ return(EC_CPMAC |EC_FUNC_CHTEARDOWN|EC_VAL_RX_TEARDOWN_TIMEOUT);
-+ }
-+ }
-+ }
-+ } /* if DoRx */
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function closes the CPHAL module. The module will be reset.
-+ * The Mode parameter should be used to determine the actions taken by
-+ * Close().
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param Mode Indicates actions to take on close. The following integer
-+ * values are valid: <BR>
-+ * 1: Does not free buffer resources, init parameters remain
-+ * intact. User can then call Open() without calling Init()
-+ * to attempt to reset the device and bring it back to the
-+ * last known state.<BR>
-+ * 2: Frees the buffer resources, but keeps init parameters. This
-+ * option is a more aggressive means of attempting a device reset.
-+ * 3: Frees the buffer resources, and clears all init parameters. <BR>
-+ * At this point, the caller would have to call to completely
-+ * reinitialize the device (Init()) before being able to call
-+ * Open(). Use this mode if you are shutting down the module
-+ * and do not plan to restart.
-+ *
-+ * @return EC_NO_ERRORS (ok).<BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * Any error code from halChannelTeardown().<BR>
-+ */
-+static int halClose(HAL_DEVICE *HalDev, bit32 Mode)
-+ {
-+ int Ch, Inst, Ret;
-+ OS_DEVICE *TmpOsDev;
-+ OS_FUNCTIONS *TmpOsFunc;
-+ HAL_FUNCTIONS *TmpHalFunc;
-+ char *TmpDeviceInfo;
-+
-+ int Ticks; /*MJH~030306*/
-+
-+ /* Verify proper device state */
-+ if (HalDev->State != enOpened)
-+ return (EC_CPMAC | EC_FUNC_CLOSE|EC_VAL_INVALID_STATE);
-+
-+ /* Teardown all open channels */
-+ for (Ch = 0; Ch <= (MAX_CHAN-1) ; Ch++)
-+ {
-+ if (HalDev->ChIsOpen[Ch][DIRECTION_TX] == TRUE)
-+ {
-+ if (Mode == 1)
-+ {
-+ Ret = halChannelTeardown(HalDev, Ch, TX_TEARDOWN | PARTIAL_TEARDOWN | BLOCKING_TEARDOWN);
-+ if (Ret) return (Ret);
-+ }
-+ else
-+ {
-+ Ret = halChannelTeardown(HalDev, Ch, TX_TEARDOWN | FULL_TEARDOWN | BLOCKING_TEARDOWN);
-+ if (Ret) return (Ret);
-+ }
-+ }
-+
-+ if (HalDev->ChIsOpen[Ch][DIRECTION_RX] == TRUE)
-+ {
-+ if (Mode == 1)
-+ {
-+ Ret = halChannelTeardown(HalDev, Ch, RX_TEARDOWN | PARTIAL_TEARDOWN | BLOCKING_TEARDOWN);
-+ if (Ret) return (Ret);
-+ }
-+ else
-+ {
-+ Ret = halChannelTeardown(HalDev, Ch, RX_TEARDOWN | FULL_TEARDOWN | BLOCKING_TEARDOWN);
-+ if (Ret) return (Ret);
-+ }
-+ }
-+ }
-+
-+ /* free fraglist in HalDev */
-+ HalDev->OsFunc->Free(HalDev->fraglist);
-+ HalDev->fraglist = 0;
-+
-+ /* unregister the interrupt */
-+ HalDev->OsFunc->IsrUnRegister(HalDev->OsDev, HalDev->interrupt);
-+
-+ Ticks = 0; /* Disable Tick Timer */ /*MJH+030306*/
-+ HalDev->OsFunc->Control(HalDev->OsDev, hcTick, hcClear, &Ticks); /*MJH+030306*/
-+
-+ /* Free the Phy Information Structure */
-+ if(HalDev->PhyDev)
-+ {
-+ HalDev->OsFunc->Free(HalDev->PhyDev); /*MJH+030513*/
-+ HalDev->PhyDev = 0; /*MJH+030522*/
-+ }
-+
-+ /* Perform CPMAC specific closing functions */
-+ CPMAC_MACCONTROL(HalDev->dev_base) &= ~MII_EN;
-+ CPMAC_TX_CONTROL(HalDev->dev_base) &= ~TX_EN;
-+ CPMAC_RX_CONTROL(HalDev->dev_base) &= ~RX_EN;
-+
-+ /* put device back into reset */
-+ (*(volatile bit32u *)(HalDev->ResetBase)) &=~ (1<<HalDev->ResetBit);
-+ Ticks = 64; /*MJH~030306*/
-+ osfuncSleep(&Ticks);
-+
-+ /* If mode is 3, than clear the HalDev and set next state to DevFound*/
-+ if (Mode == 3)
-+ {
-+ /* I need to keep the HalDev parameters that were setup in InitModule */
-+ TmpOsDev = HalDev->OsDev;
-+ TmpOsFunc = HalDev->OsFunc;
-+ TmpDeviceInfo = HalDev->DeviceInfo;
-+
-+ TmpHalFunc = HalDev->HalFuncPtr;
-+ Inst = HalDev->Inst;
-+
-+ /* Clear HalDev */
-+
-+ HalDev->OsFunc->Memset(HalDev, 0, sizeof(HAL_DEVICE));
-+
-+ /* Restore key parameters */
-+ HalDev->OsDev = TmpOsDev;
-+ HalDev->OsFunc = TmpOsFunc;
-+ HalDev->DeviceInfo = TmpDeviceInfo;
-+
-+ HalDev->HalFuncPtr = TmpHalFunc;
-+ HalDev->Inst = Inst;
-+
-+ HalDev->State = enDevFound;
-+ }
-+ else
-+ {
-+ HalDev->State = enInitialized;
-+ }
-+
-+ return(EC_NO_ERRORS);
-+ }
-diff -urN linux.old/drivers/net/avalanche_cpmac/cpremap_cpmac.c linux.dev/drivers/net/avalanche_cpmac/cpremap_cpmac.c
---- linux.old/drivers/net/avalanche_cpmac/cpremap_cpmac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/cpremap_cpmac.c 2005-07-12 02:48:42.049593000 +0200
-@@ -0,0 +1,28 @@
-+#ifndef _INC_CPREMAP_C
-+#define _INC_CPREMAP_C
-+
-+#ifdef __ADAM2
-+static inline void osfuncDataCacheHitInvalidate(void *ptr, int Size)
-+ {
-+ asm(" cache 17, (%0)" : : "r" (ptr));
-+ }
-+
-+static inline void osfuncDataCacheHitWriteback(void *ptr, int Size)
-+ {
-+ asm(" cache 25, (%0)" : : "r" (ptr));
-+ }
-+
-+static inline void osfuncDataCacheHitWritebackAndInvalidate(void *ptr, int Size)
-+ {
-+ asm(" cache 21, (%0)" : : "r" (ptr));
-+ }
-+
-+#else
-+
-+#define osfuncDataCacheHitInvalidate(MemPtr, Size) __asm__(" .set mips3; cache 17, (%0); .set mips0" : : "r" (MemPtr))
-+#define osfuncDataCacheHitWritebackAndInvalidate(MemPtr, Size) __asm__(" .set mips3; cache 21, (%0); .set mips0" : : "r" (MemPtr))
-+#define osfuncDataCacheHitWriteback(MemPtr, Size) __asm__(" .set mips3; cache 25, (%0); .set mips0" : : "r" (MemPtr))
-+
-+#endif
-+
-+#endif
-diff -urN linux.old/drivers/net/avalanche_cpmac/cpswhal_cpmac.h linux.dev/drivers/net/avalanche_cpmac/cpswhal_cpmac.h
---- linux.old/drivers/net/avalanche_cpmac/cpswhal_cpmac.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/cpswhal_cpmac.h 2005-07-12 02:48:42.050593000 +0200
-@@ -0,0 +1,632 @@
-+/************************************************************************
-+ * TNETDxxxx Software Support
-+ * Copyright (c) 2002 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * FILE: cphal.h
-+ *
-+ * DESCRIPTION:
-+ * User include file, contains data definitions shared between the CPHAL
-+ * and the upper-layer software.
-+ *
-+ * HISTORY:
-+ * Date Modifier Ver Notes
-+ * 28Feb02 Greg 1.00 Original
-+ * 06Mar02 Greg 1.01 Documentation enhanced
-+ * 18Jul02 Greg 1.02 Many updates (OAM additions, general reorg)
-+ * 22Nov02 Mick RC2 Additions from Denis' input on Control
-+ *
-+ * author Greg Guyotte
-+ * version 1.02
-+ * date 18-Jul-2002
-+ *****************************************************************************/
-+#ifndef _INC_CPHAL_H
-+#define _INC_CPHAL_H
-+
-+#ifdef _CPHAL_CPMAC
-+#include "ec_errors_cpmac.h"
-+#endif
-+
-+#ifdef _CPHAL_AAL5
-+#include "ec_errors_cpaal5.h"
-+#endif
-+
-+#ifdef _CPHAL_CPSAR
-+#include "ec_errors_cpsar.h"
-+#endif
-+
-+#ifdef _CPHAL_AAL2
-+#include "ec_errors_cpaal2.h"
-+#endif
-+
-+#ifndef __ADAM2
-+typedef char bit8;
-+typedef short bit16;
-+typedef int bit32;
-+
-+typedef unsigned char bit8u;
-+typedef unsigned short bit16u;
-+typedef unsigned int bit32u;
-+
-+/*
-+typedef char INT8;
-+typedef short INT16;
-+typedef int INT32;
-+typedef unsigned char UINT8;
-+typedef unsigned short UINT16;
-+typedef unsigned int UINT32;
-+*/
-+/*typedef unsigned int size_t;*/
-+#endif
-+
-+#ifdef _CPHAL
-+
-+#ifndef TRUE
-+#define TRUE (1==1)
-+#endif
-+
-+#ifndef FALSE
-+#define FALSE (1==2)
-+#endif
-+
-+#ifndef NULL
-+#define NULL 0
-+#endif
-+
-+#endif
-+
-+#define VirtToPhys(a) (((int)a)&~0xe0000000)
-+#define VirtToVirtNoCache(a) ((void*)((VirtToPhys(a))|0xa0000000))
-+#define VirtToVirtCache(a) ((void*)((VirtToPhys(a))|0x80000000))
-+#define PhysToVirtNoCache(a) ((void*)(((int)a)|0xa0000000))
-+#define PhysToVirtCache(a) ((void*)(((int)a)|0x80000000))
-+/*
-+#define DataCacheHitInvalidate(a) {__asm__(" cache 17, (%0)" : : "r" (a));}
-+#define DataCacheHitWriteback(a) {__asm__(" cache 25, (%0)" : : "r" (a));}
-+*/
-+
-+#define PARTIAL 1 /**< Used in @c Close() and @c ChannelTeardown() */
-+#define FULL 2 /**< Used in @c Close() and @c ChannelTeardown() */
-+
-+/* Channel Teardown Defines */
-+#define RX_TEARDOWN 2
-+#define TX_TEARDOWN 1
-+#define BLOCKING_TEARDOWN 8
-+#define FULL_TEARDOWN 4
-+#define PARTIAL_TEARDOWN 0
-+
-+#define MAX_DIR 2
-+#define DIRECTION_TX 0
-+#define DIRECTION_RX 1
-+#define TX_CH 0
-+#define RX_CH 1
-+#define HAL_ERROR_DEVICE_NOT_FOUND 1
-+#define HAL_ERROR_FAILED_MALLOC 2
-+#define HAL_ERROR_OSFUNC_SIZE 3
-+#define HAL_DEFAULT 0xFFFFFFFF
-+#define VALID(val) (val!=HAL_DEFAULT)
-+
-+/*
-+ERROR REPORTING
-+
-+HAL Module Codes. Each HAL module reporting an error code
-+should OR the error code with the respective Module error code
-+from the list below.
-+*/
-+#define EC_AAL5 EC_HAL|EC_DEV_AAL5
-+#define EC_AAL2 EC_HAL|EC_DEV_AAL2
-+#define EC_CPSAR EC_HAL|EC_DEV_CPSAR
-+#define EC_CPMAC EC_HAL|EC_DEV_CPMAC
-+#define EC_VDMA EC_HAL|EC_DEV_VDMA
-+#define EC_VLYNQ EC_HAL|EC_DEV_VLYNQ
-+#define EC_CPPI EC_HAL|EC_DEV_CPPI
-+
-+/*
-+HAL Function Codes. Each HAL module reporting an error code
-+should OR the error code with one of the function codes from
-+the list below.
-+*/
-+#define EC_FUNC_HAL_INIT EC_FUNC(1)
-+#define EC_FUNC_CHSETUP EC_FUNC(2)
-+#define EC_FUNC_CHTEARDOWN EC_FUNC(3)
-+#define EC_FUNC_RXRETURN EC_FUNC(4)
-+#define EC_FUNC_SEND EC_FUNC(5)
-+#define EC_FUNC_RXINT EC_FUNC(6)
-+#define EC_FUNC_TXINT EC_FUNC(7)
-+#define EC_FUNC_AAL2_VDMA EC_FUNC(8)
-+#define EC_FUNC_OPTIONS EC_FUNC(9)
-+#define EC_FUNC_PROBE EC_FUNC(10)
-+#define EC_FUNC_OPEN EC_FUNC(11)
-+#define EC_FUNC_CONTROL EC_FUNC(12)
-+#define EC_FUNC_DEVICE_INT EC_FUNC(13)
-+#define EC_FUNC_STATUS EC_FUNC(14)
-+#define EC_FUNC_TICK EC_FUNC(15)
-+#define EC_FUNC_CLOSE EC_FUNC(16)
-+#define EC_FUNC_SHUTDOWN EC_FUNC(17)
-+#define EC_FUNC_DEVICE_INT_ALT EC_FUNC(18) /* +GSG 030306 */
-+
-+/*
-+HAL Error Codes. The list below defines every type of error
-+used in all HAL modules. DO NOT CHANGE THESE VALUES! Add new
-+values in integer order to the bottom of the list.
-+*/
-+#define EC_VAL_PDSP_LOAD_FAIL EC_ERR(0x01)|EC_CRITICAL
-+#define EC_VAL_FIRMWARE_TOO_LARGE EC_ERR(0x02)|EC_CRITICAL
-+#define EC_VAL_DEVICE_NOT_FOUND EC_ERR(0x03)|EC_CRITICAL
-+#define EC_VAL_BASE_ADDR_NOT_FOUND EC_ERR(0x04)|EC_CRITICAL
-+#define EC_VAL_RESET_BIT_NOT_FOUND EC_ERR(0x05)|EC_CRITICAL
-+#define EC_VAL_CH_INFO_NOT_FOUND EC_ERR(0x06)
-+#define EC_VAL_RX_STATE_RAM_NOT_CLEARED EC_ERR(0x07)|EC_CRITICAL
-+#define EC_VAL_TX_STATE_RAM_NOT_CLEARED EC_ERR(0x08)|EC_CRITICAL
-+#define EC_VAL_MALLOC_DEV_FAILED EC_ERR(0x09)
-+#define EC_VAL_OS_VERSION_NOT_SUPPORTED EC_ERR(0x0A)|EC_CRITICAL
-+#define EC_VAL_CPSAR_VERSION_NOT_SUPPORTED EC_ERR(0x0B)|EC_CRITICAL
-+#define EC_VAL_NULL_CPSAR_DEV EC_ERR(0x0C)|EC_CRITICAL
-+
-+#define EC_VAL_LUT_NOT_READY EC_ERR(0x0D)
-+#define EC_VAL_INVALID_CH EC_ERR(0x0E)
-+#define EC_VAL_NULL_CH_STRUCT EC_ERR(0x0F)
-+#define EC_VAL_RX_TEARDOWN_ALREADY_PEND EC_ERR(0x10)
-+#define EC_VAL_TX_TEARDOWN_ALREADY_PEND EC_ERR(0x11)
-+#define EC_VAL_RX_CH_ALREADY_TORNDOWN EC_ERR(0x12)
-+#define EC_VAL_TX_CH_ALREADY_TORNDOWN EC_ERR(0x13)
-+#define EC_VAL_TX_TEARDOWN_TIMEOUT EC_ERR(0x14)
-+#define EC_VAL_RX_TEARDOWN_TIMEOUT EC_ERR(0x15)
-+#define EC_VAL_CH_ALREADY_TORNDOWN EC_ERR(0x16)
-+#define EC_VAL_VC_SETUP_NOT_READY EC_ERR(0x17)
-+#define EC_VAL_VC_TEARDOWN_NOT_READY EC_ERR(0x18)
-+#define EC_VAL_INVALID_VC EC_ERR(0x19)
-+#define EC_VAL_INVALID_LC EC_ERR(0x20)
-+#define EC_VAL_INVALID_VDMA_CH EC_ERR(0x21)
-+#define EC_VAL_INVALID_CID EC_ERR(0x22)
-+#define EC_VAL_INVALID_UUI EC_ERR(0x23)
-+#define EC_VAL_INVALID_UUI_DISCARD EC_ERR(0x24)
-+#define EC_VAL_CH_ALREADY_OPEN EC_ERR(0x25)
-+
-+#define EC_VAL_RCB_MALLOC_FAILED EC_ERR(0x26)
-+#define EC_VAL_RX_BUFFER_MALLOC_FAILED EC_ERR(0x27)
-+#define EC_VAL_OUT_OF_TCBS EC_ERR(0x28)
-+#define EC_VAL_NO_TCBS EC_ERR(0x29)
-+#define EC_VAL_NULL_RCB EC_ERR(0x30)|EC_CRITICAL
-+#define EC_VAL_SOP_ERROR EC_ERR(0x31)|EC_CRITICAL
-+#define EC_VAL_EOP_ERROR EC_ERR(0x32)|EC_CRITICAL
-+#define EC_VAL_NULL_TCB EC_ERR(0x33)|EC_CRITICAL
-+#define EC_VAL_CORRUPT_RCB_CHAIN EC_ERR(0x34)|EC_CRITICAL
-+#define EC_VAL_TCB_MALLOC_FAILED EC_ERR(0x35)
-+
-+#define EC_VAL_DISABLE_POLLING_FAILED EC_ERR(0x36)
-+#define EC_VAL_KEY_NOT_FOUND EC_ERR(0x37)
-+#define EC_VAL_MALLOC_FAILED EC_ERR(0x38)
-+#define EC_VAL_RESET_BASE_NOT_FOUND EC_ERR(0x39)|EC_CRITICAL
-+#define EC_VAL_INVALID_STATE EC_ERR(0x40)
-+#define EC_VAL_NO_TXH_WORK_TO_DO EC_ERR(0x41)
-+#define EC_VAL_NO_TXL_WORK_TO_DO EC_ERR(0x42)
-+#define EC_VAL_NO_RX_WORK_TO_DO EC_ERR(0x43)
-+#define EC_VAL_NOT_LINKED EC_ERR(0x44)
-+#define EC_VAL_INTERRUPT_NOT_FOUND EC_ERR(0x45)
-+#define EC_VAL_OFFSET_NOT_FOUND EC_ERR(0x46)
-+#define EC_VAL_MODULE_ALREADY_CLOSED EC_ERR(0x47)
-+#define EC_VAL_MODULE_ALREADY_SHUTDOWN EC_ERR(0x48)
-+#define EC_VAL_ACTION_NOT_FOUND EC_ERR(0x49)
-+#define EC_VAL_RX_CH_ALREADY_SETUP EC_ERR(0x50)
-+#define EC_VAL_TX_CH_ALREADY_SETUP EC_ERR(0x51)
-+#define EC_VAL_RX_CH_ALREADY_OPEN EC_ERR(0x52)
-+#define EC_VAL_TX_CH_ALREADY_OPEN EC_ERR(0x53)
-+#define EC_VAL_CH_ALREADY_SETUP EC_ERR(0x54)
-+#define EC_VAL_RCB_NEEDS_BUFFER EC_ERR(0x55) /* +GSG 030410 */
-+#define EC_VAL_RCB_DROPPED EC_ERR(0x56) /* +GSG 030410 */
-+#define EC_VAL_INVALID_VALUE EC_ERR(0x57)
-+
-+/**
-+@defgroup shared_data Shared Data Structures
-+
-+The data structures documented here are shared by all modules.
-+*/
-+
-+/**
-+ * @ingroup shared_data
-+ * This is the fragment list structure. Each fragment list entry contains a
-+ * length and a data buffer.
-+ */
-+typedef struct
-+ {
-+ bit32u len; /**< Length of the fragment in bytes (lower 16 bits are valid). For SOP, upper 16 bits is the buffer offset. */
-+ void *data; /**< Pointer to fragment data. */
-+ void *OsInfo; /**< Pointer to OS defined data. */
-+ }FRAGLIST;
-+
-+#if defined (_CPHAL_CPMAC)
-+#define CB_PASSCRC_BIT (1<<26)
-+
-+/* CPMAC CPHAL STATUS */
-+#define CPMAC_STATUS_LINK (1 << 0)
-+#define CPMAC_STATUS_LINK_DUPLEX (1 << 1) /* 0 - HD, 1 - FD */
-+#define CPMAC_STATUS_LINK_SPEED (1 << 2) /* 0 - 10, 1 - 100 */
-+
-+/* ADAPTER CHECK Codes */
-+
-+#define CPMAC_STATUS_ADAPTER_CHECK (1 << 7)
-+#define CPMAC_STATUS_HOST_ERR_DIRECTION (1 << 8)
-+#define CPMAC_STATUS_HOST_ERR_CODE (0xF << 9)
-+#define CPMAC_STATUS_HOST_ERR_CH (0x7 << 13)
-+
-+#define _CPMDIO_DISABLE (1 << 0)
-+#define _CPMDIO_HD (1 << 1)
-+#define _CPMDIO_FD (1 << 2)
-+#define _CPMDIO_10 (1 << 3)
-+#define _CPMDIO_100 (1 << 4)
-+#define _CPMDIO_NEG_OFF (1 << 5)
-+#define _CPMDIO_LOOPBK (1 << 16)
-+#define _CPMDIO_AUTOMDIX (1 << 17) /* Bit 16 and above not used by MII register */
-+#define _CPMDIO_NOPHY (1 << 20)
-+#endif
-+
-+/**
-+ * @ingroup shared_data
-+ * Channel specific configuration information. This structure should be
-+ * populated by upper-layer software prior to calling @c ChannelSetup(). Any
-+ * configuration item that can be changed on a per channel basis should
-+ * be represented here. Each module may define this structure with additional
-+ * module-specific members.
-+ */
-+typedef struct
-+ {
-+ int Channel; /**< Channel number. */
-+ int Direction; /**< DIRECTION_RX(1) or DIRECTION_TX(0). */
-+ OS_SETUP *OsSetup; /**< OS defined information associated with this channel. */
-+
-+#if defined(_CPHAL_AAL5) || defined (_CPHAL_CPSAR) || defined (_CPHAL_CPMAC)
-+ int RxBufSize; /**< Size (in bytes) for each Rx buffer.*/
-+ int RxBufferOffset; /**< Number of bytes to offset rx data from start of buffer (must be less than buffer size). */
-+ int RxNumBuffers; /**< The number of Rx buffer descriptors to allocate for Ch. */
-+ int RxServiceMax; /**< Maximum number of packets to service at one time. */
-+
-+ int TxNumBuffers; /**< The number of Tx buffer descriptors to allocate for Ch. */
-+ int TxNumQueues; /**< Number of Tx queues for this channel (1-2). Choosing 2 enables a low priority SAR queue. */
-+ int TxServiceMax; /**< Maximum number of packets to service at one time. */
-+#endif
-+
-+#if defined(_CPHAL_AAL5) || defined(_CPHAL_CPSAR)
-+ int CpcsUU; /**< The 2-byte CPCS UU and CPI information. */
-+ int Gfc; /**< Generic Flow Control. */
-+ int Clp; /**< Cell Loss Priority. */
-+ int Pti; /**< Payload Type Indication. */
-+#endif
-+
-+#if defined(_CPHAL_AAL2) || defined(_CPHAL_AAL5) || defined(_CPHAL_CPSAR)
-+ int DaMask; /**< Specifies whether credit issuance is paused when Tx data not available. */
-+ int Priority; /**< Priority bin this channel will be scheduled within. */
-+ int PktType; /**< 0=AAL5,1=Null AAL,2=OAM,3=Transparent,4=AAL2. */
-+ int Vci; /**< Virtual Channel Identifier. */
-+ int Vpi; /**< Virtual Path Identifier. */
-+ int FwdUnkVc; /**< Enables forwarding of unknown VCI/VPI cells to host. 1=enable, 0=disable. */
-+
-+ /* Tx VC State */
-+ int TxVc_CellRate; /**< Tx rate, set as clock ticks between transmissions (SCR for VBR, CBR for CBR). */
-+ int TxVc_QosType; /**< 0=CBR,1=VBR,2=UBR,3=UBRmcr. */
-+ int TxVc_Mbs; /**< Min Burst Size in cells.*/
-+ int TxVc_Pcr; /**< Peak Cell Rate for VBR in clock ticks between transmissions. */
-+
-+ bit32 TxVc_AtmHeader; /**< ATM Header placed on firmware gen'd OAM cells for this Tx Ch (must be big endian with 0 PTI). */
-+ int TxVc_OamTc; /**< TC Path to transmit OAM cells for TX connection (0,1). */
-+ int TxVc_VpOffset; /**< Offset to the OAM VP state table. */
-+ /* Rx VC State */
-+ int RxVc_OamCh; /**< Ch to terminate rx'd OAM cells to be forwarded to the host. */
-+ int RxVc_OamToHost; /**< 0=do not pass, 1=pass. */
-+ bit32 RxVc_AtmHeader; /**< ATM Header placed on firmware gen'd OAM cells for this Rx conn (must be big endian with 0 PTI). */
-+ int RxVc_OamTc; /**< TC Path to transmit OAM cells for RX connection (0,1). */
-+ int RxVc_VpOffset; /**< Offset to the OAM VP state table. */
-+ /* Tx VP State */
-+ int TxVp_OamTc; /**< TC Path to transmit OAM cells for TX VP connection (0,1). */
-+ bit32 TxVp_AtmHeader; /**< ATM Header placed on firmware gen'd VP OAM cells for this Tx VP conn (must be big endian with 0 VCI). */
-+ /* Rx VP State */
-+ int RxVp_OamCh; /**< Ch to terminate rx'd OAM cells to be forwarded to the host. */
-+ int RxVp_OamToHost; /**< 0=do not pass, 1=pass. */
-+ bit32 RxVp_AtmHeader; /**< ATM Header placed on firmware gen'd OAM cells for this Rx VP conn (must be big endian with 0 VCI). */
-+ int RxVp_OamTc; /**< TC Path to transmit OAM cells for RX VP connection (0,1). */
-+ int RxVp_OamVcList; /**< Indicates all VC channels associated with this VP channel (one-hot encoded). */
-+#endif
-+
-+
-+#ifdef _CPHAL_VDMAVT
-+ bit32u RemFifoAddr; /* Mirror mode only. */
-+ bit32u FifoAddr;
-+ bit32 PollInt;
-+ bit32 FifoSize;
-+ int Ready;
-+#endif
-+
-+ }CHANNEL_INFO;
-+
-+/*
-+ * This structure contains each statistic value gathered by the CPHAL.
-+ * Applications may access statistics data by using the @c StatsGet() routine.
-+ */
-+/* STATS */
-+#if defined(_CPHAL_AAL2) || defined(_CPHAL_AAL5) || defined(_CPHAL_CPSAR)
-+typedef struct
-+ {
-+ bit32u CrcErrors[16];
-+ bit32u LenErrors[16];
-+ bit32u DmaLenErrors[16];
-+ bit32u AbortErrors[16];
-+ bit32u StarvErrors[16];
-+ bit32u TxMisQCnt[16][2];
-+ bit32u RxMisQCnt[16];
-+ bit32u RxEOQCnt[16];
-+ bit32u TxEOQCnt[16][2];
-+ bit32u RxPacketsServiced[16];
-+ bit32u TxPacketsServiced[16][2];
-+ bit32u RxMaxServiced;
-+ bit32u TxMaxServiced[16][2];
-+ bit32u RxTotal;
-+ bit32u TxTotal;
-+ } STAT_INFO;
-+#endif
-+
-+/*
-+ * VDMA Channel specific configuration information
-+ */
-+#ifdef _CPHAL_AAL2
-+typedef struct
-+ {
-+ int Ch; /**< Channel Number */
-+ int RemoteEndian; /**< Endianness of remote VDMA-VT device */
-+ int CpsSwap; /**< When 0, octet 0 in CPS pkt located in LS byte of 16-bit word sent to rem VDMA device. When 1, in MS byte. */
-+ }VdmaChInfo;
-+#endif
-+
-+#ifndef _CPHAL
-+ typedef void HAL_DEVICE;
-+ typedef void HAL_PRIVATE;
-+ typedef void HAL_RCB;
-+ typedef void HAL_RECEIVEINFO;
-+#endif
-+
-+/**
-+ * @ingroup shared_data
-+ * The HAL_FUNCTIONS struct defines the function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to xxxInitModule().
-+ */
-+typedef struct
-+ {
-+ int (*ChannelSetup) (HAL_DEVICE *HalDev, CHANNEL_INFO *Channel, OS_SETUP *OsSetup);
-+ int (*ChannelTeardown) (HAL_DEVICE *HalDev, int Channel, int Mode);
-+ int (*Close) (HAL_DEVICE *HalDev, int Mode);
-+ int (*Control) (HAL_DEVICE *HalDev, const char *Key, const char *Action, void *Value);
-+ int (*Init) (HAL_DEVICE *HalDev);
-+ int (*Open) (HAL_DEVICE *HalDev);
-+ int (*PacketProcessEnd) (HAL_DEVICE *HalDev);
-+ int (*Probe) (HAL_DEVICE *HalDev);
-+ int (*RxReturn) (HAL_RECEIVEINFO *HalReceiveInfo, int StripFlag);
-+ int (*Send) (HAL_DEVICE *HalDev, FRAGLIST *FragList, int FragCount, int PacketSize, OS_SENDINFO *OsSendInfo, bit32u Mode);
-+ int (*Shutdown) (HAL_DEVICE *HalDev);
-+ int (*Tick) (HAL_DEVICE *HalDev);
-+
-+#ifdef _CPHAL_AAL5
-+ int (*Kick) (HAL_DEVICE *HalDev, int Queue);
-+ void (*OamFuncConfig) (HAL_DEVICE *HalDev, unsigned int OamConfig);
-+ void (*OamLoopbackConfig) (HAL_DEVICE *HalDev, unsigned int OamConfig, unsigned int *LLID, unsigned int CorrelationTag);
-+ volatile bit32u* (*RegAccess)(HAL_DEVICE *HalDev, bit32u RegOffset);
-+ STAT_INFO* (*StatsGetOld)(HAL_DEVICE *HalDev);
-+#endif
-+ } HAL_FUNCTIONS;
-+
-+/**
-+ * @ingroup shared_data
-+ * The OS_FUNCTIONS struct defines the function pointers for all upper layer
-+ * functions accessible to the CPHAL. The upper layer software is responsible
-+ * for providing the correct OS-specific implementations for the following
-+ * functions. It is populated by calling InitModule() (done by the CPHAL in
-+ * xxxInitModule().
-+ */
-+typedef struct
-+ {
-+ int (*Control)(OS_DEVICE *OsDev, const char *Key, const char *Action, void *Value);
-+ void (*CriticalOn)(void);
-+ void (*CriticalOff)(void);
-+ void (*DataCacheHitInvalidate)(void *MemPtr, int Size);
-+ void (*DataCacheHitWriteback)(void *MemPtr, int Size);
-+ int (*DeviceFindInfo)(int Inst, const char *DeviceName, void *DeviceInfo);
-+ int (*DeviceFindParmUint)(void *DeviceInfo, const char *Parm, bit32u *Value);
-+ int (*DeviceFindParmValue)(void *DeviceInfo, const char *Parm, void *Value);
-+ void (*Free)(void *MemPtr);
-+ void (*FreeRxBuffer)(OS_RECEIVEINFO *OsReceiveInfo, void *MemPtr);
-+ void (*FreeDev)(void *MemPtr);
-+ void (*FreeDmaXfer)(void *MemPtr);
-+ void (*IsrRegister)(OS_DEVICE *OsDev, int (*halISR)(HAL_DEVICE*, int*), int InterruptBit);
-+ void (*IsrUnRegister)(OS_DEVICE *OsDev, int InterruptBit);
-+ void* (*Malloc)(bit32u size);
-+ void* (*MallocDev)(bit32u Size);
-+ void* (*MallocDmaXfer)(bit32u size, void *MemBase, bit32u MemRange);
-+ void* (*MallocRxBuffer)(bit32u size, void *MemBase, bit32u MemRange,
-+ OS_SETUP *OsSetup, HAL_RECEIVEINFO *HalReceiveInfo,
-+ OS_RECEIVEINFO **OsReceiveInfo, OS_DEVICE *OsDev);
-+ void* (*Memset)(void *Dest, int C, bit32u N);
-+ int (*Printf)(const char *Format, ...);
-+ int (*Receive)(OS_DEVICE *OsDev,FRAGLIST *FragList,bit32u FragCount,
-+ bit32u PacketSize,HAL_RECEIVEINFO *HalReceiveInfo, bit32u Mode);
-+ int (*SendComplete)(OS_SENDINFO *OsSendInfo);
-+ int (*Sprintf)(char *S, const char *Format, ...);
-+ int (*Strcmpi)(const char *Str1, const char *Str2);
-+ unsigned int (*Strlen)(const char *S);
-+ char* (*Strstr)(const char *S1, const char *S2);
-+ unsigned long (*Strtoul)(const char *Str, char **Endptr, int Base);
-+ void (*TeardownComplete)(OS_DEVICE *OsDev, int Ch, int Direction);
-+ } OS_FUNCTIONS;
-+
-+/************** MODULE SPECIFIC STUFF BELOW **************/
-+
-+#ifdef _CPHAL_CPMAC
-+
-+/*
-+int halCpmacInitModule(HAL_DEVICE **HalDev, OS_DEVICE *OsDev, HAL_FUNCTIONS *HalFunc, int (*osBridgeInitModule)(OS_FUNCTIONS *), void* (*osMallocDev) (bit32u), int *Size, int inst);
-+*/
-+
-+int halCpmacInitModule(HAL_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ HAL_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+#endif
-+
-+#ifdef _CPHAL_AAL5
-+/*
-+ * @ingroup shared_data
-+ * The AAL5_FUNCTIONS struct defines the AAL5 function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to cphalInitModule().
-+ */
-+/*
-+typedef struct
-+ {
-+ int (*ChannelSetup)(HAL_DEVICE *HalDev, CHANNEL_INFO *HalCh, OS_SETUP *OsSetup);
-+ int (*ChannelTeardown)(HAL_DEVICE *HalDev, int Ch, int Mode);
-+ int (*Close)(HAL_DEVICE *HalDev, int Mode);
-+ int (*Init)(HAL_DEVICE *HalDev);
-+ int (*ModeChange)(HAL_DEVICE *HalDev, char *DeviceParms);
-+ int (*Open)(HAL_DEVICE *HalDev);
-+ int (*InfoGet)(HAL_DEVICE *HalDev, int Key, void *Value);
-+ int (*Probe)(HAL_DEVICE *HalDev);
-+ int (*RxReturn)(HAL_RECEIVEINFO *HalReceiveInfo, int StripFlag);
-+ int (*Send)(HAL_DEVICE *HalDev,FRAGLIST *FragList,int FragCount,
-+ int PacketSize,OS_SENDINFO *OsSendInfo,int Ch, int Queue,
-+ bit32u Mode);
-+ int (*StatsClear)(HAL_DEVICE *HalDev);
-+ STAT_INFO* (*StatsGet)(HAL_DEVICE *HalDev);
-+ int (*Status)(HAL_DEVICE *HalDev);
-+ void (*Tick)(HAL_DEVICE *HalDev);
-+ int (*Kick)(HAL_DEVICE *HalDev, int Queue);
-+ volatile bit32u* (*RegAccess)(HAL_DEVICE *HalDev, bit32u RegOffset);
-+ } AAL5_FUNCTIONS;
-+*/
-+
-+int cpaal5InitModule(HAL_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ HAL_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+#endif
-+
-+#ifdef _CPHAL_AAL2
-+/**
-+ * @ingroup shared_data
-+ * The AAL2_FUNCTIONS struct defines the AAL2 function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to cphalInitModule().
-+ */
-+typedef struct
-+ {
-+ int (*ChannelSetup)(HAL_DEVICE *HalDev, CHANNEL_INFO *HalCh, OS_SETUP *OsSetup);
-+ int (*ChannelTeardown)(HAL_DEVICE *HalDev, int Ch, int Mode);
-+ int (*Close)(HAL_DEVICE *HalDev, int Mode);
-+ int (*Init)(HAL_DEVICE *HalDev);
-+ int (*ModeChange)(HAL_DEVICE *HalDev, char *DeviceParms);
-+ int (*Open)(HAL_DEVICE *HalDev);
-+ int (*OptionsGet)(HAL_DEVICE *HalDev, char *Key, bit32u *Value);
-+ int (*Probe)(HAL_DEVICE *HalDev);
-+
-+ int (*StatsClear)(HAL_DEVICE *HalDev);
-+ STAT_INFO* (*StatsGet)(HAL_DEVICE *HalDev);
-+ int (*Status)(HAL_DEVICE *HalDev);
-+ void (*Tick)(HAL_DEVICE *HalDev);
-+ int (*Aal2UuiMappingSetup)(HAL_DEVICE *HalDev, int VC, int UUI,
-+ int VdmaCh, int UUIDiscard);
-+ int (*Aal2RxMappingSetup)(HAL_DEVICE *HalDev, int VC, int CID,
-+ int LC);
-+ int (*Aal2TxMappingSetup)(HAL_DEVICE *HalDev, int VC, int LC, int VdmaCh);
-+ int (*Aal2VdmaChSetup)(HAL_DEVICE *HalDev, bit32u RemVdmaVtAddr,
-+ VdmaChInfo *VdmaCh);
-+ volatile bit32u* (*RegAccess)(HAL_DEVICE *HalDev, bit32u RegOffset);
-+ int (*Aal2ModeChange)(HAL_DEVICE *HalDev, int Vc, int RxCrossMode,
-+ int RxMultiMode, int TxMultiMode, int SchedMode,
-+ int TcCh);
-+ void (*Aal2VdmaEnable)(HAL_DEVICE *HalDev, int Ch);
-+ int (*Aal2VdmaDisable)(HAL_DEVICE *HalDev, int Ch);
-+ } AAL2_FUNCTIONS;
-+
-+int cpaal2InitModule(HAL_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ AAL2_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+#endif
-+
-+#ifdef _CPHAL_VDMAVT
-+/**
-+ * @ingroup shared_data
-+ * The VDMA_FUNCTIONS struct defines the HAL function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to InitModule().
-+ *
-+ * Note that this list is still under definition.
-+ */
-+typedef struct
-+ {
-+ bit32 (*Init)( HAL_DEVICE *VdmaVtDev);
-+ /* bit32 (*SetupTxFifo)(HAL_DEVICE *VdmaVtDev, bit32u LclRem,
-+ bit32u Addr, bit32u Size, bit32u PollInt);
-+ bit32 (*SetupRxFifo)(HAL_DEVICE *VdmaVtDev, bit32u LclRem,
-+ bit32u Addr, bit32u Size, bit32u PollInt); */
-+ bit32 (*Tx)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*Rx)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*SetRemoteChannel)(HAL_DEVICE *VdmaVtDev, bit32u RemAddr,
-+ bit32u RemDevID);
-+ bit32 (*ClearRxInt)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*ClearTxInt)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*Open)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*Close)(HAL_DEVICE *VdmaVtDev);
-+ int (*Control) (HAL_DEVICE *HalDev, const char *Key, const char *Action, void *Value);
-+ int (*ChannelSetup)(HAL_DEVICE *VdmaVtDev, CHANNEL_INFO *HalCh, OS_SETUP *OsSetup);
-+ int (*ChannelTeardown)(HAL_DEVICE *VdmaVtDev, int Ch, int Mode);
-+ int (*Send)(HAL_DEVICE *VdmaVtDev,FRAGLIST *FragList,int FragCount,
-+ int PacketSize,OS_SENDINFO *OsSendInfo,bit32u Mode);
-+ } VDMA_FUNCTIONS;
-+
-+int VdmaInitModule(HAL_DEVICE **VdmaVt,
-+ OS_DEVICE *OsDev,
-+ VDMA_FUNCTIONS **VdmaVtFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+#endif
-+
-+/*
-+extern int cphalInitModule(MODULE_TYPE ModuleType, HAL_DEVICE **HalDev, OS_DEVICE *OsDev, HAL_FUNCTIONS *HalFunc,
-+ int (*osInitModule)(OS_FUNCTIONS *), void* (*osMallocDev)(bit32u),
-+ int *Size, int Inst);
-+*/
-+
-+
-+#ifdef _CPHAL_AAL5
-+extern const char hcSarFrequency[];
-+#endif
-+
-+#ifdef _CPHAL_CPMAC
-+/* following will be common, once 'utl' added */
-+extern const char hcClear[];
-+extern const char hcGet[];
-+extern const char hcSet[];
-+extern const char hcTick[];
-+
-+extern const char hcCpuFrequency[];
-+extern const char hcCpmacFrequency[];
-+extern const char hcMdioBusFrequency[];
-+extern const char hcMdioClockFrequency[];
-+extern const char hcCpmacBase[];
-+extern const char hcPhyNum[];
-+extern const char hcSize[];
-+extern const char hcCpmacSize[];
-+extern const char hcPhyAccess[];
-+extern const char hcMdixMask[];
-+extern const char hcMdioMdixSwitch[];
-+#endif
-+
-+#endif /* end of _INC_ */
-diff -urN linux.old/drivers/net/avalanche_cpmac/dox_cpmac.h linux.dev/drivers/net/avalanche_cpmac/dox_cpmac.h
---- linux.old/drivers/net/avalanche_cpmac/dox_cpmac.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/dox_cpmac.h 2005-07-12 02:48:42.050593000 +0200
-@@ -0,0 +1,842 @@
-+/*****************************************************************************
-+ * TNETDxxxx Software Support
-+ * Copyright (c) 2002,2003 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * FILE:
-+ *
-+ * DESCRIPTION:
-+ * This file contains documentation for the CPMAC
-+ *
-+ * HISTORY:
-+ * @author Michael Hanrahan/Greg Guyotte
-+ * @version 1.00
-+ * @date 03-Dec-2002
-+ *****************************************************************************/
-+#ifndef _DOX_CPMAC_H
-+#define _DOX_CPMAC_H
-+/**
-+@page CPMAC_Implementation_Details Version
-+
-+@copydoc CPMAC_Version
-+*/
-+
-+/**
-+@page cpmac_intro Introduction
-+
-+The CPMAC implementation will support 8 channels for transmit and 8 channel for
-+receive. Each of the 8 transmit channels has 1 queue associated with it. It is
-+recommended that only 1 channel is used for @c Receive() per processor.
-+*/
-+
-+/**
-+@page cpmac_details API Implementation Details
-+@par osReceive
-+@p Mode parameter
-+- The Upper 16 bits of Mode match Word 3 of the Rx Buffer Descriptor
-+
-+@par halSend
-+@p Mode parameter
-+- Bits 0-7 contain the Channel Number
-+- Bits 8-25 are reserved
-+- Bit 26 - if 0, the CRC will be calculated, if 1 the CRC will be Passed
-+- Bits 27-31 : reserved
-+@section cpmac_keys Control Keys
-+
-+@par StateChange
-+CPHAL calls the OS when a state change is detected.
-+OS should check the CPMAC Status. See the Control Key 'Status' for more details.
-+
-+@par Status
-+OS calls the CPHAL to obtain Status information. The Returned status is as follows
-+
-+@par MaxFrags
-+The OS may "Set" or "Get" this value. This defines the maximum
-+number of fragments that can be received by the CPMAC Rx port. The default
-+value for CPMAC is 2. This provides enough space to receive a maximum
-+length packet (1,518 bytes) with the default buffer size of 1518 and any
-+amount of RxBufferOffset. If the buffer size is configured to be smaller,
-+the OS *MUST* modify this parameter according to the following formula:
-+((System Max packet length)/(RxBufSize)) + 1. (The extra 1 fragment is to
-+allow for RxBufferOffset)
-+
-+@code
-+// Following defined in "cpswhal_cpmac.h"
-+// CPMAC CPHAL STATUS
-+#define CPMAC_STATUS_LINK (1 << 0)
-+#define CPMAC_STATUS_LINK_DUPLEX (1 << 1) // 0 - HD, 1 - FD
-+#define CPMAC_STATUS_LINK_SPEED (1 << 2) // 0 - 10, 1 - 100
-+
-+// ADAPTER CHECK Codes
-+#define CPMAC_STATUS_ADAPTER_CHECK (1 << 7)
-+#define CPMAC_STATUS_HOST_ERR_DIRECTION (1 << 8) // 0 - Tx, 1 - Rx
-+#define CPMAC_STATUS_HOST_ERR_CODE (0xF << 9) See CPMAC Guide
-+#define CPMAC_STATUS_HOST_ERR_CH (0x7 << 13) See CPMAC Guide
-+@endcode
-+
-+@code
-+void osStateChange(OS_DEVICE *OsDev)
-+ {
-+ int status;
-+ OsDev->HalFunc->Control(OsDev->HalDev, "Status", hcGet, &status);
-+ if(status & CPMAC_STATUS_ADAPTER_CHECK)
-+ {
-+ printf("[osStateChange[%d]] HAL notified OS of AdapterCheck (Link Status 0x%08X)\n", OsDev->port, status);
-+ adaptercheck(OsDev->port);
-+ }
-+ else
-+ {
-+ printf("[osStateChange[%d]] HAL notified OS of State Change (Link Status %s)\n", OsDev->port, (status & CPMAC_STATUS_LINK) ? "Up" : "Down");
-+ if(status & CPMAC_STATUS_LINK)
-+ {
-+ printf("Speed %s, Duplex %s\n",
-+ status & CPMAC_STATUS_LINK_SPEED ? "100" : "10",
-+ status & CPMAC_STATUS_LINK_DUPLEX ? "FD" : "HD");
-+ }
-+ }
-+@endcode
-+
-+@par Tick
-+ The CPHAL calls the OS to set the interval for calling halTick()<BR>
-+ Note: Predefined value hcTick now recommended for use.
-+@code
-+*** Example Code ***
-+
-+*** CPHAL code ***
-+int Ticks;
-+HalDev->OsFunc->Control(HalDev->OsDev, hcTick, hcSet, &Ticks);
-+
-+*** OS code ***
-+ ..
-+ if(osStrcmpi(pszKey, hcTick) == 0)
-+ {
-+ if(osStrcmpi(pszAction, hcSet) == 0)
-+ {
-+ // Enable the Tick Interval
-+ if(*(unsigned int *) ParmValue)
-+ printf("osTickSet: Interval = %d ticks\n", Interval);
-+ }
-+ else
-+ if(osStrcmpi(pszAction, hcClear) == 0)
-+ {
-+ // Request disabling of the Tick Timer, ParmValue is ignored
-+ }
-+ }
-+@endcode
-+
-+@par The following information can be obtained by the OS via 'Get'
-+
-+- StatsDump : OS supplies pointer to an 36 element unsigned int array
-+CPHAL will populate the array with the current Statistics values.<BR>
-+Note: all hcXXXX values are predefined and should be used by the OS.
-+
-+- hcPhyNum : Returns the PHY number.
-+- hcCpmacBase : Returns the base-address of the CPMAC device
-+- hcCpmacSize : Returns size of the CPMAC memory map
-+
-+
-+@par Phy Register Communication
-+
-+halControl() is used to read and write the Phy Registers via the key hcPhyAccess
-+
-+Both reading and writing the Phy registers involve setting the Value parameter of halControl()
-+<BR>
-+Value is a 32-bit value with bits partioned as follows
-+<BR>
-+
-+ 0 - 4 Phy Number <BR>
-+ 5 - 9 Phy Register <BR>
-+ 10 - 15 reserved <BR>
-+ 16 - 31 Data (write only)
-+<BR>
-+
-+
-+<B>Reading the Phy register</B>
-+
-+@code
-+ bit32u Value;
-+ bit32u RegAddr;
-+ bit32u PhyNum;
-+ bit32u PhyRegisterData;
-+
-+ // Read Phy 31, register 20
-+
-+ PhyNum = 31;
-+ RegAddr = 20;
-+
-+ Value = (RegAddr << 5);
-+ Value |= (PhyNum & 0x1F);
-+
-+ rc = HalFunc->Control(HalDev, hcPhyAccess, hcGet, (bit32u *) &Value)
-+ If(rc == 0)
-+ {
-+ // Value is overwriten with the value in Register 20 of Phy number 31.
-+ PhyRegisterData = Value;
-+ }
-+@endcode
-+
-+<B>Writing the Phy register</B>
-+@code
-+ bit32u Value;
-+ bit32u RegAddr;
-+ bit32u PhyNum;
-+ bit32u PhyRegisterData;
-+
-+ // Reset Phy 23
-+
-+ PhyNum = 23;
-+ RegAddr = 0;
-+ PhyRegisterData = 0x8000; // Reset bit set
-+
-+ Value = (RegAddr << 5);
-+ Value |= (PhyNum & 0x1F);
-+ Value |= (PhyRegisterData << 16);
-+
-+ rc = HalFunc->Control(HalDev, hcPhyAccess, hcSet, (bit32u *) &Value)
-+
-+ // Check is reset if done
-+
-+ PhyNum = 23;
-+ RegAddr = 0;
-+
-+ Value = (RegAddr << 5);
-+ Value |= (PhyNum & 0x1F);
-+
-+ rc = HalFunc->Control(HalDev, hcPhyAccess, hcGet, (bit32u *) &Value)
-+
-+ If(rc == 0)
-+ {
-+ // Value is overwriten with the value in Register 0 of Phy number 23.
-+ PhyRegisterData = Value;
-+ if((PhyRegisterData & 0x8000) == 0)
-+ ResetIsComplete;
-+ }
-+
-+@endcode
-+<B>
-+*** Example Showing turning values off/on ***
-+<BR>
-+</B>
-+
-+@code
-+
-+int On=1;
-+int Off=0;
-+ # Turn On loopback
-+ OsDev->HalFunc->Control(OsDev->HalDev, "CTRL_LOOPBACK", hcSet, (int*) &On);
-+
-+ # Turn off RX Flow
-+ OsDev->HalFunc->Control(OsDev->HalDev, "RX_FLOW_EN", hcSet, (int*) &Off);
-+@endcode
-+
-+@par CPMAC Configurable Parameters
-+
-+- RX_PASS_CRC : See MBP_Enable description
-+- RX_QOS_EN : See MBP_Enable description
-+- RX_NO_CHAIN : See MBP_Enable description
-+- RX_CMF_EN : See MBP_Enable description
-+- RX_CSF_EN : See MBP_Enable description
-+- RX_CEF_EN : See MBP_Enable description
-+- RX_CAF_EN : See MBP_Enable description
-+- RX_PROM_CH : See MBP_Enable description
-+- RX_BROAD_EN : See MBP_Enable description
-+- RX_BROAD_CH : See MBP_Enable description
-+- RX_MULT_EN : See MBP_Enable description
-+- RX_MULT_CH : See MBP_Enable description
-+
-+- TX_PTYPE : See MacControl description
-+- TX_PACE : See MacControl description
-+- TX_FLOW_EN : See MacControl description
-+- RX_FLOW_EN : See MacControl description
-+- CTRL_LOOPBACK : See MacControl description
-+
-+- RX_MAXLEN : See CPMAC Guide
-+- RX_FILTERLOWTHRESH : See CPMAC Guide
-+- RX0_FLOWTHRESH : See CPMAC Guide
-+- RX_UNICAST_SET : See CPMAC Guide
-+- RX_UNICAST_CLEAR : See CPMAC Guide
-+
-+@par Multicast Support
-+- RX_MULTI_ALL : When used with hcSet, sets all the Hash Bits. When used
-+with hcClear clears all the Hash Bits.
-+- RX_MULTI_SINGLE : When used with hcSet, adds the Hashed Mac Address. When used
-+with hcClear deletes the Hashed Mac Address.
-+Note: Support will be added to keep track of Single additions and deletions.
-+
-+@code
-+*** Example Code ***
-+
-+*** OS code ***
-+ bit8u MacAddress[6];
-+ MacAddress[0] = 0x80;
-+ MacAddress[1] = 0x12;
-+ MacAddress[2] = 0x34;
-+ MacAddress[3] = 0x56;
-+ MacAddress[4] = 0x78;
-+ MacAddress[5] = 0x78;
-+ OsDev->HalFunc->Control(OsDev->HalDev, "RX_MULTI_SINGLE", hcSet, (bit8u*) &MacAddress);
-+ OsDev->HalFunc->Control(OsDev->HalDev, "RX_MULTI_SINGLE", hcClear, (bit8u*) &MacAddress);
-+ OsDev->HalFunc->Control(OsDev->HalDev, "RX_MULTI_ALL", hcSet, NULL);
-+ OsDev->HalFunc->Control(OsDev->HalDev, "RX_MULTI_ALL", hcClear, NULL);
-+@endcode
-+@par MdioConnect Fields
-+<BR>
-+- "MdioConnect" : The OS can set the Phy connection using this key. The default connection is Auto-Negotiation ON, All modes possible.
-+
-+
-+- _CPMDIO_HD <----- Allow Half Duplex, default is 1 (On)
-+- _CPMDIO_FD <----- Allow Full Duplex, default is 1 (On)
-+- _CPMDIO_10 <----- Allow 10 Mbs, default is 1 (On)
-+- _CPMDIO_100 <----- Allow 100 Mbs, default is 1 (On)
-+- _CPMDIO_NEG_OFF <----- Turn off Auto Negotiation, default is 0 (Auto Neg is on)
-+- _CPMDIO_NOPHY <----- Set for use with Marvel-type switch, default is 0 (Phy present)
-+- _CPMDIO_AUTOMDIX <---- Enables Auto Mdix (in conjunction with MdixMask), default is 1 (On)
-+
-+Note: When _CPMDIO_NOPHY is set, CPMAC will report being linked at 100/FD. Reported PhyNum will be 0xFFFFFFFF
-+
-+@par Setting CPMAC for use with a Marvel-type Switch
-+@code
-+ bit32u MdioConnect;
-+
-+ MdioConnect = _CPMDIO_NOPHY;
-+ OsDev->HalFunc->Control(OsDev->HalDev, "MdioConnect", hcSet, (bit32u*) &MdioConnect);
-+@endcode
-+
-+@par OS Support for MDIO
-+@p The OS will need to supply the following values which the CPHAL will request via halControl()
-+<BR>
-+- MdioBusFrequency : The frequency of the BUS that MDIO is on (requested via hcMdioBusFrequency)
-+<BR>
-+- MdioClockFrequency : The desired Clock Frequency that MDIO qill operate at (requested via hcMdioClockFrequency)
-+*/
-+
-+/**
-+@page cpmac_conf DeviceFindxxx() Parameters
-+
-+These are some of the parameters that the CPMAC will request via the DeviceFindxxx() functions -
-+<BR>
-+- "Mlink" : bit mask indicating what link status method Phy is using. Default is MDIO state machine (0x0)
-+- "PhyMask" : bit mask indicating PhyNums used by this CPMAC (e.g 0x8000000, PhyNum is 31)
-+- "MdixMask" : bit mask indicating which Phys support AutoMdix. Default is 0x0 (None)
-+<BR>
-+@par Example cpmac definition from the options.conf for the Sangam VDB
-+<BR>
-+- cpmac( id=eth0, base=0xA8610000, size=0x800, reset_bit=17, int_line=19, PhyMask=0x80000000, MLink=0, MdixMask=0 )
-+*/
-+
-+/**
-+@page auto_mdix Auto Mdix Support
-+
-+Auto Mdix selection is controlled by two elements in the CPMAC. First the OS can turn Auto Midx On or Off by the use of the
-+MdioConnect field, _CPMDIO_AUTOMDIX. This is defaulted ON. For actual Auto Mdix operation the Phy must also be Auto Mdix capable.
-+This is specified by the DeviceFindxxx() field, "MdixMask" (supplied as the variable hcMdixMask).
-+If both these fields are set then the CPMDIO state machine will be enabled for Auto Mdix checking.
-+If a switch to MDI or MDIX mode is needed, the CPMAC will signal this to the OS via Control() using
-+the hcMdioMdixSwitch key.
-+
-+@par OS example for responding to a Mdix Switch Request
-+<BR>
-+@code
-+if(osStrcmpi(pszKey, hcMdioMdixSwitch) == 0) // See if key is Mdix Switch Request
-+ {
-+ if(osStrcmpi(pszAction, hcSet) == 0) // Only respond to Set requests
-+ {
-+
-+ bit32u Mdix;
-+
-+ Mdix = *(bit32u *) ParmValue; // Extract requested Mode
-+ // 0 : MDI
-+ // 1 : MDIX
-+ if(Mdix)
-+ osSetPhyIntoMdixMode(); // Device specific logic
-+ else
-+ osSetPhyIntoMdiMode(); // Device specific logic
-+ rc = 0; // Set return code as Successfull
-+ }
-+@endcode
-+*/
-+
-+/**
-+@page cpmac_stats CPMAC Specific Statistics
-+
-+Statistics level '0' contains all CPMAC specific statistics.
-+
-+
-+*/
-+
-+/**
-+@page Example_Driver_Code
-+
-+@section example_intro Introduction
-+This section provides an in-depth code example for driver implementations. The code
-+below illustrates the use of the CPMAC HAL, but is equally applicable to any CPHAL
-+implementation. Note: the CPHAl constants hcGet, hcSet etc., are currently available for use with teh CPMAC module.
-+Other modules should continue to use pszGET, etc. until these are made generally available.
-+
-+@par Pull Model Example
-+
-+@code
-+
-+#define _CPHAL_CPMAC
-+
-+typedef struct _os_device_s OS_DEVICE;
-+typedef struct _os_receive_s OS_RECEIVEINFO;
-+typedef struct _os_send_s OS_SENDINFO;
-+typedef struct _os_setup_s OS_SETUP;
-+
-+#include "cpswhal_cpmac.h"
-+
-+#define dbgPrintf printf
-+
-+typedef struct _os_device_s
-+{
-+ HAL_DEVICE *HalDev;
-+ HAL_FUNCTIONS *HalFunc;
-+ OS_FUNCTIONS *OsFunc;
-+ OS_SETUP *OsSetup;
-+ bit32u Interrupt;
-+ int (*halIsr)(HAL_DEVICE *HalDev, int*);
-+ int ModulePort;
-+ int Protocol;
-+ int LinkStatus; // 0-> down, otherwise up
-+}os_device_s;
-+
-+typedef struct _os_receive_s
-+{
-+ HAL_RECEIVEINFO *HalReceiveInfo;
-+ char *ReceiveBuffer;
-+ OS_DEVICE *OsDev;
-+}os_receive_s;
-+
-+typedef struct _os_send_s
-+{
-+ OS_DEVICE *OsDev;
-+}os_send_s;
-+
-+typedef struct _os_setup_s
-+{
-+ OS_DEVICE *OsDev;
-+}os_setup_s;
-+
-+
-+
-+void FlowForCphal(OS_DEVICE *OsDev)
-+{
-+ CHANNEL_INFO ChannelInfo;
-+ int nChannels = 200;
-+ int halFuncSize;
-+ int rc;
-+
-+ // Populate OsFunc structure
-+ rc = osInitModule(OsDev);
-+
-+ if(rc)
-+ {
-+ sprintf(bufTmp, "%s: return code from osInitModule:'0x%08X'", __FUNCTION__, rc);
-+ errorout(bufTmp);
-+ }
-+
-+
-+ // OS-Cphal handshake
-+ rc = halCpmacInitModule(&OsDev->HalDev, OsDev, &OsDev->HalFunc, OsDev->OsFunc,
-+ sizeof(OS_FUNCTIONS), &halFuncSize, OsDev->ModulePort);
-+
-+ if(rc)
-+ {
-+ sprintf(bufTmp, "%s: return code from halCpmacInitModule:'0x%08X'", __FUNCTION__, rc);
-+ errorout(bufTmp);
-+ }
-+
-+ // See if hardware module exists
-+ rc = OsDev->HalFunc->Probe(OsDev->HalDev);
-+
-+ if(rc)
-+ {
-+ sprintf(bufTmp, "%s: return code from Probe:'0x%08X'", __FUNCTION__, rc);
-+ errorout(bufTmp);
-+ }
-+
-+ // Initialize hardware module
-+ rc = OsDev->HalFunc->Init(OsDev->HalDev);
-+
-+ if(rc)
-+ {
-+ sprintf(bufTmp, "%s: return code from Init:'0x%08X'", __FUNCTION__, rc);
-+ errorout(bufTmp);
-+ }
-+
-+ // Setup Channel Information (Tranmsit, channel 0)
-+ ChannelInfo.Channel = 0;
-+ ChannelInfo.Direction = DIRECTION_TX;
-+ ChannelInfo.TxNumBuffers = nChannels;
-+ ChannelInfo.TxNumQueues = 1;
-+ ChannelInfo.TxServiceMax = nChannels/3;
-+
-+ rc = OsDev->HalFunc->ChannelSetup(OsDev->HalDev, &ChannelInfo, OsDev->OsSetup);
-+
-+ // Setup Channel Information (Receive, channel 0)
-+ ChannelInfo.Channel = 0;
-+ ChannelInfo.Direction = DIRECTION_RX;
-+ ChannelInfo.RxBufSize = 1518;
-+ ChannelInfo.RxBufferOffset = 0;
-+ ChannelInfo.RxNumBuffers = 2*nChannels;
-+ ChannelInfo.RxServiceMax = nChannels/3;
-+
-+ rc = OsDev->HalFunc->ChannelSetup(OsDev->HalDev, &ChannelInfo, OsDev->OsSetup);
-+
-+ // Open the hardware module
-+ rc = OsDev->HalFunc->Open(OsDev->HalDev);
-+
-+ // Module now ready to Send/Receive data
-+}
-+
-+
-+int osInitModule(OS_FUNCTIONS **pOsFunc)
-+ {
-+ OS_FUNCTIONS *OsFunc;
-+
-+ OsFunc = (OS_FUNCTIONS *) malloc(sizeof(OS_FUNCTIONS));
-+ if (!OsFunc)
-+ return (-1);
-+
-+ *pOsFunc = OsFunc;
-+
-+ OsFunc->CriticalOff = osCriticalOff;
-+ OsFunc->CriticalOn = osCriticalOn;
-+ OsFunc->DataCacheHitInvalidate = osDataCacheHitInvalidate;
-+ OsFunc->DataCacheHitWriteback = osDataCacheHitWriteback;
-+ OsFunc->DeviceFindInfo = osDeviceFindInfo;
-+ OsFunc->DeviceFindParmUint = osDeviceFindParmUint;
-+ OsFunc->DeviceFindParmValue = osDeviceFindParmValue;
-+ OsFunc->Free = osFree;
-+ OsFunc->FreeDev = osFreeDev;
-+ OsFunc->FreeDmaXfer = osFreeDmaXfer;
-+ OsFunc->FreeRxBuffer = osFreeRxBuffer;
-+ OsFunc->IsrRegister = osIsrRegister;
-+ OsFunc->IsrUnRegister = osIsrUnRegister;
-+ OsFunc->Malloc = osMalloc;
-+ OsFunc->MallocDev = osMallocDev;
-+ OsFunc->MallocDmaXfer = osMallocDmaXfer;
-+ OsFunc->MallocRxBuffer = osMallocRxBuffer;
-+
-+
-+ OsFunc->Memset = memset;
-+ OsFunc->Printf = printf;
-+ OsFunc->Sprintf = sprintf;
-+ OsFunc->Strcmpi = osStrcmpi;
-+ OsFunc->Strlen = strlen;
-+ OsFunc->Strstr = strstr;
-+ OsFunc->Strtoul = strtoul;
-+
-+ OsFunc->Control = osControl;
-+ OsFunc->Receive = osReceive;
-+ OsFunc->SendComplete = osSendComplete;
-+ OsFunc->TeardownComplete = osTearDownComplete;
-+
-+ return(0);
-+ }
-+
-+
-+int osReceive(OS_DEVICE *OsDev,FRAGLIST *Fraglist,bit32u FragCount,bit32u PacketSize,HAL_RECEIVEINFO *halInfo, bit32u mode)
-+ {
-+ OS_RECEIVEINFO *skb = (OS_RECEIVEINFO *)Fraglist[0].OsInfo;
-+ dcache_i((char *)Fraglist->data, Fraglist->len);
-+ OsDev->HalFunc->RxReturn(halInfo,0);
-+ return(0);
-+ }
-+
-+int osSendComplete(OS_SENDINFO *skb)
-+ {
-+ return(0);
-+ }
-+
-+
-+static void *osMallocRxBuffer(bit32u Size,void *MemBase, bit32u MemRange,
-+ OS_SETUP *OsSetup, HAL_RECEIVEINFO *HalReceiveInfo,
-+ OS_RECEIVEINFO **OsReceiveInfo, OS_DEVICE *OsDev )
-+ {
-+ void *HalBuffer;
-+ OS_RECEIVEINFO *OsPriv;
-+
-+ HalBuffer=malloc(Size);
-+ if (!HalBuffer)
-+ {
-+ return(0);
-+ }
-+
-+ // Malloc the OS block
-+ *OsReceiveInfo = malloc(sizeof(OS_RECEIVEINFO));
-+ if (!*OsReceiveInfo)
-+ {
-+ free(HalBuffer);
-+ return(0);
-+ }
-+
-+ // Initialize the new buffer descriptor
-+ OsPriv = *OsReceiveInfo;
-+ OsPriv->OsDev = OsDev;
-+ OsPriv->ReceiveBuffer = HalBuffer;
-+ OsPriv->HalReceiveInfo = HalReceiveInfo;
-+
-+ return(HalBuffer);
-+ }
-+
-+
-+void SendBuffer(OS_DEVICE *OsDev, char *Buffer, int Size)
-+{
-+ FRAGLIST Fraglist;
-+ bit32u FragCount;
-+
-+ tcb_pending++;
-+ Fraglist.len = Size;
-+ Fraglist.data = (unsigned *) Buffer;
-+ FragCount = 1;
-+ mode = 0; // Channel 0
-+
-+ dcache_wb(Fraglist.data, Fraglist.len);
-+ OsDev->HalFunc->Send(OsDev->HalDev, &Fraglist, FragCount, Size, (OS_SENDINFO *) Buffer, mode);
-+}
-+
-+
-+void osStateChange(OS_DEVICE *OsDev)
-+ {
-+ int status;
-+ int LinkStatus;
-+ OsDev->HalFunc->Control(OsDev->HalDev, "Status", hcGet, &status);
-+ if(status & CPMAC_STATUS_ADAPTER_CHECK)
-+ {
-+ // Adapter Check, take appropiate action
-+ }
-+ else
-+ {
-+ LinkStatus = status & CPMAC_STATUS_LINK;
-+ if(LinkStatus != OsDev->LinkStatus)
-+ {
-+ dbgPrintf("\n%s:Link %s for inst %d Speed %s, Duplex %s\n",
-+ __FUNCTION__,
-+ LinkStatus ? "up" : "down",
-+ OsDev->ModulePort,
-+ status & CPMAC_STATUS_LINK_SPEED ? "100" : "10",
-+ status & CPMAC_STATUS_LINK_DUPLEX ? "FD" : "HD");
-+ OsDev->LinkStatus = LinkStatus;
-+ }
-+ }
-+ }
-+
-+
-+int osControl(OS_DEVICE *OsDev, const char *pszKey, const char* pszAction, void *ParmValue)
-+ {
-+ int rc=-1;
-+
-+ if (osStrcmpi(pszKey, hcCpuFrequency) == 0)
-+ {
-+ if(osStrcmpi(pszAction, hcGet) == 0)
-+ {
-+ *(bit32u*) ParmValue = cpufreq;
-+ rc = 0;
-+ }
-+ }
-+ if (osStrcmpi(pszKey, hcMdioBusFrequency) == 0)
-+ {
-+ if(osStrcmpi(pszAction, hcGet) == 0)
-+ {
-+ *(bit32u *)ParmValue = MdioBusFrequency;
-+ rc = 0;
-+ }
-+ }
-+if (osStrcmpi(pszKey, hcMdioClockFrequency) == 0)
-+ {
-+ if(osStrcmpi(pszAction, hcGet) == 0)
-+ {
-+ *(bit32u *)ParmValue = MdioClockFrequency;
-+ rc = 0;
-+ }
-+ }
-+
-+ if (osStrcmpi(pszKey, hcTick) == 0)
-+ {
-+ if(osStrcmpi(pszAction, hcSet) == 0)
-+ {
-+ osTickSetInterval(OsDev, *(unsigned int *) ParmValue);
-+ rc = 0;
-+ }
-+ else
-+ if(osStrcmpi(pszAction, hcClear) == 0)
-+ {
-+ osTickDisable(OsDev);
-+ rc = 0;
-+ }
-+ }
-+
-+ if (osStrcmpi(pszKey, "SioFlush") == 0)
-+ {
-+ MySioFlush();
-+ rc = 0;
-+ }
-+
-+ if (osStrcmpi(pszKey, "StateChange") == 0)
-+ {
-+ osStateChange(OsDev);
-+ rc = 0;
-+ }
-+
-+ if (osStrcmpi(pszKey, "Sleep") == 0)
-+ {
-+ osSleep(*(int *)ParmValue);
-+ rc = 0;
-+ }
-+ return(rc);
-+ }
-+
-+@endcode
-+
-+
-+@par Push Model Example (Currently Eswitch ONLY)
-+
-+@code
-+
-+typedef struct _os_device_s OS_DEVICE;
-+typedef struct _os_receive_s OS_RECEIVEINFO;
-+typedef struct _os_send_s OS_SENDINFO;
-+typedef struct _os_setup_s OS_SETUP;
-+
-+#include "cpswhal.h" //Get glogal HAL stuff
-+#include "cpswhaleswitch.h" //Get device specific hal stuff
-+
-+
-+typedef struct _os_device_s
-+{
-+ HAL_DEVICE *HalDev;
-+ HAL_FUNCTIONS *HalFunc;
-+ OS_FUNCTIONS *OsFunc;
-+ OS_SETUP *OsSetup;
-+ bit32u Interrupt;
-+ int (*halIsr)(HAL_DEVICE *HalDev, int*);
-+ int ModulePort;
-+ int Protocol;
-+ int LinkStatus; // 0-> down, otherwise up
-+}os_device_s;
-+
-+typedef struct _os_receive_s
-+{
-+ HAL_RECEIVEINFO *HalReceiveInfo;
-+ char *ReceiveBuffer;
-+ OS_DEVICE *OsDev;
-+}os_receive_s;
-+
-+typedef struct _os_send_s
-+{
-+ OS_DEVICE *OsDev;
-+}os_send_s;
-+
-+typedef struct _os_setup_s
-+{
-+ OS_DEVICE *OsDev;
-+}os_setup_s;
-+
-+
-+
-+void FlowForCphal(OS_DEVICE *OsDev)
-+{
-+CHANNEL_INFO ChannelInfo;
-+ int nChannels = 200;
-+ int halFuncSize;
-+ int rc;
-+
-+ // Populate OsFunc structure
-+ rc = osInitModule(OsDev);
-+
-+ if(rc)
-+ {
-+ sprintf(bufTmp, "%s: return code from osInitModule:'0x%08X'", __FUNCTION__, rc);
-+ errorout(bufTmp);
-+ }
-+
-+
-+ // OS-Cphal handshake
-+ rc = cpswHalEswitchInitModule(&OsDev->HalDev, OsDev, &OsDev->HalFunc, OsDev->OsFunc,
-+ sizeof(OS_FUNCTIONS), &halFuncSize, OsDev->ModulePort);
-+
-+ if(rc)
-+ {
-+ sprintf(bufTmp, "%s: return code from cpswHalEswitchInitModule:'0x%08X'", __FUNCTION__, rc);
-+ errorout(bufTmp);
-+ }
-+
-+
-+ ChannelInfo.Channel = 7;
-+ ChannelInfo.Direction = DIRECTION_RX;
-+ ChanInfo.Receive = osReceiveSS; // Specify function to receive data for this channel
-+
-+ rc = OsDev->HalFunc->ChannelSetup(OsDev->HalDev, &ChannelInfo, OsDev->OsSetup);
-+
-+ MyConfig.debug=0;
-+ MyConfig.CpuFrequency = CpuFreq;
-+ MyConfig.EswitchFrequency = EswitchFreq;
-+ MyConfig.ResetBase = 0xa8611600;
-+ MyConfig.MacAddress = MacAddr;
-+
-+ MyConfig.EswitchResetBit= 27;
-+ MyConfig.Cpmac0ResetBit = 17;
-+ MyConfig.Cpmac1ResetBit = 21;
-+ MyConfig.MdioResetBit = 22;
-+ MyConfig.Phy0ResetBit = 26;
-+ MyConfig.Phy1ResetBit = 28;
-+ MyConfig.HdmaResetBit = 13;
-+ MyConfig.Cpmac0IntBit = 19;
-+ MyConfig.Cpmac1IntBit = 33;
-+ MyConfig.EswitchIntBit = 27;
-+ MyConfig.EswitchBase = 0xa8640000;
-+ MyConfig.EswitchBufferSize = 64;
-+ MyConfig.EswitchHostBufCount = 0;
-+ MyConfig.EswitchDefaultCamSize = 64;
-+ MyConfig.EswitchOverFlowCount = 200;
-+ MyConfig.EswitchOverFlowSize = 256;
-+
-+
-+
-+
-+ rc=EswitchConfig(HalDev,HalFunc,&MyConfig);
-+
-+
-+ // Open the hardware module
-+ rc = OsDev->HalFunc->Open(OsDev->HalDev);
-+
-+ // Module now ready to Send/Receive data
-+}
-+
-+
-+int EswitchConfig(HAL_DEVICE *HalDev, HAL_FUNCTIONS *HalFunc, ESWITCH_CONFIG *Config)
-+{
-+ bit32u sts;
-+ sts = 0;
-+
-+ sts |= cpswhalPushBin(hcdebug, Config->debug);
-+ sts |= cpswhalPushBin(hcCpuFrequency , Config->CpuFrequency );
-+ sts |= cpswhalPushBin(hcEswitchFrequency , Config->EswitchFrequency );
-+ sts |= cpswhalPushBin(hcResetBase , Config->ResetBase );
-+ sts |= cpswhalPushBin(hcMacAddress , Config->MacAddress );
-+ sts |= cpswhalPushBin(hcEswitchResetBit, Config->EswitchResetBit);
-+ sts |= cpswhalPushBin(hcCpmac0ResetBit , Config->Cpmac0ResetBit );
-+ sts |= cpswhalPushBin(hcCpmac1ResetBit , Config->Cpmac1ResetBit );
-+ sts |= cpswhalPushBin(hcMdioResetBit , Config->MdioResetBit );
-+ sts |= cpswhalPushBin(hcPhy0ResetBit , Config->Phy0ResetBit );
-+ sts |= cpswhalPushBin(hcPhy1ResetBit , Config->Phy1ResetBit );
-+ sts |= cpswhalPushBin(hcHdmaResetBit , Config->HdmaResetBit );
-+ sts |= cpswhalPushBin(hcCpmac0IntBit , Config->Cpmac0IntBit );
-+ sts |= cpswhalPushBin(hcCpmac1IntBit , Config->Cpmac1IntBit );
-+ sts |= cpswhalPushBin(hcEswitchIntBit , Config->EswitchIntBit );
-+ sts |= cpswhalPushBin(hcEswitchBase , Config->EswitchBase );
-+ sts |= cpswhalPushBin(hcEswitchBufferSize , Config->EswitchBufferSize );
-+ sts |= cpswhalPushBin(hcEswitchHostBufCount , Config->EswitchHostBufCount );
-+ sts |= cpswhalPushBin(hcEswitchDefaultCamSize , Config->EswitchDefaultCamSize );
-+ sts |= cpswhalPushBin(hcEswitchOverFlowCount , Config->EswitchOverFlowCount );
-+ sts |= cpswhalPushBin(hcEswitchOverFlowSize , Config->EswitchOverFlowSize );
-+ return(sts);
-+}
-+
-+
-+
-+@endcode
-+*/
-+
-+#endif
-diff -urN linux.old/drivers/net/avalanche_cpmac/ec_errors_cpmac.h linux.dev/drivers/net/avalanche_cpmac/ec_errors_cpmac.h
---- linux.old/drivers/net/avalanche_cpmac/ec_errors_cpmac.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/ec_errors_cpmac.h 2005-07-12 02:48:42.051592000 +0200
-@@ -0,0 +1,118 @@
-+/***************************************************************************
-+ Copyright(c) 2001, Texas Instruments Incorporated. All Rights Reserved.
-+
-+ FILE: ec_errors.h
-+
-+ DESCRIPTION:
-+ This file contains definitions and function declarations for
-+ error code support.
-+
-+ HISTORY:
-+ 14Dec00 MJH Added masking to EC_CLASS etc macros
-+ 17Sep02 GSG Added HAL support (new class&devices)
-+ 03Oct02 GSG Removed C++ style comments
-+***************************************************************************/
-+#ifndef _INC_EC_ERRORS
-+#define _INC_EC_ERRORS
-+
-+/*
-+ 31 - CRITICAL
-+ 30-28 - CLASS (ie. DIAG, KERNEL, FLASH, etc)
-+ 27-24 - INSTANCE (ie. 1, 2, 3, etc )
-+ 23-16 - DEVICE (ie. EMAC, IIC, etc)
-+ 15-08 - FUNCTION (ie. RX, TX, INIT, etc)
-+ 07-00 - ERROR CODE (ie. NO_BASE, FILE_NOT_FOUND, etc )
-+*/
-+
-+/*---------------------------------------------------------------------------
-+ Useful defines for accessing fields within error code
-+---------------------------------------------------------------------------*/
-+#define CRITICAL_SHIFT 31
-+#define CLASS_SHIFT 28
-+#define INST_SHIFT 24
-+#define DEVICE_SHIFT 16
-+#define FUNCTION_SHIFT 8
-+#define ERROR_CODE_SHIFT 0
-+
-+#define CRITICAL_MASK 1
-+#define CLASS_MASK 0x07
-+#define DEVICE_MASK 0xFF
-+#define INST_MASK 0x0F
-+#define FUNCTION_MASK 0xFF
-+#define ERROR_CODE_MASK 0xFF
-+
-+#define EC_CLASS(val) ((val&CLASS_MASK) << CLASS_SHIFT)
-+#define EC_DEVICE(val) ((val&DEVICE_MASK) << DEVICE_SHIFT)
-+#define EC_INST(val) ((val&INST_MASK) << INST_SHIFT)
-+#define EC_FUNC(val) ((val&FUNCTION_MASK) << FUNCTION_SHIFT)
-+#define EC_ERR(val) ((val&ERROR_CODE_MASK) << ERROR_CODE_SHIFT)
-+
-+/*---------------------------------------------------------------------------
-+ Operation classes
-+---------------------------------------------------------------------------*/
-+#define EC_HAL EC_CLASS(0)
-+#define EC_DIAG EC_CLASS(8)
-+
-+/*---------------------------------------------------------------------------
-+ Device types
-+---------------------------------------------------------------------------*/
-+#define EC_DEV_EMAC EC_DEVICE(1)
-+#define EC_DEV_IIC EC_DEVICE(2)
-+#define EC_DEV_RESET EC_DEVICE(3)
-+#define EC_DEV_ATMSAR EC_DEVICE(4)
-+#define EC_DEV_MEM EC_DEVICE(5)
-+#define EC_DEV_DES EC_DEVICE(6)
-+#define EC_DEV_DMA EC_DEVICE(7)
-+#define EC_DEV_DSP EC_DEVICE(8)
-+#define EC_DEV_TMR EC_DEVICE(9)
-+#define EC_DEV_WDT EC_DEVICE(10)
-+#define EC_DEV_DCL EC_DEVICE(11)
-+#define EC_DEV_BBIF EC_DEVICE(12)
-+#define EC_DEV_PCI EC_DEVICE(13)
-+#define EC_DEV_XBUS EC_DEVICE(14)
-+#define EC_DEV_DSLIF EC_DEVICE(15)
-+#define EC_DEV_USB EC_DEVICE(16)
-+#define EC_DEV_CLKC EC_DEVICE(17)
-+#define EC_DEV_RAPTOR EC_DEVICE(18)
-+#define EC_DEV_DSPC EC_DEVICE(19)
-+#define EC_DEV_INTC EC_DEVICE(20)
-+#define EC_DEV_GPIO EC_DEVICE(21)
-+#define EC_DEV_BIST EC_DEVICE(22)
-+#define EC_DEV_HDLC EC_DEVICE(23)
-+#define EC_DEV_UART EC_DEVICE(24)
-+#define EC_DEV_VOIC EC_DEVICE(25)
-+/* 9.17.02 (new HAL modules) */
-+#define EC_DEV_CPSAR EC_DEVICE(0x1A)
-+#define EC_DEV_AAL5 EC_DEVICE(0x1B)
-+#define EC_DEV_AAL2 EC_DEVICE(0x1C)
-+#define EC_DEV_CPMAC EC_DEVICE(0x1D)
-+#define EC_DEV_VDMA EC_DEVICE(0x1E)
-+#define EC_DEV_VLYNQ EC_DEVICE(0x1F)
-+#define EC_DEV_CPPI EC_DEVICE(0x20)
-+#define EC_DEV_CPMDIO EC_DEVICE(0x21)
-+
-+/*---------------------------------------------------------------------------
-+ Function types
-+---------------------------------------------------------------------------*/
-+#define EC_FUNC_READ_CONF EC_FUNC(1)
-+#define EC_FUNC_INIT EC_FUNC(2)
-+
-+/*---------------------------------------------------------------------------
-+ Error codes
-+---------------------------------------------------------------------------*/
-+#define EC_CRITICAL (1<<CRITICAL_SHIFT)
-+#define EC_NO_ERRORS 0
-+#define EC_VAL_NO_BASE EC_ERR(1)
-+#define EC_VAL_NO_RESET_BIT EC_ERR(2)
-+#define EC_VAL_NO_RESET EC_ERR(3)
-+#define EC_VAL_BAD_BASE EC_ERR(4)
-+#define EC_VAL_MALLOCFAILED EC_ERR(5)
-+#define EC_VAL_NO_RESETBASE EC_ERR(6)
-+#define EC_DEVICE_NOT_FOUND EC_ERR(7)
-+
-+/*---------------------------------------------------------------------------
-+ Function declarations
-+---------------------------------------------------------------------------*/
-+extern void ec_log_error( unsigned int );
-+
-+#endif /* _INC_EC_ERRORS */
-diff -urN linux.old/drivers/net/avalanche_cpmac/hcpmac.c linux.dev/drivers/net/avalanche_cpmac/hcpmac.c
---- linux.old/drivers/net/avalanche_cpmac/hcpmac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/hcpmac.c 2005-07-12 02:48:42.174574000 +0200
-@@ -0,0 +1,1878 @@
-+/******************************************************************************
-+ * TNETDxxxx Software Support
-+ * Copyright (c) 2002-2004 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * FILE:
-+ *
-+ * DESCRIPTION:
-+ * This file contains the code for the HAL EMAC Bridge Test
-+ *
-+ * HISTORY:
-+ * xxXxx01 Denis RC1.00 Original Version created.
-+ * 22Jan02 Denis/Mick RC1.01 Modified for HAL EMAC API
-+ * 24Jan02 Denis/Mick RC1.02 Speed Improvements
-+ * 28Jan02 Denis/Mick RC1.16 Made function calls pointers
-+ * 28Jan02 Mick RC1.18 Split into separate modules
-+ * 29Jan02 Mick RC1.19 Hal include file cleaned up
-+ * 15Jul02 Michael Hanrahan RC1.20 Synch'd with Linux Version
-+ * 23Sep02 Michael Hanrahan RC1.21 Added CPPI.C
-+ * 16Oct02 Michael Hanrahan RC1.22 Added CAF etc to Options.Conf
-+ * 09Jan03 Michael Hanrahan RC3.01 Fixed incorrect MDIO check
-+ * 01Feb03 Michael Hanrahan RC3.02 Updated for GPIO/PBUSFREQ
-+ * 29Mar03 Michael Hanrahan 1.03 Corrected ChannelConfigGet
-+ * 29Mar03 Michael Hanrahan 1.03 Removed user setting of TxNumQueues
-+ * 23Aug04 Michael Hanrahan 1.7.8 Support for Setting Mac Address
-+ * @author Michael Hanrahan
-+ * @version 1.02
-+ * @date 24-Jan-2002
-+ *****************************************************************************/
-+#define _HAL_CPMAC
-+#define _CPHAL_CPMAC
-+#define _CPHAL
-+#define __CPHAL_CPMDIO
-+
-+#include "dox_cpmac.h" /* Documentation information */
-+
-+/* OS Data Structure definitions */
-+
-+typedef void OS_PRIVATE;
-+typedef void OS_DEVICE;
-+typedef void OS_SENDINFO;
-+typedef void OS_RECEIVEINFO;
-+typedef void OS_SETUP;
-+
-+/* HAL Data Structure definitions */
-+
-+typedef struct _phy_device PHY_DEVICE;
-+typedef struct hal_device HAL_DEVICE;
-+typedef struct hal_private HAL_PRIVATE;
-+typedef struct hal_private HAL_RECEIVEINFO;
-+
-+#include "cpcommon_cpmac.h"
-+#include "cpswhal_cpmac.h"
-+#include "cpmdio.h"
-+#include "hcpmac.h"
-+#include "cpmac_reg.h"
-+
-+
-+#define EC_MODULE
-+
-+/* MDIO Clock Frequency Default Value */
-+
-+/* Rcb/Tcb Constants */
-+
-+#define CB_SOF_BIT (1<<31)
-+#define CB_EOF_BIT (1<<30)
-+#define CB_SOF_AND_EOF_BIT (CB_SOF_BIT|CB_EOF_BIT)
-+#define CB_OWNERSHIP_BIT (1<<29)
-+#define CB_EOQ_BIT (1<<28)
-+#define CB_SIZE_MASK 0x0000ffff
-+#define RCB_ERRORS_MASK 0x03fe0000
-+
-+static char *channel_names[] = CHANNEL_NAMES; /* GSG 11/22 (may change this implementation) */
-+
-+#define scFound(Module) if (HalDev->State != enDevFound) return (Module|EC_FUNC_CHSETUP|EC_VAL_INVALID_STATE)
-+#define scInit(Module) if (HalDev->State < enInitialized) return (Module|EC_FUNC_CHSETUP|EC_VAL_INVALID_STATE)
-+#define scOpen(Module) if (HalDev->State < enOpened) return (Module|EC_FUNC_CHSETUP|EC_VAL_INVALID_STATE)
-+
-+
-+
-+/********************************************************************
-+**
-+** L O C A L F U N C T I O N S
-+**
-+********************************************************************/
-+static int halIsr(HAL_DEVICE *HalDev, int *MorePackets);
-+static int cpmacRandom(HAL_DEVICE *HalDev);
-+static int cpmacRandomRange(HAL_DEVICE *HalDev, int min, int max);
-+static int halPacketProcessEnd(HAL_DEVICE *HalDev);
-+
-+#include "cpcommon_cpmac.c" /*~RC3.02*/
-+#include "cppi_cpmac.c"
-+#include "cpmdio.c" /*~RC3.02*/
-+
-+static int MacAddressSave(HAL_DEVICE *HalDev, unsigned char *MacAddr)
-+ {
-+ int i;
-+ int inst = HalDev->inst;
-+
-+ HalDev->MacAddr = MacAddr;
-+
-+ if(HalDev->debug)
-+ {
-+ dbgPrintf("MacAddrSave[%d]: ", inst);
-+ for (i=0;i<6;i++)
-+ dbgPrintf("%X", HalDev->MacAddr[i]);
-+ dbgPrintf("\n");
-+ osfuncSioFlush();
-+ }
-+ return(EC_NO_ERRORS);
-+ }
-+static int MacAddressSet(HAL_DEVICE *HalDev)
-+ {
-+ unsigned char *macadr = &HalDev->MacAddr[0];
-+ int base = HalDev->dev_base;
-+
-+ scOpen(EC_CPMAC);
-+ CPMAC_MACADDRLO_0(base) = macadr[5];
-+ CPMAC_MACADDRMID(base) = macadr[4];
-+ CPMAC_MACADDRHI(base) = (macadr[0])|(macadr[1]<<8)|(macadr[2]<<16)|(macadr[3]<<24);
-+ if(HalDev->debug)
-+ {
-+ dbgPrintf("MacAddrSet: MacAddr(%d) %X %X %X\n", HalDev->inst, CPMAC_MACADDRLO_0(base),
-+ CPMAC_MACADDRMID(base),
-+ CPMAC_MACADDRHI(base));
-+
-+ dbgPrintf("Start MAC: %d\n",HalDev->dev_base);
-+ osfuncSioFlush();
-+ }
-+ return(EC_NO_ERRORS);
-+ }
-+
-+
-+/*
-+ Updates the MacHash registers
-+*/
-+static void MacHashSet(HAL_DEVICE *HalDev)
-+ {
-+ if(HalDev->State < enOpened)
-+ return;
-+
-+ CPMAC_MACHASH1(HalDev->dev_base) = HalDev->MacHash1;
-+ CPMAC_MACHASH2(HalDev->dev_base) = HalDev->MacHash2;
-+ if (DBG(11))
-+ dbgPrintf("CPMAC[%X]: MacHash1 0x%08X, MacHash2 0x%08X\n", HalDev->dev_base, CPMAC_MACHASH1(HalDev->dev_base), CPMAC_MACHASH2(HalDev->dev_base));
-+ }
-+
-+/*
-+ Reads the MacControl register and updates
-+ the changable bits. (See MACCONTROL_MASK)
-+*/
-+static void RxMBP_EnableSet(HAL_DEVICE *HalDev)
-+ {
-+ bit32u RxMbpEnable;
-+ if(HalDev->State < enOpened)
-+ return;
-+ RxMbpEnable = CPMAC_RX_MBP_ENABLE(HalDev->dev_base);
-+ RxMbpEnable &= ~RX_MBP_ENABLE_MASK; /* Clear out updatable bits */
-+ RxMbpEnable |= HalDev->RxMbpEnable;
-+ CPMAC_RX_MBP_ENABLE(HalDev->dev_base) = RxMbpEnable;
-+ }
-+/*
-+ Reads the MacControl register and updates
-+ the changable bits. (See MACCONTROL_MASK)
-+*/
-+static void MacControlSet(HAL_DEVICE *HalDev)
-+ {
-+ bit32u MacControl;
-+ if(HalDev->State < enOpened)
-+ return;
-+ MacControl = CPMAC_MACCONTROL(HalDev->dev_base);
-+ MacControl &= ~MACCONTROL_MASK; /* Clear out updatable bits */
-+ MacControl |= HalDev->MacControl;
-+ if(!(MacControl & MII_EN)) /* If Enable is not set just update register */
-+ CPMAC_MACCONTROL(HalDev->dev_base) = MacControl;
-+ else
-+ {
-+ if(MacControl & CTRL_LOOPBACK) /* Loopback Set */
-+ {
-+ /* mii_en is set and loopback is needed,
-+ clear mii_en, set loopback, then set mii_en
-+ */
-+ MacControl &= ~MII_EN; /* Clear MII_EN */
-+ CPMAC_MACCONTROL(HalDev->dev_base) = MacControl;
-+ CPMAC_MACCONTROL(HalDev->dev_base) |= MII_EN; /* Set MII_EN */
-+ HalDev->Linked = 1; /* if in loopback the logically linked */
-+ }
-+ else /* If Loopback not set just update */
-+ {
-+ CPMAC_MACCONTROL(HalDev->dev_base) = MacControl;
-+ }
-+ }
-+ if(DBG(0))
-+ dbgPrintf("[halMacControlSet]MacControl:%08X\n", CPMAC_MACCONTROL(HalDev->dev_base));
-+ }
-+static int UnicastSet(HAL_DEVICE *HalDev)
-+ {
-+ CPMAC_RX_UNICAST_SET(HalDev->dev_base) = HalDev->RxUnicastSet;
-+ CPMAC_RX_UNICAST_CLEAR(HalDev->dev_base) = HalDev->RxUnicastClear;
-+ return(EC_NO_ERRORS);
-+ }
-+
-+
-+static bit32u HashGet(bit8u *Address)
-+ {
-+ bit32u hash;
-+ bit8u tmpval;
-+ int i;
-+
-+ hash = 0;
-+ for( i=0; i<2; i++ )
-+ {
-+ tmpval = *Address++;
-+ hash ^= (tmpval>>2)^(tmpval<<4);
-+ tmpval = *Address++;
-+ hash ^= (tmpval>>4)^(tmpval<<2);
-+ tmpval = *Address++;
-+ hash ^= (tmpval>>6)^(tmpval);
-+ }
-+
-+ return( hash & 0x3F );
-+ }
-+
-+static void HashAdd(HAL_DEVICE *HalDev, bit8u *MacAddress)
-+{
-+ bit32u HashValue;
-+ bit32u HashBit;
-+
-+ HashValue = HashGet(MacAddress);
-+
-+ if(HashValue < 32)
-+ {
-+ HashBit = (1 << HashValue);
-+ HalDev->MacHash1 |= HashBit;
-+ }
-+ else
-+ {
-+ HashBit = (1 << (HashValue-32));
-+ HalDev->MacHash2 |= HashBit;
-+ }
-+}
-+
-+static void HashDel(HAL_DEVICE *HalDev, bit8u *MacAddress)
-+{
-+ bit32u HashValue;
-+ bit32u HashBit;
-+
-+ HashValue = HashGet(MacAddress);
-+
-+ if(HashValue < 32)
-+ {
-+ HashBit = (1 << HashValue);
-+ HalDev->MacHash1 &= ~HashBit;
-+ }
-+ else
-+ {
-+ HashBit = (1 << (HashValue-32));
-+ HalDev->MacHash2 &= ~HashBit;
-+ }
-+}
-+
-+/* Replace with an array based on key, with a ptr to the code to do */
-+/* e.g. [enRX_PASS_CRC] = {Set, MBP_UPDATE() } */
-+static void DuplexUpdate(HAL_DEVICE *HalDev)
-+{
-+ int base = HalDev->dev_base;
-+ PHY_DEVICE *PhyDev = HalDev->PhyDev;
-+
-+ if(HalDev->State < enOpened)
-+ return;
-+
-+ /* No Phy Condition */
-+ if(HalDev->MdioConnect & _CPMDIO_NOPHY) /*MJH+030805*/
-+ {
-+ /* No Phy condition, always linked */
-+ HalDev->Linked = 1;
-+ HalDev->EmacSpeed = 1;
-+ HalDev->EmacDuplex = 1;
-+ HalDev->PhyNum = 0xFFFFFFFF; /* No Phy Num */
-+ CPMAC_MACCONTROL(base) |= FULLDUPLEX; /*MJH+030909*/
-+ osfuncStateChange();
-+ return;
-+ }
-+
-+ if(HalDev->MacControl & CTRL_LOOPBACK) /* Loopback Set */
-+ {
-+ HalDev->Linked = 1;
-+ return;
-+ }
-+
-+ if (HalDev->MdioConnect & _CPMDIO_LOOPBK)
-+ {
-+ HalDev->Linked = cpMacMdioGetLoopback(HalDev->PhyDev);
-+ }
-+ else
-+ {
-+ HalDev->Linked = cpMacMdioGetLinked(HalDev->PhyDev);
-+ }
-+ if (HalDev->Linked)
-+ {
-+ /* Retreive Duplex and Speed and the Phy Number */
-+ if(HalDev->MdioConnect & _CPMDIO_LOOPBK)
-+ HalDev->EmacDuplex = 1;
-+ else
-+ HalDev->EmacDuplex = cpMacMdioGetDuplex(PhyDev);
-+ HalDev->EmacSpeed = cpMacMdioGetSpeed(PhyDev);
-+ HalDev->PhyNum = cpMacMdioGetPhyNum(PhyDev);
-+
-+ if(HalDev->EmacDuplex)
-+ CPMAC_MACCONTROL(base) |= FULLDUPLEX;
-+ else
-+ CPMAC_MACCONTROL(base) &= ~FULLDUPLEX;
-+ if(HalDev->debug)
-+ dbgPrintf("%d: Phy= %d, Speed=%s, Duplex=%s\n",HalDev->inst,HalDev->PhyNum,(HalDev->EmacSpeed)?"100":"10",(HalDev->EmacDuplex)?"Full":"Half");
-+ }
-+ if(HalDev->debug)
-+ dbgPrintf("DuplexUpdate[%d]: MACCONTROL 0x%08X, %s\n", HalDev->inst, CPMAC_MACCONTROL(base),(HalDev->Linked)?"Linked":"Not Linked");
-+}
-+static void MdioSetPhyMode(HAL_DEVICE *HalDev)
-+ {
-+ unsigned int PhyMode;
-+ /* Verify proper device state */
-+ if (HalDev->State < enOpened)
-+ return;
-+
-+ PhyMode = NWAY_AUTO|NWAY_FD100|NWAY_HD100|NWAY_FD10|NWAY_HD10;
-+ if(DBG(0))
-+ {
-+ dbgPrintf("halSetPhyMode1: MdioConnect:%08X ,", HalDev->MdioConnect);
-+ dbgPrintf("PhyMode:%08X Auto:%d, FD10:%d, HD10:%d, FD100:%d, HD100:%d\n", PhyMode,
-+ PhyMode&NWAY_AUTO, PhyMode&NWAY_FD10, PhyMode&NWAY_HD10, PhyMode&NWAY_FD100,
-+ PhyMode&NWAY_HD100);
-+ }
-+
-+
-+ if ( HalDev->MdioConnect & _CPMDIO_NEG_OFF) /* ~RC3.01 */
-+ PhyMode &= ~(NWAY_AUTO); /* Disable Auto Neg */
-+ if (!(HalDev->MdioConnect & _CPMDIO_HD))
-+ PhyMode &= ~(NWAY_HD100|NWAY_HD10); /* Cannot support HD */
-+ if (!(HalDev->MdioConnect & _CPMDIO_FD))
-+ PhyMode &= ~(NWAY_FD100|NWAY_FD10); /* Cannot support FD */
-+ if (!(HalDev->MdioConnect & _CPMDIO_10))
-+ PhyMode &= ~(NWAY_HD10|NWAY_FD10); /* Cannot support 10 Mbs */
-+ if (!(HalDev->MdioConnect & _CPMDIO_100))
-+ PhyMode &= ~(NWAY_HD100|NWAY_FD100); /* Cannot support 100 Mbs */
-+
-+ if(HalDev->MdioConnect & _CPMDIO_AUTOMDIX) PhyMode |= NWAY_AUTOMDIX; /* Set AutoMdix */
-+
-+ if (HalDev->CpmacFrequency <= 50000000)
-+ PhyMode &= ~(NWAY_FD100|NWAY_HD100); /* Cannot support 100 MBS */
-+ if(DBG(7))
-+ dbgPrintf("halNeg: PhyMode[0x%08X] %d\n", HalDev->dev_base, PhyMode);
-+
-+ if(DBG(0))
-+ {
-+ dbgPrintf("halSetPhyMode2: MdioConnect:%08X ,", HalDev->MdioConnect);
-+ dbgPrintf("PhyMode:%08X Auto:%d, FD10:%d, HD10:%d, FD100:%d, HD100:%d\n", PhyMode,
-+ PhyMode&NWAY_AUTO, PhyMode&NWAY_FD10, PhyMode&NWAY_HD10, PhyMode&NWAY_FD100,
-+ PhyMode&NWAY_HD100);
-+ }
-+
-+
-+ cpMacMdioSetPhyMode(HalDev->PhyDev,PhyMode);
-+ DuplexUpdate(HalDev);
-+ }
-+static int StatsClear(HAL_DEVICE *HalDev)
-+{
-+ int i;
-+ MEM_PTR pStats;
-+
-+ scOpen(EC_CPMAC);
-+
-+ pStats = pCPMAC_RXGOODFRAMES(HalDev->dev_base);
-+ for (i=0;i<STATS_MAX;i++)
-+ {
-+ *(MEM_PTR)(pStats) = 0xFFFFFFFF;
-+ pStats++;
-+ }
-+
-+ return(EC_NO_ERRORS);
-+}
-+static void StatsDump(HAL_DEVICE *HalDev, void *Value)
-+ {
-+ MEM_PTR ptrStats;
-+ MEM_PTR ptrValue;
-+ int i;
-+ ptrStats = pCPMAC_RXGOODFRAMES(HalDev->dev_base);
-+ ptrValue = (bit32u*) Value;
-+ for (i=0; i<STATS_MAX; i++)
-+ {
-+ *ptrValue = *ptrStats;
-+ if(DBG(4))
-+ {
-+ dbgPrintf("halStatsDump: Stat[%d:0x%08X] %d 0x%08X %d\n", i, ptrStats, *ptrStats, ptrValue, *ptrValue);
-+ osfuncSioFlush();
-+ }
-+ ptrStats++;
-+ ptrValue++;
-+ }
-+ }
-+static void ConfigApply(HAL_DEVICE *HalDev)
-+ {
-+ CPMAC_RX_MAXLEN(HalDev->dev_base) = HalDev->RxMaxLen;
-+ CPMAC_RX_FILTERLOWTHRESH(HalDev->dev_base) = HalDev->RxFilterLowThresh;
-+ CPMAC_RX0_FLOWTHRESH(HalDev->dev_base) = HalDev->Rx0FlowThresh;
-+ UnicastSet(HalDev);
-+ MacAddressSet(HalDev);
-+ RxMBP_EnableSet(HalDev);
-+ MacHashSet(HalDev);
-+ MacControlSet(HalDev);
-+ if(DBG(0))
-+ dbgPrintf("ValuesUpdate[%d]: MBP_ENABLE 0x%08X\n", HalDev->inst, CPMAC_RX_MBP_ENABLE(HalDev->dev_base));
-+ }
-+static int halStatus(HAL_DEVICE *HalDev)
-+{
-+ int status;
-+
-+ if(HalDev->State < enOpened)
-+ return (EC_CPMAC|EC_FUNC_STATUS|EC_VAL_INVALID_STATE); /*MJH+030805*/
-+
-+ /* No Phy Condition */
-+ if(HalDev->MdioConnect & _CPMDIO_NOPHY) /*MJH+030805*/
-+ {
-+ /* No Phy condition, always linked */
-+ status = HalDev->Linked;
-+ status |= CPMAC_STATUS_LINK_DUPLEX;
-+ status |= CPMAC_STATUS_LINK_SPEED;
-+ return(status);
-+ }
-+
-+
-+ if (HalDev->HostErr) /* Adapter Check */
-+ {
-+ bit32u tmp;
-+ status = CPMAC_STATUS_ADAPTER_CHECK;
-+ if(HalDev->MacStatus & RX_HOST_ERR_CODE)
-+ {
-+ status |= CPMAC_STATUS_HOST_ERR_DIRECTION;
-+ tmp = (HalDev->MacStatus & RX_HOST_ERR_CODE) >> 12; /* Code */
-+ status |= (tmp << 9); /* Code */
-+ tmp = (HalDev->MacStatus & RX_ERR_CH) >> 8; /* Channel */
-+ status |= (tmp << 13);
-+ }
-+ else
-+ if(HalDev->MacStatus & TX_HOST_ERR_CODE)
-+ {
-+ status |= CPMAC_STATUS_HOST_ERR_DIRECTION;
-+ tmp = (HalDev->MacStatus & TX_HOST_ERR_CODE) >> 20; /* Code */
-+ status |= (tmp << 9); /* Code */
-+ tmp = (HalDev->MacStatus & TX_ERR_CH) >> 16; /* Channel */
-+ status |= (tmp << 13);
-+ }
-+ }
-+ else
-+ {
-+ status = HalDev->Linked;
-+ if(status)
-+ {
-+ status = CPMAC_STATUS_LINK;
-+ if(cpMacMdioGetDuplex(HalDev->PhyDev))
-+ status |= CPMAC_STATUS_LINK_DUPLEX;
-+ if(cpMacMdioGetSpeed(HalDev->PhyDev))
-+ status |= CPMAC_STATUS_LINK_SPEED;
-+ }
-+ }
-+ if(HalDev->debug)
-+ dbgPrintf("[halStatus] Link Status is %d for 0x%X\n", status, HalDev->dev_base);
-+ return(status);
-+}
-+static int InfoAccess(HAL_DEVICE *HalDev, int Key, int Action, void *ParmValue)
-+ {
-+ int rc = 0;
-+ int Update=0;
-+
-+ switch (Key)
-+ {
-+ /********************************************************************/
-+ /* */
-+ /* GENERAL */
-+ /* */
-+ /********************************************************************/
-+
-+ case enVersion :
-+ if(Action==enGET)
-+ {
-+ *(const char **)ParmValue = pszVersion_CPMAC;
-+ }
-+ break;
-+ case enDebug :
-+ if(Action==enSET)
-+ {
-+ HalDev->debug = *(unsigned int *)ParmValue;
-+ }
-+ break;
-+
-+ case enStatus :
-+ if(Action==enGET)
-+ {
-+ int status;
-+ status = halStatus(HalDev);
-+ *(int *)ParmValue = status;
-+ }
-+ break;
-+ /********************************************************************/
-+ /* */
-+ /* RX_MBP_ENABLE */
-+ /* */
-+ /********************************************************************/
-+
-+ case enRX_PASS_CRC :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_PASS_CRC(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_QOS_EN :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_QOS_EN(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_NO_CHAIN :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_NO_CHAIN(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_CMF_EN :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_CMF_EN(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_CSF_EN :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_CSF_EN(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_CEF_EN :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_CEF_EN(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_CAF_EN :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_CAF_EN(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_PROM_CH :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_PROM_CH(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_BROAD_EN :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_BROAD_EN(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_BROAD_CH :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_BROAD_CH(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_MULT_EN :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_MULT_EN(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_MULT_CH :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_MULT_CH(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+
-+ /********************************************************************/
-+ /* */
-+ /* MAC_CONTROL */
-+ /* */
-+ /********************************************************************/
-+
-+ case enTX_PTYPE :
-+ if(Action==enSET)
-+ {
-+ UPDATE_TX_PTYPE(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enTX_PACE :
-+ if(Action==enSET)
-+ {
-+ UPDATE_TX_PACE(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enTX_FLOW_EN :
-+ if(Action==enSET)
-+ {
-+ UPDATE_TX_FLOW_EN(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_FLOW_EN :
-+ if(Action==enSET)
-+ {
-+ UPDATE_RX_FLOW_EN(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+
-+ case enCTRL_LOOPBACK :
-+ if(Action==enSET)
-+ {
-+ UPDATE_CTRL_LOOPBACK(*(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ /********************************************************************/
-+ /* */
-+ /* RX_UNICAST_SET */
-+ /* */
-+ /********************************************************************/
-+
-+ case enRX_UNICAST_SET :
-+ if(Action==enSET)
-+ {
-+ HalDev->RxUnicastSet |= (1 << *(unsigned int *)ParmValue);
-+ HalDev->RxUnicastClear &= ~(1 << *(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_UNICAST_CLEAR :
-+ if(Action==enSET)
-+ {
-+ HalDev->RxUnicastClear |= (1 << *(unsigned int *)ParmValue);
-+ HalDev->RxUnicastSet &= ~(1 << *(unsigned int *)ParmValue);
-+ Update=1;
-+ }
-+ break;
-+
-+ case enRX_MAXLEN :
-+ if(Action==enSET)
-+ {
-+ HalDev->RxMaxLen = *(unsigned int *)ParmValue;
-+ Update=1;
-+ }
-+ break;
-+
-+ case enRX_FILTERLOWTHRESH :
-+ if(Action==enSET)
-+ {
-+ HalDev->RxFilterLowThresh = *(unsigned int *)ParmValue;
-+ Update=1;
-+ }
-+ break;
-+ case enRX0_FLOWTHRESH :
-+ if(Action==enSET)
-+ {
-+ HalDev->Rx0FlowThresh = *(unsigned int *)ParmValue;
-+ Update=1;
-+ }
-+ break;
-+ /********************************************************************/
-+ /* */
-+ /* RX_MULTICAST */
-+ /* */
-+ /********************************************************************/
-+
-+ case enRX_MULTICAST :
-+ break;
-+ case enRX_MULTI_SINGLE :
-+ if(DBG(11))
-+ {
-+ int tmpi;
-+ bit8u *MacAddress;
-+ MacAddress = (bit8u *) ParmValue;
-+ dbgPrintf("CPMAC[%X]: MacAddress '", HalDev->dev_base);
-+ for (tmpi=0; tmpi<6; tmpi++)
-+ dbgPrintf("%02X:", MacAddress[tmpi]);
-+ dbgPrintf("\n");
-+ }
-+ if(Action==enCLEAR)
-+ {
-+ HashDel(HalDev, ParmValue);
-+ Update=1;
-+ }
-+ else
-+ if(Action==enSET)
-+ {
-+ HashAdd(HalDev, ParmValue);
-+ Update=1;
-+ }
-+ break;
-+ case enRX_MULTI_ALL :
-+ if(Action==enCLEAR)
-+ {
-+ HalDev->MacHash1 = 0;
-+ HalDev->MacHash2 = 0;
-+ Update=1;
-+ }
-+ else
-+ if(Action==enSET)
-+ {
-+ HalDev->MacHash1 = 0xFFFFFFFF;
-+ HalDev->MacHash2 = 0xFFFFFFFF;
-+ Update=1;
-+ }
-+ break;
-+
-+ /********************************************************************/
-+ /* */
-+ /* MDIO */
-+ /* */
-+ /********************************************************************/
-+
-+ case enMdioConnect :
-+ if(Action==enSET)
-+ {
-+ HalDev->MdioConnect = *(unsigned int *)ParmValue;
-+ MdioSetPhyMode(HalDev);
-+ }
-+ if(Action==enGET)
-+ {
-+ *(unsigned int *)ParmValue = HalDev->MdioConnect;
-+ }
-+ break;
-+
-+
-+ /********************************************************************/
-+ /* */
-+ /* STATISTICS */
-+ /* */
-+ /********************************************************************/
-+ case enStatsClear :
-+ StatsClear(HalDev);
-+ break;
-+ case enStatsDump :
-+ if(Action==enGET)
-+ {
-+ StatsDump(HalDev, ParmValue);
-+ }
-+ break;
-+
-+/* Not implemented
-+ case enStats1 :
-+ if(Action==enGET)
-+ {
-+ StatsGet(HalDev, ParmValue, 1);
-+ }
-+ break;
-+
-+ case enStats2 :
-+ if(Action==enGET)
-+ {
-+ StatsGet(HalDev, ParmValue, 2);
-+ }
-+ break;
-+ case enStats3 :
-+ if(Action==enGET)
-+ {
-+ StatsGet(HalDev, ParmValue, 3);
-+ }
-+ break;
-+ case enStats4 :
-+ if(Action==enGET)
-+ {
-+ StatsGet(HalDev, ParmValue, 4);
-+ }
-+ break;
-+
-+*/
-+
-+ default:
-+ rc = EC_CPMAC|EC_FUNC_OPTIONS|EC_VAL_KEY_NOT_FOUND;
-+ break;
-+ }
-+
-+ /* Verify proper device state */
-+ if (HalDev->State == enOpened)
-+ switch (Update)
-+ {
-+ case 1 :
-+ ConfigApply(HalDev);
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ return (rc);
-+ }
-+static const char pszStats[] = "Stats;";
-+
-+static int halControl(HAL_DEVICE *HalDev, const char *pszKey, const char *pszAction, void *Value)
-+ {
-+ int i;
-+ int rc=0;
-+ int Action;
-+ int ActionFound;
-+ int KeyFound;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(1))
-+ {
-+ dbgPrintf("\nhalControl-HalDev:%08X,Action:%s,Key:%s\n", (bit32u)HalDev, pszAction, pszKey);
-+ }
-+#endif
-+
-+ /* 23Aug04 - BCIL needs to set Mac Address */
-+ if(HalDev->OsFunc->Strcmpi(pszKey, pszMacAddr) == 0)
-+ {
-+ KeyFound=1;
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcSet) == 0)
-+ {
-+ unsigned char *MacAddr;
-+ MacAddr = (unsigned char *) Value;
-+ MacAddressSave(HalDev, MacAddr);
-+ MacAddressSet(HalDev);
-+ return(0);
-+ }
-+ else
-+ {
-+ return(-1);
-+ }
-+ }
-+
-+ if(HalDev->OsFunc->Strcmpi(pszKey, hcLinked) == 0)
-+ {
-+ KeyFound=1;
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcSet) == 0)
-+ {
-+ HalDev->Linked = *(int *)Value;
-+ return(0);
-+ }
-+ else
-+ {
-+ return(-1);
-+ }
-+ }
-+
-+ if(HalDev->OsFunc->Strcmpi(pszKey, "TxIntDisable") == 0)
-+ {
-+ KeyFound=1;
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcSet) == 0)
-+ {
-+ HalDev->TxIntDisable = *(int *)Value;
-+ if(HalDev->TxIntDisable && (HalDev->State == enOpened))
-+ {
-+ /* if Opened and need TxIntDisabled, clear Ints for Channel 0 */
-+ CPMAC_TX_INTMASK_CLEAR(HalDev->dev_base) = 1;
-+ }
-+ return(0);
-+ }
-+ else
-+ {
-+ return(-1);
-+ }
-+ }
-+
-+ if(HalDev->OsFunc->Strcmpi(pszKey, hcPhyAccess) == 0)
-+ {
-+ bit32u RegAddr;
-+ bit32u PhyNum;
-+ bit32u Data;
-+ bit32u ValueIn;
-+
-+ ValueIn = *(bit32u*) Value;
-+
-+ KeyFound=1;
-+ /* Cannot access MII if not opended */
-+
-+ if(HalDev->State < enOpened)
-+ return(-1);
-+
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcGet) == 0)
-+ {
-+
-+ PhyNum = (ValueIn & 0x1F); /* Phynum 0-32 */
-+ RegAddr = (ValueIn >> 5) & 0xFF; /* RegAddr in upper 11 bits */
-+
-+ *(bit32u*)Value = _mdioUserAccessRead(HalDev->PhyDev, RegAddr, PhyNum);
-+
-+ return(0);
-+ } /* end of hcGet */
-+
-+
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcSet) == 0)
-+ {
-+ PhyNum = (ValueIn & 0x1F); /* Phynum 0-32 */
-+ RegAddr = (ValueIn >> 5) & 0xFF; /* RegAddr in upper 11 bits of lower 16 */
-+
-+ Data = ValueIn >> 16; /* Data store in upper 16 bits */
-+
-+ _mdioUserAccessWrite(HalDev->PhyDev, RegAddr, PhyNum, Data);
-+ return(0);
-+ }
-+ } /* End of hcPhyAccess */
-+
-+ if(HalDev->OsFunc->Strcmpi(pszKey, hcPhyNum) == 0)
-+ {
-+ KeyFound=1;
-+ if(!HalDev->Linked)
-+ return(-1); /* if not linked the no Phy Connected */
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcGet) == 0)
-+ {
-+ *(int *)Value = HalDev->PhyNum;
-+ return(0);
-+ }
-+ }
-+
-+ if(HalDev->OsFunc->Strcmpi(pszKey, hcCpmacSize) == 0)
-+ {
-+ KeyFound=1;
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcGet) == 0)
-+ {
-+ *(bit32u *)Value = HalDev->CpmacSize;
-+ return(0);
-+ }
-+ }
-+
-+ if(HalDev->OsFunc->Strcmpi(pszKey, hcCpmacBase) == 0)
-+ {
-+ KeyFound=1;
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcGet) == 0)
-+ {
-+ *(int *)Value = HalDev->dev_base;
-+ return(0);
-+ }
-+ }
-+
-+ if(HalDev->OsFunc->Strcmpi(pszKey, hcFullDuplex) == 0)
-+ {
-+ KeyFound=1;
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcSet) == 0)
-+ {
-+ UPDATE_FULLDUPLEX(*(unsigned int *)Value);
-+ if(HalDev->State == enOpened)
-+ ConfigApply(HalDev);
-+ return(0);
-+ }
-+ else
-+ return(-1);
-+ }
-+
-+ if(HalDev->OsFunc->Strcmpi(pszKey, pszDebug) == 0)
-+ {
-+ KeyFound=1;
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcSet) == 0)
-+ {
-+ ActionFound=1;
-+ HalDev->debug = *(int *)Value;
-+ }
-+ }
-+
-+ if(HalDev->OsFunc->Strcmpi(pszKey, hcMaxFrags) == 0)
-+ {
-+ KeyFound=1;
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcSet) == 0)
-+ {
-+ ActionFound=1;
-+
-+ if ((*(int *)Value) > 0)
-+ HalDev->MaxFrags = *(int *)Value;
-+ else
-+ rc = (EC_AAL5|EC_FUNC_CONTROL|EC_VAL_INVALID_VALUE);
-+ }
-+
-+ if (HalDev->OsFunc->Strcmpi(pszAction, hcGet) == 0)
-+ {
-+ ActionFound=1;
-+
-+ *(int *)Value = HalDev->MaxFrags;
-+ }
-+ }
-+
-+ if(HalDev->OsFunc->Strstr(pszKey, pszStats) != 0)
-+ {
-+ KeyFound=1;
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcGet) == 0)
-+ {
-+ int Level;
-+ int Ch;
-+ char *TmpKey = (char *)pszKey;
-+ ActionFound=1;
-+ TmpKey += HalDev->OsFunc->Strlen(pszStats);
-+ Level = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+ TmpKey++;
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+ TmpKey++;
-+ osfuncSioFlush();
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(1))
-+ {
-+ dbgPrintf("\nhalControl-HalDev:%08X, Level:%d, Ch:%d\n", (bit32u)HalDev, Level, Ch);
-+ }
-+#endif
-+ StatsGet(HalDev, (void **)Value, Level, Ch, 0);
-+ osfuncSioFlush();
-+ }
-+ }
-+
-+
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcSet) == 0)
-+ Action = enSET;
-+ else
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcClear) == 0)
-+ Action = enCLEAR;
-+ else
-+ if(HalDev->OsFunc->Strcmpi(pszAction, hcGet) == 0)
-+ Action = enGET;
-+ else
-+ Action = enNULL;
-+
-+
-+
-+ for(i=enCommonStart+1;i<enCommonEnd;i++)
-+ {
-+ if(HalDev->OsFunc->Strcmpi(KeyCommon[i].strKey, pszKey)==0)
-+ {
-+ rc = InfoAccess(HalDev, KeyCommon[i].enKey, Action, Value);
-+ }
-+ }
-+ for(i=enCpmacStart+1;i<enCpmacEnd;i++)
-+ {
-+ if(HalDev->OsFunc->Strcmpi(KeyCpmac[i].strKey, pszKey)==0)
-+ {
-+ rc = InfoAccess(HalDev, KeyCpmac[i].enKey, Action, Value);
-+ }
-+ }
-+/*
-+ if (KeyFound == 0)
-+ rc = (EC_MODULE|EC_FUNC_CONTROL|EC_VAL_KEY_NOT_FOUND);
-+
-+ if (ActionFound == 0)
-+ rc = (EC_MODULE|EC_FUNC_CONTROL|EC_VAL_ACTION_NOT_FOUND);
-+*/
-+
-+ return(rc);
-+ }
-+static bit32u ConfigGet(HAL_DEVICE *HalDev)
-+ {
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+ char *DeviceInfo = HalDev->DeviceInfo;
-+ int i = HalDev->inst;
-+ bit32u Value;
-+ int Error;
-+
-+ /* get the configuration parameters common to all modules */
-+ Error = ConfigGetCommon(HalDev);
-+ if (Error) return (EC_CPMAC|Error);
-+
-+ if (HalDev->debug)
-+ {
-+ dbgPrintf("ConfigGet: haldev:0x%08X inst:%d base:0x%08X reset:%d\n", (bit32u) &HalDev, HalDev->inst, HalDev->dev_base, HalDev->ResetBit);
-+ osfuncSioFlush();
-+ }
-+
-+ Error = OsFunc->DeviceFindParmUint(DeviceInfo, pszMdioConnect,&Value); /*MJH+030805*/
-+ if(!Error) HalDev->MdioConnect = Value;
-+
-+ Error = OsFunc->DeviceFindParmUint(DeviceInfo, "PhyMask",&Value);
-+ if(!Error) HalDev->PhyMask = Value;
-+
-+ Error = OsFunc->DeviceFindParmUint(DeviceInfo, "MLink",&Value);
-+ if(!Error) HalDev->MLinkMask = Value;
-+
-+ Error = OsFunc->DeviceFindParmUint(DeviceInfo, hcMdixMask, &Value);
-+ if(!Error)
-+ HalDev->MdixMask = Value;
-+ else
-+ HalDev->MdixMask = 0;
-+
-+ Error = OsFunc->DeviceFindParmUint(DeviceInfo, hcSize, &Value); /*MJH+030425*/
-+ if(!Error) HalDev->CpmacSize = Value;
-+
-+ for(i=enCommonStart+1;i<enCommonEnd;i++)
-+ {
-+ Error = OsFunc->DeviceFindParmUint(DeviceInfo, KeyCommon[i].strKey, (bit32u*)&Value);
-+ if(!Error)
-+ {
-+ InfoAccess(HalDev, KeyCommon[i].enKey, enSET, (bit32u*)&Value);
-+ }
-+ }
-+ for(i=enCpmacStart+1;i<enCpmacEnd;i++)
-+ {
-+ Error = OsFunc->DeviceFindParmUint(DeviceInfo, KeyCpmac[i].strKey, (bit32u*)&Value);
-+ if(!Error)
-+ {
-+ InfoAccess(HalDev, KeyCpmac[i].enKey, enSET, (bit32u*)&Value);
-+ }
-+ }
-+ return (EC_NO_ERRORS);
-+ }
-+
-+
-+static void ConfigInit(HAL_DEVICE *HalDev)
-+ {
-+ if(HalDev->inst == 0)
-+ {
-+ HalDev->dev_base = 0xA8610000;
-+ HalDev->ResetBit = 17;
-+ HalDev->interrupt = 19;
-+ HalDev->MLinkMask = 0;
-+ HalDev->PhyMask = 0xAAAAAAAA;
-+ }
-+ else
-+ {
-+ HalDev->dev_base = 0xA8612800;
-+ HalDev->ResetBit = 21;
-+ HalDev->interrupt = 33; /*~RC3.02*/
-+ HalDev->MLinkMask = 0;
-+ HalDev->PhyMask = 0x55555555;
-+ }
-+ HalDev->RxMaxLen = 1518;
-+ HalDev->MaxFrags = 2;
-+ HalDev->MdioConnect = _CPMDIO_HD|_CPMDIO_FD|_CPMDIO_10|_CPMDIO_100|_CPMDIO_AUTOMDIX;
-+ HalDev->debug=0xFFFFFFFF;
-+ HalDev->debug=0;
-+ }
-+/* Shuts down the EMAC device
-+ *
-+ *@param HalDev EMAC instance. This was returned by halOpen()
-+ *@param mode Indicates actions to tak on close.
-+ <br>
-+ *PARTIAL - Disable EMAC
-+ <br>
-+ *FULL - Disable EMAC and call OS to free all allocated memory
-+ *
-+ *@retval
-+ * 0 OK
-+ <br>
-+ * Non-Zero Not OK
-+ *
-+ */
-+static int halInit( HAL_DEVICE *HalDev)
-+ {
-+ int rc;
-+
-+ /* Verify proper device state */
-+ if (HalDev->State != enDevFound)
-+ return(EC_CPMAC|EC_FUNC_HAL_INIT|EC_VAL_INVALID_STATE);
-+
-+ /* Configure HAL defaults */
-+ ConfigInit(HalDev);
-+
-+ /* Retrieve HAL configuration parameters from data store */
-+ rc = ConfigGet(HalDev);
-+ if (rc) return (rc);
-+
-+ /* Updated 030403*/
-+ rc = HalDev->OsFunc->Control(HalDev->OsDev, hcCpuFrequency, hcGet, &HalDev->CpuFrequency); /*MJH+030403*/
-+ if(rc)
-+ HalDev->CpuFrequency = 20000000; /*20 Mhz default */ /*MJH+030403*/
-+
-+ rc = HalDev->OsFunc->Control(HalDev->OsDev, hcCpmacFrequency, hcGet, &HalDev->CpmacFrequency); /*MJH+030331*/
-+ if(rc)
-+ HalDev->CpmacFrequency = HalDev->CpuFrequency/2; /*MJH~030404*/
-+
-+ rc = HalDev->OsFunc->Control(HalDev->OsDev, hcMdioBusFrequency, hcGet, &HalDev->MdioBusFrequency); /*MJH+030402*/
-+ if(rc)
-+ HalDev->MdioBusFrequency = HalDev->CpmacFrequency;
-+
-+ rc = HalDev->OsFunc->Control(HalDev->OsDev, hcMdioClockFrequency, hcGet, &HalDev->MdioClockFrequency); /*MJH+030402*/
-+ if(rc)
-+ HalDev->MdioClockFrequency = 2200000; /* 2.2 Mhz PITS #14 */
-+
-+
-+ /* update device state */
-+ HalDev->State = enInitialized;
-+
-+ /* initialize statistics */
-+ StatsInit(HalDev); /* +RC3.02 */
-+
-+ /* -RC3.02
-+ StatsTable3[0].StatPtr = &HalDev->ChData[0].RxBufSize;
-+ StatsTable3[1].StatPtr = &HalDev->ChData[0].RxBufferOffset;
-+ StatsTable3[2].StatPtr = &HalDev->ChData[0].RxNumBuffers;
-+ StatsTable3[3].StatPtr = &HalDev->ChData[0].RxServiceMax;
-+ StatsTable3[4].StatPtr = &HalDev->ChData[0].TxNumBuffers;
-+ StatsTable3[5].StatPtr = &HalDev->ChData[0].TxNumQueues;
-+ StatsTable3[6].StatPtr = &HalDev->ChData[0].TxServiceMax;
-+ */
-+
-+ return(EC_NO_ERRORS);
-+ }
-+static int halProbe(HAL_DEVICE *HalDev)
-+ {
-+ int inst = HalDev->inst;
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+ int error_code;
-+
-+ if (HalDev->State != enConnected)
-+ return (EC_CPMAC|EC_FUNC_PROBE|EC_VAL_INVALID_STATE);
-+
-+ if(HalDev->debug) dbgPrintf("halProbe: %d ",inst);
-+
-+ error_code = OsFunc->DeviceFindInfo(inst,"cpmac",&HalDev->DeviceInfo);
-+
-+ if(error_code)
-+ return (EC_CPMAC|EC_FUNC_PROBE|EC_VAL_DEVICE_NOT_FOUND );
-+
-+ /* Set device state to DevFound */
-+ HalDev->State = enDevFound;
-+ return(EC_NO_ERRORS);
-+ }
-+static void ChannelConfigInit(HAL_DEVICE *HalDev, CHANNEL_INFO *HalChn)
-+ {
-+ int Ch = HalChn->Channel;
-+ int Direction = HalChn->Direction;
-+ int nTxBuffers = 256;
-+
-+ if (Direction == DIRECTION_TX)
-+ {
-+ HalDev->ChData[Ch].TxNumBuffers = nTxBuffers;
-+ HalDev->ChData[Ch].TxNumQueues = 1;
-+ HalDev->ChData[Ch].TxServiceMax = nTxBuffers/3;
-+ HalDev->TxIntThreshold[Ch] = HalDev->ChData[Ch].TxServiceMax;
-+ HalDev->TxIntThresholdMaster[Ch] = HalDev->TxIntThreshold[Ch];
-+ }
-+
-+ if (Direction == DIRECTION_RX)
-+ {
-+ HalDev->ChData[Ch].RxNumBuffers = nTxBuffers*2;
-+ HalDev->ChData[Ch].RxBufferOffset = 0;
-+ HalDev->ChData[Ch].RxBufSize = 1518;
-+ HalDev->ChData[Ch].RxServiceMax = nTxBuffers/3; /*Not a typo*/
-+ }
-+ }
-+static int ChannelConfigApply(HAL_DEVICE *HalDev, CHANNEL_INFO *HalChn)
-+ {
-+ int Ch = HalChn->Channel;
-+ int Direction = HalChn->Direction;
-+
-+ if (DBG(11))
-+ {
-+ dbgPrintf("halChannelConfigApply[%d:%d] haldev:0x%08X inst:%d base:0x%08X reset:%d\n", Ch, Direction, (bit32u) &HalDev, HalDev->inst, HalDev->dev_base, HalDev->ResetBit);
-+ osfuncSioFlush();
-+ }
-+
-+ if (Direction == DIRECTION_TX)
-+ {
-+ if (HalDev->ChIsOpen[Ch][Direction] == TRUE)
-+ {
-+ return(EC_CPMAC|EC_FUNC_CHSETUP|EC_VAL_TX_CH_ALREADY_OPEN);
-+ }
-+
-+ /* Initialize Queue Data */
-+ HalDev->TxActQueueHead[Ch][0] = 0;
-+ HalDev->TxActQueueCount[Ch][0] = 0;
-+ HalDev->TxActive[Ch][0] = FALSE;
-+
-+ /* Need to use a macro that takes channel as input */
-+ CPMAC_TX0_HDP(HalDev->dev_base)=0;
-+
-+ /* Initialize buffer memory for the channel */
-+ InitTcb(HalDev, Ch);
-+
-+ if(!HalDev->TxIntDisable)
-+ CPMAC_TX_INTMASK_SET(HalDev->dev_base) = (1<<Ch); /* GSG 11/22 */
-+ }
-+ else
-+ {
-+ if (HalDev->ChIsOpen[Ch][Direction] == TRUE)
-+ {
-+ return(EC_CPMAC|EC_FUNC_CHSETUP|EC_VAL_RX_CH_ALREADY_OPEN);
-+ }
-+
-+ /* Initialize Queue Data */
-+ HalDev->RxActQueueHead[Ch] = 0;
-+ HalDev->RxActQueueCount[Ch] = 0;
-+
-+ HalDev->RxActive[Ch] = FALSE;
-+
-+ /* Need to use a macro that takes channel as input */
-+ CPMAC_RX0_HDP(HalDev->dev_base)=0;
-+
-+ /* Initialize buffer memory for the channel */
-+ InitRcb(HalDev, Ch);
-+
-+ CPMAC_RX_INTMASK_SET(HalDev->dev_base) = (1<<Ch); /* GSG 11/22 */
-+ }
-+
-+ HalDev->ChIsOpen[Ch][Direction] = TRUE; /* channel is open */
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/* GSG 11/22
-+ * Retrieves channel parameters from configuration file. Any parameters
-+ * which are not found are ignored, and the HAL default value will apply,
-+ * unless a new value is given through the channel structure in the call
-+ * to ChannelSetup.
-+ */
-+static int ChannelConfigGet(HAL_DEVICE *HalDev, CHANNEL_INFO *HalChn)
-+ {
-+ int Ch = HalChn->Channel;
-+ int Direction = HalChn->Direction;
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+ unsigned int rc, Value;
-+ void *ChInfo;
-+
-+ rc=OsFunc->DeviceFindParmValue(HalDev->DeviceInfo, channel_names[Ch], &ChInfo);
-+ /* Do not fail if Channel Info not available for RC2 */
-+ if (rc) return(0);
-+/* if (rc) return(EC_CPMAC|EC_FUNC_CHSETUP|EC_VAL_CH_INFO_NOT_FOUND);*/
-+
-+ /* i don't care if a value is not found because they are optional */
-+ if(Direction == DIRECTION_TX)
-+ {
-+ rc=OsFunc->DeviceFindParmUint(ChInfo, "TxNumBuffers", &Value);
-+ if (!rc) HalDev->ChData[Ch].TxNumBuffers = Value;
-+
-+ /*rc=OsFunc->DeviceFindParmUint(ChInfo, "TxNumQueues", &Value);*/ /*MJH-030329*/
-+ /*if (!rc) HalDev->ChData[Ch].TxNumQueues = Value;*/ /*MJH-030329*/
-+
-+ rc=OsFunc->DeviceFindParmUint(ChInfo, "TxServiceMax", &Value);
-+ if (!rc)
-+ {
-+ HalDev->ChData[Ch].TxServiceMax = Value;
-+ HalDev->TxIntThreshold[Ch] = HalDev->ChData[Ch].TxServiceMax;
-+ HalDev->TxIntThresholdMaster[Ch] = HalDev->TxIntThreshold[Ch];
-+ }
-+ }
-+ if(Direction == DIRECTION_RX)
-+ {
-+ rc=OsFunc->DeviceFindParmUint(ChInfo, "RxNumBuffers", &Value);
-+ if (!rc) HalDev->ChData[Ch].RxNumBuffers = Value;
-+
-+ rc=OsFunc->DeviceFindParmUint(ChInfo, "RxBufferOffset", &Value);
-+ if (!rc) HalDev->ChData[Ch].RxBufferOffset = Value;
-+
-+ rc=OsFunc->DeviceFindParmUint(ChInfo, "RxBufSize", &Value);
-+ if (!rc) HalDev->ChData[Ch].RxBufSize = Value;
-+
-+ rc=OsFunc->DeviceFindParmUint(ChInfo, "RxServiceMax", &Value);
-+ if (!rc) HalDev->ChData[Ch].RxServiceMax = Value;
-+ }
-+ return (EC_NO_ERRORS);
-+ }
-+#define ChannelUpdate(Field) if(HalChn->Field != 0xFFFFFFFF) HalDev->ChData[Ch].Field = HalChn->Field
-+
-+static void ChannelConfigUpdate(HAL_DEVICE *HalDev, CHANNEL_INFO *HalChn)
-+ {
-+ int Ch = HalChn->Channel;
-+ int Direction = HalChn->Direction;
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(1))
-+ {
-+ dbgPrintf("\nChnUpd-HalDev:%08X,Chn:%d:%d\n", (bit32u)HalDev, Ch, Direction); osfuncSioFlush();
-+ }
-+#endif
-+ if (Direction == DIRECTION_TX)
-+ {
-+ ChannelUpdate(TxNumBuffers);
-+ /*ChannelUpdate(TxNumQueues);*/ /*MJH~030329*/
-+ ChannelUpdate(TxServiceMax);
-+ HalDev->TxIntThreshold[Ch] = HalDev->ChData[Ch].TxServiceMax;
-+ HalDev->TxIntThresholdMaster[Ch] = HalDev->TxIntThreshold[Ch];
-+ }
-+ else
-+ if (Direction == DIRECTION_RX)
-+ {
-+ ChannelUpdate(RxBufferOffset);
-+ ChannelUpdate(RxBufSize);
-+ ChannelUpdate(RxNumBuffers);
-+ ChannelUpdate(RxServiceMax);
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(1))
-+ {
-+ dbgPrintf("\nRxNumBuffers %d\n",HalChn->RxNumBuffers); osfuncSioFlush();
-+ }
-+#endif
-+ }
-+ }
-+static int halChannelSetup(HAL_DEVICE *HalDev, CHANNEL_INFO *HalChn, OS_SETUP *OsSetup)
-+ {
-+ int Direction;
-+ int Ch;
-+ int rc;
-+
-+ /* Verify proper device state */
-+ if (HalDev->State < enInitialized)
-+ return (EC_CPMAC|EC_FUNC_CHSETUP|EC_VAL_INVALID_STATE);
-+
-+ /* We require the channel structure to be passed, even if it only contains
-+ the channel number */
-+ if (HalChn == NULL)
-+ {
-+ return(EC_CPMAC|EC_FUNC_CHSETUP|EC_VAL_NULL_CH_STRUCT);
-+ }
-+
-+ Ch = HalChn->Channel;
-+ Direction = HalChn->Direction;
-+
-+ /* This should check on Maximum Channels for RX or TX,
-+ they might be different Mick 021124 */
-+ if ((Ch < 0) || (Ch > (MAX_CHAN-1)))
-+ {
-+ return(EC_CPMAC|EC_FUNC_CHSETUP|EC_VAL_INVALID_CH);
-+ }
-+
-+ /* if channel is already open, this call is invalid */
-+ if (HalDev->ChIsOpen[Ch][Direction] == TRUE)
-+ {
-+ return(EC_CPMAC|EC_FUNC_CHSETUP|EC_VAL_CH_ALREADY_OPEN);
-+ }
-+
-+ /* channel is closed, but might be setup. If so, reopen the hardware channel. */
-+ if (HalDev->ChIsSetup[Ch][Direction] == FALSE)
-+ {
-+ /* Setup channel configuration */
-+ HalDev->ChData[Ch].Channel = Ch;
-+
-+ /* Store OS_SETUP */
-+ HalDev->ChData[Ch].OsSetup = OsSetup;
-+
-+ /* Framework :
-+ Set Default Values
-+ Update with options.conf
-+ Apply driver updates
-+ */
-+ ChannelConfigInit(HalDev, HalChn);
-+ ChannelConfigGet(HalDev, HalChn);
-+ ChannelConfigUpdate(HalDev, HalChn);
-+
-+ /* cppi.c needs to use Rx/TxServiceMax */
-+ HalDev->BuffersServicedMax = 169; /* TEMP */
-+
-+ HalDev->ChIsSetup[Ch][Direction] = TRUE;
-+ }
-+
-+ rc = EC_NO_ERRORS;
-+
-+ /* If the hardware has been opened (is out of reset), then configure the channel
-+ in the hardware. NOTE: ChannelConfigApply calls the CPSAR ChannelSetup()! */
-+ if (HalDev->State == enOpened)
-+ {
-+ rc = ChannelConfigApply(HalDev, HalChn);
-+ }
-+
-+ return (rc);
-+ }
-+
-+
-+static int miiInfoGet(HAL_DEVICE *HalDev, bit32u *miiBaseAddress, bit32u *miiResetBit)
-+ {
-+ int rc;
-+ void *DeviceInfo;
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+
-+ /* Only one instance of cpmdio */
-+ rc = OsFunc->DeviceFindInfo(0,"cpmdio",&DeviceInfo); /*~RC3.02*/
-+
-+ if(rc)
-+ return (EC_DEV_CPMDIO|EC_FUNC_OPEN|EC_VAL_DEVICE_NOT_FOUND );
-+
-+ rc = OsFunc->DeviceFindParmUint(DeviceInfo, "base",miiBaseAddress);
-+ if(rc)
-+ rc=EC_DEV_CPMDIO|EC_FUNC_OPEN|EC_VAL_NO_BASE;
-+
-+ rc = OsFunc->DeviceFindParmUint(DeviceInfo, "reset_bit",miiResetBit);
-+ if(rc)
-+ rc=EC_DEV_CPMDIO|EC_FUNC_OPEN|EC_VAL_NO_BASE;
-+
-+
-+ /* See if need to make mdio functional in GPIO */
-+ gpioCheck(HalDev, DeviceInfo);
-+
-+ if(DBG(0))
-+ dbgPrintf("miiBase: 0x%08X %u\n", *miiBaseAddress, *miiResetBit);
-+ return(rc);
-+ }
-+static void ephyCheck(HAL_DEVICE *HalDev)
-+ { /*+RC3.02*/
-+ int rc;
-+ void *DeviceInfo;
-+ int mii_phy;
-+ int reset_bit;
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+
-+ rc = OsFunc->DeviceFindInfo(0,"ephy",&DeviceInfo);
-+ if(rc) return;
-+
-+ rc = OsFunc->DeviceFindParmUint(DeviceInfo, "mii_phy",&mii_phy);
-+ if(rc) return;
-+
-+ rc = OsFunc->DeviceFindParmUint(DeviceInfo, "reset_bit",&reset_bit);
-+ if(rc) return;
-+
-+ if (HalDev->PhyMask & (1 << mii_phy))
-+ {
-+ *(volatile bit32u *)(HalDev->ResetBase) |= (1 << reset_bit); /*+RC3.02*/
-+ resetWait(HalDev);
-+ }
-+ } /*+RC3.02*/
-+static void AutoNegotiate(HAL_DEVICE *HalDev)
-+ {
-+ int size;
-+ bit32u ModID, RevMaj, RevMin;
-+ PHY_DEVICE *PhyDev;
-+ bit32u miiBaseAddress;
-+ bit32u miiResetBit;
-+
-+ /* Verify proper device state */
-+ if (HalDev->State < enOpened)
-+ return;
-+
-+ miiInfoGet(HalDev, &miiBaseAddress, &miiResetBit);
-+
-+ cpMacMdioGetVer(miiBaseAddress, &ModID, &RevMaj, &RevMin);
-+ if(HalDev->debug)
-+ dbgPrintf("Mdio Module Id %d, Version %d.%d\n", ModID, RevMaj, RevMin);
-+
-+ size = cpMacMdioGetPhyDevSize();
-+ PhyDev = (PHY_DEVICE *) HalDev->OsFunc->Malloc( size );
-+
-+ HalDev->PhyDev = PhyDev;
-+
-+ ephyCheck(HalDev);
-+
-+ cpMacMdioInit( PhyDev, miiBaseAddress, HalDev->inst, HalDev->PhyMask, HalDev->MLinkMask, HalDev->MdixMask, HalDev->ResetBase, miiResetBit, HalDev->MdioBusFrequency, HalDev->MdioClockFrequency, HalDev->debug, HalDev); /*MJH~030402*/
-+ MdioSetPhyMode(HalDev);
-+
-+ return;
-+ }
-+static int halOpen(HAL_DEVICE *HalDev)
-+ {
-+ unsigned char *MacAddr;
-+ int i;
-+ int j;
-+ int rc, Ticks;
-+
-+ if (HalDev->debug)
-+ {
-+ dbgPrintf("halOpen: haldev:0x%08X inst:%d base:0x%08X reset:%d\n", (bit32u) &HalDev, HalDev->inst, HalDev->dev_base, HalDev->ResetBit);
-+ osfuncSioFlush();
-+ }
-+
-+ /* Verify proper device state */
-+ if (HalDev->State < enInitialized)
-+ return (EC_CPMAC|EC_FUNC_OPEN|EC_VAL_INVALID_STATE);
-+
-+
-+ /* take CPMAC out of reset - GSG 11/20*/
-+ if ((VOLATILE32(HalDev->ResetBase) & (1 << HalDev->ResetBit)) != 0)
-+ {
-+ /* perform normal close duties */
-+ CPMAC_MACCONTROL(HalDev->dev_base) &= ~MII_EN;
-+ CPMAC_TX_CONTROL(HalDev->dev_base) &= ~TX_EN;
-+ CPMAC_RX_CONTROL(HalDev->dev_base) &= ~RX_EN;
-+
-+ /* disable interrupt masks */
-+ CPMAC_TX_INTMASK_CLEAR(HalDev->dev_base) = 0xFF;
-+ CPMAC_RX_INTMASK_CLEAR(HalDev->dev_base) = 0xFF;
-+ }
-+
-+ /* take CPMAC out of reset */
-+ *(volatile bit32u *)(HalDev->ResetBase) &= ~(1 << HalDev->ResetBit);
-+ resetWait(HalDev);
-+ *(volatile bit32u *)(HalDev->ResetBase) |= (1 << HalDev->ResetBit);
-+ resetWait(HalDev);
-+
-+ /* After Reset clear the Transmit and Receive DMA Head Descriptor Pointers */
-+
-+ CPMAC_TX0_HDP(HalDev->dev_base)=0;
-+ CPMAC_TX1_HDP(HalDev->dev_base)=0;
-+ CPMAC_TX2_HDP(HalDev->dev_base)=0;
-+ CPMAC_TX3_HDP(HalDev->dev_base)=0;
-+ CPMAC_TX4_HDP(HalDev->dev_base)=0;
-+ CPMAC_TX5_HDP(HalDev->dev_base)=0;
-+ CPMAC_TX6_HDP(HalDev->dev_base)=0;
-+ CPMAC_TX7_HDP(HalDev->dev_base)=0;
-+
-+ /* Rx Init */
-+
-+ CPMAC_RX0_HDP(HalDev->dev_base) = 0;
-+ CPMAC_RX1_HDP(HalDev->dev_base) = 0;
-+ CPMAC_RX2_HDP(HalDev->dev_base) = 0;
-+ CPMAC_RX3_HDP(HalDev->dev_base) = 0;
-+ CPMAC_RX4_HDP(HalDev->dev_base) = 0;
-+ CPMAC_RX5_HDP(HalDev->dev_base) = 0;
-+ CPMAC_RX6_HDP(HalDev->dev_base) = 0;
-+ CPMAC_RX7_HDP(HalDev->dev_base) = 0;
-+
-+ CPMAC_RX_BUFFER_OFFSET(HalDev->dev_base) = 0;
-+
-+ /* Init Tx and Rx DMA */
-+
-+ CPMAC_TX_CONTROL(HalDev->dev_base) |= TX_EN;
-+ CPMAC_RX_CONTROL(HalDev->dev_base) |= RX_EN;
-+
-+ CPMAC_MAC_INTMASK_SET(HalDev->dev_base) |=2; /* Enable Adaptercheck Ints */
-+ HalDev->OsFunc->Control(HalDev->OsDev, pszMacAddr, hcGet, &MacAddr); /* GSG 11/22 */
-+ MacAddressSave(HalDev, MacAddr);
-+
-+ HalDev->HostErr = 0; /* Clear Adapter Check indicator */
-+ HalDev->State = enOpened; /* Change device state */
-+
-+ /* Start MDIO Negotiation */
-+ AutoNegotiate(HalDev);
-+
-+ /* Enable the Os Timer */
-+ Ticks = HalDev->CpuFrequency / 100; /* 10 milli-secs */ /*MJH~030402*/
-+ HalDev->OsFunc->Control(HalDev->OsDev, pszTick, hcSet, &Ticks); /* GSG 11/22 */
-+ HalDev->OsFunc->IsrRegister(HalDev->OsDev, halIsr, HalDev->interrupt);
-+
-+ /* GSG +030523 Malloc space for the Rx fraglist */
-+ HalDev->fraglist = HalDev->OsFunc->Malloc(HalDev->MaxFrags * sizeof(FRAGLIST));
-+
-+ /* Any pre-open configuration */
-+
-+ /* For any channels that have been pre-initialized, set them up now */
-+ /* Note : This loop should not use MAX_CHN, it should only
-+ loop through Channels Setup, memory should not be reserved
-+ until Channel is Setup
-+ */
-+ for(i=0; i<MAX_CHAN; i++) /* i loops through Channels */
-+ for(j=0; j<2; j++) /* j loops through DIRECTION values, 0 and 1 */
-+ {
-+ if(HalDev->ChIsSetup[i][j]==TRUE) /* If the Channel and Direction have been Setup */
-+ if(HalDev->ChIsOpen[i][j]==FALSE) /* but not opened, then Apply Values now */
-+ {
-+ CHANNEL_INFO HalChn;
-+ HalChn.Channel = i;
-+ HalChn.Direction = j;
-+ rc = ChannelConfigApply(HalDev, &HalChn);
-+ if(rc != EC_NO_ERRORS)
-+ return(rc);
-+ }
-+ } /* End of looping through Channel/Direction */
-+
-+ ConfigApply(HalDev); /* Apply Configuration Values to Device */
-+ CPMAC_MACCONTROL(HalDev->dev_base) |= MII_EN; /* MAC_EN */
-+ if(DBG(0))
-+ dbgPrintf("[halOpen]MacControl:%08X\n", CPMAC_MACCONTROL(HalDev->dev_base));
-+ return(EC_NO_ERRORS);
-+ }
-+
-+#define INT_PENDING (MAC_IN_VECTOR_TX_INT_OR | MAC_IN_VECTOR_RX_INT_OR | MAC_IN_VECTOR_HOST_INT)
-+static int halShutdown(HAL_DEVICE *HalDev)
-+ {
-+ int Ch, Queue; /*GSG+030514*/
-+
-+ /* Verify proper device state */
-+ if (HalDev->State == enOpened)
-+ halClose(HalDev, 3); /* GSG ~030429 */
-+
-+ /* Buffer/descriptor resources may still need to be freed if a Close
-+ Mode 1 was performed prior to Shutdown - clean up here */ /*GSG+030514*/
-+ for (Ch=0; Ch<MAX_CHAN; Ch++)
-+ {
-+ if (HalDev->RcbStart[Ch] != 0)
-+ FreeRx(HalDev,Ch);
-+
-+ for(Queue=0; Queue<MAX_QUEUE; Queue++)
-+ {
-+ if (HalDev->TcbStart[Ch][Queue] != 0)
-+ FreeTx(HalDev,Ch,Queue);
-+ }
-+ }
-+
-+ /* free the HalFunc */
-+ HalDev->OsFunc->Free(HalDev->HalFuncPtr);
-+
-+ /* free the HAL device */
-+ HalDev->OsFunc->Free(HalDev);
-+
-+ return(EC_NO_ERRORS);
-+ }
-+int halIsr(HAL_DEVICE *HalDev, int *MorePackets)
-+{
-+ bit32u IntVec;
-+ int Serviced;
-+ int PacketsServiced=0;
-+ int Channel;
-+ int TxMorePackets=0;
-+ int RxMorePackets=0;
-+
-+ /* Verify proper device state - important because a call prior to Open would
-+ result in a lockup */
-+ if (HalDev->State != enOpened)
-+ return(EC_CPMAC|EC_FUNC_DEVICE_INT|EC_VAL_INVALID_STATE);
-+
-+ IntVec = CPMAC_MAC_IN_VECTOR(HalDev->dev_base);
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("\nhalIsr: inst %d, IntVec 0x%X\n", HalDev->inst, IntVec); osfuncSioFlush();/* GSG 11/22 */
-+ }
-+#endif
-+
-+ HalDev->IntVec = IntVec;
-+ if (IntVec & MAC_IN_VECTOR_TX_INT_OR)
-+ {
-+ int TxServiceMax=0; /* Compiler complains if not initialized */
-+
-+ Channel = (IntVec & 0x7);
-+
-+ if(HalDev->TxIntDisable)
-+ {
-+ CPMAC_TX_INTMASK_CLEAR(HalDev->dev_base) = (1<<Channel); /* Disable Interrupt for Channel */
-+ TxServiceMax = HalDev->ChData[Channel].TxServiceMax;
-+ HalDev->ChData[Channel].TxServiceMax = 10000; /* Need to service all packets in the Queue */
-+ }
-+
-+ PacketsServiced |= TxInt(HalDev, Channel, 0, &TxMorePackets);
-+
-+ if(HalDev->TxIntDisable)
-+ HalDev->ChData[Channel].TxServiceMax = TxServiceMax;
-+ }
-+
-+ if (IntVec & MAC_IN_VECTOR_RX_INT_OR)
-+ {
-+ Channel = (IntVec >> 8) & 0x7;
-+ Serviced = RxInt(HalDev, Channel, &RxMorePackets);
-+ PacketsServiced |= (Serviced<<16);
-+ }
-+
-+ if (IntVec & MAC_IN_VECTOR_HOST_INT)
-+ {
-+ /* Adaptercheck */
-+ HalDev->HostErr = 1;
-+ HalDev->MacStatus = CPMAC_MACSTATUS(HalDev->dev_base);
-+ osfuncStateChange(); /*MJH+030328*/
-+ if(DBG(0))
-+ {
-+ dbgPrintf("Adaptercheck: %08x for base:%X\n",HalDev->MacStatus, (bit32u)HalDev->dev_base);
-+ osfuncSioFlush();
-+ }
-+ }
-+ *MorePackets = (TxMorePackets | RxMorePackets);
-+ return (PacketsServiced);
-+}
-+
-+int halPacketProcessEnd(HAL_DEVICE *HalDev)
-+{
-+ int base = HalDev->dev_base;
-+ CPMAC_MAC_EOI_VECTOR(base) = 0;
-+ return(0);
-+}
-+
-+
-+
-+static int PhyCheck(HAL_DEVICE *HalDev)
-+ {
-+ return(cpMacMdioTic(HalDev->PhyDev));
-+ }
-+static int halTick(HAL_DEVICE *HalDev)
-+{
-+ int TickChange;
-+
-+ if(HalDev->State < enOpened)
-+ return (EC_CPMAC|EC_FUNC_TICK|EC_VAL_INVALID_STATE);
-+
-+ /* if NO Phy no need to check Link */
-+ if(HalDev->MdioConnect & _CPMDIO_NOPHY)
-+ return(EC_NO_ERRORS); /* No change in Phy State detected */
-+
-+ TickChange = PhyCheck(HalDev);
-+ /* Phy State Change Detected */
-+ if(TickChange == 1)
-+ {
-+ /* MDIO indicated a change */
-+ DuplexUpdate(HalDev);
-+ osfuncStateChange();
-+ return(EC_NO_ERRORS);
-+ }
-+
-+ /* if in AutoMdix mode, and Flip request received, inform OS */
-+ if( (HalDev->MdioConnect & _CPMDIO_AUTOMDIX) &&
-+ (TickChange & _MIIMDIO_MDIXFLIP))
-+ {
-+ bit32u Mdix;
-+ Mdix = TickChange & 0x1; /* Mdix mode stored in bit 0 */
-+ HalDev->OsFunc->Control(HalDev->OsDev, hcMdioMdixSwitch, hcSet, &Mdix);
-+ return(EC_NO_ERRORS);
-+ }
-+
-+ return(EC_NO_ERRORS);
-+}
-+
-+int halCpmacInitModule(HAL_DEVICE **pHalDev, OS_DEVICE *OsDev, HAL_FUNCTIONS **pHalFunc,
-+ OS_FUNCTIONS *OsFunc, int OsFuncSize, int *HalFuncSize, int Inst)
-+ {
-+ HAL_DEVICE *HalDev;
-+ HAL_FUNCTIONS *HalFunc;
-+
-+ if (OsFuncSize < sizeof(OS_FUNCTIONS))
-+ return (EC_CPMAC|EC_FUNC_HAL_INIT|EC_VAL_OS_VERSION_NOT_SUPPORTED);
-+
-+ HalDev = (HAL_DEVICE *) OsFunc->MallocDev(sizeof(HAL_DEVICE));
-+ if (!HalDev)
-+ return (EC_CPMAC|EC_FUNC_HAL_INIT|EC_VAL_MALLOC_DEV_FAILED);
-+
-+ /* clear the HalDev area */
-+ OsFunc->Memset(HalDev, 0, sizeof(HAL_DEVICE));
-+
-+ /* Initialize the size of hal functions */
-+ *HalFuncSize = sizeof (HAL_FUNCTIONS);
-+
-+ HalFunc = (HAL_FUNCTIONS *) OsFunc->Malloc(sizeof(HAL_FUNCTIONS));
-+ if (!HalFunc)
-+ return (EC_CPMAC|EC_FUNC_HAL_INIT|EC_VAL_MALLOC_FAILED);
-+
-+ /* clear the function pointers */
-+ OsFunc->Memset(HalFunc, 0, sizeof(HAL_FUNCTIONS));
-+
-+ HalDev->OsDev = OsDev;
-+ HalDev->OsOpen = OsDev;
-+ HalDev->inst = Inst;
-+ HalDev->OsFunc = OsFunc;
-+ HalDev->HalFunc = HalFunc;
-+ /* Remove the following from cppi, replace with HalFunc */
-+ HalDev->HalFuncPtr = HalFunc; /* GSG 11/20 changed name to match cppi */
-+
-+ /****************************************************************/
-+ /* POPULATE HALFUNC */
-+ /****************************************************************/
-+ HalFunc->ChannelSetup = halChannelSetup;
-+ HalFunc->ChannelTeardown = halChannelTeardown; /* GSG 11/20 */
-+ HalFunc->Close = halClose; /* GSG 11/20 */
-+ HalFunc->Control = halControl; /* GSG 11/22 */
-+ HalFunc->Init = halInit;
-+ HalFunc->Open = halOpen;
-+ HalFunc->PacketProcessEnd = halPacketProcessEnd;
-+ HalFunc->Probe = halProbe;
-+ HalFunc->RxReturn = halRxReturn;
-+ HalFunc->Send = halSend;
-+ HalFunc->Shutdown = halShutdown;
-+ HalFunc->Tick = halTick;
-+
-+ /* HalFunc->Status = halStatus;*/ /* GSG 11/22 */
-+ /* pass the HalDev and HalFunc back to the caller */
-+
-+ *pHalDev = HalDev;
-+ *pHalFunc = HalFunc;
-+
-+ HalDev->State = enConnected; /* Initialize the hardware state */
-+
-+ if (HalDev->debug) HalDev->OsFunc->Printf("halCpmacInitModule: Leave\n");
-+ return(0);
-+ }
-+
-+int cpmacRandomRange(HAL_DEVICE *HalDev, int min, int max)
-+{
-+ int iTmp;
-+ iTmp = cpmacRandom(HalDev);
-+ iTmp %= ((max-min)+1);
-+ iTmp += min;
-+ return(iTmp);
-+}
-+
-+int cpmacRandom(HAL_DEVICE *HalDev)
-+{
-+ int iTmp;
-+ iTmp = CPMAC_BOFFTEST(HalDev->dev_base);
-+ iTmp >>= 16; /* get rndnum field */
-+ iTmp &= (0x3FF); /* field is 10 bits wide */
-+ return(iTmp);
-+}
-diff -urN linux.old/drivers/net/avalanche_cpmac/hcpmac.h linux.dev/drivers/net/avalanche_cpmac/hcpmac.h
---- linux.old/drivers/net/avalanche_cpmac/hcpmac.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/hcpmac.h 2005-07-12 02:48:42.175574000 +0200
-@@ -0,0 +1,383 @@
-+/** @file***********************************************************************
-+ * TNETDxxxx Software Support
-+ * Copyright (c) 2002 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * FILE:
-+ *
-+ * DESCRIPTION:
-+ * This file contains definitions for the HAL EMAC API
-+ *
-+ * HISTORY:
-+ * xxXxx01 Denis 1.00 Original Version created.
-+ * 22Jan02 Denis/Mick 1.01 Modified for HAL EMAC API
-+ * 24Jan02 Denis/Mick 1.02 Speed Improvements
-+ * 28Jan02 Denis/Mick 1.16 Made function calls pointers
-+ * 28Jan02 Mick 1.18 Split into separate modules
-+ * @author Michael Hanrahan
-+ * @version 1.02
-+ * @date 24-Jan-2002
-+ *****************************************************************************/
-+#ifndef _INC_HCPMAC
-+#define _INC_HCPMAC
-+
-+/** \namespace CPMAC_Version
-+This documents version 01.07.04 of the CPMAC CPHAL.
-+*/
-+const char *pszVersion_CPMAC="CPMAC 01.07.08 "__DATE__" "__TIME__;
-+
-+/* CHECK THESE LOCATIONS */
-+#define TEARDOWN_VAL 0xfffffffc
-+#define CB_OFFSET_MASK 0xFFFF0000
-+
-+
-+#define MAX_CHAN 8
-+#define MAX_QUEUE 1
-+
-+typedef struct
-+ {
-+ bit32 HNext; /*< Hardware's pointer to next buffer descriptor */
-+ bit32 BufPtr; /*< Pointer to the data buffer */
-+ bit32 Off_BLen; /*< Contains buffer offset and buffer length */
-+ bit32 mode; /*< SOP, EOP, Ownership, EOQ, Teardown, Q Starv, Length */
-+ void *Next;
-+ void *OsInfo;
-+ void *Eop;
-+#ifdef __CPHAL_DEBUG
-+ bit32 DbgSop;
-+ bit32 DbgData;
-+ bit32 DbgFraglist;
-+#endif
-+ }HAL_TCB;
-+
-+typedef volatile struct hal_private
-+ {
-+ bit32 HNext; /*< Hardware's pointer to next buffer descriptor */
-+ bit32 BufPtr; /*< Pointer to the data buffer */
-+ bit32 Off_BLen; /*< Contains buffer offset and buffer length */
-+ bit32 mode; /*< SOP, EOP, Ownership, EOQ, Teardown Complete bits */
-+ void *DatPtr;
-+ void *Next;
-+ void *OsInfo;
-+ void *Eop;
-+ }HAL_RCB;
-+
-+#define MAX_NEEDS 512 /*MJH+030409*/
-+/* HAL */
-+
-+typedef struct hal_device
-+ {
-+ OS_DEVICE *OsDev;
-+ OS_FUNCTIONS *OsFunc;
-+ /*OS_SETUP *OsSetup;*/ /* -GSG 030508 */
-+ int inst;
-+ bit32u rxbufseq;
-+
-+
-+ bit32 dev_base;
-+ bit32 offset;
-+
-+ bit32u ResetBase; /* GSG 10/20 */
-+ int ResetBit;
-+ void *OsOpen;
-+ bit32u IntVec;
-+ PHY_DEVICE *PhyDev;
-+ bit32u EmacDuplex;
-+ bit32u EmacSpeed;
-+ bit32u PhyNum;
-+ bit32u MLinkMask;
-+ bit32u PhyMask;
-+ bit32u MdixMask;
-+
-+ bit32u Linked;
-+ DEVICE_STATE State;
-+ unsigned char *MacAddr;
-+ HAL_FUNCTIONS *HalFuncPtr; /* GSG 11/20 changed name to match cppi */
-+ HAL_FUNCTIONS *HalFunc;
-+/* unsigned int CpuFreq;*/ /*MJH-030402*/
-+ unsigned int MdioConnect;
-+ unsigned int HostErr;
-+
-+/************************************************************************/
-+/* */
-+/* R E G I S T E R S */
-+/* */
-+/************************************************************************/
-+
-+ bit32u RxMbpEnable;
-+ bit32u RxUnicastSet;
-+ bit32u RxUnicastClear;
-+ bit32u RxMaxLen;
-+ bit32u RxFilterLowThresh;
-+ bit32u Rx0FlowThresh;
-+ bit32u MacControl;
-+ bit32u MacStatus;
-+ bit32u MacHash1;
-+ bit32u MacHash2;
-+
-+/************************************************************************/
-+/* */
-+/* O P T I O N S */
-+/* */
-+/************************************************************************/
-+
-+ char *DeviceInfo;
-+ bit32u interrupt;
-+
-+
-+ bit32u RxPassCrc;
-+ bit32u RxCaf;
-+ bit32u RxCef;
-+ bit32u RxBcast;
-+ bit32u RxBcastCh;
-+ HAL_RCB *RcbPool[MAX_CHAN];
-+ bit32 RxActQueueCount[MAX_CHAN];
-+ HAL_RCB *RxActQueueHead[MAX_CHAN];
-+ HAL_RCB *RxActQueueTail[MAX_CHAN];
-+ bit32 RxActive[MAX_CHAN];
-+ HAL_TCB *TcbPool[MAX_CHAN][MAX_QUEUE];
-+ bit32 TxActQueueCount[MAX_CHAN][MAX_QUEUE];
-+ HAL_TCB *TxActQueueHead[MAX_CHAN][MAX_QUEUE];
-+ HAL_TCB *TxActQueueTail[MAX_CHAN][MAX_QUEUE];
-+ bit32 TxActive[MAX_CHAN][MAX_QUEUE];
-+ bit32 TxTeardownPending[MAX_CHAN];
-+ bit32 RxTeardownPending[MAX_CHAN];
-+ bit32 ChIsOpen[MAX_CHAN][2];
-+ bit32 ChIsSetup[MAX_CHAN][2];
-+ FRAGLIST *fraglist;
-+ char *TcbStart[MAX_CHAN][MAX_QUEUE];
-+ char *RcbStart[MAX_CHAN];
-+ bit32 RcbSize[MAX_CHAN];
-+/* STAT_INFO Stats; */
-+ bit32 Inst;
-+ bit32u BuffersServicedMax;
-+ CHANNEL_INFO ChData[MAX_CHAN];
-+ bit32u MdioClockFrequency; /*MJH+030402*/
-+ bit32u MdioBusFrequency; /*MJH+030402*/
-+ bit32u CpuFrequency; /*MJH+030402*/
-+ bit32u CpmacFrequency; /*MJH+030403*/
-+ bit32u CpmacSize; /*MJH+030425*/
-+ int debug;
-+ bit32u NeedsCount; /*MJH+030409*/
-+ HAL_RECEIVEINFO *Needs[MAX_NEEDS]; /*MJH+030409*/
-+ int MaxFrags;
-+ int TxIntThreshold[MAX_CHAN]; /* MJH 040621 NSP Performance Update */
-+ int TxIntThresholdMaster[MAX_CHAN]; /* MJH 040827 NSP Performance Update */
-+ int TxIntDisable; /* MJH 040621 NSP Performance Update */
-+ }HALDEVICE;
-+
-+#define STATS_MAX 36
-+
-+#define MACCONTROL_MASK (TX_PTYPE|TX_PACE|TX_FLOW_EN|RX_FLOW_EN|CTRL_LOOPBACK)
-+#define RX_MBP_ENABLE_MASK \
-+ (RX_PASS_CRC|RX_QOS_EN|RX_NO_CHAIN| \
-+ RX_CMF_EN|RX_CSF_EN|RX_CEF_EN|RX_CAF_EN|RX_PROM_CH_MASK| \
-+ RX_BROAD_EN|RX_BROAD_CH_MASK|RX_MULT_EN|RX_MULT_CH_MASK)
-+
-+
-+#define MBP_UPDATE(Mask, On) \
-+ if(On) HalDev->RxMbpEnable |= Mask; \
-+ else HalDev->RxMbpEnable &= ~Mask
-+
-+#define CONTROL_UPDATE(Mask, On) \
-+ if(On) HalDev->MacControl |= Mask; \
-+ else HalDev->MacControl &= ~Mask
-+
-+
-+#define UPDATE_TX_PTYPE(Value) CONTROL_UPDATE(TX_PTYPE,Value)
-+#define UPDATE_TX_PACE(Value) CONTROL_UPDATE(TX_PACE,Value)
-+#define UPDATE_MII_EN(Value) CONTROL_UPDATE(MII_EN,Value)
-+#define UPDATE_TX_FLOW_EN(Value) CONTROL_UPDATE(TX_FLOW_EN,Value)
-+#define UPDATE_RX_FLOW_EN(Value) CONTROL_UPDATE(RX_FLOW_EN,Value)
-+#define UPDATE_CTRL_LOOPBACK(Value) CONTROL_UPDATE(CTRL_LOOPBACK,Value)
-+#define UPDATE_FULLDUPLEX(Value) CONTROL_UPDATE(FULLDUPLEX,(Value))
-+
-+#define UPDATE_RX_PASS_CRC(Value) MBP_UPDATE(RX_PASS_CRC, Value)
-+#define UPDATE_RX_QOS_EN(Value) MBP_UPDATE(RX_QOS_EN, Value)
-+#define UPDATE_RX_NO_CHAIN(Value) MBP_UPDATE(RX_NO_CHAIN, Value)
-+#define UPDATE_RX_CMF_EN(Value) MBP_UPDATE(RX_CMF_EN, Value)
-+#define UPDATE_RX_CSF_EN(Value) MBP_UPDATE(RX_CSF_EN, Value)
-+#define UPDATE_RX_CEF_EN(Value) MBP_UPDATE(RX_CEF_EN, Value)
-+#define UPDATE_RX_CAF_EN(Value) MBP_UPDATE(RX_CAF_EN, Value)
-+#define UPDATE_RX_BROAD_EN(Value) MBP_UPDATE(RX_BROAD_EN, Value)
-+#define UPDATE_RX_MULT_EN(Value) MBP_UPDATE(RX_MULT_EN, Value)
-+
-+#define UPDATE_RX_PROM_CH(Value) \
-+ HalDev->RxMbpEnable &= ~RX_PROM_CH_MASK; \
-+ HalDev->RxMbpEnable |= RX_PROM_CH(Value)
-+
-+#define UPDATE_RX_BROAD_CH(Value) \
-+ HalDev->RxMbpEnable &= ~RX_BROAD_CH_MASK; \
-+ HalDev->RxMbpEnable |= RX_BROAD_CH(Value)
-+
-+#define UPDATE_RX_MULT_CH(Value) \
-+ HalDev->RxMbpEnable &= ~RX_MULT_CH_MASK; \
-+ HalDev->RxMbpEnable |= RX_MULT_CH(Value)
-+
-+
-+
-+typedef enum
-+ {
-+ /* CPMAC */
-+ enCpmacStart=0,
-+ enStats0,
-+ enStats1,
-+ enStats2,
-+ enStats3,
-+ enStats4,
-+ enStatsDump,
-+ enStatsClear,
-+ enRX_PASS_CRC,
-+ enRX_QOS_EN,
-+ enRX_NO_CHAIN,
-+ enRX_CMF_EN,
-+ enRX_CSF_EN,
-+ enRX_CEF_EN,
-+ enRX_CAF_EN,
-+ enRX_PROM_CH,
-+ enRX_BROAD_EN,
-+ enRX_BROAD_CH,
-+ enRX_MULT_EN,
-+ enRX_MULT_CH,
-+
-+ enTX_PTYPE,
-+ enTX_PACE,
-+ enMII_EN,
-+ enTX_FLOW_EN,
-+ enRX_FLOW_EN,
-+ enCTRL_LOOPBACK,
-+
-+ enRX_MAXLEN,
-+ enRX_FILTERLOWTHRESH,
-+ enRX0_FLOWTHRESH,
-+ enRX_UNICAST_SET,
-+ enRX_UNICAST_CLEAR,
-+ enMdioConnect,
-+ enMAC_ADDR_GET,
-+ enTick,
-+ enRX_MULTICAST,
-+ enRX_MULTI_ALL,
-+ enRX_MULTI_SINGLE,
-+ enVersion,
-+ enCpmacEnd /* Last entry */
-+ }INFO_KEY_CPMAC;
-+
-+static const char pszVersion[] = "Version";
-+static const char pszStats0[] = "Stats0";
-+static const char pszStats1[] = "Stats1";
-+static const char pszStats2[] = "Stats2";
-+static const char pszStats3[] = "Stats3";
-+static const char pszStats4[] = "Stats4";
-+static const char pszStatsDump[] = "StatsDump";
-+static const char pszStatsClear[] = "StatsClear";
-+
-+/********************************************************************
-+**
-+** RX MBP ENABLE
-+**
-+********************************************************************/
-+static const char pszRX_PASS_CRC[] = "RX_PASS_CRC";
-+static const char pszRX_QOS_EN[] = "RX_QOS_EN";
-+static const char pszRX_NO_CHAIN[] = "RX_NO_CHAIN";
-+static const char pszRX_CMF_EN[] = "RX_CMF_EN";
-+static const char pszRX_CSF_EN[] = "RX_CSF_EN";
-+static const char pszRX_CEF_EN[] = "RX_CEF_EN";
-+static const char pszRX_CAF_EN[] = "RX_CAF_EN";
-+static const char pszRX_PROM_CH[] = "RX_PROM_CH";
-+static const char pszRX_BROAD_EN[] = "RX_BROAD_EN";
-+static const char pszRX_BROAD_CH[] = "RX_BROAD_CH";
-+static const char pszRX_MULT_EN[] = "RX_MULT_EN";
-+static const char pszRX_MULT_CH[] = "RX_MULT_CH";
-+
-+
-+/********************************************************************
-+**
-+** MAC CONTROL
-+**
-+********************************************************************/
-+static const char pszTX_PTYPE[] = "TX_PTYPE";
-+static const char pszTX_PACE[] = "TX_PACE";
-+static const char pszMII_EN[] = "MII_EN";
-+static const char pszTX_FLOW_EN[] = "TX_FLOW_EN";
-+static const char pszRX_FLOW_EN[] = "RX_FLOW_EN";
-+static const char pszCTRL_LOOPBACK[] = "CTRL_LOOPBACK";
-+
-+static const char pszRX_MAXLEN[] = "RX_MAXLEN";
-+static const char pszRX_FILTERLOWTHRESH[] = "RX_FILTERLOWTHRESH";
-+static const char pszRX0_FLOWTHRESH[] = "RX0_FLOWTHRESH";
-+static const char pszRX_UNICAST_SET[] = "RX_UNICAST_SET";
-+static const char pszRX_UNICAST_CLEAR[] = "RX_UNICAST_CLEAR";
-+static const char pszMdioConnect[] = "MdioConnect";
-+static const char pszMacAddr[] = "MacAddr";
-+static const char pszTick[] = "Tick";
-+
-+/********************************************************************
-+**
-+** MULTICAST
-+**
-+********************************************************************/
-+
-+static const char pszRX_MULTICAST[] = "RX_MULTICAST";
-+static const char pszRX_MULTI_ALL[] = "RX_MULTI_ALL";
-+static const char pszRX_MULTI_SINGLE[] = "RX_MULTI_SINGLE";
-+
-+/*
-+static const char* pszGFHN = "GFHN";
-+*/
-+
-+static const CONTROL_KEY KeyCpmac[] =
-+ {
-+ {"" , enCpmacStart},
-+ {pszStats0 , enStats0},
-+ {pszStats1 , enStats1},
-+ {pszStats2 , enStats2},
-+ {pszStats3 , enStats3},
-+ {pszStats4 , enStats4},
-+ {pszStatsClear , enStatsClear},
-+ {pszStatsDump , enStatsDump},
-+ {pszRX_PASS_CRC , enRX_PASS_CRC},
-+ {pszRX_QOS_EN , enRX_QOS_EN},
-+ {pszRX_NO_CHAIN , enRX_NO_CHAIN},
-+ {pszRX_CMF_EN , enRX_CMF_EN},
-+ {pszRX_CSF_EN , enRX_CSF_EN},
-+ {pszRX_CEF_EN , enRX_CEF_EN},
-+ {pszRX_CAF_EN , enRX_CAF_EN},
-+ {pszRX_PROM_CH , enRX_PROM_CH},
-+ {pszRX_BROAD_EN , enRX_BROAD_EN},
-+ {pszRX_BROAD_CH , enRX_BROAD_CH},
-+ {pszRX_MULT_EN , enRX_MULT_EN},
-+ {pszRX_MULT_CH , enRX_MULT_CH},
-+
-+ {pszTX_PTYPE , enTX_PTYPE},
-+ {pszTX_PACE , enTX_PACE},
-+ {pszMII_EN , enMII_EN},
-+ {pszTX_FLOW_EN , enTX_FLOW_EN},
-+ {pszRX_FLOW_EN , enRX_FLOW_EN},
-+ {pszCTRL_LOOPBACK , enCTRL_LOOPBACK},
-+ {pszRX_MAXLEN , enRX_MAXLEN},
-+ {pszRX_FILTERLOWTHRESH , enRX_FILTERLOWTHRESH},
-+ {pszRX0_FLOWTHRESH , enRX0_FLOWTHRESH},
-+ {pszRX_UNICAST_SET , enRX_UNICAST_SET},
-+ {pszRX_UNICAST_CLEAR , enRX_UNICAST_CLEAR},
-+ {pszMdioConnect , enMdioConnect},
-+ {pszRX_MULTICAST , enRX_MULTICAST},
-+ {pszRX_MULTI_ALL , enRX_MULTI_ALL},
-+ {pszRX_MULTI_SINGLE , enRX_MULTI_SINGLE},
-+ {pszTick , enTick},
-+ {pszVersion , enVersion},
-+ {"" , enCpmacEnd}
-+ };
-+
-+const char hcCpuFrequency[] = "CpuFreq";
-+const char hcCpmacFrequency[] = "CpmacFrequency";
-+const char hcMdioBusFrequency[] = "MdioBusFrequency";
-+const char hcMdioClockFrequency[] = "MdioClockFrequency";
-+const char hcCpmacBase[] = "CpmacBase";
-+const char hcPhyNum[] = "PhyNum";
-+const char hcSize[] = "size";
-+const char hcCpmacSize[] = "CpmacSize";
-+const char hcPhyAccess[] = "PhyAccess";
-+const char hcLinked[] = "Linked";
-+const char hcFullDuplex[] = "FullDuplex";
-+const char hcMdixMask[] = "MdixMask";
-+const char hcMdioMdixSwitch[] = "MdixSet";
-+#endif
-diff -urN linux.old/drivers/net/avalanche_cpmac/Makefile linux.dev/drivers/net/avalanche_cpmac/Makefile
---- linux.old/drivers/net/avalanche_cpmac/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/Makefile 2005-07-12 02:48:42.175574000 +0200
-@@ -0,0 +1,26 @@
-+# File: drivers/net/avalanche_cpmac/Makefile
-+#
-+# Makefile for the Linux network (CPMAC) device drivers.
-+#
-+
-+O_TARGET := avalanche_cpmac.o
-+
-+
-+list-multi := avalanche_cpmac.o
-+obj-$(CONFIG_MIPS_AVALANCHE_CPMAC) := avalanche_cpmac.o
-+
-+avalanche_cpmac-objs += cpmac.o cpmacHalLx.o hcpmac.o \
-+ psp_config_build.o psp_config_mgr.o \
-+ psp_config_parse.o psp_config_util.o
-+
-+
-+include $(TOPDIR)/Rules.make
-+
-+
-+avalanche_cpmac.o: $(avalanche_cpmac-objs)
-+ $(LD) -r -o $@ $(avalanche_cpmac-objs)
-+
-+
-+
-+clean:
-+ rm -f core *.o *.a *.s
-diff -urN linux.old/drivers/net/avalanche_cpmac/mdio_reg.h linux.dev/drivers/net/avalanche_cpmac/mdio_reg.h
---- linux.old/drivers/net/avalanche_cpmac/mdio_reg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/mdio_reg.h 2005-07-12 02:48:42.176573000 +0200
-@@ -0,0 +1,121 @@
-+/****************************************************************************
-+** TNETD53xx Software Support
-+** Copyright(c) 2002, Texas Instruments Incorporated. All Rights Reserved.
-+**
-+** FILE: mdio_reg.h Register definitions for the VBUS MII module
-+**
-+** DESCRIPTION:
-+** This include file contains register definitions for the
-+** VBUS MII module.
-+**
-+** HISTORY:
-+** 27Mar02 Michael Hanrahan Original (modified from emacmdio.h)
-+** 01Apr02 Michael Hanrahan Modified to include all regs. in spec
-+** 03Apr02 Michael Hanrahan Updated to Version 0.6 of spec
-+** 05Apr02 Michael Hanrahan Moved Phy Mode values into here
-+** 30Apr02 Michael Hanrahan Updated to Version 0.8 of spec
-+** 30Apr02 Michael Hanrahan Updated to recommended format
-+** 10May02 Michael Hanrahan Updated to Version 0.9 of spec
-+*****************************************************************************/
-+#ifndef _INC_MDIO_REG
-+#define _INC_MDIO_REG
-+
-+/***************************************************************************
-+**
-+** M D I O M E M O R Y M A P
-+**
-+***************************************************************************/
-+
-+
-+#define pMDIO_VER(base) ((volatile bit32u *)(base+0x00))
-+#define pMDIO_CONTROL(base) ((volatile bit32u *)(base+0x04))
-+#define pMDIO_ALIVE(base) ((volatile bit32u *)(base+0x08))
-+#define pMDIO_LINK(base) ((volatile bit32u *)(base+0x0C))
-+#define pMDIO_LINKINTRAW(base) ((volatile bit32u *)(base+0x10))
-+#define pMDIO_LINKINTMASKED(base) ((volatile bit32u *)(base+0x14))
-+#define pMDIO_USERINTRAW(base) ((volatile bit32u *)(base+0x20))
-+#define pMDIO_USERINTMASKED(base) ((volatile bit32u *)(base+0x24))
-+#define pMDIO_USERINTMASKED_SET(base) ((volatile bit32u *)(base+0x28))
-+#define pMDIO_USERINTMASKED_CLR(base) ((volatile bit32u *)(base+0x2C))
-+#define pMDIO_USERACCESS(base, channel) ((volatile bit32u *)(base+(0x80+(channel*8))))
-+#define pMDIO_USERPHYSEL(base, channel) ((volatile bit32u *)(base+(0x84+(channel*8))))
-+
-+
-+/***************************************************************************
-+**
-+** M D I O R E G I S T E R A C C E S S M A C R O S
-+**
-+***************************************************************************/
-+
-+
-+#define MDIO_ALIVE(base) (*(pMDIO_ALIVE(base)))
-+#define MDIO_CONTROL(base) (*(pMDIO_CONTROL(base)))
-+#define MDIO_CONTROL_IDLE (1 << 31)
-+#define MDIO_CONTROL_ENABLE (1 << 30)
-+#define MDIO_CONTROL_PREAMBLE (1 << 20)
-+#define MDIO_CONTROL_FAULT (1 << 19)
-+#define MDIO_CONTROL_FAULT_DETECT_ENABLE (1 << 18)
-+#define MDIO_CONTROL_INT_TEST_ENABLE (1 << 17)
-+#define MDIO_CONTROL_HIGHEST_USER_CHANNEL (0x1F << 8)
-+#define MDIO_CONTROL_CLKDIV (0xFF)
-+#define MDIO_LINK(base) (*(pMDIO_LINK(base)))
-+#define MDIO_LINKINTRAW(base) (*(pMDIO_LINKINTRAW(base)))
-+#define MDIO_LINKINTMASKED(base) (*(pMDIO_LINKINTMASKED(base)))
-+#define MDIO_USERINTRAW(base) (*(pMDIO_USERINTRAW(base)))
-+#define MDIO_USERINTMASKED(base) (*(pMDIO_USERINTMASKED(base)))
-+#define MDIO_USERINTMASKED_CLR(base) (*(pMDIO_USERINTMASKED_CLR(base)))
-+#define MDIO_USERINTMASKED_SET(base) (*(pMDIO_USERINTMASKED_SET(base)))
-+#define MDIO_USERINTRAW(base) (*(pMDIO_USERINTRAW(base)))
-+#define MDIO_USERACCESS(base, channel) (*(pMDIO_USERACCESS(base, channel)))
-+#define MDIO_USERACCESS_GO (1 << 31)
-+#define MDIO_USERACCESS_WRITE (1 << 30)
-+#define MDIO_USERACCESS_READ (0 << 30)
-+#define MDIO_USERACCESS_ACK (1 << 29)
-+#define MDIO_USERACCESS_REGADR (0x1F << 21)
-+#define MDIO_USERACCESS_PHYADR (0x1F << 16)
-+#define MDIO_USERACCESS_DATA (0xFFFF)
-+#define MDIO_USERPHYSEL(base, channel) (*(pMDIO_USERPHYSEL(base, channel)))
-+#define MDIO_USERPHYSEL_LINKSEL (1 << 7)
-+#define MDIO_USERPHYSEL_LINKINT_ENABLE (1 << 6)
-+#define MDIO_USERPHYSEL_PHYADR_MON (0x1F)
-+#define MDIO_VER(base) (*(pMDIO_VER(base)))
-+#define MDIO_VER_MODID (0xFFFF << 16)
-+#define MDIO_VER_REVMAJ (0xFF << 8)
-+#define MDIO_VER_REVMIN (0xFF)
-+
-+
-+
-+
-+/****************************************************************************/
-+/* */
-+/* P H Y R E G I S T E R D E F I N I T I O N S */
-+/* */
-+/****************************************************************************/
-+
-+
-+#define PHY_CONTROL_REG 0
-+ #define PHY_RESET (1<<15)
-+ #define PHY_LOOP (1<<14)
-+ #define PHY_100 (1<<13)
-+ #define AUTO_NEGOTIATE_EN (1<<12)
-+ #define PHY_PDOWN (1<<11)
-+ #define PHY_ISOLATE (1<<10)
-+ #define RENEGOTIATE (1<<9)
-+ #define PHY_FD (1<<8)
-+
-+#define PHY_STATUS_REG 1
-+ #define NWAY_COMPLETE (1<<5)
-+ #define NWAY_CAPABLE (1<<3)
-+ #define PHY_LINKED (1<<2)
-+
-+#define NWAY_ADVERTIZE_REG 4
-+#define NWAY_REMADVERTISE_REG 5
-+ #define NWAY_FD100 (1<<8)
-+ #define NWAY_HD100 (1<<7)
-+ #define NWAY_FD10 (1<<6)
-+ #define NWAY_HD10 (1<<5)
-+ #define NWAY_SEL (1<<0)
-+ #define NWAY_AUTO (1<<0)
-+
-+
-+#endif _INC_MDIO_REG
-diff -urN linux.old/drivers/net/avalanche_cpmac/psp_config_build.c linux.dev/drivers/net/avalanche_cpmac/psp_config_build.c
---- linux.old/drivers/net/avalanche_cpmac/psp_config_build.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/psp_config_build.c 2005-07-12 02:48:42.176573000 +0200
-@@ -0,0 +1,335 @@
-+/******************************************************************************
-+ * FILE PURPOSE: PSP Config Manager - Configuration Build Source
-+ ******************************************************************************
-+ * FILE NAME: psp_config_build.c
-+ *
-+ * DESCRIPTION: Configuration Build API Implementation
-+ *
-+ * REVISION HISTORY:
-+ * 27 Nov 02 - PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+#ifdef INCLUDE_FFS
-+#include "ffs.h"
-+#endif /* INCLUDE_FFS */
-+
-+#include "psp_config_mgr.h"
-+#include "psp_config_build.h"
-+#include "psp_config_util.h"
-+
-+#define MAX_DEVICE_NAME_LEN 16
-+#define MAX_DEVICE_STR_LEN 512
-+
-+#ifndef NULL
-+#define NULL (char *)0
-+#endif
-+
-+#include <asm/ar7/sangam.h>
-+#include <linux/slab.h>
-+#include <linux/config.h>
-+
-+
-+#define os_malloc(size) kmalloc(size, GFP_KERNEL)
-+
-+int psp_run_enumerator(void)
-+{
-+ return(0);
-+}
-+
-+#if defined (CONFIG_AVALANCHE_CPMAC_AUTO)
-+
-+static int auto_detect_cpmac_phy(void)
-+{
-+
-+#define SELECT_INT_PHY_MAC 0
-+#define SELECT_EXT_PHY_MAC 1
-+
-+ volatile unsigned long *reset_cntl = AVALANCHE_RESET_CONTROL_BASE, *mdio_cntl = ((int)AVALANCHE_MDIO_BASE + 0x4);
-+ unsigned int j= 0, detected_phy_map = 0, auto_select = SELECT_INT_PHY_MAC;
-+
-+ *reset_cntl |= (1 << AVALANCHE_MDIO_RESET_BIT) | (1 << AVALANCHE_LOW_CPMAC_RESET_BIT) | (1 << AVALANCHE_HIGH_CPMAC_RESET_BIT) | (1 << AVALANCHE_LOW_EPHY_RESET_BIT);
-+ *mdio_cntl = (1 << 30) | ((CONFIG_AR7_SYS * 1000)/2200);
-+
-+ for(j=0;j < 300000; j++)
-+ {
-+ if(j%100000) continue;
-+
-+ detected_phy_map = *(mdio_cntl + 1);
-+ if(detected_phy_map)
-+ {
-+ detected_phy_map &= ~AVALANCHE_LOW_CPMAC_PHY_MASK;
-+
-+ if(detected_phy_map && !(detected_phy_map & (detected_phy_map - 1)))
-+ {
-+ auto_select = SELECT_EXT_PHY_MAC;
-+ break;
-+ }
-+ }
-+ }
-+
-+ return(auto_select);
-+
-+}
-+
-+#endif
-+
-+
-+#ifndef AVALANCHE_LOW_CPMAC_MDIX_MASK
-+#define AVALANCHE_LOW_CPMAC_MDIX_MASK 0
-+#endif
-+
-+void psp_load_default_static_cfg(void)
-+{
-+ char s2[100], s3[100];
-+ char s4[2000], s6[2000];
-+ int threshold = 20;
-+ char *tx_threshold_ptr = prom_getenv("threshold");
-+
-+ if(tx_threshold_ptr)
-+ threshold = simple_strtol(tx_threshold_ptr, (char **)NULL, 10);
-+
-+ /* Static configuration if options.conf not present */
-+ sprintf(s3,"cpmdio(id=mii, base=%u, reset_bit=%d)", AVALANCHE_MDIO_BASE, 22);
-+ sprintf(s2, "reset( id=[ResetRegister], base=%u)", AVALANCHE_RESET_CONTROL_BASE);
-+
-+ sprintf(s4, "cpmac(id=[cpmac], unit=0, base=%u, size=0x800, reset_bit=%d, PhyMask=%u, MdixMask=%u, MLink=0, int_line=%d, memory_offset=0, RX_CAF=1, RX_PASSCRC=0, RX_CEF=1, RX_BCAST=0, RX_BCASTCH=0, Ch0=[TxNumBuffers=256, TxNumQueues=1, TxServiceMax=%d, RxNumBuffers=256, RxBufferOffset=0, RxBufSize=1000, RxServiceMax=128], Ch1=[TxNumBuffers=256, TxNumQueues=1, TxServiceMax=%d, RxNumBuffers=256, RxBufferOffset=0, RxBufSize=1000, RxServiceMax=128], Ch2=[TxNumBuffers=256, TxNumQueues=1, TxServiceMax=%d, RxNumBuffers=256, RxBufferOffset=0, RxBufSize=1000, RxServiceMax=128])", AVALANCHE_LOW_CPMAC_BASE, AVALANCHE_LOW_CPMAC_RESET_BIT, AVALANCHE_LOW_CPMAC_PHY_MASK, AVALANCHE_LOW_CPMAC_MDIX_MASK, AVALANCHE_LOW_CPMAC_INT,threshold,threshold,threshold);
-+
-+ sprintf(s6, "cpmac(id=[cpmac], unit=1, base=%u, size=0x800, reset_bit=%d, PhyMask=%u, MLink=0, int_line=%d, memory_offset=0, RX_CAF=1, RX_PASSCRC=0, RX_CEF=1, RX_BCAST=0, RX_BCASTCH=0, Ch0=[TxNumBuffers=256, TxNumQueues=1, TxServiceMax=%d, RxNumBuffers=256, RxBufferOffset=0, RxBufSize=1000, RxServiceMax=128], Ch1=[TxNumBuffers=256, TxNumQueues=1, TxServiceMax=%d, RxNumBuffers=256, RxBufferOffset=0, RxBufSize=1000, RxServiceMax=128], Ch2=[TxNumBuffers=256, TxNumQueues=1, TxServiceMax=%d, RxNumBuffers=256, RxBufferOffset=0, RxBufSize=1000, RxServiceMax=128])", AVALANCHE_HIGH_CPMAC_BASE, AVALANCHE_HIGH_CPMAC_RESET_BIT, AVALANCHE_HIGH_CPMAC_PHY_MASK, AVALANCHE_HIGH_CPMAC_INT,threshold,threshold,threshold);
-+
-+ psp_config_add("reset", s2, psp_config_strlen(s2), en_compile);
-+
-+
-+#if defined (CONFIG_AVALANCHE_LOW_CPMAC)
-+
-+ psp_config_add("cpmdio", s3, psp_config_strlen(s3), en_compile);
-+ psp_config_add("cpmac", s4, psp_config_strlen(s4), en_compile);
-+
-+#endif
-+
-+
-+#if defined (CONFIG_AVALANCHE_HIGH_CPMAC)
-+
-+ psp_config_add("cpmdio", s3, psp_config_strlen(s3), en_compile);
-+ psp_config_add("cpmac", s6, psp_config_strlen(s6), en_compile);
-+
-+#endif
-+
-+#if defined (CONFIG_AVALANCHE_CPMAC_AUTO)
-+ {
-+ char *phy_sel_ptr = prom_getenv("mac_phy_sel");
-+ int phy_sel = SELECT_EXT_PHY_MAC;
-+ char *mac_port = prom_getenv("MAC_PORT"); /* Internal: 0, External: 1 */
-+
-+ if(phy_sel_ptr && (0 == strcmp(phy_sel_ptr, "int")))
-+ {
-+ phy_sel = SELECT_INT_PHY_MAC;
-+ }
-+
-+ //if(phy_sel == auto_detect_cpmac_phy())
-+ if(!mac_port || (0 != strcmp(mac_port, "0")))
-+ {
-+ printk("Using the MAC with external PHY\n");
-+ psp_config_add("cpmdio", s3, psp_config_strlen(s3), en_compile);
-+ psp_config_add("cpmac", s6, psp_config_strlen(s6), en_compile);
-+ }
-+ else
-+ {
-+ printk("Using the MAC with internal PHY\n");
-+ psp_config_add("cpmdio", s3, psp_config_strlen(s3), en_compile);
-+ psp_config_add("cpmac", s4, psp_config_strlen(s4), en_compile);
-+ }
-+ }
-+
-+#endif
-+
-+}
-+
-+char* psp_conf_read_file(char *p_file_name)
-+{
-+#ifdef INCLUDE_FFS
-+
-+ char *p_file_data = NULL;
-+ unsigned int file_size;
-+ FFS_FILE *p_file = NULL;
-+
-+ if(p_file_name == NULL)
-+ {
-+ return (NULL);
-+ }
-+
-+ if(!(p_file = ffs_fopen(p_file_name, "r")))
-+ {
-+ return(NULL);
-+ }
-+
-+ file_size = p_file->_AvailableBytes;
-+
-+ p_file_data = os_malloc(file_size + 1);
-+
-+ if(ffs_fread(p_file_data, file_size, 1, p_file) == 0)
-+ {
-+ kfree(p_file_data);
-+ return(NULL);
-+ }
-+
-+ ffs_fclose(p_file);
-+
-+ p_file_data[file_size] = '\0';
-+
-+ return(p_file_data);
-+
-+#else /* NO FFS */
-+ return(NULL);
-+#endif /* INCLUDE_FFS */
-+}
-+
-+int psp_conf_get_line(char *p_in_data, char **next_line)
-+{
-+ char *p = p_in_data;
-+
-+ while(*p && *p++ != '\n')
-+ {
-+
-+ }
-+
-+ *next_line = p;
-+
-+ return(p - 1 - p_in_data);
-+}
-+
-+
-+int psp_conf_is_data_line(char *line)
-+{
-+ int ret_val = 1;
-+
-+ if(*line == '\0' || *line == '\n' || *line == '#')
-+ ret_val = 0;
-+
-+ return(ret_val);
-+}
-+
-+int psp_conf_get_key_size(char *data)
-+{
-+ char *p = data;
-+
-+ while(*p && *p != '\n' && *p != '(' && *p != ' ')
-+ p++;
-+
-+ return(p - data);
-+}
-+
-+char* psp_conf_eat_white_spaces(char *p)
-+{
-+ while(*p && *p != '\n' && *p == ' ')
-+ p++;
-+
-+ return (p);
-+}
-+
-+int psp_build_from_opt_conf(void)
-+{
-+ char *data = NULL;
-+ char *data_hold = NULL;
-+ char *next_line = NULL;
-+ int line_size = 0;
-+
-+ if((data = psp_conf_read_file("/etc/options.conf")) == NULL)
-+ return(-1);
-+
-+ data_hold = data;
-+
-+ while((line_size=psp_conf_get_line(data, &next_line)) != -1)
-+ {
-+
-+ char *name = NULL;
-+ int name_size;
-+
-+ data = psp_conf_eat_white_spaces(data);
-+
-+ if(psp_conf_is_data_line(data))
-+ {
-+ data[line_size] = '\0';
-+
-+ name_size = psp_conf_get_key_size(data);
-+
-+ if(name_size > 0)
-+ {
-+ name = (char *) os_malloc(name_size + 1);
-+ if(name == NULL) break;
-+
-+ psp_config_memcpy(name, data, name_size);
-+ name[name_size] = '\0';
-+
-+ psp_config_add(name, data, line_size, en_opt_conf);
-+
-+ kfree(name);
-+ }
-+
-+ data[line_size] = '\n';
-+ }
-+
-+ data = next_line;
-+ }
-+
-+ kfree(data_hold);
-+ return (0);
-+}
-+
-+
-+int psp_write_conf_file(char *p_write_file, char * dev_cfg_string)
-+{
-+#ifdef INCLUDE_FFS
-+ int bytes_written=0;
-+ FFS_FILE *file_ptr=NULL;
-+
-+ /*
-+ * NOTE: In current implementation of FFS in ADAM2 if the file exists beforehand, it
-+ * can't be opened for write.
-+ */
-+ if(!(file_ptr=ffs_fopen(p_write_file, "w"))) {
-+ return(-1);
-+ }
-+
-+ /* Write into the file "output.con" the character string */
-+ /* write a \n before a writing a line */
-+ if(!(bytes_written = ffs_fwrite("\n", 1, sizeof(char), file_ptr))) {
-+ return (-1);
-+ }
-+
-+ if(!(bytes_written = ffs_fwrite(dev_cfg_string, psp_config_strlen(dev_cfg_string), sizeof(char), file_ptr))) {
-+ return (-1);
-+ }
-+ ffs_fclose(file_ptr);
-+ return (bytes_written+1);
-+#else /* NO FFS */
-+ return(-1);
-+#endif /* INCLUDE_FFS */
-+}
-+
-+void build_psp_config(void)
-+{
-+
-+ /* initialize the repository. */
-+ psp_config_init();
-+
-+#ifdef INCLUDE_FFS
-+ ffs_init();
-+#endif /* INCLUDE_FFS */
-+
-+ /* read the configuration from the options.conf to override default ones */
-+ psp_build_from_opt_conf();
-+
-+ /* read the configuration which were not over ridden in options.conf */
-+ psp_load_default_static_cfg();
-+
-+ /* let the vlynq be enumerated. Enumerator will add cfg info
-+ of the discovered device instances to the repository.*/
-+ psp_run_enumerator();
-+
-+ /* dump the repository*/
-+ dump_device_cfg_pool();
-+
-+}
-+
-diff -urN linux.old/drivers/net/avalanche_cpmac/psp_config_build.h linux.dev/drivers/net/avalanche_cpmac/psp_config_build.h
---- linux.old/drivers/net/avalanche_cpmac/psp_config_build.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/psp_config_build.h 2005-07-12 02:48:42.176573000 +0200
-@@ -0,0 +1,138 @@
-+/******************************************************************************
-+ * FILE PURPOSE: PSP Config Manager - Configuration Build Header
-+ ******************************************************************************
-+ * FILE NAME: psp_config_build.h
-+ *
-+ * DESCRIPTION: Configuration Build API's.
-+ *
-+ * REVISION HISTORY:
-+ * 27 Nov 02 - PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+#ifndef __PSP_CONF_BUILD_H__
-+#define __PSP_CONF_BUILD_H__
-+
-+/*------------------------------------------------------------------------------
-+ * Name: psp_conf_read_file
-+ *
-+ * Parameters:
-+ * in: p_file_name - the name of the file to read from.
-+ *
-+ * Description:
-+ * Reads the entire file in one shot. This function opens the
-+ * file, determines the size of the data to be read, allocates
-+ * the required memory, NULL terminates the data and closes the
-+ * file.
-+ *
-+ * It is responsibily of the callee to free the memory after it is
-+ * done with that data.
-+ *
-+ *
-+ * Returns:
-+ * A NULL pointer, if failed to read the data otherwise, a valid
-+ * pointer referring to the data read from the file.
-+ *
-+ * Example:
-+ *
-+ * psp_conf_read_file("/etc/options.conf");
-+ *---------------------------------------------------------------------------*/
-+ char *psp_conf_read_file(char *p_file_name);
-+
-+ /*----------------------------------------------------------------------------
-+ * Function : psp_conf_write_file
-+ *
-+ * Parameters:
-+ * in: p_file_name - the file to which data is to be written.
-+ * in: data - the NULL terminated data string.
-+ *
-+ * Description:
-+ * Write the indicated data into the file. This function opens the file,
-+ * appends the data to end of the file, closes the file.
-+ *
-+ * Returns:
-+ *
-+ * The number of bytes on success.
-+ * 0 on failure.
-+ *
-+ * Example:
-+ *
-+ * psp_conf_write_file("/etc/outcon.conf", data);
-+ *--------------------------------------------------------------------------*/
-+ int psp_conf_write_file(char *p_file_name, char *data);
-+
-+ /*----------------------------------------------------------------------------
-+ * Function: psp_conf_get_line
-+ *
-+ * Parameters:
-+ * in: data - the data from which the line is to identified.
-+ * out: next_line - the pointer to start of the next line.
-+ *
-+ * Description:
-+ * Expects the data to be '\n' separated segments and data is NULL
-+ * terminated. Parses the given data for '\n' or '\0'. Provides a pointer
-+ * to the start of next line in the next_line.
-+ *
-+ * Returns:
-+ * -1 on error.
-+ * 0 or more to indicate the number of bytes in the line starting at
-+ * data.
-+ *--------------------------------------------------------------------------*/
-+ int psp_get_conf_line(char *p_in_data, char **next_line);
-+
-+ /*----------------------------------------------------------------------------
-+ * Function: psp_conf_is_data_line
-+ *
-+ * Parameters:
-+ * in: line - the array of bytes.
-+ *
-+ * Description:
-+ * Tests the first byte in the array for '\0' or '\n' or '#'. Lines
-+ * starting with these characters are not considered data.
-+ *
-+ * Returns:
-+ * 1 if the line has data.
-+ * 0 otherwise.
-+ *
-+ *--------------------------------------------------------------------------*/
-+ int psp_conf_is_data_line(char *line);
-+
-+ /*----------------------------------------------------------------------------
-+ * Function: psp_conf_eat_white_spaces
-+ *
-+ * Parameters:
-+ * in: line - the array of bytes.
-+ *
-+ * Description:
-+ * Eats white spaces at the begining of the line while looking out for
-+ * '\0' or '\n' or ' '.
-+ *
-+ * Returns:
-+ * Pointer to the begining of the non white space character.
-+ * NULL if '\0' or '\n' is found.
-+ *
-+ *--------------------------------------------------------------------------*/
-+ char *psp_conf_eat_white_spaces(char *line);
-+
-+ /*---------------------------------------------------------------------------
-+ * Function: psp_conf_get_key_size
-+ *
-+ * Parameters:
-+ * in: line - the array of bytes.
-+ *
-+ * Description:
-+ * Identifies the size of the 'key' in array formatted as
-+ * key(id=[key1]....). This function also checks out for '\0' and '\n'.
-+ *
-+ * Returns:
-+ * On success, The number of bytes that forms the key.
-+ * 0 otherwise.
-+ *
-+ *-------------------------------------------------------------------------*/
-+ int psp_conf_get_key_size(char *line);
-+
-+
-+
-+#endif /* __PSP_CONF_BUILD_H__ */
-+
-diff -urN linux.old/drivers/net/avalanche_cpmac/psp_config_mgr.c linux.dev/drivers/net/avalanche_cpmac/psp_config_mgr.c
---- linux.old/drivers/net/avalanche_cpmac/psp_config_mgr.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/psp_config_mgr.c 2005-07-12 02:48:42.177573000 +0200
-@@ -0,0 +1,464 @@
-+/******************************************************************************
-+ * FILE PURPOSE: PSP Config Manager Source
-+ ******************************************************************************
-+ * FILE NAME: psp_config_mgr.c
-+ *
-+ * DESCRIPTION:
-+ *
-+ * Manages configuration information. The repository is managed on the basis of
-+ * <key, info> pair. It is possible to have multiple occurrence of the same key.
-+ * Multiple occurences of the same keys are referred to as 'instances'.
-+ * 'instances' are assigned in the order of configuration arrival. The first
-+ * config for a 'key' added to the repository would be treated as instance 0 and
-+ * next config to arrive for the same key would be treated as instance '1' and
-+ * so on.
-+ *
-+ * Info is retrieved from the repository based on the 'key' and 'instance' value.
-+ *
-+ * No assumption is made about the format of the information that is put in the
-+ * repository. The only requirement is that 'key' should be NULL terminated
-+ * string.
-+ *
-+ * REVISION HISTORY:
-+ * 27 Nov 02 - PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+//#include <stdio.h>
-+//#include <stdlib.h>
-+#include "psp_config_mgr.h"
-+#include "psp_config_util.h"
-+
-+#include <linux/slab.h>
-+
-+/*-----------------------------------------------------------
-+ Implemented elsewhere
-+ -----------------------------------------------------------*/
-+extern int sys_read_options_conf(void);
-+extern int sys_write_options_conf(char *cfg_info);
-+extern int sys_load_default_static_cfg(void);
-+extern int sys_run_enumerator(void);
-+
-+#define os_malloc(size) kmalloc(size, GFP_KERNEL)
-+
-+/*---------------------------------------------------------
-+ * Data structures.
-+ *--------------------------------------------------------*/
-+struct device_cfg_data;
-+
-+typedef struct device_instance_cfg_data
-+{
-+ struct device_instance_cfg_data *next;
-+ char locale[100];
-+ unsigned int data_size;
-+ char *data;
-+
-+} DEV_INSTANCE_CFG_DATA_T;
-+
-+struct device_cfg_collection;
-+
-+typedef struct device_cfg_collection
-+{
-+ struct device_cfg_collection *next;
-+ char *device_name;
-+ CFG_TYPE_T cfg_type;
-+ int count;
-+ DEV_INSTANCE_CFG_DATA_T *dev_inst_list_begin;
-+ DEV_INSTANCE_CFG_DATA_T *dev_inst_list_end;
-+} DEVICE_CFG_T;
-+
-+
-+typedef struct device_cfg_list
-+{
-+ DEVICE_CFG_T *device_cfg_begin;
-+ int count;
-+} DEVICE_CFG_LIST_T;
-+
-+/*-----------------------------------------------------------------------------
-+ * Functions used locally with in the file.
-+ *---------------------------------------------------------------------------*/
-+static void p_init_device_cfg_list(void);
-+static int p_add_instance_cfg_data(DEVICE_CFG_T *p_dev_cfg,
-+ DEV_INSTANCE_CFG_DATA_T *p_dev_inst_data);
-+static DEVICE_CFG_T* p_create_dev_cfg(char *device_name);
-+static DEVICE_CFG_T* p_get_dev_cfg(char *device_name);
-+static int p_set_device_cfg_type(DEVICE_CFG_T *p_dev_cfg,
-+ CFG_TYPE_T cfg_type);
-+
-+/* PSP Config manager debug */
-+#define PSP_CFG_MGR_DEBUG 0
-+
-+#define dbgPrint if (PSP_CFG_MGR_DEBUG) printk
-+
-+/*-----------------------------------------------------------------------------
-+ * The repository.
-+ *---------------------------------------------------------------------------*/
-+static DEVICE_CFG_LIST_T g_device_cfg_list;
-+
-+/*---------------------------------------------
-+ * Initialize the device collection pool.
-+ *--------------------------------------------*/
-+void p_init_device_cfg_list(void)
-+{
-+ g_device_cfg_list.count = 0;
-+ g_device_cfg_list.device_cfg_begin = NULL;
-+}
-+
-+/*----------------------------------------------------------------------
-+ * Add the device cfg into the device linked list.
-+ *---------------------------------------------------------------------*/
-+int p_add_dev_cfg_to_list(DEVICE_CFG_LIST_T *p_dev_list,
-+ DEVICE_CFG_T *p_dev_cfg)
-+{
-+ if(p_dev_list->count != 0)
-+ p_dev_cfg->next = p_dev_list->device_cfg_begin;
-+
-+ p_dev_list->device_cfg_begin = p_dev_cfg;
-+
-+ p_dev_list->count++;
-+
-+ return (0);
-+}
-+
-+/*------------------------------------------------------------------
-+ * Add the cfg data into the cfg data linked list of the collection.
-+ *------------------------------------------------------------------*/
-+int p_add_instance_cfg_data(DEVICE_CFG_T *p_dev_cfg,
-+ DEV_INSTANCE_CFG_DATA_T *p_dev_inst_data)
-+{
-+ if(p_dev_cfg->count == 0)
-+ p_dev_cfg->dev_inst_list_begin = p_dev_inst_data;
-+ else
-+ p_dev_cfg->dev_inst_list_end->next = p_dev_inst_data;
-+
-+ p_dev_cfg->dev_inst_list_end = p_dev_inst_data;
-+
-+ p_dev_cfg->count++;
-+
-+ return (0);
-+}
-+
-+/*-----------------------------------------------------------------------------
-+ * Create the device cfg.
-+ *---------------------------------------------------------------------------*/
-+DEVICE_CFG_T *p_create_dev_cfg(char *device_name)
-+{
-+ DEVICE_CFG_T *p_dev_cfg = NULL;
-+
-+ if((p_dev_cfg = os_malloc(sizeof(DEVICE_CFG_T))) == NULL)
-+ {
-+ dbgPrint("Failed to allocate memory for DEVICE_CFG_T.\n");
-+ }
-+ else if((p_dev_cfg->device_name = os_malloc(psp_config_strlen(device_name) + 1))==NULL)
-+ {
-+ dbgPrint("Failed to allocate memory for device name.\n");
-+ }
-+ else
-+ {
-+ psp_config_strcpy(p_dev_cfg->device_name, device_name);
-+ p_dev_cfg->cfg_type = en_raw;
-+ p_dev_cfg->count = 0;
-+ p_dev_cfg->dev_inst_list_begin = NULL;
-+ p_dev_cfg->dev_inst_list_end = NULL;
-+ p_dev_cfg->next = NULL;
-+ }
-+
-+ return(p_dev_cfg);
-+}
-+
-+/*------------------------------------------------------------------------------
-+ * Get the device cfg collection.
-+ *-----------------------------------------------------------------------------*/
-+DEVICE_CFG_T *p_get_dev_cfg(char *device_name)
-+{
-+ int count = 0;
-+ DEVICE_CFG_T *p_dev_cfg = g_device_cfg_list.device_cfg_begin;
-+
-+ for(count=0; count < g_device_cfg_list.count; count++)
-+ {
-+ if(psp_config_strcmp(device_name, p_dev_cfg->device_name) == 0)
-+ {
-+ break;
-+ }
-+
-+ p_dev_cfg = p_dev_cfg->next;
-+ }
-+
-+ return(p_dev_cfg);
-+}
-+
-+/*-------------------------------------------------------------------------
-+ * Gets the name for the static cfg type. Utility function. Debug purposes.
-+ *-------------------------------------------------------------------------*/
-+char *p_get_cfg_type_name_for_en(CFG_TYPE_T cfg_type)
-+{
-+ static char raw_str [] = "still raw";
-+ static char compile_str [] = "configured at compile time";
-+ static char optconf_str [] = "configured by options.conf";
-+ static char vlynq_str [] = "configured by VLYNQ";
-+ static char no_static_str[] = "no static configuration";
-+
-+ if(cfg_type == en_raw)
-+ return (raw_str);
-+ else if(cfg_type == en_compile)
-+ return (compile_str);
-+ else if(cfg_type == en_opt_conf)
-+ return (optconf_str);
-+ else if(cfg_type == en_vlynq)
-+ return (vlynq_str);
-+ else
-+ return (no_static_str);
-+
-+}
-+
-+/*-----------------------------------------------------------------------------
-+ * Sets the static cfg status of the device collection.
-+ *
-+ * If the collection is en_virgin then, the collection is assigned to cfg_type.
-+ * If the cfg_type is en_vlynq then, the old cfg_type is retained.
-+ * en_compile and en_opt_conf are mutually exclusive. One of these can be
-+ * accomodated.
-+ *
-+ *---------------------------------------------------------------------------*/
-+int p_set_device_cfg_type(DEVICE_CFG_T *p_dev_cfg,
-+ CFG_TYPE_T cfg_type)
-+{
-+ int ret_val = 0;
-+
-+ if(p_dev_cfg->cfg_type == en_raw)
-+ p_dev_cfg->cfg_type = cfg_type;
-+ else if((cfg_type == en_vlynq) || (p_dev_cfg->cfg_type == cfg_type))
-+ ;
-+ else
-+ {
-+ dbgPrint("Device %s has been %s which overrides %s.\n",
-+ p_dev_cfg->device_name,
-+ p_get_cfg_type_name_for_en(p_dev_cfg->cfg_type),
-+ p_get_cfg_type_name_for_en(cfg_type));
-+ ret_val = -1;
-+ }
-+
-+ return(ret_val);
-+}
-+
-+/*------------------------------------------------------------------------
-+ * Add the config str into the repository. The cfg type indicates
-+ * whether the device has been configured statically, from options.conf or
-+ * by vlynq enumeration.
-+ *------------------------------------------------------------------------*/
-+int psp_config_add(char *key, void *p_cfg_str, unsigned int cfg_len,
-+ CFG_TYPE_T cfg_type)
-+{
-+ int ret_val = -1;
-+ DEVICE_CFG_T *p_dev_cfg = NULL;
-+ DEV_INSTANCE_CFG_DATA_T *p_dev_inst_data = NULL;
-+
-+ if(p_cfg_str == NULL || key == NULL)
-+ {
-+ dbgPrint("Null input pointer(s).\n");
-+ }
-+ /* check if there exist a dev_cfg for the given key, if not,
-+ then create one and add it to the device list. */
-+ else if(((p_dev_cfg = p_get_dev_cfg(key)) == NULL) &&
-+ (((p_dev_cfg = p_create_dev_cfg(key)) == NULL) ||
-+ p_add_dev_cfg_to_list(&g_device_cfg_list, p_dev_cfg) != 0))
-+ {
-+ dbgPrint("Failed to allocate mem or add dev cfg for %s.\n", key);
-+ }
-+ /* make sure that we can add this cfg type to the repository */
-+ else if(p_set_device_cfg_type(p_dev_cfg, cfg_type) == -1)
-+ {
-+ dbgPrint("Ignoring \"%s\" for device \"%s\".\n",
-+ p_get_cfg_type_name_for_en(cfg_type),
-+ p_dev_cfg->device_name);
-+ }
-+ else if((p_dev_inst_data = os_malloc(sizeof(DEV_INSTANCE_CFG_DATA_T)))== NULL)
-+ {
-+ dbgPrint("Failed to allocate memory for DEV_INSTANCE_CFG_DATA_T.\n");
-+ }
-+ else if((p_dev_inst_data->data = os_malloc(cfg_len) + 1) == NULL)
-+ {
-+ dbgPrint("Failed to allocate memory for the config data.\n");
-+ }
-+ else
-+ {
-+ p_dev_inst_data->next = NULL;
-+
-+ if(cfg_type == en_opt_conf || cfg_type == en_compile)
-+ psp_config_strcpy(p_dev_inst_data->locale, "dev on chip ");
-+ else if(cfg_type == en_vlynq)
-+ psp_config_strcpy(p_dev_inst_data->locale, "dev on vlynq");
-+ else
-+ psp_config_strcpy(p_dev_inst_data->locale, "dev locale ?");
-+
-+ psp_config_memcpy(p_dev_inst_data->data, p_cfg_str, cfg_len);
-+ p_dev_inst_data->data_size = cfg_len;
-+ *(p_dev_inst_data->data + cfg_len) = '\0';
-+
-+ ret_val = p_add_instance_cfg_data(p_dev_cfg, p_dev_inst_data);
-+ }
-+
-+ return(ret_val);
-+}
-+
-+/*-------------------------------------------------------------
-+ * Get the total number of device instances in the repository
-+ *------------------------------------------------------------*/
-+int psp_config_get_num_keys(void)
-+{
-+ return(g_device_cfg_list.count);
-+}
-+
-+
-+/*--------------------------------------------------------------------
-+ * Get the device configuration info from the repository.
-+ *-------------------------------------------------------------------*/
-+int psp_config_get(char *key, int instance, char **cfg_data_out)
-+{
-+ int ret_val = -1;
-+ DEVICE_CFG_T *p_dev_cfg = NULL;
-+ *cfg_data_out = NULL;
-+
-+ if(key == NULL && cfg_data_out == NULL)
-+ {
-+ dbgPrint("Key has a NULL value.\n");
-+ }
-+ else if((p_dev_cfg = p_get_dev_cfg(key)) == NULL)
-+ {
-+ dbgPrint("cfg information for %s could not be found.\n", key);
-+ }
-+ else if(p_dev_cfg->count)
-+ {
-+ DEV_INSTANCE_CFG_DATA_T *p_dev_inst_data =
-+ p_dev_cfg->dev_inst_list_begin;
-+ int index = 0;
-+ for(index = 0;
-+ index != instance && index < p_dev_cfg->count;
-+ index++)
-+ {
-+ p_dev_inst_data = p_dev_inst_data->next;
-+ }
-+
-+ if(p_dev_inst_data != NULL && p_dev_inst_data->data != NULL)
-+ {
-+ *cfg_data_out = p_dev_inst_data->data;
-+ ret_val = p_dev_inst_data->data_size;
-+ }
-+ }
-+
-+ return (ret_val);
-+}
-+
-+/*----------------------------------------------------------------
-+ * Returns the number of instances found in the repository for the
-+ * specified key.
-+ *---------------------------------------------------------------*/
-+int psp_config_get_num_instances(char *key)
-+{
-+ int ret_val = 0;
-+ DEVICE_CFG_T *p_dev_cfg = NULL;
-+
-+ if(key == NULL)
-+ {
-+ dbgPrint("Key has a NULL value.\n");
-+ }
-+ else if((p_dev_cfg = p_get_dev_cfg(key)) == NULL)
-+ {
-+ dbgPrint("cfg information for %s could not be found.\n", key);
-+ }
-+ else
-+ {
-+ ret_val = p_dev_cfg->count;
-+ }
-+
-+ return (ret_val);
-+}
-+
-+/*------------------------------------------------------------------
-+ * Dump the configuration repository.
-+ * Caution: DO NOT USE THIS FOR ANY NON NBU specified config format.
-+ *-----------------------------------------------------------------*/
-+void psp_config_print(char *key)
-+{
-+ DEVICE_CFG_T *p_dev_cfg = NULL;
-+
-+ if(key == NULL)
-+ {
-+ dbgPrint("Key has a NULL value.\n");
-+ }
-+ else if((p_dev_cfg = p_get_dev_cfg(key)) == NULL)
-+ {
-+ dbgPrint("cfg information for %s could not be found.\n", key);
-+ }
-+ else if(p_dev_cfg && p_dev_cfg->count)
-+ {
-+ DEV_INSTANCE_CFG_DATA_T *p_dev_inst_data;
-+
-+ p_dev_inst_data = p_dev_cfg->dev_inst_list_begin;
-+
-+ do
-+ {
-+ dbgPrint("%s : %s\n", p_dev_inst_data->locale,
-+ p_dev_inst_data->data);
-+ p_dev_inst_data = p_dev_inst_data->next;
-+
-+ } while(p_dev_inst_data);
-+ }
-+ else
-+ {
-+ dbgPrint("Nothing was found for %s.\n", key);
-+ }
-+}
-+
-+void dump_device_cfg_pool(void)
-+{
-+ DEVICE_CFG_T *p_dev_cfg = g_device_cfg_list.device_cfg_begin;
-+
-+ if(p_dev_cfg != NULL && g_device_cfg_list.count)
-+ {
-+ int index=0;
-+
-+ for(index=0; index < g_device_cfg_list.count; index++)
-+ {
-+ psp_config_print(p_dev_cfg->device_name);
-+ p_dev_cfg = p_dev_cfg->next;
-+ }
-+ }
-+ else
-+ {
-+ dbgPrint("repository is empty.\n");
-+ }
-+}
-+
-+void psp_config_init(void)
-+{
-+ p_init_device_cfg_list();
-+}
-+
-+void psp_config_cleanup()
-+{
-+ int dev_count = 0;
-+ int inst_count = 0;
-+ DEVICE_CFG_T *p = g_device_cfg_list.device_cfg_begin;
-+ DEV_INSTANCE_CFG_DATA_T *q = NULL;
-+
-+ for(dev_count = 0; dev_count < g_device_cfg_list.count; dev_count++)
-+ {
-+ DEVICE_CFG_T *p_temp = NULL;
-+ if(p) q = p->dev_inst_list_begin;
-+
-+ for(inst_count = 0; inst_count < p->count && q != NULL; inst_count++)
-+ {
-+ DEV_INSTANCE_CFG_DATA_T *q_temp = q;
-+ q_temp = q->next;
-+ kfree(q->data);
-+ kfree(q);
-+ q = q_temp;
-+ }
-+
-+ p_temp = p->next;
-+ kfree(p);
-+ p = p_temp;
-+ }
-+}
-diff -urN linux.old/drivers/net/avalanche_cpmac/psp_config_mgr.h linux.dev/drivers/net/avalanche_cpmac/psp_config_mgr.h
---- linux.old/drivers/net/avalanche_cpmac/psp_config_mgr.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/psp_config_mgr.h 2005-07-12 02:48:42.177573000 +0200
-@@ -0,0 +1,110 @@
-+/******************************************************************************
-+ * FILE PURPOSE: PSP Config Manager Header
-+ ******************************************************************************
-+ * FILE NAME: psp_config_mgr.h
-+ *
-+ * DESCRIPTION: Storing and retrieving the configuration based on key
-+ * A set of APIs to be used by one and sundry (including drivers and enumerator) to build
-+ * and read cfg information of the devices for an avalanche SOC.
-+ *
-+ * This set of APIs isolates the configuration management from the world and provides simple
-+ * access convinience.
-+ *
-+ * Device in this set refers to the peripherals that can be found on the SOC or on VLYNQ.
-+ * The configuration is stored in the form of string and drivers can use these APIs to get
-+ * a particular parameter value.
-+ *
-+ * The memory allocation for the pass back parameters is done by the caller.
-+ *
-+ * 0 is returned for SUCCESS or TRUE.
-+ * -1 is returned for FAILURE or FALSE.
-+ *
-+ * REVISION HISTORY:
-+ * 27 Nov 02 - PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+#ifndef __PSP_CONFIG_MGR_H__
-+#define __PSP_CONFIG_MGR_H__
-+
-+typedef enum cfg_type
-+{
-+ en_raw = 0,
-+ en_compile,
-+ en_opt_conf,
-+ en_vlynq
-+} CFG_TYPE_T;
-+
-+/* Build psp configuration */
-+void build_psp_config(void);
-+
-+/********************************************************
-+ * Access Operations.
-+ ********************************************************/
-+
-+/*-------------------------------------------------------------------------
-+ initializes the configuration repository.
-+ -------------------------------------------------------------------------*/
-+void psp_config_init(void);
-+
-+/*--------------------------------------------------------------------------
-+ Adds the configuration information into the repository. 'key' is required
-+ to be NULL terminated string. 'cfg_ptr' points to the configuration data.
-+ 'cfg_len' is the length of the data pointed to by 'cfg_ptr' in bytes.
-+ 'cfg_type' indicates the type of config information.
-+
-+ psp_config_mgr copies the 'cfg_len' bytes of data pointed to by 'cfg_ptr'
-+ into its internal repository.
-+
-+ Returns: 0 on success, -1 on failure.
-+ -------------------------------------------------------------------------*/
-+int psp_config_add(char *key, void *cfg_ptr,
-+ unsigned int cfg_len, CFG_TYPE_T cfg_type);
-+
-+
-+/* --------------------------------------------------------------------------
-+ Passes back, in "*cfg_out_val" a pointer to the config data in the repository
-+ for the specified 'key' and 'instance'. It returns the size of the config
-+ info
-+
-+ psp_config_mgr passes back a pointer in '*cfg_out_val' which refers to
-+ some location in its internal repository. It is strongly recommended that
-+ if the user intends to modify the contents of the config info for reasons
-+ whatsoever, then, user should allocate memory of size returned by this
-+ routine and copy the contents from '*cfg_out_val'.
-+
-+ Any, modification carried out on the repository would lead to un-expected
-+ results.
-+
-+ Returns: 0 or more for the size of config info, -1 on error.
-+ --------------------------------------------------------------------------*/
-+int psp_config_get(char *key, int instance, char **cfg_out_val);
-+
-+
-+/*--------------------------------------------------------------------------
-+ Get the number of keys that have been added in the repository so far.
-+
-+ Returns: 0 or more for the num of keys, -1 on error.
-+ -------------------------------------------------------------------------*/
-+int psp_config_get_num_keys(void);
-+
-+
-+/*--------------------------------------------------------------------------
-+ Get the number of instances that are present in the repository for the
-+ given 'key'.
-+
-+ Returns: 0 or more for the num of instances, -1 on error.
-+ -------------------------------------------------------------------------*/
-+int psp_config_get_num_instances(char *key);
-+
-+
-+/*--------------------------------------------------------------------------
-+ Prints the config data for all instances associated with the specified
-+ 'key'.
-+ -------------------------------------------------------------------------*/
-+void psp_config_print(char *key);
-+
-+void dump_device_cfg_pool(void);
-+
-+#endif /* __PSP_CONFIG_MGR_H__ */
-diff -urN linux.old/drivers/net/avalanche_cpmac/psp_config_parse.c linux.dev/drivers/net/avalanche_cpmac/psp_config_parse.c
---- linux.old/drivers/net/avalanche_cpmac/psp_config_parse.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/psp_config_parse.c 2005-07-12 02:48:42.178573000 +0200
-@@ -0,0 +1,362 @@
-+/******************************************************************************
-+ * FILE PURPOSE: PSP Config Manager - Parse API Source
-+ ******************************************************************************
-+ * FILE NAME: psp_config_parse.c
-+ *
-+ * DESCRIPTION: These APIs should be used only for scanvenging parameters which
-+ * are stored in the following format.
-+ *
-+ * str[] = "module(id=[module], k1=v1, k2=[k3=v3, k4=v4], k5=v5)"
-+ *
-+ * REVISION HISTORY:
-+ * 27 Nov 02 - PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+//#include <stdio.h>
-+#include <linux/stddef.h>
-+
-+/*--------------------------------------------------
-+ * MACROS.
-+ *-------------------------------------------------*/
-+#define my_isdigit(c) (c >= '0' && c <= '9')
-+#define my_isoct(c) (c >= '0' && c <= '7')
-+#define my_xtod(c) ((c) <= '9' ? (c) - '0' : (c) - 'a' + 10)
-+#define my_ifupper(c) (c >= 'A' && c <= 'F')
-+#define XTOD(c) ((c) - 'A' + 10)
-+#define my_ishex(c) ((c >= 'a' && c <='f') || (c >= 'A' && c<='F') || my_isdigit(c) )
-+
-+/*---------------------------------------------------
-+ * Local Functions.
-+ *--------------------------------------------------*/
-+static int p_get_substr_from_str(char *p_in_str, char begin_delimiter,
-+ char end_delimiter, int pair_flag,
-+ char **p_out_str);
-+static int p_get_u_int_from_str(char *p_in_str, char begin_delimiter,
-+ char end_delimiter, unsigned long *out_val);
-+
-+/*---------------------------------------------------
-+ * Return pointer to first instance of the char.
-+ *--------------------------------------------------*/
-+static char* psp_config_strchr(char *str, char chr)
-+{
-+ while(*str)
-+ {
-+ if(*str == chr)
-+ break;
-+ str++;
-+ }
-+
-+ return((*str) ? str : NULL);
-+}
-+
-+/*------------------------------------------------------------------------
-+ * Convert the string upto delimiter to unsigned long.
-+ *-----------------------------------------------------------------------*/
-+unsigned long my_atoul(char *p, char end_delimiter, unsigned long *out_val)
-+{
-+ unsigned long n;
-+ int c;
-+
-+ /* check the for null input */
-+ if (!p)
-+ return -1;
-+
-+ c = *p;
-+
-+ /* pass through the leading spaces */
-+ if (!my_isdigit(c))
-+ {
-+ while ( c == ' ')
-+ c = *++p;
-+
-+ }
-+
-+ if (c == '0')
-+ {
-+ if(*(p + 1) == 'x' || *(p+1) == 'X' )
-+ {
-+ /* string is in hex format */
-+
-+ p += 2;
-+ c = *p;
-+
-+ if(my_ishex(c))
-+ {
-+ if(my_ifupper(c))
-+ n = XTOD(c);
-+ else
-+ n = my_xtod(c);
-+ }
-+ else
-+ return -1; /* invalid hex string format */
-+
-+ while ((c = *++p) && my_ishex(c))
-+ {
-+ n *= 16;
-+ if(my_ifupper(c))
-+ n += XTOD(c);
-+ else
-+ n += my_xtod(c);
-+ }
-+ }
-+ else
-+ {
-+ /* string is in octal format */
-+
-+ if( my_isoct(c) )
-+ n = c - '0';
-+ else
-+ return -1; /* invalid octal string format */
-+
-+ while ((c = *++p) && my_isoct(c))
-+ {
-+ n *= 8;
-+ n += c - '0';
-+ }
-+ }
-+
-+ }
-+ else
-+ {
-+ /* string is in decimal format */
-+
-+ if( my_isdigit(c) )
-+ n = c - '0';
-+ else
-+ return -1; /* invalid decimal string format */
-+
-+ while ((c = *++p) && my_isdigit(c))
-+ {
-+ n *= 10;
-+ n += c - '0';
-+ }
-+ }
-+
-+ /* move through the trailing spaces */
-+ while(*p == ' ')
-+ p++;
-+
-+ if(*p == end_delimiter)
-+ {
-+ *out_val = n;
-+ return 0;
-+ }
-+
-+ else
-+ return -1; /* invalid string format */
-+}
-+
-+/*---------------------------------------------------------------------------------
-+ * Gets the substring de-limited by the 'begin_delimiter' and 'end_delimiter'.
-+ * and returns the size of the substring.
-+ *
-+ * Parses the NULL terminated p_in_str for a character array delimited by
-+ * begin_delimiter and end_delimiter, passes back the pointer to the character
-+ * array in ' *p_out_str '. The passed pointer ' *p_out_str ' should point to
-+ * the location next (byte) to the begin_delimiter. The function routine returns
-+ * the number of characters excluding the begin_delimiter and end_delimiter,
-+ * found in the array delimited by the said delimiters.
-+ *
-+ * If the pair_flag is set to 1, then, number of begin_delimiter and end_delimiter
-+ * found in the parsing should match (equal) and this routine passes back the
-+ * pointer to the character array, starting at a location next (byte) to the
-+ * first begin_delimiter, inclusive of all intermediate matching delimiter
-+ * characters found between outer delimiters. If the pair flag is set and if
-+ * begin_delimiter and end_delimiter happens to be same, then error (-1) is
-+ * returned.
-+ *
-+ * Return: 0 or more to indicate the size of the substring, -1 on error.
-+ *-------------------------------------------------------------------------------*/
-+int p_get_substr_from_str(char *p_in_str, char begin_delimiter,
-+ char end_delimiter, int pair_flag,
-+ char **p_out_str)
-+{
-+ int cnt,pos;
-+
-+ if(pair_flag && begin_delimiter == end_delimiter)
-+ return -1;
-+
-+ if((p_in_str = psp_config_strchr(p_in_str, begin_delimiter)) == 0)
-+ return -1; /* no start delimiter found */
-+
-+ p_in_str++;
-+ *p_out_str = p_in_str;
-+
-+ for(pos = 0,cnt =1; cnt && p_in_str[pos] ; pos++)
-+ {
-+ if(p_in_str[pos] == end_delimiter)
-+ {
-+ if(pair_flag == 0)
-+ return pos;
-+
-+ cnt--;
-+ }
-+ else if(p_in_str[pos] == begin_delimiter)
-+ cnt++;
-+ else
-+ ; /* We do nothing */
-+
-+ }
-+
-+ if( cnt == 0)
-+ return pos - 1;
-+ else
-+ return -1; /* no corresponding end delimiter found */
-+}
-+
-+/*--------------------------------------------------------------------------
-+ * Parses the NULL terminated p_in_str for unsigned long value delimited by
-+ * begin_delimiter and end_delimiter, passes back the found in ' *out_val '.
-+ * The function routine returns 0 on success and returns -1 on failure.
-+ * The first instance of the de-limiter should be accounted for the parsing.
-+ *
-+ * The base for unsigned value would 10, octal and hex. The value passed back
-+ * would be of the base 10. Spaces at the begining of the byte array are valid
-+ * and should be ingnored in the calculation of the value. Space character in
-+ * the middle of the byte array or any character other than the valid ones
-+ * (based on base type) should return error. The octal value begins with '0',
-+ * the hex value begins with "0x" or "0X", the base value can begin with
-+ * '1' to '9'.
-+ *
-+ * Returns: 0 on success, -1 on failure.
-+ *-------------------------------------------------------------------------*/
-+int p_get_u_int_from_str(char *p_in_str, char begin_delimiter,
-+ char end_delimiter, unsigned long *out_val)
-+{
-+ char *start;
-+ unsigned long num;
-+
-+ num = p_get_substr_from_str(p_in_str, begin_delimiter, end_delimiter,
-+ 0, &start);
-+
-+ if(num == (unsigned long)-1)
-+ return -1;
-+
-+ return my_atoul(start,end_delimiter,out_val);
-+}
-+
-+/*--------------------------------------------------------------------------
-+ * Finds the first occurrence of the substring p_find_str in the string
-+ * p_in_str.
-+ *-------------------------------------------------------------------------*/
-+char *my_strstr(char *p_in_str, const char *p_find_str)
-+{
-+ char *p = (char *)p_find_str;
-+ char *ret = NULL;
-+
-+ while(*p_in_str)
-+ {
-+ if(!(*p))
-+ return (ret);
-+ else if(*p_in_str == *p)
-+ {
-+ if(!ret) ret = p_in_str;
-+ p++;
-+ p_in_str++;
-+ }
-+ else if(ret)
-+ {
-+ p = (char *)p_find_str;
-+ p_in_str = ret + 1;
-+ ret = NULL;
-+ }
-+ else
-+ p_in_str++;
-+ }
-+
-+ if(*p_in_str != *p) ret = NULL;
-+
-+ return (ret);
-+
-+}
-+
-+/*------------------------------------------------------------------------------
-+ * Gets the value of the config param in the unsigned int format. The value is
-+ * stored in the following format in the string.
-+ * str[] = "module(id=[module], k1=v1, k2=[k3=v3, k4=v4], k5=v5)"
-+ *-----------------------------------------------------------------------------*/
-+int psp_config_get_param_uint(char *p_in_str, const char *param, unsigned int *out_val)
-+{
-+ int ret_val = -1;
-+ char *p_strstr;
-+
-+ if(!p_in_str || !param || !out_val)
-+ {
-+ ;
-+ }
-+ else if((p_strstr = my_strstr(p_in_str, param)) == NULL)
-+ {
-+ ;
-+ }
-+ else if(p_get_u_int_from_str(p_strstr, '=', ',', (unsigned long *)out_val) == 0)
-+ {
-+ ret_val = 0;
-+ }
-+ else if(p_get_u_int_from_str(p_strstr, '=', ']', (unsigned long*)out_val) == 0)
-+ {
-+ ret_val = 0;
-+ }
-+ else if(p_get_u_int_from_str(p_strstr, '=', ')', (unsigned long*)out_val) == 0)
-+ {
-+ ret_val = 0;
-+ }
-+ else
-+ {
-+ /* we failed */
-+ }
-+
-+ return (ret_val);
-+}
-+
-+/*------------------------------------------------------------------------------
-+ * Gets the value of the config param in the Non NULL terminated format. The value
-+ * is stored in the following format in the string.
-+ * str[] = "module(id=[module], k1=v1, k2=[k3=v3, k4=v4], k5=v5)"
-+ *-----------------------------------------------------------------------------*/
-+int psp_config_get_param_string(char *p_in_str, const char *param, char **out_val)
-+{
-+ int ret_val = -1;
-+ char *p_strstr;
-+
-+ if(!p_in_str || !param || !(out_val))
-+ ;
-+ else if((p_strstr = my_strstr(p_in_str, param)) == NULL)
-+ {
-+ ;
-+ }
-+ else if((ret_val = p_get_substr_from_str(p_strstr, '[', ']', 1, out_val)) == -1)
-+ {
-+ ;
-+ }
-+ else
-+ {
-+ ; /* we got the value */
-+ }
-+
-+ return (ret_val);
-+}
-+
-+#ifdef PSP_CONFIG_MGR_DEBUG_TEST
-+main()
-+{
-+ unsigned long num =999;
-+ int ret = 0;
-+ char *val1 = NULL;
-+ char val[30];
-+ char str1[] = "cpmac(id=[cpmac], k0=[a1=[a2=[test], a3=2], k1=100, k2=[k3=300, k4=200], k7=722)";
-+
-+ psp_config_get_param_uint(str1, "k7", &num);
-+ printf("%u.\n", num);
-+ ret = psp_config_get_param_string(str1, "a1", &val1);
-+ if(ret >= 0) { printf("%d.\n", ret); strncpy(val, val1, ret); val[ret] = '\0';}
-+
-+ printf("val = \"%s\", and size = %d \n", val, ret);
-+
-+ if(val[ret]) ; else printf("jeee.\n");
-+}
-+#endif /* PSP_CONFIG_MGR_DEBUG_TEST */
-+
-+
-+
-diff -urN linux.old/drivers/net/avalanche_cpmac/psp_config_parse.h linux.dev/drivers/net/avalanche_cpmac/psp_config_parse.h
---- linux.old/drivers/net/avalanche_cpmac/psp_config_parse.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/psp_config_parse.h 2005-07-12 02:48:42.178573000 +0200
-@@ -0,0 +1,32 @@
-+/******************************************************************************
-+ * FILE PURPOSE: PSP Config Manager - Parse API Header
-+ ******************************************************************************
-+ * FILE NAME: psp_config_parse.h
-+ *
-+ * DESCRIPTION: Parsing for params from string available in the NBU format.
-+ * These APIs should be used only for scanvenging parameters which
-+ * are stored in the following format.
-+ *
-+ * str[] = "module(id=[module], k1=v1, k2=[k3=v3, k4=v4], k5=v5)"
-+ *
-+ * REVISION HISTORY:
-+ * 27 Nov 02 - PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+#ifndef __PSP_CONFIG_PARSER_H__
-+#define __PSP_CONFIG_PARSER_H__
-+
-+/*------------------------------------------------------------------
-+ * These APIs should be used only for scanvenging parameters which
-+ * are stored in the following format.
-+ *
-+ * str[] = "module(id=[module], k1=v1, k2=[k3=v3, k4=v4], k5=v5)"
-+ *-----------------------------------------------------------------*/
-+int psp_config_get_param_uint(char *p_in_str, const char *param,
-+ unsigned int *out_val);
-+int psp_config_get_param_string(char *p_in_str, const char *param,
-+ char **out_val);
-+
-+#endif /* __PSP_CONFIG_PARSER_H__ */
-diff -urN linux.old/drivers/net/avalanche_cpmac/psp_config_util.c linux.dev/drivers/net/avalanche_cpmac/psp_config_util.c
---- linux.old/drivers/net/avalanche_cpmac/psp_config_util.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/psp_config_util.c 2005-07-12 02:48:42.178573000 +0200
-@@ -0,0 +1,106 @@
-+/******************************************************************************
-+ * FILE PURPOSE: PSP Config Manager - Utilities API Source
-+ ******************************************************************************
-+ * FILE NAME: psp_config_util.c
-+ *
-+ * DESCRIPTION: These APIs provide the standard "C" string interfaces.
-+ * Provided here to reduce dependencies on the standard libraries
-+ * and for cases where psp_config would required to run before
-+ * the whole system is loaded or outside the scope of the OS.
-+ *
-+ * REVISION HISTORY:
-+ * 27 Nov 02 - PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+//#include <stdio.h>
-+#include "psp_config_util.h"
-+#include <linux/stddef.h>
-+
-+/*---------------------------------------------
-+ * strlen.
-+ *-------------------------------------------*/
-+int psp_config_strlen(char *p)
-+{
-+ char *p_orig = p;
-+ while(*p)
-+ p++;
-+ return(p - p_orig);
-+}
-+
-+/*--------------------------------------------
-+ * strcmp.
-+ *-------------------------------------------*/
-+int psp_config_strcmp(char *s1, char *s2)
-+{
-+ while(*s1 && *s2)
-+ {
-+ if(*s1 != *s2)
-+ break;
-+ s1++;
-+ s2++;
-+ }
-+
-+ return(*s1 - *s2);
-+}
-+
-+/*--------------------------------------------
-+ * strcpy.
-+ *------------------------------------------*/
-+char* psp_config_strcpy(char *dest, char *src)
-+{
-+ char *dest_orig = dest;
-+
-+ while(*src)
-+ {
-+ *dest++ = *src++;
-+ }
-+
-+ *dest = '\0';
-+
-+ return(dest_orig);
-+}
-+
-+/*----------------------------------------------
-+ * psp_config_memcpy.
-+ *--------------------------------------------*/
-+void* psp_config_memcpy(void* dest, void* src, unsigned int n)
-+{
-+ void *dest_orig = dest;
-+
-+ while(n)
-+ {
-+ *(char *)dest++ = *(char *)src++;
-+ n--;
-+ }
-+
-+ return (dest_orig);
-+}
-+
-+/*---------------------------------------------------
-+ * Return pointer to first instance of the char.
-+ *--------------------------------------------------*/
-+char* psp_config_strchr(char *str, char chr)
-+{
-+ while(*str)
-+ {
-+ if(*str == chr)
-+ break;
-+ str++;
-+ }
-+
-+ return((*str) ? str : NULL);
-+}
-+
-+#ifdef PSP_CONFIG_MGR_DEBUG_TEST
-+
-+int main( )
-+{
-+ char s[] = "hello ";
-+ printf("%d.\n", psp_config_strlen("hello\n"));
-+ printf("%d.\n", psp_config_strcmp("hells", "hellq"));
-+ printf("%s %s.\n", psp_config_strcpy(s + 6, "test1"), s);
-+}
-+
-+#endif /* PSP_CONFIG_MGR_DEBUG_TEST */
-diff -urN linux.old/drivers/net/avalanche_cpmac/psp_config_util.h linux.dev/drivers/net/avalanche_cpmac/psp_config_util.h
---- linux.old/drivers/net/avalanche_cpmac/psp_config_util.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/psp_config_util.h 2005-07-12 02:48:42.179573000 +0200
-@@ -0,0 +1,26 @@
-+/******************************************************************************
-+ * FILE PURPOSE: PSP Config Manager - Utilities API Header
-+ ******************************************************************************
-+ * FILE NAME: psp_config_util.h
-+ *
-+ * DESCRIPTION: These APIs provide the standard "C" string interfaces.
-+ * Provided here to reduce dependencies on the standard libraries
-+ * and for cases where psp_config would required to run before
-+ * the whole system is loaded or outside the scope of the OS.
-+ *
-+ * REVISION HISTORY:
-+ * 27 Nov 02 - PSP TII
-+ *
-+ * (C) Copyright 2002, Texas Instruments, Inc
-+ *******************************************************************************/
-+
-+#ifndef __PSP_CONFIG_UTIL_H__
-+#define __PSP_CONFIG_UTIL_H__
-+
-+extern int psp_config_strlen(char*);
-+extern int psp_config_strcmp(char*, char*);
-+extern char* psp_config_strcpy(char*, char*);
-+extern void* psp_config_memcpy(void*, void*, unsigned int n);
-+extern char* psp_config_strchr(char*, char);
-+
-+#endif /* __PSP_CONFIG_UTIL_H__ */
-diff -urN linux.old/drivers/net/avalanche_cpmac/readme.txt linux.dev/drivers/net/avalanche_cpmac/readme.txt
---- linux.old/drivers/net/avalanche_cpmac/readme.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/avalanche_cpmac/readme.txt 2005-07-12 02:48:42.179573000 +0200
-@@ -0,0 +1,545 @@
-+23 August 2004 CPMAC 1.7.8 (NSP Performance Team Release)
-+
-+CC Labels: REL_20040823_HALdallas_cpmac_01.07.08
-+
-+New features: Key "MacAddr" can now be used to set the Mac Address after Open.
-+
-+ unsigned char MacAddr[6];
-+
-+ // Set Mac Address to "00.B0.D0.10.80.C1"
-+ MacAddr[0] = 0x00;
-+ MacAddr[1] = 0xB0;
-+ MacAddr[2] = 0xD0;
-+ MacAddr[3] = 0x10;
-+ MacAddr[4] = 0x80;
-+ MacAddr[5] = 0xC1;
-+
-+ HalFunc->Control(HalDev, "MacAddr", hcSet, &MacAddr);
-+
-+Bug fixes: in Send(), Threshold is not checked if Tx Ints are re-enabled.
-+
-+Modules affected: hcpmac.c, hcpmac.h, cppi_cpmac.c
-+
-+22 June 2004 CPMAC 1.7.6 (NSP Performance Team Release)
-+
-+CC Labels: REL_20040622_HALdallas_cpmac_01.07.06
-+
-+New features: Key "TxIntDisable" used to disable Tx Interrupts. If it is set, then Tx Interrupts will be processed on Send() controlled by Tx ServiceMax Setting.
-+
-+ int On = 1;
-+ HalFunc->Control(HalDev, "TxIntDisable", "Set", &On);
-+
-+Bug fixes: NTR
-+
-+10 June 2004 CPMAC 1.7.5 (external release)
-+
-+CC Labels: REL_20040610_HALdallas_cpmac_01.07.05
-+
-+New features: NTR
-+
-+Bug fixes: Fixed an issue with calculation for the multicast hash.
-+
-+27 May 2004 CPSAR 1.7.4, CPMAC 1.7.4 (external release)
-+
-+CC Labels: REL_20040527_HALdallas_cpsar_01.07.04
-+ REL_20040527_HALdallas_cpmac_01.07.04
-+
-+New features: NTR
-+
-+Bug fixes: A flaw was fixed in the critical sectioning of the CPPI file, affecting both
-+ the MAC and the SAR releases. This flaw was detected on Titan PSP 4.7 BFT2.
-+
-+05 May 2004 CPSAR 1.7.3, CPMAC 1.7.3 (external release)
-+
-+CC Labels: REL_20040505_HALdallas_cpsar_01.07.03
-+ REL_20040505_HALdallas_cpmac_01.07.03
-+
-+New features: NTR
-+
-+Bug fixes: 1) Firmware has been updated to fix a problem with Host OAM mode operation.
-+ 2) Cache macros have been fixed.
-+
-+Notes: This release contains all performance enhancements currently available for CPHAL 1.x.
-+
-+19 April 2004 CPSAR 1.7.2, CPMAC 1.7.2 (external release)
-+
-+CC Labels: REL_20040419_HALdallas_cpsar_01.07.02
-+ REL_20040419_HALdallas_cpmac_01.07.02
-+
-+New features: NTR
-+
-+Bug fixes: Fixes merge problem in 1.7.1.
-+
-+Notes: This is a branch release which contains only a subset of the performance improvements.
-+ The remaining performance improvements are stiill being qualified at this time.
-+
-+1 April 2004 CPSAR 1.7.1, CPMAC 1.7.1 (external release)
-+
-+NOTICE: DO NOT USE 1.7.1. It has a known problem (see 1.7.2 notes)
-+
-+CC Labels: REL_20040401_HALdallas_cpsar_01.07.01
-+ REL_20040401_HALdallas_cpmac_01.07.01
-+
-+New features: Performance improvement in CPPI layer, affecting both CPSAR and CPMAC.
-+
-+Bug fixes: NTR
-+
-+17 Februrary 2004 CPSAR 1.7.0 (external release)
-+
-+CC Labels: REL_20040217_HALdallas_cpsar_01.07.00
-+
-+New features: Added support for "TxFlush" feature. This allows the upper
-+ layer to flush all or part of a given Tx queue for a given
-+ channel. This is to be used during call setup for a voice
-+ connection.
-+
-+30 January 2004 CPMAC 1.7.0 (external release)
-+
-+CC Labels: REL_20040130_HALdallas_cpmac_01.07.00
-+
-+Bug fixes: CPMDIO - When in manual negotiate mode and linked, dropping link would move into NWAY state rather than manual state.
-+ CPMDIO - Extraneous debug message corrected
-+New features: CPMDIO - Support for AutoMdix usage added.
-+
-+25 September 2003 CPSAR 1.6.6 (external release)
-+
-+CC Labels: REL_20030925_HALdallas_cpsar_01.06.06
-+
-+Bug fixes: PDSP firmware has been updated to fix the OAM padding problem. It previously
-+ wrote pad bytes into a reserved field of the OAM cell. There is a small
-+ change to the CPSAR configuration code which corresponds to the PDSP spec
-+ change.
-+
-+New features: NTR
-+
-+09 September 2003 CPMAC 1.6.6 (external release)
-+
-+CC Labels: REL_20030909_HALdallas_cpmac_01.06.06
-+
-+Bug fixes: CPMAC : When _CPMDIO_NOPHY is set, Cpmac COntrol is set to Full Duplex
-+ Bridge loopback test does not show a problem using 1.6.5 if packet rate is
-+ below 50,000 pbs. Now testing with a 100% send from Ixia.
-+
-+New features: NTR
-+
-+05 August 2003 CPHAL 1.6.5 (external release)
-+
-+CC Labels: REL_20030805_HALdallas_cpmac_01.06.05
-+
-+Bug fixes: NTR
-+
-+New features: CPMAC : Added support for CPMAC modules that do not have a Phy connected.
-+ The CPMAC is informed of this by the MdioConnect option
-+ _CPMDIO_NOPHY. This is the only driver change needed to
-+ receive and transmit packets through the Marvel switch.
-+ Note In this mode Link status will reported linked at 100/FD to
-+ PhyNum 0xFFFFFFFF.
-+
-+ ALL: Cleaned up some Vlynq support logic.
-+
-+16 July 2003 CPSAR 1.6.3 (external release), no CPMAC release
-+
-+CC Labels: REL_20030716_HALdallas_cpsar_01.06.03
-+
-+Bug fixes: 1) Changed default value of CPCS_UU from 0x5aa5 to 0. The old default value caused
-+ problems with Cisco routers.
-+
-+New features: NTR
-+
-+Known issues not addressed in this release: NTR.
-+
-+01 July 2003 CPHAL 1.6.2 (external release)
-+
-+CC Labels: REL_20030701_HALdallas_cpmac_01.06.02
-+ REL_20030701_HALdallas_cpsar_01.06.02
-+
-+Bug fixes: 1) A previous firmware upgrade caused firmware OAM loopback cells to only work on every other
-+ command. This has been fixed in the new firmware version (0.47).
-+ 2) Problem with PTI values changing on transparent mode packets has been resolved.
-+ 3) Previously, successful firmware OAM loopback cells waited 5 seconds before notifying the
-+ OS of success, rather that notifying immediately. This has been resolved in firmware.
-+ 4) PITS #148 (MAC and SAR), #149 (MAC) have been fixed.
-+
-+New features: 1) AAL5 HAL now capable of receiving unknown VCI/VPI cells on a single transparent channel.
-+ See updated HAL document (AAL5 appendix) for implementation details.
-+ 2) AAL5 HAL now allows OS to modify the OAM loopback timeout window. Previously, failed
-+ OAM loopback attempts timed out after a nominal 5 seconds (based on the SAR frequency
-+ provided by the OS). Now, the default is 5 seconds, but the OS may change the
-+ value via halControl() to any integer number of milliseconds. See updated HAL document
-+ (AAL5 appendix) for implementation details.
-+ 3) MAC (cpmdio): added loopback to Istate. Used for debug.
-+
-+Known issues not addressed in this release: NTR.
-+
-+09 June 2003 CPSAR 1.6.1 (external release), CPMAC 1.6.1 (internal release - no functional change)
-+
-+Note: This is the same set of fixes being applied to 1.6.0 that were applied to 1.5.3. The only difference
-+ between 1.6.1 and 1.5.4 is that 1.6.1 has the TurboDSL fix.
-+
-+CC Labels: REL_20030609_HALdallas_cpmac_01.06.01
-+ REL_20030609_HALdallas_cpsar_01.06.01
-+
-+Bug fixes: 1) Bug in OamLoopbackConfig fixed.
-+ 2) New firmware version (.43) to fix Westell issue of dropped downstream packets in
-+ presence of OAM traffic when operating at or near line rate.
-+
-+New features: NTR.
-+
-+09 June 2003 CPSAR 1.5.4 (external release), CPMAC 1.5.4 (internal release - no functional change)
-+
-+Note: This is a branch release from 1.5.3. This does not contain anything from 1.6.0. The CPMAC is
-+only being labeled to keep the release flow consistent.
-+
-+CC Labels: REL_20030609_HALdallas_cpmac_01.05.04
-+ REL_20030609_HALdallas_cpsar_01.05.04
-+
-+Bug fixes: 1) Bug in OamLoopbackConfig fixed.
-+ 2) New firmware version (.43) to fix Westell issue of dropped downstream packets in
-+ presence of OAM traffic when operating at or near line rate.
-+
-+New features: NTR.
-+
-+30 May 2003 CPSAR 1.6.0 (external release), CPMAC 1.6.0 (internal release - no functional change)
-+
-+CC Labels: REL_20030530_HALdallas_cpmac_01.06.00
-+ REL_20030530_HALdallas_cpsar_01.06.00
-+
-+Bug fixes: 1) TurboDSL issue has been fixed with a software workaround in TxInt. This workaround
-+ has been verified under Adam2 ONLY at this point. Testing remains to be done on
-+ Linux and VxWorks.
-+
-+New features: NTR.
-+
-+Known issues not addressed in this release: NTR.
-+
-+30 May 2003 CPSAR 1.5.3 (external release), CPMAC 1.5.3 (internal release - no functional change)
-+
-+CC Labels: REL_20030530_HALdallas_cpmac_01.05.03
-+ REL_20030530_HALdallas_cpsar_01.05.03
-+
-+Bug fixes: NTR.
-+
-+New features: 1) AAL5 Send() has been modified to accept an ATM Header either in the first
-+ fragment by itself, or in the first fragment directly in front of payload data.
-+ The API() does not change.
-+ 2) Documentation updates throughout, reflected in latest version of CPHAL user's
-+ guide.
-+ 3) AAL5 MaxFrags default value is now 46. This is based upon the default AAL5
-+ RxBufSize of 1518 (MaxFrags = (65568/1518) + 2). IF THE OS CHOOSES A SMALLER
-+ RxBufSize, IT MUST INCREASE THE VALUE OF MaxFrags ACCORDINGLY. This is done
-+ via halControl(), prior to Open().
-+
-+Known issues not addressed in this release:
-+ 1) The Linux SAR driver is seeing an issue in which it cannot
-+ reliably send traffic simultaneously on both the high and
-+ low priority queues of a single AAL5 channel. (TurboDSL)
-+
-+23 May 2003 CPHAL 1.5.2 (external release)
-+
-+CC Labels: REL_20030523_HALdallas_cpmac_01.05.02
-+ REL_20030523_HALdallas_cpsar_01.05.02
-+
-+Bug fixes: 1) PITS #138: CPMAC flooding issue resolved.
-+ 2) PITS #142: OS may now set "MaxFrags" via Control(). This controls the
-+ maximum number of fragments expected by the CPHAL. The default value is 2 for
-+ CPMAC and 1028 for AAL5. If the OS chooses a RxBufSize that will cause more
-+ fragments than the defaults, the OS must set "MaxFrags" to a correct value
-+ ((maximum packet length / RxBufSize) + 2).
-+ 3) PITS #143: Fixed.
-+ 4) Firmware OAM bug fixed. (new firmware release in this version)
-+
-+New features: NTR.
-+
-+Known issues not addressed in this release:
-+ 1) The Linux SAR driver is seeing an issue in which it cannot
-+ reliably send traffic simultaneously on both the high and
-+ low priority queues of a single AAL5 channel. (TurboDSL)
-+
-+14 May 2003 CPHAL 1.5.1 (external release)
-+
-+CC Labels: REL_20030514_HALdallas_cpmac_01.05.01
-+ REL_20030514_HALdallas_cpsar_01.05.01
-+
-+Bug fixes: 1) PITS 132 - (CPMAC) Frames < 60 bytes and split into
-+ multi-fragments.
-+ 2) BCIL MR PSP00000353 - (CPMAC) PhyDev not free'd on halClose()
-+ 3) PITS 113 - OsSetup bug in ChannelSetup fixed.
-+ 4) Fixed AAL5 to check return values of InitTcb/InitRcb.
-+ 5) Fixed Shutdown to properly free resources in the case of a Close
-+ mode 1 followed by Shutdown. Previously, buffer and descriptor
-+ resources were left unfreed in this case.
-+
-+New features: 1) AAL5 Send() modified to be capable of accepting ATM header as first four
-+ bytes of first fragment. This allows the OS to "override" the
-+ default ATM header which is constructed from preconfigured channel
-+ parameters.
-+ 2) AAL5 Receive() modified to be capable of passing the received ATM header (4 bytes, no HEC)
-+ in the first fragment (by itself). It also passes up the OS an indication
-+ of what the received packet type was. For Host OAM and transparent mode
-+ packets, the ATM header is passed in this manner, and for other types of packets
-+ (AAL5, NULL AAL) no ATM header is passed currently.
-+
-+Known issues not addressed in this release:
-+ 1) The Linux SAR driver is seeing an issue in which it cannot
-+ reliably send traffic simultaneously on both the high and
-+ low priority queues of a single AAL5 channel.
-+
-+30 April 2003 CPHAL 1.5.0 (external release)
-+
-+CC Labels: REL_20030430_HALdallas_cpmac_01.05.00
-+ REL_20030430_HALdallas_cpsar_01.05.00
-+
-+Bug fixes: 1) Fixed AAL5 bug that rendered the low priority queue
-+ unusable.
-+ 2) Fixed a bug in AAL5's Oam Rate calculations.
-+ 3) Fixed use of "DeviceCPID" key in AAL5's halControl().
-+ 4) Fixed RxReturn logic in HAL. The HAL now can handle
-+ failing MallocRxBuffer calls when multiple fragments
-+ are being used.
-+
-+New features: 1) AAL5 Stats now available on a per queue basis.
-+ 2) AAL5 adds two new keys to halControl() for "Set" actions:
-+ RxVc_OamCh and RxVp_OamCh.
-+ 3) Shutdown() has been modified for both AAL5 and CPMAC to
-+ call Close() if the module is still in the Open state.
-+ 4) CPMAC adds the following access keys to halControl():
-+ hcPhyAccess,hcPhyNum,hcCpmacBase,hcSize,and hcCpmacSize.
-+ 5) CPHAL no longer requests an extra 15 bytes on data buffer
-+ mallocs.
-+
-+Known issues not addressed in this release:
-+ 1) The Linux SAR driver is seeing an issue in which it cannot
-+ reliably send traffic simultaneously on both the high and
-+ low priority queues of a single AAL5 channel.
-+
-+21 April 2003 CPHAL 1.4.1 (external release)
-+
-+CC Labels: REL_20030421_HALdallas_cpmac_01.04.01
-+ REL_20030421_HALdallas_cpsar_01.04.01
-+
-+Bug fixes: 1) Fixed OAM logic in SAR portion of CPHAL.
-+
-+New features: 1) OAM loopback counters exposed through halControl.
-+ 2) Host OAM Send() can now use a single channel to send
-+ OAM cells on unlimited number of VP's/VC's.
-+ 3) CPHAL now requests "SarFreq" through osControl.
-+ 4) CPHAL now calculates all OAM function rates based on
-+ "SarFreq"; function OamRateConfig removed for API.
-+ 5) New OAM function OamLoopbackConfig, used for configuring
-+ loopback functions in firmware OAM mode.
-+
-+Known issues not addressed in this release: Bug fix 1) in release 1.4
-+ (see below) does not work properly for multiple fragments.
-+
-+10 April 2003 CPHAL 1.4 (external release)
-+
-+CC Labels: REL_20030410_HALdallas_cpmac_01.04.00
-+ REL_20030410_HALdallas_cpsar_01.04.00
-+
-+This release is for SAR and MAC.
-+
-+ Bug fixes: 1) Implemented logic in HAL to re-request buffer mallocs
-+ in the case of MallocRxBuffer failing. The HAL now maintains
-+ a NeedsBuffer queue of all RCB's that are without buffers.
-+ On interrupts, or on Send(), the HAL checks to see if any
-+ RCB's are on the queue, and if so, calls MallocRxBuffer
-+ to attempt to get a new buffer and return the RCB to
-+ circulation.
-+ 2) SAR now properly returns all error codes from halOpen and
-+ halChannelSetup.
-+
-+ New features: NTR
-+
-+ Known issues not addressed in this release: NTR
-+
-+08 April 2003 CPHAL 1.3.1 (internal release - SAR only)
-+
-+ CC Labels: REL_20030408_HALdallas_cpsar_01.03.01
-+
-+ This is a SAR only release. The current CPMAC release is still 1.3.
-+
-+ Bug fixes: 1) PDSP State RAM / Scratchpad RAM is now completely cleared after reset.
-+ This resolves a stability issue.
-+
-+ New features: 1) OamMode is now a parameter in halControl(). Both "Set" and "Get"
-+ actions are available. The value may be "0" (Host OAM), or "1"
-+ (Firmware OAM).
-+
-+ Known issues not addressed in this release:
-+ 1) Appropriate action for HAL in the case of MallocRxBuffer failing. We
-+ are investigating whether the HAL should implement a needs buffer
-+ queue.
-+
-+04 April 2003 CPHAL 1.3 (external release)
-+
-+ CC Labels: REL_20030404_HALdallas_cpmac_01.03.00
-+ REL_20030404_HALdallas_cpsar_01.03.00
-+ REL_20030404_HALdallas_cpaal5_01.03.00
-+ REL_20030404_HALdallas_cpaal2_01.03.00
-+
-+ This release requires no changes for the ethernet end driver. The changes necessary
-+ for the sar driver (firmware file name changes) have already been implemented.
-+
-+ Bug fixes: 1) RxReturn now returns an error if MallocRxBuffer fails. On RxReturn error, the driver should
-+ call RxReturn again at a later time (when the malloc may succeed) in order for the CPHAL
-+ to maintain a full complement of Rx buffers. We recommend holding off making this driver
-+ change until we verify that this condition occurs.
-+
-+ New features: 1) Removed benign compiler warnings.
-+ 2) PITS 122: http://www.nbu.sc.ti.com/cgi-bin/pits/redisplay_archive?product=cphal_dev&report=122
-+ 3) Cpsar label (above) now is applied to everything
-+ beneath /cpsar.
-+ 4) PITS 14: http://www.nbu.sc.ti.com/cgi-bin/pits/redisplay_archive?product=cphal_dev&report=14
-+ Transferred to MR PSP 00000089.
-+ 5) PITS 120: http://www.nbu.sc.ti.com/cgi-bin/pits/redisplay_archive?product=cphal_dev&report=120
-+
-+ Known issues not addressed in this release:
-+ 1) PITS 102 (as relating to OamMode configuration):
-+ http://www.nbu.sc.ti.com/cgi-bin/pits/redisplay_archive?product=cphal_dev&report=102
-+ Future release will make OamMode configurable
-+ through halControl(), not on per channel basis.
-+
-+20 March 2003 CPHAL 1.2.1 (internal release)
-+
-+ CC Labels: REL_20030320_HALdallas_cpmac_01.02.01
-+ REL_20030320_HALdallas_cpsar_01.02.01
-+ REL_20030320_HALdallas_cpaal5_01.02.01
-+ REL_20030320_HALdallas_cpaal2_01.02.01
-+
-+ Bug fixes: 1. Fixed modification of buffer pointer following
-+ MallocRxBuffer in cppi.c.
-+ 2. Removed extra firmware files from /cpsar.
-+
-+ New features: NTR.
-+
-+ Known issues not addressed in this release: NTR.
-+
-+07 March 2003 CPHAL 1.2 (external release)
-+
-+ CPMAC/CPSAR feature complete release. SAR added
-+ several features including full OAM support and various
-+ other features and bug fixes to address PITS 99-106, and
-+ 114. CPMAC cleaned up details raised by India PSP
-+ team.
-+
-+29 January 2003 CPHAL RC 3.01a (external release)
-+
-+ Corrects non-static functions to be static in cppi.c.
-+
-+09 Janurary 2003 CPHAL RC 3.01 (external release)
-+
-+ PITS 88: Fixed MDIO re-connection problem (hcpmac.c)
-+ PITS 90: Corrected Rx Buffer Pointer modification (cppi.c)
-+
-+ Corrected error in cpremap.c
-+
-+20 December 2002 CPHAL RC 3 (external release)
-+
-+ Statistics support via halControl(). See Appendix A of guide.
-+ Fixed errors in ChannelTeardown/ChannelSetup CPHAL logic.
-+ Added multicast support as requested.
-+ Several new OS string functions added to OS_FUNCTIONS.
-+ "DebugLevel" configuration parameter changed to "Debug".
-+ "Stats0" changed to "StatsDump" for CPMAC.
-+
-+13 December 2002 CPHAL RC 2.03 (internal release)
-+
-+ Performance improvements.
-+ More debug statements implemented (esp AAL5).
-+ Updated makefile with "make debug" option.
-+ Hbridge performance: [debug library] 15774 tps (53% line rate)
-+ [non-debug library] 13700 tps (46%)
-+
-+10 December 2002 CPHAL Release Candidate 2.02 (internal release)
-+
-+ Much of the configuration code internal to CPMAC and AAL5 has been made common.
-+ [os]Receive API had been modified to remove OsReceiveInfo. This information is now
-+ available as third member of the FRAGLIST structure, on a per buffer basis.
-+ Successfully tested multi-fragment support on CPMAC, using 32 byte buffers.
-+ Code is now Emerald compliant - all buffer descriptors now aligned to cache-line
-+ boundaries.
-+
-+2 December 2002 CPHAL Release Candidate 2.01
-+
-+ Updates to comments in hcpmac.c, cpmdio.c, hcpmac.h
-+ Nested comment in hcpmac.c in RC2 can cause compile errors.
-+
-+25 November 2002 CPHAL Release Candidate 2
-+
-+Project Items not completed for RC2
-+#6 Ship as Library - Once under CC. Moved to RC3
-+#8 Under Clearcase - Moved to RC3
-+#25 Emerald compliant - Moved to RC3
-+#26 Statistics support - Moved to RC3 (some support in RC2)
-+#36 Debug scheme implemented - Moved to RC3 (some support in RC2)
-+
-+8 November 2002 CPHAL Release Candidate 1
-+
-+Notes:
-+
-+Project Items not completed for RC1
-+
-+#8 Under Clearcase - Clearcase server failure this week. Moved to RC2
-+#6 Ship as Library - Once under CC. Moved to RC2
-+#13 Verify Datatypes. Moved to RC2
-+#14 Review APIs. Moved to RC2
-+
-+APIs under review for RC2
-+
-+halIsr()
-+hslRxReturn()
-+halSend()
-+osSendComplete()
-+osReceive()
-+
-+
-+CPMAC Build Instructions
-+
-+Compile the file 'hcpmac.c'.
-+
-+
-+AAL5 Build Instructions
-+
-+The AAL5 build is composed of the source files aal5sar.c and cpsar.c.
-+Refer to the provided makefile for an example of compiling these files
-+into a library.
-+
-+Example CPHAL Code
-+
-+CPMAC:
-+
-+Example CPMAC code is provided in the file hbridge.c.
-+This program is provided simply as an example of using the CPHAL API.
-+It is not intended to be compiled and executed in your environment.
-+
-+AAL5:
-+
-+Example AAL5 code is provided in the file loopback.c. This program
-+is provided simply as an example of using the CPHAL API. It is not
-+intended to be compiled and executed in your environment.
-+
-+
-+Performance Baseline
-+
-+
-+Cpmac
-+
-+RC1: hbridge.bin, running with IXIA cpahl_1.cfg.
-+ This sends 64-byte packets from each Ixia port, with mac destination the other Ixia port.
-+ MIPS core 4Kc.
-+
-+RC2: hbridge.bin, running with IXIA cpahl_1.cfg.
-+ This sends 64-byte packets from each Ixia port, with mac destination the other Ixia port.
-+ MIPS core 4Ke.
-+ CPHAL now includes Emerald support, but this has been disabled by using 'cache -wt' to emulate 4Kc.
-+
-+RC3: hbridge.bin, running with IXIA cpahl_1.cfg.
-+ This sends 64-byte packets from each Ixia port, with mac destination the other Ixia port.
-+ MIPS core 4Ke.
-+ Running as Emerald processor.
-+
-+Release Total Receive Rate Throughput Setting
-+
-+RC1 11300 38%
-+RC2 9524 32%
-+RC3 15190 51%
-diff -urN linux.old/drivers/net/Config.in linux.dev/drivers/net/Config.in
---- linux.old/drivers/net/Config.in 2005-07-12 03:20:45.726149872 +0200
-+++ linux.dev/drivers/net/Config.in 2005-07-12 02:48:42.180573000 +0200
-@@ -25,6 +25,24 @@
- comment 'Ethernet (10 or 100Mbit)'
- bool 'Ethernet (10 or 100Mbit)' CONFIG_NET_ETHERNET
- if [ "$CONFIG_NET_ETHERNET" = "y" ]; then
-+ if [ "$CONFIG_MIPS_TITAN" = "y" -o "$CONFIG_AR7" = "y" ]; then
-+ tristate ' Texas Instruments Avalanche CPMAC support' CONFIG_MIPS_AVALANCHE_CPMAC
-+ fi
-+ if [ "$CONFIG_MIPS_AVALANCHE_CPMAC" != "n" ]; then
-+ if [ "$CONFIG_AR7WRD" = "y" -o "$CONFIG_AR7VWI" = "y" -o "$CONFIG_AR7VW" = "y" ]; then
-+ define_bool CONFIG_MIPS_CPMAC_INIT_BUF_MALLOC y
-+ define_int CONFIG_MIPS_CPMAC_PORTS 1
-+ if [ "$CONFIG_MIPS_AVALANCHE_MARVELL" = "y" ]; then
-+ define_bool CONFIG_AVALANCHE_LOW_CPMAC n
-+ define_bool CONFIG_AVALANCHE_HIGH_CPMAC y
-+ else
-+ define_bool CONFIG_AVALANCHE_CPMAC_AUTO y
-+ define_bool CONFIG_AVALANCHE_LOW_CPMAC n
-+ define_bool CONFIG_AVALANCHE_HIGH_CPMAC n
-+ fi
-+ fi
-+ fi
-+
- if [ "$CONFIG_ARM" = "y" ]; then
- dep_bool ' ARM EBSA110 AM79C961A support' CONFIG_ARM_AM79C961A $CONFIG_ARCH_EBSA110
- tristate ' Cirrus Logic CS8900A support' CONFIG_ARM_CIRRUS
-diff -urN linux.old/drivers/net/Makefile linux.dev/drivers/net/Makefile
---- linux.old/drivers/net/Makefile 2005-07-12 03:20:45.726149872 +0200
-+++ linux.dev/drivers/net/Makefile 2005-07-12 02:48:42.181573000 +0200
-@@ -56,6 +56,16 @@
- subdir-$(CONFIG_BONDING) += bonding
-
- #
-+# Texas Instruments AVALANCHE CPMAC driver
-+#
-+
-+subdir-$(CONFIG_MIPS_AVALANCHE_CPMAC) += avalanche_cpmac
-+#obj-$(CONFIG_MIPS_AVALANCHE_CPMAC) += avalanche_cpmac/avalanche_cpmac.o
-+ifeq ($(CONFIG_MIPS_AVALANCHE_CPMAC),y)
-+ obj-y += avalanche_cpmac/avalanche_cpmac.o
-+endif
-+
-+#
- # link order important here
- #
- obj-$(CONFIG_PLIP) += plip.o
---- linux.old/drivers/net/avalanche_cpmac/cpmac.c 2005-08-25 10:56:33.702931008 +0200
-+++ linux.dev/drivers/net/avalanche_cpmac/cpmac.c 2005-08-25 11:08:45.027451520 +0200
-@@ -2158,17 +2158,16 @@
- CPMAC_PRIVATE_INFO_T *p_cpmac_priv = p_dev->priv;
- CPMAC_DRV_HAL_INFO_T *p_drv_hal = p_cpmac_priv->drv_hal;
- struct sk_buff *p_skb = fragList[0].OsInfo;
-- p_skb->len = fragList[0].len;
-
- /* invalidate the cache. */
- dma_cache_inv((unsigned long)p_skb->data, fragList[0].len);
- #ifdef CPMAC_TEST
-- xdump(p_skb->data, p_skb->len, "recv");
-+ xdump(p_skb->data, fragList[0].len, "recv");
- #endif
- #ifdef CPMAC_8021Q_SUPPORT
- /* 802.1q stuff, just does the basic checking here. */
- if(!p_cpmac_priv->enable_802_1q &&
-- p_skb->len > TCI_END_OFFSET &&
-+ fragList[0].len > TCI_END_OFFSET &&
- IS_802_1Q_FRAME(p_skb->data + TPID_START_OFFSET))
- {
- goto cpmac_hal_recv_frame_mismatch;
diff --git a/openwrt/target/linux/ar7-2.4/patches/004-atm_driver.patch b/openwrt/target/linux/ar7-2.4/patches/004-atm_driver.patch
deleted file mode 100644
index f6a920853a..0000000000
--- a/openwrt/target/linux/ar7-2.4/patches/004-atm_driver.patch
+++ /dev/null
@@ -1,27232 +0,0 @@
-diff -urN linux.old/drivers/atm/Config.in linux.dev/drivers/atm/Config.in
---- linux.old/drivers/atm/Config.in 2005-08-22 23:18:37.773532032 +0200
-+++ linux.dev/drivers/atm/Config.in 2005-08-23 04:46:50.076846888 +0200
-@@ -99,4 +99,10 @@
- bool 'Use S/UNI PHY driver' CONFIG_ATM_HE_USE_SUNI
- fi
- fi
-+#
-+# Texas Instruments SANGAM ADSL/ATM support
-+#
-+if [ "$CONFIG_AR7" = "y" ]; then
-+ tristate 'Texas Instruments SANGAM ATM/ADSL support' CONFIG_MIPS_SANGAM_ATM
-+fi
- endmenu
-diff -urN linux.old/drivers/atm/Makefile linux.dev/drivers/atm/Makefile
---- linux.old/drivers/atm/Makefile 2005-08-22 23:18:37.773532032 +0200
-+++ linux.dev/drivers/atm/Makefile 2005-08-23 04:46:50.077846736 +0200
-@@ -14,6 +14,32 @@
- obj-$(CONFIG_ATM_NICSTAR) += nicstar.o
- obj-$(CONFIG_ATM_IDT77252) += idt77252.o
-
-+ifeq ($(CONFIG_AR7),y)
-+
-+subdir-$(CONFIG_MIPS_SANGAM_ATM) += sangam_atm
-+
-+EXTRA_CFLAGS += -DEL -I$(TOPDIR)/drivers/atm/sangam_atm -DPOST_SILICON -DCOMMON_NSP -DCONFIG_LED_MODULE -DDEREGISTER_LED -DNO_ACT
-+#EXTRA_CFLAGS += -DEL -I$(TOPDIR)/drivers/atm/sangam_atm -DPOST_SILICON -DCOMMON_NSP
-+
-+ifeq ($(ANNEX),B)
-+EXTRA_CFLAGS += -DANNEX_B -DB
-+else
-+ifeq ($(ANNEX),C)
-+EXTRA_CFLAGS += -DANNEX_C -DC
-+else
-+EXTRA_CFLAGS += -DANNEX_A -DP
-+endif
-+endif
-+
-+list-multi := tiatm.o
-+tiatm-objs := sangam_atm/tn7atm.o sangam_atm/tn7dsl.o sangam_atm/tn7sar.o \
-+ sangam_atm/dsl_hal_api.o sangam_atm/dsl_hal_support.o sangam_atm/cpsar.o \
-+ sangam_atm/aal5sar.o
-+
-+obj-$(CONFIG_MIPS_SANGAM_ATM) += sangam_atm/tiatm.o
-+
-+endif
-+
- ifeq ($(CONFIG_ATM_NICSTAR_USE_SUNI),y)
- obj-$(CONFIG_ATM_NICSTAR) += suni.o
- endif
-diff -urN linux.old/drivers/atm/sangam_atm/aal5sar.c linux.dev/drivers/atm/sangam_atm/aal5sar.c
---- linux.old/drivers/atm/sangam_atm/aal5sar.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/aal5sar.c 2005-08-23 04:46:50.080846280 +0200
-@@ -0,0 +1,2962 @@
-+
-+/**
-+ *
-+ * aal5sar.c
-+ *
-+ * TNETDxxxx Software Support\n
-+ * Copyright (c) 2002 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * version
-+ * 28Feb02 Greg 1.00 Original Version created.\n
-+ * 06Mar02 Greg 1.01 Documentation (Doxygen-style) enhanced
-+ * 06May02 Greg 1.02 AAL2 added
-+ * 06Jun02 Greg 1.03 Multiple API and bug fixes from emulation
-+ * 12Jul02 Greg 1.04 API Update
-+ */
-+
-+/**
-+@defgroup CPHAL_Functions CPHAL Functions
-+
-+These are the CPHAL Functions.
-+*/
-+
-+/**
-+@page CPHAL_Implementation_Details
-+
-+@section cphal_intro Introduction
-+
-+The CPHAL API described above is generally applicable to all modules. Any
-+implementation differences will be described in the following module-specific
-+appendix sections.
-+
-+Included for your reference is a diagram showing the internal architecture
-+of the CPHAL:
-+
-+@image html SangamSoftware.jpg "HAL Architecture"
-+@image latex SangamSoftware.jpg "HAL Architecture" height=2.8in
-+
-+*/
-+
-+/**
-+@defgroup AAL5_Functions Additional Functions for AAL5 Implementation
-+
-+These functions are used only by the AAL5 module.
-+*/
-+
-+/*
-+@defgroup CPMAC_Functions Additional Functions for CPMAC Implementation
-+
-+No additional functions currently defined.
-+*/
-+
-+/**
-+@page VDMA_Implementation_Details
-+
-+@section vdma_intro Introduction
-+
-+The VDMA-VT module facilitates efficient transfer of data (especially voice)
-+between two devices, as shown in the figure below.
-+
-+@image html vdma.jpg "VDMA System Block Diagram"
-+@image latex vdma.jpg "VDMA System Block Diagram" height=1in
-+
-+The VDMA-VT module supports two modes of operation: mirror mode and credit mode.
-+Mirror mode is intended for systems in which the remote device does not have a
-+VDMA-based module. Credit mode is intended for highest performance when VDMA-based
-+modules exist on both ends of an interface.
-+
-+For more detailed information on the operation of the VDMA module, please
-+reference the VDMA Module Guide.
-+
-+@section vdma_channels VDMA Channels
-+
-+The VDMA-VT module is a single channel, single transmit queue device. Therefore,
-+when using the CHANNEL_INFO structure, the correct value for @c Ch is always 0.
-+Correspondingly, the correct value for the @c Ch parameter in @c ChannelTeardown() is
-+always 0. Further, when calling @c Send(), the driver should always supply the value
-+of 0 for both the @c Ch and @c Queue parameters.
-+
-+For the VDMA-VT, configuring the channel requires the configuration of either 2 FIFO
-+elements (in credit mode) or 4 FIFO elements (in mirror mode). For credit mode, the
-+driver must configure just the local Tx and Rx FIFOs. For mirror mode, the driver must
-+configure the Tx and Rx FIFOs for both the remote and local ends of the interface.
-+
-+This channel configuration is accomplished through multiple calls to @c ChannelSetup().
-+Each call configures a single FIFO, according to the parameters in the CHANNEL_INFO
-+structure. The members of VDMA-VT's CHANNEL_INFO structure are defined below.
-+
-+
-+- int RemFifoAddr; Address of remote FIFO (mirror mode only). Set to 0 for credit mode.
-+- int FifoAddr; Address of the local FIFO. If 0, the CPHAL will allocate the FIFO.
-+- int FifoSize; Size of the FIFO.
-+- int PollInt; Polling interval for the FIFO.
-+- int Endianness; Endianness of the FIFO. If 1, big endian. If 0, little endian.
-+- int RemAddr; Used only in credit mode. This is the base address of the remote
-+ remote VDMA-based device (VDMA-VT or AAL2)
-+- int RemDevID; Used only in credit mode. Identifies the type of remote VDMA-based device.
-+ 0=VDMAVT, 1=AAL2 Ch0, 2=AAL2 Ch1, 3=AAL2 Ch2, 4= AAL2 Ch3.
-+
-+For the VDMA-VT module, the driver must make all calls to @c ChannelSetup() prior to calling
-+@c Open(). This is because several of the channel specific parameters may not be changed
-+while the VDMA-VT module is operational.
-+
-+@section vdma_params VDMA Parameters
-+
-+Defined here are the set of parameters for the VDMA-VT module. Default settings for
-+each parameter should be represented in the device configuration file (options.conf).
-+During @c Init(), the CPHAL will reference the device configuration file and load all
-+default settings. The @c Control() interface gives the driver an opportunity to
-+modify any default settings before the module becomes operational during the @c Open()
-+call.
-+
-+@param NoTxIndication If 1, the CPHAL will not call @c SendComplete(). 0 is default.
-+@param NoRxIndication If 1, the CPHAL will not call @c Receive(). 0 is default.
-+@param RemoteCPU If 1, the CPHAL will not directly manipulate data in FIFO's, leaving
-+ that task for a remote CPU. 0 is default.
-+@param RxIntEn If 1, enables Rx interrupts. 0 is default.
-+@param TxIntEn If 1, enables Tx interrupts. 0 is default.
-+@param Mirror If 1, enables mirror mode. 0 selects credit mode (default).
-+@param RxIntCtl Valid only in mirror mode. If 1, interrupts will occur when the Rx FIFO
-+ RdIndex is updated. If 0, interrupts occur when the Rx FIFO WrIndex
-+ is updated.
-+@param TxIntCtl Valid only in mirror mode. If 1, interrupts will occur when the Rx FIFO
-+ RdIndex is updated. If 0, interrupts occur when the Rx FIFO WrIndex
-+ is updated.
-+@param RBigEn Remote big endian mode. If 1, remote is big endian.
-+@param LBigEn Local big endian mode. If 1, local is big endian.
-+
-+@section vdma_polling Using VDMA-VT without interrupts
-+
-+If your system configuration does not utilize VDMA interrupts, the ability to process the
-+Tx and Rx FIFOs is supported. To process the Tx FIFO, call @c CheckTx(). If the CPHAL is
-+able to process any complete data transmissions, it will call @c SendComplete() as usual.
-+To process the Rx FIFO, call @c CheckRx(). If the CPHAL has received any data, it will
-+call @c Receive() to pass the driver the data. Please reference @ref VDMA_Functions for more
-+information on these interfaces.
-+
-+@section vdma_details VDMA Implementation Details
-+
-+The following functions are not defined for use with VDMA: @c Status(), @c Tick(), @c StatsGet(),
-+and @c StatsClear().
-+
-+*/
-+
-+/**
-+@page AAL5_Implementation_Details
-+
-+@section aal5_ver Version
-+
-+@copydoc AAL5_Version
-+
-+@section aal5_intro Introduction
-+
-+The AAL5 implementation will support 16 channels for transmit and 16 channels for
-+receive. Each of the transmit channels may have up to two transmit queues
-+associated with it. If two queues are used, Queue 0 is the high priority queue,
-+and Queue 1 is the low priority queue.
-+
-+@section aal5_params AAL5 Configuration Parameters
-+
-+AAL5 requires two device entries to be available in the configuration repository, named
-+@p "aal5" and @p "sar". The @p aal5 device entry must contain @p base (base address)
-+and @p int_line (interrupt number). The @p sar device entry must have both @p base
-+(base address) and @p reset_bit (reset bit).
-+
-+@par Device Level Configuration Parameters
-+
-+The following parameters are device-level parameters, which apply across all
-+channels. The value for these parameters may be modified by changing the value in the
-+configuration repository.
-+
-+- "UniNni":
-+AAL5 network setting. 0 = UNI (default), 1 = NNI.
-+
-+@par Channel Configuration Parameters
-+
-+All AAL5 channel parameters may also be configured through the @c ChannelSetup() interface.
-+Following is the list of @p CHANNEL_INFO members that may be modified by the driver when
-+calling @c ChannelSetup(). The driver may provide a value of 0xFFFFFFFF for any channel
-+parameter to select a default value for the parameter. The driver should at a minimum
-+configure @p Vci and @p Vpi. The usage of all parameters beginning with TxVc_,
-+TxVp_, RxVc_, RxVp_ is described in greater detail in the SAR Firmware Spec.
-+These parameters are mainly associated with QoS and OAM functionality.
-+
-+- "RxNumBuffers":
-+The number of Rx buffer descriptors to allocate for Ch.
-+- "RxBufSize":
-+Size (in bytes) for each Rx buffer.
-+- "RxBufferOffset":
-+Number of bytes to offset rx data from start of buffer (must be less than buffer size).
-+- "RxServiceMax":
-+Maximum number of packets to service at one time.
-+- "TxNumBuffers":
-+The number of Tx buffer descriptors to allocate for Ch.
-+- "TxNumQueues":
-+Number of Tx queues for this channel (1-2). Choosing 2 enables a low priority SAR queue.
-+- "TxServiceMax":
-+Maximum number of packets to service at one time.
-+- "CpcsUU":
-+The 2-byte CPCS UU and CPI information.
-+- "Gfc":
-+Generic Flow Control. Used in ATM header of Tx packets.
-+- "Clp":
-+Cell Loss Priority. Used in ATM header of Tx packets.
-+- "Pti":
-+Payload Type Indication. Used in ATM header of Tx packets.
-+- "DaMask":
-+Specifies whether credit issuance is paused when Tx data not available.
-+- "Priority":
-+Priority bin this channel will be scheduled within.
-+- "PktType":
-+0=AAL5,1=Null AAL,2=OAM,3=Transparent,4=AAL2.
-+- "Vci":
-+Virtual Channel Identifier.
-+- "Vpi":
-+Virtual Path Identifier.
-+- "TxVc_AtmHeader":
-+In firmware OAM mode, this
-+is the ATM header to be appended to front of firmware generated VC OAM cells for
-+this channel. Note: To generate host OAM cells, call @c Send() with
-+the appropriate mode.
-+- "TxVc_CellRate":
-+Tx rate, set as clock ticks between transmissions (SCR for VBR, CBR for CBR).
-+- "TxVc_QosType":
-+0=CBR,1=VBR,2=UBR,3=UBRmcr.
-+- "TxVc_Mbs":
-+Min Burst Size in cells.
-+- "TxVc_Pcr":
-+Peak Cell Rate for VBR in clock ticks between transmissions.
-+- "TxVc_OamTc":
-+TC Path to transmit OAM cells for TX connections (0,1).
-+- "TxVc_VpOffset":
-+Offset to the OAM VP state table for TX connections. Channels with the same
-+VPI must have the same VpOffset value. Channels with different VPIs
-+must have unique VpOffset values.
-+- "RxVc_OamCh":
-+Channel to which to terminate received OAM cells to be forwarded to the Host
-+for either Host OAM mode, or when RxVc_OamToHost is enabled during Firmware
-+OAM mode.
-+- "RxVc_OamToHost":
-+Indicates whether to pass received unmatched OAM loopback cells to the host;
-+0=do not pass, 1=pass.
-+- "RxVc_AtmHeader":
-+ATM Header placed on firmware gen'd OAM cells for this channel on a Rx
-+connection (must be big endian with 0 PTI).
-+- "RxVc_OamTc":
-+TC Path to transmit OAM cells for RX connections (0,1).
-+- "RxVc_VpOffset":
-+Offset to the OAM VP state table for RX connections. Channels with the same
-+VPI must have the same VpOffset value. Channels with different VPIs
-+must have unique VpOffset values.
-+- "TxVp_OamTc":
-+TC Path to transmit OAM cells for TX VP connections (0,1).
-+- "TxVp_AtmHeader":
-+ATM Header placed on firmware gen'd VP OAM cells for this channel on a Tx VP
-+connection (must be big endian with 0 VCI).
-+- "RxVp_OamCh":
-+Channel to which to terminate received OAM cells to be forwarded to the Host
-+for either Host OAM mode, or when RxVc_OamToHost is enabled during Firmware
-+OAM mode.
-+- "RxVp_OamToHost":
-+Indicates whether to pass received unmatched OAM loopback cells to the host;
-+0=do not pass, 1=pass.
-+- "RxVp_AtmHeader":
-+In firmware OAM mode, this
-+is the ATM header to be appended to front of firmware generated VP OAM cells for
-+this channel. Note: To generate host OAM cells, call @c Send() with
-+the appropriate mode.
-+- "RxVp_OamTc":
-+TC Path to transmit OAM cells for RX VP connections (0,1).
-+- "RxVp_OamVcList":
-+This 32-bit field is one-hot encoded to indicate all the VC channels that are
-+associated with this VP channel. A value of 21 will indicate that VC
-+channels 0, 2, and 4 are associated with this VP channel.
-+- "FwdUnkVc":
-+Indicates whether or not to forward unknown VCI/VPI cells to the host. This
-+parameter only takes effect if the channel's PktType is Transparent(3).
-+1=forwarding enabled, 0=forwarding disabled.
-+
-+@section aal5_details API Implementation Details
-+
-+ATTENTION: Documentation given here supplements the documentation given in the general
-+CPHAL API section. The following details are crucial to correct usage of the
-+AAL5 CPHAL.
-+
-+@par Receive()
-+The least significant byte of @p Mode contains the channel number. Bit 31
-+indicates whether or not the ATM header is present in the first fragment of
-+the packet. If bit 31 is set, the 4 byte ATM header (minus HEC) will be provided
-+in the first fragment, with the payload beginning in the second fragment. Currently,
-+this is the default behavior for host OAM and transparent mode packets.
-+Bits 17-16 indicate the packet type that is being received.
-+Mode Parameter Breakdown: <BR>
-+- 31 ATM Header In First Fragment (1=true, 0=false) <BR>
-+- 30-18 Unused. <BR>
-+- 17-16 Pkt Type. <BR>
-+ - 0=AAL5 <BR>
-+ - 1=PTI Based Null AAL <BR>
-+ - 2=OAM <BR>
-+ - 3=Transparent <BR>
-+- 15-08 Unused. <BR>
-+- 07-00 Channel Number.
-+
-+@par Send()
-+The most significant 16 bits of the first fragment 'len' is used as the Offset
-+to be added to the packet. @c Send() will reserve this many bytes at the
-+beginning of the transmit buffer prior to the first byte of valid data.
-+For the @p Mode parameter, Bit 31 must be set if the user has sent a packet with
-+the ATM Header (minus HEC) embedded in the first 4 bytes of the first fragment data buffer.
-+The OS has the option of using a 4 byte first fragment containing only ATM header,
-+or concatenating the ATM Header in front of the data payload.
-+If Bit 31 is set, the ATM Header in the buffer is preserved and sent with
-+each cell of the packet. Otherwise, Send() will build the ATM header based on the
-+values of the Pti, Gfc, Clp, Vpi, and Vci parameters for the given channel.
-+Bits 17-16 are defined as the packet type. Bits 15-08 may be used to specify the
-+transmit queue to send the packet on. Only values 0 (high priority) and 1 (low
-+priority) are accepted. Bits 07-00 should be used to indicate the channel number
-+for the @c Send() operation. Valid channel numbers are 0-15.
-+Mode Parameter Breakdown: <BR>
-+- 31 ATM Header In Packet (1=true, 0=false) <BR>
-+- 30-18 Unused. <BR>
-+- 17-16 Pkt Type. <BR>
-+ - 0=AAL5 <BR>
-+ - 1=PTI Based Null AAL <BR>
-+ - 2=OAM <BR>
-+ - 3=Transparent <BR>
-+- 15-08 Transmit Queue. <BR>
-+- 07-00 Channel Number.
-+
-+@par ChannelSetup()
-+The AAL5 @c ChannelSetup() always configures both the Tx and Rx side of the channel
-+connection in the same call.
-+
-+@par ChannelTeardown()
-+Regardless of the channel teardown direction selected, the AAL5 CPHAL will always
-+teardown both the Tx and Rx side of the channel connection.
-+
-+@par TeardownComplete()
-+The value for the @p Direction parameter should be ignored for the AAL5 implementation,
-+since both directions (Tx and Rx) are always torndown in response to a @c ChannelTeardown()
-+command.
-+
-+@par Control() (HAL version)
-+Defined keys and actions. Unless otherwise stated, the data type
-+for Value is pointer to unsigned integer. The list is broken into
-+three groups, one group which can be used anytime, one group that should
-+be used before halOpen(), and one group which can only be used after
-+halOpen() (but before halClose()). For channelized parameters, replace
-+'Ch' with the integer number of a channel (ex. "Gfc.4" can be used to set
-+Gfc for channel 4).
-+
-+MAY USE ANYTIME AFTER INIT (after halInit() is called):
-+
-+- "Gfc.Ch". The OS may "Set" this value. Changing this value causes
-+the Gfc in each Tx ATM header for this channel to take on the new Gfc value.
-+
-+- "Clp.Ch". The OS may "Set" this value. Changing this value causes
-+the Clp in each Tx ATM header for this channel to take on the new Clp value.
-+
-+- "Pti.Ch". The OS may "Set" this value. Changing this value causes
-+the Pti in each Tx ATM header for this channel to take on the new Pti value.
-+
-+- "CpcsUU.Ch". The OS may "Set" this value. Changing this value causes
-+the CpcsUU in each Tx ATM header for this channel to take on the new CpcsUU value.
-+
-+- "OamMode". Specifies if host or firmware is performing OAM functions; 0 = Host OAM,
-+1 = Firmware OAM. When set, all SAR channels will be configured for
-+the selection, including AAL2 channels.
-+
-+- "OamLbTimeout". Specifies the firmware OAM loopback timeout, in milliseconds.
-+
-+- "DeviceCPID". The OS may "Set" this value. This is the OAM connection
-+point identifier. The OS should provide a pointer to an array of 4 32-bit
-+integers. Each word must be configured in big endian format.
-+
-+- "FwdUnkVc.Ch". Indicates whether or not to forward unknown VCI/VPI cells to the host.
-+This parameter only takes effect if the channel's PktType is Transparent(3).
-+1=forwarding enabled, 0=forwarding disabled.
-+
-+MAY USE ONLY BEFORE HAL IS OPEN (before halOpen() call):
-+- "StrictPriority". The OS may "Set" this value. Setting to 1 causes
-+a different interrupt processing routine to be used, which gives strict
-+priority to channels with lower numbers (channel 0 has highest priority).
-+The default handler gives equal priority to all channels.
-+
-+- "MaxFrags". The OS may "Set" or "Get" this value. This defines the maximum
-+number of fragments that can be received by the AAL5 Rx port. The default
-+value for AAL5 is 46. This provides enough space to receive a maximum
-+length AAL5 packet (65,568 bytes) with the default buffer size of 1518 bytes, and
-+any amount of RxBufferOffset. If the buffer size is configured to be smaller,
-+the OS *MUST* modify this parameter according to the following formula:
-+((System Max AAL5 packet length)/(RxBufSize)) + 2. (The extra two fragments in
-+the formula allow for RxBufferOffset and one fragment for the ATM Header, used
-+when receiving host OAM or transparent mode packets)
-+
-+MAY USE ONLY AFTER HAL IS 'OPEN' (after halOpen() call):
-+- "Stats;Level;Ch;Queue". The OS may "Get" Stats groups with this key, where
-+'Level' is an integer from 0-4, Ch is an integer from 0-15, and Queue is
-+an integer from 0-1. Note that Ch is not required for Level 4 stats, and Queue
-+is not required for Level 0, 3, and 4. The statistics functionality and return
-+value is described in the appendix entitled "Configuration and Control".
-+
-+- "TxVc_CellRate.Ch". The OS may "Set" this value. Can be used to modify
-+CellRate for a channel on the fly.
-+
-+- "TxVc_Mbs.Ch". The OS may "Set" this value. Can be used to modify
-+Mbs for a channel on the fly.
-+
-+- "TxVc_Pcr.Ch". The OS may "Set" this value. Can be used to modify
-+Pcr for a channel on the fly.
-+
-+- "PdspEnable". The OS may "Set" this value. Value 0 disables the PDSP.
-+Value 1 enables to PDSP.
-+
-+- "DeviceCPID". The OS may "Set" this value. The Value should be an array
-+of 4 32-bit integers that comprise the CPID.
-+
-+- "RxVc_RDICount.Ch". The OS may "Get" or "Set" this value. Get returns
-+the current RDI count for the VC channel. Set clears the counter, and the Value
-+is ignored.
-+
-+- "RxVp_RDICount.Ch". The OS may "Get" or "Set" this value. Get returns
-+the current RDI count for the VP channel. Set clears the counter, and the Value
-+is ignored.
-+
-+- "RxVc_AISseg.Ch". The OS may "Get" this value. This is an indication of
-+AIS segment error for the VC channel.
-+
-+- "RxVp_AISseg.Ch". The OS may "Get" this value. This is an indication of
-+AIS segment error for the VP channel.
-+
-+- "RxVc_AISetoe.Ch". The OS may "Get" this value. This is an indication of
-+AIS end-to-end error for the VC channel.
-+
-+- "RxVp_AISetoe.Ch". The OS may "Get" this value. This is an indication of
-+AIS end-to-end error for the VP channel.
-+
-+- "RxVc_OamCh.Ch". The OS may "Set" this value. Channel to which to terminate
-+received OAM cells to be forwarded to the Host for either Host OAM mode, or when
-+RxVc_OamToHost is enabled during Firmware OAM mode.
-+
-+- "RxVp_OamCh.Ch". The OS may "Set" this value. Channel to which to terminate
-+received OAM cells to be forwarded to the Host for either Host OAM mode, or when
-+RxVp_OamToHost is enabled during Firmware OAM mode.
-+
-+- "F4_LB_Counter". The OS may "Get" this value. This is a count of the number
-+ of near-end F4 loopbacks performed by the PDSP in firmware OAM mode.
-+
-+- "F5_LB_Counter". The OS may "Get" this value. This is a count of the number
-+ of near-end F5 loopbacks performed by the PDSP in firmware OAM mode.
-+
-+- "TxVc_AtmHeader.Ch". The OS may "Set" this value. In firmware OAM mode, this
-+is the ATM header to be appended to front of firmware generated VC OAM cells for
-+this channel. In host OAM mode, this is used as the ATM header to be appended
-+to front of host generated VC OAM cells for this channel. It must be configured
-+as big endian with PTI=0. Note: To generate host OAM cells, call @c Send() with
-+the appropriate mode.
-+
-+- "TxVp_AtmHeader.Ch". The OS may "Set" this value. In firmware OAM mode, this
-+is the ATM header to be appended to front of firmware generated VP OAM cells for
-+this channel. In host OAM mode, this is used as the ATM header to be appended
-+to front of host generated VP OAM cells for this channel. It must be configured
-+as big endian with VCI=0. Note: To generate host OAM cells, call @c Send() with
-+the appropriate mode.
-+
-+- "PdspEnable". The OS may "Set" this value. Controls whether or not the PDSP is
-+allowed to fetch new instructions. The PDSP is enabled by the CPHAL during Open(),
-+and disabled during Close(). 0 = disabled, 1 = enabled.
-+
-+@par Control() (OS version)
-+Defined keys and actions:
-+
-+- "Firmware". The CPHAL will perform a "Get" action for the key "Firmware". A pointer
-+to a pointer is passed in @p Value. The OS must modify the referenced pointer to point
-+to the firmware.
-+
-+- "FirmwareSize". The CPHAL will perform a "Get" action for the key "FirmwareSize".
-+The OS must place the firmware size in the memory pointed at by @p Value.
-+
-+- "OamLbResult". When a channel that is in firmware OAM mode is commanded to perform
-+a loopback function, the result of the loopback generates an interrupt that is handled
-+by the OS like any other interrupt. The CPHAL, upon servicing the interrupt, will call
-+osControl with this key, and an action of "Set". The @p Value parameter will be a
-+pointer to the integer result. 1 = pass, 0 = fail.
-+
-+- "SarFreq". The CPHAL will perform a "Get" action for this key. The OS should place
-+the SAR frequency (in Hz) in the memory pointed at by @p Value.
-+
-+@section aal5_stats AAL5 Specific Statistics
-+
-+Statistics level '0' contains all AAL5 specific statistics. The following values will
-+be obtained when requesting stats level 0:
-+
-+- "Crc Errors". Number of CRC errors reported by SAR hardware. Incremented for received
-+packets that contain CRC errors.
-+
-+- "Len Errors". Number of length errors reported by SAR hardware. Incremented for received
-+packets that are in excess of 1366 cells.
-+
-+- "Abort Errors". Number of abort errors reported by SAR hardware.
-+
-+- "Starv Errors". Number of buffer starvation errors reported by SAR hardware. Incremented
-+when a part or all of a buffer cannot be received due to lack of RX buffer resources. The SAR
-+drops all cells associated with the packet for each buffer starvation error that occurs.
-+
-+*/
-+
-+/* register files */
-+#include "cp_sar_reg.h"
-+
-+#define _CPHAL_AAL5
-+#define _CPHAL
-+#define _CPPI_TEST /** @todo remove for release */
-+#define __CPHAL_CPPI_OFFSET /* support use of offset */
-+
-+/* OS Data Structure definitions */
-+
-+typedef void OS_PRIVATE;
-+typedef void OS_DEVICE;
-+typedef void OS_SENDINFO;
-+typedef void OS_RECEIVEINFO;
-+typedef void OS_SETUP;
-+
-+/* CPHAL Data Structure definitions */
-+
-+typedef struct hal_device HAL_DEVICE;
-+typedef struct hal_private HAL_PRIVATE;
-+typedef struct hal_private HAL_RECEIVEINFO;
-+
-+/* include CPHAL header files here */
-+#include "cpcommon_cpaal5.h"
-+#include "cpswhal_cpaal5.h"
-+#include "aal5sar.h"
-+#include "cpcommon_cpaal5.c"
-+
-+#define CR_SERVICE (170-1)
-+#define UTOPIA_PAUSE_REG (*(volatile bit32u *)0xa4000000)
-+
-+/*
-+these masks are for the mode parameter used in halSend/OsReceive
-+(may move these elsewhere)
-+*/
-+#define CH_MASK 0xff
-+#define PRI_MASK 0x10000
-+
-+/* Rcb/Tcb Constants */
-+#define CB_SOF_BIT (1<<31)
-+#define CB_EOF_BIT (1<<30)
-+#define CB_SOF_AND_EOF_BIT (CB_SOF_BIT|CB_EOF_BIT)
-+#define CB_OWNERSHIP_BIT (1<<29)
-+#define CB_EOQ_BIT (1<<28)
-+#define CB_SIZE_MASK 0x0000ffff
-+#define CB_OFFSET_MASK 0xffff0000
-+#define RCB_ERRORS_MASK 0x03fe0000
-+#define RX_ERROR_MASK 0x000f0000
-+#define CRC_ERROR_MASK 0x00010000
-+#define LENGTH_ERROR_MASK 0x00020000
-+#define ABORT_ERROR_MASK 0x00040000
-+#define STARV_ERROR_MASK 0x00080000
-+#define TEARDOWN_VAL 0xfffffffc
-+
-+/* interrupt vector masks */
-+#define TXH_PEND 0x01000000
-+#define TXL_PEND 0x02000000
-+#define RX_PEND 0x04000000
-+#define STS_PEND 0x08000000
-+#define AAL2_PEND 0x10000000
-+#define INT_PENDING (TXH_PEND | TXL_PEND | RX_PEND | STS_PEND | AAL2_PEND)
-+#define STS_PEND_INVEC 0x0001F000
-+#define RX_PEND_INVEC 0x00000F00
-+#define TXL_PEND_INVEC 0x000000F0
-+#define TXH_PEND_INVEC 0x0000000F
-+#define AIS_SEG_MASK 0x1 /* +01.02.00 */
-+#define AIS_SEG_SHIFT 0 /* +01.02.00 */
-+#define AIS_ETOE_MASK 0x20000 /* +01.02.00 */
-+#define AIS_ETOE_SHIFT 17 /* +01.02.00 */
-+#define RDI_CNT_MASK 0xffff0000 /* +01.02.00 */
-+#define RDI_CNT_SHIFT 16 /* +01.02.00 */
-+
-+/*
-+ * This function takes a vpi/vci pair and computes the 4 byte atm header
-+ * (minus the HEC).
-+ *
-+ * @param vpi Virtual Path Identifier.
-+ * @param vci Virtual Channel Identifier.
-+ *
-+ * @return A properly formatted ATM header, without the HEC.
-+ */
-+static int atmheader(int gfc, int vpi, int vci, int pti, int clp)
-+ {
-+ int itmp;
-+
-+ itmp=0;
-+
-+ /* UNI Mode uses the GFC field */
-+ itmp |= ((gfc & 0xF) << 28);
-+ itmp |= ((vpi & 0xFF) << 20);
-+
-+ /* if NNI Mode, no gfc and larger VPI */
-+ /*itmp |= ((vpi & 0xFFF) << 20);*/
-+
-+ itmp|=((vci & 0xFFFF) << 4);
-+ itmp|=((pti & 0x7) << 1);
-+ itmp|=(clp & 0x1);
-+ return(itmp);
-+ }
-+
-+#include "cppi_cpaal5.c"
-+
-+/*
-+ * Re-entrancy Issues
-+ * In order to ensure successful re-entrancy certain sections of the
-+ * CPHAL code will be bracketed as Critical.
-+ * The OS will provide the function Os.CriticalSection(BOOL), which
-+ * will be passed a TRUE to enter the Critical Section and FALSE to exit.
-+ */
-+
-+/*
-+ * @ingroup CPHAL_Functions
-+ * Clears the statistics information.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return 0 OK, Non-zero not OK
-+ */
-+static int StatsClear(HAL_DEVICE *HalDev)
-+ {
-+ int i;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]StatsClear(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* clear stats */
-+ for (i=0; i<NUM_AAL5_CHAN; i++)
-+ {
-+ HalDev->Stats.CrcErrors[i]=0;
-+ HalDev->Stats.LenErrors[i]=0;
-+ HalDev->Stats.DmaLenErrors[i]=0;
-+ HalDev->Stats.AbortErrors[i]=0;
-+ HalDev->Stats.StarvErrors[i]=0;
-+ HalDev->Stats.TxMisQCnt[i][0]=0;
-+ HalDev->Stats.TxMisQCnt[i][1]=0;
-+ HalDev->Stats.RxMisQCnt[i]=0;
-+ HalDev->Stats.RxEOQCnt[i]=0;
-+ HalDev->Stats.TxEOQCnt[i][0]=0;
-+ HalDev->Stats.TxEOQCnt[i][1]=0;
-+ HalDev->Stats.RxPacketsServiced[i]=0;
-+ HalDev->Stats.TxPacketsServiced[i][0]=0;
-+ HalDev->Stats.TxPacketsServiced[i][1]=0;
-+ HalDev->Stats.TxMaxServiced[i][0]=0;
-+ HalDev->Stats.TxMaxServiced[i][1]=0;
-+ }
-+ HalDev->Stats.RxTotal=0;
-+ HalDev->Stats.TxTotal=0;
-+ HalDev->Stats.RxMaxServiced=0;
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/*
-+ * Returns statistics information.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return 0
-+ */
-+/*
-+static STAT_INFO* StatsGet(HAL_DEVICE *HalDev)
-+ {
-+ STAT_INFO* MyStats = &HalDev->Stats;
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]StatsGet(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ dbgPrintf("HAL Stats:\n");
-+ DispStat(HalDev, "Rx Total",MyStats->RxTotal);
-+ DispStat(HalDev, "Tx Total",MyStats->TxTotal);
-+ DispStat(HalDev, "Rx Peak",MyStats->RxMaxServiced);
-+ DispStat(HalDev, "TxH Peak",MyStats->TxMaxServiced[0][0]);
-+ DispStat(HalDev, "TxL Peak",MyStats->TxMaxServiced[0][1]);
-+ DispChStat(HalDev, "CrcErr",&MyStats->CrcErrors[0],1);
-+ DispChStat(HalDev, "LenErr",&MyStats->LenErrors[0],1);
-+ DispChStat(HalDev, "DmaLenErr",&MyStats->DmaLenErrors[0],1);
-+ DispChStat(HalDev, "AbortErr",&MyStats->AbortErrors[0],1);
-+ DispChStat(HalDev, "StarvErr",&MyStats->StarvErrors[0],1);
-+ DispChStat(HalDev, "TxH MisQ Cnt",&MyStats->TxMisQCnt[0][0],2);
-+ DispChStat(HalDev, "TxL MisQ Cnt",&MyStats->TxMisQCnt[0][1],2);
-+ DispChStat(HalDev, "Rx MisQ Cnt",&MyStats->RxMisQCnt[0],1);
-+ DispChStat(HalDev, "Rx EOQ Cnt",&MyStats->RxEOQCnt[0],1);
-+ DispChStat(HalDev, "TxH EOQ Cnt",&MyStats->TxEOQCnt[0][0],2);
-+ DispChStat(HalDev, "TxL EOQ Cnt",&MyStats->TxEOQCnt[0][1],2);
-+ DispChStat(HalDev, "Rx Pkts",&MyStats->RxPacketsServiced[0],1);
-+ DispChStat(HalDev, "TxH Pkts",&MyStats->TxPacketsServiced[0][0],2);
-+ DispChStat(HalDev, "TxL Pkts",&MyStats->TxPacketsServiced[0][1],2);
-+
-+ return (&HalDev->Stats);
-+ }
-+*/
-+
-+#ifdef __CPHAL_DEBUG
-+void dbgChannelConfigDump(HAL_DEVICE *HalDev, int Ch)
-+ {
-+ CHANNEL_INFO *HalCh = &HalDev->ChData[Ch];
-+ dbgPrintf(" [aal5 Inst %d, Ch %d] Config Dump:\n", HalDev->Inst, Ch);
-+ dbgPrintf(" TxNumBuffers :%08d, TxNumQueues :%08d\n",
-+ HalCh->TxNumBuffers, HalCh->TxNumQueues);
-+ dbgPrintf(" RxNumBuffers :%08d, RxBufSize :%08d\n",
-+ HalCh->RxNumBuffers, HalCh->RxBufSize);
-+ dbgPrintf(" TxServiceMax :%08d, RxServiceMax:%08d\n",
-+ HalCh->TxServiceMax, HalCh->RxServiceMax);
-+ dbgPrintf(" RxBufferOffset:%08d, DaMask :%08d\n",
-+ HalCh->RxBufferOffset, HalCh->DaMask);
-+ dbgPrintf(" CpcsUU :%08d, Gfc :%08d\n",
-+ HalCh->CpcsUU, HalCh->Gfc);
-+ dbgPrintf(" Clp :%08d, Pti :%08d\n",
-+ HalCh->Clp, HalCh->Pti);
-+ dbgPrintf(" Priority :%08d, PktType :%08d\n",
-+ HalCh->Priority, HalCh->PktType);
-+ dbgPrintf(" Vci :%08d, Vpi :%08d\n",
-+ HalCh->Vci, HalCh->Vpi);
-+ dbgPrintf(" TxVc_CellRate :%08d, TxVc_QosType:%08d\n",
-+ HalCh->TxVc_CellRate, HalCh->TxVc_QosType);
-+ dbgPrintf(" TxVc_Mbs :%08d, TxVc_Pcr :%08d\n",
-+ HalCh->TxVc_Mbs, HalCh->TxVc_Pcr);
-+ dbgPrintf(" TxVc_AtmHeader:%08d\n",
-+ HalCh->TxVc_AtmHeader);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+/*
-+ * Retrieves channel parameters from configuration file. Any parameters
-+ * which are not found are ignored, and the HAL default value will apply,
-+ * unless a new value is given through the channel structure in the call
-+ * to ChannelSetup.
-+ */
-+static int ChannelConfigGet(HAL_DEVICE *HalDev, CHANNEL_INFO *HalChn)
-+ {
-+ unsigned int Ret, Value, Ch = HalChn->Channel;
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+ void *ChInfo;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]ChannelConfigGet(HalDev:%08x, HalChn:%08x)\n", (bit32u)HalDev,
-+ (bit32u)HalChn);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ Ret=OsFunc->DeviceFindParmValue(HalDev->DeviceInfo, channel_names[Ch], &ChInfo);
-+ if (Ret) return (EC_AAL5|EC_FUNC_CHSETUP|EC_VAL_CH_INFO_NOT_FOUND);
-+
-+ /* i don't care if a value is not found because they are optional */
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "TxNumBuffers", &Value);
-+ if (!Ret) HalDev->ChData[Ch].TxNumBuffers = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "TxNumQueues", &Value);
-+ if (!Ret) HalDev->ChData[Ch].TxNumQueues = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "TxServiceMax", &Value);
-+ if (!Ret) HalDev->ChData[Ch].TxServiceMax = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "RxNumBuffers", &Value);
-+ if (!Ret) HalDev->ChData[Ch].RxNumBuffers = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "RxBufferOffset", &Value);
-+ if (!Ret) HalDev->ChData[Ch].RxBufferOffset = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "RxBufSize", &Value);
-+ if (!Ret) HalDev->ChData[Ch].RxBufSize = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "RxServiceMax", &Value);
-+ if (!Ret) HalDev->ChData[Ch].RxServiceMax = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "CpcsUU", &Value);
-+ if (!Ret) HalDev->ChData[Ch].CpcsUU = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "Gfc", &Value);
-+ if (!Ret) HalDev->ChData[Ch].Gfc = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "Clp", &Value);
-+ if (!Ret) HalDev->ChData[Ch].Clp = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "Pti", &Value);
-+ if (!Ret) HalDev->ChData[Ch].Pti = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "DaMask", &Value);
-+ if (!Ret) HalDev->ChData[Ch].DaMask = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "Priority", &Value);
-+ if (!Ret) HalDev->ChData[Ch].Priority = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "PktType", &Value);
-+ if (!Ret) HalDev->ChData[Ch].PktType = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "Vci", &Value);
-+ if (!Ret) HalDev->ChData[Ch].Vci = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "Vpi", &Value);
-+ if (!Ret) HalDev->ChData[Ch].Vpi = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "TxVc_CellRate", &Value);
-+ if (!Ret) HalDev->ChData[Ch].TxVc_CellRate = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "TxVc_QosType", &Value);
-+ if (!Ret) HalDev->ChData[Ch].TxVc_QosType = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "TxVc_Mbs", &Value);
-+ if (!Ret) HalDev->ChData[Ch].TxVc_Mbs = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "TxVc_Pcr", &Value);
-+ if (!Ret) HalDev->ChData[Ch].TxVc_Pcr = Value;
-+
-+ Ret=OsFunc->DeviceFindParmUint(ChInfo, "TxVc_AtmHeader", &Value);
-+ if (!Ret) HalDev->ChData[Ch].TxVc_AtmHeader = Value;
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/*
-+ * Sets up channel parameters in the hardware, and initializes the CPPI
-+ * TX and RX buffer descriptors and buffers.
-+ */
-+static int ChannelConfigApply(HAL_DEVICE *HalDev, CHANNEL_INFO *HalChn)
-+ {
-+ int j, Ch = HalChn->Channel;
-+ volatile bit32u *pTmp;
-+ int Ret; /* +GSG 030410 */
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]ChannelConfigApply(HalDev:%08x, HalChn:%08x)\n", (bit32u)HalDev,
-+ (bit32u)HalChn);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ if ((HalDev->ChIsOpen[Ch][DIRECTION_TX] == TRUE) || (HalDev->ChIsOpen[Ch][DIRECTION_RX] == TRUE))
-+ {
-+ return(EC_AAL5|EC_FUNC_CHSETUP|EC_VAL_CH_ALREADY_OPEN);
-+ }
-+
-+ HalDev->InRxInt[Ch]=FALSE;
-+
-+ /* Initialize Queue Data */
-+ HalDev->RxActQueueHead[Ch]=0;
-+ HalDev->RxActQueueCount[Ch]=0;
-+ HalDev->TxActQueueHead[Ch][0]=0;
-+ HalDev->TxActQueueHead[Ch][1]=0;
-+ HalDev->TxActQueueCount[Ch][0]=0;
-+ HalDev->TxActQueueCount[Ch][1]=0;
-+ HalDev->RxActive[Ch] = FALSE;
-+ HalDev->TxActive[Ch][0] = FALSE;
-+ HalDev->TxActive[Ch][1] = FALSE;
-+
-+ /* Clear Rx State RAM */
-+ pTmp = pRX_DMA_STATE_WORD_0(HalDev->dev_base) + (Ch*64);
-+ for (j=0; j<NUM_RX_STATE_WORDS; j++)
-+ *pTmp++ = 0;
-+
-+ /* Check that Rx DMA State RAM was cleared */
-+ pTmp -= NUM_RX_STATE_WORDS;
-+ for (j=0; j<NUM_RX_STATE_WORDS; j++)
-+ {
-+ if (*pTmp++ != 0)
-+ {
-+ return(EC_AAL5|EC_FUNC_CHSETUP|EC_VAL_RX_STATE_RAM_NOT_CLEARED);
-+ }
-+ }
-+
-+ /* Clear Tx State RAM */
-+ pTmp = pTX_DMA_STATE_WORD_0(HalDev->dev_base) + (Ch*64);
-+ for (j=0; j<NUM_TX_STATE_WORDS; j++)
-+ *pTmp++ = 0;
-+
-+ /* Check that Tx DMA State RAM was cleared */
-+ pTmp -= NUM_TX_STATE_WORDS;
-+ for (j=0; j<NUM_TX_STATE_WORDS; j++)
-+ {
-+ if (*pTmp++ != 0)
-+ {
-+ return(EC_AAL5|EC_FUNC_CHSETUP|EC_VAL_TX_STATE_RAM_NOT_CLEARED);
-+ }
-+ }
-+
-+ /* Initialize Tx State RAM (Nothing to do) */
-+
-+ /* Initialize Rx State RAM */
-+ /* Configure the Rx buffer offset */
-+ pTmp=(pRX_DMA_STATE_WORD_0(HalDev->dev_base) + (Ch*64));
-+ *pTmp |= (HalDev->ChData[Ch].RxBufferOffset & 0xFF);
-+
-+ /* Initialize buffer memory for the channel */
-+ Ret = InitTcb(HalDev, Ch);
-+ if (Ret) return (Ret);
-+
-+ Ret = InitRcb(HalDev, Ch);
-+ if (Ret) return (Ret);
-+
-+ /* setup interrupt mask/enable for the channel */
-+ SAR_TX_MASK_SET(HalDev->dev_base) = (1<<Ch);
-+
-+ /* if using the low priority queue, set up mask for it */
-+ if (HalDev->ChData[Ch].TxNumQueues == 2) /* +GSG 030421 */
-+ SAR_TX_MASK_SET(HalDev->dev_base) = (1<<Ch)<<16; /* +GSG 030421 */
-+
-+ SAR_RX_MASK_SET(HalDev->dev_base) = (1<<Ch);
-+
-+ /* call SAR layer to complete the channel setup - hardware configuration of ch */
-+ Ret = HalDev->SarFunc->ChannelSetup(HalDev->SarDev, &HalDev->ChData[Ch]); /* ~GSG 030410 */
-+ if (Ret) /* +GSG 030410 */
-+ return (Ret); /* +GSG 030410 */
-+
-+ /* channel officially open for business */
-+ HalDev->ChIsOpen[Ch][DIRECTION_TX] = TRUE;
-+ HalDev->ChIsOpen[Ch][DIRECTION_RX] = TRUE;
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/*
-+ * Sets up HAL default channel configuration parameter values.
-+ */
-+static void ChannelConfigInit(HAL_DEVICE *HalDev, CHANNEL_INFO *HalChn)
-+ {
-+ int Ch = HalChn->Channel;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]ChannelConfigInit(HalDev:%08x, HalChn:%08x)\n", (bit32u)HalDev,
-+ (bit32u)HalChn);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ HalDev->ChData[Ch].Channel = Ch;
-+ HalDev->ChData[Ch].TxNumBuffers = cfg_tx_num_bufs[Ch];
-+ HalDev->ChData[Ch].RxNumBuffers = cfg_rx_num_bufs[Ch];
-+ HalDev->ChData[Ch].RxBufSize = cfg_rx_buf_size[Ch];
-+ HalDev->ChData[Ch].RxBufferOffset = cfg_rx_buf_offset[Ch];
-+ HalDev->ChData[Ch].TxNumQueues = cfg_tx_num_queues[Ch];
-+ HalDev->ChData[Ch].CpcsUU = cfg_cpcs_uu[Ch];
-+ HalDev->ChData[Ch].DaMask = cfg_da_mask[Ch];
-+ HalDev->ChData[Ch].Priority = cfg_priority[Ch];
-+ HalDev->ChData[Ch].PktType = cfg_pkt_type[Ch];
-+ HalDev->ChData[Ch].Vci = cfg_vci[Ch];
-+ HalDev->ChData[Ch].Vpi = cfg_vpi[Ch];
-+ HalDev->ChData[Ch].TxVc_CellRate = cfg_cell_rate[Ch];
-+ HalDev->ChData[Ch].TxVc_QosType = cfg_qos_type[Ch];
-+ HalDev->ChData[Ch].TxVc_Mbs = cfg_mbs[Ch];
-+ HalDev->ChData[Ch].TxVc_Pcr = cfg_pcr[Ch];
-+ HalDev->ChData[Ch].Gfc = cfg_gfc[Ch];
-+ HalDev->ChData[Ch].Clp = cfg_clp[Ch];
-+ HalDev->ChData[Ch].Pti = cfg_pti[Ch];
-+ HalDev->ChData[Ch].RxServiceMax = cfg_rx_max_service[Ch];
-+ HalDev->ChData[Ch].TxServiceMax = cfg_tx_max_service[Ch];
-+ }
-+
-+/*
-+ * Update per channel data in the HalDev based channel structure.
-+ * If a certain channel parameter has been passed with the HAL_DEFAULT
-+ * value (0xFFFFFFFF), then do not copy it.
-+ */
-+static void ChannelConfigUpdate(HAL_DEVICE *HalDev, CHANNEL_INFO *HalChn)
-+ {
-+ int Ch = HalChn->Channel;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]ChannelConfigUpdate(HalDev:%08x, HalChn:%08x)\n", (bit32u)HalDev,
-+ (bit32u)HalChn);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ HalDev->ChData[Ch].Channel = Ch;
-+
-+ /* ChannelUpdate is a macro defined in cpcommon.h. It requires
-+ the presence of the variables named 'Ch' and 'HalChn'.*/
-+ ChannelUpdate(DaMask);
-+ ChannelUpdate(Priority);
-+ ChannelUpdate(PktType);
-+ ChannelUpdate(Vci);
-+ ChannelUpdate(Vpi);
-+ ChannelUpdate(CpcsUU);
-+ ChannelUpdate(Gfc);
-+ ChannelUpdate(Clp);
-+ ChannelUpdate(Pti);
-+ /* AAL5 Stuff */
-+ ChannelUpdate(TxNumBuffers);
-+ ChannelUpdate(RxNumBuffers);
-+ ChannelUpdate(RxBufSize);
-+ ChannelUpdate(RxBufferOffset);
-+ ChannelUpdate(TxNumQueues);
-+ ChannelUpdate(TxServiceMax);
-+ ChannelUpdate(RxServiceMax);
-+ /* PDSP STATE RAM */
-+ ChannelUpdate(TxVc_CellRate);
-+ ChannelUpdate(TxVc_QosType);
-+ ChannelUpdate(TxVc_Mbs);
-+ ChannelUpdate(TxVc_Pcr);
-+ /* OAM */
-+ ChannelUpdate(TxVc_AtmHeader);
-+ ChannelUpdate(TxVc_OamTc);
-+ ChannelUpdate(TxVc_VpOffset);
-+ ChannelUpdate(RxVc_OamCh);
-+ ChannelUpdate(RxVc_OamToHost);
-+ ChannelUpdate(RxVc_AtmHeader);
-+ ChannelUpdate(RxVc_VpOffset);
-+ ChannelUpdate(RxVc_OamTc);
-+ ChannelUpdate(TxVp_AtmHeader);
-+ ChannelUpdate(TxVp_OamTc);
-+ ChannelUpdate(RxVp_AtmHeader);
-+ ChannelUpdate(RxVp_OamCh);
-+ ChannelUpdate(RxVp_OamTc);
-+ ChannelUpdate(RxVp_OamToHost);
-+ ChannelUpdate(RxVp_OamVcList);
-+ ChannelUpdate(FwdUnkVc);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function opens the specified channel. The caller must populate
-+ * the @p HalCh structure. CPHAL default values may be requested for any or all
-+ * members of the @p HalCh structure by supplying a value of 0xFFFFFFFF for the
-+ * given member. The @p OsSetup parameter is a pointer to an OS defined
-+ * data structure. If the CPHAL later calls @c MallocRxBuffer(), this pointer
-+ * is returned in that call.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param HalCh Per channel information structure. Implementation specific.
-+ * @param OsSetup Pointer to an OS-defined data structure.
-+ *
-+ * @return EC_NO_ERRORS (ok). <BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * @ref EC_VAL_NULL_CH_STRUCT "EC_VAL_NULL_CH_STRUCT"<BR>
-+ * @ref EC_VAL_INVALID_CH "EC_VAL_INVALID_CH"<BR>
-+ * @ref EC_VAL_CH_ALREADY_OPEN "EC_VAL_CH_ALREADY_OPEN"<BR>
-+ * @ref EC_VAL_RX_STATE_RAM_NOT_CLEARED "EC_VAL_RX_STATE_RAM_NOT_CLEARED"<BR>
-+ * @ref EC_VAL_TX_STATE_RAM_NOT_CLEARED "EC_VAL_TX_STATE_RAM_NOT_CLEARED"<BR>
-+ * @ref EC_VAL_TCB_MALLOC_FAILED "EC_VAL_TCB_MALLOC_FAILED"<BR>
-+ * @ref EC_VAL_RCB_MALLOC_FAILED "EC_VAL_RCB_MALLOC_FAILED"<BR>
-+ * @ref EC_VAL_RX_BUFFER_MALLOC_FAILED "EC_VAL_RX_BUFFER_MALLOC_FAILED"<BR>
-+ * @ref EC_VAL_LUT_NOT_READY "EC_VAL_LUT_NOT_READY"<BR>
-+ */
-+static int halChannelSetup(HAL_DEVICE *HalDev, CHANNEL_INFO *HalCh, OS_SETUP *OsSetup)
-+ {
-+ int Ch, Ret;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]halChannelSetup(HalDev:%08x, HalCh:%08x, OsSetup:%08x)\n", (bit32u)HalDev,
-+ (bit32u)HalCh, (bit32u)OsSetup);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Verify proper device state */
-+ if (HalDev->State < enInitialized)
-+ return (EC_AAL5|EC_FUNC_CHSETUP|EC_VAL_INVALID_STATE);
-+
-+ /* We require the channel structure to be passed, even if it only contains
-+ the channel number */
-+ if (HalCh == NULL)
-+ {
-+ return(EC_AAL5|EC_FUNC_CHSETUP|EC_VAL_NULL_CH_STRUCT);
-+ }
-+
-+ Ch = HalCh->Channel;
-+
-+ if ((Ch < 0) || (Ch > MAX_AAL5_CHAN))
-+ {
-+ return(EC_AAL5|EC_FUNC_CHSETUP|EC_VAL_INVALID_CH);
-+ }
-+
-+ /* if channel is already open, this call is invalid */
-+ if ((HalDev->ChIsOpen[Ch][DIRECTION_TX] == TRUE) || (HalDev->ChIsOpen[Ch][DIRECTION_RX] == TRUE))
-+ {
-+ return(EC_AAL5|EC_FUNC_CHSETUP|EC_VAL_CH_ALREADY_OPEN);
-+ }
-+
-+ /* channel is closed, but might be setup. If so, reopen the hardware channel. */
-+ if ((HalDev->ChIsSetup[Ch][DIRECTION_TX] == FALSE) && (HalDev->ChIsSetup[Ch][DIRECTION_RX] == FALSE))
-+ {
-+ /* Setup channel configuration */
-+ /* Store OS_SETUP */
-+ HalDev->ChData[Ch].OsSetup = OsSetup; /* ~GSG 030508 */
-+
-+ /* setup HAL default values for this channel first */
-+ ChannelConfigInit(HalDev, HalCh);
-+
-+ /* retrieve options.conf channel parameters */
-+ /* currently ignoring return value, making the choice that it's okay if
-+ the user does not supply channel configuration in the data store */
-+ ChannelConfigGet(HalDev, HalCh);
-+
-+ /* update HalDev with data given in HalCh */
-+ ChannelConfigUpdate(HalDev, HalCh);
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(8))
-+ {
-+ dbgChannelConfigDump(HalDev, Ch);
-+ }
-+#endif
-+
-+ /* HalDev->ChIsSetup[Ch][0] = TRUE; */
-+ HalDev->ChIsSetup[Ch][DIRECTION_TX] = TRUE;
-+ HalDev->ChIsSetup[Ch][DIRECTION_RX] = TRUE;
-+
-+ /* I don't initialize RcbStart or TcbStart here because their values may be
-+ reused across several Setup/Teardown calls */
-+ }
-+
-+ /* If the hardware has been opened (is out of reset), then configure the channel
-+ in the hardware. NOTE: ChannelConfigApply calls the CPSAR ChannelSetup()! */
-+ if (HalDev->State == enOpened)
-+ {
-+ Ret = ChannelConfigApply(HalDev, HalCh);
-+ if (Ret) return (Ret);
-+ }
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/*
-+ * This function configures the rate at which the OAM timer scheduler
-+ * channels will be scheduled. The value of OamRate is the number of
-+ * clock ticks between cell transmissions (if OAM function is sourcing
-+ * cells), or the number of clock ticks between events or absence of events
-+ * (if OAM function is sinking cells). The value of i indicates
-+ * which OAM function to apply the rate to. A list is given below.
-+ *
-+ * @par Oam Function Values
-+ * - 0 : Loopback source
-+ * - 1 : F4 CC source
-+ * - 2 : F5 CC source
-+ * - 3 : F4 CC sink
-+ * - 4 : F5 CC sink
-+ * - 5 : F4 TX AIS source
-+ * - 6 : F5 TX AIS source
-+ * - 7 : F4 RX RDI source
-+ * - 8 : F5 RX RDI source
-+ * - 9 : F4 AIS monitor
-+ * - 10 : F5 AIS monitor
-+ *
-+ * The following is information on how to calculate the OAM rate. There
-+ * is only one OAM timer that is shared among all channels. Therefore, if
-+ * you wanted an OAM source function (ex. F4 CC source) to generate 1 cell/sec
-+ * across 8 channels, you would need to configure the OAM timer to schedule 8
-+ * cells/sec. In addition, the credits are shared between segment and end-to-end
-+ * type OAM cells, so if you were sending both types of cells, you would
-+ * need to configure the OAM timer for 16 cells/sec. However, the clock
-+ * rate must be specified in clock ticks between events. Using an example
-+ * clock rate of 125 MHz, the rate in clock ticks can be calculated by
-+ * dividing 125 Mhz by 16 cells/sec. The results is 7812500 ticks. Thus,
-+ * every 7812500 clock cycles, an OAM cell will be generated for the F4 CC
-+ * Source function.
-+ */
-+static void OamRateConfig(HAL_DEVICE *HalDev)
-+ {
-+ int i;
-+ bit32u OamRate, Freq = HalDev->SarFrequency;
-+
-+ /* Configure OAM Timer State Block */
-+ for (i=0; i<NUM_OAM_RATES; i++)
-+ {
-+ switch(i)
-+ {
-+ case 0: OamRate = ((Freq/1000)*HalDev->OamLbTimeout);
-+ break;
-+ case 1:
-+ case 2:
-+ case 5:
-+ case 6:
-+ case 7:
-+ case 8: OamRate = (Freq/38);
-+ break;
-+ case 3:
-+ case 4: OamRate = ((Freq*3) + (Freq/2))/38;
-+ break;
-+ case 9:
-+ case 10: OamRate = ((Freq*2) + (Freq/2))/38;
-+ break;
-+ default: OamRate = (Freq*5);
-+ break;
-+ }
-+
-+ *(pOAM_TIMER_STATE_WORD_0(HalDev->dev_base) + (i*64) + 1) = OamRate;
-+ }
-+ }
-+
-+/**
-+ * @ingroup AAL5_Functions
-+ * This function is used to enable OAM functions (other than loopback) for a
-+ * particular channel. The channel (embedded within OamConfig - see below) must
-+ * have been configured for firmware OAM (not host OAM) for these configurations
-+ * to take effect. More than one function may be enabled at one time.
-+ * If more than one function is enabled, they must all be of the same level, all
-+ * F4(VP) or all F5(VC).
-+ *
-+ * The usage of the OamConfig parameter is described through the table below. To
-+ * initiate firmware OAM, set one or more bits in OamConfig corresponding to the
-+ * various OAM functions. To disable firmware OAM functions, set bit 30 along
-+ * with any other combination of bits to shutdown various OAM functions at once.
-+ *
-+ * Acronyms:
-+ * e2e - end to end, seg - segment, CC - continuity check,
-+ * AIS - Alarm Indication Signal
-+ *
-+ * @par Bit: Function: Description
-+ * - 31: Reserved:
-+ * - 30: Setup/Teardown: 0 - enable, 1 - disable (Note 1)
-+ * - 29: F4 CC Source seg: 0 - no action, 1 - configure
-+ * - 28: F4 CC Source e2e: 0 - no action, 1 - configure
-+ * - 27: F4 AIS Source seg: 0 - no action, 1 - configure
-+ * - 26: F4 AIS Source e2e: 0 - no action, 1 - configure
-+ * - 25: F5 CC Source seg: 0 - no action, 1 - configure
-+ * - 24: F5 CC Source e2e: 0 - no action, 1 - configure
-+ * - 23: F5 AIS Source seg: 0 - no action, 1 - configure
-+ * - 22: F5 AIS Source e2e: 0 - no action, 1 - configure
-+ * - 21: F4 CC Sink seg: 0 - no action, 1 - configure
-+ * - 20: F4 CC Sink e2e: 0 - no action, 1 - configure
-+ * - 19: F5 CC Sink seg: 0 - no action, 1 - configure
-+ * - 18: F5 CC Sink e2e: 0 - no action, 1 - configure
-+ * - 17:8: Reserved:
-+ * - 7:0: Channel: AAL5/AAL2 VC/VP channel (Note 2)
-+ *
-+ *
-+ * Note 1: This bit must be clear to enable the specified OAM function.
-+ * Note 2: This must specify the VC channel for F5 functions, and the VP
-+ * channel for F4 functions.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param OamConfig A 32-bit integer field defined as follows:
-+ */
-+static void halOamFuncConfig(HAL_DEVICE *HalDev, unsigned int OamConfig)
-+ {
-+ /* GPR 0 */
-+ SAR_PDSP_HOST_OAM_CONFIG_REG(HalDev->dev_base) = OamConfig;
-+ }
-+
-+/**
-+ * @ingroup AAL5_Functions
-+ * This function is used to enable OAM loopback functions for a particular
-+ * channel. The channel (embedded within OamConfig - see below) must have been
-+ * configured for firmware OAM (not host OAM) for these configurations to take
-+ * effect. Only one loopback function can be enabled at a time.
-+ *
-+ * The LLID is inserted into to the OAM cell's LLID field, and it specifies the
-+ * LLID of the connection point in the network where the generated loopback cell
-+ * should be turned around. The LLID is composed of 4 32-bit words, and this
-+ * function expects the caller to pass an array of 4 words in the LLID field.
-+ * The CorrelationTag is a 32-bit word that the PDSP uses to correlate loopback
-+ * commands with loopback responses. It should simply be changed for each
-+ * call, and there is no restriction on the value used for CorrelationTag.
-+ *
-+ * The usage of the OamConfig parameter is described through the table below. To
-+ * initiate firmware OAM, set one of the bits corresponding to the
-+ * various loopback OAM functions. Note that only one loopback source may be
-+ * commanded at a time.
-+ *
-+ * Acronyms:
-+ * e2e - end to end, seg - segment, LB - loopback
-+ *
-+ * @par Bit: Function: Description
-+ * - 31:16: Reserved:
-+ * - 15: F4 LB Source seg: 0 - no action, 1 - configure (Note 1)
-+ * - 14: F4 LB Source seg: 0 - no action, 1 - configure (Note 1)
-+ * - 13: F4 LB Source e2e: 0 - no action, 1 - configure (Note 1)
-+ * - 12: F4 LB Source e2e: 0 - no action, 1 - configure (Note 1)
-+ * - 11:8: Reserved:
-+ * - 7:0: Channel: AAL5/AAL2 VC/VP channel (Note 2)
-+ *
-+ *
-+ * Note 1: Only one LB function may be enabled at one time. Once enabled,
-+ * the PDSP will time out after 5 seconds. The host must wait until it
-+ * has received the result of the current LB request before initiating
-+ * a new request. <BR>
-+ * Note 2: This must specify the VC channel for F5 functions, and the VP
-+ * channel for F4 functions.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param OamConfig A 32-bit integer field defined as follows:
-+ * @param LLID Loopback Location Identifier (passed as 4 word array).
-+ * Must be configured in big endian format.
-+ * @param CorrelationTag 32-bit tag correlates loopback commands with loopback
-+ * responses. Must be configured in big endian format.
-+ *
-+ */
-+static void halOamLoopbackConfig(HAL_DEVICE *HalDev, unsigned int OamConfig, unsigned int *LLID, unsigned int CorrelationTag)
-+ {
-+ volatile bit32u *tmp;
-+
-+ /* test to see if this is a loopback command */
-+ if (OamConfig & 0xf000)
-+ {
-+ /* write the OAM correlation tag (GPR 1) */
-+ SAR_PDSP_OAM_CORR_REG(HalDev->dev_base) = CorrelationTag;
-+
-+ /* write the LLID */
-+ tmp = pOAM_CONFIG_BLOCK_WORD_0(HalDev->dev_base);
-+
-+ /* advance past the CPID */
-+ tmp += 4;
-+
-+ *tmp++ = LLID[0];
-+ *tmp++ = LLID[1];
-+ *tmp++ = LLID[2];
-+ *tmp = LLID[3];
-+
-+ /* GPR 0 */
-+ SAR_PDSP_HOST_OAM_CONFIG_REG(HalDev->dev_base) = OamConfig;
-+ }
-+ }
-+
-+/*
-+ * This function allows the host software to access any register directly.
-+ * Primarily used for debug.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param RegOffset Hexadecimal offset to desired register (from device base addr)
-+ *
-+ * @return Volatile pointer to desired register.
-+ */
-+static volatile bit32u* halRegAccess(HAL_DEVICE *HalDev, bit32u RegOffset)
-+ {
-+ /* compute the register address */
-+ return ((volatile bit32u *)(HalDev->dev_base + RegOffset));
-+ }
-+
-+#ifdef __CPHAL_DEBUG
-+static void dbgConfigDump(HAL_DEVICE *HalDev)
-+ {
-+ dbgPrintf(" AAL5 Inst %d Config Dump:\n", HalDev->Inst);
-+ dbgPrintf(" Base :%08x, offset:%08d\n",
-+ HalDev->dev_base, HalDev->offset);
-+ dbgPrintf(" Interrupt:%08d, debug :%08d\n",
-+ HalDev->interrupt, HalDev->debug);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * Performs a variety of control functions on the CPHAL module. It is used to
-+ * modify/read configuration parameters and to initiate internal functions.
-+ * The @p Key indicates the function to perform or the parameter to access (note
-+ * that these Keys are identical to those used in accessing the configuration data
-+ * store). @p Action is applicable to parameters only, and indicates what the
-+ * CPHAL should do with the parameter (i.e. "Set", "Get", etc..). The actions
-+ * for each parameter are defined in the module specific documentation.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param Key Key specifying the parameter to change or internal function to initiate. See module specific documentation for available keys.
-+ * @param Action Specifies the action to take. See module specific documentation for available actions.
-+ * @param Value Pointer to new value for given @p Key parameter ("Set"), or returned value of Key ("Get").
-+ *
-+ * @return EC_NO_ERRORS (ok).<BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * @ref EC_VAL_KEY_NOT_FOUND "EC_VAL_KEY_NOT_FOUND"<BR>
-+ * @ref EC_VAL_ACTION_NOT_FOUND "EC_VAL_ACTION_NOT_FOUND"<BR>
-+ */
-+static int halControl(HAL_DEVICE *HalDev, const char *Key, const char *Action, void *Value)
-+ {
-+ int Level, Ch, KeyFound=0, ActionFound=0, rc=EC_NO_ERRORS, Queue;
-+ char *TmpKey = (char *)Key;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]halControl(HalDev:%08x, Key:%s, Action:%s, Value:%08x)\n", (bit32u)HalDev,
-+ Key, Action, (bit32u)Value);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Verify proper device state */
-+ if (HalDev->State < enInitialized)
-+ return (EC_AAL5|EC_FUNC_CONTROL|EC_VAL_INVALID_STATE);
-+
-+ if (HalDev->OsFunc->Strcmpi(Key, "Debug") == 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ HalDev->debug = *(int *)Value;
-+ /* also setup debug variable in CPSAR module */
-+ rc = HalDev->SarFunc->Control(HalDev->SarDev, "Debug", "Set", Value);
-+ }
-+ }
-+
-+ if (HalDev->OsFunc->Strstr(Key, "FwdUnkVc.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("FwdUnkVc.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ HalDev->ChData[Ch].FwdUnkVc = *(int *)Value;
-+
-+ if ((HalDev->State == enOpened) && (HalDev->ChData[Ch].PktType == 3))
-+ rc = HalDev->SarFunc->Control(HalDev->SarDev, Key, Action, Value);
-+ }
-+ }
-+
-+ /* +GSG 030407 */
-+ if (HalDev->OsFunc->Strcmpi(Key, "OamMode") == 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ rc = HalDev->SarFunc->Control(HalDev->SarDev, Key, Action, Value);
-+ }
-+
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+ rc = HalDev->SarFunc->Control(HalDev->SarDev, Key, Action, Value);
-+ }
-+ }
-+
-+ /* +GSG 030307 */
-+ if (HalDev->OsFunc->Strcmpi(Key, "Version") == 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+ *(const char **)Value = pszVersion_CPAAL5;
-+ }
-+ }
-+
-+ /* +GSG 030529 */
-+ if (HalDev->OsFunc->Strcmpi(Key, "TurboDslErrors") == 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+ *(int *)Value = HalDev->TurboDslErrors;
-+ }
-+ }
-+
-+ /* +GSG 030416 */
-+ if (HalDev->OsFunc->Strcmpi(Key, "F4_LB_Counter") == 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+ *(int *)Value = SAR_PDSP_OAM_F4_LB_COUNT_REG(HalDev->dev_base);
-+ }
-+ }
-+
-+ /* +GSG 030416 */
-+ if (HalDev->OsFunc->Strcmpi(Key, "F5_LB_Counter") == 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+ *(int *)Value = SAR_PDSP_OAM_F5_LB_COUNT_REG(HalDev->dev_base);
-+ }
-+ }
-+
-+ if (HalDev->OsFunc->Strstr(Key, "Stats;") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+ TmpKey += HalDev->OsFunc->Strlen("Stats;");
-+ Level = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+ TmpKey++;
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+ TmpKey++;
-+ Queue = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+ TmpKey++;
-+ StatsGet(HalDev, (void **)Value, Level, Ch, Queue);
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #100 */
-+ if (HalDev->OsFunc->Strstr(Key, "Gfc.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("Gfc.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* first, store new value in our channel structure */
-+ HalDev->ChData[Ch].Gfc = *(int *)Value;
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #100 */
-+ if (HalDev->OsFunc->Strstr(Key, "Clp.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("Clp.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* first, store new value in our channel structure */
-+ HalDev->ChData[Ch].Clp = *(int *)Value;
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #100 */
-+ if (HalDev->OsFunc->Strstr(Key, "Pti.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("Pti.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* first, store new value in our channel structure */
-+ HalDev->ChData[Ch].Pti = *(int *)Value;
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #100 */
-+ if (HalDev->OsFunc->Strstr(Key, "CpcsUU.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("CpcsUU.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* first, store new value in our channel structure */
-+ HalDev->ChData[Ch].CpcsUU = *(int *)Value;
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #100 */
-+ if (HalDev->OsFunc->Strstr(Key, "TxVc_CellRate.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("TxVc_CellRate.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* first, store new value in our channel structure */
-+ HalDev->ChData[Ch].TxVc_CellRate = *(int *)Value;
-+
-+ /* now, apply to PDSP state RAM */
-+ if (HalDev->State == enOpened)
-+ *(pPDSP_AAL5_TX_STATE_WORD_0(HalDev->dev_base)+(Ch*64))= HalDev->ChData[Ch].TxVc_CellRate;
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #100 */
-+ if (HalDev->OsFunc->Strstr(Key, "TxVc_Mbs.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("TxVc_Mbs.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* first, store new value in our channel structure */
-+ HalDev->ChData[Ch].TxVc_Mbs = *(int *)Value;
-+
-+ /* now, apply to PDSP state RAM */
-+ if (HalDev->State == enOpened)
-+ *(pPDSP_AAL5_TX_STATE_WORD_0(HalDev->dev_base)+(Ch*64)+2)= HalDev->ChData[Ch].TxVc_Mbs;
-+ }
-+ }
-+
-+ if (HalDev->OsFunc->Strstr(Key, "TxVc_AtmHeader.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("TxVc_AtmHeader.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* first, store new value in our channel structure */
-+ HalDev->ChData[Ch].TxVc_AtmHeader = *(int *)Value;
-+
-+ /* now, apply to PDSP state RAM */
-+ if (HalDev->State == enOpened)
-+ *(pPDSP_AAL5_TX_STATE_WORD_0(HalDev->dev_base)+(Ch*64)+6)= HalDev->ChData[Ch].TxVc_AtmHeader;
-+ }
-+ }
-+
-+ if (HalDev->OsFunc->Strstr(Key, "TxVp_AtmHeader.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("TxVp_AtmHeader.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* first, store new value in our channel structure */
-+ HalDev->ChData[Ch].TxVp_AtmHeader = *(int *)Value;
-+
-+ /* now, apply to PDSP state RAM */
-+ if (HalDev->State == enOpened)
-+ *(pPDSP_AAL5_TX_VP_STATE_WORD_0(HalDev->dev_base)+(Ch*64))= HalDev->ChData[Ch].TxVp_AtmHeader;
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #100 */
-+ if (HalDev->OsFunc->Strstr(Key, "TxVc_Pcr.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("TxVc_Pcr.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* first, store new value in our channel structure */
-+ HalDev->ChData[Ch].TxVc_Pcr = *(int *)Value;
-+
-+ /* now, apply to PDSP state RAM */
-+ if (HalDev->State == enOpened)
-+ *(pPDSP_AAL5_TX_STATE_WORD_0(HalDev->dev_base)+(Ch*64)+4)= HalDev->ChData[Ch].TxVc_Pcr;
-+ }
-+ }
-+
-+ /* +GSG 030428 */
-+ if (HalDev->OsFunc->Strstr(Key, "RxVc_OamCh.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("RxVc_OamCh.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* first, store new value in our channel structure */
-+ HalDev->ChData[Ch].RxVc_OamCh = (*(int *)Value) & 0xff;
-+
-+ /* now, apply to PDSP state RAM */
-+ if (HalDev->State == enOpened)
-+ *(pPDSP_AAL5_RX_STATE_WORD_0(HalDev->dev_base)+(Ch*64)) |= HalDev->ChData[Ch].RxVc_OamCh;
-+ }
-+ }
-+
-+ /* +GSG 030428 */
-+ if (HalDev->OsFunc->Strstr(Key, "RxVp_OamCh.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("RxVp_OamCh.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* first, store new value in our channel structure */
-+ HalDev->ChData[Ch].RxVp_OamCh = (*(int *)Value) & 0xff;
-+
-+ /* now, apply to PDSP state RAM */
-+ if (HalDev->State == enOpened)
-+ *(pPDSP_AAL5_RX_VP_STATE_WORD_0(HalDev->dev_base)+(Ch*64)+1) |= HalDev->ChData[Ch].RxVp_OamCh;
-+ }
-+ }
-+
-+ /* +GSG 030304 */
-+ /* Fixes PITS #98 */
-+ if (HalDev->OsFunc->Strstr(Key, "PdspEnable") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* this variable is controlled by the CPSAR module */
-+ if (HalDev->State == enOpened)
-+ {
-+ rc=HalDev->SarFunc->Control(HalDev->SarDev, "PdspEnable", "Set", Value);
-+ }
-+ }
-+ }
-+
-+ if (HalDev->OsFunc->Strstr(Key, "OamLbTimeout") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+
-+ HalDev->OamLbTimeout = *(int *)Value;
-+ /* this variable is controlled by the CPSAR module */
-+ if (HalDev->State == enOpened)
-+ {
-+ *(pOAM_TIMER_STATE_WORD_0(HalDev->dev_base) + 1) =
-+ ((HalDev->SarFrequency/1000) * HalDev->OamLbTimeout);
-+ }
-+ }
-+ }
-+
-+ /* +GSG 030306 (PITS #114) */
-+ if (HalDev->OsFunc->Strstr(Key, "DeviceCPID") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ unsigned int* local = (unsigned int *)Value;
-+ ActionFound=1;
-+ /* first, store new value in our hal structure */
-+ HalDev->DeviceCPID[0] = local[0];
-+ HalDev->DeviceCPID[1] = local[1];
-+ HalDev->DeviceCPID[2] = local[2];
-+ HalDev->DeviceCPID[3] = local[3];
-+
-+ /* now, apply to PDSP state RAM */
-+ if (HalDev->State == enOpened)
-+ {
-+ *(bit32u *)(pOAM_CONFIG_BLOCK_WORD_0(HalDev->dev_base) + 0) = HalDev->DeviceCPID[0];
-+ *(bit32u *)(pOAM_CONFIG_BLOCK_WORD_0(HalDev->dev_base) + 1) = HalDev->DeviceCPID[1];
-+ *(bit32u *)(pOAM_CONFIG_BLOCK_WORD_0(HalDev->dev_base) + 2) = HalDev->DeviceCPID[2];
-+ *(bit32u *)(pOAM_CONFIG_BLOCK_WORD_0(HalDev->dev_base) + 3) = HalDev->DeviceCPID[3];
-+ }
-+ }
-+ }
-+
-+ /* +GSG 030304 */
-+ /* Fixes PITS #99 */
-+ if (HalDev->OsFunc->Strstr(Key, "StrictPriority") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* used in halOpen to decide which interrupt handler to use */
-+ HalDev->StrictPriority = *(int *)Value;
-+ }
-+ }
-+
-+ if (HalDev->OsFunc->Strstr(Key, hcMaxFrags) != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+
-+ if ((*(int *)Value) > 0)
-+ HalDev->MaxFrags = *(int *)Value;
-+ else
-+ rc = (EC_AAL5|EC_FUNC_CONTROL|EC_VAL_INVALID_VALUE);
-+ }
-+
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+
-+ *(int *)Value = HalDev->MaxFrags;
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #103 */
-+ if (HalDev->OsFunc->Strstr(Key, "RxVc_RDICount.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("RxVc_RDICount.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* PDSP's Rx VC State word 3 contains the value */
-+ if (HalDev->State == enOpened)
-+ {
-+ *(int *)Value = (((*(pPDSP_AAL5_RX_STATE_WORD_0(HalDev->dev_base)+(Ch*64))) & RDI_CNT_MASK)>>RDI_CNT_SHIFT);
-+ }
-+ }
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("RxVc_RDICount.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* All sets write 0, this action is a clear only */
-+ if (HalDev->State == enOpened)
-+ {
-+ (*(pPDSP_AAL5_RX_STATE_WORD_0(HalDev->dev_base)+(Ch*64))) &=~ RDI_CNT_MASK;
-+ }
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #103 */
-+ if (HalDev->OsFunc->Strstr(Key, "RxVc_AISseg.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("RxVc_AISseg.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* PDSP's Rx VC State word 3 contains the value */
-+ if (HalDev->State == enOpened)
-+ {
-+ *(int *)Value = (((*(pPDSP_AAL5_RX_STATE_WORD_0(HalDev->dev_base)+(Ch*64)+3)) & AIS_SEG_MASK)>>AIS_SEG_SHIFT);
-+ }
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #103 */
-+ if (HalDev->OsFunc->Strstr(Key, "RxVc_AISetoe.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("RxVc_AISetoe.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* PDSP's Rx VC State word 3 contains the value */
-+ if (HalDev->State == enOpened)
-+ {
-+ *(int *)Value = (((*(pPDSP_AAL5_RX_STATE_WORD_0(HalDev->dev_base)+(Ch*64)+3)) & AIS_ETOE_MASK)>>AIS_ETOE_SHIFT);
-+ }
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #103 */
-+ if (HalDev->OsFunc->Strstr(Key, "RxVp_RDICount.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("RxVp_RDICount.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* PDSP's Rx VC State word 3 contains the value */
-+ if (HalDev->State == enOpened)
-+ {
-+ *(int *)Value = (((*(pPDSP_AAL5_RX_VP_STATE_WORD_0(HalDev->dev_base)+(Ch*64)+1)) & RDI_CNT_MASK)>>RDI_CNT_SHIFT);
-+ }
-+ }
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("RxVp_RDICount.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* All sets write 0, this action is a clear only */
-+ if (HalDev->State == enOpened)
-+ {
-+ (*(pPDSP_AAL5_RX_VP_STATE_WORD_0(HalDev->dev_base)+(Ch*64)+1)) &=~ RDI_CNT_MASK;
-+ }
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #103 */
-+ if (HalDev->OsFunc->Strstr(Key, "RxVp_AISseg.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("RxVp_AISseg.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* PDSP's Rx VC State word 3 contains the value */
-+ if (HalDev->State == enOpened)
-+ {
-+ *(int *)Value = (((*(pPDSP_AAL5_RX_VP_STATE_WORD_0(HalDev->dev_base)+(Ch*64)+2)) & AIS_SEG_MASK)>>AIS_SEG_SHIFT);
-+ }
-+ }
-+ }
-+
-+ /* +GSG 030306 */
-+ /* Fixes PITS #103 */
-+ if (HalDev->OsFunc->Strstr(Key, "RxVp_AISetoe.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("RxVp_AISetoe.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* PDSP's Rx VC State word 3 contains the value */
-+ if (HalDev->State == enOpened)
-+ {
-+ *(int *)Value = (((*(pPDSP_AAL5_RX_VP_STATE_WORD_0(HalDev->dev_base)+(Ch*64)+2)) & AIS_ETOE_MASK)>>AIS_ETOE_SHIFT);
-+ }
-+ }
-+ }
-+
-+ if (KeyFound == 0)
-+ rc = (EC_AAL5|EC_FUNC_CONTROL|EC_VAL_KEY_NOT_FOUND);
-+
-+ if (ActionFound == 0)
-+ rc = (EC_AAL5|EC_FUNC_CONTROL|EC_VAL_ACTION_NOT_FOUND);
-+
-+ return(rc);
-+ }
-+
-+/*
-+ * Sets up HAL default configuration parameter values.
-+ */
-+static void ConfigInit(HAL_DEVICE *HalDev)
-+ {
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]ConfigInit(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* configure some defaults with tnetx7300 values */
-+ HalDev->dev_base = 0xa3000000;
-+ HalDev->offset = 0;
-+ HalDev->interrupt = 15;
-+ HalDev->debug = 0;
-+ HalDev->MaxFrags = 46;
-+ HalDev->OamLbTimeout = 5000;
-+ }
-+
-+/*
-+ * Retrieve HAL configuration parameter values.
-+ */
-+static bit32u ConfigGet(HAL_DEVICE *HalDev)
-+ {
-+ bit32u Ret;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]ConfigGet(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* get the configuration parameters common to all modules */
-+ Ret = ConfigGetCommon(HalDev);
-+ if (Ret) return (EC_AAL5|Ret);
-+
-+ /* get AAL5 specific configuration parameters here */
-+ Ret = HalDev->OsFunc->Control(HalDev->OsDev, hcSarFrequency, pszGET, &HalDev->SarFrequency); /* GSG +030416*/
-+ if (Ret) /* GSG +030416*/
-+ HalDev->SarFrequency = 200000000; /* 200 Mhz default */ /* GSG +030416*/
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function initializes the CPHAL module. It gathers all
-+ * necessary global configuration info from the configuration file, and
-+ * performs initialization and configuration of the device. Note that
-+ * the device operation is not started until the OS calls @c Open().
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return EC_NO_ERRORS (ok). <BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * @ref EC_VAL_BASE_ADDR_NOT_FOUND "EC_VAL_BASE_ADDR_NOT_FOUND"<BR>
-+ * @ref EC_VAL_RESET_BIT_NOT_FOUND "EC_VAL_RESET_BIT_NOT_FOUND"<BR>
-+ * @ref EC_VAL_INTERRUPT_NOT_FOUND "EC_VAL_INTERRUPT_NOT_FOUND"<BR>
-+ * @ref EC_VAL_OFFSET_NOT_FOUND "EC_VAL_OFFSET_NOT_FOUND"<BR>
-+ */
-+static int halInit(HAL_DEVICE *HalDev)
-+ {
-+ int i;
-+ bit32u error_code;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]halInit(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Verify proper device state */
-+ if (HalDev->State != enDevFound)
-+ return(EC_AAL5|EC_FUNC_HAL_INIT|EC_VAL_INVALID_STATE);
-+
-+ /* Configure HAL defaults */
-+ ConfigInit(HalDev);
-+
-+ /* Retrieve HAL configuration parameters from data store */
-+ error_code = ConfigGet(HalDev);
-+ if (error_code) return (error_code);
-+
-+ /* Other items (OAM related) that need to be passed in somehow */
-+ HalDev->DeviceCPID[0] = 0xffffffff;
-+ HalDev->DeviceCPID[1] = 0xffffffff;
-+ HalDev->DeviceCPID[2] = 0xffffffff;
-+ HalDev->DeviceCPID[3] = 0xffffffff;
-+ HalDev->LBSourceLLID[0] = 0xffffffff;
-+ HalDev->LBSourceLLID[1] = 0xffffffff;
-+ HalDev->LBSourceLLID[2] = 0xffffffff;
-+ HalDev->LBSourceLLID[3] = 0xffffffff;
-+
-+ /* Initialize SAR layer*/
-+ error_code = HalDev->SarFunc->Init(HalDev->SarDev);
-+ if (error_code) return (error_code);
-+
-+ /* Initialize various HalDev members. This is probably overkill, since these
-+ are initialized in ChannelSetup() and HalDev is cleared in InitModule(). */
-+ for (i=0; i<NUM_AAL5_CHAN; i++)
-+ {
-+ HalDev->InRxInt[i]=FALSE;
-+ HalDev->ChIsOpen[i][DIRECTION_TX] = FALSE;
-+ HalDev->ChIsOpen[i][DIRECTION_RX] = FALSE;
-+ HalDev->TcbStart[i][0] = 0;
-+ HalDev->TcbStart[i][1] = 0;
-+ HalDev->RcbStart[i] = 0;
-+ }
-+
-+ /* initialize SAR stats */
-+ StatsClear(HalDev);
-+
-+ /* init Stat pointers */
-+
-+ /* even though these statistics may be for multiple channels/queues, i need
-+ only configure the pointer to the beginning of the array, and I can index
-+ from there if necessary */
-+ StatsTable0[0].StatPtr = &HalDev->Stats.CrcErrors[0];
-+ StatsTable0[1].StatPtr = &HalDev->Stats.LenErrors[0];
-+ StatsTable0[2].StatPtr = &HalDev->Stats.AbortErrors[0];
-+ StatsTable0[3].StatPtr = &HalDev->Stats.StarvErrors[0];
-+
-+ StatsTable1[0].StatPtr = &HalDev->Stats.DmaLenErrors[0];
-+ StatsTable1[1].StatPtr = &HalDev->Stats.TxMisQCnt[0][0];
-+ StatsTable1[2].StatPtr = &HalDev->Stats.RxMisQCnt[0];
-+ StatsTable1[3].StatPtr = &HalDev->Stats.TxEOQCnt[0][0];
-+ StatsTable1[4].StatPtr = &HalDev->Stats.RxEOQCnt[0];
-+ StatsTable1[5].StatPtr = &HalDev->Stats.RxPacketsServiced[0];
-+ StatsTable1[6].StatPtr = &HalDev->Stats.TxPacketsServiced[0][0];
-+ StatsTable1[7].StatPtr = &HalDev->Stats.RxMaxServiced;
-+ StatsTable1[8].StatPtr = &HalDev->Stats.TxMaxServiced[0][0];
-+ StatsTable1[9].StatPtr = &HalDev->Stats.RxTotal;
-+ StatsTable1[10].StatPtr = &HalDev->Stats.TxTotal;
-+
-+ StatsTable2[0].StatPtr = (bit32u *)&HalDev->RcbPool[0];
-+ StatsTable2[1].StatPtr = &HalDev->RxActQueueCount[0];
-+ StatsTable2[2].StatPtr = (bit32u *)&HalDev->RxActQueueHead[0];
-+ StatsTable2[3].StatPtr = (bit32u *)&HalDev->RxActQueueTail[0];
-+ StatsTable2[4].StatPtr = &HalDev->RxActive[0];
-+ StatsTable2[5].StatPtr = (bit32u *)&HalDev->RcbStart[0];
-+ StatsTable2[6].StatPtr = &HalDev->RxTeardownPending[0];
-+ StatsTable2[7].StatPtr = (bit32u *)&HalDev->TcbPool[0][0];
-+ StatsTable2[8].StatPtr = &HalDev->TxActQueueCount[0][0];
-+ StatsTable2[9].StatPtr = (bit32u *)&HalDev->TxActQueueHead[0][0];
-+ StatsTable2[10].StatPtr = (bit32u *)&HalDev->TxActQueueTail[0][0];
-+ StatsTable2[11].StatPtr = &HalDev->TxActive[0][0];
-+ StatsTable2[12].StatPtr = (bit32u *)&HalDev->TcbStart[0][0];
-+ StatsTable2[13].StatPtr = &HalDev->TxTeardownPending[0];
-+
-+ StatsTable4[0].StatPtr = &HalDev->dev_base;
-+ StatsTable4[1].StatPtr = &HalDev->offset;
-+ StatsTable4[2].StatPtr = &HalDev->interrupt;
-+ StatsTable4[3].StatPtr = &HalDev->debug;
-+ StatsTable4[4].StatPtr = &HalDev->Inst;
-+
-+ StatsTable3[0].StatPtr = &HalDev->ChData[0].RxBufSize;
-+ StatsTable3[1].StatPtr = &HalDev->ChData[0].RxBufferOffset;
-+ StatsTable3[2].StatPtr = &HalDev->ChData[0].RxNumBuffers;
-+ StatsTable3[3].StatPtr = &HalDev->ChData[0].RxServiceMax;
-+ StatsTable3[4].StatPtr = &HalDev->ChData[0].TxNumBuffers;
-+ StatsTable3[5].StatPtr = &HalDev->ChData[0].TxNumQueues;
-+ StatsTable3[6].StatPtr = &HalDev->ChData[0].TxServiceMax;
-+ StatsTable3[7].StatPtr = &HalDev->ChData[0].CpcsUU;
-+ StatsTable3[8].StatPtr = &HalDev->ChData[0].Gfc;
-+ StatsTable3[9].StatPtr = &HalDev->ChData[0].Clp;
-+ StatsTable3[10].StatPtr = &HalDev->ChData[0].Pti;
-+ StatsTable3[11].StatPtr = &HalDev->ChData[0].DaMask;
-+ StatsTable3[12].StatPtr = &HalDev->ChData[0].Priority;
-+ StatsTable3[13].StatPtr = &HalDev->ChData[0].PktType;
-+ StatsTable3[14].StatPtr = &HalDev->ChData[0].Vci;
-+ StatsTable3[15].StatPtr = &HalDev->ChData[0].Vpi;
-+ StatsTable3[16].StatPtr = &HalDev->ChData[0].TxVc_CellRate;
-+ StatsTable3[17].StatPtr = &HalDev->ChData[0].TxVc_QosType;
-+ StatsTable3[18].StatPtr = &HalDev->ChData[0].TxVc_Mbs;
-+ StatsTable3[19].StatPtr = &HalDev->ChData[0].TxVc_Pcr;
-+
-+ /* update device state */
-+ HalDev->State = enInitialized;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(9))
-+ dbgConfigDump(HalDev);
-+#endif
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/*
-+ * Use this function to actually send after queuing multiple packets using
-+ * Send(). This is a debug only function that should be removed - it was
-+ * necessary to properly implement my loopback tests.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param Queue Queue number to kick.
-+ *
-+ * @return 0 OK, Non-Zero Not OK
-+ */
-+static int halKick(HAL_DEVICE *HalDev, int Queue)
-+ {
-+ int Ch;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]halKick(HalDev:%08x. Queue:%d)\n", (bit32u)HalDev, Queue);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ for (Ch = 0; Ch < 16; Ch ++)
-+ {
-+ if ((!HalDev->TxActive[Ch][Queue]) && (HalDev->TxActQueueHead[Ch][Queue] != 0))
-+ {
-+ *(pTX_DMA_STATE_WORD_0(HalDev->dev_base)+(Ch*64)+Queue)=
-+ VirtToPhys(HalDev->TxActQueueHead[Ch][Queue]);
-+ HalDev->TxActive[Ch][Queue]=TRUE;
-+ }
-+ }
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/* +GSG 030305 For PITS #99
-+ * Alternate interrupt handler that uses the INT_VECTOR in order to
-+ * provide strict priority handling among channels, beginning with Ch 0.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param MoreWork (Output) When set to 1, indicates that there is more work to do.
-+ * Caller should ensure that the value pointed at is set to 0
-+ * prior to the call.
-+ * @return 0 OK, non-zero error.
-+ */
-+static int DeviceIntAlt(HAL_DEVICE *HalDev, int *MoreWork)
-+ {
-+ int tmp, Ch, WorkFlag;
-+ bit32u rc;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]DeviceIntAlt(HalDev:%08x, MoreWork:%08x)\n", (bit32u)HalDev, (bit32u)MoreWork);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Verify proper device state - important because a call prior to Open would
-+ result in a lockup */
-+ if (HalDev->State != enOpened)
-+ return(EC_AAL5|EC_FUNC_DEVICE_INT_ALT|EC_VAL_INVALID_STATE);
-+
-+ if ((tmp=SAR_INTR_VECTOR(HalDev->dev_base))&INT_PENDING)
-+ {
-+ /*printf("\015 %d RxQ",HalDev->RxActQueueCount[0]);
-+ HalDev->OsFunc->Control(HalDev->OsDev, enSIO_FLUSH, enNULL, 0); */
-+
-+ if (tmp&TXH_PEND)
-+ {
-+ /* decide which channel to service */
-+ Ch = (SAR_INTR_VECTOR(HalDev->dev_base) & TXH_PEND_INVEC);
-+
-+ rc = TxInt(HalDev,Ch,0,&WorkFlag);
-+ if (rc) return (rc);
-+
-+ if (WorkFlag == 1)
-+ *MoreWork = 1;
-+ }
-+
-+ if (tmp&TXL_PEND)
-+ {
-+ /* decide which channel to service */
-+ Ch = ((SAR_INTR_VECTOR(HalDev->dev_base) & TXL_PEND_INVEC) >> 4);
-+
-+ rc = TxInt(HalDev,Ch,1,&WorkFlag);
-+ if (rc) return (rc);
-+
-+ if (WorkFlag == 1)
-+ *MoreWork = 1;
-+ }
-+
-+ if (tmp&RX_PEND)
-+ {
-+ /* decide which channel to service */
-+ Ch = ((SAR_INTR_VECTOR(HalDev->dev_base) & RX_PEND_INVEC) >> 8);
-+
-+ rc = RxInt(HalDev,Ch,&WorkFlag);
-+ if (rc) return (rc);
-+
-+ if (WorkFlag == 1)
-+ *MoreWork = 1;
-+ }
-+
-+ if (tmp&STS_PEND)
-+ {
-+ /* GPR 2 code added for PITS 103 */
-+ /* determine interrupt source */
-+ Ch = ((SAR_INTR_VECTOR(HalDev->dev_base) & STS_PEND_INVEC) >> 12);
-+
-+ /* only if this is GPR 2 interrupt do we take action */
-+ if (Ch == 26)
-+ {
-+ /* pass loopback result back to OS */
-+ HalDev->OsFunc->Control(HalDev->OsDev, "OamLbResult", "Set",
-+ (bit32u *)pSAR_PDSP_OAM_LB_RESULT_REG(HalDev->dev_base));
-+ }
-+
-+ /* clear the interrupt */
-+ SAR_STATUS_CLR_REG(HalDev->dev_base) |= 0x04000000;
-+ }
-+
-+ if (tmp&AAL2_PEND)
-+ {
-+ /* no action defined */
-+ }
-+
-+ SAR_INTR_VECTOR(HalDev->dev_base) = 0;
-+ }
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/*
-+ * Called to service a module interrupt. This function determines
-+ * what type of interrupt occurred and dispatches the correct handler.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param MoreWork (Output) When set to 1, indicates that there is more work to do.
-+ * Caller should ensure that the value pointed at is set to 0
-+ * prior to the call.
-+ * @return 0 OK, non-zero error.
-+ */
-+static int DeviceInt(HAL_DEVICE *HalDev, int *MoreWork)
-+ {
-+ /*static int NextRxCh=0;
-+ static int NextTxCh[2]={0,0};*/
-+
-+ int tmp, Ch, FirstCh, WorkFlag;
-+ int NextTxLCh, NextTxHCh, NextRxCh;
-+ bit32u rc;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]DeviceInt(HalDev:%08x, MoreWork:%08x)\n", (bit32u)HalDev, (bit32u)MoreWork);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Verify proper device state - important because a call prior to Open would
-+ result in a lockup */
-+ if (HalDev->State != enOpened)
-+ return(EC_AAL5|EC_FUNC_DEVICE_INT|EC_VAL_INVALID_STATE);
-+
-+ NextTxHCh = HalDev->NextTxCh[0];
-+ NextTxLCh = HalDev->NextTxCh[1];
-+ NextRxCh = HalDev->NextRxCh;
-+
-+ /* service interrupts while there is more work to do */
-+ /*while (((tmp=SAR_INTR_VECTOR(HalDev->dev_base))&INT_PENDING) && (TotalPkts < 500))*/
-+ if ((tmp=SAR_INTR_VECTOR(HalDev->dev_base))&INT_PENDING)
-+ {
-+ /*printf("\015 %d RxQ",HalDev->RxActQueueCount[0]);
-+ HalDev->OsFunc->Control(HalDev->OsDev, enSIO_FLUSH, enNULL, 0); */
-+
-+ if (tmp&TXH_PEND)
-+ {
-+ /* decide which channel to service */
-+ FirstCh = NextTxHCh;
-+ while (1)
-+ {
-+ Ch = NextTxHCh++;
-+ if (NextTxHCh == 16)
-+ NextTxHCh = 0;
-+ if (SAR_TX_MASKED_STATUS(HalDev->dev_base) & (1<<Ch))
-+ break;
-+ if (FirstCh == NextTxHCh)
-+ {
-+ /* we checked every channel and still haven't found anything to do */
-+ return (EC_AAL5|EC_FUNC_DEVICE_INT|EC_VAL_NO_TXH_WORK_TO_DO);
-+ }
-+ }
-+
-+ rc = TxInt(HalDev,Ch,0,&WorkFlag);
-+ if (rc) return (rc);
-+
-+ if (WorkFlag == 1)
-+ *MoreWork = 1;
-+ }
-+
-+ if (tmp&TXL_PEND)
-+ {
-+ /* decide which channel to service */
-+ FirstCh = NextTxLCh;
-+ while (1)
-+ {
-+ Ch = NextTxLCh++;
-+ if (NextTxLCh == 16)
-+ NextTxLCh = 0;
-+ if (SAR_TX_MASKED_STATUS(HalDev->dev_base) & (1<<(Ch+16)))
-+ break;
-+ if (FirstCh == NextTxLCh)
-+ {
-+ /* we checked every channel and still haven't found anything to do */
-+ return (EC_AAL5|EC_FUNC_DEVICE_INT|EC_VAL_NO_TXL_WORK_TO_DO);
-+ }
-+ }
-+
-+ rc = TxInt(HalDev,Ch,1,&WorkFlag);
-+ if (rc) return (rc);
-+
-+ if (WorkFlag == 1)
-+ *MoreWork = 1;
-+ }
-+
-+ if (tmp&RX_PEND)
-+ {
-+ FirstCh = NextRxCh;
-+ while (1)
-+ {
-+ Ch = NextRxCh++;
-+ if (NextRxCh == 16)
-+ NextRxCh = 0;
-+ if (SAR_RX_MASKED_STATUS(HalDev->dev_base) & (1 << Ch))
-+ break; /* found a channel to service */
-+ if (FirstCh == NextRxCh)
-+ {
-+ /* we checked every channel and still haven't found anything to do */
-+ return (EC_AAL5|EC_FUNC_DEVICE_INT|EC_VAL_NO_RX_WORK_TO_DO);
-+ }
-+ }
-+
-+ rc = RxInt(HalDev,Ch, &WorkFlag);
-+ if (rc) return (rc);
-+
-+ if (WorkFlag == 1)
-+ *MoreWork = 1;
-+ }
-+
-+ if (tmp&STS_PEND)
-+ {
-+ /* +GSG 030305 */
-+ /* GPR 2 code added for PITS 103 */
-+ /* determine interrupt source */
-+ Ch = ((SAR_INTR_VECTOR(HalDev->dev_base) & STS_PEND_INVEC) >> 12);
-+
-+ /* only if this is GPR 2 interrupt do we take action */
-+ if (Ch == 26)
-+ {
-+ /* pass loopback result back to OS */
-+ HalDev->OsFunc->Control(HalDev->OsDev, "OamLbResult", "Set",
-+ (bit32u *)pSAR_PDSP_OAM_LB_RESULT_REG(HalDev->dev_base));
-+ }
-+
-+ /* clear the interrupt */
-+ SAR_STATUS_CLR_REG(HalDev->dev_base) |= 0x04000000;
-+ }
-+
-+ if (tmp&AAL2_PEND)
-+ {
-+ /* no action defined */
-+ }
-+
-+ SAR_INTR_VECTOR(HalDev->dev_base) = 0;
-+ }
-+
-+ HalDev->NextTxCh[0] = NextTxHCh;
-+ HalDev->NextTxCh[1] = NextTxLCh;
-+ HalDev->NextRxCh = NextRxCh;
-+
-+ /* This must be done by the upper layer */
-+ /* SAR_EOI(HalDev->dev_base) = 0; */
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function starts the operation of the CPHAL device. It takes the device
-+ * out of reset, and calls @c IsrRegister(). This function should be called after
-+ * calling the @c Init() function.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return EC_NO_ERRORS (ok).<BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * @ref EC_VAL_KEY_NOT_FOUND "EC_VAL_KEY_NOT_FOUND"<BR>
-+ * @ref EC_VAL_FIRMWARE_TOO_LARGE "EC_VAL_FIRMWARE_TOO_LARGE"<BR>
-+ * @ref EC_VAL_PDSP_LOAD_FAIL "EC_VAL_PDSP_LOAD_FAIL"<BR>
-+ * @ref EC_VAL_RX_STATE_RAM_NOT_CLEARED "EC_VAL_RX_STATE_RAM_NOT_CLEARED"<BR>
-+ * @ref EC_VAL_TX_STATE_RAM_NOT_CLEARED "EC_VAL_TX_STATE_RAM_NOT_CLEARED"<BR>
-+ * @ref EC_VAL_TCB_MALLOC_FAILED "EC_VAL_TCB_MALLOC_FAILED"<BR>
-+ * @ref EC_VAL_RCB_MALLOC_FAILED "EC_VAL_RCB_MALLOC_FAILED"<BR>
-+ * @ref EC_VAL_RX_BUFFER_MALLOC_FAILED "EC_VAL_RX_BUFFER_MALLOC_FAILED"<BR>
-+ * @ref EC_VAL_LUT_NOT_READY "EC_VAL_LUT_NOT_READY"<BR>
-+ */
-+static int halOpen(HAL_DEVICE *HalDev)
-+ {
-+ int i,Ret;
-+ bit32 SarBase = HalDev->dev_base;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]halOpen(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Verify proper device state */
-+ if (HalDev->State < enInitialized)
-+ return (EC_AAL5|EC_FUNC_OPEN|EC_VAL_INVALID_STATE);
-+
-+ /* Open the SAR (this brings the whole device out of reset */
-+ Ret = HalDev->SarFunc->Open(HalDev->SarDev); /* ~GSG 030410 */
-+ if (Ret) /* +GSG 030410 */
-+ return (Ret); /* +GSG 030410 */
-+
-+ /* Change device state */
-+ HalDev->State = enOpened;
-+
-+
-+#ifdef __CPHAL_DEBUG
-+ /* print out the version information */
-+ if (DBG(7))
-+ {
-+ dbgPrintf("[aal5 halOpen()]Module ID(AAL5-CPSAR):%d, Version:%2d.%02d\n",
-+ (SAR_ID_REG(SarBase)&0xffff0000)>>16,
-+ (SAR_ID_REG(SarBase)&0xff00)>>8,
-+ SAR_ID_REG(SarBase)&0xff);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* GREG 11/1/02: The State RAM clearing code was previously in cpsar.c,
-+ directly after device reset. I moved it here because I believe it is
-+ AAL5 specific code. Also the MAX_CHAN was set to 19 in cpsar.c, which
-+ would have caused this code to clear too much memory! */
-+
-+ /* NOTE: State RAM must be cleared prior to initializing the PDSP!! */
-+
-+ /* GSG 030416: Removed all of this. All PDSP State RAM is cleared
-+ in CPSAR Open(). On Close(), all channels are torndown, thus all
-+ AAL5 channel state RAM is cleared. */
-+
-+ /* Clear Rx State RAM */
-+ /*for (i=0; i<NUM_AAL5_CHAN; i++)
-+ for (j=0; j<NUM_RX_STATE_WORDS; j++)
-+ *(pRX_DMA_STATE_WORD_0(SarBase) + (i*64) + j) = 0; */
-+
-+ /* Check that Rx DMA State RAM was cleared */
-+ /*for (i=0; i<NUM_AAL5_CHAN; i++)
-+ for (j=0; j<NUM_RX_STATE_WORDS; j++)
-+ {
-+ if (*(pRX_DMA_STATE_WORD_0(SarBase) + (i*64) + j) != 0)
-+ {
-+ return(EC_AAL5|EC_FUNC_HAL_INIT|EC_VAL_RX_STATE_RAM_NOT_CLEARED);
-+ }
-+ }*/
-+
-+ /* Clear Tx State RAM */
-+ /*for (i=0; i<NUM_AAL5_CHAN; i++)
-+ for (j=0; j<NUM_TX_STATE_WORDS; j++)
-+ {
-+ *(pTX_DMA_STATE_WORD_0(SarBase) + (i*64) + j) = 0;
-+ }*/
-+
-+ /* Check that Tx DMA State RAM was cleared */
-+ /*for (i=0; i<NUM_AAL5_CHAN; i++)
-+ for (j=0; j<NUM_TX_STATE_WORDS; j++)
-+ {
-+ if (*(pTX_DMA_STATE_WORD_0(SarBase) + (i*64) + j) != 0)
-+ {
-+ return(EC_AAL5|EC_FUNC_HAL_INIT|EC_VAL_TX_STATE_RAM_NOT_CLEARED);
-+ }
-+ }*/
-+
-+ /* GSG +030523 Malloc space for the Rx fraglist */
-+ HalDev->fraglist = HalDev->OsFunc->Malloc(HalDev->MaxFrags * sizeof(FRAGLIST));
-+
-+ /* For any channels that have been pre-initialized, set them up now */
-+ for (i=0; i<NUM_AAL5_CHAN; i++)
-+ {
-+ if ((HalDev->ChIsSetup[i][0]==TRUE) && (HalDev->ChIsOpen[i][0]==FALSE))
-+ {
-+ CHANNEL_INFO HalChn;
-+ HalChn.Channel = i;
-+ Ret = ChannelConfigApply(HalDev, &HalChn);
-+ if (Ret) return (Ret);
-+ }
-+ }
-+
-+ /* OAM code would be a candidate to go into ConfigApply */
-+
-+ /* Configure OAM Timer State Block */
-+ OamRateConfig(HalDev); /* +GSG 030416 */
-+
-+ /* Setup OAM Configuration Block */
-+ for (i=0; i<8; i++) /* ~GSG 030603 4->8 */
-+ {
-+ if (i < 4)
-+ *(pOAM_CONFIG_BLOCK_WORD_0(SarBase) + i) = HalDev->DeviceCPID[i];
-+ else
-+ *(pOAM_CONFIG_BLOCK_WORD_0(SarBase) + i) = HalDev->LBSourceLLID[i-4];
-+ }
-+
-+ /* Setup OAM Padding Block */
-+ for (i=0; i<12; i++)
-+ {
-+ *(pOAM_PADDING_BLOCK_WORD_0(SarBase) + i) = ((i==11)?0x6a6a0000:0x6a6a6a6a);
-+ }
-+
-+ /* Enable Tx CPPI DMA */
-+ TX_CPPI_CTL_REG(HalDev->dev_base) = 1;
-+
-+ /* Enable Rx CPPI DMA */
-+ RX_CPPI_CTL_REG(HalDev->dev_base) = 1;
-+
-+ /* +GSG 030306 */
-+ /* Fix for PITS 103 */
-+ /* Enable Host Interrupt for GPR 2 (OAM LB result register) */
-+ SAR_HOST_INT_EN_SET_REG(HalDev->dev_base) |= 0x04000000;
-+
-+ /* +GSG 030304 to fix PITS 99 (if block is new)*/
-+ if (HalDev->StrictPriority == 1)
-+ {
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(1))
-+ {
-+ dbgPrintf("[aal5->os]IsrRegister(OsDev:%08x, halIsr:%08x, Interrupt:%d)\n",
-+ (bit32u)HalDev->OsDev, (bit32u)DeviceIntAlt, HalDev->interrupt);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* "register" the interrupt handler */
-+ HalDev->OsFunc->IsrRegister(HalDev->OsDev, DeviceIntAlt, HalDev->interrupt);
-+ }
-+ else /* +GSG 030306 */
-+ { /* +GSG 030306 */
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(1))
-+ {
-+ dbgPrintf("[aal5->os]IsrRegister(OsDev:%08x, halIsr:%08x, Interrupt:%d)\n",
-+ (bit32u)HalDev->OsDev, (bit32u)DeviceInt, HalDev->interrupt);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* "register" the interrupt handler */
-+ HalDev->OsFunc->IsrRegister(HalDev->OsDev, DeviceInt, HalDev->interrupt);
-+ } /* +GSG 030306 */
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * Called to retrigger the interrupt mechanism after packets have been
-+ * processed. Call this function when the HalISR function indicates that
-+ * there is no more work to do. Proper use of this function will guarantee
-+ * that interrupts are never missed.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return EC_NO_ERRORS (ok). <BR>
-+ */
-+static int halPacketProcessEnd(HAL_DEVICE *HalDev)
-+ {
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]halPacketProcessEnd(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ SAR_EOI(HalDev->dev_base) = 0;
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function probes for the instance of the CPHAL module. It will call
-+ * the OS function @c DeviceFindInfo() to get the information required.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return EC_NO_ERRORS (ok). <BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * @ref EC_VAL_DEVICE_NOT_FOUND "EC_VAL_DEVICE_NOT_FOUND"<BR>
-+ */
-+static int halProbe(HAL_DEVICE *HalDev)
-+ {
-+ int Ret;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]halProbe(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Verify hardware state is "enConnected */
-+ if (HalDev->State != enConnected)
-+ return (EC_AAL5|EC_FUNC_PROBE|EC_VAL_INVALID_STATE);
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(1))
-+ {
-+ dbgPrintf("[aal5->os]DeviceFindInfo(Inst:%d, DeviceName:%s, DeviceInfo:%08x)\n",
-+ HalDev->Inst, "aal5", (bit32u)&HalDev->DeviceInfo);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Attempt to find the device information */
-+ Ret = HalDev->OsFunc->DeviceFindInfo(HalDev->Inst, "aal5", &HalDev->DeviceInfo);
-+ if (Ret)
-+ return(EC_AAL5|EC_FUNC_PROBE|EC_VAL_DEVICE_NOT_FOUND);
-+
-+ /* Call Probe for supporting CPSAR layer */
-+ Ret = HalDev->SarFunc->Probe(HalDev->SarDev);
-+ if (Ret)
-+ return(Ret);
-+
-+ /* Set device state to DevFound */
-+ HalDev->State = enDevFound;
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function shuts down the CPHAL module completely. The caller must call
-+ * Close() to put the device in reset prior shutting down. This call will free
-+ * the HalDev and the HAL function pointer structure, effectively ending
-+ * communications between the driver and the CPHAL. Further use of the module
-+ * must be initiated by a call to xxxInitModule(), which starts the entire process
-+ * over again.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return EC_NO_ERRORS (ok). <BR>
-+ * Possible Error Codes:<BR>
-+ * Any error code from halClose().<BR>
-+ */
-+static int halShutdown(HAL_DEVICE *HalDev)
-+ {
-+ int Ch, Queue; /*GSG+030514*/
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]halShutdown(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Verify proper device state */
-+ if (HalDev->State == enOpened)
-+ halClose(HalDev, 3); /*GSG+030429*/
-+
-+ /* Buffer/descriptor resources may still need to be freed if a Close
-+ Mode 1 was performed prior to Shutdown - clean up here */ /*GSG+030514*/
-+ for (Ch=0; Ch<NUM_AAL5_CHAN; Ch++)
-+ {
-+ if (HalDev->RcbStart[Ch] != 0)
-+ FreeRx(HalDev,Ch);
-+
-+ for(Queue=0; Queue<MAX_QUEUE; Queue++)
-+ {
-+ if (HalDev->TcbStart[Ch][Queue] != 0)
-+ FreeTx(HalDev,Ch,Queue);
-+ }
-+ }
-+
-+ /* shutdown the CPSAR layer */
-+ HalDev->SarFunc->Shutdown(HalDev->SarDev);
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(6))
-+ {
-+ dbgPrintf(" [aal5 halShutdown()]Free AAL5 function pointers\n");
-+ osfuncSioFlush();
-+ }
-+ if (DBG(1)||DBG(3))
-+ {
-+ dbgPrintf("[aal5->os]Free(MemPtr:%08x)\n", (bit32u)HalDev->HalFuncPtr);
-+ osfuncSioFlush();
-+ }
-+#endif
-+ /* free the HalFunc */
-+ HalDev->OsFunc->Free(HalDev->HalFuncPtr);
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(6))
-+ {
-+ dbgPrintf(" [aal5 halShutdown]Free HalDev\n");
-+ osfuncSioFlush();
-+ }
-+ if (DBG(1)||DBG(3))
-+ {
-+ dbgPrintf("[aal5->os]Free(MemPtr:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+ /* free the HAL device */
-+ HalDev->OsFunc->FreeDev(HalDev);
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * Used to perform regular checks on the device. This function should be
-+ * called at a regular interval specified by the @c Tick parameter.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return EC_NO_ERRORS (ok).<BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ */
-+static int halTick(HAL_DEVICE *HalDev)
-+ {
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[aal5]halTick(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ if (HalDev->State != enOpened)
-+ return(EC_AAL5|EC_FUNC_TICK|EC_VAL_INVALID_STATE);
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ *
-+ * This function will:
-+ * -# allocate a HalDev that will be used by the OS for future communications with the device
-+ * -# save OsDev for use when calling OS functions
-+ * -# allocate and populate HalFunc with the addresses of CPHAL functions.
-+ * -# check OsFuncSize to see if it meets the minimum requirement.
-+ * -# return the size of the HAL_FUNCTIONS structure through the HalFuncSize pointer. The OS
-+ * should check this value to ensure that the HAL meets its minimum requirement.
-+ *
-+ * Version checking between the OS and the CPHAL is done using the OsFuncSize and
-+ * HalFuncSize. Future versions of the CPHAL may add new functions to either
-+ * HAL_FUNCTIONS or OS_FUNCTIONS, but will never remove functionality. This enables
-+ * both the HAL and OS to check the size of the function structure to ensure that
-+ * the current OS and CPHAL are compatible.
-+ *
-+ * Note: This is the only function exported by a CPHAL module.
-+ *
-+ * Please refer to the section "@ref hal_init" for example code.
-+ *
-+ * @param HalDev Pointer to pointer to CPHAL module information. This will
-+ * be used by the OS when communicating to this module via
-+ * CPHAL. Allocated during the call.
-+ * @param OsDev Pointer to OS device information. This will be saved by
-+ * the CPHAL and returned to the OS when required.
-+ * @param HalFunc Pointer to pointer to structure containing function pointers for all CPHAL
-+ * interfaces. Allocated during the call.
-+ * @param OsFunc Pointer to structure containing function pointers for all OS
-+ * provided interfaces. Must be allocated by OS prior to call.
-+ * @param OsFuncSize Size of OS_FUNCTIONS structure.
-+ * @param HalFuncSize Pointer to the size of the HAL_FUNCTIONS structure.
-+ * @param Inst The instance number of the module to initialize. (start at
-+ * 0).
-+ *
-+ * @return EC_NO_ERRORS (ok). <BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_OS_VERSION_NOT_SUPPORTED "EC_VAL_OS_VERSION_NOT_SUPPORTED"<BR>
-+ * @ref EC_VAL_MALLOC_DEV_FAILED "EC_VAL_MALLOC_DEV_FAILED"<BR>
-+ * @ref EC_VAL_MALLOC_FAILED "EC_VAL_MALLOC_FAILED"<BR>
-+ */
-+int xxxInitModule(HAL_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ HAL_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+
-+int cpaal5InitModule(HAL_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ HAL_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst)
-+ {
-+ int rc, SarFuncSize;
-+ HAL_DEVICE *HalPtr;
-+ HAL_FUNCTIONS *HalFuncPtr;
-+
-+ /* NEW CODE */
-+ if (OsFuncSize < sizeof(OS_FUNCTIONS))
-+ return (EC_AAL5|EC_FUNC_HAL_INIT|EC_VAL_OS_VERSION_NOT_SUPPORTED);
-+
-+ HalPtr = (HAL_DEVICE *) OsFunc->MallocDev(sizeof(HAL_DEVICE));
-+ if (!HalPtr)
-+ return (EC_AAL5|EC_FUNC_HAL_INIT|EC_VAL_MALLOC_DEV_FAILED);
-+
-+ HalFuncPtr = (HAL_FUNCTIONS *) OsFunc->Malloc(sizeof(HAL_FUNCTIONS));
-+ if (!HalFuncPtr)
-+ return (EC_AAL5|EC_FUNC_HAL_INIT|EC_VAL_MALLOC_FAILED);
-+
-+ /* Initialize the size of hal functions */
-+ *HalFuncSize = sizeof (HAL_FUNCTIONS);
-+
-+ /* clear the device structure */
-+ OsFunc->Memset(HalPtr, 0, sizeof(HAL_DEVICE));
-+
-+ /* clear the function pointers */
-+ OsFunc->Memset(HalFuncPtr, 0, sizeof(HAL_FUNCTIONS));
-+
-+ /* initialize the HAL_DEVICE structure */
-+ HalPtr->OsDev = OsDev;
-+ /*HalPtr->OsOpen = OsDev;*/
-+ HalPtr->Inst = Inst;
-+ HalPtr->OsFunc = OsFunc;
-+
-+ /* Supply pointers for the CPHAL API functions */
-+ HalFuncPtr->RxReturn = halRxReturn;
-+ HalFuncPtr->Init = halInit;
-+ HalFuncPtr->Close = halClose;
-+ HalFuncPtr->Send = halSend;
-+ HalFuncPtr->ChannelSetup = halChannelSetup;
-+ HalFuncPtr->ChannelTeardown = halChannelTeardown;
-+ HalFuncPtr->Open = halOpen;
-+ HalFuncPtr->Kick = halKick;
-+ HalFuncPtr->RegAccess = halRegAccess;
-+ HalFuncPtr->Probe = halProbe;
-+ HalFuncPtr->Control = halControl;
-+ HalFuncPtr->Tick = halTick;
-+ HalFuncPtr->Shutdown = halShutdown;
-+ HalFuncPtr->OamFuncConfig = halOamFuncConfig; /* +GSG 030306 */
-+ HalFuncPtr->OamLoopbackConfig = halOamLoopbackConfig; /* ~GSG 030416 */
-+
-+ /* Temporary */
-+ /*HalFuncPtr->StatsGetOld = StatsGet;*/
-+ HalFuncPtr->PacketProcessEnd = halPacketProcessEnd;
-+
-+ /* Now, AAL5 must connect to the CPSAR layer */
-+
-+ /* Attach to SAR HAL Functions */
-+ /*
-+ cpsarInitModule(NULL, NULL, 0, NULL, &SarFuncSize, Inst);
-+
-+ if (SarFuncSize!=sizeof(CPSAR_FUNCTIONS))
-+ return(EC_AAL5|EC_FUNC_HAL_INIT|EC_VAL_CPSAR_VERSION_NOT_SUPPORTED);
-+
-+ HalPtr->SarFunc = (CPSAR_FUNCTIONS *) OsFunc->Malloc(SarFuncSize);
-+ */
-+
-+ rc = cpsarInitModule(&HalPtr->SarDev, OsDev, &HalPtr->SarFunc, OsFunc, sizeof(OS_FUNCTIONS), &SarFuncSize, Inst);
-+
-+ /* pass back the error value from the CPSAR layer if necessary */
-+ if (rc)
-+ return(rc);
-+
-+ /*
-+ if (!HalPtr->SarDev)
-+ return(EC_AAL5|EC_FUNC_HAL_INIT|EC_VAL_NULL_CPSAR_DEV);
-+ */
-+
-+ /* Initialize the hardware state */
-+ HalPtr->State = enConnected;
-+
-+ /* keep a reference to HalFuncPtr so I can free it later */
-+ HalPtr->HalFuncPtr = HalFuncPtr;
-+
-+ /* pass the HalPtr back to the caller */
-+ *HalDev = HalPtr;
-+ *HalFunc = HalFuncPtr;
-+
-+ return(EC_NO_ERRORS);
-+ }
-diff -urN linux.old/drivers/atm/sangam_atm/aal5sar.h linux.dev/drivers/atm/sangam_atm/aal5sar.h
---- linux.old/drivers/atm/sangam_atm/aal5sar.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/aal5sar.h 2005-08-23 04:46:50.080846280 +0200
-@@ -0,0 +1,198 @@
-+/**@file************************************************************************
-+ * TNETDxxxx Software Support
-+ * Copyright (c) 2002 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * FILE: aal5sar.h
-+ *
-+ * DESCRIPTION:
-+ * This file contains data structure definitions for the AAL5 HAL SAR.
-+ *
-+ * HISTORY:
-+ * 28Feb02 Greg 1.00 Original Version created.
-+ * 06Mar02 Greg 1.01 Documented structures.
-+ * 18Jul02 Greg 1.02 Major reorganization
-+ *
-+ *****************************************************************************/
-+#ifndef _INC_AAL5SAR
-+#define _INC_AAL5SAR
-+
-+/** \namespace AAL5_Version
-+This documents version 01.06.06 of the AAL5 CPHAL.
-+*/
-+const char *pszVersion_CPAAL5="CPAAL5 01.06.06 "__DATE__" "__TIME__;
-+
-+#include "cpsar_cpaal5.h"
-+
-+#define NUM_AAL5_CHAN 16
-+#define MAX_AAL5_CHAN 15
-+#define MAX_QUEUE 2
-+#define MAX_DIRECTION 2
-+
-+#define PKT_TYPE_AAL5 0 /* +GSG 030508 */
-+#define PKT_TYPE_NULL 1 /* +GSG 030508 */
-+#define PKT_TYPE_OAM 2 /* +GSG 030508 */
-+#define PKT_TYPE_TRANS 3 /* +GSG 030508 */
-+#define ATM_HEADER_SIZE 4 /* +GSG 030508 */
-+
-+/*
-+ * HAL Default Parameter Values
-+ */
-+#define CFG_TX_NUM_BUFS {256,256,256,256,256,256,256,256, 256,256,256,256,256,256,256,256}
-+#define CFG_RX_NUM_BUFS {256,256,256,256,256,256,256,256, 256,256,256,256,256,256,256,256}
-+#define CFG_RX_BUF_SIZE {1518,1518,1518,1518,1518,1518,1518,1518, 1518,1518,1518,1518,1518,1518,1518,1518}
-+#define CFG_RX_BUF_OFFSET {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0}
-+#define CFG_TX_NUM_QUEUES {1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1}
-+#define CFG_CPCS_UU {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0}
-+#define CFG_DA_MASK {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0}
-+#define CFG_PRIORITY {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0}
-+#define CFG_PKT_TYPE {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0}
-+#define CFG_VCI {100,101,102,103,104,105,106,107, 108,109,110,111,112,113,114,115}
-+#define CFG_VPI {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0}
-+#define CFG_CELL_RATE {0x30d4,0x30d4,0x30d4,0x30d4,0x30d4,0x30d4,0x30d4,0x30d4, 0x30d4,0x30d4,0x30d4,0x30d4,0x30d4,0x30d4,0x30d4,0x30d4}
-+#define CFG_QOS_TYPE {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0}
-+#define CFG_MBS {8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8}
-+#define CFG_PCR {1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1}
-+#define CFG_GFC {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0}
-+#define CFG_CLP {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0}
-+#define CFG_PTI {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0}
-+#define CFG_RX_MAX_SERVICE {170,170,170,170,170,170,170,170, 170,170,170,170,170,170,170,170}
-+#define CFG_TX_MAX_SERVICE {170,170,170,170,170,170,170,170, 170,170,170,170,170,170,170,170}
-+
-+static int cfg_tx_num_bufs[NUM_AAL5_CHAN] = CFG_TX_NUM_BUFS;
-+static int cfg_rx_num_bufs[NUM_AAL5_CHAN] = CFG_RX_NUM_BUFS;
-+static int cfg_rx_buf_size[NUM_AAL5_CHAN] = CFG_RX_BUF_SIZE;
-+static int cfg_rx_buf_offset[NUM_AAL5_CHAN] = CFG_RX_BUF_OFFSET;
-+static int cfg_tx_num_queues[NUM_AAL5_CHAN] = CFG_TX_NUM_QUEUES;
-+static bit32u cfg_cpcs_uu[NUM_AAL5_CHAN] = CFG_CPCS_UU;
-+static int cfg_da_mask[NUM_AAL5_CHAN] = CFG_DA_MASK;
-+static int cfg_priority[NUM_AAL5_CHAN] = CFG_PRIORITY;
-+static int cfg_pkt_type[NUM_AAL5_CHAN] = CFG_PKT_TYPE;
-+static int cfg_vci[NUM_AAL5_CHAN] = CFG_VCI;
-+static int cfg_vpi[NUM_AAL5_CHAN] = CFG_VPI;
-+static bit32u cfg_cell_rate[NUM_AAL5_CHAN] = CFG_CELL_RATE;
-+static int cfg_qos_type[NUM_AAL5_CHAN] = CFG_QOS_TYPE;
-+static int cfg_mbs[NUM_AAL5_CHAN] = CFG_MBS;
-+static int cfg_pcr[NUM_AAL5_CHAN] = CFG_PCR;
-+static int cfg_gfc[NUM_AAL5_CHAN] = CFG_GFC;
-+static int cfg_clp[NUM_AAL5_CHAN] = CFG_CLP;
-+static int cfg_pti[NUM_AAL5_CHAN] = CFG_PTI;
-+static int cfg_rx_max_service[NUM_AAL5_CHAN]= CFG_RX_MAX_SERVICE;
-+static int cfg_tx_max_service[NUM_AAL5_CHAN]= CFG_TX_MAX_SERVICE;
-+static char *channel_names[] = CHANNEL_NAMES;
-+
-+/*
-+ * The HAL_FUNCTIONS struct defines the function pointers for all HAL functions
-+ * accessible to upper layer software. It is populated by calling
-+ * halInitModules().
-+ *
-+ * Note that this list is still under definition.
-+ */
-+
-+/*
-+ * This is the data structure for a transmit buffer descriptor. The first
-+ * four 32-bit words of the BD represent the CPPI 3.0 defined buffer descriptor
-+ * words. The other words are SAR/HAL implementation specific.
-+ */
-+typedef struct
-+ {
-+ bit32 HNext; /**< Hardware's pointer to next buffer descriptor */
-+ bit32 BufPtr; /**< Pointer to the data buffer */
-+ bit32 Off_BLen; /**< Contains buffer offset and buffer length */
-+ bit32 mode; /**< SOP, EOP, Ownership, EOQ, Teardown Complete bits */
-+ bit32 AtmHeader; /**< Atm Header to be used for each fragment */
-+ bit32 Word5; /**< General control information for the packet */
-+ bit32 Res6;
-+ bit32 Res7;
-+ void *Next;
-+ void *OsInfo;
-+#ifdef __CPHAL_DEBUG
-+ bit32 DbgSop;
-+ bit32 DbgData;
-+ bit32 DbgFraglist;
-+#endif
-+ void *Eop;
-+ }HAL_TCB;
-+
-+/*
-+ * This is the data structure for a receive buffer descriptor. The first
-+ * six 32-bit words of the BD represent the CPPI 3.0 defined buffer descriptor
-+ * words. The other words are HAL implementation specific.
-+ */
-+typedef volatile struct hal_private
-+ {
-+ bit32 HNext; /**< Hardware's pointer to next buffer descriptor */
-+ bit32 BufPtr; /**< Pointer to the data buffer */
-+ bit32 Off_BLen; /**< Contains buffer offset and buffer length */
-+ bit32 mode; /**< SOP, EOP, Ownership, EOQ, Teardown, Q Starv, Length */
-+ bit32 AtmHeader;
-+ bit32 UuCpi;
-+ bit32 Res6;
-+ bit32 Res7;
-+ void *DatPtr;
-+ void *Next;
-+ void *OsInfo;
-+ void *Eop;
-+ bit32 FragCount;
-+ bit32 Ch;
-+ HAL_DEVICE *HalDev;
-+ }HAL_RCB;
-+
-+
-+#define MAX_NEEDS 512 /*MJH+030409*/
-+/*
-+ * This is the data structure for a generic HAL device. It contains all device
-+ * specific data for a single instance of that device. This includes Rx/Tx
-+ * buffer queues, device base address, reset bit, and other information.
-+ */
-+typedef struct hal_device
-+ {
-+ HAL_RCB *RcbPool[NUM_AAL5_CHAN];
-+ bit32u rxbufseq;
-+ bit32 RxActQueueCount[NUM_AAL5_CHAN];
-+ HAL_RCB *RxActQueueHead[NUM_AAL5_CHAN];
-+ HAL_RCB *RxActQueueTail[NUM_AAL5_CHAN];
-+ bit32 RxActive[NUM_AAL5_CHAN];
-+ bit32 dev_base;
-+ HAL_TCB *TcbPool[NUM_AAL5_CHAN][MAX_QUEUE];
-+ bit32 offset;
-+ bit32 TxActQueueCount[NUM_AAL5_CHAN][MAX_QUEUE];
-+ HAL_TCB *TxActQueueHead[NUM_AAL5_CHAN][MAX_QUEUE];
-+ HAL_TCB *TxActQueueTail[NUM_AAL5_CHAN][MAX_QUEUE];
-+ bit32 TxActive[NUM_AAL5_CHAN][MAX_QUEUE];
-+ bit32 TxTeardownPending[NUM_AAL5_CHAN];
-+ bit32 RxTeardownPending[NUM_AAL5_CHAN];
-+ bit32 ChIsOpen[NUM_AAL5_CHAN][MAX_DIRECTION];
-+ bit32 ChIsSetup[NUM_AAL5_CHAN][MAX_DIRECTION];
-+ bit32 interrupt;
-+ bit32 debug;
-+ OS_DEVICE *OsDev;
-+ OS_FUNCTIONS *OsFunc;
-+ CPSAR_FUNCTIONS *SarFunc;
-+ CPSAR_DEVICE *SarDev;
-+ /*void *OsOpen;*/
-+ /*FRAGLIST fraglist[MAX_FRAG];*/
-+ FRAGLIST *fraglist;
-+ char *TcbStart[NUM_AAL5_CHAN][MAX_QUEUE];
-+ char *RcbStart[NUM_AAL5_CHAN];
-+ /*bit32 RcbSize[NUM_AAL5_CHAN];*/
-+ bit32 InRxInt[NUM_AAL5_CHAN];
-+ STAT_INFO Stats;
-+ bit32 Inst;
-+ bit32u DeviceCPID[4];
-+ bit32u LBSourceLLID[4];
-+ CHANNEL_INFO ChData[NUM_AAL5_CHAN];
-+ DEVICE_STATE State;
-+ char *DeviceInfo;
-+ HAL_FUNCTIONS *HalFuncPtr;
-+ int NextRxCh;
-+ int NextTxCh[2];
-+ int StrictPriority; /* +GSG 030304 */
-+ bit32u NeedsCount; /*MJH+030409*/
-+ HAL_RECEIVEINFO *Needs[MAX_NEEDS]; /*MJH+030409*/
-+ bit32u SarFrequency; /* +GSG 030416 */
-+ int MaxFrags;
-+ bit32u TurboDslErrors;
-+ bit32u OamLbTimeout;
-+ }HALDEVICE;
-+
-+#endif
-diff -urN linux.old/drivers/atm/sangam_atm/cpcommon_cpaal5.c linux.dev/drivers/atm/sangam_atm/cpcommon_cpaal5.c
---- linux.old/drivers/atm/sangam_atm/cpcommon_cpaal5.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpcommon_cpaal5.c 2005-08-23 04:46:50.081846128 +0200
-@@ -0,0 +1,728 @@
-+#ifndef _INC_CPCOMMON_C
-+#define _INC_CPCOMMON_C
-+
-+#ifdef _CPHAL_CPMAC
-+#include "cpremap_cpmac.c"
-+#endif
-+
-+#ifdef _CPHAL_AAL5
-+#include "cpremap_cpaal5.c"
-+#endif
-+
-+#ifdef _CPHAL_CPSAR
-+#include "cpremap_cpsar.c"
-+#endif
-+
-+#ifdef _CPHAL_AAL2
-+#include "cpremap_cpaal2.c"
-+#endif
-+
-+/**
-+@defgroup Common_Config_Params Common Configuration Parameters
-+
-+This section documents the configuration parameters that are valid across
-+all CPHAL devices.
-+@{
-+*/
-+/** This is the debug level. The field is bit defined, such that the user
-+should set to 1 all the bits corresponding to desired debug outputs. The following
-+are the meanings for each debug bit:
-+- bit0 (LSB): CPHAL Function Trace
-+- b1 : OS Function call trace
-+- b2 : Critical section entry/exit
-+- b3 : Memory allocation/destruction
-+- b4 : Detailed information in Rx path
-+- b5 : Detailed information in Tx path
-+- b6 : Extended error information
-+- b7 : General info
-+*/
-+static const char pszDebug[] = "debug";
-+/** CPU Frequency. */
-+/*static const char pszCpuFreq[] = "CpuFreq";*/ /*MJH-030403*/
-+/** Base address for the module. */
-+static const char pszBase[] = "base";
-+/** Reset bit for the module. */
-+static const char pszResetBit[] = "reset_bit";
-+/** Reset base address for the module. */
-+static const char pszResetBase[] = "ResetBase";
-+/** Interrupt line for the module. */
-+static const char pszIntLine[] = "int_line";
-+/** VLYNQ offset for the module. Disregard if not using VLYNQ. */
-+static const char pszOffset[] = "offset";
-+/** The OS may "Get" this parameter, which is a pointer
-+ to a character string that indicates the version of CPHAL. */
-+static const char pszVer[] = "Version";
-+/*@}*/
-+
-+/**
-+@defgroup Common_Control_Params Common Keys for [os]Control()
-+
-+This section documents the keys used with the OS @c Control() interface that
-+are required by CPHAL devices.
-+
-+@{
-+*/
-+/** Used to wait for an integer number of clock ticks, given as an integer
-+ pointer in the @p Value parameter. No actions are defined. */
-+static const char pszSleep[] = "Sleep";
-+/** Requests the OS to flush it's IO buffers. No actions are defined. */
-+static const char pszSioFlush[] = "SioFlush";
-+/*@}*/
-+
-+static const char pszStateChange[] = "StateChange";
-+static const char pszStatus[] = "Status";
-+
-+static const char pszGET[] = "Get";
-+static const char pszSET[] = "Set";
-+static const char pszCLEAR[] = "Clear";
-+static const char pszNULL[] = "";
-+static const char pszLocator[] = "Locator";
-+static const char pszOff[] = "Off";
-+static const char pszOn[] = "On";
-+static const char hcMaxFrags[] = "MaxFrags";
-+
-+#ifdef _CPHAL_CPMAC
-+
-+/* New method for string constants */
-+const char hcClear[] = "Clear";
-+const char hcGet[] = "Get";
-+const char hcSet[] = "Set";
-+
-+const char hcTick[] = "Tick";
-+
-+static const CONTROL_KEY KeyCommon[] =
-+ {
-+ {"" , enCommonStart},
-+ {pszStatus , enStatus},
-+ {pszOff , enOff},
-+ {pszOn , enOn},
-+ {pszDebug , enDebug},
-+ {hcCpuFrequency , enCpuFreq}, /*MJH~030403*/
-+ {"" , enCommonEnd}
-+ };
-+#endif
-+
-+/**
-+@defgroup Common_Statistics Statistics
-+
-+A broad array of module statistics is available. Statistics values are accessed
-+through the @c Control() interface of the CPHAL. There are 5 different levels
-+of statistics, each of which correspond to a unique set of data. Furthermore,
-+certain statistics data is indexed by using a channel number and Tx queue number.
-+The following is a brief description of each statistics level, along with the
-+indexes used for the level:
-+
-+- Level 0: Hardware Statistics (index with channel)
-+- Level 1: CPHAL Software Statistics (channel, queue)
-+- Level 2: CPHAL Flags (channel, queue)
-+- Level 3: CPHAL Channel Configuration (channel)
-+- Level 4: CPHAL General Configuration (no index)
-+
-+The caller requests statistics information by providing a Key string to the
-+@c Control() API in the following format: "Stats;[Level #];[Ch #];[Queue #]".
-+The only valid Action parameter for statistics usage is "Get".
-+
-+Code Examples:
-+@code
-+unsigned int *StatsData;
-+
-+# Get Level 0 stats for Channel 1
-+HalFunc->Control(OsDev->HalDev, "Stats;0;1", "Get", &StatsData);
-+
-+# Get Level 2 stats for Channel 0, Queue 0
-+HalFunc->Control(OsDev->HalDev, "Stats;2;0;0", "Get", &StatsData);
-+
-+# Get Level 4 stats
-+HalFunc->Control(OsDev->HalDev, "Stats;4", "Get", &StatsData);
-+@endcode
-+
-+The information returned in the Value parameter of @c Control() is an
-+array of pointers to strings. The pointers are arranged in pairs.
-+The first pointer is a pointer to a name string for a particular statistic.
-+The next pointer is a pointer to a string containing the representation of
-+the integer statistic value corresponding to the first pointer. This is followed
-+by another pair of pointers, and so on, until a NULL pointer is encountered. The
-+following is example code for processing the statistics data. Note that the OS
-+is responsible for freeing the memory passed back through the Value parameter of
-+@c Control().
-+
-+@code
-+unsigned int *StatsData;
-+
-+# Get Level 0 stats for Channel 1
-+HalFunc->Control(OsDev->HalDev, "Stats;0;1", "Get", &StatsData);
-+
-+# output Statistics data
-+PrintStats(StatsData);
-+
-+# the upper layer is responsible for freeing stats info
-+free(&StatsPtr);
-+
-+...
-+
-+void PrintStats(unsigned int *StatsPtr)
-+ {
-+ while(*StatsPtr)
-+ {
-+ printf("%20s:", (char *)*StatsPtr);
-+ StatsPtr++;
-+ printf("%11s\n", (char *)*StatsPtr);
-+ StatsPtr++;
-+ }
-+ MySioFlush();
-+ }
-+@endcode
-+
-+Within each statistics level, there are several statistics defined. The statistics that
-+are common to every CPPI module are listed below. In addition, each module may define
-+extra statistics in each level, which will be documented within the module-specific
-+documentation appendices.
-+
-+- Level 0 Statistics
-+ - All level 0 statistics are module-specific.
-+- Level 1 Statistics (CPHAL Software Statistics)
-+ - DmaLenErrors: Incremented when the port DMA's more data than expected (per channel). (AAL5 Only)
-+ - TxMisQCnt: Incremented when host queues a packet for transmission as the port finishes
-+transmitting the previous last packet in the queue (per channel and queue).
-+ - RxMisQCnt: Incremented when host queues adds buffers to a queue as the port finished the
-+reception of the previous last packet in the queue (per channel).
-+ - TxEOQCnt: Number of times the port has reached the end of the transmit queue (per channel and queue).
-+ - RxEOQCnt: Number of times the port has reached the end of the receive queue (per channel).
-+ - RxPacketsServiced: Number of received packets (per channel).
-+ - TxPacketsServiced: Number of transmitted packets (per channel and queue).
-+ - RxMaxServiced: Maximum number of packets that the CPHAL receive interrupt has serviced at a time (per channel).
-+ - TxMaxServiced: Maximum number of packets that the CPHAL transmit interrupt has serviced at a time (per channel and queue).
-+ - RxTotal: Total number of received packets, all channels.
-+ - TxTotal: Total number of transmitted packets, all channels and queues.
-+- Level 2 Statistics (CPHAL Flags)
-+ - RcbPool: Pointer to receive descriptor pool (per channel).
-+ - RxActQueueCount: Number of buffers currently available for receive (per channel).
-+ - RxActQueueHead: Pointer to first buffer in receive queue (per channel).
-+ - RxActQueueTail: Pointer to last buffer in receive queue (per channel).
-+ - RxActive: 0 if inactive (no buffers available), or 1 if active (buffers available).
-+ - RcbStart: Pointer to block of receive descriptors.
-+ - RxTeardownPending: 1 if Rx teardown is pending but incomplete, 0 otherwise.
-+ - TcbPool: Pointer to transmit descriptor pool (per channel and queue).
-+ - TxActQueueCount: Number of buffers currently queued to be transmitted (per channel and queue).
-+ - TxActQueueHead: Pointer to first buffer in transmit queue (per channel and queue).
-+ - TxActQueueTail: Pointer to last buffer in transmit queue (per channel and queue).
-+ - TxActive: 0 if inactive (no buffers to send), or 1 if active (buffers queued to send).
-+ - TcbStart: Pointer to block of transmit descriptors.
-+ - TxTeardownPending: 1 if Tx teardown is pending but incomplete, 0 otherwise.
-+- Level 3 Statistics (CPHAL Channel Configuration)
-+ - RxBufSize: Rx buffer size.
-+ - RxBufferOffset: Rx buffer offset.
-+ - RxNumBuffers: Number of Rx buffers.
-+ - RxServiceMax: Maximum number of receive packets to service at a time.
-+ - TxNumBuffers: Number of Tx buffer descriptors.
-+ - TxNumQueues: Number of Tx queues to use.
-+ - TxServiceMax: Maximum number of transmit packets to service at a time.
-+- Level 4 Statistics (CPHAL General Configuration)
-+ - Base Address: Base address of the module.
-+ - Offset (VLYNQ): VLYNQ relative module offset.
-+ - Interrupt Line: Interrupt number.
-+ - Debug: Debug flag, 1 to enable debug.
-+ - Inst: Instance number.
-+*/
-+
-+/*
-+ Data Type 0 = int display
-+ Data Type 1 = hex display
-+ Data Type 2 = channel structure, int display
-+ Data Type 3 = queue index and int display
-+ Data Type 4 = queue index and hex display
-+*/
-+#if (defined(_CPHAL_AAL5) || defined(_CPHAL_CPMAC)) /* +GSG 030307 */
-+static STATS_TABLE StatsTable0[] =
-+ {
-+#ifdef _CPHAL_AAL5
-+ /* Name , Data Ptr, Data Type */
-+ {"Crc Errors", 0, 0},
-+ {"Len Errors", 0, 0},
-+ {"Abort Errors", 0, 0},
-+ {"Starv Errors", 0, 0}
-+#endif
-+#ifdef _CPHAL_CPMAC
-+ {"Rx Good Frames", 0, 0}
-+#endif
-+ };
-+
-+static STATS_TABLE StatsTable1[] =
-+ {
-+ /* Name , Data Ptr, Data Type */
-+ {"DmaLenErrors", 0, 0},
-+ {"TxMisQCnt", 0, 3},
-+ {"RxMisQCnt", 0, 0},
-+ {"TxEOQCnt", 0, 3},
-+ {"RxEOQCnt", 0, 0},
-+ {"RxPacketsServiced", 0, 0},
-+ {"TxPacketsServiced", 0, 3},
-+ {"RxMaxServiced", 0, 0},
-+ {"TxMaxServiced", 0, 3},
-+ {"RxTotal", 0, 0},
-+ {"TxTotal", 0, 0},
-+ };
-+
-+static STATS_TABLE StatsTable2[] =
-+ {
-+ /* Name , Data Ptr, Data Type */
-+ {"RcbPool", 0, 1},
-+ {"RxActQueueCount", 0, 0},
-+ {"RxActQueueHead", 0, 1},
-+ {"RxActQueueTail", 0, 1},
-+ {"RxActive", 0, 0},
-+ {"RcbStart", 0, 1},
-+ {"RxTeardownPending", 0, 0},
-+ {"TcbPool", 0, 4},
-+ {"TxActQueueCount", 0, 3},
-+ {"TxActQueueHead", 0, 4},
-+ {"TxActQueueTail", 0, 4},
-+ {"TxActive", 0, 3},
-+ {"TcbStart", 0, 4},
-+ {"TxTeardownPending", 0, 0}
-+ };
-+
-+static STATS_TABLE StatsTable3[] =
-+ {
-+ /* Name , Data Ptr, Data Type */
-+ {"RxBufSize", 0, 2},
-+ {"RxBufferOffset", 0, 2},
-+ {"RxNumBuffers", 0, 2},
-+ {"RxServiceMax", 0, 2},
-+ {"TxNumBuffers", 0, 2},
-+ {"TxNumQueues", 0, 2},
-+ {"TxServiceMax", 0, 2},
-+#ifdef _CPHAL_AAL5
-+ {"CpcsUU", 0, 2},
-+ {"Gfc", 0, 2},
-+ {"Clp", 0, 2},
-+ {"Pti", 0, 2},
-+ {"DaMask", 0, 2},
-+ {"Priority", 0, 2},
-+ {"PktType", 0, 2},
-+ {"Vci", 0, 2},
-+ {"Vpi", 0, 2},
-+ {"CellRate", 0, 2},
-+ {"QosType", 0, 2},
-+ {"Mbs", 0, 2},
-+ {"Pcr", 0, 2}
-+#endif
-+ };
-+
-+static STATS_TABLE StatsTable4[] =
-+ {
-+ {"Base Address", 0, 1},
-+ {"Offset (VLYNQ)", 0, 0},
-+ {"Interrupt Line", 0, 0},
-+ {"Debug", 0, 0},
-+ {"Instance", 0, 0},
-+#ifdef _CPHAL_AAL5
-+ {"UniNni", 0, 0}
-+#endif
-+ };
-+
-+static STATS_DB StatsDb[] =
-+ {
-+ {(sizeof(StatsTable0)/sizeof(STATS_TABLE)), StatsTable0},
-+ {(sizeof(StatsTable1)/sizeof(STATS_TABLE)), StatsTable1},
-+ {(sizeof(StatsTable2)/sizeof(STATS_TABLE)), StatsTable2},
-+ {(sizeof(StatsTable3)/sizeof(STATS_TABLE)), StatsTable3},
-+ {(sizeof(StatsTable4)/sizeof(STATS_TABLE)), StatsTable4}
-+ };
-+#endif /* +GSG 030307 */
-+
-+#ifdef _CPHAL_CPMAC /* +RC 3.02 */
-+static void resetWait(HAL_DEVICE *HalDev)
-+ { /*+RC3.02*/
-+ const int TickReset=64;
-+ osfuncSleep((int*)&TickReset);
-+ } /*+RC3.02*/
-+#endif /* +RC 3.02 */
-+
-+/* I only define the reset base function for the modules
-+ that can perform a reset. The AAL5 and AAL2 modules
-+ do not perform a reset, that is done by the shared module
-+ CPSAR */
-+#if defined(_CPHAL_CPSAR) || defined(_CPHAL_CPMAC) || defined(_CPHAL_VDMAVT)
-+/*
-+ * Determines the reset register address to be used for a particular device.
-+ * It will search the current device entry for Locator information. If the
-+ * device is a root device, there will be no Locator information, and the
-+ * function will find and return the root reset register. If a Locator value
-+ * is found, the function will search each VLYNQ device entry in the system
-+ * looking for a matching Locator. Once it finds a VLYNQ device entry with
-+ * a matching Locator, it will extract the "ResetBase" parameter from that
-+ * VLYNQ device entry (thus every VLYNQ entry must have the ResetBase parameter).
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param ResetBase Pointer to integer address of reset register.
-+ *
-+ * @return 0 OK, Non-zero not OK
-+ */
-+static int ResetBaseGet(HAL_DEVICE *HalDev, bit32u *ResetBase)
-+ {
-+ char *DeviceInfo = HalDev->DeviceInfo;
-+ char *MyLocator, *NextLocator;
-+ int Inst=1;
-+ bit32u error_code;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpcommon]ResetBaseGet(HalDev:%08x, ResetBase:%08x)\n", (bit32u)HalDev, ResetBase);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ error_code = HalDev->OsFunc->DeviceFindParmValue(DeviceInfo, "Locator", &MyLocator);
-+ if (error_code)
-+ {
-+ /* if no Locator value, device is on the root, so get the "reset" device */
-+ error_code = HalDev->OsFunc->DeviceFindInfo(0, "reset", &DeviceInfo);
-+ if (error_code)
-+ {
-+ return(EC_VAL_DEVICE_NOT_FOUND);
-+ }
-+
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, "base", ResetBase);
-+ if (error_code)
-+ {
-+ return(EC_VAL_BASE_ADDR_NOT_FOUND);
-+ }
-+
-+ *ResetBase = ((bit32u)PhysToVirtNoCache(*ResetBase));
-+
-+ /* found base address for root device, so we're done */
-+ return (EC_NO_ERRORS);
-+ }
-+ else
-+ {
-+ /* we have a Locator value, so the device is remote */
-+
-+ /* Find a vlynq device with a matching locator value */
-+ while ((HalDev->OsFunc->DeviceFindInfo(Inst, "vlynq", &DeviceInfo)) == EC_NO_ERRORS)
-+ {
-+ error_code = HalDev->OsFunc->DeviceFindParmValue(DeviceInfo, "Locator", &NextLocator);
-+ if (error_code)
-+ {
-+ /* no Locator value for this VLYNQ, so move on */
-+ continue;
-+ }
-+ if (HalDev->OsFunc->Strcmpi(MyLocator, NextLocator)==0)
-+ {
-+ /* we have found a VLYNQ with a matching Locator, so extract the ResetBase */
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, "ResetBase", ResetBase);
-+ if (error_code)
-+ {
-+ return(EC_VAL_BASE_ADDR_NOT_FOUND);
-+ }
-+ *ResetBase = ((bit32u)PhysToVirtNoCache(*ResetBase));
-+
-+ /* found base address for root device, so we're done */
-+ return (EC_NO_ERRORS);
-+ }
-+ Inst++;
-+ } /* while */
-+ } /* else */
-+
-+ return (EC_NO_ERRORS);
-+ }
-+#endif
-+
-+#ifndef _CPHAL_AAL2 /* + RC 3.02 */
-+static bit32u ConfigGetCommon(HAL_DEVICE *HalDev)
-+ {
-+ bit32u ParmValue;
-+ bit32 error_code;
-+ char *DeviceInfo = HalDev->DeviceInfo;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpcommon]ConfigGetCommon(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszBase, &ParmValue);
-+ if (error_code)
-+ {
-+ return(EC_FUNC_HAL_INIT|EC_VAL_BASE_ADDR_NOT_FOUND);
-+ }
-+ HalDev->dev_base = ((bit32u)PhysToVirtNoCache(ParmValue));
-+
-+#ifndef _CPHAL_AAL5
-+#ifndef _CPHAL_AAL2
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszResetBit, &ParmValue);
-+ if(error_code)
-+ {
-+ return(EC_FUNC_HAL_INIT|EC_VAL_RESET_BIT_NOT_FOUND);
-+ }
-+ HalDev->ResetBit = ParmValue;
-+
-+ /* Get reset base address */
-+ error_code = ResetBaseGet(HalDev, &ParmValue);
-+ if (error_code)
-+ return(EC_FUNC_HAL_INIT|EC_VAL_RESET_BASE_NOT_FOUND);
-+ HalDev->ResetBase = ParmValue;
-+#endif
-+#endif
-+
-+#ifndef _CPHAL_CPSAR
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszIntLine,&ParmValue);
-+ if (error_code)
-+ {
-+ return(EC_FUNC_HAL_INIT|EC_VAL_INTERRUPT_NOT_FOUND);
-+ }
-+ HalDev->interrupt = ParmValue;
-+#endif
-+
-+ /* only look for the offset if there is a Locator field, which indicates that
-+ the module is a VLYNQ module */
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszLocator,&ParmValue);
-+ if (!error_code)
-+ {
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszOffset,&ParmValue);
-+ if (error_code)
-+ {
-+ return(EC_FUNC_HAL_INIT|EC_VAL_OFFSET_NOT_FOUND);
-+ }
-+ HalDev->offset = ParmValue;
-+ }
-+ else
-+ HalDev->offset = 0;
-+
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszDebug, &ParmValue);
-+ if (!error_code) HalDev->debug = ParmValue;
-+
-+ return (EC_NO_ERRORS);
-+ }
-+#endif /* +RC 3.02 */
-+
-+#ifdef _CPHAL_CPMAC /* +RC 3.02 */
-+static void StatsInit(HAL_DEVICE *HalDev) /* +() RC3.02 */
-+ {
-+ /* even though these statistics may be for multiple channels and
-+ queues, i need only configure the pointer to the beginning
-+ of the array, and I can index from there if necessary */
-+
-+#ifdef _CPHAL_AAL5
-+ StatsTable0[0].StatPtr = &HalDev->Stats.CrcErrors[0];
-+ StatsTable0[1].StatPtr = &HalDev->Stats.LenErrors[0];
-+ StatsTable0[2].StatPtr = &HalDev->Stats.AbortErrors[0];
-+ StatsTable0[3].StatPtr = &HalDev->Stats.StarvErrors[0];
-+
-+ StatsTable1[0].StatPtr = &HalDev->Stats.DmaLenErrors[0];
-+ StatsTable1[1].StatPtr = &HalDev->Stats.TxMisQCnt[0][0];
-+ StatsTable1[2].StatPtr = &HalDev->Stats.RxMisQCnt[0];
-+ StatsTable1[3].StatPtr = &HalDev->Stats.TxEOQCnt[0][0];
-+ StatsTable1[4].StatPtr = &HalDev->Stats.RxEOQCnt[0];
-+ StatsTable1[5].StatPtr = &HalDev->Stats.RxPacketsServiced[0];
-+ StatsTable1[6].StatPtr = &HalDev->Stats.TxPacketsServiced[0][0];
-+ StatsTable1[7].StatPtr = &HalDev->Stats.RxMaxServiced;
-+ StatsTable1[8].StatPtr = &HalDev->Stats.TxMaxServiced[0][0];
-+ StatsTable1[9].StatPtr = &HalDev->Stats.RxTotal;
-+ StatsTable1[10].StatPtr = &HalDev->Stats.TxTotal;
-+#endif
-+
-+#if (defined(_CPHAL_AAL5) || defined(_CPHAL_CPMAC))
-+ StatsTable2[0].StatPtr = (bit32u *)&HalDev->RcbPool[0];
-+ StatsTable2[1].StatPtr = &HalDev->RxActQueueCount[0];
-+ StatsTable2[2].StatPtr = (bit32u *)&HalDev->RxActQueueHead[0];
-+ StatsTable2[3].StatPtr = (bit32u *)&HalDev->RxActQueueTail[0];
-+ StatsTable2[4].StatPtr = &HalDev->RxActive[0];
-+ StatsTable2[5].StatPtr = (bit32u *)&HalDev->RcbStart[0];
-+ StatsTable2[6].StatPtr = &HalDev->RxTeardownPending[0];
-+ StatsTable2[7].StatPtr = (bit32u *)&HalDev->TcbPool[0][0];
-+ StatsTable2[8].StatPtr = &HalDev->TxActQueueCount[0][0];
-+ StatsTable2[9].StatPtr = (bit32u *)&HalDev->TxActQueueHead[0][0];
-+ StatsTable2[10].StatPtr = (bit32u *)&HalDev->TxActQueueTail[0][0];
-+ StatsTable2[11].StatPtr = &HalDev->TxActive[0][0];
-+ StatsTable2[12].StatPtr = (bit32u *)&HalDev->TcbStart[0][0];
-+ StatsTable2[13].StatPtr = &HalDev->TxTeardownPending[0];
-+
-+ StatsTable3[0].StatPtr = &HalDev->ChData[0].RxBufSize;
-+ StatsTable3[1].StatPtr = &HalDev->ChData[0].RxBufferOffset;
-+ StatsTable3[2].StatPtr = &HalDev->ChData[0].RxNumBuffers;
-+ StatsTable3[3].StatPtr = &HalDev->ChData[0].RxServiceMax;
-+ StatsTable3[4].StatPtr = &HalDev->ChData[0].TxNumBuffers;
-+ StatsTable3[5].StatPtr = &HalDev->ChData[0].TxNumQueues;
-+ StatsTable3[6].StatPtr = &HalDev->ChData[0].TxServiceMax;
-+#ifdef _CPHAL_AAL5
-+ StatsTable3[7].StatPtr = &HalDev->ChData[0].CpcsUU;
-+ StatsTable3[8].StatPtr = &HalDev->ChData[0].Gfc;
-+ StatsTable3[9].StatPtr = &HalDev->ChData[0].Clp;
-+ StatsTable3[10].StatPtr = &HalDev->ChData[0].Pti;
-+ StatsTable3[11].StatPtr = &HalDev->ChData[0].DaMask;
-+ StatsTable3[12].StatPtr = &HalDev->ChData[0].Priority;
-+ StatsTable3[13].StatPtr = &HalDev->ChData[0].PktType;
-+ StatsTable3[14].StatPtr = &HalDev->ChData[0].Vci;
-+ StatsTable3[15].StatPtr = &HalDev->ChData[0].Vpi;
-+ StatsTable3[16].StatPtr = &HalDev->ChData[0].TxVc_CellRate;
-+ StatsTable3[17].StatPtr = &HalDev->ChData[0].TxVc_QosType;
-+ StatsTable3[18].StatPtr = &HalDev->ChData[0].TxVc_Mbs;
-+ StatsTable3[19].StatPtr = &HalDev->ChData[0].TxVc_Pcr;
-+#endif
-+#endif
-+
-+ StatsTable4[0].StatPtr = &HalDev->dev_base;
-+ StatsTable4[1].StatPtr = &HalDev->offset;
-+ StatsTable4[2].StatPtr = &HalDev->interrupt;
-+ StatsTable4[3].StatPtr = &HalDev->debug;
-+ StatsTable4[4].StatPtr = &HalDev->Inst;
-+ }
-+#endif /* +RC 3.02 */
-+
-+#ifndef _CPHAL_CPSAR /* +RC 3.02 */
-+#ifndef _CPHAL_AAL2 /* +RC 3.02 */
-+/*
-+ * Returns statistics information.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return 0
-+ */
-+static int StatsGet(HAL_DEVICE *HalDev, void **StatPtr, int Index, int Ch, int Queue)
-+ {
-+ int Size;
-+ bit32u *AddrPtr;
-+ char *DataPtr;
-+ STATS_TABLE *StatsTable;
-+ int i, NumberOfStats;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpcommon]StatsGet(HalDev:%08x, StatPtr:%08x)\n",
-+ (bit32u)HalDev, (bit32u)StatPtr);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ StatsTable = StatsDb[Index].StatTable;
-+ NumberOfStats = StatsDb[Index].NumberOfStats;
-+
-+ Size = sizeof(bit32u)*((NumberOfStats*2)+1);
-+ Size += (NumberOfStats*11);
-+ *StatPtr = (bit32u *)HalDev->OsFunc->Malloc(Size);
-+
-+ AddrPtr = (bit32u *) *StatPtr;
-+ DataPtr = (char *)AddrPtr;
-+ DataPtr += sizeof(bit32u)*((NumberOfStats*2)+1);
-+
-+ for (i=0; i<NumberOfStats; i++)
-+ {
-+ *AddrPtr++ = (bit32u)StatsTable[i].StatName;
-+ *AddrPtr++ = (bit32u)DataPtr;
-+ if (&StatsTable[i].StatPtr[Ch] != 0)
-+ {
-+ switch(StatsTable[i].DataType)
-+ {
-+ case 0:
-+ HalDev->OsFunc->Sprintf(DataPtr, "%d", (bit32u *)StatsTable[i].StatPtr[Ch]);
-+ break;
-+ case 1:
-+ HalDev->OsFunc->Sprintf(DataPtr, "0x%x", (bit32u *)StatsTable[i].StatPtr[Ch]);
-+ break;
-+ case 2:
-+ HalDev->OsFunc->Sprintf(DataPtr, "%d", *((bit32u *)StatsTable[i].StatPtr + (Ch * (sizeof(CHANNEL_INFO)/4))));
-+ break;
-+ case 3:
-+ HalDev->OsFunc->Sprintf(DataPtr, "%d", *((bit32u *)StatsTable[i].StatPtr + (Ch*MAX_QUEUE)+Queue));
-+ break;
-+ case 4:
-+ HalDev->OsFunc->Sprintf(DataPtr, "0x%x", *((bit32u *)StatsTable[i].StatPtr + (Ch*MAX_QUEUE)+Queue));
-+ break;
-+ default:
-+ /* invalid data type, due to CPHAL programming error */
-+ break;
-+ }
-+ }
-+ else
-+ {
-+ /* invalid statistics pointer, probably was not initialized */
-+ }
-+ DataPtr += HalDev->OsFunc->Strlen(DataPtr) + 1;
-+ }
-+
-+ *AddrPtr = (bit32u) 0;
-+
-+ return (EC_NO_ERRORS);
-+ }
-+#endif /* +RC 3.02 */
-+#endif /* +RC 3.02 */
-+
-+#ifdef _CPHAL_CPMAC
-+static void gpioFunctional(int base, int bit)
-+ { /*+RC3.02*/
-+ bit32u GpioEnr = base + 0xC;
-+ /* To make functional, set to zero */
-+ *(volatile bit32u *)(GpioEnr) &= ~(1 << bit); /*+RC3.02*/
-+ } /*+RC3.02*/
-+
-+
-+/*+RC3.02*/
-+/* Common function, Checks to see if GPIO should be in functional mode */
-+static void gpioCheck(HAL_DEVICE *HalDev, void *moduleDeviceInfo)
-+ { /*+RC3.02*/
-+ int rc;
-+ void *DeviceInfo;
-+ char *pszMuxBits;
-+ char pszMuxBit[20];
-+ char *pszTmp;
-+ char szMuxBit[20];
-+ char *ptr;
-+ int base;
-+ int reset_bit;
-+ int bit;
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+
-+ rc = OsFunc->DeviceFindParmValue(moduleDeviceInfo, "gpio_mux",&pszTmp);
-+ if(rc) return;
-+ /* gpio entry found, get GPIO register info and make functional */
-+
-+ /* temp copy until FinParmValue fixed */
-+ ptr = &szMuxBit[0];
-+ while ((*ptr++ = *pszTmp++));
-+
-+ pszMuxBits = &szMuxBit[0];
-+
-+ rc = OsFunc->DeviceFindInfo(0,"gpio",&DeviceInfo);
-+ if(rc) return;
-+
-+ rc = OsFunc->DeviceFindParmUint(DeviceInfo, "base",&base);
-+ if(rc) return;
-+
-+ rc = OsFunc->DeviceFindParmUint(DeviceInfo, "reset_bit",&reset_bit);
-+ if(rc) return;
-+
-+ /* If GPIO still in reset, then exit */
-+ if((VOLATILE32(HalDev->ResetBase) & (1 << reset_bit)) == 0)
-+ return;
-+ /* format for gpio_mux is gpio_mux = <int>;<int>;<int>...*/
-+ while (*pszMuxBits)
-+ {
-+ pszTmp = &pszMuxBit[0];
-+ if(*pszMuxBits == ';') pszMuxBits++;
-+ while ((*pszMuxBits != ';') && (*pszMuxBits != '\0'))
-+ {
-+ osfuncSioFlush();
-+ /*If value not a number, skip */
-+ if((*pszMuxBits < '0') || (*pszMuxBits > '9'))
-+ pszMuxBits++;
-+ else
-+ *pszTmp++ = *pszMuxBits++;
-+ }
-+ *pszTmp = '\0';
-+ bit = OsFunc->Strtoul(pszMuxBit, &pszTmp, 10);
-+ gpioFunctional(base, bit);
-+ resetWait(HalDev); /* not sure if this is needed */
-+ }
-+ } /*+RC3.02*/
-+#endif /* CPMAC */
-+
-+#ifdef _CPHAL_AAL5
-+const char hcSarFrequency[] = "SarFreq";
-+#endif
-+
-+#endif /* _INC */
-diff -urN linux.old/drivers/atm/sangam_atm/cpcommon_cpaal5.h linux.dev/drivers/atm/sangam_atm/cpcommon_cpaal5.h
---- linux.old/drivers/atm/sangam_atm/cpcommon_cpaal5.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpcommon_cpaal5.h 2005-08-23 04:46:50.082845976 +0200
-@@ -0,0 +1,79 @@
-+#ifndef _INC_CPCOMMON_H
-+#define _INC_CPCOMMON_H
-+
-+#define VOLATILE32(addr) (*(volatile bit32u *)(addr))
-+#ifndef dbgPrintf
-+#define dbgPrintf HalDev->OsFunc->Printf
-+#endif
-+
-+#define ChannelUpdate(Field) if(HalChn->Field != 0xFFFFFFFF) HalDev->ChData[Ch].Field = HalChn->Field
-+
-+#define DBG(level) (HalDev->debug & (1<<(level)))
-+/*
-+#define DBG0() DBG(0)
-+#define DBG1() DBG(1)
-+#define DBG2() DBG(2)
-+#define DBG3() DBG(3)
-+#define DBG4() DBG(4)
-+#define DBG5() DBG(5)
-+#define DBG6() DBG(6)
-+#define DBG7() DBG(7)
-+*/
-+
-+/*
-+ * List of defined actions for use with Control().
-+ */
-+typedef enum
-+ {
-+ enGET=0, /**< Get the value associated with a key */
-+ enSET, /**< Set the value associates with a key */
-+ enCLEAR, /**<Clear the value */
-+ enNULL /**< No data action, used to initiate a service or send a message */
-+ }ACTION;
-+
-+/*
-+ * Enumerated hardware states.
-+ */
-+typedef enum
-+ {
-+ enConnected=1, enDevFound, enInitialized, enOpened
-+ }DEVICE_STATE;
-+
-+typedef enum
-+ {
-+ enCommonStart=0,
-+ /* General */
-+ enOff, enOn, enDebug,
-+ /* Module General */
-+ enCpuFreq,
-+ enStatus,
-+ enCommonEnd
-+ }COMMON_KEY;
-+
-+typedef struct
-+ {
-+ const char *strKey;
-+ int enKey;
-+ }CONTROL_KEY;
-+
-+typedef struct
-+ {
-+ char *StatName;
-+ unsigned int *StatPtr;
-+ int DataType; /* 0: int, 1: hex int, 2:channel data */
-+ }STATS_TABLE;
-+
-+typedef struct
-+ {
-+ int NumberOfStats;
-+ STATS_TABLE *StatTable;
-+ }STATS_DB;
-+
-+#define osfuncSioFlush() HalDev->OsFunc->Control(HalDev->OsDev,"SioFlush",pszNULL,0)
-+#define osfuncSleep(Ticks) HalDev->OsFunc->Control(HalDev->OsDev,pszSleep,pszNULL,Ticks)
-+#define osfuncStateChange() HalDev->OsFunc->Control(HalDev->OsDev,pszStateChange,pszNULL,0)
-+
-+#define CHANNEL_NAMES {"Ch0","Ch1","Ch2","Ch3","Ch4","Ch5","Ch6","Ch7","Ch8","Ch9","Ch10","Ch11","Ch12","Ch13","Ch14","Ch15"}
-+
-+#endif
-+
-diff -urN linux.old/drivers/atm/sangam_atm/cpcommon_cpsar.c linux.dev/drivers/atm/sangam_atm/cpcommon_cpsar.c
---- linux.old/drivers/atm/sangam_atm/cpcommon_cpsar.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpcommon_cpsar.c 2005-08-23 04:46:50.082845976 +0200
-@@ -0,0 +1,728 @@
-+#ifndef _INC_CPCOMMON_C
-+#define _INC_CPCOMMON_C
-+
-+#ifdef _CPHAL_CPMAC
-+#include "cpremap_cpmac.c"
-+#endif
-+
-+#ifdef _CPHAL_AAL5
-+#include "cpremap_cpaal5.c"
-+#endif
-+
-+#ifdef _CPHAL_CPSAR
-+#include "cpremap_cpsar.c"
-+#endif
-+
-+#ifdef _CPHAL_AAL2
-+#include "cpremap_cpaal2.c"
-+#endif
-+
-+/**
-+@defgroup Common_Config_Params Common Configuration Parameters
-+
-+This section documents the configuration parameters that are valid across
-+all CPHAL devices.
-+@{
-+*/
-+/** This is the debug level. The field is bit defined, such that the user
-+should set to 1 all the bits corresponding to desired debug outputs. The following
-+are the meanings for each debug bit:
-+- bit0 (LSB): CPHAL Function Trace
-+- b1 : OS Function call trace
-+- b2 : Critical section entry/exit
-+- b3 : Memory allocation/destruction
-+- b4 : Detailed information in Rx path
-+- b5 : Detailed information in Tx path
-+- b6 : Extended error information
-+- b7 : General info
-+*/
-+static const char pszDebug[] = "debug";
-+/** CPU Frequency. */
-+/*static const char pszCpuFreq[] = "CpuFreq";*/ /*MJH-030403*/
-+/** Base address for the module. */
-+static const char pszBase[] = "base";
-+/** Reset bit for the module. */
-+static const char pszResetBit[] = "reset_bit";
-+/** Reset base address for the module. */
-+static const char pszResetBase[] = "ResetBase";
-+/** Interrupt line for the module. */
-+static const char pszIntLine[] = "int_line";
-+/** VLYNQ offset for the module. Disregard if not using VLYNQ. */
-+static const char pszOffset[] = "offset";
-+/** The OS may "Get" this parameter, which is a pointer
-+ to a character string that indicates the version of CPHAL. */
-+static const char pszVer[] = "Version";
-+/*@}*/
-+
-+/**
-+@defgroup Common_Control_Params Common Keys for [os]Control()
-+
-+This section documents the keys used with the OS @c Control() interface that
-+are required by CPHAL devices.
-+
-+@{
-+*/
-+/** Used to wait for an integer number of clock ticks, given as an integer
-+ pointer in the @p Value parameter. No actions are defined. */
-+static const char pszSleep[] = "Sleep";
-+/** Requests the OS to flush it's IO buffers. No actions are defined. */
-+static const char pszSioFlush[] = "SioFlush";
-+/*@}*/
-+
-+static const char pszStateChange[] = "StateChange";
-+static const char pszStatus[] = "Status";
-+
-+static const char pszGET[] = "Get";
-+static const char pszSET[] = "Set";
-+static const char pszCLEAR[] = "Clear";
-+static const char pszNULL[] = "";
-+static const char pszLocator[] = "Locator";
-+static const char pszOff[] = "Off";
-+static const char pszOn[] = "On";
-+static const char hcMaxFrags[] = "MaxFrags";
-+
-+#ifdef _CPHAL_CPMAC
-+
-+/* New method for string constants */
-+const char hcClear[] = "Clear";
-+const char hcGet[] = "Get";
-+const char hcSet[] = "Set";
-+
-+const char hcTick[] = "Tick";
-+
-+static const CONTROL_KEY KeyCommon[] =
-+ {
-+ {"" , enCommonStart},
-+ {pszStatus , enStatus},
-+ {pszOff , enOff},
-+ {pszOn , enOn},
-+ {pszDebug , enDebug},
-+ {hcCpuFrequency , enCpuFreq}, /*MJH~030403*/
-+ {"" , enCommonEnd}
-+ };
-+#endif
-+
-+/**
-+@defgroup Common_Statistics Statistics
-+
-+A broad array of module statistics is available. Statistics values are accessed
-+through the @c Control() interface of the CPHAL. There are 5 different levels
-+of statistics, each of which correspond to a unique set of data. Furthermore,
-+certain statistics data is indexed by using a channel number and Tx queue number.
-+The following is a brief description of each statistics level, along with the
-+indexes used for the level:
-+
-+- Level 0: Hardware Statistics (index with channel)
-+- Level 1: CPHAL Software Statistics (channel, queue)
-+- Level 2: CPHAL Flags (channel, queue)
-+- Level 3: CPHAL Channel Configuration (channel)
-+- Level 4: CPHAL General Configuration (no index)
-+
-+The caller requests statistics information by providing a Key string to the
-+@c Control() API in the following format: "Stats;[Level #];[Ch #];[Queue #]".
-+The only valid Action parameter for statistics usage is "Get".
-+
-+Code Examples:
-+@code
-+unsigned int *StatsData;
-+
-+# Get Level 0 stats for Channel 1
-+HalFunc->Control(OsDev->HalDev, "Stats;0;1", "Get", &StatsData);
-+
-+# Get Level 2 stats for Channel 0, Queue 0
-+HalFunc->Control(OsDev->HalDev, "Stats;2;0;0", "Get", &StatsData);
-+
-+# Get Level 4 stats
-+HalFunc->Control(OsDev->HalDev, "Stats;4", "Get", &StatsData);
-+@endcode
-+
-+The information returned in the Value parameter of @c Control() is an
-+array of pointers to strings. The pointers are arranged in pairs.
-+The first pointer is a pointer to a name string for a particular statistic.
-+The next pointer is a pointer to a string containing the representation of
-+the integer statistic value corresponding to the first pointer. This is followed
-+by another pair of pointers, and so on, until a NULL pointer is encountered. The
-+following is example code for processing the statistics data. Note that the OS
-+is responsible for freeing the memory passed back through the Value parameter of
-+@c Control().
-+
-+@code
-+unsigned int *StatsData;
-+
-+# Get Level 0 stats for Channel 1
-+HalFunc->Control(OsDev->HalDev, "Stats;0;1", "Get", &StatsData);
-+
-+# output Statistics data
-+PrintStats(StatsData);
-+
-+# the upper layer is responsible for freeing stats info
-+free(&StatsPtr);
-+
-+...
-+
-+void PrintStats(unsigned int *StatsPtr)
-+ {
-+ while(*StatsPtr)
-+ {
-+ printf("%20s:", (char *)*StatsPtr);
-+ StatsPtr++;
-+ printf("%11s\n", (char *)*StatsPtr);
-+ StatsPtr++;
-+ }
-+ MySioFlush();
-+ }
-+@endcode
-+
-+Within each statistics level, there are several statistics defined. The statistics that
-+are common to every CPPI module are listed below. In addition, each module may define
-+extra statistics in each level, which will be documented within the module-specific
-+documentation appendices.
-+
-+- Level 0 Statistics
-+ - All level 0 statistics are module-specific.
-+- Level 1 Statistics (CPHAL Software Statistics)
-+ - DmaLenErrors: Incremented when the port DMA's more data than expected (per channel). (AAL5 Only)
-+ - TxMisQCnt: Incremented when host queues a packet for transmission as the port finishes
-+transmitting the previous last packet in the queue (per channel and queue).
-+ - RxMisQCnt: Incremented when host queues adds buffers to a queue as the port finished the
-+reception of the previous last packet in the queue (per channel).
-+ - TxEOQCnt: Number of times the port has reached the end of the transmit queue (per channel and queue).
-+ - RxEOQCnt: Number of times the port has reached the end of the receive queue (per channel).
-+ - RxPacketsServiced: Number of received packets (per channel).
-+ - TxPacketsServiced: Number of transmitted packets (per channel and queue).
-+ - RxMaxServiced: Maximum number of packets that the CPHAL receive interrupt has serviced at a time (per channel).
-+ - TxMaxServiced: Maximum number of packets that the CPHAL transmit interrupt has serviced at a time (per channel and queue).
-+ - RxTotal: Total number of received packets, all channels.
-+ - TxTotal: Total number of transmitted packets, all channels and queues.
-+- Level 2 Statistics (CPHAL Flags)
-+ - RcbPool: Pointer to receive descriptor pool (per channel).
-+ - RxActQueueCount: Number of buffers currently available for receive (per channel).
-+ - RxActQueueHead: Pointer to first buffer in receive queue (per channel).
-+ - RxActQueueTail: Pointer to last buffer in receive queue (per channel).
-+ - RxActive: 0 if inactive (no buffers available), or 1 if active (buffers available).
-+ - RcbStart: Pointer to block of receive descriptors.
-+ - RxTeardownPending: 1 if Rx teardown is pending but incomplete, 0 otherwise.
-+ - TcbPool: Pointer to transmit descriptor pool (per channel and queue).
-+ - TxActQueueCount: Number of buffers currently queued to be transmitted (per channel and queue).
-+ - TxActQueueHead: Pointer to first buffer in transmit queue (per channel and queue).
-+ - TxActQueueTail: Pointer to last buffer in transmit queue (per channel and queue).
-+ - TxActive: 0 if inactive (no buffers to send), or 1 if active (buffers queued to send).
-+ - TcbStart: Pointer to block of transmit descriptors.
-+ - TxTeardownPending: 1 if Tx teardown is pending but incomplete, 0 otherwise.
-+- Level 3 Statistics (CPHAL Channel Configuration)
-+ - RxBufSize: Rx buffer size.
-+ - RxBufferOffset: Rx buffer offset.
-+ - RxNumBuffers: Number of Rx buffers.
-+ - RxServiceMax: Maximum number of receive packets to service at a time.
-+ - TxNumBuffers: Number of Tx buffer descriptors.
-+ - TxNumQueues: Number of Tx queues to use.
-+ - TxServiceMax: Maximum number of transmit packets to service at a time.
-+- Level 4 Statistics (CPHAL General Configuration)
-+ - Base Address: Base address of the module.
-+ - Offset (VLYNQ): VLYNQ relative module offset.
-+ - Interrupt Line: Interrupt number.
-+ - Debug: Debug flag, 1 to enable debug.
-+ - Inst: Instance number.
-+*/
-+
-+/*
-+ Data Type 0 = int display
-+ Data Type 1 = hex display
-+ Data Type 2 = channel structure, int display
-+ Data Type 3 = queue index and int display
-+ Data Type 4 = queue index and hex display
-+*/
-+#if (defined(_CPHAL_AAL5) || defined(_CPHAL_CPMAC)) /* +GSG 030307 */
-+static STATS_TABLE StatsTable0[] =
-+ {
-+#ifdef _CPHAL_AAL5
-+ /* Name , Data Ptr, Data Type */
-+ {"Crc Errors", 0, 0},
-+ {"Len Errors", 0, 0},
-+ {"Abort Errors", 0, 0},
-+ {"Starv Errors", 0, 0}
-+#endif
-+#ifdef _CPHAL_CPMAC
-+ {"Rx Good Frames", 0, 0}
-+#endif
-+ };
-+
-+static STATS_TABLE StatsTable1[] =
-+ {
-+ /* Name , Data Ptr, Data Type */
-+ {"DmaLenErrors", 0, 0},
-+ {"TxMisQCnt", 0, 3},
-+ {"RxMisQCnt", 0, 0},
-+ {"TxEOQCnt", 0, 3},
-+ {"RxEOQCnt", 0, 0},
-+ {"RxPacketsServiced", 0, 0},
-+ {"TxPacketsServiced", 0, 3},
-+ {"RxMaxServiced", 0, 0},
-+ {"TxMaxServiced", 0, 3},
-+ {"RxTotal", 0, 0},
-+ {"TxTotal", 0, 0},
-+ };
-+
-+static STATS_TABLE StatsTable2[] =
-+ {
-+ /* Name , Data Ptr, Data Type */
-+ {"RcbPool", 0, 1},
-+ {"RxActQueueCount", 0, 0},
-+ {"RxActQueueHead", 0, 1},
-+ {"RxActQueueTail", 0, 1},
-+ {"RxActive", 0, 0},
-+ {"RcbStart", 0, 1},
-+ {"RxTeardownPending", 0, 0},
-+ {"TcbPool", 0, 4},
-+ {"TxActQueueCount", 0, 3},
-+ {"TxActQueueHead", 0, 4},
-+ {"TxActQueueTail", 0, 4},
-+ {"TxActive", 0, 3},
-+ {"TcbStart", 0, 4},
-+ {"TxTeardownPending", 0, 0}
-+ };
-+
-+static STATS_TABLE StatsTable3[] =
-+ {
-+ /* Name , Data Ptr, Data Type */
-+ {"RxBufSize", 0, 2},
-+ {"RxBufferOffset", 0, 2},
-+ {"RxNumBuffers", 0, 2},
-+ {"RxServiceMax", 0, 2},
-+ {"TxNumBuffers", 0, 2},
-+ {"TxNumQueues", 0, 2},
-+ {"TxServiceMax", 0, 2},
-+#ifdef _CPHAL_AAL5
-+ {"CpcsUU", 0, 2},
-+ {"Gfc", 0, 2},
-+ {"Clp", 0, 2},
-+ {"Pti", 0, 2},
-+ {"DaMask", 0, 2},
-+ {"Priority", 0, 2},
-+ {"PktType", 0, 2},
-+ {"Vci", 0, 2},
-+ {"Vpi", 0, 2},
-+ {"CellRate", 0, 2},
-+ {"QosType", 0, 2},
-+ {"Mbs", 0, 2},
-+ {"Pcr", 0, 2}
-+#endif
-+ };
-+
-+static STATS_TABLE StatsTable4[] =
-+ {
-+ {"Base Address", 0, 1},
-+ {"Offset (VLYNQ)", 0, 0},
-+ {"Interrupt Line", 0, 0},
-+ {"Debug", 0, 0},
-+ {"Instance", 0, 0},
-+#ifdef _CPHAL_AAL5
-+ {"UniNni", 0, 0}
-+#endif
-+ };
-+
-+static STATS_DB StatsDb[] =
-+ {
-+ {(sizeof(StatsTable0)/sizeof(STATS_TABLE)), StatsTable0},
-+ {(sizeof(StatsTable1)/sizeof(STATS_TABLE)), StatsTable1},
-+ {(sizeof(StatsTable2)/sizeof(STATS_TABLE)), StatsTable2},
-+ {(sizeof(StatsTable3)/sizeof(STATS_TABLE)), StatsTable3},
-+ {(sizeof(StatsTable4)/sizeof(STATS_TABLE)), StatsTable4}
-+ };
-+#endif /* +GSG 030307 */
-+
-+#ifdef _CPHAL_CPMAC /* +RC 3.02 */
-+static void resetWait(HAL_DEVICE *HalDev)
-+ { /*+RC3.02*/
-+ const int TickReset=64;
-+ osfuncSleep((int*)&TickReset);
-+ } /*+RC3.02*/
-+#endif /* +RC 3.02 */
-+
-+/* I only define the reset base function for the modules
-+ that can perform a reset. The AAL5 and AAL2 modules
-+ do not perform a reset, that is done by the shared module
-+ CPSAR */
-+#if defined(_CPHAL_CPSAR) || defined(_CPHAL_CPMAC) || defined(_CPHAL_VDMAVT)
-+/*
-+ * Determines the reset register address to be used for a particular device.
-+ * It will search the current device entry for Locator information. If the
-+ * device is a root device, there will be no Locator information, and the
-+ * function will find and return the root reset register. If a Locator value
-+ * is found, the function will search each VLYNQ device entry in the system
-+ * looking for a matching Locator. Once it finds a VLYNQ device entry with
-+ * a matching Locator, it will extract the "ResetBase" parameter from that
-+ * VLYNQ device entry (thus every VLYNQ entry must have the ResetBase parameter).
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param ResetBase Pointer to integer address of reset register.
-+ *
-+ * @return 0 OK, Non-zero not OK
-+ */
-+static int ResetBaseGet(HAL_DEVICE *HalDev, bit32u *ResetBase)
-+ {
-+ char *DeviceInfo = HalDev->DeviceInfo;
-+ char *MyLocator, *NextLocator;
-+ int Inst=1;
-+ bit32u error_code;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpcommon]ResetBaseGet(HalDev:%08x, ResetBase:%08x)\n", (bit32u)HalDev, ResetBase);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ error_code = HalDev->OsFunc->DeviceFindParmValue(DeviceInfo, "Locator", &MyLocator);
-+ if (error_code)
-+ {
-+ /* if no Locator value, device is on the root, so get the "reset" device */
-+ error_code = HalDev->OsFunc->DeviceFindInfo(0, "reset", &DeviceInfo);
-+ if (error_code)
-+ {
-+ return(EC_VAL_DEVICE_NOT_FOUND);
-+ }
-+
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, "base", ResetBase);
-+ if (error_code)
-+ {
-+ return(EC_VAL_BASE_ADDR_NOT_FOUND);
-+ }
-+
-+ *ResetBase = ((bit32u)PhysToVirtNoCache(*ResetBase));
-+
-+ /* found base address for root device, so we're done */
-+ return (EC_NO_ERRORS);
-+ }
-+ else
-+ {
-+ /* we have a Locator value, so the device is remote */
-+
-+ /* Find a vlynq device with a matching locator value */
-+ while ((HalDev->OsFunc->DeviceFindInfo(Inst, "vlynq", &DeviceInfo)) == EC_NO_ERRORS)
-+ {
-+ error_code = HalDev->OsFunc->DeviceFindParmValue(DeviceInfo, "Locator", &NextLocator);
-+ if (error_code)
-+ {
-+ /* no Locator value for this VLYNQ, so move on */
-+ continue;
-+ }
-+ if (HalDev->OsFunc->Strcmpi(MyLocator, NextLocator)==0)
-+ {
-+ /* we have found a VLYNQ with a matching Locator, so extract the ResetBase */
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, "ResetBase", ResetBase);
-+ if (error_code)
-+ {
-+ return(EC_VAL_BASE_ADDR_NOT_FOUND);
-+ }
-+ *ResetBase = ((bit32u)PhysToVirtNoCache(*ResetBase));
-+
-+ /* found base address for root device, so we're done */
-+ return (EC_NO_ERRORS);
-+ }
-+ Inst++;
-+ } /* while */
-+ } /* else */
-+
-+ return (EC_NO_ERRORS);
-+ }
-+#endif
-+
-+#ifndef _CPHAL_AAL2 /* + RC 3.02 */
-+static bit32u ConfigGetCommon(HAL_DEVICE *HalDev)
-+ {
-+ bit32u ParmValue;
-+ bit32 error_code;
-+ char *DeviceInfo = HalDev->DeviceInfo;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpcommon]ConfigGetCommon(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszBase, &ParmValue);
-+ if (error_code)
-+ {
-+ return(EC_FUNC_HAL_INIT|EC_VAL_BASE_ADDR_NOT_FOUND);
-+ }
-+ HalDev->dev_base = ((bit32u)PhysToVirtNoCache(ParmValue));
-+
-+#ifndef _CPHAL_AAL5
-+#ifndef _CPHAL_AAL2
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszResetBit, &ParmValue);
-+ if(error_code)
-+ {
-+ return(EC_FUNC_HAL_INIT|EC_VAL_RESET_BIT_NOT_FOUND);
-+ }
-+ HalDev->ResetBit = ParmValue;
-+
-+ /* Get reset base address */
-+ error_code = ResetBaseGet(HalDev, &ParmValue);
-+ if (error_code)
-+ return(EC_FUNC_HAL_INIT|EC_VAL_RESET_BASE_NOT_FOUND);
-+ HalDev->ResetBase = ParmValue;
-+#endif
-+#endif
-+
-+#ifndef _CPHAL_CPSAR
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszIntLine,&ParmValue);
-+ if (error_code)
-+ {
-+ return(EC_FUNC_HAL_INIT|EC_VAL_INTERRUPT_NOT_FOUND);
-+ }
-+ HalDev->interrupt = ParmValue;
-+#endif
-+
-+ /* only look for the offset if there is a Locator field, which indicates that
-+ the module is a VLYNQ module */
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszLocator,&ParmValue);
-+ if (!error_code)
-+ {
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszOffset,&ParmValue);
-+ if (error_code)
-+ {
-+ return(EC_FUNC_HAL_INIT|EC_VAL_OFFSET_NOT_FOUND);
-+ }
-+ HalDev->offset = ParmValue;
-+ }
-+ else
-+ HalDev->offset = 0;
-+
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo, pszDebug, &ParmValue);
-+ if (!error_code) HalDev->debug = ParmValue;
-+
-+ return (EC_NO_ERRORS);
-+ }
-+#endif /* +RC 3.02 */
-+
-+#ifdef _CPHAL_CPMAC /* +RC 3.02 */
-+static void StatsInit(HAL_DEVICE *HalDev) /* +() RC3.02 */
-+ {
-+ /* even though these statistics may be for multiple channels and
-+ queues, i need only configure the pointer to the beginning
-+ of the array, and I can index from there if necessary */
-+
-+#ifdef _CPHAL_AAL5
-+ StatsTable0[0].StatPtr = &HalDev->Stats.CrcErrors[0];
-+ StatsTable0[1].StatPtr = &HalDev->Stats.LenErrors[0];
-+ StatsTable0[2].StatPtr = &HalDev->Stats.AbortErrors[0];
-+ StatsTable0[3].StatPtr = &HalDev->Stats.StarvErrors[0];
-+
-+ StatsTable1[0].StatPtr = &HalDev->Stats.DmaLenErrors[0];
-+ StatsTable1[1].StatPtr = &HalDev->Stats.TxMisQCnt[0][0];
-+ StatsTable1[2].StatPtr = &HalDev->Stats.RxMisQCnt[0];
-+ StatsTable1[3].StatPtr = &HalDev->Stats.TxEOQCnt[0][0];
-+ StatsTable1[4].StatPtr = &HalDev->Stats.RxEOQCnt[0];
-+ StatsTable1[5].StatPtr = &HalDev->Stats.RxPacketsServiced[0];
-+ StatsTable1[6].StatPtr = &HalDev->Stats.TxPacketsServiced[0][0];
-+ StatsTable1[7].StatPtr = &HalDev->Stats.RxMaxServiced;
-+ StatsTable1[8].StatPtr = &HalDev->Stats.TxMaxServiced[0][0];
-+ StatsTable1[9].StatPtr = &HalDev->Stats.RxTotal;
-+ StatsTable1[10].StatPtr = &HalDev->Stats.TxTotal;
-+#endif
-+
-+#if (defined(_CPHAL_AAL5) || defined(_CPHAL_CPMAC))
-+ StatsTable2[0].StatPtr = (bit32u *)&HalDev->RcbPool[0];
-+ StatsTable2[1].StatPtr = &HalDev->RxActQueueCount[0];
-+ StatsTable2[2].StatPtr = (bit32u *)&HalDev->RxActQueueHead[0];
-+ StatsTable2[3].StatPtr = (bit32u *)&HalDev->RxActQueueTail[0];
-+ StatsTable2[4].StatPtr = &HalDev->RxActive[0];
-+ StatsTable2[5].StatPtr = (bit32u *)&HalDev->RcbStart[0];
-+ StatsTable2[6].StatPtr = &HalDev->RxTeardownPending[0];
-+ StatsTable2[7].StatPtr = (bit32u *)&HalDev->TcbPool[0][0];
-+ StatsTable2[8].StatPtr = &HalDev->TxActQueueCount[0][0];
-+ StatsTable2[9].StatPtr = (bit32u *)&HalDev->TxActQueueHead[0][0];
-+ StatsTable2[10].StatPtr = (bit32u *)&HalDev->TxActQueueTail[0][0];
-+ StatsTable2[11].StatPtr = &HalDev->TxActive[0][0];
-+ StatsTable2[12].StatPtr = (bit32u *)&HalDev->TcbStart[0][0];
-+ StatsTable2[13].StatPtr = &HalDev->TxTeardownPending[0];
-+
-+ StatsTable3[0].StatPtr = &HalDev->ChData[0].RxBufSize;
-+ StatsTable3[1].StatPtr = &HalDev->ChData[0].RxBufferOffset;
-+ StatsTable3[2].StatPtr = &HalDev->ChData[0].RxNumBuffers;
-+ StatsTable3[3].StatPtr = &HalDev->ChData[0].RxServiceMax;
-+ StatsTable3[4].StatPtr = &HalDev->ChData[0].TxNumBuffers;
-+ StatsTable3[5].StatPtr = &HalDev->ChData[0].TxNumQueues;
-+ StatsTable3[6].StatPtr = &HalDev->ChData[0].TxServiceMax;
-+#ifdef _CPHAL_AAL5
-+ StatsTable3[7].StatPtr = &HalDev->ChData[0].CpcsUU;
-+ StatsTable3[8].StatPtr = &HalDev->ChData[0].Gfc;
-+ StatsTable3[9].StatPtr = &HalDev->ChData[0].Clp;
-+ StatsTable3[10].StatPtr = &HalDev->ChData[0].Pti;
-+ StatsTable3[11].StatPtr = &HalDev->ChData[0].DaMask;
-+ StatsTable3[12].StatPtr = &HalDev->ChData[0].Priority;
-+ StatsTable3[13].StatPtr = &HalDev->ChData[0].PktType;
-+ StatsTable3[14].StatPtr = &HalDev->ChData[0].Vci;
-+ StatsTable3[15].StatPtr = &HalDev->ChData[0].Vpi;
-+ StatsTable3[16].StatPtr = &HalDev->ChData[0].TxVc_CellRate;
-+ StatsTable3[17].StatPtr = &HalDev->ChData[0].TxVc_QosType;
-+ StatsTable3[18].StatPtr = &HalDev->ChData[0].TxVc_Mbs;
-+ StatsTable3[19].StatPtr = &HalDev->ChData[0].TxVc_Pcr;
-+#endif
-+#endif
-+
-+ StatsTable4[0].StatPtr = &HalDev->dev_base;
-+ StatsTable4[1].StatPtr = &HalDev->offset;
-+ StatsTable4[2].StatPtr = &HalDev->interrupt;
-+ StatsTable4[3].StatPtr = &HalDev->debug;
-+ StatsTable4[4].StatPtr = &HalDev->Inst;
-+ }
-+#endif /* +RC 3.02 */
-+
-+#ifndef _CPHAL_CPSAR /* +RC 3.02 */
-+#ifndef _CPHAL_AAL2 /* +RC 3.02 */
-+/*
-+ * Returns statistics information.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return 0
-+ */
-+static int StatsGet(HAL_DEVICE *HalDev, void **StatPtr, int Index, int Ch, int Queue)
-+ {
-+ int Size;
-+ bit32u *AddrPtr;
-+ char *DataPtr;
-+ STATS_TABLE *StatsTable;
-+ int i, NumberOfStats;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpcommon]StatsGet(HalDev:%08x, StatPtr:%08x)\n",
-+ (bit32u)HalDev, (bit32u)StatPtr);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ StatsTable = StatsDb[Index].StatTable;
-+ NumberOfStats = StatsDb[Index].NumberOfStats;
-+
-+ Size = sizeof(bit32u)*((NumberOfStats*2)+1);
-+ Size += (NumberOfStats*11);
-+ *StatPtr = (bit32u *)HalDev->OsFunc->Malloc(Size);
-+
-+ AddrPtr = (bit32u *) *StatPtr;
-+ DataPtr = (char *)AddrPtr;
-+ DataPtr += sizeof(bit32u)*((NumberOfStats*2)+1);
-+
-+ for (i=0; i<NumberOfStats; i++)
-+ {
-+ *AddrPtr++ = (bit32u)StatsTable[i].StatName;
-+ *AddrPtr++ = (bit32u)DataPtr;
-+ if (&StatsTable[i].StatPtr[Ch] != 0)
-+ {
-+ switch(StatsTable[i].DataType)
-+ {
-+ case 0:
-+ HalDev->OsFunc->Sprintf(DataPtr, "%d", (bit32u *)StatsTable[i].StatPtr[Ch]);
-+ break;
-+ case 1:
-+ HalDev->OsFunc->Sprintf(DataPtr, "0x%x", (bit32u *)StatsTable[i].StatPtr[Ch]);
-+ break;
-+ case 2:
-+ HalDev->OsFunc->Sprintf(DataPtr, "%d", *((bit32u *)StatsTable[i].StatPtr + (Ch * (sizeof(CHANNEL_INFO)/4))));
-+ break;
-+ case 3:
-+ HalDev->OsFunc->Sprintf(DataPtr, "%d", *((bit32u *)StatsTable[i].StatPtr + (Ch*MAX_QUEUE)+Queue));
-+ break;
-+ case 4:
-+ HalDev->OsFunc->Sprintf(DataPtr, "0x%x", *((bit32u *)StatsTable[i].StatPtr + (Ch*MAX_QUEUE)+Queue));
-+ break;
-+ default:
-+ /* invalid data type, due to CPHAL programming error */
-+ break;
-+ }
-+ }
-+ else
-+ {
-+ /* invalid statistics pointer, probably was not initialized */
-+ }
-+ DataPtr += HalDev->OsFunc->Strlen(DataPtr) + 1;
-+ }
-+
-+ *AddrPtr = (bit32u) 0;
-+
-+ return (EC_NO_ERRORS);
-+ }
-+#endif /* +RC 3.02 */
-+#endif /* +RC 3.02 */
-+
-+#ifdef _CPHAL_CPMAC
-+static void gpioFunctional(int base, int bit)
-+ { /*+RC3.02*/
-+ bit32u GpioEnr = base + 0xC;
-+ /* To make functional, set to zero */
-+ *(volatile bit32u *)(GpioEnr) &= ~(1 << bit); /*+RC3.02*/
-+ } /*+RC3.02*/
-+
-+
-+/*+RC3.02*/
-+/* Common function, Checks to see if GPIO should be in functional mode */
-+static void gpioCheck(HAL_DEVICE *HalDev, void *moduleDeviceInfo)
-+ { /*+RC3.02*/
-+ int rc;
-+ void *DeviceInfo;
-+ char *pszMuxBits;
-+ char pszMuxBit[20];
-+ char *pszTmp;
-+ char szMuxBit[20];
-+ char *ptr;
-+ int base;
-+ int reset_bit;
-+ int bit;
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+
-+ rc = OsFunc->DeviceFindParmValue(moduleDeviceInfo, "gpio_mux",&pszTmp);
-+ if(rc) return;
-+ /* gpio entry found, get GPIO register info and make functional */
-+
-+ /* temp copy until FinParmValue fixed */
-+ ptr = &szMuxBit[0];
-+ while ((*ptr++ = *pszTmp++));
-+
-+ pszMuxBits = &szMuxBit[0];
-+
-+ rc = OsFunc->DeviceFindInfo(0,"gpio",&DeviceInfo);
-+ if(rc) return;
-+
-+ rc = OsFunc->DeviceFindParmUint(DeviceInfo, "base",&base);
-+ if(rc) return;
-+
-+ rc = OsFunc->DeviceFindParmUint(DeviceInfo, "reset_bit",&reset_bit);
-+ if(rc) return;
-+
-+ /* If GPIO still in reset, then exit */
-+ if((VOLATILE32(HalDev->ResetBase) & (1 << reset_bit)) == 0)
-+ return;
-+ /* format for gpio_mux is gpio_mux = <int>;<int>;<int>...*/
-+ while (*pszMuxBits)
-+ {
-+ pszTmp = &pszMuxBit[0];
-+ if(*pszMuxBits == ';') pszMuxBits++;
-+ while ((*pszMuxBits != ';') && (*pszMuxBits != '\0'))
-+ {
-+ osfuncSioFlush();
-+ /*If value not a number, skip */
-+ if((*pszMuxBits < '0') || (*pszMuxBits > '9'))
-+ pszMuxBits++;
-+ else
-+ *pszTmp++ = *pszMuxBits++;
-+ }
-+ *pszTmp = '\0';
-+ bit = OsFunc->Strtoul(pszMuxBit, &pszTmp, 10);
-+ gpioFunctional(base, bit);
-+ resetWait(HalDev); /* not sure if this is needed */
-+ }
-+ } /*+RC3.02*/
-+#endif /* CPMAC */
-+
-+#ifdef _CPHAL_AAL5
-+const char hcSarFrequency[] = "SarFreq";
-+#endif
-+
-+#endif /* _INC */
-diff -urN linux.old/drivers/atm/sangam_atm/cpcommon_cpsar.h linux.dev/drivers/atm/sangam_atm/cpcommon_cpsar.h
---- linux.old/drivers/atm/sangam_atm/cpcommon_cpsar.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpcommon_cpsar.h 2005-08-23 04:46:50.083845824 +0200
-@@ -0,0 +1,79 @@
-+#ifndef _INC_CPCOMMON_H
-+#define _INC_CPCOMMON_H
-+
-+#define VOLATILE32(addr) (*(volatile bit32u *)(addr))
-+#ifndef dbgPrintf
-+#define dbgPrintf HalDev->OsFunc->Printf
-+#endif
-+
-+#define ChannelUpdate(Field) if(HalChn->Field != 0xFFFFFFFF) HalDev->ChData[Ch].Field = HalChn->Field
-+
-+#define DBG(level) (HalDev->debug & (1<<(level)))
-+/*
-+#define DBG0() DBG(0)
-+#define DBG1() DBG(1)
-+#define DBG2() DBG(2)
-+#define DBG3() DBG(3)
-+#define DBG4() DBG(4)
-+#define DBG5() DBG(5)
-+#define DBG6() DBG(6)
-+#define DBG7() DBG(7)
-+*/
-+
-+/*
-+ * List of defined actions for use with Control().
-+ */
-+typedef enum
-+ {
-+ enGET=0, /**< Get the value associated with a key */
-+ enSET, /**< Set the value associates with a key */
-+ enCLEAR, /**<Clear the value */
-+ enNULL /**< No data action, used to initiate a service or send a message */
-+ }ACTION;
-+
-+/*
-+ * Enumerated hardware states.
-+ */
-+typedef enum
-+ {
-+ enConnected=1, enDevFound, enInitialized, enOpened
-+ }DEVICE_STATE;
-+
-+typedef enum
-+ {
-+ enCommonStart=0,
-+ /* General */
-+ enOff, enOn, enDebug,
-+ /* Module General */
-+ enCpuFreq,
-+ enStatus,
-+ enCommonEnd
-+ }COMMON_KEY;
-+
-+typedef struct
-+ {
-+ const char *strKey;
-+ int enKey;
-+ }CONTROL_KEY;
-+
-+typedef struct
-+ {
-+ char *StatName;
-+ unsigned int *StatPtr;
-+ int DataType; /* 0: int, 1: hex int, 2:channel data */
-+ }STATS_TABLE;
-+
-+typedef struct
-+ {
-+ int NumberOfStats;
-+ STATS_TABLE *StatTable;
-+ }STATS_DB;
-+
-+#define osfuncSioFlush() HalDev->OsFunc->Control(HalDev->OsDev,"SioFlush",pszNULL,0)
-+#define osfuncSleep(Ticks) HalDev->OsFunc->Control(HalDev->OsDev,pszSleep,pszNULL,Ticks)
-+#define osfuncStateChange() HalDev->OsFunc->Control(HalDev->OsDev,pszStateChange,pszNULL,0)
-+
-+#define CHANNEL_NAMES {"Ch0","Ch1","Ch2","Ch3","Ch4","Ch5","Ch6","Ch7","Ch8","Ch9","Ch10","Ch11","Ch12","Ch13","Ch14","Ch15"}
-+
-+#endif
-+
-diff -urN linux.old/drivers/atm/sangam_atm/cppi_cpaal5.c linux.dev/drivers/atm/sangam_atm/cppi_cpaal5.c
---- linux.old/drivers/atm/sangam_atm/cppi_cpaal5.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cppi_cpaal5.c 2005-08-23 04:46:50.084845672 +0200
-@@ -0,0 +1,1483 @@
-+/*************************************************************************
-+ * TNETDxxxx Software Support
-+ * Copyright (c) 2002,2003 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * FILE: cppi.c
-+ *
-+ * DESCRIPTION:
-+ * This file contains shared code for all CPPI modules.
-+ *
-+ * HISTORY:
-+ * 7Aug02 Greg RC1.00 Original Version created.
-+ * 27Sep02 Mick RC1.01 Merged for use by CPMAC/CPSAR
-+ * 16Oct02 Mick RC1.02 Performance Tweaks (see cppihist.txt)
-+ * 12Nov02 Mick RC1.02 Updated to use cpmac_reg.h
-+ * 09Jan03 Mick RC3.01 Removed modification to RxBuffer ptr
-+ * 28Mar03 Mick 1.03 RxReturn now returns error if Malloc Fails
-+ * 10Apr03 Mick 1.03.02 Added Needs Buffer Support
-+ * 11Jun03 Mick 1.06.02 halSend() errors corrected
-+ *
-+ * @author Greg Guyotte
-+ * @version 1.00
-+ * @date 7-Aug-2002
-+ *****************************************************************************/
-+/* each CPPI module must modify this file, the rest of the
-+ code in cppi.c should be totally shared *//* Each CPPI module MUST properly define all constants shown below */
-+
-+/* CPPI registers */
-+
-+/* the following defines are not CPPI specific, but still used by cppi.c */
-+
-+static void FreeRx(HAL_DEVICE *HalDev, int Ch)
-+ {
-+ HAL_RCB *rcb_ptr; /*+GSG 030303*/
-+ int rcbSize = (sizeof(HAL_RCB)+0xf)&~0xf; /*+GSG 030303*/
-+ int Num = HalDev->ChData[Ch].RxNumBuffers, i; /*+GSG 030303*/
-+
-+ /* Free Rx data buffers attached to descriptors, if necessary */
-+ if (HalDev->RcbStart[Ch] != 0) /*+GSG 030303*/
-+ { /*+GSG 030303*/
-+ for(i=0;i<Num;i++) /*+GSG 030303*/
-+ { /*+GSG 030303*/
-+ rcb_ptr = (HAL_RCB *)(HalDev->RcbStart[Ch] + (i*rcbSize)); /*+GSG 030303*/
-+
-+ /* free the data buffer */
-+ if (rcb_ptr->DatPtr != 0)
-+ {
-+
-+ HalDev->OsFunc->FreeRxBuffer((void *)rcb_ptr->OsInfo, (void *)rcb_ptr->DatPtr);
-+ rcb_ptr->OsInfo=0; /*MJH+030522*/
-+ rcb_ptr->DatPtr=0; /*MJH+030522*/
-+ }
-+ } /*+GSG 030303*/
-+ } /*+GSG 030303*/
-+
-+ /* free up all desciptors at once */
-+ HalDev->OsFunc->FreeDmaXfer(HalDev->RcbStart[Ch]);
-+
-+ /* mark buffers as freed */
-+ HalDev->RcbStart[Ch] = 0;
-+ }
-+
-+static void FreeTx(HAL_DEVICE *HalDev, int Ch, int Queue)
-+ {
-+
-+/*+GSG 030303*/
-+
-+ /* free all descriptors at once */
-+ HalDev->OsFunc->FreeDmaXfer(HalDev->TcbStart[Ch][Queue]);
-+
-+ HalDev->TcbStart[Ch][Queue] = 0;
-+ }
-+
-+/* return of 0 means that this code executed, -1 means the interrupt was not
-+ a teardown interrupt */
-+static int RxTeardownInt(HAL_DEVICE *HalDev, int Ch)
-+ {
-+ bit32u base = HalDev->dev_base;
-+
-+ int i;
-+ volatile bit32u *pTmp;
-+
-+ /* check to see if the interrupt is a teardown interrupt */
-+ if (((*(pRX_CPPI_COMP_PTR( base )+( Ch *64))) & TEARDOWN_VAL) == TEARDOWN_VAL)
-+ {
-+ /* finish channel teardown */
-+
-+ /* Free channel resources on a FULL teardown */
-+ if (HalDev->RxTeardownPending[Ch] & FULL_TEARDOWN)
-+ {
-+ FreeRx(HalDev, Ch);
-+ }
-+
-+ /* bug fix - clear Rx channel pointers on teardown */
-+ HalDev->RcbPool[Ch] = 0;
-+ HalDev->RxActQueueHead[Ch] = 0;
-+ HalDev->RxActQueueCount[Ch] = 0;
-+ HalDev->RxActive[Ch] = FALSE;
-+
-+ /* write completion pointer */
-+ (*(pRX_CPPI_COMP_PTR( base )+( Ch *64))) = TEARDOWN_VAL;
-+
-+ /* use direction bit as a teardown pending bit! May be able to
-+ use only one teardown pending integer in HalDev */
-+
-+ HalDev->RxTeardownPending[Ch] &= ~RX_TEARDOWN;
-+
-+ HalDev->ChIsOpen[Ch][DIRECTION_RX] = 0;
-+
-+ /* call OS Teardown Complete (if TX is also done) */
-+ if ((HalDev->TxTeardownPending[Ch] & TX_TEARDOWN) == 0)
-+ {
-+ /* mark channel as closed */
-+ HalDev->ChIsOpen[Ch][DIRECTION_TX] = 0;
-+
-+ /* disable channel interrupt */
-+ SAR_TX_MASK_CLR(HalDev->dev_base) = (1<<Ch);
-+ SAR_TX_MASK_CLR(HalDev->dev_base) = (1<<(Ch+16)); /* +GSG 030307 */
-+ SAR_RX_MASK_CLR(HalDev->dev_base) = (1<<Ch);
-+
-+ /* Clear PDSP Channel State RAM */
-+ pTmp = (pPDSP_BLOCK_0(HalDev->dev_base)+(Ch*64));
-+ for (i=0; i<NUM_PDSP_AAL5_STATE_WORDS; i++)
-+ *pTmp++ = 0;
-+
-+ if ((HalDev->RxTeardownPending[Ch] & BLOCKING_TEARDOWN) == 0)
-+ {
-+
-+ HalDev->OsFunc->TeardownComplete(HalDev->OsDev, Ch, DIRECTION_TX|DIRECTION_RX);
-+ }
-+ /* clear all teardown pending information for this channel */
-+ HalDev->RxTeardownPending[Ch] = 0;
-+ HalDev->TxTeardownPending[Ch] = 0;
-+ }
-+
-+ return (EC_NO_ERRORS);
-+ }
-+ return (-1);
-+ }
-+
-+/* return of 0 means that this code executed, -1 means the interrupt was not
-+ a teardown interrupt */
-+static int TxTeardownInt(HAL_DEVICE *HalDev, int Ch, int Queue)
-+ {
-+ bit32u base = HalDev->dev_base;
-+ HAL_TCB *Last, *Curr, *First; /*+GSG 030303*/
-+
-+ int i;
-+ volatile bit32u *pTmp;
-+
-+ if (((*(pTXH_CPPI_COMP_PTR( base )+( Ch *64)+( Queue ))) & TEARDOWN_VAL) == TEARDOWN_VAL)
-+ {
-+ /* return outstanding buffers to OS +RC3.02*/
-+ Curr = HalDev->TxActQueueHead[Ch][Queue]; /*+GSG 030303*/
-+ First = Curr; /*+GSG 030303*/
-+ while (Curr) /*+GSG 030303*/
-+ { /*+GSG 030303*/
-+ /* Pop TCB(s) for packet from the stack */ /*+GSG 030303*/
-+ Last = Curr->Eop; /*+GSG 030303*/
-+ HalDev->TxActQueueHead[Ch][Queue] = Last->Next; /*+GSG 030303*/
-+ /*+GSG 030303*/
-+ /* return to OS */ /*+GSG 030303*/
-+ HalDev->OsFunc->SendComplete(Curr->OsInfo); /*+GSG 030303*/
-+ /*+GSG 030303*/
-+ /* Push Tcb(s) back onto the stack */ /*+GSG 030303*/
-+ Curr = Last->Next; /*+GSG 030303*/
-+ Last->Next = HalDev->TcbPool[Ch][Queue]; /*+GSG 030303*/
-+ HalDev->TcbPool[Ch][Queue] = First; /*+GSG 030303*/
-+ /*+GSG 030303*/
-+ /* set the first(SOP) pointer for the next packet */ /*+GSG 030303*/
-+ First = Curr; /*+GSG 030303*/
-+ } /*+GSG 030303*/
-+
-+ /* finish channel teardown */
-+
-+ /* save the OsInfo to pass to upper layer
-+ THIS WAS CRASHING - because it's possible that I get the teardown
-+ notification and the TcbHPool is null. In this case, the buffers
-+ to free can be found in the TxHActiveQueue. If I need to get OsInfo
-+ in the future, I can get it from one of those buffers.
-+ OsInfo = HalDev->TcbHPool[Ch]->OsInfo; */
-+
-+ if (HalDev->TxTeardownPending[Ch] & FULL_TEARDOWN)
-+ {
-+ FreeTx(HalDev, Ch, Queue);
-+ } /* if FULL teardown */
-+
-+ /* bug fix - clear Tx channel pointers on teardown */
-+ HalDev->TcbPool[Ch][Queue] = 0;
-+ HalDev->TxActQueueHead[Ch][Queue] = 0;
-+ HalDev->TxActQueueCount[Ch][Queue] = 0;
-+ HalDev->TxActive[Ch][Queue] = FALSE;
-+
-+ /* write completion pointer */
-+ (*(pTXH_CPPI_COMP_PTR( base )+( Ch *64)+( Queue ))) = TEARDOWN_VAL;
-+
-+ /* no longer pending teardown */
-+ HalDev->TxTeardownPending[Ch] &= ~TX_TEARDOWN;
-+
-+ HalDev->ChIsOpen[Ch][DIRECTION_TX] = 0;
-+
-+ /* call OS Teardown Complete (if Rx is also done) */
-+ if ((HalDev->RxTeardownPending[Ch] & RX_TEARDOWN) == 0)
-+ {
-+ /* mark channel as closed */
-+ HalDev->ChIsOpen[Ch][DIRECTION_RX] = 0;
-+
-+ /* disable channel interrupt */
-+ SAR_TX_MASK_CLR(HalDev->dev_base) = (1<<Ch);
-+ SAR_TX_MASK_CLR(HalDev->dev_base) = (1<<(Ch+16)); /* +GSG 030307 */
-+ SAR_RX_MASK_CLR(HalDev->dev_base) = (1<<Ch);
-+
-+ /* Clear PDSP Channel State RAM */
-+ pTmp = (pPDSP_BLOCK_0(HalDev->dev_base)+(Ch*64));
-+ for (i=0; i<NUM_PDSP_AAL5_STATE_WORDS; i++)
-+ *pTmp++ = 0;
-+
-+ if ((HalDev->TxTeardownPending[Ch] & BLOCKING_TEARDOWN) == 0)
-+ {
-+
-+ HalDev->OsFunc->TeardownComplete(HalDev->OsDev, Ch, DIRECTION_TX|DIRECTION_RX);
-+ }
-+
-+ /* clear all teardown pending information for this channel */
-+ HalDev->RxTeardownPending[Ch] = 0;
-+ HalDev->TxTeardownPending[Ch] = 0;
-+ }
-+
-+ return (EC_NO_ERRORS);
-+ }
-+ return (-1);
-+ }
-+
-+/* +GSG 030421 */
-+static void AddToRxQueue(HAL_DEVICE *HalDev, HAL_RCB *FirstRcb, HAL_RCB *LastRcb, int FragCount, int Ch)
-+ {
-+ HAL_RCB *OldTailRcb;
-+
-+ if (HalDev->RxActQueueCount[Ch]==0)
-+ {
-+
-+ HalDev->RxActQueueHead[Ch]=FirstRcb;
-+ HalDev->RxActQueueTail[Ch]=LastRcb;
-+ HalDev->RxActQueueCount[Ch]=FragCount;
-+ if ((!HalDev->InRxInt[Ch])&&(!HalDev->RxActive[Ch]))
-+ {
-+ /* write Rx Queue Head Descriptor Pointer */
-+ (*(pRX_DMA_STATE_WORD_1( HalDev->dev_base )+( Ch *64))) = VirtToPhys(FirstRcb) - HalDev->offset;
-+ HalDev->RxActive[Ch]=TRUE;
-+ }
-+ }
-+ else
-+ {
-+
-+ OldTailRcb=HalDev->RxActQueueTail[Ch];
-+ OldTailRcb->Next=(void *)FirstRcb;
-+
-+ /* Emerald fix 10/29 (Denis) */
-+ *((bit32u *) VirtToVirtNoCache(&OldTailRcb->HNext))=VirtToPhys(FirstRcb) - HalDev->offset;
-+
-+ HalDev->RxActQueueTail[Ch]=LastRcb;
-+ HalDev->RxActQueueCount[Ch]+=FragCount;
-+ }
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function is called to indicate to the CPHAL that the upper layer
-+ * software has finished processing the receive data (given to it by
-+ * osReceive()). The CPHAL will then return the appropriate receive buffers
-+ * and buffer descriptors to the available pool.
-+ *
-+ * @param HalReceiveInfo Start of receive buffer descriptor chain returned to
-+ * CPHAL.
-+ * @param StripFlag Flag indicating whether the upper layer software has
-+ * retained ownership of the receive data buffers.
-+ *<BR>
-+ * 'FALSE' means that the CPHAL can reuse the receive data buffers.
-+ *<BR>
-+ * 'TRUE' : indicates the data buffers were retained by the OS
-+ *<BR>
-+ * NOTE: If StripFlag is TRUE, it is the responsibility of the upper layer software to free the buffers when they are no longer needed.
-+ *
-+ * @return EC_NO_ERRORS (ok). <BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * @ref EC_VAL_RCB_NEEDS_BUFFER "EC_VAL_RCB_NEEDS_BUFFER"<BR>
-+ * @ref EC_VAL_RCB_DROPPED "EC_VAL_RCB_DROPPED"<BR>
-+ */
-+static int halRxReturn(HAL_RECEIVEINFO *HalReceiveInfo,
-+ int StripFlag)
-+ {
-+ int Ch = HalReceiveInfo->Ch, i;
-+ HAL_RCB *LastRcb, *TempRcb;
-+ char *pBuf;
-+ HAL_RCB *CurrHeadRcb = HalReceiveInfo, *LastGoodRcb=0; /* +GSG 030421 */
-+ HAL_DEVICE *HalDev = HalReceiveInfo->HalDev;
-+ int RcbSize = HalDev->ChData[Ch].RxBufSize;
-+ int FragCount = HalReceiveInfo->FragCount;
-+ int rc=0; /*MJH+030417*/
-+ int GoodCount=0; /*GSG+030421*/
-+
-+ if (HalDev->State != enOpened)
-+ return(EC_AAL5 |EC_FUNC_RXRETURN|EC_VAL_INVALID_STATE);
-+
-+ LastRcb=(HAL_RCB *)HalReceiveInfo->Eop;
-+ LastRcb->HNext=0;
-+ LastRcb->Next=0;
-+
-+ if (FragCount>1)
-+ {
-+ LastRcb->Off_BLen=RcbSize;
-+ LastRcb->mode=CB_OWNERSHIP_BIT;
-+ }
-+
-+ HalReceiveInfo->Off_BLen=RcbSize;
-+ HalReceiveInfo->mode=CB_OWNERSHIP_BIT;
-+
-+ /* If OS has kept the buffers for this packet, attempt to alloc new buffers */
-+ if (StripFlag)
-+ {
-+ TempRcb = HalReceiveInfo;
-+ for (i=0; i<FragCount; i++)
-+ {
-+ if (TempRcb == 0)
-+ {
-+ dbgPrintf("Rx Return error while allocating new buffers\n");
-+ dbgPrintf("Rcb = %08x, Rcb->Eop = %08x, FragCount = %d:%d\n",
-+ (bit32u)HalReceiveInfo, (bit32u)HalReceiveInfo->Eop, FragCount,i);
-+ osfuncSioFlush();
-+
-+ return(EC_CPPI|EC_FUNC_RXRETURN|EC_VAL_CORRUPT_RCB_CHAIN);
-+ }
-+
-+ /* size = ((RcbSize+15) & ~15) + 15;*/ /*-3.01b*/
-+ /*size = RcbSize + 15;*/ /* -GSG 030421 */
-+ pBuf= (char *) HalDev->OsFunc->MallocRxBuffer(RcbSize,0,
-+ 0xF,HalDev->ChData[Ch].OsSetup,
-+ (void *)TempRcb,
-+ (void *)&TempRcb->OsInfo,
-+ (void *) HalDev->OsDev);
-+ if (!pBuf)
-+ {
-+ /* malloc failed, add this RCB to Needs Buffer List */
-+ TempRcb->FragCount = 1; /*MJH+030417*/
-+ (HAL_RCB *)TempRcb->Eop = TempRcb; /* GSG +030430 */
-+
-+ if(HalDev->NeedsCount < MAX_NEEDS) /* +MJH 030410 */
-+ { /* +MJH 030410 */
-+ HalDev->Needs[HalDev->NeedsCount] = (HAL_RECEIVEINFO *) TempRcb; /* +MJH 030410 */
-+ HalDev->NeedsCount++; /* +MJH 030410 */
-+ rc = (EC_CPPI|EC_FUNC_RXRETURN|EC_VAL_RCB_NEEDS_BUFFER); /* ~MJH 030417 */
-+ } /* +MJH 030410 */
-+ else /* +MJH 030410 */
-+ rc = (EC_CPPI|EC_FUNC_RXRETURN|EC_VAL_RCB_DROPPED); /* ~MJH 030417 */
-+
-+ /* requeue any previous RCB's that were ready to go before this one */
-+ if (GoodCount > 0) /* +GSG 030421 */
-+ { /* +GSG 030421 */
-+ LastGoodRcb->HNext=0; /* +GSG 030430 */
-+ LastGoodRcb->Next=0; /* +GSG 030430 */
-+ osfuncDataCacheHitWriteback((void *)LastGoodRcb, 16); /* +GSG 030430 */
-+
-+ AddToRxQueue(HalDev, CurrHeadRcb, LastGoodRcb, GoodCount, Ch); /* +GSG 030421 */
-+ GoodCount = 0; /* +GSG 030421 */
-+ } /* +GSG 030421 */
-+
-+ CurrHeadRcb = TempRcb->Next; /* +GSG 030421 */
-+ }
-+ else /* +GSG 030421 */
-+ { /* +GSG 030421 */
-+ /* malloc succeeded, requeue the RCB to the hardware */
-+ TempRcb->BufPtr=VirtToPhys(pBuf) - HalDev->offset;
-+ TempRcb->DatPtr=pBuf;
-+ /* Emerald fix 10/29 */
-+ osfuncDataCacheHitWriteback((void *)TempRcb, 16);
-+
-+ /* i store the last good RCB in case the malloc fails for the
-+ next fragment. This ensures that I can go ahead and return
-+ a partial chain of RCB's to the hardware */
-+ LastGoodRcb = TempRcb; /* +GSG 030421 */
-+ GoodCount++; /* +GSG 030421 */
-+ } /* +GSG 030421 */
-+ TempRcb = TempRcb->Next;
-+ } /* end of Frag loop */
-+ /* if there any good RCB's to requeue, do so here */
-+ if (GoodCount > 0) /* +GSG 030421 */
-+ {
-+ AddToRxQueue(HalDev, CurrHeadRcb, LastGoodRcb, GoodCount, Ch); /* +GSG 030421 */
-+ }
-+ return(rc); /* ~GSG 030421 */
-+ }
-+ else
-+ {
-+ /* Not Stripping */
-+ /* Emerald */
-+ /* Write Back SOP and last RCB */
-+ osfuncDataCacheHitWriteback((void *)HalReceiveInfo, 16);
-+
-+ if (FragCount > 1)
-+ {
-+ osfuncDataCacheHitWriteback((void *)LastRcb, 16);
-+ }
-+ /* if not stripping buffers, always add to queue */
-+ AddToRxQueue(HalDev, HalReceiveInfo, LastRcb, FragCount, Ch); /*MJH~030520*/
-+ }
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/* +MJH 030410
-+ Trys to liberate an RCB until liberation fails.
-+ Note: If liberation fails then RxReturn will re-add the RCB to the
-+ Needs list.
-+*/
-+static void NeedsCheck(HAL_DEVICE *HalDev)
-+{
-+ HAL_RECEIVEINFO* HalRcb;
-+ int rc;
-+ HalDev->OsFunc->CriticalOn();
-+ while(HalDev->NeedsCount)
-+ {
-+ HalDev->NeedsCount--;
-+ HalRcb = HalDev->Needs[HalDev->NeedsCount];
-+ rc = halRxReturn(HalRcb, 1);
-+ /* short circuit if RxReturn starts to fail */
-+ if (rc != 0)
-+ break;
-+ }
-+ HalDev->OsFunc->CriticalOff();
-+}
-+
-+/*
-+ * This function allocates transmit buffer descriptors (internal CPHAL function).
-+ * It creates a high priority transmit queue by default for a single Tx
-+ * channel. If QoS is enabled for the given CPHAL device, this function
-+ * will also allocate a low priority transmit queue.
-+ *
-+ * @param HalDev CPHAL module instance. (set by cphalInitModule())
-+ * @param Ch Channel number.
-+ *
-+ * @return 0 OK, Non-Zero Not OK
-+ */
-+static int InitTcb(HAL_DEVICE *HalDev, int Ch)
-+ {
-+ int i, Num = HalDev->ChData[Ch].TxNumBuffers;
-+ HAL_TCB *pTcb=0;
-+ char *AllTcb;
-+ int tcbSize, Queue;
-+ int SizeMalloc;
-+
-+ tcbSize = (sizeof(HAL_TCB)+0xf)&~0xf;
-+ SizeMalloc = (tcbSize*Num)+0xf;
-+
-+ for (Queue=0; Queue < HalDev->ChData[Ch].TxNumQueues; Queue++)
-+ {
-+ if (HalDev->TcbStart[Ch][Queue] == 0)
-+ {
-+
-+ /* malloc all TCBs at once */
-+ AllTcb = (char *)HalDev->OsFunc->MallocDmaXfer(SizeMalloc,0,0xffffffff);
-+ if (!AllTcb)
-+ {
-+ return(EC_CPPI|EC_FUNC_HAL_INIT|EC_VAL_TCB_MALLOC_FAILED);
-+ }
-+
-+ HalDev->OsFunc->Memset(AllTcb, 0, SizeMalloc);
-+
-+ /* keep this address for freeing later */
-+ HalDev->TcbStart[Ch][Queue] = AllTcb;
-+ }
-+ else
-+ {
-+ /* if the memory has already been allocated, simply reuse it! */
-+ AllTcb = HalDev->TcbStart[Ch][Queue];
-+ }
-+
-+ /* align to cache line */
-+ AllTcb = (char *)(((bit32u)AllTcb + 0xf) &~ 0xf); /*PITS #143 MJH~030522*/
-+
-+ /* default High priority transmit queue */
-+ HalDev->TcbPool[Ch][Queue]=0;
-+ for(i=0;i<Num;i++)
-+ {
-+ /*pTcb=(HAL_TCB *) OsFunc->MallocDmaXfer(sizeof(HAL_TCB),0,0xffffffff); */
-+ pTcb= (HAL_TCB *)(AllTcb + (i*tcbSize));
-+ pTcb->mode=0;
-+ pTcb->BufPtr=0;
-+ pTcb->Next=HalDev->TcbPool[Ch][Queue];
-+ pTcb->Off_BLen=0;
-+ HalDev->TcbPool[Ch][Queue]=pTcb;
-+ }
-+ /*HalDev->TcbEnd = pTcb;*/
-+ }
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/*
-+ * This function allocates receive buffer descriptors (internal CPHAL function).
-+ * After allocation, the function 'queues' (gives to the hardware) the newly
-+ * created receive buffers to enable packet reception.
-+ *
-+ * @param HalDev CPHAL module instance. (set by cphalInitModule())
-+ * @param Ch Channel number.
-+ *
-+ * @return 0 OK, Non-Zero Not OK
-+ */
-+static int InitRcb(HAL_DEVICE *HalDev, int Ch)
-+ {
-+ int i, Num = HalDev->ChData[Ch].RxNumBuffers;
-+ int Size = HalDev->ChData[Ch].RxBufSize;
-+ HAL_RCB *pRcb;
-+ char *pBuf;
-+ char *AllRcb;
-+ int rcbSize;
-+ int DoMalloc = 0;
-+ int SizeMalloc;
-+ int MallocSize;
-+
-+ rcbSize = (sizeof(HAL_RCB)+0xf)&~0xf;
-+ SizeMalloc = (rcbSize*Num)+0xf;
-+
-+ if (HalDev->RcbStart[Ch] == 0)
-+ {
-+ DoMalloc = 1;
-+
-+ /* malloc all RCBs at once */
-+ AllRcb= (char *)HalDev->OsFunc->MallocDmaXfer(SizeMalloc,0,0xffffffff);
-+ if (!AllRcb)
-+ {
-+ return(EC_CPPI|EC_FUNC_HAL_INIT|EC_VAL_RCB_MALLOC_FAILED);
-+ }
-+
-+ HalDev->OsFunc->Memset(AllRcb, 0, SizeMalloc);
-+
-+ /* keep this address for freeing later */
-+ HalDev->RcbStart[Ch] = AllRcb;
-+ }
-+ else
-+ {
-+ /* if the memory has already been allocated, simply reuse it! */
-+ AllRcb = HalDev->RcbStart[Ch];
-+ }
-+
-+ /* align to cache line */
-+ AllRcb = (char *)(((bit32u)AllRcb + 0xf)&~0xf); /*PITS #143 MJH~030522*/
-+
-+ HalDev->RcbPool[Ch]=0;
-+ for(i=0;i<Num;i++)
-+ {
-+ pRcb = (HAL_RCB *)(AllRcb + (i*rcbSize));
-+
-+ if (DoMalloc == 1)
-+ {
-+
-+ MallocSize = Size; /*~3.01 */
-+ pBuf= (char *) HalDev->OsFunc->MallocRxBuffer(MallocSize,0,0xF,HalDev->ChData[Ch].OsSetup, (void *)pRcb, (void *)&pRcb->OsInfo, (void *) HalDev->OsDev);
-+ if(!pBuf)
-+ {
-+ return(EC_CPPI|EC_FUNC_HAL_INIT|EC_VAL_RX_BUFFER_MALLOC_FAILED);
-+ }
-+ /* -RC3.01 pBuf = (char *)(((bit32u)pBuf+0xF) & ~0xF); */
-+ pRcb->BufPtr=VirtToPhys(pBuf) - HalDev->offset;
-+ pRcb->DatPtr=pBuf;
-+ /*pRcb->BufSize=Size;*/
-+ }
-+ pRcb->mode=0;
-+ pRcb->Ch=Ch;
-+ pRcb->Next=(void *)HalDev->RcbPool[Ch];
-+ pRcb->Off_BLen=0;
-+ pRcb->HalDev = HalDev;
-+ HalDev->RcbPool[Ch]=pRcb;
-+ }
-+
-+ /* Give all of the Rx buffers to hardware */
-+
-+ while(HalDev->RcbPool[Ch])
-+ {
-+ pRcb=HalDev->RcbPool[Ch];
-+ HalDev->RcbPool[Ch]=pRcb->Next;
-+ pRcb->Eop=(void*)pRcb;
-+ pRcb->FragCount=1;
-+ halRxReturn((HAL_RECEIVEINFO *)pRcb, 0);
-+ }
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function transmits the data in FragList using available transmit
-+ * buffer descriptors. More information on the use of the Mode parameter
-+ * is available in the module-specific appendices. Note: The OS should
-+ * not call Send() for a channel that has been requested to be torndown.
-+ *
-+ * @param HalDev CPHAL module instance. (set by cphalInitModule())
-+ * @param FragList Fragment List structure.
-+ * @param FragCount Number of fragments in FragList.
-+ * @param PacketSize Number of bytes to transmit.
-+ * @param OsSendInfo OS Send Information structure. <BR>
-+ * @param Mode 32-bit value with the following bit fields: <BR>
-+ * 31-16: Mode (used for module specific data). <BR>
-+ * 15-08: Queue (transmit queue to send on). <BR>
-+ * 07-00: Channel (channel number to send on).
-+ *
-+ * @return EC_NO_ERRORS (ok). <BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * @ref EC_VAL_NOT_LINKED "EC_VAL_NOT_LINKED"<BR>
-+ * @ref EC_VAL_INVALID_CH "EC_VAL_INVALID_CH"<BR>
-+ * @ref EC_VAL_OUT_OF_TCBS "EC_VAL_OUT_OF_TCBS"<BR>
-+ * @ref EC_VAL_NO_TCBS "EC_VAL_NO_TCBS"<BR>
-+ */
-+static int halSend(HAL_DEVICE *HalDev,FRAGLIST *FragList,
-+ int FragCount,int PacketSize, OS_SENDINFO *OsSendInfo,
-+ bit32u Mode)
-+ {
-+ HAL_TCB *tcb_ptr, *head;
-+ int i;
-+ bit32u base = HalDev->dev_base;
-+ int rc = EC_NO_ERRORS;
-+ int Ch = Mode & 0xFF;
-+ int Queue = (Mode>>8)&0xFF;
-+
-+ int WaitFlag = (Mode>>30)&1; /* This is for AAL5 testing only */ /* ~GSG 030508 */
-+ int Offset = (FragList[0].len >> 16);
-+ int PktType = (Mode>>16)&3; /* 0=AAL5, 1=Null AAL, 2=OAM, 3=Transparent */ /* +GSG 030508 */
-+ int AtmHeaderInData = (Mode>>31)&1; /* +GSG 030508 */
-+ int FragIndex = 0;
-+
-+ if (HalDev->State != enOpened)
-+ return(EC_CPPI|EC_FUNC_SEND|EC_VAL_INVALID_STATE);
-+
-+ if (HalDev->ChIsOpen[Ch][DIRECTION_TX] == 0) /*MJH~030611*/ /*PITS 148*/
-+ return(EC_AAL5 |EC_FUNC_SEND|EC_VAL_INVALID_CH); /*+GSG 030303*/
-+
-+ HalDev->OsFunc->CriticalOn();
-+
-+ tcb_ptr = head = HalDev->TcbPool[Ch][Queue];
-+
-+ if (tcb_ptr)
-+ {
-+
-+ /* these two TCB words are only valid on SOP */
-+ if (AtmHeaderInData == 1)
-+ {
-+ tcb_ptr->AtmHeader = 0; /* bug fix for transparent mode PTI problem */
-+ /* Expect AtmHeader in the data */
-+ tcb_ptr->AtmHeader |= *((bit8u *)FragList[FragIndex].data++) << 24;
-+ tcb_ptr->AtmHeader |= *((bit8u *)FragList[FragIndex].data++) << 16;
-+ tcb_ptr->AtmHeader |= *((bit8u *)FragList[FragIndex].data++) << 8;
-+ tcb_ptr->AtmHeader |= *((bit8u *)FragList[FragIndex].data++);
-+
-+ /* decrement data buffer length accordingly */
-+ FragList[FragIndex].len -= ATM_HEADER_SIZE;
-+
-+ /* if the first fragment was ATM Header only, go to next fragment for loop */
-+ if (FragList[FragIndex].len == 0)
-+ FragIndex++;
-+
-+ /* No CPCS_UU/CPI if not AAL5 */
-+ tcb_ptr->Word5 = ((PktType & 0x3)<<16);
-+ }
-+ else
-+ {
-+ /* calculate AtmHeader from fields */
-+ tcb_ptr->AtmHeader = atmheader(HalDev->ChData[Ch].Gfc, /* ~GSG 030306 */
-+ HalDev->ChData[Ch].Vpi, HalDev->ChData[Ch].Vci,
-+ HalDev->ChData[Ch].Pti, HalDev->ChData[Ch].Clp);
-+
-+ tcb_ptr->Word5 = HalDev->ChData[Ch].CpcsUU | ((HalDev->ChData[Ch].PktType &0x3)<<16);
-+ }
-+
-+ for (i=FragIndex; i<FragCount; i++)
-+
-+ {
-+ /* Setup Tx mode and size */
-+ tcb_ptr->HNext = VirtToPhys((bit32 *)tcb_ptr->Next) - HalDev->offset;
-+ tcb_ptr->Off_BLen = FragList[i].len;
-+
-+ if (i==0)
-+ tcb_ptr->Off_BLen |= (Offset << 16);
-+
-+ tcb_ptr->mode = 0; /* MUST clear this for each frag !!! */
-+ tcb_ptr->BufPtr = VirtToPhys((bit32 *)FragList[i].data) -
-+ HalDev->offset;
-+
-+ /* first fragment */
-+ if (i == 0)
-+ {
-+ tcb_ptr->mode |= CB_SOF_BIT;
-+
-+ }
-+
-+ tcb_ptr->mode |= (PacketSize | CB_OWNERSHIP_BIT);
-+ tcb_ptr->OsInfo = OsSendInfo;
-+
-+ if (i == (FragCount - 1))
-+ {
-+ /* last fragment */
-+ tcb_ptr->mode |= CB_EOF_BIT;
-+
-+ /* since this is the last fragment, set the TcbPool pointer before
-+ nulling out the Next pointers */
-+
-+ HalDev->TcbPool[Ch][Queue] = tcb_ptr->Next;
-+
-+ tcb_ptr->Next = 0;
-+ tcb_ptr->HNext = 0;
-+
-+ /* In the Tx Interrupt handler, we will need to know which TCB is EOP,
-+ so we can save that information in the SOP */
-+ head->Eop = tcb_ptr;
-+
-+ /* Emerald fix 10/29 */
-+ osfuncDataCacheHitWriteback((void *)tcb_ptr, 16);
-+
-+ osfuncDataCacheHitWriteback((void *)((bit32u)tcb_ptr + 16), 16);
-+
-+ }
-+ else
-+ {
-+ /* Emerald fix 10/29 */
-+ osfuncDataCacheHitWriteback((void *)tcb_ptr, 16);
-+
-+ osfuncDataCacheHitWriteback((void *)((bit32u)tcb_ptr + 16), 16);
-+
-+ tcb_ptr = tcb_ptr->Next; /* what about the end of TCB list?? */
-+
-+ if (tcb_ptr == 0)
-+ {
-+ rc = EC_CPPI|EC_FUNC_SEND|EC_VAL_OUT_OF_TCBS;
-+ goto ExitSend;
-+ }
-+ }
-+ } /* for */
-+
-+ /* put it on the high priority queue */
-+ if (HalDev->TxActQueueHead[Ch][Queue] == 0)
-+ {
-+ HalDev->TxActQueueHead[Ch][Queue]=head;
-+ HalDev->TxActQueueTail[Ch][Queue]=tcb_ptr;
-+/*+GSG 030303*//*+GSG 030303*/
-+ if (!HalDev->TxActive[Ch][Queue])
-+ {
-+
-+ if (!WaitFlag)
-+ {
-+
-+ /* write CPPI TX HDP */
-+ (*(pTX_DMA_STATE_WORD_0( base )+( Ch *64)+( Queue ))) = VirtToPhys(head) - HalDev->offset;
-+ HalDev->TxActive[Ch][Queue]=TRUE;
-+
-+ }
-+
-+ }
-+ }
-+ else
-+ {
-+ HalDev->TxActQueueTail[Ch][Queue]->Next=head;
-+ /* Emerald fix 10/29 */
-+ *((bit32u *) VirtToVirtNoCache(&HalDev->TxActQueueTail[Ch][Queue]->HNext))=VirtToPhys(head) - HalDev->offset;
-+ HalDev->TxActQueueTail[Ch][Queue]=tcb_ptr;
-+/*+GSG 030303*//*+GSG 030303*/
-+ }
-+ rc = EC_NO_ERRORS;
-+ goto ExitSend;
-+ } /* if (tcb_ptr) */
-+ else
-+ {
-+ rc = EC_CPPI|EC_FUNC_SEND|EC_VAL_NO_TCBS;
-+ goto ExitSend;
-+ }
-+ExitSend:
-+
-+ HalDev->OsFunc->CriticalOff();
-+ return(rc);
-+ }
-+
-+/*
-+ * This function processes receive interrupts. It traverses the receive
-+ * buffer queue, extracting the data and passing it to the upper layer software via
-+ * osReceive(). It handles all error conditions and fragments without valid data by
-+ * immediately returning the RCB's to the RCB pool.
-+ *
-+ * @param HalDev CPHAL module instance. (set by cphalInitModule())
-+ * @param Ch Channel Number.
-+ * @param MoreWork Flag that indicates that there is more work to do when set to 1.
-+ *
-+ * @return 0 if OK, non-zero otherwise.
-+ */
-+static int RxInt(HAL_DEVICE *HalDev, int Ch, int *MoreWork)
-+ {
-+ HAL_RCB *CurrentRcb, *LastRcb=0, *SopRcb, *EofRcb, *EopRcb;
-+ bit32u RxBufStatus,PacketsServiced, RxPktLen = 0, RxSopStatus,
-+ FrmFrags, TotalFrags, CurrDmaLen, DmaLen, FrmLen;
-+ int base = HalDev->dev_base, Ret;
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+ int RxServiceMax = HalDev->ChData[Ch].RxServiceMax;
-+ int FragIndex; /* +GSG 030508 */
-+ int EarlyReturn = 0; /* +GSG 030521 */
-+
-+ bit32u PktType, ExpDmaSize, Cells;
-+ int PassHeader=0;
-+
-+ int mode;
-+
-+ bit32u SopOffset;
-+
-+ if(HalDev->NeedsCount) /* +MJH 030410 */
-+ NeedsCheck(HalDev); /* +MJH 030410 */
-+
-+ /* Handle case of teardown interrupt */
-+ if (HalDev->RxTeardownPending[Ch] != 0)
-+ {
-+ Ret = RxTeardownInt(HalDev, Ch);
-+ if (Ret == 0)
-+ { /*+GSG 030303*/
-+ *MoreWork = 0; /* bug fix 1/6 */ /*+GSG 030303*/
-+ return (EC_NO_ERRORS);
-+ } /*+GSG 030303*/
-+ }
-+
-+ CurrentRcb=HalDev->RxActQueueHead[Ch];
-+
-+ osfuncDataCacheHitInvalidate((void*)CurrentRcb, 16);
-+
-+ RxBufStatus=CurrentRcb->mode;
-+
-+ /* I think I need to do this to ensure that i read UuCpi properly,
-+ which is on the second cache line of the Rcb */
-+ osfuncDataCacheHitInvalidate((void*)((bit32u)CurrentRcb+16), 16);
-+
-+ PacketsServiced=0;
-+ HalDev->InRxInt[Ch]=TRUE;
-+
-+ while((CurrentRcb)&&((RxBufStatus&CB_OWNERSHIP_BIT)==0)&&
-+ (PacketsServiced<RxServiceMax)) /* ~GSG 030307 */
-+ {
-+
-+ PacketsServiced++; /* ~GSG 030307 */
-+ SopRcb=CurrentRcb;
-+ RxSopStatus=RxBufStatus;
-+
-+ RxPktLen = RxSopStatus&CB_SIZE_MASK;
-+ /* Not sure what MAC needs to do for next block */
-+
-+ PktType=((SopRcb->UuCpi & 0x00030000) >> 16); /* GSG ~030508 */
-+ /* Calculate the expected DMA length */
-+ if (RxPktLen != 0)
-+ {
-+ Cells=RxPktLen/48;
-+ if ((RxPktLen%48) > 40)
-+ Cells++;
-+ if (PktType == PKT_TYPE_AAL5) /* ~GSG 030508 */
-+ Cells++;
-+ ExpDmaSize=Cells*48;
-+ }
-+ else
-+ {
-+ ExpDmaSize=0;
-+ }
-+
-+ SopOffset=(SopRcb->Off_BLen&CB_OFFSET_MASK)>>16;
-+
-+ CurrDmaLen=0;
-+ FrmFrags=0;
-+ TotalFrags=0;
-+ FragIndex=0;
-+ FrmLen=0;
-+ EofRcb=0;
-+
-+/* +GSG 030508 */
-+ if ((PktType == PKT_TYPE_OAM) || (PktType == PKT_TYPE_TRANS)) /* +GSG 030508 */
-+ { /* +GSG 030508 */
-+ /* first frag is ATM Header */ /* +GSG 030508 */
-+ PassHeader = 1; /* +GSG 030508 */
-+ HalDev->fraglist[FragIndex].data = (void *)&SopRcb->AtmHeader; /* +GSG 030508 */
-+ HalDev->fraglist[FragIndex].len = 4; /* +GSG 030508 */
-+ HalDev->fraglist[FragIndex].OsInfo = SopRcb->OsInfo; /* +GSG 030701 */
-+ FragIndex++; /* +GSG 030508 */
-+ } /* +GSG 030508 */
-+/* +GSG 030508 */
-+
-+ do
-+ {
-+
-+ DmaLen=CurrentRcb->Off_BLen&CB_SIZE_MASK;
-+
-+ CurrDmaLen+=DmaLen;
-+ FrmLen+=DmaLen;
-+ TotalFrags++;
-+ if (!EofRcb)
-+ {
-+ HalDev->fraglist[FragIndex].data=((char *)CurrentRcb->DatPtr); /* ~GSG 030508 */
-+
-+ HalDev->fraglist[FragIndex].data+=((FrmFrags==0)?SopOffset:0); /* ~GSG 030508 */
-+
-+ HalDev->fraglist[FragIndex].len=DmaLen; /* ~GSG 030508 */
-+
-+ /* GSG 12/9 */
-+ HalDev->fraglist[FragIndex].OsInfo = CurrentRcb->OsInfo; /* ~GSG 030508 */
-+
-+ /* Upper layer must do the data invalidate */
-+
-+ FrmFrags++;
-+ FragIndex++; /* ~GSG 030508 */
-+ if (FrmLen>=RxPktLen)
-+ EofRcb=CurrentRcb;
-+ }
-+ LastRcb=CurrentRcb;
-+ CurrentRcb=LastRcb->Next;
-+ if (CurrentRcb)
-+ {
-+ osfuncDataCacheHitInvalidate((void*)CurrentRcb,16);
-+ /* RxBufStatus=CurrentRcb->mode; */ /*DRB~030522*/
-+ }
-+ }while(((LastRcb->mode&CB_EOF_BIT)==0)&&(CurrentRcb));
-+
-+ /* New location for interrupt acknowledge */
-+ /* Write the completion pointer */
-+ (*(pRX_CPPI_COMP_PTR( base )+( Ch *64))) = VirtToPhys(LastRcb) - HalDev->offset;
-+
-+ EopRcb=LastRcb;
-+ HalDev->RxActQueueHead[Ch]=CurrentRcb;
-+ HalDev->RxActQueueCount[Ch]-=TotalFrags;
-+
-+ if (LastRcb->mode&CB_EOQ_BIT)
-+ {
-+ if (CurrentRcb)
-+ {
-+
-+ HalDev->Stats.RxMisQCnt[Ch]++;
-+
-+ (*(pRX_DMA_STATE_WORD_1( base )+( Ch *64))) = LastRcb->HNext;
-+ }
-+ else
-+ {
-+
-+ /* Rx EOQ */
-+ HalDev->Stats.RxMisQCnt[Ch]++;
-+
-+ HalDev->RxActive[Ch]=FALSE;
-+ }
-+ }
-+
-+ EopRcb->Next=0;
-+
-+ /* setup SopRcb for the packet */
-+ SopRcb->Eop=(void*)EopRcb;
-+ SopRcb->FragCount=TotalFrags;
-+
-+ if ((ExpDmaSize!=CurrDmaLen)||(RxSopStatus&RX_ERROR_MASK))
-+ {
-+ /* check for Rx errors (only valid on SOP) */
-+ if (RxSopStatus & RX_ERROR_MASK)
-+ {
-+ if (RxSopStatus & CRC_ERROR_MASK)
-+ HalDev->Stats.CrcErrors[Ch]++;
-+
-+ if (RxSopStatus & LENGTH_ERROR_MASK)
-+ HalDev->Stats.LenErrors[Ch]++;
-+
-+ if (RxSopStatus & ABORT_ERROR_MASK)
-+ HalDev->Stats.AbortErrors[Ch]++;
-+
-+ if (RxSopStatus & STARV_ERROR_MASK)
-+ HalDev->Stats.StarvErrors[Ch]++;
-+ }
-+ else
-+ {
-+ HalDev->Stats.DmaLenErrors[Ch]++; /* different type of length error */
-+ }
-+
-+ EarlyReturn = 1;
-+ }
-+
-+ /* do not pass up the packet if we're out of RCB's (or have an errored packet)*/
-+ if ((CurrentRcb == 0) || (EarlyReturn == 1))
-+ {
-+ halRxReturn((HAL_RECEIVEINFO *)SopRcb,0);
-+ }
-+ else
-+ {
-+
-+ if (EopRcb!=EofRcb)
-+ {
-+ HAL_RCB *FirstEmptyRcb;
-+
-+ FirstEmptyRcb = EofRcb->Next;
-+ FirstEmptyRcb->Eop = (void*)EopRcb;
-+ FirstEmptyRcb->FragCount = TotalFrags-FrmFrags;
-+
-+ halRxReturn((HAL_RECEIVEINFO *)FirstEmptyRcb,0);
-+ SopRcb->Eop=(void*)EofRcb;
-+ SopRcb->FragCount=FrmFrags;
-+ EofRcb->Next=0; /* Optional */
-+ }
-+
-+ mode = Ch | (PktType << 16) | (PassHeader << 31); /* ~GSG 030508 */
-+
-+ OsFunc->Receive(HalDev->OsDev,HalDev->fraglist,FragIndex,RxPktLen, /* ~GSG 030508 */
-+ (HAL_RECEIVEINFO *)SopRcb,mode);
-+ } /* else */
-+
-+ if (CurrentRcb) /*MJH+030522*/
-+ {
-+ RxBufStatus=CurrentRcb->mode;
-+ }
-+ } /* while */
-+
-+ if ((CurrentRcb)&&((RxBufStatus&CB_OWNERSHIP_BIT)==0)) /*~GSG 030307*/
-+ {
-+ *MoreWork = 1;
-+ }
-+ else
-+ {
-+ *MoreWork = 0;
-+ }
-+
-+ if (PacketsServiced != 0)
-+ {
-+ /* REMOVED when removing InRxInt */
-+ if ((!HalDev->RxActive[Ch]) && (HalDev->RxActQueueCount[Ch]))
-+ {
-+ (*(pRX_DMA_STATE_WORD_1( base )+( Ch *64))) = VirtToPhys(HalDev->RxActQueueHead[Ch]);
-+ HalDev->RxActive[Ch]=TRUE;
-+ }
-+ }
-+
-+ HalDev->InRxInt[Ch]=FALSE;
-+
-+ /* update stats */
-+ HalDev->Stats.RxPacketsServiced[Ch] += PacketsServiced;
-+ HalDev->Stats.RxTotal += PacketsServiced;
-+ if (HalDev->Stats.RxMaxServiced < PacketsServiced)
-+ HalDev->Stats.RxMaxServiced = PacketsServiced;
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/*
-+ * This function processes transmit interrupts. It traverses the
-+ * transmit buffer queue, detecting sent data buffers and notifying the upper
-+ * layer software via osSendComplete(). (for SAR, i originally had this split
-+ * into two functions, one for each queue, but joined them on 8/8/02)
-+ *
-+ * @param HalDev CPHAL module instance. (set by cphalInitModule())
-+ * @param Queue Queue number to service (always 0 for MAC, Choose 1 for SAR to service low priority queue)
-+ * @param MoreWork Flag that indicates that there is more work to do when set to 1.
-+ *
-+ * @return 0 if OK, non-zero otherwise.
-+ */
-+static int TxInt(HAL_DEVICE *HalDev, int Ch, int Queue, int *MoreWork)
-+ {
-+ HAL_TCB *CurrentTcb,*LastTcbProcessed,*FirstTcbProcessed;
-+ int PacketsServiced;
-+ bit32u TxFrameStatus;
-+ int base = HalDev->dev_base, Ret;
-+ int TxServiceMax = HalDev->ChData[Ch].TxServiceMax;
-+ OS_FUNCTIONS *OsFunc = HalDev->OsFunc;
-+
-+ int OtherQueue = Queue^1;
-+
-+/*+GSG 030303*//*+GSG 030303*/
-+
-+ /* Handle case of teardown interrupt. This must be checked at
-+ the top of the function rather than the bottom, because
-+ the normal data processing can wipe out the completion
-+ pointer which is used to determine teardown complete. */
-+ if (HalDev->TxTeardownPending[Ch] != 0)
-+ {
-+ Ret = TxTeardownInt(HalDev, Ch, Queue);
-+ if (Ret == 0)
-+ { /*+GSG 030303*/
-+ *MoreWork = 0; /* bug fix 1/6 */ /*+GSG 030303*/
-+ return (EC_NO_ERRORS);
-+ } /*+GSG 030303*/
-+ }
-+
-+ CurrentTcb = HalDev->TxActQueueHead[Ch][Queue];
-+ FirstTcbProcessed=CurrentTcb;
-+
-+ if (CurrentTcb==0)
-+ {
-+ /* I saw this error a couple of times when multi-channels were added */
-+ dbgPrintf("[cppi TxInt()]TxH int with no TCB in queue!\n");
-+ dbgPrintf(" Ch=%d, CurrentTcb = 0x%08x\n", Ch, (bit32u)CurrentTcb);
-+ dbgPrintf(" HalDev = 0x%08x\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ return(EC_CPPI|EC_FUNC_TXINT|EC_VAL_NULL_TCB);
-+ }
-+
-+ osfuncDataCacheHitInvalidate((void *)CurrentTcb, 16);
-+ TxFrameStatus=CurrentTcb->mode;
-+ PacketsServiced=0;
-+
-+ /* should the ownership bit check be inside of the loop?? could make it a
-+ while-do loop and take this check away */
-+ if ((TxFrameStatus&CB_OWNERSHIP_BIT)==0)
-+ {
-+ OsFunc->CriticalOn(); /* +GSG 030307 */
-+ do
-+ {
-+ /* Pop TCB(s) for packet from the stack */
-+ LastTcbProcessed=CurrentTcb->Eop;
-+
-+ /* new location for acknowledge */
-+ /* Write the completion pointer */
-+ (*(pTXH_CPPI_COMP_PTR( base )+( Ch *64)+( Queue ))) = VirtToPhys(LastTcbProcessed);
-+
-+ HalDev->TxActQueueHead[Ch][Queue] = LastTcbProcessed->Next;
-+
-+/*+GSG 030303*//*+GSG 030303*/
-+
-+ osfuncDataCacheHitInvalidate((void *)LastTcbProcessed, 16);
-+
-+ if (LastTcbProcessed->mode&CB_EOQ_BIT)
-+ {
-+ if (LastTcbProcessed->Next)
-+ {
-+ /* Misqueued packet */
-+
-+ HalDev->Stats.TxMisQCnt[Ch][Queue]++;
-+
-+ (*(pTX_DMA_STATE_WORD_0( base )+( Ch *64)+( Queue ))) = LastTcbProcessed->HNext;
-+ }
-+ else
-+ {
-+ /* Tx End of Queue */
-+
-+ HalDev->Stats.TxEOQCnt[Ch][Queue]++;
-+
-+ HalDev->TxActive[Ch][Queue]=FALSE;
-+ }
-+ }
-+
-+ OsFunc->SendComplete(CurrentTcb->OsInfo);
-+
-+ /* Push Tcb(s) back onto the stack */
-+ CurrentTcb = LastTcbProcessed->Next;
-+
-+ LastTcbProcessed->Next=HalDev->TcbPool[Ch][Queue];
-+
-+ HalDev->TcbPool[Ch][Queue]=FirstTcbProcessed;
-+
-+ PacketsServiced++;
-+
-+ TxFrameStatus=CB_OWNERSHIP_BIT;
-+ /* set the first(SOP) pointer for the next packet */
-+ FirstTcbProcessed = CurrentTcb;
-+ if (CurrentTcb)
-+ {
-+ osfuncDataCacheHitInvalidate((void *)CurrentTcb, 16);
-+ TxFrameStatus=CurrentTcb->mode;
-+ }
-+
-+ }while(((TxFrameStatus&CB_OWNERSHIP_BIT)==0)
-+ &&(PacketsServiced<TxServiceMax));
-+
-+ /* this fixes the SAR TurboDSL hardware bug (multiple queue failure) */
-+ if (HalDev->TxActive[Ch][OtherQueue])
-+ if (HalDev->TxActQueueHead[Ch][OtherQueue])
-+ if ((*(pTX_DMA_STATE_WORD_0( base )+( Ch *64)+( OtherQueue ))) == 0)
-+ {
-+ osfuncDataCacheHitInvalidate(HalDev->TxActQueueHead[Ch][OtherQueue],16);
-+ if ((HalDev->TxActQueueHead[Ch][OtherQueue]->mode) & CB_OWNERSHIP_BIT)
-+ {
-+ HalDev->TurboDslErrors++;
-+ (*(pTX_DMA_STATE_WORD_0( base )+( Ch *64)+( OtherQueue ))) =
-+ VirtToPhys(HalDev->TxActQueueHead[Ch][OtherQueue]);
-+ }
-+ }
-+
-+ OsFunc->CriticalOff(); /* +GSG 030307 */
-+ if (((TxFrameStatus&CB_OWNERSHIP_BIT)==0)
-+ &&(PacketsServiced==TxServiceMax))
-+ {
-+ *MoreWork = 1;
-+ }
-+ else
-+ {
-+ *MoreWork = 0;
-+ }
-+ }
-+
-+ /* update stats */
-+ HalDev->Stats.TxPacketsServiced[Ch][Queue] += PacketsServiced;
-+ HalDev->Stats.TxTotal += PacketsServiced;
-+ if (HalDev->Stats.TxMaxServiced[Ch][Queue] < PacketsServiced)
-+ HalDev->Stats.TxMaxServiced[Ch][Queue] = PacketsServiced;
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function performs a teardown for the given channel. The value of the
-+ * Mode parameter controls the operation of the function, as documented below.
-+ *
-+ * Note: If bit 3 of Mode is set, this call is blocking, and will not return
-+ * until the teardown interrupt has occurred and been processed. While waiting
-+ * for a blocking teardown to complete, ChannelTeardown() will signal the OS
-+ * (via Control(.."Sleep"..)) to allow the OS to perform other tasks if
-+ * necessary. If and only if bit 3 of Mode is clear, the CPHAL will call the
-+ * OS TeardownComplete() function to indicate that the teardown has completed.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param Ch Channel number.
-+ * @param Mode Bit 0 (LSB): Perform Tx teardown (if set).<BR>
-+ * Bit 1: Perform Rx teardown (if set). <BR>
-+ * Bit 2: If set, perform full teardown (free buffers/descriptors).
-+ * If clear, perform partial teardown (keep buffers). <BR>
-+ * Bit 3 (MSB): If set, call is blocking.
-+ * If clear, call is non-blocking.
-+ *
-+ * @return EC_NO_ERRORS (ok). <BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * @ref EC_VAL_INVALID_CH "EC_VAL_INVALID_CH"<BR>
-+ * @ref EC_VAL_TX_TEARDOWN_ALREADY_PEND "EC_VAL_TX_TEARDOWN_ALREADY_PEND"<BR>
-+ * @ref EC_VAL_RX_TEARDOWN_ALREADY_PEND "EC_VAL_RX_TEARDOWN_ALREADY_PEND"<BR>
-+ * @ref EC_VAL_TX_CH_ALREADY_TORNDOWN "EC_VAL_TX_CH_ALREADY_TORNDOWN"<BR>
-+ * @ref EC_VAL_RX_CH_ALREADY_TORNDOWN "EC_VAL_RX_CH_ALREADY_TORNDOWN"<BR>
-+ * @ref EC_VAL_TX_TEARDOWN_TIMEOUT "EC_VAL_TX_TEARDOWN_TIMEOUT"<BR>
-+ * @ref EC_VAL_RX_TEARDOWN_TIMEOUT "EC_VAL_RX_TEARDOWN_TIMEOUT"<BR>
-+ * @ref EC_VAL_LUT_NOT_READY "EC_VAL_LUT_NOT_READY"<BR>
-+ */
-+static int halChannelTeardown(HAL_DEVICE *HalDev, int Ch, bit32 Mode)
-+ {
-+ int DoTx, DoRx, Sleep=2048, timeout=0; /*MJH~030306*/
-+ bit32u base = HalDev->dev_base;
-+
-+/* Set the module, used for error returns */
-+
-+ int Ret;
-+
-+ /* AAL5 only supports tearing down both sides at once (currently)*/
-+ Mode = (Mode | TX_TEARDOWN | RX_TEARDOWN);
-+
-+ DoTx = (Mode & TX_TEARDOWN);
-+ DoRx = (Mode & RX_TEARDOWN);
-+
-+ if (HalDev->State < enInitialized)
-+ return(EC_AAL5 |EC_FUNC_CHTEARDOWN|EC_VAL_INVALID_STATE);
-+
-+ if ((Ch < 0) || (Ch > MAX_AAL5_CHAN ))
-+ {
-+ return(EC_AAL5 |EC_FUNC_CHTEARDOWN|EC_VAL_INVALID_CH);
-+ }
-+
-+ /* set teardown pending bits before performing the teardown, because they
-+ will be used in the int handler (this is done for AAL5) */
-+ if (DoTx)
-+ {
-+ if (HalDev->TxTeardownPending[Ch] != 0)
-+ return(EC_AAL5 |EC_FUNC_CHTEARDOWN|EC_VAL_TX_TEARDOWN_ALREADY_PEND);
-+
-+ /* If a full teardown, this also means that the user must
-+ setup all channels again to use them */
-+ if (Mode & FULL_TEARDOWN)
-+ HalDev->ChIsSetup[Ch][DIRECTION_TX] = 0;
-+
-+ if (HalDev->State < enOpened)
-+ {
-+ /* if the hardware has never been opened, the channel has never actually
-+ been setup in the hardware, so I just need to reset the software flag
-+ and leave */
-+ HalDev->ChIsSetup[Ch][DIRECTION_TX] = 0;
-+ return (EC_NO_ERRORS);
-+ }
-+ else
-+ {
-+ if (HalDev->ChIsOpen[Ch][DIRECTION_TX] == 0)
-+ {
-+ return(EC_AAL5 |EC_FUNC_CHTEARDOWN|EC_VAL_TX_CH_ALREADY_TORNDOWN);
-+ }
-+
-+ /* set teardown flag */
-+ HalDev->TxTeardownPending[Ch] = Mode;
-+ }
-+ }
-+
-+ if (DoRx)
-+ {
-+ if (HalDev->RxTeardownPending[Ch] != 0)
-+ return(EC_AAL5 |EC_FUNC_CHTEARDOWN|EC_VAL_RX_TEARDOWN_ALREADY_PEND);
-+
-+ if (Mode & FULL_TEARDOWN)
-+ HalDev->ChIsSetup[Ch][DIRECTION_RX] = 0;
-+
-+ if (HalDev->State < enOpened)
-+ {
-+ HalDev->ChIsSetup[Ch][DIRECTION_RX] = 0;
-+ return (EC_NO_ERRORS);
-+ }
-+ else
-+ {
-+ if (HalDev->ChIsOpen[Ch][DIRECTION_RX] == 0)
-+ return(EC_AAL5 |EC_FUNC_CHTEARDOWN|EC_VAL_RX_CH_ALREADY_TORNDOWN);
-+
-+ HalDev->RxTeardownPending[Ch] = Mode;
-+ }
-+ }
-+
-+ /* Perform Tx Teardown Duties */
-+ if ((DoTx) && (HalDev->State == enOpened))
-+ {
-+ /* Request TX channel teardown */
-+ (TX_CPPI_TEARDOWN_REG( base )) = Ch;
-+
-+ /* wait until teardown has completed */
-+ if (Mode & BLOCKING_TEARDOWN)
-+ {
-+ timeout = 0;
-+ while (HalDev->ChIsOpen[Ch][DIRECTION_TX] == TRUE)
-+ {
-+ osfuncSleep(&Sleep);
-+
-+ timeout++;
-+ if (timeout > 100000)
-+ {
-+ return(EC_AAL5 |EC_FUNC_CHTEARDOWN|EC_VAL_TX_TEARDOWN_TIMEOUT);
-+ }
-+ }
-+ }
-+ } /* if DoTx */
-+
-+ /* Perform Rx Teardown Duties */
-+ if ((DoRx) && (HalDev->State == enOpened))
-+ {
-+
-+ /* call main teardown routine for Rx */
-+ Ret = HalDev->SarFunc->ChannelTeardown(HalDev->SarDev, Ch, Mode);
-+ if (Ret) return (Ret);
-+
-+ if (Mode & BLOCKING_TEARDOWN)
-+ {
-+ timeout = 0;
-+ while (HalDev->ChIsOpen[Ch][DIRECTION_RX] == TRUE)
-+ {
-+ osfuncSleep(&Sleep);
-+
-+ timeout++;
-+ if (timeout > 100000)
-+ {
-+ return(EC_AAL5 |EC_FUNC_CHTEARDOWN|EC_VAL_RX_TEARDOWN_TIMEOUT);
-+ }
-+ }
-+ }
-+ } /* if DoRx */
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/**
-+ * @ingroup CPHAL_Functions
-+ * This function closes the CPHAL module. The module will be reset.
-+ * The Mode parameter should be used to determine the actions taken by
-+ * Close().
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ * @param Mode Indicates actions to take on close. The following integer
-+ * values are valid: <BR>
-+ * 1: Does not free buffer resources, init parameters remain
-+ * intact. User can then call Open() without calling Init()
-+ * to attempt to reset the device and bring it back to the
-+ * last known state.<BR>
-+ * 2: Frees the buffer resources, but keeps init parameters. This
-+ * option is a more aggressive means of attempting a device reset.
-+ * 3: Frees the buffer resources, and clears all init parameters. <BR>
-+ * At this point, the caller would have to call to completely
-+ * reinitialize the device (Init()) before being able to call
-+ * Open(). Use this mode if you are shutting down the module
-+ * and do not plan to restart.
-+ *
-+ * @return EC_NO_ERRORS (ok).<BR>
-+ * Possible Error Codes:<BR>
-+ * @ref EC_VAL_INVALID_STATE "EC_VAL_INVALID_STATE"<BR>
-+ * Any error code from halChannelTeardown().<BR>
-+ */
-+static int halClose(HAL_DEVICE *HalDev, bit32 Mode)
-+ {
-+ int Ch, Inst, Ret;
-+ OS_DEVICE *TmpOsDev;
-+ OS_FUNCTIONS *TmpOsFunc;
-+ HAL_FUNCTIONS *TmpHalFunc;
-+ char *TmpDeviceInfo;
-+
-+ CPSAR_FUNCTIONS *TmpSarFunc;
-+ CPSAR_DEVICE *TmpSarDev;
-+
-+ /* Verify proper device state */
-+ if (HalDev->State != enOpened)
-+ return (EC_AAL5 | EC_FUNC_CLOSE|EC_VAL_INVALID_STATE);
-+
-+ /* Teardown all open channels */
-+ for (Ch = 0; Ch <= MAX_AAL5_CHAN ; Ch++)
-+ {
-+ if (HalDev->ChIsOpen[Ch][DIRECTION_TX] == TRUE)
-+ {
-+ if (Mode == 1)
-+ {
-+ Ret = halChannelTeardown(HalDev, Ch, TX_TEARDOWN | PARTIAL_TEARDOWN | BLOCKING_TEARDOWN);
-+ if (Ret) return (Ret);
-+ }
-+ else
-+ {
-+ Ret = halChannelTeardown(HalDev, Ch, TX_TEARDOWN | FULL_TEARDOWN | BLOCKING_TEARDOWN);
-+ if (Ret) return (Ret);
-+ }
-+ }
-+
-+ if (HalDev->ChIsOpen[Ch][DIRECTION_RX] == TRUE)
-+ {
-+ if (Mode == 1)
-+ {
-+ Ret = halChannelTeardown(HalDev, Ch, RX_TEARDOWN | PARTIAL_TEARDOWN | BLOCKING_TEARDOWN);
-+ if (Ret) return (Ret);
-+ }
-+ else
-+ {
-+ Ret = halChannelTeardown(HalDev, Ch, RX_TEARDOWN | FULL_TEARDOWN | BLOCKING_TEARDOWN);
-+ if (Ret) return (Ret);
-+ }
-+ }
-+ }
-+
-+ /* free fraglist in HalDev */
-+ HalDev->OsFunc->Free(HalDev->fraglist);
-+ HalDev->fraglist = 0;
-+
-+ /* unregister the interrupt */
-+ HalDev->OsFunc->IsrUnRegister(HalDev->OsDev, HalDev->interrupt);
-+
-+ /* Disable the Tx CPPI DMA */
-+ TX_CPPI_CTL_REG(HalDev->dev_base) = 0;
-+
-+ /* Disable the Rx CPPI DMA */
-+ RX_CPPI_CTL_REG(HalDev->dev_base) = 0;
-+
-+ /* Close the SAR hardware - puts the device in reset if this module is the
-+ "last one out" */
-+ HalDev->SarFunc->Close(HalDev->SarDev, Mode);
-+
-+ /* If mode is 3, than clear the HalDev and set next state to DevFound*/
-+ if (Mode == 3)
-+ {
-+ /* I need to keep the HalDev parameters that were setup in InitModule */
-+ TmpOsDev = HalDev->OsDev;
-+ TmpOsFunc = HalDev->OsFunc;
-+ TmpDeviceInfo = HalDev->DeviceInfo;
-+
-+ TmpSarFunc = HalDev->SarFunc;
-+ TmpSarDev = HalDev->SarDev;
-+
-+ TmpHalFunc = HalDev->HalFuncPtr;
-+ Inst = HalDev->Inst;
-+
-+ /* Clear HalDev */
-+
-+ HalDev->OsFunc->Memset(HalDev, 0, sizeof(HAL_DEVICE));
-+
-+ /* Restore key parameters */
-+ HalDev->OsDev = TmpOsDev;
-+ HalDev->OsFunc = TmpOsFunc;
-+ HalDev->DeviceInfo = TmpDeviceInfo;
-+
-+ HalDev->SarFunc = TmpSarFunc;
-+ HalDev->SarDev = TmpSarDev;
-+
-+ HalDev->HalFuncPtr = TmpHalFunc;
-+ HalDev->Inst = Inst;
-+
-+ HalDev->State = enDevFound;
-+ }
-+ else
-+ {
-+ HalDev->State = enInitialized;
-+ }
-+
-+ return(EC_NO_ERRORS);
-+ }
-diff -urN linux.old/drivers/atm/sangam_atm/cpremap_cpaal5.c linux.dev/drivers/atm/sangam_atm/cpremap_cpaal5.c
---- linux.old/drivers/atm/sangam_atm/cpremap_cpaal5.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpremap_cpaal5.c 2005-08-23 04:46:50.084845672 +0200
-@@ -0,0 +1,27 @@
-+#ifndef _INC_CPREMAP_C
-+#define _INC_CPREMAP_C
-+
-+#ifdef __ADAM2
-+static inline void osfuncDataCacheHitInvalidate(void *ptr, int Size)
-+ {
-+ asm(" cache 17, (%0)" : : "r" (ptr));
-+ }
-+
-+static inline void osfuncDataCacheHitWriteback(void *ptr, int Size)
-+ {
-+ asm(" cache 25, (%0)" : : "r" (ptr));
-+ }
-+
-+#else
-+ #define osfuncDataCacheHitInvalidate(MemPtr, Size) HalDev->OsFunc->DataCacheHitInvalidate(MemPtr, Size)
-+ #define osfuncDataCacheHitWriteback(MemPtr, Size) HalDev->OsFunc->DataCacheHitWriteback(MemPtr, Size)
-+#endif
-+
-+/*
-+#define osfuncDataCacheHitInvalidate(ptr, Size) asm(" cache 17, (%0)" : : "r" (ptr))
-+#define osfuncDataCacheHitWriteback(ptr, Size) asm(" cache 25, (%0)" : : "r" (ptr))
-+*/
-+
-+
-+
-+#endif
-diff -urN linux.old/drivers/atm/sangam_atm/cpremap_cpsar.c linux.dev/drivers/atm/sangam_atm/cpremap_cpsar.c
---- linux.old/drivers/atm/sangam_atm/cpremap_cpsar.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpremap_cpsar.c 2005-08-23 04:46:50.084845672 +0200
-@@ -0,0 +1,27 @@
-+#ifndef _INC_CPREMAP_C
-+#define _INC_CPREMAP_C
-+
-+#ifdef __ADAM2
-+static inline void osfuncDataCacheHitInvalidate(void *ptr, int Size)
-+ {
-+ asm(" cache 17, (%0)" : : "r" (ptr));
-+ }
-+
-+static inline void osfuncDataCacheHitWriteback(void *ptr, int Size)
-+ {
-+ asm(" cache 25, (%0)" : : "r" (ptr));
-+ }
-+
-+#else
-+ #define osfuncDataCacheHitInvalidate(MemPtr, Size) HalDev->OsFunc->DataCacheHitInvalidate(MemPtr, Size)
-+ #define osfuncDataCacheHitWriteback(MemPtr, Size) HalDev->OsFunc->DataCacheHitWriteback(MemPtr, Size)
-+#endif
-+
-+/*
-+#define osfuncDataCacheHitInvalidate(ptr, Size) asm(" cache 17, (%0)" : : "r" (ptr))
-+#define osfuncDataCacheHitWriteback(ptr, Size) asm(" cache 25, (%0)" : : "r" (ptr))
-+*/
-+
-+
-+
-+#endif
-diff -urN linux.old/drivers/atm/sangam_atm/cpsar.c linux.dev/drivers/atm/sangam_atm/cpsar.c
---- linux.old/drivers/atm/sangam_atm/cpsar.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpsar.c 2005-08-23 04:46:50.086845368 +0200
-@@ -0,0 +1,881 @@
-+/**
-+ * cpsar.c
-+ *
-+ * TNETDxxxx Software Support\n
-+ * Copyright (c) 2002 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * This file contains the HAL for the CPSAR module. In the software
-+ * architecture, the CPSAR module is used exclusively by the AAL5 and AAL2
-+ * CPHAL modules. AAL5 and AAL2 may utilize the same CPSAR instance
-+ * simulataneously.
-+ *
-+ * version
-+ * 5Sep02 Greg 1.00 Original Version created.
-+ */
-+
-+/* register files */
-+#include "cp_sar_reg.h"
-+
-+#define _CPHAL_CPSAR
-+#define _CPHAL
-+
-+#define WAIT_THRESH 200000
-+#define IRAM_SIZE 1536
-+#define MAX_INST 2
-+
-+/* OS Data Structure definition */
-+
-+typedef void OS_PRIVATE;
-+typedef void OS_DEVICE;
-+typedef void OS_SENDINFO;
-+typedef void OS_RECEIVEINFO;
-+typedef void OS_SETUP;
-+
-+/* CPHAL Data Structure definitions */
-+
-+typedef struct cpsar_device CPSAR_DEVICE;
-+typedef struct cpsar_device HAL_DEVICE;
-+typedef void HAL_RECEIVEINFO;
-+
-+#define MAX_QUEUE 2
-+#define MAX_CHAN 19
-+
-+#include "cpcommon_cpsar.h"
-+#include "cpswhal_cpsar.h"
-+#include "cpsar.h"
-+#include "cpcommon_cpsar.c"
-+
-+static CPSAR_DEVICE *CpsarDev[MAX_INST]= {0,0};
-+
-+/*
-+ * Returns statistics information.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return 0
-+ */
-+static int StatsGet3(CPSAR_DEVICE *HalDev)
-+ {
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]StatsGet3(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+ /*
-+ dbgPrintf("CPSAR General Stats:\n");
-+ DispHexStat(HalDev, "Base Address",HalDev->dev_base);
-+ DispStat(HalDev, "Offset (VLYNQ)",HalDev->offset);
-+ DispStat(HalDev, "Debug Level",HalDev->debug);
-+ DispStat(HalDev, "Instance",HalDev->Inst);
-+ DispHexStat(HalDev, "Reset Address",HalDev->ResetBase);
-+ DispStat(HalDev, "Reset Bit",HalDev->ResetBit);
-+ */
-+ return (EC_NO_ERRORS);
-+ }
-+
-+/* +GSG 030407 */
-+static void SetOamMode(HAL_DEVICE *HalDev)
-+ {
-+ int Ch;
-+ volatile bit32u *pTmp;
-+ int OamMode = (1<<8);
-+
-+ /* any configuration of OamMode affects all VC's, including AAL2 */
-+ for (Ch = 0; Ch < MAX_CHAN; Ch++)
-+ {
-+ if (Ch < 16)
-+ pTmp = (pPDSP_AAL5_RX_STATE_WORD_0(HalDev->dev_base) + (Ch*64));
-+ else
-+ pTmp = (pPDSP_AAL2_RX_STATE_WORD_0(HalDev->dev_base) + ((Ch-16)*64));
-+
-+ if (HalDev->OamMode == 0)
-+ {
-+ *pTmp &=~ OamMode;
-+ }
-+ else
-+ {
-+ *pTmp |= OamMode;
-+ }
-+ }
-+ }
-+
-+static int halControl(CPSAR_DEVICE *HalDev, const char *Key, const char *Action, void *Value)
-+ {
-+ int KeyFound=0, ActionFound=0, rc=EC_NO_ERRORS, Ch; /* +RC3.02*/
-+ char *TmpKey = (char *)Key;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]halControl(HalDev:%08x, Key:%s, Action:%s, Value:%08x)\n", (bit32u)HalDev,
-+ Key, Action, (bit32u)Value);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ if (HalDev->OsFunc->Strcmpi(Key, "Debug") == 0)
-+ {
-+ KeyFound=1; /* +RC3.02*/
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1; /* +RC3.02*/
-+ HalDev->debug = *(int *)Value;
-+ }
-+ }
-+
-+ /* +GSG 030407 */
-+ if (HalDev->OsFunc->Strcmpi(Key, "OamMode") == 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+ HalDev->OamMode = *(int *)Value;
-+
-+ /* only do this if we're open */
-+ if (HalDev->OpenCount > 0)
-+ SetOamMode(HalDev);
-+ }
-+
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ {
-+ ActionFound=1;
-+ *(int *)Value = HalDev->OamMode;
-+ }
-+ }
-+
-+ if (HalDev->OsFunc->Strcmpi(Key, "Stats3") == 0)
-+ {
-+ if (HalDev->OsFunc->Strcmpi(Action, "Get") == 0)
-+ StatsGet3(HalDev);
-+ }
-+
-+ /* +RC3.02 (if statement) */
-+ /* Fixes PITS #98 */
-+ if (HalDev->OsFunc->Strstr(Key, "PdspEnable") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* Configure PDSP enable bit based on Value*/
-+ if (*(int *)Value & 1)
-+ {
-+ /* enable PDSP */
-+ PDSP_CTRL_REG(HalDev->dev_base) |= 0x2;
-+ }
-+ else
-+ {
-+ /* disable PDSP */
-+ PDSP_CTRL_REG(HalDev->dev_base) &=~ 0x2;
-+ }
-+ }
-+ }
-+
-+ if (HalDev->OsFunc->Strstr(Key, "FwdUnkVc.") != 0)
-+ {
-+ KeyFound=1;
-+ if (HalDev->OsFunc->Strcmpi(Action, "Set") == 0)
-+ {
-+ ActionFound=1;
-+
-+ /* extract channel number */
-+ TmpKey += HalDev->OsFunc->Strlen("FwdUnkVc.");
-+ Ch = HalDev->OsFunc->Strtoul(TmpKey, &TmpKey, 10);
-+
-+ /* Configure forwarding of unknown VCI/VPI cells */
-+ SAR_PDSP_FWD_UNK_VC_REG(HalDev->dev_base) = (((*(int*)Value)<<31) | Ch);
-+ }
-+ }
-+
-+ if (KeyFound == 0) /* +RC3.02 */
-+ rc = (EC_CPSAR|EC_FUNC_CONTROL|EC_VAL_KEY_NOT_FOUND); /* +RC3.02 */
-+
-+ if (ActionFound == 0) /* +RC3.02 */
-+ rc = (EC_CPSAR|EC_FUNC_CONTROL|EC_VAL_ACTION_NOT_FOUND); /* +RC3.02 */
-+
-+ return(rc); /* ~RC3.02 */
-+ }
-+
-+/*
-+ * This function opens the specified channel.
-+ *
-+ * @param HalDev CPHAL module instance. (set by cphalInitModule())
-+ * @param Ch Channel number.
-+ *
-+ * @return 0 OK, Non-zero Not OK
-+ */
-+static int halChannelSetup(CPSAR_DEVICE *HalDev, CHANNEL_INFO *HalCh)
-+ {
-+ int i;
-+ int Ch = HalCh->Channel;
-+ int PdspChBlock = Ch;
-+ int PdspBlockOffset = 0;
-+ volatile bit32u *pTmp;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]halChannelSetup(HalDev:%08x, HalCh:%08x)\n", (bit32u)HalDev,
-+ (bit32u)HalCh);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Figure out the correct offset from the start of the PDSP
-+ Scratchpad RAM (starting at 0x8050 in the SAR) */
-+ if (Ch > 15)
-+ {
-+ /* this is an AAL2 channel, which are channels 16-18 */
-+ PdspChBlock = Ch - 16;
-+ /* Get the offset to the AAL2 portion of the block (in words) */
-+ PdspBlockOffset = NUM_PDSP_AAL5_STATE_WORDS + (PdspChBlock*64);
-+ /* Clear PDSP State RAM */
-+ /*pTmp = (pPDSP_BLOCK_0(HalDev->dev_base)+PdspBlockOffset);
-+ for (i=0; i<NUM_PDSP_AAL2_STATE_WORDS; i++)
-+ *pTmp++ = 0;*/
-+ }
-+ else
-+ {
-+ /* Get the offset to the AAL5 portion of the block (in words) */
-+ PdspBlockOffset = (PdspChBlock*64);
-+ /* Clear PDSP State RAM */
-+ /*pTmp = (pPDSP_BLOCK_0(HalDev->dev_base)+PdspBlockOffset);
-+ for (i=0; i<NUM_PDSP_AAL5_STATE_WORDS; i++)
-+ *pTmp++ = 0;*/
-+ }
-+
-+ /* Configure PDSP State RAM */
-+
-+ /* Setup TX PDSP State RAM */
-+ pTmp = (pPDSP_BLOCK_0(HalDev->dev_base)+PdspBlockOffset);
-+ *pTmp++ = HalCh->TxVc_CellRate; /* Set the cell rate in cells/sec */
-+ *pTmp++ = HalCh->TxVc_QosType; /* Configure the QoS Type */
-+ *pTmp++ = HalCh->TxVc_Mbs; /* Set minimum burst size */
-+ *pTmp++ = 0; /* (skip a register) */
-+ *pTmp++ = HalCh->TxVc_Pcr; /* set the peak cell rate */
-+ *pTmp++ = 0; /* new addition 4.9.02 */
-+ *pTmp++ = HalCh->TxVc_AtmHeader; /* give the ATM header */
-+ *pTmp++ = (HalCh->TxVc_OamTc << 8)
-+ |(HalCh->TxVc_VpOffset); /* Set the OAM TC Path and VP Offset */
-+
-+ /* Setup RX PDSP State RAM */
-+ *pTmp++ = (HalCh->RxVc_OamCh)|
-+ (HalDev->OamMode << 8) |
-+ (HalCh->RxVc_OamToHost<<9); /* Set OAM Channel, Mode, and ToHost options */
-+ *pTmp++ = HalCh->RxVc_AtmHeader; /* ATM hdr put on firmware generated OAM */
-+ *pTmp++ = (HalCh->RxVc_VpOffset)| /* Set Rx OAM TC Path and VP Offset */
-+ (HalCh->RxVc_OamTc<<8);
-+
-+ /* Setup TX VP PDSP State RAM */
-+ pTmp = (pPDSP_BLOCK_0(HalDev->dev_base)+PdspBlockOffset+16); /*GSG~030703 12->16 */
-+ *pTmp++ = HalCh->TxVp_AtmHeader;
-+ *pTmp++ = (HalCh->TxVp_OamTc << 8);
-+
-+ /* Setup RX VP PDSP State RAM */
-+ pTmp = (pPDSP_BLOCK_0(HalDev->dev_base)+PdspBlockOffset+20); /*GSG~030703 16->20 */
-+ *pTmp++ = HalCh->RxVp_AtmHeader;
-+ *pTmp++ = (HalCh->RxVp_OamCh)|
-+ (HalCh->RxVp_OamTc<<8)|
-+ (HalCh->RxVp_OamToHost<<9); /* Set OAM Channel, Mode, and ToHost options */
-+ *pTmp++ = 0;
-+ *pTmp++ = HalCh->RxVp_OamVcList;
-+
-+ /* Configure forwarding of unknown VCI/VPI cells */
-+ if (HalCh->PktType == 3)
-+ SAR_PDSP_FWD_UNK_VC_REG(HalDev->dev_base) = ((HalCh->FwdUnkVc<<31)|Ch);
-+
-+ /* Configure Tx Channel Mapping Register (turn channel "ON") */
-+ TX_CH_MAPPING_REG(HalDev->dev_base) = 0x80000000 |
-+ (HalCh->DaMask << 30)
-+ | (HalCh->Priority << 24) | Ch;
-+
-+ /* Setup Rx Channel in the LUT */
-+ i=0;
-+ while (!(RX_LUT_CH_SETUP_REQ_REG(HalDev->dev_base) & 0x80000000))
-+ {
-+ if (i > WAIT_THRESH)
-+ {
-+ return(EC_CPSAR|EC_FUNC_CHSETUP|EC_VAL_LUT_NOT_READY);
-+ }
-+ else
-+ i++;
-+ }
-+
-+ /* RX LUT is ready */
-+ RX_LUT_CH_SETUP_REQ_REG(HalDev->dev_base) = (HalCh->PktType << 24) | Ch;
-+ RX_LUT_CH_SETUP_REQ_VC_REG(HalDev->dev_base) = ((HalCh->Vpi << 20) |
-+ (HalCh->Vci << 4));
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+static int halChannelTeardown(CPSAR_DEVICE *HalDev, int Ch, bit32 Mode)
-+ {
-+ int waitcnt = 0;
-+ int PdspBlockOffset = 0, i;
-+ volatile bit32u *pTmp;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]halChannelTeardown(HalDev:%08x, Ch:%d, Mode:%d\n",
-+ (bit32u)HalDev, Ch, Mode);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ if ((Ch < 0) || (Ch > MAX_CHAN))
-+ return(EC_CPSAR|EC_FUNC_CHTEARDOWN|EC_VAL_INVALID_CH);
-+
-+ /* Request RX channel teardown through LUT */
-+ while ((RX_LUT_CH_TEARDOWN_REQ_REG(HalDev->dev_base) & 0x80000000) == 0)
-+ {
-+ waitcnt++;
-+ if (waitcnt == WAIT_THRESH)
-+ {
-+ return(EC_CPSAR|EC_FUNC_CHTEARDOWN|EC_VAL_LUT_NOT_READY);
-+ }
-+ }
-+
-+ RX_LUT_CH_TEARDOWN_REQ_REG(HalDev->dev_base) = (Ch & 0xffff);
-+
-+ /* for AAL2, clear channel PDSP RAM here. AAL5 does it when the teardown
-+ has completed (which is asynchronous)*/
-+ if (Ch > 15)
-+ {
-+ /* Get the offset to the AAL2 portion of the block (in words) */
-+ PdspBlockOffset = NUM_PDSP_AAL5_STATE_WORDS + ((Ch-16)*64);
-+ /* Clear PDSP State RAM */
-+ pTmp = (pPDSP_BLOCK_0(HalDev->dev_base)+PdspBlockOffset);
-+ for (i=0; i<NUM_PDSP_AAL2_STATE_WORDS; i++)
-+ *pTmp++ = 0;
-+ }
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+int InitPdsp(CPSAR_DEVICE *HalDev)
-+ {
-+ bit32u NumOfEntries,i,IRamAddress,iTmp;
-+ int *SarPdspFirmware; /* ~GSG 030403 */
-+ int FirmwareSize, rc; /* ~GSG 030403 */
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]InitPdsp(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Get firmware */
-+ rc = HalDev->OsFunc->Control(HalDev->OsDev, "Firmware", "Get", &SarPdspFirmware); /* ~GSG 030403 */
-+ if (rc) /* +GSG 030403 */
-+ return (EC_CPSAR|EC_FUNC_OPEN|EC_VAL_KEY_NOT_FOUND); /* +GSG 030403 */
-+
-+ /* Get firmware size */
-+ rc = HalDev->OsFunc->Control(HalDev->OsDev, "FirmwareSize", "Get", &FirmwareSize); /* ~GSG 030403 */
-+ if (rc) /* +GSG 030403 */
-+ return (EC_CPSAR|EC_FUNC_OPEN|EC_VAL_KEY_NOT_FOUND); /* +GSG 030403 */
-+
-+ IRamAddress = (bit32u) pPDSP_CTRL_REG(HalDev->dev_base);
-+
-+ NumOfEntries = (FirmwareSize)/4; /* ~GSG 030403 */
-+ if (NumOfEntries > IRAM_SIZE)
-+ {
-+ /* Note: On Avalanche, they truncated the PDSP firmware and warned */
-+ /* NumOfEntries = IRAM_SIZE; */
-+ return(EC_CPSAR|EC_FUNC_INIT|EC_VAL_FIRMWARE_TOO_LARGE);
-+ }
-+ for(i=8;i<NumOfEntries;i++)
-+ (*((bit32 *) (IRamAddress+(i*4))))=SarPdspFirmware[i]; /* ~GSG 030403 */
-+
-+ /* Check code */
-+ for(i=8;i<NumOfEntries;i++)
-+ {
-+ iTmp=(*((bit32 *) (IRamAddress+(i*4))));
-+ if (iTmp != SarPdspFirmware[i]) /* ~GSG 030403 */
-+ {
-+ return(EC_CPSAR|EC_FUNC_OPEN|EC_VAL_PDSP_LOAD_FAIL);
-+ }
-+ }
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/*
-+ * This function probes for the instance of the CPHAL module. It will call
-+ * the OS function @c DeviceFindInfo() to get the information required.
-+ *
-+ * @param HalDev CPHAL module instance. (set by xxxInitModule())
-+ *
-+ * @return 0 OK, Otherwise error.
-+ */
-+static int halProbe(CPSAR_DEVICE *HalDev)
-+ {
-+ int Ret;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]halProbe(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(1))
-+ {
-+ dbgPrintf("[os]DeviceFindInfo(Inst:%d, DeviceName:%s, DeviceInfo:%08x)\n",
-+ HalDev->Inst, "sar", (bit32u)&HalDev->DeviceInfo);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Attempt to find the device information */
-+ Ret = HalDev->OsFunc->DeviceFindInfo(HalDev->Inst, "sar", &HalDev->DeviceInfo);
-+ if (Ret)
-+ return(EC_CPSAR|EC_FUNC_PROBE|EC_VAL_DEVICE_NOT_FOUND);
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+#ifdef __CPHAL_DEBUG
-+static void dbgConfigDump(HAL_DEVICE *HalDev)
-+ {
-+ dbgPrintf(" [cpsar Inst %d] Config Dump:\n", HalDev->Inst);
-+ dbgPrintf(" Base :%08x, offset :%08d\n",
-+ HalDev->dev_base, HalDev->offset);
-+ dbgPrintf(" ResetBit:%08d, ResetBase:%08x\n",
-+ HalDev->ResetBit, HalDev->ResetBase);
-+ dbgPrintf(" UniNni :%08d, debug :%08d\n",
-+ HalDev->ResetBit, HalDev->debug);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+/*
-+ * Sets up HAL default configuration parameter values.
-+ */
-+static void ConfigInit(CPSAR_DEVICE *HalDev)
-+ {
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]ConfigInit(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+ /* configure some defaults with tnetd7300 values */
-+ HalDev->dev_base = 0xa3000000;
-+ HalDev->offset = 0;
-+ HalDev->UniNni = CFG_UNI_NNI;
-+ HalDev->ResetBit = 9;
-+ HalDev->debug = 0;
-+ HalDev->ResetBase = 0xa8611600;
-+ }
-+
-+/*
-+ * Retrieve HAL configuration parameter values.
-+ */
-+static bit32u ConfigGet(HAL_DEVICE *HalDev)
-+ {
-+ bit32u ParmValue, error_code;
-+ char *DeviceInfo = HalDev->DeviceInfo;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]ConfigGet(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* get the configuration parameters common to all modules */
-+ error_code = ConfigGetCommon(HalDev);
-+ if (error_code) return (EC_CPSAR|error_code);
-+
-+ /* get SAR specific configuration parameters */
-+ error_code = HalDev->OsFunc->DeviceFindParmUint(DeviceInfo,"UniNni",&ParmValue);
-+ if (!error_code) HalDev->UniNni = ParmValue;
-+
-+ return (EC_NO_ERRORS);
-+ }
-+
-+static int halInit(CPSAR_DEVICE *HalDev)
-+ {
-+ bit32u Ret;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]halInit(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(7))
-+ {
-+ dbgPrintf("[cpsar halInit()]InitCount = %d\n", HalDev->InitCount);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Only run the init code for the first calling module per instance */
-+ if (HalDev->InitCount > 1)
-+ {
-+ return (EC_NO_ERRORS);
-+ }
-+
-+ /* Configure HAL defaults */
-+ ConfigInit(HalDev);
-+
-+ /* Retrieve HAL configuration parameters from data store */
-+ Ret = ConfigGet(HalDev);
-+ if (Ret) return (Ret);
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(9))
-+ dbgConfigDump(HalDev);
-+#endif
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+static int halOpen(CPSAR_DEVICE *HalDev)
-+ {
-+ int Ret, Ticks=64;
-+ int i; /*+GSG 030407*/
-+ volatile int *pTmp; /*+GSG 030407*/
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]halOpen(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(7))
-+ {
-+ dbgPrintf("[cpsar halOpen()]OpenCount = %d\n", HalDev->OpenCount);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Only run the open code for the first calling module per instance */
-+ if (HalDev->OpenCount++ > 0)
-+ {
-+ return (EC_NO_ERRORS);
-+ }
-+
-+ /* Take SAR out of reset */
-+ if (((*(volatile bit32u *)(HalDev->ResetBase)) & (1<<HalDev->ResetBit)) != 0)
-+ {
-+ /** @todo Should I somehow call AAL5/AAL2 Close() here? All I've done
-+ here is copy the Close code from each and paste it here. */
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(7))
-+ {
-+ dbgPrintf("[cpsar halOpen()]Module was already out of reset.\n");
-+ dbgPrintf(" Closing module and resetting.\n");
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Disable the Tx CPPI DMA */
-+ TX_CPPI_CTL_REG(HalDev->dev_base) = 0;
-+
-+ /* Disable the Rx CPPI DMA */
-+ RX_CPPI_CTL_REG(HalDev->dev_base) = 0;
-+
-+ /* Disable the PDSP */
-+ PDSP_CTRL_REG(HalDev->dev_base) &=~ 0x00000002;
-+
-+ /* disable interrupt masks */
-+ SAR_TX_MASK_CLR(HalDev->dev_base) = 0xffffffff;
-+ SAR_RX_MASK_CLR(HalDev->dev_base) = 0xffffffff;
-+
-+#ifndef NO_RESET /* GSG+ 030428 */
-+ /* clear reset bit */
-+ (*(volatile bit32u *)(HalDev->ResetBase)) &=~ (1<<HalDev->ResetBit); /* ~GSG 030307 */
-+ HalDev->OsFunc->Control(HalDev->OsDev, "Sleep", "", &Ticks);
-+
-+ /* set reset bit */
-+ (*(volatile bit32u *)(HalDev->ResetBase)) |= (1<<HalDev->ResetBit); /* ~GSG 030307 */
-+ HalDev->OsFunc->Control(HalDev->OsDev, "Sleep", "", &Ticks);
-+#endif /* GSG+ 030428 */
-+ }
-+ else
-+ {
-+ (*(volatile bit32u *)(HalDev->ResetBase)) |= (1<<HalDev->ResetBit); /* ~GSG 030307 */
-+ HalDev->OsFunc->Control(HalDev->OsDev, "Sleep", "", &Ticks);
-+ }
-+
-+ /* Configure UNI/NNI */
-+ RX_LUT_GLOBAL_CFG_REG(HalDev->dev_base) |= (HalDev->UniNni & 0x1);
-+
-+ /* Clear entire PDSP state RAM */ /*+GSG 030407*/
-+ pTmp = (pTX_DMA_STATE_WORD_0(HalDev->dev_base)); /*+GSG 030407*/
-+ for (i=0; i<PDSP_STATE_RAM_SIZE; i++) /*+GSG 030407*/
-+ *pTmp++ = 0; /*+GSG 030407*/
-+
-+ /* Configure Oam Mode */ /*+GSG 030407*/
-+ SetOamMode(HalDev); /*+GSG 030407*/
-+
-+ /* Initialize PDSP */
-+ Ret=InitPdsp(HalDev);
-+ if(Ret)
-+ return(Ret);
-+
-+ /* Reset and Enable the PDSP */
-+ PDSP_CTRL_REG(HalDev->dev_base) = 0x00080003;
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+static int halClose(CPSAR_DEVICE *HalDev, int Mode)
-+ {
-+ int Ticks = 64;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]halClose(HalDev:%08x, Mode:%d)\n", (bit32u)HalDev, Mode);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* handle the error case if there is nothing open */
-+ if (HalDev->OpenCount == 0)
-+ {
-+ return(EC_CPSAR|EC_FUNC_CLOSE|EC_VAL_MODULE_ALREADY_CLOSED);
-+ }
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(7))
-+ {
-+ dbgPrintf("[cpsar halClose()]OpenCount = %d\n", HalDev->OpenCount);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Only run the close code for the last calling module per instance */
-+ if (HalDev->OpenCount-- > 1)
-+ {
-+ return (EC_NO_ERRORS);
-+ }
-+
-+ /* Disable the PDSP */
-+ PDSP_CTRL_REG(HalDev->dev_base) &=~ 0x00000002;
-+
-+#ifndef NO_RESET /* GSG +030428 */
-+ /* put device back into reset */
-+ (*(volatile bit32u *)(HalDev->ResetBase)) &=~ (1<<HalDev->ResetBit); /* ~GSG 030307 */
-+ HalDev->OsFunc->Control(HalDev->OsDev, "Sleep", "", &Ticks);
-+#endif /* GSG +030428 */
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+static int halShutdown(CPSAR_DEVICE *HalDev)
-+ {
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]halShutdown(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* handle the error case */
-+ if (HalDev->InitCount == 0)
-+ {
-+ return(EC_CPSAR|EC_FUNC_CLOSE|EC_VAL_MODULE_ALREADY_SHUTDOWN);
-+ }
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(7))
-+ {
-+ dbgPrintf("[cpsar halShutdown()]InitCount = %d\n", HalDev->InitCount);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ /* Only run the shutdown code for the last calling module per instance */
-+ if (HalDev->InitCount-- > 1)
-+ {
-+ return (EC_NO_ERRORS);
-+ }
-+
-+ /* free the SAR functions */
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(6))
-+ {
-+ dbgPrintf(" [cpsar halShutdown()]: Free CPSAR function pointers\n");
-+ osfuncSioFlush();
-+ }
-+ if (DBG(1)||DBG(3))
-+ {
-+ dbgPrintf("[os]Free(MemPtr:%08x)\n", (bit32u)HalDev->HalFuncPtr);
-+ osfuncSioFlush();
-+ }
-+#endif
-+ /* free the HalFunc */
-+ HalDev->OsFunc->Free(HalDev->HalFuncPtr);
-+
-+ /* we have a static global, so I should clear it's value as well */
-+ CpsarDev[HalDev->Inst] = 0;
-+
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(6))
-+ {
-+ dbgPrintf(" [cpsar halShutdown()]Free HalDev\n");
-+ osfuncSioFlush();
-+ }
-+ if (DBG(1)||DBG(3))
-+ {
-+ dbgPrintf("[os]Free(MemPtr:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+ /* free the CPSAR device */
-+ HalDev->OsFunc->Free(HalDev);
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+static int halTick(CPSAR_DEVICE *HalDev)
-+ {
-+#ifdef __CPHAL_DEBUG
-+ if (DBG(0))
-+ {
-+ dbgPrintf("[cpsar]halTick(HalDev:%08x)\n", (bit32u)HalDev);
-+ osfuncSioFlush();
-+ }
-+#endif
-+
-+ return(EC_NO_ERRORS);
-+ }
-+
-+/*
-+ * The CPSAR version of InitModule() should be passed the OS_FUNCTIONS pointer,
-+ * and will return the HalDev pointer.
-+ *
-+ * @param HalDev Pointer to CPSAR module information. This will
-+ * be used by the OS when communicating to this module via
-+ * CPSAR.
-+ * @param OsDev Pointer to OS device information. This will be saved by
-+ * the CPSAR and returned to the OS when required.
-+ * @param HalFunc HAL_FUNCTIONS pointer.
-+ * @param Size Pointer to the size of the HAL_FUNCTIONS structure. (If
-+ * HalFunc is 0, the value will be set by CPSAR, otherwise
-+ * ignored)
-+ * @param Inst The instance number of the module to initialize. (start at
-+ * 0).
-+ *
-+ * @return 0 OK, Nonzero - error.
-+ */
-+/*
-+int cpsarInitModule(CPSAR_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ CPSAR_FUNCTIONS *HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int *Size,
-+ int Inst)
-+*/
-+int cpsarInitModule(CPSAR_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ CPSAR_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst)
-+ {
-+ CPSAR_DEVICE *HalPtr;
-+ CPSAR_FUNCTIONS *HalFuncPtr;
-+
-+ /*
-+ if ( HalFunc == 0 )
-+ {
-+ *Size = sizeof(CPSAR_FUNCTIONS);
-+ return(EC_NO_ERRORS);
-+ }
-+ */
-+
-+ if (CpsarDev[Inst] != 0)
-+ {
-+ /* this SAR module has been connected to before, so do not
-+ allocate another CPSAR_DEVICE */
-+ HalPtr = CpsarDev[Inst];
-+
-+ /* increase count of attached modules */
-+ HalPtr->InitCount++;
-+ }
-+ else
-+ {
-+ /* allocate the CPSAR_DEVICE structure */
-+ HalPtr = (CPSAR_DEVICE *) OsFunc->MallocDev(sizeof(CPSAR_DEVICE));
-+ if(!HalPtr)
-+ return(EC_CPSAR|EC_FUNC_HAL_INIT|EC_VAL_MALLOC_DEV_FAILED);
-+
-+ HalFuncPtr = (CPSAR_FUNCTIONS *) OsFunc->Malloc(sizeof(CPSAR_FUNCTIONS));
-+ if (!HalFuncPtr)
-+ return (EC_CPSAR|EC_FUNC_HAL_INIT|EC_VAL_MALLOC_FAILED);
-+
-+ /* Initialize the size of hal functions */
-+ *HalFuncSize = sizeof (CPSAR_FUNCTIONS);
-+
-+ /* ensure the device structure is cleared */
-+ OsFunc->Memset(HalPtr, 0, sizeof(CPSAR_DEVICE));
-+
-+ /* clear the function pointers */
-+ OsFunc->Memset(HalFuncPtr, 0, sizeof(CPSAR_FUNCTIONS));
-+
-+ /* Supply pointers for the CPSAR API functions */
-+ HalFuncPtr->ChannelSetup = halChannelSetup;
-+ HalFuncPtr->ChannelTeardown = halChannelTeardown;
-+ HalFuncPtr->Close = halClose;
-+ HalFuncPtr->Control = halControl;
-+ HalFuncPtr->Init = halInit;
-+ HalFuncPtr->Open = halOpen;
-+ HalFuncPtr->Probe = halProbe;
-+ HalFuncPtr->Shutdown = halShutdown;
-+ HalFuncPtr->Tick = halTick;
-+
-+ /* keep a reference to HalFuncPtr so I can free it later */
-+ HalPtr->HalFuncPtr = HalFuncPtr;
-+
-+ /* store the CPSAR_DEVICE, so the CPSAR module will know whether
-+ it is in use for the given instance */
-+ CpsarDev[Inst] = HalPtr;
-+
-+ /* increase count of attached modules */
-+ HalPtr->InitCount++;
-+ }
-+
-+ /* @todo Does this need modification to deal with multiple callers/
-+ drivers? If different callers will use different OsDev/OsFunc,
-+ then the current code will not work.
-+ */
-+
-+ /* initialize the CPSAR_DEVICE structure */
-+ HalPtr->OsDev = OsDev;
-+ /*HalPtr->OsOpen = OsDev;*/
-+ HalPtr->Inst = Inst;
-+ HalPtr->OsFunc = OsFunc;
-+
-+ /* pass the HalPtr back to the caller */
-+ *HalDev = HalPtr;
-+ *HalFunc = HalPtr->HalFuncPtr;
-+
-+ return (EC_NO_ERRORS);
-+ }
-diff -urN linux.old/drivers/atm/sangam_atm/cpsar_cpaal5.h linux.dev/drivers/atm/sangam_atm/cpsar_cpaal5.h
---- linux.old/drivers/atm/sangam_atm/cpsar_cpaal5.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpsar_cpaal5.h 2005-08-23 04:46:50.087845216 +0200
-@@ -0,0 +1,103 @@
-+/*******************************************************************************
-+ * TNETDxxxx Software Support
-+ * Copyright (c) 2002 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * FILE: cpsar.h
-+ *
-+ * DESCRIPTION:
-+ * This file contains data structure definitions for the CPSAR HAL.
-+ *
-+ * HISTORY:
-+ * 6Sep02 Greg 1.00 Original Version created.
-+ *
-+ *****************************************************************************/
-+#ifndef _INC_CPSAR
-+#define _INC_CPSAR
-+
-+#define NUM_RX_STATE_WORDS 7
-+#define NUM_TX_STATE_WORDS 9
-+#define MAX_CHAN 19
-+
-+
-+#ifndef _CPHAL_CPSAR
-+typedef void CPSAR_DEVICE;
-+#endif
-+
-+/*
-+ * HAL Default Parameter Values
-+ */
-+#define CFG_UNI_NNI 0
-+
-+/**
-+ * @ingroup shared_data
-+ *
-+ * List of defined keys for use with Control().
-+ */
-+typedef enum
-+ {
-+ /* SAR */
-+ enGET_FIRMWARE, /**< Used by the SAR to request a pointer to firmware */
-+ enGET_FIRMWARE_SIZE, /**< Used by the SAR to request the size of the firmware */
-+ enEND=9999 /* Last entry */
-+ }INFO_KEY;
-+
-+/*
-+ * The CPHAL_FUNCTIONS struct defines the CPHAL function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to cphalInitModule().
-+ */
-+typedef struct
-+ {
-+ int (*ChannelSetup)(CPSAR_DEVICE *HalDev, CHANNEL_INFO *HalCh);
-+ int (*ChannelTeardown)(CPSAR_DEVICE *HalDev, int Ch, int Mode);
-+ int (*Close)(CPSAR_DEVICE *HalDev, int Mode);
-+ int (*Control)(CPSAR_DEVICE *HalDev, const char *Key, const char *Action, void *Value);
-+ int (*Init)(CPSAR_DEVICE *HalDev);
-+ int (*ModeChange)(CPSAR_DEVICE *HalDev, char *DeviceParms);
-+ int (*Open)(CPSAR_DEVICE *HalDev);
-+ int (*Probe)(CPSAR_DEVICE *HalDev);
-+ int (*Shutdown)(CPSAR_DEVICE *HalDev);
-+ int (*Tick)(CPSAR_DEVICE *HalDev);
-+ } CPSAR_FUNCTIONS;
-+
-+/*
-+ * This is the data structure for a generic HAL device. It contains all device
-+ * specific data for a single instance of that device. This includes Rx/Tx
-+ * buffer queues, device base address, reset bit, and other information.
-+ */
-+typedef struct cpsar_device
-+ {
-+ bit32 dev_base;
-+ bit32 offset;
-+ bit32 TxTeardownPending[MAX_CHAN];
-+ bit32 RxTeardownPending[MAX_CHAN];
-+ bit32 ChIsOpen[MAX_CHAN];
-+ bit32 ResetBit;
-+ bit32 debug;
-+ OS_DEVICE *OsDev;
-+ OS_FUNCTIONS *OsFunc;
-+ /*void *OsOpen;*/
-+ bit32 UniNni;
-+ bit32 Inst;
-+ bit32u DeviceCPID[4];
-+ bit32u LBSourceLLID[4];
-+ bit32u OamRate[11];
-+ CHANNEL_INFO ChData[MAX_CHAN];
-+ int InitCount;
-+ int OpenCount;
-+ char *DeviceInfo;
-+ bit32u ResetBase;
-+ DEVICE_STATE State;
-+ CPSAR_FUNCTIONS *HalFuncPtr;
-+ int OamMode; /* +GSG 030407 */
-+ }CPSARDEVICE;
-+
-+extern int cpsarInitModule(CPSAR_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ CPSAR_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+
-+#endif
-diff -urN linux.old/drivers/atm/sangam_atm/cpsar.h linux.dev/drivers/atm/sangam_atm/cpsar.h
---- linux.old/drivers/atm/sangam_atm/cpsar.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpsar.h 2005-08-23 04:46:50.087845216 +0200
-@@ -0,0 +1,103 @@
-+/*******************************************************************************
-+ * TNETDxxxx Software Support
-+ * Copyright (c) 2002 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * FILE: cpsar.h
-+ *
-+ * DESCRIPTION:
-+ * This file contains data structure definitions for the CPSAR HAL.
-+ *
-+ * HISTORY:
-+ * 6Sep02 Greg 1.00 Original Version created.
-+ *
-+ *****************************************************************************/
-+#ifndef _INC_CPSAR
-+#define _INC_CPSAR
-+
-+#define NUM_RX_STATE_WORDS 7
-+#define NUM_TX_STATE_WORDS 9
-+#define MAX_CHAN 19
-+
-+
-+#ifndef _CPHAL_CPSAR
-+typedef void CPSAR_DEVICE;
-+#endif
-+
-+/*
-+ * HAL Default Parameter Values
-+ */
-+#define CFG_UNI_NNI 0
-+
-+/**
-+ * @ingroup shared_data
-+ *
-+ * List of defined keys for use with Control().
-+ */
-+typedef enum
-+ {
-+ /* SAR */
-+ enGET_FIRMWARE, /**< Used by the SAR to request a pointer to firmware */
-+ enGET_FIRMWARE_SIZE, /**< Used by the SAR to request the size of the firmware */
-+ enEND=9999 /* Last entry */
-+ }INFO_KEY;
-+
-+/*
-+ * The CPHAL_FUNCTIONS struct defines the CPHAL function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to cphalInitModule().
-+ */
-+typedef struct
-+ {
-+ int (*ChannelSetup)(CPSAR_DEVICE *HalDev, CHANNEL_INFO *HalCh);
-+ int (*ChannelTeardown)(CPSAR_DEVICE *HalDev, int Ch, int Mode);
-+ int (*Close)(CPSAR_DEVICE *HalDev, int Mode);
-+ int (*Control)(CPSAR_DEVICE *HalDev, const char *Key, const char *Action, void *Value);
-+ int (*Init)(CPSAR_DEVICE *HalDev);
-+ int (*ModeChange)(CPSAR_DEVICE *HalDev, char *DeviceParms);
-+ int (*Open)(CPSAR_DEVICE *HalDev);
-+ int (*Probe)(CPSAR_DEVICE *HalDev);
-+ int (*Shutdown)(CPSAR_DEVICE *HalDev);
-+ int (*Tick)(CPSAR_DEVICE *HalDev);
-+ } CPSAR_FUNCTIONS;
-+
-+/*
-+ * This is the data structure for a generic HAL device. It contains all device
-+ * specific data for a single instance of that device. This includes Rx/Tx
-+ * buffer queues, device base address, reset bit, and other information.
-+ */
-+typedef struct cpsar_device
-+ {
-+ bit32 dev_base;
-+ bit32 offset;
-+ bit32 TxTeardownPending[MAX_CHAN];
-+ bit32 RxTeardownPending[MAX_CHAN];
-+ bit32 ChIsOpen[MAX_CHAN];
-+ bit32 ResetBit;
-+ bit32 debug;
-+ OS_DEVICE *OsDev;
-+ OS_FUNCTIONS *OsFunc;
-+ /*void *OsOpen;*/
-+ bit32 UniNni;
-+ bit32 Inst;
-+ bit32u DeviceCPID[4];
-+ bit32u LBSourceLLID[4];
-+ bit32u OamRate[11];
-+ CHANNEL_INFO ChData[MAX_CHAN];
-+ int InitCount;
-+ int OpenCount;
-+ char *DeviceInfo;
-+ bit32u ResetBase;
-+ DEVICE_STATE State;
-+ CPSAR_FUNCTIONS *HalFuncPtr;
-+ int OamMode; /* +GSG 030407 */
-+ }CPSARDEVICE;
-+
-+extern int cpsarInitModule(CPSAR_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ CPSAR_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+
-+#endif
-diff -urN linux.old/drivers/atm/sangam_atm/cp_sar_reg.h linux.dev/drivers/atm/sangam_atm/cp_sar_reg.h
---- linux.old/drivers/atm/sangam_atm/cp_sar_reg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cp_sar_reg.h 2005-08-23 04:46:50.087845216 +0200
-@@ -0,0 +1,217 @@
-+/***************************************************************************
-+ TNETD73xx Software Support
-+ Copyright(c) 2000, Texas Instruments Incorporated. All Rights Reserved.
-+
-+ FILE: cp_sar_reg.h Register definitions for the SAR module
-+
-+ DESCRIPTION:
-+ This include file contains register definitions for the
-+ SAR module.
-+
-+ HISTORY:
-+ 15 Jan 02 G. Guyotte Original version written
-+ 03 Oct 02 G. Guyotte C++ style comments removed
-+****************************************************************************/
-+#ifndef _INC_SAR_REG
-+#define _INC_SAR_REG
-+
-+/* Global Registers */
-+#define pSAR_ID_REG(base) ((volatile bit32u *)(base+0x0000))
-+#define SAR_ID_REG(base) (*pSAR_ID_REG(base))
-+#define pSAR_STATUS_SET_REG(base) ((volatile bit32u *)(base+0x0008))
-+#define SAR_STATUS_SET_REG(base) (*pSAR_STATUS_SET_REG(base))
-+#define pSAR_STATUS_CLR_REG(base) ((volatile bit32u *)(base+0x000C))
-+#define SAR_STATUS_CLR_REG(base) (*pSAR_STATUS_CLR_REG(base))
-+#define pSAR_HOST_INT_EN_SET_REG(base) ((volatile bit32u *)(base+0x0010))
-+#define SAR_HOST_INT_EN_SET_REG(base) (*pSAR_HOST_INT_EN_SET_REG(base))
-+#define pSAR_HOST_INT_EN_CLR_REG(base) ((volatile bit32u *)(base+0x0014))
-+#define SAR_HOST_INT_EN_CLR_REG(base) (*pSAR_HOST_INT_EN_CLR_REG(base))
-+#define pSAR_PDSP_INT_EN_SET_REG(base) ((volatile bit32u *)(base+0x0018))
-+#define SAR_PDSP_INT_EN_SET_REG(base) (*pSAR_PDSP_INT_EN_SET_REG(base))
-+#define pSAR_PDSP_INT_EN_CLR_REG(base) ((volatile bit32u *)(base+0x001C))
-+#define SAR_PDSP_INT_EN_CLR_REG(base) (*pSAR_PDSP_INT_EN_CLR_REG(base))
-+
-+/* PDSP OAM General Purpose Registers */
-+#define pSAR_PDSP_HOST_OAM_CONFIG_REG(base) ((volatile bit32u *)(base+0x0020))
-+#define SAR_PDSP_HOST_OAM_CONFIG_REG(base) (*pSAR_PDSP_HOST_OAM_CONFIG_REG(base))
-+#define pSAR_PDSP_OAM_CORR_REG(base) ((volatile bit32u *)(base+0x0024))
-+#define SAR_PDSP_OAM_CORR_REG(base) (*pSAR_PDSP_OAM_CORR_REG(base))
-+#define pSAR_PDSP_OAM_LB_RESULT_REG(base) ((volatile bit32u *)(base+0x0028))
-+#define SAR_PDSP_OAM_LB_RESULT_REG(base) (*pSAR_PDSP_OAM_LB_RESULT_REG(base))
-+#define pSAR_PDSP_OAM_F5_LB_COUNT_REG(base) ((volatile bit32u *)(base+0x002c)) /* +GSG 030416 */
-+#define SAR_PDSP_OAM_F5_LB_COUNT_REG(base) (*pSAR_PDSP_OAM_F5_LB_COUNT_REG(base)) /* +GSG 030416 */
-+#define pSAR_PDSP_OAM_F4_LB_COUNT_REG(base) ((volatile bit32u *)(base+0x0030)) /* +GSG 030416 */
-+#define SAR_PDSP_OAM_F4_LB_COUNT_REG(base) (*pSAR_PDSP_OAM_F4_LB_COUNT_REG(base)) /* +GSG 030416 */
-+#define pSAR_PDSP_FWD_UNK_VC_REG(base) ((volatile bit32u *)(base+0x0034)) /* +GSG 030701 */
-+#define SAR_PDSP_FWD_UNK_VC_REG(base) (*pSAR_PDSP_FWD_UNK_VC_REG(base)) /* +GSG 030701 */
-+
-+
-+/* Rx Lookup Table Registers */
-+#define pRX_LUT_GLOBAL_CFG_REG(base) ((volatile bit32u *)(base+0x0080))
-+#define RX_LUT_GLOBAL_CFG_REG(base) (*pRX_LUT_GLOBAL_CFG_REG(base))
-+#define pRX_LUT_CH_SETUP_REQ_REG(base) ((volatile bit32u *)(base+0x0090))
-+#define RX_LUT_CH_SETUP_REQ_REG(base) (*pRX_LUT_CH_SETUP_REQ_REG(base))
-+#define pRX_LUT_CH_SETUP_REQ_VC_REG(base) ((volatile bit32u *)(base+0x0094))
-+#define RX_LUT_CH_SETUP_REQ_VC_REG(base) (*pRX_LUT_CH_SETUP_REQ_VC_REG(base))
-+#define pRX_LUT_CH_TEARDOWN_REQ_REG(base) ((volatile bit32u *)(base+0x009C))
-+#define RX_LUT_CH_TEARDOWN_REQ_REG(base) (*pRX_LUT_CH_TEARDOWN_REQ_REG(base))
-+
-+/* Tx Scheduler Registers */
-+#define pTX_CH_MAPPING_REG(base) ((volatile bit32u *)(base+0x0170))
-+#define TX_CH_MAPPING_REG(base) (*pTX_CH_MAPPING_REG(base))
-+
-+/* Tx CPPI DMA Controller Registers */
-+#define pTX_CPPI_CTL_REG(base) ((volatile bit32u *)(base+0x0700))
-+#define TX_CPPI_CTL_REG(base) (*pTX_CPPI_CTL_REG(base))
-+#define pTX_CPPI_TEARDOWN_REG(base) ((volatile bit32u *)(base+0x0704))
-+#define TX_CPPI_TEARDOWN_REG(base) (*pTX_CPPI_TEARDOWN_REG(base))
-+
-+/* EOI Interrupt Additions */
-+#define pSAR_EOI(base) ((volatile bit32u *)(base+0x0708))
-+#define SAR_EOI(base) (*pSAR_EOI(base))
-+#define pSAR_INTR_VECTOR(base) ((volatile bit32u *)(base+0x070c))
-+#define SAR_INTR_VECTOR(base) (*pSAR_INTR_VECTOR(base))
-+#define pSAR_TX_MASKED_STATUS(base) ((volatile bit32u *)(base+0x0710))
-+#define SAR_TX_MASKED_STATUS(base) (*pSAR_TX_MASKED_STATUS(base))
-+#define pSAR_TX_RAW_STATUS(base) ((volatile bit32u *)(base+0x0714))
-+#define SAR_TX_RAW_STATUS(base) (*pSAR_TX_RAW_STATUS(base))
-+#define pSAR_TX_MASK_SET(base) ((volatile bit32u *)(base+0x0718))
-+#define SAR_TX_MASK_SET(base) (*pSAR_TX_MASK_SET(base))
-+#define pSAR_TX_MASK_CLR(base) ((volatile bit32u *)(base+0x071c))
-+#define SAR_TX_MASK_CLR(base) (*pSAR_TX_MASK_CLR(base))
-+
-+/* Rx CPPI DMA Controller Registers */
-+#define pRX_CPPI_CTL_REG(base) ((volatile bit32u *)(base+0x0780))
-+#define RX_CPPI_CTL_REG(base) (*pRX_CPPI_CTL_REG(base))
-+#define pSAR_RX_MASKED_STATUS(base) ((volatile bit32u *)(base+0x0790))
-+#define SAR_RX_MASKED_STATUS(base) (*pSAR_RX_MASKED_STATUS(base))
-+#define pSAR_RX_RAW_STATUS(base) ((volatile bit32u *)(base+0x0794))
-+#define SAR_RX_RAW_STATUS(base) (*pSAR_RX_RAW_STATUS(base))
-+#define pSAR_RX_MASK_SET(base) ((volatile bit32u *)(base+0x0798))
-+#define SAR_RX_MASK_SET(base) (*pSAR_RX_MASK_SET(base))
-+#define pSAR_RX_MASK_CLR(base) ((volatile bit32u *)(base+0x079c))
-+#define SAR_RX_MASK_CLR(base) (*pSAR_RX_MASK_CLR(base))
-+
-+/* PDSP Control/Status Registers */
-+#define pPDSP_CTRL_REG(base) ((volatile bit32u *)(base+0x4000))
-+#define PDSP_CTRL_REG(base) (*pPDSP_CTRL_REG(base))
-+
-+/* PDSP Instruction RAM */
-+#define pPDSP_IRAM(base) ((volatile bit32u *)(base+0x4020))
-+#define PDSP_IRAM(base) (*pPDSP_IRAM(base))
-+
-+/*
-+ * Channel 0 State/Scratchpad RAM Block
-+ *
-+ * The following registers (Tx DMA State, Rx DMA State, CPPI Completion PTR,
-+ * and PDSP Data) have been given the correct address for channel 0. To
-+ * reach the registers for channel X, add (X * 0x100) to the pointer address.
-+ *
-+ */
-+
-+#define PDSP_STATE_RAM_SIZE 1024
-+
-+/* Tx DMA State RAM */
-+#define pTX_DMA_STATE_WORD_0(base) ((volatile bit32u *)(base+0x8000))
-+#define TX_DMA_STATE_WORD_0(base) (*pTX_DMA_STATE_WORD_0(base))
-+#define pTX_DMA_STATE_WORD_1(base) ((volatile bit32u *)(base+0x8004))
-+#define TX_DMA_STATE_WORD_1(base) (*pTX_DMA_STATE_WORD_1(base))
-+#define pTX_DMA_STATE_WORD_2(base) ((volatile bit32u *)(base+0x8008))
-+#define TX_DMA_STATE_WORD_2(base) (*pTX_DMA_STATE_WORD_2(base))
-+#define pTX_DMA_STATE_WORD_3(base) ((volatile bit32u *)(base+0x800C))
-+#define TX_DMA_STATE_WORD_3(base) (*pTX_DMA_STATE_WORD_3(base))
-+#define pTX_DMA_STATE_WORD_4(base) ((volatile bit32u *)(base+0x8010))
-+#define TX_DMA_STATE_WORD_4(base) (*pTX_DMA_STATE_WORD_4(base))
-+#define pTX_DMA_STATE_WORD_5(base) ((volatile bit32u *)(base+0x8014))
-+#define TX_DMA_STATE_WORD_5(base) (*pTX_DMA_STATE_WORD_5(base))
-+#define pTX_DMA_STATE_WORD_6(base) ((volatile bit32u *)(base+0x8018))
-+#define TX_DMA_STATE_WORD_6(base) (*pTX_DMA_STATE_WORD_6(base))
-+#define pTX_DMA_STATE_WORD_7(base) ((volatile bit32u *)(base+0x801C))
-+#define TX_DMA_STATE_WORD_7(base) (*pTX_DMA_STATE_WORD_7(base))
-+#define pTX_DMA_STATE_WORD_8(base) ((volatile bit32u *)(base+0x8020))
-+#define TX_DMA_STATE_WORD_8(base) (*pTX_DMA_STATE_WORD_8(base))
-+
-+/* Rx DMA State RAM */
-+#define pRX_DMA_STATE_WORD_0(base) ((volatile bit32u *)(base+0x8024))
-+#define RX_DMA_STATE_WORD_0(base) (*pRX_DMA_STATE_WORD_0(base))
-+#define pRX_DMA_STATE_WORD_1(base) ((volatile bit32u *)(base+0x8028))
-+#define RX_DMA_STATE_WORD_1(base) (*pRX_DMA_STATE_WORD_1(base))
-+#define pRX_DMA_STATE_WORD_2(base) ((volatile bit32u *)(base+0x802C))
-+#define RX_DMA_STATE_WORD_2(base) (*pRX_DMA_STATE_WORD_2(base))
-+#define pRX_DMA_STATE_WORD_3(base) ((volatile bit32u *)(base+0x8030))
-+#define RX_DMA_STATE_WORD_3(base) (*pRX_DMA_STATE_WORD_3(base))
-+#define pRX_DMA_STATE_WORD_4(base) ((volatile bit32u *)(base+0x8034))
-+#define RX_DMA_STATE_WORD_4(base) (*pRX_DMA_STATE_WORD_4(base))
-+#define pRX_DMA_STATE_WORD_5(base) ((volatile bit32u *)(base+0x8038))
-+#define RX_DMA_STATE_WORD_5(base) (*pRX_DMA_STATE_WORD_5(base))
-+#define pRX_DMA_STATE_WORD_6(base) ((volatile bit32u *)(base+0x803C))
-+#define RX_DMA_STATE_WORD_6(base) (*pRX_DMA_STATE_WORD_6(base))
-+
-+/* Tx CPPI Completion Pointers */
-+#define pTXH_CPPI_COMP_PTR(base) ((volatile bit32u *)(base+0x8040))
-+#define TXH_CPPI_COMP_PTR(base) (*pTXH_CPPI_COMP_PTR(base))
-+#define pTXL_CPPI_COMP_PTR(base) ((volatile bit32u *)(base+0x8044))
-+#define TXL_CPPI_COMP_PTR(base) (*pTXL_CPPI_COMP_PTR(base))
-+
-+/* Rx CPPI Completion Pointer */
-+#define pRX_CPPI_COMP_PTR(base) ((volatile bit32u *)(base+0x8048))
-+#define RX_CPPI_COMP_PTR(base) (*pRX_CPPI_COMP_PTR(base))
-+
-+/* Tx PDSP Defines */
-+#define NUM_PDSP_AAL5_STATE_WORDS 24
-+#define NUM_PDSP_AAL2_STATE_WORDS 20
-+
-+/* PDSP State RAM Block 0 */
-+#define pPDSP_BLOCK_0(base) ((volatile bit32u *)(base+0x8050))
-+#define PDSP_BLOCK_0(base) (*pPDSP_BLOCK_0(base))
-+
-+/* AAL5 Tx PDSP State RAM */
-+#define pPDSP_AAL5_TX_STATE_WORD_0(base) ((volatile bit32u *)(base+0x8050))
-+#define PDSP_AAL5_TX_STATE_WORD_0(base) (*pPDSP_AAL5_TX_STATE_WORD_0(base))
-+
-+/* AAL5 Rx PDSP State RAM */
-+#define pPDSP_AAL5_RX_STATE_WORD_0(base) ((volatile bit32u *)(base+0x8070))
-+#define PDSP_AAL5_RX_STATE_WORD_0(base) (*pPDSP_AAL5_RX_STATE_WORD_0(base))
-+
-+/* AAL5 Tx VP PDSP State RAM */
-+#define pPDSP_AAL5_TX_VP_STATE_WORD_0(base) ((volatile bit32u *)(base+0x8090))
-+#define PDSP_AAL5_TX_VP_STATE_WORD_0(base) (*pPDSP_AAL5_TX_VP_STATE_WORD_0(base))
-+
-+/* AAL5 Rx VP PDSP State RAM */
-+#define pPDSP_AAL5_RX_VP_STATE_WORD_0(base) ((volatile bit32u *)(base+0x80A0))
-+#define PDSP_AAL5_RX_VP_STATE_WORD_0(base) (*pPDSP_AAL5_RX_VP_STATE_WORD_0(base))
-+
-+/* AAL2 Tx PDSP State RAM */
-+#define pPDSP_AAL2_TX_STATE_WORD_0(base) ((volatile bit32u *)(base+0x80B0))
-+#define PDSP_AAL2_TX_STATE_WORD_0(base) (*pPDSP_AAL2_TX_STATE_WORD_0(base))
-+
-+/* AAL2 Rx PDSP State RAM */
-+#define pPDSP_AAL2_RX_STATE_WORD_0(base) ((volatile bit32u *)(base+0x80D0))
-+#define PDSP_AAL2_RX_STATE_WORD_0(base) (*pPDSP_AAL2_RX_STATE_WORD_0(base))
-+
-+/* AAL2 Tx VP PDSP State RAM */
-+#define pPDSP_AAL2_TX_VP_STATE_WORD_0(base) ((volatile bit32u *)(base+0x80E0))
-+#define PDSP_AAL2_TX_VP_STATE_WORD_0(base) (*pPDSP_AAL2_TX_VP_STATE_WORD_0(base))
-+
-+/* AAL2 Rx VP PDSP State RAM */
-+#define pPDSP_AAL2_RX_VP_STATE_WORD_0(base) ((volatile bit32u *)(base+0x80F0))
-+#define PDSP_AAL2_RX_VP_STATE_WORD_0(base) (*pPDSP_AAL2_RX_VP_STATE_WORD_0(base))
-+
-+/* PDSP OAM Configuration Block */
-+#define pOAM_CONFIG_BLOCK_WORD_0(base) ((volatile bit32u *)(base+0x83C0))
-+#define OAM_CONFIG_BLOCK_WORD_0(base) (*pOAM_CONFIG_BLOCK_WORD_0(base))
-+
-+/* PDSP OAM Padding Block */
-+#define pOAM_PADDING_BLOCK_WORD_0(base) ((volatile bit32u *)(base+0x84C0))
-+#define OAM_PADDING_BLOCK_WORD_0(base) (*pOAM_PADDING_BLOCK_WORD_0(base))
-+
-+#define NUM_OAM_RATES 11
-+
-+/* PDSP OAM Timer State RAM */
-+#define pOAM_TIMER_STATE_WORD_0(base) ((volatile bit32u *)(base+0x85B0))
-+#define OAM_TIMER_STATE_WORD_0(base) (*pOAM_TIMER_STATE_WORD_0(base))
-+
-+
-+/* END OF FILE */
-+
-+#endif _INC_SAR_REG
-diff -urN linux.old/drivers/atm/sangam_atm/cpswhal_cpaal5.h linux.dev/drivers/atm/sangam_atm/cpswhal_cpaal5.h
---- linux.old/drivers/atm/sangam_atm/cpswhal_cpaal5.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpswhal_cpaal5.h 2005-08-23 04:46:50.088845064 +0200
-@@ -0,0 +1,629 @@
-+/************************************************************************
-+ * TNETDxxxx Software Support
-+ * Copyright (c) 2002 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * FILE: cphal.h
-+ *
-+ * DESCRIPTION:
-+ * User include file, contains data definitions shared between the CPHAL
-+ * and the upper-layer software.
-+ *
-+ * HISTORY:
-+ * Date Modifier Ver Notes
-+ * 28Feb02 Greg 1.00 Original
-+ * 06Mar02 Greg 1.01 Documentation enhanced
-+ * 18Jul02 Greg 1.02 Many updates (OAM additions, general reorg)
-+ * 22Nov02 Mick RC2 Additions from Denis' input on Control
-+ *
-+ * author Greg Guyotte
-+ * version 1.02
-+ * date 18-Jul-2002
-+ *****************************************************************************/
-+#ifndef _INC_CPHAL_H
-+#define _INC_CPHAL_H
-+
-+#ifdef _CPHAL_CPMAC
-+#include "ec_errors_cpmac.h"
-+#endif
-+
-+#ifdef _CPHAL_AAL5
-+#include "ec_errors_cpaal5.h"
-+#endif
-+
-+#ifdef _CPHAL_CPSAR
-+#include "ec_errors_cpsar.h"
-+#endif
-+
-+#ifdef _CPHAL_AAL2
-+#include "ec_errors_cpaal2.h"
-+#endif
-+
-+#ifndef __ADAM2
-+typedef char bit8;
-+typedef short bit16;
-+typedef int bit32;
-+
-+typedef unsigned char bit8u;
-+typedef unsigned short bit16u;
-+typedef unsigned int bit32u;
-+
-+/*
-+typedef char INT8;
-+typedef short INT16;
-+typedef int INT32;
-+typedef unsigned char UINT8;
-+typedef unsigned short UINT16;
-+typedef unsigned int UINT32;
-+*/
-+/*typedef unsigned int size_t;*/
-+#endif
-+
-+#ifdef _CPHAL
-+
-+#ifndef TRUE
-+#define TRUE (1==1)
-+#endif
-+
-+#ifndef FALSE
-+#define FALSE (1==2)
-+#endif
-+
-+#ifndef NULL
-+#define NULL 0
-+#endif
-+
-+#endif
-+
-+#define VirtToPhys(a) (((int)a)&~0xe0000000)
-+#define VirtToVirtNoCache(a) ((void*)((VirtToPhys(a))|0xa0000000))
-+#define VirtToVirtCache(a) ((void*)((VirtToPhys(a))|0x80000000))
-+#define PhysToVirtNoCache(a) ((void*)(((int)a)|0xa0000000))
-+#define PhysToVirtCache(a) ((void*)(((int)a)|0x80000000))
-+/*
-+#define DataCacheHitInvalidate(a) {__asm__(" cache 17, (%0)" : : "r" (a));}
-+#define DataCacheHitWriteback(a) {__asm__(" cache 25, (%0)" : : "r" (a));}
-+*/
-+
-+#define PARTIAL 1 /**< Used in @c Close() and @c ChannelTeardown() */
-+#define FULL 2 /**< Used in @c Close() and @c ChannelTeardown() */
-+
-+/* Channel Teardown Defines */
-+#define RX_TEARDOWN 2
-+#define TX_TEARDOWN 1
-+#define BLOCKING_TEARDOWN 8
-+#define FULL_TEARDOWN 4
-+#define PARTIAL_TEARDOWN 0
-+
-+#define MAX_DIR 2
-+#define DIRECTION_TX 0
-+#define DIRECTION_RX 1
-+#define TX_CH 0
-+#define RX_CH 1
-+#define HAL_ERROR_DEVICE_NOT_FOUND 1
-+#define HAL_ERROR_FAILED_MALLOC 2
-+#define HAL_ERROR_OSFUNC_SIZE 3
-+#define HAL_DEFAULT 0xFFFFFFFF
-+#define VALID(val) (val!=HAL_DEFAULT)
-+
-+/*
-+ERROR REPORTING
-+
-+HAL Module Codes. Each HAL module reporting an error code
-+should OR the error code with the respective Module error code
-+from the list below.
-+*/
-+#define EC_AAL5 EC_HAL|EC_DEV_AAL5
-+#define EC_AAL2 EC_HAL|EC_DEV_AAL2
-+#define EC_CPSAR EC_HAL|EC_DEV_CPSAR
-+#define EC_CPMAC EC_HAL|EC_DEV_CPMAC
-+#define EC_VDMA EC_HAL|EC_DEV_VDMA
-+#define EC_VLYNQ EC_HAL|EC_DEV_VLYNQ
-+#define EC_CPPI EC_HAL|EC_DEV_CPPI
-+
-+/*
-+HAL Function Codes. Each HAL module reporting an error code
-+should OR the error code with one of the function codes from
-+the list below.
-+*/
-+#define EC_FUNC_HAL_INIT EC_FUNC(1)
-+#define EC_FUNC_CHSETUP EC_FUNC(2)
-+#define EC_FUNC_CHTEARDOWN EC_FUNC(3)
-+#define EC_FUNC_RXRETURN EC_FUNC(4)
-+#define EC_FUNC_SEND EC_FUNC(5)
-+#define EC_FUNC_RXINT EC_FUNC(6)
-+#define EC_FUNC_TXINT EC_FUNC(7)
-+#define EC_FUNC_AAL2_VDMA EC_FUNC(8)
-+#define EC_FUNC_OPTIONS EC_FUNC(9)
-+#define EC_FUNC_PROBE EC_FUNC(10)
-+#define EC_FUNC_OPEN EC_FUNC(11)
-+#define EC_FUNC_CONTROL EC_FUNC(12)
-+#define EC_FUNC_DEVICE_INT EC_FUNC(13)
-+#define EC_FUNC_STATUS EC_FUNC(14)
-+#define EC_FUNC_TICK EC_FUNC(15)
-+#define EC_FUNC_CLOSE EC_FUNC(16)
-+#define EC_FUNC_SHUTDOWN EC_FUNC(17)
-+#define EC_FUNC_DEVICE_INT_ALT EC_FUNC(18) /* +GSG 030306 */
-+
-+/*
-+HAL Error Codes. The list below defines every type of error
-+used in all HAL modules. DO NOT CHANGE THESE VALUES! Add new
-+values in integer order to the bottom of the list.
-+*/
-+#define EC_VAL_PDSP_LOAD_FAIL EC_ERR(0x01)|EC_CRITICAL
-+#define EC_VAL_FIRMWARE_TOO_LARGE EC_ERR(0x02)|EC_CRITICAL
-+#define EC_VAL_DEVICE_NOT_FOUND EC_ERR(0x03)|EC_CRITICAL
-+#define EC_VAL_BASE_ADDR_NOT_FOUND EC_ERR(0x04)|EC_CRITICAL
-+#define EC_VAL_RESET_BIT_NOT_FOUND EC_ERR(0x05)|EC_CRITICAL
-+#define EC_VAL_CH_INFO_NOT_FOUND EC_ERR(0x06)
-+#define EC_VAL_RX_STATE_RAM_NOT_CLEARED EC_ERR(0x07)|EC_CRITICAL
-+#define EC_VAL_TX_STATE_RAM_NOT_CLEARED EC_ERR(0x08)|EC_CRITICAL
-+#define EC_VAL_MALLOC_DEV_FAILED EC_ERR(0x09)
-+#define EC_VAL_OS_VERSION_NOT_SUPPORTED EC_ERR(0x0A)|EC_CRITICAL
-+#define EC_VAL_CPSAR_VERSION_NOT_SUPPORTED EC_ERR(0x0B)|EC_CRITICAL
-+#define EC_VAL_NULL_CPSAR_DEV EC_ERR(0x0C)|EC_CRITICAL
-+
-+#define EC_VAL_LUT_NOT_READY EC_ERR(0x0D)
-+#define EC_VAL_INVALID_CH EC_ERR(0x0E)
-+#define EC_VAL_NULL_CH_STRUCT EC_ERR(0x0F)
-+#define EC_VAL_RX_TEARDOWN_ALREADY_PEND EC_ERR(0x10)
-+#define EC_VAL_TX_TEARDOWN_ALREADY_PEND EC_ERR(0x11)
-+#define EC_VAL_RX_CH_ALREADY_TORNDOWN EC_ERR(0x12)
-+#define EC_VAL_TX_CH_ALREADY_TORNDOWN EC_ERR(0x13)
-+#define EC_VAL_TX_TEARDOWN_TIMEOUT EC_ERR(0x14)
-+#define EC_VAL_RX_TEARDOWN_TIMEOUT EC_ERR(0x15)
-+#define EC_VAL_CH_ALREADY_TORNDOWN EC_ERR(0x16)
-+#define EC_VAL_VC_SETUP_NOT_READY EC_ERR(0x17)
-+#define EC_VAL_VC_TEARDOWN_NOT_READY EC_ERR(0x18)
-+#define EC_VAL_INVALID_VC EC_ERR(0x19)
-+#define EC_VAL_INVALID_LC EC_ERR(0x20)
-+#define EC_VAL_INVALID_VDMA_CH EC_ERR(0x21)
-+#define EC_VAL_INVALID_CID EC_ERR(0x22)
-+#define EC_VAL_INVALID_UUI EC_ERR(0x23)
-+#define EC_VAL_INVALID_UUI_DISCARD EC_ERR(0x24)
-+#define EC_VAL_CH_ALREADY_OPEN EC_ERR(0x25)
-+
-+#define EC_VAL_RCB_MALLOC_FAILED EC_ERR(0x26)
-+#define EC_VAL_RX_BUFFER_MALLOC_FAILED EC_ERR(0x27)
-+#define EC_VAL_OUT_OF_TCBS EC_ERR(0x28)
-+#define EC_VAL_NO_TCBS EC_ERR(0x29)
-+#define EC_VAL_NULL_RCB EC_ERR(0x30)|EC_CRITICAL
-+#define EC_VAL_SOP_ERROR EC_ERR(0x31)|EC_CRITICAL
-+#define EC_VAL_EOP_ERROR EC_ERR(0x32)|EC_CRITICAL
-+#define EC_VAL_NULL_TCB EC_ERR(0x33)|EC_CRITICAL
-+#define EC_VAL_CORRUPT_RCB_CHAIN EC_ERR(0x34)|EC_CRITICAL
-+#define EC_VAL_TCB_MALLOC_FAILED EC_ERR(0x35)
-+
-+#define EC_VAL_DISABLE_POLLING_FAILED EC_ERR(0x36)
-+#define EC_VAL_KEY_NOT_FOUND EC_ERR(0x37)
-+#define EC_VAL_MALLOC_FAILED EC_ERR(0x38)
-+#define EC_VAL_RESET_BASE_NOT_FOUND EC_ERR(0x39)|EC_CRITICAL
-+#define EC_VAL_INVALID_STATE EC_ERR(0x40)
-+#define EC_VAL_NO_TXH_WORK_TO_DO EC_ERR(0x41)
-+#define EC_VAL_NO_TXL_WORK_TO_DO EC_ERR(0x42)
-+#define EC_VAL_NO_RX_WORK_TO_DO EC_ERR(0x43)
-+#define EC_VAL_NOT_LINKED EC_ERR(0x44)
-+#define EC_VAL_INTERRUPT_NOT_FOUND EC_ERR(0x45)
-+#define EC_VAL_OFFSET_NOT_FOUND EC_ERR(0x46)
-+#define EC_VAL_MODULE_ALREADY_CLOSED EC_ERR(0x47)
-+#define EC_VAL_MODULE_ALREADY_SHUTDOWN EC_ERR(0x48)
-+#define EC_VAL_ACTION_NOT_FOUND EC_ERR(0x49)
-+#define EC_VAL_RX_CH_ALREADY_SETUP EC_ERR(0x50)
-+#define EC_VAL_TX_CH_ALREADY_SETUP EC_ERR(0x51)
-+#define EC_VAL_RX_CH_ALREADY_OPEN EC_ERR(0x52)
-+#define EC_VAL_TX_CH_ALREADY_OPEN EC_ERR(0x53)
-+#define EC_VAL_CH_ALREADY_SETUP EC_ERR(0x54)
-+#define EC_VAL_RCB_NEEDS_BUFFER EC_ERR(0x55) /* +GSG 030410 */
-+#define EC_VAL_RCB_DROPPED EC_ERR(0x56) /* +GSG 030410 */
-+#define EC_VAL_INVALID_VALUE EC_ERR(0x57)
-+
-+/**
-+@defgroup shared_data Shared Data Structures
-+
-+The data structures documented here are shared by all modules.
-+*/
-+
-+/**
-+ * @ingroup shared_data
-+ * This is the fragment list structure. Each fragment list entry contains a
-+ * length and a data buffer.
-+ */
-+typedef struct
-+ {
-+ bit32u len; /**< Length of the fragment in bytes (lower 16 bits are valid). For SOP, upper 16 bits is the buffer offset. */
-+ void *data; /**< Pointer to fragment data. */
-+ void *OsInfo; /**< Pointer to OS defined data. */
-+ }FRAGLIST;
-+
-+#if defined (_CPHAL_CPMAC)
-+#define CB_PASSCRC_BIT (1<<26)
-+
-+/* CPMAC CPHAL STATUS */
-+#define CPMAC_STATUS_LINK (1 << 0)
-+#define CPMAC_STATUS_LINK_DUPLEX (1 << 1) /* 0 - HD, 1 - FD */
-+#define CPMAC_STATUS_LINK_SPEED (1 << 2) /* 0 - 10, 1 - 100 */
-+
-+/* ADAPTER CHECK Codes */
-+
-+#define CPMAC_STATUS_ADAPTER_CHECK (1 << 7)
-+#define CPMAC_STATUS_HOST_ERR_DIRECTION (1 << 8)
-+#define CPMAC_STATUS_HOST_ERR_CODE (0xF << 9)
-+#define CPMAC_STATUS_HOST_ERR_CH (0x7 << 13)
-+
-+#define _CPMDIO_DISABLE (1 << 0)
-+#define _CPMDIO_HD (1 << 1)
-+#define _CPMDIO_FD (1 << 2)
-+#define _CPMDIO_10 (1 << 3)
-+#define _CPMDIO_100 (1 << 4)
-+#define _CPMDIO_NEG_OFF (1 << 5)
-+#define _CPMDIO_LOOPBK (1 << 16)
-+#define _CPMDIO_NOPHY (1 << 20)
-+#endif
-+
-+/**
-+ * @ingroup shared_data
-+ * Channel specific configuration information. This structure should be
-+ * populated by upper-layer software prior to calling @c ChannelSetup(). Any
-+ * configuration item that can be changed on a per channel basis should
-+ * be represented here. Each module may define this structure with additional
-+ * module-specific members.
-+ */
-+typedef struct
-+ {
-+ int Channel; /**< Channel number. */
-+ int Direction; /**< DIRECTION_RX(1) or DIRECTION_TX(0). */
-+ OS_SETUP *OsSetup; /**< OS defined information associated with this channel. */
-+
-+#if defined(_CPHAL_AAL5) || defined (_CPHAL_CPSAR) || defined (_CPHAL_CPMAC)
-+ int RxBufSize; /**< Size (in bytes) for each Rx buffer.*/
-+ int RxBufferOffset; /**< Number of bytes to offset rx data from start of buffer (must be less than buffer size). */
-+ int RxNumBuffers; /**< The number of Rx buffer descriptors to allocate for Ch. */
-+ int RxServiceMax; /**< Maximum number of packets to service at one time. */
-+
-+ int TxNumBuffers; /**< The number of Tx buffer descriptors to allocate for Ch. */
-+ int TxNumQueues; /**< Number of Tx queues for this channel (1-2). Choosing 2 enables a low priority SAR queue. */
-+ int TxServiceMax; /**< Maximum number of packets to service at one time. */
-+#endif
-+
-+#if defined(_CPHAL_AAL5) || defined(_CPHAL_CPSAR)
-+ int CpcsUU; /**< The 2-byte CPCS UU and CPI information. */
-+ int Gfc; /**< Generic Flow Control. */
-+ int Clp; /**< Cell Loss Priority. */
-+ int Pti; /**< Payload Type Indication. */
-+#endif
-+
-+#if defined(_CPHAL_AAL2) || defined(_CPHAL_AAL5) || defined(_CPHAL_CPSAR)
-+ int DaMask; /**< Specifies whether credit issuance is paused when Tx data not available. */
-+ int Priority; /**< Priority bin this channel will be scheduled within. */
-+ int PktType; /**< 0=AAL5,1=Null AAL,2=OAM,3=Transparent,4=AAL2. */
-+ int Vci; /**< Virtual Channel Identifier. */
-+ int Vpi; /**< Virtual Path Identifier. */
-+ int FwdUnkVc; /**< Enables forwarding of unknown VCI/VPI cells to host. 1=enable, 0=disable. */
-+
-+ /* Tx VC State */
-+ int TxVc_CellRate; /**< Tx rate, set as clock ticks between transmissions (SCR for VBR, CBR for CBR). */
-+ int TxVc_QosType; /**< 0=CBR,1=VBR,2=UBR,3=UBRmcr. */
-+ int TxVc_Mbs; /**< Min Burst Size in cells.*/
-+ int TxVc_Pcr; /**< Peak Cell Rate for VBR in clock ticks between transmissions. */
-+
-+ bit32 TxVc_AtmHeader; /**< ATM Header placed on firmware gen'd OAM cells for this Tx Ch (must be big endian with 0 PTI). */
-+ int TxVc_OamTc; /**< TC Path to transmit OAM cells for TX connection (0,1). */
-+ int TxVc_VpOffset; /**< Offset to the OAM VP state table. */
-+ /* Rx VC State */
-+ int RxVc_OamCh; /**< Ch to terminate rx'd OAM cells to be forwarded to the host. */
-+ int RxVc_OamToHost; /**< 0=do not pass, 1=pass. */
-+ bit32 RxVc_AtmHeader; /**< ATM Header placed on firmware gen'd OAM cells for this Rx conn (must be big endian with 0 PTI). */
-+ int RxVc_OamTc; /**< TC Path to transmit OAM cells for RX connection (0,1). */
-+ int RxVc_VpOffset; /**< Offset to the OAM VP state table. */
-+ /* Tx VP State */
-+ int TxVp_OamTc; /**< TC Path to transmit OAM cells for TX VP connection (0,1). */
-+ bit32 TxVp_AtmHeader; /**< ATM Header placed on firmware gen'd VP OAM cells for this Tx VP conn (must be big endian with 0 VCI). */
-+ /* Rx VP State */
-+ int RxVp_OamCh; /**< Ch to terminate rx'd OAM cells to be forwarded to the host. */
-+ int RxVp_OamToHost; /**< 0=do not pass, 1=pass. */
-+ bit32 RxVp_AtmHeader; /**< ATM Header placed on firmware gen'd OAM cells for this Rx VP conn (must be big endian with 0 VCI). */
-+ int RxVp_OamTc; /**< TC Path to transmit OAM cells for RX VP connection (0,1). */
-+ int RxVp_OamVcList; /**< Indicates all VC channels associated with this VP channel (one-hot encoded). */
-+#endif
-+
-+
-+#ifdef _CPHAL_VDMAVT
-+ bit32u RemFifoAddr; /* Mirror mode only. */
-+ bit32u FifoAddr;
-+ bit32 PollInt;
-+ bit32 FifoSize;
-+ int Ready;
-+#endif
-+
-+ }CHANNEL_INFO;
-+
-+/*
-+ * This structure contains each statistic value gathered by the CPHAL.
-+ * Applications may access statistics data by using the @c StatsGet() routine.
-+ */
-+/* STATS */
-+#if defined(_CPHAL_AAL2) || defined(_CPHAL_AAL5) || defined(_CPHAL_CPSAR)
-+typedef struct
-+ {
-+ bit32u CrcErrors[16];
-+ bit32u LenErrors[16];
-+ bit32u DmaLenErrors[16];
-+ bit32u AbortErrors[16];
-+ bit32u StarvErrors[16];
-+ bit32u TxMisQCnt[16][2];
-+ bit32u RxMisQCnt[16];
-+ bit32u RxEOQCnt[16];
-+ bit32u TxEOQCnt[16][2];
-+ bit32u RxPacketsServiced[16];
-+ bit32u TxPacketsServiced[16][2];
-+ bit32u RxMaxServiced;
-+ bit32u TxMaxServiced[16][2];
-+ bit32u RxTotal;
-+ bit32u TxTotal;
-+ } STAT_INFO;
-+#endif
-+
-+/*
-+ * VDMA Channel specific configuration information
-+ */
-+#ifdef _CPHAL_AAL2
-+typedef struct
-+ {
-+ int Ch; /**< Channel Number */
-+ int RemoteEndian; /**< Endianness of remote VDMA-VT device */
-+ int CpsSwap; /**< When 0, octet 0 in CPS pkt located in LS byte of 16-bit word sent to rem VDMA device. When 1, in MS byte. */
-+ }VdmaChInfo;
-+#endif
-+
-+#ifndef _CPHAL
-+ typedef void HAL_DEVICE;
-+ typedef void HAL_PRIVATE;
-+ typedef void HAL_RCB;
-+ typedef void HAL_RECEIVEINFO;
-+#endif
-+
-+/**
-+ * @ingroup shared_data
-+ * The HAL_FUNCTIONS struct defines the function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to xxxInitModule().
-+ */
-+typedef struct
-+ {
-+ int (*ChannelSetup) (HAL_DEVICE *HalDev, CHANNEL_INFO *Channel, OS_SETUP *OsSetup);
-+ int (*ChannelTeardown) (HAL_DEVICE *HalDev, int Channel, int Mode);
-+ int (*Close) (HAL_DEVICE *HalDev, int Mode);
-+ int (*Control) (HAL_DEVICE *HalDev, const char *Key, const char *Action, void *Value);
-+ int (*Init) (HAL_DEVICE *HalDev);
-+ int (*Open) (HAL_DEVICE *HalDev);
-+ int (*PacketProcessEnd) (HAL_DEVICE *HalDev);
-+ int (*Probe) (HAL_DEVICE *HalDev);
-+ int (*RxReturn) (HAL_RECEIVEINFO *HalReceiveInfo, int StripFlag);
-+ int (*Send) (HAL_DEVICE *HalDev, FRAGLIST *FragList, int FragCount, int PacketSize, OS_SENDINFO *OsSendInfo, bit32u Mode);
-+ int (*Shutdown) (HAL_DEVICE *HalDev);
-+ int (*Tick) (HAL_DEVICE *HalDev);
-+
-+#ifdef _CPHAL_AAL5
-+ int (*Kick) (HAL_DEVICE *HalDev, int Queue);
-+ void (*OamFuncConfig) (HAL_DEVICE *HalDev, unsigned int OamConfig);
-+ void (*OamLoopbackConfig) (HAL_DEVICE *HalDev, unsigned int OamConfig, unsigned int *LLID, unsigned int CorrelationTag);
-+ volatile bit32u* (*RegAccess)(HAL_DEVICE *HalDev, bit32u RegOffset);
-+ STAT_INFO* (*StatsGetOld)(HAL_DEVICE *HalDev);
-+#endif
-+ } HAL_FUNCTIONS;
-+
-+/**
-+ * @ingroup shared_data
-+ * The OS_FUNCTIONS struct defines the function pointers for all upper layer
-+ * functions accessible to the CPHAL. The upper layer software is responsible
-+ * for providing the correct OS-specific implementations for the following
-+ * functions. It is populated by calling InitModule() (done by the CPHAL in
-+ * xxxInitModule().
-+ */
-+typedef struct
-+ {
-+ int (*Control)(OS_DEVICE *OsDev, const char *Key, const char *Action, void *Value);
-+ void (*CriticalOn)(void);
-+ void (*CriticalOff)(void);
-+ void (*DataCacheHitInvalidate)(void *MemPtr, int Size);
-+ void (*DataCacheHitWriteback)(void *MemPtr, int Size);
-+ int (*DeviceFindInfo)(int Inst, const char *DeviceName, void *DeviceInfo);
-+ int (*DeviceFindParmUint)(void *DeviceInfo, const char *Parm, bit32u *Value);
-+ int (*DeviceFindParmValue)(void *DeviceInfo, const char *Parm, void *Value);
-+ void (*Free)(void *MemPtr);
-+ void (*FreeRxBuffer)(OS_RECEIVEINFO *OsReceiveInfo, void *MemPtr);
-+ void (*FreeDev)(void *MemPtr);
-+ void (*FreeDmaXfer)(void *MemPtr);
-+ void (*IsrRegister)(OS_DEVICE *OsDev, int (*halISR)(HAL_DEVICE*, int*), int InterruptBit);
-+ void (*IsrUnRegister)(OS_DEVICE *OsDev, int InterruptBit);
-+ void* (*Malloc)(bit32u size);
-+ void* (*MallocDev)(bit32u Size);
-+ void* (*MallocDmaXfer)(bit32u size, void *MemBase, bit32u MemRange);
-+ void* (*MallocRxBuffer)(bit32u size, void *MemBase, bit32u MemRange,
-+ OS_SETUP *OsSetup, HAL_RECEIVEINFO *HalReceiveInfo,
-+ OS_RECEIVEINFO **OsReceiveInfo, OS_DEVICE *OsDev);
-+ void* (*Memset)(void *Dest, int C, bit32u N);
-+ int (*Printf)(const char *Format, ...);
-+ int (*Receive)(OS_DEVICE *OsDev,FRAGLIST *FragList,bit32u FragCount,
-+ bit32u PacketSize,HAL_RECEIVEINFO *HalReceiveInfo, bit32u Mode);
-+ int (*SendComplete)(OS_SENDINFO *OsSendInfo);
-+ int (*Sprintf)(char *S, const char *Format, ...);
-+ int (*Strcmpi)(const char *Str1, const char *Str2);
-+ unsigned int (*Strlen)(const char *S);
-+ char* (*Strstr)(const char *S1, const char *S2);
-+ unsigned long (*Strtoul)(const char *Str, char **Endptr, int Base);
-+ void (*TeardownComplete)(OS_DEVICE *OsDev, int Ch, int Direction);
-+ } OS_FUNCTIONS;
-+
-+/************** MODULE SPECIFIC STUFF BELOW **************/
-+
-+#ifdef _CPHAL_CPMAC
-+
-+/*
-+int halCpmacInitModule(HAL_DEVICE **HalDev, OS_DEVICE *OsDev, HAL_FUNCTIONS *HalFunc, int (*osBridgeInitModule)(OS_FUNCTIONS *), void* (*osMallocDev) (bit32u), int *Size, int inst);
-+*/
-+
-+int halCpmacInitModule(HAL_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ HAL_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+#endif
-+
-+#ifdef _CPHAL_AAL5
-+/*
-+ * @ingroup shared_data
-+ * The AAL5_FUNCTIONS struct defines the AAL5 function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to cphalInitModule().
-+ */
-+/*
-+typedef struct
-+ {
-+ int (*ChannelSetup)(HAL_DEVICE *HalDev, CHANNEL_INFO *HalCh, OS_SETUP *OsSetup);
-+ int (*ChannelTeardown)(HAL_DEVICE *HalDev, int Ch, int Mode);
-+ int (*Close)(HAL_DEVICE *HalDev, int Mode);
-+ int (*Init)(HAL_DEVICE *HalDev);
-+ int (*ModeChange)(HAL_DEVICE *HalDev, char *DeviceParms);
-+ int (*Open)(HAL_DEVICE *HalDev);
-+ int (*InfoGet)(HAL_DEVICE *HalDev, int Key, void *Value);
-+ int (*Probe)(HAL_DEVICE *HalDev);
-+ int (*RxReturn)(HAL_RECEIVEINFO *HalReceiveInfo, int StripFlag);
-+ int (*Send)(HAL_DEVICE *HalDev,FRAGLIST *FragList,int FragCount,
-+ int PacketSize,OS_SENDINFO *OsSendInfo,int Ch, int Queue,
-+ bit32u Mode);
-+ int (*StatsClear)(HAL_DEVICE *HalDev);
-+ STAT_INFO* (*StatsGet)(HAL_DEVICE *HalDev);
-+ int (*Status)(HAL_DEVICE *HalDev);
-+ void (*Tick)(HAL_DEVICE *HalDev);
-+ int (*Kick)(HAL_DEVICE *HalDev, int Queue);
-+ volatile bit32u* (*RegAccess)(HAL_DEVICE *HalDev, bit32u RegOffset);
-+ } AAL5_FUNCTIONS;
-+*/
-+
-+int cpaal5InitModule(HAL_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ HAL_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+#endif
-+
-+#ifdef _CPHAL_AAL2
-+/**
-+ * @ingroup shared_data
-+ * The AAL2_FUNCTIONS struct defines the AAL2 function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to cphalInitModule().
-+ */
-+typedef struct
-+ {
-+ int (*ChannelSetup)(HAL_DEVICE *HalDev, CHANNEL_INFO *HalCh, OS_SETUP *OsSetup);
-+ int (*ChannelTeardown)(HAL_DEVICE *HalDev, int Ch, int Mode);
-+ int (*Close)(HAL_DEVICE *HalDev, int Mode);
-+ int (*Init)(HAL_DEVICE *HalDev);
-+ int (*ModeChange)(HAL_DEVICE *HalDev, char *DeviceParms);
-+ int (*Open)(HAL_DEVICE *HalDev);
-+ int (*OptionsGet)(HAL_DEVICE *HalDev, char *Key, bit32u *Value);
-+ int (*Probe)(HAL_DEVICE *HalDev);
-+
-+ int (*StatsClear)(HAL_DEVICE *HalDev);
-+ STAT_INFO* (*StatsGet)(HAL_DEVICE *HalDev);
-+ int (*Status)(HAL_DEVICE *HalDev);
-+ void (*Tick)(HAL_DEVICE *HalDev);
-+ int (*Aal2UuiMappingSetup)(HAL_DEVICE *HalDev, int VC, int UUI,
-+ int VdmaCh, int UUIDiscard);
-+ int (*Aal2RxMappingSetup)(HAL_DEVICE *HalDev, int VC, int CID,
-+ int LC);
-+ int (*Aal2TxMappingSetup)(HAL_DEVICE *HalDev, int VC, int LC, int VdmaCh);
-+ int (*Aal2VdmaChSetup)(HAL_DEVICE *HalDev, bit32u RemVdmaVtAddr,
-+ VdmaChInfo *VdmaCh);
-+ volatile bit32u* (*RegAccess)(HAL_DEVICE *HalDev, bit32u RegOffset);
-+ int (*Aal2ModeChange)(HAL_DEVICE *HalDev, int Vc, int RxCrossMode,
-+ int RxMultiMode, int TxMultiMode, int SchedMode,
-+ int TcCh);
-+ void (*Aal2VdmaEnable)(HAL_DEVICE *HalDev, int Ch);
-+ int (*Aal2VdmaDisable)(HAL_DEVICE *HalDev, int Ch);
-+ } AAL2_FUNCTIONS;
-+
-+int cpaal2InitModule(HAL_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ AAL2_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+#endif
-+
-+#ifdef _CPHAL_VDMAVT
-+/**
-+ * @ingroup shared_data
-+ * The VDMA_FUNCTIONS struct defines the HAL function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to InitModule().
-+ *
-+ * Note that this list is still under definition.
-+ */
-+typedef struct
-+ {
-+ bit32 (*Init)( HAL_DEVICE *VdmaVtDev);
-+ /* bit32 (*SetupTxFifo)(HAL_DEVICE *VdmaVtDev, bit32u LclRem,
-+ bit32u Addr, bit32u Size, bit32u PollInt);
-+ bit32 (*SetupRxFifo)(HAL_DEVICE *VdmaVtDev, bit32u LclRem,
-+ bit32u Addr, bit32u Size, bit32u PollInt); */
-+ bit32 (*Tx)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*Rx)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*SetRemoteChannel)(HAL_DEVICE *VdmaVtDev, bit32u RemAddr,
-+ bit32u RemDevID);
-+ bit32 (*ClearRxInt)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*ClearTxInt)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*Open)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*Close)(HAL_DEVICE *VdmaVtDev);
-+ int (*Control) (HAL_DEVICE *HalDev, const char *Key, const char *Action, void *Value);
-+ int (*ChannelSetup)(HAL_DEVICE *VdmaVtDev, CHANNEL_INFO *HalCh, OS_SETUP *OsSetup);
-+ int (*ChannelTeardown)(HAL_DEVICE *VdmaVtDev, int Ch, int Mode);
-+ int (*Send)(HAL_DEVICE *VdmaVtDev,FRAGLIST *FragList,int FragCount,
-+ int PacketSize,OS_SENDINFO *OsSendInfo,bit32u Mode);
-+ } VDMA_FUNCTIONS;
-+
-+int VdmaInitModule(HAL_DEVICE **VdmaVt,
-+ OS_DEVICE *OsDev,
-+ VDMA_FUNCTIONS **VdmaVtFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+#endif
-+
-+/*
-+extern int cphalInitModule(MODULE_TYPE ModuleType, HAL_DEVICE **HalDev, OS_DEVICE *OsDev, HAL_FUNCTIONS *HalFunc,
-+ int (*osInitModule)(OS_FUNCTIONS *), void* (*osMallocDev)(bit32u),
-+ int *Size, int Inst);
-+*/
-+
-+
-+#ifdef _CPHAL_AAL5
-+extern const char hcSarFrequency[];
-+#endif
-+
-+#ifdef _CPHAL_CPMAC
-+/* following will be common, once 'utl' added */
-+extern const char hcClear[];
-+extern const char hcGet[];
-+extern const char hcSet[];
-+extern const char hcTick[];
-+
-+extern const char hcCpuFrequency[];
-+extern const char hcCpmacFrequency[];
-+extern const char hcMdioBusFrequency[];
-+extern const char hcMdioClockFrequency[];
-+extern const char hcCpmacBase[];
-+extern const char hcPhyNum[];
-+extern const char hcSize[];
-+extern const char hcCpmacSize[];
-+extern const char hcPhyAccess[];
-+#endif
-+
-+#endif /* end of _INC_ */
-diff -urN linux.old/drivers/atm/sangam_atm/cpswhal_cpsar.h linux.dev/drivers/atm/sangam_atm/cpswhal_cpsar.h
---- linux.old/drivers/atm/sangam_atm/cpswhal_cpsar.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/cpswhal_cpsar.h 2005-08-23 04:46:50.089844912 +0200
-@@ -0,0 +1,629 @@
-+/************************************************************************
-+ * TNETDxxxx Software Support
-+ * Copyright (c) 2002 Texas Instruments Incorporated. All Rights Reserved.
-+ *
-+ * FILE: cphal.h
-+ *
-+ * DESCRIPTION:
-+ * User include file, contains data definitions shared between the CPHAL
-+ * and the upper-layer software.
-+ *
-+ * HISTORY:
-+ * Date Modifier Ver Notes
-+ * 28Feb02 Greg 1.00 Original
-+ * 06Mar02 Greg 1.01 Documentation enhanced
-+ * 18Jul02 Greg 1.02 Many updates (OAM additions, general reorg)
-+ * 22Nov02 Mick RC2 Additions from Denis' input on Control
-+ *
-+ * author Greg Guyotte
-+ * version 1.02
-+ * date 18-Jul-2002
-+ *****************************************************************************/
-+#ifndef _INC_CPHAL_H
-+#define _INC_CPHAL_H
-+
-+#ifdef _CPHAL_CPMAC
-+#include "ec_errors_cpmac.h"
-+#endif
-+
-+#ifdef _CPHAL_AAL5
-+#include "ec_errors_cpaal5.h"
-+#endif
-+
-+#ifdef _CPHAL_CPSAR
-+#include "ec_errors_cpsar.h"
-+#endif
-+
-+#ifdef _CPHAL_AAL2
-+#include "ec_errors_cpaal2.h"
-+#endif
-+
-+#ifndef __ADAM2
-+typedef char bit8;
-+typedef short bit16;
-+typedef int bit32;
-+
-+typedef unsigned char bit8u;
-+typedef unsigned short bit16u;
-+typedef unsigned int bit32u;
-+
-+/*
-+typedef char INT8;
-+typedef short INT16;
-+typedef int INT32;
-+typedef unsigned char UINT8;
-+typedef unsigned short UINT16;
-+typedef unsigned int UINT32;
-+*/
-+/*typedef unsigned int size_t;*/
-+#endif
-+
-+#ifdef _CPHAL
-+
-+#ifndef TRUE
-+#define TRUE (1==1)
-+#endif
-+
-+#ifndef FALSE
-+#define FALSE (1==2)
-+#endif
-+
-+#ifndef NULL
-+#define NULL 0
-+#endif
-+
-+#endif
-+
-+#define VirtToPhys(a) (((int)a)&~0xe0000000)
-+#define VirtToVirtNoCache(a) ((void*)((VirtToPhys(a))|0xa0000000))
-+#define VirtToVirtCache(a) ((void*)((VirtToPhys(a))|0x80000000))
-+#define PhysToVirtNoCache(a) ((void*)(((int)a)|0xa0000000))
-+#define PhysToVirtCache(a) ((void*)(((int)a)|0x80000000))
-+/*
-+#define DataCacheHitInvalidate(a) {__asm__(" cache 17, (%0)" : : "r" (a));}
-+#define DataCacheHitWriteback(a) {__asm__(" cache 25, (%0)" : : "r" (a));}
-+*/
-+
-+#define PARTIAL 1 /**< Used in @c Close() and @c ChannelTeardown() */
-+#define FULL 2 /**< Used in @c Close() and @c ChannelTeardown() */
-+
-+/* Channel Teardown Defines */
-+#define RX_TEARDOWN 2
-+#define TX_TEARDOWN 1
-+#define BLOCKING_TEARDOWN 8
-+#define FULL_TEARDOWN 4
-+#define PARTIAL_TEARDOWN 0
-+
-+#define MAX_DIR 2
-+#define DIRECTION_TX 0
-+#define DIRECTION_RX 1
-+#define TX_CH 0
-+#define RX_CH 1
-+#define HAL_ERROR_DEVICE_NOT_FOUND 1
-+#define HAL_ERROR_FAILED_MALLOC 2
-+#define HAL_ERROR_OSFUNC_SIZE 3
-+#define HAL_DEFAULT 0xFFFFFFFF
-+#define VALID(val) (val!=HAL_DEFAULT)
-+
-+/*
-+ERROR REPORTING
-+
-+HAL Module Codes. Each HAL module reporting an error code
-+should OR the error code with the respective Module error code
-+from the list below.
-+*/
-+#define EC_AAL5 EC_HAL|EC_DEV_AAL5
-+#define EC_AAL2 EC_HAL|EC_DEV_AAL2
-+#define EC_CPSAR EC_HAL|EC_DEV_CPSAR
-+#define EC_CPMAC EC_HAL|EC_DEV_CPMAC
-+#define EC_VDMA EC_HAL|EC_DEV_VDMA
-+#define EC_VLYNQ EC_HAL|EC_DEV_VLYNQ
-+#define EC_CPPI EC_HAL|EC_DEV_CPPI
-+
-+/*
-+HAL Function Codes. Each HAL module reporting an error code
-+should OR the error code with one of the function codes from
-+the list below.
-+*/
-+#define EC_FUNC_HAL_INIT EC_FUNC(1)
-+#define EC_FUNC_CHSETUP EC_FUNC(2)
-+#define EC_FUNC_CHTEARDOWN EC_FUNC(3)
-+#define EC_FUNC_RXRETURN EC_FUNC(4)
-+#define EC_FUNC_SEND EC_FUNC(5)
-+#define EC_FUNC_RXINT EC_FUNC(6)
-+#define EC_FUNC_TXINT EC_FUNC(7)
-+#define EC_FUNC_AAL2_VDMA EC_FUNC(8)
-+#define EC_FUNC_OPTIONS EC_FUNC(9)
-+#define EC_FUNC_PROBE EC_FUNC(10)
-+#define EC_FUNC_OPEN EC_FUNC(11)
-+#define EC_FUNC_CONTROL EC_FUNC(12)
-+#define EC_FUNC_DEVICE_INT EC_FUNC(13)
-+#define EC_FUNC_STATUS EC_FUNC(14)
-+#define EC_FUNC_TICK EC_FUNC(15)
-+#define EC_FUNC_CLOSE EC_FUNC(16)
-+#define EC_FUNC_SHUTDOWN EC_FUNC(17)
-+#define EC_FUNC_DEVICE_INT_ALT EC_FUNC(18) /* +GSG 030306 */
-+
-+/*
-+HAL Error Codes. The list below defines every type of error
-+used in all HAL modules. DO NOT CHANGE THESE VALUES! Add new
-+values in integer order to the bottom of the list.
-+*/
-+#define EC_VAL_PDSP_LOAD_FAIL EC_ERR(0x01)|EC_CRITICAL
-+#define EC_VAL_FIRMWARE_TOO_LARGE EC_ERR(0x02)|EC_CRITICAL
-+#define EC_VAL_DEVICE_NOT_FOUND EC_ERR(0x03)|EC_CRITICAL
-+#define EC_VAL_BASE_ADDR_NOT_FOUND EC_ERR(0x04)|EC_CRITICAL
-+#define EC_VAL_RESET_BIT_NOT_FOUND EC_ERR(0x05)|EC_CRITICAL
-+#define EC_VAL_CH_INFO_NOT_FOUND EC_ERR(0x06)
-+#define EC_VAL_RX_STATE_RAM_NOT_CLEARED EC_ERR(0x07)|EC_CRITICAL
-+#define EC_VAL_TX_STATE_RAM_NOT_CLEARED EC_ERR(0x08)|EC_CRITICAL
-+#define EC_VAL_MALLOC_DEV_FAILED EC_ERR(0x09)
-+#define EC_VAL_OS_VERSION_NOT_SUPPORTED EC_ERR(0x0A)|EC_CRITICAL
-+#define EC_VAL_CPSAR_VERSION_NOT_SUPPORTED EC_ERR(0x0B)|EC_CRITICAL
-+#define EC_VAL_NULL_CPSAR_DEV EC_ERR(0x0C)|EC_CRITICAL
-+
-+#define EC_VAL_LUT_NOT_READY EC_ERR(0x0D)
-+#define EC_VAL_INVALID_CH EC_ERR(0x0E)
-+#define EC_VAL_NULL_CH_STRUCT EC_ERR(0x0F)
-+#define EC_VAL_RX_TEARDOWN_ALREADY_PEND EC_ERR(0x10)
-+#define EC_VAL_TX_TEARDOWN_ALREADY_PEND EC_ERR(0x11)
-+#define EC_VAL_RX_CH_ALREADY_TORNDOWN EC_ERR(0x12)
-+#define EC_VAL_TX_CH_ALREADY_TORNDOWN EC_ERR(0x13)
-+#define EC_VAL_TX_TEARDOWN_TIMEOUT EC_ERR(0x14)
-+#define EC_VAL_RX_TEARDOWN_TIMEOUT EC_ERR(0x15)
-+#define EC_VAL_CH_ALREADY_TORNDOWN EC_ERR(0x16)
-+#define EC_VAL_VC_SETUP_NOT_READY EC_ERR(0x17)
-+#define EC_VAL_VC_TEARDOWN_NOT_READY EC_ERR(0x18)
-+#define EC_VAL_INVALID_VC EC_ERR(0x19)
-+#define EC_VAL_INVALID_LC EC_ERR(0x20)
-+#define EC_VAL_INVALID_VDMA_CH EC_ERR(0x21)
-+#define EC_VAL_INVALID_CID EC_ERR(0x22)
-+#define EC_VAL_INVALID_UUI EC_ERR(0x23)
-+#define EC_VAL_INVALID_UUI_DISCARD EC_ERR(0x24)
-+#define EC_VAL_CH_ALREADY_OPEN EC_ERR(0x25)
-+
-+#define EC_VAL_RCB_MALLOC_FAILED EC_ERR(0x26)
-+#define EC_VAL_RX_BUFFER_MALLOC_FAILED EC_ERR(0x27)
-+#define EC_VAL_OUT_OF_TCBS EC_ERR(0x28)
-+#define EC_VAL_NO_TCBS EC_ERR(0x29)
-+#define EC_VAL_NULL_RCB EC_ERR(0x30)|EC_CRITICAL
-+#define EC_VAL_SOP_ERROR EC_ERR(0x31)|EC_CRITICAL
-+#define EC_VAL_EOP_ERROR EC_ERR(0x32)|EC_CRITICAL
-+#define EC_VAL_NULL_TCB EC_ERR(0x33)|EC_CRITICAL
-+#define EC_VAL_CORRUPT_RCB_CHAIN EC_ERR(0x34)|EC_CRITICAL
-+#define EC_VAL_TCB_MALLOC_FAILED EC_ERR(0x35)
-+
-+#define EC_VAL_DISABLE_POLLING_FAILED EC_ERR(0x36)
-+#define EC_VAL_KEY_NOT_FOUND EC_ERR(0x37)
-+#define EC_VAL_MALLOC_FAILED EC_ERR(0x38)
-+#define EC_VAL_RESET_BASE_NOT_FOUND EC_ERR(0x39)|EC_CRITICAL
-+#define EC_VAL_INVALID_STATE EC_ERR(0x40)
-+#define EC_VAL_NO_TXH_WORK_TO_DO EC_ERR(0x41)
-+#define EC_VAL_NO_TXL_WORK_TO_DO EC_ERR(0x42)
-+#define EC_VAL_NO_RX_WORK_TO_DO EC_ERR(0x43)
-+#define EC_VAL_NOT_LINKED EC_ERR(0x44)
-+#define EC_VAL_INTERRUPT_NOT_FOUND EC_ERR(0x45)
-+#define EC_VAL_OFFSET_NOT_FOUND EC_ERR(0x46)
-+#define EC_VAL_MODULE_ALREADY_CLOSED EC_ERR(0x47)
-+#define EC_VAL_MODULE_ALREADY_SHUTDOWN EC_ERR(0x48)
-+#define EC_VAL_ACTION_NOT_FOUND EC_ERR(0x49)
-+#define EC_VAL_RX_CH_ALREADY_SETUP EC_ERR(0x50)
-+#define EC_VAL_TX_CH_ALREADY_SETUP EC_ERR(0x51)
-+#define EC_VAL_RX_CH_ALREADY_OPEN EC_ERR(0x52)
-+#define EC_VAL_TX_CH_ALREADY_OPEN EC_ERR(0x53)
-+#define EC_VAL_CH_ALREADY_SETUP EC_ERR(0x54)
-+#define EC_VAL_RCB_NEEDS_BUFFER EC_ERR(0x55) /* +GSG 030410 */
-+#define EC_VAL_RCB_DROPPED EC_ERR(0x56) /* +GSG 030410 */
-+#define EC_VAL_INVALID_VALUE EC_ERR(0x57)
-+
-+/**
-+@defgroup shared_data Shared Data Structures
-+
-+The data structures documented here are shared by all modules.
-+*/
-+
-+/**
-+ * @ingroup shared_data
-+ * This is the fragment list structure. Each fragment list entry contains a
-+ * length and a data buffer.
-+ */
-+typedef struct
-+ {
-+ bit32u len; /**< Length of the fragment in bytes (lower 16 bits are valid). For SOP, upper 16 bits is the buffer offset. */
-+ void *data; /**< Pointer to fragment data. */
-+ void *OsInfo; /**< Pointer to OS defined data. */
-+ }FRAGLIST;
-+
-+#if defined (_CPHAL_CPMAC)
-+#define CB_PASSCRC_BIT (1<<26)
-+
-+/* CPMAC CPHAL STATUS */
-+#define CPMAC_STATUS_LINK (1 << 0)
-+#define CPMAC_STATUS_LINK_DUPLEX (1 << 1) /* 0 - HD, 1 - FD */
-+#define CPMAC_STATUS_LINK_SPEED (1 << 2) /* 0 - 10, 1 - 100 */
-+
-+/* ADAPTER CHECK Codes */
-+
-+#define CPMAC_STATUS_ADAPTER_CHECK (1 << 7)
-+#define CPMAC_STATUS_HOST_ERR_DIRECTION (1 << 8)
-+#define CPMAC_STATUS_HOST_ERR_CODE (0xF << 9)
-+#define CPMAC_STATUS_HOST_ERR_CH (0x7 << 13)
-+
-+#define _CPMDIO_DISABLE (1 << 0)
-+#define _CPMDIO_HD (1 << 1)
-+#define _CPMDIO_FD (1 << 2)
-+#define _CPMDIO_10 (1 << 3)
-+#define _CPMDIO_100 (1 << 4)
-+#define _CPMDIO_NEG_OFF (1 << 5)
-+#define _CPMDIO_LOOPBK (1 << 16)
-+#define _CPMDIO_NOPHY (1 << 20)
-+#endif
-+
-+/**
-+ * @ingroup shared_data
-+ * Channel specific configuration information. This structure should be
-+ * populated by upper-layer software prior to calling @c ChannelSetup(). Any
-+ * configuration item that can be changed on a per channel basis should
-+ * be represented here. Each module may define this structure with additional
-+ * module-specific members.
-+ */
-+typedef struct
-+ {
-+ int Channel; /**< Channel number. */
-+ int Direction; /**< DIRECTION_RX(1) or DIRECTION_TX(0). */
-+ OS_SETUP *OsSetup; /**< OS defined information associated with this channel. */
-+
-+#if defined(_CPHAL_AAL5) || defined (_CPHAL_CPSAR) || defined (_CPHAL_CPMAC)
-+ int RxBufSize; /**< Size (in bytes) for each Rx buffer.*/
-+ int RxBufferOffset; /**< Number of bytes to offset rx data from start of buffer (must be less than buffer size). */
-+ int RxNumBuffers; /**< The number of Rx buffer descriptors to allocate for Ch. */
-+ int RxServiceMax; /**< Maximum number of packets to service at one time. */
-+
-+ int TxNumBuffers; /**< The number of Tx buffer descriptors to allocate for Ch. */
-+ int TxNumQueues; /**< Number of Tx queues for this channel (1-2). Choosing 2 enables a low priority SAR queue. */
-+ int TxServiceMax; /**< Maximum number of packets to service at one time. */
-+#endif
-+
-+#if defined(_CPHAL_AAL5) || defined(_CPHAL_CPSAR)
-+ int CpcsUU; /**< The 2-byte CPCS UU and CPI information. */
-+ int Gfc; /**< Generic Flow Control. */
-+ int Clp; /**< Cell Loss Priority. */
-+ int Pti; /**< Payload Type Indication. */
-+#endif
-+
-+#if defined(_CPHAL_AAL2) || defined(_CPHAL_AAL5) || defined(_CPHAL_CPSAR)
-+ int DaMask; /**< Specifies whether credit issuance is paused when Tx data not available. */
-+ int Priority; /**< Priority bin this channel will be scheduled within. */
-+ int PktType; /**< 0=AAL5,1=Null AAL,2=OAM,3=Transparent,4=AAL2. */
-+ int Vci; /**< Virtual Channel Identifier. */
-+ int Vpi; /**< Virtual Path Identifier. */
-+ int FwdUnkVc; /**< Enables forwarding of unknown VCI/VPI cells to host. 1=enable, 0=disable. */
-+
-+ /* Tx VC State */
-+ int TxVc_CellRate; /**< Tx rate, set as clock ticks between transmissions (SCR for VBR, CBR for CBR). */
-+ int TxVc_QosType; /**< 0=CBR,1=VBR,2=UBR,3=UBRmcr. */
-+ int TxVc_Mbs; /**< Min Burst Size in cells.*/
-+ int TxVc_Pcr; /**< Peak Cell Rate for VBR in clock ticks between transmissions. */
-+
-+ bit32 TxVc_AtmHeader; /**< ATM Header placed on firmware gen'd OAM cells for this Tx Ch (must be big endian with 0 PTI). */
-+ int TxVc_OamTc; /**< TC Path to transmit OAM cells for TX connection (0,1). */
-+ int TxVc_VpOffset; /**< Offset to the OAM VP state table. */
-+ /* Rx VC State */
-+ int RxVc_OamCh; /**< Ch to terminate rx'd OAM cells to be forwarded to the host. */
-+ int RxVc_OamToHost; /**< 0=do not pass, 1=pass. */
-+ bit32 RxVc_AtmHeader; /**< ATM Header placed on firmware gen'd OAM cells for this Rx conn (must be big endian with 0 PTI). */
-+ int RxVc_OamTc; /**< TC Path to transmit OAM cells for RX connection (0,1). */
-+ int RxVc_VpOffset; /**< Offset to the OAM VP state table. */
-+ /* Tx VP State */
-+ int TxVp_OamTc; /**< TC Path to transmit OAM cells for TX VP connection (0,1). */
-+ bit32 TxVp_AtmHeader; /**< ATM Header placed on firmware gen'd VP OAM cells for this Tx VP conn (must be big endian with 0 VCI). */
-+ /* Rx VP State */
-+ int RxVp_OamCh; /**< Ch to terminate rx'd OAM cells to be forwarded to the host. */
-+ int RxVp_OamToHost; /**< 0=do not pass, 1=pass. */
-+ bit32 RxVp_AtmHeader; /**< ATM Header placed on firmware gen'd OAM cells for this Rx VP conn (must be big endian with 0 VCI). */
-+ int RxVp_OamTc; /**< TC Path to transmit OAM cells for RX VP connection (0,1). */
-+ int RxVp_OamVcList; /**< Indicates all VC channels associated with this VP channel (one-hot encoded). */
-+#endif
-+
-+
-+#ifdef _CPHAL_VDMAVT
-+ bit32u RemFifoAddr; /* Mirror mode only. */
-+ bit32u FifoAddr;
-+ bit32 PollInt;
-+ bit32 FifoSize;
-+ int Ready;
-+#endif
-+
-+ }CHANNEL_INFO;
-+
-+/*
-+ * This structure contains each statistic value gathered by the CPHAL.
-+ * Applications may access statistics data by using the @c StatsGet() routine.
-+ */
-+/* STATS */
-+#if defined(_CPHAL_AAL2) || defined(_CPHAL_AAL5) || defined(_CPHAL_CPSAR)
-+typedef struct
-+ {
-+ bit32u CrcErrors[16];
-+ bit32u LenErrors[16];
-+ bit32u DmaLenErrors[16];
-+ bit32u AbortErrors[16];
-+ bit32u StarvErrors[16];
-+ bit32u TxMisQCnt[16][2];
-+ bit32u RxMisQCnt[16];
-+ bit32u RxEOQCnt[16];
-+ bit32u TxEOQCnt[16][2];
-+ bit32u RxPacketsServiced[16];
-+ bit32u TxPacketsServiced[16][2];
-+ bit32u RxMaxServiced;
-+ bit32u TxMaxServiced[16][2];
-+ bit32u RxTotal;
-+ bit32u TxTotal;
-+ } STAT_INFO;
-+#endif
-+
-+/*
-+ * VDMA Channel specific configuration information
-+ */
-+#ifdef _CPHAL_AAL2
-+typedef struct
-+ {
-+ int Ch; /**< Channel Number */
-+ int RemoteEndian; /**< Endianness of remote VDMA-VT device */
-+ int CpsSwap; /**< When 0, octet 0 in CPS pkt located in LS byte of 16-bit word sent to rem VDMA device. When 1, in MS byte. */
-+ }VdmaChInfo;
-+#endif
-+
-+#ifndef _CPHAL
-+ typedef void HAL_DEVICE;
-+ typedef void HAL_PRIVATE;
-+ typedef void HAL_RCB;
-+ typedef void HAL_RECEIVEINFO;
-+#endif
-+
-+/**
-+ * @ingroup shared_data
-+ * The HAL_FUNCTIONS struct defines the function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to xxxInitModule().
-+ */
-+typedef struct
-+ {
-+ int (*ChannelSetup) (HAL_DEVICE *HalDev, CHANNEL_INFO *Channel, OS_SETUP *OsSetup);
-+ int (*ChannelTeardown) (HAL_DEVICE *HalDev, int Channel, int Mode);
-+ int (*Close) (HAL_DEVICE *HalDev, int Mode);
-+ int (*Control) (HAL_DEVICE *HalDev, const char *Key, const char *Action, void *Value);
-+ int (*Init) (HAL_DEVICE *HalDev);
-+ int (*Open) (HAL_DEVICE *HalDev);
-+ int (*PacketProcessEnd) (HAL_DEVICE *HalDev);
-+ int (*Probe) (HAL_DEVICE *HalDev);
-+ int (*RxReturn) (HAL_RECEIVEINFO *HalReceiveInfo, int StripFlag);
-+ int (*Send) (HAL_DEVICE *HalDev, FRAGLIST *FragList, int FragCount, int PacketSize, OS_SENDINFO *OsSendInfo, bit32u Mode);
-+ int (*Shutdown) (HAL_DEVICE *HalDev);
-+ int (*Tick) (HAL_DEVICE *HalDev);
-+
-+#ifdef _CPHAL_AAL5
-+ int (*Kick) (HAL_DEVICE *HalDev, int Queue);
-+ void (*OamFuncConfig) (HAL_DEVICE *HalDev, unsigned int OamConfig);
-+ void (*OamLoopbackConfig) (HAL_DEVICE *HalDev, unsigned int OamConfig, unsigned int *LLID, unsigned int CorrelationTag);
-+ volatile bit32u* (*RegAccess)(HAL_DEVICE *HalDev, bit32u RegOffset);
-+ STAT_INFO* (*StatsGetOld)(HAL_DEVICE *HalDev);
-+#endif
-+ } HAL_FUNCTIONS;
-+
-+/**
-+ * @ingroup shared_data
-+ * The OS_FUNCTIONS struct defines the function pointers for all upper layer
-+ * functions accessible to the CPHAL. The upper layer software is responsible
-+ * for providing the correct OS-specific implementations for the following
-+ * functions. It is populated by calling InitModule() (done by the CPHAL in
-+ * xxxInitModule().
-+ */
-+typedef struct
-+ {
-+ int (*Control)(OS_DEVICE *OsDev, const char *Key, const char *Action, void *Value);
-+ void (*CriticalOn)(void);
-+ void (*CriticalOff)(void);
-+ void (*DataCacheHitInvalidate)(void *MemPtr, int Size);
-+ void (*DataCacheHitWriteback)(void *MemPtr, int Size);
-+ int (*DeviceFindInfo)(int Inst, const char *DeviceName, void *DeviceInfo);
-+ int (*DeviceFindParmUint)(void *DeviceInfo, const char *Parm, bit32u *Value);
-+ int (*DeviceFindParmValue)(void *DeviceInfo, const char *Parm, void *Value);
-+ void (*Free)(void *MemPtr);
-+ void (*FreeRxBuffer)(OS_RECEIVEINFO *OsReceiveInfo, void *MemPtr);
-+ void (*FreeDev)(void *MemPtr);
-+ void (*FreeDmaXfer)(void *MemPtr);
-+ void (*IsrRegister)(OS_DEVICE *OsDev, int (*halISR)(HAL_DEVICE*, int*), int InterruptBit);
-+ void (*IsrUnRegister)(OS_DEVICE *OsDev, int InterruptBit);
-+ void* (*Malloc)(bit32u size);
-+ void* (*MallocDev)(bit32u Size);
-+ void* (*MallocDmaXfer)(bit32u size, void *MemBase, bit32u MemRange);
-+ void* (*MallocRxBuffer)(bit32u size, void *MemBase, bit32u MemRange,
-+ OS_SETUP *OsSetup, HAL_RECEIVEINFO *HalReceiveInfo,
-+ OS_RECEIVEINFO **OsReceiveInfo, OS_DEVICE *OsDev);
-+ void* (*Memset)(void *Dest, int C, bit32u N);
-+ int (*Printf)(const char *Format, ...);
-+ int (*Receive)(OS_DEVICE *OsDev,FRAGLIST *FragList,bit32u FragCount,
-+ bit32u PacketSize,HAL_RECEIVEINFO *HalReceiveInfo, bit32u Mode);
-+ int (*SendComplete)(OS_SENDINFO *OsSendInfo);
-+ int (*Sprintf)(char *S, const char *Format, ...);
-+ int (*Strcmpi)(const char *Str1, const char *Str2);
-+ unsigned int (*Strlen)(const char *S);
-+ char* (*Strstr)(const char *S1, const char *S2);
-+ unsigned long (*Strtoul)(const char *Str, char **Endptr, int Base);
-+ void (*TeardownComplete)(OS_DEVICE *OsDev, int Ch, int Direction);
-+ } OS_FUNCTIONS;
-+
-+/************** MODULE SPECIFIC STUFF BELOW **************/
-+
-+#ifdef _CPHAL_CPMAC
-+
-+/*
-+int halCpmacInitModule(HAL_DEVICE **HalDev, OS_DEVICE *OsDev, HAL_FUNCTIONS *HalFunc, int (*osBridgeInitModule)(OS_FUNCTIONS *), void* (*osMallocDev) (bit32u), int *Size, int inst);
-+*/
-+
-+int halCpmacInitModule(HAL_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ HAL_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+#endif
-+
-+#ifdef _CPHAL_AAL5
-+/*
-+ * @ingroup shared_data
-+ * The AAL5_FUNCTIONS struct defines the AAL5 function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to cphalInitModule().
-+ */
-+/*
-+typedef struct
-+ {
-+ int (*ChannelSetup)(HAL_DEVICE *HalDev, CHANNEL_INFO *HalCh, OS_SETUP *OsSetup);
-+ int (*ChannelTeardown)(HAL_DEVICE *HalDev, int Ch, int Mode);
-+ int (*Close)(HAL_DEVICE *HalDev, int Mode);
-+ int (*Init)(HAL_DEVICE *HalDev);
-+ int (*ModeChange)(HAL_DEVICE *HalDev, char *DeviceParms);
-+ int (*Open)(HAL_DEVICE *HalDev);
-+ int (*InfoGet)(HAL_DEVICE *HalDev, int Key, void *Value);
-+ int (*Probe)(HAL_DEVICE *HalDev);
-+ int (*RxReturn)(HAL_RECEIVEINFO *HalReceiveInfo, int StripFlag);
-+ int (*Send)(HAL_DEVICE *HalDev,FRAGLIST *FragList,int FragCount,
-+ int PacketSize,OS_SENDINFO *OsSendInfo,int Ch, int Queue,
-+ bit32u Mode);
-+ int (*StatsClear)(HAL_DEVICE *HalDev);
-+ STAT_INFO* (*StatsGet)(HAL_DEVICE *HalDev);
-+ int (*Status)(HAL_DEVICE *HalDev);
-+ void (*Tick)(HAL_DEVICE *HalDev);
-+ int (*Kick)(HAL_DEVICE *HalDev, int Queue);
-+ volatile bit32u* (*RegAccess)(HAL_DEVICE *HalDev, bit32u RegOffset);
-+ } AAL5_FUNCTIONS;
-+*/
-+
-+int cpaal5InitModule(HAL_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ HAL_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+#endif
-+
-+#ifdef _CPHAL_AAL2
-+/**
-+ * @ingroup shared_data
-+ * The AAL2_FUNCTIONS struct defines the AAL2 function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to cphalInitModule().
-+ */
-+typedef struct
-+ {
-+ int (*ChannelSetup)(HAL_DEVICE *HalDev, CHANNEL_INFO *HalCh, OS_SETUP *OsSetup);
-+ int (*ChannelTeardown)(HAL_DEVICE *HalDev, int Ch, int Mode);
-+ int (*Close)(HAL_DEVICE *HalDev, int Mode);
-+ int (*Init)(HAL_DEVICE *HalDev);
-+ int (*ModeChange)(HAL_DEVICE *HalDev, char *DeviceParms);
-+ int (*Open)(HAL_DEVICE *HalDev);
-+ int (*OptionsGet)(HAL_DEVICE *HalDev, char *Key, bit32u *Value);
-+ int (*Probe)(HAL_DEVICE *HalDev);
-+
-+ int (*StatsClear)(HAL_DEVICE *HalDev);
-+ STAT_INFO* (*StatsGet)(HAL_DEVICE *HalDev);
-+ int (*Status)(HAL_DEVICE *HalDev);
-+ void (*Tick)(HAL_DEVICE *HalDev);
-+ int (*Aal2UuiMappingSetup)(HAL_DEVICE *HalDev, int VC, int UUI,
-+ int VdmaCh, int UUIDiscard);
-+ int (*Aal2RxMappingSetup)(HAL_DEVICE *HalDev, int VC, int CID,
-+ int LC);
-+ int (*Aal2TxMappingSetup)(HAL_DEVICE *HalDev, int VC, int LC, int VdmaCh);
-+ int (*Aal2VdmaChSetup)(HAL_DEVICE *HalDev, bit32u RemVdmaVtAddr,
-+ VdmaChInfo *VdmaCh);
-+ volatile bit32u* (*RegAccess)(HAL_DEVICE *HalDev, bit32u RegOffset);
-+ int (*Aal2ModeChange)(HAL_DEVICE *HalDev, int Vc, int RxCrossMode,
-+ int RxMultiMode, int TxMultiMode, int SchedMode,
-+ int TcCh);
-+ void (*Aal2VdmaEnable)(HAL_DEVICE *HalDev, int Ch);
-+ int (*Aal2VdmaDisable)(HAL_DEVICE *HalDev, int Ch);
-+ } AAL2_FUNCTIONS;
-+
-+int cpaal2InitModule(HAL_DEVICE **HalDev,
-+ OS_DEVICE *OsDev,
-+ AAL2_FUNCTIONS **HalFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+#endif
-+
-+#ifdef _CPHAL_VDMAVT
-+/**
-+ * @ingroup shared_data
-+ * The VDMA_FUNCTIONS struct defines the HAL function pointers used by upper layer
-+ * software. The upper layer software receives these pointers through the
-+ * call to InitModule().
-+ *
-+ * Note that this list is still under definition.
-+ */
-+typedef struct
-+ {
-+ bit32 (*Init)( HAL_DEVICE *VdmaVtDev);
-+ /* bit32 (*SetupTxFifo)(HAL_DEVICE *VdmaVtDev, bit32u LclRem,
-+ bit32u Addr, bit32u Size, bit32u PollInt);
-+ bit32 (*SetupRxFifo)(HAL_DEVICE *VdmaVtDev, bit32u LclRem,
-+ bit32u Addr, bit32u Size, bit32u PollInt); */
-+ bit32 (*Tx)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*Rx)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*SetRemoteChannel)(HAL_DEVICE *VdmaVtDev, bit32u RemAddr,
-+ bit32u RemDevID);
-+ bit32 (*ClearRxInt)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*ClearTxInt)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*Open)(HAL_DEVICE *VdmaVtDev);
-+ bit32 (*Close)(HAL_DEVICE *VdmaVtDev);
-+ int (*Control) (HAL_DEVICE *HalDev, const char *Key, const char *Action, void *Value);
-+ int (*ChannelSetup)(HAL_DEVICE *VdmaVtDev, CHANNEL_INFO *HalCh, OS_SETUP *OsSetup);
-+ int (*ChannelTeardown)(HAL_DEVICE *VdmaVtDev, int Ch, int Mode);
-+ int (*Send)(HAL_DEVICE *VdmaVtDev,FRAGLIST *FragList,int FragCount,
-+ int PacketSize,OS_SENDINFO *OsSendInfo,bit32u Mode);
-+ } VDMA_FUNCTIONS;
-+
-+int VdmaInitModule(HAL_DEVICE **VdmaVt,
-+ OS_DEVICE *OsDev,
-+ VDMA_FUNCTIONS **VdmaVtFunc,
-+ OS_FUNCTIONS *OsFunc,
-+ int OsFuncSize,
-+ int *HalFuncSize,
-+ int Inst);
-+#endif
-+
-+/*
-+extern int cphalInitModule(MODULE_TYPE ModuleType, HAL_DEVICE **HalDev, OS_DEVICE *OsDev, HAL_FUNCTIONS *HalFunc,
-+ int (*osInitModule)(OS_FUNCTIONS *), void* (*osMallocDev)(bit32u),
-+ int *Size, int Inst);
-+*/
-+
-+
-+#ifdef _CPHAL_AAL5
-+extern const char hcSarFrequency[];
-+#endif
-+
-+#ifdef _CPHAL_CPMAC
-+/* following will be common, once 'utl' added */
-+extern const char hcClear[];
-+extern const char hcGet[];
-+extern const char hcSet[];
-+extern const char hcTick[];
-+
-+extern const char hcCpuFrequency[];
-+extern const char hcCpmacFrequency[];
-+extern const char hcMdioBusFrequency[];
-+extern const char hcMdioClockFrequency[];
-+extern const char hcCpmacBase[];
-+extern const char hcPhyNum[];
-+extern const char hcSize[];
-+extern const char hcCpmacSize[];
-+extern const char hcPhyAccess[];
-+#endif
-+
-+#endif /* end of _INC_ */
-diff -urN linux.old/drivers/atm/sangam_atm/dev_host_interface.h linux.dev/drivers/atm/sangam_atm/dev_host_interface.h
---- linux.old/drivers/atm/sangam_atm/dev_host_interface.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dev_host_interface.h 2005-08-23 04:46:50.091844608 +0200
-@@ -0,0 +1,1162 @@
-+#ifndef __DEV_HOST_INTERFACE_H__
-+#define __DEV_HOST_INTERFACE_H__ 1
-+
-+/*******************************************************************************
-+* FILE PURPOSE: Public header file for the Host-to-DSP interface
-+********************************************************************************
-+*
-+* TEXAS INSTRUMENTS PROPRIETARTY INFORMATION
-+*
-+* (C) Copyright Texas Instruments Inc. 2002. All rights reserved.
-+*
-+* Property of Texas Instruments Incorporated
-+*
-+* Restricted Rights - Use, duplication, or disclosure is subject to
-+* restrictions set forth in TI's program license agreement and
-+* associated documentation
-+*
-+*
-+* FILE NAME: dev_host_interface.h
-+*
-+* DESCRIPTION:
-+* This header file defines the variables and parameters used between the
-+* host processor and the DSP. This file is included in both the DSP
-+* software and the host software.
-+*
-+* RULES FOR MODIFICATION AND USE OF THIS FILE:
-+*
-+* --The main pointer to the struct of pointers will always be at the same fixed
-+* location (0x80000000).
-+*
-+* --Each pointer element in the struct of pointers (indicated by the main pointer)
-+* will always point to a struct only.
-+*
-+* --Any new structures added to the host interface in subsequent versions must
-+* each have a corresponding new pointer element added to the END of the struct
-+* of pointers. Other than this, there will never be any moving or rearranging
-+* of the pointer elements in the struct of pointers.
-+*
-+* --Any new elements added to existing structures will be added at the END of the
-+* structure. Other than this, there will never be any moving or rearranging
-+* of structure elements.
-+*
-+* --A new structure will never be added as a new element in an old structure.
-+* New structures must be added separately with a new entry in the struct of
-+* pointers, as noted above.
-+*
-+* --Also, the sizes of existing arrays within old structures will never be changed.
-+*
-+* --The modem code in the DSP will never reference the struct of pointers in order
-+* to avoid aliasing issues in the DSP code. The modem code will only use the
-+* specific structures directly.
-+*
-+* --The host processor never accesses the DSP side of the ATM-TC hardware directly.
-+* The DSP interfaces directly to the ATM-TC hardware and relays information to
-+* the host processor through the host interface.
-+*
-+* --The host processor can track the modem's transition through important states
-+* by accessing the Modem State Bit Field in the host interface. Each bit in
-+* the bit field represents an important state to track in the modem. As the
-+* modem transitions through each important state, the corresponding bit will
-+* change from a zero to a one. Each bit in the bit field will only be reset to
-+* zero if the modem retrains. If new states need to be tracked and are added
-+* in subsequent versions of the host interface, a corresponding bit will be
-+* added at the END of the bit field to ensure backwards compatibility. The
-+* Modem State Bit Field is reset if the modem retrains or falls out of Showtime.
-+*
-+* --An interrupt will be sent to the host processor when a change occurs in the
-+* Modem State Bit Field. There is an interrupt masking register which can mask
-+* specific interrupts corresponding to the bits of the Modem State Bit Field.
-+* This allows the host to keep an interrupt from being generated for those
-+* states that are masked.
-+*
-+* HISTORY:
-+*
-+* 11/20/02 J. Bergsagel Written from the previous host interface file
-+* 11/27/02 J. Bergsagel Added comments for mailbox control struct and
-+* fixed a couple items for overlay page stuff.
-+* Also, added temporary elements for SWTC code.
-+* 12/04/02 J. Bergsagel Added extra dummy byte to DEV_HOST_eocVarDef_t
-+* for proper word alignment.
-+* 12/12/02 J. Bergsagel Changed initial states in the modem state bit field
-+* and added more instructions for adding more states.
-+* 12/16/02 J. Bergsagel Changed name "hostVersion_p" to "hostIntfcVersion_p".
-+* Removed dspAturState from DEV_HOST_modemStateBitField_t.
-+* Reorganized several struct elements to clean up the
-+* host interface.
-+* 12/27/02 Sameer V Added missing channel 0 statistics for TC. Added
-+* ocd error information.
-+* 12/27/02 Sameer V Added overlayState to OlayDP_Parms to indicate whether
-+* overlays are being executed in current state.
-+* 01/06/03 J. Bergsagel Added maxAllowedMargin and minRequiredMargin to
-+* DEV_HOST_msg_t.
-+* Renamed TC chan 1 items to be chan 0 items to start out.
-+* 01/17/03 Sameer V Moved delineationState to atmStats structure.
-+* 01/21/03 Barnett Implemented Ax7 UNIT-MODULE modular software framework.
-+* 01/22/03 J. Bergsagel Added warning comments for certain struct typedefs.
-+* 01/23/03 C. Perez-N. Removed old AX5-only diags. command/response entries in the
-+* HOST and DSP ennumerations, and added the AX7 new ones
-+* Added pointer entries in the DEV_HOST_dspOamSharedInterface_t
-+* structure pointing to the analog diags. input/output/options
-+* structures.
-+* 01/29/03 Sameer V Removed TC_IDLE in enum for delineation state. Hardware
-+* only reports TC_HUNT, TC_PRESYNC and TC_SYNC.
-+* 03/07/03 Sameer/Jonathan Put SWTC token around structs and elements only used by SWTC
-+* 03/12/03 Mannering Add CO profile data structures
-+* 03/18/03 J. Bergsagel Removed the obsolete DSP_CHECK_TC response message.
-+* 03/24/03 J. Bergsagel Added DEV_HOST_hostInterruptMask_t for masking DSP interrupt sources
-+* 03/28/03 C. Perez-N Changed the C-style comments and made them C++ sytle instead.
-+* Replaced the occurrences of "SINT32 *" pointer declarations with
-+* "PSINT32"
-+* 03/28/03 Mannering Update CO profile data structures
-+* 04/04/03 S. Yim Add host I/F hooks for switchable hybrid and RJ11
-+* inner/outer pair selection
-+* 04/11/03 J. Bergsagel Changed modem state bit field struct types to enums instead and used
-+* a single integer variable for each "bitfield".
-+* Changed bit field for host interrupt masks to an integer value also.
-+* 04/14/03 J. Bergsagel Changed name of table pointer "meanSquareTblDstrm_p" to "marginTblDstrm_p".
-+* 04/03/03 Umesh Iyer CMsg1 and RMsg1 use the same storage as CMSGPCB and RMSGPCB.
-+* The string lengths for these have been adjusted to hold the longest
-+* message in each case. The PCB messages from ADSL2 are longer.
-+* 04/21/03 Sameeer V Added new host mailbox message for shutting down the DSLSS peripherals.
-+* 04/23/03 J. Bergsagel Fixed comments for overlay mailbox messages and for losErrors.
-+* 04/28/03 Mannering Added skip phase op flag to CO profile data structure
-+* 05/05/03 Mannering Review Comments - Removed "#if CO_PROFILE" from around structure
-+* definitions and define the number of profiles (DEV_HOST_LIST_ENTRIES)
-+* 05/13/03 J. Bergsagel Added new elements to DEV_HOST_phyPerf_t for host control of hybrid.
-+* 05/15/03 J. Bergsagel Added "farEndLosErrors" and "farEndRdiErrors" to DEV_HOST_modemStatsDef_t.
-+* 05/16/03 Mannering Updated CO profile structure to support updated bit allocation and
-+* interopability.
-+* 05/20/03 Sameer V Added DSP message to inicate DYING GASP.
-+* 05/22/03 J. Bergsagel Added a new struct typedef "DEV_HOST_hostInterruptSource_t".
-+* Added "atucGhsRevisionNum" to "DEV_HOST_dspWrNegoParaDef_t".
-+* Moved the following struct typedef's here to the public host interface:
-+* DEV_HOST_dspBitSwapDef_t
-+* DEV_HOST_atmDsBert_t
-+* 05/28/03 A. Redfern Changed pointer type and location for margin reporting.
-+* 05/28/03 Mannering Moved CO profile defines to dev_host_interface_pvt.h
-+* 05/28/03 J. Bergsagel Moved subStateIndex and STM BERT controls into new struct "DEV_HOST_modemEnvPublic_t"
-+* 05/29/03 J. Bergsagel Added elements to "DEV_HOST_modemEnvPublic_t" for host control of DSLSS LED's.
-+* 06/10/03 Umesh Iyer Modified trainMode check to be compliant with the new host i/f mods.
-+* 06/05/03 J. Bergsagel Added enum that will eventually replace the bitfield: DEV_HOST_diagAnlgOptionsVar_t.
-+* Added new element "currentHybridNumUsed" in the DEV_HOST_phyPerf_t typedef
-+* Added new host control flags for LPR signal detection on GPIO[0].
-+* 06/06/03 A. Redfern Removed fine gain scale from the CO profile and added max downstream power cutback.
-+* Changed "test1" in CO profile struct to "phyEcDelayAdjustment".
-+* 06/26/03 J. Bergsagel Added genericStructure typedef and two pointer elements of this type in the big table.
-+* 07/03/03 Jack Huang Renamed test2 to bSwapThresholdUpdate
-+* 07/07/03 Mallesh Changed phySigTxPowerCutback_f flag to a variable phySigTxGainReductionAt0kft which indicates the
-+* amount of gain reduction in linear scale.
-+* 07/15/03 Sameer V Changed DEV_HOST_diagAnlgOptionsVar_t to be an enum instead of a bit field. Host code
-+* does not support setting bit fields.
-+* 07/22/03 Jack Huang Added bitswap control flag in host i/f for API calls
-+* 08/06/03 Sameer V Added missingToneDs_p to the DEV_HOST_oamWrNegoParaDef_t to enable host to switch off
-+* DS tones on specified bins
-+* 08/21/03 Jack Huang Added pcbEnabled flag in the DEV_HOST_modemEnvPublic_t structure
-+* Added g.hs buffer definitions to DEV_HOST_dspOamSharedInterface_t
-+* Added DEV_HOST_consBufDef_t to the DEV_HOST_dspOamSharedInterface_t structure
-+* 08/26/03 J. Bergsagel Fixed name of "missingToneDs_p" to be "missingToneDsAddr" instead (since it is
-+* not really used as a pointer).
-+* 09/11/03 Mallesh Added a flag "usPilotInT1413ModeInMedley" to determine the need to send Upstream Pilot
-+* in medley in T1.413 mode.
-+* 09/12/03 J. Bergsagel Changed "test3" to "phyBitaFastPathExcessFineGainBump" in CO profile struct.
-+* Changed "test4" to "phyBitaSkipGapAdjustment" in CO profile struct.
-+* 09/23/03 J. Bergsagel Changed "T1413vendorRevisionNumber" to "vendorRevisionNumber" in DEV_HOST_msg_t.
-+* Added ADSL2 and ADSL2 diag. states to the modem state bit field.
-+* 10/01/03 J. Bergsagel Changed define of "MULTI_MODE" to be 255 to indicate that all possible bits
-+* in the 8-bit bit field are turned on for any current and future training modes.
-+* 10/09/03 M. Turkboylari Added DSP_TRAINING_MSGS and adsl2DeltMsgs_p, which is a pointer to a pointer,
-+* in order to pass the ADSL2 training and DELT messages to the host side. This is for ACT.
-+* 10/20/03 Mallesh Added a GHS state enumerator for cleardown
-+* 10/20/03 Xiaohui Li Add definition for READSL2_MODE and READSL2_DELT
-+* 11/07/03 J. Bergsagel Removed all code for when SWTC==1, which therefore allows removal of include of
-+* "env_def_defines.h". We shouldn't have any compile tokens used in this file.
-+* (the SWTC token is always off in any Ax7 code).
-+* 11/14/03 J. Bergsagel Also removed READSL2_ENABLE token (no more compile tokens to be used in this .h file).
-+* 12/12/03 Sameer/Ram Added DEV_HOST_EOCAOC_INTERRUPT_MASK to enable host to disable response code for AOC/EOC
-+* mailbox messages
-+* 12/09/03 Jack Huang Changed G.hs txbuf size from 60 to 64 to fit the max segment size
-+* 12/15/03 Mallesh Changed vendor ID type defenition from SINT16 to UINT16
-+* 12/23/03 Sameer V Added ability to turn off constellation display reporting to host using oamFeature bit field.
-+* 12/24/03 Sameer V Changed comment for Constellation Display Current Address to Host Write instead of DSP Write.
-+* 12/26/03 Sameer/Ram Added DEV_HOST_GHSMSG_INTERRUPT_MASK to enable host to disable response code for GHS Messages
-+* (C) Copyright Texas Instruments Inc. 2002. All rights reserved.
-+*******************************************************************************/
-+
-+#include "dev_host_verdef.h"
-+
-+// ---------------------------------------------------------------------------------
-+// Address of the pointer to the DEV_HOST_dspOamSharedInterface_s struct of pointers
-+// This is where it all starts.
-+// ---------------------------------------------------------------------------------
-+#define DEV_HOST_DSP_OAM_POINTER_LOCATION 0x80000000
-+
-+// The define "MAX_NUM_UPBINS" is used in "DEV_HOST_diagAnlgInputVar_t" below.
-+// This value can never be changed (for host intf. backwards compatibility)
-+#define MAX_NUM_UPBINS 64
-+
-+// -----------------------------------------------
-+// Begin common enumerations between DSP and host.
-+// -----------------------------------------------
-+
-+// These Host-to-DSP commands are organized into two groups:
-+// immediate state change commands and status affecting commands.
-+// Do not add or remove commands except at the bottom since the DSP assumes this sequence.
-+
-+enum
-+{
-+ HOST_ACTREQ, // Send R-ACKREQ and monitor for C-ACKx
-+ HOST_QUIET, // Sit quietly doing nothing for about 60 seconds, DEFAULT STATE; R_IDLE
-+ HOST_XMITBITSWAP, // Perform upstream bitswap - FOR INTERNAL USE ONLY
-+ HOST_RCVBITSWAP, // Perform downstream bitswap - FOR INTERNAL USE ONLY
-+ HOST_RTDLPKT, // Send a remote download packet - FOR INTERNAL USE ONLY
-+ HOST_CHANGELED, // Read the LED settings and change accordingly
-+ HOST_IDLE, // Sit quiet
-+ HOST_REVERBTEST, // Generate REVERB for manufacturing test
-+ HOST_CAGCTEST, // Set coarse receive gain for manufacturing test
-+ HOST_DGASP, // send Dying Gasp messages through EOC channel
-+ HOST_GHSREQ, // G.hs - FOR INTERNAL USE ONLY
-+ HOST_GHSMSG, // G.hs - FOR INTERNAL USE ONLY
-+ HOST_GHS_SENDGALF, // G.hs - FOR INTERNAL USE ONLY
-+ HOST_GHSEXIT, // G.hs - FOR INTERNAL USE ONLY
-+ HOST_GHSMSG1, // G.hs - FOR INTERNAL USE ONLY
-+ HOST_HYBRID, // Enable/Disable automatic hybrid switch
-+ HOST_RJ11SELECT, // RJ11 inner/outer pair select
-+ HOST_DIGITAL_MEM, // Digital Diags: run external memory tests
-+ HOST_TXREVERB, // AFE Diags: TX path Reverb
-+ HOST_TXMEDLEY, // AFE Diags: TX path Medley
-+ HOST_RXNOISEPOWER, // AFE Diags: RX noise power
-+ HOST_ECPOWER, // AFE Diags: RX eco power
-+ HOST_ALL_ADIAG, // AFE Diags: all major analog diagnostic modes. Host is responsible to initiate each diagnostic sessions
-+ HOST_USER_ADIAG, // AFE Diags: Host fills in analog diagnostic input data structure as specified and requests DSP to perform measurements as specified
-+ HOST_QUIT_ADIAG, // AFE Diags: Host requests DSP to quit current diagnostic session. This is used for stopping the transmit REVERB/MEDLEY
-+ HOST_NO_CMD, // All others - G.hs - FOR INTERNAL USE ONLY
-+ HOST_DSLSS_SHUTDOWN, // Host initiated DSLSS shutdown message
-+ HOST_SET_GENERIC, // Set generic CO profile
-+ HOST_UNDO_GENERIC, // Set profile previous to Generic
-+ HOST_GHS_CLEARDOWN // G.hs - FOR INTERNAL USE ONLY to start cleardown
-+};
-+
-+// These DSP-to-Host responses are organized into two groups:
-+// responses to commands and requests for OAM services.
-+
-+enum
-+{
-+ DSP_IDLE, // R_IDLE state entered
-+ DSP_ACTMON, // R_ACTMON state entered
-+ DSP_TRAIN, // R_TRAIN state entered
-+ DSP_ACTIVE, // R_ACTIVE state entered
-+ DSP_XMITBITSWAP, // Upstream bitswap complete - FOR INTERNAL USE ONLY
-+ DSP_RCVBITSWAP, // Downstream bitswap complete - FOR INTERNAL USE ONLY
-+ DSP_RTDL, // R_RTDL state entered - FOR INTERNAL USE ONLY
-+ DSP_RRTDLPKT, // RTDL packet received - FOR INTERNAL USE ONLY
-+ DSP_XRTDLPKT, // RTDL packet transmitted - FOR INTERNAL USE ONLY
-+ DSP_ERROR, // Command rejected, wrong state for this command
-+ DSP_REVERBTEST, // Manufacturing REVERB test mode entered
-+ DSP_CAGCTEST, // Manufacturing receive gain test done
-+ DSP_OVERLAY_START, // Notify host that page overlay has started - overlay number indicated by "tag"
-+ DSP_OVERLAY_END, // Notify host that page overlay has ended - overlay number indicated by "tag"
-+ DSP_CRATES1, // CRATES1 message is valid and should be copied to host memory now
-+ DSP_SNR, // SNR calculations are ready and should be copied to host memory now
-+ DSP_GHSMSG, // G.hs - FOR INTERNAL USE ONLY
-+ DSP_RCVBITSWAP_TIMEOUT, // Acknowledge Message was not received within ~500 msec (26 Superframes).
-+ DSP_ATM_TC_SYNC, // Indicates true TC sync on both the upstream and downstream. Phy layer ready for data xfer.
-+ DSP_ATM_NO_TC_SYNC, // Indicates loss of sync on phy layer on either US or DS.
-+ DSP_HYBRID, // DSP completed hybrid switch
-+ DSP_RJ11SELECT, // DSP completed RJ11 inner/outer pair select
-+ DSP_INVALID_CMD, // Manufacturing (Digital and AFE) diags: CMD received not recognized
-+ DSP_TEST_PASSED, // Manufacturing diags: test passed
-+ DSP_TEST_FAILED, // Manufacturing diags: test failed
-+ DSP_TXREVERB, // Manufacturing AFE diags: Response to HOST_TXREVERB
-+ DSP_TXMEDLEY, // Manufacturing AFE diags: Response to HOST_TXMEDLEY
-+ DSP_RXNOISEPOWER, // Manufacturing AFE diags: Response to HOST_RXNOISEPOWER
-+ DSP_ECPOWER, // Manufacturing AFE diags: Response to HOST_ECPOWER
-+ DSP_ALL_ADIAG, // Manufacturing AFE diags: Response to HOST_ALL_ADIAG
-+ DSP_USER_ADIAG, // Manufacturing AFE diags: Response to HOST_USER_ADIAG
-+ DSP_QUIT_ADIAG, // Manufacturing AFE diags: Response to HOST_QUIT_ADIAG
-+ DSP_DGASP, // DSP Message to indicate dying gasp
-+ DSP_EOC, // DSP Message to indicate that DSP sent an EOC message to CO
-+ DSP_TRAINING_MSGS // DSP Message to indicate that host has to copy the training message specified in the tag field.
-+};
-+
-+// Define different ADSL training modes.
-+//Defintions as per new host interface.
-+#define NO_MODE 0
-+#define GDMT_MODE 2
-+#define GLITE_MODE 4
-+#define ADSL2_MODE 8
-+#define ADSL2_DELT (ADSL2_MODE+1)
-+#define ADSL2PLUS_MODE 16
-+#define ADSL2PLUS_DELT (ADSL2PLUS_MODE+1)
-+#define READSL2_MODE 32
-+#define READSL2_DELT (READSL2_MODE+1)
-+#define T1413_MODE 128
-+#define MULTI_MODE 255 // all possible bits are set in the bit field
-+
-+// Define the reason for dropping the connection
-+
-+enum
-+{
-+ REASON_LOS = 0x01,
-+ REASON_DYING_GASP = 0x02,
-+ REASON_USCRCERR = 0x04,
-+ REASON_MARGIN_DROP = 0x08
-+};
-+
-+
-+// ----------------------------------------------------
-+// Begin modem state bit field definitions - DSP write.
-+// ----------------------------------------------------
-+
-+// BitField1 for initial states and G.hs states.
-+// If more values need to be added, they will be added at the end (up to 32 total entries). However, if this causes
-+// the state transitions to tick off out of normal bit order, then the C code will have to be re-written
-+// that causes the proper values to be entered into the modem state bit fields.
-+typedef enum
-+{
-+ ZERO_STATE1 = 0,
-+ RTEST = 0x1,
-+ RIDLE = 0x2,
-+ RINIT = 0x4,
-+ RRESET = 0x8,
-+ GNSFLR = 0x10,
-+ GTONE = 0x20,
-+ GSILENT = 0x40,
-+ GNEGO = 0x80,
-+ GFAIL = 0x100,
-+ GACKX = 0x200,
-+ GQUIET2 = 0x400
-+} DEV_HOST_stateBitField1_t; // this enum should only have 32 bit entries in it. Add another enum if you need more.
-+
-+// BitField2 for T1.413 states and for the rest of the modem states (so far)
-+// If more values need to be added, they will be added at the end (up to 32 total entries). However, if this causes
-+// the state transitions to tick off out of normal bit order, then the C code will have to be re-written
-+// that causes the proper values to be entered into the modem state bit fields.
-+typedef enum
-+{
-+ ZERO_STATE2 = 0,
-+ TNSFLR = 0x1,
-+ TACTREQ = 0x2,
-+ TACTMON = 0x4,
-+ TFAIL = 0x8,
-+ TACKX = 0x10,
-+ TQUIET2 = 0x20,
-+ RQUIET2 = 0x40,
-+ RREVERB1 = 0x80,
-+ RQUIET3 = 0x100,
-+ RECT = 0x200,
-+ RREVERB2 = 0x400,
-+ RSEGUE1 = 0x800,
-+ RREVERB3 = 0x1000,
-+ RSEGUE2 = 0x2000,
-+ RRATES1 = 0x4000,
-+ RMSGS1 = 0x8000,
-+ RMEDLEY = 0x10000,
-+ RREVERB4 = 0x20000,
-+ RSEGUE3 = 0x40000,
-+ RMSGSRA = 0x80000,
-+ RRATESRA = 0x100000,
-+ RREVERBRA = 0x200000,
-+ RSEGUERA = 0x400000,
-+ RMSGS2 = 0x800000,
-+ RRATES2 = 0x1000000,
-+ RREVERB5 = 0x2000000,
-+ RSEGUE4 = 0x4000000,
-+ RBNG = 0x8000000,
-+ RREVERB6 = 0x10000000,
-+ RSHOWTIME = 0x20000000
-+} DEV_HOST_stateBitField2_t; // this enum should only have 32 bit entries in it. Add another enum if you need more.
-+
-+// BitField3 for ADSL2 states
-+// If more values need to be added, they will be added at the end (up to 32 total entries). However, if this causes
-+// the state transitions to tick off out of normal bit order, then the C code will have to be re-written
-+// that causes the proper values to be entered into the modem state bit fields.
-+typedef enum
-+{
-+ ZERO_STATE3 = 0,
-+ G2QUIET1 = 0x1,
-+ G2COMB1 = 0x2,
-+ G2QUIET2 = 0x4,
-+ G2COMB2 = 0x8,
-+ G2ICOMB1 = 0x10,
-+ G2LINEPROBE = 0x20,
-+ G2QUIET3 = 0x40,
-+ G2COMB3 = 0x80,
-+ G2ICOMB2 = 0x100,
-+ G2RMSGFMT = 0x200,
-+ G2RMSGPCB = 0x400,
-+ G2REVERB1 = 0x800,
-+ G2QUIET4 = 0x1000,
-+ G2REVERB2 = 0x2000,
-+ G2QUIET5 = 0x4000,
-+ G2REVERB3 = 0x8000,
-+ G2ECT = 0x10000,
-+ G2REVERB4 = 0x20000,
-+ G2SEGUE1 = 0x40000,
-+ G2REVERB5 = 0x80000,
-+ G2SEGUE2 = 0x100000,
-+ G2RMSG1 = 0x200000,
-+ G2MEDLEY = 0x400000,
-+ G2EXCHANGE = 0x800000,
-+ G2RMSG2 = 0x1000000,
-+ G2REVERB6 = 0x2000000,
-+ G2SEGUE3 = 0x4000000,
-+ G2RPARAMS = 0x8000000,
-+ G2REVERB7 = 0x10000000,
-+ G2SEGUE4 = 0x20000000
-+} DEV_HOST_stateBitField3_t; // this enum should only have 32 bit entries in it. Add another enum if you need more.
-+
-+// BitField4 for ADSL2 diag. states
-+// If more values need to be added, they will be added at the end (up to 32 total entries). However, if this causes
-+// the state transitions to tick off out of normal bit order, then the C code will have to be re-written
-+// that causes the proper values to be entered into the modem state bit fields.
-+typedef enum
-+{
-+ ZERO_STATE4 = 0,
-+ GDSEGUE1 = 0x1,
-+ GDREVERB5 = 0x2,
-+ GDSEGUE2 = 0x4,
-+ GDEXCHANGE = 0x8,
-+ GDSEGUELD = 0x10,
-+ GDRMSGLD = 0x20,
-+ GDQUIET1LD = 0x40,
-+ GDQUIET2LD = 0x80,
-+ GDRACK1 = 0x100,
-+ GDRNACK1 = 0x200,
-+ GDQUIETLAST = 0x400
-+} DEV_HOST_stateBitField4_t; // this enum should only have 32 bit entries in it. Add another enum if you need more.
-+
-+// This struct collects all of the bitfield types listed above for the modem state bit field(s)
-+typedef struct
-+{
-+ DEV_HOST_stateBitField1_t bitField1; // this is the first modem state bit field (mostly init. and G.hs)
-+ DEV_HOST_stateBitField2_t bitField2; // this is the second modem state bit field (T1.413 and G.dmt)
-+ DEV_HOST_stateBitField3_t bitField3; // this is the third modem state bit field (ADSL2)
-+ DEV_HOST_stateBitField4_t bitField4; // this is the fourth modem state bit field (ADSL2 diag.)
-+} DEV_HOST_modemStateBitField_t;
-+
-+
-+// -----------------------------------------------
-+// Begin NegoPara message definitions - DSP write.
-+// -----------------------------------------------
-+
-+typedef struct
-+{
-+ UINT8 trainMode; // Train mode selected. See training modes defined above.
-+ UINT8 bDummy1; // dummy byte for explicit 32-bit alignment
-+ UINT16 lineLength; // Contains loop length estimate. Accuracy w/i 500 ft. LSbit = 1 for straight loop, = 0 for bridge tap
-+ UINT32 atucVendorId; // Pass the vendor id of the CO to the host
-+ UINT8 cMsgs1[8]; // CMsgs1 and CMSGPCB
-+ UINT16 adsl2DSRate; //
-+ UINT8 cRates2; //
-+ UINT8 rRates2; //
-+ UINT8 rRates1[4][11]; //
-+ UINT8 cMsgs2[4]; //
-+ UINT8 cRates1[4][30]; //
-+ UINT8 rMsgs2[4]; //
-+ UINT16 adsl2USRate; //
-+ UINT8 atucGhsRevisionNum; // Pass the G.hs Revision number of the CO to the host
-+ UINT8 reserved1; //
-+ PUINT8 *adsl2DeltMsgs_p; // This pointer to a pointer passes the address of the globalvar.pString, which is also
-+ // a pointer list of pointers. It will be used to pass all the new ADSL2 DELT messages to
-+ // host side. This is for ACT.
-+} DEV_HOST_dspWrNegoParaDef_t;
-+
-+
-+// ----------------------------------------------------
-+// Begin OAM NegoPara message definitions - Host write.
-+// ----------------------------------------------------
-+
-+// OAM Feature bit fields.
-+//
-+// Bit 0 - Enable auto retrain of modem
-+// Bit 1 - Detect and report TC sync to host
-+// Bit 2-31 - Reserved
-+
-+#define DEV_HOST_AUTORETRAIN_ON 0x00000001
-+#define DEV_HOST_TC_SYNC_DETECT_ON 0x00000002
-+
-+#define DEV_HOST_AUTORETRAIN_MASK 0x00000001
-+#define DEV_HOST_TC_SYNC_DETECT_MASK 0x00000002
-+#define DEV_HOST_EOCAOC_INTERRUPT_MASK 0x00000004
-+#define DEV_HOST_CONS_DISP_DISABLE_MASK 0x00000008
-+#define DEV_HOST_GHSMSG_INTERRUPT_MASK 0x00000010
-+
-+typedef struct
-+{
-+ UINT8 stdMode; // Desired train mode. See training modes defined above.
-+ UINT8 ghsSequence; // Selected G.hs session as shown in Appendix 1
-+ UINT8 usPilotFlag; // Value of 1 indicates transmit an upstream pilot on bin 16
-+ UINT8 bDummy1; // dummy byte for 32-bit alignment
-+ UINT8 rMsgs1[38]; // RMSG-1(6) and RMSG_PCB (38)
-+ UINT8 bDummy2[2]; // dummy bytes for 32-bit alignment
-+ UINT32 oamFeature; // 32 bit wide bit field to set OAM-specific features.
-+ SINT8 marginThreshold; // Threshold for margin reporting
-+ UINT8 hostFixAgc; // flag to force datapump to bypass AGC training and use the following values
-+ UINT8 hostFixEqualizer; // forced analog equalizer value used during AGC training when hostfix_agc is on
-+ UINT8 hostFixPga1; // forced pga1 value used during AGC training when hostFixAgc is on
-+ UINT8 hostFixPga2; // forced pga2 value used during AGC training when hostFixAgc is on
-+ UINT8 hostFixPga3; // forced pga3 value used during AGC training when hostFixAgc is on
-+ UINT8 marginMonitorShwtme; // margin monitoring flag (during showtime)
-+ UINT8 marginMonitorTrning; // margin monitoring flag (during training)
-+ UINT8 disableLosAlarm; // flag to disable training based on los
-+ UINT8 usCrcRetrain; // flag to disable retrain due to excessive USCRC
-+ UINT8 t1413VendorId[2]; // Vendor ID used for T1.413 trainings
-+ UINT8 gdmtVendorId[8]; // Vendor ID used for G.dmt trainings (ITU VendorID)
-+ UINT8 missingTones[64]; // 64 element array to define missing tones for TX_MEDLEY and TX REVERB tests
-+ UINT32 missingToneDsAddr; // Address given to DSP for tones to be switched off in DS direction
-+ UINT8 dsToneTurnoff_f; // This flag controls the DS tone turn off logic
-+ UINT8 reserved1; // Dummy bytes
-+ UINT8 reserved2; // Dummy bytes
-+ UINT8 reserved3; // Dummy bytes
-+} DEV_HOST_oamWrNegoParaDef_t;
-+
-+
-+// ----------------------------------------
-+// Begin Rate-adaptive message definitions.
-+// ----------------------------------------
-+
-+// The four values below can never be changed (for host intf. backwards compatibility)
-+#define DEV_HOST_RMSGSRA_LENGTH 10
-+#define DEV_HOST_RRATESRA_LENGTH 1
-+#define DEV_HOST_CRATESRA_LENGTH 120
-+#define DEV_HOST_CMSGSRA_LENGTH 6
-+
-+typedef struct
-+{
-+ UINT8 rRatesRaString[DEV_HOST_RRATESRA_LENGTH+3];
-+ UINT8 rMsgsRaString[DEV_HOST_RMSGSRA_LENGTH+2];
-+ UINT8 cMsgsRaString[DEV_HOST_CMSGSRA_LENGTH+2];
-+} DEV_HOST_raMsgsDef_t;
-+
-+
-+// ----------------------------------------------
-+// Begin superframe cnts definitions - DSP write.
-+// ----------------------------------------------
-+
-+#define DEV_HOST_FRAMES_PER_SUPER 68
-+#define DEV_HOST_SUPERFRAMECNTDSTRM 0
-+#define DEV_HOST_SUPERFRAMECNTUSTRM 4
-+
-+// Although only the least significant 8 bits should be used as an
-+// unsigned char for computing the bitswap superframe number, a
-+// full 32 bit counter is provided here in order to have an
-+// accurate indicator of the length of time that the modem has
-+// been connected. This counter will overflow after 2.35 years
-+// of connect time.
-+
-+typedef struct
-+{
-+ UINT32 wSuperFrameCntDstrm;
-+ UINT32 wSuperFrameCntUstrm;
-+} DEV_HOST_dspWrSuperFrameCntDef_t;
-+
-+
-+// --------------------------------
-+// Begin ATUR/ATUC msg definitions.
-+// --------------------------------
-+
-+// Grouping used by the DSP to simplify parameter passing.
-+// All of these are written by the DSP.
-+
-+typedef struct
-+{
-+ UINT16 vendorId; // TI's vendor ID = 0x0004; Amati's vendor ID = 0x0006
-+ UINT8 versionNum; // T1.413 issue number
-+ UINT8 rateAdapt; // 0 = fix rate (Default); 1= adaptive rate
-+ UINT8 trellis; // 0 = disable trellis(default); 1 = enable trellis
-+ UINT8 echoCancelling; // 0 = disable echo cancelling; 1 = enable echo cancelling(default)
-+ UINT8 maxBits; // value range: 0-15; default = 15
-+ UINT8 maxPsd; //
-+ UINT8 actualPsd; //
-+ UINT8 maxIntlvDepth; // 0, 1, 2, or 3 for 64, 128, 256, or 512 max depth
-+ UINT8 framingMode; // 0 for asynchronous, 1 for synchronous full overhead
-+ // 2 for reduced overhead, 3 for merged reduced overhead DSP write.
-+ UINT8 maxFrameMode; // maximum framing mode desired. Nor 0 or 3.
-+ SINT16 targetMargin; //
-+ SINT16 maxAllowedMargin; //
-+ SINT16 minRequiredMargin; //
-+ SINT16 maxTotBits; //
-+ UINT8 grossGain; //
-+ UINT8 ntr; // Enable/disable NTR support
-+ SINT16 loopAttn; // Loop Attenuation
-+ UINT8 vendorRevisionNumber; // Reported Vendor Revision Number
-+ UINT8 reserved1; // for 32-bit alignment
-+ UINT8 reserved2; // for 32-bit alignment
-+ UINT8 reserved3; // for 32-bit alignment
-+} DEV_HOST_msg_t;
-+
-+
-+// --------------------------------------
-+// Begin bits and gains table definitions
-+// --------------------------------------
-+
-+typedef struct
-+{
-+ PUINT8 aturBng_p; // pointer to ATU-R bits and gains table
-+ PUINT8 atucBng_p; // pointer to ATU-C bits and gains table
-+ PUINT8 bitAllocTblDstrm_p; // pointer to Downstream Bit Allocation table
-+ PUINT8 bitAllocTblUstrm_p; // pointer to Upstream Bit Allocation table
-+ PSINT8 marginTblDstrm_p; // pointer to Downstream Margin table
-+} DEV_HOST_dspWrSharedTables_t;
-+
-+
-+// ----------------------------------------
-+// Begin datapump code overlay definitions.
-+// ----------------------------------------
-+
-+#define DEV_HOST_PAGE_NUM 4 // number of overlay pages
-+
-+// Never access a struct of this typedef directly. Always go through the DEV_HOST_olayDpDef_t struct
-+typedef struct
-+{
-+ UINT32 overlayHostAddr; // source address in host memory
-+ UINT32 overlayXferCount; // number of 32bit words to be transfered
-+ UINT32 overlayDspAddr; // destination address in DSP's PMEM
-+} DEV_HOST_olayDpPageDef_t;
-+
-+
-+typedef struct
-+{
-+ UINT32 overlayStatus; // Status of current overlay to DSP PMEM
-+ UINT32 overlayNumber; // DSP PMEM overlay page number
-+ UINT32 overlayState; // Indicates whether current state is an overlay state
-+ DEV_HOST_olayDpPageDef_t *olayDpPage_p[DEV_HOST_PAGE_NUM]; // Def's for the Pages
-+} DEV_HOST_olayDpDef_t;
-+
-+
-+// -------------------------
-+// Begin ATM-TC definitions.
-+// -------------------------
-+
-+// TC cell states.
-+typedef enum
-+{
-+ TC_HUNT,
-+ TC_PRESYNC,
-+ TC_SYNC
-+} DEV_HOST_cellDelinState_t;
-+
-+
-+// --------------------------------------------
-+// Begin datapump error/statistics definitions.
-+// --------------------------------------------
-+
-+// Never access a struct of this typedef directly. Always go through the DEV_HOST_modemStatsDef_t struct.
-+typedef struct
-+{
-+ UINT32 crcErrors; // Num of CRC errored ADSL frames
-+ UINT32 fecErrors; // Num of FEC errored (corrected) ADSL frames
-+ UINT32 ocdErrors; // Out of Cell Delineation
-+ UINT32 ncdError; // No Cell Delineation
-+ UINT32 lcdErrors; // Loss of Cell Delineation (within the same connection)
-+ UINT32 hecErrors; // Num of HEC errored ADSL frames
-+} DEV_HOST_errorStats_t;
-+
-+
-+typedef struct
-+{
-+ DEV_HOST_errorStats_t *usErrorStatsIntlv_p; // us error stats - interleave path
-+ DEV_HOST_errorStats_t *dsErrorStatsIntlv_p; // ds error stats - interleave path
-+ DEV_HOST_errorStats_t *usErrorStatsFast_p; // us error stats - fast path
-+ DEV_HOST_errorStats_t *dsErrorStatsFast_p; // ds error stats - fast path
-+ UINT32 losErrors; // Num of ADSL frames where loss-of-signal
-+ UINT32 sefErrors; // Num of severly errored ADSL frames - LOS > MAXBADSYNC ADSL frames
-+ UINT32 farEndLosErrors; // Number of reported LOS defects by the CO.
-+ UINT32 farEndRdiErrors; // Number of reported RDI defects by the CO.
-+} DEV_HOST_modemStatsDef_t;
-+
-+// Never access a struct of this typedef directly. Always go through the DEV_HOST_atmStats_t struct.
-+typedef struct
-+{
-+ UINT32 goodCount; // Upstream Good Cell Count
-+ UINT32 idleCount; // Upstream Idle Cell Count
-+} DEV_HOST_usAtmStats_t;
-+
-+// Never access a struct of this typedef directly. Always go through the DEV_HOST_atmStats_t struct.
-+typedef struct
-+{
-+ UINT32 goodCount; // Downstream Good Cell Count
-+ UINT32 idleCount; // Downstream Idle Cell Count
-+ UINT32 badHecCount; // Downstream Bad Hec Cell Count
-+ UINT32 ovflwDropCount; // Downstream Overflow Dropped Cell Count
-+ DEV_HOST_cellDelinState_t delineationState; // Indicates current delineation state
-+} DEV_HOST_dsAtmStats_t;
-+
-+
-+typedef struct
-+{
-+ DEV_HOST_usAtmStats_t *us0_p; // US ATM stats for TC channel 0
-+ DEV_HOST_dsAtmStats_t *ds0_p; // DS ATM stats for TC channel 0
-+ DEV_HOST_usAtmStats_t *us1_p; // US ATM stats for TC channel 1
-+ DEV_HOST_dsAtmStats_t *ds1_p; // DS ATM stats for TC channel 1
-+} DEV_HOST_atmStats_t;
-+
-+
-+// ----------------------
-+// Begin EOC definitions.
-+// ----------------------
-+
-+// The two values below can never change (for backwards compatibility of host intf.)
-+#define DEV_HOST_EOCREG4LENGTH 32
-+#define DEV_HOST_EOCREG5LENGTH 32
-+
-+typedef struct
-+{
-+ UINT8 eocReg4[DEV_HOST_EOCREG4LENGTH]; // Host/Dsp Write, vendor specific EOC Register 4
-+ UINT8 eocReg5[DEV_HOST_EOCREG5LENGTH]; // Host/Dsp Write, vendor specific EOC Register 5
-+ UINT8 vendorId[8]; // Host write
-+ UINT8 revNumber[4]; // Host, ATU-R Revision Number
-+ UINT8 serialNumber[32]; // Host write
-+ UINT8 eocReg4Length; // Host Write, valid length for EOC register 4
-+ UINT8 eocReg5Length; // Host Write, valid length for EOC register 5
-+ UINT8 dummy[2]; // dummy bytes for 32-bit alignment
-+ UINT32 eocModemStatusReg; // Dsp Write, status bits to host
-+ UINT8 lineAtten; // Dsp Write, line attenuation in 0.5 db step
-+ SINT8 dsMargin; // DSP Write, measured DS margin
-+ UINT8 aturConfig[30]; // Dsp Write, also used by EOC for ATUR Configuration
-+} DEV_HOST_eocVarDef_t;
-+
-+typedef struct
-+{
-+ UINT16 endEocThresh; // Host Write, end of Clear EOC stream threshold
-+ UINT16 dummy; // dummy value to fill gap
-+ UINT32 dropEocCount; // Dsp Write, counter of dropped Clear EOC bytes
-+ UINT16 eocRxLength; // Host/DSP write, number of valid Rx Clear EOC bytes
-+ UINT16 eocTxLength; // Host/DSP write, number of valid Tx Clear EOC bytes
-+ UINT8 eocRxBuf[64]; // Dsp Write, Buffer for receiving Rx Clear EOC bytes
-+ UINT8 eocTxBuf[64]; // Host Write, Buffer for writing Tx Clear EOC bytes
-+} DEV_HOST_clearEocVarDef_t;
-+
-+
-+// -----------------------------------
-+// Begin CO profile Definitions.
-+// -----------------------------------
-+
-+/* struct size must be a word size */
-+typedef struct
-+{
-+
-+ SINT16 devCodecRxdf4Coeff[12] ; // (BOTH) IIR Coefficients
-+ SINT16 devCodecTxdf2aCoeff[64] ; // (BOTH) FIR filter coefficients
-+ SINT16 devCodecTxdf2bCoeff[64] ; // (BOTH) FIR filter coefficients
-+ SINT16 devCodecTxdf1Coeff[12] ; // (BOTH) IIR filter coefficients
-+ UINT16 devCodecTxDf2aDen; // (BOTH) denominator for IIR filter
-+ UINT16 devCodecTxDf2bDen; // (BOTH) denominator for IIR filter
-+ SINT16 ctrlMsmSpecGain[32]; // (BOTH)
-+
-+ SINT16 phyBitaRateNegIntNoTrellis ; // (BOTH) value to set
-+ SINT16 phyBitaRateNegIntTrellis ; // (BOTH) value to set
-+ SINT16 phyBitaRateNegFastNoTrellis ; // (BOTH) value to set
-+ SINT16 phyBitaRateNegFastTrellis ; // (BOTH) value to set
-+ SINT16 phyBitaRsFlag ; // (BOTH)
-+ SINT16 phyBitaFirstSubChannel ; // (BOTH)
-+ SINT16 phyBitaMaxFineGainBump; // max fine gain bump
-+ SINT16 phyBitaFineGainReduction; // fine gain reduction
-+ SINT16 phyBitaMaxDownstreamPowerCutback; // max downstream power cutback
-+
-+ SINT16 phySigTxGainReductionAt0kft; // upstream power reduction at 0 kft.
-+
-+ SINT16 phyAgcPgaTarget ; // (BOTH) compare value
-+
-+ UINT16 imsg413TxRate ; // (BOTH) Tx rate
-+ SINT16 imsg413RsBytesAdjust ; // (BOTH) subtract value
-+ UINT16 imsg413PstringMask ; // (POTS) Or'ed into pString[RMSGS1_INDEX][1]
-+ SINT16 imsg413UsPilot ; // (BOTH)??
-+ UINT16 imsg413SkipPhaseOp ; // (POTS)
-+
-+ UINT16 ctrlMsmSensitivity1 ; // (BOTH) value to set
-+ UINT16 ctrlMsmTxPsdShape_f; // (BOTH) upstream spectral shaping flag
-+
-+ UINT16 ovhdAocUsBswapReq_f ; // (BOTH)value to set
-+ UINT16 ovhdAocScanMse_f ; // (BOTH)value to set
-+
-+ SINT16 phyRevFullFirstBin ; //
-+ SINT16 phyRevFullLastBin ; //
-+ SINT16 phyRevFirstBin ; //
-+ SINT16 phyRevLastBin ; //
-+ SINT16 phyMedFirstBin ; //
-+ SINT16 phyMedLastBin ; //
-+ SINT16 phyMedOptionalLastBin; // Medley last bin - optional
-+
-+ SINT16 phyEcDelayAdjustment; // Echo delay adjustment
-+ SINT16 bSwapThresholdUpdate; // bSwapThresholdUpdate
-+ SINT16 phyBitaFastPathExcessFineGainBump; // Used in phy_bita.c
-+ SINT16 phyBitaSkipGapAdjustment; // Used in phy_bita.c
-+ SINT16 usPilotInT1413ModeInMedley; // To send Upstream Pilot in medley in T1.413 mode.
-+
-+ UINT32 profileVendorId ; // vendor id
-+
-+} DEV_HOST_coData_t ;
-+
-+typedef struct
-+{
-+ DEV_HOST_coData_t * hostProfileBase_p; // base address of profile list
-+} DEV_HOST_profileBase_t ;
-+
-+
-+
-+// -----------------------------------
-+// Begin DSP/Host Mailbox Definitions.
-+// -----------------------------------
-+
-+// The 3 values below can never be decreased, only increased.
-+// If you increase one of the values, you must add more to the
-+// initializers in "dev_host_interface.c".
-+#define DEV_HOST_HOSTQUEUE_LENGTH 8
-+#define DEV_HOST_DSPQUEUE_LENGTH 8
-+#define DEV_HOST_TEXTQUEUE_LENGTH 8
-+
-+// Never access a struct of this typedef directly. Always go through the DEV_HOST_mailboxControl_t struct.
-+typedef struct
-+{
-+ UINT8 cmd;
-+ UINT8 tag;
-+ UINT8 param1;
-+ UINT8 param2;
-+} DEV_HOST_dspHostMsg_t;
-+
-+// Never access a struct of this typedef directly. Always go through the DEV_HOST_mailboxControl_t struct.
-+typedef struct
-+{
-+ UINT32 msgPart1;
-+ UINT32 msgPart2;
-+} DEV_HOST_textMsg_t;
-+
-+// The structure below has been ordered so that the Host need only write to
-+// even byte locations to update the indices.
-+
-+// The Buffer pointers in the struct below each point to a different
-+// struct array that has an array size of one of the matching Queue Length
-+// values defined above (DEV_HOST_HOSTQUEUE_LENGTH, DEV_HOST_DSPQUEUE_LENGTH,
-+// and DEV_HOST_TEXTQUEUE_LENGTH).
-+
-+typedef struct
-+{
-+ UINT8 hostInInx; // Host write, DSP must never write except for init
-+ UINT8 bDummy0[3]; // dummy bytes for explicit 32-bit alignment
-+ UINT8 hostOutInx; // DSP write, Host must never write
-+ UINT8 bDummy1[3]; // dummy bytes for explicit 32-bit alignment
-+ UINT8 dspOutInx; // Host write, DSP must never write except for init
-+ UINT8 bDummy2[3]; // dummy bytes for explicit 32-bit alignment
-+ UINT8 dspInInx; // DSP write, Host must never write
-+ UINT8 bDummy3[3]; // dummy bytes for explicit 32-bit alignment
-+ UINT8 textInInx; // DSP write, Host must never write
-+ UINT8 bDummy4[3]; // dummy bytes for explicit 32-bit alignment
-+ UINT8 textOutInx; // Host write, DSP must never write except for init
-+ UINT8 bDummy5[3]; // dummy bytes for explicit 32-bit alignment
-+ DEV_HOST_dspHostMsg_t *hostMsgBuf_p; // pointer to Host Mailbox Buffer (Host writes the buffer)
-+ DEV_HOST_dspHostMsg_t *dspMsgBuf_p; // pointer to DSP Mailbox Buffer (DSP writes the buffer)
-+ DEV_HOST_textMsg_t *textMsgBuf_p; // pointer to Text Mailbox Buffer (DSP writes the buffer)
-+} DEV_HOST_mailboxControl_t;
-+
-+
-+//-----------------------------------------
-+// Physical layer performance parameter
-+//-----------------------------------------
-+typedef struct
-+{
-+ SINT32 hybridCost[5]; // Cost functions for hybrids (0: none, 1-4 hybrid options)
-+ SINT32 usAvgGain; // upstream average gain in 20log10 (Q8)
-+ SINT32 dsAvgGain; // downstream average gain in 20log10 (Q8)
-+ UINT8 disableDspHybridSelect_f; // Allows host to disable the automatic hybrid selection by the DSP
-+ UINT8 hostSelectHybridNum; // DSP will use this hybrid number only if DSP Select is disabled (values: 1-4)
-+ UINT8 currentHybridNumUsed; // DSP indicates to the host the current hybrid number in use
-+ UINT8 reserved1; // reserved for future use
-+} DEV_HOST_phyPerf_t;
-+
-+
-+/***********************************************************
-+ * The 3 structures below are used only for analog
-+ * diagnostic functions originally defined in diag.h
-+ * Moved here by Carlos A. Perez under J. Bergsagel request
-+ ***********************************************************/
-+
-+/****************************************************************************/
-+/* Options for the Analog Diagnostic user input data structure */
-+/* (MUST be word aligned) */
-+/****************************************************************************/
-+typedef enum
-+{
-+ ZERO_DIAG_OPT = 0, // dummy value for zero place-holder
-+ NOISE_ONLY = 0x1, // diagnostic in noise only mode (on=1, off=0), disregard diagMode 0-4
-+ EXTERNAL_CO = 0x2, // operates against external CO (external=1, internal=0)
-+ DIAG_AGC = 0x4, // agc selects gains control (agc=1, manual=0)
-+ CROSSTALK_TEQ = 0x8, // crosstalk selects teq (crosstalk=1, manual=0)
-+ LEAKY_TEQ = 0x10, // use leaky teq (on=1, off=0)
-+ AUX_AMPS = 0x20, // auxamps (on=1, off=0)
-+ BW_SELECT = 0x40, // change rxhpf/txlpf fc (modify=1, default=0)
-+ DIAG_HYB_SELECT = 0x80, // change hybrid (modify=1, default=0)
-+ POWER_DOWN_CDC = 0x100, // power down codec (power down=1, no power down=0)
-+ ISDN_OP_MODE = 0x200, // operation mode (pots=0, isdn=1)
-+ BYPASS_RXAF2 = 0x400, // Bypass except RXAF2 (on=1, off = 0)
-+ TX_TEST_CONT = 0x800, // Continuous tx test (on=1, off=0)
-+ TX_SCALE_MTT = 0x1000 // Scale tx signal for Mtt test (on=1, off=0)
-+} DEV_HOST_diagAnlgOptionsVar_t;
-+
-+/****************************************************************************/
-+/* Analog Diagnostic user input data structure (MUST be word align) */
-+/****************************************************************************/
-+
-+typedef struct
-+{
-+ DEV_HOST_diagAnlgOptionsVar_t diagOption; // Other diagnostic optional settings
-+
-+ UINT8 diagMode; // Performance diagnostic mode
-+ UINT8 txMode; // transmit mode
-+ UINT8 rxMode; // receive mode
-+ UINT8 teqSp; // Select teq starting pt
-+ UINT8 txDf1; // see dev_codec_filters.c and
-+ UINT8 txDf2a; // dev_codec.h for filter coefficients
-+ UINT8 txDf2b;
-+ UINT8 rxDf4;
-+
-+ UINT16 codingGain256Log2; // 256*Log2(coding gain)
-+ UINT16 noiseMargin256Log2; // 256*Log2(noise margin)
-+
-+ UINT16 rxPga1; // PGA1
-+ UINT16 rxPga2; // PGA2
-+ UINT16 rxPga3; // PGA3
-+ UINT16 anlgEq; // AEQ settings (dB/MHz)
-+
-+ SINT8 pilotBin; // Select pilot subchannel
-+ SINT8 txSwGain; // manual set for bridge tap loop
-+ SINT8 tdw1Len; // TDW1 length - 0,2,4,8,16
-+ SINT8 tdw2Len; // TDW2 length - 0,2,4,8,16
-+
-+ UINT8 teqEcMode; // TEQ/EC mode
-+ UINT8 hybrid;
-+ UINT8 txAttn; // Codec Tx attenuation
-+ UINT8 txGain; // Codec Tx gain (Sangam only)
-+
-+ SINT16 txPda; //Codec Tx Digital gain/attn
-+ UINT8 txTone[MAX_NUM_UPBINS]; // Turning tones on/off
-+ // Still govern by lastbin
-+ UINT16 rsvd; //for 32 bits alignment
-+}DEV_HOST_diagAnlgInputVar_t;
-+
-+/****************************************************************************/
-+/* Analog diagnostic output data structure */
-+/****************************************************************************/
-+typedef struct
-+{
-+ PSINT32 rxSnr_p[2]; // Pointer to estimated snr
-+ PSINT32 rxSubChannelCapacity_p[2]; // Pointer to estimated subchan capacity
-+ PSINT32 rxSignalPower_p[2]; // Pointer to estimated signal power
-+ PSINT32 rxNoisePower_p[2]; // Pointer to estimated noise power
-+ PSINT32 rxAvg_p; // Pointer to average of rcvd signal
-+ SINT32 chanCapacity[2] ; // Channel total capacity
-+ SINT32 dataRate[2]; // Modem data rate (SNR)
-+ SINT32 avgNoiseFloor; // Average noise floor
-+ SINT16 snrGap256Log2; // 256*Log2(snr gap)
-+ SINT16 rxPga1; // PGA1
-+ SINT16 rxPga2; // PGA2
-+ SINT16 rxPga3; // PGA3
-+ SINT16 anlgEq; // AEQ settings (dB/MHz)
-+ SINT16 rsvd;
-+}DEV_HOST_diagAnlgOutputVar_t;
-+
-+
-+// Bit field structure that allows the host to mask off interrupt sources for possible DSP-to-Host interrupts.
-+// Each bit represents a possible source of interrupts in the DSP code that might cause a DSP-to-Host
-+// interrupt to occur.
-+// This mask structure is not intended to show how interrupt sources in the DSP code correspond to the actual
-+// DSP-to-Host interrupts. There could be multiple ways to cause an interrupt in the DSP code, but they all
-+// eventually tie into one of the three possible DSP-to-Host interrupts.
-+// The host should write a "1" to an individual bit when it wants to mask possible interrupts from that source.
-+
-+// enum that represents individual bits in maskBitField1
-+typedef enum
-+{
-+ ZERO_MASK1 = 0, // dummy value for zero place-holder
-+ DSP_MSG_BUF = 0x1, // mask interrupts due to DSP-to-Host message mailbox updates
-+ STATE_BIT_FIELD = 0x2, // mask interrupts due to changes in the modem state bit fields
-+ DSP_HEARTBEAT = 0x4 // mask interrupts for the DSP hearbeat
-+} DEV_HOST_intMask1_t; // this enum should only have 32 values in it (maximum).
-+
-+// Add more "mask bit fields" at the end of this struct if you need more mask values
-+typedef struct
-+{
-+ DEV_HOST_intMask1_t maskBitField1;
-+} DEV_HOST_hostInterruptMask_t; // this struct should only have 32 bits in it.
-+
-+// Bit field structure that allows the host to determine the source(s) of DSP-to-Host interrupts in case
-+// several of the interrupt sources get combined onto a single DSP-to-Host interrupt.
-+// DSP will set each bit to a "1"as an interrupt occurs.
-+// Host has the reponsibility to clear each bit to a "0" after it has determined the source(s) of interrupts.
-+// Each source bit field in this struct will use the same enum typedef that matches the corresponding mask
-+// bit field in "DEV_HOST_hostInterruptMask_t"
-+typedef struct
-+{
-+ DEV_HOST_intMask1_t sourceBitField1;
-+} DEV_HOST_hostInterruptSource_t;
-+
-+
-+// --------------------------
-+// Begin bitswap definitions.
-+// --------------------------
-+
-+// bitSwapSCnt contains the superframe to perform bit swap
-+// The entries must be ordered so that the first group only contains bit change commands
-+// The other entries may contain power adjustment instructions and must be
-+// written with something. NOP (0) is an available instruction.
-+typedef struct
-+{
-+ PUINT8 fineGains_p; // pointer to bng string, needed to check fine gains for powerswap
-+ UINT8 bitSwapNewIndices[6]; // Bin before bitSwapBin to process
-+ UINT8 bitSwapCmd[6]; // Bitswap command for bitSwapBin
-+ UINT8 bitSwapBin[6]; // bin to modify
-+ UINT8 bitSwapSCnt; // Superframe count on which to perform bitswap
-+ UINT8 bitSwapEnabled; // bitSwapEnabled
-+} DEV_HOST_dspBitSwapDef_t;
-+
-+
-+// ---------------------------
-+// Begin ATM BERT definitions.
-+// ---------------------------
-+
-+// Structure used for ATM Idle Cells based bit error rate computation.
-+typedef struct
-+{
-+ UINT8 atmBertFlag; // Feature enable/disable flag (Host write)
-+ UINT8 dummy1;
-+ UINT8 dummy[2]; // Dummy bytes for 32-bit alignment
-+ UINT32 bitCountLow; // Low part of 64-bit BERT bit count (DSP write)
-+ UINT32 bitCountHigh; // High part of 64-bit BERT bit count (DSP write)
-+ UINT32 bitErrorCountLow; // Low part of 64-bit BERT bit count (DSP write)
-+ UINT32 bitErrorCountHigh;// High part of 64-bit BERT bit count (DSP write)
-+} DEV_HOST_atmDsBert_t;
-+
-+
-+// ------------------------------------
-+// Misc. modem environment definitions.
-+// ------------------------------------
-+
-+
-+typedef struct
-+{
-+ SINT16 subStateIndex; // Index that signifies datapump substate. (DSP write)
-+ UINT8 externalBert; // Turn on/off external BERT interface. 0 = OFF; 1 = ON. (Host write)
-+ UINT8 usBertPattern; // BERT pattern for US TX data. 0 = 2^15-1; 1 = 2^23-1. (Host write)
-+ UINT8 overrideDslLinkLed_f; // Overrides DSP operation of the DSL_LINK LED. (Host write)
-+ // 0 = DSP is in control; 1 = Host is in control.
-+ UINT8 dslLinkLedState_f; // DSL_LINK LED state when override flag has been set. (Host write)
-+ // DSL_LINK LED will be updated with this value once per frame.
-+ // LED is active-low: 0 = ON, 1 = OFF.
-+ UINT8 overrideDslActLed_f; // Overrides DSP operation of the DSL_ACT LED. (Host write)
-+ // 0 = DSP is in control; 1 = Host is in control.
-+ UINT8 dslActLedState_f; // DSL_ACT LED state when override flag has been set. (Host write)
-+ // DSL_ACT LED will be updated with this value once per frame.
-+ // LED is active-low: 0 = ON, 1 = OFF.
-+ UINT8 dGaspLprIndicator_f; // How LPR signal (GPIO[0]) is to be interpreted. (Host write)
-+ // 0 = LPR is active-low; 1 = LPR is active-high.
-+ UINT8 overrideDspLprGasp_f; // Overrides DSP detection of LPR signal to send out DGASP. (Host write)
-+ // 0 = DSP detects LPR; 1 = Host detects LPR and sends "HOST_DGASP" to DSP.
-+ UINT8 pcbEnabled; // DS power cut back
-+ UINT8 maxAvgFineGainCtrl_f; // If maxAvgFineGainCtrl_f == 0, then the datapump controls the maximum average fine gain value.
-+ // If maxAvgFineGainCtrl_f == 1, then the host controls the maximum average fine gain value.
-+ UINT32 reasonForDrop; // This field will tell the host what might be the reason for a dropped connection.
-+ SINT16 maxAverageFineGain; // When maxAvgFineGainCtrl_f == 1, the value in maxAverageFineGain is the maximum average fine gain level in 256log2 units.
-+ UINT8 reserved1; // These are for 32-bit alignment.
-+ UINT8 reserved2; // These are for 32-bit alignment.
-+} DEV_HOST_modemEnvPublic_t;
-+
-+
-+// -----------------------------
-+// Generic structure definition.
-+// -----------------------------
-+
-+typedef struct
-+{
-+ PSINT8 parameter1_p;
-+ PSINT16 parameter2_p;
-+ PSINT32 parameter3_p;
-+ PUINT8 parameter4_p;
-+ PUINT16 parameter5_p;
-+ PUINT32 parameter6_p;
-+} DEV_HOST_genericStructure_t;
-+
-+
-+// ------------------------------
-+// Begin G.hs buffer definitions.
-+// ------------------------------
-+
-+typedef struct
-+{
-+ UINT8 txBuf[64]; // G.hs xmt buffer
-+} DEV_HOST_ghsDspTxBufDef_t;
-+
-+
-+typedef struct
-+{
-+ UINT8 rxBuf[80]; // G.hs rcv buffer
-+} DEV_HOST_ghsDspRxBufDef_t;
-+
-+// -----------------------------------------
-+// Begin Constellation Display definitions.
-+// -----------------------------------------
-+
-+typedef struct
-+{
-+ UINT32 consDispStartAddr; // Host write
-+ UINT32 consDispCurrentAddr; // Host write
-+ UINT32 consDispBufLen; // Constellation Buffer Length
-+ UINT32 consDispBin; // Host write, DS band only
-+} DEV_HOST_consBufDef_t;
-+
-+typedef struct
-+{
-+ PSINT16 buffer1_p; //DSP write
-+ PSINT16 buffer2_p; //DSP write
-+} DEV_HOST_snrBuffer_t;
-+
-+// --------------------------------------------------------------------------------------
-+// Typedef to be used for the DEV_HOST_dspOamSharedInterface_s struct of pointers
-+// (this is used in dev_host_interface.c).
-+// NOTE: This struct of pointers is NEVER to be referenced anywhere else in the DSP code.
-+// IMPORTANT: Only pointers to other structs go into this struct !!
-+// --------------------------------------------------------------------------------------
-+typedef struct
-+{
-+ DEV_HOST_hostIntfcVersionDef_t *hostIntfcVersion_p;
-+ DEV_HOST_dspVersionDef_t *datapumpVersion_p;
-+ DEV_HOST_modemStateBitField_t *modemStateBitField_p;
-+ DEV_HOST_dspWrNegoParaDef_t *dspWriteNegoParams_p;
-+ DEV_HOST_oamWrNegoParaDef_t *oamWriteNegoParams_p;
-+ DEV_HOST_raMsgsDef_t *raMsgs_p;
-+ DEV_HOST_dspWrSuperFrameCntDef_t *dspWriteSuperFrameCnt_p;
-+ DEV_HOST_msg_t *atucMsg_p;
-+ DEV_HOST_msg_t *aturMsg_p;
-+ DEV_HOST_dspWrSharedTables_t *dspWrSharedTables_p;
-+ DEV_HOST_olayDpDef_t *olayDpParms_p;
-+ DEV_HOST_eocVarDef_t *eocVar_p;
-+ DEV_HOST_clearEocVarDef_t *clearEocVar_p;
-+ DEV_HOST_modemStatsDef_t *modemStats_p;
-+ DEV_HOST_atmStats_t *atmStats_p;
-+ DEV_HOST_mailboxControl_t *dspHostMailboxControl_p;
-+ DEV_HOST_phyPerf_t *phyPerf_p;
-+ DEV_HOST_diagAnlgInputVar_t *analogInputVar_p;
-+ DEV_HOST_diagAnlgOutputVar_t *analogOutputVar_p;
-+ DEV_HOST_hostInterruptMask_t *hostInterruptMask_p;
-+ DEV_HOST_profileBase_t *profileList_p;
-+ DEV_HOST_hostInterruptSource_t *hostInterruptSource_p;
-+ DEV_HOST_dspBitSwapDef_t *dspBitSwapDstrm_p;
-+ DEV_HOST_dspBitSwapDef_t *dspBitSwapUstrm_p;
-+ DEV_HOST_atmDsBert_t *atmDsBert_p;
-+ DEV_HOST_modemEnvPublic_t *modemEnvPublic_p;
-+ DEV_HOST_genericStructure_t *genericStructure1_p;
-+ DEV_HOST_genericStructure_t *genericStructure2_p;
-+ DEV_HOST_ghsDspTxBufDef_t *ghsDspTxBuf_p;
-+ DEV_HOST_ghsDspRxBufDef_t *ghsDspRxBuf_p;
-+ DEV_HOST_consBufDef_t *consDispVar_p;
-+ DEV_HOST_snrBuffer_t *snrBuffer_p;
-+} DEV_HOST_dspOamSharedInterface_t;
-+
-+
-+// ---------------------------------------------------------------------------------
-+// Typedef to be used for the pointer to the DEV_HOST_dspOamSharedInterface_s struct
-+// of pointers (this is used in dev_host_interface.c).
-+// ---------------------------------------------------------------------------------
-+typedef DEV_HOST_dspOamSharedInterface_t *DEV_HOST_dspOamSharedInterfacePtr_t;
-+
-+#endif
-diff -urN linux.old/drivers/atm/sangam_atm/dev_host_verdef.h linux.dev/drivers/atm/sangam_atm/dev_host_verdef.h
---- linux.old/drivers/atm/sangam_atm/dev_host_verdef.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dev_host_verdef.h 2005-08-23 04:46:50.091844608 +0200
-@@ -0,0 +1,102 @@
-+#ifndef __DEV_HOST_VERDEF_H__
-+#define __DEV_HOST_VERDEF_H__ 1
-+
-+//********************************************************************
-+//*
-+//* DMT-BASE ADSL MODEM PROGRAM
-+//* TEXAS INSTRUMENTS PROPRIETARTY INFORMATION
-+//* AMATI CONFIDENTIAL PROPRIETARY
-+//*
-+//* (c) Copyright April 1999, Texas Instruments Incorporated.
-+//* All Rights Reserved.
-+//*
-+//* Property of Texas Instruments Incorporated and Amati Communications Corp.
-+//*
-+//* Restricted Rights - Use, duplication, or disclosure is subject to
-+//* restrictions set forth in TI's and Amati program license agreement and
-+//* associated documentation
-+//*
-+//*********************************************************************
-+//*
-+//* FILENAME: dev_host_verdef.h
-+//*
-+//* ABSTRACT: This file defines the version structure
-+//*
-+//* TARGET: Non specific.
-+//*
-+//* TOOLSET: Non specific.
-+//*
-+//* ACTIVATION:
-+//*
-+//* HISTORY: DATE AUTHOR DESCRIPTION
-+//* 04/29/99 FLW Created
-+//* 01/17/00 Barnett Mod's in support of merging NIC
-+//* hardware rev 6/7 T1.413 codebases.
-+//* 01/21/00 Wagner derfmake mods
-+//* 05/11/00 Barnett hardware_rev is a 2 char string.
-+//* 07/24/00 Barnett Rework as part of host interface redesign.
-+//* 11/29/00 Hunt added chipset_id2
-+//* 03/30/01 Barnett Prefixed all public elements with DSPDP_.
-+//* This insures uniqueness of names that might
-+//* match host names by coincidence.
-+//* 03/30/01 Barnett Added DSPDP_Host_VersionDef to facilitate
-+//* representing a version id for the host i/f
-+//* separate from the firmware version id as
-+//* a courtesy to the host.
-+//* 07/23/01 JEB Changed name from verdef_u.h to dpsys_verdef.h
-+//* 04/12/02 Barnett Make timestamp unsigned 32-bit field.
-+//* Generalizes for all kinds of hosts.
-+//* 11/15/02 JEB Changed name from dpsys_verdef.h to dev_host_verdef.h
-+//* Updated structs according to coding guidelines
-+//* 12/16/02 JEB Renamed some struct elements for new usage in Ax7
-+//* 01/21/03 MCB Implemented Ax7 UNIT-MODULE modular software framework.
-+//* 03/19/03 JEB Added back in "bugFix" elements into each struct type.
-+//* Rearranged elements.
-+//*
-+//********************************************************************
-+
-+#include "env_def_typedefs.h"
-+
-+#define DSPDP_FLAVOR_NEWCODES 0xFF // Other values are valid old-style flavors
-+
-+// ------------------------------
-+// ------------------------------
-+// Begin DSP version definitions.
-+// ------------------------------
-+// ------------------------------
-+
-+typedef struct
-+{
-+ UINT32 timestamp; // Number of seconds since 01/01/1970
-+ UINT8 major; // Major "00".00.00.00 revision nomenclature
-+ UINT8 minor; // Minor 00."00".00.00 revision nomenclature
-+ UINT8 bugFix; // Bug Fix 00.00."00".00 revision nomenclature
-+ UINT8 buildNum; // Build Number 00.00.00."00" revision nomenclature
-+ UINT8 netService; // Network service identifier
-+ UINT8 chipsetGen; // chipset generation
-+ UINT8 chipsetId; // chipset identifier
-+ UINT8 chipsetId2; // second byte for "RV" chipset et al.
-+ UINT8 hardwareRev1; // hardware revision, 1st char
-+ UINT8 hardwareRev2; // hardware revision, 2nd char
-+ UINT8 featureCode; // feature code
-+ UINT8 dummy1; // dummy byte for explicit 32-bit alignment
-+} DEV_HOST_dspVersionDef_t;
-+
-+// -------------------------------
-+// -------------------------------
-+// Begin host version definitions.
-+// -------------------------------
-+// -------------------------------
-+
-+typedef struct
-+{
-+ UINT8 major; // Major "00".00.00.00 revision nomenclature
-+ UINT8 minor; // Minor 00."00".00.00 revision nomenclature
-+ UINT8 bugFix; // Bug Fix 00.00."00".00 revision nomenclature
-+ UINT8 buildNum; // Build Number 00.00.00."00" revision nomenclature
-+ UINT8 netService; // Network service identifier
-+ UINT8 dummy[3]; // dummy bytes for explicit 32-bit alignment
-+} DEV_HOST_hostIntfcVersionDef_t;
-+
-+
-+#endif // __DEV_HOST_VERDEF_H__
-diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_api.c linux.dev/drivers/atm/sangam_atm/dsl_hal_api.c
---- linux.old/drivers/atm/sangam_atm/dsl_hal_api.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_api.c 2005-08-23 04:46:50.095844000 +0200
-@@ -0,0 +1,3339 @@
-+/*******************************************************************************
-+* FILE PURPOSE: DSL Driver API functions for Sangam
-+*
-+********************************************************************************
-+* FILE NAME: dsl_hal_basicapi.c
-+*
-+* DESCRIPTION:
-+* Contains basic DSL HAL APIs for Sangam
-+*
-+*
-+* (C) Copyright 2001-02, Texas Instruments, Inc.
-+* History
-+* Date Version Notes
-+* 06Feb03 0.00.00 RamP Original Version Created
-+* 10Mar03 0.00.01 RamP Initial Revision for Modular Code Branch
-+* 19Mar03 0.00.02 RamP Fixed DSL and DSP Version API Structures
-+* 20Mar03 0.00.03 RamP Changed byteswap function names
-+* 21Mar03 0.00.03 RamP/ZT Malloc for DSP f/w done in dslStartup
-+* 25Mar03 0.00.04 RamP Removed statistics used only by SWTC
-+* Created Checkpoint 3
-+* 26Mar03 0.00.05 RamP Added Memory allocation for fwimage in
-+* dslStartup function.
-+* 07Apr03 0.00.06 RamP Implemented new error reporting scheme
-+* Changed Commenting to C style only
-+* 09Apr03 0.00.07 RamP Reorganized code to delete POST_SILICON
-+* 10Apr03 0.00.08 RamP Removed ptidsl from loadFWImage function
-+* moved size and fwimage initialization to
-+* dslStartup function
-+* 14Apr03 0.00.09 RamP Moved modemStateBitField processing to a
-+* support function; deleted stateHistory
-+* renamed the REG32 macro
-+* 15Apr03 0.00.10 RamP Changed firmware allocate to shim_
-+* osAllocateVMemory function
-+* 15Apr03 0.00.11 RamP Changed host version number to 07.00.00.01
-+* 16Apr03 0.00.12 RamP Modified return condition on dslShutdown
-+* 16Apr03 0.00.13 RamP Changed host version number to 07.00.00.02
-+* 21Apr03 0.01.00 RamP Cleaned up dslShutdown function
-+* Added new function calls to allocate
-+* (Alpha) /free overlay pages for different OS
-+* Fixed typecasting for allocate/free fxns
-+* Added Interrupt Acknowledge logic
-+* 22Apr03 0.01.01 RamP Moved acknowledgeInterrupt into api
-+* Added static global for intr source
-+* 24Apr03 0.01.02 RamP Added processing for OVERLAY_END in
-+* DSP message handlers, verified crc32
-+* recovery for overlays
-+* 28Apr03 0.01.03 RamP Removed global variable intrSource
-+* Added parameter to handleInterrupt fxn
-+* (Alpha Plus) to indicate interrupt source
-+* Changed version number to 01.00.01.00
-+* Fixed setTrainingMode function problem
-+* 07May03 0.01.04 RamP Removed delineation state check in
-+* message handling functions, added more
-+* safety for setting lConnected in TC_SYNC
-+* Changed version number to 01.00.01.01
-+* 14May03 0.01.05 RamP Added 3 Switchable Hybrid APIs
-+* Added additional statistics us/ds TxPower,
-+* us margin,attenuation, us/ds bitallocation
-+* moved versioning to dsl_hal_version.h
-+* 14May03 0.01.06 RamP Fixed problem with CMsgs2 parsing
-+* 20May03 0.01.07 RamP Added Inner/Outer pair API support. Added
-+* dying gasp message.
-+* 29May03 0.01.08 ZT/RamP Added memory optimizations for overlay pages
-+* and coProfiles; added functions to free,
-+* reload overlays and profiles
-+* 04Jun03 0.01.09 RamP Added tick counters, fail states reporting
-+* Made statistics fixes for higher data rates
-+* Added Margin per tone to statistics
-+* Added configuration checks for trellis/FEC
-+* 06Jun03 0.01.10 RamP Added LED, STM Bert, dGasp LPR Config APIs
-+* Modified interrupt acknowledge logic
-+* Added current hybrid flag as statistic
-+* 09Jun03 0.01.11 RamP Added function to send dying Gasp to Modem
-+* fixed problem with reading OamNegoPara var
-+* (Beta) fixed problem with reading current config
-+* Added function to configure ATM Bert
-+* fixed memory leak due to coProfiles
-+* Added us/ds R/S FEC statistics
-+* Added additional config capability for LED
-+* fixed problem in free memory for CO profiles
-+* 18Jul03 0.01.12 RamP Fixed problem with reading modemEnv structure
-+* affects LED, DGaspLpr APIs
-+* Sending Dying Gasp from shutdown function
-+* 01Aug03 0.01.13 RamP Added preferred training mode to statistics
-+* 13Aug03 0.01.14 MCB Set rev id for D3/R1.1 (ADSL2).
-+* 21Aug03 0.01.15 RamP Added g.hs and aoc bitswap message gathering
-+* Added new references to bits n gains table
-+* Decoupled modem idle/retrain from pair select
-+* Added line length and gross gain to statistics
-+* 29Sep03 0.01.16 RamP Replaced advcfg function calls with support
-+* module function switches
-+* 01Oct03 0.01.17 RamP Added enum translation to set training mode
-+* & to read statistics
-+* 08Oct03 0.01.18 RamP Fixed problems with usTxPower statistic in
-+* Annex B target, fixed problem with Trellis
-+* 12Oct03 0.01.19 RamP Added API calls to gather ADSL2 Messages
-+* 29Oct03 0.01.20 RamP Restored TC_SYNC detect logic
-+* 30Oct03 0.01.21 RamP Removed Scaling factor for adsl2DSConRate
-+* Setting Showtime state upon DSP_ACTIVE
-+* 14Nov03 0.01.22 RamP Fixed scaling for usTxPower & dsTxPower
-+* 14Nov03 0.01.23 RamP Added logic to gather CRates1/RRates1
-+* by parsing DSP_CRATES1
-+* 20Nov03 0.01.24 RamP Added generic & interface Read
-+* and Write functions to read from
-+* DSP - Host Interface
-+* 24Nov03 0.01.25 RamP Modified interface Read/Write functions
-+* to seperate element offsets from pointers
-+* 19Dec03 0.01.26 RamP Modified pointer accessing problems with
-+* block read functions
-+* 26Dec03 0.01.27 RamP Made ghsIndex a local variable & added
-+* check to avoid buffer overflow
-+* 30Dec03 0.01.28 RamP Added generic mailbox command function
-+*******************************************************************************/
-+#include "dsl_hal_register.h"
-+#include "dsl_hal_support.h"
-+#include "dsl_hal_logtable.h"
-+#include "dsl_hal_version.h"
-+
-+static unsigned int hybrid_selected;
-+static unsigned int showtimeFlag = FALSE;
-+
-+#ifdef PRE_SILICON
-+/*********************************************/
-+/* Base Addresses */
-+/*********************************************/
-+#define DEV_MDMA_BASE 0x02000500
-+
-+/*********************************************/
-+/* MC DMA Control Registers in DSL */
-+/*********************************************/
-+
-+#define DEV_MDMA0_SRC_ADDR (DEV_MDMA_BASE + 0x00000000)
-+#define DEV_MDMA0_DST_ADDR (DEV_MDMA_BASE + 0x00000004)
-+#define DEV_MDMA0_CTL_ADDR (DEV_MDMA_BASE + 0x00000008)
-+#define DEV_MDMA1_SRC_ADDR (DEV_MDMA_BASE + 0x00000040)
-+#define DEV_MDMA1_DST_ADDR (DEV_MDMA_BASE + 0x00000044)
-+#define DEV_MDMA1_CTL_ADDR (DEV_MDMA_BASE + 0x00000048)
-+#define DEV_MDMA2_SRC_ADDR (DEV_MDMA_BASE + 0x00000080)
-+#define DEV_MDMA2_DST_ADDR (DEV_MDMA_BASE + 0x00000084)
-+#define DEV_MDMA2_CTL_ADDR (DEV_MDMA_BASE + 0x00000088)
-+#define DEV_MDMA3_SRC_ADDR (DEV_MDMA_BASE + 0x000000C0)
-+#define DEV_MDMA3_DST_ADDR (DEV_MDMA_BASE + 0x000000C4)
-+#define DEV_MDMA3_CTL_ADDR (DEV_MDMA_BASE + 0x000000C8)
-+
-+#define DEV_MDMA0_SRC (*((volatile UINT32 *) DEV_MDMA0_SRC_ADDR))
-+#define DEV_MDMA0_DST (*((volatile UINT32 *) DEV_MDMA0_DST_ADDR))
-+#define DEV_MDMA0_CTL (*((volatile UINT32 *) DEV_MDMA0_CTL_ADDR))
-+#define DEV_MDMA1_SRC (*((volatile UINT32 *) DEV_MDMA1_SRC_ADDR))
-+#define DEV_MDMA1_DST (*((volatile UINT32 *) DEV_MDMA1_DST_ADDR))
-+#define DEV_MDMA1_CTL (*((volatile UINT32 *) DEV_MDMA1_CTL_ADDR))
-+#define DEV_MDMA2_SRC (*((volatile UINT32 *) DEV_MDMA2_SRC_ADDR))
-+#define DEV_MDMA2_DST (*((volatile UINT32 *) DEV_MDMA2_DST_ADDR))
-+#define DEV_MDMA2_CTL (*((volatile UINT32 *) DEV_MDMA2_CTL_ADDR))
-+#define DEV_MDMA3_SRC (*((volatile UINT32 *) DEV_MDMA3_SRC_ADDR))
-+#define DEV_MDMA3_DST (*((volatile UINT32 *) DEV_MDMA3_DST_ADDR))
-+#define DEV_MDMA3_CTL (*((volatile UINT32 *) DEV_MDMA3_CTL_ADDR))
-+
-+/* MDMA control bits */
-+
-+#define DEV_MDMA_START 0x80000000
-+#define DEV_MDMA_STOP 0x00000000
-+#define DEV_MDMA_STATUS 0x40000000
-+#define DEV_MDMA_DST_INC 0x00000000
-+#define DEV_MDMA_DST_FIX 0x02000000
-+#define DEV_MDMA_SRC_INC 0x00000000
-+#define DEV_MDMA_SRC_FIX 0x00800000
-+#define DEV_MDMA_BURST1 0x00000000
-+#define DEV_MDMA_BURST2 0x00100000
-+#define DEV_MDMA_BURST4 0x00200000
-+
-+#define DEV_MDMA_LEN_SHF 2
-+#define DEV_MDMA_LEN_MASK 0x0000FFFF
-+
-+#define DMA0 0
-+#define DMA1 1
-+#define DMA2 2
-+#define DMA3 3
-+#endif
-+#ifdef DMA
-+SINT32 getDmaStatus(UINT32 mask)
-+{
-+ if(!(IFR & mask))
-+ {
-+ return DSLHAL_ERROR_NO_ERRORS;
-+ }
-+ else
-+ {
-+ ICR = mask ;
-+ return 1 ;
-+ }
-+}
-+
-+void programMdma(UINT32 dma, UINT32 source, UINT32 destination, UINT32 length, UINT32 wait)
-+{
-+ volatile UINT32 statusMask ;
-+
-+ switch(dma)
-+ {
-+ case DMA0:
-+ {
-+ DEV_MDMA0_SRC = source ;
-+ DEV_MDMA0_DST = destination ;
-+ DEV_MDMA0_CTL = (DEV_MDMA_START | DEV_MDMA_DST_INC | DEV_MDMA_SRC_INC |
-+ DEV_MDMA_BURST1 | (length << DEV_MDMA_LEN_SHF)) ;
-+ statusMask = 0x00000010 ;
-+ }
-+ break ;
-+ case DMA1:
-+ {
-+ DEV_MDMA1_SRC = source ;
-+ DEV_MDMA1_DST = destination ;
-+ DEV_MDMA1_CTL = (DEV_MDMA_START | DEV_MDMA_DST_INC | DEV_MDMA_SRC_INC |
-+ DEV_MDMA_BURST1 | (length << DEV_MDMA_LEN_SHF)) ;
-+ statusMask = 0x00000020 ;
-+ }
-+ break ;
-+ case DMA2:
-+ {
-+ DEV_MDMA2_SRC = source ;
-+ DEV_MDMA2_DST = destination ;
-+ DEV_MDMA2_CTL = (DEV_MDMA_START | DEV_MDMA_DST_INC | DEV_MDMA_SRC_INC |
-+ DEV_MDMA_BURST1 | (length << DEV_MDMA_LEN_SHF)) ;
-+ statusMask = 0x00000040 ;
-+ }
-+ break ;
-+ case DMA3:
-+ {
-+ DEV_MDMA3_SRC = source ;
-+ DEV_MDMA3_DST = destination ;
-+ DEV_MDMA3_CTL = (DEV_MDMA_START | DEV_MDMA_DST_INC | DEV_MDMA_SRC_INC |
-+ DEV_MDMA_BURST1 | (length << DEV_MDMA_LEN_SHF)) ;
-+ statusMask = 0x00000080 ;
-+ }
-+ break ;
-+
-+ }
-+
-+ if(wait)
-+ {
-+ while(!(getDmaStatus(statusMask))) ;
-+ }
-+
-+}
-+#endif
-+
-+
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_dslStartup
-+*
-+*******************************************************************************************
-+* DESCRIPTION: Entry point to initialize and load ax5 daughter board
-+*
-+* INPUT: PITIDSLHW_T *ppIHw
-+*
-+* RETURN: 0 --succeeded
-+* 1 --Failed
-+*
-+*****************************************************************************************/
-+
-+int dslhal_api_dslStartup(PITIDSLHW_T *ppIHw)
-+{
-+
-+ ITIDSLHW_T *ptidsl;
-+ int i;
-+ int rc;
-+ dprintf(4,"dslhal_api_dslStartup() NEW 1\n");
-+
-+ ptidsl=(ITIDSLHW_T *)shim_osAllocateMemory(sizeof(ITIDSLHW_T));
-+ if(ptidsl==NULL)
-+ {
-+ dprintf(1, "unable to allocate memory for ptidsl\n");
-+ return 1;
-+ }
-+ *ppIHw=ptidsl;
-+ shim_osZeroMemory((char *) ptidsl, sizeof(ITIDSLHW_T));
-+
-+ /* Unreset the ADSL Subsystem */
-+ rc=dslhal_support_unresetDslSubsystem();
-+ if(rc)
-+ {
-+ dprintf(1, "unable to reset ADSL Subsystem \n");
-+ shim_osFreeMemory((void *) ptidsl, sizeof(ITIDSLHW_T));
-+ return DSLHAL_ERROR_UNRESET_ADSLSS;
-+ }
-+ ptidsl->fwimage = shim_osAllocateVMemory(DSP_FIRMWARE_MALLOC_SIZE);
-+ if(!ptidsl->fwimage)
-+ {
-+ dprintf(1,"Failed to Allocate Memory for DSP firmware binary \n");
-+ return DSLHAL_ERROR_FIRMWARE_MALLOC;
-+ }
-+ /* read firmware file from flash */
-+ rc=shim_osLoadFWImage(ptidsl->fwimage);
-+ if(rc<0)
-+ {
-+ dprintf(1, "unable to get fw image\n");
-+ shim_osFreeVMemory((void *)ptidsl->fwimage,DSP_FIRMWARE_MALLOC_SIZE);
-+ shim_osFreeMemory((void *) ptidsl, sizeof(ITIDSLHW_T));
-+ return DSLHAL_ERROR_NO_FIRMWARE_IMAGE;
-+ }
-+ else
-+ {
-+ ptidsl->imagesize = rc;
-+ }
-+ /* Compute the CRC checksum on the image and validate the image */
-+
-+ /* Validate the image in the RAM */
-+
-+ /* load fw to DSP */
-+
-+ if(dslhal_support_hostDspCodeDownload(ptidsl))
-+ {
-+ dprintf(0,"dsp load error\n");
-+ for(i=0; i<NUM_PAGES; i++)
-+ {
-+ if(ptidsl->olayDpPage[i].PmemStartWtAddr !=NULL)
-+ {
-+ shim_osFreeDmaMemory((void *) ptidsl->olayDpPage[i].PmemStartWtAddr,
-+ ptidsl->olayDpPage[i].OverlayXferCount);
-+ }
-+ }
-+ if(ptidsl->coProfiles.PmemStartWtAddr != NULL)
-+ shim_osFreeDmaMemory((void *)ptidsl->coProfiles.PmemStartWtAddr, ptidsl->coProfiles.OverlayXferCount);
-+ if(ptidsl->constDisplay.PmemStartWtAddr != NULL)
-+ shim_osFreeDmaMemory((void *)ptidsl->constDisplay.PmemStartWtAddr, ptidsl->constDisplay.OverlayXferCount);
-+ shim_osFreeVMemory((void *)ptidsl->fwimage,DSP_FIRMWARE_MALLOC_SIZE);
-+ shim_osFreeMemory((void *) ptidsl, sizeof(ITIDSLHW_T));
-+ return DSLHAL_ERROR_CODE_DOWNLOAD;
-+ }
-+
-+ /* set flag to indicated overlay pages are loaded */
-+ ptidsl->bOverlayPageLoaded = 1;
-+ /* set auto retrain to 1 to disble the overlay page reload */
-+ ptidsl->bAutoRetrain = 1;
-+
-+ /* unreset Raptor */
-+ /* change this to new function */
-+ /* This function should basically bring DSP out of reset bit 23 of PRCR */
-+ /* Function is ready but bypassed for Pre-Silicon */
-+
-+ rc=dslhal_support_unresetDsp();
-+ if (rc)
-+ {
-+ dprintf(0,"unable to bring DSP out of Reset\n");
-+ for(i=0; i<NUM_PAGES; i++)
-+ {
-+ if(ptidsl->olayDpPage[i].PmemStartWtAddr !=NULL)
-+ {
-+ shim_osFreeDmaMemory((void *) ptidsl->olayDpPage[i].PmemStartWtAddr,
-+ ptidsl->olayDpPage[i].OverlayXferCount);
-+ }
-+ }
-+ if(ptidsl->coProfiles.PmemStartWtAddr != NULL)
-+ shim_osFreeDmaMemory((void *)ptidsl->coProfiles.PmemStartWtAddr, ptidsl->coProfiles.OverlayXferCount);
-+ if(ptidsl->constDisplay.PmemStartWtAddr != NULL)
-+ shim_osFreeDmaMemory((void *)ptidsl->constDisplay.PmemStartWtAddr, ptidsl->constDisplay.OverlayXferCount);
-+ shim_osFreeVMemory((void *)ptidsl->fwimage,DSP_FIRMWARE_MALLOC_SIZE);
-+ shim_osFreeMemory((void *) ptidsl, sizeof(ITIDSLHW_T));
-+ return DSLHAL_ERROR_UNRESET_DSP;
-+ }
-+ shim_osFreeVMemory((void *)ptidsl->fwimage,DSP_FIRMWARE_MALLOC_SIZE);
-+ dprintf(4,"dslhal_api_dslStartup() done\n");
-+
-+ /* Add the code to initialize the host interface variables */
-+ /* Add code to tickle the host interface */
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_dslShutdown
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: routine to shutdown ax5 modem and free the resource
-+ *
-+ * INPUT: tidsl_t *ptidsl
-+ *
-+ * RETURN: NULL
-+ *
-+ *
-+ *****************************************************************************************/
-+
-+int dslhal_api_dslShutdown(tidsl_t *ptidsl)
-+{
-+ int rc= DSLHAL_ERROR_NO_ERRORS;
-+ int i;
-+
-+ dprintf(5, "dslhal_api_dslShutdown\n");
-+ rc = dslhal_support_writeHostMailbox(ptidsl, HOST_DSLSS_SHUTDOWN, 0, 0, 0);
-+ if(rc)
-+ {
-+ dprintf(1, " unable to reset DSP \n");
-+ rc = DSLHAL_ERROR_RESET_DSP;
-+ }
-+ /* DSP need 50 ms to send out the message*/
-+
-+ shim_osClockWait(60 * 1000);
-+
-+ rc = dslhal_support_writeHostMailbox(ptidsl, HOST_DGASP, 0, 0, 0);
-+
-+ /* free memory allocated*/
-+
-+ for(i=0; i<NUM_PAGES; i++)
-+ {
-+ if(ptidsl->olayDpPage[i].PmemStartWtAddr !=NULL)
-+ {
-+ shim_osFreeDmaMemory((void *) ptidsl->olayDpPage[i].PmemStartWtAddr,
-+ ptidsl->olayDpPage[i].OverlayXferCount);
-+ }
-+ }
-+ if(ptidsl->coProfiles.PmemStartWtAddr != NULL)
-+ shim_osFreeDmaMemory((void *)ptidsl->coProfiles.PmemStartWtAddr, ptidsl->coProfiles.OverlayXferCount);
-+ if(ptidsl->constDisplay.PmemStartWtAddr != NULL)
-+ shim_osFreeDmaMemory((void *)ptidsl->constDisplay.PmemStartWtAddr, ptidsl->constDisplay.OverlayXferCount);
-+ shim_osFreeMemory((void *)ptidsl, sizeof(tidsl_t));
-+ rc = dslhal_support_resetDsp();
-+ if(rc)
-+ {
-+ dprintf(1, " unable to reset ADSL subsystem \n");
-+ rc = DSLHAL_ERROR_RESET_DSP;
-+ }
-+ rc = dslhal_support_resetDslSubsystem();
-+ if(rc)
-+ {
-+ dprintf(1, " unable to reset ADSL subsystem \n");
-+ rc = DSLHAL_ERROR_RESET_ADSLSS;
-+ }
-+return rc;
-+}
-+
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_getDslHalVersion
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This routine supply DSL Driver version.
-+*
-+* INPUT: tidsl_t * ptidsl
-+* void *pVer, DSP Driver Version Pointer
-+*
-+* RETURN: 0 --succeeded
-+* 1 --Failed
-+* Note: See verdef_u.h for version structure definition.
-+*****************************************************************************************/
-+
-+void dslhal_api_getDslHalVersion(void *pVer)
-+{
-+ dslVer *pVersion;
-+ pVersion = (dslVer *)pVer;
-+ pVersion->major = (unsigned char) DSLHAL_VERSION_MAJOR;
-+ pVersion->minor = (unsigned char) DSLHAL_VERSION_MINOR;
-+ pVersion->bugfix = (unsigned char) DSLHAL_VERSION_BUGFIX;
-+ pVersion->buildNum = (unsigned char) DSLHAL_VERSION_BUILDNUM;
-+ pVersion->timeStamp = (unsigned char) DSLHAL_VERSION_TIMESTAMP;
-+}
-+
-+/********************************************************************************************
-+ * FUNCTION NAME: dslhal_api_pollTrainingStatus()
-+ *
-+ *********************************************************************************************
-+ * DESCRIPTION: code to decode modem status and to start modem training
-+ * Input: tidsl_t *ptidsl
-+ *
-+ * Return: modem status
-+ * -1 failed
-+ *
-+ ********************************************************************************************/
-+
-+int dslhal_api_pollTrainingStatus(tidsl_t *ptidsl)
-+{
-+ int cmd;
-+ int tag;
-+ int parm1,parm2;
-+ int rc;
-+ unsigned int failState;
-+ static unsigned int pollGhsIndex=0;
-+
-+ /*char *tmp;*/
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+#if SWTC
-+ DEV_HOST_tcHostCommDef_t TCHostCommDef;
-+#endif
-+
-+ dprintf(5,"dslhal_api_pollTrainingStatus\n");
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterface_t *) ptidsl->pmainAddr;
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,
-+ sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+#if SWTC
-+ dspOamSharedInterface.tcHostComm_p =(DEV_HOST_tcHostCommDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.tcHostComm_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.tcHostComm_p,
-+ &TCHostCommDef, sizeof(DEV_HOST_tcHostCommDef_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+#endif
-+
-+ rc = dslhal_support_processTrainingState(ptidsl);
-+ if(rc)
-+ {
-+ dprintf(0,"Error Reading Modem Training State \n");
-+ return DSLHAL_ERROR_MODEMSTATE;
-+ }
-+ rc = dslhal_support_processModemStateBitField(ptidsl);
-+ if(rc)
-+ {
-+ dprintf(0,"Error Reading Modem Training State \n");
-+ return DSLHAL_ERROR_MODEMSTATE;
-+ }
-+ /*
-+ rc = dslhal_support_readDelineationState(ptidsl);
-+ if(rc)
-+ {
-+ dprintf(0,"Error Reading Delineation State \n");
-+ return DSLHAL_ERROR_MODEMSTATE;
-+ }
-+ */
-+ while (dslhal_support_readDspMailbox(ptidsl,&cmd, &tag, &parm1, &parm2) == DSLHAL_ERROR_NO_ERRORS )
-+ {
-+ dprintf(4,"mailbox message: 0x%x\n", cmd);
-+ /*
-+ for(rc=0;rc<8;rc++)
-+ {
-+ dslhal_support_readTextMailbox(ptidsl,&msg1, &msg2);
-+ }
-+ */
-+
-+ if (cmd == DSP_IDLE)
-+ {
-+ dprintf(4,"DSP_IDLE\n");
-+ ptidsl->lConnected=0;
-+ hybrid_selected=888;
-+ /* add code for reload overlay pages */
-+ if(ptidsl->bAutoRetrain == 0)
-+ {
-+ while(ptidsl->bOverlayPageLoaded == 0)
-+ {
-+ shim_osClockWait(6400);
-+ }
-+ //dslhal_support_restoreTrainingInfo(ptidsl);
-+ //ptidsl->bOverlayPageLoaded = 1;
-+ }
-+ /* command DSP to ACTREQ */
-+ if(showtimeFlag == TRUE)
-+ {
-+ dslhal_api_resetTrainFailureLog(ptidsl);
-+ dslhal_support_advancedIdleProcessing(ptidsl);
-+ showtimeFlag = FALSE;
-+ }
-+ failState = (unsigned int)parm1;
-+ if(failState!=0)
-+ {
-+ ptidsl->AppData.trainFailStates[ptidsl->AppData.trainFails]=failState;
-+ ptidsl->AppData.trainFails++;
-+ if(ptidsl->AppData.trainFails > 30)
-+ ptidsl->AppData.trainFails=0;
-+ }
-+ for(pollGhsIndex=0;pollGhsIndex<10;pollGhsIndex++)
-+ {
-+ for(rc=0;rc<62;rc++)
-+ ptidsl->AppData.dsl_ghsRxBuf[pollGhsIndex][rc]=0;
-+ }
-+ pollGhsIndex=0;
-+ rc = dslhal_support_writeHostMailbox(ptidsl,HOST_ACTREQ, 0, 0, 0);
-+ if (rc)
-+ return DSLHAL_ERROR_MAILBOX_WRITE;
-+ }
-+
-+ if(cmd == DSP_ATM_TC_SYNC)
-+ {
-+ dprintf(4,"\nTC_SYNC\n");
-+ showtimeFlag = TRUE;
-+ ptidsl->lConnected=1;
-+ if(ptidsl->bAutoRetrain == 0 && ptidsl->bOverlayPageLoaded == 1)
-+ {
-+ dslhal_support_clearTrainingInfo(ptidsl);
-+ ptidsl->bOverlayPageLoaded = 0;
-+ }
-+ }
-+ if(cmd == DSP_ACTIVE)
-+ {
-+ dprintf(4,"DSP_ACTIVE");
-+ ptidsl->lConnected=0;
-+ ptidsl->AppData.bState = RSTATE_SHOWTIME;
-+ dprintf(4,"US Connect Rate: %u \n",ptidsl->AppData.USConRate);
-+ dprintf(4,"DS Connect Rate: %u \n",ptidsl->AppData.DSConRate);
-+ }
-+ if(cmd == DSP_ATM_NO_TC_SYNC)
-+ {
-+ dprintf(4,"\nTC_NOSYNC\n");
-+ ptidsl->lConnected=0;
-+ }
-+ if(cmd == DSP_DGASP)
-+ {
-+ dprintf(0,"\n GASP!!! \n");
-+ }
-+ if(cmd == DSP_OVERLAY_END)
-+ {
-+ dprintf(4,"Overlay Page Done %d \n",tag);
-+ rc = dslhal_support_checkOverlayPage(ptidsl,tag);
-+ if(rc == DSLHAL_ERROR_OVERLAY_CORRUPTED)
-+ {
-+ dprintf(0,"Overlay Page: %d CORRUPTED \n",tag);
-+ return (0-DSLHAL_ERROR_OVERLAY_CORRUPTED);
-+ }
-+ }
-+ if(cmd == DSP_HYBRID)
-+ {
-+ dprintf(2,"Hybrid Metrics Available: %d\n",tag);
-+ hybrid_selected = tag;
-+ }
-+ if(cmd == DSP_DGASP)
-+ {
-+ dprintf(0,"\n GASP!!! \n");
-+ }
-+ if(cmd == DSP_XMITBITSWAP)
-+ {
-+ dslhal_support_aocBitSwapProcessing(ptidsl,0);
-+ }
-+ if(cmd == DSP_RCVBITSWAP)
-+ {
-+ dslhal_support_aocBitSwapProcessing(ptidsl,1);
-+ }
-+ if(cmd == DSP_GHSMSG)
-+ {
-+ dprintf(3,"Ghs Message Received, bytes: %d \n",tag);
-+ dprintf(3,"Addr: 0x%x\n",dspOamSharedInterface.ghsDspRxBuf_p);
-+ if(pollGhsIndex > 9)
-+ pollGhsIndex=0;
-+ rc = dslhal_support_blockRead((void *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.ghsDspRxBuf_p), &ptidsl->AppData.dsl_ghsRxBuf[pollGhsIndex++][0], tag);
-+ }
-+ if(cmd == DSP_CRATES1)
-+ {
-+ dprintf(3,"DSP C-Rates1 Data Ready \n");
-+ rc = dslhal_support_gatherRateMessages(ptidsl);
-+ }
-+ if(cmd == DSP_SNR)
-+ {
-+ dprintf(3,"DSP SNR Data Ready \n");
-+ rc = dslhal_support_gatherSnrPerBin(ptidsl,tag);
-+ }
-+ if(cmd == DSP_EOC)
-+ {
-+ dprintf(3,"DSP_EOC message \n");
-+ rc = dslhal_support_gatherEocMessages(ptidsl,tag,parm1,parm2);
-+ }
-+
-+ if(cmd == DSP_TRAINING_MSGS)
-+ {
-+ dprintf(3,"DSP_TRAINING_MSGS \n");
-+ rc = dslhal_support_gatherAdsl2Messages(ptidsl,tag,parm1,parm2);
-+ }
-+ }
-+ dprintf(6,"dslhal_api_pollTrainingStatus done\n");
-+ return(ptidsl->AppData.bState);
-+
-+} /* end of dslhal_api_pollTrainingStatus() */
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_handleTrainingInterrupt()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: Code to handle ax5 hardware interrupts
-+*
-+* Input: tidsl_t *ptidsl
-+* int *pMsg, pointer to returned hardware messages. Each byte represent a messge
-+* int *pTag, pointer to returned hardware message tags. Each byte represent a tag.
-+* Return: 0 success
-+* 1 failed
-+*
-+********************************************************************************************/
-+int dslhal_api_handleTrainingInterrupt(tidsl_t *ptidsl, int intrSource)
-+{
-+ int cmd;
-+ int tag;
-+ int parm1,parm2;
-+ unsigned int msg1;
-+ unsigned int msg2;
-+ int rc;
-+ unsigned int failState;
-+ static unsigned int interruptGhsIndex=0;
-+ /*char *tmp;*/
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+#if SWTC
-+ DEV_HOST_tcHostCommDef_t TCHostCommDef;
-+#endif
-+ dprintf(6,"dslhal_api_handleTrainingInterrupt\n");
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterface_t *) ptidsl->pmainAddr;
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,
-+ sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+#if SWTC
-+ dspOamSharedInterface.tcHostComm_p =(DEV_HOST_tcHostCommDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.tcHostComm_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.tcHostComm_p,
-+ &TCHostCommDef, sizeof(DEV_HOST_tcHostCommDef_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+#endif
-+
-+ if(intrSource & MASK_BITFIELD_INTERRUPTS)
-+ {
-+ dspOamSharedInterface.modemStateBitField_p =(DEV_HOST_modemStateBitField_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.modemStateBitField_p);
-+ rc = dslhal_support_processTrainingState(ptidsl);
-+ if(rc)
-+ {
-+ dprintf(0,"Error Reading Modem Training State \n");
-+ return DSLHAL_ERROR_MODEMSTATE;
-+ }
-+ rc = dslhal_support_processModemStateBitField(ptidsl);
-+ if(rc)
-+ {
-+ dprintf(0,"Error Reading Modem Training State \n");
-+ return DSLHAL_ERROR_MODEMSTATE;
-+ }
-+ }
-+ if(intrSource & MASK_MAILBOX_INTERRUPTS)
-+ {
-+ /*
-+ rc = dslhal_support_readDelineationState(ptidsl);
-+ if(rc)
-+ {
-+ dprintf(0,"Error Reading Delineation State \n");
-+ return DSLHAL_ERROR_MODEMSTATE;
-+ }
-+ */
-+ while (dslhal_support_readDspMailbox(ptidsl,&cmd, &tag, &parm1, &parm2) == DSLHAL_ERROR_NO_ERRORS )
-+ {
-+ dprintf(4,"mailbox message: 0x%x\n", cmd);
-+ /*
-+ for(rc=0;rc<8;rc++)
-+ {
-+ dslhal_support_readTextMailbox(ptidsl,&msg1, &msg2);
-+ }
-+ */
-+ if (cmd == DSP_IDLE)
-+ {
-+ dprintf(4,"DSP_IDLE\n");
-+ ptidsl->lConnected=0;
-+ hybrid_selected=888;
-+ if(showtimeFlag == TRUE)
-+ {
-+ dslhal_api_resetTrainFailureLog(ptidsl);
-+ dslhal_support_advancedIdleProcessing(ptidsl);
-+ showtimeFlag = FALSE;
-+ }
-+ failState = (unsigned int)parm1;
-+ if(failState!=0)
-+ {
-+ ptidsl->AppData.trainFailStates[ptidsl->AppData.trainFails]=failState;
-+ ptidsl->AppData.trainFails++;
-+ if(ptidsl->AppData.trainFails > 30)
-+ ptidsl->AppData.trainFails=0;
-+ }
-+ for(interruptGhsIndex=0;interruptGhsIndex<10;interruptGhsIndex++)
-+ {
-+ for(rc=0;rc<62;rc++)
-+ ptidsl->AppData.dsl_ghsRxBuf[interruptGhsIndex][rc]=0;
-+ }
-+ interruptGhsIndex=0;
-+
-+ /* add code for reload overlay pages */
-+ if(ptidsl->bAutoRetrain == 0 && ptidsl->bOverlayPageLoaded == 0)
-+ {
-+ dslhal_support_restoreTrainingInfo(ptidsl);
-+ ptidsl->bOverlayPageLoaded = 1;
-+ }
-+ /* command DSP to ACTREQ */
-+ rc = dslhal_support_writeHostMailbox(ptidsl, HOST_ACTREQ, 0, 0, 0);
-+ if (rc)
-+ return DSLHAL_ERROR_MAILBOX_WRITE;
-+ }
-+ if(cmd == DSP_ATM_TC_SYNC)
-+ {
-+ dprintf(4,"\nTC_SYNC\n");
-+ showtimeFlag = TRUE;
-+ ptidsl->lConnected=1;
-+ if(ptidsl->bAutoRetrain == 0 && ptidsl->bOverlayPageLoaded == 1)
-+ {
-+ dslhal_support_clearTrainingInfo(ptidsl);
-+ ptidsl->bOverlayPageLoaded = 0;
-+ }
-+ }
-+ if(cmd == DSP_ACTIVE)
-+ {
-+ ptidsl->lConnected=0;
-+ ptidsl->AppData.bState = RSTATE_SHOWTIME;
-+ dprintf(4,"DSP_ACTIVE");
-+ dprintf(4,"US Connect Rate: %u \n",ptidsl->AppData.USConRate);
-+ dprintf(4,"DS Connect Rate: %u \n",ptidsl->AppData.DSConRate);
-+ }
-+ if(cmd == DSP_ATM_NO_TC_SYNC)
-+ {
-+ dprintf(4,"\nTC_NOSYNC\n");
-+ ptidsl->lConnected=0;
-+ /* add code for reload overlay pages */
-+ }
-+ if(cmd == DSP_OVERLAY_END)
-+ {
-+ dprintf(4,"Overlay Page Done %d \n",tag);
-+ rc = dslhal_support_checkOverlayPage(ptidsl,tag);
-+ if(rc == DSLHAL_ERROR_OVERLAY_CORRUPTED)
-+ {
-+ dprintf(4,"Overlay Page: %d CORRUPTED \n",tag);
-+ return(0-DSLHAL_ERROR_OVERLAY_CORRUPTED);
-+ }
-+ }
-+ if(cmd == DSP_HYBRID)
-+ {
-+ dprintf(2,"Hybrid Metrics Available\n");
-+ hybrid_selected = tag;
-+ }
-+ if(cmd == DSP_XMITBITSWAP)
-+ {
-+ rc = dslhal_support_aocBitSwapProcessing(ptidsl,0);
-+ }
-+ if(cmd == DSP_RCVBITSWAP)
-+ {
-+ rc = dslhal_support_aocBitSwapProcessing(ptidsl,1);
-+ }
-+ if(cmd == DSP_GHSMSG)
-+ {
-+ dprintf(3,"Ghs Message Received, bytes: %d \n",tag);
-+ dprintf(3,"Addr: 0x%x\n",dspOamSharedInterface.ghsDspRxBuf_p);
-+ if(interruptGhsIndex > 9)
-+ interruptGhsIndex=0;
-+ rc = dslhal_support_blockRead((void *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.ghsDspRxBuf_p), &ptidsl->AppData.dsl_ghsRxBuf[interruptGhsIndex++][0], tag);
-+ }
-+ if(cmd == DSP_CRATES1)
-+ {
-+ dprintf(3,"DSP C-Rates1 Data Ready \n");
-+ rc = dslhal_support_gatherRateMessages(ptidsl);
-+ }
-+ if(cmd == DSP_SNR)
-+ {
-+ dprintf(3,"DSP SNR Data Ready \n");
-+ rc = dslhal_support_gatherSnrPerBin(ptidsl,tag);
-+ }
-+ if(cmd == DSP_EOC)
-+ {
-+ dprintf(3,"DSP_EOC message \n");
-+ rc = dslhal_support_gatherEocMessages(ptidsl,tag,parm1,parm2);
-+ }
-+ if(cmd == DSP_TRAINING_MSGS)
-+ {
-+ dprintf(3,"DSP_TRAINING_MSGS \n");
-+ rc = dslhal_support_gatherAdsl2Messages(ptidsl,tag,parm1,parm2);
-+ }
-+ }
-+
-+ dslhal_support_readTextMailbox(ptidsl,&msg1, &msg2);
-+ dprintf(5,"Text Message Part1: 0x%x \t Text Message Part2: 0x%x \n",msg1,msg2);
-+ }
-+ dprintf(6,"dslhal_api_handleTrainingInterrupt done\n");
-+ return(ptidsl->AppData.bState);
-+} /* end of dslhal_api_handleTrainingInterrupt() */
-+
-+
-+
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_dslRetrain(tidsl_t *ptidsl)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction sends CMD_ACTREQ to the DSP to issue a retrain
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_dslRetrain(tidsl_t *ptidsl)
-+{
-+ int rc;
-+
-+ dprintf(5, "dslhal_cfg_dslRetrain \n");
-+ rc = dslhal_support_writeHostMailbox(ptidsl, HOST_QUIET, 0, 0, 0);
-+ if(rc)
-+ {
-+ dprintf(1,"dslhal_cfg_dslRetrain failed\n");
-+ return DSLHAL_ERROR_CTRL_API_FAILURE;
-+ }
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_sendQuiet(tidsl_t *ptidsl)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction sends the CMD_QUIET message to the DSP
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_sendQuiet(tidsl_t *ptidsl)
-+{
-+ int rc;
-+
-+ dprintf(5, "dslhal_api_sendQuiet\n");
-+ rc = dslhal_support_writeHostMailbox(ptidsl, HOST_QUIET, 0, 0, 0);
-+ if(rc)
-+ {
-+ dprintf(1,"dslhal_api_sendQuiet failed\n");
-+ return DSLHAL_ERROR_CTRL_API_FAILURE;
-+ }
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_sendIdle(tidsl_t *ptidsl)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction sends the CMD_IDLE message to the DSP
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_sendIdle(tidsl_t *ptidsl)
-+{
-+ int rc;
-+
-+ dprintf(5, "dslhal_api_sendIdle\n");
-+ rc = dslhal_support_writeHostMailbox(ptidsl, HOST_IDLE, 0, 0, 0);
-+ if(rc)
-+ {
-+ dprintf(1,"dslhal_api_sendIdle failed\n");
-+ return DSLHAL_ERROR_CTRL_API_FAILURE;
-+ }
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_sendDgasp(tidsl_t *ptidsl)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction sends the HOST_DGASP message to the DSP
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_sendDgasp(tidsl_t *ptidsl)
-+{
-+ int rc;
-+
-+ dprintf(5, "dslhal_api_sendDgasp\n");
-+ rc = dslhal_support_writeHostMailbox(ptidsl, HOST_DGASP, 0, 0, 0);
-+ if(rc)
-+ {
-+ dprintf(1,"dslhal_api_sendDgasp failed\n");
-+ return DSLHAL_ERROR_CTRL_API_FAILURE;
-+ }
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_setTrainingMode(tidsl_t *ptidsl,unsigned int trainmode)
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction Sets the Desired Training Mode {None/Multimode/G.dmt/lite
-+*
-+* INPUT: PITIDSLHW_T *ptidsl
-+* unsigned int trainmode :Should be between 0 and 4; 0:No Mode 1:Multimode
-+* 2: T1.413, 3:G.dmt, 4: G.lite
-+* RETURN: 0 SUCCESS
-+* 1 FAILED
-+*
-+*****************************************************************************************/
-+unsigned int dslhal_api_setTrainingMode(tidsl_t *ptidsl,unsigned int trainmode)
-+{
-+ DEV_HOST_oamWrNegoParaDef_t NegoPara;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ int rc;
-+ dprintf(5," dslhal_api_setTrainingMode()\n");
-+ if(trainmode>255)
-+ {
-+ dprintf(3,"Invalid Value for Desired Training Mode (must be <255)\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,
-+ sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.oamWriteNegoParams_p = (DEV_HOST_oamWrNegoParaDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.oamWriteNegoParams_p);
-+
-+ rc = dslhal_support_blockRead((PVOID) dspOamSharedInterface.oamWriteNegoParams_p,&NegoPara, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ /* Enum Translation to maintain backwards compatibility for train modes */
-+ if(trainmode == DSLTRAIN_MULTI_MODE)
-+ trainmode = MULTI_MODE;
-+ if(trainmode == DSLTRAIN_T1413_MODE)
-+ trainmode = T1413_MODE;
-+ if(trainmode == DSLTRAIN_GDMT_MODE)
-+ trainmode = GDMT_MODE;
-+
-+ NegoPara.stdMode = trainmode;
-+ dprintf(5,"Train Mode: 0x%x\n",trainmode);
-+ rc = dslhal_support_blockWrite(&NegoPara,(PVOID)dspOamSharedInterface.oamWriteNegoParams_p, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+
-+ dprintf(5," dslhal_api_setTrainingMode() Done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_getDspVersion
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This routine supply AX5 daugther card DSP version.
-+*
-+* INPUT: tidsl_t * ptidsl
-+* void *pVer, DSP version struct is returned starting at this pointer
-+*
-+* RETURN: 0 --succeeded
-+* 1 --Failed
-+* Note: See verdef_u.h for version structure definition.
-+*****************************************************************************************/
-+int dslhal_api_getDspVersion(tidsl_t *ptidsl, void *pVer)
-+{
-+ /* DEV_HOST_dspVersionDef_t dspVersion; */
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ int rc;
-+ dprintf(5, "dslhal_api_getDspVersion\n");
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ if(!pVer)
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+
-+ *(unsigned int *) pVer = 0;
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.datapumpVersion_p = (DEV_HOST_dspVersionDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.datapumpVersion_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.datapumpVersion_p,
-+ pVer, sizeof(dspVer));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ pVer = (DEV_HOST_dspVersionDef_t *)(dslhal_support_byteSwap32((unsigned int)pVer));
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_gatherStatistics()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: Read statistical infromation from ax5 modem daugter card.
-+* Input: tidsl_t *ptidsl
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+********************************************************************************************/
-+void dslhal_api_gatherStatistics(tidsl_t * ptidsl)
-+{
-+ int rc,optIdxU,optIdxD,i;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ DEV_HOST_dspWrNegoParaDef_t rateparms;
-+ DEV_HOST_oamWrNegoParaDef_t configParms;
-+ DEV_HOST_modemStatsDef_t StatisticsDef;
-+ DEV_HOST_errorStats_t usIntlvError, usFastError, dsIntlvError, dsFastError;
-+ DEV_HOST_atmStats_t atmStats;
-+ DEV_HOST_usAtmStats_t usAtmStats0, usAtmStats1;
-+ DEV_HOST_dsAtmStats_t dsAtmStats0,dsAtmStats1;
-+ DEV_HOST_dspWrSuperFrameCntDef_t SuperFrameCnt;
-+ DEV_HOST_msg_t atuc_msg, aturMsg;
-+ DEV_HOST_eocVarDef_t eocVar;
-+ DEV_HOST_dspWrSharedTables_t sharedTables;
-+ DEV_HOST_phyPerf_t phyPerf;
-+ unsigned char usBits[64],dsBits[256];
-+ unsigned char dsPowerCutBack;
-+ int usNumLoadedTones=0, dsNumLoadedTones=0;
-+
-+ dprintf(5, "dslhal_api_gatherStatistics\n");
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,
-+ sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ if(!ptidsl->bStatisticsInitialized && ptidsl->lConnected == LINE_CONNECTED)
-+ {
-+ dslhal_api_initStatistics(ptidsl);
-+ ptidsl->bStatisticsInitialized = TRUE;
-+ }
-+
-+ dspOamSharedInterface.dspWriteNegoParams_p = (DEV_HOST_dspWrNegoParaDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.dspWriteNegoParams_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.dspWriteNegoParams_p,
-+ &rateparms, sizeof(DEV_HOST_dspWrNegoParaDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ if(!rc)
-+ {
-+ /* trained mode */
-+ ptidsl->AppData.dsl_modulation = (unsigned int)rateparms.trainMode;
-+ if(rateparms.trainMode == T1413_MODE)
-+ ptidsl->AppData.dsl_modulation = DSLTRAIN_T1413_MODE;
-+ if(rateparms.trainMode == GDMT_MODE)
-+ ptidsl->AppData.dsl_modulation = DSLTRAIN_GDMT_MODE;
-+ /* rate */
-+ /* shim_osMoveMemory((void *)ptidsl->AppData.bCRates1, (void *)rateparms.cRates1, 120); */
-+ ptidsl->AppData.bCRates2 = rateparms.cRates2;
-+ /* shim_osMoveMemory((void *)ptidsl->AppData.bRRates1, (void *)rateparms.rRates1, 44); */
-+ ptidsl->AppData.bRRates2 = rateparms.rRates2;
-+ shim_osMoveMemory((void *)ptidsl->AppData.bCMsgs1, (void *)rateparms.cMsgs1, 6);
-+ shim_osMoveMemory((void *)ptidsl->AppData.bCMsgs2, (void *)rateparms.cMsgs2, 4);
-+ shim_osMoveMemory((void *)ptidsl->AppData.bRMsgs2, (void *)rateparms.rMsgs2, 4);
-+ ptidsl->AppData.atucVendorId = (unsigned int)rateparms.atucVendorId;
-+ ptidsl->AppData.lineLength = (unsigned int)dslhal_support_byteSwap16((unsigned short)rateparms.lineLength);
-+ ptidsl->AppData.atucRevisionNum = (unsigned int)rateparms.atucGhsRevisionNum;
-+ ptidsl->AppData.usLineAttn = (ptidsl->AppData.bCMsgs2[3] >>2)&0x003f;
-+ ptidsl->AppData.usMargin = (ptidsl->AppData.bCMsgs2[2])&0x001f;
-+
-+ if((rateparms.cRates2 & 0x0f) == 0x01)
-+ optIdxU = 0;
-+ else if((rateparms.cRates2 & 0x0f) == 0x02)
-+ optIdxU = 1;
-+ else if((rateparms.cRates2 & 0x0f) == 0x04)
-+ optIdxU = 2;
-+ else if((rateparms.cRates2 & 0x0f) == 0x08)
-+ optIdxU = 3;
-+ else
-+ optIdxU = -1;
-+
-+ dprintf(5, "optIdxU=%d\n", optIdxU);
-+
-+ /* Obtain the US Rates using Opt# and CRates1 Table */
-+ /* Rate(US) = [Bf(LS0) + Bi(LS0)]*32 */
-+ if(ptidsl->AppData.dsl_modulation <= DSLTRAIN_GLITE_MODE)
-+ ptidsl->AppData.USConRate = ((rateparms.cRates1[optIdxU][CRATES1_BF_LS0] + rateparms.cRates1[optIdxU][CRATES1_BI_LS0]) * 32);
-+ else
-+ ptidsl->AppData.USConRate = 32 * dslhal_support_byteSwap16((unsigned short)rateparms.adsl2USRate);
-+
-+ ptidsl->AppData.USPeakCellRate = ptidsl->AppData.USConRate;
-+
-+ if(((rateparms.cRates2 >> 4) & 0x0f) == 0x01)
-+ optIdxD = 0;
-+ else if(((rateparms.cRates2 >> 4) & 0x0f) == 0x02)
-+ optIdxD = 1;
-+ else if(((rateparms.cRates2 >> 4) & 0x0f) == 0x04)
-+ optIdxD = 2;
-+ else if(((rateparms.cRates2 >> 4) & 0x0f) == 0x08)
-+ optIdxD = 3;
-+ else
-+ optIdxD = -1;
-+ /* Obtain the DS Rates using Opt# and CRates1 Table */
-+ /* Rate(DS) = [Bf(AS0) + Bi(AS0)]*32 */
-+ if(ptidsl->AppData.dsl_modulation <= DSLTRAIN_GLITE_MODE)
-+ ptidsl->AppData.DSConRate = (((rateparms.cRates1[optIdxD][CRATES1_BF_AS0]|((rateparms.cRates1[optIdxD][CRATES1_BF_DSRS]&0x80)<<1))+ (rateparms.cRates1[optIdxD][CRATES1_BI_AS0]|((rateparms.cRates1[optIdxD][CRATES1_BI_DSRS]&0x80)<<1)))* 32);
-+ else
-+ ptidsl->AppData.DSConRate = dslhal_support_byteSwap16((unsigned short)rateparms.adsl2DSRate);
-+
-+ dprintf(5, "ptidsl->AppData.wDSConRate=%d\n", ptidsl->AppData.DSConRate);
-+ /* Determine which Path has Modem Trained with */
-+ if((rateparms.cRates1[optIdxU][CRATES1_BF_LS0]) && (rateparms.cRates1[optIdxD][CRATES1_BF_AS0]))
-+ ptidsl->AppData.TrainedPath = FAST_PATH;
-+ else
-+ ptidsl->AppData.TrainedPath = INTERLEAVED_PATH;
-+
-+ /* Set the mode in which the modem is trained */
-+ ptidsl->AppData.TrainedMode = (unsigned int)rateparms.trainMode;
-+ if(rateparms.trainMode == T1413_MODE)
-+ ptidsl->AppData.TrainedMode = DSLTRAIN_T1413_MODE;
-+ if(rateparms.trainMode == GDMT_MODE)
-+ ptidsl->AppData.TrainedMode = DSLTRAIN_GDMT_MODE;
-+
-+ if(ptidsl->AppData.TrainedPath == FAST_PATH)
-+ ptidsl->AppData.dsFastParityBytesPerSymbol = (rateparms.cRates1[optIdxU][CRATES1_BF_DSRS]&0x1f);
-+ else
-+ ptidsl->AppData.dsIntlvParityBytesPerSymbol = (rateparms.cRates1[optIdxU][CRATES1_BI_DSRS]&0x1f);
-+ ptidsl->AppData.dsSymbolsPerCodeWord = (rateparms.cRates1[optIdxU][CRATES1_BFI_DSS]&0x1f);
-+ ptidsl->AppData.dsInterleaverDepth = ((rateparms.cRates1[optIdxU][CRATES1_BFI_DSI])|((rateparms.cRates1[optIdxU][CRATES1_BFI_DSS]&0xc0)<<2));
-+
-+ if(ptidsl->AppData.TrainedPath == FAST_PATH)
-+ ptidsl->AppData.usFastParityBytesPerSymbol = (rateparms.cRates1[optIdxU][CRATES1_BF_USRS]&0x1f);
-+ else
-+ ptidsl->AppData.usIntlvParityBytesPerSymbol = (rateparms.cRates1[optIdxU][CRATES1_BI_USRS]&0x1f);
-+ ptidsl->AppData.usSymbolsPerCodeWord = (rateparms.cRates1[optIdxU][CRATES1_BFI_USS]&0x1f);
-+ ptidsl->AppData.usInterleaverDepth = ((rateparms.cRates1[optIdxU][CRATES1_BFI_USI])|((rateparms.cRates1[optIdxU][CRATES1_BFI_USS]&0xc0)<<2));
-+ }
-+
-+ dspOamSharedInterface.modemStats_p = (DEV_HOST_modemStatsDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.modemStats_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.modemStats_p,&StatisticsDef, sizeof(DEV_HOST_modemStatsDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ /* Populate the Error Structure Variables */
-+
-+ /* US Interleave Path Error Statistics */
-+
-+ /* Change the endianness of the Pointer */
-+ StatisticsDef.usErrorStatsIntlv_p = (DEV_HOST_errorStats_t *) dslhal_support_byteSwap32((unsigned int)StatisticsDef.usErrorStatsIntlv_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)StatisticsDef.usErrorStatsIntlv_p,&usIntlvError, (sizeof(DEV_HOST_errorStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+ /* DS Interleave Path Error Statistics */
-+
-+ /* Change the endianness of the Pointer */
-+ StatisticsDef.dsErrorStatsIntlv_p = (DEV_HOST_errorStats_t *) dslhal_support_byteSwap32((unsigned int)StatisticsDef.dsErrorStatsIntlv_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)StatisticsDef.dsErrorStatsIntlv_p,&dsIntlvError, (sizeof(DEV_HOST_errorStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+ /* US Fast Path Error Statistics */
-+
-+ /* Change the endianness of the Pointer */
-+ StatisticsDef.usErrorStatsFast_p = (DEV_HOST_errorStats_t *) dslhal_support_byteSwap32((unsigned int)StatisticsDef.usErrorStatsFast_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)StatisticsDef.usErrorStatsFast_p,&usFastError, (sizeof(DEV_HOST_errorStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+ /* DS Fast Path Error Statistics */
-+
-+ /* Change the endianness of the Pointer */
-+ StatisticsDef.dsErrorStatsFast_p = (DEV_HOST_errorStats_t *) dslhal_support_byteSwap32((unsigned int)StatisticsDef.dsErrorStatsFast_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)StatisticsDef.dsErrorStatsFast_p,&dsFastError, (sizeof(DEV_HOST_errorStats_t)));
-+
-+ if (rc)
-+ return;
-+ if(!rc)
-+ {
-+ if(ptidsl->AppData.bState > 2)
-+ {
-+ /* Get CRC Errors Stats for both US and DS */
-+ ptidsl->AppData.dsICRC_errors = dslhal_support_byteSwap32((unsigned int)dsIntlvError.crcErrors);
-+ ptidsl->AppData.dsFCRC_errors = dslhal_support_byteSwap32((unsigned int)dsFastError.crcErrors);
-+ ptidsl->AppData.usICRC_errors = dslhal_support_byteSwap32((unsigned int)usIntlvError.crcErrors);
-+ ptidsl->AppData.usFCRC_errors = dslhal_support_byteSwap32((unsigned int)usFastError.crcErrors);
-+ /* Get FEC Errors Stats for both US and DS */
-+ ptidsl->AppData.dsIFEC_errors = dslhal_support_byteSwap32((unsigned int)dsIntlvError.fecErrors);
-+ ptidsl->AppData.dsFFEC_errors = dslhal_support_byteSwap32((unsigned int)dsFastError.fecErrors);
-+ ptidsl->AppData.usIFEC_errors = dslhal_support_byteSwap32((unsigned int)usIntlvError.fecErrors);
-+ ptidsl->AppData.usFFEC_errors = dslhal_support_byteSwap32((unsigned int)usFastError.fecErrors);
-+ /* Get NCD Errors Stats for both US and DS */
-+ ptidsl->AppData.dsINCD_error = dslhal_support_byteSwap32((unsigned int)dsIntlvError.ncdError);
-+ ptidsl->AppData.dsFNCD_error = dslhal_support_byteSwap32((unsigned int)dsFastError.ncdError);
-+ ptidsl->AppData.usINCD_error = dslhal_support_byteSwap32((unsigned int)usIntlvError.ncdError);
-+ ptidsl->AppData.usFNCD_error = dslhal_support_byteSwap32((unsigned int)usFastError.ncdError);
-+ /* Get LCD Errors Stats for both US and DS */
-+ ptidsl->AppData.dsILCD_errors = dslhal_support_byteSwap32((unsigned int)dsIntlvError.lcdErrors);
-+ ptidsl->AppData.dsFLCD_errors = dslhal_support_byteSwap32((unsigned int)dsFastError.lcdErrors);
-+ ptidsl->AppData.usILCD_errors = dslhal_support_byteSwap32((unsigned int)usIntlvError.lcdErrors);
-+ ptidsl->AppData.usFLCD_errors = dslhal_support_byteSwap32((unsigned int)usFastError.lcdErrors);
-+ /*Get HEC Errors Stats for both US and DS */
-+ ptidsl->AppData.dsIHEC_errors = dslhal_support_byteSwap32((unsigned int)dsIntlvError.hecErrors);
-+ ptidsl->AppData.dsFHEC_errors = dslhal_support_byteSwap32((unsigned int)dsFastError.hecErrors);
-+ ptidsl->AppData.usIHEC_errors = dslhal_support_byteSwap32((unsigned int)usIntlvError.hecErrors);
-+ ptidsl->AppData.usFHEC_errors = dslhal_support_byteSwap32((unsigned int)usFastError.hecErrors);
-+
-+ /* Get LOS and SEF error Stats */
-+ ptidsl->AppData.LOS_errors = dslhal_support_byteSwap32(StatisticsDef.losErrors);
-+ ptidsl->AppData.SEF_errors = dslhal_support_byteSwap32(StatisticsDef.sefErrors);
-+ ptidsl->AppData.coLosErrors = dslhal_support_byteSwap32(StatisticsDef.farEndLosErrors);
-+ ptidsl->AppData.coRdiErrors = dslhal_support_byteSwap32(StatisticsDef.farEndRdiErrors);
-+
-+ dspOamSharedInterface.atmStats_p = (DEV_HOST_atmStats_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.atmStats_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.atmStats_p,&atmStats, sizeof(DEV_HOST_atmStats_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+
-+ /* Populate the US/DS ATM Stats Variables */
-+
-+ /* US ATM Statistics */
-+
-+ /* Change the endianness of the Pointer */
-+ atmStats.us0_p = (DEV_HOST_usAtmStats_t *) dslhal_support_byteSwap32((unsigned int)atmStats.us0_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)atmStats.us0_p,&usAtmStats0, (sizeof(DEV_HOST_usAtmStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+ atmStats.us1_p = (DEV_HOST_usAtmStats_t *) dslhal_support_byteSwap32((unsigned int)atmStats.us1_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)atmStats.us1_p,&usAtmStats1, (sizeof(DEV_HOST_usAtmStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+ /* DS ATM Statistics */
-+
-+ /* Change the endianness of the Pointer */
-+ atmStats.ds0_p = (DEV_HOST_dsAtmStats_t *) dslhal_support_byteSwap32((unsigned int)atmStats.ds0_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)atmStats.ds0_p,&dsAtmStats0, (sizeof(DEV_HOST_dsAtmStats_t)));
-+
-+ if (rc)
-+ return;
-+ atmStats.ds1_p = (DEV_HOST_dsAtmStats_t *) dslhal_support_byteSwap32((unsigned int)atmStats.ds1_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)atmStats.ds1_p,&dsAtmStats1, (sizeof(DEV_HOST_dsAtmStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+ /* Get ATM Stats for both US and DS for Channel 0*/
-+ ptidsl->AppData.usAtm_count[0] = dslhal_support_byteSwap32(usAtmStats0.goodCount);
-+ ptidsl->AppData.usIdle_count[0] = dslhal_support_byteSwap32(usAtmStats0.idleCount);
-+#if SWTC
-+ ptidsl->AppData.usPdu_count[0] = dslhal_support_byteSwap32(usAtmStats0.pduCount);
-+#endif
-+ ptidsl->AppData.dsGood_count[0] = dslhal_support_byteSwap32(dsAtmStats0.goodCount);
-+ ptidsl->AppData.dsIdle_count[0] = dslhal_support_byteSwap32(dsAtmStats0.idleCount);
-+#if SWTC
-+ ptidsl->AppData.dsPdu_count[0] = dslhal_support_byteSwap32(dsAtmStats0.pduCount);
-+#endif
-+ ptidsl->AppData.dsBadHec_count[0] = dslhal_support_byteSwap32((dsAtmStats0.badHecCount));
-+ ptidsl->AppData.dsOVFDrop_count[0] = dslhal_support_byteSwap32((dsAtmStats0.ovflwDropCount));
-+ /* Get ATM Stats for both US and DS for Channel 1*/
-+ ptidsl->AppData.usAtm_count[1] = dslhal_support_byteSwap32(usAtmStats1.goodCount);
-+ ptidsl->AppData.usIdle_count[1] = dslhal_support_byteSwap32(usAtmStats1.idleCount);
-+#if SWTC
-+ ptidsl->AppData.usPdu_count[1] = dslhal_support_byteSwap32(usAtmStats1.pduCount);
-+#endif
-+ ptidsl->AppData.dsGood_count[1] = dslhal_support_byteSwap32(dsAtmStats1.goodCount);
-+ ptidsl->AppData.dsIdle_count[1] = dslhal_support_byteSwap32(dsAtmStats1.idleCount);
-+#if SWTC
-+ ptidsl->AppData.dsPdu_count[1] = dslhal_support_byteSwap32(dsAtmStats1.pduCount);
-+#endif
-+ ptidsl->AppData.dsBadHec_count[1] = dslhal_support_byteSwap32((dsAtmStats1.badHecCount));
-+ ptidsl->AppData.dsOVFDrop_count[1] = dslhal_support_byteSwap32((dsAtmStats1.ovflwDropCount));
-+
-+ /* Determine the US and DS Superframe Count */
-+
-+ dspOamSharedInterface.dspWriteSuperFrameCnt_p = (DEV_HOST_dspWrSuperFrameCntDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.dspWriteSuperFrameCnt_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.dspWriteSuperFrameCnt_p,&SuperFrameCnt, sizeof(DEV_HOST_dspWrSuperFrameCntDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ ptidsl->AppData.usSuperFrmCnt = dslhal_support_byteSwap32(SuperFrameCnt.wSuperFrameCntUstrm);
-+ ptidsl->AppData.dsSuperFrmCnt = dslhal_support_byteSwap32(SuperFrameCnt.wSuperFrameCntDstrm);
-+
-+ /* Determine Frame Mode and Max Frame Mode */
-+
-+ dspOamSharedInterface.atucMsg_p = (DEV_HOST_msg_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.atucMsg_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.atucMsg_p,&atuc_msg, sizeof(DEV_HOST_msg_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+
-+ ptidsl->AppData.FrmMode = (unsigned int)atuc_msg.framingMode;
-+ ptidsl->AppData.MaxFrmMode = (unsigned int)atuc_msg.maxFrameMode;
-+
-+ /* Determine Gross Gain */
-+
-+ dspOamSharedInterface.aturMsg_p = (DEV_HOST_msg_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.aturMsg_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.aturMsg_p,&aturMsg, sizeof(DEV_HOST_msg_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ ptidsl->AppData.grossGain = (unsigned int)aturMsg.grossGain;
-+
-+ /* Determine DS Line Attenuation & Margin */
-+ dspOamSharedInterface.eocVar_p = (DEV_HOST_eocVarDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.eocVar_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.eocVar_p,&eocVar, sizeof(DEV_HOST_eocVarDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ ptidsl->AppData.dsLineAttn = (unsigned int)eocVar.lineAtten;
-+ ptidsl->AppData.dsMargin = (unsigned int)eocVar.dsMargin;
-+ }
-+ }
-+
-+ /* Read in the Shared Tables structure */
-+ dspOamSharedInterface.dspWrSharedTables_p = (DEV_HOST_dspWrSharedTables_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.dspWrSharedTables_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.dspWrSharedTables_p,&sharedTables, sizeof(DEV_HOST_dspWrSharedTables_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+
-+ /* Read the ATU-R Bits and Gains Table */
-+ sharedTables.aturBng_p = (unsigned char *)dslhal_support_byteSwap32((unsigned int)sharedTables.aturBng_p);
-+ rc = dslhal_support_blockRead((PVOID)sharedTables.aturBng_p,ptidsl->AppData.rBng,255*2*sizeof(unsigned char));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ /* Read the ATU-C Bits and Gains Table */
-+ sharedTables.atucBng_p = (unsigned char *)dslhal_support_byteSwap32((unsigned int)sharedTables.atucBng_p);
-+ if(ptidsl->netService == 2) /* for Annex_B */
-+ {
-+ rc = dslhal_support_blockRead((PVOID)sharedTables.atucBng_p,ptidsl->AppData.cBng,126*sizeof(unsigned char));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ for(i=0;i<US_BNG_LENGTH*2;i++)
-+ usBits[i]=0;
-+ for(i=1;i<US_BNG_LENGTH*2;i++)
-+ {
-+ usBits[i]=((ptidsl->AppData.cBng[(i-1)*2])&0xf);
-+ dprintf(5,"Bit #%d : 0x%x\n",i,usBits[i]);
-+ }
-+ for(i=1;i<US_BNG_LENGTH*2;i++)
-+ {
-+ if(usBits[i])
-+ usNumLoadedTones++;
-+ }
-+ }
-+ else
-+ {
-+ rc = dslhal_support_blockRead((PVOID)sharedTables.atucBng_p,ptidsl->AppData.cBng,62*sizeof(unsigned char));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ for(i=0;i<US_BNG_LENGTH;i++)
-+ usBits[i]=0;
-+ for(i=1;i<US_BNG_LENGTH;i++)
-+ {
-+ usBits[i]=((ptidsl->AppData.cBng[(i-1)*2])&0xf);
-+ dprintf(5,"Bit #%d : 0x%x\n",i,usBits[i]);
-+ }
-+ for(i=1;i<US_BNG_LENGTH;i++)
-+ {
-+ if(usBits[i])
-+ usNumLoadedTones++;
-+ }
-+ }
-+
-+ /* Determine Number U/S of Loaded Tones */
-+
-+ /* U/S Power Computation */
-+ dspOamSharedInterface.phyPerf_p = (DEV_HOST_phyPerf_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.phyPerf_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.phyPerf_p,
-+ &phyPerf, sizeof(DEV_HOST_phyPerf_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ ptidsl->AppData.currentHybridNum = phyPerf.currentHybridNumUsed;
-+ phyPerf.usAvgGain = dslhal_support_byteSwap32(phyPerf.usAvgGain);
-+ ptidsl->AppData.usTxPower = LOG43125 + phyPerf.usAvgGain + (256*US_NOMINAL_POWER)+log10[usNumLoadedTones-1];
-+ dprintf(7,"Avg Gain: 0x%x usNumLoadedTones: 0x%x log: 0x%x\n",phyPerf.usAvgGain, usNumLoadedTones, log10[usNumLoadedTones-1]);
-+
-+ /* Determine Number D/S of Loaded Tones */
-+ dsBits[0]=0;
-+ for(i=0;i<DS_BNG_LENGTH;i++)
-+ {
-+ dsBits[i]=0;
-+ /* ptidsl->AppData.rBng[i-1]=dslhal_support_byteSwap32((unsigned int)ptidsl->AppData.rBng[i-1]);*/
-+ }
-+ for(i=1;i<DS_BNG_LENGTH;i++)
-+ {
-+ dsBits[i]=((ptidsl->AppData.rBng[(i-1)*2])&0xf);
-+ dprintf(5,"Bit #%d : 0x%x\n",i,dsBits[i]);
-+ }
-+ for(i=1;i<DS_BNG_LENGTH;i++)
-+ {
-+ if(dsBits[i])
-+ dsNumLoadedTones++;
-+ }
-+ /* D/S Power Computation */
-+ dspOamSharedInterface.phyPerf_p = (DEV_HOST_phyPerf_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.phyPerf_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.phyPerf_p,
-+ &phyPerf, sizeof(DEV_HOST_phyPerf_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ /* D/S Power Cutback */
-+ dsPowerCutBack = (unsigned char)((((ptidsl->AppData.bCMsgs1[0]) >>6) &0x3)+(((ptidsl->AppData.bCMsgs1[1]) &0x1) <<2));
-+ phyPerf.dsAvgGain = dslhal_support_byteSwap32(phyPerf.dsAvgGain);
-+ ptidsl->AppData.dsTxPower = LOG43125 + phyPerf.dsAvgGain + (256*((2*(dsPowerCutBack-1))-52)) + log10[dsNumLoadedTones-1];
-+ dprintf(7,"Avg Gain: %d dsNumLoadedTones: %d log: %d pcb: %d \n",phyPerf.dsAvgGain, dsNumLoadedTones, log10[dsNumLoadedTones-1], dsPowerCutBack);
-+ /* ds bit allocation */
-+ sharedTables.bitAllocTblDstrm_p = (unsigned char *)dslhal_support_byteSwap32((unsigned int)sharedTables.bitAllocTblDstrm_p);
-+ rc = dslhal_support_blockRead((PVOID)sharedTables.bitAllocTblDstrm_p,ptidsl->AppData.BitAllocTblDstrm, 256*sizeof(unsigned char));
-+ if(rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed \n");
-+ return;
-+ }
-+
-+ /* us bit allocation */
-+ sharedTables.bitAllocTblUstrm_p = (unsigned char *)dslhal_support_byteSwap32((unsigned int)sharedTables.bitAllocTblUstrm_p);
-+ rc = dslhal_support_blockRead((PVOID)sharedTables.bitAllocTblUstrm_p,ptidsl->AppData.BitAllocTblUstrm, 32*sizeof(unsigned char));
-+ if(rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed \n");
-+ return;
-+ }
-+ /* margin per tone */
-+ sharedTables.marginTblDstrm_p = (signed char *)dslhal_support_byteSwap32((unsigned int)sharedTables.marginTblDstrm_p);
-+ rc = dslhal_support_blockRead((PVOID)sharedTables.marginTblDstrm_p,ptidsl->AppData.marginTblDstrm, 256*sizeof(signed char));
-+ if(rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed \n");
-+ return;
-+ }
-+ /* Read Configured Options */
-+ dspOamSharedInterface.oamWriteNegoParams_p = (DEV_HOST_oamWrNegoParaDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.oamWriteNegoParams_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.oamWriteNegoParams_p,
-+ &configParms, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ else
-+ {
-+ /* r-Msg1 */
-+ ptidsl->AppData.StdMode = (unsigned int)configParms.stdMode;
-+ if(configParms.stdMode == T1413_MODE)
-+ ptidsl->AppData.StdMode = DSLTRAIN_T1413_MODE;
-+ if(configParms.stdMode == GDMT_MODE)
-+ ptidsl->AppData.StdMode = DSLTRAIN_GDMT_MODE;
-+ if(configParms.stdMode == MULTI_MODE)
-+ ptidsl->AppData.StdMode = DSLTRAIN_MULTI_MODE;
-+
-+ shim_osMoveMemory((void *)ptidsl->AppData.bRMsgs1, (void *)configParms.rMsgs1, 6*sizeof(char));
-+ if((ptidsl->AppData.bRMsgs1[2] & 0x02) == 0x02)
-+ {
-+ dprintf(7,"Trellis!\n");
-+ ptidsl->configFlag |= CONFIG_FLAG_TRELLIS;
-+ }
-+ else
-+ ptidsl->configFlag &= ~CONFIG_FLAG_TRELLIS;
-+ if(ptidsl->AppData.bRMsgs1[2]&0x01)
-+ ptidsl->configFlag |= CONFIG_FLAG_EC;
-+ else
-+ ptidsl->configFlag &= ~CONFIG_FLAG_EC;
-+ }
-+ return;
-+}
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_initStatistics()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: init statistical information of ax5 modem daugter card.
-+*
-+* Input: tidsl_t *ptidsl
-+*
-+* Return: NULL
-+*
-+********************************************************************************************/
-+void dslhal_api_initStatistics(tidsl_t * ptidsl)
-+{
-+ int rc;
-+ /*TCHostCommDef TCHostCommParms; */
-+ int optIdxU, optIdxD;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ DEV_HOST_dspWrNegoParaDef_t rateparms;
-+ DEV_HOST_modemStatsDef_t StatisticsDef;
-+ DEV_HOST_errorStats_t usIntlvError, usFastError, dsIntlvError, dsFastError;
-+ DEV_HOST_atmStats_t atmStats;
-+ DEV_HOST_usAtmStats_t usAtmStats0, usAtmStats1;
-+ DEV_HOST_dsAtmStats_t dsAtmStats0,dsAtmStats1;
-+ DEV_HOST_dspWrSuperFrameCntDef_t SuperFrameCnt;
-+ DEV_HOST_msg_t atuc_msg, aturMsg;
-+ DEV_HOST_eocVarDef_t eocVar;
-+
-+ dprintf(5, "dslhal_api_initStatistics\n");
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterface_t *) ptidsl->pmainAddr;
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ dspOamSharedInterface.dspWriteNegoParams_p = (DEV_HOST_dspWrNegoParaDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.dspWriteNegoParams_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.dspWriteNegoParams_p,&rateparms, sizeof(DEV_HOST_dspWrNegoParaDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ if(!rc)
-+ {
-+ /* shim_osMoveMemory((void *)ptidsl->AppData.bCRates1, (void *)rateparms.cRates1, SIZE_OF_CRATES1_TABLE); */
-+ ptidsl->AppData.bCRates2 = rateparms.cRates2;
-+ /* shim_osMoveMemory((void *)ptidsl->AppData.bRRates1, (void *)rateparms.rRates1, 44); */
-+ ptidsl->AppData.bRRates2 = rateparms.rRates2;
-+ shim_osMoveMemory((void *)ptidsl->AppData.bCMsgs1, (void *)rateparms.cMsgs1, 6);
-+ shim_osMoveMemory((void *)ptidsl->AppData.bCMsgs2, (void *)rateparms.cMsgs2, 4);
-+ shim_osMoveMemory((void *)ptidsl->AppData.bRMsgs2, (void *)rateparms.rMsgs2, 4);
-+
-+ ptidsl->AppData.atucVendorId = dslhal_support_byteSwap32((unsigned int)rateparms.atucVendorId);
-+ ptidsl->AppData.lineLength = (unsigned int)dslhal_support_byteSwap16((unsigned short)rateparms.lineLength);
-+ ptidsl->AppData.atucRevisionNum = rateparms.atucGhsRevisionNum;
-+ ptidsl->AppData.usLineAttn = (ptidsl->AppData.bCMsgs2[3] >>2)&0x003f;
-+ ptidsl->AppData.usMargin = (ptidsl->AppData.bCMsgs2[2])&0x001f;
-+
-+ /* Get the UpStream Connection Rate */
-+ /* Based on the Bit Pattern Get the Opt# */
-+ if((rateparms.cRates2 & 0x0f) == 0x01)
-+ optIdxU = 0;
-+ else if((rateparms.cRates2 & 0x0f) == 0x02)
-+ optIdxU = 1;
-+ else if((rateparms.cRates2 & 0x0f) == 0x04)
-+ optIdxU = 2;
-+ else if((rateparms.cRates2 & 0x0f) == 0x08)
-+ optIdxU = 3;
-+ else
-+ optIdxU = -1;
-+ dprintf(5, "optIdxU=%d\n", optIdxU);
-+ /* Obtain the US Rates using Opt# and CRates1 Table */
-+ /* Rate(US) = [Bf(LS0) + Bi(LS0)]*32 */
-+ if(ptidsl->AppData.dsl_modulation <= DSLTRAIN_GLITE_MODE)
-+ ptidsl->AppData.USConRate = ((rateparms.cRates1[optIdxU][CRATES1_BF_LS0] + rateparms.cRates1[optIdxU][CRATES1_BI_LS0]) * 32);
-+ else
-+ ptidsl->AppData.USConRate = dslhal_support_byteSwap16((unsigned short)rateparms.adsl2USRate);
-+ ptidsl->AppData.USPeakCellRate = ptidsl->AppData.USConRate;
-+
-+ /* Get the DownStream Connection Rate */
-+ /* Based on the Bit Pattern Get the Opt# */
-+ if(((rateparms.cRates2 >> 4) & 0x0f) == 0x01)
-+ optIdxD = 0;
-+ else if(((rateparms.cRates2 >> 4) & 0x0f) == 0x02)
-+ optIdxD = 1;
-+ else if(((rateparms.cRates2 >> 4) & 0x0f) == 0x04)
-+ optIdxD = 2;
-+ else if(((rateparms.cRates2 >> 4) & 0x0f) == 0x08)
-+ optIdxD = 3;
-+ else
-+ optIdxD = -1;
-+ /* Obtain the DS Rates using Opt# and CRates1 Table */
-+ /* Rate(DS) = [Bf(AS0) + Bi(AS0)]*32 */
-+ if(ptidsl->AppData.dsl_modulation <= DSLTRAIN_GLITE_MODE)
-+ ptidsl->AppData.DSConRate = (((rateparms.cRates1[optIdxD][CRATES1_BF_AS0]|((rateparms.cRates1[optIdxD][CRATES1_BF_DSRS]&0x80)<<1))+ (rateparms.cRates1[optIdxD][CRATES1_BI_AS0]|((rateparms.cRates1[optIdxD][CRATES1_BI_DSRS]&0x80)<<1)))* 32);
-+ else
-+ ptidsl->AppData.DSConRate = dslhal_support_byteSwap16((unsigned short)rateparms.adsl2DSRate);
-+ dprintf(5, "ptidsl->AppData.wDSConRate=%d\n", ptidsl->AppData.DSConRate);
-+ /* Determine which Path has Modem Trained with */
-+ if((rateparms.cRates1[optIdxU][CRATES1_BF_LS0]) && (rateparms.cRates1[optIdxD][CRATES1_BF_AS0]))
-+ ptidsl->AppData.TrainedPath = FAST_PATH;
-+ else
-+ ptidsl->AppData.TrainedPath = INTERLEAVED_PATH;
-+
-+ /* Set the mode in which the modem is trained */
-+ ptidsl->AppData.TrainedMode = (unsigned int)rateparms.trainMode;
-+ if(rateparms.trainMode == T1413_MODE)
-+ ptidsl->AppData.TrainedMode = DSLTRAIN_T1413_MODE;
-+ if(rateparms.trainMode == GDMT_MODE)
-+ ptidsl->AppData.TrainedMode = DSLTRAIN_GDMT_MODE;
-+
-+ if(ptidsl->AppData.TrainedPath == FAST_PATH)
-+ ptidsl->AppData.dsFastParityBytesPerSymbol = (rateparms.cRates1[optIdxU][CRATES1_BF_DSRS]&0x1f);
-+ else
-+ ptidsl->AppData.dsIntlvParityBytesPerSymbol = (rateparms.cRates1[optIdxU][CRATES1_BI_DSRS]&0x1f);
-+ ptidsl->AppData.dsSymbolsPerCodeWord = (rateparms.cRates1[optIdxU][CRATES1_BFI_DSS]&0x1f);
-+ ptidsl->AppData.dsInterleaverDepth = ((rateparms.cRates1[optIdxU][CRATES1_BFI_DSI])|((rateparms.cRates1[optIdxU][CRATES1_BFI_DSS]&0xc0)<<2));
-+
-+ if(ptidsl->AppData.TrainedPath == FAST_PATH)
-+ ptidsl->AppData.usFastParityBytesPerSymbol = (rateparms.cRates1[optIdxU][CRATES1_BF_USRS]&0x1f);
-+ else
-+ ptidsl->AppData.usIntlvParityBytesPerSymbol = (rateparms.cRates1[optIdxU][CRATES1_BI_USRS]&0x1f);
-+ ptidsl->AppData.usSymbolsPerCodeWord = (rateparms.cRates1[optIdxU][CRATES1_BFI_USS]&0x1f);
-+ ptidsl->AppData.usInterleaverDepth = ((rateparms.cRates1[optIdxU][CRATES1_BFI_USI])|((rateparms.cRates1[optIdxU][CRATES1_BFI_USS]&0xc0)<<2));
-+ }
-+
-+ /* get the Statistics itself */
-+
-+ dspOamSharedInterface.modemStats_p = (DEV_HOST_modemStatsDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.modemStats_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.modemStats_p,&StatisticsDef, sizeof(DEV_HOST_modemStatsDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+
-+ /* Populate the Error Structure Variables */
-+
-+ /* US Interleave Path Error Statistics */
-+
-+ /* Change the endianness of the Pointer */
-+ StatisticsDef.usErrorStatsIntlv_p = (DEV_HOST_errorStats_t *) dslhal_support_byteSwap32((unsigned int)StatisticsDef.usErrorStatsIntlv_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)StatisticsDef.usErrorStatsIntlv_p,&usIntlvError, (sizeof(DEV_HOST_errorStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+ /* DS Interleave Path Error Statistics */
-+
-+ /* Change the endianness of the Pointer */
-+ StatisticsDef.dsErrorStatsIntlv_p = (DEV_HOST_errorStats_t *) dslhal_support_byteSwap32((unsigned int)StatisticsDef.dsErrorStatsIntlv_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)StatisticsDef.dsErrorStatsIntlv_p,&dsIntlvError, (sizeof(DEV_HOST_errorStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+ /* US Fast Path Error Statistics */
-+
-+ /* Change the endianness of the Pointer */
-+ StatisticsDef.usErrorStatsFast_p = (DEV_HOST_errorStats_t *) dslhal_support_byteSwap32((unsigned int)StatisticsDef.usErrorStatsFast_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)StatisticsDef.usErrorStatsFast_p,&usFastError, (sizeof(DEV_HOST_errorStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+
-+ /* DS Fast Path Error Statistics */
-+
-+ /* Change the endianness of the Pointer */
-+ StatisticsDef.dsErrorStatsFast_p = (DEV_HOST_errorStats_t *) dslhal_support_byteSwap32((unsigned int)StatisticsDef.dsErrorStatsFast_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)StatisticsDef.dsErrorStatsFast_p,&dsFastError, (sizeof(DEV_HOST_errorStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+ if(ptidsl->AppData.bState > 2)
-+ {
-+ /* Get CRC Errors Stats for both US and DS */
-+ ptidsl->AppData.dsICRC_errors = dslhal_support_byteSwap32((unsigned int)dsIntlvError.crcErrors);
-+ ptidsl->AppData.dsFCRC_errors = dslhal_support_byteSwap32((unsigned int)dsFastError.crcErrors);
-+ ptidsl->AppData.usICRC_errors = dslhal_support_byteSwap32((unsigned int)usIntlvError.crcErrors);
-+ ptidsl->AppData.usFCRC_errors = dslhal_support_byteSwap32((unsigned int)usFastError.crcErrors);
-+ /* Get FEC Errors Stats for both US and DS */
-+ ptidsl->AppData.dsIFEC_errors = dslhal_support_byteSwap32((unsigned int)dsIntlvError.fecErrors);
-+ ptidsl->AppData.dsFFEC_errors = dslhal_support_byteSwap32((unsigned int)dsFastError.fecErrors);
-+ ptidsl->AppData.usIFEC_errors = dslhal_support_byteSwap32((unsigned int)usIntlvError.fecErrors);
-+ ptidsl->AppData.usFFEC_errors = dslhal_support_byteSwap32((unsigned int)usFastError.fecErrors);
-+ /* Get NCD Errors Stats for both US and DS */
-+ ptidsl->AppData.dsINCD_error = dslhal_support_byteSwap32((unsigned int)dsIntlvError.ncdError);
-+ ptidsl->AppData.dsFNCD_error = dslhal_support_byteSwap32((unsigned int)dsFastError.ncdError);
-+ ptidsl->AppData.usINCD_error = dslhal_support_byteSwap32((unsigned int)usIntlvError.ncdError);
-+ ptidsl->AppData.usFNCD_error = dslhal_support_byteSwap32((unsigned int)usFastError.ncdError);
-+ /* Get LCD Errors Stats for both US and DS */
-+ ptidsl->AppData.dsILCD_errors = dslhal_support_byteSwap32((unsigned int)dsIntlvError.lcdErrors);
-+ ptidsl->AppData.dsFLCD_errors = dslhal_support_byteSwap32((unsigned int)dsFastError.lcdErrors);
-+ ptidsl->AppData.usILCD_errors = dslhal_support_byteSwap32((unsigned int)usIntlvError.lcdErrors);
-+ ptidsl->AppData.usFLCD_errors = dslhal_support_byteSwap32((unsigned int)usFastError.lcdErrors);
-+ /*Get HEC Errors Stats for both US and DS */
-+ ptidsl->AppData.dsIHEC_errors = dslhal_support_byteSwap32((unsigned int)dsIntlvError.hecErrors);
-+ ptidsl->AppData.dsFHEC_errors = dslhal_support_byteSwap32((unsigned int)dsFastError.hecErrors);
-+ ptidsl->AppData.usIHEC_errors = dslhal_support_byteSwap32((unsigned int)usIntlvError.hecErrors);
-+ ptidsl->AppData.usFHEC_errors = dslhal_support_byteSwap32((unsigned int)usFastError.hecErrors);
-+
-+ /* Get LOS and SEF error Stats */
-+ ptidsl->AppData.LOS_errors = dslhal_support_byteSwap32(StatisticsDef.losErrors);
-+ ptidsl->AppData.SEF_errors = dslhal_support_byteSwap32(StatisticsDef.sefErrors);
-+ ptidsl->AppData.coLosErrors = dslhal_support_byteSwap32(StatisticsDef.farEndLosErrors);
-+ ptidsl->AppData.coRdiErrors = dslhal_support_byteSwap32(StatisticsDef.farEndRdiErrors);
-+
-+ dspOamSharedInterface.atmStats_p = (DEV_HOST_atmStats_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.atmStats_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.atmStats_p,&atmStats, sizeof(DEV_HOST_atmStats_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+
-+ /* Populate the US/DS ATM Stats Variables */
-+
-+ /* US ATM Statistics */
-+
-+ /* Change the endianness of the Pointer */
-+ atmStats.us0_p = (DEV_HOST_usAtmStats_t *) dslhal_support_byteSwap32((unsigned int)atmStats.us0_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)atmStats.us0_p,&usAtmStats0, (sizeof(DEV_HOST_usAtmStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+ /* Change the endianness of the Pointer */
-+ atmStats.us1_p = (DEV_HOST_usAtmStats_t *) dslhal_support_byteSwap32((unsigned int)atmStats.us1_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)atmStats.us1_p,&usAtmStats1, (sizeof(DEV_HOST_usAtmStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+
-+ /* DS ATM Statistics */
-+
-+ /* Change the endianness of the Pointer */
-+ atmStats.ds0_p = (DEV_HOST_dsAtmStats_t *) dslhal_support_byteSwap32((unsigned int)atmStats.ds0_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)atmStats.ds0_p,&dsAtmStats0, (sizeof(DEV_HOST_dsAtmStats_t)));
-+
-+ if (rc)
-+ return;
-+
-+ /* Change the endianness of the Pointer */
-+ atmStats.ds1_p = (DEV_HOST_dsAtmStats_t *) dslhal_support_byteSwap32((unsigned int)atmStats.ds1_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)atmStats.ds1_p,&dsAtmStats1, (sizeof(DEV_HOST_dsAtmStats_t)));
-+
-+ if (rc)
-+ return;
-+ /* Get ATM Stats for both US and DS Channel 0*/
-+ ptidsl->AppData.usAtm_count[0] = dslhal_support_byteSwap32(usAtmStats0.goodCount);
-+ ptidsl->AppData.usIdle_count[0] = dslhal_support_byteSwap32(usAtmStats0.idleCount);
-+#if SWTC
-+ ptidsl->AppData.usPdu_count[0] = dslhal_support_byteSwap32(usAtmStats0.pduCount);
-+#endif
-+ ptidsl->AppData.dsGood_count[0] = dslhal_support_byteSwap32(dsAtmStats0.goodCount);
-+ ptidsl->AppData.dsIdle_count[0] = dslhal_support_byteSwap32(dsAtmStats0.idleCount);
-+#if SWTC
-+ ptidsl->AppData.dsPdu_count[0] = dslhal_support_byteSwap32(dsAtmStats0.pduCount);
-+#endif
-+ ptidsl->AppData.dsBadHec_count[0] = dslhal_support_byteSwap32((dsAtmStats0.badHecCount));
-+ ptidsl->AppData.dsOVFDrop_count[0] = dslhal_support_byteSwap32((dsAtmStats0.ovflwDropCount));
-+
-+ /* Get ATM Stats for both US and DS Channel 1*/
-+ ptidsl->AppData.usAtm_count[1] = dslhal_support_byteSwap32(usAtmStats1.goodCount);
-+ ptidsl->AppData.usIdle_count[1] = dslhal_support_byteSwap32(usAtmStats1.idleCount);
-+#if SWTC
-+ ptidsl->AppData.usPdu_count[1] = dslhal_support_byteSwap32(usAtmStats1.pduCount);
-+#endif
-+ ptidsl->AppData.dsGood_count[1] = dslhal_support_byteSwap32(dsAtmStats1.goodCount);
-+ ptidsl->AppData.dsIdle_count[1] = dslhal_support_byteSwap32(dsAtmStats1.idleCount);
-+#if SWTC
-+ ptidsl->AppData.dsPdu_count[1] = dslhal_support_byteSwap32(dsAtmStats1.pduCount);
-+#endif
-+ ptidsl->AppData.dsBadHec_count[1] = dslhal_support_byteSwap32((dsAtmStats1.badHecCount));
-+ ptidsl->AppData.dsOVFDrop_count[1] = dslhal_support_byteSwap32((dsAtmStats1.ovflwDropCount));
-+
-+
-+ /* Determine the US and DS Superframe Count */
-+
-+ dspOamSharedInterface.dspWriteSuperFrameCnt_p = (DEV_HOST_dspWrSuperFrameCntDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.dspWriteSuperFrameCnt_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.dspWriteSuperFrameCnt_p,&SuperFrameCnt, sizeof(DEV_HOST_dspWrSuperFrameCntDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+
-+ ptidsl->AppData.usSuperFrmCnt = dslhal_support_byteSwap32(SuperFrameCnt.wSuperFrameCntUstrm);
-+ ptidsl->AppData.dsSuperFrmCnt = dslhal_support_byteSwap32(SuperFrameCnt.wSuperFrameCntDstrm);
-+
-+ /* Determine Frame Mode and Max Frame Mode */
-+
-+ dspOamSharedInterface.atucMsg_p = (DEV_HOST_msg_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.atucMsg_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.atucMsg_p,&atuc_msg, sizeof(DEV_HOST_msg_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+
-+ ptidsl->AppData.FrmMode = (unsigned int)atuc_msg.framingMode;
-+ ptidsl->AppData.MaxFrmMode = (unsigned int)atuc_msg.maxFrameMode;
-+
-+ /* Determine Gross Gain */
-+
-+ dspOamSharedInterface.aturMsg_p = (DEV_HOST_msg_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.aturMsg_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.aturMsg_p,&aturMsg, sizeof(DEV_HOST_msg_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+ ptidsl->AppData.grossGain = (unsigned int)aturMsg.grossGain;
-+ /* Determine DS Line Attenuation & Margin */
-+ dspOamSharedInterface.eocVar_p = (DEV_HOST_eocVarDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.eocVar_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.eocVar_p,&eocVar, sizeof(DEV_HOST_eocVarDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return;
-+ }
-+
-+ ptidsl->AppData.dsLineAttn = (unsigned int)eocVar.lineAtten;
-+ ptidsl->AppData.dsMargin = (unsigned int)eocVar.dsMargin;
-+ }
-+
-+#if __HOST_FORINTERNALUSEONLY_R_H__
-+ ptidsl->AppData.BER = dslhal_INTERNAL_computeAtmBitErrorRate(ptidsl);
-+#endif
-+ dprintf(5, "initstatistics done\n");
-+ return;
-+ }
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_disableLosAlarm(tidsl_t *ptidsl,unsigned int set)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction enables/disables all the LOS alarms
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * unsigned int set; //if set is TRUE: LOS Alarms are disabled else enabled
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ * NOTES: Currently not supported in any version other than MR4 Patch release..
-+ *****************************************************************************************/
-+unsigned int dslhal_api_disableLosAlarm(tidsl_t *ptidsl,unsigned int set)
-+{
-+ DEV_HOST_oamWrNegoParaDef_t NegoPara;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ int rc;
-+ dprintf(5," dslhal_api_setTrainingMode()\n");
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,
-+ sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.oamWriteNegoParams_p = (DEV_HOST_oamWrNegoParaDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.oamWriteNegoParams_p);
-+
-+ rc = dslhal_support_blockRead((PVOID) dspOamSharedInterface.oamWriteNegoParams_p,&NegoPara, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ if(set)
-+ {
-+ NegoPara.disableLosAlarm = TRUE;
-+ /* NegoPara.marginMonitorTrning = TRUE;
-+ NegoPara.marginMonitorShwtme = TRUE;*/
-+ }
-+ else
-+ {
-+ NegoPara.disableLosAlarm = FALSE;
-+ /* NegoPara.marginMonitorTrning = FALSE;
-+ NegoPara.marginMonitorShwtme = FALSE;*/
-+ }
-+
-+ rc = dslhal_support_blockWrite(&NegoPara,(PVOID)dspOamSharedInterface.oamWriteNegoParams_p, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+ dprintf(5," dslhal_api_disableLosAlarm() Done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_setMarginThreshold(tidsl_t *ptidsl,int threshold)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction does sets the Margin threshold
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * int threshold
-+ *
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_setMarginThreshold(tidsl_t *ptidsl, int threshold)
-+{
-+ DEV_HOST_oamWrNegoParaDef_t NegoPara;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ int rc;
-+
-+ dprintf(5," dslhal_ctrl_setThreshold()\n");
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.oamWriteNegoParams_p = (DEV_HOST_oamWrNegoParaDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.oamWriteNegoParams_p);
-+
-+
-+ rc = dslhal_support_blockRead((PVOID) dspOamSharedInterface.oamWriteNegoParams_p,&NegoPara, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ NegoPara.marginThreshold = threshold;
-+
-+ rc = dslhal_support_blockWrite(&NegoPara,dspOamSharedInterface.oamWriteNegoParams_p, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+
-+ if(rc)
-+ return DSLHAL_ERROR_MARGIN_API_FAILURE;
-+
-+ dprintf(5," dslhal_api_setThreshold() Done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_setMonitorFlags(tidsl_t *ptidsl, unsigned int trainflag,unsigned int shwtflag)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction does sets the Margin monitoring flag
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * unsigned int trainflag
-+ * unsigned int shwtflag
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_setMarginMonitorFlags(tidsl_t *ptidsl,unsigned int trainflag,unsigned int shwtflag)
-+{
-+ DEV_HOST_oamWrNegoParaDef_t NegoPara;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ int rc;
-+
-+ dprintf(5," dslhal_ctrl_setMonitorFlags()\n");
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.oamWriteNegoParams_p = (DEV_HOST_oamWrNegoParaDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.oamWriteNegoParams_p);
-+
-+
-+ rc = dslhal_support_blockRead((PVOID) dspOamSharedInterface.oamWriteNegoParams_p,&NegoPara, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ if (trainflag)
-+ {
-+ NegoPara.marginMonitorTrning = TRUE;
-+ }
-+ else
-+ {
-+ NegoPara.marginMonitorTrning = FALSE;
-+ }
-+ if (shwtflag)
-+ {
-+ NegoPara.marginMonitorShwtme = TRUE;
-+ }
-+ else
-+ {
-+ NegoPara.marginMonitorShwtme = FALSE;
-+ }
-+
-+ rc = dslhal_support_blockWrite(&NegoPara,dspOamSharedInterface.oamWriteNegoParams_p, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ if(rc)
-+ return DSLHAL_ERROR_MARGIN_API_FAILURE;
-+ dprintf(5," dslhal_api_setMonitorFlags() Done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_setEocSerialNumber(tidsl_t *ptidsl,char *SerialNum)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction Sets the eoc Serial Number
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * char *SerialNum : Input eoc Serial Number
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_setEocSerialNumber(tidsl_t *ptidsl,char *SerialNumber)
-+{
-+ DEV_HOST_eocVarDef_t eocVar;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ int rc;
-+ dprintf(5," dslhal_api_setEocSerialNumber()\n");
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.eocVar_p = (DEV_HOST_eocVarDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.eocVar_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.eocVar_p,
-+ &eocVar, sizeof(DEV_HOST_eocVarDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ shim_osMoveMemory(eocVar.serialNumber,SerialNumber,32);
-+
-+ rc= dslhal_support_blockWrite(&eocVar,dspOamSharedInterface.eocVar_p,sizeof(DEV_HOST_eocVarDef_t));
-+ if(rc)
-+ return DSLHAL_ERROR_EOCREG_API_FAILURE;
-+ dprintf(5," dslhal_api_setEocSerialNumber() Done\n");
-+
-+ return DSLHAL_ERROR_NO_ERRORS;
-+
-+}
-+
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_setEocVendorId(tidsl_t *ptidsl,char *VendorID)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction Sets the eoc Vendor ID
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * char *VendorID : Input eoc Vendor ID
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_setEocVendorId(tidsl_t *ptidsl,char *VendorID)
-+{
-+ DEV_HOST_oamWrNegoParaDef_t NegoPara;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ int rc;
-+ dprintf(5," dslhal_api_setEocVendorId()\n");
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.oamWriteNegoParams_p = (DEV_HOST_oamWrNegoParaDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.oamWriteNegoParams_p);
-+
-+
-+ rc = dslhal_support_blockRead((PVOID) dspOamSharedInterface.oamWriteNegoParams_p,&NegoPara, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ shim_osMoveMemory(NegoPara.gdmtVendorId,VendorID,8);
-+ rc= dslhal_support_blockWrite(&NegoPara,dspOamSharedInterface.oamWriteNegoParams_p, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ if(rc)
-+ return DSLHAL_ERROR_EOCREG_API_FAILURE;
-+
-+ dprintf(5," dslhal_api_setEocVendorId() Done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_setEocRevisionNumber(tidsl_t *ptidsl,char *RevNum)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction Sets the eoc Revision Number
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * char *RevNum : Input eoc Revision Number
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_setEocRevisionNumber(tidsl_t *ptidsl,char *RevNumber)
-+{
-+
-+ DEV_HOST_eocVarDef_t eocVar;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ int rc;
-+ /*add for UR2 test */
-+ UINT8 selfTestResults[2];
-+ memset(selfTestResults,0x00,sizeof(selfTestResults));
-+ /* add for UR2 test */
-+ dprintf(5," dslhal_api_setEocRevisionNumber()\n");
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.eocVar_p = (DEV_HOST_eocVarDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.eocVar_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.eocVar_p,
-+ &eocVar, sizeof(DEV_HOST_eocVarDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ shim_osMoveMemory(eocVar.revNumber,RevNumber,4);
-+ /* add for UR2 test */
-+ shim_osMoveMemory(eocVar.dummy,selfTestResults,2);
-+ /* add for UR2 test */
-+ rc=dslhal_support_blockWrite(&eocVar,dspOamSharedInterface.eocVar_p,sizeof(DEV_HOST_eocVarDef_t));
-+ if(rc)
-+ return DSLHAL_ERROR_EOCREG_API_FAILURE;
-+ dprintf(5," dslhal_api_setEocRevisionNumber Done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_setAturConfig(tidsl_t *ptidsl,char *ATURConfig)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction Sets the eoc ATUR Config Register
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * char *ATURConfig : Input eoc ATUR Config Register
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_setAturConfig(tidsl_t *ptidsl,char *ATURConfig)
-+{
-+
-+ DEV_HOST_eocVarDef_t eocVar;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ int rc;
-+ dprintf(5," dslhal_api_setAturConfig()\n");
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.eocVar_p = (DEV_HOST_eocVarDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.eocVar_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.eocVar_p,
-+ &eocVar, sizeof(DEV_HOST_eocVarDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ shim_osMoveMemory(eocVar.aturConfig,ATURConfig,30);
-+ rc= dslhal_support_blockWrite(&eocVar,dspOamSharedInterface.eocVar_p,sizeof(DEV_HOST_eocVarDef_t));
-+ if(rc)
-+ return DSLHAL_ERROR_EOCREG_API_FAILURE;
-+ dprintf(5," dslhal_api_setAturConfig() Done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_setRateAdaptFlag(tidsl_t *ptidsl,unsigned int flag)
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction Sets the Rate Adapt Enable Flag
-+*
-+* INPUT: PITIDSLHW_T *ptidsl
-+* unsigned int flag; //if flag = TRUE set rateadapt flag else reset it
-+* RETURN: 0 SUCCESS
-+* 1 FAILED
-+*
-+*****************************************************************************************/
-+unsigned int dslhal_api_setRateAdaptFlag(tidsl_t *ptidsl,unsigned int flag)
-+{
-+ DEV_HOST_msg_t aturMsg;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ int rc;
-+ dprintf(5," dslhal_api_setRateAdaptFlag()\n");
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.aturMsg_p = (DEV_HOST_msg_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.aturMsg_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.aturMsg_p,
-+ &aturMsg, sizeof(DEV_HOST_msg_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ if(flag)
-+ aturMsg.rateAdapt = TRUE;
-+ else
-+ aturMsg.rateAdapt = FALSE;
-+
-+ rc= dslhal_support_blockWrite(&aturMsg,dspOamSharedInterface.aturMsg_p,sizeof(DEV_HOST_msg_t));
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+ dprintf(5," dslhal_api_setRateAdaptFlag() Done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_setTrellisFlag(tidsl_t *ptidsl,unsigned int flag)
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction Sets the Trellis Coding Enable Flag
-+*
-+* INPUT: PITIDSLHW_T *ptidsl
-+* unsigned int flag; // if flag = TRUE, set trellis flag else reset
-+* RETURN: 0 SUCCESS
-+* 1 FAILED
-+*
-+*****************************************************************************************/
-+unsigned int dslhal_api_setTrellisFlag(tidsl_t *ptidsl,unsigned int flag)
-+{
-+
-+ DEV_HOST_msg_t aturMsg;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ DEV_HOST_oamWrNegoParaDef_t negoPara;
-+ int rc;
-+ dprintf(5," dslhal_api_setTrellisFlag()\n");
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.aturMsg_p = (DEV_HOST_msg_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.aturMsg_p);
-+ rc += dslhal_support_blockRead((PVOID)dspOamSharedInterface.aturMsg_p,&aturMsg, sizeof(DEV_HOST_msg_t));
-+ dspOamSharedInterface.oamWriteNegoParams_p = (DEV_HOST_oamWrNegoParaDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.oamWriteNegoParams_p);
-+ rc += dslhal_support_blockRead((PVOID) dspOamSharedInterface.oamWriteNegoParams_p,&negoPara, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ if(flag)
-+ {
-+ aturMsg.trellis = TRUE;
-+ negoPara.rMsgs1[2] |= 0x02;
-+ }
-+ else
-+ {
-+ aturMsg.trellis = FALSE;
-+ negoPara.rMsgs1[2] &= 0xFD;
-+ }
-+ rc=0;
-+ rc+=dslhal_support_blockWrite(&aturMsg,dspOamSharedInterface.aturMsg_p,sizeof(DEV_HOST_msg_t));
-+ rc+= dslhal_support_blockWrite(&negoPara,dspOamSharedInterface.oamWriteNegoParams_p, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+
-+ dprintf(5," dslhal_api_setTrellisFlag() Done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_setMaxBitsPerCarrier(tidsl_t *ptidsl,unsigned int maxbits)
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction Sets the Maximum bits per carrier value
-+*
-+* INPUT: PITIDSLHW_T *ptidsl
-+* unsigned int maxbits : should be a value between 0-15
-+*
-+* RETURN: 0 SUCCESS
-+* 1 FAILED
-+*
-+*****************************************************************************************/
-+unsigned int dslhal_api_setMaxBitsPerCarrier(tidsl_t *ptidsl,unsigned int maxbits)
-+{
-+
-+ DEV_HOST_msg_t aturMsg;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ int rc;
-+
-+ dprintf(5," dslhal_api_setMaxBitsPerCarrier()\n");
-+ if(maxbits>15)
-+ {
-+ dprintf(3,"Maximum Number of Bits per carrier cannot exceed 15!\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.aturMsg_p = (DEV_HOST_msg_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.aturMsg_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.aturMsg_p,
-+ &aturMsg, sizeof(DEV_HOST_msg_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ aturMsg.maxBits = maxbits;
-+
-+ rc=dslhal_support_blockWrite(&aturMsg,dspOamSharedInterface.aturMsg_p,sizeof(DEV_HOST_msg_t));
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+ dprintf(5," dslhal_api_setMaxBitsPerCarrier() Done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_setMaxInterleaverDepth(tidsl_t *ptidsl,unsigned int maxdepth)
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction Sets the Maximum Interleave Depth Supported
-+*
-+* INPUT: PITIDSLHW_T *ptidsl
-+* unsigned int maxdepth : Should be between 0 and 3 depending on intlv buffer
-+* size 64-512
-+* RETURN: 0 SUCCESS
-+* 1 FAILED
-+*
-+*****************************************************************************************/
-+unsigned int dslhal_api_setMaxInterleaverDepth(tidsl_t *ptidsl,unsigned int maxdepth)
-+{
-+ DEV_HOST_msg_t aturMsg;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ int rc;
-+ dprintf(5," dslhal_api_setMaxInterleaverDepth()\n");
-+ if(maxdepth>3)
-+ {
-+ dprintf(3,"Invalid Value for maximum interleave depth (must be <3)\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.aturMsg_p = (DEV_HOST_msg_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.aturMsg_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.aturMsg_p,
-+ &aturMsg, sizeof(DEV_HOST_msg_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ aturMsg.maxIntlvDepth = maxdepth;
-+
-+ rc=dslhal_support_blockWrite(&aturMsg,dspOamSharedInterface.aturMsg_p,sizeof(DEV_HOST_msg_t));
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+ dprintf(5," dslhal_api_setMaxInterleaverDepth() Done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_acknowledgeInterrupt()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_acknowledgeInterrupt(tidsl_t * ptidsl)
-+{
-+ unsigned int interruptSources=0;
-+ /* Clear out the DSLSS Interrupt Registers to acknowledge Interrupt */
-+ if(DSLHAL_REG32(dslhal_support_hostDspAddressTranslate(DSP_INTERRUPT_SOURCE_REGISTER))&MASK_MAILBOX_INTERRUPTS)
-+ {
-+ DSLHAL_REG32(dslhal_support_hostDspAddressTranslate(DSP_INTERRUPT_CLEAR_REGISTER))|=MASK_MAILBOX_INTERRUPTS;
-+ dprintf(5,"Mailbox Interrupt \n");
-+ }
-+ if(DSLHAL_REG32(dslhal_support_hostDspAddressTranslate(DSP_INTERRUPT_SOURCE_REGISTER))&MASK_BITFIELD_INTERRUPTS)
-+ {
-+ DSLHAL_REG32(dslhal_support_hostDspAddressTranslate(DSP_INTERRUPT_CLEAR_REGISTER))|=MASK_BITFIELD_INTERRUPTS;
-+ dprintf(5,"Bitfield Interrupt \n");
-+ }
-+ if(DSLHAL_REG32(dslhal_support_hostDspAddressTranslate(DSP_INTERRUPT_SOURCE_REGISTER))&MASK_HEARTBEAT_INTERRUPTS)
-+ {
-+ DSLHAL_REG32(dslhal_support_hostDspAddressTranslate(DSP_INTERRUPT_CLEAR_REGISTER))|=MASK_HEARTBEAT_INTERRUPTS;
-+ dprintf(5,"HeartBeat Interrupt \n");
-+ }
-+ interruptSources = dslhal_support_parseInterruptSource(ptidsl);
-+ if(interruptSources < 0)
-+ return DSLHAL_ERROR_INTERRUPT_FAILURE;
-+ else
-+ return interruptSources;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_disableDspHybridSelect()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_disableDspHybridSelect(tidsl_t * ptidsl,unsigned int disable)
-+{
-+ int rc;
-+ DEV_HOST_phyPerf_t phyPerf;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.phyPerf_p = (DEV_HOST_phyPerf_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.phyPerf_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.phyPerf_p,
-+ &phyPerf, sizeof(DEV_HOST_phyPerf_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ if(disable==1)
-+ {
-+ phyPerf.disableDspHybridSelect_f = TRUE;
-+ // hybrid_selected = 888;
-+ }
-+ else
-+ {
-+ phyPerf.disableDspHybridSelect_f = FALSE;
-+ // hybrid_selected = 888;
-+ }
-+ rc=dslhal_support_blockWrite(&phyPerf,dspOamSharedInterface.phyPerf_p,sizeof(DEV_HOST_phyPerf_t));
-+ if(rc)
-+ return DSLHAL_ERROR_HYBRID_API_FAILURE;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_selectHybrid()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_selectHybrid(tidsl_t * ptidsl,unsigned int hybridNum)
-+{
-+ int rc;
-+ DEV_HOST_phyPerf_t phyPerf;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ if(hybridNum<1||hybridNum>4)
-+ {
-+ dprintf(3,"Invalid Value for Hybrid Number \n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.phyPerf_p = (DEV_HOST_phyPerf_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.phyPerf_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.phyPerf_p,
-+ &phyPerf, sizeof(DEV_HOST_phyPerf_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ phyPerf.hostSelectHybridNum = hybridNum;
-+ rc=dslhal_support_blockWrite(&phyPerf,dspOamSharedInterface.phyPerf_p,sizeof(DEV_HOST_phyPerf_t));
-+ if(rc)
-+ return DSLHAL_ERROR_HYBRID_API_FAILURE;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_reportHybridMetrics()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_reportHybridMetrics(tidsl_t * ptidsl,int *metric)
-+{
-+ int rc,i;
-+ DEV_HOST_phyPerf_t phyPerf;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ if(hybrid_selected>5)
-+ {
-+ dprintf(4,"Hybrid Metrics Not Yet Available \n");
-+ }
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return (0-DSLHAL_ERROR_INVALID_PARAM);
-+ }
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return (0-DSLHAL_ERROR_BLOCK_READ);
-+ }
-+
-+ dspOamSharedInterface.phyPerf_p = (DEV_HOST_phyPerf_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.phyPerf_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.phyPerf_p,
-+ &phyPerf, sizeof(DEV_HOST_phyPerf_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return (0-DSLHAL_ERROR_BLOCK_READ);
-+ }
-+ rc = sizeof(phyPerf.hybridCost);
-+ for(i=0;i<(rc/4);i++)
-+ {
-+ metric[i] = dslhal_support_byteSwap32(phyPerf.hybridCost[i]);
-+ }
-+ return hybrid_selected;
-+}
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_selectInnerOuterPair(tidsl_t *ptidsl,unsigned int pairSelect)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction selects inner/outer pair on RJ11.
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl , unsigned int pairSelect
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_selectInnerOuterPair(tidsl_t *ptidsl,unsigned int pairSelect)
-+{
-+ int rc;
-+
-+ dprintf(5, "dslhal_api_sendQuiet\n");
-+ rc = dslhal_support_writeHostMailbox(ptidsl, HOST_RJ11SELECT, (unsigned int)pairSelect, 0, 0);
-+ if(rc)
-+ {
-+ dprintf(1,"dslhal_api_sendQuiet failed\n");
-+ return DSLHAL_ERROR_CTRL_API_FAILURE;
-+ }
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_resetTrainFailureLog(tidsl_t *ptidsl)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction resets the failed state log stored
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_resetTrainFailureLog(tidsl_t *ptidsl)
-+{
-+
-+ int rc;
-+ dprintf(5, "dslhal_api_resetTrainFailureLog \n");
-+ for(rc=0;rc<ptidsl->AppData.trainFails;rc++)
-+ {
-+ ptidsl->AppData.trainFailStates[rc]=0;
-+ }
-+ ptidsl->AppData.trainFails = 0;
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_configureLed()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_configureLed(tidsl_t * ptidsl,unsigned int idLed, unsigned int onOff)
-+{
-+ int rc;
-+ DEV_HOST_modemEnvPublic_t modemEnv;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ if(idLed>2 || onOff>2)
-+ {
-+ dprintf(3,"Invalid input parameter \n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.modemEnvPublic_p = (DEV_HOST_modemEnvPublic_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.modemEnvPublic_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.modemEnvPublic_p,
-+ &modemEnv, sizeof(DEV_HOST_modemEnvPublic_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ if(idLed==ID_DSL_LINK_LED)
-+ {
-+ modemEnv.overrideDslLinkLed_f = TRUE;
-+ if(onOff!=2)
-+ modemEnv.dslLinkLedState_f = onOff;
-+ }
-+ if(idLed==ID_DSL_ACT_LED)
-+ {
-+ modemEnv.overrideDslLinkLed_f = TRUE;
-+ if(onOff!=2)
-+ modemEnv.dslLinkLedState_f = onOff;
-+ }
-+ if(idLed==ID_RESTORE_DEFAULT_LED)
-+ {
-+ modemEnv.overrideDslLinkLed_f = FALSE;
-+ modemEnv.overrideDslActLed_f = FALSE;
-+ }
-+ rc=dslhal_support_blockWrite(&modemEnv,dspOamSharedInterface.modemEnvPublic_p,sizeof(DEV_HOST_modemEnvPublic_t));
-+ if(rc)
-+ return DSLHAL_ERROR_MODEMENV_API_FAILURE;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_configureExternBert()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_configureExternBert(tidsl_t * ptidsl,unsigned int configParm, unsigned int parmVal)
-+{
-+ int rc;
-+ DEV_HOST_modemEnvPublic_t modemEnv;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ if(configParm>1 || parmVal>1)
-+ {
-+ dprintf(3,"Invalid input parameter \n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.modemEnvPublic_p = (DEV_HOST_modemEnvPublic_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.modemEnvPublic_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.modemEnvPublic_p,
-+ &modemEnv, sizeof(DEV_HOST_modemEnvPublic_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ if(configParm==0)
-+ {
-+ modemEnv.externalBert = parmVal;
-+ }
-+ if(configParm==1)
-+ {
-+ modemEnv.usBertPattern = parmVal;
-+ }
-+ rc=dslhal_support_blockWrite(&modemEnv,dspOamSharedInterface.modemEnvPublic_p,sizeof(DEV_HOST_modemEnvPublic_t));
-+ if(rc)
-+ return DSLHAL_ERROR_MODEMENV_API_FAILURE;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_configureAtmBert()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_configureAtmBert(tidsl_t * ptidsl,unsigned int configParm, unsigned int parmVal)
-+{
-+ int rc;
-+ DEV_HOST_atmDsBert_t atmDsBert;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ if(configParm>1 || parmVal>1)
-+ {
-+ dprintf(3,"Invalid input parameter \n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.atmDsBert_p = (DEV_HOST_atmDsBert_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.atmDsBert_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.atmDsBert_p,
-+ &atmDsBert, sizeof(DEV_HOST_atmDsBert_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ if(configParm==0)
-+ {
-+ atmDsBert.atmBertFlag = parmVal;
-+ rc=dslhal_support_blockWrite(&atmDsBert,dspOamSharedInterface.atmDsBert_p,sizeof(DEV_HOST_atmDsBert_t));
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+ }
-+ if(configParm==1)
-+ {
-+ ptidsl->AppData.atmBertBitCountLow = atmDsBert.bitCountLow;
-+ ptidsl->AppData.atmBertBitCountHigh = atmDsBert.bitCountHigh;
-+ ptidsl->AppData.atmBertBitErrorCountLow = atmDsBert.bitErrorCountLow;
-+ ptidsl->AppData.atmBertBitErrorCountHigh = atmDsBert.bitErrorCountHigh;
-+ }
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_configureDgaspLpr()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Configures dying gasp LPR signal
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_configureDgaspLpr(tidsl_t * ptidsl,unsigned int configParm, unsigned int parmVal)
-+{
-+ int rc;
-+ DEV_HOST_modemEnvPublic_t modemEnv;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ if(configParm>1 || parmVal>1)
-+ {
-+ dprintf(3,"Invalid input parameter \n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ if(!ptidsl)
-+ {
-+ dprintf(3, "Error: PTIDSL pointer invalid\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.modemEnvPublic_p = (DEV_HOST_modemEnvPublic_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.modemEnvPublic_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.modemEnvPublic_p,
-+ &modemEnv, sizeof(DEV_HOST_modemEnvPublic_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ if(configParm==0)
-+ {
-+ modemEnv.dGaspLprIndicator_f = parmVal;
-+ }
-+ if(configParm==1)
-+ {
-+ modemEnv.overrideDspLprGasp_f = parmVal;
-+ }
-+ rc=dslhal_support_blockWrite(&modemEnv,dspOamSharedInterface.modemEnvPublic_p,sizeof(DEV_HOST_modemEnvPublic_t));
-+ if(rc)
-+ return DSLHAL_ERROR_MODEMENV_API_FAILURE;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_genericDspRead()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Reads from a Generic Location in the DSP Host Interface
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_genericDspRead(tidsl_t * ptidsl,unsigned int offset1, unsigned int offset2,
-+ unsigned int offset3, unsigned char *localBuffer, unsigned int numBytes)
-+{
-+ int rc=0;
-+ unsigned int hostIfLoc,structLoc,elementLoc;
-+ hostIfLoc = (unsigned int)ptidsl->pmainAddr;
-+ if(numBytes<=0 || !localBuffer || !ptidsl)
-+ {
-+ dprintf(3,"Invalid input parameter \n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ rc += dslhal_support_blockRead((PVOID)(hostIfLoc+sizeof(int)*offset1), &structLoc,sizeof(int));
-+ structLoc = dslhal_support_byteSwap32(structLoc);
-+ rc += dslhal_support_blockRead((PVOID)(structLoc+sizeof(int)*offset2), &elementLoc,sizeof(int));
-+ elementLoc = dslhal_support_byteSwap32(elementLoc);
-+ dprintf(3,"Host IF Location: 0x%x Struct1 Location: 0x%x Element Location: 0x%x \n",hostIfLoc, structLoc, elementLoc);
-+ rc += dslhal_support_blockRead((PVOID)(elementLoc+(offset3*4)), localBuffer,numBytes);
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_genericDspWrite()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Writes to a Generic Location in the DSP Host Interface
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_genericDspWrite(tidsl_t * ptidsl,unsigned int offset1, unsigned int offset2,
-+ unsigned int offset3, unsigned char *localBuffer, unsigned int numBytes)
-+{
-+
-+ int rc=0;
-+ unsigned int hostIfLoc,structLoc,elementLoc;
-+ hostIfLoc = (unsigned int)ptidsl->pmainAddr;
-+ if(numBytes<=0 || !localBuffer || !ptidsl)
-+ {
-+ dprintf(3,"Invalid input parameter \n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ rc += dslhal_support_blockRead((PVOID)(hostIfLoc+(offset1*4)), &structLoc,4);
-+ structLoc = dslhal_support_byteSwap32(structLoc);
-+ rc += dslhal_support_blockRead((PVOID)(structLoc+(offset2*4)), &elementLoc,4);
-+ elementLoc = dslhal_support_byteSwap32(elementLoc);
-+ dprintf(3,"Host IF Location: 0x%x Struct1 Location: 0x%x Element Location: 0x%x \n",hostIfLoc, structLoc, elementLoc);
-+ rc += dslhal_support_blockWrite(localBuffer,(PVOID)(elementLoc+(offset3*4)),numBytes);
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_dspInterfaceRead()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Reads from a Generic Location in the DSP Host Interface
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_dspInterfaceRead(tidsl_t * ptidsl,unsigned int baseAddr, unsigned int numOffsets,
-+ unsigned int *offsets, unsigned char *localBuffer, unsigned int numBytes)
-+{
-+ int rc=0, off=0;
-+ unsigned int prevAddr,currAddr;
-+ prevAddr = baseAddr;
-+ if(numBytes<=0 || !localBuffer || !ptidsl || !offsets)
-+ {
-+ dprintf(3,"Invalid input parameter \n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ for(off=0;off<numOffsets-1;off++)
-+ {
-+ rc += dslhal_support_blockRead((PVOID)(prevAddr+(4*offsets[off])), &currAddr,4);
-+ currAddr = dslhal_support_byteSwap32(currAddr);
-+ prevAddr = currAddr;
-+ dprintf(5,"Curr Addr = 0x%x Current Level: %d \n",currAddr,off);
-+ }
-+ currAddr = currAddr + offsets[numOffsets-1]*4;
-+ rc += dslhal_support_blockRead((PVOID)(currAddr),localBuffer,numBytes);
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_dspInterfaceWrite()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Writes to a Generic Location in the DSP Host Interface
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_dspInterfaceWrite(tidsl_t * ptidsl,unsigned int baseAddr, unsigned int numOffsets,
-+ unsigned int *offsets,unsigned char *localBuffer, unsigned int numBytes)
-+{
-+
-+ int rc=0, off=0;
-+ unsigned int prevAddr,currAddr;
-+ prevAddr = baseAddr;
-+ if(numBytes<=0 || !localBuffer || !ptidsl || !offsets)
-+ {
-+ dprintf(3,"Invalid input parameter \n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+ for(off=0;off<numOffsets-1;off++)
-+ {
-+ rc += dslhal_support_blockRead((PVOID)(prevAddr+(4*offsets[off])), &currAddr,4);
-+ currAddr = dslhal_support_byteSwap32(currAddr);
-+ prevAddr = currAddr;
-+ dprintf(5,"Curr Addr = 0x%x Current Level: %d \n",currAddr,off);
-+ }
-+ currAddr = currAddr + offsets[numOffsets-1]*4;
-+ rc += dslhal_support_blockWrite(localBuffer,(PVOID)(currAddr),numBytes);
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_sendMailboxCommand(tidsl_t *ptidsl, unsigned int cmd)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction sends the passed mailbox command to the DSP
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * unsigned int cmd
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+/* Function is commented out for now since, its not tested */
-+ /*unsigned int dslhal_api_sendMailboxCommand(tidsl_t *ptidsl, unsigned int cmd)
-+{
-+ int rc;
-+
-+ dprintf(5, "dslhal_api_sendMailboxCommand\n");
-+ rc = dslhal_support_writeHostMailbox(ptidsl, cmd, 0, 0, 0);
-+ if(rc)
-+ {
-+ dprintf(1,"dslhal_api_sendMailboxCommand failed\n");
-+ return DSLHAL_ERROR_CTRL_API_FAILURE;
-+ }
-+ return DSLHAL_ERROR_NO_ERRORS;
-+} */
-+
-+
-diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_api.h linux.dev/drivers/atm/sangam_atm/dsl_hal_api.h
---- linux.old/drivers/atm/sangam_atm/dsl_hal_api.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_api.h 2005-08-23 04:46:50.097843696 +0200
-@@ -0,0 +1,1721 @@
-+#ifndef __DSL_HAL_API_H__
-+#define __DSL_HAL_API_H__ 1
-+/*******************************************************************************
-+* FILE PURPOSE: DSL HAL to Application Interface for Sangam
-+*
-+********************************************************************************
-+* FILE NAME: dsl_application_interface.h
-+*
-+* DESCRIPTION:
-+* DSL-Application Interface Structures
-+*
-+*
-+* By: Ramakrishnan Parasuraman
-+*
-+* (C) Copyright 2003, Texas Instruments, Inc.
-+* History
-+* Data Version By Notes
-+* 06Feb03 0.00 RamP Initial Version Written
-+* 07Apr03 0.01 RamP Commented out typedefs
-+* 09Apr03 0.02 RamP Added deviceContext and extended
-+* dspVer to include bugfixes
-+* 14Apr03 0.03 RamP Added stateTransition to structure
-+* 16Apr03 0.04 RamP Removed typedefs; changed dspVer
-+* 22Apr03 0.05 RamP Moved acknowledgeInterrupt from
-+* (alpha) support module into this
-+* 24Apr03 0.06 RamP Moved the RSTATE enum from register
-+*
-+* 28Apr03 0.07 RamP Added additional parameter to the
-+* (alpha +) handleInterrupt function for intrSrc
-+* 14May03 0.08 RamP Added hybrid switching APIs
-+* (alpha ++) Added statistics fields in AppData
-+* Added netService identifier
-+* 20May03 0.09 RamP Added Inner/Outer pair API support.
-+* Added dying gasp message.
-+* 29May03 0.10 RamP Added coProfile structure
-+* 04Jun03 0.11 RamP Added margin per tone statistics,
-+* Added timing counters, added train
-+* failure functions,added config flags
-+* 06Jun03 0.12 RamP Added LED, STM Bert, dGasp LPR
-+* config API functions
-+* 09Jun03 0.13 RamP Added ATM Bert function, CO stats
-+* Moved stateTransition to ITIDSLHW
-+* (Beta) Moved configFlag to ITIDSLHW,
-+* Cleaned up fifoInfo structure
-+* Added US/DS R/S FEC parameters
-+* 21Aug03 0.14 RamP Added g.hs message buffer, us/ds
-+* bits n gains table, negoMsgs struct
-+* (act) bitswap stucts/indices, trainstate,
-+* Added functions for advanced config
-+* Added gross gain and line length
-+* 29Sep03 0.15 RamP Added tokens for advanced config
-+* module api functions
-+* 12Oct03 0.16 RamP Added adsl2Msgs structure with worst
-+* case size for variable length msgs
-+* Added API function prototypes
-+* 21Oct03 0.17 RamP Added typedef for current modem
-+* user settings
-+* 28Oct03 0.18 RamP Added function to config blackout
-+* bitmap in the RMSGPCB message
-+* 20Nov03 0.19 RamP Added functions for generic and
-+* host interface read - write
-+* 24Nov03 0.20 RamP Added enum for detailed state track
-+* Added element for state bit fields
-+* Addded rState for encoded main state
-+* Added blackout valid flag
-+* 26Dec03 0.21 RamP Added defines for oamFeature masks
-+* 30Dec03 0.22 RamP Increased sizes for cMsgPcb,RMsgPcb
-+* to incorporate DELT mode messages
-+* 30Dec03 0.23 RamP Added generic mailbox command fxn
-+*******************************************************************************/
-+
-+#ifdef INTERNAL_BUILD
-+#include <dsl_hal_api_pvt.h>
-+#endif
-+
-+#define NUM_PAGES 4
-+#define OAMFEATURE_AUTORETRAIN_MASK 0x00000001
-+#define OAMFEATURE_TC_SYNC_DETECT_MASK 0x00000002
-+#define OAMFEATURE_EOCAOC_INTERRUPT_MASK 0x00000004
-+#define OAMFEATURE_CONS_DISP_DISABLE_MASK 0x00000008
-+#define OAMFEATURE_GHSMSG_INTERRUPT_MASK 0x00000010
-+
-+typedef struct tagTIOIDINFO
-+{
-+ unsigned int bState; /* addr->bDSPATURState */
-+ unsigned int USConRate; /* US Conection Rates */
-+ unsigned int DSConRate; /* DS Connection Rates */
-+ unsigned int USPayload; /* ennic_tx_pullup*/
-+ unsigned int DSPayload; /* ennic_indicate_receive_packet*/
-+ unsigned int FrmMode; /* addr->atur_msg.framing_mode*/
-+ unsigned int MaxFrmMode;
-+ unsigned int TrainedPath; /* Status of the Modem in which trained (Fast or Interleaved Path) */
-+ unsigned int TrainedMode; /* Status of the mode in which the modem is trained (G.dmt, T1.413, etc) */
-+
-+ /* Superframe Count */
-+ unsigned int usSuperFrmCnt; /* Num of US Superframes */
-+ unsigned int dsSuperFrmCnt; /* Num of DS Superframes */
-+
-+ /* LOS & SEF Stats */
-+ unsigned int LOS_errors; /* Num of ADSL frames where loss-of-sync */
-+ unsigned int SEF_errors; /* Num of severly errored ADSL frames - LOS > MAXBADSYNC ADSL frames */
-+ unsigned int coLosErrors; /* CO LOS Defects */
-+ unsigned int coRdiErrors; /* CO RDI defects */
-+ /* CRC Stats */
-+ unsigned int usICRC_errors; /* Num of Upstream CRC errored ADSL frames on Interleaved Path */
-+ unsigned int usFCRC_errors; /* Num of Upstream CRC errored ADSL frames on Fast Path */
-+ unsigned int dsICRC_errors; /* Num of Downstream CRC errored ADSL frames on Interleaved Path */
-+ unsigned int dsFCRC_errors; /* Num of Downstream CRC errored ADSL frames on Fast Path */
-+
-+ /* FEC Stats */
-+ unsigned int usIFEC_errors; /* Num of Upstream FEC errored (corrected) ADSL frames on Interleaved Path */
-+ unsigned int usFFEC_errors; /* Num of Upstream FEC errored (corrected) ADSL frames on Fast Path */
-+ unsigned int dsIFEC_errors; /* Num of Downstream FEC errored (corrected) ADSL frames on Interleaved Path */
-+ unsigned int dsFFEC_errors; /* Num of Downstream FEC errored (corrected) ADSL frames on Fast Path */
-+
-+ /* NCD Stats */
-+ unsigned int usINCD_error; /* UpStream No Cell Delineation on Interleaved Path */
-+ unsigned int usFNCD_error; /* UpStream No Cell Delineation on Fast Path */
-+ unsigned int dsINCD_error; /* Downstream No Cell Delineation on Interleaved Path */
-+ unsigned int dsFNCD_error; /* Downstream No Cell Delineation on Fast Path */
-+
-+ /* LCD Stats */
-+ unsigned int usILCD_errors; /* UpStream Loss of Cell Delineation (within the same connection) on Interleaved Path */
-+ unsigned int usFLCD_errors; /* UpStream Loss of Cell Delineation (within the same connection) on Fast Path */
-+ unsigned int dsILCD_errors; /* Downstream Loss of Cell Delineation (within the same connection) on Interleaved Path */
-+ unsigned int dsFLCD_errors; /* Downstream Loss of Cell Delineation (within the same connection) on Fast Path */
-+
-+ /* HEC Stats */
-+ unsigned int usIHEC_errors; /* Num of Upstream HEC errored ADSL frames on Interleaved Path */
-+ unsigned int usFHEC_errors; /* Num of Upstream HEC errored ADSL frames on Fast Path */
-+ unsigned int dsIHEC_errors; /* Num of Downstream HEC errored ADSL frames on Interleaved Path */
-+ unsigned int dsFHEC_errors; /* Num of Downstream HEC errored ADSL frames on Fast Path */
-+
-+ /* Upstream ATM Stats */
-+ unsigned int usAtm_count[2]; /* Upstream Good Cell Count */
-+ unsigned int usIdle_count[2]; /* Upstream Idle Cell Count */
-+ unsigned int usPdu_count[2]; /* UpStream PDU Count */
-+
-+ /* Downstream ATM Stats */
-+ unsigned int dsGood_count[2]; /* Downstream Good Cell Count */
-+ unsigned int dsIdle_count[2]; /* Downstream Idle Cell Count */
-+ unsigned int dsBadHec_count[2]; /* Downstream Bad Hec Cell Count */
-+ unsigned int dsOVFDrop_count[2]; /* Downstream Overflow Dropped Cell Count */
-+ unsigned int dsPdu_count[2]; /* Downstream PDU Count */
-+ /* (only looks for end of pdu on good atm cells received, */
-+ /* not on Bad_Hec or Overflow cell) */
-+
-+ unsigned int dsLineAttn; /* DS Line Attenuation */
-+ unsigned int dsMargin; /* Measured DS MArgin */
-+
-+ unsigned int usLineAttn;
-+ unsigned int usMargin;
-+
-+ unsigned char bCMsgs1[6];
-+ unsigned char bRMsgs1[6];
-+ unsigned char bCRates2;
-+ unsigned char bRRates2;
-+ unsigned char bRRates1[4][11];
-+ unsigned char bCMsgs2[4];
-+ unsigned char bCRates1[4][30];
-+ unsigned char bRMsgs2[4];
-+
-+ unsigned int USPeakCellRate;
-+
-+ unsigned int dsl_status;
-+ unsigned int dsl_modulation;
-+ unsigned char dsl_ghsRxBuf[10][64];
-+ unsigned char dsl_GHS_msg_type[2];
-+
-+ int TxVCs[12];
-+ int RxVCs[12];
-+
-+ unsigned int vci_vpi_val;
-+
-+ unsigned char BitAllocTblDstrm[256];
-+ unsigned char BitAllocTblUstrm[32];
-+ signed char marginTblDstrm[256];
-+ unsigned char rBng[512];
-+ unsigned char cBng[126];
-+ int usTxPower;
-+ int dsTxPower;
-+ short rxSnrPerBin0[256];
-+ short rxSnrPerBin1[256];
-+ short rxSnrPerBin2[256];
-+
-+ unsigned int StdMode;
-+ unsigned int atucVendorId;
-+ unsigned char currentHybridNum;
-+ unsigned char atucRevisionNum;
-+ unsigned int trainFails;
-+ unsigned int trainFailStates[30];
-+ unsigned int idleTick;
-+ unsigned int initTick;
-+ unsigned int showtimeTick;
-+ unsigned char dsFastParityBytesPerSymbol;
-+ unsigned char dsIntlvParityBytesPerSymbol;
-+ unsigned char dsSymbolsPerCodeWord;
-+ unsigned int dsInterleaverDepth;
-+ unsigned char usFastParityBytesPerSymbol;
-+ unsigned char usIntlvParityBytesPerSymbol;
-+ unsigned char usSymbolsPerCodeWord;
-+ unsigned int usInterleaverDepth;
-+ unsigned int atmBertBitCountLow;
-+ unsigned int atmBertBitCountHigh;
-+ unsigned int atmBertBitErrorCountLow;
-+ unsigned int atmBertBitErrorCountHigh;
-+ unsigned int lineLength;
-+ unsigned int grossGain;
-+ int rxNoisePower0[256];
-+ int rxNoisePower1[256];
-+}TIOIDINFO,*PTIOIDINFO;
-+
-+typedef struct{
-+ unsigned char bCMsgs1[6];
-+ unsigned char bCRates2;
-+ unsigned char bRRates2;
-+ unsigned char bRRates1[4][11];
-+ unsigned char bCMsgs2[4];
-+ unsigned char bCRates1[4][30];
-+ unsigned char bCRatesRA[4][30];
-+ unsigned char bRMsgs2[4];
-+ unsigned char bRRatesRA[4];
-+ unsigned char bRMsgsRA[12];
-+ unsigned char bCMsgsRA[6];
-+}negoMsgs;
-+
-+typedef struct{
-+ unsigned char cMsgFmt[2];
-+ unsigned char rMsgFmt[2];
-+ unsigned char cMsgPcb[12];
-+ unsigned char rMsgPcb[70];
-+ unsigned char dummy1[2];
-+ unsigned char cMsg1[40];
-+ unsigned char rMsg1[4];
-+ unsigned char cMsg2[8];
-+ unsigned char rMsg2[64];
-+ unsigned char cParams[264];
-+ unsigned char rParams[2088];
-+ unsigned short cMsgPcbLen;
-+ unsigned short rMsgPcbLen;
-+ unsigned short cMsg1Len;
-+ unsigned short rMsg1Len;
-+ unsigned short cMsg2Len;
-+ unsigned short rMsg2Len;
-+ unsigned short cParamsLen;
-+ unsigned short rParamsLen;
-+}adsl2Msgs;
-+
-+typedef struct{
-+ unsigned char rMsg1Ld[16];
-+ unsigned char rMsg2Ld[260];
-+ unsigned char rMsg3Ld[260];
-+ unsigned char rMsg4Ld[260];
-+ unsigned char rMsg5Ld[260];
-+ unsigned char rMsg6Ld[260];
-+ unsigned char rMsg7Ld[260];
-+ unsigned char rMsg8Ld[260];
-+ unsigned char rMsg9Ld[260];
-+ unsigned char cMsg1Ld[16];
-+ unsigned char cMsg2Ld[260];
-+ unsigned char cMsg3Ld[132];
-+ unsigned char cMsg4Ld[68];
-+ unsigned char cMsg5Ld[68];
-+ unsigned short rMsg1LdLen;
-+ unsigned short rMsgxLdLen;
-+ unsigned short cMsg1LdLen;
-+ unsigned short cMsg2LdLen;
-+ unsigned short cMsg3LdLen;
-+ unsigned short cMsg4LdLen;
-+ unsigned short cMsg5LdLen;
-+ unsigned short dummy8;
-+}adsl2DeltMsgs;
-+
-+typedef struct{
-+ unsigned char trellisFlag;
-+ unsigned char rateAdaptFlag;
-+ unsigned char marginMonitorTraining;
-+ unsigned char marginMonitorShowtime;
-+ signed char marginThreshold;
-+ unsigned char disableLosFlag;
-+ unsigned char aturConfig[30];
-+ unsigned char eocVendorId[8];
-+ unsigned char eocSerialNumber[32];
-+ unsigned char eocRevisionNumber[4];
-+}currentPhySettings;
-+
-+
-+typedef struct
-+{
-+ unsigned int PmemStartWtAddr; /* source address in host memory */
-+ unsigned int OverlayXferCount; /* number of 32bit words to be transfered */
-+ unsigned int BinAddr; /* destination address in dsp's pmem */
-+ unsigned int overlayHostAddr;
-+ unsigned int olayPageCrc32;
-+ unsigned int SecOffset;
-+} OlayDP_Def;
-+
-+typedef struct
-+{
-+ unsigned int timeStamp; /* TimeStp revision */
-+ unsigned char major; /* Major revision */
-+ unsigned char minor; /* Minor revision */
-+ unsigned char bugFix; /* BugFix revision */
-+ unsigned char buildNum; /* BuildNum revision */
-+ unsigned char reserved; /* for future use */
-+}dspVer;
-+
-+typedef struct{
-+ unsigned char major;
-+ unsigned char minor;
-+ unsigned char bugfix;
-+ unsigned char buildNum;
-+ unsigned int timeStamp;
-+}dslVer;
-+
-+typedef struct{
-+ unsigned char bitSwapCommand[6];
-+ unsigned char bitSwapBinNum[6];
-+ unsigned char bitSwapSFrmCnt;
-+}dslBitSwapDef;
-+
-+typedef struct{
-+ unsigned int aturState;
-+ unsigned int subStateIndex;
-+ unsigned int timeStamp;
-+}trainStateInfo;
-+
-+typedef struct{
-+ unsigned char ctrlBits;
-+ unsigned char infoBits;
-+}eocMessageDef;
-+
-+enum
-+{
-+ RSTATE_TEST,
-+ RSTATE_IDLE,
-+ RSTATE_INIT,
-+ RSTATE_HS,
-+ RSTATE_RTDL,
-+ RSTATE_SHOWTIME,
-+};
-+
-+typedef enum
-+{
-+ ATU_RZERO1 = 100,
-+ ATU_RTEST = 101,
-+ ATU_RIDLE = 102,
-+ ATU_RINIT = 103,
-+ ATU_RRESET = 104,
-+ GDMT_NSFLR = 105,
-+ GDMT_TONE = 106,
-+ GDMT_SILENT = 107,
-+ GDMT_NEGO = 108,
-+ GDMT_FAIL = 109,
-+ GDMT_ACKX = 110,
-+ GDMT_QUIET2 = 111,
-+ ATU_RZERO2 = 200,
-+ T1413_NSFLR = 201,
-+ T1413_ACTREQ = 202,
-+ T1413_ACTMON = 203,
-+ T1413_FAIL = 204,
-+ T1413_ACKX = 205,
-+ T1413_QUIET2 = 206,
-+ ATU_RQUIET2 = 207,
-+ ATU_RREVERB1 = 208,
-+ ATU_RQUIET3 = 209,
-+ ATU_RECT = 210,
-+ ATU_RREVERB2 = 211,
-+ ATU_RSEGUE1 = 212,
-+ ATU_RREVERB3 = 213,
-+ ATU_RSEGUE2 = 214,
-+ ATU_RRATES1 = 215,
-+ ATU_RMSGS1 = 216,
-+ ATU_RMEDLEY = 217,
-+ ATU_RREVERB4 = 218,
-+ ATU_RSEGUE3 = 219,
-+ ATU_RMSGSRA = 220,
-+ ATU_RRATESRA = 221,
-+ ATU_RREVERBRA = 222,
-+ ATU_RSEGUERA = 223,
-+ ATU_RMSGS2 = 224,
-+ ATU_RRATES2 = 225,
-+ ATU_RREVERB5 = 226,
-+ ATU_RSEGUE4 = 227,
-+ ATU_RBNG = 228,
-+ ATU_RREVERB6 = 229,
-+ ATU_RSHOWTIME = 230,
-+ ATU_RZERO3 = 300,
-+ ADSL2_QUIET1 = 301,
-+ ADSL2_COMB1 = 302,
-+ ADSL2_QUIET2 = 303,
-+ ADSL2_COMB2 = 304,
-+ ADSL2_ICOMB1 = 305,
-+ ADSL2_LINEPROBE = 306,
-+ ADSL2_QUIET3 = 307,
-+ ADSL2_COMB3 = 308,
-+ ADSL2_ICOMB2 = 309,
-+ ADSL2_RMSGFMT = 310,
-+ ADSL2_RMSGPCB = 311,
-+ ADSL2_REVERB1 = 312,
-+ ADSL2_QUIET4 = 313,
-+ ADSL2_REVERB2 = 314,
-+ ADSL2_QUIET5 = 315,
-+ ADSL2_REVERB3 = 316,
-+ ADSL2_ECT = 317,
-+ ADSL2_REVERB4 = 318,
-+ ADSL2_SEGUE1 = 319,
-+ ADSL2_REVERB5 = 320,
-+ ADSL2_SEGUE2 = 321,
-+ ADSL2_RMSG1 = 322,
-+ ADSL2_MEDLEY = 323,
-+ ADSL2_EXCHANGE = 324,
-+ ADSL2_RMSG2 = 325,
-+ ADSL2_REVERB6 = 326,
-+ ADSL2_SEGUE3 = 327,
-+ ADSL2_RPARAMS = 328,
-+ ADSL2_REVERB7 = 329,
-+ ADSL2_SEGUE4 = 330,
-+ ATU_RZERO4 = 400,
-+ DELT_SEGUE1 = 401,
-+ DELT_REVERB5 = 402,
-+ DELT_SEGUE2 = 403,
-+ DELT_EXCHANGE = 404,
-+ DELT_SEGUELD = 405,
-+ DELT_RMSGLD = 406,
-+ DELT_QUIET1LD = 407,
-+ DELT_QUIET2LD = 408,
-+ DELT_RACK1 = 409,
-+ DELT_RNACK1 = 410,
-+ DELT_QUIETLAST = 411
-+} modemStates_t;
-+
-+enum
-+{
-+ DSLTRAIN_NO_MODE,
-+ DSLTRAIN_MULTI_MODE,
-+ DSLTRAIN_T1413_MODE,
-+ DSLTRAIN_GDMT_MODE,
-+ DSLTRAIN_GLITE_MODE
-+};
-+
-+enum
-+{
-+ ID_RESTORE_DEFAULT_LED,
-+ ID_DSL_LINK_LED,
-+ ID_DSL_ACT_LED
-+};
-+
-+typedef struct _ITIDSLHW
-+{
-+ /* struct _TIDSL_IHwVtbl * pVtbl; */
-+ unsigned char* fwimage;
-+ void* pmainAddr;
-+ void* pOsContext;
-+ unsigned int ReferenceCount;
-+ unsigned int netService;
-+
-+ int InitFlag;
-+
-+ int imagesize;
-+
-+ unsigned int lConnected;
-+ unsigned int bStatisticsInitialized;
-+ unsigned int rState;
-+ unsigned int bShutdown;
-+ unsigned int blackOutValid_f;
-+ unsigned char blackOutBits[64];
-+ unsigned int bAutoRetrain;
-+ volatile unsigned int bOverlayPageLoaded;
-+ unsigned int stateTransition;
-+ unsigned int configFlag;
-+ unsigned int dsBitSwapInx;
-+ unsigned int usBitSwapInx;
-+ unsigned int trainStateInx;
-+ unsigned int usEocMsgInx;
-+ unsigned int dsEocMsgInx;
-+ unsigned int reasonForDrop;
-+ TIOIDINFO AppData;
-+ dspVer dspVer;
-+
-+ OlayDP_Def olayDpPage[NUM_PAGES];
-+ OlayDP_Def coProfiles;
-+ OlayDP_Def constDisplay;
-+ dslBitSwapDef dsBitSwap[30];
-+ dslBitSwapDef usBitSwap[30];
-+ trainStateInfo trainHistory[120];
-+ eocMessageDef usEocMsgBuf[30];
-+ eocMessageDef dsEocMsgBuf[30];
-+ adsl2Msgs adsl2TrainingMessages;
-+ adsl2DeltMsgs adsl2DiagnosticMessages;
-+ unsigned int modemStateBitField[4];
-+#ifdef INTERNAL_BUILD
-+ internalParameters internalVars;
-+#endif
-+} ITIDSLHW_T, *PITIDSLHW_T, tidsl_t;
-+
-+
-+/**********************************************************************************
-+* API proto type defines
-+**********************************************************************************/
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_dslStartup
-+*
-+*******************************************************************************************
-+* DESCRIPTION: Entry point to initialize and load ax5 daughter board
-+*
-+* INPUT: PITIDSLHW_T *ppIHw
-+*
-+* RETURN: 0 --succeeded
-+* 1 --Failed
-+*
-+* Notes: external function osAllocateMemory(), osZeroMemory(), osLoadFWImage() are required
-+*****************************************************************************************/
-+int dslhal_api_dslStartup
-+(
-+ PITIDSLHW_T *ppIHw
-+);
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_gatherStatistics
-+*
-+*********************************************************************************************
-+* DESCRIPTION: Read statistical infromation from ax5 modem daugter card.
-+* Input: tidsl_t *ptidsl
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+********************************************************************************************/
-+
-+void dslhal_api_gatherStatistics
-+(
-+ tidsl_t * ptidsl
-+);
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_initStatistics
-+*
-+*********************************************************************************************
-+* DESCRIPTION: init statistical infromation of ax5 modem daugter card.
-+*
-+* Input: tidsl_t *ptidsl
-+*
-+* Return: NULL
-+*
-+********************************************************************************************/
-+
-+void dslhal_api_initStatistics
-+(
-+ tidsl_t * ptidsl
-+);
-+
-+
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_getDslDriverVersion
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This routine supply DSL Driver version.
-+*
-+* INPUT: tidsl_t * ptidsl
-+* void *pVer, DSP Driver Version Pointer
-+*
-+* RETURN: 0 --succeeded
-+* 1 --Failed
-+* Note: See verdef_u.h for version structure definition.
-+*****************************************************************************************/
-+
-+void dslhal_api_getDslHalVersion
-+(
-+ void *pVer
-+);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_dslShutdown
-+*
-+*******************************************************************************************
-+* DESCRIPTION: routine to shutdown ax5 modem and free the resource
-+*
-+* INPUT: tidsl_t *ptidsl
-+*
-+* RETURN: NULL
-+*
-+* Notes: external function osFreeMemory() is required.
-+*****************************************************************************************/
-+
-+int dslhal_api_dslShutdown
-+(
-+ tidsl_t *ptidsl
-+);
-+
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_getDspVersion
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This routine supply AX5 daugther card DSP version.
-+*
-+* INPUT: tidsl_t * ptidsl
-+* void *pVer, DSP version struct is returned starting at this pointer
-+*
-+* RETURN: 0 --succeeded
-+* 1 --Failed
-+*
-+*****************************************************************************************/
-+
-+int dslhal_api_getDspVersion
-+(
-+ tidsl_t *ptidsl,
-+ void *pVer
-+);
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_diags_digi_memTestA()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: This function does the digital tests on the DSP. It does the DSP ID test,
-+* memory tests on the external and internal memories of DSP, Codec Interconnect
-+* test and Interrupt Test.
-+*
-+* Input: Test selects the test to be performed based on the elements set of 9 element
-+* array passed the the parameter.
-+*
-+* Return: Status of the Tests Failed
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_diags_digi_memTestA
-+(
-+unsigned int* Test
-+);
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_diags_digi_memTestB()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: This function does the digital tests on the DSP. It does the DSP ID test,
-+* memory tests on the external and internal memories of DSP, Codec Interconnect
-+* test and Interrupt Test.
-+*
-+* Input: Test selects the digital test to be performed.
-+*
-+* Return: Status of the Tests Failed
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_diags_digi_memTestB
-+(
-+unsigned int Test,
-+unsigned int *Status
-+);
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_diags_anlg_tonesTestA()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: This function instructs the Transciever to transmit the Reverb with missing
-+* tones and Medley's with missing tones. These signals are defined in ITU
-+* G.992.1 ADSL Standards.
-+*
-+* Input: Test selects between the Reverb or Medley tests. 0 - Reverb, 1 - Medley
-+* Array is a 64 element unsigned integer type array. The element of this array
-+* describe which tones are to be generated by selecting the element of
-+* the array to be non zero.
-+* Return: NULL
-+*
-+********************************************************************************************/
-+
-+void dslhal_diags_anlg_tonesTestA
-+(
-+unsigned int Test,
-+unsigned int* Array
-+);
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_diags_anlg_tonesTestB()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: This function instructs the Transciever to transmit the Reverb with missing
-+* tones and Medley's with missing tones. These signals are defined in ITU
-+* G.992.1 ADSL Standards.
-+*
-+* Input: Test selects between the Reverb or Medley tests. 0 - Reverb, 1 - Medley
-+* Array is a 64 element unsigned integer type array. The element of this array
-+* describe which tones are to be generated by selecting the element of
-+* the array to be non zero.
-+* Return: NULL
-+*
-+********************************************************************************************/
-+
-+void dslhal_diags_anlg_tonesTestB
-+(
-+unsigned int Test,
-+unsigned int Tones
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_diags_anlg_rxNoiseTest()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: This function instructs the Transciever to transmit the Reverb with missing
-+* tones and Medley's with missing tones. These signals are defined in ITU
-+* G.992.1 ADSL Standards.
-+*
-+* Input: Test selects between the Reverb or Medley tests. 0 - Reverb, 1 - Medley
-+* Tones selects the .
-+* Return: NULL
-+*
-+********************************************************************************************/
-+
-+void dslhal_diags_anlg_rxNoiseTest
-+(int agcFlag,
-+short pga1,
-+short pga2,
-+short pga3,
-+short aeq
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_diags_anlg_ecNoiseTest()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: This function instructs the Transciever to transmit the Reverb with missing
-+* tones and Medley's with missing tones. These signals are defined in ITU
-+* G.992.1 ADSL Standards.
-+*
-+* Input: Test selects between the Reverb or Medley tests. 0 - Reverb, 1 - Medley
-+* Tones selects the .
-+* Return: NULL
-+*
-+********************************************************************************************/
-+
-+void dslhal_diags_anlg_ecNoiseTest
-+(int agcFlag,
-+short pga1,
-+short pga2,
-+short pga3,
-+short aeq
-+);
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_pollTrainingStatus()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: code to decode modem status and to start modem training
-+*
-+* Input: tidsl_t *ptidsl
-+*
-+* Return: 0-? status mode training
-+* -1 failed
-+*
-+********************************************************************************************/
-+int dslhal_api_pollTrainingStatus
-+(
-+ tidsl_t *ptidsl
-+);
-+
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_handleTrainingInterrupt()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: Code to handle ax5 hardware interrupts
-+*
-+* Input: tidsl_t *ptidsl
-+* int *pMsg, pointer to returned hardware messages. Each byte represent a messge
-+* int *pTag, pointer to returned hardware message tags. Each byte represent a tag.
-+* Return: 0 success
-+* 1 failed
-+*
-+********************************************************************************************/
-+int dslhal_api_handleTrainingInterrupt
-+(
-+ tidsl_t *ptidsl,
-+ int intrSource
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_setEocSerialNumber(tidsl_t *ptidsl,char *SerialNumber)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction Sets the EOC Serial Number
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * char *SerialNumber : Input EOC Serial Number
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_setEocSerialNumber
-+(
-+tidsl_t *ptidsl,
-+char *SerialNumber
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_setEocVendorId(tidsl_t *ptidsl,char *VendorID)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction Sets the EOC Serial Number
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * char *VendorID : EOC Vendor ID
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_setEocVendorId
-+(
-+tidsl_t *ptidsl,
-+char *VendorID
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_setEocRevisionNumber(tidsl_t *ptidsl,char *RevNum)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction Sets the EOC Revision Number
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * char *RevNum : Input EOC Revision Number
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_setEocRevisionNumber
-+(
-+tidsl_t *ptidsl,
-+char *RevNumber
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_setAturConfig(tidsl_t *ptidsl,char *ATURConfig)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction Sets the EOC ATUR Config Register
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * char *RevNum : Input EOC ATUR Config Register
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_setAturConfig
-+(
-+tidsl_t *ptidsl,
-+char *ATURConfig
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_disableLosAlarm(tidsl_t *ptidsl, unsigned int set)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction disables all the LOS alarms
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * unsigned int set // if set == TRUE : Disable LOS alarms, else enable
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ * NOTES: Currently not supported in any version other than MR4 Patch release..
-+ *****************************************************************************************/
-+unsigned int dslhal_api_disableLosAlarm
-+(
-+tidsl_t *ptidsl,
-+unsigned int
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_sendIdle(tidsl_t *ptidsl)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction sends the CMD_IDLE message to the DSP
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_sendIdle
-+(
-+tidsl_t *ptidsl
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_sendQuiet(tidsl_t *ptidsl)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction sends the CMD_QUIET message to the DSP
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_sendQuiet
-+(
-+tidsl_t *ptidsl
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_sendDgasp(tidsl_t *ptidsl)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction sends the HOST_DGASP message to the DSP
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_sendDgasp
-+(
-+tidsl_t *ptidsl
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_setMarginThreshold(tidsl_t *ptidsl, int threshold)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction does sets the Margin threshold
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * int threshold
-+ *
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_setMarginThreshold
-+(
-+tidsl_t *ptidsl,
-+int threshold
-+);
-+
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_setMarginMonitorFlags(tidsl_t *ptidsl, unsigned int trainflag,unsigned int shwtflag)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction does sets the Margin monitoring flag
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * unsigned int trainflag
-+ * unsigned int shwtflag
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_setMarginMonitorFlags
-+(
-+tidsl_t *ptidsl,
-+unsigned int trainflag,
-+unsigned int shwtflag
-+);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_setRateAdaptFlag(tidsl_t *ptidsl)
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction Sets the Rate Adapt Enable Flag
-+*
-+* INPUT: PITIDSLHW_T *ptidsl
-+* unsigned int flag //if flag = TRUE set flag else reset
-+* RETURN: 0 SUCCESS
-+* 1 FAILED
-+*
-+*****************************************************************************************/
-+unsigned int dslhal_api_setRateAdaptFlag
-+(
-+tidsl_t *ptidsl,
-+unsigned int flag
-+);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_setTrellisFlag(tidsl_t *ptidsl, unsigned int flag)
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction Sets the Trellis Coding Enable Flag
-+*
-+* INPUT: PITIDSLHW_T *ptidsl
-+* unsigned int flag //if flag = TRUE set flag else reset
-+* RETURN: 0 SUCCESS
-+* 1 FAILED
-+*
-+*****************************************************************************************/
-+unsigned int dslhal_api_setTrellisFlag
-+(
-+tidsl_t *ptidsl,
-+unsigned int flag
-+);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_setMaxBitsPerCarrier(tidsl_t *ptidsl,unsigned int maxbits)
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction Sets the Maximum bits per carrier value
-+*
-+* INPUT: PITIDSLHW_T *ptidsl
-+* unsigned int maxbits : should be a value between 0-15
-+*
-+* RETURN: 0 SUCCESS
-+* 1 FAILED
-+*
-+*****************************************************************************************/
-+unsigned int dslhal_api_setMaxBitsPerCarrier
-+(
-+tidsl_t *ptidsl,
-+unsigned int maxbits
-+);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_setMaxInterleaverDepth(tidsl_t *ptidsl,unsigned int maxdepth)
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction Sets the Maximum Interleave Depth Supported
-+*
-+* INPUT: PITIDSLHW_T *ptidsl
-+* unsigned int maxdepth : Should be between 0 and 3 depending on intlv buffer
-+* size 64-512
-+* RETURN: 0 SUCCESS
-+* 1 FAILED
-+*
-+*****************************************************************************************/
-+unsigned int dslhal_api_setMaxInterleaverDepth
-+(
-+tidsl_t *ptidsl,
-+unsigned int maxdepth
-+);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_api_setTrainingMode(tidsl_t *ptidsl,unsigned int trainmode)
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction Sets the desired training mode(none/T1.413/G.dmt/G.lite)
-+*
-+* INPUT: PITIDSLHW_T *ptidsl
-+* unsigned int trainmode :Should be between 0 and 4; 0:No Mode 1:Multimode
-+* 2: T1.413, 3:G.dmt, 4: G.lite
-+* RETURN: 0 SUCCESS
-+* 1 FAILED
-+*
-+*****************************************************************************************/
-+
-+unsigned int dslhal_api_setTrainingMode
-+(
-+tidsl_t *ptidsl,
-+unsigned int trainmode
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_dslRetrain(tidsl_t *ptidsl)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction sends the CMD_QUIET message to the DSP
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_dslRetrain
-+(
-+tidsl_t *ptidsl
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_acknowledgeInterrupt()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_acknowledgeInterrupt
-+(tidsl_t * ptidsl
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_disableDspHybridSelect()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_disableDspHybridSelect
-+(tidsl_t * ptidsl,
-+ unsigned int disable
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_disableDspHybridSelect()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_selectHybrid
-+(tidsl_t * ptidsl,
-+ unsigned int hybridNum
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_reportHybridMetrics()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_reportHybridMetrics
-+(tidsl_t * ptidsl,
-+ int *metric
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_selectInnerOuterPair(tidsl_t *ptidsl, unsigned int pairSelect)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction sends the CMD_QUIET message to the DSP
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+
-+unsigned int dslhal_api_selectInnerOuterPair
-+(tidsl_t *ptidsl,
-+unsigned int pairSelect
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_resetTrainFailureLog(tidsl_t *ptidsl, unsigned int pairSelect)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction sends the CMD_QUIET message to the DSP
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+
-+unsigned int dslhal_api_resetTrainFailureLog
-+(tidsl_t *ptidsl
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_controlLed()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_configureLed
-+(tidsl_t * ptidsl,
-+unsigned int idLed,
-+unsigned int onOff
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_configureExternBert()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_configureExternBert
-+(tidsl_t * ptidsl,
-+unsigned int configParm,
-+unsigned int parmVal
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_configureAtmBert()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_configureAtmBert
-+(tidsl_t * ptidsl,
-+unsigned int configParm,
-+unsigned int parmVal
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_configureDgaspLpr()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_configureDgaspLpr
-+(tidsl_t * ptidsl,
-+unsigned int configParm,
-+unsigned int parmVal
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_onOffPcb()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_onOffPcb
-+(tidsl_t * ptidsl,
-+unsigned int onOff
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_onOffBitSwap()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Turns on / off the power cutback feature;
-+* Input
-+* usDs; 0 = us and 1 = ds;
-+* onOff; 0 = OFF and 1 = ON
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_onOffBitSwap
-+(tidsl_t * ptidsl,
-+ unsigned int usDs,
-+ unsigned int onOff
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_configDsTones()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Turns on / off specific tones in the downstream direction;
-+* Input
-+* pointer to the array specifying the tones to be turned on/off
-+*
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_configDsTones
-+(tidsl_t * ptidsl,
-+ unsigned int *dsTones
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_getAocBitSwapBuffer()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Fetches the Tx/Rx AOC bitswap Buffer;
-+* Input
-+* Transmit / Receive buffer to be fetched
-+*
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_getAocBitswapBuffer
-+(tidsl_t * ptidsl,
-+unsigned int usDs
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_readTrainingMessages()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Reads all the training messages on demand;
-+* Input
-+* tidsl_t *ptidsl : Pointer to application structure
-+* void *msgStruct : Pointer to Message Structure
-+*
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_readTrainingMessages
-+(tidsl_t * ptidsl,
-+void *msgPtr
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_getTrainingState()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Reads all the training messages on demand;
-+* Input
-+* tidsl_t *ptidsl : Pointer to application structure
-+* void *msgStruct : Pointer to training state structure
-+*
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_getTrainingState
-+(tidsl_t * ptidsl,
-+void *statePtr
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_resetBitSwapMessageLog()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Clears the Aoc Bitswap Message Log
-+* Input
-+* tidsl_t *ptidsl : Pointer to application structure
-+* unsigned int usDs ; Upstream=0, Downstream=1
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_resetBitSwapMessageLog
-+(tidsl_t * ptidsl,
-+ unsigned int usDs
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_setConstellationBinNumber()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Specifies the bin number for which constellation data should be fetched
-+* Input
-+* tidsl_t *ptidsl : Pointer to application structure
-+* unsigned int binNum : constellation bin number whose data is required
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_setConstellationBinNumber
-+(tidsl_t * ptidsl,
-+ unsigned int binNum
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_resetTrainStateHistory()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Clears the Training State History Log
-+* Input
-+* tidsl_t *ptidsl : Pointer to application structure
-+*
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_resetTrainStateHistory
-+(tidsl_t * ptidsl
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_getSnrPerBin()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Get SNR data per bin
-+* Input
-+* tidsl_t *ptidsl : Pointer to application structure
-+*
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_getSnrPerBin
-+(tidsl_t * ptidsl,
-+ unsigned int snrBufferOpt
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_logEocMessages()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Logs EOC messages sent by the Modem to the CO
-+* Input
-+* tidsl_t *ptidsl : Pointer to application structure
-+* unsigned int eocLowerBytes : Lower [1-5] bits of EOC Message
-+* unsigned int eocUpperBytes : Upper [6-13] bits of EOC Message
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_logEocMessages
-+(tidsl_t * ptidsl,
-+ unsigned int usDs,
-+ unsigned int eocLowerBytes,
-+ unsigned int eocUpperBytes
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_getReasonForDrop()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Reads the reason for dropping DSL connection;
-+* Input
-+* tidsl_t *ptidsl : Pointer to application structure
-+
-+*
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_getReasonForDrop
-+(tidsl_t * ptidsl
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_ctrlMaxAvgFineGains()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Turns on / off the host control for Max Avg Fine Gains; 0 = OFF and 1 = ON
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_ctrlMaxAvgFineGains
-+(tidsl_t * ptidsl,
-+unsigned int onOff
-+);
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_setMaxAvgFineGain()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Set the Maximum Average Fine Gain Value
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_setMaxAvgFineGain
-+(tidsl_t * ptidsl,
-+ short fineGain
-+);
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_readPhySettings()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Reads the advanced Phy layer settings on demand;
-+* Input
-+* tidsl_t *ptidsl : Pointer to application structure
-+* void *cfgStruct : Pointer to Phy Config Structure
-+*
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_readPhySettings
-+(tidsl_t * ptidsl,
-+void *cfgPtr
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_advcfg_setBlackOutBits()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the Blackout Bits in the RMSGPCB message
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_advcfg_setBlackOutBits
-+(tidsl_t * ptidsl
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_genericDspRead()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Reads from a generic location in the host interface
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_genericDspRead
-+(tidsl_t * ptidsl,
-+ unsigned int offset1,
-+ unsigned int offset2,
-+ unsigned int offset3,
-+ unsigned char* localBuffer,
-+ unsigned int numBytes
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_genericDspWrite()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Writes to a generic location in the host interface
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_genericDspWrite
-+(tidsl_t * ptidsl,
-+ unsigned int offset1,
-+ unsigned int offset2,
-+ unsigned int offset3,
-+ unsigned char* localBuffer,
-+ unsigned int numBytes
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_dspInterfaceRead()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Reads from a generic location in the host interface
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_dspInterfaceRead
-+(tidsl_t * ptidsl,
-+ unsigned int baseAddr,
-+ unsigned int numOffsets,
-+ unsigned int *offsets,
-+ unsigned char* localBuffer,
-+ unsigned int numBytes
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_api_dspInterfaceWrite()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Writes to a generic location in the host interface
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_api_dspInterfaceWrite
-+(tidsl_t * ptidsl,
-+ unsigned int baseAddr,
-+ unsigned int numOffsets,
-+ unsigned int *offsets,
-+ unsigned char* localBuffer,
-+ unsigned int numBytes
-+);
-+
-+/******************************************************************************************
-+ * FUNCTION NAME: dslhal_api_sendMailboxCommand(tidsl_t *ptidsl, unsigned int cmd)
-+ *
-+ *******************************************************************************************
-+ * DESCRIPTION: This fuction sends the passed mailbox command to the DSP
-+ *
-+ * INPUT: PITIDSLHW_T *ptidsl
-+ * unsigned int cmd
-+ *
-+ * RETURN: 0 SUCCESS
-+ * 1 FAILED
-+ *
-+ *****************************************************************************************/
-+unsigned int dslhal_api_sendMailboxCommand
-+(tidsl_t *ptidsl,
-+unsigned int cmd
-+);
-+
-+#ifdef INTERNAL_BUILD
-+#include <dsl_hal_internal_api.h>
-+#endif
-+
-+
-+#endif /* pairs #ifndef __DSL_APPLICATION_INTERFACE_H__ */
-diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_logtable.h linux.dev/drivers/atm/sangam_atm/dsl_hal_logtable.h
---- linux.old/drivers/atm/sangam_atm/dsl_hal_logtable.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_logtable.h 2005-08-23 04:46:50.097843696 +0200
-@@ -0,0 +1,259 @@
-+unsigned int log10[]=
-+{
-+ 0,
-+ 771,
-+ 1221,
-+ 1541,
-+ 1789,
-+ 1992,
-+ 2163,
-+ 2312,
-+ 2443,
-+ 2560,
-+ 2666,
-+ 2763,
-+ 2852,
-+ 2934,
-+ 3011,
-+ 3083,
-+ 3150,
-+ 3213,
-+ 3274,
-+ 3331,
-+ 3385,
-+ 3437,
-+ 3486,
-+ 3533,
-+ 3579,
-+ 3622,
-+ 3664,
-+ 3705,
-+ 3744,
-+ 3781,
-+ 3818,
-+ 3853,
-+ 3887,
-+ 3921,
-+ 3953,
-+ 3984,
-+ 4015,
-+ 4044,
-+ 4073,
-+ 4101,
-+ 4129,
-+ 4156,
-+ 4182,
-+ 4207,
-+ 4232,
-+ 4257,
-+ 4281,
-+ 4304,
-+ 4327,
-+ 4349,
-+ 4371,
-+ 4393,
-+ 4414,
-+ 4435,
-+ 4455,
-+ 4475,
-+ 4495,
-+ 4514,
-+ 4533,
-+ 4552,
-+ 4570,
-+ 4589,
-+ 4606,
-+ 4624,
-+ 4641,
-+ 4658,
-+ 4675,
-+ 4691,
-+ 4707,
-+ 4723,
-+ 4739,
-+ 4755,
-+ 4770,
-+ 4785,
-+ 4800,
-+ 4815,
-+ 4829,
-+ 4844,
-+ 4858,
-+ 4872,
-+ 4886,
-+ 4899,
-+ 4913,
-+ 4926,
-+ 4939,
-+ 4952,
-+ 4965,
-+ 4978,
-+ 4990,
-+ 5003,
-+ 5015,
-+ 5027,
-+ 5039,
-+ 5051,
-+ 5063,
-+ 5075,
-+ 5086,
-+ 5098,
-+ 5109,
-+ 5120,
-+ 5131,
-+ 5142,
-+ 5153,
-+ 5164,
-+ 5174,
-+ 5185,
-+ 5195,
-+ 5206,
-+ 5216,
-+ 5226,
-+ 5236,
-+ 5246,
-+ 5256,
-+ 5266,
-+ 5275,
-+ 5285,
-+ 5295,
-+ 5304,
-+ 5313,
-+ 5323,
-+ 5332,
-+ 5341,
-+ 5350,
-+ 5359,
-+ 5368,
-+ 5377,
-+ 5386,
-+ 5394,
-+ 5403,
-+ 5412,
-+ 5420,
-+ 5429,
-+ 5437,
-+ 5445,
-+ 5454,
-+ 5462,
-+ 5470,
-+ 5478,
-+ 5486,
-+ 5494,
-+ 5502,
-+ 5510,
-+ 5518,
-+ 5525,
-+ 5533,
-+ 5541,
-+ 5548,
-+ 5556,
-+ 5563,
-+ 5571,
-+ 5578,
-+ 5586,
-+ 5593,
-+ 5600,
-+ 5607,
-+ 5614,
-+ 5622,
-+ 5629,
-+ 5636,
-+ 5643,
-+ 5649,
-+ 5656,
-+ 5663,
-+ 5670,
-+ 5677,
-+ 5683,
-+ 5690,
-+ 5697,
-+ 5703,
-+ 5710,
-+ 5716,
-+ 5723,
-+ 5729,
-+ 5736,
-+ 5742,
-+ 5749,
-+ 5755,
-+ 5761,
-+ 5767,
-+ 5773,
-+ 5780,
-+ 5786,
-+ 5792,
-+ 5798,
-+ 5804,
-+ 5810,
-+ 5816,
-+ 5822,
-+ 5828,
-+ 5834,
-+ 5839,
-+ 5845,
-+ 5851,
-+ 5857,
-+ 5862,
-+ 5868,
-+ 5874,
-+ 5879,
-+ 5885,
-+ 5891,
-+ 5896,
-+ 5902,
-+ 5907,
-+ 5913,
-+ 5918,
-+ 5924,
-+ 5929,
-+ 5934,
-+ 5940,
-+ 5945,
-+ 5950,
-+ 5955,
-+ 5961,
-+ 5966,
-+ 5971,
-+ 5976,
-+ 5981,
-+ 5986,
-+ 5992,
-+ 5997,
-+ 6002,
-+ 6007,
-+ 6012,
-+ 6017,
-+ 6022,
-+ 6027,
-+ 6031,
-+ 6036,
-+ 6041,
-+ 6046,
-+ 6051,
-+ 6056,
-+ 6060,
-+ 6065,
-+ 6070,
-+ 6075,
-+ 6079,
-+ 6084,
-+ 6089,
-+ 6093,
-+ 6098,
-+ 6103,
-+ 6107,
-+ 6112,
-+ 6116,
-+ 6121,
-+ 6125,
-+ 6130,
-+ 6134,
-+ 6139,
-+ 6143,
-+ 6148,
-+ 6152,
-+ 6156,
-+ 6161,
-+ 6165
-+ };
-diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_register.h linux.dev/drivers/atm/sangam_atm/dsl_hal_register.h
---- linux.old/drivers/atm/sangam_atm/dsl_hal_register.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_register.h 2005-08-23 04:46:50.097843696 +0200
-@@ -0,0 +1,337 @@
-+#ifndef ___DSL_REGISTER_DEFINES_H___
-+#define ___DSL_REGISTER_DEFINES_H___ 1
-+
-+/*******************************************************************************
-+* FILE PURPOSE: DSL HAL H/W Registers and Constant Declarations for Sangam
-+*
-+********************************************************************************
-+* FILE NAME: dsl_hal_register.h
-+*
-+* DESCRIPTION:
-+* Contains DSL HAL APIs for Adam2 OS functions
-+*
-+*
-+* (C) Copyright 2001-02, Texas Instruments, Inc.
-+* History
-+* Date Version Notes
-+* 06Feb03 0.00.00 RamP Created
-+* 21Mar03 0.00.01 RamP Changed header files for Modular
-+* build framework
-+* 21Mar03 0.00.02 RamP Introduced malloc size for DSP f/w
-+* 07Apr03 0.00.03 RamP Implemented new error reporting scheme
-+* Changed Commenting to C style only
-+* 12Apr03 0.00.04 RamP Added Interrupt Mask defines
-+* 14Apr03 0.00.05 RamP Renamed macros for REG8, REG16 & REG32
-+* 21Apr03 0.01.00 RamP Added Interrupt source/clear registers
-+* Changed enum RSTATE_SHOWTIME to 5
-+* 24Apr03 0.01.01 RamP Moved the RSTATE enum to api.h
-+* Added olay recovery error condition
-+* 14May03 0.01.02 RamP Added defines for power computation
-+* Added error condition for hybrids
-+* 04Jun03 0.01.03 RamP Added enum for config flags,
-+* Cleaned up AR5 register defines
-+* Added defines for higher data rate
-+* 06Jun03 0.01.04 RamP Added error & interrupt defines
-+* 09Jun03 0.01.05 RamP Modified enum for current config
-+* Added additional C-Rates defines
-+* 18Jul03 0.01.06 RamP Modified internal build flow
-+* 21Aug03 0.01.07 RamP Added constellation buffer size
-+* 08Oct03 0.01.08 RamP Added us/ds Bits n gains size
-+* 12Oct03 0.01.08 RamP Added ADSL2 Message sizes, lengths
-+* and offsets for various formats
-+* 29Oct03 0.01.09 RamP Added ADSL2 Delt offsets & sizes
-+* 24Nov03 0.01.10 RamP Added bit field number, scan vector
-+* 26Dec03 0.01.11 RamP Removed the oamFeature masks to api.h
-+*******************************************************************************/
-+
-+#include "env_def_typedefs.h"
-+#ifdef INTERNAL_BUILD
-+#include "dev_host_internalinterface.h"
-+#endif
-+#include "dev_host_interface.h"
-+#include "dsl_hal_api.h"
-+
-+#define ADSLSS_BASE 0x01000000
-+#define BBIF_BASE 0x02000000
-+
-+#define ADSLSSADR (BBIF_BASE+0x0000)
-+#define ADSLSSADRMASK 0xff000000
-+#define WAKEUP_DSP 0x00000001
-+
-+/* Ax7 Reset Control */
-+
-+#define RST_CNTRL_BASE 0x8611600
-+#define RST_CNTRL_PRCR (RST_CNTRL_BASE + 0x00 )
-+
-+#define RST_CNTRL_PRCR_GPIO 0x00000040
-+#define RST_CNTRL_PRCR_ADSLSS 0x00000080
-+#define RST_CNTRL_PRCR_USB 0x00000100
-+#define RST_CNTRL_PRCR_SAR 0x00000200
-+#define RST_CNTRL_PRCR_DSP 0x00800000
-+#define RST_CNTRL_PRCR_EMAC1 0x00200000 /* EMAC1 reset */
-+
-+#define RST_CNTRL_SWRCR (RST_CNTRL_BASE + 0x04 )
-+#define RST_SWRCR_SWR0 0x00000001
-+#define RST_SWRCR_SWR1 0x00000002
-+
-+#define RST_CNTRL_RSR (TNETD53XX_RST_CNTRL_BASE + 0x08 )
-+#define RST_RSR_RSCAUSE 0x00000003 /* Software Reset Caused by writing to SWR1 bit */
-+
-+
-+/* ******************************************************
-+Interrupt sources on Ax7 interrupt controller.
-+The reserved sources are noted.
-+********************************************************* */
-+
-+#define INTR_CNTRL_SRC_SECOND 0
-+#define INTR_CNTRL_SRC_EXTERNAL0 1
-+#define INTR_CNTRL_SRC_EXTERNAL1 2
-+/* reserved sources ... */
-+#define INTR_CNTRL_SRC_TIMER0 5
-+#define INTR_CNTRL_SRC_TIMER1 6
-+#define INTR_CNTRL_SRC_UART0 7
-+#define INTR_CNTRL_SRC_UART1 8
-+#define INTR_CNTRL_SRC_DMA0 9
-+#define INTR_CNTRL_SRC_DMA1 10
-+/* reserved sources ... */
-+#define INTR_CNTRL_SRC_SAR 15
-+/* reserved sources ... */
-+#define INTR_CNTRL_SRC_EMAC0 19
-+/* reserved sources ... */
-+#define INTR_CNTRL_SRC_VLYNQ0 21
-+#define INTR_CNTRL_SRC_CODEC_WAKE 22
-+/* reserved sources ... */
-+#define INTR_CNTRL_SRC_USB 24
-+#define INTR_CNTRL_SRC_VLYNQ1 25
-+/* reserved sources ... */
-+#define INTR_CNTRL_SRC_EMAC1 28
-+#define INTR_CNTRL_SRC_I2C 29
-+#define INTR_CNTRL_SRC_DMA2 30
-+#define INTR_CNTRL_SRC_DMA3 31
-+/* reserved sources ... */
-+#define INTR_CNTRL_SRC_VDMA_RX 37
-+#define INTR_CNTRL_SRC_VDMA_TX 38
-+#define INTR_CNTRL_SRC_ADSLSS 39
-+
-+#ifndef K0BASE
-+#define K0BASE 0x80000000
-+#endif
-+
-+#ifndef K1BASE
-+#define K1BASE 0xA0000000
-+#endif
-+
-+#ifndef PHYS_ADDR
-+#define PHYS_ADDR(X) ((X) & 0X1FFFFFFF)
-+#endif
-+
-+#ifndef PHYS_TO_K0
-+#define PHYS_TO_K0(X) (PHYS_ADDR(X)|K0BASE)
-+#endif
-+
-+#ifndef PHYS_TO_K1
-+#define PHYS_TO_K1(X) (PHYS_ADDR(X)|K1BASE)
-+#endif
-+
-+#ifndef DSLHAL_REG8
-+#define DSLHAL_REG8( addr ) (*(volatile unsigned short *) PHYS_TO_K1(addr))
-+#endif
-+
-+#ifndef DSLHAL_REG16
-+#define DSLHAL_REG16( addr ) (*(volatile unsigned short *)PHYS_TO_K1(addr))
-+#endif
-+
-+#ifndef DSLHAL_REG32
-+#define DSLHAL_REG32( addr ) (*(volatile unsigned int *)PHYS_TO_K1(addr))
-+#endif
-+
-+#ifndef NULL
-+#define NULL 0
-+#endif
-+
-+#ifndef TRUE
-+#define TRUE (1==1)
-+#endif
-+
-+#ifndef FALSE
-+#define FALSE (1==2)
-+#endif
-+
-+/*******************************************************************************
-+* Type Defines for Library
-+********************************************************************************/
-+typedef unsigned int size_t;
-+
-+#define TIDSL_HW_CREATED 0x00000001
-+#define TIDSL_HW_OPENED 0x00000002
-+#define TIDSL_HW_STARTED 0x00000004
-+#define TIDSL_OS_INITIALIZED 0x00000008
-+
-+/* Data Pump CRATES Table Defines */
-+#define SIZE_OF_CRATES1_TABLE 120
-+#define CRATES1_BF_LS0 7
-+#define CRATES1_BI_LS0 17
-+#define CRATES1_BF_AS0 0
-+#define CRATES1_BI_AS0 10
-+#define CRATES1_BF_DSRS 20
-+#define CRATES1_BI_DSRS 21
-+#define CRATES1_BFI_DSS 22
-+#define CRATES1_BFI_DSI 23
-+#define CRATES1_BF_USRS 25
-+#define CRATES1_BI_USRS 26
-+#define CRATES1_BFI_USS 27
-+#define CRATES1_BFI_USI 28
-+
-+#define FAST_PATH 0
-+#define INTERLEAVED_PATH 1
-+
-+#define LINE_NOT_CONNECTED 0
-+#define LINE_CONNECTED 1
-+#define LINE_DISCONNECTED 2
-+#define LINE_NOT_TO_CONNECT 3
-+
-+#define MAXSECTIONS 125
-+
-+/*****************************************************************************************
-+ * Localstructure declarations
-+ *
-+ ****************************************************************************************/
-+enum
-+{
-+ DSLHAL_ERROR_NO_ERRORS, /* 00 */
-+ DSLHAL_ERROR_UNRESET_ADSLSS, /* 01 */
-+ DSLHAL_ERROR_RESET_ADSLSS, /* 02 */
-+ DSLHAL_ERROR_UNRESET_DSP, /* 03 */
-+ DSLHAL_ERROR_RESET_DSP, /* 04 */
-+ DSLHAL_ERROR_NO_FIRMWARE_IMAGE, /* 05 */
-+ DSLHAL_ERROR_MALLOC, /* 06 */
-+ DSLHAL_ERROR_FIRMWARE_MALLOC, /* 07 */
-+ DSLHAL_ERROR_DIAG_MALLOC, /* 08 */
-+ DSLHAL_ERROR_OVERLAY_MALLOC, /* 09 */
-+ DSLHAL_ERROR_CODE_DOWNLOAD, /* 10 */
-+ DSLHAL_ERROR_DIAGCODE_DOWNLOAD, /* 11 */
-+ DSLHAL_ERROR_BLOCK_READ, /* 12 */
-+ DSLHAL_ERROR_BLOCK_WRITE, /* 13 */
-+ DSLHAL_ERROR_MAILBOX_READ, /* 14 */
-+ DSLHAL_ERROR_MAILBOX_WRITE, /* 15 */
-+ DSLHAL_ERROR_MAILBOX_NOMAIL, /* 16 */
-+ DSLHAL_ERROR_MAILBOX_OVERFLOW, /* 17 */
-+ DSLHAL_ERROR_INVALID_PARAM, /* 18 */
-+ DSLHAL_ERROR_ADDRESS_TRANSLATE, /* 19 */
-+ DSLHAL_ERROR_FIRMWARE_CRC, /* 20 */
-+ DSLHAL_ERROR_FIRMWARE_OFFSET, /* 21 */
-+ DSLHAL_ERROR_CONFIG_API_FAILURE, /* 22 */
-+ DSLHAL_ERROR_EOCREG_API_FAILURE, /* 23 */
-+ DSLHAL_ERROR_VERSION_API_FAILURE, /* 24 */
-+ DSLHAL_ERROR_STATS_API_FAILURE, /* 25 */
-+ DSLHAL_ERROR_MARGIN_API_FAILURE, /* 26 */
-+ DSLHAL_ERROR_CTRL_API_FAILURE, /* 27 */
-+ DSLHAL_ERROR_HYBRID_API_FAILURE, /* 28 */
-+ DSLHAL_ERROR_MODEMENV_API_FAILURE, /* 29 */
-+ DSLHAL_ERROR_INTERRUPT_FAILURE, /* 30 */
-+ DSLHAL_ERROR_INTERNAL_API_FAILURE, /* 31 */
-+ DSLHAL_ERROR_DIGIDIAG_FAILURE, /* 32 */
-+ DSLHAL_ERROR_TONETEST_FAILURE, /* 33 */
-+ DSLHAL_ERROR_NOISETEST_FAILURE, /* 34 */
-+ DSLHAL_ERROR_MODEMSTATE, /* 35 */
-+ DSLHAL_ERROR_OVERLAY_CORRUPTED /* 36 */
-+};
-+
-+enum
-+{
-+ CONFIG_FLAG_NOFLAG, /* 00 */
-+ CONFIG_FLAG_TRELLIS, /* 01 */
-+ CONFIG_FLAG_EC, /* 02 */
-+ CONFIG_FLAG_RS /* 03 */
-+};
-+
-+#define USE_EMIF_REV 0
-+#define USE_CVR_REV 1
-+#define TNETD53XX_MAXLOOP 10000
-+#define REVERB 0
-+#define MEDLEY 1
-+#define NONINTENSE 0
-+#define slavespace0 0xa1000000
-+
-+#define MASK_MAILBOX_INTERRUPTS 0x00000001
-+#define MASK_BITFIELD_INTERRUPTS 0x00000002
-+#define MASK_HEARTBEAT_INTERRUPTS 0x00000004
-+#define DSP_INTERRUPT_SOURCE_REGISTER 0x020007A0
-+#define DSP_INTERRUPT_CLEAR_REGISTER 0x020007A4
-+
-+#define DIGITAL_DIAG_MEMSIZE 1048576
-+#define CRC32_QUOTIENT 0x04c11db7
-+#define DSP_FIRMWARE_MALLOC_SIZE 0x7ffff
-+#define DSP_CONSTELLATION_BUFFER_SIZE 1024*4
-+#define LOG43125 9303
-+#define US_NOMINAL_POWER (-38)
-+#define US_BNG_LENGTH 32
-+#define DS_BNG_LENGTH 256
-+#define NUMBER_OF_BITFIELDS 4
-+#define BITFIELD_SCAN 0x80000000
-+
-+/* ADSL Message offsets from Host Interface Pointer */
-+
-+/* ADSL2 Messages Index and Length defines */
-+
-+#define CMSGFMT_INDEX 0
-+#define CMSGPCB_INDEX 1
-+#define RMSGFMT_INDEX 2
-+#define RMSGPCB_INDEX 3
-+#define RMSG1LD_INDEX 13
-+#define RMSG2LD_INDEX 14
-+#define RMSG3LD_INDEX 15
-+#define RMSG4LD_INDEX 16
-+#define RMSG5LD_INDEX 17
-+#define RMSG6LD_INDEX 18
-+#define RMSG7LD_INDEX 19
-+#define RMSG8LD_INDEX 20
-+#define RMSG9LD_INDEX 21
-+#define CMSG1LD_INDEX 22
-+#define CMSG2LD_INDEX 23
-+#define CMSG3LD_INDEX 24
-+#define CMSG4LD_INDEX 25
-+#define CMSG5LD_INDEX 26
-+#define CMSGPCB2_INDEX 28
-+#define CMSGPCB2L_INDEX 29
-+#define RMSGFMT2_INDEX 30
-+#define RMSGPCB2L_INDEX 31
-+#define CMSG1ADSL2_INDEX 32
-+#define RMSG1ADSL2_INDEX 33
-+#define CMSG2ADSL2_INDEX 34
-+#define RMSG2ADSL2_INDEX 35
-+#define CPARAMS_INDEX 36
-+#define RPARAMS_INDEX 37
-+
-+/* ADSL2 Message Sizes */
-+
-+#define CMSGFMT_SIZE 2
-+#define RMSGFMT_SIZE 2
-+#define CMSGPCB_SIZE 2
-+#define CMSGPCB2_SIZE 6 /* Annex A with Blackout */
-+#define CMSGPCB2L_SIZE 10 /* Annex B with Blackout */
-+#define RMSGPCB_SIZE 36
-+#define RMSG1LD_SIZE 16
-+#define RMSGxLD_SIZE 258
-+#define CMSG1LD_SIZE 16
-+#define CMSG2LD_SIZE 130
-+#define CMSG3LD_SIZE 66
-+#define CMSG4LD_SIZE 34
-+#define CMSG5LD_SIZE 34
-+#define CMSG1ADSL2_SIZE 24
-+#define RMSG1ADSL2_SIZE 4
-+#define CMSG2ADSL2_SIZE 4
-+#define RMSG2ADSL2_SIZE 32
-+#define CPARAMS_SIZE 136
-+#define RPARAMS_SIZE 808
-+
-+/* ADSL2 Plus Message Sizes (if Different from ADSL2) */
-+
-+#define RMSGPCB_P_SIZE 68
-+#define CMSG1ADSL2P_SIZE 40 /* With Blackout */
-+#define CPARAMS_PA_SIZE 168
-+#define RPARAMS_PA_SIZE 2088
-+#define CPARAMS_PB_SIZE 296
-+#define RPARAMS_PB_SIZE 2088
-+
-+#endif /* pairs #ifndef ___DSL_REGISTER_DEFINES_H___ */
-diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_support.c linux.dev/drivers/atm/sangam_atm/dsl_hal_support.c
---- linux.old/drivers/atm/sangam_atm/dsl_hal_support.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_support.c 2005-08-23 04:46:50.100843240 +0200
-@@ -0,0 +1,2788 @@
-+/*******************************************************************************
-+* FILE PURPOSE: DSL Driver API functions for Sangam
-+*********************************************************************************
-+* FILE NAME: dsl_hal_support.c
-+*
-+* DESCRIPTION:
-+* Contains DSL HAL APIs for Modem Control
-+*
-+*
-+* (C) Copyright 2001-02, Texas Instruments, Inc.
-+* History
-+* Date Version Notes
-+* 06Feb03 0.00.00 RamP Created
-+* 21Mar03 0.00.01 RamP Inserted byteswap functions
-+* 07Apr03 0.00.02 RamP Implemented new error reporting scheme
-+* Changed Commenting to C style only
-+* 12Apr03 0.00.03 RamP Added function to set Interrupt Bit
-+* Masks for bitfield & Mailboxes
-+* 14Apr03 0.00.04 RamP Added function to process modem state
-+* bit fields; renamed REG32 macros
-+* Changed interrupt bit field settings
-+* 15Apr03 0.00.05 RamP Fixed exit condition on dslShutdown
-+* 21Apr03 0.01.00 RamP Fixed dslShutdown function & changed
-+* loop counter for overlay byteswaps
-+* (Alpha) Added cache writeback for overlays
-+* Added function acknowledgeInterrupt
-+* 22Apr03 0.01.01 RamP Moved acknowledgeInterrupt into api
-+* 24Apr03 0.01.02 RamP Added function to compare crc32 with
-+* pre-computed value as a recovery
-+* scheme for corrupt overlay pages
-+* 28Apr03 0.01.03 RamP Fixed a parameter in crc32 fxn call
-+* 05May03 0.01.04 RamP Fixed Message structure access in
-+* writeHostMailbox function
-+* 14May03 0.01.05 RamP Lookup to netService of dsp version
-+* (alpha ++) to determine pots/isdn service
-+* 21May03 0.01.06 RamP Added support for CO profiles
-+* 29May03 0.01.07 RamP Added critical section tabs for block
-+* read/write operations
-+* Added functions to reload overlay pages
-+* and CO Profiles
-+* 04Jun03 0.01.08 RamP Added state transition timing counters
-+* 06Jun03 0.01.09 RamP Added Interrupt source parsing function
-+* Interrupt masking for heartbeat added
-+* 09Jun03 0.01.10 RamP Modified modem state bit field processing
-+* for structure changes in ITIDSLHW
-+* fixed problem in free memory for CO prof
-+* 18Jul03 0.01.11 RamP Optimized free memory for CO profiles &
-+* overlay pages in the supporting APIs
-+* 28Jul03 0.02.00 RamP Modified the process bitfield functn
-+* for LED & Application State report
-+* 21Aug03 0.03.00 RamP Added logic to allocate & communicate
-+* memory for constellation buffer display
-+* 29Sep03 0.03.01 RamP Added API switch calls to advcfg module
-+* to abstract them from the API module
-+* 12Oct03 0.03.02 RamP Added API to gather ADSL2 Messages
-+* 14Oct03 0.03.03 RamP Added function to read CMsgsRA
-+* 23Oct03 0.03.04 RamP Changed train history index to circular
-+* buffer upon rollover
-+* 29Oct03 0.03.05 RamP Added Adsl2 Delt Message Parsing
-+* 12Nov03 0.03.06 RamP Fixed endianness issues with
-+* Constellation Display
-+* 14Nov03 0.03.07 RamP Added function to gather CRates1/RRates1
-+* before they get overwritten by CRatesRA
-+* 19Nov03 0.03.08 JohnP Revised dslhal_support_aocBitSwapProcessing to
-+* prevent duplicate ATU-R bitswaps going to ACT
-+* 24Nov03 0.03.09 RamP Implemented detailed State Tracking through
-+* Modem State bit fields for ADSL/2
-+* 12Dec03 0.03.10 RamP Tokenized advanced configuration code
-+* 12Dec03 0.03.11 RamP Added state reset upon IDLE
-+* 19Dec03 0.03.12 RamP Added static adsl2 byteswap function for
-+* handling pointer to pointer cases
-+* Changed adsl2 messages to correct pointer to
-+* pointer dereferencing problems in some OS
-+* 26Dec03 0.03.13 RamP Setting Current Address for Constellation
-+* buffer in addition to start address
-+* Added additional check to overlay page malloc
-+*******************************************************************************/
-+#include "dsl_hal_register.h"
-+#include "dsl_hal_support.h"
-+
-+static unsigned int dslhal_support_adsl2ByteSwap32(unsigned int in32Bits);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_unresetDslSubsystem
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This function unreset Dsl Subsystem
-+*
-+* INPUT: None
-+*
-+* RETURN: 0 if Pass; 1 if Fail
-+*
-+*****************************************************************************************/
-+int dslhal_support_unresetDslSubsystem(void)
-+{
-+ dprintf(4," dslhal_support_unresetDslSubsystem()\n");
-+ /* Put ADSLSS in to reset */
-+ DSLHAL_REG32(0xa8611a10) = 0x1;
-+ shim_osClockWait(64);
-+ dprintf(5,"Selected APLL Reg \n");
-+
-+ DSLHAL_REG32(0xa8610a90) = 0x4;
-+ shim_osClockWait(64);
-+ dprintf(5,"Enable Analog PLL \n");
-+
-+ DSLHAL_REG32(0xa8610a90) = 0x77fe;
-+ shim_osClockWait(64);
-+ dprintf(5,"Set PLL for DSP\n");
-+
-+ /* DSLHAL_REG32(0xa8611600) = 0x007f1bdf;*/
-+ DSLHAL_REG32(0xa8611600) |= RST_CNTRL_PRCR_ADSLSS;
-+ shim_osClockWait(64);
-+ dprintf(5,"Brought ADSLSS out of Reset \n");
-+
-+ DSLHAL_REG32(0xa861090c) &= ~((1<<20)|(1<<21)|(1<<22)|(1<<23)|(1<<24)|(1<<25));
-+ shim_osClockWait(64);
-+ dprintf(5,"Configured GPIO 20-25 for McBSP \n");
-+
-+ /*DSLHAL_REG32(0xa8611600) |= RST_CNTRL_PRCR_ADSLSS;*/
-+
-+
-+ /* DSLHAL_REG32(0xa8611a04) = 0x00000001;
-+ shim_osClockWait(64); */
-+
-+ dprintf(4," dslhal_support_unresetDslSubsystem done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_resetDslSubsystem
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This function unreset Dsl Subsystem
-+*
-+* INPUT: None
-+*
-+* RETURN: 0 if Pass; 1 if Fail
-+*
-+*****************************************************************************************/
-+int dslhal_support_resetDslSubsystem(void)
-+{
-+ dprintf(4, "dslhal_support_resetDslSubsystem \n");
-+ /* Put ADSLSS into reset */
-+ DSLHAL_REG32(0xa8611600) &= ~RST_CNTRL_PRCR_ADSLSS;
-+ shim_osClockWait(64);
-+ /* DSLHAL_REG32(0xa8611a04) = 0x00000000;
-+ shim_osClockWait(64); */
-+ dprintf(4, "dslhal_support_resetDslSubsystem Done \n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_unresetDsp()
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction takes ax5 daugter board out of reset.
-+*
-+* INPUT: None
-+*
-+* RETURN: 0 --successful.
-+* 1 --failed
-+*
-+*****************************************************************************************/
-+int dslhal_support_unresetDsp(void)
-+{
-+#ifdef PRE_SILICON
-+ /* unsigned char value; */
-+ int rc;
-+
-+ rc=dslhal_support_hostDspAddressTranslate((unsigned int)DEV_MDMA0_SRC_ADDR);
-+ if(rc==DSLHAL_ERROR_ADDRESS_TRANSLATE)
-+ {
-+ dprintf(1, "dslhal_support_hostDspAddressTranslate failed\n");
-+ return DSLHAL_ERROR_ADDRESS_TRANSLATE;
-+ }
-+ dprintf(5,"MDMA SRC: %08x\n", rc);
-+ DSLHAL_REG32(rc) = 0x80000001;
-+ rc=dslhal_support_hostDspAddressTranslate((unsigned int)DEV_MDMA0_DST_ADDR);
-+ if(rc==DSLHAL_ERROR_ADDRESS_TRANSLATE)
-+ {
-+ dprintf(1, "dslhal_support_hostDspAddressTranslate failed\n");
-+ return DSLHAL_ERROR_ADDRESS_TRANSLATE;
-+ }
-+ dprintf(5,"MDMA DST: %08x\n", rc);
-+ DSLHAL_REG32(rc) = 0x02090001;
-+ rc=dslhal_support_hostDspAddressTranslate((unsigned int)DEV_MDMA0_CTL_ADDR);
-+ if(rc== DSLHAL_ERROR_ADDRESS_TRANSLATE)
-+ {
-+ dprintf(1, "dslhal_support_hostDspAddressTranslate failed\n");
-+ return DSLHAL_ERROR_ADDRESS_TRANSLATE;
-+ }
-+ dprintf(5,"MDMA CTL: %08x\n", rc);
-+ DSLHAL_REG32(rc) = (DEV_MDMA_START | DEV_MDMA_DST_INC | DEV_MDMA_SRC_INC |
-+ DEV_MDMA_BURST1 | (1 << DEV_MDMA_LEN_SHF));
-+ /* statusMask = 0x00000010;*/
-+#else
-+ dprintf(4, "dslhal_support_unresetDsp()\n");
-+
-+ /* Bring the DSP core out of reset */
-+ /* DSLHAL_REG32(0xa8611600) = 0x00ff1bdf; */
-+ DSLHAL_REG32(0xa8611600) |= RST_CNTRL_PRCR_DSP;
-+ shim_osClockWait(64);
-+ dprintf(5,"Brought DSP out of Reset \n");
-+ dprintf(6,"Current Contents of PRCR: 0x%x\n",(unsigned int)DSLHAL_REG32(0xa8611600));
-+ /* DSLHAL_REG32(0xa8611a0c) = 0x00000007;
-+ shim_osClockWait(64); */
-+#endif
-+
-+ dprintf(4, "dslhal_support_unresetDsp() done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_resetDsp()
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction takes ax5 daugter board into reset.
-+*
-+* INPUT: None
-+*
-+* RETURN: 0 --successful.
-+* 1 --failed
-+*
-+*****************************************************************************************/
-+int dslhal_support_resetDsp(void)
-+{
-+ dprintf(4, "dslhal_support_resetDsp \n");
-+ /* Put ADSLSS into reset */
-+ DSLHAL_REG32(0xa8611600) &= ~RST_CNTRL_PRCR_DSP;
-+ shim_osClockWait(64);
-+ dprintf(4, "dslhal_support_resetDsp Done \n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_hostDspAddressTranslate()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Maps ax5 daugter card dsp memory address to avalanche memory space
-+*
-+* Input: unsigned int addr, dsp memory address.
-+*
-+* Return: >=0, unsigned int, mapped Avalanche address(VBUS address).
-+* -1, mapping failed
-+*
-+*
-+********************************************************************************************/
-+/* static unsigned int bbifmap0,bbifmap1; */
-+
-+unsigned int dslhal_support_hostDspAddressTranslate( unsigned int addr )
-+{
-+ unsigned int addrMap;
-+ /* This function should just be used to move the memory window of the ADSLSS */
-+ dprintf(5, "dslhal_support_hostDspAddressTranslate()\n");
-+
-+ /* select vbus to xbus memory */
-+ /* addrMap = addr & 0xff000000; */
-+ addrMap = addr & ADSLSSADRMASK;
-+
-+ DSLHAL_REG32(ADSLSSADR) = addrMap;
-+
-+ dprintf(6, "dslhal_support_hostDspAddressTranslate() done\n");
-+#ifdef PRE_SILICON
-+ return ((ADSLSS_BASE | (~ADSLSSADRMASK & addr))+ 0x00000100);
-+ /* Added 0x100 for Pre-Silicon VLNQ offset.. to be removed for Silicon */
-+#else
-+ return ((ADSLSS_BASE | (~ADSLSSADRMASK & addr)));
-+ /* Added 0x100 for Pre-Silicon VLNQ offset.. to be removed for Silicon */
-+#endif
-+
-+}
-+
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_blockWrite
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This rouin simulates DSP memory write as done in ax5 pci nic card
-+*
-+* INPUT: void *buffer, data need to written
-+* void *adde, memory address to be written
-+* size_t count, number of bytes to be written
-+*
-+* RETURN: 0 --succeeded
-+* 1 --Failed
-+*
-+*****************************************************************************************/
-+
-+int dslhal_support_blockWrite(void *buffer, void *addr, size_t count)
-+{
-+ int rc, byteCnt=0;
-+ unsigned char* ptr;
-+ union
-+ {
-+ unsigned char *cptr;
-+ short *sptr;
-+ int *iptr;
-+ } src;
-+ union
-+ {
-+ int anint; /* DSP location */
-+ unsigned char *cptr; /* to avoid casts */
-+ } dst;
-+ union
-+ {
-+ unsigned int anint;
-+ unsigned char byte[4];
-+ }data,dword,sword;
-+
-+ /* Enter Critical Section */
-+ shim_osCriticalEnter();
-+
-+ dprintf(6, "dslhal_support_blockWrite\n");
-+
-+ dprintf(6,"addr=0x%X, length=0x%X, buffer=0x%X\n", (unsigned int) addr, (unsigned int) count, (unsigned int)buffer);
-+
-+ src.cptr = (unsigned char*) buffer; /* local buffer */
-+ dst.cptr = addr; /* DSP memory location */
-+
-+ /*Maps address first*/
-+ rc=dslhal_support_hostDspAddressTranslate((unsigned int)addr);
-+ dprintf(5, "NewAddr: %08x\n", rc);
-+ if(rc== DSLHAL_ERROR_ADDRESS_TRANSLATE)
-+ {
-+ dprintf(1, "dslhal_support_hostDspAddressTranslate failed\n");
-+ return DSLHAL_ERROR_ADDRESS_TRANSLATE;
-+ }
-+
-+ dst.cptr=(unsigned char *)rc;
-+
-+ /* check wether address is at 32bits boundary */
-+
-+ if ((dst.anint & 0x3) && count)
-+ {
-+ sword.anint = *(unsigned int*)((unsigned int)src.cptr & 0xfffffffc);
-+ dword.anint = DSLHAL_REG32((unsigned int)dst.cptr & 0xfffffffc);
-+ sword.anint = (unsigned int) dslhal_support_byteSwap32(sword.anint);
-+ dword.anint = (unsigned int) dslhal_support_byteSwap32(dword.anint);
-+ ptr = (unsigned char *)((unsigned int)dst.cptr & 0xfffffffc);
-+
-+ if((dst.anint & 3) ==3) /* last byte of a dword */
-+ {
-+ dword.byte[3] = sword.byte[3];
-+ dst.anint++; /* bump the address by one */
-+ byteCnt++;
-+ count--;
-+ }
-+
-+ if((dst.anint & 3) ==1) /* second byte */
-+ {
-+ if(count>3)
-+ {
-+ dword.byte[3] = sword.byte[3];
-+ dst.anint++;
-+ count--;
-+ byteCnt++;
-+ }
-+ if(count>2)
-+ {
-+ dword.byte[2] = sword.byte[2];
-+ dst.anint++;
-+ count--;
-+ byteCnt++;
-+ }
-+ if(count)
-+ {
-+ dword.byte[1] = sword.byte[1];
-+ dst.anint++;
-+ count--;
-+ byteCnt++;
-+ }
-+ }
-+
-+ if((dst.anint & 3) && (count >1))
-+ {
-+ dword.byte[2] = sword.byte[2];
-+ dword.byte[3] = sword.byte[3];
-+ byteCnt+=2;
-+ dst.anint += 2; /* bump the address by two */
-+ count -= 2; /* decrement the byte count by two */
-+ }
-+
-+ if((dst.anint & 3) && (count==1))
-+ {
-+ dword.byte[2] = sword.byte[2];
-+ dst.anint++;
-+ byteCnt++;
-+ count--;
-+ }
-+ src.cptr = (char *)((unsigned int)src.cptr & 0xfffffffc); /* fix 032802 */
-+ dword.anint = dslhal_support_byteSwap32(dword.anint);
-+ DSLHAL_REG32((unsigned int)ptr) = dword.anint;
-+ ptr = src.cptr;
-+ for(rc=0;rc<count;rc++)
-+ {
-+ *ptr = *(ptr+byteCnt);
-+ ptr++;
-+ }
-+ }
-+
-+ /* the dst pointer should now be on a 32-bit boundary */
-+
-+ while (count > 3)
-+ {
-+ DSLHAL_REG32((unsigned int)dst.cptr) = dslhal_support_byteSwap32(*src.iptr);
-+ src.iptr++; /* bump the data pointer by four */
-+ dst.anint += 4; /* bump the address by four */
-+ count -= 4; /* decrement the byte count by four */
-+ }
-+
-+ /* write remaining bytes */
-+ if(count)
-+ {
-+ int i;
-+
-+ data.anint= DSLHAL_REG32((unsigned int)dst.cptr);
-+ data.anint=dslhal_support_byteSwap32(data.anint);
-+ for (i=0; i< count; i++)
-+ {
-+ data.byte[i]=*(src.cptr+i);
-+ }
-+ data.anint=dslhal_support_byteSwap32(data.anint);
-+ DSLHAL_REG32((unsigned int)dst.cptr) = data.anint;
-+ src.cptr +=count;
-+ dst.anint +=count;
-+ count=0;
-+ }
-+ dprintf(6, "dslhal_support_blockWrite done\n");
-+ /* Exit Critical Section */
-+ shim_osCriticalExit();
-+ return DSLHAL_ERROR_NO_ERRORS;
-+} /* end of dslhal_support_blockWrite() */
-+
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_blockRead
-+*
-+*********************************************************************************************
-+* DESCRIPTION: This rouin simulates DSP memory read as done in ax5 pci nic card
-+*
-+* INPUT: void *addr, memory address to be read
-+* void *buffer, dat buffer to be filled with from memmory
-+* size_t count, number of bytes to be written
-+*
-+* RETURN: 0 --succeeded
-+* 1 --Failed
-+*
-+*****************************************************************************************/
-+
-+int dslhal_support_blockRead(void *addr, void *buffer, size_t count)
-+{
-+ int rc;
-+ union
-+ {
-+ int anint; /* DSP location */
-+ char *cptr; /* to avoid casts */
-+ } src;
-+ union
-+ {
-+ char byte[4];
-+ int anint; /* DSP data */
-+ } data;
-+ union
-+ {
-+ char *cptr;
-+ int *iptr;
-+ } dst;
-+
-+ /* Enter Critical Section */
-+ shim_osCriticalEnter();
-+
-+ dprintf(6,"dslhal_support_blockRead\n");
-+
-+
-+ src.cptr = addr; /* DSP memory location */
-+ dst.cptr = buffer; /* local buffer */
-+
-+ dprintf(6, "Read addr=0x%X, size=0x%X\n", (unsigned int)addr, count);
-+
-+
-+ /*Maps address first*/
-+ rc=dslhal_support_hostDspAddressTranslate((unsigned int)addr);
-+ if(rc== DSLHAL_ERROR_ADDRESS_TRANSLATE)
-+ {
-+ dprintf(1, "dslhal_support_hostDspAddressTranslate failed\n");
-+ return DSLHAL_ERROR_ADDRESS_TRANSLATE;
-+ }
-+
-+ src.cptr=(unsigned char *)rc;
-+
-+ /**********************************************
-+ * if the source is NOT on a 32-bit boundary *
-+ * then we read the full word *
-+ * and ignore the first part of it *
-+ **********************************************/
-+
-+ if ((src.anint & 3) && count)
-+ {
-+ unsigned int anword;
-+
-+ anword = DSLHAL_REG32((unsigned int)src.cptr & 0xfffffffc);
-+ data.anint = dslhal_support_byteSwap32(anword);
-+
-+ /************************************
-+ * there is no need for case 0 *
-+ * notice that there are no breaks *
-+ * each falls through to the next *
-+ ************************************/
-+
-+ switch (src.anint & 3)
-+ {
-+ case 1:
-+ /* use only byte[1-3] */
-+ *(dst.cptr++) = data.byte[1];
-+ src.anint++;
-+ count--;
-+ case 2:
-+ /* use byte[2-3] */
-+ if (count)
-+ {
-+ *(dst.cptr++) = data.byte[2];
-+ src.anint++;
-+ count--;
-+ }
-+ case 3:
-+ /* use byte[3] */
-+ if (count)
-+ {
-+ *(dst.cptr++) = data.byte[3];
-+ src.anint++;
-+ count--;
-+ }
-+ }
-+ }
-+
-+ /* the src pointer should now be on a 32-bit boundary */
-+ while (count > 3)
-+ {
-+ unsigned int anword;
-+
-+ anword=DSLHAL_REG32((unsigned int)src.cptr);
-+
-+ *dst.iptr = dslhal_support_byteSwap32(anword);
-+ src.anint += 4; /* bump the address by four */
-+ dst.iptr++; /* bump the data pointer by four */
-+ count -= 4; /* decrement the byte count by four */
-+ }
-+
-+ /*******************************
-+ * if there's any count left *
-+ * then we read the next word *
-+ * and ignore the end of it *
-+ *******************************/
-+ if (count)
-+ {
-+ unsigned int anword;
-+
-+ anword= DSLHAL_REG32((unsigned int)src.cptr);
-+ data.anint = dslhal_support_byteSwap32(anword);
-+
-+ /************************************
-+ * there is no need for case 0 *
-+ * notice that there are no breaks *
-+ * each falls through to the next *
-+ ************************************/
-+ switch (count)
-+ {
-+ case 1:
-+ /* use byte[0] */
-+ *(dst.cptr++) = data.byte[0];
-+ src.anint++;
-+ count--;
-+ break;
-+ case 2:
-+ /* use byte[0-1] */
-+ *(dst.cptr++) = data.byte[0];
-+ *(dst.cptr++) = data.byte[1];
-+ src.anint +=2;
-+ count -= 2;
-+ break;
-+ case 3:
-+ /* use only byte[0-2] */
-+ *(dst.cptr++) = data.byte[0];
-+ *(dst.cptr++) = data.byte[1];
-+ *(dst.cptr++) = data.byte[2];
-+ src.anint +=3;
-+ count -= 3;
-+ break;
-+ }
-+ }
-+ /* Exit Critical Section */
-+ shim_osCriticalExit();
-+
-+ return DSLHAL_ERROR_NO_ERRORS;
-+
-+} /* end of dslhal_support_blockRead() */
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_readDspMailbox
-+*
-+*********************************************************************************************
-+* DESCRIPTION: Reads a message from the mailbox
-+*
-+* ARGUMENTS: int *pcmd Pointer to command read
-+*
-+* RETURNS: 0 if successful
-+* 1 if no mail
-+* NZ otherwise
-+*
-+*****************************************************************************************/
-+
-+int dslhal_support_readDspMailbox(tidsl_t *ptidsl, int *pcmd, int *ptag, int *pprm1, int *pprm2)
-+{
-+ int rc;
-+ int cmd;
-+ int tag;
-+ int prm1;
-+ int prm2;
-+ unsigned char dspOutInx;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ DEV_HOST_mailboxControl_t mailboxControl;
-+ DEV_HOST_dspHostMsg_t dspMailboxMsg[DEV_HOST_DSPQUEUE_LENGTH];
-+
-+ dprintf(6,"dslhal_support_readDspMailbox\n");
-+
-+ /* get the DSP main pointer */
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,
-+ sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ /* Read in the command/response buffer */
-+ dspOamSharedInterface.dspHostMailboxControl_p = (DEV_HOST_mailboxControl_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.dspHostMailboxControl_p);
-+
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.dspHostMailboxControl_p,
-+ &mailboxControl, sizeof(DEV_HOST_mailboxControl_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ /* Change the endianness of the Mailbox Pointer */
-+ mailboxControl.dspMsgBuf_p = (DEV_HOST_dspHostMsg_t *) dslhal_support_byteSwap32((unsigned int)mailboxControl.dspMsgBuf_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)mailboxControl.dspMsgBuf_p,
-+ &dspMailboxMsg, (sizeof(DEV_HOST_dspHostMsg_t)*DEV_HOST_DSPQUEUE_LENGTH));
-+
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ /* Extract the command/response message index */
-+ mailboxControl.hostInInx &= 7;
-+ mailboxControl.hostOutInx &= 7;
-+ mailboxControl.dspOutInx &= 7;
-+ mailboxControl.dspInInx &= 7;
-+
-+
-+ /* check for messages in the mailbox */
-+
-+ if (mailboxControl.dspOutInx == mailboxControl.dspInInx)
-+ {
-+ return DSLHAL_ERROR_MAILBOX_NOMAIL;
-+ /* no messages to read */
-+ }
-+
-+ /* use bDRESPOutInx as index to DRESPMsgBuf */
-+
-+ cmd = dspMailboxMsg[mailboxControl.dspOutInx].cmd;
-+ tag = dspMailboxMsg[mailboxControl.dspOutInx].tag;
-+ prm1= dspMailboxMsg[mailboxControl.dspOutInx].param1;
-+ prm2= dspMailboxMsg[mailboxControl.dspOutInx].param2;
-+
-+ mailboxControl.dspOutInx++; /* increment count */
-+ mailboxControl.dspOutInx &= 7; /* only two bits */
-+
-+ dspOutInx = mailboxControl.dspOutInx;
-+
-+ /* Read in the command response buffer again to take care of changes */
-+ mailboxControl.dspOutInx = dspOutInx;
-+ rc = dslhal_support_blockWrite(&mailboxControl.dspOutInx,
-+ &dspOamSharedInterface.dspHostMailboxControl_p->dspOutInx, sizeof(BYTE));
-+
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_WRITE;
-+
-+ /* Is the input parameter address non-zero*/
-+
-+ if (pcmd)
-+ {
-+ *pcmd = cmd;
-+ }
-+ if (ptag)
-+ {
-+ *ptag = tag;
-+ }
-+ if (pprm1)
-+ {
-+ *pprm1 = prm1;
-+ }
-+ if (pprm2)
-+ {
-+ *pprm2 = prm2;
-+ }
-+
-+ dprintf(6,"dslhal_support_readDspMailbox done\n");
-+ dprintf(6,"cmd=%d, tag=%d\n", cmd, tag);
-+ dprintf(6,"dslhal_support_readDspMailbox:cmd: 0x%x, tag=%d\n", cmd, tag);
-+ return DSLHAL_ERROR_NO_ERRORS;
-+
-+} /* end of dslhal_support_readDspMailbox() */
-+
-+/*******************************************************************************************
-+* FUNCTION NAME: dslhal_support_writeHostMailbox
-+*
-+********************************************************************************************
-+* DESCRIPTION: Send a message to a mailbox
-+*
-+* ARGUMENTS: int cmd command to write
-+* int tag tag (currently unused)
-+* int p1 parameter 1 (currently unused)
-+* int p2 parameter 2 (currently unused)
-+*
-+* RETURNS: 0 if successful
-+* NZ otherwise
-+*
-+*******************************************************************************************/
-+
-+int dslhal_support_writeHostMailbox(tidsl_t *ptidsl, int cmd, int tag, int p1, int p2)
-+{
-+ int rc;
-+ int index;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ DEV_HOST_mailboxControl_t mailboxControl;
-+ DEV_HOST_dspHostMsg_t hostMailboxMsg[DEV_HOST_HOSTQUEUE_LENGTH];
-+ unsigned char hostInInx;
-+
-+ dprintf(6,"dslhal_support_writeHostMailbox:cmd: 0x%x, tag=%d\n", cmd, tag);
-+
-+ dprintf(6,"cmd=%d, tag=%d\n", cmd, tag);
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,
-+ sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ /* Read in the command/response buffer */
-+ dspOamSharedInterface.dspHostMailboxControl_p = (DEV_HOST_mailboxControl_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.dspHostMailboxControl_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.dspHostMailboxControl_p,
-+ &mailboxControl, sizeof(DEV_HOST_mailboxControl_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ /* Change the endianness of the Mailbox Control Pointer */
-+ mailboxControl.hostMsgBuf_p = (DEV_HOST_dspHostMsg_t *) dslhal_support_byteSwap32((unsigned int)mailboxControl.hostMsgBuf_p);
-+ rc = dslhal_support_blockRead((PVOID)mailboxControl.hostMsgBuf_p,
-+ &hostMailboxMsg, (sizeof(DEV_HOST_dspHostMsg_t)*DEV_HOST_HOSTQUEUE_LENGTH));
-+
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ /* Extract the command/response message index */
-+ mailboxControl.hostInInx &= 7;
-+ mailboxControl.hostOutInx &= 7;
-+ mailboxControl.dspOutInx &= 7;
-+ mailboxControl.dspInInx &= 7;
-+
-+ /* make sure there's room in the mailbox */
-+
-+ index = mailboxControl.hostInInx;
-+ mailboxControl.hostInInx++;
-+ mailboxControl.hostInInx &= 7;
-+ hostInInx = mailboxControl.hostInInx;
-+ if (mailboxControl.hostInInx == mailboxControl.hostOutInx)
-+ {
-+ /* mailbox is full */
-+ return DSLHAL_ERROR_MAILBOX_OVERFLOW;
-+ }
-+
-+ /* use bOCMDInInx as index to OCMDMsgBuf */
-+ hostMailboxMsg[index].cmd = (BYTE) cmd;
-+ hostMailboxMsg[index].tag = (BYTE) tag;
-+ hostMailboxMsg[index].param1 = (BYTE) p1;
-+ hostMailboxMsg[index].param2 = (BYTE) p2;
-+ rc = dslhal_support_blockWrite(&hostMailboxMsg,
-+ (PVOID)mailboxControl.hostMsgBuf_p,
-+ sizeof(DEV_HOST_dspHostMsg_t)*DEV_HOST_HOSTQUEUE_LENGTH);
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockWrite failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ rc = dslhal_support_blockWrite(&mailboxControl,
-+ &dspOamSharedInterface.dspHostMailboxControl_p,
-+ sizeof(DEV_HOST_mailboxControl_t));
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_WRITE;
-+ /* update the index */
-+ mailboxControl.hostInInx = hostInInx;
-+ rc = dslhal_support_blockWrite(&mailboxControl.hostInInx,
-+ &dspOamSharedInterface.dspHostMailboxControl_p->hostInInx,
-+ sizeof(BYTE));
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_WRITE;
-+
-+ dprintf(6,"dslhal_support_writeHostMailbox done\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+
-+}
-+/* end of dslhal_support_writeHostMailbox() */
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_readTextMailbox
-+*
-+*********************************************************************************************
-+* DESCRIPTION: Reads a message from the mailbox
-+*
-+* ARGUMENTS: int *pcmd Pointer to command read
-+*
-+* RETURNS: 0 if successful
-+* 1 if no mail
-+* NZ otherwise
-+*
-+*****************************************************************************************/
-+
-+int dslhal_support_readTextMailbox(tidsl_t *ptidsl, int *pmsg1, int *pmsg2)
-+{
-+ int rc;
-+ unsigned int msg1;
-+ unsigned int msg2;
-+ unsigned char textOutInx;
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ DEV_HOST_mailboxControl_t mailboxControl;
-+ DEV_HOST_textMsg_t textMailboxMsg[DEV_HOST_TEXTQUEUE_LENGTH];
-+
-+ dprintf(6,"dslhal_support_readTextMailbox\n");
-+
-+ /* get the DSP main pointer */
-+
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterfacePtr_t) ptidsl->pmainAddr;
-+
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,
-+ sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ /* Read in the command/response buffer */
-+ dspOamSharedInterface.dspHostMailboxControl_p = (DEV_HOST_mailboxControl_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.dspHostMailboxControl_p);
-+
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.dspHostMailboxControl_p,
-+ &mailboxControl, sizeof(DEV_HOST_mailboxControl_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ /* Change the endianness of the Mailbox Pointer */
-+ mailboxControl.textMsgBuf_p = (DEV_HOST_textMsg_t *) dslhal_support_byteSwap32((unsigned int)mailboxControl.textMsgBuf_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)mailboxControl.textMsgBuf_p,
-+ &textMailboxMsg, (sizeof(DEV_HOST_textMsg_t)*DEV_HOST_DSPQUEUE_LENGTH));
-+
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ /* Extract the command/response message index */
-+
-+ mailboxControl.textInInx &= 7;
-+ mailboxControl.textOutInx &= 7;
-+
-+ /* check for messages in the mailbox */
-+
-+ if (mailboxControl.textOutInx == mailboxControl.textInInx)
-+ {
-+ return DSLHAL_ERROR_MAILBOX_NOMAIL;
-+ /* no messages to read */
-+ }
-+
-+ /* use bDRESPOutInx as index to DRESPMsgBuf */
-+
-+ msg1 = textMailboxMsg[mailboxControl.textOutInx].msgPart1;
-+ msg2 = textMailboxMsg[mailboxControl.textOutInx].msgPart2;
-+ msg1 = (unsigned int) dslhal_support_byteSwap32((unsigned int)msg1);
-+ msg2 = (unsigned int) dslhal_support_byteSwap32((unsigned int)msg2);
-+
-+ mailboxControl.textOutInx++; /* increment count */
-+ mailboxControl.textOutInx &= 7; /* only two bits */
-+
-+ textOutInx = mailboxControl.textOutInx;
-+
-+ /* Read in the command response buffer again to take care of changes */
-+
-+ mailboxControl.textOutInx = textOutInx;
-+
-+ rc = dslhal_support_blockWrite(&mailboxControl.textOutInx,
-+ &dspOamSharedInterface.dspHostMailboxControl_p->textOutInx, sizeof(BYTE));
-+
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_WRITE;
-+
-+ /* Is the input parameter address non-zero*/
-+
-+ if (pmsg1)
-+ {
-+ *pmsg1 = msg1;
-+ }
-+ if (pmsg2)
-+ {
-+ *pmsg2 = msg2;
-+ }
-+
-+ dprintf(6,"dslhal_support_readTextMailbox done\n");
-+ dprintf(6,"msgPart1=%d, msgPart2=%d\n", msg1, msg2);
-+ dprintf(6,"dslhal_support_readTextMailbox:Message Part1: 0x%x, tag=0x%x\n", msg1, msg2);
-+ return DSLHAL_ERROR_NO_ERRORS;
-+
-+} /* end of dslhal_support_readTextMailbox() */
-+
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_hostDspCodeDownload()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* download DSP image from host memory to dsp memory
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+int dslhal_support_hostDspCodeDownload(tidsl_t * ptidsl)
-+{
-+
-+ unsigned int index;
-+ int rc = 0, i;
-+ unsigned char *iptr; /* image pointer */
-+ unsigned int numbytes,olayXfer,olayStore;
-+ /* unsigned int holdSecPhyAddr=0,holdSecVirtAddr; */
-+ unsigned int *olayStart;
-+ size_t len; /* size of the file */
-+ size_t expoffset; /* expected offset for next section header */
-+ unsigned short checksum;
-+ unsigned int crc32;
-+ unsigned char * image;
-+ char *tmp = (char *)DEV_HOST_DSP_OAM_POINTER_LOCATION;
-+ DEV_HOST_dspVersionDef_t dspVersion;
-+#if SWTC
-+ DEV_HOST_tcHostCommDef_t TCHostCommDef;
-+#endif
-+ DEV_HOST_oamWrNegoParaDef_t OamWrNegoParaDef;
-+ DEV_HOST_dspOamSharedInterface_t dspOamSharedInterface, *pdspOamSharedInterface;
-+ DEV_HOST_olayDpDef_t olayDpParms;
-+ DEV_HOST_profileBase_t profileList;
-+#ifndef NO_ACT
-+ DEV_HOST_consBufDef_t constDisp;
-+#endif
-+#if CO_PROFILES
-+ DEV_HOST_coData_t coData;
-+#endif
-+ DEV_HOST_olayDpPageDef_t olayDpPageDef[NUM_PAGES];
-+ union
-+ {
-+ char byte[4];
-+ unsigned short hword[2];
-+ unsigned int aword;
-+ } data;
-+
-+ struct _header
-+ {
-+ char signature[6];
-+ unsigned short sectcount;
-+ unsigned int length;
-+ } header;
-+
-+ struct _section
-+ {
-+ unsigned int addr;
-+ unsigned int length;
-+ unsigned int offset;
-+ unsigned int page;
-+ };/* section[MAXSECTIONS]; */
-+
-+ struct _section *sptr;
-+ unsigned int secAddr, secLength, secOffset, secPage;
-+
-+
-+ dprintf(5,"dslhal_support_hostDspCodeDownload\n");
-+ image = ptidsl->fwimage;
-+
-+ if (!image)
-+ {
-+ dprintf(1,"no image file\n");
-+ return DSLHAL_ERROR_NO_FIRMWARE_IMAGE;
-+ }
-+
-+ iptr=image;
-+
-+ numbytes = sizeof(header);
-+
-+ shim_osMoveMemory((char *) &header, (char *)iptr, numbytes);
-+ header.length = dslhal_support_byteSwap32(header.length);
-+ header.sectcount = dslhal_support_byteSwap16(header.sectcount);
-+#if 0
-+ crc32 = dslhal_support_computeCrc32((unsigned char*)&crcTest[0],20);
-+ dprintf(6,"CRC-32 for the crcTest: 0x%x",crc32);
-+ dprintf(4,"header.length=%d, header.sectcount=0x%X\n", header.length, header.sectcount);
-+#endif
-+ /* point to the checksum */
-+ /* compute the checksum on CRC32 here */
-+ iptr = image + header.length-4;
-+ numbytes = sizeof(data.aword);
-+
-+ dprintf(5,"tiload: check checksum\n");
-+ shim_osMoveMemory((char *)&(data.byte), (char *)iptr, numbytes);
-+
-+ crc32 = dslhal_support_computeCrc32(image,ptidsl->imagesize);
-+ dprintf(5,"CRC-32 for the Binary: 0x%x",crc32);
-+ /* CRC currently not added to the DSP binary, so this code is commented out */
-+ /*
-+ data.aword = dslhal_support_byteSwap32(data.aword);
-+ if (data.aword != crc32)
-+ {
-+ dprintf(1,"Checksum error\n");
-+ }
-+ */
-+ /* Verify signature - Changed from "320C6x" to "TIDSL" for load 80 */
-+
-+ header.signature[5]='\0';
-+ dprintf(5, "signature=%s\n", header.signature);
-+
-+ if (shim_osStringCmp(header.signature, "TIDSL"))
-+ {
-+ dprintf(1,"Signature not match\n");
-+ return DSLHAL_ERROR_FIRMWARE_OFFSET;
-+ }
-+
-+ dprintf(5,"tiload: check sect count\n");
-+ /* check section count */
-+
-+ if (header.sectcount > MAXSECTIONS)
-+ {
-+ dprintf(1,"Section # %d exceeds max %d\n", header.sectcount, MAXSECTIONS);
-+ return DSLHAL_ERROR_FIRMWARE_OFFSET;
-+ }
-+ else
-+ {
-+ dprintf(5,"found %d sections\n", header.sectcount);
-+ }
-+
-+ /* Validation of Section offsets */
-+
-+ /* point to the first section */
-+ len = header.length; /* file size in bytes */
-+ expoffset = sizeof(struct _header) + header.sectcount * sizeof(struct _section);
-+
-+ dprintf(5,"tiload: check offset\n");
-+ for (index=0; index<header.sectcount; index++) /* parse the sections one by one */
-+ {
-+ numbytes = sizeof(struct _header) + index * sizeof(struct _section); /* Compute Section Offset */
-+ sptr = (struct _section *)(image + numbytes); /* Section Pointer to beginning of the section */
-+
-+ secAddr = dslhal_support_byteSwap32(sptr->addr);
-+ secOffset = dslhal_support_byteSwap32(sptr->offset);
-+ secLength = dslhal_support_byteSwap32(sptr->length);
-+ secPage = dslhal_support_byteSwap32(sptr->page);
-+
-+ /* validate offset */
-+ if ( secOffset== 0xffffffff)
-+ {
-+ /* special case: zero fill */
-+ /* offset is valid, don't change expoffset */
-+ }
-+ else
-+ {
-+ if (secOffset > len-4)
-+ {
-+ dprintf(5,"Offset error\n");
-+ return DSLHAL_ERROR_FIRMWARE_OFFSET;
-+ }
-+
-+ /* determine expected offset of NEXT section */
-+ expoffset = secLength + secOffset;
-+
-+ /* all addresses must be on word boundaries */
-+ if (secAddr & 3)
-+ {
-+
-+ }
-+ }
-+ }
-+
-+ /* check final offset - should just be a checksum left */
-+/* IMPORTANT 11/24/02 --> Got this error... but bypassed for Pf of Concept*/
-+ /*
-+ if (expoffset != len-4)
-+ {
-+ dprintf(5,"Final offset error\n");
-+ return DSLHAL_ERROR_FIRMWARE_OFFSET;
-+ }
-+ */
-+
-+ /* Actual Code loading to DSP Memory */
-+
-+ /* Initialize DSP Data Memory before code load*/
-+ dprintf(5,"Zero Prefill DSP DMEM\n");
-+ DSLHAL_REG32(ADSLSSADR)=0x80000000;
-+ shim_osZeroMemory((char *)0xa1000000, 0x10000);
-+ /* Load sections from the image */
-+ for (index=0; index<header.sectcount; index++) /* Parse each section */
-+ {
-+ numbytes = sizeof(header) + index * sizeof(struct _section); /* Compute offset to next section */
-+ sptr = (struct _section *)(image + numbytes); /* Point to next section */
-+
-+ secAddr = dslhal_support_byteSwap32(sptr->addr);
-+ secOffset = dslhal_support_byteSwap32(sptr->offset);
-+ secLength = dslhal_support_byteSwap32(sptr->length);
-+ secPage = dslhal_support_byteSwap32(sptr->page);
-+
-+ data.aword = secAddr;
-+ checksum += data.byte[0] + data.byte[1] + data.byte[2] + data.byte[3];
-+
-+ data.aword = secLength;
-+ checksum += data.byte[0] + data.byte[1] + data.byte[2] + data.byte[3];
-+
-+ data.aword = secOffset;
-+ checksum += data.byte[0] + data.byte[1] + data.byte[2] + data.byte[3];
-+
-+ data.aword = secPage;
-+ checksum += data.byte[0] + data.byte[1] + data.byte[2] + data.byte[3];
-+
-+
-+ /* validate offset */
-+ if (secOffset == 0xffffffff)
-+ {
-+ /* special case: zero fill */
-+ /* offset is valid, don't change expoffset */
-+ }
-+ else
-+ {
-+ /* real offset */
-+ if(secOffset > len-4)
-+ {
-+ dprintf(5,"section[%u] offset too big (%X/%X)\n", index,
-+ secOffset, len-4);
-+
-+ return DSLHAL_ERROR_FIRMWARE_OFFSET;
-+ }
-+
-+ /* determine expected offset of NEXT section */
-+ expoffset = secLength + secOffset;
-+
-+ }
-+
-+ }
-+
-+ /* check final offset - should just be a checksum left */
-+ /*
-+ if(expoffset != len-4)
-+ {
-+ dprintf(1,"sections don't span full file (%X/%X)\n",expoffset,len-2);
-+ return DSLHAL_ERROR_FIRMWARE_OFFSET;
-+ }
-+ */
-+ dprintf(5,"tiload: load binary\n");
-+
-+ for (index=0; index<header.sectcount; index++)
-+ {
-+ numbytes = sizeof(header) + index * sizeof(struct _section);
-+ sptr = (struct _section *)(image + numbytes);
-+
-+ secAddr = dslhal_support_byteSwap32(sptr->addr);
-+ secOffset = dslhal_support_byteSwap32(sptr->offset);
-+ secLength = dslhal_support_byteSwap32(sptr->length);
-+ secPage = dslhal_support_byteSwap32(sptr->page);
-+ dprintf(5,"loading section %u\n", index);
-+ dprintf(5,"section %u: addr: %X\n", index, secAddr);
-+ dprintf(5,"section %u: length: %X\n", index, secLength);
-+ dprintf(5,"section %u: offset: %X\n", index, secOffset);
-+ dprintf(5,"section %u: page: %X\n", index, secPage);
-+
-+ /* point to the section's data */
-+ if(secOffset != 0xffffffff)
-+ {
-+ /* Load this section of data */
-+ iptr = image + secOffset;
-+ dprintf(6, "iptr %8x\n", (unsigned int)iptr);
-+ }
-+
-+ if(secPage)
-+ {
-+ dprintf(6,"OVERLAY PAGE #%d\n",secPage);
-+ /* overlay page, don't write to dsp yet, save into host memory*/
-+
-+ dprintf(6,"Section Length: %d \n",secLength);
-+ ptidsl->olayDpPage[secPage].PmemStartWtAddr = (unsigned int) shim_osAllocateDmaMemory(secLength);
-+ if(ptidsl->olayDpPage[secPage].PmemStartWtAddr == NULL)
-+ {
-+ dprintf(1, "overlay page allocate error\n");
-+ return DSLHAL_ERROR_OVERLAY_MALLOC;
-+ }
-+#ifdef PRE_SILICON
-+ ptidsl->olayDpPage[secPage].overlayHostAddr = ((((ptidsl->olayDpPage[secPage].PmemStartWtAddr)-0x84000000)-0x10000000)+0x030b0000);
-+#else
-+ /* ptidsl->olayDpPage[secPage].overlayHostAddr = ((unsigned int)(ptidsl->olayDpPage[secPage].PmemStartWtAddr)&~0xe0000000); */
-+ ptidsl->olayDpPage[secPage].overlayHostAddr = virtual2Physical((unsigned int)ptidsl->olayDpPage[secPage].PmemStartWtAddr);
-+#endif
-+ dprintf(6,"Allocated Addr: 0x%x \t Xlated Addr: 0x%x \n",ptidsl->olayDpPage[secPage].PmemStartWtAddr,ptidsl->olayDpPage[secPage].overlayHostAddr);
-+
-+ ptidsl->olayDpPage[secPage].overlayHostAddr = (unsigned int)dslhal_support_byteSwap32(ptidsl->olayDpPage[secPage].overlayHostAddr);
-+ ptidsl->olayDpPage[secPage].OverlayXferCount = secLength;
-+ ptidsl->olayDpPage[secPage].BinAddr = secAddr;
-+ ptidsl->olayDpPage[secPage].SecOffset = secOffset;
-+ shim_osMoveMemory((char *)ptidsl->olayDpPage[secPage].PmemStartWtAddr, (char *)iptr, secLength);
-+ /* RamP Image ByteSwap test */
-+ olayStart = (unsigned int *)ptidsl->olayDpPage[secPage].PmemStartWtAddr;
-+
-+ for(olayXfer=0;olayXfer< secLength/4;olayXfer++)
-+ {
-+ olayStore = *(unsigned int *)olayStart;
-+ olayStore = (unsigned int)dslhal_support_byteSwap32(olayStore);
-+ *(unsigned int*)olayStart = olayStore;
-+ dprintf(5, "Addr:0x%x \t Content: 0x%x \n",olayStart,olayStore);
-+ olayStart++;
-+ olayStore=0;
-+ }
-+ /* RamP Image ByteSwap test */
-+ /* compute the CRC of each overlay page and Store the Checksum in a local global variable */
-+ /* This Value of CRC is to be compared with the header where all the CRC bytes are lumped together */
-+ ptidsl->olayDpPage[secPage].olayPageCrc32 = dslhal_support_computeCrc32((char *)ptidsl->olayDpPage[secPage].PmemStartWtAddr, ptidsl->olayDpPage[secPage].OverlayXferCount);
-+
-+ shim_osWriteBackCache((void *)ptidsl->olayDpPage[secPage].PmemStartWtAddr, secLength);
-+ }
-+ else
-+ {
-+ rc = secAddr&0xff000000;
-+ if(rc && rc!=0x80000000)
-+ {
-+ dprintf(4,"Not DSP PMEM/DMEM\n");
-+ /* don't write to dsp, save into host memory*/
-+ dprintf(4,"Section Addr: %x Section Length: %d \n",secAddr,secLength);
-+ ptidsl->coProfiles.PmemStartWtAddr = (unsigned int) shim_osAllocateDmaMemory(secLength);
-+ if(ptidsl->coProfiles.PmemStartWtAddr == NULL)
-+ {
-+ dprintf(1, "memory allocate error\n");
-+ return DSLHAL_ERROR_OVERLAY_MALLOC;
-+ }
-+ ptidsl->coProfiles.overlayHostAddr = virtual2Physical((unsigned int)ptidsl->coProfiles.PmemStartWtAddr);
-+ dprintf(4,"Allocated Addr: 0x%x \t Xlated Addr: 0x%x \n",ptidsl->coProfiles.PmemStartWtAddr, ptidsl->coProfiles.overlayHostAddr);
-+ ptidsl->coProfiles.overlayHostAddr = (unsigned int)dslhal_support_byteSwap32(ptidsl->coProfiles.overlayHostAddr);
-+ ptidsl->coProfiles.OverlayXferCount = secLength;
-+ ptidsl->coProfiles.BinAddr = secAddr;
-+ ptidsl->coProfiles.SecOffset = secOffset;
-+
-+ shim_osMoveMemory((char *)ptidsl->coProfiles.PmemStartWtAddr, (char *)iptr, secLength);
-+ /* RamP Image ByteSwap test */
-+ olayStart = (unsigned int *)ptidsl->coProfiles.PmemStartWtAddr;
-+
-+ for(olayXfer=0;olayXfer< secLength/4;olayXfer++)
-+ {
-+ olayStore = *(unsigned int *)olayStart;
-+ olayStore = (unsigned int)dslhal_support_byteSwap32(olayStore);
-+ *(unsigned int*)olayStart = olayStore;
-+ dprintf(5, "Addr:0x%x \t Content: 0x%x \n",olayStart,olayStore);
-+ olayStart++;
-+ olayStore=0;
-+ }
-+ shim_osWriteBackCache((void *)ptidsl->coProfiles.PmemStartWtAddr, secLength);
-+ }
-+ else
-+ {
-+ /* IMPORTANT: write image to DSP memory */
-+ rc=dslhal_support_blockWrite((void *)iptr, (void *)secAddr, secLength);
-+ if(rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ shim_osClockWait(0x50000);
-+ /*
-+ rc=dslhal_support_blockRead((void*)secAddr, (void*)tmpBuffer, secLength);
-+ if(rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ for(i=0;i<secLength;i++)
-+ {
-+ if(*iptr
-+ }*/
-+ }
-+ }
-+ } /* end of write dsp image */
-+
-+ /***********************************************************************************
-+ * Start to fillup various values to our hardware structure for late use
-+ ************************************************************************************/
-+
-+ /* get main pointer for data */
-+
-+ rc = dslhal_support_blockRead(tmp, &pdspOamSharedInterface, sizeof(unsigned int));
-+ dprintf(5, "tmp=0x%X, addr=0x%X\n", (unsigned int)tmp, (unsigned int)pdspOamSharedInterface);
-+ pdspOamSharedInterface= (DEV_HOST_dspOamSharedInterface_t *)dslhal_support_byteSwap32((unsigned int)pdspOamSharedInterface);
-+ dprintf(5, "tmp=0x%X, addr=0x%X\n", (unsigned int)tmp, (unsigned int)pdspOamSharedInterface);
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ if(!pdspOamSharedInterface)
-+ {
-+ dprintf(1,"Couldn't read main pointer\n");
-+ return DSLHAL_ERROR_INVALID_PARAM;
-+ }
-+
-+ ptidsl->pmainAddr=pdspOamSharedInterface;
-+
-+ /* read the OamSharedInterfaceStructure */
-+
-+ dprintf(5,"ptidsl->hostIf.mainAddr=0x%X\n", (unsigned int)ptidsl->pmainAddr);
-+
-+ /* get the pointer to DSP-OAM Shared Interface */
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,
-+ sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ /* Communicate the Allocated Memory Address to DSP to choose CO Profiles */
-+
-+ /* Change the Endianness of the profileList pointer */
-+ dspOamSharedInterface.profileList_p = (DEV_HOST_profileBase_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.profileList_p);
-+ /* Access the profileList Structure */
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.profileList_p,&profileList, sizeof(DEV_HOST_profileBase_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ dprintf(2,"Old Addr:%x New: %x \n",profileList.hostProfileBase_p,ptidsl->coProfiles.overlayHostAddr);
-+ profileList.hostProfileBase_p = (DEV_HOST_coData_t *)ptidsl->coProfiles.overlayHostAddr;
-+ rc = dslhal_support_blockWrite(&profileList,(PVOID)dspOamSharedInterface.profileList_p,sizeof(DEV_HOST_profileBase_t));
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_WRITE;
-+
-+ /* Communicate the Allocated Memory Address to DSP to do overlays */
-+
-+ /* Change the Endianness of the olayDpDef pointer */
-+ dspOamSharedInterface.olayDpParms_p = (DEV_HOST_olayDpDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.olayDpParms_p);
-+ /* Access the olayDpDef Structure */
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.olayDpParms_p,&olayDpParms, sizeof(DEV_HOST_olayDpDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+
-+ for(i=1;i<NUM_PAGES;i++)
-+ {
-+ /* Change the endianness of the olayDpPageDef Pointer */
-+ olayDpParms.olayDpPage_p[i] = (DEV_HOST_olayDpPageDef_t *) dslhal_support_byteSwap32((unsigned int)olayDpParms.olayDpPage_p[i]);
-+ /* Access the olayDpPageDef Structure */
-+ rc = dslhal_support_blockRead((PVOID)olayDpParms.olayDpPage_p[i],&olayDpPageDef[i],sizeof(DEV_HOST_olayDpPageDef_t));
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ olayDpPageDef[i].overlayHostAddr = ptidsl->olayDpPage[i].overlayHostAddr;
-+ rc = dslhal_support_blockWrite(&olayDpPageDef[i],(PVOID)olayDpParms.olayDpPage_p[i],sizeof(DEV_HOST_olayDpPageDef_t));
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_WRITE;
-+ }
-+
-+ /* Change the endianness of the Datapump Version Pointer */
-+ dspOamSharedInterface.datapumpVersion_p = (DEV_HOST_dspVersionDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.datapumpVersion_p);
-+
-+ /* get DSPVersion itself */
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.datapumpVersion_p,&dspVersion, sizeof(DEV_HOST_dspVersionDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ /* table_dsp info */
-+#if SWTC
-+ dspOamSharedInterface.tcHostComm_p = (DEV_HOST_tcHostCommDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.tcHostComm_p);
-+ rc = dslhal_support_blockRead(&pdspOamSharedInterface->tcHostComm_p,
-+ &pTCHostCommDef, 4);
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ pTCHostCommDef=(DEV_HOST_tcHostCommDef_t *) dslhal_support_byteSwap32((unsigned int)pTCHostCommDef);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.tcHostComm_p,
-+ &TCHostCommDef, sizeof(DEV_HOST_tcHostCommDef_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+#endif
-+ /* Select the Multimode Training */
-+ dspOamSharedInterface.oamWriteNegoParams_p = (DEV_HOST_oamWrNegoParaDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.oamWriteNegoParams_p);
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.oamWriteNegoParams_p, &OamWrNegoParaDef, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+switch(dspVersion.netService)
-+ {
-+ case 1: OamWrNegoParaDef.stdMode = MULTI_MODE;
-+ dprintf(5,"POTS Service \n");
-+ ptidsl->netService = 1;
-+ break;
-+ case 2: OamWrNegoParaDef.stdMode = GDMT_MODE;
-+ dprintf(5,"ISDN Service \n");
-+ ptidsl->netService = 2;
-+ break;
-+ default: OamWrNegoParaDef.stdMode = T1413_MODE;
-+ dprintf(5,"Default Service \n");
-+ break;
-+ }
-+
-+ ptidsl->AppData.StdMode = (unsigned int)OamWrNegoParaDef.stdMode;
-+
-+ OamWrNegoParaDef.oamFeature = dslhal_support_byteSwap32((OAMFEATURE_TC_SYNC_DETECT_MASK));
-+ /* Set the flag to start retraining if the margin of the modem drops below
-+ default margin during showtime */
-+
-+ OamWrNegoParaDef.marginMonitorShwtme = FALSE;
-+ /* Set the flag to start retraining if the margin of the modem drops below default margin during training */
-+
-+ OamWrNegoParaDef.marginMonitorTrning = FALSE;
-+ OamWrNegoParaDef.dsToneTurnoff_f = 0;
-+ dslhal_support_blockWrite(&OamWrNegoParaDef,
-+ (PVOID)dspOamSharedInterface.oamWriteNegoParams_p, sizeof(DEV_HOST_oamWrNegoParaDef_t));
-+ rc=dslhal_support_setInterruptMask(ptidsl,0);
-+ if(rc!=DSLHAL_ERROR_NO_ERRORS)
-+ return rc;
-+ /* Co Profile Test */
-+#if CO_PROFILES
-+ dspOamSharedInterface.profileList_p = (DEV_HOST_profileBase_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.profileList_p);
-+ /* Access the profileList Structure */
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.profileList_p,&profileList, sizeof(DEV_HOST_profileBase_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ profileList.hostProfileBase_p = (DEV_HOST_coData_t *)dslhal_support_byteSwap32((unsigned int)profileList.hostProfileBase_p);
-+ rc = dslhal_support_blockRead((PVOID)profileList.hostProfileBase_p,&coData, sizeof(DEV_HOST_coData_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ dprintf(2,"Current Profile Vendor Id: %x \n",coData.phyAgcPgaTarget);
-+ coData.phyAgcPgaTarget = 0xcaba;
-+ rc = dslhal_support_blockWrite(&coData,(PVOID)profileList.hostProfileBase_p,sizeof(DEV_HOST_coData_t));
-+ if(rc)
-+ return DSLHAL_ERROR_BLOCK_WRITE;
-+#endif
-+ /* End of CO Profile Test */
-+
-+#ifndef NO_ACT
-+ /* Constellation Display Buffer Allocate */
-+ ptidsl->constDisplay.PmemStartWtAddr = (unsigned int) shim_osAllocateDmaMemory(DSP_CONSTELLATION_BUFFER_SIZE);
-+ if(ptidsl->constDisplay.PmemStartWtAddr == NULL)
-+ {
-+ dprintf(1, "memory allocate error\n");
-+ return DSLHAL_ERROR_OVERLAY_MALLOC;
-+ }
-+ shim_osZeroMemory((void*)ptidsl->constDisplay.PmemStartWtAddr,DSP_CONSTELLATION_BUFFER_SIZE);
-+ ptidsl->constDisplay.overlayHostAddr = virtual2Physical((unsigned int)ptidsl->constDisplay.PmemStartWtAddr);
-+ dprintf(4,"Allocated Addr: 0x%x \t Xlated Addr: 0x%x \n",ptidsl->constDisplay.PmemStartWtAddr, ptidsl->constDisplay.overlayHostAddr);
-+ ptidsl->constDisplay.OverlayXferCount = DSP_CONSTELLATION_BUFFER_SIZE;
-+
-+ /* Communicate the Allocated Buffer for DSP load Constellation Data */
-+
-+ /* Change the Endianness of the profileList pointer */
-+ dspOamSharedInterface.consDispVar_p = (DEV_HOST_consBufDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.consDispVar_p);
-+ /* Access the profileList Structure */
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.consDispVar_p,&constDisp, sizeof(DEV_HOST_consBufDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ dprintf(2,"Constellation Old Addr:%x New: %x \n",constDisp.consDispStartAddr,ptidsl->constDisplay.overlayHostAddr);
-+ constDisp.consDispStartAddr = (unsigned int)dslhal_support_byteSwap32(ptidsl->constDisplay.overlayHostAddr);
-+ constDisp.consDispCurrentAddr = constDisp.consDispStartAddr;
-+ constDisp.consDispBufLen = (unsigned int)dslhal_support_byteSwap32(DSP_CONSTELLATION_BUFFER_SIZE);
-+ rc = dslhal_support_blockWrite(&constDisp,(PVOID)dspOamSharedInterface.consDispVar_p,sizeof(DEV_HOST_consBufDef_t));
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_WRITE;
-+#endif
-+ dprintf(5,"dslhal_support_hostDspCodeDownload() completed.\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+
-+} /* end of dslhal_support_hostDspCodeDownload() */
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_readDelineationState()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* download DSP image from host memory to dsp memory
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_support_readDelineationState(tidsl_t * ptidsl)
-+{
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ DEV_HOST_atmStats_t atmStats;
-+ DEV_HOST_dsAtmStats_t dsAtmStats0;
-+ unsigned int rc=0, delinState=0;
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterface_t *) ptidsl->pmainAddr;
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ dspOamSharedInterface.atmStats_p = (DEV_HOST_atmStats_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.atmStats_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.atmStats_p,&atmStats, sizeof(DEV_HOST_atmStats_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ atmStats.ds0_p = (DEV_HOST_dsAtmStats_t *) dslhal_support_byteSwap32((unsigned int)atmStats.ds0_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)atmStats.ds0_p,&dsAtmStats0, (sizeof(DEV_HOST_dsAtmStats_t)));
-+
-+ if (rc)
-+ return rc;
-+ delinState = dslhal_support_byteSwap32(dsAtmStats0.delineationState);
-+ if(delinState == TC_SYNC)
-+ ptidsl->lConnected = 1;
-+ else
-+ ptidsl->lConnected = 0;
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_processModemStateBitField()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* download DSP image from host memory to dsp memory
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_support_processModemStateBitField(tidsl_t * ptidsl)
-+{
-+ int rc, offset[2]={2,0};
-+ int modemStateBitFields[NUMBER_OF_BITFIELDS],changedField=0;
-+ rc = dslhal_api_dspInterfaceRead(ptidsl,(unsigned int)ptidsl->pmainAddr,2,(unsigned int *)&offset,
-+ (unsigned char *)&modemStateBitFields,NUMBER_OF_BITFIELDS*sizeof(int));
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ for(rc=0;rc<NUMBER_OF_BITFIELDS;rc++)
-+ dprintf(4,"Bit Field %d: 0x%x \n",rc+1,dslhal_support_byteSwap32((unsigned int)modemStateBitFields[rc]));
-+
-+ for(rc=NUMBER_OF_BITFIELDS;rc>0;rc--)
-+ {
-+ if(ptidsl->modemStateBitField[rc-1]!=modemStateBitFields[rc-1])
-+ {
-+ changedField = rc;
-+ break;
-+ }
-+ }
-+ if(changedField)
-+ {
-+ for(rc=0;rc<32;rc++)
-+ {
-+ if(modemStateBitFields[changedField-1] & dslhal_support_byteSwap32((BITFIELD_SCAN >> rc)))
-+ break;
-+ }
-+ dprintf(5,"Changed Field : %d Changed Bit : %d \n",changedField,(31-rc));
-+ ptidsl->rState = ((changedField*100) + (31-rc));
-+ dprintf(5,"Modem State : %d \n",ptidsl->rState);
-+ shim_osMoveMemory((void *)ptidsl->modemStateBitField,(void *)modemStateBitFields, 4*NUMBER_OF_BITFIELDS);
-+ }
-+
-+ switch(changedField)
-+ {
-+ case 1: if((ptidsl->rState >= ATU_RIDLE) && (ptidsl->AppData.bState < RSTATE_IDLE))
-+ ptidsl->AppData.bState = RSTATE_IDLE;
-+ if((ptidsl->rState >= GDMT_NSFLR) && (ptidsl->AppData.bState < RSTATE_INIT))
-+ ptidsl->AppData.bState = RSTATE_INIT;
-+ if((ptidsl->rState >= GDMT_ACKX) && (ptidsl->AppData.bState < RSTATE_HS))
-+ ptidsl->AppData.bState = RSTATE_HS;
-+ break;
-+
-+ case 2: if((ptidsl->rState >= T1413_NSFLR) && (ptidsl->AppData.bState < RSTATE_INIT))
-+ ptidsl->AppData.bState = RSTATE_INIT;
-+ if((ptidsl->rState >= T1413_ACKX) && (ptidsl->AppData.bState < RSTATE_HS))
-+ ptidsl->AppData.bState = RSTATE_HS;
-+ if((ptidsl->rState == ATU_RSHOWTIME) && (ptidsl->AppData.bState < RSTATE_SHOWTIME))
-+ ptidsl->AppData.bState = RSTATE_SHOWTIME;
-+ break;
-+
-+ case 3: if((ptidsl->rState >= ADSL2_COMB3) && (ptidsl->AppData.bState < RSTATE_INIT))
-+ ptidsl->AppData.bState = RSTATE_INIT;
-+ if((ptidsl->rState >= ADSL2_RPARAMS) && (ptidsl->AppData.bState < RSTATE_HS))
-+ ptidsl->AppData.bState = RSTATE_HS;
-+ break;
-+
-+ case 4: break;
-+ default: break;
-+ }
-+
-+ ptidsl->stateTransition = modemStateBitFields[1];
-+ switch(ptidsl->AppData.bState)
-+ {
-+ case RSTATE_IDLE: ptidsl->AppData.idleTick=shim_osClockTick();
-+ ptidsl->AppData.initTick=0;
-+ ptidsl->AppData.showtimeTick=0;
-+ break;
-+ case RSTATE_HS: if(!ptidsl->AppData.initTick)
-+ {
-+ ptidsl->AppData.initTick=shim_osClockTick();
-+ }
-+ ptidsl->AppData.showtimeTick=0;
-+ break;
-+ case RSTATE_SHOWTIME: if(!ptidsl->AppData.showtimeTick)
-+ ptidsl->AppData.showtimeTick=shim_osClockTick();
-+ break;
-+ default: break;
-+ }
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_setInterruptMask()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_support_setInterruptMask(tidsl_t * ptidsl,unsigned int inputMask)
-+{
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ DEV_HOST_hostInterruptMask_t interruptMask;
-+ unsigned int rc=0;
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterface_t *) ptidsl->pmainAddr;
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ dspOamSharedInterface.hostInterruptMask_p =(DEV_HOST_hostInterruptMask_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.hostInterruptMask_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.hostInterruptMask_p,
-+ &interruptMask, sizeof(DEV_HOST_hostInterruptMask_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ if(inputMask & MASK_MAILBOX_INTERRUPTS)
-+ {
-+ dprintf(7,"Mailbox Interrupts Masked \n");
-+ dprintf(7,"interruptMask.maskBitField1 = %d \n",dslhal_support_byteSwap32(interruptMask.maskBitField1));
-+ interruptMask.maskBitField1 |= dslhal_support_byteSwap32(MASK_MAILBOX_INTERRUPTS);
-+ dprintf(7,"interruptMask.maskBitField1 = %d \n",dslhal_support_byteSwap32(interruptMask.maskBitField1));
-+ }
-+ if(inputMask & MASK_BITFIELD_INTERRUPTS)
-+ {
-+ dprintf(7,"Bit field Interrupts Masked \n");
-+ dprintf(7,"interruptMask.maskBitField1 = %d \n",dslhal_support_byteSwap32(interruptMask.maskBitField1));
-+ interruptMask.maskBitField1 |= dslhal_support_byteSwap32(MASK_BITFIELD_INTERRUPTS);
-+ dprintf(7,"interruptMask.maskBitField1 = %d \n",dslhal_support_byteSwap32(interruptMask.maskBitField1));
-+ }
-+ if(inputMask & MASK_HEARTBEAT_INTERRUPTS)
-+ {
-+ dprintf(7,"Bit field Interrupts Masked \n");
-+ dprintf(7,"interruptMask.maskBitField1 = %d \n",dslhal_support_byteSwap32(interruptMask.maskBitField1));
-+ interruptMask.maskBitField1 |= dslhal_support_byteSwap32(MASK_HEARTBEAT_INTERRUPTS);
-+ dprintf(7,"interruptMask.maskBitField1 = %d \n",dslhal_support_byteSwap32(interruptMask.maskBitField1));
-+ }
-+ dslhal_support_blockWrite(&interruptMask,
-+ dspOamSharedInterface.hostInterruptMask_p, sizeof(DEV_HOST_hostInterruptMask_t));
-+ dprintf(5,"dslhal_support_setInterruptMask() completed.\n");
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_parseInterruptSource()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Parses the Interrupt Source Bit Field
-+*
-+* Return: interrupt Code if successful
-+* negative error code if failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_support_parseInterruptSource(tidsl_t * ptidsl)
-+{
-+ DEV_HOST_dspOamSharedInterface_t *pdspOamSharedInterface, dspOamSharedInterface;
-+ DEV_HOST_hostInterruptSource_t interruptSource;
-+ unsigned int rc=0,intrCode=0;
-+ pdspOamSharedInterface = (DEV_HOST_dspOamSharedInterface_t *) ptidsl->pmainAddr;
-+ rc = dslhal_support_blockRead(pdspOamSharedInterface, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return (0-DSLHAL_ERROR_BLOCK_READ);
-+ }
-+ dspOamSharedInterface.hostInterruptSource_p =(DEV_HOST_hostInterruptSource_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.hostInterruptSource_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.hostInterruptSource_p,
-+ &interruptSource, sizeof(DEV_HOST_hostInterruptSource_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return (0-DSLHAL_ERROR_BLOCK_READ);
-+ }
-+ if(interruptSource.sourceBitField1 & dslhal_support_byteSwap32(MASK_MAILBOX_INTERRUPTS))
-+ {
-+ dprintf(7,"Mailbox Interrupts Acknowledge \n");
-+ intrCode |= 0x00000011;
-+ }
-+ if(interruptSource.sourceBitField1 & dslhal_support_byteSwap32(MASK_BITFIELD_INTERRUPTS))
-+ {
-+ dprintf(7,"Bit field Interrupt Acknowledge \n");
-+ intrCode |= 0x00001002;
-+ }
-+ if(interruptSource.sourceBitField1 & dslhal_support_byteSwap32(MASK_HEARTBEAT_INTERRUPTS))
-+ {
-+ dprintf(7,"HeartBeat Interrupt Acknowledge \n");
-+ intrCode |= 0x00100004;
-+ }
-+
-+ interruptSource.sourceBitField1 &=0x0;
-+ rc=dslhal_support_blockWrite(&interruptSource,
-+ dspOamSharedInterface.hostInterruptSource_p, sizeof(DEV_HOST_hostInterruptSource_t));
-+ if(rc)
-+ return (0-DSLHAL_ERROR_BLOCK_WRITE);
-+ dprintf(5,"dslhal_support_parseInterruptSource() completed.\n");
-+ return intrCode;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_byteSwap16()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* input 16 bit short, byte swap from little endian to big endian or vise versa
-+*
-+********************************************************************************************/
-+
-+unsigned short dslhal_support_byteSwap16(unsigned short in16Bits)
-+{
-+ unsigned short out16Bits;
-+
-+#ifdef EB
-+ unsigned char *pchar;
-+ unsigned char tmp;
-+#endif
-+
-+ out16Bits = in16Bits;
-+
-+#ifdef EB
-+ pchar = (unsigned char *)(&out16Bits);
-+
-+ tmp = *pchar;
-+ *pchar = *(pchar + 1);
-+ *(pchar + 1) = tmp;
-+#endif
-+
-+ return out16Bits;
-+
-+} /* end of dslhal_support_byteSwap16() */
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_byteSwap32()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* input 32 bit int, byte swap from little endian to big endian or vise versa
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_support_byteSwap32(unsigned int in32Bits)
-+{
-+ int out32Bits;
-+
-+#ifdef EB
-+ unsigned char tmp;
-+ unsigned char *pchar;
-+#endif
-+
-+ out32Bits = in32Bits;
-+
-+#ifdef EB
-+ pchar = (unsigned char *)(&out32Bits);
-+
-+ tmp = *pchar;
-+ *pchar = *(pchar + 3);
-+ *(pchar + 3) = tmp;
-+
-+ tmp = *(pchar + 1);
-+ *(pchar + 1) = *(pchar + 2);
-+ *(pchar + 2) = tmp;
-+#endif
-+
-+ return out32Bits;
-+
-+} /* end of dslhal_support_byteSwap32() */
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_computeCrc32()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Computes the CRC-32 for the input data
-+*
-+* Return: 32 bit CRC of the input data
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_computeCrc32(unsigned char *data, int len)
-+{
-+ unsigned int result;
-+ int i,j;
-+ unsigned char octet;
-+
-+ if ((len < 4) || (data==NULL))
-+ return(0xdeaddead);
-+ result = *data++ << 24;
-+ result |= *data++ << 16;
-+ result |= *data++ << 8;
-+ result |= *data++;
-+ result = ~ result;
-+
-+ len -=4;
-+
-+ for (i=0; i<len; i++)
-+ {
-+ octet = *(data++);
-+ for (j=0; j<8; j++)
-+ {
-+ if (result & 0x80000000)
-+ {
-+ result = (result << 1) ^ CRC32_QUOTIENT ^ (octet >> 7);
-+ }
-+ else
-+ {
-+ result = (result << 1) ^ (octet >> 7);
-+ }
-+ octet <<= 1;
-+ }
-+ }
-+ return ~result; /* The complement of the remainder */
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_checkOverlayPage()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Computes the CRC-32 for the input data and compares it with reference
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_checkOverlayPage(tidsl_t *ptidsl, unsigned int tag)
-+{
-+ unsigned int computedCrc;
-+ if((unsigned char *)ptidsl->olayDpPage[tag].PmemStartWtAddr == NULL)
-+ {
-+ dprintf(5,"Null Address for Page: %d\n",tag);
-+ return DSLHAL_ERROR_OVERLAY_MALLOC;
-+ }
-+ computedCrc = dslhal_support_computeCrc32((unsigned char *)ptidsl->olayDpPage[tag].PmemStartWtAddr, ptidsl->olayDpPage[tag].OverlayXferCount);
-+ dprintf(6,"\n Pre-Computed CRC32 = 0x%x \t Current CRC32 = 0x%x \n",ptidsl->olayDpPage[tag].olayPageCrc32,computedCrc);
-+ if(computedCrc != ptidsl->olayDpPage[tag].olayPageCrc32)
-+ return DSLHAL_ERROR_OVERLAY_CORRUPTED;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_clearTrainingInfo()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Computes the CRC-32 for the input data and compares it with reference
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+int dslhal_support_clearTrainingInfo(tidsl_t *ptidsl)
-+{
-+ int i;
-+
-+ for(i=0; i<NUM_PAGES; i++)
-+ {
-+ if(ptidsl->olayDpPage[i].PmemStartWtAddr !=NULL)
-+ {
-+ shim_osFreeDmaMemory((void *) ptidsl->olayDpPage[i].PmemStartWtAddr,
-+ ptidsl->olayDpPage[i].OverlayXferCount);
-+ ptidsl->olayDpPage[i].PmemStartWtAddr =NULL;
-+ }
-+ }
-+ if(ptidsl->coProfiles.PmemStartWtAddr != NULL)
-+ {
-+ shim_osFreeDmaMemory((void *)ptidsl->coProfiles.PmemStartWtAddr, ptidsl->coProfiles.OverlayXferCount);
-+ ptidsl->coProfiles.PmemStartWtAddr = NULL;
-+ }
-+ return 0;
-+}
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_reloadTrainingInfo()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Reload overlay pages from flash or memory
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+int dslhal_support_reloadTrainingInfo(tidsl_t * ptidsl)
-+{
-+
-+ int rc = 0, i;
-+ unsigned int olayXfer,olayStore;
-+ unsigned int *olayStart;
-+
-+ unsigned int crc32;
-+ DEV_HOST_dspOamSharedInterface_t dspOamSharedInterface;
-+ DEV_HOST_olayDpDef_t olayDpParms;
-+ DEV_HOST_olayDpPageDef_t olayDpPageDef[NUM_PAGES];
-+ DEV_HOST_profileBase_t profileList;
-+
-+ unsigned int secLength, secOffset, secPage;
-+
-+ /* co profile */
-+ secLength = ptidsl->coProfiles.OverlayXferCount;
-+ secOffset = ptidsl->coProfiles.SecOffset;
-+ ptidsl->coProfiles.PmemStartWtAddr = (unsigned int) shim_osAllocateDmaMemory(secLength);
-+ if(ptidsl->coProfiles.PmemStartWtAddr == NULL)
-+ {
-+ dprintf(1, "memory allocate error\n");
-+ return DSLHAL_ERROR_OVERLAY_MALLOC;
-+ }
-+ /* holdSecPhyAddr = virtual2Physical((unsigned int)holdSecVirtAddr); */
-+ ptidsl->coProfiles.overlayHostAddr = virtual2Physical((unsigned int)ptidsl->coProfiles.PmemStartWtAddr);
-+ dprintf(4,"Allocated Addr: 0x%x \t Xlated Addr: 0x%x \n",ptidsl->coProfiles.PmemStartWtAddr, ptidsl->coProfiles.overlayHostAddr);
-+ ptidsl->coProfiles.overlayHostAddr = (unsigned int)dslhal_support_byteSwap32(ptidsl->coProfiles.overlayHostAddr);
-+
-+ rc = shim_read_overlay_page((void *)ptidsl->coProfiles.PmemStartWtAddr, secOffset, secLength);
-+ if(rc != secLength)
-+ {
-+ dprintf(1, "shim_read_overlay_page failed\n");
-+ return DSLHAL_ERROR_OVERLAY_MALLOC;
-+ }
-+
-+ /*shim_osMoveMemory((char *)ptidsl->coProfiles.PmemStartWtAddr, (char *)iptr, secLength);*/
-+ /* RamP Image ByteSwap test */
-+ olayStart = (unsigned int *)ptidsl->coProfiles.PmemStartWtAddr;
-+
-+ for(olayXfer=0;olayXfer< secLength/4;olayXfer++)
-+ {
-+ olayStore = *(unsigned int *)olayStart;
-+ olayStore = (unsigned int)dslhal_support_byteSwap32(olayStore);
-+ *(unsigned int*)olayStart = olayStore;
-+ dprintf(5, "Addr:0x%x \t Content: 0x%x \n",olayStart,olayStore);
-+ olayStart++;
-+ olayStore=0;
-+ }
-+ shim_osWriteBackCache((void *)ptidsl->coProfiles.PmemStartWtAddr, secLength);
-+
-+
-+ for (secPage=1;secPage<NUM_PAGES; secPage++)
-+ {
-+
-+ dprintf(6,"OVERLAY PAGE #%d\n",secPage);
-+
-+ secLength = ptidsl->olayDpPage[secPage].OverlayXferCount;
-+
-+ dprintf(4,"Section[%d] Length: %d \n",secPage, secLength);
-+
-+ secOffset = ptidsl->olayDpPage[secPage].SecOffset;
-+ ptidsl->olayDpPage[secPage].PmemStartWtAddr = (unsigned int) shim_osAllocateDmaMemory(secLength);
-+ if(ptidsl->olayDpPage[secPage].PmemStartWtAddr == NULL)
-+ {
-+ dprintf(1, "overlay page allocate error\n");
-+ return DSLHAL_ERROR_OVERLAY_MALLOC;
-+ }
-+
-+ rc = shim_read_overlay_page((void *)ptidsl->olayDpPage[secPage].PmemStartWtAddr,secOffset, secLength);
-+ if(rc != secLength)
-+ {
-+ dprintf(1, "overlay page read error\n");
-+ return DSLHAL_ERROR_OVERLAY_MALLOC;
-+ }
-+
-+ /* ptidsl->olayDpPage[secPage].overlayHostAddr = ((unsigned int)(ptidsl->olayDpPage[secPage].PmemStartWtAddr)&~0xe0000000); */
-+ ptidsl->olayDpPage[secPage].overlayHostAddr = virtual2Physical((unsigned int)ptidsl->olayDpPage[secPage].PmemStartWtAddr);
-+ dprintf(6,"Allocated Addr: 0x%x \t Xlated Addr: 0x%x \n",ptidsl->olayDpPage[secPage].PmemStartWtAddr,ptidsl->olayDpPage[secPage].overlayHostAddr);
-+
-+ ptidsl->olayDpPage[secPage].overlayHostAddr = (unsigned int)dslhal_support_byteSwap32(ptidsl->olayDpPage[secPage].overlayHostAddr);
-+ /*ptidsl->olayDpPage[secPage].OverlayXferCount = secLength;
-+ ptidsl->olayDpPage[secPage].BinAddr = secAddr;
-+ shim_osMoveMemory((char *)ptidsl->olayDpPage[secPage].PmemStartWtAddr, (char *)iptr, secLength);
-+ */
-+ olayStart = (unsigned int *)ptidsl->olayDpPage[secPage].PmemStartWtAddr;
-+
-+ for(olayXfer=0;olayXfer< secLength/4;olayXfer++)
-+ {
-+ olayStore = *(unsigned int *)olayStart;
-+ olayStore = (unsigned int)dslhal_support_byteSwap32(olayStore);
-+ *(unsigned int*)olayStart = olayStore;
-+ dprintf(5, "Addr:0x%x \t Content: 0x%x \n",olayStart,olayStore);
-+ olayStart++;
-+ olayStore=0;
-+ }
-+ /* RamP Image ByteSwap test */
-+ /* compute the CRC of each overlay page and Store the Checksum in a local global variable */
-+ /* This Value of CRC is to be compared with the header where all the CRC bytes are lumped together */
-+ crc32 = dslhal_support_computeCrc32((char *)ptidsl->olayDpPage[secPage].PmemStartWtAddr, ptidsl->olayDpPage[secPage].OverlayXferCount);
-+ if(crc32 != ptidsl->olayDpPage[secPage].olayPageCrc32)
-+ return DSLHAL_ERROR_OVERLAY_MALLOC;
-+
-+ shim_osWriteBackCache((void *)ptidsl->olayDpPage[secPage].PmemStartWtAddr, secLength);
-+ }
-+
-+
-+ dprintf(5,"ptidsl->hostIf.mainAddr=0x%X\n", (unsigned int)ptidsl->pmainAddr);
-+
-+ /* get the pointer to DSP-OAM Shared Interface */
-+ rc = dslhal_support_blockRead(ptidsl->pmainAddr, &dspOamSharedInterface,
-+ sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ /* Communicate the Allocated Memory Address to DSP to choose CO Profiles */
-+
-+ /* Change the Endianness of the profileList pointer */
-+ dspOamSharedInterface.profileList_p = (DEV_HOST_profileBase_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.profileList_p);
-+ /* Access the profileList Structure */
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.profileList_p,&profileList, sizeof(DEV_HOST_profileBase_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+ dprintf(2,"Old Addr:%x New: %x \n",profileList.hostProfileBase_p,ptidsl->coProfiles.overlayHostAddr);
-+ profileList.hostProfileBase_p = (DEV_HOST_coData_t *)ptidsl->coProfiles.overlayHostAddr;
-+ rc = dslhal_support_blockWrite(&profileList,(PVOID)dspOamSharedInterface.profileList_p,sizeof(DEV_HOST_profileBase_t));
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_WRITE;
-+
-+ /* Communicate the Allocated Memory Address to DSP to do overlays */
-+
-+ /* Change the Endianness of the olayDpDef pointer */
-+ dspOamSharedInterface.olayDpParms_p = (DEV_HOST_olayDpDef_t *)dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.olayDpParms_p);
-+ /* Access the olayDpDef Structure */
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.olayDpParms_p,&olayDpParms, sizeof(DEV_HOST_olayDpDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+
-+ for(i=1;i<NUM_PAGES;i++)
-+ {
-+ /* Change the endianness of the olayDpPageDef Pointer */
-+ olayDpParms.olayDpPage_p[i] = (DEV_HOST_olayDpPageDef_t *) dslhal_support_byteSwap32((unsigned int)olayDpParms.olayDpPage_p[i]);
-+ /* Access the olayDpPageDef Structure */
-+ rc = dslhal_support_blockRead((PVOID)olayDpParms.olayDpPage_p[i],&olayDpPageDef[i],sizeof(DEV_HOST_olayDpPageDef_t));
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ olayDpPageDef[i].overlayHostAddr = ptidsl->olayDpPage[i].overlayHostAddr;
-+ rc = dslhal_support_blockWrite(&olayDpPageDef[i],(PVOID)olayDpParms.olayDpPage_p[i],sizeof(DEV_HOST_olayDpPageDef_t));
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_WRITE;
-+ }
-+
-+ ptidsl->bOverlayPageLoaded = 1;
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+ /* end of dslhal_support_reloadTrainingInfo() */
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_restoreTrainingInfo()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Computes the CRC-32 for the input data and compares it with reference
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+
-+int dslhal_support_restoreTrainingInfo(tidsl_t *ptidsl)
-+{
-+ int rc;
-+
-+ rc=1;
-+ while(rc != 0)
-+ {
-+ dslhal_support_clearTrainingInfo(ptidsl);
-+ //shim_osCriticalEnter();
-+ rc = dslhal_support_reloadTrainingInfo(ptidsl);
-+ //shim_osCriticalExit();
-+ shim_osClockWait(6400);
-+ }
-+ return 0;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_advancedIdleProcessing()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced Idle State Processing Functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_advancedIdleProcessing(tidsl_t *ptidsl)
-+{
-+ int rc=0;
-+ ptidsl->AppData.bState = RSTATE_IDLE;
-+#ifndef NO_ACT
-+ rc += dslhal_advcfg_resetBitSwapMessageLog(ptidsl,0);
-+ rc += dslhal_advcfg_resetBitSwapMessageLog(ptidsl,1);
-+ rc += dslhal_advcfg_resetTrainStateHistory(ptidsl);
-+ rc += dslhal_advcfg_getReasonForDrop(ptidsl);
-+#endif
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_aocBitSwapProcessing()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced Idle State Processing Functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_aocBitSwapProcessing(tidsl_t *ptidsl,unsigned int usDs)
-+{
-+ int rc=0;
-+#ifndef NO_ACT
-+ int i;
-+ int differentCmd_f;
-+ unsigned int dsSwapInx;
-+
-+ static UINT8 lastAturBitSwapCommands[6] = {0, 0, 0, 0, 0, 0};
-+ static UINT8 lastAturBitSwapBinNum[6] = {0, 0, 0, 0, 0, 0};
-+
-+ if (usDs == 0)
-+ {
-+ dprintf(4," DSP_XMITBITSWAP\n");
-+ rc += dslhal_advcfg_getAocBitswapBuffer(ptidsl,0);
-+ ptidsl->usBitSwapInx++;
-+ if (ptidsl->usBitSwapInx > 29)
-+ ptidsl->usBitSwapInx=0;
-+ }
-+
-+ if (usDs == 1)
-+ {
-+ dprintf(4," DSP_RCVBITSWAP\n");
-+ rc += dslhal_advcfg_getAocBitswapBuffer(ptidsl,1);
-+ differentCmd_f = FALSE;
-+ dsSwapInx = ptidsl->dsBitSwapInx;
-+ if (! rc)
-+ {
-+ for (i = 0; i < 6; i++)
-+ {
-+ if (lastAturBitSwapCommands[i] != ptidsl->dsBitSwap[dsSwapInx].bitSwapCommand[i])
-+ {
-+ differentCmd_f = TRUE;
-+ break;
-+ }
-+ }
-+ if (! differentCmd_f)
-+ {
-+ for (i = 0; i < 6; i++)
-+ {
-+ if (lastAturBitSwapBinNum[i] != ptidsl->dsBitSwap[dsSwapInx].bitSwapBinNum[i])
-+ {
-+ differentCmd_f = TRUE;
-+ break;
-+ }
-+ }
-+ }
-+ //CPE data pump seems to occasionally send us the same bit swap twice in a row with different sframe counter.
-+ //Since these are never counted twice by the debug output of AC5, we should not count them twice either.
-+ //So, we ignore the sframe_counter in determining whether the most recent bitswap is a duplicate.
-+ if (differentCmd_f)
-+ {
-+ shim_osMoveMemory((void *)lastAturBitSwapCommands, (void *)ptidsl->dsBitSwap[dsSwapInx].bitSwapCommand, 6);
-+ shim_osMoveMemory((void *)lastAturBitSwapBinNum, (void *)ptidsl->dsBitSwap[dsSwapInx].bitSwapBinNum, 6);
-+ ptidsl->dsBitSwapInx++;
-+ if (ptidsl->dsBitSwapInx > 29)
-+ ptidsl->dsBitSwapInx = 0;
-+ }
-+ }
-+ }
-+#endif
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_gatherEocMessages()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced EOC Buffering functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_gatherEocMessages(tidsl_t *ptidsl,int usDs, int msgPart1, int msgPart2)
-+{
-+ int rc=0;
-+#ifndef NO_ACT
-+ rc = dslhal_advcfg_logEocMessages(ptidsl,usDs, msgPart1, msgPart2);
-+#endif
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_gatherSnrPerBin()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced Snr per bin buffering Functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_gatherSnrPerBin(tidsl_t *ptidsl,unsigned int snrParam)
-+{
-+ int rc=0;
-+#ifndef NO_ACT
-+ rc = dslhal_advcfg_getSnrPerBin(ptidsl,snrParam);
-+#endif
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_processTrainingState()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced Training State Processing Functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_processTrainingState(tidsl_t *ptidsl)
-+{
-+ int rc=0;
-+#ifndef NO_ACT
-+
-+ if(ptidsl->trainStateInx<120)
-+ {
-+ rc = dslhal_advcfg_getTrainingState(ptidsl,(void *)&ptidsl->trainHistory[ptidsl->trainStateInx++]);
-+ if(ptidsl->trainHistory[(ptidsl->trainStateInx-1)].subStateIndex ==
-+ ptidsl->trainHistory[(ptidsl->trainStateInx-2)].subStateIndex)
-+ ptidsl->trainStateInx--;
-+ }
-+ else
-+ ptidsl->trainStateInx = 0;
-+#endif
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_gatherAdsl2Messages()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Gathers ADSL2 Training Messages
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_gatherAdsl2Messages(tidsl_t *ptidsl,int tag, int param1, int param2)
-+{
-+ int rc=0;
-+ unsigned int adsl2MsgLoc;
-+ switch(tag)
-+ {
-+ case CMSGFMT_INDEX:
-+ dprintf(5,"C-Msg-FMT rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, CMSGFMT_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2TrainingMessages.cMsgFmt,CMSGFMT_SIZE);
-+ break;
-+ case RMSGFMT_INDEX:
-+ case RMSGFMT2_INDEX:
-+ dprintf(5,"R-Msg-FMT rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSGFMT_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2TrainingMessages.rMsgFmt,RMSGFMT_SIZE);
-+ break;
-+ case CMSGPCB_INDEX:
-+ dprintf(5,"C-Msg-PCB rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, CMSGPCB_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2TrainingMessages.cMsgPcb,CMSGPCB_SIZE);
-+ ptidsl->adsl2TrainingMessages.cMsgPcbLen = CMSGPCB_SIZE;
-+ break;
-+ case CMSGPCB2_INDEX:
-+ dprintf(5,"C-Msg-PCB2 rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, CMSGPCB2_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2TrainingMessages.cMsgPcb,CMSGPCB2_SIZE);
-+ ptidsl->adsl2TrainingMessages.cMsgPcbLen = CMSGPCB2_SIZE;
-+#ifndef NO_ACT
-+ rc += dslhal_advcfg_setBlackOutBits(ptidsl);
-+#endif
-+ break;
-+ case CMSGPCB2L_INDEX:
-+ dprintf(5,"C-Msg-PCB2L rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, CMSGPCB2L_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2TrainingMessages.cMsgPcb,CMSGPCB2L_SIZE);
-+ ptidsl->adsl2TrainingMessages.cMsgPcbLen = CMSGPCB2L_SIZE;
-+ break;
-+ case RMSGPCB_INDEX:
-+ case RMSGPCB2L_INDEX:
-+ dprintf(5,"R-Msg-PCB rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSGPCB_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2TrainingMessages.rMsgPcb,RMSGPCB_SIZE);
-+ ptidsl->adsl2TrainingMessages.rMsgPcbLen = RMSGPCB_SIZE;
-+ break;
-+
-+ case CMSG1ADSL2_INDEX:
-+ dprintf(5,"C-Msg1 rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, CMSG1ADSL2_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2TrainingMessages.cMsg1,CMSG1ADSL2_SIZE);
-+ ptidsl->adsl2TrainingMessages.cMsg1Len = CMSG1ADSL2_SIZE;
-+ break;
-+ case CMSG2ADSL2_INDEX:
-+ dprintf(5,"C-Msg2 rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, CMSG2ADSL2_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2TrainingMessages.cMsg2,CMSG2ADSL2_SIZE);
-+ ptidsl->adsl2TrainingMessages.cMsg2Len = CMSG2ADSL2_SIZE;
-+ break;
-+ case RMSG1ADSL2_INDEX:
-+ dprintf(5,"R-Msg1 rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSG1ADSL2_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2TrainingMessages.rMsg1,RMSG1ADSL2_SIZE);
-+ ptidsl->adsl2TrainingMessages.rMsg1Len = RMSG1ADSL2_SIZE;
-+ break;
-+ case RMSG2ADSL2_INDEX:
-+ dprintf(5,"R-Msg2 rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSG2ADSL2_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2TrainingMessages.rMsg2,RMSG2ADSL2_SIZE);
-+ ptidsl->adsl2TrainingMessages.rMsg2Len = RMSG2ADSL2_SIZE;
-+ break;
-+ case CPARAMS_INDEX:
-+ dprintf(5,"C-Params rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, CPARAMS_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2TrainingMessages.cParams,CPARAMS_SIZE);
-+ ptidsl->adsl2TrainingMessages.cParamsLen = CPARAMS_SIZE;
-+ break;
-+ case RPARAMS_INDEX:
-+ dprintf(5,"R-Params rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RPARAMS_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2TrainingMessages.rParams,RPARAMS_SIZE);
-+ ptidsl->adsl2TrainingMessages.rParamsLen = RPARAMS_SIZE;
-+ break;
-+ case RMSG1LD_INDEX:
-+ dprintf(5,"R-Msg1 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSG1LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.rMsg1Ld,RMSG1LD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.rMsg1LdLen = RMSG1LD_SIZE;
-+ break;
-+ case RMSG2LD_INDEX:
-+ dprintf(5,"R-Msg2 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSG2LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.rMsg2Ld,RMSGxLD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.rMsgxLdLen = RMSGxLD_SIZE;
-+ break;
-+ case RMSG3LD_INDEX:
-+ dprintf(5,"R-Msg3 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSG3LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.rMsg3Ld,RMSGxLD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.rMsgxLdLen = RMSGxLD_SIZE;
-+ break;
-+ case RMSG4LD_INDEX:
-+ dprintf(5,"R-Msg4 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSG4LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.rMsg4Ld,RMSGxLD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.rMsgxLdLen = RMSGxLD_SIZE;
-+ break;
-+ case RMSG5LD_INDEX:
-+ dprintf(5,"R-Msg5 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSG5LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.rMsg5Ld,RMSGxLD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.rMsgxLdLen = RMSGxLD_SIZE;
-+ break;
-+ case RMSG6LD_INDEX:
-+ dprintf(5,"R-Msg6 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSG6LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.rMsg6Ld,RMSGxLD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.rMsgxLdLen = RMSGxLD_SIZE;
-+ break;
-+ case RMSG7LD_INDEX:
-+ dprintf(5,"R-Msg7 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSG7LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.rMsg7Ld,RMSGxLD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.rMsgxLdLen = RMSGxLD_SIZE;
-+ break;
-+ case RMSG8LD_INDEX:
-+ dprintf(5,"R-Msg8 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSG8LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.rMsg8Ld,RMSGxLD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.rMsgxLdLen = RMSGxLD_SIZE;
-+ break;
-+ case RMSG9LD_INDEX:
-+ dprintf(5,"R-Msg9 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, RMSG9LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.rMsg9Ld,RMSGxLD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.rMsgxLdLen = RMSGxLD_SIZE;
-+ break;
-+ case CMSG1LD_INDEX:
-+ dprintf(5,"C-Msg1 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, CMSG1LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.cMsg1Ld,CMSG1LD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.cMsg1LdLen = CMSG1LD_SIZE;
-+ break;
-+ case CMSG2LD_INDEX:
-+ dprintf(5,"C-Msg2 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, CMSG2LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.cMsg2Ld,CMSG2LD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.cMsg2LdLen = CMSG2LD_SIZE;
-+ break;
-+ case CMSG3LD_INDEX:
-+ dprintf(5,"C-Msg3 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, CMSG3LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.cMsg3Ld,CMSG3LD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.cMsg3LdLen = CMSG3LD_SIZE;
-+ break;
-+ case CMSG4LD_INDEX:
-+ dprintf(5,"C-Msg4 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, CMSG4LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.cMsg4Ld,CMSG4LD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.cMsg4LdLen = CMSG4LD_SIZE;
-+ break;
-+ case CMSG5LD_INDEX:
-+ dprintf(5,"C-Msg5 LD rec'd\n");
-+ adsl2MsgLoc = dslhal_support_getAdsl2MessageLocation
-+ (ptidsl, CMSG5LD_INDEX);
-+ rc += dslhal_support_blockRead((PVOID)adsl2MsgLoc,
-+ ptidsl->adsl2DiagnosticMessages.cMsg5Ld,CMSG5LD_SIZE);
-+ ptidsl->adsl2DiagnosticMessages.cMsg5LdLen = CMSG5LD_SIZE;
-+ break;
-+ default:
-+ dprintf(5,"Unknown ADSL2 Message rec'd\n");
-+ break;
-+ }
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_getAdsl2MessageLocation()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Gets the address to the ADSL2 Message being looked up
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_getAdsl2MessageLocation(tidsl_t *ptidsl,int msgOffset)
-+{
-+ int rc=0;
-+
-+ DEV_HOST_dspOamSharedInterface_t *pSharedInterface, sharedInterface;
-+ DEV_HOST_dspWrNegoParaDef_t dspNegoPara;
-+ int adsl2MsgString, adsl2MsgAddr;
-+
-+ pSharedInterface = (DEV_HOST_dspOamSharedInterface_t *) ptidsl->pmainAddr;
-+ rc += dslhal_support_blockRead(pSharedInterface, &sharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ sharedInterface.dspWriteNegoParams_p = (DEV_HOST_dspWrNegoParaDef_t *) dslhal_support_adsl2ByteSwap32((unsigned int)sharedInterface.dspWriteNegoParams_p);
-+ rc += dslhal_support_blockRead((PVOID)sharedInterface.dspWriteNegoParams_p,&dspNegoPara, sizeof(DEV_HOST_dspWrNegoParaDef_t));
-+
-+ if (rc)
-+ {
-+ dprintf(1,"dslhal_support_blockRead failed\n");
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ }
-+
-+ adsl2MsgString = dslhal_support_adsl2ByteSwap32((unsigned int)dspNegoPara.adsl2DeltMsgs_p);
-+ dprintf(5,"ADSL2 Message String Address: 0x%x\n",adsl2MsgString);
-+ rc += dslhal_support_blockRead((PVOID)(adsl2MsgString +
-+ ((sizeof(unsigned char *)*msgOffset))),
-+ &adsl2MsgAddr, sizeof(int));
-+ adsl2MsgAddr = dslhal_support_adsl2ByteSwap32((unsigned int)adsl2MsgAddr);
-+ dprintf(5," Message Address: 0x%x\n",adsl2MsgAddr);
-+
-+ if(rc)
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ else
-+ return adsl2MsgAddr;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_getCMsgsRa()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced Training Message functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_getCMsgsRa(tidsl_t *ptidsl,void *cMsg)
-+{
-+ int rc=0;
-+ DEV_HOST_raMsgsDef_t raMsgParms;
-+ DEV_HOST_dspOamSharedInterface_t dspOamSharedInterface;
-+ rc += dslhal_support_blockRead(ptidsl->pmainAddr, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+
-+ dspOamSharedInterface.raMsgs_p = (DEV_HOST_raMsgsDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.raMsgs_p);
-+
-+ rc += dslhal_support_blockRead((PVOID)dspOamSharedInterface.raMsgs_p,
-+ &raMsgParms, sizeof(DEV_HOST_raMsgsDef_t));
-+ shim_osMoveMemory((void *)cMsg,(void *)raMsgParms.cMsgsRaString,6);
-+
-+ if(rc)
-+ return DSLHAL_ERROR_CONFIG_API_FAILURE;
-+ else
-+ return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_gatherRateMessages()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Gathers Rate Training Messages
-+* Input
-+* tidsl_t *ptidsl : Pointer to application structure
-+*
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_gatherRateMessages(tidsl_t * ptidsl)
-+{
-+ int rc;
-+ DEV_HOST_dspWrNegoParaDef_t negoParms;
-+ DEV_HOST_dspOamSharedInterface_t dspOamSharedInterface;
-+
-+ dprintf(1, "dslhal_support_gatherRateMessages\n");
-+
-+ rc += dslhal_support_blockRead(ptidsl->pmainAddr, &dspOamSharedInterface,sizeof(DEV_HOST_dspOamSharedInterface_t));
-+ dspOamSharedInterface.dspWriteNegoParams_p = (DEV_HOST_dspWrNegoParaDef_t *) dslhal_support_byteSwap32((unsigned int)dspOamSharedInterface.dspWriteNegoParams_p);
-+
-+ rc = dslhal_support_blockRead((PVOID)dspOamSharedInterface.dspWriteNegoParams_p, &negoParms, sizeof(DEV_HOST_dspWrNegoParaDef_t));
-+ if (rc)
-+ return DSLHAL_ERROR_BLOCK_READ;
-+ else
-+ {
-+ shim_osMoveMemory((void *)ptidsl->AppData.bCRates1, (void *)negoParms.cRates1, 120);
-+ shim_osMoveMemory((void *)ptidsl->AppData.bRRates1, (void *)negoParms.rRates1, 44);
-+ }
-+return DSLHAL_ERROR_NO_ERRORS;
-+}
-+
-+static unsigned int dslhal_support_adsl2ByteSwap32(unsigned int in32Bits)
-+{
-+ int out32Bits=0;
-+
-+#ifdef EB
-+ out32Bits = (in32Bits << 24);
-+ out32Bits |=((in32Bits & 0x0000ff00) << 8);
-+ out32Bits |=((in32Bits & 0xff000000) >> 24);
-+ out32Bits |=((in32Bits & 0x00ff0000) >> 8);
-+#else
-+ out32Bits = in32Bits;
-+#endif
-+
-+ return out32Bits;
-+
-+} /* end of dslhal_support_byteSwap32() */
-diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_support.h linux.dev/drivers/atm/sangam_atm/dsl_hal_support.h
---- linux.old/drivers/atm/sangam_atm/dsl_hal_support.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_support.h 2005-08-23 04:46:50.101843088 +0200
-@@ -0,0 +1,718 @@
-+#ifndef DSL_HAL_SUPPORT_H__
-+#define DSL_HAL_SUPPORT_H__ 1
-+
-+/*******************************************************************************
-+* FILE PURPOSE: DSL Driver API functions for Sangam
-+*
-+********************************************************************************
-+* FILE NAME: dsl_hal_functiondefines.c
-+*
-+* DESCRIPTION:
-+* Contains basic DSL HAL API declarations for Sangam
-+*
-+*
-+* (C) Copyright 2001-02, Texas Instruments, Inc.
-+* History
-+* Date Version Notes
-+* 06Feb03 0.00.00 RamP Created
-+* 21Mar03 0.00.01 RamP Removed byteswap functions
-+* 21Mar03 0.00.02 RamP Added extern osFreeVMemory declaration
-+* 10Apr03 0.00.03 RamP Changed declaration for loadFWImage &
-+* loadDebugFWImage to remove ptidsl param
-+* 12Apr03 0.00.04 RamP Added function to set Interrupt Bit
-+* Masks for bitfield & Mailboxes
-+* 14Apr03 0.00.05 RamP Added modem state bit field processing
-+* 15Apr03 0.00.06 RamP Added function osAllocateVMemory
-+* 21Apr03 0.01.00 RamP Added function osAllocateDmaMemory
-+* Added function osFreeDmaMemory
-+* (Alpha) Added macro virtual2Physical,
-+* 22Apr03 0.01.01 RamP Moved acknowledgeInterrupt to api.h
-+* 24Apr03 0.01.02 RamP Added checkOvelayPage function
-+* 29May03 0.01.03 RamP Added critical enter/exit function decl
-+* 06Jun03 0.01.04 RamP Added Interrupt source parsing function
-+* 06Oct03 0.01.05 RamP Added function abstraction switches
-+* 12Oct03 0.01.06 RamP Added ADSL2 Message function prototypes
-+* 14Nov03 0.03.07 RamP Added function to gather Rate Messages
-+*******************************************************************************/
-+
-+#include "dsl_hal_api.h"
-+
-+#define virtual2Physical(a) (((int)a)&~0xe0000000)
-+/* External Function Prototype Declarations */
-+
-+extern unsigned int shim_osGetCpuFrequency(void);
-+extern void shim_osClockWait(int val);
-+extern unsigned int shim_osClockTick(void);
-+
-+extern int shim_osStringCmp(const char *s1, const char *s2);
-+
-+extern void dprintf( int uDbgLevel, char * szFmt, ...);
-+
-+extern int shim_osLoadFWImage(unsigned char *firmwareImage);
-+extern int shim_osLoadDebugFWImage(unsigned char *debugFirmwareImage);
-+extern unsigned int shim_read_overlay_page(void *ptr, unsigned int secOffset, unsigned int secLength);
-+extern void shim_osMoveMemory(char *dst, char *src, unsigned int numBytes);
-+extern void shim_osZeroMemory(char *dst, unsigned int numBytes);
-+
-+extern void *shim_osAllocateMemory(unsigned int size);
-+extern void *shim_osAllocateVMemory(unsigned int size);
-+extern void *shim_osAllocateDmaMemory(unsigned int size);
-+
-+extern void shim_osFreeMemory(void *ptr, unsigned int size);
-+extern void shim_osFreeVMemory(void *ptr, unsigned int size);
-+extern void shim_osFreeDmaMemory(void *ptr, unsigned int size);
-+
-+extern void shim_osWriteBackCache(void *pMem, unsigned int size);
-+extern void shim_osCriticalEnter(void);
-+extern void shim_osCriticalExit(void);
-+
-+
-+/*******************************************************************************************
-+* FUNCTION NAME: dslhal_support_writeHostMailbox
-+*
-+********************************************************************************************
-+* DESCRIPTION: Send a message to a mailbox
-+*
-+* ARGUMENTS: int cmd command to write
-+* int tag tag (currently unused)
-+* int p1 parameter 1 (currently unused)
-+* int p2 parameter 2 (currently unused)
-+*
-+* RETURNS: 0 if successful
-+* NZ otherwise
-+*
-+*******************************************************************************************/
-+
-+int dslhal_support_writeHostMailbox
-+(tidsl_t *ptidsl,
-+ int cmd,
-+ int tag,
-+ int p1,
-+ int p2);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_readDspMailbox
-+*
-+*********************************************************************************************
-+* DESCRIPTION: Reads a message from the mailbox
-+*
-+* ARGUMENTS: int *pcmd Pointer to command read
-+*
-+* RETURNS: 0 if successful
-+* 1 if no mail
-+* NZ otherwise
-+*
-+*****************************************************************************************/
-+
-+int dslhal_support_readDspMailbox
-+(tidsl_t *ptidsl,
-+ int *pcmd,
-+ int *ptag,
-+ int *pprm1,
-+ int *pprm2);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_readTextMailbox
-+*
-+*********************************************************************************************
-+* DESCRIPTION: Reads a message from the mailbox
-+*
-+* ARGUMENTS: int *pcmd Pointer to command read
-+*
-+* RETURNS: 0 if successful
-+* 1 if no mail
-+* NZ otherwise
-+*
-+*****************************************************************************************/
-+
-+int dslhal_support_readTextMailbox
-+(tidsl_t *ptidsl,
-+ int *pmsg1,
-+ int *pmsg2);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_blockRead
-+*
-+*********************************************************************************************
-+* DESCRIPTION: This rouin simulates DSP memory read as done in ax5 pci nic card
-+*
-+* INPUT: void *addr, memory address to be read
-+* void *buffer, dat buffer to be filled with from memmory
-+* size_t count, number of bytes to be written
-+*
-+* RETURN: 0 --succeeded
-+* 1 --Failed
-+*
-+*****************************************************************************************/
-+
-+int dslhal_support_blockRead
-+(void *addr,
-+ void *buffer,
-+ size_t count);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_blockWrite
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This rouin simulates DSP memory write as done in ax5 pci nic card
-+*
-+* INPUT: void *buffer, data need to written
-+* void *adde, memory address to be written
-+* size_t count, number of bytes to be written
-+*
-+* RETURN: 0 --succeeded
-+* 1 --Failed
-+*
-+*****************************************************************************************/
-+
-+int dslhal_support_blockWrite
-+(void *buffer,
-+ void *addr,
-+ size_t count);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_hostDspAddressTranslate
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This function moves the address window to translate physical address
-+*
-+* INPUT: unsigned int addr : address that requires translation
-+*
-+* RETURN: Translated address or error condition
-+*
-+*
-+*****************************************************************************************/
-+
-+unsigned int dslhal_support_hostDspAddressTranslate
-+( unsigned int addr
-+);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_unresetDslSubsystem
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This function unreset Dsl Subsystem
-+*
-+* INPUT: None
-+*
-+* RETURN: 0 if Pass; 1 if Fail
-+*
-+*****************************************************************************************/
-+int dslhal_support_unresetDslSubsystem
-+(void
-+);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_unresetDsp()
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction takes ax5 daugter board out of reset.
-+*
-+* INPUT: None
-+*
-+* RETURN: 0 --successful.
-+* 1 --failed
-+*
-+*****************************************************************************************/
-+int dslhal_support_unresetDsp
-+(void
-+);
-+
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_resetDslSubsystem
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This function unreset Dsl Subsystem
-+*
-+* INPUT: None
-+*
-+* RETURN: 0 if Pass; 1 if Fail
-+*
-+*****************************************************************************************/
-+int dslhal_support_resetDslSubsystem
-+(void
-+);
-+
-+/******************************************************************************************
-+* FUNCTION NAME: dslhal_support_resetDsp()
-+*
-+*******************************************************************************************
-+* DESCRIPTION: This fuction takes ax5 daugter board out of reset.
-+*
-+* INPUT: None
-+*
-+* RETURN: 0 --successful.
-+* 1 --failed
-+*
-+*****************************************************************************************/
-+int dslhal_support_resetDsp
-+(void
-+);
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_hostDspCodeDownload()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* download DSP image from host memory to dsp memory
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+int dslhal_support_hostDspCodeDownload
-+(tidsl_t * ptidsl
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_diags_digi_assignMemTestSpace()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: Assigns Memory Space in SDRAM for External Memory Test
-+* Input: tidsl_t *ptidsl
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_diags_digi_assignMemTestSpace
-+(tidsl_t *ptidsl
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_diags_digi_readMemTestResult()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: Reads Results of External Memory Test
-+* Input: tidsl_t *ptidsl
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_diags_digi_readMemTestResult
-+(tidsl_t *ptidsl,
-+unsigned int testResult
-+);
-+
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_diags_codeDownload()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: Brings DSLSS out of Reset, Downloads Diag Firmware,
-+* brings DSP out of Reset
-+* Input: tidsl_t *ptidsl
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_diags_codeDownload
-+(tidsl_t *ptidsl,
-+unsigned char* missingTones
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_diags_anlg_setPgaParams()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: This function instructs the Transciever to transmit the Reverb with missing
-+* tones and Medley's with missing tones. These signals are defined in ITU
-+* G.992.1 ADSL Standards.
-+*
-+* Input: Test selects between the Reverb or Medley tests. 0 - Reverb, 1 - Medley
-+* Tones selects the .
-+* Return: NULL
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_diags_anlg_setPgaParams
-+(tidsl_t *ptidsl,
-+int agcFlag,
-+short pga1,
-+short pga2,
-+short pga3,
-+short aeq
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_diags_anlg_getRxNoisePower()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: This function instructs the Transciever to transmit the Reverb with missing
-+* tones and Medley's with missing tones. These signals are defined in ITU
-+* G.992.1 ADSL Standards.
-+*
-+* Input: Test selects between the Reverb or Medley tests. 0 - Reverb, 1 - Medley
-+* Tones selects the .
-+* Return: NULL
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_diags_anlg_getRxNoisePower
-+(tidsl_t *ptidsl
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_diags_anlg_setMissingTones()
-+*
-+*********************************************************************************************
-+* DESCRIPTION: This function instructs the Transciever to transmit the Reverb with missing
-+* tones and Medley's with missing tones. These signals are defined in ITU
-+* G.992.1 ADSL Standards.
-+*
-+* Input: Test selects between the Reverb or Medley tests. 0 - Reverb, 1 - Medley
-+* Tones selects the .
-+* Return: NULL
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_diags_anlg_setMissingTones
-+(tidsl_t *ptidsl,
-+unsigned char* missingTones
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_readDelineationState()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* download DSP image from host memory to dsp memory
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_readDelineationState
-+(tidsl_t *ptidsl
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_processModemStateBitField()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* download DSP image from host memory to dsp memory
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_processModemStateBitField
-+(tidsl_t *ptidsl
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_setInterruptMask()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_support_setInterruptMask
-+(tidsl_t * ptidsl,
-+unsigned int inputMask
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_computeCrc32()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Computes the CRC-32 for the input data
-+*
-+* Return: 32 bit CRC of the input data
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_computeCrc32
-+(unsigned char *data,
-+int len
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_checkOverlayPage()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Computes the CRC-32 for the input data and compares it with reference
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_checkOverlayPage
-+(tidsl_t *ptidsl,
-+unsigned int tag
-+);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_restoreTrainingInfo()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Computes the CRC-32 for the input data and compares it with reference
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+int dslhal_support_restoreTrainingInfo(tidsl_t * ptidsl);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_reloadTrainingInfo()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Computes the CRC-32 for the input data and compares it with reference
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+int dslhal_support_reloadTrainingInfo(tidsl_t * ptidsl);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_clearTrainingInfo()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Computes the CRC-32 for the input data and compares it with reference
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+int dslhal_support_clearTrainingInfo(tidsl_t * ptidsl);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_parseInterruptSource()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Sets the host interrupt bit masks
-+*
-+* Return: 0 success
-+* 1 failed
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_support_parseInterruptSource(tidsl_t * ptidsl);
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_advancedIdleProcessing()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced Idle State Processing Functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_advancedIdleProcessing(tidsl_t *ptidsl);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_aocBitSwapProcessing()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced Bitswap buffer Processing Functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_aocBitSwapProcessing(tidsl_t *ptidsl,unsigned int usDs);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_gatherEocMessages()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced EOC Buffering functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_gatherEocMessages(tidsl_t *ptidsl,int usDs, int msgPart1, int msgPart2);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_gatherSnrPerBin()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced Snr per bin buffering Functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_gatherSnrPerBin(tidsl_t *ptidsl,unsigned int snrParm);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_processTrainingState()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced Training State Processing Functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_processTrainingState(tidsl_t *ptidsl);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_gatherAdsl2Messages()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced EOC Buffering functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_gatherAdsl2Messages(tidsl_t *ptidsl,int msgTag, int param1, int param2);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_getAdsl2MsgLocation()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Gets the address to the ADSL2 Message being looked up
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_getAdsl2MessageLocation(tidsl_t *ptidsl,int msgOffset);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_getCMsgsRa()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Calls Advanced Training Message functions
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_getCMsgsRa(tidsl_t *ptidsl,void *cMsg);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_gatherRateMessages()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* Gathers Advanced Training Messages
-+*
-+* Return: Error Condition (if any)
-+*
-+*
-+* NOTE:
-+* DSP image is based on LITTLE endian
-+*
-+********************************************************************************************/
-+unsigned int dslhal_support_gatherRateMessages(tidsl_t *ptidsl);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_byteSwap16()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* byteswap a short
-+*
-+* INPUT:
-+* Return: NULL
-+*
-+********************************************************************************************/
-+
-+unsigned short dslhal_support_byteSwap16(unsigned short in16Bits);
-+
-+/********************************************************************************************
-+* FUNCTION NAME: dslhal_support_byteSwap32()
-+*
-+*********************************************************************************************
-+* DESCRIPTION:
-+* byteswap a word
-+*
-+* INPUT:
-+* Return: NULL
-+*
-+********************************************************************************************/
-+
-+unsigned int dslhal_support_byteSwap32(unsigned int in32Bits);
-+
-+#endif /* Pairs #ifndef DSL_HAL_FUNCTIONDEFINES_H__ */
-diff -urN linux.old/drivers/atm/sangam_atm/dsl_hal_version.h linux.dev/drivers/atm/sangam_atm/dsl_hal_version.h
---- linux.old/drivers/atm/sangam_atm/dsl_hal_version.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/dsl_hal_version.h 2005-08-23 04:46:50.102842936 +0200
-@@ -0,0 +1,94 @@
-+#ifndef __SYSSW_VERSION_H__
-+#define __SYSSW_VERSION_H__ 1
-+
-+/*******************************************************************************
-+* FILE PURPOSE: DSL Driver API functions for Sangam
-+*
-+********************************************************************************
-+* FILE NAME: dsl_hal_basicapi.c
-+*
-+* DESCRIPTION:
-+* Contains basic DSL HAL APIs for Sangam
-+*
-+* (C) Copyright 2003-04, Texas Instruments, Inc.
-+* History
-+* Date Version Notes
-+* 14May03 0.00.00 RamP Original Version Created
-+* 14May03 0.00.01 RamP Initial Rev numbers inserted
-+* 14May03 0.00.02 RamP Bumped version numbers for Dsl Hal
-+* & dhalapp for alpha plus
-+* 19May03 0.00.03 MCB Bumped dslhal version number
-+* because of dependant changes
-+* wrt. linux-nsp atm drivers.
-+* 22May03 0.00.04 RamP Bumped dslhal & dhalapp buildnum
-+* for inner/outer pair & DGASP code
-+* 06Jun03 0.00.05 RamP Bumped up buildnum for LED, STM,
-+* interrupt processing, statistics
-+* and other pre-beta features
-+* 09Jun03 0.00.06 JEB Fixed error in DHALAPP bugfix/buildnum
-+* 09Jun03 0.00.07 RamP Bumped up buildnum for incremental
-+* changes to apis, statistics, memory
-+* fixes, parameter configurations
-+* 11Jun03 0.00.08 RamP Bumped up buildnum for Co profile
-+* free memory fix
-+* 12Jun03 0.00.09 JEB Bumped version numbers for AR7 1.00 Beta
-+* 02Jul03 0.00.10 ZT Bumped HAL version for overlay page
-+* 18Jul03 0.00.11 RamP Bumped HAL version for analog diags
-+* 22Jul03 0.00.12 JEB Bumped DHALAPP buildnum for analog diags
-+* 31Jul03 0.00.13 RamP Bumped HAL version for engr. drop
-+* 04Aug03 0.00.14 JEB Bumped HAL version buildnum for CHECKPOINT65 changes
-+* Bumped LINUX version buildnum for CHECKPOINT65 changes
-+* 06Aug03 0.00.15 MCB Bumped all version numbers in prep for AR7 1.0 R2 release for POTS.
-+* 13Aug03 0.00.16 MCB Set rev id's for D3/R1.1 (ADSL2).
-+* 21Aug03 0.00.17 JEB Bumped up build numbers for merge of code additions from D1
-+* 26Sep03 0.00.18 JEB Set rev id's for another D3/R1 (ADSL2).
-+* 14Oct03 0.00.19 JEB Bumped Linux minor number and reset bugfix number for release.
-+* Bumped build numbers on DSLHAL and DHALAPP for this checkpoint.
-+* 14Oct03 0.00.20 JEB Bumped build numbers on DSLHAL and DHALAPP for CHECKPOINT15.
-+* 21Oct03 0.00.21 JEB Bumped build number on DSLHAL for CHECKPOINT16.
-+* 22Oct03 0.00.22 MCB Bumped all version numbers in support of D3R1 release.
-+* 27Oct03 0.00.23 JEB Bumped build numbers on DSLHAL and DHALAPP for CHECKPOINT19.
-+* Updated version for DSLAGENT to be 02.01.00.01 for ACT 2.1 R0.
-+* 30Oct03 0.00.24 JEB Bumped bugfix number on LINUXATM Version for next release.
-+* Bumped build numbers on DSLHAL and DHALAPP
-+* 31Oct03 0.00.25 MCB Bumped all version numbers in support of D3R2 release.
-+* 14Nov03 0.00.26 JEB Bumped build numbers on DSLHAL and DHALAPP
-+* Changed version for DSLAGENT to be 02.00.01.01 for an ACT 2.0 R0
-+* 20Nov03 0.00.27 JEB Bumped build number on DSLHAL.
-+* Changed version for DSLAGENT to be 02.00.02.00 for the next ACT 2.0 R2
-+* 21Nov03 0.00.28 MCB Bumped all version numbers in support of D3R2 release.
-+* 21Nov03 0.00.29 JEB Bumped build numbers on DSLHAL and DHALAPP for D3-R0 drop on 11/21.
-+* 16Dec03 0.00.30 JEB Bumped build numbers on DSLHAL and DHALAPP for CHECKPOINT31.
-+* 21Dec03 0.00.31 MCB Bumped all version numbers in support of D3R2 release.
-+* 05Jan04 0.00.32 JEB Bumped build numbers on DSLHAL and Linux ATM for CHECKPOINT 34.
-+* 15Jan04 0.00.33 JEB Bumped build numbers on DSLHAL and Linux ATM for CHECKPOINT 36.
-+* 26Jan04 0.00.34 JEB Changed Linux ATM version number to be 04.02.03.00.
-+* 27Jan04 0.00.35 MCB Bumped all version numbers in support of D3R2 release.
-+*******************************************************************************/
-+
-+/* Dsl Hal API Version Numbers */
-+#define DSLHAL_VERSION_MAJOR 03
-+#define DSLHAL_VERSION_MINOR 00
-+#define DSLHAL_VERSION_BUGFIX 06
-+#define DSLHAL_VERSION_BUILDNUM 00
-+#define DSLHAL_VERSION_TIMESTAMP 00
-+
-+/* dhalapp Adam2 Application Version Numbers */
-+#define DHALAPP_VERSION_MAJOR 03
-+#define DHALAPP_VERSION_MINOR 00
-+#define DHALAPP_VERSION_BUGFIX 05
-+#define DHALAPP_VERSION_BUILDNUM 00
-+
-+/* Linux ATM Driver Version Numbers */
-+#define LINUXATM_VERSION_MAJOR 04
-+#define LINUXATM_VERSION_MINOR 02
-+#define LINUXATM_VERSION_BUGFIX 04
-+#define LINUXATM_VERSION_BUILDNUM 00
-+
-+/* DSL Agent Version Numbers */
-+#define DSLAGENT_VERSION_MAJOR 02
-+#define DSLAGENT_VERSION_MINOR 00
-+#define DSLAGENT_VERSION_BUGFIX 02
-+#define DSLAGENT_VERSION_BUILDNUM 00
-+
-+#endif /* pairs with #ifndef __SYSSW_VERSION_H__ */
-diff -urN linux.old/drivers/atm/sangam_atm/ec_errors_cpaal5.h linux.dev/drivers/atm/sangam_atm/ec_errors_cpaal5.h
---- linux.old/drivers/atm/sangam_atm/ec_errors_cpaal5.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/ec_errors_cpaal5.h 2005-08-23 04:46:50.102842936 +0200
-@@ -0,0 +1,118 @@
-+/***************************************************************************
-+ Copyright(c) 2001, Texas Instruments Incorporated. All Rights Reserved.
-+
-+ FILE: ec_errors.h
-+
-+ DESCRIPTION:
-+ This file contains definitions and function declarations for
-+ error code support.
-+
-+ HISTORY:
-+ 14Dec00 MJH Added masking to EC_CLASS etc macros
-+ 17Sep02 GSG Added HAL support (new class&devices)
-+ 03Oct02 GSG Removed C++ style comments
-+***************************************************************************/
-+#ifndef _INC_EC_ERRORS
-+#define _INC_EC_ERRORS
-+
-+/*
-+ 31 - CRITICAL
-+ 30-28 - CLASS (ie. DIAG, KERNEL, FLASH, etc)
-+ 27-24 - INSTANCE (ie. 1, 2, 3, etc )
-+ 23-16 - DEVICE (ie. EMAC, IIC, etc)
-+ 15-08 - FUNCTION (ie. RX, TX, INIT, etc)
-+ 07-00 - ERROR CODE (ie. NO_BASE, FILE_NOT_FOUND, etc )
-+*/
-+
-+/*---------------------------------------------------------------------------
-+ Useful defines for accessing fields within error code
-+---------------------------------------------------------------------------*/
-+#define CRITICAL_SHIFT 31
-+#define CLASS_SHIFT 28
-+#define INST_SHIFT 24
-+#define DEVICE_SHIFT 16
-+#define FUNCTION_SHIFT 8
-+#define ERROR_CODE_SHIFT 0
-+
-+#define CRITICAL_MASK 1
-+#define CLASS_MASK 0x07
-+#define DEVICE_MASK 0xFF
-+#define INST_MASK 0x0F
-+#define FUNCTION_MASK 0xFF
-+#define ERROR_CODE_MASK 0xFF
-+
-+#define EC_CLASS(val) ((val&CLASS_MASK) << CLASS_SHIFT)
-+#define EC_DEVICE(val) ((val&DEVICE_MASK) << DEVICE_SHIFT)
-+#define EC_INST(val) ((val&INST_MASK) << INST_SHIFT)
-+#define EC_FUNC(val) ((val&FUNCTION_MASK) << FUNCTION_SHIFT)
-+#define EC_ERR(val) ((val&ERROR_CODE_MASK) << ERROR_CODE_SHIFT)
-+
-+/*---------------------------------------------------------------------------
-+ Operation classes
-+---------------------------------------------------------------------------*/
-+#define EC_HAL EC_CLASS(0)
-+#define EC_DIAG EC_CLASS(8)
-+
-+/*---------------------------------------------------------------------------
-+ Device types
-+---------------------------------------------------------------------------*/
-+#define EC_DEV_EMAC EC_DEVICE(1)
-+#define EC_DEV_IIC EC_DEVICE(2)
-+#define EC_DEV_RESET EC_DEVICE(3)
-+#define EC_DEV_ATMSAR EC_DEVICE(4)
-+#define EC_DEV_MEM EC_DEVICE(5)
-+#define EC_DEV_DES EC_DEVICE(6)
-+#define EC_DEV_DMA EC_DEVICE(7)
-+#define EC_DEV_DSP EC_DEVICE(8)
-+#define EC_DEV_TMR EC_DEVICE(9)
-+#define EC_DEV_WDT EC_DEVICE(10)
-+#define EC_DEV_DCL EC_DEVICE(11)
-+#define EC_DEV_BBIF EC_DEVICE(12)
-+#define EC_DEV_PCI EC_DEVICE(13)
-+#define EC_DEV_XBUS EC_DEVICE(14)
-+#define EC_DEV_DSLIF EC_DEVICE(15)
-+#define EC_DEV_USB EC_DEVICE(16)
-+#define EC_DEV_CLKC EC_DEVICE(17)
-+#define EC_DEV_RAPTOR EC_DEVICE(18)
-+#define EC_DEV_DSPC EC_DEVICE(19)
-+#define EC_DEV_INTC EC_DEVICE(20)
-+#define EC_DEV_GPIO EC_DEVICE(21)
-+#define EC_DEV_BIST EC_DEVICE(22)
-+#define EC_DEV_HDLC EC_DEVICE(23)
-+#define EC_DEV_UART EC_DEVICE(24)
-+#define EC_DEV_VOIC EC_DEVICE(25)
-+/* 9.17.02 (new HAL modules) */
-+#define EC_DEV_CPSAR EC_DEVICE(0x1A)
-+#define EC_DEV_AAL5 EC_DEVICE(0x1B)
-+#define EC_DEV_AAL2 EC_DEVICE(0x1C)
-+#define EC_DEV_CPMAC EC_DEVICE(0x1D)
-+#define EC_DEV_VDMA EC_DEVICE(0x1E)
-+#define EC_DEV_VLYNQ EC_DEVICE(0x1F)
-+#define EC_DEV_CPPI EC_DEVICE(0x20)
-+#define EC_DEV_CPMDIO EC_DEVICE(0x21)
-+
-+/*---------------------------------------------------------------------------
-+ Function types
-+---------------------------------------------------------------------------*/
-+#define EC_FUNC_READ_CONF EC_FUNC(1)
-+#define EC_FUNC_INIT EC_FUNC(2)
-+
-+/*---------------------------------------------------------------------------
-+ Error codes
-+---------------------------------------------------------------------------*/
-+#define EC_CRITICAL (1<<CRITICAL_SHIFT)
-+#define EC_NO_ERRORS 0
-+#define EC_VAL_NO_BASE EC_ERR(1)
-+#define EC_VAL_NO_RESET_BIT EC_ERR(2)
-+#define EC_VAL_NO_RESET EC_ERR(3)
-+#define EC_VAL_BAD_BASE EC_ERR(4)
-+#define EC_VAL_MALLOCFAILED EC_ERR(5)
-+#define EC_VAL_NO_RESETBASE EC_ERR(6)
-+#define EC_DEVICE_NOT_FOUND EC_ERR(7)
-+
-+/*---------------------------------------------------------------------------
-+ Function declarations
-+---------------------------------------------------------------------------*/
-+extern void ec_log_error( unsigned int );
-+
-+#endif /* _INC_EC_ERRORS */
-diff -urN linux.old/drivers/atm/sangam_atm/ec_errors_cpsar.h linux.dev/drivers/atm/sangam_atm/ec_errors_cpsar.h
---- linux.old/drivers/atm/sangam_atm/ec_errors_cpsar.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/ec_errors_cpsar.h 2005-08-23 04:46:50.102842936 +0200
-@@ -0,0 +1,118 @@
-+/***************************************************************************
-+ Copyright(c) 2001, Texas Instruments Incorporated. All Rights Reserved.
-+
-+ FILE: ec_errors.h
-+
-+ DESCRIPTION:
-+ This file contains definitions and function declarations for
-+ error code support.
-+
-+ HISTORY:
-+ 14Dec00 MJH Added masking to EC_CLASS etc macros
-+ 17Sep02 GSG Added HAL support (new class&devices)
-+ 03Oct02 GSG Removed C++ style comments
-+***************************************************************************/
-+#ifndef _INC_EC_ERRORS
-+#define _INC_EC_ERRORS
-+
-+/*
-+ 31 - CRITICAL
-+ 30-28 - CLASS (ie. DIAG, KERNEL, FLASH, etc)
-+ 27-24 - INSTANCE (ie. 1, 2, 3, etc )
-+ 23-16 - DEVICE (ie. EMAC, IIC, etc)
-+ 15-08 - FUNCTION (ie. RX, TX, INIT, etc)
-+ 07-00 - ERROR CODE (ie. NO_BASE, FILE_NOT_FOUND, etc )
-+*/
-+
-+/*---------------------------------------------------------------------------
-+ Useful defines for accessing fields within error code
-+---------------------------------------------------------------------------*/
-+#define CRITICAL_SHIFT 31
-+#define CLASS_SHIFT 28
-+#define INST_SHIFT 24
-+#define DEVICE_SHIFT 16
-+#define FUNCTION_SHIFT 8
-+#define ERROR_CODE_SHIFT 0
-+
-+#define CRITICAL_MASK 1
-+#define CLASS_MASK 0x07
-+#define DEVICE_MASK 0xFF
-+#define INST_MASK 0x0F
-+#define FUNCTION_MASK 0xFF
-+#define ERROR_CODE_MASK 0xFF
-+
-+#define EC_CLASS(val) ((val&CLASS_MASK) << CLASS_SHIFT)
-+#define EC_DEVICE(val) ((val&DEVICE_MASK) << DEVICE_SHIFT)
-+#define EC_INST(val) ((val&INST_MASK) << INST_SHIFT)
-+#define EC_FUNC(val) ((val&FUNCTION_MASK) << FUNCTION_SHIFT)
-+#define EC_ERR(val) ((val&ERROR_CODE_MASK) << ERROR_CODE_SHIFT)
-+
-+/*---------------------------------------------------------------------------
-+ Operation classes
-+---------------------------------------------------------------------------*/
-+#define EC_HAL EC_CLASS(0)
-+#define EC_DIAG EC_CLASS(8)
-+
-+/*---------------------------------------------------------------------------
-+ Device types
-+---------------------------------------------------------------------------*/
-+#define EC_DEV_EMAC EC_DEVICE(1)
-+#define EC_DEV_IIC EC_DEVICE(2)
-+#define EC_DEV_RESET EC_DEVICE(3)
-+#define EC_DEV_ATMSAR EC_DEVICE(4)
-+#define EC_DEV_MEM EC_DEVICE(5)
-+#define EC_DEV_DES EC_DEVICE(6)
-+#define EC_DEV_DMA EC_DEVICE(7)
-+#define EC_DEV_DSP EC_DEVICE(8)
-+#define EC_DEV_TMR EC_DEVICE(9)
-+#define EC_DEV_WDT EC_DEVICE(10)
-+#define EC_DEV_DCL EC_DEVICE(11)
-+#define EC_DEV_BBIF EC_DEVICE(12)
-+#define EC_DEV_PCI EC_DEVICE(13)
-+#define EC_DEV_XBUS EC_DEVICE(14)
-+#define EC_DEV_DSLIF EC_DEVICE(15)
-+#define EC_DEV_USB EC_DEVICE(16)
-+#define EC_DEV_CLKC EC_DEVICE(17)
-+#define EC_DEV_RAPTOR EC_DEVICE(18)
-+#define EC_DEV_DSPC EC_DEVICE(19)
-+#define EC_DEV_INTC EC_DEVICE(20)
-+#define EC_DEV_GPIO EC_DEVICE(21)
-+#define EC_DEV_BIST EC_DEVICE(22)
-+#define EC_DEV_HDLC EC_DEVICE(23)
-+#define EC_DEV_UART EC_DEVICE(24)
-+#define EC_DEV_VOIC EC_DEVICE(25)
-+/* 9.17.02 (new HAL modules) */
-+#define EC_DEV_CPSAR EC_DEVICE(0x1A)
-+#define EC_DEV_AAL5 EC_DEVICE(0x1B)
-+#define EC_DEV_AAL2 EC_DEVICE(0x1C)
-+#define EC_DEV_CPMAC EC_DEVICE(0x1D)
-+#define EC_DEV_VDMA EC_DEVICE(0x1E)
-+#define EC_DEV_VLYNQ EC_DEVICE(0x1F)
-+#define EC_DEV_CPPI EC_DEVICE(0x20)
-+#define EC_DEV_CPMDIO EC_DEVICE(0x21)
-+
-+/*---------------------------------------------------------------------------
-+ Function types
-+---------------------------------------------------------------------------*/
-+#define EC_FUNC_READ_CONF EC_FUNC(1)
-+#define EC_FUNC_INIT EC_FUNC(2)
-+
-+/*---------------------------------------------------------------------------
-+ Error codes
-+---------------------------------------------------------------------------*/
-+#define EC_CRITICAL (1<<CRITICAL_SHIFT)
-+#define EC_NO_ERRORS 0
-+#define EC_VAL_NO_BASE EC_ERR(1)
-+#define EC_VAL_NO_RESET_BIT EC_ERR(2)
-+#define EC_VAL_NO_RESET EC_ERR(3)
-+#define EC_VAL_BAD_BASE EC_ERR(4)
-+#define EC_VAL_MALLOCFAILED EC_ERR(5)
-+#define EC_VAL_NO_RESETBASE EC_ERR(6)
-+#define EC_DEVICE_NOT_FOUND EC_ERR(7)
-+
-+/*---------------------------------------------------------------------------
-+ Function declarations
-+---------------------------------------------------------------------------*/
-+extern void ec_log_error( unsigned int );
-+
-+#endif /* _INC_EC_ERRORS */
-diff -urN linux.old/drivers/atm/sangam_atm/env_def_defines.h linux.dev/drivers/atm/sangam_atm/env_def_defines.h
---- linux.old/drivers/atm/sangam_atm/env_def_defines.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/env_def_defines.h 2005-08-23 04:46:50.103842784 +0200
-@@ -0,0 +1,926 @@
-+#ifndef __ENV_DEF_DEFINES_H__
-+#define __ENV_DEF_DEFINES_H__ 1
-+
-+//********************************************************************
-+//* DMT-BASE ADSL MODEM PROGRAM
-+//* TEXAS INSTRUMENTS PROPRIETARTY INFORMATION
-+//* AMATI CONFIDENTIAL PROPRIETARY
-+//*
-+//* (c) Copyright May 1999, Texas Instruments Incorporated.
-+//* All Rights Reserved.
-+//*
-+//* Property of Texas Instruments Incorporated and Amati Communications Corp.
-+//*
-+//* Restricted Rights - Use, duplication, or disclosure is subject to
-+//* restrictions set forth in TI's and Amati program license agreement and
-+//* associated documentation
-+//*
-+//*********************************************************************
-+//*
-+//* FILENAME: dpsys_defines.h
-+//*
-+//* ABSTRACT: This file provides a mechanism for defining standard
-+//* preprocessor flag sets for datapump.
-+//*
-+//* TARGET: Non specific.
-+//*
-+//* TOOLSET: Non specific.
-+//*
-+//* ACTIVATION:
-+//*
-+//* HISTORY: DATE AUTHOR DESCRIPTION
-+//* 05/11/99 FLW Created
-+//* 01/21/00 FLW derfmake changes
-+//* 02/07/00 FLW/M.Seidl added _debug targets
-+//* 02/23/00 FLW/M.Barnett merged in from G.lite branch
-+//* 03/03/00 FLW/M.Barnett added TRELLIS token
-+//* 05/11/00 Barnett Added ap036btp & ap037btp support.
-+//* 02/07/00 M.Seidl added HW_TEQ, HW_DEC and DC_BIAS tokens
-+//* 02/28/00 Derf/Seidl Mod's in support of suppressing compiler warnings for empty source files
-+//* 02/28/00 M. Seidl added SWTC token
-+//* 02/28/00 M. Seidl added ap0501tp and its _debug target
-+//* 03/03/00 M. Seidl added MODPILOT token, ap0307tp_debug has SWDI and FDD enabled
-+//* 03/08/00 Jack Huang Added HWRSDEC token
-+//* 03/29/00 Derf/Seidl Mod's in support Soft-TC and derfmake
-+//* 04/10/00 Jack Huang Added PCIMASTER token
-+//* 04/11/00 Jack Huang Added STBFIX token
-+//* 04/24/00 M. Seidl ap0500tp has OLAYDP turned on, ap0500tp_debug has OLAYDP turned off now
-+//* 04/28/00 M.Seidl added KAPIL token for ap0501tp targets
-+//* 06/02/00 P.Sexton Added OAM_EOC token
-+//* 06/06/00 M. Seidl added au0501tp target
-+//* 06/12/00 Michael Seidl activated h/w TEQ for KAPIL targets, disabled STBFIX for all targets
-+//* 06/14/00 Derf added ap0308tp, alphabetized token lists
-+//* 06/16/00 Jack Huang added au0501tp_debug target
-+//* 06/22/00 M. Seidl Enabled code overlays through EMIF from external memory. Now there are 3
-+//* different code overlay schemes that are differentiated by the following tokens:
-+//* OLAYDP_PCI: uses PCI DMA in PCI Master Mode
-+//* OLAYDP_HOST: Host downloads overlay code into DMEM upon request from DSP
-+//* OLAYDP_EMIF: Host downloads overlay code into ext. mem at boot-time. DSP uses
-+//* DMA channel 0 to load code into on-chip PMEM
-+//* OLAYDP: turns overlays generally on or off
-+//* 07/15/00 B.Srinivasan Cleaned up default tokens and tokens for au0501tp, au0501tp_debug,
-+//* ap0501tp and ap0501tp_debug targets as well
-+//* 07/19/00 B.Srinivasan Made changes w.r.t cleaning/fixing Rufus Interrupt related code
-+//* (changed token TC_INTRPT_RUFUS to INTRPT_RUFUS
-+//* 06/14/00 Derf added au0501cp
-+//* 08/12/00 Yinong Ding Added DPLL_MODE token.
-+//* 08/16/00 F. Mujica Moved DOUBLE_XMT_RATE, RX_HPF, and LEAKY_LMS tokens here.
-+//* 09/05/00 M. Seidl Changed ap0501tp back to do overlay through PCI (OLAY_PCI = 1)
-+//* 09/11/00 M. Seidl moved USB and OLAYDP_HOST definitions to be CHIPSET specific, not target specific
-+//* 09/21/00 U.Dasgupta/ Added a token for separate transmit and receive buffers.
-+//* F.Mujica (SEPARATE_TX_RX_BUFFERS).
-+//* 10/02/00 U.Dasgupta/ Added DPLL and SEPARATE_TX_RX_BUFFER tokens for au0502 target.
-+//* F.Mujica
-+//* 10/02/00 M. Castellano Added new tokens for new Host/EMIF DSP code overlay.
-+//* OLAYDP_2STEP: Host downloads overlay code into ext. mem upon DSP request. DSP
-+//* DMA channel 0 to load code into on-chip PMEM. It is a somewhat hybrid version
-+//* of OLAYDP_HOST and OLAYDP_EMIF. The test target is ap0502tp.
-+//* 10/25/00 Balaji Added tokens for arv500tp target
-+//* 10/31/00 U. Iyer Added TEQ_AVG token and set it one for Ax5
-+//* 11/02/00 Barnett Added OAM_EOC=0 in defaults at bottom of file.
-+//* 11/21/00 M. Seidl turned OLAYDP and AOC off for ap0307tp to make binary compatible w. whql'ed driver
-+//* 11/28/00 Paul Hunt added FASTRETRAIN token for fast retrain specific code
-+//* 11/28/00 Paul Hunt added PILOTDATA token to control channel estimation and transmission
-+//* of data on the upstream pilot tone for ITU standard code loads
-+//* 12/20/00 Jack Huang added EIGHTBITSRAM toekn for the targets that use 8-bit SRAM for
-+//* interleaver/deinterleaver
-+//* 01/11/01 U.Dasgupta Added mp targets and cleaned up GHS/PILOTDATA variables
-+//* 01/23/01 U.Dasgupta Cleaned up code within GLITE tokens
-+//* 01/23/00 Barnett Added in full EOC support for AP3/Ax5. Got rid of UTC. No longer needed.
-+//* 02/08/01 Barnett Added DDC token.
-+//* 03/09/01 Nirmal Warke Added in TOKEN definition for line diagnostics (LINE_DIAG): IMP DEPENDENCIES -
-+//* TEQ_AVG must be off when LINE_DIAG is on (since they share a union buffer at the same time)
-+//* 03/13/01 M. Seidl Recovered ap0500tp target. Added GHS token as PMEM saving option
-+//* 03/14/01 Barnett Added ap0500mb target support. Look-and-feel is similar to ap0500tp.
-+//* Added seperate-but-equal def's wrt. ISDN Annex B, Annex C, and PROP.
-+//* 03/14/01 J. Bergsagel Added EXTERNBERT token.
-+//* 03/15/01 Barnett/Balaji Merged AR5(H) -> 03.00.00 datapump.
-+//* 03/16/01 Nirmal Warke Added in TOKEN definition for crosstalk performance mods (CROSSTALK): IMP DEPENDENCIES -
-+//* TEQ_AVG must be off and LEAKY_LMS must be on when CROSSTALK is on
-+//* 03/21/01 Barnett Added support for ar0500lp, ar0500mp, ar0500dp, arv500lp, arv500mp, and arv500dp.
-+//* 03/26/01 M. Seidl enabled 64pt IFFT for ap0500mb (Raptor+AD11, FDM)
-+//* 03/28/01 J. Bergsagel Removed EXTERNBERT token (now use host intf. var. instead)
-+//* 04/03/01 J. Bergsagel Removed condition of DSPDP_CHIPSET_GEN==5 for default defines
-+//* Removed LEAKY_LMS token (assumed always 1)
-+//* Removed OLAYDP_HOST token (assumed always 0)
-+//* Removed RX_HPF token (assumed always 1)
-+//* Removed TRIBRID token (not used any more)
-+//* Removed FDD token (assumed always 1)
-+//* Removed HW_DEC token (assumed always 1)
-+//* Removed HW_TEQ token (assumed always 1)
-+//* Removed HWRSDEC token (assumed always 1)
-+//* Removed ILEC_AD11_ALCATEL337 token (assumed always 0)
-+//* Removed ILEC_AD11_HDSLNOISEFIX token (assumed always 0)
-+//* Removed ILEC_AD11_MODULATEPILOT token (assumed always 0)
-+//* Removed ILEC_AD11_NEWINTERPOLATE token (assumed always 0)
-+//* Removed ILEC_AD11_USTXHPF token (assumed always 0)
-+//* Removed SWDI token (assumed always 1)
-+//* Removed TD_AGC token (assumed always 1)
-+//* Removed DSPDP_LEGACY_TARGET token (assumed always 0)
-+//* Removed AD11_20, AD11_20NL and AD11_20_NEWPREC token (always 1)
-+//* Removed AI token (assumed always 1)
-+//* Removed ATUC token (assumed always 0)
-+//* Removed EU token (assumed always 0)
-+//* Removed EVM2 token (assumed always 0)
-+//* Removed INTRPT_RUFUS token (assumed always 0)
-+//* Removed MODPILOT token (assumed always 0)
-+//* Removed SL and SL_EVM tokens (assumed always 0)
-+//* Removed STBIFX token (assumed always 0)
-+//* Removed STD token (assumed always 1)
-+//* Removed SWDI_LOOPBACK token (assumed always 0)
-+//* Removed TID token (assumed always 0)
-+//* Removed TII token (assumed always 1)
-+//* Removed TIPCI token (assumed always 1)
-+//* Removed UDI token (assumed always 1)
-+//* Removed DC_BIAS token (assumed always 1)
-+//* 04/05/01 Barnett Added DSPDP_ prefix to tokens that originate
-+//* in the public interface.
-+//* 05/07/01 Jack Huang Removed DOUBLE_XMT_RATE token.
-+//* 05/16/01 Barnett Added back in EXTERNBERT token in support
-+//* of saving PMEM.
-+//* 06/05/01 Jack Huang Fixed the rules for ar0500mp_debug target
-+//* 04/23/01 M. Halleck Merge Astro Wu's DDC enhancements
-+//* 06/05/01 M. Capps Changed DSP_DEBUG to ENHANCED_SERIAL_DEBUG
-+//* 07/03/01 M. Capps Replaced ESD token with !DDC, added DEV_DEBUG
-+//* 06/26/01 J. Bergsagel Removed all the old ap03... stuff
-+//* Removed OLAYDP_HOST token (again)
-+//* Removed CROSSTALK token (assumed always 1)
-+//* Removed TEQ_AVG token (assumed always 0)
-+//* Removed DE token (assumed always 1)
-+//* Removed PVAT token and au0501cp target
-+//* Removed FASTRETRAIN token (assumed always 0)
-+//* 07/05/01 J. Bergsagel Changed PCIMASTER token to TC_ATM_PCIMASTER
-+//* 07/20/01 Umesh Iyer Added ATMBERT token. ATMBERT is conditional on SWTC definition. if SWTC is 0
-+//* ATMBERT should be 0. Else it can be 0/1. Default 0.
-+//* 07/23/01 J. Bergsagel Changed name from defines_u.h to dpsys_defines.h
-+//* 07/24/01 Barnett Added support for build of $(TARGET)_diag mfgr'ing targets.
-+//* 08/02/01 Michael Seidl renamed KAPIL token to !AD1X
-+//* 08/02/01 Michael Seidl renamed GHS token to PMEMSAVE_GHS
-+//* 08/03/01 S.Yim Added MFGR_DIAG token for afe diagnostic
-+//* Added AFEDEV token for afe device driver
-+//* Added DSPBIOSII token for dsp bios
-+//* 09/21/01 Sameer Enable EXTERNBERT. Disable ATMBERT.
-+//* 10/01/01 U.Dasgupta Turned off SMART_MARGIN for ap0500mb because of FECs/CRCs;
-+//* 10/09/01 Barnett Added support for ar0500db.
-+//* 10/12/01 Barnett Disable EXTERNBERT.
-+//* 10/15/01 Barnett Turn off SMART_MARGIN.
-+//* 11/07/01 Barnett Def'ed ISDN_DEBUG for all targets to avoid compiler warnings.
-+//* Assumed defaul value is zero.
-+//* 11/13/01 Barnett Reworked ar0500db_debug to build JTAG-bootable load.
-+//* The equivalent production target should only be flash-bootable.
-+//* 01/11/02 Yim Added TOKEN JTAG to build JTAG load ar0500db_diag.
-+//* 01/23/02 U Iyer Added DEBUG_LOG token. Default value 0
-+//* 01/31/02 Barnett Added support for ar0700mp target.
-+//* 02/04/02 S.Yim Added TOKEN JTAG to build JTAG load ar0500mp_diag
-+//* 02/11/02 U Iyer Added MARGIN_DELTA_RETRAIN token. Default value 1
-+//* 05/15/02 Sameer V Enabled EXTERNBERT token for AR5 and AU5 platforms. EXTERNBERT is
-+//* not supported on AR5H.
-+//* 02/14/02 Barnett Don't ref the SWTC feature token if mfgr'ing diag target.
-+//* 02/19/02 Yim Added support to build au0502db_diag target.
-+//* 03/08/02 Nirmal Warke Added feature token HYBRID_SWITCH
-+//* 03/15/02 U G Jani Turned ON Bitswap support for AU5I (au0502db) targets.
-+//* 04/08/02 U G Jani Enabled NLNOISEADJSNR token for AU5I targets.
-+//* 06/24/02 Seungmok Oh Added PERTONE_EQ token support for those targets:
-+//* (ar0500mp_debug, au0502mp_debug, ar0500mp, au0502mp)
-+//* 06/26/02 Mallesh Added DS_PWR_CUTBACK token. Default value 1.
-+//* 06/27/02 Mallesh Changed default value of DS_PWR_CUTBACK token to 0.
-+//* 06/29/02 U.Dasgupta Token cleanup: Removed ISDN_DEBUG token
-+//* 04/29/02 Mannering Remove EIGHTBITSRAM, Combined DOUBLEBUFFER with
-+//* BITSWAP, added FPGA token
-+//* 05/03/02 Mannering cleanup token changed by the new routine names
-+//* 05/06/02 Mannering Add tokens OUTBAND and INBAND for codec commands
-+//* If both OUTBAND and INBAND are 0 codec register are
-+//* memory mapped.
-+//* 05/29/2002 S.Yim Removed AD1X, AFEDEV
-+//* 08/31/2002 Paul Hunt Added PERTONE_EQ and HYBRID_SWITCH for ar0700mp
-+//* 09/12/2002 Paul Hunt Added support for ar0700db target.
-+//* 08/07/2002 U.Dasgupta Turned off MARGIN_DELTA_RETRAIN feature for ISDN platforms
-+//* 11/14/2002 Paul Hunt Merged AX5 MR6 PC modifications into AR7 codebase, specifically
-+//* turned off MARGIN_DELTA_RETRAIN feature for ar0700db target
-+//* 08/26/2002 N. Warke Added DUAL_TEQ token. Active only for Ax7 target
-+//* 09/26/2002 Mannering Add token CODEC_EMU for codec emulator board
-+//* 10/15/2002 Iyer/Molla Added DMT_BIS token for DELT support
-+//* 10/21/2002 A. Redfern Added PHY_EC_ENABLE and PHY_PATH_ENABLE tokens
-+//* 10/23/2002 A. Redfern Removed LINE_DIAG token
-+//* 10/28/2002 J. Bergsagel Cleaned up old targets and cleaned up the token list
-+//* 10/30/2002 A. Redfern Added PHY_TDW_ENABLE
-+//* 11/01/2002 A. Redfern Removed SMART_MARGIN token
-+//* 11/01/2002 Mustafa Turned on SPECTRAL_SHAPING features for Lucent AnyMedia O.69 Interop.
-+//* 11/15/2002 Yim/Mannering Added CODEC_EMU token for analog emulation board specifics
-+//* 11/15/2002 Iyer/Molla Added DEBUG_DELT and MEM_STR token to support DELT debug
-+//* 12/27/2002 Sameer V Added ATM_TC_HW token for Sangam.
-+//* 01/06/2003 J. Bergsagel Added default values for NLNOISEADJSNR, ARTT and DS_PWR_CUTBACK
-+//* 01/07/2003 S.Yim Modified ar0700db_diag target to turn on ISDN token
-+//* 01/22/2003 J. Bergsagel Added back in defines for the debug targets.
-+//* 01/21/2003 MCB Implemented Ax7 UNIT-MODULE modular software framework.
-+//* 01/31/2003 J. Bergsagel Made debug targets to be for the FPGA platform; non-debug for Sangam.
-+//* Turned off DUAL_TEQ, PHY_EC_ENABLE and PHY_PATH_ENABLE by default
-+//* for the Sangam (non-debug) targets.
-+//* Turned off OLAYDP token by default.
-+//* Turned off SWTC and turned on ATM_TC_HW by default for Sangam targets.
-+//* 01/29/2003 Sameer V Added ATMBERT_HW token for Sangam.
-+//* 02/04/2003 D. Mannering Added CO_PROFILE token
-+//* 02/19/2003 Sameer V Added back EXTERNBERT token for ar0700mp_dp and ar0700db_dp targets.
-+//* Disabled EXTERNBERT for debug target since it is not supported on the
-+//* FPGA platform.
-+//* 02/21/2003 A. Redfern Turned off OAM_EOC, AOC and BITSWAP (until memory issues are resolved).
-+//* Turned on DUAL_TEQ, PHY_PATH_ENABLE and PHY_EC_ENABLE.
-+//* 02/21/2003 D. Mannering Added DEBUG_DUMP.
-+//* 03/06/2003 J. Bergsagel Cleaned up tokens for each target and switched diag targets
-+//* over to the Sangam platform (instead of the FPGA platform).
-+//* 03/07/2003 J. Bergsagel Cleaned up TC and BERT tokens
-+//* 03/11/2003 J. Bergsagel Turned on AOC and BITSWAP for Sangam POTS and ISDN targets.
-+//* 03/20/2003 Mallesh Added SHALF token.
-+//* 03/24/2003 F. Mujica Enable hybrid selection
-+//* 03/26/2003 A. Redfern Removed PMEMSAVE_GHS (always = 1).
-+//* 04/08/2003 F. Mujica Renamed HYBRID_SWITCH token to PHY_HYB_ENABLE
-+//* 04/08/2003 J. Bergsagel Turned off PHY_HYB_ENABLE for _debug targets (FPGA board builds)
-+//* 04/09/2003 J. Bergsagel Turned on OLAYDP only for ar0700mp and ar0700db.
-+//* Turned on AOC, BITSWAP, and OAM_EOC for ar0700mp and ar0700db.
-+//* 04/09/2003 J. Bergsagel Corrected name "PHY_HYB_SELECT" to "PHY_HYB_ENABLE"
-+//* 04/15/2003 A. Redfern Turned on ECI_PULSECOM_INTEROP because phase optimization was enabled.
-+//* 05/05/2003 D. Mannering Review Comments - turn on AOC, EXTERNBERT, SHALF, for ar0700mp; amd
-+//* turn on AOC for ar0700db
-+//* 05/11/2003 Prashant S Added DMT_BIS token for AR7 Soft DI work
-+//* 05/13/2003 J. Bergsagel Turned on IMPROVED_STAT_SUPPORT_06_03_00 by default for necessary statistics
-+//* 05/15/2003 J. Bergsagel Turned off CO_PROFILE for diag targets.
-+//* 05/27/2003 U.Dasgupta Added NLNOISEADJSNR_EC token for ISDN - to take care of non-linear noise
-+//* (from ISDN splitter) compensation.
-+//* 06/02/2003 Z. Yang Added PHY_NDIAG_ENABLE token.
-+//* 06/02/2003 Z. Yang Added COMB_LINEDIAG_ENABLE token.
-+//* 06/05/2003 P. Hunt Turned on ATUC_CLEARDOWN_CHANGE token for all targets.
-+//* 06/05/2003 Mallesh Turned on CENTILLIUM_VENDORID_AND_TXRATE_CHNG to enable logging the vendor ID
-+//* for centillium and litespan
-+//* 06/05/2003 U.Dasgupta Turned on SHALF token for ISDN.
-+//* 06/06/2003 U.Dasgupta Turned on G.hs nonstandard field token for ar0700db target.
-+//* 06/12/2003 J. Bergsagel Changed *_debug targets to be for JTAG=1 instead of FPGA targets
-+//* IMPORTANT: For non-JTAG cases, "JTAG" should be undefined.
-+//* Therefore, "JTAG" should not have a default case at the bottom (JTAG 0)
-+//* 06/18/2003 A. Redfern Turned on spectral shaping token for all targets.
-+//* 06/23/2003 J. Bergsagel Turned off GHS_NON_STD_FIELD token for ar0700db until bugs are fixed.
-+//* 06/23/2003 U G Jani Undid the above change since the bug is fixed.
-+//* 06/27/2003 Mallesh Removed all the interop tokens which are no longer required.
-+//* 08/20/2003 J. Bergsagel Added default value for OVHD_PMDTEST_PARA and put default section
-+//* tokens in alphabetical order.
-+//* 10/09/2003 Hanyu Liu Defined token ADSL2_1BIT_TONE to support Rx one bit constellation.
-+//* 10/12/2003 Hanyu Liu Defined token ADSL2_BSWP for bitswap.
-+//* 10/20/2003 Xiaohui Li Added READSL2_ENABLE token.
-+//* 12/01/2003 Seungmok Oh Added TXDF2B_PROFILING token, which is active only for POTS target.
-+//* 12/09/2003 Jack Huang Turned on GHS_NON_STD_FIELD support for AR7 POTS targets
-+//* 12/16/2003 Mustafa T. Added the necessary definitions for diag target.
-+//*****************************************************************************************************
-+//*
-+//* The default flag settings are:
-+//*
-+//* -dATUC=1 -dSTD=0 -dISDN=0 -dTIPCI=0 -dTID=0 -dTII=0 -dAI=0
-+//* -dEVM2=0 -dEU=0 -dSL=0 -dSL_EVM=1 -dGLITE=0
-+//*
-+//* and are set after all the per-suffix options have had a chance to
-+//* set them. Each flag is only set if it has not previously been set, so
-+//* per-suffix settings can override defaults, and command-line defines can
-+//* override per-suffix settings.
-+//*
-+//*****************************************************************************
-+
-+
-+//* ===========================================================================
-+//* Suffix codes
-+//* The command-line can include -dOBJSFX_xxx to get a flag set
-+//* instead of explicitly setting each flag on each CC/ASM command-line.
-+//* and the object suffix will control the settings of "feature" constants.
-+//* ===========================================================================
-+//
-+//* ===========================================================================
-+// Flag settings for new suffixes (in alphabetical order of suffix)
-+// Each suffix has to specify only those flags which differ from the
-+// default settings.
-+//* ===========================================================================
-+// NOTE: Try to keep feature flags in alphabetical order to ease maintenance.
-+//* ===========================================================================
-+//*
-+
-+#define CHIPSET_ID_UNKN '?'
-+#define CHIPSET_ID_AH 'H'
-+#define CHIPSET_ID_AP 'P'
-+#define CHIPSET_ID_AR 'R'
-+#define CHIPSET_ID_ARV 'R'
-+#define CHIPSET_ID_AT 'T'
-+#define CHIPSET_ID_AU 'U'
-+
-+#define CHIPSET_ID2_GENERIC '0'
-+#define CHIPSET_ID2_ARV 'R'
-+
-+ #define DSPDP_IMAGE_ID_STANDARD(code) ( \
-+ STANDARD_is_MULTIMODE(code) ? "M" : \
-+ STANDARD_is_GDMT(code) ? "D" : \
-+ STANDARD_is_GLITE(code) ? "L" : \
-+ STANDARD_is_T1413(code) ? "T" : "_")
-+
-+ #define DSPDP_IMAGE_ID_SERVICE(code) ( \
-+ SERVICE_is_POTS(code) ? "P" : \
-+ SERVICE_is_ISDN_ANNEXB(code) ? "B" : \
-+ SERVICE_is_ISDN_ANNEXC(code) ? "C" : \
-+ SERVICE_is_ISDN_PROP(code) ? "I" : "")
-+
-+// Bit-codes for feature byte in new version.
-+//
-+// 0000 0000
-+// |||| ||||
-+// |||| |||+ -- POTS
-+// |||| ||+---- ISDN_ANNEXB
-+// |||| |+----- ISDN_ANNEXC
-+// |||| +------ ISDN_PROP
-+// |||+--------
-+// ||+--------- GHS
-+// |+---------- GLITE
-+// +----------- T1413
-+//
-+//
-+#define FEATURE_BIT_T1413 0x80
-+#define FEATURE_BIT_GLITE 0x40
-+#define FEATURE_BIT_GHS 0x20
-+#define FEATURE_BIT_ISDN_PROP 0x08
-+#define FEATURE_BIT_ISDN_ANNEXC 0x04
-+#define FEATURE_BIT_ISDN_ANNEXB 0x02
-+#define FEATURE_BIT_POTS 0x01
-+
-+#define STANDARD_BITS_MASK (FEATURE_BIT_T1413 | FEATURE_BIT_GLITE | FEATURE_BIT_GHS)
-+#define STANDARD_BITS_T1413 FEATURE_BIT_T1413
-+#define STANDARD_BITS_GHS FEATURE_BIT_GHS
-+#define STANDARD_BITS_GLITE (FEATURE_BIT_GLITE | FEATURE_BIT_GHS)
-+#define STANDARD_BITS_GDMT (STANDARD_BITS_T1413 | STANDARD_BITS_GHS)
-+#define STANDARD_BITS_MULTIMODE (STANDARD_BITS_T1413 | STANDARD_BITS_GLITE | STANDARD_BITS_GDMT)
-+
-+#define SERVICE_BIT_ISDN_ANNEXB FEATURE_BIT_ISDN_ANNEXB
-+#define SERVICE_BIT_ISDN_ANNEXC FEATURE_BIT_ISDN_ANNEXC
-+#define SERVICE_BIT_ISDN_PROP FEATURE_BIT_ISDN_PROP
-+#define SERVICE_BIT_POTS FEATURE_BIT_POTS
-+
-+//
-+// Debug new-style suffixes
-+//
-+//
-+
-+#if defined(OBJSFX_ar0700db_debugobj)
-+#ifndef OBJSFX_ar0700dbobj
-+#define OBJSFX_ar0700dbobj 1
-+#endif
-+// Here, in alphabetic order, are the feature tokens that
-+// distinguish this suffix from its non-_debug partner:
-+// (All other tokens from the non-_debug partner that are non-conflicting will also be picked up)
-+
-+#ifndef JTAG
-+#define JTAG 1
-+#endif
-+
-+#elif defined(OBJSFX_ar0700mp_debugobj)
-+#ifndef OBJSFX_ar0700mpobj
-+#define OBJSFX_ar0700mpobj 1
-+#endif
-+// Here, in alphabetic order, are the feature tokens that
-+// distinguish this suffix from its non-_debug partner:
-+// (All other tokens from the non-_debug partner that are non-conflicting will also be picked up)
-+
-+#ifndef ADSL2_BSWP
-+#define ADSL2_BSWP 1
-+#endif
-+#ifndef AOC
-+#define AOC 1
-+#endif
-+#ifndef BITSWAP
-+#define BITSWAP 1
-+#endif
-+#ifndef DEBUG_ADSL2
-+#define DEBUG_ADSL2 0
-+#endif
-+#ifndef DEBUG_LOG
-+#define DEBUG_LOG 0
-+#endif
-+#ifndef GHS_NON_STD_FIELD
-+#define GHS_NON_STD_FIELD 1
-+#endif
-+#ifndef JTAG
-+#define JTAG 1
-+#endif
-+#endif // end of the series of "#elif defined" for debug targets
-+
-+
-+//
-+// Standard new-style suffixes for operational and mfgr'ing diag.
-+//
-+
-+#if defined(OBJSFX_ar0700dbobj)
-+#define CHIPSET_AR07 1
-+#define PLATFORM_AR0700 1
-+#define DSPDP_CHIPSET_ID CHIPSET_ID_AR
-+#define DSPDP_CHIPSET_ID2 CHIPSET_ID2_GENERIC
-+#define DSPDP_CHIPSET_GEN 7
-+#define DSPDP_HARDWARE_REV1 '0'
-+#define DSPDP_HARDWARE_REV2 '0'
-+#define DSPDP_FEATURE_CODE (STANDARD_BITS_GDMT|SERVICE_BIT_ISDN_ANNEXB)
-+#ifndef AOC
-+#define AOC 1
-+#endif
-+// ATM_TC_HW and SWTC are mutually exclusive
-+#ifndef ATM_TC_HW
-+#define ATM_TC_HW 1
-+#endif
-+#ifndef SWTC
-+#define SWTC 0
-+#endif
-+#ifndef BITSWAP
-+#define BITSWAP 1
-+#endif
-+#ifndef EXTERNBERT
-+#define EXTERNBERT 0
-+#endif
-+#ifndef GHS_NON_STD_FIELD
-+#define GHS_NON_STD_FIELD 1
-+#endif
-+#ifndef MARGIN_DELTA_RETRAIN
-+#define MARGIN_DELTA_RETRAIN 0
-+#endif
-+#ifndef NLNOISEADJSNR_EC
-+#define NLNOISEADJSNR_EC 1
-+#endif
-+#ifndef OLAYDP
-+#define OLAYDP 1
-+#endif
-+#ifndef SHALF
-+#define SHALF 1
-+#endif
-+
-+
-+#elif defined(OBJSFX_ar0700db_diagobj)
-+#define CHIPSET_AR07 1
-+#define PLATFORM_AR0700 1
-+#define DSPDP_CHIPSET_ID CHIPSET_ID_AR
-+#define DSPDP_CHIPSET_ID2 CHIPSET_ID2_GENERIC
-+#define DSPDP_CHIPSET_GEN 7
-+#define DSPDP_HARDWARE_REV1 '0'
-+#define DSPDP_HARDWARE_REV2 '0'
-+#define DSPDP_FEATURE_CODE (STANDARD_BITS_GDMT|SERVICE_BIT_ISDN_ANNEXB)
-+#ifndef AOC
-+#define AOC 0
-+#endif
-+// ATM_TC_HW and SWTC are mutually exclusive (or both must be off)
-+#ifndef ATM_TC_HW
-+#define ATM_TC_HW 0
-+#endif
-+#ifndef SWTC
-+#define SWTC 0
-+#endif
-+#ifndef BITSWAP
-+#define BITSWAP 0
-+#endif
-+#ifndef CO_PROFILE
-+#define CO_PROFILE 0
-+#endif
-+#ifndef MARGIN_DELTA_RETRAIN
-+#define MARGIN_DELTA_RETRAIN 0
-+#endif
-+#ifndef MFGR_DIAG
-+#define MFGR_DIAG 1
-+#endif
-+#ifndef OAM_EOC
-+#define OAM_EOC 0
-+#endif
-+#ifndef OLAYDP
-+#define OLAYDP 0
-+#endif
-+#ifndef SNR_UPDATE
-+#define SNR_UPDATE 0
-+#endif
-+
-+#elif defined(OBJSFX_ar0700mpobj)
-+#define CHIPSET_AR07 1
-+#define PLATFORM_AR0700 1
-+#define DSPDP_CHIPSET_ID CHIPSET_ID_AR
-+#define DSPDP_CHIPSET_ID2 CHIPSET_ID2_GENERIC
-+#define DSPDP_CHIPSET_GEN 7
-+#define DSPDP_HARDWARE_REV1 '0'
-+#define DSPDP_HARDWARE_REV2 '0'
-+#define DSPDP_FEATURE_CODE (STANDARD_BITS_MULTIMODE|SERVICE_BIT_POTS)
-+#ifndef AOC
-+#define AOC 1
-+#endif
-+// ATM_TC_HW and SWTC are mutually exclusive
-+#ifndef ADSL2_1BIT_TONE
-+#define ADSL2_1BIT_TONE 0
-+#endif
-+#ifndef ADSL2_BSWP
-+#define ADSL2_BSWP 1
-+#endif
-+#ifndef ATM_TC_HW
-+#define ATM_TC_HW 1
-+#endif
-+#ifndef SWTC
-+#define SWTC 0
-+#endif
-+#ifndef BITSWAP
-+#define BITSWAP 1
-+#endif
-+#ifndef EXTERNBERT
-+#define EXTERNBERT 0
-+#endif
-+#ifndef OLAYDP
-+#define OLAYDP 1
-+#endif
-+#ifndef DMT_BIS
-+#define DMT_BIS 1
-+#endif
-+#ifndef SHALF
-+#define SHALF 1
-+#endif
-+#ifndef MEM_STR
-+#define MEM_STR 0
-+#endif
-+#ifndef DS_LOOP_BACK
-+#define DS_LOOP_BACK 0
-+#endif
-+#ifndef LOOP_BACK_DEBUG
-+#define LOOP_BACK_DEBUG 0
-+#endif
-+#ifndef US_LOOP_BACK
-+#define US_LOOP_BACK 0
-+#endif
-+#ifndef OVHD_PMDTEST_PARA
-+#define OVHD_PMDTEST_PARA 0
-+#endif
-+#ifndef DS_RX_CODEWORD
-+#define DS_RX_CODEWORD 1
-+#endif
-+#ifndef READSL2_ENABLE
-+#define READSL2_ENABLE 1
-+#endif
-+#ifndef GHS_NON_STD_FIELD
-+#define GHS_NON_STD_FIELD 1
-+#endif
-+
-+#elif defined(OBJSFX_ar0700mp_diagobj)
-+#define CHIPSET_AR07 1
-+#define PLATFORM_AR0700 1
-+#define DSPDP_CHIPSET_ID CHIPSET_ID_AR
-+#define DSPDP_CHIPSET_ID2 CHIPSET_ID2_GENERIC
-+#define DSPDP_CHIPSET_GEN 7
-+#define DSPDP_HARDWARE_REV1 '0'
-+#define DSPDP_HARDWARE_REV2 '0'
-+#define DSPDP_FEATURE_CODE (STANDARD_BITS_MULTIMODE|SERVICE_BIT_POTS)
-+#ifndef ADSL2_BSWP
-+#define ADSL2_BSWP 0
-+#endif
-+#ifndef AOC
-+#define AOC 0
-+#endif
-+// ATM_TC_HW and SWTC are mutually exclusive (or both must be off)
-+#ifndef ATM_TC_HW
-+#define ATM_TC_HW 0
-+#endif
-+#ifndef SWTC
-+#define SWTC 0
-+#endif
-+#ifndef BITSWAP
-+#define BITSWAP 0
-+#endif
-+#ifndef CO_PROFILE
-+#define CO_PROFILE 0
-+#endif
-+#ifndef DMT_BIS
-+#define DMT_BIS 0
-+#endif
-+#ifndef MARGIN_DELTA_RETRAIN
-+#define MARGIN_DELTA_RETRAIN 0
-+#endif
-+#ifndef MFGR_DIAG
-+#define MFGR_DIAG 1
-+#endif
-+#ifndef OAM_EOC
-+#define OAM_EOC 0
-+#endif
-+#ifndef OLAYDP
-+#define OLAYDP 0
-+#endif
-+#ifndef SNR_UPDATE
-+#define SNR_UPDATE 0
-+#endif
-+#ifndef US_CRC_RETRAIN
-+#define US_CRC_RETRAIN 0
-+#endif
-+#ifndef ADSL2_BSWP
-+#define ADSL2_BSWP 0
-+#endif
-+#ifndef DMT_BIS
-+#define DMT_BIS 0
-+#endif
-+#ifndef DS_RX_CODEWORD
-+#define DS_RX_CODEWORD 0
-+#endif
-+
-+#else
-+#define DSPDP_CHIPSET_ID CHIPSET_ID_UNKN
-+#define DSPDP_CHIPSET_ID2 CHIPSET_ID2_GENERIC
-+#define DSPDP_CHIPSET_GEN 0
-+#define DSPDP_HARDWARE_REV1 '0'
-+#define DSPDP_HARDWARE_REV2 '0'
-+#define DSPDP_FEATURE_CODE 0
-+#endif
-+
-+// For use in checking the code in drivers -- indented to avoid .h->.ah
-+ #define STANDARD_is_T1413(code) (!(((code) & STANDARD_BITS_MASK) ^ STANDARD_BITS_T1413))
-+ #define STANDARD_is_GLITE(code) (!(((code) & STANDARD_BITS_MASK) ^ STANDARD_BITS_GLITE))
-+ #define STANDARD_is_GHS(code) (((code) & STANDARD_BITS_MASK) & STANDARD_BITS_GHS)
-+ #define STANDARD_is_GDMT(code) (!(((code) & STANDARD_BITS_MASK) ^ (STANDARD_BITS_T1413 | STANDARD_BITS_GHS)))
-+ #define STANDARD_is_MULTIMODE(code) (!(((code) & STANDARD_BITS_MASK) ^ (STANDARD_BITS_T1413 | STANDARD_BITS_GLITE | STANDARD_BITS_GDMT)))
-+ #define SERVICE_is_POTS(code) ((code) & SERVICE_BIT_POTS)
-+ #define SERVICE_is_ISDN_ANNEXB(code) ((code) & SERVICE_BIT_ISDN_ANNEXB)
-+ #define SERVICE_is_ISDN_ANNEXC(code) ((code) & SERVICE_BIT_ISDN_ANNEXC)
-+ #define SERVICE_is_ISDN_PROP(code) ((code) & SERVICE_BIT_ISDN_PROP)
-+
-+#define STANDARD_T1413 (!((DSPDP_FEATURE_CODE & STANDARD_BITS_MASK) ^ STANDARD_BITS_T1413))
-+#define STANDARD_GLITE (!((DSPDP_FEATURE_CODE & STANDARD_BITS_MASK) ^ STANDARD_BITS_GLITE))
-+#define STANDARD_GHS ((DSPDP_FEATURE_CODE & STANDARD_BITS_MASK) & STANDARD_BITS_GHS)
-+#define STANDARD_GDMT (!((DSPDP_FEATURE_CODE & STANDARD_BITS_MASK) ^ (STANDARD_BITS_T1413 | STANDARD_BITS_GHS)))
-+#define STANDARD_MULTIMODE (!((DSPDP_FEATURE_CODE & STANDARD_BITS_MASK) ^ (STANDARD_BITS_T1413 | STANDARD_BITS_GLITE | STANDARD_BITS_GDMT)))
-+
-+#define SERVICE_POTS (DSPDP_FEATURE_CODE & SERVICE_BIT_POTS)
-+#define SERVICE_ISDN_ANNEXB (DSPDP_FEATURE_CODE & SERVICE_BIT_ISDN_ANNEXB)
-+#define SERVICE_ISDN_ANNEXC (DSPDP_FEATURE_CODE & SERVICE_BIT_ISDN_ANNEXC)
-+#define SERVICE_ISDN_PROP (DSPDP_FEATURE_CODE & SERVICE_BIT_ISDN_PROP)
-+#define SERVICE_ISDN (SERVICE_ISDN_ANNEXB | SERVICE_ISDN_ANNEXC | SERVICE_ISDN_PROP)
-+
-+
-+//
-+// Backwards compatibility with old tokens
-+//
-+
-+#if (SERVICE_POTS)
-+#ifndef ISDN
-+#define ISDN 0
-+#endif
-+#endif
-+
-+#if (SERVICE_ISDN_ANNEXB | SERVICE_ISDN_PROP)
-+#ifndef ISDN
-+#define ISDN 1
-+#endif
-+#endif
-+
-+
-+//
-+//* ===========================================================================
-+// More Default settings
-+//* ===========================================================================
-+//
-+
-+//
-+// BEGIN Could automatically generate showdefs code
-+//
-+#ifndef AOC
-+#define AOC 1
-+#endif
-+#ifndef ARTT
-+#define ARTT 0
-+#endif
-+#ifndef ATMBERT
-+#define ATMBERT 0
-+#endif
-+// ATM_TC_HW and SWTC are mutually exclusive
-+#ifndef ATM_TC_HW
-+#define ATM_TC_HW 1
-+#endif
-+#if ATM_TC_HW
-+#ifndef ATMBERT_HW
-+#define ATMBERT_HW 1
-+#endif
-+#ifndef SWTC
-+#define SWTC 0
-+#endif
-+#else // else case for #if ATM_TC_HW
-+#ifndef ATMBERT_HW
-+#define ATMBERT_HW 0
-+#endif
-+#ifndef SWTC
-+#define SWTC 1
-+#endif
-+#endif // end of #if ATM_TC_HW
-+#ifndef ATM_TC_PATH1_ON
-+#define ATM_TC_PATH1_ON 0
-+#endif
-+#ifndef BITSWAP
-+#define BITSWAP 1
-+#endif
-+#ifndef COMB_LINEDIAG_ENABLE
-+#define COMB_LINEDIAG_ENABLE 0
-+#endif
-+#ifndef CODEC_EMU
-+#define CODEC_EMU 0
-+#endif
-+#ifndef CO_PROFILE
-+#define CO_PROFILE 1
-+#endif
-+#ifndef DDC
-+#define DDC 0
-+#endif
-+#ifndef DEBUG_ADSL2
-+#define DEBUG_ADSL2 0
-+#endif
-+#ifndef DEBUG_DUMP
-+#define DEBUG_DUMP 0
-+#endif
-+#ifndef DEBUG_LOG
-+#define DEBUG_LOG 0
-+#endif
-+#ifndef DEV_DEBUG
-+#define DEV_DEBUG 0
-+#endif
-+#ifndef DS_LOOP_BACK
-+#define DS_LOOP_BACK 0
-+#endif
-+#ifndef DS_RX_CODEWORD
-+#define DS_RX_CODEWORD 1
-+#endif
-+#ifndef LOOP_BACK_DEBUG
-+#define LOOP_BACK_DEBUG 0
-+#endif
-+#ifndef US_LOOP_BACK
-+#define US_LOOP_BACK 0
-+#endif
-+#ifndef DPLL_MODE
-+#define DPLL_MODE 0
-+#endif
-+#ifndef DSPBIOSII
-+#define DSPBIOSII 0
-+#endif
-+#ifndef DMT_BIS
-+#define DMT_BIS 1
-+#endif
-+#ifndef ADSL2_1BIT_TONE
-+#define ADSL2_1BIT_TONE 0
-+#endif
-+#ifndef ADSL2_BSWP
-+#define ADSL2_BSWP 1
-+#endif
-+#ifndef MEM_STR
-+#define MEM_STR 0
-+#endif
-+#ifndef DS_PWR_CUTBACK
-+#define DS_PWR_CUTBACK 0
-+#endif
-+#ifndef DUAL_TEQ
-+#define DUAL_TEQ 1
-+#endif
-+#ifndef EXTERNBERT
-+#define EXTERNBERT 0
-+#endif
-+#ifndef FPGA
-+#define FPGA 0
-+#endif
-+#ifndef INBAND
-+#define INBAND 0
-+#endif
-+#ifndef ISDN
-+#define ISDN 0
-+#endif
-+#ifndef ISDN_DEBUG
-+#define ISDN_DEBUG 0
-+#endif
-+#ifndef LINE_DIAG
-+#define LINE_DIAG 1
-+#endif
-+#ifndef LOOP_BACK_DEBUG
-+#define LOOP_BACK_DEBUG 0
-+#endif
-+#ifndef MANUFACTURING_TESTS
-+#define MANUFACTURING_TESTS 0
-+#endif
-+#ifndef MARGIN_DELTA_RETRAIN
-+#define MARGIN_DELTA_RETRAIN 1
-+#endif
-+#ifndef MEM_STR
-+#define MEM_STR 0
-+#endif
-+#ifndef MFGR_DIAG
-+#define MFGR_DIAG 0
-+#endif
-+#ifndef NLNOISEADJSNR
-+#define NLNOISEADJSNR 0
-+#endif
-+#ifndef NLNOISEADJSNR_EC
-+#define NLNOISEADJSNR_EC 0
-+#endif
-+#ifndef NTR_MODE
-+#define NTR_MODE 0
-+#endif
-+#ifndef OAM_EOC
-+#define OAM_EOC 1
-+#endif
-+#ifndef OLAYDP
-+#define OLAYDP 0
-+#endif
-+#ifndef OLAYDP_EMIF
-+#define OLAYDP_EMIF 0
-+#endif
-+#ifndef OLAYDP_2STEP
-+#define OLAYDP_2STEP 0
-+#endif
-+#ifndef OLAYDP_PCI
-+#define OLAYDP_PCI 0
-+#endif
-+#ifndef OUTBAND
-+#define OUTBAND 0
-+#endif
-+#ifndef OVHD_PMDTEST_PARA
-+#define OVHD_PMDTEST_PARA 0
-+#endif
-+#ifndef PERTONE_EQ
-+#define PERTONE_EQ 0
-+#endif
-+#ifndef PHY_EC_ENABLE
-+#define PHY_EC_ENABLE 1
-+#endif
-+#ifndef PHY_HYB_ENABLE
-+#define PHY_HYB_ENABLE 1
-+#endif
-+#ifndef PHY_NDIAG_ENABLE
-+#define PHY_NDIAG_ENABLE 0
-+#endif
-+#ifndef PHY_PATH_ENABLE
-+#define PHY_PATH_ENABLE 1
-+#endif
-+#ifndef PHY_TDW_ENABLE
-+#define PHY_TDW_ENABLE 0
-+#endif
-+#ifndef TC_ATM_PCIMASTER
-+#define TC_ATM_PCIMASTER 0
-+#endif
-+#ifndef SEPARATE_TX_RX_BUFFERS
-+#define SEPARATE_TX_RX_BUFFERS 0
-+#endif
-+#ifndef SHALF
-+#define SHALF 0
-+#endif
-+#ifndef SPECTRAL_SHAPING
-+#define SPECTRAL_SHAPING 1
-+#endif
-+#ifndef SNR_UPDATE
-+#define SNR_UPDATE 1
-+#endif
-+#ifndef TC_DEBUG
-+#define TC_DEBUG 0
-+#endif
-+#ifndef TC_LOOPBACK
-+#define TC_LOOPBACK 0
-+#endif
-+#ifndef TESTMODE
-+#define TESTMODE 0
-+#endif
-+#ifndef TRELLIS
-+#define TRELLIS 1
-+#endif
-+#ifndef TXDF2B_PROFILING
-+#if (SERVICE_POTS & (!MFGR_DIAG) & (CO_PROFILE))
-+#define TXDF2B_PROFILING 1
-+#else
-+#define TXDF2B_PROFILING 0
-+#endif
-+#endif
-+#ifndef US_CRC_RETRAIN
-+#define US_CRC_RETRAIN 1
-+#endif
-+#ifndef US_LOOP_BACK
-+#define US_LOOP_BACK 0
-+#endif
-+#ifndef USB
-+#define USB 0
-+#endif
-+#ifndef READSL2_ENABLE
-+#define READSL2_ENABLE 1
-+#endif
-+
-+// Interop tokens
-+#ifndef GHS_NON_STD_FIELD
-+#define GHS_NON_STD_FIELD 0
-+#endif
-+#ifndef LUCENT_ANYMEDIA_ENIATT_INTEROP
-+#define LUCENT_ANYMEDIA_ENIATT_INTEROP 0
-+#endif
-+
-+
-+//
-+// END Could automatically generate showdefs code
-+//
-+#if DSPDP_FEATURE_CODE
-+#else
-+// Unrecognized_suffix____check_spelling
-+#endif
-+//
-+// LNK_CMD is set when running CPP to generate lnk_cpe.cmd file
-+// -- the linker is not happy when it sees C code show up in the
-+// result!
-+//
-+#ifndef LNK_CMD
-+extern int compile_happy; // Keep the compiler from complaining about an empty file
-+#endif
-+
-+#endif
-+
-diff -urN linux.old/drivers/atm/sangam_atm/env_def_typedefs.h linux.dev/drivers/atm/sangam_atm/env_def_typedefs.h
---- linux.old/drivers/atm/sangam_atm/env_def_typedefs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/env_def_typedefs.h 2005-08-23 04:46:50.104842632 +0200
-@@ -0,0 +1,228 @@
-+#ifndef __ENV_DEF_TYPEDEFS_H__
-+#define __ENV_DEF_TYPEDEFS_H__ 1
-+
-+/*******************************************************************************
-+* FILE PURPOSE: Define data types for C and TMS320C6x C compilers
-+********************************************************************************
-+*
-+* FILE NAME: dpsys_typedefs.h
-+*
-+* DESCRIPTION:
-+* This file contains the main typedefs that we need.
-+*
-+* HISTORY:
-+*
-+* 03/11/97 Bob Lee Created
-+* 03/13/97 Chishtie
-+* 03/14/97 Bob Lee Format change to meet "Engineering Model
-+* - System Architucture Specification"
-+* Rev AP3. Jan. 29, 1997
-+* 07/21/00 Barnett Moved many common typedefs from
-+* host i/f header file to here.
-+* 03/30/01 Barnett Mod's per driver team feedback.
-+* Some tokens cannot be def'ed
-+* if _WINDEF_ is def'ed.
-+* 04/05/01 Barnett Added DSPDP_ prefix to tokens that originate
-+* in the public interface.
-+* 06/01/01 J. Bergsagel Modified to add standard typedefs
-+* 07/25/01 J. Bergsagel Changed name from typedefs.h to dpsys_typedefs.h
-+* 07/30/01 J. Bergsagel Moved typedefs that were conflicting with Windows
-+* driver software to the "#ifndef _WINDEF_" section.
-+* 08/09/01 S. Yim Moved FALSE/TRUE definitions from ctl_interface_u.h
-+* (conflict with BIOS/std.h)
-+* 09/03/01 S. Yim Do not include typedef char and float if _STD defined
-+* (conflict with BIOS/std.h)
-+* 01/21/03 MCB Implemented Ax7 UNIT-MODULE modular software framework.
-+* 03/20/03 Mallesh Defined size of basic variables
-+* 03/27/03 F. Mujica Added SINT40 and UINT40 definitions.
-+*
-+* (C) Copyright Texas Instruments Inc. 1997-2001. All rights reserved.
-+*******************************************************************************/
-+
-+// Common type definitions
-+
-+// Basic constants needed everywhere
-+#ifndef STD_
-+#define FALSE 0
-+#define TRUE 1
-+#endif
-+
-+// Read-Write Data Types
-+typedef signed char SINT8; // Signed 8-bit integer (7-bit magnitude)
-+typedef unsigned char UINT8; // Unsigned 8-bit integer
-+typedef signed short SINT16; // Signed 16-bit integer (15-bit magnitude)
-+typedef unsigned short UINT16; // Unsigned 16-bit integer
-+typedef signed int SINT32; // Signed 32-bit integer (31-bit magnitude)
-+typedef unsigned int UINT32; // Unsigned 32-bit integer
-+typedef long signed int SINT40; // Long signed 40-bit integer
-+typedef long unsigned int UINT40; // Long unsigned 40-bit integer
-+
-+// All pointers are 32 bits long
-+typedef SINT8 *PSINT8; // Pointer to SINT8
-+typedef UINT8 *PUINT8; // Pointer to UINT8
-+typedef SINT16 *PSINT16; // Pointer to SINT16
-+typedef UINT16 *PUINT16; // Pointer to UINT16
-+typedef SINT32 *PSINT32; // Pointer to SINT32
-+typedef UINT32 *PUINT32; // Pointer to UINT32
-+
-+#define SIZEOF_SINT8 1
-+#define SIZEOF_UINT8 1
-+#define SIZEOF_SINT16 2
-+#define SIZEOF_UINT16 2
-+#define SIZEOF_SINT32 4
-+#define SIZEOF_UINT32 4
-+#define SIZEOF_SINT40 8
-+#define SIZEOF_UINT40 8
-+
-+// Size of Read-Write Data Types - in bytes
-+#define SIZEOF_char 1
-+#define SIZEOF_Int8 1
-+#define SIZEOF_UChar 1
-+#define SIZEOF_UInt8 1
-+#define SIZEOF_Float 4
-+#define SIZEOF_Double 8
-+#define SIZEOF_byte 1
-+
-+// Read-Only Data Types - should be only used for ROM code
-+typedef const char CharRom; // 8 bit signed character
-+typedef const signed char Int8Rom; // 8 bit signed integer
-+typedef const unsigned char UCharRom; // 8 bit unsigned character
-+typedef const unsigned char UInt8Rom; // 8 bit unsigned integer
-+typedef const float FloatRom; // IEEE 32-bit
-+typedef const double DoubleRom; // IEEE 64-bit
-+
-+#ifndef _WINDEF_
-+
-+// Read-Write Data Types
-+typedef signed char Int8; // 8 bit signed integer
-+typedef unsigned char UChar; // 8 bit unsigned character
-+typedef unsigned char UInt8; // 8 bit unsigned integer
-+#ifndef STD_
-+typedef char Char; // 8 bit signed character
-+typedef float Float; // IEEE 32-bit
-+#endif
-+typedef double Double; // IEEE 64-bit
-+typedef signed char byte; // 8 bit signed integer
-+
-+
-+// These typedefs collide with those in Win2k DDK inc\WINDEF.H
-+
-+// common type definition
-+typedef unsigned char BYTE; // 8-bit
-+typedef signed short SHORT; // 16-bit signed
-+typedef unsigned short WORD; // 16-bit
-+typedef unsigned int DWORD; // 32-bit, TI DSP has 40 bit longs
-+
-+// All pointers are 32 bits long
-+typedef BYTE *PBYTE; // pointer to 8 bit data
-+typedef unsigned char *PCHAR; // pointer to 8 bit data
-+typedef SHORT *PSHORT; // pointer to 16 bit data
-+typedef WORD *PWORD; // pointer to 16 bit data
-+typedef DWORD *PDWORD; // pointer to 32 bit data
-+
-+#endif // #ifndef _WINDEF_
-+
-+
-+#define SIZEOF_BYTE 1
-+#define SIZEOF_SHORT 2
-+#define SIZEOF_WORD 2
-+#define SIZEOF_DWORD 4
-+#define SIZEOF_PCHAR 4
-+#define SIZEOF_PWORD 4
-+#define SIZEOF_PDWORD 4
-+
-+// Size of Read-Only Data Types - in bytes
-+#define SIZEOF_CharRom 1
-+#define SIZEOF_Int8Rom 1
-+#define SIZEOF_UCharRom 1
-+#define SIZEOF_UInt8Rom 1
-+#define SIZEOF_FloatRom 4
-+#define SIZEOF_DoubleRom 8
-+
-+#define SIZEOF_complex_byte (2*SIZEOF_byte)
-+#define SIZEOF_PTR_complex_byte 4
-+typedef struct {
-+ byte re;
-+ byte im;
-+} complex_byte, *PTR_complex_byte;
-+
-+#define SIZEOF_complex_short 4
-+#define SIZEOF_PTR_complex_short 4
-+typedef struct {
-+ short re;
-+ short im;
-+} complex_short, *PTR_complex_short;
-+
-+#define SIZEOF_complex_int 8
-+#define SIZEOF_PTR_complex_int 4
-+typedef struct {
-+ int re;
-+ int im;
-+} complex_int, *PTR_complex_int;
-+
-+typedef struct {
-+ int high;
-+ unsigned int low;
-+} int64;
-+
-+typedef struct {
-+ int64 real;
-+ int64 imag;
-+} complex_int64;
-+
-+#define SIZEOF_PVOID 4
-+typedef void *PVOID; // pointer to void
-+
-+//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-+
-+#if defined(_TMS320C6X) // TMS320C6xx type definitions
-+
-+// Read-Write Data Types
-+typedef short Int16; // 16 bit signed integer
-+typedef unsigned short UInt16; // 16 bit unsigned integer
-+typedef int Int32; // 32 bit signed integer
-+typedef unsigned int UInt32; // 32 bit unsigned signed integer
-+typedef long Long40; // 40 bit signed integer
-+typedef unsigned long ULong40; // 40 bit unsigned signed integer
-+
-+// Size of Read-Write Data Types - in bytes
-+#define SIZEOF_Int16 2
-+#define SIZEOF_UInt16 2
-+#define SIZEOF_Int32 4
-+#define SIZEOF_UInt32 4
-+#define SIZEOF_Long40 5
-+#define SIZEOF_ULong40 5
-+
-+// Read-Only Data Types - should be only used for ROM code
-+typedef const short Int16Rom; // 16 bit signed integer
-+typedef const unsigned short UInt16Rom; // 16 bit unsigned integer
-+typedef const int Int32Rom; // 32 bit signed integer
-+typedef const unsigned int UInt32Rom; // 32 bit unsigned signed integer
-+typedef const long Long40Rom; // 40 bit signed integer
-+typedef const unsigned long ULong40Rom; // 40 bit unsigned signed integer
-+
-+// Size of Read-Only Data Types - in bytes
-+#define SIZEOF_Int16Rom 2
-+#define SIZEOF_UInt16Rom 2
-+#define SIZEOF_Int32Rom 4
-+#define SIZEOF_UInt32Rom 4
-+#define SIZEOF_Long40Rom 5
-+#define SIZEOF_ULong40Rom 5
-+
-+#else // 32 bits PC Host type definitions
-+
-+// Read-Write Data Types
-+typedef short Int16; // 16 bit signed integer
-+typedef unsigned short UInt16; // 16 bit unsigned integer
-+typedef int Int32; // 32 bit signed integer
-+typedef unsigned int UInt32; // 32 bit unsigned integer
-+
-+// Read-Only Data Types - should be only used for ROM code
-+typedef const short Int16Rom; // 16 bit signed integer
-+typedef const unsigned short UInt16Rom; // 16 bit unsigned integer
-+typedef const int Int32Rom; // 32 bit signed integer
-+typedef const unsigned int UInt32Rom; // 32 bit unsigned integer
-+
-+#endif
-+
-+#endif
-diff -urN linux.old/drivers/atm/sangam_atm/Makefile linux.dev/drivers/atm/sangam_atm/Makefile
---- linux.old/drivers/atm/sangam_atm/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/Makefile 2005-08-23 04:46:50.104842632 +0200
-@@ -0,0 +1,35 @@
-+# File: drivers/net/avalanche_cpmac/Makefile
-+#
-+# Makefile for the Linux network (CPMAC) device drivers.
-+#
-+
-+
-+O_TARGET := tiatm.o
-+obj-$(CONFIG_MIPS_SANGAM_ATM) += tiatm.o
-+list-multi := tiatm.o
-+
-+tiatm-objs := tn7atm.o tn7dsl.o tn7sar.o dsl_hal_api.o dsl_hal_support.o cpsar.o aal5sar.o
-+
-+EXTRA_CFLAGS += -DEL -I$(TOPDIR)/drivers/atm/sangam_atm -DPOST_SILICON -DCOMMON_NSP -DCONFIG_LED_MODULE -DDEREGISTER_LED -DNO_ACT
-+
-+ifeq ($(ANNEX),B)
-+EXTRA_CFLAGS += -DANNEX_B -DB
-+else
-+ifeq ($(ANNEX),C)
-+EXTRA_CFLAGS += -DANNEX_C -DC
-+else
-+EXTRA_CFLAGS += -DANNEX_A -DP
-+endif
-+endif
-+
-+
-+include $(TOPDIR)/Rules.make
-+
-+tiatm.o: $(tiatm-objs)
-+ $(LD) -r -o $@ $(tiatm-objs)
-+
-+#avalanche_cpmac.o: $(avalanche_cpmac-objs)
-+# $(LD) -r -o $@ $(avalanche_cpmac-objs)
-+
-+clean:
-+ rm -f core *.o *.a *.s
-diff -urN linux.old/drivers/atm/sangam_atm/queue.h linux.dev/drivers/atm/sangam_atm/queue.h
---- linux.old/drivers/atm/sangam_atm/queue.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/queue.h 2005-08-23 04:46:50.104842632 +0200
-@@ -0,0 +1,167 @@
-+
-+#if !defined( __QUEUE_H__ )
-+#define __QUEUE_H__
-+
-+typedef spinlock_t OS_SPIN_LOCK;
-+#define osFreeSpinLock(pLock) while(0)
-+void osAcquireSpinLock(OS_SPIN_LOCK *pLock);
-+void osReleaseSpinLock(OS_SPIN_LOCK *pLock);
-+void osAllocateSpinLock(OS_SPIN_LOCK *pLock);
-+
-+//#define osAcquireSpinLock(pLock) spin_lock(pLock)
-+//#define osReleaseSpinLock(pLock) spin_unlock(pLock)
-+//#define osAllocateSpinLock(pLock) spin_lock_init(pLock)
-+
-+
-+typedef struct _TI_LIST_ENTRY {
-+ struct _TI_LIST_ENTRY *Flink;
-+ struct _TI_LIST_ENTRY *Blink;
-+} TI_LIST_ENTRY, *PTI_LIST_ENTRY, TQE, *PTQE;
-+
-+typedef struct _TIATM_LIST_ENTRY
-+{
-+ TI_LIST_ENTRY Link;
-+} TIATM_LIST_ENTRY, *PTIATM_LIST_ENTRY;
-+
-+//-------------------------------------------------------------------------
-+// QueueInitList -- Macro which will initialize a queue to NULL.
-+//-------------------------------------------------------------------------
-+#define QueueInitList(_L) (_L)->Link.Flink = (_L)->Link.Blink = (PTI_LIST_ENTRY)0;
-+
-+//-------------------------------------------------------------------------
-+// QueueEmpty -- Macro which checks to see if a queue is empty.
-+//-------------------------------------------------------------------------
-+#define QueueEmpty(_L) (QueueGetHead((_L)) == (PTIATM_LIST_ENTRY)0)
-+
-+//-------------------------------------------------------------------------
-+// QueueGetHead -- Macro which returns the head of the queue, but does not
-+// remove the head from the queue.
-+//-------------------------------------------------------------------------
-+#define QueueGetHead(_L) ((PTIATM_LIST_ENTRY)((_L)->Link.Flink))
-+
-+#define QueueGetNext(Elem) ((PTIATM_LIST_ENTRY)((Elem)->Link.Flink))
-+
-+//-------------------------------------------------------------------------
-+// QueuePushHead -- Macro which puts an element at the head of the queue.
-+//-------------------------------------------------------------------------
-+#define QueuePushHead(_L,_E) \
-+ if (!((_E)->Link.Flink = (_L)->Link.Flink)) \
-+ { \
-+ (_L)->Link.Blink = (PTI_LIST_ENTRY)(_E); \
-+ } \
-+(_L)->Link.Flink = (PTI_LIST_ENTRY)(_E);
-+
-+//-------------------------------------------------------------------------
-+// QueueRemoveHead -- Macro which removes the head of the head of queue.
-+//-------------------------------------------------------------------------
-+#define QueueRemoveHead(_L) \
-+{ \
-+ PTIATM_LIST_ENTRY ListElem; \
-+ if (ListElem = (PTIATM_LIST_ENTRY)(_L)->Link.Flink) \
-+ { \
-+ if(!((_L)->Link.Flink = ListElem->Link.Flink)) \
-+ (_L)->Link.Blink = (PTI_LIST_ENTRY) 0; \
-+ } \
-+}
-+
-+//-------------------------------------------------------------------------
-+// QueuePutTail -- Macro which puts an element at the tail (end) of the queue.
-+//-------------------------------------------------------------------------
-+#define QueuePutTail(_L,_E) \
-+{ \
-+ if ((_L)->Link.Blink) \
-+ { \
-+ ((PTIATM_LIST_ENTRY)(_L)->Link.Blink)->Link.Flink = (PTI_LIST_ENTRY)(_E); \
-+ (_L)->Link.Blink = (PTI_LIST_ENTRY)(_E); \
-+ } \
-+ else \
-+ { \
-+ (_L)->Link.Flink = \
-+ (_L)->Link.Blink = (PTI_LIST_ENTRY)(_E); \
-+ } \
-+ (_E)->Link.Flink = (PTI_LIST_ENTRY)0; \
-+}
-+
-+//-------------------------------------------------------------------------
-+// QueuePutTailWithLock -- Macro which puts an element at the tail (end) of
-+// the queue, using spin lock.
-+//-------------------------------------------------------------------------
-+#define QueuePutTailWithLock(_L,_E, pLock) \
-+{ \
-+ osAcquireSpinLock(pLock); \
-+ if ((_L)->Link.Blink) \
-+ { \
-+ ((PTIATM_LIST_ENTRY)(_L)->Link.Blink)->Link.Flink = (PTI_LIST_ENTRY)(_E); \
-+ (_L)->Link.Blink = (PTI_LIST_ENTRY)(_E); \
-+ } \
-+ else \
-+ { \
-+ (_L)->Link.Flink = \
-+ (_L)->Link.Blink = (PTI_LIST_ENTRY)(_E); \
-+ } \
-+ (_E)->Link.Flink = (PTI_LIST_ENTRY)0; \
-+ osReleaseSpinLock(pLock); \
-+}
-+
-+//-------------------------------------------------------------------------
-+// QueueGetTail -- Macro which returns the tail of the queue, but does not
-+// remove the tail from the queue.
-+//-------------------------------------------------------------------------
-+#define QueueGetTail(_L) ((PTIATM_LIST_ENTRY)((_L)->Link.Blink))
-+
-+//-------------------------------------------------------------------------
-+// QueuePopHead -- Macro which will pop the head off of a queue (list), and
-+// return it (this differs only from queueremovehead only in
-+// the 1st line)
-+//-------------------------------------------------------------------------
-+#define QueuePopHead(_L) \
-+(PTIATM_LIST_ENTRY) (_L)->Link.Flink; QueueRemoveHead(_L);
-+
-+#define QueueRemoveTail(_L) \
-+{ \
-+ PTIATM_LIST_ENTRY ListElem; \
-+ ListElem = (PTIATM_LIST_ENTRY)(_L)->Link.Flink; \
-+ if(ListElem == (PTIATM_LIST_ENTRY)(_L)->Link.Blink) \
-+ { \
-+ (_L)->Link.Flink = (_L)->Link.Blink = (PTI_LIST_ENTRY) 0; \
-+ } \
-+ else \
-+ { \
-+ while(ListElem->Link.Flink != (PTI_LIST_ENTRY)(_L)->Link.Blink) \
-+ { \
-+ ListElem = (PTIATM_LIST_ENTRY)ListElem->Link.Flink; \
-+ } \
-+ (_L)->Link.Blink = (PTI_LIST_ENTRY) ListElem; \
-+ ListElem->Link.Flink = (PTI_LIST_ENTRY)0; \
-+ } \
-+}
-+
-+#define QueueRemoveItem(_L, Elem) \
-+{ \
-+ PTIATM_LIST_ENTRY ListElem; \
-+ ListElem = (PTIATM_LIST_ENTRY)(_L)->Link.Flink; \
-+ if(ListElem == Elem) \
-+ { \
-+ QueueRemoveHead(_L); \
-+ } \
-+ else \
-+ { \
-+ while(ListElem) \
-+ { \
-+ if(Elem == (PTIATM_LIST_ENTRY)ListElem->Link.Flink) \
-+ { \
-+ ListElem->Link.Flink = ((PTIATM_LIST_ENTRY)Elem)->Link.Flink; \
-+ if(Elem == (PTIATM_LIST_ENTRY)(_L)->Link.Blink) \
-+ (_L)->Link.Blink = (PTI_LIST_ENTRY) 0; \
-+ break; \
-+ } \
-+ ListElem = (PTIATM_LIST_ENTRY)ListElem->Link.Flink; \
-+ }\
-+ } \
-+ ((PTIATM_LIST_ENTRY)Elem)->Link.Flink = (PTI_LIST_ENTRY) 0; \
-+}
-+
-+#define QueuePopTail(_L) \
-+((PTIATM_LIST_ENTRY)((_L)->Link.Blink)); QueueRemoveTail(_L);
-+
-+#endif
-diff -urN linux.old/drivers/atm/sangam_atm/release.txt linux.dev/drivers/atm/sangam_atm/release.txt
---- linux.old/drivers/atm/sangam_atm/release.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/release.txt 2005-08-23 04:46:50.104842632 +0200
-@@ -0,0 +1,118 @@
-+This is release notes for AR7 Linux ATM driver.
-+
-+version 04.02.04.00
-+-------------------
-+
-+1. Corrected the conditional logic from logical AND to logical OR in the case
-+ of check for DSL line down condition. This is to fix PPPoA crashing
-+ problem when DSL line is unplugged.
-+
-+version 04.02.03.00
-+-------------------
-+1. Changed overlay page to static allocation.
-+2. Added flag to stop TX during channel closing.
-+3. Changed DMA memory allocation back to "GFP_ATOMIC" flag.
-+
-+version 04.02.02.00
-+-------------------
-+1. Changed DMA memory allocation from "GFP_ATOMIC" to "GFP_KERNEL" flag.
-+2. Added "DoMask" setting for VBR channel setup.
-+
-+version 04.02.01.01
-+-------------------
-+1. Modified priority check scheme per SPTC request.
-+
-+Version 04.02.01.00
-+-------------------
-+1. Add check to skb->priority to place packets to either normal or priority queue.
-+2. Add spin lock to increment and decrement of queued buffer number.
-+
-+Version 04.02.00.00
-+-------------------
-+Features:
-+1. Add MBS and CDVT QoS support for ATM driver.
-+2. Add "stop/start queue" for ToS application.
-+3. Add Showtime margin retrain based on EOC message.
-+4. Add EOC vendor ID customalization logic for Annex B.
-+5. Supports D3 datapump.
-+
-+Version 04.01.00.00
-+-------------------
-+Re-release of 04.00.07.00 for D1.1 datapump.
-+
-+Version 04.00.07.00
-+-------------------
-+Features:
-+1. Add marging retrain capability by setting following Adam2 Env.
-+ setenv enable_margin_retrain 1
-+ setenv margin_threshold xx, xx is in half db, i.e., 10 means 5db.
-+
-+Bugfixs:
-+1. New PDSP firmware that fix the F5 OAM cell loopback probelm in Cisco DSLAM.
-+
-+Version 04.00.06.00
-+-------------------
-+1. ATM interrupt pacing is defauted to 2 interrupts/s.
-+2. Rx Service MAX changed ftom 16 to 8.
-+
-+Version 04.00.05.00
-+-------------------
-+Features:
-+1. Add Adam2 env to disable the TurboDSL by entering "setenv TurboDSL 0".
-+2. Add ability to set interrupt pacing for ATM driver.
-+
-+Bugfixs:
-+1. Fixed the RFC2684 and CLIP problems for Cisco router.
-+2. Fixed LED blinking problem when DSL cable is unplugged.
-+3. Fixed problem that "selected mode" is not updated.
-+
-+Version 04.00.04.00
-+-------------------
-+Features:
-+1. Added feature so OAM F5 ping will not require a corresponding PVC channel to
-+ be setup.
-+2. Added timeout value for F5 OAM ping. The new command are "exxxpyyycdzzzt" for
-+ end-to-end and "sxxxpyyycdzzzt" for segment. "zzz" is timeout value in milli-second.
-+3. Added proc entry "avsar_pvc_table" to record received VPIs and VCIs. The format is
-+ vpi,vci
-+ seperated by new line. To search for PVCs, an application can do the following.
-+ i) Send a (or several) F5 OAM cell on a VPI/VPI pairs with command
-+ echo exxxpyyycd2t > /proc/sys/dev/dslmod
-+ ii) Wait >2ms or poll proc entry /proc/avalanche/avsar_oam_ping until the result
-+ indicates a failure. (It will be failed all the time with 2ms timeout.)
-+ iii) Repeat above two steps for new VPI/VCI pairs.
-+ iv) Check proc entry /proc/avalanche/avsar_pvc_table any time for PVCs that responded.
-+
-+Version 04.00.03.00
-+-------------------
-+Bug Fixs:
-+1. Fixed bug that caused crash when phone cable is unplugged.
-+2. Fixed LED operation for "flexible LEDs".
-+
-+Features:
-+1. Added the proc entry "avsar_oam_ping" to signal oam ping result.
-+ 0 - failed; 1 - success; 2 - in progress.
-+2. Added oam ping timeout env variable. The timeout can be specified by
-+ adding Adam2 env "oam_lb_timeout". The value is in millisecond.
-+
-+Version 04.00.02.00
-+-------------------
-+1. The driver uses hardware queue for Turbo DSL.
-+2. Added new modem statistics listed below:
-+ US and DS TX powers, atuc Vendor ID and revision, training mode selected,
-+ Hybrid Selected, and etc.
-+
-+Version 04.00.01.00
-+-------------------
-+
-+1. This driver release contains all the features that exists in AR5 Linux ATM
-+ 3.1 driver.
-+
-+2. F4 OAM generation is added.
-+
-+3. Software queuing is used for TURBO DSL.
-+
-+4. Porting guide "is created. Please look into that document for detailed
-+ information.
-+
-+
-diff -urN linux.old/drivers/atm/sangam_atm/syssw_version.h linux.dev/drivers/atm/sangam_atm/syssw_version.h
---- linux.old/drivers/atm/sangam_atm/syssw_version.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/syssw_version.h 2005-08-23 04:46:50.105842480 +0200
-@@ -0,0 +1,94 @@
-+#ifndef __SYSSW_VERSION_H__
-+#define __SYSSW_VERSION_H__ 1
-+
-+/*******************************************************************************
-+* FILE PURPOSE: DSL Driver API functions for Sangam
-+*
-+********************************************************************************
-+* FILE NAME: dsl_hal_basicapi.c
-+*
-+* DESCRIPTION:
-+* Contains basic DSL HAL APIs for Sangam
-+*
-+* (C) Copyright 2003-04, Texas Instruments, Inc.
-+* History
-+* Date Version Notes
-+* 14May03 0.00.00 RamP Original Version Created
-+* 14May03 0.00.01 RamP Initial Rev numbers inserted
-+* 14May03 0.00.02 RamP Bumped version numbers for Dsl Hal
-+* & dhalapp for alpha plus
-+* 19May03 0.00.03 MCB Bumped dslhal version number
-+* because of dependant changes
-+* wrt. linux-nsp atm drivers.
-+* 22May03 0.00.04 RamP Bumped dslhal & dhalapp buildnum
-+* for inner/outer pair & DGASP code
-+* 06Jun03 0.00.05 RamP Bumped up buildnum for LED, STM,
-+* interrupt processing, statistics
-+* and other pre-beta features
-+* 09Jun03 0.00.06 JEB Fixed error in DHALAPP bugfix/buildnum
-+* 09Jun03 0.00.07 RamP Bumped up buildnum for incremental
-+* changes to apis, statistics, memory
-+* fixes, parameter configurations
-+* 11Jun03 0.00.08 RamP Bumped up buildnum for Co profile
-+* free memory fix
-+* 12Jun03 0.00.09 JEB Bumped version numbers for AR7 1.00 Beta
-+* 02Jul03 0.00.10 ZT Bumped HAL version for overlay page
-+* 18Jul03 0.00.11 RamP Bumped HAL version for analog diags
-+* 22Jul03 0.00.12 JEB Bumped DHALAPP buildnum for analog diags
-+* 31Jul03 0.00.13 RamP Bumped HAL version for engr. drop
-+* 04Aug03 0.00.14 JEB Bumped HAL version buildnum for CHECKPOINT65 changes
-+* Bumped LINUX version buildnum for CHECKPOINT65 changes
-+* 06Aug03 0.00.15 MCB Bumped all version numbers in prep for AR7 1.0 R2 release for POTS.
-+* 13Aug03 0.00.16 MCB Set rev id's for D3/R1.1 (ADSL2).
-+* 21Aug03 0.00.17 JEB Bumped up build numbers for merge of code additions from D1
-+* 26Sep03 0.00.18 JEB Set rev id's for another D3/R1 (ADSL2).
-+* 14Oct03 0.00.19 JEB Bumped Linux minor number and reset bugfix number for release.
-+* Bumped build numbers on DSLHAL and DHALAPP for this checkpoint.
-+* 14Oct03 0.00.20 JEB Bumped build numbers on DSLHAL and DHALAPP for CHECKPOINT15.
-+* 21Oct03 0.00.21 JEB Bumped build number on DSLHAL for CHECKPOINT16.
-+* 22Oct03 0.00.22 MCB Bumped all version numbers in support of D3R1 release.
-+* 27Oct03 0.00.23 JEB Bumped build numbers on DSLHAL and DHALAPP for CHECKPOINT19.
-+* Updated version for DSLAGENT to be 02.01.00.01 for ACT 2.1 R0.
-+* 30Oct03 0.00.24 JEB Bumped bugfix number on LINUXATM Version for next release.
-+* Bumped build numbers on DSLHAL and DHALAPP
-+* 31Oct03 0.00.25 MCB Bumped all version numbers in support of D3R2 release.
-+* 14Nov03 0.00.26 JEB Bumped build numbers on DSLHAL and DHALAPP
-+* Changed version for DSLAGENT to be 02.00.01.01 for an ACT 2.0 R0
-+* 20Nov03 0.00.27 JEB Bumped build number on DSLHAL.
-+* Changed version for DSLAGENT to be 02.00.02.00 for the next ACT 2.0 R2
-+* 21Nov03 0.00.28 MCB Bumped all version numbers in support of D3R2 release.
-+* 21Nov03 0.00.29 JEB Bumped build numbers on DSLHAL and DHALAPP for D3-R0 drop on 11/21.
-+* 16Dec03 0.00.30 JEB Bumped build numbers on DSLHAL and DHALAPP for CHECKPOINT31.
-+* 21Dec03 0.00.31 MCB Bumped all version numbers in support of D3R2 release.
-+* 05Jan04 0.00.32 JEB Bumped build numbers on DSLHAL and Linux ATM for CHECKPOINT 34.
-+* 15Jan04 0.00.33 JEB Bumped build numbers on DSLHAL and Linux ATM for CHECKPOINT 36.
-+* 26Jan04 0.00.34 JEB Changed Linux ATM version number to be 04.02.03.00.
-+* 27Jan04 0.00.35 MCB Bumped all version numbers in support of D3R2 release.
-+*******************************************************************************/
-+
-+/* Dsl Hal API Version Numbers */
-+#define DSLHAL_VERSION_MAJOR 03
-+#define DSLHAL_VERSION_MINOR 00
-+#define DSLHAL_VERSION_BUGFIX 06
-+#define DSLHAL_VERSION_BUILDNUM 00
-+#define DSLHAL_VERSION_TIMESTAMP 00
-+
-+/* dhalapp Adam2 Application Version Numbers */
-+#define DHALAPP_VERSION_MAJOR 03
-+#define DHALAPP_VERSION_MINOR 00
-+#define DHALAPP_VERSION_BUGFIX 05
-+#define DHALAPP_VERSION_BUILDNUM 00
-+
-+/* Linux ATM Driver Version Numbers */
-+#define LINUXATM_VERSION_MAJOR 04
-+#define LINUXATM_VERSION_MINOR 02
-+#define LINUXATM_VERSION_BUGFIX 04
-+#define LINUXATM_VERSION_BUILDNUM 00
-+
-+/* DSL Agent Version Numbers */
-+#define DSLAGENT_VERSION_MAJOR 02
-+#define DSLAGENT_VERSION_MINOR 00
-+#define DSLAGENT_VERSION_BUGFIX 02
-+#define DSLAGENT_VERSION_BUILDNUM 00
-+
-+#endif /* pairs with #ifndef __SYSSW_VERSION_H__ */
-diff -urN linux.old/drivers/atm/sangam_atm/tn7api.h linux.dev/drivers/atm/sangam_atm/tn7api.h
---- linux.old/drivers/atm/sangam_atm/tn7api.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/tn7api.h 2005-08-23 04:46:50.105842480 +0200
-@@ -0,0 +1,54 @@
-+/*
-+ * Tnetd73xx ATM driver.
-+ * by Zhicheng Tang, ztang@ti.com
-+ * 2000 (c) Texas Instruments Inc.
-+ *
-+ *
-+*/
-+
-+#ifndef __SAPI_H
-+#define __SAPI_H
-+
-+/* tn7atm.c */
-+void xdump(unsigned char *buff, int len, int debugLev);
-+int tn7atm_receive(void *os_dev, int ch, unsigned int packet_size, void *os_receive_info, void *data);
-+void *tn7atm_allocate_rx_skb(void *os_dev, void **os_receive_info, unsigned int size);
-+void tn7atm_free_rx_skb(void *skb);
-+void tn7atm_sarhal_isr_register(void *os_dev, void *hal_isr, int interrupt_num);
-+int tn7atm_send_complete(void *osSendInfo);
-+int tn7atm_device_connect_status(void *priv, int state);
-+int tn7atm_lut_find(short vpi, int vci);
-+
-+/* tn7dsl.h */
-+void tn7dsl_exit(void);
-+int tn7dsl_init(void *priv);
-+int tn7dsl_proc_stats(char* buf, char **start, off_t offset, int count,int *eof, void *data);
-+int tn7dsl_proc_modem(char* buf, char **start, off_t offset, int count,int *eof, void *data);
-+int tn7dsl_handle_interrupt(void);
-+void dprintf( int uDbgLevel, char * szFmt, ...);
-+void tn7dsl_dslmod_sysctl_register(void);
-+void tn7dsl_dslmod_sysctl_unregister(void);
-+int tn7dsl_get_dslhal_version(char *pVer);
-+int tn7dsl_get_dsp_version(char *pVer);
-+
-+int os_atoi(const char *pStr);
-+int os_atoh(const char *pStr);
-+unsigned long os_atoul(const char *pStr);
-+
-+/* tn7sar.c */
-+int tn7sar_activate_vc(Tn7AtmPrivate *priv, short vpi, int vci, int pcr, int scr, int mbs, int cdvt, int chan, int qos);
-+int tn7sar_init(struct atm_dev *dev, Tn7AtmPrivate *priv);
-+int tn7sar_register_interrupt_handle(void *os_dev, void *hal_isr, int *interrupt_num);
-+void tn7sar_exit(struct atm_dev *dev, Tn7AtmPrivate *priv);
-+int tn7sar_deactivate_vc(Tn7AtmPrivate *priv, int chan);
-+int tn7sar_handle_interrupt(struct atm_dev *dev, Tn7AtmPrivate *priv);
-+int tn7sar_send_packet(Tn7AtmPrivate *priv, int chan, void *new_skb, void *data,unsigned int len, int priority);
-+void tn7sar_get_sar_version(Tn7AtmPrivate *priv, char **pVer);
-+int tn7sar_get_near_end_loopback_count(unsigned int *pF4count, unsigned int *pF5count);
-+int tn7sar_oam_generation(void *privContext, int chan, int type, int vpi, int vci, int timeout);
-+int tn7sar_get_stats(void *priv1);
-+int tn7sar_proc_sar_stat(char* buf, char **start, off_t offset, int count,int *eof, void *data);
-+void tn7sar_get_sar_firmware_version(unsigned int *pdsp_version_ms, unsigned int *pdsp_version_ls);
-+int tn7sar_proc_oam_ping(char* buf, char **start, off_t offset, int count,int *eof, void *data);
-+int tn7sar_proc_pvc_table(char* buf, char **start, off_t offset, int count,int *eof, void *data);
-+#endif
-diff -urN linux.old/drivers/atm/sangam_atm/tn7atm.c linux.dev/drivers/atm/sangam_atm/tn7atm.c
---- linux.old/drivers/atm/sangam_atm/tn7atm.c 2005-08-28 01:52:26.000000000 -0600
-+++ linux.dev/drivers/atm/sangam_atm/tn7atm.c 2005-08-28 02:08:07.000000000 -0600
-@@ -0,0 +1,1233 @@
-+/*
-+ * tn7.c
-+ * Linux atm module implementation.
-+ * Zhicheng Tang 01/08/2003
-+ * 2003 (c) Texas Instruments Inc.
-+ *
-+ *
-+*/
-+
-+#include <linux/config.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/atmdev.h>
-+#include <linux/delay.h>
-+#include <linux/spinlock.h>
-+#include <linux/smp_lock.h>
-+#include <asm/io.h>
-+#include <asm/mips-boards/prom.h>
-+#include <linux/proc_fs.h>
-+#include <linux/string.h>
-+#include <linux/ctype.h>
-+#include "tn7atm.h"
-+#include "tn7api.h"
-+#include "syssw_version.h"
-+
-+#ifdef CONFIG_LED_MODULE
-+#include <asm/ar7/ledapp.h>
-+#endif
-+#include <asm/ar7/avalanche_intc.h>
-+
-+#ifdef MODULE
-+MODULE_DESCRIPTION ("Tnetd73xx ATM Device Driver");
-+MODULE_AUTHOR ("Zhicheng Tang");
-+#endif
-+
-+/* Version Information */
-+//static char atm_version[] ="1.0.0.1";
-+
-+#define TRUE 1
-+#define FALSE 0
-+
-+#define STOP_EMPTY_BUFF 2
-+#define START_EMPTY_BUFF 3
-+/* externs */
-+
-+/*end of externs */
-+
-+#define tn7atm_kfree_skb(x) dev_kfree_skb(x)
-+
-+/* prototypes */
-+int tn7atm_open (struct atm_vcc *vcc, short vpi, int vci);
-+
-+void tn7atm_close (struct atm_vcc *vcc);
-+
-+static int tn7atm_ioctl (struct atm_dev *dev, unsigned int cmd, void *arg);
-+
-+int tn7atm_send (struct atm_vcc *vcc, struct sk_buff *skb);
-+
-+static int tn7atm_change_qos (struct atm_vcc *vcc, struct atm_qos *qos,int flags);
-+
-+static int tn7atm_detect(void);
-+static int tn7atm_init(struct atm_dev* dev);
-+//static int tn7atm_reset(void);
-+static int tn7atm_irq_request(struct atm_dev* dev);
-+static int tn7atm_proc_version(char* buf, char **start, off_t offset, int count,int *eof, void *data);
-+static void tn7atm_exit(void);
-+static int tn7atm_proc_channels(char* buf, char **start, off_t offset, int count,int *eof, void *data);
-+static int tn7atm_proc_private(char* buf, char **start, off_t offset, int count,int *eof,void *data);
-+//static void tn7atm_free_packet(void *vcc1, void *priv, void *skb1);
-+static int tn7atm_queue_packet_to_sar(void *vcc1, void *skb1);
-+
-+#include "turbodsl.c"
-+
-+/* ATM device operations */
-+
-+struct atm_dev *mydev;
-+
-+static const struct atmdev_ops tn7atm_ops = {
-+ open: tn7atm_open,
-+ close: tn7atm_close,
-+ ioctl: tn7atm_ioctl,
-+ getsockopt: NULL,
-+ setsockopt: NULL,
-+ send: tn7atm_send,
-+ sg_send: NULL,
-+ phy_put: NULL,
-+ phy_get: NULL,
-+ change_qos: tn7atm_change_qos,
-+};
-+
-+
-+int __guDbgLevel = 1;
-+
-+
-+void xdump(unsigned char *buff, int len, int debugLev)
-+{
-+#ifdef DEBUG_BUILD
-+ int i, j;
-+ if( __guDbgLevel < debugLev)
-+ return;
-+
-+ j=0;
-+ for(i=0;i<len;i++)
-+ {
-+ printk("%02x ", buff[i]);
-+ j++;
-+ if(j==8)
-+ {
-+ j=0;
-+ printk("\n");
-+ }
-+ }
-+ printk("\n");
-+#endif
-+}
-+
-+
-+#if 0 /* by nbd */
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int tn7atm_walk_vccs(struct atm_dev *dev, short *vcc, int *vci)
-+ *
-+ * Description: retrieve VPI/VCI for connection
-+ *
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-+static int
-+tn7atm_walk_vccs(struct atm_vcc *vcc, short *vpi, int *vci)
-+{
-+ struct atm_vcc* walk;
-+
-+ // printk(tn7 "tn7atm_walk_vccs\n");
-+ /* find a free VPI */
-+ if (*vpi == ATM_VPI_ANY) {
-+
-+ for (*vpi = 0, walk = vcc->dev->vccs; walk; walk = walk->next) {
-+
-+ if ((walk->vci == *vci) && (walk->vpi == *vpi)) {
-+ (*vpi)++;
-+ walk = vcc->dev->vccs;
-+ }
-+ }
-+ }
-+
-+ /* find a free VCI */
-+ if (*vci == ATM_VCI_ANY) {
-+
-+ for (*vci = ATM_NOT_RSV_VCI, walk = vcc->dev->vccs; walk; walk = walk->next) {
-+
-+ if ((walk->vpi = *vpi) && (walk->vci == *vci)) {
-+ *vci = walk->vci + 1;
-+ walk = vcc->dev->vccs;
-+ }
-+ }
-+ }
-+
-+ return 0;
-+}
-+#endif
-+
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int tn7atm_sar_irq(void)
-+ *
-+ * Description: tnetd73xx SAR interrupt.
-+ *
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-+static void
-+tn7atm_sar_irq(int irq , void *voiddev , struct pt_regs *regs)
-+{
-+ struct atm_dev *atmdev;
-+ Tn7AtmPrivate *priv;
-+
-+ dprintf(6, "tn7atm_sar_irq\n");
-+ atmdev = (struct atm_dev *) voiddev;
-+ priv = (Tn7AtmPrivate *)atmdev->dev_data;
-+
-+ tn7sar_handle_interrupt(atmdev, priv);
-+
-+ dprintf(6, "Leaving tn7atm_sar_irq\n");
-+}
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int tn7atm_dsl_irq(void)
-+ *
-+ * Description: tnetd73xx DSL interrupt.
-+ *
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-+static void
-+tn7atm_dsl_irq(int irq , void *voiddev , struct pt_regs *regs)
-+{
-+ struct atm_dev *atmdev;
-+ Tn7AtmPrivate *priv;
-+
-+ dprintf(4, "tn7atm_dsl_irq\n");
-+ atmdev = (struct atm_dev *) voiddev;
-+ priv = (Tn7AtmPrivate *)atmdev->dev_data;
-+
-+ tn7dsl_handle_interrupt();
-+
-+ dprintf(4, "Leaving tn7atm_dsl_irq\n");
-+}
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int tn7atm_Inittxcomp(struct tn7* tn7)
-+ *
-+ * Description: Initialize Interrupt handler
-+ *
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-+static int __init
-+tn7atm_irq_request (struct atm_dev *dev)
-+{
-+ Tn7AtmPrivate *priv;
-+ char *ptr;
-+ int ipace=2;
-+
-+ dprintf(4, "tn7atm_irq_request()\n");
-+ priv = (Tn7AtmPrivate *) dev->dev_data;
-+
-+ /* Register SAR interrupt */
-+ priv->sar_irq = LNXINTNUM(ATM_SAR_INT); /* Interrupt line # */
-+ if (request_irq(priv->sar_irq, tn7atm_sar_irq, SA_INTERRUPT, "SAR ", dev))
-+ printk ("Could not register tn7atm_sar_irq\n");
-+
-+ /* interrupt pacing */
-+ ptr= prom_getenv("sar_ipacemax");
-+ if(ptr)
-+ {
-+ ipace=os_atoi(ptr);
-+ }
-+ avalanche_request_pacing(priv->sar_irq, ATM_SAR_INT_PACING_BLOCK_NUM, ipace);
-+
-+ /* Reigster Receive interrupt A */
-+ priv->dsl_irq = LNXINTNUM(ATM_DSL_INT); /* Interrupt line # */
-+ if (request_irq(priv->dsl_irq, tn7atm_dsl_irq, SA_INTERRUPT, "DSL ", dev))
-+ printk ("Could not register tn7atm_dsl_irq\n");
-+
-+ return 0;
-+}
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int tn7atm_lut_find(struct atm_vcc *vcc)
-+ *
-+ * Description: find an TX DMA channel
-+ * that matches a vpi/vci pair
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-+int
-+tn7atm_lut_find(short vpi, int vci)
-+{
-+ int i;
-+ Tn7AtmPrivate *priv;
-+
-+ priv = (Tn7AtmPrivate *)mydev->dev_data;
-+
-+ if(vci==0) // find first vpi channel
-+ {
-+ for(i=0; i< MAX_DMA_CHAN; i++)
-+ {
-+ if((priv->lut[i].vpi == vpi))
-+ return i;
-+ }
-+ }
-+
-+ dprintf(4, "vpi=%d, vci=%d\n", vpi, vci);
-+ for(i=0; i< MAX_DMA_CHAN; i++)
-+ {
-+ if((priv->lut[i].vpi == vpi) && (priv->lut[i].vci == vci))
-+ return i;
-+ }
-+
-+
-+
-+ return ATM_NO_DMA_CHAN;
-+}
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int tn7atm_lut_clear(struct atm_vcc *vcc,int chan)
-+ *
-+ * Description: find an TX DMA channel
-+ * that matches a vpi/vci pair
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-+static int
-+tn7atm_lut_clear(struct atm_vcc *vcc, int chan)
-+{
-+ Tn7AtmPrivate *priv;
-+
-+ priv = (Tn7AtmPrivate *)vcc->dev->dev_data;
-+
-+ memset(&priv->lut[chan], 0, sizeof(priv->lut[chan]));
-+
-+ return 0;
-+}
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int tn7atm_walk_lut(void)
-+ *
-+ * Description: find an available TX DMA channel
-+ * and initialize LUT
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-+static int
-+tn7atm_walk_lut(Tn7AtmPrivate *priv)
-+{
-+ int i;
-+
-+ for(i=0; i< MAX_DMA_CHAN; i++){
-+ if(!priv->lut[i].inuse)
-+ {
-+ return i; /* return available dma channel number */
-+ }
-+ }
-+ return ATM_NO_DMA_CHAN; /* no tx dma channels available */
-+}
-+
-+static int
-+tn7atm_set_lut(Tn7AtmPrivate *priv, struct atm_vcc *vcc, int chan)
-+{
-+
-+ if(!priv->lut[chan].inuse)
-+ {
-+ priv->lut[chan].vpi = (int)vcc->vpi;
-+ priv->lut[chan].vci = vcc->vci;
-+ priv->lut[chan].chanid = chan;
-+ priv->lut[chan].inuse = 1; /* claim the channel */
-+ priv->lut[chan].vcc = (void *)vcc;
-+ priv->lut[chan].bClosing = 0;
-+ priv->lut[chan].ready = 0;
-+ priv->lut[chan].tx_total_bufs = TX_BUFFER_NUM;
-+ priv->lut[chan].tx_used_bufs[0] = 0;
-+ priv->lut[chan].tx_used_bufs[1] = 0;
-+ return 0;
-+ }
-+ return -1; /* no tx dma channels available */
-+}
-+
-+#if 0
-+static void tn7atm_free_packet(void *pVc, void *pDev, void *pPacket)
-+ {
-+ Tn7AtmPrivate *priv;
-+ struct atm_vcc *vcc;
-+ struct sk_buff *skb;
-+
-+ vcc = (struct atm_vcc *)pVc;
-+ priv = (Tn7AtmPrivate *)pDev;
-+ skb = (struct sk_buff *) pPacket;
-+
-+ if(vcc->pop)
-+ vcc->pop(vcc, skb);
-+ else
-+ tn7atm_kfree_skb(skb);
-+ }
-+#endif
-+
-+static void str2eaddr(char *pMac, char *pStr)
-+{
-+ char tmp[3];
-+ int i;
-+
-+ for(i=0;i<6;i++)
-+ {
-+ tmp[0]=pStr[i*3];
-+ tmp[1]=pStr[i*3+1];
-+ tmp[2]=0;
-+ pMac[i]=os_atoh(tmp);
-+ }
-+}
-+
-+static int __init
-+tn7atm_get_ESI(struct atm_dev *dev)
-+{
-+ int i;
-+ char esi_addr[ESI_LEN]={0x00,0x00,0x11,0x22,0x33,0x44};
-+ char *esiaddr_str = NULL;
-+
-+ esiaddr_str = prom_getenv("macc");
-+
-+ if (!esiaddr_str) {
-+ //printk("macc address not set in adam2 environment space\n");
-+ //printk("Using default macc address = 00:01:02:03:04:05\n");
-+ esiaddr_str = "00:00:02:03:04:05";
-+ }
-+ str2eaddr(esi_addr, esiaddr_str);
-+
-+ for(i=0; i < ESI_LEN; i++)
-+ dev->esi[i] = esi_addr[i];
-+
-+ return 0;
-+}
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int tn7atm_open(struct atm_vcc *vcc, short vpi, int vci)
-+ *
-+ * Description: Device operation: open
-+ *
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-+//static int
-+int tn7atm_open (struct atm_vcc *vcc, short vpi, int vci)
-+{
-+ Tn7AtmPrivate *priv;
-+ int dmachan;
-+ int rc;
-+ int traffic_type;
-+ int pcr = 0x20000;
-+ int scr = 0x20000;
-+ int mbs = 0x20000;
-+ int cdvt = 10000;
-+ int err;
-+
-+ dprintf(1, "tn7atm_open()\n");
-+
-+ priv = (Tn7AtmPrivate *)vcc->dev->dev_data;
-+ if(priv==NULL)
-+ {
-+ printk("null priv\n");
-+ return -1;
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+#if 0 /* by nbd */
-+ /* find a free VPI/VCI */
-+ tn7atm_walk_vccs(vcc, &vpi, &vci);
-+#else
-+ if ((err = atm_find_ci(vcc, &vpi, &vci))) {
-+ printk("atm_find_ci err = %d\n", err);
-+ return err;
-+ }
-+
-+#endif
-+
-+ vcc->vpi = vpi;
-+ vcc->vci = vci;
-+
-+ if (vci == ATM_VCI_UNSPEC || vpi == ATM_VCI_UNSPEC)
-+ {
-+ MOD_DEC_USE_COUNT;
-+ return -EBUSY;
-+ }
-+
-+ /* check to see whether PVC is opened or not */
-+ if((dmachan = tn7atm_lut_find(vcc->vpi, vcc->vci)) != ATM_NO_DMA_CHAN)
-+ {
-+ MOD_DEC_USE_COUNT;
-+ printk("PVC already opened. dmachan = %d\n", dmachan);
-+ return -EBUSY;
-+ }
-+ /*check for available channel */
-+ if((dmachan = tn7atm_walk_lut(priv)) == ATM_NO_DMA_CHAN)
-+ {
-+ printk("No TX DMA channels available\n");
-+ return -EBUSY;
-+ }
-+
-+ set_bit(ATM_VF_ADDR, &vcc->flags); /* claim address */
-+
-+ vcc->itf = vcc->dev->number; /* interface number */
-+
-+ switch(vcc->qos.txtp.traffic_class)
-+ {
-+ case ATM_CBR: /* Constant Bit Rate */
-+ traffic_type = 0;
-+ pcr = vcc->qos.txtp.pcr;
-+ scr = vcc->qos.txtp.pcr;
-+ cdvt = vcc->qos.txtp.max_cdv;
-+ printk("cdvt=%d\n", cdvt);
-+ break;
-+ case ATM_UBR: /* Unspecified Bit Rate */
-+ traffic_type = 2;
-+ break;
-+
-+ /* Disable ATM_VBR until pppd ppoatm plugin supports it.
-+ * NOTE: Support ATM_VBR requires the addition of a scr
-+ * field to the atm_trafprm structure which will cause
-+ * a change in the SO_ATMQOS ioctl. Make sure that the
-+ * revised header file becomes visible to the pppd
-+ * pppoatm plugin source, or the SO_ATMQOS ioctl will fail.
-+ */
-+#if 0
-+ case ATM_VBR: /* Variable Bit Rate */
-+ traffic_type = 1;
-+ pcr = vcc->qos.txtp.pcr;
-+ scr = vcc->qos.txtp.scr;
-+ if(vcc->qos.txtp.max_pcr >= 0)
-+ mbs = vcc->qos.txtp.max_pcr;
-+ cdvt = vcc->qos.txtp.max_cdv;
-+ printk("cdvt=%d\n", cdvt);
-+ printk("mbs=%d\n", mbs);
-+ break;
-+#endif
-+ default:
-+ traffic_type = 2;
-+ }
-+
-+ dprintf(4, "vpi=%d, vci=%d, pcr=%d, dmachan=%d, qos=%d\n", vpi,vci,pcr,dmachan,traffic_type);
-+ /* Activate SAR channel */
-+ rc = tn7sar_activate_vc(priv, vpi, vci, pcr, scr, mbs, cdvt, dmachan, traffic_type);
-+ if(rc < 0)
-+ {
-+
-+ MOD_DEC_USE_COUNT;
-+ return -EBUSY;
-+ }
-+
-+ /* insure that the the vcc struct points to the correct entry
-+ in the lookup table */
-+
-+ tn7atm_set_lut(priv,vcc, dmachan);
-+ vcc->dev_data = (void *)&priv->lut[dmachan];
-+ set_bit(ATM_VF_READY, &vcc->flags);
-+
-+ mdelay(100);
-+ priv->lut[dmachan].ready = 1;
-+ dprintf (1, "Leave tn7atm_open\n");
-+ return 0;
-+}
-+
-+
-+//static void
-+void tn7atm_close (struct atm_vcc *vcc)
-+{
-+ Tn7AtmPrivate *priv;
-+ int dmachan;
-+
-+ priv = (Tn7AtmPrivate *)vcc->dev->dev_data;
-+ dprintf(4, "closing %d.%d.%d.%d\n", vcc->itf, vcc->vpi, vcc->vci, vcc->qos.aal);
-+
-+ clear_bit(ATM_VF_READY, &vcc->flags); /* ATM_VF_READY: channel is ready to transfer data */
-+
-+ dmachan = tn7atm_lut_find(vcc->vpi, vcc->vci);
-+ printk("closing channel: %d\n", dmachan);
-+ if(dmachan == ATM_NO_DMA_CHAN)
-+ {
-+ printk("Closing channel not found.\n");
-+ return;
-+ }
-+ priv->lut[dmachan].bClosing = 1;
-+ priv->lut[dmachan].ready = 0;
-+ if(tn7sar_deactivate_vc(priv,dmachan)) /* tear down channel */
-+ {
-+ printk("failed to close channel %d.\n", dmachan);
-+ }
-+
-+ clear_bit(ATM_VF_READY, &vcc->flags); /* ATM_VF_READY: channel is ready to transfer data */
-+ tn7atm_lut_clear(vcc, dmachan);
-+
-+ MOD_DEC_USE_COUNT;
-+
-+ dprintf (1, "Leave tn7atm_close\n");
-+}
-+
-+#define ATM_TXSTOP 0x800c61f4
-+static int
-+tn7atm_ioctl (struct atm_dev *dev, unsigned int cmd, void *arg)
-+{
-+ Tn7AtmPrivate *priv;
-+ priv = (Tn7AtmPrivate *) dev->dev_data;
-+
-+ //printk("tn7atm_ioctl\n");
-+ //printk("arg = %x\n", *(int *)arg);
-+ //printk("cmd =%x\n", cmd);
-+ switch(cmd)
-+ {
-+
-+ case ATM_TXSTOP: /*temp fix for SAR tear down problem */
-+// printk("ioctl cmd = 0x%x (%u), arg = 0x%p (%lu)\n", cmd, cmd, arg, (unsigned long)arg);
-+// printk("arg = %d\n", *(int*)arg);
-+ priv->xmitStop = *(int *)arg;
-+ //printk("Executing ATM_SETLOOP for tn7 \n");
-+ //printk("Stop variable = :%d: \n",priv->xmitStop);
-+ return 0;
-+
-+ //case SAR_DSL_RESET_SOFTBOOT:
-+ // return tn7atm_dsl_clean_reboot();
-+ case 0:
-+ return 0;
-+ }
-+
-+ return -ENOSYS;
-+
-+}
-+
-+static int
-+tn7atm_change_qos (struct atm_vcc *vcc, struct atm_qos *qos,int flags)
-+{
-+ dprintf (1, "Enter tn7atm_change_qos\n");
-+ dprintf (1, "Leave tn7atm_change_qos\n");
-+ return 0;
-+}
-+
-+
-+int tn7atm_send (struct atm_vcc *vcc, struct sk_buff *skb)
-+{
-+
-+ Tn7AtmPrivate *priv;
-+ int bret;
-+ int chan;
-+
-+ dprintf(4, "tn7atm_send()\n");
-+
-+ priv = (Tn7AtmPrivate*)vcc->dev->dev_data;
-+
-+ //if(skb->len < 64)
-+ //xdump((unsigned char *)skb->data, skb->len, 1);
-+ //else
-+ //xdump((unsigned char *)skb->data, 64, 1);
-+ /* check for dsl line connection */
-+
-+ /* add vcc field in skb for clip inATMARP fix */
-+ ATM_SKB(skb)->vcc = vcc;
-+ /* Ron change 2.3 -> 2.4 ??*/
-+ //if(priv->lConnected != 1 || priv->xmitStop == 1)
-+ if(priv->lConnected != 1 && priv->xmitStop == 1)
-+ {
-+ dprintf(4,"dsl line down\n");
-+ if(vcc->pop)
-+ vcc->pop(vcc, skb);
-+ else
-+ tn7atm_kfree_skb(skb);
-+ return 1;
-+ }
-+
-+ /* check whether PVC is closing */
-+ chan = tn7atm_lut_find(vcc->vpi, vcc->vci);
-+ /* set br2684 dev pointer */
-+ priv->lut[chan].net_device = skb->dev;
-+ if(chan == ATM_NO_DMA_CHAN || priv->lut[chan].bClosing == 1)
-+ {
-+ dprintf(4, "can find sar channel\n");
-+ if(vcc->pop)
-+ vcc->pop(vcc, skb);
-+ else
-+ tn7atm_kfree_skb(skb);
-+ return 1;
-+ }
-+
-+ bret=tn7atm_queue_packet_to_sar(vcc, skb);
-+
-+ return bret;
-+}
-+
-+
-+static int tn7atm_queue_packet_to_sar(void *vcc1, void *skb1)
-+{
-+ struct atm_vcc *vcc;
-+ struct sk_buff *skb;
-+ int priority = 1;
-+ Tn7AtmPrivate *priv;
-+ int dmachan;
-+
-+ vcc = (struct atm_vcc *)vcc1;
-+ skb = (struct sk_buff *)skb1;
-+
-+ priv = (Tn7AtmPrivate*)vcc->dev->dev_data;
-+
-+ dprintf(4, "vcc->vci=%d\n", vcc->vci);
-+ dmachan = tn7atm_lut_find(vcc->vpi, vcc->vci);
-+ if(dmachan == ATM_NO_DMA_CHAN)
-+ {
-+ dprintf(4, "can find sar channel\n");
-+ if(vcc->pop)
-+ vcc->pop(vcc, skb);
-+ else
-+ tn7atm_kfree_skb(skb);
-+ return 1;
-+ }
-+
-+ // turbo dsl TCP ack check
-+ if(priv->bTurboDsl)
-+ priority = turbodsl_check_priority_type(skb->data);
-+
-+ //skb priority check
-+ if(priority != 0)
-+ {
-+ if((skb->cb[47])>>1)
-+ priority=1;
-+ else
-+ priority = 0;
-+ }
-+
-+ /* add queue info here */
-+ skb->cb[47] = (char)priority;
-+ spin_lock_irqsave(&priv->netifqueueLock, priv->netifqueueLockFlag);
-+ priv->lut[dmachan].tx_used_bufs[priority]++;
-+ spin_unlock_irqrestore(&priv->netifqueueLock, priv->netifqueueLockFlag);
-+
-+ if(tn7sar_send_packet(priv,dmachan, skb, skb->data, skb->len, priority) != 0)
-+ {
-+ dprintf(1, "failed to send packet\n");
-+ if(vcc->pop)
-+ vcc->pop(vcc, skb);
-+ else
-+ tn7atm_kfree_skb(skb);
-+
-+ spin_lock_irqsave(&priv->netifqueueLock, priv->netifqueueLockFlag);
-+ priv->lut[dmachan].tx_used_bufs[priority]--;
-+ spin_unlock_irqrestore(&priv->netifqueueLock, priv->netifqueueLockFlag);
-+ return 1;
-+ }
-+
-+ /* check for whether tx queue is full or not */
-+ //printk("bufs used = %d\n", priv->lut[dmachan].tx_used_bufs[1]);
-+ spin_lock_irqsave(&priv->netifqueueLock, priv->netifqueueLockFlag);
-+ if(priv->lut[dmachan].tx_used_bufs[1] >= (priv->lut[dmachan].tx_total_bufs - STOP_EMPTY_BUFF) ||
-+ priv->lut[dmachan].tx_used_bufs[0] >= (priv->lut[dmachan].tx_total_bufs - STOP_EMPTY_BUFF))
-+ {
-+ //printk("net queue stoped\n");
-+ netif_stop_queue(priv->lut[dmachan].net_device);
-+ priv->lut[dmachan].netqueue_stop = 1;
-+ }
-+ spin_unlock_irqrestore(&priv->netifqueueLock, priv->netifqueueLockFlag);
-+
-+ return 0;
-+}
-+
-+/* functions needed by SAR HAL */
-+
-+int tn7atm_send_complete(void *osSendInfo)
-+{
-+ Tn7AtmPrivate *priv;
-+ //struct atm_dev *dev;
-+ struct sk_buff *skb;
-+ struct atm_vcc *vcc;
-+ int chan;
-+
-+ dprintf(4, "tn7atm_send_complete()\n");
-+
-+
-+ skb = (struct sk_buff *)osSendInfo;
-+ //dev = (struct atm_dev *) (skb->dev);
-+ priv = (Tn7AtmPrivate *)mydev->dev_data;
-+ vcc =ATM_SKB(skb)->vcc;
-+ if(vcc)
-+ {
-+ dprintf(4, "vcc->vci=%d\n",vcc->vci );
-+ chan = tn7atm_lut_find(vcc->vpi, vcc->vci);
-+ if(chan==ATM_NO_DMA_CHAN)
-+ return 1;
-+
-+ /*decreament packet queued number */
-+ spin_lock_irqsave(&priv->netifqueueLock, priv->netifqueueLockFlag);
-+ priv->lut[chan].tx_used_bufs[(int)skb->cb[47]] --;
-+ if(priv->lut[chan].tx_used_bufs[1] < priv->lut[chan].tx_total_bufs - START_EMPTY_BUFF &&
-+ priv->lut[chan].tx_used_bufs[0] < priv->lut[chan].tx_total_bufs - START_EMPTY_BUFF)
-+ {
-+ if(priv->lut[chan].netqueue_stop)
-+ {
-+ //printk("net queue restarted\n");
-+ netif_wake_queue(priv->lut[chan].net_device);
-+ priv->lut[chan].netqueue_stop = 0;
-+ }
-+ }
-+ spin_unlock_irqrestore(&priv->netifqueueLock, priv->netifqueueLockFlag);
-+
-+ if(vcc->pop)
-+ {
-+ dprintf(5, "free packet\n");
-+ vcc->pop(vcc, skb);
-+ }
-+
-+
-+ }
-+
-+
-+
-+ /* Update Stats: There may be a better place to do this, but this is a start */
-+ priv->stats.tx_packets++;
-+#ifdef CONFIG_LED_MODULE
-+// led_operation(MOD_ADSL, DEF_ADSL_ACTIVITY);
-+#endif
-+
-+ /* track number of buffer used */
-+
-+ dprintf(4, "tn7atm_send_complete() done\n");
-+
-+ return 0;
-+}
-+
-+void *tn7atm_allocate_rx_skb(void *os_dev, void **os_receive_info, unsigned int size)
-+{
-+ struct sk_buff *skb;
-+ dprintf(4, "tn7atm_allocate_rx_skb size=%d\n", size);
-+ size = ((size+3)&0xfffffffc);
-+ skb = dev_alloc_skb(size);
-+ if(skb==NULL)
-+ {
-+ //printk("rx allocate skb failed\n");
-+ return NULL;
-+ }
-+ *os_receive_info = (void *)skb;
-+ return (skb->data);
-+}
-+
-+void tn7atm_free_rx_skb(void *skb)
-+{
-+ dprintf(4, "tn7atm_free_rx_skb\n");
-+ tn7atm_kfree_skb((struct sk_buff *)skb);
-+}
-+
-+
-+int tn7atm_receive(void *os_dev, int ch, unsigned int packet_size, void *os_receive_info, void *data)
-+{
-+ Tn7AtmPrivate *priv;
-+ struct atm_dev *dev;
-+ struct sk_buff *skb;
-+ struct atm_vcc *vcc;
-+
-+
-+ dprintf(4, "tn7atm_receive()\n");
-+ dev = (struct atm_dev *)os_dev;
-+
-+ priv = (Tn7AtmPrivate *)dev->dev_data;
-+
-+ if(priv->lConnected != 1 || priv->lut[ch].ready == 0)
-+ {
-+ //printk("channel not ready\n");
-+ return 1;
-+ }
-+
-+ vcc = (struct atm_vcc *)priv->lut[ch].vcc;
-+ if(vcc == NULL)
-+ {
-+ printk("vcc=Null");
-+ return 1;
-+ }
-+
-+
-+ /* assume no fragment packet for now */
-+ skb = (struct sk_buff *)os_receive_info;
-+
-+ if(skb==NULL)
-+ {
-+ dprintf(1, "received empty skb.\n");
-+ return 1;
-+ }
-+ /* see skbuff->cb definition in include/linux/skbuff.h */
-+ ATM_SKB(skb)->vcc = vcc;
-+
-+ skb->len = packet_size;
-+ dprintf(3, "skb:[0x%p]:0x%x pdu_len: 0x%04x\n",skb,skb->len,packet_size);
-+ dprintf(3, "data location: 0x%x, 0x%x\n", (unsigned int)skb->data, (unsigned int)data);
-+
-+ /*skb_trim(skb,skb->len); */ /* skb size is incorrect for large packets > 1428 bytes ?? */
-+ __skb_trim(skb,skb->len); /* change to correct > 1500 ping when firewall is on */
-+
-+ dprintf(3, "pushing the skb...\n");
-+ skb->stamp = xtime;
-+
-+ xdump((unsigned char *)skb->data, skb->len, 5);
-+
-+ if(atm_charge(vcc, skb->truesize) == 0)
-+ {
-+ dprintf(1,"Receive buffers saturated for %d.%d.%d - PDU dropped\n", vcc->itf, vcc->vci, vcc->vpi);
-+ return 1;
-+ }
-+
-+ /*pass it up to kernel networking layer and update stats*/
-+ vcc->push(vcc,skb);
-+
-+ /* Update receive packet stats */
-+ priv->stats.rx_packets++;
-+ atomic_inc(&vcc->stats->rx);
-+
-+#ifdef CONFIG_LED_MODULE
-+// led_operation(MOD_ADSL, DEF_ADSL_ACTIVITY);
-+#endif
-+ dprintf(3, "(a) Receiving:vpi/vci[%d/%d] chan_id: %d skb len:0x%x skb truesize:0x%x\n",
-+ vcc->vpi,vcc->vci,ch,skb->len, skb->truesize);
-+
-+ return 0;
-+}
-+
-+static int
-+tn7atm_proc_channels(char* buf, char **start, off_t offset, int count,int *eof, void *data)
-+{
-+ int len = 0;
-+ int limit = count - 80;
-+ int i;
-+
-+ struct atm_dev *dev;
-+ Tn7AtmPrivate *priv;
-+
-+ dev = (struct atm_dev *)data;
-+ priv = (Tn7AtmPrivate *)dev->dev_data;
-+
-+ if(len<=limit)
-+ len += sprintf(buf+len,"Chan Inuse ChanID VPI VCI \n");
-+ if(len<=limit)
-+ len += sprintf(buf+len,"------------------------------------------------------------------\n");
-+
-+ for(i=0; i < MAX_DMA_CHAN; i++)
-+ {
-+ if(len<=limit)
-+ {
-+ len += sprintf(buf+len,
-+ " %02d %05d %05d %05d %05d \n",
-+ i,priv->lut[i].inuse,priv->lut[i].chanid,
-+ priv->lut[i].vpi,priv->lut[i].vci);
-+ }
-+ }
-+
-+ return len;
-+}
-+
-+static int
-+tn7atm_proc_private(char* buf, char **start, off_t offset, int count,int *eof, void *data)
-+{
-+ int len = 0;
-+ int limit = count - 80;
-+ struct atm_dev *dev;
-+ Tn7AtmPrivate *priv;
-+
-+ dev = (struct atm_dev *)data;
-+ priv = (Tn7AtmPrivate *)dev->dev_data;
-+
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\nPrivate Data Structure(%s):\n",priv->name);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "----------------------------------------\n");
-+ if(len<=limit)
-+ len += sprintf(buf+len, "priv: 0x%p\n",priv);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "next: 0x%p",priv->next);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tdev: 0x%p\n",priv->dev);
-+
-+ if(len<=limit)
-+ len += sprintf(buf+len, "tx_irq: %02d",priv->sar_irq);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "rx_irq: %02d",priv->dsl_irq);
-+
-+
-+ return len;
-+}
-+
-+void tn7atm_sarhal_isr_register(void *os_dev, void *hal_isr, int interrupt_num)
-+{
-+ struct atm_dev *dev;
-+ Tn7AtmPrivate *priv;
-+
-+ dprintf(4, "tn7atm_sarhal_isr_register()\n");
-+
-+ dev = (struct atm_dev *)os_dev;
-+ priv = (Tn7AtmPrivate *)dev->dev_data;
-+ priv->halIsr = (void *)hal_isr;
-+ priv->int_num = interrupt_num;
-+}
-+
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int tn7atm_exit(void)
-+ *
-+ * Description: Avalanche SAR exit function
-+ *
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-+
-+static void
-+tn7atm_exit (void)
-+{
-+
-+ struct atm_dev *dev;
-+
-+ Tn7AtmPrivate *priv;
-+
-+ dprintf(4, "tn7atm_exit()\n");
-+
-+ dev=mydev;
-+ priv = (Tn7AtmPrivate *)dev->dev_data;
-+ priv->lConnected = 0;
-+ tn7dsl_exit();
-+
-+ tn7sar_exit(dev, priv);
-+
-+ /* freeup irq's */
-+ free_irq(priv->dsl_irq,priv->dev);
-+ free_irq(priv->sar_irq,priv->dev);
-+
-+ kfree (dev->dev_data);
-+
-+ // atm_dev_deregister (dev);
-+ shutdown_atm_dev(dev);
-+
-+ /* remove proc entries */
-+ remove_proc_entry("tiatm/avsar_ver",NULL);
-+ remove_proc_entry("tiatm/avsar_modem_stats",NULL);
-+ remove_proc_entry("tiatm/avsar_modem_training",NULL);
-+ remove_proc_entry("tiatm/avsar_channels",NULL);
-+ remove_proc_entry("tiatm/avsar_private",NULL);
-+ remove_proc_entry("tiatm/avsar_sarhal_stats",NULL);
-+ remove_proc_entry("tiatm/avsar_oam_ping",NULL);
-+ remove_proc_entry("tiatm/avsar_pvc_table",NULL);
-+ remove_proc_entry("tiatm",NULL);
-+ tn7dsl_dslmod_sysctl_unregister();
-+
-+ printk ("Module Removed\n");
-+
-+}
-+
-+
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int tn7atm_registration(struct tn7* tn7)
-+ *
-+ * Description: ATM driver registration
-+ *
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-+
-+static int __init
-+tn7atm_register (Tn7AtmPrivate * priv)
-+{
-+ /* allocate memory for the device */
-+
-+ dprintf(4,"device %s being registered\n", priv->name);
-+
-+ mydev = atm_dev_register (priv->proc_name, &tn7atm_ops, -1, NULL);
-+
-+ if (mydev == NULL)
-+ {
-+ printk ("atm_dev_register returning NULL\n");
-+ return ATM_REG_FAILED;
-+ }
-+
-+ printk ("registered device %s\n", priv->name);
-+
-+ mydev->dev_data = priv; /* setup device data in atm_dev struct */
-+ priv->dev = mydev; /* setup atm_device in avalanche sar struct */
-+
-+ mydev->ci_range.vpi_bits = ATM_CI_MAX; /* atm supports 11 bits */
-+ mydev->ci_range.vci_bits = 16; /* atm VCI max = 16 bits */
-+
-+
-+ return ATM_REG_OK;
-+}
-+
-+static int
-+tn7atm_proc_version(char* buf, char **start, off_t offset, int count,int *eof, void *data)
-+{
-+ int len = 0;
-+ char dslVer[8];
-+ char dspVer[10];
-+ char *pSarVer;
-+ Tn7AtmPrivate *priv;
-+ int i;
-+ unsigned int pdspV1, pdspV2;
-+
-+ priv = mydev->dev_data;
-+
-+ len += sprintf(buf+len, "ATM Driver version:[%d.%02d.%02d.%02d]\n",LINUXATM_VERSION_MAJOR, LINUXATM_VERSION_MINOR,
-+ LINUXATM_VERSION_BUGFIX, LINUXATM_VERSION_BUILDNUM);
-+
-+ tn7dsl_get_dslhal_version(dslVer);
-+
-+ len += sprintf(buf+len, "DSL HAL version: [%d.%02d.%02d.%02d]\n", dslVer[0], dslVer[1], dslVer[2],
-+ dslVer[3]);
-+ tn7dsl_get_dsp_version(dspVer);
-+
-+ len += sprintf(buf+len, "DSP Datapump version: [%d.%02d.%02d.%02d] ", dspVer[4], dspVer[5], dspVer[6],
-+ dspVer[7]);
-+ if(dspVer[8]==2) // annex B
-+ len += sprintf(buf+len, "Annex B\n");
-+ else if(dspVer[8]==3) //annex c
-+ len += sprintf(buf+len, "Annex c\n");
-+ else
-+ len += sprintf(buf+len, "Annex A\n");
-+
-+ tn7sar_get_sar_version(priv, &pSarVer);
-+
-+ len += sprintf(buf+len, "SAR HAL version: [");
-+ for(i=0;i<8;i++)
-+ {
-+ len += sprintf(buf+len, "%c", pSarVer[i+7]);
-+ }
-+ len += sprintf(buf+len, "]\n");
-+
-+ tn7sar_get_sar_firmware_version(&pdspV1, &pdspV2);
-+ len += sprintf(buf+len, "PDSP Firmware version:[%01x.%02x]\n",
-+ pdspV1,pdspV2);
-+
-+ return len;
-+}
-+
-+/*
-+static struct net_device_stats
-+*tn7atm_get_stats(struct atm_dev *dev)
-+{
-+ Tn7AtmPrivate *priv;
-+ //unsigned long flags;
-+
-+ //spin_lock_irqsave(&priv->stats_lock,flags);
-+ priv= (Tn7AtmPrivate *)dev->dev_data;
-+ //spin_unlock_irqrestore(&priv->stats_lock,flags);
-+
-+ return &priv->stats;
-+
-+}
-+*/
-+/* Device detection */
-+
-+static int __init
-+tn7atm_detect (void)
-+{
-+ Tn7AtmPrivate *priv;
-+ //static struct proc_dir_entry *proc_dir;
-+
-+ dprintf(4, "tn7atm_detect().\n");
-+ /* Device allocated as a global static structure at top of code "mydev" */
-+
-+ /* Alloc priv struct */
-+ priv=kmalloc(sizeof(Tn7AtmPrivate),GFP_KERNEL);
-+ if(!priv)
-+ {
-+ printk("unable to kmalloc priv structure. Killing autoprobe.\n");
-+ return -ENODEV;
-+ }
-+ memset(priv, 0, sizeof(Tn7AtmPrivate));
-+#ifdef COMMON_NSP
-+ priv->name = "TI Avalanche SAR";
-+ priv->proc_name = "avsar";
-+#else
-+ priv->name = "TI tnetd73xx ATM Driver";
-+ priv->proc_name = "tn7";
-+#endif
-+
-+ if ((tn7atm_register (priv)) == ATM_REG_FAILED)
-+ return -ENODEV;
-+
-+ tn7atm_init(mydev);
-+
-+ /* Set up proc entry for atm stats */
-+ proc_mkdir("tiatm", NULL);
-+ create_proc_read_entry("tiatm/avsar_modem_stats",0,NULL,tn7dsl_proc_stats,NULL);
-+ create_proc_read_entry("tiatm/avsar_modem_training",0,NULL,tn7dsl_proc_modem,NULL);
-+ create_proc_read_entry("tiatm/avsar_ver",0,NULL,tn7atm_proc_version,NULL);
-+ create_proc_read_entry("tiatm/avsar_channels",0,NULL,tn7atm_proc_channels,mydev);
-+ create_proc_read_entry("tiatm/avsar_private",0,NULL,tn7atm_proc_private,mydev);
-+ create_proc_read_entry("tiatm/avsar_sarhal_stats",0,NULL,tn7sar_proc_sar_stat,mydev);
-+ create_proc_read_entry("tiatm/avsar_oam_ping",0,NULL,tn7sar_proc_oam_ping,mydev);
-+ create_proc_read_entry("tiatm/avsar_pvc_table",0,NULL,tn7sar_proc_pvc_table,mydev);
-+
-+ tn7dsl_dslmod_sysctl_register();
-+
-+ printk("Texas Instruments ATM driver: version:[%d.%02d.%02d.%02d]\n",LINUXATM_VERSION_MAJOR, LINUXATM_VERSION_MINOR,
-+ LINUXATM_VERSION_BUGFIX, LINUXATM_VERSION_BUILDNUM);
-+ return 0;
-+}
-+
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int tn7atm_probe(void)
-+ *
-+ * Description: Avalanche SAR driver probe (see net/atm/pvc.c)
-+ * this is utilized when the SAR driver is built
-+ * into the kernel and needs to be configured.
-+ *
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-+int __init tn7atm_probe(void)
-+{
-+ tn7atm_detect();
-+ return -ENODEV;
-+}
-+
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int tn7atm_init(struct atm_dev *dev)
-+ *
-+ * Description: Device Initialization
-+ *
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-+static int __init
-+tn7atm_init(struct atm_dev *dev)
-+{
-+ Tn7AtmPrivate *priv;
-+ char *ptr;
-+
-+ dprintf(4, "tn7atm_init()\n");
-+
-+ priv = (Tn7AtmPrivate *)dev->dev_data;
-+
-+ if(tn7sar_init(dev, priv) != 0)
-+ {
-+ printk("Failed to init SAR.\n");
-+ return -ENODEV;
-+ }
-+
-+ if(tn7dsl_init(priv) < 0)
-+ {
-+ printk("Failed to init DSL.\n");
-+ return -ENODEV;
-+ }
-+
-+ if(tn7atm_get_ESI(dev) < 0) /* set ESI */
-+ return -ENODEV;
-+
-+ if(tn7atm_irq_request(dev) < 0)
-+ return -EBUSY;
-+
-+ priv->bTurboDsl = 1;
-+ // read config for turbo dsl
-+ ptr = prom_getenv("TurboDSL");
-+ if(ptr)
-+ {
-+ priv->bTurboDsl = os_atoi(ptr);
-+ }
-+
-+ return 0;
-+}
-+
-+int tn7atm_device_connect_status(void *priv, int state)
-+{
-+ Tn7AtmPrivate *priv1;
-+
-+ dprintf(5, "tn7atm_device_connect_status()\n");
-+ priv1 = (Tn7AtmPrivate *)priv;
-+
-+ priv1->lConnected = state;
-+ dprintf(5, "priv1->lConnected=%d\n", priv1->lConnected);
-+ return 0;
-+}
-+
-+
-+#ifdef MODULE
-+module_init (tn7atm_detect);
-+module_exit (tn7atm_exit);
-+#endif /* MODULE */
-diff -urN linux.old/drivers/atm/sangam_atm/tn7atm.h linux.dev/drivers/atm/sangam_atm/tn7atm.h
---- linux.old/drivers/atm/sangam_atm/tn7atm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/tn7atm.h 2005-08-23 04:46:50.107842176 +0200
-@@ -0,0 +1,115 @@
-+/*
-+ * Tnetd73xx ATM driver.
-+ * by Zhicheng Tang, ztang@ti.com
-+ * 2000 (c) Texas Instruments Inc.
-+ *
-+ *
-+*/
-+
-+#ifndef __TN7ATM_H
-+#define __TN7ATM_H
-+
-+//#include "mips_support.h"
-+#include <linux/list.h>
-+
-+#define ATM_REG_OK 1
-+#define ATM_REG_FAILED 0
-+
-+#define TX_SERVICE_MAX 32
-+#define RX_SERVICE_MAX 20
-+#define TX_BUFFER_NUM 64
-+#define RX_BUFFER_NUM 28
-+#define TX_QUEUE_NUM 2
-+#define RX_BUFFER_SIZE 1582
-+
-+#define TX_DMA_CHAN 16 /* number of tx dma channels available */
-+#define MAX_DMA_CHAN 16
-+#define ATM_NO_DMA_CHAN MAX_DMA_CHAN + 1 /* no tx dma channels available */
-+#define ATM_SAR_INT 15
-+#define ATM_SAR_INT_PACING_BLOCK_NUM 2
-+#define ATM_DSL_INT 39
-+
-+#define CONFIG_ATM_TN7ATM_DEBUG 0 /* Debug level (0=no mtn7s 5=verbose) */
-+
-+#define TN7ATM_DEV(d) ((struct tn7atm*)((d)->dev_data))
-+
-+
-+/* Avalanche SAR state information */
-+
-+typedef enum tn7atm_state
-+{
-+ TN7ATM_STATE_REGISTER /* device registered */
-+}tn7atm_state;
-+
-+typedef struct _sar_stat
-+{
-+ unsigned int txErrors;
-+ unsigned int rxErrors;
-+ unsigned int rxPktCnt;
-+ unsigned int txPktCnt;
-+ unsigned int rxBytes;
-+ unsigned int txBytes;
-+}sar_stat_t;
-+
-+/* Host based look up table to xref Channel Id's, VPI/VCI, LC, CID, packet type */
-+typedef struct _tn7atm_tx_lut
-+{
-+ int inuse; /* is DMA channel available (1=y) */
-+ int chanid; /* DMA channel ID (0-0x1f) This corresponds to the Channel ID
-+ that is used in the connection config reg (TN7ATM_CONN_CONFIG) */
-+ int vpi; /* Virtual path identifier */
-+ int vci; /* Virtual channel identifier */
-+ void *vcc;
-+ int bClosing;
-+ int ready;
-+ void *net_device;
-+ int tx_total_bufs;
-+ int tx_used_bufs[2];
-+ int netqueue_stop;
-+}tn7atm_lut_t;
-+
-+/* per device data */
-+
-+typedef struct _tn7atm_private
-+{
-+ struct _tn7atm_private *next; /* next device */
-+ struct atm_dev *dev; /* ATM device */
-+ struct net_device_stats stats; /* Used to report Tx/Rx frames from ifconfig */
-+ tn7atm_lut_t lut[MAX_DMA_CHAN]; /* Tx DMA look up table (LUT) */
-+ int dsl_irq; /* ATM SAR TransmitA interrupt number */
-+ int sar_irq; /* ATM SAR ReceiveA interrupt number */
-+ char* name; /* device name */
-+ char* proc_name; /* board name under /proc/atm */
-+ unsigned int available_cell_rate; /* cell rate */
-+ unsigned int connection_cell_rate; /* cell rate */
-+ int lConnected;
-+
-+ /* Tnetd73xx CPHAL */
-+ void *pSarHalDev;
-+ void *pSarHalFunc;
-+ void *pSarOsFunc;
-+ void *halIsr;
-+ int int_num;
-+
-+ /* turbo dsl */
-+ int bTurboDsl;
-+
-+ /* spin lock for netifqueue */
-+ spinlock_t netifqueueLock;
-+ int netifqueueLockFlag;
-+ int xmitStop; /* temp fix for SAR problem */
-+}tn7atm_private_t, Tn7AtmPrivate;
-+
-+
-+
-+/* ATM adaptation layer id */
-+typedef enum tn7atm_aal {
-+ TN7ATM_AAL0 = 0,
-+ TN7ATM_AAL2 = 2,
-+ TN7ATM_AAL5 = 5,
-+} tn7atm_aal_t;
-+
-+
-+
-+
-+#endif
-diff -urN linux.old/drivers/atm/sangam_atm/tn7dsl.c linux.dev/drivers/atm/sangam_atm/tn7dsl.c
---- linux.old/drivers/atm/sangam_atm/tn7dsl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/tn7dsl.c 2005-08-23 04:46:50.109841872 +0200
-@@ -0,0 +1,1780 @@
-+/*
-+ * $Id$
-+ *
-+ * Avalanche SAR driver
-+ *
-+ * Zhicheng Tang, ztang@ti.com
-+ * 2000 (c) Texas Instruments Inc.
-+ *
-+ *
-+*/
-+#include <linux/config.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/atmdev.h>
-+#include <linux/delay.h>
-+#include <linux/spinlock.h>
-+#include <linux/smp_lock.h>
-+#include <asm/io.h>
-+#include <asm/mips-boards/prom.h>
-+#include <linux/proc_fs.h>
-+#include <linux/string.h>
-+#include <linux/ctype.h>
-+#include <linux/sysctl.h>
-+#include <linux/timer.h>
-+#include <linux/vmalloc.h>
-+#include <linux/file.h>
-+#include <asm/uaccess.h>
-+
-+#include "tn7atm.h"
-+#include "tn7api.h"
-+#include "dsl_hal_api.h"
-+
-+#ifdef CONFIG_LED_MODULE
-+#include <asm/ar7/ledapp.h>
-+#define MOD_ADSL 1
-+#define DEF_ADSL_IDLE 1
-+#define DEF_ADSL_TRAINING 2
-+#define DEF_ADSL_SYNC 3
-+#define DEF_ADSL_ACTIVITY 4
-+
-+#define LED_NUM_1 3
-+#define LED_NUM_2 4
-+
-+led_reg_t ledreg[2];
-+
-+static int led_on;
-+#endif
-+
-+extern int __guDbgLevel;
-+extern sar_stat_t sarStat;
-+static int dslInSync = 0;
-+static int bMarginThConfig;
-+static int bMarginRetrainEnable;
-+static char EOCVendorID[8]= {0xb5, 0x00, 0x54, 0x53, 0x54, 0x43, 0x00, 0x00};
-+
-+#define TC_SYNC 1
-+#define SYNC_TIME_DELAY 500000
-+
-+
-+#define DEV_DSLMOD 1
-+#define MAX_STR_SIZE 256
-+#define DSL_MOD_SIZE 256
-+
-+#define TRUE 1
-+#define FALSE 0
-+
-+
-+enum
-+{
-+ NO_MODE,
-+ MULTI_MODE,
-+ T1413_MODE,
-+ GDMT_MODE,
-+ GLITE_MODE
-+};
-+
-+
-+
-+/* a structure to store all information we need
-+ for our thread */
-+typedef struct kthread_struct
-+{
-+ /* private data */
-+
-+ /* Linux task structure of thread */
-+ struct task_struct *thread;
-+ /* Task queue need to launch thread */
-+ struct tq_struct tq;
-+ /* function to be started as thread */
-+ void (*function) (struct kthread_struct *kthread);
-+ /* semaphore needed on start and creation of thread. */
-+ struct semaphore startstop_sem;
-+
-+ /* public data */
-+
-+ /* queue thread is waiting on. Gets initialized by
-+ init_kthread, can be used by thread itself.
-+ */
-+ wait_queue_head_t queue;
-+ /* flag to tell thread whether to die or not.
-+ When the thread receives a signal, it must check
-+ the value of terminate and call exit_kthread and terminate
-+ if set.
-+ */
-+ int terminate;
-+ /* additional data to pass to kernel thread */
-+ void *arg;
-+} kthread_t;
-+
-+#ifndef ADIAG
-+#define DSP_FIRMWARE_PATH "/lib/modules/ar0700xx.bin"
-+#else
-+#define DSP_FIRMWARE_PATH "/var/tmp/ar0700xx_diag.bin"
-+#endif
-+
-+/* externs */
-+extern struct atm_dev *mydev;
-+extern unsigned int oamFarLBCount[4];
-+extern int dslhal_support_restoreTrainingInfo(PITIDSLHW_T pIhw);
-+/* gloabal functions */
-+
-+/* end of global functions */
-+
-+/* module wide declars */
-+static PITIDSLHW_T pIhw;
-+static char mod_req[16]={'\t'};
-+static volatile int bshutdown;
-+static char info[MAX_STR_SIZE];
-+static DECLARE_MUTEX_LOCKED(adsl_sem_overlay); /* Used for DSL Polling enable */
-+kthread_t overlay_thread;
-+/* end of module wide declars */
-+
-+/* Internal Functions */
-+static void tn7dsl_chng_modulation(void* data);
-+static void tn7dsl_set_modulation(void* data);
-+static int tn7dsl_reload_overlay(void);
-+static int dslmod_sysctl(ctl_table *ctl, int write, struct file * filp, void *buffer, size_t *lenp);
-+static void tn7dsl_register_dslss_led(void);
-+void tn7dsl_dslmod_sysctl_register(void);
-+void tn7dsl_dslmod_sysctl_unregister(void);
-+/* end of internal functions */
-+
-+
-+
-+
-+
-+/* prototypes */
-+
-+/* start new kthread (called by creator) */
-+void start_kthread(void (*func)(kthread_t *), kthread_t *kthread);
-+
-+/* stop a running thread (called by "killer") */
-+void stop_kthread(kthread_t *kthread);
-+
-+/* setup thread environment (called by new thread) */
-+void init_kthread(kthread_t *kthread, char *name);
-+
-+/* cleanup thread environment (called by thread upon receiving termination signal) */
-+void exit_kthread(kthread_t *kthread);
-+
-+
-+
-+/* private functions */
-+static void kthread_launcher(void *data)
-+{
-+ kthread_t *kthread = data;
-+ kernel_thread((int (*)(void *))kthread->function, (void *)kthread, 0);
-+
-+}
-+
-+/* public functions */
-+
-+/* create a new kernel thread. Called by the creator. */
-+void start_kthread(void (*func)(kthread_t *), kthread_t *kthread)
-+{
-+ /* initialize the semaphore:
-+ we start with the semaphore locked. The new kernel
-+ thread will setup its stuff and unlock it. This
-+ control flow (the one that creates the thread) blocks
-+ in the down operation below until the thread has reached
-+ the up() operation.
-+ */
-+ //init_MUTEX_LOCKED(&kthread->startstop_sem);
-+
-+ /* store the function to be executed in the data passed to
-+ the launcher */
-+ kthread->function=func;
-+
-+ /* create the new thread my running a task through keventd */
-+
-+ /* initialize the task queue structure */
-+ kthread->tq.sync = 0;
-+ INIT_LIST_HEAD(&kthread->tq.list);
-+ kthread->tq.routine = kthread_launcher;
-+ kthread->tq.data = kthread;
-+
-+ /* and schedule it for execution */
-+ schedule_task(&kthread->tq);
-+
-+ /* wait till it has reached the setup_thread routine */
-+ //down(&kthread->startstop_sem);
-+
-+}
-+
-+/* stop a kernel thread. Called by the removing instance */
-+void stop_kthread(kthread_t *kthread)
-+{
-+ if (kthread->thread == NULL)
-+ {
-+ printk("stop_kthread: killing non existing thread!\n");
-+ return;
-+ }
-+
-+ /* this function needs to be protected with the big
-+ kernel lock (lock_kernel()). The lock must be
-+ grabbed before changing the terminate
-+ flag and released after the down() call. */
-+ lock_kernel();
-+
-+ /* initialize the semaphore. We lock it here, the
-+ leave_thread call of the thread to be terminated
-+ will unlock it. As soon as we see the semaphore
-+ unlocked, we know that the thread has exited.
-+ */
-+ //init_MUTEX_LOCKED(&kthread->startstop_sem);
-+
-+ /* We need to do a memory barrier here to be sure that
-+ the flags are visible on all CPUs.
-+ */
-+ mb();
-+
-+ /* set flag to request thread termination */
-+ kthread->terminate = 1;
-+
-+ /* We need to do a memory barrier here to be sure that
-+ the flags are visible on all CPUs.
-+ */
-+ mb();
-+ kill_proc(kthread->thread->pid, SIGKILL, 1);
-+
-+ /* block till thread terminated */
-+ //down(&kthread->startstop_sem);
-+
-+ /* release the big kernel lock */
-+ unlock_kernel();
-+
-+ /* now we are sure the thread is in zombie state. We
-+ notify keventd to clean the process up.
-+ */
-+ kill_proc(2, SIGCHLD, 1);
-+
-+}
-+
-+/* initialize new created thread. Called by the new thread. */
-+void init_kthread(kthread_t *kthread, char *name)
-+{
-+ /* lock the kernel. A new kernel thread starts without
-+ the big kernel lock, regardless of the lock state
-+ of the creator (the lock level is *not* inheritated)
-+ */
-+ lock_kernel();
-+
-+ /* fill in thread structure */
-+ kthread->thread = current;
-+
-+ /* set signal mask to what we want to respond */
-+ siginitsetinv(&current->blocked, sigmask(SIGKILL)|sigmask(SIGINT)|sigmask(SIGTERM));
-+
-+ /* initialise wait queue */
-+ init_waitqueue_head(&kthread->queue);
-+
-+ /* initialise termination flag */
-+ kthread->terminate = 0;
-+
-+ /* set name of this process (max 15 chars + 0 !) */
-+ sprintf(current->comm, name);
-+
-+ /* let others run */
-+ unlock_kernel();
-+
-+ /* tell the creator that we are ready and let him continue */
-+ //up(&kthread->startstop_sem);
-+
-+}
-+
-+/* cleanup of thread. Called by the exiting thread. */
-+void exit_kthread(kthread_t *kthread)
-+{
-+ /* we are terminating */
-+
-+ /* lock the kernel, the exit will unlock it */
-+ lock_kernel();
-+ kthread->thread = NULL;
-+ mb();
-+
-+ /* notify the stop_kthread() routine that we are terminating. */
-+ //up(&kthread->startstop_sem);
-+ /* the kernel_thread that called clone() does a do_exit here. */
-+
-+ /* there is no race here between execution of the "killer" and real termination
-+ of the thread (race window between up and do_exit), since both the
-+ thread and the "killer" function are running with the kernel lock held.
-+ The kernel lock will be freed after the thread exited, so the code
-+ is really not executed anymore as soon as the unload functions gets
-+ the kernel lock back.
-+ The init process may not have made the cleanup of the process here,
-+ but the cleanup can be done safely with the module unloaded.
-+ */
-+
-+}
-+
-+
-+
-+int os_atoi(const char *pStr)
-+{
-+ int retVal = -1;
-+
-+ if(*pStr=='-')
-+ retVal = -simple_strtoul(pStr+1, (char **)NULL, 10);
-+ else
-+ retVal = simple_strtoul(pStr, (char **)NULL, 10);
-+ return retVal ;
-+}
-+
-+
-+int os_atoh(const char *pStr)
-+{
-+ int retVal = -1;
-+
-+ if(*pStr=='-')
-+ retVal = -simple_strtoul(pStr+1, (char **)NULL, 16);
-+ else
-+ retVal = simple_strtoul(pStr, (char **)NULL, 16);
-+ return retVal ;
-+}
-+
-+unsigned long os_atoul(const char *pStr)
-+{
-+ unsigned long retVal = -1;
-+
-+ retVal = simple_strtoul(pStr, (char **)NULL, 10);
-+ return retVal ;
-+}
-+
-+void dprintf( int uDbgLevel, char * szFmt, ...)
-+{
-+#ifdef DEBUG_BUILD
-+ static char buff[256];
-+ va_list ap;
-+
-+ if( __guDbgLevel < uDbgLevel)
-+ return;
-+
-+ va_start( ap, szFmt);
-+ vsprintf((char *)buff, szFmt, ap);
-+ va_end(ap);
-+ printk("%s", buff);
-+#endif
-+}
-+
-+/*int strcmp(const char *s1, const char *s2)
-+{
-+
-+ int i=0;
-+
-+ while(s1[i] !=0)
-+ {
-+ if(s2[i]==0)
-+ return -1;
-+ if(s1[i] != s2[i])
-+ return 1;
-+ i++;
-+ }
-+ if(s2[i] != 0)
-+ return 1;
-+ return 0;
-+}
-+*/
-+
-+int shim_osLoadFWImage(unsigned char *ptr)
-+{
-+ unsigned int bytesRead;
-+ mm_segment_t oldfs;
-+ static struct file *filp;
-+ unsigned int imageLength=0x4ffff;
-+
-+
-+ dprintf(4, "tn7dsl_read_dsp()\n");
-+
-+ dprintf(4,"open file %s\n", DSP_FIRMWARE_PATH);
-+
-+ filp=filp_open(DSP_FIRMWARE_PATH
-+ ,00,O_RDONLY);
-+
-+ if(filp ==NULL)
-+ {
-+ printk("Failed: Could not open DSP binary file\n");
-+ return -1;
-+ }
-+
-+ if (filp->f_op->read==NULL)
-+ return -1; /* File(system) doesn't allow reads */
-+
-+ /* Now read bytes from postion "StartPos" */
-+ filp->f_pos = 0;
-+ oldfs = get_fs();
-+ set_fs(KERNEL_DS);
-+ bytesRead = filp->f_op->read(filp,ptr,imageLength,&filp->f_pos);
-+
-+ dprintf(4,"file length = %d\n", bytesRead);
-+
-+ set_fs(oldfs);
-+
-+ /* Close the file */
-+ fput(filp);
-+
-+ return bytesRead;
-+}
-+
-+unsigned int shim_read_overlay_page(void *ptr, unsigned int secOffset, unsigned int secLength)
-+{
-+ unsigned int bytesRead;
-+ mm_segment_t oldfs;
-+ struct file *filp;
-+
-+ dprintf(4,"shim_read_overlay_page\n");
-+ //dprintf(4,"sec offset=%d, sec length =%d\n", secOffset, secLength);
-+
-+ filp=filp_open(DSP_FIRMWARE_PATH,00,O_RDONLY);
-+ if(filp ==NULL)
-+ {
-+ printk("Failed: Could not open DSP binary file\n");
-+ return -1;
-+ }
-+
-+ if (filp->f_op->read==NULL)
-+ return -1; /* File(system) doesn't allow reads */
-+
-+ /* Now read bytes from postion "StartPos" */
-+
-+ if(filp->f_op->llseek)
-+ filp->f_op->llseek(filp,secOffset, 0);
-+ oldfs = get_fs();
-+ set_fs(KERNEL_DS);
-+ filp->f_pos = secOffset;
-+ bytesRead = filp->f_op->read(filp,ptr,secLength,&filp->f_pos);
-+
-+ set_fs(oldfs);
-+ /* Close the file */
-+ fput(filp);
-+ return bytesRead;
-+}
-+
-+int shim_osLoadDebugFWImage(unsigned char *ptr)
-+{
-+ return 0;
-+}
-+int shim_osStringCmp(const char *s1, const char *s2)
-+{
-+ return strcmp(s1, s2);
-+}
-+
-+void *shim_osAllocateMemory(unsigned int size)
-+{
-+ return ((void *)kmalloc(size, GFP_KERNEL));
-+}
-+
-+void *shim_osAllocateDmaMemory(unsigned int size)
-+{
-+ /*
-+ int order;
-+
-+ order=1;
-+ size=size/4096;
-+ while(size >= 1)
-+ {
-+ order++;
-+ size=size/2;
-+ }
-+
-+ return ( (void *)__get_free_pages(GFP_ATOMIC, order));
-+ */
-+ //return ((void *)kmalloc(size, GFP_ATOMIC));
-+ //return ((void *)kmalloc(size, GFP_KERNEL));
-+ void *ptr;
-+
-+ ptr = kmalloc(size, GFP_ATOMIC);
-+ if(ptr==NULL)
-+ {
-+ printk("failed atomic\n");
-+ ptr = kmalloc(size, GFP_KERNEL);
-+ if(ptr==NULL)
-+ {
-+ printk("failed kernel\n");
-+ ptr = kmalloc(size, GFP_KERNEL|GFP_DMA);
-+ }
-+ }
-+ printk("size=%d\n", size);
-+ return ptr;
-+
-+}
-+
-+
-+void shim_osFreeMemory(void *ptr, unsigned int size)
-+{
-+
-+ kfree(ptr);
-+}
-+
-+void shim_osFreeDmaMemory(void *ptr, unsigned int size)
-+{
-+/*
-+ int order;
-+
-+ order=1;
-+ size=size/4096;
-+ while(size >=1)
-+ {
-+ order++;
-+ size=size/2;
-+ }
-+ free_pages(ptr, order);
-+*/
-+ kfree(ptr);
-+}
-+
-+void *shim_osAllocateVMemory(unsigned int size)
-+{
-+
-+ return ((void *)vmalloc(size));
-+}
-+
-+void shim_osFreeVMemory(void *ptr, unsigned int size)
-+{
-+ vfree(ptr);
-+}
-+
-+void shim_osMoveMemory(char *dst, char *src, unsigned int numBytes)
-+{
-+ memcpy(dst, src, numBytes);
-+}
-+
-+void shim_osZeroMemory(char *dst, unsigned int numBytes)
-+{
-+ memset(dst, 0, numBytes);
-+}
-+
-+void shim_osWriteBackCache(void *addr, unsigned int size)
-+{
-+ unsigned int i,Size=(((unsigned int)addr)&0xf)+size;
-+
-+ for (i=0;i<Size;i+=16,addr+=16)
-+ {
-+ __asm__(" .set mips3 ");
-+ __asm__(" cache 25, (%0)" : : "r" (addr));
-+ __asm__(" .set mips0 ");
-+ }
-+}
-+
-+void shim_osInvalidateCache(void *addr, unsigned int size)
-+{
-+ unsigned int i,Size=(((unsigned int)addr)&0xf)+size;
-+
-+ for (i=0;i<Size;i+=16,addr+=16)
-+ {
-+ __asm__(" .set mips3 ");
-+ __asm__("cache 17, (%0)" : : "r" (addr));
-+ __asm__(" .set mips0 ");
-+ }
-+}
-+
-+void shim_osClockWait(int val)
-+{
-+ unsigned int chkvalue;
-+ chkvalue=val/64;
-+
-+ if(chkvalue > 1000)
-+ {
-+ mdelay(chkvalue/1000);
-+ return;
-+ }
-+ else
-+ udelay(val/64);
-+} /* end of cwait() */
-+
-+unsigned int shim_osClockTick(int val)
-+{
-+ return jiffies;
-+}
-+
-+int flags;
-+spinlock_t shimLock;
-+
-+void shim_osCriticalEnter(void)
-+{
-+ spin_lock_irqsave(&shimLock, flags);
-+
-+}
-+
-+
-+void shim_osCriticalExit(void)
-+{
-+ spin_unlock_irqrestore(&shimLock, flags);
-+}
-+
-+
-+int tn7dsl_proc_stats(char* buf, char **start, off_t offset, int count,
-+ int *eof, void *data)
-+{
-+
-+ int len = 0;
-+ int limit = count - 80;
-+ int F4count, F5count;
-+
-+
-+ /* Read Ax5 Stats */
-+ dslhal_api_gatherStatistics(pIhw);
-+
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\nAR7 DSL Modem Statistics:\n");
-+ if(len<=limit)
-+ len += sprintf(buf+len, "--------------------------------\n");
-+ /* us and ds Connection Rates */
-+ if(len<=limit)
-+ len += sprintf(buf+len, "[DSL Modem Stats]\n");
-+
-+
-+ if(len<=limit)
-+ {
-+ if(pIhw->lConnected != 1)
-+ {
-+ pIhw->AppData.USConRate = 0;
-+ pIhw->AppData.DSConRate = 0;
-+ }
-+ len += sprintf(buf+len, "\tUS Connection Rate:\t%u\tDS Connection Rate:\t%u\n",
-+ (unsigned int)pIhw->AppData.USConRate,
-+ (unsigned int)pIhw->AppData.DSConRate );
-+ }
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tDS Line Attenuation:\t%u\tDS Margin:\t\t%u\n",
-+ (unsigned int)pIhw->AppData.dsLineAttn/2,
-+ (unsigned int)pIhw->AppData.dsMargin/2 );
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tUS Line Attenuation:\t%u\tUS Margin:\t\t%u\n",
-+ (unsigned int)pIhw->AppData.usLineAttn,
-+ (unsigned int)pIhw->AppData.usMargin );
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tUS Payload :\t\t%u\tDS Payload:\t\t%u\n",
-+ ((unsigned int)pIhw->AppData.usAtm_count[0] + (unsigned int)pIhw->AppData.usAtm_count[1])*48,
-+ ((unsigned int)pIhw->AppData.dsGood_count[0] + (unsigned int)pIhw->AppData.dsGood_count[1])*48);
-+ /* Superframe Count */
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tUS Superframe Cnt :\t%u\tDS Superframe Cnt:\t%u\n",
-+ (unsigned int)pIhw->AppData.usSuperFrmCnt,
-+ (unsigned int)pIhw->AppData.dsSuperFrmCnt );
-+
-+ /* US and DS power */
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tUS Transmit Power :\t%u\tDS Transmit Power:\t%u\n",
-+ (unsigned int)pIhw->AppData.usTxPower/256,
-+ (unsigned int)pIhw->AppData.dsTxPower/256 );
-+ /* DSL Stats Errors*/
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tLOS errors:\t\t%u\tSEF errors:\t\t%u\n",
-+ (unsigned int)pIhw->AppData.LOS_errors,
-+ (unsigned int)pIhw->AppData.SEF_errors );
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tFrame mode:\t\t%u\tMax Frame mode:\t\t%u\n",
-+ (unsigned int)pIhw->AppData.FrmMode,
-+ (unsigned int)pIhw->AppData.MaxFrmMode );
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tTrained Path:\t\t%u\tUS Peak Cell Rate:\t%u\n",
-+ (unsigned int)pIhw->AppData.TrainedPath,
-+ (unsigned int)pIhw->AppData.USConRate*1000/8/53 );
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tTrained Mode:\t\t%u\tSelected Mode:\t\t%u\n",
-+ (unsigned int)pIhw->AppData.TrainedMode, (unsigned int)pIhw->AppData.StdMode );
-+
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tATUC Vendor ID:\t%u\tATUC Revision:\t\t%u\n",
-+ (unsigned int)pIhw->AppData.atucVendorId, pIhw->AppData.atucRevisionNum);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tHybrid Selected:\t%u\n",
-+ (unsigned int)pIhw->AppData.currentHybridNum);
-+
-+ /* Upstream Interleaved Errors */
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\n\t[Upstream (TX) Interleave path]\n");
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tCRC: \t%u\tFEC: \t%u\tNCD: \t%u\n",
-+ (unsigned int)pIhw->AppData.usICRC_errors,
-+ (unsigned int)pIhw->AppData.usIFEC_errors,
-+ (unsigned int)pIhw->AppData.usINCD_error);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tLCD: \t%u\tHEC: \t%u\n",
-+ (unsigned int)pIhw->AppData.usILCD_errors,
-+ (unsigned int)pIhw->AppData.usIHEC_errors);
-+ /* Downstream Interleaved Errors */
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\n\t[Downstream (RX) Interleave path]\n");
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tCRC: \t%u\tFEC: \t%u\tNCD: \t%u\n",
-+ (unsigned int)pIhw->AppData.dsICRC_errors,
-+ (unsigned int)pIhw->AppData.dsIFEC_errors,
-+ (unsigned int)pIhw->AppData.dsINCD_error);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tLCD: \t%u\tHEC: \t%u\n",
-+ (unsigned int)pIhw->AppData.dsILCD_errors,
-+ (unsigned int)pIhw->AppData.dsIHEC_errors);
-+ /* Upstream Fast Errors */
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\n\t[Upstream (TX) Fast path]\n");
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tCRC: \t%u\tFEC: \t%u\tNCD: \t%u\n",
-+ (unsigned int)pIhw->AppData.usFCRC_errors,
-+ (unsigned int)pIhw->AppData.usFFEC_errors,
-+ (unsigned int)pIhw->AppData.usFNCD_error);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tLCD: \t%u\tHEC: \t%u\n",
-+ (unsigned int)pIhw->AppData.usFLCD_errors,
-+ (unsigned int)pIhw->AppData.usFHEC_errors);
-+ /* Downstream Fast Errors */
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\n\t[Downstream (RX) Fast path]\n");
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tCRC: \t%u\tFEC: \t%u\tNCD: \t%u\n",
-+ (unsigned int)pIhw->AppData.dsFCRC_errors,
-+ (unsigned int)pIhw->AppData.dsFFEC_errors,
-+ (unsigned int)pIhw->AppData.dsFNCD_error);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tLCD: \t%u\tHEC: \t%u\n",
-+ (unsigned int)pIhw->AppData.dsFLCD_errors,
-+ (unsigned int)pIhw->AppData.dsFHEC_errors);
-+ /* ATM stats upstream */
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\n[ATM Stats]");
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\n\t[Upstream/TX]\n");
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tGood Cell Cnt:\t%u\n\tIdle Cell Cnt:\t%u\n\n",
-+ (unsigned int)pIhw->AppData.usAtm_count[0] + (unsigned int)pIhw->AppData.usAtm_count[1],
-+ (unsigned int)pIhw->AppData.usIdle_count[0] + (unsigned int)pIhw->AppData.usIdle_count[1]);
-+ /* ATM stats downstream */
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\n\t[Downstream/RX)]\n");
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tGood Cell Cnt:\t%u\n\tIdle Cell Cnt:\t%u\n\tBad Hec Cell Cnt:\t%u\n",
-+ (unsigned int)pIhw->AppData.dsGood_count[0] + (unsigned int)pIhw->AppData.dsGood_count[1],
-+ (unsigned int)pIhw->AppData.dsIdle_count[0] + (unsigned int)pIhw->AppData.dsIdle_count[1],
-+ (unsigned int)pIhw->AppData.dsBadHec_count[0] + (unsigned int)pIhw->AppData.dsBadHec_count[1]);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tOverflow Dropped Cell Cnt:\t%u\n",
-+ (unsigned int)pIhw->AppData.dsOVFDrop_count[0] + (unsigned int)pIhw->AppData.dsOVFDrop_count[1]);
-+ tn7sar_get_stats(pIhw->pOsContext);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\n[SAR AAL5 Stats]\n");
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tTx PDU's:\t%u\n\tRx PDU's:\t%u\n",
-+ sarStat.txPktCnt,
-+ sarStat.rxPktCnt);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tTx Total Bytes:\t%u\n\tRx Total Bytes:\t%u\n",
-+ sarStat.txBytes,
-+ sarStat.rxBytes);
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\tTx Total Error Counts:\t%u\n\tRx Total Error Counts:\t%u\n\n",
-+ sarStat.txErrors,
-+ sarStat.rxErrors);
-+
-+ /* oam loopback info */
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\n[OAM Stats]\n");
-+
-+ tn7sar_get_near_end_loopback_count(&F4count, &F5count);
-+
-+ if(len<=limit)
-+ {
-+ len += sprintf(buf+len, "\tNear End F5 Loop Back Count:\t%u\n\tNear End F4 Loop Back Count:\t%u\n\tFar End F5 Loop Back Count:\t%u\n\tFar End F4 Loop Back Count:\t%u\n",
-+ F5count,
-+ F4count,
-+ oamFarLBCount[0] + oamFarLBCount[2],
-+ oamFarLBCount[1] + oamFarLBCount[3]);
-+ }
-+ return len;
-+}
-+
-+int
-+tn7dsl_proc_modem(char* buf, char **start, off_t offset, int count,
-+ int *eof, void *data)
-+{
-+
-+ int len = 0;
-+ int limit = count - 80;
-+
-+ char *state;
-+ int tag;
-+
-+ tag= dslhal_api_pollTrainingStatus(pIhw);
-+ tag = pIhw->AppData.bState;
-+
-+ switch(tag){
-+ case 0: state = "ACTREQ"; break;
-+ case 1: state = "QUIET1"; break;
-+ case 2: state = "IDLE"; break;
-+ case 3: state = "INIT"; break;
-+ case 4: state = "RTDL"; break;
-+ case 5: state = "SHOWTIME"; break;
-+ default: state = "unknown"; break;
-+ }
-+
-+ if(pIhw->lConnected == 1)
-+ state = "SHOWTIME";
-+ if(len<=limit)
-+ len += sprintf(buf+len,"%s\n",state);
-+
-+ return len;
-+}
-+
-+
-+
-+int tn7dsl_handle_interrupt(void)
-+{
-+ int intsrc;
-+ unsigned char cMsgRa[6];
-+ short margin;
-+
-+ dprintf(4, "tn7dsl_handle_dsl_interrupt()\n");
-+ if(pIhw)
-+ {
-+ intsrc=dslhal_api_acknowledgeInterrupt(pIhw);
-+ dslhal_api_handleTrainingInterrupt(pIhw, intsrc);
-+
-+ if(pIhw->lConnected == TC_SYNC)
-+ {
-+
-+ if(dslInSync == 0)
-+ {
-+ printk("DSL in Sync\n");
-+ tn7atm_device_connect_status(pIhw->pOsContext, 1);
-+ dslhal_api_initStatistics(pIhw);
-+ dslhal_api_gatherStatistics(pIhw);
-+#ifdef CONFIG_LED_MODULE
-+// led_operation(MOD_ADSL, DEF_ADSL_SYNC);
-+ led_on = DEF_ADSL_SYNC;
-+#endif
-+ /* add auto margin retrain */
-+ if(pIhw->AppData.TrainedMode < 5)
-+ {
-+ if(bMarginRetrainEnable && bMarginThConfig == 0)
-+ {
-+ dslhal_support_getCMsgsRa(pIhw, cMsgRa);
-+ margin = *(unsigned short *)&cMsgRa[4];
-+ margin = (margin >> 6) & 0x3f;
-+ if(margin & 0x20) // highest bit is 1
-+ {
-+ margin = -(margin & 0x1f);
-+ }
-+
-+ //printk("margin = %d, cmsg-ra = %02x %02x %02x %02x %02x %02x\n", margin, cMsgRa[0],cMsgRa[1],cMsgRa[2],cMsgRa[3],cMsgRa[4],cMsgRa[5]);
-+ dslhal_api_setMarginThreshold(pIhw, margin*2); /* DSL margin is in 0.5db */
-+ }
-+ }
-+
-+ }
-+ dslInSync = 1;
-+ }
-+ else
-+ {
-+ if(dslInSync == 1)
-+ {
-+ dslInSync = 0;
-+ tn7atm_device_connect_status(pIhw->pOsContext, 0);
-+ up(&adsl_sem_overlay);
-+ printk("DSL out of syn\n");
-+ }
-+#ifdef CONFIG_LED_MODULE
-+ if(pIhw->AppData.bState < RSTATE_INIT)
-+ {
-+ if(led_on != DEF_ADSL_IDLE)
-+ {
-+// led_operation(MOD_ADSL, DEF_ADSL_IDLE);
-+ led_on = DEF_ADSL_IDLE;
-+ }
-+ }
-+ else
-+ {
-+ if(led_on != DEF_ADSL_TRAINING)
-+ {
-+// led_operation(MOD_ADSL, DEF_ADSL_TRAINING);
-+ led_on = DEF_ADSL_TRAINING;
-+ }
-+
-+ }
-+
-+#endif
-+
-+ }
-+ }
-+ return 0;
-+}
-+
-+
-+int tn7dsl_get_dslhal_version(char *pVer)
-+{
-+ dslVer ver;
-+
-+ dslhal_api_getDslHalVersion(&ver);
-+
-+ memcpy(pVer,&ver,8);
-+ return 0;
-+}
-+
-+int tn7dsl_get_dsp_version(char *pVer)
-+{
-+ dspVer ver;
-+ dslhal_api_getDspVersion(pIhw, &ver);
-+ memcpy(pVer, &ver, 9);
-+ return 0;
-+}
-+
-+
-+static int
-+tn7dsl_get_modulation(void)
-+{
-+ char *ptr = NULL;
-+
-+ dprintf(4, "tn7dsl_get_modulation\n");
-+ //printk("tn7dsl_get_modulation\n");
-+ ptr = prom_getenv("modulation");
-+
-+ if (!ptr) {
-+ //printk("modulation is not set in adam2 env\n");
-+ //printk("Using multimode\n");
-+ return 0;
-+ }
-+ printk("dsl modulation = %s\n", ptr);
-+
-+ tn7dsl_set_modulation(ptr);
-+
-+ return 0;
-+}
-+
-+
-+static int tn7dsl_set_dsl(void)
-+{
-+
-+ char *ptr = NULL;
-+ int value;
-+ int i, offset[2]={4,11},oamFeature=0;
-+ char tmp[4];
-+ char dspVer[10];
-+
-+ // OAM Feature Configuration
-+ dslhal_api_dspInterfaceRead(pIhw,(unsigned int)pIhw->pmainAddr, 2, (unsigned int *)&offset, (unsigned char *)&oamFeature, 4);
-+ oamFeature |= dslhal_support_byteSwap32(0x0000000C);
-+ dslhal_api_dspInterfaceWrite(pIhw,(unsigned int)pIhw->pmainAddr, 2, (unsigned int *)&offset, (unsigned char *)&oamFeature, 4);
-+
-+ // modulation
-+ ptr = prom_getenv("modulation");
-+ if (ptr)
-+ {
-+ printk("dsl modulation = %s\n", ptr);
-+ tn7dsl_set_modulation(ptr);
-+ }
-+
-+ // margin retrain
-+ ptr = NULL;
-+ ptr = prom_getenv("enable_margin_retrain");
-+ if(ptr)
-+ {
-+ value = os_atoi(ptr);
-+ if(value == 1)
-+ {
-+ dslhal_api_setMarginMonitorFlags(pIhw, 0, 1);
-+ bMarginRetrainEnable = 1;
-+ printk("enable showtime margin monitor.\n");
-+ ptr = NULL;
-+ ptr = prom_getenv("margin_threshold");
-+ if(ptr)
-+ {
-+ value = os_atoi(ptr);
-+ printk("Set margin threshold to %d x 0.5 db\n",value);
-+ if(value >= 0)
-+ {
-+ dslhal_api_setMarginThreshold(pIhw, value);
-+ bMarginThConfig=1;
-+ }
-+ }
-+ }
-+ }
-+
-+ // rate adapt
-+ ptr = NULL;
-+ ptr = prom_getenv("enable_rate_adapt");
-+ if(ptr)
-+ {
-+ dslhal_api_setRateAdaptFlag(pIhw, os_atoi(ptr));
-+ }
-+
-+ // trellis
-+ ptr = NULL;
-+ ptr = prom_getenv("enable_trellis");
-+ if(ptr)
-+ {
-+ dslhal_api_setTrellisFlag(pIhw, os_atoi(ptr));
-+ }
-+
-+ // maximum bits per carrier
-+ ptr = NULL;
-+ ptr = prom_getenv("maximum_bits_per_carrier");
-+ if(ptr)
-+ {
-+ dslhal_api_setMaxBitsPerCarrier(pIhw, os_atoi(ptr));
-+ }
-+
-+ // maximum interleave depth
-+ ptr = NULL;
-+ ptr = prom_getenv("maximum_interleave_depth");
-+ if(ptr)
-+ {
-+ dslhal_api_setMaxInterleaverDepth(pIhw, os_atoi(ptr));
-+ }
-+
-+ // inner and outer pairs
-+ ptr = NULL;
-+ ptr = prom_getenv("pair_selection");
-+ if(ptr)
-+ {
-+ dslhal_api_selectInnerOuterPair(pIhw, os_atoi(ptr));
-+ }
-+
-+ ptr = NULL;
-+ ptr = prom_getenv("dgas_polarity");
-+ if(ptr)
-+ {
-+ dslhal_api_configureDgaspLpr(pIhw, 1, 1);
-+ dslhal_api_configureDgaspLpr(pIhw, 0, os_atoi(ptr));
-+ }
-+
-+ ptr = NULL;
-+ ptr = prom_getenv("los_alarm");
-+ if(ptr)
-+ {
-+ dslhal_api_disableLosAlarm(pIhw, os_atoi(ptr));
-+ }
-+
-+ ptr = NULL;
-+ ptr = prom_getenv("eoc_vendor_id");
-+ if(ptr)
-+ {
-+ for(i=0;i<8;i++)
-+ {
-+ tmp[0]=ptr[i*2];
-+ tmp[1]=ptr[i*2+1];
-+ tmp[2]=0;
-+ EOCVendorID[i] = os_atoh(tmp);
-+ //printk("tmp=%s--", tmp);
-+ //printk("ID[%d]=0x%02x ", i, (unsigned char)EOCVendorID[i]);
-+ }
-+ tn7dsl_get_dsp_version(dspVer);
-+ //printk("Annex =%d\n", dspVer[8]);
-+ if(dspVer[8]==2) // annex b
-+ {
-+ //printk("EOCVendorID=%02x %02x %02x %02x %02x %02x %02x %02x\n", EOCVendorID[0], EOCVendorID[1], EOCVendorID[2], EOCVendorID[3],
-+ // EOCVendorID[4], EOCVendorID[5], EOCVendorID[6], EOCVendorID[7]);
-+ dslhal_api_setEocVendorId(pIhw, EOCVendorID);
-+ }
-+
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: static void tn7dsl_init(void)
-+ *
-+ * Description: This function initializes
-+ * Ar7 DSL interface
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-+
-+int tn7dsl_init(void *priv)
-+{
-+
-+ printk("Initializing DSL interface\n");
-+
-+
-+ /* start dsl */
-+ if(dslhal_api_dslStartup(&pIhw) !=0 )
-+ {
-+ printk("DSL start failed.\n");
-+ return -1;
-+ }
-+
-+ // set dsl into overlay page reload mode
-+ pIhw->bAutoRetrain = 1;
-+
-+ // set default training properties
-+ tn7dsl_set_dsl();
-+
-+ pIhw->pOsContext = priv;
-+
-+ //start_kthread(tn7dsl_reload_overlay, &overlay_thread);
-+
-+ /*register dslss LED with led module */
-+#ifdef CONFIG_LED_MODULE
-+ tn7dsl_register_dslss_led();
-+#endif
-+
-+
-+ return 0; /* What do we return here? */
-+}
-+
-+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * Function: int avsar_exit(void)
-+ *
-+ * Description: Avalanche SAR exit function
-+ *
-+ *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-+
-+void tn7dsl_exit (void)
-+{
-+
-+ bshutdown = 1;
-+#ifdef CONFIG_LED_MODULE
-+#ifdef DEREGISTER_LED
-+ //down(&adsl_sem_overlay);
-+ deregister_led_drv(LED_NUM_1);
-+ deregister_led_drv(LED_NUM_2);
-+#else
-+// led_operation(MOD_ADSL,DEF_ADSL_IDLE);
-+#endif
-+#endif
-+ stop_kthread(&overlay_thread);
-+ dslhal_api_dslShutdown(pIhw);
-+
-+}
-+
-+
-+static int tn7dsl_process_oam_string(int *type, int *pvpi, int *pvci, int *pdelay)
-+{
-+ int i=1;
-+ int j=0;
-+ int vci, vpi;
-+ char tmp[16];
-+ int chan;
-+ int tt;
-+
-+ while(j<8)
-+ {
-+ tmp[j] = mod_req[i];
-+ //printk("tmp[%d]=%c, %d\n", j, tmp[j], tmp[j]);
-+ if(tmp[j] == 0x50 || tmp[j] == 0x70)
-+ break;
-+ j++;
-+ i++;
-+ }
-+
-+ tmp[j] = 0;
-+ vpi = os_atoi(tmp);
-+
-+ i++;
-+ j=0;
-+ while(j<8)
-+ {
-+ tmp[j] = mod_req[i];
-+ //printk("tmp[%d]=%c, %d\n", j, tmp[j], tmp[j]);
-+ if(tmp[j] == 0x43 || tmp[j] == 0x63)
-+ break;
-+
-+ j++;
-+ i++;
-+ }
-+
-+ vci = os_atoi(tmp);
-+
-+ if(vci==0) // f4 oam
-+ *type = 1;
-+ else
-+ *type = 0;
-+
-+
-+ tt=5000;
-+ i++;
-+ j=0;
-+ tmp[j] = mod_req[i];
-+ if(tmp[j]==0x44 || tmp[j]==0x64)
-+ {
-+ i++;
-+ while(j<8)
-+ {
-+ tmp[j] = mod_req[i];
-+
-+ //printk("tmp[%d]=%c, %d\n", j, tmp[j], tmp[j]);
-+ if(tmp[j] == 0x54 || tmp[j] == 0x74)
-+ break;
-+
-+ j++;
-+ i++;
-+ }
-+ tt = os_atoi(tmp);
-+ }
-+
-+ chan = tn7atm_lut_find(vpi, vci);
-+
-+ *pvci=vci;
-+ *pvpi=vpi;
-+ *pdelay =tt;
-+ dprintf(2, "oam chan=%d, type =%d\n", chan, *type);
-+
-+ return chan;
-+}
-+
-+static void tn7dsl_dump_memory(void)
-+{
-+ unsigned int *pUi;
-+ int i=1;
-+ int j=0;
-+ int addr, len;
-+ char tmp[16];
-+
-+
-+ while(j<8)
-+ {
-+ tmp[j] = mod_req[i];
-+ j++;
-+ i++;
-+ }
-+
-+ tmp[j] = 0;
-+
-+ addr = os_atoh(tmp);
-+
-+ printk("start dump address =0x%x\n", addr);
-+ pUi = (unsigned int *)addr;
-+ i++;
-+ j=0;
-+ while(j<8)
-+ {
-+ tmp[j] = mod_req[i];
-+ //printk("tmp[%d]=%c, %d\n", j, tmp[j], tmp[j]);
-+ if(tmp[j] == 0x43 || tmp[j] == 0x63)
-+ break;
-+
-+ j++;
-+ i++;
-+ }
-+
-+ len = os_atoi(tmp);
-+ j=0;
-+ for(i=0; i<len; i++)
-+ {
-+ if(j==0)
-+ printk("0x%08x: ", (unsigned int)pUi);
-+ printk("%08x ", *pUi);
-+ pUi++;
-+ j++;
-+ if(j==4)
-+ {
-+ printk("\n");
-+ j=0;
-+ }
-+ }
-+
-+}
-+
-+
-+
-+static int dslmod_sysctl(ctl_table *ctl, int write, struct file * filp,
-+ void *buffer, size_t *lenp)
-+{
-+ char *ptr;
-+ int ret, len = 0;
-+ int chan;
-+ int type;
-+ int vpi,vci,timeout;
-+
-+ if (!*lenp || (filp->f_pos && !write)) {
-+ *lenp = 0;
-+ return 0;
-+ }
-+ /* DSL MODULATION is changed */
-+ if(write)
-+ {
-+ ret = proc_dostring(ctl, write, filp, buffer, lenp);
-+
-+ switch (ctl->ctl_name)
-+ {
-+ case DEV_DSLMOD:
-+ ptr = strpbrk(info, " \t");
-+ strcpy(mod_req, info);
-+
-+ /* parse the string to determine the action */
-+ if(mod_req[0] == 0x45 || mod_req[0] == 0x65 ) // 'e', or 'E' f5 end to end
-+ {
-+ chan = tn7dsl_process_oam_string(&type, &vpi, &vci, &timeout);
-+ tn7sar_oam_generation(pIhw->pOsContext, chan, type, vpi, vci, timeout);
-+ }
-+ else if(mod_req[0] == 0x53 || mod_req[0] == 0x73 ) // 's', or 'S' f5 seg to seg
-+ {
-+ chan=tn7dsl_process_oam_string(&type, &vpi, &vci,&timeout);
-+ type = type | (1<<1);
-+ tn7sar_oam_generation(pIhw->pOsContext, chan, type, vpi, vci,timeout);
-+ }
-+ //debug only. Dump memory
-+ else if(mod_req[0] == 0x44 || mod_req[0] == 0x64 ) // 'd' or 'D'
-+ tn7dsl_dump_memory();
-+ else
-+ tn7dsl_chng_modulation(info);
-+ break;
-+ }
-+ }
-+ else
-+ {
-+ len += sprintf(info+len, mod_req);
-+ ret = proc_dostring(ctl, write, filp, buffer, lenp);
-+ }
-+ return ret;
-+}
-+
-+
-+ctl_table dslmod_table[] = {
-+ {DEV_DSLMOD, "dslmod", info, DSL_MOD_SIZE, 0644, NULL, &dslmod_sysctl},
-+ {0}
-+ };
-+
-+/* Make sure that /proc/sys/dev is there */
-+ctl_table dslmod_root_table[] = {
-+#ifdef CONFIG_PROC_FS
-+ {CTL_DEV, "dev", NULL, 0, 0555, dslmod_table},
-+#endif /* CONFIG_PROC_FS */
-+ {0}
-+ };
-+
-+static struct ctl_table_header *dslmod_sysctl_header;
-+
-+void tn7dsl_dslmod_sysctl_register(void)
-+{
-+ static int initialized;
-+
-+ if (initialized == 1)
-+ return;
-+
-+ dslmod_sysctl_header = register_sysctl_table(dslmod_root_table, 1);
-+ dslmod_root_table->child->de->owner = THIS_MODULE;
-+
-+ /* set the defaults */
-+ info[0] = 0;
-+
-+ initialized = 1;
-+}
-+
-+void tn7dsl_dslmod_sysctl_unregister(void)
-+{
-+ unregister_sysctl_table(dslmod_sysctl_header);
-+}
-+
-+static void
-+tn7dsl_set_modulation(void* data)
-+{
-+ dprintf(4,"tn7dsl_set_modulation\n");
-+
-+ if(!strcmp(data, "T1413"))
-+ {
-+ printk("retraining in T1413 mode\n");
-+ dslhal_api_setTrainingMode(pIhw, T1413_MODE);
-+ return;
-+ }
-+ if(!strcmp(data, "GDMT"))
-+ {
-+ dslhal_api_setTrainingMode(pIhw, GDMT_MODE);
-+ return;
-+ }
-+ if(!strcmp(data, "GLITE"))
-+ {
-+ dslhal_api_setTrainingMode(pIhw, GLITE_MODE);
-+ return;
-+ }
-+ if(!strcmp(data, "MMODE"))
-+ {
-+ dslhal_api_setTrainingMode(pIhw, MULTI_MODE);
-+ return;
-+ }
-+ if(!strcmp(data, "NMODE"))
-+ {
-+ dslhal_api_setTrainingMode(pIhw, NO_MODE);
-+ return;
-+ }
-+
-+ return;
-+}
-+
-+
-+/* Codes added for compiling tiadiag.o for Analog Diagnostic tests */
-+#ifdef ADIAG
-+
-+enum
-+{
-+ HOST_ACTREQ, // Send R-ACKREQ and monitor for C-ACKx
-+ HOST_QUIET, // Sit quietly doing nothing for about 60 seconds, DEFAULT STATE; R_IDLE
-+ HOST_XMITBITSWAP, // Perform upstream bitswap - FOR INTERNAL USE ONLY
-+ HOST_RCVBITSWAP, // Perform downstream bitswap - FOR INTERNAL USE ONLY
-+ HOST_RTDLPKT, // Send a remote download packet - FOR INTERNAL USE ONLY
-+ HOST_CHANGELED, // Read the LED settings and change accordingly
-+ HOST_IDLE, // Sit quiet
-+ HOST_REVERBTEST, // Generate REVERB for manufacturing test
-+ HOST_CAGCTEST, // Set coarse receive gain for manufacturing test
-+ HOST_DGASP, // send Dying Gasp messages through EOC channel
-+ HOST_GHSREQ, // G.hs - FOR INTERNAL USE ONLY
-+ HOST_GHSMSG, // G.hs - FOR INTERNAL USE ONLY
-+ HOST_GHS_SENDGALF, // G.hs - FOR INTERNAL USE ONLY
-+ HOST_GHSEXIT, // G.hs - FOR INTERNAL USE ONLY
-+ HOST_GHSMSG1, // G.hs - FOR INTERNAL USE ONLY
-+ HOST_HYBRID, // Enable/Disable automatic hybrid switch
-+ HOST_RJ11SELECT, // RJ11 inner/outer pair select
-+ HOST_DIGITAL_MEM, // Digital Diags: run external memory tests
-+ HOST_TXREVERB, // AFE Diags: TX path Reverb
-+ HOST_TXMEDLEY, // AFE Diags: TX path Medley
-+ HOST_RXNOISEPOWER, // AFE Diags: RX noise power
-+ HOST_ECPOWER, // AFE Diags: RX eco power
-+ HOST_ALL_ADIAG, // AFE Diags: all major analog diagnostic modes. Host is responsible to initiate each diagnostic sessions
-+ HOST_USER_ADIAG, // AFE Diags: Host fills in analog diagnostic input data structure as specified and requests DSP to perform measurements as specified
-+ HOST_QUIT_ADIAG, // AFE Diags: Host requests DSP to quit current diagnostic session. This is used for stopping the transmit REVERB/MEDLEY
-+ HOST_NO_CMD, // All others - G.hs - FOR INTERNAL USE ONLY
-+ HOST_DSLSS_SHUTDOWN, // Host initiated DSLSS shutdown message
-+ HOST_SET_GENERIC, // Set generic CO profile
-+ HOST_UNDO_GENERIC // Set profile previous to Generic
-+};
-+
-+enum
-+{
-+ DSP_IDLE, // R_IDLE state entered
-+ DSP_ACTMON, // R_ACTMON state entered
-+ DSP_TRAIN, // R_TRAIN state entered
-+ DSP_ACTIVE, // R_ACTIVE state entered
-+ DSP_XMITBITSWAP, // Upstream bitswap complete - FOR INTERNAL USE ONLY
-+ DSP_RCVBITSWAP, // Downstream bitswap complete - FOR INTERNAL USE ONLY
-+ DSP_RTDL, // R_RTDL state entered - FOR INTERNAL USE ONLY
-+ DSP_RRTDLPKT, // RTDL packet received - FOR INTERNAL USE ONLY
-+ DSP_XRTDLPKT, // RTDL packet transmitted - FOR INTERNAL USE ONLY
-+ DSP_ERROR, // Command rejected, wrong state for this command
-+ DSP_REVERBTEST, // Manufacturing REVERB test mode entered
-+ DSP_CAGCTEST, // Manufacturing receive gain test done
-+ DSP_OVERLAY_START, // Notify host that page overlay has started - overlay number indicated by "tag"
-+ DSP_OVERLAY_END, // Notify host that page overlay has ended - overlay number indicated by "tag"
-+ DSP_CRATES1, // CRATES1 message is valid and should be copied to host memory now
-+ DSP_SNR, // SNR calculations are ready and should be copied to host memory now
-+ DSP_GHSMSG, // G.hs - FOR INTERNAL USE ONLY
-+ DSP_RCVBITSWAP_TIMEOUT, // Acknowledge Message was not received within ~500 msec (26 Superframes).
-+ DSP_ATM_TC_SYNC, // Indicates true TC sync on both the upstream and downstream. Phy layer ready for data xfer.
-+ DSP_ATM_NO_TC_SYNC, // Indicates loss of sync on phy layer on either US or DS.
-+ DSP_HYBRID, // DSP completed hybrid switch
-+ DSP_RJ11SELECT, // DSP completed RJ11 inner/outer pair select
-+ DSP_INVALID_CMD, // Manufacturing (Digital and AFE) diags: CMD received not recognized
-+ DSP_TEST_PASSED, // Manufacturing diags: test passed
-+ DSP_TEST_FAILED, // Manufacturing diags: test failed
-+ DSP_TXREVERB, // Manufacturing AFE diags: Response to HOST_TXREVERB
-+ DSP_TXMEDLEY, // Manufacturing AFE diags: Response to HOST_TXMEDLEY
-+ DSP_RXNOISEPOWER, // Manufacturing AFE diags: Response to HOST_RXNOISEPOWER
-+ DSP_ECPOWER, // Manufacturing AFE diags: Response to HOST_ECPOWER
-+ DSP_ALL_ADIAG, // Manufacturing AFE diags: Response to HOST_ALL_ADIAG
-+ DSP_USER_ADIAG, // Manufacturing AFE diags: Response to HOST_USER_ADIAG
-+ DSP_QUIT_ADIAG, // Manufacturing AFE diags: Response to HOST_QUIT_ADIAG
-+ DSP_DGASP // DSP Message to indicate dying gasp
-+};
-+
-+static unsigned char analogNoTonesTestArray[64]=
-+ {
-+ 0,0,0,0,0,0,0,0, // Tones 01-08
-+ 0,0,0,0,0,0,0,0, // Tones 09-16
-+ 0,0,0,0,0,0,0,0, // Tones 17-24
-+ 0,0,0,0,0,0,0,0, // Tones 25-32
-+ 0,0,0,0,0,0,0,0, // Tones 33-40
-+ 0,0,0,0,0,0,0,0, // Tones 41-48
-+ 0,0,0,0,0,0,0,0, // Tones 49-56
-+ 0,0,0,0,0,0,0,0 // Tones 57-64
-+ };
-+
-+static unsigned char analogAllTonesTestArray[64]=
-+ {
-+ 1,1,1,1,1,1,1,1, // Tones 01-08
-+ 1,1,1,1,1,1,1,1, // Tones 09-16
-+ 1,1,1,1,1,1,1,1, // Tones 17-24
-+ 1,1,1,1,1,1,1,1, // Tones 25-32
-+ 1,1,1,1,1,1,1,1, // Tones 33-40
-+ 1,1,1,1,1,1,1,1, // Tones 41-48
-+ 1,1,1,1,1,1,1,1, // Tones 49-56
-+ 1,1,1,1,1,1,1,1 // Tones 57-64
-+ };
-+
-+static unsigned char analogEvenTonesTestArray[64]=
-+ {
-+ 0,1,0,1,0,1,0,1, // Tones 01-08
-+ 0,1,0,1,0,1,0,1, // Tones 09-16
-+ 0,1,0,1,0,1,0,1, // Tones 17-24
-+ 0,1,0,1,0,1,0,1, // Tones 25-32
-+ 0,1,0,1,0,1,0,1, // Tones 33-40
-+ 0,1,0,1,0,1,0,1, // Tones 41-48
-+ 0,1,0,1,0,1,0,1, // Tones 49-56
-+ 0,1,0,1,0,1,0,1 // Tones 57-64
-+ };
-+
-+static unsigned char analogOddTonesTestArray[64]=
-+ {
-+ 1,0,1,0,1,0,1,0, // Tones 01-08
-+ 1,0,1,0,1,0,1,0, // Tones 09-16
-+ 1,0,1,0,1,0,1,0, // Tones 17-24
-+ 1,0,1,0,1,0,1,0, // Tones 25-32
-+ 1,0,1,0,1,0,1,0, // Tones 33-40
-+ 1,0,1,0,1,0,1,0, // Tones 41-48
-+ 1,0,1,0,1,0,1,0, // Tones 49-56
-+ 1,0,1,0,1,0,1,0 // Tones 57-64
-+ };
-+
-+unsigned int shim_osGetCpuFrequency(void)
-+{
-+ return 150;
-+}
-+
-+static void tn7dsl_adiag(int Test, unsigned char *missingTones)
-+{
-+ int rc,cmd, tag;
-+
-+ rc = dslhal_diags_anlg_setMissingTones(pIhw,missingTones);
-+ if(rc)
-+ {
-+ printk(" failed to set Missing town\n");
-+ return;
-+ }
-+
-+/*********** Start the actual test **********************/
-+
-+ if(Test==0)
-+ {
-+ printk("TX REVERB Test\n");
-+ rc = dslhal_support_writeHostMailbox(pIhw, HOST_TXREVERB, 0, 0, 0);
-+ if (rc)
-+ {
-+ printk("HOST_TXREVERB failed\n");
-+ return;
-+ }
-+
-+ }
-+ if(Test==1)
-+ {
-+ dprintf(0,"TX MEDLEY Test\n");
-+ rc = dslhal_support_writeHostMailbox(pIhw, HOST_TXMEDLEY, 0, 0, 0);
-+ if (rc)
-+ return;
-+ }
-+ dprintf(4,"dslhal_diags_anlg_testA() done\n");
-+ return;
-+}
-+
-+
-+static void tn7dsl_diagnostic_test(char *data)
-+{
-+ if(!strcmp(data, "ADIAGRALL"))
-+ {
-+ printk("TX Reverb All tone\n");
-+ tn7dsl_adiag(0,analogAllTonesTestArray);
-+ return;
-+ }
-+ if(!strcmp(data, "ADIAGRNONE"))
-+ {
-+ printk("TX Reverb No tone\n");
-+ tn7dsl_adiag(0,analogNoTonesTestArray);
-+ return;
-+ }
-+ if(!strcmp(data, "ADIAGREVEN"))
-+ {
-+ printk("TX Reverb Even tone\n");
-+ tn7dsl_adiag(0,analogEvenTonesTestArray);
-+ return;
-+ }
-+ if(!strcmp(data, "ADIAGRODD"))
-+ {
-+ printk("TX Reverb Odd tone\n");
-+ tn7dsl_adiag(0,analogOddTonesTestArray);
-+ return;
-+ }
-+ if(!strcmp(data, "ADIAGMALL"))
-+ {
-+ printk("TX Mdelay All tone\n");
-+ tn7dsl_adiag(1,analogAllTonesTestArray);
-+ return;
-+ }
-+ if(!strcmp(data, "ADIAGMNONE"))
-+ {
-+ printk("TX Mdelay No tone\n");
-+ tn7dsl_adiag(1,analogNoTonesTestArray);
-+ return;
-+ }
-+ if(!strcmp(data, "ADIAGMEVEN"))
-+ {
-+ printk("TX Mdelay Even tone\n");
-+ tn7dsl_adiag(1,analogEvenTonesTestArray);
-+ return;
-+ }
-+ if(!strcmp(data, "ADIAGMODD"))
-+ {
-+ printk("TX Mdelay Odd tone\n");
-+ tn7dsl_adiag(1,analogOddTonesTestArray);
-+ return;
-+ }
-+ if(!strcmp(data, "ADIAGQUIET"))
-+ {
-+ dslhal_api_sendIdle(pIhw);
-+ return;
-+ }
-+ if(!strncmp(data, "ADIAGRN", 7))
-+ {
-+ char tones[64], tmp[4];
-+ int nth, i;
-+
-+ tmp[0]=data[7];
-+ tmp[1]=data[8];
-+ tmp[2]=data[9];
-+
-+ nth = os_atoi(tmp);
-+
-+ for(i=0;i<64;i++)
-+ {
-+ if(((i+1)% nth)==0)
-+ {
-+ tones[i]=0;
-+ }
-+ else
-+ {
-+ tones[i]=1;
-+ }
-+ }
-+ printk("TX Reverb with %dth tones missing.\n", nth);
-+ tn7dsl_adiag(0,tones);
-+ return;
-+ }
-+ if(!strncmp(data, "ADIAGMN", 7))
-+ {
-+ char tones[64], tmp[4];
-+ int nth, i;
-+
-+ tmp[0]=data[7];
-+ tmp[1]=data[8];
-+ tmp[2]=data[9];
-+ nth = os_atoi(tmp);
-+
-+ for(i=0;i<64;i++)
-+ {
-+ if(((i+1)% nth)==0)
-+ {
-+ tones[i]=0;
-+ }
-+ else
-+ {
-+ tones[i]=1;
-+ }
-+ }
-+ printk("TX Mdelay with %dth tones missing.\n", nth);
-+ tn7dsl_adiag(1,tones);
-+ return;
-+ }
-+
-+
-+}
-+
-+#endif
-+
-+static void
-+tn7dsl_chng_modulation(void* data)
-+{
-+ //printk("DSL Modem Retraining\n");
-+
-+ if(!strcmp(data, "T1413"))
-+ {
-+ printk("retraining in T1413 mode\n");
-+ dslhal_api_setTrainingMode(pIhw, T1413_MODE);
-+ dslhal_api_sendQuiet(pIhw);
-+ return;
-+ }
-+ if(!strcmp(data, "GDMT"))
-+ {
-+ dslhal_api_setTrainingMode(pIhw, GDMT_MODE);
-+ dslhal_api_sendQuiet(pIhw);
-+ return;
-+ }
-+ if(!strcmp(data, "GLITE"))
-+ {
-+ dslhal_api_setTrainingMode(pIhw, GLITE_MODE);
-+ dslhal_api_sendQuiet(pIhw);
-+ return;
-+ }
-+ if(!strcmp(data, "MMODE"))
-+ {
-+ dslhal_api_setTrainingMode(pIhw, MULTI_MODE);
-+ dslhal_api_sendQuiet(pIhw);
-+ return;
-+ }
-+ if(!strcmp(data, "NMODE"))
-+ {
-+ dslhal_api_setTrainingMode(pIhw, NO_MODE);
-+ dslhal_api_sendQuiet(pIhw);
-+ return;
-+ }
-+
-+#ifdef ADIAG
-+ tn7dsl_diagnostic_test(data);
-+#endif
-+
-+
-+ return;
-+}
-+
-+#ifdef CONFIG_LED_MODULE
-+static void tn7dsl_led_on(unsigned long parm)
-+{
-+ dslhal_api_configureLed(pIhw,parm, 0);
-+}
-+
-+
-+static void tn7dsl_led_off(unsigned long parm)
-+{
-+ dslhal_api_configureLed(pIhw,parm, 1);
-+}
-+
-+static void tn7dsl_led_init(unsigned long parm)
-+{
-+ dslhal_api_configureLed(pIhw,parm, 2);
-+}
-+#endif
-+
-+static void tn7dsl_register_dslss_led(void)
-+{
-+#ifdef CONFIG_LED_MODULE
-+
-+ // register led0 with led module
-+ ledreg[0].param = 0;
-+ ledreg[0].init = (void *)tn7dsl_led_init;
-+ ledreg[0].onfunc = (void *)tn7dsl_led_on;
-+ ledreg[0].offfunc = (void *)tn7dsl_led_off;
-+ register_led_drv(LED_NUM_1, &ledreg[0]);
-+
-+ // register led1 output with led module
-+ ledreg[1].param = 1;
-+ ledreg[1].init = (void *)tn7dsl_led_init;
-+ ledreg[1].onfunc = (void *)tn7dsl_led_on;
-+ ledreg[1].offfunc = (void *)tn7dsl_led_off;
-+ register_led_drv(LED_NUM_2, &ledreg[1]);
-+#endif
-+}
-+
-+static int tn7dsl_reload_overlay(void)
-+{
-+ int overlayFlag;
-+ spinlock_t overlayLock;
-+
-+ init_kthread(&overlay_thread, "adsl");
-+ down(&adsl_sem_overlay);
-+ while(1)
-+ {
-+ mdelay(500);
-+ if(pIhw->lConnected == 0)
-+ {
-+ spin_lock_irqsave(&overlayLock, overlayFlag);
-+ dslhal_support_restoreTrainingInfo(pIhw);
-+ spin_unlock_irqrestore(&overlayLock, overlayFlag);
-+ }
-+ down(&adsl_sem_overlay);
-+ }
-+ return 0;
-+}
-+
-+
-+
-+
-diff -urN linux.old/drivers/atm/sangam_atm/tn7sar.c linux.dev/drivers/atm/sangam_atm/tn7sar.c
---- linux.old/drivers/atm/sangam_atm/tn7sar.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/tn7sar.c 2005-08-23 04:46:50.110841720 +0200
-@@ -0,0 +1,1376 @@
-+/******************************************************************************
-+ * FILE PURPOSE: OS files for CPSAR
-+ ******************************************************************************
-+ * FILE NAME: tn7sar.c
-+ *
-+ * DESCRIPTION: This file contains source for required os files for CPSAR
-+ *
-+ * (C) Copyright 2002, Texas Instruments Inc
-+ *
-+ *
-+ * Revision History:
-+ * 0/11/02 Zhicheng Tang, created.
-+ *
-+ *******************************************************************************/
-+
-+#include <linux/config.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/atmdev.h>
-+#include <linux/delay.h>
-+#include <linux/spinlock.h>
-+#include <linux/smp_lock.h>
-+#include <asm/io.h>
-+#include <asm/mips-boards/prom.h>
-+#include <linux/proc_fs.h>
-+#include <linux/string.h>
-+#include <linux/ctype.h>
-+
-+
-+#define _CPHAL_AAL5
-+#define _CPHAL_SAR
-+#define _CPHAL_HAL
-+typedef void OS_PRIVATE;
-+typedef void OS_DEVICE;
-+typedef void OS_SENDINFO;
-+typedef void OS_RECEIVEINFO;
-+typedef void OS_SETUP;
-+
-+#include "cpswhal_cpsar.h"
-+#include "tn7atm.h"
-+#include "tn7api.h"
-+
-+
-+/* PDSP Firmware files */
-+#include "tnetd7300_sar_firm.h"
-+
-+
-+enum
-+{
-+ PACKET_TYPE_AAL5,
-+ PACKET_TYPE_NULL,
-+ PACKET_TYPE_OAM,
-+ PACKET_TYPE_TRANS,
-+ PACKET_TYPE_AAL2
-+}PACKET_TYPE;
-+
-+enum
-+{
-+ OAM_PING_FAILED,
-+ OAM_PING_SUCCESS,
-+ OAM_PING_PENDING,
-+ OAM_PING_NOT_STARTED
-+}OAM_PING;
-+
-+/* PDSP OAM General Purpose Registers (@todo: These need to be used in the HAL!) */
-+
-+#define SAR_PDSP_HOST_OAM_CONFIG_REG_ADDR 0xa3000020
-+#define SAR_PDSP_OAM_CORR_REG_ADDR 0xa3000024
-+#define SAR_PDSP_OAM_LB_RESULT_REG_ADDR 0xa3000028
-+#define SAR_PDSP_OAM_F5LB_COUNT_REG_ADDR 0xa300002c
-+#define SAR_PDSP_OAM_F4LB_COUNT_REG_ADDR 0xa3000030
-+
-+#define SAR_FREQUNCY 50000000
-+
-+#define AAL5_PARM "id=aal5, base = 0x03000000, offset = 0, int_line=15, ch0=[RxBufSize=1522; RxNumBuffers = 32; RxServiceMax = 50; TxServiceMax=50; TxNumBuffers=32; CpcsUU=0x5aa5; TxVc_CellRate=0x3000; TxVc_AtmHeader=0x00000640]"
-+#define SAR_PARM "id=sar,base = 0x03000000, reset_bit = 9, offset = 0; UniNni = 0, PdspEnable = 1"
-+#define RESET_PARM "id=ResetControl, base=0xA8611600"
-+#define CH0_PARM "RxBufSize=1522, RxNumBuffers = 32, RxServiceMax = 50, TxServiceMax=50, TxNumBuffers=32, CpcsUU=0x5aa5, TxVc_CellRate=0x3000, TxVc_AtmHeader=0x00000640"
-+
-+#define MAX_PVC_TABLE_ENTRY 16
-+
-+sar_stat_t sarStat;
-+
-+typedef struct _channel_parm
-+{
-+ unsigned int RxBufSize;
-+ unsigned int RxNumBuffers;
-+ unsigned int RxServiceMax;
-+ unsigned int TxServiceMax;
-+ unsigned int TxNumBuffers;
-+ unsigned int CpcsUU;
-+ unsigned int TxVc_CellRate;
-+ unsigned int TxVc_AtmHeader;
-+}channel_parm_t;
-+
-+typedef struct _aal5_parm
-+{
-+ unsigned int base;
-+ unsigned int offset;
-+ unsigned int int_line;
-+ channel_parm_t chan[8];
-+}aal5_parm_t;
-+
-+
-+typedef struct _sar_parm
-+{
-+ unsigned int base;
-+ unsigned int reset_bit;
-+ unsigned int offset;
-+ unsigned int UniNni;
-+}sar_parm_t;
-+
-+typedef struct _pvc_table
-+{
-+ int bInUse;
-+ int vpi;
-+ int vci;
-+}pvc_table;
-+
-+static aal5_parm_t aal5Parm;
-+static sar_parm_t sarParm;
-+static char *pAal5, *pSar, *pReset;
-+static int oam_type;
-+static unsigned int oamPingStatus;
-+static int oamAtmHdr;
-+static int oamLbTimeout;
-+static char parm_data[1024];
-+static char aal5Data[1024];
-+static char sarData[1024];
-+static char resetData[256];
-+static pvc_table pvc_result[MAX_PVC_TABLE_ENTRY];
-+
-+/* external function */
-+extern int __guDbgLevel;
-+
-+/* gloabal function */
-+unsigned int oamFarLBCount[4];
-+/* end of gloabal function */
-+
-+/* internal APIs */
-+static int tn7sar_atm_header(int vpi, int vci);
-+static void tn7sar_record_pvc(int atmheader);
-+
-+/*end of internal APIs */
-+spinlock_t sar_lock;
-+
-+/* HAL OS support functions */
-+
-+
-+unsigned long tn7sar_strtoul(const char *str, char **endptr, int base)
-+{
-+ unsigned long ret;
-+
-+ ret= simple_strtoul(str, endptr, base);
-+ return ret;
-+}
-+
-+static void *tn7sar_malloc(unsigned int size)
-+{
-+ return(kmalloc(size, GFP_KERNEL));
-+}
-+
-+static unsigned long lockflags;
-+static void tn7sar_critical_on(void)
-+{
-+ spin_lock_irqsave(&sar_lock,lockflags);
-+}
-+
-+static void tn7sar_critical_off(void)
-+{
-+ spin_unlock_irqrestore(&sar_lock,lockflags);
-+}
-+
-+static void tn7sar_data_invalidate(void *pmem, int size)
-+{
-+ unsigned int i,Size=(((unsigned int)pmem)&0xf)+size;
-+
-+ for (i=0;i<Size;i+=16,pmem+=16)
-+ {
-+ __asm__(" .set mips3 ");
-+ __asm__("cache 17, (%0)" : : "r" (pmem));
-+ __asm__(" .set mips0 ");
-+ }
-+
-+}
-+
-+static void tn7sar_data_writeback(void *pmem, int size)
-+{
-+ unsigned int i,Size=(((unsigned int)pmem)&0xf)+size;
-+
-+ for (i=0;i<Size;i+=16,pmem+=16)
-+ {
-+ __asm__(" .set mips3 ");
-+ __asm__(" cache 25, (%0)" : : "r" (pmem));
-+ __asm__(" .set mips0 ");
-+ }
-+}
-+
-+
-+static int
-+tn7sar_find_device(int unit, const char *find_name, void *device_info)
-+{
-+ int ret_val = 0;
-+ char **ptr;
-+
-+ ptr = (char **)device_info;
-+ dprintf(3,"tn7sar_find_device\n");
-+ if(strcmp(find_name, "aal5")==0)
-+ {
-+ //dprintf(4,"pAal5=%s\n", pAal5);
-+ *ptr = pAal5;
-+ }
-+ else if(strcmp(find_name, "sar")==0)
-+ {
-+ dprintf(3, "pSar=%s\n", pSar);
-+ *ptr = pSar;
-+ }
-+ else if(strcmp(find_name, "reset")==0)
-+ {
-+ dprintf(3, "pReset=%s\n", pReset);
-+ *ptr = pReset;
-+ }
-+
-+ device_info = NULL;
-+
-+ return(ret_val);
-+}
-+
-+static int
-+tn7sar_get_device_parm_uint(void *dev_info, const char *param, unsigned int *value)
-+{
-+ char *dev_str;
-+ char *pMatch;
-+ int i=0, j=0;
-+ char val_str[64];
-+ unsigned int val;
-+ int base = 10;
-+
-+ dprintf(6, "tn7sar_get_device_parm_uint()\n");
-+
-+ dev_str = (char *)dev_info;
-+ dprintf(3, "parm=%s\n", param);
-+ pMatch = strstr(dev_str, param);
-+ //dprintf(4, "pMatch=%s\n", pMatch);
-+ if(pMatch)
-+ {
-+ //get "=" position
-+ while(pMatch[i] != 0x3d)
-+ {
-+ i++;
-+ }
-+ i++;
-+ // get rid of spaces
-+ while(pMatch[i]==0x20)
-+ {
-+ i++;
-+ }
-+ //get rid of 0x
-+ if(pMatch[i]==0x30)
-+ {
-+ if(pMatch[i+1] == 0x58 || pMatch[i+1] == 0x78)
-+ {
-+ i+=2;
-+ base = 16;
-+ }
-+ }
-+
-+ // get next delineator
-+ while(pMatch[i] != 0x2c && pMatch[i] != 0x0)
-+ {
-+ val_str[j]=pMatch[i];
-+ j++;
-+ i++;
-+ }
-+ val_str[j]=0;
-+ //dprintf(4, "val_str=\n%s\n", val_str);
-+ //xdump(val_str, strlen(val_str) + 1, 4);
-+ val = simple_strtoul(val_str, (char **)NULL, base);
-+ dprintf(4, "val =%d\n", val);
-+ *value = val;
-+ return 0;
-+ }
-+
-+
-+ dprintf(3, "match not found.\n");
-+ if(strcmp(dev_str, "debug")==0)
-+ {
-+ dprintf(6,"debug..\n");
-+ *value = 6;
-+ return 0;
-+ }
-+ return (1);
-+}
-+
-+static int tn7sar_get_device_parm_value(void *dev_info, const char *param, void *value)
-+{
-+ char *dev_str;
-+ char *pMatch;
-+ int i=0, j=0;
-+ char *pVal;
-+
-+
-+ dprintf(3, "tn7sar_get_device_parm_value().\n");
-+
-+ pVal = (char *) parm_data;
-+ dev_str = (char *)dev_info;
-+ dprintf(3, "dev_info: \n%s\n", dev_str);
-+ dprintf(3, "param=%s\n", param);
-+ if(strcmp(param, "Ch0")==0)
-+ {
-+ *(char **)value = CH0_PARM;
-+ dprintf(3, "value =%s\n", *(char **)value);
-+ return 0;
-+ }
-+
-+ pMatch = strstr(dev_str, param);
-+ if(pMatch)
-+ {
-+ //get "=" position
-+ while(pMatch[i] != 0x3d)
-+ {
-+ i++;
-+ }
-+ i++;
-+ // get rid of spaces
-+ while(pMatch[i]==0x20)
-+ {
-+ i++;
-+ }
-+
-+ if(pMatch[i] != 0x5b) //"["
-+ {
-+ // get next delineator
-+ while(pMatch[i] != 0x2c && pMatch[i] != 0x0)
-+ {
-+ pVal[j] = pMatch[i];
-+ j++;
-+ i++;
-+ }
-+ pVal[j]=0;
-+
-+ *(char **)value = pVal;
-+ return 0;
-+ }
-+ else
-+ {
-+ i++; //skip "["
-+ while(pMatch[i] != 0x5d)
-+ {
-+ if(pMatch[i] == 0x3b) //";"
-+ pVal[j] = 0x2c;
-+ else
-+ pVal[j] = pMatch[i];
-+ j++;
-+ i++;
-+ }
-+ pVal[j] = 0;
-+ *(char **)value = pVal;
-+ return 0;
-+ }
-+
-+ }
-+
-+ return (1);
-+}
-+
-+static void tn7sar_free(void *pmem)
-+{
-+ kfree(pmem);
-+}
-+
-+static void
-+tn7sar_free_buffer(OS_RECEIVEINFO *os_receive_info, void *pmem)
-+{
-+ tn7atm_free_rx_skb(os_receive_info);
-+}
-+
-+static void tn7sar_free_dev(void *pmem)
-+{
-+ kfree(pmem);
-+}
-+
-+static void tn7sar_free_dma_xfer(void *pmem)
-+{
-+ kfree(pmem);
-+}
-+
-+
-+static int
-+tn7sar_control(void *dev_info, const char *key, const char *action, void *value)
-+{
-+ int ret_val = -1;
-+
-+ if (strcmp(key, "Firmware") == 0)
-+ {
-+ if (strcmp(action, "Get") == 0)
-+ {
-+ *(int **)value = &SarPdspFirmware[0];
-+ }
-+ ret_val=0;
-+ }
-+
-+ if (strcmp(key, "FirmwareSize") == 0)
-+ {
-+ if (strcmp(action, "Get") == 0)
-+ {
-+ *(int *)value = sizeof(SarPdspFirmware);
-+ }
-+ ret_val=0;
-+ }
-+
-+ if (strcmp(key, "OamLbResult") == 0)
-+ {
-+ dprintf(2, "get looback source call back\n");
-+ if (strcmp(action, "Set") == 0)
-+ {
-+ dprintf(2, "oam result = %d\n", *(unsigned int *)value);
-+ oamFarLBCount[oam_type] = oamFarLBCount[oam_type] + *(unsigned int *)value;
-+ if(oamPingStatus == OAM_PING_PENDING)
-+ {
-+ oamPingStatus = *(unsigned int *)value;
-+ if(oamPingStatus == OAM_PING_SUCCESS)
-+ {
-+ /* record pvc */
-+ tn7sar_record_pvc(oamAtmHdr);
-+ }
-+ }
-+
-+ }
-+ ret_val=0;
-+ }
-+
-+ if (strcmp(key, "SarFreq") == 0)
-+ {
-+ if (strcmp(action, "Get") == 0)
-+ {
-+ *(int *)value = SAR_FREQUNCY;
-+ }
-+ ret_val=0;
-+ }
-+ return(ret_val);
-+}
-+
-+
-+static void
-+tn7sar_sarhal_isr_register(OS_DEVICE *os_dev, int(*hal_isr)(HAL_DEVICE *, int *), int interrupt_num)
-+{
-+ tn7atm_sarhal_isr_register(os_dev, hal_isr, interrupt_num);
-+}
-+
-+static void
-+tn7sar_isr_unregister(OS_DEVICE *os_dev, int interrupt_num)
-+{
-+ /* TODO */
-+}
-+
-+
-+static void *
-+tn7sar_malloc_rxbuffer(unsigned int size, void *mem_base, unsigned int mem_range, HAL_DEVICE *hal_dev,
-+ HAL_RECEIVEINFO *hal_info, OS_RECEIVEINFO **os_receive_info, OS_DEVICE *os_dev)
-+{
-+ return tn7atm_allocate_rx_skb(os_dev, os_receive_info, size);
-+}
-+
-+static void *
-+tn7sar_malloc_dev(unsigned int size)
-+{
-+ return(kmalloc(size, GFP_KERNEL));
-+}
-+
-+static void *
-+tn7sar_malloc_dma_xfer(unsigned int size, void *mem_base, unsigned int mem_range)
-+{
-+ dprintf(4, "tn7sar_malloc_dma_xfer, size =%d\n", size);
-+
-+ return (kmalloc(size, GFP_DMA |GFP_KERNEL));
-+
-+}
-+
-+static void *
-+tn7sar_memset(void *dst, int set_char, size_t count)
-+{
-+ return (memset(dst, set_char, count));
-+}
-+
-+static int tn7sar_printf(const char *format, ...)
-+{
-+ /* TODO: add debug levels */
-+ static char buff[256];
-+ va_list ap;
-+
-+ va_start( ap, format);
-+ vsprintf((char *)buff, format, ap);
-+ va_end(ap);
-+
-+ printk("SAR HAL: %s\n", buff);
-+ return(0);
-+}
-+
-+static void tn7sar_record_pvc(int atmheader)
-+{
-+ int vci,vpi;
-+ int i;
-+
-+ vci = 0xffff & (atmheader >> 4);
-+ vpi = 0xff & (atmheader >> 20);
-+ for(i=0;i<MAX_PVC_TABLE_ENTRY;i++)
-+ {
-+ if(pvc_result[i].bInUse)
-+ {
-+ if(pvc_result[i].vpi == vpi && pvc_result[i].vci == vci)
-+ {
-+ return;
-+ }
-+ }
-+ }
-+ for(i=0;i<MAX_PVC_TABLE_ENTRY;i++)
-+ {
-+ if(pvc_result[i].bInUse == 0)
-+ {
-+ pvc_result[i].bInUse = 1;
-+ pvc_result[i].vpi = vpi;
-+ pvc_result[i].vci = vci;
-+ return;
-+ }
-+ }
-+ return;
-+}
-+
-+static void tn7sar_clear_pvc_table(void)
-+{
-+ int i;
-+
-+ for(i=0;i<MAX_PVC_TABLE_ENTRY; i++)
-+ {
-+ pvc_result[i].bInUse = 0;
-+ pvc_result[i].vpi = 0;
-+ pvc_result[i].vci = 0;
-+ }
-+}
-+
-+int tn7sar_process_unmatched_oam(FRAGLIST *frag_list, unsigned int frag_count, unsigned int packet_size, unsigned int mode)
-+{
-+
-+ FRAGLIST *local_list;
-+ int i;
-+ unsigned int atmHdr;
-+
-+ local_list = frag_list;
-+
-+ for(i=0;i<(int)frag_count;i++)
-+ {
-+ tn7sar_data_invalidate(local_list->data, (int)local_list->len);
-+ local_list ++;
-+ }
-+ local_list = frag_list;
-+ if((mode>>31)) /*vci, vpi is attached */
-+ {
-+ atmHdr = *(unsigned int *)frag_list->data;
-+ tn7sar_record_pvc(atmHdr);
-+ if(atmHdr & 0x8) //oam cell
-+ {
-+ atmHdr &= 0xfffffff0;
-+ if(atmHdr == oamAtmHdr)
-+ {
-+ if(oamPingStatus == OAM_PING_PENDING)
-+ {
-+ oamPingStatus = OAM_PING_SUCCESS;
-+ oamFarLBCount[oam_type] = oamFarLBCount[oam_type] + 1;
-+ }
-+ return 0;
-+ }
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+
-+static int
-+tn7sar_receive(OS_DEVICE *os_dev,FRAGLIST *frag_list, unsigned int frag_count, unsigned int packet_size,
-+ HAL_RECEIVEINFO *hal_receive_info, unsigned int mode)
-+{
-+ int ch;
-+ struct atm_dev *dev;
-+ Tn7AtmPrivate *priv;
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+ int bRet;
-+
-+
-+ dprintf(4, "tn7sar_receive\n");
-+
-+ dev = (struct atm_dev *)os_dev;
-+ priv= (Tn7AtmPrivate *)dev->dev_data;
-+ pHalFunc = (HAL_FUNCTIONS *)priv->pSarHalFunc;
-+ pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
-+
-+
-+ /* Mode contains channel info */
-+ ch = (mode & 0xFF);
-+
-+ if(ch == 15)
-+ {
-+ tn7sar_process_unmatched_oam(frag_list, frag_count, packet_size, mode);
-+ pHalFunc->RxReturn(hal_receive_info, 0);
-+ return 0;
-+ }
-+
-+ if(frag_count > 1 || frag_list->len == 0)
-+ {
-+ printk("Packet fragment count > 1, not handdle.\n");
-+ return 1;
-+ }
-+
-+ tn7sar_data_invalidate(frag_list->data, (int)frag_list->len);
-+ bRet=tn7atm_receive(os_dev, ch, packet_size, frag_list->OsInfo, frag_list->data);
-+
-+ if(bRet==0)
-+ {
-+ sarStat.rxPktCnt++;
-+ sarStat.rxBytes += packet_size;
-+ pHalFunc->RxReturn(hal_receive_info, 1);
-+ }
-+ else
-+ {
-+ pHalFunc->RxReturn(hal_receive_info, 0);
-+ }
-+
-+ return bRet;
-+}
-+
-+static int
-+tn7sar_send_complete(OS_SENDINFO *osSendInfo)
-+{
-+ return (tn7atm_send_complete(osSendInfo));
-+}
-+
-+void
-+tn7sar_teardown_complete(OS_DEVICE *OsDev, int ch, int Dir)
-+{
-+ return;
-+}
-+
-+
-+/*
-+unsigned int tn7sar_virt(unsigned int address)
-+{
-+ return phys_to_virt(address);
-+}
-+*/
-+
-+int tn7sar_init_module(OS_FUNCTIONS *os_funcs)
-+{
-+ dprintf(4, "tn7sar_init_module\n");
-+ if( os_funcs == 0 )
-+ {
-+ return(-1);
-+ }
-+ os_funcs->Control = tn7sar_control;
-+ os_funcs->CriticalOn = tn7sar_critical_on;
-+ os_funcs->CriticalOff = tn7sar_critical_off;
-+ os_funcs->DataCacheHitInvalidate = tn7sar_data_invalidate;
-+ os_funcs->DataCacheHitWriteback = tn7sar_data_writeback;
-+ os_funcs->DeviceFindInfo = tn7sar_find_device;
-+ os_funcs->DeviceFindParmUint = tn7sar_get_device_parm_uint;
-+ os_funcs->DeviceFindParmValue = tn7sar_get_device_parm_value;
-+ os_funcs->Free = tn7sar_free;
-+ os_funcs->FreeRxBuffer = tn7sar_free_buffer;
-+ os_funcs->FreeDev = tn7sar_free_dev;
-+ os_funcs->FreeDmaXfer = tn7sar_free_dma_xfer;
-+ os_funcs->IsrRegister = tn7sar_sarhal_isr_register;
-+ os_funcs->IsrUnRegister = tn7sar_isr_unregister;
-+ os_funcs->Malloc = tn7sar_malloc;
-+ os_funcs->MallocRxBuffer = tn7sar_malloc_rxbuffer;
-+ os_funcs->MallocDev = tn7sar_malloc_dev;
-+ os_funcs->MallocDmaXfer = tn7sar_malloc_dma_xfer;
-+ os_funcs->Memset = tn7sar_memset;
-+ os_funcs->Printf = tn7sar_printf;
-+ os_funcs->Receive = tn7sar_receive;
-+ os_funcs->SendComplete = tn7sar_send_complete;
-+ os_funcs->Strcmpi = strcmp;
-+ os_funcs->Sprintf = sprintf;
-+ os_funcs->Strlen = strlen;
-+ os_funcs->Strstr = strstr;
-+ os_funcs->Strtoul = tn7sar_strtoul;
-+ os_funcs->TeardownComplete = tn7sar_teardown_complete;
-+
-+ return(0);
-+}
-+
-+
-+static void tn7sar_init_dev_parm(void)
-+{
-+ int i;
-+
-+
-+ /* aal5 */
-+ //strcpy(aal5Parm.id, "aal5");
-+ aal5Parm.base = 0x03000000;
-+ aal5Parm.offset = 0;
-+ aal5Parm.int_line=15;
-+ aal5Parm.chan[0].RxBufSize=1600;
-+ aal5Parm.chan[0].RxNumBuffers = 32;
-+ aal5Parm.chan[0].RxServiceMax = 50;
-+ aal5Parm.chan[0].TxServiceMax=50;
-+ aal5Parm.chan[0].TxNumBuffers=32;
-+ aal5Parm.chan[0].CpcsUU=0x5aa5;
-+ aal5Parm.chan[0].TxVc_CellRate=0x3000;
-+ aal5Parm.chan[0].TxVc_AtmHeader=0x00000640;
-+ for(i=1;i<8;i++)
-+ {
-+ memcpy(&aal5Parm.chan[i], &aal5Parm.chan[0], sizeof(aal5Parm.chan[0]));
-+ }
-+
-+
-+ /* sar */
-+ //strcpy(sarParm.id, "sar");
-+ sarParm.base = 0x03000000;
-+ sarParm.reset_bit = 9;
-+ sarParm.offset = 0;
-+ sarParm.UniNni = 0;
-+
-+ pAal5 = aal5Data;
-+ pSar = sarData;
-+ pReset = resetData;
-+ strcpy(pAal5, AAL5_PARM);
-+ strcpy(pSar, SAR_PARM);
-+ strcpy(pReset, RESET_PARM);
-+
-+}
-+
-+
-+int tn7sar_get_stats(void *priv1)
-+{
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+ Tn7AtmPrivate *priv;
-+ int i, j;
-+ unsigned int *pSarStat, *pStateBase;
-+ char statString[64];
-+ int len;
-+
-+ dprintf(2, "tn7sar_get_stats\n");
-+
-+ priv = (Tn7AtmPrivate *)priv1;
-+ pHalFunc = (HAL_FUNCTIONS *)priv->pSarHalFunc;
-+ pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
-+
-+ //memset(&sarStat, 0, sizeof(sarStat));
-+ sarStat.txErrors = 0;
-+ sarStat.rxErrors = 0;
-+ for(i=0;i<MAX_DMA_CHAN;i++)
-+ {
-+ if(priv->lut[i].inuse)
-+ {
-+ for(j=0;j<1;j++)
-+ {
-+ len=sprintf(statString, "Stats;0;%d", priv->lut[i].chanid);
-+ statString[len]=0;
-+ dprintf(2, "statString=%s\n",statString);
-+ pHalFunc->Control(pHalDev, statString, "Get", &pSarStat);
-+ pStateBase = pSarStat;
-+ while(pSarStat)
-+ {
-+ if((char *)*pSarStat == NULL)
-+ break;
-+ dprintf(2, "%s\n", (char *) *pSarStat);
-+ pSarStat++;
-+ dprintf(2, "%s\n", (char *) *pSarStat);
-+ sarStat.rxErrors += os_atoul((char *) *pSarStat);
-+ pSarStat++;
-+ }
-+
-+ kfree(pStateBase);
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+int tn7sar_setup_oam_channel(Tn7AtmPrivate *priv)
-+{
-+
-+ CHANNEL_INFO chInfo;
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+ int chan=15;
-+ dprintf(4, "tn7sar_setup_oam_channel\n");
-+
-+ pHalFunc = (HAL_FUNCTIONS *)priv->pSarHalFunc;
-+ pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
-+
-+ memset(&chInfo, 0xff, sizeof(chInfo));
-+
-+ /* channel specific */
-+ chInfo.Channel = 15; /* hardcoded for last channel */
-+ chInfo.Direction = 0;
-+ chInfo.Vci = 30; /* just need below 32 */
-+ chInfo.Vpi = 0;
-+ chInfo.TxVc_QosType = 2;
-+
-+ /*default */
-+ chInfo.PktType = PACKET_TYPE_TRANS;
-+ chInfo.TxServiceMax = 2;
-+ chInfo.RxServiceMax = 2;
-+ chInfo.TxNumQueues = 1;
-+ chInfo.TxNumBuffers = 4;
-+ chInfo.RxNumBuffers = 4;
-+ chInfo.RxBufSize = 256;
-+ chInfo.RxVc_OamToHost = 0;
-+ chInfo.RxVp_OamToHost = 0;
-+ chInfo.FwdUnkVc = 1; //enable forwarding of unknown vc
-+ chInfo.TxVc_AtmHeader = tn7sar_atm_header((int)chInfo.Vpi, chInfo.Vci);
-+ chInfo.RxVc_AtmHeader = tn7sar_atm_header((int)chInfo.Vpi, chInfo.Vci);
-+ chInfo.TxVp_AtmHeader = tn7sar_atm_header((int)chInfo.Vpi, 0);
-+ chInfo.RxVp_AtmHeader = tn7sar_atm_header((int)chInfo.Vpi, 0);
-+
-+ dprintf(4, "TxVc_AtmHeader=0x%x\n", chInfo.TxVc_AtmHeader);
-+
-+ if(pHalFunc->ChannelSetup(pHalDev, &chInfo, NULL))
-+ {
-+ printk("failed to setup channel =%d.\n", chan);
-+ return -1;
-+ }
-+
-+ // claiming the channel
-+ priv->lut[chan].vpi = 0;
-+ priv->lut[chan].vci = 30;
-+ priv->lut[chan].chanid = chan;
-+ priv->lut[chan].inuse = 1;
-+ return 0;
-+}
-+
-+int tn7sar_init(struct atm_dev *dev, Tn7AtmPrivate *priv)
-+{
-+ int retCode;
-+ int hal_funcs_size;
-+
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+ OS_FUNCTIONS *pOsFunc;
-+ int oamMod;
-+ char *pLbTimeout;
-+ int lbTimeout;
-+
-+
-+ dprintf(4, "tn7sar_init\n");
-+
-+ pOsFunc = (OS_FUNCTIONS *)kmalloc(sizeof(OS_FUNCTIONS), GFP_KERNEL);
-+
-+
-+ priv->pSarOsFunc = ( void *)pOsFunc;
-+
-+ /* init boot parms */
-+ tn7sar_init_dev_parm();
-+
-+ /* init sar os call back functions */
-+ retCode = tn7sar_init_module(pOsFunc);
-+ if (retCode != 0) /* error */
-+ {
-+ printk("Failed to init SAR OS Functions\n");
-+ return (1);
-+ }
-+
-+ /* Init sar hal */
-+ retCode = cpaal5InitModule(&pHalDev, (OS_DEVICE*) dev, &pHalFunc,
-+ pOsFunc, sizeof(OS_FUNCTIONS), &hal_funcs_size, 0);
-+ if (retCode != 0) /* error */
-+ {
-+ printk("Failed to init SAR HAL\n");
-+ return (1);
-+ }
-+
-+ /* sanity check */
-+ if (pHalDev == NULL || pHalFunc == NULL || hal_funcs_size != sizeof(HAL_FUNCTIONS) )
-+ {
-+ printk("Invalid SAR hal and/or functions.\n");
-+ return (1);
-+ }
-+
-+ /* remeber HAL pointers */
-+ priv->pSarHalDev = (void *)pHalDev;
-+ priv->pSarHalFunc = (void *)pHalFunc;
-+
-+ /* Probe for the Device to get hardware info from driver */
-+ retCode = pHalFunc->Probe(pHalDev);
-+ if (retCode !=0)
-+ {
-+ printk("SAR hal probing error.\n");
-+ return (1);
-+ }
-+
-+ /* init sar hal */
-+ retCode = pHalFunc->Init(pHalDev);
-+ if (retCode != 0) /* error */
-+ {
-+
-+ printk("pHalFunc->Init failed. err code =%d\n", retCode);
-+ return (1);
-+ }
-+
-+ /* open hal module */
-+ retCode = pHalFunc->Open(pHalDev);
-+ if (retCode != 0) /* error */
-+ {
-+ printk("pHalFunc->open failed, err code: %d\n",retCode );
-+ return (1);
-+ }
-+
-+ /* init sar for firmware oam */
-+ oamMod= 1;
-+ pHalFunc->Control(pHalDev,"OamMode", "Set", &oamMod);
-+
-+ /* read in oam lb timeout value */
-+ pLbTimeout = prom_getenv("oam_lb_timeout");
-+ if(pLbTimeout)
-+ {
-+ lbTimeout =tn7sar_strtoul(pLbTimeout, NULL, 10);
-+ oamLbTimeout = lbTimeout;
-+ pHalFunc->Control(pHalDev,"OamLbTimeout", "Set", &lbTimeout);
-+ }
-+ else
-+ {
-+ oamLbTimeout = 5000;
-+ }
-+
-+ oamFarLBCount[0]=0;
-+ oamFarLBCount[1]=0;
-+ oamFarLBCount[2]=0;
-+ oamFarLBCount[3]=0;
-+
-+ memset(&sarStat, 0 , sizeof(sarStat));
-+
-+ /* setup channel 15 for oam operation */
-+ tn7sar_setup_oam_channel(priv);
-+ dprintf(4, "tn7sar_init done");
-+ return 0;
-+}
-+
-+static int
-+tn7sar_atm_header(int vpi, int vci)
-+{
-+ union
-+ {
-+ unsigned char byte[4];
-+ unsigned int dword;
-+ }atm_h;
-+ int itmp = 0;
-+
-+ //vci
-+ itmp = vci &0xf;
-+ atm_h.byte[0] = 0;
-+ atm_h.byte[0] |= (itmp << 4);
-+ atm_h.byte[1] = ((vci & 0xff0) >> 4);
-+ atm_h.byte[2] = 0;
-+ atm_h.byte[2] |= ((vci & 0xf000) >>12);;
-+ atm_h.byte[2] |= ((vpi & 0xf) << 4);
-+ atm_h.byte[3] = 0;
-+ atm_h.byte[3] = ((vpi & 0xff0) >> 4);
-+ return atm_h.dword;
-+}
-+
-+int tn7sar_activate_vc(Tn7AtmPrivate *priv, short vpi, int vci, int pcr, int scr, int mbs, int cdvt, int chan, int qos)
-+{
-+ CHANNEL_INFO chInfo;
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+
-+ dprintf(4, "tn7sar_activate_vc\n");
-+
-+ pHalFunc = (HAL_FUNCTIONS *)priv->pSarHalFunc;
-+ pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
-+
-+ memset(&chInfo, 0xff, sizeof(chInfo));
-+
-+ /* channel specific */
-+ chInfo.Channel = chan;
-+ chInfo.Direction = 0;
-+ chInfo.Vci = vci;
-+ chInfo.Vpi = vpi;
-+ chInfo.TxVc_QosType = qos;
-+ chInfo.Priority = qos;
-+
-+ if(chInfo.TxVc_QosType == 1) /* if the connection is VBR than set the DaMask value to tell the schedular to accumalte the credit */
-+ {
-+ chInfo.DaMask = 1;
-+ }
-+ chInfo.TxVc_Mbs = mbs; /* use pcr as MBS */
-+ pcr = SAR_FREQUNCY/pcr;
-+ scr = SAR_FREQUNCY/scr;
-+ chInfo.TxVc_CellRate = scr;
-+ chInfo.TxVc_Pcr = pcr;
-+
-+ /*default */
-+ chInfo.PktType = PACKET_TYPE_AAL5;
-+ chInfo.TxServiceMax = TX_SERVICE_MAX;
-+ chInfo.RxServiceMax = RX_SERVICE_MAX;
-+ chInfo.TxNumQueues = TX_QUEUE_NUM;
-+ chInfo.TxNumBuffers = TX_BUFFER_NUM;
-+ chInfo.RxNumBuffers = RX_BUFFER_NUM;
-+ chInfo.RxBufSize = RX_BUFFER_SIZE;
-+ chInfo.RxVc_OamToHost = 0;
-+ chInfo.RxVp_OamToHost = 0;
-+ chInfo.TxVc_AtmHeader = tn7sar_atm_header((int)vpi, vci);
-+ chInfo.RxVc_AtmHeader = tn7sar_atm_header((int)vpi, vci);
-+ chInfo.TxVp_AtmHeader = tn7sar_atm_header((int)vpi, 0);
-+ chInfo.RxVp_AtmHeader = tn7sar_atm_header((int)vpi, 0);
-+ chInfo.CpcsUU = 0;
-+
-+ dprintf(4, "TxVc_AtmHeader=0x%x\n", chInfo.TxVc_AtmHeader);
-+
-+ if(pHalFunc->ChannelSetup(pHalDev, &chInfo, NULL))
-+ {
-+ printk("failed to setup channel =%d.\n", chan);
-+ return -1;
-+ }
-+
-+
-+ return 0;
-+}
-+
-+int tn7sar_send_packet(Tn7AtmPrivate *priv, int chan, void *new_skb, void *data,unsigned int len, int priority)
-+{
-+ FRAGLIST fragList;
-+ unsigned int mode;
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+
-+ dprintf(4, "tn7sar_send_packet\n");
-+ pHalFunc = (HAL_FUNCTIONS *)priv->pSarHalFunc;
-+ pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
-+
-+ fragList.len = len;
-+ fragList.data = (void *)data;
-+
-+ xdump((char *)fragList.data , fragList.len, 6);
-+
-+ /*mode bit
-+ 31-19 unused
-+ 18 oam cell, 1 = true, 0=false
-+ 17-16 oam type, 0=F4 seg, 1=F4 End, 2=F5 seg, 3=F5 end
-+ 15-08 transimit queue, current, 0=priority queue, 1=normal queue
-+ 07-00 channel number
-+ */
-+ mode = 0;
-+ mode |= (0xff & chan);
-+ mode |= ((0xff & priority) << 8);
-+
-+ dprintf(4, "mode = %d\n", mode);
-+
-+ tn7sar_data_writeback(fragList.data, len);
-+ if(pHalFunc->Send(pHalDev, &fragList, 1, len, new_skb, mode) != 0)
-+ {
-+ dprintf(1, "SAR hal failed to send packet.\n");
-+ return 1;
-+ }
-+ //tn7sar_get_stats(priv);
-+ sarStat.txPktCnt++;
-+ sarStat.txBytes +=len;
-+ return 0;
-+}
-+
-+
-+
-+int tn7sar_handle_interrupt(struct atm_dev *dev, Tn7AtmPrivate *priv)
-+{
-+ int more;
-+ int rc;
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+ int (*halIsr)(HAL_DEVICE *halDev, int *work);
-+
-+ pHalFunc = (HAL_FUNCTIONS *)priv->pSarHalFunc;
-+ pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
-+ halIsr = priv->halIsr;
-+
-+ rc = halIsr(pHalDev, &more);
-+
-+ pHalFunc->PacketProcessEnd(pHalDev);
-+
-+ return rc;
-+}
-+
-+
-+int tn7sar_deactivate_vc(Tn7AtmPrivate *priv, int chan)
-+{
-+ unsigned int mode;
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+
-+ dprintf(4, "tn7sar_deactivate_vc\n");
-+ pHalFunc = (HAL_FUNCTIONS *)priv->pSarHalFunc;
-+ pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
-+
-+ mode = 0xf; //tear down everything, wait for return;
-+
-+ pHalFunc->ChannelTeardown(pHalDev, chan, mode);
-+ return 0;
-+}
-+
-+void tn7sar_exit(struct atm_dev *dev, Tn7AtmPrivate *priv)
-+{
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+
-+ dprintf(4, "tn7sar_exit()\n");
-+
-+ pHalFunc = (HAL_FUNCTIONS *)priv->pSarHalFunc;
-+ pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
-+
-+ tn7sar_deactivate_vc(priv, 15); // de-activate oam channel
-+
-+ pHalFunc->Close(pHalDev, 2);
-+ pHalFunc->Shutdown(pHalDev);
-+
-+ kfree(priv->pSarOsFunc);
-+
-+}
-+
-+void tn7sar_get_sar_version(Tn7AtmPrivate *priv, char **pVer)
-+{
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+
-+ dprintf(4, "tn7sar_get_sar_version()\n");
-+
-+ pHalFunc = (HAL_FUNCTIONS *)priv->pSarHalFunc;
-+ pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
-+ pHalFunc->Control(pHalDev, "Version", "Get", pVer);
-+}
-+
-+
-+int tn7sar_get_near_end_loopback_count(unsigned int *pF4count, unsigned int *pF5count)
-+{
-+ unsigned int f4c, f5c;
-+
-+ f4c = *(volatile unsigned int *)SAR_PDSP_OAM_F4LB_COUNT_REG_ADDR;
-+ f5c = *(volatile unsigned int *)SAR_PDSP_OAM_F5LB_COUNT_REG_ADDR;
-+ *pF4count = f4c;
-+ *pF5count = f5c;
-+
-+ return 0;
-+}
-+
-+
-+int tn7sar_unmatched_oam_generation(void *privContext, int vpi, int vci, int type)
-+{
-+
-+ unsigned int regv = 0;
-+ int chan=15;
-+ static unsigned int tag;
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+ Tn7AtmPrivate *priv;
-+ unsigned int llid[4]={0xffffffff,0xffffffff,0xffffffff,0xffffffff};
-+
-+ dprintf(4, "tn7sar_unknow_oam_generation()\n");
-+
-+ priv = (Tn7AtmPrivate *)privContext;
-+ pHalFunc = (HAL_FUNCTIONS *)priv->pSarHalFunc;
-+ pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
-+
-+ if(vci==0)
-+ {
-+ oamPingStatus = OAM_PING_FAILED;
-+ return 0;
-+ }
-+ /* calculate atm header */
-+ oamAtmHdr = tn7sar_atm_header(vpi,vci);
-+
-+ /* config the atm header */
-+ pHalFunc->Control(pHalDev,"TxVc_AtmHeader.15", "Set", &oamAtmHdr);
-+
-+ /*record oam type */
-+ oam_type = type;
-+
-+ regv = (0xff & chan);
-+
-+ switch(type)
-+ {
-+ case 0:
-+ regv |= (1<<12); //f5 end
-+ dprintf(2, "f5 loop back\n");
-+ break;
-+ case 1:
-+ regv |= (1<<13); // f4 end
-+ break;
-+ case 2:
-+ regv |= (1<<14); //f5 seg
-+ break;
-+ case 3:
-+ regv |= (1<<15); //f4 seg
-+ break;
-+ default:
-+ break;
-+ }
-+ oamPingStatus = OAM_PING_PENDING;
-+ pHalFunc->OamLoopbackConfig(pHalDev, regv, llid, tag);
-+ tag++;
-+ return 0;
-+
-+}
-+
-+int tn7sar_oam_generation(void *privContext, int chan, int type, int vpi, int vci, int timeout)
-+{
-+ unsigned int regv = 0;
-+ static unsigned int tag;
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+ Tn7AtmPrivate *priv;
-+ unsigned int llid[4]={0xffffffff,0xffffffff,0xffffffff,0xffffffff};
-+
-+ dprintf(2, "tn7sar_oam_generation()\n");
-+
-+ priv = (Tn7AtmPrivate *)privContext;
-+ pHalFunc = (HAL_FUNCTIONS *)priv->pSarHalFunc;
-+ pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
-+
-+ if(timeout >= 5000)
-+ {
-+ if(timeout == 6000)
-+ {
-+ tn7sar_clear_pvc_table();
-+ return 0;
-+ }
-+ timeout = oamLbTimeout;
-+ }
-+
-+
-+ pHalFunc->Control(pHalDev,"OamLbTimeout", "Set", &timeout);
-+
-+ if(chan == ATM_NO_DMA_CHAN)
-+ {
-+ tn7sar_unmatched_oam_generation(priv, vpi, vci, type);
-+ return 0;
-+ }
-+
-+ /* calculate atm header */
-+ oamAtmHdr = tn7sar_atm_header(vpi,vci);
-+
-+ oam_type = type;
-+
-+ regv = (0xff & chan);
-+ switch(type)
-+ {
-+ case 0:
-+ regv |= (1<<12); //f5 end
-+ dprintf(2, "f5 loop back\n");
-+ break;
-+ case 1:
-+ regv |= (1<<13); // f4 end
-+ break;
-+ case 2:
-+ regv |= (1<<14); //f5 seg
-+ break;
-+ case 3:
-+ regv |= (1<<15); //f4 seg
-+ break;
-+ default:
-+ break;
-+ }
-+ oamPingStatus = OAM_PING_PENDING;
-+ pHalFunc->OamLoopbackConfig(pHalDev, regv, llid, tag);
-+ tag++;
-+
-+ return 0;
-+}
-+
-+int tn7sar_proc_oam_ping(char* buf, char **start, off_t offset, int count,int *eof, void *data)
-+{
-+ int len = 0;
-+
-+ len += sprintf(buf+len, "%d\n", oamPingStatus);
-+
-+ return len;
-+}
-+
-+int tn7sar_proc_pvc_table(char* buf, char **start, off_t offset, int count,int *eof, void *data)
-+{
-+ int len = 0;
-+ int i;
-+
-+ for(i=0;i<16;i++)
-+ {
-+ if(pvc_result[i].bInUse)
-+ {
-+ len += sprintf(buf+len, "%d,%d\n", pvc_result[i].vpi,pvc_result[i].vci);
-+ }
-+ else
-+ {
-+ len += sprintf(buf+len, "0,0\n");
-+ }
-+ }
-+ return len;
-+}
-+
-+
-+
-+int tn7sar_proc_sar_stat(char* buf, char **start, off_t offset, int count,int *eof, void *data)
-+{
-+ int len = 0;
-+ int limit = count - 80;
-+ struct atm_dev *dev;
-+ Tn7AtmPrivate *priv;
-+ int i, j, k;
-+ int stat_len;
-+ char statString[32];
-+ unsigned int *pStateBase, *pSarStat;
-+ HAL_FUNCTIONS *pHalFunc;
-+ HAL_DEVICE *pHalDev;
-+ int dBytes;
-+
-+ dev = (struct atm_dev *)data;
-+ priv = (Tn7AtmPrivate *)dev->dev_data;
-+
-+ pHalFunc = (HAL_FUNCTIONS *)priv->pSarHalFunc;
-+ pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
-+
-+ len += sprintf(buf+len, "SAR HAL Statistics\n");
-+ for(i=0;i<MAX_DMA_CHAN;i++)
-+ {
-+ if(priv->lut[i].inuse)
-+ {
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\nChannel %d:\n",priv->lut[i].chanid);
-+ k=0;
-+ for(j=0;j<4;j++)
-+ {
-+ stat_len =sprintf(statString, "Stats;%d;%d", j,priv->lut[i].chanid);
-+ statString[stat_len]=0;
-+ pHalFunc->Control(pHalDev, statString, "Get", &pSarStat);
-+ pStateBase = pSarStat;
-+ while(pSarStat)
-+ {
-+ if((char *)*pSarStat == NULL)
-+ break;
-+ if(len<=limit)
-+ {
-+ dBytes = sprintf(buf+len, "%s: ",(char *) *pSarStat);
-+ len += dBytes;
-+ k += dBytes;
-+ }
-+ pSarStat++;
-+ if(len<=limit)
-+ {
-+ dBytes = sprintf(buf+len, "%s; ",(char *) *pSarStat);
-+ len += dBytes;
-+ k += dBytes;
-+ }
-+ pSarStat++;
-+
-+ if(k > 60)
-+ {
-+ k=0;
-+ if(len<=limit)
-+ len += sprintf(buf+len, "\n");
-+ }
-+ }
-+
-+ kfree(pStateBase);
-+ }
-+ }
-+ }
-+
-+ return len;
-+}
-+
-+void tn7sar_get_sar_firmware_version(unsigned int *pdsp_version_ms, unsigned int *pdsp_version_ls)
-+{
-+
-+ *pdsp_version_ms = (SarPdspFirmware[9]>>20) & 0xF;
-+ *pdsp_version_ls = (SarPdspFirmware[9]>>12) & 0xFF;
-+ return;
-+}
-diff -urN linux.old/drivers/atm/sangam_atm/tnetd7300_sar_firm.h linux.dev/drivers/atm/sangam_atm/tnetd7300_sar_firm.h
---- linux.old/drivers/atm/sangam_atm/tnetd7300_sar_firm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/tnetd7300_sar_firm.h 2005-08-23 04:46:50.111841568 +0200
-@@ -0,0 +1,988 @@
-+//SarPdspFirmware Revision: 49
-+
-+static int SarPdspFirmware[] = {
-+ 0xb0a8d1f1,
-+ 0x000003d8,
-+ 0x00000000,
-+ 0x00000004,
-+ 0x00000000,
-+ 0x00000000,
-+ 0x00000000,
-+ 0x00000000,
-+ 0x21000900,
-+ 0x24049080,
-+ 0x24000080,
-+ 0x240000c0,
-+ 0x10e0e0e1,
-+ 0x10e0e0e2,
-+ 0x10e0e0e3,
-+ 0x10e0e0e4,
-+ 0x10e0e0e5,
-+ 0x10e0e0e6,
-+ 0x10e0e0e7,
-+ 0x10e0e0e8,
-+ 0x10e0e0e9,
-+ 0x10e0e0ea,
-+ 0x10e0e0eb,
-+ 0x10e0e0ec,
-+ 0x10e0e0ed,
-+ 0x10e0e0ee,
-+ 0x10e0e0ef,
-+ 0x10e0e0f0,
-+ 0x10e0e0f1,
-+ 0x10e0e0f2,
-+ 0x10e0e0f3,
-+ 0x10e0e0f4,
-+ 0x10e0e0f5,
-+ 0x10e0e0f6,
-+ 0x10e0e0f7,
-+ 0x10e0e0f8,
-+ 0x10e0e0f9,
-+ 0x10e0e0fa,
-+ 0x10e0e0fb,
-+ 0x10e0e0fc,
-+ 0x10e0e0fd,
-+ 0x10e0e0fe,
-+ 0x10e0e0ff,
-+ 0x81042680,
-+ 0x810c2680,
-+ 0x81042680,
-+ 0x2483c080,
-+ 0x81180b80,
-+ 0x2484c080,
-+ 0x811a0b80,
-+ 0x2485c080,
-+ 0x811c0b80,
-+ 0x240100dd,
-+ 0xa07d06fd,
-+ 0x240400dd,
-+ 0xa07d04fd,
-+ 0x24c000dd,
-+ 0x2400169d,
-+ 0xa07d5cfd,
-+ 0x511f9d03,
-+ 0x01019d9d,
-+ 0x7f0000fd,
-+ 0xd11eff05,
-+ 0x97c06890,
-+ 0x1d00e5e5,
-+ 0x2301229e,
-+ 0x81bc2890,
-+ 0x24000000,
-+ 0xc917ff02,
-+ 0x81000100,
-+ 0x01010000,
-+ 0xc918ff02,
-+ 0x81000100,
-+ 0x01010000,
-+ 0xc919ff02,
-+ 0x81000100,
-+ 0xd110e70a,
-+ 0xd11cff09,
-+ 0x1d00e5e5,
-+ 0xd100e704,
-+ 0xd114ff06,
-+ 0x2301179e,
-+ 0x79000004,
-+ 0xd70ffffd,
-+ 0x91382486,
-+ 0x2301059e,
-+ 0xc903ff07,
-+ 0xa06047e0,
-+ 0xb10043e6,
-+ 0xc910e602,
-+ 0x81000106,
-+ 0x24006025,
-+ 0x2300d39e,
-+ 0xd11dff09,
-+ 0x1f00e5e5,
-+ 0xc901e705,
-+ 0xd111ff06,
-+ 0x91382586,
-+ 0x2301059e,
-+ 0x79000003,
-+ 0xd715fffc,
-+ 0x2301179e,
-+ 0xc910e706,
-+ 0x110f2760,
-+ 0x240000c6,
-+ 0x24000086,
-+ 0x13106006,
-+ 0x7b00005a,
-+ 0x11079f80,
-+ 0x51008010,
-+ 0xc912ff0f,
-+ 0xd100ff04,
-+ 0xd101ff05,
-+ 0xa06046e0,
-+ 0x79000004,
-+ 0xa06044e0,
-+ 0x79000002,
-+ 0xa06045e0,
-+ 0xb10043e6,
-+ 0x61150602,
-+ 0x2101c500,
-+ 0xc910e602,
-+ 0xa1001006,
-+ 0x24000025,
-+ 0x2300d39e,
-+ 0xd11fff05,
-+ 0x97c06a90,
-+ 0x1f00e5e5,
-+ 0x2301229e,
-+ 0x81bc2a90,
-+ 0xd11cff09,
-+ 0x1d00e5e5,
-+ 0xc900e705,
-+ 0xd10fff06,
-+ 0x91382486,
-+ 0x2301059e,
-+ 0x79000003,
-+ 0xd714fffc,
-+ 0x2301179e,
-+ 0xc907ff07,
-+ 0xa0604be0,
-+ 0xb10043e6,
-+ 0xc910e602,
-+ 0x81000106,
-+ 0x24006025,
-+ 0x2300d39e,
-+ 0xd111e70a,
-+ 0xd11dff09,
-+ 0x1f00e5e5,
-+ 0xd101e704,
-+ 0xd115ff06,
-+ 0x2301179e,
-+ 0x79000004,
-+ 0xd711fffd,
-+ 0x91382586,
-+ 0x2301059e,
-+ 0xc911e706,
-+ 0x0b042760,
-+ 0x240000c6,
-+ 0x24000086,
-+ 0x13106006,
-+ 0x7b000024,
-+ 0x11709f80,
-+ 0x5100800e,
-+ 0xc913ff0d,
-+ 0xd104ff04,
-+ 0xd105ff05,
-+ 0xa0604ae0,
-+ 0x79000004,
-+ 0xa06048e0,
-+ 0x79000002,
-+ 0xa06049e0,
-+ 0xb10043e6,
-+ 0xc910e602,
-+ 0xa1001106,
-+ 0x24000025,
-+ 0x2300d39e,
-+ 0xc90bff02,
-+ 0x7900000b,
-+ 0xc90aff02,
-+ 0x79000012,
-+ 0xcf08ff89,
-+ 0xb10002e0,
-+ 0xcf18e087,
-+ 0x790000b6,
-+ 0x24000080,
-+ 0x24fb00c0,
-+ 0xa06003e0,
-+ 0x7f000082,
-+ 0xb10024e6,
-+ 0xb10025e0,
-+ 0xa06628e6,
-+ 0xa06029e0,
-+ 0x248000c6,
-+ 0xa06624e6,
-+ 0x671006f0,
-+ 0x81082186,
-+ 0x7f0000ee,
-+ 0xb10027e6,
-+ 0x61100604,
-+ 0xa0662be6,
-+ 0x810c2186,
-+ 0x79000006,
-+ 0xd70cffea,
-+ 0xa0662be6,
-+ 0x1f1be6e6,
-+ 0x81382686,
-+ 0x813c2680,
-+ 0x248000c6,
-+ 0xa06627e6,
-+ 0x7f0000e3,
-+ 0x110f0600,
-+ 0x81100b00,
-+ 0x01502545,
-+ 0x90457888,
-+ 0x5103091c,
-+ 0x6901092a,
-+ 0xc910e603,
-+ 0xd108e90d,
-+ 0x79000027,
-+ 0x01582545,
-+ 0x9045788a,
-+ 0xd108e904,
-+ 0x1f08e9e9,
-+ 0x01552545,
-+ 0x80451829,
-+ 0x50eaeb20,
-+ 0x0101ebeb,
-+ 0x015c2545,
-+ 0x8045388b,
-+ 0x7900001c,
-+ 0x015c2545,
-+ 0x9045788b,
-+ 0x6900eb05,
-+ 0x1d08e9e9,
-+ 0x01552545,
-+ 0x80451829,
-+ 0x79000004,
-+ 0x0501ebeb,
-+ 0x015c2545,
-+ 0x8045388b,
-+ 0x10ecece8,
-+ 0x79000010,
-+ 0x24000000,
-+ 0x5110000e,
-+ 0x690f6903,
-+ 0x24000069,
-+ 0x79000002,
-+ 0x01016969,
-+ 0x01010000,
-+ 0x81100b69,
-+ 0x01542545,
-+ 0x90451809,
-+ 0x6f0209f7,
-+ 0xa1001069,
-+ 0x81100b06,
-+ 0x01572545,
-+ 0x80451869,
-+ 0xa06841e8,
-+ 0xa1414006,
-+ 0x209e0000,
-+ 0x81100b06,
-+ 0xd11fe603,
-+ 0x9164388d,
-+ 0x8108248d,
-+ 0xd100e507,
-+ 0x97406490,
-+ 0x9108248d,
-+ 0x813c2480,
-+ 0x2302b4de,
-+ 0x1d00e7e7,
-+ 0x79000006,
-+ 0x97406590,
-+ 0x9108258d,
-+ 0x813c2580,
-+ 0x1d01e7e7,
-+ 0x2302b9de,
-+ 0x8164388d,
-+ 0x209e0000,
-+ 0x81040105,
-+ 0x91002286,
-+ 0x97086290,
-+ 0x81042280,
-+ 0xd100e504,
-+ 0x2302b4de,
-+ 0x1f00e7e7,
-+ 0x209e0000,
-+ 0x2302b9de,
-+ 0x1f01e7e7,
-+ 0x209e0000,
-+ 0xd109ff00,
-+ 0xa0702cf0,
-+ 0x79000001,
-+ 0xd109ff00,
-+ 0xb1002de6,
-+ 0xd11ee609,
-+ 0xb1000de0,
-+ 0xc91fe044,
-+ 0x24c338c6,
-+ 0x10000006,
-+ 0x81382686,
-+ 0x87406690,
-+ 0x813c2680,
-+ 0x7900003e,
-+ 0x110f0600,
-+ 0x81100b00,
-+ 0x24000045,
-+ 0x24000025,
-+ 0x61100603,
-+ 0x24006045,
-+ 0x24006025,
-+ 0x01704545,
-+ 0x90451888,
-+ 0x0b034600,
-+ 0x11070000,
-+ 0x69040004,
-+ 0xc916ff2c,
-+ 0x01019e9e,
-+ 0x7900002f,
-+ 0xc90cff04,
-+ 0x6f0200fd,
-+ 0xd308e8a1,
-+ 0x7f0000fb,
-+ 0x69020008,
-+ 0xd308e89e,
-+ 0xb1002fe6,
-+ 0x91b82880,
-+ 0xc91ce002,
-+ 0x1f1ce6e6,
-+ 0x10080806,
-+ 0x79000015,
-+ 0xb1002fe6,
-+ 0x69030003,
-+ 0x13c06666,
-+ 0x79000011,
-+ 0x91807809,
-+ 0xc910ea09,
-+ 0x81082689,
-+ 0x01018a8a,
-+ 0xc91ee60a,
-+ 0x1d10eaea,
-+ 0x240557c0,
-+ 0x60c08a07,
-+ 0x1f1de6e6,
-+ 0x79000005,
-+ 0x2400018a,
-+ 0x1f10eaea,
-+ 0x1f1fe6e6,
-+ 0xd71ee6f8,
-+ 0x51000002,
-+ 0x11c76666,
-+ 0x81382686,
-+ 0x87406690,
-+ 0x91082689,
-+ 0x813c2680,
-+ 0xb1002ee6,
-+ 0xd103e609,
-+ 0x81807809,
-+ 0xc908e807,
-+ 0x21039400,
-+ 0x81002386,
-+ 0x87086390,
-+ 0x81042380,
-+ 0xc908e802,
-+ 0x21039400,
-+ 0x209e0000,
-+ 0xb10008ef,
-+ 0x110f0f00,
-+ 0x81100b00,
-+ 0x24000025,
-+ 0x61100f02,
-+ 0x24005025,
-+ 0x01952545,
-+ 0x9045382e,
-+ 0xc91def03,
-+ 0x24000900,
-+ 0x2301c09e,
-+ 0xc91cef03,
-+ 0x24001900,
-+ 0x2301c09e,
-+ 0xc91bef03,
-+ 0x24000a00,
-+ 0x2301c09e,
-+ 0xc91aef03,
-+ 0x24001a00,
-+ 0x2301c09e,
-+ 0x8045382e,
-+ 0x01a82545,
-+ 0x9045388e,
-+ 0xc915ef03,
-+ 0x24000000,
-+ 0x2301c09e,
-+ 0xc914ef03,
-+ 0x24001000,
-+ 0x2301c09e,
-+ 0x8045388e,
-+ 0x61100f02,
-+ 0x24006025,
-+ 0x016d2545,
-+ 0x9045382e,
-+ 0xc919ef03,
-+ 0x24000900,
-+ 0x2301c09e,
-+ 0xc918ef03,
-+ 0x24001900,
-+ 0x2301c09e,
-+ 0xc917ef03,
-+ 0x24000a00,
-+ 0x2301c09e,
-+ 0xc916ef03,
-+ 0x24001a00,
-+ 0x2301c09e,
-+ 0x8045382e,
-+ 0x017c2545,
-+ 0x9045388e,
-+ 0xc913ef03,
-+ 0x24000000,
-+ 0x2301c09e,
-+ 0xc912ef03,
-+ 0x24001000,
-+ 0x2301c09e,
-+ 0x8045388e,
-+ 0xd11eef19,
-+ 0x11f02f00,
-+ 0x51000017,
-+ 0x24001520,
-+ 0x81140b20,
-+ 0x81b01a0f,
-+ 0x1f02e7e7,
-+ 0x24c000c0,
-+ 0x24001580,
-+ 0xa0605ce0,
-+ 0xc90fef04,
-+ 0x1d04e7e7,
-+ 0x1d05e7e7,
-+ 0x7900000c,
-+ 0xc90eef04,
-+ 0x1d04e7e7,
-+ 0x1f05e7e7,
-+ 0x79000008,
-+ 0xc90def04,
-+ 0x1f04e7e7,
-+ 0x1d05e7e7,
-+ 0x79000004,
-+ 0xc90cef03,
-+ 0x1f04e7e7,
-+ 0x1f05e7e7,
-+ 0x2100b900,
-+ 0xd11eef03,
-+ 0x1e00eeee,
-+ 0x209e0000,
-+ 0x1c00eeee,
-+ 0x209e0000,
-+ 0x110f0606,
-+ 0x81140b06,
-+ 0x13100606,
-+ 0x91b01a83,
-+ 0x24000025,
-+ 0x61100304,
-+ 0x24005025,
-+ 0xc905e702,
-+ 0x24006025,
-+ 0x110f0300,
-+ 0x81100b00,
-+ 0x81120b00,
-+ 0x51150611,
-+ 0x61100302,
-+ 0x24005025,
-+ 0x1d01e5e5,
-+ 0x51160639,
-+ 0x511a0650,
-+ 0x511c0657,
-+ 0x5118065e,
-+ 0x511e0685,
-+ 0x61100302,
-+ 0x24006025,
-+ 0x1f01e5e5,
-+ 0x51170634,
-+ 0x511b064b,
-+ 0x511d0652,
-+ 0x51190658,
-+ 0x511f067f,
-+ 0xc903e708,
-+ 0x1d03e7e7,
-+ 0x24000060,
-+ 0xa1000a60,
-+ 0x244000c0,
-+ 0x24001580,
-+ 0xa0605ce0,
-+ 0x21007d00,
-+ 0xcf02e7fc,
-+ 0x1d02e7e7,
-+ 0x1f03e7e7,
-+ 0xc904e703,
-+ 0x1f08e3e3,
-+ 0x79000002,
-+ 0x1d08e3e3,
-+ 0xc905e705,
-+ 0x01682545,
-+ 0x9045588d,
-+ 0x2302879e,
-+ 0x79000004,
-+ 0x01902545,
-+ 0x9045588d,
-+ 0x2302819e,
-+ 0x24001872,
-+ 0x24000152,
-+ 0xb10009e0,
-+ 0x108080d3,
-+ 0x10c0c092,
-+ 0x2400102c,
-+ 0x2302c8de,
-+ 0x91021c97,
-+ 0x91001cd8,
-+ 0x91061c98,
-+ 0x91041cd9,
-+ 0x910a1c99,
-+ 0x91081cda,
-+ 0x910e1c9a,
-+ 0x910c1cdb,
-+ 0x91261d9b,
-+ 0x91287d9c,
-+ 0x23028dde,
-+ 0x1f02e7e7,
-+ 0x1d03e7e7,
-+ 0x7d000070,
-+ 0x01902545,
-+ 0x9045798d,
-+ 0x79000003,
-+ 0x01682545,
-+ 0x9045788d,
-+ 0x0b09eee0,
-+ 0x24001472,
-+ 0xd108e303,
-+ 0xc900e00b,
-+ 0x79000002,
-+ 0xc910e009,
-+ 0xd101e503,
-+ 0x2302819e,
-+ 0x79000002,
-+ 0x2302879e,
-+ 0x91013d12,
-+ 0x9504bd93,
-+ 0x23028dde,
-+ 0x7d00005d,
-+ 0xd108ee03,
-+ 0x1d10e7e7,
-+ 0x7900009a,
-+ 0x1d11e7e7,
-+ 0x79000098,
-+ 0x01902545,
-+ 0x9045798d,
-+ 0x79000003,
-+ 0x01682545,
-+ 0x9045788d,
-+ 0x0b0aeee0,
-+ 0x24001072,
-+ 0x7f0000e8,
-+ 0x01a02545,
-+ 0x9045b98d,
-+ 0x79000003,
-+ 0x01742545,
-+ 0x9045b88d,
-+ 0x0b01efe0,
-+ 0x24001172,
-+ 0x7f0000e0,
-+ 0x2302d1de,
-+ 0x79000002,
-+ 0x2302d6de,
-+ 0x000c2545,
-+ 0x9045198f,
-+ 0xd100ef07,
-+ 0x1d02efef,
-+ 0xc901ef0c,
-+ 0xc905ef0b,
-+ 0x1d01efef,
-+ 0x1d05efef,
-+ 0x79000008,
-+ 0xd102ef04,
-+ 0x1f02efef,
-+ 0x8045198f,
-+ 0x79000078,
-+ 0xd101ef04,
-+ 0x1f01efef,
-+ 0x1f05efef,
-+ 0x8045198f,
-+ 0x69180673,
-+ 0x01ac2545,
-+ 0x2302dbde,
-+ 0xd100ef03,
-+ 0x23036c9e,
-+ 0x7900006e,
-+ 0xc800e40b,
-+ 0x110f0020,
-+ 0x81100b20,
-+ 0x100c0c45,
-+ 0x61100002,
-+ 0x01604545,
-+ 0x9045188f,
-+ 0xd101ef04,
-+ 0x1f01efef,
-+ 0x1f07efef,
-+ 0x8045188f,
-+ 0x01010000,
-+ 0x6f1300f4,
-+ 0x79000060,
-+ 0x2302d1de,
-+ 0x79000002,
-+ 0x2302d6de,
-+ 0x000c2545,
-+ 0x9045198f,
-+ 0xc903ef05,
-+ 0x1d03efef,
-+ 0x1f04efef,
-+ 0x8045198f,
-+ 0x79000056,
-+ 0xc904ef55,
-+ 0x1d04efef,
-+ 0xc901ef04,
-+ 0xc906ef03,
-+ 0x1d01efef,
-+ 0x1d06efef,
-+ 0x8045198f,
-+ 0x691e064e,
-+ 0x01ac2545,
-+ 0x2302dbde,
-+ 0xc800e40c,
-+ 0x110f0020,
-+ 0x81100b20,
-+ 0x100c0c45,
-+ 0x61100002,
-+ 0x01604545,
-+ 0x9045188f,
-+ 0xc901ef05,
-+ 0xc908ef04,
-+ 0x1d01efef,
-+ 0x1d07efef,
-+ 0x8045188f,
-+ 0x01010000,
-+ 0x6f1300f3,
-+ 0x7900003d,
-+ 0x10ededf0,
-+ 0xc908e303,
-+ 0x13401010,
-+ 0x209e0000,
-+ 0x13301010,
-+ 0x209e0000,
-+ 0x10ededf0,
-+ 0xc908e303,
-+ 0x130a1010,
-+ 0x209e0000,
-+ 0x13081010,
-+ 0x209e0000,
-+ 0x24000266,
-+ 0x2400c800,
-+ 0x24000020,
-+ 0xd108ee17,
-+ 0x01012020,
-+ 0xc91cff09,
-+ 0x6e0020fe,
-+ 0xc910e702,
-+ 0x20de0000,
-+ 0x1f10e7e7,
-+ 0x110f0600,
-+ 0x11f02727,
-+ 0x12002727,
-+ 0x20de0000,
-+ 0x1d10e7e7,
-+ 0x2302b4de,
-+ 0x511d0605,
-+ 0x511c0602,
-+ 0x7900001e,
-+ 0x01a62545,
-+ 0x79000002,
-+ 0x01722545,
-+ 0x90451880,
-+ 0x01018080,
-+ 0x80451880,
-+ 0x79000017,
-+ 0x01012020,
-+ 0xc91dff09,
-+ 0x6e0020fe,
-+ 0xc911e702,
-+ 0x20de0000,
-+ 0x1f11e7e7,
-+ 0x09040600,
-+ 0x110f2727,
-+ 0x12002727,
-+ 0x20de0000,
-+ 0x1d11e7e7,
-+ 0x2302b9de,
-+ 0x7f0000ea,
-+ 0x81b82786,
-+ 0x240000d1,
-+ 0x87c06790,
-+ 0x81bc2780,
-+ 0x20de0000,
-+ 0x81b82986,
-+ 0x87c06990,
-+ 0x81bc2980,
-+ 0x20de0000,
-+ 0x91b43a88,
-+ 0x2301029e,
-+ 0x51150608,
-+ 0xc908e305,
-+ 0x51120303,
-+ 0x01010303,
-+ 0x79000002,
-+ 0x24000003,
-+ 0x01012323,
-+ 0x81b01a83,
-+ 0x21007d00,
-+ 0x902cfc88,
-+ 0x10c8c893,
-+ 0x108888d4,
-+ 0x10c9c994,
-+ 0x108989d5,
-+ 0x10caca95,
-+ 0x108a8ad6,
-+ 0x10cbcb96,
-+ 0x108b8bd7,
-+ 0xd108e303,
-+ 0x2400a80c,
-+ 0x20de0000,
-+ 0x2400aa0c,
-+ 0x20de0000,
-+ 0xd108e303,
-+ 0x24007c0c,
-+ 0x20de0000,
-+ 0x24007e0c,
-+ 0x20de0000,
-+ 0x24000000,
-+ 0x90453904,
-+ 0xd108e303,
-+ 0x24007c0c,
-+ 0x20de0000,
-+ 0x24007e0c,
-+ 0x20de0000,
-+ 0xb1002fe6,
-+ 0x91b82880,
-+ 0xc91ce002,
-+ 0x209e0000,
-+ 0xb1002ee6,
-+ 0x69187279,
-+ 0xd110f230,
-+ 0xc903e769,
-+ 0xc90be604,
-+ 0xc904e767,
-+ 0xd105e766,
-+ 0x7900000c,
-+ 0xc90ae604,
-+ 0xd104e763,
-+ 0xd105e762,
-+ 0x79000008,
-+ 0xc907e604,
-+ 0xc904e75f,
-+ 0xc905e75e,
-+ 0x79000004,
-+ 0xc906e65c,
-+ 0xd104e75b,
-+ 0xc905e75a,
-+ 0x91003c80,
-+ 0x6897c058,
-+ 0x68d88057,
-+ 0x91043c80,
-+ 0x6898c055,
-+ 0x68d98054,
-+ 0x91083c80,
-+ 0x6899c052,
-+ 0x68da8051,
-+ 0x910c3c80,
-+ 0x689ac04f,
-+ 0x68db804e,
-+ 0xb10009e0,
-+ 0x6892c04c,
-+ 0x68d3804b,
-+ 0x24000160,
-+ 0xa1000a60,
-+ 0x244000c0,
-+ 0x24001580,
-+ 0xa0605ce0,
-+ 0x1d03e7e7,
-+ 0x109393c8,
-+ 0x10d4d488,
-+ 0x109494c9,
-+ 0x10d5d589,
-+ 0x109595ca,
-+ 0x10d6d68a,
-+ 0x109696cb,
-+ 0x10d7d78b,
-+ 0x8110fc88,
-+ 0x209e0000,
-+ 0x91003c80,
-+ 0x6893c00c,
-+ 0x68d4800b,
-+ 0x91043c80,
-+ 0x6894c009,
-+ 0x68d58008,
-+ 0x91083c80,
-+ 0x6895c006,
-+ 0x68d68005,
-+ 0x910c3c80,
-+ 0x6896c003,
-+ 0x68d78002,
-+ 0x79000010,
-+ 0x24ffff80,
-+ 0x24ffffc0,
-+ 0x68809306,
-+ 0x68e0f405,
-+ 0x68e0f504,
-+ 0x68e0f603,
-+ 0x6880d702,
-+ 0x79000008,
-+ 0x24000080,
-+ 0x240000c0,
-+ 0x68809323,
-+ 0x68e0f422,
-+ 0x68e0f521,
-+ 0x68e0f620,
-+ 0x6880d71f,
-+ 0x1d10f2f2,
-+ 0x2400002c,
-+ 0x2302c8de,
-+ 0x24000f80,
-+ 0x240000c0,
-+ 0x0101c0c0,
-+ 0xd100e504,
-+ 0xc91cff06,
-+ 0x6e80c0fd,
-+ 0x21016d00,
-+ 0xc91dff03,
-+ 0x6e80c0fa,
-+ 0x21016d00,
-+ 0xd104e606,
-+ 0xc909e608,
-+ 0xb1000ce0,
-+ 0x0101e0e0,
-+ 0xa0600ce0,
-+ 0x79000004,
-+ 0xb1000be0,
-+ 0x0101e0e0,
-+ 0xa0600be0,
-+ 0xb1002fe6,
-+ 0xd100e504,
-+ 0x2302b4de,
-+ 0x24000022,
-+ 0x209e0000,
-+ 0x2302b9de,
-+ 0x24000042,
-+ 0x209e0000,
-+ 0xd104e609,
-+ 0x01782545,
-+ 0x9045180e,
-+ 0x110f0e00,
-+ 0x81100b00,
-+ 0x2400a445,
-+ 0x51002502,
-+ 0x01504545,
-+ 0x90451888,
-+ 0xc909e87d,
-+ 0xb1002fe6,
-+ 0x1f1fe6e6,
-+ 0x10080806,
-+ 0x21015f00,
-+ 0x6914721b,
-+ 0x01782545,
-+ 0x2303bade,
-+ 0x900c188f,
-+ 0x1d02efef,
-+ 0xc901ef05,
-+ 0xc905ef04,
-+ 0x1d01efef,
-+ 0x1d05efef,
-+ 0x800c188f,
-+ 0xc909e66e,
-+ 0x2303d0de,
-+ 0xc800e40c,
-+ 0x110f0020,
-+ 0x81100b20,
-+ 0x100c0c45,
-+ 0x61100002,
-+ 0x01604545,
-+ 0x9045188f,
-+ 0xc901ef05,
-+ 0xc907ef04,
-+ 0x1d01efef,
-+ 0x1d07efef,
-+ 0x8045188f,
-+ 0x01010000,
-+ 0x6f1300f3,
-+ 0x7900005e,
-+ 0x6910725d,
-+ 0x01782545,
-+ 0x2303bade,
-+ 0x900c188f,
-+ 0x1f03efef,
-+ 0xd101ef03,
-+ 0x1f01efef,
-+ 0x1f06efef,
-+ 0x800c188f,
-+ 0xc909e654,
-+ 0x2303d0de,
-+ 0xc800e40b,
-+ 0x110f0020,
-+ 0x81100b20,
-+ 0x100c0c45,
-+ 0x61100002,
-+ 0x01604545,
-+ 0x9045188f,
-+ 0xd101ef04,
-+ 0x1f01efef,
-+ 0x1f08efef,
-+ 0x8045188f,
-+ 0x01010000,
-+ 0x6f1300f4,
-+ 0x79000045,
-+ 0x01782545,
-+ 0x9045788e,
-+ 0x1d02efef,
-+ 0x1d12efef,
-+ 0xc905ef04,
-+ 0x1d05efef,
-+ 0x1d01efef,
-+ 0x7900000c,
-+ 0xc915ef04,
-+ 0x1d15efef,
-+ 0x1d11efef,
-+ 0x79000008,
-+ 0xc907ef04,
-+ 0x1d07efef,
-+ 0x1d01efef,
-+ 0x79000004,
-+ 0xc917ef03,
-+ 0x1d17efef,
-+ 0x1d11efef,
-+ 0x017c2545,
-+ 0x8045388f,
-+ 0x110f0e00,
-+ 0x81100b00,
-+ 0x2400a845,
-+ 0x51002502,
-+ 0x01504545,
-+ 0x9045388f,
-+ 0x1d02efef,
-+ 0x1d12efef,
-+ 0xc905ef04,
-+ 0x1d05efef,
-+ 0x1d01efef,
-+ 0x79000004,
-+ 0xc915ef03,
-+ 0x1d15efef,
-+ 0x1d11efef,
-+ 0x8045388f,
-+ 0x7900001f,
-+ 0xc909e60d,
-+ 0x9045180e,
-+ 0x110f0e00,
-+ 0x81100b00,
-+ 0xc90ae603,
-+ 0x2400a80c,
-+ 0x79000003,
-+ 0xc90be617,
-+ 0x2400aa0c,
-+ 0x51002503,
-+ 0x01500c0c,
-+ 0x24005025,
-+ 0x20de0000,
-+ 0xc904e611,
-+ 0xc906e603,
-+ 0x24007c0c,
-+ 0x79000003,
-+ 0xc907e60d,
-+ 0x24007e0c,
-+ 0x51002502,
-+ 0x01600c0c,
-+ 0x20de0000,
-+ 0x01ac2545,
-+ 0x24000000,
-+ 0x90453804,
-+ 0xd10be603,
-+ 0x24007c0c,
-+ 0x20de0000,
-+ 0x24007e0c,
-+ 0x20de0000,
-+ 0x209e0000};
-diff -urN linux.old/drivers/atm/sangam_atm/turbodsl.c linux.dev/drivers/atm/sangam_atm/turbodsl.c
---- linux.old/drivers/atm/sangam_atm/turbodsl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/atm/sangam_atm/turbodsl.c 2005-08-23 04:46:50.111841568 +0200
-@@ -0,0 +1,223 @@
-+
-+
-+/*
-+ *
-+ * Turbo DSL Implementaion
-+ *
-+ * Zhicheng Tang ztang@ti.com
-+ *
-+ * 2002 (c) Texas Instruments Inc.
-+ *
-+*/
-+
-+/* defines and variables */
-+#define RFC2684_BRIDGED_HDR_SIZE 10
-+unsigned char LLC_BRIDGED_HEADER_2684[RFC2684_BRIDGED_HDR_SIZE] =
-+ {0xAA, 0xAA, 0x03, 0x00, 0x80, 0xC2, 0x00, 0x07, 0x00, 0x00};
-+
-+#define RFC2684_ROUTED_HDR_SIZE 6
-+unsigned char LLC_ROUTED_HEADER_2684[6] ={0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00};
-+
-+unsigned long PPP_LLC_HEADER = 0xCF03FEFE;
-+
-+/* struct definition */
-+enum
-+{
-+ AAL5_ENCAP_PPP_LLC,
-+ AAL5_ENCAP_PPP_VCMUX,
-+ AAL5_ENCAP_RFC2684_LLC_BRIDGED,
-+ AAL5_ENCAP_RFC2684_LLC_ROUTED
-+};
-+
-+/* Etherent header */
-+typedef struct _turbodsl_ether_header
-+{
-+ unsigned char dst_mac_addr[6];
-+ unsigned char src_mac_addr[6];
-+ unsigned short ether_type;
-+} turbodsl_ether_header_t;
-+
-+
-+/* Ip header define */
-+typedef struct _turbodsl_ip_header
-+{
-+
-+ unsigned short vit;
-+ unsigned short total_length;
-+ unsigned short ip_id;
-+ unsigned char flag; /* bit 0 = 0, bit1 = don't fragment, bit2=more frag */
-+ unsigned char fragment_offset; /* offset include remaining 5 bits above, which make it 13 bits */
-+ unsigned char time_to_live;
-+ unsigned char protocol;
-+ unsigned short checksum;
-+ unsigned int src_ip;
-+ unsigned int dst_ip;
-+} turbodsl_ip_header_t;
-+
-+/* Arp packet define */
-+typedef struct _turbodsl_arp_header
-+{
-+ unsigned short hardware_type;
-+ unsigned short protocol_type;
-+ unsigned char h_len;
-+ unsigned char p_len;
-+ unsigned short operation ;
-+ unsigned char snd_hw_address[6];
-+ unsigned char snd_pt_address[4];
-+ unsigned char dst_hw_address[6];
-+ unsigned char dst_pt_address[4];
-+} turbodsl_arp_header_t;
-+
-+#define FIN_FLAG 1
-+#define SYN_FLAG 1<<1
-+#define RST_FLAG 1<<2
-+#define PSH_FLAG 1<<3
-+#define ACK_FLAG 1<<4
-+#define URG_FLAG 1<<5
-+
-+typedef struct _turbodsl_tcp_header
-+{
-+ unsigned short src_port;
-+ unsigned short dst_port;
-+ unsigned int seq_num;
-+ unsigned int ack_num;
-+ unsigned char offset; /* only bits 4-7 are for offset */
-+ unsigned char flags; /* bits: 0-FIN, 1-SYN, 2-RST, 3-PSH, 4-ACK, 5-URG */
-+ unsigned short windows;
-+ unsigned short checksum;
-+ unsigned short urgent_ptr;
-+} turbodsl_tcp_header_t;
-+
-+
-+
-+/***************************************************************************
-+ * Function: turbodsl_memory_compare
-+ * Descripation: Memory compare
-+ ****************************************************************************/
-+int turbodsl_memory_compare(unsigned char *pIn, unsigned char *pOut, unsigned int len)
-+ {
-+ int i;
-+
-+ for(i=0;i<(int)len; i++)
-+ {
-+ if(pIn[i] != pOut[i])
-+ return 0;
-+ }
-+ return 1;
-+ }
-+
-+/***************************************************************************
-+ * Function: turbodsl_check_aal5_encap_type
-+ * Descripation: Determine AAL5 Encapsulation type
-+ * Input:
-+ * unsigned char *pData, AAL5 Packet buffer pointer
-+ ****************************************************************************/
-+int turbodsl_check_aal5_encap_type(unsigned char *pData)
-+ {
-+
-+ if(turbodsl_memory_compare(pData, LLC_BRIDGED_HEADER_2684, 6))
-+ return AAL5_ENCAP_RFC2684_LLC_BRIDGED;
-+ if(turbodsl_memory_compare(pData, LLC_ROUTED_HEADER_2684, 6))
-+ return AAL5_ENCAP_RFC2684_LLC_ROUTED;
-+ if(turbodsl_memory_compare(pData, (unsigned char *)&PPP_LLC_HEADER, sizeof(PPP_LLC_HEADER)))
-+ return AAL5_ENCAP_PPP_LLC;
-+
-+ return AAL5_ENCAP_PPP_VCMUX;
-+ }
-+
-+/***************************************************************************
-+ * Function: turbodsl_check_priority_type
-+ * Descripation: Determine AAL5 Encapsulation type
-+ * Input:
-+ * unsigned char *pData, AAL5 Packet buffer pointer.
-+ * short vpi, VPI.
-+ * int vci, VCI
-+ ****************************************************************************/
-+int turbodsl_check_priority_type(unsigned char *pData)
-+ {
-+ int encap;
-+ unsigned char *pP;
-+ unsigned short etherType;
-+ turbodsl_ip_header_t *pIp;
-+ turbodsl_tcp_header_t *pTcp;
-+ unsigned short ip_length;
-+
-+ dprintf(2, "turbodsl_check_priority_type ==>\n");
-+
-+ encap = turbodsl_check_aal5_encap_type(pData);
-+ pP = pData;
-+
-+ switch(encap)
-+ {
-+ case AAL5_ENCAP_RFC2684_LLC_BRIDGED:
-+ pP += RFC2684_BRIDGED_HDR_SIZE; //skip off aal5 encap
-+ pP += 12; //skip of mac address
-+ etherType = *(unsigned short *)pP;
-+ if(etherType != 0x6488 && etherType != 0x0008)
-+ {
-+ //Not an IP packet
-+ return 1;
-+ }
-+
-+ pP +=2; //skip ether type
-+ if(etherType == 0x6488)
-+ {
-+ pP += 6;
-+ }
-+ break;
-+ case AAL5_ENCAP_RFC2684_LLC_ROUTED:
-+ pP += RFC2684_ROUTED_HDR_SIZE; //skip of encap
-+ pP += 2; //skip ether type
-+ break;
-+ case AAL5_ENCAP_PPP_LLC:
-+ pP += sizeof(PPP_LLC_HEADER);
-+ if(*pP == 0xff && *(pP+1) == 0x03) //ppp hdlc header
-+ pP += 2;
-+ break;
-+ case AAL5_ENCAP_PPP_VCMUX:
-+ if(*pP == 0xff && *(pP+1) == 0x03) //ppp hdlc header
-+ pP += 2;
-+ break;
-+ default:
-+ return 1;
-+ }
-+
-+ pIp = (turbodsl_ip_header_t *)pP;
-+ if(pIp->vit != 0x0045)
-+ {
-+ //Not a IP packet
-+ return 1;
-+ }
-+
-+ if(pIp->protocol != 0x06)
-+ {
-+ //not tcp packet
-+ return 1;
-+ }
-+
-+ pTcp = (turbodsl_tcp_header_t *)(pP + sizeof(turbodsl_ip_header_t));
-+
-+ ip_length = (pIp->total_length>>8) + (pIp->total_length<<8);
-+
-+ if((pTcp->flags & ACK_FLAG) && ip_length <=40)
-+ return 0;
-+
-+ return 1;
-+ }
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff -urN linux.old/include/linux/atmdev.h linux.dev/include/linux/atmdev.h
---- linux.old/include/linux/atmdev.h 2005-08-22 23:18:37.812526104 +0200
-+++ linux.dev/include/linux/atmdev.h 2005-08-23 06:33:33.425389944 +0200
-@@ -30,6 +30,9 @@
- #define ATM_DS3_PCR (8000*12)
- /* DS3: 12 cells in a 125 usec time slot */
-
-+#define ATM_PDU_OVHD 0 /* number of bytes to charge against buffer
-+ quota per PDU */
-+
- #define ATM_SD(s) ((s)->sk->protinfo.af_atm)
-
-
-@@ -94,7 +97,8 @@
- /* set backend handler */
- #define ATM_NEWBACKENDIF _IOW('a',ATMIOC_SPECIAL+3,atm_backend_t)
- /* use backend to make new if */
--
-+#define ATM_STOPTX _IOW('a',ATMIOC_SPECIAL+4,struct atmif_sioc)
-+ /* Stop Tx on Sangam DSL */
- /*
- * These are backend handkers that can be set via the ATM_SETBACKEND call
- * above. In the future we may support dynamic loading of these - for now,
-@@ -199,7 +203,9 @@
- "SESSION", "HASSAP", "BOUND", "CLOSE"
-
-
--#ifdef __KERNEL__
-+#ifndef __KERNEL__
-+#undef __AAL_STAT_ITEMS
-+#else
-
- #include <linux/sched.h> /* wait_queue_head_t */
- #include <linux/time.h> /* struct timeval */
-@@ -291,6 +297,7 @@
- int (*send)(struct atm_vcc *vcc,struct sk_buff *skb);
- void *dev_data; /* per-device data */
- void *proto_data; /* per-protocol data */
-+ struct timeval timestamp; /* AAL timestamps */
- struct k_atm_aal_stats *stats; /* pointer to AAL stats group */
- wait_queue_head_t sleep; /* if socket is busy */
- struct sock *sk; /* socket backpointer */
-@@ -333,13 +340,14 @@
- struct k_atm_dev_stats stats; /* statistics */
- char signal; /* signal status (ATM_PHY_SIG_*) */
- int link_rate; /* link rate (default: OC3) */
-- atomic_t refcnt; /* reference count */
-- spinlock_t lock; /* protect internal members */
-+ atomic_t refcnt; /* reference count */
-+ spinlock_t lock; /* protect internal members */
- #ifdef CONFIG_PROC_FS
- struct proc_dir_entry *proc_entry; /* proc entry */
- char *proc_name; /* proc entry name */
- #endif
-- struct list_head dev_list; /* linkage */
-+ struct list_head dev_list; /* linkage */
-+
- };
-
-
diff --git a/openwrt/target/linux/ar7-2.4/patches/005-wdt_driver.patch b/openwrt/target/linux/ar7-2.4/patches/005-wdt_driver.patch
deleted file mode 100644
index 9b01a353da..0000000000
--- a/openwrt/target/linux/ar7-2.4/patches/005-wdt_driver.patch
+++ /dev/null
@@ -1,392 +0,0 @@
-diff -ruN linux-2.4.30-patch006/drivers/char/ar7_wdt.c linux-2.4.30-patch007/drivers/char/ar7_wdt.c
---- linux-2.4.30-patch006/drivers/char/ar7_wdt.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.30-patch007/drivers/char/ar7_wdt.c 2005-10-27 09:39:40.000000000 +0200
-@@ -0,0 +1,335 @@
-+/* linux/drivers/char/ar7_wdt.c
-+
-+ TI AR7 watch dog timer support
-+
-+ Copyright (c) 2005 Enrik Berkhan <Enrik.Berkhan@akk.org>
-+
-+ Som code taken from:
-+ National Semiconductor SCx200 Watchdog support
-+ Copyright (c) 2001,2002 Christer Weinigel <wingel@nano-system.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.
-+
-+ The author(s) of this software shall not be held liable for damages
-+ of any nature resulting due to the use of this software. This
-+ software is provided AS-IS with no warranties. */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/miscdevice.h>
-+#include <linux/watchdog.h>
-+#include <linux/notifier.h>
-+#include <linux/reboot.h>
-+#include <linux/ioport.h>
-+
-+#include <asm/uaccess.h>
-+
-+#include <asm/ar7/avalanche_misc.h>
-+#include <asm/ar7/sangam.h>
-+
-+#define NAME "ar7_wdt"
-+#define LONGNAME "TI AR7 Watchdog Timer"
-+
-+MODULE_AUTHOR("Enrik Berkhan <Enrik.Berkhan@akk.org>");
-+MODULE_DESCRIPTION(LONGNAME);
-+MODULE_LICENSE("GPL");
-+
-+#ifndef CONFIG_WATCHDOG_NOWAYOUT
-+#define CONFIG_WATCHDOG_NOWAYOUT 0
-+#endif
-+
-+static int margin = 60;
-+MODULE_PARM(margin, "i");
-+MODULE_PARM_DESC(margin, "Watchdog margin in seconds (1 - ~68)");
-+
-+static int nowayout = CONFIG_WATCHDOG_NOWAYOUT;
-+MODULE_PARM(nowayout, "i");
-+MODULE_PARM_DESC(nowayout, "Disable watchdog shutdown on close");
-+
-+typedef struct {
-+ uint32_t kick_lock;
-+ uint32_t kick;
-+ uint32_t change_lock;
-+ uint32_t change ;
-+ uint32_t disable_lock;
-+ uint32_t disable;
-+ uint32_t prescale_lock;
-+ uint32_t prescale;
-+} ar7_wdt_t;
-+
-+volatile ar7_wdt_t *ar7_wdt = (ar7_wdt_t *)AVALANCHE_WATCHDOG_TIMER_BASE;
-+
-+static struct semaphore open_semaphore;
-+static unsigned expect_close;
-+
-+/* XXX correct? assumed to be sysfreq/2. get this dynamically ... */
-+#define vbus_freq 62500000
-+
-+/* XXX currently fixed, allows max margin ~68.72 secs */
-+#define prescale_value 0xFFFF
-+
-+static void ar7_wdt_kick(uint32_t value)
-+{
-+ ar7_wdt->kick_lock = 0x5555;
-+ if ((ar7_wdt->kick_lock & 3) == 1) {
-+ ar7_wdt->kick_lock = 0xAAAA;
-+ if ((ar7_wdt->kick_lock & 3) == 3) {
-+ ar7_wdt->kick = value;
-+ return;
-+ }
-+ }
-+ printk(KERN_ERR NAME "failed to unlock WDT kick reg\n");
-+}
-+
-+static void ar7_wdt_prescale(uint32_t value)
-+{
-+ ar7_wdt->prescale_lock = 0x5A5A;
-+ if ((ar7_wdt->prescale_lock & 3) == 1) {
-+ ar7_wdt->prescale_lock = 0xA5A5;
-+ if ((ar7_wdt->prescale_lock & 3) == 3) {
-+ ar7_wdt->prescale = value;
-+ return;
-+ }
-+ }
-+ printk(KERN_ERR NAME "failed to unlock WDT prescale reg\n");
-+}
-+
-+static void ar7_wdt_change(uint32_t value)
-+{
-+ ar7_wdt->change_lock = 0x6666;
-+ if ((ar7_wdt->change_lock & 3) == 1) {
-+ ar7_wdt->change_lock = 0xBBBB;
-+ if ((ar7_wdt->change_lock & 3) == 3) {
-+ ar7_wdt->change = value;
-+ return;
-+ }
-+ }
-+ printk(KERN_ERR NAME "failed to unlock WDT change reg\n");
-+}
-+
-+static void ar7_wdt_disable(uint32_t value)
-+{
-+ ar7_wdt->disable_lock = 0x7777;
-+ if ((ar7_wdt->disable_lock & 3) == 1) {
-+ ar7_wdt->disable_lock = 0xCCCC;
-+ if ((ar7_wdt->disable_lock & 3) == 2) {
-+ ar7_wdt->disable_lock = 0xDDDD;
-+ if ((ar7_wdt->disable_lock & 3) == 3) {
-+ ar7_wdt->disable = value;
-+ return;
-+ }
-+ }
-+ }
-+ printk(KERN_ERR NAME "failed to unlock WDT disable reg\n");
-+ return;
-+}
-+
-+static void ar7_wdt_update_margin(int new_margin)
-+{
-+ uint32_t change;
-+
-+ change = new_margin * (vbus_freq / prescale_value);
-+ if (change < 1) change = 1;
-+ if (change > 0xFFFF) change = 0xFFFF;
-+ ar7_wdt_change(change);
-+ margin = change * prescale_value / vbus_freq;
-+ printk(KERN_INFO NAME
-+ ": timer margin %d seconds (prescale %d, change %d, freq %d)\n",
-+ margin, prescale_value, change, vbus_freq);
-+}
-+
-+static void ar7_wdt_enable_wdt(void)
-+{
-+ printk(KERN_DEBUG NAME ": enabling watchdog timer\n");
-+ ar7_wdt_disable(1);
-+ ar7_wdt_kick(1);
-+}
-+
-+static void ar7_wdt_disable_wdt(void)
-+{
-+ printk(KERN_DEBUG NAME ": disabling watchdog timer\n");
-+ ar7_wdt_disable(0);
-+}
-+
-+static int ar7_wdt_open(struct inode *inode, struct file *file)
-+{
-+ /* only allow one at a time */
-+ if (down_trylock(&open_semaphore))
-+ return -EBUSY;
-+ ar7_wdt_enable_wdt();
-+ expect_close = 0;
-+
-+ return 0;
-+}
-+
-+static int ar7_wdt_release(struct inode *inode, struct file *file)
-+{
-+ if (!expect_close) {
-+ printk(KERN_WARNING NAME ": watchdog device closed unexpectedly, will not disable the watchdog timer\n");
-+ } else if (!nowayout) {
-+ ar7_wdt_disable_wdt();
-+ }
-+ up(&open_semaphore);
-+
-+ return 0;
-+}
-+
-+static int ar7_wdt_notify_sys(struct notifier_block *this,
-+ unsigned long code, void *unused)
-+{
-+ if (code == SYS_HALT || code == SYS_POWER_OFF)
-+ if (!nowayout)
-+ ar7_wdt_disable_wdt();
-+
-+ return NOTIFY_DONE;
-+}
-+
-+static struct notifier_block ar7_wdt_notifier =
-+{
-+ .notifier_call = ar7_wdt_notify_sys
-+};
-+
-+static ssize_t ar7_wdt_write(struct file *file, const char *data,
-+ size_t len, loff_t *ppos)
-+{
-+ if (ppos != &file->f_pos)
-+ return -ESPIPE;
-+
-+ /* check for a magic close character */
-+ if (len)
-+ {
-+ size_t i;
-+
-+ ar7_wdt_kick(1);
-+
-+ expect_close = 0;
-+ for (i = 0; i < len; ++i) {
-+ char c;
-+ if (get_user(c, data+i))
-+ return -EFAULT;
-+ if (c == 'V')
-+ expect_close = 1;
-+ }
-+
-+ }
-+ return len;
-+}
-+
-+static int ar7_wdt_ioctl(struct inode *inode, struct file *file,
-+ unsigned int cmd, unsigned long arg)
-+{
-+ static struct watchdog_info ident = {
-+ .identity = LONGNAME,
-+ .firmware_version = 1,
-+ .options = (WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING),
-+ };
-+ int new_margin;
-+
-+ switch (cmd) {
-+ default:
-+ return -ENOTTY;
-+ case WDIOC_GETSUPPORT:
-+ if(copy_to_user((struct watchdog_info *)arg, &ident,
-+ sizeof(ident)))
-+ return -EFAULT;
-+ return 0;
-+ case WDIOC_GETSTATUS:
-+ case WDIOC_GETBOOTSTATUS:
-+ if (put_user(0, (int *)arg))
-+ return -EFAULT;
-+ return 0;
-+ case WDIOC_KEEPALIVE:
-+ ar7_wdt_kick(1);
-+ return 0;
-+ case WDIOC_SETTIMEOUT:
-+ if (get_user(new_margin, (int *)arg))
-+ return -EFAULT;
-+ if (new_margin < 1)
-+ return -EINVAL;
-+
-+ ar7_wdt_update_margin(new_margin);
-+ ar7_wdt_kick(1);
-+
-+ case WDIOC_GETTIMEOUT:
-+ if (put_user(margin, (int *)arg))
-+ return -EFAULT;
-+ return 0;
-+ }
-+}
-+
-+static struct file_operations ar7_wdt_fops = {
-+ .owner = THIS_MODULE,
-+ .write = ar7_wdt_write,
-+ .ioctl = ar7_wdt_ioctl,
-+ .open = ar7_wdt_open,
-+ .release = ar7_wdt_release,
-+};
-+
-+static struct miscdevice ar7_wdt_miscdev = {
-+ .minor = WATCHDOG_MINOR,
-+ .name = "watchdog",
-+ .fops = &ar7_wdt_fops,
-+};
-+
-+static __initdata char *last_initiator[] = {
-+ [HARDWARE_RESET] = "hardware reset",
-+ [SOFTWARE_RESET0] = "SW0 software reset",
-+ [SOFTWARE_RESET1] = "SW1 software reset",
-+ [WATCHDOG_RESET] = "watchdog"
-+};
-+
-+static int __init ar7_wdt_init(void)
-+{
-+ int r;
-+
-+ if (!request_mem_region(AVALANCHE_WATCHDOG_TIMER_BASE,
-+ sizeof(ar7_wdt_t), LONGNAME)) {
-+ printk(KERN_WARNING NAME ": watchdog I/O region busy\n");
-+ return -EBUSY;
-+ }
-+
-+ printk(KERN_INFO NAME ": last system reset initiated by %s\n",
-+ last_initiator[avalanche_get_sys_last_reset_status()]);
-+
-+
-+ ar7_wdt_disable_wdt();
-+ ar7_wdt_prescale(prescale_value);
-+ ar7_wdt_update_margin(margin);
-+
-+ sema_init(&open_semaphore, 1);
-+
-+ r = misc_register(&ar7_wdt_miscdev);
-+ if (r) {
-+ printk(KERN_ERR NAME ": unable to register misc device\n");
-+ release_mem_region(AVALANCHE_WATCHDOG_TIMER_BASE,
-+ sizeof(ar7_wdt_t));
-+ return r;
-+ }
-+
-+ r = register_reboot_notifier(&ar7_wdt_notifier);
-+ if (r) {
-+ printk(KERN_ERR NAME ": unable to register reboot notifier\n");
-+ misc_deregister(&ar7_wdt_miscdev);
-+ release_mem_region(AVALANCHE_WATCHDOG_TIMER_BASE,
-+ sizeof(ar7_wdt_t));
-+ return r;
-+ }
-+
-+ return 0;
-+}
-+
-+static void __exit ar7_wdt_cleanup(void)
-+{
-+ unregister_reboot_notifier(&ar7_wdt_notifier);
-+ misc_deregister(&ar7_wdt_miscdev);
-+ release_mem_region(AVALANCHE_WATCHDOG_TIMER_BASE, sizeof(ar7_wdt_t));
-+}
-+
-+module_init(ar7_wdt_init);
-+module_exit(ar7_wdt_cleanup);
-diff -ruN linux-2.4.30-patch006/drivers/char/Config.in linux-2.4.30-patch007/drivers/char/Config.in
---- linux-2.4.30-patch006/drivers/char/Config.in 2005-10-27 11:25:29.000000000 +0200
-+++ linux-2.4.30-patch007/drivers/char/Config.in 2005-10-27 11:17:32.000000000 +0200
-@@ -251,6 +251,9 @@
- bool 'Watchdog Timer Support' CONFIG_WATCHDOG
- if [ "$CONFIG_WATCHDOG" != "n" ]; then
- bool ' Disable watchdog shutdown on close' CONFIG_WATCHDOG_NOWAYOUT
-+ if [ "$CONFIG_AR7" = "y" ] ; then
-+ tristate ' TI AR7 Watchdog Timer' CONFIG_AR7_WDT
-+ else
- tristate ' Acquire SBC Watchdog Timer' CONFIG_ACQUIRE_WDT
- tristate ' Advantech SBC Watchdog Timer' CONFIG_ADVANTECH_WDT
- tristate ' ALi M7101 PMU on ALi 1535D+ Watchdog Timer' CONFIG_ALIM1535_WDT
-@@ -271,7 +274,6 @@
- tristate ' SBC-60XX Watchdog Timer' CONFIG_60XX_WDT
- dep_tristate ' SC1200 Watchdog Timer (EXPERIMENTAL)' CONFIG_SC1200_WDT $CONFIG_EXPERIMENTAL
- tristate ' NatSemi SCx200 Watchdog' CONFIG_SCx200_WDT
-- tristate ' Software Watchdog' CONFIG_SOFT_WATCHDOG
- tristate ' W83877F (EMACS) Watchdog Timer' CONFIG_W83877F_WDT
- tristate ' WDT Watchdog timer' CONFIG_WDT
- tristate ' WDT PCI Watchdog timer' CONFIG_WDTPCI
-@@ -282,6 +284,8 @@
- fi
- fi
- tristate ' ZF MachZ Watchdog' CONFIG_MACHZ_WDT
-+ fi
-+ tristate ' Software Watchdog' CONFIG_SOFT_WATCHDOG
- if [ "$CONFIG_SGI_IP22" = "y" ]; then
- dep_tristate ' Indy/I2 Hardware Watchdog' CONFIG_INDYDOG $CONFIG_SGI_IP22
- fi
-diff -ruN linux-2.4.30-patch006/drivers/char/Makefile linux-2.4.30-patch007/drivers/char/Makefile
---- linux-2.4.30-patch006/drivers/char/Makefile 2005-10-27 11:19:38.000000000 +0200
-+++ linux-2.4.30-patch007/drivers/char/Makefile 2005-10-27 09:39:40.000000000 +0200
-@@ -342,6 +342,7 @@
- obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o
- obj-$(CONFIG_INDYDOG) += indydog.o
- obj-$(CONFIG_8xx_WDT) += mpc8xx_wdt.o
-+obj-$(CONFIG_AR7_WDT) += ar7_wdt.o
-
- subdir-$(CONFIG_MWAVE) += mwave
- ifeq ($(CONFIG_MWAVE),y)
-diff -ruN linux-2.4.30-patch006/include/asm-mips/ar7/sangam.h linux-2.4.30-patch007/include/asm-mips/ar7/sangam.h
---- linux-2.4.30-patch006/include/asm-mips/ar7/sangam.h 2005-10-27 11:25:51.000000000 +0200
-+++ linux-2.4.30-patch007/include/asm-mips/ar7/sangam.h 2005-10-27 11:13:37.000000000 +0200
-@@ -152,7 +152,7 @@
- #define AVALANCHE_EMIF_SDRAM_CFG (AVALANCHE_EMIF_CONTROL_BASE + 0x8)
- #define AVALANCHE_RST_CTRL_PRCR (KSEG1ADDR(0x08611600))
- #define AVALANCHE_RST_CTRL_SWRCR (KSEG1ADDR(0x08611604))
--#define AVALANCHE_RST_CTRL_RSR (KSEG1ADDR(0x08611600))
-+#define AVALANCHE_RST_CTRL_RSR (KSEG1ADDR(0x08611608))
-
- #define AVALANCHE_POWER_CTRL_PDCR (KSEG1ADDR(0x08610A00))
- #define AVALANCHE_WAKEUP_CTRL_WKCR (KSEG1ADDR(0x08610A0C))
diff --git a/openwrt/target/linux/ar7-2.4/patches/006-sched_use_tsc.patch b/openwrt/target/linux/ar7-2.4/patches/006-sched_use_tsc.patch
deleted file mode 100644
index 5b64310738..0000000000
--- a/openwrt/target/linux/ar7-2.4/patches/006-sched_use_tsc.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-diff -urN linux.old/arch/mips/kernel/time.c linux.dev/arch/mips/kernel/time.c
---- linux.old/arch/mips/kernel/time.c 2005-11-14 11:06:38.661262000 +0100
-+++ linux.dev/arch/mips/kernel/time.c 2005-11-15 20:02:50.059676750 +0100
-@@ -151,6 +151,27 @@
- unsigned int (*mips_hpt_read)(void);
- void (*mips_hpt_init)(unsigned int);
-
-+extern __u32 get_htscl(void)
-+{
-+ return timerhi;
-+}
-+
-+static __u64 tscll_last = 0;
-+
-+extern __u64 get_tscll(void)
-+{
-+ __u64 h = (__u64) timerhi;
-+ __u32 c = read_c0_count();
-+
-+ h <<= 32;
-+ h += c;
-+
-+ while (h < tscll_last)
-+ h += (((__u64) 1) << 32);
-+
-+ tscll_last = h;
-+ return h;
-+}
-
- /*
- * timeofday services, for syscalls.
-@@ -761,3 +782,5 @@
- EXPORT_SYMBOL(to_tm);
- EXPORT_SYMBOL(rtc_set_time);
- EXPORT_SYMBOL(rtc_get_time);
-+EXPORT_SYMBOL(get_htscl);
-+EXPORT_SYMBOL(get_tscll);
-diff -urN linux.old/include/asm-mips/timex.h linux.dev/include/asm-mips/timex.h
---- linux.old/include/asm-mips/timex.h 2005-11-14 11:06:38.685263500 +0100
-+++ linux.dev/include/asm-mips/timex.h 2005-11-14 11:02:21.069163500 +0100
-@@ -31,6 +31,19 @@
- return read_c0_count();
- }
-
-+extern __u32 get_htscl(void);
-+extern __u64 get_tscll(void);
-+
-+#define rdtsc(low, high) \
-+ high = get_htscl(); \
-+ low = read_c0_count();
-+
-+#define rdtscl(low) \
-+ low = read_c0_count();
-+
-+#define rdtscll(val) \
-+ val = get_tscll();
-+
- #define vxtime_lock() do {} while (0)
- #define vxtime_unlock() do {} while (0)
-
-diff -urN linux.old/include/net/pkt_sched.h linux.dev/include/net/pkt_sched.h
---- linux.old/include/net/pkt_sched.h 2005-11-14 11:06:38.709265000 +0100
-+++ linux.dev/include/net/pkt_sched.h 2005-11-14 11:02:21.069163500 +0100
-@@ -5,7 +5,11 @@
- #define PSCHED_JIFFIES 2
- #define PSCHED_CPU 3
-
-+#ifdef __mips__
-+#define PSCHED_CLOCK_SOURCE PSCHED_CPU
-+#else
- #define PSCHED_CLOCK_SOURCE PSCHED_JIFFIES
-+#endif
-
- #include <linux/config.h>
- #include <linux/types.h>
-@@ -271,7 +275,7 @@
- #define PSCHED_US2JIFFIE(delay) (((delay)+psched_clock_per_hz-1)/psched_clock_per_hz)
- #define PSCHED_JIFFIE2US(delay) ((delay)*psched_clock_per_hz)
-
--#ifdef CONFIG_X86_TSC
-+#if defined(CONFIG_X86_TSC) || defined(__mips__)
-
- #define PSCHED_GET_TIME(stamp) \
- ({ u64 __cur; \
diff --git a/openwrt/target/linux/aruba-2.6/Config.in b/openwrt/target/linux/aruba-2.6/Config.in
deleted file mode 100644
index c1fab56464..0000000000
--- a/openwrt/target/linux/aruba-2.6/Config.in
+++ /dev/null
@@ -1,4 +0,0 @@
-config BR2_ARUBA_RAMDISK
- prompt "ramdisk support"
- depends BR2_LINUX_2_6_ARUBA
- bool
diff --git a/openwrt/target/linux/aruba-2.6/Makefile b/openwrt/target/linux/aruba-2.6/Makefile
deleted file mode 100644
index a05d278bae..0000000000
--- a/openwrt/target/linux/aruba-2.6/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-LINUX_VERSION:=2.6.16.7
-LINUX_RELEASE:=1
-LINUX_KERNEL_MD5SUM:=9682b2bd6e02f3087982d7c3f5ba824e
-
-include ../rules.mk
-include ./config
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
-
-
-$(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
- [ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches $(MAKE_TRACE)
- [ -d ./patches ] && $(PATCH) $(LINUX_DIR) ./patches $(MAKE_TRACE)
-ifeq ($(BR2_ARUBA_RAMDISK),y)
- @$(CP) config-ramdisk $(LINUX_DIR)/.config
-else
- @$(CP) config $(LINUX_DIR)/.config
-endif
- touch $@
-
diff --git a/openwrt/target/linux/aruba-2.6/config b/openwrt/target/linux/aruba-2.6/config
deleted file mode 100644
index d49ea058eb..0000000000
--- a/openwrt/target/linux/aruba-2.6/config
+++ /dev/null
@@ -1,1518 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Mon Mar 20 14:06:58 2006
-#
-CONFIG_MIPS=y
-
-#
-# Machine selection
-#
-# CONFIG_MIPS_MTX1 is not set
-# CONFIG_MIPS_BOSPORUS is not set
-# CONFIG_MIPS_PB1000 is not set
-# CONFIG_MIPS_PB1100 is not set
-# CONFIG_MIPS_PB1500 is not set
-# CONFIG_MIPS_PB1550 is not set
-# CONFIG_MIPS_PB1200 is not set
-# CONFIG_MIPS_DB1000 is not set
-# CONFIG_MIPS_DB1100 is not set
-# CONFIG_MIPS_DB1500 is not set
-# CONFIG_MIPS_DB1550 is not set
-# CONFIG_MIPS_DB1200 is not set
-# CONFIG_MIPS_MIRAGE is not set
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MIPS_EV64120 is not set
-# CONFIG_MIPS_EV96100 is not set
-# CONFIG_MIPS_IVR is not set
-# CONFIG_MIPS_ITE8172 is not set
-CONFIG_MACH_ARUBA=y
-# CONFIG_MACH_JAZZ is not set
-# CONFIG_LASAT is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_MALTA is not set
-# CONFIG_MIPS_SEAD is not set
-# CONFIG_MIPS_SIM is not set
-# CONFIG_MOMENCO_JAGUAR_ATX is not set
-# CONFIG_MOMENCO_OCELOT is not set
-# CONFIG_MOMENCO_OCELOT_3 is not set
-# CONFIG_MOMENCO_OCELOT_C is not set
-# CONFIG_MOMENCO_OCELOT_G is not set
-# CONFIG_MIPS_XXS1500 is not set
-# CONFIG_PNX8550_V2PCI is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_DDB5074 is not set
-# CONFIG_DDB5476 is not set
-# CONFIG_DDB5477 is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_QEMU is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SIBYTE_SWARM is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_PTSWARM is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SNI_RM200_PCI is not set
-# CONFIG_TOSHIBA_JMR3927 is not set
-# CONFIG_TOSHIBA_RBTX4927 is not set
-# CONFIG_TOSHIBA_RBTX4938 is not set
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_DMA_NEED_PCI_MAP_STATE=y
-CONFIG_CPU_BIG_ENDIAN=y
-# CONFIG_CPU_LITTLE_ENDIAN is not set
-CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
-CONFIG_SWAP_IO_SPACE=y
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-
-#
-# CPU selection
-#
-CONFIG_CPU_MIPS32_R1=y
-# CONFIG_CPU_MIPS32_R2 is not set
-# CONFIG_CPU_MIPS64_R1 is not set
-# CONFIG_CPU_MIPS64_R2 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_VR41XX is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_CPU_MIPS32=y
-CONFIG_CPU_MIPSR1=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-
-#
-# Kernel type
-#
-CONFIG_32BIT=y
-# CONFIG_64BIT is not set
-CONFIG_PAGE_SIZE_4KB=y
-# CONFIG_PAGE_SIZE_8KB is not set
-# CONFIG_PAGE_SIZE_16KB is not set
-# CONFIG_PAGE_SIZE_64KB is not set
-CONFIG_CPU_HAS_PREFETCH=y
-# CONFIG_MIPS_MT is not set
-# CONFIG_64BIT_PHYS_ADDR is not set
-CONFIG_CPU_ADVANCED=y
-CONFIG_CPU_HAS_LLSC=y
-# CONFIG_CPU_HAS_WB is not set
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_ARCH_FLATMEM_ENABLE=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_SPLIT_PTLOCK_CPUS=4
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-
-#
-# 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_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_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-# CONFIG_KALLSYMS 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=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-CONFIG_OBSOLETE_INTERMODULE=y
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
-
-#
-# Block layer
-#
-# CONFIG_LBD 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"
-
-#
-# Bus options (PCI, PCMCIA, EISA, ISA, TC)
-#
-CONFIG_HW_HAS_PCI=y
-CONFIG_PCI=y
-# CONFIG_PCI_LEGACY_PROC is not set
-CONFIG_MMU=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# PCI Hotplug Support
-#
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_TRAD_SIGNALS=y
-
-#
-# 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 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_IPSEC_NAT_TRAVERSAL is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-# CONFIG_INET_DIAG is not set
-# 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_INET6_AH is not set
-# CONFIG_INET6_ESP is not set
-# CONFIG_INET6_IPCOMP is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_IPV6_TUNNEL is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-# CONFIG_BRIDGE_NETFILTER is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-CONFIG_NETFILTER_XTABLES=y
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-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_PKTTYPE 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_STRING is not set
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=y
-CONFIG_IP_NF_CT_ACCT=y
-# 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=y
-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=m
-CONFIG_IP_NF_SIP=m
-CONFIG_IP_NF_QUEUE=y
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_LAYER7=m
-# CONFIG_IP_NF_MATCH_LAYER7_DEBUG is not set
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_IPP2P=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_TIME=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-# 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_IMQ=m
-# CONFIG_IP_NF_TARGET_LOG is not set
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=y
-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_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=y
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_NAT_PPTP=m
-CONFIG_IP_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=y
-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 is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-CONFIG_IP_NF_SET=m
-CONFIG_IP_NF_SET_MAX=256
-CONFIG_IP_NF_SET_HASHSIZE=1024
-CONFIG_IP_NF_SET_IPMAP=m
-CONFIG_IP_NF_SET_MACIPMAP=m
-CONFIG_IP_NF_SET_PORTMAP=m
-CONFIG_IP_NF_SET_IPHASH=m
-CONFIG_IP_NF_SET_NETHASH=m
-CONFIG_IP_NF_SET_IPTREE=m
-CONFIG_IP_NF_MATCH_SET=m
-CONFIG_IP_NF_TARGET_SET=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES 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=y
-CONFIG_VLAN_8021Q=y
-# 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=y
-CONFIG_NET_SCH_CLK_JIFFIES=y
-# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
-# 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_ESFQ=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 is not set
-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_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 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
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER 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=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 is not set
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_AMDSTD_RETRY=0
-# 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=y
-CONFIG_MTD_PHYSMAP_START=0x1fc00000
-CONFIG_MTD_PHYSMAP_LEN=0x400000
-CONFIG_MTD_PHYSMAP_BANKWIDTH=1
-# 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_BLKMTD 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=m
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-# 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=m
-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
-
-#
-# SCSI Transport Attributes
-#
-# 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
-
-#
-# SCSI low-level drivers
-#
-# 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_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 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_FC 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 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_IFB is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_IMQ=m
-# CONFIG_IMQ_BEHAVIOR_AA is not set
-# CONFIG_IMQ_BEHAVIOR_AB is not set
-CONFIG_IMQ_BEHAVIOR_BA=y
-# CONFIG_IMQ_BEHAVIOR_BB is not set
-CONFIG_IMQ_NUM_DEVS=2
-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_AR2313=y
-CONFIG_IDT_RC32434_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_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=y
-# 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_LAN_SAA9730 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 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
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# 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_HOSTAP 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 is not set
-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 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=m
-
-#
-# 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 is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-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
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG 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
-
-#
-# 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 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
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_DPC is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-# 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_MIXER_OSS is not set
-# CONFIG_SND_PCM_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-# CONFIG_SND_SUPPORT_OLD_API 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
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 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_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_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 MIPS 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=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-CONFIG_USB_DYNAMIC_MINORS=y
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=m
-# CONFIG_USB_EHCI_SPLIT_ISO is not set
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
-CONFIG_USB_UHCI_HCD=m
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_OBSOLETE_OSS_USB_DRIVER=y
-CONFIG_USB_AUDIO=m
-# CONFIG_USB_MIDI is not set
-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_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_MTOUCH is not set
-# CONFIG_USB_ITMTOUCH is not set
-# CONFIG_USB_EGALAX 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 Multimedia devices
-#
-# CONFIG_USB_DABUSB is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC 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_PWC=m
-
-#
-# 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_USB_ZD1201 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_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_CYTHERM is not set
-# CONFIG_USB_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_SISUSBVGA is not set
-# 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
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
-#
-
-#
-# 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_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_REISERFS_FS_XATTR is not set
-CONFIG_JFS_FS=m
-# CONFIG_JFS_POSIX_ACL is not set
-# CONFIG_JFS_SECURITY is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS 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 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 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 is not set
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS 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_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_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 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=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=y
-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=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_PRINTK_TIME is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_CROSSCOMPILE=y
-CONFIG_CMDLINE=""
-
-#
-# 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 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_DES=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_TEST 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_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
diff --git a/openwrt/target/linux/aruba-2.6/config-ramdisk b/openwrt/target/linux/aruba-2.6/config-ramdisk
deleted file mode 100644
index 69accc42e2..0000000000
--- a/openwrt/target/linux/aruba-2.6/config-ramdisk
+++ /dev/null
@@ -1,1520 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Mon Mar 20 14:06:58 2006
-#
-CONFIG_MIPS=y
-
-#
-# Machine selection
-#
-# CONFIG_MIPS_MTX1 is not set
-# CONFIG_MIPS_BOSPORUS is not set
-# CONFIG_MIPS_PB1000 is not set
-# CONFIG_MIPS_PB1100 is not set
-# CONFIG_MIPS_PB1500 is not set
-# CONFIG_MIPS_PB1550 is not set
-# CONFIG_MIPS_PB1200 is not set
-# CONFIG_MIPS_DB1000 is not set
-# CONFIG_MIPS_DB1100 is not set
-# CONFIG_MIPS_DB1500 is not set
-# CONFIG_MIPS_DB1550 is not set
-# CONFIG_MIPS_DB1200 is not set
-# CONFIG_MIPS_MIRAGE is not set
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MIPS_EV64120 is not set
-# CONFIG_MIPS_EV96100 is not set
-# CONFIG_MIPS_IVR is not set
-# CONFIG_MIPS_ITE8172 is not set
-CONFIG_MACH_ARUBA=y
-# CONFIG_MACH_JAZZ is not set
-# CONFIG_LASAT is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_MALTA is not set
-# CONFIG_MIPS_SEAD is not set
-# CONFIG_MIPS_SIM is not set
-# CONFIG_MOMENCO_JAGUAR_ATX is not set
-# CONFIG_MOMENCO_OCELOT is not set
-# CONFIG_MOMENCO_OCELOT_3 is not set
-# CONFIG_MOMENCO_OCELOT_C is not set
-# CONFIG_MOMENCO_OCELOT_G is not set
-# CONFIG_MIPS_XXS1500 is not set
-# CONFIG_PNX8550_V2PCI is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_DDB5074 is not set
-# CONFIG_DDB5476 is not set
-# CONFIG_DDB5477 is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_QEMU is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SIBYTE_SWARM is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_PTSWARM is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SNI_RM200_PCI is not set
-# CONFIG_TOSHIBA_JMR3927 is not set
-# CONFIG_TOSHIBA_RBTX4927 is not set
-# CONFIG_TOSHIBA_RBTX4938 is not set
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_DMA_NEED_PCI_MAP_STATE=y
-CONFIG_CPU_BIG_ENDIAN=y
-# CONFIG_CPU_LITTLE_ENDIAN is not set
-CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
-CONFIG_SWAP_IO_SPACE=y
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-
-#
-# CPU selection
-#
-CONFIG_CPU_MIPS32_R1=y
-# CONFIG_CPU_MIPS32_R2 is not set
-# CONFIG_CPU_MIPS64_R1 is not set
-# CONFIG_CPU_MIPS64_R2 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_VR41XX is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_CPU_MIPS32=y
-CONFIG_CPU_MIPSR1=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-
-#
-# Kernel type
-#
-CONFIG_32BIT=y
-# CONFIG_64BIT is not set
-CONFIG_PAGE_SIZE_4KB=y
-# CONFIG_PAGE_SIZE_8KB is not set
-# CONFIG_PAGE_SIZE_16KB is not set
-# CONFIG_PAGE_SIZE_64KB is not set
-CONFIG_CPU_HAS_PREFETCH=y
-# CONFIG_MIPS_MT is not set
-# CONFIG_64BIT_PHYS_ADDR is not set
-CONFIG_CPU_ADVANCED=y
-CONFIG_CPU_HAS_LLSC=y
-# CONFIG_CPU_HAS_WB is not set
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_ARCH_FLATMEM_ENABLE=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_SPLIT_PTLOCK_CPUS=4
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-
-#
-# 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_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_INITRAMFS_SOURCE="../root"
-CONFIG_INITRAMFS_ROOT_UID=0
-CONFIG_INITRAMFS_ROOT_GID=0
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-# CONFIG_KALLSYMS 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=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-# CONFIG_SLAB is not set
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_SLOB=y
-CONFIG_OBSOLETE_INTERMODULE=y
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
-
-#
-# Block layer
-#
-# CONFIG_LBD 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"
-
-#
-# Bus options (PCI, PCMCIA, EISA, ISA, TC)
-#
-CONFIG_HW_HAS_PCI=y
-CONFIG_PCI=y
-# CONFIG_PCI_LEGACY_PROC is not set
-CONFIG_MMU=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# PCI Hotplug Support
-#
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_TRAD_SIGNALS=y
-
-#
-# 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 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_IPSEC_NAT_TRAVERSAL is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-# CONFIG_INET_DIAG is not set
-# 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_INET6_AH is not set
-# CONFIG_INET6_ESP is not set
-# CONFIG_INET6_IPCOMP is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_IPV6_TUNNEL is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-# CONFIG_BRIDGE_NETFILTER is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-CONFIG_NETFILTER_XTABLES=y
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-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_PKTTYPE 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_STRING is not set
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=y
-CONFIG_IP_NF_CT_ACCT=y
-# 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=y
-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=m
-CONFIG_IP_NF_SIP=m
-CONFIG_IP_NF_QUEUE=y
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_LAYER7=m
-# CONFIG_IP_NF_MATCH_LAYER7_DEBUG is not set
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_IPP2P=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_TIME=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-# 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_IMQ=m
-# CONFIG_IP_NF_TARGET_LOG is not set
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=y
-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_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=y
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_NAT_PPTP=m
-CONFIG_IP_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=y
-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 is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-CONFIG_IP_NF_SET=m
-CONFIG_IP_NF_SET_MAX=256
-CONFIG_IP_NF_SET_HASHSIZE=1024
-CONFIG_IP_NF_SET_IPMAP=m
-CONFIG_IP_NF_SET_MACIPMAP=m
-CONFIG_IP_NF_SET_PORTMAP=m
-CONFIG_IP_NF_SET_IPHASH=m
-CONFIG_IP_NF_SET_NETHASH=m
-CONFIG_IP_NF_SET_IPTREE=m
-CONFIG_IP_NF_MATCH_SET=m
-CONFIG_IP_NF_TARGET_SET=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES 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=y
-CONFIG_VLAN_8021Q=y
-# 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=y
-CONFIG_NET_SCH_CLK_JIFFIES=y
-# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
-# 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_ESFQ=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 is not set
-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_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 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
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER 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=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 is not set
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_AMDSTD_RETRY=0
-# 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=y
-CONFIG_MTD_PHYSMAP_START=0x1fc00000
-CONFIG_MTD_PHYSMAP_LEN=0x400000
-CONFIG_MTD_PHYSMAP_BANKWIDTH=1
-# 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_BLKMTD 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=m
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-# 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=m
-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
-
-#
-# SCSI Transport Attributes
-#
-# 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
-
-#
-# SCSI low-level drivers
-#
-# 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_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 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_FC 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 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_IFB is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_IMQ=m
-# CONFIG_IMQ_BEHAVIOR_AA is not set
-# CONFIG_IMQ_BEHAVIOR_AB is not set
-CONFIG_IMQ_BEHAVIOR_BA=y
-# CONFIG_IMQ_BEHAVIOR_BB is not set
-CONFIG_IMQ_NUM_DEVS=2
-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_AR2313=y
-CONFIG_IDT_RC32434_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_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=y
-# 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_LAN_SAA9730 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 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
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# 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_HOSTAP 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 is not set
-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 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=m
-
-#
-# 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 is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-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
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG 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
-
-#
-# 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 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
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_DPC is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-# 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_MIXER_OSS is not set
-# CONFIG_SND_PCM_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-# CONFIG_SND_SUPPORT_OLD_API 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
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 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_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_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 MIPS 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=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-CONFIG_USB_DYNAMIC_MINORS=y
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=m
-# CONFIG_USB_EHCI_SPLIT_ISO is not set
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
-CONFIG_USB_UHCI_HCD=m
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-CONFIG_OBSOLETE_OSS_USB_DRIVER=y
-CONFIG_USB_AUDIO=m
-# CONFIG_USB_MIDI is not set
-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_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_MTOUCH is not set
-# CONFIG_USB_ITMTOUCH is not set
-# CONFIG_USB_EGALAX 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 Multimedia devices
-#
-# CONFIG_USB_DABUSB is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC 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_PWC=m
-
-#
-# 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_USB_ZD1201 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_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_CYTHERM is not set
-# CONFIG_USB_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_SISUSBVGA is not set
-# 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
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
-#
-
-#
-# 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_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_REISERFS_FS_XATTR is not set
-CONFIG_JFS_FS=m
-# CONFIG_JFS_POSIX_ACL is not set
-# CONFIG_JFS_SECURITY is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS 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 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 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 is not set
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS 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_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_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 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=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=y
-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=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_PRINTK_TIME is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_CROSSCOMPILE=y
-CONFIG_CMDLINE=""
-
-#
-# 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 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_DES=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_TEST 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_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
diff --git a/openwrt/target/linux/aruba-2.6/patches/000-aruba.patch b/openwrt/target/linux/aruba-2.6/patches/000-aruba.patch
deleted file mode 100644
index 7bb8a26d7f..0000000000
--- a/openwrt/target/linux/aruba-2.6/patches/000-aruba.patch
+++ /dev/null
@@ -1,10517 +0,0 @@
-diff -Nur linux-2.6.16/arch/mips/aruba/Makefile linux-2.6.16-owrt/arch/mips/aruba/Makefile
---- linux-2.6.16/arch/mips/aruba/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/aruba/Makefile 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,49 @@
-+###############################################################################
-+#
-+# BRIEF MODULE DESCRIPTION
-+# Makefile for IDT EB434 BSP
-+#
-+# Copyright 2004 IDT Inc. (rischelp@idt.com)
-+#
-+# This program is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU General Public License as published by the
-+# Free Software Foundation; either version 2 of the License, or (at your
-+# option) any later version.
-+#
-+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+# NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+#
-+# You should have received a copy of the GNU General Public License along
-+# with this program; if not, write to the Free Software Foundation, Inc.,
-+# 675 Mass Ave, Cambridge, MA 02139, USA.
-+#
-+#
-+###############################################################################
-+# May 2004 rkt, neb
-+#
-+# Initial Release
-+#
-+#
-+#
-+###############################################################################
-+
-+
-+# .S.s:
-+# $(CPP) $(CFLAGS) $< -o $*.s
-+# .S.o:
-+# $(CC) $(CFLAGS) -c $< -o $*.o
-+
-+obj-y := prom.o setup.o idtIRQ.o irq.o time.o flash_lock.o
-+obj-$(CONFIG_SERIAL_8250) += serial.o
-+
-+subdir-y += nvram
-+obj-y += nvram/built-in.o
-+
-diff -Nur linux-2.6.16/arch/mips/aruba/nvram/Makefile linux-2.6.16-owrt/arch/mips/aruba/nvram/Makefile
---- linux-2.6.16/arch/mips/aruba/nvram/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/aruba/nvram/Makefile 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,46 @@
-+###############################################################################
-+#
-+# BRIEF MODULE DESCRIPTION
-+# Makefile for IDT EB434 nvram access routines
-+#
-+# Copyright 2004 IDT Inc. (rischelp@idt.com)
-+#
-+# This program is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU General Public License as published by the
-+# Free Software Foundation; either version 2 of the License, or (at your
-+# option) any later version.
-+#
-+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+# NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+#
-+# You should have received a copy of the GNU General Public License along
-+# with this program; if not, write to the Free Software Foundation, Inc.,
-+# 675 Mass Ave, Cambridge, MA 02139, USA.
-+#
-+#
-+###############################################################################
-+# May 2004 rkt, neb
-+#
-+# Initial Release
-+#
-+#
-+#
-+###############################################################################
-+
-+obj-y := nvram434.o
-+obj-m := $(O_TARGET)
-+
-+
-+
-+
-+
-+
-+
-diff -Nur linux-2.6.16/arch/mips/aruba/nvram/nvram434.c linux-2.6.16-owrt/arch/mips/aruba/nvram/nvram434.c
---- linux-2.6.16/arch/mips/aruba/nvram/nvram434.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/aruba/nvram/nvram434.c 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,392 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * nvram interface routines.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/ctype.h>
-+#include <linux/string.h>
-+
-+//#include <asm/ds1553rtc.h>
-+#include "nvram434.h"
-+#define NVRAM_BASE 0xbfff8000
-+
-+extern void setenv (char *e, char *v, int rewrite);
-+extern void unsetenv (char *e);
-+extern void mapenv (int (*func)(char *, char *));
-+extern char *getenv (char *s);
-+extern void purgeenv(void);
-+
-+static void nvram_initenv(void);
-+
-+static unsigned char
-+nvram_getbyte(int offs)
-+{
-+ return(*((unsigned char*)(NVRAM_BASE + offs)));
-+}
-+
-+static void
-+nvram_setbyte(int offs, unsigned char val)
-+{
-+ unsigned char* nvramDataPointer = (unsigned char*)(NVRAM_BASE + offs);
-+
-+ *nvramDataPointer = val;
-+}
-+
-+/*
-+ * BigEndian!
-+ */
-+static unsigned short
-+nvram_getshort(int offs)
-+{
-+ return((nvram_getbyte(offs) << 8) | nvram_getbyte(offs + 1));
-+}
-+
-+static void
-+nvram_setshort(int offs, unsigned short val)
-+{
-+ nvram_setbyte(offs, (unsigned char)((val >> 8) & 0xff));
-+ nvram_setbyte(offs + 1, (unsigned char)(val & 0xff));
-+}
-+#if 0
-+static unsigned int
-+nvram_getint(int offs)
-+{
-+ unsigned int val;
-+ val = nvram_getbyte(offs) << 24;
-+ val |= nvram_getbyte(offs + 1) << 16;
-+ val |= nvram_getbyte(offs + 2) << 8;
-+ val |= nvram_getbyte(offs + 3);
-+ return(val);
-+}
-+
-+static void
-+nvram_setint(int offs, unsigned int val)
-+{
-+ nvram_setbyte(offs, val >> 24);
-+ nvram_setbyte(offs + 1, val >> 16);
-+ nvram_setbyte(offs + 2, val >> 8);
-+ nvram_setbyte(offs + 3, val);
-+}
-+#endif
-+/*
-+ * calculate NVRAM checksum
-+ */
-+static unsigned short
-+nvram_calcsum(void)
-+{
-+ unsigned short sum = NV_MAGIC;
-+ int i;
-+
-+ for (i = ENV_BASE; i < ENV_TOP; i += 2)
-+ sum += nvram_getshort(i);
-+ return(sum);
-+}
-+
-+/*
-+ * update the nvram checksum
-+ */
-+static void
-+nvram_updatesum (void)
-+{
-+ nvram_setshort(NVOFF_CSUM, nvram_calcsum());
-+}
-+
-+/*
-+ * test validity of nvram by checksumming it
-+ */
-+static int
-+nvram_isvalid(void)
-+{
-+ static int is_valid;
-+
-+ if (is_valid)
-+ return(1);
-+
-+ if (nvram_getshort(NVOFF_MAGIC) != NV_MAGIC) {
-+ printk("nvram_isvalid FAILED\n");
-+ //nvram_initenv();
-+ }
-+ is_valid = 1;
-+ return(1);
-+}
-+
-+/* return nvram address of environment string */
-+static int
-+nvram_matchenv(char *s)
-+{
-+ int envsize, envp, n, i, varsize;
-+ char *var;
-+
-+ envsize = nvram_getshort(NVOFF_ENVSIZE);
-+
-+ if (envsize > ENV_AVAIL)
-+ return(0); /* sanity */
-+
-+ envp = ENV_BASE;
-+
-+ if ((n = strlen (s)) > 255)
-+ return(0);
-+
-+ while (envsize > 0) {
-+ varsize = nvram_getbyte(envp);
-+ if (varsize == 0 || (envp + varsize) > ENV_TOP)
-+ return(0); /* sanity */
-+ for (i = envp + 1, var = s; i <= envp + n; i++, var++) {
-+ char c1 = nvram_getbyte(i);
-+ char c2 = *var;
-+ if (islower(c1))
-+ c1 = toupper(c1);
-+ if (islower(c2))
-+ c2 = toupper(c2);
-+ if (c1 != c2)
-+ break;
-+ }
-+ if (i > envp + n) { /* match so far */
-+ if (n == varsize - 1) /* match on boolean */
-+ return(envp);
-+ if (nvram_getbyte(i) == '=') /* exact match on variable */
-+ return(envp);
-+ }
-+ envsize -= varsize;
-+ envp += varsize;
-+ }
-+ return(0);
-+}
-+
-+static void nvram_initenv(void)
-+{
-+ nvram_setshort(NVOFF_MAGIC, NV_MAGIC);
-+ nvram_setshort(NVOFF_ENVSIZE, 0);
-+
-+ nvram_updatesum();
-+}
-+
-+static void
-+nvram_delenv(char *s)
-+{
-+ int nenvp, envp, envsize, nbytes;
-+
-+ envp = nvram_matchenv(s);
-+ if (envp == 0)
-+ return;
-+
-+ nenvp = envp + nvram_getbyte(envp);
-+ envsize = nvram_getshort(NVOFF_ENVSIZE);
-+ nbytes = envsize - (nenvp - ENV_BASE);
-+ nvram_setshort(NVOFF_ENVSIZE, envsize - (nenvp - envp));
-+ while (nbytes--) {
-+ nvram_setbyte(envp, nvram_getbyte(nenvp));
-+ envp++;
-+ nenvp++;
-+ }
-+ nvram_updatesum();
-+}
-+
-+static int
-+nvram_setenv(char *s, char *v)
-+{
-+ int ns, nv, total;
-+ int envp;
-+
-+ if (!nvram_isvalid())
-+ return(-1);
-+
-+ nvram_delenv(s);
-+ ns = strlen(s);
-+ if (ns == 0)
-+ return (-1);
-+ if (v && *v) {
-+ nv = strlen(v);
-+ total = ns + nv + 2;
-+ }
-+ else {
-+ nv = 0;
-+ total = ns + 1;
-+ }
-+ if (total > 255 || total > ENV_AVAIL - nvram_getshort(NVOFF_ENVSIZE))
-+ return(-1);
-+
-+ envp = ENV_BASE + nvram_getshort(NVOFF_ENVSIZE);
-+
-+ nvram_setbyte(envp, (unsigned char) total);
-+ envp++;
-+
-+ while (ns--) {
-+ nvram_setbyte(envp, *s);
-+ envp++;
-+ s++;
-+ }
-+
-+ if (nv) {
-+ nvram_setbyte(envp, '=');
-+ envp++;
-+ while (nv--) {
-+ nvram_setbyte(envp, *v);
-+ envp++;
-+ v++;
-+ }
-+ }
-+ nvram_setshort(NVOFF_ENVSIZE, envp-ENV_BASE);
-+ nvram_updatesum();
-+ return 0;
-+}
-+
-+static char *
-+nvram_getenv(char *s)
-+{
-+ static char buf[256]; /* FIXME: this cannot be static */
-+ int envp, ns, nbytes, i;
-+
-+ if (!nvram_isvalid())
-+ return "INVALID NVRAM"; //((char *)0);
-+
-+ envp = nvram_matchenv(s);
-+ if (envp == 0)
-+ return "NOT FOUND"; //((char *)0);
-+ ns = strlen(s);
-+ if (nvram_getbyte(envp) == ns + 1) /* boolean */
-+ buf[0] = '\0';
-+ else {
-+ nbytes = nvram_getbyte(envp) - (ns + 2);
-+ envp += ns + 2;
-+ for (i = 0; i < nbytes; i++)
-+ buf[i] = nvram_getbyte(envp++);
-+ buf[i] = '\0';
-+ }
-+ return(buf);
-+}
-+
-+static void
-+nvram_unsetenv(char *s)
-+{
-+ if (!nvram_isvalid())
-+ return;
-+
-+ nvram_delenv(s);
-+}
-+
-+/*
-+ * apply func to each string in environment
-+ */
-+static void
-+nvram_mapenv(int (*func)(char *, char *))
-+{
-+ int envsize, envp, n, i, seeneql;
-+ char name[256], value[256];
-+ char c, *s;
-+
-+ if (!nvram_isvalid())
-+ return;
-+
-+ envsize = nvram_getshort(NVOFF_ENVSIZE);
-+ envp = ENV_BASE;
-+
-+ while (envsize > 0) {
-+ value[0] = '\0';
-+ seeneql = 0;
-+ s = name;
-+ n = nvram_getbyte(envp);
-+ for (i = envp + 1; i < envp + n; i++) {
-+ c = nvram_getbyte(i);
-+ if ((c == '=') && !seeneql) {
-+ *s = '\0';
-+ s = value;
-+ seeneql = 1;
-+ continue;
-+ }
-+ *s++ = c;
-+ }
-+ *s = '\0';
-+ (*func)(name, value);
-+ envsize -= n;
-+ envp += n;
-+ }
-+}
-+#if 0
-+static unsigned int
-+digit(char c)
-+{
-+ if ('0' <= c && c <= '9')
-+ return (c - '0');
-+ if ('A' <= c && c <= 'Z')
-+ return (10 + c - 'A');
-+ if ('a' <= c && c <= 'z')
-+ return (10 + c - 'a');
-+ return (~0);
-+}
-+#endif
-+/*
-+ * Wrappers to allow 'special' environment variables to get processed
-+ */
-+void
-+setenv(char *e, char *v, int rewrite)
-+{
-+ if (nvram_getenv(e) && !rewrite)
-+ return;
-+
-+ nvram_setenv(e, v);
-+}
-+
-+char *
-+getenv(char *e)
-+{
-+ return(nvram_getenv(e));
-+}
-+
-+void
-+unsetenv(char *e)
-+{
-+ nvram_unsetenv(e);
-+}
-+
-+void
-+purgeenv()
-+{
-+ int i;
-+ unsigned char* nvramDataPointer = (unsigned char*)(NVRAM_BASE);
-+
-+ for (i = ENV_BASE; i < ENV_TOP; i++)
-+ *nvramDataPointer++ = 0;
-+ nvram_setshort(NVOFF_MAGIC, NV_MAGIC);
-+ nvram_setshort(NVOFF_ENVSIZE, 0);
-+ nvram_setshort(NVOFF_CSUM, NV_MAGIC);
-+}
-+
-+void
-+mapenv(int (*func)(char *, char *))
-+{
-+ nvram_mapenv(func);
-+}
-diff -Nur linux-2.6.16/arch/mips/aruba/nvram/nvram434.h linux-2.6.16-owrt/arch/mips/aruba/nvram/nvram434.h
---- linux-2.6.16/arch/mips/aruba/nvram/nvram434.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/aruba/nvram/nvram434.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,66 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * nvram definitions.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+
-+#ifndef _NVRAM_
-+#define _NVRAM_
-+#define NVOFFSET 0 /* use all of NVRAM */
-+
-+/* Offsets to reserved locations */
-+ /* size description */
-+#define NVOFF_MAGIC (NVOFFSET + 0) /* 2 magic value */
-+#define NVOFF_CSUM (NVOFFSET + 2) /* 2 NVRAM environment checksum */
-+#define NVOFF_ENVSIZE (NVOFFSET + 4) /* 2 size of 'environment' */
-+#define NVOFF_TEST (NVOFFSET + 5) /* 1 cold start test byte */
-+#define NVOFF_ETHADDR (NVOFFSET + 6) /* 6 decoded ethernet address */
-+#define NVOFF_UNUSED (NVOFFSET + 12) /* 0 current end of table */
-+
-+#define NV_MAGIC 0xdeaf /* nvram magic number */
-+#define NV_RESERVED 6 /* number of reserved bytes */
-+
-+#undef NVOFF_ETHADDR
-+#define NVOFF_ETHADDR (NVOFFSET + NV_RESERVED - 6)
-+
-+/* number of bytes available for environment */
-+#define ENV_BASE (NVOFFSET + NV_RESERVED)
-+#define ENV_TOP 0x2000
-+#define ENV_AVAIL (ENV_TOP - ENV_BASE)
-+
-+#endif /* _NVRAM_ */
-+
-+
-diff -Nur linux-2.6.16/arch/mips/aruba/prom.c linux-2.6.16-owrt/arch/mips/aruba/prom.c
---- linux-2.6.16/arch/mips/aruba/prom.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/aruba/prom.c 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,111 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * prom interface routines
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/mm.h>
-+#include <linux/module.h>
-+#include <linux/string.h>
-+#include <linux/console.h>
-+#include <asm/bootinfo.h>
-+#include <linux/bootmem.h>
-+#include <linux/ioport.h>
-+#include <linux/serial.h>
-+#include <linux/serialP.h>
-+#include <asm/serial.h>
-+#include <linux/ioport.h>
-+
-+unsigned int idt_cpu_freq;
-+EXPORT_SYMBOL(idt_cpu_freq);
-+
-+unsigned int arch_has_pci=0;
-+
-+/* Kernel Boot parameters */
-+static unsigned char bootparm[] = "console=ttyS0,9600 root=/dev/mtdblock1 rootfstype=jffs2";
-+
-+extern unsigned long mips_machgroup;
-+extern unsigned long mips_machtype;
-+
-+extern void setup_serial_port(void);
-+extern char * getenv(char *e);
-+
-+/* IDT 79EB434 memory map -- we really should be auto sizing it */
-+#define RAM_SIZE 32*1024*1024
-+
-+char *__init prom_getcmdline(void)
-+{
-+ return &(arcs_cmdline[0]);
-+}
-+
-+void __init prom_init(void)
-+{
-+ char *boardname;
-+ sprintf(arcs_cmdline, "%s", bootparm);
-+
-+ /* set our arch type */
-+ mips_machgroup = MACH_GROUP_ARUBA;
-+ mips_machtype = MACH_ARUBA_UNKNOWN;
-+
-+ boardname=getenv("boardname");
-+
-+ if (!strcmp(boardname,"Muscat")) {
-+ mips_machtype = MACH_ARUBA_AP70;
-+ idt_cpu_freq = 133000000;
-+ arch_has_pci=1;
-+ } else if (!strcmp(boardname,"Mataro")) {
-+ mips_machtype = MACH_ARUBA_AP65;
-+ idt_cpu_freq = 110000000;
-+ } else if (!strcmp(boardname,"Merlot")) {
-+ mips_machtype = MACH_ARUBA_AP60;
-+ idt_cpu_freq = 90000000;
-+ }
-+
-+ /* turn on the console */
-+ setup_serial_port();
-+
-+ /*
-+ * give all RAM to boot allocator,
-+ * except where the kernel was loaded
-+ */
-+ add_memory_region(0,RAM_SIZE,BOOT_MEM_RAM);
-+}
-+
-+void prom_free_prom_memory(void)
-+{
-+ printk("stubbed prom_free_prom_memory()\n");
-+}
-diff -Nur linux-2.6.16/arch/mips/aruba/serial.c linux-2.6.16-owrt/arch/mips/aruba/serial.c
---- linux-2.6.16/arch/mips/aruba/serial.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/aruba/serial.c 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,94 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Serial port initialisation.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/pci.h>
-+#include <linux/interrupt.h>
-+#include <linux/tty.h>
-+#include <linux/serial.h>
-+#include <linux/serial_core.h>
-+
-+#include <asm/time.h>
-+#include <asm/cpu.h>
-+#include <asm/bootinfo.h>
-+#include <asm/irq.h>
-+#include <asm/serial.h>
-+
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+
-+extern int __init early_serial_setup(struct uart_port *port);
-+
-+#define BASE_BAUD (1843200 / 16)
-+
-+extern unsigned int idt_cpu_freq;
-+
-+extern int __init setup_serial_port(void)
-+{
-+ static struct uart_port serial_req[2];
-+
-+ memset(serial_req, 0, sizeof(serial_req));
-+ serial_req[0].type = PORT_16550A;
-+ serial_req[0].line = 0;
-+ serial_req[0].flags = STD_COM_FLAGS;
-+ serial_req[0].iotype = SERIAL_IO_MEM;
-+ serial_req[0].regshift = 2;
-+
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP70:
-+ serial_req[0].irq = 104;
-+ serial_req[0].mapbase = KSEG1ADDR(0x18058003);
-+ serial_req[0].membase = (char *) KSEG1ADDR(0x18058003);
-+ serial_req[0].uartclk = idt_cpu_freq;
-+ break;
-+ case MACH_ARUBA_AP65:
-+ case MACH_ARUBA_AP60:
-+ default:
-+ serial_req[0].irq = 12;
-+ serial_req[0].mapbase = KSEG1ADDR(0xbc000003);
-+ serial_req[0].membase = (char *) KSEG1ADDR(0xbc000003);
-+ serial_req[0].uartclk = idt_cpu_freq / 2;
-+ break;
-+ }
-+
-+ early_serial_setup(&serial_req[0]);
-+
-+ return(0);
-+}
-diff -Nur linux-2.6.16/arch/mips/aruba/setup.c linux-2.6.16-owrt/arch/mips/aruba/setup.c
---- linux-2.6.16/arch/mips/aruba/setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/aruba/setup.c 2006-03-20 14:30:00.000000000 +0100
-@@ -0,0 +1,125 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * setup routines for IDT EB434 boards
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/mm.h>
-+#include <linux/sched.h>
-+#include <linux/irq.h>
-+#include <asm/bootinfo.h>
-+#include <asm/io.h>
-+#include <linux/ioport.h>
-+#include <asm/mipsregs.h>
-+#include <asm/pgtable.h>
-+#include <asm/reboot.h>
-+#include <asm/addrspace.h> /* for KSEG1ADDR() */
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+#include <linux/pm.h>
-+
-+extern char *__init prom_getcmdline(void);
-+
-+extern void (*board_time_init) (void);
-+extern void (*board_timer_setup) (struct irqaction * irq);
-+extern void aruba_time_init(void);
-+extern void aruba_timer_setup(struct irqaction *irq);
-+extern void aruba_reset(void);
-+
-+#define epldMask ((volatile unsigned char *)0xB900000d)
-+
-+static void aruba_machine_restart(char *command)
-+{
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP70:
-+ *(volatile u32 *)KSEG1ADDR(0x18008000) = 0x80000001;
-+ break;
-+ case MACH_ARUBA_AP65:
-+ case MACH_ARUBA_AP60:
-+ default:
-+ /* Reset*/
-+ *((volatile u32 *)KSEG1ADDR(0x1c003020)) = 0x00080350; // reset everything in sight
-+ udelay(100);
-+ *((volatile u32 *)KSEG1ADDR(0x1c003020)) = 0; // reset everything in sight
-+ udelay(100);
-+ *((volatile u32 *)KSEG1ADDR(0x1c003020)) = 0x3; // cold reset the cpu & system
-+ break;
-+ }
-+}
-+
-+static void aruba_machine_halt(void)
-+{
-+ for (;;) continue;
-+}
-+
-+extern char * getenv(char *e);
-+extern void unlock_ap60_70_flash(void);
-+
-+void __init plat_setup(void)
-+{
-+ board_time_init = aruba_time_init;
-+
-+ board_timer_setup = aruba_timer_setup;
-+
-+ _machine_restart = aruba_machine_restart;
-+ _machine_halt = aruba_machine_halt;
-+ pm_power_off = aruba_machine_halt;
-+
-+ set_io_port_base(KSEG1);
-+
-+ /* Enable PCI interrupts in EPLD Mask register */
-+ *epldMask = 0x0;
-+ *(epldMask + 1) = 0x0;
-+
-+ write_c0_wired(0);
-+ unlock_ap60_70_flash();
-+
-+ printk("BOARD - %s\n",getenv("boardname"));
-+
-+ return 0;
-+}
-+
-+int page_is_ram(unsigned long pagenr)
-+{
-+ return 1;
-+}
-+
-+const char *get_system_type(void)
-+{
-+ return "MIPS IDT32434 - ARUBA";
-+}
-+
-+EXPORT_SYMBOL(get_system_type);
-diff -Nur linux-2.6.16/arch/mips/aruba/time.c linux-2.6.16-owrt/arch/mips/aruba/time.c
---- linux-2.6.16/arch/mips/aruba/time.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/aruba/time.c 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,108 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * timer routines for IDT EB434 boards
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/kernel_stat.h>
-+#include <linux/sched.h>
-+#include <linux/spinlock.h>
-+#include <linux/mc146818rtc.h>
-+#include <linux/irq.h>
-+#include <linux/timex.h>
-+
-+#include <linux/param.h>
-+#include <asm/mipsregs.h>
-+#include <asm/ptrace.h>
-+#include <asm/time.h>
-+#include <asm/hardirq.h>
-+
-+#include <asm/mipsregs.h>
-+#include <asm/ptrace.h>
-+#include <asm/debug.h>
-+#include <asm/time.h>
-+
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+
-+static unsigned long r4k_offset; /* Amount to incr compare reg each time */
-+static unsigned long r4k_cur; /* What counter should be at next timer irq */
-+
-+extern unsigned int idt_cpu_freq;
-+
-+static unsigned long __init cal_r4koff(void)
-+{
-+ mips_hpt_frequency = idt_cpu_freq * IDT_CLOCK_MULT / 2;
-+ return (mips_hpt_frequency / HZ);
-+}
-+
-+void __init aruba_time_init(void)
-+{
-+ unsigned int est_freq, flags;
-+ local_irq_save(flags);
-+
-+ printk("calculating r4koff... ");
-+ r4k_offset = cal_r4koff();
-+ printk("%08lx(%d)\n", r4k_offset, (int)r4k_offset);
-+
-+ est_freq = 2 * r4k_offset * HZ;
-+ est_freq += 5000; /* round */
-+ est_freq -= est_freq % 10000;
-+ printk("CPU frequency %d.%02d MHz\n", est_freq / 1000000,
-+ (est_freq % 1000000) * 100 / 1000000);
-+ local_irq_restore(flags);
-+
-+}
-+
-+void __init aruba_timer_setup(struct irqaction *irq)
-+{
-+ /* we are using the cpu counter for timer interrupts */
-+ setup_irq(MIPS_CPU_TIMER_IRQ, irq);
-+
-+ /* to generate the first timer interrupt */
-+ r4k_cur = (read_c0_count() + r4k_offset);
-+ write_c0_compare(r4k_cur);
-+
-+}
-+
-+asmlinkage void aruba_timer_interrupt(int irq, struct pt_regs *regs)
-+{
-+ irq_enter();
-+ kstat_this_cpu.irqs[irq]++;
-+
-+ timer_interrupt(irq, NULL, regs);
-+ irq_exit();
-+}
-diff -Nur linux-2.6.16/arch/mips/Kconfig linux-2.6.16-owrt/arch/mips/Kconfig
---- linux-2.6.16/arch/mips/Kconfig 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/Kconfig 2006-03-20 14:25:10.000000000 +0100
-@@ -227,6 +227,17 @@
- either a NEC Vr5432 or QED RM5231. Say Y here if you wish to build
- a kernel for this platform.
-
-+config MACH_ARUBA
-+ bool "Support for the ARUBA product line"
-+ select DMA_NONCOHERENT
-+ select CPU_HAS_PREFETCH
-+ select HW_HAS_PCI
-+ select SWAP_IO_SPACE
-+ select SYS_SUPPORTS_32BIT_KERNEL
-+ select SYS_HAS_CPU_MIPS32_R1
-+ select SYS_SUPPORTS_BIG_ENDIAN
-+
-+
- config MACH_JAZZ
- bool "Support for the Jazz family of machines"
- select ARC
-diff -Nur linux-2.6.16/arch/mips/Makefile linux-2.6.16-owrt/arch/mips/Makefile
---- linux-2.6.16/arch/mips/Makefile 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/Makefile 2006-03-20 14:25:10.000000000 +0100
-@@ -279,6 +279,14 @@
- #
-
- #
-+# Aruba
-+#
-+
-+core-$(CONFIG_MACH_ARUBA) += arch/mips/aruba/
-+cflags-$(CONFIG_MACH_ARUBA) += -Iinclude/asm-mips/aruba
-+load-$(CONFIG_MACH_ARUBA) += 0x80100000
-+
-+#
- # Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
- #
- core-$(CONFIG_MACH_JAZZ) += arch/mips/jazz/
-diff -Nur linux-2.6.16/arch/mips/mm/tlbex.c linux-2.6.16-owrt/arch/mips/mm/tlbex.c
---- linux-2.6.16/arch/mips/mm/tlbex.c 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/mm/tlbex.c 2006-03-20 14:25:10.000000000 +0100
-@@ -852,7 +852,6 @@
-
- case CPU_R10000:
- case CPU_R12000:
-- case CPU_4KC:
- case CPU_SB1:
- case CPU_SB1A:
- case CPU_4KSC:
-@@ -880,6 +879,7 @@
- tlbw(p);
- break;
-
-+ case CPU_4KC:
- case CPU_4KEC:
- case CPU_24K:
- case CPU_34K:
-diff -Nur linux-2.6.16/drivers/net/Kconfig linux-2.6.16-owrt/drivers/net/Kconfig
---- linux-2.6.16/drivers/net/Kconfig 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/drivers/net/Kconfig 2006-03-20 14:25:10.000000000 +0100
-@@ -187,6 +187,13 @@
-
- source "drivers/net/arm/Kconfig"
-
-+config IDT_RC32434_ETH
-+ tristate "IDT RC32434 Local Ethernet support"
-+ depends on NET_ETHERNET
-+ help
-+ IDT RC32434 has one local ethernet port. Say Y here to enable it.
-+ To compile this driver as a module, choose M here.
-+
- config MACE
- tristate "MACE (Power Mac ethernet) support"
- depends on NET_ETHERNET && PPC_PMAC && PPC32
-diff -Nur linux-2.6.16/drivers/net/Makefile linux-2.6.16-owrt/drivers/net/Makefile
---- linux-2.6.16/drivers/net/Makefile 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/drivers/net/Makefile 2006-03-20 14:25:10.000000000 +0100
-@@ -38,6 +38,7 @@
-
- obj-$(CONFIG_OAKNET) += oaknet.o 8390.o
-
-+obj-$(CONFIG_IDT_RC32434_ETH) += rc32434_eth.o
- obj-$(CONFIG_DGRS) += dgrs.o
- obj-$(CONFIG_VORTEX) += 3c59x.o
- obj-$(CONFIG_TYPHOON) += typhoon.o
-diff -Nur linux-2.6.16/drivers/net/natsemi.c linux-2.6.16-owrt/drivers/net/natsemi.c
---- linux-2.6.16/drivers/net/natsemi.c 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/drivers/net/natsemi.c 2006-03-20 14:25:10.000000000 +0100
-@@ -771,6 +771,49 @@
- static int netdev_get_eeprom(struct net_device *dev, u8 *buf);
- static struct ethtool_ops ethtool_ops;
-
-+#ifdef CONFIG_MACH_ARUBA
-+
-+#include <linux/ctype.h>
-+
-+#ifndef ERR
-+#define ERR(fmt, args...) printk("%s: " fmt, __func__, ##args)
-+#endif
-+
-+static int parse_mac_addr(struct net_device *dev, char* macstr)
-+{
-+ int i, j;
-+ unsigned char result, value;
-+
-+ for (i=0; i<6; i++) {
-+ result = 0;
-+ if (i != 5 && *(macstr+2) != ':') {
-+ ERR("invalid mac address format: %d %c\n",
-+ i, *(macstr+2));
-+ return -EINVAL;
-+ }
-+ for (j=0; j<2; j++) {
-+ if (isxdigit(*macstr) && (value = isdigit(*macstr) ? *macstr-'0' :
-+ toupper(*macstr)-'A'+10) < 16) {
-+ result = result*16 + value;
-+ macstr++;
-+ }
-+ else {
-+ ERR("invalid mac address "
-+ "character: %c\n", *macstr);
-+ return -EINVAL;
-+ }
-+ }
-+
-+ macstr++;
-+ dev->dev_addr[i] = result;
-+ }
-+
-+ dev->dev_addr[5]++;
-+ return 0;
-+}
-+
-+#endif
-+
- static inline void __iomem *ns_ioaddr(struct net_device *dev)
- {
- return (void __iomem *) dev->base_addr;
-@@ -859,6 +902,7 @@
- goto err_ioremap;
- }
-
-+#ifndef CONFIG_MACH_ARUBA
- /* Work around the dropped serial bit. */
- prev_eedata = eeprom_read(ioaddr, 6);
- for (i = 0; i < 3; i++) {
-@@ -867,6 +911,19 @@
- dev->dev_addr[i*2+1] = eedata >> 7;
- prev_eedata = eedata;
- }
-+#else
-+ {
-+ char mac[32];
-+ unsigned char def_mac[6] = {00, 0x0b, 0x86, 0xba, 0xdb, 0xad};
-+ extern char *getenv(char *e);
-+ memset(mac, 0, 32);
-+ memcpy(mac, getenv("ethaddr"), 17);
-+ if (parse_mac_addr(dev, mac)){
-+ printk("%s: MAC address not found\n", __func__);
-+ memcpy(dev->dev_addr, def_mac, 6);
-+ }
-+ }
-+#endif
-
- dev->base_addr = (unsigned long __force) ioaddr;
- dev->irq = irq;
-diff -Nur linux-2.6.16/drivers/net/rc32434_eth.c linux-2.6.16-owrt/drivers/net/rc32434_eth.c
---- linux-2.6.16/drivers/net/rc32434_eth.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/drivers/net/rc32434_eth.c 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,1268 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Driver for the IDT RC32434 on-chip ethernet controller.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Based on the driver developed by B. Maruthanayakam, H. Kou and others.
-+ *
-+ * Aug 2004 Sadik
-+ *
-+ * Added NAPI
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/moduleparam.h>
-+#include <linux/sched.h>
-+#include <linux/ctype.h>
-+#include <linux/types.h>
-+#include <linux/fcntl.h>
-+#include <linux/interrupt.h>
-+#include <linux/ptrace.h>
-+#include <linux/init.h>
-+#include <linux/ioport.h>
-+#include <linux/proc_fs.h>
-+#include <linux/in.h>
-+#include <linux/slab.h>
-+#include <linux/string.h>
-+#include <linux/delay.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/skbuff.h>
-+#include <linux/errno.h>
-+#include <asm/bootinfo.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+#include <asm/pgtable.h>
-+#include <asm/segment.h>
-+#include <asm/io.h>
-+#include <asm/dma.h>
-+
-+#include "rc32434_eth.h"
-+
-+#define DRIVER_VERSION "(mar2904)"
-+
-+#define DRIVER_NAME "rc32434 Ethernet driver. " DRIVER_VERSION
-+
-+
-+#define STATION_ADDRESS_HIGH(dev) (((dev)->dev_addr[0] << 8) | \
-+ ((dev)->dev_addr[1]))
-+#define STATION_ADDRESS_LOW(dev) (((dev)->dev_addr[2] << 24) | \
-+ ((dev)->dev_addr[3] << 16) | \
-+ ((dev)->dev_addr[4] << 8) | \
-+ ((dev)->dev_addr[5]))
-+
-+#define MII_CLOCK 1250000 /* no more than 2.5MHz */
-+static char mac0[18] = "08:00:06:05:40:01";
-+
-+MODULE_PARM(mac0, "c18");
-+MODULE_PARM_DESC(mac0, "MAC address for RC32434 ethernet0");
-+
-+static struct rc32434_if_t {
-+ char *name;
-+ struct net_device *dev;
-+ char* mac_str;
-+ int weight;
-+ u32 iobase;
-+ u32 rxdmabase;
-+ u32 txdmabase;
-+ int rx_dma_irq;
-+ int tx_dma_irq;
-+ int rx_ovr_irq;
-+ int tx_und_irq;
-+} rc32434_iflist[] =
-+{
-+ {
-+ "rc32434_eth0", NULL, mac0,
-+ 64,
-+ ETH0_PhysicalAddress,
-+ ETH0_RX_DMA_ADDR,
-+ ETH0_TX_DMA_ADDR,
-+ ETH0_DMA_RX_IRQ,
-+ ETH0_DMA_TX_IRQ,
-+ ETH0_RX_OVR_IRQ,
-+ ETH0_TX_UND_IRQ
-+ }
-+};
-+
-+
-+static int parse_mac_addr(struct net_device *dev, char* macstr)
-+{
-+ int i, j;
-+ unsigned char result, value;
-+
-+ for (i=0; i<6; i++) {
-+ result = 0;
-+ if (i != 5 && *(macstr+2) != ':') {
-+ ERR("invalid mac address format: %d %c\n",
-+ i, *(macstr+2));
-+ return -EINVAL;
-+ }
-+ for (j=0; j<2; j++) {
-+ if (isxdigit(*macstr) && (value = isdigit(*macstr) ? *macstr-'0' :
-+ toupper(*macstr)-'A'+10) < 16) {
-+ result = result*16 + value;
-+ macstr++;
-+ }
-+ else {
-+ ERR("invalid mac address "
-+ "character: %c\n", *macstr);
-+ return -EINVAL;
-+ }
-+ }
-+
-+ macstr++;
-+ dev->dev_addr[i] = result;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+
-+static inline void rc32434_abort_tx(struct net_device *dev)
-+{
-+ struct rc32434_local *lp = (struct rc32434_local *)dev->priv;
-+ rc32434_abort_dma(dev, lp->tx_dma_regs);
-+
-+}
-+
-+static inline void rc32434_abort_rx(struct net_device *dev)
-+{
-+ struct rc32434_local *lp = (struct rc32434_local *)dev->priv;
-+ rc32434_abort_dma(dev, lp->rx_dma_regs);
-+
-+}
-+
-+static inline void rc32434_start_tx(struct rc32434_local *lp, volatile DMAD_t td)
-+{
-+ rc32434_start_dma(lp->tx_dma_regs, CPHYSADDR(td));
-+}
-+
-+static inline void rc32434_start_rx(struct rc32434_local *lp, volatile DMAD_t rd)
-+{
-+ rc32434_start_dma(lp->rx_dma_regs, CPHYSADDR(rd));
-+}
-+
-+static inline void rc32434_chain_tx(struct rc32434_local *lp, volatile DMAD_t td)
-+{
-+ rc32434_chain_dma(lp->tx_dma_regs, CPHYSADDR(td));
-+}
-+
-+static inline void rc32434_chain_rx(struct rc32434_local *lp, volatile DMAD_t rd)
-+{
-+ rc32434_chain_dma(lp->rx_dma_regs, CPHYSADDR(rd));
-+}
-+
-+#ifdef RC32434_PROC_DEBUG
-+static int rc32434_read_proc(char *buf, char **start, off_t fpos,
-+ int length, int *eof, void *data)
-+{
-+ struct net_device *dev = (struct net_device *)data;
-+ struct rc32434_local *lp = (struct rc32434_local *)dev->priv;
-+ int len = 0;
-+
-+ /* print out header */
-+ len += sprintf(buf + len, "\n\tRC32434 Ethernet Debug\n\n");
-+ len += sprintf (buf + len,
-+ "DMA halt count = %10d, DMA run count = %10d\n",
-+ lp->dma_halt_cnt, lp->dma_run_cnt);
-+
-+ if (fpos >= len) {
-+ *start = buf;
-+ *eof = 1;
-+ return 0;
-+ }
-+ *start = buf + fpos;
-+
-+ if ((len -= fpos) > length)
-+ return length;
-+ *eof = 1;
-+
-+ return len;
-+
-+}
-+#endif
-+
-+
-+/*
-+ * Restart the RC32434 ethernet controller.
-+ */
-+static int rc32434_restart(struct net_device *dev)
-+{
-+ struct rc32434_local *lp = (struct rc32434_local *)dev->priv;
-+
-+ /*
-+ * Disable interrupts
-+ */
-+ disable_irq(lp->rx_irq);
-+ disable_irq(lp->tx_irq);
-+#ifdef RC32434_REVISION
-+ disable_irq(lp->ovr_irq);
-+#endif
-+ disable_irq(lp->und_irq);
-+
-+ /* Mask F E bit in Tx DMA */
-+ rc32434_writel(rc32434_readl(&lp->tx_dma_regs->dmasm) | DMASM_f_m | DMASM_e_m, &lp->tx_dma_regs->dmasm);
-+ /* Mask D H E bit in Rx DMA */
-+ rc32434_writel(rc32434_readl(&lp->rx_dma_regs->dmasm) | DMASM_d_m | DMASM_h_m | DMASM_e_m, &lp->rx_dma_regs->dmasm);
-+
-+ rc32434_init(dev);
-+ rc32434_multicast_list(dev);
-+
-+ enable_irq(lp->und_irq);
-+#ifdef RC32434_REVISION
-+ enable_irq(lp->ovr_irq);
-+#endif
-+ enable_irq(lp->tx_irq);
-+ enable_irq(lp->rx_irq);
-+
-+ return 0;
-+}
-+
-+int rc32434_init_module(void)
-+{
-+#ifdef CONFIG_MACH_ARUBA
-+ if (mips_machtype != MACH_ARUBA_AP70)
-+ return 1;
-+#endif
-+
-+ printk(KERN_INFO DRIVER_NAME " \n");
-+ return rc32434_probe(0);
-+}
-+
-+static int rc32434_probe(int port_num)
-+{
-+ struct rc32434_if_t *bif = &rc32434_iflist[port_num];
-+ struct rc32434_local *lp = NULL;
-+ struct net_device *dev = NULL;
-+ int i, retval,err;
-+
-+ dev = alloc_etherdev(sizeof(struct rc32434_local));
-+ if(!dev) {
-+ ERR("rc32434_eth: alloc_etherdev failed\n");
-+ return -1;
-+ }
-+
-+ SET_MODULE_OWNER(dev);
-+ bif->dev = dev;
-+
-+#ifdef CONFIG_MACH_ARUBA
-+ {
-+ extern char * getenv(char *e);
-+ memcpy(bif->mac_str, getenv("ethaddr"), 17);
-+ }
-+#endif
-+
-+ printk("mac: %s\n", bif->mac_str);
-+ if ((retval = parse_mac_addr(dev, bif->mac_str))) {
-+ ERR("MAC address parse failed\n");
-+ free_netdev(dev);
-+ return -1;
-+ }
-+
-+
-+ /* Initialize the device structure. */
-+ if (dev->priv == NULL) {
-+ lp = (struct rc32434_local *)kmalloc(sizeof(*lp), GFP_KERNEL);
-+ memset(lp, 0, sizeof(struct rc32434_local));
-+ }
-+ else {
-+ lp = (struct rc32434_local *)dev->priv;
-+ }
-+
-+ lp->rx_irq = bif->rx_dma_irq;
-+ lp->tx_irq = bif->tx_dma_irq;
-+ lp->ovr_irq = bif->rx_ovr_irq;
-+ lp->und_irq = bif->tx_und_irq;
-+
-+ lp->eth_regs = ioremap_nocache(bif->iobase, sizeof(*lp->eth_regs));
-+
-+ if (!lp->eth_regs) {
-+ ERR("Can't remap eth registers\n");
-+ retval = -ENXIO;
-+ goto probe_err_out;
-+ }
-+
-+ lp->rx_dma_regs = ioremap_nocache(bif->rxdmabase, sizeof(struct DMA_Chan_s));
-+
-+ if (!lp->rx_dma_regs) {
-+ ERR("Can't remap Rx DMA registers\n");
-+ retval = -ENXIO;
-+ goto probe_err_out;
-+ }
-+ lp->tx_dma_regs = ioremap_nocache(bif->txdmabase,sizeof(struct DMA_Chan_s));
-+
-+ if (!lp->tx_dma_regs) {
-+ ERR("Can't remap Tx DMA registers\n");
-+ retval = -ENXIO;
-+ goto probe_err_out;
-+ }
-+
-+#ifdef RC32434_PROC_DEBUG
-+ lp->ps = create_proc_read_entry (bif->name, 0, proc_net,
-+ rc32434_read_proc, dev);
-+#endif
-+
-+ lp->td_ring = (DMAD_t)kmalloc(TD_RING_SIZE + RD_RING_SIZE, GFP_KERNEL);
-+ if (!lp->td_ring) {
-+ ERR("Can't allocate descriptors\n");
-+ retval = -ENOMEM;
-+ goto probe_err_out;
-+ }
-+
-+ dma_cache_inv((unsigned long)(lp->td_ring), TD_RING_SIZE + RD_RING_SIZE);
-+
-+ /* now convert TD_RING pointer to KSEG1 */
-+ lp->td_ring = (DMAD_t )KSEG1ADDR(lp->td_ring);
-+ lp->rd_ring = &lp->td_ring[RC32434_NUM_TDS];
-+
-+
-+ spin_lock_init(&lp->lock);
-+
-+ dev->base_addr = bif->iobase;
-+ /* just use the rx dma irq */
-+ dev->irq = bif->rx_dma_irq;
-+
-+ dev->priv = lp;
-+
-+ dev->open = rc32434_open;
-+ dev->stop = rc32434_close;
-+ dev->hard_start_xmit = rc32434_send_packet;
-+ dev->get_stats = rc32434_get_stats;
-+ dev->set_multicast_list = &rc32434_multicast_list;
-+ dev->tx_timeout = rc32434_tx_timeout;
-+ dev->watchdog_timeo = RC32434_TX_TIMEOUT;
-+
-+#ifdef CONFIG_IDT_USE_NAPI
-+ dev->poll = rc32434_poll;
-+ dev->weight = bif->weight;
-+ printk("Using NAPI with weight %d\n",dev->weight);
-+#else
-+ lp->rx_tasklet = kmalloc(sizeof(struct tasklet_struct), GFP_KERNEL);
-+ tasklet_init(lp->rx_tasklet, rc32434_rx_tasklet, (unsigned long)dev);
-+#endif
-+ lp->tx_tasklet = kmalloc(sizeof(struct tasklet_struct), GFP_KERNEL);
-+ tasklet_init(lp->tx_tasklet, rc32434_tx_tasklet, (unsigned long)dev);
-+
-+ if ((err = register_netdev(dev))) {
-+ printk(KERN_ERR "rc32434 ethernet. Cannot register net device %d\n", err);
-+ free_netdev(dev);
-+ retval = -EINVAL;
-+ goto probe_err_out;
-+ }
-+
-+ INFO("Rx IRQ %d, Tx IRQ %d, ", bif->rx_dma_irq, bif->tx_dma_irq);
-+ for (i = 0; i < 6; i++) {
-+ printk("%2.2x", dev->dev_addr[i]);
-+ if (i<5)
-+ printk(":");
-+ }
-+ printk("\n");
-+
-+ return 0;
-+
-+ probe_err_out:
-+ rc32434_cleanup_module();
-+ ERR(" failed. Returns %d\n", retval);
-+ return retval;
-+
-+}
-+
-+
-+static void rc32434_cleanup_module(void)
-+{
-+ int i;
-+
-+ for (i = 0; rc32434_iflist[i].iobase; i++) {
-+ struct rc32434_if_t * bif = &rc32434_iflist[i];
-+ if (bif->dev != NULL) {
-+ struct rc32434_local *lp = (struct rc32434_local *)bif->dev->priv;
-+ if (lp != NULL) {
-+ if (lp->eth_regs)
-+ iounmap((void*)lp->eth_regs);
-+ if (lp->rx_dma_regs)
-+ iounmap((void*)lp->rx_dma_regs);
-+ if (lp->tx_dma_regs)
-+ iounmap((void*)lp->tx_dma_regs);
-+ if (lp->td_ring)
-+ kfree((void*)KSEG0ADDR(lp->td_ring));
-+
-+#ifdef RC32434_PROC_DEBUG
-+ if (lp->ps) {
-+ remove_proc_entry(bif->name, proc_net);
-+ }
-+#endif
-+ kfree(lp);
-+ }
-+
-+ unregister_netdev(bif->dev);
-+ free_netdev(bif->dev);
-+ kfree(bif->dev);
-+ }
-+ }
-+}
-+
-+
-+
-+static int rc32434_open(struct net_device *dev)
-+{
-+ struct rc32434_local *lp = (struct rc32434_local *)dev->priv;
-+
-+ /* Initialize */
-+ if (rc32434_init(dev)) {
-+ ERR("Error: cannot open the Ethernet device\n");
-+ return -EAGAIN;
-+ }
-+
-+ /* Install the interrupt handler that handles the Done Finished Ovr and Und Events */
-+ if (request_irq(lp->rx_irq, &rc32434_rx_dma_interrupt,
-+ SA_SHIRQ | SA_INTERRUPT,
-+ "rc32434 ethernet Rx", dev)) {
-+ ERR(": unable to get Rx DMA IRQ %d\n",
-+ lp->rx_irq);
-+ return -EAGAIN;
-+ }
-+ if (request_irq(lp->tx_irq, &rc32434_tx_dma_interrupt,
-+ SA_SHIRQ | SA_INTERRUPT,
-+ "rc32434 ethernet Tx", dev)) {
-+ ERR(": unable to get Tx DMA IRQ %d\n",
-+ lp->tx_irq);
-+ free_irq(lp->rx_irq, dev);
-+ return -EAGAIN;
-+ }
-+
-+#ifdef RC32434_REVISION
-+ /* Install handler for overrun error. */
-+ if (request_irq(lp->ovr_irq, &rc32434_ovr_interrupt,
-+ SA_SHIRQ | SA_INTERRUPT,
-+ "Ethernet Overflow", dev)) {
-+ ERR(": unable to get OVR IRQ %d\n",
-+ lp->ovr_irq);
-+ free_irq(lp->rx_irq, dev);
-+ free_irq(lp->tx_irq, dev);
-+ return -EAGAIN;
-+ }
-+#endif
-+
-+ /* Install handler for underflow error. */
-+ if (request_irq(lp->und_irq, &rc32434_und_interrupt,
-+ SA_SHIRQ | SA_INTERRUPT,
-+ "Ethernet Underflow", dev)) {
-+ ERR(": unable to get UND IRQ %d\n",
-+ lp->und_irq);
-+ free_irq(lp->rx_irq, dev);
-+ free_irq(lp->tx_irq, dev);
-+#ifdef RC32434_REVISION
-+ free_irq(lp->ovr_irq, dev);
-+#endif
-+ return -EAGAIN;
-+ }
-+
-+
-+ return 0;
-+}
-+
-+
-+
-+
-+static int rc32434_close(struct net_device *dev)
-+{
-+ struct rc32434_local *lp = (struct rc32434_local *)dev->priv;
-+ u32 tmp;
-+
-+ /* Disable interrupts */
-+ disable_irq(lp->rx_irq);
-+ disable_irq(lp->tx_irq);
-+#ifdef RC32434_REVISION
-+ disable_irq(lp->ovr_irq);
-+#endif
-+ disable_irq(lp->und_irq);
-+
-+ tmp = rc32434_readl(&lp->tx_dma_regs->dmasm);
-+ tmp = tmp | DMASM_f_m | DMASM_e_m;
-+ rc32434_writel(tmp, &lp->tx_dma_regs->dmasm);
-+
-+ tmp = rc32434_readl(&lp->rx_dma_regs->dmasm);
-+ tmp = tmp | DMASM_d_m | DMASM_h_m | DMASM_e_m;
-+ rc32434_writel(tmp, &lp->rx_dma_regs->dmasm);
-+
-+ free_irq(lp->rx_irq, dev);
-+ free_irq(lp->tx_irq, dev);
-+#ifdef RC32434_REVISION
-+ free_irq(lp->ovr_irq, dev);
-+#endif
-+ free_irq(lp->und_irq, dev);
-+ return 0;
-+}
-+
-+
-+/* transmit packet */
-+static int rc32434_send_packet(struct sk_buff *skb, struct net_device *dev)
-+{
-+ struct rc32434_local *lp = (struct rc32434_local *)dev->priv;
-+ unsigned long flags;
-+ u32 length;
-+ DMAD_t td;
-+
-+
-+ spin_lock_irqsave(&lp->lock, flags);
-+
-+ td = &lp->td_ring[lp->tx_chain_tail];
-+
-+ /* stop queue when full, drop pkts if queue already full */
-+ if(lp->tx_count >= (RC32434_NUM_TDS - 2)) {
-+ lp->tx_full = 1;
-+
-+ if(lp->tx_count == (RC32434_NUM_TDS - 2)) {
-+ netif_stop_queue(dev);
-+ }
-+ else {
-+ lp->stats.tx_dropped++;
-+ dev_kfree_skb_any(skb);
-+ spin_unlock_irqrestore(&lp->lock, flags);
-+ return 1;
-+ }
-+ }
-+
-+ lp->tx_count ++;
-+
-+ lp->tx_skb[lp->tx_chain_tail] = skb;
-+
-+ length = skb->len;
-+
-+ /* Setup the transmit descriptor. */
-+ td->ca = CPHYSADDR(skb->data);
-+
-+ if(rc32434_readl(&(lp->tx_dma_regs->dmandptr)) == 0) {
-+ if( lp->tx_chain_status == empty ) {
-+ td->control = DMA_COUNT(length) |DMAD_cof_m |DMAD_iof_m; /* Update tail */
-+ lp->tx_chain_tail = (lp->tx_chain_tail + 1) & RC32434_TDS_MASK; /* Move tail */
-+ rc32434_writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]), &(lp->tx_dma_regs->dmandptr)); /* Write to NDPTR */
-+ lp->tx_chain_head = lp->tx_chain_tail; /* Move head to tail */
-+ }
-+ else {
-+ td->control = DMA_COUNT(length) |DMAD_cof_m|DMAD_iof_m; /* Update tail */
-+ lp->td_ring[(lp->tx_chain_tail-1)& RC32434_TDS_MASK].control &= ~(DMAD_cof_m); /* Link to prev */
-+ lp->td_ring[(lp->tx_chain_tail-1)& RC32434_TDS_MASK].link = CPHYSADDR(td); /* Link to prev */
-+ lp->tx_chain_tail = (lp->tx_chain_tail + 1) & RC32434_TDS_MASK; /* Move tail */
-+ rc32434_writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]), &(lp->tx_dma_regs->dmandptr)); /* Write to NDPTR */
-+ lp->tx_chain_head = lp->tx_chain_tail; /* Move head to tail */
-+ lp->tx_chain_status = empty;
-+ }
-+ }
-+ else {
-+ if( lp->tx_chain_status == empty ) {
-+ td->control = DMA_COUNT(length) |DMAD_cof_m |DMAD_iof_m; /* Update tail */
-+ lp->tx_chain_tail = (lp->tx_chain_tail + 1) & RC32434_TDS_MASK; /* Move tail */
-+ lp->tx_chain_status = filled;
-+ }
-+ else {
-+ td->control = DMA_COUNT(length) |DMAD_cof_m |DMAD_iof_m; /* Update tail */
-+ lp->td_ring[(lp->tx_chain_tail-1)& RC32434_TDS_MASK].control &= ~(DMAD_cof_m); /* Link to prev */
-+ lp->td_ring[(lp->tx_chain_tail-1)& RC32434_TDS_MASK].link = CPHYSADDR(td); /* Link to prev */
-+ lp->tx_chain_tail = (lp->tx_chain_tail + 1) & RC32434_TDS_MASK; /* Move tail */
-+ }
-+ }
-+
-+ dev->trans_start = jiffies;
-+
-+ spin_unlock_irqrestore(&lp->lock, flags);
-+
-+ return 0;
-+}
-+
-+
-+/* Ethernet MII-PHY Handler */
-+static void rc32434_mii_handler(unsigned long data)
-+{
-+ struct net_device *dev = (struct net_device *)data;
-+ struct rc32434_local *lp = (struct rc32434_local *)dev->priv;
-+ unsigned long flags;
-+ unsigned long duplex_status;
-+ int port_addr = (lp->rx_irq == 0x2c? 1:0) << 8;
-+
-+ spin_lock_irqsave(&lp->lock, flags);
-+
-+ /* Two ports are using the same MII, the difference is the PHY address */
-+ rc32434_writel(0, &rc32434_eth0_regs->miimcfg);
-+ rc32434_writel(0, &rc32434_eth0_regs->miimcmd);
-+ rc32434_writel(port_addr |0x05, &rc32434_eth0_regs->miimaddr);
-+ rc32434_writel(MIIMCMD_scn_m, &rc32434_eth0_regs->miimcmd);
-+ while(rc32434_readl(&rc32434_eth0_regs->miimind) & MIIMIND_nv_m);
-+
-+ ERR("irq:%x port_addr:%x RDD:%x\n",
-+ lp->rx_irq, port_addr, rc32434_readl(&rc32434_eth0_regs->miimrdd));
-+ duplex_status = (rc32434_readl(&rc32434_eth0_regs->miimrdd) & 0x140)? ETHMAC2_fd_m: 0;
-+ if(duplex_status != lp->duplex_mode) {
-+ ERR("The MII-PHY is Auto-negotiated to %s-Duplex mode for Eth-%x\n", duplex_status? "Full":"Half", lp->rx_irq == 0x2c? 1:0);
-+ lp->duplex_mode = duplex_status;
-+ rc32434_restart(dev);
-+ }
-+
-+ lp->mii_phy_timer.expires = jiffies + 10 * HZ;
-+ add_timer(&lp->mii_phy_timer);
-+
-+ spin_unlock_irqrestore(&lp->lock, flags);
-+
-+}
-+
-+#ifdef RC32434_REVISION
-+/* Ethernet Rx Overflow interrupt */
-+static irqreturn_t
-+rc32434_ovr_interrupt(int irq, void *dev_id, struct pt_regs * regs)
-+{
-+ struct net_device *dev = (struct net_device *)dev_id;
-+ struct rc32434_local *lp;
-+ unsigned int ovr;
-+ irqreturn_t retval = IRQ_NONE;
-+
-+ ASSERT(dev != NULL);
-+
-+ lp = (struct rc32434_local *)dev->priv;
-+ spin_lock(&lp->lock);
-+ ovr = rc32434_readl(&lp->eth_regs->ethintfc);
-+
-+ if(ovr & ETHINTFC_ovr_m) {
-+ netif_stop_queue(dev);
-+
-+ /* clear OVR bit */
-+ rc32434_writel((ovr & ~ETHINTFC_ovr_m), &lp->eth_regs->ethintfc);
-+
-+ /* Restart interface */
-+ rc32434_restart(dev);
-+ retval = IRQ_HANDLED;
-+ }
-+ spin_unlock(&lp->lock);
-+
-+ return retval;
-+}
-+
-+#endif
-+
-+
-+/* Ethernet Tx Underflow interrupt */
-+static irqreturn_t
-+rc32434_und_interrupt(int irq, void *dev_id, struct pt_regs * regs)
-+{
-+ struct net_device *dev = (struct net_device *)dev_id;
-+ struct rc32434_local *lp;
-+ unsigned int und;
-+ irqreturn_t retval = IRQ_NONE;
-+
-+ ASSERT(dev != NULL);
-+
-+ lp = (struct rc32434_local *)dev->priv;
-+
-+ spin_lock(&lp->lock);
-+
-+ und = rc32434_readl(&lp->eth_regs->ethintfc);
-+
-+ if(und & ETHINTFC_und_m) {
-+ netif_stop_queue(dev);
-+
-+ rc32434_writel((und & ~ETHINTFC_und_m), &lp->eth_regs->ethintfc);
-+
-+ /* Restart interface */
-+ rc32434_restart(dev);
-+ retval = IRQ_HANDLED;
-+ }
-+
-+ spin_unlock(&lp->lock);
-+
-+ return retval;
-+}
-+
-+
-+/* Ethernet Rx DMA interrupt */
-+static irqreturn_t
-+rc32434_rx_dma_interrupt(int irq, void *dev_id, struct pt_regs * regs)
-+{
-+ struct net_device *dev = (struct net_device *)dev_id;
-+ struct rc32434_local* lp;
-+ volatile u32 dmas,dmasm;
-+ irqreturn_t retval;
-+
-+ ASSERT(dev != NULL);
-+
-+ lp = (struct rc32434_local *)dev->priv;
-+
-+ spin_lock(&lp->lock);
-+ dmas = rc32434_readl(&lp->rx_dma_regs->dmas);
-+ if(dmas & (DMAS_d_m|DMAS_h_m|DMAS_e_m)) {
-+ /* Mask D H E bit in Rx DMA */
-+ dmasm = rc32434_readl(&lp->rx_dma_regs->dmasm);
-+ rc32434_writel(dmasm | (DMASM_d_m | DMASM_h_m | DMASM_e_m), &lp->rx_dma_regs->dmasm);
-+#ifdef CONFIG_IDT_USE_NAPI
-+ if(netif_rx_schedule_prep(dev))
-+ __netif_rx_schedule(dev);
-+#else
-+ tasklet_hi_schedule(lp->rx_tasklet);
-+#endif
-+
-+ if (dmas & DMAS_e_m)
-+ ERR(": DMA error\n");
-+
-+ retval = IRQ_HANDLED;
-+ }
-+ else
-+ retval = IRQ_NONE;
-+
-+ spin_unlock(&lp->lock);
-+ return retval;
-+}
-+
-+#ifdef CONFIG_IDT_USE_NAPI
-+static int rc32434_poll(struct net_device *rx_data_dev, int *budget)
-+#else
-+static void rc32434_rx_tasklet(unsigned long rx_data_dev)
-+#endif
-+{
-+ struct net_device *dev = (struct net_device *)rx_data_dev;
-+ struct rc32434_local* lp = netdev_priv(dev);
-+ volatile DMAD_t rd = &lp->rd_ring[lp->rx_next_done];
-+ struct sk_buff *skb, *skb_new;
-+ u8* pkt_buf;
-+ u32 devcs, count, pkt_len, pktuncrc_len;
-+ volatile u32 dmas;
-+#ifdef CONFIG_IDT_USE_NAPI
-+ u32 received = 0;
-+ int rx_work_limit = min(*budget,dev->quota);
-+#else
-+ unsigned long flags;
-+ spin_lock_irqsave(&lp->lock, flags);
-+#endif
-+
-+ while ( (count = RC32434_RBSIZE - (u32)DMA_COUNT(rd->control)) != 0) {
-+#ifdef CONFIG_IDT_USE_NAPI
-+ if(--rx_work_limit <0)
-+ {
-+ break;
-+ }
-+#endif
-+ /* init the var. used for the later operations within the while loop */
-+ skb_new = NULL;
-+ devcs = rd->devcs;
-+ pkt_len = RCVPKT_LENGTH(devcs);
-+ skb = lp->rx_skb[lp->rx_next_done];
-+
-+ if (count < 64) {
-+ lp->stats.rx_errors++;
-+ lp->stats.rx_dropped++;
-+ }
-+ else if ((devcs & ( ETHRX_ld_m)) != ETHRX_ld_m) {
-+ /* check that this is a whole packet */
-+ /* WARNING: DMA_FD bit incorrectly set in Rc32434 (errata ref #077) */
-+ lp->stats.rx_errors++;
-+ lp->stats.rx_dropped++;
-+ }
-+ else if ( (devcs & ETHRX_rok_m) ) {
-+
-+ {
-+ /* must be the (first and) last descriptor then */
-+ pkt_buf = (u8*)lp->rx_skb[lp->rx_next_done]->data;
-+
-+ pktuncrc_len = pkt_len - 4;
-+ /* invalidate the cache */
-+ dma_cache_inv((unsigned long)pkt_buf, pktuncrc_len);
-+
-+ /* Malloc up new buffer. */
-+ skb_new = dev_alloc_skb(RC32434_RBSIZE + 2);
-+
-+ if (skb_new != NULL){
-+ /* Make room */
-+ skb_put(skb, pktuncrc_len);
-+
-+ skb->protocol = eth_type_trans(skb, dev);
-+
-+ /* pass the packet to upper layers */
-+#ifdef CONFIG_IDT_USE_NAPI
-+ netif_receive_skb(skb);
-+#else
-+ netif_rx(skb);
-+#endif
-+
-+ dev->last_rx = jiffies;
-+ lp->stats.rx_packets++;
-+ lp->stats.rx_bytes += pktuncrc_len;
-+
-+ if (IS_RCV_MP(devcs))
-+ lp->stats.multicast++;
-+
-+ /* 16 bit align */
-+ skb_reserve(skb_new, 2);
-+
-+ skb_new->dev = dev;
-+ lp->rx_skb[lp->rx_next_done] = skb_new;
-+ }
-+ else {
-+ ERR("no memory, dropping rx packet.\n");
-+ lp->stats.rx_errors++;
-+ lp->stats.rx_dropped++;
-+ }
-+ }
-+
-+ }
-+ else {
-+ /* This should only happen if we enable accepting broken packets */
-+ lp->stats.rx_errors++;
-+ lp->stats.rx_dropped++;
-+
-+ /* add statistics counters */
-+ if (IS_RCV_CRC_ERR(devcs)) {
-+ DBG(2, "RX CRC error\n");
-+ lp->stats.rx_crc_errors++;
-+ }
-+ else if (IS_RCV_LOR_ERR(devcs)) {
-+ DBG(2, "RX LOR error\n");
-+ lp->stats.rx_length_errors++;
-+ }
-+ else if (IS_RCV_LE_ERR(devcs)) {
-+ DBG(2, "RX LE error\n");
-+ lp->stats.rx_length_errors++;
-+ }
-+ else if (IS_RCV_OVR_ERR(devcs)) {
-+ lp->stats.rx_over_errors++;
-+ }
-+ else if (IS_RCV_CV_ERR(devcs)) {
-+ /* code violation */
-+ DBG(2, "RX CV error\n");
-+ lp->stats.rx_frame_errors++;
-+ }
-+ else if (IS_RCV_CES_ERR(devcs)) {
-+ DBG(2, "RX Preamble error\n");
-+ }
-+ }
-+
-+ rd->devcs = 0;
-+
-+ /* restore descriptor's curr_addr */
-+ if(skb_new)
-+ rd->ca = CPHYSADDR(skb_new->data);
-+ else
-+ rd->ca = CPHYSADDR(skb->data);
-+
-+ rd->control = DMA_COUNT(RC32434_RBSIZE) |DMAD_cod_m |DMAD_iod_m;
-+ lp->rd_ring[(lp->rx_next_done-1)& RC32434_RDS_MASK].control &= ~(DMAD_cod_m);
-+
-+ lp->rx_next_done = (lp->rx_next_done + 1) & RC32434_RDS_MASK;
-+ rd = &lp->rd_ring[lp->rx_next_done];
-+ rc32434_writel( ~DMAS_d_m, &lp->rx_dma_regs->dmas);
-+ }
-+#ifdef CONFIG_IDT_USE_NAPI
-+ dev->quota -= received;
-+ *budget =- received;
-+ if(rx_work_limit < 0)
-+ goto not_done;
-+#endif
-+
-+ dmas = rc32434_readl(&lp->rx_dma_regs->dmas);
-+
-+ if(dmas & DMAS_h_m) {
-+ rc32434_writel( ~(DMAS_h_m | DMAS_e_m), &lp->rx_dma_regs->dmas);
-+#ifdef RC32434_PROC_DEBUG
-+ lp->dma_halt_cnt++;
-+#endif
-+ rd->devcs = 0;
-+ skb = lp->rx_skb[lp->rx_next_done];
-+ rd->ca = CPHYSADDR(skb->data);
-+ rc32434_chain_rx(lp,rd);
-+ }
-+
-+#ifdef CONFIG_IDT_USE_NAPI
-+ netif_rx_complete(dev);
-+#endif
-+ /* Enable D H E bit in Rx DMA */
-+ rc32434_writel(rc32434_readl(&lp->rx_dma_regs->dmasm) & ~(DMASM_d_m | DMASM_h_m |DMASM_e_m), &lp->rx_dma_regs->dmasm);
-+#ifdef CONFIG_IDT_USE_NAPI
-+ return 0;
-+ not_done:
-+ return 1;
-+#else
-+ spin_unlock_irqrestore(&lp->lock, flags);
-+ return;
-+#endif
-+
-+
-+}
-+
-+
-+
-+/* Ethernet Tx DMA interrupt */
-+static irqreturn_t
-+rc32434_tx_dma_interrupt(int irq, void *dev_id, struct pt_regs * regs)
-+{
-+ struct net_device *dev = (struct net_device *)dev_id;
-+ struct rc32434_local *lp;
-+ volatile u32 dmas,dmasm;
-+ irqreturn_t retval;
-+
-+ ASSERT(dev != NULL);
-+
-+ lp = (struct rc32434_local *)dev->priv;
-+
-+ spin_lock(&lp->lock);
-+
-+ dmas = rc32434_readl(&lp->tx_dma_regs->dmas);
-+
-+ if (dmas & (DMAS_f_m | DMAS_e_m)) {
-+ dmasm = rc32434_readl(&lp->tx_dma_regs->dmasm);
-+ /* Mask F E bit in Tx DMA */
-+ rc32434_writel(dmasm | (DMASM_f_m | DMASM_e_m), &lp->tx_dma_regs->dmasm);
-+
-+ tasklet_hi_schedule(lp->tx_tasklet);
-+
-+ if(lp->tx_chain_status == filled && (rc32434_readl(&(lp->tx_dma_regs->dmandptr)) == 0)) {
-+ rc32434_writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]), &(lp->tx_dma_regs->dmandptr));
-+ lp->tx_chain_status = empty;
-+ lp->tx_chain_head = lp->tx_chain_tail;
-+ dev->trans_start = jiffies;
-+ }
-+
-+ if (dmas & DMAS_e_m)
-+ ERR(": DMA error\n");
-+
-+ retval = IRQ_HANDLED;
-+ }
-+ else
-+ retval = IRQ_NONE;
-+
-+ spin_unlock(&lp->lock);
-+
-+ return retval;
-+}
-+
-+
-+static void rc32434_tx_tasklet(unsigned long tx_data_dev)
-+{
-+ struct net_device *dev = (struct net_device *)tx_data_dev;
-+ struct rc32434_local* lp = (struct rc32434_local *)dev->priv;
-+ volatile DMAD_t td = &lp->td_ring[lp->tx_next_done];
-+ u32 devcs;
-+ unsigned long flags;
-+ volatile u32 dmas;
-+
-+ spin_lock_irqsave(&lp->lock, flags);
-+
-+ /* process all desc that are done */
-+ while(IS_DMA_FINISHED(td->control)) {
-+ if(lp->tx_full == 1) {
-+ netif_wake_queue(dev);
-+ lp->tx_full = 0;
-+ }
-+
-+ devcs = lp->td_ring[lp->tx_next_done].devcs;
-+ if ((devcs & (ETHTX_fd_m | ETHTX_ld_m)) != (ETHTX_fd_m | ETHTX_ld_m)) {
-+ lp->stats.tx_errors++;
-+ lp->stats.tx_dropped++;
-+
-+ /* should never happen */
-+ DBG(1, __FUNCTION__ ": split tx ignored\n");
-+ }
-+ else if (IS_TX_TOK(devcs)) {
-+ lp->stats.tx_packets++;
-+ }
-+ else {
-+ lp->stats.tx_errors++;
-+ lp->stats.tx_dropped++;
-+
-+ /* underflow */
-+ if (IS_TX_UND_ERR(devcs))
-+ lp->stats.tx_fifo_errors++;
-+
-+ /* oversized frame */
-+ if (IS_TX_OF_ERR(devcs))
-+ lp->stats.tx_aborted_errors++;
-+
-+ /* excessive deferrals */
-+ if (IS_TX_ED_ERR(devcs))
-+ lp->stats.tx_carrier_errors++;
-+
-+ /* collisions: medium busy */
-+ if (IS_TX_EC_ERR(devcs))
-+ lp->stats.collisions++;
-+
-+ /* late collision */
-+ if (IS_TX_LC_ERR(devcs))
-+ lp->stats.tx_window_errors++;
-+
-+ }
-+
-+ /* We must always free the original skb */
-+ if (lp->tx_skb[lp->tx_next_done] != NULL) {
-+ dev_kfree_skb_any(lp->tx_skb[lp->tx_next_done]);
-+ lp->tx_skb[lp->tx_next_done] = NULL;
-+ }
-+
-+ lp->td_ring[lp->tx_next_done].control = DMAD_iof_m;
-+ lp->td_ring[lp->tx_next_done].devcs = ETHTX_fd_m | ETHTX_ld_m;
-+ lp->td_ring[lp->tx_next_done].link = 0;
-+ lp->td_ring[lp->tx_next_done].ca = 0;
-+ lp->tx_count --;
-+
-+ /* go on to next transmission */
-+ lp->tx_next_done = (lp->tx_next_done + 1) & RC32434_TDS_MASK;
-+ td = &lp->td_ring[lp->tx_next_done];
-+
-+ }
-+
-+ dmas = rc32434_readl(&lp->tx_dma_regs->dmas);
-+ rc32434_writel( ~dmas, &lp->tx_dma_regs->dmas);
-+
-+ /* Enable F E bit in Tx DMA */
-+ rc32434_writel(rc32434_readl(&lp->tx_dma_regs->dmasm) & ~(DMASM_f_m | DMASM_e_m), &lp->tx_dma_regs->dmasm);
-+ spin_unlock_irqrestore(&lp->lock, flags);
-+
-+}
-+
-+
-+static struct net_device_stats * rc32434_get_stats(struct net_device *dev)
-+{
-+ struct rc32434_local *lp = (struct rc32434_local *)dev->priv;
-+ return &lp->stats;
-+}
-+
-+
-+/*
-+ * Set or clear the multicast filter for this adaptor.
-+ */
-+static void rc32434_multicast_list(struct net_device *dev)
-+{
-+ /* listen to broadcasts always and to treat */
-+ /* IFF bits independantly */
-+ struct rc32434_local *lp = (struct rc32434_local *)dev->priv;
-+ unsigned long flags;
-+ u32 recognise = ETHARC_ab_m; /* always accept broadcasts */
-+
-+ if (dev->flags & IFF_PROMISC) /* set promiscuous mode */
-+ recognise |= ETHARC_pro_m;
-+
-+ if ((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 15))
-+ recognise |= ETHARC_am_m; /* all multicast & bcast */
-+ else if (dev->mc_count > 0) {
-+ DBG(2, __FUNCTION__ ": mc_count %d\n", dev->mc_count);
-+ recognise |= ETHARC_am_m; /* for the time being */
-+ }
-+
-+ spin_lock_irqsave(&lp->lock, flags);
-+ rc32434_writel(recognise, &lp->eth_regs->etharc);
-+ spin_unlock_irqrestore(&lp->lock, flags);
-+}
-+
-+
-+static void rc32434_tx_timeout(struct net_device *dev)
-+{
-+ struct rc32434_local *lp = (struct rc32434_local *)dev->priv;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&lp->lock, flags);
-+ rc32434_restart(dev);
-+ spin_unlock_irqrestore(&lp->lock, flags);
-+
-+}
-+
-+
-+/*
-+ * Initialize the RC32434 ethernet controller.
-+ */
-+static int rc32434_init(struct net_device *dev)
-+{
-+ struct rc32434_local *lp = (struct rc32434_local *)dev->priv;
-+ int i, j;
-+
-+ /* Disable DMA */
-+ rc32434_abort_tx(dev);
-+ rc32434_abort_rx(dev);
-+
-+ /* reset ethernet logic */
-+ rc32434_writel(0, &lp->eth_regs->ethintfc);
-+ while((rc32434_readl(&lp->eth_regs->ethintfc) & ETHINTFC_rip_m))
-+ dev->trans_start = jiffies;
-+
-+ /* Enable Ethernet Interface */
-+ rc32434_writel(ETHINTFC_en_m, &lp->eth_regs->ethintfc);
-+
-+#ifndef CONFIG_IDT_USE_NAPI
-+ tasklet_disable(lp->rx_tasklet);
-+#endif
-+ tasklet_disable(lp->tx_tasklet);
-+
-+ /* Initialize the transmit Descriptors */
-+ for (i = 0; i < RC32434_NUM_TDS; i++) {
-+ lp->td_ring[i].control = DMAD_iof_m;
-+ lp->td_ring[i].devcs = ETHTX_fd_m | ETHTX_ld_m;
-+ lp->td_ring[i].ca = 0;
-+ lp->td_ring[i].link = 0;
-+ if (lp->tx_skb[i] != NULL) {
-+ dev_kfree_skb_any(lp->tx_skb[i]);
-+ lp->tx_skb[i] = NULL;
-+ }
-+ }
-+ lp->tx_next_done = lp->tx_chain_head = lp->tx_chain_tail = lp->tx_full = lp->tx_count = 0;
-+ lp-> tx_chain_status = empty;
-+
-+ /*
-+ * Initialize the receive descriptors so that they
-+ * become a circular linked list, ie. let the last
-+ * descriptor point to the first again.
-+ */
-+ for (i=0; i<RC32434_NUM_RDS; i++) {
-+ struct sk_buff *skb = lp->rx_skb[i];
-+
-+ if (lp->rx_skb[i] == NULL) {
-+ skb = dev_alloc_skb(RC32434_RBSIZE + 2);
-+ if (skb == NULL) {
-+ ERR("No memory in the system\n");
-+ for (j = 0; j < RC32434_NUM_RDS; j ++)
-+ if (lp->rx_skb[j] != NULL)
-+ dev_kfree_skb_any(lp->rx_skb[j]);
-+
-+ return 1;
-+ }
-+ else {
-+ skb->dev = dev;
-+ skb_reserve(skb, 2);
-+ lp->rx_skb[i] = skb;
-+ lp->rd_ring[i].ca = CPHYSADDR(skb->data);
-+
-+ }
-+ }
-+ lp->rd_ring[i].control = DMAD_iod_m | DMA_COUNT(RC32434_RBSIZE);
-+ lp->rd_ring[i].devcs = 0;
-+ lp->rd_ring[i].ca = CPHYSADDR(skb->data);
-+ lp->rd_ring[i].link = CPHYSADDR(&lp->rd_ring[i+1]);
-+
-+ }
-+ /* loop back */
-+ lp->rd_ring[RC32434_NUM_RDS-1].link = CPHYSADDR(&lp->rd_ring[0]);
-+ lp->rx_next_done = 0;
-+
-+ lp->rd_ring[RC32434_NUM_RDS-1].control |= DMAD_cod_m;
-+ lp->rx_chain_head = 0;
-+ lp->rx_chain_tail = 0;
-+ lp->rx_chain_status = empty;
-+
-+ rc32434_writel(0, &lp->rx_dma_regs->dmas);
-+ /* Start Rx DMA */
-+ rc32434_start_rx(lp, &lp->rd_ring[0]);
-+
-+ /* Enable F E bit in Tx DMA */
-+ rc32434_writel(rc32434_readl(&lp->tx_dma_regs->dmasm) & ~(DMASM_f_m | DMASM_e_m), &lp->tx_dma_regs->dmasm);
-+ /* Enable D H E bit in Rx DMA */
-+ rc32434_writel(rc32434_readl(&lp->rx_dma_regs->dmasm) & ~(DMASM_d_m | DMASM_h_m | DMASM_e_m), &lp->rx_dma_regs->dmasm);
-+
-+ /* Accept only packets destined for this Ethernet device address */
-+ rc32434_writel(ETHARC_ab_m, &lp->eth_regs->etharc);
-+
-+ /* Set all Ether station address registers to their initial values */
-+ rc32434_writel(STATION_ADDRESS_LOW(dev), &lp->eth_regs->ethsal0);
-+ rc32434_writel(STATION_ADDRESS_HIGH(dev), &lp->eth_regs->ethsah0);
-+
-+ rc32434_writel(STATION_ADDRESS_LOW(dev), &lp->eth_regs->ethsal1);
-+ rc32434_writel(STATION_ADDRESS_HIGH(dev), &lp->eth_regs->ethsah1);
-+
-+ rc32434_writel(STATION_ADDRESS_LOW(dev), &lp->eth_regs->ethsal2);
-+ rc32434_writel(STATION_ADDRESS_HIGH(dev), &lp->eth_regs->ethsah2);
-+
-+ rc32434_writel(STATION_ADDRESS_LOW(dev), &lp->eth_regs->ethsal3);
-+ rc32434_writel(STATION_ADDRESS_HIGH(dev), &lp->eth_regs->ethsah3);
-+
-+
-+ /* Frame Length Checking, Pad Enable, CRC Enable, Full Duplex set */
-+ rc32434_writel(ETHMAC2_pe_m | ETHMAC2_cen_m | ETHMAC2_fd_m, &lp->eth_regs->ethmac2);
-+ //ETHMAC2_flc_m ETHMAC2_fd_m lp->duplex_mode
-+
-+ /* Back to back inter-packet-gap */
-+ rc32434_writel(0x15, &lp->eth_regs->ethipgt);
-+ /* Non - Back to back inter-packet-gap */
-+ rc32434_writel(0x12, &lp->eth_regs->ethipgr);
-+
-+ /* Management Clock Prescaler Divisor */
-+ /* Clock independent setting */
-+ rc32434_writel(((idt_cpu_freq)/MII_CLOCK+1) & ~1,
-+ &lp->eth_regs->ethmcp);
-+
-+ /* don't transmit until fifo contains 48b */
-+ rc32434_writel(48, &lp->eth_regs->ethfifott);
-+
-+ rc32434_writel(ETHMAC1_re_m, &lp->eth_regs->ethmac1);
-+
-+#ifndef CONFIG_IDT_USE_NAPI
-+ tasklet_enable(lp->rx_tasklet);
-+#endif
-+ tasklet_enable(lp->tx_tasklet);
-+
-+ netif_start_queue(dev);
-+
-+
-+ return 0;
-+
-+}
-+
-+
-+#ifndef MODULE
-+
-+static int __init rc32434_setup(char *options)
-+{
-+ /* no options yet */
-+ return 1;
-+}
-+
-+static int __init rc32434_setup_ethaddr0(char *options)
-+{
-+ memcpy(mac0, options, 17);
-+ mac0[17]= '\0';
-+ return 1;
-+}
-+
-+__setup("rc32434eth=", rc32434_setup);
-+__setup("ethaddr0=", rc32434_setup_ethaddr0);
-+
-+
-+#endif /* MODULE */
-+
-+module_init(rc32434_init_module);
-+module_exit(rc32434_cleanup_module);
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff -Nur linux-2.6.16/drivers/net/rc32434_eth.h linux-2.6.16-owrt/drivers/net/rc32434_eth.h
---- linux-2.6.16/drivers/net/rc32434_eth.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/drivers/net/rc32434_eth.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,187 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Definitions for IDT RC32434 on-chip ethernet controller.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ * Aug 2004
-+ *
-+ * Added NAPI
-+ *
-+ **************************************************************************
-+ */
-+
-+
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+#include <asm/idt-boards/rc32434/rc32434_dma_v.h>
-+#include <asm/idt-boards/rc32434/rc32434_eth_v.h>
-+
-+#define RC32434_DEBUG 2
-+//#define RC32434_PROC_DEBUG
-+#undef RC32434_DEBUG
-+
-+#ifdef RC32434_DEBUG
-+
-+/* use 0 for production, 1 for verification, >2 for debug */
-+static int rc32434_debug = RC32434_DEBUG;
-+#define ASSERT(expr) \
-+ if(!(expr)) { \
-+ printk( "Assertion failed! %s,%s,%s,line=%d\n", \
-+ #expr,__FILE__,__FUNCTION__,__LINE__); }
-+#define DBG(lvl, format, arg...) if (rc32434_debug > lvl) printk(KERN_INFO "%s: " format, dev->name , ## arg)
-+#else
-+#define ASSERT(expr) do {} while (0)
-+#define DBG(lvl, format, arg...) do {} while (0)
-+#endif
-+
-+#define INFO(format, arg...) printk(KERN_INFO "%s: " format, dev->name , ## arg)
-+#define ERR(format, arg...) printk(KERN_ERR "%s: " format, dev->name , ## arg)
-+#define WARN(format, arg...) printk(KERN_WARNING "%s: " format, dev->name , ## arg)
-+
-+#define ETH0_DMA_RX_IRQ GROUP1_IRQ_BASE + 0
-+#define ETH0_DMA_TX_IRQ GROUP1_IRQ_BASE + 1
-+#define ETH0_RX_OVR_IRQ GROUP3_IRQ_BASE + 9
-+#define ETH0_TX_UND_IRQ GROUP3_IRQ_BASE + 10
-+
-+#define ETH0_RX_DMA_ADDR (DMA0_PhysicalAddress + 0*DMA_CHAN_OFFSET)
-+#define ETH0_TX_DMA_ADDR (DMA0_PhysicalAddress + 1*DMA_CHAN_OFFSET)
-+
-+/* the following must be powers of two */
-+#ifdef CONFIG_IDT_USE_NAPI
-+#define RC32434_NUM_RDS 64 /* number of receive descriptors */
-+#define RC32434_NUM_TDS 64 /* number of transmit descriptors */
-+#else
-+#define RC32434_NUM_RDS 128 /* number of receive descriptors */
-+#define RC32434_NUM_TDS 128 /* number of transmit descriptors */
-+#endif
-+
-+#define RC32434_RBSIZE 1536 /* size of one resource buffer = Ether MTU */
-+#define RC32434_RDS_MASK (RC32434_NUM_RDS-1)
-+#define RC32434_TDS_MASK (RC32434_NUM_TDS-1)
-+#define RD_RING_SIZE (RC32434_NUM_RDS * sizeof(struct DMAD_s))
-+#define TD_RING_SIZE (RC32434_NUM_TDS * sizeof(struct DMAD_s))
-+
-+#define RC32434_TX_TIMEOUT HZ * 100
-+
-+#define rc32434_eth0_regs ((ETH_t)(ETH0_VirtualAddress))
-+#define rc32434_eth1_regs ((ETH_t)(ETH1_VirtualAddress))
-+
-+enum status { filled, empty};
-+#define IS_DMA_FINISHED(X) (((X) & (DMAD_f_m)) != 0)
-+#define IS_DMA_DONE(X) (((X) & (DMAD_d_m)) != 0)
-+
-+
-+/* Information that need to be kept for each board. */
-+struct rc32434_local {
-+ ETH_t eth_regs;
-+ DMA_Chan_t rx_dma_regs;
-+ DMA_Chan_t tx_dma_regs;
-+ volatile DMAD_t td_ring; /* transmit descriptor ring */
-+ volatile DMAD_t rd_ring; /* receive descriptor ring */
-+
-+ struct sk_buff* tx_skb[RC32434_NUM_TDS]; /* skbuffs for pkt to trans */
-+ struct sk_buff* rx_skb[RC32434_NUM_RDS]; /* skbuffs for pkt to trans */
-+
-+#ifndef CONFIG_IDT_USE_NAPI
-+ struct tasklet_struct * rx_tasklet;
-+#endif
-+ struct tasklet_struct * tx_tasklet;
-+
-+ int rx_next_done;
-+ int rx_chain_head;
-+ int rx_chain_tail;
-+ enum status rx_chain_status;
-+
-+ int tx_next_done;
-+ int tx_chain_head;
-+ int tx_chain_tail;
-+ enum status tx_chain_status;
-+ int tx_count;
-+ int tx_full;
-+
-+ struct timer_list mii_phy_timer;
-+ unsigned long duplex_mode;
-+
-+ int rx_irq;
-+ int tx_irq;
-+ int ovr_irq;
-+ int und_irq;
-+
-+ struct net_device_stats stats;
-+ spinlock_t lock;
-+
-+ /* debug /proc entry */
-+ struct proc_dir_entry *ps;
-+ int dma_halt_cnt; int dma_run_cnt;
-+};
-+
-+extern unsigned int idt_cpu_freq;
-+
-+/* Index to functions, as function prototypes. */
-+static int rc32434_open(struct net_device *dev);
-+static int rc32434_send_packet(struct sk_buff *skb, struct net_device *dev);
-+static void rc32434_mii_handler(unsigned long data);
-+static irqreturn_t rc32434_und_interrupt(int irq, void *dev_id, struct pt_regs * regs);
-+static irqreturn_t rc32434_rx_dma_interrupt(int irq, void *dev_id, struct pt_regs * regs);
-+static irqreturn_t rc32434_tx_dma_interrupt(int irq, void *dev_id, struct pt_regs * regs);
-+#ifdef RC32434_REVISION
-+static irqreturn_t rc32434_ovr_interrupt(int irq, void *dev_id, struct pt_regs * regs);
-+#endif
-+static int rc32434_close(struct net_device *dev);
-+static struct net_device_stats *rc32434_get_stats(struct net_device *dev);
-+static void rc32434_multicast_list(struct net_device *dev);
-+static int rc32434_init(struct net_device *dev);
-+static void rc32434_tx_timeout(struct net_device *dev);
-+
-+static void rc32434_tx_tasklet(unsigned long tx_data_dev);
-+#ifdef CONFIG_IDT_USE_NAPI
-+static int rc32434_poll(struct net_device *rx_data_dev, int *budget);
-+#else
-+static void rc32434_rx_tasklet(unsigned long rx_data_dev);
-+#endif
-+static void rc32434_cleanup_module(void);
-+static int rc32434_probe(int port_num);
-+int rc32434_init_module(void);
-+
-+
-+static inline void rc32434_abort_dma(struct net_device *dev, DMA_Chan_t ch)
-+{
-+ if (rc32434_readl(&ch->dmac) & DMAC_run_m) {
-+ rc32434_writel(0x10, &ch->dmac);
-+
-+ while (!(rc32434_readl(&ch->dmas) & DMAS_h_m))
-+ dev->trans_start = jiffies;
-+
-+ rc32434_writel(0, &ch->dmas);
-+ }
-+
-+ rc32434_writel(0, &ch->dmadptr);
-+ rc32434_writel(0, &ch->dmandptr);
-+}
-diff -Nur linux-2.6.16/include/asm-mips/bootinfo.h linux-2.6.16-owrt/include/asm-mips/bootinfo.h
---- linux-2.6.16/include/asm-mips/bootinfo.h 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/bootinfo.h 2006-03-20 14:25:10.000000000 +0100
-@@ -218,6 +218,17 @@
- #define MACH_GROUP_TITAN 22 /* PMC-Sierra Titan */
- #define MACH_TITAN_YOSEMITE 1 /* PMC-Sierra Yosemite */
-
-+
-+/*
-+ * Valid machtype for group ARUBA
-+ */
-+#define MACH_GROUP_ARUBA 23
-+#define MACH_ARUBA_UNKNOWN 0
-+#define MACH_ARUBA_AP60 1
-+#define MACH_ARUBA_AP65 2
-+#define MACH_ARUBA_AP70 3
-+#define MACH_ARUBA_AP40 4
-+
- #define CL_SIZE COMMAND_LINE_SIZE
-
- const char *get_system_type(void);
-diff -Nur linux-2.6.16/include/asm-mips/cpu.h linux-2.6.16-owrt/include/asm-mips/cpu.h
---- linux-2.6.16/include/asm-mips/cpu.h 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/cpu.h 2006-03-20 14:25:10.000000000 +0100
-@@ -53,6 +53,9 @@
- #define PRID_IMP_R12000 0x0e00
- #define PRID_IMP_R8000 0x1000
- #define PRID_IMP_PR4450 0x1200
-+#define PRID_IMP_RC32334 0x1800
-+#define PRID_IMP_RC32355 0x1900
-+#define PRID_IMP_RC32365 0x1900
- #define PRID_IMP_R4600 0x2000
- #define PRID_IMP_R4700 0x2100
- #define PRID_IMP_TX39 0x2200
-@@ -196,7 +199,8 @@
- #define CPU_34K 60
- #define CPU_PR4450 61
- #define CPU_SB1A 62
--#define CPU_LAST 62
-+#define CPU_RC32300 63
-+#define CPU_LAST 63
-
- /*
- * ISA Level encodings
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32300.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32300.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32300.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32300.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,142 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * RC32300 helper routines
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32300_H__
-+#define __IDT_RC32300_H__
-+
-+#include <linux/delay.h>
-+#include <asm/io.h>
-+
-+
-+/* cpu pipeline flush */
-+static inline void rc32300_sync(void)
-+{
-+ __asm__ volatile ("sync");
-+}
-+
-+static inline void rc32300_sync_udelay(int us)
-+{
-+ __asm__ volatile ("sync");
-+ udelay(us);
-+}
-+
-+static inline void rc32300_sync_delay(int ms)
-+{
-+ __asm__ volatile ("sync");
-+ mdelay(ms);
-+}
-+
-+/*
-+ * Macros to access internal RC32300 registers. No byte
-+ * swapping should be done when accessing the internal
-+ * registers.
-+ */
-+
-+static inline u8 rc32300_readb(unsigned long pa)
-+{
-+ return *((volatile u8 *)KSEG1ADDR(pa));
-+}
-+static inline u16 rc32300_readw(unsigned long pa)
-+{
-+ return *((volatile u16 *)KSEG1ADDR(pa));
-+}
-+static inline u32 rc32300_readl(unsigned long pa)
-+{
-+ return *((volatile u32 *)KSEG1ADDR(pa));
-+}
-+static inline void rc32300_writeb(u8 val, unsigned long pa)
-+{
-+ *((volatile u8 *)KSEG1ADDR(pa)) = val;
-+}
-+static inline void rc32300_writew(u16 val, unsigned long pa)
-+{
-+ *((volatile u16 *)KSEG1ADDR(pa)) = val;
-+}
-+static inline void rc32300_writel(u32 val, unsigned long pa)
-+{
-+ *((volatile u32 *)KSEG1ADDR(pa)) = val;
-+}
-+
-+
-+#define local_readb __raw_readb
-+#define local_readw __raw_readw
-+#define local_readl __raw_readl
-+
-+#define local_writeb __raw_writeb
-+#define local_writew __raw_writew
-+#define local_writel __raw_writel
-+
-+
-+/*
-+ * C access to CLZ and CLO instructions
-+ * (count leading zeroes/ones).
-+ */
-+static inline int rc32300_clz(unsigned long val)
-+{
-+ int ret;
-+ __asm__ volatile (
-+ ".set\tnoreorder\n\t"
-+ ".set\tnoat\n\t"
-+ ".set\tmips32\n\t"
-+ "clz\t%0,%1\n\t"
-+ ".set\tmips0\n\t"
-+ ".set\tat\n\t"
-+ ".set\treorder"
-+ : "=r" (ret)
-+ : "r" (val));
-+
-+ return ret;
-+}
-+static inline int rc32300_clo(unsigned long val)
-+{
-+ int ret;
-+ __asm__ volatile (
-+ ".set\tnoreorder\n\t"
-+ ".set\tnoat\n\t"
-+ ".set\tmips32\n\t"
-+ "clo\t%0,%1\n\t"
-+ ".set\tmips0\n\t"
-+ ".set\tat\n\t"
-+ ".set\treorder"
-+ : "=r" (ret)
-+ : "r" (val));
-+
-+ return ret;
-+}
-+
-+#endif // __IDT_RC32300_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32334.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32334.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32334.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32334.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,207 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Definitions for IDT RC32334 CPU.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+
-+#ifndef __IDT_RC32334_H__
-+#define __IDT_RC32334_H__
-+
-+#include <linux/delay.h>
-+#include <asm/io.h>
-+
-+/* Base address of internal registers */
-+#define RC32334_REG_BASE 0x18000000
-+
-+/* CPU and IP Bus Control */
-+#define CPU_PORT_WIDTH 0xffffe200 // virtual!
-+#define CPU_BTA 0xffffe204 // virtual!
-+#define CPU_BUSERR_ADDR 0xffffe208 // virtual!
-+#define CPU_IP_BTA (RC32334_REG_BASE + 0x0000)
-+#define CPU_IP_ADDR_LATCH (RC32334_REG_BASE + 0x0004)
-+#define CPU_IP_ARBITRATION (RC32334_REG_BASE + 0x0008)
-+#define CPU_IP_BUSERR_CNTL (RC32334_REG_BASE + 0x0010)
-+#define CPU_IP_BUSERR_ADDR (RC32334_REG_BASE + 0x0014)
-+#define CPU_IP_SYSID (RC32334_REG_BASE + 0x0018)
-+
-+/* Memory Controller */
-+#define MEM_BASE_BANK0 (RC32334_REG_BASE + 0x0080)
-+#define MEM_MASK_BANK0 (RC32334_REG_BASE + 0x0084)
-+#define MEM_CNTL_BANK0 (RC32334_REG_BASE + 0x0200)
-+#define MEM_BASE_BANK1 (RC32334_REG_BASE + 0x0088)
-+#define MEM_MASK_BANK1 (RC32334_REG_BASE + 0x008c)
-+#define MEM_CNTL_BANK1 (RC32334_REG_BASE + 0x0204)
-+#define MEM_CNTL_BANK2 (RC32334_REG_BASE + 0x0208)
-+#define MEM_CNTL_BANK3 (RC32334_REG_BASE + 0x020c)
-+#define MEM_CNTL_BANK4 (RC32334_REG_BASE + 0x0210)
-+#define MEM_CNTL_BANK5 (RC32334_REG_BASE + 0x0214)
-+
-+/* PCI Controller */
-+#define PCI_INTR_PEND (RC32334_REG_BASE + 0x05b0)
-+#define PCI_INTR_MASK (RC32334_REG_BASE + 0x05b4)
-+#define PCI_INTR_CLEAR (RC32334_REG_BASE + 0x05b8)
-+#define CPU2PCI_INTR_PEND (RC32334_REG_BASE + 0x05c0)
-+#define CPU2PCI_INTR_MASK (RC32334_REG_BASE + 0x05c4)
-+#define CPU2PCI_INTR_CLEAR (RC32334_REG_BASE + 0x05c8)
-+#define PCI2CPU_INTR_PEND (RC32334_REG_BASE + 0x05d0)
-+#define PCI2CPU_INTR_MASK (RC32334_REG_BASE + 0x05d4)
-+#define PCI2CPU_INTR_CLEAR (RC32334_REG_BASE + 0x05d8)
-+#define PCI_MEM1_BASE (RC32334_REG_BASE + 0x20b0)
-+#define PCI_MEM2_BASE (RC32334_REG_BASE + 0x20b8)
-+#define PCI_MEM3_BASE (RC32334_REG_BASE + 0x20c0)
-+#define PCI_IO1_BASE (RC32334_REG_BASE + 0x20c8)
-+#define PCI_ARBITRATION (RC32334_REG_BASE + 0x20e0)
-+#define PCI_CPU_MEM1_BASE (RC32334_REG_BASE + 0x20e8)
-+#define PCI_CPU_IO_BASE (RC32334_REG_BASE + 0x2100)
-+#define PCI_CFG_CNTL (RC32334_REG_BASE + 0x2cf8)
-+#define PCI_CFG_DATA (RC32334_REG_BASE + 0x2cfc)
-+
-+/* Timers */
-+#define TIMER0_CNTL (RC32334_REG_BASE + 0x0700)
-+#define TIMER0_COUNT (RC32334_REG_BASE + 0x0704)
-+#define TIMER0_COMPARE (RC32334_REG_BASE + 0x0708)
-+#define TIMER_REG_OFFSET 0x10
-+
-+/* Programmable I/O */
-+#define PIO_DATA0 (RC32334_REG_BASE + 0x0600)
-+#define PIO_DATA1 (RC32334_REG_BASE + 0x0610)
-+
-+/*
-+ * DMA
-+ *
-+ * NOTE: DMA_IO is a trick for non linear RC32300_IO_DMA stuff
-+ *
-+ * DMA0: 18001400
-+ * DMA1: 18001440
-+ * DMA2: 18001900
-+ * DMA3: 18001940
-+ * NB: dma number must be immediate value or variable.
-+ * It MUST NOT be a function since it would get called twice!
-+ */
-+#define DMA_IO(n) (((n)>1?0x500:0)+((n)&1?0x40:0))
-+
-+#define RC32300_IO_DMA(n) (RC32334_REG_BASE + 0x1400 + DMA_IO(n))
-+#define RC32300_DMA_CONFREG(n) RC32300_IO_DMA(n)
-+#define RC32300_DMA_BASEREG(n) (RC32300_IO_DMA(n)+0x4)
-+
-+#define RC32300_DMA_CURRREG(n) (RC32300_IO_DMA(n)+0x8)
-+#define RC32300_DMA_STATREG(n) (RC32300_IO_DMA(n)+0x10)
-+#define RC32300_DMA_SRCREG(n) (RC32300_IO_DMA(n)+0x14)
-+#define RC32300_DMA_DSTREG(n) (RC32300_IO_DMA(n)+0x18)
-+#define RC32300_DMA_NEXTREG(n) (RC32300_IO_DMA(n)+0x1c)
-+
-+#define RC32300_DMA_IRQ(n) (GROUP7_IRQ_BASE+5*(n))
-+
-+/* Expansion Interrupt Controller */
-+#define IC_GROUP0_PEND (RC32334_REG_BASE + 0x0500)
-+#define IC_GROUP0_MASK (RC32334_REG_BASE + 0x0504)
-+#define IC_GROUP0_CLEAR (RC32334_REG_BASE + 0x0508)
-+#define IC_GROUP_OFFSET 0x10
-+
-+#define NUM_INTR_GROUPS 15
-+/*
-+ * The IRQ mapping is as follows:
-+ *
-+ * IRQ Mapped To
-+ * --- -------------------
-+ * 0 SW0 (IP0) SW0 intr
-+ * 1 SW1 (IP1) SW1 intr
-+ * 2 Int0 (IP2) board-specific
-+ * 3 Int1 (IP3) board-specific
-+ * 4 Int2 (IP4) board-specific
-+ * - Int3 (IP5) not used, mapped to IRQ's 8 and up
-+ * 6 Int4 (IP6) board-specific
-+ * 7 Int5 (IP7) CP0 Timer
-+ *
-+ * IRQ's 8 and up are all mapped to Int3 (IP5), which
-+ * internally on the RC32334 is routed to the Expansion
-+ * Interrupt Controller.
-+ */
-+#define MIPS_CPU_TIMER_IRQ 7
-+
-+#define GROUP1_IRQ_BASE 8 // bus error
-+#define GROUP2_IRQ_BASE (GROUP1_IRQ_BASE + 1) // PIO active low
-+#define GROUP3_IRQ_BASE (GROUP2_IRQ_BASE + 12) // PIO active high
-+#define GROUP4_IRQ_BASE (GROUP3_IRQ_BASE + 8) // Timer Rollovers
-+#define GROUP5_IRQ_BASE (GROUP4_IRQ_BASE + 8) // UART0
-+#define GROUP6_IRQ_BASE (GROUP5_IRQ_BASE + 3) // UART1
-+#define GROUP7_IRQ_BASE (GROUP6_IRQ_BASE + 3) // DMA Ch0
-+#define GROUP8_IRQ_BASE (GROUP7_IRQ_BASE + 5) // DMA Ch1
-+#define GROUP9_IRQ_BASE (GROUP8_IRQ_BASE + 5) // DMA Ch2
-+#define GROUP10_IRQ_BASE (GROUP9_IRQ_BASE + 5) // DMA Ch3
-+#define GROUP11_IRQ_BASE (GROUP10_IRQ_BASE + 5) // PCI Ctlr errors
-+#define GROUP12_IRQ_BASE (GROUP11_IRQ_BASE + 4) // PCI Satellite Mode
-+#define GROUP13_IRQ_BASE (GROUP12_IRQ_BASE + 16) // PCI to CPU Mailbox
-+#define GROUP14_IRQ_BASE (GROUP13_IRQ_BASE + 4) // SPI
-+
-+#define RC32334_NR_IRQS (GROUP14_IRQ_BASE + 1)
-+
-+/* 16550 UARTs */
-+#ifdef __MIPSEB__
-+#define RC32300_UART0_BASE (RC32334_REG_BASE + 0x0803)
-+#define RC32300_UART1_BASE (RC32334_REG_BASE + 0x0823)
-+#else
-+#define RC32300_UART0_BASE (RC32334_REG_BASE + 0x0800)
-+#define RC32300_UART1_BASE (RC32334_REG_BASE + 0x0820)
-+#endif
-+
-+#define RC32300_UART0_IRQ GROUP5_IRQ_BASE
-+#define RC32300_UART1_IRQ GROUP6_IRQ_BASE
-+
-+#define IDT_CLOCK_MULT 2
-+
-+/* NVRAM */
-+#define NVRAM_BASE 0x12000000
-+#define NVRAM_ENVSIZE_OFF 4
-+#define NVRAM_ENVSTART_OFF 0x40
-+
-+/* LCD 4-digit display */
-+#define LCD_CLEAR 0x14000400
-+#define LCD_DIGIT0 0x1400000f
-+#define LCD_DIGIT1 0x14000008
-+#define LCD_DIGIT2 0x14000007
-+#define LCD_DIGIT3 0x14000003
-+
-+/* Interrupts routed on 79S334A board (see rc32334.h) */
-+#define RC32334_SCC8530_IRQ 2
-+#define RC32334_PCI_INTA_IRQ 3
-+#define RC32334_PCI_INTB_IRQ 4
-+#define RC32334_PCI_INTC_IRQ 6
-+#define RC32334_PCI_INTD_IRQ 7
-+
-+#define RAM_SIZE (32*1024*1024)
-+
-+#endif // __IDT_RC32334_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32355_dma.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32355_dma.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32355_dma.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32355_dma.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,206 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * DMA controller defines on IDT RC32355
-+ *
-+ * Copyright 2004 IDT Inc.
-+ * Author: Integrated Device Technology Inc. rischelp@idt.com
-+ *
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ * May 2004 rkt
-+ * Initial Release
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef BANYAN_DMA_H
-+#define BANYAN_DMA_H
-+#include <asm/idt-boards/rc32300/rc32300.h>
-+
-+/*
-+ * An image of one RC32355 dma channel registers
-+ */
-+typedef struct {
-+ u32 dmac;
-+ u32 dmas;
-+ u32 dmasm;
-+ u32 dmadptr;
-+ u32 dmandptr;
-+} rc32355_dma_ch_t;
-+
-+/*
-+ * An image of all RC32355 dma channel registers
-+ */
-+typedef struct {
-+ rc32355_dma_ch_t ch[16];
-+} rc32355_dma_regs_t;
-+
-+
-+#define rc32355_dma_regs ((rc32355_dma_regs_t*)KSEG1ADDR(RC32355_DMA_BASE))
-+
-+
-+/* DMAC register layout */
-+
-+#define DMAC_RUN 0x1 /* Halts processing when cleared */
-+#define DMAC_DM 0x2 /* Done Mask, ignore DMA events */
-+#define DMAC_MODE_MASK 0xC /* DMA operating mode */
-+
-+#define DMAC_MODE_AUTO 0x0 /* DMA Auto Request Mode */
-+#define DMAC_MODE_BURST 0x4 /* DMA Burst Request Mode */
-+#define DMAC_MODE_TFER 0x8 /* DMA Transfer Request Mode */
-+
-+/* DMAS and DMASM register layout */
-+
-+#define DMAS_F 0x01 /* Finished */
-+#define DMAS_D 0x02 /* Done */
-+#define DMAS_C 0x04 /* Chain */
-+#define DMAS_E 0x08 /* Error */
-+#define DMAS_H 0x10 /* Halt */
-+
-+/* Polling count for DMAS_H bit in DMAS register after halting DMA */
-+#define DMA_HALT_TIMEOUT 500
-+
-+
-+static inline int rc32355_halt_dma(rc32355_dma_ch_t* ch)
-+{
-+ int timeout=1;
-+
-+ if (local_readl(&ch->dmac) & DMAC_RUN) {
-+ local_writel(0, &ch->dmac);
-+ for (timeout = DMA_HALT_TIMEOUT; timeout > 0; timeout--) {
-+ if (local_readl(&ch->dmas) & DMAS_H) {
-+ local_writel(0, &ch->dmas);
-+ break;
-+ }
-+ }
-+ }
-+
-+ return timeout ? 0 : 1;
-+}
-+
-+static inline void rc32355_start_dma(rc32355_dma_ch_t* ch, u32 dma_addr)
-+{
-+ local_writel(0, &ch->dmandptr);
-+ local_writel(dma_addr, &ch->dmadptr);
-+}
-+
-+static inline void rc32355_chain_dma(rc32355_dma_ch_t* ch, u32 dma_addr)
-+{
-+ local_writel(dma_addr, &ch->dmandptr);
-+}
-+
-+
-+/* The following can be used to describe DMA channels 0 to 15, and the */
-+/* sub device's needed to select them in the DMADESC_DS_MASK field */
-+
-+#define DMA_CHAN_ATM01 0 /* ATM interface 0,1 chan */
-+
-+#define DMA_CHAN_ATM0IN 0 /* ATM interface 0 input */
-+#define DMA_DEV_ATM0IN 0 /* ATM interface 0 input */
-+
-+#define DMA_CHAN_ATM1IN 0 /* ATM interface 1 input */
-+#define DMA_DEV_ATM1IN 1 /* ATM interface 1 input */
-+
-+#define DMA_CHAN_ATM0OUT 0 /* ATM interface 0 output */
-+#define DMA_DEV_ATM0OUT 2 /* ATM interface 0 output */
-+
-+#define DMA_CHAN_ATM1OUT 0 /* ATM interface 1 output */
-+#define DMA_DEV_ATM1OUT 3 /* ATM interface 1 output */
-+
-+/* for entry in {0,1,2,3,4,5,6,7} - note 5,6,7 share with those below */
-+#define DMA_CHAN_ATMVCC(entry) ((entry)+1) /* ATM VC cache entry */
-+#define DMA_DEV_ATMVCC(entry) 0
-+
-+#define DMA_CHAN_MEMTOMEM 6 /* Memory to memory DMA */
-+#define DMA_DEV_MEMTOMEM 1 /* Memory to memory DMA */
-+
-+#define DMA_CHAN_ATMFMB0 7 /* ATM Frame Mode Buffer 0 */
-+#define DMA_DEV_ATMFMB0 1 /* ATM Frame Mode Buffer 0 */
-+
-+#define DMA_CHAN_ATMFMB1 8 /* ATM Frame Mode Buffer 1 */
-+#define DMA_DEV_ATMFMB1 1 /* ATM Frame Mode Buffer 1 */
-+
-+#define DMA_CHAN_ETHERIN 9 /* Ethernet input */
-+#define DMA_DEV_ETHERIN 0 /* Ethernet input */
-+
-+#define DMA_CHAN_ETHEROUT 10 /* Ethernet output */
-+#define DMA_DEV_ETHEROUT 0 /* Ethernet output */
-+
-+#define DMA_CHAN_TDMIN 11 /* TDM Bus input */
-+#define DMA_DEV_TDMIN 0 /* TDM Bus input */
-+
-+#define DMA_CHAN_TDMOUT 12 /* TDM Bus output */
-+#define DMA_DEV_TDMOUT 0 /* TDM Bus output */
-+
-+#define DMA_CHAN_USBIN 13 /* USB input */
-+#define DMA_DEV_USBIN 0 /* USB input */
-+
-+#define DMA_CHAN_USBOUT 14 /* USB output */
-+#define DMA_DEV_USBOUT 0 /* USB output */
-+
-+#define DMA_CHAN_EXTERN 15 /* External DMA */
-+#define DMA_DEV_EXTERN 0 /* External DMA */
-+
-+/*
-+ * An RC32355 dma descriptor in system memory
-+ */
-+typedef struct {
-+ u32 cmdstat; /* control and status */
-+ u32 curr_addr; /* current address of data */
-+ u32 devcs; /* peripheral-specific control and status */
-+ u32 link; /* link to next descriptor */
-+} rc32355_dma_desc_t;
-+
-+/* Values for the descriptor cmdstat word */
-+
-+#define DMADESC_F 0x80000000u /* Finished bit */
-+#define DMADESC_D 0x40000000u /* Done bit */
-+#define DMADESC_T 0x20000000u /* Terminated bit */
-+#define DMADESC_IOD 0x10000000u /* Interrupt On Done */
-+#define DMADESC_IOF 0x08000000u /* Interrupt On Finished */
-+#define DMADESC_COD 0x04000000u /* Chain On Done */
-+#define DMADESC_COF 0x02000000u /* Chain On Finished */
-+
-+#define DMADESC_DEVCMD_MASK 0x01C00000u /* Device Command mask */
-+#define DMADESC_DEVCMD_SHIFT 22 /* Device Command shift */
-+
-+#define DMADESC_DS_MASK 0x00300000u /* Device Select mask */
-+#define DMADESC_DS_SHIFT 20 /* Device Select shift */
-+
-+#define DMADESC_COUNT_MASK 0x0003FFFFu /* Byte Count mask */
-+#define DMADESC_COUNT_SHIFT 0 /* Byte Count shift */
-+
-+#define IS_DMA_FINISHED(X) ( ( (X) & DMADESC_F ) >> 31) /* F Bit */
-+#define IS_DMA_DONE(X) ( ( (X) & DMADESC_D ) >> 30) /* D Bit */
-+#define IS_DMA_TERMINATED(X) ( ( (X) & DMADESC_T ) >> 29) /* T Bit */
-+#define IS_DMA_USED(X) (((X) & (DMADESC_F | DMADESC_D | DMADESC_T)) != 0)
-+
-+#define DMA_DEVCMD(devcmd) \
-+ (((devcmd) << DMADESC_DEVCMD_SHIFT) & DMADESC_DS_MASK)
-+#define DMA_DS(ds) \
-+ (((ds) << DMADESC_DS_SHIFT) & DMADESC_DS_MASK)
-+#define DMA_COUNT(count) \
-+ ((count) & DMADESC_COUNT_MASK)
-+
-+#endif /* RC32355_DMA_H */
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32355_eth.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32355_eth.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32355_eth.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32355_eth.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,442 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Ethernet registers on IDT RC32355
-+ *
-+ * Copyright 2004 IDT Inc.
-+ * Author: Integrated Device Technology Inc. rischelp@idt.com
-+ *
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ * May 2004 rkt
-+ * Initial Release
-+ *
-+ **************************************************************************
-+ */
-+
-+
-+#ifndef RC32355_ETHER_H
-+#define RC32355_ETHER_H
-+
-+#include <asm/idt-boards/rc32300/rc32355_dma.h>
-+
-+/*
-+ * A partial image of the RC32355 ethernet registers
-+ */
-+typedef struct {
-+ u32 ethintfc;
-+ u32 ethfifott;
-+ u32 etharc;
-+ u32 ethhash0;
-+ u32 ethhash1;
-+ u32 ethfifost;
-+ u32 ethfifos;
-+ u32 ethodeops;
-+ u32 ethis;
-+ u32 ethos;
-+ u32 ethmcp;
-+ u32 _u1;
-+ u32 ethid;
-+ u32 _u2;
-+ u32 _u3;
-+ u32 _u4;
-+ u32 ethod;
-+ u32 _u5;
-+ u32 _u6;
-+ u32 _u7;
-+ u32 ethodeop;
-+ u32 _u8[43];
-+ u32 ethsal0;
-+ u32 ethsah0;
-+ u32 ethsal1;
-+ u32 ethsah1;
-+ u32 ethsal2;
-+ u32 ethsah2;
-+ u32 ethsal3;
-+ u32 ethsah3;
-+ u32 ethrbc;
-+ u32 ethrpc;
-+ u32 ethrupc;
-+ u32 ethrfc;
-+ u32 ethtbc;
-+ u32 ethgpf;
-+ u32 _u9[50];
-+ u32 ethmac1;
-+ u32 ethmac2;
-+ u32 ethipgt;
-+ u32 ethipgr;
-+ u32 ethclrt;
-+ u32 ethmaxf;
-+ u32 _u10;
-+ u32 ethmtest;
-+ u32 miimcfg;
-+ u32 miimcmd;
-+ u32 miimaddr;
-+ u32 miimwtd;
-+ u32 miimrdd;
-+ u32 miimind;
-+ u32 _u11;
-+ u32 _u12;
-+ u32 ethcfsa0;
-+ u32 ethcfsa1;
-+ u32 ethcfsa2;
-+} rc32355_eth_regs_t;
-+
-+#define rc32355_eth_regs ((rc32355_eth_regs_t*)KSEG1ADDR(RC32355_ETH_BASE))
-+
-+#define ETH_INTFC (RC32355_ETH_BASE + 0x000) /* INTerFace Control */
-+#define ETH_FIFOTT (RC32355_ETH_BASE + 0x004) /* FIFO Transmit Threshold */
-+#define ETH_ARC (RC32355_ETH_BASE + 0x008) /* Address Recognition Ctrl */
-+#define ETH_HASH0 (RC32355_ETH_BASE + 0x00C) /* 32 multicast Hash bits */
-+#define ETH_HASH1 (RC32355_ETH_BASE + 0x010) /* another 32 Hash bits */
-+#define ETH_FIFOST (RC32355_ETH_BASE + 0x014) /* FIFO Status Threshold */
-+#define ETH_FIFOS (RC32355_ETH_BASE + 0x018) /* FIFO Status Register */
-+#define ETH_ODEOPS (RC32355_ETH_BASE + 0x01C) /* Out Data End-Of-Pkt Size */
-+#define ETH_IS (RC32355_ETH_BASE + 0x020) /* Input Status */
-+#define ETH_OS (RC32355_ETH_BASE + 0x024) /* Output Status */
-+#define ETH_MCP (RC32355_ETH_BASE + 0x028) /* Managemt Clock Prescaler */
-+#define ETH_ID (RC32355_ETH_BASE + 0x030) /* Input Data register */
-+#define ETH_OD (RC32355_ETH_BASE + 0x040) /* Output Data register */
-+#define ETH_ODEOP (RC32355_ETH_BASE + 0x050) /* OD End-Of-Packet Size */
-+
-+/* for n in { 0, 1, 2, 3 } */
-+#define ETH_SAL(n) (RC32355_ETH_BASE + 0x100 + (n * 8)) /* Stn Address 2-5 */
-+#define ETH_SAH(n) (RC32355_ETH_BASE + 0x104 + (n * 8)) /* Stn Address 0-1 */
-+
-+#define ETH_RBC (RC32355_ETH_BASE + 0x120) /* Receive Byte Count */
-+#define ETH_RPC (RC32355_ETH_BASE + 0x124) /* Receive Packet Count */
-+#define ETH_RUPC (RC32355_ETH_BASE + 0x128) /* Rx Undersized Pkt count */
-+#define ETH_RFC (RC32355_ETH_BASE + 0x12C) /* Receive Fragment Count */
-+#define ETH_TBC (RC32355_ETH_BASE + 0x130) /* Transmit Byte Count */
-+#define ETH_GPF (RC32355_ETH_BASE + 0x134) /* Generate Pause Frame */
-+#define ETH_MAC1 (RC32355_ETH_BASE + 0x200) /* Medium Access Control 1 */
-+#define ETH_MAC2 (RC32355_ETH_BASE + 0x204) /* Medium Access Control 2 */
-+#define ETH_IPGT (RC32355_ETH_BASE + 0x208) /* Back-to-back InterPkt Gap */
-+#define ETH_IPGR (RC32355_ETH_BASE + 0x20C) /* Non " InterPkt Gap */
-+#define ETH_CLRT (RC32355_ETH_BASE + 0x210) /* Collis'n Window and Retry */
-+#define ETH_MAXF (RC32355_ETH_BASE + 0x214) /* Maximum Frame Length */
-+#define ETH_MTEST (RC32355_ETH_BASE + 0x21C) /* MAC Test */
-+
-+#define ETHMIIM_CFG (RC32355_ETH_BASE + 0x220) /* MII Mgmt Configuration */
-+#define ETHMIIM_CMD (RC32355_ETH_BASE + 0x224) /* MII Mgmt Command */
-+#define ETHMIIM_ADDR (RC32355_ETH_BASE + 0x228) /* MII Mgmt Address */
-+#define ETHMIIM_WTD (RC32355_ETH_BASE + 0x22C) /* MII Mgmt Write Data */
-+#define ETHMIIM_RDD (RC32355_ETH_BASE + 0x230) /* MII Mgmt Read Data */
-+#define ETHMIIM_IND (RC32355_ETH_BASE + 0x234) /* MII Mgmt Indicators */
-+
-+/* for n in { 0, 1, 2 } */
-+#define ETH_CFSA(n) (RC32355_ETH_BASE + 0x240 + ((n) * 4)) /* Station Addr */
-+
-+
-+/*
-+ * Register Interpretations follow
-+ */
-+
-+/******************************************************************************
-+ * ETHINTFC register
-+ *****************************************************************************/
-+
-+#define ETHERINTFC_EN (1<<0)
-+#define ETHERINTFC_ITS (1<<1)
-+#define ETHERINTFC_RES (1<<2)
-+#define ETHERINTFC_RIP (1<<2)
-+#define ETHERINTFC_JAM (1<<3)
-+
-+/******************************************************************************
-+ * ETHFIFOTT register
-+ *****************************************************************************/
-+
-+#define ETHERFIFOTT_TTH(v) (((v)&0x3f)<<0)
-+
-+/******************************************************************************
-+ * ETHARC register
-+ *****************************************************************************/
-+
-+#define ETHERARC_PRO (1<<0)
-+#define ETHERARC_AM (1<<1)
-+#define ETHERARC_AFM (1<<2)
-+#define ETHERARC_AB (1<<3)
-+
-+/******************************************************************************
-+ * ETHHASH registers
-+ *****************************************************************************/
-+
-+#define ETHERHASH0(v) (((v)&0xffff)<<0)
-+#define ETHERHASH1(v) (((v)&0xffff)<<0)
-+
-+/******************************************************************************
-+ * ETHSA registers
-+ *****************************************************************************/
-+
-+#define ETHERSAL0(v) (((v)&0xffff)<<0)
-+#define ETHERSAL1(v) (((v)&0xffff)<<0)
-+#define ETHERSAL2(v) (((v)&0xffff)<<0)
-+#define ETHERSAL3(v) (((v)&0xffff)<<0)
-+#define ETHERSAH0(v) (((v)&0xff)<<0)
-+#define ETHERSAH1(v) (((v)&0xff)<<0)
-+#define ETHERSAH2(v) (((v)&0xff)<<0)
-+#define ETHERSAH3(v) (((v)&0xff)<<0)
-+
-+/******************************************************************************
-+ * ETHFIFOST register
-+ *****************************************************************************/
-+
-+#define ETHERFIFOST_IRTH(v) (((v)&0x3f)<<0)
-+#define ETHERFIFOST_ORTH(v) (((v)&0x3f)<<16)
-+
-+/******************************************************************************
-+ * ETHFIFOS register
-+ *****************************************************************************/
-+
-+#define ETHERFIFOS_IR (1<<0)
-+#define ETHERFIFOS_OR (1<<1)
-+#define ETHERFIFOS_OVR (1<<2)
-+#define ETHERFIFOS_UND (1<<3)
-+
-+/******************************************************************************
-+ * DATA registers
-+ *****************************************************************************/
-+
-+#define ETHERID(v) (((v)&0xffff)<<0)
-+#define ETHEROD(v) (((v)&0xffff)<<0)
-+
-+/******************************************************************************
-+ * ETHODEOPS register
-+ *****************************************************************************/
-+
-+#define ETHERODEOPS_SIZE(v) (((v)&0x3)<<0)
-+
-+/******************************************************************************
-+ * ETHODEOP register
-+ *****************************************************************************/
-+
-+#define ETHERODEOP(v) (((v)&0xffff)<<0)
-+
-+/******************************************************************************
-+ * ETHIS register
-+ *****************************************************************************/
-+
-+#define ETHERIS_EOP (1<<0)
-+#define ETHERIS_ROK (1<<2)
-+#define ETHERIS_FM (1<<3)
-+#define ETHERIS_MP (1<<4)
-+#define ETHERIS_BP (1<<5)
-+#define ETHERIS_VLT (1<<6)
-+#define ETHERIS_CF (1<<7)
-+#define ETHERIS_OVR (1<<8)
-+#define ETHERIS_CRC (1<<9)
-+#define ETHERIS_CV (1<<10)
-+#define ETHERIS_DB (1<<11)
-+#define ETHERIS_LE (1<<12)
-+#define ETHERIS_LOR (1<<13)
-+#define ETHERIS_SIZE(v) (((v)&0x3)<<14)
-+#define ETHERIS_LENGTH(v) (((v)&0xff)<<16)
-+
-+/******************************************************************************
-+ * ETHOS register
-+ *****************************************************************************/
-+
-+#define ETHEROS_T (1<<0)
-+#define ETHEROS_TOK (1<<6)
-+#define ETHEROS_MP (1<<7)
-+#define ETHEROS_BP (1<<8)
-+#define ETHEROS_UND (1<<9)
-+#define ETHEROS_OF (1<<10)
-+#define ETHEROS_ED (1<<11)
-+#define ETHEROS_EC (1<<12)
-+#define ETHEROS_LC (1<<13)
-+#define ETHEROS_TD (1<<14)
-+#define ETHEROS_CRC (1<<15)
-+#define ETHEROS_LE (1<<16)
-+#define ETHEROS_CC(v) (((v)&0xf)<<17)
-+#define ETHEROS_PFD (1<<21)
-+
-+/******************************************************************************
-+ * Statistics registers
-+ *****************************************************************************/
-+
-+#define ETHERRBC(v) (((v)&0xffff)<<0)
-+#define ETHERRPC(v) (((v)&0xffff)<<0)
-+#define ETHERRUPC(v) (((v)&0xffff)<<0)
-+#define ETHERRFC(v) (((v)&0xffff)<<0)
-+#define ETHERTBC(v) (((v)&0xffff)<<0)
-+
-+/******************************************************************************
-+ * ETHGPF register
-+ *****************************************************************************/
-+
-+#define ETHERGPF_PTV(v) (((v)&0xff)<<0)
-+
-+/******************************************************************************
-+ * MAC registers
-+ *****************************************************************************/
-+//ETHMAC1
-+#define ETHERMAC1_RE (1<<0)
-+#define ETHERMAC1_PAF (1<<1)
-+#define ETHERMAC1_RFC (1<<2)
-+#define ETHERMAC1_TFC (1<<3)
-+#define ETHERMAC1_LB (1<<4)
-+#define ETHERMAC1_MR (1<<15)
-+
-+//ETHMAC2
-+#define ETHERMAC2_FD (1<<0)
-+#define ETHERMAC2_FLC (1<<1)
-+#define ETHERMAC2_HFE (1<<2)
-+#define ETHERMAC2_DC (1<<3)
-+#define ETHERMAC2_CEN (1<<4)
-+#define ETHERMAC2_PE (1<<5)
-+#define ETHERMAC2_VPE (1<<6)
-+#define ETHERMAC2_APE (1<<7)
-+#define ETHERMAC2_PPE (1<<8)
-+#define ETHERMAC2_LPE (1<<9)
-+#define ETHERMAC2_NB (1<<12)
-+#define ETHERMAC2_BP (1<<13)
-+#define ETHERMAC2_ED (1<<14)
-+
-+//ETHIPGT
-+#define ETHERIPGT(v) (((v)&0x3f)<<0)
-+
-+//ETHIPGR
-+#define ETHERIPGR_IPGR1(v) (((v)&0x3f)<<0)
-+#define ETHERIPGR_IPGR2(v) (((v)&0x3f)<<8)
-+
-+//ETHCLRT
-+#define ETHERCLRT_MAXRET(v) (((v)&0x3f)<<0)
-+#define ETHERCLRT_COLWIN(v) (((v)&0x3f)<<8)
-+
-+//ETHMAXF
-+#define ETHERMAXF(v) (((v)&0x3f)<<0)
-+
-+//ETHMTEST
-+#define ETHERMTEST_TB (1<<2)
-+
-+//ETHMCP
-+#define ETHERMCP_DIV(v) (((v)&0xff)<<0)
-+
-+//MIIMCFG
-+#define ETHERMIIMCFG_CS(v) (((v)&0x3)<<2)
-+#define ETHERMIIMCFG_R (1<<15)
-+
-+//MIIMCMD
-+#define ETHERMIIMCMD_RD (1<<0)
-+#define ETHERMIIMCMD_SCN (1<<1)
-+
-+//MIIMADDR
-+#define ETHERMIIMADDR_REGADDR(v) (((v)&0x1f)<<0)
-+#define ETHERMIIMADDR_PHYADDR(v) (((v)&0x1f)<<8)
-+
-+//MIIMWTD
-+#define ETHERMIIMWTD(v) (((v)&0xff)<<0)
-+
-+//MIIMRDD
-+#define ETHERMIIMRDD(v) (((v)&0xff)<<0)
-+
-+//MIIMIND
-+#define ETHERMIIMIND_BSY (1<<0)
-+#define ETHERMIIMIND_SCN (1<<1)
-+#define ETHERMIIMIND_NV (1<<2)
-+
-+//DMA DEVCS IN
-+#define ETHERDMA_IN_LENGTH(v) (((v)&0xffff)<<16)
-+#define ETHERDMA_IN_CES (1<<14)
-+#define ETHERDMA_IN_LOR (1<<13)
-+#define ETHERDMA_IN_LE (1<<12)
-+#define ETHERDMA_IN_DB (1<<11)
-+#define ETHERDMA_IN_CV (1<<10)
-+#define ETHERDMA_IN_CRC (1<<9)
-+#define ETHERDMA_IN_OVR (1<<8)
-+#define ETHERDMA_IN_CF (1<<7)
-+#define ETHERDMA_IN_VLT (1<<6)
-+#define ETHERDMA_IN_BP (1<<5)
-+#define ETHERDMA_IN_MP (1<<4)
-+#define ETHERDMA_IN_FM (1<<3)
-+#define ETHERDMA_IN_ROK (1<<2)
-+#define ETHERDMA_IN_LD (1<<1)
-+#define ETHERDMA_IN_FD (1<<0)
-+
-+//DMA DEVCS OUT
-+#define ETHERDMA_OUT_CC(v) (((v)&0xf)<<17)
-+#define ETHERDMA_OUT_CNT 0x001e0000
-+#define ETHERDMA_OUT_SHFT 17
-+#define ETHERDMA_OUT_LE (1<<16)
-+
-+#define ETHERDMA_OUT_CRC (1<<15)
-+#define ETHERDMA_OUT_TD (1<<14)
-+#define ETHERDMA_OUT_LC (1<<13)
-+#define ETHERDMA_OUT_EC (1<<12)
-+#define ETHERDMA_OUT_ED (1<<11)
-+#define ETHERDMA_OUT_OF (1<<10)
-+#define ETHERDMA_OUT_UND (1<<9)
-+#define ETHERDMA_OUT_BP (1<<8)
-+#define ETHERDMA_OUT_MP (1<<7)
-+#define ETHERDMA_OUT_TOK (1<<6)
-+#define ETHERDMA_OUT_HEN (1<<5)
-+#define ETHERDMA_OUT_CEN (1<<4)
-+#define ETHERDMA_OUT_PEN (1<<3)
-+#define ETHERDMA_OUT_OEN (1<<2)
-+#define ETHERDMA_OUT_LD (1<<1)
-+#define ETHERDMA_OUT_FD (1<<0)
-+
-+#define RCV_ERRS \
-+ (ETHERDMA_IN_OVR | ETHERDMA_IN_CRC | ETHERDMA_IN_CV | ETHERDMA_IN_LE)
-+#define TX_ERRS \
-+ (ETHERDMA_OUT_LC | ETHERDMA_OUT_EC | ETHERDMA_OUT_ED | \
-+ ETHERDMA_OUT_OF | ETHERDMA_OUT_UND)
-+
-+#define IS_RCV_ROK(X) (((X) & (1<<2)) >> 2) /* Receive Okay */
-+#define IS_RCV_FM(X) (((X) & (1<<3)) >> 3) /* Is Filter Match */
-+#define IS_RCV_MP(X) (((X) & (1<<4)) >> 4) /* Is it MP */
-+#define IS_RCV_BP(X) (((X) & (1<<5)) >> 5) /* Is it BP */
-+#define IS_RCV_VLT(X) (((X) & (1<<6)) >> 6) /* VLAN Tag Detect */
-+#define IS_RCV_CF(X) (((X) & (1<<7)) >> 7) /* Control Frame */
-+#define IS_RCV_OVR_ERR(X) (((X) & (1<<8)) >> 8) /* Receive Overflow */
-+#define IS_RCV_CRC_ERR(X) (((X) & (1<<9)) >> 9) /* CRC Error */
-+#define IS_RCV_CV_ERR(X) (((X) & (1<<10))>>10) /* Code Violation */
-+#define IS_RCV_DB_ERR(X) (((X) & (1<<11))>>11) /* Dribble Bits */
-+#define IS_RCV_LE_ERR(X) (((X) & (1<<12))>>12) /* Length error */
-+#define IS_RCV_LOR_ERR(X) (((X) & (1<<13))>>13) /* Length Out of
-+ Range */
-+#define IS_RCV_CES_ERR(X) (((X) & (1<<14))>>14) /* Preamble error */
-+#define RCVPKT_LENGTH(X) (((X) & 0xFFFF0000)>>16) /* Length of the
-+ received packet */
-+
-+#define IS_TX_TOK(X) (((X) & (1<<6) ) >> 6 ) /* Transmit Okay */
-+#define IS_TX_MP(X) (((X) & (1<<7) ) >> 7 ) /* Multicast */
-+
-+#define IS_TX_BP(X) (((X) & (1<<8) ) >> 8 ) /* Broadcast */
-+#define IS_TX_UND_ERR(X) (((X) & (1<<9) ) >> 9 ) /* Transmit FIFO
-+ Underflow */
-+#define IS_TX_OF_ERR(X) (((X) & (1<<10)) >>10 ) /* Oversized frame */
-+#define IS_TX_ED_ERR(X) (((X) & (1<<11)) >>11 ) /* Excessive
-+ deferral */
-+#define IS_TX_EC_ERR(X) (((X) & (1<<12)) >>12 ) /* Excessive
-+ collisions */
-+#define IS_TX_LC_ERR(X) (((X) & (1<<13)) >>13 ) /* Late Collision */
-+#define IS_TX_TD_ERR(X) (((X) & (1<<14)) >>14 ) /* Transmit deferred*/
-+#define IS_TX_CRC_ERR(X) (((X) & (1<<15)) >>15 ) /* CRC Error */
-+#define IS_TX_LE_ERR(X) (((X) & (1<<16)) >>16 ) /* Length Error */
-+
-+#define TX_COLLISION_COUNT(X) (((X) & 0x001E0000u)>>17) /* Collision Count */
-+
-+#endif /* RC32355_ETHER_H */
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32355.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32355.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32355.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32355.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,177 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Definitions for IDT RC32355 CPU.
-+ *
-+ * Copyright 2004 IDT Inc.
-+ * Author: Integrated Device Technology Inc. rischelp@idt.com
-+ *
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ * May 2004 rkt
-+ * Initial Release
-+ *
-+ **************************************************************************
-+ */
-+
-+
-+#ifndef _RC32355_H_
-+#define _RC32355_H_
-+
-+#include <linux/delay.h>
-+#include <asm/io.h>
-+
-+/* Base address of internal registers */
-+#define RC32355_REG_BASE 0x18000000
-+
-+/* System ID Registers */
-+#define CPU_SYSID (RC32355_REG_BASE + 0x00018)
-+#define CPU_BTADDR (RC32355_REG_BASE + 0x0001c)
-+#define CPU_REV (RC32355_REG_BASE + 0x0002c)
-+
-+/* Reset Controller */
-+#define RESET_CNTL (RC32355_REG_BASE + 0x08000)
-+
-+/* Device Controller */
-+#define DEV0_BASE (RC32355_REG_BASE + 0x10000)
-+#define DEV0_MASK (RC32355_REG_BASE + 0x10004)
-+#define DEV0_CNTL (RC32355_REG_BASE + 0x10008)
-+#define DEV0_TIMING (RC32355_REG_BASE + 0x1000c)
-+#define DEV_REG_OFFSET 0x10
-+
-+/* SDRAM Controller */
-+#define SDRAM0_BASE (RC32355_REG_BASE + 0x18000)
-+#define SDRAM0_MASK (RC32355_REG_BASE + 0x18004)
-+#define SDRAM1_BASE (RC32355_REG_BASE + 0x18008)
-+#define SDRAM1_MASK (RC32355_REG_BASE + 0x1800c)
-+#define SDRAM_CNTL (RC32355_REG_BASE + 0x18010)
-+
-+/* Bus Arbiter */
-+#define BUS_ARB_CNTL0 (RC32355_REG_BASE + 0x20000)
-+#define BUS_ARB_CNTL1 (RC32355_REG_BASE + 0x20004)
-+
-+/* Counters/Timers */
-+#define TIMER0_COUNT (RC32355_REG_BASE + 0x28000)
-+#define TIMER0_COMPARE (RC32355_REG_BASE + 0x28004)
-+#define TIMER0_CNTL (RC32355_REG_BASE + 0x28008)
-+#define TIMER_REG_OFFSET 0x0C
-+
-+/* System Integrity */
-+
-+/* Interrupt Controller */
-+#define IC_GROUP0_PEND (RC32355_REG_BASE + 0x30000)
-+#define IC_GROUP0_MASK (RC32355_REG_BASE + 0x30004)
-+#define IC_GROUP_OFFSET 0x08
-+
-+#define NUM_INTR_GROUPS 5
-+/*
-+ * The IRQ mapping is as follows:
-+ *
-+ * IRQ Mapped To
-+ * --- -------------------
-+ * 0 SW0 (IP0) SW0 intr
-+ * 1 SW1 (IP1) SW1 intr
-+ * - Int0 (IP2) mapped to GROUP0_IRQ_BASE
-+ * - Int1 (IP3) mapped to GROUP1_IRQ_BASE
-+ * - Int2 (IP4) mapped to GROUP2_IRQ_BASE
-+ * - Int3 (IP5) mapped to GROUP3_IRQ_BASE
-+ * - Int4 (IP6) mapped to GROUP4_IRQ_BASE
-+ * 7 Int5 (IP7) CP0 Timer
-+ *
-+ * IRQ's 8 and up are all mapped to Int0-4 (IP2-IP6), which
-+ * internally on the RC32355 is routed to the Expansion
-+ * Interrupt Controller.
-+ */
-+#define MIPS_CPU_TIMER_IRQ 7
-+
-+#define GROUP0_IRQ_BASE 8 // Counter/Timers, UCW
-+#define GROUP1_IRQ_BASE (GROUP0_IRQ_BASE + 32) // DMA
-+#define GROUP2_IRQ_BASE (GROUP1_IRQ_BASE + 32) // ATM
-+#define GROUP3_IRQ_BASE (GROUP2_IRQ_BASE + 32) // TDM, Eth, USB, UARTs, I2C
-+#define GROUP4_IRQ_BASE (GROUP3_IRQ_BASE + 32) // GPIO
-+
-+#define RC32355_NR_IRQS (GROUP4_IRQ_BASE + 32)
-+
-+/* DMA - see rc32355_dma.h for full list of registers */
-+
-+#define RC32355_DMA_BASE (RC32355_REG_BASE + 0x38000)
-+#define DMA_CHAN_OFFSET 0x14
-+
-+/* GPIO Controller */
-+
-+/* TDM Bus */
-+
-+/* 16550 UARTs */
-+#ifdef __MIPSEB__
-+#define RC32300_UART0_BASE (RC32355_REG_BASE + 0x50003)
-+#define RC32300_UART1_BASE (RC32355_REG_BASE + 0x50023)
-+#else
-+#define RC32300_UART0_BASE (RC32355_REG_BASE + 0x50000)
-+#define RC32300_UART1_BASE (RC32355_REG_BASE + 0x50020)
-+#endif
-+
-+#define RC32300_UART0_IRQ (GROUP3_IRQ_BASE + 14)
-+#define RC32300_UART1_IRQ (GROUP3_IRQ_BASE + 17)
-+
-+/* ATM */
-+
-+/* Ethernet - see rc32355_eth.h for full list of registers */
-+
-+#define RC32355_ETH_BASE (RC32355_REG_BASE + 0x60000)
-+
-+
-+#define IDT_CLOCK_MULT 2
-+
-+/* Memory map of 79EB355 board */
-+
-+/* DRAM */
-+#define RAM_BASE 0x00000000
-+#define RAM_SIZE (32*1024*1024)
-+
-+/* SRAM (device 1) */
-+#define SRAM_BASE 0x02000000
-+#define SRAM_SIZE 0x00100000
-+
-+/* FLASH (device 2) */
-+#define FLASH_BASE 0x0C000000
-+#define FLASH_SIZE 0x00C00000
-+
-+/* ATM PHY (device 4) */
-+#define ATM_PHY_BASE 0x14000000
-+
-+/* TDM switch (device 3) */
-+#define TDM_BASE 0x1A000000
-+
-+/* LCD panel (device 3) */
-+#define LCD_BASE 0x1A002000
-+
-+/* RTC (DS1511W) (device 3) */
-+#define RTC_BASE 0x1A004000
-+
-+/* NVRAM (256 bytes internal to the DS1511 RTC) */
-+#define NVRAM_ADDR RTC_BASE + 0x10
-+#define NVRAM_DATA RTC_BASE + 0x13
-+#define NVRAM_ENVSIZE_OFF 4
-+#define NVRAM_ENVSTART_OFF 32
-+
-+#endif /* _RC32355_H_ */
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_dma.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_dma.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_dma.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_dma.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,226 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * RC32365/336 DMA hardware abstraction.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32365_DMA_H__
-+#define __IDT_RC32365_DMA_H__
-+
-+enum
-+{
-+ DMA0_PhysicalAddress = 0x18038000,
-+ DMA_PhysicalAddress = DMA0_PhysicalAddress, // Default
-+
-+ DMA0_VirtualAddress = 0xb8038000,
-+ DMA_VirtualAddress = DMA0_VirtualAddress, // Default
-+} ;
-+
-+/*
-+ * DMA descriptor (in physical memory).
-+ */
-+
-+typedef struct DMAD_s
-+{
-+ u32 control ; // Control. use DMAD_*
-+ u32 ca ; // Current Address.
-+ u32 devcs ; // Device control and status.
-+ u32 link ; // Next descriptor in chain.
-+} volatile *DMAD_t ;
-+
-+enum
-+{
-+ DMAD_size = sizeof (struct DMAD_s),
-+ DMAD_count_b = 0, // in DMAD_t -> control
-+ DMAD_count_m = 0x0003ffff, // in DMAD_t -> control
-+ DMAD_ds_b = 20, // in DMAD_t -> control
-+ DMAD_ds_m = 0x00300000, // in DMAD_t -> control
-+ DMAD_ds_extToMem0_v = 0,
-+ DMAD_ds_memToExt0_v = 1,
-+ DMAD_ds_extToMem1_v = 0,
-+ DMAD_ds_memToExt1_v = 1,
-+ DMAD_ds_ethRcv0_v = 0,
-+ DMAD_ds_ethXmt0_v = 0,
-+ DMAD_ds_ethRcv1_v = 0,
-+ DMAD_ds_ethXmt2_v = 0,
-+ DMAD_ds_memToFifo_v = 0,
-+ DMAD_ds_fifoToMem_v = 0,
-+ DMAD_ds_rng_de_v = 1,//randomNumberGenerator on LC/DE
-+ DMAD_ds_pciToMem_v = 0,
-+ DMAD_ds_memToPci_v = 0,
-+ DMAD_ds_securityInput_v = 0,
-+ DMAD_ds_securityOutput_v = 0,
-+ DMAD_ds_rng_se_v = 0,//randomNumberGenerator on SE
-+
-+ DMAD_devcmd_b = 22, // in DMAD_t -> control
-+ DMAD_devcmd_m = 0x01c00000, // in DMAD_t -> control
-+ DMAD_devcmd_byte_v = 0, //memory-to-memory
-+ DMAD_devcmd_halfword_v = 1, //memory-to-memory
-+ DMAD_devcmd_word_v = 2, //memory-to-memory
-+ DMAD_devcmd_2words_v = 3, //memory-to-memory
-+ DMAD_devcmd_4words_v = 4, //memory-to-memory
-+ DMAD_devcmd_6words_v = 5, //memory-to-memory
-+ DMAD_devcmd_8words_v = 6, //memory-to-memory
-+ DMAD_devcmd_16words_v = 7, //memory-to-memory
-+ DMAD_cof_b = 25, // chain on finished
-+ DMAD_cof_m = 0x02000000, //
-+ DMAD_cod_b = 26, // chain on done
-+ DMAD_cod_m = 0x04000000, //
-+ DMAD_iof_b = 27, // interrupt on finished
-+ DMAD_iof_m = 0x08000000, //
-+ DMAD_iod_b = 28, // interrupt on done
-+ DMAD_iod_m = 0x10000000, //
-+ DMAD_t_b = 29, // terminated
-+ DMAD_t_m = 0x20000000, //
-+ DMAD_d_b = 30, // done
-+ DMAD_d_m = 0x40000000, //
-+ DMAD_f_b = 31, // finished
-+ DMAD_f_m = 0x80000000, //
-+} ;
-+
-+/*
-+ * DMA register (within Internal Register Map).
-+ */
-+
-+struct DMA_Chan_s
-+{
-+ u32 dmac ; // Control.
-+ u32 dmas ; // Status.
-+ u32 dmasm ; // Mask.
-+ u32 dmadptr ; // Descriptor pointer.
-+ u32 dmandptr ; // Next descriptor pointer.
-+};
-+
-+typedef struct DMA_Chan_s volatile *DMA_Chan_t ;
-+
-+//DMA_Channels use DMACH_count instead
-+
-+enum
-+{
-+ DMAC_run_b = 0, //
-+ DMAC_run_m = 0x00000001, //
-+ DMAC_dm_b = 1, // done mask
-+ DMAC_dm_m = 0x00000002, //
-+ DMAC_mode_b = 2, //
-+ DMAC_mode_m = 0x0000000c, //
-+ DMAC_mode_auto_v = 0,
-+ DMAC_mode_burst_v = 1,
-+ DMAC_mode_transfer_v = 2, //usually used
-+ DMAC_mode_reserved_v = 3,
-+ DMAC_a_b = 4, //
-+ DMAC_a_m = 0x00000010, //
-+
-+ DMAS_f_b = 0, // finished (sticky)
-+ DMAS_f_m = 0x00000001, //
-+ DMAS_d_b = 1, // done (sticky)
-+ DMAS_d_m = 0x00000002, //
-+ DMAS_c_b = 2, // chain (sticky)
-+ DMAS_c_m = 0x00000004, //
-+ DMAS_e_b = 3, // error (sticky)
-+ DMAS_e_m = 0x00000008, //
-+ DMAS_h_b = 4, // halt (sticky)
-+ DMAS_h_m = 0x00000010, //
-+
-+ DMASM_f_b = 0, // finished (1=mask)
-+ DMASM_f_m = 0x00000001, //
-+ DMASM_d_b = 1, // done (1=mask)
-+ DMASM_d_m = 0x00000002, //
-+ DMASM_c_b = 2, // chain (1=mask)
-+ DMASM_c_m = 0x00000004, //
-+ DMASM_e_b = 3, // error (1=mask)
-+ DMASM_e_m = 0x00000008, //
-+ DMASM_h_b = 4, // halt (1=mask)
-+ DMASM_h_m = 0x00000010, //
-+} ;
-+
-+/*
-+ * DMA channel definitions
-+ */
-+
-+enum
-+{
-+ DMACH_ethRcv0 = 0,
-+ DMACH_ethXmt0 = 1,
-+ DMACH_ethRcv1 = 2,
-+ DMACH_ethXmt2 = 3,
-+ DMACH_pciToMem = 4,
-+ DMACH_memToPci = 5,
-+ DMACH_securityInput = 6,
-+ DMACH_securityOutput = 7,
-+ DMACH_rng = 8,
-+
-+ DMACH_count //must be last
-+};
-+
-+
-+typedef struct DMAC_s
-+{
-+ struct DMA_Chan_s ch [DMACH_count] ; //use ch[DMACH_]
-+} volatile *DMA_t ;
-+
-+
-+/*
-+ * External DMA parameters
-+*/
-+
-+enum
-+{
-+ DMADEVCMD_ts_b = 0, // ts field in devcmd
-+ DMADEVCMD_ts_m = 0x00000007, // ts field in devcmd
-+ DMADEVCMD_ts_byte_v = 0,
-+ DMADEVCMD_ts_halfword_v = 1,
-+ DMADEVCMD_ts_word_v = 2,
-+ DMADEVCMD_ts_2word_v = 3,
-+ DMADEVCMD_ts_4word_v = 4,
-+ DMADEVCMD_ts_6word_v = 5,
-+ DMADEVCMD_ts_8word_v = 6,
-+ DMADEVCMD_ts_16word_v = 7
-+};
-+
-+
-+#if 1 // aws - Compatibility.
-+# define EXTDMA_ts_b DMADEVCMD_ts_b
-+# define EXTDMA_ts_m DMADEVCMD_ts_m
-+# define EXTDMA_ts_byte_v DMADEVCMD_ts_byte_v
-+# define EXTDMA_ts_halfword_v DMADEVCMD_ts_halfword_v
-+# define EXTDMA_ts_word_v DMADEVCMD_ts_word_v
-+# define EXTDMA_ts_2word_v DMADEVCMD_ts_2word_v
-+# define EXTDMA_ts_4word_v DMADEVCMD_ts_4word_v
-+# define EXTDMA_ts_6word_v DMADEVCMD_ts_6word_v
-+# define EXTDMA_ts_8word_v DMADEVCMD_ts_8word_v
-+# define EXTDMA_ts_16word_v DMADEVCMD_ts_16word_v
-+#endif // aws - Compatibility.
-+
-+#endif // __IDT_RC32365_DMA_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,86 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * RC32365/336 DMA interface routines.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32365_DMA_V_H__
-+#define __IDT_RC32365_DMA_V_H__
-+
-+
-+#include <asm/idt-boards/rc32300/rc32300.h>
-+#include <asm/idt-boards/rc32300/rc32365_dma.h>
-+#include <asm/idt-boards/rc32300/rc32365.h>
-+
-+#define DMA_CHAN_OFFSET 0x14
-+#define IS_DMA_USED(X) (((X) & (DMAD_f_m | DMAD_d_m | DMAD_t_m)) != 0)
-+#define IS_DMA_FINISHED(X) (((X) & (DMAD_f_m)) != 0)
-+#define IS_DMA_DONE(X) (((X) & (DMAD_d_m)) != 0)
-+
-+#define DMA_COUNT(count) \
-+ ((count) & DMAD_count_m)
-+
-+#define DMA_HALT_TIMEOUT 500
-+
-+static inline int rc32365_halt_dma(DMA_Chan_t ch)
-+{
-+ int timeout=1;
-+ if (local_readl(&ch->dmac) & DMAC_run_m) {
-+ local_writel(0, &ch->dmac);
-+
-+ for (timeout = DMA_HALT_TIMEOUT; timeout > 0; timeout--) {
-+ if (local_readl(&ch->dmas) & DMAS_h_m) {
-+ local_writel(0, &ch->dmas);
-+ break;
-+ }
-+ }
-+
-+ }
-+
-+ return timeout ? 0 : 1;
-+}
-+
-+
-+static inline void rc32365_start_dma(DMA_Chan_t ch, u32 dma_addr)
-+{
-+ local_writel(0, &ch->dmandptr);
-+ local_writel(dma_addr, &ch->dmadptr);
-+}
-+
-+static inline void rc32365_chain_dma(DMA_Chan_t ch, u32 dma_addr)
-+{
-+ local_writel(dma_addr, &ch->dmandptr);
-+}
-+#endif //__IDT_RC32365_DMA_V_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_eth.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_eth.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_eth.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_eth.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,344 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * RC32365/336 Ethernet hardware abstraction.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32365_ETH_H__
-+#define __IDT_RC32365_ETH_H__
-+
-+enum
-+{
-+ ETH0_PhysicalAddress = 0x18058000,
-+ ETH_PhysicalAddress = ETH0_PhysicalAddress, // Default
-+ ETH0_VirtualAddress = 0xb8058000,
-+
-+ ETH_VirtualAddress = ETH0_VirtualAddress, // Default
-+
-+ ETH1_PhysicalAddress = 0x18060000,
-+ ETH1_VirtualAddress = 0xb8060000, // Default
-+} ;
-+
-+typedef struct
-+{
-+ u32 ethintfc ;
-+ u32 ethfifott ;
-+ u32 etharc ;
-+ u32 ethhash0 ;
-+ u32 ethhash1 ;
-+ u32 ethu0 [4] ; // Reserved.
-+ u32 ethpfs ;
-+ u32 ethmcp ;
-+ u32 eth_u1 [10] ; // Reserved.
-+ u32 ethspare ;
-+ u32 eth_u2 [42] ; // Reserved.
-+ u32 ethsal0 ;
-+ u32 ethsah0 ;
-+ u32 ethsal1 ;
-+ u32 ethsah1 ;
-+ u32 ethsal2 ;
-+ u32 ethsah2 ;
-+ u32 ethsal3 ;
-+ u32 ethsah3 ;
-+ u32 ethrbc ;
-+ u32 ethrpc ;
-+ u32 ethrupc ;
-+ u32 ethrfc ;
-+ u32 ethtbc ;
-+ u32 ethgpf ;
-+ u32 eth_u9 [50] ; // Reserved.
-+ u32 ethmac1 ;
-+ u32 ethmac2 ;
-+ u32 ethipgt ;
-+ u32 ethipgr ;
-+ u32 ethclrt ;
-+ u32 ethmaxf ;
-+ u32 eth_u10 ; // Reserved.
-+ u32 ethmtest ;
-+ u32 miimcfg ;
-+ u32 miimcmd ;
-+ u32 miimaddr ;
-+ u32 miimwtd ;
-+ u32 miimrdd ;
-+ u32 miimind ;
-+ u32 eth_u11 ; // Reserved.
-+ u32 eth_u12 ; // Reserved.
-+ u32 ethcfsa0 ;
-+ u32 ethcfsa1 ;
-+ u32 ethcfsa2 ;
-+} volatile *ETH_t;
-+
-+enum
-+{
-+ ETHINTFC_en_b = 0,
-+ ETHINTFC_en_m = 0x00000001,
-+ ETHINTFC_its_b = 1,
-+ ETHINTFC_its_m = 0x00000002,
-+ ETHINTFC_rip_b = 2,
-+ ETHINTFC_rip_m = 0x00000004,
-+ ETHINTFC_jam_b = 3,
-+ ETHINTFC_jam_m = 0x00000008,
-+ ETHINTFC_ovr_b = 4,
-+ ETHINTFC_ovr_m = 0x00000010,
-+ ETHINTFC_und_b = 5,
-+ ETHINTFC_und_m = 0x00000020,
-+
-+ ETHFIFOTT_tth_b = 0,
-+ ETHFIFOTT_tth_m = 0x0000007f,
-+
-+ ETHARC_pro_b = 0,
-+ ETHARC_pro_m = 0x00000001,
-+ ETHARC_am_b = 1,
-+ ETHARC_am_m = 0x00000002,
-+ ETHARC_afm_b = 2,
-+ ETHARC_afm_m = 0x00000004,
-+ ETHARC_ab_b = 3,
-+ ETHARC_ab_m = 0x00000008,
-+
-+ ETHSAL_byte5_b = 0,
-+ ETHSAL_byte5_m = 0x000000ff,
-+ ETHSAL_byte4_b = 8,
-+ ETHSAL_byte4_m = 0x0000ff00,
-+ ETHSAL_byte3_b = 16,
-+ ETHSAL_byte3_m = 0x00ff0000,
-+ ETHSAL_byte2_b = 24,
-+ ETHSAL_byte2_m = 0xff000000,
-+
-+ ETHSAH_byte1_b = 0,
-+ ETHSAH_byte1_m = 0x000000ff,
-+ ETHSAH_byte0_b = 8,
-+ ETHSAH_byte0_m = 0x0000ff00,
-+
-+ ETHGPF_ptv_b = 0,
-+ ETHGPF_ptv_m = 0x0000ffff,
-+
-+ ETHPFS_pfd_b = 0,
-+ ETHPFS_pfd_m = 0x00000001,
-+
-+ ETHCFSA0_cfsa4_b = 0,
-+ ETHCFSA0_cfsa4_m = 0x000000ff,
-+ ETHCFSA0_cfsa5_b = 8,
-+ ETHCFSA0_cfsa5_m = 0x0000ff00,
-+
-+ ETHCFSA1_cfsa2_b = 0,
-+ ETHCFSA1_cfsa2_m = 0x000000ff,
-+ ETHCFSA1_cfsa3_b = 8,
-+ ETHCFSA1_cfsa3_m = 0x0000ff00,
-+
-+ ETHCFSA2_cfsa0_b = 0,
-+ ETHCFSA2_cfsa0_m = 0x000000ff,
-+ ETHCFSA2_cfsa1_b = 8,
-+ ETHCFSA2_cfsa1_m = 0x0000ff00,
-+
-+ ETHMAC1_re_b = 0,
-+ ETHMAC1_re_m = 0x00000001,
-+ ETHMAC1_paf_b = 1,
-+ ETHMAC1_paf_m = 0x00000002,
-+ ETHMAC1_rfc_b = 2,
-+ ETHMAC1_rfc_m = 0x00000004,
-+ ETHMAC1_tfc_b = 3,
-+ ETHMAC1_tfc_m = 0x00000008,
-+ ETHMAC1_lb_b = 4,
-+ ETHMAC1_lb_m = 0x00000010,
-+ ETHMAC1_mr_b = 31,
-+ ETHMAC1_mr_m = 0x80000000,
-+
-+ ETHMAC2_fd_b = 0,
-+ ETHMAC2_fd_m = 0x00000001,
-+ ETHMAC2_flc_b = 1,
-+ ETHMAC2_flc_m = 0x00000002,
-+ ETHMAC2_hfe_b = 2,
-+ ETHMAC2_hfe_m = 0x00000004,
-+ ETHMAC2_dc_b = 3,
-+ ETHMAC2_dc_m = 0x00000008,
-+ ETHMAC2_cen_b = 4,
-+ ETHMAC2_cen_m = 0x00000010,
-+ ETHMAC2_pe_b = 5,
-+ ETHMAC2_pe_m = 0x00000020,
-+ ETHMAC2_vpe_b = 6,
-+ ETHMAC2_vpe_m = 0x00000040,
-+ ETHMAC2_ape_b = 7,
-+ ETHMAC2_ape_m = 0x00000080,
-+ ETHMAC2_ppe_b = 8,
-+ ETHMAC2_ppe_m = 0x00000100,
-+ ETHMAC2_lpe_b = 9,
-+ ETHMAC2_lpe_m = 0x00000200,
-+ ETHMAC2_nb_b = 12,
-+ ETHMAC2_nb_m = 0x00001000,
-+ ETHMAC2_bp_b = 13,
-+ ETHMAC2_bp_m = 0x00002000,
-+ ETHMAC2_ed_b = 14,
-+ ETHMAC2_ed_m = 0x00004000,
-+
-+ ETHIPGT_ipgt_b = 0,
-+ ETHIPGT_ipgt_m = 0x0000007f,
-+
-+ ETHIPGR_ipgr2_b = 0,
-+ ETHIPGR_ipgr2_m = 0x0000007f,
-+ ETHIPGR_ipgr1_b = 8,
-+ ETHIPGR_ipgr1_m = 0x00007f00,
-+
-+ ETHCLRT_maxret_b = 0,
-+ ETHCLRT_maxret_m = 0x0000000f,
-+ ETHCLRT_colwin_b = 8,
-+ ETHCLRT_colwin_m = 0x00003f00,
-+
-+ ETHMAXF_maxf_b = 0,
-+ ETHMAXF_maxf_m = 0x0000ffff,
-+
-+ ETHMTEST_tb_b = 2,
-+ ETHMTEST_tb_m = 0x00000004,
-+
-+ ETHMCP_div_b = 0,
-+ ETHMCP_div_m = 0x000000ff,
-+
-+ MIIMCFG_rsv_b = 0,
-+ MIIMCFG_rsv_m = 0x0000000c,
-+
-+ MIIMCMD_rd_b = 0,
-+ MIIMCMD_rd_m = 0x00000001,
-+ MIIMCMD_scn_b = 1,
-+ MIIMCMD_scn_m = 0x00000002,
-+
-+ MIIMADDR_regaddr_b = 0,
-+ MIIMADDR_regaddr_m = 0x0000001f,
-+ MIIMADDR_phyaddr_b = 8,
-+ MIIMADDR_phyaddr_m = 0x00001f00,
-+
-+ MIIMWTD_wdata_b = 0,
-+ MIIMWTD_wdata_m = 0x0000ffff,
-+
-+ MIIMRDD_rdata_b = 0,
-+ MIIMRDD_rdata_m = 0x0000ffff,
-+
-+ MIIMIND_bsy_b = 0,
-+ MIIMIND_bsy_m = 0x00000001,
-+ MIIMIND_scn_b = 1,
-+ MIIMIND_scn_m = 0x00000002,
-+ MIIMIND_nv_b = 2,
-+ MIIMIND_nv_m = 0x00000004,
-+
-+} ;
-+
-+/*
-+ * Values for the DEVCS field of the Ethernet DMA Rx and Tx descriptors.
-+ */
-+enum
-+{
-+ ETHRX_fd_b = 0,
-+ ETHRX_fd_m = 0x00000001,
-+ ETHRX_ld_b = 1,
-+ ETHRX_ld_m = 0x00000002,
-+ ETHRX_rok_b = 2,
-+ ETHRX_rok_m = 0x00000004,
-+ ETHRX_fm_b = 3,
-+ ETHRX_fm_m = 0x00000008,
-+ ETHRX_mp_b = 4,
-+ ETHRX_mp_m = 0x00000010,
-+ ETHRX_bp_b = 5,
-+ ETHRX_bp_m = 0x00000020,
-+ ETHRX_vlt_b = 6,
-+ ETHRX_vlt_m = 0x00000040,
-+ ETHRX_cf_b = 7,
-+ ETHRX_cf_m = 0x00000080,
-+ ETHRX_ovr_b = 8,
-+ ETHRX_ovr_m = 0x00000100,
-+ ETHRX_crc_b = 9,
-+ ETHRX_crc_m = 0x00000200,
-+ ETHRX_cv_b = 10,
-+ ETHRX_cv_m = 0x00000400,
-+ ETHRX_db_b = 11,
-+ ETHRX_db_m = 0x00000800,
-+ ETHRX_le_b = 12,
-+ ETHRX_le_m = 0x00001000,
-+ ETHRX_lor_b = 13,
-+ ETHRX_lor_m = 0x00002000,
-+ ETHRX_ces_b = 14,
-+ ETHRX_ces_m = 0x00004000,
-+ ETHRX_length_b = 16,
-+ ETHRX_length_m = 0xffff0000,
-+
-+ ETHTX_fd_b = 0,
-+ ETHTX_fd_m = 0x00000001,
-+ ETHTX_ld_b = 1,
-+ ETHTX_ld_m = 0x00000002,
-+ ETHTX_oen_b = 2,
-+ ETHTX_oen_m = 0x00000004,
-+ ETHTX_pen_b = 3,
-+ ETHTX_pen_m = 0x00000008,
-+ ETHTX_cen_b = 4,
-+ ETHTX_cen_m = 0x00000010,
-+ ETHTX_hen_b = 5,
-+ ETHTX_hen_m = 0x00000020,
-+ ETHTX_tok_b = 6,
-+ ETHTX_tok_m = 0x00000040,
-+ ETHTX_mp_b = 7,
-+ ETHTX_mp_m = 0x00000080,
-+ ETHTX_bp_b = 8,
-+ ETHTX_bp_m = 0x00000100,
-+ ETHTX_und_b = 9,
-+ ETHTX_und_m = 0x00000200,
-+ ETHTX_of_b = 10,
-+ ETHTX_of_m = 0x00000400,
-+ ETHTX_ed_b = 11,
-+ ETHTX_ed_m = 0x00000800,
-+ ETHTX_ec_b = 12,
-+ ETHTX_ec_m = 0x00001000,
-+ ETHTX_lc_b = 13,
-+ ETHTX_lc_m = 0x00002000,
-+ ETHTX_td_b = 14,
-+ ETHTX_td_m = 0x00004000,
-+ ETHTX_crc_b = 15,
-+ ETHTX_crc_m = 0x00008000,
-+ ETHTX_le_b = 16,
-+ ETHTX_le_m = 0x00010000,
-+ ETHTX_cc_b = 17,
-+ ETHTX_cc_m = 0x001E0000,
-+} ;
-+
-+enum
-+{
-+ ETH0_IPABMC_PhysicalAddress = 0x18040010,
-+ ETH0_IPABMC_VirtualAddress = 0xb8040000,
-+ ETH1_IPABMC_PhysicalAddress = 0x18040018,
-+ ETH1_IPABMC_VirtualAddress = 0xb8040018,
-+} ;
-+
-+typedef struct
-+{
-+ u32 ipabmcrx ;
-+ u32 ipabmctx ;
-+}volatile *IPABM_ETH_t;
-+#endif //__IDT_RC32365_ETH_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,72 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * RC32365/336 Ethernet status checking.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32365_ETH_V_H__
-+#define __IDT_RC32365_ETH_V_H__
-+#include <asm/idt-boards/rc32300/rc32365_eth.h>
-+
-+#define IS_TX_TOK(X) (((X) & (1<<ETHTX_tok_b)) >> ETHTX_tok_b ) /* Transmit Okay */
-+#define IS_TX_MP(X) (((X) & (1<<ETHTX_mp_b)) >> ETHTX_mp_b ) /* Multicast */
-+#define IS_TX_BP(X) (((X) & (1<<ETHTX_bp_b)) >> ETHTX_bp_b ) /* Broadcast */
-+#define IS_TX_UND_ERR(X) (((X) & (1<<ETHTX_und_b)) >> ETHTX_und_b ) /* Transmit FIFO Underflow */
-+#define IS_TX_OF_ERR(X) (((X) & (1<<ETHTX_of_b)) >> ETHTX_of_b ) /* Oversized frame */
-+#define IS_TX_ED_ERR(X) (((X) & (1<<ETHTX_ed_b)) >> ETHTX_ed_b ) /* Excessive deferral */
-+#define IS_TX_EC_ERR(X) (((X) & (1<<ETHTX_ec_b)) >> ETHTX_ec_b) /* Excessive collisions */
-+#define IS_TX_LC_ERR(X) (((X) & (1<<ETHTX_lc_b)) >> ETHTX_lc_b ) /* Late Collision */
-+#define IS_TX_TD_ERR(X) (((X) & (1<<ETHTX_td_b)) >> ETHTX_td_b ) /* Transmit deferred*/
-+#define IS_TX_CRC_ERR(X) (((X) & (1<<ETHTX_crc_b)) >> ETHTX_crc_b ) /* CRC Error */
-+#define IS_TX_LE_ERR(X) (((X) & (1<<ETHTX_le_b)) >> ETHTX_le_b ) /* Length Error */
-+
-+#define TX_COLLISION_COUNT(X) (((X) & ETHTX_cc_m)>>ETHTX_cc_b) /* Collision Count */
-+
-+#define IS_RCV_ROK(X) (((X) & (1<<ETHRX_rok_b)) >> ETHRX_rok_b) /* Receive Okay */
-+#define IS_RCV_FM(X) (((X) & (1<<ETHRX_fm_b)) >> ETHRX_fm_b) /* Is Filter Match */
-+#define IS_RCV_MP(X) (((X) & (1<<ETHRX_mp_b)) >> ETHRX_mp_b) /* Is it MP */
-+#define IS_RCV_BP(X) (((X) & (1<<ETHRX_bp_b)) >> ETHRX_bp_b) /* Is it BP */
-+#define IS_RCV_VLT(X) (((X) & (1<<ETHRX_vlt_b)) >> ETHRX_vlt_b) /* VLAN Tag Detect */
-+#define IS_RCV_CF(X) (((X) & (1<<ETHRX_cf_b)) >> ETHRX_cf_b) /* Control Frame */
-+#define IS_RCV_OVR_ERR(X) (((X) & (1<<ETHRX_ovr_b)) >> ETHRX_ovr_b) /* Receive Overflow */
-+#define IS_RCV_CRC_ERR(X) (((X) & (1<<ETHRX_crc_b)) >> ETHRX_crc_b) /* CRC Error */
-+#define IS_RCV_CV_ERR(X) (((X) & (1<<ETHRX_cv_b)) >> ETHRX_cv_b) /* Code Violation */
-+#define IS_RCV_DB_ERR(X) (((X) & (1<<ETHRX_db_b)) >> ETHRX_db_b) /* Dribble Bits */
-+#define IS_RCV_LE_ERR(X) (((X) & (1<<ETHRX_le_b)) >> ETHRX_le_b) /* Length error */
-+#define IS_RCV_LOR_ERR(X) (((X) & (1<<ETHRX_lor_b)) >> ETHRX_lor_b) /* Length Out of Range */
-+#define IS_RCV_CES_ERR(X) (((X) & (1<<ETHRX_ces_b)) >> ETHRX_ces_b) /* Preamble error */
-+#define RCVPKT_LENGTH(X) (((X) & ETHRX_length_m) >> ETHRX_length_b) /* Length of the received packet */
-+
-+#endif //__IDT_RC32365_ETH_V_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,181 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * RC32365/336 GPIO hardware abstraction.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32365_GPIO_H__
-+#define __IDT_RC32365_GPIO_H__
-+
-+enum
-+{
-+ GPIO0_PhysicalAddress = 0x18048000,
-+ GPIO_PhysicalAddress = GPIO0_PhysicalAddress, // Default
-+
-+ GPIO0_VirtualAddress = 0xb8048000,
-+ GPIO_VirtualAddress = GPIO0_VirtualAddress, // Default
-+} ;
-+
-+typedef struct
-+{
-+ u32 gpiofunc; /* GPIO Function Register
-+ * gpiofunc[x]==0 bit = gpio
-+ * func[x]==1 bit = altfunc
-+ */
-+ u32 gpiocfg; /* GPIO Configuration Register
-+ * gpiocfg[x]==0 bit = input
-+ * gpiocfg[x]==1 bit = output
-+ */
-+ u32 gpiod; /* GPIO Data Register
-+ * gpiod[x] read/write gpio pinX status
-+ */
-+ u32 gpioilevel; /* GPIO Interrupt Status Register
-+ * interrupt level (see gpioistat)
-+ */
-+ u32 gpioistat; /* Gpio Interrupt Status Register
-+ * istat[x] = (gpiod[x] == level[x])
-+ * cleared in ISR (STICKY bits)
-+ */
-+ u32 gpionmien; /* GPIO Non-maskable Interrupt Enable Register */
-+} volatile * GPIO_t ;
-+
-+typedef enum
-+{
-+ GPIO_gpio_v = 0, // gpiofunc use pin as GPIO.
-+ GPIO_alt_v = 1, // gpiofunc use pin as alt.
-+ GPIO_input_v = 0, // gpiocfg use pin as input.
-+ GPIO_output_v = 1, // gpiocfg use pin as output.
-+ GPIO_pin0_b = 0,
-+ GPIO_pin0_m = 0x00000001,
-+ GPIO_pin1_b = 1,
-+ GPIO_pin1_m = 0x00000002,
-+ GPIO_pin2_b = 2,
-+ GPIO_pin2_m = 0x00000004,
-+ GPIO_pin3_b = 3,
-+ GPIO_pin3_m = 0x00000008,
-+ GPIO_pin4_b = 4,
-+ GPIO_pin4_m = 0x00000010,
-+ GPIO_pin5_b = 5,
-+ GPIO_pin5_m = 0x00000020,
-+ GPIO_pin6_b = 6,
-+ GPIO_pin6_m = 0x00000040,
-+ GPIO_pin7_b = 7,
-+ GPIO_pin7_m = 0x00000080,
-+ GPIO_pin8_b = 8,
-+ GPIO_pin8_m = 0x00000100,
-+ GPIO_pin9_b = 9,
-+ GPIO_pin9_m = 0x00000200,
-+ GPIO_pin10_b = 10,
-+ GPIO_pin10_m = 0x00000400,
-+ GPIO_pin11_b = 11,
-+ GPIO_pin11_m = 0x00000800,
-+ GPIO_pin12_b = 12,
-+ GPIO_pin12_m = 0x00001000,
-+ GPIO_pin13_b = 13,
-+ GPIO_pin13_m = 0x00002000,
-+ GPIO_pin14_b = 14,
-+ GPIO_pin14_m = 0x00004000,
-+ GPIO_pin15_b = 15,
-+ GPIO_pin15_m = 0x00008000,
-+
-+// Alternate function pins. Corrsponding gpiofunc bit set to GPIO_alt_v.
-+
-+ GPIO_u0sout_b = GPIO_pin0_b, // UART 0 serial out.
-+ GPIO_u0sout_m = GPIO_pin0_m,
-+ GPIO_u0sout_cfg_v = GPIO_output_v,
-+
-+ GPIO_u0sinp_b = GPIO_pin1_b, // UART 0 serial in.
-+ GPIO_u0sinp_m = GPIO_pin1_m,
-+ GPIO_u0sinp_cfg_v = GPIO_input_v,
-+
-+ GPIO_maddr22_b = GPIO_pin2_b, // M&P bus bit 22.
-+ GPIO_maddr22_m = GPIO_pin2_m,
-+ GPIO_maddr22_cfg_v = GPIO_output_v,
-+
-+ GPIO_maddr23_b = GPIO_pin3_b, // M&P bus bit 23.
-+ GPIO_maddr23_m = GPIO_pin3_m,
-+ GPIO_maddr23_cfg_v = GPIO_output_v,
-+
-+ GPIO_maddr24_b = GPIO_pin4_b, // M&P bus bit 24.
-+ GPIO_maddr24_m = GPIO_pin4_m,
-+ GPIO_maddr24_cfg_v = GPIO_output_v,
-+
-+ GPIO_maddr25_b = GPIO_pin5_b, // M&P bus bit 25.
-+ GPIO_maddr25_m = GPIO_pin5_m,
-+ GPIO_maddr25_cfg_v = GPIO_output_v,
-+
-+ GPIO_rngclk_b = GPIO_pin6_b, // reserved.
-+ GPIO_rngclk_m = GPIO_pin6_m,
-+ GPIO_rngclk_cfg_v = GPIO_input_v,
-+
-+ GPIO_sdckenp_b = GPIO_pin7_b, // reserved.
-+ GPIO_sdckenp_m = GPIO_pin7_m,
-+ GPIO_sdckenp_cfg_v = GPIO_output_v,
-+
-+ GPIO_cen1_b = GPIO_pin8_b, // reserved.
-+ GPIO_cen1_m = GPIO_pin8_m,
-+ GPIO_cen1_cfg_v = GPIO_output_v,
-+
-+ GPIO_cen2_b = GPIO_pin9_b, // reserved.
-+ GPIO_cen2_m = GPIO_pin9_m,
-+ GPIO_cen2_cfg_v = GPIO_output_v,
-+
-+ GPIO_regn_b = GPIO_pin10_b, // reserved.
-+ GPIO_regn_m = GPIO_pin10_m,
-+ GPIO_regn_cfg_v = GPIO_output_v,
-+
-+ GPIO_iordn_b = GPIO_pin11_b, // reserved.
-+ GPIO_iordn_m = GPIO_pin11_m,
-+ GPIO_iordn_cfg_v = GPIO_output_v,
-+
-+ GPIO_iowrn_b = GPIO_pin12_b, // reserved.
-+ GPIO_iowrn_m = GPIO_pin12_m,
-+ GPIO_iowrn_cfg_v = GPIO_output_v,
-+
-+ GPIO_pcireqn2_b = GPIO_pin13_b, // PCI messaging int.
-+ GPIO_pcireqn2_m = GPIO_pin13_m,
-+ GPIO_pcireqn2_cfg_v = GPIO_input_v,
-+
-+ GPIO_pcigntn2_b = GPIO_pin14_b, // PCI messaging int.
-+ GPIO_pcigntn2_m = GPIO_pin14_m,
-+ GPIO_pcigntn2_cfg_v = GPIO_output_v,
-+
-+ GPIO_pcimuintn_b = GPIO_pin15_b, // PCI messaging int.
-+ GPIO_pcimuintn_m = GPIO_pin15_m,
-+ GPIO_pcimuintn_cfg_v= GPIO_output_v,
-+
-+} GPIO_DEFS_t;
-+
-+#endif //__IDT_RC32365_GPIO_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,91 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Routines to set/clear/toggle GPIO on RC32365
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+#ifndef __IDT_RC32365_GPIO_V_H__
-+#define __IDT_RC32365_GPIO_V_H__
-+
-+
-+#ifdef _LANGUAGE_ASSEMBLY
-+#define SET_GPIO(pin) \
-+ lui t5,0xb804 ; \
-+ ori t5,t5,0x8000 ; \
-+ lw t4,8(t5) ; \
-+ ori t4,t4,pin ; \
-+ sw t4,8(t5) ;
-+
-+#define CLEAR_GPIO(pin) \
-+ lui t5,0xb804 ; \
-+ ori t5,t5,0x8000 ; \
-+ lw t4,8(t5) ; \
-+ lui t6,0xFFFF; \
-+ ori t6,t6,0xFFFF; \
-+ xori t6,t6,pin ; \
-+ and t4,t6 ; \
-+ sw t4,8(t5) ;
-+
-+#define TOGGLE_GPIO(pin) \
-+ lui t5,0xb804 ; \
-+ ori t5,t5,0x8000 ; \
-+ lw t4,8(t5) ; \
-+ xori t4,t4,pin ; \
-+ sw t4,8(t5) ;
-+
-+#else // !_LANGUAGE_ASSEMBLY
-+#include <asm/rc32300/types.h>
-+#include <asm/rc32300/rc32365_gpio.h>
-+#include <asm/rc32300/rc32365.h>
-+
-+static inline void set_gpio(unsigned long pin)
-+{
-+ idt_gpio->gpiod |= pin;
-+}
-+
-+static inline void clear_gpio(unsigned long pin)
-+{
-+ idt_gpio->gpiod &= ~pin;
-+}
-+static inline void toggle_gpio(unsigned long pin)
-+{
-+ idt_gpio->gpiod ^= pin;
-+}
-+#define SET_GPIO(pin) set_gpio(pin)
-+#define CLEAR_GPIO(pin) clear_gpio(pin)
-+#define TOGGLE_GPIO(pin) toggle_gpio(pin)
-+#endif // _LANGUAGE_ASSEMBLY
-+
-+#endif //__IDT_RC32365_GPIO_V_H__
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,160 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Definitions for IDT RC32365 CPU.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32365_H__
-+#define __IDT_RC32365_H__
-+
-+extern unsigned int cedar_za;
-+
-+/* Base address of internal registers */
-+#define RC32365_REG_BASE 0x18000000
-+
-+/* System ID Registers */
-+#define CPU_SYSID (RC32365_REG_BASE + 0x00018)
-+#define CPU_DEVTYPE (RC32365_REG_BASE + 0x0001c)
-+
-+/* Reset Controller */
-+#define RESET_CNTL (RC32365_REG_BASE + 0x08000)
-+#define BOOT_VECTOR (RC32365_REG_BASE + 0x08004)
-+
-+/* Device Controller */
-+#define DEV0_BASE (RC32365_REG_BASE + 0x10000)
-+#define DEV0_MASK (RC32365_REG_BASE + 0x10004)
-+#define DEV0_CNTL (RC32365_REG_BASE + 0x10008)
-+#define DEV0_TIMING (RC32365_REG_BASE + 0x1000c)
-+#define DEV_REG_OFFSET 0x10
-+
-+/* SDRAM Controller */
-+#define SDRAM0_BASE (RC32365_REG_BASE + 0x18000)
-+#define SDRAM0_MASK (RC32365_REG_BASE + 0x18004)
-+#define SDRAM1_BASE (RC32365_REG_BASE + 0x18008)
-+#define SDRAM1_MASK (RC32365_REG_BASE + 0x1800c)
-+#define SDRAM_CNTL (RC32365_REG_BASE + 0x18010)
-+
-+/* Counters/Timers */
-+#define TIMER0_COUNT (RC32365_REG_BASE + 0x20000)
-+#define TIMER0_COMPARE (RC32365_REG_BASE + 0x20004)
-+#define TIMER0_CNTL (RC32365_REG_BASE + 0x20008)
-+#define TIMER0_SELECT (RC32365_REG_BASE + 0x2000c)
-+#define TIMER_REG_OFFSET 0x10
-+
-+/* System Integrity */
-+
-+/* Interrupt Controller */
-+#define IC_GROUP0_PEND (RC32365_REG_BASE + 0x30000)
-+#define IC_GROUP0_TEST (RC32365_REG_BASE + 0x30004)
-+#define IC_GROUP0_MASK (RC32365_REG_BASE + 0x30008)
-+#define IC_GROUP_OFFSET 0x0c
-+
-+#define NUM_INTR_GROUPS 5
-+/*
-+ * The IRQ mapping is as follows:
-+ *
-+ * IRQ Mapped To
-+ * --- -------------------
-+ * 0 SW0 (IP0) SW0 intr
-+ * 1 SW1 (IP1) SW1 intr
-+ * - Int0 (IP2) mapped to GROUP0_IRQ_BASE
-+ * - Int1 (IP3) mapped to GROUP1_IRQ_BASE
-+ * - Int2 (IP4) mapped to GROUP2_IRQ_BASE
-+ * - Int3 (IP5) mapped to GROUP3_IRQ_BASE
-+ * - Int4 (IP6) mapped to GROUP4_IRQ_BASE
-+ * 7 Int5 (IP7) CP0 Timer
-+ *
-+ * IRQ's 8 and up are all mapped to Int0-4 (IP2-IP6), which
-+ * internally on the RC32365 is routed to the Expansion
-+ * Interrupt Controller.
-+ */
-+#define MIPS_CPU_TIMER_IRQ 7
-+
-+#define GROUP0_IRQ_BASE 8 // Counter/Timers, UCW
-+#define GROUP1_IRQ_BASE (GROUP0_IRQ_BASE + 32) // DMA
-+#define GROUP2_IRQ_BASE (GROUP1_IRQ_BASE + 32) // RNG, SEC
-+#define GROUP3_IRQ_BASE (GROUP2_IRQ_BASE + 32) // Eth, PCI, UARTs
-+#define GROUP4_IRQ_BASE (GROUP3_IRQ_BASE + 32) // GPIO
-+
-+#define RC32365_NR_IRQS (GROUP4_IRQ_BASE + 32)
-+
-+/* DMA - see rc32365_dma.h for full list of registers */
-+
-+#define RC32365_DMA_BASE (RC32365_REG_BASE + 0x38000)
-+#define DMA_CHAN_OFFSET 0x14
-+
-+/* GPIO Controller */
-+#define idt_gpio ((volatile GPIO_t) GPIO0_VirtualAddress)
-+
-+/* 16550 UARTs */
-+#ifdef __MIPSEB__
-+#define RC32300_UART0_BASE (RC32365_REG_BASE + 0x50003)
-+#else
-+#define RC32300_UART0_BASE (RC32365_REG_BASE + 0x50000)
-+#endif
-+#define RC32300_UART0_IRQ (GROUP3_IRQ_BASE + 0)
-+
-+/* Ethernet - see rc32365_eth.h for full list of registers */
-+
-+#define RC32365_ETH_BASE (RC32365_REG_BASE + 0x58000)
-+
-+#define IDT_CLOCK_MULT 2
-+
-+/* FLASH (device 1) */
-+#define FLASH_BASE 0x08000000
-+#define FLASH_SIZE 0x00800000
-+
-+/* LCD 4-digit display (device 2) */
-+#define LCD_DIGIT0 0x0C000003
-+#define LCD_DIGIT1 0x0C000002
-+#define LCD_DIGIT2 0x0C000001
-+#define LCD_DIGIT3 0x0C000000
-+
-+/* RTC (DS1553) (device 2) */
-+#define RTC_BASE 0x0c800000
-+/* NVRAM */
-+#define NVRAM_BASE RTC_BASE
-+#define NVRAM_ENVSIZE_OFF 4
-+#define NVRAM_ENVSTART_OFF 32
-+
-+/* Interrupts routed on 79EB365 board */
-+#define RC32365_PCI_INTA_IRQ (GROUP4_IRQ_BASE + 8)
-+#define RC32365_PCI_INTB_IRQ (GROUP4_IRQ_BASE + 9)
-+#define RC32365_PCI_INTC_IRQ (GROUP4_IRQ_BASE + 10)
-+#define RC32365_PCI_INTD_IRQ (GROUP4_IRQ_BASE + 11)
-+
-+#define RAM_SIZE (32 * 1024 * 1024)
-+
-+#endif //__IDT_RC32365_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_pci.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_pci.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_pci.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_pci.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,515 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Datatype declaration for IDT 79EB365/336 PCI
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32365_PCI_H__
-+#define __IDT_RC32365_PCI_H__
-+
-+enum
-+{
-+ PCI0_PhysicalAddress = 0x18068000,
-+ PCI_PhysicalAddress = PCI0_PhysicalAddress,
-+
-+ PCI0_VirtualAddress = 0xb8068000,
-+ PCI_VirtualAddress = PCI0_VirtualAddress,
-+} ;
-+
-+enum
-+{
-+ PCI_LbaCount = 4, // Local base addresses.
-+} ;
-+
-+typedef struct
-+{
-+ u32 a ; // Address.
-+ u32 c ; // Control.
-+ u32 m ; // mapping.
-+} PCI_Map_s ;
-+
-+typedef struct
-+{
-+ u32 pcic ;
-+ u32 pcis ;
-+ u32 pcism ;
-+ u32 pcicfga ;
-+ u32 pcicfgd ;
-+ PCI_Map_s pcilba [PCI_LbaCount] ;
-+ u32 pcidac ;
-+ u32 pcidas ;
-+ u32 pcidasm ;
-+ u32 pcidad ;
-+ u32 pcidma8c ;
-+ u32 pcidma9c ;
-+ u32 pcitc ;
-+} volatile *PCI_t ;
-+
-+// PCI messaging unit.
-+enum
-+{
-+ PCIM_Count = 2,
-+} ;
-+typedef struct
-+{
-+ u32 pciim [PCIM_Count] ;
-+ u32 pciom [PCIM_Count] ;
-+ u32 pciid ;
-+ u32 pciiic ;
-+ u32 pciiim ;
-+ u32 pciiod ;
-+ u32 pciioic ;
-+ u32 pciioim ;
-+} volatile *PCIM_t ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Control Register
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCIC_en_b = 0,
-+ PCIC_en_m = 0x00000001,
-+ PCIC_tnr_b = 1,
-+ PCIC_tnr_m = 0x00000002,
-+ PCIC_sce_b = 2,
-+ PCIC_sce_m = 0x00000004,
-+ PCIC_ien_b = 3,
-+ PCIC_ien_m = 0x00000008,
-+ PCIC_aaa_b = 4,
-+ PCIC_aaa_m = 0x00000010,
-+ PCIC_eap_b = 5,
-+ PCIC_eap_m = 0x00000020,
-+ PCIC_pcim_b = 6,
-+ PCIC_pcim_m = 0x000001c0,
-+ PCIC_pcim_disabled_v = 0,
-+ PCIC_pcim_tnr_v = 1, // Satellite - target not ready
-+ PCIC_pcim_suspend_v = 2, // Satellite - suspended CPU.
-+ PCIC_pcim_extern_v = 3, // Host - external arbiter.
-+ PCIC_pcim_fixed_v = 4, // Host - fixed priority arb.
-+ PCIC_pcim_roundrobin_v = 5, // Host - round robin priority.
-+ PCIC_pcim_reserved6_v = 6,
-+ PCIC_pcim_reserved7_v = 7,
-+ PCIC_igm_b = 9,
-+ PCIC_igm_m = 0x00000200,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Status Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCIS_eed_b = 0,
-+ PCIS_eed_m = 0x00000001,
-+ PCIS_wr_b = 1,
-+ PCIS_wr_m = 0x00000002,
-+ PCIS_nmi_b = 2,
-+ PCIS_nmi_m = 0x00000004,
-+ PCIS_ii_b = 3,
-+ PCIS_ii_m = 0x00000008,
-+ PCIS_cwe_b = 4,
-+ PCIS_cwe_m = 0x00000010,
-+ PCIS_cre_b = 5,
-+ PCIS_cre_m = 0x00000020,
-+ PCIS_mdpe_b = 6,
-+ PCIS_mdpe_m = 0x00000040,
-+ PCIS_sta_b = 7,
-+ PCIS_sta_m = 0x00000080,
-+ PCIS_rta_b = 8,
-+ PCIS_rta_m = 0x00000100,
-+ PCIS_rma_b = 9,
-+ PCIS_rma_m = 0x00000200,
-+ PCIS_sse_b = 10,
-+ PCIS_sse_m = 0x00000400,
-+ PCIS_ose_b = 11,
-+ PCIS_ose_m = 0x00000800,
-+ PCIS_pe_b = 12,
-+ PCIS_pe_m = 0x00001000,
-+ PCIS_tae_b = 13,
-+ PCIS_tae_m = 0x00002000,
-+ PCIS_rle_b = 14,
-+ PCIS_rle_m = 0x00004000,
-+ PCIS_bme_b = 15,
-+ PCIS_bme_m = 0x00008000,
-+ PCIS_prd_b = 16,
-+ PCIS_prd_m = 0x00010000,
-+ PCIS_rip_b = 17,
-+ PCIS_rip_m = 0x00020000,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Status Mask Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCISM_eed_b = 0,
-+ PCISM_eed_m = 0x00000001,
-+ PCISM_wr_b = 1,
-+ PCISM_wr_m = 0x00000002,
-+ PCISM_nmi_b = 2,
-+ PCISM_nmi_m = 0x00000004,
-+ PCISM_ii_b = 3,
-+ PCISM_ii_m = 0x00000008,
-+ PCISM_cwe_b = 4,
-+ PCISM_cwe_m = 0x00000010,
-+ PCISM_cre_b = 5,
-+ PCISM_cre_m = 0x00000020,
-+ PCISM_mdpe_b = 6,
-+ PCISM_mdpe_m = 0x00000040,
-+ PCISM_sta_b = 7,
-+ PCISM_sta_m = 0x00000080,
-+ PCISM_rta_b = 8,
-+ PCISM_rta_m = 0x00000100,
-+ PCISM_rma_b = 9,
-+ PCISM_rma_m = 0x00000200,
-+ PCISM_sse_b = 10,
-+ PCISM_sse_m = 0x00000400,
-+ PCISM_ose_b = 11,
-+ PCISM_ose_m = 0x00000800,
-+ PCISM_pe_b = 12,
-+ PCISM_pe_m = 0x00001000,
-+ PCISM_tae_b = 13,
-+ PCISM_tae_m = 0x00002000,
-+ PCISM_rle_b = 14,
-+ PCISM_rle_m = 0x00004000,
-+ PCISM_bme_b = 15,
-+ PCISM_bme_m = 0x00008000,
-+ PCISM_prd_b = 16,
-+ PCISM_prd_m = 0x00010000,
-+ PCISM_rip_b = 17,
-+ PCISM_rip_m = 0x00020000,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Configuration Address Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCICFGA_reg_b = 2,
-+ PCICFGA_reg_m = 0x000000fc,
-+ PCICFGA_reg_id_v = 0x00>>2, //use PCFGID_
-+ PCICFGA_reg_04_v = 0x04>>2, //use PCFG04_
-+ PCICFGA_reg_08_v = 0x08>>2, //use PCFG08_
-+ PCICFGA_reg_0C_v = 0x0C>>2, //use PCFG0C_
-+ PCICFGA_reg_pba0_v = 0x10>>2, //use PCIPBA_
-+ PCICFGA_reg_pba1_v = 0x14>>2, //use PCIPBA_
-+ PCICFGA_reg_pba2_v = 0x18>>2, //use PCIPBA_
-+ PCICFGA_reg_pba3_v = 0x1c>>2, //use PCIPBA_
-+ PCICFGA_reg_subsystem_v = 0x2c>>2, //use PCFGSS_
-+ PCICFGA_reg_3C_v = 0x3C>>2, //use PCFG3C_
-+ PCICFGA_reg_pba0c_v = 0x44>>2, //use PCIPBAC_
-+ PCICFGA_reg_pba0m_v = 0x48>>2,
-+ PCICFGA_reg_pba1c_v = 0x4c>>2, //use PCIPBAC_
-+ PCICFGA_reg_pba1m_v = 0x50>>2,
-+ PCICFGA_reg_pba2c_v = 0x54>>2, //use PCIPBAC_
-+ PCICFGA_reg_pba2m_v = 0x58>>2,
-+ PCICFGA_reg_pba3c_v = 0x5c>>2, //use PCIPBAC_
-+ PCICFGA_reg_pba3m_v = 0x60>>2,
-+ PCICFGA_reg_pmgt_v = 0x64>>2,
-+ PCICFGA_func_b = 8,
-+ PCICFGA_func_m = 0x00000700,
-+ PCICFGA_dev_b = 11,
-+ PCICFGA_dev_m = 0x0000f800,
-+ PCICFGA_dev_internal_v = 0,
-+ PCICFGA_bus_b = 16,
-+ PCICFGA_bus_m = 0x00ff0000,
-+ PCICFGA_bus_type0_v = 0, //local bus
-+ PCICFGA_en_b = 31, // read only
-+ PCICFGA_en_m = 0x80000000,
-+} ;
-+
-+enum {
-+ PCFGID_vendor_b = 0,
-+ PCFGID_vendor_m = 0x0000ffff,
-+ PCFGID_vendor_IDT_v = 0x111d,
-+ PCFGID_device_b = 16,
-+ PCFGID_device_m = 0xffff0000,
-+ PCFGID_device_Acaciade_v = 0x0207,
-+
-+ PCFG04_command_ioena_b = 1,
-+ PCFG04_command_ioena_m = 0x00000001,
-+ PCFG04_command_memena_b = 2,
-+ PCFG04_command_memena_m = 0x00000002,
-+ PCFG04_command_bmena_b = 3,
-+ PCFG04_command_bmena_m = 0x00000004,
-+ PCFG04_command_mwinv_b = 5,
-+ PCFG04_command_mwinv_m = 0x00000010,
-+ PCFG04_command_parena_b = 7,
-+ PCFG04_command_parena_m = 0x00000040,
-+ PCFG04_command_serrena_b = 9,
-+ PCFG04_command_serrena_m = 0x00000100,
-+ PCFG04_command_fastbbena_b = 10,
-+ PCFG04_command_fastbbena_m = 0x00000200,
-+ PCFG04_status_b = 16,
-+ PCFG04_status_m = 0xffff0000,
-+ PCFG04_status_66MHz_b = 21, // 66 MHz enable
-+ PCFG04_status_66MHz_m = 0x00200000,
-+ PCFG04_status_fbb_b = 23,
-+ PCFG04_status_fbb_m = 0x00800000,
-+ PCFG04_status_mdpe_b = 24,
-+ PCFG04_status_mdpe_m = 0x01000000,
-+ PCFG04_status_dst_b = 25,
-+ PCFG04_status_dst_m = 0x06000000,
-+ PCFG04_status_sta_b = 27,
-+ PCFG04_status_sta_m = 0x08000000,
-+ PCFG04_status_rta_b = 28,
-+ PCFG04_status_rta_m = 0x10000000,
-+ PCFG04_status_rma_b = 29,
-+ PCFG04_status_rma_m = 0x20000000,
-+ PCFG04_status_sse_b = 30,
-+ PCFG04_status_sse_m = 0x40000000,
-+ PCFG04_status_pe_b = 31,
-+ PCFG04_status_pe_m = 0x40000000,
-+
-+ PCFG08_revId_b = 0,
-+ PCFG08_revId_m = 0x000000ff,
-+ PCFG08_classCode_b = 0,
-+ PCFG08_classCode_m = 0xffffff00,
-+ PCFG08_classCode_bridge_v = 06,
-+ PCFG08_classCode_proc_v = 0x0b3000, // processor-MIPS
-+ PCFG0C_cacheline_b = 0,
-+ PCFG0C_cacheline_m = 0x000000ff,
-+ PCFG0C_masterLatency_b = 8,
-+ PCFG0C_masterLatency_m = 0x0000ff00,
-+ PCFG0C_headerType_b = 16,
-+ PCFG0C_headerType_m = 0x00ff0000,
-+ PCFG0C_bist_b = 24,
-+ PCFG0C_bist_m = 0xff000000,
-+
-+ PCIPBA_msi_b = 0,
-+ PCIPBA_msi_m = 0x00000001,
-+ PCIPBA_p_b = 3,
-+ PCIPBA_p_m = 0x00000004,
-+ PCIPBA_baddr_b = 8,
-+ PCIPBA_baddr_m = 0xffffff00,
-+
-+ PCFGSS_vendorId_b = 0,
-+ PCFGSS_vendorId_m = 0x0000ffff,
-+ PCFGSS_id_b = 16,
-+ PCFGSS_id_m = 0xffff0000,
-+
-+ PCFG3C_interruptLine_b = 0,
-+ PCFG3C_interruptLine_m = 0x000000ff,
-+ PCFG3C_interruptPin_b = 8,
-+ PCFG3C_interruptPin_m = 0x0000ff00,
-+ PCFG3C_minGrant_b = 16,
-+ PCFG3C_minGrant_m = 0x00ff0000,
-+ PCFG3C_maxLat_b = 24,
-+ PCFG3C_maxLat_m = 0xff000000,
-+
-+ PCIPBAC_msi_b = 0,
-+ PCIPBAC_msi_m = 0x00000001,
-+ PCIPBAC_p_b = 1,
-+ PCIPBAC_p_m = 0x00000002,
-+ PCIPBAC_size_b = 2,
-+ PCIPBAC_size_m = 0x0000007c,
-+ PCIPBAC_sb_b = 7,
-+ PCIPBAC_sb_m = 0x00000080,
-+ PCIPBAC_pp_b = 8,
-+ PCIPBAC_pp_m = 0x00000100,
-+ PCIPBAC_mr_b = 9,
-+ PCIPBAC_mr_m = 0x00000600,
-+ PCIPBAC_mr_read_v =0, //no prefetching
-+ PCIPBAC_mr_readLine_v =1,
-+ PCIPBAC_mr_readMult_v =2,
-+ PCIPBAC_mrl_b = 11,
-+ PCIPBAC_mrl_m = 0x00000800,
-+ PCIPBAC_mrm_b = 12,
-+ PCIPBAC_mrm_m = 0x00001000,
-+ PCIPBAC_trp_b = 13,
-+ PCIPBAC_trp_m = 0x00002000,
-+
-+ PCFG40_trdyTimeout_b = 0,
-+ PCFG40_trdyTimeout_m = 0x000000ff,
-+ PCFG40_retryLim_b = 8,
-+ PCFG40_retryLim_m = 0x0000ff00,
-+};
-+
-+/*******************************************************************************
-+ *
-+ * PCI Local Base Address [0|1|2|3] Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCILBA_baddr_b = 0, // In PCI_t -> pcilba [] .a
-+ PCILBA_baddr_m = 0xffffff00,
-+} ;
-+/*******************************************************************************
-+ *
-+ * PCI Local Base Address Control Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCILBAC_msi_b = 0, // In pPci->pcilba[i].c
-+ PCILBAC_msi_m = 0x00000001,
-+ PCILBAC_msi_mem_v = 0,
-+ PCILBAC_msi_io_v = 1,
-+ PCILBAC_size_b = 2, // In pPci->pcilba[i].c
-+ PCILBAC_size_m = 0x0000007c,
-+ PCILBAC_sb_b = 7, // In pPci->pcilba[i].c
-+ PCILBAC_sb_m = 0x00000080,
-+ PCILBAC_rt_b = 8, // In pPci->pcilba[i].c
-+ PCILBAC_rt_m = 0x00000100,
-+ PCILBAC_rt_noprefetch_v = 0, // mem read
-+ PCILBAC_rt_prefetch_v = 1, // mem readline
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Local Base Address [0|1|2|3] Mapping Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCILBAM_maddr_b = 8,
-+ PCILBAM_maddr_m = 0xffffff00,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Decoupled Access Control Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCIDAC_den_b = 0,
-+ PCIDAC_den_m = 0x00000001,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Decoupled Access Status Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCIDAS_d_b = 0,
-+ PCIDAS_d_m = 0x00000001,
-+ PCIDAS_b_b = 1,
-+ PCIDAS_b_m = 0x00000002,
-+ PCIDAS_e_b = 2,
-+ PCIDAS_e_m = 0x00000004,
-+ PCIDAS_ofe_b = 3,
-+ PCIDAS_ofe_m = 0x00000008,
-+ PCIDAS_off_b = 4,
-+ PCIDAS_off_m = 0x00000010,
-+ PCIDAS_ife_b = 5,
-+ PCIDAS_ife_m = 0x00000020,
-+ PCIDAS_iff_b = 6,
-+ PCIDAS_iff_m = 0x00000040,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI DMA Channel 8 Configuration Register
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCIDMA8C_mbs_b = 0, // Maximum Burst Size.
-+ PCIDMA8C_mbs_m = 0x00000fff, // { pcidma8c }
-+ PCIDMA8C_our_b = 12, // Optimize Unaligned Burst Reads.
-+ PCIDMA8C_our_m = 0x00001000, // { pcidma8c }
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI DMA Channel 9 Configuration Register
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCIDMA9C_mbs_b = 0, // Maximum Burst Size.
-+ PCIDMA9C_mbs_m = 0x00000fff, // { pcidma9c }
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI to Memory(DMA Channel 8) AND Memory to PCI DMA(DMA Channel 9)Descriptors
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCIDMAD_pt_b = 22, // in DEVCMD field (descriptor)
-+ PCIDMAD_pt_m = 0x00c00000, // preferred transaction field
-+ // These are for reads (DMA channel 8)
-+ PCIDMAD_devcmd_mr_v = 0, //memory read
-+ PCIDMAD_devcmd_mrl_v = 1, //memory read line
-+ PCIDMAD_devcmd_mrm_v = 2, //memory read multiple
-+ PCIDMAD_devcmd_ior_v = 3, //I/O read
-+ // These are for writes (DMA channel 9)
-+ PCIDMAD_devcmd_mw_v = 0, //memory write
-+ PCIDMAD_devcmd_mwi_v = 1, //memory write invalidate
-+ PCIDMAD_devcmd_iow_v = 3, //I/O write
-+
-+ // Swap byte field applies to both DMA channel 8 and 9
-+ PCIDMAD_sb_b = 24, // in DEVCMD field (descriptor)
-+ PCIDMAD_sb_m = 0x01000000, // swap byte field
-+} ;
-+
-+
-+/*******************************************************************************
-+ *
-+ * PCI Target Control Register
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCITC_rtimer_b = 0, // In PCITC_t -> pcitc
-+ PCITC_rtimer_m = 0x000000ff,
-+ PCITC_dtimer_b = 8, // In PCITC_t -> pcitc
-+ PCITC_dtimer_m = 0x0000ff00,
-+ PCITC_rdr_b = 18, // In PCITC_t -> pcitc
-+ PCITC_rdr_m = 0x00040000,
-+ PCITC_ddt_b = 19, // In PCITC_t -> pcitc
-+ PCITC_ddt_m = 0x00080000,
-+} ;
-+/*******************************************************************************
-+ *
-+ * PCI messaging unit [applies to both inbound and outbound registers ]
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCIM_m0_b = 0, // In PCIM_t -> {pci{iic,iim,ioic,ioim}}
-+ PCIM_m0_m = 0x00000001, // inbound or outbound message 0
-+ PCIM_m1_b = 1, // In PCIM_t -> {pci{iic,iim,ioic,ioim}}
-+ PCIM_m1_m = 0x00000002, // inbound or outbound message 1
-+ PCIM_db_b = 2, // In PCIM_t -> {pci{iic,iim,ioic,ioim}}
-+ PCIM_db_m = 0x00000004, // inbound or outbound doorbell
-+};
-+
-+
-+#endif // __IDT_RC32365_PCI_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,217 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * PCI header values for IDT 79EB365/336
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32365_PCI_V_H__
-+#define __IDT_RC32365_PCI_V_H__
-+
-+
-+#define PCI_MSG_VirtualAddress 0xB806C010
-+#define rc32365_pci ((volatile PCI_t) PCI0_VirtualAddress)
-+#define rc32365_pci_msg ((volatile PCIM_t) PCI_MSG_VirtualAddress)
-+
-+#define PCIM_SHFT 0x6
-+#define PCIM_BIT_LEN 0x7
-+#define PCIM_H_EA 0x3
-+#define PCIM_H_IA_FIX 0x4
-+#define PCIM_H_IA_RR 0x5
-+
-+#define PCI_ADDR_START 0x50000000
-+
-+#define CPUTOPCI_MEM_WIN 0x02000000
-+#define CPUTOPCI_IO_WIN 0x00100000
-+#define PCILBA_SIZE_SHFT 2
-+#define PCILBA_SIZE_MASK 0x1F
-+#define SIZE_256MB 0x1C
-+#define SIZE_128MB 0x1B
-+#define SIZE_64MB 0x1A
-+#define SIZE_32MB 0x19
-+#define SIZE_16MB 0x18
-+#define SIZE_4MB 0x16
-+#define SIZE_2MB 0x15
-+#define SIZE_1MB 0x14
-+#define CEDAR_CONFIG0_ADDR 0x80000000
-+#define CEDAR_CONFIG1_ADDR 0x80000004
-+#define CEDAR_CONFIG2_ADDR 0x80000008
-+#define CEDAR_CONFIG3_ADDR 0x8000000C
-+#define CEDAR_CONFIG4_ADDR 0x80000010
-+#define CEDAR_CONFIG5_ADDR 0x80000014
-+#define CEDAR_CONFIG6_ADDR 0x80000018
-+#define CEDAR_CONFIG7_ADDR 0x8000001C
-+#define CEDAR_CONFIG8_ADDR 0x80000020
-+#define CEDAR_CONFIG9_ADDR 0x80000024
-+#define CEDAR_CONFIG10_ADDR 0x80000028
-+#define CEDAR_CONFIG11_ADDR 0x8000002C
-+#define CEDAR_CONFIG12_ADDR 0x80000030
-+#define CEDAR_CONFIG13_ADDR 0x80000034
-+#define CEDAR_CONFIG14_ADDR 0x80000038
-+#define CEDAR_CONFIG15_ADDR 0x8000003C
-+#define CEDAR_CONFIG16_ADDR 0x80000040
-+#define CEDAR_CONFIG17_ADDR 0x80000044
-+#define CEDAR_CONFIG18_ADDR 0x80000048
-+#define CEDAR_CONFIG19_ADDR 0x8000004C
-+#define CEDAR_CONFIG20_ADDR 0x80000050
-+#define CEDAR_CONFIG21_ADDR 0x80000054
-+#define CEDAR_CONFIG22_ADDR 0x80000058
-+#define CEDAR_CONFIG23_ADDR 0x8000005C
-+#define CEDAR_CONFIG24_ADDR 0x80000060
-+#define CEDAR_CONFIG25_ADDR 0x80000064
-+#define CEDAR_CMD (PCFG04_command_ioena_m | \
-+ PCFG04_command_memena_m | \
-+ PCFG04_command_bmena_m | \
-+ PCFG04_command_mwinv_m | \
-+ PCFG04_command_parena_m | \
-+ PCFG04_command_serrena_m )
-+
-+#define CEDAR_STAT (PCFG04_status_mdpe_m | \
-+ PCFG04_status_sta_m | \
-+ PCFG04_status_rta_m | \
-+ PCFG04_status_rma_m | \
-+ PCFG04_status_sse_m | \
-+ PCFG04_status_pe_m)
-+
-+#define CEDAR_CNFG1 ((CEDAR_STAT << 16) | \
-+ CEDAR_CMD)
-+
-+#define CEDAR_REVID 0
-+#define CEDAR_CLASS_CODE 0
-+#define CEDAR_CNFG2 ((CEDAR_CLASS_CODE << 8) | \
-+ CEDAR_REVID)
-+
-+#define CEDAR_CACHE_LINE_SIZE 4
-+#define CEDAR_MASTER_LAT 0x3c
-+#define CEDAR_HEADER_TYPE 0
-+#define CEDAR_BIST 0
-+
-+#define CEDAR_CNFG3 ((CEDAR_BIST << 24) | \
-+ (CEDAR_HEADER_TYPE << 16) | \
-+ (CEDAR_MASTER_LAT << 8) | \
-+ CEDAR_CACHE_LINE_SIZE)
-+
-+#define CEDAR_BAR0 0x00000008 /* 128 MB Memory */
-+#define CEDAR_BAR1 0x18800001 /* 1 MB IO */
-+#define CEDAR_BAR2 0x18000001 /* 2 MB IO window for Cedar
-+ internal Registers */
-+#define CEDAR_BAR3 0x48000008 /* Spare 128 MB Memory */
-+
-+#define CEDAR_CNFG4 CEDAR_BAR0
-+#define CEDAR_CNFG5 CEDAR_BAR1
-+#define CEDAR_CNFG6 CEDAR_BAR2
-+#define CEDAR_CNFG7 CEDAR_BAR3
-+
-+#define CEDAR_SUBSYS_VENDOR_ID 0
-+#define CEDAR_SUBSYSTEM_ID 0
-+#define CEDAR_CNFG8 0
-+#define CEDAR_CNFG9 0
-+#define CEDAR_CNFG10 0
-+#define CEDAR_CNFG11 ((CEDAR_SUBSYS_VENDOR_ID << 16) | \
-+ CEDAR_SUBSYSTEM_ID)
-+#define CEDAR_INT_LINE 1
-+#define CEDAR_INT_PIN 1
-+#define CEDAR_MIN_GNT 8
-+#define CEDAR_MAX_LAT 0x38
-+#define CEDAR_CNFG12 0
-+#define CEDAR_CNFG13 0
-+#define CEDAR_CNFG14 0
-+#define CEDAR_CNFG15 ((CEDAR_MAX_LAT << 24) | \
-+ (CEDAR_MIN_GNT << 16) | \
-+ (CEDAR_INT_PIN << 8) | \
-+ CEDAR_INT_LINE)
-+#define CEDAR_RETRY_LIMIT 0x80
-+#define CEDAR_TRDY_LIMIT 0x80
-+#define CEDAR_CNFG16 ((CEDAR_RETRY_LIMIT << 8) | \
-+ CEDAR_TRDY_LIMIT)
-+#define PCI_PBAxC_R 0x0
-+#define PCI_PBAxC_RL 0x1
-+#define PCI_PBAxC_RM 0x2
-+#define SIZE_SHFT 2
-+#ifdef __MIPSEB__
-+#define CEDAR_PBA0C (((1 & 0x3) << PCIPBAC_mr_b) | \
-+ PCIPBAC_pp_m | \
-+ PCIPBAC_sb_m | \
-+ (SIZE_128MB << SIZE_SHFT) | \
-+ PCIPBAC_p_m)
-+#else
-+
-+#define CEDAR_PBA0C (((1 & 0x3) << PCIPBAC_mr_b) | \
-+ PCIPBAC_pp_m | \
-+ (SIZE_128MB << SIZE_SHFT) | \
-+ PCIPBAC_p_m)
-+#endif
-+#define CEDAR_CNFG17 CEDAR_PBA0C
-+#define CEDAR_PBA0M 0x0
-+#define CEDAR_CNFG18 CEDAR_PBA0M
-+
-+#ifdef __MIPSEB__
-+#define CEDAR_PBA1C ((SIZE_1MB << SIZE_SHFT) | \
-+ PCIPBAC_sb_m | \
-+ PCIPBAC_msi_m)
-+#else
-+#define CEDAR_PBA1C ((SIZE_1MB << SIZE_SHFT) | \
-+ PCIPBAC_msi_m)
-+#endif
-+#define CEDAR_CNFG19 CEDAR_PBA1C
-+#define CEDAR_PBA1M 0x0
-+#define CEDAR_CNFG20 CEDAR_PBA1M
-+
-+#ifdef __MIPSEB__
-+#define CEDAR_PBA2C ((SIZE_2MB << SIZE_SHFT) | \
-+ PCIPBAC_sb_m | \
-+ PCIPBAC_msi_m)
-+#else
-+#define CEDAR_PBA2C ((SIZE_2MB << SIZE_SHFT) | \
-+ PCIPBAC_msi_m)
-+#endif
-+
-+#define CEDAR_CNFG21 CEDAR_PBA2C
-+#define CEDAR_PBA2M 0x18000000
-+#define CEDAR_CNFG22 CEDAR_PBA2M
-+
-+#ifdef __MIPSEB__
-+#define CEDAR_PBA3C PCIPBAC_sb_m
-+#else
-+#define CEDAR_PBA3C 0
-+#endif
-+
-+#define CEDAR_CNFG23 CEDAR_PBA3C
-+#define CEDAR_PBA3M 0
-+#define CEDAR_CNFG24 CEDAR_PBA3M
-+
-+#define PCITC_DTIMER_VAL 8
-+#define PCITC_RTIMER_VAL 0x10
-+
-+#endif //__IDT_RC32365_PCI_V_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_dma.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_dma.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_dma.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_dma.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,205 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * DMA register definition
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_DMA_H__
-+#define __IDT_DMA_H__
-+
-+enum
-+{
-+ DMA0_PhysicalAddress = 0x18040000,
-+ DMA_PhysicalAddress = DMA0_PhysicalAddress, // Default
-+
-+ DMA0_VirtualAddress = 0xb8040000,
-+ DMA_VirtualAddress = DMA0_VirtualAddress, // Default
-+} ;
-+
-+/*
-+ * DMA descriptor (in physical memory).
-+ */
-+
-+typedef struct DMAD_s
-+{
-+ u32 control ; // Control. use DMAD_*
-+ u32 ca ; // Current Address.
-+ u32 devcs ; // Device control and status.
-+ u32 link ; // Next descriptor in chain.
-+} volatile *DMAD_t ;
-+
-+enum
-+{
-+ DMAD_size = sizeof (struct DMAD_s),
-+ DMAD_count_b = 0, // in DMAD_t -> control
-+ DMAD_count_m = 0x0003ffff, // in DMAD_t -> control
-+ DMAD_ds_b = 20, // in DMAD_t -> control
-+ DMAD_ds_m = 0x00300000, // in DMAD_t -> control
-+ DMAD_ds_ethRcv0_v = 0,
-+ DMAD_ds_ethXmt0_v = 0,
-+ DMAD_ds_memToFifo_v = 0,
-+ DMAD_ds_fifoToMem_v = 0,
-+ DMAD_ds_pciToMem_v = 0,
-+ DMAD_ds_memToPci_v = 0,
-+
-+ DMAD_devcmd_b = 22, // in DMAD_t -> control
-+ DMAD_devcmd_m = 0x01c00000, // in DMAD_t -> control
-+ DMAD_devcmd_byte_v = 0, //memory-to-memory
-+ DMAD_devcmd_halfword_v = 1, //memory-to-memory
-+ DMAD_devcmd_word_v = 2, //memory-to-memory
-+ DMAD_devcmd_2words_v = 3, //memory-to-memory
-+ DMAD_devcmd_4words_v = 4, //memory-to-memory
-+ DMAD_devcmd_6words_v = 5, //memory-to-memory
-+ DMAD_devcmd_8words_v = 6, //memory-to-memory
-+ DMAD_devcmd_16words_v = 7, //memory-to-memory
-+ DMAD_cof_b = 25, // chain on finished
-+ DMAD_cof_m = 0x02000000, //
-+ DMAD_cod_b = 26, // chain on done
-+ DMAD_cod_m = 0x04000000, //
-+ DMAD_iof_b = 27, // interrupt on finished
-+ DMAD_iof_m = 0x08000000, //
-+ DMAD_iod_b = 28, // interrupt on done
-+ DMAD_iod_m = 0x10000000, //
-+ DMAD_t_b = 29, // terminated
-+ DMAD_t_m = 0x20000000, //
-+ DMAD_d_b = 30, // done
-+ DMAD_d_m = 0x40000000, //
-+ DMAD_f_b = 31, // finished
-+ DMAD_f_m = 0x80000000, //
-+} ;
-+
-+/*
-+ * DMA register (within Internal Register Map).
-+ */
-+
-+struct DMA_Chan_s
-+{
-+ u32 dmac ; // Control.
-+ u32 dmas ; // Status.
-+ u32 dmasm ; // Mask.
-+ u32 dmadptr ; // Descriptor pointer.
-+ u32 dmandptr ; // Next descriptor pointer.
-+};
-+
-+typedef struct DMA_Chan_s volatile *DMA_Chan_t ;
-+
-+//DMA_Channels use DMACH_count instead
-+
-+enum
-+{
-+ DMAC_run_b = 0, //
-+ DMAC_run_m = 0x00000001, //
-+ DMAC_dm_b = 1, // done mask
-+ DMAC_dm_m = 0x00000002, //
-+ DMAC_mode_b = 2, //
-+ DMAC_mode_m = 0x0000000c, //
-+ DMAC_mode_auto_v = 0,
-+ DMAC_mode_burst_v = 1,
-+ DMAC_mode_transfer_v = 2, //usually used
-+ DMAC_mode_reserved_v = 3,
-+ DMAC_a_b = 4, //
-+ DMAC_a_m = 0x00000010, //
-+
-+ DMAS_f_b = 0, // finished (sticky)
-+ DMAS_f_m = 0x00000001, //
-+ DMAS_d_b = 1, // done (sticky)
-+ DMAS_d_m = 0x00000002, //
-+ DMAS_c_b = 2, // chain (sticky)
-+ DMAS_c_m = 0x00000004, //
-+ DMAS_e_b = 3, // error (sticky)
-+ DMAS_e_m = 0x00000008, //
-+ DMAS_h_b = 4, // halt (sticky)
-+ DMAS_h_m = 0x00000010, //
-+
-+ DMASM_f_b = 0, // finished (1=mask)
-+ DMASM_f_m = 0x00000001, //
-+ DMASM_d_b = 1, // done (1=mask)
-+ DMASM_d_m = 0x00000002, //
-+ DMASM_c_b = 2, // chain (1=mask)
-+ DMASM_c_m = 0x00000004, //
-+ DMASM_e_b = 3, // error (1=mask)
-+ DMASM_e_m = 0x00000008, //
-+ DMASM_h_b = 4, // halt (1=mask)
-+ DMASM_h_m = 0x00000010, //
-+} ;
-+
-+/*
-+ * DMA channel definitions
-+ */
-+
-+enum
-+{
-+ DMACH_ethRcv0 = 0,
-+ DMACH_ethXmt0 = 1,
-+ DMACH_memToFifo = 2,
-+ DMACH_fifoToMem = 3,
-+ DMACH_pciToMem = 4,
-+ DMACH_memToPci = 5,
-+
-+ DMACH_count //must be last
-+};
-+
-+
-+typedef struct DMAC_s
-+{
-+ struct DMA_Chan_s ch [DMACH_count] ; //use ch[DMACH_]
-+} volatile *DMA_t ;
-+
-+
-+/*
-+ * External DMA parameters
-+*/
-+
-+enum
-+{
-+ DMADEVCMD_ts_b = 0, // ts field in devcmd
-+ DMADEVCMD_ts_m = 0x00000007, // ts field in devcmd
-+ DMADEVCMD_ts_byte_v = 0,
-+ DMADEVCMD_ts_halfword_v = 1,
-+ DMADEVCMD_ts_word_v = 2,
-+ DMADEVCMD_ts_2word_v = 3,
-+ DMADEVCMD_ts_4word_v = 4,
-+ DMADEVCMD_ts_6word_v = 5,
-+ DMADEVCMD_ts_8word_v = 6,
-+ DMADEVCMD_ts_16word_v = 7
-+};
-+
-+
-+#endif // __IDT_DMA_H__
-+
-+
-+
-+
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,89 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Definitions for DMA controller.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_DMA_V_H__
-+#define __IDT_DMA_V_H__
-+
-+#include <asm/idt-boards/rc32434/rc32434_dma.h>
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+
-+#define DMA_CHAN_OFFSET 0x14
-+#define IS_DMA_USED(X) (((X) & (DMAD_f_m | DMAD_d_m | DMAD_t_m)) != 0)
-+#define DMA_COUNT(count) \
-+ ((count) & DMAD_count_m)
-+
-+#define DMA_HALT_TIMEOUT 500
-+
-+
-+static inline int rc32434_halt_dma(DMA_Chan_t ch)
-+{
-+ int timeout=1;
-+ if (rc32434_readl(&ch->dmac) & DMAC_run_m) {
-+ rc32434_writel(0, &ch->dmac);
-+
-+ for (timeout = DMA_HALT_TIMEOUT; timeout > 0; timeout--) {
-+ if (rc32434_readl(&ch->dmas) & DMAS_h_m) {
-+ rc32434_writel(0, &ch->dmas);
-+ break;
-+ }
-+ }
-+
-+ }
-+
-+ return timeout ? 0 : 1;
-+}
-+
-+static inline void rc32434_start_dma(DMA_Chan_t ch, u32 dma_addr)
-+{
-+ rc32434_writel(0, &ch->dmandptr);
-+ rc32434_writel(dma_addr, &ch->dmadptr);
-+}
-+
-+static inline void rc32434_chain_dma(DMA_Chan_t ch, u32 dma_addr)
-+{
-+ rc32434_writel(dma_addr, &ch->dmandptr);
-+}
-+
-+#endif // __IDT_DMA_V_H__
-+
-+
-+
-+
-+
-+
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_eth.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_eth.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_eth.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_eth.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,333 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Ethernet register definition
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_ETH_H__
-+#define __IDT_ETH_H__
-+
-+
-+enum
-+{
-+ ETH0_PhysicalAddress = 0x18060000,
-+ ETH_PhysicalAddress = ETH0_PhysicalAddress, // Default
-+
-+ ETH0_VirtualAddress = 0xb8060000,
-+ ETH_VirtualAddress = ETH0_VirtualAddress, // Default
-+} ;
-+
-+typedef struct
-+{
-+ u32 ethintfc ;
-+ u32 ethfifott ;
-+ u32 etharc ;
-+ u32 ethhash0 ;
-+ u32 ethhash1 ;
-+ u32 ethu0 [4] ; // Reserved.
-+ u32 ethpfs ;
-+ u32 ethmcp ;
-+ u32 eth_u1 [10] ; // Reserved.
-+ u32 ethspare ;
-+ u32 eth_u2 [42] ; // Reserved.
-+ u32 ethsal0 ;
-+ u32 ethsah0 ;
-+ u32 ethsal1 ;
-+ u32 ethsah1 ;
-+ u32 ethsal2 ;
-+ u32 ethsah2 ;
-+ u32 ethsal3 ;
-+ u32 ethsah3 ;
-+ u32 ethrbc ;
-+ u32 ethrpc ;
-+ u32 ethrupc ;
-+ u32 ethrfc ;
-+ u32 ethtbc ;
-+ u32 ethgpf ;
-+ u32 eth_u9 [50] ; // Reserved.
-+ u32 ethmac1 ;
-+ u32 ethmac2 ;
-+ u32 ethipgt ;
-+ u32 ethipgr ;
-+ u32 ethclrt ;
-+ u32 ethmaxf ;
-+ u32 eth_u10 ; // Reserved.
-+ u32 ethmtest ;
-+ u32 miimcfg ;
-+ u32 miimcmd ;
-+ u32 miimaddr ;
-+ u32 miimwtd ;
-+ u32 miimrdd ;
-+ u32 miimind ;
-+ u32 eth_u11 ; // Reserved.
-+ u32 eth_u12 ; // Reserved.
-+ u32 ethcfsa0 ;
-+ u32 ethcfsa1 ;
-+ u32 ethcfsa2 ;
-+} volatile *ETH_t;
-+
-+enum
-+{
-+ ETHINTFC_en_b = 0,
-+ ETHINTFC_en_m = 0x00000001,
-+ ETHINTFC_its_b = 1,
-+ ETHINTFC_its_m = 0x00000002,
-+ ETHINTFC_rip_b = 2,
-+ ETHINTFC_rip_m = 0x00000004,
-+ ETHINTFC_jam_b = 3,
-+ ETHINTFC_jam_m = 0x00000008,
-+ ETHINTFC_ovr_b = 4,
-+ ETHINTFC_ovr_m = 0x00000010,
-+ ETHINTFC_und_b = 5,
-+ ETHINTFC_und_m = 0x00000020,
-+
-+ ETHFIFOTT_tth_b = 0,
-+ ETHFIFOTT_tth_m = 0x0000007f,
-+
-+ ETHARC_pro_b = 0,
-+ ETHARC_pro_m = 0x00000001,
-+ ETHARC_am_b = 1,
-+ ETHARC_am_m = 0x00000002,
-+ ETHARC_afm_b = 2,
-+ ETHARC_afm_m = 0x00000004,
-+ ETHARC_ab_b = 3,
-+ ETHARC_ab_m = 0x00000008,
-+
-+ ETHSAL_byte5_b = 0,
-+ ETHSAL_byte5_m = 0x000000ff,
-+ ETHSAL_byte4_b = 8,
-+ ETHSAL_byte4_m = 0x0000ff00,
-+ ETHSAL_byte3_b = 16,
-+ ETHSAL_byte3_m = 0x00ff0000,
-+ ETHSAL_byte2_b = 24,
-+ ETHSAL_byte2_m = 0xff000000,
-+
-+ ETHSAH_byte1_b = 0,
-+ ETHSAH_byte1_m = 0x000000ff,
-+ ETHSAH_byte0_b = 8,
-+ ETHSAH_byte0_m = 0x0000ff00,
-+
-+ ETHGPF_ptv_b = 0,
-+ ETHGPF_ptv_m = 0x0000ffff,
-+
-+ ETHPFS_pfd_b = 0,
-+ ETHPFS_pfd_m = 0x00000001,
-+
-+ ETHCFSA0_cfsa4_b = 0,
-+ ETHCFSA0_cfsa4_m = 0x000000ff,
-+ ETHCFSA0_cfsa5_b = 8,
-+ ETHCFSA0_cfsa5_m = 0x0000ff00,
-+
-+ ETHCFSA1_cfsa2_b = 0,
-+ ETHCFSA1_cfsa2_m = 0x000000ff,
-+ ETHCFSA1_cfsa3_b = 8,
-+ ETHCFSA1_cfsa3_m = 0x0000ff00,
-+
-+ ETHCFSA2_cfsa0_b = 0,
-+ ETHCFSA2_cfsa0_m = 0x000000ff,
-+ ETHCFSA2_cfsa1_b = 8,
-+ ETHCFSA2_cfsa1_m = 0x0000ff00,
-+
-+ ETHMAC1_re_b = 0,
-+ ETHMAC1_re_m = 0x00000001,
-+ ETHMAC1_paf_b = 1,
-+ ETHMAC1_paf_m = 0x00000002,
-+ ETHMAC1_rfc_b = 2,
-+ ETHMAC1_rfc_m = 0x00000004,
-+ ETHMAC1_tfc_b = 3,
-+ ETHMAC1_tfc_m = 0x00000008,
-+ ETHMAC1_lb_b = 4,
-+ ETHMAC1_lb_m = 0x00000010,
-+ ETHMAC1_mr_b = 31,
-+ ETHMAC1_mr_m = 0x80000000,
-+
-+ ETHMAC2_fd_b = 0,
-+ ETHMAC2_fd_m = 0x00000001,
-+ ETHMAC2_flc_b = 1,
-+ ETHMAC2_flc_m = 0x00000002,
-+ ETHMAC2_hfe_b = 2,
-+ ETHMAC2_hfe_m = 0x00000004,
-+ ETHMAC2_dc_b = 3,
-+ ETHMAC2_dc_m = 0x00000008,
-+ ETHMAC2_cen_b = 4,
-+ ETHMAC2_cen_m = 0x00000010,
-+ ETHMAC2_pe_b = 5,
-+ ETHMAC2_pe_m = 0x00000020,
-+ ETHMAC2_vpe_b = 6,
-+ ETHMAC2_vpe_m = 0x00000040,
-+ ETHMAC2_ape_b = 7,
-+ ETHMAC2_ape_m = 0x00000080,
-+ ETHMAC2_ppe_b = 8,
-+ ETHMAC2_ppe_m = 0x00000100,
-+ ETHMAC2_lpe_b = 9,
-+ ETHMAC2_lpe_m = 0x00000200,
-+ ETHMAC2_nb_b = 12,
-+ ETHMAC2_nb_m = 0x00001000,
-+ ETHMAC2_bp_b = 13,
-+ ETHMAC2_bp_m = 0x00002000,
-+ ETHMAC2_ed_b = 14,
-+ ETHMAC2_ed_m = 0x00004000,
-+
-+ ETHIPGT_ipgt_b = 0,
-+ ETHIPGT_ipgt_m = 0x0000007f,
-+
-+ ETHIPGR_ipgr2_b = 0,
-+ ETHIPGR_ipgr2_m = 0x0000007f,
-+ ETHIPGR_ipgr1_b = 8,
-+ ETHIPGR_ipgr1_m = 0x00007f00,
-+
-+ ETHCLRT_maxret_b = 0,
-+ ETHCLRT_maxret_m = 0x0000000f,
-+ ETHCLRT_colwin_b = 8,
-+ ETHCLRT_colwin_m = 0x00003f00,
-+
-+ ETHMAXF_maxf_b = 0,
-+ ETHMAXF_maxf_m = 0x0000ffff,
-+
-+ ETHMTEST_tb_b = 2,
-+ ETHMTEST_tb_m = 0x00000004,
-+
-+ ETHMCP_div_b = 0,
-+ ETHMCP_div_m = 0x000000ff,
-+
-+ MIIMCFG_rsv_b = 0,
-+ MIIMCFG_rsv_m = 0x0000000c,
-+
-+ MIIMCMD_rd_b = 0,
-+ MIIMCMD_rd_m = 0x00000001,
-+ MIIMCMD_scn_b = 1,
-+ MIIMCMD_scn_m = 0x00000002,
-+
-+ MIIMADDR_regaddr_b = 0,
-+ MIIMADDR_regaddr_m = 0x0000001f,
-+ MIIMADDR_phyaddr_b = 8,
-+ MIIMADDR_phyaddr_m = 0x00001f00,
-+
-+ MIIMWTD_wdata_b = 0,
-+ MIIMWTD_wdata_m = 0x0000ffff,
-+
-+ MIIMRDD_rdata_b = 0,
-+ MIIMRDD_rdata_m = 0x0000ffff,
-+
-+ MIIMIND_bsy_b = 0,
-+ MIIMIND_bsy_m = 0x00000001,
-+ MIIMIND_scn_b = 1,
-+ MIIMIND_scn_m = 0x00000002,
-+ MIIMIND_nv_b = 2,
-+ MIIMIND_nv_m = 0x00000004,
-+
-+} ;
-+
-+/*
-+ * Values for the DEVCS field of the Ethernet DMA Rx and Tx descriptors.
-+ */
-+enum
-+{
-+ ETHRX_fd_b = 0,
-+ ETHRX_fd_m = 0x00000001,
-+ ETHRX_ld_b = 1,
-+ ETHRX_ld_m = 0x00000002,
-+ ETHRX_rok_b = 2,
-+ ETHRX_rok_m = 0x00000004,
-+ ETHRX_fm_b = 3,
-+ ETHRX_fm_m = 0x00000008,
-+ ETHRX_mp_b = 4,
-+ ETHRX_mp_m = 0x00000010,
-+ ETHRX_bp_b = 5,
-+ ETHRX_bp_m = 0x00000020,
-+ ETHRX_vlt_b = 6,
-+ ETHRX_vlt_m = 0x00000040,
-+ ETHRX_cf_b = 7,
-+ ETHRX_cf_m = 0x00000080,
-+ ETHRX_ovr_b = 8,
-+ ETHRX_ovr_m = 0x00000100,
-+ ETHRX_crc_b = 9,
-+ ETHRX_crc_m = 0x00000200,
-+ ETHRX_cv_b = 10,
-+ ETHRX_cv_m = 0x00000400,
-+ ETHRX_db_b = 11,
-+ ETHRX_db_m = 0x00000800,
-+ ETHRX_le_b = 12,
-+ ETHRX_le_m = 0x00001000,
-+ ETHRX_lor_b = 13,
-+ ETHRX_lor_m = 0x00002000,
-+ ETHRX_ces_b = 14,
-+ ETHRX_ces_m = 0x00004000,
-+ ETHRX_length_b = 16,
-+ ETHRX_length_m = 0xffff0000,
-+
-+ ETHTX_fd_b = 0,
-+ ETHTX_fd_m = 0x00000001,
-+ ETHTX_ld_b = 1,
-+ ETHTX_ld_m = 0x00000002,
-+ ETHTX_oen_b = 2,
-+ ETHTX_oen_m = 0x00000004,
-+ ETHTX_pen_b = 3,
-+ ETHTX_pen_m = 0x00000008,
-+ ETHTX_cen_b = 4,
-+ ETHTX_cen_m = 0x00000010,
-+ ETHTX_hen_b = 5,
-+ ETHTX_hen_m = 0x00000020,
-+ ETHTX_tok_b = 6,
-+ ETHTX_tok_m = 0x00000040,
-+ ETHTX_mp_b = 7,
-+ ETHTX_mp_m = 0x00000080,
-+ ETHTX_bp_b = 8,
-+ ETHTX_bp_m = 0x00000100,
-+ ETHTX_und_b = 9,
-+ ETHTX_und_m = 0x00000200,
-+ ETHTX_of_b = 10,
-+ ETHTX_of_m = 0x00000400,
-+ ETHTX_ed_b = 11,
-+ ETHTX_ed_m = 0x00000800,
-+ ETHTX_ec_b = 12,
-+ ETHTX_ec_m = 0x00001000,
-+ ETHTX_lc_b = 13,
-+ ETHTX_lc_m = 0x00002000,
-+ ETHTX_td_b = 14,
-+ ETHTX_td_m = 0x00004000,
-+ ETHTX_crc_b = 15,
-+ ETHTX_crc_m = 0x00008000,
-+ ETHTX_le_b = 16,
-+ ETHTX_le_m = 0x00010000,
-+ ETHTX_cc_b = 17,
-+ ETHTX_cc_m = 0x001E0000,
-+} ;
-+
-+#endif // __IDT_ETH_H__
-+
-+
-+
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,77 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Ethernet register definition
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_ETH_V_H__
-+#define __IDT_ETH_V_H__
-+
-+#include <asm/idt-boards/rc32434/rc32434_eth.h>
-+
-+#define IS_TX_TOK(X) (((X) & (1<<ETHTX_tok_b)) >> ETHTX_tok_b ) /* Transmit Okay */
-+#define IS_TX_MP(X) (((X) & (1<<ETHTX_mp_b)) >> ETHTX_mp_b ) /* Multicast */
-+#define IS_TX_BP(X) (((X) & (1<<ETHTX_bp_b)) >> ETHTX_bp_b ) /* Broadcast */
-+#define IS_TX_UND_ERR(X) (((X) & (1<<ETHTX_und_b)) >> ETHTX_und_b ) /* Transmit FIFO Underflow */
-+#define IS_TX_OF_ERR(X) (((X) & (1<<ETHTX_of_b)) >> ETHTX_of_b ) /* Oversized frame */
-+#define IS_TX_ED_ERR(X) (((X) & (1<<ETHTX_ed_b)) >> ETHTX_ed_b ) /* Excessive deferral */
-+#define IS_TX_EC_ERR(X) (((X) & (1<<ETHTX_ec_b)) >> ETHTX_ec_b) /* Excessive collisions */
-+#define IS_TX_LC_ERR(X) (((X) & (1<<ETHTX_lc_b)) >> ETHTX_lc_b ) /* Late Collision */
-+#define IS_TX_TD_ERR(X) (((X) & (1<<ETHTX_td_b)) >> ETHTX_td_b ) /* Transmit deferred*/
-+#define IS_TX_CRC_ERR(X) (((X) & (1<<ETHTX_crc_b)) >> ETHTX_crc_b ) /* CRC Error */
-+#define IS_TX_LE_ERR(X) (((X) & (1<<ETHTX_le_b)) >> ETHTX_le_b ) /* Length Error */
-+
-+#define TX_COLLISION_COUNT(X) (((X) & ETHTX_cc_m)>>ETHTX_cc_b) /* Collision Count */
-+
-+#define IS_RCV_ROK(X) (((X) & (1<<ETHRX_rok_b)) >> ETHRX_rok_b) /* Receive Okay */
-+#define IS_RCV_FM(X) (((X) & (1<<ETHRX_fm_b)) >> ETHRX_fm_b) /* Is Filter Match */
-+#define IS_RCV_MP(X) (((X) & (1<<ETHRX_mp_b)) >> ETHRX_mp_b) /* Is it MP */
-+#define IS_RCV_BP(X) (((X) & (1<<ETHRX_bp_b)) >> ETHRX_bp_b) /* Is it BP */
-+#define IS_RCV_VLT(X) (((X) & (1<<ETHRX_vlt_b)) >> ETHRX_vlt_b) /* VLAN Tag Detect */
-+#define IS_RCV_CF(X) (((X) & (1<<ETHRX_cf_b)) >> ETHRX_cf_b) /* Control Frame */
-+#define IS_RCV_OVR_ERR(X) (((X) & (1<<ETHRX_ovr_b)) >> ETHRX_ovr_b) /* Receive Overflow */
-+#define IS_RCV_CRC_ERR(X) (((X) & (1<<ETHRX_crc_b)) >> ETHRX_crc_b) /* CRC Error */
-+#define IS_RCV_CV_ERR(X) (((X) & (1<<ETHRX_cv_b)) >> ETHRX_cv_b) /* Code Violation */
-+#define IS_RCV_DB_ERR(X) (((X) & (1<<ETHRX_db_b)) >> ETHRX_db_b) /* Dribble Bits */
-+#define IS_RCV_LE_ERR(X) (((X) & (1<<ETHRX_le_b)) >> ETHRX_le_b) /* Length error */
-+#define IS_RCV_LOR_ERR(X) (((X) & (1<<ETHRX_lor_b)) >> ETHRX_lor_b) /* Length Out of Range */
-+#define IS_RCV_CES_ERR(X) (((X) & (1<<ETHRX_ces_b)) >> ETHRX_ces_b) /* Preamble error */
-+#define RCVPKT_LENGTH(X) (((X) & ETHRX_length_m) >> ETHRX_length_b) /* Length of the received packet */
-+#endif // __IDT_ETH_V_H__
-+
-+
-+
-+
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,167 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * GPIO register definition
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_GPIO_H__
-+#define __IDT_GPIO_H__
-+
-+enum
-+{
-+ GPIO0_PhysicalAddress = 0x18050000,
-+ GPIO_PhysicalAddress = GPIO0_PhysicalAddress, // Default
-+
-+ GPIO0_VirtualAddress = 0xb8050000,
-+ GPIO_VirtualAddress = GPIO0_VirtualAddress, // Default
-+} ;
-+
-+typedef struct
-+{
-+ u32 gpiofunc; /* GPIO Function Register
-+ * gpiofunc[x]==0 bit = gpio
-+ * func[x]==1 bit = altfunc
-+ */
-+ u32 gpiocfg; /* GPIO Configuration Register
-+ * gpiocfg[x]==0 bit = input
-+ * gpiocfg[x]==1 bit = output
-+ */
-+ u32 gpiod; /* GPIO Data Register
-+ * gpiod[x] read/write gpio pinX status
-+ */
-+ u32 gpioilevel; /* GPIO Interrupt Status Register
-+ * interrupt level (see gpioistat)
-+ */
-+ u32 gpioistat; /* Gpio Interrupt Status Register
-+ * istat[x] = (gpiod[x] == level[x])
-+ * cleared in ISR (STICKY bits)
-+ */
-+ u32 gpionmien; /* GPIO Non-maskable Interrupt Enable Register */
-+} volatile * GPIO_t ;
-+
-+typedef enum
-+{
-+ GPIO_gpio_v = 0, // gpiofunc use pin as GPIO.
-+ GPIO_alt_v = 1, // gpiofunc use pin as alt.
-+ GPIO_input_v = 0, // gpiocfg use pin as input.
-+ GPIO_output_v = 1, // gpiocfg use pin as output.
-+ GPIO_pin0_b = 0,
-+ GPIO_pin0_m = 0x00000001,
-+ GPIO_pin1_b = 1,
-+ GPIO_pin1_m = 0x00000002,
-+ GPIO_pin2_b = 2,
-+ GPIO_pin2_m = 0x00000004,
-+ GPIO_pin3_b = 3,
-+ GPIO_pin3_m = 0x00000008,
-+ GPIO_pin4_b = 4,
-+ GPIO_pin4_m = 0x00000010,
-+ GPIO_pin5_b = 5,
-+ GPIO_pin5_m = 0x00000020,
-+ GPIO_pin6_b = 6,
-+ GPIO_pin6_m = 0x00000040,
-+ GPIO_pin7_b = 7,
-+ GPIO_pin7_m = 0x00000080,
-+ GPIO_pin8_b = 8,
-+ GPIO_pin8_m = 0x00000100,
-+ GPIO_pin9_b = 9,
-+ GPIO_pin9_m = 0x00000200,
-+ GPIO_pin10_b = 10,
-+ GPIO_pin10_m = 0x00000400,
-+ GPIO_pin11_b = 11,
-+ GPIO_pin11_m = 0x00000800,
-+ GPIO_pin12_b = 12,
-+ GPIO_pin12_m = 0x00001000,
-+ GPIO_pin13_b = 13,
-+ GPIO_pin13_m = 0x00002000,
-+
-+// Alternate function pins. Corrsponding gpiofunc bit set to GPIO_alt_v.
-+
-+ GPIO_u0sout_b = GPIO_pin0_b, // UART 0 serial out.
-+ GPIO_u0sout_m = GPIO_pin0_m,
-+ GPIO_u0sout_cfg_v = GPIO_output_v,
-+ GPIO_u0sinp_b = GPIO_pin1_b, // UART 0 serial in.
-+ GPIO_u0sinp_m = GPIO_pin1_m,
-+ GPIO_u0sinp_cfg_v = GPIO_input_v,
-+ GPIO_u0rtsn_b = GPIO_pin2_b, // UART 0 req. to send.
-+ GPIO_u0rtsn_m = GPIO_pin2_m,
-+ GPIO_u0rtsn_cfg_v = GPIO_output_v,
-+ GPIO_u0ctsn_b = GPIO_pin3_b, // UART 0 clear to send.
-+ GPIO_u0ctsn_m = GPIO_pin3_m,
-+ GPIO_u0ctsn_cfg_v = GPIO_input_v,
-+
-+ GPIO_maddr22_b = GPIO_pin4_b, // M&P bus bit 22.
-+ GPIO_maddr22_m = GPIO_pin4_m,
-+ GPIO_maddr22_cfg_v = GPIO_output_v,
-+
-+ GPIO_maddr23_b = GPIO_pin5_b, // M&P bus bit 23.
-+ GPIO_maddr23_m = GPIO_pin5_m,
-+ GPIO_maddr23_cfg_v = GPIO_output_v,
-+
-+ GPIO_maddr24_b = GPIO_pin6_b, // M&P bus bit 24.
-+ GPIO_maddr24_m = GPIO_pin6_m,
-+ GPIO_maddr24_cfg_v = GPIO_output_v,
-+
-+ GPIO_maddr25_b = GPIO_pin7_b, // M&P bus bit 25.
-+ GPIO_maddr25_m = GPIO_pin7_m,
-+ GPIO_maddr25_cfg_v = GPIO_output_v,
-+
-+ GPIO_cpudmadebug_b = GPIO_pin8_b, // CPU or DMA debug pin
-+ GPIO_cpudmadebug_m = GPIO_pin8_m,
-+ GPIO_cpudmadebug_cfg_v = GPIO_output_v,
-+
-+ GPIO_pcireq4_b = GPIO_pin9_b, // PCI Request 4
-+ GPIO_pcireq4_m = GPIO_pin9_m,
-+ GPIO_pcireq4_cfg_v = GPIO_input_v,
-+
-+ GPIO_pcigrant4_b = GPIO_pin10_b, // PCI Grant 4
-+ GPIO_pcigrant4_m = GPIO_pin10_m,
-+ GPIO_pcigrant4_cfg_v = GPIO_output_v,
-+
-+ GPIO_pcireq5_b = GPIO_pin11_b, // PCI Request 5
-+ GPIO_pcireq5_m = GPIO_pin11_m,
-+ GPIO_pcireq5_cfg_v = GPIO_input_v,
-+
-+ GPIO_pcigrant5_b = GPIO_pin12_b, // PCI Grant 5
-+ GPIO_pcigrant5_m = GPIO_pin12_m,
-+ GPIO_pcigrant5_cfg_v = GPIO_output_v,
-+
-+ GPIO_pcimuintn_b = GPIO_pin13_b, // PCI messaging int.
-+ GPIO_pcimuintn_m = GPIO_pin13_m,
-+ GPIO_pcimuintn_cfg_v = GPIO_output_v,
-+
-+} GPIO_DEFS_t;
-+
-+#endif // __IDT_GPIO_H__
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,199 @@
-+ /**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Definitions for IDT RC32434 CPU
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef _RC32434_H_
-+#define _RC32434_H_
-+
-+#include <linux/config.h>
-+#include <linux/delay.h>
-+#include <asm/io.h>
-+#include <asm/idt-boards/rc32434/rc32434_timer.h>
-+
-+#define RC32434_REG_BASE 0x18000000
-+
-+
-+#define interrupt ((volatile INT_t ) INT0_VirtualAddress)
-+#define idt_timer ((volatile TIM_t) TIM0_VirtualAddress)
-+#define idt_gpio ((volatile GPIO_t) GPIO0_VirtualAddress)
-+
-+#define IDT_CLOCK_MULT 2
-+#define MIPS_CPU_TIMER_IRQ 7
-+/* Interrupt Controller */
-+#define IC_GROUP0_PEND (RC32434_REG_BASE + 0x38000)
-+#define IC_GROUP0_MASK (RC32434_REG_BASE + 0x38008)
-+#define IC_GROUP_OFFSET 0x0C
-+#define RTC_BASE 0xBA001FF0
-+
-+#define NUM_INTR_GROUPS 5
-+/* 16550 UARTs */
-+
-+#define GROUP0_IRQ_BASE 8 /* GRP2 IRQ numbers start here */
-+#define GROUP1_IRQ_BASE (GROUP0_IRQ_BASE + 32) /* GRP3 IRQ numbers start here */
-+#define GROUP2_IRQ_BASE (GROUP1_IRQ_BASE + 32) /* GRP4 IRQ numbers start here */
-+#define GROUP3_IRQ_BASE (GROUP2_IRQ_BASE + 32) /* GRP5 IRQ numbers start here */
-+#define GROUP4_IRQ_BASE (GROUP3_IRQ_BASE + 32)
-+
-+#ifdef __MIPSEB__
-+
-+#define RC32434_UART0_BASE (RC32434_REG_BASE + 0x58003)
-+#define EB434_UART1_BASE (0x19800003)
-+
-+#else
-+
-+#define RC32434_UART0_BASE (RC32434_REG_BASE + 0x58000)
-+#define EB434_UART1_BASE (0x19800000)
-+
-+#endif
-+
-+#define RC32434_UART0_IRQ GROUP3_IRQ_BASE + 0
-+#define EB434_UART1_IRQ GROUP4_IRQ_BASE + 11
-+
-+#define RC32434_NR_IRQS (GROUP4_IRQ_BASE + 32)
-+
-+/* cpu pipeline flush */
-+static inline void rc32434_sync(void)
-+{
-+ __asm__ volatile ("sync");
-+}
-+
-+static inline void rc32434_sync_udelay(int us)
-+{
-+ __asm__ volatile ("sync");
-+ udelay(us);
-+}
-+
-+static inline void rc32434_sync_delay(int ms)
-+{
-+ __asm__ volatile ("sync");
-+ mdelay(ms);
-+}
-+
-+
-+
-+/*
-+ * Macros to access internal RC32434 registers. No byte
-+ * swapping should be done when accessing the internal
-+ * registers.
-+ */
-+
-+#define rc32434_readb __raw_readb
-+#define rc32434_readw __raw_readw
-+#define rc32434_readl __raw_readl
-+
-+#define rc32434_writeb __raw_writeb
-+#define rc32434_writew __raw_writew
-+#define rc32434_writel __raw_writel
-+
-+#if 0
-+static inline u8 rc32434_readb(unsigned long pa)
-+{
-+ return *((volatile u8 *)KSEG1ADDR(pa));
-+}
-+static inline u16 rc32434_readw(unsigned long pa)
-+{
-+ return *((volatile u16 *)KSEG1ADDR(pa));
-+}
-+static inline u32 rc32434_readl(unsigned long pa)
-+{
-+ return *((volatile u32 *)KSEG1ADDR(pa));
-+}
-+static inline void rc32434_writeb(u8 val, unsigned long pa)
-+{
-+ *((volatile u8 *)KSEG1ADDR(pa)) = val;
-+}
-+static inline void rc32434_writew(u16 val, unsigned long pa)
-+{
-+ *((volatile u16 *)KSEG1ADDR(pa)) = val;
-+}
-+static inline void rc32434_writel(u32 val, unsigned long pa)
-+{
-+ *((volatile u32 *)KSEG1ADDR(pa)) = val;
-+}
-+
-+#endif
-+
-+
-+/*
-+ * C access to CLZ and CLO instructions
-+ * (count leading zeroes/ones).
-+ */
-+static inline int rc32434_clz(unsigned long val)
-+{
-+ int ret;
-+ __asm__ volatile (
-+ ".set\tnoreorder\n\t"
-+ ".set\tnoat\n\t"
-+ ".set\tmips32\n\t"
-+ "clz\t%0,%1\n\t"
-+ ".set\tmips0\n\t"
-+ ".set\tat\n\t"
-+ ".set\treorder"
-+ : "=r" (ret)
-+ : "r" (val));
-+
-+ return ret;
-+}
-+static inline int rc32434_clo(unsigned long val)
-+{
-+ int ret;
-+ __asm__ volatile (
-+ ".set\tnoreorder\n\t"
-+ ".set\tnoat\n\t"
-+ ".set\tmips32\n\t"
-+ "clo\t%0,%1\n\t"
-+ ".set\tmips0\n\t"
-+ ".set\tat\n\t"
-+ ".set\treorder"
-+ : "=r" (ret)
-+ : "r" (val));
-+
-+ return ret;
-+}
-+#endif /* _RC32434_H_ */
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_integ.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_integ.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_integ.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_integ.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,90 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * System Integrity register definition
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_INTEG_H__
-+#define __IDT_INTEG_H__
-+
-+enum
-+{
-+ INTEG0_PhysicalAddress = 0x18030000,
-+ INTEG_PhysicalAddress = INTEG0_PhysicalAddress, // Default
-+
-+ INTEG0_VirtualAddress = 0xB8030000,
-+ INTEG_VirtualAddress = INTEG0_VirtualAddress, // Default
-+} ;
-+
-+// if you are looking for CEA, try rst.h
-+typedef struct
-+{
-+ u32 filler [0xc] ; // 0x30 bytes unused.
-+ u32 errcs ; // sticky use ERRCS_
-+ u32 wtcount ; // Watchdog timer count reg.
-+ u32 wtcompare ; // Watchdog timer timeout value.
-+ u32 wtc ; // Watchdog timer control. use WTC_
-+} volatile *INTEG_t ;
-+
-+enum
-+{
-+ ERRCS_wto_b = 0, // In INTEG_t -> errcs
-+ ERRCS_wto_m = 0x00000001,
-+ ERRCS_wne_b = 1, // In INTEG_t -> errcs
-+ ERRCS_wne_m = 0x00000002,
-+ ERRCS_ucw_b = 2, // In INTEG_t -> errcs
-+ ERRCS_ucw_m = 0x00000004,
-+ ERRCS_ucr_b = 3, // In INTEG_t -> errcs
-+ ERRCS_ucr_m = 0x00000008,
-+ ERRCS_upw_b = 4, // In INTEG_t -> errcs
-+ ERRCS_upw_m = 0x00000010,
-+ ERRCS_upr_b = 5, // In INTEG_t -> errcs
-+ ERRCS_upr_m = 0x00000020,
-+ ERRCS_udw_b = 6, // In INTEG_t -> errcs
-+ ERRCS_udw_m = 0x00000040,
-+ ERRCS_udr_b = 7, // In INTEG_t -> errcs
-+ ERRCS_udr_m = 0x00000080,
-+ ERRCS_sae_b = 8, // In INTEG_t -> errcs
-+ ERRCS_sae_m = 0x00000100,
-+ ERRCS_wre_b = 9, // In INTEG_t -> errcs
-+ ERRCS_wre_m = 0x00000200,
-+
-+ WTC_en_b = 0, // In INTEG_t -> wtc
-+ WTC_en_m = 0x00000001,
-+ WTC_to_b = 1, // In INTEG_t -> wtc
-+ WTC_to_m = 0x00000002,
-+} ;
-+
-+#endif // __IDT_INTEG_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_int.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_int.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_int.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_int.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,174 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Interrupt Controller register definition.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_INT_H__
-+#define __IDT_INT_H__
-+
-+enum
-+{
-+ INT0_PhysicalAddress = 0x18038000,
-+ INT_PhysicalAddress = INT0_PhysicalAddress, // Default
-+
-+ INT0_VirtualAddress = 0xB8038000,
-+ INT_VirtualAddress = INT0_VirtualAddress, // Default
-+} ;
-+
-+struct INT_s
-+{
-+ u32 ipend ; //Pending interrupts. use INT?_
-+ u32 itest ; //Test bits. use INT?_
-+ u32 imask ; //Interrupt disabled when set. use INT?_
-+} ;
-+
-+enum
-+{
-+ IPEND2 = 0, // HW 2 interrupt to core. use INT2_
-+ IPEND3 = 1, // HW 3 interrupt to core. use INT3_
-+ IPEND4 = 2, // HW 4 interrupt to core. use INT4_
-+ IPEND5 = 3, // HW 5 interrupt to core. use INT5_
-+ IPEND6 = 4, // HW 6 interrupt to core. use INT6_
-+
-+ IPEND_count, // must be last (used in loops)
-+ IPEND_min = IPEND2 // min IPEND (used in loops)
-+};
-+
-+typedef struct INTC_s
-+{
-+ struct INT_s i [IPEND_count] ;// use i[IPEND?] = INT?_
-+ u32 nmips ; // use NMIPS_
-+} volatile *INT_t ;
-+
-+enum
-+{
-+ INT2_timer0_b = 0,
-+ INT2_timer0_m = 0x00000001,
-+ INT2_timer1_b = 1,
-+ INT2_timer1_m = 0x00000002,
-+ INT2_timer2_b = 2,
-+ INT2_timer2_m = 0x00000004,
-+ INT2_refresh_b = 3,
-+ INT2_refresh_m = 0x00000008,
-+ INT2_watchdogTimeout_b = 4,
-+ INT2_watchdogTimeout_m = 0x00000010,
-+ INT2_undecodedCpuWrite_b = 5,
-+ INT2_undecodedCpuWrite_m = 0x00000020,
-+ INT2_undecodedCpuRead_b = 6,
-+ INT2_undecodedCpuRead_m = 0x00000040,
-+ INT2_undecodedPciWrite_b = 7,
-+ INT2_undecodedPciWrite_m = 0x00000080,
-+ INT2_undecodedPciRead_b = 8,
-+ INT2_undecodedPciRead_m = 0x00000100,
-+ INT2_undecodedDmaWrite_b = 9,
-+ INT2_undecodedDmaWrite_m = 0x00000200,
-+ INT2_undecodedDmaRead_b = 10,
-+ INT2_undecodedDmaRead_m = 0x00000400,
-+ INT2_ipBusSlaveAckError_b = 11,
-+ INT2_ipBusSlaveAckError_m = 0x00000800,
-+
-+ INT3_dmaChannel0_b = 0,
-+ INT3_dmaChannel0_m = 0x00000001,
-+ INT3_dmaChannel1_b = 1,
-+ INT3_dmaChannel1_m = 0x00000002,
-+ INT3_dmaChannel2_b = 2,
-+ INT3_dmaChannel2_m = 0x00000004,
-+ INT3_dmaChannel3_b = 3,
-+ INT3_dmaChannel3_m = 0x00000008,
-+ INT3_dmaChannel4_b = 4,
-+ INT3_dmaChannel4_m = 0x00000010,
-+ INT3_dmaChannel5_b = 5,
-+ INT3_dmaChannel5_m = 0x00000020,
-+
-+ INT5_uartGeneral0_b = 0,
-+ INT5_uartGeneral0_m = 0x00000001,
-+ INT5_uartTxrdy0_b = 1,
-+ INT5_uartTxrdy0_m = 0x00000002,
-+ INT5_uartRxrdy0_b = 2,
-+ INT5_uartRxrdy0_m = 0x00000004,
-+ INT5_pci_b = 3,
-+ INT5_pci_m = 0x00000008,
-+ INT5_pciDecoupled_b = 4,
-+ INT5_pciDecoupled_m = 0x00000010,
-+ INT5_spi_b = 5,
-+ INT5_spi_m = 0x00000020,
-+ INT5_deviceDecoupled_b = 6,
-+ INT5_deviceDecoupled_m = 0x00000040,
-+ INT5_eth0Ovr_b = 9,
-+ INT5_eth0Ovr_m = 0x00000200,
-+ INT5_eth0Und_b = 10,
-+ INT5_eth0Und_m = 0x00000400,
-+ INT5_eth0Pfd_b = 11,
-+ INT5_eth0Pfd_m = 0x00000800,
-+ INT5_nvram_b = 12,
-+ INT5_nvram_m = 0x00001000,
-+
-+ INT6_gpio0_b = 0,
-+ INT6_gpio0_m = 0x00000001,
-+ INT6_gpio1_b = 1,
-+ INT6_gpio1_m = 0x00000002,
-+ INT6_gpio2_b = 2,
-+ INT6_gpio2_m = 0x00000004,
-+ INT6_gpio3_b = 3,
-+ INT6_gpio3_m = 0x00000008,
-+ INT6_gpio4_b = 4,
-+ INT6_gpio4_m = 0x00000010,
-+ INT6_gpio5_b = 5,
-+ INT6_gpio5_m = 0x00000020,
-+ INT6_gpio6_b = 6,
-+ INT6_gpio6_m = 0x00000040,
-+ INT6_gpio7_b = 7,
-+ INT6_gpio7_m = 0x00000080,
-+ INT6_gpio8_b = 8,
-+ INT6_gpio8_m = 0x00000100,
-+ INT6_gpio9_b = 9,
-+ INT6_gpio9_m = 0x00000200,
-+ INT6_gpio10_b = 10,
-+ INT6_gpio10_m = 0x00000400,
-+ INT6_gpio11_b = 11,
-+ INT6_gpio11_m = 0x00000800,
-+ INT6_gpio12_b = 12,
-+ INT6_gpio12_m = 0x00001000,
-+ INT6_gpio13_b = 13,
-+ INT6_gpio13_m = 0x00002000,
-+
-+ NMIPS_gpio_b = 0,
-+ NMIPS_gpio_m = 0x00000001,
-+} ;
-+
-+#endif // __IDT_INT_H__
-+
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,111 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * IP Arbiter register definitions
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt,neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_IPARB_H__
-+#define __IDT_IPARB_H__
-+
-+enum
-+{
-+ IPARB0_PhysicalAddress = 0x18048000,
-+ IPARB_PhysicalAddress = IPARB0_PhysicalAddress, // Default
-+
-+ IPARB0_VirtualAddress = 0xB8048000,
-+ IPARB_VirtualAddress = IPARB0_VirtualAddress, // Default
-+} ;
-+
-+enum
-+{
-+ IPABMXC_ethernet0Receive = 0,
-+ IPABMXC_ethernet0Transmit = 1,
-+ IPABMXC_memoryToHoldFifo = 2,
-+ IPABMXC_holdFifoToMemory = 3,
-+ IPABMXC_pciToMemory = 4,
-+ IPABMXC_memoryToPci = 5,
-+ IPABMXC_pciTarget = 6,
-+ IPABMXC_pciTargetStart = 7,
-+ IPABMXC_cpuToIpBus = 8,
-+
-+ IPABMXC_Count, // Must be last in list !
-+ IPABMXC_Min = IPABMXC_ethernet0Receive,
-+
-+ IPAPXC_PriorityCount = 4, // 3-highest, 0-lowest.
-+} ;
-+
-+typedef struct
-+{
-+ u32 ipapc [IPAPXC_PriorityCount] ; // ipapc[IPAPXC_] = IPAPC_
-+ u32 ipabmc [IPABMXC_Count] ; // ipabmc[IPABMXC_] = IPABMC_
-+ u32 ipac ; // use IPAC_
-+ u32 ipaitcc; // use IPAITCC_
-+ u32 ipaspare ;
-+} volatile * IPARB_t ;
-+
-+enum
-+{
-+ IPAC_dp_b = 0,
-+ IPAC_dp_m = 0x00000001,
-+ IPAC_dep_b = 1,
-+ IPAC_dep_m = 0x00000002,
-+ IPAC_drm_b = 2,
-+ IPAC_drm_m = 0x00000004,
-+ IPAC_dwm_b = 3,
-+ IPAC_dwm_m = 0x00000008,
-+ IPAC_msk_b = 4,
-+ IPAC_msk_m = 0x00000010,
-+
-+ IPAPC_ptc_b = 0,
-+ IPAPC_ptc_m = 0x00003fff,
-+ IPAPC_mf_b = 14,
-+ IPAPC_mf_m = 0x00004000,
-+ IPAPC_cptc_b = 16,
-+ IPAPC_cptc_m = 0x3fff0000,
-+
-+ IPAITCC_itcc = 0,
-+ IPAITCC_itcc, = 0x000001ff,
-+
-+ IPABMC_mtc_b = 0,
-+ IPABMC_mtc_m = 0x00000fff,
-+ IPABMC_p_b = 12,
-+ IPABMC_p_m = 0x00003000,
-+ IPABMC_msk_b = 14,
-+ IPABMC_msk_m = 0x00004000,
-+ IPABMC_cmtc_b = 16,
-+ IPABMC_cmtc_m = 0x0fff0000,
-+};
-+
-+#endif // __IDT_IPARB_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_pci.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_pci.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_pci.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_pci.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,695 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * PCI register definitio
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_PCI_H__
-+#define __IDT_PCI_H__
-+
-+enum
-+{
-+ PCI0_PhysicalAddress = 0x18080000,
-+ PCI_PhysicalAddress = PCI0_PhysicalAddress,
-+
-+ PCI0_VirtualAddress = 0xB8080000,
-+ PCI_VirtualAddress = PCI0_VirtualAddress,
-+} ;
-+
-+enum
-+{
-+ PCI_LbaCount = 4, // Local base addresses.
-+} ;
-+
-+typedef struct
-+{
-+ u32 a ; // Address.
-+ u32 c ; // Control.
-+ u32 m ; // mapping.
-+} PCI_Map_s ;
-+
-+typedef struct
-+{
-+ u32 pcic ;
-+ u32 pcis ;
-+ u32 pcism ;
-+ u32 pcicfga ;
-+ u32 pcicfgd ;
-+ PCI_Map_s pcilba [PCI_LbaCount] ;
-+ u32 pcidac ;
-+ u32 pcidas ;
-+ u32 pcidasm ;
-+ u32 pcidad ;
-+ u32 pcidma8c ;
-+ u32 pcidma9c ;
-+ u32 pcitc ;
-+} volatile *PCI_t ;
-+
-+// PCI messaging unit.
-+enum
-+{
-+ PCIM_Count = 2,
-+} ;
-+typedef struct
-+{
-+ u32 pciim [PCIM_Count] ;
-+ u32 pciom [PCIM_Count] ;
-+ u32 pciid ;
-+ u32 pciiic ;
-+ u32 pciiim ;
-+ u32 pciiod ;
-+ u32 pciioic ;
-+ u32 pciioim ;
-+} volatile *PCIM_t ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Control Register
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCIC_en_b = 0,
-+ PCIC_en_m = 0x00000001,
-+ PCIC_tnr_b = 1,
-+ PCIC_tnr_m = 0x00000002,
-+ PCIC_sce_b = 2,
-+ PCIC_sce_m = 0x00000004,
-+ PCIC_ien_b = 3,
-+ PCIC_ien_m = 0x00000008,
-+ PCIC_aaa_b = 4,
-+ PCIC_aaa_m = 0x00000010,
-+ PCIC_eap_b = 5,
-+ PCIC_eap_m = 0x00000020,
-+ PCIC_pcim_b = 6,
-+ PCIC_pcim_m = 0x000001c0,
-+ PCIC_pcim_disabled_v = 0,
-+ PCIC_pcim_tnr_v = 1, // Satellite - target not ready
-+ PCIC_pcim_suspend_v = 2, // Satellite - suspended CPU.
-+ PCIC_pcim_extern_v = 3, // Host - external arbiter.
-+ PCIC_pcim_fixed_v = 4, // Host - fixed priority arb.
-+ PCIC_pcim_roundrobin_v = 5, // Host - round robin priority.
-+ PCIC_pcim_reserved6_v = 6,
-+ PCIC_pcim_reserved7_v = 7,
-+ PCIC_igm_b = 9,
-+ PCIC_igm_m = 0x00000200,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Status Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCIS_eed_b = 0,
-+ PCIS_eed_m = 0x00000001,
-+ PCIS_wr_b = 1,
-+ PCIS_wr_m = 0x00000002,
-+ PCIS_nmi_b = 2,
-+ PCIS_nmi_m = 0x00000004,
-+ PCIS_ii_b = 3,
-+ PCIS_ii_m = 0x00000008,
-+ PCIS_cwe_b = 4,
-+ PCIS_cwe_m = 0x00000010,
-+ PCIS_cre_b = 5,
-+ PCIS_cre_m = 0x00000020,
-+ PCIS_mdpe_b = 6,
-+ PCIS_mdpe_m = 0x00000040,
-+ PCIS_sta_b = 7,
-+ PCIS_sta_m = 0x00000080,
-+ PCIS_rta_b = 8,
-+ PCIS_rta_m = 0x00000100,
-+ PCIS_rma_b = 9,
-+ PCIS_rma_m = 0x00000200,
-+ PCIS_sse_b = 10,
-+ PCIS_sse_m = 0x00000400,
-+ PCIS_ose_b = 11,
-+ PCIS_ose_m = 0x00000800,
-+ PCIS_pe_b = 12,
-+ PCIS_pe_m = 0x00001000,
-+ PCIS_tae_b = 13,
-+ PCIS_tae_m = 0x00002000,
-+ PCIS_rle_b = 14,
-+ PCIS_rle_m = 0x00004000,
-+ PCIS_bme_b = 15,
-+ PCIS_bme_m = 0x00008000,
-+ PCIS_prd_b = 16,
-+ PCIS_prd_m = 0x00010000,
-+ PCIS_rip_b = 17,
-+ PCIS_rip_m = 0x00020000,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Status Mask Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCISM_eed_b = 0,
-+ PCISM_eed_m = 0x00000001,
-+ PCISM_wr_b = 1,
-+ PCISM_wr_m = 0x00000002,
-+ PCISM_nmi_b = 2,
-+ PCISM_nmi_m = 0x00000004,
-+ PCISM_ii_b = 3,
-+ PCISM_ii_m = 0x00000008,
-+ PCISM_cwe_b = 4,
-+ PCISM_cwe_m = 0x00000010,
-+ PCISM_cre_b = 5,
-+ PCISM_cre_m = 0x00000020,
-+ PCISM_mdpe_b = 6,
-+ PCISM_mdpe_m = 0x00000040,
-+ PCISM_sta_b = 7,
-+ PCISM_sta_m = 0x00000080,
-+ PCISM_rta_b = 8,
-+ PCISM_rta_m = 0x00000100,
-+ PCISM_rma_b = 9,
-+ PCISM_rma_m = 0x00000200,
-+ PCISM_sse_b = 10,
-+ PCISM_sse_m = 0x00000400,
-+ PCISM_ose_b = 11,
-+ PCISM_ose_m = 0x00000800,
-+ PCISM_pe_b = 12,
-+ PCISM_pe_m = 0x00001000,
-+ PCISM_tae_b = 13,
-+ PCISM_tae_m = 0x00002000,
-+ PCISM_rle_b = 14,
-+ PCISM_rle_m = 0x00004000,
-+ PCISM_bme_b = 15,
-+ PCISM_bme_m = 0x00008000,
-+ PCISM_prd_b = 16,
-+ PCISM_prd_m = 0x00010000,
-+ PCISM_rip_b = 17,
-+ PCISM_rip_m = 0x00020000,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Configuration Address Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCICFGA_reg_b = 2,
-+ PCICFGA_reg_m = 0x000000fc,
-+ PCICFGA_reg_id_v = 0x00>>2, //use PCFGID_
-+ PCICFGA_reg_04_v = 0x04>>2, //use PCFG04_
-+ PCICFGA_reg_08_v = 0x08>>2, //use PCFG08_
-+ PCICFGA_reg_0C_v = 0x0C>>2, //use PCFG0C_
-+ PCICFGA_reg_pba0_v = 0x10>>2, //use PCIPBA_
-+ PCICFGA_reg_pba1_v = 0x14>>2, //use PCIPBA_
-+ PCICFGA_reg_pba2_v = 0x18>>2, //use PCIPBA_
-+ PCICFGA_reg_pba3_v = 0x1c>>2, //use PCIPBA_
-+ PCICFGA_reg_subsystem_v = 0x2c>>2, //use PCFGSS_
-+ PCICFGA_reg_3C_v = 0x3C>>2, //use PCFG3C_
-+ PCICFGA_reg_pba0c_v = 0x44>>2, //use PCIPBAC_
-+ PCICFGA_reg_pba0m_v = 0x48>>2,
-+ PCICFGA_reg_pba1c_v = 0x4c>>2, //use PCIPBAC_
-+ PCICFGA_reg_pba1m_v = 0x50>>2,
-+ PCICFGA_reg_pba2c_v = 0x54>>2, //use PCIPBAC_
-+ PCICFGA_reg_pba2m_v = 0x58>>2,
-+ PCICFGA_reg_pba3c_v = 0x5c>>2, //use PCIPBAC_
-+ PCICFGA_reg_pba3m_v = 0x60>>2,
-+ PCICFGA_reg_pmgt_v = 0x64>>2,
-+ PCICFGA_func_b = 8,
-+ PCICFGA_func_m = 0x00000700,
-+ PCICFGA_dev_b = 11,
-+ PCICFGA_dev_m = 0x0000f800,
-+ PCICFGA_dev_internal_v = 0,
-+ PCICFGA_bus_b = 16,
-+ PCICFGA_bus_m = 0x00ff0000,
-+ PCICFGA_bus_type0_v = 0, //local bus
-+ PCICFGA_en_b = 31, // read only
-+ PCICFGA_en_m = 0x80000000,
-+} ;
-+
-+enum {
-+ PCFGID_vendor_b = 0,
-+ PCFGID_vendor_m = 0x0000ffff,
-+ PCFGID_vendor_IDT_v = 0x111d,
-+ PCFGID_device_b = 16,
-+ PCFGID_device_m = 0xffff0000,
-+ PCFGID_device_Korinade_v = 0x0214,
-+
-+ PCFG04_command_ioena_b = 1,
-+ PCFG04_command_ioena_m = 0x00000001,
-+ PCFG04_command_memena_b = 2,
-+ PCFG04_command_memena_m = 0x00000002,
-+ PCFG04_command_bmena_b = 3,
-+ PCFG04_command_bmena_m = 0x00000004,
-+ PCFG04_command_mwinv_b = 5,
-+ PCFG04_command_mwinv_m = 0x00000010,
-+ PCFG04_command_parena_b = 7,
-+ PCFG04_command_parena_m = 0x00000040,
-+ PCFG04_command_serrena_b = 9,
-+ PCFG04_command_serrena_m = 0x00000100,
-+ PCFG04_command_fastbbena_b = 10,
-+ PCFG04_command_fastbbena_m = 0x00000200,
-+ PCFG04_status_b = 16,
-+ PCFG04_status_m = 0xffff0000,
-+ PCFG04_status_66MHz_b = 21, // 66 MHz enable
-+ PCFG04_status_66MHz_m = 0x00200000,
-+ PCFG04_status_fbb_b = 23,
-+ PCFG04_status_fbb_m = 0x00800000,
-+ PCFG04_status_mdpe_b = 24,
-+ PCFG04_status_mdpe_m = 0x01000000,
-+ PCFG04_status_dst_b = 25,
-+ PCFG04_status_dst_m = 0x06000000,
-+ PCFG04_status_sta_b = 27,
-+ PCFG04_status_sta_m = 0x08000000,
-+ PCFG04_status_rta_b = 28,
-+ PCFG04_status_rta_m = 0x10000000,
-+ PCFG04_status_rma_b = 29,
-+ PCFG04_status_rma_m = 0x20000000,
-+ PCFG04_status_sse_b = 30,
-+ PCFG04_status_sse_m = 0x40000000,
-+ PCFG04_status_pe_b = 31,
-+ PCFG04_status_pe_m = 0x40000000,
-+
-+ PCFG08_revId_b = 0,
-+ PCFG08_revId_m = 0x000000ff,
-+ PCFG08_classCode_b = 0,
-+ PCFG08_classCode_m = 0xffffff00,
-+ PCFG08_classCode_bridge_v = 06,
-+ PCFG08_classCode_proc_v = 0x0b3000, // processor-MIPS
-+ PCFG0C_cacheline_b = 0,
-+ PCFG0C_cacheline_m = 0x000000ff,
-+ PCFG0C_masterLatency_b = 8,
-+ PCFG0C_masterLatency_m = 0x0000ff00,
-+ PCFG0C_headerType_b = 16,
-+ PCFG0C_headerType_m = 0x00ff0000,
-+ PCFG0C_bist_b = 24,
-+ PCFG0C_bist_m = 0xff000000,
-+
-+ PCIPBA_msi_b = 0,
-+ PCIPBA_msi_m = 0x00000001,
-+ PCIPBA_p_b = 3,
-+ PCIPBA_p_m = 0x00000004,
-+ PCIPBA_baddr_b = 8,
-+ PCIPBA_baddr_m = 0xffffff00,
-+
-+ PCFGSS_vendorId_b = 0,
-+ PCFGSS_vendorId_m = 0x0000ffff,
-+ PCFGSS_id_b = 16,
-+ PCFGSS_id_m = 0xffff0000,
-+
-+ PCFG3C_interruptLine_b = 0,
-+ PCFG3C_interruptLine_m = 0x000000ff,
-+ PCFG3C_interruptPin_b = 8,
-+ PCFG3C_interruptPin_m = 0x0000ff00,
-+ PCFG3C_minGrant_b = 16,
-+ PCFG3C_minGrant_m = 0x00ff0000,
-+ PCFG3C_maxLat_b = 24,
-+ PCFG3C_maxLat_m = 0xff000000,
-+
-+ PCIPBAC_msi_b = 0,
-+ PCIPBAC_msi_m = 0x00000001,
-+ PCIPBAC_p_b = 1,
-+ PCIPBAC_p_m = 0x00000002,
-+ PCIPBAC_size_b = 2,
-+ PCIPBAC_size_m = 0x0000007c,
-+ PCIPBAC_sb_b = 7,
-+ PCIPBAC_sb_m = 0x00000080,
-+ PCIPBAC_pp_b = 8,
-+ PCIPBAC_pp_m = 0x00000100,
-+ PCIPBAC_mr_b = 9,
-+ PCIPBAC_mr_m = 0x00000600,
-+ PCIPBAC_mr_read_v =0, //no prefetching
-+ PCIPBAC_mr_readLine_v =1,
-+ PCIPBAC_mr_readMult_v =2,
-+ PCIPBAC_mrl_b = 11,
-+ PCIPBAC_mrl_m = 0x00000800,
-+ PCIPBAC_mrm_b = 12,
-+ PCIPBAC_mrm_m = 0x00001000,
-+ PCIPBAC_trp_b = 13,
-+ PCIPBAC_trp_m = 0x00002000,
-+
-+ PCFG40_trdyTimeout_b = 0,
-+ PCFG40_trdyTimeout_m = 0x000000ff,
-+ PCFG40_retryLim_b = 8,
-+ PCFG40_retryLim_m = 0x0000ff00,
-+};
-+
-+/*******************************************************************************
-+ *
-+ * PCI Local Base Address [0|1|2|3] Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCILBA_baddr_b = 0, // In PCI_t -> pcilba [] .a
-+ PCILBA_baddr_m = 0xffffff00,
-+} ;
-+/*******************************************************************************
-+ *
-+ * PCI Local Base Address Control Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCILBAC_msi_b = 0, // In pPci->pcilba[i].c
-+ PCILBAC_msi_m = 0x00000001,
-+ PCILBAC_msi_mem_v = 0,
-+ PCILBAC_msi_io_v = 1,
-+ PCILBAC_size_b = 2, // In pPci->pcilba[i].c
-+ PCILBAC_size_m = 0x0000007c,
-+ PCILBAC_sb_b = 7, // In pPci->pcilba[i].c
-+ PCILBAC_sb_m = 0x00000080,
-+ PCILBAC_rt_b = 8, // In pPci->pcilba[i].c
-+ PCILBAC_rt_m = 0x00000100,
-+ PCILBAC_rt_noprefetch_v = 0, // mem read
-+ PCILBAC_rt_prefetch_v = 1, // mem readline
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Local Base Address [0|1|2|3] Mapping Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCILBAM_maddr_b = 8,
-+ PCILBAM_maddr_m = 0xffffff00,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Decoupled Access Control Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCIDAC_den_b = 0,
-+ PCIDAC_den_m = 0x00000001,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Decoupled Access Status Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCIDAS_d_b = 0,
-+ PCIDAS_d_m = 0x00000001,
-+ PCIDAS_b_b = 1,
-+ PCIDAS_b_m = 0x00000002,
-+ PCIDAS_e_b = 2,
-+ PCIDAS_e_m = 0x00000004,
-+ PCIDAS_ofe_b = 3,
-+ PCIDAS_ofe_m = 0x00000008,
-+ PCIDAS_off_b = 4,
-+ PCIDAS_off_m = 0x00000010,
-+ PCIDAS_ife_b = 5,
-+ PCIDAS_ife_m = 0x00000020,
-+ PCIDAS_iff_b = 6,
-+ PCIDAS_iff_m = 0x00000040,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI DMA Channel 8 Configuration Register
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCIDMA8C_mbs_b = 0, // Maximum Burst Size.
-+ PCIDMA8C_mbs_m = 0x00000fff, // { pcidma8c }
-+ PCIDMA8C_our_b = 12, // Optimize Unaligned Burst Reads.
-+ PCIDMA8C_our_m = 0x00001000, // { pcidma8c }
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI DMA Channel 9 Configuration Register
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCIDMA9C_mbs_b = 0, // Maximum Burst Size.
-+ PCIDMA9C_mbs_m = 0x00000fff, // { pcidma9c }
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI to Memory(DMA Channel 8) AND Memory to PCI DMA(DMA Channel 9)Descriptors
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCIDMAD_pt_b = 22, // in DEVCMD field (descriptor)
-+ PCIDMAD_pt_m = 0x00c00000, // preferred transaction field
-+ // These are for reads (DMA channel 8)
-+ PCIDMAD_devcmd_mr_v = 0, //memory read
-+ PCIDMAD_devcmd_mrl_v = 1, //memory read line
-+ PCIDMAD_devcmd_mrm_v = 2, //memory read multiple
-+ PCIDMAD_devcmd_ior_v = 3, //I/O read
-+ // These are for writes (DMA channel 9)
-+ PCIDMAD_devcmd_mw_v = 0, //memory write
-+ PCIDMAD_devcmd_mwi_v = 1, //memory write invalidate
-+ PCIDMAD_devcmd_iow_v = 3, //I/O write
-+
-+ // Swap byte field applies to both DMA channel 8 and 9
-+ PCIDMAD_sb_b = 24, // in DEVCMD field (descriptor)
-+ PCIDMAD_sb_m = 0x01000000, // swap byte field
-+} ;
-+
-+
-+/*******************************************************************************
-+ *
-+ * PCI Target Control Register
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCITC_rtimer_b = 0, // In PCITC_t -> pcitc
-+ PCITC_rtimer_m = 0x000000ff,
-+ PCITC_dtimer_b = 8, // In PCITC_t -> pcitc
-+ PCITC_dtimer_m = 0x0000ff00,
-+ PCITC_rdr_b = 18, // In PCITC_t -> pcitc
-+ PCITC_rdr_m = 0x00040000,
-+ PCITC_ddt_b = 19, // In PCITC_t -> pcitc
-+ PCITC_ddt_m = 0x00080000,
-+} ;
-+/*******************************************************************************
-+ *
-+ * PCI messaging unit [applies to both inbound and outbound registers ]
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCIM_m0_b = 0, // In PCIM_t -> {pci{iic,iim,ioic,ioim}}
-+ PCIM_m0_m = 0x00000001, // inbound or outbound message 0
-+ PCIM_m1_b = 1, // In PCIM_t -> {pci{iic,iim,ioic,ioim}}
-+ PCIM_m1_m = 0x00000002, // inbound or outbound message 1
-+ PCIM_db_b = 2, // In PCIM_t -> {pci{iic,iim,ioic,ioim}}
-+ PCIM_db_m = 0x00000004, // inbound or outbound doorbell
-+};
-+
-+
-+
-+
-+
-+
-+#define PCI_MSG_VirtualAddress 0xB8088010
-+#define rc32434_pci ((volatile PCI_t) PCI0_VirtualAddress)
-+#define rc32434_pci_msg ((volatile PCIM_t) PCI_MSG_VirtualAddress)
-+
-+#define PCIM_SHFT 0x6
-+#define PCIM_BIT_LEN 0x7
-+#define PCIM_H_EA 0x3
-+#define PCIM_H_IA_FIX 0x4
-+#define PCIM_H_IA_RR 0x5
-+#if 0
-+#define PCI_ADDR_START 0x13000000
-+#endif
-+
-+#define PCI_ADDR_START 0x50000000
-+
-+#define CPUTOPCI_MEM_WIN 0x02000000
-+#define CPUTOPCI_IO_WIN 0x00100000
-+#define PCILBA_SIZE_SHFT 2
-+#define PCILBA_SIZE_MASK 0x1F
-+#define SIZE_256MB 0x1C
-+#define SIZE_128MB 0x1B
-+#define SIZE_64MB 0x1A
-+#define SIZE_32MB 0x19
-+#define SIZE_16MB 0x18
-+#define SIZE_4MB 0x16
-+#define SIZE_2MB 0x15
-+#define SIZE_1MB 0x14
-+#define KORINA_CONFIG0_ADDR 0x80000000
-+#define KORINA_CONFIG1_ADDR 0x80000004
-+#define KORINA_CONFIG2_ADDR 0x80000008
-+#define KORINA_CONFIG3_ADDR 0x8000000C
-+#define KORINA_CONFIG4_ADDR 0x80000010
-+#define KORINA_CONFIG5_ADDR 0x80000014
-+#define KORINA_CONFIG6_ADDR 0x80000018
-+#define KORINA_CONFIG7_ADDR 0x8000001C
-+#define KORINA_CONFIG8_ADDR 0x80000020
-+#define KORINA_CONFIG9_ADDR 0x80000024
-+#define KORINA_CONFIG10_ADDR 0x80000028
-+#define KORINA_CONFIG11_ADDR 0x8000002C
-+#define KORINA_CONFIG12_ADDR 0x80000030
-+#define KORINA_CONFIG13_ADDR 0x80000034
-+#define KORINA_CONFIG14_ADDR 0x80000038
-+#define KORINA_CONFIG15_ADDR 0x8000003C
-+#define KORINA_CONFIG16_ADDR 0x80000040
-+#define KORINA_CONFIG17_ADDR 0x80000044
-+#define KORINA_CONFIG18_ADDR 0x80000048
-+#define KORINA_CONFIG19_ADDR 0x8000004C
-+#define KORINA_CONFIG20_ADDR 0x80000050
-+#define KORINA_CONFIG21_ADDR 0x80000054
-+#define KORINA_CONFIG22_ADDR 0x80000058
-+#define KORINA_CONFIG23_ADDR 0x8000005C
-+#define KORINA_CONFIG24_ADDR 0x80000060
-+#define KORINA_CONFIG25_ADDR 0x80000064
-+#define KORINA_CMD (PCFG04_command_ioena_m | \
-+ PCFG04_command_memena_m | \
-+ PCFG04_command_bmena_m | \
-+ PCFG04_command_mwinv_m | \
-+ PCFG04_command_parena_m | \
-+ PCFG04_command_serrena_m )
-+
-+#define KORINA_STAT (PCFG04_status_mdpe_m | \
-+ PCFG04_status_sta_m | \
-+ PCFG04_status_rta_m | \
-+ PCFG04_status_rma_m | \
-+ PCFG04_status_sse_m | \
-+ PCFG04_status_pe_m)
-+
-+#define KORINA_CNFG1 ((KORINA_STAT<<16)|KORINA_CMD)
-+
-+#define KORINA_REVID 0
-+#define KORINA_CLASS_CODE 0
-+#define KORINA_CNFG2 ((KORINA_CLASS_CODE<<8) | \
-+ KORINA_REVID)
-+
-+#define KORINA_CACHE_LINE_SIZE 4
-+#define KORINA_MASTER_LAT 0x3c
-+#define KORINA_HEADER_TYPE 0
-+#define KORINA_BIST 0
-+
-+#define KORINA_CNFG3 ((KORINA_BIST << 24) | \
-+ (KORINA_HEADER_TYPE<<16) | \
-+ (KORINA_MASTER_LAT<<8) | \
-+ KORINA_CACHE_LINE_SIZE )
-+
-+#define KORINA_BAR0 0x00000008 /* 128 MB Memory */
-+#define KORINA_BAR1 0x18800001 /* 1 MB IO */
-+#define KORINA_BAR2 0x18000001 /* 2 MB IO window for Korina
-+ internal Registers */
-+#define KORINA_BAR3 0x48000008 /* Spare 128 MB Memory */
-+
-+#define KORINA_CNFG4 KORINA_BAR0
-+#define KORINA_CNFG5 KORINA_BAR1
-+#define KORINA_CNFG6 KORINA_BAR2
-+#define KORINA_CNFG7 KORINA_BAR3
-+
-+#define KORINA_SUBSYS_VENDOR_ID 0x011d
-+#define KORINA_SUBSYSTEM_ID 0x0214
-+#define KORINA_CNFG8 0
-+#define KORINA_CNFG9 0
-+#define KORINA_CNFG10 0
-+#define KORINA_CNFG11 ((KORINA_SUBSYS_VENDOR_ID<<16) | \
-+ KORINA_SUBSYSTEM_ID)
-+#define KORINA_INT_LINE 1
-+#define KORINA_INT_PIN 1
-+#define KORINA_MIN_GNT 8
-+#define KORINA_MAX_LAT 0x38
-+#define KORINA_CNFG12 0
-+#define KORINA_CNFG13 0
-+#define KORINA_CNFG14 0
-+#define KORINA_CNFG15 ((KORINA_MAX_LAT<<24) | \
-+ (KORINA_MIN_GNT<<16) | \
-+ (KORINA_INT_PIN<<8) | \
-+ KORINA_INT_LINE)
-+#define KORINA_RETRY_LIMIT 0x80
-+#define KORINA_TRDY_LIMIT 0x80
-+#define KORINA_CNFG16 ((KORINA_RETRY_LIMIT<<8) | \
-+ KORINA_TRDY_LIMIT)
-+#define PCI_PBAxC_R 0x0
-+#define PCI_PBAxC_RL 0x1
-+#define PCI_PBAxC_RM 0x2
-+#define SIZE_SHFT 2
-+
-+#if defined(__MIPSEB__)
-+#define KORINA_PBA0C ( PCIPBAC_mrl_m | PCIPBAC_sb_m | \
-+ ((PCI_PBAxC_RM &0x3) << PCIPBAC_mr_b) | \
-+ PCIPBAC_pp_m | \
-+ (SIZE_128MB<<SIZE_SHFT) | \
-+ PCIPBAC_p_m)
-+#else
-+#define KORINA_PBA0C ( PCIPBAC_mrl_m | \
-+ ((PCI_PBAxC_RM &0x3) << PCIPBAC_mr_b) | \
-+ PCIPBAC_pp_m | \
-+ (SIZE_128MB<<SIZE_SHFT) | \
-+ PCIPBAC_p_m)
-+#endif
-+#define KORINA_CNFG17 KORINA_PBA0C
-+#define KORINA_PBA0M 0x0
-+#define KORINA_CNFG18 KORINA_PBA0M
-+
-+#if defined(__MIPSEB__)
-+#define KORINA_PBA1C ((SIZE_1MB<<SIZE_SHFT) | PCIPBAC_sb_m | \
-+ PCIPBAC_msi_m)
-+#else
-+#define KORINA_PBA1C ((SIZE_1MB<<SIZE_SHFT) | \
-+ PCIPBAC_msi_m)
-+#endif
-+#define KORINA_CNFG19 KORINA_PBA1C
-+#define KORINA_PBA1M 0x0
-+#define KORINA_CNFG20 KORINA_PBA1M
-+
-+#if defined(__MIPSEB__)
-+#define KORINA_PBA2C ((SIZE_2MB<<SIZE_SHFT) | PCIPBAC_sb_m | \
-+ PCIPBAC_msi_m)
-+#else
-+#define KORINA_PBA2C ((SIZE_2MB<<SIZE_SHFT) | \
-+ PCIPBAC_msi_m)
-+#endif
-+#define KORINA_CNFG21 KORINA_PBA2C
-+#define KORINA_PBA2M 0x18000000
-+#define KORINA_CNFG22 KORINA_PBA2M
-+#define KORINA_PBA3C 0
-+#define KORINA_CNFG23 KORINA_PBA3C
-+#define KORINA_PBA3M 0
-+#define KORINA_CNFG24 KORINA_PBA3M
-+
-+
-+
-+#define PCITC_DTIMER_VAL 8
-+#define PCITC_RTIMER_VAL 0x10
-+
-+
-+
-+
-+#endif // __IDT_PCI_H__
-+
-+
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_rst.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_rst.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_rst.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_rst.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,119 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Reset register definitions.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RST_H__
-+#define __IDT_RST_H__
-+
-+enum
-+{
-+ RST0_PhysicalAddress = 0x18000000,
-+ RST_PhysicalAddress = RST0_PhysicalAddress, // Default
-+
-+ RST0_VirtualAddress = 0xb8000000,
-+ RST_VirtualAddress = RST0_VirtualAddress, // Default
-+} ;
-+
-+typedef struct RST_s
-+{
-+ u32 filler [0x0006] ;
-+ u32 sysid ;
-+ u32 filler2 [0x2000-8] ; // Pad out to offset 0x8000
-+ u32 reset ;
-+ u32 bcv ;
-+ u32 cea ;
-+} volatile * RST_t ;
-+
-+enum
-+{
-+ SYSID_rev_b = 0,
-+ SYSID_rev_m = 0x000000ff,
-+ SYSID_imp_b = 8,
-+ SYSID_imp_m = 0x000fff00,
-+ SYSID_vendor_b = 8,
-+ SYSID_vendor_m = 0xfff00000,
-+
-+ BCV_pll_b = 0,
-+ BCV_pll_m = 0x0000000f,
-+ BCV_pll_PLLBypass_v = 0x0, // PCLK=1*CLK.
-+ BCV_pll_Mul3_v = 0x1, // PCLK=3*CLK.
-+ BCV_pll_Mul4_v = 0x2, // PCLK=4*CLK.
-+ BCV_pll_SlowMul5_v = 0x3, // PCLK=5*CLK.
-+ BCV_pll_Mul5_v = 0x4, // PCLK=5*CLK.
-+ BCV_pll_SlowMul6_v = 0x5, // PCLK=6*CLK.
-+ BCV_pll_Mul6_v = 0x6, // PCLK=6*CLK.
-+ BCV_pll_Mul8_v = 0x7, // PCLK=8*CLK.
-+ BCV_pll_Mul10_v = 0x8, // PCLK=10*CLK.
-+ BCV_pll_Res9_v = 0x9,
-+ BCV_pll_Res10_v = 0xa,
-+ BCV_pll_Res11_v = 0xb,
-+ BCV_pll_Res12_v = 0xc,
-+ BCV_pll_Res13_v = 0xd,
-+ BCV_pll_Res14_v = 0xe,
-+ BCV_pll_Res15_v = 0xf,
-+ BCV_clkDiv_b = 4,
-+ BCV_clkDiv_m = 0x00000030,
-+ BCV_clkDiv_Div1_v = 0x0,
-+ BCV_clkDiv_Div2_v = 0x1,
-+ BCV_clkDiv_Div4_v = 0x2,
-+ BCV_clkDiv_Res3_v = 0x3,
-+ BCV_bigEndian_b = 6,
-+ BCV_bigEndian_m = 0x00000040,
-+ BCV_resetFast_b = 7,
-+ BCV_resetFast_m = 0x00000080,
-+ BCV_pciMode_b = 8,
-+ BCV_pciMode_m = 0x00000700,
-+ BCV_pciMode_disabled_v = 0, // PCI is disabled.
-+ BCV_pciMode_tnr_v = 1, // satellite Target Not Ready.
-+ BCV_pciMode_suspended_v = 2, // satellite with suspended CPU.
-+ BCV_pciMode_external_v = 3, // host, external arbiter.
-+ BCV_pciMode_fixed_v = 4, // host, fixed priority arbiter.
-+ BCV_pciMode_roundRobin_v= 5, // host, round robin arbiter.
-+ BCV_pciMode_res6_v = 6,
-+ BCV_pciMode_res7_v = 7,
-+ BCV_watchDisable_b = 11,
-+ BCV_watchDisable_m = 0x00000800,
-+ BCV_res12_b = 12,
-+ BCV_res12_m = 0x00001000,
-+ BCV_res13_b = 13,
-+ BCV_res13_m = 0x00002000,
-+ BCV_res14_b = 14,
-+ BCV_res14_m = 0x00004000,
-+ BCV_res15_b = 15,
-+ BCV_res15_m = 0x00008000,
-+} ;
-+#endif // __IDT_RST_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_spi.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_spi.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_spi.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_spi.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,120 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Serial Peripheral Interface register definitions.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_SPI_H__
-+#define __IDT_SPI_H__
-+
-+enum
-+{
-+ SPI0_PhysicalAddress = 0x18070000,
-+ SPI_PhysicalAddress = SPI0_PhysicalAddress,
-+
-+ SPI0_VirtualAddress = 0xB8070000,
-+ SPI_VirtualAddress = SPI0_VirtualAddress,
-+} ;
-+
-+typedef struct
-+{
-+ u32 spcp ; // prescalar. 0=off, * spiClk = sysClk/(2*(spcp+1)*SPR)
-+ u32 spc ; // spi control reg use SPC_
-+ u32 sps ; // spi status reg use SPS_
-+ u32 spd ; // spi data reg use SPD_
-+ u32 siofunc ; // serial IO function use SIOFUNC_
-+ u32 siocfg ; // serial IO config use SIOCFG_
-+ u32 siod; // serial IO data use SIOD_
-+} volatile *SPI_t ;
-+
-+enum
-+{
-+ SPCP_div_b = 0,
-+ SPCP_div_m = 0x000000ff,
-+ SPC_spr_b = 0,
-+ SPC_spr_m = 0x00000003,
-+ SPC_spr_div2_v = 0,
-+ SPC_spr_div4_v = 1,
-+ SPC_spr_div16_v = 2,
-+ SPC_spr_div32_v = 3,
-+ SPC_cpha_b = 2,
-+ SPC_cpha_m = 0x00000004,
-+ SPC_cpol_b = 3,
-+ SPC_cpol_m = 0x00000008,
-+ SPC_mstr_b = 4,
-+ SPC_mstr_m = 0x00000010,
-+ SPC_spe_b = 6,
-+ SPC_spe_m = 0x00000040,
-+ SPC_spie_b = 7,
-+ SPC_spie_m = 0x00000080,
-+
-+ SPS_modf_b = 4,
-+ SPS_modf_m = 0x00000010,
-+ SPS_wcol_b = 6,
-+ SPS_wcol_m = 0x00000040,
-+ SPS_spif_b = 7,
-+ SPS_spif_m = 0x00000070,
-+
-+ SPD_data_b = 0,
-+ SPD_data_m = 0x000000ff,
-+
-+ SIOFUNC_sdo_b = 0,
-+ SIOFUNC_sdo_m = 0x00000001,
-+ SIOFUNC_sdi_b = 1,
-+ SIOFUNC_sdi_m = 0x00000002,
-+ SIOFUNC_sck_b = 2,
-+ SIOFUNC_sck_m = 0x00000004,
-+ SIOFUNC_pci_b = 3,
-+ SIOFUNC_pci_m = 0x00000008,
-+
-+ SIOCFG_sdo_b = 0,
-+ SIOCFG_sdo_m = 0x00000001,
-+ SIOCFG_sdi_b = 1,
-+ SIOCFG_sdi_m = 0x00000002,
-+ SIOCFG_sck_b = 2,
-+ SIOCFG_sck_m = 0x00000004,
-+ SIOCFG_pci_b = 3,
-+ SIOCFG_pci_m = 0x00000008,
-+
-+ SIOD_sdo_b = 0,
-+ SIOD_sdo_m = 0x00000001,
-+ SIOD_sdi_b = 1,
-+ SIOD_sdi_m = 0x00000002,
-+ SIOD_sck_b = 2,
-+ SIOD_sck_m = 0x00000004,
-+ SIOD_pci_b = 3,
-+ SIOD_pci_m = 0x00000008,
-+} ;
-+#endif // __IDT_SPI_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_timer.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_timer.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_timer.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_timer.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,91 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Definitions for timer registers
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt,neb.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_TIM_H__
-+#define __IDT_TIM_H__
-+
-+enum
-+{
-+ TIM0_PhysicalAddress = 0x18028000,
-+ TIM_PhysicalAddress = TIM0_PhysicalAddress, // Default
-+
-+ TIM0_VirtualAddress = 0xb8028000,
-+ TIM_VirtualAddress = TIM0_VirtualAddress, // Default
-+} ;
-+
-+enum
-+{
-+ TIM_Count = 3,
-+} ;
-+
-+struct TIM_CNTR_s
-+{
-+ u32 count ;
-+ u32 compare ;
-+ u32 ctc ; //use CTC_
-+} ;
-+
-+typedef struct TIM_s
-+{
-+ struct TIM_CNTR_s tim [TIM_Count] ;
-+ u32 rcount ; //use RCOUNT_
-+ u32 rcompare ; //use RCOMPARE_
-+ u32 rtc ; //use RTC_
-+} volatile * TIM_t ;
-+
-+enum
-+{
-+ CTC_en_b = 0,
-+ CTC_en_m = 0x00000001,
-+ CTC_to_b = 1,
-+ CTC_to_m = 0x00000002,
-+
-+ RCOUNT_count_b = 0,
-+ RCOUNT_count_m = 0x0000ffff,
-+ RCOMPARE_compare_b = 0,
-+ RCOMPARE_compare_m = 0x0000ffff,
-+ RTC_ce_b = 0,
-+ RTC_ce_m = 0x00000001,
-+ RTC_to_b = 1,
-+ RTC_to_m = 0x00000002,
-+ RTC_rqe_b = 2,
-+ RTC_rqe_m = 0x00000004,
-+
-+} ;
-+#endif // __IDT_TIM_H__
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_uart.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_uart.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32434/rc32434_uart.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32434/rc32434_uart.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,189 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * UART register definitions
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_UART_H__
-+#define __IDT_UART_H__
-+
-+enum
-+{
-+ UART0_PhysicalAddress = 0x1c000000,
-+ UART_PhysicalAddress = UART0_PhysicalAddress, // Default
-+
-+ UART0_VirtualAddress = 0xbc000000,
-+ UART_VirtualAddress = UART0_VirtualAddress, // Default
-+} ;
-+
-+/*
-+ * Register definitions are in bytes so we can handle endian problems.
-+ */
-+
-+typedef struct UART_s
-+{
-+ union
-+ {
-+ u32 const uartrb ; // 0x00 - DLAB=0, read.
-+ u32 uartth ; // 0x00 - DLAB=0, write.
-+ u32 uartdll ; // 0x00 - DLAB=1, read/write.
-+ } ;
-+
-+ union
-+ {
-+ u32 uartie ; // 0x04 - DLAB=0, read/write.
-+ u32 uartdlh ; // 0x04 - DLAB=1, read/write.
-+ } ;
-+ union
-+ {
-+ u32 const uartii ; // 0x08 - DLAB=0, read.
-+ u32 uartfc ; // 0x08 - DLAB=0, write.
-+ } ;
-+
-+ u32 uartlc ; // 0x0c
-+ u32 uartmc ; // 0x10
-+ u32 uartls ; // 0x14
-+ u32 uartms ; // 0x18
-+ u32 uarts ; // 0x1c
-+} volatile *UART_t ;
-+
-+// Reset registers.
-+typedef u32 volatile *UARTRR_t ;
-+
-+enum
-+{
-+ UARTIE_rda_b = 0,
-+ UARTIE_rda_m = 0x00000001,
-+ UARTIE_the_b = 1,
-+ UARTIE_the_m = 0x00000002,
-+ UARTIE_rls_b = 2,
-+ UARTIE_rls_m = 0x00000004,
-+ UARTIE_ems_b = 3,
-+ UARTIE_ems_m = 0x00000008,
-+
-+ UARTII_pi_b = 0,
-+ UARTII_pi_m = 0x00000001,
-+ UARTII_iid_b = 1,
-+ UARTII_iid_m = 0x0000000e,
-+ UARTII_iid_ms_v = 0, // Modem stat-CTS,DSR,RI or DCD.
-+ UARTII_iid_thre_v = 1, // Trans. Holding Reg. empty.
-+ UARTII_iid_rda_v = 2, // Receive data available
-+ UARTII_iid_rls_v = 3, // Overrun, parity, etc, error.
-+ UARTII_iid_res4_v = 4, // reserved.
-+ UARTII_iid_res5_v = 5, // reserved.
-+ UARTII_iid_cto_v = 6, // Character timeout.
-+ UARTII_iid_res7_v = 7, // reserved.
-+
-+ UARTFC_en_b = 0,
-+ UARTFC_en_m = 0x00000001,
-+ UARTFC_rr_b = 1,
-+ UARTFC_rr_m = 0x00000002,
-+ UARTFC_tr_b = 2,
-+ UARTFC_tr_m = 0x00000004,
-+ UARTFC_dms_b = 3,
-+ UARTFC_dms_m = 0x00000008,
-+ UARTFC_rt_b = 6,
-+ UARTFC_rt_m = 0x000000c0,
-+ UARTFC_rt_1Byte_v = 0,
-+ UARTFC_rt_4Byte_v = 1,
-+ UARTFC_rt_8Byte_v = 2,
-+ UARTFC_rt_14Byte_v = 3,
-+
-+ UARTLC_wls_b = 0,
-+ UARTLC_wls_m = 0x00000003,
-+ UARTLC_wls_5Bits_v = 0,
-+ UARTLC_wls_6Bits_v = 1,
-+ UARTLC_wls_7Bits_v = 2,
-+ UARTLC_wls_8Bits_v = 3,
-+ UARTLC_stb_b = 2,
-+ UARTLC_stb_m = 0x00000004,
-+ UARTLC_pen_b = 3,
-+ UARTLC_pen_m = 0x00000008,
-+ UARTLC_eps_b = 4,
-+ UARTLC_eps_m = 0x00000010,
-+ UARTLC_sp_b = 5,
-+ UARTLC_sp_m = 0x00000020,
-+ UARTLC_sb_b = 6,
-+ UARTLC_sb_m = 0x00000040,
-+ UARTLC_dlab_b = 7,
-+ UARTLC_dlab_m = 0x00000080,
-+
-+ UARTMC_dtr_b = 0,
-+ UARTMC_dtr_m = 0x00000001,
-+ UARTMC_rts_b = 1,
-+ UARTMC_rts_m = 0x00000002,
-+ UARTMC_o1_b = 2,
-+ UARTMC_o1_m = 0x00000004,
-+ UARTMC_o2_b = 3,
-+ UARTMC_o2_m = 0x00000008,
-+ UARTMC_lp_b = 4,
-+ UARTMC_lp_m = 0x00000010,
-+
-+ UARTLS_dr_b = 0,
-+ UARTLS_dr_m = 0x00000001,
-+ UARTLS_oe_b = 1,
-+ UARTLS_oe_m = 0x00000002,
-+ UARTLS_pe_b = 2,
-+ UARTLS_pe_m = 0x00000004,
-+ UARTLS_fe_b = 3,
-+ UARTLS_fe_m = 0x00000008,
-+ UARTLS_bi_b = 4,
-+ UARTLS_bi_m = 0x00000010,
-+ UARTLS_thr_b = 5,
-+ UARTLS_thr_m = 0x00000020,
-+ UARTLS_te_b = 6,
-+ UARTLS_te_m = 0x00000040,
-+ UARTLS_rfe_b = 7,
-+ UARTLS_rfe_m = 0x00000080,
-+
-+ UARTMS_dcts_b = 0,
-+ UARTMS_dcts_m = 0x00000001,
-+ UARTMS_ddsr_b = 1,
-+ UARTMS_ddsr_m = 0x00000002,
-+ UARTMS_teri_b = 2,
-+ UARTMS_teri_m = 0x00000004,
-+ UARTMS_ddcd_b = 3,
-+ UARTMS_ddcd_m = 0x00000008,
-+ UARTMS_cts_b = 4,
-+ UARTMS_cts_m = 0x00000010,
-+ UARTMS_dsr_b = 5,
-+ UARTMS_dsr_m = 0x00000020,
-+ UARTMS_ri_b = 6,
-+ UARTMS_ri_m = 0x00000040,
-+ UARTMS_dcd_b = 7,
-+ UARTMS_dcd_m = 0x00000080,
-+} ;
-+
-+#endif // __IDT_UART_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_dma.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_dma.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_dma.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_dma.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,231 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Register definitions for IDT RC32438 DMA.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+#ifndef __IDT_RC32438_DMA_H__
-+#define __IDT_RC32438_DMA_H__
-+enum
-+{
-+ DMA0_PhysicalAddress = 0x18040000,
-+ DMA_PhysicalAddress = DMA0_PhysicalAddress, // Default
-+
-+ DMA0_VirtualAddress = 0xb8040000,
-+ DMA_VirtualAddress = DMA0_VirtualAddress, // Default
-+} ;
-+
-+/*
-+ * DMA descriptor (in physical memory).
-+ */
-+
-+typedef struct DMAD_s
-+{
-+ u32 control ; // Control. use DMAD_*
-+ u32 ca ; // Current Address.
-+ u32 devcs ; // Device control and status.
-+ u32 link ; // Next descriptor in chain.
-+} volatile *DMAD_t ;
-+
-+enum
-+{
-+ DMAD_size = sizeof (struct DMAD_s),
-+ DMAD_count_b = 0, // in DMAD_t -> control
-+ DMAD_count_m = 0x0003ffff, // in DMAD_t -> control
-+ DMAD_ds_b = 20, // in DMAD_t -> control
-+ DMAD_ds_m = 0x00300000, // in DMAD_t -> control
-+ DMAD_ds_extToMem0_v = 0,
-+ DMAD_ds_memToExt0_v = 1,
-+ DMAD_ds_extToMem1_v = 0,
-+ DMAD_ds_memToExt1_v = 1,
-+ DMAD_ds_ethRcv0_v = 0,
-+ DMAD_ds_ethXmt0_v = 0,
-+ DMAD_ds_ethRcv1_v = 0,
-+ DMAD_ds_ethXmt2_v = 0,
-+ DMAD_ds_memToFifo_v = 0,
-+ DMAD_ds_fifoToMem_v = 0,
-+ DMAD_ds_rng_de_v = 1,//randomNumberGenerator on LC/DE
-+ DMAD_ds_pciToMem_v = 0,
-+ DMAD_ds_memToPci_v = 0,
-+ DMAD_ds_securityInput_v = 0,
-+ DMAD_ds_securityOutput_v = 0,
-+ DMAD_ds_rng_se_v = 0,//randomNumberGenerator on SE
-+
-+ DMAD_devcmd_b = 22, // in DMAD_t -> control
-+ DMAD_devcmd_m = 0x01c00000, // in DMAD_t -> control
-+ DMAD_devcmd_byte_v = 0, //memory-to-memory
-+ DMAD_devcmd_halfword_v = 1, //memory-to-memory
-+ DMAD_devcmd_word_v = 2, //memory-to-memory
-+ DMAD_devcmd_2words_v = 3, //memory-to-memory
-+ DMAD_devcmd_4words_v = 4, //memory-to-memory
-+ DMAD_devcmd_6words_v = 5, //memory-to-memory
-+ DMAD_devcmd_8words_v = 6, //memory-to-memory
-+ DMAD_devcmd_16words_v = 7, //memory-to-memory
-+ DMAD_cof_b = 25, // chain on finished
-+ DMAD_cof_m = 0x02000000, //
-+ DMAD_cod_b = 26, // chain on done
-+ DMAD_cod_m = 0x04000000, //
-+ DMAD_iof_b = 27, // interrupt on finished
-+ DMAD_iof_m = 0x08000000, //
-+ DMAD_iod_b = 28, // interrupt on done
-+ DMAD_iod_m = 0x10000000, //
-+ DMAD_t_b = 29, // terminated
-+ DMAD_t_m = 0x20000000, //
-+ DMAD_d_b = 30, // done
-+ DMAD_d_m = 0x40000000, //
-+ DMAD_f_b = 31, // finished
-+ DMAD_f_m = 0x80000000, //
-+} ;
-+
-+/*
-+ * DMA register (within Internal Register Map).
-+ */
-+
-+struct DMA_Chan_s
-+{
-+ u32 dmac ; // Control.
-+ u32 dmas ; // Status.
-+ u32 dmasm ; // Mask.
-+ u32 dmadptr ; // Descriptor pointer.
-+ u32 dmandptr ; // Next descriptor pointer.
-+};
-+
-+typedef struct DMA_Chan_s volatile *DMA_Chan_t ;
-+
-+//DMA_Channels use DMACH_count instead
-+
-+enum
-+{
-+ DMAC_run_b = 0, //
-+ DMAC_run_m = 0x00000001, //
-+ DMAC_dm_b = 1, // done mask
-+ DMAC_dm_m = 0x00000002, //
-+ DMAC_mode_b = 2, //
-+ DMAC_mode_m = 0x0000000c, //
-+ DMAC_mode_auto_v = 0,
-+ DMAC_mode_burst_v = 1,
-+ DMAC_mode_transfer_v = 2, //usually used
-+ DMAC_mode_reserved_v = 3,
-+ DMAC_a_b = 4, //
-+ DMAC_a_m = 0x00000010, //
-+
-+ DMAS_f_b = 0, // finished (sticky)
-+ DMAS_f_m = 0x00000001, //
-+ DMAS_d_b = 1, // done (sticky)
-+ DMAS_d_m = 0x00000002, //
-+ DMAS_c_b = 2, // chain (sticky)
-+ DMAS_c_m = 0x00000004, //
-+ DMAS_e_b = 3, // error (sticky)
-+ DMAS_e_m = 0x00000008, //
-+ DMAS_h_b = 4, // halt (sticky)
-+ DMAS_h_m = 0x00000010, //
-+
-+ DMASM_f_b = 0, // finished (1=mask)
-+ DMASM_f_m = 0x00000001, //
-+ DMASM_d_b = 1, // done (1=mask)
-+ DMASM_d_m = 0x00000002, //
-+ DMASM_c_b = 2, // chain (1=mask)
-+ DMASM_c_m = 0x00000004, //
-+ DMASM_e_b = 3, // error (1=mask)
-+ DMASM_e_m = 0x00000008, //
-+ DMASM_h_b = 4, // halt (1=mask)
-+ DMASM_h_m = 0x00000010, //
-+} ;
-+
-+/*
-+ * DMA channel definitions
-+ */
-+
-+enum
-+{
-+ DMACH_extToMem0 = 0,
-+ DMACH_memToExt0 = 0,
-+ DMACH_extToMem1 = 1,
-+ DMACH_memToExt1 = 1,
-+ DMACH_ethRcv0 = 2,
-+ DMACH_ethXmt0 = 3,
-+ DMACH_ethRcv1 = 4,
-+ DMACH_ethXmt2 = 5,
-+ DMACH_memToFifo = 6,
-+ DMACH_fifoToMem = 7,
-+ DMACH_rng_de = 7,//randomNumberGenerator on LC/DE
-+ DMACH_pciToMem = 8,
-+ DMACH_memToPci = 9,
-+ DMACH_securityInput = 10,
-+ DMACH_securityOutput = 11,
-+ DMACH_rng_se = 12, //randomNumberGenerator on SE
-+
-+ DMACH_count //must be last
-+};
-+
-+
-+typedef struct DMAC_s
-+{
-+ struct DMA_Chan_s ch [DMACH_count] ; //use ch[DMACH_]
-+} volatile *DMA_t ;
-+
-+
-+/*
-+ * External DMA parameters
-+*/
-+
-+enum
-+{
-+ DMADEVCMD_ts_b = 0, // ts field in devcmd
-+ DMADEVCMD_ts_m = 0x00000007, // ts field in devcmd
-+ DMADEVCMD_ts_byte_v = 0,
-+ DMADEVCMD_ts_halfword_v = 1,
-+ DMADEVCMD_ts_word_v = 2,
-+ DMADEVCMD_ts_2word_v = 3,
-+ DMADEVCMD_ts_4word_v = 4,
-+ DMADEVCMD_ts_6word_v = 5,
-+ DMADEVCMD_ts_8word_v = 6,
-+ DMADEVCMD_ts_16word_v = 7
-+};
-+
-+
-+#if 1 // aws - Compatibility.
-+# define EXTDMA_ts_b DMADEVCMD_ts_b
-+# define EXTDMA_ts_m DMADEVCMD_ts_m
-+# define EXTDMA_ts_byte_v DMADEVCMD_ts_byte_v
-+# define EXTDMA_ts_halfword_v DMADEVCMD_ts_halfword_v
-+# define EXTDMA_ts_word_v DMADEVCMD_ts_word_v
-+# define EXTDMA_ts_2word_v DMADEVCMD_ts_2word_v
-+# define EXTDMA_ts_4word_v DMADEVCMD_ts_4word_v
-+# define EXTDMA_ts_6word_v DMADEVCMD_ts_6word_v
-+# define EXTDMA_ts_8word_v DMADEVCMD_ts_8word_v
-+# define EXTDMA_ts_16word_v DMADEVCMD_ts_16word_v
-+#endif // aws - Compatibility.
-+
-+#endif //__IDT_RC32438_DMA_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,82 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * DMA operations for IDT RC32438.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32438_DMA_V_H__
-+#define __IDT_RC32438_DMA_V_H__
-+#include <asm/idt-boards/rc32438/rc32438_dma.h>
-+
-+#define DMA_CHAN_OFFSET 0x14
-+#define IS_DMA_USED(X) (((X) & (DMAD_f_m | DMAD_d_m | DMAD_t_m)) != 0)
-+#define DMA_COUNT(count) \
-+ ((count) & DMAD_count_m)
-+
-+#define DMA_HALT_TIMEOUT 500
-+
-+
-+static inline int rc32438_halt_dma(DMA_Chan_t ch)
-+{
-+ int timeout=1;
-+ if (rc32438_readl(&ch->dmac) & DMAC_run_m) {
-+ rc32438_writel(0, &ch->dmac);
-+
-+ for (timeout = DMA_HALT_TIMEOUT; timeout > 0; timeout--) {
-+ if (rc32438_readl(&ch->dmas) & DMAS_h_m) {
-+ rc32438_writel(0, &ch->dmas);
-+ break;
-+ }
-+ }
-+
-+ }
-+
-+ return timeout ? 0 : 1;
-+}
-+
-+
-+
-+
-+static inline void rc32438_start_dma(DMA_Chan_t ch, u32 dma_addr)
-+{
-+ rc32438_writel(0, &ch->dmandptr);
-+ rc32438_writel(dma_addr, &ch->dmadptr);
-+}
-+
-+static inline void rc32438_chain_dma(DMA_Chan_t ch, u32 dma_addr)
-+{
-+ rc32438_writel(dma_addr, &ch->dmandptr);
-+}
-+#endif //__IDT_RC32438_DMA_V_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_eth.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_eth.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_eth.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_eth.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,328 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Definitions for IDT EB438 ethernet
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32438_ETH_H__
-+#define __IDT_RC32438_ETH_H__
-+enum
-+{
-+ ETH0_PhysicalAddress = 0x18058000,
-+ ETH_PhysicalAddress = ETH0_PhysicalAddress, // Default
-+
-+ ETH0_VirtualAddress = 0xb8058000,
-+ ETH_VirtualAddress = ETH0_VirtualAddress, // Default
-+ ETH1_PhysicalAddress = 0x18060000,
-+ ETH1_VirtualAddress = 0xb8060000, // Default
-+} ;
-+
-+typedef struct
-+{
-+ u32 ethintfc ;
-+ u32 ethfifott ;
-+ u32 etharc ;
-+ u32 ethhash0 ;
-+ u32 ethhash1 ;
-+ u32 ethu0 [4] ; // Reserved.
-+ u32 ethpfs ;
-+ u32 ethmcp ;
-+ u32 eth_u1 [10] ; // Reserved.
-+ u32 ethspare ;
-+ u32 eth_u2 [42] ; // Reserved.
-+ u32 ethsal0 ;
-+ u32 ethsah0 ;
-+ u32 ethsal1 ;
-+ u32 ethsah1 ;
-+ u32 ethsal2 ;
-+ u32 ethsah2 ;
-+ u32 ethsal3 ;
-+ u32 ethsah3 ;
-+ u32 ethrbc ;
-+ u32 ethrpc ;
-+ u32 ethrupc ;
-+ u32 ethrfc ;
-+ u32 ethtbc ;
-+ u32 ethgpf ;
-+ u32 eth_u9 [50] ; // Reserved.
-+ u32 ethmac1 ;
-+ u32 ethmac2 ;
-+ u32 ethipgt ;
-+ u32 ethipgr ;
-+ u32 ethclrt ;
-+ u32 ethmaxf ;
-+ u32 eth_u10 ; // Reserved.
-+ u32 ethmtest ;
-+ u32 miimcfg ;
-+ u32 miimcmd ;
-+ u32 miimaddr ;
-+ u32 miimwtd ;
-+ u32 miimrdd ;
-+ u32 miimind ;
-+ u32 eth_u11 ; // Reserved.
-+ u32 eth_u12 ; // Reserved.
-+ u32 ethcfsa0 ;
-+ u32 ethcfsa1 ;
-+ u32 ethcfsa2 ;
-+} volatile *ETH_t;
-+
-+enum
-+{
-+ ETHINTFC_en_b = 0,
-+ ETHINTFC_en_m = 0x00000001,
-+ ETHINTFC_its_b = 1,
-+ ETHINTFC_its_m = 0x00000002,
-+ ETHINTFC_rip_b = 2,
-+ ETHINTFC_rip_m = 0x00000004,
-+ ETHINTFC_jam_b = 3,
-+ ETHINTFC_jam_m = 0x00000008,
-+ ETHINTFC_ovr_b = 4,
-+ ETHINTFC_ovr_m = 0x00000010,
-+ ETHINTFC_und_b = 5,
-+ ETHINTFC_und_m = 0x00000020,
-+
-+ ETHFIFOTT_tth_b = 0,
-+ ETHFIFOTT_tth_m = 0x0000007f,
-+
-+ ETHARC_pro_b = 0,
-+ ETHARC_pro_m = 0x00000001,
-+ ETHARC_am_b = 1,
-+ ETHARC_am_m = 0x00000002,
-+ ETHARC_afm_b = 2,
-+ ETHARC_afm_m = 0x00000004,
-+ ETHARC_ab_b = 3,
-+ ETHARC_ab_m = 0x00000008,
-+
-+ ETHSAL_byte5_b = 0,
-+ ETHSAL_byte5_m = 0x000000ff,
-+ ETHSAL_byte4_b = 8,
-+ ETHSAL_byte4_m = 0x0000ff00,
-+ ETHSAL_byte3_b = 16,
-+ ETHSAL_byte3_m = 0x00ff0000,
-+ ETHSAL_byte2_b = 24,
-+ ETHSAL_byte2_m = 0xff000000,
-+
-+ ETHSAH_byte1_b = 0,
-+ ETHSAH_byte1_m = 0x000000ff,
-+ ETHSAH_byte0_b = 8,
-+ ETHSAH_byte0_m = 0x0000ff00,
-+
-+ ETHGPF_ptv_b = 0,
-+ ETHGPF_ptv_m = 0x0000ffff,
-+
-+ ETHPFS_pfd_b = 0,
-+ ETHPFS_pfd_m = 0x00000001,
-+
-+ ETHCFSA0_cfsa4_b = 0,
-+ ETHCFSA0_cfsa4_m = 0x000000ff,
-+ ETHCFSA0_cfsa5_b = 8,
-+ ETHCFSA0_cfsa5_m = 0x0000ff00,
-+
-+ ETHCFSA1_cfsa2_b = 0,
-+ ETHCFSA1_cfsa2_m = 0x000000ff,
-+ ETHCFSA1_cfsa3_b = 8,
-+ ETHCFSA1_cfsa3_m = 0x0000ff00,
-+
-+ ETHCFSA2_cfsa0_b = 0,
-+ ETHCFSA2_cfsa0_m = 0x000000ff,
-+ ETHCFSA2_cfsa1_b = 8,
-+ ETHCFSA2_cfsa1_m = 0x0000ff00,
-+
-+ ETHMAC1_re_b = 0,
-+ ETHMAC1_re_m = 0x00000001,
-+ ETHMAC1_paf_b = 1,
-+ ETHMAC1_paf_m = 0x00000002,
-+ ETHMAC1_rfc_b = 2,
-+ ETHMAC1_rfc_m = 0x00000004,
-+ ETHMAC1_tfc_b = 3,
-+ ETHMAC1_tfc_m = 0x00000008,
-+ ETHMAC1_lb_b = 4,
-+ ETHMAC1_lb_m = 0x00000010,
-+ ETHMAC1_mr_b = 31,
-+ ETHMAC1_mr_m = 0x80000000,
-+
-+ ETHMAC2_fd_b = 0,
-+ ETHMAC2_fd_m = 0x00000001,
-+ ETHMAC2_flc_b = 1,
-+ ETHMAC2_flc_m = 0x00000002,
-+ ETHMAC2_hfe_b = 2,
-+ ETHMAC2_hfe_m = 0x00000004,
-+ ETHMAC2_dc_b = 3,
-+ ETHMAC2_dc_m = 0x00000008,
-+ ETHMAC2_cen_b = 4,
-+ ETHMAC2_cen_m = 0x00000010,
-+ ETHMAC2_pe_b = 5,
-+ ETHMAC2_pe_m = 0x00000020,
-+ ETHMAC2_vpe_b = 6,
-+ ETHMAC2_vpe_m = 0x00000040,
-+ ETHMAC2_ape_b = 7,
-+ ETHMAC2_ape_m = 0x00000080,
-+ ETHMAC2_ppe_b = 8,
-+ ETHMAC2_ppe_m = 0x00000100,
-+ ETHMAC2_lpe_b = 9,
-+ ETHMAC2_lpe_m = 0x00000200,
-+ ETHMAC2_nb_b = 12,
-+ ETHMAC2_nb_m = 0x00001000,
-+ ETHMAC2_bp_b = 13,
-+ ETHMAC2_bp_m = 0x00002000,
-+ ETHMAC2_ed_b = 14,
-+ ETHMAC2_ed_m = 0x00004000,
-+
-+ ETHIPGT_ipgt_b = 0,
-+ ETHIPGT_ipgt_m = 0x0000007f,
-+
-+ ETHIPGR_ipgr2_b = 0,
-+ ETHIPGR_ipgr2_m = 0x0000007f,
-+ ETHIPGR_ipgr1_b = 8,
-+ ETHIPGR_ipgr1_m = 0x00007f00,
-+
-+ ETHCLRT_maxret_b = 0,
-+ ETHCLRT_maxret_m = 0x0000000f,
-+ ETHCLRT_colwin_b = 8,
-+ ETHCLRT_colwin_m = 0x00003f00,
-+
-+ ETHMAXF_maxf_b = 0,
-+ ETHMAXF_maxf_m = 0x0000ffff,
-+
-+ ETHMTEST_tb_b = 2,
-+ ETHMTEST_tb_m = 0x00000004,
-+
-+ ETHMCP_div_b = 0,
-+ ETHMCP_div_m = 0x000000ff,
-+
-+ MIIMCFG_rsv_b = 0,
-+ MIIMCFG_rsv_m = 0x0000000c,
-+
-+ MIIMCMD_rd_b = 0,
-+ MIIMCMD_rd_m = 0x00000001,
-+ MIIMCMD_scn_b = 1,
-+ MIIMCMD_scn_m = 0x00000002,
-+
-+ MIIMADDR_regaddr_b = 0,
-+ MIIMADDR_regaddr_m = 0x0000001f,
-+ MIIMADDR_phyaddr_b = 8,
-+ MIIMADDR_phyaddr_m = 0x00001f00,
-+
-+ MIIMWTD_wdata_b = 0,
-+ MIIMWTD_wdata_m = 0x0000ffff,
-+
-+ MIIMRDD_rdata_b = 0,
-+ MIIMRDD_rdata_m = 0x0000ffff,
-+
-+ MIIMIND_bsy_b = 0,
-+ MIIMIND_bsy_m = 0x00000001,
-+ MIIMIND_scn_b = 1,
-+ MIIMIND_scn_m = 0x00000002,
-+ MIIMIND_nv_b = 2,
-+ MIIMIND_nv_m = 0x00000004,
-+
-+} ;
-+
-+/*
-+ * Values for the DEVCS field of the Ethernet DMA Rx and Tx descriptors.
-+ */
-+enum
-+{
-+ ETHRX_fd_b = 0,
-+ ETHRX_fd_m = 0x00000001,
-+ ETHRX_ld_b = 1,
-+ ETHRX_ld_m = 0x00000002,
-+ ETHRX_rok_b = 2,
-+ ETHRX_rok_m = 0x00000004,
-+ ETHRX_fm_b = 3,
-+ ETHRX_fm_m = 0x00000008,
-+ ETHRX_mp_b = 4,
-+ ETHRX_mp_m = 0x00000010,
-+ ETHRX_bp_b = 5,
-+ ETHRX_bp_m = 0x00000020,
-+ ETHRX_vlt_b = 6,
-+ ETHRX_vlt_m = 0x00000040,
-+ ETHRX_cf_b = 7,
-+ ETHRX_cf_m = 0x00000080,
-+ ETHRX_ovr_b = 8,
-+ ETHRX_ovr_m = 0x00000100,
-+ ETHRX_crc_b = 9,
-+ ETHRX_crc_m = 0x00000200,
-+ ETHRX_cv_b = 10,
-+ ETHRX_cv_m = 0x00000400,
-+ ETHRX_db_b = 11,
-+ ETHRX_db_m = 0x00000800,
-+ ETHRX_le_b = 12,
-+ ETHRX_le_m = 0x00001000,
-+ ETHRX_lor_b = 13,
-+ ETHRX_lor_m = 0x00002000,
-+ ETHRX_ces_b = 14,
-+ ETHRX_ces_m = 0x00004000,
-+ ETHRX_length_b = 16,
-+ ETHRX_length_m = 0xffff0000,
-+
-+ ETHTX_fd_b = 0,
-+ ETHTX_fd_m = 0x00000001,
-+ ETHTX_ld_b = 1,
-+ ETHTX_ld_m = 0x00000002,
-+ ETHTX_oen_b = 2,
-+ ETHTX_oen_m = 0x00000004,
-+ ETHTX_pen_b = 3,
-+ ETHTX_pen_m = 0x00000008,
-+ ETHTX_cen_b = 4,
-+ ETHTX_cen_m = 0x00000010,
-+ ETHTX_hen_b = 5,
-+ ETHTX_hen_m = 0x00000020,
-+ ETHTX_tok_b = 6,
-+ ETHTX_tok_m = 0x00000040,
-+ ETHTX_mp_b = 7,
-+ ETHTX_mp_m = 0x00000080,
-+ ETHTX_bp_b = 8,
-+ ETHTX_bp_m = 0x00000100,
-+ ETHTX_und_b = 9,
-+ ETHTX_und_m = 0x00000200,
-+ ETHTX_of_b = 10,
-+ ETHTX_of_m = 0x00000400,
-+ ETHTX_ed_b = 11,
-+ ETHTX_ed_m = 0x00000800,
-+ ETHTX_ec_b = 12,
-+ ETHTX_ec_m = 0x00001000,
-+ ETHTX_lc_b = 13,
-+ ETHTX_lc_m = 0x00002000,
-+ ETHTX_td_b = 14,
-+ ETHTX_td_m = 0x00004000,
-+ ETHTX_crc_b = 15,
-+ ETHTX_crc_m = 0x00008000,
-+ ETHTX_le_b = 16,
-+ ETHTX_le_m = 0x00010000,
-+ ETHTX_cc_b = 17,
-+ ETHTX_cc_m = 0x001E0000,
-+} ;
-+#endif //__IDT_RC32438_ETH_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,72 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * macros for IDT EB438 ethernet
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32438_ETH_V_H__
-+#define __IDT_RC32438_ETH_V_H__
-+#include <asm/idt-boards/rc32438/rc32438_eth.h>
-+
-+#define IS_TX_TOK(X) (((X) & (1<<ETHTX_tok_b)) >> ETHTX_tok_b ) /* Transmit Okay */
-+#define IS_TX_MP(X) (((X) & (1<<ETHTX_mp_b)) >> ETHTX_mp_b ) /* Multicast */
-+#define IS_TX_BP(X) (((X) & (1<<ETHTX_bp_b)) >> ETHTX_bp_b ) /* Broadcast */
-+#define IS_TX_UND_ERR(X) (((X) & (1<<ETHTX_und_b)) >> ETHTX_und_b ) /* Transmit FIFO Underflow */
-+#define IS_TX_OF_ERR(X) (((X) & (1<<ETHTX_of_b)) >> ETHTX_of_b ) /* Oversized frame */
-+#define IS_TX_ED_ERR(X) (((X) & (1<<ETHTX_ed_b)) >> ETHTX_ed_b ) /* Excessive deferral */
-+#define IS_TX_EC_ERR(X) (((X) & (1<<ETHTX_ec_b)) >> ETHTX_ec_b) /* Excessive collisions */
-+#define IS_TX_LC_ERR(X) (((X) & (1<<ETHTX_lc_b)) >> ETHTX_lc_b ) /* Late Collision */
-+#define IS_TX_TD_ERR(X) (((X) & (1<<ETHTX_td_b)) >> ETHTX_td_b ) /* Transmit deferred*/
-+#define IS_TX_CRC_ERR(X) (((X) & (1<<ETHTX_crc_b)) >> ETHTX_crc_b ) /* CRC Error */
-+#define IS_TX_LE_ERR(X) (((X) & (1<<ETHTX_le_b)) >> ETHTX_le_b ) /* Length Error */
-+
-+#define TX_COLLISION_COUNT(X) (((X) & ETHTX_cc_m)>>ETHTX_cc_b) /* Collision Count */
-+
-+#define IS_RCV_ROK(X) (((X) & (1<<ETHRX_rok_b)) >> ETHRX_rok_b) /* Receive Okay */
-+#define IS_RCV_FM(X) (((X) & (1<<ETHRX_fm_b)) >> ETHRX_fm_b) /* Is Filter Match */
-+#define IS_RCV_MP(X) (((X) & (1<<ETHRX_mp_b)) >> ETHRX_mp_b) /* Is it MP */
-+#define IS_RCV_BP(X) (((X) & (1<<ETHRX_bp_b)) >> ETHRX_bp_b) /* Is it BP */
-+#define IS_RCV_VLT(X) (((X) & (1<<ETHRX_vlt_b)) >> ETHRX_vlt_b) /* VLAN Tag Detect */
-+#define IS_RCV_CF(X) (((X) & (1<<ETHRX_cf_b)) >> ETHRX_cf_b) /* Control Frame */
-+#define IS_RCV_OVR_ERR(X) (((X) & (1<<ETHRX_ovr_b)) >> ETHRX_ovr_b) /* Receive Overflow */
-+#define IS_RCV_CRC_ERR(X) (((X) & (1<<ETHRX_crc_b)) >> ETHRX_crc_b) /* CRC Error */
-+#define IS_RCV_CV_ERR(X) (((X) & (1<<ETHRX_cv_b)) >> ETHRX_cv_b) /* Code Violation */
-+#define IS_RCV_DB_ERR(X) (((X) & (1<<ETHRX_db_b)) >> ETHRX_db_b) /* Dribble Bits */
-+#define IS_RCV_LE_ERR(X) (((X) & (1<<ETHRX_le_b)) >> ETHRX_le_b) /* Length error */
-+#define IS_RCV_LOR_ERR(X) (((X) & (1<<ETHRX_lor_b)) >> ETHRX_lor_b) /* Length Out of Range */
-+#define IS_RCV_CES_ERR(X) (((X) & (1<<ETHRX_ces_b)) >> ETHRX_ces_b) /* Preamble error */
-+#define RCVPKT_LENGTH(X) (((X) & ETHRX_length_m) >> ETHRX_length_b) /* Length of the received packet */
-+
-+#endif //__IDT_RC32438_ETH_V_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,257 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Definitions for IDT RC32438 GPIO.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+#ifndef __IDT_RC32438_GPIO_H__
-+#define __IDT_RC32438_GPIO_H__
-+enum
-+{
-+ GPIO0_PhysicalAddress = 0x18048000,
-+ GPIO_PhysicalAddress = GPIO0_PhysicalAddress, // Default
-+
-+ GPIO0_VirtualAddress = 0xb8048000,
-+ GPIO_VirtualAddress = GPIO0_VirtualAddress, // Default
-+} ;
-+
-+typedef struct
-+{
-+ u32 gpiofunc; /* GPIO Function Register
-+ * gpiofunc[x]==0 bit = gpio
-+ * func[x]==1 bit = altfunc
-+ */
-+ u32 gpiocfg; /* GPIO Configuration Register
-+ * gpiocfg[x]==0 bit = input
-+ * gpiocfg[x]==1 bit = output
-+ */
-+ u32 gpiod; /* GPIO Data Register
-+ * gpiod[x] read/write gpio pinX status
-+ */
-+ u32 gpioilevel; /* GPIO Interrupt Status Register
-+ * interrupt level (see gpioistat)
-+ */
-+ u32 gpioistat; /* Gpio Interrupt Status Register
-+ * istat[x] = (gpiod[x] == level[x])
-+ * cleared in ISR (STICKY bits)
-+ */
-+ u32 gpionmien; /* GPIO Non-maskable Interrupt Enable Register */
-+} volatile * GPIO_t ;
-+
-+typedef enum
-+{
-+ GPIO_gpio_v = 0, // gpiofunc use pin as GPIO.
-+ GPIO_alt_v = 1, // gpiofunc use pin as alt.
-+ GPIO_input_v = 0, // gpiocfg use pin as input.
-+ GPIO_output_v = 1, // gpiocfg use pin as output.
-+ GPIO_pin0_b = 0,
-+ GPIO_pin0_m = 0x00000001,
-+ GPIO_pin1_b = 1,
-+ GPIO_pin1_m = 0x00000002,
-+ GPIO_pin2_b = 2,
-+ GPIO_pin2_m = 0x00000004,
-+ GPIO_pin3_b = 3,
-+ GPIO_pin3_m = 0x00000008,
-+ GPIO_pin4_b = 4,
-+ GPIO_pin4_m = 0x00000010,
-+ GPIO_pin5_b = 5,
-+ GPIO_pin5_m = 0x00000020,
-+ GPIO_pin6_b = 6,
-+ GPIO_pin6_m = 0x00000040,
-+ GPIO_pin7_b = 7,
-+ GPIO_pin7_m = 0x00000080,
-+ GPIO_pin8_b = 8,
-+ GPIO_pin8_m = 0x00000100,
-+ GPIO_pin9_b = 9,
-+ GPIO_pin9_m = 0x00000200,
-+ GPIO_pin10_b = 10,
-+ GPIO_pin10_m = 0x00000400,
-+ GPIO_pin11_b = 11,
-+ GPIO_pin11_m = 0x00000800,
-+ GPIO_pin12_b = 12,
-+ GPIO_pin12_m = 0x00001000,
-+ GPIO_pin13_b = 13,
-+ GPIO_pin13_m = 0x00002000,
-+ GPIO_pin14_b = 14,
-+ GPIO_pin14_m = 0x00004000,
-+ GPIO_pin15_b = 15,
-+ GPIO_pin15_m = 0x00008000,
-+ GPIO_pin16_b = 16,
-+ GPIO_pin16_m = 0x00010000,
-+ GPIO_pin17_b = 17,
-+ GPIO_pin17_m = 0x00020000,
-+ GPIO_pin18_b = 18,
-+ GPIO_pin18_m = 0x00040000,
-+ GPIO_pin19_b = 19,
-+ GPIO_pin19_m = 0x00080000,
-+ GPIO_pin20_b = 20,
-+ GPIO_pin20_m = 0x00100000,
-+ GPIO_pin21_b = 21,
-+ GPIO_pin21_m = 0x00200000,
-+ GPIO_pin22_b = 22,
-+ GPIO_pin22_m = 0x00400000,
-+ GPIO_pin23_b = 23,
-+ GPIO_pin23_m = 0x00800000,
-+ GPIO_pin24_b = 24,
-+ GPIO_pin24_m = 0x01000000,
-+ GPIO_pin25_b = 25,
-+ GPIO_pin25_m = 0x02000000,
-+ GPIO_pin26_b = 26,
-+ GPIO_pin26_m = 0x04000000,
-+ GPIO_pin27_b = 27,
-+ GPIO_pin27_m = 0x08000000,
-+ GPIO_pin28_b = 28,
-+ GPIO_pin28_m = 0x10000000,
-+ GPIO_pin29_b = 29,
-+ GPIO_pin29_m = 0x20000000,
-+ GPIO_pin30_b = 30,
-+ GPIO_pin30_m = 0x40000000,
-+ GPIO_pin31_b = 31,
-+ GPIO_pin31_m = 0x80000000,
-+
-+// Alternate function pins. Corrsponding gpiofunc bit set to GPIO_alt_v.
-+
-+ GPIO_u0sout_b = GPIO_pin0_b, // UART 0 serial out.
-+ GPIO_u0sout_m = GPIO_pin0_m,
-+ GPIO_u0sout_cfg_v = GPIO_output_v,
-+ GPIO_u0sinp_b = GPIO_pin1_b, // UART 0 serial in.
-+ GPIO_u0sinp_m = GPIO_pin1_m,
-+ GPIO_u0sinp_cfg_v = GPIO_input_v,
-+ GPIO_u0rin_b = GPIO_pin2_b, // UART 0 ring indic.
-+ GPIO_u0rin_m = GPIO_pin2_m,
-+ GPIO_u0rin_cfg_v = GPIO_input_v,
-+ GPIO_u0dcdn_b = GPIO_pin3_b, // UART 0 data carr.det.
-+ GPIO_u0dcdn_m = GPIO_pin3_m,
-+ GPIO_u0dcdn_cfg_v = GPIO_input_v,
-+ GPIO_u0dtrn_b = GPIO_pin4_b, // UART 0 data term rdy.
-+ GPIO_u0dtrn_m = GPIO_pin4_m,
-+ GPIO_u0dtrn_cfg_v = GPIO_output_v,
-+ GPIO_u0dsrn_b = GPIO_pin5_b, // UART 0 data set rdy.
-+ GPIO_u0dsrn_m = GPIO_pin5_m,
-+ GPIO_u0dsrn_cfg_v = GPIO_input_v,
-+ GPIO_u0rtsn_b = GPIO_pin6_b, // UART 0 req. to send.
-+ GPIO_u0rtsn_m = GPIO_pin6_m,
-+ GPIO_u0rtsn_cfg_v = GPIO_output_v,
-+ GPIO_u0ctsn_b = GPIO_pin7_b, // UART 0 clear to send.
-+ GPIO_u0ctsn_m = GPIO_pin7_m,
-+ GPIO_u0ctsn_cfg_v = GPIO_input_v,
-+
-+ GPIO_u1sout_b = GPIO_pin8_b, // UART 1 serial out.
-+ GPIO_u1sout_m = GPIO_pin8_m,
-+ GPIO_u1sout_cfg_v = GPIO_output_v,
-+ GPIO_u1sinp_b = GPIO_pin9_b, // UART 1 serial in.
-+ GPIO_u1sinp_m = GPIO_pin9_m,
-+ GPIO_u1sinp_cfg_v = GPIO_input_v,
-+ GPIO_u1dtrn_b = GPIO_pin10_b, // UART 1 data term rdy.
-+ GPIO_u1dtrn_m = GPIO_pin10_m,
-+ GPIO_u1dtrn_cfg_v = GPIO_output_v,
-+ GPIO_u1dsrn_b = GPIO_pin11_b, // UART 1 data set rdy.
-+ GPIO_u1dsrn_m = GPIO_pin11_m,
-+ GPIO_u1dsrn_cfg_v = GPIO_input_v,
-+ GPIO_u1rtsn_b = GPIO_pin12_b, // UART 1 req. to send.
-+ GPIO_u1rtsn_m = GPIO_pin12_m,
-+ GPIO_u1rtsn_cfg_v = GPIO_output_v,
-+ GPIO_u1ctsn_b = GPIO_pin13_b, // UART 1 clear to send.
-+ GPIO_u1ctsn_m = GPIO_pin13_m,
-+ GPIO_u1ctsn_cfg_v = GPIO_input_v,
-+
-+ GPIO_dmareqn0_b = GPIO_pin14_b, // Ext. DMA 0 request
-+ GPIO_dmareqn0_m = GPIO_pin14_m,
-+ GPIO_dmareqn0_cfg_v = GPIO_input_v,
-+
-+ GPIO_dmareqn1_b = GPIO_pin15_b, // Ext. DMA 1 request
-+ GPIO_dmareqn1_m = GPIO_pin15_m,
-+ GPIO_dmareqn1_cfg_v = GPIO_input_v,
-+
-+ GPIO_dmadonen0_b = GPIO_pin16_b, // Ext. DMA 0 done
-+ GPIO_dmadonen0_m = GPIO_pin16_m,
-+ GPIO_dmadonen0_cfg_v = GPIO_input_v,
-+
-+ GPIO_dmadonen1_b = GPIO_pin17_b, // Ext. DMA 1 done
-+ GPIO_dmadonen1_m = GPIO_pin17_m,
-+ GPIO_dmadonen1_cfg_v = GPIO_input_v,
-+
-+ GPIO_dmafinn0_b = GPIO_pin18_b, // Ext. DMA 0 finished
-+ GPIO_dmafinn0_m = GPIO_pin18_m,
-+ GPIO_dmafinn0_cfg_v = GPIO_output_v,
-+
-+ GPIO_dmafinn1_b = GPIO_pin19_b, // Ext. DMA 1 finished
-+ GPIO_dmafinn1_m = GPIO_pin19_m,
-+ GPIO_dmafinn1_cfg_v = GPIO_output_v,
-+
-+ GPIO_maddr22_b = GPIO_pin20_b, // M&P bus bit 22.
-+ GPIO_maddr22_m = GPIO_pin20_m,
-+ GPIO_maddr22_cfg_v = GPIO_output_v,
-+
-+ GPIO_maddr23_b = GPIO_pin21_b, // M&P bus bit 23.
-+ GPIO_maddr23_m = GPIO_pin21_m,
-+ GPIO_maddr23_cfg_v = GPIO_output_v,
-+
-+ GPIO_maddr24_b = GPIO_pin22_b, // M&P bus bit 24.
-+ GPIO_maddr24_m = GPIO_pin22_m,
-+ GPIO_maddr24_cfg_v = GPIO_output_v,
-+
-+ GPIO_maddr25_b = GPIO_pin23_b, // M&P bus bit 25.
-+ GPIO_maddr25_m = GPIO_pin23_m,
-+ GPIO_maddr25_cfg_v = GPIO_output_v,
-+
-+ GPIO_afspare6_b = GPIO_pin24_b, // reserved.
-+ GPIO_afspare6_m = GPIO_pin24_m,
-+ GPIO_afspare6_cfg_v = GPIO_input_v,
-+ GPIO_afspare5_b = GPIO_pin25_b, // reserved.
-+ GPIO_afspare5_m = GPIO_pin25_m,
-+ GPIO_afspare5_cfg_v = GPIO_input_v,
-+ GPIO_afspare4_b = GPIO_pin26_b, // reserved.
-+ GPIO_afspare4_m = GPIO_pin26_m,
-+ GPIO_afspare4_cfg_v = GPIO_input_v,
-+ GPIO_afspare3_b = GPIO_pin27_b, // reserved.
-+ GPIO_afspare3_m = GPIO_pin27_m,
-+ GPIO_afspare3_cfg_v = GPIO_input_v,
-+ GPIO_afspare2_b = GPIO_pin28_b, // reserved.
-+ GPIO_afspare2_m = GPIO_pin28_m,
-+ GPIO_afspare2_cfg_v = GPIO_input_v,
-+ GPIO_afspare1_b = GPIO_pin29_b, // reserved.
-+ GPIO_afspare1_m = GPIO_pin29_m,
-+ GPIO_afspare1_cfg_v = GPIO_input_v,
-+
-+ GPIO_pcimuintn_b = GPIO_pin30_b, // PCI messaging int.
-+ GPIO_pcimuintn_m = GPIO_pin30_m,
-+ GPIO_pcimuintn_cfg_v = GPIO_output_v,
-+
-+ GPIO_rngclk_b = GPIO_pin31_b, // RNG external clock
-+ GPIO_rngclk_m = GPIO_pin31_m,
-+ GPIO_rncclk_cfg_v = GPIO_input_v,
-+} GPIO_DEFS_t;
-+
-+#endif //__IDT_RC32438_GPIO_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,152 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Definitions for IDT RC32438 CPU.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32438_H__
-+#define __IDT_RC32438_H__
-+#include <linux/config.h>
-+#include <linux/delay.h>
-+#include <asm/io.h>
-+#include <asm/idt-boards/rc32438/rc32438_timer.h>
-+
-+#define RC32438_REG_BASE 0x18000000
-+
-+#define interrupt ((volatile INT_t ) INT0_VirtualAddress)
-+#define idttimer ((volatile TIM_t) TIM0_VirtualAddress)
-+#define idt_gpio ((volatile GPIO_t) GPIO0_VirtualAddress)
-+
-+#define IDT_CLOCK_MULT 2
-+#define MIPS_CPU_TIMER_IRQ 7
-+/* Interrupt Controller */
-+#define IC_GROUP0_PEND (RC32438_REG_BASE + 0x38000)
-+#define IC_GROUP0_MASK (RC32438_REG_BASE + 0x38008)
-+#define IC_GROUP_OFFSET 0x0C
-+#define RTC_BASE 0xAC0801FF0
-+
-+#define NUM_INTR_GROUPS 5
-+/* 16550 UARTs */
-+
-+#define GROUP0_IRQ_BASE 8 /* GRP2 IRQ numbers start here */
-+#define GROUP1_IRQ_BASE (GROUP0_IRQ_BASE + 32) /* GRP3 IRQ numbers start here */
-+#define GROUP2_IRQ_BASE (GROUP1_IRQ_BASE + 32) /* GRP4 IRQ numbers start here */
-+#define GROUP3_IRQ_BASE (GROUP2_IRQ_BASE + 32) /* GRP5 IRQ numbers start here */
-+#define GROUP4_IRQ_BASE (GROUP3_IRQ_BASE + 32)
-+
-+#ifdef __MIPSEB__
-+#define RC32438_UART0_BASE (RC32438_REG_BASE + 0x50003)
-+#define RC32438_UART1_BASE (RC32438_REG_BASE + 0x50023)
-+#else
-+#define RC32438_UART0_BASE (RC32438_REG_BASE + 0x50000)
-+#define RC32438_UART1_BASE (RC32438_REG_BASE + 0x50020)
-+#endif
-+
-+#define RC32438_UART0_IRQ GROUP3_IRQ_BASE + 0
-+#define RC32438_UART1_IRQ GROUP3_IRQ_BASE + 3
-+
-+#define RC32438_NR_IRQS (GROUP4_IRQ_BASE + 32)
-+
-+
-+
-+/* cpu pipeline flush */
-+static inline void rc32438_sync(void)
-+{
-+ __asm__ volatile ("sync");
-+}
-+
-+static inline void rc32438_sync_udelay(int us)
-+{
-+ __asm__ volatile ("sync");
-+ udelay(us);
-+}
-+
-+static inline void rc32438_sync_delay(int ms)
-+{
-+ __asm__ volatile ("sync");
-+ mdelay(ms);
-+}
-+
-+/*
-+ * Macros to access internal RC32438 registers. No byte
-+ * swapping should be done when accessing the internal
-+ * registers.
-+ */
-+
-+#define rc32438_readb __raw_readb
-+#define rc32438_readw __raw_readw
-+#define rc32438_readl __raw_readl
-+
-+#define rc32438_writeb __raw_writeb
-+#define rc32438_writew __raw_writew
-+#define rc32438_writel __raw_writel
-+
-+/*
-+ * C access to CLZ and CLO instructions
-+ * (count leading zeroes/ones).
-+ */
-+static inline int rc32438_clz(unsigned long val)
-+{
-+ int ret;
-+ __asm__ volatile (
-+ ".set\tnoreorder\n\t"
-+ ".set\tnoat\n\t"
-+ ".set\tmips32\n\t"
-+ "clz\t%0,%1\n\t"
-+ ".set\tmips0\n\t"
-+ ".set\tat\n\t"
-+ ".set\treorder"
-+ : "=r" (ret)
-+ : "r" (val));
-+
-+ return ret;
-+}
-+static inline int rc32438_clo(unsigned long val)
-+{
-+ int ret;
-+ __asm__ volatile (
-+ ".set\tnoreorder\n\t"
-+ ".set\tnoat\n\t"
-+ ".set\tmips32\n\t"
-+ "clo\t%0,%1\n\t"
-+ ".set\tmips0\n\t"
-+ ".set\tat\n\t"
-+ ".set\treorder"
-+ : "=r" (ret)
-+ : "r" (val));
-+
-+ return ret;
-+}
-+#endif //__IDT_RC32438_H__
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_pci.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_pci.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_pci.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_pci.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,510 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Definitions for IDT RC32438 PCI.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+enum
-+{
-+ PCI0_PhysicalAddress = 0x18080000,
-+ PCI_PhysicalAddress = PCI0_PhysicalAddress,
-+
-+ PCI0_VirtualAddress = 0xb8080000,
-+ PCI_VirtualAddress = PCI0_VirtualAddress,
-+} ;
-+
-+enum
-+{
-+ PCI_LbaCount = 4, // Local base addresses.
-+} ;
-+
-+typedef struct
-+{
-+ u32 a ; // Address.
-+ u32 c ; // Control.
-+ u32 m ; // mapping.
-+} PCI_Map_s ;
-+
-+typedef struct
-+{
-+ u32 pcic ;
-+ u32 pcis ;
-+ u32 pcism ;
-+ u32 pcicfga ;
-+ u32 pcicfgd ;
-+ PCI_Map_s pcilba [PCI_LbaCount] ;
-+ u32 pcidac ;
-+ u32 pcidas ;
-+ u32 pcidasm ;
-+ u32 pcidad ;
-+ u32 pcidma8c ;
-+ u32 pcidma9c ;
-+ u32 pcitc ;
-+} volatile *PCI_t ;
-+
-+// PCI messaging unit.
-+enum
-+{
-+ PCIM_Count = 2,
-+} ;
-+typedef struct
-+{
-+ u32 pciim [PCIM_Count] ;
-+ u32 pciom [PCIM_Count] ;
-+ u32 pciid ;
-+ u32 pciiic ;
-+ u32 pciiim ;
-+ u32 pciiod ;
-+ u32 pciioic ;
-+ u32 pciioim ;
-+} volatile *PCIM_t ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Control Register
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCIC_en_b = 0,
-+ PCIC_en_m = 0x00000001,
-+ PCIC_tnr_b = 1,
-+ PCIC_tnr_m = 0x00000002,
-+ PCIC_sce_b = 2,
-+ PCIC_sce_m = 0x00000004,
-+ PCIC_ien_b = 3,
-+ PCIC_ien_m = 0x00000008,
-+ PCIC_aaa_b = 4,
-+ PCIC_aaa_m = 0x00000010,
-+ PCIC_eap_b = 5,
-+ PCIC_eap_m = 0x00000020,
-+ PCIC_pcim_b = 6,
-+ PCIC_pcim_m = 0x000001c0,
-+ PCIC_pcim_disabled_v = 0,
-+ PCIC_pcim_tnr_v = 1, // Satellite - target not ready
-+ PCIC_pcim_suspend_v = 2, // Satellite - suspended CPU.
-+ PCIC_pcim_extern_v = 3, // Host - external arbiter.
-+ PCIC_pcim_fixed_v = 4, // Host - fixed priority arb.
-+ PCIC_pcim_roundrobin_v = 5, // Host - round robin priority.
-+ PCIC_pcim_reserved6_v = 6,
-+ PCIC_pcim_reserved7_v = 7,
-+ PCIC_igm_b = 9,
-+ PCIC_igm_m = 0x00000200,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Status Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCIS_eed_b = 0,
-+ PCIS_eed_m = 0x00000001,
-+ PCIS_wr_b = 1,
-+ PCIS_wr_m = 0x00000002,
-+ PCIS_nmi_b = 2,
-+ PCIS_nmi_m = 0x00000004,
-+ PCIS_ii_b = 3,
-+ PCIS_ii_m = 0x00000008,
-+ PCIS_cwe_b = 4,
-+ PCIS_cwe_m = 0x00000010,
-+ PCIS_cre_b = 5,
-+ PCIS_cre_m = 0x00000020,
-+ PCIS_mdpe_b = 6,
-+ PCIS_mdpe_m = 0x00000040,
-+ PCIS_sta_b = 7,
-+ PCIS_sta_m = 0x00000080,
-+ PCIS_rta_b = 8,
-+ PCIS_rta_m = 0x00000100,
-+ PCIS_rma_b = 9,
-+ PCIS_rma_m = 0x00000200,
-+ PCIS_sse_b = 10,
-+ PCIS_sse_m = 0x00000400,
-+ PCIS_ose_b = 11,
-+ PCIS_ose_m = 0x00000800,
-+ PCIS_pe_b = 12,
-+ PCIS_pe_m = 0x00001000,
-+ PCIS_tae_b = 13,
-+ PCIS_tae_m = 0x00002000,
-+ PCIS_rle_b = 14,
-+ PCIS_rle_m = 0x00004000,
-+ PCIS_bme_b = 15,
-+ PCIS_bme_m = 0x00008000,
-+ PCIS_prd_b = 16,
-+ PCIS_prd_m = 0x00010000,
-+ PCIS_rip_b = 17,
-+ PCIS_rip_m = 0x00020000,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Status Mask Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCISM_eed_b = 0,
-+ PCISM_eed_m = 0x00000001,
-+ PCISM_wr_b = 1,
-+ PCISM_wr_m = 0x00000002,
-+ PCISM_nmi_b = 2,
-+ PCISM_nmi_m = 0x00000004,
-+ PCISM_ii_b = 3,
-+ PCISM_ii_m = 0x00000008,
-+ PCISM_cwe_b = 4,
-+ PCISM_cwe_m = 0x00000010,
-+ PCISM_cre_b = 5,
-+ PCISM_cre_m = 0x00000020,
-+ PCISM_mdpe_b = 6,
-+ PCISM_mdpe_m = 0x00000040,
-+ PCISM_sta_b = 7,
-+ PCISM_sta_m = 0x00000080,
-+ PCISM_rta_b = 8,
-+ PCISM_rta_m = 0x00000100,
-+ PCISM_rma_b = 9,
-+ PCISM_rma_m = 0x00000200,
-+ PCISM_sse_b = 10,
-+ PCISM_sse_m = 0x00000400,
-+ PCISM_ose_b = 11,
-+ PCISM_ose_m = 0x00000800,
-+ PCISM_pe_b = 12,
-+ PCISM_pe_m = 0x00001000,
-+ PCISM_tae_b = 13,
-+ PCISM_tae_m = 0x00002000,
-+ PCISM_rle_b = 14,
-+ PCISM_rle_m = 0x00004000,
-+ PCISM_bme_b = 15,
-+ PCISM_bme_m = 0x00008000,
-+ PCISM_prd_b = 16,
-+ PCISM_prd_m = 0x00010000,
-+ PCISM_rip_b = 17,
-+ PCISM_rip_m = 0x00020000,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Configuration Address Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCICFGA_reg_b = 2,
-+ PCICFGA_reg_m = 0x000000fc,
-+ PCICFGA_reg_id_v = 0x00>>2, //use PCFGID_
-+ PCICFGA_reg_04_v = 0x04>>2, //use PCFG04_
-+ PCICFGA_reg_08_v = 0x08>>2, //use PCFG08_
-+ PCICFGA_reg_0C_v = 0x0C>>2, //use PCFG0C_
-+ PCICFGA_reg_pba0_v = 0x10>>2, //use PCIPBA_
-+ PCICFGA_reg_pba1_v = 0x14>>2, //use PCIPBA_
-+ PCICFGA_reg_pba2_v = 0x18>>2, //use PCIPBA_
-+ PCICFGA_reg_pba3_v = 0x1c>>2, //use PCIPBA_
-+ PCICFGA_reg_subsystem_v = 0x2c>>2, //use PCFGSS_
-+ PCICFGA_reg_3C_v = 0x3C>>2, //use PCFG3C_
-+ PCICFGA_reg_pba0c_v = 0x44>>2, //use PCIPBAC_
-+ PCICFGA_reg_pba0m_v = 0x48>>2,
-+ PCICFGA_reg_pba1c_v = 0x4c>>2, //use PCIPBAC_
-+ PCICFGA_reg_pba1m_v = 0x50>>2,
-+ PCICFGA_reg_pba2c_v = 0x54>>2, //use PCIPBAC_
-+ PCICFGA_reg_pba2m_v = 0x58>>2,
-+ PCICFGA_reg_pba3c_v = 0x5c>>2, //use PCIPBAC_
-+ PCICFGA_reg_pba3m_v = 0x60>>2,
-+ PCICFGA_reg_pmgt_v = 0x64>>2,
-+ PCICFGA_func_b = 8,
-+ PCICFGA_func_m = 0x00000700,
-+ PCICFGA_dev_b = 11,
-+ PCICFGA_dev_m = 0x0000f800,
-+ PCICFGA_dev_internal_v = 0,
-+ PCICFGA_bus_b = 16,
-+ PCICFGA_bus_m = 0x00ff0000,
-+ PCICFGA_bus_type0_v = 0, //local bus
-+ PCICFGA_en_b = 31, // read only
-+ PCICFGA_en_m = 0x80000000,
-+} ;
-+
-+enum {
-+ PCFGID_vendor_b = 0,
-+ PCFGID_vendor_m = 0x0000ffff,
-+ PCFGID_vendor_IDT_v = 0x111d,
-+ PCFGID_device_b = 16,
-+ PCFGID_device_m = 0xffff0000,
-+ PCFGID_device_Acaciade_v = 0x0207,
-+
-+ PCFG04_command_ioena_b = 1,
-+ PCFG04_command_ioena_m = 0x00000001,
-+ PCFG04_command_memena_b = 2,
-+ PCFG04_command_memena_m = 0x00000002,
-+ PCFG04_command_bmena_b = 3,
-+ PCFG04_command_bmena_m = 0x00000004,
-+ PCFG04_command_mwinv_b = 5,
-+ PCFG04_command_mwinv_m = 0x00000010,
-+ PCFG04_command_parena_b = 7,
-+ PCFG04_command_parena_m = 0x00000040,
-+ PCFG04_command_serrena_b = 9,
-+ PCFG04_command_serrena_m = 0x00000100,
-+ PCFG04_command_fastbbena_b = 10,
-+ PCFG04_command_fastbbena_m = 0x00000200,
-+ PCFG04_status_b = 16,
-+ PCFG04_status_m = 0xffff0000,
-+ PCFG04_status_66MHz_b = 21, // 66 MHz enable
-+ PCFG04_status_66MHz_m = 0x00200000,
-+ PCFG04_status_fbb_b = 23,
-+ PCFG04_status_fbb_m = 0x00800000,
-+ PCFG04_status_mdpe_b = 24,
-+ PCFG04_status_mdpe_m = 0x01000000,
-+ PCFG04_status_dst_b = 25,
-+ PCFG04_status_dst_m = 0x06000000,
-+ PCFG04_status_sta_b = 27,
-+ PCFG04_status_sta_m = 0x08000000,
-+ PCFG04_status_rta_b = 28,
-+ PCFG04_status_rta_m = 0x10000000,
-+ PCFG04_status_rma_b = 29,
-+ PCFG04_status_rma_m = 0x20000000,
-+ PCFG04_status_sse_b = 30,
-+ PCFG04_status_sse_m = 0x40000000,
-+ PCFG04_status_pe_b = 31,
-+ PCFG04_status_pe_m = 0x40000000,
-+
-+ PCFG08_revId_b = 0,
-+ PCFG08_revId_m = 0x000000ff,
-+ PCFG08_classCode_b = 0,
-+ PCFG08_classCode_m = 0xffffff00,
-+ PCFG08_classCode_bridge_v = 06,
-+ PCFG08_classCode_proc_v = 0x0b3000, // processor-MIPS
-+ PCFG0C_cacheline_b = 0,
-+ PCFG0C_cacheline_m = 0x000000ff,
-+ PCFG0C_masterLatency_b = 8,
-+ PCFG0C_masterLatency_m = 0x0000ff00,
-+ PCFG0C_headerType_b = 16,
-+ PCFG0C_headerType_m = 0x00ff0000,
-+ PCFG0C_bist_b = 24,
-+ PCFG0C_bist_m = 0xff000000,
-+
-+ PCIPBA_msi_b = 0,
-+ PCIPBA_msi_m = 0x00000001,
-+ PCIPBA_p_b = 3,
-+ PCIPBA_p_m = 0x00000004,
-+ PCIPBA_baddr_b = 8,
-+ PCIPBA_baddr_m = 0xffffff00,
-+
-+ PCFGSS_vendorId_b = 0,
-+ PCFGSS_vendorId_m = 0x0000ffff,
-+ PCFGSS_id_b = 16,
-+ PCFGSS_id_m = 0xffff0000,
-+
-+ PCFG3C_interruptLine_b = 0,
-+ PCFG3C_interruptLine_m = 0x000000ff,
-+ PCFG3C_interruptPin_b = 8,
-+ PCFG3C_interruptPin_m = 0x0000ff00,
-+ PCFG3C_minGrant_b = 16,
-+ PCFG3C_minGrant_m = 0x00ff0000,
-+ PCFG3C_maxLat_b = 24,
-+ PCFG3C_maxLat_m = 0xff000000,
-+
-+ PCIPBAC_msi_b = 0,
-+ PCIPBAC_msi_m = 0x00000001,
-+ PCIPBAC_p_b = 1,
-+ PCIPBAC_p_m = 0x00000002,
-+ PCIPBAC_size_b = 2,
-+ PCIPBAC_size_m = 0x0000007c,
-+ PCIPBAC_sb_b = 7,
-+ PCIPBAC_sb_m = 0x00000080,
-+ PCIPBAC_pp_b = 8,
-+ PCIPBAC_pp_m = 0x00000100,
-+ PCIPBAC_mr_b = 9,
-+ PCIPBAC_mr_m = 0x00000600,
-+ PCIPBAC_mr_read_v =0, //no prefetching
-+ PCIPBAC_mr_readLine_v =1,
-+ PCIPBAC_mr_readMult_v =2,
-+ PCIPBAC_mrl_b = 11,
-+ PCIPBAC_mrl_m = 0x00000800,
-+ PCIPBAC_mrm_b = 12,
-+ PCIPBAC_mrm_m = 0x00001000,
-+ PCIPBAC_trp_b = 13,
-+ PCIPBAC_trp_m = 0x00002000,
-+
-+ PCFG40_trdyTimeout_b = 0,
-+ PCFG40_trdyTimeout_m = 0x000000ff,
-+ PCFG40_retryLim_b = 8,
-+ PCFG40_retryLim_m = 0x0000ff00,
-+};
-+
-+/*******************************************************************************
-+ *
-+ * PCI Local Base Address [0|1|2|3] Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCILBA_baddr_b = 0, // In PCI_t -> pcilba [] .a
-+ PCILBA_baddr_m = 0xffffff00,
-+} ;
-+/*******************************************************************************
-+ *
-+ * PCI Local Base Address Control Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCILBAC_msi_b = 0, // In pPci->pcilba[i].c
-+ PCILBAC_msi_m = 0x00000001,
-+ PCILBAC_msi_mem_v = 0,
-+ PCILBAC_msi_io_v = 1,
-+ PCILBAC_size_b = 2, // In pPci->pcilba[i].c
-+ PCILBAC_size_m = 0x0000007c,
-+ PCILBAC_sb_b = 7, // In pPci->pcilba[i].c
-+ PCILBAC_sb_m = 0x00000080,
-+ PCILBAC_rt_b = 8, // In pPci->pcilba[i].c
-+ PCILBAC_rt_m = 0x00000100,
-+ PCILBAC_rt_noprefetch_v = 0, // mem read
-+ PCILBAC_rt_prefetch_v = 1, // mem readline
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Local Base Address [0|1|2|3] Mapping Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCILBAM_maddr_b = 8,
-+ PCILBAM_maddr_m = 0xffffff00,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Decoupled Access Control Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCIDAC_den_b = 0,
-+ PCIDAC_den_m = 0x00000001,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI Decoupled Access Status Register
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCIDAS_d_b = 0,
-+ PCIDAS_d_m = 0x00000001,
-+ PCIDAS_b_b = 1,
-+ PCIDAS_b_m = 0x00000002,
-+ PCIDAS_e_b = 2,
-+ PCIDAS_e_m = 0x00000004,
-+ PCIDAS_ofe_b = 3,
-+ PCIDAS_ofe_m = 0x00000008,
-+ PCIDAS_off_b = 4,
-+ PCIDAS_off_m = 0x00000010,
-+ PCIDAS_ife_b = 5,
-+ PCIDAS_ife_m = 0x00000020,
-+ PCIDAS_iff_b = 6,
-+ PCIDAS_iff_m = 0x00000040,
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI DMA Channel 8 Configuration Register
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCIDMA8C_mbs_b = 0, // Maximum Burst Size.
-+ PCIDMA8C_mbs_m = 0x00000fff, // { pcidma8c }
-+ PCIDMA8C_our_b = 12, // Optimize Unaligned Burst Reads.
-+ PCIDMA8C_our_m = 0x00001000, // { pcidma8c }
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI DMA Channel 9 Configuration Register
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCIDMA9C_mbs_b = 0, // Maximum Burst Size.
-+ PCIDMA9C_mbs_m = 0x00000fff, // { pcidma9c }
-+} ;
-+
-+/*******************************************************************************
-+ *
-+ * PCI to Memory(DMA Channel 8) AND Memory to PCI DMA(DMA Channel 9)Descriptors
-+ *
-+ ******************************************************************************/
-+enum {
-+ PCIDMAD_pt_b = 22, // in DEVCMD field (descriptor)
-+ PCIDMAD_pt_m = 0x00c00000, // preferred transaction field
-+ // These are for reads (DMA channel 8)
-+ PCIDMAD_devcmd_mr_v = 0, //memory read
-+ PCIDMAD_devcmd_mrl_v = 1, //memory read line
-+ PCIDMAD_devcmd_mrm_v = 2, //memory read multiple
-+ PCIDMAD_devcmd_ior_v = 3, //I/O read
-+ // These are for writes (DMA channel 9)
-+ PCIDMAD_devcmd_mw_v = 0, //memory write
-+ PCIDMAD_devcmd_mwi_v = 1, //memory write invalidate
-+ PCIDMAD_devcmd_iow_v = 3, //I/O write
-+
-+ // Swap byte field applies to both DMA channel 8 and 9
-+ PCIDMAD_sb_b = 24, // in DEVCMD field (descriptor)
-+ PCIDMAD_sb_m = 0x01000000, // swap byte field
-+} ;
-+
-+
-+/*******************************************************************************
-+ *
-+ * PCI Target Control Register
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCITC_rtimer_b = 0, // In PCITC_t -> pcitc
-+ PCITC_rtimer_m = 0x000000ff,
-+ PCITC_dtimer_b = 8, // In PCITC_t -> pcitc
-+ PCITC_dtimer_m = 0x0000ff00,
-+ PCITC_rdr_b = 18, // In PCITC_t -> pcitc
-+ PCITC_rdr_m = 0x00040000,
-+ PCITC_ddt_b = 19, // In PCITC_t -> pcitc
-+ PCITC_ddt_m = 0x00080000,
-+} ;
-+/*******************************************************************************
-+ *
-+ * PCI messaging unit [applies to both inbound and outbound registers ]
-+ *
-+ ******************************************************************************/
-+enum
-+{
-+ PCIM_m0_b = 0, // In PCIM_t -> {pci{iic,iim,ioic,ioim}}
-+ PCIM_m0_m = 0x00000001, // inbound or outbound message 0
-+ PCIM_m1_b = 1, // In PCIM_t -> {pci{iic,iim,ioic,ioim}}
-+ PCIM_m1_m = 0x00000002, // inbound or outbound message 1
-+ PCIM_db_b = 2, // In PCIM_t -> {pci{iic,iim,ioic,ioim}}
-+ PCIM_db_m = 0x00000004, // inbound or outbound doorbell
-+};
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,190 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Definitions for IDT RC32438 PCI setup.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#define PCI_MSG_VirtualAddress 0xB8088010
-+#define rc32438_pci ((volatile PCI_t) PCI0_VirtualAddress)
-+#define rc32438_pci_msg ((volatile PCIM_t) PCI_MSG_VirtualAddress)
-+
-+#define PCIM_SHFT 0x6
-+#define PCIM_BIT_LEN 0x7
-+#define PCIM_H_EA 0x3
-+#define PCIM_H_IA_FIX 0x4
-+#define PCIM_H_IA_RR 0x5
-+
-+#define PCI_ADDR_START 0x50000000
-+
-+#define CPUTOPCI_MEM_WIN 0x02000000
-+#define CPUTOPCI_IO_WIN 0x00100000
-+#define PCILBA_SIZE_SHFT 2
-+#define PCILBA_SIZE_MASK 0x1F
-+#define SIZE_256MB 0x1C
-+#define SIZE_128MB 0x1B
-+#define SIZE_64MB 0x1A
-+#define SIZE_32MB 0x19
-+#define SIZE_16MB 0x18
-+#define SIZE_4MB 0x16
-+#define SIZE_2MB 0x15
-+#define SIZE_1MB 0x14
-+#define ACACIA_CONFIG0_ADDR 0x80000000
-+#define ACACIA_CONFIG1_ADDR 0x80000004
-+#define ACACIA_CONFIG2_ADDR 0x80000008
-+#define ACACIA_CONFIG3_ADDR 0x8000000C
-+#define ACACIA_CONFIG4_ADDR 0x80000010
-+#define ACACIA_CONFIG5_ADDR 0x80000014
-+#define ACACIA_CONFIG6_ADDR 0x80000018
-+#define ACACIA_CONFIG7_ADDR 0x8000001C
-+#define ACACIA_CONFIG8_ADDR 0x80000020
-+#define ACACIA_CONFIG9_ADDR 0x80000024
-+#define ACACIA_CONFIG10_ADDR 0x80000028
-+#define ACACIA_CONFIG11_ADDR 0x8000002C
-+#define ACACIA_CONFIG12_ADDR 0x80000030
-+#define ACACIA_CONFIG13_ADDR 0x80000034
-+#define ACACIA_CONFIG14_ADDR 0x80000038
-+#define ACACIA_CONFIG15_ADDR 0x8000003C
-+#define ACACIA_CONFIG16_ADDR 0x80000040
-+#define ACACIA_CONFIG17_ADDR 0x80000044
-+#define ACACIA_CONFIG18_ADDR 0x80000048
-+#define ACACIA_CONFIG19_ADDR 0x8000004C
-+#define ACACIA_CONFIG20_ADDR 0x80000050
-+#define ACACIA_CONFIG21_ADDR 0x80000054
-+#define ACACIA_CONFIG22_ADDR 0x80000058
-+#define ACACIA_CONFIG23_ADDR 0x8000005C
-+#define ACACIA_CONFIG24_ADDR 0x80000060
-+#define ACACIA_CONFIG25_ADDR 0x80000064
-+#define ACACIA_CMD (PCFG04_command_ioena_m | \
-+ PCFG04_command_memena_m | \
-+ PCFG04_command_bmena_m | \
-+ PCFG04_command_mwinv_m | \
-+ PCFG04_command_parena_m | \
-+ PCFG04_command_serrena_m )
-+
-+#define ACACIA_STAT (PCFG04_status_mdpe_m | \
-+ PCFG04_status_sta_m | \
-+ PCFG04_status_rta_m | \
-+ PCFG04_status_rma_m | \
-+ PCFG04_status_sse_m | \
-+ PCFG04_status_pe_m)
-+
-+#define ACACIA_CNFG1 ((ACACIA_STAT<<16)|ACACIA_CMD)
-+
-+#define ACACIA_REVID 0
-+#define ACACIA_CLASS_CODE 0
-+#define ACACIA_CNFG2 ((ACACIA_CLASS_CODE<<8) | \
-+ ACACIA_REVID)
-+
-+#define ACACIA_CACHE_LINE_SIZE 4
-+#define ACACIA_MASTER_LAT 0x3c
-+#define ACACIA_HEADER_TYPE 0
-+#define ACACIA_BIST 0
-+
-+#define ACACIA_CNFG3 ((ACACIA_BIST << 24) | \
-+ (ACACIA_HEADER_TYPE<<16) | \
-+ (ACACIA_MASTER_LAT<<8) | \
-+ ACACIA_CACHE_LINE_SIZE )
-+
-+#define ACACIA_BAR0 0x00000008 /* 128 MB Memory */
-+#define ACACIA_BAR1 0x18800001 /* 1 MB IO */
-+#define ACACIA_BAR2 0x18000001 /* 2 MB IO window for Acacia
-+ internal Registers */
-+#define ACACIA_BAR3 0x48000008 /* Spare 128 MB Memory */
-+
-+#define ACACIA_CNFG4 ACACIA_BAR0
-+#define ACACIA_CNFG5 ACACIA_BAR1
-+#define ACACIA_CNFG6 ACACIA_BAR2
-+#define ACACIA_CNFG7 ACACIA_BAR3
-+
-+#define ACACIA_SUBSYS_VENDOR_ID 0
-+#define ACACIA_SUBSYSTEM_ID 0
-+#define ACACIA_CNFG8 0
-+#define ACACIA_CNFG9 0
-+#define ACACIA_CNFG10 0
-+#define ACACIA_CNFG11 ((ACACIA_SUBSYS_VENDOR_ID<<16) | \
-+ ACACIA_SUBSYSTEM_ID)
-+#define ACACIA_INT_LINE 1
-+#define ACACIA_INT_PIN 1
-+#define ACACIA_MIN_GNT 8
-+#define ACACIA_MAX_LAT 0x38
-+#define ACACIA_CNFG12 0
-+#define ACACIA_CNFG13 0
-+#define ACACIA_CNFG14 0
-+#define ACACIA_CNFG15 ((ACACIA_MAX_LAT<<24) | \
-+ (ACACIA_MIN_GNT<<16) | \
-+ (ACACIA_INT_PIN<<8) | \
-+ ACACIA_INT_LINE)
-+#define ACACIA_RETRY_LIMIT 0x80
-+#define ACACIA_TRDY_LIMIT 0x80
-+#define ACACIA_CNFG16 ((ACACIA_RETRY_LIMIT<<8) | \
-+ ACACIA_TRDY_LIMIT)
-+#define PCI_PBAxC_R 0x0
-+#define PCI_PBAxC_RL 0x1
-+#define PCI_PBAxC_RM 0x2
-+#define SIZE_SHFT 2
-+
-+#define ACACIA_PBA0C ( PCIPBAC_mrl_m | PCIPBAC_sb_m | \
-+ ((PCI_PBAxC_RM &0x3) << PCIPBAC_mr_b) | \
-+ PCIPBAC_pp_m | \
-+ (SIZE_128MB<<SIZE_SHFT) | \
-+ PCIPBAC_p_m)
-+
-+#define ACACIA_CNFG17 ACACIA_PBA0C
-+#define ACACIA_PBA0M 0x0
-+#define ACACIA_CNFG18 ACACIA_PBA0M
-+
-+#define ACACIA_PBA1C ((SIZE_1MB<<SIZE_SHFT) | PCIPBAC_sb_m | \
-+ PCIPBAC_msi_m)
-+
-+#define ACACIA_CNFG19 ACACIA_PBA1C
-+#define ACACIA_PBA1M 0x0
-+#define ACACIA_CNFG20 ACACIA_PBA1M
-+
-+#define ACACIA_PBA2C ((SIZE_2MB<<SIZE_SHFT) | PCIPBAC_sb_m | \
-+ PCIPBAC_msi_m)
-+
-+#define ACACIA_CNFG21 ACACIA_PBA2C
-+#define ACACIA_PBA2M 0x18000000
-+#define ACACIA_CNFG22 ACACIA_PBA2M
-+#define ACACIA_PBA3C 0
-+#define ACACIA_CNFG23 ACACIA_PBA3C
-+#define ACACIA_PBA3M 0
-+#define ACACIA_CNFG24 ACACIA_PBA3M
-+
-+
-+
-+#define PCITC_DTIMER_VAL 8
-+#define PCITC_RTIMER_VAL 0x10
-+
-diff -Nur linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_timer.h linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_timer.h
---- linux-2.6.16/include/asm-mips/idt-boards/rc32438/rc32438_timer.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/idt-boards/rc32438/rc32438_timer.h 2006-03-20 14:25:10.000000000 +0100
-@@ -0,0 +1,91 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Timer register definition IDT RC32438 CPU.
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 P. Sadik.
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#ifndef __IDT_RC32438_TIM_H__
-+#define __IDT_RC32438_TIM_H__
-+
-+enum
-+{
-+ TIM0_PhysicalAddress = 0x18028000,
-+ TIM_PhysicalAddress = TIM0_PhysicalAddress, // Default
-+
-+ TIM0_VirtualAddress = 0xb8028000,
-+ TIM_VirtualAddress = TIM0_VirtualAddress, // Default
-+} ;
-+
-+enum
-+{
-+ TIM_Count = 3,
-+} ;
-+
-+struct TIM_CNTR_s
-+{
-+ u32 count ;
-+ u32 compare ;
-+ u32 ctc ; //use CTC_
-+} ;
-+
-+typedef struct TIM_s
-+{
-+ struct TIM_CNTR_s tim [TIM_Count] ;
-+ u32 rcount ; //use RCOUNT_
-+ u32 rcompare ; //use RCOMPARE_
-+ u32 rtc ; //use RTC_
-+} volatile * TIM_t ;
-+
-+enum
-+{
-+ CTC_en_b = 0,
-+ CTC_en_m = 0x00000001,
-+ CTC_to_b = 1,
-+ CTC_to_m = 0x00000002,
-+
-+ RCOUNT_count_b = 0,
-+ RCOUNT_count_m = 0x0000ffff,
-+ RCOMPARE_compare_b = 0,
-+ RCOMPARE_compare_m = 0x0000ffff,
-+ RTC_ce_b = 0,
-+ RTC_ce_m = 0x00000001,
-+ RTC_to_b = 1,
-+ RTC_to_m = 0x00000002,
-+ RTC_rqe_b = 2,
-+ RTC_rqe_m = 0x00000004,
-+
-+} ;
-+#endif //__IDT_RC32438_TIM_H__
-+
-diff -Nur linux-2.6.16/include/asm-mips/mach-generic/irq.h linux-2.6.16-owrt/include/asm-mips/mach-generic/irq.h
---- linux-2.6.16/include/asm-mips/mach-generic/irq.h 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/mach-generic/irq.h 2006-03-20 14:25:10.000000000 +0100
-@@ -8,6 +8,6 @@
- #ifndef __ASM_MACH_GENERIC_IRQ_H
- #define __ASM_MACH_GENERIC_IRQ_H
-
--#define NR_IRQS 128
-+#define NR_IRQS 256
-
- #endif /* __ASM_MACH_GENERIC_IRQ_H */
-diff -Nur linux-2.6.16/include/linux/init.h linux-2.6.16-owrt/include/linux/init.h
---- linux-2.6.16/include/linux/init.h 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/include/linux/init.h 2006-03-20 14:25:10.000000000 +0100
-@@ -86,6 +86,8 @@
- static initcall_t __initcall_##fn __attribute_used__ \
- __attribute__((__section__(".initcall" level ".init"))) = fn
-
-+#define early_initcall(fn) __define_initcall(".early1",fn)
-+
- #define core_initcall(fn) __define_initcall("1",fn)
- #define postcore_initcall(fn) __define_initcall("2",fn)
- #define arch_initcall(fn) __define_initcall("3",fn)
-diff -Nur linux-2.6.16/include/linux/kernel.h linux-2.6.16-owrt/include/linux/kernel.h
---- linux-2.6.16/include/linux/kernel.h 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/include/linux/kernel.h 2006-03-20 14:25:10.000000000 +0100
-@@ -324,6 +324,7 @@
- };
-
- /* Force a compilation error if condition is true */
-+extern void BUILD_BUG(void);
- #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
-
- /* Trap pasters of __FUNCTION__ at compile-time */
diff --git a/openwrt/target/linux/aruba-2.6/patches/001-flash.patch b/openwrt/target/linux/aruba-2.6/patches/001-flash.patch
deleted file mode 100644
index f0b951370d..0000000000
--- a/openwrt/target/linux/aruba-2.6/patches/001-flash.patch
+++ /dev/null
@@ -1,159 +0,0 @@
-diff -Nur linux-2.6.15/arch/mips/aruba/flash_lock.c linux-2.6.15-openwrt/arch/mips/aruba/flash_lock.c
---- linux-2.6.15/arch/mips/aruba/flash_lock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/flash_lock.c 2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,27 @@
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <asm/bootinfo.h>
-+
-+#define AP70_PROT_ADDR 0xb8010008
-+#define AP70_PROT_DATA 0x8
-+#define AP60_PROT_ADDR 0xB8400000
-+#define AP60_PROT_DATA 0x04000000
-+
-+void unlock_ap60_70_flash(void)
-+{
-+ volatile __u32 val;
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP70:
-+ val = *(volatile __u32 *)AP70_PROT_ADDR;
-+ val &= ~(AP70_PROT_DATA);
-+ *(volatile __u32 *)AP70_PROT_ADDR = val;
-+ break;
-+ case MACH_ARUBA_AP65:
-+ case MACH_ARUBA_AP60:
-+ default:
-+ val = *(volatile __u32 *)AP60_PROT_ADDR;
-+ val &= ~(AP60_PROT_DATA);
-+ *(volatile __u32 *)AP60_PROT_ADDR = val;
-+ break;
-+ }
-+}
-diff -Nur linux-2.6.15/drivers/mtd/chips/cfi_probe.c linux-2.6.15-openwrt/drivers/mtd/chips/cfi_probe.c
---- linux-2.6.15/drivers/mtd/chips/cfi_probe.c 2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/drivers/mtd/chips/cfi_probe.c 2006-01-10 00:32:32.000000000 +0100
-@@ -26,6 +26,74 @@
- static void print_cfi_ident(struct cfi_ident *);
- #endif
-
-+#if 1
-+
-+#define AMD_AUTOSEL_OFF1 0xAAA
-+#define AMD_AUTOSEL_OFF2 0x555
-+#define AMD_MANUF_ID 0x1
-+#define AMD_DEVICE_ID1 0xF6 /* T */
-+#define AMD_DEVICE_ID2 0xF9 /* B */
-+/* Foll. are definitions for Macronix Flash Part */
-+#define MCX_MANUF_ID 0xC2
-+#define MCX_DEVICE_ID1 0xA7
-+#define MCX_DEVICE_ID2 0xA8
-+/* Foll. common to both AMD and Macronix */
-+#define FACTORY_LOCKED 0x99
-+#define USER_LOCKED 0x19
-+
-+/* NOTE: AP-70/6x use BYTE mode flash access. Therefore the
-+ * lowest Addr. pin in the flash is not A0 but A-1 (A minus 1).
-+ * CPU's A0 is tied to Flash's A-1, A1 to A0 and so on. This
-+ * gives 4MB of byte-addressable mem. In byte mode, all addr
-+ * need to be multiplied by 2 (i.e compared to word mode).
-+ * NOTE: AMD_AUTOSEL_OFF1 and OFF2 are already mult. by 2
-+ * Just blindly use the addr offsets suggested in the manual
-+ * for byte mode and you'll be OK. Offs. in Table 6 need to
-+ * be mult by 2 (for getting autosel params)
-+ */
-+void
-+flash_detect(struct map_info *map, __u32 base, struct cfi_private *cfi)
-+{
-+ map_word val[3];
-+ int osf = cfi->interleave * cfi->device_type; // =2 for AP70/6x
-+ char *manuf, *part, *lock ;
-+
-+ if (osf != 1) return ;
-+
-+ cfi_send_gen_cmd(0xAA, AMD_AUTOSEL_OFF1, base, map, cfi, cfi->device_type, NULL);
-+ cfi_send_gen_cmd(0x55, AMD_AUTOSEL_OFF2, base, map, cfi, cfi->device_type, NULL);
-+ cfi_send_gen_cmd(0x90, AMD_AUTOSEL_OFF1, base, map, cfi, cfi->device_type, NULL);
-+ val[0] = map_read(map, base) ; // manuf ID
-+ val[1] = map_read(map, base+2) ; // device ID
-+ val[2] = map_read(map, base+6) ; // lock indicator
-+#if 0
-+printk("v1=0x%x v2=0x%x v3=0x%x\n", val[0], val[1], val[2]) ;
-+#endif
-+ if (val[0].x[0] == AMD_MANUF_ID) {
-+ manuf = "AMD Flash" ;
-+ if (val[1].x[0] == AMD_DEVICE_ID1)
-+ part = "AM29LV320D (Top)" ;
-+ else if (val[1].x[0] == AMD_DEVICE_ID2)
-+ part = "AM29LV320D (Bot)" ;
-+ else part = "Unknown" ;
-+ } else if (val[0].x[0] == MCX_MANUF_ID) {
-+ manuf = "Macronix Flash" ;
-+ if (val[1].x[0] == MCX_DEVICE_ID1)
-+ part = "MX29LV320A (Top)" ;
-+ else if (val[1].x[0] == MCX_DEVICE_ID2)
-+ part = "MX29LV320A (Bot)" ;
-+ else part = "Unknown" ;
-+ } else
-+ return ;
-+ if (val[2].x[0] == FACTORY_LOCKED)
-+ lock = "Factory Locked" ;
-+ else if (val[2].x[0] == USER_LOCKED)
-+ lock = "User Locked" ;
-+ else lock = "Unknown locking" ;
-+ printk("%s %s (%s)\n", manuf, part, lock) ;
-+}
-+#endif
-+
- static int cfi_probe_chip(struct map_info *map, __u32 base,
- unsigned long *chip_map, struct cfi_private *cfi);
- static int cfi_chip_setup(struct map_info *map, struct cfi_private *cfi);
-@@ -118,6 +186,10 @@
- }
-
- xip_disable();
-+#if 1
-+ //cfi_send_gen_cmd(0xF0, 0, base, map, cfi, cfi->device_type, NULL);
-+ flash_detect(map, base, cfi) ;
-+#endif
- cfi_send_gen_cmd(0xF0, 0, base, map, cfi, cfi->device_type, NULL);
- cfi_send_gen_cmd(0xFF, 0, base, map, cfi, cfi->device_type, NULL);
- cfi_send_gen_cmd(0x98, 0x55, base, map, cfi, cfi->device_type, NULL);
-diff -Nur linux-2.6.15/drivers/mtd/maps/physmap.c linux-2.6.15-openwrt/drivers/mtd/maps/physmap.c
---- linux-2.6.15/drivers/mtd/maps/physmap.c 2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/drivers/mtd/maps/physmap.c 2006-01-10 00:32:32.000000000 +0100
-@@ -34,15 +34,31 @@
- static struct mtd_partition *mtd_parts;
- static int mtd_parts_nb;
-
--static int num_physmap_partitions;
--static struct mtd_partition *physmap_partitions;
-+static int num_physmap_partitions = 3;
-+static struct mtd_partition physmap_partitions[] = {
-+ {
-+ name: "zImage",
-+ size: 0x3f0000-0x80000,
-+ offset: 0x80000,
-+ },
-+ {
-+ name: "JFFS2",
-+ size: 0x3f0000-0x120000,
-+ offset: 0x120000,
-+ },
-+ {
-+ name: "NVRAM",
-+ size: 0x2000,
-+ offset: 0x3f8000,
-+ }
-+};
-
- static const char *part_probes[] __initdata = {"cmdlinepart", "RedBoot", NULL};
-
- void physmap_set_partitions(struct mtd_partition *parts, int num_parts)
- {
-- physmap_partitions=parts;
-- num_physmap_partitions=num_parts;
-+// physmap_partitions=parts;
-+// num_physmap_partitions=num_parts;
- }
- #endif /* CONFIG_MTD_PARTITIONS */
-
diff --git a/openwrt/target/linux/aruba-2.6/patches/002-irq.patch b/openwrt/target/linux/aruba-2.6/patches/002-irq.patch
deleted file mode 100644
index 8faffaf9bb..0000000000
--- a/openwrt/target/linux/aruba-2.6/patches/002-irq.patch
+++ /dev/null
@@ -1,524 +0,0 @@
-diff -Nur linux-2.6.15/arch/mips/aruba/idtIRQ.S linux-2.6.15-openwrt/arch/mips/aruba/idtIRQ.S
---- linux-2.6.15/arch/mips/aruba/idtIRQ.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/idtIRQ.S 2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,87 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Intterrupt dispatcher code for IDT boards
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+
-+#include <asm/asm.h>
-+#include <asm/mipsregs.h>
-+#include <asm/regdef.h>
-+#include <asm/stackframe.h>
-+
-+ .text
-+ .set noreorder
-+ .set noat
-+ .align 5
-+ NESTED(idtIRQ, PT_SIZE, sp)
-+ .set noat
-+ SAVE_ALL
-+ CLI
-+
-+ .set at
-+ .set noreorder
-+
-+ /* Get the pending interrupts */
-+ mfc0 t0, CP0_CAUSE
-+ nop
-+
-+ /* Isolate the allowed ones by anding the irq mask */
-+ mfc0 t2, CP0_STATUS
-+ move a1, sp /* need a nop here, hence we anticipate */
-+ andi t0, CAUSEF_IP
-+ and t0, t2
-+
-+ /* check for r4k counter/timer IRQ. */
-+
-+ andi t1, t0, CAUSEF_IP7
-+ beqz t1, 1f
-+ nop
-+
-+ jal aruba_timer_interrupt
-+
-+ li a0, 7
-+
-+ j ret_from_irq
-+ nop
-+1:
-+ jal aruba_irqdispatch
-+ move a0, t0
-+ j ret_from_irq
-+ nop
-+
-+ END(idtIRQ)
-+
-+
-diff -Nur linux-2.6.15/arch/mips/aruba/irq.c linux-2.6.15-openwrt/arch/mips/aruba/irq.c
---- linux-2.6.15/arch/mips/aruba/irq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/irq.c 2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,429 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Interrupt routines for IDT EB434 boards / Atheros boards
-+ * Modified by Aruba Networks
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/errno.h>
-+#include <linux/init.h>
-+#include <linux/kernel_stat.h>
-+#include <linux/module.h>
-+#include <linux/signal.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/interrupt.h>
-+#include <linux/ioport.h>
-+#include <linux/timex.h>
-+#include <linux/slab.h>
-+#include <linux/random.h>
-+#include <linux/delay.h>
-+
-+#include <asm/bitops.h>
-+#include <asm/bootinfo.h>
-+#include <asm/io.h>
-+#include <asm/mipsregs.h>
-+#include <asm/system.h>
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+#include <asm/idt-boards/rc32434/rc32434_gpio.h>
-+
-+#include <asm/irq.h>
-+
-+#undef DEBUG_IRQ
-+#ifdef DEBUG_IRQ
-+/* note: prints function name for you */
-+#define DPRINTK(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ## args)
-+#else
-+#define DPRINTK(fmt, args...)
-+#endif
-+
-+extern asmlinkage void idtIRQ(void);
-+static unsigned int startup_irq(unsigned int irq);
-+static void end_irq(unsigned int irq_nr);
-+static void mask_and_ack_irq(unsigned int irq_nr);
-+static void aruba_enable_irq(unsigned int irq_nr);
-+static void aruba_disable_irq(unsigned int irq_nr);
-+
-+extern void __init init_generic_irq(void);
-+
-+typedef struct {
-+ u32 mask;
-+ volatile u32 *base_addr;
-+} intr_group_t;
-+
-+static const intr_group_t intr_group_merlot[NUM_INTR_GROUPS] = {
-+ {0xffffffff, (u32 *) KSEG1ADDR(IC_GROUP0_PEND + 0)},
-+};
-+
-+#define READ_PEND_MERLOT(base) (*((volatile unsigned long *)(0xbc003010)))
-+#define READ_MASK_MERLOT(base) (*((volatile unsigned long *)(0xbc003014)))
-+#define WRITE_MASK_MERLOT(base, val) ((*((volatile unsigned long *)(0xbc003014))) = (val), READ_MASK_MERLOT())
-+
-+static const intr_group_t intr_group_muscat[NUM_INTR_GROUPS] = {
-+ {0x0000efff, (u32 *) KSEG1ADDR(IC_GROUP0_PEND + 0 * IC_GROUP_OFFSET)},
-+ {0x00001fff, (u32 *) KSEG1ADDR(IC_GROUP0_PEND + 1 * IC_GROUP_OFFSET)},
-+ {0x00000007, (u32 *) KSEG1ADDR(IC_GROUP0_PEND + 2 * IC_GROUP_OFFSET)},
-+ {0x0003ffff, (u32 *) KSEG1ADDR(IC_GROUP0_PEND + 3 * IC_GROUP_OFFSET)},
-+ {0xffffffff, (u32 *) KSEG1ADDR(IC_GROUP0_PEND + 4 * IC_GROUP_OFFSET)}
-+};
-+
-+#define READ_PEND_MUSCAT(base) (*(base))
-+#define READ_MASK_MUSCAT(base) (*(base + 2))
-+#define WRITE_MASK_MUSCAT(base, val) (*(base + 2) = (val))
-+
-+static inline int irq_to_group(unsigned int irq_nr)
-+{
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP70:
-+ return ((irq_nr - GROUP0_IRQ_BASE) >> 5);
-+ case MACH_ARUBA_AP65:
-+ case MACH_ARUBA_AP60:
-+ default:
-+ return 0;
-+ }
-+}
-+
-+static inline int group_to_ip(unsigned int group)
-+{
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP70:
-+ return group + 2;
-+ case MACH_ARUBA_AP65:
-+ case MACH_ARUBA_AP60:
-+ default:
-+ return 6;
-+ }
-+}
-+
-+static inline void enable_local_irq(unsigned int ip)
-+{
-+ set_c0_status(0x100 << ip);
-+ irq_enable_hazard();
-+}
-+
-+static inline void disable_local_irq(unsigned int ip)
-+{
-+ clear_c0_status(0x100 << ip);
-+ irq_disable_hazard();
-+}
-+
-+static void aruba_enable_irq(unsigned int irq_nr)
-+{
-+ unsigned long flags;
-+ int ip = irq_nr - GROUP0_IRQ_BASE;
-+ unsigned int group, intr_bit;
-+ volatile unsigned int *addr;
-+
-+
-+ local_irq_save(flags);
-+
-+ if (ip < 0) {
-+ enable_local_irq(irq_nr);
-+ } else {
-+ // calculate group
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP70:
-+ group = ip >> 5;
-+ break;
-+ case MACH_ARUBA_AP65:
-+ case MACH_ARUBA_AP60:
-+ default:
-+ group = 0;
-+ break;
-+ }
-+
-+ // calc interrupt bit within group
-+ ip -= (group << 5);
-+ intr_bit = 1 << ip;
-+
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP70:
-+ addr = intr_group_muscat[group].base_addr;
-+ WRITE_MASK_MUSCAT(addr, READ_MASK_MUSCAT(addr) & ~intr_bit);
-+ break;
-+ case MACH_ARUBA_AP65:
-+ case MACH_ARUBA_AP60:
-+ default:
-+ addr = intr_group_merlot[group].base_addr;
-+ WRITE_MASK_MERLOT(addr, READ_MASK_MERLOT(addr) | intr_bit);
-+ break;
-+ }
-+ enable_local_irq(group_to_ip(group));
-+ }
-+
-+ back_to_back_c0_hazard();
-+ local_irq_restore(flags);
-+
-+}
-+
-+static void aruba_disable_irq(unsigned int irq_nr)
-+{
-+ unsigned long flags;
-+ int ip = irq_nr - GROUP0_IRQ_BASE;
-+ unsigned int group, intr_bit, mask;
-+ volatile unsigned int *addr;
-+
-+ local_irq_save(flags);
-+
-+ if (ip < 0) {
-+ disable_local_irq(irq_nr);
-+ } else {
-+ // calculate group
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP70:
-+ group = ip >> 5;
-+ break;
-+ case MACH_ARUBA_AP65:
-+ case MACH_ARUBA_AP60:
-+ default:
-+ group = 0;
-+ break;
-+ }
-+
-+ // calc interrupt bit within group
-+ ip -= group << 5;
-+ intr_bit = 1 << ip;
-+
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP70:
-+ addr = intr_group_muscat[group].base_addr;
-+ // mask intr within group
-+ mask = READ_MASK_MUSCAT(addr);
-+ mask |= intr_bit;
-+ WRITE_MASK_MUSCAT(addr, mask);
-+
-+ /*
-+ if there are no more interrupts enabled in this
-+ group, disable corresponding IP
-+ */
-+ if (mask == intr_group_muscat[group].mask)
-+ disable_local_irq(group_to_ip(group));
-+ break;
-+ case MACH_ARUBA_AP65:
-+ case MACH_ARUBA_AP60:
-+ default:
-+ addr = intr_group_merlot[group].base_addr;
-+ // mask intr within group
-+ mask = READ_MASK_MERLOT(addr);
-+ mask &= ~intr_bit;
-+ if (!mask)
-+ disable_local_irq(group_to_ip(group));
-+ WRITE_MASK_MERLOT(addr, mask);
-+ break;
-+ }
-+ }
-+
-+ back_to_back_c0_hazard();
-+ local_irq_restore(flags);
-+}
-+
-+static unsigned int startup_irq(unsigned int irq_nr)
-+{
-+ aruba_enable_irq(irq_nr);
-+ return 0;
-+}
-+
-+static void shutdown_irq(unsigned int irq_nr)
-+{
-+ aruba_disable_irq(irq_nr);
-+}
-+
-+static void mask_and_ack_irq(unsigned int irq_nr)
-+{
-+ aruba_disable_irq(irq_nr);
-+}
-+
-+static void end_irq(unsigned int irq_nr)
-+{
-+
-+ int ip = irq_nr - GROUP0_IRQ_BASE;
-+ unsigned int intr_bit, group;
-+ volatile unsigned int *addr;
-+
-+
-+ if (irq_desc[irq_nr].status & (IRQ_DISABLED | IRQ_INPROGRESS)) {
-+ printk("warning: end_irq %d did not enable (%x)\n",
-+ irq_nr, irq_desc[irq_nr].status);
-+ /* fall through; enable the interrupt
-+ * -- It'll get stuck otherwise
-+ */
-+
-+ }
-+
-+ if (ip<0) {
-+ enable_local_irq(irq_nr);
-+ } else {
-+
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP70:
-+ if (irq_nr == GROUP4_IRQ_BASE + 9) idt_gpio->gpioistat &= 0xfffffdff;
-+ else if (irq_nr == GROUP4_IRQ_BASE + 10) idt_gpio->gpioistat &= 0xfffffbff;
-+ else if (irq_nr == GROUP4_IRQ_BASE + 11) idt_gpio->gpioistat &= 0xfffff7ff;
-+ else if (irq_nr == GROUP4_IRQ_BASE + 12) idt_gpio->gpioistat &= 0xffffefff;
-+
-+ group = ip >> 5;
-+
-+ // calc interrupt bit within group
-+ ip -= (group << 5);
-+ intr_bit = 1 << ip;
-+
-+ // first enable the IP mapped to this IRQ
-+ enable_local_irq(group_to_ip(group));
-+
-+ addr = intr_group_muscat[group].base_addr;
-+ // unmask intr within group
-+ WRITE_MASK_MUSCAT(addr, READ_MASK_MUSCAT(addr) & ~intr_bit);
-+ break;
-+
-+ case MACH_ARUBA_AP65:
-+ case MACH_ARUBA_AP60:
-+ default:
-+ group = 0;
-+
-+ // calc interrupt bit within group
-+ intr_bit = 1 << ip;
-+
-+ // first enable the IP mapped to this IRQ
-+ enable_local_irq(group_to_ip(group));
-+
-+ addr = intr_group_merlot[group].base_addr;
-+ // unmask intr within group
-+ WRITE_MASK_MERLOT(addr, READ_MASK_MERLOT(addr) | intr_bit);
-+ break;
-+ }
-+ }
-+}
-+
-+static struct hw_interrupt_type aruba_irq_type = {
-+ .typename = "ARUBA",
-+ .startup = startup_irq,
-+ .shutdown = shutdown_irq,
-+ .enable = aruba_enable_irq,
-+ .disable = aruba_disable_irq,
-+ .ack = mask_and_ack_irq,
-+ .end = end_irq,
-+};
-+
-+void __init arch_init_irq(void)
-+{
-+ int i;
-+ printk("Initializing IRQ's: %d out of %d\n", RC32434_NR_IRQS, NR_IRQS);
-+ memset(irq_desc, 0, sizeof(irq_desc));
-+ set_except_vector(0, idtIRQ);
-+
-+ set_c0_status(0xFF00);
-+
-+ for (i = 0; i < RC32434_NR_IRQS; i++) {
-+ irq_desc[i].status = IRQ_DISABLED;
-+ irq_desc[i].action = NULL;
-+ irq_desc[i].depth = 1;
-+ irq_desc[i].handler = &aruba_irq_type;
-+ spin_lock_init(&irq_desc[i].lock);
-+ }
-+}
-+
-+/* Main Interrupt dispatcher */
-+void aruba_irqdispatch(unsigned long cp0_cause, struct pt_regs *regs)
-+{
-+ unsigned int pend, group, ip;
-+ volatile unsigned int *addr;
-+
-+ if(cp0_cause == 0) {
-+ printk("INTERRUPT(S) FIRED WHILE MASKED\n");
-+#ifdef ARUBA_DEBUG
-+ // debuging use -- figure out which interrupt(s) fired
-+ cp0_cause = read_c0_cause() & CAUSEF_IP;
-+ while (cp0_cause) {
-+ unsigned long intr_bit;
-+ unsigned int irq_nr;
-+ intr_bit = (31 - rc32434_clz(cp0_cause));
-+ irq_nr = intr_bit - GROUP0_IRQ_BASE;
-+ printk(" ---> MASKED IRQ %d\n",irq_nr);
-+ cp0_cause &= ~(1 << intr_bit);
-+ }
-+#endif
-+ return;
-+ }
-+
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP70:
-+ if ((ip = (cp0_cause & 0x7c00))) {
-+ group = 21 - rc32434_clz(ip);
-+
-+ addr = intr_group_muscat[group].base_addr;
-+
-+ pend = READ_PEND_MUSCAT(addr);
-+ pend &= ~READ_MASK_MUSCAT(addr); // only unmasked interrupts
-+ pend = 39 - rc32434_clz(pend);
-+ do_IRQ((group << 5) + pend, regs);
-+ }
-+ break;
-+ case MACH_ARUBA_AP65:
-+ case MACH_ARUBA_AP60:
-+ default:
-+ if (cp0_cause & 0x4000) { // 1 << (8 +6) == irq 6
-+ // Misc Interrupt
-+ group = 0;
-+ addr = intr_group_merlot[group].base_addr;
-+ pend = READ_PEND_MERLOT(addr);
-+ pend &= READ_MASK_MERLOT(addr); // only unmasked interrupts
-+ /* handle one misc interrupt at a time */
-+ while (pend)
-+ {
-+ unsigned long intr_bit;
-+ unsigned int irq_nr;
-+
-+ intr_bit = (31 - rc32434_clz(pend));
-+ irq_nr = intr_bit + GROUP0_IRQ_BASE;
-+
-+ do_IRQ(irq_nr, regs);
-+ pend &= ~(1 << intr_bit);
-+ }
-+ } else if (cp0_cause & 0x3c00) { // irq 2-5
-+ while (cp0_cause)
-+ {
-+ unsigned long intr_bit;
-+ unsigned int irq_nr;
-+
-+ intr_bit = (31 - rc32434_clz(cp0_cause));
-+ irq_nr = intr_bit - GROUP0_IRQ_BASE;
-+
-+ do_IRQ(irq_nr, regs);
-+ cp0_cause &= ~(1 << intr_bit);
-+ }
-+ }
-+ break;
-+ }
-+}
diff --git a/openwrt/target/linux/aruba-2.6/patches/003-pci.patch b/openwrt/target/linux/aruba-2.6/patches/003-pci.patch
deleted file mode 100644
index 0cad12a087..0000000000
--- a/openwrt/target/linux/aruba-2.6/patches/003-pci.patch
+++ /dev/null
@@ -1,618 +0,0 @@
-diff -Nur linux-2.6.15/arch/mips/pci/fixup-aruba.c linux-2.6.15-openwrt/arch/mips/pci/fixup-aruba.c
---- linux-2.6.15/arch/mips/pci/fixup-aruba.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/pci/fixup-aruba.c 2006-01-10 00:34:41.000000000 +0100
-@@ -0,0 +1,115 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * PCI fixups for IDT EB434 board
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/pci.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+#include <asm/idt-boards/rc32434/rc32434_pci.h>
-+
-+int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
-+{
-+
-+ if (dev->bus->number != 0) {
-+ return 0;
-+ }
-+
-+ slot = PCI_SLOT(dev->devfn);
-+ dev->irq = 0;
-+
-+ if (slot > 0 && slot <= 15) {
-+#if 1
-+ if(slot == 10) {
-+ if(pin == 1) dev->irq = GROUP4_IRQ_BASE + 9; // intA
-+ } else if(slot == 11) {
-+ if(pin == 1) dev->irq = GROUP4_IRQ_BASE + 10; // intA
-+ if(pin == 2) dev->irq = GROUP4_IRQ_BASE + 10; // intA
-+ if(pin == 3) dev->irq = GROUP4_IRQ_BASE + 10; // intA
-+ } else if(slot == 12) {
-+ if(pin == 1) dev->irq = GROUP4_IRQ_BASE + 11; // intA
-+ if(pin == 2) dev->irq = GROUP4_IRQ_BASE + 12; // intB
-+ } else if (slot == 13) {
-+ if(pin == 1) dev->irq = GROUP4_IRQ_BASE + 12; // intA
-+ if(pin == 2) dev->irq = GROUP4_IRQ_BASE + 11; // intB
-+ } else {
-+ dev->irq = GROUP4_IRQ_BASE + 11;
-+ }
-+#else
-+ switch (pin) {
-+ case 1: /* INTA*/
-+ dev->irq = GROUP4_IRQ_BASE + 11;
-+ break;
-+ case 2: /* INTB */
-+ dev->irq = GROUP4_IRQ_BASE + 11;
-+ break;
-+ case 3: /* INTC */
-+ dev->irq = GROUP4_IRQ_BASE + 11;
-+ break;
-+ case 4: /* INTD */
-+ dev->irq = GROUP4_IRQ_BASE + 11;
-+ break;
-+ default:
-+ dev->irq = 0xff;
-+ break;
-+ }
-+#endif
-+#ifdef DEBUG
-+ printk("irq fixup: slot %d, pin %d, irq %d\n",
-+ slot, pin, dev->irq);
-+#endif
-+ pci_write_config_byte(dev, PCI_INTERRUPT_LINE,dev->irq);
-+ }
-+ return (dev->irq);
-+}
-+
-+struct pci_fixup pcibios_fixups[] = {
-+ {0}
-+};
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff -Nur linux-2.6.15/arch/mips/pci/Makefile linux-2.6.15-openwrt/arch/mips/pci/Makefile
---- linux-2.6.15/arch/mips/pci/Makefile 2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/pci/Makefile 2006-01-10 00:32:32.000000000 +0100
-@@ -56,3 +56,4 @@
- obj-$(CONFIG_TOSHIBA_RBTX4938) += fixup-tx4938.o ops-tx4938.o
- obj-$(CONFIG_VICTOR_MPC30X) += fixup-mpc30x.o
- obj-$(CONFIG_ZAO_CAPCELLA) += fixup-capcella.o
-+obj-$(CONFIG_MACH_ARUBA) += fixup-aruba.o ops-aruba.o pci-aruba.o
-diff -Nur linux-2.6.15/arch/mips/pci/ops-aruba.c linux-2.6.15-openwrt/arch/mips/pci/ops-aruba.c
---- linux-2.6.15/arch/mips/pci/ops-aruba.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/pci/ops-aruba.c 2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,204 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * pci_ops for IDT EB434 board
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/pci.h>
-+#include <linux/types.h>
-+#include <linux/delay.h>
-+
-+#include <asm/cpu.h>
-+#include <asm/io.h>
-+
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+#include <asm/idt-boards/rc32434/rc32434_pci.h>
-+
-+#define PCI_ACCESS_READ 0
-+#define PCI_ACCESS_WRITE 1
-+
-+
-+#define PCI_CFG_SET(slot,func,off) \
-+ (rc32434_pci->pcicfga = (0x80000000 | ((slot)<<11) | \
-+ ((func)<<8) | (off)))
-+
-+static int config_access(unsigned char access_type, struct pci_bus *bus,
-+ unsigned int devfn, unsigned char where,
-+ u32 * data)
-+{
-+ /*
-+ * config cycles are on 4 byte boundary only
-+ */
-+ unsigned int slot = PCI_SLOT(devfn);
-+ u8 func = PCI_FUNC(devfn);
-+
-+ if (slot < 2 || slot > 15) {
-+ *data = 0xFFFFFFFF;
-+ return -1;
-+ }
-+ /* Setup address */
-+ PCI_CFG_SET(slot, func, where);
-+ rc32434_sync();
-+
-+ if (access_type == PCI_ACCESS_WRITE) {
-+ rc32434_sync();
-+ rc32434_pci->pcicfgd = *data;
-+ } else {
-+ rc32434_sync();
-+ *data = rc32434_pci->pcicfgd;
-+ }
-+
-+ rc32434_sync();
-+
-+ return 0;
-+}
-+
-+
-+/*
-+ * We can't address 8 and 16 bit words directly. Instead we have to
-+ * read/write a 32bit word and mask/modify the data we actually want.
-+ */
-+static int read_config_byte(struct pci_bus *bus, unsigned int devfn,
-+ int where, u8 * val)
-+{
-+ u32 data;
-+ int ret;
-+
-+ ret = config_access(PCI_ACCESS_READ, bus, devfn, where, &data);
-+ *val = (data >> ((where & 3) << 3)) & 0xff;
-+ return ret;
-+}
-+
-+static int read_config_word(struct pci_bus *bus, unsigned int devfn,
-+ int where, u16 * val)
-+{
-+ u32 data;
-+ int ret;
-+
-+ ret = config_access(PCI_ACCESS_READ, bus, devfn, where, &data);
-+ *val = (data >> ((where & 3) << 3)) & 0xffff;
-+ return ret;
-+}
-+
-+static int read_config_dword(struct pci_bus *bus, unsigned int devfn,
-+ int where, u32 * val)
-+{
-+ int ret;
-+
-+ ret = config_access(PCI_ACCESS_READ, bus, devfn, where, val);
-+ return ret;
-+}
-+
-+static int
-+write_config_byte(struct pci_bus *bus, unsigned int devfn, int where,
-+ u8 val)
-+{
-+ u32 data = 0;
-+
-+ if (config_access(PCI_ACCESS_READ, bus, devfn, where, &data))
-+ return -1;
-+
-+ data = (data & ~(0xff << ((where & 3) << 3))) |
-+ (val << ((where & 3) << 3));
-+
-+ if (config_access(PCI_ACCESS_WRITE, bus, devfn, where, &data))
-+ return -1;
-+
-+ return PCIBIOS_SUCCESSFUL;
-+}
-+
-+
-+static int
-+write_config_word(struct pci_bus *bus, unsigned int devfn, int where,
-+ u16 val)
-+{
-+ u32 data = 0;
-+
-+ if (config_access(PCI_ACCESS_READ, bus, devfn, where, &data))
-+ return -1;
-+
-+ data = (data & ~(0xffff << ((where & 3) << 3))) |
-+ (val << ((where & 3) << 3));
-+
-+ if (config_access(PCI_ACCESS_WRITE, bus, devfn, where, &data))
-+ return -1;
-+
-+
-+ return PCIBIOS_SUCCESSFUL;
-+}
-+
-+
-+static int
-+write_config_dword(struct pci_bus *bus, unsigned int devfn, int where,
-+ u32 val)
-+{
-+ if (config_access(PCI_ACCESS_WRITE, bus, devfn, where, &val))
-+ return -1;
-+
-+ return PCIBIOS_SUCCESSFUL;
-+}
-+
-+static int pci_config_read(struct pci_bus *bus, unsigned int devfn,
-+ int where, int size, u32 * val)
-+{
-+ switch (size) {
-+ case 1:
-+ return read_config_byte(bus, devfn, where, (u8 *) val);
-+ case 2:
-+ return read_config_word(bus, devfn, where, (u16 *) val);
-+ default:
-+ return read_config_dword(bus, devfn, where, val);
-+ }
-+}
-+
-+static int pci_config_write(struct pci_bus *bus, unsigned int devfn,
-+ int where, int size, u32 val)
-+{
-+ switch (size) {
-+ case 1:
-+ return write_config_byte(bus, devfn, where, (u8) val);
-+ case 2:
-+ return write_config_word(bus, devfn, where, (u16) val);
-+ default:
-+ return write_config_dword(bus, devfn, where, val);
-+ }
-+}
-+
-+struct pci_ops rc32434_pci_ops = {
-+ .read = pci_config_read,
-+ .write = pci_config_write,
-+};
-diff -Nur linux-2.6.15/arch/mips/pci/pci-aruba.c linux-2.6.15-openwrt/arch/mips/pci/pci-aruba.c
---- linux-2.6.15/arch/mips/pci/pci-aruba.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/pci/pci-aruba.c 2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,235 @@
-+/**************************************************************************
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * PCI initialization for IDT EB434 board
-+ *
-+ * Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ *
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/pci.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+#include <asm/idt-boards/rc32434/rc32434_pci.h>
-+
-+#define PCI_ACCESS_READ 0
-+#define PCI_ACCESS_WRITE 1
-+
-+#undef DEBUG
-+#ifdef DEBUG
-+#define DBG(x...) printk(x)
-+#else
-+#define DBG(x...)
-+#endif
-+/* define an unsigned array for the PCI registers */
-+unsigned int korinaCnfgRegs[25] = {
-+ KORINA_CNFG1, KORINA_CNFG2, KORINA_CNFG3, KORINA_CNFG4,
-+ KORINA_CNFG5, KORINA_CNFG6, KORINA_CNFG7, KORINA_CNFG8,
-+ KORINA_CNFG9, KORINA_CNFG10, KORINA_CNFG11, KORINA_CNFG12,
-+ KORINA_CNFG13, KORINA_CNFG14, KORINA_CNFG15, KORINA_CNFG16,
-+ KORINA_CNFG17, KORINA_CNFG18, KORINA_CNFG19, KORINA_CNFG20,
-+ KORINA_CNFG21, KORINA_CNFG22, KORINA_CNFG23, KORINA_CNFG24
-+};
-+
-+static struct resource rc32434_res_pci_mem2;
-+
-+static struct resource rc32434_res_pci_mem1 = {
-+ .name = "PCI MEM1",
-+ .start = 0x50000000,
-+ .end = 0x5FFFFFFF,
-+ .flags = IORESOURCE_MEM,
-+ .child = &rc32434_res_pci_mem2,
-+};
-+static struct resource rc32434_res_pci_mem2 = {
-+ .name = "PCI MEM2",
-+ .start = 0x60000000,
-+ .end = 0x6FFFFFFF,
-+ .flags = IORESOURCE_MEM,
-+ .parent = &rc32434_res_pci_mem1,
-+};
-+static struct resource rc32434_res_pci_io1 = {
-+ .name = "PCI I/O1",
-+ .start = 0x18800000,
-+ .end = 0x188FFFFF,
-+ .flags = IORESOURCE_IO,
-+};
-+
-+extern struct pci_ops rc32434_pci_ops;
-+
-+struct pci_controller rc32434_controller = {
-+ .pci_ops = &rc32434_pci_ops,
-+ .mem_resource = &rc32434_res_pci_mem1,
-+ .io_resource = &rc32434_res_pci_io1,
-+ .mem_offset = 0x00000000UL,
-+ .io_offset = 0x00000000UL,
-+};
-+
-+extern unsigned int arch_has_pci;
-+
-+static int __init rc32434_pcibridge_init(void)
-+{
-+
-+ unsigned int pciConfigAddr = 0;/*used for writing pci config values */
-+ int loopCount=0 ;/*used for the loop */
-+
-+ unsigned int pcicValue, pcicData=0;
-+ unsigned int dummyRead, pciCntlVal = 0;
-+
-+ if (!arch_has_pci) return 0;
-+
-+ printk("PCI: Initializing PCI\n");
-+
-+ /* Disable the IP bus error for PCI scaning */
-+ pciCntlVal=rc32434_pci->pcic;
-+ pciCntlVal &= 0xFFFFFF7;
-+ rc32434_pci->pcic = pciCntlVal;
-+
-+ ioport_resource.start = rc32434_res_pci_io1.start;
-+ ioport_resource.end = rc32434_res_pci_io1.end;
-+/*
-+ iomem_resource.start = rc32434_res_pci_mem1.start;
-+ iomem_resource.end = rc32434_res_pci_mem1.end;
-+*/
-+
-+ pcicValue = rc32434_pci->pcic;
-+ pcicValue = (pcicValue >> PCIM_SHFT) & PCIM_BIT_LEN;
-+ if (!((pcicValue == PCIM_H_EA) ||
-+ (pcicValue == PCIM_H_IA_FIX) ||
-+ (pcicValue == PCIM_H_IA_RR))) {
-+ /* Not in Host Mode, return ERROR */
-+ return -1;
-+ }
-+
-+ /* Enables the Idle Grant mode, Arbiter Parking */
-+ pcicData |=(PCIC_igm_m|PCIC_eap_m|PCIC_en_m);
-+ rc32434_pci->pcic = pcicData; /* Enable the PCI bus Interface */
-+ /* Zero out the PCI status & PCI Status Mask */
-+ for(;;) {
-+ pcicData = rc32434_pci->pcis;
-+ if (!(pcicData & PCIS_rip_m))
-+ break;
-+ }
-+
-+ rc32434_pci->pcis = 0;
-+ rc32434_pci->pcism = 0xFFFFFFFF;
-+ /* Zero out the PCI decoupled registers */
-+ rc32434_pci->pcidac=0; /* disable PCI decoupled accesses at initialization */
-+ rc32434_pci->pcidas=0; /* clear the status */
-+ rc32434_pci->pcidasm=0x0000007F; /* Mask all the interrupts */
-+ /* Mask PCI Messaging Interrupts */
-+ rc32434_pci_msg->pciiic = 0;
-+ rc32434_pci_msg->pciiim = 0xFFFFFFFF;
-+ rc32434_pci_msg->pciioic = 0;
-+ rc32434_pci_msg->pciioim = 0;
-+
-+ /* Setup PCILB0 as Memory Window */
-+ rc32434_pci->pcilba[0].a = (unsigned int) (PCI_ADDR_START);
-+
-+ /* setup the PCI map address as same as the local address */
-+
-+ rc32434_pci->pcilba[0].m = (unsigned int) (PCI_ADDR_START);
-+
-+ /* Setup PCILBA1 as MEM */
-+#ifdef __MIPSEB__
-+ rc32434_pci->pcilba[0].c = ( ((SIZE_16MB & 0x1f) << PCILBAC_size_b) | PCILBAC_sb_m);
-+#else
-+ rc32434_pci->pcilba[0].c = ( ((SIZE_16MB & 0x1f) << PCILBAC_size_b));
-+#endif
-+ dummyRead = rc32434_pci->pcilba[0].c; /* flush the CPU write Buffers */
-+
-+ rc32434_pci->pcilba[1].a = 0x60000000;
-+
-+ rc32434_pci->pcilba[1].m = 0x60000000;
-+ /* setup PCILBA2 as IO Window*/
-+#ifdef __MIPSEB__
-+ rc32434_pci->pcilba[1].c = ( ((SIZE_256MB & 0x1f) << PCILBAC_size_b) | PCILBAC_sb_m);
-+#else
-+ rc32434_pci->pcilba[1].c = ((SIZE_256MB & 0x1f) << PCILBAC_size_b);
-+#endif
-+ dummyRead = rc32434_pci->pcilba[1].c; /* flush the CPU write Buffers */
-+ rc32434_pci->pcilba[2].a = 0x18C00000;
-+
-+ rc32434_pci->pcilba[2].m = 0x18FFFFFF;
-+ /* setup PCILBA2 as IO Window*/
-+#ifdef __MIPSEB__
-+ rc32434_pci->pcilba[2].c = ( ((SIZE_4MB & 0x1f) << PCILBAC_size_b) | PCILBAC_sb_m);
-+#else
-+ rc32434_pci->pcilba[2].c = ((SIZE_4MB & 0x1f) << PCILBAC_size_b);
-+#endif
-+
-+ dummyRead = rc32434_pci->pcilba[2].c; /* flush the CPU write Buffers */
-+
-+
-+ rc32434_pci->pcilba[3].a = 0x18800000;
-+
-+ rc32434_pci->pcilba[3].m = 0x18800000;
-+ /* Setup PCILBA3 as IO Window */
-+
-+#ifdef __MIPSEB__
-+ rc32434_pci->pcilba[3].c = ( (((SIZE_1MB & 0x1ff) << PCILBAC_size_b) | PCILBAC_msi_m) | PCILBAC_sb_m);
-+#else
-+ rc32434_pci->pcilba[3].c = (((SIZE_1MB & 0x1ff) << PCILBAC_size_b) | PCILBAC_msi_m);
-+#endif
-+ dummyRead = rc32434_pci->pcilba[2].c; /* flush the CPU write Buffers */
-+
-+ pciConfigAddr = (unsigned int)(0x80000004);
-+ for(loopCount = 0; loopCount < 24; loopCount++){
-+ rc32434_pci->pcicfga = pciConfigAddr;
-+ dummyRead = rc32434_pci->pcicfga;
-+ rc32434_pci->pcicfgd = korinaCnfgRegs[loopCount];
-+ dummyRead=rc32434_pci->pcicfgd;
-+ pciConfigAddr += 4;
-+ }
-+ rc32434_pci->pcitc=(unsigned int)((PCITC_RTIMER_VAL&0xff) << PCITC_rtimer_b) |
-+ ((PCITC_DTIMER_VAL&0xff)<<PCITC_dtimer_b);
-+
-+ pciCntlVal = rc32434_pci->pcic;
-+ pciCntlVal &= ~(PCIC_tnr_m);
-+ rc32434_pci->pcic = pciCntlVal;
-+ pciCntlVal = rc32434_pci->pcic;
-+
-+ register_pci_controller(&rc32434_controller);
-+
-+ rc32434_sync();
-+ return 0;
-+}
-+
-+arch_initcall(rc32434_pcibridge_init);
-+
-+/* Do platform specific device initialization at pci_enable_device() time */
-+int pcibios_plat_dev_init(struct pci_dev *dev)
-+{
-+ return 0;
-+}
-diff -Nur linux-2.6.15/drivers/pci/access.c linux-2.6.15-openwrt/drivers/pci/access.c
---- linux-2.6.15/drivers/pci/access.c 2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/drivers/pci/access.c 2006-01-10 00:43:10.000000000 +0100
-@@ -21,6 +21,7 @@
- #define PCI_word_BAD (pos & 1)
- #define PCI_dword_BAD (pos & 3)
-
-+#ifdef __MIPSEB__
- #define PCI_OP_READ(size,type,len) \
- int pci_bus_read_config_##size \
- (struct pci_bus *bus, unsigned int devfn, int pos, type *value) \
-@@ -31,11 +32,32 @@
- if (PCI_##size##_BAD) return PCIBIOS_BAD_REGISTER_NUMBER; \
- spin_lock_irqsave(&pci_lock, flags); \
- res = bus->ops->read(bus, devfn, pos, len, &data); \
-+ if (len == 1) \
-+ *value = (type)((data >> 24) & 0xff); \
-+ else if (len == 2) \
-+ *value = (type)((data >> 16) & 0xffff); \
-+ else \
- *value = (type)data; \
- spin_unlock_irqrestore(&pci_lock, flags); \
- return res; \
- }
-+#else
-
-+#define PCI_OP_READ(size,type,len) \
-+int pci_bus_read_config_##size \
-+ (struct pci_bus *bus, unsigned int devfn, int pos, type *value) \
-+{ \
-+ int res; \
-+ unsigned long flags; \
-+ u32 data = 0; \
-+ if (PCI_##size##_BAD) return PCIBIOS_BAD_REGISTER_NUMBER; \
-+ spin_lock_irqsave(&pci_lock, flags); \
-+ res = bus->ops->read(bus, devfn, pos, len, &data); \
-+ *value = (type)data; \
-+ spin_unlock_irqrestore(&pci_lock, flags); \
-+ return res; \
-+}
-+#endif
- #define PCI_OP_WRITE(size,type,len) \
- int pci_bus_write_config_##size \
- (struct pci_bus *bus, unsigned int devfn, int pos, type value) \
diff --git a/openwrt/target/linux/aruba-2.6/patches/004-wdt.patch b/openwrt/target/linux/aruba-2.6/patches/004-wdt.patch
deleted file mode 100644
index 15fbffa043..0000000000
--- a/openwrt/target/linux/aruba-2.6/patches/004-wdt.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-diff -Nur linux-2.6.15.1/drivers/char/watchdog/wdt_merlot.c linux-2.6.15.1-openwrt/drivers/char/watchdog/wdt_merlot.c
---- linux-2.6.15.1/drivers/char/watchdog/wdt_merlot.c 2006-01-26 21:14:02.204626250 -0800
-+++ linux-2.6.15.1-openwrt/drivers/char/watchdog/wdt_merlot.c 2006-02-02 20:31:43.000000000 -0800
-@@ -0,0 +1,110 @@
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/miscdevice.h>
-+#include <linux/watchdog.h>
-+#include <linux/fs.h>
-+
-+#include <asm/io.h>
-+#include <asm/uaccess.h>
-+#include <asm/system.h>
-+#include <asm/bootinfo.h>
-+
-+extern unsigned long mips_machtype;
-+
-+static unsigned long wdt_is_open;
-+static struct timer_list wdt_timer;
-+
-+static void wdt_merlot_refresh(void)
-+{
-+ volatile __u32 *wdt;
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP70:
-+ wdt = (__u32 *) 0xb8030034;
-+ *wdt = 0x10000000;
-+ break;
-+ default:
-+ wdt = (__u32 *) 0xbc00300c;
-+ *wdt = 0x40000000;
-+ break;
-+ }
-+}
-+
-+static void wdt_merlot_timer_fn(unsigned long data)
-+{
-+ wdt_merlot_refresh();
-+ if (!test_bit(1, &wdt_is_open))
-+ mod_timer(&wdt_timer, jiffies + HZ);
-+}
-+
-+static int wdt_merlot_setup_timer(void)
-+{
-+
-+ init_timer(&wdt_timer);
-+ wdt_timer.function = wdt_merlot_timer_fn;
-+ wdt_timer.data = 0;
-+ wdt_timer.expires = jiffies + HZ;
-+ add_timer(&wdt_timer);
-+ return 0;
-+}
-+
-+static int wdt_open(struct inode *inode, struct file *file)
-+{
-+ if (test_and_set_bit(0, &wdt_is_open))
-+ return -EBUSY;
-+ set_bit(1, &wdt_is_open);
-+ return nonseekable_open(inode, file);
-+}
-+
-+static ssize_t wdt_write(struct file *file, const char __user * buf, size_t count, loff_t * ppos)
-+{
-+ if (count) /* something was written */
-+ wdt_merlot_refresh();
-+ return count;
-+}
-+
-+static int wdt_release(struct inode *inode, struct file *file)
-+{
-+ clear_bit(0, &wdt_is_open);
-+ return 0;
-+}
-+
-+static struct file_operations wdt_fops = {
-+ .owner = THIS_MODULE,
-+ .llseek = no_llseek,
-+ .write = wdt_write,
-+ .open = wdt_open,
-+ .release = wdt_release,
-+};
-+
-+static struct miscdevice wdt_miscdev = {
-+ .minor = WATCHDOG_MINOR,
-+ .name = "watchdog",
-+ .fops = &wdt_fops,
-+};
-+
-+static void __exit wdt_exit(void)
-+{
-+ misc_deregister(&wdt_miscdev);
-+}
-+
-+static int __init wdt_init(void)
-+{
-+ int ret;
-+ ret = misc_register(&wdt_miscdev);
-+ if (ret) {
-+ printk(KERN_ERR
-+ "wdt: cannot register miscdev on minor=%d (err=%d)\n",
-+ WATCHDOG_MINOR, ret);
-+ misc_deregister(&wdt_miscdev);
-+ goto out;
-+ }
-+ printk("wdt: registered with refresh\n");
-+ wdt_merlot_refresh();
-+ wdt_merlot_setup_timer();
-+ out:
-+ return ret;
-+}
-+
-+module_init(wdt_init);
-+module_exit(wdt_exit);
-diff -Nur linux-2.6.15.3/drivers/char/watchdog/Makefile linux-2.6.15.3-openwrt/drivers/char/watchdog/Makefile
---- linux-2.6.15.3/drivers/char/watchdog/Makefile 2006-02-22 10:04:18.596278000 -0800
-+++ linux-2.6.15.3-openwrt/drivers/char/watchdog/Makefile 2006-02-22 10:06:21.400960000 -0800
-@@ -71,5 +71,8 @@
-
- # SPARC64 Architecture
-
-+# Aruba Architecture
-+obj-$(CONFIG_MACH_ARUBA) += wdt_merlot.o
-+
- # Architecture Independant
- obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o
diff --git a/openwrt/target/linux/aruba-2.6/patches/007-boot.patch b/openwrt/target/linux/aruba-2.6/patches/007-boot.patch
deleted file mode 100644
index 611c70d460..0000000000
--- a/openwrt/target/linux/aruba-2.6/patches/007-boot.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -Nur linux-cvs/arch/mips/kernel/head.S linux-aruba/arch/mips/kernel/head.S
---- linux-cvs/arch/mips/kernel/head.S 2004-12-23 00:21:39.000000000 -0800
-+++ linux-aruba/arch/mips/kernel/head.S 2005-10-20 09:16:08.000000000 -0700
-@@ -122,6 +122,10 @@
- #endif
- .endm
-
-+
-+ j kernel_entry
-+ nop
-+
- /*
- * Reserved space for exception handlers.
- * Necessary for machines which link their kernels at KSEG0.
-
diff --git a/openwrt/target/linux/aruba-2.6/patches/010-ar2313_enet.patch b/openwrt/target/linux/aruba-2.6/patches/010-ar2313_enet.patch
deleted file mode 100644
index 01fe26fac5..0000000000
--- a/openwrt/target/linux/aruba-2.6/patches/010-ar2313_enet.patch
+++ /dev/null
@@ -1,2160 +0,0 @@
-diff -urN linux.old/drivers/net/Kconfig linux.net/drivers/net/Kconfig
---- linux.old/drivers/net/Kconfig 2006-01-21 20:15:08.279272000 +0100
-+++ linux.net/drivers/net/Kconfig 2006-01-30 01:18:34.910315000 +0100
-@@ -176,6 +176,13 @@
-
- source "drivers/net/arm/Kconfig"
-
-+
-+config AR2313
-+ tristate "AR2313 Ethernet support"
-+ depends on NET_ETHERNET && MACH_ARUBA
-+ help
-+ Support for the AR2313 Ethernet part on Aruba AP60/61
-+
- config IDT_RC32434_ETH
- tristate "IDT RC32434 Local Ethernet support"
- depends on NET_ETHERNET
-diff -urN linux.old/drivers/net/Makefile linux.net/drivers/net/Makefile
---- linux.old/drivers/net/Makefile 2006-01-21 20:15:08.383226000 +0100
-+++ linux.net/drivers/net/Makefile 2006-01-30 01:18:34.914315250 +0100
-@@ -35,6 +35,7 @@
-
- obj-$(CONFIG_OAKNET) += oaknet.o 8390.o
-
-+obj-$(CONFIG_AR2313) += ar2313.o
- obj-$(CONFIG_IDT_RC32434_ETH) += rc32434_eth.o
- obj-$(CONFIG_DGRS) += dgrs.o
- obj-$(CONFIG_VORTEX) += 3c59x.o
-diff -urN linux.old/drivers/net/ar2313/ar2313.h linux.net/drivers/net/ar2313/ar2313.h
---- linux.old/drivers/net/ar2313/ar2313.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.net/drivers/net/ar2313/ar2313.h 2006-01-25 00:35:55.000000000 +0100
-@@ -0,0 +1,190 @@
-+#ifndef _AR2313_H_
-+#define _AR2313_H_
-+
-+#include <linux/config.h>
-+#include <asm/bootinfo.h>
-+#include "platform.h"
-+
-+extern unsigned long mips_machtype;
-+
-+#undef ETHERNET_BASE
-+#define ETHERNET_BASE ar_eth_base
-+#define ETHERNET_SIZE 0x00100000
-+#define ETHERNET_MACS 2
-+
-+#undef DMA_BASE
-+#define DMA_BASE ar_dma_base
-+#define DMA_SIZE 0x00100000
-+
-+
-+/*
-+ * probe link timer - 5 secs
-+ */
-+#define LINK_TIMER (5*HZ)
-+
-+/*
-+ * Interrupt register base address
-+ */
-+#define INTERRUPT_BASE PHYS_TO_K1(ar_int_base)
-+
-+/*
-+ * Reset Register
-+ */
-+#define AR531X_RESET (AR531X_RESETTMR + 0x0020)
-+#define RESET_SYSTEM 0x00000001 /* cold reset full system */
-+#define RESET_PROC 0x00000002 /* cold reset MIPS core */
-+#define RESET_WLAN0 0x00000004 /* cold reset WLAN MAC and BB */
-+#define RESET_EPHY0 0x00000008 /* cold reset ENET0 phy */
-+#define RESET_EPHY1 0x00000010 /* cold reset ENET1 phy */
-+#define RESET_ENET0 0x00000020 /* cold reset ENET0 mac */
-+#define RESET_ENET1 0x00000040 /* cold reset ENET1 mac */
-+
-+#define IS_DMA_TX_INT(X) (((X) & (DMA_STATUS_TI)) != 0)
-+#define IS_DMA_RX_INT(X) (((X) & (DMA_STATUS_RI)) != 0)
-+#define IS_DRIVER_OWNED(X) (((X) & (DMA_TX_OWN)) == 0)
-+
-+#ifndef K1_TO_PHYS
-+// hack
-+#define K1_TO_PHYS(x) (((unsigned int)(x)) & 0x1FFFFFFF) /* kseg1 to physical */
-+#endif
-+
-+#ifndef PHYS_TO_K1
-+// hack
-+#define PHYS_TO_K1(x) (((unsigned int)(x)) | 0xA0000000) /* physical to kseg1 */
-+#endif
-+
-+#define AR2313_TX_TIMEOUT (HZ/4)
-+
-+/*
-+ * Rings
-+ */
-+#define DSC_RING_ENTRIES_SIZE (AR2313_DESCR_ENTRIES * sizeof(struct desc))
-+#define DSC_NEXT(idx) ((idx + 1) & (AR2313_DESCR_ENTRIES - 1))
-+
-+static inline int tx_space (u32 csm, u32 prd)
-+{
-+ return (csm - prd - 1) & (AR2313_DESCR_ENTRIES - 1);
-+}
-+
-+#if MAX_SKB_FRAGS
-+#define TX_RESERVED (MAX_SKB_FRAGS+1) /* +1 for message header */
-+#define tx_ring_full(csm, prd) (tx_space(csm, prd) <= TX_RESERVED)
-+#else
-+#define tx_ring_full 0
-+#endif
-+
-+#define AR2313_MBGET 2
-+#define AR2313_MBSET 3
-+#define AR2313_PCI_RECONFIG 4
-+#define AR2313_PCI_DUMP 5
-+#define AR2313_TEST_PANIC 6
-+#define AR2313_TEST_NULLPTR 7
-+#define AR2313_READ_DATA 8
-+#define AR2313_WRITE_DATA 9
-+#define AR2313_GET_VERSION 10
-+#define AR2313_TEST_HANG 11
-+#define AR2313_SYNC 12
-+
-+
-+struct ar2313_cmd {
-+ u32 cmd;
-+ u32 address; /* virtual address of image */
-+ u32 length; /* size of image to download */
-+ u32 mailbox; /* mailbox to get/set */
-+ u32 data[2]; /* contents of mailbox to read/write */
-+};
-+
-+
-+/*
-+ * Struct private for the Sibyte.
-+ *
-+ * Elements are grouped so variables used by the tx handling goes
-+ * together, and will go into the same cache lines etc. in order to
-+ * avoid cache line contention between the rx and tx handling on SMP.
-+ *
-+ * Frequently accessed variables are put at the beginning of the
-+ * struct to help the compiler generate better/shorter code.
-+ */
-+struct ar2313_private
-+{
-+ int version;
-+ u32 mb[2];
-+
-+ volatile ETHERNET_STRUCT *eth_regs;
-+ volatile DMA *dma_regs;
-+ volatile u32 *int_regs;
-+
-+ spinlock_t lock; /* Serialise access to device */
-+
-+ /*
-+ * RX and TX descriptors, must be adjacent
-+ */
-+ ar2313_descr_t *rx_ring;
-+ ar2313_descr_t *tx_ring;
-+
-+
-+ struct sk_buff **rx_skb;
-+ struct sk_buff **tx_skb;
-+
-+ /*
-+ * RX elements
-+ */
-+ u32 rx_skbprd;
-+ u32 cur_rx;
-+
-+ /*
-+ * TX elements
-+ */
-+ u32 tx_prd;
-+ u32 tx_csm;
-+
-+ /*
-+ * Misc elements
-+ */
-+ int board_idx;
-+ char name[48];
-+ struct net_device_stats stats;
-+ struct {
-+ u32 address;
-+ u32 length;
-+ char *mapping;
-+ } desc;
-+
-+
-+ struct timer_list link_timer;
-+ unsigned short phy; /* merlot phy = 1, samsung phy = 0x1f */
-+ unsigned short mac;
-+ unsigned short link; /* 0 - link down, 1 - link up */
-+ u16 phyData;
-+
-+ struct tasklet_struct rx_tasklet;
-+ int unloading;
-+};
-+
-+
-+/*
-+ * Prototypes
-+ */
-+static int ar2313_init(struct net_device *dev);
-+#ifdef TX_TIMEOUT
-+static void ar2313_tx_timeout(struct net_device *dev);
-+#endif
-+#if 0
-+static void ar2313_multicast_list(struct net_device *dev);
-+#endif
-+static int ar2313_restart(struct net_device *dev);
-+#if DEBUG
-+static void ar2313_dump_regs(struct net_device *dev);
-+#endif
-+static void ar2313_load_rx_ring(struct net_device *dev, int bufs);
-+static irqreturn_t ar2313_interrupt(int irq, void *dev_id, struct pt_regs *regs);
-+static int ar2313_open(struct net_device *dev);
-+static int ar2313_start_xmit(struct sk_buff *skb, struct net_device *dev);
-+static int ar2313_close(struct net_device *dev);
-+static int ar2313_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
-+static void ar2313_init_cleanup(struct net_device *dev);
-+static int ar2313_setup_timer(struct net_device *dev);
-+static void ar2313_link_timer_fn(unsigned long data);
-+static void ar2313_check_link(struct net_device *dev);
-+static struct net_device_stats *ar2313_get_stats(struct net_device *dev);
-+#endif /* _AR2313_H_ */
-diff -urN linux.old/drivers/net/ar2313/ar2313_msg.h linux.net/drivers/net/ar2313/ar2313_msg.h
---- linux.old/drivers/net/ar2313/ar2313_msg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.net/drivers/net/ar2313/ar2313_msg.h 2006-01-24 22:57:25.000000000 +0100
-@@ -0,0 +1,17 @@
-+#ifndef _AR2313_MSG_H_
-+#define _AR2313_MSG_H_
-+
-+#define AR2313_MTU 1692
-+#define AR2313_PRIOS 1
-+#define AR2313_QUEUES (2*AR2313_PRIOS)
-+
-+#define AR2313_DESCR_ENTRIES 64
-+
-+typedef struct {
-+ volatile unsigned int status; // OWN, Device control and status.
-+ volatile unsigned int devcs; // pkt Control bits + Length
-+ volatile unsigned int addr; // Current Address.
-+ volatile unsigned int descr; // Next descriptor in chain.
-+} ar2313_descr_t;
-+
-+#endif /* _AR2313_MSG_H_ */
-diff -urN linux.old/drivers/net/ar2313/dma.h linux.net/drivers/net/ar2313/dma.h
---- linux.old/drivers/net/ar2313/dma.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.net/drivers/net/ar2313/dma.h 2006-01-24 22:58:45.000000000 +0100
-@@ -0,0 +1,135 @@
-+#ifndef __ARUBA_DMA_H__
-+#define __ARUBA_DMA_H__
-+
-+/*******************************************************************************
-+ *
-+ * Copyright 2002 Integrated Device Technology, Inc.
-+ * All rights reserved.
-+ *
-+ * DMA register definition.
-+ *
-+ * File : $Id: dma.h,v 1.3 2002/06/06 18:34:03 astichte Exp $
-+ *
-+ * Author : ryan.holmQVist@idt.com
-+ * Date : 20011005
-+ * Update :
-+ * $Log: dma.h,v $
-+ * Revision 1.3 2002/06/06 18:34:03 astichte
-+ * Added XXX_PhysicalAddress and XXX_VirtualAddress
-+ *
-+ * Revision 1.2 2002/06/05 18:30:46 astichte
-+ * Removed IDTField
-+ *
-+ * Revision 1.1 2002/05/29 17:33:21 sysarch
-+ * jba File moved from vcode/include/idt/acacia
-+ *
-+ *
-+ ******************************************************************************/
-+
-+#define AR_BIT(x) (1 << (x))
-+#define DMA_RX_ERR_CRC AR_BIT(1)
-+#define DMA_RX_ERR_DRIB AR_BIT(2)
-+#define DMA_RX_ERR_MII AR_BIT(3)
-+#define DMA_RX_EV2 AR_BIT(5)
-+#define DMA_RX_ERR_COL AR_BIT(6)
-+#define DMA_RX_LONG AR_BIT(7)
-+#define DMA_RX_LS AR_BIT(8) /* last descriptor */
-+#define DMA_RX_FS AR_BIT(9) /* first descriptor */
-+#define DMA_RX_MF AR_BIT(10) /* multicast frame */
-+#define DMA_RX_ERR_RUNT AR_BIT(11) /* runt frame */
-+#define DMA_RX_ERR_LENGTH AR_BIT(12) /* length error */
-+#define DMA_RX_ERR_DESC AR_BIT(14) /* descriptor error */
-+#define DMA_RX_ERROR AR_BIT(15) /* error summary */
-+#define DMA_RX_LEN_MASK 0x3fff0000
-+#define DMA_RX_LEN_SHIFT 16
-+#define DMA_RX_FILT AR_BIT(30)
-+#define DMA_RX_OWN AR_BIT(31) /* desc owned by DMA controller */
-+
-+#define DMA_RX1_BSIZE_MASK 0x000007ff
-+#define DMA_RX1_BSIZE_SHIFT 0
-+#define DMA_RX1_CHAINED AR_BIT(24)
-+#define DMA_RX1_RER AR_BIT(25)
-+
-+#define DMA_TX_ERR_UNDER AR_BIT(1) /* underflow error */
-+#define DMA_TX_ERR_DEFER AR_BIT(2) /* excessive deferral */
-+#define DMA_TX_COL_MASK 0x78
-+#define DMA_TX_COL_SHIFT 3
-+#define DMA_TX_ERR_HB AR_BIT(7) /* hearbeat failure */
-+#define DMA_TX_ERR_COL AR_BIT(8) /* excessive collisions */
-+#define DMA_TX_ERR_LATE AR_BIT(9) /* late collision */
-+#define DMA_TX_ERR_LINK AR_BIT(10) /* no carrier */
-+#define DMA_TX_ERR_LOSS AR_BIT(11) /* loss of carrier */
-+#define DMA_TX_ERR_JABBER AR_BIT(14) /* transmit jabber timeout */
-+#define DMA_TX_ERROR AR_BIT(15) /* frame aborted */
-+#define DMA_TX_OWN AR_BIT(31) /* descr owned by DMA controller */
-+
-+#define DMA_TX1_BSIZE_MASK 0x000007ff
-+#define DMA_TX1_BSIZE_SHIFT 0
-+#define DMA_TX1_CHAINED AR_BIT(24) /* chained descriptors */
-+#define DMA_TX1_TER AR_BIT(25) /* transmit end of ring */
-+#define DMA_TX1_FS AR_BIT(29) /* first segment */
-+#define DMA_TX1_LS AR_BIT(30) /* last segment */
-+#define DMA_TX1_IC AR_BIT(31) /* interrupt on completion */
-+
-+#define RCVPKT_LENGTH(X) (X >> 16) /* Received pkt Length */
-+
-+#define MAC_CONTROL_RE AR_BIT(2) /* receive enable */
-+#define MAC_CONTROL_TE AR_BIT(3) /* transmit enable */
-+#define MAC_CONTROL_DC AR_BIT(5) /* Deferral check*/
-+#define MAC_CONTROL_ASTP AR_BIT(8) /* Auto pad strip */
-+#define MAC_CONTROL_DRTY AR_BIT(10) /* Disable retry */
-+#define MAC_CONTROL_DBF AR_BIT(11) /* Disable bcast frames */
-+#define MAC_CONTROL_LCC AR_BIT(12) /* late collision ctrl */
-+#define MAC_CONTROL_HP AR_BIT(13) /* Hash Perfect filtering */
-+#define MAC_CONTROL_HASH AR_BIT(14) /* Unicast hash filtering */
-+#define MAC_CONTROL_HO AR_BIT(15) /* Hash only filtering */
-+#define MAC_CONTROL_PB AR_BIT(16) /* Pass Bad frames */
-+#define MAC_CONTROL_IF AR_BIT(17) /* Inverse filtering */
-+#define MAC_CONTROL_PR AR_BIT(18) /* promiscuous mode (valid frames only) */
-+#define MAC_CONTROL_PM AR_BIT(19) /* pass multicast */
-+#define MAC_CONTROL_F AR_BIT(20) /* full-duplex */
-+#define MAC_CONTROL_DRO AR_BIT(23) /* Disable Receive Own */
-+#define MAC_CONTROL_HBD AR_BIT(28) /* heart-beat disabled (MUST BE SET) */
-+#define MAC_CONTROL_BLE AR_BIT(30) /* big endian mode */
-+#define MAC_CONTROL_RA AR_BIT(31) /* receive all (valid and invalid frames) */
-+
-+#define MII_ADDR_BUSY AR_BIT(0)
-+#define MII_ADDR_WRITE AR_BIT(1)
-+#define MII_ADDR_REG_SHIFT 6
-+#define MII_ADDR_PHY_SHIFT 11
-+#define MII_DATA_SHIFT 0
-+
-+#define FLOW_CONTROL_FCE AR_BIT(1)
-+
-+#define DMA_BUS_MODE_SWR AR_BIT(0) /* software reset */
-+#define DMA_BUS_MODE_BLE AR_BIT(7) /* big endian mode */
-+#define DMA_BUS_MODE_PBL_SHIFT 8 /* programmable burst length 32 */
-+#define DMA_BUS_MODE_DBO AR_BIT(20) /* big-endian descriptors */
-+
-+#define DMA_STATUS_TI AR_BIT(0) /* transmit interrupt */
-+#define DMA_STATUS_TPS AR_BIT(1) /* transmit process stopped */
-+#define DMA_STATUS_TU AR_BIT(2) /* transmit buffer unavailable */
-+#define DMA_STATUS_TJT AR_BIT(3) /* transmit buffer timeout */
-+#define DMA_STATUS_UNF AR_BIT(5) /* transmit underflow */
-+#define DMA_STATUS_RI AR_BIT(6) /* receive interrupt */
-+#define DMA_STATUS_RU AR_BIT(7) /* receive buffer unavailable */
-+#define DMA_STATUS_RPS AR_BIT(8) /* receive process stopped */
-+#define DMA_STATUS_ETI AR_BIT(10) /* early transmit interrupt */
-+#define DMA_STATUS_FBE AR_BIT(13) /* fatal bus interrupt */
-+#define DMA_STATUS_ERI AR_BIT(14) /* early receive interrupt */
-+#define DMA_STATUS_AIS AR_BIT(15) /* abnormal interrupt summary */
-+#define DMA_STATUS_NIS AR_BIT(16) /* normal interrupt summary */
-+#define DMA_STATUS_RS_SHIFT 17 /* receive process state */
-+#define DMA_STATUS_TS_SHIFT 20 /* transmit process state */
-+#define DMA_STATUS_EB_SHIFT 23 /* error bits */
-+
-+#define DMA_CONTROL_SR AR_BIT(1) /* start receive */
-+#define DMA_CONTROL_ST AR_BIT(13) /* start transmit */
-+#define DMA_CONTROL_SF AR_BIT(21) /* store and forward */
-+
-+#endif // __ARUBA_DMA_H__
-+
-+
-+
-+
-+
-diff -urN linux.old/drivers/net/ar2313/platform.h linux.net/drivers/net/ar2313/platform.h
---- linux.old/drivers/net/ar2313/platform.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.net/drivers/net/ar2313/platform.h 2006-01-25 00:10:25.000000000 +0100
-@@ -0,0 +1,128 @@
-+/********************************************************************************
-+ Title: $Source: platform.h,v $
-+
-+ Author: Dan Steinberg
-+ Copyright Integrated Device Technology 2001
-+
-+ Purpose: AR2313 Register/Bit Definitions
-+
-+ Update:
-+ $Log: platform.h,v $
-+
-+ Notes: See Merlot architecture spec for complete details. Note, all
-+ addresses are virtual addresses in kseg1 (Uncached, Unmapped).
-+
-+********************************************************************************/
-+
-+#ifndef PLATFORM_H
-+#define PLATFORM_H
-+
-+#define BIT(x) (1 << (x))
-+
-+#define RESET_BASE 0xBC003020
-+#define RESET_VALUE 0x00000001
-+
-+/********************************************************************
-+ * Device controller
-+ ********************************************************************/
-+typedef struct {
-+ volatile unsigned int flash0;
-+} DEVICE;
-+
-+#define device (*((volatile DEVICE *) DEV_CTL_BASE))
-+
-+// DDRC register
-+#define DEV_WP (1<<26)
-+
-+/********************************************************************
-+ * DDR controller
-+ ********************************************************************/
-+typedef struct {
-+ volatile unsigned int ddrc0;
-+ volatile unsigned int ddrc1;
-+ volatile unsigned int ddrrefresh;
-+} DDR;
-+
-+#define ddr (*((volatile DDR *) DDR_BASE))
-+
-+// DDRC register
-+#define DDRC_CS(i) ((i&0x3)<<0)
-+#define DDRC_WE (1<<2)
-+
-+/********************************************************************
-+ * Ethernet interfaces
-+ ********************************************************************/
-+#define ETHERNET_BASE 0xB8200000
-+
-+//
-+// New Combo structure for Both Eth0 AND eth1
-+//
-+typedef struct {
-+ volatile unsigned int mac_control; /* 0x00 */
-+ volatile unsigned int mac_addr[2]; /* 0x04 - 0x08*/
-+ volatile unsigned int mcast_table[2]; /* 0x0c - 0x10 */
-+ volatile unsigned int mii_addr; /* 0x14 */
-+ volatile unsigned int mii_data; /* 0x18 */
-+ volatile unsigned int flow_control; /* 0x1c */
-+ volatile unsigned int vlan_tag; /* 0x20 */
-+ volatile unsigned int pad[7]; /* 0x24 - 0x3c */
-+ volatile unsigned int ucast_table[8]; /* 0x40-0x5c */
-+
-+} ETHERNET_STRUCT;
-+
-+/********************************************************************
-+ * Interrupt controller
-+ ********************************************************************/
-+
-+typedef struct {
-+ volatile unsigned int wdog_control; /* 0x08 */
-+ volatile unsigned int wdog_timer; /* 0x0c */
-+ volatile unsigned int misc_status; /* 0x10 */
-+ volatile unsigned int misc_mask; /* 0x14 */
-+ volatile unsigned int global_status; /* 0x18 */
-+ volatile unsigned int reserved; /* 0x1c */
-+ volatile unsigned int reset_control; /* 0x20 */
-+} INTERRUPT;
-+
-+#define interrupt (*((volatile INTERRUPT *) INTERRUPT_BASE))
-+
-+#define INTERRUPT_MISC_TIMER BIT(0)
-+#define INTERRUPT_MISC_AHBPROC BIT(1)
-+#define INTERRUPT_MISC_AHBDMA BIT(2)
-+#define INTERRUPT_MISC_GPIO BIT(3)
-+#define INTERRUPT_MISC_UART BIT(4)
-+#define INTERRUPT_MISC_UARTDMA BIT(5)
-+#define INTERRUPT_MISC_WATCHDOG BIT(6)
-+#define INTERRUPT_MISC_LOCAL BIT(7)
-+
-+#define INTERRUPT_GLOBAL_ETH BIT(2)
-+#define INTERRUPT_GLOBAL_WLAN BIT(3)
-+#define INTERRUPT_GLOBAL_MISC BIT(4)
-+#define INTERRUPT_GLOBAL_ITIMER BIT(5)
-+
-+/********************************************************************
-+ * DMA controller
-+ ********************************************************************/
-+#define DMA_BASE 0xB8201000
-+
-+typedef struct {
-+ volatile unsigned int bus_mode; /* 0x00 (CSR0) */
-+ volatile unsigned int xmt_poll; /* 0x04 (CSR1) */
-+ volatile unsigned int rcv_poll; /* 0x08 (CSR2) */
-+ volatile unsigned int rcv_base; /* 0x0c (CSR3) */
-+ volatile unsigned int xmt_base; /* 0x10 (CSR4) */
-+ volatile unsigned int status; /* 0x14 (CSR5) */
-+ volatile unsigned int control; /* 0x18 (CSR6) */
-+ volatile unsigned int intr_ena; /* 0x1c (CSR7) */
-+ volatile unsigned int rcv_missed; /* 0x20 (CSR8) */
-+ volatile unsigned int reserved[11]; /* 0x24-0x4c (CSR9-19) */
-+ volatile unsigned int cur_tx_buf_addr; /* 0x50 (CSR20) */
-+ volatile unsigned int cur_rx_buf_addr; /* 0x50 (CSR21) */
-+} DMA;
-+
-+#define dma (*((volatile DMA *) DMA_BASE))
-+
-+// macro to convert from virtual to physical address
-+#define phys_addr(x) (x & 0x1fffffff)
-+
-+#endif /* PLATFORM_H */
-diff -urN linux.old/drivers/net/ar2313.c linux.net/drivers/net/ar2313.c
---- linux.old/drivers/net/ar2313.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.net/drivers/net/ar2313.c 2006-01-30 01:21:56.822933750 +0100
-@@ -0,0 +1,1642 @@
-+/*
-+ * ar2313.c: Linux driver for the Atheros AR2313 Ethernet device.
-+ *
-+ * Copyright 2004 by Sameer Dekate, <sdekate@arubanetworks.com>.
-+ *
-+ * Thanks to Atheros for providing hardware and documentation
-+ * enabling me to write this driver.
-+ *
-+ * 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.
-+ *
-+ * Additional credits:
-+ * This code is taken from John Taylor's Sibyte driver and then
-+ * modified for the AR2313.
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/version.h>
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/ioport.h>
-+#include <linux/pci.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/skbuff.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/mm.h>
-+#include <linux/highmem.h>
-+#include <linux/sockios.h>
-+#include <linux/pkt_sched.h>
-+#include <linux/compile.h>
-+#include <linux/mii.h>
-+#include <linux/ethtool.h>
-+#include <linux/ctype.h>
-+
-+#include <net/sock.h>
-+#include <net/ip.h>
-+
-+#include <asm/system.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+#include <asm/byteorder.h>
-+#include <asm/uaccess.h>
-+#include <asm/bootinfo.h>
-+
-+extern char *getenv(char *e);
-+
-+
-+#undef INDEX_DEBUG
-+#define DEBUG 0
-+#define DEBUG_TX 0
-+#define DEBUG_RX 0
-+#define DEBUG_INT 0
-+#define DEBUG_MC 0
-+#define DEBUG_ERR 1
-+
-+#ifndef __exit
-+#define __exit
-+#endif
-+
-+#ifndef min
-+#define min(a,b) (((a)<(b))?(a):(b))
-+#endif
-+
-+#ifndef SMP_CACHE_BYTES
-+#define SMP_CACHE_BYTES L1_CACHE_BYTES
-+#endif
-+
-+#ifndef SET_MODULE_OWNER
-+#define SET_MODULE_OWNER(dev) {do{} while(0);}
-+#define AR2313_MOD_INC_USE_COUNT MOD_INC_USE_COUNT
-+#define AR2313_MOD_DEC_USE_COUNT MOD_DEC_USE_COUNT
-+#else
-+#define AR2313_MOD_INC_USE_COUNT {do{} while(0);}
-+#define AR2313_MOD_DEC_USE_COUNT {do{} while(0);}
-+#endif
-+
-+#define PHYSADDR(a) ((_ACAST32_ (a)) & 0x1fffffff)
-+
-+MODULE_PARM(ethaddr, "s");
-+static char *ethaddr = "00:00:00:00:00:00";
-+MODULE_PARM(ifname, "s");
-+static char *ifname = "bond" ;
-+
-+#define AR2313_MBOX_SET_BIT 0x8
-+
-+#define BOARD_IDX_STATIC 0
-+#define BOARD_IDX_OVERFLOW -1
-+
-+/* margot includes */
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+
-+#include "ar2313/ar2313_msg.h"
-+#include "ar2313/platform.h"
-+#include "ar2313/dma.h"
-+#include "ar2313/ar2313.h"
-+
-+/*
-+ * New interrupt handler strategy:
-+ *
-+ * An old interrupt handler worked using the traditional method of
-+ * replacing an skbuff with a new one when a packet arrives. However
-+ * the rx rings do not need to contain a static number of buffer
-+ * descriptors, thus it makes sense to move the memory allocation out
-+ * of the main interrupt handler and do it in a bottom half handler
-+ * and only allocate new buffers when the number of buffers in the
-+ * ring is below a certain threshold. In order to avoid starving the
-+ * NIC under heavy load it is however necessary to force allocation
-+ * when hitting a minimum threshold. The strategy for alloction is as
-+ * follows:
-+ *
-+ * RX_LOW_BUF_THRES - allocate buffers in the bottom half
-+ * RX_PANIC_LOW_THRES - we are very low on buffers, allocate
-+ * the buffers in the interrupt handler
-+ * RX_RING_THRES - maximum number of buffers in the rx ring
-+ *
-+ * One advantagous side effect of this allocation approach is that the
-+ * entire rx processing can be done without holding any spin lock
-+ * since the rx rings and registers are totally independent of the tx
-+ * ring and its registers. This of course includes the kmalloc's of
-+ * new skb's. Thus start_xmit can run in parallel with rx processing
-+ * and the memory allocation on SMP systems.
-+ *
-+ * Note that running the skb reallocation in a bottom half opens up
-+ * another can of races which needs to be handled properly. In
-+ * particular it can happen that the interrupt handler tries to run
-+ * the reallocation while the bottom half is either running on another
-+ * CPU or was interrupted on the same CPU. To get around this the
-+ * driver uses bitops to prevent the reallocation routines from being
-+ * reentered.
-+ *
-+ * TX handling can also be done without holding any spin lock, wheee
-+ * this is fun! since tx_csm is only written to by the interrupt
-+ * handler.
-+ */
-+
-+/*
-+ * Threshold values for RX buffer allocation - the low water marks for
-+ * when to start refilling the rings are set to 75% of the ring
-+ * sizes. It seems to make sense to refill the rings entirely from the
-+ * intrrupt handler once it gets below the panic threshold, that way
-+ * we don't risk that the refilling is moved to another CPU when the
-+ * one running the interrupt handler just got the slab code hot in its
-+ * cache.
-+ */
-+#define RX_RING_SIZE AR2313_DESCR_ENTRIES
-+#define RX_PANIC_THRES (RX_RING_SIZE/4)
-+#define RX_LOW_THRES ((3*RX_RING_SIZE)/4)
-+#define CRC_LEN 4
-+#define RX_OFFSET 2
-+
-+#define AR2313_BUFSIZE (AR2313_MTU + ETH_HLEN + CRC_LEN + RX_OFFSET)
-+
-+#ifdef MODULE
-+MODULE_AUTHOR("Sameer Dekate<sdekate@arubanetworks.com>");
-+MODULE_DESCRIPTION("AR2313 Ethernet driver");
-+#endif
-+
-+#if DEBUG
-+static char version[] __initdata =
-+ "ar2313.c: v0.01 2004/01/06 sdekate@arubanetworks.com\n";
-+#endif /* DEBUG */
-+
-+#define virt_to_phys(x) ((u32)(x) & 0x1fffffff)
-+
-+// prototypes
-+static short armiiread(short phy, short reg);
-+static void armiiwrite(short phy, short reg, short data);
-+#ifdef TX_TIMEOUT
-+static void ar2313_tx_timeout(struct net_device *dev);
-+#endif
-+static void ar2313_halt(struct net_device *dev);
-+static void rx_tasklet_func(unsigned long data);
-+static void ar2313_multicast_list(struct net_device *dev);
-+
-+static struct net_device *root_dev;
-+static int probed __initdata = 0;
-+static unsigned long ar_eth_base;
-+static unsigned long ar_dma_base;
-+static unsigned long ar_int_base;
-+static unsigned long ar_int_mac_mask;
-+static unsigned long ar_int_phy_mask;
-+
-+#ifndef ERR
-+#define ERR(fmt, args...) printk("%s: " fmt, __func__, ##args)
-+#endif
-+
-+static int parse_mac_addr(struct net_device *dev, char* macstr){
-+ int i, j;
-+ unsigned char result, value;
-+
-+ for (i=0; i<6; i++) {
-+ result = 0;
-+ if (i != 5 && *(macstr+2) != ':') {
-+ ERR("invalid mac address format: %d %c\n",
-+ i, *(macstr+2));
-+ return -EINVAL;
-+ }
-+ for (j=0; j<2; j++) {
-+ if (isxdigit(*macstr) && (value = isdigit(*macstr) ? *macstr-'0' :
-+ toupper(*macstr)-'A'+10) < 16)
-+ {
-+ result = result*16 + value;
-+ macstr++;
-+ }
-+ else {
-+ ERR("invalid mac address "
-+ "character: %c\n", *macstr);
-+ return -EINVAL;
-+ }
-+ }
-+
-+ macstr++;
-+ dev->dev_addr[i] = result;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int __init ar2313_probe(void)
-+{
-+ struct net_device *dev;
-+ struct ar2313_private *sp;
-+ int version_disp;
-+ char name[64] ;
-+
-+ if (probed)
-+ return -ENODEV;
-+ probed++;
-+
-+ version_disp = 0;
-+ sprintf(name, "%s%%d", ifname) ;
-+ dev = alloc_etherdev(sizeof(struct ar2313_private));
-+
-+ if (dev == NULL) {
-+ printk(KERN_ERR "ar2313: Unable to allocate net_device structure!\n");
-+ return -ENOMEM;
-+ }
-+
-+ SET_MODULE_OWNER(dev);
-+
-+ sp = dev->priv;
-+
-+ sp->link = 0;
-+ switch (mips_machtype) {
-+ case MACH_ARUBA_AP60:
-+ ar_eth_base = 0xb8100000;
-+ ar_dma_base = ar_eth_base + 0x1000;
-+ ar_int_base = 0x1C003020;
-+ ar_int_mac_mask = RESET_ENET0|RESET_ENET1;
-+ ar_int_phy_mask = RESET_EPHY0|RESET_EPHY1;
-+ sp->mac = 1;
-+ sp->phy = 1;
-+ dev->irq = 4;
-+ break;
-+
-+ case MACH_ARUBA_AP40:
-+ ar_eth_base = 0xb0500000;
-+ ar_dma_base = ar_eth_base + 0x1000;
-+ ar_int_base = 0x11000004;
-+ ar_int_mac_mask = 0x800;
-+ ar_int_phy_mask = 0x400;
-+ sp->mac = 0;
-+ sp->phy = 1;
-+ dev->irq = 4;
-+ break;
-+
-+ case MACH_ARUBA_AP65:
-+ ar_eth_base = 0xb8100000;
-+ ar_dma_base = ar_eth_base + 0x1000;
-+ ar_int_base = 0x1C003020;
-+ ar_int_mac_mask = RESET_ENET0|RESET_ENET1;
-+ ar_int_phy_mask = RESET_EPHY0|RESET_EPHY1;
-+ sp->mac = 0;
-+#if 0
-+ // commented out, for now
-+
-+ if (mips_machtype == MACH_ARUBA_SAMSUNG) {
-+ sp->phy = 0x1f;
-+ } else {
-+ sp->phy = 1;
-+ }
-+#else
-+ sp->phy = 1;
-+#endif
-+ dev->irq = 3;
-+ break;
-+
-+ default:
-+ printk("%s: unsupported mips_machtype=0x%lx\n",
-+ __FUNCTION__, mips_machtype) ;
-+ return -ENODEV;
-+ }
-+
-+ spin_lock_init(&sp->lock);
-+
-+ /* initialize func pointers */
-+ dev->open = &ar2313_open;
-+ dev->stop = &ar2313_close;
-+ dev->hard_start_xmit = &ar2313_start_xmit;
-+
-+ dev->get_stats = &ar2313_get_stats;
-+ dev->set_multicast_list = &ar2313_multicast_list;
-+#ifdef TX_TIMEOUT
-+ dev->tx_timeout = ar2313_tx_timeout;
-+ dev->watchdog_timeo = AR2313_TX_TIMEOUT;
-+#endif
-+ dev->do_ioctl = &ar2313_ioctl;
-+
-+ // SAMEER: do we need this?
-+ dev->features |= NETIF_F_SG | NETIF_F_HIGHDMA;
-+
-+ tasklet_init(&sp->rx_tasklet, rx_tasklet_func, (unsigned long) dev);
-+ tasklet_disable(&sp->rx_tasklet);
-+
-+ /* display version info if adapter is found */
-+ if (!version_disp) {
-+ /* set display flag to TRUE so that */
-+ /* we only display this string ONCE */
-+ version_disp = 1;
-+#if DEBUG
-+ printk(version);
-+#endif /* DEBUG */
-+ }
-+
-+ request_region(PHYSADDR(ETHERNET_BASE), ETHERNET_SIZE*ETHERNET_MACS,
-+ "AR2313ENET");
-+
-+ sp->eth_regs = ioremap_nocache(PHYSADDR(ETHERNET_BASE + ETHERNET_SIZE*sp->mac),
-+ sizeof(*sp->eth_regs));
-+ if (!sp->eth_regs) {
-+ printk("Can't remap eth registers\n");
-+ return(-ENXIO);
-+ }
-+
-+ sp->dma_regs = ioremap_nocache(PHYSADDR(DMA_BASE + DMA_SIZE*sp->mac),
-+ sizeof(*sp->dma_regs));
-+ dev->base_addr = (unsigned int) sp->dma_regs;
-+ if (!sp->dma_regs) {
-+ printk("Can't remap DMA registers\n");
-+ return(-ENXIO);
-+ }
-+
-+ sp->int_regs = ioremap_nocache(PHYSADDR(INTERRUPT_BASE),
-+ sizeof(*sp->int_regs));
-+ if (!sp->int_regs) {
-+ printk("Can't remap INTERRUPT registers\n");
-+ return(-ENXIO);
-+ }
-+
-+ strncpy(sp->name, "Atheros AR2313", sizeof (sp->name) - 1);
-+ sp->name [sizeof (sp->name) - 1] = '\0';
-+
-+ {
-+ char mac[32];
-+ extern char *getenv(char *e);
-+ unsigned char def_mac[6] = {0, 0x0b, 0x86, 0xba, 0xdb, 0xad};
-+ memset(mac, 0, 32);
-+ memcpy(mac, getenv("ethaddr"), 17);
-+ if (parse_mac_addr(dev, mac)){
-+ printk("%s: MAC address not found, using default\n", __func__);
-+ memcpy(dev->dev_addr, def_mac, 6);
-+ }
-+ }
-+
-+ sp->board_idx = BOARD_IDX_STATIC;
-+
-+ if (ar2313_init(dev)) {
-+ /*
-+ * ar2313_init() calls ar2313_init_cleanup() on error.
-+ */
-+ kfree(dev);
-+ return -ENODEV;
-+ }
-+
-+ if (register_netdev(dev)){
-+ printk("%s: register_netdev failed\n", __func__);
-+ return -1;
-+ }
-+
-+ printk("%s: %s: %02x:%02x:%02x:%02x:%02x:%02x, irq %d\n",
-+ dev->name, sp->name,
-+ dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-+ dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5],
-+ dev->irq);
-+
-+ /* start link poll timer */
-+ ar2313_setup_timer(dev);
-+
-+ /*
-+ * Register the device
-+ */
-+ root_dev = dev;
-+
-+ return 0;
-+}
-+
-+#if 0
-+static void ar2313_dump_regs(struct net_device *dev)
-+{
-+ unsigned int *ptr, i;
-+ struct ar2313_private *sp = (struct ar2313_private *)dev->priv;
-+
-+ ptr = (unsigned int *)sp->eth_regs;
-+ for(i=0; i< (sizeof(ETHERNET_STRUCT)/ sizeof(unsigned int)); i++, ptr++) {
-+ printk("ENET: %08x = %08x\n", (int)ptr, *ptr);
-+ }
-+
-+ ptr = (unsigned int *)sp->dma_regs;
-+ for(i=0; i< (sizeof(DMA)/ sizeof(unsigned int)); i++, ptr++) {
-+ printk("DMA: %08x = %08x\n", (int)ptr, *ptr);
-+ }
-+
-+ ptr = (unsigned int *)sp->int_regs;
-+ for(i=0; i< (sizeof(INTERRUPT)/ sizeof(unsigned int)); i++, ptr++){
-+ printk("INT: %08x = %08x\n", (int)ptr, *ptr);
-+ }
-+
-+ for (i = 0; i < AR2313_DESCR_ENTRIES; i++) {
-+ ar2313_descr_t *td = &sp->tx_ring[i];
-+ printk("Tx desc %2d: %08x %08x %08x %08x\n", i,
-+ td->status, td->devcs, td->addr, td->descr);
-+ }
-+}
-+#endif
-+
-+#ifdef TX_TIMEOUT
-+static void
-+ar2313_tx_timeout(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = (struct ar2313_private *)dev->priv;
-+ unsigned long flags;
-+
-+#if DEBUG_TX
-+ printk("Tx timeout\n");
-+#endif
-+ spin_lock_irqsave(&sp->lock, flags);
-+ ar2313_restart(dev);
-+ spin_unlock_irqrestore(&sp->lock, flags);
-+}
-+#endif
-+
-+#if DEBUG_MC
-+static void
-+printMcList(struct net_device *dev)
-+{
-+ struct dev_mc_list *list = dev->mc_list;
-+ int num=0, i;
-+ while(list){
-+ printk("%d MC ADDR ", num);
-+ for(i=0;i<list->dmi_addrlen;i++) {
-+ printk(":%02x", list->dmi_addr[i]);
-+ }
-+ list = list->next;
-+ printk("\n");
-+ }
-+}
-+#endif
-+
-+/*
-+ * Set or clear the multicast filter for this adaptor.
-+ * THIS IS ABSOLUTE CRAP, disabled
-+ */
-+static void
-+ar2313_multicast_list(struct net_device *dev)
-+{
-+ /*
-+ * Always listen to broadcasts and
-+ * treat IFF bits independently
-+ */
-+ struct ar2313_private *sp = (struct ar2313_private *)dev->priv;
-+ unsigned int recognise;
-+
-+ recognise = sp->eth_regs->mac_control;
-+
-+ if (dev->flags & IFF_PROMISC) { /* set promiscuous mode */
-+ recognise |= MAC_CONTROL_PR;
-+ } else {
-+ recognise &= ~MAC_CONTROL_PR;
-+ }
-+
-+ if ((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 15)) {
-+#if DEBUG_MC
-+ printMcList(dev);
-+ printk("%s: all MULTICAST mc_count %d\n", __FUNCTION__, dev->mc_count);
-+#endif
-+ recognise |= MAC_CONTROL_PM;/* all multicast */
-+ } else if (dev->mc_count > 0) {
-+#if DEBUG_MC
-+ printMcList(dev);
-+ printk("%s: mc_count %d\n", __FUNCTION__, dev->mc_count);
-+#endif
-+ recognise |= MAC_CONTROL_PM; /* for the time being */
-+ }
-+#if DEBUG_MC
-+ printk("%s: setting %08x to %08x\n", __FUNCTION__, (int)sp->eth_regs, recognise);
-+#endif
-+
-+ sp->eth_regs->mac_control = recognise;
-+}
-+
-+static void rx_tasklet_cleanup(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+
-+ /*
-+ * Tasklet may be scheduled. Need to get it removed from the list
-+ * since we're about to free the struct.
-+ */
-+
-+ sp->unloading = 1;
-+ tasklet_enable(&sp->rx_tasklet);
-+ tasklet_kill(&sp->rx_tasklet);
-+}
-+
-+static void __exit ar2313_module_cleanup(void)
-+{
-+ rx_tasklet_cleanup(root_dev);
-+ ar2313_init_cleanup(root_dev);
-+ unregister_netdev(root_dev);
-+ kfree(root_dev);
-+ release_region(PHYSADDR(ETHERNET_BASE), ETHERNET_SIZE*ETHERNET_MACS);
-+}
-+
-+
-+/*
-+ * Restart the AR2313 ethernet controller.
-+ */
-+static int ar2313_restart(struct net_device *dev)
-+{
-+ /* disable interrupts */
-+ disable_irq(dev->irq);
-+
-+ /* stop mac */
-+ ar2313_halt(dev);
-+
-+ /* initialize */
-+ ar2313_init(dev);
-+
-+ /* enable interrupts */
-+ enable_irq(dev->irq);
-+
-+ return 0;
-+}
-+
-+extern unsigned long mips_machtype;
-+
-+int __init ar2313_module_init(void)
-+{
-+ int status=-1;
-+ switch (mips_machtype){
-+ case MACH_ARUBA_AP60:
-+ case MACH_ARUBA_AP65:
-+ case MACH_ARUBA_AP40:
-+ root_dev = NULL;
-+ status = ar2313_probe();
-+ break;
-+ }
-+ return status;
-+}
-+
-+
-+module_init(ar2313_module_init);
-+module_exit(ar2313_module_cleanup);
-+
-+
-+static void ar2313_free_descriptors(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+ if (sp->rx_ring != NULL) {
-+ kfree((void*)KSEG0ADDR(sp->rx_ring));
-+ sp->rx_ring = NULL;
-+ sp->tx_ring = NULL;
-+ }
-+}
-+
-+
-+static int ar2313_allocate_descriptors(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+ int size;
-+ int j;
-+ ar2313_descr_t *space;
-+
-+ if(sp->rx_ring != NULL){
-+ printk("%s: already done.\n", __FUNCTION__);
-+ return 0;
-+ }
-+
-+ size = (sizeof(ar2313_descr_t) * (AR2313_DESCR_ENTRIES * AR2313_QUEUES));
-+ space = kmalloc(size, GFP_KERNEL);
-+ if (space == NULL)
-+ return 1;
-+
-+ /* invalidate caches */
-+ dma_cache_inv((unsigned int)space, size);
-+
-+ /* now convert pointer to KSEG1 */
-+ space = (ar2313_descr_t *)KSEG1ADDR(space);
-+
-+ memset((void *)space, 0, size);
-+
-+ sp->rx_ring = space;
-+ space += AR2313_DESCR_ENTRIES;
-+
-+ sp->tx_ring = space;
-+ space += AR2313_DESCR_ENTRIES;
-+
-+ /* Initialize the transmit Descriptors */
-+ for (j = 0; j < AR2313_DESCR_ENTRIES; j++) {
-+ ar2313_descr_t *td = &sp->tx_ring[j];
-+ td->status = 0;
-+ td->devcs = DMA_TX1_CHAINED;
-+ td->addr = 0;
-+ td->descr = K1_TO_PHYS(&sp->tx_ring[(j+1) & (AR2313_DESCR_ENTRIES-1)]);
-+ }
-+
-+ return 0;
-+}
-+
-+
-+/*
-+ * Generic cleanup handling data allocated during init. Used when the
-+ * module is unloaded or if an error occurs during initialization
-+ */
-+static void ar2313_init_cleanup(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+ struct sk_buff *skb;
-+ int j;
-+
-+ ar2313_free_descriptors(dev);
-+
-+ if (sp->eth_regs) iounmap((void*)sp->eth_regs);
-+ if (sp->dma_regs) iounmap((void*)sp->dma_regs);
-+
-+ if (sp->rx_skb) {
-+ for (j = 0; j < AR2313_DESCR_ENTRIES; j++) {
-+ skb = sp->rx_skb[j];
-+ if (skb) {
-+ sp->rx_skb[j] = NULL;
-+ dev_kfree_skb(skb);
-+ }
-+ }
-+ kfree(sp->rx_skb);
-+ sp->rx_skb = NULL;
-+ }
-+
-+ if (sp->tx_skb) {
-+ for (j = 0; j < AR2313_DESCR_ENTRIES; j++) {
-+ skb = sp->tx_skb[j];
-+ if (skb) {
-+ sp->tx_skb[j] = NULL;
-+ dev_kfree_skb(skb);
-+ }
-+ }
-+ kfree(sp->tx_skb);
-+ sp->tx_skb = NULL;
-+ }
-+}
-+
-+static int ar2313_setup_timer(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+
-+ init_timer(&sp->link_timer);
-+
-+ sp->link_timer.function = ar2313_link_timer_fn;
-+ sp->link_timer.data = (int) dev;
-+ sp->link_timer.expires = jiffies + HZ;
-+
-+ add_timer(&sp->link_timer);
-+ return 0;
-+
-+}
-+
-+static void ar2313_link_timer_fn(unsigned long data)
-+{
-+ struct net_device *dev = (struct net_device *) data;
-+ struct ar2313_private *sp = dev->priv;
-+
-+ // see if the link status changed
-+ // This was needed to make sure we set the PHY to the
-+ // autonegotiated value of half or full duplex.
-+ ar2313_check_link(dev);
-+
-+ // Loop faster when we don't have link.
-+ // This was needed to speed up the AP bootstrap time.
-+ if(sp->link == 0) {
-+ mod_timer(&sp->link_timer, jiffies + HZ/2);
-+ } else {
-+ mod_timer(&sp->link_timer, jiffies + LINK_TIMER);
-+ }
-+}
-+
-+static void ar2313_check_link(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+ u16 phyData;
-+
-+ phyData = armiiread(sp->phy, MII_BMSR);
-+ if (sp->phyData != phyData) {
-+ if (phyData & BMSR_LSTATUS) {
-+ /* link is present, ready link partner ability to deterine duplexity */
-+ int duplex = 0;
-+ u16 reg;
-+
-+ sp->link = 1;
-+ reg = armiiread(sp->phy, MII_BMCR);
-+ if (reg & BMCR_ANENABLE) {
-+ /* auto neg enabled */
-+ reg = armiiread(sp->phy, MII_LPA);
-+ duplex = (reg & (LPA_100FULL|LPA_10FULL))? 1:0;
-+ } else {
-+ /* no auto neg, just read duplex config */
-+ duplex = (reg & BMCR_FULLDPLX)? 1:0;
-+ }
-+
-+ printk(KERN_INFO "%s: Configuring MAC for %s duplex\n", dev->name,
-+ (duplex)? "full":"half");
-+
-+ if (duplex) {
-+ /* full duplex */
-+ sp->eth_regs->mac_control = ((sp->eth_regs->mac_control | MAC_CONTROL_F) &
-+ ~MAC_CONTROL_DRO);
-+ } else {
-+ /* half duplex */
-+ sp->eth_regs->mac_control = ((sp->eth_regs->mac_control | MAC_CONTROL_DRO) &
-+ ~MAC_CONTROL_F);
-+ }
-+ } else {
-+ /* no link */
-+ sp->link = 0;
-+ }
-+ sp->phyData = phyData;
-+ }
-+}
-+
-+static int
-+ar2313_reset_reg(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = (struct ar2313_private *)dev->priv;
-+ unsigned int ethsal, ethsah;
-+ unsigned int flags;
-+
-+ *sp->int_regs |= ar_int_mac_mask;
-+ mdelay(10);
-+ *sp->int_regs &= ~ar_int_mac_mask;
-+ mdelay(10);
-+ *sp->int_regs |= ar_int_phy_mask;
-+ mdelay(10);
-+ *sp->int_regs &= ~ar_int_phy_mask;
-+ mdelay(10);
-+
-+ sp->dma_regs->bus_mode = (DMA_BUS_MODE_SWR);
-+ mdelay(10);
-+ sp->dma_regs->bus_mode = ((32 << DMA_BUS_MODE_PBL_SHIFT) | DMA_BUS_MODE_BLE);
-+
-+ /* enable interrupts */
-+ sp->dma_regs->intr_ena = (DMA_STATUS_AIS |
-+ DMA_STATUS_NIS |
-+ DMA_STATUS_RI |
-+ DMA_STATUS_TI |
-+ DMA_STATUS_FBE);
-+ sp->dma_regs->xmt_base = K1_TO_PHYS(sp->tx_ring);
-+ sp->dma_regs->rcv_base = K1_TO_PHYS(sp->rx_ring);
-+ sp->dma_regs->control = (DMA_CONTROL_SR | DMA_CONTROL_ST | DMA_CONTROL_SF);
-+
-+ sp->eth_regs->flow_control = (FLOW_CONTROL_FCE);
-+ sp->eth_regs->vlan_tag = (0x8100);
-+
-+ /* Enable Ethernet Interface */
-+ flags = (MAC_CONTROL_TE | /* transmit enable */
-+ MAC_CONTROL_PM | /* pass mcast */
-+ MAC_CONTROL_F | /* full duplex */
-+ MAC_CONTROL_HBD); /* heart beat disabled */
-+
-+ if (dev->flags & IFF_PROMISC) { /* set promiscuous mode */
-+ flags |= MAC_CONTROL_PR;
-+ }
-+ sp->eth_regs->mac_control = flags;
-+
-+ /* Set all Ethernet station address registers to their initial values */
-+ ethsah = ((((u_int)(dev->dev_addr[5]) << 8) & (u_int)0x0000FF00) |
-+ (((u_int)(dev->dev_addr[4]) << 0) & (u_int)0x000000FF));
-+
-+ ethsal = ((((u_int)(dev->dev_addr[3]) << 24) & (u_int)0xFF000000) |
-+ (((u_int)(dev->dev_addr[2]) << 16) & (u_int)0x00FF0000) |
-+ (((u_int)(dev->dev_addr[1]) << 8) & (u_int)0x0000FF00) |
-+ (((u_int)(dev->dev_addr[0]) << 0) & (u_int)0x000000FF) );
-+
-+ sp->eth_regs->mac_addr[0] = ethsah;
-+ sp->eth_regs->mac_addr[1] = ethsal;
-+
-+ mdelay(10);
-+
-+ return(0);
-+}
-+
-+
-+static int ar2313_init(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+ int ecode=0;
-+
-+ /*
-+ * Allocate descriptors
-+ */
-+ if (ar2313_allocate_descriptors(dev)) {
-+ printk("%s: %s: ar2313_allocate_descriptors failed\n",
-+ dev->name, __FUNCTION__);
-+ ecode = -EAGAIN;
-+ goto init_error;
-+ }
-+
-+ /*
-+ * Get the memory for the skb rings.
-+ */
-+ if(sp->rx_skb == NULL) {
-+ sp->rx_skb = kmalloc(sizeof(struct sk_buff *) * AR2313_DESCR_ENTRIES, GFP_KERNEL);
-+ if (!(sp->rx_skb)) {
-+ printk("%s: %s: rx_skb kmalloc failed\n",
-+ dev->name, __FUNCTION__);
-+ ecode = -EAGAIN;
-+ goto init_error;
-+ }
-+ }
-+ memset(sp->rx_skb, 0, sizeof(struct sk_buff *) * AR2313_DESCR_ENTRIES);
-+
-+ if(sp->tx_skb == NULL) {
-+ sp->tx_skb = kmalloc(sizeof(struct sk_buff *) * AR2313_DESCR_ENTRIES, GFP_KERNEL);
-+ if (!(sp->tx_skb)) {
-+ printk("%s: %s: tx_skb kmalloc failed\n",
-+ dev->name, __FUNCTION__);
-+ ecode = -EAGAIN;
-+ goto init_error;
-+ }
-+ }
-+ memset(sp->tx_skb, 0, sizeof(struct sk_buff *) * AR2313_DESCR_ENTRIES);
-+
-+ /*
-+ * Set tx_csm before we start receiving interrupts, otherwise
-+ * the interrupt handler might think it is supposed to process
-+ * tx ints before we are up and running, which may cause a null
-+ * pointer access in the int handler.
-+ */
-+ sp->rx_skbprd = 0;
-+ sp->cur_rx = 0;
-+ sp->tx_prd = 0;
-+ sp->tx_csm = 0;
-+
-+ /*
-+ * Zero the stats before starting the interface
-+ */
-+ memset(&sp->stats, 0, sizeof(sp->stats));
-+
-+ /*
-+ * We load the ring here as there seem to be no way to tell the
-+ * firmware to wipe the ring without re-initializing it.
-+ */
-+ ar2313_load_rx_ring(dev, RX_RING_SIZE);
-+
-+ /*
-+ * Init hardware
-+ */
-+ ar2313_reset_reg(dev);
-+
-+ /*
-+ * Get the IRQ
-+ */
-+ ecode = request_irq(dev->irq, &ar2313_interrupt, SA_SHIRQ | SA_INTERRUPT, dev->name, dev);
-+ if (ecode) {
-+ printk(KERN_WARNING "%s: %s: Requested IRQ %d is busy\n",
-+ dev->name, __FUNCTION__, dev->irq);
-+ goto init_error;
-+ }
-+
-+#if 0
-+ // commented out, for now
-+
-+ if(mips_machtype == MACH_ARUBA_SAMSUNG) {
-+ int i;
-+ /* configure Marvell 88E6060 */
-+ /* reset chip */
-+ armiiwrite(0x1f, 0xa, 0xa130);
-+ do {
-+ udelay(1000);
-+ i = armiiread(sp->phy, 0xa);
-+ } while (i & 0x8000);
-+
-+ /* configure MAC address */
-+ armiiwrite(sp->phy, 0x1, dev->dev_addr[0] << 8 | dev->dev_addr[1]);
-+ armiiwrite(sp->phy, 0x2, dev->dev_addr[2] << 8 | dev->dev_addr[3]);
-+ armiiwrite(sp->phy, 0x3, dev->dev_addr[4] << 8 | dev->dev_addr[5]);
-+
-+ /* set ports to forwarding */
-+ armiiwrite(0x18, 0x4, 0x3);
-+ armiiwrite(0x1c, 0x4, 0x3);
-+ armiiwrite(0x1d, 0x4, 0x3);
-+ }
-+#endif
-+
-+ tasklet_enable(&sp->rx_tasklet);
-+
-+ return 0;
-+
-+ init_error:
-+ ar2313_init_cleanup(dev);
-+ return ecode;
-+}
-+
-+/*
-+ * Load the rx ring.
-+ *
-+ * Loading rings is safe without holding the spin lock since this is
-+ * done only before the device is enabled, thus no interrupts are
-+ * generated and by the interrupt handler/tasklet handler.
-+ */
-+static void ar2313_load_rx_ring(struct net_device *dev, int nr_bufs)
-+{
-+
-+ struct ar2313_private *sp = ((struct net_device *)dev)->priv;
-+ short i, idx;
-+
-+ idx = sp->rx_skbprd;
-+
-+ for (i = 0; i < nr_bufs; i++) {
-+ struct sk_buff *skb;
-+ ar2313_descr_t *rd;
-+
-+ if (sp->rx_skb[idx]) {
-+#if DEBUG_RX
-+ printk(KERN_INFO "ar2313 rx refill full\n");
-+#endif /* DEBUG */
-+ break;
-+ }
-+
-+ // partha: create additional room for the second GRE fragment
-+ skb = alloc_skb(AR2313_BUFSIZE+128, GFP_ATOMIC);
-+ if (!skb) {
-+ printk("\n\n\n\n %s: No memory in system\n\n\n\n", __FUNCTION__);
-+ break;
-+ }
-+ // partha: create additional room in the front for tx pkt capture
-+ skb_reserve(skb, 32);
-+
-+ /*
-+ * Make sure IP header starts on a fresh cache line.
-+ */
-+ skb->dev = dev;
-+ skb_reserve(skb, RX_OFFSET);
-+ sp->rx_skb[idx] = skb;
-+
-+ rd = (ar2313_descr_t *) &sp->rx_ring[idx];
-+
-+ /* initialize dma descriptor */
-+ rd->devcs = ((AR2313_BUFSIZE << DMA_RX1_BSIZE_SHIFT) |
-+ DMA_RX1_CHAINED);
-+ rd->addr = virt_to_phys(skb->data);
-+ rd->descr = virt_to_phys(&sp->rx_ring[(idx+1) & (AR2313_DESCR_ENTRIES-1)]);
-+ rd->status = DMA_RX_OWN;
-+
-+ idx = DSC_NEXT(idx);
-+ }
-+
-+ if (!i) {
-+#if DEBUG_ERR
-+ printk(KERN_INFO "Out of memory when allocating standard receive buffers\n");
-+#endif /* DEBUG */
-+ } else {
-+ sp->rx_skbprd = idx;
-+ }
-+
-+ return;
-+}
-+
-+#define AR2313_MAX_PKTS_PER_CALL 64
-+
-+static int ar2313_rx_int(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+ struct sk_buff *skb, *skb_new;
-+ ar2313_descr_t *rxdesc;
-+ unsigned int status;
-+ u32 idx;
-+ int pkts = 0;
-+ int rval;
-+
-+ idx = sp->cur_rx;
-+
-+ /* process at most the entire ring and then wait for another interrupt */
-+ while(1) {
-+
-+ rxdesc = &sp->rx_ring[idx];
-+ status = rxdesc->status;
-+ if (status & DMA_RX_OWN) {
-+ /* SiByte owns descriptor or descr not yet filled in */
-+ rval = 0;
-+ break;
-+ }
-+
-+ if (++pkts > AR2313_MAX_PKTS_PER_CALL) {
-+ rval = 1;
-+ break;
-+ }
-+
-+#if DEBUG_RX
-+ printk("index %d\n", idx);
-+ printk("RX status %08x\n", rxdesc->status);
-+ printk("RX devcs %08x\n", rxdesc->devcs );
-+ printk("RX addr %08x\n", rxdesc->addr );
-+ printk("RX descr %08x\n", rxdesc->descr );
-+#endif
-+
-+ if ((status & (DMA_RX_ERROR|DMA_RX_ERR_LENGTH)) &&
-+ (!(status & DMA_RX_LONG))){
-+#if DEBUG_RX
-+ printk("%s: rx ERROR %08x\n", __FUNCTION__, status);
-+#endif
-+ sp->stats.rx_errors++;
-+ sp->stats.rx_dropped++;
-+
-+ /* add statistics counters */
-+ if (status & DMA_RX_ERR_CRC) sp->stats.rx_crc_errors++;
-+ if (status & DMA_RX_ERR_COL) sp->stats.rx_over_errors++;
-+ if (status & DMA_RX_ERR_LENGTH)
-+ sp->stats.rx_length_errors++;
-+ if (status & DMA_RX_ERR_RUNT) sp->stats.rx_over_errors++;
-+ if (status & DMA_RX_ERR_DESC) sp->stats.rx_over_errors++;
-+
-+ } else {
-+ /* alloc new buffer. */
-+ skb_new = dev_alloc_skb(AR2313_BUFSIZE + RX_OFFSET + 128);
-+ if (skb_new != NULL) {
-+
-+ skb = sp->rx_skb[idx];
-+ /* set skb */
-+ skb_put(skb, ((status >> DMA_RX_LEN_SHIFT) & 0x3fff) - CRC_LEN);
-+
-+#ifdef CONFIG_MERLOT
-+ if ((dev->am_pkt_handler == NULL) ||
-+ (dev->am_pkt_handler(skb, dev) == 0)) {
-+#endif
-+ sp->stats.rx_bytes += skb->len;
-+ skb->protocol = eth_type_trans(skb, dev);
-+ /* pass the packet to upper layers */
-+
-+#ifdef CONFIG_MERLOT
-+ if (dev->asap_netif_rx)
-+ dev->asap_netif_rx(skb);
-+ else
-+#endif
-+ netif_rx(skb);
-+#ifdef CONFIG_MERLOT
-+ }
-+#endif
-+ skb_new->dev = dev;
-+ /* 16 bit align */
-+ skb_reserve(skb_new, RX_OFFSET+32);
-+ /* reset descriptor's curr_addr */
-+ rxdesc->addr = virt_to_phys(skb_new->data);
-+
-+ sp->stats.rx_packets++;
-+ sp->rx_skb[idx] = skb_new;
-+
-+ } else {
-+ sp->stats.rx_dropped++;
-+ }
-+ }
-+
-+ rxdesc->devcs = ((AR2313_BUFSIZE << DMA_RX1_BSIZE_SHIFT) |
-+ DMA_RX1_CHAINED);
-+ rxdesc->status = DMA_RX_OWN;
-+
-+ idx = DSC_NEXT(idx);
-+ }
-+
-+ sp->cur_rx = idx;
-+
-+ return rval;
-+}
-+
-+
-+static void ar2313_tx_int(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+ u32 idx;
-+ struct sk_buff *skb;
-+ ar2313_descr_t *txdesc;
-+ unsigned int status=0;
-+
-+ idx = sp->tx_csm;
-+
-+ while (idx != sp->tx_prd) {
-+
-+ txdesc = &sp->tx_ring[idx];
-+
-+#if DEBUG_TX
-+ printk("%s: TXINT: csm=%d idx=%d prd=%d status=%x devcs=%x addr=%08x descr=%x\n",
-+ dev->name, sp->tx_csm, idx, sp->tx_prd,
-+ txdesc->status, txdesc->devcs, txdesc->addr, txdesc->descr);
-+#endif /* DEBUG */
-+
-+ if ((status = txdesc->status) & DMA_TX_OWN) {
-+ /* ar2313 dma still owns descr */
-+ break;
-+ }
-+ /* done with this descriptor */
-+ txdesc->status = 0;
-+
-+ if (status & DMA_TX_ERROR){
-+ sp->stats.tx_errors++;
-+ sp->stats.tx_dropped++;
-+ if(status & DMA_TX_ERR_UNDER)
-+ sp->stats.tx_fifo_errors++;
-+ if(status & DMA_TX_ERR_HB)
-+ sp->stats.tx_heartbeat_errors++;
-+ if(status & (DMA_TX_ERR_LOSS |
-+ DMA_TX_ERR_LINK))
-+ sp->stats.tx_carrier_errors++;
-+ if (status & (DMA_TX_ERR_LATE|
-+ DMA_TX_ERR_COL |
-+ DMA_TX_ERR_JABBER |
-+ DMA_TX_ERR_DEFER))
-+ sp->stats.tx_aborted_errors++;
-+ } else {
-+ /* transmit OK */
-+ sp->stats.tx_packets++;
-+ }
-+
-+ skb = sp->tx_skb[idx];
-+ sp->tx_skb[idx] = NULL;
-+ idx = DSC_NEXT(idx);
-+ sp->stats.tx_bytes += skb->len;
-+ dev_kfree_skb_irq(skb);
-+ }
-+
-+ sp->tx_csm = idx;
-+
-+ return;
-+}
-+
-+
-+static void
-+rx_tasklet_func(unsigned long data)
-+{
-+ struct net_device *dev = (struct net_device *) data;
-+ struct ar2313_private *sp = dev->priv;
-+
-+ if (sp->unloading) {
-+ return;
-+ }
-+
-+ if (ar2313_rx_int(dev)) {
-+ tasklet_hi_schedule(&sp->rx_tasklet);
-+ }
-+ else {
-+ unsigned long flags;
-+ spin_lock_irqsave(&sp->lock, flags);
-+ sp->dma_regs->intr_ena |= DMA_STATUS_RI;
-+ spin_unlock_irqrestore(&sp->lock, flags);
-+ }
-+}
-+
-+static void
-+rx_schedule(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+
-+ sp->dma_regs->intr_ena &= ~DMA_STATUS_RI;
-+
-+ tasklet_hi_schedule(&sp->rx_tasklet);
-+}
-+
-+static irqreturn_t ar2313_interrupt(int irq, void *dev_id, struct pt_regs *ptregs)
-+{
-+ struct net_device *dev = (struct net_device *)dev_id;
-+ struct ar2313_private *sp = dev->priv;
-+ unsigned int status, enabled;
-+
-+ /* clear interrupt */
-+ /*
-+ * Don't clear RI bit if currently disabled.
-+ */
-+ status = sp->dma_regs->status;
-+ enabled = sp->dma_regs->intr_ena;
-+ sp->dma_regs->status = status & enabled;
-+
-+ if (status & DMA_STATUS_NIS) {
-+ /* normal status */
-+ /*
-+ * Don't schedule rx processing if interrupt
-+ * is already disabled.
-+ */
-+ if (status & enabled & DMA_STATUS_RI) {
-+ /* receive interrupt */
-+ rx_schedule(dev);
-+ }
-+ if (status & DMA_STATUS_TI) {
-+ /* transmit interrupt */
-+ ar2313_tx_int(dev);
-+ }
-+ }
-+
-+ if (status & DMA_STATUS_AIS) {
-+#if DEBUG_INT
-+ printk("%s: AIS set %08x & %x\n", __FUNCTION__,
-+ status, (DMA_STATUS_FBE | DMA_STATUS_TPS));
-+#endif
-+ /* abnormal status */
-+ if (status & (DMA_STATUS_FBE | DMA_STATUS_TPS)) {
-+ ar2313_restart(dev);
-+ }
-+ }
-+ return IRQ_RETVAL(0);
-+}
-+
-+
-+static int ar2313_open(struct net_device *dev)
-+{
-+ struct ar2313_private *sp;
-+
-+ sp = dev->priv;
-+
-+ dev->mtu = 1500;
-+ netif_start_queue(dev);
-+
-+ sp->eth_regs->mac_control |= MAC_CONTROL_RE;
-+
-+ AR2313_MOD_INC_USE_COUNT;
-+
-+ return 0;
-+}
-+
-+static void ar2313_halt(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+ int j;
-+
-+ tasklet_disable(&sp->rx_tasklet);
-+
-+ /* kill the MAC */
-+ sp->eth_regs->mac_control &= ~(MAC_CONTROL_RE | /* disable Receives */
-+ MAC_CONTROL_TE); /* disable Transmits */
-+ /* stop dma */
-+ sp->dma_regs->control = 0;
-+ sp->dma_regs->bus_mode = DMA_BUS_MODE_SWR;
-+
-+ /* place phy and MAC in reset */
-+ *sp->int_regs |= (ar_int_mac_mask | ar_int_phy_mask);
-+
-+ /* free buffers on tx ring */
-+ for (j = 0; j < AR2313_DESCR_ENTRIES; j++) {
-+ struct sk_buff *skb;
-+ ar2313_descr_t *txdesc;
-+
-+ txdesc = &sp->tx_ring[j];
-+ txdesc->descr = 0;
-+
-+ skb = sp->tx_skb[j];
-+ if (skb) {
-+ dev_kfree_skb(skb);
-+ sp->tx_skb[j] = NULL;
-+ }
-+ }
-+}
-+
-+/*
-+ * close should do nothing. Here's why. It's called when
-+ * 'ifconfig bond0 down' is run. If it calls free_irq then
-+ * the irq is gone forever ! When bond0 is made 'up' again,
-+ * the ar2313_open () does not call request_irq (). Worse,
-+ * the call to ar2313_halt() generates a WDOG reset due to
-+ * the write to 'sp->int_regs' and the box reboots.
-+ * Commenting this out is good since it allows the
-+ * system to resume when bond0 is made up again.
-+ */
-+static int ar2313_close(struct net_device *dev)
-+{
-+#if 0
-+ /*
-+ * Disable interrupts
-+ */
-+ disable_irq(dev->irq);
-+
-+ /*
-+ * Without (or before) releasing irq and stopping hardware, this
-+ * is an absolute non-sense, by the way. It will be reset instantly
-+ * by the first irq.
-+ */
-+ netif_stop_queue(dev);
-+
-+ /* stop the MAC and DMA engines */
-+ ar2313_halt(dev);
-+
-+ /* release the interrupt */
-+ free_irq(dev->irq, dev);
-+
-+#endif
-+ AR2313_MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int ar2313_start_xmit(struct sk_buff *skb, struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+ ar2313_descr_t *td;
-+ u32 idx;
-+
-+ idx = sp->tx_prd;
-+ td = &sp->tx_ring[idx];
-+
-+ if (td->status & DMA_TX_OWN) {
-+#if DEBUG_TX
-+ printk("%s: No space left to Tx\n", __FUNCTION__);
-+#endif
-+ /* free skbuf and lie to the caller that we sent it out */
-+ sp->stats.tx_dropped++;
-+ dev_kfree_skb(skb);
-+
-+ /* restart transmitter in case locked */
-+ sp->dma_regs->xmt_poll = 0;
-+ return 0;
-+ }
-+
-+ /* Setup the transmit descriptor. */
-+ td->devcs = ((skb->len << DMA_TX1_BSIZE_SHIFT) |
-+ (DMA_TX1_LS|DMA_TX1_IC|DMA_TX1_CHAINED));
-+ td->addr = virt_to_phys(skb->data);
-+ td->status = DMA_TX_OWN;
-+
-+ /* kick transmitter last */
-+ sp->dma_regs->xmt_poll = 0;
-+
-+#if DEBUG_TX
-+ printk("index %d\n", idx);
-+ printk("TX status %08x\n", td->status);
-+ printk("TX devcs %08x\n", td->devcs );
-+ printk("TX addr %08x\n", td->addr );
-+ printk("TX descr %08x\n", td->descr );
-+#endif
-+
-+ sp->tx_skb[idx] = skb;
-+ idx = DSC_NEXT(idx);
-+ sp->tx_prd = idx;
-+
-+ //dev->trans_start = jiffies;
-+
-+ return 0;
-+}
-+
-+static int netdev_get_ecmd(struct net_device *dev, struct ethtool_cmd *ecmd)
-+{
-+ struct ar2313_private *np = dev->priv;
-+ u32 tmp;
-+
-+ ecmd->supported =
-+ (SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full |
-+ SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full |
-+ SUPPORTED_Autoneg | SUPPORTED_TP | SUPPORTED_MII);
-+
-+ ecmd->port = PORT_TP;
-+ /* only supports internal transceiver */
-+ ecmd->transceiver = XCVR_INTERNAL;
-+ /* not sure what this is for */
-+ ecmd->phy_address = 1;
-+
-+ ecmd->advertising = ADVERTISED_MII;
-+ tmp = armiiread(np->phy, MII_ADVERTISE);
-+ if (tmp & ADVERTISE_10HALF)
-+ ecmd->advertising |= ADVERTISED_10baseT_Half;
-+ if (tmp & ADVERTISE_10FULL)
-+ ecmd->advertising |= ADVERTISED_10baseT_Full;
-+ if (tmp & ADVERTISE_100HALF)
-+ ecmd->advertising |= ADVERTISED_100baseT_Half;
-+ if (tmp & ADVERTISE_100FULL)
-+ ecmd->advertising |= ADVERTISED_100baseT_Full;
-+
-+ tmp = armiiread(np->phy, MII_BMCR);
-+ if (tmp & BMCR_ANENABLE) {
-+ ecmd->advertising |= ADVERTISED_Autoneg;
-+ ecmd->autoneg = AUTONEG_ENABLE;
-+ } else {
-+ ecmd->autoneg = AUTONEG_DISABLE;
-+ }
-+
-+ if (ecmd->autoneg == AUTONEG_ENABLE) {
-+ tmp = armiiread(np->phy, MII_LPA);
-+ if (tmp & (LPA_100FULL|LPA_10FULL)) {
-+ ecmd->duplex = DUPLEX_FULL;
-+ } else {
-+ ecmd->duplex = DUPLEX_HALF;
-+ }
-+ if (tmp & (LPA_100FULL|LPA_100HALF)) {
-+ ecmd->speed = SPEED_100;
-+ } else {
-+ ecmd->speed = SPEED_10;
-+ }
-+ } else {
-+ if (tmp & BMCR_FULLDPLX) {
-+ ecmd->duplex = DUPLEX_FULL;
-+ } else {
-+ ecmd->duplex = DUPLEX_HALF;
-+ }
-+ if (tmp & BMCR_SPEED100) {
-+ ecmd->speed = SPEED_100;
-+ } else {
-+ ecmd->speed = SPEED_10;
-+ }
-+ }
-+
-+ /* ignore maxtxpkt, maxrxpkt for now */
-+
-+ return 0;
-+}
-+
-+static int netdev_set_ecmd(struct net_device *dev, struct ethtool_cmd *ecmd)
-+{
-+ struct ar2313_private *np = dev->priv;
-+ u32 tmp;
-+
-+ if (ecmd->speed != SPEED_10 && ecmd->speed != SPEED_100)
-+ return -EINVAL;
-+ if (ecmd->duplex != DUPLEX_HALF && ecmd->duplex != DUPLEX_FULL)
-+ return -EINVAL;
-+ if (ecmd->port != PORT_TP)
-+ return -EINVAL;
-+ if (ecmd->transceiver != XCVR_INTERNAL)
-+ return -EINVAL;
-+ if (ecmd->autoneg != AUTONEG_DISABLE && ecmd->autoneg != AUTONEG_ENABLE)
-+ return -EINVAL;
-+ /* ignore phy_address, maxtxpkt, maxrxpkt for now */
-+
-+ /* WHEW! now lets bang some bits */
-+
-+ tmp = armiiread(np->phy, MII_BMCR);
-+ if (ecmd->autoneg == AUTONEG_ENABLE) {
-+ /* turn on autonegotiation */
-+ tmp |= BMCR_ANENABLE;
-+ printk("%s: Enabling auto-neg\n", dev->name);
-+ } else {
-+ /* turn off auto negotiation, set speed and duplexity */
-+ tmp &= ~(BMCR_ANENABLE | BMCR_SPEED100 | BMCR_FULLDPLX);
-+ if (ecmd->speed == SPEED_100)
-+ tmp |= BMCR_SPEED100;
-+ if (ecmd->duplex == DUPLEX_FULL)
-+ tmp |= BMCR_FULLDPLX;
-+ printk("%s: Hard coding %d/%s\n", dev->name,
-+ (ecmd->speed == SPEED_100)? 100:10,
-+ (ecmd->duplex == DUPLEX_FULL)? "full":"half");
-+ }
-+ armiiwrite(np->phy, MII_BMCR, tmp);
-+ np->phyData = 0;
-+ return 0;
-+}
-+
-+static int netdev_ethtool_ioctl(struct net_device *dev, void *useraddr)
-+{
-+ struct ar2313_private *np = dev->priv;
-+ u32 cmd;
-+
-+ if (get_user(cmd, (u32 *)useraddr))
-+ return -EFAULT;
-+
-+ switch (cmd) {
-+ /* get settings */
-+ case ETHTOOL_GSET: {
-+ struct ethtool_cmd ecmd = { ETHTOOL_GSET };
-+ spin_lock_irq(&np->lock);
-+ netdev_get_ecmd(dev, &ecmd);
-+ spin_unlock_irq(&np->lock);
-+ if (copy_to_user(useraddr, &ecmd, sizeof(ecmd)))
-+ return -EFAULT;
-+ return 0;
-+ }
-+ /* set settings */
-+ case ETHTOOL_SSET: {
-+ struct ethtool_cmd ecmd;
-+ int r;
-+ if (copy_from_user(&ecmd, useraddr, sizeof(ecmd)))
-+ return -EFAULT;
-+ spin_lock_irq(&np->lock);
-+ r = netdev_set_ecmd(dev, &ecmd);
-+ spin_unlock_irq(&np->lock);
-+ return r;
-+ }
-+ /* restart autonegotiation */
-+ case ETHTOOL_NWAY_RST: {
-+ int tmp;
-+ int r = -EINVAL;
-+ /* if autoneg is off, it's an error */
-+ tmp = armiiread(np->phy, MII_BMCR);
-+ if (tmp & BMCR_ANENABLE) {
-+ tmp |= (BMCR_ANRESTART);
-+ armiiwrite(np->phy, MII_BMCR, tmp);
-+ r = 0;
-+ }
-+ return r;
-+ }
-+ /* get link status */
-+ case ETHTOOL_GLINK: {
-+ struct ethtool_value edata = {ETHTOOL_GLINK};
-+ edata.data = (armiiread(np->phy, MII_BMSR)&BMSR_LSTATUS) ? 1:0;
-+ if (copy_to_user(useraddr, &edata, sizeof(edata)))
-+ return -EFAULT;
-+ return 0;
-+ }
-+ }
-+
-+ return -EOPNOTSUPP;
-+}
-+
-+static int ar2313_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
-+{
-+ struct mii_ioctl_data *data = (struct mii_ioctl_data *)&ifr->ifr_data;
-+
-+ switch (cmd) {
-+ case SIOCDEVPRIVATE: {
-+ struct ar2313_cmd scmd;
-+
-+ if (copy_from_user(&scmd, ifr->ifr_data, sizeof(scmd)))
-+ return -EFAULT;
-+
-+#if DEBUG
-+ printk("%s: ioctl devprivate c=%d a=%x l=%d m=%d d=%x,%x\n",
-+ dev->name, scmd.cmd,
-+ scmd.address, scmd.length,
-+ scmd.mailbox, scmd.data[0], scmd.data[1]);
-+#endif /* DEBUG */
-+
-+ switch (scmd.cmd) {
-+ case AR2313_READ_DATA:
-+ if(scmd.length==4){
-+ scmd.data[0] = *((u32*)scmd.address);
-+ } else if(scmd.length==2) {
-+ scmd.data[0] = *((u16*)scmd.address);
-+ } else if (scmd.length==1) {
-+ scmd.data[0] = *((u8*)scmd.address);
-+ } else {
-+ return -EOPNOTSUPP;
-+ }
-+ if(copy_to_user(ifr->ifr_data, &scmd, sizeof(scmd)))
-+ return -EFAULT;
-+ break;
-+
-+ case AR2313_WRITE_DATA:
-+ if(scmd.length==4){
-+ *((u32*)scmd.address) = scmd.data[0];
-+ } else if(scmd.length==2) {
-+ *((u16*)scmd.address) = scmd.data[0];
-+ } else if (scmd.length==1) {
-+ *((u8*)scmd.address) = scmd.data[0];
-+ } else {
-+ return -EOPNOTSUPP;
-+ }
-+ break;
-+
-+ case AR2313_GET_VERSION:
-+ // SAMEER: sprintf((char*) &scmd, "%s", ARUBA_VERSION);
-+ if(copy_to_user(ifr->ifr_data, &scmd, sizeof(scmd)))
-+ return -EFAULT;
-+ break;
-+
-+ default:
-+ return -EOPNOTSUPP;
-+ }
-+ return 0;
-+ }
-+
-+ case SIOCETHTOOL:
-+ return netdev_ethtool_ioctl(dev, (void *) ifr->ifr_data);
-+
-+ case SIOCGMIIPHY: /* Get address of MII PHY in use. */
-+ data->phy_id = 1;
-+ /* Fall Through */
-+
-+ case SIOCGMIIREG: /* Read MII PHY register. */
-+ case SIOCDEVPRIVATE+1: /* for binary compat, remove in 2.5 */
-+ data->val_out = armiiread(data->phy_id & 0x1f,
-+ data->reg_num & 0x1f);
-+ return 0;
-+ case SIOCSMIIREG: /* Write MII PHY register. */
-+ case SIOCDEVPRIVATE+2: /* for binary compat, remove in 2.5 */
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EPERM;
-+ armiiwrite(data->phy_id & 0x1f,
-+ data->reg_num & 0x1f, data->val_in);
-+ return 0;
-+
-+ case SIOCSIFHWADDR:
-+ if (copy_from_user(dev->dev_addr, ifr->ifr_data, sizeof(dev->dev_addr)))
-+ return -EFAULT;
-+ return 0;
-+
-+ case SIOCGIFHWADDR:
-+ if (copy_to_user(ifr->ifr_data, dev->dev_addr, sizeof(dev->dev_addr)))
-+ return -EFAULT;
-+ return 0;
-+
-+ default:
-+ break;
-+ }
-+
-+ return -EOPNOTSUPP;
-+}
-+
-+static struct net_device_stats *ar2313_get_stats(struct net_device *dev)
-+{
-+ struct ar2313_private *sp = dev->priv;
-+ return &sp->stats;
-+}
-+
-+static short
-+armiiread(short phy, short reg)
-+{
-+ volatile ETHERNET_STRUCT * ethernet;
-+
-+ ethernet = (volatile ETHERNET_STRUCT *)ETHERNET_BASE; /* always MAC 0 */
-+ ethernet->mii_addr = ((reg << MII_ADDR_REG_SHIFT) |
-+ (phy << MII_ADDR_PHY_SHIFT));
-+ while (ethernet->mii_addr & MII_ADDR_BUSY);
-+ return (ethernet->mii_data >> MII_DATA_SHIFT);
-+}
-+
-+static void
-+armiiwrite(short phy, short reg, short data)
-+{
-+ volatile ETHERNET_STRUCT * ethernet;
-+
-+ ethernet = (volatile ETHERNET_STRUCT *)ETHERNET_BASE; /* always MAC 0 */
-+ while (ethernet->mii_addr & MII_ADDR_BUSY);
-+ ethernet->mii_data = data << MII_DATA_SHIFT;
-+ ethernet->mii_addr = ((reg << MII_ADDR_REG_SHIFT) |
-+ (phy << MII_ADDR_PHY_SHIFT) |
-+ MII_ADDR_WRITE);
-+}
-+
diff --git a/openwrt/target/linux/aruba-2.6/patches/011-ap6x_serial_fix.patch b/openwrt/target/linux/aruba-2.6/patches/011-ap6x_serial_fix.patch
deleted file mode 100644
index 528d0e90fb..0000000000
--- a/openwrt/target/linux/aruba-2.6/patches/011-ap6x_serial_fix.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff -urN linux.old/drivers/serial/8250.c linux.net/drivers/serial/8250.c
---- linux.old/drivers/serial/8250.c 2006-01-15 07:16:02.000000000 +0100
-+++ linux.net/drivers/serial/8250.c 2006-01-30 06:12:30.509342250 +0100
-@@ -1510,7 +1510,7 @@
- {
- struct uart_8250_port *up = (struct uart_8250_port *)port;
- unsigned long flags;
-- unsigned char lsr, iir;
-+// unsigned char lsr, iir;
- int retval;
-
- up->capabilities = uart_config[up->port.type].flags;
-@@ -1615,6 +1615,8 @@
-
- serial8250_set_mctrl(&up->port, up->port.mctrl);
-
-+// For some reason this test causes problems on the AP6x serial console
-+#if 0
- /*
- * Do a quick test to see if we receive an
- * interrupt when we enable the TX irq.
-@@ -1633,7 +1635,8 @@
- } else {
- up->bugs &= ~UART_BUG_TXEN;
- }
--
-+#endif
-+
- spin_unlock_irqrestore(&up->port.lock, flags);
-
- /*
diff --git a/openwrt/target/linux/aruba-2.6/patches/012-ehci_softirq.patch b/openwrt/target/linux/aruba-2.6/patches/012-ehci_softirq.patch
deleted file mode 100644
index ae7f9f26c8..0000000000
--- a/openwrt/target/linux/aruba-2.6/patches/012-ehci_softirq.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-diff -Nurb linux-2.6.16.1/drivers/usb/host/ehci.h linux-patched/drivers/usb/host/ehci.h
---- linux-2.6.16.1/drivers/usb/host/ehci.h 2006-03-27 22:49:02.000000000 -0800
-+++ linux-patched/drivers/usb/host/ehci.h 2006-04-07 12:07:30.000000000 -0700
-@@ -82,6 +82,7 @@
- struct dma_pool *sitd_pool; /* sitd per split iso urb */
-
- struct timer_list watchdog;
-+ struct timer_list softirq;
- struct notifier_block reboot_notifier;
- unsigned long actions;
- unsigned stamp;
-diff -Nurb linux-2.6.16.1/drivers/usb/host/ehci-hcd.c linux-patched/drivers/usb/host/ehci-hcd.c
---- linux-2.6.16.1/drivers/usb/host/ehci-hcd.c 2006-03-27 22:49:02.000000000 -0800
-+++ linux-patched/drivers/usb/host/ehci-hcd.c 2006-04-07 13:20:13.000000000 -0700
-@@ -116,6 +116,7 @@
- #define EHCI_IO_JIFFIES (HZ/10) /* io watchdog > irq_thresh */
- #define EHCI_ASYNC_JIFFIES (HZ/20) /* async idle timeout */
- #define EHCI_SHRINK_JIFFIES (HZ/200) /* async qh unlink delay */
-+#define EHCI_SOFTIRQ (HZ/400)
-
- /* Initial IRQ latency: faster than hw default */
- static int log2_irq_thresh = 0; // 0 to 6
-@@ -263,6 +264,16 @@
- #include "ehci-sched.c"
-
- /*-------------------------------------------------------------------------*/
-+static irqreturn_t ehci_irq (struct usb_hcd *hcd, struct pt_regs *regs);
-+
-+static void ehci_softirq (unsigned long param)
-+{
-+ struct ehci_hcd *ehci = (struct ehci_hcd *) param;
-+
-+ if (ehci_irq(ehci_to_hcd(ehci),0) != IRQ_NONE)
-+ set_bit(HCD_FLAG_SAW_IRQ, &(ehci_to_hcd(ehci))->flags);
-+ mod_timer (&ehci->softirq, jiffies + EHCI_SOFTIRQ);
-+}
-
- static void ehci_watchdog (unsigned long param)
- {
-@@ -280,6 +291,10 @@
- COUNT (ehci->stats.lost_iaa);
- writel (STS_IAA, &ehci->regs->status);
- ehci->reclaim_ready = 1;
-+ if (!timer_pending(&ehci->softirq)) {
-+ ehci_info(ehci, "switching to softirq\n");
-+ mod_timer (&ehci->softirq, jiffies + EHCI_SOFTIRQ);
-+ }
- }
- }
-
-@@ -371,6 +388,7 @@
-
- /* no more interrupts ... */
- del_timer_sync (&ehci->watchdog);
-+ del_timer_sync (&ehci->softirq);
-
- spin_lock_irq(&ehci->lock);
- if (HC_IS_RUNNING (hcd->state))
-@@ -418,6 +436,10 @@
- ehci->watchdog.function = ehci_watchdog;
- ehci->watchdog.data = (unsigned long) ehci;
-
-+ init_timer(&ehci->softirq);
-+ ehci->softirq.function = ehci_softirq;
-+ ehci->softirq.data = (unsigned long) ehci;
-+
- /*
- * hw default: 1K periodic list heads, one per frame.
- * periodic_size can shrink by USBCMD update if hcc_params allows.
-
diff --git a/openwrt/target/linux/au1000-2.6/Makefile b/openwrt/target/linux/au1000-2.6/Makefile
deleted file mode 100644
index 4b596f603a..0000000000
--- a/openwrt/target/linux/au1000-2.6/Makefile
+++ /dev/null
@@ -1,26 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-LINUX_VERSION:=2.6.16.7
-LINUX_RELEASE:=1
-LINUX_KERNEL_MD5SUM:=9682b2bd6e02f3087982d7c3f5ba824e
-
-include ../rules.mk
-include ./config
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
-
-
-$(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
- [ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches $(MAKE_TRACE)
- [ -d ./patches ] && $(PATCH) $(LINUX_DIR) ./patches $(MAKE_TRACE)
- @$(CP) config $(LINUX_DIR)/.config
- touch $@
-
-$(LINUX_BUILD_DIR)/zImage.flash.srec: $(LINUX_DIR)/arch/mips/boot/compressed/images/zImage.flash.srec $(LINUX_DIR)/arch/mips/boot/compressed/images/zImage.srec
- $(MAKE) -C $(LINUX_DIR) V=1 CROSS_COMPILE=$(TARGET_CROSS) ARCH=$(LINUX_KARCH) PATH=$(TARGET_PATH) zImage.flash $(MAKE_TRACE)
- $(CP) $(LINUX_DIR)/arch/mips/boot/compressed/images/zImage.flash.srec $(LINUX_DIR)/zImage.flash.srec
- $(CP) $(LINUX_DIR)/arch/mips/boot/compressed/images/zImage.srec $(LINUX_DIR)/zImage.srec
- touch $@
-
-compile: $(LINUX_DIR)/vmlinux
diff --git a/openwrt/target/linux/au1000-2.6/config b/openwrt/target/linux/au1000-2.6/config
deleted file mode 100644
index b274fcfd55..0000000000
--- a/openwrt/target/linux/au1000-2.6/config
+++ /dev/null
@@ -1,1477 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16.7
-# Sat Apr 29 20:33:29 2006
-#
-CONFIG_MIPS=y
-
-#
-# Machine selection
-#
-CONFIG_MIPS_MTX1=y
-# CONFIG_MIPS_BOSPORUS is not set
-# CONFIG_MIPS_PB1000 is not set
-# CONFIG_MIPS_PB1100 is not set
-# CONFIG_MIPS_PB1500 is not set
-# CONFIG_MIPS_PB1550 is not set
-# CONFIG_MIPS_PB1200 is not set
-# CONFIG_MIPS_DB1000 is not set
-# CONFIG_MIPS_DB1100 is not set
-# CONFIG_MIPS_DB1500 is not set
-# CONFIG_MIPS_DB1550 is not set
-# CONFIG_MIPS_DB1200 is not set
-# CONFIG_MIPS_MIRAGE is not set
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MIPS_EV64120 is not set
-# CONFIG_MIPS_EV96100 is not set
-# CONFIG_MIPS_IVR is not set
-# CONFIG_MIPS_ITE8172 is not set
-# CONFIG_MACH_JAZZ is not set
-# CONFIG_LASAT is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_MALTA is not set
-# CONFIG_MIPS_SEAD is not set
-# CONFIG_MIPS_SIM is not set
-# CONFIG_MOMENCO_JAGUAR_ATX is not set
-# CONFIG_MOMENCO_OCELOT is not set
-# CONFIG_MOMENCO_OCELOT_3 is not set
-# CONFIG_MOMENCO_OCELOT_C is not set
-# CONFIG_MOMENCO_OCELOT_G is not set
-# CONFIG_MIPS_XXS1500 is not set
-# CONFIG_PNX8550_V2PCI is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_DDB5074 is not set
-# CONFIG_DDB5476 is not set
-# CONFIG_DDB5477 is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_QEMU is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SIBYTE_SWARM is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_PTSWARM is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SNI_RM200_PCI is not set
-# CONFIG_TOSHIBA_JMR3927 is not set
-# CONFIG_TOSHIBA_RBTX4927 is not set
-# CONFIG_TOSHIBA_RBTX4938 is not set
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_DMA_NEED_PCI_MAP_STATE=y
-# CONFIG_CPU_BIG_ENDIAN is not set
-CONFIG_CPU_LITTLE_ENDIAN=y
-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
-CONFIG_SOC_AU1500=y
-CONFIG_SOC_AU1X00=y
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-
-#
-# CPU selection
-#
-CONFIG_CPU_MIPS32_R1=y
-# CONFIG_CPU_MIPS32_R2 is not set
-# CONFIG_CPU_MIPS64_R1 is not set
-# CONFIG_CPU_MIPS64_R2 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_VR41XX is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_CPU_MIPS32=y
-CONFIG_CPU_MIPSR1=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-
-#
-# Kernel type
-#
-CONFIG_32BIT=y
-# CONFIG_64BIT is not set
-CONFIG_PAGE_SIZE_4KB=y
-# CONFIG_PAGE_SIZE_8KB is not set
-# CONFIG_PAGE_SIZE_16KB is not set
-# CONFIG_PAGE_SIZE_64KB is not set
-CONFIG_CPU_HAS_PREFETCH=y
-# CONFIG_MIPS_MT is not set
-CONFIG_64BIT_PHYS_ADDR=y
-# CONFIG_CPU_ADVANCED is not set
-CONFIG_CPU_HAS_LLSC=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_ARCH_FLATMEM_ENABLE=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_SPLIT_PTLOCK_CPUS=4
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-
-#
-# 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_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_EMBEDDED=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_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-CONFIG_OBSOLETE_INTERMODULE=y
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-# CONFIG_LBD 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"
-
-#
-# Bus options (PCI, PCMCIA, EISA, ISA, TC)
-#
-CONFIG_HW_HAS_PCI=y
-CONFIG_PCI=y
-CONFIG_PCI_LEGACY_PROC=y
-CONFIG_MMU=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# PCI Hotplug Support
-#
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_MISC=y
-CONFIG_TRAD_SIGNALS=y
-# CONFIG_PM is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=m
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-CONFIG_NET_KEY=m
-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_FWMARK=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
-CONFIG_IP_ROUTE_VERBOSE=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_NET_IPGRE_BROADCAST=y
-# CONFIG_IPSEC_NAT_TRAVERSAL 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_TUNNEL=m
-# CONFIG_INET_DIAG is not set
-CONFIG_TCP_CONG_ADVANCED=y
-
-#
-# TCP congestion control
-#
-CONFIG_TCP_CONG_BIC=y
-# CONFIG_TCP_CONG_CUBIC is not set
-CONFIG_TCP_CONG_WESTWOOD=m
-CONFIG_TCP_CONG_HTCP=m
-CONFIG_TCP_CONG_HSTCP=m
-CONFIG_TCP_CONG_HYBLA=m
-CONFIG_TCP_CONG_VEGAS=m
-CONFIG_TCP_CONG_SCALABLE=m
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-CONFIG_IPV6_PRIVACY=y
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-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_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
-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_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_PHYSDEV=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-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=y
-CONFIG_IP_NF_CONNTRACK_MARK=y
-CONFIG_IP_NF_CONNTRACK_EVENTS=y
-CONFIG_IP_NF_CONNTRACK_NETLINK=m
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_NETBIOS_NS=m
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_PPTP=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_LAYER7=m
-CONFIG_IP_NF_MATCH_LAYER7_DEBUG=y
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_IPP2P=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_TIME=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=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_MATCH_POLICY=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_IMQ=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_PPTP=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_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-CONFIG_IP_NF_SET=m
-CONFIG_IP_NF_SET_MAX=256
-CONFIG_IP_NF_SET_HASHSIZE=1024
-CONFIG_IP_NF_SET_IPMAP=m
-CONFIG_IP_NF_SET_MACIPMAP=m
-CONFIG_IP_NF_SET_PORTMAP=m
-CONFIG_IP_NF_SET_IPHASH=m
-CONFIG_IP_NF_SET_NETHASH=m
-CONFIG_IP_NF_SET_IPTREE=m
-CONFIG_IP_NF_MATCH_SET=m
-CONFIG_IP_NF_TARGET_SET=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-CONFIG_IP6_NF_QUEUE=m
-# CONFIG_IP6_NF_IPTABLES 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
-
-#
-# 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=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_NET_DIVERT 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_CLK_JIFFIES=y
-# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
-# 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_ESFQ is not set
-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 is not set
-CONFIG_NET_ACT_PEDIT=m
-CONFIG_NET_ACT_SIMP=m
-# CONFIG_NET_CLS_IND is not set
-CONFIG_NET_ESTIMATOR=y
-
-#
-# Network testing
-#
-CONFIG_NET_PKTGEN=m
-# 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 is not set
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-CONFIG_FW_LOADER=y
-
-#
-# 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 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_AMDSTD_RETRY=0
-# 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 is not set
-# CONFIG_MTD_ALCHEMY is not set
-CONFIG_MTD_MTX1=y
-# 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_BLKMTD 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=m
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_SX8 is not set
-# 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_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=m
-# 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=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=y
-# 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 is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# 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_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 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_FC 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 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_IFB is not set
-CONFIG_DUMMY=m
-CONFIG_BONDING=m
-# CONFIG_EQUALIZER is not set
-CONFIG_IMQ=m
-# CONFIG_IMQ_BEHAVIOR_AA is not set
-# CONFIG_IMQ_BEHAVIOR_AB is not set
-CONFIG_IMQ_BEHAVIOR_BA=y
-# CONFIG_IMQ_BEHAVIOR_BB is not set
-CONFIG_IMQ_NUM_DEVS=2
-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_MIPS_AU1X00_ENET=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 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 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SK98LIN 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
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-CONFIG_STRIP=m
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_PLX_HERMES is not set
-# CONFIG_TMD_HERMES is not set
-# CONFIG_NORTEL_HERMES is not set
-CONFIG_PCI_HERMES=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-
-#
-# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
-#
-CONFIG_PRISM54=m
-# CONFIG_HOSTAP 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=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=m
-# CONFIG_SLIP is not set
-# CONFIG_NET_FC is not set
-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
-
-#
-# 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_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-CONFIG_SERIAL_8250_AU1X00=y
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_AU1X00 is not set
-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=m
-CONFIG_MTX1_WATCHDOG=y
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG 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
-
-#
-# 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 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
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-# CONFIG_FB is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=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 is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_UHCI_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=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 is not set
-# 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_MTOUCH is not set
-# CONFIG_USB_ITMTOUCH is not set
-# CONFIG_USB_EGALAX 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=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# 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_ZD1201=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRPRIME=m
-# CONFIG_USB_SERIAL_ANYDATA is not set
-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_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_PL2303=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-CONFIG_USB_SERIAL_SAFE_PADDED=y
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_LD=m
-CONFIG_USB_TEST=m
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
-#
-
-#
-# File systems
-#
-# CONFIG_EXT2_FS is not set
-CONFIG_EXT3_FS=m
-# CONFIG_EXT3_FS_XATTR 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=y
-CONFIG_XFS_FS=m
-CONFIG_XFS_EXPORT=y
-# 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_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-CONFIG_ROMFS_FS=m
-CONFIG_INOTIFY=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=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-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_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-CONFIG_DEVFS_DEBUG=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
-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=y
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=y
-# 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=y
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=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_XATTR=y
-CONFIG_CIFS_POSIX=y
-# 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 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=m
-# 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_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_CROSSCOMPILE=y
-CONFIG_CMDLINE="init=/etc/preinit"
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-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_DES=y
-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=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
diff --git a/openwrt/target/linux/au1000-2.6/patches/001-redefinitions_fixes.patch b/openwrt/target/linux/au1000-2.6/patches/001-redefinitions_fixes.patch
deleted file mode 100644
index f2c524a030..0000000000
--- a/openwrt/target/linux/au1000-2.6/patches/001-redefinitions_fixes.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- linux-2.6.16.2/drivers/usb/host/ohci-pci.c 2006-04-07 18:56:47.000000000 +0200
-+++ linux-2.6.16.2.new/drivers/usb/host/ohci-pci.c 2006-04-11 14:20:33.000000000 +0200
-@@ -215,7 +215,7 @@
- #endif
- };
-
--
-+/*
- static int __init ohci_hcd_pci_init (void)
- {
- printk (KERN_DEBUG "%s: " DRIVER_INFO " (PCI)\n", hcd_name);
-@@ -227,11 +227,12 @@
- return pci_register_driver (&ohci_pci_driver);
- }
- module_init (ohci_hcd_pci_init);
--
-+*/
- /*-------------------------------------------------------------------------*/
--
-+/*
- static void __exit ohci_hcd_pci_cleanup (void)
- {
- pci_unregister_driver (&ohci_pci_driver);
- }
- module_exit (ohci_hcd_pci_cleanup);
-+*/
diff --git a/openwrt/target/linux/au1000-2.6/patches/002-mtx1_flash_map.patch b/openwrt/target/linux/au1000-2.6/patches/002-mtx1_flash_map.patch
deleted file mode 100644
index 9a6b05b146..0000000000
--- a/openwrt/target/linux/au1000-2.6/patches/002-mtx1_flash_map.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -urN linux-2.6.16.7/drivers/mtd/maps/alchemy-flash.c linux-2.6.16.7.new/drivers/mtd/maps/alchemy-flash.c
---- linux-2.6.16.7/drivers/mtd/maps/alchemy-flash.c 2006-04-17 23:53:25.000000000 +0200
-+++ linux-2.6.16.7.new/drivers/mtd/maps/alchemy-flash.c 2006-04-20 19:16:26.000000000 +0200
-@@ -105,6 +105,12 @@
- #define USE_LOCAL_ACCESSORS /* why? */
- #endif
-
-+#ifdef CONFIG_MIPS_MTX1
-+#define BOARD_MAP_NAME "MTX-1 Flash"
-+#define BOARD_FLASH_SIZE 0x04000000 /* 64MB */
-+#define BOARD_FLASH_WIDTH 4 /* 32-bits */
-+#endif
-+
- static struct map_info alchemy_map = {
- .name = BOARD_MAP_NAME,
- };
diff --git a/openwrt/target/linux/au1000-2.6/patches/003-zImage.patch b/openwrt/target/linux/au1000-2.6/patches/003-zImage.patch
deleted file mode 100644
index 1d4c6ad5d1..0000000000
--- a/openwrt/target/linux/au1000-2.6/patches/003-zImage.patch
+++ /dev/null
@@ -1,1364 +0,0 @@
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/au1xxx/head.S linux-2.6.16.7.new/arch/mips/boot/compressed/au1xxx/head.S
---- linux-2.6.16.7/arch/mips/boot/compressed/au1xxx/head.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/au1xxx/head.S 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,119 @@
-+/*
-+ * arch/mips/kernel/head.S
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file "COPYING" in the main directory of this archive
-+ * for more details.
-+ *
-+ * Copyright (C) 1994, 1995 Waldorf Electronics
-+ * Written by Ralf Baechle and Andreas Busse
-+ * Copyright (C) 1995 - 1999 Ralf Baechle
-+ * Copyright (C) 1996 Paul M. Antoine
-+ * Modified for DECStation and hence R3000 support by Paul M. Antoine
-+ * Further modifications by David S. Miller and Harald Koerfgen
-+ * Copyright (C) 1999 Silicon Graphics, Inc.
-+ *
-+ * Head.S contains the MIPS exception handler and startup code.
-+ *
-+ **************************************************************************
-+ * 9 Nov, 2000.
-+ * Added Cache Error exception handler and SBDDP EJTAG debug exception.
-+ *
-+ * Kevin Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com
-+ * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
-+ **************************************************************************
-+ */
-+#include <linux/config.h>
-+#include <linux/threads.h>
-+
-+#include <asm/asm.h>
-+#include <asm/cacheops.h>
-+#include <asm/mipsregs.h>
-+#include <asm/cachectl.h>
-+#include <asm/regdef.h>
-+
-+#define IndexInvalidate_I 0x00
-+#define IndexWriteBack_D 0x01
-+
-+ .set noreorder
-+ .cprestore
-+ LEAF(start)
-+start:
-+ bal locate
-+ nop
-+locate:
-+ subu s8, ra, 8 /* Where we were loaded */
-+ la sp, (.stack + 8192)
-+
-+ move s0, a0 /* Save boot rom start args */
-+ move s1, a1
-+ move s2, a2
-+ move s3, a3
-+
-+ la a0, start /* Where we were linked to run */
-+
-+ move a1, s8
-+ la a2, _edata
-+ subu t1, a2, a0
-+ srl t1, t1, 2
-+
-+ /* copy text section */
-+ li t0, 0
-+1: lw v0, 0(a1)
-+ nop
-+ sw v0, 0(a0)
-+ xor t0, t0, v0
-+ addu a0, 4
-+ bne a2, a0, 1b
-+ addu a1, 4
-+
-+ /* Clear BSS */
-+ la a0, _edata
-+ la a2, _end
-+2: sw zero, 0(a0)
-+ bne a2, a0, 2b
-+ addu a0, 4
-+
-+ /* push the D-Cache and invalidate I-Cache */
-+ li k0, 0x80000000 # start address
-+ li k1, 0x80004000 # end address (16KB I-Cache)
-+ subu k1, 128
-+
-+1:
-+ .set mips3
-+ cache IndexWriteBack_D, 0(k0)
-+ cache IndexWriteBack_D, 32(k0)
-+ cache IndexWriteBack_D, 64(k0)
-+ cache IndexWriteBack_D, 96(k0)
-+ cache IndexInvalidate_I, 0(k0)
-+ cache IndexInvalidate_I, 32(k0)
-+ cache IndexInvalidate_I, 64(k0)
-+ cache IndexInvalidate_I, 96(k0)
-+ .set mips0
-+
-+ bne k0, k1, 1b
-+ addu k0, k0, 128
-+ /* done */
-+
-+ move a0, s8 /* load address */
-+ move a1, t1 /* length in words */
-+ move a2, t0 /* checksum */
-+ move a3, sp
-+
-+ la ra, 1f
-+ la k0, decompress_kernel
-+ jr k0
-+ nop
-+1:
-+
-+ move a0, s0
-+ move a1, s1
-+ move a2, s2
-+ move a3, s3
-+ li k0, KERNEL_ENTRY
-+ jr k0
-+ nop
-+3:
-+ b 3b
-+ END(start)
-+ .comm .stack,4096*2,4
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/au1xxx/Makefile linux-2.6.16.7.new/arch/mips/boot/compressed/au1xxx/Makefile
---- linux-2.6.16.7/arch/mips/boot/compressed/au1xxx/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/au1xxx/Makefile 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,110 @@
-+# arch/mips/boot/compressed/au1xxx/Makefile
-+#
-+# Makefile for AMD Alchemy Semiconductor Au1x based boards.
-+# All of the boot loader code was derived from the ppc
-+# boot code.
-+#
-+# Copyright 2001,2002 MontaVista Software Inc.
-+#
-+# Author: Mark A. Greer
-+# mgreer@mvista.com
-+#
-+# Copyright 2004 Embedded Alley Solutions, Inc
-+# Ported and modified for mips 2.6 support by
-+# Pete Popov <ppopov@embeddedalley.com>
-+#
-+# This program is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU General Public License as published by the
-+# Free Software Foundation; either version 2 of the License, or (at your
-+# option) any later version.
-+
-+boot := arch/mips/boot
-+compressed := $(boot)/compressed
-+utils := $(compressed)/utils
-+lib := $(compressed)/lib
-+images := $(compressed)/images
-+common := $(compressed)/common
-+
-+#########################################################################
-+# START BOARD SPECIFIC VARIABLES
-+
-+# These two variables control where the zImage is stored
-+# in flash and loaded in memory. It only controls how the srec
-+# file is generated, the code is the same.
-+RAM_RUN_ADDR = 0x81000000
-+
-+ifdef CONFIG_MIPS_XXS1500
-+FLASH_LOAD_ADDR = 0xBF000000
-+else
-+FLASH_LOAD_ADDR = 0xBFD00000
-+endif
-+
-+# These two variables specify the free ram region
-+# that can be used for temporary malloc area
-+AVAIL_RAM_START=0x80500000
-+AVAIL_RAM_END=0x80900000
-+
-+# This one must match the LOADADDR in arch/mips/Makefile!
-+LOADADDR=0x80100000
-+
-+# WARNING WARNING WARNING
-+# Note that with a LOADADDR of 0x80100000 and AVAIL_RAM_START of
-+# 0x80500000, the max decompressed kernel size can be 4MB. Else we
-+# start overwriting ourselve. You can change these vars as needed;
-+# it would be much better if we just figured everything out on the fly.
-+
-+# END BOARD SPECIFIC VARIABLES
-+#########################################################################
-+
-+OBJECTS := $(obj)/head.o $(common)/misc-common.o $(common)/misc-simple.o \
-+ $(common)/au1k_uart.o
-+LIBS := $(lib)/lib.a
-+
-+ENTRY := $(utils)/entry
-+OFFSET := $(utils)/offset
-+SIZE := $(utils)/size
-+
-+LD_ARGS := -T $(compressed)/ld.script -Ttext $(RAM_RUN_ADDR) -Bstatic
-+
-+ifdef CONFIG_CPU_LITTLE_ENDIAN
-+OBJCOPY_ARGS = -O elf32-tradlittlemips
-+else
-+OBJCOPY_ARGS = -O elf32-tradbigmips
-+endif
-+
-+$(obj)/head.o: $(obj)/head.S $(TOPDIR)/vmlinux
-+ $(CC) -I $(TOPDIR)/include $(AFLAGS) \
-+ -DKERNEL_ENTRY=$(shell sh $(ENTRY) $(NM) $(TOPDIR)/vmlinux ) \
-+ -c -o $*.o $<
-+
-+$(common)/misc-simple.o:
-+ $(CC) -I $(TOPDIR)/include $(CFLAGS) -DINITRD_OFFSET=0 -DINITRD_SIZE=0 -DZIMAGE_OFFSET=0 \
-+ -DAVAIL_RAM_START=$(AVAIL_RAM_START) \
-+ -DAVAIL_RAM_END=$(AVAIL_RAM_END) \
-+ -DLOADADDR=$(LOADADDR) \
-+ -DZIMAGE_SIZE=0 -c -o $@ $*.c
-+
-+$(obj)/zvmlinux: $(OBJECTS) $(LIBS) $(srctree)/$(compressed)/ld.script $(images)/vmlinux.gz $(common)/dummy.o
-+ $(OBJCOPY) \
-+ --add-section=.image=$(images)/vmlinux.gz \
-+ --set-section-flags=.image=contents,alloc,load,readonly,data \
-+ $(common)/dummy.o $(common)/image.o
-+ $(LD) $(LD_ARGS) -o $@ $(OBJECTS) $(common)/image.o $(LIBS)
-+ $(OBJCOPY) $(OBJCOPY_ARGS) $@ $@ -R __kcrctab -R __ksymtab_strings \
-+ -R .comment -R .stab -R .stabstr -R .initrd -R .sysmap
-+
-+# Here we manipulate the image in order to get it the necessary
-+# srecord file we need.
-+zImage: $(obj)/zvmlinux
-+ mv $(obj)/zvmlinux $(images)/zImage
-+ $(OBJCOPY) -O srec $(images)/zImage $(images)/zImage.srec
-+ $(OBJCOPY) -O binary $(images)/zImage $(images)/zImage.bin
-+
-+zImage.flash: zImage
-+ ( \
-+ flash=${FLASH_LOAD_ADDR} ; \
-+ ram=${RAM_RUN_ADDR} ; \
-+ adjust=$$[ $$flash - $$ram ] ; \
-+ $(OBJCOPY) -O srec --adjust-vma `printf '0x%08x' $$adjust` \
-+ $(images)/zImage $(images)/zImage.flash.srec ; \
-+ )
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/common/au1k_uart.c linux-2.6.16.7.new/arch/mips/boot/compressed/common/au1k_uart.c
---- linux-2.6.16.7/arch/mips/boot/compressed/common/au1k_uart.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/common/au1k_uart.c 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,103 @@
-+/*
-+ * BRIEF MODULE DESCRIPTION
-+ * Simple Au1000 uart routines.
-+ *
-+ * Copyright 2001 MontaVista Software Inc.
-+ * Author: MontaVista Software, Inc.
-+ * ppopov@mvista.com or source@mvista.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+#include <linux/config.h>
-+#include <asm/io.h>
-+#include <asm/mach-au1x00/au1000.h>
-+#include "ns16550.h"
-+
-+typedef unsigned char uint8;
-+typedef unsigned int uint32;
-+
-+#define UART16550_BAUD_2400 2400
-+#define UART16550_BAUD_4800 4800
-+#define UART16550_BAUD_9600 9600
-+#define UART16550_BAUD_19200 19200
-+#define UART16550_BAUD_38400 38400
-+#define UART16550_BAUD_57600 57600
-+#define UART16550_BAUD_115200 115200
-+
-+#define UART16550_PARITY_NONE 0
-+#define UART16550_PARITY_ODD 0x08
-+#define UART16550_PARITY_EVEN 0x18
-+#define UART16550_PARITY_MARK 0x28
-+#define UART16550_PARITY_SPACE 0x38
-+
-+#define UART16550_DATA_5BIT 0x0
-+#define UART16550_DATA_6BIT 0x1
-+#define UART16550_DATA_7BIT 0x2
-+#define UART16550_DATA_8BIT 0x3
-+
-+#define UART16550_STOP_1BIT 0x0
-+#define UART16550_STOP_2BIT 0x4
-+
-+/* It would be nice if we had a better way to do this.
-+ * It could be a variable defined in one of the board specific files.
-+ */
-+#undef UART_BASE
-+#ifdef CONFIG_COGENT_CSB250
-+#define UART_BASE UART3_ADDR
-+#else
-+#define UART_BASE UART0_ADDR
-+#endif
-+
-+/* memory-mapped read/write of the port */
-+#define UART16550_READ(y) (au_readl(UART_BASE + y) & 0xff)
-+#define UART16550_WRITE(y,z) (au_writel(z&0xff, UART_BASE + y))
-+
-+/*
-+ * We use uart 0, which is already initialized by
-+ * yamon.
-+ */
-+volatile struct NS16550 *
-+serial_init(int chan)
-+{
-+ volatile struct NS16550 *com_port;
-+ com_port = (struct NS16550 *) UART_BASE;
-+ return (com_port);
-+}
-+
-+void
-+serial_putc(volatile struct NS16550 *com_port, unsigned char c)
-+{
-+ while ((UART16550_READ(UART_LSR)&0x40) == 0);
-+ UART16550_WRITE(UART_TX, c);
-+}
-+
-+unsigned char
-+serial_getc(volatile struct NS16550 *com_port)
-+{
-+ while((UART16550_READ(UART_LSR) & 0x1) == 0);
-+ return UART16550_READ(UART_RX);
-+}
-+
-+int
-+serial_tstc(volatile struct NS16550 *com_port)
-+{
-+ return((UART16550_READ(UART_LSR) & LSR_DR) != 0);
-+}
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/common/dummy.c linux-2.6.16.7.new/arch/mips/boot/compressed/common/dummy.c
---- linux-2.6.16.7/arch/mips/boot/compressed/common/dummy.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/common/dummy.c 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,4 @@
-+int main(void)
-+{
-+ return 0;
-+}
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/common/Makefile linux-2.6.16.7.new/arch/mips/boot/compressed/common/Makefile
---- linux-2.6.16.7/arch/mips/boot/compressed/common/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/common/Makefile 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,14 @@
-+#
-+# arch/mips/boot/compressed/common/Makefile
-+#
-+# This file is subject to the terms and conditions of the GNU General Public
-+# License. See the file "COPYING" in the main directory of this archive
-+# for more details.
-+#
-+# Tom Rini January 2001
-+#
-+# Pete Popov, 2004
-+#
-+
-+lib-y := misc-common.o no_initrd.o dummy.o
-+lib-$(CONFIG_SOC_AU1X00) += au1k_uart.o
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/common/misc-common.c linux-2.6.16.7.new/arch/mips/boot/compressed/common/misc-common.c
---- linux-2.6.16.7/arch/mips/boot/compressed/common/misc-common.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/common/misc-common.c 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,434 @@
-+/*
-+ * arch/mips/boot/compressed/common/misc-common.c
-+ *
-+ * Misc. bootloader code (almost) all platforms can use
-+ *
-+ * Author: Johnnie Peters <jpeters@mvista.com>
-+ * Editor: Tom Rini <trini@mvista.com>
-+ *
-+ * Derived from arch/ppc/boot/prep/misc.c
-+ *
-+ * Ported by Pete Popov <ppopov@mvista.com> to
-+ * support mips board(s). I also got rid of the vga console
-+ * code.
-+ *
-+ * Copyright 2000-2001 MontaVista Software Inc.
-+ *
-+ * Ported to MIPS 2.6 by Pete Popov, <ppopov@embeddedalley.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <stdarg.h> /* for va_ bits */
-+#include <linux/config.h>
-+#include <linux/string.h>
-+#include <linux/zlib.h>
-+
-+extern char *avail_ram;
-+extern char *end_avail;
-+extern char _end[];
-+
-+void puts(const char *);
-+void putc(const char c);
-+void puthex(unsigned long val);
-+void _bcopy(char *src, char *dst, int len);
-+void gunzip(void *, int, unsigned char *, int *);
-+static int _cvt(unsigned long val, char *buf, long radix, char *digits);
-+
-+void _vprintk(void(*)(const char), const char *, va_list ap);
-+
-+struct NS16550 *com_port;
-+
-+int serial_tstc(volatile struct NS16550 *);
-+unsigned char serial_getc(volatile struct NS16550 *);
-+void serial_putc(volatile struct NS16550 *, unsigned char);
-+
-+void pause(void)
-+{
-+ puts("pause\n");
-+}
-+
-+void exit(void)
-+{
-+ puts("exit\n");
-+ while(1);
-+}
-+
-+int tstc(void)
-+{
-+ return (serial_tstc(com_port));
-+}
-+
-+int getc(void)
-+{
-+ while (1) {
-+ if (serial_tstc(com_port))
-+ return (serial_getc(com_port));
-+ }
-+}
-+
-+void
-+putc(const char c)
-+{
-+ serial_putc(com_port, c);
-+ if ( c == '\n' )
-+ serial_putc(com_port, '\r');
-+}
-+
-+void puts(const char *s)
-+{
-+ char c;
-+ while ( ( c = *s++ ) != '\0' ) {
-+ serial_putc(com_port, c);
-+ if ( c == '\n' ) serial_putc(com_port, '\r');
-+ }
-+}
-+
-+void error(char *x)
-+{
-+ puts("\n\n");
-+ puts(x);
-+ puts("\n\n -- System halted");
-+
-+ while(1); /* Halt */
-+}
-+
-+static void *zalloc(unsigned size)
-+{
-+ void *p = avail_ram;
-+
-+ size = (size + 7) & -8;
-+ avail_ram += size;
-+ if (avail_ram > end_avail) {
-+ puts("oops... out of memory\n");
-+ pause();
-+ }
-+ return p;
-+}
-+
-+
-+#define HEAD_CRC 2
-+#define EXTRA_FIELD 4
-+#define ORIG_NAME 8
-+#define COMMENT 0x10
-+#define RESERVED 0xe0
-+
-+#define DEFLATED 8
-+
-+void gunzip(void *dst, int dstlen, unsigned char *src, int *lenp)
-+{
-+ z_stream s;
-+ int r, i, flags;
-+
-+ /* skip header */
-+ i = 10;
-+ flags = src[3];
-+ if (src[2] != Z_DEFLATED || (flags & RESERVED) != 0) {
-+ puts("bad gzipped data\n");
-+ exit();
-+ }
-+ if ((flags & EXTRA_FIELD) != 0)
-+ i = 12 + src[10] + (src[11] << 8);
-+ if ((flags & ORIG_NAME) != 0)
-+ while (src[i++] != 0)
-+ ;
-+ if ((flags & COMMENT) != 0)
-+ while (src[i++] != 0)
-+ ;
-+ if ((flags & HEAD_CRC) != 0)
-+ i += 2;
-+ if (i >= *lenp) {
-+ puts("gunzip: ran out of data in header\n");
-+ exit();
-+ }
-+
-+ /* Initialize ourself. */
-+ s.workspace = zalloc(zlib_inflate_workspacesize());
-+ r = zlib_inflateInit2(&s, -MAX_WBITS);
-+ if (r != Z_OK) {
-+ puts("zlib_inflateInit2 returned "); puthex(r); puts("\n");
-+ exit();
-+ }
-+ s.next_in = src + i;
-+ s.avail_in = *lenp - i;
-+ s.next_out = dst;
-+ s.avail_out = dstlen;
-+ r = zlib_inflate(&s, Z_FINISH);
-+ if (r != Z_OK && r != Z_STREAM_END) {
-+ puts("inflate returned "); puthex(r); puts("\n");
-+ exit();
-+ }
-+ *lenp = s.next_out - (unsigned char *) dst;
-+ zlib_inflateEnd(&s);
-+}
-+
-+void
-+puthex(unsigned long val)
-+{
-+
-+ unsigned char buf[10];
-+ int i;
-+ for (i = 7; i >= 0; i--)
-+ {
-+ buf[i] = "0123456789ABCDEF"[val & 0x0F];
-+ val >>= 4;
-+ }
-+ buf[8] = '\0';
-+ puts(buf);
-+}
-+
-+#define FALSE 0
-+#define TRUE 1
-+
-+void
-+_printk(char const *fmt, ...)
-+{
-+ va_list ap;
-+
-+ va_start(ap, fmt);
-+ _vprintk(putc, fmt, ap);
-+ va_end(ap);
-+ return;
-+}
-+
-+#define is_digit(c) ((c >= '0') && (c <= '9'))
-+
-+void
-+_vprintk(void(*putc)(const char), const char *fmt0, va_list ap)
-+{
-+ char c, sign, *cp = 0;
-+ int left_prec, right_prec, zero_fill, length = 0, pad, pad_on_right;
-+ char buf[32];
-+ long val;
-+ while ((c = *fmt0++))
-+ {
-+ if (c == '%')
-+ {
-+ c = *fmt0++;
-+ left_prec = right_prec = pad_on_right = 0;
-+ if (c == '-')
-+ {
-+ c = *fmt0++;
-+ pad_on_right++;
-+ }
-+ if (c == '0')
-+ {
-+ zero_fill = TRUE;
-+ c = *fmt0++;
-+ } else
-+ {
-+ zero_fill = FALSE;
-+ }
-+ while (is_digit(c))
-+ {
-+ left_prec = (left_prec * 10) + (c - '0');
-+ c = *fmt0++;
-+ }
-+ if (c == '.')
-+ {
-+ c = *fmt0++;
-+ zero_fill++;
-+ while (is_digit(c))
-+ {
-+ right_prec = (right_prec * 10) + (c - '0');
-+ c = *fmt0++;
-+ }
-+ } else
-+ {
-+ right_prec = left_prec;
-+ }
-+ sign = '\0';
-+ switch (c)
-+ {
-+ case 'd':
-+ case 'x':
-+ case 'X':
-+ val = va_arg(ap, long);
-+ switch (c)
-+ {
-+ case 'd':
-+ if (val < 0)
-+ {
-+ sign = '-';
-+ val = -val;
-+ }
-+ length = _cvt(val, buf, 10, "0123456789");
-+ break;
-+ case 'x':
-+ length = _cvt(val, buf, 16, "0123456789abcdef");
-+ break;
-+ case 'X':
-+ length = _cvt(val, buf, 16, "0123456789ABCDEF");
-+ break;
-+ }
-+ cp = buf;
-+ break;
-+ case 's':
-+ cp = va_arg(ap, char *);
-+ length = strlen(cp);
-+ break;
-+ case 'c':
-+ c = va_arg(ap, long /*char*/);
-+ (*putc)(c);
-+ continue;
-+ default:
-+ (*putc)('?');
-+ }
-+ pad = left_prec - length;
-+ if (sign != '\0')
-+ {
-+ pad--;
-+ }
-+ if (zero_fill)
-+ {
-+ c = '0';
-+ if (sign != '\0')
-+ {
-+ (*putc)(sign);
-+ sign = '\0';
-+ }
-+ } else
-+ {
-+ c = ' ';
-+ }
-+ if (!pad_on_right)
-+ {
-+ while (pad-- > 0)
-+ {
-+ (*putc)(c);
-+ }
-+ }
-+ if (sign != '\0')
-+ {
-+ (*putc)(sign);
-+ }
-+ while (length-- > 0)
-+ {
-+ (*putc)(c = *cp++);
-+ if (c == '\n')
-+ {
-+ (*putc)('\r');
-+ }
-+ }
-+ if (pad_on_right)
-+ {
-+ while (pad-- > 0)
-+ {
-+ (*putc)(c);
-+ }
-+ }
-+ } else
-+ {
-+ (*putc)(c);
-+ if (c == '\n')
-+ {
-+ (*putc)('\r');
-+ }
-+ }
-+ }
-+}
-+
-+int
-+_cvt(unsigned long val, char *buf, long radix, char *digits)
-+{
-+ char temp[80];
-+ char *cp = temp;
-+ int length = 0;
-+ if (val == 0)
-+ { /* Special case */
-+ *cp++ = '0';
-+ } else
-+ while (val)
-+ {
-+ *cp++ = digits[val % radix];
-+ val /= radix;
-+ }
-+ while (cp != temp)
-+ {
-+ *buf++ = *--cp;
-+ length++;
-+ }
-+ *buf = '\0';
-+ return (length);
-+}
-+
-+void
-+_dump_buf_with_offset(unsigned char *p, int s, unsigned char *base)
-+{
-+ int i, c;
-+ if ((unsigned int)s > (unsigned int)p)
-+ {
-+ s = (unsigned int)s - (unsigned int)p;
-+ }
-+ while (s > 0)
-+ {
-+ if (base)
-+ {
-+ _printk("%06X: ", (int)p - (int)base);
-+ } else
-+ {
-+ _printk("%06X: ", p);
-+ }
-+ for (i = 0; i < 16; i++)
-+ {
-+ if (i < s)
-+ {
-+ _printk("%02X", p[i] & 0xFF);
-+ } else
-+ {
-+ _printk(" ");
-+ }
-+ if ((i % 2) == 1) _printk(" ");
-+ if ((i % 8) == 7) _printk(" ");
-+ }
-+ _printk(" |");
-+ for (i = 0; i < 16; i++)
-+ {
-+ if (i < s)
-+ {
-+ c = p[i] & 0xFF;
-+ if ((c < 0x20) || (c >= 0x7F)) c = '.';
-+ } else
-+ {
-+ c = ' ';
-+ }
-+ _printk("%c", c);
-+ }
-+ _printk("|\n");
-+ s -= 16;
-+ p += 16;
-+ }
-+}
-+
-+void
-+_dump_buf(unsigned char *p, int s)
-+{
-+ _printk("\n");
-+ _dump_buf_with_offset(p, s, 0);
-+}
-+
-+/*
-+ * Local variables:
-+ * c-indent-level: 8
-+ * c-basic-offset: 8
-+ * tab-width: 8
-+ * End:
-+ */
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/common/misc-simple.c linux-2.6.16.7.new/arch/mips/boot/compressed/common/misc-simple.c
---- linux-2.6.16.7/arch/mips/boot/compressed/common/misc-simple.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/common/misc-simple.c 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,122 @@
-+/*
-+ * arch/mips/zboot/common/misc-simple.c
-+ *
-+ * Misc. bootloader code for many machines. This assumes you have are using
-+ * a 6xx/7xx/74xx CPU in your machine. This assumes the chunk of memory
-+ * below 8MB is free. Finally, it assumes you have a NS16550-style uart for
-+ * your serial console. If a machine meets these requirements, it can quite
-+ * likely use this code during boot.
-+ *
-+ * Author: Matt Porter <mporter@mvista.com>
-+ * Derived from arch/ppc/boot/prep/misc.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 as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/elf.h>
-+#include <linux/config.h>
-+
-+#include <asm/page.h>
-+
-+#include "linux/zlib.h"
-+
-+extern struct NS16550 *com_port;
-+
-+char *avail_ram;
-+char *end_avail;
-+extern char _end[];
-+char *zimage_start;
-+
-+#ifdef CONFIG_CMDLINE
-+#define CMDLINE CONFIG_CMDLINE
-+#else
-+#define CMDLINE ""
-+#endif
-+char cmd_preset[] = CMDLINE;
-+char cmd_buf[256];
-+char *cmd_line = cmd_buf;
-+
-+/* The linker tells us where the image is.
-+*/
-+extern unsigned char __image_begin, __image_end;
-+extern unsigned char __ramdisk_begin, __ramdisk_end;
-+unsigned long initrd_size;
-+
-+extern void puts(const char *);
-+extern void putc(const char c);
-+extern void puthex(unsigned long val);
-+extern void *memcpy(void * __dest, __const void * __src,
-+ __kernel_size_t __n);
-+extern void gunzip(void *, int, unsigned char *, int *);
-+extern void udelay(long delay);
-+extern int tstc(void);
-+extern int getc(void);
-+extern volatile struct NS16550 *serial_init(int chan);
-+
-+void
-+decompress_kernel(unsigned long load_addr, int num_words,
-+ unsigned long cksum, unsigned long *sp)
-+{
-+ extern unsigned long start;
-+ int zimage_size;
-+
-+ com_port = (struct NS16550 *)serial_init(0);
-+
-+ initrd_size = (unsigned long)(&__ramdisk_end) -
-+ (unsigned long)(&__ramdisk_begin);
-+
-+ /*
-+ * Reveal where we were loaded at and where we
-+ * were relocated to.
-+ */
-+ puts("loaded at: "); puthex(load_addr);
-+ puts(" "); puthex((unsigned long)(load_addr + (4*num_words))); puts("\n");
-+ if ( (unsigned long)load_addr != (unsigned long)&start )
-+ {
-+ puts("relocated to: "); puthex((unsigned long)&start);
-+ puts(" ");
-+ puthex((unsigned long)((unsigned long)&start + (4*num_words)));
-+ puts("\n");
-+ }
-+
-+ /*
-+ * We link ourself to an arbitrary low address. When we run, we
-+ * relocate outself to that address. __image_being points to
-+ * the part of the image where the zImage is. -- Tom
-+ */
-+ zimage_start = (char *)(unsigned long)(&__image_begin);
-+ zimage_size = (unsigned long)(&__image_end) -
-+ (unsigned long)(&__image_begin);
-+
-+ /*
-+ * The zImage and initrd will be between start and _end, so they've
-+ * already been moved once. We're good to go now. -- Tom
-+ */
-+ puts("zimage at: "); puthex((unsigned long)zimage_start);
-+ puts(" "); puthex((unsigned long)(zimage_size+zimage_start));
-+ puts("\n");
-+
-+ if ( initrd_size ) {
-+ puts("initrd at: ");
-+ puthex((unsigned long)(&__ramdisk_begin));
-+ puts(" "); puthex((unsigned long)(&__ramdisk_end));puts("\n");
-+ }
-+
-+ /* assume the chunk below 8M is free */
-+ avail_ram = (char *)AVAIL_RAM_START;
-+ end_avail = (char *)AVAIL_RAM_END;
-+
-+ /* Display standard Linux/MIPS boot prompt for kernel args */
-+ puts("Uncompressing Linux at load address ");
-+ puthex(LOADADDR);
-+ puts("\n");
-+ /* I don't like this hard coded gunzip size (fixme) */
-+ gunzip((void *)LOADADDR, 0x400000, zimage_start, &zimage_size);
-+ puts("Now booting the kernel\n");
-+}
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/common/no_initrd.c linux-2.6.16.7.new/arch/mips/boot/compressed/common/no_initrd.c
---- linux-2.6.16.7/arch/mips/boot/compressed/common/no_initrd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/common/no_initrd.c 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,2 @@
-+char initrd_data[1];
-+int initrd_len = 0;
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/images/Makefile linux-2.6.16.7.new/arch/mips/boot/compressed/images/Makefile
---- linux-2.6.16.7/arch/mips/boot/compressed/images/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/images/Makefile 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,17 @@
-+
-+#
-+# This dir holds all of the images for MIPS machines.
-+# Tom Rini January 2001
-+# Pete Popov 2004
-+
-+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)
-+
-+# Files generated that shall be removed upon make clean
-+clean-files := vmlinux* zImage*
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/include/nonstdio.h linux-2.6.16.7.new/arch/mips/boot/compressed/include/nonstdio.h
---- linux-2.6.16.7/arch/mips/boot/compressed/include/nonstdio.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/include/nonstdio.h 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,18 @@
-+/*
-+ * Copyright (C) Paul Mackerras 1997.
-+ *
-+ * 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.
-+ */
-+typedef int FILE;
-+extern FILE *stdin, *stdout;
-+#define NULL ((void *)0)
-+#define EOF (-1)
-+#define fopen(n, m) NULL
-+#define fflush(f) 0
-+#define fclose(f) 0
-+extern char *fgets();
-+
-+#define perror(s) printf("%s: no files!\n", (s))
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/include/ns16550.h linux-2.6.16.7.new/arch/mips/boot/compressed/include/ns16550.h
---- linux-2.6.16.7/arch/mips/boot/compressed/include/ns16550.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/include/ns16550.h 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,46 @@
-+/*
-+ * NS16550 Serial Port
-+ */
-+
-+/*
-+ * Figure out which file will have the definitons of COMx
-+ */
-+
-+/* Some machines have their uart registers 16 bytes apart. Most don't.
-+ * TODO: Make this work like drivers/char/serial does - Tom */
-+#if !defined(UART_REG_PAD)
-+#define UART_REG_PAD(x)
-+#endif
-+
-+struct NS16550
-+ {
-+ unsigned char rbr; /* 0 */
-+ UART_REG_PAD(rbr)
-+ unsigned char ier; /* 1 */
-+ UART_REG_PAD(ier)
-+ unsigned char fcr; /* 2 */
-+ UART_REG_PAD(fcr)
-+ unsigned char lcr; /* 3 */
-+ UART_REG_PAD(lcr)
-+ unsigned char mcr; /* 4 */
-+ UART_REG_PAD(mcr)
-+ unsigned char lsr; /* 5 */
-+ UART_REG_PAD(lsr)
-+ unsigned char msr; /* 6 */
-+ UART_REG_PAD(msr)
-+ unsigned char scr; /* 7 */
-+ };
-+
-+#define thr rbr
-+#define iir fcr
-+#define dll rbr
-+#define dlm ier
-+
-+#define LSR_DR 0x01 /* Data ready */
-+#define LSR_OE 0x02 /* Overrun */
-+#define LSR_PE 0x04 /* Parity error */
-+#define LSR_FE 0x08 /* Framing error */
-+#define LSR_BI 0x10 /* Break */
-+#define LSR_THRE 0x20 /* Xmit holding register empty */
-+#define LSR_TEMT 0x40 /* Xmitter empty */
-+#define LSR_ERR 0x80 /* Error */
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/include/pb1000_serial.h linux-2.6.16.7.new/arch/mips/boot/compressed/include/pb1000_serial.h
---- linux-2.6.16.7/arch/mips/boot/compressed/include/pb1000_serial.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/include/pb1000_serial.h 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,20 @@
-+/*
-+ * arch/ppc/boot/include/sandpoint_serial.h
-+ *
-+ * Location of the COM ports on Motorola SPS Sandpoint machines
-+ *
-+ * Author: Mark A. Greer
-+ * mgreer@mvista.com
-+ *
-+ * 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 as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ */
-+
-+#define COM1 0xfe0003f8
-+#define COM2 0xfe0002f8
-+#define COM3 0x00000000 /* No COM3 */
-+#define COM4 0x00000000 /* No COM4 */
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/ld.script linux-2.6.16.7.new/arch/mips/boot/compressed/ld.script
---- linux-2.6.16.7/arch/mips/boot/compressed/ld.script 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/ld.script 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,151 @@
-+OUTPUT_ARCH(mips)
-+ENTRY(start)
-+SECTIONS
-+{
-+ /* Read-only sections, merged into text segment: */
-+ /* . = 0x81000000; */
-+ .init : { *(.init) } =0
-+ .text :
-+ {
-+ _ftext = . ;
-+ *(.text)
-+ *(.rodata) *(.rodata.*)
-+ *(.rodata1)
-+ /* .gnu.warning sections are handled specially by elf32.em. */
-+ *(.gnu.warning)
-+ } =0
-+ .kstrtab : { *(.kstrtab) }
-+
-+ . = ALIGN(16); /* Exception table */
-+ __start___ex_table = .;
-+ __ex_table : { *(__ex_table) }
-+ __stop___ex_table = .;
-+
-+ __start___dbe_table = .; /* Exception table for data bus errors */
-+ __dbe_table : { *(__dbe_table) }
-+ __stop___dbe_table = .;
-+
-+ __start___ksymtab = .; /* Kernel symbol table */
-+ __ksymtab : { *(__ksymtab) }
-+ __stop___ksymtab = .;
-+
-+ _etext = .;
-+
-+ . = ALIGN(8192);
-+ .data.init_task : { *(.data.init_task) }
-+
-+ /* Startup code */
-+ . = ALIGN(4096);
-+ __init_begin = .;
-+ .text.init : { *(.text.init) }
-+ .data.init : { *(.data.init) }
-+ . = ALIGN(16);
-+ __setup_start = .;
-+ .setup.init : { *(.setup.init) }
-+ __setup_end = .;
-+ __initcall_start = .;
-+ .initcall.init : { *(.initcall.init) }
-+ __initcall_end = .;
-+ . = ALIGN(4096); /* Align double page for init_task_union */
-+ __init_end = .;
-+
-+ . = ALIGN(4096);
-+ .data.page_aligned : { *(.data.idt) }
-+
-+ . = ALIGN(32);
-+ .data.cacheline_aligned : { *(.data.cacheline_aligned) }
-+
-+ .fini : { *(.fini) } =0
-+ .reginfo : { *(.reginfo) }
-+ /* Adjust the address for the data segment. We want to adjust up to
-+ the same address within the page on the next page up. It would
-+ be more correct to do this:
-+ . = .;
-+ The current expression does not correctly handle the case of a
-+ text segment ending precisely at the end of a page; it causes the
-+ data segment to skip a page. The above expression does not have
-+ this problem, but it will currently (2/95) cause BFD to allocate
-+ a single segment, combining both text and data, for this case.
-+ This will prevent the text segment from being shared among
-+ multiple executions of the program; I think that is more
-+ important than losing a page of the virtual address space (note
-+ that no actual memory is lost; the page which is skipped can not
-+ be referenced). */
-+ . = .;
-+ .data :
-+ {
-+ _fdata = . ;
-+ *(.data)
-+
-+ /* Put the compressed image here, so bss is on the end. */
-+ __image_begin = .;
-+ *(.image)
-+ __image_end = .;
-+ /* Align the initial ramdisk image (INITRD) on page boundaries. */
-+ . = ALIGN(4096);
-+ __ramdisk_begin = .;
-+ *(.initrd)
-+ __ramdisk_end = .;
-+ . = ALIGN(4096);
-+
-+ CONSTRUCTORS
-+ }
-+ .data1 : { *(.data1) }
-+ _gp = . + 0x8000;
-+ .lit8 : { *(.lit8) }
-+ .lit4 : { *(.lit4) }
-+ .ctors : { *(.ctors) }
-+ .dtors : { *(.dtors) }
-+ .got : { *(.got.plt) *(.got) }
-+ .dynamic : { *(.dynamic) }
-+ /* 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 : { *(.sdata) }
-+ . = ALIGN(4);
-+ _edata = .;
-+ PROVIDE (edata = .);
-+
-+ __bss_start = .;
-+ _fbss = .;
-+ .sbss : { *(.sbss) *(.scommon) }
-+ .bss :
-+ {
-+ *(.dynbss)
-+ *(.bss)
-+ *(COMMON)
-+ . = ALIGN(4);
-+ _end = . ;
-+ PROVIDE (end = .);
-+ }
-+
-+ /* Sections to be discarded */
-+ /DISCARD/ :
-+ {
-+ *(.text.exit)
-+ *(.data.exit)
-+ *(.exitcall.exit)
-+ }
-+
-+ /* This is the MIPS specific mdebug section. */
-+ .mdebug : { *(.mdebug) }
-+ /* These are needed for ELF backends which have not yet been
-+ converted to the new style linker. */
-+ .stab 0 : { *(.stab) }
-+ .stabstr 0 : { *(.stabstr) }
-+ /* DWARF debug sections.
-+ Symbols in the .debug DWARF section are relative to the beginning of the
-+ section so we begin .debug at 0. It's not clear yet what needs to happen
-+ for the others. */
-+ .debug 0 : { *(.debug) }
-+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
-+ .debug_aranges 0 : { *(.debug_aranges) }
-+ .debug_pubnames 0 : { *(.debug_pubnames) }
-+ .debug_sfnames 0 : { *(.debug_sfnames) }
-+ .line 0 : { *(.line) }
-+ /* These must appear regardless of . */
-+ .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
-+ .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-+ .comment : { *(.comment) }
-+ .note : { *(.note) }
-+}
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/lib/Makefile linux-2.6.16.7.new/arch/mips/boot/compressed/lib/Makefile
---- linux-2.6.16.7/arch/mips/boot/compressed/lib/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/lib/Makefile 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,11 @@
-+
-+#
-+# Makefile for some libs needed by zImage.
-+#
-+
-+lib-y := $(addprefix ../../../../../lib/zlib_inflate/, \
-+ infblock.o infcodes.o inffast.o inflate.o inftrees.o infutil.o) \
-+ $(addprefix ../../../../../lib/, ctype.o string.o) \
-+ $(addprefix ../../../../../arch/mips/lib/, memcpy.o) \
-+
-+
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/Makefile linux-2.6.16.7.new/arch/mips/boot/compressed/Makefile
---- linux-2.6.16.7/arch/mips/boot/compressed/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/Makefile 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,32 @@
-+
-+#
-+# arch/mips/boot/compressed/Makefile
-+#
-+# This file is subject to the terms and conditions of the GNU General Public
-+# License. See the file "COPYING" in the main directory of this archive
-+# for more details.
-+#
-+# Copyright (C) 1994 by Linus Torvalds
-+# Adapted for PowerPC by Gary Thomas
-+# modified by Cort (cort@cs.nmt.edu)
-+#
-+# Ported to MIPS by Pete Popov, ppopov@embeddedalley.com
-+#
-+
-+boot := arch/mips/boot
-+compressed := arch/mips/boot/compressed
-+
-+CFLAGS += -fno-builtin -D__BOOTER__ -I$(compressed)/include
-+
-+BOOT_TARGETS = zImage zImage.flash
-+
-+bootdir-$(CONFIG_SOC_AU1X00) := au1xxx
-+subdir-y := common lib images
-+
-+.PHONY: $(BOOT_TARGETS) $(bootdir-y)
-+
-+$(BOOT_TARGETS): $(bootdir-y)
-+
-+$(bootdir-y): $(addprefix $(obj)/,$(subdir-y)) \
-+ $(addprefix $(obj)/,$(hostprogs-y))
-+ $(Q)$(MAKE) $(build)=$(obj)/$@ $(MAKECMDGOALS)
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/utils/entry linux-2.6.16.7.new/arch/mips/boot/compressed/utils/entry
---- linux-2.6.16.7/arch/mips/boot/compressed/utils/entry 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/utils/entry 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,12 @@
-+#!/bin/sh
-+
-+# grab the kernel_entry address from the vmlinux elf image
-+entry=`$1 $2 | grep kernel_entry`
-+
-+fs=`echo $entry | grep ffffffff` # check toolchain output
-+
-+if [ -n "$fs" ]; then
-+ echo "0x"`$1 $2 | grep kernel_entry | cut -c9- | awk '{print $1}'`
-+else
-+ echo "0x"`$1 $2 | grep kernel_entry | cut -c1- | awk '{print $1}'`
-+fi
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/utils/offset linux-2.6.16.7.new/arch/mips/boot/compressed/utils/offset
---- linux-2.6.16.7/arch/mips/boot/compressed/utils/offset 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/utils/offset 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,3 @@
-+#!/bin/sh
-+
-+echo "0x"`$1 -h $2 | grep $3 | grep -v zvmlinux| awk '{print $6}'`
-diff -urN linux-2.6.16.7/arch/mips/boot/compressed/utils/size linux-2.6.16.7.new/arch/mips/boot/compressed/utils/size
---- linux-2.6.16.7/arch/mips/boot/compressed/utils/size 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/boot/compressed/utils/size 2006-05-04 23:08:18.000000000 +0200
-@@ -0,0 +1,4 @@
-+#!/bin/sh
-+
-+OFFSET=`$1 -h $2 | grep $3 | grep -v zvmlinux | awk '{print $3}'`
-+echo "0x"$OFFSET
-diff -urN linux-2.6.16.7/arch/mips/boot/Makefile linux-2.6.16.7.new/arch/mips/boot/Makefile
---- linux-2.6.16.7/arch/mips/boot/Makefile 2006-04-17 23:53:25.000000000 +0200
-+++ linux-2.6.16.7.new/arch/mips/boot/Makefile 2006-05-04 23:08:18.000000000 +0200
-@@ -16,6 +16,7 @@
- E2EFLAGS =
- endif
-
-+
- #
- # Drop some uninteresting sections in the kernel.
- # This is only relevant for ELF kernels but doesn't hurt a.out
-@@ -25,7 +26,10 @@
-
- VMLINUX = vmlinux
-
--all: vmlinux.ecoff vmlinux.srec addinitrd
-+ZBOOT_TARGETS = zImage zImage.flash
-+bootdir-y := compressed
-+
-+all: vmlinux.ecoff vmlinux.srec addinitrd zImage
-
- vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX)
- $(obj)/elf2ecoff $(VMLINUX) vmlinux.ecoff $(E2EFLAGS)
-@@ -51,3 +55,11 @@
- vmlinux.bin \
- vmlinux.ecoff \
- vmlinux.srec
-+
-+.PHONY: $(ZBOOT_TARGETS) $(bootdir-y)
-+
-+$(ZBOOT_TARGETS): $(bootdir-y)
-+
-+$(bootdir-y): $(addprefix $(obj)/,$(subdir-y)) \
-+ $(addprefix $(obj)/,$(hostprogs-y))
-+ $(Q)$(MAKE) $(build)=$(obj)/$@ $(MAKECMDGOALS)
-diff -urN linux-2.6.16.7/arch/mips/Makefile linux-2.6.16.7.new/arch/mips/Makefile
---- linux-2.6.16.7/arch/mips/Makefile 2006-04-17 23:53:25.000000000 +0200
-+++ linux-2.6.16.7.new/arch/mips/Makefile 2006-05-04 23:09:44.000000000 +0200
-@@ -831,6 +831,10 @@
- all: vmlinux.ecoff
- endif
-
-+ifdef CONFIG_MIPS_MTX1
-+all: vmlinux.srec zImage zImage.flash
-+endif
-+
- vmlinux.bin: $(vmlinux-32)
- +@$(call makeboot,$@)
-
-@@ -840,6 +844,12 @@
- vmlinux.srec: $(vmlinux-32)
- +@$(call makeboot,$@)
-
-+zImage: vmlinux
-+ +@$(call makeboot,$@)
-+
-+zImage.flash: vmlinux
-+ +@$(call makeboot,$@)
-+
- CLEAN_FILES += vmlinux.ecoff \
- vmlinux.srec \
- vmlinux.rm200.tmp \
-@@ -848,6 +858,7 @@
- archclean:
- @$(MAKE) $(clean)=arch/mips/boot
- @$(MAKE) $(clean)=arch/mips/lasat
-+ @$(MAKE) $(clean)=arch/mips/boot/compressed
-
- CLEAN_FILES += vmlinux.32 \
- vmlinux.64 \
diff --git a/openwrt/target/linux/au1000-2.6/patches/004-mtx1_watchdog.patch b/openwrt/target/linux/au1000-2.6/patches/004-mtx1_watchdog.patch
deleted file mode 100644
index c7e329b295..0000000000
--- a/openwrt/target/linux/au1000-2.6/patches/004-mtx1_watchdog.patch
+++ /dev/null
@@ -1,279 +0,0 @@
-diff -urN linux-2.6.16.7/drivers/char/watchdog/Kconfig linux-2.6.16.7.new/drivers/char/watchdog/Kconfig
---- linux-2.6.16.7/drivers/char/watchdog/Kconfig 2006-04-17 23:53:25.000000000 +0200
-+++ linux-2.6.16.7.new/drivers/char/watchdog/Kconfig 2006-04-22 23:23:53.000000000 +0200
-@@ -460,6 +460,14 @@
- timer expired and no process has written to /dev/watchdog during
- that time.
-
-+config MTX1_WATCHDOG
-+ tristate "MTX-1 Hardware Watchdog"
-+ depends on WATCHDOG && MIPS_MTX1
-+ help
-+ Hardware driver for the AccessCube MTX-1 watchdog. This is a
-+ watchdog timer that will reboot the machine after a 100 seconds
-+ timer expired.
-+
- # S390 Architecture
-
- config ZVM_WATCHDOG
-diff -urN linux-2.6.16.7/drivers/char/watchdog/Makefile linux-2.6.16.7.new/drivers/char/watchdog/Makefile
---- linux-2.6.16.7/drivers/char/watchdog/Makefile 2006-04-17 23:53:25.000000000 +0200
-+++ linux-2.6.16.7.new/drivers/char/watchdog/Makefile 2006-04-22 23:21:18.000000000 +0200
-@@ -65,6 +65,7 @@
-
- # MIPS Architecture
- obj-$(CONFIG_INDYDOG) += indydog.o
-+obj-$(CONFIG_MTX1_WATCHDOG) += mtx-1_watchdog.o
-
- # S390 Architecture
-
-diff -urN linux-2.6.16.7/drivers/char/watchdog/mtx-1_watchdog.c linux-2.6.16.7.new/drivers/char/watchdog/mtx-1_watchdog.c
---- linux-2.6.16.7/drivers/char/watchdog/mtx-1_watchdog.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/drivers/char/watchdog/mtx-1_watchdog.c 2006-04-22 23:20:53.000000000 +0200
-@@ -0,0 +1,246 @@
-+/*
-+ * Driver for the MTX-1 Watchdog.
-+ *
-+ * (c) Copyright 2005 4G Systems <info@4g-systems.biz>, All Rights Reserved.
-+ * http://www.4g-systems.biz
-+ *
-+ * 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.
-+ *
-+ * Neither Michael Stickel nor 4G Systems admit liability nor provide
-+ * warranty for any of this software. This material is provided
-+ * "AS-IS" and at no charge.
-+ *
-+ * (c) Copyright 2005 4G Systems <info@4g-systems.biz>
-+ *
-+ * Release 0.01.
-+ *
-+ * Author: Michael Stickel michael.stickel@4g-systems.biz
-+ *
-+ *
-+ * The Watchdog is configured to reset the MTX-1
-+ * if it is not triggered for 100 seconds.
-+ * It should not be triggered more often than 1.6 seconds.
-+ *
-+ * A timer triggers the watchdog every 5 seconds, until
-+ * it is opened for the first time. After the first open
-+ * it MUST be triggered every 2..95 seconds.
-+ */
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/version.h>
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/miscdevice.h>
-+#include <linux/watchdog.h>
-+#include <linux/slab.h>
-+#include <linux/init.h>
-+#include <asm/uaccess.h>
-+#include <linux/fs.h>
-+
-+#include <asm/mach-au1x00/au1000.h>
-+
-+#ifndef FALSE
-+# define FALSE (0)
-+#endif
-+
-+#ifndef TRUE
-+# define TRUE (!FALSE)
-+#endif
-+
-+
-+//---------[ Hardware Functions ]-----------------
-+
-+static void mtx1_trigger_wd (void)
-+{
-+ /*
-+ * toggle GPIO2_15
-+ */
-+
-+ u32 tmp = au_readl(GPIO2_DIR);
-+ tmp = (tmp & ~(1<<15)) | ((~tmp) & (1<<15));
-+ au_writel (tmp, GPIO2_DIR);
-+}
-+
-+static void mtx1_enable_wd (void)
-+{
-+ au_writel (au_readl(GPIO2_DIR) | (u32)(1<<15), GPIO2_DIR);
-+}
-+
-+static void mtx1_disable_wd (void)
-+{
-+ au_writel (au_readl(GPIO2_DIR) & ~((u32)(1<<15)), GPIO2_DIR);
-+}
-+
-+
-+//---------[ Timer Functions ]-----------------
-+
-+static struct timer_list wd_trigger_timer;
-+static char timer_is_running = FALSE;
-+
-+static void wd_timer_callback (unsigned long data)
-+{
-+ if (timer_is_running)
-+ mod_timer (&wd_trigger_timer, jiffies + 5 * HZ);
-+ mtx1_trigger_wd();
-+}
-+
-+static void start_wd_timer (void)
-+{
-+ if (!timer_is_running) {
-+ struct timer_list *t = &wd_trigger_timer;
-+
-+ init_timer (t);
-+ t->function = wd_timer_callback;
-+ t->data = (unsigned long)0L;
-+ t->expires = jiffies + 5 * HZ; // 5 seconds.
-+ add_timer (t);
-+ timer_is_running = TRUE;
-+ }
-+}
-+
-+
-+
-+static void stop_wd_timer (void)
-+{
-+ if (timer_is_running) {
-+ del_timer(&wd_trigger_timer);
-+ timer_is_running = FALSE;
-+ }
-+}
-+
-+
-+//---------[ File Functions ]-----------------
-+
-+static char restart_after_close;
-+
-+static int mtx1wd_open (struct inode *inode, struct file *file)
-+{
-+ if (MINOR(inode->i_rdev) != WATCHDOG_MINOR) return -ENODEV;
-+ //MOD_INC_USE_COUNT;
-+
-+ // stop the timer, if it is running. It will not be
-+ // started again, until the module is loaded again.
-+ stop_wd_timer();
-+
-+ // sleep for 2 seconds, to ensure, that the wd is
-+ // not triggered more often than every 2 seconds.
-+ schedule_timeout (2 * HZ);
-+
-+ return 0;
-+}
-+
-+
-+static int mtx1wd_release (struct inode *inode, struct file *file) {
-+ if (MINOR(inode->i_rdev)==WATCHDOG_MINOR) {
-+ }
-+ if (restart_after_close)
-+ start_wd_timer();
-+ //MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+
-+static ssize_t mtx1wd_write (struct file *file, const char *buf, size_t count, loff_t *ppos) {
-+
-+ mtx1_trigger_wd ();
-+
-+ if (count > 0) {
-+ char buffer[10];
-+ int n = (count>9)?9:count;
-+
-+ if (copy_from_user (&buffer, buf, n))
-+ return -EFAULT;
-+ buffer[n]=0;
-+
-+ if (count >= 4 && strncmp("auto", buffer, 4)==0)
-+ restart_after_close = 1;
-+
-+ else if (count >= 6 && strncmp("manual", buffer, 6)==0)
-+ restart_after_close = 0;
-+
-+ return n;
-+ }
-+
-+ return 0;
-+}
-+
-+static ssize_t mtx1wd_read (struct file *file, char *buf, size_t count, loff_t *ppos)
-+{
-+ char * state = restart_after_close ? "auto\n" : "manual\n";
-+ int n = strlen(state)+1;
-+
-+ if (file->f_pos >= n)
-+ return 0;
-+
-+ if (count < n)
-+ return -EINVAL;
-+
-+ if(copy_to_user(buf, state, n))
-+ return -EFAULT;
-+
-+ file->f_pos += n;
-+
-+ return n;
-+}
-+
-+static struct file_operations mtx1wd_fops = {
-+ .owner = THIS_MODULE,
-+ .read = mtx1wd_read,
-+ .write = mtx1wd_write,
-+ .open = mtx1wd_open,
-+ .release = mtx1wd_release
-+};
-+
-+
-+static struct miscdevice mtx1wd_miscdev = {
-+ WATCHDOG_MINOR,
-+ "watchdog",
-+ &mtx1wd_fops
-+};
-+
-+
-+
-+//---------[ Module Functions ]-----------------
-+
-+
-+static int __init init_mtx1_watchdog(void)
-+{
-+ printk("MTX-1 watchdog driver\n");
-+
-+ misc_register(&mtx1wd_miscdev);
-+
-+ restart_after_close = 0;
-+
-+ mtx1_enable_wd ();
-+
-+ //-- trigger it for the first time.
-+ //-- We do not exactly know how long it has not been triggered.
-+ mtx1_trigger_wd ();
-+
-+ // start a timer, that calls mtx1_trigger_wd every 5 seconds.
-+ start_wd_timer();
-+
-+ return 0;
-+}
-+
-+static void __exit exit_mtx1_watchdog(void) {
-+
-+ // stop the timer, if it is running.
-+ stop_wd_timer();
-+
-+ misc_deregister(&mtx1wd_miscdev);
-+
-+ mtx1_disable_wd();
-+}
-+
-+module_init(init_mtx1_watchdog);
-+module_exit(exit_mtx1_watchdog);
-+
-+MODULE_AUTHOR("Michael Stickel");
-+MODULE_DESCRIPTION("Driver for the MTX-1 watchdog");
-+MODULE_LICENSE("GPL");
diff --git a/openwrt/target/linux/au1000-2.6/patches/005-au1000_eth_link_beat.patch b/openwrt/target/linux/au1000-2.6/patches/005-au1000_eth_link_beat.patch
deleted file mode 100644
index 946bd84540..0000000000
--- a/openwrt/target/linux/au1000-2.6/patches/005-au1000_eth_link_beat.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -urN linux-2.6.16.7/drivers/net/au1000_eth.c linux-2.6.16.7.new/drivers/net/au1000_eth.c
---- linux-2.6.16.7/drivers/net/au1000_eth.c 2006-04-17 23:53:25.000000000 +0200
-+++ linux-2.6.16.7.new/drivers/net/au1000_eth.c 2006-04-23 01:42:48.000000000 +0200
-@@ -12,6 +12,9 @@
- * Author: MontaVista Software, Inc.
- * ppopov@mvista.com or source@mvista.com
- *
-+ * Bjoern Riemer 2004
-+ * riemer@fokus.fraunhofer.de or riemer@riemer-nt.de
-+ * // fixed the link beat detection with ioctls (SIOCGMIIPHY)
- * ########################################################################
- *
- * This program is free software; you can distribute it and/or modify it
-@@ -1672,6 +1675,10 @@
- aup->phy_ops->phy_status(dev, aup->phy_addr, &link, &speed);
- control = MAC_DISABLE_RX_OWN | MAC_RX_ENABLE | MAC_TX_ENABLE;
- #ifndef CONFIG_CPU_LITTLE_ENDIAN
-+ /*riemer: fix for startup without cable */
-+ if (!link)
-+ dev->flags &= ~IFF_RUNNING;
-+
- control |= MAC_BIG_ENDIAN;
- #endif
- if (link && (dev->if_port == IF_PORT_100BASEFX)) {
diff --git a/openwrt/target/linux/au1000-2.6/patches/006-mtx1_system_button.patch b/openwrt/target/linux/au1000-2.6/patches/006-mtx1_system_button.patch
deleted file mode 100644
index 511df2c8da..0000000000
--- a/openwrt/target/linux/au1000-2.6/patches/006-mtx1_system_button.patch
+++ /dev/null
@@ -1,241 +0,0 @@
-diff -urN linux-2.6.16.7/arch/mips/au1000/mtx-1/irqmap.c linux-2.6.16.7.new/arch/mips/au1000/mtx-1/irqmap.c
---- linux-2.6.16.7/arch/mips/au1000/mtx-1/irqmap.c 2006-04-17 23:53:25.000000000 +0200
-+++ linux-2.6.16.7.new/arch/mips/au1000/mtx-1/irqmap.c 2006-04-23 11:54:31.000000000 +0200
-@@ -64,6 +64,7 @@
- { AU1500_GPIO_202, INTC_INT_LOW_LEVEL, 0 },
- { AU1500_GPIO_203, INTC_INT_LOW_LEVEL, 0 },
- { AU1500_GPIO_205, INTC_INT_LOW_LEVEL, 0 },
-+ { AU1500_GPIO_207, INTC_INT_RISE_AND_FALL_EDGE, 0 },
- };
-
- int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
-diff -urN linux-2.6.16.7/arch/mips/au1000/mtx-1/Makefile linux-2.6.16.7.new/arch/mips/au1000/mtx-1/Makefile
---- linux-2.6.16.7/arch/mips/au1000/mtx-1/Makefile 2006-04-17 23:53:25.000000000 +0200
-+++ linux-2.6.16.7.new/arch/mips/au1000/mtx-1/Makefile 2006-04-23 14:01:36.000000000 +0200
-@@ -8,3 +8,4 @@
- #
-
- lib-y := init.o board_setup.o irqmap.o
-+obj-y := mtx-1_sysbtn.o
-diff -urN linux-2.6.16.7/arch/mips/au1000/mtx-1/mtx-1_sysbtn.c linux-2.6.16.7.new/arch/mips/au1000/mtx-1/mtx-1_sysbtn.c
---- linux-2.6.16.7/arch/mips/au1000/mtx-1/mtx-1_sysbtn.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7.new/arch/mips/au1000/mtx-1/mtx-1_sysbtn.c 2006-04-23 14:01:17.000000000 +0200
-@@ -0,0 +1,218 @@
-+/*
-+ * Driver for the MTX-1 System Button.
-+ *
-+ * (c) Copyright 2005 4G Systems <info@4g-systems.biz>, All Rights Reserved.
-+ * http://www.4g-systems.biz
-+ *
-+ * 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.
-+ *
-+ * Neither Michael Stickel nor 4G Systeme GmbH admit liability nor provide
-+ * warranty for any of this software. This material is provided
-+ * "AS-IS" and at no charge.
-+ *
-+ * (c) Copyright 2005 4G Systems <info@4g-systems.biz>
-+ *
-+ * Release 0.01.
-+ *
-+ * Author: Michael Stickel michael.stickel@4g-systems.biz
-+ *
-+ *
-+ * After the module is loaded there is a device /dev/misc/btn
-+ * that can be read. It returns one char '1' if the button
-+ * has been pressed an '0' if it has been released.
-+ */
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/version.h>
-+#include <linux/types.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/poll.h>
-+#include <linux/sched.h>
-+#include <linux/miscdevice.h>
-+#include <linux/slab.h>
-+#include <linux/init.h>
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
-+
-+#include <asm/uaccess.h>
-+
-+#include <asm/mach-au1x00/au1000.h>
-+
-+
-+#ifndef FALSE
-+# define FALSE (0)
-+#endif
-+
-+#ifndef TRUE
-+# define TRUE (!FALSE)
-+#endif
-+
-+
-+//---------[ declarations ]-----------------
-+
-+
-+static DECLARE_WAIT_QUEUE_HEAD(mtx1btn_wait_queue);
-+static char state_changed;
-+static char last_value;
-+static char is_inuse;
-+
-+
-+//---------[ Hardware Functions ]-----------------
-+
-+// The MTX-1 Button is attached to GPIO207.
-+#define MTX1_GPIO2_SYSBTN (7)
-+#define MTX1_SYSBTN_IRQ (AU1500_GPIO_207)
-+
-+
-+static char mtx1_getbtn (int btnno)
-+{
-+ if (btnno==0) {
-+ return (au_readl(GPIO2_PINSTATE) & (1<<MTX1_GPIO2_SYSBTN)) ? 0 : 1;
-+ }
-+ return 0;
-+}
-+
-+static void mtx1_initbuttons (void)
-+{
-+ au_writel (au_readl(GPIO2_DIR) & ~(1<<MTX1_GPIO2_SYSBTN), GPIO2_DIR);
-+}
-+
-+
-+//---------[ Interrupt handling ]-----------------
-+
-+
-+static void mtx1_btn_interrupt (int irq, void *private, struct pt_regs *regs)
-+{
-+ char value = mtx1_getbtn(0);
-+ if (last_value != value)
-+ {
-+ last_value = value;
-+ state_changed = 1;
-+ wake_up (&mtx1btn_wait_queue);
-+ }
-+// kill_fasync(&async_queue, SIGIO, POLL_OUT);
-+}
-+
-+
-+static int mtx1_btn_startirq (void)
-+{
-+ if (!request_irq (MTX1_SYSBTN_IRQ, mtx1_btn_interrupt, 0 /* | SA_INTERRUPT */, "mtx1btn", (void *)&state_changed)) {
-+ return 0;
-+ }
-+ return -1;
-+}
-+
-+static int mtx1_btn_stopirq (void)
-+{
-+ free_irq(MTX1_SYSBTN_IRQ, (void *)&state_changed);
-+ return 0;
-+}
-+
-+
-+
-+//---------[ File Functions ]-----------------
-+
-+
-+static int mtx1sysbtn_minor = -1;
-+
-+
-+static int mtx1sysbtn_open (struct inode *inode, struct file *file)
-+{
-+ if (MINOR(inode->i_rdev)!=mtx1sysbtn_minor) return -ENODEV;
-+ if (is_inuse) return -EBUSY;
-+ is_inuse=1;
-+ last_value = mtx1_getbtn(0);
-+ state_changed = 0;
-+ return 0;
-+}
-+
-+
-+static int mtx1sysbtn_release (struct inode *inode, struct file *file) {
-+ if (MINOR(inode->i_rdev)==mtx1sysbtn_minor) {
-+ is_inuse=0;
-+ }
-+ return 0;
-+}
-+
-+
-+static ssize_t mtx1sysbtn_read (struct file *file, char *buf, size_t count, loff_t *ppos)
-+{
-+ if (count < 1)
-+ return -EINVAL;
-+ if (!state_changed)
-+ interruptible_sleep_on (&mtx1btn_wait_queue);
-+ state_changed = 0;
-+ char c = last_value ? '1' : '0'; /* mtx1_getbtn(0) */
-+ if(copy_to_user(buf, &c, 1))
-+ return -EFAULT;
-+ return 1;
-+}
-+
-+
-+static unsigned int mtx1sysbtn_poll (struct file *file, poll_table * wait)
-+{
-+ unsigned int mask = 0;
-+
-+ poll_wait (file, &mtx1btn_wait_queue, wait);
-+
-+ if (state_changed) // state changed since last time.
-+ mask |= POLLIN | POLLRDNORM;
-+
-+ return mask;
-+}
-+
-+
-+static struct file_operations mtx1sysbtn_fops = {
-+ .owner = THIS_MODULE,
-+ .read = mtx1sysbtn_read,
-+ .poll = mtx1sysbtn_poll,
-+ .open = mtx1sysbtn_open,
-+ .release = mtx1sysbtn_release
-+};
-+
-+
-+static struct miscdevice mtx1sysbtn_miscdev = {
-+ MISC_DYNAMIC_MINOR /* SYSBTN_MINOR */ ,
-+ "btn",
-+ &mtx1sysbtn_fops
-+};
-+
-+
-+
-+//---------[ Module Functions ]-----------------
-+
-+
-+void __exit exit_mtx1_sysbtn (void)
-+{
-+ is_inuse = 1;
-+ mtx1_btn_stopirq ();
-+ misc_deregister(&mtx1sysbtn_miscdev);
-+}
-+
-+
-+static int __init init_mtx1_sysbtn (void)
-+{
-+ printk("MTX-1 System Button driver\n");
-+ is_inuse = 1;
-+ mtx1_initbuttons ();
-+ if (misc_register (&mtx1sysbtn_miscdev) >= 0) {
-+ mtx1sysbtn_minor = mtx1sysbtn_miscdev.minor;
-+ if (mtx1_btn_startirq () == 0) {
-+ is_inuse=0;
-+ return 0;
-+ }
-+ misc_deregister(&mtx1sysbtn_miscdev);
-+ }
-+ return 1;
-+}
-+
-+module_init(init_mtx1_sysbtn);
-+module_exit(exit_mtx1_sysbtn);
-+
-+MODULE_AUTHOR("Michael Stickel");
-+MODULE_DESCRIPTION("Driver for the MTX-1 system button");
-+MODULE_LICENSE("GPL");
diff --git a/openwrt/target/linux/au1000-2.6/patches/007-mtx1_sio2.patch b/openwrt/target/linux/au1000-2.6/patches/007-mtx1_sio2.patch
deleted file mode 100644
index 34d1005347..0000000000
--- a/openwrt/target/linux/au1000-2.6/patches/007-mtx1_sio2.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- linux-2.6.16.7/arch/mips/au1000/mtx-1/board_setup.c 2006-04-17 23:53:25.000000000 +0200
-+++ linux-2.6.16.7.new/arch/mips/au1000/mtx-1/board_setup.c 2006-04-23 14:35:42.000000000 +0200
-@@ -71,9 +71,7 @@
- #endif
-
- // initialize sys_pinfunc:
-- // disable second ethernet port (SYS_PF_NI2)
-- // set U3/GPIO23 to GPIO23 (SYS_PF_U3)
-- au_writel( SYS_PF_NI2 | SYS_PF_U3, SYS_PINFUNC );
-+ au_writel( SYS_PF_NI2, SYS_PINFUNC );
-
- // initialize GPIO
- au_writel( 0xFFFFFFFF, SYS_TRIOUTCLR );
diff --git a/openwrt/target/linux/au1000-2.6/patches/008-isdel_cardbus.patch b/openwrt/target/linux/au1000-2.6/patches/008-isdel_cardbus.patch
deleted file mode 100644
index 9e54ac1c59..0000000000
--- a/openwrt/target/linux/au1000-2.6/patches/008-isdel_cardbus.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-diff -urN linux-2.6.16.7/arch/mips/au1000/mtx-1/board_setup.c linux-2.6.16.7.new/arch/mips/au1000/mtx-1/board_setup.c
---- linux-2.6.16.7/arch/mips/au1000/mtx-1/board_setup.c 2006-04-23 14:39:21.000000000 +0200
-+++ linux-2.6.16.7.new/arch/mips/au1000/mtx-1/board_setup.c 2006-04-23 14:39:03.000000000 +0200
-@@ -44,6 +44,9 @@
- #include <asm/pgtable.h>
- #include <asm/mach-au1x00/au1000.h>
-
-+extern int (*board_pci_idsel)(unsigned int devsel, int assert);
-+int mtx1_pci_idsel(unsigned int devsel, int assert);
-+
- void board_reset (void)
- {
- /* Hit BCSR.SYSTEM_CONTROL[SW_RST] */
-@@ -77,11 +80,37 @@
- au_writel( 0xFFFFFFFF, SYS_TRIOUTCLR );
- au_writel( 0x00000001, SYS_OUTPUTCLR ); // set M66EN (PCI 66MHz) to OFF
- au_writel( 0x00000008, SYS_OUTPUTSET ); // set PCI CLKRUN# to OFF
-+ au_writel( 0x00000002, SYS_OUTPUTSET ); // set EXT_IO3 ON
- au_writel( 0x00000020, SYS_OUTPUTCLR ); // set eth PHY TX_ER to OFF
-
- // enable LED and set it to green
- au_writel( au_readl(GPIO2_DIR) | 0x1800, GPIO2_DIR );
- au_writel( 0x18000800, GPIO2_OUTPUT );
-
-+ board_pci_idsel = mtx1_pci_idsel;
-+
- printk("4G Systems MTX-1 Board\n");
- }
-+
-+int
-+mtx1_pci_idsel(unsigned int devsel, int assert)
-+{
-+#define MTX_IDSEL_ONLY_0_AND_3 0
-+#if MTX_IDSEL_ONLY_0_AND_3
-+ if (devsel != 0 && devsel != 3) {
-+ printk("*** not 0 or 3\n");
-+ return 0;
-+ }
-+#endif
-+
-+ if (assert && devsel != 0) {
-+ // supress signal to cardbus
-+ au_writel( 0x00000002, SYS_OUTPUTCLR ); // set EXT_IO3 OFF
-+ }
-+ else {
-+ au_writel( 0x00000002, SYS_OUTPUTSET ); // set EXT_IO3 ON
-+ }
-+ au_sync_udelay(1);
-+ return 1;
-+}
-+
-diff -urN linux-2.6.16.7/arch/mips/au1000/mtx-1/irqmap.c linux-2.6.16.7.new/arch/mips/au1000/mtx-1/irqmap.c
---- linux-2.6.16.7/arch/mips/au1000/mtx-1/irqmap.c 2006-04-23 14:40:54.000000000 +0200
-+++ linux-2.6.16.7.new/arch/mips/au1000/mtx-1/irqmap.c 2006-04-23 14:40:12.000000000 +0200
-@@ -48,7 +48,7 @@
- #include <asm/mach-au1x00/au1000.h>
-
- char irq_tab_alchemy[][5] __initdata = {
-- [0] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 00 - AdapterA-Slot0 (top) */
-+ [0] = { -1, INTA, INTA, INTX, INTX}, /* IDSEL 00 - AdapterA-Slot0 (top) */
- [1] = { -1, INTB, INTA, INTX, INTX}, /* IDSEL 01 - AdapterA-Slot1 (bottom) */
- [2] = { -1, INTC, INTD, INTX, INTX}, /* IDSEL 02 - AdapterB-Slot0 (top) */
- [3] = { -1, INTD, INTC, INTX, INTX}, /* IDSEL 03 - AdapterB-Slot1 (bottom) */
diff --git a/openwrt/target/linux/au1000-2.6/patches/009-boot.patch b/openwrt/target/linux/au1000-2.6/patches/009-boot.patch
deleted file mode 100644
index 611c70d460..0000000000
--- a/openwrt/target/linux/au1000-2.6/patches/009-boot.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -Nur linux-cvs/arch/mips/kernel/head.S linux-aruba/arch/mips/kernel/head.S
---- linux-cvs/arch/mips/kernel/head.S 2004-12-23 00:21:39.000000000 -0800
-+++ linux-aruba/arch/mips/kernel/head.S 2005-10-20 09:16:08.000000000 -0700
-@@ -122,6 +122,10 @@
- #endif
- .endm
-
-+
-+ j kernel_entry
-+ nop
-+
- /*
- * Reserved space for exception handlers.
- * Necessary for machines which link their kernels at KSEG0.
-
diff --git a/openwrt/target/linux/brcm-2.4/Config.in b/openwrt/target/linux/brcm-2.4/Config.in
deleted file mode 100644
index 37fb6825d8..0000000000
--- a/openwrt/target/linux/brcm-2.4/Config.in
+++ /dev/null
@@ -1,8 +0,0 @@
-config BR2_PACKAGE_KMOD_BRCM_WL
- prompt "kmod-brcm-wl...................... Broadcom Wireless Network Driver"
- tristate
- depends BR2_LINUX_2_4_BRCM
- default y
- help
- Proprietary driver for Broadcom Wireless chipsets
-
diff --git a/openwrt/target/linux/brcm-2.4/Makefile b/openwrt/target/linux/brcm-2.4/Makefile
deleted file mode 100644
index b623aeab3e..0000000000
--- a/openwrt/target/linux/brcm-2.4/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-LINUX_VERSION:=2.4.32
-LINUX_RELEASE:=1
-LINUX_KERNEL_MD5SUM:=38f4d0830e95a20f4bfed17622d5557c
-
-include ../rules.mk
-include ./config
-
-# broadcom specific kmod packages
-$(eval $(call KMOD_template,BRCM_WL,brcm-wl,\
- $(MODULES_DIR)/kernel/drivers/net/wl/wl.o \
-,CONFIG_WL,,20,wl))
-
-$(eval $(call KMOD_template,LP,lp,\
- $(MODULES_DIR)/kernel/drivers/parport/parport.o \
- $(MODULES_DIR)/kernel/drivers/parport/parport_splink.o \
- $(MODULES_DIR)/kernel/drivers/char/lp.o \
- $(MODULES_DIR)/kernel/drivers/char/ppdev.o \
-,CONFIG_PARPORT,,50,parport parport_splink lp))
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
-
-
-$(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
- [ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches $(MAKE_TRACE)
- [ -d ./patches ] && $(PATCH) $(LINUX_DIR) ./patches $(MAKE_TRACE)
- @$(CP) config $(LINUX_DIR)/.config
- touch $@
-
-
-###############################################
-# Proprietary driver for BCM43xx
-###############################################
-
-LINUX_BINARY_DRIVER_SITE=http://downloads.openwrt.org/sources
-# proprietary driver, extracted from Linksys GPL sourcetree WRT54GS 4.70.6
-LINUX_BINARY_WL_DRIVER=kernel-binary-wl-0.7.tar.gz
-LINUX_BINARY_WL_MD5SUM=ff50130914790cbae9b73a13513da5ee
-
-$(DL_DIR)/$(LINUX_BINARY_WL_DRIVER):
- $(SCRIPT_DIR)/download.pl $(DL_DIR) $(LINUX_BINARY_WL_DRIVER) $(LINUX_BINARY_WL_MD5SUM) $(LINUX_BINARY_DRIVER_SITE) $(MAKE_TRACE)
-
-$(LINUX_DIR)/.unpacked: $(DL_DIR)/$(LINUX_BINARY_WL_DRIVER)
-$(LINUX_DIR)/.depend_done: $(LINUX_DIR)/.drivers-unpacked
-$(LINUX_DIR)/.modules_done: $(LINUX_DIR)/.drivers-unpacked
-$(STAMP_DIR)/.linux-compile: $(LINUX_DIR)/.drivers-installed
-
-$(LINUX_DIR)/.drivers-unpacked: $(LINUX_DIR)/.unpacked
- -mkdir -p $(BUILD_DIR)
- zcat $(DL_DIR)/$(LINUX_BINARY_WL_DRIVER) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
- # copy binary wlan driver
- mkdir -p $(LINUX_DIR)/drivers/net/wl
- $(CP) $(BUILD_DIR)/kernel-binary-wl/*.o $(LINUX_DIR)/drivers/net/wl
- touch $@
-
-$(LINUX_DIR)/.drivers-installed: $(LINUX_DIR)/.modules_done
- mkdir -p $(LINUX_BUILD_DIR)/modules/lib/modules/2.4.32/kernel/drivers/net/wl
- @-[ -f $(LINUX_BUILD_DIR)/modules/lib/modules/2.4.32/kernel/drivers/net/wl/wl.o ] || $(CP) $(LINUX_DIR)/drivers/net/wl/wl.o $(LINUX_BUILD_DIR)/modules/lib/modules/2.4.32/kernel/drivers/net/wl/
- touch $@
-
-linux-dirclean: drivers-clean
-
-drivers-clean:
- rm -rf $(BUILD_DIR)/kernel-binary-wl
diff --git a/openwrt/target/linux/brcm-2.4/config b/openwrt/target/linux/brcm-2.4/config
deleted file mode 100644
index c4cf5340ea..0000000000
--- a/openwrt/target/linux/brcm-2.4/config
+++ /dev/null
@@ -1,1388 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-CONFIG_MIPS=y
-CONFIG_MIPS32=y
-# CONFIG_MIPS64 is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_KMOD is not set
-
-#
-# Machine selection
-#
-# CONFIG_ACER_PICA_61 is not set
-# CONFIG_MIPS_BOSPORUS is not set
-# CONFIG_MIPS_FICMMP is not set
-# CONFIG_MIPS_MIRAGE is not set
-# CONFIG_MIPS_DB1000 is not set
-# CONFIG_MIPS_DB1100 is not set
-# CONFIG_MIPS_DB1500 is not set
-# CONFIG_MIPS_DB1550 is not set
-# CONFIG_MIPS_DB1200 is not set
-# CONFIG_MIPS_PB1000 is not set
-# CONFIG_MIPS_PB1100 is not set
-# CONFIG_MIPS_PB1500 is not set
-# CONFIG_MIPS_PB1550 is not set
-# CONFIG_MIPS_PB1200 is not set
-# CONFIG_MIPS_HYDROGEN3 is not set
-# CONFIG_MIPS_XXS1500 is not set
-# CONFIG_MIPS_MTX1 is not set
-# CONFIG_COGENT_CSB250 is not set
-# CONFIG_BAGET_MIPS is not set
-# CONFIG_CASIO_E55 is not set
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_DECSTATION is not set
-# CONFIG_MIPS_EV64120 is not set
-# CONFIG_MIPS_EV96100 is not set
-# CONFIG_MIPS_IVR is not set
-# CONFIG_HP_LASERJET is not set
-# CONFIG_IBM_WORKPAD is not set
-# CONFIG_LASAT is not set
-# CONFIG_MIPS_ITE8172 is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_MAGNUM_4000 is not set
-# CONFIG_MIPS_MALTA is not set
-# CONFIG_MIPS_SEAD is not set
-# CONFIG_MOMENCO_OCELOT is not set
-# CONFIG_MOMENCO_OCELOT_G is not set
-# CONFIG_MOMENCO_OCELOT_C is not set
-# CONFIG_MOMENCO_JAGUAR_ATX is not set
-# CONFIG_PMC_BIG_SUR is not set
-# CONFIG_PMC_STRETCH is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_DDB5074 is not set
-# CONFIG_DDB5476 is not set
-# CONFIG_DDB5477 is not set
-# CONFIG_NEC_OSPREY is not set
-# CONFIG_NEC_EAGLE is not set
-# CONFIG_OLIVETTI_M700 is not set
-# CONFIG_NINO is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SIBYTE_SB1xxx_SOC is not set
-CONFIG_MIPS_BRCM=y
-CONFIG_BCM947XX=y
-CONFIG_BCM4710=y
-CONFIG_BCM4310=y
-CONFIG_BCM4704=y
-CONFIG_BCM5365=y
-# CONFIG_SNI_RM200_PCI is not set
-# CONFIG_TANBAC_TB0226 is not set
-# CONFIG_TANBAC_TB0229 is not set
-# CONFIG_TOSHIBA_JMR3927 is not set
-# CONFIG_TOSHIBA_RBTX4927 is not set
-# CONFIG_VICTOR_MPC30X is not set
-# CONFIG_ZAO_CAPCELLA is not set
-# CONFIG_HIGHMEM is not set
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=squashfs,jffs2 init=/etc/preinit noinitrd console=ttyS0,115200"
-CONFIG_PCI=y
-CONFIG_NONCOHERENT_IO=y
-CONFIG_NEW_TIME_C=y
-CONFIG_NEW_IRQ=y
-CONFIG_HND=y
-# CONFIG_MIPS_AU1000 is not set
-
-#
-# CPU selection
-#
-CONFIG_CPU_MIPS32=y
-# CONFIG_CPU_MIPS64 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_VR41XX is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-CONFIG_PAGE_SIZE_4KB=y
-# CONFIG_PAGE_SIZE_16KB is not set
-# CONFIG_PAGE_SIZE_64KB is not set
-CONFIG_CPU_HAS_PREFETCH=y
-# CONFIG_VTAG_ICACHE is not set
-# CONFIG_64BIT_PHYS_ADDR is not set
-# CONFIG_CPU_ADVANCED is not set
-CONFIG_CPU_HAS_LLSC=y
-# CONFIG_CPU_HAS_LLDSCD is not set
-# CONFIG_CPU_HAS_WB is not set
-CONFIG_CPU_HAS_SYNC=y
-
-#
-# General setup
-#
-CONFIG_CPU_LITTLE_ENDIAN=y
-# CONFIG_BUILD_ELF64 is not set
-CONFIG_NET=y
-CONFIG_PCI=y
-# CONFIG_PCI_NEW is not set
-CONFIG_PCI_AUTO=y
-# CONFIG_PCI_NAMES is not set
-# CONFIG_ISA is not set
-# CONFIG_TC is not set
-# CONFIG_MCA is not set
-# CONFIG_SBUS is not set
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=m
-CONFIG_CARDBUS=y
-# CONFIG_TCIC is not set
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-
-#
-# PCI Hotplug Support
-#
-# CONFIG_HOTPLUG_PCI is not set
-# CONFIG_HOTPLUG_PCI_COMPAQ is not set
-# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
-# CONFIG_HOTPLUG_PCI_SHPC is not set
-# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set
-# CONFIG_HOTPLUG_PCI_PCIE is not set
-# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_ELF_AOUT is not set
-# CONFIG_MIPS32_COMPAT is not set
-# CONFIG_MIPS32_O32 is not set
-# CONFIG_MIPS32_N32 is not set
-# CONFIG_BINFMT_ELF32 is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_OOM_KILLER is not set
-# CONFIG_CMDLINE_BOOL is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL 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_CFI_B1 is not set
-CONFIG_MTD_CFI_B2=y
-# CONFIG_MTD_CFI_B4 is not set
-# CONFIG_MTD_CFI_B8 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_CFI_INTELEXT=y
-CONFIG_MTD_CFI_AMDSTD=y
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_SSTSTD=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_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_BCM947XX=y
-# CONFIG_MTD_PB1000 is not set
-# CONFIG_MTD_PB1500 is not set
-# CONFIG_MTD_PB1100 is not set
-# CONFIG_MTD_BOSPORUS is not set
-# CONFIG_MTD_XXS1500 is not set
-# CONFIG_MTD_MTX1 is not set
-# CONFIG_MTD_DB1X00 is not set
-# CONFIG_MTD_PB1550 is not set
-# CONFIG_MTD_HYDROGEN3 is not set
-# CONFIG_MTD_MIRAGE is not set
-# CONFIG_MTD_CSTM_MIPS_IXX is not set
-# CONFIG_MTD_OCELOT is not set
-# CONFIG_MTD_LASAT is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-
-#
-# Self-contained MTD device drivers
-#
-CONFIG_MTD_SFLASH=y
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=m
-# CONFIG_PARPORT_PC is not set
-CONFIG_PARPORT_SPLINK=m
-# CONFIG_PARPORT_AMIGA is not set
-# CONFIG_PARPORT_MFC3 is not set
-# CONFIG_PARPORT_ATARI is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_SUNBPP is not set
-# CONFIG_PARPORT_IP22 is not set
-# CONFIG_PARPORT_OTHER is not set
-# CONFIG_PARPORT_1284 is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# 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_CISS_SCSI_TAPE is not set
-# CONFIG_CISS_MONITOR_THREAD is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_SX8 is not set
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_BLK_STATS is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_MD_MULTIPATH is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK_DEV=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_FILTER=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_FWMARK=y
-CONFIG_IP_ROUTE_NAT=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_TOS=y
-# CONFIG_IP_ROUTE_VERBOSE is not set
-# CONFIG_IP_PNP 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_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=y
-CONFIG_IP_NF_CONNTRACK_MARK=y
-CONFIG_IP_NF_FTP=y
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_IRC=y
-CONFIG_IP_NF_CT_ACCT=m
-CONFIG_IP_NF_MATCH_CONNBYTES=m
-CONFIG_IP_NF_CT_PROTO_GRE=m
-CONFIG_IP_NF_PPTP=m
-CONFIG_IP_NF_H323=m
-CONFIG_IP_NF_MMS=m
-CONFIG_IP_NF_RTSP=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_QUOTA=m
-CONFIG_IP_NF_SET=m
-CONFIG_IP_NF_SET_MAX=256
-CONFIG_IP_NF_SET_HASHSIZE=1024
-CONFIG_IP_NF_MATCH_SET=m
-CONFIG_IP_NF_TARGET_SET=m
-CONFIG_IP_NF_SET_IPMAP=m
-CONFIG_IP_NF_SET_PORTMAP=m
-CONFIG_IP_NF_SET_MACIPMAP=m
-CONFIG_IP_NF_SET_IPHASH=m
-CONFIG_IP_NF_SET_NETHASH=m
-CONFIG_IP_NF_SET_IPTREE=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=y
-CONFIG_IP_NF_MATCH_MULTIPORT=y
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_TIME=m
-CONFIG_IP_NF_MATCH_CONDITION=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_IPP2P=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=y
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_CONNMARK=m
-CONFIG_IP_NF_MATCH_UNCLEAN=m
-CONFIG_IP_NF_MATCH_STRING=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_LAYER7=m
-# CONFIG_IP_NF_MATCH_LAYER7_DEBUG is not set
-CONFIG_IP_NF_MATCH_LAYER7_MAXDATALEN=2048
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-CONFIG_IP_NF_TARGET_MIRROR=m
-CONFIG_IP_NF_NAT=y
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=y
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_NAT_PPTP=m
-CONFIG_IP_NF_NAT_PROTO_GRE=m
-CONFIG_IP_NF_NAT_H323=m
-CONFIG_IP_NF_NAT_MMS=m
-CONFIG_IP_NF_NAT_RTSP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=y
-CONFIG_IP_NF_NAT_FTP=y
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_MANGLE=y
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_MARK=y
-CONFIG_IP_NF_TARGET_IMQ=m
-CONFIG_IP_NF_TARGET_CONNMARK=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=y
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IP: Virtual Server Configuration
-#
-CONFIG_IP_VS=m
-# CONFIG_IP_VS_DEBUG is not set
-CONFIG_IP_VS_TAB_BITS=12
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-CONFIG_IP_VS_FTP=m
-CONFIG_IPV6=m
-
-#
-# IPv6: Netfilter Configuration
-#
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_CONDITION=m
-CONFIG_IP6_NF_MATCH_MAC=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_MARK=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-CONFIG_IP6_NF_MATCH_LENGTH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_MARK=m
-CONFIG_IP6_NF_TARGET_IMQ=m
-# CONFIG_KHTTPD is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-# CONFIG_ATM is not set
-CONFIG_VLAN_8021Q=y
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-CONFIG_BRIDGE=y
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-CONFIG_WAN_ROUTER=m
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-CONFIG_NET_SCHED=y
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_CSZ=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_NETEM is not set
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_INGRESS=m
-CONFIG_NET_QOS=y
-CONFIG_NET_ESTIMATOR=y
-CONFIG_NET_CLS=y
-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_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_POLICE=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_IPSEC_NAT_TRAVERSAL=y
-
-#
-# Telephony Support
-#
-# CONFIG_PHONE is not set
-# CONFIG_PHONE_IXJ is not set
-# CONFIG_PHONE_IXJ_PCMCIA is not set
-
-#
-# ATA/IDE/MFM/RLL support
-#
-CONFIG_IDE=m
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=m
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_IDEDISK_STROKE=y
-# CONFIG_BLK_DEV_IDECS is not set
-# CONFIG_BLK_DEV_DELKIN is not set
-# 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_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-CONFIG_BLK_DEV_IDEPCI=y
-# CONFIG_BLK_DEV_GENERIC is not set
-# CONFIG_IDEPCI_SHARE_IRQ is not set
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-CONFIG_BLK_DEV_OFFBOARD=y
-# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
-CONFIG_IDEDMA_PCI_AUTO=y
-# CONFIG_IDEDMA_ONLYDISK is not set
-CONFIG_BLK_DEV_IDEDMA=y
-# CONFIG_IDEDMA_PCI_WIP is not set
-# CONFIG_BLK_DEV_ADMA100 is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_WDC_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_AMD74XX_OVERRIDE 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_CS5530 is not set
-# CONFIG_BLK_DEV_HPT34X is not set
-# CONFIG_HPT34X_AUTODMA is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_PIIX is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_PDC202XX_OLD=m
-CONFIG_PDC202XX_BURST=y
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_PDC202XX_FORCE is not set
-# CONFIG_BLK_DEV_RZ1000 is not set
-# CONFIG_BLK_DEV_SC1200 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_IDE_CHIPSETS is not set
-CONFIG_IDEDMA_AUTO=y
-CONFIG_IDEDMA_IVB=y
-# CONFIG_DMA_NONPCI is not set
-CONFIG_BLK_DEV_PDC202XX=y
-# CONFIG_BLK_DEV_ATARAID is not set
-# CONFIG_BLK_DEV_ATARAID_PDC is not set
-# CONFIG_BLK_DEV_ATARAID_HPT is not set
-# CONFIG_BLK_DEV_ATARAID_MEDLEY is not set
-# CONFIG_BLK_DEV_ATARAID_SII is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_SD_EXTRA_DEVS=5
-# 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=m
-# CONFIG_SCSI_DEBUG_QUEUES is not set
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_BLK_DEV_3W_XXXX_RAID 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_AHA1740 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_MEGARAID is not set
-# CONFIG_SCSI_MEGARAID2 is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_SATA_AHCI is not set
-# CONFIG_SCSI_SATA_SVW is not set
-# CONFIG_SCSI_ATA_PIIX is not set
-# CONFIG_SCSI_SATA_NV 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_SIS is not set
-# CONFIG_SCSI_SATA_ULI is not set
-# CONFIG_SCSI_SATA_VIA is not set
-# CONFIG_SCSI_SATA_VITESSE is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_CPQFCTS is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO 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_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_NCR53C7xx is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_NCR53C8XX is not set
-# CONFIG_SCSI_SYM53C8XX is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_ISP is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_SCSI_PCMCIA is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_BOOT is not set
-# CONFIG_FUSION_ISENSE is not set
-# CONFIG_FUSION_CTL is not set
-# CONFIG_FUSION_LAN is not set
-
-#
-# IEEE 1394 (FireWire) support (EXPERIMENTAL)
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_PCI is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-CONFIG_HND=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_IMQ=m
-CONFIG_TUN=m
-CONFIG_NET_RANDOM=y
-# CONFIG_ETHERTAP is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_SUNLANCE is not set
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNBMAC is not set
-# CONFIG_SUNQE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_ISA 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_APRICOT is not set
-CONFIG_B44=y
-# CONFIG_CS89x0 is not set
-# CONFIG_TULIP is not set
-# CONFIG_DE4X5 is not set
-# CONFIG_DGRS is not set
-# CONFIG_DM9102 is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_EEPRO100_PIO is not set
-# CONFIG_E100 is not set
-# CONFIG_LNE390 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_NE3210 is not set
-# CONFIG_ES3210 is not set
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_8139TOO_PIO is not set
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_SUNDANCE_MMIO is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_VIA_RHINE_MMIO is not set
-# CONFIG_WINBOND_840 is not set
-# CONFIG_LAN_SAA9730 is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 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=y
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE_MPPC=m
-CONFIG_PPPOE=m
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_STRIP is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_ARLAN is not set
-# CONFIG_AIRONET4500 is not set
-# CONFIG_AIRONET4500_NONCS is not set
-# CONFIG_AIRONET4500_PROC is not set
-# CONFIG_AIRO is not set
-# CONFIG_HERMES is not set
-CONFIG_WL=m
-# CONFIG_PLX_HERMES is not set
-# CONFIG_TMD_HERMES is not set
-# CONFIG_PCI_HERMES is not set
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_ATMEL is not set
-# CONFIG_PRISM54 is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-CONFIG_SHAPER=m
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-# CONFIG_NET_PCMCIA is not set
-
-#
-# Amateur Radio support
-#
-CONFIG_HAMRADIO=y
-CONFIG_AX25=m
-# CONFIG_AX25_DAMA_SLAVE is not set
-# CONFIG_NETROM is not set
-# CONFIG_ROSE is not set
-
-#
-# AX.25 network device drivers
-#
-CONFIG_MKISS=m
-# CONFIG_6PACK is not set
-# CONFIG_BPQETHER is not set
-# CONFIG_SCC_DELAY is not set
-# CONFIG_SCC_TRXECHO is not set
-# CONFIG_BAYCOM_SER_FDX is not set
-# CONFIG_BAYCOM_SER_HDX is not set
-# CONFIG_BAYCOM_PAR is not set
-# CONFIG_BAYCOM_EPP is not set
-# CONFIG_SOUNDMODEM is not set
-# CONFIG_YAM is not set
-
-#
-# IrDA (infrared) support
-#
-# CONFIG_IRDA is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-# CONFIG_INPUT is not set
-# CONFIG_INPUT_KEYBDEV is not set
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Character devices
-#
-# CONFIG_VT is not set
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=128
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-CONFIG_PPDEV=m
-# CONFIG_TIPAR is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-# CONFIG_QIC02_TAPE is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_IPMI_PANIC_EVENT is not set
-# CONFIG_IPMI_DEVICE_INTERFACE is not set
-# CONFIG_IPMI_KCS is not set
-# CONFIG_IPMI_WATCHDOG is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_ADVANTECH_WDT is not set
-# CONFIG_ALIM1535_WDT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_SC520_WDT is not set
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_EUROTECH_WDT is not set
-# CONFIG_IB700_WDT is not set
-# CONFIG_WAFER_WDT is not set
-# CONFIG_I810_TCO is not set
-# CONFIG_MIXCOMWD is not set
-# CONFIG_60XX_WDT is not set
-# CONFIG_SC1200_WDT is not set
-# CONFIG_SCx200_WDT is not set
-CONFIG_SOFT_WATCHDOG=m
-# CONFIG_W83877F_WDT is not set
-# CONFIG_WDT is not set
-# CONFIG_WDTPCI is not set
-# CONFIG_MACHZ_WDT is not set
-# CONFIG_SCx200 is not set
-# CONFIG_SCx200_GPIO is not set
-# CONFIG_AMD_PM768 is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC 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_FTAPE is not set
-# CONFIG_AGP is not set
-
-#
-# Direct Rendering Manager (XFree86 DRI support)
-#
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-CONFIG_PCMCIA_SERIAL_CS=m
-# CONFIG_SYNCLINK_CS is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_QFMT_V2 is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-CONFIG_HFSPLUS_FS=m
-# CONFIG_BEFS_FS is not set
-# CONFIG_BEFS_DEBUG is not set
-# CONFIG_BFS_FS is not set
-CONFIG_EXT3_FS=m
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FAT_FS=m
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_BBC_ARMLIB is not set
-# CONFIG_JFFS2_BBC_LZO is not set
-CONFIG_JFFS2_BBC_LZARI=y
-# CONFIG_JFFS2_BBC_LZHD is not set
-# CONFIG_JFFS2_BBC_LZSS is not set
-# CONFIG_CRAMFS is not set
-CONFIG_SQUASHFS=y
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-CONFIG_MINIX_FS=m
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=m
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-CONFIG_XFS_FS=m
-# CONFIG_XFS_QUOTA is not set
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_TRACE is not set
-# CONFIG_XFS_DEBUG is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-CONFIG_CIFS_POSIX=y
-# CONFIG_SMB_FS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-# CONFIG_ZISOFS_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=y
-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_EFI_PARTITION is not set
-# CONFIG_SMB_NLS is not set
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-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_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
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-CONFIG_VIDEO_PROC_FS=y
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_VIDEO_BT848 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_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_ZORAN_BUZ is not set
-# CONFIG_VIDEO_ZORAN_DC10 is not set
-# CONFIG_VIDEO_ZORAN_LML33 is not set
-# CONFIG_VIDEO_ZR36120 is not set
-# CONFIG_VIDEO_MEYE 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_RADIO_MIROPCM20 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-# CONFIG_SOUND_ALI5455 is not set
-# CONFIG_SOUND_BT878 is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_MIDI_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_FORTE is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_RME96XX is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_TVMIXER is not set
-# CONFIG_SOUND_AD1980 is not set
-# CONFIG_SOUND_WM97XX is not set
-
-#
-# USB support
-#
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-CONFIG_USB_EHCI_HCD=m
-# CONFIG_USB_UHCI is not set
-CONFIG_USB_UHCI_ALT=m
-CONFIG_USB_OHCI=m
-CONFIG_USB_AUDIO=m
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_MIDI is not set
-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_HP8200e=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-# CONFIG_USB_HID is not set
-# CONFIG_USB_HIDINPUT is not set
-# CONFIG_USB_HIDDEV is not set
-# 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_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_DC2XX is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_HPUSBSCSI is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_OV511 is not set
-CONFIG_USB_PWC=m
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_CDCETHER is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-# 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_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_KOBIL_SCT is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_TIGL is not set
-# CONFIG_USB_BRLVGER is not set
-# CONFIG_USB_LCD is not set
-
-#
-# Support for USB gadgets
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# Bluetooth support
-#
-CONFIG_BLUEZ=m
-CONFIG_BLUEZ_L2CAP=m
-CONFIG_BLUEZ_SCO=m
-CONFIG_BLUEZ_RFCOMM=m
-CONFIG_BLUEZ_RFCOMM_TTY=y
-CONFIG_BLUEZ_BNEP=m
-CONFIG_BLUEZ_BNEP_MC_FILTER=y
-CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BLUEZ_HCIUSB=m
-CONFIG_BLUEZ_HCIUSB_SCO=y
-CONFIG_BLUEZ_HCIUART=m
-CONFIG_BLUEZ_HCIUART_H4=y
-CONFIG_BLUEZ_HCIUART_BCSP=y
-CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y
-# CONFIG_BLUEZ_HCIBFUSB is not set
-# CONFIG_BLUEZ_HCIDTL1 is not set
-# CONFIG_BLUEZ_HCIBT3C is not set
-# CONFIG_BLUEZ_HCIBLUECARD is not set
-# CONFIG_BLUEZ_HCIBTUART is not set
-# CONFIG_BLUEZ_HCIVHCI is not set
-
-#
-# Kernel hacking
-#
-CONFIG_CROSSCOMPILE=y
-# CONFIG_RUNTIME_DEBUG is not set
-# CONFIG_REMOTE_DEBUG is not set
-# CONFIG_GDB_CONSOLE is not set
-# CONFIG_DEBUG_INFO is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_MIPS_UNCACHED is not set
-CONFIG_LOG_BUF_SHIFT=0
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-# 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_DES=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_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Library routines
-#
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-# CONFIG_FW_LOADER is not set
diff --git a/openwrt/target/linux/brcm-2.4/patches/001-bcm47xx.patch b/openwrt/target/linux/brcm-2.4/patches/001-bcm47xx.patch
deleted file mode 100644
index e1bd00bae2..0000000000
--- a/openwrt/target/linux/brcm-2.4/patches/001-bcm47xx.patch
+++ /dev/null
@@ -1,20040 +0,0 @@
-diff -urN linux.old/arch/mips/Makefile linux.dev/arch/mips/Makefile
---- linux.old/arch/mips/Makefile 2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/Makefile 2006-04-27 19:24:19.000000000 +0200
-@@ -726,6 +726,19 @@
- endif
-
- #
-+# Broadcom BCM947XX variants
-+#
-+ifdef CONFIG_BCM947XX
-+LIBS += arch/mips/bcm947xx/generic/brcm.o arch/mips/bcm947xx/bcm947xx.o
-+SUBDIRS += arch/mips/bcm947xx/generic arch/mips/bcm947xx
-+LOADADDR := 0x80001000
-+
-+zImage: vmlinux
-+ $(MAKE) -C arch/$(ARCH)/bcm947xx/compressed
-+export LOADADDR
-+endif
-+
-+#
- # Choosing incompatible machines durings configuration will result in
- # error messages during linking. Select a default linkscript if
- # none has been choosen above.
-@@ -778,6 +791,7 @@
- $(MAKE) -C arch/$(ARCH)/tools clean
- $(MAKE) -C arch/mips/baget clean
- $(MAKE) -C arch/mips/lasat clean
-+ $(MAKE) -C arch/mips/bcm947xx/compressed clean
-
- archmrproper:
- @$(MAKEBOOT) mrproper
-diff -urN linux.old/arch/mips/bcm947xx/Makefile linux.dev/arch/mips/bcm947xx/Makefile
---- linux.old/arch/mips/bcm947xx/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/Makefile 2006-05-02 17:46:22.000000000 +0200
-@@ -0,0 +1,17 @@
-+#
-+# Makefile for the BCM947xx specific kernel interface routines
-+# under Linux.
-+#
-+
-+EXTRA_CFLAGS+=-I$(TOPDIR)/arch/mips/bcm947xx/include -DBCMDRIVER
-+
-+O_TARGET := bcm947xx.o
-+
-+export-objs := export.o
-+obj-y := prom.o setup.o time.o sbmips.o gpio.o
-+obj-y += nvram.o nvram_linux.o sflash.o cfe_env.o
-+obj-y += sbutils.o bcmutils.o bcmsrom.o hndchipc.o
-+obj-$(CONFIG_PCI) += sbpci.o pcibios.o
-+obj-y += export.o
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux.old/arch/mips/bcm947xx/bcmsrom.c linux.dev/arch/mips/bcm947xx/bcmsrom.c
---- linux.old/arch/mips/bcm947xx/bcmsrom.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/bcmsrom.c 2006-04-27 20:32:48.000000000 +0200
-@@ -0,0 +1,1212 @@
-+/*
-+ * Misc useful routines to access NIC SROM/OTP .
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id: bcmsrom.c,v 1.1.1.14 2006/04/15 01:28:25 michael Exp $
-+ */
-+
-+#include <typedefs.h>
-+#include <bcmdefs.h>
-+#include <osl.h>
-+#include <bcmutils.h>
-+#include <bcmsrom.h>
-+#include <bcmdevs.h>
-+#include <bcmendian.h>
-+#include <sbpcmcia.h>
-+#include <pcicfg.h>
-+#include <sbutils.h>
-+#include <bcmnvram.h>
-+
-+/* debug/trace */
-+#if defined(WLTEST)
-+#define BS_ERROR(args) printf args
-+#else
-+#define BS_ERROR(args)
-+#endif /* BCMDBG_ERR || WLTEST */
-+
-+#define VARS_MAX 4096 /* should be reduced */
-+
-+#define WRITE_ENABLE_DELAY 500 /* 500 ms after write enable/disable toggle */
-+#define WRITE_WORD_DELAY 20 /* 20 ms between each word write */
-+
-+static int initvars_srom_pci(void *sbh, void *curmap, char **vars, uint *count);
-+static int initvars_cis_pcmcia(void *sbh, osl_t *osh, char **vars, uint *count);
-+static int initvars_flash_sb(void *sbh, char **vars, uint *count);
-+static int srom_parsecis(osl_t *osh, uint8 **pcis, uint ciscnt, char **vars, uint *count);
-+static int sprom_cmd_pcmcia(osl_t *osh, uint8 cmd);
-+static int sprom_read_pcmcia(osl_t *osh, uint16 addr, uint16 *data);
-+static int sprom_write_pcmcia(osl_t *osh, uint16 addr, uint16 data);
-+static int sprom_read_pci(osl_t *osh, uint16 *sprom, uint wordoff, uint16 *buf, uint nwords,
-+ bool check_crc);
-+
-+static int initvars_table(osl_t *osh, char *start, char *end, char **vars, uint *count);
-+static int initvars_flash(osl_t *osh, char **vp, uint len, char *devpath);
-+
-+/*
-+ * Initialize local vars from the right source for this platform.
-+ * Return 0 on success, nonzero on error.
-+ */
-+int
-+srom_var_init(void *sbh, uint bustype, void *curmap, osl_t *osh, char **vars, uint *count)
-+{
-+ ASSERT(bustype == BUSTYPE(bustype));
-+ if (vars == NULL || count == NULL)
-+ return (0);
-+
-+ switch (BUSTYPE(bustype)) {
-+ case SB_BUS:
-+ case JTAG_BUS:
-+ return initvars_flash_sb(sbh, vars, count);
-+
-+ case PCI_BUS:
-+ ASSERT(curmap); /* can not be NULL */
-+ return initvars_srom_pci(sbh, curmap, vars, count);
-+
-+ case PCMCIA_BUS:
-+ return initvars_cis_pcmcia(sbh, osh, vars, count);
-+
-+
-+ default:
-+ ASSERT(0);
-+ }
-+ return (-1);
-+}
-+
-+/* support only 16-bit word read from srom */
-+int
-+srom_read(uint bustype, void *curmap, osl_t *osh, uint byteoff, uint nbytes, uint16 *buf)
-+{
-+ void *srom;
-+ uint i, off, nw;
-+
-+ ASSERT(bustype == BUSTYPE(bustype));
-+
-+ /* check input - 16-bit access only */
-+ if (byteoff & 1 || nbytes & 1 || (byteoff + nbytes) > (SPROM_SIZE * 2))
-+ return 1;
-+
-+ off = byteoff / 2;
-+ nw = nbytes / 2;
-+
-+ if (BUSTYPE(bustype) == PCI_BUS) {
-+ if (!curmap)
-+ return 1;
-+ srom = (uchar*)curmap + PCI_BAR0_SPROM_OFFSET;
-+ if (sprom_read_pci(osh, srom, off, buf, nw, FALSE))
-+ return 1;
-+ } else if (BUSTYPE(bustype) == PCMCIA_BUS) {
-+ for (i = 0; i < nw; i++) {
-+ if (sprom_read_pcmcia(osh, (uint16)(off + i), (uint16*)(buf + i)))
-+ return 1;
-+ }
-+ } else {
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+/* support only 16-bit word write into srom */
-+int
-+srom_write(uint bustype, void *curmap, osl_t *osh, uint byteoff, uint nbytes, uint16 *buf)
-+{
-+ uint16 *srom;
-+ uint i, nw, crc_range;
-+ uint16 image[SPROM_SIZE];
-+ uint8 crc;
-+ volatile uint32 val32;
-+
-+ ASSERT(bustype == BUSTYPE(bustype));
-+
-+ /* check input - 16-bit access only */
-+ if (byteoff & 1 || nbytes & 1 || (byteoff + nbytes) > (SPROM_SIZE * 2))
-+ return 1;
-+
-+ /* Are we writing the whole thing at once? */
-+ if ((byteoff == 0) &&
-+ ((nbytes == SPROM_SIZE) ||
-+ (nbytes == (SPROM_CRC_RANGE * 2)) ||
-+ (nbytes == (SROM4_WORDS * 2)))) {
-+ crc_range = nbytes;
-+ bcopy((void*)buf, (void*)image, nbytes);
-+ nw = nbytes / 2;
-+ } else {
-+ if ((BUSTYPE(bustype) == PCMCIA_BUS) || (BUSTYPE(bustype) == SDIO_BUS))
-+ crc_range = SPROM_SIZE;
-+ else
-+ crc_range = SPROM_CRC_RANGE * 2; /* Tentative */
-+
-+ nw = crc_range / 2;
-+ /* read first 64 words from srom */
-+ if (srom_read(bustype, curmap, osh, 0, nw * 2, image))
-+ return 1;
-+ if (image[SROM4_SIGN] == SROM4_SIGNATURE) {
-+ crc_range = SROM4_WORDS;
-+ nw = crc_range / 2;
-+ if (srom_read(bustype, curmap, osh, 0, nw * 2, image))
-+ return 1;
-+ }
-+ /* make changes */
-+ bcopy((void*)buf, (void*)&image[byteoff / 2], nbytes);
-+ }
-+
-+ /* calculate crc */
-+ htol16_buf(image, crc_range);
-+ crc = ~hndcrc8((uint8 *)image, crc_range - 1, CRC8_INIT_VALUE);
-+ ltoh16_buf(image, crc_range);
-+ image[(crc_range / 2) - 1] = (crc << 8) | (image[(crc_range / 2) - 1] & 0xff);
-+
-+ if (BUSTYPE(bustype) == PCI_BUS) {
-+ srom = (uint16*)((uchar*)curmap + PCI_BAR0_SPROM_OFFSET);
-+ /* enable writes to the SPROM */
-+ val32 = OSL_PCI_READ_CONFIG(osh, PCI_SPROM_CONTROL, sizeof(uint32));
-+ val32 |= SPROM_WRITEEN;
-+ OSL_PCI_WRITE_CONFIG(osh, PCI_SPROM_CONTROL, sizeof(uint32), val32);
-+ bcm_mdelay(WRITE_ENABLE_DELAY);
-+ /* write srom */
-+ for (i = 0; i < nw; i++) {
-+ W_REG(osh, &srom[i], image[i]);
-+ bcm_mdelay(WRITE_WORD_DELAY);
-+ }
-+ /* disable writes to the SPROM */
-+ OSL_PCI_WRITE_CONFIG(osh, PCI_SPROM_CONTROL, sizeof(uint32), val32 &
-+ ~SPROM_WRITEEN);
-+ } else if (BUSTYPE(bustype) == PCMCIA_BUS) {
-+ /* enable writes to the SPROM */
-+ if (sprom_cmd_pcmcia(osh, SROM_WEN))
-+ return 1;
-+ bcm_mdelay(WRITE_ENABLE_DELAY);
-+ /* write srom */
-+ for (i = 0; i < nw; i++) {
-+ sprom_write_pcmcia(osh, (uint16)(i), image[i]);
-+ bcm_mdelay(WRITE_WORD_DELAY);
-+ }
-+ /* disable writes to the SPROM */
-+ if (sprom_cmd_pcmcia(osh, SROM_WDS))
-+ return 1;
-+ } else {
-+ return 1;
-+ }
-+
-+ bcm_mdelay(WRITE_ENABLE_DELAY);
-+ return 0;
-+}
-+
-+
-+static int
-+srom_parsecis(osl_t *osh, uint8 **pcis, uint ciscnt, char **vars, uint *count)
-+{
-+ char eabuf[32];
-+ char *vp, *base;
-+ uint8 *cis, tup, tlen, sromrev = 1;
-+ int i, j;
-+ uint varsize;
-+ bool ag_init = FALSE;
-+ uint32 w32;
-+
-+ ASSERT(vars);
-+ ASSERT(count);
-+
-+ base = vp = MALLOC(osh, VARS_MAX);
-+ ASSERT(vp);
-+ if (!vp)
-+ return -2;
-+
-+ while (ciscnt--) {
-+ cis = *pcis++;
-+ i = 0;
-+ do {
-+ tup = cis[i++];
-+ tlen = cis[i++];
-+ if ((i + tlen) >= CIS_SIZE)
-+ break;
-+
-+ switch (tup) {
-+ case CISTPL_MANFID:
-+ vp += sprintf(vp, "manfid=%d", (cis[i + 1] << 8) + cis[i]);
-+ vp++;
-+ vp += sprintf(vp, "prodid=%d", (cis[i + 3] << 8) + cis[i + 2]);
-+ vp++;
-+ break;
-+
-+ case CISTPL_FUNCE:
-+ switch (cis[i]) {
-+ case LAN_NID:
-+ ASSERT(cis[i + 1] == 6);
-+ bcm_ether_ntoa((struct ether_addr *)&cis[i + 2], eabuf);
-+ vp += sprintf(vp, "il0macaddr=%s", eabuf);
-+ vp++;
-+ break;
-+ case 1: /* SDIO Extended Data */
-+ vp += sprintf(vp, "sdmaxblk=%d",
-+ (cis[i + 13] << 8) | cis[i + 12]);
-+ vp++;
-+ break;
-+ }
-+ break;
-+
-+ case CISTPL_CFTABLE:
-+ vp += sprintf(vp, "regwindowsz=%d", (cis[i + 7] << 8) | cis[i + 6]);
-+ vp++;
-+ break;
-+
-+ case CISTPL_BRCM_HNBU:
-+ switch (cis[i]) {
-+ case HNBU_SROMREV:
-+ sromrev = cis[i + 1];
-+ break;
-+
-+ case HNBU_CHIPID:
-+ vp += sprintf(vp, "vendid=%d", (cis[i + 2] << 8) +
-+ cis[i + 1]);
-+ vp++;
-+ vp += sprintf(vp, "devid=%d", (cis[i + 4] << 8) +
-+ cis[i + 3]);
-+ vp++;
-+ if (tlen == 7) {
-+ vp += sprintf(vp, "chiprev=%d",
-+ (cis[i + 6] << 8) + cis[i + 5]);
-+ vp++;
-+ }
-+ break;
-+
-+ case HNBU_BOARDREV:
-+ vp += sprintf(vp, "boardrev=%d", cis[i + 1]);
-+ vp++;
-+ break;
-+
-+ case HNBU_AA:
-+ vp += sprintf(vp, "aa2g=%d", cis[i + 1]);
-+ vp++;
-+ break;
-+
-+ case HNBU_AG:
-+ vp += sprintf(vp, "ag0=%d", cis[i + 1]);
-+ vp++;
-+ ag_init = TRUE;
-+ break;
-+
-+ case HNBU_CC:
-+ ASSERT(sromrev == 1);
-+ vp += sprintf(vp, "cc=%d", cis[i + 1]);
-+ vp++;
-+ break;
-+
-+ case HNBU_PAPARMS:
-+ if (tlen == 2) {
-+ ASSERT(sromrev == 1);
-+ vp += sprintf(vp, "pa0maxpwr=%d", cis[i + 1]);
-+ vp++;
-+ } else if (tlen >= 9) {
-+ if (tlen == 10) {
-+ ASSERT(sromrev == 2);
-+ vp += sprintf(vp, "opo=%d", cis[i + 9]);
-+ vp++;
-+ } else
-+ ASSERT(tlen == 9);
-+
-+ for (j = 0; j < 3; j++) {
-+ vp += sprintf(vp, "pa0b%d=%d", j,
-+ (cis[i + (j * 2) + 2] << 8) +
-+ cis[i + (j * 2) + 1]);
-+ vp++;
-+ }
-+ vp += sprintf(vp, "pa0itssit=%d", cis[i + 7]);
-+ vp++;
-+ vp += sprintf(vp, "pa0maxpwr=%d", cis[i + 8]);
-+ vp++;
-+ } else
-+ ASSERT(tlen >= 9);
-+ break;
-+
-+ case HNBU_OEM:
-+ ASSERT(sromrev == 1);
-+ vp += sprintf(vp, "oem=%02x%02x%02x%02x%02x%02x%02x%02x",
-+ cis[i + 1], cis[i + 2],
-+ cis[i + 3], cis[i + 4],
-+ cis[i + 5], cis[i + 6],
-+ cis[i + 7], cis[i + 8]);
-+ vp++;
-+ break;
-+
-+ case HNBU_BOARDFLAGS:
-+ w32 = (cis[i + 2] << 8) + cis[i + 1];
-+ if (tlen == 5)
-+ w32 |= (cis[i + 4] << 24) + (cis[i + 3] << 16);
-+ vp += sprintf(vp, "boardflags=0x%x", w32);
-+ vp++;
-+ break;
-+
-+ case HNBU_LEDS:
-+ if (cis[i + 1] != 0xff) {
-+ vp += sprintf(vp, "ledbh0=%d", cis[i + 1]);
-+ vp++;
-+ }
-+ if (cis[i + 2] != 0xff) {
-+ vp += sprintf(vp, "ledbh1=%d", cis[i + 2]);
-+ vp++;
-+ }
-+ if (cis[i + 3] != 0xff) {
-+ vp += sprintf(vp, "ledbh2=%d", cis[i + 3]);
-+ vp++;
-+ }
-+ if (cis[i + 4] != 0xff) {
-+ vp += sprintf(vp, "ledbh3=%d", cis[i + 4]);
-+ vp++;
-+ }
-+ break;
-+
-+ case HNBU_CCODE:
-+ {
-+ char str[3];
-+ ASSERT(sromrev > 1);
-+ str[0] = cis[i + 1];
-+ str[1] = cis[i + 2];
-+ str[2] = 0;
-+ vp += sprintf(vp, "ccode=%s", str);
-+ vp++;
-+ vp += sprintf(vp, "cctl=0x%x", cis[i + 3]);
-+ vp++;
-+ break;
-+ }
-+
-+ case HNBU_CCKPO:
-+ ASSERT(sromrev > 2);
-+ vp += sprintf(vp, "cckpo=0x%x",
-+ (cis[i + 2] << 8) | cis[i + 1]);
-+ vp++;
-+ break;
-+
-+ case HNBU_OFDMPO:
-+ ASSERT(sromrev > 2);
-+ vp += sprintf(vp, "ofdmpo=0x%x",
-+ (cis[i + 4] << 24) |
-+ (cis[i + 3] << 16) |
-+ (cis[i + 2] << 8) |
-+ cis[i + 1]);
-+ vp++;
-+ break;
-+ }
-+ break;
-+
-+ }
-+ i += tlen;
-+ } while (tup != 0xff);
-+ }
-+
-+ /* Set the srom version */
-+ vp += sprintf(vp, "sromrev=%d", sromrev);
-+ vp++;
-+
-+ /* if there is no antenna gain field, set default */
-+ if (ag_init == FALSE) {
-+ ASSERT(sromrev == 1);
-+ vp += sprintf(vp, "ag0=%d", 0xff);
-+ vp++;
-+ }
-+
-+ /* final nullbyte terminator */
-+ *vp++ = '\0';
-+ varsize = (uint)(vp - base);
-+
-+ ASSERT((vp - base) < VARS_MAX);
-+
-+ if (varsize == VARS_MAX) {
-+ *vars = base;
-+ } else {
-+ vp = MALLOC(osh, varsize);
-+ ASSERT(vp);
-+ if (vp)
-+ bcopy(base, vp, varsize);
-+ MFREE(osh, base, VARS_MAX);
-+ *vars = vp;
-+ if (!vp) {
-+ *count = 0;
-+ return -2;
-+ }
-+ }
-+ *count = varsize;
-+
-+ return (0);
-+}
-+
-+
-+/* set PCMCIA sprom command register */
-+static int
-+sprom_cmd_pcmcia(osl_t *osh, uint8 cmd)
-+{
-+ uint8 status = 0;
-+ uint wait_cnt = 1000;
-+
-+ /* write sprom command register */
-+ OSL_PCMCIA_WRITE_ATTR(osh, SROM_CS, &cmd, 1);
-+
-+ /* wait status */
-+ while (wait_cnt--) {
-+ OSL_PCMCIA_READ_ATTR(osh, SROM_CS, &status, 1);
-+ if (status & SROM_DONE)
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
-+/* read a word from the PCMCIA srom */
-+static int
-+sprom_read_pcmcia(osl_t *osh, uint16 addr, uint16 *data)
-+{
-+ uint8 addr_l, addr_h, data_l, data_h;
-+
-+ addr_l = (uint8)((addr * 2) & 0xff);
-+ addr_h = (uint8)(((addr * 2) >> 8) & 0xff);
-+
-+ /* set address */
-+ OSL_PCMCIA_WRITE_ATTR(osh, SROM_ADDRH, &addr_h, 1);
-+ OSL_PCMCIA_WRITE_ATTR(osh, SROM_ADDRL, &addr_l, 1);
-+
-+ /* do read */
-+ if (sprom_cmd_pcmcia(osh, SROM_READ))
-+ return 1;
-+
-+ /* read data */
-+ data_h = data_l = 0;
-+ OSL_PCMCIA_READ_ATTR(osh, SROM_DATAH, &data_h, 1);
-+ OSL_PCMCIA_READ_ATTR(osh, SROM_DATAL, &data_l, 1);
-+
-+ *data = (data_h << 8) | data_l;
-+ return 0;
-+}
-+
-+/* write a word to the PCMCIA srom */
-+static int
-+sprom_write_pcmcia(osl_t *osh, uint16 addr, uint16 data)
-+{
-+ uint8 addr_l, addr_h, data_l, data_h;
-+
-+ addr_l = (uint8)((addr * 2) & 0xff);
-+ addr_h = (uint8)(((addr * 2) >> 8) & 0xff);
-+ data_l = (uint8)(data & 0xff);
-+ data_h = (uint8)((data >> 8) & 0xff);
-+
-+ /* set address */
-+ OSL_PCMCIA_WRITE_ATTR(osh, SROM_ADDRH, &addr_h, 1);
-+ OSL_PCMCIA_WRITE_ATTR(osh, SROM_ADDRL, &addr_l, 1);
-+
-+ /* write data */
-+ OSL_PCMCIA_WRITE_ATTR(osh, SROM_DATAH, &data_h, 1);
-+ OSL_PCMCIA_WRITE_ATTR(osh, SROM_DATAL, &data_l, 1);
-+
-+ /* do write */
-+ return sprom_cmd_pcmcia(osh, SROM_WRITE);
-+}
-+
-+/*
-+ * Read in and validate sprom.
-+ * Return 0 on success, nonzero on error.
-+ */
-+static int
-+sprom_read_pci(osl_t *osh, uint16 *sprom, uint wordoff, uint16 *buf, uint nwords, bool check_crc)
-+{
-+ int err = 0;
-+ uint i;
-+
-+ /* read the sprom */
-+ for (i = 0; i < nwords; i++)
-+ buf[i] = R_REG(osh, &sprom[wordoff + i]);
-+
-+ if (check_crc) {
-+ /* fixup the endianness so crc8 will pass */
-+ htol16_buf(buf, nwords * 2);
-+ if (hndcrc8((uint8*)buf, nwords * 2, CRC8_INIT_VALUE) != CRC8_GOOD_VALUE)
-+ err = 1;
-+ /* now correct the endianness of the byte array */
-+ ltoh16_buf(buf, nwords * 2);
-+ }
-+
-+ return err;
-+}
-+
-+/*
-+* Create variable table from memory.
-+* Return 0 on success, nonzero on error.
-+*/
-+static int
-+initvars_table(osl_t *osh, char *start, char *end, char **vars, uint *count)
-+{
-+ int c = (int)(end - start);
-+
-+ /* do it only when there is more than just the null string */
-+ if (c > 1) {
-+ char *vp = MALLOC(osh, c);
-+ ASSERT(vp);
-+ if (!vp)
-+ return BCME_NOMEM;
-+ bcopy(start, vp, c);
-+ *vars = vp;
-+ *count = c;
-+ }
-+ else {
-+ *vars = NULL;
-+ *count = 0;
-+ }
-+
-+ return 0;
-+}
-+
-+/*
-+ * Find variables with <devpath> from flash. 'base' points to the beginning
-+ * of the table upon enter and to the end of the table upon exit when success.
-+ * Return 0 on success, nonzero on error.
-+ */
-+static int
-+initvars_flash(osl_t *osh, char **base, uint len, char *devpath)
-+{
-+ char *vp = *base;
-+ char *flash;
-+ int err;
-+ char *s;
-+ uint l, dl, copy_len;
-+
-+ /* allocate memory and read in flash */
-+ if (!(flash = MALLOC(osh, NVRAM_SPACE)))
-+ return BCME_NOMEM;
-+ if ((err = nvram_getall(flash, NVRAM_SPACE)))
-+ goto exit;
-+
-+ /* grab vars with the <devpath> prefix in name */
-+ dl = strlen(devpath);
-+ for (s = flash; s && *s; s += l + 1) {
-+ l = strlen(s);
-+
-+ /* skip non-matching variable */
-+ if (strncmp(s, devpath, dl))
-+ continue;
-+
-+ /* is there enough room to copy? */
-+ copy_len = l - dl + 1;
-+ if (len < copy_len) {
-+ err = BCME_BUFTOOSHORT;
-+ goto exit;
-+ }
-+
-+ /* no prefix, just the name=value */
-+ strcpy(vp, &s[dl]);
-+ vp += copy_len;
-+ len -= copy_len;
-+ }
-+
-+ /* add null string as terminator */
-+ if (len < 1) {
-+ err = BCME_BUFTOOSHORT;
-+ goto exit;
-+ }
-+ *vp++ = '\0';
-+
-+ *base = vp;
-+
-+exit: MFREE(osh, flash, NVRAM_SPACE);
-+ return err;
-+}
-+
-+/*
-+ * Initialize nonvolatile variable table from flash.
-+ * Return 0 on success, nonzero on error.
-+ */
-+static int
-+initvars_flash_sb(void *sbh, char **vars, uint *count)
-+{
-+ osl_t *osh = sb_osh(sbh);
-+ char devpath[SB_DEVPATH_BUFSZ];
-+ char *vp, *base;
-+ int err;
-+
-+ ASSERT(vars);
-+ ASSERT(count);
-+
-+ if ((err = sb_devpath(sbh, devpath, sizeof(devpath))))
-+ return err;
-+
-+ base = vp = MALLOC(osh, VARS_MAX);
-+ ASSERT(vp);
-+ if (!vp)
-+ return BCME_NOMEM;
-+
-+ if ((err = initvars_flash(osh, &vp, VARS_MAX, devpath)))
-+ goto err;
-+
-+ err = initvars_table(osh, base, vp, vars, count);
-+
-+err: MFREE(osh, base, VARS_MAX);
-+ return err;
-+}
-+
-+#ifdef WLTEST
-+char mfgsromvars[256];
-+char *defaultsromvars = "il0macaddr=00:11:22:33:44:51\0"
-+ "et0macaddr=00:11:22:33:44:52\0"
-+ "et1macaddr=00:11:22:33:44:53\0"
-+ "boardtype=0xffff\0"
-+ "boardrev=0x10\0"
-+ "boardflags=8\0"
-+ "sromrev=2\0"
-+ "aa2g=3";
-+#define MFGSROM_DEFVARSLEN 147 /* default srom len */
-+#endif /* WL_TEST */
-+
-+/*
-+ * Initialize nonvolatile variable table from sprom.
-+ * Return 0 on success, nonzero on error.
-+ */
-+static int
-+initvars_srom_pci(void *sbh, void *curmap, char **vars, uint *count)
-+{
-+ uint16 w, *b;
-+ uint8 sromrev = 0;
-+ struct ether_addr ea;
-+ char eabuf[32];
-+ uint32 w32;
-+ int woff, i;
-+ char *vp, *base;
-+ osl_t *osh = sb_osh(sbh);
-+ bool flash = FALSE;
-+ char name[SB_DEVPATH_BUFSZ+16], *value;
-+ char devpath[SB_DEVPATH_BUFSZ];
-+ int err;
-+
-+ /*
-+ * Apply CRC over SROM content regardless SROM is present or not,
-+ * and use variable <devpath>sromrev's existance in flash to decide
-+ * if we should return an error when CRC fails or read SROM variables
-+ * from flash.
-+ */
-+ b = MALLOC(osh, SROM_MAX);
-+ ASSERT(b);
-+ if (!b)
-+ return -2;
-+
-+ err = sprom_read_pci(osh, (void*)((int8*)curmap + PCI_BAR0_SPROM_OFFSET), 0, b,
-+ 64, TRUE);
-+ if (err == 0) {
-+ /* srom is good and is rev < 4 */
-+ /* top word of sprom contains version and crc8 */
-+ sromrev = b[63] & 0xff;
-+ /* bcm4401 sroms misprogrammed */
-+ if (sromrev == 0x10)
-+ sromrev = 1;
-+ } else if (b[SROM4_SIGN] == SROM4_SIGNATURE) {
-+ /* If sromrev >= 4, read more */
-+ err = sprom_read_pci(osh, (void*)((int8*)curmap + PCI_BAR0_SPROM_OFFSET), 0, b,
-+ SROM4_WORDS, TRUE);
-+ sromrev = b[SROM4_WORDS - 1] & 0xff;
-+ }
-+
-+ if (err) {
-+#ifdef WLTEST
-+ BS_ERROR(("SROM Crc Error, so see if we could use a default\n"));
-+ w32 = OSL_PCI_READ_CONFIG(osh, PCI_SPROM_CONTROL, sizeof(uint32));
-+ if (w32 & SPROM_OTPIN_USE) {
-+ BS_ERROR(("srom crc failed with OTP, use default vars....\n"));
-+ vp = base = mfgsromvars;
-+ if (sb_chip(sbh) == BCM4311_CHIP_ID) {
-+ BS_ERROR(("setting the devid to be 4311\n"));
-+ vp += sprintf(vp, "devid=0x4311");
-+ vp++;
-+ }
-+ bcopy(defaultsromvars, vp, MFGSROM_DEFVARSLEN);
-+ vp += MFGSROM_DEFVARSLEN;
-+ goto varsdone;
-+ } else {
-+ BS_ERROR(("srom crc failed with SPROM....\n"));
-+#endif /* WLTEST */
-+ if ((err = sb_devpath(sbh, devpath, sizeof(devpath))))
-+ return err;
-+ sprintf(name, "%ssromrev", devpath);
-+ if (!(value = getvar(NULL, name)))
-+ return (-1);
-+ sromrev = (uint8)bcm_strtoul(value, NULL, 0);
-+ flash = TRUE;
-+#ifdef WLTEST
-+ }
-+#endif /* WLTEST */
-+ }
-+
-+ /* srom version check */
-+ if (sromrev > 4)
-+ return (-2);
-+
-+ ASSERT(vars);
-+ ASSERT(count);
-+
-+ base = vp = MALLOC(osh, VARS_MAX);
-+ ASSERT(vp);
-+ if (!vp)
-+ return -2;
-+
-+ /* read variables from flash */
-+ if (flash) {
-+ if ((err = initvars_flash(osh, &vp, VARS_MAX, devpath)))
-+ goto err;
-+ goto varsdone;
-+ }
-+
-+ vp += sprintf(vp, "sromrev=%d", sromrev);
-+ vp++;
-+
-+ if (sromrev >= 4) {
-+ uint path, pathbase;
-+ const uint pathbases[MAX_PATH] = {SROM4_PATH0, SROM4_PATH1,
-+ SROM4_PATH2, SROM4_PATH3};
-+
-+ vp += sprintf(vp, "boardrev=%d", b[SROM4_BREV]);
-+ vp++;
-+
-+ vp += sprintf(vp, "boardflags=%d", (b[SROM4_BFL1] << 16) | b[SROM4_BFL0]);
-+ vp++;
-+
-+ vp += sprintf(vp, "boardflags2=%d", (b[SROM4_BFL3] << 16) | b[SROM4_BFL2]);
-+ vp++;
-+
-+ /* The macaddr */
-+ ea.octet[0] = (b[SROM4_MACHI] >> 8) & 0xff;
-+ ea.octet[1] = b[SROM4_MACHI] & 0xff;
-+ ea.octet[2] = (b[SROM4_MACMID] >> 8) & 0xff;
-+ ea.octet[3] = b[SROM4_MACMID] & 0xff;
-+ ea.octet[4] = (b[SROM4_MACLO] >> 8) & 0xff;
-+ ea.octet[5] = b[SROM4_MACLO] & 0xff;
-+ bcm_ether_ntoa(&ea, eabuf);
-+ vp += sprintf(vp, "macaddr=%s", eabuf);
-+ vp++;
-+
-+ w = b[SROM4_CCODE];
-+ if (w == 0)
-+ vp += sprintf(vp, "ccode=");
-+ else
-+ vp += sprintf(vp, "ccode=%c%c", (w >> 8), (w & 0xff));
-+ vp++;
-+ vp += sprintf(vp, "regrev=%d", b[SROM4_REGREV]);
-+ vp++;
-+
-+ w = b[SROM4_LEDBH10];
-+ if ((w != 0) && (w != 0xffff)) {
-+ /* ledbh0 */
-+ vp += sprintf(vp, "ledbh0=%d", (w & 0xff));
-+ vp++;
-+
-+ /* ledbh1 */
-+ vp += sprintf(vp, "ledbh1=%d", (w >> 8) & 0xff);
-+ vp++;
-+ }
-+ w = b[SROM4_LEDBH32];
-+ if ((w != 0) && (w != 0xffff)) {
-+ /* ledbh2 */
-+ vp += sprintf(vp, "ledbh2=%d", w & 0xff);
-+ vp++;
-+
-+ /* ledbh3 */
-+ vp += sprintf(vp, "ledbh3=%d", (w >> 8) & 0xff);
-+ vp++;
-+ }
-+ /* LED Powersave duty cycle (oncount >> 24) (offcount >> 8) */
-+ w = b[SROM4_LEDDC];
-+ w32 = ((uint32)((unsigned char)(w >> 8) & 0xff) << 24) | /* oncount */
-+ ((uint32)((unsigned char)(w & 0xff)) << 8); /* offcount */
-+ vp += sprintf(vp, "leddc=%d", w32);
-+ vp++;
-+
-+ w = b[SROM4_AA];
-+ vp += sprintf(vp, "aa2g=%d", w & SROM4_AA2G_MASK);
-+ vp++;
-+ vp += sprintf(vp, "aa5g=%d", w >> SROM4_AA5G_SHIFT);
-+ vp++;
-+
-+ w = b[SROM4_AG10];
-+ vp += sprintf(vp, "ag0=%d", w & 0xff);
-+ vp++;
-+ vp += sprintf(vp, "ag1=%d", (w >> 8) & 0xff);
-+ vp++;
-+ w = b[SROM4_AG32];
-+ vp += sprintf(vp, "ag2=%d", w & 0xff);
-+ vp++;
-+ vp += sprintf(vp, "ag3=%d", (w >> 8) & 0xff);
-+ vp++;
-+
-+ /* Fixed power indices when power control is disabled */
-+ for (i = 0; i < 2; i++) {
-+ w = b[SROM4_TXPID2G + i];
-+ vp += sprintf(vp, "txpid2ga%d=%d", 2 * i, w & 0xff);
-+ vp++;
-+ vp += sprintf(vp, "txpid2ga%d=%d", (2 * i) + 1, (w >> 8) & 0xff);
-+ vp++;
-+ w = b[SROM4_TXPID5G + i];
-+ vp += sprintf(vp, "txpid5ga%d=%d", 2 * i, w & 0xff);
-+ vp++;
-+ vp += sprintf(vp, "txpid5ga%d=%d", (2 * i) + 1, (w >> 8) & 0xff);
-+ vp++;
-+ w = b[SROM4_TXPID5GL + i];
-+ vp += sprintf(vp, "txpid5gla%d=%d", 2 * i, w & 0xff);
-+ vp++;
-+ vp += sprintf(vp, "txpid5gla%d=%d", (2 * i) + 1, (w >> 8) & 0xff);
-+ vp++;
-+ w = b[SROM4_TXPID5GH + i];
-+ vp += sprintf(vp, "txpid5gha%d=%d", 2 * i, w & 0xff);
-+ vp++;
-+ vp += sprintf(vp, "txpid5gha%d=%d", (2 * i) + 1, (w >> 8) & 0xff);
-+ vp++;
-+ }
-+
-+ /* Per path variables */
-+ for (path = 0; path < MAX_PATH; path++) {
-+ pathbase = pathbases[path];
-+ w = b[pathbase + SROM4_2G_ITT_MAXP];
-+ vp += sprintf(vp, "itt2ga%d=%d", path, w >> B2G_ITT_SHIFT);
-+ vp++;
-+ vp += sprintf(vp, "maxp2ga%d=%d", path, w & B2G_MAXP_MASK);
-+ vp++;
-+
-+ for (i = 0; i < 4; i++) {
-+ vp += sprintf(vp, "pa2gw%da%d=%d", i, path,
-+ b[pathbase + SROM4_2G_PA + i]);
-+ vp++;
-+ }
-+
-+ w = b[pathbase + SROM4_5G_ITT_MAXP];
-+ vp += sprintf(vp, "itt5ga%d=%d", path, w >> B5G_ITT_SHIFT);
-+ vp++;
-+ vp += sprintf(vp, "maxp5ga%d=%d", path, w & B5G_MAXP_MASK);
-+ vp++;
-+
-+ w = b[pathbase + SROM4_5GLH_MAXP];
-+ vp += sprintf(vp, "maxp5lga%d=%d", path, w >> B5GL_MAXP_SHIFT);
-+ vp++;
-+ vp += sprintf(vp, "maxp5gha%d=%d", path, w & B5GH_MAXP_MASK);
-+ vp++;
-+
-+ for (i = 0; i < 4; i++) {
-+ vp += sprintf(vp, "pa5gw%da%d=%d", i, path,
-+ b[pathbase + SROM4_5G_PA + i]);
-+ vp++;
-+ vp += sprintf(vp, "pa5glw%da%d=%d", i, path,
-+ b[pathbase + SROM4_5GL_PA + i]);
-+ vp++;
-+ vp += sprintf(vp, "pa5hgw%da%d=%d", i, path,
-+ b[pathbase + SROM4_5GH_PA + i]);
-+ vp++;
-+ }
-+ }
-+
-+ vp += sprintf(vp, "cck2gpo=%d", b[SROM4_2G_CCKPO]);
-+ vp++;
-+
-+ w32 = ((uint32)b[SROM4_2G_OFDMPO + 1] << 16) | b[SROM4_2G_OFDMPO];
-+ vp += sprintf(vp, "ofdm2gpo=%d", w32);
-+ vp++;
-+
-+ w32 = ((uint32)b[SROM4_5G_OFDMPO + 1] << 16) | b[SROM4_5G_OFDMPO];
-+ vp += sprintf(vp, "ofdm5gpo=%d", w32);
-+ vp++;
-+
-+ w32 = ((uint32)b[SROM4_5GL_OFDMPO + 1] << 16) | b[SROM4_5GL_OFDMPO];
-+ vp += sprintf(vp, "ofdm5glpo=%d", w32);
-+ vp++;
-+
-+ w32 = ((uint32)b[SROM4_5GH_OFDMPO + 1] << 16) | b[SROM4_5GH_OFDMPO];
-+ vp += sprintf(vp, "ofdm5ghpo=%d", w32);
-+ vp++;
-+
-+ for (i = 0; i < 8; i++) {
-+ vp += sprintf(vp, "mcs2gpo%d=%d", i, b[SROM4_2G_MCSPO]);
-+ vp++;
-+ vp += sprintf(vp, "mcs5gpo%d=%d", i, b[SROM4_5G_MCSPO]);
-+ vp++;
-+ vp += sprintf(vp, "mcs5glpo%d=%d", i, b[SROM4_5GL_MCSPO]);
-+ vp++;
-+ vp += sprintf(vp, "mcs5ghpo%d=%d", i, b[SROM4_5GH_MCSPO]);
-+ vp++;
-+ }
-+
-+ vp += sprintf(vp, "ccdpo%d=%d", i, b[SROM4_CCDPO]);
-+ vp++;
-+ vp += sprintf(vp, "stbcpo%d=%d", i, b[SROM4_STBCPO]);
-+ vp++;
-+ vp += sprintf(vp, "bw40po%d=%d", i, b[SROM4_BW40PO]);
-+ vp++;
-+ vp += sprintf(vp, "bwduppo%d=%d", i, b[SROM4_BWDUPPO]);
-+ vp++;
-+
-+ goto done;
-+ }
-+ if (sromrev >= 3) {
-+ /* New section takes over the 3th hardware function space */
-+
-+ /* Words 22+23 are 11a (mid) ofdm power offsets */
-+ w32 = ((uint32)b[23] << 16) | b[22];
-+ vp += sprintf(vp, "ofdmapo=%d", w32);
-+ vp++;
-+
-+ /* Words 24+25 are 11a (low) ofdm power offsets */
-+ w32 = ((uint32)b[25] << 16) | b[24];
-+ vp += sprintf(vp, "ofdmalpo=%d", w32);
-+ vp++;
-+
-+ /* Words 26+27 are 11a (high) ofdm power offsets */
-+ w32 = ((uint32)b[27] << 16) | b[26];
-+ vp += sprintf(vp, "ofdmahpo=%d", w32);
-+ vp++;
-+
-+ /* LED Powersave duty cycle (oncount >> 24) (offcount >> 8) */
-+ w32 = ((uint32)((unsigned char)(b[21] >> 8) & 0xff) << 24) | /* oncount */
-+ ((uint32)((unsigned char)(b[21] & 0xff)) << 8); /* offcount */
-+ vp += sprintf(vp, "leddc=%d", w32);
-+
-+ vp++;
-+ }
-+
-+ if (sromrev >= 2) {
-+ /* New section takes over the 4th hardware function space */
-+
-+ /* Word 29 is max power 11a high/low */
-+ w = b[29];
-+ vp += sprintf(vp, "pa1himaxpwr=%d", w & 0xff);
-+ vp++;
-+ vp += sprintf(vp, "pa1lomaxpwr=%d", (w >> 8) & 0xff);
-+ vp++;
-+
-+ /* Words 30-32 set the 11alow pa settings,
-+ * 33-35 are the 11ahigh ones.
-+ */
-+ for (i = 0; i < 3; i++) {
-+ vp += sprintf(vp, "pa1lob%d=%d", i, b[30 + i]);
-+ vp++;
-+ vp += sprintf(vp, "pa1hib%d=%d", i, b[33 + i]);
-+ vp++;
-+ }
-+ w = b[59];
-+ if (w == 0)
-+ vp += sprintf(vp, "ccode=");
-+ else
-+ vp += sprintf(vp, "ccode=%c%c", (w >> 8), (w & 0xff));
-+ vp++;
-+
-+ }
-+
-+ /* parameter section of sprom starts at byte offset 72 */
-+ woff = 72/2;
-+
-+ /* first 6 bytes are il0macaddr */
-+ ea.octet[0] = (b[woff] >> 8) & 0xff;
-+ ea.octet[1] = b[woff] & 0xff;
-+ ea.octet[2] = (b[woff+1] >> 8) & 0xff;
-+ ea.octet[3] = b[woff+1] & 0xff;
-+ ea.octet[4] = (b[woff+2] >> 8) & 0xff;
-+ ea.octet[5] = b[woff+2] & 0xff;
-+ woff += 3;
-+ bcm_ether_ntoa(&ea, eabuf);
-+ vp += sprintf(vp, "il0macaddr=%s", eabuf);
-+ vp++;
-+
-+ /* next 6 bytes are et0macaddr */
-+ ea.octet[0] = (b[woff] >> 8) & 0xff;
-+ ea.octet[1] = b[woff] & 0xff;
-+ ea.octet[2] = (b[woff+1] >> 8) & 0xff;
-+ ea.octet[3] = b[woff+1] & 0xff;
-+ ea.octet[4] = (b[woff+2] >> 8) & 0xff;
-+ ea.octet[5] = b[woff+2] & 0xff;
-+ woff += 3;
-+ bcm_ether_ntoa(&ea, eabuf);
-+ vp += sprintf(vp, "et0macaddr=%s", eabuf);
-+ vp++;
-+
-+ /* next 6 bytes are et1macaddr */
-+ ea.octet[0] = (b[woff] >> 8) & 0xff;
-+ ea.octet[1] = b[woff] & 0xff;
-+ ea.octet[2] = (b[woff+1] >> 8) & 0xff;
-+ ea.octet[3] = b[woff+1] & 0xff;
-+ ea.octet[4] = (b[woff+2] >> 8) & 0xff;
-+ ea.octet[5] = b[woff+2] & 0xff;
-+ woff += 3;
-+ bcm_ether_ntoa(&ea, eabuf);
-+ vp += sprintf(vp, "et1macaddr=%s", eabuf);
-+ vp++;
-+
-+ /*
-+ * Enet phy settings one or two singles or a dual
-+ * Bits 4-0 : MII address for enet0 (0x1f for not there)
-+ * Bits 9-5 : MII address for enet1 (0x1f for not there)
-+ * Bit 14 : Mdio for enet0
-+ * Bit 15 : Mdio for enet1
-+ */
-+ w = b[woff];
-+ vp += sprintf(vp, "et0phyaddr=%d", (w & 0x1f));
-+ vp++;
-+ vp += sprintf(vp, "et1phyaddr=%d", ((w >> 5) & 0x1f));
-+ vp++;
-+ vp += sprintf(vp, "et0mdcport=%d", ((w >> 14) & 0x1));
-+ vp++;
-+ vp += sprintf(vp, "et1mdcport=%d", ((w >> 15) & 0x1));
-+ vp++;
-+
-+ /* Word 46 has board rev, antennas 0/1 & Country code/control */
-+ w = b[46];
-+ vp += sprintf(vp, "boardrev=%d", w & 0xff);
-+ vp++;
-+
-+ if (sromrev > 1)
-+ vp += sprintf(vp, "cctl=%d", (w >> 8) & 0xf);
-+ else
-+ vp += sprintf(vp, "cc=%d", (w >> 8) & 0xf);
-+ vp++;
-+
-+ vp += sprintf(vp, "aa2g=%d", (w >> 12) & 0x3);
-+ vp++;
-+
-+ vp += sprintf(vp, "aa5g=%d", (w >> 14) & 0x3);
-+ vp++;
-+
-+ /* Words 47-49 set the (wl) pa settings */
-+ woff = 47;
-+
-+ for (i = 0; i < 3; i++) {
-+ vp += sprintf(vp, "pa0b%d=%d", i, b[woff+i]);
-+ vp++;
-+ vp += sprintf(vp, "pa1b%d=%d", i, b[woff+i+6]);
-+ vp++;
-+ }
-+
-+ /*
-+ * Words 50-51 set the customer-configured wl led behavior.
-+ * 8 bits/gpio pin. High bit: activehi=0, activelo=1;
-+ * LED behavior values defined in wlioctl.h .
-+ */
-+ w = b[50];
-+ if ((w != 0) && (w != 0xffff)) {
-+ /* ledbh0 */
-+ vp += sprintf(vp, "ledbh0=%d", (w & 0xff));
-+ vp++;
-+
-+ /* ledbh1 */
-+ vp += sprintf(vp, "ledbh1=%d", (w >> 8) & 0xff);
-+ vp++;
-+ }
-+ w = b[51];
-+ if ((w != 0) && (w != 0xffff)) {
-+ /* ledbh2 */
-+ vp += sprintf(vp, "ledbh2=%d", w & 0xff);
-+ vp++;
-+
-+ /* ledbh */
-+ vp += sprintf(vp, "ledbh3=%d", (w >> 8) & 0xff);
-+ vp++;
-+ }
-+
-+ /* Word 52 is max power 0/1 */
-+ w = b[52];
-+ vp += sprintf(vp, "pa0maxpwr=%d", w & 0xff);
-+ vp++;
-+ vp += sprintf(vp, "pa1maxpwr=%d", (w >> 8) & 0xff);
-+ vp++;
-+
-+ /* Word 56 is idle tssi target 0/1 */
-+ w = b[56];
-+ vp += sprintf(vp, "pa0itssit=%d", w & 0xff);
-+ vp++;
-+ vp += sprintf(vp, "pa1itssit=%d", (w >> 8) & 0xff);
-+ vp++;
-+
-+ /* Word 57 is boardflags, if not programmed make it zero */
-+ w32 = (uint32)b[57];
-+ if (w32 == 0xffff) w32 = 0;
-+ if (sromrev > 1) {
-+ /* Word 28 is the high bits of boardflags */
-+ w32 |= (uint32)b[28] << 16;
-+ }
-+ vp += sprintf(vp, "boardflags=%d", w32);
-+ vp++;
-+
-+ /* Word 58 is antenna gain 0/1 */
-+ w = b[58];
-+ vp += sprintf(vp, "ag0=%d", w & 0xff);
-+ vp++;
-+
-+ vp += sprintf(vp, "ag1=%d", (w >> 8) & 0xff);
-+ vp++;
-+
-+ if (sromrev == 1) {
-+ /* set the oem string */
-+ vp += sprintf(vp, "oem=%02x%02x%02x%02x%02x%02x%02x%02x",
-+ ((b[59] >> 8) & 0xff), (b[59] & 0xff),
-+ ((b[60] >> 8) & 0xff), (b[60] & 0xff),
-+ ((b[61] >> 8) & 0xff), (b[61] & 0xff),
-+ ((b[62] >> 8) & 0xff), (b[62] & 0xff));
-+ vp++;
-+ } else if (sromrev == 2) {
-+ /* Word 60 OFDM tx power offset from CCK level */
-+ /* OFDM Power Offset - opo */
-+ vp += sprintf(vp, "opo=%d", b[60] & 0xff);
-+ vp++;
-+ } else {
-+ /* Word 60: cck power offsets */
-+ vp += sprintf(vp, "cckpo=%d", b[60]);
-+ vp++;
-+
-+ /* Words 61+62: 11g ofdm power offsets */
-+ w32 = ((uint32)b[62] << 16) | b[61];
-+ vp += sprintf(vp, "ofdmgpo=%d", w32);
-+ vp++;
-+ }
-+
-+ /* final nullbyte terminator */
-+done: *vp++ = '\0';
-+
-+ ASSERT((vp - base) <= VARS_MAX);
-+
-+varsdone:
-+ err = initvars_table(osh, base, vp, vars, count);
-+
-+err:
-+#ifdef WLTEST
-+ if (base != mfgsromvars)
-+#endif
-+ MFREE(osh, base, VARS_MAX);
-+ MFREE(osh, b, SROM_MAX);
-+ return err;
-+}
-+
-+/*
-+ * Read the cis and call parsecis to initialize the vars.
-+ * Return 0 on success, nonzero on error.
-+ */
-+static int
-+initvars_cis_pcmcia(void *sbh, osl_t *osh, char **vars, uint *count)
-+{
-+ uint8 *cis = NULL;
-+ int rc;
-+ uint data_sz;
-+
-+ data_sz = (sb_pcmciarev(sbh) == 1) ? (SPROM_SIZE * 2) : CIS_SIZE;
-+
-+ if ((cis = MALLOC(osh, data_sz)) == NULL)
-+ return (-2);
-+
-+ if (sb_pcmciarev(sbh) == 1) {
-+ if (srom_read(PCMCIA_BUS, (void *)NULL, osh, 0, data_sz, (uint16 *)cis)) {
-+ MFREE(osh, cis, data_sz);
-+ return (-1);
-+ }
-+ /* fix up endianess for 16-bit data vs 8-bit parsing */
-+ ltoh16_buf((uint16 *)cis, data_sz);
-+ } else
-+ OSL_PCMCIA_READ_ATTR(osh, 0, cis, data_sz);
-+
-+ rc = srom_parsecis(osh, &cis, 1, vars, count);
-+
-+ MFREE(osh, cis, data_sz);
-+
-+ return (rc);
-+}
-+
-diff -urN linux.old/arch/mips/bcm947xx/bcmutils.c linux.dev/arch/mips/bcm947xx/bcmutils.c
---- linux.old/arch/mips/bcm947xx/bcmutils.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/bcmutils.c 2006-04-28 00:34:02.000000000 +0200
-@@ -0,0 +1,247 @@
-+/*
-+ * Misc useful OS-independent routines.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id: bcmutils.c,v 1.1.1.12 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#include <typedefs.h>
-+#include <bcmdefs.h>
-+#include <stdarg.h>
-+#include <bcmutils.h>
-+#include <osl.h>
-+#include <sbutils.h>
-+#include <bcmnvram.h>
-+#include <bcmendian.h>
-+#include <bcmdevs.h>
-+
-+unsigned char bcm_ctype[] = {
-+ _BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C, /* 0-7 */
-+ _BCM_C, _BCM_C|_BCM_S, _BCM_C|_BCM_S, _BCM_C|_BCM_S, _BCM_C|_BCM_S, _BCM_C|_BCM_S, _BCM_C,
-+ _BCM_C, /* 8-15 */
-+ _BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C, /* 16-23 */
-+ _BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C, /* 24-31 */
-+ _BCM_S|_BCM_SP,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P, /* 32-39 */
-+ _BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P, /* 40-47 */
-+ _BCM_D,_BCM_D,_BCM_D,_BCM_D,_BCM_D,_BCM_D,_BCM_D,_BCM_D, /* 48-55 */
-+ _BCM_D,_BCM_D,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P, /* 56-63 */
-+ _BCM_P, _BCM_U|_BCM_X, _BCM_U|_BCM_X, _BCM_U|_BCM_X, _BCM_U|_BCM_X, _BCM_U|_BCM_X,
-+ _BCM_U|_BCM_X, _BCM_U, /* 64-71 */
-+ _BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U, /* 72-79 */
-+ _BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U, /* 80-87 */
-+ _BCM_U,_BCM_U,_BCM_U,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P, /* 88-95 */
-+ _BCM_P, _BCM_L|_BCM_X, _BCM_L|_BCM_X, _BCM_L|_BCM_X, _BCM_L|_BCM_X, _BCM_L|_BCM_X,
-+ _BCM_L|_BCM_X, _BCM_L, /* 96-103 */
-+ _BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L, /* 104-111 */
-+ _BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L, /* 112-119 */
-+ _BCM_L,_BCM_L,_BCM_L,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_C, /* 120-127 */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 128-143 */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 144-159 */
-+ _BCM_S|_BCM_SP, _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P,
-+ _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, /* 160-175 */
-+ _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P,
-+ _BCM_P, _BCM_P, _BCM_P, _BCM_P, _BCM_P, /* 176-191 */
-+ _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_U,
-+ _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_U, /* 192-207 */
-+ _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_P, _BCM_U, _BCM_U, _BCM_U,
-+ _BCM_U, _BCM_U, _BCM_U, _BCM_U, _BCM_L, /* 208-223 */
-+ _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_L,
-+ _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_L, /* 224-239 */
-+ _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_P, _BCM_L, _BCM_L, _BCM_L,
-+ _BCM_L, _BCM_L, _BCM_L, _BCM_L, _BCM_L /* 240-255 */
-+};
-+
-+
-+ulong
-+bcm_strtoul(char *cp, char **endp, uint base)
-+{
-+ ulong result, value;
-+ bool minus;
-+
-+ minus = FALSE;
-+
-+ while (bcm_isspace(*cp))
-+ cp++;
-+
-+ if (cp[0] == '+')
-+ cp++;
-+ else if (cp[0] == '-') {
-+ minus = TRUE;
-+ cp++;
-+ }
-+
-+ if (base == 0) {
-+ if (cp[0] == '0') {
-+ if ((cp[1] == 'x') || (cp[1] == 'X')) {
-+ base = 16;
-+ cp = &cp[2];
-+ } else {
-+ base = 8;
-+ cp = &cp[1];
-+ }
-+ } else
-+ base = 10;
-+ } else if (base == 16 && (cp[0] == '0') && ((cp[1] == 'x') || (cp[1] == 'X'))) {
-+ cp = &cp[2];
-+ }
-+
-+ result = 0;
-+
-+ while (bcm_isxdigit(*cp) &&
-+ (value = bcm_isdigit(*cp) ? *cp-'0' : bcm_toupper(*cp)-'A'+10) < base) {
-+ result = result*base + value;
-+ cp++;
-+ }
-+
-+ if (minus)
-+ result = (ulong)(result * -1);
-+
-+ if (endp)
-+ *endp = (char *)cp;
-+
-+ return (result);
-+}
-+
-+uchar
-+bcm_toupper(uchar c)
-+{
-+ if (bcm_islower(c))
-+ c -= 'a'-'A';
-+ return (c);
-+}
-+
-+char*
-+bcm_ether_ntoa(struct ether_addr *ea, char *buf)
-+{
-+ sprintf(buf, "%02x:%02x:%02x:%02x:%02x:%02x",
-+ ea->octet[0]&0xff, ea->octet[1]&0xff, ea->octet[2]&0xff,
-+ ea->octet[3]&0xff, ea->octet[4]&0xff, ea->octet[5]&0xff);
-+ return (buf);
-+}
-+
-+
-+/*
-+ * Search the name=value vars for a specific one and return its value.
-+ * Returns NULL if not found.
-+ */
-+char*
-+getvar(char *vars, char *name)
-+{
-+ char *s;
-+ int len;
-+
-+ len = strlen(name);
-+
-+ /* first look in vars[] */
-+ for (s = vars; s && *s;) {
-+ /* CSTYLED */
-+ if ((memcmp(s, name, len) == 0) && (s[len] == '='))
-+ return (&s[len+1]);
-+
-+ while (*s++)
-+ ;
-+ }
-+
-+ /* then query nvram */
-+ return (nvram_get(name));
-+}
-+
-+/*
-+ * Search the vars for a specific one and return its value as
-+ * an integer. Returns 0 if not found.
-+ */
-+int
-+getintvar(char *vars, char *name)
-+{
-+ char *val;
-+
-+ if ((val = getvar(vars, name)) == NULL)
-+ return (0);
-+
-+ return (bcm_strtoul(val, NULL, 0));
-+}
-+
-+
-+/*******************************************************************************
-+ * crc8
-+ *
-+ * Computes a crc8 over the input data using the polynomial:
-+ *
-+ * x^8 + x^7 +x^6 + x^4 + x^2 + 1
-+ *
-+ * The caller provides the initial value (either CRC8_INIT_VALUE
-+ * or the previous returned value) to allow for processing of
-+ * discontiguous blocks of data. When generating the CRC the
-+ * caller is responsible for complementing the final return value
-+ * and inserting it into the byte stream. When checking, a final
-+ * return value of CRC8_GOOD_VALUE indicates a valid CRC.
-+ *
-+ * Reference: Dallas Semiconductor Application Note 27
-+ * Williams, Ross N., "A Painless Guide to CRC Error Detection Algorithms",
-+ * ver 3, Aug 1993, ross@guest.adelaide.edu.au, Rocksoft Pty Ltd.,
-+ * ftp://ftp.rocksoft.com/clients/rocksoft/papers/crc_v3.txt
-+ *
-+ * ****************************************************************************
-+ */
-+
-+static uint8 crc8_table[256] = {
-+ 0x00, 0xF7, 0xB9, 0x4E, 0x25, 0xD2, 0x9C, 0x6B,
-+ 0x4A, 0xBD, 0xF3, 0x04, 0x6F, 0x98, 0xD6, 0x21,
-+ 0x94, 0x63, 0x2D, 0xDA, 0xB1, 0x46, 0x08, 0xFF,
-+ 0xDE, 0x29, 0x67, 0x90, 0xFB, 0x0C, 0x42, 0xB5,
-+ 0x7F, 0x88, 0xC6, 0x31, 0x5A, 0xAD, 0xE3, 0x14,
-+ 0x35, 0xC2, 0x8C, 0x7B, 0x10, 0xE7, 0xA9, 0x5E,
-+ 0xEB, 0x1C, 0x52, 0xA5, 0xCE, 0x39, 0x77, 0x80,
-+ 0xA1, 0x56, 0x18, 0xEF, 0x84, 0x73, 0x3D, 0xCA,
-+ 0xFE, 0x09, 0x47, 0xB0, 0xDB, 0x2C, 0x62, 0x95,
-+ 0xB4, 0x43, 0x0D, 0xFA, 0x91, 0x66, 0x28, 0xDF,
-+ 0x6A, 0x9D, 0xD3, 0x24, 0x4F, 0xB8, 0xF6, 0x01,
-+ 0x20, 0xD7, 0x99, 0x6E, 0x05, 0xF2, 0xBC, 0x4B,
-+ 0x81, 0x76, 0x38, 0xCF, 0xA4, 0x53, 0x1D, 0xEA,
-+ 0xCB, 0x3C, 0x72, 0x85, 0xEE, 0x19, 0x57, 0xA0,
-+ 0x15, 0xE2, 0xAC, 0x5B, 0x30, 0xC7, 0x89, 0x7E,
-+ 0x5F, 0xA8, 0xE6, 0x11, 0x7A, 0x8D, 0xC3, 0x34,
-+ 0xAB, 0x5C, 0x12, 0xE5, 0x8E, 0x79, 0x37, 0xC0,
-+ 0xE1, 0x16, 0x58, 0xAF, 0xC4, 0x33, 0x7D, 0x8A,
-+ 0x3F, 0xC8, 0x86, 0x71, 0x1A, 0xED, 0xA3, 0x54,
-+ 0x75, 0x82, 0xCC, 0x3B, 0x50, 0xA7, 0xE9, 0x1E,
-+ 0xD4, 0x23, 0x6D, 0x9A, 0xF1, 0x06, 0x48, 0xBF,
-+ 0x9E, 0x69, 0x27, 0xD0, 0xBB, 0x4C, 0x02, 0xF5,
-+ 0x40, 0xB7, 0xF9, 0x0E, 0x65, 0x92, 0xDC, 0x2B,
-+ 0x0A, 0xFD, 0xB3, 0x44, 0x2F, 0xD8, 0x96, 0x61,
-+ 0x55, 0xA2, 0xEC, 0x1B, 0x70, 0x87, 0xC9, 0x3E,
-+ 0x1F, 0xE8, 0xA6, 0x51, 0x3A, 0xCD, 0x83, 0x74,
-+ 0xC1, 0x36, 0x78, 0x8F, 0xE4, 0x13, 0x5D, 0xAA,
-+ 0x8B, 0x7C, 0x32, 0xC5, 0xAE, 0x59, 0x17, 0xE0,
-+ 0x2A, 0xDD, 0x93, 0x64, 0x0F, 0xF8, 0xB6, 0x41,
-+ 0x60, 0x97, 0xD9, 0x2E, 0x45, 0xB2, 0xFC, 0x0B,
-+ 0xBE, 0x49, 0x07, 0xF0, 0x9B, 0x6C, 0x22, 0xD5,
-+ 0xF4, 0x03, 0x4D, 0xBA, 0xD1, 0x26, 0x68, 0x9F
-+};
-+
-+#define CRC_INNER_LOOP(n, c, x) \
-+ (c) = ((c) >> 8) ^ crc##n##_table[((c) ^ (x)) & 0xff]
-+
-+uint8
-+hndcrc8(
-+ uint8 *pdata, /* pointer to array of data to process */
-+ uint nbytes, /* number of input data bytes to process */
-+ uint8 crc /* either CRC8_INIT_VALUE or previous return value */
-+)
-+{
-+ /* hard code the crc loop instead of using CRC_INNER_LOOP macro
-+ * to avoid the undefined and unnecessary (uint8 >> 8) operation.
-+ */
-+ while (nbytes-- > 0)
-+ crc = crc8_table[(crc ^ *pdata++) & 0xff];
-+
-+ return crc;
-+}
-+
-+
-diff -urN linux.old/arch/mips/bcm947xx/cfe_env.c linux.dev/arch/mips/bcm947xx/cfe_env.c
---- linux.old/arch/mips/bcm947xx/cfe_env.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/cfe_env.c 2006-04-27 19:24:19.000000000 +0200
-@@ -0,0 +1,234 @@
-+/*
-+ * NVRAM variable manipulation (Linux kernel half)
-+ *
-+ * Copyright 2001-2003, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/string.h>
-+#include <asm/io.h>
-+#include <asm/uaccess.h>
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <bcmendian.h>
-+#include <bcmutils.h>
-+
-+#define NVRAM_SIZE (0x1ff0)
-+static char _nvdata[NVRAM_SIZE] __initdata;
-+static char _valuestr[256] __initdata;
-+
-+/*
-+ * TLV types. These codes are used in the "type-length-value"
-+ * encoding of the items stored in the NVRAM device (flash or EEPROM)
-+ *
-+ * The layout of the flash/nvram is as follows:
-+ *
-+ * <type> <length> <data ...> <type> <length> <data ...> <type_end>
-+ *
-+ * The type code of "ENV_TLV_TYPE_END" marks the end of the list.
-+ * The "length" field marks the length of the data section, not
-+ * including the type and length fields.
-+ *
-+ * Environment variables are stored as follows:
-+ *
-+ * <type_env> <length> <flags> <name> = <value>
-+ *
-+ * If bit 0 (low bit) is set, the length is an 8-bit value.
-+ * If bit 0 (low bit) is clear, the length is a 16-bit value
-+ *
-+ * Bit 7 set indicates "user" TLVs. In this case, bit 0 still
-+ * indicates the size of the length field.
-+ *
-+ * Flags are from the constants below:
-+ *
-+ */
-+#define ENV_LENGTH_16BITS 0x00 /* for low bit */
-+#define ENV_LENGTH_8BITS 0x01
-+
-+#define ENV_TYPE_USER 0x80
-+
-+#define ENV_CODE_SYS(n,l) (((n)<<1)|(l))
-+#define ENV_CODE_USER(n,l) ((((n)<<1)|(l)) | ENV_TYPE_USER)
-+
-+/*
-+ * The actual TLV types we support
-+ */
-+
-+#define ENV_TLV_TYPE_END 0x00
-+#define ENV_TLV_TYPE_ENV ENV_CODE_SYS(0,ENV_LENGTH_8BITS)
-+
-+/*
-+ * Environment variable flags
-+ */
-+
-+#define ENV_FLG_NORMAL 0x00 /* normal read/write */
-+#define ENV_FLG_BUILTIN 0x01 /* builtin - not stored in flash */
-+#define ENV_FLG_READONLY 0x02 /* read-only - cannot be changed */
-+
-+#define ENV_FLG_MASK 0xFF /* mask of attributes we keep */
-+#define ENV_FLG_ADMIN 0x100 /* lets us internally override permissions */
-+
-+
-+/* *********************************************************************
-+ * _nvram_read(buffer,offset,length)
-+ *
-+ * Read data from the NVRAM device
-+ *
-+ * Input parameters:
-+ * buffer - destination buffer
-+ * offset - offset of data to read
-+ * length - number of bytes to read
-+ *
-+ * Return value:
-+ * number of bytes read, or <0 if error occured
-+ ********************************************************************* */
-+static int
-+_nvram_read(unsigned char *nv_buf, unsigned char *buffer, int offset, int length)
-+{
-+ int i;
-+ if (offset > NVRAM_SIZE)
-+ return -1;
-+
-+ for ( i = 0; i < length; i++) {
-+ buffer[i] = ((volatile unsigned char*)nv_buf)[offset + i];
-+ }
-+ return length;
-+}
-+
-+
-+static char*
-+_strnchr(const char *dest,int c,size_t cnt)
-+{
-+ while (*dest && (cnt > 0)) {
-+ if (*dest == c) return (char *) dest;
-+ dest++;
-+ cnt--;
-+ }
-+ return NULL;
-+}
-+
-+
-+
-+/*
-+ * Core support API: Externally visible.
-+ */
-+
-+/*
-+ * Get the value of an NVRAM variable
-+ * @param name name of variable to get
-+ * @return value of variable or NULL if undefined
-+ */
-+
-+char*
-+cfe_env_get(unsigned char *nv_buf, char* name)
-+{
-+ int size;
-+ unsigned char *buffer;
-+ unsigned char *ptr;
-+ unsigned char *envval;
-+ unsigned int reclen;
-+ unsigned int rectype;
-+ int offset;
-+ int flg;
-+
-+ size = NVRAM_SIZE;
-+ buffer = &_nvdata[0];
-+
-+ ptr = buffer;
-+ offset = 0;
-+
-+ /* Read the record type and length */
-+ if (_nvram_read(nv_buf, ptr,offset,1) != 1) {
-+ goto error;
-+ }
-+
-+ while ((*ptr != ENV_TLV_TYPE_END) && (size > 1)) {
-+
-+ /* Adjust pointer for TLV type */
-+ rectype = *(ptr);
-+ offset++;
-+ size--;
-+
-+ /*
-+ * Read the length. It can be either 1 or 2 bytes
-+ * depending on the code
-+ */
-+ if (rectype & ENV_LENGTH_8BITS) {
-+ /* Read the record type and length - 8 bits */
-+ if (_nvram_read(nv_buf, ptr,offset,1) != 1) {
-+ goto error;
-+ }
-+ reclen = *(ptr);
-+ size--;
-+ offset++;
-+ }
-+ else {
-+ /* Read the record type and length - 16 bits, MSB first */
-+ if (_nvram_read(nv_buf, ptr,offset,2) != 2) {
-+ goto error;
-+ }
-+ reclen = (((unsigned int) *(ptr)) << 8) + (unsigned int) *(ptr+1);
-+ size -= 2;
-+ offset += 2;
-+ }
-+
-+ if (reclen > size)
-+ break; /* should not happen, bad NVRAM */
-+
-+ switch (rectype) {
-+ case ENV_TLV_TYPE_ENV:
-+ /* Read the TLV data */
-+ if (_nvram_read(nv_buf, ptr,offset,reclen) != reclen)
-+ goto error;
-+ flg = *ptr++;
-+ envval = (unsigned char *) _strnchr(ptr,'=',(reclen-1));
-+ if (envval) {
-+ *envval++ = '\0';
-+ memcpy(_valuestr,envval,(reclen-1)-(envval-ptr));
-+ _valuestr[(reclen-1)-(envval-ptr)] = '\0';
-+#if 0
-+ printk(KERN_INFO "NVRAM:%s=%s\n", ptr, _valuestr);
-+#endif
-+ if(!strcmp(ptr, name)){
-+ return _valuestr;
-+ }
-+ if((strlen(ptr) > 1) && !strcmp(&ptr[1], name))
-+ return _valuestr;
-+ }
-+ break;
-+
-+ default:
-+ /* Unknown TLV type, skip it. */
-+ break;
-+ }
-+
-+ /*
-+ * Advance to next TLV
-+ */
-+
-+ size -= (int)reclen;
-+ offset += reclen;
-+
-+ /* Read the next record type */
-+ ptr = buffer;
-+ if (_nvram_read(nv_buf, ptr,offset,1) != 1)
-+ goto error;
-+ }
-+
-+error:
-+ return NULL;
-+
-+}
-+
-diff -urN linux.old/arch/mips/bcm947xx/compressed/Makefile linux.dev/arch/mips/bcm947xx/compressed/Makefile
---- linux.old/arch/mips/bcm947xx/compressed/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/compressed/Makefile 2006-04-27 19:24:19.000000000 +0200
-@@ -0,0 +1,33 @@
-+#
-+# Makefile for Broadcom BCM947XX boards
-+#
-+# Copyright 2001-2003, Broadcom Corporation
-+# All Rights Reserved.
-+#
-+# THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+# KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+# SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+# FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+#
-+# $Id: Makefile,v 1.2 2005/04/02 12:12:57 wbx Exp $
-+#
-+
-+OBJCOPY_ARGS = -O binary -R .reginfo -R .note -R .comment -R .mdebug -S
-+SYSTEM ?= $(TOPDIR)/vmlinux
-+
-+all: vmlinuz
-+
-+# Don't build dependencies, this may die if $(CC) isn't gcc
-+dep:
-+
-+# Create a gzipped version named vmlinuz for compatibility
-+vmlinuz: piggy
-+ gzip -c9 $< > $@
-+
-+piggy: $(SYSTEM)
-+ $(OBJCOPY) $(OBJCOPY_ARGS) $< $@
-+
-+mrproper: clean
-+
-+clean:
-+ rm -f vmlinuz piggy
-diff -urN linux.old/arch/mips/bcm947xx/export.c linux.dev/arch/mips/bcm947xx/export.c
---- linux.old/arch/mips/bcm947xx/export.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/export.c 2006-04-28 02:57:34.000000000 +0200
-@@ -0,0 +1,62 @@
-+#include <linux/module.h>
-+
-+#define _export(n) \
-+ void n(void); \
-+ EXPORT_SYMBOL(n);
-+
-+_export(bcm947xx_sbh)
-+
-+_export(sb_attach)
-+_export(sb_boardtype)
-+_export(sb_boardvendor)
-+_export(sb_btcgpiowar)
-+_export(sb_bus)
-+_export(sb_chip)
-+_export(sb_chiprev)
-+_export(sb_chipcrev)
-+_export(sb_chippkg)
-+_export(sb_clkctl_clk)
-+_export(sb_clkctl_fast_pwrup_delay)
-+_export(sb_clkctl_init)
-+_export(sb_clkctl_xtal)
-+_export(sb_core_disable)
-+_export(sb_core_reset)
-+_export(sb_core_tofixup)
-+_export(sb_coreflags)
-+_export(sb_coreflagshi)
-+_export(sb_coreidx)
-+_export(sb_corerev)
-+_export(sb_coreunit)
-+_export(sb_detach)
-+_export(sb_deviceremoved)
-+_export(sb_gpiocontrol)
-+_export(sb_gpioled)
-+_export(sb_gpioin)
-+_export(sb_gpioout)
-+_export(sb_gpioouten)
-+_export(sb_gpiotimerval)
-+_export(sb_iscoreup)
-+_export(sb_pci_setup)
-+_export(sb_pcirev)
-+_export(sb_pcmcia_init)
-+_export(sb_pcmciarev)
-+_export(sb_register_intr_callback)
-+_export(sb_setcore)
-+_export(sb_war16165)
-+_export(sb_osh)
-+
-+_export(getvar)
-+_export(getintvar)
-+_export(bcm_strtoul)
-+_export(bcm_ctype)
-+_export(bcm_toupper)
-+_export(bcm_ether_ntoa)
-+
-+_export(nvram_get)
-+_export(nvram_getall)
-+_export(nvram_set)
-+_export(nvram_unset)
-+_export(nvram_commit)
-+
-+_export(srom_read)
-+_export(srom_write)
-diff -urN linux.old/arch/mips/bcm947xx/generic/Makefile linux.dev/arch/mips/bcm947xx/generic/Makefile
---- linux.old/arch/mips/bcm947xx/generic/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/generic/Makefile 2006-04-27 19:24:19.000000000 +0200
-@@ -0,0 +1,15 @@
-+#
-+# Makefile for the BCM947xx specific kernel interface routines
-+# under Linux.
-+#
-+
-+.S.s:
-+ $(CPP) $(AFLAGS) $< -o $*.s
-+.S.o:
-+ $(CC) $(AFLAGS) -c $< -o $*.o
-+
-+O_TARGET := brcm.o
-+
-+obj-y := int-handler.o irq.o
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux.old/arch/mips/bcm947xx/generic/int-handler.S linux.dev/arch/mips/bcm947xx/generic/int-handler.S
---- linux.old/arch/mips/bcm947xx/generic/int-handler.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/generic/int-handler.S 2006-04-27 19:24:19.000000000 +0200
-@@ -0,0 +1,51 @@
-+/*
-+ * Generic interrupt handler for Broadcom MIPS boards
-+ *
-+ * Copyright 2004, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: int-handler.S,v 1.1 2005/03/16 13:50:00 wbx Exp $
-+ */
-+
-+#include <linux/config.h>
-+
-+#include <asm/asm.h>
-+#include <asm/mipsregs.h>
-+#include <asm/regdef.h>
-+#include <asm/stackframe.h>
-+
-+/*
-+ * MIPS IRQ Source
-+ * -------- ------
-+ * 0 Software (ignored)
-+ * 1 Software (ignored)
-+ * 2 Combined hardware interrupt (hw0)
-+ * 3 Hardware
-+ * 4 Hardware
-+ * 5 Hardware
-+ * 6 Hardware
-+ * 7 R4k timer
-+ */
-+
-+ .text
-+ .set noreorder
-+ .set noat
-+ .align 5
-+ NESTED(brcmIRQ, PT_SIZE, sp)
-+ SAVE_ALL
-+ CLI
-+ .set at
-+ .set noreorder
-+
-+ jal brcm_irq_dispatch
-+ move a0, sp
-+
-+ j ret_from_irq
-+ nop
-+
-+ END(brcmIRQ)
-diff -urN linux.old/arch/mips/bcm947xx/generic/irq.c linux.dev/arch/mips/bcm947xx/generic/irq.c
---- linux.old/arch/mips/bcm947xx/generic/irq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/generic/irq.c 2006-04-27 19:24:19.000000000 +0200
-@@ -0,0 +1,130 @@
-+/*
-+ * Generic interrupt control functions for Broadcom MIPS boards
-+ *
-+ * Copyright 2004, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: irq.c,v 1.1 2005/03/16 13:50:00 wbx Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/types.h>
-+#include <linux/interrupt.h>
-+#include <linux/irq.h>
-+
-+#include <asm/irq.h>
-+#include <asm/mipsregs.h>
-+#include <asm/gdb-stub.h>
-+
-+#define ALLINTS (IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4 | IE_IRQ5)
-+
-+extern asmlinkage void brcmIRQ(void);
-+extern asmlinkage unsigned int do_IRQ(int irq, struct pt_regs *regs);
-+
-+void
-+brcm_irq_dispatch(struct pt_regs *regs)
-+{
-+ u32 cause;
-+
-+ cause = read_c0_cause() &
-+ read_c0_status() &
-+ CAUSEF_IP;
-+
-+#ifdef CONFIG_KERNPROF
-+ change_c0_status(cause | 1, 1);
-+#else
-+ clear_c0_status(cause);
-+#endif
-+
-+ if (cause & CAUSEF_IP7)
-+ do_IRQ(7, regs);
-+ if (cause & CAUSEF_IP2)
-+ do_IRQ(2, regs);
-+ if (cause & CAUSEF_IP3)
-+ do_IRQ(3, regs);
-+ if (cause & CAUSEF_IP4)
-+ do_IRQ(4, regs);
-+ if (cause & CAUSEF_IP5)
-+ do_IRQ(5, regs);
-+ if (cause & CAUSEF_IP6)
-+ do_IRQ(6, regs);
-+}
-+
-+static void
-+enable_brcm_irq(unsigned int irq)
-+{
-+ if (irq < 8)
-+ set_c0_status(1 << (irq + 8));
-+ else
-+ set_c0_status(IE_IRQ0);
-+}
-+
-+static void
-+disable_brcm_irq(unsigned int irq)
-+{
-+ if (irq < 8)
-+ clear_c0_status(1 << (irq + 8));
-+ else
-+ clear_c0_status(IE_IRQ0);
-+}
-+
-+static void
-+ack_brcm_irq(unsigned int irq)
-+{
-+ /* Already done in brcm_irq_dispatch */
-+}
-+
-+static unsigned int
-+startup_brcm_irq(unsigned int irq)
-+{
-+ enable_brcm_irq(irq);
-+
-+ return 0; /* never anything pending */
-+}
-+
-+static void
-+end_brcm_irq(unsigned int irq)
-+{
-+ if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-+ enable_brcm_irq(irq);
-+}
-+
-+static struct hw_interrupt_type brcm_irq_type = {
-+ typename: "MIPS",
-+ startup: startup_brcm_irq,
-+ shutdown: disable_brcm_irq,
-+ enable: enable_brcm_irq,
-+ disable: disable_brcm_irq,
-+ ack: ack_brcm_irq,
-+ end: end_brcm_irq,
-+ NULL
-+};
-+
-+void __init
-+init_IRQ(void)
-+{
-+ int i;
-+
-+ for (i = 0; i < NR_IRQS; i++) {
-+ irq_desc[i].status = IRQ_DISABLED;
-+ irq_desc[i].action = 0;
-+ irq_desc[i].depth = 1;
-+ irq_desc[i].handler = &brcm_irq_type;
-+ }
-+
-+ set_except_vector(0, brcmIRQ);
-+ change_c0_status(ST0_IM, ALLINTS);
-+
-+#ifdef CONFIG_REMOTE_DEBUG
-+ printk("Breaking into debugger...\n");
-+ set_debug_traps();
-+ breakpoint();
-+#endif
-+}
-diff -urN linux.old/arch/mips/bcm947xx/gpio.c linux.dev/arch/mips/bcm947xx/gpio.c
---- linux.old/arch/mips/bcm947xx/gpio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/gpio.c 2006-04-27 23:09:33.000000000 +0200
-@@ -0,0 +1,159 @@
-+/*
-+ * GPIO char driver
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/fs.h>
-+#include <linux/miscdevice.h>
-+#include <asm/uaccess.h>
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <bcmutils.h>
-+#include <sbutils.h>
-+#include <bcmdevs.h>
-+
-+static sb_t *gpio_sbh;
-+static int gpio_major;
-+static devfs_handle_t gpio_dir;
-+static struct {
-+ char *name;
-+ devfs_handle_t handle;
-+} gpio_file[] = {
-+ { "in", NULL },
-+ { "out", NULL },
-+ { "outen", NULL },
-+ { "control", NULL }
-+};
-+
-+static int
-+gpio_open(struct inode *inode, struct file * file)
-+{
-+ if (MINOR(inode->i_rdev) > ARRAYSIZE(gpio_file))
-+ return -ENODEV;
-+
-+ MOD_INC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int
-+gpio_release(struct inode *inode, struct file * file)
-+{
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static ssize_t
-+gpio_read(struct file *file, char *buf, size_t count, loff_t *ppos)
-+{
-+ u32 val;
-+
-+ switch (MINOR(file->f_dentry->d_inode->i_rdev)) {
-+ case 0:
-+ val = sb_gpioin(gpio_sbh);
-+ break;
-+ case 1:
-+ val = sb_gpioout(gpio_sbh, 0, 0, GPIO_DRV_PRIORITY);
-+ break;
-+ case 2:
-+ val = sb_gpioouten(gpio_sbh, 0, 0, GPIO_DRV_PRIORITY);
-+ break;
-+ case 3:
-+ val = sb_gpiocontrol(gpio_sbh, 0, 0, GPIO_DRV_PRIORITY);
-+ break;
-+ default:
-+ return -ENODEV;
-+ }
-+
-+ if (put_user(val, (u32 *) buf))
-+ return -EFAULT;
-+
-+ return sizeof(val);
-+}
-+
-+static ssize_t
-+gpio_write(struct file *file, const char *buf, size_t count, loff_t *ppos)
-+{
-+ u32 val;
-+
-+ if (get_user(val, (u32 *) buf))
-+ return -EFAULT;
-+
-+ switch (MINOR(file->f_dentry->d_inode->i_rdev)) {
-+ case 0:
-+ return -EACCES;
-+ case 1:
-+ sb_gpioout(gpio_sbh, ~0, val, GPIO_DRV_PRIORITY);
-+ break;
-+ case 2:
-+ sb_gpioouten(gpio_sbh, ~0, val, GPIO_DRV_PRIORITY);
-+ break;
-+ case 3:
-+ sb_gpiocontrol(gpio_sbh, ~0, val, GPIO_DRV_PRIORITY);
-+ break;
-+ default:
-+ return -ENODEV;
-+ }
-+
-+ return sizeof(val);
-+}
-+
-+static struct file_operations gpio_fops = {
-+ owner: THIS_MODULE,
-+ open: gpio_open,
-+ release: gpio_release,
-+ read: gpio_read,
-+ write: gpio_write,
-+};
-+
-+static int __init
-+gpio_init(void)
-+{
-+ int i;
-+
-+ if (!(gpio_sbh = sb_kattach()))
-+ return -ENODEV;
-+
-+ sb_gpiosetcore(gpio_sbh);
-+
-+ if ((gpio_major = devfs_register_chrdev(0, "gpio", &gpio_fops)) < 0)
-+ return gpio_major;
-+
-+ gpio_dir = devfs_mk_dir(NULL, "gpio", NULL);
-+
-+ for (i = 0; i < ARRAYSIZE(gpio_file); i++) {
-+ gpio_file[i].handle = devfs_register(gpio_dir,
-+ gpio_file[i].name,
-+ DEVFS_FL_DEFAULT, gpio_major, i,
-+ S_IFCHR | S_IRUGO | S_IWUGO,
-+ &gpio_fops, NULL);
-+ }
-+
-+ return 0;
-+}
-+
-+static void __exit
-+gpio_exit(void)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAYSIZE(gpio_file); i++)
-+ devfs_unregister(gpio_file[i].handle);
-+ devfs_unregister(gpio_dir);
-+ devfs_unregister_chrdev(gpio_major, "gpio");
-+ sb_detach(gpio_sbh);
-+}
-+
-+module_init(gpio_init);
-+module_exit(gpio_exit);
-diff -urN linux.old/arch/mips/bcm947xx/hndchipc.c linux.dev/arch/mips/bcm947xx/hndchipc.c
---- linux.old/arch/mips/bcm947xx/hndchipc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/hndchipc.c 2006-04-28 00:33:05.000000000 +0200
-@@ -0,0 +1,158 @@
-+/*
-+ * BCM47XX support code for some chipcommon (old extif) facilities (uart)
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: hndchipc.c,v 1.1.1.1 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#include <typedefs.h>
-+#include <bcmdefs.h>
-+#include <osl.h>
-+#include <bcmutils.h>
-+#include <sbutils.h>
-+#include <bcmdevs.h>
-+#include <bcmnvram.h>
-+#include <sbconfig.h>
-+#include <sbextif.h>
-+#include <sbchipc.h>
-+#include <hndcpu.h>
-+
-+/*
-+ * Returns TRUE if an external UART exists at the given base
-+ * register.
-+ */
-+static bool
-+BCMINITFN(serial_exists)(osl_t *osh, uint8 *regs)
-+{
-+ uint8 save_mcr, status1;
-+
-+ save_mcr = R_REG(osh, &regs[UART_MCR]);
-+ W_REG(osh, &regs[UART_MCR], UART_MCR_LOOP | 0x0a);
-+ status1 = R_REG(osh, &regs[UART_MSR]) & 0xf0;
-+ W_REG(osh, &regs[UART_MCR], save_mcr);
-+
-+ return (status1 == 0x90);
-+}
-+
-+/*
-+ * Initializes UART access. The callback function will be called once
-+ * per found UART.
-+ */
-+void
-+BCMINITFN(sb_serial_init)(sb_t *sbh, void (*add)(void *regs, uint irq, uint baud_base,
-+ uint reg_shift))
-+{
-+ osl_t *osh;
-+ void *regs;
-+ ulong base;
-+ uint irq;
-+ int i, n;
-+
-+ osh = sb_osh(sbh);
-+
-+ if ((regs = sb_setcore(sbh, SB_EXTIF, 0))) {
-+ extifregs_t *eir = (extifregs_t *) regs;
-+ sbconfig_t *sb;
-+
-+ /* Determine external UART register base */
-+ sb = (sbconfig_t *)((ulong) eir + SBCONFIGOFF);
-+ base = EXTIF_CFGIF_BASE(sb_base(R_REG(osh, &sb->sbadmatch1)));
-+
-+ /* Determine IRQ */
-+ irq = sb_irq(sbh);
-+
-+ /* Disable GPIO interrupt initially */
-+ W_REG(osh, &eir->gpiointpolarity, 0);
-+ W_REG(osh, &eir->gpiointmask, 0);
-+
-+ /* Search for external UARTs */
-+ n = 2;
-+ for (i = 0; i < 2; i++) {
-+ regs = (void *) REG_MAP(base + (i * 8), 8);
-+ if (serial_exists(osh, regs)) {
-+ /* Set GPIO 1 to be the external UART IRQ */
-+ W_REG(osh, &eir->gpiointmask, 2);
-+ /* XXXDetermine external UART clock */
-+ if (add)
-+ add(regs, irq, 13500000, 0);
-+ }
-+ }
-+
-+ /* Add internal UART if enabled */
-+ if (R_REG(osh, &eir->corecontrol) & CC_UE)
-+ if (add)
-+ add((void *) &eir->uartdata, irq, sb_clock(sbh), 2);
-+ } else if ((regs = sb_setcore(sbh, SB_CC, 0))) {
-+ chipcregs_t *cc = (chipcregs_t *) regs;
-+ uint32 rev, cap, pll, baud_base, div;
-+
-+ /* Determine core revision and capabilities */
-+ rev = sb_corerev(sbh);
-+ cap = R_REG(osh, &cc->capabilities);
-+ pll = cap & CAP_PLL_MASK;
-+
-+ /* Determine IRQ */
-+ irq = sb_irq(sbh);
-+
-+ if (pll == PLL_TYPE1) {
-+ /* PLL clock */
-+ baud_base = sb_clock_rate(pll,
-+ R_REG(osh, &cc->clockcontrol_n),
-+ R_REG(osh, &cc->clockcontrol_m2));
-+ div = 1;
-+ } else {
-+ /* Fixed ALP clock */
-+ if (rev >= 11 && rev != 15) {
-+ baud_base = 20000000;
-+ div = 1;
-+ /* Set the override bit so we don't divide it */
-+ W_REG(osh, &cc->corecontrol, CC_UARTCLKO);
-+ }
-+ /* Internal backplane clock */
-+ else if (rev >= 3) {
-+ baud_base = sb_clock(sbh);
-+ div = 2; /* Minimum divisor */
-+ W_REG(osh, &cc->clkdiv,
-+ ((R_REG(osh, &cc->clkdiv) & ~CLKD_UART) | div));
-+ }
-+ /* Fixed internal backplane clock */
-+ else {
-+ baud_base = 88000000;
-+ div = 48;
-+ }
-+
-+ /* Clock source depends on strapping if UartClkOverride is unset */
-+ if ((rev > 0) &&
-+ ((R_REG(osh, &cc->corecontrol) & CC_UARTCLKO) == 0)) {
-+ if ((cap & CAP_UCLKSEL) == CAP_UINTCLK) {
-+ /* Internal divided backplane clock */
-+ baud_base /= div;
-+ } else {
-+ /* Assume external clock of 1.8432 MHz */
-+ baud_base = 1843200;
-+ }
-+ }
-+ }
-+
-+ /* Add internal UARTs */
-+ n = cap & CAP_UARTS_MASK;
-+ for (i = 0; i < n; i++) {
-+ /* Register offset changed after revision 0 */
-+ if (rev)
-+ regs = (void *)((ulong) &cc->uart0data + (i * 256));
-+ else
-+ regs = (void *)((ulong) &cc->uart0data + (i * 8));
-+
-+ if (add)
-+ add(regs, irq, baud_base, 0);
-+ }
-+ }
-+}
-+
-diff -urN linux.old/arch/mips/bcm947xx/include/bcm4710.h linux.dev/arch/mips/bcm947xx/include/bcm4710.h
---- linux.old/arch/mips/bcm947xx/include/bcm4710.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcm4710.h 2006-04-27 22:30:01.000000000 +0200
-@@ -0,0 +1,91 @@
-+/*
-+ * BCM4710 address space map and definitions
-+ * Think twice before adding to this file, this is not the kitchen sink
-+ * These definitions are not guaranteed for all 47xx chips, only the 4710
-+ *
-+ * Copyright 2004, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: bcm4710.h,v 1.3 2004/09/27 07:23:30 tallest Exp $
-+ */
-+
-+#ifndef _bcm4710_h_
-+#define _bcm4710_h_
-+
-+/* Address map */
-+#define BCM4710_SDRAM 0x00000000 /* Physical SDRAM */
-+#define BCM4710_PCI_MEM 0x08000000 /* Host Mode PCI memory access space (64 MB) */
-+#define BCM4710_PCI_CFG 0x0c000000 /* Host Mode PCI configuration space (64 MB) */
-+#define BCM4710_PCI_DMA 0x40000000 /* Client Mode PCI memory access space (1 GB) */
-+#define BCM4710_SDRAM_SWAPPED 0x10000000 /* Byteswapped Physical SDRAM */
-+#define BCM4710_ENUM 0x18000000 /* Beginning of core enumeration space */
-+
-+/* Core register space */
-+#define BCM4710_REG_SDRAM 0x18000000 /* SDRAM core registers */
-+#define BCM4710_REG_ILINE20 0x18001000 /* InsideLine20 core registers */
-+#define BCM4710_REG_EMAC0 0x18002000 /* Ethernet MAC 0 core registers */
-+#define BCM4710_REG_CODEC 0x18003000 /* Codec core registers */
-+#define BCM4710_REG_USB 0x18004000 /* USB core registers */
-+#define BCM4710_REG_PCI 0x18005000 /* PCI core registers */
-+#define BCM4710_REG_MIPS 0x18006000 /* MIPS core registers */
-+#define BCM4710_REG_EXTIF 0x18007000 /* External Interface core registers */
-+#define BCM4710_REG_EMAC1 0x18008000 /* Ethernet MAC 1 core registers */
-+
-+#define BCM4710_EXTIF 0x1f000000 /* External Interface base address */
-+#define BCM4710_PCMCIA_MEM 0x1f000000 /* External Interface PCMCIA memory access */
-+#define BCM4710_PCMCIA_IO 0x1f100000 /* PCMCIA I/O access */
-+#define BCM4710_PCMCIA_CONF 0x1f200000 /* PCMCIA configuration */
-+#define BCM4710_PROG 0x1f800000 /* Programable interface */
-+#define BCM4710_FLASH 0x1fc00000 /* Flash */
-+
-+#define BCM4710_EJTAG 0xff200000 /* MIPS EJTAG space (2M) */
-+
-+#define BCM4710_UART (BCM4710_REG_EXTIF + 0x00000300)
-+
-+#define BCM4710_EUART (BCM4710_EXTIF + 0x00800000)
-+#define BCM4710_LED (BCM4710_EXTIF + 0x00900000)
-+
-+#define SBFLAG_PCI 0
-+#define SBFLAG_ENET0 1
-+#define SBFLAG_ILINE20 2
-+#define SBFLAG_CODEC 3
-+#define SBFLAG_USB 4
-+#define SBFLAG_EXTIF 5
-+#define SBFLAG_ENET1 6
-+
-+#ifdef CONFIG_HWSIM
-+#define BCM4710_TRACE(trval) do { *((int *)0xa0000f18) = (trval); } while (0)
-+#else
-+#define BCM4710_TRACE(trval)
-+#endif
-+
-+
-+/* BCM94702 CPCI -ExtIF used for LocalBus devs */
-+
-+#define BCM94702_CPCI_RESET_ADDR BCM4710_EXTIF
-+#define BCM94702_CPCI_BOARDID_ADDR (BCM4710_EXTIF | 0x4000)
-+#define BCM94702_CPCI_DOC_ADDR (BCM4710_EXTIF | 0x6000)
-+#define BCM94702_DOC_ADDR BCM94702_CPCI_DOC_ADDR
-+#define BCM94702_CPCI_LED_ADDR (BCM4710_EXTIF | 0xc000)
-+#define BCM94702_CPCI_NVRAM_ADDR (BCM4710_EXTIF | 0xe000)
-+#define BCM94702_CPCI_NVRAM_SIZE 0x1ff0 /* 8K NVRAM : DS1743/STM48txx*/
-+#define BCM94702_CPCI_TOD_REG_BASE (BCM94702_CPCI_NVRAM_ADDR | 0x1ff0)
-+
-+#define LED_REG(x) \
-+ (*(volatile unsigned char *) (KSEG1ADDR(BCM94702_CPCI_LED_ADDR) + (x)))
-+
-+/*
-+ * Reset function implemented in PLD. Read or write should trigger hard reset
-+ */
-+#define SYS_HARD_RESET() \
-+ { for (;;) \
-+ *( (volatile unsigned char *)\
-+ KSEG1ADDR(BCM94702_CPCI_RESET_ADDR) ) = 0x80; \
-+ }
-+
-+#endif /* _bcm4710_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/bcmdefs.h linux.dev/arch/mips/bcm947xx/include/bcmdefs.h
---- linux.old/arch/mips/bcm947xx/include/bcmdefs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmdefs.h 2006-04-27 20:12:21.000000000 +0200
-@@ -0,0 +1,106 @@
-+/*
-+ * Misc system wide definitions
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id: bcmdefs.h,v 1.1.1.3 2006/04/08 06:13:39 honor Exp $
-+ */
-+
-+#ifndef _bcmdefs_h_
-+#define _bcmdefs_h_
-+
-+/*
-+ * One doesn't need to include this file explicitly, gets included automatically if
-+ * typedefs.h is included.
-+ */
-+
-+/* Reclaiming text and data :
-+ * The following macros specify special linker sections that can be reclaimed
-+ * after a system is considered 'up'.
-+ */
-+#if defined(__GNUC__) && defined(BCMRECLAIM)
-+extern bool bcmreclaimed;
-+#define BCMINITDATA(_data) __attribute__ ((__section__ (".dataini." #_data))) _data
-+#define BCMINITFN(_fn) __attribute__ ((__section__ (".textini." #_fn))) _fn
-+#else /* #if defined(__GNUC__) && defined(BCMRECLAIM) */
-+#define BCMINITDATA(_data) _data
-+#define BCMINITFN(_fn) _fn
-+#define bcmreclaimed 0
-+#endif /* #if defined(__GNUC__) && defined(BCMRECLAIM) */
-+
-+/* Reclaim uninit functions if BCMNODOWN is defined */
-+/* and if they are not already removed by -gc-sections */
-+#ifdef BCMNODOWN
-+#define BCMUNINITFN(_fn) BCMINITFN(_fn)
-+#else
-+#define BCMUNINITFN(_fn) _fn
-+#endif
-+
-+#ifdef BCMRECLAIM
-+#define CONST
-+#else
-+#define CONST const
-+#endif /* BCMRECLAIM */
-+
-+/* Compatibility with old-style BCMRECLAIM */
-+#define BCMINIT(_id) _id
-+
-+
-+/* Put some library data/code into ROM to reduce RAM requirements */
-+#if defined(__GNUC__) && defined(BCMROMOFFLOAD)
-+#define BCMROMDATA(_data) __attribute__ ((__section__ (".datarom." #_data))) _data
-+#define BCMROMFN(_fn) __attribute__ ((__section__ (".textrom." #_fn))) _fn
-+#else
-+#define BCMROMDATA(_data) _data
-+#define BCMROMFN(_fn) _fn
-+#endif
-+
-+/* Bus types */
-+#define SB_BUS 0 /* Silicon Backplane */
-+#define PCI_BUS 1 /* PCI target */
-+#define PCMCIA_BUS 2 /* PCMCIA target */
-+#define SDIO_BUS 3 /* SDIO target */
-+#define JTAG_BUS 4 /* JTAG */
-+#define NO_BUS 0xFF /* Bus that does not support R/W REG */
-+
-+/* Allows optimization for single-bus support */
-+#ifdef BCMBUSTYPE
-+#define BUSTYPE(bus) (BCMBUSTYPE)
-+#else
-+#define BUSTYPE(bus) (bus)
-+#endif
-+
-+/* Defines for DMA Address Width - Shared between OSL and HNDDMA */
-+#define DMADDR_MASK_32 0x0 /* Address mask for 32-bits */
-+#define DMADDR_MASK_30 0xc0000000 /* Address mask for 30-bits */
-+#define DMADDR_MASK_0 0xffffffff /* Address mask for 0-bits (hi-part) */
-+
-+#define DMADDRWIDTH_30 30 /* 30-bit addressing capability */
-+#define DMADDRWIDTH_32 32 /* 32-bit addressing capability */
-+#define DMADDRWIDTH_63 63 /* 64-bit addressing capability */
-+#define DMADDRWIDTH_64 64 /* 64-bit addressing capability */
-+
-+/* packet headroom necessary to accomodate the largest header in the system, (i.e TXOFF).
-+ * By doing, we avoid the need to allocate an extra buffer for the header when bridging to WL.
-+ * There is a compile time check in wlc.c which ensure that this value is at least as big
-+ * as TXOFF. This value is used in dma_rxfill (hnddma.c).
-+ */
-+#define BCMEXTRAHDROOM 160
-+
-+/* Headroom required for dongle-to-host communication. Packets allocated
-+ * locally in the dongle (e.g. for CDC ioctls or RNDIS messages) should
-+ * leave this much room in front for low-level message headers which may
-+ * be needed to get across the dongle bus to the host. (These messages
-+ * don't go over the network, so room for the full WL header above would
-+ * be a waste.)
-+ */
-+#define BCMDONGLEHDRSZ 8
-+
-+
-+
-+#endif /* _bcmdefs_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm947xx/include/bcmdevs.h
---- linux.old/arch/mips/bcm947xx/include/bcmdevs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmdevs.h 2006-04-27 22:30:25.000000000 +0200
-@@ -0,0 +1,369 @@
-+/*
-+ * Broadcom device-specific manifest constants.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id: bcmdevs.h,v 1.1.1.17 2006/04/15 01:29:08 michael Exp $
-+ */
-+
-+#ifndef _BCMDEVS_H
-+#define _BCMDEVS_H
-+
-+#include "bcm4710.h"
-+
-+/* Known PCI vendor Id's */
-+#define VENDOR_EPIGRAM 0xfeda
-+#define VENDOR_BROADCOM 0x14e4
-+#define VENDOR_3COM 0x10b7
-+#define VENDOR_NETGEAR 0x1385
-+#define VENDOR_DIAMOND 0x1092
-+#define VENDOR_DELL 0x1028
-+#define VENDOR_HP 0x0e11
-+#define VENDOR_APPLE 0x106b
-+
-+/* PCI Device Id's */
-+#define BCM4210_DEVICE_ID 0x1072 /* never used */
-+#define BCM4211_DEVICE_ID 0x4211
-+#define BCM4230_DEVICE_ID 0x1086 /* never used */
-+#define BCM4231_DEVICE_ID 0x4231
-+
-+#define BCM4410_DEVICE_ID 0x4410 /* bcm44xx family pci iline */
-+#define BCM4430_DEVICE_ID 0x4430 /* bcm44xx family cardbus iline */
-+#define BCM4412_DEVICE_ID 0x4412 /* bcm44xx family pci enet */
-+#define BCM4432_DEVICE_ID 0x4432 /* bcm44xx family cardbus enet */
-+
-+#define BCM3352_DEVICE_ID 0x3352 /* bcm3352 device id */
-+#define BCM3360_DEVICE_ID 0x3360 /* bcm3360 device id */
-+
-+#define EPI41210_DEVICE_ID 0xa0fa /* bcm4210 */
-+#define EPI41230_DEVICE_ID 0xa10e /* bcm4230 */
-+
-+#define BCM47XX_ILINE_ID 0x4711 /* 47xx iline20 */
-+#define BCM47XX_V90_ID 0x4712 /* 47xx v90 codec */
-+#define BCM47XX_ENET_ID 0x4713 /* 47xx enet */
-+#define BCM47XX_EXT_ID 0x4714 /* 47xx external i/f */
-+#define BCM47XX_USB_ID 0x4715 /* 47xx usb */
-+#define BCM47XX_USBH_ID 0x4716 /* 47xx usb host */
-+#define BCM47XX_USBD_ID 0x4717 /* 47xx usb device */
-+#define BCM47XX_IPSEC_ID 0x4718 /* 47xx ipsec */
-+#define BCM47XX_ROBO_ID 0x4719 /* 47xx/53xx roboswitch core */
-+#define BCM47XX_USB20H_ID 0x471a /* 47xx usb 2.0 host */
-+#define BCM47XX_USB20D_ID 0x471b /* 47xx usb 2.0 device */
-+#define BCM47XX_ATA100_ID 0x471d /* 47xx parallel ATA */
-+#define BCM47XX_SATAXOR_ID 0x471e /* 47xx serial ATA & XOR DMA */
-+#define BCM47XX_GIGETH_ID 0x471f /* 47xx GbE (5700) */
-+
-+#define BCM47XX_SMBUS_EMU_ID 0x47fe /* 47xx emulated SMBus device */
-+#define BCM47XX_XOR_EMU_ID 0x47ff /* 47xx emulated XOR engine */
-+
-+#define BCM4710_CHIP_ID 0x4710 /* 4710 chipid returned by sb_chip() */
-+#define BCM4710_DEVICE_ID 0x4710 /* 4710 primary function 0 */
-+
-+#define BCM4402_CHIP_ID 0x4402 /* 4402 chipid */
-+#define BCM4402_ENET_ID 0x4402 /* 4402 enet */
-+#define BCM4402_V90_ID 0x4403 /* 4402 v90 codec */
-+#define BCM4401_ENET_ID 0x170c /* 4401b0 production enet cards */
-+
-+#define BCM4306_CHIP_ID 0x4306 /* 4306 chipcommon chipid */
-+#define BCM4306_D11G_ID 0x4320 /* 4306 802.11g */
-+#define BCM4306_D11G_ID2 0x4325
-+#define BCM4306_D11A_ID 0x4321 /* 4306 802.11a */
-+#define BCM4306_UART_ID 0x4322 /* 4306 uart */
-+#define BCM4306_V90_ID 0x4323 /* 4306 v90 codec */
-+#define BCM4306_D11DUAL_ID 0x4324 /* 4306 dual A+B */
-+
-+#define BCM4309_PKG_ID 1 /* 4309 package id */
-+
-+#define BCM4311_CHIP_ID 0x4311 /* 4311 PCIe 802.11a/b/g */
-+#define BCM4311_D11G_ID 0x4311 /* 4311 802.11b/g id */
-+#define BCM4311_D11DUAL_ID 0x4312 /* 4311 802.11a/b/g id */
-+#define BCM4311_D11A_ID 0x4313 /* 4311 802.11a id */
-+
-+#define BCM4303_D11B_ID 0x4303 /* 4303 802.11b */
-+#define BCM4303_PKG_ID 2 /* 4303 package id */
-+
-+#define BCMGPRS_UART_ID 0x4333 /* Uart id used by 4306/gprs card */
-+#define BCMGPRS2_UART_ID 0x4344 /* Uart id used by 4306/gprs card */
-+
-+#define BCM4704_CHIP_ID 0x4704 /* 4704 chipcommon chipid */
-+#define BCM4704_ENET_ID 0x4706 /* 4704 enet (Use 47XX_ENET_ID instead!) */
-+
-+#define BCM4318_CHIP_ID 0x4318 /* 4318 chip common chipid */
-+#define BCM4318_D11G_ID 0x4318 /* 4318 802.11b/g id */
-+#define BCM4318_D11DUAL_ID 0x4319 /* 4318 802.11a/b/g id */
-+#define BCM4318_D11A_ID 0x431a /* 4318 802.11a id */
-+
-+#define BCM4321_CHIP_ID 0x4321 /* 4321 chip common chipid */
-+#define BCM4321_D11N_ID 0x4328 /* 4321 802.11n dualband id */
-+#define BCM4321_D11N2G_ID 0x4329 /* 4321 802.11n 2.4Hgz band id */
-+#define BCM4321_D11N5G_ID 0x432a /* 4321 802.11n 5Ghz band id */
-+
-+#define BCM4331_CHIP_ID 0x4331 /* 4331 chip common chipid */
-+#define BCM4331_D11N2G_ID 0x4330 /* 4331 802.11n 2.4Ghz band id */
-+#define BCM4331_D11N_ID 0x4331 /* 4331 802.11n dualband id */
-+#define BCM4331_D11N5G_ID 0x4332 /* 4331 802.11n 5Ghz band id */
-+
-+#define HDLSIM5350_PKG_ID 1 /* HDL simulator package id for a 5350 */
-+#define HDLSIM_PKG_ID 14 /* HDL simulator package id */
-+#define HWSIM_PKG_ID 15 /* Hardware simulator package id */
-+
-+#define BCM4712_CHIP_ID 0x4712 /* 4712 chipcommon chipid */
-+#define BCM4712_MIPS_ID 0x4720 /* 4712 base devid */
-+#define BCM4712LARGE_PKG_ID 0 /* 340pin 4712 package id */
-+#define BCM4712SMALL_PKG_ID 1 /* 200pin 4712 package id */
-+#define BCM4712MID_PKG_ID 2 /* 225pin 4712 package id */
-+
-+#define BCM5365_CHIP_ID 0x5365 /* 5365 chipcommon chipid */
-+#define BCM5350_CHIP_ID 0x5350 /* bcm5350 chipcommon chipid */
-+#define BCM5352_CHIP_ID 0x5352 /* bcm5352 chipcommon chipid */
-+
-+#define BCM4320_CHIP_ID 0x4320 /* bcm4320 chipcommon chipid */
-+
-+#define BCM4328_CHIP_ID 0x4328 /* bcm4328 chipcommon chipid */
-+
-+#define FPGA_JTAGM_ID 0x43f0 /* FPGA jtagm device id */
-+#define BCM43XX_JTAGM_ID 0x43f1 /* 43xx jtagm device id */
-+#define BCM43XXOLD_JTAGM_ID 0x4331 /* 43xx old jtagm device id */
-+
-+#define SDIOH_FPGA_ID 0x43f2 /* sdio host fpga */
-+#define SDIOD_FPGA_ID 0x43f4 /* sdio device fpga */
-+
-+#define MIMO_FPGA_ID 0x43f8 /* FPGA mimo minimacphy device id */
-+
-+#define BCM4785_CHIP_ID 0x4785 /* 4785 chipcommon chipid */
-+
-+/* PCMCIA vendor Id's */
-+
-+#define VENDOR_BROADCOM_PCMCIA 0x02d0
-+
-+/* SDIO vendor Id's */
-+#define VENDOR_BROADCOM_SDIO 0x00BF
-+
-+
-+/* boardflags */
-+#define BFL_BTCOEXIST 0x0001 /* This board implements Bluetooth coexistance */
-+#define BFL_PACTRL 0x0002 /* This board has gpio 9 controlling the PA */
-+#define BFL_AIRLINEMODE 0x0004 /* This board implements gpio13 radio disable indication */
-+#define BFL_ENETROBO 0x0010 /* This board has robo switch or core */
-+#define BFL_CCKHIPWR 0x0040 /* Can do high-power CCK transmission */
-+#define BFL_ENETADM 0x0080 /* This board has ADMtek switch */
-+#define BFL_ENETVLAN 0x0100 /* This board has vlan capability */
-+#define BFL_AFTERBURNER 0x0200 /* This board supports Afterburner mode */
-+#define BFL_NOPCI 0x0400 /* This board leaves PCI floating */
-+#define BFL_FEM 0x0800 /* This board supports the Front End Module */
-+#define BFL_EXTLNA 0x1000 /* This board has an external LNA */
-+#define BFL_HGPA 0x2000 /* This board has a high gain PA */
-+#define BFL_BTCMOD 0x4000 /* This board' BTCOEXIST is in the alternate gpios */
-+#define BFL_ALTIQ 0x8000 /* Alternate I/Q settings */
-+
-+/* boardflags2 */
-+#define BFL2_RXBB_INT_REG_DIS 0x00000001 /* This board has an external rxbb regulator */
-+#define BFL2_SSWITCH_AVAIL 0x00000002 /* This board has a superswitch for > 2 antennas */
-+#define BFL2_TXPWRCTRL_EN 0x00000004 /* This board permits TX Power Control to be enabled */
-+
-+/* board specific GPIO assignment, gpio 0-3 are also customer-configurable led */
-+#define BOARD_GPIO_BTCMOD_IN 0x010 /* bit 4 is the alternate BT Coexistance Input */
-+#define BOARD_GPIO_BTCMOD_OUT 0x020 /* bit 5 is the alternate BT Coexistance Out */
-+#define BOARD_GPIO_BTC_IN 0x080 /* bit 7 is BT Coexistance Input */
-+#define BOARD_GPIO_BTC_OUT 0x100 /* bit 8 is BT Coexistance Out */
-+#define BOARD_GPIO_PACTRL 0x200 /* bit 9 controls the PA on new 4306 boards */
-+#define PCI_CFG_GPIO_SCS 0x10 /* PCI config space bit 4 for 4306c0 slow clock source */
-+#define PCI_CFG_GPIO_HWRAD 0x20 /* PCI config space GPIO 13 for hw radio disable */
-+#define PCI_CFG_GPIO_XTAL 0x40 /* PCI config space GPIO 14 for Xtal powerup */
-+#define PCI_CFG_GPIO_PLL 0x80 /* PCI config space GPIO 15 for PLL powerdown */
-+
-+/* power control defines */
-+#define PLL_DELAY 150 /* us pll on delay */
-+#define FREF_DELAY 200 /* us fref change delay */
-+#define MIN_SLOW_CLK 32 /* us Slow clock period */
-+#define XTAL_ON_DELAY 1000 /* us crystal power-on delay */
-+
-+/* Reference Board Types */
-+
-+#define BU4710_BOARD 0x0400
-+#define VSIM4710_BOARD 0x0401
-+#define QT4710_BOARD 0x0402
-+
-+#define BU4309_BOARD 0x040a
-+#define BCM94309CB_BOARD 0x040b
-+#define BCM94309MP_BOARD 0x040c
-+#define BCM4309AP_BOARD 0x040d
-+
-+#define BCM94302MP_BOARD 0x040e
-+
-+#define BU4306_BOARD 0x0416
-+#define BCM94306CB_BOARD 0x0417
-+#define BCM94306MP_BOARD 0x0418
-+
-+#define BCM94710D_BOARD 0x041a
-+#define BCM94710R1_BOARD 0x041b
-+#define BCM94710R4_BOARD 0x041c
-+#define BCM94710AP_BOARD 0x041d
-+
-+#define BU2050_BOARD 0x041f
-+
-+
-+#define BCM94309G_BOARD 0x0421
-+
-+#define BU4704_BOARD 0x0423
-+#define BU4702_BOARD 0x0424
-+
-+#define BCM94306PC_BOARD 0x0425 /* pcmcia 3.3v 4306 card */
-+
-+
-+#define BCM94702MN_BOARD 0x0428
-+
-+/* BCM4702 1U CompactPCI Board */
-+#define BCM94702CPCI_BOARD 0x0429
-+
-+/* BCM4702 with BCM95380 VLAN Router */
-+#define BCM95380RR_BOARD 0x042a
-+
-+/* cb4306 with SiGe PA */
-+#define BCM94306CBSG_BOARD 0x042b
-+
-+/* cb4306 with SiGe PA */
-+#define PCSG94306_BOARD 0x042d
-+
-+/* bu4704 with sdram */
-+#define BU4704SD_BOARD 0x042e
-+
-+/* Dual 11a/11g Router */
-+#define BCM94704AGR_BOARD 0x042f
-+
-+/* 11a-only minipci */
-+#define BCM94308MP_BOARD 0x0430
-+
-+
-+
-+#define BU4712_BOARD 0x0444
-+#define BU4712SD_BOARD 0x045d
-+#define BU4712L_BOARD 0x045f
-+
-+/* BCM4712 boards */
-+#define BCM94712AP_BOARD 0x0445
-+#define BCM94712P_BOARD 0x0446
-+
-+/* BCM4318 boards */
-+#define BU4318_BOARD 0x0447
-+#define CB4318_BOARD 0x0448
-+#define MPG4318_BOARD 0x0449
-+#define MP4318_BOARD 0x044a
-+#define SD4318_BOARD 0x044b
-+
-+/* BCM63XX boards */
-+#define BCM96338_BOARD 0x6338
-+#define BCM96348_BOARD 0x6348
-+
-+/* Another mp4306 with SiGe */
-+#define BCM94306P_BOARD 0x044c
-+
-+/* mp4303 */
-+#define BCM94303MP_BOARD 0x044e
-+
-+/* mpsgh4306 */
-+#define BCM94306MPSGH_BOARD 0x044f
-+
-+/* BRCM 4306 w/ Front End Modules */
-+#define BCM94306MPM 0x0450
-+#define BCM94306MPL 0x0453
-+
-+/* 4712agr */
-+#define BCM94712AGR_BOARD 0x0451
-+
-+/* pcmcia 4303 */
-+#define PC4303_BOARD 0x0454
-+
-+/* 5350K */
-+#define BCM95350K_BOARD 0x0455
-+
-+/* 5350R */
-+#define BCM95350R_BOARD 0x0456
-+
-+/* 4306mplna */
-+#define BCM94306MPLNA_BOARD 0x0457
-+
-+/* 4320 boards */
-+#define BU4320_BOARD 0x0458
-+#define BU4320S_BOARD 0x0459
-+#define BCM94320PH_BOARD 0x045a
-+
-+/* 4306mph */
-+#define BCM94306MPH_BOARD 0x045b
-+
-+/* 4306pciv */
-+#define BCM94306PCIV_BOARD 0x045c
-+
-+#define BU4712SD_BOARD 0x045d
-+
-+#define BCM94320PFLSH_BOARD 0x045e
-+
-+#define BU4712L_BOARD 0x045f
-+#define BCM94712LGR_BOARD 0x0460
-+#define BCM94320R_BOARD 0x0461
-+
-+#define BU5352_BOARD 0x0462
-+
-+#define BCM94318MPGH_BOARD 0x0463
-+
-+#define BU4311_BOARD 0x0464
-+#define BCM94311MC_BOARD 0x0465
-+#define BCM94311MCAG_BOARD 0x0466
-+
-+#define BCM95352GR_BOARD 0x0467
-+
-+/* bcm95351agr */
-+#define BCM95351AGR_BOARD 0x0470
-+
-+/* bcm94704mpcb */
-+#define BCM94704MPCB_BOARD 0x0472
-+
-+/* 4785 boards */
-+#define BU4785_BOARD 0x0478
-+
-+/* 4321 boards */
-+#define BU4321_BOARD 0x046b
-+#define BU4321E_BOARD 0x047c
-+#define MP4321_BOARD 0x046c
-+#define CB2_4321_BOARD 0x046d
-+#define MC4321_BOARD 0x046e
-+
-+/* # of GPIO pins */
-+#define GPIO_NUMPINS 16
-+
-+/* radio ID codes */
-+#define NORADIO_ID 0xe4f5
-+#define NORADIO_IDCODE 0x4e4f5246
-+
-+#define BCM2050_ID 0x2050
-+#define BCM2050_IDCODE 0x02050000
-+#define BCM2050A0_IDCODE 0x1205017f
-+#define BCM2050A1_IDCODE 0x2205017f
-+#define BCM2050R8_IDCODE 0x8205017f
-+
-+#define BCM2055_ID 0x2055
-+#define BCM2055_IDCODE 0x02055000
-+#define BCM2055A0_IDCODE 0x1205517f
-+
-+#define BCM2060_ID 0x2060
-+#define BCM2060_IDCODE 0x02060000
-+#define BCM2060WW_IDCODE 0x1206017f
-+
-+#define BCM2062_ID 0x2062
-+#define BCM2062_IDCODE 0x02062000
-+#define BCM2062A0_IDCODE 0x0206217f
-+
-+/* parts of an idcode: */
-+#define IDCODE_MFG_MASK 0x00000fff
-+#define IDCODE_MFG_SHIFT 0
-+#define IDCODE_ID_MASK 0x0ffff000
-+#define IDCODE_ID_SHIFT 12
-+#define IDCODE_REV_MASK 0xf0000000
-+#define IDCODE_REV_SHIFT 28
-+
-+#endif /* _BCMDEVS_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bcm947xx/include/bcmdevs1.h
---- linux.old/arch/mips/bcm947xx/include/bcmdevs1.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmdevs1.h 2006-05-02 04:32:03.000000000 +0200
-@@ -0,0 +1,391 @@
-+/*
-+ * Broadcom device-specific manifest constants.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#ifndef _BCMDEVS_H
-+#define _BCMDEVS_H
-+
-+
-+/* Known PCI vendor Id's */
-+#define VENDOR_EPIGRAM 0xfeda
-+#define VENDOR_BROADCOM 0x14e4
-+#define VENDOR_3COM 0x10b7
-+#define VENDOR_NETGEAR 0x1385
-+#define VENDOR_DIAMOND 0x1092
-+#define VENDOR_DELL 0x1028
-+#define VENDOR_HP 0x0e11
-+#define VENDOR_APPLE 0x106b
-+
-+/* PCI Device Id's */
-+#define BCM4210_DEVICE_ID 0x1072 /* never used */
-+#define BCM4211_DEVICE_ID 0x4211
-+#define BCM4230_DEVICE_ID 0x1086 /* never used */
-+#define BCM4231_DEVICE_ID 0x4231
-+
-+#define BCM4410_DEVICE_ID 0x4410 /* bcm44xx family pci iline */
-+#define BCM4430_DEVICE_ID 0x4430 /* bcm44xx family cardbus iline */
-+#define BCM4412_DEVICE_ID 0x4412 /* bcm44xx family pci enet */
-+#define BCM4432_DEVICE_ID 0x4432 /* bcm44xx family cardbus enet */
-+
-+#define BCM3352_DEVICE_ID 0x3352 /* bcm3352 device id */
-+#define BCM3360_DEVICE_ID 0x3360 /* bcm3360 device id */
-+
-+#define EPI41210_DEVICE_ID 0xa0fa /* bcm4210 */
-+#define EPI41230_DEVICE_ID 0xa10e /* bcm4230 */
-+
-+#define BCM47XX_ILINE_ID 0x4711 /* 47xx iline20 */
-+#define BCM47XX_V90_ID 0x4712 /* 47xx v90 codec */
-+#define BCM47XX_ENET_ID 0x4713 /* 47xx enet */
-+#define BCM47XX_EXT_ID 0x4714 /* 47xx external i/f */
-+#define BCM47XX_USB_ID 0x4715 /* 47xx usb */
-+#define BCM47XX_USBH_ID 0x4716 /* 47xx usb host */
-+#define BCM47XX_USBD_ID 0x4717 /* 47xx usb device */
-+#define BCM47XX_IPSEC_ID 0x4718 /* 47xx ipsec */
-+#define BCM47XX_ROBO_ID 0x4719 /* 47xx/53xx roboswitch core */
-+#define BCM47XX_USB20H_ID 0x471a /* 47xx usb 2.0 host */
-+#define BCM47XX_USB20D_ID 0x471b /* 47xx usb 2.0 device */
-+
-+#define BCM4710_DEVICE_ID 0x4710 /* 4710 primary function 0 */
-+
-+#define BCM4610_DEVICE_ID 0x4610 /* 4610 primary function 0 */
-+#define BCM4610_ILINE_ID 0x4611 /* 4610 iline100 */
-+#define BCM4610_V90_ID 0x4612 /* 4610 v90 codec */
-+#define BCM4610_ENET_ID 0x4613 /* 4610 enet */
-+#define BCM4610_EXT_ID 0x4614 /* 4610 external i/f */
-+#define BCM4610_USB_ID 0x4615 /* 4610 usb */
-+
-+#define BCM4402_DEVICE_ID 0x4402 /* 4402 primary function 0 */
-+#define BCM4402_ENET_ID 0x4402 /* 4402 enet */
-+#define BCM4402_V90_ID 0x4403 /* 4402 v90 codec */
-+#define BCM4401_ENET_ID 0x170c /* 4401b0 production enet cards */
-+
-+#define BCM4301_DEVICE_ID 0x4301 /* 4301 primary function 0 */
-+#define BCM4301_D11B_ID 0x4301 /* 4301 802.11b */
-+
-+#define BCM4307_DEVICE_ID 0x4307 /* 4307 primary function 0 */
-+#define BCM4307_V90_ID 0x4305 /* 4307 v90 codec */
-+#define BCM4307_ENET_ID 0x4306 /* 4307 enet */
-+#define BCM4307_D11B_ID 0x4307 /* 4307 802.11b */
-+
-+#define BCM4306_DEVICE_ID 0x4306 /* 4306 chipcommon chipid */
-+#define BCM4306_D11G_ID 0x4320 /* 4306 802.11g */
-+#define BCM4306_D11G_ID2 0x4325
-+#define BCM4306_D11A_ID 0x4321 /* 4306 802.11a */
-+#define BCM4306_UART_ID 0x4322 /* 4306 uart */
-+#define BCM4306_V90_ID 0x4323 /* 4306 v90 codec */
-+#define BCM4306_D11DUAL_ID 0x4324 /* 4306 dual A+B */
-+
-+#define BCM4309_PKG_ID 1 /* 4309 package id */
-+
-+#define BCM4303_D11B_ID 0x4303 /* 4303 802.11b */
-+#define BCM4303_PKG_ID 2 /* 4303 package id */
-+
-+#define BCM4310_DEVICE_ID 0x4310 /* 4310 chipcommon chipid */
-+#define BCM4310_D11B_ID 0x4311 /* 4310 802.11b */
-+#define BCM4310_UART_ID 0x4312 /* 4310 uart */
-+#define BCM4310_ENET_ID 0x4313 /* 4310 enet */
-+#define BCM4310_USB_ID 0x4315 /* 4310 usb */
-+
-+#define BCMGPRS_UART_ID 0x4333 /* Uart id used by 4306/gprs card */
-+#define BCMGPRS2_UART_ID 0x4344 /* Uart id used by 4306/gprs card */
-+
-+
-+#define BCM4704_DEVICE_ID 0x4704 /* 4704 chipcommon chipid */
-+#define BCM4704_ENET_ID 0x4706 /* 4704 enet (Use 47XX_ENET_ID instead!) */
-+
-+#define BCM4317_DEVICE_ID 0x4317 /* 4317 chip common chipid */
-+
-+#define BCM4318_DEVICE_ID 0x4318 /* 4318 chip common chipid */
-+#define BCM4318_D11G_ID 0x4318 /* 4318 801.11b/g id */
-+#define BCM4318_D11DUAL_ID 0x4319 /* 4318 801.11a/b/g id */
-+#define BCM4318_JTAGM_ID 0x4331 /* 4318 jtagm device id */
-+
-+#define FPGA_JTAGM_ID 0x4330 /* ??? */
-+
-+/* Address map */
-+#define BCM4710_SDRAM 0x00000000 /* Physical SDRAM */
-+#define BCM4710_PCI_MEM 0x08000000 /* Host Mode PCI memory access space (64 MB) */
-+#define BCM4710_PCI_CFG 0x0c000000 /* Host Mode PCI configuration space (64 MB) */
-+#define BCM4710_PCI_DMA 0x40000000 /* Client Mode PCI memory access space (1 GB) */
-+#define BCM4710_SDRAM_SWAPPED 0x10000000 /* Byteswapped Physical SDRAM */
-+#define BCM4710_ENUM 0x18000000 /* Beginning of core enumeration space */
-+
-+/* Core register space */
-+#define BCM4710_REG_SDRAM 0x18000000 /* SDRAM core registers */
-+#define BCM4710_REG_ILINE20 0x18001000 /* InsideLine20 core registers */
-+#define BCM4710_REG_EMAC0 0x18002000 /* Ethernet MAC 0 core registers */
-+#define BCM4710_REG_CODEC 0x18003000 /* Codec core registers */
-+#define BCM4710_REG_USB 0x18004000 /* USB core registers */
-+#define BCM4710_REG_PCI 0x18005000 /* PCI core registers */
-+#define BCM4710_REG_MIPS 0x18006000 /* MIPS core registers */
-+#define BCM4710_REG_EXTIF 0x18007000 /* External Interface core registers */
-+#define BCM4710_REG_EMAC1 0x18008000 /* Ethernet MAC 1 core registers */
-+
-+#define BCM4710_EXTIF 0x1f000000 /* External Interface base address */
-+#define BCM4710_PCMCIA_MEM 0x1f000000 /* External Interface PCMCIA memory access */
-+#define BCM4710_PCMCIA_IO 0x1f100000 /* PCMCIA I/O access */
-+#define BCM4710_PCMCIA_CONF 0x1f200000 /* PCMCIA configuration */
-+#define BCM4710_PROG 0x1f800000 /* Programable interface */
-+#define BCM4710_FLASH 0x1fc00000 /* Flash */
-+
-+#define BCM4710_EJTAG 0xff200000 /* MIPS EJTAG space (2M) */
-+
-+#define BCM4710_UART (BCM4710_REG_EXTIF + 0x00000300)
-+
-+#define BCM4710_EUART (BCM4710_EXTIF + 0x00800000)
-+#define BCM4710_LED (BCM4710_EXTIF + 0x00900000)
-+
-+#define BCM4712_DEVICE_ID 0x4712 /* 4712 chipcommon chipid */
-+#define BCM4712_MIPS_ID 0x4720 /* 4712 base devid */
-+#define BCM4712LARGE_PKG_ID 0 /* 340pin 4712 package id */
-+#define BCM4712SMALL_PKG_ID 1 /* 200pin 4712 package id */
-+#define BCM4712MID_PKG_ID 2 /* 225pin 4712 package id */
-+
-+#define SDIOH_FPGA_ID 0x4380 /* sdio host fpga */
-+
-+#define BCM5365_DEVICE_ID 0x5365 /* 5365 chipcommon chipid */
-+#define BCM5350_DEVICE_ID 0x5350 /* bcm5350 chipcommon chipid */
-+#define BCM5352_DEVICE_ID 0x5352 /* bcm5352 chipcommon chipid */
-+
-+#define BCM4320_DEVICE_ID 0x4320 /* bcm4320 chipcommon chipid */
-+
-+/* PCMCIA vendor Id's */
-+
-+#define VENDOR_BROADCOM_PCMCIA 0x02d0
-+
-+/* SDIO vendor Id's */
-+#define VENDOR_BROADCOM_SDIO 0x00BF
-+
-+
-+/* boardflags */
-+#define BFL_BTCOEXIST 0x0001 /* This board implements Bluetooth coexistance */
-+#define BFL_PACTRL 0x0002 /* This board has gpio 9 controlling the PA */
-+#define BFL_AIRLINEMODE 0x0004 /* This board implements gpio13 radio disable indication */
-+#define BFL_ENETROBO 0x0010 /* This board has robo switch or core */
-+#define BFL_CCKHIPWR 0x0040 /* Can do high-power CCK transmission */
-+#define BFL_ENETADM 0x0080 /* This board has ADMtek switch */
-+#define BFL_ENETVLAN 0x0100 /* This board has vlan capability */
-+#define BFL_AFTERBURNER 0x0200 /* This board supports Afterburner mode */
-+#define BFL_NOPCI 0x0400 /* This board leaves PCI floating */
-+#define BFL_FEM 0x0800 /* This board supports the Front End Module */
-+#define BFL_EXTLNA 0x1000 /* This board has an external LNA */
-+#define BFL_HGPA 0x2000 /* This board has a high gain PA */
-+#define BFL_BTCMOD 0x4000 /* This board' BTCOEXIST is in the alternate gpios */
-+#define BFL_ALTIQ 0x8000 /* Alternate I/Q settings */
-+
-+/* board specific GPIO assignment, gpio 0-3 are also customer-configurable led */
-+#define BOARD_GPIO_HWRAD_B 0x010 /* bit 4 is HWRAD input on 4301 */
-+#define BOARD_GPIO_BTCMOD_IN 0x010 /* bit 4 is the alternate BT Coexistance Input */
-+#define BOARD_GPIO_BTCMOD_OUT 0x020 /* bit 5 is the alternate BT Coexistance Out */
-+#define BOARD_GPIO_BTC_IN 0x080 /* bit 7 is BT Coexistance Input */
-+#define BOARD_GPIO_BTC_OUT 0x100 /* bit 8 is BT Coexistance Out */
-+#define BOARD_GPIO_PACTRL 0x200 /* bit 9 controls the PA on new 4306 boards */
-+#define PCI_CFG_GPIO_SCS 0x10 /* PCI config space bit 4 for 4306c0 slow clock source */
-+#define PCI_CFG_GPIO_HWRAD 0x20 /* PCI config space GPIO 13 for hw radio disable */
-+#define PCI_CFG_GPIO_XTAL 0x40 /* PCI config space GPIO 14 for Xtal powerup */
-+#define PCI_CFG_GPIO_PLL 0x80 /* PCI config space GPIO 15 for PLL powerdown */
-+
-+/* Bus types */
-+#define SB_BUS 0 /* Silicon Backplane */
-+#define PCI_BUS 1 /* PCI target */
-+#define PCMCIA_BUS 2 /* PCMCIA target */
-+#define SDIO_BUS 3 /* SDIO target */
-+#define JTAG_BUS 4 /* JTAG */
-+
-+/* Allows optimization for single-bus support */
-+#ifdef BCMBUSTYPE
-+#define BUSTYPE(bus) (BCMBUSTYPE)
-+#else
-+#define BUSTYPE(bus) (bus)
-+#endif
-+
-+/* power control defines */
-+#define PLL_DELAY 150 /* us pll on delay */
-+#define FREF_DELAY 200 /* us fref change delay */
-+#define MIN_SLOW_CLK 32 /* us Slow clock period */
-+#define XTAL_ON_DELAY 1000 /* us crystal power-on delay */
-+
-+/* Reference Board Types */
-+
-+#define BU4710_BOARD 0x0400
-+#define VSIM4710_BOARD 0x0401
-+#define QT4710_BOARD 0x0402
-+
-+#define BU4610_BOARD 0x0403
-+#define VSIM4610_BOARD 0x0404
-+
-+#define BU4307_BOARD 0x0405
-+#define BCM94301CB_BOARD 0x0406
-+#define BCM94301PC_BOARD 0x0406 /* Pcmcia 5v card */
-+#define BCM94301MP_BOARD 0x0407
-+#define BCM94307MP_BOARD 0x0408
-+#define BCMAP4307_BOARD 0x0409
-+
-+#define BU4309_BOARD 0x040a
-+#define BCM94309CB_BOARD 0x040b
-+#define BCM94309MP_BOARD 0x040c
-+#define BCM4309AP_BOARD 0x040d
-+
-+#define BCM94302MP_BOARD 0x040e
-+
-+#define VSIM4310_BOARD 0x040f
-+#define BU4711_BOARD 0x0410
-+#define BCM94310U_BOARD 0x0411
-+#define BCM94310AP_BOARD 0x0412
-+#define BCM94310MP_BOARD 0x0414
-+
-+#define BU4306_BOARD 0x0416
-+#define BCM94306CB_BOARD 0x0417
-+#define BCM94306MP_BOARD 0x0418
-+
-+#define BCM94710D_BOARD 0x041a
-+#define BCM94710R1_BOARD 0x041b
-+#define BCM94710R4_BOARD 0x041c
-+#define BCM94710AP_BOARD 0x041d
-+
-+
-+#define BU2050_BOARD 0x041f
-+
-+
-+#define BCM94309G_BOARD 0x0421
-+
-+#define BCM94301PC3_BOARD 0x0422 /* Pcmcia 3.3v card */
-+
-+#define BU4704_BOARD 0x0423
-+#define BU4702_BOARD 0x0424
-+
-+#define BCM94306PC_BOARD 0x0425 /* pcmcia 3.3v 4306 card */
-+
-+#define BU4317_BOARD 0x0426
-+
-+
-+#define BCM94702MN_BOARD 0x0428
-+
-+/* BCM4702 1U CompactPCI Board */
-+#define BCM94702CPCI_BOARD 0x0429
-+
-+/* BCM4702 with BCM95380 VLAN Router */
-+#define BCM95380RR_BOARD 0x042a
-+
-+/* cb4306 with SiGe PA */
-+#define BCM94306CBSG_BOARD 0x042b
-+
-+/* mp4301 with 2050 radio */
-+#define BCM94301MPL_BOARD 0x042c
-+
-+/* cb4306 with SiGe PA */
-+#define PCSG94306_BOARD 0x042d
-+
-+/* bu4704 with sdram */
-+#define BU4704SD_BOARD 0x042e
-+
-+/* Dual 11a/11g Router */
-+#define BCM94704AGR_BOARD 0x042f
-+
-+/* 11a-only minipci */
-+#define BCM94308MP_BOARD 0x0430
-+
-+
-+
-+/* BCM94317 boards */
-+#define BCM94317CB_BOARD 0x0440
-+#define BCM94317MP_BOARD 0x0441
-+#define BCM94317PCMCIA_BOARD 0x0442
-+#define BCM94317SDIO_BOARD 0x0443
-+
-+#define BU4712_BOARD 0x0444
-+#define BU4712SD_BOARD 0x045d
-+#define BU4712L_BOARD 0x045f
-+
-+/* BCM4712 boards */
-+#define BCM94712AP_BOARD 0x0445
-+#define BCM94712P_BOARD 0x0446
-+
-+/* BCM4318 boards */
-+#define BU4318_BOARD 0x0447
-+#define CB4318_BOARD 0x0448
-+#define MPG4318_BOARD 0x0449
-+#define MP4318_BOARD 0x044a
-+#define SD4318_BOARD 0x044b
-+
-+/* BCM63XX boards */
-+#define BCM96338_BOARD 0x6338
-+#define BCM96345_BOARD 0x6345
-+#define BCM96348_BOARD 0x6348
-+
-+/* Another mp4306 with SiGe */
-+#define BCM94306P_BOARD 0x044c
-+
-+/* CF-like 4317 modules */
-+#define BCM94317CF_BOARD 0x044d
-+
-+/* mp4303 */
-+#define BCM94303MP_BOARD 0x044e
-+
-+/* mpsgh4306 */
-+#define BCM94306MPSGH_BOARD 0x044f
-+
-+/* BRCM 4306 w/ Front End Modules */
-+#define BCM94306MPM 0x0450
-+#define BCM94306MPL 0x0453
-+
-+/* 4712agr */
-+#define BCM94712AGR_BOARD 0x0451
-+
-+/* The real CF 4317 board */
-+#define CFI4317_BOARD 0x0452
-+
-+/* pcmcia 4303 */
-+#define PC4303_BOARD 0x0454
-+
-+/* 5350K */
-+#define BCM95350K_BOARD 0x0455
-+
-+/* 5350R */
-+#define BCM95350R_BOARD 0x0456
-+
-+/* 4306mplna */
-+#define BCM94306MPLNA_BOARD 0x0457
-+
-+/* 4320 boards */
-+#define BU4320_BOARD 0x0458
-+#define BU4320S_BOARD 0x0459
-+#define BCM94320PH_BOARD 0x045a
-+
-+/* 4306mph */
-+#define BCM94306MPH_BOARD 0x045b
-+
-+/* 4306pciv */
-+#define BCM94306PCIV_BOARD 0x045c
-+
-+#define BU4712SD_BOARD 0x045d
-+
-+#define BCM94320PFLSH_BOARD 0x045e
-+
-+#define BU4712L_BOARD 0x045f
-+#define BCM94712LGR_BOARD 0x0460
-+#define BCM94320R_BOARD 0x0461
-+
-+#define BU5352_BOARD 0x0462
-+
-+#define BCM94318MPGH_BOARD 0x0463
-+
-+
-+#define BCM95352GR_BOARD 0x0467
-+
-+/* bcm95351agr */
-+#define BCM95351AGR_BOARD 0x0470
-+
-+/* # of GPIO pins */
-+#define GPIO_NUMPINS 16
-+
-+#endif /* _BCMDEVS_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/bcmendian.h linux.dev/arch/mips/bcm947xx/include/bcmendian.h
---- linux.old/arch/mips/bcm947xx/include/bcmendian.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmendian.h 2006-04-27 20:08:35.000000000 +0200
-@@ -0,0 +1,198 @@
-+/*
-+ * local version of endian.h - byte order defines
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: bcmendian.h,v 1.1.1.10 2006/02/27 03:43:16 honor Exp $
-+*/
-+
-+#ifndef _BCMENDIAN_H_
-+#define _BCMENDIAN_H_
-+
-+#include <typedefs.h>
-+
-+/* Byte swap a 16 bit value */
-+#define BCMSWAP16(val) \
-+ ((uint16)(\
-+ (((uint16)(val) & (uint16)0x00ffU) << 8) | \
-+ (((uint16)(val) & (uint16)0xff00U) >> 8)))
-+
-+/* Byte swap a 32 bit value */
-+#define BCMSWAP32(val) \
-+ ((uint32)(\
-+ (((uint32)(val) & (uint32)0x000000ffUL) << 24) | \
-+ (((uint32)(val) & (uint32)0x0000ff00UL) << 8) | \
-+ (((uint32)(val) & (uint32)0x00ff0000UL) >> 8) | \
-+ (((uint32)(val) & (uint32)0xff000000UL) >> 24)))
-+
-+/* 2 Byte swap a 32 bit value */
-+#define BCMSWAP32BY16(val) \
-+ ((uint32)(\
-+ (((uint32)(val) & (uint32)0x0000ffffUL) << 16) | \
-+ (((uint32)(val) & (uint32)0xffff0000UL) >> 16)))
-+
-+
-+static INLINE uint16
-+bcmswap16(uint16 val)
-+{
-+ return BCMSWAP16(val);
-+}
-+
-+static INLINE uint32
-+bcmswap32(uint32 val)
-+{
-+ return BCMSWAP32(val);
-+}
-+
-+static INLINE uint32
-+bcmswap32by16(uint32 val)
-+{
-+ return BCMSWAP32BY16(val);
-+}
-+
-+/* buf - start of buffer of shorts to swap */
-+/* len - byte length of buffer */
-+static INLINE void
-+bcmswap16_buf(uint16 *buf, uint len)
-+{
-+ len = len/2;
-+
-+ while (len--) {
-+ *buf = bcmswap16(*buf);
-+ buf++;
-+ }
-+}
-+
-+#ifndef hton16
-+#ifndef IL_BIGENDIAN
-+#define HTON16(i) BCMSWAP16(i)
-+#define hton16(i) bcmswap16(i)
-+#define hton32(i) bcmswap32(i)
-+#define ntoh16(i) bcmswap16(i)
-+#define ntoh32(i) bcmswap32(i)
-+#define ltoh16(i) (i)
-+#define ltoh32(i) (i)
-+#define htol16(i) (i)
-+#define htol32(i) (i)
-+#else
-+#define HTON16(i) (i)
-+#define hton16(i) (i)
-+#define hton32(i) (i)
-+#define ntoh16(i) (i)
-+#define ntoh32(i) (i)
-+#define ltoh16(i) bcmswap16(i)
-+#define ltoh32(i) bcmswap32(i)
-+#define htol16(i) bcmswap16(i)
-+#define htol32(i) bcmswap32(i)
-+#endif /* IL_BIGENDIAN */
-+#endif /* hton16 */
-+
-+#ifndef IL_BIGENDIAN
-+#define ltoh16_buf(buf, i)
-+#define htol16_buf(buf, i)
-+#else
-+#define ltoh16_buf(buf, i) bcmswap16_buf((uint16*)buf, i)
-+#define htol16_buf(buf, i) bcmswap16_buf((uint16*)buf, i)
-+#endif /* IL_BIGENDIAN */
-+
-+/*
-+* store 16-bit value to unaligned little endian byte array.
-+*/
-+static INLINE void
-+htol16_ua_store(uint16 val, uint8 *bytes)
-+{
-+ bytes[0] = val&0xff;
-+ bytes[1] = val>>8;
-+}
-+
-+/*
-+* store 32-bit value to unaligned little endian byte array.
-+*/
-+static INLINE void
-+htol32_ua_store(uint32 val, uint8 *bytes)
-+{
-+ bytes[0] = val&0xff;
-+ bytes[1] = (val>>8)&0xff;
-+ bytes[2] = (val>>16)&0xff;
-+ bytes[3] = val>>24;
-+}
-+
-+/*
-+* store 16-bit value to unaligned network(big) endian byte array.
-+*/
-+static INLINE void
-+hton16_ua_store(uint16 val, uint8 *bytes)
-+{
-+ bytes[1] = val&0xff;
-+ bytes[0] = val>>8;
-+}
-+
-+/*
-+* store 32-bit value to unaligned network(big) endian byte array.
-+*/
-+static INLINE void
-+hton32_ua_store(uint32 val, uint8 *bytes)
-+{
-+ bytes[3] = val&0xff;
-+ bytes[2] = (val>>8)&0xff;
-+ bytes[1] = (val>>16)&0xff;
-+ bytes[0] = val>>24;
-+}
-+
-+/*
-+* load 16-bit value from unaligned little endian byte array.
-+*/
-+static INLINE uint16
-+ltoh16_ua(void *bytes)
-+{
-+ return (((uint8*)bytes)[1]<<8)+((uint8 *)bytes)[0];
-+}
-+
-+/*
-+* load 32-bit value from unaligned little endian byte array.
-+*/
-+static INLINE uint32
-+ltoh32_ua(void *bytes)
-+{
-+ return (((uint8*)bytes)[3]<<24)+(((uint8*)bytes)[2]<<16)+
-+ (((uint8*)bytes)[1]<<8)+((uint8*)bytes)[0];
-+}
-+
-+/*
-+* load 16-bit value from unaligned big(network) endian byte array.
-+*/
-+static INLINE uint16
-+ntoh16_ua(void *bytes)
-+{
-+ return (((uint8*)bytes)[0]<<8)+((uint8*)bytes)[1];
-+}
-+
-+/*
-+* load 32-bit value from unaligned big(network) endian byte array.
-+*/
-+static INLINE uint32
-+ntoh32_ua(void *bytes)
-+{
-+ return (((uint8*)bytes)[0]<<24)+(((uint8*)bytes)[1]<<16)+
-+ (((uint8*)bytes)[2]<<8)+((uint8*)bytes)[3];
-+}
-+
-+#define ltoh_ua(ptr) (\
-+ sizeof(*(ptr)) == sizeof(uint8) ? *(uint8 *)ptr : \
-+ sizeof(*(ptr)) == sizeof(uint16) ? (((uint8 *)ptr)[1]<<8)+((uint8 *)ptr)[0] : \
-+ (((uint8 *)ptr)[3]<<24)+(((uint8 *)ptr)[2]<<16)+(((uint8 *)ptr)[1]<<8)+((uint8 *)ptr)[0] \
-+)
-+
-+#define ntoh_ua(ptr) (\
-+ sizeof(*(ptr)) == sizeof(uint8) ? *(uint8 *)ptr : \
-+ sizeof(*(ptr)) == sizeof(uint16) ? (((uint8 *)ptr)[0]<<8)+((uint8 *)ptr)[1] : \
-+ (((uint8 *)ptr)[0]<<24)+(((uint8 *)ptr)[1]<<16)+(((uint8 *)ptr)[2]<<8)+((uint8 *)ptr)[3] \
-+)
-+
-+#endif /* _BCMENDIAN_H_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/bcmnvram.h linux.dev/arch/mips/bcm947xx/include/bcmnvram.h
---- linux.old/arch/mips/bcm947xx/include/bcmnvram.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmnvram.h 2006-04-27 23:29:18.000000000 +0200
-@@ -0,0 +1,159 @@
-+/*
-+ * NVRAM variable manipulation
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: bcmnvram.h,v 1.17 2006/03/02 12:33:44 honor Exp $
-+ */
-+
-+#ifndef _bcmnvram_h_
-+#define _bcmnvram_h_
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+#include <typedefs.h>
-+#include <bcmdefs.h>
-+
-+struct nvram_header {
-+ uint32 magic;
-+ uint32 len;
-+ uint32 crc_ver_init; /* 0:7 crc, 8:15 ver, 16:31 sdram_init */
-+ uint32 config_refresh; /* 0:15 sdram_config, 16:31 sdram_refresh */
-+ uint32 config_ncdl; /* ncdl values for memc */
-+};
-+
-+struct nvram_tuple {
-+ char *name;
-+ char *value;
-+ struct nvram_tuple *next;
-+};
-+
-+/*
-+ * Initialize NVRAM access. May be unnecessary or undefined on certain
-+ * platforms.
-+ */
-+extern int nvram_init(void *sbh);
-+
-+/*
-+ * Disable NVRAM access. May be unnecessary or undefined on certain
-+ * platforms.
-+ */
-+extern void nvram_exit(void *sbh);
-+
-+/*
-+ * Get the value of an NVRAM variable. The pointer returned may be
-+ * invalid after a set.
-+ * @param name name of variable to get
-+ * @return value of variable or NULL if undefined
-+ */
-+extern char * nvram_get(const char *name);
-+
-+/*
-+ * Read the reset GPIO value from the nvram and set the GPIO
-+ * as input
-+ */
-+extern int BCMINITFN(nvram_resetgpio_init)(void *sbh);
-+extern int BCMINITFN(nvram_gpio_init)(const char *name, void *sbh);
-+extern int BCMINITFN(nvram_gpio_set)(const char *name, void *sbh, int type);
-+
-+/*
-+ * Get the value of an NVRAM variable.
-+ * @param name name of variable to get
-+ * @return value of variable or NUL if undefined
-+ */
-+#define nvram_safe_get(name) (nvram_get(name) ? : "")
-+
-+#define nvram_safe_unset(name) ({ \
-+ if(nvram_get(name)) \
-+ nvram_unset(name); \
-+})
-+
-+#define nvram_safe_set(name, value) ({ \
-+ if(!nvram_get(name) || strcmp(nvram_get(name), value)) \
-+ nvram_set(name, value); \
-+})
-+
-+/*
-+ * Match an NVRAM variable.
-+ * @param name name of variable to match
-+ * @param match value to compare against value of variable
-+ * @return TRUE if variable is defined and its value is string equal
-+ * to match or FALSE otherwise
-+ */
-+static INLINE int
-+nvram_match(char *name, char *match) {
-+ const char *value = nvram_get(name);
-+ return (value && !strcmp(value, match));
-+}
-+
-+/*
-+ * Inversely match an NVRAM variable.
-+ * @param name name of variable to match
-+ * @param match value to compare against value of variable
-+ * @return TRUE if variable is defined and its value is not string
-+ * equal to invmatch or FALSE otherwise
-+ */
-+static INLINE int
-+nvram_invmatch(char *name, char *invmatch) {
-+ const char *value = nvram_get(name);
-+ return (value && strcmp(value, invmatch));
-+}
-+
-+/*
-+ * Set the value of an NVRAM variable. The name and value strings are
-+ * copied into private storage. Pointers to previously set values
-+ * may become invalid. The new value may be immediately
-+ * retrieved but will not be permanently stored until a commit.
-+ * @param name name of variable to set
-+ * @param value value of variable
-+ * @return 0 on success and errno on failure
-+ */
-+extern int nvram_set(const char *name, const char *value);
-+
-+/*
-+ * Unset an NVRAM variable. Pointers to previously set values
-+ * remain valid until a set.
-+ * @param name name of variable to unset
-+ * @return 0 on success and errno on failure
-+ * NOTE: use nvram_commit to commit this change to flash.
-+ */
-+extern int nvram_unset(const char *name);
-+
-+/*
-+ * Commit NVRAM variables to permanent storage. All pointers to values
-+ * may be invalid after a commit.
-+ * NVRAM values are undefined after a commit.
-+ * @return 0 on success and errno on failure
-+ */
-+extern int nvram_commit(void);
-+
-+/*
-+ * Get all NVRAM variables (format name=value\0 ... \0\0).
-+ * @param buf buffer to store variables
-+ * @param count size of buffer in bytes
-+ * @return 0 on success and errno on failure
-+ */
-+extern int nvram_getall(char *buf, int count);
-+
-+extern int file2nvram(char *filename, char *varname);
-+extern int nvram2file(char *varname, char *filename);
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+#define NVRAM_MAGIC 0x48534C46 /* 'FLSH' */
-+#define NVRAM_CLEAR_MAGIC 0x0
-+#define NVRAM_INVALID_MAGIC 0xFFFFFFFF
-+#define NVRAM_VERSION 1
-+#define NVRAM_HEADER_SIZE 20
-+#define NVRAM_SPACE 0x8000
-+
-+#define NVRAM_MAX_VALUE_LEN 255
-+#define NVRAM_MAX_PARAM_LEN 64
-+
-+#endif /* _bcmnvram_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/bcmsrom.h linux.dev/arch/mips/bcm947xx/include/bcmsrom.h
---- linux.old/arch/mips/bcm947xx/include/bcmsrom.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmsrom.h 2006-04-27 20:27:33.000000000 +0200
-@@ -0,0 +1,108 @@
-+/*
-+ * Misc useful routines to access NIC local SROM/OTP .
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: bcmsrom.h,v 1.1.1.13 2006/04/15 01:29:08 michael Exp $
-+ */
-+
-+#ifndef _bcmsrom_h_
-+#define _bcmsrom_h_
-+
-+/* Maximum srom: 4 Kilobits == 512 bytes */
-+#define SROM_MAX 512
-+
-+/* SROM Rev 4: Reallocate the software part of the srom to accomodate
-+ * MIMO features. It assumes up to two PCIE functions and 440 bytes
-+ * of useable srom i.e. the useable storage in chips with OTP that
-+ * implements hardware redundancy.
-+ */
-+
-+#define SROM4_WORDS 220
-+
-+#define SROM4_SIGN 32
-+#define SROM4_SIGNATURE 0x5372
-+
-+#define SROM4_BREV 33
-+
-+#define SROM4_BFL0 34
-+#define SROM4_BFL1 35
-+#define SROM4_BFL2 36
-+#define SROM4_BFL3 37
-+
-+#define SROM4_MACHI 38
-+#define SROM4_MACMID 39
-+#define SROM4_MACLO 40
-+
-+#define SROM4_CCODE 41
-+#define SROM4_REGREV 42
-+
-+#define SROM4_LEDBH10 43
-+#define SROM4_LEDBH32 44
-+
-+#define SROM4_LEDDC 45
-+
-+#define SROM4_AA 46
-+#define SROM4_AA2G_MASK 0x00ff
-+#define SROM4_AA2G_SHIFT 0
-+#define SROM4_AA5G_MASK 0xff00
-+#define SROM4_AA5G_SHIFT 8
-+
-+#define SROM4_AG10 47
-+#define SROM4_AG32 48
-+
-+#define SROM4_TXPID2G 49
-+#define SROM4_TXPID5G 51
-+#define SROM4_TXPID5GL 53
-+#define SROM4_TXPID5GH 55
-+
-+/* Per-path fields */
-+#define MAX_PATH 4
-+#define SROM4_PATH0 64
-+#define SROM4_PATH1 87
-+#define SROM4_PATH2 110
-+#define SROM4_PATH3 133
-+
-+#define SROM4_2G_ITT_MAXP 0
-+#define SROM4_2G_PA 1
-+#define SROM4_5G_ITT_MAXP 5
-+#define SROM4_5GLH_MAXP 6
-+#define SROM4_5G_PA 7
-+#define SROM4_5GL_PA 11
-+#define SROM4_5GH_PA 15
-+
-+/* Fields in the ITT_MAXP and 5GLH_MAXP words */
-+#define B2G_MAXP_MASK 0xff
-+#define B2G_ITT_SHIFT 8
-+#define B5G_MAXP_MASK 0xff
-+#define B5G_ITT_SHIFT 8
-+#define B5GH_MAXP_MASK 0xff
-+#define B5GL_MAXP_SHIFT 8
-+
-+/* All the miriad power offsets */
-+#define SROM4_2G_CCKPO 156
-+#define SROM4_2G_OFDMPO 157
-+#define SROM4_5G_OFDMPO 159
-+#define SROM4_5GL_OFDMPO 161
-+#define SROM4_5GH_OFDMPO 163
-+#define SROM4_2G_MCSPO 165
-+#define SROM4_5G_MCSPO 173
-+#define SROM4_5GL_MCSPO 181
-+#define SROM4_5GH_MCSPO 189
-+#define SROM4_CCDPO 197
-+#define SROM4_STBCPO 198
-+#define SROM4_BW40PO 199
-+#define SROM4_BWDUPPO 200
-+
-+extern int srom_var_init(void *sbh, uint bus, void *curmap, osl_t *osh, char **vars, uint *count);
-+
-+extern int srom_read(uint bus, void *curmap, osl_t *osh, uint byteoff, uint nbytes, uint16 *buf);
-+extern int srom_write(uint bus, void *curmap, osl_t *osh, uint byteoff, uint nbytes, uint16 *buf);
-+
-+#endif /* _bcmsrom_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/bcmutils.h linux.dev/arch/mips/bcm947xx/include/bcmutils.h
---- linux.old/arch/mips/bcm947xx/include/bcmutils.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmutils.h 2006-05-02 01:52:12.000000000 +0200
-@@ -0,0 +1,433 @@
-+/*
-+ * Misc useful os-independent macros and functions.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id: bcmutils.h,v 1.1.1.16 2006/04/08 06:13:39 honor Exp $
-+ */
-+
-+#ifndef _bcmutils_h_
-+#define _bcmutils_h_
-+
-+/* ** driver-only section ** */
-+#ifdef BCMDRIVER
-+
-+#define _BCM_U 0x01 /* upper */
-+#define _BCM_L 0x02 /* lower */
-+#define _BCM_D 0x04 /* digit */
-+#define _BCM_C 0x08 /* cntrl */
-+#define _BCM_P 0x10 /* punct */
-+#define _BCM_S 0x20 /* white space (space/lf/tab) */
-+#define _BCM_X 0x40 /* hex digit */
-+#define _BCM_SP 0x80 /* hard space (0x20) */
-+
-+#define GPIO_PIN_NOTDEFINED 0x20 /* Pin not defined */
-+
-+extern unsigned char bcm_ctype[];
-+#define bcm_ismask(x) (bcm_ctype[(int)(unsigned char)(x)])
-+
-+#define bcm_isalnum(c) ((bcm_ismask(c)&(_BCM_U|_BCM_L|_BCM_D)) != 0)
-+#define bcm_isalpha(c) ((bcm_ismask(c)&(_BCM_U|_BCM_L)) != 0)
-+#define bcm_iscntrl(c) ((bcm_ismask(c)&(_BCM_C)) != 0)
-+#define bcm_isdigit(c) ((bcm_ismask(c)&(_BCM_D)) != 0)
-+#define bcm_isgraph(c) ((bcm_ismask(c)&(_BCM_P|_BCM_U|_BCM_L|_BCM_D)) != 0)
-+#define bcm_islower(c) ((bcm_ismask(c)&(_BCM_L)) != 0)
-+#define bcm_isprint(c) ((bcm_ismask(c)&(_BCM_P|_BCM_U|_BCM_L|_BCM_D|_BCM_SP)) != 0)
-+#define bcm_ispunct(c) ((bcm_ismask(c)&(_BCM_P)) != 0)
-+#define bcm_isspace(c) ((bcm_ismask(c)&(_BCM_S)) != 0)
-+#define bcm_isupper(c) ((bcm_ismask(c)&(_BCM_U)) != 0)
-+#define bcm_isxdigit(c) ((bcm_ismask(c)&(_BCM_D|_BCM_X)) != 0)
-+
-+/*
-+ * Spin at most 'us' microseconds while 'exp' is true.
-+ * Caller should explicitly test 'exp' when this completes
-+ * and take appropriate error action if 'exp' is still true.
-+ */
-+#define SPINWAIT(exp, us) { \
-+ uint countdown = (us) + 9; \
-+ while ((exp) && (countdown >= 10)) {\
-+ OSL_DELAY(10); \
-+ countdown -= 10; \
-+ } \
-+}
-+
-+struct ether_addr {
-+ uint8 octet[6];
-+} __attribute__((packed));
-+
-+/* string */
-+extern uchar bcm_toupper(uchar c);
-+extern ulong bcm_strtoul(char *cp, char **endp, uint base);
-+extern char *bcmstrstr(char *haystack, char *needle);
-+extern char *bcmstrcat(char *dest, const char *src);
-+extern ulong wchar2ascii(char *abuf, ushort *wbuf, ushort wbuflen, ulong abuflen);
-+/* ethernet address */
-+extern char *bcm_ether_ntoa(struct ether_addr *ea, char *buf);
-+/* variable access */
-+extern char *getvar(char *vars, char *name);
-+extern int getintvar(char *vars, char *name);
-+extern uint getgpiopin(char *vars, char *pin_name, uint def_pin);
-+#ifdef BCMPERFSTATS
-+extern void bcm_perf_enable(void);
-+extern void bcmstats(char *fmt);
-+extern void bcmlog(char *fmt, uint a1, uint a2);
-+extern void bcmdumplog(char *buf, int size);
-+extern int bcmdumplogent(char *buf, uint idx);
-+#else
-+#define bcm_perf_enable()
-+#define bcmstats(fmt)
-+#define bcmlog(fmt, a1, a2)
-+#define bcmdumplog(buf, size) *buf = '\0'
-+#define bcmdumplogent(buf, idx) -1
-+#endif /* BCMPERFSTATS */
-+extern char *bcm_nvram_vars(uint *length);
-+extern int bcm_nvram_cache(void *sbh);
-+
-+/* Support for sharing code across in-driver iovar implementations.
-+ * The intent is that a driver use this structure to map iovar names
-+ * to its (private) iovar identifiers, and the lookup function to
-+ * find the entry. Macros are provided to map ids and get/set actions
-+ * into a single number space for a switch statement.
-+ */
-+
-+/* iovar structure */
-+typedef struct bcm_iovar {
-+ const char *name; /* name for lookup and display */
-+ uint16 varid; /* id for switch */
-+ uint16 flags; /* driver-specific flag bits */
-+ uint16 type; /* base type of argument */
-+ uint16 minlen; /* min length for buffer vars */
-+} bcm_iovar_t;
-+
-+/* varid definitions are per-driver, may use these get/set bits */
-+
-+/* IOVar action bits for id mapping */
-+#define IOV_GET 0 /* Get an iovar */
-+#define IOV_SET 1 /* Set an iovar */
-+
-+/* Varid to actionid mapping */
-+#define IOV_GVAL(id) ((id)*2)
-+#define IOV_SVAL(id) (((id)*2)+IOV_SET)
-+#define IOV_ISSET(actionid) ((actionid & IOV_SET) == IOV_SET)
-+
-+/* flags are per-driver based on driver attributes */
-+
-+/* Base type definitions */
-+#define IOVT_VOID 0 /* no value (implictly set only) */
-+#define IOVT_BOOL 1 /* any value ok (zero/nonzero) */
-+#define IOVT_INT8 2 /* integer values are range-checked */
-+#define IOVT_UINT8 3 /* unsigned int 8 bits */
-+#define IOVT_INT16 4 /* int 16 bits */
-+#define IOVT_UINT16 5 /* unsigned int 16 bits */
-+#define IOVT_INT32 6 /* int 32 bits */
-+#define IOVT_UINT32 7 /* unsigned int 32 bits */
-+#define IOVT_BUFFER 8 /* buffer is size-checked as per minlen */
-+
-+extern const bcm_iovar_t *bcm_iovar_lookup(const bcm_iovar_t *table, const char *name);
-+extern int bcm_iovar_lencheck(const bcm_iovar_t *table, void *arg, int len, bool set);
-+
-+#endif /* #ifdef BCMDRIVER */
-+
-+/* ** driver/apps-shared section ** */
-+
-+#define BCME_STRLEN 64 /* Max string length for BCM errors */
-+#define VALID_BCMERROR(e) ((e <= 0) && (e >= BCME_LAST))
-+
-+
-+/*
-+ * error codes could be added but the defined ones shouldn't be changed/deleted
-+ * these error codes are exposed to the user code
-+ * when ever a new error code is added to this list
-+ * please update errorstring table with the related error string and
-+ * update osl files with os specific errorcode map
-+*/
-+
-+#define BCME_OK 0 /* Success */
-+#define BCME_ERROR -1 /* Error generic */
-+#define BCME_BADARG -2 /* Bad Argument */
-+#define BCME_BADOPTION -3 /* Bad option */
-+#define BCME_NOTUP -4 /* Not up */
-+#define BCME_NOTDOWN -5 /* Not down */
-+#define BCME_NOTAP -6 /* Not AP */
-+#define BCME_NOTSTA -7 /* Not STA */
-+#define BCME_BADKEYIDX -8 /* BAD Key Index */
-+#define BCME_RADIOOFF -9 /* Radio Off */
-+#define BCME_NOTBANDLOCKED -10 /* Not band locked */
-+#define BCME_NOCLK -11 /* No Clock */
-+#define BCME_BADRATESET -12 /* BAD Rate valueset */
-+#define BCME_BADBAND -13 /* BAD Band */
-+#define BCME_BUFTOOSHORT -14 /* Buffer too short */
-+#define BCME_BUFTOOLONG -15 /* Buffer too long */
-+#define BCME_BUSY -16 /* Busy */
-+#define BCME_NOTASSOCIATED -17 /* Not Associated */
-+#define BCME_BADSSIDLEN -18 /* Bad SSID len */
-+#define BCME_OUTOFRANGECHAN -19 /* Out of Range Channel */
-+#define BCME_BADCHAN -20 /* Bad Channel */
-+#define BCME_BADADDR -21 /* Bad Address */
-+#define BCME_NORESOURCE -22 /* Not Enough Resources */
-+#define BCME_UNSUPPORTED -23 /* Unsupported */
-+#define BCME_BADLEN -24 /* Bad length */
-+#define BCME_NOTREADY -25 /* Not Ready */
-+#define BCME_EPERM -26 /* Not Permitted */
-+#define BCME_NOMEM -27 /* No Memory */
-+#define BCME_ASSOCIATED -28 /* Associated */
-+#define BCME_RANGE -29 /* Not In Range */
-+#define BCME_NOTFOUND -30 /* Not Found */
-+#define BCME_WME_NOT_ENABLED -31 /* WME Not Enabled */
-+#define BCME_TSPEC_NOTFOUND -32 /* TSPEC Not Found */
-+#define BCME_ACM_NOTSUPPORTED -33 /* ACM Not Supported */
-+#define BCME_NOT_WME_ASSOCIATION -34 /* Not WME Association */
-+#define BCME_SDIO_ERROR -35 /* SDIO Bus Error */
-+#define BCME_DONGLE_DOWN -36 /* Dongle Not Accessible */
-+#define BCME_LAST BCME_DONGLE_DOWN
-+
-+/* These are collection of BCME Error strings */
-+#define BCMERRSTRINGTABLE { \
-+ "OK", \
-+ "Undefined error", \
-+ "Bad Argument", \
-+ "Bad Option", \
-+ "Not up", \
-+ "Not down", \
-+ "Not AP", \
-+ "Not STA", \
-+ "Bad Key Index", \
-+ "Radio Off", \
-+ "Not band locked", \
-+ "No clock", \
-+ "Bad Rate valueset", \
-+ "Bad Band", \
-+ "Buffer too short", \
-+ "Buffer too long", \
-+ "Busy", \
-+ "Not Associated", \
-+ "Bad SSID len", \
-+ "Out of Range Channel", \
-+ "Bad Channel", \
-+ "Bad Address", \
-+ "Not Enough Resources", \
-+ "Unsupported", \
-+ "Bad length", \
-+ "Not Ready", \
-+ "Not Permitted", \
-+ "No Memory", \
-+ "Associated", \
-+ "Not In Range", \
-+ "Not Found", \
-+ "WME Not Enabled", \
-+ "TSPEC Not Found", \
-+ "ACM Not Supported", \
-+ "Not WME Association", \
-+ "SDIO Bus Error", \
-+ "Dongle Not Accessible" \
-+}
-+
-+#ifndef ABS
-+#define ABS(a) (((a) < 0)?-(a):(a))
-+#endif /* ABS */
-+
-+#ifndef MIN
-+#define MIN(a, b) (((a) < (b))?(a):(b))
-+#endif /* MIN */
-+
-+#ifndef MAX
-+#define MAX(a, b) (((a) > (b))?(a):(b))
-+#endif /* MAX */
-+
-+#define CEIL(x, y) (((x) + ((y)-1)) / (y))
-+#define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y))
-+#define ISALIGNED(a, x) (((a) & ((x)-1)) == 0)
-+#define ISPOWEROF2(x) ((((x)-1)&(x)) == 0)
-+#define VALID_MASK(mask) !((mask) & ((mask) + 1))
-+#define OFFSETOF(type, member) ((uint)(uintptr)&((type *)0)->member)
-+#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
-+
-+/* bit map related macros */
-+#ifndef setbit
-+#ifndef NBBY /* the BSD family defines NBBY */
-+#define NBBY 8 /* 8 bits per byte */
-+#endif /* #ifndef NBBY */
-+#define setbit(a, i) (((uint8 *)a)[(i)/NBBY] |= 1<<((i)%NBBY))
-+#define clrbit(a, i) (((uint8 *)a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
-+#define isset(a, i) (((uint8 *)a)[(i)/NBBY] & (1<<((i)%NBBY)))
-+#define isclr(a, i) ((((uint8 *)a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
-+#endif /* setbit */
-+
-+#define NBITS(type) (sizeof(type) * 8)
-+#define NBITVAL(nbits) (1 << (nbits))
-+#define MAXBITVAL(nbits) ((1 << (nbits)) - 1)
-+#define NBITMASK(nbits) MAXBITVAL(nbits)
-+#define MAXNBVAL(nbyte) MAXBITVAL((nbyte) * 8)
-+
-+/* basic mux operation - can be optimized on several architectures */
-+#define MUX(pred, true, false) ((pred) ? (true) : (false))
-+
-+/* modulo inc/dec - assumes x E [0, bound - 1] */
-+#define MODDEC(x, bound) MUX((x) == 0, (bound) - 1, (x) - 1)
-+#define MODINC(x, bound) MUX((x) == (bound) - 1, 0, (x) + 1)
-+
-+/* modulo inc/dec, bound = 2^k */
-+#define MODDEC_POW2(x, bound) (((x) - 1) & ((bound) - 1))
-+#define MODINC_POW2(x, bound) (((x) + 1) & ((bound) - 1))
-+
-+/* modulo add/sub - assumes x, y E [0, bound - 1] */
-+#define MODADD(x, y, bound) \
-+ MUX((x) + (y) >= (bound), (x) + (y) - (bound), (x) + (y))
-+#define MODSUB(x, y, bound) \
-+ MUX(((int)(x)) - ((int)(y)) < 0, (x) - (y) + (bound), (x) - (y))
-+
-+/* module add/sub, bound = 2^k */
-+#define MODADD_POW2(x, y, bound) (((x) + (y)) & ((bound) - 1))
-+#define MODSUB_POW2(x, y, bound) (((x) - (y)) & ((bound) - 1))
-+
-+/* crc defines */
-+#define CRC8_INIT_VALUE 0xff /* Initial CRC8 checksum value */
-+#define CRC8_GOOD_VALUE 0x9f /* Good final CRC8 checksum value */
-+#define CRC16_INIT_VALUE 0xffff /* Initial CRC16 checksum value */
-+#define CRC16_GOOD_VALUE 0xf0b8 /* Good final CRC16 checksum value */
-+#define CRC32_INIT_VALUE 0xffffffff /* Initial CRC32 checksum value */
-+#define CRC32_GOOD_VALUE 0xdebb20e3 /* Good final CRC32 checksum value */
-+
-+/* bcm_format_flags() bit description structure */
-+typedef struct bcm_bit_desc {
-+ uint32 bit;
-+ char* name;
-+} bcm_bit_desc_t;
-+
-+/* tag_ID/length/value_buffer tuple */
-+typedef struct bcm_tlv {
-+ uint8 id;
-+ uint8 len;
-+ uint8 data[1];
-+} bcm_tlv_t;
-+
-+/* Check that bcm_tlv_t fits into the given buflen */
-+#define bcm_valid_tlv(elt, buflen) ((buflen) >= 2 && (int)(buflen) >= (int)(2 + (elt)->len))
-+
-+/* buffer length for ethernet address from bcm_ether_ntoa() */
-+#define ETHER_ADDR_STR_LEN 18 /* 18-bytes of Ethernet address buffer length */
-+
-+/* unaligned load and store macros */
-+#ifdef IL_BIGENDIAN
-+static INLINE uint32
-+load32_ua(uint8 *a)
-+{
-+ return ((a[0] << 24) | (a[1] << 16) | (a[2] << 8) | a[3]);
-+}
-+
-+static INLINE void
-+store32_ua(uint8 *a, uint32 v)
-+{
-+ a[0] = (v >> 24) & 0xff;
-+ a[1] = (v >> 16) & 0xff;
-+ a[2] = (v >> 8) & 0xff;
-+ a[3] = v & 0xff;
-+}
-+
-+static INLINE uint16
-+load16_ua(uint8 *a)
-+{
-+ return ((a[0] << 8) | a[1]);
-+}
-+
-+static INLINE void
-+store16_ua(uint8 *a, uint16 v)
-+{
-+ a[0] = (v >> 8) & 0xff;
-+ a[1] = v & 0xff;
-+}
-+
-+#else
-+
-+static INLINE uint32
-+load32_ua(uint8 *a)
-+{
-+ return ((a[3] << 24) | (a[2] << 16) | (a[1] << 8) | a[0]);
-+}
-+
-+static INLINE void
-+store32_ua(uint8 *a, uint32 v)
-+{
-+ a[3] = (v >> 24) & 0xff;
-+ a[2] = (v >> 16) & 0xff;
-+ a[1] = (v >> 8) & 0xff;
-+ a[0] = v & 0xff;
-+}
-+
-+static INLINE uint16
-+load16_ua(uint8 *a)
-+{
-+ return ((a[1] << 8) | a[0]);
-+}
-+
-+static INLINE void
-+store16_ua(uint8 *a, uint16 v)
-+{
-+ a[1] = (v >> 8) & 0xff;
-+ a[0] = v & 0xff;
-+}
-+
-+#endif /* IL_BIGENDIAN */
-+
-+/* externs */
-+/* crc */
-+extern uint8 hndcrc8(uint8 *p, uint nbytes, uint8 crc);
-+extern uint16 hndcrc16(uint8 *p, uint nbytes, uint16 crc);
-+extern uint32 hndcrc32(uint8 *p, uint nbytes, uint32 crc);
-+/* format/print */
-+extern void printfbig(char *buf);
-+
-+/* IE parsing */
-+extern bcm_tlv_t *bcm_next_tlv(bcm_tlv_t *elt, int *buflen);
-+extern bcm_tlv_t *bcm_parse_tlvs(void *buf, int buflen, uint key);
-+extern bcm_tlv_t *bcm_parse_ordered_tlvs(void *buf, int buflen, uint key);
-+
-+/* bcmerror */
-+extern const char *bcmerrorstr(int bcmerror);
-+
-+/* multi-bool data type: set of bools, mbool is true if any is set */
-+typedef uint32 mbool;
-+#define mboolset(mb, bit) (mb |= bit) /* set one bool */
-+#define mboolclr(mb, bit) (mb &= ~bit) /* clear one bool */
-+#define mboolisset(mb, bit) ((mb & bit) != 0) /* TRUE if one bool is set */
-+#define mboolmaskset(mb, mask, val) ((mb) = (((mb) & ~(mask)) | (val)))
-+
-+/* power conversion */
-+extern uint16 bcm_qdbm_to_mw(uint8 qdbm);
-+extern uint8 bcm_mw_to_qdbm(uint16 mw);
-+
-+/* generic datastruct to help dump routines */
-+struct fielddesc {
-+ char *nameandfmt;
-+ uint32 offset;
-+ uint32 len;
-+};
-+
-+/* Buffer structure for collecting string-formatted data
-+* using bcm_bprintf() API.
-+* Use bcm_binit() to initialize before use
-+*/
-+struct bcmstrbuf
-+{
-+ char *buf; /* pointer to current position in origbuf */
-+ uint size; /* current (residual) size in bytes */
-+ char *origbuf; /* unmodified pointer to orignal buffer */
-+ uint origsize; /* unmodified orignal buffer size in bytes */
-+};
-+
-+extern void bcm_binit(struct bcmstrbuf *b, char *buf, uint size);
-+extern int bcm_bprintf(struct bcmstrbuf *b, const char *fmt, ...);
-+
-+typedef uint32 (*readreg_rtn)(void *arg0, void *arg1, uint32 offset);
-+extern uint bcmdumpfields(readreg_rtn func_ptr, void *arg0, void *arg1, struct fielddesc *str,
-+ char *buf, uint32 bufsize);
-+
-+extern uint bcm_mkiovar(char *name, char *data, uint datalen, char *buf, uint len);
-+extern uint bcm_bitcount(uint8 *bitmap, uint bytelength);
-+
-+#endif /* _bcmutils_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/hndcpu.h linux.dev/arch/mips/bcm947xx/include/hndcpu.h
---- linux.old/arch/mips/bcm947xx/include/hndcpu.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/hndcpu.h 2006-04-27 22:14:38.000000000 +0200
-@@ -0,0 +1,28 @@
-+/*
-+ * HND SiliconBackplane MIPS/ARM cores software interface.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: hndcpu.h,v 1.1.1.1 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _hndcpu_h_
-+#define _hndcpu_h_
-+
-+#if defined(mips)
-+#include <hndmips.h>
-+#elif defined(__ARM_ARCH_4T__)
-+#include <hndarm.h>
-+#endif
-+
-+extern uint sb_irq(sb_t *sbh);
-+extern uint32 sb_cpu_clock(sb_t *sbh);
-+extern void sb_cpu_wait(void);
-+
-+#endif /* _hndcpu_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/hndmips.h linux.dev/arch/mips/bcm947xx/include/hndmips.h
---- linux.old/arch/mips/bcm947xx/include/hndmips.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/hndmips.h 2006-04-27 20:43:42.000000000 +0200
-@@ -0,0 +1,45 @@
-+/*
-+ * HND SiliconBackplane MIPS core software interface.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: hndmips.h,v 1.1.1.8 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _hndmips_h_
-+#define _hndmips_h_
-+
-+extern void sb_mips_init(sb_t *sbh, uint shirq_map_base);
-+extern bool sb_mips_setclock(sb_t *sbh, uint32 mipsclock, uint32 sbclock, uint32 pciclock);
-+extern void enable_pfc(uint32 mode);
-+extern uint32 sb_memc_get_ncdl(sb_t *sbh);
-+
-+#if defined(BCMPERFSTATS)
-+/* enable counting - exclusive version. Only one set of counters allowed at a time */
-+extern void hndmips_perf_instrcount_enable(void);
-+extern void hndmips_perf_icachecount_enable(void);
-+extern void hndmips_perf_dcachecount_enable(void);
-+/* start and stop counting */
-+#define hndmips_perf_start01() \
-+ MTC0(C0_PERFORMANCE, 4, MFC0(C0_PERFORMANCE, 4) | 0x80008000)
-+#define hndmips_perf_stop01() \
-+ MTC0(C0_PERFORMANCE, 4, MFC0(C0_PERFORMANCE, 4) & ~0x80008000)
-+/* retrieve coutners - counters *decrement* */
-+#define hndmips_perf_read0() -(long)(MFC0(C0_PERFORMANCE, 0))
-+#define hndmips_perf_read1() -(long)(MFC0(C0_PERFORMANCE, 1))
-+#define hndmips_perf_read2() -(long)(MFC0(C0_PERFORMANCE, 2))
-+/* enable counting - modular version. Each counters can be enabled separately. */
-+extern void hndmips_perf_icache_hit_enable(void);
-+extern void hndmips_perf_icache_miss_enable(void);
-+extern uint32 hndmips_perf_read_instrcount(void);
-+extern uint32 hndmips_perf_read_cache_miss(void);
-+extern uint32 hndmips_perf_read_cache_hit(void);
-+#endif /* defined(BCMINTERNAL) || defined (BCMPERFSTATS) */
-+
-+#endif /* _hndmips_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/hndpci.h linux.dev/arch/mips/bcm947xx/include/hndpci.h
---- linux.old/arch/mips/bcm947xx/include/hndpci.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/hndpci.h 2006-04-27 20:36:48.000000000 +0200
-@@ -0,0 +1,30 @@
-+/*
-+ * HND SiliconBackplane PCI core software interface.
-+ *
-+ * $Id: hndpci.h,v 1.1.1.1 2006/02/27 03:43:16 honor Exp $
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ */
-+
-+#ifndef _hndpci_h_
-+#define _hndpci_h_
-+
-+extern int sbpci_read_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf,
-+ int len);
-+extern int extpci_read_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf,
-+ int len);
-+extern int sbpci_write_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf,
-+ int len);
-+extern int extpci_write_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf,
-+ int len);
-+extern void sbpci_ban(uint16 core);
-+extern int sbpci_init(sb_t *sbh);
-+extern int sbpci_init_pci(sb_t *sbh);
-+extern void sbpci_check(sb_t *sbh);
-+
-+#endif /* _hndpci_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/linuxver.h linux.dev/arch/mips/bcm947xx/include/linuxver.h
---- linux.old/arch/mips/bcm947xx/include/linuxver.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/linuxver.h 2006-04-27 20:10:08.000000000 +0200
-@@ -0,0 +1,417 @@
-+/*
-+ * Linux-specific abstractions to gain some independence from linux kernel versions.
-+ * Pave over some 2.2 versus 2.4 versus 2.6 kernel differences.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: linuxver.h,v 1.1.1.10 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _linuxver_h_
-+#define _linuxver_h_
-+
-+#include <linux/config.h>
-+#include <linux/version.h>
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0))
-+/* __NO_VERSION__ must be defined for all linkables except one in 2.2 */
-+#ifdef __UNDEF_NO_VERSION__
-+#undef __NO_VERSION__
-+#else
-+#define __NO_VERSION__
-+#endif
-+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0) */
-+
-+#if defined(MODULE) && defined(MODVERSIONS)
-+#include <linux/modversions.h>
-+#endif
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 0)
-+#include <linux/moduleparam.h>
-+#endif
-+
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
-+#define module_param(_name_, _type_, _perm_) MODULE_PARM(_name_, "i")
-+#define module_param_string(_name_, _string_, _size_, _perm_) \
-+ MODULE_PARM(_string_, "c" __MODULE_STRING(_size_))
-+#endif
-+
-+/* linux/malloc.h is deprecated, use linux/slab.h instead. */
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 9))
-+#include <linux/malloc.h>
-+#else
-+#include <linux/slab.h>
-+#endif
-+
-+#include <linux/types.h>
-+#include <linux/init.h>
-+#include <linux/mm.h>
-+#include <linux/string.h>
-+#include <linux/pci.h>
-+#include <linux/interrupt.h>
-+#include <linux/netdevice.h>
-+#include <asm/io.h>
-+
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 5, 41))
-+#include <linux/workqueue.h>
-+#else
-+#include <linux/tqueue.h>
-+#ifndef work_struct
-+#define work_struct tq_struct
-+#endif
-+#ifndef INIT_WORK
-+#define INIT_WORK(_work, _func, _data) INIT_TQUEUE((_work), (_func), (_data))
-+#endif
-+#ifndef schedule_work
-+#define schedule_work(_work) schedule_task((_work))
-+#endif
-+#ifndef flush_scheduled_work
-+#define flush_scheduled_work() flush_scheduled_tasks()
-+#endif
-+#endif /* LINUX_VERSION_CODE > KERNEL_VERSION(2, 5, 41) */
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0))
-+/* Some distributions have their own 2.6.x compatibility layers */
-+#ifndef IRQ_NONE
-+typedef void irqreturn_t;
-+#define IRQ_NONE
-+#define IRQ_HANDLED
-+#define IRQ_RETVAL(x)
-+#endif
-+#else
-+typedef irqreturn_t(*FN_ISR) (int irq, void *dev_id, struct pt_regs *ptregs);
-+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) */
-+
-+#if defined(CONFIG_PCMCIA) || defined(CONFIG_PCMCIA_MODULE)
-+
-+#include <pcmcia/version.h>
-+#include <pcmcia/cs_types.h>
-+#include <pcmcia/cs.h>
-+#include <pcmcia/cistpl.h>
-+#include <pcmcia/cisreg.h>
-+#include <pcmcia/ds.h>
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 69))
-+/* In 2.5 (as of 2.5.69 at least) there is a cs_error exported which
-+ * does this, but it's not in 2.4 so we do our own for now.
-+ */
-+static inline void
-+cs_error(client_handle_t handle, int func, int ret)
-+{
-+ error_info_t err = { func, ret };
-+ CardServices(ReportError, handle, &err);
-+}
-+#endif
-+
-+#endif /* CONFIG_PCMCIA */
-+
-+#ifndef __exit
-+#define __exit
-+#endif
-+#ifndef __devexit
-+#define __devexit
-+#endif
-+#ifndef __devinit
-+#define __devinit __init
-+#endif
-+#ifndef __devinitdata
-+#define __devinitdata
-+#endif
-+#ifndef __devexit_p
-+#define __devexit_p(x) x
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0))
-+
-+#define pci_get_drvdata(dev) (dev)->sysdata
-+#define pci_set_drvdata(dev, value) (dev)->sysdata = (value)
-+
-+/*
-+ * New-style (2.4.x) PCI/hot-pluggable PCI/CardBus registration
-+ */
-+
-+struct pci_device_id {
-+ unsigned int vendor, device; /* Vendor and device ID or PCI_ANY_ID */
-+ unsigned int subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */
-+ unsigned int class, class_mask; /* (class,subclass,prog-if) triplet */
-+ unsigned long driver_data; /* Data private to the driver */
-+};
-+
-+struct pci_driver {
-+ struct list_head node;
-+ char *name;
-+ const struct pci_device_id *id_table; /* NULL if wants all devices */
-+ int (*probe)(struct pci_dev *dev,
-+ const struct pci_device_id *id); /* New device inserted */
-+ void (*remove)(struct pci_dev *dev); /* Device removed (NULL if not a hot-plug
-+ * capable driver)
-+ */
-+ void (*suspend)(struct pci_dev *dev); /* Device suspended */
-+ void (*resume)(struct pci_dev *dev); /* Device woken up */
-+};
-+
-+#define MODULE_DEVICE_TABLE(type, name)
-+#define PCI_ANY_ID (~0)
-+
-+/* compatpci.c */
-+#define pci_module_init pci_register_driver
-+extern int pci_register_driver(struct pci_driver *drv);
-+extern void pci_unregister_driver(struct pci_driver *drv);
-+
-+#endif /* PCI registration */
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 18))
-+#ifdef MODULE
-+#define module_init(x) int init_module(void) { return x(); }
-+#define module_exit(x) void cleanup_module(void) { x(); }
-+#else
-+#define module_init(x) __initcall(x);
-+#define module_exit(x) __exitcall(x);
-+#endif
-+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 18) */
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 48))
-+#define list_for_each(pos, head) \
-+ for (pos = (head)->next; pos != (head); pos = pos->next)
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 13))
-+#define pci_resource_start(dev, bar) ((dev)->base_address[(bar)])
-+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 44))
-+#define pci_resource_start(dev, bar) ((dev)->resource[(bar)].start)
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 23))
-+#define pci_enable_device(dev) do { } while (0)
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 14))
-+#define net_device device
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 42))
-+
-+/*
-+ * DMA mapping
-+ *
-+ * See linux/Documentation/DMA-mapping.txt
-+ */
-+
-+#ifndef PCI_DMA_TODEVICE
-+#define PCI_DMA_TODEVICE 1
-+#define PCI_DMA_FROMDEVICE 2
-+#endif
-+
-+typedef u32 dma_addr_t;
-+
-+/* Pure 2^n version of get_order */
-+static inline int get_order(unsigned long size)
-+{
-+ int order;
-+
-+ size = (size-1) >> (PAGE_SHIFT-1);
-+ order = -1;
-+ do {
-+ size >>= 1;
-+ order++;
-+ } while (size);
-+ return order;
-+}
-+
-+static inline void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
-+ dma_addr_t *dma_handle)
-+{
-+ void *ret;
-+ int gfp = GFP_ATOMIC | GFP_DMA;
-+
-+ ret = (void *)__get_free_pages(gfp, get_order(size));
-+
-+ if (ret != NULL) {
-+ memset(ret, 0, size);
-+ *dma_handle = virt_to_bus(ret);
-+ }
-+ return ret;
-+}
-+static inline void pci_free_consistent(struct pci_dev *hwdev, size_t size,
-+ void *vaddr, dma_addr_t dma_handle)
-+{
-+ free_pages((unsigned long)vaddr, get_order(size));
-+}
-+#ifdef ILSIM
-+extern uint pci_map_single(void *dev, void *va, uint size, int direction);
-+extern void pci_unmap_single(void *dev, uint pa, uint size, int direction);
-+#else
-+#define pci_map_single(cookie, address, size, dir) virt_to_bus(address)
-+#define pci_unmap_single(cookie, address, size, dir)
-+#endif
-+
-+#endif /* DMA mapping */
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 43))
-+
-+#define dev_kfree_skb_any(a) dev_kfree_skb(a)
-+#define netif_down(dev) do { (dev)->start = 0; } while (0)
-+
-+/* pcmcia-cs provides its own netdevice compatibility layer */
-+#ifndef _COMPAT_NETDEVICE_H
-+
-+/*
-+ * SoftNet
-+ *
-+ * For pre-softnet kernels we need to tell the upper layer not to
-+ * re-enter start_xmit() while we are in there. However softnet
-+ * guarantees not to enter while we are in there so there is no need
-+ * to do the netif_stop_queue() dance unless the transmit queue really
-+ * gets stuck. This should also improve performance according to tests
-+ * done by Aman Singla.
-+ */
-+
-+#define dev_kfree_skb_irq(a) dev_kfree_skb(a)
-+#define netif_wake_queue(dev) \
-+ do { clear_bit(0, &(dev)->tbusy); mark_bh(NET_BH); } while (0)
-+#define netif_stop_queue(dev) set_bit(0, &(dev)->tbusy)
-+
-+static inline void netif_start_queue(struct net_device *dev)
-+{
-+ dev->tbusy = 0;
-+ dev->interrupt = 0;
-+ dev->start = 1;
-+}
-+
-+#define netif_queue_stopped(dev) (dev)->tbusy
-+#define netif_running(dev) (dev)->start
-+
-+#endif /* _COMPAT_NETDEVICE_H */
-+
-+#define netif_device_attach(dev) netif_start_queue(dev)
-+#define netif_device_detach(dev) netif_stop_queue(dev)
-+
-+/* 2.4.x renamed bottom halves to tasklets */
-+#define tasklet_struct tq_struct
-+static inline void tasklet_schedule(struct tasklet_struct *tasklet)
-+{
-+ queue_task(tasklet, &tq_immediate);
-+ mark_bh(IMMEDIATE_BH);
-+}
-+
-+static inline void tasklet_init(struct tasklet_struct *tasklet,
-+ void (*func)(unsigned long),
-+ unsigned long data)
-+{
-+ tasklet->next = NULL;
-+ tasklet->sync = 0;
-+ tasklet->routine = (void (*)(void *))func;
-+ tasklet->data = (void *)data;
-+}
-+#define tasklet_kill(tasklet) { do{} while (0); }
-+
-+/* 2.4.x introduced del_timer_sync() */
-+#define del_timer_sync(timer) del_timer(timer)
-+
-+#else
-+
-+#define netif_down(dev)
-+
-+#endif /* SoftNet */
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 3))
-+
-+/*
-+ * Emit code to initialise a tq_struct's routine and data pointers
-+ */
-+#define PREPARE_TQUEUE(_tq, _routine, _data) \
-+ do { \
-+ (_tq)->routine = _routine; \
-+ (_tq)->data = _data; \
-+ } while (0)
-+
-+/*
-+ * Emit code to initialise all of a tq_struct
-+ */
-+#define INIT_TQUEUE(_tq, _routine, _data) \
-+ do { \
-+ INIT_LIST_HEAD(&(_tq)->list); \
-+ (_tq)->sync = 0; \
-+ PREPARE_TQUEUE((_tq), (_routine), (_data)); \
-+ } while (0)
-+
-+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 3) */
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 6))
-+
-+/* Power management related routines */
-+
-+static inline int
-+pci_save_state(struct pci_dev *dev, u32 *buffer)
-+{
-+ int i;
-+ if (buffer) {
-+ for (i = 0; i < 16; i++)
-+ pci_read_config_dword(dev, i * 4, &buffer[i]);
-+ }
-+ return 0;
-+}
-+
-+static inline int
-+pci_restore_state(struct pci_dev *dev, u32 *buffer)
-+{
-+ int i;
-+
-+ if (buffer) {
-+ for (i = 0; i < 16; i++)
-+ pci_write_config_dword(dev, i * 4, buffer[i]);
-+ }
-+ /*
-+ * otherwise, write the context information we know from bootup.
-+ * This works around a problem where warm-booting from Windows
-+ * combined with a D3(hot)->D0 transition causes PCI config
-+ * header data to be forgotten.
-+ */
-+ else {
-+ for (i = 0; i < 6; i ++)
-+ pci_write_config_dword(dev,
-+ PCI_BASE_ADDRESS_0 + (i * 4),
-+ pci_resource_start(dev, i));
-+ pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
-+ }
-+ return 0;
-+}
-+
-+#endif /* PCI power management */
-+
-+/* Old cp0 access macros deprecated in 2.4.19 */
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 19))
-+#define read_c0_count() read_32bit_cp0_register(CP0_COUNT)
-+#endif
-+
-+/* Module refcount handled internally in 2.6.x */
-+#ifndef SET_MODULE_OWNER
-+#define SET_MODULE_OWNER(dev) do {} while (0)
-+#define OLD_MOD_INC_USE_COUNT MOD_INC_USE_COUNT
-+#define OLD_MOD_DEC_USE_COUNT MOD_DEC_USE_COUNT
-+#else
-+#define OLD_MOD_INC_USE_COUNT do {} while (0)
-+#define OLD_MOD_DEC_USE_COUNT do {} while (0)
-+#endif
-+
-+#ifndef SET_NETDEV_DEV
-+#define SET_NETDEV_DEV(net, pdev) do {} while (0)
-+#endif
-+
-+#ifndef HAVE_FREE_NETDEV
-+#define free_netdev(dev) kfree(dev)
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0))
-+/* struct packet_type redefined in 2.6.x */
-+#define af_packet_priv data
-+#endif
-+
-+#endif /* _linuxver_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/mipsinc.h linux.dev/arch/mips/bcm947xx/include/mipsinc.h
---- linux.old/arch/mips/bcm947xx/include/mipsinc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/mipsinc.h 2006-04-27 22:12:20.000000000 +0200
-@@ -0,0 +1,541 @@
-+/*
-+ * HND Run Time Environment for standalone MIPS programs.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: mipsinc.h,v 1.1.1.5 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _MISPINC_H
-+#define _MISPINC_H
-+
-+
-+/* MIPS defines */
-+
-+#ifdef _LANGUAGE_ASSEMBLY
-+
-+/*
-+ * Symbolic register names for 32 bit ABI
-+ */
-+#define zero $0 /* wired zero */
-+#define AT $1 /* assembler temp - uppercase because of ".set at" */
-+#define v0 $2 /* return value */
-+#define v1 $3
-+#define a0 $4 /* argument registers */
-+#define a1 $5
-+#define a2 $6
-+#define a3 $7
-+#define t0 $8 /* caller saved */
-+#define t1 $9
-+#define t2 $10
-+#define t3 $11
-+#define t4 $12
-+#define t5 $13
-+#define t6 $14
-+#define t7 $15
-+#define s0 $16 /* callee saved */
-+#define s1 $17
-+#define s2 $18
-+#define s3 $19
-+#define s4 $20
-+#define s5 $21
-+#define s6 $22
-+#define s7 $23
-+#define t8 $24 /* caller saved */
-+#define t9 $25
-+#define jp $25 /* PIC jump register */
-+#define k0 $26 /* kernel scratch */
-+#define k1 $27
-+#define gp $28 /* global pointer */
-+#define sp $29 /* stack pointer */
-+#define fp $30 /* frame pointer */
-+#define s8 $30 /* same like fp! */
-+#define ra $31 /* return address */
-+
-+
-+/* CP0 Registers */
-+
-+#define C0_INX $0
-+#define C0_RAND $1
-+#define C0_TLBLO0 $2
-+#define C0_TLBLO C0_TLBLO0
-+#define C0_TLBLO1 $3
-+#define C0_CTEXT $4
-+#define C0_PGMASK $5
-+#define C0_WIRED $6
-+#define C0_BADVADDR $8
-+#define C0_COUNT $9
-+#define C0_TLBHI $10
-+#define C0_COMPARE $11
-+#define C0_SR $12
-+#define C0_STATUS C0_SR
-+#define C0_CAUSE $13
-+#define C0_EPC $14
-+#define C0_PRID $15
-+#define C0_CONFIG $16
-+#define C0_LLADDR $17
-+#define C0_WATCHLO $18
-+#define C0_WATCHHI $19
-+#define C0_XCTEXT $20
-+#define C0_DIAGNOSTIC $22
-+#define C0_BROADCOM C0_DIAGNOSTIC
-+#define C0_PERFORMANCE $25
-+#define C0_ECC $26
-+#define C0_CACHEERR $27
-+#define C0_TAGLO $28
-+#define C0_TAGHI $29
-+#define C0_ERREPC $30
-+#define C0_DESAVE $31
-+
-+/*
-+ * LEAF - declare leaf routine
-+ */
-+#define LEAF(symbol) \
-+ .globl symbol; \
-+ .align 2; \
-+ .type symbol, @function; \
-+ .ent symbol, 0; \
-+symbol: .frame sp, 0, ra
-+
-+/*
-+ * END - mark end of function
-+ */
-+#define END(function) \
-+ .end function; \
-+ .size function, . - function
-+
-+#define _ULCAST_
-+
-+#define MFC0_SEL(dst, src, sel) \
-+ .word\t(0x40000000 | ((dst) << 16) | ((src) << 11) | (sel))
-+
-+
-+#define MTC0_SEL(dst, src, sel) \
-+ .word\t(0x40800000 | ((dst) << 16) | ((src) << 11) | (sel))
-+
-+#else
-+
-+/*
-+ * The following macros are especially useful for __asm__
-+ * inline assembler.
-+ */
-+#ifndef __STR
-+#define __STR(x) #x
-+#endif
-+#ifndef STR
-+#define STR(x) __STR(x)
-+#endif
-+
-+#define _ULCAST_ (unsigned long)
-+
-+
-+/* CP0 Registers */
-+
-+#define C0_INX 0 /* CP0: TLB Index */
-+#define C0_RAND 1 /* CP0: TLB Random */
-+#define C0_TLBLO0 2 /* CP0: TLB EntryLo0 */
-+#define C0_TLBLO C0_TLBLO0 /* CP0: TLB EntryLo0 */
-+#define C0_TLBLO1 3 /* CP0: TLB EntryLo1 */
-+#define C0_CTEXT 4 /* CP0: Context */
-+#define C0_PGMASK 5 /* CP0: TLB PageMask */
-+#define C0_WIRED 6 /* CP0: TLB Wired */
-+#define C0_BADVADDR 8 /* CP0: Bad Virtual Address */
-+#define C0_COUNT 9 /* CP0: Count */
-+#define C0_TLBHI 10 /* CP0: TLB EntryHi */
-+#define C0_COMPARE 11 /* CP0: Compare */
-+#define C0_SR 12 /* CP0: Processor Status */
-+#define C0_STATUS C0_SR /* CP0: Processor Status */
-+#define C0_CAUSE 13 /* CP0: Exception Cause */
-+#define C0_EPC 14 /* CP0: Exception PC */
-+#define C0_PRID 15 /* CP0: Processor Revision Indentifier */
-+#define C0_CONFIG 16 /* CP0: Config */
-+#define C0_LLADDR 17 /* CP0: LLAddr */
-+#define C0_WATCHLO 18 /* CP0: WatchpointLo */
-+#define C0_WATCHHI 19 /* CP0: WatchpointHi */
-+#define C0_XCTEXT 20 /* CP0: XContext */
-+#define C0_DIAGNOSTIC 22 /* CP0: Diagnostic */
-+#define C0_BROADCOM C0_DIAGNOSTIC /* CP0: Broadcom Register */
-+#define C0_PERFORMANCE 25 /* CP0: Performance Counter/Control Registers */
-+#define C0_ECC 26 /* CP0: ECC */
-+#define C0_CACHEERR 27 /* CP0: CacheErr */
-+#define C0_TAGLO 28 /* CP0: TagLo */
-+#define C0_TAGHI 29 /* CP0: TagHi */
-+#define C0_ERREPC 30 /* CP0: ErrorEPC */
-+#define C0_DESAVE 31 /* CP0: DebugSave */
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+/*
-+ * Memory segments (32bit kernel mode addresses)
-+ */
-+#undef KUSEG
-+#undef KSEG0
-+#undef KSEG1
-+#undef KSEG2
-+#undef KSEG3
-+#define KUSEG 0x00000000
-+#define KSEG0 0x80000000
-+#define KSEG1 0xa0000000
-+#define KSEG2 0xc0000000
-+#define KSEG3 0xe0000000
-+#define PHYSADDR_MASK 0x1fffffff
-+
-+/*
-+ * Map an address to a certain kernel segment
-+ */
-+#undef PHYSADDR
-+#undef KSEG0ADDR
-+#undef KSEG1ADDR
-+#undef KSEG2ADDR
-+#undef KSEG3ADDR
-+
-+#define PHYSADDR(a) (_ULCAST_(a) & PHYSADDR_MASK)
-+#define KSEG0ADDR(a) ((_ULCAST_(a) & PHYSADDR_MASK) | KSEG0)
-+#define KSEG1ADDR(a) ((_ULCAST_(a) & PHYSADDR_MASK) | KSEG1)
-+#define KSEG2ADDR(a) ((_ULCAST_(a) & PHYSADDR_MASK) | KSEG2)
-+#define KSEG3ADDR(a) ((_ULCAST_(a) & PHYSADDR_MASK) | KSEG3)
-+
-+
-+#ifndef Index_Invalidate_I
-+/*
-+ * Cache Operations
-+ */
-+#define Index_Invalidate_I 0x00
-+#define Index_Writeback_Inv_D 0x01
-+#define Index_Invalidate_SI 0x02
-+#define Index_Writeback_Inv_SD 0x03
-+#define Index_Load_Tag_I 0x04
-+#define Index_Load_Tag_D 0x05
-+#define Index_Load_Tag_SI 0x06
-+#define Index_Load_Tag_SD 0x07
-+#define Index_Store_Tag_I 0x08
-+#define Index_Store_Tag_D 0x09
-+#define Index_Store_Tag_SI 0x0A
-+#define Index_Store_Tag_SD 0x0B
-+#define Create_Dirty_Excl_D 0x0d
-+#define Create_Dirty_Excl_SD 0x0f
-+#define Hit_Invalidate_I 0x10
-+#define Hit_Invalidate_D 0x11
-+#define Hit_Invalidate_SI 0x12
-+#define Hit_Invalidate_SD 0x13
-+#define Fill_I 0x14
-+#define Hit_Writeback_Inv_D 0x15
-+ /* 0x16 is unused */
-+#define Hit_Writeback_Inv_SD 0x17
-+#define R5K_Page_Invalidate_S 0x17
-+#define Hit_Writeback_I 0x18
-+#define Hit_Writeback_D 0x19
-+ /* 0x1a is unused */
-+#define Hit_Writeback_SD 0x1b
-+ /* 0x1c is unused */
-+ /* 0x1e is unused */
-+#define Hit_Set_Virtual_SI 0x1e
-+#define Hit_Set_Virtual_SD 0x1f
-+#endif /* !Index_Invalidate_I */
-+
-+
-+/*
-+ * R4x00 interrupt enable / cause bits
-+ */
-+#define IE_SW0 (_ULCAST_(1) << 8)
-+#define IE_SW1 (_ULCAST_(1) << 9)
-+#define IE_IRQ0 (_ULCAST_(1) << 10)
-+#define IE_IRQ1 (_ULCAST_(1) << 11)
-+#define IE_IRQ2 (_ULCAST_(1) << 12)
-+#define IE_IRQ3 (_ULCAST_(1) << 13)
-+#define IE_IRQ4 (_ULCAST_(1) << 14)
-+#define IE_IRQ5 (_ULCAST_(1) << 15)
-+
-+#ifndef ST0_UM
-+/*
-+ * Bitfields in the mips32 cp0 status register
-+ */
-+#define ST0_IE 0x00000001
-+#define ST0_EXL 0x00000002
-+#define ST0_ERL 0x00000004
-+#define ST0_UM 0x00000010
-+#define ST0_SWINT0 0x00000100
-+#define ST0_SWINT1 0x00000200
-+#define ST0_HWINT0 0x00000400
-+#define ST0_HWINT1 0x00000800
-+#define ST0_HWINT2 0x00001000
-+#define ST0_HWINT3 0x00002000
-+#define ST0_HWINT4 0x00004000
-+#define ST0_HWINT5 0x00008000
-+#define ST0_IM 0x0000ff00
-+#define ST0_NMI 0x00080000
-+#define ST0_SR 0x00100000
-+#define ST0_TS 0x00200000
-+#define ST0_BEV 0x00400000
-+#define ST0_RE 0x02000000
-+#define ST0_RP 0x08000000
-+#define ST0_CU 0xf0000000
-+#define ST0_CU0 0x10000000
-+#define ST0_CU1 0x20000000
-+#define ST0_CU2 0x40000000
-+#define ST0_CU3 0x80000000
-+#endif /* !ST0_UM */
-+
-+
-+/*
-+ * Bitfields in the mips32 cp0 cause register
-+ */
-+#define C_EXC 0x0000007c
-+#define C_EXC_SHIFT 2
-+#define C_INT 0x0000ff00
-+#define C_INT_SHIFT 8
-+#define C_SW0 (_ULCAST_(1) << 8)
-+#define C_SW1 (_ULCAST_(1) << 9)
-+#define C_IRQ0 (_ULCAST_(1) << 10)
-+#define C_IRQ1 (_ULCAST_(1) << 11)
-+#define C_IRQ2 (_ULCAST_(1) << 12)
-+#define C_IRQ3 (_ULCAST_(1) << 13)
-+#define C_IRQ4 (_ULCAST_(1) << 14)
-+#define C_IRQ5 (_ULCAST_(1) << 15)
-+#define C_WP 0x00400000
-+#define C_IV 0x00800000
-+#define C_CE 0x30000000
-+#define C_CE_SHIFT 28
-+#define C_BD 0x80000000
-+
-+/* Values in C_EXC */
-+#define EXC_INT 0
-+#define EXC_TLBM 1
-+#define EXC_TLBL 2
-+#define EXC_TLBS 3
-+#define EXC_AEL 4
-+#define EXC_AES 5
-+#define EXC_IBE 6
-+#define EXC_DBE 7
-+#define EXC_SYS 8
-+#define EXC_BPT 9
-+#define EXC_RI 10
-+#define EXC_CU 11
-+#define EXC_OV 12
-+#define EXC_TR 13
-+#define EXC_WATCH 23
-+#define EXC_MCHK 24
-+
-+
-+/*
-+ * Bits in the cp0 config register.
-+ */
-+#define CONF_CM_CACHABLE_NO_WA 0
-+#define CONF_CM_CACHABLE_WA 1
-+#define CONF_CM_UNCACHED 2
-+#define CONF_CM_CACHABLE_NONCOHERENT 3
-+#define CONF_CM_CACHABLE_CE 4
-+#define CONF_CM_CACHABLE_COW 5
-+#define CONF_CM_CACHABLE_CUW 6
-+#define CONF_CM_CACHABLE_ACCELERATED 7
-+#define CONF_CM_CMASK 7
-+#define CONF_CU (_ULCAST_(1) << 3)
-+#define CONF_DB (_ULCAST_(1) << 4)
-+#define CONF_IB (_ULCAST_(1) << 5)
-+#define CONF_SE (_ULCAST_(1) << 12)
-+#ifndef CONF_BE /* duplicate in mipsregs.h */
-+#define CONF_BE (_ULCAST_(1) << 15)
-+#endif
-+#define CONF_SC (_ULCAST_(1) << 17)
-+#define CONF_AC (_ULCAST_(1) << 23)
-+#define CONF_HALT (_ULCAST_(1) << 25)
-+#ifndef CONF_M /* duplicate in mipsregs.h */
-+#define CONF_M (_ULCAST_(1) << 31)
-+#endif
-+
-+
-+/*
-+ * Bits in the cp0 config register select 1.
-+ */
-+#define CONF1_FP 0x00000001 /* FPU present */
-+#define CONF1_EP 0x00000002 /* EJTAG present */
-+#define CONF1_CA 0x00000004 /* mips16 implemented */
-+#define CONF1_WR 0x00000008 /* Watch registers present */
-+#define CONF1_PC 0x00000010 /* Performance counters present */
-+#define CONF1_DA_SHIFT 7 /* D$ associativity */
-+#define CONF1_DA_MASK 0x00000380
-+#define CONF1_DA_BASE 1
-+#define CONF1_DL_SHIFT 10 /* D$ line size */
-+#define CONF1_DL_MASK 0x00001c00
-+#define CONF1_DL_BASE 2
-+#define CONF1_DS_SHIFT 13 /* D$ sets/way */
-+#define CONF1_DS_MASK 0x0000e000
-+#define CONF1_DS_BASE 64
-+#define CONF1_IA_SHIFT 16 /* I$ associativity */
-+#define CONF1_IA_MASK 0x00070000
-+#define CONF1_IA_BASE 1
-+#define CONF1_IL_SHIFT 19 /* I$ line size */
-+#define CONF1_IL_MASK 0x00380000
-+#define CONF1_IL_BASE 2
-+#define CONF1_IS_SHIFT 22 /* Instruction cache sets/way */
-+#define CONF1_IS_MASK 0x01c00000
-+#define CONF1_IS_BASE 64
-+#define CONF1_MS_MASK 0x7e000000 /* Number of tlb entries */
-+#define CONF1_MS_SHIFT 25
-+
-+/* PRID register */
-+#define PRID_COPT_MASK 0xff000000
-+#define PRID_COMP_MASK 0x00ff0000
-+#define PRID_IMP_MASK 0x0000ff00
-+#define PRID_REV_MASK 0x000000ff
-+
-+#define PRID_COMP_LEGACY 0x000000
-+#define PRID_COMP_MIPS 0x010000
-+#define PRID_COMP_BROADCOM 0x020000
-+#define PRID_COMP_ALCHEMY 0x030000
-+#define PRID_COMP_SIBYTE 0x040000
-+#define PRID_IMP_BCM4710 0x4000
-+#define PRID_IMP_BCM3302 0x9000
-+#define PRID_IMP_BCM3303 0x9100
-+
-+#define PRID_IMP_UNKNOWN 0xff00
-+
-+#define BCM330X(id) \
-+ (((id & (PRID_COMP_MASK | PRID_IMP_MASK)) == \
-+ (PRID_COMP_BROADCOM | PRID_IMP_BCM3302)) || \
-+ ((id & (PRID_COMP_MASK | PRID_IMP_MASK)) == \
-+ (PRID_COMP_BROADCOM | PRID_IMP_BCM3303)))
-+
-+/* Bits in C0_BROADCOM */
-+#define BRCM_PFC_AVAIL 0x20000000 /* PFC is available */
-+#define BRCM_DC_ENABLE 0x40000000 /* Enable Data $ */
-+#define BRCM_IC_ENABLE 0x80000000 /* Enable Instruction $ */
-+#define BRCM_PFC_ENABLE 0x00400000 /* Obsolete? Enable PFC (at least on 4310) */
-+#define BRCM_CLF_ENABLE 0x00100000 /* Enable cache line first feature */
-+
-+/* PreFetch Cache aka Read Ahead Cache */
-+
-+#define PFC_CR0 0xff400000 /* control reg 0 */
-+#define PFC_CR1 0xff400004 /* control reg 1 */
-+
-+/* PFC operations */
-+#define PFC_I 0x00000001 /* Enable PFC use for instructions */
-+#define PFC_D 0x00000002 /* Enable PFC use for data */
-+#define PFC_PFI 0x00000004 /* Enable seq. prefetch for instructions */
-+#define PFC_PFD 0x00000008 /* Enable seq. prefetch for data */
-+#define PFC_CINV 0x00000010 /* Enable selective (i/d) cacheop flushing */
-+#define PFC_NCH 0x00000020 /* Disable flushing based on cacheops */
-+#define PFC_DPF 0x00000040 /* Enable directional prefetching */
-+#define PFC_FLUSH 0x00000100 /* Flush the PFC */
-+#define PFC_BRR 0x40000000 /* Bus error indication */
-+#define PFC_PWR 0x80000000 /* Disable power saving (clock gating) */
-+
-+/* Handy defaults */
-+#define PFC_DISABLED 0
-+#define PFC_AUTO 0xffffffff /* auto select the default mode */
-+#define PFC_INST (PFC_I | PFC_PFI | PFC_CINV)
-+#define PFC_INST_NOPF (PFC_I | PFC_CINV)
-+#define PFC_DATA (PFC_D | PFC_PFD | PFC_CINV)
-+#define PFC_DATA_NOPF (PFC_D | PFC_CINV)
-+#define PFC_I_AND_D (PFC_INST | PFC_DATA)
-+#define PFC_I_AND_D_NOPF (PFC_INST_NOPF | PFC_DATA_NOPF)
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+/*
-+ * Macros to access the system control coprocessor
-+ */
-+
-+#define MFC0(source, sel) \
-+({ \
-+ int __res; \
-+ __asm__ __volatile__(" \
-+ .set\tnoreorder; \
-+ .set\tnoat; \
-+ .word\t"STR(0x40010000 | ((source) << 11) | (sel))"; \
-+ move\t%0, $1; \
-+ .set\tat; \
-+ .set\treorder" \
-+ :"=r" (__res) \
-+ : \
-+ :"$1"); \
-+ __res; \
-+})
-+
-+#define MTC0(source, sel, value) \
-+do { \
-+ __asm__ __volatile__(" \
-+ .set\tnoreorder; \
-+ .set\tnoat; \
-+ move\t$1, %z0; \
-+ .word\t"STR(0x40810000 | ((source) << 11) | (sel))"; \
-+ .set\tat; \
-+ .set\treorder" \
-+ : \
-+ :"jr" (value) \
-+ :"$1"); \
-+} while (0)
-+
-+#define get_c0_count() \
-+({ \
-+ int __res; \
-+ __asm__ __volatile__(" \
-+ .set\tnoreorder; \
-+ .set\tnoat; \
-+ mfc0\t%0, $9; \
-+ .set\tat; \
-+ .set\treorder" \
-+ :"=r" (__res)); \
-+ __res; \
-+})
-+
-+static INLINE void icache_probe(uint32 config1, uint *size, uint *lsize)
-+{
-+ uint lsz, sets, ways;
-+
-+ /* Instruction Cache Size = Associativity * Line Size * Sets Per Way */
-+ if ((lsz = ((config1 & CONF1_IL_MASK) >> CONF1_IL_SHIFT)))
-+ lsz = CONF1_IL_BASE << lsz;
-+ sets = CONF1_IS_BASE << ((config1 & CONF1_IS_MASK) >> CONF1_IS_SHIFT);
-+ ways = CONF1_IA_BASE + ((config1 & CONF1_IA_MASK) >> CONF1_IA_SHIFT);
-+ *size = lsz * sets * ways;
-+ *lsize = lsz;
-+}
-+
-+static INLINE void dcache_probe(uint32 config1, uint *size, uint *lsize)
-+{
-+ uint lsz, sets, ways;
-+
-+ /* Data Cache Size = Associativity * Line Size * Sets Per Way */
-+ if ((lsz = ((config1 & CONF1_DL_MASK) >> CONF1_DL_SHIFT)))
-+ lsz = CONF1_DL_BASE << lsz;
-+ sets = CONF1_DS_BASE << ((config1 & CONF1_DS_MASK) >> CONF1_DS_SHIFT);
-+ ways = CONF1_DA_BASE + ((config1 & CONF1_DA_MASK) >> CONF1_DA_SHIFT);
-+ *size = lsz * sets * ways;
-+ *lsize = lsz;
-+}
-+
-+#define cache_op(base, op) \
-+ __asm__ __volatile__(" \
-+ .set noreorder; \
-+ .set mips3; \
-+ cache %1, (%0); \
-+ .set mips0; \
-+ .set reorder" \
-+ : \
-+ : "r" (base), \
-+ "i" (op));
-+
-+#define cache_unroll4(base, delta, op) \
-+ __asm__ __volatile__(" \
-+ .set noreorder; \
-+ .set mips3; \
-+ cache %1, 0(%0); \
-+ cache %1, delta(%0); \
-+ cache %1, (2 * delta)(%0); \
-+ cache %1, (3 * delta)(%0); \
-+ .set mips0; \
-+ .set reorder" \
-+ : \
-+ : "r" (base), \
-+ "i" (op));
-+
-+#endif /* !_LANGUAGE_ASSEMBLY */
-+
-+#endif /* _MISPINC_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/osl.h linux.dev/arch/mips/bcm947xx/include/osl.h
---- linux.old/arch/mips/bcm947xx/include/osl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/osl.h 2006-05-02 17:40:43.000000000 +0200
-@@ -0,0 +1,179 @@
-+#ifndef __osl_h
-+#define __osl_h
-+
-+#include <linux/delay.h>
-+#include <typedefs.h>
-+#include <linuxver.h>
-+#include <bcmutils.h>
-+#include <pcicfg.h>
-+
-+#define ASSERT(n)
-+
-+/* Pkttag flag should be part of public information */
-+struct osl_pubinfo {
-+ bool pkttag;
-+ uint pktalloced; /* Number of allocated packet buffers */
-+};
-+
-+struct osl_info {
-+ struct osl_pubinfo pub;
-+ uint magic;
-+ void *pdev;
-+ uint malloced;
-+ uint failed;
-+ void *dbgmem_list;
-+};
-+
-+typedef struct osl_info osl_t;
-+
-+#define PCI_CFG_RETRY 10
-+
-+/* map/unmap direction */
-+#define DMA_TX 1 /* TX direction for DMA */
-+#define DMA_RX 2 /* RX direction for DMA */
-+
-+#define AND_REG(osh, r, v) W_REG(osh, (r), R_REG(osh, r) & (v))
-+#define OR_REG(osh, r, v) W_REG(osh, (r), R_REG(osh, r) | (v))
-+#define SET_REG(osh, r, mask, val) W_REG((osh), (r), ((R_REG((osh), r) & ~(mask)) | (val)))
-+
-+/* bcopy, bcmp, and bzero */
-+#define bcopy(src, dst, len) memcpy((dst), (src), (len))
-+#define bcmp(b1, b2, len) memcmp((b1), (b2), (len))
-+#define bzero(b, len) memset((b), '\0', (len))
-+
-+/* uncached virtual address */
-+#ifdef mips
-+#define OSL_UNCACHED(va) KSEG1ADDR((va))
-+#include <asm/addrspace.h>
-+#else
-+#define OSL_UNCACHED(va) (va)
-+#endif /* mips */
-+
-+
-+#ifndef IL_BIGENDIAN
-+#define R_REG(osh, r) (\
-+ sizeof(*(r)) == sizeof(uint8) ? readb((volatile uint8*)(r)) : \
-+ sizeof(*(r)) == sizeof(uint16) ? readw((volatile uint16*)(r)) : \
-+ readl((volatile uint32*)(r)) \
-+)
-+#define W_REG(osh, r, v) do { \
-+ switch (sizeof(*(r))) { \
-+ case sizeof(uint8): writeb((uint8)(v), (volatile uint8*)(r)); break; \
-+ case sizeof(uint16): writew((uint16)(v), (volatile uint16*)(r)); break; \
-+ case sizeof(uint32): writel((uint32)(v), (volatile uint32*)(r)); break; \
-+ } \
-+} while (0)
-+#else /* IL_BIGENDIAN */
-+#define R_REG(osh, r) ({ \
-+ __typeof(*(r)) __osl_v; \
-+ switch (sizeof(*(r))) { \
-+ case sizeof(uint8): __osl_v = readb((volatile uint8*)((uint32)r^3)); break; \
-+ case sizeof(uint16): __osl_v = readw((volatile uint16*)((uint32)r^2)); break; \
-+ case sizeof(uint32): __osl_v = readl((volatile uint32*)(r)); break; \
-+ } \
-+ __osl_v; \
-+})
-+#define W_REG(osh, r, v) do { \
-+ switch (sizeof(*(r))) { \
-+ case sizeof(uint8): writeb((uint8)(v), (volatile uint8*)((uint32)r^3)); break; \
-+ case sizeof(uint16): writew((uint16)(v), (volatile uint16*)((uint32)r^2)); break; \
-+ case sizeof(uint32): writel((uint32)(v), (volatile uint32*)(r)); break; \
-+ } \
-+} while (0)
-+#endif /* IL_BIGENDIAN */
-+
-+/* dereference an address that may cause a bus exception */
-+#define BUSPROBE(val, addr) get_dbe((val), (addr))
-+#include <asm/paccess.h>
-+
-+/* map/unmap physical to virtual I/O */
-+#define REG_MAP(pa, size) ioremap_nocache((unsigned long)(pa), (unsigned long)(size))
-+#define REG_UNMAP(va) iounmap((void *)(va))
-+
-+/* shared (dma-able) memory access macros */
-+#define R_SM(r) *(r)
-+#define W_SM(r, v) (*(r) = (v))
-+#define BZERO_SM(r, len) memset((r), '\0', (len))
-+
-+#define MALLOC(osh, size) kmalloc((size), GFP_ATOMIC)
-+#define MFREE(osh, addr, size) kfree((addr))
-+#define MALLOCED(osh) (0)
-+
-+#define osl_delay OSL_DELAY
-+static inline void OSL_DELAY(uint usec)
-+{
-+ uint d;
-+
-+ while (usec > 0) {
-+ d = MIN(usec, 1000);
-+ udelay(d);
-+ usec -= d;
-+ }
-+}
-+
-+static inline void
-+bcm_mdelay(uint ms)
-+{
-+ uint i;
-+
-+ for (i = 0; i < ms; i++) {
-+ OSL_DELAY(1000);
-+ }
-+}
-+
-+
-+#define OSL_PCMCIA_READ_ATTR(osh, offset, buf, size)
-+#define OSL_PCMCIA_WRITE_ATTR(osh, offset, buf, size)
-+
-+#define OSL_PCI_READ_CONFIG(osh, offset, size) \
-+ osl_pci_read_config((osh), (offset), (size))
-+
-+static inline uint32
-+osl_pci_read_config(osl_t *osh, uint offset, uint size)
-+{
-+ uint val;
-+ uint retry = PCI_CFG_RETRY;
-+
-+ do {
-+ pci_read_config_dword(osh->pdev, offset, &val);
-+ if (val != 0xffffffff)
-+ break;
-+ } while (retry--);
-+
-+ return (val);
-+}
-+
-+#define OSL_PCI_WRITE_CONFIG(osh, offset, size, val) \
-+ osl_pci_write_config((osh), (offset), (size), (val))
-+static inline void
-+osl_pci_write_config(osl_t *osh, uint offset, uint size, uint val)
-+{
-+ uint retry = PCI_CFG_RETRY;
-+
-+ do {
-+ pci_write_config_dword(osh->pdev, offset, val);
-+ if (offset != PCI_BAR0_WIN)
-+ break;
-+ if (osl_pci_read_config(osh, offset, size) == val)
-+ break;
-+ } while (retry--);
-+}
-+
-+
-+/* return bus # for the pci device pointed by osh->pdev */
-+#define OSL_PCI_BUS(osh) osl_pci_bus(osh)
-+static inline uint
-+osl_pci_bus(osl_t *osh)
-+{
-+ return ((struct pci_dev *)osh->pdev)->bus->number;
-+}
-+
-+/* return slot # for the pci device pointed by osh->pdev */
-+#define OSL_PCI_SLOT(osh) osl_pci_slot(osh)
-+static inline uint
-+osl_pci_slot(osl_t *osh)
-+{
-+ return PCI_SLOT(((struct pci_dev *)osh->pdev)->devfn);
-+}
-+
-+#endif
-diff -urN linux.old/arch/mips/bcm947xx/include/pcicfg.h linux.dev/arch/mips/bcm947xx/include/pcicfg.h
---- linux.old/arch/mips/bcm947xx/include/pcicfg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/pcicfg.h 2006-04-27 20:31:41.000000000 +0200
-@@ -0,0 +1,495 @@
-+/*
-+ * pcicfg.h: PCI configuration constants and structures.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: pcicfg.h,v 1.1.1.11 2006/04/08 06:13:40 honor Exp $
-+ */
-+
-+#ifndef _h_pcicfg_
-+#define _h_pcicfg_
-+
-+/* The following inside ifndef's so we don't collide with NTDDK.H */
-+#ifndef PCI_MAX_BUS
-+#define PCI_MAX_BUS 0x100
-+#endif
-+#ifndef PCI_MAX_DEVICES
-+#define PCI_MAX_DEVICES 0x20
-+#endif
-+#ifndef PCI_MAX_FUNCTION
-+#define PCI_MAX_FUNCTION 0x8
-+#endif
-+
-+#ifndef PCI_INVALID_VENDORID
-+#define PCI_INVALID_VENDORID 0xffff
-+#endif
-+#ifndef PCI_INVALID_DEVICEID
-+#define PCI_INVALID_DEVICEID 0xffff
-+#endif
-+
-+
-+/* Convert between bus-slot-function-register and config addresses */
-+
-+#define PCICFG_BUS_SHIFT 16 /* Bus shift */
-+#define PCICFG_SLOT_SHIFT 11 /* Slot shift */
-+#define PCICFG_FUN_SHIFT 8 /* Function shift */
-+#define PCICFG_OFF_SHIFT 0 /* Register shift */
-+
-+#define PCICFG_BUS_MASK 0xff /* Bus mask */
-+#define PCICFG_SLOT_MASK 0x1f /* Slot mask */
-+#define PCICFG_FUN_MASK 7 /* Function mask */
-+#define PCICFG_OFF_MASK 0xff /* Bus mask */
-+
-+#define PCI_CONFIG_ADDR(b, s, f, o) \
-+ ((((b) & PCICFG_BUS_MASK) << PCICFG_BUS_SHIFT) \
-+ | (((s) & PCICFG_SLOT_MASK) << PCICFG_SLOT_SHIFT) \
-+ | (((f) & PCICFG_FUN_MASK) << PCICFG_FUN_SHIFT) \
-+ | (((o) & PCICFG_OFF_MASK) << PCICFG_OFF_SHIFT))
-+
-+#define PCI_CONFIG_BUS(a) (((a) >> PCICFG_BUS_SHIFT) & PCICFG_BUS_MASK)
-+#define PCI_CONFIG_SLOT(a) (((a) >> PCICFG_SLOT_SHIFT) & PCICFG_SLOT_MASK)
-+#define PCI_CONFIG_FUN(a) (((a) >> PCICFG_FUN_SHIFT) & PCICFG_FUN_MASK)
-+#define PCI_CONFIG_OFF(a) (((a) >> PCICFG_OFF_SHIFT) & PCICFG_OFF_MASK)
-+
-+/* PCIE Config space accessing MACROS */
-+
-+#define PCIECFG_BUS_SHIFT 24 /* Bus shift */
-+#define PCIECFG_SLOT_SHIFT 19 /* Slot/Device shift */
-+#define PCIECFG_FUN_SHIFT 16 /* Function shift */
-+#define PCIECFG_OFF_SHIFT 0 /* Register shift */
-+
-+#define PCIECFG_BUS_MASK 0xff /* Bus mask */
-+#define PCIECFG_SLOT_MASK 0x1f /* Slot/Device mask */
-+#define PCIECFG_FUN_MASK 7 /* Function mask */
-+#define PCIECFG_OFF_MASK 0x3ff /* Register mask */
-+
-+#define PCIE_CONFIG_ADDR(b, s, f, o) \
-+ ((((b) & PCIECFG_BUS_MASK) << PCIECFG_BUS_SHIFT) \
-+ | (((s) & PCIECFG_SLOT_MASK) << PCIECFG_SLOT_SHIFT) \
-+ | (((f) & PCIECFG_FUN_MASK) << PCIECFG_FUN_SHIFT) \
-+ | (((o) & PCIECFG_OFF_MASK) << PCIECFG_OFF_SHIFT))
-+
-+#define PCIE_CONFIG_BUS(a) (((a) >> PCIECFG_BUS_SHIFT) & PCIECFG_BUS_MASK)
-+#define PCIE_CONFIG_SLOT(a) (((a) >> PCIECFG_SLOT_SHIFT) & PCIECFG_SLOT_MASK)
-+#define PCIE_CONFIG_FUN(a) (((a) >> PCIECFG_FUN_SHIFT) & PCIECFG_FUN_MASK)
-+#define PCIE_CONFIG_OFF(a) (((a) >> PCIECFG_OFF_SHIFT) & PCIECFG_OFF_MASK)
-+
-+/* The actual config space */
-+
-+#define PCI_BAR_MAX 6
-+
-+#define PCI_ROM_BAR 8
-+
-+#define PCR_RSVDA_MAX 2
-+
-+/* Bits in PCI bars' flags */
-+
-+#define PCIBAR_FLAGS 0xf
-+#define PCIBAR_IO 0x1
-+#define PCIBAR_MEM1M 0x2
-+#define PCIBAR_MEM64 0x4
-+#define PCIBAR_PREFETCH 0x8
-+#define PCIBAR_MEM32_MASK 0xFFFFFF80
-+
-+/* pci config status reg has a bit to indicate that capability ptr is present */
-+
-+#define PCI_CAPPTR_PRESENT 0x0010
-+
-+typedef struct _pci_config_regs {
-+ unsigned short vendor;
-+ unsigned short device;
-+ unsigned short command;
-+ unsigned short status;
-+ unsigned char rev_id;
-+ unsigned char prog_if;
-+ unsigned char sub_class;
-+ unsigned char base_class;
-+ unsigned char cache_line_size;
-+ unsigned char latency_timer;
-+ unsigned char header_type;
-+ unsigned char bist;
-+ unsigned long base[PCI_BAR_MAX];
-+ unsigned long cardbus_cis;
-+ unsigned short subsys_vendor;
-+ unsigned short subsys_id;
-+ unsigned long baserom;
-+ unsigned long rsvd_a[PCR_RSVDA_MAX];
-+ unsigned char int_line;
-+ unsigned char int_pin;
-+ unsigned char min_gnt;
-+ unsigned char max_lat;
-+ unsigned char dev_dep[192];
-+} pci_config_regs;
-+
-+#define SZPCR (sizeof (pci_config_regs))
-+#define MINSZPCR 64 /* offsetof (dev_dep[0] */
-+
-+/* A structure for the config registers is nice, but in most
-+ * systems the config space is not memory mapped, so we need
-+ * filed offsetts. :-(
-+ */
-+#define PCI_CFG_VID 0
-+#define PCI_CFG_DID 2
-+#define PCI_CFG_CMD 4
-+#define PCI_CFG_STAT 6
-+#define PCI_CFG_REV 8
-+#define PCI_CFG_PROGIF 9
-+#define PCI_CFG_SUBCL 0xa
-+#define PCI_CFG_BASECL 0xb
-+#define PCI_CFG_CLSZ 0xc
-+#define PCI_CFG_LATTIM 0xd
-+#define PCI_CFG_HDR 0xe
-+#define PCI_CFG_BIST 0xf
-+#define PCI_CFG_BAR0 0x10
-+#define PCI_CFG_BAR1 0x14
-+#define PCI_CFG_BAR2 0x18
-+#define PCI_CFG_BAR3 0x1c
-+#define PCI_CFG_BAR4 0x20
-+#define PCI_CFG_BAR5 0x24
-+#define PCI_CFG_CIS 0x28
-+#define PCI_CFG_SVID 0x2c
-+#define PCI_CFG_SSID 0x2e
-+#define PCI_CFG_ROMBAR 0x30
-+#define PCI_CFG_CAPPTR 0x34
-+#define PCI_CFG_INT 0x3c
-+#define PCI_CFG_PIN 0x3d
-+#define PCI_CFG_MINGNT 0x3e
-+#define PCI_CFG_MAXLAT 0x3f
-+
-+#ifdef __NetBSD__
-+#undef PCI_CLASS_DISPLAY
-+#undef PCI_CLASS_MEMORY
-+#undef PCI_CLASS_BRIDGE
-+#undef PCI_CLASS_INPUT
-+#undef PCI_CLASS_DOCK
-+#endif /* __NetBSD__ */
-+
-+/* Classes and subclasses */
-+
-+typedef enum {
-+ PCI_CLASS_OLD = 0,
-+ PCI_CLASS_DASDI,
-+ PCI_CLASS_NET,
-+ PCI_CLASS_DISPLAY,
-+ PCI_CLASS_MMEDIA,
-+ PCI_CLASS_MEMORY,
-+ PCI_CLASS_BRIDGE,
-+ PCI_CLASS_COMM,
-+ PCI_CLASS_BASE,
-+ PCI_CLASS_INPUT,
-+ PCI_CLASS_DOCK,
-+ PCI_CLASS_CPU,
-+ PCI_CLASS_SERIAL,
-+ PCI_CLASS_INTELLIGENT = 0xe,
-+ PCI_CLASS_SATELLITE,
-+ PCI_CLASS_CRYPT,
-+ PCI_CLASS_DSP,
-+ PCI_CLASS_XOR = 0xfe
-+} pci_classes;
-+
-+typedef enum {
-+ PCI_DASDI_SCSI,
-+ PCI_DASDI_IDE,
-+ PCI_DASDI_FLOPPY,
-+ PCI_DASDI_IPI,
-+ PCI_DASDI_RAID,
-+ PCI_DASDI_OTHER = 0x80
-+} pci_dasdi_subclasses;
-+
-+typedef enum {
-+ PCI_NET_ETHER,
-+ PCI_NET_TOKEN,
-+ PCI_NET_FDDI,
-+ PCI_NET_ATM,
-+ PCI_NET_OTHER = 0x80
-+} pci_net_subclasses;
-+
-+typedef enum {
-+ PCI_DISPLAY_VGA,
-+ PCI_DISPLAY_XGA,
-+ PCI_DISPLAY_3D,
-+ PCI_DISPLAY_OTHER = 0x80
-+} pci_display_subclasses;
-+
-+typedef enum {
-+ PCI_MMEDIA_VIDEO,
-+ PCI_MMEDIA_AUDIO,
-+ PCI_MMEDIA_PHONE,
-+ PCI_MEDIA_OTHER = 0x80
-+} pci_mmedia_subclasses;
-+
-+typedef enum {
-+ PCI_MEMORY_RAM,
-+ PCI_MEMORY_FLASH,
-+ PCI_MEMORY_OTHER = 0x80
-+} pci_memory_subclasses;
-+
-+typedef enum {
-+ PCI_BRIDGE_HOST,
-+ PCI_BRIDGE_ISA,
-+ PCI_BRIDGE_EISA,
-+ PCI_BRIDGE_MC,
-+ PCI_BRIDGE_PCI,
-+ PCI_BRIDGE_PCMCIA,
-+ PCI_BRIDGE_NUBUS,
-+ PCI_BRIDGE_CARDBUS,
-+ PCI_BRIDGE_RACEWAY,
-+ PCI_BRIDGE_OTHER = 0x80
-+} pci_bridge_subclasses;
-+
-+typedef enum {
-+ PCI_COMM_UART,
-+ PCI_COMM_PARALLEL,
-+ PCI_COMM_MULTIUART,
-+ PCI_COMM_MODEM,
-+ PCI_COMM_OTHER = 0x80
-+} pci_comm_subclasses;
-+
-+typedef enum {
-+ PCI_BASE_PIC,
-+ PCI_BASE_DMA,
-+ PCI_BASE_TIMER,
-+ PCI_BASE_RTC,
-+ PCI_BASE_PCI_HOTPLUG,
-+ PCI_BASE_OTHER = 0x80
-+} pci_base_subclasses;
-+
-+typedef enum {
-+ PCI_INPUT_KBD,
-+ PCI_INPUT_PEN,
-+ PCI_INPUT_MOUSE,
-+ PCI_INPUT_SCANNER,
-+ PCI_INPUT_GAMEPORT,
-+ PCI_INPUT_OTHER = 0x80
-+} pci_input_subclasses;
-+
-+typedef enum {
-+ PCI_DOCK_GENERIC,
-+ PCI_DOCK_OTHER = 0x80
-+} pci_dock_subclasses;
-+
-+typedef enum {
-+ PCI_CPU_386,
-+ PCI_CPU_486,
-+ PCI_CPU_PENTIUM,
-+ PCI_CPU_ALPHA = 0x10,
-+ PCI_CPU_POWERPC = 0x20,
-+ PCI_CPU_MIPS = 0x30,
-+ PCI_CPU_COPROC = 0x40,
-+ PCI_CPU_OTHER = 0x80
-+} pci_cpu_subclasses;
-+
-+typedef enum {
-+ PCI_SERIAL_IEEE1394,
-+ PCI_SERIAL_ACCESS,
-+ PCI_SERIAL_SSA,
-+ PCI_SERIAL_USB,
-+ PCI_SERIAL_FIBER,
-+ PCI_SERIAL_SMBUS,
-+ PCI_SERIAL_OTHER = 0x80
-+} pci_serial_subclasses;
-+
-+typedef enum {
-+ PCI_INTELLIGENT_I2O
-+} pci_intelligent_subclasses;
-+
-+typedef enum {
-+ PCI_SATELLITE_TV,
-+ PCI_SATELLITE_AUDIO,
-+ PCI_SATELLITE_VOICE,
-+ PCI_SATELLITE_DATA,
-+ PCI_SATELLITE_OTHER = 0x80
-+} pci_satellite_subclasses;
-+
-+typedef enum {
-+ PCI_CRYPT_NETWORK,
-+ PCI_CRYPT_ENTERTAINMENT,
-+ PCI_CRYPT_OTHER = 0x80
-+} pci_crypt_subclasses;
-+
-+typedef enum {
-+ PCI_DSP_DPIO,
-+ PCI_DSP_OTHER = 0x80
-+} pci_dsp_subclasses;
-+
-+typedef enum {
-+ PCI_XOR_QDMA,
-+ PCI_XOR_OTHER = 0x80
-+} pci_xor_subclasses;
-+
-+/* Header types */
-+typedef enum {
-+ PCI_HEADER_NORMAL,
-+ PCI_HEADER_BRIDGE,
-+ PCI_HEADER_CARDBUS
-+} pci_header_types;
-+
-+
-+/* Overlay for a PCI-to-PCI bridge */
-+
-+#define PPB_RSVDA_MAX 2
-+#define PPB_RSVDD_MAX 8
-+
-+typedef struct _ppb_config_regs {
-+ unsigned short vendor;
-+ unsigned short device;
-+ unsigned short command;
-+ unsigned short status;
-+ unsigned char rev_id;
-+ unsigned char prog_if;
-+ unsigned char sub_class;
-+ unsigned char base_class;
-+ unsigned char cache_line_size;
-+ unsigned char latency_timer;
-+ unsigned char header_type;
-+ unsigned char bist;
-+ unsigned long rsvd_a[PPB_RSVDA_MAX];
-+ unsigned char prim_bus;
-+ unsigned char sec_bus;
-+ unsigned char sub_bus;
-+ unsigned char sec_lat;
-+ unsigned char io_base;
-+ unsigned char io_lim;
-+ unsigned short sec_status;
-+ unsigned short mem_base;
-+ unsigned short mem_lim;
-+ unsigned short pf_mem_base;
-+ unsigned short pf_mem_lim;
-+ unsigned long pf_mem_base_hi;
-+ unsigned long pf_mem_lim_hi;
-+ unsigned short io_base_hi;
-+ unsigned short io_lim_hi;
-+ unsigned short subsys_vendor;
-+ unsigned short subsys_id;
-+ unsigned long rsvd_b;
-+ unsigned char rsvd_c;
-+ unsigned char int_pin;
-+ unsigned short bridge_ctrl;
-+ unsigned char chip_ctrl;
-+ unsigned char diag_ctrl;
-+ unsigned short arb_ctrl;
-+ unsigned long rsvd_d[PPB_RSVDD_MAX];
-+ unsigned char dev_dep[192];
-+} ppb_config_regs;
-+
-+
-+/* PCI CAPABILITY DEFINES */
-+#define PCI_CAP_POWERMGMTCAP_ID 0x01
-+#define PCI_CAP_MSICAP_ID 0x05
-+#define PCI_CAP_PCIECAP_ID 0x10
-+
-+/* Data structure to define the Message Signalled Interrupt facility
-+ * Valid for PCI and PCIE configurations
-+ */
-+typedef struct _pciconfig_cap_msi {
-+ unsigned char capID;
-+ unsigned char nextptr;
-+ unsigned short msgctrl;
-+ unsigned int msgaddr;
-+} pciconfig_cap_msi;
-+
-+/* Data structure to define the Power managment facility
-+ * Valid for PCI and PCIE configurations
-+ */
-+typedef struct _pciconfig_cap_pwrmgmt {
-+ unsigned char capID;
-+ unsigned char nextptr;
-+ unsigned short pme_cap;
-+ unsigned short pme_sts_ctrl;
-+ unsigned char pme_bridge_ext;
-+ unsigned char data;
-+} pciconfig_cap_pwrmgmt;
-+
-+/* Data structure to define the PCIE capability */
-+typedef struct _pciconfig_cap_pcie {
-+ unsigned char capID;
-+ unsigned char nextptr;
-+ unsigned short pcie_cap;
-+ unsigned int dev_cap;
-+ unsigned short dev_ctrl;
-+ unsigned short dev_status;
-+ unsigned int link_cap;
-+ unsigned short link_ctrl;
-+ unsigned short link_status;
-+} pciconfig_cap_pcie;
-+
-+/* PCIE Enhanced CAPABILITY DEFINES */
-+#define PCIE_EXTCFG_OFFSET 0x100
-+#define PCIE_ADVERRREP_CAPID 0x0001
-+#define PCIE_VC_CAPID 0x0002
-+#define PCIE_DEVSNUM_CAPID 0x0003
-+#define PCIE_PWRBUDGET_CAPID 0x0004
-+
-+/* Header to define the PCIE specific capabilities in the extended config space */
-+typedef struct _pcie_enhanced_caphdr {
-+ unsigned short capID;
-+ unsigned short cap_ver : 4;
-+ unsigned short next_ptr : 12;
-+} pcie_enhanced_caphdr;
-+
-+
-+/* Everything below is BRCM HND proprietary */
-+
-+
-+/* Brcm PCI configuration registers */
-+#define cap_list rsvd_a[0]
-+#define bar0_window dev_dep[0x80 - 0x40]
-+#define bar1_window dev_dep[0x84 - 0x40]
-+#define sprom_control dev_dep[0x88 - 0x40]
-+
-+#define PCI_BAR0_WIN 0x80 /* backplane addres space accessed by BAR0 */
-+#define PCI_BAR1_WIN 0x84 /* backplane addres space accessed by BAR1 */
-+#define PCI_SPROM_CONTROL 0x88 /* sprom property control */
-+#define PCI_BAR1_CONTROL 0x8c /* BAR1 region burst control */
-+#define PCI_INT_STATUS 0x90 /* PCI and other cores interrupts */
-+#define PCI_INT_MASK 0x94 /* mask of PCI and other cores interrupts */
-+#define PCI_TO_SB_MB 0x98 /* signal backplane interrupts */
-+#define PCI_BACKPLANE_ADDR 0xA0 /* address an arbitrary location on the system backplane */
-+#define PCI_BACKPLANE_DATA 0xA4 /* data at the location specified by above address */
-+#define PCI_GPIO_IN 0xb0 /* pci config space gpio input (>=rev3) */
-+#define PCI_GPIO_OUT 0xb4 /* pci config space gpio output (>=rev3) */
-+#define PCI_GPIO_OUTEN 0xb8 /* pci config space gpio output enable (>=rev3) */
-+
-+#define PCI_BAR0_SHADOW_OFFSET (2 * 1024) /* bar0 + 2K accesses sprom shadow (in pci core) */
-+#define PCI_BAR0_SPROM_OFFSET (4 * 1024) /* bar0 + 4K accesses external sprom */
-+#define PCI_BAR0_PCIREGS_OFFSET (6 * 1024) /* bar0 + 6K accesses pci core registers */
-+#define PCI_BAR0_PCISBR_OFFSET (4 * 1024) /* pci core SB registers are at the end of the
-+ * 8KB window, so their address is the "regular"
-+ * address plus 4K
-+ */
-+#define PCI_BAR0_WINSZ 8192 /* bar0 window size */
-+
-+/* On pci corerev >= 13 and all pcie, the bar0 is now 16KB and it maps: */
-+#define PCI_16KB0_PCIREGS_OFFSET (8 * 1024) /* bar0 + 8K accesses pci/pcie core registers */
-+#define PCI_16KB0_CCREGS_OFFSET (12 * 1024) /* bar0 + 12K accesses chipc core registers */
-+#define PCI_16KBB0_WINSZ (16 * 1024) /* bar0 window size */
-+
-+/* PCI_INT_STATUS */
-+#define PCI_SBIM_STATUS_SERR 0x4 /* backplane SBErr interrupt status */
-+
-+/* PCI_INT_MASK */
-+#define PCI_SBIM_SHIFT 8 /* backplane core interrupt mask bits offset */
-+#define PCI_SBIM_MASK 0xff00 /* backplane core interrupt mask */
-+#define PCI_SBIM_MASK_SERR 0x4 /* backplane SBErr interrupt mask */
-+
-+/* PCI_SPROM_CONTROL */
-+#define SPROM_SZ_MSK 0x02 /* SPROM Size Mask */
-+#define SPROM_LOCKED 0x08 /* SPROM Locked */
-+#define SPROM_BLANK 0x04 /* indicating a blank SPROM */
-+#define SPROM_WRITEEN 0x10 /* SPROM write enable */
-+#define SPROM_BOOTROM_WE 0x20 /* external bootrom write enable */
-+#define SPROM_OTPIN_USE 0x80 /* device OTP In use */
-+
-+#define SPROM_SIZE 256 /* sprom size in 16-bit */
-+#define SPROM_CRC_RANGE 64 /* crc cover range in 16-bit */
-+
-+/* PCI_CFG_CMD_STAT */
-+#define PCI_CFG_CMD_STAT_TA 0x08000000 /* target abort status */
-+
-+#endif /* _h_pcicfg_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/sbchipc.h linux.dev/arch/mips/bcm947xx/include/sbchipc.h
---- linux.old/arch/mips/bcm947xx/include/sbchipc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbchipc.h 2006-04-27 22:11:01.000000000 +0200
-@@ -0,0 +1,516 @@
-+/*
-+ * SiliconBackplane Chipcommon core hardware definitions.
-+ *
-+ * The chipcommon core provides chip identification, SB control,
-+ * jtag, 0/1/2 uarts, clock frequency control, a watchdog interrupt timer,
-+ * gpio interface, extbus, and support for serial and parallel flashes.
-+ *
-+ * $Id: sbchipc.h,v 1.1.1.14 2006/04/15 01:29:08 michael Exp $
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ */
-+
-+#ifndef _SBCHIPC_H
-+#define _SBCHIPC_H
-+
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+/* cpp contortions to concatenate w/arg prescan */
-+#ifndef PAD
-+#define _PADLINE(line) pad ## line
-+#define _XSTR(line) _PADLINE(line)
-+#define PAD _XSTR(__LINE__)
-+#endif /* PAD */
-+
-+typedef volatile struct {
-+ uint32 chipid; /* 0x0 */
-+ uint32 capabilities;
-+ uint32 corecontrol; /* corerev >= 1 */
-+ uint32 bist;
-+
-+ /* OTP */
-+ uint32 otpstatus; /* 0x10, corerev >= 10 */
-+ uint32 otpcontrol;
-+ uint32 otpprog;
-+ uint32 PAD;
-+
-+ /* Interrupt control */
-+ uint32 intstatus; /* 0x20 */
-+ uint32 intmask;
-+ uint32 chipcontrol; /* 0x28, rev >= 11 */
-+ uint32 chipstatus; /* 0x2c, rev >= 11 */
-+
-+ /* Jtag Master */
-+ uint32 jtagcmd; /* 0x30, rev >= 10 */
-+ uint32 jtagir;
-+ uint32 jtagdr;
-+ uint32 jtagctrl;
-+
-+ /* serial flash interface registers */
-+ uint32 flashcontrol; /* 0x40 */
-+ uint32 flashaddress;
-+ uint32 flashdata;
-+ uint32 PAD[1];
-+
-+ /* Silicon backplane configuration broadcast control */
-+ uint32 broadcastaddress; /* 0x50 */
-+ uint32 broadcastdata;
-+ uint32 PAD[2];
-+
-+ /* gpio - cleared only by power-on-reset */
-+ uint32 gpioin; /* 0x60 */
-+ uint32 gpioout;
-+ uint32 gpioouten;
-+ uint32 gpiocontrol;
-+ uint32 gpiointpolarity;
-+ uint32 gpiointmask;
-+ uint32 PAD[2];
-+
-+ /* Watchdog timer */
-+ uint32 watchdog; /* 0x80 */
-+ uint32 PAD[1];
-+
-+ /* GPIO based LED powersave registers corerev >= 16 */
-+ uint32 gpiotimerval; /* 0x88 */
-+ uint32 gpiotimeroutmask;
-+
-+ /* clock control */
-+ uint32 clockcontrol_n; /* 0x90 */
-+ uint32 clockcontrol_sb; /* aka m0 */
-+ uint32 clockcontrol_pci; /* aka m1 */
-+ uint32 clockcontrol_m2; /* mii/uart/mipsref */
-+ uint32 clockcontrol_m3; /* cpu */
-+ uint32 clkdiv; /* corerev >= 3 */
-+ uint32 PAD[2];
-+
-+ /* pll delay registers (corerev >= 4) */
-+ uint32 pll_on_delay; /* 0xb0 */
-+ uint32 fref_sel_delay;
-+ uint32 slow_clk_ctl; /* 5 < corerev < 10 */
-+ uint32 PAD[1];
-+
-+ /* Instaclock registers (corerev >= 10) */
-+ uint32 system_clk_ctl; /* 0xc0 */
-+ uint32 clkstatestretch;
-+ uint32 PAD[14];
-+
-+ /* ExtBus control registers (corerev >= 3) */
-+ uint32 pcmcia_config; /* 0x100 */
-+ uint32 pcmcia_memwait;
-+ uint32 pcmcia_attrwait;
-+ uint32 pcmcia_iowait;
-+ uint32 ide_config;
-+ uint32 ide_memwait;
-+ uint32 ide_attrwait;
-+ uint32 ide_iowait;
-+ uint32 prog_config;
-+ uint32 prog_waitcount;
-+ uint32 flash_config;
-+ uint32 flash_waitcount;
-+ uint32 PAD[44];
-+
-+ /* Clock control and hardware workarounds */
-+ uint32 clk_ctl_st;
-+ uint32 hw_war;
-+ uint32 PAD[70];
-+
-+ /* uarts */
-+ uint8 uart0data; /* 0x300 */
-+ uint8 uart0imr;
-+ uint8 uart0fcr;
-+ uint8 uart0lcr;
-+ uint8 uart0mcr;
-+ uint8 uart0lsr;
-+ uint8 uart0msr;
-+ uint8 uart0scratch;
-+ uint8 PAD[248]; /* corerev >= 1 */
-+
-+ uint8 uart1data; /* 0x400 */
-+ uint8 uart1imr;
-+ uint8 uart1fcr;
-+ uint8 uart1lcr;
-+ uint8 uart1mcr;
-+ uint8 uart1lsr;
-+ uint8 uart1msr;
-+ uint8 uart1scratch;
-+} chipcregs_t;
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+#define CC_CHIPID 0
-+#define CC_CAPABILITIES 4
-+#define CC_JTAGCMD 0x30
-+#define CC_JTAGIR 0x34
-+#define CC_JTAGDR 0x38
-+#define CC_JTAGCTRL 0x3c
-+#define CC_WATCHDOG 0x80
-+#define CC_CLKC_N 0x90
-+#define CC_CLKC_M0 0x94
-+#define CC_CLKC_M1 0x98
-+#define CC_CLKC_M2 0x9c
-+#define CC_CLKC_M3 0xa0
-+#define CC_CLKDIV 0xa4
-+#define CC_SYS_CLK_CTL 0xc0
-+#define CC_OTP 0x800
-+
-+/* chipid */
-+#define CID_ID_MASK 0x0000ffff /* Chip Id mask */
-+#define CID_REV_MASK 0x000f0000 /* Chip Revision mask */
-+#define CID_REV_SHIFT 16 /* Chip Revision shift */
-+#define CID_PKG_MASK 0x00f00000 /* Package Option mask */
-+#define CID_PKG_SHIFT 20 /* Package Option shift */
-+#define CID_CC_MASK 0x0f000000 /* CoreCount (corerev >= 4) */
-+#define CID_CC_SHIFT 24
-+
-+/* capabilities */
-+#define CAP_UARTS_MASK 0x00000003 /* Number of uarts */
-+#define CAP_MIPSEB 0x00000004 /* MIPS is in big-endian mode */
-+#define CAP_UCLKSEL 0x00000018 /* UARTs clock select */
-+#define CAP_UINTCLK 0x00000008 /* UARTs are driven by internal divided clock */
-+#define CAP_UARTGPIO 0x00000020 /* UARTs own Gpio's 15:12 */
-+#define CAP_EXTBUS_MASK 0x000000c0 /* External bus mask */
-+#define CAP_EXTBUS_NONE 0x00000000 /* No ExtBus present */
-+#define CAP_EXTBUS_FULL 0x00000040 /* ExtBus: PCMCIA, IDE & Prog */
-+#define CAP_EXTBUS_PROG 0x00000080 /* ExtBus: ProgIf only */
-+#define CAP_FLASH_MASK 0x00000700 /* Type of flash */
-+#define CAP_PLL_MASK 0x00038000 /* Type of PLL */
-+#define CAP_PWR_CTL 0x00040000 /* Power control */
-+#define CAP_OTPSIZE 0x00380000 /* OTP Size (0 = none) */
-+#define CAP_OTPSIZE_SHIFT 19 /* OTP Size shift */
-+#define CAP_OTPSIZE_BASE 5 /* OTP Size base */
-+#define CAP_JTAGP 0x00400000 /* JTAG Master Present */
-+#define CAP_ROM 0x00800000 /* Internal boot rom active */
-+#define CAP_BKPLN64 0x08000000 /* 64-bit backplane */
-+
-+/* PLL type */
-+#define PLL_NONE 0x00000000
-+#define PLL_TYPE1 0x00010000 /* 48Mhz base, 3 dividers */
-+#define PLL_TYPE2 0x00020000 /* 48Mhz, 4 dividers */
-+#define PLL_TYPE3 0x00030000 /* 25Mhz, 2 dividers */
-+#define PLL_TYPE4 0x00008000 /* 48Mhz, 4 dividers */
-+#define PLL_TYPE5 0x00018000 /* 25Mhz, 4 dividers */
-+#define PLL_TYPE6 0x00028000 /* 100/200 or 120/240 only */
-+#define PLL_TYPE7 0x00038000 /* 25Mhz, 4 dividers */
-+
-+/* corecontrol */
-+#define CC_UARTCLKO 0x00000001 /* Drive UART with internal clock */
-+#define CC_SE 0x00000002 /* sync clk out enable (corerev >= 3) */
-+
-+/* chipcontrol */
-+#define CHIPCTRL_4321A0_DEFAULT 0x3a4
-+#define CHIPCTRL_4321A1_DEFAULT 0x0a4
-+
-+/* Fields in the otpstatus register */
-+#define OTPS_PROGFAIL 0x80000000
-+#define OTPS_PROTECT 0x00000007
-+#define OTPS_HW_PROTECT 0x00000001
-+#define OTPS_SW_PROTECT 0x00000002
-+#define OTPS_CID_PROTECT 0x00000004
-+
-+/* Fields in the otpcontrol register */
-+#define OTPC_RECWAIT 0xff000000
-+#define OTPC_PROGWAIT 0x00ffff00
-+#define OTPC_PRW_SHIFT 8
-+#define OTPC_MAXFAIL 0x00000038
-+#define OTPC_VSEL 0x00000006
-+#define OTPC_SELVL 0x00000001
-+
-+/* Fields in otpprog */
-+#define OTPP_COL_MASK 0x000000ff
-+#define OTPP_ROW_MASK 0x0000ff00
-+#define OTPP_ROW_SHIFT 8
-+#define OTPP_READERR 0x10000000
-+#define OTPP_VALUE 0x20000000
-+#define OTPP_VALUE_SHIFT 29
-+#define OTPP_READ 0x40000000
-+#define OTPP_START 0x80000000
-+#define OTPP_BUSY 0x80000000
-+
-+/* jtagcmd */
-+#define JCMD_START 0x80000000
-+#define JCMD_BUSY 0x80000000
-+#define JCMD_PAUSE 0x40000000
-+#define JCMD0_ACC_MASK 0x0000f000
-+#define JCMD0_ACC_IRDR 0x00000000
-+#define JCMD0_ACC_DR 0x00001000
-+#define JCMD0_ACC_IR 0x00002000
-+#define JCMD0_ACC_RESET 0x00003000
-+#define JCMD0_ACC_IRPDR 0x00004000
-+#define JCMD0_ACC_PDR 0x00005000
-+#define JCMD0_IRW_MASK 0x00000f00
-+#define JCMD_ACC_MASK 0x000f0000 /* Changes for corerev 11 */
-+#define JCMD_ACC_IRDR 0x00000000
-+#define JCMD_ACC_DR 0x00010000
-+#define JCMD_ACC_IR 0x00020000
-+#define JCMD_ACC_RESET 0x00030000
-+#define JCMD_ACC_IRPDR 0x00040000
-+#define JCMD_ACC_PDR 0x00050000
-+#define JCMD_IRW_MASK 0x00001f00
-+#define JCMD_IRW_SHIFT 8
-+#define JCMD_DRW_MASK 0x0000003f
-+
-+/* jtagctrl */
-+#define JCTRL_FORCE_CLK 4 /* Force clock */
-+#define JCTRL_EXT_EN 2 /* Enable external targets */
-+#define JCTRL_EN 1 /* Enable Jtag master */
-+
-+/* Fields in clkdiv */
-+#define CLKD_SFLASH 0x0f000000
-+#define CLKD_SFLASH_SHIFT 24
-+#define CLKD_OTP 0x000f0000
-+#define CLKD_OTP_SHIFT 16
-+#define CLKD_JTAG 0x00000f00
-+#define CLKD_JTAG_SHIFT 8
-+#define CLKD_UART 0x000000ff
-+
-+/* intstatus/intmask */
-+#define CI_GPIO 0x00000001 /* gpio intr */
-+#define CI_EI 0x00000002 /* ro: ext intr pin (corerev >= 3) */
-+#define CI_WDRESET 0x80000000 /* watchdog reset occurred */
-+
-+/* slow_clk_ctl */
-+#define SCC_SS_MASK 0x00000007 /* slow clock source mask */
-+#define SCC_SS_LPO 0x00000000 /* source of slow clock is LPO */
-+#define SCC_SS_XTAL 0x00000001 /* source of slow clock is crystal */
-+#define SCC_SS_PCI 0x00000002 /* source of slow clock is PCI */
-+#define SCC_LF 0x00000200 /* LPOFreqSel, 1: 160Khz, 0: 32KHz */
-+#define SCC_LP 0x00000400 /* LPOPowerDown, 1: LPO is disabled,
-+ * 0: LPO is enabled
-+ */
-+#define SCC_FS 0x00000800 /* ForceSlowClk, 1: sb/cores running on slow clock,
-+ * 0: power logic control
-+ */
-+#define SCC_IP 0x00001000 /* IgnorePllOffReq, 1/0: power logic ignores/honors
-+ * PLL clock disable requests from core
-+ */
-+#define SCC_XC 0x00002000 /* XtalControlEn, 1/0: power logic does/doesn't
-+ * disable crystal when appropriate
-+ */
-+#define SCC_XP 0x00004000 /* XtalPU (RO), 1/0: crystal running/disabled */
-+#define SCC_CD_MASK 0xffff0000 /* ClockDivider (SlowClk = 1/(4+divisor)) */
-+#define SCC_CD_SHIFT 16
-+
-+/* system_clk_ctl */
-+#define SYCC_IE 0x00000001 /* ILPen: Enable Idle Low Power */
-+#define SYCC_AE 0x00000002 /* ALPen: Enable Active Low Power */
-+#define SYCC_FP 0x00000004 /* ForcePLLOn */
-+#define SYCC_AR 0x00000008 /* Force ALP (or HT if ALPen is not set */
-+#define SYCC_HR 0x00000010 /* Force HT */
-+#define SYCC_CD_MASK 0xffff0000 /* ClkDiv (ILP = 1/(4 * (divisor + 1)) */
-+#define SYCC_CD_SHIFT 16
-+
-+/* gpiotimerval */
-+#define GPIO_ONTIME_SHIFT 16
-+
-+/* clockcontrol_n */
-+#define CN_N1_MASK 0x3f /* n1 control */
-+#define CN_N2_MASK 0x3f00 /* n2 control */
-+#define CN_N2_SHIFT 8
-+#define CN_PLLC_MASK 0xf0000 /* pll control */
-+#define CN_PLLC_SHIFT 16
-+
-+/* clockcontrol_sb/pci/uart */
-+#define CC_M1_MASK 0x3f /* m1 control */
-+#define CC_M2_MASK 0x3f00 /* m2 control */
-+#define CC_M2_SHIFT 8
-+#define CC_M3_MASK 0x3f0000 /* m3 control */
-+#define CC_M3_SHIFT 16
-+#define CC_MC_MASK 0x1f000000 /* mux control */
-+#define CC_MC_SHIFT 24
-+
-+/* N3M Clock control magic field values */
-+#define CC_F6_2 0x02 /* A factor of 2 in */
-+#define CC_F6_3 0x03 /* 6-bit fields like */
-+#define CC_F6_4 0x05 /* N1, M1 or M3 */
-+#define CC_F6_5 0x09
-+#define CC_F6_6 0x11
-+#define CC_F6_7 0x21
-+
-+#define CC_F5_BIAS 5 /* 5-bit fields get this added */
-+
-+#define CC_MC_BYPASS 0x08
-+#define CC_MC_M1 0x04
-+#define CC_MC_M1M2 0x02
-+#define CC_MC_M1M2M3 0x01
-+#define CC_MC_M1M3 0x11
-+
-+/* Type 2 Clock control magic field values */
-+#define CC_T2_BIAS 2 /* n1, n2, m1 & m3 bias */
-+#define CC_T2M2_BIAS 3 /* m2 bias */
-+
-+#define CC_T2MC_M1BYP 1
-+#define CC_T2MC_M2BYP 2
-+#define CC_T2MC_M3BYP 4
-+
-+/* Type 6 Clock control magic field values */
-+#define CC_T6_MMASK 1 /* bits of interest in m */
-+#define CC_T6_M0 120000000 /* sb clock for m = 0 */
-+#define CC_T6_M1 100000000 /* sb clock for m = 1 */
-+#define SB2MIPS_T6(sb) (2 * (sb))
-+
-+/* Common clock base */
-+#define CC_CLOCK_BASE1 24000000 /* Half the clock freq */
-+#define CC_CLOCK_BASE2 12500000 /* Alternate crystal on some PLL's */
-+
-+/* Clock control values for 200Mhz in 5350 */
-+#define CLKC_5350_N 0x0311
-+#define CLKC_5350_M 0x04020009
-+
-+/* Flash types in the chipcommon capabilities register */
-+#define FLASH_NONE 0x000 /* No flash */
-+#define SFLASH_ST 0x100 /* ST serial flash */
-+#define SFLASH_AT 0x200 /* Atmel serial flash */
-+#define PFLASH 0x700 /* Parallel flash */
-+
-+/* Bits in the ExtBus config registers */
-+#define CC_CFG_EN 0x0001 /* Enable */
-+#define CC_CFG_EM_MASK 0x000e /* Extif Mode */
-+#define CC_CFG_EM_ASYNC 0x0000 /* Async/Parallel flash */
-+#define CC_CFG_EM_SYNC 0x0002 /* Synchronous */
-+#define CC_CFG_EM_PCMCIA 0x0004 /* PCMCIA */
-+#define CC_CFG_EM_IDE 0x0006 /* IDE */
-+#define CC_CFG_DS 0x0010 /* Data size, 0=8bit, 1=16bit */
-+#define CC_CFG_CD_MASK 0x0060 /* Sync: Clock divisor */
-+#define CC_CFG_CE 0x0080 /* Sync: Clock enable */
-+#define CC_CFG_SB 0x0100 /* Sync: Size/Bytestrobe */
-+
-+/* ExtBus address space */
-+#define CC_EB_BASE 0x1a000000 /* Chipc ExtBus base address */
-+#define CC_EB_PCMCIA_MEM 0x1a000000 /* PCMCIA 0 memory base address */
-+#define CC_EB_PCMCIA_IO 0x1a200000 /* PCMCIA 0 I/O base address */
-+#define CC_EB_PCMCIA_CFG 0x1a400000 /* PCMCIA 0 config base address */
-+#define CC_EB_IDE 0x1a800000 /* IDE memory base */
-+#define CC_EB_PCMCIA1_MEM 0x1a800000 /* PCMCIA 1 memory base address */
-+#define CC_EB_PCMCIA1_IO 0x1aa00000 /* PCMCIA 1 I/O base address */
-+#define CC_EB_PCMCIA1_CFG 0x1ac00000 /* PCMCIA 1 config base address */
-+#define CC_EB_PROGIF 0x1b000000 /* ProgIF Async/Sync base address */
-+
-+
-+/* Start/busy bit in flashcontrol */
-+#define SFLASH_OPCODE 0x000000ff
-+#define SFLASH_ACTION 0x00000700
-+#define SFLASH_START 0x80000000
-+#define SFLASH_BUSY SFLASH_START
-+
-+/* flashcontrol action codes */
-+#define SFLASH_ACT_OPONLY 0x0000 /* Issue opcode only */
-+#define SFLASH_ACT_OP1D 0x0100 /* opcode + 1 data byte */
-+#define SFLASH_ACT_OP3A 0x0200 /* opcode + 3 address bytes */
-+#define SFLASH_ACT_OP3A1D 0x0300 /* opcode + 3 addres & 1 data bytes */
-+#define SFLASH_ACT_OP3A4D 0x0400 /* opcode + 3 addres & 4 data bytes */
-+#define SFLASH_ACT_OP3A4X4D 0x0500 /* opcode + 3 addres, 4 don't care & 4 data bytes */
-+#define SFLASH_ACT_OP3A1X4D 0x0700 /* opcode + 3 addres, 1 don't care & 4 data bytes */
-+
-+/* flashcontrol action+opcodes for ST flashes */
-+#define SFLASH_ST_WREN 0x0006 /* Write Enable */
-+#define SFLASH_ST_WRDIS 0x0004 /* Write Disable */
-+#define SFLASH_ST_RDSR 0x0105 /* Read Status Register */
-+#define SFLASH_ST_WRSR 0x0101 /* Write Status Register */
-+#define SFLASH_ST_READ 0x0303 /* Read Data Bytes */
-+#define SFLASH_ST_PP 0x0302 /* Page Program */
-+#define SFLASH_ST_SE 0x02d8 /* Sector Erase */
-+#define SFLASH_ST_BE 0x00c7 /* Bulk Erase */
-+#define SFLASH_ST_DP 0x00b9 /* Deep Power-down */
-+#define SFLASH_ST_RES 0x03ab /* Read Electronic Signature */
-+
-+/* Status register bits for ST flashes */
-+#define SFLASH_ST_WIP 0x01 /* Write In Progress */
-+#define SFLASH_ST_WEL 0x02 /* Write Enable Latch */
-+#define SFLASH_ST_BP_MASK 0x1c /* Block Protect */
-+#define SFLASH_ST_BP_SHIFT 2
-+#define SFLASH_ST_SRWD 0x80 /* Status Register Write Disable */
-+
-+/* flashcontrol action+opcodes for Atmel flashes */
-+#define SFLASH_AT_READ 0x07e8
-+#define SFLASH_AT_PAGE_READ 0x07d2
-+#define SFLASH_AT_BUF1_READ
-+#define SFLASH_AT_BUF2_READ
-+#define SFLASH_AT_STATUS 0x01d7
-+#define SFLASH_AT_BUF1_WRITE 0x0384
-+#define SFLASH_AT_BUF2_WRITE 0x0387
-+#define SFLASH_AT_BUF1_ERASE_PROGRAM 0x0283
-+#define SFLASH_AT_BUF2_ERASE_PROGRAM 0x0286
-+#define SFLASH_AT_BUF1_PROGRAM 0x0288
-+#define SFLASH_AT_BUF2_PROGRAM 0x0289
-+#define SFLASH_AT_PAGE_ERASE 0x0281
-+#define SFLASH_AT_BLOCK_ERASE 0x0250
-+#define SFLASH_AT_BUF1_WRITE_ERASE_PROGRAM 0x0382
-+#define SFLASH_AT_BUF2_WRITE_ERASE_PROGRAM 0x0385
-+#define SFLASH_AT_BUF1_LOAD 0x0253
-+#define SFLASH_AT_BUF2_LOAD 0x0255
-+#define SFLASH_AT_BUF1_COMPARE 0x0260
-+#define SFLASH_AT_BUF2_COMPARE 0x0261
-+#define SFLASH_AT_BUF1_REPROGRAM 0x0258
-+#define SFLASH_AT_BUF2_REPROGRAM 0x0259
-+
-+/* Status register bits for Atmel flashes */
-+#define SFLASH_AT_READY 0x80
-+#define SFLASH_AT_MISMATCH 0x40
-+#define SFLASH_AT_ID_MASK 0x38
-+#define SFLASH_AT_ID_SHIFT 3
-+
-+/* OTP regions */
-+#define OTP_HW_REGION OTPS_HW_PROTECT
-+#define OTP_SW_REGION OTPS_SW_PROTECT
-+#define OTP_CID_REGION OTPS_CID_PROTECT
-+
-+/* OTP regions (Byte offsets from otp size) */
-+#define OTP_SWLIM_OFF (-8)
-+#define OTP_CIDBASE_OFF 0
-+#define OTP_CIDLIM_OFF 8
-+
-+/* Predefined OTP words (Word offset from otp size) */
-+#define OTP_BOUNDARY_OFF (-4)
-+#define OTP_HWSIGN_OFF (-3)
-+#define OTP_SWSIGN_OFF (-2)
-+#define OTP_CIDSIGN_OFF (-1)
-+
-+#define OTP_CID_OFF 0
-+#define OTP_PKG_OFF 1
-+#define OTP_FID_OFF 2
-+#define OTP_RSV_OFF 3
-+#define OTP_LIM_OFF 4
-+
-+#define OTP_SIGNATURE 0x578a
-+#define OTP_MAGIC 0x4e56
-+
-+/*
-+ * These are the UART port assignments, expressed as offsets from the base
-+ * register. These assignments should hold for any serial port based on
-+ * a 8250, 16450, or 16550(A).
-+ */
-+
-+#define UART_RX 0 /* In: Receive buffer (DLAB=0) */
-+#define UART_TX 0 /* Out: Transmit buffer (DLAB=0) */
-+#define UART_DLL 0 /* Out: Divisor Latch Low (DLAB=1) */
-+#define UART_IER 1 /* In/Out: Interrupt Enable Register (DLAB=0) */
-+#define UART_DLM 1 /* Out: Divisor Latch High (DLAB=1) */
-+#define UART_IIR 2 /* In: Interrupt Identity Register */
-+#define UART_FCR 2 /* Out: FIFO Control Register */
-+#define UART_LCR 3 /* Out: Line Control Register */
-+#define UART_MCR 4 /* Out: Modem Control Register */
-+#define UART_LSR 5 /* In: Line Status Register */
-+#define UART_MSR 6 /* In: Modem Status Register */
-+#define UART_SCR 7 /* I/O: Scratch Register */
-+#define UART_LCR_DLAB 0x80 /* Divisor latch access bit */
-+#define UART_LCR_WLEN8 0x03 /* Wordlength: 8 bits */
-+#define UART_MCR_OUT2 0x08 /* MCR GPIO out 2 */
-+#define UART_MCR_LOOP 0x10 /* Enable loopback test mode */
-+#define UART_LSR_THRE 0x20 /* Transmit-hold-register empty */
-+#define UART_LSR_RXRDY 0x01 /* Receiver ready */
-+#define UART_FCR_FIFO_ENABLE 1 /* FIFO control register bit controlling FIFO enable/disable */
-+
-+/* Interrupt Enable Register (IER) bits */
-+#define UART_IER_EDSSI 8 /* enable modem status interrupt */
-+#define UART_IER_ELSI 4 /* enable receiver line status interrupt */
-+#define UART_IER_ETBEI 2 /* enable transmitter holding register empty interrupt */
-+#define UART_IER_ERBFI 1 /* enable data available interrupt */
-+
-+#endif /* _SBCHIPC_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/sbconfig.h linux.dev/arch/mips/bcm947xx/include/sbconfig.h
---- linux.old/arch/mips/bcm947xx/include/sbconfig.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbconfig.h 2006-04-27 22:14:11.000000000 +0200
-@@ -0,0 +1,369 @@
-+/*
-+ * Broadcom SiliconBackplane hardware register definitions.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sbconfig.h,v 1.1.1.11 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _SBCONFIG_H
-+#define _SBCONFIG_H
-+
-+/* cpp contortions to concatenate w/arg prescan */
-+#ifndef PAD
-+#define _PADLINE(line) pad ## line
-+#define _XSTR(line) _PADLINE(line)
-+#define PAD _XSTR(__LINE__)
-+#endif
-+
-+/*
-+ * SiliconBackplane Address Map.
-+ * All regions may not exist on all chips.
-+ */
-+#define SB_SDRAM_BASE 0x00000000 /* Physical SDRAM */
-+#define SB_PCI_MEM 0x08000000 /* Host Mode sb2pcitranslation0 (64 MB) */
-+#define SB_PCI_MEM_SZ (64 * 1024 * 1024)
-+#define SB_PCI_CFG 0x0c000000 /* Host Mode sb2pcitranslation1 (64 MB) */
-+#define SB_SDRAM_SWAPPED 0x10000000 /* Byteswapped Physical SDRAM */
-+#define SB_ENUM_BASE 0x18000000 /* Enumeration space base */
-+#define SB_ENUM_LIM 0x18010000 /* Enumeration space limit */
-+
-+#define SB_FLASH2 0x1c000000 /* Flash Region 2 (region 1 shadowed here) */
-+#define SB_FLASH2_SZ 0x02000000 /* Size of Flash Region 2 */
-+
-+#define SB_EXTIF_BASE 0x1f000000 /* External Interface region base address */
-+#define SB_FLASH1 0x1fc00000 /* MIPS Flash Region 1 */
-+#define SB_FLASH1_SZ 0x00400000 /* MIPS Size of Flash Region 1 */
-+
-+#define SB_ROM 0x20000000 /* ARM ROM */
-+#define SB_SRAM2 0x80000000 /* ARM SRAM Region 2 */
-+#define SB_ARM_FLASH1 0xffff0000 /* ARM Flash Region 1 */
-+#define SB_ARM_FLASH1_SZ 0x00010000 /* ARM Size of Flash Region 1 */
-+
-+#define SB_PCI_DMA 0x40000000 /* Client Mode sb2pcitranslation2 (1 GB) */
-+#define SB_PCI_DMA_SZ 0x40000000 /* Client Mode sb2pcitranslation2 size in bytes */
-+#define SB_PCIE_DMA_L32 0x00000000 /* PCIE Client Mode sb2pcitranslation2
-+ * (2 ZettaBytes), low 32 bits
-+ */
-+#define SB_PCIE_DMA_H32 0x80000000 /* PCIE Client Mode sb2pcitranslation2
-+ * (2 ZettaBytes), high 32 bits
-+ */
-+#define SB_EUART (SB_EXTIF_BASE + 0x00800000)
-+#define SB_LED (SB_EXTIF_BASE + 0x00900000)
-+
-+
-+/* enumeration space related defs */
-+#define SB_CORE_SIZE 0x1000 /* each core gets 4Kbytes for registers */
-+#define SB_MAXCORES ((SB_ENUM_LIM - SB_ENUM_BASE)/SB_CORE_SIZE)
-+#define SB_MAXFUNCS 4 /* max. # functions per core */
-+#define SBCONFIGOFF 0xf00 /* core sbconfig regs are top 256bytes of regs */
-+#define SBCONFIGSIZE 256 /* sizeof (sbconfig_t) */
-+
-+/* mips address */
-+#define SB_EJTAG 0xff200000 /* MIPS EJTAG space (2M) */
-+
-+/*
-+ * Sonics Configuration Space Registers.
-+ */
-+#define SBIPSFLAG 0x08
-+#define SBTPSFLAG 0x18
-+#define SBTMERRLOGA 0x48 /* sonics >= 2.3 */
-+#define SBTMERRLOG 0x50 /* sonics >= 2.3 */
-+#define SBADMATCH3 0x60
-+#define SBADMATCH2 0x68
-+#define SBADMATCH1 0x70
-+#define SBIMSTATE 0x90
-+#define SBINTVEC 0x94
-+#define SBTMSTATELOW 0x98
-+#define SBTMSTATEHIGH 0x9c
-+#define SBBWA0 0xa0
-+#define SBIMCONFIGLOW 0xa8
-+#define SBIMCONFIGHIGH 0xac
-+#define SBADMATCH0 0xb0
-+#define SBTMCONFIGLOW 0xb8
-+#define SBTMCONFIGHIGH 0xbc
-+#define SBBCONFIG 0xc0
-+#define SBBSTATE 0xc8
-+#define SBACTCNFG 0xd8
-+#define SBFLAGST 0xe8
-+#define SBIDLOW 0xf8
-+#define SBIDHIGH 0xfc
-+
-+/* All the previous registers are above SBCONFIGOFF, but with Sonics 2.3, we have
-+ * a few registers *below* that line. I think it would be very confusing to try
-+ * and change the value of SBCONFIGOFF, so I'm definig them as absolute offsets here,
-+ */
-+
-+#define SBIMERRLOGA 0xea8
-+#define SBIMERRLOG 0xeb0
-+#define SBTMPORTCONNID0 0xed8
-+#define SBTMPORTLOCK0 0xef8
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+typedef volatile struct _sbconfig {
-+ uint32 PAD[2];
-+ uint32 sbipsflag; /* initiator port ocp slave flag */
-+ uint32 PAD[3];
-+ uint32 sbtpsflag; /* target port ocp slave flag */
-+ uint32 PAD[11];
-+ uint32 sbtmerrloga; /* (sonics >= 2.3) */
-+ uint32 PAD;
-+ uint32 sbtmerrlog; /* (sonics >= 2.3) */
-+ uint32 PAD[3];
-+ uint32 sbadmatch3; /* address match3 */
-+ uint32 PAD;
-+ uint32 sbadmatch2; /* address match2 */
-+ uint32 PAD;
-+ uint32 sbadmatch1; /* address match1 */
-+ uint32 PAD[7];
-+ uint32 sbimstate; /* initiator agent state */
-+ uint32 sbintvec; /* interrupt mask */
-+ uint32 sbtmstatelow; /* target state */
-+ uint32 sbtmstatehigh; /* target state */
-+ uint32 sbbwa0; /* bandwidth allocation table0 */
-+ uint32 PAD;
-+ uint32 sbimconfiglow; /* initiator configuration */
-+ uint32 sbimconfighigh; /* initiator configuration */
-+ uint32 sbadmatch0; /* address match0 */
-+ uint32 PAD;
-+ uint32 sbtmconfiglow; /* target configuration */
-+ uint32 sbtmconfighigh; /* target configuration */
-+ uint32 sbbconfig; /* broadcast configuration */
-+ uint32 PAD;
-+ uint32 sbbstate; /* broadcast state */
-+ uint32 PAD[3];
-+ uint32 sbactcnfg; /* activate configuration */
-+ uint32 PAD[3];
-+ uint32 sbflagst; /* current sbflags */
-+ uint32 PAD[3];
-+ uint32 sbidlow; /* identification */
-+ uint32 sbidhigh; /* identification */
-+} sbconfig_t;
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+/* sbipsflag */
-+#define SBIPS_INT1_MASK 0x3f /* which sbflags get routed to mips interrupt 1 */
-+#define SBIPS_INT1_SHIFT 0
-+#define SBIPS_INT2_MASK 0x3f00 /* which sbflags get routed to mips interrupt 2 */
-+#define SBIPS_INT2_SHIFT 8
-+#define SBIPS_INT3_MASK 0x3f0000 /* which sbflags get routed to mips interrupt 3 */
-+#define SBIPS_INT3_SHIFT 16
-+#define SBIPS_INT4_MASK 0x3f000000 /* which sbflags get routed to mips interrupt 4 */
-+#define SBIPS_INT4_SHIFT 24
-+
-+/* sbtpsflag */
-+#define SBTPS_NUM0_MASK 0x3f /* interrupt sbFlag # generated by this core */
-+#define SBTPS_F0EN0 0x40 /* interrupt is always sent on the backplane */
-+
-+/* sbtmerrlog */
-+#define SBTMEL_CM 0x00000007 /* command */
-+#define SBTMEL_CI 0x0000ff00 /* connection id */
-+#define SBTMEL_EC 0x0f000000 /* error code */
-+#define SBTMEL_ME 0x80000000 /* multiple error */
-+
-+/* sbimstate */
-+#define SBIM_PC 0xf /* pipecount */
-+#define SBIM_AP_MASK 0x30 /* arbitration policy */
-+#define SBIM_AP_BOTH 0x00 /* use both timeslaces and token */
-+#define SBIM_AP_TS 0x10 /* use timesliaces only */
-+#define SBIM_AP_TK 0x20 /* use token only */
-+#define SBIM_AP_RSV 0x30 /* reserved */
-+#define SBIM_IBE 0x20000 /* inbanderror */
-+#define SBIM_TO 0x40000 /* timeout */
-+#define SBIM_BY 0x01800000 /* busy (sonics >= 2.3) */
-+#define SBIM_RJ 0x02000000 /* reject (sonics >= 2.3) */
-+
-+/* sbtmstatelow */
-+#define SBTML_RESET 0x1 /* reset */
-+#define SBTML_REJ_MASK 0x6 /* reject */
-+#define SBTML_REJ_SHIFT 1
-+#define SBTML_CLK 0x10000 /* clock enable */
-+#define SBTML_FGC 0x20000 /* force gated clocks on */
-+#define SBTML_FL_MASK 0x3ffc0000 /* core-specific flags */
-+#define SBTML_PE 0x40000000 /* pme enable */
-+#define SBTML_BE 0x80000000 /* bist enable */
-+
-+/* sbtmstatehigh */
-+#define SBTMH_SERR 0x1 /* serror */
-+#define SBTMH_INT 0x2 /* interrupt */
-+#define SBTMH_BUSY 0x4 /* busy */
-+#define SBTMH_TO 0x00000020 /* timeout (sonics >= 2.3) */
-+#define SBTMH_FL_MASK 0x1fff0000 /* core-specific flags */
-+#define SBTMH_DMA64 0x10000000 /* supports DMA with 64-bit addresses */
-+#define SBTMH_GCR 0x20000000 /* gated clock request */
-+#define SBTMH_BISTF 0x40000000 /* bist failed */
-+#define SBTMH_BISTD 0x80000000 /* bist done */
-+
-+
-+/* sbbwa0 */
-+#define SBBWA_TAB0_MASK 0xffff /* lookup table 0 */
-+#define SBBWA_TAB1_MASK 0xffff /* lookup table 1 */
-+#define SBBWA_TAB1_SHIFT 16
-+
-+/* sbimconfiglow */
-+#define SBIMCL_STO_MASK 0x7 /* service timeout */
-+#define SBIMCL_RTO_MASK 0x70 /* request timeout */
-+#define SBIMCL_RTO_SHIFT 4
-+#define SBIMCL_CID_MASK 0xff0000 /* connection id */
-+#define SBIMCL_CID_SHIFT 16
-+
-+/* sbimconfighigh */
-+#define SBIMCH_IEM_MASK 0xc /* inband error mode */
-+#define SBIMCH_TEM_MASK 0x30 /* timeout error mode */
-+#define SBIMCH_TEM_SHIFT 4
-+#define SBIMCH_BEM_MASK 0xc0 /* bus error mode */
-+#define SBIMCH_BEM_SHIFT 6
-+
-+/* sbadmatch0 */
-+#define SBAM_TYPE_MASK 0x3 /* address type */
-+#define SBAM_AD64 0x4 /* reserved */
-+#define SBAM_ADINT0_MASK 0xf8 /* type0 size */
-+#define SBAM_ADINT0_SHIFT 3
-+#define SBAM_ADINT1_MASK 0x1f8 /* type1 size */
-+#define SBAM_ADINT1_SHIFT 3
-+#define SBAM_ADINT2_MASK 0x1f8 /* type2 size */
-+#define SBAM_ADINT2_SHIFT 3
-+#define SBAM_ADEN 0x400 /* enable */
-+#define SBAM_ADNEG 0x800 /* negative decode */
-+#define SBAM_BASE0_MASK 0xffffff00 /* type0 base address */
-+#define SBAM_BASE0_SHIFT 8
-+#define SBAM_BASE1_MASK 0xfffff000 /* type1 base address for the core */
-+#define SBAM_BASE1_SHIFT 12
-+#define SBAM_BASE2_MASK 0xffff0000 /* type2 base address for the core */
-+#define SBAM_BASE2_SHIFT 16
-+
-+/* sbtmconfiglow */
-+#define SBTMCL_CD_MASK 0xff /* clock divide */
-+#define SBTMCL_CO_MASK 0xf800 /* clock offset */
-+#define SBTMCL_CO_SHIFT 11
-+#define SBTMCL_IF_MASK 0xfc0000 /* interrupt flags */
-+#define SBTMCL_IF_SHIFT 18
-+#define SBTMCL_IM_MASK 0x3000000 /* interrupt mode */
-+#define SBTMCL_IM_SHIFT 24
-+
-+/* sbtmconfighigh */
-+#define SBTMCH_BM_MASK 0x3 /* busy mode */
-+#define SBTMCH_RM_MASK 0x3 /* retry mode */
-+#define SBTMCH_RM_SHIFT 2
-+#define SBTMCH_SM_MASK 0x30 /* stop mode */
-+#define SBTMCH_SM_SHIFT 4
-+#define SBTMCH_EM_MASK 0x300 /* sb error mode */
-+#define SBTMCH_EM_SHIFT 8
-+#define SBTMCH_IM_MASK 0xc00 /* int mode */
-+#define SBTMCH_IM_SHIFT 10
-+
-+/* sbbconfig */
-+#define SBBC_LAT_MASK 0x3 /* sb latency */
-+#define SBBC_MAX0_MASK 0xf0000 /* maxccntr0 */
-+#define SBBC_MAX0_SHIFT 16
-+#define SBBC_MAX1_MASK 0xf00000 /* maxccntr1 */
-+#define SBBC_MAX1_SHIFT 20
-+
-+/* sbbstate */
-+#define SBBS_SRD 0x1 /* st reg disable */
-+#define SBBS_HRD 0x2 /* hold reg disable */
-+
-+/* sbidlow */
-+#define SBIDL_CS_MASK 0x3 /* config space */
-+#define SBIDL_AR_MASK 0x38 /* # address ranges supported */
-+#define SBIDL_AR_SHIFT 3
-+#define SBIDL_SYNCH 0x40 /* sync */
-+#define SBIDL_INIT 0x80 /* initiator */
-+#define SBIDL_MINLAT_MASK 0xf00 /* minimum backplane latency */
-+#define SBIDL_MINLAT_SHIFT 8
-+#define SBIDL_MAXLAT 0xf000 /* maximum backplane latency */
-+#define SBIDL_MAXLAT_SHIFT 12
-+#define SBIDL_FIRST 0x10000 /* this initiator is first */
-+#define SBIDL_CW_MASK 0xc0000 /* cycle counter width */
-+#define SBIDL_CW_SHIFT 18
-+#define SBIDL_TP_MASK 0xf00000 /* target ports */
-+#define SBIDL_TP_SHIFT 20
-+#define SBIDL_IP_MASK 0xf000000 /* initiator ports */
-+#define SBIDL_IP_SHIFT 24
-+#define SBIDL_RV_MASK 0xf0000000 /* sonics backplane revision code */
-+#define SBIDL_RV_SHIFT 28
-+#define SBIDL_RV_2_2 0x00000000 /* version 2.2 or earlier */
-+#define SBIDL_RV_2_3 0x10000000 /* version 2.3 */
-+
-+/* sbidhigh */
-+#define SBIDH_RC_MASK 0x000f /* revision code */
-+#define SBIDH_RCE_MASK 0x7000 /* revision code extension field */
-+#define SBIDH_RCE_SHIFT 8
-+#define SBCOREREV(sbidh) \
-+ ((((sbidh) & SBIDH_RCE_MASK) >> SBIDH_RCE_SHIFT) | ((sbidh) & SBIDH_RC_MASK))
-+#define SBIDH_CC_MASK 0x8ff0 /* core code */
-+#define SBIDH_CC_SHIFT 4
-+#define SBIDH_VC_MASK 0xffff0000 /* vendor code */
-+#define SBIDH_VC_SHIFT 16
-+
-+#define SB_COMMIT 0xfd8 /* update buffered registers value */
-+
-+/* vendor codes */
-+#define SB_VEND_BCM 0x4243 /* Broadcom's SB vendor code */
-+
-+/* core codes */
-+#define SB_NODEV 0x700 /* Invalid coreid */
-+#define SB_CC 0x800 /* chipcommon core */
-+#define SB_ILINE20 0x801 /* iline20 core */
-+#define SB_SDRAM 0x803 /* sdram core */
-+#define SB_PCI 0x804 /* pci core */
-+#define SB_MIPS 0x805 /* mips core */
-+#define SB_ENET 0x806 /* enet mac core */
-+#define SB_CODEC 0x807 /* v90 codec core */
-+#define SB_USB 0x808 /* usb 1.1 host/device core */
-+#define SB_ADSL 0x809 /* ADSL core */
-+#define SB_ILINE100 0x80a /* iline100 core */
-+#define SB_IPSEC 0x80b /* ipsec core */
-+#define SB_PCMCIA 0x80d /* pcmcia core */
-+#define SB_SDIOD SB_PCMCIA /* pcmcia core has sdio device */
-+#define SB_SOCRAM 0x80e /* internal memory core */
-+#define SB_MEMC 0x80f /* memc sdram core */
-+#define SB_EXTIF 0x811 /* external interface core */
-+#define SB_D11 0x812 /* 802.11 MAC core */
-+#define SB_MIPS33 0x816 /* mips3302 core */
-+#define SB_USB11H 0x817 /* usb 1.1 host core */
-+#define SB_USB11D 0x818 /* usb 1.1 device core */
-+#define SB_USB20H 0x819 /* usb 2.0 host core */
-+#define SB_USB20D 0x81a /* usb 2.0 device core */
-+#define SB_SDIOH 0x81b /* sdio host core */
-+#define SB_ROBO 0x81c /* roboswitch core */
-+#define SB_ATA100 0x81d /* parallel ATA core */
-+#define SB_SATAXOR 0x81e /* serial ATA & XOR DMA core */
-+#define SB_GIGETH 0x81f /* gigabit ethernet core */
-+#define SB_PCIE 0x820 /* pci express core */
-+#define SB_MIMO 0x821 /* MIMO phy core */
-+#define SB_SRAMC 0x822 /* SRAM controller core */
-+#define SB_MINIMAC 0x823 /* MINI MAC/phy core */
-+#define SB_ARM11 0x824 /* ARM 1176 core */
-+#define SB_ARM7 0x825 /* ARM 7tdmi core */
-+
-+#define SB_CC_IDX 0 /* chipc, when present, is always core 0 */
-+
-+/* Not really related to Silicon Backplane, but a couple of software
-+ * conventions for the use the flash space:
-+ */
-+
-+/* Minumum amount of flash we support */
-+#define FLASH_MIN 0x00020000 /* Minimum flash size */
-+
-+/* A boot/binary may have an embedded block that describes its size */
-+#define BISZ_OFFSET 0x3e0 /* At this offset into the binary */
-+#define BISZ_MAGIC 0x4249535a /* Marked with this value: 'BISZ' */
-+#define BISZ_MAGIC_IDX 0 /* Word 0: magic */
-+#define BISZ_TXTST_IDX 1 /* 1: text start */
-+#define BISZ_TXTEND_IDX 2 /* 2: text start */
-+#define BISZ_DATAST_IDX 3 /* 3: text start */
-+#define BISZ_DATAEND_IDX 4 /* 4: text start */
-+#define BISZ_BSSST_IDX 5 /* 5: text start */
-+#define BISZ_BSSEND_IDX 6 /* 6: text start */
-+#define BISZ_SIZE 7 /* descriptor size in 32-bit intergers */
-+
-+#endif /* _SBCONFIG_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/sbextif.h linux.dev/arch/mips/bcm947xx/include/sbextif.h
---- linux.old/arch/mips/bcm947xx/include/sbextif.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbextif.h 2006-04-27 22:13:03.000000000 +0200
-@@ -0,0 +1,243 @@
-+/*
-+ * Hardware-specific External Interface I/O core definitions
-+ * for the BCM47xx family of SiliconBackplane-based chips.
-+ *
-+ * The External Interface core supports a total of three external chip selects
-+ * supporting external interfaces. One of the external chip selects is
-+ * used for Flash, one is used for PCMCIA, and the other may be
-+ * programmed to support either a synchronous interface or an
-+ * asynchronous interface. The asynchronous interface can be used to
-+ * support external devices such as UARTs and the BCM2019 Bluetooth
-+ * baseband processor.
-+ * The external interface core also contains 2 on-chip 16550 UARTs, clock
-+ * frequency control, a watchdog interrupt timer, and a GPIO interface.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sbextif.h,v 1.1.1.8 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _SBEXTIF_H
-+#define _SBEXTIF_H
-+
-+/* external interface address space */
-+#define EXTIF_PCMCIA_MEMBASE(x) (x)
-+#define EXTIF_PCMCIA_IOBASE(x) ((x) + 0x100000)
-+#define EXTIF_PCMCIA_CFGBASE(x) ((x) + 0x200000)
-+#define EXTIF_CFGIF_BASE(x) ((x) + 0x800000)
-+#define EXTIF_FLASH_BASE(x) ((x) + 0xc00000)
-+
-+/* cpp contortions to concatenate w/arg prescan */
-+#ifndef PAD
-+#define _PADLINE(line) pad ## line
-+#define _XSTR(line) _PADLINE(line)
-+#define PAD _XSTR(__LINE__)
-+#endif /* PAD */
-+
-+/*
-+ * The multiple instances of output and output enable registers
-+ * are present to allow driver software for multiple cores to control
-+ * gpio outputs without needing to share a single register pair.
-+ */
-+struct gpiouser {
-+ uint32 out;
-+ uint32 outen;
-+};
-+#define NGPIOUSER 5
-+
-+typedef volatile struct {
-+ uint32 corecontrol;
-+ uint32 extstatus;
-+ uint32 PAD[2];
-+
-+ /* pcmcia control registers */
-+ uint32 pcmcia_config;
-+ uint32 pcmcia_memwait;
-+ uint32 pcmcia_attrwait;
-+ uint32 pcmcia_iowait;
-+
-+ /* programmable interface control registers */
-+ uint32 prog_config;
-+ uint32 prog_waitcount;
-+
-+ /* flash control registers */
-+ uint32 flash_config;
-+ uint32 flash_waitcount;
-+ uint32 PAD[4];
-+
-+ uint32 watchdog;
-+
-+ /* clock control */
-+ uint32 clockcontrol_n;
-+ uint32 clockcontrol_sb;
-+ uint32 clockcontrol_pci;
-+ uint32 clockcontrol_mii;
-+ uint32 PAD[3];
-+
-+ /* gpio */
-+ uint32 gpioin;
-+ struct gpiouser gpio[NGPIOUSER];
-+ uint32 PAD;
-+ uint32 ejtagouten;
-+ uint32 gpiointpolarity;
-+ uint32 gpiointmask;
-+ uint32 PAD[153];
-+
-+ uint8 uartdata;
-+ uint8 PAD[3];
-+ uint8 uartimer;
-+ uint8 PAD[3];
-+ uint8 uartfcr;
-+ uint8 PAD[3];
-+ uint8 uartlcr;
-+ uint8 PAD[3];
-+ uint8 uartmcr;
-+ uint8 PAD[3];
-+ uint8 uartlsr;
-+ uint8 PAD[3];
-+ uint8 uartmsr;
-+ uint8 PAD[3];
-+ uint8 uartscratch;
-+ uint8 PAD[3];
-+} extifregs_t;
-+
-+/* corecontrol */
-+#define CC_UE (1 << 0) /* uart enable */
-+
-+/* extstatus */
-+#define ES_EM (1 << 0) /* endian mode (ro) */
-+#define ES_EI (1 << 1) /* external interrupt pin (ro) */
-+#define ES_GI (1 << 2) /* gpio interrupt pin (ro) */
-+
-+/* gpio bit mask */
-+#define GPIO_BIT0 (1 << 0)
-+#define GPIO_BIT1 (1 << 1)
-+#define GPIO_BIT2 (1 << 2)
-+#define GPIO_BIT3 (1 << 3)
-+#define GPIO_BIT4 (1 << 4)
-+#define GPIO_BIT5 (1 << 5)
-+#define GPIO_BIT6 (1 << 6)
-+#define GPIO_BIT7 (1 << 7)
-+
-+
-+/* pcmcia/prog/flash_config */
-+#define CF_EN (1 << 0) /* enable */
-+#define CF_EM_MASK 0xe /* mode */
-+#define CF_EM_SHIFT 1
-+#define CF_EM_FLASH 0x0 /* flash/asynchronous mode */
-+#define CF_EM_SYNC 0x2 /* synchronous mode */
-+#define CF_EM_PCMCIA 0x4 /* pcmcia mode */
-+#define CF_DS (1 << 4) /* destsize: 0=8bit, 1=16bit */
-+#define CF_BS (1 << 5) /* byteswap */
-+#define CF_CD_MASK 0xc0 /* clock divider */
-+#define CF_CD_SHIFT 6
-+#define CF_CD_DIV2 0x0 /* backplane/2 */
-+#define CF_CD_DIV3 0x40 /* backplane/3 */
-+#define CF_CD_DIV4 0x80 /* backplane/4 */
-+#define CF_CE (1 << 8) /* clock enable */
-+#define CF_SB (1 << 9) /* size/bytestrobe (synch only) */
-+
-+/* pcmcia_memwait */
-+#define PM_W0_MASK 0x3f /* waitcount0 */
-+#define PM_W1_MASK 0x1f00 /* waitcount1 */
-+#define PM_W1_SHIFT 8
-+#define PM_W2_MASK 0x1f0000 /* waitcount2 */
-+#define PM_W2_SHIFT 16
-+#define PM_W3_MASK 0x1f000000 /* waitcount3 */
-+#define PM_W3_SHIFT 24
-+
-+/* pcmcia_attrwait */
-+#define PA_W0_MASK 0x3f /* waitcount0 */
-+#define PA_W1_MASK 0x1f00 /* waitcount1 */
-+#define PA_W1_SHIFT 8
-+#define PA_W2_MASK 0x1f0000 /* waitcount2 */
-+#define PA_W2_SHIFT 16
-+#define PA_W3_MASK 0x1f000000 /* waitcount3 */
-+#define PA_W3_SHIFT 24
-+
-+/* pcmcia_iowait */
-+#define PI_W0_MASK 0x3f /* waitcount0 */
-+#define PI_W1_MASK 0x1f00 /* waitcount1 */
-+#define PI_W1_SHIFT 8
-+#define PI_W2_MASK 0x1f0000 /* waitcount2 */
-+#define PI_W2_SHIFT 16
-+#define PI_W3_MASK 0x1f000000 /* waitcount3 */
-+#define PI_W3_SHIFT 24
-+
-+/* prog_waitcount */
-+#define PW_W0_MASK 0x0000001f /* waitcount0 */
-+#define PW_W1_MASK 0x00001f00 /* waitcount1 */
-+#define PW_W1_SHIFT 8
-+#define PW_W2_MASK 0x001f0000 /* waitcount2 */
-+#define PW_W2_SHIFT 16
-+#define PW_W3_MASK 0x1f000000 /* waitcount3 */
-+#define PW_W3_SHIFT 24
-+
-+#define PW_W0 0x0000000c
-+#define PW_W1 0x00000a00
-+#define PW_W2 0x00020000
-+#define PW_W3 0x01000000
-+
-+/* flash_waitcount */
-+#define FW_W0_MASK 0x1f /* waitcount0 */
-+#define FW_W1_MASK 0x1f00 /* waitcount1 */
-+#define FW_W1_SHIFT 8
-+#define FW_W2_MASK 0x1f0000 /* waitcount2 */
-+#define FW_W2_SHIFT 16
-+#define FW_W3_MASK 0x1f000000 /* waitcount3 */
-+#define FW_W3_SHIFT 24
-+
-+/* watchdog */
-+#define WATCHDOG_CLOCK 48000000 /* Hz */
-+
-+/* clockcontrol_n */
-+#define CN_N1_MASK 0x3f /* n1 control */
-+#define CN_N2_MASK 0x3f00 /* n2 control */
-+#define CN_N2_SHIFT 8
-+
-+/* clockcontrol_sb/pci/mii */
-+#define CC_M1_MASK 0x3f /* m1 control */
-+#define CC_M2_MASK 0x3f00 /* m2 control */
-+#define CC_M2_SHIFT 8
-+#define CC_M3_MASK 0x3f0000 /* m3 control */
-+#define CC_M3_SHIFT 16
-+#define CC_MC_MASK 0x1f000000 /* mux control */
-+#define CC_MC_SHIFT 24
-+
-+/* Clock control default values */
-+#define CC_DEF_N 0x0009 /* Default values for bcm4710 */
-+#define CC_DEF_100 0x04020011
-+#define CC_DEF_33 0x11030011
-+#define CC_DEF_25 0x11050011
-+
-+/* Clock control values for 125Mhz */
-+#define CC_125_N 0x0802
-+#define CC_125_M 0x04020009
-+#define CC_125_M25 0x11090009
-+#define CC_125_M33 0x11090005
-+
-+/* Clock control magic field values */
-+#define CC_F6_2 0x02 /* A factor of 2 in */
-+#define CC_F6_3 0x03 /* 6-bit fields like */
-+#define CC_F6_4 0x05 /* N1, M1 or M3 */
-+#define CC_F6_5 0x09
-+#define CC_F6_6 0x11
-+#define CC_F6_7 0x21
-+
-+#define CC_F5_BIAS 5 /* 5-bit fields get this added */
-+
-+#define CC_MC_BYPASS 0x08
-+#define CC_MC_M1 0x04
-+#define CC_MC_M1M2 0x02
-+#define CC_MC_M1M2M3 0x01
-+#define CC_MC_M1M3 0x11
-+
-+#define CC_CLOCK_BASE 24000000 /* Half the clock freq. in the 4710 */
-+
-+#endif /* _SBEXTIF_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/sbhndmips.h linux.dev/arch/mips/bcm947xx/include/sbhndmips.h
---- linux.old/arch/mips/bcm947xx/include/sbhndmips.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbhndmips.h 2006-04-27 20:43:56.000000000 +0200
-@@ -0,0 +1,47 @@
-+/*
-+ * Broadcom SiliconBackplane MIPS definitions
-+ *
-+ * SB MIPS cores are custom MIPS32 processors with SiliconBackplane
-+ * OCP interfaces. The CP0 processor ID is 0x00024000, where bits
-+ * 23:16 mean Broadcom and bits 15:8 mean a MIPS core with an OCP
-+ * interface. The core revision is stored in the SB ID register in SB
-+ * configuration space.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sbhndmips.h,v 1.1.1.1 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _sbhndmips_h_
-+#define _sbhndmips_h_
-+
-+#include <mipsinc.h>
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+/* cpp contortions to concatenate w/arg prescan */
-+#ifndef PAD
-+#define _PADLINE(line) pad ## line
-+#define _XSTR(line) _PADLINE(line)
-+#define PAD _XSTR(__LINE__)
-+#endif /* PAD */
-+
-+typedef volatile struct {
-+ uint32 corecontrol;
-+ uint32 PAD[2];
-+ uint32 biststatus;
-+ uint32 PAD[4];
-+ uint32 intstatus;
-+ uint32 intmask;
-+ uint32 timer;
-+} mipsregs_t;
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+#endif /* _sbhndmips_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/sbmemc.h linux.dev/arch/mips/bcm947xx/include/sbmemc.h
---- linux.old/arch/mips/bcm947xx/include/sbmemc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbmemc.h 2006-04-27 22:12:41.000000000 +0200
-@@ -0,0 +1,147 @@
-+/*
-+ * BCM47XX Sonics SiliconBackplane DDR/SDRAM controller core hardware definitions.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sbmemc.h,v 1.6 2006/03/02 12:33:44 honor Exp $
-+ */
-+
-+#ifndef _SBMEMC_H
-+#define _SBMEMC_H
-+
-+#ifdef _LANGUAGE_ASSEMBLY
-+
-+#define MEMC_CONTROL 0x00
-+#define MEMC_CONFIG 0x04
-+#define MEMC_REFRESH 0x08
-+#define MEMC_BISTSTAT 0x0c
-+#define MEMC_MODEBUF 0x10
-+#define MEMC_BKCLS 0x14
-+#define MEMC_PRIORINV 0x18
-+#define MEMC_DRAMTIM 0x1c
-+#define MEMC_INTSTAT 0x20
-+#define MEMC_INTMASK 0x24
-+#define MEMC_INTINFO 0x28
-+#define MEMC_NCDLCTL 0x30
-+#define MEMC_RDNCDLCOR 0x34
-+#define MEMC_WRNCDLCOR 0x38
-+#define MEMC_MISCDLYCTL 0x3c
-+#define MEMC_DQSGATENCDL 0x40
-+#define MEMC_SPARE 0x44
-+#define MEMC_TPADDR 0x48
-+#define MEMC_TPDATA 0x4c
-+#define MEMC_BARRIER 0x50
-+#define MEMC_CORE 0x54
-+
-+#else /* !_LANGUAGE_ASSEMBLY */
-+
-+/* Sonics side: MEMC core registers */
-+typedef volatile struct sbmemcregs {
-+ uint32 control;
-+ uint32 config;
-+ uint32 refresh;
-+ uint32 biststat;
-+ uint32 modebuf;
-+ uint32 bkcls;
-+ uint32 priorinv;
-+ uint32 dramtim;
-+ uint32 intstat;
-+ uint32 intmask;
-+ uint32 intinfo;
-+ uint32 reserved1;
-+ uint32 ncdlctl;
-+ uint32 rdncdlcor;
-+ uint32 wrncdlcor;
-+ uint32 miscdlyctl;
-+ uint32 dqsgatencdl;
-+ uint32 spare;
-+ uint32 tpaddr;
-+ uint32 tpdata;
-+ uint32 barrier;
-+ uint32 core;
-+} sbmemcregs_t;
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+/* MEMC Core Init values (OCP ID 0x80f) */
-+
-+/* For sdr: */
-+#define MEMC_SD_CONFIG_INIT 0x00048000
-+#define MEMC_SD_DRAMTIM2_INIT 0x000754d8
-+#define MEMC_SD_DRAMTIM3_INIT 0x000754da
-+#define MEMC_SD_RDNCDLCOR_INIT 0x00000000
-+#define MEMC_SD_WRNCDLCOR_INIT 0x49351200
-+#define MEMC_SD1_WRNCDLCOR_INIT 0x14500200 /* For corerev 1 (4712) */
-+#define MEMC_SD_MISCDLYCTL_INIT 0x00061c1b
-+#define MEMC_SD1_MISCDLYCTL_INIT 0x00021416 /* For corerev 1 (4712) */
-+#define MEMC_SD_CONTROL_INIT0 0x00000002
-+#define MEMC_SD_CONTROL_INIT1 0x00000008
-+#define MEMC_SD_CONTROL_INIT2 0x00000004
-+#define MEMC_SD_CONTROL_INIT3 0x00000010
-+#define MEMC_SD_CONTROL_INIT4 0x00000001
-+#define MEMC_SD_MODEBUF_INIT 0x00000000
-+#define MEMC_SD_REFRESH_INIT 0x0000840f
-+
-+
-+/* This is for SDRM8X8X4 */
-+#define MEMC_SDR_INIT 0x0008
-+#define MEMC_SDR_MODE 0x32
-+#define MEMC_SDR_NCDL 0x00020032
-+#define MEMC_SDR1_NCDL 0x0002020f /* For corerev 1 (4712) */
-+
-+/* For ddr: */
-+#define MEMC_CONFIG_INIT 0x00048000
-+#define MEMC_DRAMTIM2_INIT 0x000754d8
-+#define MEMC_DRAMTIM25_INIT 0x000754d9
-+#define MEMC_RDNCDLCOR_INIT 0x00000000
-+#define MEMC_RDNCDLCOR_SIMINIT 0xf6f6f6f6 /* For hdl sim */
-+#define MEMC_WRNCDLCOR_INIT 0x49351200
-+#define MEMC_1_WRNCDLCOR_INIT 0x14500200
-+#define MEMC_DQSGATENCDL_INIT 0x00030000
-+#define MEMC_MISCDLYCTL_INIT 0x21061c1b
-+#define MEMC_1_MISCDLYCTL_INIT 0x21021400
-+#define MEMC_NCDLCTL_INIT 0x00002001
-+#define MEMC_CONTROL_INIT0 0x00000002
-+#define MEMC_CONTROL_INIT1 0x00000008
-+#define MEMC_MODEBUF_INIT0 0x00004000
-+#define MEMC_CONTROL_INIT2 0x00000010
-+#define MEMC_MODEBUF_INIT1 0x00000100
-+#define MEMC_CONTROL_INIT3 0x00000010
-+#define MEMC_CONTROL_INIT4 0x00000008
-+#define MEMC_REFRESH_INIT 0x0000840f
-+#define MEMC_CONTROL_INIT5 0x00000004
-+#define MEMC_MODEBUF_INIT2 0x00000000
-+#define MEMC_CONTROL_INIT6 0x00000010
-+#define MEMC_CONTROL_INIT7 0x00000001
-+
-+
-+/* This is for DDRM16X16X2 */
-+#define MEMC_DDR_INIT 0x0009
-+#define MEMC_DDR_MODE 0x62
-+#define MEMC_DDR_NCDL 0x0005050a
-+#define MEMC_DDR1_NCDL 0x00000a0a /* For corerev 1 (4712) */
-+
-+/* mask for sdr/ddr calibration registers */
-+#define MEMC_RDNCDLCOR_RD_MASK 0x000000ff
-+#define MEMC_WRNCDLCOR_WR_MASK 0x000000ff
-+#define MEMC_DQSGATENCDL_G_MASK 0x000000ff
-+
-+/* masks for miscdlyctl registers */
-+#define MEMC_MISC_SM_MASK 0x30000000
-+#define MEMC_MISC_SM_SHIFT 28
-+#define MEMC_MISC_SD_MASK 0x0f000000
-+#define MEMC_MISC_SD_SHIFT 24
-+
-+/* hw threshhold for calculating wr/rd for sdr memc */
-+#define MEMC_CD_THRESHOLD 128
-+
-+/* Low bit of init register says if memc is ddr or sdr */
-+#define MEMC_CONFIG_DDR 0x00000001
-+
-+#endif /* _SBMEMC_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/sbpci.h linux.dev/arch/mips/bcm947xx/include/sbpci.h
---- linux.old/arch/mips/bcm947xx/include/sbpci.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbpci.h 2006-05-02 17:20:14.000000000 +0200
-@@ -0,0 +1,114 @@
-+/*
-+ * HND SiliconBackplane PCI core hardware definitions.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sbpci.h,v 1.1.1.11 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _sbpci_h_
-+#define _sbpci_h_
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+/* cpp contortions to concatenate w/arg prescan */
-+#ifndef PAD
-+#define _PADLINE(line) pad ## line
-+#define _XSTR(line) _PADLINE(line)
-+#define PAD _XSTR(__LINE__)
-+#endif
-+
-+/* Sonics side: PCI core and host control registers */
-+typedef struct sbpciregs {
-+ uint32 control; /* PCI control */
-+ uint32 PAD[3];
-+ uint32 arbcontrol; /* PCI arbiter control */
-+ uint32 PAD[3];
-+ uint32 intstatus; /* Interrupt status */
-+ uint32 intmask; /* Interrupt mask */
-+ uint32 sbtopcimailbox; /* Sonics to PCI mailbox */
-+ uint32 PAD[9];
-+ uint32 bcastaddr; /* Sonics broadcast address */
-+ uint32 bcastdata; /* Sonics broadcast data */
-+ uint32 PAD[2];
-+ uint32 gpioin; /* ro: gpio input (>=rev2) */
-+ uint32 gpioout; /* rw: gpio output (>=rev2) */
-+ uint32 gpioouten; /* rw: gpio output enable (>= rev2) */
-+ uint32 gpiocontrol; /* rw: gpio control (>= rev2) */
-+ uint32 PAD[36];
-+ uint32 sbtopci0; /* Sonics to PCI translation 0 */
-+ uint32 sbtopci1; /* Sonics to PCI translation 1 */
-+ uint32 sbtopci2; /* Sonics to PCI translation 2 */
-+ uint32 PAD[189];
-+ uint32 pcicfg[4][64]; /* 0x400 - 0x7FF, PCI Cfg Space (>=rev8) */
-+ uint16 sprom[36]; /* SPROM shadow Area */
-+ uint32 PAD[46];
-+} sbpciregs_t;
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+/* PCI control */
-+#define PCI_RST_OE 0x01 /* When set, drives PCI_RESET out to pin */
-+#define PCI_RST 0x02 /* Value driven out to pin */
-+#define PCI_CLK_OE 0x04 /* When set, drives clock as gated by PCI_CLK out to pin */
-+#define PCI_CLK 0x08 /* Gate for clock driven out to pin */
-+
-+/* PCI arbiter control */
-+#define PCI_INT_ARB 0x01 /* When set, use an internal arbiter */
-+#define PCI_EXT_ARB 0x02 /* When set, use an external arbiter */
-+/* ParkID - for PCI corerev >= 8 */
-+#define PCI_PARKID_MASK 0x1c /* Selects which agent is parked on an idle bus */
-+#define PCI_PARKID_SHIFT 2
-+#define PCI_PARKID_EXT0 0 /* External master 0 */
-+#define PCI_PARKID_EXT1 1 /* External master 1 */
-+#define PCI_PARKID_EXT2 2 /* External master 2 */
-+#define PCI_PARKID_INT 3 /* Internal master */
-+#define PCI_PARKID_LAST 4 /* Last active master */
-+
-+/* Interrupt status/mask */
-+#define PCI_INTA 0x01 /* PCI INTA# is asserted */
-+#define PCI_INTB 0x02 /* PCI INTB# is asserted */
-+#define PCI_SERR 0x04 /* PCI SERR# has been asserted (write one to clear) */
-+#define PCI_PERR 0x08 /* PCI PERR# has been asserted (write one to clear) */
-+#define PCI_PME 0x10 /* PCI PME# is asserted */
-+
-+/* (General) PCI/SB mailbox interrupts, two bits per pci function */
-+#define MAILBOX_F0_0 0x100 /* function 0, int 0 */
-+#define MAILBOX_F0_1 0x200 /* function 0, int 1 */
-+#define MAILBOX_F1_0 0x400 /* function 1, int 0 */
-+#define MAILBOX_F1_1 0x800 /* function 1, int 1 */
-+#define MAILBOX_F2_0 0x1000 /* function 2, int 0 */
-+#define MAILBOX_F2_1 0x2000 /* function 2, int 1 */
-+#define MAILBOX_F3_0 0x4000 /* function 3, int 0 */
-+#define MAILBOX_F3_1 0x8000 /* function 3, int 1 */
-+
-+/* Sonics broadcast address */
-+#define BCAST_ADDR_MASK 0xff /* Broadcast register address */
-+
-+/* Sonics to PCI translation types */
-+#define SBTOPCI0_MASK 0xfc000000
-+#define SBTOPCI1_MASK 0xfc000000
-+#define SBTOPCI2_MASK 0xc0000000
-+#define SBTOPCI_MEM 0
-+#define SBTOPCI_IO 1
-+#define SBTOPCI_CFG0 2
-+#define SBTOPCI_CFG1 3
-+#define SBTOPCI_PREF 0x4 /* prefetch enable */
-+#define SBTOPCI_BURST 0x8 /* burst enable */
-+#define SBTOPCI_RC_MASK 0x30 /* read command (>= rev11) */
-+#define SBTOPCI_RC_READ 0x00 /* memory read */
-+#define SBTOPCI_RC_READLINE 0x10 /* memory read line */
-+#define SBTOPCI_RC_READMULTI 0x20 /* memory read multiple */
-+
-+/* PCI core index in SROM shadow area */
-+#define SRSH_PI_OFFSET 0 /* first word */
-+#define SRSH_PI_MASK 0xf000 /* bit 15:12 */
-+#define SRSH_PI_SHIFT 12 /* bit 15:12 */
-+
-+#endif /* _sbpci_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/sbpcie.h linux.dev/arch/mips/bcm947xx/include/sbpcie.h
---- linux.old/arch/mips/bcm947xx/include/sbpcie.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbpcie.h 2006-04-27 20:42:22.000000000 +0200
-@@ -0,0 +1,200 @@
-+/*
-+ * BCM43XX SiliconBackplane PCIE core hardware definitions.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sbpcie.h,v 1.1.1.2 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _SBPCIE_H
-+#define _SBPCIE_H
-+
-+/* cpp contortions to concatenate w/arg prescan */
-+#ifndef PAD
-+#define _PADLINE(line) pad ## line
-+#define _XSTR(line) _PADLINE(line)
-+#define PAD _XSTR(__LINE__)
-+#endif
-+
-+/* PCIE Enumeration space offsets */
-+#define PCIE_CORE_CONFIG_OFFSET 0x0
-+#define PCIE_FUNC0_CONFIG_OFFSET 0x400
-+#define PCIE_FUNC1_CONFIG_OFFSET 0x500
-+#define PCIE_FUNC2_CONFIG_OFFSET 0x600
-+#define PCIE_FUNC3_CONFIG_OFFSET 0x700
-+#define PCIE_SPROM_SHADOW_OFFSET 0x800
-+#define PCIE_SBCONFIG_OFFSET 0xE00
-+
-+/* PCIE Bar0 Address Mapping. Each function maps 16KB config space */
-+#define PCIE_DEV_BAR0_SIZE 0x4000
-+#define PCIE_BAR0_WINMAPCORE_OFFSET 0x0
-+#define PCIE_BAR0_EXTSPROM_OFFSET 0x1000
-+#define PCIE_BAR0_PCIECORE_OFFSET 0x2000
-+#define PCIE_BAR0_CCCOREREG_OFFSET 0x3000
-+
-+/* SB side: PCIE core and host control registers */
-+typedef struct sbpcieregs {
-+ uint32 PAD[3];
-+ uint32 biststatus; /* bist Status: 0x00C */
-+ uint32 PAD[6];
-+ uint32 sbtopcimailbox; /* sb to pcie mailbox: 0x028 */
-+ uint32 PAD[54];
-+ uint32 sbtopcie0; /* sb to pcie translation 0: 0x100 */
-+ uint32 sbtopcie1; /* sb to pcie translation 1: 0x104 */
-+ uint32 sbtopcie2; /* sb to pcie translation 2: 0x108 */
-+ uint32 PAD[4];
-+
-+ /* pcie core supports in direct access to config space */
-+ uint32 configaddr; /* pcie config space access: Address field: 0x120 */
-+ uint32 configdata; /* pcie config space access: Data field: 0x124 */
-+
-+ /* mdio access to serdes */
-+ uint32 mdiocontrol; /* controls the mdio access: 0x128 */
-+ uint32 mdiodata; /* Data to the mdio access: 0x12c */
-+
-+ /* pcie protocol phy/dllp/tlp register access mechanism */
-+ uint32 pcieaddr; /* address of the internal registeru: 0x130 */
-+ uint32 pciedata; /* Data to/from the internal regsiter: 0x134 */
-+
-+ uint32 PAD[434];
-+ uint16 sprom[36]; /* SPROM shadow Area */
-+} sbpcieregs_t;
-+
-+/* SB to PCIE translation masks */
-+#define SBTOPCIE0_MASK 0xfc000000
-+#define SBTOPCIE1_MASK 0xfc000000
-+#define SBTOPCIE2_MASK 0xc0000000
-+
-+/* Access type bits (0:1) */
-+#define SBTOPCIE_MEM 0
-+#define SBTOPCIE_IO 1
-+#define SBTOPCIE_CFG0 2
-+#define SBTOPCIE_CFG1 3
-+
-+/* Prefetch enable bit 2 */
-+#define SBTOPCIE_PF 4
-+
-+/* Write Burst enable for memory write bit 3 */
-+#define SBTOPCIE_WR_BURST 8
-+
-+/* config access */
-+#define CONFIGADDR_FUNC_MASK 0x7000
-+#define CONFIGADDR_FUNC_SHF 12
-+#define CONFIGADDR_REG_MASK 0x0FFF
-+#define CONFIGADDR_REG_SHF 0
-+
-+/* PCIE protocol regs Indirect Address */
-+#define PCIEADDR_PROT_MASK 0x300
-+#define PCIEADDR_PROT_SHF 8
-+#define PCIEADDR_PL_TLP 0
-+#define PCIEADDR_PL_DLLP 1
-+#define PCIEADDR_PL_PLP 2
-+
-+/* PCIE protocol PHY diagnostic registers */
-+#define PCIE_PLP_MODEREG 0x200 /* Mode */
-+#define PCIE_PLP_STATUSREG 0x204 /* Status */
-+#define PCIE_PLP_LTSSMCTRLREG 0x208 /* LTSSM control */
-+#define PCIE_PLP_LTLINKNUMREG 0x20c /* Link Training Link number */
-+#define PCIE_PLP_LTLANENUMREG 0x210 /* Link Training Lane number */
-+#define PCIE_PLP_LTNFTSREG 0x214 /* Link Training N_FTS */
-+#define PCIE_PLP_ATTNREG 0x218 /* Attention */
-+#define PCIE_PLP_ATTNMASKREG 0x21C /* Attention Mask */
-+#define PCIE_PLP_RXERRCTR 0x220 /* Rx Error */
-+#define PCIE_PLP_RXFRMERRCTR 0x224 /* Rx Framing Error */
-+#define PCIE_PLP_RXERRTHRESHREG 0x228 /* Rx Error threshold */
-+#define PCIE_PLP_TESTCTRLREG 0x22C /* Test Control reg */
-+#define PCIE_PLP_SERDESCTRLOVRDREG 0x230 /* SERDES Control Override */
-+#define PCIE_PLP_TIMINGOVRDREG 0x234 /* Timing param override */
-+#define PCIE_PLP_RXTXSMDIAGREG 0x238 /* RXTX State Machine Diag */
-+#define PCIE_PLP_LTSSMDIAGREG 0x23C /* LTSSM State Machine Diag */
-+
-+/* PCIE protocol DLLP diagnostic registers */
-+#define PCIE_DLLP_LCREG 0x100 /* Link Control */
-+#define PCIE_DLLP_LSREG 0x104 /* Link Status */
-+#define PCIE_DLLP_LAREG 0x108 /* Link Attention */
-+#define PCIE_DLLP_LAMASKREG 0x10C /* Link Attention Mask */
-+#define PCIE_DLLP_NEXTTXSEQNUMREG 0x110 /* Next Tx Seq Num */
-+#define PCIE_DLLP_ACKEDTXSEQNUMREG 0x114 /* Acked Tx Seq Num */
-+#define PCIE_DLLP_PURGEDTXSEQNUMREG 0x118 /* Purged Tx Seq Num */
-+#define PCIE_DLLP_RXSEQNUMREG 0x11C /* Rx Sequence Number */
-+#define PCIE_DLLP_LRREG 0x120 /* Link Replay */
-+#define PCIE_DLLP_LACKTOREG 0x124 /* Link Ack Timeout */
-+#define PCIE_DLLP_PMTHRESHREG 0x128 /* Power Management Threshold */
-+#define PCIE_DLLP_RTRYWPREG 0x12C /* Retry buffer write ptr */
-+#define PCIE_DLLP_RTRYRPREG 0x130 /* Retry buffer Read ptr */
-+#define PCIE_DLLP_RTRYPPREG 0x134 /* Retry buffer Purged ptr */
-+#define PCIE_DLLP_RTRRWREG 0x138 /* Retry buffer Read/Write */
-+#define PCIE_DLLP_ECTHRESHREG 0x13C /* Error Count Threshold */
-+#define PCIE_DLLP_TLPERRCTRREG 0x140 /* TLP Error Counter */
-+#define PCIE_DLLP_ERRCTRREG 0x144 /* Error Counter */
-+#define PCIE_DLLP_NAKRXCTRREG 0x148 /* NAK Received Counter */
-+#define PCIE_DLLP_TESTREG 0x14C /* Test */
-+#define PCIE_DLLP_PKTBIST 0x150 /* Packet BIST */
-+
-+/* PCIE protocol TLP diagnostic registers */
-+#define PCIE_TLP_CONFIGREG 0x000 /* Configuration */
-+#define PCIE_TLP_WORKAROUNDSREG 0x004 /* TLP Workarounds */
-+#define PCIE_TLP_WRDMAUPPER 0x010 /* Write DMA Upper Address */
-+#define PCIE_TLP_WRDMALOWER 0x014 /* Write DMA Lower Address */
-+#define PCIE_TLP_WRDMAREQ_LBEREG 0x018 /* Write DMA Len/ByteEn Req */
-+#define PCIE_TLP_RDDMAUPPER 0x01C /* Read DMA Upper Address */
-+#define PCIE_TLP_RDDMALOWER 0x020 /* Read DMA Lower Address */
-+#define PCIE_TLP_RDDMALENREG 0x024 /* Read DMA Len Req */
-+#define PCIE_TLP_MSIDMAUPPER 0x028 /* MSI DMA Upper Address */
-+#define PCIE_TLP_MSIDMALOWER 0x02C /* MSI DMA Lower Address */
-+#define PCIE_TLP_MSIDMALENREG 0x030 /* MSI DMA Len Req */
-+#define PCIE_TLP_SLVREQLENREG 0x034 /* Slave Request Len */
-+#define PCIE_TLP_FCINPUTSREQ 0x038 /* Flow Control Inputs */
-+#define PCIE_TLP_TXSMGRSREQ 0x03C /* Tx StateMachine and Gated Req */
-+#define PCIE_TLP_ADRACKCNTARBLEN 0x040 /* Address Ack XferCnt and ARB Len */
-+#define PCIE_TLP_DMACPLHDR0 0x044 /* DMA Completion Hdr 0 */
-+#define PCIE_TLP_DMACPLHDR1 0x048 /* DMA Completion Hdr 1 */
-+#define PCIE_TLP_DMACPLHDR2 0x04C /* DMA Completion Hdr 2 */
-+#define PCIE_TLP_DMACPLMISC0 0x050 /* DMA Completion Misc0 */
-+#define PCIE_TLP_DMACPLMISC1 0x054 /* DMA Completion Misc1 */
-+#define PCIE_TLP_DMACPLMISC2 0x058 /* DMA Completion Misc2 */
-+#define PCIE_TLP_SPTCTRLLEN 0x05C /* Split Controller Req len */
-+#define PCIE_TLP_SPTCTRLMSIC0 0x060 /* Split Controller Misc 0 */
-+#define PCIE_TLP_SPTCTRLMSIC1 0x064 /* Split Controller Misc 1 */
-+#define PCIE_TLP_BUSDEVFUNC 0x068 /* Bus/Device/Func */
-+#define PCIE_TLP_RESETCTR 0x06C /* Reset Counter */
-+#define PCIE_TLP_RTRYBUF 0x070 /* Retry Buffer value */
-+#define PCIE_TLP_TGTDEBUG1 0x074 /* Target Debug Reg1 */
-+#define PCIE_TLP_TGTDEBUG2 0x078 /* Target Debug Reg2 */
-+#define PCIE_TLP_TGTDEBUG3 0x07C /* Target Debug Reg3 */
-+#define PCIE_TLP_TGTDEBUG4 0x080 /* Target Debug Reg4 */
-+
-+/* MDIO control */
-+#define MDIOCTL_DIVISOR_MASK 0x7f /* clock to be used on MDIO */
-+#define MDIOCTL_DIVISOR_VAL 0x2
-+#define MDIOCTL_PREAM_EN 0x80 /* Enable preamble sequnce */
-+#define MDIOCTL_ACCESS_DONE 0x100 /* Tranaction complete */
-+
-+/* MDIO Data */
-+#define MDIODATA_MASK 0x0000ffff /* data 2 bytes */
-+#define MDIODATA_TA 0x00020000 /* Turnaround */
-+#define MDIODATA_REGADDR_SHF 18 /* Regaddr shift */
-+#define MDIODATA_REGADDR_MASK 0x003c0000 /* Regaddr Mask */
-+#define MDIODATA_DEVADDR_SHF 22 /* Physmedia devaddr shift */
-+#define MDIODATA_DEVADDR_MASK 0x0fc00000 /* Physmedia devaddr Mask */
-+#define MDIODATA_WRITE 0x10000000 /* write Transaction */
-+#define MDIODATA_READ 0x20000000 /* Read Transaction */
-+#define MDIODATA_START 0x40000000 /* start of Transaction */
-+
-+/* MDIO devices (SERDES modules) */
-+#define MDIODATA_DEV_PLL 0x1d /* SERDES PLL Dev */
-+#define MDIODATA_DEV_TX 0x1e /* SERDES TX Dev */
-+#define MDIODATA_DEV_RX 0x1f /* SERDES RX Dev */
-+
-+/* SERDES registers */
-+#define SERDES_RX_TIMER1 2 /* Rx Timer1 */
-+#define SERDES_RX_CDR 6 /* CDR */
-+#define SERDES_RX_CDRBW 7 /* CDR BW */
-+
-+#endif /* _SBPCIE_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/sbpcmcia.h linux.dev/arch/mips/bcm947xx/include/sbpcmcia.h
---- linux.old/arch/mips/bcm947xx/include/sbpcmcia.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbpcmcia.h 2006-04-27 20:29:47.000000000 +0200
-@@ -0,0 +1,147 @@
-+/*
-+ * BCM43XX Sonics SiliconBackplane PCMCIA core hardware definitions.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sbpcmcia.h,v 1.1.1.9 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _SBPCMCIA_H
-+#define _SBPCMCIA_H
-+
-+
-+/* All the addresses that are offsets in attribute space are divided
-+ * by two to account for the fact that odd bytes are invalid in
-+ * attribute space and our read/write routines make the space appear
-+ * as if they didn't exist. Still we want to show the original numbers
-+ * as documented in the hnd_pcmcia core manual.
-+ */
-+
-+/* PCMCIA Function Configuration Registers */
-+#define PCMCIA_FCR (0x700 / 2)
-+
-+#define FCR0_OFF 0
-+#define FCR1_OFF (0x40 / 2)
-+#define FCR2_OFF (0x80 / 2)
-+#define FCR3_OFF (0xc0 / 2)
-+
-+#define PCMCIA_FCR0 (0x700 / 2)
-+#define PCMCIA_FCR1 (0x740 / 2)
-+#define PCMCIA_FCR2 (0x780 / 2)
-+#define PCMCIA_FCR3 (0x7c0 / 2)
-+
-+/* Standard PCMCIA FCR registers */
-+
-+#define PCMCIA_COR 0
-+
-+#define COR_RST 0x80
-+#define COR_LEV 0x40
-+#define COR_IRQEN 0x04
-+#define COR_BLREN 0x01
-+#define COR_FUNEN 0x01
-+
-+
-+#define PCICIA_FCSR (2 / 2)
-+#define PCICIA_PRR (4 / 2)
-+#define PCICIA_SCR (6 / 2)
-+#define PCICIA_ESR (8 / 2)
-+
-+
-+#define PCM_MEMOFF 0x0000
-+#define F0_MEMOFF 0x1000
-+#define F1_MEMOFF 0x2000
-+#define F2_MEMOFF 0x3000
-+#define F3_MEMOFF 0x4000
-+
-+/* Memory base in the function fcr's */
-+#define MEM_ADDR0 (0x728 / 2)
-+#define MEM_ADDR1 (0x72a / 2)
-+#define MEM_ADDR2 (0x72c / 2)
-+
-+/* PCMCIA base plus Srom access in fcr0: */
-+#define PCMCIA_ADDR0 (0x072e / 2)
-+#define PCMCIA_ADDR1 (0x0730 / 2)
-+#define PCMCIA_ADDR2 (0x0732 / 2)
-+
-+#define MEM_SEG (0x0734 / 2)
-+#define SROM_CS (0x0736 / 2)
-+#define SROM_DATAL (0x0738 / 2)
-+#define SROM_DATAH (0x073a / 2)
-+#define SROM_ADDRL (0x073c / 2)
-+#define SROM_ADDRH (0x073e / 2)
-+
-+/* Values for srom_cs: */
-+#define SROM_IDLE 0
-+#define SROM_WRITE 1
-+#define SROM_READ 2
-+#define SROM_WEN 4
-+#define SROM_WDS 7
-+#define SROM_DONE 8
-+
-+/* CIS stuff */
-+
-+/* The CIS stops where the FCRs start */
-+#define CIS_SIZE PCMCIA_FCR
-+
-+/* Standard tuples we know about */
-+
-+#define CISTPL_MANFID 0x20 /* Manufacturer and device id */
-+#define CISTPL_FUNCE 0x22 /* Function extensions */
-+#define CISTPL_CFTABLE 0x1b /* Config table entry */
-+
-+/* Function extensions for LANs */
-+
-+#define LAN_TECH 1 /* Technology type */
-+#define LAN_SPEED 2 /* Raw bit rate */
-+#define LAN_MEDIA 3 /* Transmission media */
-+#define LAN_NID 4 /* Node identification (aka MAC addr) */
-+#define LAN_CONN 5 /* Connector standard */
-+
-+
-+/* CFTable */
-+#define CFTABLE_REGWIN_2K 0x08 /* 2k reg windows size */
-+#define CFTABLE_REGWIN_4K 0x10 /* 4k reg windows size */
-+#define CFTABLE_REGWIN_8K 0x20 /* 8k reg windows size */
-+
-+/* Vendor unique tuples are 0x80-0x8f. Within Broadcom we'll
-+ * take one for HNBU, and use "extensions" (a la FUNCE) within it.
-+ */
-+
-+#define CISTPL_BRCM_HNBU 0x80
-+
-+/* Subtypes of BRCM_HNBU: */
-+
-+#define HNBU_SROMREV 0x00 /* A byte with sromrev, 1 if not present */
-+#define HNBU_CHIPID 0x01 /* Two 16bit values: PCI vendor & device id */
-+#define HNBU_BOARDREV 0x02 /* One byte board revision */
-+#define HNBU_PAPARMS 0x03 /* PA parameters: 8 (sromrev == 1)
-+ * or 9 (sromrev > 1) bytes
-+ */
-+#define HNBU_OEM 0x04 /* Eight bytes OEM data (sromrev == 1) */
-+#define HNBU_CC 0x05 /* Default country code (sromrev == 1) */
-+#define HNBU_AA 0x06 /* Antennas available */
-+#define HNBU_AG 0x07 /* Antenna gain */
-+#define HNBU_BOARDFLAGS 0x08 /* board flags (2 or 4 bytes) */
-+#define HNBU_LEDS 0x09 /* LED set */
-+#define HNBU_CCODE 0x0a /* Country code (2 bytes ascii + 1 byte cctl)
-+ * in rev 2
-+ */
-+#define HNBU_CCKPO 0x0b /* 2 byte cck power offsets in rev 3 */
-+#define HNBU_OFDMPO 0x0c /* 4 byte 11g ofdm power offsets in rev 3 */
-+#define HNBU_GPIOTIMER 0x0d /* 2 bytes with on/off values in rev 3 */
-+
-+
-+/* sbtmstatelow */
-+#define SBTML_INT_ACK 0x40000 /* ack the sb interrupt */
-+#define SBTML_INT_EN 0x20000 /* enable sb interrupt */
-+
-+/* sbtmstatehigh */
-+#define SBTMH_INT_STATUS 0x40000 /* sb interrupt status */
-+
-+#endif /* _SBPCMCIA_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/sbsdram.h linux.dev/arch/mips/bcm947xx/include/sbsdram.h
---- linux.old/arch/mips/bcm947xx/include/sbsdram.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbsdram.h 2006-04-27 20:36:08.000000000 +0200
-@@ -0,0 +1,85 @@
-+/*
-+ * BCM47XX Sonics SiliconBackplane SDRAM controller core hardware definitions.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sbsdram.h,v 1.1.1.9 2006/03/02 13:03:52 honor Exp $
-+ */
-+
-+#ifndef _SBSDRAM_H
-+#define _SBSDRAM_H
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+/* Sonics side: SDRAM core registers */
-+typedef volatile struct sbsdramregs {
-+ uint32 initcontrol; /* Generates external SDRAM initialization sequence */
-+ uint32 config; /* Initializes external SDRAM mode register */
-+ uint32 refresh; /* Controls external SDRAM refresh rate */
-+ uint32 pad1;
-+ uint32 pad2;
-+} sbsdramregs_t;
-+
-+/* SDRAM simulation */
-+#ifdef RAMSZ
-+#define SDRAMSZ RAMSZ
-+#else
-+#define SDRAMSZ (4 * 1024 * 1024)
-+#endif
-+
-+extern uchar sdrambuf[SDRAMSZ];
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+/* SDRAM initialization control (initcontrol) register bits */
-+#define SDRAM_CBR 0x0001 /* Writing 1 generates refresh cycle and toggles bit */
-+#define SDRAM_PRE 0x0002 /* Writing 1 generates precharge cycle and toggles bit */
-+#define SDRAM_MRS 0x0004 /* Writing 1 generates mode register select cycle and toggles bit */
-+#define SDRAM_EN 0x0008 /* When set, enables access to SDRAM */
-+#define SDRAM_16Mb 0x0000 /* Use 16 Megabit SDRAM */
-+#define SDRAM_64Mb 0x0010 /* Use 64 Megabit SDRAM */
-+#define SDRAM_128Mb 0x0020 /* Use 128 Megabit SDRAM */
-+#define SDRAM_RSVMb 0x0030 /* Use special SDRAM */
-+#define SDRAM_RST 0x0080 /* Writing 1 causes soft reset of controller */
-+#define SDRAM_SELFREF 0x0100 /* Writing 1 enables self refresh mode */
-+#define SDRAM_PWRDOWN 0x0200 /* Writing 1 causes controller to power down */
-+#define SDRAM_32BIT 0x0400 /* When set, indicates 32 bit SDRAM interface */
-+#define SDRAM_9BITCOL 0x0800 /* When set, indicates 9 bit column */
-+
-+/* SDRAM configuration (config) register bits */
-+#define SDRAM_BURSTFULL 0x0000 /* Use full page bursts */
-+#define SDRAM_BURST8 0x0001 /* Use burst of 8 */
-+#define SDRAM_BURST4 0x0002 /* Use burst of 4 */
-+#define SDRAM_BURST2 0x0003 /* Use burst of 2 */
-+#define SDRAM_CAS3 0x0000 /* Use CAS latency of 3 */
-+#define SDRAM_CAS2 0x0004 /* Use CAS latency of 2 */
-+
-+/* SDRAM refresh control (refresh) register bits */
-+#define SDRAM_REF(p) (((p)&0xff) | SDRAM_REF_EN) /* Refresh period */
-+#define SDRAM_REF_EN 0x8000 /* Writing 1 enables periodic refresh */
-+
-+/* SDRAM Core default Init values (OCP ID 0x803) */
-+#define SDRAM_INIT MEM4MX16X2
-+#define SDRAM_CONFIG SDRAM_BURSTFULL
-+#define SDRAM_REFRESH SDRAM_REF(0x40)
-+
-+#define MEM1MX16 0x009 /* 2 MB */
-+#define MEM1MX16X2 0x409 /* 4 MB */
-+#define MEM2MX8X2 0x809 /* 4 MB */
-+#define MEM2MX8X4 0xc09 /* 8 MB */
-+#define MEM2MX32 0x439 /* 8 MB */
-+#define MEM4MX16 0x019 /* 8 MB */
-+#define MEM4MX16X2 0x419 /* 16 MB */
-+#define MEM8MX8X2 0x819 /* 16 MB */
-+#define MEM8MX16 0x829 /* 16 MB */
-+#define MEM4MX32 0x429 /* 16 MB */
-+#define MEM8MX8X4 0xc19 /* 32 MB */
-+#define MEM8MX16X2 0xc29 /* 32 MB */
-+
-+#endif /* _SBSDRAM_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/sbsocram.h linux.dev/arch/mips/bcm947xx/include/sbsocram.h
---- linux.old/arch/mips/bcm947xx/include/sbsocram.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbsocram.h 2006-04-27 22:13:19.000000000 +0200
-@@ -0,0 +1,64 @@
-+/*
-+ * BCM47XX Sonics SiliconBackplane embedded ram core
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sbsocram.h,v 1.1.1.3 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _SBSOCRAM_H
-+#define _SBSOCRAM_H
-+
-+#define SR_COREINFO 0x00
-+#define SR_BWALLOC 0x04
-+#define SR_BISTSTAT 0x0c
-+#define SR_BANKINDEX 0x10
-+#define SR_BANKSTBYCTL 0x14
-+
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+/* Memcsocram core registers */
-+typedef volatile struct sbsocramregs {
-+ uint32 coreinfo;
-+ uint32 bwalloc;
-+ uint32 PAD;
-+ uint32 biststat;
-+ uint32 bankidx;
-+ uint32 standbyctrl;
-+} sbsocramregs_t;
-+
-+#endif
-+
-+/* Coreinfo register */
-+#define SRCI_PT_MASK 0x30000
-+#define SRCI_PT_SHIFT 16
-+
-+/* In corerev 0, the memory size is 2 to the power of the
-+ * base plus 16 plus to the contents of the memsize field plus 1.
-+ */
-+#define SRCI_MS0_MASK 0xf
-+#define SR_MS0_BASE 16
-+
-+/*
-+ * In corerev 1 the bank size is 2 ^ the bank size field plus 14,
-+ * the memory size is number of banks times bank size.
-+ * The same applies to rom size.
-+ */
-+#define SRCI_ROMNB_MASK 0xf000
-+#define SRCI_ROMNB_SHIFT 12
-+#define SRCI_ROMBSZ_MASK 0xf00
-+#define SRCI_ROMBSZ_SHIFT 8
-+#define SRCI_SRNB_MASK 0xf0
-+#define SRCI_SRNB_SHIFT 4
-+#define SRCI_SRBSZ_MASK 0xf
-+#define SRCI_SRBSZ_SHIFT 0
-+
-+#define SR_BSZ_BASE 14
-+#endif /* _SBSOCRAM_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/sbutils.h linux.dev/arch/mips/bcm947xx/include/sbutils.h
---- linux.old/arch/mips/bcm947xx/include/sbutils.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbutils.h 2006-04-27 23:09:25.000000000 +0200
-@@ -0,0 +1,150 @@
-+/*
-+ * Misc utility routines for accessing chip-specific features
-+ * of Broadcom HNBU SiliconBackplane-based chips.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sbutils.h,v 1.4 2006/04/08 07:12:42 honor Exp $
-+ */
-+
-+#ifndef _sbutils_h_
-+#define _sbutils_h_
-+
-+/*
-+ * Datastructure to export all chip specific common variables
-+ * public (read-only) portion of sbutils handle returned by
-+ * sb_attach()/sb_kattach()
-+*/
-+
-+struct sb_pub {
-+
-+ uint bustype; /* SB_BUS, PCI_BUS */
-+ uint buscoretype; /* SB_PCI, SB_PCMCIA, SB_PCIE */
-+ uint buscorerev; /* buscore rev */
-+ uint buscoreidx; /* buscore index */
-+ int ccrev; /* chip common core rev */
-+ uint boardtype; /* board type */
-+ uint boardvendor; /* board vendor */
-+ uint chip; /* chip number */
-+ uint chiprev; /* chip revision */
-+ uint chippkg; /* chip package option */
-+ uint sonicsrev; /* sonics backplane rev */
-+};
-+
-+typedef const struct sb_pub sb_t;
-+
-+/*
-+ * Many of the routines below take an 'sbh' handle as their first arg.
-+ * Allocate this by calling sb_attach(). Free it by calling sb_detach().
-+ * At any one time, the sbh is logically focused on one particular sb core
-+ * (the "current core").
-+ * Use sb_setcore() or sb_setcoreidx() to change the association to another core.
-+ */
-+
-+#define SB_OSH NULL /* Use for sb_kattach when no osh is available */
-+/* exported externs */
-+extern sb_t *sb_attach(uint pcidev, osl_t *osh, void *regs, uint bustype,
-+ void *sdh, char **vars, uint *varsz);
-+extern sb_t *sb_kattach(void);
-+extern void sb_detach(sb_t *sbh);
-+extern uint sb_chip(sb_t *sbh);
-+extern uint sb_chiprev(sb_t *sbh);
-+extern uint sb_chipcrev(sb_t *sbh);
-+extern uint sb_chippkg(sb_t *sbh);
-+extern uint sb_pcirev(sb_t *sbh);
-+extern bool sb_war16165(sb_t *sbh);
-+extern uint sb_pcmciarev(sb_t *sbh);
-+extern uint sb_boardvendor(sb_t *sbh);
-+extern uint sb_boardtype(sb_t *sbh);
-+extern uint sb_bus(sb_t *sbh);
-+extern uint sb_buscoretype(sb_t *sbh);
-+extern uint sb_buscorerev(sb_t *sbh);
-+extern uint sb_corelist(sb_t *sbh, uint coreid[]);
-+extern uint sb_coreid(sb_t *sbh);
-+extern uint sb_coreidx(sb_t *sbh);
-+extern uint sb_coreunit(sb_t *sbh);
-+extern uint sb_corevendor(sb_t *sbh);
-+extern uint sb_corerev(sb_t *sbh);
-+extern void *sb_osh(sb_t *sbh);
-+extern void sb_setosh(sb_t *sbh, osl_t *osh);
-+extern void *sb_coreregs(sb_t *sbh);
-+extern uint32 sb_coreflags(sb_t *sbh, uint32 mask, uint32 val);
-+extern uint32 sb_coreflagshi(sb_t *sbh, uint32 mask, uint32 val);
-+extern bool sb_iscoreup(sb_t *sbh);
-+extern void *sb_setcoreidx(sb_t *sbh, uint coreidx);
-+extern void *sb_setcore(sb_t *sbh, uint coreid, uint coreunit);
-+extern int sb_corebist(sb_t *sbh);
-+extern void sb_commit(sb_t *sbh);
-+extern uint32 sb_base(uint32 admatch);
-+extern uint32 sb_size(uint32 admatch);
-+extern void sb_core_reset(sb_t *sbh, uint32 bits, uint32 resetbits);
-+extern void sb_core_tofixup(sb_t *sbh);
-+extern void sb_core_disable(sb_t *sbh, uint32 bits);
-+extern uint32 sb_clock_rate(uint32 pll_type, uint32 n, uint32 m);
-+extern uint32 sb_clock(sb_t *sbh);
-+extern void sb_pci_setup(sb_t *sbh, uint coremask);
-+extern void sb_pcmcia_init(sb_t *sbh);
-+extern void sb_watchdog(sb_t *sbh, uint ticks);
-+extern void *sb_gpiosetcore(sb_t *sbh);
-+extern uint32 sb_gpiocontrol(sb_t *sbh, uint32 mask, uint32 val, uint8 priority);
-+extern uint32 sb_gpioouten(sb_t *sbh, uint32 mask, uint32 val, uint8 priority);
-+extern uint32 sb_gpioout(sb_t *sbh, uint32 mask, uint32 val, uint8 priority);
-+extern uint32 sb_gpioin(sb_t *sbh);
-+extern uint32 sb_gpiointpolarity(sb_t *sbh, uint32 mask, uint32 val, uint8 priority);
-+extern uint32 sb_gpiointmask(sb_t *sbh, uint32 mask, uint32 val, uint8 priority);
-+extern uint32 sb_gpioled(sb_t *sbh, uint32 mask, uint32 val);
-+extern uint32 sb_gpioreserve(sb_t *sbh, uint32 gpio_num, uint8 priority);
-+extern uint32 sb_gpiorelease(sb_t *sbh, uint32 gpio_num, uint8 priority);
-+
-+extern void sb_clkctl_init(sb_t *sbh);
-+extern uint16 sb_clkctl_fast_pwrup_delay(sb_t *sbh);
-+extern bool sb_clkctl_clk(sb_t *sbh, uint mode);
-+extern int sb_clkctl_xtal(sb_t *sbh, uint what, bool on);
-+extern void sb_register_intr_callback(sb_t *sbh, void *intrsoff_fn, void *intrsrestore_fn,
-+ void *intrsenabled_fn, void *intr_arg);
-+extern uint32 sb_set_initiator_to(sb_t *sbh, uint32 to);
-+extern int sb_corepciid(sb_t *sbh, uint func, uint16 *pcivendor, uint16 *pcidevice,
-+ uint8 *pciclass, uint8 *pcisubclass, uint8 *pciprogif,
-+ uint8 *pciheader);
-+extern uint sb_pcie_readreg(void *sbh, void* arg1, uint offset);
-+extern uint sb_pcie_writereg(sb_t *sbh, void *arg1, uint offset, uint val);
-+extern uint32 sb_gpiotimerval(sb_t *sbh, uint32 mask, uint32 val);
-+extern bool sb_backplane64(sb_t *sbh);
-+extern void sb_btcgpiowar(sb_t *sbh);
-+
-+
-+
-+
-+extern bool sb_deviceremoved(sb_t *sbh);
-+extern uint32 sb_socram_size(sb_t *sbh);
-+
-+/*
-+* Build device path. Path size must be >= SB_DEVPATH_BUFSZ.
-+* The returned path is NULL terminated and has trailing '/'.
-+* Return 0 on success, nonzero otherwise.
-+*/
-+extern int sb_devpath(sb_t *sbh, char *path, int size);
-+
-+/* clkctl xtal what flags */
-+#define XTAL 0x1 /* primary crystal oscillator (2050) */
-+#define PLL 0x2 /* main chip pll */
-+
-+/* clkctl clk mode */
-+#define CLK_FAST 0 /* force fast (pll) clock */
-+#define CLK_DYNAMIC 2 /* enable dynamic clock control */
-+
-+
-+/* GPIO usage priorities */
-+#define GPIO_DRV_PRIORITY 0 /* Driver */
-+#define GPIO_APP_PRIORITY 1 /* Application */
-+
-+/* device path */
-+#define SB_DEVPATH_BUFSZ 16 /* min buffer size in bytes */
-+
-+#endif /* _sbutils_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/sflash.h linux.dev/arch/mips/bcm947xx/include/sflash.h
---- linux.old/arch/mips/bcm947xx/include/sflash.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sflash.h 2006-04-27 22:13:51.000000000 +0200
-@@ -0,0 +1,36 @@
-+/*
-+ * Broadcom SiliconBackplane chipcommon serial flash interface
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sflash.h,v 1.1.1.8 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _sflash_h_
-+#define _sflash_h_
-+
-+#include <typedefs.h>
-+#include <sbchipc.h>
-+
-+struct sflash {
-+ uint blocksize; /* Block size */
-+ uint numblocks; /* Number of blocks */
-+ uint32 type; /* Type */
-+ uint size; /* Total size in bytes */
-+};
-+
-+/* Utility functions */
-+extern int sflash_poll(chipcregs_t *cc, uint offset);
-+extern int sflash_read(chipcregs_t *cc, uint offset, uint len, uchar *buf);
-+extern int sflash_write(chipcregs_t *cc, uint offset, uint len, const uchar *buf);
-+extern int sflash_erase(chipcregs_t *cc, uint offset);
-+extern int sflash_commit(chipcregs_t *cc, uint offset, uint len, const uchar *buf);
-+extern struct sflash * sflash_init(chipcregs_t *cc);
-+
-+#endif /* _sflash_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/trxhdr.h linux.dev/arch/mips/bcm947xx/include/trxhdr.h
---- linux.old/arch/mips/bcm947xx/include/trxhdr.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/trxhdr.h 2006-04-27 19:24:19.000000000 +0200
-@@ -0,0 +1,33 @@
-+/*
-+ * TRX image file header format.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#include <typedefs.h>
-+
-+#define TRX_MAGIC 0x30524448 /* "HDR0" */
-+#define TRX_VERSION 1
-+#define TRX_MAX_LEN 0x3A0000
-+#define TRX_NO_HEADER 1 /* Do not write TRX header */
-+#define TRX_GZ_FILES 0x2 /* Contains up to TRX_MAX_OFFSET individual gzip files */
-+#define TRX_MAX_OFFSET 3
-+
-+struct trx_header {
-+ uint32 magic; /* "HDR0" */
-+ uint32 len; /* Length of file including header */
-+ uint32 crc32; /* 32-bit CRC from flag_version to end of file */
-+ uint32 flag_version; /* 0:15 flags, 16:31 version */
-+ uint32 offsets[TRX_MAX_OFFSET]; /* Offsets of partitions from start of header */
-+};
-+
-+/* Compatibility */
-+typedef struct trx_header TRXHDR, *PTRXHDR;
-diff -urN linux.old/arch/mips/bcm947xx/include/typedefs.h linux.dev/arch/mips/bcm947xx/include/typedefs.h
---- linux.old/arch/mips/bcm947xx/include/typedefs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/typedefs.h 2006-04-27 23:47:30.000000000 +0200
-@@ -0,0 +1,361 @@
-+/*
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id: typedefs.h,v 1.1.1.12 2006/04/08 06:13:40 honor Exp $
-+ */
-+
-+#ifndef _TYPEDEFS_H_
-+#define _TYPEDEFS_H_
-+
-+
-+/* Define 'SITE_TYPEDEFS' in the compile to include a site specific
-+ * typedef file "site_typedefs.h".
-+ *
-+ * If 'SITE_TYPEDEFS' is not defined, then the "Inferred Typedefs"
-+ * section of this file makes inferences about the compile environment
-+ * based on defined symbols and possibly compiler pragmas.
-+ *
-+ * Following these two sections is the "Default Typedefs"
-+ * section. This section is only prcessed if 'USE_TYPEDEF_DEFAULTS' is
-+ * defined. This section has a default set of typedefs and a few
-+ * proprocessor symbols (TRUE, FALSE, NULL, ...).
-+ */
-+
-+#ifdef SITE_TYPEDEFS
-+
-+/*
-+ * Site Specific Typedefs
-+ *
-+ */
-+
-+#include "site_typedefs.h"
-+
-+#else
-+
-+/*
-+ * Inferred Typedefs
-+ *
-+ */
-+
-+/* Infer the compile environment based on preprocessor symbols and pramas.
-+ * Override type definitions as needed, and include configuration dependent
-+ * header files to define types.
-+ */
-+
-+#ifdef __cplusplus
-+
-+#define TYPEDEF_BOOL
-+#ifndef FALSE
-+#define FALSE false
-+#endif
-+#ifndef TRUE
-+#define TRUE true
-+#endif
-+
-+#else /* ! __cplusplus */
-+
-+#if defined(_WIN32)
-+
-+#define TYPEDEF_BOOL
-+typedef unsigned char bool; /* consistent w/BOOL */
-+
-+#endif /* _WIN32 */
-+
-+#endif /* ! __cplusplus */
-+
-+/* use the Windows ULONG_PTR type when compiling for 64 bit */
-+#if defined(_WIN64)
-+#include <basetsd.h>
-+#define TYPEDEF_UINTPTR
-+typedef ULONG_PTR uintptr;
-+#endif
-+
-+
-+#if defined(_MINOSL_)
-+#define _NEED_SIZE_T_
-+#endif
-+
-+#if defined(_NEED_SIZE_T_)
-+typedef long unsigned int size_t;
-+#endif
-+
-+#ifdef __DJGPP__
-+typedef long unsigned int size_t;
-+#endif /* __DJGPP__ */
-+
-+#ifdef _MSC_VER /* Microsoft C */
-+#define TYPEDEF_INT64
-+#define TYPEDEF_UINT64
-+typedef signed __int64 int64;
-+typedef unsigned __int64 uint64;
-+#endif
-+
-+#if defined(MACOSX)
-+#define TYPEDEF_BOOL
-+#endif
-+
-+#if defined(__NetBSD__)
-+#define TYPEDEF_ULONG
-+#endif
-+
-+
-+#if defined(linux)
-+#define TYPEDEF_UINT
-+#define TYPEDEF_USHORT
-+#define TYPEDEF_ULONG
-+#endif
-+
-+#if !defined(linux) && !defined(_WIN32) && !defined(_CFE_) && \
-+ !defined(_HNDRTE_) && !defined(_MINOSL_) && !defined(__DJGPP__)
-+#define TYPEDEF_UINT
-+#define TYPEDEF_USHORT
-+#endif
-+
-+
-+/* Do not support the (u)int64 types with strict ansi for GNU C */
-+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
-+#define TYPEDEF_INT64
-+#define TYPEDEF_UINT64
-+#endif
-+
-+/* ICL accepts unsigned 64 bit type only, and complains in ANSI mode
-+ * for singned or unsigned
-+ */
-+#if defined(__ICL)
-+
-+#define TYPEDEF_INT64
-+
-+#if defined(__STDC__)
-+#define TYPEDEF_UINT64
-+#endif
-+
-+#endif /* __ICL */
-+
-+#if !defined(_WIN32) && !defined(_CFE_) && !defined(_MINOSL_) && \
-+ !defined(__DJGPP__)
-+
-+/* pick up ushort & uint from standard types.h */
-+#if defined(linux) && defined(__KERNEL__)
-+
-+#include <linux/types.h> /* sys/types.h and linux/types.h are oil and water */
-+
-+#else
-+
-+#include <sys/types.h>
-+
-+#endif
-+
-+#endif /* !_WIN32 && !PMON && !_CFE_ && !_HNDRTE_ && !_MINOSL_ && !__DJGPP__ */
-+
-+#if defined(MACOSX)
-+
-+#ifdef __BIG_ENDIAN__
-+#define IL_BIGENDIAN
-+#else
-+#ifdef IL_BIGENDIAN
-+#error "IL_BIGENDIAN was defined for a little-endian compile"
-+#endif
-+#endif /* __BIG_ENDIAN__ */
-+
-+#if !defined(__cplusplus)
-+
-+#if defined(__i386__)
-+typedef unsigned char bool;
-+#else
-+typedef unsigned int bool;
-+#endif
-+#define TYPE_BOOL 1
-+enum {
-+ false = 0,
-+ true = 1
-+};
-+
-+#if defined(KERNEL)
-+#include <IOKit/IOTypes.h>
-+#endif /* KERNEL */
-+
-+#endif /* __cplusplus */
-+
-+#endif /* MACOSX */
-+
-+
-+/* use the default typedefs in the next section of this file */
-+#define USE_TYPEDEF_DEFAULTS
-+
-+#endif /* SITE_TYPEDEFS */
-+
-+
-+/*
-+ * Default Typedefs
-+ *
-+ */
-+
-+#ifdef USE_TYPEDEF_DEFAULTS
-+#undef USE_TYPEDEF_DEFAULTS
-+
-+#ifndef TYPEDEF_BOOL
-+typedef /* @abstract@ */ unsigned char bool;
-+#endif
-+
-+/* define uchar, ushort, uint, ulong */
-+
-+#ifndef TYPEDEF_UCHAR
-+typedef unsigned char uchar;
-+#endif
-+
-+#ifndef TYPEDEF_USHORT
-+typedef unsigned short ushort;
-+#endif
-+
-+#ifndef TYPEDEF_UINT
-+typedef unsigned int uint;
-+#endif
-+
-+#ifndef TYPEDEF_ULONG
-+typedef unsigned long ulong;
-+#endif
-+
-+/* define [u]int8/16/32/64, uintptr */
-+
-+#ifndef TYPEDEF_UINT8
-+typedef unsigned char uint8;
-+#endif
-+
-+#ifndef TYPEDEF_UINT16
-+typedef unsigned short uint16;
-+#endif
-+
-+#ifndef TYPEDEF_UINT32
-+typedef unsigned int uint32;
-+#endif
-+
-+#ifndef TYPEDEF_UINT64
-+typedef unsigned long long uint64;
-+#endif
-+
-+#ifndef TYPEDEF_UINTPTR
-+typedef unsigned int uintptr;
-+#endif
-+
-+#ifndef TYPEDEF_INT8
-+typedef signed char int8;
-+#endif
-+
-+#ifndef TYPEDEF_INT16
-+typedef signed short int16;
-+#endif
-+
-+#ifndef TYPEDEF_INT32
-+typedef signed int int32;
-+#endif
-+
-+#ifndef TYPEDEF_INT64
-+typedef signed long long int64;
-+#endif
-+
-+/* define float32/64, float_t */
-+
-+#ifndef TYPEDEF_FLOAT32
-+typedef float float32;
-+#endif
-+
-+#ifndef TYPEDEF_FLOAT64
-+typedef double float64;
-+#endif
-+
-+/*
-+ * abstracted floating point type allows for compile time selection of
-+ * single or double precision arithmetic. Compiling with -DFLOAT32
-+ * selects single precision; the default is double precision.
-+ */
-+
-+#ifndef TYPEDEF_FLOAT_T
-+
-+#if defined(FLOAT32)
-+typedef float32 float_t;
-+#else /* default to double precision floating point */
-+typedef float64 float_t;
-+#endif
-+
-+#endif /* TYPEDEF_FLOAT_T */
-+
-+/* define macro values */
-+
-+#ifndef FALSE
-+#define FALSE 0
-+#endif
-+
-+#ifndef TRUE
-+#define TRUE 1 /* TRUE */
-+#endif
-+
-+#ifndef NULL
-+#define NULL 0
-+#endif
-+
-+#ifndef OFF
-+#define OFF 0
-+#endif
-+
-+#ifndef ON
-+#define ON 1 /* ON = 1 */
-+#endif
-+
-+#define AUTO (-1) /* Auto = -1 */
-+
-+/* define PTRSZ, INLINE */
-+
-+#ifndef PTRSZ
-+#define PTRSZ sizeof(char*)
-+#endif
-+
-+#ifndef INLINE
-+
-+#ifdef _MSC_VER
-+
-+#define INLINE __inline
-+
-+#elif __GNUC__
-+
-+#define INLINE __inline__
-+
-+#else
-+
-+#define INLINE
-+
-+#endif /* _MSC_VER */
-+
-+#endif /* INLINE */
-+
-+#undef TYPEDEF_BOOL
-+#undef TYPEDEF_UCHAR
-+#undef TYPEDEF_USHORT
-+#undef TYPEDEF_UINT
-+#undef TYPEDEF_ULONG
-+#undef TYPEDEF_UINT8
-+#undef TYPEDEF_UINT16
-+#undef TYPEDEF_UINT32
-+#undef TYPEDEF_UINT64
-+#undef TYPEDEF_UINTPTR
-+#undef TYPEDEF_INT8
-+#undef TYPEDEF_INT16
-+#undef TYPEDEF_INT32
-+#undef TYPEDEF_INT64
-+#undef TYPEDEF_FLOAT32
-+#undef TYPEDEF_FLOAT64
-+#undef TYPEDEF_FLOAT_T
-+
-+#endif /* USE_TYPEDEF_DEFAULTS */
-+
-+/*
-+ * Including the bcmdefs.h here, to make sure everyone including typedefs.h
-+ * gets this automatically
-+*/
-+#include "bcmdefs.h"
-+
-+#endif /* _TYPEDEFS_H_ */
-diff -urN linux.old/arch/mips/bcm947xx/nvram.c linux.dev/arch/mips/bcm947xx/nvram.c
---- linux.old/arch/mips/bcm947xx/nvram.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/nvram.c 2006-04-27 23:11:58.000000000 +0200
-@@ -0,0 +1,315 @@
-+/*
-+ * NVRAM variable manipulation (common)
-+ *
-+ * Copyright 2004, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ */
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <bcmendian.h>
-+#include <bcmnvram.h>
-+#include <bcmutils.h>
-+#include <sbsdram.h>
-+
-+extern struct nvram_tuple * BCMINIT(_nvram_realloc)(struct nvram_tuple *t, const char *name, const char *value);
-+extern void BCMINIT(_nvram_free)(struct nvram_tuple *t);
-+extern int BCMINIT(_nvram_read)(void *buf);
-+
-+char * BCMINIT(_nvram_get)(const char *name);
-+int BCMINIT(_nvram_set)(const char *name, const char *value);
-+int BCMINIT(_nvram_unset)(const char *name);
-+int BCMINIT(_nvram_getall)(char *buf, int count);
-+int BCMINIT(_nvram_commit)(struct nvram_header *header);
-+int BCMINIT(_nvram_init)(void);
-+void BCMINIT(_nvram_exit)(void);
-+
-+static struct nvram_tuple * BCMINITDATA(nvram_hash)[257];
-+static struct nvram_tuple * nvram_dead;
-+
-+/* Free all tuples. Should be locked. */
-+static void
-+BCMINITFN(nvram_free)(void)
-+{
-+ uint i;
-+ struct nvram_tuple *t, *next;
-+
-+ /* Free hash table */
-+ for (i = 0; i < ARRAYSIZE(BCMINIT(nvram_hash)); i++) {
-+ for (t = BCMINIT(nvram_hash)[i]; t; t = next) {
-+ next = t->next;
-+ BCMINIT(_nvram_free)(t);
-+ }
-+ BCMINIT(nvram_hash)[i] = NULL;
-+ }
-+
-+ /* Free dead table */
-+ for (t = nvram_dead; t; t = next) {
-+ next = t->next;
-+ BCMINIT(_nvram_free)(t);
-+ }
-+ nvram_dead = NULL;
-+
-+ /* Indicate to per-port code that all tuples have been freed */
-+ BCMINIT(_nvram_free)(NULL);
-+}
-+
-+/* String hash */
-+static INLINE uint
-+hash(const char *s)
-+{
-+ uint hash = 0;
-+
-+ while (*s)
-+ hash = 31 * hash + *s++;
-+
-+ return hash;
-+}
-+
-+/* (Re)initialize the hash table. Should be locked. */
-+static int
-+BCMINITFN(nvram_rehash)(struct nvram_header *header)
-+{
-+ char buf[] = "0xXXXXXXXX", *name, *value, *end, *eq;
-+
-+ /* (Re)initialize hash table */
-+ BCMINIT(nvram_free)();
-+
-+ /* Parse and set "name=value\0 ... \0\0" */
-+ name = (char *) &header[1];
-+ end = (char *) header + NVRAM_SPACE - 2;
-+ end[0] = end[1] = '\0';
-+ for (; *name; name = value + strlen(value) + 1) {
-+ if (!(eq = strchr(name, '=')))
-+ break;
-+ *eq = '\0';
-+ value = eq + 1;
-+ BCMINIT(_nvram_set)(name, value);
-+ *eq = '=';
-+ }
-+
-+ /* Set special SDRAM parameters */
-+ if (!BCMINIT(_nvram_get)("sdram_init")) {
-+ sprintf(buf, "0x%04X", (uint16)(header->crc_ver_init >> 16));
-+ BCMINIT(_nvram_set)("sdram_init", buf);
-+ }
-+ if (!BCMINIT(_nvram_get)("sdram_config")) {
-+ sprintf(buf, "0x%04X", (uint16)(header->config_refresh & 0xffff));
-+ BCMINIT(_nvram_set)("sdram_config", buf);
-+ }
-+ if (!BCMINIT(_nvram_get)("sdram_refresh")) {
-+ sprintf(buf, "0x%04X", (uint16)((header->config_refresh >> 16) & 0xffff));
-+ BCMINIT(_nvram_set)("sdram_refresh", buf);
-+ }
-+ if (!BCMINIT(_nvram_get)("sdram_ncdl")) {
-+ sprintf(buf, "0x%08X", header->config_ncdl);
-+ BCMINIT(_nvram_set)("sdram_ncdl", buf);
-+ }
-+
-+ return 0;
-+}
-+
-+/* Get the value of an NVRAM variable. Should be locked. */
-+char *
-+BCMINITFN(_nvram_get)(const char *name)
-+{
-+ uint i;
-+ struct nvram_tuple *t;
-+ char *value;
-+
-+ if (!name)
-+ return NULL;
-+
-+ /* Hash the name */
-+ i = hash(name) % ARRAYSIZE(BCMINIT(nvram_hash));
-+
-+ /* Find the associated tuple in the hash table */
-+ for (t = BCMINIT(nvram_hash)[i]; t && strcmp(t->name, name); t = t->next);
-+
-+ value = t ? t->value : NULL;
-+
-+ return value;
-+}
-+
-+/* Get the value of an NVRAM variable. Should be locked. */
-+int
-+BCMINITFN(_nvram_set)(const char *name, const char *value)
-+{
-+ uint i;
-+ struct nvram_tuple *t, *u, **prev;
-+
-+ /* Hash the name */
-+ i = hash(name) % ARRAYSIZE(BCMINIT(nvram_hash));
-+
-+ /* Find the associated tuple in the hash table */
-+ for (prev = &BCMINIT(nvram_hash)[i], t = *prev; t && strcmp(t->name, name); prev = &t->next, t = *prev);
-+
-+ /* (Re)allocate tuple */
-+ if (!(u = BCMINIT(_nvram_realloc)(t, name, value)))
-+ return -12; /* -ENOMEM */
-+
-+ /* Value reallocated */
-+ if (t && t == u)
-+ return 0;
-+
-+ /* Move old tuple to the dead table */
-+ if (t) {
-+ *prev = t->next;
-+ t->next = nvram_dead;
-+ nvram_dead = t;
-+ }
-+
-+ /* Add new tuple to the hash table */
-+ u->next = BCMINIT(nvram_hash)[i];
-+ BCMINIT(nvram_hash)[i] = u;
-+
-+ return 0;
-+}
-+
-+/* Unset the value of an NVRAM variable. Should be locked. */
-+int
-+BCMINITFN(_nvram_unset)(const char *name)
-+{
-+ uint i;
-+ struct nvram_tuple *t, **prev;
-+
-+ if (!name)
-+ return 0;
-+
-+ /* Hash the name */
-+ i = hash(name) % ARRAYSIZE(BCMINIT(nvram_hash));
-+
-+ /* Find the associated tuple in the hash table */
-+ for (prev = &BCMINIT(nvram_hash)[i], t = *prev; t && strcmp(t->name, name); prev = &t->next, t = *prev);
-+
-+ /* Move it to the dead table */
-+ if (t) {
-+ *prev = t->next;
-+ t->next = nvram_dead;
-+ nvram_dead = t;
-+ }
-+
-+ return 0;
-+}
-+
-+/* Get all NVRAM variables. Should be locked. */
-+int
-+BCMINITFN(_nvram_getall)(char *buf, int count)
-+{
-+ uint i;
-+ struct nvram_tuple *t;
-+ int len = 0;
-+
-+ bzero(buf, count);
-+
-+ /* Write name=value\0 ... \0\0 */
-+ for (i = 0; i < ARRAYSIZE(BCMINIT(nvram_hash)); i++) {
-+ for (t = BCMINIT(nvram_hash)[i]; t; t = t->next) {
-+ if ((count - len) > (strlen(t->name) + 1 + strlen(t->value) + 1))
-+ len += sprintf(buf + len, "%s=%s", t->name, t->value) + 1;
-+ else
-+ break;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+/* Regenerate NVRAM. Should be locked. */
-+int
-+BCMINITFN(_nvram_commit)(struct nvram_header *header)
-+{
-+ char *init, *config, *refresh, *ncdl;
-+ char *ptr, *end;
-+ int i;
-+ struct nvram_tuple *t;
-+ struct nvram_header tmp;
-+ uint8 crc;
-+
-+ /* Regenerate header */
-+ header->magic = NVRAM_MAGIC;
-+ header->crc_ver_init = (NVRAM_VERSION << 8);
-+ if (!(init = BCMINIT(_nvram_get)("sdram_init")) ||
-+ !(config = BCMINIT(_nvram_get)("sdram_config")) ||
-+ !(refresh = BCMINIT(_nvram_get)("sdram_refresh")) ||
-+ !(ncdl = BCMINIT(_nvram_get)("sdram_ncdl"))) {
-+ header->crc_ver_init |= SDRAM_INIT << 16;
-+ header->config_refresh = SDRAM_CONFIG;
-+ header->config_refresh |= SDRAM_REFRESH << 16;
-+ header->config_ncdl = 0;
-+ } else {
-+ header->crc_ver_init |= (bcm_strtoul(init, NULL, 0) & 0xffff) << 16;
-+ header->config_refresh = bcm_strtoul(config, NULL, 0) & 0xffff;
-+ header->config_refresh |= (bcm_strtoul(refresh, NULL, 0) & 0xffff) << 16;
-+ header->config_ncdl = bcm_strtoul(ncdl, NULL, 0);
-+ }
-+
-+ /* Clear data area */
-+ ptr = (char *) header + sizeof(struct nvram_header);
-+ bzero(ptr, NVRAM_SPACE - sizeof(struct nvram_header));
-+
-+ /* Leave space for a double NUL at the end */
-+ end = (char *) header + NVRAM_SPACE - 2;
-+
-+ /* Write out all tuples */
-+ for (i = 0; i < ARRAYSIZE(BCMINIT(nvram_hash)); i++) {
-+ for (t = BCMINIT(nvram_hash)[i]; t; t = t->next) {
-+ if ((ptr + strlen(t->name) + 1 + strlen(t->value) + 1) > end)
-+ break;
-+ ptr += sprintf(ptr, "%s=%s", t->name, t->value) + 1;
-+ }
-+ }
-+
-+ /* End with a double NUL */
-+ ptr += 2;
-+
-+ /* Set new length */
-+ header->len = ROUNDUP(ptr - (char *) header, 4);
-+
-+ /* Little-endian CRC8 over the last 11 bytes of the header */
-+ tmp.crc_ver_init = htol32(header->crc_ver_init);
-+ tmp.config_refresh = htol32(header->config_refresh);
-+ tmp.config_ncdl = htol32(header->config_ncdl);
-+ crc = hndcrc8((char *) &tmp + 9, sizeof(struct nvram_header) - 9, CRC8_INIT_VALUE);
-+
-+ /* Continue CRC8 over data bytes */
-+ crc = hndcrc8((char *) &header[1], header->len - sizeof(struct nvram_header), crc);
-+
-+ /* Set new CRC8 */
-+ header->crc_ver_init |= crc;
-+
-+ /* Reinitialize hash table */
-+ return BCMINIT(nvram_rehash)(header);
-+}
-+
-+/* Initialize hash table. Should be locked. */
-+int
-+BCMINITFN(_nvram_init)(void)
-+{
-+ struct nvram_header *header;
-+ int ret;
-+
-+ if (!(header = (struct nvram_header *) kmalloc(NVRAM_SPACE, GFP_ATOMIC))) {
-+ return -12; /* -ENOMEM */
-+ }
-+
-+ if ((ret = BCMINIT(_nvram_read)(header)) == 0 &&
-+ header->magic == NVRAM_MAGIC)
-+ BCMINIT(nvram_rehash)(header);
-+
-+ kfree(header);
-+ return ret;
-+}
-+
-+/* Free hash table. Should be locked. */
-+void
-+BCMINITFN(_nvram_exit)(void)
-+{
-+ BCMINIT(nvram_free)();
-+}
-diff -urN linux.old/arch/mips/bcm947xx/nvram_linux.c linux.dev/arch/mips/bcm947xx/nvram_linux.c
---- linux.old/arch/mips/bcm947xx/nvram_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/nvram_linux.c 2006-04-27 23:30:07.000000000 +0200
-@@ -0,0 +1,723 @@
-+/*
-+ * NVRAM variable manipulation (Linux kernel half)
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: nvram_linux.c,v 1.19 2006/04/08 07:12:42 honor Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/string.h>
-+#include <linux/interrupt.h>
-+#include <linux/spinlock.h>
-+#include <linux/slab.h>
-+#include <linux/bootmem.h>
-+#include <linux/wrapper.h>
-+#include <linux/fs.h>
-+#include <linux/miscdevice.h>
-+#include <linux/mtd/mtd.h>
-+#include <asm/addrspace.h>
-+#include <asm/io.h>
-+#include <asm/uaccess.h>
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <bcmendian.h>
-+#include <bcmnvram.h>
-+#include <bcmutils.h>
-+#include <sbconfig.h>
-+#include <sbchipc.h>
-+#include <sbutils.h>
-+#include <hndmips.h>
-+#include <sflash.h>
-+
-+/* In BSS to minimize text size and page aligned so it can be mmap()-ed */
-+static char nvram_buf[NVRAM_SPACE] __attribute__((aligned(PAGE_SIZE)));
-+
-+#ifdef MODULE
-+
-+#define early_nvram_get(name) nvram_get(name)
-+
-+#else /* !MODULE */
-+
-+/* Global SB handle */
-+extern void *bcm947xx_sbh;
-+extern spinlock_t bcm947xx_sbh_lock;
-+
-+static int cfe_env;
-+extern char *cfe_env_get(char *nv_buf, const char *name);
-+
-+/* Convenience */
-+#define sbh bcm947xx_sbh
-+#define sbh_lock bcm947xx_sbh_lock
-+#define KB * 1024
-+#define MB * 1024 * 1024
-+
-+/* Probe for NVRAM header */
-+static void __init
-+early_nvram_init(void)
-+{
-+ struct nvram_header *header;
-+ chipcregs_t *cc;
-+ struct sflash *info = NULL;
-+ int i;
-+ uint32 base, off, lim;
-+ u32 *src, *dst;
-+
-+ if ((cc = sb_setcore(sbh, SB_CC, 0)) != NULL) {
-+ base = KSEG1ADDR(SB_FLASH2);
-+ switch (readl(&cc->capabilities) & CAP_FLASH_MASK) {
-+ case PFLASH:
-+ lim = SB_FLASH2_SZ;
-+ break;
-+
-+ case SFLASH_ST:
-+ case SFLASH_AT:
-+ if ((info = sflash_init(cc)) == NULL)
-+ return;
-+ lim = info->size;
-+ break;
-+
-+ case FLASH_NONE:
-+ default:
-+ return;
-+ }
-+ } else {
-+ /* extif assumed, Stop at 4 MB */
-+ base = KSEG1ADDR(SB_FLASH1);
-+ lim = SB_FLASH1_SZ;
-+ }
-+
-+ /* XXX: hack for supporting the CFE environment stuff on WGT634U */
-+ src = (u32 *) KSEG1ADDR(base + 8 * 1024 * 1024 - 0x2000);
-+ dst = (u32 *) nvram_buf;
-+ if ((lim == 0x02000000) && ((*src & 0xff00ff) == 0x000001)) {
-+ printk("early_nvram_init: WGT634U NVRAM found.\n");
-+
-+ for (i = 0; i < 0x1ff0; i++) {
-+ if (*src == 0xFFFFFFFF)
-+ break;
-+ *dst++ = *src++;
-+ }
-+ cfe_env = 1;
-+ return;
-+ }
-+
-+ off = FLASH_MIN;
-+ while (off <= lim) {
-+ /* Windowed flash access */
-+ header = (struct nvram_header *) KSEG1ADDR(base + off - NVRAM_SPACE);
-+ if (header->magic == NVRAM_MAGIC)
-+ goto found;
-+ off <<= 1;
-+ }
-+
-+ /* Try embedded NVRAM at 4 KB and 1 KB as last resorts */
-+ header = (struct nvram_header *) KSEG1ADDR(base + 4 KB);
-+ if (header->magic == NVRAM_MAGIC)
-+ goto found;
-+
-+ header = (struct nvram_header *) KSEG1ADDR(base + 1 KB);
-+ if (header->magic == NVRAM_MAGIC)
-+ goto found;
-+
-+ printk("early_nvram_init: NVRAM not found\n");
-+ return;
-+
-+found:
-+ src = (u32 *) header;
-+ dst = (u32 *) nvram_buf;
-+ for (i = 0; i < sizeof(struct nvram_header); i += 4)
-+ *dst++ = *src++;
-+ for (; i < header->len && i < NVRAM_SPACE; i += 4)
-+ *dst++ = ltoh32(*src++);
-+}
-+
-+/* Early (before mm or mtd) read-only access to NVRAM */
-+static char * __init
-+early_nvram_get(const char *name)
-+{
-+ char *var, *value, *end, *eq;
-+
-+ if (!name)
-+ return NULL;
-+
-+ /* Too early? */
-+ if (sbh == NULL)
-+ return NULL;
-+
-+ if (!nvram_buf[0])
-+ early_nvram_init();
-+
-+ if (cfe_env)
-+ return cfe_env_get(nvram_buf, name);
-+
-+ /* Look for name=value and return value */
-+ var = &nvram_buf[sizeof(struct nvram_header)];
-+ end = nvram_buf + sizeof(nvram_buf) - 2;
-+ end[0] = end[1] = '\0';
-+ for (; *var; var = value + strlen(value) + 1) {
-+ if (!(eq = strchr(var, '=')))
-+ break;
-+ value = eq + 1;
-+ if ((eq - var) == strlen(name) && strncmp(var, name, (eq - var)) == 0)
-+ return value;
-+ }
-+
-+ return NULL;
-+}
-+
-+static int __init
-+early_nvram_getall(char *buf, int count)
-+{
-+ char *var, *end;
-+ int len = 0;
-+
-+ /* Too early? */
-+ if (sbh == NULL)
-+ return -1;
-+
-+ if (!nvram_buf[0])
-+ early_nvram_init();
-+
-+ bzero(buf, count);
-+
-+ /* Write name=value\0 ... \0\0 */
-+ var = &nvram_buf[sizeof(struct nvram_header)];
-+ end = nvram_buf + sizeof(nvram_buf) - 2;
-+ end[0] = end[1] = '\0';
-+ for (; *var; var += strlen(var) + 1) {
-+ if ((count - len) <= (strlen(var) + 1))
-+ break;
-+ len += sprintf(buf + len, "%s", var) + 1;
-+ }
-+
-+ return 0;
-+}
-+#endif /* !MODULE */
-+
-+extern char * _nvram_get(const char *name);
-+extern int _nvram_set(const char *name, const char *value);
-+extern int _nvram_unset(const char *name);
-+extern int _nvram_getall(char *buf, int count);
-+extern int _nvram_commit(struct nvram_header *header);
-+extern int _nvram_init(void *sbh);
-+extern void _nvram_exit(void);
-+
-+/* Globals */
-+static spinlock_t nvram_lock = SPIN_LOCK_UNLOCKED;
-+static struct semaphore nvram_sem;
-+static unsigned long nvram_offset = 0;
-+static int nvram_major = -1;
-+static devfs_handle_t nvram_handle = NULL;
-+static struct mtd_info *nvram_mtd = NULL;
-+
-+int
-+_nvram_read(char *buf)
-+{
-+ struct nvram_header *header = (struct nvram_header *) buf;
-+ size_t len;
-+
-+ if (!nvram_mtd ||
-+ MTD_READ(nvram_mtd, nvram_mtd->size - NVRAM_SPACE, NVRAM_SPACE, &len, buf) ||
-+ len != NVRAM_SPACE ||
-+ header->magic != NVRAM_MAGIC) {
-+ /* Maybe we can recover some data from early initialization */
-+ memcpy(buf, nvram_buf, NVRAM_SPACE);
-+ }
-+
-+ return 0;
-+}
-+
-+struct nvram_tuple *
-+_nvram_realloc(struct nvram_tuple *t, const char *name, const char *value)
-+{
-+ if ((nvram_offset + strlen(value) + 1) > NVRAM_SPACE)
-+ return NULL;
-+
-+ if (!t) {
-+ if (!(t = kmalloc(sizeof(struct nvram_tuple) + strlen(name) + 1, GFP_ATOMIC)))
-+ return NULL;
-+
-+ /* Copy name */
-+ t->name = (char *) &t[1];
-+ strcpy(t->name, name);
-+
-+ t->value = NULL;
-+ }
-+
-+ /* Copy value */
-+ if (!t->value || strcmp(t->value, value)) {
-+ t->value = &nvram_buf[nvram_offset];
-+ strcpy(t->value, value);
-+ nvram_offset += strlen(value) + 1;
-+ }
-+
-+ return t;
-+}
-+
-+void
-+_nvram_free(struct nvram_tuple *t)
-+{
-+ if (!t)
-+ nvram_offset = 0;
-+ else
-+ kfree(t);
-+}
-+
-+int
-+nvram_set(const char *name, const char *value)
-+{
-+ unsigned long flags;
-+ int ret;
-+ struct nvram_header *header;
-+
-+ spin_lock_irqsave(&nvram_lock, flags);
-+ if ((ret = _nvram_set(name, value))) {
-+ /* Consolidate space and try again */
-+ if ((header = kmalloc(NVRAM_SPACE, GFP_ATOMIC))) {
-+ if (_nvram_commit(header) == 0)
-+ ret = _nvram_set(name, value);
-+ kfree(header);
-+ }
-+ }
-+ spin_unlock_irqrestore(&nvram_lock, flags);
-+
-+ return ret;
-+}
-+
-+char *
-+real_nvram_get(const char *name)
-+{
-+ unsigned long flags;
-+ char *value;
-+
-+ spin_lock_irqsave(&nvram_lock, flags);
-+ value = _nvram_get(name);
-+ spin_unlock_irqrestore(&nvram_lock, flags);
-+
-+ return value;
-+}
-+
-+char *
-+nvram_get(const char *name)
-+{
-+ if (nvram_major >= 0)
-+ return real_nvram_get(name);
-+ else
-+ return early_nvram_get(name);
-+}
-+
-+int
-+nvram_unset(const char *name)
-+{
-+ unsigned long flags;
-+ int ret;
-+
-+ spin_lock_irqsave(&nvram_lock, flags);
-+ ret = _nvram_unset(name);
-+ spin_unlock_irqrestore(&nvram_lock, flags);
-+
-+ return ret;
-+}
-+
-+static void
-+erase_callback(struct erase_info *done)
-+{
-+ wait_queue_head_t *wait_q = (wait_queue_head_t *) done->priv;
-+ wake_up(wait_q);
-+}
-+
-+int
-+nvram_commit(void)
-+{
-+ char *buf;
-+ size_t erasesize, len, magic_len;
-+ unsigned int i;
-+ int ret;
-+ struct nvram_header *header;
-+ unsigned long flags;
-+ u_int32_t offset;
-+ DECLARE_WAITQUEUE(wait, current);
-+ wait_queue_head_t wait_q;
-+ struct erase_info erase;
-+ u_int32_t magic_offset = 0; /* Offset for writing MAGIC # */
-+
-+ if (!nvram_mtd) {
-+ printk("nvram_commit: NVRAM not found\n");
-+ return -ENODEV;
-+ }
-+
-+ if (in_interrupt()) {
-+ printk("nvram_commit: not committing in interrupt\n");
-+ return -EINVAL;
-+ }
-+
-+ /* Backup sector blocks to be erased */
-+ erasesize = ROUNDUP(NVRAM_SPACE, nvram_mtd->erasesize);
-+ if (!(buf = kmalloc(erasesize, GFP_KERNEL))) {
-+ printk("nvram_commit: out of memory\n");
-+ return -ENOMEM;
-+ }
-+
-+ down(&nvram_sem);
-+
-+ if ((i = erasesize - NVRAM_SPACE) > 0) {
-+ offset = nvram_mtd->size - erasesize;
-+ len = 0;
-+ ret = MTD_READ(nvram_mtd, offset, i, &len, buf);
-+ if (ret || len != i) {
-+ printk("nvram_commit: read error ret = %d, len = %d/%d\n", ret, len, i);
-+ ret = -EIO;
-+ goto done;
-+ }
-+ header = (struct nvram_header *)(buf + i);
-+ magic_offset = i + ((void *)&header->magic - (void *)header);
-+ } else {
-+ offset = nvram_mtd->size - NVRAM_SPACE;
-+ magic_offset = ((void *)&header->magic - (void *)header);
-+ header = (struct nvram_header *)buf;
-+ }
-+
-+ /* clear the existing magic # to mark the NVRAM as unusable
-+ we can pull MAGIC bits low without erase */
-+ header->magic = NVRAM_CLEAR_MAGIC; /* All zeros magic */
-+
-+ /* Unlock sector blocks (for Intel 28F320C3B flash) , 20060309 */
-+ if(nvram_mtd->unlock)
-+ nvram_mtd->unlock(nvram_mtd, offset, nvram_mtd->erasesize);
-+
-+ ret = MTD_WRITE(nvram_mtd, offset + magic_offset, sizeof(header->magic),
-+ &magic_len, (char *)&header->magic);
-+ if (ret || magic_len != sizeof(header->magic)) {
-+ printk("nvram_commit: clear MAGIC error\n");
-+ ret = -EIO;
-+ goto done;
-+ }
-+
-+ header->magic = NVRAM_MAGIC; /* reset MAGIC before we regenerate the NVRAM,
-+ otherwise we'll have an incorrect CRC */
-+ /* Regenerate NVRAM */
-+ spin_lock_irqsave(&nvram_lock, flags);
-+ ret = _nvram_commit(header);
-+ spin_unlock_irqrestore(&nvram_lock, flags);
-+ if (ret)
-+ goto done;
-+
-+ /* Erase sector blocks */
-+ init_waitqueue_head(&wait_q);
-+ for (; offset < nvram_mtd->size - NVRAM_SPACE + header->len; offset += nvram_mtd->erasesize) {
-+ erase.mtd = nvram_mtd;
-+ erase.addr = offset;
-+ erase.len = nvram_mtd->erasesize;
-+ erase.callback = erase_callback;
-+ erase.priv = (u_long) &wait_q;
-+
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ add_wait_queue(&wait_q, &wait);
-+
-+ /* Unlock sector blocks */
-+ if (nvram_mtd->unlock)
-+ nvram_mtd->unlock(nvram_mtd, offset, nvram_mtd->erasesize);
-+
-+ if ((ret = MTD_ERASE(nvram_mtd, &erase))) {
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&wait_q, &wait);
-+ printk("nvram_commit: erase error\n");
-+ goto done;
-+ }
-+
-+ /* Wait for erase to finish */
-+ schedule();
-+ remove_wait_queue(&wait_q, &wait);
-+ }
-+
-+ /* Write partition up to end of data area */
-+ header->magic = NVRAM_INVALID_MAGIC; /* All ones magic */
-+ offset = nvram_mtd->size - erasesize;
-+ i = erasesize - NVRAM_SPACE + header->len;
-+ ret = MTD_WRITE(nvram_mtd, offset, i, &len, buf);
-+ if (ret || len != i) {
-+ printk("nvram_commit: write error\n");
-+ ret = -EIO;
-+ goto done;
-+ }
-+
-+ /* Now mark the NVRAM in flash as "valid" by setting the correct
-+ MAGIC # */
-+ header->magic = NVRAM_MAGIC;
-+ ret = MTD_WRITE(nvram_mtd, offset + magic_offset, sizeof(header->magic),
-+ &magic_len, (char *)&header->magic);
-+ if (ret || magic_len != sizeof(header->magic)) {
-+ printk("nvram_commit: write MAGIC error\n");
-+ ret = -EIO;
-+ goto done;
-+ }
-+
-+ /*
-+ * Reading a few bytes back here will put the device
-+ * back to the correct mode on certain flashes */
-+ offset = nvram_mtd->size - erasesize;
-+ ret = MTD_READ(nvram_mtd, offset, 4, &len, buf);
-+
-+ done:
-+ up(&nvram_sem);
-+ kfree(buf);
-+
-+ return ret;
-+}
-+
-+int
-+nvram_getall(char *buf, int count)
-+{
-+ unsigned long flags;
-+ int ret;
-+
-+ spin_lock_irqsave(&nvram_lock, flags);
-+ if (nvram_major >= 0)
-+ ret = _nvram_getall(buf, count);
-+ else
-+ ret = early_nvram_getall(buf, count);
-+ spin_unlock_irqrestore(&nvram_lock, flags);
-+
-+ return ret;
-+}
-+
-+
-+
-+
-+
-+
-+
-+/* User mode interface below */
-+
-+static ssize_t
-+dev_nvram_read(struct file *file, char *buf, size_t count, loff_t *ppos)
-+{
-+ char tmp[100], *name = tmp, *value;
-+ ssize_t ret;
-+ unsigned long off;
-+
-+ if (count > sizeof(tmp)) {
-+ if (!(name = kmalloc(count, GFP_KERNEL)))
-+ return -ENOMEM;
-+ }
-+
-+ if (copy_from_user(name, buf, count)) {
-+ ret = -EFAULT;
-+ goto done;
-+ }
-+
-+ if (*name == '\0') {
-+ /* Get all variables */
-+ ret = nvram_getall(name, count);
-+ if (ret == 0) {
-+ if (copy_to_user(buf, name, count)) {
-+ ret = -EFAULT;
-+ goto done;
-+ }
-+ ret = count;
-+ }
-+ } else {
-+ if (!(value = nvram_get(name))) {
-+ ret = 0;
-+ goto done;
-+ }
-+
-+ /* Provide the offset into mmap() space */
-+ off = (unsigned long) value - (unsigned long) nvram_buf;
-+
-+ if (put_user(off, (unsigned long *) buf)) {
-+ ret = -EFAULT;
-+ goto done;
-+ }
-+
-+ ret = sizeof(unsigned long);
-+ }
-+
-+ flush_cache_all();
-+
-+done:
-+ if (name != tmp)
-+ kfree(name);
-+
-+ return ret;
-+}
-+
-+static ssize_t
-+dev_nvram_write(struct file *file, const char *buf, size_t count, loff_t *ppos)
-+{
-+ char tmp[100], *name = tmp, *value;
-+ ssize_t ret;
-+
-+ if (count > sizeof(tmp)) {
-+ if (!(name = kmalloc(count, GFP_KERNEL)))
-+ return -ENOMEM;
-+ }
-+
-+ if (copy_from_user(name, buf, count)) {
-+ ret = -EFAULT;
-+ goto done;
-+ }
-+
-+ value = name;
-+ name = strsep(&value, "=");
-+ if (value)
-+ ret = nvram_set(name, value) ? : count;
-+ else
-+ ret = nvram_unset(name) ? : count;
-+
-+ done:
-+ if (name != tmp)
-+ kfree(name);
-+
-+ return ret;
-+}
-+
-+static int
-+dev_nvram_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
-+{
-+ if (cmd != NVRAM_MAGIC)
-+ return -EINVAL;
-+
-+ return nvram_commit();
-+}
-+
-+static int
-+dev_nvram_mmap(struct file *file, struct vm_area_struct *vma)
-+{
-+ unsigned long offset = virt_to_phys(nvram_buf);
-+
-+ if (remap_page_range(vma->vm_start, offset, vma->vm_end-vma->vm_start,
-+ vma->vm_page_prot))
-+ return -EAGAIN;
-+
-+ return 0;
-+}
-+
-+static int
-+dev_nvram_open(struct inode *inode, struct file * file)
-+{
-+ MOD_INC_USE_COUNT;
-+ return 0;
-+}
-+
-+static int
-+dev_nvram_release(struct inode *inode, struct file * file)
-+{
-+ MOD_DEC_USE_COUNT;
-+ return 0;
-+}
-+
-+static struct file_operations dev_nvram_fops = {
-+ owner: THIS_MODULE,
-+ open: dev_nvram_open,
-+ release: dev_nvram_release,
-+ read: dev_nvram_read,
-+ write: dev_nvram_write,
-+ ioctl: dev_nvram_ioctl,
-+ mmap: dev_nvram_mmap,
-+};
-+
-+static void
-+dev_nvram_exit(void)
-+{
-+ int order = 0;
-+ struct page *page, *end;
-+
-+ if (nvram_handle)
-+ devfs_unregister(nvram_handle);
-+
-+ if (nvram_major >= 0)
-+ devfs_unregister_chrdev(nvram_major, "nvram");
-+
-+ if (nvram_mtd)
-+ put_mtd_device(nvram_mtd);
-+
-+ while ((PAGE_SIZE << order) < NVRAM_SPACE)
-+ order++;
-+ end = virt_to_page(nvram_buf + (PAGE_SIZE << order) - 1);
-+ for (page = virt_to_page(nvram_buf); page <= end; page++)
-+ mem_map_unreserve(page);
-+
-+ _nvram_exit();
-+}
-+
-+static int __init
-+dev_nvram_init(void)
-+{
-+ int order = 0, ret = 0;
-+ struct page *page, *end;
-+ unsigned int i;
-+
-+ /* Allocate and reserve memory to mmap() */
-+ while ((PAGE_SIZE << order) < NVRAM_SPACE)
-+ order++;
-+ end = virt_to_page(nvram_buf + (PAGE_SIZE << order) - 1);
-+ for (page = virt_to_page(nvram_buf); page <= end; page++)
-+ mem_map_reserve(page);
-+
-+#ifdef CONFIG_MTD
-+ /* Find associated MTD device */
-+ for (i = 0; i < MAX_MTD_DEVICES; i++) {
-+ nvram_mtd = get_mtd_device(NULL, i);
-+ if (nvram_mtd) {
-+ if (!strcmp(nvram_mtd->name, "nvram") &&
-+ nvram_mtd->size >= NVRAM_SPACE)
-+ break;
-+ put_mtd_device(nvram_mtd);
-+ }
-+ }
-+ if (i >= MAX_MTD_DEVICES)
-+ nvram_mtd = NULL;
-+#endif
-+
-+ /* Initialize hash table lock */
-+ spin_lock_init(&nvram_lock);
-+
-+ /* Initialize commit semaphore */
-+ init_MUTEX(&nvram_sem);
-+
-+ /* Register char device */
-+ if ((nvram_major = devfs_register_chrdev(0, "nvram", &dev_nvram_fops)) < 0) {
-+ ret = nvram_major;
-+ goto err;
-+ }
-+
-+ /* Initialize hash table */
-+ _nvram_init(sbh);
-+
-+ /* Create /dev/nvram handle */
-+ nvram_handle = devfs_register(NULL, "nvram", DEVFS_FL_NONE, nvram_major, 0,
-+ S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, &dev_nvram_fops, NULL);
-+
-+ /* Set the SDRAM NCDL value into NVRAM if not already done */
-+ if (getintvar(NULL, "sdram_ncdl") == 0) {
-+ unsigned int ncdl;
-+ char buf[] = "0x00000000";
-+
-+ if ((ncdl = sb_memc_get_ncdl(sbh))) {
-+ sprintf(buf, "0x%08x", ncdl);
-+ nvram_set("sdram_ncdl", buf);
-+ nvram_commit();
-+ }
-+ }
-+
-+ return 0;
-+
-+ err:
-+ dev_nvram_exit();
-+ return ret;
-+}
-+
-+module_init(dev_nvram_init);
-+module_exit(dev_nvram_exit);
-diff -urN linux.old/arch/mips/bcm947xx/pcibios.c linux.dev/arch/mips/bcm947xx/pcibios.c
---- linux.old/arch/mips/bcm947xx/pcibios.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/pcibios.c 2006-04-27 23:42:50.000000000 +0200
-@@ -0,0 +1,380 @@
-+/*
-+ * Low-Level PCI and SB support for BCM47xx (Linux support code)
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: pcibios.c,v 1.1.1.9 2006/02/27 03:42:55 honor Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/pci.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+#include <asm/paccess.h>
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <bcmutils.h>
-+#include <sbconfig.h>
-+#include <sbutils.h>
-+#include <hndpci.h>
-+#include <pcicfg.h>
-+#include <bcmdevs.h>
-+#include <bcmnvram.h>
-+
-+/* Global SB handle */
-+extern sb_t *bcm947xx_sbh;
-+extern spinlock_t bcm947xx_sbh_lock;
-+
-+/* Convenience */
-+#define sbh bcm947xx_sbh
-+#define sbh_lock bcm947xx_sbh_lock
-+
-+static int
-+sbpci_read_config_byte(struct pci_dev *dev, int where, u8 *value)
-+{
-+ unsigned long flags;
-+ int ret;
-+
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ ret = sbpci_read_config(sbh, dev->bus->number, PCI_SLOT(dev->devfn),
-+ PCI_FUNC(dev->devfn), where, value, sizeof(*value));
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+ return ret ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
-+}
-+
-+static int
-+sbpci_read_config_word(struct pci_dev *dev, int where, u16 *value)
-+{
-+ unsigned long flags;
-+ int ret;
-+
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ ret = sbpci_read_config(sbh, dev->bus->number, PCI_SLOT(dev->devfn),
-+ PCI_FUNC(dev->devfn), where, value, sizeof(*value));
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+ return ret ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
-+}
-+
-+static int
-+sbpci_read_config_dword(struct pci_dev *dev, int where, u32 *value)
-+{
-+ unsigned long flags;
-+ int ret;
-+
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ ret = sbpci_read_config(sbh, dev->bus->number, PCI_SLOT(dev->devfn),
-+ PCI_FUNC(dev->devfn), where, value, sizeof(*value));
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+ return ret ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
-+}
-+
-+static int
-+sbpci_write_config_byte(struct pci_dev *dev, int where, u8 value)
-+{
-+ unsigned long flags;
-+ int ret;
-+
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ ret = sbpci_write_config(sbh, dev->bus->number, PCI_SLOT(dev->devfn),
-+ PCI_FUNC(dev->devfn), where, &value, sizeof(value));
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+ return ret ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
-+}
-+
-+static int
-+sbpci_write_config_word(struct pci_dev *dev, int where, u16 value)
-+{
-+ unsigned long flags;
-+ int ret;
-+
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ ret = sbpci_write_config(sbh, dev->bus->number, PCI_SLOT(dev->devfn),
-+ PCI_FUNC(dev->devfn), where, &value, sizeof(value));
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+ return ret ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
-+}
-+
-+static int
-+sbpci_write_config_dword(struct pci_dev *dev, int where, u32 value)
-+{
-+ unsigned long flags;
-+ int ret;
-+
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ ret = sbpci_write_config(sbh, dev->bus->number, PCI_SLOT(dev->devfn),
-+ PCI_FUNC(dev->devfn), where, &value, sizeof(value));
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+ return ret ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
-+}
-+
-+static struct pci_ops pcibios_ops = {
-+ sbpci_read_config_byte,
-+ sbpci_read_config_word,
-+ sbpci_read_config_dword,
-+ sbpci_write_config_byte,
-+ sbpci_write_config_word,
-+ sbpci_write_config_dword
-+};
-+
-+
-+void __init
-+pcibios_init(void)
-+{
-+ ulong flags;
-+
-+ if (!(sbh = sb_kattach()))
-+ panic("sb_kattach failed");
-+ spin_lock_init(&sbh_lock);
-+
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ sbpci_init(sbh);
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+
-+ set_io_port_base((unsigned long) ioremap_nocache(SB_PCI_MEM, 0x04000000));
-+
-+ /* Scan the SB bus */
-+ pci_scan_bus(0, &pcibios_ops, NULL);
-+
-+}
-+
-+char * __init
-+pcibios_setup(char *str)
-+{
-+ if (!strncmp(str, "ban=", 4)) {
-+ sbpci_ban(simple_strtoul(str + 4, NULL, 0));
-+ return NULL;
-+ }
-+
-+ return (str);
-+}
-+
-+static u32 pci_iobase = 0x100;
-+static u32 pci_membase = SB_PCI_DMA;
-+
-+void __init
-+pcibios_fixup_bus(struct pci_bus *b)
-+{
-+ struct list_head *ln;
-+ struct pci_dev *d;
-+ struct resource *res;
-+ int pos, size;
-+ u32 *base;
-+ u8 irq;
-+
-+ printk("PCI: Fixing up bus %d\n", b->number);
-+
-+ /* Fix up SB */
-+ if (b->number == 0) {
-+ for (ln = b->devices.next; ln != &b->devices; ln = ln->next) {
-+ d = pci_dev_b(ln);
-+ /* Fix up interrupt lines */
-+ pci_read_config_byte(d, PCI_INTERRUPT_LINE, &irq);
-+ d->irq = irq + 2;
-+ pci_write_config_byte(d, PCI_INTERRUPT_LINE, d->irq);
-+ }
-+ }
-+
-+ /* Fix up external PCI */
-+ else {
-+ for (ln = b->devices.next; ln != &b->devices; ln = ln->next) {
-+ d = pci_dev_b(ln);
-+ /* Fix up resource bases */
-+ for (pos = 0; pos < 6; pos++) {
-+ res = &d->resource[pos];
-+ base = (res->flags & IORESOURCE_IO) ? &pci_iobase : &pci_membase;
-+ if (res->end) {
-+ size = res->end - res->start + 1;
-+ if (*base & (size - 1))
-+ *base = (*base + size) & ~(size - 1);
-+ res->start = *base;
-+ res->end = res->start + size - 1;
-+ *base += size;
-+ pci_write_config_dword(d,
-+ PCI_BASE_ADDRESS_0 + (pos << 2), res->start);
-+ }
-+ /* Fix up PCI bridge BAR0 only */
-+ if (b->number == 1 && PCI_SLOT(d->devfn) == 0)
-+ break;
-+ }
-+ /* Fix up interrupt lines */
-+ if (pci_find_device(VENDOR_BROADCOM, SB_PCI, NULL))
-+ d->irq = (pci_find_device(VENDOR_BROADCOM, SB_PCI, NULL))->irq;
-+ pci_write_config_byte(d, PCI_INTERRUPT_LINE, d->irq);
-+ }
-+ }
-+}
-+
-+unsigned int
-+pcibios_assign_all_busses(void)
-+{
-+ return 1;
-+}
-+
-+void
-+pcibios_align_resource(void *data, struct resource *res,
-+ unsigned long size, unsigned long align)
-+{
-+}
-+
-+int
-+pcibios_enable_resources(struct pci_dev *dev)
-+{
-+ u16 cmd, old_cmd;
-+ int idx;
-+ struct resource *r;
-+
-+ /* External PCI only */
-+ if (dev->bus->number == 0)
-+ return 0;
-+
-+ pci_read_config_word(dev, PCI_COMMAND, &cmd);
-+ old_cmd = cmd;
-+ for (idx = 0; idx < 6; idx++) {
-+ r = &dev->resource[idx];
-+ if (r->flags & IORESOURCE_IO)
-+ cmd |= PCI_COMMAND_IO;
-+ if (r->flags & IORESOURCE_MEM)
-+ cmd |= PCI_COMMAND_MEMORY;
-+ }
-+ if (dev->resource[PCI_ROM_RESOURCE].start)
-+ cmd |= PCI_COMMAND_MEMORY;
-+ if (cmd != old_cmd) {
-+ printk("PCI: Enabling device %s (%04x -> %04x)\n", dev->slot_name, old_cmd, cmd);
-+ pci_write_config_word(dev, PCI_COMMAND, cmd);
-+ }
-+ return 0;
-+}
-+
-+int
-+pcibios_enable_device(struct pci_dev *dev, int mask)
-+{
-+ ulong flags;
-+ uint coreidx;
-+ void *regs;
-+
-+ /* External PCI device enable */
-+ if (dev->bus->number != 0)
-+ return pcibios_enable_resources(dev);
-+
-+ /* These cores come out of reset enabled */
-+ if (dev->device == SB_MIPS ||
-+ dev->device == SB_MIPS33 ||
-+ dev->device == SB_EXTIF ||
-+ dev->device == SB_CC)
-+ return 0;
-+
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ coreidx = sb_coreidx(sbh);
-+ regs = sb_setcoreidx(sbh, PCI_SLOT(dev->devfn));
-+ if (!regs)
-+ return PCIBIOS_DEVICE_NOT_FOUND;
-+
-+ /*
-+ * The USB core requires a special bit to be set during core
-+ * reset to enable host (OHCI) mode. Resetting the SB core in
-+ * pcibios_enable_device() is a hack for compatibility with
-+ * vanilla usb-ohci so that it does not have to know about
-+ * SB. A driver that wants to use the USB core in device mode
-+ * should know about SB and should reset the bit back to 0
-+ * after calling pcibios_enable_device().
-+ */
-+ if (sb_coreid(sbh) == SB_USB) {
-+ sb_core_disable(sbh, sb_coreflags(sbh, 0, 0));
-+ sb_core_reset(sbh, 1 << 29, 0);
-+ }
-+ /*
-+ * USB 2.0 special considerations:
-+ *
-+ * 1. Since the core supports both OHCI and EHCI functions, it must
-+ * only be reset once.
-+ *
-+ * 2. In addition to the standard SB reset sequence, the Host Control
-+ * Register must be programmed to bring the USB core and various
-+ * phy components out of reset.
-+ */
-+ else if (sb_coreid(sbh) == SB_USB20H) {
-+ if (!sb_iscoreup(sbh)) {
-+ sb_core_reset(sbh, 0, 0);
-+ writel(0x7FF, (ulong)regs + 0x200);
-+ udelay(1);
-+ }
-+ } else
-+ sb_core_reset(sbh, 0, 0);
-+
-+ sb_setcoreidx(sbh, coreidx);
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+
-+ return 0;
-+}
-+
-+void
-+pcibios_update_resource(struct pci_dev *dev, struct resource *root,
-+ struct resource *res, int resource)
-+{
-+ unsigned long where, size;
-+ u32 reg;
-+
-+ /* External PCI only */
-+ if (dev->bus->number == 0)
-+ return;
-+
-+ where = PCI_BASE_ADDRESS_0 + (resource * 4);
-+ size = res->end - res->start;
-+ pci_read_config_dword(dev, where, &reg);
-+ reg = (reg & size) | (((u32)(res->start - root->start)) & ~size);
-+ pci_write_config_dword(dev, where, reg);
-+}
-+
-+static void __init
-+quirk_sbpci_bridge(struct pci_dev *dev)
-+{
-+ if (dev->bus->number != 1 || PCI_SLOT(dev->devfn) != 0)
-+ return;
-+
-+ printk("PCI: Fixing up bridge\n");
-+
-+ /* Enable PCI bridge bus mastering and memory space */
-+ pci_set_master(dev);
-+ pcibios_enable_resources(dev);
-+
-+ /* Enable PCI bridge BAR1 prefetch and burst */
-+ pci_write_config_dword(dev, PCI_BAR1_CONTROL, 3);
-+}
-+
-+struct pci_fixup pcibios_fixups[] = {
-+ { PCI_FIXUP_HEADER, PCI_ANY_ID, PCI_ANY_ID, quirk_sbpci_bridge },
-+ { 0 }
-+};
-+
-+/*
-+ * If we set up a device for bus mastering, we need to check the latency
-+ * timer as certain crappy BIOSes forget to set it properly.
-+ */
-+unsigned int pcibios_max_latency = 255;
-+
-+void pcibios_set_master(struct pci_dev *dev)
-+{
-+ u8 lat;
-+ pci_read_config_byte(dev, PCI_LATENCY_TIMER, &lat);
-+ if (lat < 16)
-+ lat = (64 <= pcibios_max_latency) ? 64 : pcibios_max_latency;
-+ else if (lat > pcibios_max_latency)
-+ lat = pcibios_max_latency;
-+ else
-+ return;
-+ printk(KERN_DEBUG "PCI: Setting latency timer of device %s to %d\n", dev->slot_name, lat);
-+ pci_write_config_byte(dev, PCI_LATENCY_TIMER, lat);
-+}
-+
-diff -urN linux.old/arch/mips/bcm947xx/prom.c linux.dev/arch/mips/bcm947xx/prom.c
---- linux.old/arch/mips/bcm947xx/prom.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/prom.c 2006-04-27 19:24:19.000000000 +0200
-@@ -0,0 +1,41 @@
-+/*
-+ * Early initialization code for BCM94710 boards
-+ *
-+ * Copyright 2004, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: prom.c,v 1.1 2005/03/16 13:49:59 wbx Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/types.h>
-+#include <asm/bootinfo.h>
-+
-+void __init
-+prom_init(int argc, const char **argv)
-+{
-+ unsigned long mem;
-+
-+ mips_machgroup = MACH_GROUP_BRCM;
-+ mips_machtype = MACH_BCM947XX;
-+
-+ /* Figure out memory size by finding aliases */
-+ for (mem = (1 << 20); mem < (128 << 20); mem += (1 << 20)) {
-+ if (*(unsigned long *)((unsigned long)(prom_init) + mem) ==
-+ *(unsigned long *)(prom_init))
-+ break;
-+ }
-+ add_memory_region(0, mem, BOOT_MEM_RAM);
-+}
-+
-+void __init
-+prom_free_prom_memory(void)
-+{
-+}
-diff -urN linux.old/arch/mips/bcm947xx/sbmips.c linux.dev/arch/mips/bcm947xx/sbmips.c
---- linux.old/arch/mips/bcm947xx/sbmips.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/sbmips.c 2006-05-02 04:43:13.000000000 +0200
-@@ -0,0 +1,1132 @@
-+/*
-+ * BCM47XX Sonics SiliconBackplane MIPS core routines
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: hndmips.c,v 1.1.1.1 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#include <typedefs.h>
-+#include <bcmdefs.h>
-+#include <osl.h>
-+#include <bcmutils.h>
-+#include <sbutils.h>
-+#include <bcmdevs.h>
-+#include <bcmnvram.h>
-+#include <sbconfig.h>
-+#include <sbextif.h>
-+#include <sbchipc.h>
-+#include <sbmemc.h>
-+#include <mipsinc.h>
-+#include <sbhndmips.h>
-+#include <hndcpu.h>
-+
-+/* sbipsflag register format, indexed by irq. */
-+static const uint32 sbips_int_mask[] = {
-+ 0, /* placeholder */
-+ SBIPS_INT1_MASK,
-+ SBIPS_INT2_MASK,
-+ SBIPS_INT3_MASK,
-+ SBIPS_INT4_MASK
-+};
-+
-+static const uint32 sbips_int_shift[] = {
-+ 0, /* placeholder */
-+ SBIPS_INT1_SHIFT,
-+ SBIPS_INT2_SHIFT,
-+ SBIPS_INT3_SHIFT,
-+ SBIPS_INT4_SHIFT
-+};
-+
-+/*
-+ * Map SB cores sharing the MIPS hardware IRQ0 to virtual dedicated OS IRQs.
-+ * Per-port BSP code is required to provide necessary translations between
-+ * the shared MIPS IRQ and the virtual OS IRQs based on SB core flag.
-+ *
-+ * See sb_irq() for the mapping.
-+ */
-+static uint shirq_map_base = 0;
-+
-+/* Returns the SB interrupt flag of the current core. */
-+static uint32
-+sb_getflag(sb_t *sbh)
-+{
-+ osl_t *osh;
-+ void *regs;
-+ sbconfig_t *sb;
-+
-+ osh = sb_osh(sbh);
-+ regs = sb_coreregs(sbh);
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+
-+ return (R_REG(osh, &sb->sbtpsflag) & SBTPS_NUM0_MASK);
-+}
-+
-+/*
-+ * Returns the MIPS IRQ assignment of the current core. If unassigned,
-+ * 0 is returned.
-+ */
-+uint
-+sb_irq(sb_t *sbh)
-+{
-+ osl_t *osh;
-+ uint idx;
-+ void *regs;
-+ sbconfig_t *sb;
-+ uint32 flag, sbipsflag;
-+ uint irq = 0;
-+
-+ osh = sb_osh(sbh);
-+ flag = sb_getflag(sbh);
-+
-+ idx = sb_coreidx(sbh);
-+
-+ if ((regs = sb_setcore(sbh, SB_MIPS, 0)) ||
-+ (regs = sb_setcore(sbh, SB_MIPS33, 0))) {
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+
-+ /* sbipsflag specifies which core is routed to interrupts 1 to 4 */
-+ sbipsflag = R_REG(osh, &sb->sbipsflag);
-+ for (irq = 1; irq <= 4; irq++) {
-+ if (((sbipsflag & sbips_int_mask[irq]) >> sbips_int_shift[irq]) == flag)
-+ break;
-+ }
-+ if (irq == 5)
-+ irq = 0;
-+ }
-+
-+ sb_setcoreidx(sbh, idx);
-+
-+ return irq;
-+}
-+
-+/* Clears the specified MIPS IRQ. */
-+static void
-+BCMINITFN(sb_clearirq)(sb_t *sbh, uint irq)
-+{
-+ osl_t *osh;
-+ void *regs;
-+ sbconfig_t *sb;
-+
-+ osh = sb_osh(sbh);
-+
-+ if (!(regs = sb_setcore(sbh, SB_MIPS, 0)) &&
-+ !(regs = sb_setcore(sbh, SB_MIPS33, 0)))
-+ ASSERT(regs);
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+
-+ if (irq == 0)
-+ W_REG(osh, &sb->sbintvec, 0);
-+ else
-+ OR_REG(osh, &sb->sbipsflag, sbips_int_mask[irq]);
-+}
-+
-+/*
-+ * Assigns the specified MIPS IRQ to the specified core. Shared MIPS
-+ * IRQ 0 may be assigned more than once.
-+ *
-+ * The old assignment to the specified core is removed first.
-+ */
-+static void
-+BCMINITFN(sb_setirq)(sb_t *sbh, uint irq, uint coreid, uint coreunit)
-+{
-+ osl_t *osh;
-+ void *regs;
-+ sbconfig_t *sb;
-+ uint32 flag;
-+ uint oldirq;
-+
-+ osh = sb_osh(sbh);
-+
-+ regs = sb_setcore(sbh, coreid, coreunit);
-+ ASSERT(regs);
-+ flag = sb_getflag(sbh);
-+ oldirq = sb_irq(sbh);
-+ if (oldirq)
-+ sb_clearirq(sbh, oldirq);
-+
-+ if (!(regs = sb_setcore(sbh, SB_MIPS, 0)) &&
-+ !(regs = sb_setcore(sbh, SB_MIPS33, 0)))
-+ ASSERT(regs);
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+
-+ if (!oldirq)
-+ AND_REG(osh, &sb->sbintvec, ~(1 << flag));
-+
-+ if (irq == 0)
-+ OR_REG(osh, &sb->sbintvec, 1 << flag);
-+ else {
-+ flag <<= sbips_int_shift[irq];
-+ ASSERT(!(flag & ~sbips_int_mask[irq]));
-+ flag |= R_REG(osh, &sb->sbipsflag) & ~sbips_int_mask[irq];
-+ W_REG(osh, &sb->sbipsflag, flag);
-+ }
-+}
-+
-+/*
-+ * Initializes clocks and interrupts. SB and NVRAM access must be
-+ * initialized prior to calling.
-+ *
-+ * 'shirqmap' enables virtual dedicated OS IRQ mapping if non-zero.
-+ */
-+void
-+BCMINITFN(sb_mips_init)(sb_t *sbh, uint shirqmap)
-+{
-+ osl_t *osh;
-+ ulong hz, ns, tmp;
-+ extifregs_t *eir;
-+ chipcregs_t *cc;
-+ char *value;
-+ uint irq;
-+
-+ osh = sb_osh(sbh);
-+
-+ /* Figure out current SB clock speed */
-+ if ((hz = sb_clock(sbh)) == 0)
-+ hz = 100000000;
-+ ns = 1000000000 / hz;
-+
-+ /* Setup external interface timing */
-+ if ((eir = sb_setcore(sbh, SB_EXTIF, 0))) {
-+ /* Initialize extif so we can get to the LEDs and external UART */
-+ W_REG(osh, &eir->prog_config, CF_EN);
-+
-+ /* Set timing for the flash */
-+ tmp = CEIL(10, ns) << FW_W3_SHIFT; /* W3 = 10nS */
-+ tmp = tmp | (CEIL(40, ns) << FW_W1_SHIFT); /* W1 = 40nS */
-+ tmp = tmp | CEIL(120, ns); /* W0 = 120nS */
-+ W_REG(osh, &eir->prog_waitcount, tmp); /* 0x01020a0c for a 100Mhz clock */
-+
-+ /* Set programmable interface timing for external uart */
-+ tmp = CEIL(10, ns) << FW_W3_SHIFT; /* W3 = 10nS */
-+ tmp = tmp | (CEIL(20, ns) << FW_W2_SHIFT); /* W2 = 20nS */
-+ tmp = tmp | (CEIL(100, ns) << FW_W1_SHIFT); /* W1 = 100nS */
-+ tmp = tmp | CEIL(120, ns); /* W0 = 120nS */
-+ W_REG(osh, &eir->prog_waitcount, tmp); /* 0x01020a0c for a 100Mhz clock */
-+ } else if ((cc = sb_setcore(sbh, SB_CC, 0))) {
-+ /* Set timing for the flash */
-+ tmp = CEIL(10, ns) << FW_W3_SHIFT; /* W3 = 10nS */
-+ tmp |= CEIL(10, ns) << FW_W1_SHIFT; /* W1 = 10nS */
-+ tmp |= CEIL(120, ns); /* W0 = 120nS */
-+ if ((sb_corerev(sbh) < 9) ||
-+ (BCMINIT(sb_chip)(sbh) == 0x5365))
-+ W_REG(osh, &cc->flash_waitcount, tmp);
-+
-+ if ((sb_corerev(sbh) < 9) ||
-+ ((sb_chip(sbh) == BCM5350_CHIP_ID) && sb_chiprev(sbh) == 0) ||
-+ (BCMINIT(sb_chip)(sbh) == 0x5365)) {
-+ W_REG(osh, &cc->pcmcia_memwait, tmp);
-+ }
-+
-+ /* Save shared IRQ mapping base */
-+ shirq_map_base = shirqmap;
-+ }
-+
-+ /* Chip specific initialization */
-+ switch (sb_chip(sbh)) {
-+ case BCM4710_CHIP_ID:
-+ /* Clear interrupt map */
-+ for (irq = 0; irq <= 4; irq++)
-+ sb_clearirq(sbh, irq);
-+ sb_setirq(sbh, 0, SB_CODEC, 0);
-+ sb_setirq(sbh, 0, SB_EXTIF, 0);
-+ sb_setirq(sbh, 2, SB_ENET, 1);
-+ sb_setirq(sbh, 3, SB_ILINE20, 0);
-+ sb_setirq(sbh, 4, SB_PCI, 0);
-+ ASSERT(eir);
-+ value = nvram_get("et0phyaddr");
-+ if (value && !strcmp(value, "31")) {
-+ /* Enable internal UART */
-+ W_REG(osh, &eir->corecontrol, CC_UE);
-+ /* Give USB its own interrupt */
-+ sb_setirq(sbh, 1, SB_USB, 0);
-+ } else {
-+ /* Disable internal UART */
-+ W_REG(osh, &eir->corecontrol, 0);
-+ /* Give Ethernet its own interrupt */
-+ sb_setirq(sbh, 1, SB_ENET, 0);
-+ sb_setirq(sbh, 0, SB_USB, 0);
-+ }
-+ break;
-+ case BCM5350_CHIP_ID:
-+ /* Clear interrupt map */
-+ for (irq = 0; irq <= 4; irq++)
-+ sb_clearirq(sbh, irq);
-+ sb_setirq(sbh, 0, SB_CC, 0);
-+ sb_setirq(sbh, 0, SB_MIPS33, 0);
-+ sb_setirq(sbh, 1, SB_D11, 0);
-+ sb_setirq(sbh, 2, SB_ENET, 0);
-+ sb_setirq(sbh, 3, SB_PCI, 0);
-+ sb_setirq(sbh, 4, SB_USB, 0);
-+ break;
-+ case BCM4785_CHIP_ID:
-+ /* Reassign PCI to irq 4 */
-+ sb_setirq(sbh, 4, SB_PCI, 0);
-+ break;
-+ }
-+}
-+
-+uint32
-+BCMINITFN(sb_cpu_clock)(sb_t *sbh)
-+{
-+ extifregs_t *eir;
-+ chipcregs_t *cc;
-+ uint32 n, m;
-+ uint idx;
-+ uint32 pll_type, rate = 0;
-+
-+ /* get index of the current core */
-+ idx = sb_coreidx(sbh);
-+ pll_type = PLL_TYPE1;
-+
-+ /* switch to extif or chipc core */
-+ if ((eir = (extifregs_t *) sb_setcore(sbh, SB_EXTIF, 0))) {
-+ n = R_REG(osh, &eir->clockcontrol_n);
-+ m = R_REG(osh, &eir->clockcontrol_sb);
-+ } else if ((cc = (chipcregs_t *) sb_setcore(sbh, SB_CC, 0))) {
-+ pll_type = R_REG(osh, &cc->capabilities) & CAP_PLL_MASK;
-+ n = R_REG(osh, &cc->clockcontrol_n);
-+ if ((pll_type == PLL_TYPE2) ||
-+ (pll_type == PLL_TYPE4) ||
-+ (pll_type == PLL_TYPE6) ||
-+ (pll_type == PLL_TYPE7))
-+ m = R_REG(osh, &cc->clockcontrol_m3);
-+ else if (pll_type == PLL_TYPE5) {
-+ rate = 200000000;
-+ goto out;
-+ }
-+ else if (pll_type == PLL_TYPE3) {
-+ if (sb_chip(sbh) == BCM5365_CHIP_ID) {
-+ rate = 200000000;
-+ goto out;
-+ }
-+ /* 5350 uses m2 to control mips */
-+ else
-+ m = R_REG(osh, &cc->clockcontrol_m2);
-+ } else
-+ m = R_REG(osh, &cc->clockcontrol_sb);
-+ } else
-+ goto out;
-+
-+
-+ /* calculate rate */
-+ if (BCMINIT(sb_chip)(sbh) == 0x5365)
-+ rate = 100000000;
-+ else
-+ rate = sb_clock_rate(pll_type, n, m);
-+
-+ if (pll_type == PLL_TYPE6)
-+ rate = SB2MIPS_T6(rate);
-+
-+out:
-+ /* switch back to previous core */
-+ sb_setcoreidx(sbh, idx);
-+
-+ return rate;
-+}
-+
-+#define ALLINTS (IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4)
-+
-+static void
-+BCMINITFN(handler)(void)
-+{
-+ __asm__(
-+ ".set\tmips32\n\t"
-+ "ssnop\n\t"
-+ "ssnop\n\t"
-+ /* Disable interrupts */
-+ /* MTC0(C0_STATUS, 0, MFC0(C0_STATUS, 0) & ~(ALLINTS | STO_IE)); */
-+ "mfc0 $15, $12\n\t"
-+ /* Just a Hack to not to use reg 'at' which was causing problems on 4704 A2 */
-+ "li $14, -31746\n\t"
-+ "and $15, $15, $14\n\t"
-+ "mtc0 $15, $12\n\t"
-+ "eret\n\t"
-+ "nop\n\t"
-+ "nop\n\t"
-+ ".set\tmips0");
-+}
-+
-+/* The following MUST come right after handler() */
-+static void
-+BCMINITFN(afterhandler)(void)
-+{
-+}
-+
-+/*
-+ * Set the MIPS, backplane and PCI clocks as closely as possible.
-+ *
-+ * MIPS clocks synchronization function has been moved from PLL in chipcommon
-+ * core rev. 15 to a DLL inside the MIPS core in 4785.
-+ */
-+bool
-+BCMINITFN(sb_mips_setclock)(sb_t *sbh, uint32 mipsclock, uint32 sbclock, uint32 pciclock)
-+{
-+ extifregs_t *eir = NULL;
-+ chipcregs_t *cc = NULL;
-+ mipsregs_t *mipsr = NULL;
-+ volatile uint32 *clockcontrol_n, *clockcontrol_sb, *clockcontrol_pci, *clockcontrol_m2;
-+ uint32 orig_n, orig_sb, orig_pci, orig_m2, orig_mips, orig_ratio_parm, orig_ratio_cfg;
-+ uint32 pll_type, sync_mode;
-+ uint ic_size, ic_lsize;
-+ uint idx, i;
-+
-+ /* PLL configuration: type 1 */
-+ typedef struct {
-+ uint32 mipsclock;
-+ uint16 n;
-+ uint32 sb;
-+ uint32 pci33;
-+ uint32 pci25;
-+ } n3m_table_t;
-+ static n3m_table_t BCMINITDATA(type1_table)[] = {
-+ /* 96.000 32.000 24.000 */
-+ { 96000000, 0x0303, 0x04020011, 0x11030011, 0x11050011 },
-+ /* 100.000 33.333 25.000 */
-+ { 100000000, 0x0009, 0x04020011, 0x11030011, 0x11050011 },
-+ /* 104.000 31.200 24.960 */
-+ { 104000000, 0x0802, 0x04020011, 0x11050009, 0x11090009 },
-+ /* 108.000 32.400 24.923 */
-+ { 108000000, 0x0403, 0x04020011, 0x11050009, 0x02000802 },
-+ /* 112.000 32.000 24.889 */
-+ { 112000000, 0x0205, 0x04020011, 0x11030021, 0x02000403 },
-+ /* 115.200 32.000 24.000 */
-+ { 115200000, 0x0303, 0x04020009, 0x11030011, 0x11050011 },
-+ /* 120.000 30.000 24.000 */
-+ { 120000000, 0x0011, 0x04020011, 0x11050011, 0x11090011 },
-+ /* 124.800 31.200 24.960 */
-+ { 124800000, 0x0802, 0x04020009, 0x11050009, 0x11090009 },
-+ /* 128.000 32.000 24.000 */
-+ { 128000000, 0x0305, 0x04020011, 0x11050011, 0x02000305 },
-+ /* 132.000 33.000 24.750 */
-+ { 132000000, 0x0603, 0x04020011, 0x11050011, 0x02000305 },
-+ /* 136.000 32.640 24.727 */
-+ { 136000000, 0x0c02, 0x04020011, 0x11090009, 0x02000603 },
-+ /* 140.000 30.000 24.706 */
-+ { 140000000, 0x0021, 0x04020011, 0x11050021, 0x02000c02 },
-+ /* 144.000 30.857 24.686 */
-+ { 144000000, 0x0405, 0x04020011, 0x01020202, 0x11090021 },
-+ /* 150.857 33.000 24.000 */
-+ { 150857142, 0x0605, 0x04020021, 0x02000305, 0x02000605 },
-+ /* 152.000 32.571 24.000 */
-+ { 152000000, 0x0e02, 0x04020011, 0x11050021, 0x02000e02 },
-+ /* 156.000 31.200 24.960 */
-+ { 156000000, 0x0802, 0x04020005, 0x11050009, 0x11090009 },
-+ /* 160.000 32.000 24.000 */
-+ { 160000000, 0x0309, 0x04020011, 0x11090011, 0x02000309 },
-+ /* 163.200 32.640 24.727 */
-+ { 163200000, 0x0c02, 0x04020009, 0x11090009, 0x02000603 },
-+ /* 168.000 32.000 24.889 */
-+ { 168000000, 0x0205, 0x04020005, 0x11030021, 0x02000403 },
-+ /* 176.000 33.000 24.000 */
-+ { 176000000, 0x0602, 0x04020003, 0x11050005, 0x02000602 },
-+ };
-+
-+ /* PLL configuration: type 3 */
-+ typedef struct {
-+ uint32 mipsclock;
-+ uint16 n;
-+ uint32 m2; /* that is the clockcontrol_m2 */
-+ } type3_table_t;
-+ static type3_table_t type3_table[] = {
-+ /* for 5350, mips clock is always double sb clock */
-+ { 150000000, 0x311, 0x4020005 },
-+ { 200000000, 0x311, 0x4020003 },
-+ };
-+
-+ /* PLL configuration: type 2, 4, 7 */
-+ typedef struct {
-+ uint32 mipsclock;
-+ uint32 sbclock;
-+ uint16 n;
-+ uint32 sb;
-+ uint32 pci33;
-+ uint32 m2;
-+ uint32 m3;
-+ uint32 ratio_cfg;
-+ uint32 ratio_parm;
-+ uint32 d11_r1;
-+ uint32 d11_r2;
-+ } n4m_table_t;
-+ static n4m_table_t BCMINITDATA(type2_table)[] = {
-+ { 120000000, 60000000, 0x0303, 0x01000200, 0x01000600, 0x01000200, 0x05000200, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 150000000, 75000000, 0x0303, 0x01000100, 0x01000600, 0x01000100, 0x05000100, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 180000000, 80000000, 0x0403, 0x01010000, 0x01020300, 0x01020600, 0x05000100, 8,
-+ 0x012a00a9, 9 /* ratio 4/9 */, 0x012a00a9 },
-+ { 180000000, 90000000, 0x0403, 0x01000100, 0x01020300, 0x01000100, 0x05000100, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 200000000, 100000000, 0x0303, 0x02010000, 0x02040001, 0x02010000, 0x06000001, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 211200000, 105600000, 0x0902, 0x01000200, 0x01030400, 0x01000200, 0x05000200, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 220800000, 110400000, 0x1500, 0x01000200, 0x01030400, 0x01000200, 0x05000200, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 230400000, 115200000, 0x0604, 0x01000200, 0x01020600, 0x01000200, 0x05000200, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 234000000, 104000000, 0x0b01, 0x01010000, 0x01010700, 0x01020600, 0x05000100, 8,
-+ 0x012a00a9, 9 /* ratio 4/9 */, 0x012a00a9 },
-+ { 240000000, 120000000, 0x0803, 0x01000200, 0x01020600, 0x01000200, 0x05000200, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 252000000, 126000000, 0x0504, 0x01000100, 0x01020500, 0x01000100, 0x05000100, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 264000000, 132000000, 0x0903, 0x01000200, 0x01020700, 0x01000200, 0x05000200, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 270000000, 120000000, 0x0703, 0x01010000, 0x01030400, 0x01020600, 0x05000100, 8,
-+ 0x012a00a9, 9 /* ratio 4/9 */, 0x012a00a9 },
-+ { 276000000, 122666666, 0x1500, 0x01010000, 0x01030400, 0x01020600, 0x05000100, 8,
-+ 0x012a00a9, 9 /* ratio 4/9 */, 0x012a00a9 },
-+ { 280000000, 140000000, 0x0503, 0x01000000, 0x01010600, 0x01000000, 0x05000000, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 288000000, 128000000, 0x0604, 0x01010000, 0x01030400, 0x01020600, 0x05000100, 8,
-+ 0x012a00a9, 9 /* ratio 4/9 */, 0x012a00a9 },
-+ { 288000000, 144000000, 0x0404, 0x01000000, 0x01010600, 0x01000000, 0x05000000, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 300000000, 133333333, 0x0803, 0x01010000, 0x01020600, 0x01010100, 0x05000100, 8,
-+ 0x012a00a9, 9 /* ratio 4/9 */, 0x012a00a9 },
-+ { 300000000, 150000000, 0x0803, 0x01000100, 0x01020600, 0x01010100, 0x05000100, 11,
-+ 0x0aaa0555, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 330000000, 132000000, 0x0903, 0x01000200, 0x00020200, 0x01010100, 0x05000100, 0,
-+ 0, 10 /* ratio 4/10 */, 0x02520129 },
-+ { 330000000, 146666666, 0x0903, 0x01010000, 0x00020200, 0x01010100, 0x05000100, 0,
-+ 0, 9 /* ratio 4/9 */, 0x012a00a9 },
-+ { 330000000, 165000000, 0x0903, 0x01000100, 0x00020200, 0x01010100, 0x05000100, 0,
-+ 0, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 360000000, 120000000, 0x0a03, 0x01000300, 0x00010201, 0x01010200, 0x05000100, 0,
-+ 0, 12 /* ratio 4/12 */, 0x04920492 },
-+ { 360000000, 144000000, 0x0a03, 0x01000200, 0x00010201, 0x01010200, 0x05000100, 0,
-+ 0, 10 /* ratio 4/10 */, 0x02520129 },
-+ { 360000000, 160000000, 0x0a03, 0x01010000, 0x00010201, 0x01010200, 0x05000100, 0,
-+ 0, 9 /* ratio 4/9 */, 0x012a00a9 },
-+ { 360000000, 180000000, 0x0a03, 0x01000100, 0x00010201, 0x01010200, 0x05000100, 0,
-+ 0, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ { 390000000, 130000000, 0x0b03, 0x01010100, 0x00020101, 0x01020100, 0x05000100, 0,
-+ 0, 12 /* ratio 4/12 */, 0x04920492 },
-+ { 390000000, 156000000, 0x0b03, 0x01000200, 0x00020101, 0x01020100, 0x05000100, 0,
-+ 0, 10 /* ratio 4/10 */, 0x02520129 },
-+ { 390000000, 173000000, 0x0b03, 0x01010000, 0x00020101, 0x01020100, 0x05000100, 0,
-+ 0, 9 /* ratio 4/9 */, 0x012a00a9 },
-+ { 390000000, 195000000, 0x0b03, 0x01000100, 0x00020101, 0x01020100, 0x05000100, 0,
-+ 0, 8 /* ratio 4/8 */, 0x00aa0055 },
-+ };
-+ static n4m_table_t BCMINITDATA(type4_table)[] = {
-+ { 120000000, 60000000, 0x0009, 0x11020009, 0x01030203, 0x11020009, 0x04000009, 11,
-+ 0x0aaa0555 },
-+ { 150000000, 75000000, 0x0009, 0x11050002, 0x01030203, 0x11050002, 0x04000005, 11,
-+ 0x0aaa0555 },
-+ { 192000000, 96000000, 0x0702, 0x04000011, 0x11030011, 0x04000011, 0x04000003, 11,
-+ 0x0aaa0555 },
-+ { 198000000, 99000000, 0x0603, 0x11020005, 0x11030011, 0x11020005, 0x04000005, 11,
-+ 0x0aaa0555 },
-+ { 200000000, 100000000, 0x0009, 0x04020011, 0x11030011, 0x04020011, 0x04020003, 11,
-+ 0x0aaa0555 },
-+ { 204000000, 102000000, 0x0c02, 0x11020005, 0x01030303, 0x11020005, 0x04000005, 11,
-+ 0x0aaa0555 },
-+ { 208000000, 104000000, 0x0802, 0x11030002, 0x11090005, 0x11030002, 0x04000003, 11,
-+ 0x0aaa0555 },
-+ { 210000000, 105000000, 0x0209, 0x11020005, 0x01030303, 0x11020005, 0x04000005, 11,
-+ 0x0aaa0555 },
-+ { 216000000, 108000000, 0x0111, 0x11020005, 0x01030303, 0x11020005, 0x04000005, 11,
-+ 0x0aaa0555 },
-+ { 224000000, 112000000, 0x0205, 0x11030002, 0x02002103, 0x11030002, 0x04000003, 11,
-+ 0x0aaa0555 },
-+ { 228000000, 101333333, 0x0e02, 0x11030003, 0x11210005, 0x01030305, 0x04000005, 8,
-+ 0x012a00a9 },
-+ { 228000000, 114000000, 0x0e02, 0x11020005, 0x11210005, 0x11020005, 0x04000005, 11,
-+ 0x0aaa0555 },
-+ { 240000000, 102857143, 0x0109, 0x04000021, 0x01050203, 0x11030021, 0x04000003, 13,
-+ 0x254a14a9 },
-+ { 240000000, 120000000, 0x0109, 0x11030002, 0x01050203, 0x11030002, 0x04000003, 11,
-+ 0x0aaa0555 },
-+ { 252000000, 100800000, 0x0203, 0x04000009, 0x11050005, 0x02000209, 0x04000002, 9,
-+ 0x02520129 },
-+ { 252000000, 126000000, 0x0203, 0x04000005, 0x11050005, 0x04000005, 0x04000002, 11,
-+ 0x0aaa0555 },
-+ { 264000000, 132000000, 0x0602, 0x04000005, 0x11050005, 0x04000005, 0x04000002, 11,
-+ 0x0aaa0555 },
-+ { 272000000, 116571428, 0x0c02, 0x04000021, 0x02000909, 0x02000221, 0x04000003, 13,
-+ 0x254a14a9 },
-+ { 280000000, 120000000, 0x0209, 0x04000021, 0x01030303, 0x02000221, 0x04000003, 13,
-+ 0x254a14a9 },
-+ { 288000000, 123428571, 0x0111, 0x04000021, 0x01030303, 0x02000221, 0x04000003, 13,
-+ 0x254a14a9 },
-+ { 300000000, 120000000, 0x0009, 0x04000009, 0x01030203, 0x02000902, 0x04000002, 9,
-+ 0x02520129 },
-+ { 300000000, 150000000, 0x0009, 0x04000005, 0x01030203, 0x04000005, 0x04000002, 11,
-+ 0x0aaa0555 }
-+ };
-+ static n4m_table_t BCMINITDATA(type7_table)[] = {
-+ { 183333333, 91666666, 0x0605, 0x04000011, 0x11030011, 0x04000011, 0x04000003, 11,
-+ 0x0aaa0555 },
-+ { 187500000, 93750000, 0x0a03, 0x04000011, 0x11030011, 0x04000011, 0x04000003, 11,
-+ 0x0aaa0555 },
-+ { 196875000, 98437500, 0x1003, 0x11020005, 0x11050011, 0x11020005, 0x04000005, 11,
-+ 0x0aaa0555 },
-+ { 200000000, 100000000, 0x0311, 0x04000011, 0x11030011, 0x04000009, 0x04000003, 11,
-+ 0x0aaa0555 },
-+ { 200000000, 100000000, 0x0311, 0x04020011, 0x11030011, 0x04020011, 0x04020003, 11,
-+ 0x0aaa0555 },
-+ { 206250000, 103125000, 0x1103, 0x11020005, 0x11050011, 0x11020005, 0x04000005, 11,
-+ 0x0aaa0555 },
-+ { 212500000, 106250000, 0x0c05, 0x11020005, 0x01030303, 0x11020005, 0x04000005, 11,
-+ 0x0aaa0555 },
-+ { 215625000, 107812500, 0x1203, 0x11090009, 0x11050005, 0x11020005, 0x04000005, 11,
-+ 0x0aaa0555 },
-+ { 216666666, 108333333, 0x0805, 0x11020003, 0x11030011, 0x11020003, 0x04000003, 11,
-+ 0x0aaa0555 },
-+ { 225000000, 112500000, 0x0d03, 0x11020003, 0x11030011, 0x11020003, 0x04000003, 11,
-+ 0x0aaa0555 },
-+ { 233333333, 116666666, 0x0905, 0x11020003, 0x11030011, 0x11020003, 0x04000003, 11,
-+ 0x0aaa0555 },
-+ { 237500000, 118750000, 0x0e05, 0x11020005, 0x11210005, 0x11020005, 0x04000005, 11,
-+ 0x0aaa0555 },
-+ { 240000000, 120000000, 0x0b11, 0x11020009, 0x11210009, 0x11020009, 0x04000009, 11,
-+ 0x0aaa0555 },
-+ { 250000000, 125000000, 0x0f03, 0x11020003, 0x11210003, 0x11020003, 0x04000003, 11,
-+ 0x0aaa0555 }
-+ };
-+
-+ ulong start, end, dst;
-+ bool ret = FALSE;
-+
-+ volatile uint32 *dll_ctrl = (volatile uint32 *)0xff400008;
-+ volatile uint32 *dll_r1 = (volatile uint32 *)0xff400010;
-+ volatile uint32 *dll_r2 = (volatile uint32 *)0xff400018;
-+
-+ /* get index of the current core */
-+ idx = sb_coreidx(sbh);
-+ clockcontrol_m2 = NULL;
-+
-+ /* switch to extif or chipc core */
-+ if ((eir = (extifregs_t *) sb_setcore(sbh, SB_EXTIF, 0))) {
-+ pll_type = PLL_TYPE1;
-+ clockcontrol_n = &eir->clockcontrol_n;
-+ clockcontrol_sb = &eir->clockcontrol_sb;
-+ clockcontrol_pci = &eir->clockcontrol_pci;
-+ clockcontrol_m2 = &cc->clockcontrol_m2;
-+ } else if ((cc = (chipcregs_t *) sb_setcore(sbh, SB_CC, 0))) {
-+ pll_type = R_REG(osh, &cc->capabilities) & CAP_PLL_MASK;
-+ if (pll_type == PLL_TYPE6) {
-+ clockcontrol_n = NULL;
-+ clockcontrol_sb = NULL;
-+ clockcontrol_pci = NULL;
-+ } else {
-+ clockcontrol_n = &cc->clockcontrol_n;
-+ clockcontrol_sb = &cc->clockcontrol_sb;
-+ clockcontrol_pci = &cc->clockcontrol_pci;
-+ clockcontrol_m2 = &cc->clockcontrol_m2;
-+ }
-+ } else
-+ goto done;
-+
-+ if (pll_type == PLL_TYPE6) {
-+ /* Silence compilers */
-+ orig_n = orig_sb = orig_pci = 0;
-+ } else {
-+ /* Store the current clock register values */
-+ orig_n = R_REG(osh, clockcontrol_n);
-+ orig_sb = R_REG(osh, clockcontrol_sb);
-+ orig_pci = R_REG(osh, clockcontrol_pci);
-+ }
-+
-+ if (pll_type == PLL_TYPE1) {
-+ /* Keep the current PCI clock if not specified */
-+ if (pciclock == 0) {
-+ pciclock = sb_clock_rate(pll_type, R_REG(osh, clockcontrol_n),
-+ R_REG(osh, clockcontrol_pci));
-+ pciclock = (pciclock <= 25000000) ? 25000000 : 33000000;
-+ }
-+
-+ /* Search for the closest MIPS clock less than or equal to a preferred value */
-+ for (i = 0; i < ARRAYSIZE(type1_table); i++) {
-+ ASSERT(type1_table[i].mipsclock ==
-+ sb_clock_rate(pll_type, type1_table[i].n,
-+ type1_table[i].sb));
-+ if (type1_table[i].mipsclock > mipsclock)
-+ break;
-+ }
-+ if (i == 0) {
-+ ret = FALSE;
-+ goto done;
-+ } else {
-+ ret = TRUE;
-+ i--;
-+ }
-+ ASSERT(type1_table[i].mipsclock <= mipsclock);
-+
-+ /* No PLL change */
-+ if ((orig_n == type1_table[i].n) &&
-+ (orig_sb == type1_table[i].sb) &&
-+ (orig_pci == type1_table[i].pci33))
-+ goto done;
-+
-+ /* Set the PLL controls */
-+ W_REG(osh, clockcontrol_n, type1_table[i].n);
-+ W_REG(osh, clockcontrol_sb, type1_table[i].sb);
-+ if (pciclock == 25000000)
-+ W_REG(osh, clockcontrol_pci, type1_table[i].pci25);
-+ else
-+ W_REG(osh, clockcontrol_pci, type1_table[i].pci33);
-+
-+ /* Reset */
-+ sb_watchdog(sbh, 1);
-+ while (1);
-+ } else if (pll_type == PLL_TYPE3) {
-+ /* 5350 */
-+ if (sb_chip(sbh) != BCM5365_CHIP_ID) {
-+ /*
-+ * Search for the closest MIPS clock less than or equal to
-+ * a preferred value.
-+ */
-+ for (i = 0; i < ARRAYSIZE(type3_table); i++) {
-+ if (type3_table[i].mipsclock > mipsclock)
-+ break;
-+ }
-+ if (i == 0) {
-+ ret = FALSE;
-+ goto done;
-+ } else {
-+ ret = TRUE;
-+ i--;
-+ }
-+ ASSERT(type3_table[i].mipsclock <= mipsclock);
-+
-+ /* No PLL change */
-+ orig_m2 = R_REG(osh, &cc->clockcontrol_m2);
-+ if ((orig_n == type3_table[i].n) &&
-+ (orig_m2 == type3_table[i].m2)) {
-+ goto done;
-+ }
-+
-+ /* Set the PLL controls */
-+ W_REG(osh, clockcontrol_n, type3_table[i].n);
-+ W_REG(osh, clockcontrol_m2, type3_table[i].m2);
-+
-+ /* Reset */
-+ sb_watchdog(sbh, 1);
-+ while (1);
-+ }
-+ } else if ((pll_type == PLL_TYPE2) ||
-+ (pll_type == PLL_TYPE4) ||
-+ (pll_type == PLL_TYPE6) ||
-+ (pll_type == PLL_TYPE7)) {
-+ n4m_table_t *table = NULL, *te;
-+ uint tabsz = 0;
-+
-+ ASSERT(cc);
-+
-+ orig_mips = R_REG(osh, &cc->clockcontrol_m3);
-+
-+ switch (pll_type) {
-+ case PLL_TYPE6: {
-+ uint32 new_mips = 0;
-+
-+ ret = TRUE;
-+ if (mipsclock <= SB2MIPS_T6(CC_T6_M1))
-+ new_mips = CC_T6_MMASK;
-+
-+ if (orig_mips == new_mips)
-+ goto done;
-+
-+ W_REG(osh, &cc->clockcontrol_m3, new_mips);
-+ goto end_fill;
-+ }
-+ case PLL_TYPE2:
-+ table = type2_table;
-+ tabsz = ARRAYSIZE(type2_table);
-+ break;
-+ case PLL_TYPE4:
-+ table = type4_table;
-+ tabsz = ARRAYSIZE(type4_table);
-+ break;
-+ case PLL_TYPE7:
-+ table = type7_table;
-+ tabsz = ARRAYSIZE(type7_table);
-+ break;
-+ default:
-+ ASSERT("No table for plltype" == NULL);
-+ break;
-+ }
-+
-+ /* Store the current clock register values */
-+ orig_m2 = R_REG(osh, &cc->clockcontrol_m2);
-+ orig_ratio_parm = 0;
-+ orig_ratio_cfg = 0;
-+
-+ /* Look up current ratio */
-+ for (i = 0; i < tabsz; i++) {
-+ if ((orig_n == table[i].n) &&
-+ (orig_sb == table[i].sb) &&
-+ (orig_pci == table[i].pci33) &&
-+ (orig_m2 == table[i].m2) &&
-+ (orig_mips == table[i].m3)) {
-+ orig_ratio_parm = table[i].ratio_parm;
-+ orig_ratio_cfg = table[i].ratio_cfg;
-+ break;
-+ }
-+ }
-+
-+ /* Search for the closest MIPS clock greater or equal to a preferred value */
-+ for (i = 0; i < tabsz; i++) {
-+ ASSERT(table[i].mipsclock ==
-+ sb_clock_rate(pll_type, table[i].n, table[i].m3));
-+ if ((mipsclock <= table[i].mipsclock) &&
-+ ((sbclock == 0) || (sbclock <= table[i].sbclock)))
-+ break;
-+ }
-+ if (i == tabsz) {
-+ ret = FALSE;
-+ goto done;
-+ } else {
-+ te = &table[i];
-+ ret = TRUE;
-+ }
-+
-+ /* No PLL change */
-+ if ((orig_n == te->n) &&
-+ (orig_sb == te->sb) &&
-+ (orig_pci == te->pci33) &&
-+ (orig_m2 == te->m2) &&
-+ (orig_mips == te->m3))
-+ goto done;
-+
-+ /* Set the PLL controls */
-+ W_REG(osh, clockcontrol_n, te->n);
-+ W_REG(osh, clockcontrol_sb, te->sb);
-+ W_REG(osh, clockcontrol_pci, te->pci33);
-+ W_REG(osh, &cc->clockcontrol_m2, te->m2);
-+ W_REG(osh, &cc->clockcontrol_m3, te->m3);
-+
-+ /* Set the chipcontrol bit to change mipsref to the backplane divider if needed */
-+ if ((pll_type == PLL_TYPE7) && (te->sb != te->m2) &&
-+ (sb_clock_rate(pll_type, te->n, te->m2) == 120000000))
-+ W_REG(osh, &cc->chipcontrol,
-+ R_REG(osh, &cc->chipcontrol) | 0x100);
-+
-+ /* No ratio change */
-+ if (sb_chip(sbh) != BCM4785_CHIP_ID) {
-+ if (orig_ratio_parm == te->ratio_parm)
-+ goto end_fill;
-+ }
-+
-+ /* Preload the code into the cache */
-+ icache_probe(MFC0(C0_CONFIG, 1), &ic_size, &ic_lsize);
-+ if (sb_chip(sbh) == BCM4785_CHIP_ID) {
-+ start = ((ulong) &&start_fill_4785) & ~(ic_lsize - 1);
-+ end = ((ulong) &&end_fill_4785 + (ic_lsize - 1)) & ~(ic_lsize - 1);
-+ }
-+ else {
-+ start = ((ulong) &&start_fill) & ~(ic_lsize - 1);
-+ end = ((ulong) &&end_fill + (ic_lsize - 1)) & ~(ic_lsize - 1);
-+ }
-+ while (start < end) {
-+ cache_op(start, Fill_I);
-+ start += ic_lsize;
-+ }
-+
-+ /* Copy the handler */
-+ start = (ulong) &handler;
-+ end = (ulong) &afterhandler;
-+ dst = KSEG1ADDR(0x180);
-+ for (i = 0; i < (end - start); i += 4)
-+ *((ulong *)(dst + i)) = *((ulong *)(start + i));
-+
-+ /* Preload the handler into the cache one line at a time */
-+ for (i = 0; i < (end - start); i += ic_lsize)
-+ cache_op(dst + i, Fill_I);
-+
-+ /* Clear BEV bit */
-+ MTC0(C0_STATUS, 0, MFC0(C0_STATUS, 0) & ~ST0_BEV);
-+
-+ /* Enable interrupts */
-+ MTC0(C0_STATUS, 0, MFC0(C0_STATUS, 0) | (ALLINTS | ST0_IE));
-+
-+ /* 4785 clock freq change procedures */
-+ if (sb_chip(sbh) == BCM4785_CHIP_ID) {
-+ start_fill_4785:
-+ /* Switch to async */
-+ MTC0(C0_BROADCOM, 4, (1 << 22));
-+
-+ /* Set clock ratio in MIPS */
-+ *dll_r1 = (*dll_r1 & 0xfffffff0) | (te->d11_r1 - 1);
-+ *dll_r2 = te->d11_r2;
-+
-+ /* Enable new settings in MIPS */
-+ *dll_r1 = *dll_r1 | 0xc0000000;
-+
-+ /* Set active cfg */
-+ MTC0(C0_BROADCOM, 2, MFC0(C0_BROADCOM, 2) | (1 << 3) | 1);
-+
-+ /* Fake soft reset (clock cfg registers not reset) */
-+ MTC0(C0_BROADCOM, 5, MFC0(C0_BROADCOM, 5) | (1 << 2));
-+
-+ /* Clear active cfg */
-+ MTC0(C0_BROADCOM, 2, MFC0(C0_BROADCOM, 2) & ~(1 << 3));
-+
-+ /* set watchdog timer */
-+ W_REG(osh, &cc->watchdog, 20);
-+ (void) R_REG(osh, &cc->chipid);
-+
-+ /* wait for timer interrupt */
-+ __asm__ __volatile__(
-+ ".set\tmips3\n\t"
-+ "sync\n\t"
-+ "wait\n\t"
-+ ".set\tmips0");
-+ end_fill_4785:
-+ while (1);
-+ }
-+ /* Generic clock freq change procedures */
-+ else {
-+ /* Enable MIPS timer interrupt */
-+ if (!(mipsr = sb_setcore(sbh, SB_MIPS, 0)) &&
-+ !(mipsr = sb_setcore(sbh, SB_MIPS33, 0)))
-+ ASSERT(mipsr);
-+ W_REG(osh, &mipsr->intmask, 1);
-+
-+ start_fill:
-+ /* step 1, set clock ratios */
-+ MTC0(C0_BROADCOM, 3, te->ratio_parm);
-+ MTC0(C0_BROADCOM, 1, te->ratio_cfg);
-+
-+ /* step 2: program timer intr */
-+ W_REG(osh, &mipsr->timer, 100);
-+ (void) R_REG(osh, &mipsr->timer);
-+
-+ /* step 3, switch to async */
-+ sync_mode = MFC0(C0_BROADCOM, 4);
-+ MTC0(C0_BROADCOM, 4, 1 << 22);
-+
-+ /* step 4, set cfg active */
-+ MTC0(C0_BROADCOM, 2, (1 << 3) | 1);
-+
-+ /* steps 5 & 6 */
-+ __asm__ __volatile__(
-+ ".set\tmips3\n\t"
-+ "wait\n\t"
-+ ".set\tmips0");
-+
-+ /* step 7, clear cfg active */
-+ MTC0(C0_BROADCOM, 2, 0);
-+
-+ /* Additional Step: set back to orig sync mode */
-+ MTC0(C0_BROADCOM, 4, sync_mode);
-+
-+ /* step 8, fake soft reset */
-+ MTC0(C0_BROADCOM, 5, MFC0(C0_BROADCOM, 5) | (1 << 2));
-+
-+ end_fill:
-+ /* set watchdog timer */
-+ W_REG(osh, &cc->watchdog, 20);
-+ (void) R_REG(osh, &cc->chipid);
-+
-+ /* wait for timer interrupt */
-+ __asm__ __volatile__(
-+ ".set\tmips3\n\t"
-+ "sync\n\t"
-+ "wait\n\t"
-+ ".set\tmips0");
-+ while (1);
-+ }
-+ }
-+
-+done:
-+ /* Enable 4785 DLL */
-+ if (sb_chip(sbh) == BCM4785_CHIP_ID) {
-+ uint32 tmp;
-+
-+ /* set mask to 1e, enable DLL (bit 0) */
-+ *dll_ctrl |= 0x0041e021;
-+
-+ /* enable aggressive hardware mode */
-+ *dll_ctrl |= 0x00000080;
-+
-+ /* wait for lock flag to clear */
-+ while ((*dll_ctrl & 0x2) == 0);
-+
-+ /* clear sticky flags (clear on write 1) */
-+ tmp = *dll_ctrl;
-+ *dll_ctrl = tmp;
-+
-+ /* set mask to 5b'10001 */
-+ *dll_ctrl = (*dll_ctrl & 0xfffc1fff) | 0x00022000;
-+
-+ /* enable sync mode */
-+ MTC0(C0_BROADCOM, 4, MFC0(C0_BROADCOM, 4) & 0xfe3fffff);
-+ (void)MFC0(C0_BROADCOM, 4);
-+ }
-+
-+ /* switch back to previous core */
-+ sb_setcoreidx(sbh, idx);
-+
-+ return ret;
-+}
-+
-+void
-+BCMINITFN(enable_pfc)(uint32 mode)
-+{
-+ ulong start, end;
-+ uint ic_size, ic_lsize;
-+
-+ /* If auto then choose the correct mode for this
-+ * platform, currently we only ever select one mode
-+ */
-+ if (mode == PFC_AUTO)
-+ mode = PFC_INST;
-+
-+ icache_probe(MFC0(C0_CONFIG, 1), &ic_size, &ic_lsize);
-+
-+ /* enable prefetch cache if available */
-+ if (MFC0(C0_BROADCOM, 0) & BRCM_PFC_AVAIL) {
-+ start = ((ulong) &&setpfc_start) & ~(ic_lsize - 1);
-+ end = ((ulong) &&setpfc_end + (ic_lsize - 1)) & ~(ic_lsize - 1);
-+
-+ /* Preload setpfc code into the cache one line at a time */
-+ while (start < end) {
-+ cache_op(start, Fill_I);
-+ start += ic_lsize;
-+ }
-+
-+ /* Now set the pfc */
-+ setpfc_start:
-+ /* write range */
-+ *(volatile uint32 *)PFC_CR1 = 0xffff0000;
-+
-+ /* enable */
-+ *(volatile uint32 *)PFC_CR0 = mode;
-+ setpfc_end:
-+ /* Compiler foder */
-+ ic_size = 0;
-+ }
-+}
-+
-+/* returns the ncdl value to be programmed into sdram_ncdl for calibration */
-+uint32
-+BCMINITFN(sb_memc_get_ncdl)(sb_t *sbh)
-+{
-+ osl_t *osh;
-+ sbmemcregs_t *memc;
-+ uint32 ret = 0;
-+ uint32 config, rd, wr, misc, dqsg, cd, sm, sd;
-+ uint idx, rev;
-+
-+ osh = sb_osh(sbh);
-+
-+ idx = sb_coreidx(sbh);
-+
-+ memc = (sbmemcregs_t *)sb_setcore(sbh, SB_MEMC, 0);
-+ if (memc == 0)
-+ goto out;
-+
-+ rev = sb_corerev(sbh);
-+
-+ config = R_REG(osh, &memc->config);
-+ wr = R_REG(osh, &memc->wrncdlcor);
-+ rd = R_REG(osh, &memc->rdncdlcor);
-+ misc = R_REG(osh, &memc->miscdlyctl);
-+ dqsg = R_REG(osh, &memc->dqsgatencdl);
-+
-+ rd &= MEMC_RDNCDLCOR_RD_MASK;
-+ wr &= MEMC_WRNCDLCOR_WR_MASK;
-+ dqsg &= MEMC_DQSGATENCDL_G_MASK;
-+
-+ if (config & MEMC_CONFIG_DDR) {
-+ ret = (wr << 16) | (rd << 8) | dqsg;
-+ } else {
-+ if (rev > 0)
-+ cd = rd;
-+ else
-+ cd = (rd == MEMC_CD_THRESHOLD) ? rd : (wr + MEMC_CD_THRESHOLD);
-+ sm = (misc & MEMC_MISC_SM_MASK) >> MEMC_MISC_SM_SHIFT;
-+ sd = (misc & MEMC_MISC_SD_MASK) >> MEMC_MISC_SD_SHIFT;
-+ ret = (sm << 16) | (sd << 8) | cd;
-+ }
-+
-+out:
-+ /* switch back to previous core */
-+ sb_setcoreidx(sbh, idx);
-+
-+ return ret;
-+}
-+
-+#if defined(BCMPERFSTATS)
-+/*
-+ * CP0 Register 25 supports 4 semi-independent 32bit performance counters.
-+ * $25 select 0, 1, 2, and 3 are the counters. The counters *decrement* (who thought this one up?)
-+ * $25 select 4 and 5 each contain 2-16bit control fields, one for each of the 4 counters
-+ * $25 select 6 is the global perf control register.
-+ */
-+/* enable and start instruction counting */
-+
-+void
-+hndmips_perf_instrcount_enable()
-+{
-+ MTC0(C0_PERFORMANCE, 6, 0x80000200); /* global enable perf counters */
-+ MTC0(C0_PERFORMANCE, 4,
-+ 0x8044 | MFC0(C0_PERFORMANCE, 4)); /* enable instruction counting for counter 0 */
-+ MTC0(C0_PERFORMANCE, 0, 0); /* zero counter zero */
-+}
-+
-+/* enable and start I$ hit and I$ miss counting */
-+void
-+hndmips_perf_icachecount_enable(void)
-+{
-+ MTC0(C0_PERFORMANCE, 6, 0x80000218); /* enable I$ counting */
-+ MTC0(C0_PERFORMANCE, 4, 0x80148018); /* count I$ hits in cntr 0 and misses in cntr 1 */
-+ MTC0(C0_PERFORMANCE, 0, 0); /* zero counter 0 - # I$ hits */
-+ MTC0(C0_PERFORMANCE, 1, 0); /* zero counter 1 - # I$ misses */
-+}
-+
-+/* enable and start D$ hit and I$ miss counting */
-+void
-+hndmips_perf_dcachecount_enable(void)
-+{
-+ MTC0(C0_PERFORMANCE, 6, 0x80000211); /* enable D$ counting */
-+ MTC0(C0_PERFORMANCE, 4, 0x80248028); /* count D$ hits in cntr 0 and misses in cntr 1 */
-+ MTC0(C0_PERFORMANCE, 0, 0); /* zero counter 0 - # D$ hits */
-+ MTC0(C0_PERFORMANCE, 1, 0); /* zero counter 1 - # D$ misses */
-+}
-+
-+void
-+hndmips_perf_icache_miss_enable()
-+{
-+ MTC0(C0_PERFORMANCE, 4,
-+ 0x80140000 | MFC0(C0_PERFORMANCE, 4)); /* enable cache misses counting for counter 1 */
-+ MTC0(C0_PERFORMANCE, 1, 0); /* zero counter one */
-+}
-+
-+
-+void
-+hndmips_perf_icache_hit_enable()
-+{
-+ MTC0(C0_PERFORMANCE, 5, 0x8018 | MFC0(C0_PERFORMANCE, 5));
-+ /* enable cache hits counting for counter 2 */
-+ MTC0(C0_PERFORMANCE, 2, 0); /* zero counter 2 */
-+}
-+
-+uint32
-+hndmips_perf_read_instrcount()
-+{
-+ return -(long)(MFC0(C0_PERFORMANCE, 0));
-+}
-+
-+uint32
-+hndmips_perf_read_cache_miss()
-+{
-+ return -(long)(MFC0(C0_PERFORMANCE, 1));
-+}
-+
-+uint32
-+hndmips_perf_read_cache_hit()
-+{
-+ return -(long)(MFC0(C0_PERFORMANCE, 2));
-+}
-+
-+#endif /* BCMINTERNAL | BCMPERFSTATS */
-diff -urN linux.old/arch/mips/bcm947xx/sbpci.c linux.dev/arch/mips/bcm947xx/sbpci.c
---- linux.old/arch/mips/bcm947xx/sbpci.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/sbpci.c 2006-05-02 17:37:13.000000000 +0200
-@@ -0,0 +1,768 @@
-+/*
-+ * Low-Level PCI and SB support for BCM47xx
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: hndpci.c,v 1.1.1.3 2006/04/08 06:13:39 honor Exp $
-+ */
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <pcicfg.h>
-+#include <bcmdevs.h>
-+#include <sbconfig.h>
-+#include <bcmutils.h>
-+#include <sbutils.h>
-+#include <sbpci.h>
-+#include <bcmendian.h>
-+#include <bcmnvram.h>
-+#include <hndcpu.h>
-+#include <hndmips.h>
-+#include <hndpci.h>
-+
-+/* debug/trace */
-+#ifdef BCMDBG_PCI
-+#define PCI_MSG(args) printf args
-+#else
-+#define PCI_MSG(args)
-+#endif /* BCMDBG_PCI */
-+
-+/* Can free sbpci_init() memory after boot */
-+#ifndef linux
-+#define __init
-+#endif /* linux */
-+
-+/* Emulated configuration space */
-+typedef struct {
-+ int n;
-+ uint size0;
-+ uint size1;
-+ uint size2;
-+ uint size3;
-+} sb_bar_cfg_t;
-+static pci_config_regs sb_config_regs[SB_MAXCORES];
-+static sb_bar_cfg_t sb_bar_cfg[SB_MAXCORES];
-+
-+/* Links to emulated and real PCI configuration spaces */
-+#define MAXFUNCS 2
-+typedef struct {
-+ pci_config_regs *emu; /* emulated PCI config */
-+ pci_config_regs *pci; /* real PCI config */
-+ sb_bar_cfg_t *bar; /* region sizes */
-+} sb_pci_cfg_t;
-+static sb_pci_cfg_t sb_pci_cfg[SB_MAXCORES][MAXFUNCS];
-+
-+/* Special emulated config space for non-existing device */
-+static pci_config_regs sb_pci_null = { 0xffff, 0xffff };
-+
-+/* Banned cores */
-+static uint16 pci_ban[SB_MAXCORES] = { 0 };
-+static uint pci_banned = 0;
-+
-+/* CardBus mode */
-+static bool cardbus = FALSE;
-+
-+/* Disable PCI host core */
-+static bool pci_disabled = FALSE;
-+
-+/* Host bridge slot #, default to 0 */
-+static uint8 pci_hbslot = 0;
-+
-+/* Internal macros */
-+#define PCI_SLOTAD_MAP 16 /* SLOT<n> mapps to AD<n+16> */
-+#define PCI_HBSBCFG_REV 8 /* MIN. core rev. required to
-+ * access host bridge PCI cfg space
-+ * from SB
-+ */
-+
-+/*
-+ * Functions for accessing external PCI configuration space
-+ */
-+
-+/* Assume one-hot slot wiring */
-+#define PCI_SLOT_MAX 16 /* Max. PCI Slots */
-+
-+static uint32
-+config_cmd(sb_t *sbh, uint bus, uint dev, uint func, uint off)
-+{
-+ uint coreidx;
-+ sbpciregs_t *regs;
-+ uint32 addr = 0;
-+ osl_t *osh;
-+
-+ /* CardBusMode supports only one device */
-+ if (cardbus && dev > 1)
-+ return 0;
-+
-+ osh = sb_osh(sbh);
-+
-+ coreidx = sb_coreidx(sbh);
-+ regs = (sbpciregs_t *) sb_setcore(sbh, SB_PCI, 0);
-+
-+ /* Type 0 transaction */
-+ if (bus == 1) {
-+ /* Skip unwired slots */
-+ if (dev < PCI_SLOT_MAX) {
-+ uint32 win;
-+
-+ /* Slide the PCI window to the appropriate slot */
-+ win = (SBTOPCI_CFG0 | ((1 << (dev + PCI_SLOTAD_MAP)) & SBTOPCI1_MASK));
-+ W_REG(osh, &regs->sbtopci1, win);
-+ addr = SB_PCI_CFG |
-+ ((1 << (dev + PCI_SLOTAD_MAP)) & ~SBTOPCI1_MASK) |
-+ (func << PCICFG_FUN_SHIFT) |
-+ (off & ~3);
-+ }
-+ } else {
-+ /* Type 1 transaction */
-+ W_REG(osh, &regs->sbtopci1, SBTOPCI_CFG1);
-+ addr = SB_PCI_CFG |
-+ (bus << PCICFG_BUS_SHIFT) |
-+ (dev << PCICFG_SLOT_SHIFT) |
-+ (func << PCICFG_FUN_SHIFT) |
-+ (off & ~3);
-+ }
-+
-+ sb_setcoreidx(sbh, coreidx);
-+
-+ return addr;
-+}
-+
-+/*
-+ * Read host bridge PCI config registers from Silicon Backplane (>=rev8).
-+ *
-+ * It returns TRUE to indicate that access to the host bridge's pci config
-+ * from SB is ok, and values in 'addr' and 'val' are valid.
-+ *
-+ * It can only read registers at multiple of 4-bytes. Callers must pick up
-+ * needed bytes from 'val' based on 'off' value. Value in 'addr' reflects
-+ * the register address where value in 'val' is read.
-+ */
-+static bool
-+sb_pcihb_read_config(sb_t *sbh, uint bus, uint dev, uint func, uint off,
-+ uint32 **addr, uint32 *val)
-+{
-+ sbpciregs_t *regs;
-+ osl_t *osh;
-+ uint coreidx;
-+ bool ret = FALSE;
-+
-+ /* sanity check */
-+ ASSERT(bus == 1);
-+ ASSERT(dev == pci_hbslot);
-+ ASSERT(func == 0);
-+
-+ osh = sb_osh(sbh);
-+
-+ /* read pci config when core rev >= 8 */
-+ coreidx = sb_coreidx(sbh);
-+ regs = (sbpciregs_t *)sb_setcore(sbh, SB_PCI, 0);
-+ if (regs && sb_corerev(sbh) >= PCI_HBSBCFG_REV) {
-+ *addr = (uint32 *)&regs->pcicfg[func][off >> 2];
-+ *val = R_REG(osh, *addr);
-+ ret = TRUE;
-+ }
-+ sb_setcoreidx(sbh, coreidx);
-+
-+ return ret;
-+}
-+
-+int
-+extpci_read_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len)
-+{
-+ uint32 addr = 0, *reg = NULL, val;
-+ int ret = 0;
-+
-+ /*
-+ * Set value to -1 when:
-+ * flag 'pci_disabled' is true;
-+ * value of 'addr' is zero;
-+ * REG_MAP() fails;
-+ * BUSPROBE() fails;
-+ */
-+ if (pci_disabled)
-+ val = 0xffffffff;
-+ else if (bus == 1 && dev == pci_hbslot && func == 0 &&
-+ sb_pcihb_read_config(sbh, bus, dev, func, off, &reg, &val))
-+ ;
-+ else if (((addr = config_cmd(sbh, bus, dev, func, off)) == 0) ||
-+ ((reg = (uint32 *)REG_MAP(addr, len)) == 0) ||
-+ (BUSPROBE(val, reg) != 0))
-+ val = 0xffffffff;
-+
-+ PCI_MSG(("%s: 0x%x <= 0x%p(0x%x), len %d, off 0x%x, buf 0x%p\n",
-+ __FUNCTION__, val, reg, addr, len, off, buf));
-+
-+ val >>= 8 * (off & 3);
-+ if (len == 4)
-+ *((uint32 *) buf) = val;
-+ else if (len == 2)
-+ *((uint16 *) buf) = (uint16) val;
-+ else if (len == 1)
-+ *((uint8 *) buf) = (uint8) val;
-+ else
-+ ret = -1;
-+
-+ if (reg && addr)
-+ REG_UNMAP(reg);
-+
-+ return ret;
-+}
-+
-+int
-+extpci_write_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len)
-+{
-+ osl_t *osh;
-+ uint32 addr = 0, *reg = NULL, val;
-+ int ret = 0;
-+
-+ osh = sb_osh(sbh);
-+
-+ /*
-+ * Ignore write attempt when:
-+ * flag 'pci_disabled' is true;
-+ * value of 'addr' is zero;
-+ * REG_MAP() fails;
-+ * BUSPROBE() fails;
-+ */
-+ if (pci_disabled)
-+ return 0;
-+ else if (bus == 1 && dev == pci_hbslot && func == 0 &&
-+ sb_pcihb_read_config(sbh, bus, dev, func, off, &reg, &val))
-+ ;
-+ else if (((addr = config_cmd(sbh, bus, dev, func, off)) == 0) ||
-+ ((reg = (uint32 *) REG_MAP(addr, len)) == 0) ||
-+ (BUSPROBE(val, reg) != 0))
-+ goto done;
-+
-+ if (len == 4)
-+ val = *((uint32 *) buf);
-+ else if (len == 2) {
-+ val &= ~(0xffff << (8 * (off & 3)));
-+ val |= *((uint16 *) buf) << (8 * (off & 3));
-+ } else if (len == 1) {
-+ val &= ~(0xff << (8 * (off & 3)));
-+ val |= *((uint8 *) buf) << (8 * (off & 3));
-+ } else {
-+ ret = -1;
-+ goto done;
-+ }
-+
-+ PCI_MSG(("%s: 0x%x => 0x%p\n", __FUNCTION__, val, reg));
-+
-+ W_REG(osh, reg, val);
-+
-+done:
-+ if (reg && addr)
-+ REG_UNMAP(reg);
-+
-+ return ret;
-+}
-+
-+/*
-+ * Must access emulated PCI configuration at these locations even when
-+ * the real PCI config space exists and is accessible.
-+ *
-+ * PCI_CFG_VID (0x00)
-+ * PCI_CFG_DID (0x02)
-+ * PCI_CFG_PROGIF (0x09)
-+ * PCI_CFG_SUBCL (0x0a)
-+ * PCI_CFG_BASECL (0x0b)
-+ * PCI_CFG_HDR (0x0e)
-+ * PCI_CFG_INT (0x3c)
-+ * PCI_CFG_PIN (0x3d)
-+ */
-+#define FORCE_EMUCFG(off, len) \
-+ ((off == PCI_CFG_VID) || (off == PCI_CFG_DID) || \
-+ (off == PCI_CFG_PROGIF) || \
-+ (off == PCI_CFG_SUBCL) || (off == PCI_CFG_BASECL) || \
-+ (off == PCI_CFG_HDR) || \
-+ (off == PCI_CFG_INT) || (off == PCI_CFG_PIN))
-+
-+/* Sync the emulation registers and the real PCI config registers. */
-+static void
-+sb_pcid_read_config(sb_t *sbh, uint coreidx, sb_pci_cfg_t *cfg,
-+ uint off, uint len)
-+{
-+ osl_t *osh;
-+ uint oldidx;
-+
-+ ASSERT(cfg);
-+ ASSERT(cfg->emu);
-+ ASSERT(cfg->pci);
-+
-+ /* decide if real PCI config register access is necessary */
-+ if (FORCE_EMUCFG(off, len))
-+ return;
-+
-+ osh = sb_osh(sbh);
-+
-+ /* access to the real pci config space only when the core is up */
-+ oldidx = sb_coreidx(sbh);
-+ sb_setcoreidx(sbh, coreidx);
-+ if (sb_iscoreup(sbh)) {
-+ if (len == 4)
-+ *(uint32 *)((ulong)cfg->emu + off) =
-+ htol32(R_REG(osh, (uint32 *)((ulong)cfg->pci + off)));
-+ else if (len == 2)
-+ *(uint16 *)((ulong)cfg->emu + off) =
-+ htol16(R_REG(osh, (uint16 *)((ulong)cfg->pci + off)));
-+ else if (len == 1)
-+ *(uint8 *)((ulong)cfg->emu + off) =
-+ R_REG(osh, (uint8 *)((ulong)cfg->pci + off));
-+ }
-+ sb_setcoreidx(sbh, oldidx);
-+}
-+
-+static void
-+sb_pcid_write_config(sb_t *sbh, uint coreidx, sb_pci_cfg_t *cfg,
-+ uint off, uint len)
-+{
-+ osl_t *osh;
-+ uint oldidx;
-+
-+ ASSERT(cfg);
-+ ASSERT(cfg->emu);
-+ ASSERT(cfg->pci);
-+
-+ osh = sb_osh(sbh);
-+
-+ /* decide if real PCI config register access is necessary */
-+ if (FORCE_EMUCFG(off, len))
-+ return;
-+
-+ /* access to the real pci config space only when the core is up */
-+ oldidx = sb_coreidx(sbh);
-+ sb_setcoreidx(sbh, coreidx);
-+ if (sb_iscoreup(sbh)) {
-+ if (len == 4)
-+ W_REG(osh, (uint32 *)((ulong)cfg->pci + off),
-+ ltoh32(*(uint32 *)((ulong)cfg->emu + off)));
-+ else if (len == 2)
-+ W_REG(osh, (uint16 *)((ulong)cfg->pci + off),
-+ ltoh16(*(uint16 *)((ulong)cfg->emu + off)));
-+ else if (len == 1)
-+ W_REG(osh, (uint8 *)((ulong)cfg->pci + off),
-+ *(uint8 *)((ulong)cfg->emu + off));
-+ }
-+ sb_setcoreidx(sbh, oldidx);
-+}
-+
-+/*
-+ * Functions for accessing translated SB configuration space
-+ */
-+static int
-+sb_read_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len)
-+{
-+ pci_config_regs *cfg;
-+
-+ if (dev >= SB_MAXCORES || func >= MAXFUNCS || (off + len) > sizeof(pci_config_regs))
-+ return -1;
-+ cfg = sb_pci_cfg[dev][func].emu;
-+
-+ ASSERT(ISALIGNED(off, len));
-+ ASSERT(ISALIGNED((uintptr)buf, len));
-+
-+ /* use special config space if the device does not exist */
-+ if (!cfg)
-+ cfg = &sb_pci_null;
-+ /* sync emulation with real PCI config if necessary */
-+ else if (sb_pci_cfg[dev][func].pci)
-+ sb_pcid_read_config(sbh, dev, &sb_pci_cfg[dev][func], off, len);
-+
-+ if (len == 4)
-+ *((uint32 *) buf) = ltoh32(*((uint32 *)((ulong) cfg + off)));
-+ else if (len == 2)
-+ *((uint16 *) buf) = ltoh16(*((uint16 *)((ulong) cfg + off)));
-+ else if (len == 1)
-+ *((uint8 *) buf) = *((uint8 *)((ulong) cfg + off));
-+ else
-+ return -1;
-+
-+ return 0;
-+}
-+
-+static int
-+sb_write_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len)
-+{
-+ uint coreidx;
-+ void *regs;
-+ pci_config_regs *cfg;
-+ osl_t *osh;
-+ sb_bar_cfg_t *bar;
-+
-+ if (dev >= SB_MAXCORES || func >= MAXFUNCS || (off + len) > sizeof(pci_config_regs))
-+ return -1;
-+ cfg = sb_pci_cfg[dev][func].emu;
-+ if (!cfg)
-+ return -1;
-+
-+ ASSERT(ISALIGNED(off, len));
-+ ASSERT(ISALIGNED((uintptr)buf, len));
-+
-+ osh = sb_osh(sbh);
-+
-+ /* Emulate BAR sizing */
-+ if (off >= OFFSETOF(pci_config_regs, base[0]) &&
-+ off <= OFFSETOF(pci_config_regs, base[3]) &&
-+ len == 4 && *((uint32 *) buf) == ~0) {
-+ coreidx = sb_coreidx(sbh);
-+ if ((regs = sb_setcoreidx(sbh, dev))) {
-+ bar = sb_pci_cfg[dev][func].bar;
-+ /* Highest numbered address match register */
-+ if (off == OFFSETOF(pci_config_regs, base[0]))
-+ cfg->base[0] = ~(bar->size0 - 1);
-+ else if (off == OFFSETOF(pci_config_regs, base[1]) && bar->n >= 1)
-+ cfg->base[1] = ~(bar->size1 - 1);
-+ else if (off == OFFSETOF(pci_config_regs, base[2]) && bar->n >= 2)
-+ cfg->base[2] = ~(bar->size2 - 1);
-+ else if (off == OFFSETOF(pci_config_regs, base[3]) && bar->n >= 3)
-+ cfg->base[3] = ~(bar->size3 - 1);
-+ }
-+ sb_setcoreidx(sbh, coreidx);
-+ }
-+ else if (len == 4)
-+ *((uint32 *)((ulong) cfg + off)) = htol32(*((uint32 *) buf));
-+ else if (len == 2)
-+ *((uint16 *)((ulong) cfg + off)) = htol16(*((uint16 *) buf));
-+ else if (len == 1)
-+ *((uint8 *)((ulong) cfg + off)) = *((uint8 *) buf);
-+ else
-+ return -1;
-+
-+ /* sync emulation with real PCI config if necessary */
-+ if (sb_pci_cfg[dev][func].pci)
-+ sb_pcid_write_config(sbh, dev, &sb_pci_cfg[dev][func], off, len);
-+
-+ return 0;
-+}
-+
-+int
-+sbpci_read_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len)
-+{
-+ if (bus == 0)
-+ return sb_read_config(sbh, bus, dev, func, off, buf, len);
-+ else
-+ return extpci_read_config(sbh, bus, dev, func, off, buf, len);
-+}
-+
-+int
-+sbpci_write_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len)
-+{
-+ if (bus == 0)
-+ return sb_write_config(sbh, bus, dev, func, off, buf, len);
-+ else
-+ return extpci_write_config(sbh, bus, dev, func, off, buf, len);
-+}
-+
-+void
-+sbpci_ban(uint16 core)
-+{
-+ if (pci_banned < ARRAYSIZE(pci_ban))
-+ pci_ban[pci_banned++] = core;
-+}
-+
-+/*
-+ * Initiliaze PCI core. Return 0 after a successful initialization.
-+ * Otherwise return -1 to indicate there is no PCI core and return 1
-+ * to indicate PCI core is disabled.
-+ */
-+int __init
-+sbpci_init_pci(sb_t *sbh)
-+{
-+ uint chip, chiprev, chippkg, host;
-+ uint32 boardflags;
-+ sbpciregs_t *pci;
-+ sbconfig_t *sb;
-+ uint32 val;
-+ int ret = 0;
-+ char *hbslot;
-+ osl_t *osh;
-+
-+ chip = sb_chip(sbh);
-+ chiprev = sb_chiprev(sbh);
-+ chippkg = sb_chippkg(sbh);
-+
-+ osh = sb_osh(sbh);
-+
-+ if (!(pci = (sbpciregs_t *) sb_setcore(sbh, SB_PCI, 0))) {
-+ printk("PCI: no core\n");
-+ pci_disabled = TRUE;
-+ return -1;
-+ }
-+
-+ if ((chip == 0x4310) && (chiprev == 0))
-+ pci_disabled = TRUE;
-+
-+ sb = (sbconfig_t *)((ulong) pci + SBCONFIGOFF);
-+
-+ boardflags = (uint32) getintvar(NULL, "boardflags");
-+
-+ /*
-+ * The 200-pin BCM4712 package does not bond out PCI. Even when
-+ * PCI is bonded out, some boards may leave the pins
-+ * floating.
-+ */
-+ if (((chip == BCM4712_CHIP_ID) &&
-+ ((chippkg == BCM4712SMALL_PKG_ID) ||
-+ (chippkg == BCM4712MID_PKG_ID))) ||
-+ (boardflags & BFL_NOPCI))
-+ pci_disabled = TRUE;
-+
-+ /* Enable the core */
-+ sb_core_reset(sbh, 0, 0);
-+
-+ /*
-+ * If the PCI core should not be touched (disabled, not bonded
-+ * out, or pins floating), do not even attempt to access core
-+ * registers. Otherwise, try to determine if it is in host
-+ * mode.
-+ */
-+ if (pci_disabled)
-+ host = 0;
-+ else
-+ host = !BUSPROBE(val, &pci->control);
-+
-+ if (!host) {
-+ ret = 1;
-+
-+ /* Disable PCI interrupts in client mode */
-+ W_REG(osh, &sb->sbintvec, 0);
-+
-+ /* Disable the PCI bridge in client mode */
-+ sbpci_ban(SB_PCI);
-+ sb_core_disable(sbh, 0);
-+
-+ printk("PCI: Disabled\n");
-+ } else {
-+ printk("PCI: Initializing host\n");
-+
-+ /* Disable PCI SBReqeustTimeout for BCM4785 */
-+ if (chip == BCM4785_CHIP_ID) {
-+ AND_REG(osh, &sb->sbimconfiglow, ~0x00000070);
-+ sb_commit(sbh);
-+ }
-+
-+ /* Reset the external PCI bus and enable the clock */
-+ W_REG(osh, &pci->control, 0x5); /* enable the tristate drivers */
-+ W_REG(osh, &pci->control, 0xd); /* enable the PCI clock */
-+ OSL_DELAY(150); /* delay > 100 us */
-+ W_REG(osh, &pci->control, 0xf); /* deassert PCI reset */
-+ /* Use internal arbiter and park REQ/GRNT at external master 0 */
-+ W_REG(osh, &pci->arbcontrol, PCI_INT_ARB);
-+ OSL_DELAY(1); /* delay 1 us */
-+ if (sb_corerev(sbh) >= 8) {
-+ val = getintvar(NULL, "parkid");
-+ ASSERT(val <= PCI_PARKID_LAST);
-+ OR_REG(osh, &pci->arbcontrol, val << PCI_PARKID_SHIFT);
-+ OSL_DELAY(1);
-+ }
-+
-+ /* Enable CardBusMode */
-+ cardbus = getintvar(NULL, "cardbus") == 1;
-+ if (cardbus) {
-+ printk("PCI: Enabling CardBus\n");
-+ /* GPIO 1 resets the CardBus device on bcm94710ap */
-+ sb_gpioout(sbh, 1, 1, GPIO_DRV_PRIORITY);
-+ sb_gpioouten(sbh, 1, 1, GPIO_DRV_PRIORITY);
-+ W_REG(osh, &pci->sprom[0], R_REG(osh, &pci->sprom[0]) | 0x400);
-+ }
-+
-+ /* 64 MB I/O access window */
-+ W_REG(osh, &pci->sbtopci0, SBTOPCI_IO);
-+ /* 64 MB configuration access window */
-+ W_REG(osh, &pci->sbtopci1, SBTOPCI_CFG0);
-+ /* 1 GB memory access window */
-+ W_REG(osh, &pci->sbtopci2, SBTOPCI_MEM | SB_PCI_DMA);
-+
-+ /* Host bridge slot # nvram overwrite */
-+ if ((hbslot = nvram_get("pcihbslot"))) {
-+ pci_hbslot = bcm_strtoul(hbslot, NULL, 0);
-+ ASSERT(pci_hbslot < PCI_MAX_DEVICES);
-+ }
-+
-+ /* Enable PCI bridge BAR0 prefetch and burst */
-+ val = 6;
-+ sbpci_write_config(sbh, 1, pci_hbslot, 0, PCI_CFG_CMD, &val, sizeof(val));
-+
-+ /* Enable PCI interrupts */
-+ W_REG(osh, &pci->intmask, PCI_INTA);
-+ }
-+
-+ return ret;
-+}
-+
-+/*
-+ * Get the PCI region address and size information.
-+ */
-+static void __init
-+sbpci_init_regions(sb_t *sbh, uint func, pci_config_regs *cfg, sb_bar_cfg_t *bar)
-+{
-+ osl_t *osh;
-+ uint16 coreid;
-+ void *regs;
-+ sbconfig_t *sb;
-+ uint32 base;
-+
-+ osh = sb_osh(sbh);
-+ coreid = sb_coreid(sbh);
-+ regs = sb_coreregs(sbh);
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+
-+ switch (coreid) {
-+ case SB_USB20H:
-+ base = htol32(sb_base(R_REG(osh, &sb->sbadmatch0)));
-+
-+ cfg->base[0] = func == 0 ? base : base + 0x800; /* OHCI/EHCI */
-+ cfg->base[1] = 0;
-+ cfg->base[2] = 0;
-+ cfg->base[3] = 0;
-+ cfg->base[4] = 0;
-+ cfg->base[5] = 0;
-+ bar->n = 1;
-+ bar->size0 = func == 0 ? 0x200 : 0x100; /* OHCI/EHCI */
-+ bar->size1 = 0;
-+ bar->size2 = 0;
-+ bar->size3 = 0;
-+ break;
-+ default:
-+ cfg->base[0] = htol32(sb_base(R_REG(osh, &sb->sbadmatch0)));
-+ cfg->base[1] = htol32(sb_base(R_REG(osh, &sb->sbadmatch1)));
-+ cfg->base[2] = htol32(sb_base(R_REG(osh, &sb->sbadmatch2)));
-+ cfg->base[3] = htol32(sb_base(R_REG(osh, &sb->sbadmatch3)));
-+ cfg->base[4] = 0;
-+ cfg->base[5] = 0;
-+ bar->n = (R_REG(osh, &sb->sbidlow) & SBIDL_AR_MASK) >> SBIDL_AR_SHIFT;
-+ bar->size0 = sb_size(R_REG(osh, &sb->sbadmatch0));
-+ bar->size1 = sb_size(R_REG(osh, &sb->sbadmatch1));
-+ bar->size2 = sb_size(R_REG(osh, &sb->sbadmatch2));
-+ bar->size3 = sb_size(R_REG(osh, &sb->sbadmatch3));
-+ break;
-+ }
-+}
-+
-+/*
-+ * Construct PCI config spaces for SB cores so that they
-+ * can be accessed as if they were PCI devices.
-+ */
-+static void __init
-+sbpci_init_cores(sb_t *sbh)
-+{
-+ uint chiprev, coreidx, i;
-+ sbconfig_t *sb;
-+ pci_config_regs *cfg, *pci;
-+ sb_bar_cfg_t *bar;
-+ void *regs;
-+ osl_t *osh;
-+ uint16 vendor, device;
-+ uint16 coreid;
-+ uint8 class, subclass, progif;
-+ uint dev;
-+ uint8 header;
-+ uint func;
-+
-+ chiprev = sb_chiprev(sbh);
-+ coreidx = sb_coreidx(sbh);
-+
-+ osh = sb_osh(sbh);
-+
-+ /* Scan the SB bus */
-+ bzero(sb_config_regs, sizeof(sb_config_regs));
-+ bzero(sb_bar_cfg, sizeof(sb_bar_cfg));
-+ bzero(sb_pci_cfg, sizeof(sb_pci_cfg));
-+ memset(&sb_pci_null, -1, sizeof(sb_pci_null));
-+ cfg = sb_config_regs;
-+ bar = sb_bar_cfg;
-+ for (dev = 0; dev < SB_MAXCORES; dev ++) {
-+ /* Check if the core exists */
-+ if (!(regs = sb_setcoreidx(sbh, dev)))
-+ continue;
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+
-+ /* Check if this core is banned */
-+ coreid = sb_coreid(sbh);
-+ for (i = 0; i < pci_banned; i++)
-+ if (coreid == pci_ban[i])
-+ break;
-+ if (i < pci_banned)
-+ continue;
-+
-+ for (func = 0; func < MAXFUNCS; ++func) {
-+ /* Make sure we won't go beyond the limit */
-+ if (cfg >= &sb_config_regs[SB_MAXCORES]) {
-+ printk("PCI: too many emulated devices\n");
-+ goto done;
-+ }
-+
-+ /* Convert core id to pci id */
-+ if (sb_corepciid(sbh, func, &vendor, &device, &class, &subclass,
-+ &progif, &header))
-+ continue;
-+
-+ /*
-+ * Differentiate real PCI config from emulated.
-+ * non zero 'pci' indicate there is a real PCI config space
-+ * for this device.
-+ */
-+ switch (device) {
-+ case BCM47XX_GIGETH_ID:
-+ pci = (pci_config_regs *)((uint32)regs + 0x800);
-+ break;
-+ case BCM47XX_SATAXOR_ID:
-+ pci = (pci_config_regs *)((uint32)regs + 0x400);
-+ break;
-+ case BCM47XX_ATA100_ID:
-+ pci = (pci_config_regs *)((uint32)regs + 0x800);
-+ break;
-+ default:
-+ pci = NULL;
-+ break;
-+ }
-+ /* Supported translations */
-+ cfg->vendor = htol16(vendor);
-+ cfg->device = htol16(device);
-+ cfg->rev_id = chiprev;
-+ cfg->prog_if = progif;
-+ cfg->sub_class = subclass;
-+ cfg->base_class = class;
-+ cfg->header_type = header;
-+ sbpci_init_regions(sbh, func, cfg, bar);
-+ /* Save core interrupt flag */
-+ cfg->int_pin = R_REG(osh, &sb->sbtpsflag) & SBTPS_NUM0_MASK;
-+ /* Save core interrupt assignment */
-+ cfg->int_line = sb_irq(sbh);
-+ /* Indicate there is no SROM */
-+ *((uint32 *) &cfg->sprom_control) = 0xffffffff;
-+
-+ /* Point to the PCI config spaces */
-+ sb_pci_cfg[dev][func].emu = cfg;
-+ sb_pci_cfg[dev][func].pci = pci;
-+ sb_pci_cfg[dev][func].bar = bar;
-+ cfg ++;
-+ bar ++;
-+ }
-+ }
-+
-+done:
-+ sb_setcoreidx(sbh, coreidx);
-+}
-+
-+/*
-+ * Initialize PCI core and construct PCI config spaces for SB cores.
-+ * Must propagate sbpci_init_pci() return value to the caller to let
-+ * them know the PCI core initialization status.
-+ */
-+int __init
-+sbpci_init(sb_t *sbh)
-+{
-+ int status = sbpci_init_pci(sbh);
-+ sbpci_init_cores(sbh);
-+ return status;
-+}
-+
-diff -urN linux.old/arch/mips/bcm947xx/sbutils.c linux.dev/arch/mips/bcm947xx/sbutils.c
---- linux.old/arch/mips/bcm947xx/sbutils.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/sbutils.c 2006-05-02 04:33:16.000000000 +0200
-@@ -0,0 +1,3081 @@
-+/*
-+ * Misc utility routines for accessing chip-specific features
-+ * of the SiliconBackplane-based Broadcom chips.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id: sbutils.c,v 1.10 2006/04/08 07:12:42 honor Exp $
-+ */
-+
-+#include <typedefs.h>
-+#include <bcmdefs.h>
-+#include <osl.h>
-+#include <bcmutils.h>
-+#include <sbutils.h>
-+#include <bcmdevs.h>
-+#include <sbconfig.h>
-+#include <sbchipc.h>
-+#include <sbpci.h>
-+#include <sbpcie.h>
-+#include <pcicfg.h>
-+#include <sbpcmcia.h>
-+#include <sbextif.h>
-+#include <sbsocram.h>
-+#include <bcmsrom.h>
-+#ifdef __mips__
-+#include <mipsinc.h>
-+#endif /* __mips__ */
-+
-+/* debug/trace */
-+#define SB_ERROR(args)
-+
-+typedef uint32 (*sb_intrsoff_t)(void *intr_arg);
-+typedef void (*sb_intrsrestore_t)(void *intr_arg, uint32 arg);
-+typedef bool (*sb_intrsenabled_t)(void *intr_arg);
-+
-+/* misc sb info needed by some of the routines */
-+typedef struct sb_info {
-+
-+ struct sb_pub sb; /* back plane public state (must be first field) */
-+
-+ void *osh; /* osl os handle */
-+ void *sdh; /* bcmsdh handle */
-+
-+ void *curmap; /* current regs va */
-+ void *regs[SB_MAXCORES]; /* other regs va */
-+
-+ uint curidx; /* current core index */
-+ uint dev_coreid; /* the core provides driver functions */
-+
-+ bool memseg; /* flag to toggle MEM_SEG register */
-+
-+ uint gpioidx; /* gpio control core index */
-+ uint gpioid; /* gpio control coretype */
-+
-+ uint numcores; /* # discovered cores */
-+ uint coreid[SB_MAXCORES]; /* id of each core */
-+
-+ void *intr_arg; /* interrupt callback function arg */
-+ sb_intrsoff_t intrsoff_fn; /* turns chip interrupts off */
-+ sb_intrsrestore_t intrsrestore_fn; /* restore chip interrupts */
-+ sb_intrsenabled_t intrsenabled_fn; /* check if interrupts are enabled */
-+
-+} sb_info_t;
-+
-+/* local prototypes */
-+static sb_info_t * sb_doattach(sb_info_t *si, uint devid, osl_t *osh, void *regs,
-+ uint bustype, void *sdh, char **vars, uint *varsz);
-+static void sb_scan(sb_info_t *si);
-+static uint sb_corereg(sb_info_t *si, uint coreidx, uint regoff, uint mask, uint val);
-+static uint _sb_coreidx(sb_info_t *si);
-+static uint sb_findcoreidx(sb_info_t *si, uint coreid, uint coreunit);
-+static uint sb_pcidev2chip(uint pcidev);
-+static uint sb_chip2numcores(uint chip);
-+static bool sb_ispcie(sb_info_t *si);
-+static bool sb_find_pci_capability(sb_info_t *si, uint8 req_cap_id, uchar *buf, uint32 *buflen);
-+static int sb_pci_fixcfg(sb_info_t *si);
-+
-+/* routines to access mdio slave device registers */
-+static int sb_pcie_mdiowrite(sb_info_t *si, uint physmedia, uint readdr, uint val);
-+static void sb_war30841(sb_info_t *si);
-+
-+/* delay needed between the mdio control/ mdiodata register data access */
-+#define PR28829_DELAY() OSL_DELAY(10)
-+
-+/* size that can take bitfielddump */
-+#define BITFIELD_DUMP_SIZE 32
-+
-+/* global variable to indicate reservation/release of gpio's */
-+static uint32 sb_gpioreservation = 0;
-+
-+#define SB_INFO(sbh) (sb_info_t*)sbh
-+#define SET_SBREG(si, r, mask, val) \
-+ W_SBREG((si), (r), ((R_SBREG((si), (r)) & ~(mask)) | (val)))
-+#define GOODCOREADDR(x) (((x) >= SB_ENUM_BASE) && ((x) <= SB_ENUM_LIM) && \
-+ ISALIGNED((x), SB_CORE_SIZE))
-+#define GOODREGS(regs) ((regs) && ISALIGNED((uintptr)(regs), SB_CORE_SIZE))
-+#define REGS2SB(va) (sbconfig_t*) ((int8*)(va) + SBCONFIGOFF)
-+#define GOODIDX(idx) (((uint)idx) < SB_MAXCORES)
-+#define BADIDX (SB_MAXCORES+1)
-+#define NOREV -1 /* Invalid rev */
-+
-+#define PCI(si) ((BUSTYPE(si->sb.bustype) == PCI_BUS) && (si->sb.buscoretype == SB_PCI))
-+#define PCIE(si) ((BUSTYPE(si->sb.bustype) == PCI_BUS) && (si->sb.buscoretype == SB_PCIE))
-+
-+/* sonicsrev */
-+#define SONICS_2_2 (SBIDL_RV_2_2 >> SBIDL_RV_SHIFT)
-+#define SONICS_2_3 (SBIDL_RV_2_3 >> SBIDL_RV_SHIFT)
-+
-+#define R_SBREG(si, sbr) sb_read_sbreg((si), (sbr))
-+#define W_SBREG(si, sbr, v) sb_write_sbreg((si), (sbr), (v))
-+#define AND_SBREG(si, sbr, v) W_SBREG((si), (sbr), (R_SBREG((si), (sbr)) & (v)))
-+#define OR_SBREG(si, sbr, v) W_SBREG((si), (sbr), (R_SBREG((si), (sbr)) | (v)))
-+
-+/*
-+ * Macros to disable/restore function core(D11, ENET, ILINE20, etc) interrupts before/
-+ * after core switching to avoid invalid register accesss inside ISR.
-+ */
-+#define INTR_OFF(si, intr_val) \
-+ if ((si)->intrsoff_fn && (si)->coreid[(si)->curidx] == (si)->dev_coreid) { \
-+ intr_val = (*(si)->intrsoff_fn)((si)->intr_arg); }
-+#define INTR_RESTORE(si, intr_val) \
-+ if ((si)->intrsrestore_fn && (si)->coreid[(si)->curidx] == (si)->dev_coreid) { \
-+ (*(si)->intrsrestore_fn)((si)->intr_arg, intr_val); }
-+
-+/* dynamic clock control defines */
-+#define LPOMINFREQ 25000 /* low power oscillator min */
-+#define LPOMAXFREQ 43000 /* low power oscillator max */
-+#define XTALMINFREQ 19800000 /* 20 MHz - 1% */
-+#define XTALMAXFREQ 20200000 /* 20 MHz + 1% */
-+#define PCIMINFREQ 25000000 /* 25 MHz */
-+#define PCIMAXFREQ 34000000 /* 33 MHz + fudge */
-+
-+#define ILP_DIV_5MHZ 0 /* ILP = 5 MHz */
-+#define ILP_DIV_1MHZ 4 /* ILP = 1 MHz */
-+
-+/* different register spaces to access thr'u pcie indirect access */
-+#define PCIE_CONFIGREGS 1 /* Access to config space */
-+#define PCIE_PCIEREGS 2 /* Access to pcie registers */
-+
-+/* GPIO Based LED powersave defines */
-+#define DEFAULT_GPIO_ONTIME 10 /* Default: 10% on */
-+#define DEFAULT_GPIO_OFFTIME 90 /* Default: 10% on */
-+
-+#define DEFAULT_GPIOTIMERVAL ((DEFAULT_GPIO_ONTIME << GPIO_ONTIME_SHIFT) | DEFAULT_GPIO_OFFTIME)
-+
-+static uint32
-+sb_read_sbreg(sb_info_t *si, volatile uint32 *sbr)
-+{
-+ uint8 tmp;
-+ uint32 val, intr_val = 0;
-+
-+
-+ /*
-+ * compact flash only has 11 bits address, while we needs 12 bits address.
-+ * MEM_SEG will be OR'd with other 11 bits address in hardware,
-+ * so we program MEM_SEG with 12th bit when necessary(access sb regsiters).
-+ * For normal PCMCIA bus(CFTable_regwinsz > 2k), do nothing special
-+ */
-+ if (si->memseg) {
-+ INTR_OFF(si, intr_val);
-+ tmp = 1;
-+ OSL_PCMCIA_WRITE_ATTR(si->osh, MEM_SEG, &tmp, 1);
-+ sbr = (volatile uint32 *)((uintptr)sbr & ~(1 << 11)); /* mask out bit 11 */
-+ }
-+
-+ val = R_REG(si->osh, sbr);
-+
-+ if (si->memseg) {
-+ tmp = 0;
-+ OSL_PCMCIA_WRITE_ATTR(si->osh, MEM_SEG, &tmp, 1);
-+ INTR_RESTORE(si, intr_val);
-+ }
-+
-+ return (val);
-+}
-+
-+static void
-+sb_write_sbreg(sb_info_t *si, volatile uint32 *sbr, uint32 v)
-+{
-+ uint8 tmp;
-+ volatile uint32 dummy;
-+ uint32 intr_val = 0;
-+
-+
-+ /*
-+ * compact flash only has 11 bits address, while we needs 12 bits address.
-+ * MEM_SEG will be OR'd with other 11 bits address in hardware,
-+ * so we program MEM_SEG with 12th bit when necessary(access sb regsiters).
-+ * For normal PCMCIA bus(CFTable_regwinsz > 2k), do nothing special
-+ */
-+ if (si->memseg) {
-+ INTR_OFF(si, intr_val);
-+ tmp = 1;
-+ OSL_PCMCIA_WRITE_ATTR(si->osh, MEM_SEG, &tmp, 1);
-+ sbr = (volatile uint32 *)((uintptr)sbr & ~(1 << 11)); /* mask out bit 11 */
-+ }
-+
-+ if (BUSTYPE(si->sb.bustype) == PCMCIA_BUS) {
-+#ifdef IL_BIGENDIAN
-+ dummy = R_REG(si->osh, sbr);
-+ W_REG(si->osh, ((volatile uint16 *)sbr + 1), (uint16)((v >> 16) & 0xffff));
-+ dummy = R_REG(si->osh, sbr);
-+ W_REG(si->osh, (volatile uint16 *)sbr, (uint16)(v & 0xffff));
-+#else
-+ dummy = R_REG(si->osh, sbr);
-+ W_REG(si->osh, (volatile uint16 *)sbr, (uint16)(v & 0xffff));
-+ dummy = R_REG(si->osh, sbr);
-+ W_REG(si->osh, ((volatile uint16 *)sbr + 1), (uint16)((v >> 16) & 0xffff));
-+#endif /* IL_BIGENDIAN */
-+ } else
-+ W_REG(si->osh, sbr, v);
-+
-+ if (si->memseg) {
-+ tmp = 0;
-+ OSL_PCMCIA_WRITE_ATTR(si->osh, MEM_SEG, &tmp, 1);
-+ INTR_RESTORE(si, intr_val);
-+ }
-+}
-+
-+/*
-+ * Allocate a sb handle.
-+ * devid - pci device id (used to determine chip#)
-+ * osh - opaque OS handle
-+ * regs - virtual address of initial core registers
-+ * bustype - pci/pcmcia/sb/sdio/etc
-+ * vars - pointer to a pointer area for "environment" variables
-+ * varsz - pointer to int to return the size of the vars
-+ */
-+sb_t *
-+BCMINITFN(sb_attach)(uint devid, osl_t *osh, void *regs,
-+ uint bustype, void *sdh, char **vars, uint *varsz)
-+{
-+ sb_info_t *si;
-+
-+ /* alloc sb_info_t */
-+ if ((si = MALLOC(osh, sizeof (sb_info_t))) == NULL) {
-+ SB_ERROR(("sb_attach: malloc failed! malloced %d bytes\n", MALLOCED(osh)));
-+ return (NULL);
-+ }
-+
-+ if (sb_doattach(si, devid, osh, regs, bustype, sdh, vars, (uint*)varsz) == NULL) {
-+ MFREE(osh, si, sizeof(sb_info_t));
-+ return (NULL);
-+ }
-+
-+ return (sb_t *)si;
-+}
-+
-+/* Using sb_kattach depends on SB_BUS support, either implicit */
-+/* no limiting BCMBUSTYPE value) or explicit (value is SB_BUS). */
-+#if !defined(BCMBUSTYPE) || (BCMBUSTYPE == SB_BUS)
-+
-+/* global kernel resource */
-+static sb_info_t ksi;
-+static bool ksi_attached = FALSE;
-+
-+/* generic kernel variant of sb_attach() */
-+sb_t *
-+BCMINITFN(sb_kattach)(void)
-+{
-+ osl_t *osh = NULL;
-+ uint32 *regs;
-+
-+ if (!ksi_attached) {
-+ uint32 cid;
-+
-+ regs = (uint32 *)REG_MAP(SB_ENUM_BASE, SB_CORE_SIZE);
-+ cid = R_REG(osh, (uint32 *)regs);
-+ if (((cid & CID_ID_MASK) == BCM4712_CHIP_ID) &&
-+ ((cid & CID_PKG_MASK) != BCM4712LARGE_PKG_ID) &&
-+ ((cid & CID_REV_MASK) <= (3 << CID_REV_SHIFT))) {
-+ uint32 *scc, val;
-+
-+ scc = (uint32 *)((uchar*)regs + OFFSETOF(chipcregs_t, slow_clk_ctl));
-+ val = R_REG(osh, scc);
-+ SB_ERROR((" initial scc = 0x%x\n", val));
-+ val |= SCC_SS_XTAL;
-+ W_REG(osh, scc, val);
-+ }
-+
-+ if (sb_doattach(&ksi, BCM4710_DEVICE_ID, osh, (void*)regs,
-+ SB_BUS, NULL, NULL, NULL) == NULL) {
-+ return NULL;
-+ }
-+ else
-+ ksi_attached = TRUE;
-+ }
-+
-+ return (sb_t *)&ksi;
-+}
-+#endif /* !BCMBUSTYPE || (BCMBUSTYPE == SB_BUS) */
-+
-+static sb_info_t *
-+BCMINITFN(sb_doattach)(sb_info_t *si, uint devid, osl_t *osh, void *regs,
-+ uint bustype, void *sdh, char **vars, uint *varsz)
-+{
-+ uint origidx;
-+ chipcregs_t *cc;
-+ sbconfig_t *sb;
-+ uint32 w;
-+
-+ ASSERT(GOODREGS(regs));
-+
-+ bzero((uchar*)si, sizeof(sb_info_t));
-+
-+ si->sb.buscoreidx = si->gpioidx = BADIDX;
-+
-+ si->curmap = regs;
-+ si->sdh = sdh;
-+ si->osh = osh;
-+
-+ /* check to see if we are a sb core mimic'ing a pci core */
-+ if (bustype == PCI_BUS) {
-+ if (OSL_PCI_READ_CONFIG(si->osh, PCI_SPROM_CONTROL, sizeof(uint32)) == 0xffffffff) {
-+ SB_ERROR(("%s: incoming bus is PCI but it's a lie, switching to SB "
-+ "devid:0x%x\n", __FUNCTION__, devid));
-+ bustype = SB_BUS;
-+ }
-+ }
-+
-+ si->sb.bustype = bustype;
-+ if (si->sb.bustype != BUSTYPE(si->sb.bustype)) {
-+ SB_ERROR(("sb_doattach: bus type %d does not match configured bus type %d\n",
-+ si->sb.bustype, BUSTYPE(si->sb.bustype)));
-+ return NULL;
-+ }
-+
-+ /* need to set memseg flag for CF card first before any sb registers access */
-+ if (BUSTYPE(si->sb.bustype) == PCMCIA_BUS)
-+ si->memseg = TRUE;
-+
-+ /* kludge to enable the clock on the 4306 which lacks a slowclock */
-+ if (BUSTYPE(si->sb.bustype) == PCI_BUS)
-+ sb_clkctl_xtal(&si->sb, XTAL|PLL, ON);
-+
-+ if (BUSTYPE(si->sb.bustype) == PCI_BUS) {
-+ w = OSL_PCI_READ_CONFIG(si->osh, PCI_BAR0_WIN, sizeof(uint32));
-+ if (!GOODCOREADDR(w))
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_BAR0_WIN, sizeof(uint32), SB_ENUM_BASE);
-+ }
-+
-+ /* initialize current core index value */
-+ si->curidx = _sb_coreidx(si);
-+
-+ if (si->curidx == BADIDX) {
-+ SB_ERROR(("sb_doattach: bad core index\n"));
-+ return NULL;
-+ }
-+
-+ /* get sonics backplane revision */
-+ sb = REGS2SB(si->curmap);
-+ si->sb.sonicsrev = (R_SBREG(si, &sb->sbidlow) & SBIDL_RV_MASK) >> SBIDL_RV_SHIFT;
-+
-+ /* keep and reuse the initial register mapping */
-+ origidx = si->curidx;
-+ if (BUSTYPE(si->sb.bustype) == SB_BUS)
-+ si->regs[origidx] = regs;
-+
-+ /* is core-0 a chipcommon core? */
-+ si->numcores = 1;
-+ cc = (chipcregs_t*) sb_setcoreidx(&si->sb, 0);
-+ if (sb_coreid(&si->sb) != SB_CC)
-+ cc = NULL;
-+
-+ /* determine chip id and rev */
-+ if (cc) {
-+ /* chip common core found! */
-+ si->sb.chip = R_REG(si->osh, &cc->chipid) & CID_ID_MASK;
-+ si->sb.chiprev = (R_REG(si->osh, &cc->chipid) & CID_REV_MASK) >> CID_REV_SHIFT;
-+ si->sb.chippkg = (R_REG(si->osh, &cc->chipid) & CID_PKG_MASK) >> CID_PKG_SHIFT;
-+ } else {
-+ /* no chip common core -- must convert device id to chip id */
-+ if ((si->sb.chip = sb_pcidev2chip(devid)) == 0) {
-+ SB_ERROR(("sb_doattach: unrecognized device id 0x%04x\n", devid));
-+ sb_setcoreidx(&si->sb, origidx);
-+ return NULL;
-+ }
-+ }
-+
-+ /* get chipcommon rev */
-+ si->sb.ccrev = cc ? (int)sb_corerev(&si->sb) : NOREV;
-+
-+ /* determine numcores */
-+ if (cc && ((si->sb.ccrev == 4) || (si->sb.ccrev >= 6)))
-+ si->numcores = (R_REG(si->osh, &cc->chipid) & CID_CC_MASK) >> CID_CC_SHIFT;
-+ else
-+ si->numcores = sb_chip2numcores(si->sb.chip);
-+
-+ /* return to original core */
-+ sb_setcoreidx(&si->sb, origidx);
-+
-+ /* sanity checks */
-+ ASSERT(si->sb.chip);
-+
-+ /* scan for cores */
-+ sb_scan(si);
-+
-+ /* fixup necessary chip/core configurations */
-+ if (BUSTYPE(si->sb.bustype) == PCI_BUS) {
-+ if (sb_pci_fixcfg(si)) {
-+ SB_ERROR(("sb_doattach: sb_pci_fixcfg failed\n"));
-+ return NULL;
-+ }
-+ }
-+
-+ /* srom_var_init() depends on sb_scan() info */
-+ if (srom_var_init(si, si->sb.bustype, si->curmap, si->osh, vars, varsz)) {
-+ SB_ERROR(("sb_doattach: srom_var_init failed: bad srom\n"));
-+ return (NULL);
-+ }
-+
-+ if (cc == NULL) {
-+ /*
-+ * The chip revision number is hardwired into all
-+ * of the pci function config rev fields and is
-+ * independent from the individual core revision numbers.
-+ * For example, the "A0" silicon of each chip is chip rev 0.
-+ * For PCMCIA we get it from the CIS instead.
-+ */
-+ if (BUSTYPE(si->sb.bustype) == PCMCIA_BUS) {
-+ ASSERT(vars);
-+ si->sb.chiprev = getintvar(*vars, "chiprev");
-+ } else if (BUSTYPE(si->sb.bustype) == PCI_BUS) {
-+ w = OSL_PCI_READ_CONFIG(si->osh, PCI_CFG_REV, sizeof(uint32));
-+ si->sb.chiprev = w & 0xff;
-+ } else
-+ si->sb.chiprev = 0;
-+ }
-+
-+ if (BUSTYPE(si->sb.bustype) == PCMCIA_BUS) {
-+ w = getintvar(*vars, "regwindowsz");
-+ si->memseg = (w <= CFTABLE_REGWIN_2K) ? TRUE : FALSE;
-+ }
-+
-+ /* gpio control core is required */
-+ if (!GOODIDX(si->gpioidx)) {
-+ SB_ERROR(("sb_doattach: gpio control core not found\n"));
-+ return NULL;
-+ }
-+
-+ /* get boardtype and boardrev */
-+ switch (BUSTYPE(si->sb.bustype)) {
-+ case PCI_BUS:
-+ /* do a pci config read to get subsystem id and subvendor id */
-+ w = OSL_PCI_READ_CONFIG(si->osh, PCI_CFG_SVID, sizeof(uint32));
-+ si->sb.boardvendor = w & 0xffff;
-+ si->sb.boardtype = (w >> 16) & 0xffff;
-+ break;
-+
-+ case PCMCIA_BUS:
-+ case SDIO_BUS:
-+ si->sb.boardvendor = getintvar(*vars, "manfid");
-+ si->sb.boardtype = getintvar(*vars, "prodid");
-+ break;
-+
-+ case SB_BUS:
-+ case JTAG_BUS:
-+ si->sb.boardvendor = VENDOR_BROADCOM;
-+ if ((si->sb.boardtype = getintvar(NULL, "boardtype")) == 0)
-+ si->sb.boardtype = 0xffff;
-+ break;
-+ }
-+
-+ if (si->sb.boardtype == 0) {
-+ SB_ERROR(("sb_doattach: unknown board type\n"));
-+ ASSERT(si->sb.boardtype);
-+ }
-+
-+ /* setup the GPIO based LED powersave register */
-+ if (si->sb.ccrev >= 16) {
-+ if ((vars == NULL) || ((w = getintvar(*vars, "leddc")) == 0))
-+ w = DEFAULT_GPIOTIMERVAL;
-+ sb_corereg(si, 0, OFFSETOF(chipcregs_t, gpiotimerval), ~0, w);
-+ }
-+ if ((si->sb.chip == BCM4311_CHIP_ID) && (si->sb.chiprev <= 1)) {
-+ /* set proper clk setup delays before forcing HT */
-+ sb_clkctl_init((void *)si);
-+ sb_corereg((void*)si, SB_CC_IDX, OFFSETOF(chipcregs_t, system_clk_ctl),
-+ SYCC_HR, SYCC_HR);
-+ }
-+
-+
-+ return (si);
-+}
-+
-+uint
-+sb_coreid(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+
-+ return ((R_SBREG(si, &sb->sbidhigh) & SBIDH_CC_MASK) >> SBIDH_CC_SHIFT);
-+}
-+
-+uint
-+sb_coreidx(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->curidx);
-+}
-+
-+/* return current index of core */
-+static uint
-+_sb_coreidx(sb_info_t *si)
-+{
-+ sbconfig_t *sb;
-+ uint32 sbaddr = 0;
-+
-+ ASSERT(si);
-+
-+ switch (BUSTYPE(si->sb.bustype)) {
-+ case SB_BUS:
-+ sb = REGS2SB(si->curmap);
-+ sbaddr = sb_base(R_SBREG(si, &sb->sbadmatch0));
-+ break;
-+
-+ case PCI_BUS:
-+ sbaddr = OSL_PCI_READ_CONFIG(si->osh, PCI_BAR0_WIN, sizeof(uint32));
-+ break;
-+
-+ case PCMCIA_BUS: {
-+ uint8 tmp = 0;
-+
-+ OSL_PCMCIA_READ_ATTR(si->osh, PCMCIA_ADDR0, &tmp, 1);
-+ sbaddr = (uint)tmp << 12;
-+ OSL_PCMCIA_READ_ATTR(si->osh, PCMCIA_ADDR1, &tmp, 1);
-+ sbaddr |= (uint)tmp << 16;
-+ OSL_PCMCIA_READ_ATTR(si->osh, PCMCIA_ADDR2, &tmp, 1);
-+ sbaddr |= (uint)tmp << 24;
-+ break;
-+ }
-+
-+#ifdef BCMJTAG
-+ case JTAG_BUS:
-+ sbaddr = (uint32)si->curmap;
-+ break;
-+#endif /* BCMJTAG */
-+
-+ default:
-+ ASSERT(0);
-+ }
-+
-+ if (!GOODCOREADDR(sbaddr))
-+ return BADIDX;
-+
-+ return ((sbaddr - SB_ENUM_BASE) / SB_CORE_SIZE);
-+}
-+
-+uint
-+sb_corevendor(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+
-+ return ((R_SBREG(si, &sb->sbidhigh) & SBIDH_VC_MASK) >> SBIDH_VC_SHIFT);
-+}
-+
-+uint
-+sb_corerev(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+ uint sbidh;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+ sbidh = R_SBREG(si, &sb->sbidhigh);
-+
-+ return (SBCOREREV(sbidh));
-+}
-+
-+void *
-+sb_osh(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return si->osh;
-+}
-+
-+void
-+sb_setosh(sb_t *sbh, osl_t *osh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ if (si->osh != NULL) {
-+ SB_ERROR(("osh is already set....\n"));
-+ ASSERT(!si->osh);
-+ }
-+ si->osh = osh;
-+}
-+
-+/* set/clear sbtmstatelow core-specific flags */
-+uint32
-+sb_coreflags(sb_t *sbh, uint32 mask, uint32 val)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+ uint32 w;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+
-+ ASSERT((val & ~mask) == 0);
-+
-+ /* mask and set */
-+ if (mask || val) {
-+ w = (R_SBREG(si, &sb->sbtmstatelow) & ~mask) | val;
-+ W_SBREG(si, &sb->sbtmstatelow, w);
-+ }
-+
-+ /* return the new value */
-+ return (R_SBREG(si, &sb->sbtmstatelow));
-+}
-+
-+/* set/clear sbtmstatehigh core-specific flags */
-+uint32
-+sb_coreflagshi(sb_t *sbh, uint32 mask, uint32 val)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+ uint32 w;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+
-+ ASSERT((val & ~mask) == 0);
-+ ASSERT((mask & ~SBTMH_FL_MASK) == 0);
-+
-+ /* mask and set */
-+ if (mask || val) {
-+ w = (R_SBREG(si, &sb->sbtmstatehigh) & ~mask) | val;
-+ W_SBREG(si, &sb->sbtmstatehigh, w);
-+ }
-+
-+ /* return the new value */
-+ return (R_SBREG(si, &sb->sbtmstatehigh) & SBTMH_FL_MASK);
-+}
-+
-+/* Run bist on current core. Caller needs to take care of core-specific bist hazards */
-+int
-+sb_corebist(sb_t *sbh)
-+{
-+ uint32 sblo;
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+ int result = 0;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+
-+ sblo = R_SBREG(si, &sb->sbtmstatelow);
-+ W_SBREG(si, &sb->sbtmstatelow, (sblo | SBTML_FGC | SBTML_BE));
-+
-+ SPINWAIT(((R_SBREG(si, &sb->sbtmstatehigh) & SBTMH_BISTD) == 0), 100000);
-+
-+ if (R_SBREG(si, &sb->sbtmstatehigh) & SBTMH_BISTF)
-+ result = BCME_ERROR;
-+
-+ W_SBREG(si, &sb->sbtmstatelow, sblo);
-+
-+ return result;
-+}
-+
-+bool
-+sb_iscoreup(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+
-+ return ((R_SBREG(si, &sb->sbtmstatelow) &
-+ (SBTML_RESET | SBTML_REJ_MASK | SBTML_CLK)) == SBTML_CLK);
-+}
-+
-+/*
-+ * Switch to 'coreidx', issue a single arbitrary 32bit register mask&set operation,
-+ * switch back to the original core, and return the new value.
-+ *
-+ * When using the silicon backplane, no fidleing with interrupts or core switches are needed.
-+ *
-+ * Also, when using pci/pcie, we can optimize away the core switching for pci registers
-+ * and (on newer pci cores) chipcommon registers.
-+ */
-+static uint
-+sb_corereg(sb_info_t *si, uint coreidx, uint regoff, uint mask, uint val)
-+{
-+ uint origidx = 0;
-+ uint32 *r = NULL;
-+ uint w;
-+ uint intr_val = 0;
-+ bool fast = FALSE;
-+
-+ ASSERT(GOODIDX(coreidx));
-+ ASSERT(regoff < SB_CORE_SIZE);
-+ ASSERT((val & ~mask) == 0);
-+
-+#ifdef notyet
-+ if (si->sb.bustype == SB_BUS) {
-+ /* If internal bus, we can always get at everything */
-+ fast = TRUE;
-+ r = (uint32 *)((uchar *)si->regs[coreidx] + regoff);
-+ } else if (si->sb.bustype == PCI_BUS) {
-+ /* If pci/pcie, we can get at pci/pcie regs and on newer cores to chipc */
-+
-+ if ((si->coreid[coreidx] == SB_CC) &&
-+ ((si->sb.buscoretype == SB_PCIE) ||
-+ (si->sb.buscorerev >= 13))) {
-+ /* Chipc registers are mapped at 12KB */
-+
-+ fast = TRUE;
-+ r = (uint32 *)((char *)si->curmap + PCI_16KB0_CCREGS_OFFSET + regoff);
-+ } else if (si->sb.buscoreidx == coreidx) {
-+ /* pci registers are at either in the last 2KB of an 8KB window
-+ * or, in pcie and pci rev 13 at 8KB
-+ */
-+ fast = TRUE;
-+ if ((si->sb.buscoretype == SB_PCIE) ||
-+ (si->sb.buscorerev >= 13))
-+ r = (uint32 *)((char *)si->curmap +
-+ PCI_16KB0_PCIREGS_OFFSET + regoff);
-+ else
-+ r = (uint32 *)((char *)si->curmap +
-+ ((regoff >= SBCONFIGOFF) ?
-+ PCI_BAR0_PCISBR_OFFSET : PCI_BAR0_PCIREGS_OFFSET) +
-+ regoff);
-+ }
-+ }
-+#endif /* notyet */
-+
-+ if (!fast) {
-+ INTR_OFF(si, intr_val);
-+
-+ /* save current core index */
-+ origidx = sb_coreidx(&si->sb);
-+
-+ /* switch core */
-+ r = (uint32*) ((uchar*) sb_setcoreidx(&si->sb, coreidx) + regoff);
-+ }
-+ ASSERT(r);
-+
-+ /* mask and set */
-+ if (mask || val) {
-+ if (regoff >= SBCONFIGOFF) {
-+ w = (R_SBREG(si, r) & ~mask) | val;
-+ W_SBREG(si, r, w);
-+ } else {
-+ w = (R_REG(si->osh, r) & ~mask) | val;
-+ W_REG(si->osh, r, w);
-+ }
-+ }
-+
-+ /* readback */
-+ if (regoff >= SBCONFIGOFF)
-+ w = R_SBREG(si, r);
-+ else
-+ w = R_REG(si->osh, r);
-+
-+ if (!fast) {
-+ /* restore core index */
-+ if (origidx != coreidx)
-+ sb_setcoreidx(&si->sb, origidx);
-+
-+ INTR_RESTORE(si, intr_val);
-+ }
-+
-+ return (w);
-+}
-+
-+#define DWORD_ALIGN(x) (x & ~(0x03))
-+#define BYTE_POS(x) (x & 0x3)
-+#define WORD_POS(x) (x & 0x1)
-+
-+#define BYTE_SHIFT(x) (8 * BYTE_POS(x))
-+#define WORD_SHIFT(x) (16 * WORD_POS(x))
-+
-+#define BYTE_VAL(a, x) ((a >> BYTE_SHIFT(x)) & 0xFF)
-+#define WORD_VAL(a, x) ((a >> WORD_SHIFT(x)) & 0xFFFF)
-+
-+#define read_pci_cfg_byte(a) \
-+ (BYTE_VAL(OSL_PCI_READ_CONFIG(si->osh, DWORD_ALIGN(a), 4), a) & 0xff)
-+
-+#define read_pci_cfg_write(a) \
-+ (WORD_VAL(OSL_PCI_READ_CONFIG(si->osh, DWORD_ALIGN(a), 4), a) & 0xffff)
-+
-+
-+/* return TRUE if requested capability exists in the PCI config space */
-+static bool
-+sb_find_pci_capability(sb_info_t *si, uint8 req_cap_id, uchar *buf, uint32 *buflen)
-+{
-+ uint8 cap_id;
-+ uint8 cap_ptr;
-+ uint32 bufsize;
-+ uint8 byte_val;
-+
-+ if (BUSTYPE(si->sb.bustype) != PCI_BUS)
-+ return FALSE;
-+
-+ /* check for Header type 0 */
-+ byte_val = read_pci_cfg_byte(PCI_CFG_HDR);
-+ if ((byte_val & 0x7f) != PCI_HEADER_NORMAL)
-+ return FALSE;
-+
-+ /* check if the capability pointer field exists */
-+ byte_val = read_pci_cfg_byte(PCI_CFG_STAT);
-+ if (!(byte_val & PCI_CAPPTR_PRESENT))
-+ return FALSE;
-+
-+ cap_ptr = read_pci_cfg_byte(PCI_CFG_CAPPTR);
-+ /* check if the capability pointer is 0x00 */
-+ if (cap_ptr == 0x00)
-+ return FALSE;
-+
-+
-+ /* loop thr'u the capability list and see if the pcie capabilty exists */
-+
-+ cap_id = read_pci_cfg_byte(cap_ptr);
-+
-+ while (cap_id != req_cap_id) {
-+ cap_ptr = read_pci_cfg_byte((cap_ptr+1));
-+ if (cap_ptr == 0x00) break;
-+ cap_id = read_pci_cfg_byte(cap_ptr);
-+ }
-+ if (cap_id != req_cap_id) {
-+ return FALSE;
-+ }
-+ /* found the caller requested capability */
-+ if ((buf != NULL) && (buflen != NULL)) {
-+ bufsize = *buflen;
-+ if (!bufsize) goto end;
-+ *buflen = 0;
-+ /* copy the cpability data excluding cap ID and next ptr */
-+ cap_ptr += 2;
-+ if ((bufsize + cap_ptr) > SZPCR)
-+ bufsize = SZPCR - cap_ptr;
-+ *buflen = bufsize;
-+ while (bufsize--) {
-+ *buf = read_pci_cfg_byte(cap_ptr);
-+ cap_ptr++;
-+ buf++;
-+ }
-+ }
-+end:
-+ return TRUE;
-+}
-+
-+/* return TRUE if PCIE capability exists the pci config space */
-+static inline bool
-+sb_ispcie(sb_info_t *si)
-+{
-+ return (sb_find_pci_capability(si, PCI_CAP_PCIECAP_ID, NULL, NULL));
-+}
-+
-+/* scan the sb enumerated space to identify all cores */
-+static void
-+BCMINITFN(sb_scan)(sb_info_t *si)
-+{
-+ uint origidx;
-+ uint i;
-+ bool pci;
-+ bool pcie;
-+ uint pciidx;
-+ uint pcieidx;
-+ uint pcirev;
-+ uint pcierev;
-+
-+
-+ /* numcores should already be set */
-+ ASSERT((si->numcores > 0) && (si->numcores <= SB_MAXCORES));
-+
-+ /* save current core index */
-+ origidx = sb_coreidx(&si->sb);
-+
-+ si->sb.buscorerev = NOREV;
-+ si->sb.buscoreidx = BADIDX;
-+
-+ si->gpioidx = BADIDX;
-+
-+ pci = pcie = FALSE;
-+ pcirev = pcierev = NOREV;
-+ pciidx = pcieidx = BADIDX;
-+
-+ for (i = 0; i < si->numcores; i++) {
-+ sb_setcoreidx(&si->sb, i);
-+ si->coreid[i] = sb_coreid(&si->sb);
-+
-+ if (si->coreid[i] == SB_PCI) {
-+ pciidx = i;
-+ pcirev = sb_corerev(&si->sb);
-+ pci = TRUE;
-+ } else if (si->coreid[i] == SB_PCIE) {
-+ pcieidx = i;
-+ pcierev = sb_corerev(&si->sb);
-+ pcie = TRUE;
-+ } else if (si->coreid[i] == SB_PCMCIA) {
-+ si->sb.buscorerev = sb_corerev(&si->sb);
-+ si->sb.buscoretype = si->coreid[i];
-+ si->sb.buscoreidx = i;
-+ }
-+ }
-+ if (pci && pcie) {
-+ if (sb_ispcie(si))
-+ pci = FALSE;
-+ else
-+ pcie = FALSE;
-+ }
-+ if (pci) {
-+ si->sb.buscoretype = SB_PCI;
-+ si->sb.buscorerev = pcirev;
-+ si->sb.buscoreidx = pciidx;
-+ } else if (pcie) {
-+ si->sb.buscoretype = SB_PCIE;
-+ si->sb.buscorerev = pcierev;
-+ si->sb.buscoreidx = pcieidx;
-+ }
-+
-+ /*
-+ * Find the gpio "controlling core" type and index.
-+ * Precedence:
-+ * - if there's a chip common core - use that
-+ * - else if there's a pci core (rev >= 2) - use that
-+ * - else there had better be an extif core (4710 only)
-+ */
-+ if (GOODIDX(sb_findcoreidx(si, SB_CC, 0))) {
-+ si->gpioidx = sb_findcoreidx(si, SB_CC, 0);
-+ si->gpioid = SB_CC;
-+ } else if (PCI(si) && (si->sb.buscorerev >= 2)) {
-+ si->gpioidx = si->sb.buscoreidx;
-+ si->gpioid = SB_PCI;
-+ } else if (sb_findcoreidx(si, SB_EXTIF, 0)) {
-+ si->gpioidx = sb_findcoreidx(si, SB_EXTIF, 0);
-+ si->gpioid = SB_EXTIF;
-+ } else
-+ ASSERT(si->gpioidx != BADIDX);
-+
-+ /* return to original core index */
-+ sb_setcoreidx(&si->sb, origidx);
-+}
-+
-+/* may be called with core in reset */
-+void
-+sb_detach(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint idx;
-+
-+ si = SB_INFO(sbh);
-+
-+ if (si == NULL)
-+ return;
-+
-+ if (BUSTYPE(si->sb.bustype) == SB_BUS)
-+ for (idx = 0; idx < SB_MAXCORES; idx++)
-+ if (si->regs[idx]) {
-+ REG_UNMAP(si->regs[idx]);
-+ si->regs[idx] = NULL;
-+ }
-+#if !defined(BCMBUSTYPE) || (BCMBUSTYPE == SB_BUS)
-+ if (si != &ksi)
-+#endif /* !BCMBUSTYPE || (BCMBUSTYPE == SB_BUS) */
-+ MFREE(si->osh, si, sizeof(sb_info_t));
-+
-+}
-+
-+/* use pci dev id to determine chip id for chips not having a chipcommon core */
-+static uint
-+BCMINITFN(sb_pcidev2chip)(uint pcidev)
-+{
-+ if ((pcidev >= BCM4710_DEVICE_ID) && (pcidev <= BCM47XX_USB_ID))
-+ return (BCM4710_CHIP_ID);
-+ if ((pcidev >= BCM4402_ENET_ID) && (pcidev <= BCM4402_V90_ID))
-+ return (BCM4402_CHIP_ID);
-+ if (pcidev == BCM4401_ENET_ID)
-+ return (BCM4402_CHIP_ID);
-+
-+ return (0);
-+}
-+
-+/* convert chip number to number of i/o cores */
-+static uint
-+BCMINITFN(sb_chip2numcores)(uint chip)
-+{
-+ if (chip == BCM4710_CHIP_ID)
-+ return (9);
-+ if (chip == BCM4402_CHIP_ID)
-+ return (3);
-+ if (chip == BCM4306_CHIP_ID) /* < 4306c0 */
-+ return (6);
-+ if (chip == BCM4704_CHIP_ID)
-+ return (9);
-+ if (chip == BCM5365_CHIP_ID)
-+ return (7);
-+
-+ SB_ERROR(("sb_chip2numcores: unsupported chip 0x%x\n", chip));
-+ ASSERT(0);
-+ return (1);
-+}
-+
-+/* return index of coreid or BADIDX if not found */
-+static uint
-+sb_findcoreidx(sb_info_t *si, uint coreid, uint coreunit)
-+{
-+ uint found;
-+ uint i;
-+
-+ found = 0;
-+
-+ for (i = 0; i < si->numcores; i++)
-+ if (si->coreid[i] == coreid) {
-+ if (found == coreunit)
-+ return (i);
-+ found++;
-+ }
-+
-+ return (BADIDX);
-+}
-+
-+/*
-+ * this function changes logical "focus" to the indiciated core,
-+ * must be called with interrupt off.
-+ * Moreover, callers should keep interrupts off during switching out of and back to d11 core
-+ */
-+void*
-+sb_setcoreidx(sb_t *sbh, uint coreidx)
-+{
-+ sb_info_t *si;
-+ uint32 sbaddr;
-+ uint8 tmp;
-+
-+ si = SB_INFO(sbh);
-+
-+ if (coreidx >= si->numcores)
-+ return (NULL);
-+
-+ /*
-+ * If the user has provided an interrupt mask enabled function,
-+ * then assert interrupts are disabled before switching the core.
-+ */
-+ ASSERT((si->intrsenabled_fn == NULL) || !(*(si)->intrsenabled_fn)((si)->intr_arg));
-+
-+ sbaddr = SB_ENUM_BASE + (coreidx * SB_CORE_SIZE);
-+
-+ switch (BUSTYPE(si->sb.bustype)) {
-+ case SB_BUS:
-+ /* map new one */
-+ if (!si->regs[coreidx]) {
-+ si->regs[coreidx] = (void*)REG_MAP(sbaddr, SB_CORE_SIZE);
-+ ASSERT(GOODREGS(si->regs[coreidx]));
-+ }
-+ si->curmap = si->regs[coreidx];
-+ break;
-+
-+ case PCI_BUS:
-+ /* point bar0 window */
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_BAR0_WIN, 4, sbaddr);
-+ break;
-+
-+ case PCMCIA_BUS:
-+ tmp = (sbaddr >> 12) & 0x0f;
-+ OSL_PCMCIA_WRITE_ATTR(si->osh, PCMCIA_ADDR0, &tmp, 1);
-+ tmp = (sbaddr >> 16) & 0xff;
-+ OSL_PCMCIA_WRITE_ATTR(si->osh, PCMCIA_ADDR1, &tmp, 1);
-+ tmp = (sbaddr >> 24) & 0xff;
-+ OSL_PCMCIA_WRITE_ATTR(si->osh, PCMCIA_ADDR2, &tmp, 1);
-+ break;
-+#ifdef BCMJTAG
-+ case JTAG_BUS:
-+ /* map new one */
-+ if (!si->regs[coreidx]) {
-+ si->regs[coreidx] = (void *)sbaddr;
-+ ASSERT(GOODREGS(si->regs[coreidx]));
-+ }
-+ si->curmap = si->regs[coreidx];
-+ break;
-+#endif /* BCMJTAG */
-+ }
-+
-+ si->curidx = coreidx;
-+
-+ return (si->curmap);
-+}
-+
-+/*
-+ * this function changes logical "focus" to the indiciated core,
-+ * must be called with interrupt off.
-+ * Moreover, callers should keep interrupts off during switching out of and back to d11 core
-+ */
-+void*
-+sb_setcore(sb_t *sbh, uint coreid, uint coreunit)
-+{
-+ sb_info_t *si;
-+ uint idx;
-+
-+ si = SB_INFO(sbh);
-+ idx = sb_findcoreidx(si, coreid, coreunit);
-+ if (!GOODIDX(idx))
-+ return (NULL);
-+
-+ return (sb_setcoreidx(sbh, idx));
-+}
-+
-+/* return chip number */
-+uint
-+sb_chip(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.chip);
-+}
-+
-+/* return chip revision number */
-+uint
-+sb_chiprev(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.chiprev);
-+}
-+
-+/* return chip common revision number */
-+uint
-+sb_chipcrev(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.ccrev);
-+}
-+
-+/* return chip package option */
-+uint
-+sb_chippkg(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.chippkg);
-+}
-+
-+/* return PCI core rev. */
-+uint
-+sb_pcirev(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.buscorerev);
-+}
-+
-+bool
-+BCMINITFN(sb_war16165)(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ return (PCI(si) && (si->sb.buscorerev <= 10));
-+}
-+
-+static void
-+BCMINITFN(sb_war30841)(sb_info_t *si)
-+{
-+ sb_pcie_mdiowrite(si, MDIODATA_DEV_RX, SERDES_RX_TIMER1, 0x8128);
-+ sb_pcie_mdiowrite(si, MDIODATA_DEV_RX, SERDES_RX_CDR, 0x0100);
-+ sb_pcie_mdiowrite(si, MDIODATA_DEV_RX, SERDES_RX_CDRBW, 0x1466);
-+}
-+
-+/* return PCMCIA core rev. */
-+uint
-+BCMINITFN(sb_pcmciarev)(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.buscorerev);
-+}
-+
-+/* return board vendor id */
-+uint
-+sb_boardvendor(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.boardvendor);
-+}
-+
-+/* return boardtype */
-+uint
-+sb_boardtype(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ char *var;
-+
-+ si = SB_INFO(sbh);
-+
-+ if (BUSTYPE(si->sb.bustype) == SB_BUS && si->sb.boardtype == 0xffff) {
-+ /* boardtype format is a hex string */
-+ si->sb.boardtype = getintvar(NULL, "boardtype");
-+
-+ /* backward compatibility for older boardtype string format */
-+ if ((si->sb.boardtype == 0) && (var = getvar(NULL, "boardtype"))) {
-+ if (!strcmp(var, "bcm94710dev"))
-+ si->sb.boardtype = BCM94710D_BOARD;
-+ else if (!strcmp(var, "bcm94710ap"))
-+ si->sb.boardtype = BCM94710AP_BOARD;
-+ else if (!strcmp(var, "bu4710"))
-+ si->sb.boardtype = BU4710_BOARD;
-+ else if (!strcmp(var, "bcm94702mn"))
-+ si->sb.boardtype = BCM94702MN_BOARD;
-+ else if (!strcmp(var, "bcm94710r1"))
-+ si->sb.boardtype = BCM94710R1_BOARD;
-+ else if (!strcmp(var, "bcm94710r4"))
-+ si->sb.boardtype = BCM94710R4_BOARD;
-+ else if (!strcmp(var, "bcm94702cpci"))
-+ si->sb.boardtype = BCM94702CPCI_BOARD;
-+ else if (!strcmp(var, "bcm95380_rr"))
-+ si->sb.boardtype = BCM95380RR_BOARD;
-+ }
-+ }
-+
-+ return (si->sb.boardtype);
-+}
-+
-+/* return bus type of sbh device */
-+uint
-+sb_bus(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.bustype);
-+}
-+
-+/* return bus core type */
-+uint
-+sb_buscoretype(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ return (si->sb.buscoretype);
-+}
-+
-+/* return bus core revision */
-+uint
-+sb_buscorerev(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ si = SB_INFO(sbh);
-+
-+ return (si->sb.buscorerev);
-+}
-+
-+/* return list of found cores */
-+uint
-+sb_corelist(sb_t *sbh, uint coreid[])
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ bcopy((uchar*)si->coreid, (uchar*)coreid, (si->numcores * sizeof(uint)));
-+ return (si->numcores);
-+}
-+
-+/* return current register mapping */
-+void *
-+sb_coreregs(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ ASSERT(GOODREGS(si->curmap));
-+
-+ return (si->curmap);
-+}
-+
-+
-+/* do buffered registers update */
-+void
-+sb_commit(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint origidx;
-+ uint intr_val = 0;
-+
-+ si = SB_INFO(sbh);
-+
-+ origidx = si->curidx;
-+ ASSERT(GOODIDX(origidx));
-+
-+ INTR_OFF(si, intr_val);
-+
-+ /* switch over to chipcommon core if there is one, else use pci */
-+ if (si->sb.ccrev != NOREV) {
-+ chipcregs_t *ccregs = (chipcregs_t *)sb_setcore(sbh, SB_CC, 0);
-+
-+ /* do the buffer registers update */
-+ W_REG(si->osh, &ccregs->broadcastaddress, SB_COMMIT);
-+ W_REG(si->osh, &ccregs->broadcastdata, 0x0);
-+ } else if (PCI(si)) {
-+ sbpciregs_t *pciregs = (sbpciregs_t *)sb_setcore(sbh, SB_PCI, 0);
-+
-+ /* do the buffer registers update */
-+ W_REG(si->osh, &pciregs->bcastaddr, SB_COMMIT);
-+ W_REG(si->osh, &pciregs->bcastdata, 0x0);
-+ } else
-+ ASSERT(0);
-+
-+ /* restore core index */
-+ sb_setcoreidx(sbh, origidx);
-+ INTR_RESTORE(si, intr_val);
-+}
-+
-+/* reset and re-enable a core
-+ * inputs:
-+ * bits - core specific bits that are set during and after reset sequence
-+ * resetbits - core specific bits that are set only during reset sequence
-+ */
-+void
-+sb_core_reset(sb_t *sbh, uint32 bits, uint32 resetbits)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+ volatile uint32 dummy;
-+
-+ si = SB_INFO(sbh);
-+ ASSERT(GOODREGS(si->curmap));
-+ sb = REGS2SB(si->curmap);
-+
-+ /*
-+ * Must do the disable sequence first to work for arbitrary current core state.
-+ */
-+ sb_core_disable(sbh, (bits | resetbits));
-+
-+ /*
-+ * Now do the initialization sequence.
-+ */
-+
-+ /* set reset while enabling the clock and forcing them on throughout the core */
-+ W_SBREG(si, &sb->sbtmstatelow, (SBTML_FGC | SBTML_CLK | SBTML_RESET | bits | resetbits));
-+ dummy = R_SBREG(si, &sb->sbtmstatelow);
-+ OSL_DELAY(1);
-+
-+ if (R_SBREG(si, &sb->sbtmstatehigh) & SBTMH_SERR) {
-+ W_SBREG(si, &sb->sbtmstatehigh, 0);
-+ }
-+ if ((dummy = R_SBREG(si, &sb->sbimstate)) & (SBIM_IBE | SBIM_TO)) {
-+ AND_SBREG(si, &sb->sbimstate, ~(SBIM_IBE | SBIM_TO));
-+ }
-+
-+ /* clear reset and allow it to propagate throughout the core */
-+ W_SBREG(si, &sb->sbtmstatelow, (SBTML_FGC | SBTML_CLK | bits));
-+ dummy = R_SBREG(si, &sb->sbtmstatelow);
-+ OSL_DELAY(1);
-+
-+ /* leave clock enabled */
-+ W_SBREG(si, &sb->sbtmstatelow, (SBTML_CLK | bits));
-+ dummy = R_SBREG(si, &sb->sbtmstatelow);
-+ OSL_DELAY(1);
-+}
-+
-+void
-+sb_core_tofixup(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+
-+ si = SB_INFO(sbh);
-+
-+ if ((BUSTYPE(si->sb.bustype) != PCI_BUS) || PCIE(si) ||
-+ (PCI(si) && (si->sb.buscorerev >= 5)))
-+ return;
-+
-+ ASSERT(GOODREGS(si->curmap));
-+ sb = REGS2SB(si->curmap);
-+
-+ if (BUSTYPE(si->sb.bustype) == SB_BUS) {
-+ SET_SBREG(si, &sb->sbimconfiglow,
-+ SBIMCL_RTO_MASK | SBIMCL_STO_MASK,
-+ (0x5 << SBIMCL_RTO_SHIFT) | 0x3);
-+ } else {
-+ if (sb_coreid(sbh) == SB_PCI) {
-+ SET_SBREG(si, &sb->sbimconfiglow,
-+ SBIMCL_RTO_MASK | SBIMCL_STO_MASK,
-+ (0x3 << SBIMCL_RTO_SHIFT) | 0x2);
-+ } else {
-+ SET_SBREG(si, &sb->sbimconfiglow, (SBIMCL_RTO_MASK | SBIMCL_STO_MASK), 0);
-+ }
-+ }
-+
-+ sb_commit(sbh);
-+}
-+
-+/*
-+ * Set the initiator timeout for the "master core".
-+ * The master core is defined to be the core in control
-+ * of the chip and so it issues accesses to non-memory
-+ * locations (Because of dma *any* core can access memeory).
-+ *
-+ * The routine uses the bus to decide who is the master:
-+ * SB_BUS => mips
-+ * JTAG_BUS => chipc
-+ * PCI_BUS => pci or pcie
-+ * PCMCIA_BUS => pcmcia
-+ * SDIO_BUS => pcmcia
-+ *
-+ * This routine exists so callers can disable initiator
-+ * timeouts so accesses to very slow devices like otp
-+ * won't cause an abort. The routine allows arbitrary
-+ * settings of the service and request timeouts, though.
-+ *
-+ * Returns the timeout state before changing it or -1
-+ * on error.
-+ */
-+
-+#define TO_MASK (SBIMCL_RTO_MASK | SBIMCL_STO_MASK)
-+
-+uint32
-+sb_set_initiator_to(sb_t *sbh, uint32 to)
-+{
-+ sb_info_t *si;
-+ uint origidx, idx;
-+ uint intr_val = 0;
-+ uint32 tmp, ret = 0xffffffff;
-+ sbconfig_t *sb;
-+
-+ si = SB_INFO(sbh);
-+
-+ if ((to & ~TO_MASK) != 0)
-+ return ret;
-+
-+ /* Figure out the master core */
-+ idx = BADIDX;
-+ switch (BUSTYPE(si->sb.bustype)) {
-+ case PCI_BUS:
-+ idx = si->sb.buscoreidx;
-+ break;
-+ case JTAG_BUS:
-+ idx = SB_CC_IDX;
-+ break;
-+ case PCMCIA_BUS:
-+ case SDIO_BUS:
-+ idx = sb_findcoreidx(si, SB_PCMCIA, 0);
-+ break;
-+ case SB_BUS:
-+ if ((idx = sb_findcoreidx(si, SB_MIPS33, 0)) == BADIDX)
-+ idx = sb_findcoreidx(si, SB_MIPS, 0);
-+ break;
-+ default:
-+ ASSERT(0);
-+ }
-+ if (idx == BADIDX)
-+ return ret;
-+
-+ INTR_OFF(si, intr_val);
-+ origidx = sb_coreidx(sbh);
-+
-+ sb = REGS2SB(sb_setcoreidx(sbh, idx));
-+
-+ tmp = R_SBREG(si, &sb->sbimconfiglow);
-+ ret = tmp & TO_MASK;
-+ W_SBREG(si, &sb->sbimconfiglow, (tmp & ~TO_MASK) | to);
-+
-+ sb_commit(sbh);
-+ sb_setcoreidx(sbh, origidx);
-+ INTR_RESTORE(si, intr_val);
-+ return ret;
-+}
-+
-+void
-+sb_core_disable(sb_t *sbh, uint32 bits)
-+{
-+ sb_info_t *si;
-+ volatile uint32 dummy;
-+ uint32 rej;
-+ sbconfig_t *sb;
-+
-+ si = SB_INFO(sbh);
-+
-+ ASSERT(GOODREGS(si->curmap));
-+ sb = REGS2SB(si->curmap);
-+
-+ /* if core is already in reset, just return */
-+ if (R_SBREG(si, &sb->sbtmstatelow) & SBTML_RESET)
-+ return;
-+
-+ /* reject value changed between sonics 2.2 and 2.3 */
-+ if (si->sb.sonicsrev == SONICS_2_2)
-+ rej = (1 << SBTML_REJ_SHIFT);
-+ else
-+ rej = (2 << SBTML_REJ_SHIFT);
-+
-+ /* if clocks are not enabled, put into reset and return */
-+ if ((R_SBREG(si, &sb->sbtmstatelow) & SBTML_CLK) == 0)
-+ goto disable;
-+
-+ /* set target reject and spin until busy is clear (preserve core-specific bits) */
-+ OR_SBREG(si, &sb->sbtmstatelow, rej);
-+ dummy = R_SBREG(si, &sb->sbtmstatelow);
-+ OSL_DELAY(1);
-+ SPINWAIT((R_SBREG(si, &sb->sbtmstatehigh) & SBTMH_BUSY), 100000);
-+ if (R_SBREG(si, &sb->sbtmstatehigh) & SBTMH_BUSY)
-+ SB_ERROR(("%s: target state still busy\n", __FUNCTION__));
-+
-+ if (R_SBREG(si, &sb->sbidlow) & SBIDL_INIT) {
-+ OR_SBREG(si, &sb->sbimstate, SBIM_RJ);
-+ dummy = R_SBREG(si, &sb->sbimstate);
-+ OSL_DELAY(1);
-+ SPINWAIT((R_SBREG(si, &sb->sbimstate) & SBIM_BY), 100000);
-+ }
-+
-+ /* set reset and reject while enabling the clocks */
-+ W_SBREG(si, &sb->sbtmstatelow, (bits | SBTML_FGC | SBTML_CLK | rej | SBTML_RESET));
-+ dummy = R_SBREG(si, &sb->sbtmstatelow);
-+ OSL_DELAY(10);
-+
-+ /* don't forget to clear the initiator reject bit */
-+ if (R_SBREG(si, &sb->sbidlow) & SBIDL_INIT)
-+ AND_SBREG(si, &sb->sbimstate, ~SBIM_RJ);
-+
-+disable:
-+ /* leave reset and reject asserted */
-+ W_SBREG(si, &sb->sbtmstatelow, (bits | rej | SBTML_RESET));
-+ OSL_DELAY(1);
-+}
-+
-+/* set chip watchdog reset timer to fire in 'ticks' backplane cycles */
-+void
-+sb_watchdog(sb_t *sbh, uint ticks)
-+{
-+ sb_info_t *si = SB_INFO(sbh);
-+
-+ /* make sure we come up in fast clock mode */
-+ sb_clkctl_clk(sbh, CLK_FAST);
-+
-+ /* instant NMI */
-+ switch (si->gpioid) {
-+ case SB_CC:
-+#ifdef __mips__
-+ if (sb_chip(sbh) == BCM4785_CHIP_ID && ticks <= 1)
-+ MTC0(C0_BROADCOM, 4, (1 << 22));
-+#endif /* __mips__ */
-+ sb_corereg(si, 0, OFFSETOF(chipcregs_t, watchdog), ~0, ticks);
-+#ifdef __mips__
-+ if (sb_chip(sbh) == BCM4785_CHIP_ID && ticks <= 1) {
-+ __asm__ __volatile__ (
-+ ".set\tmips3\n\t"
-+ "sync\n\t"
-+ "wait\n\t"
-+ ".set\tmips0"
-+ );
-+ while (1);
-+ }
-+#endif /* __mips__ */
-+ break;
-+ case SB_EXTIF:
-+ sb_corereg(si, si->gpioidx, OFFSETOF(extifregs_t, watchdog), ~0, ticks);
-+ break;
-+ }
-+}
-+
-+/* initialize the pcmcia core */
-+void
-+sb_pcmcia_init(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint8 cor = 0;
-+
-+ si = SB_INFO(sbh);
-+
-+ /* enable d11 mac interrupts */
-+ OSL_PCMCIA_READ_ATTR(si->osh, PCMCIA_FCR0 + PCMCIA_COR, &cor, 1);
-+ cor |= COR_IRQEN | COR_FUNEN;
-+ OSL_PCMCIA_WRITE_ATTR(si->osh, PCMCIA_FCR0 + PCMCIA_COR, &cor, 1);
-+
-+}
-+
-+
-+/*
-+ * Configure the pci core for pci client (NIC) action
-+ * coremask is the bitvec of cores by index to be enabled.
-+ */
-+void
-+BCMINITFN(sb_pci_setup)(sb_t *sbh, uint coremask)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+ sbpciregs_t *pciregs;
-+ uint32 sbflag;
-+ uint32 w;
-+ uint idx;
-+ int reg_val;
-+
-+ si = SB_INFO(sbh);
-+
-+ /* if not pci bus, we're done */
-+ if (BUSTYPE(si->sb.bustype) != PCI_BUS)
-+ return;
-+
-+ ASSERT(PCI(si) || PCIE(si));
-+ ASSERT(si->sb.buscoreidx != BADIDX);
-+
-+ /* get current core index */
-+ idx = si->curidx;
-+
-+ /* we interrupt on this backplane flag number */
-+ ASSERT(GOODREGS(si->curmap));
-+ sb = REGS2SB(si->curmap);
-+ sbflag = R_SBREG(si, &sb->sbtpsflag) & SBTPS_NUM0_MASK;
-+
-+ /* switch over to pci core */
-+ pciregs = (sbpciregs_t*) sb_setcoreidx(sbh, si->sb.buscoreidx);
-+ sb = REGS2SB(pciregs);
-+
-+ /*
-+ * Enable sb->pci interrupts. Assume
-+ * PCI rev 2.3 support was added in pci core rev 6 and things changed..
-+ */
-+ if (PCIE(si) || (PCI(si) && ((si->sb.buscorerev) >= 6))) {
-+ /* pci config write to set this core bit in PCIIntMask */
-+ w = OSL_PCI_READ_CONFIG(si->osh, PCI_INT_MASK, sizeof(uint32));
-+ w |= (coremask << PCI_SBIM_SHIFT);
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_INT_MASK, sizeof(uint32), w);
-+ } else {
-+ /* set sbintvec bit for our flag number */
-+ OR_SBREG(si, &sb->sbintvec, (1 << sbflag));
-+ }
-+
-+ if (PCI(si)) {
-+ OR_REG(si->osh, &pciregs->sbtopci2, (SBTOPCI_PREF|SBTOPCI_BURST));
-+ if (si->sb.buscorerev >= 11)
-+ OR_REG(si->osh, &pciregs->sbtopci2, SBTOPCI_RC_READMULTI);
-+ if (si->sb.buscorerev < 5) {
-+ SET_SBREG(si, &sb->sbimconfiglow, SBIMCL_RTO_MASK | SBIMCL_STO_MASK,
-+ (0x3 << SBIMCL_RTO_SHIFT) | 0x2);
-+ sb_commit(sbh);
-+ }
-+ }
-+
-+#ifdef PCIE_SUPPOER
-+ /* PCIE workarounds */
-+ if (PCIE(si)) {
-+ if ((si->sb.buscorerev == 0) || (si->sb.buscorerev == 1)) {
-+ reg_val = sb_pcie_readreg((void *)sbh, (void *)PCIE_PCIEREGS,
-+ PCIE_TLP_WORKAROUNDSREG);
-+ reg_val |= 0x8;
-+ sb_pcie_writereg((void *)sbh, (void *)PCIE_PCIEREGS,
-+ PCIE_TLP_WORKAROUNDSREG, reg_val);
-+ }
-+
-+ if (si->sb.buscorerev == 1) {
-+ reg_val = sb_pcie_readreg((void *)sbh, (void *)PCIE_PCIEREGS,
-+ PCIE_DLLP_LCREG);
-+ reg_val |= (0x40);
-+ sb_pcie_writereg(sbh, (void *)PCIE_PCIEREGS, PCIE_DLLP_LCREG, reg_val);
-+ }
-+
-+ if (si->sb.buscorerev == 0)
-+ sb_war30841(si);
-+ }
-+#endif
-+
-+ /* switch back to previous core */
-+ sb_setcoreidx(sbh, idx);
-+}
-+
-+uint32
-+sb_base(uint32 admatch)
-+{
-+ uint32 base;
-+ uint type;
-+
-+ type = admatch & SBAM_TYPE_MASK;
-+ ASSERT(type < 3);
-+
-+ base = 0;
-+
-+ if (type == 0) {
-+ base = admatch & SBAM_BASE0_MASK;
-+ } else if (type == 1) {
-+ ASSERT(!(admatch & SBAM_ADNEG)); /* neg not supported */
-+ base = admatch & SBAM_BASE1_MASK;
-+ } else if (type == 2) {
-+ ASSERT(!(admatch & SBAM_ADNEG)); /* neg not supported */
-+ base = admatch & SBAM_BASE2_MASK;
-+ }
-+
-+ return (base);
-+}
-+
-+uint32
-+sb_size(uint32 admatch)
-+{
-+ uint32 size;
-+ uint type;
-+
-+ type = admatch & SBAM_TYPE_MASK;
-+ ASSERT(type < 3);
-+
-+ size = 0;
-+
-+ if (type == 0) {
-+ size = 1 << (((admatch & SBAM_ADINT0_MASK) >> SBAM_ADINT0_SHIFT) + 1);
-+ } else if (type == 1) {
-+ ASSERT(!(admatch & SBAM_ADNEG)); /* neg not supported */
-+ size = 1 << (((admatch & SBAM_ADINT1_MASK) >> SBAM_ADINT1_SHIFT) + 1);
-+ } else if (type == 2) {
-+ ASSERT(!(admatch & SBAM_ADNEG)); /* neg not supported */
-+ size = 1 << (((admatch & SBAM_ADINT2_MASK) >> SBAM_ADINT2_SHIFT) + 1);
-+ }
-+
-+ return (size);
-+}
-+
-+/* return the core-type instantiation # of the current core */
-+uint
-+sb_coreunit(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint idx;
-+ uint coreid;
-+ uint coreunit;
-+ uint i;
-+
-+ si = SB_INFO(sbh);
-+ coreunit = 0;
-+
-+ idx = si->curidx;
-+
-+ ASSERT(GOODREGS(si->curmap));
-+ coreid = sb_coreid(sbh);
-+
-+ /* count the cores of our type */
-+ for (i = 0; i < idx; i++)
-+ if (si->coreid[i] == coreid)
-+ coreunit++;
-+
-+ return (coreunit);
-+}
-+
-+static INLINE uint32
-+factor6(uint32 x)
-+{
-+ switch (x) {
-+ case CC_F6_2: return 2;
-+ case CC_F6_3: return 3;
-+ case CC_F6_4: return 4;
-+ case CC_F6_5: return 5;
-+ case CC_F6_6: return 6;
-+ case CC_F6_7: return 7;
-+ default: return 0;
-+ }
-+}
-+
-+/* calculate the speed the SB would run at given a set of clockcontrol values */
-+uint32
-+sb_clock_rate(uint32 pll_type, uint32 n, uint32 m)
-+{
-+ uint32 n1, n2, clock, m1, m2, m3, mc;
-+
-+ n1 = n & CN_N1_MASK;
-+ n2 = (n & CN_N2_MASK) >> CN_N2_SHIFT;
-+
-+ if (pll_type == PLL_TYPE6) {
-+ if (m & CC_T6_MMASK)
-+ return CC_T6_M1;
-+ else
-+ return CC_T6_M0;
-+ } else if ((pll_type == PLL_TYPE1) ||
-+ (pll_type == PLL_TYPE3) ||
-+ (pll_type == PLL_TYPE4) ||
-+ (pll_type == PLL_TYPE7)) {
-+ n1 = factor6(n1);
-+ n2 += CC_F5_BIAS;
-+ } else if (pll_type == PLL_TYPE2) {
-+ n1 += CC_T2_BIAS;
-+ n2 += CC_T2_BIAS;
-+ ASSERT((n1 >= 2) && (n1 <= 7));
-+ ASSERT((n2 >= 5) && (n2 <= 23));
-+ } else if (pll_type == PLL_TYPE5) {
-+ return (100000000);
-+ } else
-+ ASSERT(0);
-+ /* PLL types 3 and 7 use BASE2 (25Mhz) */
-+ if ((pll_type == PLL_TYPE3) ||
-+ (pll_type == PLL_TYPE7)) {
-+ clock = CC_CLOCK_BASE2 * n1 * n2;
-+ } else
-+ clock = CC_CLOCK_BASE1 * n1 * n2;
-+
-+ if (clock == 0)
-+ return 0;
-+
-+ m1 = m & CC_M1_MASK;
-+ m2 = (m & CC_M2_MASK) >> CC_M2_SHIFT;
-+ m3 = (m & CC_M3_MASK) >> CC_M3_SHIFT;
-+ mc = (m & CC_MC_MASK) >> CC_MC_SHIFT;
-+
-+ if ((pll_type == PLL_TYPE1) ||
-+ (pll_type == PLL_TYPE3) ||
-+ (pll_type == PLL_TYPE4) ||
-+ (pll_type == PLL_TYPE7)) {
-+ m1 = factor6(m1);
-+ if ((pll_type == PLL_TYPE1) || (pll_type == PLL_TYPE3))
-+ m2 += CC_F5_BIAS;
-+ else
-+ m2 = factor6(m2);
-+ m3 = factor6(m3);
-+
-+ switch (mc) {
-+ case CC_MC_BYPASS: return (clock);
-+ case CC_MC_M1: return (clock / m1);
-+ case CC_MC_M1M2: return (clock / (m1 * m2));
-+ case CC_MC_M1M2M3: return (clock / (m1 * m2 * m3));
-+ case CC_MC_M1M3: return (clock / (m1 * m3));
-+ default: return (0);
-+ }
-+ } else {
-+ ASSERT(pll_type == PLL_TYPE2);
-+
-+ m1 += CC_T2_BIAS;
-+ m2 += CC_T2M2_BIAS;
-+ m3 += CC_T2_BIAS;
-+ ASSERT((m1 >= 2) && (m1 <= 7));
-+ ASSERT((m2 >= 3) && (m2 <= 10));
-+ ASSERT((m3 >= 2) && (m3 <= 7));
-+
-+ if ((mc & CC_T2MC_M1BYP) == 0)
-+ clock /= m1;
-+ if ((mc & CC_T2MC_M2BYP) == 0)
-+ clock /= m2;
-+ if ((mc & CC_T2MC_M3BYP) == 0)
-+ clock /= m3;
-+
-+ return (clock);
-+ }
-+}
-+
-+/* returns the current speed the SB is running at */
-+uint32
-+sb_clock(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ extifregs_t *eir;
-+ chipcregs_t *cc;
-+ uint32 n, m;
-+ uint idx;
-+ uint32 pll_type, rate;
-+ uint intr_val = 0;
-+
-+ si = SB_INFO(sbh);
-+ idx = si->curidx;
-+ pll_type = PLL_TYPE1;
-+
-+ INTR_OFF(si, intr_val);
-+
-+ /* switch to extif or chipc core */
-+ if ((eir = (extifregs_t *) sb_setcore(sbh, SB_EXTIF, 0))) {
-+ n = R_REG(si->osh, &eir->clockcontrol_n);
-+ m = R_REG(si->osh, &eir->clockcontrol_sb);
-+ } else if ((cc = (chipcregs_t *) sb_setcore(sbh, SB_CC, 0))) {
-+ pll_type = R_REG(si->osh, &cc->capabilities) & CAP_PLL_MASK;
-+ if (pll_type == PLL_NONE) {
-+ INTR_RESTORE(si, intr_val);
-+ return 80000000;
-+ }
-+ n = R_REG(si->osh, &cc->clockcontrol_n);
-+ if (pll_type == PLL_TYPE6)
-+ m = R_REG(si->osh, &cc->clockcontrol_m3);
-+ else if ((pll_type == PLL_TYPE3) && !(BCMINIT(sb_chip)(sbh) == 0x5365))
-+ m = R_REG(si->osh, &cc->clockcontrol_m2);
-+ else
-+ m = R_REG(si->osh, &cc->clockcontrol_sb);
-+ } else {
-+ INTR_RESTORE(si, intr_val);
-+ return 0;
-+ }
-+
-+ /* calculate rate */
-+ if (BCMINIT(sb_chip)(sbh) == 0x5365)
-+ rate = 100000000;
-+ else {
-+ rate = sb_clock_rate(pll_type, n, m);
-+
-+ if (pll_type == PLL_TYPE3)
-+ rate = rate / 2;
-+ }
-+
-+ /* switch back to previous core */
-+ sb_setcoreidx(sbh, idx);
-+
-+ INTR_RESTORE(si, intr_val);
-+
-+ return rate;
-+}
-+
-+/* change logical "focus" to the gpio core for optimized access */
-+void*
-+sb_gpiosetcore(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ return (sb_setcoreidx(sbh, si->gpioidx));
-+}
-+
-+/* mask&set gpiocontrol bits */
-+uint32
-+sb_gpiocontrol(sb_t *sbh, uint32 mask, uint32 val, uint8 priority)
-+{
-+ sb_info_t *si;
-+ uint regoff;
-+
-+ si = SB_INFO(sbh);
-+ regoff = 0;
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* gpios could be shared on router platforms */
-+ if ((BUSTYPE(si->sb.bustype) == SB_BUS) && (val || mask)) {
-+ mask = priority ? (sb_gpioreservation & mask) :
-+ ((sb_gpioreservation | mask) & ~(sb_gpioreservation));
-+ val &= mask;
-+ }
-+
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ regoff = OFFSETOF(chipcregs_t, gpiocontrol);
-+ break;
-+
-+ case SB_PCI:
-+ regoff = OFFSETOF(sbpciregs_t, gpiocontrol);
-+ break;
-+
-+ case SB_EXTIF:
-+ return (0);
-+ }
-+
-+ return (sb_corereg(si, si->gpioidx, regoff, mask, val));
-+}
-+
-+/* mask&set gpio output enable bits */
-+uint32
-+sb_gpioouten(sb_t *sbh, uint32 mask, uint32 val, uint8 priority)
-+{
-+ sb_info_t *si;
-+ uint regoff;
-+
-+ si = SB_INFO(sbh);
-+ regoff = 0;
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* gpios could be shared on router platforms */
-+ if ((BUSTYPE(si->sb.bustype) == SB_BUS) && (val || mask)) {
-+ mask = priority ? (sb_gpioreservation & mask) :
-+ ((sb_gpioreservation | mask) & ~(sb_gpioreservation));
-+ val &= mask;
-+ }
-+
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ regoff = OFFSETOF(chipcregs_t, gpioouten);
-+ break;
-+
-+ case SB_PCI:
-+ regoff = OFFSETOF(sbpciregs_t, gpioouten);
-+ break;
-+
-+ case SB_EXTIF:
-+ regoff = OFFSETOF(extifregs_t, gpio[0].outen);
-+ break;
-+ }
-+
-+ return (sb_corereg(si, si->gpioidx, regoff, mask, val));
-+}
-+
-+/* mask&set gpio output bits */
-+uint32
-+sb_gpioout(sb_t *sbh, uint32 mask, uint32 val, uint8 priority)
-+{
-+ sb_info_t *si;
-+ uint regoff;
-+
-+ si = SB_INFO(sbh);
-+ regoff = 0;
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* gpios could be shared on router platforms */
-+ if ((BUSTYPE(si->sb.bustype) == SB_BUS) && (val || mask)) {
-+ mask = priority ? (sb_gpioreservation & mask) :
-+ ((sb_gpioreservation | mask) & ~(sb_gpioreservation));
-+ val &= mask;
-+ }
-+
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ regoff = OFFSETOF(chipcregs_t, gpioout);
-+ break;
-+
-+ case SB_PCI:
-+ regoff = OFFSETOF(sbpciregs_t, gpioout);
-+ break;
-+
-+ case SB_EXTIF:
-+ regoff = OFFSETOF(extifregs_t, gpio[0].out);
-+ break;
-+ }
-+
-+ return (sb_corereg(si, si->gpioidx, regoff, mask, val));
-+}
-+
-+/* reserve one gpio */
-+uint32
-+sb_gpioreserve(sb_t *sbh, uint32 gpio_bitmask, uint8 priority)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* only cores on SB_BUS share GPIO's and only applcation users need to
-+ * reserve/release GPIO
-+ */
-+ if ((BUSTYPE(si->sb.bustype) != SB_BUS) || (!priority)) {
-+ ASSERT((BUSTYPE(si->sb.bustype) == SB_BUS) && (priority));
-+ return -1;
-+ }
-+ /* make sure only one bit is set */
-+ if ((!gpio_bitmask) || ((gpio_bitmask) & (gpio_bitmask - 1))) {
-+ ASSERT((gpio_bitmask) && !((gpio_bitmask) & (gpio_bitmask - 1)));
-+ return -1;
-+ }
-+
-+ /* already reserved */
-+ if (sb_gpioreservation & gpio_bitmask)
-+ return -1;
-+ /* set reservation */
-+ sb_gpioreservation |= gpio_bitmask;
-+
-+ return sb_gpioreservation;
-+}
-+
-+/* release one gpio */
-+/*
-+ * releasing the gpio doesn't change the current value on the GPIO last write value
-+ * persists till some one overwrites it
-+*/
-+
-+uint32
-+sb_gpiorelease(sb_t *sbh, uint32 gpio_bitmask, uint8 priority)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* only cores on SB_BUS share GPIO's and only applcation users need to
-+ * reserve/release GPIO
-+ */
-+ if ((BUSTYPE(si->sb.bustype) != SB_BUS) || (!priority)) {
-+ ASSERT((BUSTYPE(si->sb.bustype) == SB_BUS) && (priority));
-+ return -1;
-+ }
-+ /* make sure only one bit is set */
-+ if ((!gpio_bitmask) || ((gpio_bitmask) & (gpio_bitmask - 1))) {
-+ ASSERT((gpio_bitmask) && !((gpio_bitmask) & (gpio_bitmask - 1)));
-+ return -1;
-+ }
-+
-+ /* already released */
-+ if (!(sb_gpioreservation & gpio_bitmask))
-+ return -1;
-+
-+ /* clear reservation */
-+ sb_gpioreservation &= ~gpio_bitmask;
-+
-+ return sb_gpioreservation;
-+}
-+
-+/* return the current gpioin register value */
-+uint32
-+sb_gpioin(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint regoff;
-+
-+ si = SB_INFO(sbh);
-+ regoff = 0;
-+
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ regoff = OFFSETOF(chipcregs_t, gpioin);
-+ break;
-+
-+ case SB_PCI:
-+ regoff = OFFSETOF(sbpciregs_t, gpioin);
-+ break;
-+
-+ case SB_EXTIF:
-+ regoff = OFFSETOF(extifregs_t, gpioin);
-+ break;
-+ }
-+
-+ return (sb_corereg(si, si->gpioidx, regoff, 0, 0));
-+}
-+
-+/* mask&set gpio interrupt polarity bits */
-+uint32
-+sb_gpiointpolarity(sb_t *sbh, uint32 mask, uint32 val, uint8 priority)
-+{
-+ sb_info_t *si;
-+ uint regoff;
-+
-+ si = SB_INFO(sbh);
-+ regoff = 0;
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* gpios could be shared on router platforms */
-+ if ((BUSTYPE(si->sb.bustype) == SB_BUS) && (val || mask)) {
-+ mask = priority ? (sb_gpioreservation & mask) :
-+ ((sb_gpioreservation | mask) & ~(sb_gpioreservation));
-+ val &= mask;
-+ }
-+
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ regoff = OFFSETOF(chipcregs_t, gpiointpolarity);
-+ break;
-+
-+ case SB_PCI:
-+ /* pci gpio implementation does not support interrupt polarity */
-+ ASSERT(0);
-+ break;
-+
-+ case SB_EXTIF:
-+ regoff = OFFSETOF(extifregs_t, gpiointpolarity);
-+ break;
-+ }
-+
-+ return (sb_corereg(si, si->gpioidx, regoff, mask, val));
-+}
-+
-+/* mask&set gpio interrupt mask bits */
-+uint32
-+sb_gpiointmask(sb_t *sbh, uint32 mask, uint32 val, uint8 priority)
-+{
-+ sb_info_t *si;
-+ uint regoff;
-+
-+ si = SB_INFO(sbh);
-+ regoff = 0;
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* gpios could be shared on router platforms */
-+ if ((BUSTYPE(si->sb.bustype) == SB_BUS) && (val || mask)) {
-+ mask = priority ? (sb_gpioreservation & mask) :
-+ ((sb_gpioreservation | mask) & ~(sb_gpioreservation));
-+ val &= mask;
-+ }
-+
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ regoff = OFFSETOF(chipcregs_t, gpiointmask);
-+ break;
-+
-+ case SB_PCI:
-+ /* pci gpio implementation does not support interrupt mask */
-+ ASSERT(0);
-+ break;
-+
-+ case SB_EXTIF:
-+ regoff = OFFSETOF(extifregs_t, gpiointmask);
-+ break;
-+ }
-+
-+ return (sb_corereg(si, si->gpioidx, regoff, mask, val));
-+}
-+
-+/* assign the gpio to an led */
-+uint32
-+sb_gpioled(sb_t *sbh, uint32 mask, uint32 val)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ if (si->sb.ccrev < 16)
-+ return -1;
-+
-+ /* gpio led powersave reg */
-+ return (sb_corereg(si, 0, OFFSETOF(chipcregs_t, gpiotimeroutmask), mask, val));
-+}
-+
-+/* mask & set gpio timer val */
-+uint32
-+sb_gpiotimerval(sb_t *sbh, uint32 mask, uint32 gpiotimerval)
-+{
-+ sb_info_t *si;
-+ si = SB_INFO(sbh);
-+
-+ if (si->sb.ccrev < 16)
-+ return -1;
-+
-+ return (sb_corereg(si, 0, OFFSETOF(chipcregs_t, gpiotimerval), mask, gpiotimerval));
-+}
-+
-+
-+/* return the slow clock source - LPO, XTAL, or PCI */
-+static uint
-+sb_slowclk_src(sb_info_t *si)
-+{
-+ chipcregs_t *cc;
-+
-+
-+ ASSERT(sb_coreid(&si->sb) == SB_CC);
-+
-+ if (si->sb.ccrev < 6) {
-+ if ((BUSTYPE(si->sb.bustype) == PCI_BUS) &&
-+ (OSL_PCI_READ_CONFIG(si->osh, PCI_GPIO_OUT, sizeof(uint32)) &
-+ PCI_CFG_GPIO_SCS))
-+ return (SCC_SS_PCI);
-+ else
-+ return (SCC_SS_XTAL);
-+ } else if (si->sb.ccrev < 10) {
-+ cc = (chipcregs_t*) sb_setcoreidx(&si->sb, si->curidx);
-+ return (R_REG(si->osh, &cc->slow_clk_ctl) & SCC_SS_MASK);
-+ } else /* Insta-clock */
-+ return (SCC_SS_XTAL);
-+}
-+
-+/* return the ILP (slowclock) min or max frequency */
-+static uint
-+sb_slowclk_freq(sb_info_t *si, bool max)
-+{
-+ chipcregs_t *cc;
-+ uint32 slowclk;
-+ uint div;
-+
-+
-+ ASSERT(sb_coreid(&si->sb) == SB_CC);
-+
-+ cc = (chipcregs_t*) sb_setcoreidx(&si->sb, si->curidx);
-+
-+ /* shouldn't be here unless we've established the chip has dynamic clk control */
-+ ASSERT(R_REG(si->osh, &cc->capabilities) & CAP_PWR_CTL);
-+
-+ slowclk = sb_slowclk_src(si);
-+ if (si->sb.ccrev < 6) {
-+ if (slowclk == SCC_SS_PCI)
-+ return (max? (PCIMAXFREQ/64) : (PCIMINFREQ/64));
-+ else
-+ return (max? (XTALMAXFREQ/32) : (XTALMINFREQ/32));
-+ } else if (si->sb.ccrev < 10) {
-+ div = 4 * (((R_REG(si->osh, &cc->slow_clk_ctl) & SCC_CD_MASK) >> SCC_CD_SHIFT) + 1);
-+ if (slowclk == SCC_SS_LPO)
-+ return (max? LPOMAXFREQ : LPOMINFREQ);
-+ else if (slowclk == SCC_SS_XTAL)
-+ return (max? (XTALMAXFREQ/div) : (XTALMINFREQ/div));
-+ else if (slowclk == SCC_SS_PCI)
-+ return (max? (PCIMAXFREQ/div) : (PCIMINFREQ/div));
-+ else
-+ ASSERT(0);
-+ } else {
-+ /* Chipc rev 10 is InstaClock */
-+ div = R_REG(si->osh, &cc->system_clk_ctl) >> SYCC_CD_SHIFT;
-+ div = 4 * (div + 1);
-+ return (max ? XTALMAXFREQ : (XTALMINFREQ/div));
-+ }
-+ return (0);
-+}
-+
-+static void
-+BCMINITFN(sb_clkctl_setdelay)(sb_info_t *si, void *chipcregs)
-+{
-+ chipcregs_t * cc;
-+ uint slowmaxfreq, pll_delay, slowclk;
-+ uint pll_on_delay, fref_sel_delay;
-+
-+ pll_delay = PLL_DELAY;
-+
-+ /* If the slow clock is not sourced by the xtal then add the xtal_on_delay
-+ * since the xtal will also be powered down by dynamic clk control logic.
-+ */
-+
-+ slowclk = sb_slowclk_src(si);
-+ if (slowclk != SCC_SS_XTAL)
-+ pll_delay += XTAL_ON_DELAY;
-+
-+ /* Starting with 4318 it is ILP that is used for the delays */
-+ slowmaxfreq = sb_slowclk_freq(si, (si->sb.ccrev >= 10) ? FALSE : TRUE);
-+
-+ pll_on_delay = ((slowmaxfreq * pll_delay) + 999999) / 1000000;
-+ fref_sel_delay = ((slowmaxfreq * FREF_DELAY) + 999999) / 1000000;
-+
-+ cc = (chipcregs_t *)chipcregs;
-+ W_REG(si->osh, &cc->pll_on_delay, pll_on_delay);
-+ W_REG(si->osh, &cc->fref_sel_delay, fref_sel_delay);
-+}
-+
-+/* initialize power control delay registers */
-+void
-+BCMINITFN(sb_clkctl_init)(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint origidx;
-+ chipcregs_t *cc;
-+
-+ si = SB_INFO(sbh);
-+
-+ origidx = si->curidx;
-+
-+ if ((cc = (chipcregs_t*) sb_setcore(sbh, SB_CC, 0)) == NULL)
-+ return;
-+
-+ if ((si->sb.chip == BCM4321_CHIP_ID) && (si->sb.chiprev < 2))
-+ W_REG(si->osh, &cc->chipcontrol,
-+ (si->sb.chiprev == 0) ? CHIPCTRL_4321A0_DEFAULT : CHIPCTRL_4321A1_DEFAULT);
-+
-+ if (!(R_REG(si->osh, &cc->capabilities) & CAP_PWR_CTL))
-+ goto done;
-+
-+ /* set all Instaclk chip ILP to 1 MHz */
-+ else if (si->sb.ccrev >= 10)
-+ SET_REG(si->osh, &cc->system_clk_ctl, SYCC_CD_MASK,
-+ (ILP_DIV_1MHZ << SYCC_CD_SHIFT));
-+
-+ sb_clkctl_setdelay(si, (void *)cc);
-+
-+done:
-+ sb_setcoreidx(sbh, origidx);
-+}
-+
-+/* return the value suitable for writing to the dot11 core FAST_PWRUP_DELAY register */
-+uint16
-+sb_clkctl_fast_pwrup_delay(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint origidx;
-+ chipcregs_t *cc;
-+ uint slowminfreq;
-+ uint16 fpdelay;
-+ uint intr_val = 0;
-+
-+ si = SB_INFO(sbh);
-+ fpdelay = 0;
-+ origidx = si->curidx;
-+
-+ INTR_OFF(si, intr_val);
-+
-+ if ((cc = (chipcregs_t*) sb_setcore(sbh, SB_CC, 0)) == NULL)
-+ goto done;
-+
-+ if (!(R_REG(si->osh, &cc->capabilities) & CAP_PWR_CTL))
-+ goto done;
-+
-+ slowminfreq = sb_slowclk_freq(si, FALSE);
-+ fpdelay = (((R_REG(si->osh, &cc->pll_on_delay) + 2) * 1000000) +
-+ (slowminfreq - 1)) / slowminfreq;
-+
-+done:
-+ sb_setcoreidx(sbh, origidx);
-+ INTR_RESTORE(si, intr_val);
-+ return (fpdelay);
-+}
-+
-+/* turn primary xtal and/or pll off/on */
-+int
-+sb_clkctl_xtal(sb_t *sbh, uint what, bool on)
-+{
-+ sb_info_t *si;
-+ uint32 in, out, outen;
-+
-+ si = SB_INFO(sbh);
-+
-+ switch (BUSTYPE(si->sb.bustype)) {
-+
-+
-+ case PCMCIA_BUS:
-+ return (0);
-+
-+
-+ case PCI_BUS:
-+
-+ /* pcie core doesn't have any mapping to control the xtal pu */
-+ if (PCIE(si))
-+ return -1;
-+
-+ in = OSL_PCI_READ_CONFIG(si->osh, PCI_GPIO_IN, sizeof(uint32));
-+ out = OSL_PCI_READ_CONFIG(si->osh, PCI_GPIO_OUT, sizeof(uint32));
-+ outen = OSL_PCI_READ_CONFIG(si->osh, PCI_GPIO_OUTEN, sizeof(uint32));
-+
-+ /*
-+ * Avoid glitching the clock if GPRS is already using it.
-+ * We can't actually read the state of the PLLPD so we infer it
-+ * by the value of XTAL_PU which *is* readable via gpioin.
-+ */
-+ if (on && (in & PCI_CFG_GPIO_XTAL))
-+ return (0);
-+
-+ if (what & XTAL)
-+ outen |= PCI_CFG_GPIO_XTAL;
-+ if (what & PLL)
-+ outen |= PCI_CFG_GPIO_PLL;
-+
-+ if (on) {
-+ /* turn primary xtal on */
-+ if (what & XTAL) {
-+ out |= PCI_CFG_GPIO_XTAL;
-+ if (what & PLL)
-+ out |= PCI_CFG_GPIO_PLL;
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_GPIO_OUT,
-+ sizeof(uint32), out);
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_GPIO_OUTEN,
-+ sizeof(uint32), outen);
-+ OSL_DELAY(XTAL_ON_DELAY);
-+ }
-+
-+ /* turn pll on */
-+ if (what & PLL) {
-+ out &= ~PCI_CFG_GPIO_PLL;
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_GPIO_OUT,
-+ sizeof(uint32), out);
-+ OSL_DELAY(2000);
-+ }
-+ } else {
-+ if (what & XTAL)
-+ out &= ~PCI_CFG_GPIO_XTAL;
-+ if (what & PLL)
-+ out |= PCI_CFG_GPIO_PLL;
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_GPIO_OUT, sizeof(uint32), out);
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_GPIO_OUTEN, sizeof(uint32),
-+ outen);
-+ }
-+
-+ default:
-+ return (-1);
-+ }
-+
-+ return (0);
-+}
-+
-+/* set dynamic clk control mode (forceslow, forcefast, dynamic) */
-+/* returns true if we are forcing fast clock */
-+bool
-+sb_clkctl_clk(sb_t *sbh, uint mode)
-+{
-+ sb_info_t *si;
-+ uint origidx;
-+ chipcregs_t *cc;
-+ uint32 scc;
-+ uint intr_val = 0;
-+
-+ si = SB_INFO(sbh);
-+
-+ /* chipcommon cores prior to rev6 don't support dynamic clock control */
-+ if (si->sb.ccrev < 6)
-+ return (FALSE);
-+
-+
-+ /* Chips with ccrev 10 are EOL and they don't have SYCC_HR which we use below */
-+ ASSERT(si->sb.ccrev != 10);
-+
-+ INTR_OFF(si, intr_val);
-+
-+ origidx = si->curidx;
-+
-+ if (sb_setcore(sbh, SB_MIPS33, 0) && (sb_corerev(&si->sb) <= 7) &&
-+ (BUSTYPE(si->sb.bustype) == SB_BUS) && (si->sb.ccrev >= 10))
-+ goto done;
-+
-+ /* PR32414WAR "Force HT clock on" all the time, no dynamic clk ctl */
-+ if ((si->sb.chip == BCM4311_CHIP_ID) && (si->sb.chiprev <= 1))
-+ goto done;
-+
-+ cc = (chipcregs_t*) sb_setcore(sbh, SB_CC, 0);
-+ ASSERT(cc != NULL);
-+
-+ if (!(R_REG(si->osh, &cc->capabilities) & CAP_PWR_CTL))
-+ goto done;
-+
-+ switch (mode) {
-+ case CLK_FAST: /* force fast (pll) clock */
-+ if (si->sb.ccrev < 10) {
-+ /* don't forget to force xtal back on before we clear SCC_DYN_XTAL.. */
-+ sb_clkctl_xtal(&si->sb, XTAL, ON);
-+
-+ SET_REG(si->osh, &cc->slow_clk_ctl, (SCC_XC | SCC_FS | SCC_IP), SCC_IP);
-+ } else
-+ OR_REG(si->osh, &cc->system_clk_ctl, SYCC_HR);
-+ /* wait for the PLL */
-+ OSL_DELAY(PLL_DELAY);
-+ break;
-+
-+ case CLK_DYNAMIC: /* enable dynamic clock control */
-+
-+ if (si->sb.ccrev < 10) {
-+ scc = R_REG(si->osh, &cc->slow_clk_ctl);
-+ scc &= ~(SCC_FS | SCC_IP | SCC_XC);
-+ if ((scc & SCC_SS_MASK) != SCC_SS_XTAL)
-+ scc |= SCC_XC;
-+ W_REG(si->osh, &cc->slow_clk_ctl, scc);
-+
-+ /* for dynamic control, we have to release our xtal_pu "force on" */
-+ if (scc & SCC_XC)
-+ sb_clkctl_xtal(&si->sb, XTAL, OFF);
-+ } else {
-+ /* Instaclock */
-+ AND_REG(si->osh, &cc->system_clk_ctl, ~SYCC_HR);
-+ }
-+ break;
-+
-+ default:
-+ ASSERT(0);
-+ }
-+
-+done:
-+ sb_setcoreidx(sbh, origidx);
-+ INTR_RESTORE(si, intr_val);
-+ return (mode == CLK_FAST);
-+}
-+
-+/* register driver interrupt disabling and restoring callback functions */
-+void
-+sb_register_intr_callback(sb_t *sbh, void *intrsoff_fn, void *intrsrestore_fn,
-+ void *intrsenabled_fn, void *intr_arg)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ si->intr_arg = intr_arg;
-+ si->intrsoff_fn = (sb_intrsoff_t)intrsoff_fn;
-+ si->intrsrestore_fn = (sb_intrsrestore_t)intrsrestore_fn;
-+ si->intrsenabled_fn = (sb_intrsenabled_t)intrsenabled_fn;
-+ /* save current core id. when this function called, the current core
-+ * must be the core which provides driver functions(il, et, wl, etc.)
-+ */
-+ si->dev_coreid = si->coreid[si->curidx];
-+}
-+
-+
-+int
-+sb_corepciid(sb_t *sbh, uint func, uint16 *pcivendor, uint16 *pcidevice,
-+ uint8 *pciclass, uint8 *pcisubclass, uint8 *pciprogif,
-+ uint8 *pciheader)
-+{
-+ uint16 vendor = 0xffff, device = 0xffff;
-+ uint core, unit;
-+ uint chip, chippkg;
-+ uint nfunc;
-+ char varname[SB_DEVPATH_BUFSZ + 8];
-+ uint8 class, subclass, progif;
-+ char devpath[SB_DEVPATH_BUFSZ];
-+ uint8 header;
-+
-+ core = sb_coreid(sbh);
-+ unit = sb_coreunit(sbh);
-+
-+ chip = sb_chip(sbh);
-+ chippkg = sb_chippkg(sbh);
-+
-+ progif = 0;
-+ header = PCI_HEADER_NORMAL;
-+
-+ /* Verify whether the function exists for the core */
-+ nfunc = (core == SB_USB20H) ? 2 : 1;
-+ if (func >= nfunc)
-+ return BCME_ERROR;
-+
-+ /* Known vendor translations */
-+ switch (sb_corevendor(sbh)) {
-+ case SB_VEND_BCM:
-+ vendor = VENDOR_BROADCOM;
-+ break;
-+ default:
-+ return BCME_ERROR;
-+ }
-+
-+ /* Determine class based on known core codes */
-+ switch (core) {
-+ case SB_ILINE20:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_ETHER;
-+ device = BCM47XX_ILINE_ID;
-+ break;
-+ case SB_ENET:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_ETHER;
-+ device = BCM47XX_ENET_ID;
-+ break;
-+ case SB_GIGETH:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_ETHER;
-+ device = BCM47XX_GIGETH_ID;
-+ break;
-+ case SB_SDRAM:
-+ case SB_MEMC:
-+ class = PCI_CLASS_MEMORY;
-+ subclass = PCI_MEMORY_RAM;
-+ device = (uint16)core;
-+ break;
-+ case SB_PCI:
-+ case SB_PCIE:
-+ class = PCI_CLASS_BRIDGE;
-+ subclass = PCI_BRIDGE_PCI;
-+ device = (uint16)core;
-+ header = PCI_HEADER_BRIDGE;
-+ break;
-+ case SB_MIPS:
-+ case SB_MIPS33:
-+ class = PCI_CLASS_CPU;
-+ subclass = PCI_CPU_MIPS;
-+ device = (uint16)core;
-+ break;
-+ case SB_CODEC:
-+ class = PCI_CLASS_COMM;
-+ subclass = PCI_COMM_MODEM;
-+ device = BCM47XX_V90_ID;
-+ break;
-+ case SB_USB:
-+ class = PCI_CLASS_SERIAL;
-+ subclass = PCI_SERIAL_USB;
-+ progif = 0x10; /* OHCI */
-+ device = BCM47XX_USB_ID;
-+ break;
-+ case SB_USB11H:
-+ class = PCI_CLASS_SERIAL;
-+ subclass = PCI_SERIAL_USB;
-+ progif = 0x10; /* OHCI */
-+ device = BCM47XX_USBH_ID;
-+ break;
-+ case SB_USB20H:
-+ class = PCI_CLASS_SERIAL;
-+ subclass = PCI_SERIAL_USB;
-+ progif = func == 0 ? 0x10 : 0x20; /* OHCI/EHCI */
-+ device = BCM47XX_USB20H_ID;
-+ header = 0x80; /* multifunction */
-+ break;
-+ case SB_USB11D:
-+ class = PCI_CLASS_SERIAL;
-+ subclass = PCI_SERIAL_USB;
-+ device = BCM47XX_USBD_ID;
-+ break;
-+ case SB_USB20D:
-+ class = PCI_CLASS_SERIAL;
-+ subclass = PCI_SERIAL_USB;
-+ device = BCM47XX_USB20D_ID;
-+ break;
-+ case SB_IPSEC:
-+ class = PCI_CLASS_CRYPT;
-+ subclass = PCI_CRYPT_NETWORK;
-+ device = BCM47XX_IPSEC_ID;
-+ break;
-+ case SB_ROBO:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_OTHER;
-+ device = BCM47XX_ROBO_ID;
-+ break;
-+ case SB_EXTIF:
-+ case SB_CC:
-+ class = PCI_CLASS_MEMORY;
-+ subclass = PCI_MEMORY_FLASH;
-+ device = (uint16)core;
-+ break;
-+ case SB_D11:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_OTHER;
-+ /* Let nvram variable override core ID */
-+ sb_devpath(sbh, devpath, sizeof(devpath));
-+ sprintf(varname, "%sdevid", devpath);
-+ if ((device = (uint16)getintvar(NULL, varname)))
-+ break;
-+ /*
-+ * no longer support wl%did, but keep the code
-+ * here for backward compatibility.
-+ */
-+ sprintf(varname, "wl%did", unit);
-+ if ((device = (uint16)getintvar(NULL, varname)))
-+ break;
-+ /* Chip specific conversion */
-+ if (chip == BCM4712_CHIP_ID) {
-+ if (chippkg == BCM4712SMALL_PKG_ID)
-+ device = BCM4306_D11G_ID;
-+ else
-+ device = BCM4306_D11DUAL_ID;
-+ break;
-+ }
-+ /* ignore it */
-+ device = 0xffff;
-+ break;
-+ case SB_SATAXOR:
-+ class = PCI_CLASS_XOR;
-+ subclass = PCI_XOR_QDMA;
-+ device = BCM47XX_SATAXOR_ID;
-+ break;
-+ case SB_ATA100:
-+ class = PCI_CLASS_DASDI;
-+ subclass = PCI_DASDI_IDE;
-+ device = BCM47XX_ATA100_ID;
-+ break;
-+
-+ default:
-+ class = subclass = progif = 0xff;
-+ device = (uint16)core;
-+ break;
-+ }
-+
-+ *pcivendor = vendor;
-+ *pcidevice = device;
-+ *pciclass = class;
-+ *pcisubclass = subclass;
-+ *pciprogif = progif;
-+ *pciheader = header;
-+
-+ return 0;
-+}
-+
-+
-+
-+/* use the mdio interface to write to mdio slaves */
-+static int
-+sb_pcie_mdiowrite(sb_info_t *si, uint physmedia, uint regaddr, uint val)
-+{
-+ uint mdiodata;
-+ uint i = 0;
-+ sbpcieregs_t *pcieregs;
-+
-+ pcieregs = (sbpcieregs_t*) sb_setcoreidx(&si->sb, si->sb.buscoreidx);
-+ ASSERT(pcieregs);
-+
-+ /* enable mdio access to SERDES */
-+ W_REG(si->osh, (&pcieregs->mdiocontrol), MDIOCTL_PREAM_EN | MDIOCTL_DIVISOR_VAL);
-+
-+ mdiodata = MDIODATA_START | MDIODATA_WRITE |
-+ (physmedia << MDIODATA_DEVADDR_SHF) |
-+ (regaddr << MDIODATA_REGADDR_SHF) | MDIODATA_TA | val;
-+
-+ W_REG(si->osh, (&pcieregs->mdiodata), mdiodata);
-+
-+ PR28829_DELAY();
-+
-+ /* retry till the transaction is complete */
-+ while (i < 10) {
-+ if (R_REG(si->osh, &(pcieregs->mdiocontrol)) & MDIOCTL_ACCESS_DONE) {
-+ /* Disable mdio access to SERDES */
-+ W_REG(si->osh, (&pcieregs->mdiocontrol), 0);
-+ return 0;
-+ }
-+ OSL_DELAY(1000);
-+ i++;
-+ }
-+
-+ SB_ERROR(("sb_pcie_mdiowrite: timed out\n"));
-+ /* Disable mdio access to SERDES */
-+ W_REG(si->osh, (&pcieregs->mdiocontrol), 0);
-+ ASSERT(0);
-+ return 1;
-+
-+}
-+
-+/* indirect way to read pcie config regs */
-+uint
-+sb_pcie_readreg(void *sb, void* arg1, uint offset)
-+{
-+ sb_info_t *si;
-+ sb_t *sbh;
-+ uint retval = 0xFFFFFFFF;
-+ sbpcieregs_t *pcieregs;
-+ uint addrtype;
-+
-+ sbh = (sb_t *)sb;
-+ si = SB_INFO(sbh);
-+ ASSERT(PCIE(si));
-+
-+ pcieregs = (sbpcieregs_t *)sb_setcore(sbh, SB_PCIE, 0);
-+ ASSERT(pcieregs);
-+
-+ addrtype = (uint)((uintptr)arg1);
-+ switch (addrtype) {
-+ case PCIE_CONFIGREGS:
-+ W_REG(si->osh, (&pcieregs->configaddr), offset);
-+ retval = R_REG(si->osh, &(pcieregs->configdata));
-+ break;
-+ case PCIE_PCIEREGS:
-+ W_REG(si->osh, &(pcieregs->pcieaddr), offset);
-+ retval = R_REG(si->osh, &(pcieregs->pciedata));
-+ break;
-+ default:
-+ ASSERT(0);
-+ break;
-+ }
-+ return retval;
-+}
-+
-+/* indirect way to write pcie config/mdio/pciecore regs */
-+uint
-+sb_pcie_writereg(sb_t *sbh, void *arg1, uint offset, uint val)
-+{
-+ sb_info_t *si;
-+ sbpcieregs_t *pcieregs;
-+ uint addrtype;
-+
-+ si = SB_INFO(sbh);
-+ ASSERT(PCIE(si));
-+
-+ pcieregs = (sbpcieregs_t *)sb_setcore(sbh, SB_PCIE, 0);
-+ ASSERT(pcieregs);
-+
-+ addrtype = (uint)((uintptr)arg1);
-+
-+ switch (addrtype) {
-+ case PCIE_CONFIGREGS:
-+ W_REG(si->osh, (&pcieregs->configaddr), offset);
-+ W_REG(si->osh, (&pcieregs->configdata), val);
-+ break;
-+ case PCIE_PCIEREGS:
-+ W_REG(si->osh, (&pcieregs->pcieaddr), offset);
-+ W_REG(si->osh, (&pcieregs->pciedata), val);
-+ break;
-+ default:
-+ ASSERT(0);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+/* Build device path. Support SB, PCI, and JTAG for now. */
-+int
-+sb_devpath(sb_t *sbh, char *path, int size)
-+{
-+ ASSERT(path);
-+ ASSERT(size >= SB_DEVPATH_BUFSZ);
-+
-+ switch (BUSTYPE((SB_INFO(sbh))->sb.bustype)) {
-+ case SB_BUS:
-+ case JTAG_BUS:
-+ sprintf(path, "sb/%u/", sb_coreidx(sbh));
-+ break;
-+ case PCI_BUS:
-+ ASSERT((SB_INFO(sbh))->osh);
-+ sprintf(path, "pci/%u/%u/", OSL_PCI_BUS((SB_INFO(sbh))->osh),
-+ OSL_PCI_SLOT((SB_INFO(sbh))->osh));
-+ break;
-+ case PCMCIA_BUS:
-+ SB_ERROR(("sb_devpath: OSL_PCMCIA_BUS() not implemented, bus 1 assumed\n"));
-+ SB_ERROR(("sb_devpath: OSL_PCMCIA_SLOT() not implemented, slot 1 assumed\n"));
-+ sprintf(path, "pc/%u/%u/", 1, 1);
-+ break;
-+ case SDIO_BUS:
-+ SB_ERROR(("sb_devpath: device 0 assumed\n"));
-+ sprintf(path, "sd/%u/", sb_coreidx(sbh));
-+ break;
-+ default:
-+ ASSERT(0);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+/*
-+ * Fixup SROMless PCI device's configuration.
-+ * The current core may be changed upon return.
-+ */
-+static int
-+sb_pci_fixcfg(sb_info_t *si)
-+{
-+ uint origidx, pciidx;
-+ sbpciregs_t *pciregs;
-+ sbpcieregs_t *pcieregs;
-+ uint16 val16, *reg16;
-+ char name[SB_DEVPATH_BUFSZ+16], *value;
-+ char devpath[SB_DEVPATH_BUFSZ];
-+
-+ ASSERT(BUSTYPE(si->sb.bustype) == PCI_BUS);
-+
-+ /* Fixup PI in SROM shadow area to enable the correct PCI core access */
-+ /* save the current index */
-+ origidx = sb_coreidx(&si->sb);
-+
-+ /* check 'pi' is correct and fix it if not */
-+ if (si->sb.buscoretype == SB_PCIE) {
-+ pcieregs = (sbpcieregs_t *)sb_setcore(&si->sb, SB_PCIE, 0);
-+ ASSERT(pcieregs);
-+ reg16 = &pcieregs->sprom[SRSH_PI_OFFSET];
-+ } else if (si->sb.buscoretype == SB_PCI) {
-+ pciregs = (sbpciregs_t *)sb_setcore(&si->sb, SB_PCI, 0);
-+ ASSERT(pciregs);
-+ reg16 = &pciregs->sprom[SRSH_PI_OFFSET];
-+ } else {
-+ ASSERT(0);
-+ return -1;
-+ }
-+ pciidx = sb_coreidx(&si->sb);
-+ val16 = R_REG(si->osh, reg16);
-+ if (((val16 & SRSH_PI_MASK) >> SRSH_PI_SHIFT) != (uint16)pciidx) {
-+ val16 = (uint16)(pciidx << SRSH_PI_SHIFT) | (val16 & ~SRSH_PI_MASK);
-+ W_REG(si->osh, reg16, val16);
-+ }
-+
-+ /* restore the original index */
-+ sb_setcoreidx(&si->sb, origidx);
-+
-+ /*
-+ * Fixup bar0window in PCI config space to make the core indicated
-+ * by the nvram variable the current core.
-+ * !Do it last, it may change the current core!
-+ */
-+ if (sb_devpath(&si->sb, devpath, sizeof(devpath)))
-+ return -1;
-+ sprintf(name, "%sb0w", devpath);
-+ if ((value = getvar(NULL, name))) {
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_BAR0_WIN, sizeof(uint32),
-+ bcm_strtoul(value, NULL, 16));
-+ /* update curidx since the current core is changed */
-+ si->curidx = _sb_coreidx(si);
-+ if (si->curidx == BADIDX) {
-+ SB_ERROR(("sb_pci_fixcfg: bad core index\n"));
-+ return -1;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+static uint
-+sb_chipc_capability(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ /* Make sure that there is ChipCommon core present */
-+ if (si->coreid[SB_CC_IDX] == SB_CC)
-+ return (sb_corereg(si, SB_CC_IDX, OFFSETOF(chipcregs_t, capabilities),
-+ 0, 0));
-+ return 0;
-+}
-+
-+/* Return ADDR64 capability of the backplane */
-+bool
-+sb_backplane64(sb_t *sbh)
-+{
-+ return ((sb_chipc_capability(sbh) & CAP_BKPLN64) != 0);
-+}
-+
-+void
-+sb_btcgpiowar(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint origidx;
-+ uint intr_val = 0;
-+ chipcregs_t *cc;
-+ si = SB_INFO(sbh);
-+
-+ /* Make sure that there is ChipCommon core present &&
-+ * UART_TX is strapped to 1
-+ */
-+ if (!(sb_chipc_capability(sbh) & CAP_UARTGPIO))
-+ return;
-+
-+ /* sb_corereg cannot be used as we have to guarantee 8-bit read/writes */
-+ INTR_OFF(si, intr_val);
-+
-+ origidx = sb_coreidx(sbh);
-+
-+ cc = (chipcregs_t *)sb_setcore(sbh, SB_CC, 0);
-+ if (cc == NULL)
-+ goto end;
-+
-+ W_REG(si->osh, &cc->uart0mcr, R_REG(si->osh, &cc->uart0mcr) | 0x04);
-+
-+end:
-+ /* restore the original index */
-+ sb_setcoreidx(sbh, origidx);
-+
-+ INTR_RESTORE(si, intr_val);
-+}
-+
-+/* check if the device is removed */
-+bool
-+sb_deviceremoved(sb_t *sbh)
-+{
-+ uint32 w;
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ switch (BUSTYPE(si->sb.bustype)) {
-+ case PCI_BUS:
-+ ASSERT(si->osh);
-+ w = OSL_PCI_READ_CONFIG(si->osh, PCI_CFG_VID, sizeof(uint32));
-+ if ((w & 0xFFFF) != VENDOR_BROADCOM)
-+ return TRUE;
-+ else
-+ return FALSE;
-+ default:
-+ return FALSE;
-+ }
-+ return FALSE;
-+}
-+
-+/* Return the RAM size of the SOCRAM core */
-+uint32
-+sb_socram_size(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint origidx;
-+ uint intr_val = 0;
-+
-+ sbsocramregs_t *regs;
-+ bool wasup;
-+ uint corerev;
-+ uint32 coreinfo;
-+ uint memsize = 0;
-+
-+ si = SB_INFO(sbh);
-+ ASSERT(si);
-+
-+ /* Block ints and save current core */
-+ INTR_OFF(si, intr_val);
-+ origidx = sb_coreidx(sbh);
-+
-+ /* Switch to SOCRAM core */
-+ if (!(regs = sb_setcore(sbh, SB_SOCRAM, 0)))
-+ goto done;
-+
-+ /* Get info for determining size */
-+ if (!(wasup = sb_iscoreup(sbh)))
-+ sb_core_reset(sbh, 0, 0);
-+ corerev = sb_corerev(sbh);
-+ coreinfo = R_REG(si->osh, &regs->coreinfo);
-+
-+ /* Calculate size from coreinfo based on rev */
-+ switch (corerev) {
-+ case 0:
-+ memsize = 1 << (16 + (coreinfo & SRCI_MS0_MASK));
-+ break;
-+ default: /* rev >= 1 */
-+ memsize = 1 << (SR_BSZ_BASE + (coreinfo & SRCI_SRBSZ_MASK));
-+ memsize *= (coreinfo & SRCI_SRNB_MASK) >> SRCI_SRNB_SHIFT;
-+ break;
-+ }
-+
-+ /* Return to previous state and core */
-+ if (!wasup)
-+ sb_core_disable(sbh, 0);
-+ sb_setcoreidx(sbh, origidx);
-+
-+done:
-+ INTR_RESTORE(si, intr_val);
-+ return memsize;
-+}
-+
-+
-diff -urN linux.old/arch/mips/bcm947xx/setup.c linux.dev/arch/mips/bcm947xx/setup.c
---- linux.old/arch/mips/bcm947xx/setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/setup.c 2006-04-27 23:22:53.000000000 +0200
-@@ -0,0 +1,241 @@
-+/*
-+ * Generic setup routines for Broadcom MIPS boards
-+ *
-+ * Copyright (C) 2005 Felix Fietkau <nbd@openwrt.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 SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/serialP.h>
-+#include <linux/ide.h>
-+#include <asm/bootinfo.h>
-+#include <asm/cpu.h>
-+#include <asm/time.h>
-+#include <asm/reboot.h>
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <sbutils.h>
-+#include <bcmutils.h>
-+#include <bcmnvram.h>
-+#include <sbhndmips.h>
-+#include <hndmips.h>
-+#include <trxhdr.h>
-+
-+/* Virtual IRQ base, after last hw IRQ */
-+#define SBMIPS_VIRTIRQ_BASE 6
-+
-+/* # IRQs, hw and sw IRQs */
-+#define SBMIPS_NUMIRQS 8
-+
-+/* Global SB handle */
-+sb_t *bcm947xx_sbh = NULL;
-+spinlock_t bcm947xx_sbh_lock = SPIN_LOCK_UNLOCKED;
-+
-+/* Convenience */
-+#define sbh bcm947xx_sbh
-+#define sbh_lock bcm947xx_sbh_lock
-+
-+extern void bcm947xx_time_init(void);
-+extern void bcm947xx_timer_setup(struct irqaction *irq);
-+
-+#ifdef CONFIG_REMOTE_DEBUG
-+extern void set_debug_traps(void);
-+extern void rs_kgdb_hook(struct serial_state *);
-+extern void breakpoint(void);
-+#endif
-+
-+#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
-+extern struct ide_ops std_ide_ops;
-+#endif
-+
-+/* Kernel command line */
-+char arcs_cmdline[CL_SIZE] __initdata = CONFIG_CMDLINE;
-+extern void sb_serial_init(sb_t *sbh, void (*add)(void *regs, uint irq, uint baud_base, uint reg_shift));
-+
-+void
-+bcm947xx_machine_restart(char *command)
-+{
-+ printk("Please stand by while rebooting the system...\n");
-+
-+ /* Set the watchdog timer to reset immediately */
-+ __cli();
-+ sb_watchdog(sbh, 1);
-+ while (1);
-+}
-+
-+void
-+bcm947xx_machine_halt(void)
-+{
-+ printk("System halted\n");
-+
-+ /* Disable interrupts and watchdog and spin forever */
-+ __cli();
-+ sb_watchdog(sbh, 0);
-+ while (1);
-+}
-+
-+#ifdef CONFIG_SERIAL
-+
-+static int ser_line = 0;
-+
-+typedef struct {
-+ void *regs;
-+ uint irq;
-+ uint baud_base;
-+ uint reg_shift;
-+} serial_port;
-+
-+static serial_port ports[4];
-+static int num_ports = 0;
-+
-+static void
-+serial_add(void *regs, uint irq, uint baud_base, uint reg_shift)
-+{
-+ ports[num_ports].regs = regs;
-+ ports[num_ports].irq = irq;
-+ ports[num_ports].baud_base = baud_base;
-+ ports[num_ports].reg_shift = reg_shift;
-+ num_ports++;
-+}
-+
-+static void
-+do_serial_add(serial_port *port)
-+{
-+ void *regs;
-+ uint irq;
-+ uint baud_base;
-+ uint reg_shift;
-+ struct serial_struct s;
-+
-+ regs = port->regs;
-+ irq = port->irq;
-+ baud_base = port->baud_base;
-+ reg_shift = port->reg_shift;
-+
-+ memset(&s, 0, sizeof(s));
-+
-+ s.line = ser_line++;
-+ s.iomem_base = regs;
-+ s.irq = irq + 2;
-+ s.baud_base = baud_base / 16;
-+ s.flags = ASYNC_BOOT_AUTOCONF;
-+ s.io_type = SERIAL_IO_MEM;
-+ s.iomem_reg_shift = reg_shift;
-+
-+ if (early_serial_setup(&s) != 0) {
-+ printk(KERN_ERR "Serial setup failed!\n");
-+ }
-+}
-+
-+#endif /* CONFIG_SERIAL */
-+
-+void __init
-+brcm_setup(void)
-+{
-+ char *s;
-+ int i;
-+ char *value;
-+
-+ /* Get global SB handle */
-+ sbh = sb_kattach();
-+
-+ /* Initialize clocks and interrupts */
-+ sb_mips_init(sbh, SBMIPS_VIRTIRQ_BASE);
-+
-+ if (BCM330X(current_cpu_data.processor_id) &&
-+ (read_c0_diag() & BRCM_PFC_AVAIL)) {
-+ /*
-+ * Now that the sbh is inited set the proper PFC value
-+ */
-+ printk("Setting the PFC to its default value\n");
-+ enable_pfc(PFC_AUTO);
-+ }
-+
-+
-+#ifdef CONFIG_SERIAL
-+ sb_serial_init(sbh, serial_add);
-+
-+ /* reverse serial ports if nvram variable starts with console=ttyS1 */
-+ /* Initialize UARTs */
-+ s = nvram_get("kernel_args");
-+ if (!s) s = "";
-+ if (!strncmp(s, "console=ttyS1", 13)) {
-+ for (i = num_ports; i; i--)
-+ do_serial_add(&ports[i - 1]);
-+ } else {
-+ for (i = 0; i < num_ports; i++)
-+ do_serial_add(&ports[i]);
-+ }
-+#endif
-+
-+#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
-+ ide_ops = &std_ide_ops;
-+#endif
-+
-+ /* Override default command line arguments */
-+ value = nvram_get("kernel_cmdline");
-+ if (value && strlen(value) && strncmp(value, "empty", 5))
-+ strncpy(arcs_cmdline, value, sizeof(arcs_cmdline));
-+
-+
-+ /* Generic setup */
-+ _machine_restart = bcm947xx_machine_restart;
-+ _machine_halt = bcm947xx_machine_halt;
-+ _machine_power_off = bcm947xx_machine_halt;
-+
-+ board_time_init = bcm947xx_time_init;
-+ board_timer_setup = bcm947xx_timer_setup;
-+}
-+
-+const char *
-+get_system_type(void)
-+{
-+ static char s[32];
-+
-+ if (bcm947xx_sbh) {
-+ sprintf(s, "Broadcom BCM%X chip rev %d", sb_chip(bcm947xx_sbh),
-+ sb_chiprev(bcm947xx_sbh));
-+ return s;
-+ }
-+ else
-+ return "Broadcom BCM947XX";
-+}
-+
-+void __init
-+bus_error_init(void)
-+{
-+}
-+
-diff -urN linux.old/arch/mips/bcm947xx/sflash.c linux.dev/arch/mips/bcm947xx/sflash.c
---- linux.old/arch/mips/bcm947xx/sflash.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/sflash.c 2006-04-27 22:11:27.000000000 +0200
-@@ -0,0 +1,422 @@
-+/*
-+ * Broadcom SiliconBackplane chipcommon serial flash interface
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sflash.c,v 1.1.1.13 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#include <osl.h>
-+#include <typedefs.h>
-+#include <sbconfig.h>
-+#include <sbchipc.h>
-+#include <mipsinc.h>
-+#include <bcmutils.h>
-+#include <bcmdevs.h>
-+#include <sflash.h>
-+
-+/* Private global state */
-+static struct sflash sflash;
-+
-+/* Issue a serial flash command */
-+static INLINE void
-+sflash_cmd(chipcregs_t *cc, uint opcode)
-+{
-+ W_REG(NULL, &cc->flashcontrol, SFLASH_START | opcode);
-+ while (R_REG(NULL, &cc->flashcontrol) & SFLASH_BUSY);
-+}
-+
-+/* Initialize serial flash access */
-+struct sflash *
-+sflash_init(chipcregs_t *cc)
-+{
-+ uint32 id, id2;
-+
-+ bzero(&sflash, sizeof(sflash));
-+
-+ sflash.type = R_REG(NULL, &cc->capabilities) & CAP_FLASH_MASK;
-+
-+ switch (sflash.type) {
-+ case SFLASH_ST:
-+ /* Probe for ST chips */
-+ sflash_cmd(cc, SFLASH_ST_DP);
-+ sflash_cmd(cc, SFLASH_ST_RES);
-+ id = R_REG(NULL, &cc->flashdata);
-+ switch (id) {
-+ case 0x11:
-+ /* ST M25P20 2 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 4;
-+ break;
-+ case 0x12:
-+ /* ST M25P40 4 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 8;
-+ break;
-+ case 0x13:
-+ /* ST M25P80 8 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 16;
-+ break;
-+ case 0x14:
-+ /* ST M25P16 16 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 32;
-+ break;
-+ case 0x15:
-+ /* ST M25P32 32 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 64;
-+ break;
-+ case 0x16:
-+ /* ST M25P64 64 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 128;
-+ break;
-+ case 0xbf:
-+ W_REG(NULL, &cc->flashaddress, 1);
-+ sflash_cmd(cc, SFLASH_ST_RES);
-+ id2 = R_REG(NULL, &cc->flashdata);
-+ if (id2 == 0x44) {
-+ /* SST M25VF80 4 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 8;
-+ }
-+ break;
-+ }
-+ break;
-+
-+ case SFLASH_AT:
-+ /* Probe for Atmel chips */
-+ sflash_cmd(cc, SFLASH_AT_STATUS);
-+ id = R_REG(NULL, &cc->flashdata) & 0x3c;
-+ switch (id) {
-+ case 0xc:
-+ /* Atmel AT45DB011 1Mbit Serial Flash */
-+ sflash.blocksize = 256;
-+ sflash.numblocks = 512;
-+ break;
-+ case 0x14:
-+ /* Atmel AT45DB021 2Mbit Serial Flash */
-+ sflash.blocksize = 256;
-+ sflash.numblocks = 1024;
-+ break;
-+ case 0x1c:
-+ /* Atmel AT45DB041 4Mbit Serial Flash */
-+ sflash.blocksize = 256;
-+ sflash.numblocks = 2048;
-+ break;
-+ case 0x24:
-+ /* Atmel AT45DB081 8Mbit Serial Flash */
-+ sflash.blocksize = 256;
-+ sflash.numblocks = 4096;
-+ break;
-+ case 0x2c:
-+ /* Atmel AT45DB161 16Mbit Serial Flash */
-+ sflash.blocksize = 512;
-+ sflash.numblocks = 4096;
-+ break;
-+ case 0x34:
-+ /* Atmel AT45DB321 32Mbit Serial Flash */
-+ sflash.blocksize = 512;
-+ sflash.numblocks = 8192;
-+ break;
-+ case 0x3c:
-+ /* Atmel AT45DB642 64Mbit Serial Flash */
-+ sflash.blocksize = 1024;
-+ sflash.numblocks = 8192;
-+ break;
-+ }
-+ break;
-+ }
-+
-+ sflash.size = sflash.blocksize * sflash.numblocks;
-+ return sflash.size ? &sflash : NULL;
-+}
-+
-+/* Read len bytes starting at offset into buf. Returns number of bytes read. */
-+int
-+sflash_read(chipcregs_t *cc, uint offset, uint len, uchar *buf)
-+{
-+ int cnt;
-+ uint32 *from, *to;
-+
-+ if (!len)
-+ return 0;
-+
-+ if ((offset + len) > sflash.size)
-+ return -22;
-+
-+ if ((len >= 4) && (offset & 3))
-+ cnt = 4 - (offset & 3);
-+ else if ((len >= 4) && ((uint32)buf & 3))
-+ cnt = 4 - ((uint32)buf & 3);
-+ else
-+ cnt = len;
-+
-+ from = (uint32 *)KSEG1ADDR(SB_FLASH2 + offset);
-+ to = (uint32 *)buf;
-+
-+ if (cnt < 4) {
-+ bcopy(from, to, cnt);
-+ return cnt;
-+ }
-+
-+ while (cnt >= 4) {
-+ *to++ = *from++;
-+ cnt -= 4;
-+ }
-+
-+ return (len - cnt);
-+}
-+
-+/* Poll for command completion. Returns zero when complete. */
-+int
-+sflash_poll(chipcregs_t *cc, uint offset)
-+{
-+ if (offset >= sflash.size)
-+ return -22;
-+
-+ switch (sflash.type) {
-+ case SFLASH_ST:
-+ /* Check for ST Write In Progress bit */
-+ sflash_cmd(cc, SFLASH_ST_RDSR);
-+ return R_REG(NULL, &cc->flashdata) & SFLASH_ST_WIP;
-+ case SFLASH_AT:
-+ /* Check for Atmel Ready bit */
-+ sflash_cmd(cc, SFLASH_AT_STATUS);
-+ return !(R_REG(NULL, &cc->flashdata) & SFLASH_AT_READY);
-+ }
-+
-+ return 0;
-+}
-+
-+/* Write len bytes starting at offset into buf. Returns number of bytes
-+ * written. Caller should poll for completion.
-+ */
-+int
-+sflash_write(chipcregs_t *cc, uint offset, uint len, const uchar *buf)
-+{
-+ struct sflash *sfl;
-+ int ret = 0;
-+ bool is4712b0;
-+ uint32 page, byte, mask;
-+
-+ if (!len)
-+ return 0;
-+
-+ if ((offset + len) > sflash.size)
-+ return -22;
-+
-+ sfl = &sflash;
-+ switch (sfl->type) {
-+ case SFLASH_ST:
-+ mask = R_REG(NULL, &cc->chipid);
-+ is4712b0 = (((mask & CID_ID_MASK) == BCM4712_CHIP_ID) &&
-+ ((mask & CID_REV_MASK) == (3 << CID_REV_SHIFT)));
-+ /* Enable writes */
-+ sflash_cmd(cc, SFLASH_ST_WREN);
-+ if (is4712b0) {
-+ mask = 1 << 14;
-+ W_REG(NULL, &cc->flashaddress, offset);
-+ W_REG(NULL, &cc->flashdata, *buf++);
-+ /* Set chip select */
-+ OR_REG(NULL, &cc->gpioout, mask);
-+ /* Issue a page program with the first byte */
-+ sflash_cmd(cc, SFLASH_ST_PP);
-+ ret = 1;
-+ offset++;
-+ len--;
-+ while (len > 0) {
-+ if ((offset & 255) == 0) {
-+ /* Page boundary, drop cs and return */
-+ AND_REG(NULL, &cc->gpioout, ~mask);
-+ if (!sflash_poll(cc, offset)) {
-+ /* Flash rejected command */
-+ return -11;
-+ }
-+ return ret;
-+ } else {
-+ /* Write single byte */
-+ sflash_cmd(cc, *buf++);
-+ }
-+ ret++;
-+ offset++;
-+ len--;
-+ }
-+ /* All done, drop cs if needed */
-+ if ((offset & 255) != 1) {
-+ /* Drop cs */
-+ AND_REG(NULL, &cc->gpioout, ~mask);
-+ if (!sflash_poll(cc, offset)) {
-+ /* Flash rejected command */
-+ return -12;
-+ }
-+ }
-+ } else {
-+ ret = 1;
-+ W_REG(NULL, &cc->flashaddress, offset);
-+ W_REG(NULL, &cc->flashdata, *buf);
-+ /* Page program */
-+ sflash_cmd(cc, SFLASH_ST_PP);
-+ }
-+ break;
-+ case SFLASH_AT:
-+ mask = sfl->blocksize - 1;
-+ page = (offset & ~mask) << 1;
-+ byte = offset & mask;
-+ /* Read main memory page into buffer 1 */
-+ if (byte || (len < sfl->blocksize)) {
-+ W_REG(NULL, &cc->flashaddress, page);
-+ sflash_cmd(cc, SFLASH_AT_BUF1_LOAD);
-+ /* 250 us for AT45DB321B */
-+ SPINWAIT(sflash_poll(cc, offset), 1000);
-+ ASSERT(!sflash_poll(cc, offset));
-+ }
-+ /* Write into buffer 1 */
-+ for (ret = 0; (ret < (int)len) && (byte < sfl->blocksize); ret++) {
-+ W_REG(NULL, &cc->flashaddress, byte++);
-+ W_REG(NULL, &cc->flashdata, *buf++);
-+ sflash_cmd(cc, SFLASH_AT_BUF1_WRITE);
-+ }
-+ /* Write buffer 1 into main memory page */
-+ W_REG(NULL, &cc->flashaddress, page);
-+ sflash_cmd(cc, SFLASH_AT_BUF1_PROGRAM);
-+ break;
-+ }
-+
-+ return ret;
-+}
-+
-+/* Erase a region. Returns number of bytes scheduled for erasure.
-+ * Caller should poll for completion.
-+ */
-+int
-+sflash_erase(chipcregs_t *cc, uint offset)
-+{
-+ struct sflash *sfl;
-+
-+ if (offset >= sflash.size)
-+ return -22;
-+
-+ sfl = &sflash;
-+ switch (sfl->type) {
-+ case SFLASH_ST:
-+ sflash_cmd(cc, SFLASH_ST_WREN);
-+ W_REG(NULL, &cc->flashaddress, offset);
-+ sflash_cmd(cc, SFLASH_ST_SE);
-+ return sfl->blocksize;
-+ case SFLASH_AT:
-+ W_REG(NULL, &cc->flashaddress, offset << 1);
-+ sflash_cmd(cc, SFLASH_AT_PAGE_ERASE);
-+ return sfl->blocksize;
-+ }
-+
-+ return 0;
-+}
-+
-+/*
-+ * writes the appropriate range of flash, a NULL buf simply erases
-+ * the region of flash
-+ */
-+int
-+sflash_commit(chipcregs_t *cc, uint offset, uint len, const uchar *buf)
-+{
-+ struct sflash *sfl;
-+ uchar *block = NULL, *cur_ptr, *blk_ptr;
-+ uint blocksize = 0, mask, cur_offset, cur_length, cur_retlen, remainder;
-+ uint blk_offset, blk_len, copied;
-+ int bytes, ret = 0;
-+
-+ /* Check address range */
-+ if (len <= 0)
-+ return 0;
-+
-+ sfl = &sflash;
-+ if ((offset + len) > sfl->size)
-+ return -1;
-+
-+ blocksize = sfl->blocksize;
-+ mask = blocksize - 1;
-+
-+ /* Allocate a block of mem */
-+ if (!(block = MALLOC(NULL, blocksize)))
-+ return -1;
-+
-+ while (len) {
-+ /* Align offset */
-+ cur_offset = offset & ~mask;
-+ cur_length = blocksize;
-+ cur_ptr = block;
-+
-+ remainder = blocksize - (offset & mask);
-+ if (len < remainder)
-+ cur_retlen = len;
-+ else
-+ cur_retlen = remainder;
-+
-+ /* buf == NULL means erase only */
-+ if (buf) {
-+ /* Copy existing data into holding block if necessary */
-+ if ((offset & mask) || (len < blocksize)) {
-+ blk_offset = cur_offset;
-+ blk_len = cur_length;
-+ blk_ptr = cur_ptr;
-+
-+ /* Copy entire block */
-+ while (blk_len) {
-+ copied = sflash_read(cc, blk_offset, blk_len, blk_ptr);
-+ blk_offset += copied;
-+ blk_len -= copied;
-+ blk_ptr += copied;
-+ }
-+ }
-+
-+ /* Copy input data into holding block */
-+ memcpy(cur_ptr + (offset & mask), buf, cur_retlen);
-+ }
-+
-+ /* Erase block */
-+ if ((ret = sflash_erase(cc, (uint) cur_offset)) < 0)
-+ goto done;
-+ while (sflash_poll(cc, (uint) cur_offset));
-+
-+ /* buf == NULL means erase only */
-+ if (!buf) {
-+ offset += cur_retlen;
-+ len -= cur_retlen;
-+ continue;
-+ }
-+
-+ /* Write holding block */
-+ while (cur_length > 0) {
-+ if ((bytes = sflash_write(cc,
-+ (uint) cur_offset,
-+ (uint) cur_length,
-+ (uchar *) cur_ptr)) < 0) {
-+ ret = bytes;
-+ goto done;
-+ }
-+ while (sflash_poll(cc, (uint) cur_offset));
-+ cur_offset += bytes;
-+ cur_length -= bytes;
-+ cur_ptr += bytes;
-+ }
-+
-+ offset += cur_retlen;
-+ len -= cur_retlen;
-+ buf += cur_retlen;
-+ }
-+
-+ ret = len;
-+done:
-+ if (block)
-+ MFREE(NULL, block, blocksize);
-+ return ret;
-+}
-diff -urN linux.old/arch/mips/bcm947xx/time.c linux.dev/arch/mips/bcm947xx/time.c
---- linux.old/arch/mips/bcm947xx/time.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/time.c 2006-04-28 00:45:40.000000000 +0200
-@@ -0,0 +1,104 @@
-+/*
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: time.c,v 1.1.1.10 2006/02/27 03:42:55 honor Exp $
-+ */
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/serial_reg.h>
-+#include <linux/interrupt.h>
-+#include <asm/addrspace.h>
-+#include <asm/io.h>
-+#include <asm/time.h>
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <bcmnvram.h>
-+#include <sbconfig.h>
-+#include <sbextif.h>
-+#include <sbutils.h>
-+#include <hndmips.h>
-+#include <mipsinc.h>
-+#include <hndcpu.h>
-+
-+/* Global SB handle */
-+extern void *bcm947xx_sbh;
-+extern spinlock_t bcm947xx_sbh_lock;
-+
-+/* Convenience */
-+#define sbh bcm947xx_sbh
-+#define sbh_lock bcm947xx_sbh_lock
-+
-+extern int panic_timeout;
-+static int watchdog = 0;
-+static u8 *mcr = NULL;
-+
-+void __init
-+bcm947xx_time_init(void)
-+{
-+ unsigned int hz;
-+ extifregs_t *eir;
-+
-+ /*
-+ * Use deterministic values for initial counter interrupt
-+ * so that calibrate delay avoids encountering a counter wrap.
-+ */
-+ write_c0_count(0);
-+ write_c0_compare(0xffff);
-+
-+ if (!(hz = sb_cpu_clock(sbh)))
-+ hz = 100000000;
-+
-+ printk("CPU: BCM%04x rev %d at %d MHz\n", sb_chip(sbh), sb_chiprev(sbh),
-+ (hz + 500000) / 1000000);
-+
-+ /* Set MIPS counter frequency for fixed_rate_gettimeoffset() */
-+ mips_hpt_frequency = hz / 2;
-+
-+ /* Set watchdog interval in ms */
-+ watchdog = simple_strtoul(nvram_safe_get("watchdog"), NULL, 0);
-+
-+ /* Please set the watchdog to 3 sec if it is less than 3 but not equal to 0 */
-+ if (watchdog > 0) {
-+ if (watchdog < 3000)
-+ watchdog = 3000;
-+ }
-+
-+ /* Set panic timeout in seconds */
-+ panic_timeout = watchdog / 1000;
-+}
-+
-+static void
-+bcm947xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ /* Generic MIPS timer code */
-+ timer_interrupt(irq, dev_id, regs);
-+
-+ /* Set the watchdog timer to reset after the specified number of ms */
-+ if (watchdog > 0)
-+ sb_watchdog(sbh, WATCHDOG_CLOCK / 1000 * watchdog);
-+}
-+
-+static struct irqaction bcm947xx_timer_irqaction = {
-+ bcm947xx_timer_interrupt,
-+ SA_INTERRUPT,
-+ 0,
-+ "timer",
-+ NULL,
-+ NULL
-+};
-+
-+void __init
-+bcm947xx_timer_setup(struct irqaction *irq)
-+{
-+ /* Enable the timer interrupt */
-+ setup_irq(7, &bcm947xx_timer_irqaction);
-+}
-diff -urN linux.old/arch/mips/config-shared.in linux.dev/arch/mips/config-shared.in
---- linux.old/arch/mips/config-shared.in 2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/config-shared.in 2006-04-27 19:24:19.000000000 +0200
-@@ -208,6 +208,14 @@
- fi
- define_bool CONFIG_MIPS_RTC y
- fi
-+dep_bool 'Support for Broadcom MIPS-based boards' CONFIG_MIPS_BRCM $CONFIG_EXPERIMENTAL
-+dep_bool 'Support for Broadcom BCM947XX' CONFIG_BCM947XX $CONFIG_MIPS_BRCM
-+if [ "$CONFIG_BCM947XX" = "y" ] ; then
-+ bool ' Support for Broadcom BCM4710' CONFIG_BCM4710
-+ bool ' Support for Broadcom BCM4310' CONFIG_BCM4310
-+ bool ' Support for Broadcom BCM4704' CONFIG_BCM4704
-+ bool ' Support for Broadcom BCM5365' CONFIG_BCM5365
-+fi
- bool 'Support for SNI RM200 PCI' CONFIG_SNI_RM200_PCI
- bool 'Support for TANBAC TB0226 (Mbase)' CONFIG_TANBAC_TB0226
- bool 'Support for TANBAC TB0229 (VR4131DIMM)' CONFIG_TANBAC_TB0229
-@@ -229,6 +237,11 @@
- define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM n
-
- #
-+# Provide an option for a default kernel command line
-+#
-+string 'Default kernel command string' CONFIG_CMDLINE ""
-+
-+#
- # Select some configuration options automatically based on user selections.
- #
- if [ "$CONFIG_ACER_PICA_61" = "y" ]; then
-@@ -554,6 +567,13 @@
- define_bool CONFIG_SWAP_IO_SPACE_L y
- define_bool CONFIG_BOOT_ELF32 y
- fi
-+if [ "$CONFIG_BCM947XX" = "y" ] ; then
-+ define_bool CONFIG_PCI y
-+ define_bool CONFIG_NONCOHERENT_IO y
-+ define_bool CONFIG_NEW_TIME_C y
-+ define_bool CONFIG_NEW_IRQ y
-+ define_bool CONFIG_HND y
-+fi
- if [ "$CONFIG_SNI_RM200_PCI" = "y" ]; then
- define_bool CONFIG_ARC32 y
- define_bool CONFIG_ARC_MEMORY y
-@@ -1042,7 +1062,11 @@
-
- bool 'Are you using a crosscompiler' CONFIG_CROSSCOMPILE
- bool 'Enable run-time debugging' CONFIG_RUNTIME_DEBUG
--bool 'Remote GDB kernel debugging' CONFIG_KGDB
-+if [ "$CONFIG_BCM947XX" = "y" ] ; then
-+ bool 'Remote GDB kernel debugging' CONFIG_REMOTE_DEBUG
-+else
-+ bool 'Remote GDB kernel debugging' CONFIG_KGDB
-+fi
- dep_bool ' Console output to GDB' CONFIG_GDB_CONSOLE $CONFIG_KGDB
- if [ "$CONFIG_KGDB" = "y" ]; then
- define_bool CONFIG_DEBUG_INFO y
-diff -urN linux.old/arch/mips/kernel/cpu-probe.c linux.dev/arch/mips/kernel/cpu-probe.c
---- linux.old/arch/mips/kernel/cpu-probe.c 2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/kernel/cpu-probe.c 2006-04-27 19:24:19.000000000 +0200
-@@ -162,7 +162,7 @@
-
- static inline void cpu_probe_legacy(struct cpuinfo_mips *c)
- {
-- switch (c->processor_id & 0xff00) {
-+ switch (c->processor_id & PRID_IMP_MASK) {
- case PRID_IMP_R2000:
- c->cputype = CPU_R2000;
- c->isa_level = MIPS_CPU_ISA_I;
-@@ -172,7 +172,7 @@
- c->tlbsize = 64;
- break;
- case PRID_IMP_R3000:
-- if ((c->processor_id & 0xff) == PRID_REV_R3000A)
-+ if ((c->processor_id & PRID_REV_MASK) == PRID_REV_R3000A)
- if (cpu_has_confreg())
- c->cputype = CPU_R3081E;
- else
-@@ -187,12 +187,12 @@
- break;
- case PRID_IMP_R4000:
- if (read_c0_config() & CONF_SC) {
-- if ((c->processor_id & 0xff) >= PRID_REV_R4400)
-+ if ((c->processor_id & PRID_REV_MASK) >= PRID_REV_R4400)
- c->cputype = CPU_R4400PC;
- else
- c->cputype = CPU_R4000PC;
- } else {
-- if ((c->processor_id & 0xff) >= PRID_REV_R4400)
-+ if ((c->processor_id & PRID_REV_MASK) >= PRID_REV_R4400)
- c->cputype = CPU_R4400SC;
- else
- c->cputype = CPU_R4000SC;
-@@ -438,7 +438,7 @@
- static inline void cpu_probe_mips(struct cpuinfo_mips *c)
- {
- decode_config1(c);
-- switch (c->processor_id & 0xff00) {
-+ switch (c->processor_id & PRID_IMP_MASK) {
- case PRID_IMP_4KC:
- c->cputype = CPU_4KC;
- c->isa_level = MIPS_CPU_ISA_M32;
-@@ -479,10 +479,10 @@
- {
- decode_config1(c);
- c->options |= MIPS_CPU_PREFETCH;
-- switch (c->processor_id & 0xff00) {
-+ switch (c->processor_id & PRID_IMP_MASK) {
- case PRID_IMP_AU1_REV1:
- case PRID_IMP_AU1_REV2:
-- switch ((c->processor_id >> 24) & 0xff) {
-+ switch ((c->processor_id >> 24) & PRID_REV_MASK) {
- case 0:
- c->cputype = CPU_AU1000;
- break;
-@@ -510,10 +510,34 @@
- }
- }
-
-+static inline void cpu_probe_broadcom(struct cpuinfo_mips *c)
-+{
-+ decode_config1(c);
-+ c->options |= MIPS_CPU_PREFETCH;
-+ switch (c->processor_id & PRID_IMP_MASK) {
-+ case PRID_IMP_BCM4710:
-+ c->cputype = CPU_BCM4710;
-+ c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX |
-+ MIPS_CPU_4KTLB | MIPS_CPU_COUNTER;
-+ c->scache.flags = MIPS_CACHE_NOT_PRESENT;
-+ break;
-+ case PRID_IMP_4KC:
-+ case PRID_IMP_BCM3302:
-+ c->cputype = CPU_BCM3302;
-+ c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX |
-+ MIPS_CPU_4KTLB | MIPS_CPU_COUNTER;
-+ c->scache.flags = MIPS_CACHE_NOT_PRESENT;
-+ break;
-+ default:
-+ c->cputype = CPU_UNKNOWN;
-+ break;
-+ }
-+}
-+
- static inline void cpu_probe_sibyte(struct cpuinfo_mips *c)
- {
- decode_config1(c);
-- switch (c->processor_id & 0xff00) {
-+ switch (c->processor_id & PRID_IMP_MASK) {
- case PRID_IMP_SB1:
- c->cputype = CPU_SB1;
- c->isa_level = MIPS_CPU_ISA_M64;
-@@ -535,7 +559,7 @@
- static inline void cpu_probe_sandcraft(struct cpuinfo_mips *c)
- {
- decode_config1(c);
-- switch (c->processor_id & 0xff00) {
-+ switch (c->processor_id & PRID_IMP_MASK) {
- case PRID_IMP_SR71000:
- c->cputype = CPU_SR71000;
- c->isa_level = MIPS_CPU_ISA_M64;
-@@ -560,7 +584,7 @@
- c->cputype = CPU_UNKNOWN;
-
- c->processor_id = read_c0_prid();
-- switch (c->processor_id & 0xff0000) {
-+ switch (c->processor_id & PRID_COMP_MASK) {
-
- case PRID_COMP_LEGACY:
- cpu_probe_legacy(c);
-@@ -571,6 +595,9 @@
- case PRID_COMP_ALCHEMY:
- cpu_probe_alchemy(c);
- break;
-+ case PRID_COMP_BROADCOM:
-+ cpu_probe_broadcom(c);
-+ break;
- case PRID_COMP_SIBYTE:
- cpu_probe_sibyte(c);
- break;
-diff -urN linux.old/arch/mips/kernel/head.S linux.dev/arch/mips/kernel/head.S
---- linux.old/arch/mips/kernel/head.S 2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/kernel/head.S 2006-04-27 19:24:19.000000000 +0200
-@@ -28,12 +28,20 @@
- #include <asm/mipsregs.h>
- #include <asm/stackframe.h>
-
-+#ifdef CONFIG_BCM4710
-+#undef eret
-+#define eret nop; nop; eret
-+#endif
-+
- .text
-+ j kernel_entry
-+ nop
-+
- /*
- * Reserved space for exception handlers.
- * Necessary for machines which link their kernels at KSEG0.
- */
-- .fill 0x400
-+ .fill 0x3f4
-
- /* The following two symbols are used for kernel profiling. */
- EXPORT(stext)
-diff -urN linux.old/arch/mips/kernel/proc.c linux.dev/arch/mips/kernel/proc.c
---- linux.old/arch/mips/kernel/proc.c 2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/kernel/proc.c 2006-04-27 19:24:19.000000000 +0200
-@@ -78,9 +78,10 @@
- [CPU_AU1550] "Au1550",
- [CPU_24K] "MIPS 24K",
- [CPU_AU1200] "Au1200",
-+ [CPU_BCM4710] "BCM4710",
-+ [CPU_BCM3302] "BCM3302",
- };
-
--
- static int show_cpuinfo(struct seq_file *m, void *v)
- {
- unsigned int version = current_cpu_data.processor_id;
-diff -urN linux.old/arch/mips/kernel/setup.c linux.dev/arch/mips/kernel/setup.c
---- linux.old/arch/mips/kernel/setup.c 2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/kernel/setup.c 2006-04-27 19:24:19.000000000 +0200
-@@ -493,6 +493,7 @@
- void swarm_setup(void);
- void hp_setup(void);
- void au1x00_setup(void);
-+ void brcm_setup(void);
- void frame_info_init(void);
-
- frame_info_init();
-@@ -691,6 +692,11 @@
- pmc_yosemite_setup();
- break;
- #endif
-+#if defined(CONFIG_BCM4710) || defined(CONFIG_BCM4310)
-+ case MACH_GROUP_BRCM:
-+ brcm_setup();
-+ break;
-+#endif
- default:
- panic("Unsupported architecture");
- }
-diff -urN linux.old/arch/mips/kernel/traps.c linux.dev/arch/mips/kernel/traps.c
---- linux.old/arch/mips/kernel/traps.c 2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/kernel/traps.c 2006-04-27 19:24:19.000000000 +0200
-@@ -920,6 +920,7 @@
- void __init trap_init(void)
- {
- extern char except_vec1_generic;
-+ extern char except_vec2_generic;
- extern char except_vec3_generic, except_vec3_r4000;
- extern char except_vec_ejtag_debug;
- extern char except_vec4;
-@@ -927,6 +928,7 @@
-
- /* Copy the generic exception handler code to it's final destination. */
- memcpy((void *)(KSEG0 + 0x80), &except_vec1_generic, 0x80);
-+ memcpy((void *)(KSEG0 + 0x100), &except_vec2_generic, 0x80);
-
- /*
- * Setup default vectors
-@@ -985,6 +987,12 @@
- set_except_vector(13, handle_tr);
- set_except_vector(22, handle_mdmx);
-
-+ if (current_cpu_data.cputype == CPU_SB1) {
-+ /* Enable timer interrupt and scd mapped interrupt */
-+ clear_c0_status(0xf000);
-+ set_c0_status(0xc00);
-+ }
-+
- if (cpu_has_fpu && !cpu_has_nofpuex)
- set_except_vector(15, handle_fpe);
-
-diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
---- linux.old/arch/mips/mm/c-r4k.c 2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/mm/c-r4k.c 2006-04-27 19:24:19.000000000 +0200
-@@ -1166,3 +1166,47 @@
- build_clear_page();
- build_copy_page();
- }
-+
-+#ifdef CONFIG_BCM4704
-+static void __init mips32_icache_fill(unsigned long addr, uint nbytes)
-+{
-+ unsigned long ic_lsize = current_cpu_data.icache.linesz;
-+ int i;
-+ for (i = 0; i < nbytes; i += ic_lsize)
-+ fill_icache_line((addr + i));
-+}
-+
-+/*
-+ * This must be run from the cache on 4704A0
-+ * so there are no mips core BIU ops in progress
-+ * when the PFC is enabled.
-+ */
-+#define PFC_CR0 0xff400000 /* control reg 0 */
-+#define PFC_CR1 0xff400004 /* control reg 1 */
-+static void __init enable_pfc(u32 mode)
-+{
-+ /* write range */
-+ *(volatile u32 *)PFC_CR1 = 0xffff0000;
-+
-+ /* enable */
-+ *(volatile u32 *)PFC_CR0 = mode;
-+}
-+#endif
-+
-+
-+void check_enable_mips_pfc(int val)
-+{
-+
-+#ifdef CONFIG_BCM4704
-+ struct cpuinfo_mips *c = &current_cpu_data;
-+
-+ /* enable prefetch cache */
-+ if (((c->processor_id & (PRID_COMP_MASK | PRID_IMP_MASK)) == PRID_IMP_BCM3302)
-+ && (read_c0_diag() & (1 << 29))) {
-+ mips32_icache_fill((unsigned long) &enable_pfc, 64);
-+ enable_pfc(val);
-+ }
-+#endif
-+}
-+
-+
-diff -urN linux.old/arch/mips/pci/Makefile linux.dev/arch/mips/pci/Makefile
---- linux.old/arch/mips/pci/Makefile 2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/pci/Makefile 2006-04-27 19:24:19.000000000 +0200
-@@ -13,7 +13,9 @@
- obj-$(CONFIG_MIPS_MSC) += ops-msc.o
- obj-$(CONFIG_MIPS_NILE4) += ops-nile4.o
- obj-$(CONFIG_SNI_RM200_PCI) += ops-sni.o
-+ifndef CONFIG_BCM947XX
- obj-y += pci.o
-+endif
- obj-$(CONFIG_PCI_AUTO) += pci_auto.o
-
- include $(TOPDIR)/Rules.make
-diff -urN linux.old/drivers/char/serial.c linux.dev/drivers/char/serial.c
---- linux.old/drivers/char/serial.c 2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/drivers/char/serial.c 2006-04-27 19:24:19.000000000 +0200
-@@ -444,6 +444,10 @@
- return inb(info->port+1);
- #endif
- case SERIAL_IO_MEM:
-+#ifdef CONFIG_BCM4310
-+ readb((unsigned long) info->iomem_base +
-+ (UART_SCR<<info->iomem_reg_shift));
-+#endif
- return readb((unsigned long) info->iomem_base +
- (offset<<info->iomem_reg_shift));
- default:
-@@ -464,6 +468,9 @@
- case SERIAL_IO_MEM:
- writeb(value, (unsigned long) info->iomem_base +
- (offset<<info->iomem_reg_shift));
-+#ifdef CONFIG_BCM4704
-+ *((volatile unsigned int *) KSEG1ADDR(0x18000000));
-+#endif
- break;
- default:
- outb(value, info->port+offset);
-@@ -1728,7 +1735,7 @@
- /* Special case since 134 is really 134.5 */
- quot = (2*baud_base / 269);
- else if (baud)
-- quot = baud_base / baud;
-+ quot = (baud_base + (baud / 2)) / baud;
- }
- /* If the quotient is zero refuse the change */
- if (!quot && old_termios) {
-@@ -1745,12 +1752,12 @@
- /* Special case since 134 is really 134.5 */
- quot = (2*baud_base / 269);
- else if (baud)
-- quot = baud_base / baud;
-+ quot = (baud_base + (baud / 2)) / baud;
- }
- }
- /* As a last resort, if the quotient is zero, default to 9600 bps */
- if (!quot)
-- quot = baud_base / 9600;
-+ quot = (baud_base + 4800) / 9600;
- /*
- * Work around a bug in the Oxford Semiconductor 952 rev B
- * chip which causes it to seriously miscalculate baud rates
-@@ -5994,6 +6001,13 @@
- * Divisor, bytesize and parity
- */
- state = rs_table + co->index;
-+ /*
-+ * Safe guard: state structure must have been initialized
-+ */
-+ if (state->iomem_base == NULL) {
-+ printk("!unable to setup serial console!\n");
-+ return -1;
-+ }
- if (doflow)
- state->flags |= ASYNC_CONS_FLOW;
- info = &async_sercons;
-@@ -6007,7 +6021,7 @@
- info->io_type = state->io_type;
- info->iomem_base = state->iomem_base;
- info->iomem_reg_shift = state->iomem_reg_shift;
-- quot = state->baud_base / baud;
-+ quot = (state->baud_base + (baud / 2)) / baud;
- cval = cflag & (CSIZE | CSTOPB);
- #if defined(__powerpc__) || defined(__alpha__)
- cval >>= 8;
-diff -urN linux.old/drivers/net/Config.in linux.dev/drivers/net/Config.in
---- linux.old/drivers/net/Config.in 2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/drivers/net/Config.in 2006-04-27 19:24:19.000000000 +0200
-@@ -2,6 +2,8 @@
- # Network device configuration
- #
-
-+tristate 'Broadcom Home Network Division' CONFIG_HND $CONFIG_PCI
-+
- source drivers/net/arcnet/Config.in
-
- tristate 'Dummy net driver support' CONFIG_DUMMY
-diff -urN linux.old/drivers/net/Makefile linux.dev/drivers/net/Makefile
---- linux.old/drivers/net/Makefile 2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/drivers/net/Makefile 2006-05-04 01:41:03.000000000 +0200
-@@ -3,6 +3,8 @@
- # Makefile for the Linux network (ethercard) device drivers.
- #
-
-+EXTRA_CFLAGS := -I$(TOPDIR)/arch/mips/bcm947xx/include
-+
- obj-y :=
- obj-m :=
- obj-n :=
-@@ -39,6 +41,7 @@
- obj-$(CONFIG_ISDN) += slhc.o
- endif
-
-+subdir-$(CONFIG_WL) += wl
- subdir-$(CONFIG_NET_PCMCIA) += pcmcia
- subdir-$(CONFIG_NET_WIRELESS) += wireless
- subdir-$(CONFIG_TULIP) += tulip
-diff -urN linux.old/drivers/net/wireless/Config.in linux.dev/drivers/net/wireless/Config.in
---- linux.old/drivers/net/wireless/Config.in 2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/drivers/net/wireless/Config.in 2006-05-04 01:42:48.000000000 +0200
-@@ -13,6 +13,7 @@
- fi
-
- if [ "$CONFIG_PCI" = "y" ]; then
-+ dep_tristate ' Proprietary Broadcom BCM43xx 802.11 Wireless support' CONFIG_WL
- dep_tristate ' Hermes in PLX9052 based PCI adaptor support (Netgear MA301 etc.) (EXPERIMENTAL)' CONFIG_PLX_HERMES $CONFIG_HERMES $CONFIG_EXPERIMENTAL
- dep_tristate ' Hermes in TMD7160/NCP130 based PCI adaptor support (Pheecom WL-PCI etc.) (EXPERIMENTAL)' CONFIG_TMD_HERMES $CONFIG_HERMES $CONFIG_EXPERIMENTAL
- dep_tristate ' Prism 2.5 PCI 802.11b adaptor support (EXPERIMENTAL)' CONFIG_PCI_HERMES $CONFIG_HERMES $CONFIG_EXPERIMENTAL
-diff -urN linux.old/drivers/net/wl/patchtable.pl linux.dev/drivers/net/wl/patchtable.pl
---- linux.old/drivers/net/wl/patchtable.pl 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/wl/patchtable.pl 2006-04-28 01:33:52.000000000 +0200
-@@ -0,0 +1,54 @@
-+#!/usr/bin/perl
-+use strict;
-+
-+my $TABLE = pack("V", 0xbadc0ded);
-+my $TABLE_SIZE = 512;
-+my $SLT1 = "\x01\x00\x00\x00";
-+my $SLT2 = "\x02\x00\x00\x00";
-+my $ACKW = "\x03\x00\x00\x00";
-+my $PTABLE_END = "\xff\xff\xff\xff";
-+
-+my $addr = "";
-+my $opcode = "";
-+my $function = "";
-+
-+sub add_entry {
-+ my $key = shift;
-+ my $value = shift;
-+ my $default = shift;
-+
-+ $TABLE .= $key;
-+ $TABLE .= pack("V", $value);
-+ $TABLE .= pack("V", $default);
-+}
-+
-+while (<>) {
-+ $addr = $opcode = "";
-+ /^\w{8}\s*<(.*)>:$/ and $function = $1;
-+ /^\s*(\w+):\s*(\w{8})\s*/ and do {
-+ $addr = $1;
-+ $opcode = $2;
-+ };
-+
-+ ($function eq 'wlc_update_slot_timing') and do {
-+ # li a2,9 -- short slot time
-+ ($opcode eq '24060009') and add_entry($SLT1, hex($addr), hex($opcode));
-+ # li v0,519 -- 510 + short slot time
-+ ($opcode eq '24020207') and add_entry($SLT2, hex($addr), hex($opcode));
-+
-+ # li a2,20 -- long slot time
-+ ($opcode eq '24060014') and add_entry($SLT1, hex($addr), hex($opcode));
-+ # li v0,530 -- 510 + long slot time
-+ ($opcode eq '24020212') and add_entry($SLT2, hex($addr), hex($opcode));
-+ };
-+ ($function eq 'wlc_d11hdrs') and do {
-+ # ori s6,s6,0x1 -- ack flag (new)
-+ ($opcode eq '36d60001') and add_entry($ACKW, hex($addr), hex($opcode));
-+ # ori s3,s3,0x1 -- ack flag (old)
-+ ($opcode eq '36730001') and add_entry($ACKW, hex($addr), hex($opcode));
-+ }
-+}
-+
-+$TABLE .= $PTABLE_END;
-+$TABLE .= ("\x00" x ($TABLE_SIZE - length($TABLE)));
-+print $TABLE;
-diff -urN linux.old/drivers/net/wl/Makefile linux.dev/drivers/net/wl/Makefile
---- linux.old/drivers/net/wl/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/wl/Makefile 2006-04-28 01:33:52.000000000 +0200
-@@ -0,0 +1,32 @@
-+#
-+# Makefile for the Broadcom wl driver
-+#
-+# Copyright 2004, Broadcom Corporation
-+# All Rights Reserved.
-+#
-+# THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+# KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+# SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+# FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+#
-+# $Id: Makefile,v 1.2 2005/03/29 03:32:18 mbm Exp $
-+
-+EXTRA_CFLAGS += -I$(TOPDIR)/arch/mips/bcm947xx/include -DBCMDRIVER
-+
-+O_TARGET := wl_link.o
-+
-+obj-y := wl_mod.o
-+obj-y += bcmutils.o hnddma.o linux_osl.o
-+
-+obj-m := $(O_TARGET)
-+
-+wl_mod.o: wl_apsta.o
-+ sed -e 's,eth%d,wl%d\x00,g' < $< > $@
-+
-+wl.o: wl_link.o
-+ $(OBJDUMP) -d $< | perl patchtable.pl > patchtable.bin
-+ cat wl_link.o patchtable.bin > $@
-+
-+modules: wl.o
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux.old/drivers/net/wl/bcmip.h linux.dev/drivers/net/wl/bcmip.h
---- linux.old/drivers/net/wl/bcmip.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/wl/bcmip.h 2006-04-28 02:11:28.000000000 +0200
-@@ -0,0 +1,101 @@
-+/*
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * Fundamental constants relating to IP Protocol
-+ *
-+ * $Id: bcmip.h,v 1.1.1.3 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _bcmip_h_
-+#define _bcmip_h_
-+
-+/* IPV4 and IPV6 common */
-+#define IP_VER_OFFSET 0x0 /* offset to version field */
-+#define IP_VER_MASK 0xf0 /* version mask */
-+#define IP_VER_SHIFT 4 /* version shift */
-+#define IP_VER_4 4 /* version number for IPV4 */
-+#define IP_VER_6 6 /* version number for IPV6 */
-+
-+#define IP_VER(ip_body) \
-+ ((((uint8 *)(ip_body))[IP_VER_OFFSET] & IP_VER_MASK) >> IP_VER_SHIFT)
-+
-+#define IP_PROT_ICMP 0x1 /* ICMP protocol */
-+#define IP_PROT_TCP 0x6 /* TCP protocol */
-+#define IP_PROT_UDP 0x11 /* UDP protocol type */
-+
-+/* IPV4 field offsets */
-+#define IPV4_VER_HL_OFFSET 0 /* version and ihl byte offset */
-+#define IPV4_TOS_OFFSET 1 /* type of service offset */
-+#define IPV4_PROT_OFFSET 9 /* protocol type offset */
-+#define IPV4_CHKSUM_OFFSET 10 /* IP header checksum offset */
-+#define IPV4_SRC_IP_OFFSET 12 /* src IP addr offset */
-+#define IPV4_DEST_IP_OFFSET 16 /* dest IP addr offset */
-+
-+/* IPV4 field decodes */
-+#define IPV4_VER_MASK 0xf0 /* IPV4 version mask */
-+#define IPV4_VER_SHIFT 4 /* IPV4 version shift */
-+
-+#define IPV4_HLEN_MASK 0x0f /* IPV4 header length mask */
-+#define IPV4_HLEN(ipv4_body) (4 * (((uint8 *)(ipv4_body))[IPV4_VER_HL_OFFSET] & IPV4_HLEN_MASK))
-+
-+#define IPV4_ADDR_LEN 4 /* IPV4 address length */
-+
-+#define IPV4_ADDR_NULL(a) ((((uint8 *)(a))[0] | ((uint8 *)(a))[1] | \
-+ ((uint8 *)(a))[2] | ((uint8 *)(a))[3]) == 0)
-+
-+#define IPV4_TOS_DSCP_MASK 0xfc /* DiffServ codepoint mask */
-+#define IPV4_TOS_DSCP_SHIFT 2 /* DiffServ codepoint shift */
-+
-+#define IPV4_TOS(ipv4_body) (((uint8 *)(ipv4_body))[IPV4_TOS_OFFSET])
-+
-+#define IPV4_TOS_PREC_MASK 0xe0 /* Historical precedence mask */
-+#define IPV4_TOS_PREC_SHIFT 5 /* Historical precedence shift */
-+
-+#define IPV4_TOS_LOWDELAY 0x10 /* Lowest delay requested */
-+#define IPV4_TOS_THROUGHPUT 0x8 /* Best throughput requested */
-+#define IPV4_TOS_RELIABILITY 0x4 /* Most reliable delivery requested */
-+
-+#define IPV4_PROT(ipv4_body) (((uint8 *)(ipv4_body))[IPV4_PROT_OFFSET])
-+
-+#define IPV4_ADDR_STR_LEN 16 /* Max IP address length in string format */
-+
-+/* IPV6 field offsets */
-+#define IPV6_PAYLOAD_LEN_OFFSET 4 /* payload length offset */
-+#define IPV6_NEXT_HDR_OFFSET 6 /* next header/protocol offset */
-+#define IPV6_HOP_LIMIT_OFFSET 7 /* hop limit offset */
-+#define IPV6_SRC_IP_OFFSET 8 /* src IP addr offset */
-+#define IPV6_DEST_IP_OFFSET 24 /* dst IP addr offset */
-+
-+/* IPV6 field decodes */
-+#define IPV6_TRAFFIC_CLASS(ipv6_body) \
-+ (((((uint8 *)(ipv6_body))[0] & 0x0f) << 4) | \
-+ ((((uint8 *)(ipv6_body))[1] & 0xf0) >> 4))
-+
-+#define IPV6_FLOW_LABEL(ipv6_body) \
-+ (((((uint8 *)(ipv6_body))[1] & 0x0f) << 16) | \
-+ (((uint8 *)(ipv6_body))[2] << 8) | \
-+ (((uint8 *)(ipv6_body))[3]))
-+
-+#define IPV6_PAYLOAD_LEN(ipv6_body) \
-+ ((((uint8 *)(ipv6_body))[IPV6_PAYLOAD_LEN_OFFSET + 0] << 8) | \
-+ ((uint8 *)(ipv6_body))[IPV6_PAYLOAD_LEN_OFFSET + 1])
-+
-+#define IPV6_NEXT_HDR(ipv6_body) \
-+ (((uint8 *)(ipv6_body))[IPV6_NEXT_HDR_OFFSET])
-+
-+#define IPV6_PROT(ipv6_body) IPV6_NEXT_HDR(ipv6_body)
-+
-+#define IPV6_ADDR_LEN 16 /* IPV6 address length */
-+
-+/* IPV4 TOS or IPV6 Traffic Classifier or 0 */
-+#define IP_TOS(ip_body) \
-+ (IP_VER(ip_body) == IP_VER_4 ? IPV4_TOS(ip_body) : \
-+ IP_VER(ip_body) == IP_VER_6 ? IPV6_TRAFFIC_CLASS(ip_body) : 0)
-+
-+#endif /* _bcmip_h_ */
-diff -urN linux.old/drivers/net/wl/bcmutils.c linux.dev/drivers/net/wl/bcmutils.c
---- linux.old/drivers/net/wl/bcmutils.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/wl/bcmutils.c 2006-04-28 02:27:20.000000000 +0200
-@@ -0,0 +1,857 @@
-+/*
-+ * Misc useful OS-independent routines.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id: bcmutils.c,v 1.1.1.12 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#include <typedefs.h>
-+#include <bcmdefs.h>
-+#include <stdarg.h>
-+#include <osl.h>
-+#include "linux_osl.h"
-+#include "pktq.h"
-+#include <bcmutils.h>
-+#include <sbutils.h>
-+#include <bcmnvram.h>
-+#include <bcmendian.h>
-+#include <bcmdevs.h>
-+#include "bcmip.h"
-+
-+#define ETHER_TYPE_8021Q 0x8100
-+#define ETHER_TYPE_IP 0x0800
-+#define VLAN_PRI_SHIFT 13
-+#define VLAN_PRI_MASK 7
-+
-+
-+struct ether_header {
-+ uint8 ether_dhost[6];
-+ uint8 ether_shost[6];
-+ uint16 ether_type;
-+} __attribute__((packed));
-+
-+
-+struct ethervlan_header {
-+ uint8 ether_dhost[6];
-+ uint8 ether_shost[6];
-+ uint16 vlan_type; /* 0x8100 */
-+ uint16 vlan_tag; /* priority, cfi and vid */
-+ uint16 ether_type;
-+};
-+
-+/* copy a pkt buffer chain into a buffer */
-+uint
-+pktcopy(osl_t *osh, void *p, uint offset, int len, uchar *buf)
-+{
-+ uint n, ret = 0;
-+
-+ if (len < 0)
-+ len = 4096; /* "infinite" */
-+
-+ /* skip 'offset' bytes */
-+ for (; p && offset; p = PKTNEXT(osh, p)) {
-+ if (offset < (uint)PKTLEN(osh, p))
-+ break;
-+ offset -= PKTLEN(osh, p);
-+ }
-+
-+ if (!p)
-+ return 0;
-+
-+ /* copy the data */
-+ for (; p && len; p = PKTNEXT(osh, p)) {
-+ n = MIN((uint)PKTLEN(osh, p) - offset, (uint)len);
-+ bcopy(PKTDATA(osh, p) + offset, buf, n);
-+ buf += n;
-+ len -= n;
-+ ret += n;
-+ offset = 0;
-+ }
-+
-+ return ret;
-+}
-+
-+/* return total length of buffer chain */
-+uint
-+pkttotlen(osl_t *osh, void *p)
-+{
-+ uint total;
-+
-+ total = 0;
-+ for (; p; p = PKTNEXT(osh, p))
-+ total += PKTLEN(osh, p);
-+ return (total);
-+}
-+
-+/* return the last buffer of chained pkt */
-+void *
-+pktlast(osl_t *osh, void *p)
-+{
-+ for (; PKTNEXT(osh, p); p = PKTNEXT(osh, p))
-+ ;
-+
-+ return (p);
-+}
-+
-+
-+/*
-+ * osl multiple-precedence packet queue
-+ * hi_prec is always >= the number of the highest non-empty queue
-+ */
-+void *
-+pktq_penq(struct pktq *pq, int prec, void *p)
-+{
-+ struct pktq_prec *q;
-+
-+ ASSERT(prec >= 0 && prec < pq->num_prec);
-+ ASSERT(PKTLINK(p) == NULL); /* queueing chains not allowed */
-+
-+ ASSERT(!pktq_full(pq));
-+ ASSERT(!pktq_pfull(pq, prec));
-+
-+ q = &pq->q[prec];
-+
-+ if (q->head)
-+ PKTSETLINK(q->tail, p);
-+ else
-+ q->head = p;
-+
-+ q->tail = p;
-+ q->len++;
-+
-+ pq->len++;
-+
-+ if (pq->hi_prec < prec)
-+ pq->hi_prec = (uint8)prec;
-+
-+ return p;
-+}
-+
-+void *
-+pktq_penq_head(struct pktq *pq, int prec, void *p)
-+{
-+ struct pktq_prec *q;
-+
-+ ASSERT(prec >= 0 && prec < pq->num_prec);
-+ ASSERT(PKTLINK(p) == NULL); /* queueing chains not allowed */
-+
-+ ASSERT(!pktq_full(pq));
-+ ASSERT(!pktq_pfull(pq, prec));
-+
-+ q = &pq->q[prec];
-+
-+ if (q->head == NULL)
-+ q->tail = p;
-+
-+ PKTSETLINK(p, q->head);
-+ q->head = p;
-+ q->len++;
-+
-+ pq->len++;
-+
-+ if (pq->hi_prec < prec)
-+ pq->hi_prec = (uint8)prec;
-+
-+ return p;
-+}
-+
-+void *
-+pktq_pdeq(struct pktq *pq, int prec)
-+{
-+ struct pktq_prec *q;
-+ void *p;
-+
-+ ASSERT(prec >= 0 && prec < pq->num_prec);
-+
-+ q = &pq->q[prec];
-+
-+ if ((p = q->head) == NULL)
-+ return NULL;
-+
-+ if ((q->head = PKTLINK(p)) == NULL)
-+ q->tail = NULL;
-+
-+ q->len--;
-+
-+ pq->len--;
-+
-+ PKTSETLINK(p, NULL);
-+
-+ return p;
-+}
-+
-+void *
-+pktq_pdeq_tail(struct pktq *pq, int prec)
-+{
-+ struct pktq_prec *q;
-+ void *p, *prev;
-+
-+ ASSERT(prec >= 0 && prec < pq->num_prec);
-+
-+ q = &pq->q[prec];
-+
-+ if ((p = q->head) == NULL)
-+ return NULL;
-+
-+ for (prev = NULL; p != q->tail; p = PKTLINK(p))
-+ prev = p;
-+
-+ if (prev)
-+ PKTSETLINK(prev, NULL);
-+ else
-+ q->head = NULL;
-+
-+ q->tail = prev;
-+ q->len--;
-+
-+ pq->len--;
-+
-+ return p;
-+}
-+
-+void
-+pktq_pflush(osl_t *osh, struct pktq *pq, int prec, bool dir)
-+{
-+ struct pktq_prec *q;
-+ void *p;
-+
-+ q = &pq->q[prec];
-+ p = q->head;
-+ while (p) {
-+ q->head = PKTLINK(p);
-+ PKTSETLINK(p, NULL);
-+ PKTFREE(osh, p, dir);
-+ q->len--;
-+ pq->len--;
-+ p = q->head;
-+ }
-+ ASSERT(q->len == 0);
-+ q->tail = NULL;
-+}
-+
-+bool
-+pktq_pdel(struct pktq *pq, void *pktbuf, int prec)
-+{
-+ struct pktq_prec *q;
-+ void *p;
-+
-+ ASSERT(prec >= 0 && prec < pq->num_prec);
-+
-+ if (!pktbuf)
-+ return FALSE;
-+
-+ q = &pq->q[prec];
-+
-+ if (q->head == pktbuf) {
-+ if ((q->head = PKTLINK(pktbuf)) == NULL)
-+ q->tail = NULL;
-+ } else {
-+ for (p = q->head; p && PKTLINK(p) != pktbuf; p = PKTLINK(p))
-+ ;
-+ if (p == NULL)
-+ return FALSE;
-+
-+ PKTSETLINK(p, PKTLINK(pktbuf));
-+ if (q->tail == pktbuf)
-+ q->tail = p;
-+ }
-+
-+ q->len--;
-+ pq->len--;
-+ PKTSETLINK(pktbuf, NULL);
-+ return TRUE;
-+}
-+
-+void
-+pktq_init(struct pktq *pq, int num_prec, int max_len)
-+{
-+ int prec;
-+
-+ ASSERT(num_prec > 0 && num_prec <= PKTQ_MAX_PREC);
-+
-+ bzero(pq, sizeof(*pq));
-+
-+ pq->num_prec = (uint16)num_prec;
-+
-+ pq->max = (uint16)max_len;
-+
-+ for (prec = 0; prec < num_prec; prec++)
-+ pq->q[prec].max = pq->max;
-+}
-+
-+void *
-+pktq_deq(struct pktq *pq, int *prec_out)
-+{
-+ struct pktq_prec *q;
-+ void *p;
-+ int prec;
-+
-+ if (pq->len == 0)
-+ return NULL;
-+
-+ while ((prec = pq->hi_prec) > 0 && pq->q[prec].head == NULL)
-+ pq->hi_prec--;
-+
-+ q = &pq->q[prec];
-+
-+ if ((p = q->head) == NULL)
-+ return NULL;
-+
-+ if ((q->head = PKTLINK(p)) == NULL)
-+ q->tail = NULL;
-+
-+ q->len--;
-+
-+ pq->len--;
-+
-+ if (prec_out)
-+ *prec_out = prec;
-+
-+ PKTSETLINK(p, NULL);
-+
-+ return p;
-+}
-+
-+void *
-+pktq_deq_tail(struct pktq *pq, int *prec_out)
-+{
-+ struct pktq_prec *q;
-+ void *p, *prev;
-+ int prec;
-+
-+ if (pq->len == 0)
-+ return NULL;
-+
-+ for (prec = 0; prec < pq->hi_prec; prec++)
-+ if (pq->q[prec].head)
-+ break;
-+
-+ q = &pq->q[prec];
-+
-+ if ((p = q->head) == NULL)
-+ return NULL;
-+
-+ for (prev = NULL; p != q->tail; p = PKTLINK(p))
-+ prev = p;
-+
-+ if (prev)
-+ PKTSETLINK(prev, NULL);
-+ else
-+ q->head = NULL;
-+
-+ q->tail = prev;
-+ q->len--;
-+
-+ pq->len--;
-+
-+ if (prec_out)
-+ *prec_out = prec;
-+
-+ PKTSETLINK(p, NULL);
-+
-+ return p;
-+}
-+
-+void *
-+pktq_peek(struct pktq *pq, int *prec_out)
-+{
-+ int prec;
-+
-+ if (pq->len == 0)
-+ return NULL;
-+
-+ while ((prec = pq->hi_prec) > 0 && pq->q[prec].head == NULL)
-+ pq->hi_prec--;
-+
-+ if (prec_out)
-+ *prec_out = prec;
-+
-+ return (pq->q[prec].head);
-+}
-+
-+void *
-+pktq_peek_tail(struct pktq *pq, int *prec_out)
-+{
-+ int prec;
-+
-+ if (pq->len == 0)
-+ return NULL;
-+
-+ for (prec = 0; prec < pq->hi_prec; prec++)
-+ if (pq->q[prec].head)
-+ break;
-+
-+ if (prec_out)
-+ *prec_out = prec;
-+
-+ return (pq->q[prec].tail);
-+}
-+
-+void
-+pktq_flush(osl_t *osh, struct pktq *pq, bool dir)
-+{
-+ int prec;
-+ for (prec = 0; prec < pq->num_prec; prec++)
-+ pktq_pflush(osh, pq, prec, dir);
-+ ASSERT(pq->len == 0);
-+}
-+
-+/* Return sum of lengths of a specific set of precedences */
-+int
-+pktq_mlen(struct pktq *pq, uint prec_bmp)
-+{
-+ int prec, len;
-+
-+ len = 0;
-+
-+ for (prec = 0; prec <= pq->hi_prec; prec++)
-+ if (prec_bmp & (1 << prec))
-+ len += pq->q[prec].len;
-+
-+ return len;
-+}
-+
-+/* Priority dequeue from a specific set of precedences */
-+void *
-+pktq_mdeq(struct pktq *pq, uint prec_bmp, int *prec_out)
-+{
-+ struct pktq_prec *q;
-+ void *p;
-+ int prec;
-+
-+ if (pq->len == 0)
-+ return NULL;
-+
-+ while ((prec = pq->hi_prec) > 0 && pq->q[prec].head == NULL)
-+ pq->hi_prec--;
-+
-+ while ((prec_bmp & (1 << prec)) == 0 || pq->q[prec].head == NULL)
-+ if (prec-- == 0)
-+ return NULL;
-+
-+ q = &pq->q[prec];
-+
-+ if ((p = q->head) == NULL)
-+ return NULL;
-+
-+ if ((q->head = PKTLINK(p)) == NULL)
-+ q->tail = NULL;
-+
-+ q->len--;
-+
-+ if (prec_out)
-+ *prec_out = prec;
-+
-+ pq->len--;
-+
-+ PKTSETLINK(p, NULL);
-+
-+ return p;
-+}
-+
-+char*
-+bcmstrcat(char *dest, const char *src)
-+{
-+ strcpy(&dest[strlen(dest)], src);
-+ return (dest);
-+}
-+
-+char*
-+bcm_ether_ntoa(struct ether_addr *ea, char *buf)
-+{
-+ sprintf(buf, "%02x:%02x:%02x:%02x:%02x:%02x",
-+ ea->octet[0]&0xff, ea->octet[1]&0xff, ea->octet[2]&0xff,
-+ ea->octet[3]&0xff, ea->octet[4]&0xff, ea->octet[5]&0xff);
-+ return (buf);
-+}
-+
-+/* parse a xx:xx:xx:xx:xx:xx format ethernet address */
-+int
-+bcm_ether_atoe(char *p, struct ether_addr *ea)
-+{
-+ int i = 0;
-+
-+ for (;;) {
-+ ea->octet[i++] = (char) bcm_strtoul(p, &p, 16);
-+ if (!*p++ || i == 6)
-+ break;
-+ }
-+
-+ return (i == 6);
-+}
-+
-+/* Takes an Ethernet frame and sets out-of-bound PKTPRIO
-+ * Also updates the inplace vlan tag if requested
-+ */
-+void
-+pktsetprio(void *pkt, bool update_vtag)
-+{
-+ struct ether_header *eh;
-+ struct ethervlan_header *evh;
-+ uint8 *pktdata;
-+ int priority = 0;
-+
-+ pktdata = (uint8 *) PKTDATA(NULL, pkt);
-+ ASSERT(ISALIGNED((uintptr)pktdata, sizeof(uint16)));
-+
-+ eh = (struct ether_header *) pktdata;
-+
-+ if (ntoh16(eh->ether_type) == ETHER_TYPE_8021Q) {
-+ uint16 vlan_tag;
-+ int vlan_prio, dscp_prio = 0;
-+
-+ evh = (struct ethervlan_header *)eh;
-+
-+ vlan_tag = ntoh16(evh->vlan_tag);
-+ vlan_prio = (int) (vlan_tag >> VLAN_PRI_SHIFT) & VLAN_PRI_MASK;
-+
-+ if (ntoh16(evh->ether_type) == ETHER_TYPE_IP) {
-+ uint8 *ip_body = pktdata + sizeof(struct ethervlan_header);
-+ uint8 tos_tc = IP_TOS(ip_body);
-+ dscp_prio = (int)(tos_tc >> IPV4_TOS_PREC_SHIFT);
-+ }
-+
-+ /* DSCP priority gets precedence over 802.1P (vlan tag) */
-+ priority = (dscp_prio != 0) ? dscp_prio : vlan_prio;
-+
-+ /*
-+ * If the DSCP priority is not the same as the VLAN priority,
-+ * then overwrite the priority field in the vlan tag, with the
-+ * DSCP priority value. This is required for Linux APs because
-+ * the VLAN driver on Linux, overwrites the skb->priority field
-+ * with the priority value in the vlan tag
-+ */
-+ if (update_vtag && (priority != vlan_prio)) {
-+ vlan_tag &= ~(VLAN_PRI_MASK << VLAN_PRI_SHIFT);
-+ vlan_tag |= (uint16)priority << VLAN_PRI_SHIFT;
-+ evh->vlan_tag = hton16(vlan_tag);
-+ }
-+ } else if (ntoh16(eh->ether_type) == ETHER_TYPE_IP) {
-+ uint8 *ip_body = pktdata + sizeof(struct ether_header);
-+ uint8 tos_tc = IP_TOS(ip_body);
-+ priority = (int)(tos_tc >> IPV4_TOS_PREC_SHIFT);
-+ }
-+
-+ ASSERT(priority >= 0 && priority <= MAXPRIO);
-+ PKTSETPRIO(pkt, priority);
-+}
-+
-+static char bcm_undeferrstr[BCME_STRLEN];
-+
-+static const char *bcmerrorstrtable[] = BCMERRSTRINGTABLE;
-+
-+/* Convert the Error codes into related Error strings */
-+const char *
-+bcmerrorstr(int bcmerror)
-+{
-+ int abs_bcmerror;
-+
-+ abs_bcmerror = ABS(bcmerror);
-+
-+ /* check if someone added a bcmerror code but forgot to add errorstring */
-+ ASSERT(ABS(BCME_LAST) == (ARRAYSIZE(bcmerrorstrtable) - 1));
-+ if ((bcmerror > 0) || (abs_bcmerror > ABS(BCME_LAST))) {
-+ sprintf(bcm_undeferrstr, "undefined Error %d", bcmerror);
-+ return bcm_undeferrstr;
-+ }
-+
-+ ASSERT((strlen((char*)bcmerrorstrtable[abs_bcmerror])) < BCME_STRLEN);
-+
-+ return bcmerrorstrtable[abs_bcmerror];
-+}
-+
-+
-+int
-+bcm_iovar_lencheck(const bcm_iovar_t *vi, void *arg, int len, bool set)
-+{
-+ int bcmerror = 0;
-+
-+ /* length check on io buf */
-+ switch (vi->type) {
-+ case IOVT_BOOL:
-+ case IOVT_INT8:
-+ case IOVT_INT16:
-+ case IOVT_INT32:
-+ case IOVT_UINT8:
-+ case IOVT_UINT16:
-+ case IOVT_UINT32:
-+ /* all integers are int32 sized args at the ioctl interface */
-+ if (len < (int)sizeof(int)) {
-+ bcmerror = BCME_BUFTOOSHORT;
-+ }
-+ break;
-+
-+ case IOVT_BUFFER:
-+ /* buffer must meet minimum length requirement */
-+ if (len < vi->minlen) {
-+ bcmerror = BCME_BUFTOOSHORT;
-+ }
-+ break;
-+
-+ case IOVT_VOID:
-+ if (!set) {
-+ /* Cannot return nil... */
-+ bcmerror = BCME_UNSUPPORTED;
-+ } else if (len) {
-+ /* Set is an action w/o parameters */
-+ bcmerror = BCME_BUFTOOLONG;
-+ }
-+ break;
-+
-+ default:
-+ /* unknown type for length check in iovar info */
-+ ASSERT(0);
-+ bcmerror = BCME_UNSUPPORTED;
-+ }
-+
-+ return bcmerror;
-+}
-+
-+#define CRC_INNER_LOOP(n, c, x) \
-+ (c) = ((c) >> 8) ^ crc##n##_table[((c) ^ (x)) & 0xff]
-+
-+static uint32 crc32_table[256] = {
-+ 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
-+ 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
-+ 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
-+ 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
-+ 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
-+ 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
-+ 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
-+ 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
-+ 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
-+ 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
-+ 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
-+ 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
-+ 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
-+ 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
-+ 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
-+ 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
-+ 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
-+ 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
-+ 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
-+ 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
-+ 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
-+ 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
-+ 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
-+ 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
-+ 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
-+ 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
-+ 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
-+ 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
-+ 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
-+ 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
-+ 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
-+ 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
-+ 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
-+ 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
-+ 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
-+ 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
-+ 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
-+ 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
-+ 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
-+ 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
-+ 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
-+ 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
-+ 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
-+ 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
-+ 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
-+ 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
-+ 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
-+ 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
-+ 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
-+ 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
-+ 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
-+ 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
-+ 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
-+ 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
-+ 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
-+ 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
-+ 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
-+ 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
-+ 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
-+ 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
-+ 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
-+ 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
-+ 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
-+ 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
-+};
-+
-+uint32
-+hndcrc32(
-+ uint8 *pdata, /* pointer to array of data to process */
-+ uint nbytes, /* number of input data bytes to process */
-+ uint32 crc /* either CRC32_INIT_VALUE or previous return value */
-+)
-+{
-+ uint8 *pend;
-+#ifdef __mips__
-+ uint8 tmp[4];
-+ ulong *tptr = (ulong *)tmp;
-+
-+ /* in case the beginning of the buffer isn't aligned */
-+ pend = (uint8 *)((uint)(pdata + 3) & 0xfffffffc);
-+ nbytes -= (pend - pdata);
-+ while (pdata < pend)
-+ CRC_INNER_LOOP(32, crc, *pdata++);
-+
-+ /* handle bulk of data as 32-bit words */
-+ pend = pdata + (nbytes & 0xfffffffc);
-+ while (pdata < pend) {
-+ *tptr = *(ulong *)pdata;
-+ pdata += sizeof(ulong *);
-+ CRC_INNER_LOOP(32, crc, tmp[0]);
-+ CRC_INNER_LOOP(32, crc, tmp[1]);
-+ CRC_INNER_LOOP(32, crc, tmp[2]);
-+ CRC_INNER_LOOP(32, crc, tmp[3]);
-+ }
-+
-+ /* 1-3 bytes at end of buffer */
-+ pend = pdata + (nbytes & 0x03);
-+ while (pdata < pend)
-+ CRC_INNER_LOOP(32, crc, *pdata++);
-+#else
-+ pend = pdata + nbytes;
-+ while (pdata < pend)
-+ CRC_INNER_LOOP(32, crc, *pdata++);
-+#endif /* __mips__ */
-+
-+ return crc;
-+}
-+
-+
-+/*
-+ * Advance from the current 1-byte tag/1-byte length/variable-length value
-+ * triple, to the next, returning a pointer to the next.
-+ * If the current or next TLV is invalid (does not fit in given buffer length),
-+ * NULL is returned.
-+ * *buflen is not modified if the TLV elt parameter is invalid, or is decremented
-+ * by the TLV paramter's length if it is valid.
-+ */
-+bcm_tlv_t *
-+bcm_next_tlv(bcm_tlv_t *elt, int *buflen)
-+{
-+ int len;
-+
-+ /* validate current elt */
-+ if (!bcm_valid_tlv(elt, *buflen))
-+ return NULL;
-+
-+ /* advance to next elt */
-+ len = elt->len;
-+ elt = (bcm_tlv_t*)(elt->data + len);
-+ *buflen -= (2 + len);
-+
-+ /* validate next elt */
-+ if (!bcm_valid_tlv(elt, *buflen))
-+ return NULL;
-+
-+ return elt;
-+}
-+
-+/*
-+ * Traverse a string of 1-byte tag/1-byte length/variable-length value
-+ * triples, returning a pointer to the substring whose first element
-+ * matches tag
-+ */
-+bcm_tlv_t *
-+bcm_parse_tlvs(void *buf, int buflen, uint key)
-+{
-+ bcm_tlv_t *elt;
-+ int totlen;
-+
-+ elt = (bcm_tlv_t*)buf;
-+ totlen = buflen;
-+
-+ /* find tagged parameter */
-+ while (totlen >= 2) {
-+ int len = elt->len;
-+
-+ /* validate remaining totlen */
-+ if ((elt->id == key) && (totlen >= (len + 2)))
-+ return (elt);
-+
-+ elt = (bcm_tlv_t*)((uint8*)elt + (len + 2));
-+ totlen -= (len + 2);
-+ }
-+
-+ return NULL;
-+}
-+
-+/*
-+ * Traverse a string of 1-byte tag/1-byte length/variable-length value
-+ * triples, returning a pointer to the substring whose first element
-+ * matches tag. Stop parsing when we see an element whose ID is greater
-+ * than the target key.
-+ */
-+bcm_tlv_t *
-+bcm_parse_ordered_tlvs(void *buf, int buflen, uint key)
-+{
-+ bcm_tlv_t *elt;
-+ int totlen;
-+
-+ elt = (bcm_tlv_t*)buf;
-+ totlen = buflen;
-+
-+ /* find tagged parameter */
-+ while (totlen >= 2) {
-+ uint id = elt->id;
-+ int len = elt->len;
-+
-+ /* Punt if we start seeing IDs > than target key */
-+ if (id > key)
-+ return (NULL);
-+
-+ /* validate remaining totlen */
-+ if ((id == key) && (totlen >= (len + 2)))
-+ return (elt);
-+
-+ elt = (bcm_tlv_t*)((uint8*)elt + (len + 2));
-+ totlen -= (len + 2);
-+ }
-+ return NULL;
-+}
-+
-+
-+/* Initialization of bcmstrbuf structure */
-+void
-+bcm_binit(struct bcmstrbuf *b, char *buf, uint size)
-+{
-+ b->origsize = b->size = size;
-+ b->origbuf = b->buf = buf;
-+}
-+
-+/* Buffer sprintf wrapper to guard against buffer overflow */
-+int
-+bcm_bprintf(struct bcmstrbuf *b, const char *fmt, ...)
-+{
-+ va_list ap;
-+ int r;
-+
-+ va_start(ap, fmt);
-+ r = vsnprintf(b->buf, b->size, fmt, ap);
-+
-+ /* Non Ansi C99 compliant returns -1,
-+ * Ansi compliant return r >= b->size,
-+ * bcmstdlib returns 0, handle all
-+ */
-+ if ((r == -1) || (r >= (int)b->size) || (r == 0))
-+ {
-+ b->size = 0;
-+ }
-+ else
-+ {
-+ b->size -= r;
-+ b->buf += r;
-+ }
-+
-+ va_end(ap);
-+
-+ return r;
-+}
-diff -urN linux.old/drivers/net/wl/hnddma.c linux.dev/drivers/net/wl/hnddma.c
---- linux.old/drivers/net/wl/hnddma.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/wl/hnddma.c 2006-05-02 17:42:13.000000000 +0200
-@@ -0,0 +1,1157 @@
-+/*
-+ * Generic Broadcom Home Networking Division (HND) DMA module.
-+ * This supports the following chips: BCM42xx, 44xx, 47xx .
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: hnddma.c,v 1.11 2006/04/08 07:12:42 honor Exp $
-+ */
-+
-+#include <typedefs.h>
-+#include <bcmdefs.h>
-+#include <osl.h>
-+#include "linux_osl.h"
-+#include <bcmendian.h>
-+#include <sbconfig.h>
-+#include <bcmutils.h>
-+#include <bcmdevs.h>
-+#include <sbutils.h>
-+
-+#include "sbhnddma.h"
-+#include "hnddma.h"
-+
-+/* debug/trace */
-+#define DMA_ERROR(args)
-+#define DMA_TRACE(args)
-+
-+/* default dma message level (if input msg_level pointer is null in dma_attach()) */
-+static uint dma_msg_level =
-+ 0;
-+
-+#define MAXNAMEL 8 /* 8 char names */
-+
-+#define DI_INFO(dmah) (dma_info_t *)dmah
-+
-+/* dma engine software state */
-+typedef struct dma_info {
-+ struct hnddma_pub hnddma; /* exported structure, don't use hnddma_t,
-+ * which could be const
-+ */
-+ uint *msg_level; /* message level pointer */
-+ char name[MAXNAMEL]; /* callers name for diag msgs */
-+
-+ void *osh; /* os handle */
-+ sb_t *sbh; /* sb handle */
-+
-+ bool dma64; /* dma64 enabled */
-+ bool addrext; /* this dma engine supports DmaExtendedAddrChanges */
-+
-+ dma32regs_t *d32txregs; /* 32 bits dma tx engine registers */
-+ dma32regs_t *d32rxregs; /* 32 bits dma rx engine registers */
-+ dma64regs_t *d64txregs; /* 64 bits dma tx engine registers */
-+ dma64regs_t *d64rxregs; /* 64 bits dma rx engine registers */
-+
-+ uint32 dma64align; /* either 8k or 4k depends on number of dd */
-+ dma32dd_t *txd32; /* pointer to dma32 tx descriptor ring */
-+ dma64dd_t *txd64; /* pointer to dma64 tx descriptor ring */
-+ uint ntxd; /* # tx descriptors tunable */
-+ uint txin; /* index of next descriptor to reclaim */
-+ uint txout; /* index of next descriptor to post */
-+ void **txp; /* pointer to parallel array of pointers to packets */
-+ osldma_t *tx_dmah; /* DMA TX descriptor ring handle */
-+ osldma_t **txp_dmah; /* DMA TX packet data handle */
-+ ulong txdpa; /* physical address of descriptor ring */
-+ uint txdalign; /* #bytes added to alloc'd mem to align txd */
-+ uint txdalloc; /* #bytes allocated for the ring */
-+
-+ dma32dd_t *rxd32; /* pointer to dma32 rx descriptor ring */
-+ dma64dd_t *rxd64; /* pointer to dma64 rx descriptor ring */
-+ uint nrxd; /* # rx descriptors tunable */
-+ uint rxin; /* index of next descriptor to reclaim */
-+ uint rxout; /* index of next descriptor to post */
-+ void **rxp; /* pointer to parallel array of pointers to packets */
-+ osldma_t *rx_dmah; /* DMA RX descriptor ring handle */
-+ osldma_t **rxp_dmah; /* DMA RX packet data handle */
-+ ulong rxdpa; /* physical address of descriptor ring */
-+ uint rxdalign; /* #bytes added to alloc'd mem to align rxd */
-+ uint rxdalloc; /* #bytes allocated for the ring */
-+
-+ /* tunables */
-+ uint rxbufsize; /* rx buffer size in bytes,
-+ not including the extra headroom
-+ */
-+ uint nrxpost; /* # rx buffers to keep posted */
-+ uint rxoffset; /* rxcontrol offset */
-+ uint ddoffsetlow; /* add to get dma address of descriptor ring, low 32 bits */
-+ uint ddoffsethigh; /* high 32 bits */
-+ uint dataoffsetlow; /* add to get dma address of data buffer, low 32 bits */
-+ uint dataoffsethigh; /* high 32 bits */
-+} dma_info_t;
-+
-+/* descriptor bumping macros */
-+#define XXD(x, n) ((x) & ((n) - 1)) /* faster than %, but n must be power of 2 */
-+#define TXD(x) XXD((x), di->ntxd)
-+#define RXD(x) XXD((x), di->nrxd)
-+#define NEXTTXD(i) TXD(i + 1)
-+#define PREVTXD(i) TXD(i - 1)
-+#define NEXTRXD(i) RXD(i + 1)
-+#define NTXDACTIVE(h, t) TXD(t - h)
-+#define NRXDACTIVE(h, t) RXD(t - h)
-+
-+/* macros to convert between byte offsets and indexes */
-+#define B2I(bytes, type) ((bytes) / sizeof(type))
-+#define I2B(index, type) ((index) * sizeof(type))
-+
-+#define PCI32ADDR_HIGH 0xc0000000 /* address[31:30] */
-+#define PCI32ADDR_HIGH_SHIFT 30 /* address[31:30] */
-+
-+
-+/* common prototypes */
-+static bool _dma_isaddrext(dma_info_t *di);
-+static bool dma32_alloc(dma_info_t *di, uint direction);
-+static void _dma_detach(dma_info_t *di);
-+static void _dma_ddtable_init(dma_info_t *di, uint direction, ulong pa);
-+static void _dma_rxinit(dma_info_t *di);
-+static void *_dma_rx(dma_info_t *di);
-+static void _dma_rxfill(dma_info_t *di);
-+static void _dma_rxreclaim(dma_info_t *di);
-+static void _dma_rxenable(dma_info_t *di);
-+static void * _dma_getnextrxp(dma_info_t *di, bool forceall);
-+
-+static void _dma_txblock(dma_info_t *di);
-+static void _dma_txunblock(dma_info_t *di);
-+static uint _dma_txactive(dma_info_t *di);
-+
-+static void* _dma_peeknexttxp(dma_info_t *di);
-+static uintptr _dma_getvar(dma_info_t *di, char *name);
-+static void _dma_counterreset(dma_info_t *di);
-+static void _dma_fifoloopbackenable(dma_info_t *di);
-+
-+/* ** 32 bit DMA prototypes */
-+static bool dma32_alloc(dma_info_t *di, uint direction);
-+static bool dma32_txreset(dma_info_t *di);
-+static bool dma32_rxreset(dma_info_t *di);
-+static bool dma32_txsuspendedidle(dma_info_t *di);
-+static int dma32_txfast(dma_info_t *di, void *p0, bool commit);
-+static void *dma32_getnexttxp(dma_info_t *di, bool forceall);
-+static void *dma32_getnextrxp(dma_info_t *di, bool forceall);
-+static void dma32_txrotate(dma_info_t *di);
-+static bool dma32_rxidle(dma_info_t *di);
-+static void dma32_txinit(dma_info_t *di);
-+static bool dma32_txenabled(dma_info_t *di);
-+static void dma32_txsuspend(dma_info_t *di);
-+static void dma32_txresume(dma_info_t *di);
-+static bool dma32_txsuspended(dma_info_t *di);
-+static void dma32_txreclaim(dma_info_t *di, bool forceall);
-+static bool dma32_txstopped(dma_info_t *di);
-+static bool dma32_rxstopped(dma_info_t *di);
-+static bool dma32_rxenabled(dma_info_t *di);
-+static bool _dma32_addrext(osl_t *osh, dma32regs_t *dma32regs);
-+
-+
-+static di_fcn_t dma32proc = {
-+ (di_detach_t)_dma_detach,
-+ (di_txinit_t)dma32_txinit,
-+ (di_txreset_t)dma32_txreset,
-+ (di_txenabled_t)dma32_txenabled,
-+ (di_txsuspend_t)dma32_txsuspend,
-+ (di_txresume_t)dma32_txresume,
-+ (di_txsuspended_t)dma32_txsuspended,
-+ (di_txsuspendedidle_t)dma32_txsuspendedidle,
-+ (di_txfast_t)dma32_txfast,
-+ (di_txstopped_t)dma32_txstopped,
-+ (di_txreclaim_t)dma32_txreclaim,
-+ (di_getnexttxp_t)dma32_getnexttxp,
-+ (di_peeknexttxp_t)_dma_peeknexttxp,
-+ (di_txblock_t)_dma_txblock,
-+ (di_txunblock_t)_dma_txunblock,
-+ (di_txactive_t)_dma_txactive,
-+ (di_txrotate_t)dma32_txrotate,
-+
-+ (di_rxinit_t)_dma_rxinit,
-+ (di_rxreset_t)dma32_rxreset,
-+ (di_rxidle_t)dma32_rxidle,
-+ (di_rxstopped_t)dma32_rxstopped,
-+ (di_rxenable_t)_dma_rxenable,
-+ (di_rxenabled_t)dma32_rxenabled,
-+ (di_rx_t)_dma_rx,
-+ (di_rxfill_t)_dma_rxfill,
-+ (di_rxreclaim_t)_dma_rxreclaim,
-+ (di_getnextrxp_t)_dma_getnextrxp,
-+
-+ (di_fifoloopbackenable_t)_dma_fifoloopbackenable,
-+ (di_getvar_t)_dma_getvar,
-+ (di_counterreset_t)_dma_counterreset,
-+
-+ NULL,
-+ NULL,
-+ NULL,
-+ 34
-+};
-+
-+hnddma_t *
-+dma_attach(osl_t *osh, char *name, sb_t *sbh, void *dmaregstx, void *dmaregsrx,
-+ uint ntxd, uint nrxd, uint rxbufsize, uint nrxpost, uint rxoffset, uint *msg_level)
-+{
-+ dma_info_t *di;
-+ uint size;
-+
-+ /* allocate private info structure */
-+ if ((di = MALLOC(osh, sizeof (dma_info_t))) == NULL) {
-+ return (NULL);
-+ }
-+ bzero((char *)di, sizeof(dma_info_t));
-+
-+ di->msg_level = msg_level ? msg_level : &dma_msg_level;
-+
-+ /* old chips w/o sb is no longer supported */
-+ ASSERT(sbh != NULL);
-+
-+ /* check arguments */
-+ ASSERT(ISPOWEROF2(ntxd));
-+ ASSERT(ISPOWEROF2(nrxd));
-+ if (nrxd == 0)
-+ ASSERT(dmaregsrx == NULL);
-+ if (ntxd == 0)
-+ ASSERT(dmaregstx == NULL);
-+
-+
-+ /* init dma reg pointer */
-+ ASSERT(ntxd <= D32MAXDD);
-+ ASSERT(nrxd <= D32MAXDD);
-+ di->d32txregs = (dma32regs_t *)dmaregstx;
-+ di->d32rxregs = (dma32regs_t *)dmaregsrx;
-+
-+ DMA_TRACE(("%s: dma_attach: %s osh %p ntxd %d nrxd %d rxbufsize %d nrxpost %d "
-+ "rxoffset %d dmaregstx %p dmaregsrx %p\n",
-+ name, "DMA32", osh, ntxd, nrxd, rxbufsize,
-+ nrxpost, rxoffset, dmaregstx, dmaregsrx));
-+
-+ /* make a private copy of our callers name */
-+ strncpy(di->name, name, MAXNAMEL);
-+ di->name[MAXNAMEL-1] = '\0';
-+
-+ di->osh = osh;
-+ di->sbh = sbh;
-+
-+ /* save tunables */
-+ di->ntxd = ntxd;
-+ di->nrxd = nrxd;
-+
-+ /* the actual dma size doesn't include the extra headroom */
-+ if (rxbufsize > BCMEXTRAHDROOM)
-+ di->rxbufsize = rxbufsize - BCMEXTRAHDROOM;
-+ else
-+ di->rxbufsize = rxbufsize;
-+
-+ di->nrxpost = nrxpost;
-+ di->rxoffset = rxoffset;
-+
-+ /*
-+ * figure out the DMA physical address offset for dd and data
-+ * for old chips w/o sb, use zero
-+ * for new chips w sb,
-+ * PCI/PCIE: they map silicon backplace address to zero based memory, need offset
-+ * Other bus: use zero
-+ * SB_BUS BIGENDIAN kludge: use sdram swapped region for data buffer, not descriptor
-+ */
-+ di->ddoffsetlow = 0;
-+ di->dataoffsetlow = 0;
-+ /* for pci bus, add offset */
-+ if (sbh->bustype == PCI_BUS) {
-+ di->ddoffsetlow = SB_PCI_DMA;
-+ di->ddoffsethigh = 0;
-+ di->dataoffsetlow = di->ddoffsetlow;
-+ di->dataoffsethigh = di->ddoffsethigh;
-+ }
-+
-+#if defined(__mips__) && defined(IL_BIGENDIAN)
-+ di->dataoffsetlow = di->dataoffsetlow + SB_SDRAM_SWAPPED;
-+#endif
-+
-+ di->addrext = _dma_isaddrext(di);
-+
-+ /* allocate tx packet pointer vector */
-+ if (ntxd) {
-+ size = ntxd * sizeof(void *);
-+ if ((di->txp = MALLOC(osh, size)) == NULL) {
-+ DMA_ERROR(("%s: dma_attach: out of tx memory, malloced %d bytes\n",
-+ di->name, MALLOCED(osh)));
-+ goto fail;
-+ }
-+ bzero((char *)di->txp, size);
-+ }
-+
-+ /* allocate rx packet pointer vector */
-+ if (nrxd) {
-+ size = nrxd * sizeof(void *);
-+ if ((di->rxp = MALLOC(osh, size)) == NULL) {
-+ DMA_ERROR(("%s: dma_attach: out of rx memory, malloced %d bytes\n",
-+ di->name, MALLOCED(osh)));
-+ goto fail;
-+ }
-+ bzero((char *)di->rxp, size);
-+ }
-+
-+ /* allocate transmit descriptor ring, only need ntxd descriptors but it must be aligned */
-+ if (ntxd) {
-+ if (!dma32_alloc(di, DMA_TX))
-+ goto fail;
-+ }
-+
-+ /* allocate receive descriptor ring, only need nrxd descriptors but it must be aligned */
-+ if (nrxd) {
-+ if (!dma32_alloc(di, DMA_RX))
-+ goto fail;
-+ }
-+
-+ if ((di->ddoffsetlow == SB_PCI_DMA) && (di->txdpa > SB_PCI_DMA_SZ) && !di->addrext) {
-+ DMA_ERROR(("%s: dma_attach: txdpa 0x%lx: addrext not supported\n",
-+ di->name, di->txdpa));
-+ goto fail;
-+ }
-+ if ((di->ddoffsetlow == SB_PCI_DMA) && (di->rxdpa > SB_PCI_DMA_SZ) && !di->addrext) {
-+ DMA_ERROR(("%s: dma_attach: rxdpa 0x%lx: addrext not supported\n",
-+ di->name, di->rxdpa));
-+ goto fail;
-+ }
-+
-+ DMA_TRACE(("ddoffsetlow 0x%x ddoffsethigh 0x%x dataoffsetlow 0x%x dataoffsethigh "
-+ "0x%x addrext %d\n", di->ddoffsetlow, di->ddoffsethigh, di->dataoffsetlow,
-+ di->dataoffsethigh, di->addrext));
-+
-+ /* allocate tx packet pointer vector and DMA mapping vectors */
-+ if (ntxd) {
-+
-+ size = ntxd * sizeof(osldma_t **);
-+ if ((di->txp_dmah = (osldma_t **)MALLOC(osh, size)) == NULL)
-+ goto fail;
-+ bzero((char*)di->txp_dmah, size);
-+ }else
-+ di->txp_dmah = NULL;
-+
-+ /* allocate rx packet pointer vector and DMA mapping vectors */
-+ if (nrxd) {
-+
-+ size = nrxd * sizeof(osldma_t **);
-+ if ((di->rxp_dmah = (osldma_t **)MALLOC(osh, size)) == NULL)
-+ goto fail;
-+ bzero((char*)di->rxp_dmah, size);
-+
-+ } else
-+ di->rxp_dmah = NULL;
-+
-+ /* initialize opsvec of function pointers */
-+ di->hnddma.di_fn = dma32proc;
-+
-+ return ((hnddma_t *)di);
-+
-+fail:
-+ _dma_detach(di);
-+ return (NULL);
-+}
-+
-+/* init the tx or rx descriptor */
-+static INLINE void
-+dma32_dd_upd(dma_info_t *di, dma32dd_t *ddring, ulong pa, uint outidx, uint32 *flags,
-+ uint32 bufcount)
-+{
-+ /* dma32 uses 32 bits control to fit both flags and bufcounter */
-+ *flags = *flags | (bufcount & CTRL_BC_MASK);
-+
-+ if ((di->dataoffsetlow != SB_PCI_DMA) || !(pa & PCI32ADDR_HIGH)) {
-+ W_SM(&ddring[outidx].addr, BUS_SWAP32(pa + di->dataoffsetlow));
-+ W_SM(&ddring[outidx].ctrl, BUS_SWAP32(*flags));
-+ } else {
-+ /* address extension */
-+ uint32 ae;
-+ ASSERT(di->addrext);
-+ ae = (pa & PCI32ADDR_HIGH) >> PCI32ADDR_HIGH_SHIFT;
-+ pa &= ~PCI32ADDR_HIGH;
-+
-+ *flags |= (ae << CTRL_AE_SHIFT);
-+ W_SM(&ddring[outidx].addr, BUS_SWAP32(pa + di->dataoffsetlow));
-+ W_SM(&ddring[outidx].ctrl, BUS_SWAP32(*flags));
-+ }
-+}
-+
-+static bool
-+_dma32_addrext(osl_t *osh, dma32regs_t *dma32regs)
-+{
-+ uint32 w;
-+
-+ OR_REG(osh, &dma32regs->control, XC_AE);
-+ w = R_REG(osh, &dma32regs->control);
-+ AND_REG(osh, &dma32regs->control, ~XC_AE);
-+ return ((w & XC_AE) == XC_AE);
-+}
-+
-+/* !! may be called with core in reset */
-+static void
-+_dma_detach(dma_info_t *di)
-+{
-+ if (di == NULL)
-+ return;
-+
-+ DMA_TRACE(("%s: dma_detach\n", di->name));
-+
-+ /* shouldn't be here if descriptors are unreclaimed */
-+ ASSERT(di->txin == di->txout);
-+ ASSERT(di->rxin == di->rxout);
-+
-+ /* free dma descriptor rings */
-+ if (di->txd32)
-+ DMA_FREE_CONSISTENT(di->osh, ((int8*)di->txd32 - di->txdalign),
-+ di->txdalloc, (di->txdpa - di->txdalign), &di->tx_dmah);
-+ if (di->rxd32)
-+ DMA_FREE_CONSISTENT(di->osh, ((int8*)di->rxd32 - di->rxdalign),
-+ di->rxdalloc, (di->rxdpa - di->rxdalign), &di->rx_dmah);
-+
-+ /* free packet pointer vectors */
-+ if (di->txp)
-+ MFREE(di->osh, (void *)di->txp, (di->ntxd * sizeof(void *)));
-+ if (di->rxp)
-+ MFREE(di->osh, (void *)di->rxp, (di->nrxd * sizeof(void *)));
-+
-+ /* free tx packet DMA handles */
-+ if (di->txp_dmah)
-+ MFREE(di->osh, (void *)di->txp_dmah, di->ntxd * sizeof(osldma_t **));
-+
-+ /* free rx packet DMA handles */
-+ if (di->rxp_dmah)
-+ MFREE(di->osh, (void *)di->rxp_dmah, di->nrxd * sizeof(osldma_t **));
-+
-+ /* free our private info structure */
-+ MFREE(di->osh, (void *)di, sizeof(dma_info_t));
-+
-+}
-+
-+/* return TRUE if this dma engine supports DmaExtendedAddrChanges, otherwise FALSE */
-+static bool
-+_dma_isaddrext(dma_info_t *di)
-+{
-+ if (di->d32txregs)
-+ return (_dma32_addrext(di->osh, di->d32txregs));
-+ else if (di->d32rxregs)
-+ return (_dma32_addrext(di->osh, di->d32rxregs));
-+ return FALSE;
-+}
-+
-+/* initialize descriptor table base address */
-+static void
-+_dma_ddtable_init(dma_info_t *di, uint direction, ulong pa)
-+{
-+ if ((di->ddoffsetlow != SB_PCI_DMA) || !(pa & PCI32ADDR_HIGH)) {
-+ if (direction == DMA_TX)
-+ W_REG(di->osh, &di->d32txregs->addr, (pa + di->ddoffsetlow));
-+ else
-+ W_REG(di->osh, &di->d32rxregs->addr, (pa + di->ddoffsetlow));
-+ } else {
-+ /* dma32 address extension */
-+ uint32 ae;
-+ ASSERT(di->addrext);
-+
-+ /* shift the high bit(s) from pa to ae */
-+ ae = (pa & PCI32ADDR_HIGH) >> PCI32ADDR_HIGH_SHIFT;
-+ pa &= ~PCI32ADDR_HIGH;
-+
-+ if (direction == DMA_TX) {
-+ W_REG(di->osh, &di->d32txregs->addr, (pa + di->ddoffsetlow));
-+ SET_REG(di->osh, &di->d32txregs->control, XC_AE, ae <<XC_AE_SHIFT);
-+ } else {
-+ W_REG(di->osh, &di->d32rxregs->addr, (pa + di->ddoffsetlow));
-+ SET_REG(di->osh, &di->d32rxregs->control, RC_AE, ae <<RC_AE_SHIFT);
-+ }
-+ }
-+}
-+
-+static void
-+_dma_fifoloopbackenable(dma_info_t *di)
-+{
-+ DMA_TRACE(("%s: dma_fifoloopbackenable\n", di->name));
-+ OR_REG(di->osh, &di->d32txregs->control, XC_LE);
-+}
-+
-+static void
-+_dma_rxinit(dma_info_t *di)
-+{
-+ DMA_TRACE(("%s: dma_rxinit\n", di->name));
-+
-+ if (di->nrxd == 0)
-+ return;
-+
-+ di->rxin = di->rxout = 0;
-+
-+ /* clear rx descriptor ring */
-+ BZERO_SM((void *)di->rxd32, (di->nrxd * sizeof(dma32dd_t)));
-+ _dma_rxenable(di);
-+ _dma_ddtable_init(di, DMA_RX, di->rxdpa);
-+}
-+
-+static void
-+_dma_rxenable(dma_info_t *di)
-+{
-+ DMA_TRACE(("%s: dma_rxenable\n", di->name));
-+
-+ W_REG(di->osh, &di->d32rxregs->control, ((di->rxoffset << RC_RO_SHIFT) | RC_RE));
-+}
-+
-+/* !! rx entry routine, returns a pointer to the next frame received,
-+ * or NULL if there are no more
-+ */
-+static void *
-+_dma_rx(dma_info_t *di)
-+{
-+ void *p;
-+ uint len;
-+ int skiplen = 0;
-+
-+ while ((p = _dma_getnextrxp(di, FALSE))) {
-+ /* skip giant packets which span multiple rx descriptors */
-+ if (skiplen > 0) {
-+ skiplen -= di->rxbufsize;
-+ if (skiplen < 0)
-+ skiplen = 0;
-+ PKTFREE(di->osh, p, FALSE);
-+ continue;
-+ }
-+
-+ len = ltoh16(*(uint16*)(PKTDATA(di->osh, p)));
-+ DMA_TRACE(("%s: dma_rx len %d\n", di->name, len));
-+
-+ /* bad frame length check */
-+ if (len > (di->rxbufsize - di->rxoffset)) {
-+ DMA_ERROR(("%s: dma_rx: bad frame length (%d)\n", di->name, len));
-+ if (len > 0)
-+ skiplen = len - (di->rxbufsize - di->rxoffset);
-+ PKTFREE(di->osh, p, FALSE);
-+ di->hnddma.rxgiants++;
-+ continue;
-+ }
-+
-+ /* set actual length */
-+ PKTSETLEN(di->osh, p, (di->rxoffset + len));
-+
-+ break;
-+ }
-+
-+ return (p);
-+}
-+
-+/* post receive buffers */
-+static void
-+_dma_rxfill(dma_info_t *di)
-+{
-+ void *p;
-+ uint rxin, rxout;
-+ uint32 flags = 0;
-+ uint n;
-+ uint i;
-+ uint32 pa;
-+ uint extra_offset = 0;
-+
-+ /*
-+ * Determine how many receive buffers we're lacking
-+ * from the full complement, allocate, initialize,
-+ * and post them, then update the chip rx lastdscr.
-+ */
-+
-+ rxin = di->rxin;
-+ rxout = di->rxout;
-+
-+ n = di->nrxpost - NRXDACTIVE(rxin, rxout);
-+
-+ DMA_TRACE(("%s: dma_rxfill: post %d\n", di->name, n));
-+
-+ if (di->rxbufsize > BCMEXTRAHDROOM)
-+ extra_offset = BCMEXTRAHDROOM;
-+
-+ for (i = 0; i < n; i++) {
-+ /* the di->rxbufsize doesn't include the extra headroom, we need to add it to the
-+ size to be allocated
-+ */
-+ if ((p = PKTGET(di->osh, di->rxbufsize + extra_offset,
-+ FALSE)) == NULL) {
-+ DMA_ERROR(("%s: dma_rxfill: out of rxbufs\n", di->name));
-+ di->hnddma.rxnobuf++;
-+ break;
-+ }
-+ /* reserve an extra headroom, if applicable */
-+ if (extra_offset)
-+ PKTPULL(di->osh, p, extra_offset);
-+
-+ /* Do a cached write instead of uncached write since DMA_MAP
-+ * will flush the cache.
-+ */
-+ *(uint32*)(PKTDATA(di->osh, p)) = 0;
-+
-+ pa = (uint32) DMA_MAP(di->osh, PKTDATA(di->osh, p),
-+ di->rxbufsize, DMA_RX, p);
-+
-+ ASSERT(ISALIGNED(pa, 4));
-+
-+ /* save the free packet pointer */
-+ ASSERT(di->rxp[rxout] == NULL);
-+ di->rxp[rxout] = p;
-+
-+ /* reset flags for each descriptor */
-+ flags = 0;
-+ if (rxout == (di->nrxd - 1))
-+ flags = CTRL_EOT;
-+ dma32_dd_upd(di, di->rxd32, pa, rxout, &flags, di->rxbufsize);
-+ rxout = NEXTRXD(rxout);
-+ }
-+
-+ di->rxout = rxout;
-+
-+ /* update the chip lastdscr pointer */
-+ W_REG(di->osh, &di->d32rxregs->ptr, I2B(rxout, dma32dd_t));
-+}
-+
-+/* like getnexttxp but no reclaim */
-+static void *
-+_dma_peeknexttxp(dma_info_t *di)
-+{
-+ uint end, i;
-+
-+ if (di->ntxd == 0)
-+ return (NULL);
-+
-+ end = B2I(R_REG(di->osh, &di->d32txregs->status) & XS_CD_MASK, dma32dd_t);
-+
-+ for (i = di->txin; i != end; i = NEXTTXD(i))
-+ if (di->txp[i])
-+ return (di->txp[i]);
-+
-+ return (NULL);
-+}
-+
-+static void
-+_dma_rxreclaim(dma_info_t *di)
-+{
-+ void *p;
-+
-+ /* "unused local" warning suppression for OSLs that
-+ * define PKTFREE() without using the di->osh arg
-+ */
-+ di = di;
-+
-+ DMA_TRACE(("%s: dma_rxreclaim\n", di->name));
-+
-+ while ((p = _dma_getnextrxp(di, TRUE)))
-+ PKTFREE(di->osh, p, FALSE);
-+}
-+
-+static void *
-+_dma_getnextrxp(dma_info_t *di, bool forceall)
-+{
-+ if (di->nrxd == 0)
-+ return (NULL);
-+
-+ return dma32_getnextrxp(di, forceall);
-+}
-+
-+static void
-+_dma_txblock(dma_info_t *di)
-+{
-+ di->hnddma.txavail = 0;
-+}
-+
-+static void
-+_dma_txunblock(dma_info_t *di)
-+{
-+ di->hnddma.txavail = di->ntxd - NTXDACTIVE(di->txin, di->txout) - 1;
-+}
-+
-+static uint
-+_dma_txactive(dma_info_t *di)
-+{
-+ return (NTXDACTIVE(di->txin, di->txout));
-+}
-+
-+static void
-+_dma_counterreset(dma_info_t *di)
-+{
-+ /* reset all software counter */
-+ di->hnddma.rxgiants = 0;
-+ di->hnddma.rxnobuf = 0;
-+ di->hnddma.txnobuf = 0;
-+}
-+
-+/* get the address of the var in order to change later */
-+static uintptr
-+_dma_getvar(dma_info_t *di, char *name)
-+{
-+ if (!strcmp(name, "&txavail"))
-+ return ((uintptr) &(di->hnddma.txavail));
-+ else {
-+ ASSERT(0);
-+ }
-+ return (0);
-+}
-+
-+void
-+dma_txpioloopback(osl_t *osh, dma32regs_t *regs)
-+{
-+ OR_REG(osh, &regs->control, XC_LE);
-+}
-+
-+
-+
-+/* 32 bits DMA functions */
-+static void
-+dma32_txinit(dma_info_t *di)
-+{
-+ DMA_TRACE(("%s: dma_txinit\n", di->name));
-+
-+ if (di->ntxd == 0)
-+ return;
-+
-+ di->txin = di->txout = 0;
-+ di->hnddma.txavail = di->ntxd - 1;
-+
-+ /* clear tx descriptor ring */
-+ BZERO_SM((void *)di->txd32, (di->ntxd * sizeof(dma32dd_t)));
-+ W_REG(di->osh, &di->d32txregs->control, XC_XE);
-+ _dma_ddtable_init(di, DMA_TX, di->txdpa);
-+}
-+
-+static bool
-+dma32_txenabled(dma_info_t *di)
-+{
-+ uint32 xc;
-+
-+ /* If the chip is dead, it is not enabled :-) */
-+ xc = R_REG(di->osh, &di->d32txregs->control);
-+ return ((xc != 0xffffffff) && (xc & XC_XE));
-+}
-+
-+static void
-+dma32_txsuspend(dma_info_t *di)
-+{
-+ DMA_TRACE(("%s: dma_txsuspend\n", di->name));
-+
-+ if (di->ntxd == 0)
-+ return;
-+
-+ OR_REG(di->osh, &di->d32txregs->control, XC_SE);
-+}
-+
-+static void
-+dma32_txresume(dma_info_t *di)
-+{
-+ DMA_TRACE(("%s: dma_txresume\n", di->name));
-+
-+ if (di->ntxd == 0)
-+ return;
-+
-+ AND_REG(di->osh, &di->d32txregs->control, ~XC_SE);
-+}
-+
-+static bool
-+dma32_txsuspended(dma_info_t *di)
-+{
-+ return (di->ntxd == 0) || ((R_REG(di->osh, &di->d32txregs->control) & XC_SE) == XC_SE);
-+}
-+
-+static void
-+dma32_txreclaim(dma_info_t *di, bool forceall)
-+{
-+ void *p;
-+
-+ DMA_TRACE(("%s: dma_txreclaim %s\n", di->name, forceall ? "all" : ""));
-+
-+ while ((p = dma32_getnexttxp(di, forceall)))
-+ PKTFREE(di->osh, p, TRUE);
-+}
-+
-+static bool
-+dma32_txstopped(dma_info_t *di)
-+{
-+ return ((R_REG(di->osh, &di->d32txregs->status) & XS_XS_MASK) == XS_XS_STOPPED);
-+}
-+
-+static bool
-+dma32_rxstopped(dma_info_t *di)
-+{
-+ return ((R_REG(di->osh, &di->d32rxregs->status) & RS_RS_MASK) == RS_RS_STOPPED);
-+}
-+
-+static bool
-+dma32_alloc(dma_info_t *di, uint direction)
-+{
-+ uint size;
-+ uint ddlen;
-+ void *va;
-+
-+ ddlen = sizeof(dma32dd_t);
-+
-+ size = (direction == DMA_TX) ? (di->ntxd * ddlen) : (di->nrxd * ddlen);
-+
-+ if (!ISALIGNED(DMA_CONSISTENT_ALIGN, D32RINGALIGN))
-+ size += D32RINGALIGN;
-+
-+
-+ if (direction == DMA_TX) {
-+ if ((va = DMA_ALLOC_CONSISTENT(di->osh, size, &di->txdpa, &di->tx_dmah)) == NULL) {
-+ DMA_ERROR(("%s: dma_attach: DMA_ALLOC_CONSISTENT(ntxd) failed\n",
-+ di->name));
-+ return FALSE;
-+ }
-+
-+ di->txd32 = (dma32dd_t *) ROUNDUP((uintptr)va, D32RINGALIGN);
-+ di->txdalign = (uint)((int8*)di->txd32 - (int8*)va);
-+ di->txdpa += di->txdalign;
-+ di->txdalloc = size;
-+ ASSERT(ISALIGNED((uintptr)di->txd32, D32RINGALIGN));
-+ } else {
-+ if ((va = DMA_ALLOC_CONSISTENT(di->osh, size, &di->rxdpa, &di->rx_dmah)) == NULL) {
-+ DMA_ERROR(("%s: dma_attach: DMA_ALLOC_CONSISTENT(nrxd) failed\n",
-+ di->name));
-+ return FALSE;
-+ }
-+ di->rxd32 = (dma32dd_t *) ROUNDUP((uintptr)va, D32RINGALIGN);
-+ di->rxdalign = (uint)((int8*)di->rxd32 - (int8*)va);
-+ di->rxdpa += di->rxdalign;
-+ di->rxdalloc = size;
-+ ASSERT(ISALIGNED((uintptr)di->rxd32, D32RINGALIGN));
-+ }
-+
-+ return TRUE;
-+}
-+
-+static bool
-+dma32_txreset(dma_info_t *di)
-+{
-+ uint32 status;
-+
-+ if (di->ntxd == 0)
-+ return TRUE;
-+
-+ /* suspend tx DMA first */
-+ W_REG(di->osh, &di->d32txregs->control, XC_SE);
-+ SPINWAIT(((status = (R_REG(di->osh, &di->d32txregs->status) & XS_XS_MASK))
-+ != XS_XS_DISABLED) &&
-+ (status != XS_XS_IDLE) &&
-+ (status != XS_XS_STOPPED),
-+ (10000));
-+
-+ W_REG(di->osh, &di->d32txregs->control, 0);
-+ SPINWAIT(((status = (R_REG(di->osh,
-+ &di->d32txregs->status) & XS_XS_MASK)) != XS_XS_DISABLED),
-+ 10000);
-+
-+ /* wait for the last transaction to complete */
-+ OSL_DELAY(300);
-+
-+ return (status == XS_XS_DISABLED);
-+}
-+
-+static bool
-+dma32_rxidle(dma_info_t *di)
-+{
-+ DMA_TRACE(("%s: dma_rxidle\n", di->name));
-+
-+ if (di->nrxd == 0)
-+ return TRUE;
-+
-+ return ((R_REG(di->osh, &di->d32rxregs->status) & RS_CD_MASK) ==
-+ R_REG(di->osh, &di->d32rxregs->ptr));
-+}
-+
-+static bool
-+dma32_rxreset(dma_info_t *di)
-+{
-+ uint32 status;
-+
-+ if (di->nrxd == 0)
-+ return TRUE;
-+
-+ W_REG(di->osh, &di->d32rxregs->control, 0);
-+ SPINWAIT(((status = (R_REG(di->osh,
-+ &di->d32rxregs->status) & RS_RS_MASK)) != RS_RS_DISABLED),
-+ 10000);
-+
-+ return (status == RS_RS_DISABLED);
-+}
-+
-+static bool
-+dma32_rxenabled(dma_info_t *di)
-+{
-+ uint32 rc;
-+
-+ rc = R_REG(di->osh, &di->d32rxregs->control);
-+ return ((rc != 0xffffffff) && (rc & RC_RE));
-+}
-+
-+static bool
-+dma32_txsuspendedidle(dma_info_t *di)
-+{
-+ if (di->ntxd == 0)
-+ return TRUE;
-+
-+ if (!(R_REG(di->osh, &di->d32txregs->control) & XC_SE))
-+ return 0;
-+
-+ if ((R_REG(di->osh, &di->d32txregs->status) & XS_XS_MASK) != XS_XS_IDLE)
-+ return 0;
-+
-+ OSL_DELAY(2);
-+ return ((R_REG(di->osh, &di->d32txregs->status) & XS_XS_MASK) == XS_XS_IDLE);
-+}
-+
-+/* !! tx entry routine
-+ * supports full 32bit dma engine buffer addressing so
-+ * dma buffers can cross 4 Kbyte page boundaries.
-+ */
-+static int
-+dma32_txfast(dma_info_t *di, void *p0, bool commit)
-+{
-+ void *p, *next;
-+ uchar *data;
-+ uint len;
-+ uint txout;
-+ uint32 flags = 0;
-+ uint32 pa;
-+
-+ DMA_TRACE(("%s: dma_txfast\n", di->name));
-+
-+ txout = di->txout;
-+
-+ /*
-+ * Walk the chain of packet buffers
-+ * allocating and initializing transmit descriptor entries.
-+ */
-+ for (p = p0; p; p = next) {
-+ data = PKTDATA(di->osh, p);
-+ len = PKTLEN(di->osh, p);
-+ next = PKTNEXT(di->osh, p);
-+
-+ /* return nonzero if out of tx descriptors */
-+ if (NEXTTXD(txout) == di->txin)
-+ goto outoftxd;
-+
-+ if (len == 0)
-+ continue;
-+
-+ /* get physical address of buffer start */
-+ pa = (uint32) DMA_MAP(di->osh, data, len, DMA_TX, p);
-+
-+ flags = 0;
-+ if (p == p0)
-+ flags |= CTRL_SOF;
-+ if (next == NULL)
-+ flags |= (CTRL_IOC | CTRL_EOF);
-+ if (txout == (di->ntxd - 1))
-+ flags |= CTRL_EOT;
-+
-+ dma32_dd_upd(di, di->txd32, pa, txout, &flags, len);
-+ ASSERT(di->txp[txout] == NULL);
-+
-+ txout = NEXTTXD(txout);
-+ }
-+
-+ /* if last txd eof not set, fix it */
-+ if (!(flags & CTRL_EOF))
-+ W_SM(&di->txd32[PREVTXD(txout)].ctrl, BUS_SWAP32(flags | CTRL_IOC | CTRL_EOF));
-+
-+ /* save the packet */
-+ di->txp[PREVTXD(txout)] = p0;
-+
-+ /* bump the tx descriptor index */
-+ di->txout = txout;
-+
-+ /* kick the chip */
-+ if (commit)
-+ W_REG(di->osh, &di->d32txregs->ptr, I2B(txout, dma32dd_t));
-+
-+ /* tx flow control */
-+ di->hnddma.txavail = di->ntxd - NTXDACTIVE(di->txin, di->txout) - 1;
-+
-+ return (0);
-+
-+outoftxd:
-+ DMA_ERROR(("%s: dma_txfast: out of txds\n", di->name));
-+ PKTFREE(di->osh, p0, TRUE);
-+ di->hnddma.txavail = 0;
-+ di->hnddma.txnobuf++;
-+ return (-1);
-+}
-+
-+/*
-+ * Reclaim next completed txd (txds if using chained buffers) and
-+ * return associated packet.
-+ * If 'force' is true, reclaim txd(s) and return associated packet
-+ * regardless of the value of the hardware "curr" pointer.
-+ */
-+static void *
-+dma32_getnexttxp(dma_info_t *di, bool forceall)
-+{
-+ uint start, end, i;
-+ void *txp;
-+
-+ DMA_TRACE(("%s: dma_getnexttxp %s\n", di->name, forceall ? "all" : ""));
-+
-+ if (di->ntxd == 0)
-+ return (NULL);
-+
-+ txp = NULL;
-+
-+ start = di->txin;
-+ if (forceall)
-+ end = di->txout;
-+ else
-+ end = B2I(R_REG(di->osh, &di->d32txregs->status) & XS_CD_MASK, dma32dd_t);
-+
-+ if ((start == 0) && (end > di->txout))
-+ goto bogus;
-+
-+ for (i = start; i != end && !txp; i = NEXTTXD(i)) {
-+ DMA_UNMAP(di->osh, (BUS_SWAP32(R_SM(&di->txd32[i].addr)) - di->dataoffsetlow),
-+ (BUS_SWAP32(R_SM(&di->txd32[i].ctrl)) & CTRL_BC_MASK),
-+ DMA_TX, di->txp[i]);
-+
-+ W_SM(&di->txd32[i].addr, 0xdeadbeef);
-+ txp = di->txp[i];
-+ di->txp[i] = NULL;
-+ }
-+
-+ di->txin = i;
-+
-+ /* tx flow control */
-+ di->hnddma.txavail = di->ntxd - NTXDACTIVE(di->txin, di->txout) - 1;
-+
-+ return (txp);
-+
-+bogus:
-+/*
-+ DMA_ERROR(("dma_getnexttxp: bogus curr: start %d end %d txout %d force %d\n",
-+ start, end, di->txout, forceall));
-+*/
-+ return (NULL);
-+}
-+
-+static void *
-+dma32_getnextrxp(dma_info_t *di, bool forceall)
-+{
-+ uint i;
-+ void *rxp;
-+
-+ /* if forcing, dma engine must be disabled */
-+ ASSERT(!forceall || !dma32_rxenabled(di));
-+
-+ i = di->rxin;
-+
-+ /* return if no packets posted */
-+ if (i == di->rxout)
-+ return (NULL);
-+
-+ /* ignore curr if forceall */
-+ if (!forceall && (i == B2I(R_REG(di->osh, &di->d32rxregs->status) & RS_CD_MASK, dma32dd_t)))
-+ return (NULL);
-+
-+ /* get the packet pointer that corresponds to the rx descriptor */
-+ rxp = di->rxp[i];
-+ ASSERT(rxp);
-+ di->rxp[i] = NULL;
-+
-+ /* clear this packet from the descriptor ring */
-+ DMA_UNMAP(di->osh, (BUS_SWAP32(R_SM(&di->rxd32[i].addr)) - di->dataoffsetlow),
-+ di->rxbufsize, DMA_RX, rxp);
-+
-+ W_SM(&di->rxd32[i].addr, 0xdeadbeef);
-+
-+ di->rxin = NEXTRXD(i);
-+
-+ return (rxp);
-+}
-+
-+/*
-+ * Rotate all active tx dma ring entries "forward" by (ActiveDescriptor - txin).
-+ */
-+static void
-+dma32_txrotate(dma_info_t *di)
-+{
-+ uint ad;
-+ uint nactive;
-+ uint rot;
-+ uint old, new;
-+ uint32 w;
-+ uint first, last;
-+
-+ ASSERT(dma32_txsuspendedidle(di));
-+
-+ nactive = _dma_txactive(di);
-+ ad = B2I(((R_REG(di->osh, &di->d32txregs->status) & XS_AD_MASK) >> XS_AD_SHIFT), dma32dd_t);
-+ rot = TXD(ad - di->txin);
-+
-+ ASSERT(rot < di->ntxd);
-+
-+ /* full-ring case is a lot harder - don't worry about this */
-+ if (rot >= (di->ntxd - nactive)) {
-+ DMA_ERROR(("%s: dma_txrotate: ring full - punt\n", di->name));
-+ return;
-+ }
-+
-+ first = di->txin;
-+ last = PREVTXD(di->txout);
-+
-+ /* move entries starting at last and moving backwards to first */
-+ for (old = last; old != PREVTXD(first); old = PREVTXD(old)) {
-+ new = TXD(old + rot);
-+
-+ /*
-+ * Move the tx dma descriptor.
-+ * EOT is set only in the last entry in the ring.
-+ */
-+ w = BUS_SWAP32(R_SM(&di->txd32[old].ctrl)) & ~CTRL_EOT;
-+ if (new == (di->ntxd - 1))
-+ w |= CTRL_EOT;
-+ W_SM(&di->txd32[new].ctrl, BUS_SWAP32(w));
-+ W_SM(&di->txd32[new].addr, R_SM(&di->txd32[old].addr));
-+
-+ /* zap the old tx dma descriptor address field */
-+ W_SM(&di->txd32[old].addr, BUS_SWAP32(0xdeadbeef));
-+
-+ /* move the corresponding txp[] entry */
-+ ASSERT(di->txp[new] == NULL);
-+ di->txp[new] = di->txp[old];
-+ di->txp[old] = NULL;
-+ }
-+
-+ /* update txin and txout */
-+ di->txin = ad;
-+ di->txout = TXD(di->txout + rot);
-+ di->hnddma.txavail = di->ntxd - NTXDACTIVE(di->txin, di->txout) - 1;
-+
-+ /* kick the chip */
-+ W_REG(di->osh, &di->d32txregs->ptr, I2B(di->txout, dma32dd_t));
-+}
-+
-+
-+uint
-+dma_addrwidth(sb_t *sbh, void *dmaregs)
-+{
-+ dma32regs_t *dma32regs;
-+ osl_t *osh;
-+
-+ osh = sb_osh(sbh);
-+
-+ /* Start checking for 32-bit / 30-bit addressing */
-+ dma32regs = (dma32regs_t *)dmaregs;
-+
-+ /* For System Backplane, PCIE bus or addrext feature, 32-bits ok */
-+ if ((BUSTYPE(sbh->bustype) == SB_BUS) ||
-+ ((BUSTYPE(sbh->bustype) == PCI_BUS) && sbh->buscoretype == SB_PCIE) ||
-+ (_dma32_addrext(osh, dma32regs)))
-+ return (DMADDRWIDTH_32);
-+
-+ /* Fallthru */
-+ return (DMADDRWIDTH_30);
-+}
-diff -urN linux.old/drivers/net/wl/hnddma.h linux.dev/drivers/net/wl/hnddma.h
---- linux.old/drivers/net/wl/hnddma.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/wl/hnddma.h 2006-04-28 02:20:44.000000000 +0200
-@@ -0,0 +1,156 @@
-+/*
-+ * Generic Broadcom Home Networking Division (HND) DMA engine SW interface
-+ * This supports the following chips: BCM42xx, 44xx, 47xx .
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id: hnddma.h,v 1.1.1.13 2006/04/08 06:13:39 honor Exp $
-+ */
-+
-+#ifndef _hnddma_h_
-+#define _hnddma_h_
-+
-+typedef const struct hnddma_pub hnddma_t;
-+
-+/* dma function type */
-+typedef void (*di_detach_t)(hnddma_t *dmah);
-+typedef bool (*di_txreset_t)(hnddma_t *dmah);
-+typedef bool (*di_rxreset_t)(hnddma_t *dmah);
-+typedef bool (*di_rxidle_t)(hnddma_t *dmah);
-+typedef void (*di_txinit_t)(hnddma_t *dmah);
-+typedef bool (*di_txenabled_t)(hnddma_t *dmah);
-+typedef void (*di_rxinit_t)(hnddma_t *dmah);
-+typedef void (*di_txsuspend_t)(hnddma_t *dmah);
-+typedef void (*di_txresume_t)(hnddma_t *dmah);
-+typedef bool (*di_txsuspended_t)(hnddma_t *dmah);
-+typedef bool (*di_txsuspendedidle_t)(hnddma_t *dmah);
-+typedef int (*di_txfast_t)(hnddma_t *dmah, void *p, bool commit);
-+typedef void (*di_fifoloopbackenable_t)(hnddma_t *dmah);
-+typedef bool (*di_txstopped_t)(hnddma_t *dmah);
-+typedef bool (*di_rxstopped_t)(hnddma_t *dmah);
-+typedef bool (*di_rxenable_t)(hnddma_t *dmah);
-+typedef bool (*di_rxenabled_t)(hnddma_t *dmah);
-+typedef void* (*di_rx_t)(hnddma_t *dmah);
-+typedef void (*di_rxfill_t)(hnddma_t *dmah);
-+typedef void (*di_txreclaim_t)(hnddma_t *dmah, bool forceall);
-+typedef void (*di_rxreclaim_t)(hnddma_t *dmah);
-+typedef uintptr (*di_getvar_t)(hnddma_t *dmah, char *name);
-+typedef void* (*di_getnexttxp_t)(hnddma_t *dmah, bool forceall);
-+typedef void* (*di_getnextrxp_t)(hnddma_t *dmah, bool forceall);
-+typedef void* (*di_peeknexttxp_t)(hnddma_t *dmah);
-+typedef void (*di_txblock_t)(hnddma_t *dmah);
-+typedef void (*di_txunblock_t)(hnddma_t *dmah);
-+typedef uint (*di_txactive_t)(hnddma_t *dmah);
-+typedef void (*di_txrotate_t)(hnddma_t *dmah);
-+typedef void (*di_counterreset_t)(hnddma_t *dmah);
-+typedef char* (*di_dump_t)(hnddma_t *dmah, struct bcmstrbuf *b, bool dumpring);
-+typedef char* (*di_dumptx_t)(hnddma_t *dmah, struct bcmstrbuf *b, bool dumpring);
-+typedef char* (*di_dumprx_t)(hnddma_t *dmah, struct bcmstrbuf *b, bool dumpring);
-+
-+/* dma opsvec */
-+typedef struct di_fcn_s {
-+ di_detach_t detach;
-+ di_txinit_t txinit;
-+ di_txreset_t txreset;
-+ di_txenabled_t txenabled;
-+ di_txsuspend_t txsuspend;
-+ di_txresume_t txresume;
-+ di_txsuspended_t txsuspended;
-+ di_txsuspendedidle_t txsuspendedidle;
-+ di_txfast_t txfast;
-+ di_txstopped_t txstopped;
-+ di_txreclaim_t txreclaim;
-+ di_getnexttxp_t getnexttxp;
-+ di_peeknexttxp_t peeknexttxp;
-+ di_txblock_t txblock;
-+ di_txunblock_t txunblock;
-+ di_txactive_t txactive;
-+ di_txrotate_t txrotate;
-+
-+ di_rxinit_t rxinit;
-+ di_rxreset_t rxreset;
-+ di_rxidle_t rxidle;
-+ di_rxstopped_t rxstopped;
-+ di_rxenable_t rxenable;
-+ di_rxenabled_t rxenabled;
-+ di_rx_t rx;
-+ di_rxfill_t rxfill;
-+ di_rxreclaim_t rxreclaim;
-+ di_getnextrxp_t getnextrxp;
-+
-+ di_fifoloopbackenable_t fifoloopbackenable;
-+ di_getvar_t d_getvar;
-+ di_counterreset_t counterreset;
-+ di_dump_t dump;
-+ di_dumptx_t dumptx;
-+ di_dumprx_t dumprx;
-+ uint endnum;
-+} di_fcn_t;
-+
-+/*
-+ * Exported data structure (read-only)
-+ */
-+/* export structure */
-+struct hnddma_pub {
-+ di_fcn_t di_fn; /* DMA function pointers */
-+ uint txavail; /* # free tx descriptors */
-+
-+ /* rx error counters */
-+ uint rxgiants; /* rx giant frames */
-+ uint rxnobuf; /* rx out of dma descriptors */
-+ /* tx error counters */
-+ uint txnobuf; /* tx out of dma descriptors */
-+};
-+
-+
-+extern hnddma_t * dma_attach(osl_t *osh, char *name, sb_t *sbh, void *dmaregstx, void *dmaregsrx,
-+ uint ntxd, uint nrxd, uint rxbufsize, uint nrxpost, uint rxoffset,
-+ uint *msg_level);
-+#define dma_detach(di) ((di)->di_fn.detach(di))
-+#define dma_txreset(di) ((di)->di_fn.txreset(di))
-+#define dma_rxreset(di) ((di)->di_fn.rxreset(di))
-+#define dma_rxidle(di) ((di)->di_fn.rxidle(di))
-+#define dma_txinit(di) ((di)->di_fn.txinit(di))
-+#define dma_txenabled(di) ((di)->di_fn.txenabled(di))
-+#define dma_rxinit(di) ((di)->di_fn.rxinit(di))
-+#define dma_txsuspend(di) ((di)->di_fn.txsuspend(di))
-+#define dma_txresume(di) ((di)->di_fn.txresume(di))
-+#define dma_txsuspended(di) ((di)->di_fn.txsuspended(di))
-+#define dma_txsuspendedidle(di) ((di)->di_fn.txsuspendedidle(di))
-+#define dma_txfast(di, p, commit) ((di)->di_fn.txfast(di, p, commit))
-+#define dma_fifoloopbackenable(di) ((di)->di_fn.fifoloopbackenable(di))
-+#define dma_txstopped(di) ((di)->di_fn.txstopped(di))
-+#define dma_rxstopped(di) ((di)->di_fn.rxstopped(di))
-+#define dma_rxenable(di) ((di)->di_fn.rxenable(di))
-+#define dma_rxenabled(di) ((di)->di_fn.rxenabled(di))
-+#define dma_rx(di) ((di)->di_fn.rx(di))
-+#define dma_rxfill(di) ((di)->di_fn.rxfill(di))
-+#define dma_txreclaim(di, forceall) ((di)->di_fn.txreclaim(di, forceall))
-+#define dma_rxreclaim(di) ((di)->di_fn.rxreclaim(di))
-+#define dma_getvar(di, name) ((di)->di_fn.d_getvar(di, name))
-+#define dma_getnexttxp(di, forceall) ((di)->di_fn.getnexttxp(di, forceall))
-+#define dma_getnextrxp(di, forceall) ((di)->di_fn.getnextrxp(di, forceall))
-+#define dma_peeknexttxp(di) ((di)->di_fn.peeknexttxp(di))
-+#define dma_txblock(di) ((di)->di_fn.txblock(di))
-+#define dma_txunblock(di) ((di)->di_fn.txunblock(di))
-+#define dma_txactive(di) ((di)->di_fn.txactive(di))
-+#define dma_txrotate(di) ((di)->di_fn.txrotate(di))
-+#define dma_counterreset(di) ((di)->di_fn.counterreset(di))
-+
-+#define DMA_DUMP_SIZE 2048
-+/* return addresswidth allowed
-+ * This needs to be done after SB attach but before dma attach.
-+ * SB attach provides ability to probe backplane and dma core capabilities
-+ * This info is needed by DMA_ALLOC_CONSISTENT in dma attach
-+ */
-+extern uint dma_addrwidth(sb_t *sbh, void *dmaregs);
-+
-+/* pio helpers */
-+void dma_txpioloopback(osl_t *osh, dma32regs_t *);
-+
-+#endif /* _hnddma_h_ */
-diff -urN linux.old/drivers/net/wl/linux_osl.c linux.dev/drivers/net/wl/linux_osl.c
---- linux.old/drivers/net/wl/linux_osl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/wl/linux_osl.c 2006-04-28 02:29:46.000000000 +0200
-@@ -0,0 +1,269 @@
-+/*
-+ * Linux OS Independent Layer
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: linux_osl.c,v 1.1.1.14 2006/04/08 06:13:39 honor Exp $
-+ */
-+
-+#define LINUX_OSL
-+
-+#include <typedefs.h>
-+#include <bcmendian.h>
-+#include <linux/module.h>
-+#include <linuxver.h>
-+#include <bcmdefs.h>
-+#include <osl.h>
-+#include "linux_osl.h"
-+#include <bcmutils.h>
-+#include <linux/delay.h>
-+#ifdef mips
-+#include <asm/paccess.h>
-+#endif /* mips */
-+#include <pcicfg.h>
-+
-+#define PCI_CFG_RETRY 10
-+
-+#define OS_HANDLE_MAGIC 0x1234abcd /* Magic # to recognise osh */
-+#define BCM_MEM_FILENAME_LEN 24 /* Mem. filename length */
-+
-+typedef struct bcm_mem_link {
-+ struct bcm_mem_link *prev;
-+ struct bcm_mem_link *next;
-+ uint size;
-+ int line;
-+ char file[BCM_MEM_FILENAME_LEN];
-+} bcm_mem_link_t;
-+
-+static int16 linuxbcmerrormap[] = \
-+{ 0, /* 0 */
-+ -EINVAL, /* BCME_ERROR */
-+ -EINVAL, /* BCME_BADARG */
-+ -EINVAL, /* BCME_BADOPTION */
-+ -EINVAL, /* BCME_NOTUP */
-+ -EINVAL, /* BCME_NOTDOWN */
-+ -EINVAL, /* BCME_NOTAP */
-+ -EINVAL, /* BCME_NOTSTA */
-+ -EINVAL, /* BCME_BADKEYIDX */
-+ -EINVAL, /* BCME_RADIOOFF */
-+ -EINVAL, /* BCME_NOTBANDLOCKED */
-+ -EINVAL, /* BCME_NOCLK */
-+ -EINVAL, /* BCME_BADRATESET */
-+ -EINVAL, /* BCME_BADBAND */
-+ -E2BIG, /* BCME_BUFTOOSHORT */
-+ -E2BIG, /* BCME_BUFTOOLONG */
-+ -EBUSY, /* BCME_BUSY */
-+ -EINVAL, /* BCME_NOTASSOCIATED */
-+ -EINVAL, /* BCME_BADSSIDLEN */
-+ -EINVAL, /* BCME_OUTOFRANGECHAN */
-+ -EINVAL, /* BCME_BADCHAN */
-+ -EFAULT, /* BCME_BADADDR */
-+ -ENOMEM, /* BCME_NORESOURCE */
-+ -EOPNOTSUPP, /* BCME_UNSUPPORTED */
-+ -EMSGSIZE, /* BCME_BADLENGTH */
-+ -EINVAL, /* BCME_NOTREADY */
-+ -EPERM, /* BCME_NOTPERMITTED */
-+ -ENOMEM, /* BCME_NOMEM */
-+ -EINVAL, /* BCME_ASSOCIATED */
-+ -ERANGE, /* BCME_RANGE */
-+ -EINVAL, /* BCME_NOTFOUND */
-+ -EINVAL, /* BCME_WME_NOT_ENABLED */
-+ -EINVAL, /* BCME_TSPEC_NOTFOUND */
-+ -EINVAL, /* BCME_ACM_NOTSUPPORTED */
-+ -EINVAL, /* BCME_NOT_WME_ASSOCIATION */
-+ -EIO, /* BCME_SDIO_ERROR */
-+ -ENODEV /* BCME_DONGLE_DOWN */
-+};
-+
-+/* translate bcmerrors into linux errors */
-+int
-+osl_error(int bcmerror)
-+{
-+ int abs_bcmerror;
-+ int array_size = ARRAYSIZE(linuxbcmerrormap);
-+
-+ abs_bcmerror = ABS(bcmerror);
-+
-+ if (bcmerror > 0)
-+ abs_bcmerror = 0;
-+
-+ else if (abs_bcmerror >= array_size)
-+ abs_bcmerror = BCME_ERROR;
-+
-+ return linuxbcmerrormap[abs_bcmerror];
-+}
-+
-+osl_t *
-+osl_attach(void *pdev, bool pkttag)
-+{
-+ osl_t *osh;
-+
-+ osh = kmalloc(sizeof(osl_t), GFP_ATOMIC);
-+ ASSERT(osh);
-+
-+ bzero(osh, sizeof(osl_t));
-+
-+ /*
-+ * check the cases where
-+ * 1.Error code Added to bcmerror table, but forgot to add it to the OS
-+ * dependent error code
-+ * 2. Error code is added to the bcmerror table, but forgot to add the
-+ * corresponding errorstring(dummy call to bcmerrorstr)
-+ */
-+ bcmerrorstr(0);
-+ ASSERT(ABS(BCME_LAST) == (ARRAYSIZE(linuxbcmerrormap) - 1));
-+
-+ osh->magic = OS_HANDLE_MAGIC;
-+ osh->malloced = 0;
-+ osh->failed = 0;
-+ osh->dbgmem_list = NULL;
-+ osh->pdev = pdev;
-+ osh->pub.pkttag = pkttag;
-+
-+ return osh;
-+}
-+
-+void
-+osl_detach(osl_t *osh)
-+{
-+ if (osh == NULL)
-+ return;
-+
-+ ASSERT(osh->magic == OS_HANDLE_MAGIC);
-+ kfree(osh);
-+}
-+
-+/* Return a new packet. zero out pkttag */
-+void*
-+osl_pktget(osl_t *osh, uint len, bool send)
-+{
-+ struct sk_buff *skb;
-+
-+ if ((skb = dev_alloc_skb(len))) {
-+ skb_put(skb, len);
-+ skb->priority = 0;
-+
-+#ifdef BCMDBG_PKT
-+ pktlist_add(&(osh->pktlist), (void *) skb);
-+#endif /* BCMDBG_PKT */
-+
-+ osh->pub.pktalloced++;
-+ }
-+
-+ return ((void*) skb);
-+}
-+
-+/* Free the driver packet. Free the tag if present */
-+void
-+osl_pktfree(osl_t *osh, void *p)
-+{
-+ struct sk_buff *skb, *nskb;
-+
-+ skb = (struct sk_buff*) p;
-+
-+ /* perversion: we use skb->next to chain multi-skb packets */
-+ while (skb) {
-+ nskb = skb->next;
-+ skb->next = NULL;
-+
-+#ifdef BCMDBG_PKT
-+ pktlist_remove(&(osh->pktlist), (void *) skb);
-+#endif /* BCMDBG_PKT */
-+
-+ if (skb->destructor) {
-+ /* cannot kfree_skb() on hard IRQ (net/core/skbuff.c) if destructor exists
-+ */
-+ dev_kfree_skb_any(skb);
-+ } else {
-+ /* can free immediately (even in_irq()) if destructor does not exist */
-+ dev_kfree_skb(skb);
-+ }
-+
-+ osh->pub.pktalloced--;
-+
-+ skb = nskb;
-+ }
-+}
-+
-+void*
-+osl_malloc(osl_t *osh, uint size)
-+{
-+ void *addr;
-+
-+ /* only ASSERT if osh is defined */
-+ if (osh)
-+ ASSERT(osh->magic == OS_HANDLE_MAGIC);
-+
-+ if ((addr = kmalloc(size, GFP_ATOMIC)) == NULL) {
-+ if (osh)
-+ osh->failed++;
-+ return (NULL);
-+ }
-+ if (osh)
-+ osh->malloced += size;
-+
-+ return (addr);
-+}
-+
-+void
-+osl_mfree(osl_t *osh, void *addr, uint size)
-+{
-+ if (osh) {
-+ ASSERT(osh->magic == OS_HANDLE_MAGIC);
-+ osh->malloced -= size;
-+ }
-+ kfree(addr);
-+}
-+
-+uint
-+osl_malloced(osl_t *osh)
-+{
-+ ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
-+ return (osh->malloced);
-+}
-+
-+uint osl_malloc_failed(osl_t *osh)
-+{
-+ ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
-+ return (osh->failed);
-+}
-+
-+#undef osl_delay
-+void
-+osl_delay(uint usec)
-+{
-+ OSL_DELAY(usec);
-+}
-+
-+/* Clone a packet.
-+ * The pkttag contents are NOT cloned.
-+ */
-+void *
-+osl_pktdup(osl_t *osh, void *skb)
-+{
-+ void * p;
-+
-+ if ((p = skb_clone((struct sk_buff*)skb, GFP_ATOMIC)) == NULL)
-+ return NULL;
-+
-+ /* skb_clone copies skb->cb.. we don't want that */
-+ if (osh->pub.pkttag)
-+ bzero((void*)((struct sk_buff *)p)->cb, OSL_PKTTAG_SZ);
-+
-+ /* Increment the packet counter */
-+ osh->pub.pktalloced++;
-+ return (p);
-+}
-+
-+uint
-+osl_pktalloced(osl_t *osh)
-+{
-+ return (osh->pub.pktalloced);
-+}
-+
-diff -urN linux.old/drivers/net/wl/linux_osl.h linux.dev/drivers/net/wl/linux_osl.h
---- linux.old/drivers/net/wl/linux_osl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/wl/linux_osl.h 2006-05-02 17:44:29.000000000 +0200
-@@ -0,0 +1,171 @@
-+/*
-+ * Linux OS Independent Layer
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: linux_osl.h,v 1.1.1.13 2006/04/08 06:13:39 honor Exp $
-+ */
-+
-+#ifndef _linux_osl_h_
-+#define _linux_osl_h_
-+
-+#include <typedefs.h>
-+#include <linuxver.h>
-+#include <osl.h>
-+
-+#define OSL_PKTTAG_SZ 32 /* Size of PktTag */
-+
-+/* osl handle type forward declaration */
-+typedef struct osl_dmainfo osldma_t;
-+
-+/* OSL initialization */
-+extern osl_t *osl_attach(void *pdev, bool pkttag);
-+extern void osl_detach(osl_t *osh);
-+
-+/* host/bus architecture-specific byte swap */
-+#define BUS_SWAP32(v) (v)
-+#define MALLOC_FAILED(osh) osl_malloc_failed((osh))
-+
-+extern void *osl_malloc(osl_t *osh, uint size);
-+extern void osl_mfree(osl_t *osh, void *addr, uint size);
-+extern uint osl_malloced(osl_t *osh);
-+extern uint osl_malloc_failed(osl_t *osh);
-+
-+/* API for DMA addressing capability */
-+#define DMA_MAP(osh, va, size, direction, p) \
-+ osl_dma_map((osh), (va), (size), (direction))
-+#define DMA_UNMAP(osh, pa, size, direction, p) \
-+ osl_dma_unmap((osh), (pa), (size), (direction))
-+static inline uint
-+osl_dma_map(void *osh, void *va, uint size, int direction)
-+{
-+ int dir;
-+ struct pci_dev *dev;
-+
-+ dev = (osh == NULL ? NULL : ((osl_t *)osh)->pdev);
-+ dir = (direction == DMA_TX)? PCI_DMA_TODEVICE: PCI_DMA_FROMDEVICE;
-+ return (pci_map_single(dev, va, size, dir));
-+}
-+
-+static inline void
-+osl_dma_unmap(void *osh, uint pa, uint size, int direction)
-+{
-+ int dir;
-+ struct pci_dev *dev;
-+
-+ dev = (osh == NULL ? NULL : ((osl_t *)osh)->pdev);
-+ dir = (direction == DMA_TX)? PCI_DMA_TODEVICE: PCI_DMA_FROMDEVICE;
-+ pci_unmap_single(dev, (uint32)pa, size, dir);
-+}
-+
-+#define OSL_DMADDRWIDTH(osh, addrwidth) do {} while (0)
-+#define DMA_CONSISTENT_ALIGN PAGE_SIZE
-+#define DMA_ALLOC_CONSISTENT(osh, size, pap, dmah) \
-+ osl_dma_alloc_consistent((osh), (size), (pap))
-+#define DMA_FREE_CONSISTENT(osh, va, size, pa, dmah) \
-+ osl_dma_free_consistent((osh), (void*)(va), (size), (pa))
-+static inline void*
-+osl_dma_alloc_consistent(osl_t *osh, uint size, ulong *pap)
-+{
-+ return (pci_alloc_consistent(osh->pdev, size, (dma_addr_t*)pap));
-+}
-+
-+static inline void
-+osl_dma_free_consistent(osl_t *osh, void *va, uint size, ulong pa)
-+{
-+ pci_free_consistent(osh->pdev, size, va, (dma_addr_t)pa);
-+}
-+
-+
-+/* register access macros */
-+#if defined(BCMJTAG)
-+#include <bcmjtag.h>
-+#define R_REG(osh, r) bcmjtag_read(NULL, (uint32)(r), sizeof(*(r)))
-+#define W_REG(osh, r, v) bcmjtag_write(NULL, (uint32)(r), (uint32)(v), sizeof(*(r)))
-+#endif /* defined(BCMSDIO) */
-+
-+/* packet primitives */
-+#define PKTGET(osh, len, send) osl_pktget((osh), (len), (send))
-+#define PKTFREE(osh, skb, send) osl_pktfree((osh), (skb))
-+#define PKTDATA(osh, skb) (((struct sk_buff*)(skb))->data)
-+#define PKTLEN(osh, skb) (((struct sk_buff*)(skb))->len)
-+#define PKTHEADROOM(osh, skb) (PKTDATA(osh, skb)-(((struct sk_buff*)(skb))->head))
-+#define PKTTAILROOM(osh, skb) ((((struct sk_buff*)(skb))->end)-(((struct sk_buff*)(skb))->tail))
-+#define PKTNEXT(osh, skb) (((struct sk_buff*)(skb))->next)
-+#define PKTSETNEXT(osh, skb, x) (((struct sk_buff*)(skb))->next = (struct sk_buff*)(x))
-+#define PKTSETLEN(osh, skb, len) __skb_trim((struct sk_buff*)(skb), (len))
-+#define PKTPUSH(osh, skb, bytes) skb_push((struct sk_buff*)(skb), (bytes))
-+#define PKTPULL(osh, skb, bytes) skb_pull((struct sk_buff*)(skb), (bytes))
-+#define PKTDUP(osh, skb) osl_pktdup((osh), (skb))
-+#define PKTTAG(skb) ((void*)(((struct sk_buff*)(skb))->cb))
-+#define PKTALLOCED(osh) osl_pktalloced((osh))
-+#define PKTLIST_DUMP(osh, buf)
-+
-+/* Convert a native(OS) packet to driver packet.
-+ * In the process, native packet is destroyed, there is no copying
-+ * Also, a packettag is zeroed out
-+ */
-+static INLINE void *
-+osl_pkt_frmnative(struct osl_pubinfo *osh, struct sk_buff *skb)
-+{
-+ struct sk_buff *nskb;
-+
-+ if (osh->pkttag)
-+ bzero((void*)skb->cb, OSL_PKTTAG_SZ);
-+
-+ /* Increment the packet counter */
-+ for (nskb = skb; nskb; nskb = nskb->next) {
-+ osh->pktalloced++;
-+ }
-+
-+ return (void *)skb;
-+}
-+#define PKTFRMNATIVE(osh, skb) osl_pkt_frmnative(((struct osl_pubinfo *)osh), \
-+ (struct sk_buff*)(skb))
-+
-+/* Convert a driver packet to native(OS) packet
-+ * In the process, packettag is zeroed out before sending up
-+ * IP code depends on skb->cb to be setup correctly with various options
-+ * In our case, that means it should be 0
-+ */
-+static INLINE struct sk_buff *
-+osl_pkt_tonative(struct osl_pubinfo *osh, void *pkt)
-+{
-+ struct sk_buff *nskb;
-+
-+ if (osh->pkttag)
-+ bzero(((struct sk_buff*)pkt)->cb, OSL_PKTTAG_SZ);
-+
-+ /* Decrement the packet counter */
-+ for (nskb = (struct sk_buff *)pkt; nskb; nskb = nskb->next) {
-+ osh->pktalloced--;
-+ }
-+
-+ return (struct sk_buff *)pkt;
-+}
-+#define PKTTONATIVE(osh, pkt) osl_pkt_tonative((struct osl_pubinfo *)(osh), (pkt))
-+
-+#define PKTLINK(skb) (((struct sk_buff*)(skb))->prev)
-+#define PKTSETLINK(skb, x) (((struct sk_buff*)(skb))->prev = (struct sk_buff*)(x))
-+#define PKTPRIO(skb) (((struct sk_buff*)(skb))->priority)
-+#define PKTSETPRIO(skb, x) (((struct sk_buff*)(skb))->priority = (x))
-+#define PKTSHARED(skb) (((struct sk_buff*)(skb))->cloned)
-+
-+extern void *osl_pktget(osl_t *osh, uint len, bool send);
-+extern void osl_pktfree(osl_t *osh, void *skb);
-+extern void *osl_pktdup(osl_t *osh, void *skb);
-+extern uint osl_pktalloced(osl_t *osh);
-+
-+#define OSL_ERROR(bcmerror) osl_error(bcmerror)
-+extern int osl_error(int bcmerror);
-+
-+/* the largest reasonable packet buffer driver uses for ethernet MTU in bytes */
-+#define PKTBUFSZ 2048 /* largest reasonable packet buffer, driver uses for ethernet MTU */
-+
-+#endif /* _linux_osl_h_ */
-diff -urN linux.old/drivers/net/wl/pktq.h linux.dev/drivers/net/wl/pktq.h
---- linux.old/drivers/net/wl/pktq.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/wl/pktq.h 2006-04-28 02:11:49.000000000 +0200
-@@ -0,0 +1,97 @@
-+/*
-+ * Misc useful os-independent macros and functions.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id: bcmutils.h,v 1.1.1.16 2006/04/08 06:13:39 honor Exp $
-+ */
-+
-+#ifndef _pktq_h_
-+#define _pktq_h_
-+#include <osl.h>
-+
-+/* osl multi-precedence packet queue */
-+
-+#define PKTQ_LEN_DEFAULT 128 /* Max 128 packets */
-+#define PKTQ_MAX_PREC 16 /* Maximum precedence levels */
-+
-+struct pktq {
-+ struct pktq_prec {
-+ void *head; /* first packet to dequeue */
-+ void *tail; /* last packet to dequeue */
-+ uint16 len; /* number of queued packets */
-+ uint16 max; /* maximum number of queued packets */
-+ } q[PKTQ_MAX_PREC];
-+ uint16 num_prec; /* number of precedences in use */
-+ uint16 hi_prec; /* rapid dequeue hint (>= highest non-empty prec) */
-+ uint16 max; /* total max packets */
-+ uint16 len; /* total number of packets */
-+};
-+
-+#define PKTQ_PREC_ITER(pq, prec) for (prec = (pq)->num_prec - 1; prec >= 0; prec--)
-+
-+/* forward definition of ether_addr structure used by some function prototypes */
-+
-+struct ether_addr;
-+
-+/* operations on a specific precedence in packet queue */
-+
-+#define pktq_psetmax(pq, prec, _max) ((pq)->q[prec].max = (_max))
-+#define pktq_plen(pq, prec) ((pq)->q[prec].len)
-+#define pktq_pavail(pq, prec) ((pq)->q[prec].max - (pq)->q[prec].len)
-+#define pktq_pfull(pq, prec) ((pq)->q[prec].len >= (pq)->q[prec].max)
-+#define pktq_pempty(pq, prec) ((pq)->q[prec].len == 0)
-+
-+#define pktq_ppeek(pq, prec) ((pq)->q[prec].head)
-+#define pktq_ppeek_tail(pq, prec) ((pq)->q[prec].tail)
-+
-+extern void *pktq_penq(struct pktq *pq, int prec, void *p);
-+extern void *pktq_penq_head(struct pktq *pq, int prec, void *p);
-+extern void *pktq_pdeq(struct pktq *pq, int prec);
-+extern void *pktq_pdeq_tail(struct pktq *pq, int prec);
-+/* Empty the queue at particular precedence level */
-+extern void pktq_pflush(osl_t *osh, struct pktq *pq, int prec, bool dir);
-+/* Remove a specified packet from its queue */
-+extern bool pktq_pdel(struct pktq *pq, void *p, int prec);
-+
-+/* operations on a set of precedences in packet queue */
-+
-+extern int pktq_mlen(struct pktq *pq, uint prec_bmp);
-+extern void *pktq_mdeq(struct pktq *pq, uint prec_bmp, int *prec_out);
-+
-+/* operations on packet queue as a whole */
-+
-+#define pktq_len(pq) ((int)(pq)->len)
-+#define pktq_max(pq) ((int)(pq)->max)
-+#define pktq_avail(pq) ((int)((pq)->max - (pq)->len))
-+#define pktq_full(pq) ((pq)->len >= (pq)->max)
-+#define pktq_empty(pq) ((pq)->len == 0)
-+
-+/* operations for single precedence queues */
-+#define pktenq(pq, p) pktq_penq((pq), 0, (p))
-+#define pktenq_head(pq, p) pktq_penq_head((pq), 0, (p))
-+#define pktdeq(pq) pktq_pdeq((pq), 0)
-+#define pktdeq_tail(pq) pktq_pdeq_tail((pq), 0)
-+
-+extern void pktq_init(struct pktq *pq, int num_prec, int max_len);
-+/* prec_out may be NULL if caller is not interested in return value */
-+extern void *pktq_deq(struct pktq *pq, int *prec_out);
-+extern void *pktq_deq_tail(struct pktq *pq, int *prec_out);
-+extern void *pktq_peek(struct pktq *pq, int *prec_out);
-+extern void *pktq_peek_tail(struct pktq *pq, int *prec_out);
-+extern void pktq_flush(osl_t *osh, struct pktq *pq, bool dir); /* Empty the entire queue */
-+
-+/* externs */
-+/* packet */
-+extern uint pktcopy(osl_t *osh, void *p, uint offset, int len, uchar *buf);
-+extern uint pkttotlen(osl_t *osh, void *p);
-+extern void *pktlast(osl_t *osh, void *p);
-+
-+extern void pktsetprio(void *pkt, bool update_vtag);
-+
-+#endif /* _pktq_h_ */
-diff -urN linux.old/drivers/net/wl/sbhnddma.h linux.dev/drivers/net/wl/sbhnddma.h
---- linux.old/drivers/net/wl/sbhnddma.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/net/wl/sbhnddma.h 2006-04-28 02:20:47.000000000 +0200
-@@ -0,0 +1,284 @@
-+/*
-+ * Generic Broadcom Home Networking Division (HND) DMA engine HW interface
-+ * This supports the following chips: BCM42xx, 44xx, 47xx .
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sbhnddma.h,v 1.1.1.2 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef _sbhnddma_h_
-+#define _sbhnddma_h_
-+
-+/* DMA structure:
-+ * support two DMA engines: 32 bits address or 64 bit addressing
-+ * basic DMA register set is per channel(transmit or receive)
-+ * a pair of channels is defined for convenience
-+ */
-+
-+
-+/* 32 bits addressing */
-+
-+/* dma registers per channel(xmt or rcv) */
-+typedef volatile struct {
-+ uint32 control; /* enable, et al */
-+ uint32 addr; /* descriptor ring base address (4K aligned) */
-+ uint32 ptr; /* last descriptor posted to chip */
-+ uint32 status; /* current active descriptor, et al */
-+} dma32regs_t;
-+
-+typedef volatile struct {
-+ dma32regs_t xmt; /* dma tx channel */
-+ dma32regs_t rcv; /* dma rx channel */
-+} dma32regp_t;
-+
-+typedef volatile struct { /* diag access */
-+ uint32 fifoaddr; /* diag address */
-+ uint32 fifodatalow; /* low 32bits of data */
-+ uint32 fifodatahigh; /* high 32bits of data */
-+ uint32 pad; /* reserved */
-+} dma32diag_t;
-+
-+/*
-+ * DMA Descriptor
-+ * Descriptors are only read by the hardware, never written back.
-+ */
-+typedef volatile struct {
-+ uint32 ctrl; /* misc control bits & bufcount */
-+ uint32 addr; /* data buffer address */
-+} dma32dd_t;
-+
-+/*
-+ * Each descriptor ring must be 4096byte aligned, and fit within a single 4096byte page.
-+ */
-+#define D32MAXRINGSZ 4096
-+#define D32RINGALIGN 4096
-+#define D32MAXDD (D32MAXRINGSZ / sizeof (dma32dd_t))
-+
-+/* transmit channel control */
-+#define XC_XE ((uint32)1 << 0) /* transmit enable */
-+#define XC_SE ((uint32)1 << 1) /* transmit suspend request */
-+#define XC_LE ((uint32)1 << 2) /* loopback enable */
-+#define XC_FL ((uint32)1 << 4) /* flush request */
-+#define XC_AE ((uint32)3 << 16) /* address extension bits */
-+#define XC_AE_SHIFT 16
-+
-+/* transmit descriptor table pointer */
-+#define XP_LD_MASK 0xfff /* last valid descriptor */
-+
-+/* transmit channel status */
-+#define XS_CD_MASK 0x0fff /* current descriptor pointer */
-+#define XS_XS_MASK 0xf000 /* transmit state */
-+#define XS_XS_SHIFT 12
-+#define XS_XS_DISABLED 0x0000 /* disabled */
-+#define XS_XS_ACTIVE 0x1000 /* active */
-+#define XS_XS_IDLE 0x2000 /* idle wait */
-+#define XS_XS_STOPPED 0x3000 /* stopped */
-+#define XS_XS_SUSP 0x4000 /* suspend pending */
-+#define XS_XE_MASK 0xf0000 /* transmit errors */
-+#define XS_XE_SHIFT 16
-+#define XS_XE_NOERR 0x00000 /* no error */
-+#define XS_XE_DPE 0x10000 /* descriptor protocol error */
-+#define XS_XE_DFU 0x20000 /* data fifo underrun */
-+#define XS_XE_BEBR 0x30000 /* bus error on buffer read */
-+#define XS_XE_BEDA 0x40000 /* bus error on descriptor access */
-+#define XS_AD_MASK 0xfff00000 /* active descriptor */
-+#define XS_AD_SHIFT 20
-+
-+/* receive channel control */
-+#define RC_RE ((uint32)1 << 0) /* receive enable */
-+#define RC_RO_MASK 0xfe /* receive frame offset */
-+#define RC_RO_SHIFT 1
-+#define RC_FM ((uint32)1 << 8) /* direct fifo receive (pio) mode */
-+#define RC_AE ((uint32)3 << 16) /* address extension bits */
-+#define RC_AE_SHIFT 16
-+
-+/* receive descriptor table pointer */
-+#define RP_LD_MASK 0xfff /* last valid descriptor */
-+
-+/* receive channel status */
-+#define RS_CD_MASK 0x0fff /* current descriptor pointer */
-+#define RS_RS_MASK 0xf000 /* receive state */
-+#define RS_RS_SHIFT 12
-+#define RS_RS_DISABLED 0x0000 /* disabled */
-+#define RS_RS_ACTIVE 0x1000 /* active */
-+#define RS_RS_IDLE 0x2000 /* idle wait */
-+#define RS_RS_STOPPED 0x3000 /* reserved */
-+#define RS_RE_MASK 0xf0000 /* receive errors */
-+#define RS_RE_SHIFT 16
-+#define RS_RE_NOERR 0x00000 /* no error */
-+#define RS_RE_DPE 0x10000 /* descriptor protocol error */
-+#define RS_RE_DFO 0x20000 /* data fifo overflow */
-+#define RS_RE_BEBW 0x30000 /* bus error on buffer write */
-+#define RS_RE_BEDA 0x40000 /* bus error on descriptor access */
-+#define RS_AD_MASK 0xfff00000 /* active descriptor */
-+#define RS_AD_SHIFT 20
-+
-+/* fifoaddr */
-+#define FA_OFF_MASK 0xffff /* offset */
-+#define FA_SEL_MASK 0xf0000 /* select */
-+#define FA_SEL_SHIFT 16
-+#define FA_SEL_XDD 0x00000 /* transmit dma data */
-+#define FA_SEL_XDP 0x10000 /* transmit dma pointers */
-+#define FA_SEL_RDD 0x40000 /* receive dma data */
-+#define FA_SEL_RDP 0x50000 /* receive dma pointers */
-+#define FA_SEL_XFD 0x80000 /* transmit fifo data */
-+#define FA_SEL_XFP 0x90000 /* transmit fifo pointers */
-+#define FA_SEL_RFD 0xc0000 /* receive fifo data */
-+#define FA_SEL_RFP 0xd0000 /* receive fifo pointers */
-+#define FA_SEL_RSD 0xe0000 /* receive frame status data */
-+#define FA_SEL_RSP 0xf0000 /* receive frame status pointers */
-+
-+/* descriptor control flags */
-+#define CTRL_BC_MASK 0x1fff /* buffer byte count */
-+#define CTRL_AE ((uint32)3 << 16) /* address extension bits */
-+#define CTRL_AE_SHIFT 16
-+#define CTRL_EOT ((uint32)1 << 28) /* end of descriptor table */
-+#define CTRL_IOC ((uint32)1 << 29) /* interrupt on completion */
-+#define CTRL_EOF ((uint32)1 << 30) /* end of frame */
-+#define CTRL_SOF ((uint32)1 << 31) /* start of frame */
-+
-+/* control flags in the range [27:20] are core-specific and not defined here */
-+#define CTRL_CORE_MASK 0x0ff00000
-+
-+/* 64 bits addressing */
-+
-+/* dma registers per channel(xmt or rcv) */
-+typedef volatile struct {
-+ uint32 control; /* enable, et al */
-+ uint32 ptr; /* last descriptor posted to chip */
-+ uint32 addrlow; /* descriptor ring base address low 32-bits (8K aligned) */
-+ uint32 addrhigh; /* descriptor ring base address bits 63:32 (8K aligned) */
-+ uint32 status0; /* current descriptor, xmt state */
-+ uint32 status1; /* active descriptor, xmt error */
-+} dma64regs_t;
-+
-+typedef volatile struct {
-+ dma64regs_t tx; /* dma64 tx channel */
-+ dma64regs_t rx; /* dma64 rx channel */
-+} dma64regp_t;
-+
-+typedef volatile struct { /* diag access */
-+ uint32 fifoaddr; /* diag address */
-+ uint32 fifodatalow; /* low 32bits of data */
-+ uint32 fifodatahigh; /* high 32bits of data */
-+ uint32 pad; /* reserved */
-+} dma64diag_t;
-+
-+/*
-+ * DMA Descriptor
-+ * Descriptors are only read by the hardware, never written back.
-+ */
-+typedef volatile struct {
-+ uint32 ctrl1; /* misc control bits & bufcount */
-+ uint32 ctrl2; /* buffer count and address extension */
-+ uint32 addrlow; /* memory address of the date buffer, bits 31:0 */
-+ uint32 addrhigh; /* memory address of the date buffer, bits 63:32 */
-+} dma64dd_t;
-+
-+/*
-+ * Each descriptor ring must be 8kB aligned, and fit within a contiguous 8kB physical addresss.
-+ */
-+#define D64MAXRINGSZ 8192
-+#define D64RINGALIGN 8192
-+#define D64MAXDD (D64MAXRINGSZ / sizeof (dma64dd_t))
-+
-+/* transmit channel control */
-+#define D64_XC_XE 0x00000001 /* transmit enable */
-+#define D64_XC_SE 0x00000002 /* transmit suspend request */
-+#define D64_XC_LE 0x00000004 /* loopback enable */
-+#define D64_XC_FL 0x00000010 /* flush request */
-+#define D64_XC_AE 0x00030000 /* address extension bits */
-+#define D64_XC_AE_SHIFT 16
-+
-+/* transmit descriptor table pointer */
-+#define D64_XP_LD_MASK 0x00000fff /* last valid descriptor */
-+
-+/* transmit channel status */
-+#define D64_XS0_CD_MASK 0x00001fff /* current descriptor pointer */
-+#define D64_XS0_XS_MASK 0xf0000000 /* transmit state */
-+#define D64_XS0_XS_SHIFT 28
-+#define D64_XS0_XS_DISABLED 0x00000000 /* disabled */
-+#define D64_XS0_XS_ACTIVE 0x10000000 /* active */
-+#define D64_XS0_XS_IDLE 0x20000000 /* idle wait */
-+#define D64_XS0_XS_STOPPED 0x30000000 /* stopped */
-+#define D64_XS0_XS_SUSP 0x40000000 /* suspend pending */
-+
-+#define D64_XS1_AD_MASK 0x0001ffff /* active descriptor */
-+#define D64_XS1_XE_MASK 0xf0000000 /* transmit errors */
-+#define D64_XS1_XE_SHIFT 28
-+#define D64_XS1_XE_NOERR 0x00000000 /* no error */
-+#define D64_XS1_XE_DPE 0x10000000 /* descriptor protocol error */
-+#define D64_XS1_XE_DFU 0x20000000 /* data fifo underrun */
-+#define D64_XS1_XE_DTE 0x30000000 /* data transfer error */
-+#define D64_XS1_XE_DESRE 0x40000000 /* descriptor read error */
-+#define D64_XS1_XE_COREE 0x50000000 /* core error */
-+
-+/* receive channel control */
-+#define D64_RC_RE 0x00000001 /* receive enable */
-+#define D64_RC_RO_MASK 0x000000fe /* receive frame offset */
-+#define D64_RC_RO_SHIFT 1
-+#define D64_RC_FM 0x00000100 /* direct fifo receive (pio) mode */
-+#define D64_RC_AE 0x00030000 /* address extension bits */
-+#define D64_RC_AE_SHIFT 16
-+
-+/* receive descriptor table pointer */
-+#define D64_RP_LD_MASK 0x00000fff /* last valid descriptor */
-+
-+/* receive channel status */
-+#define D64_RS0_CD_MASK 0x00001fff /* current descriptor pointer */
-+#define D64_RS0_RS_MASK 0xf0000000 /* receive state */
-+#define D64_RS0_RS_SHIFT 28
-+#define D64_RS0_RS_DISABLED 0x00000000 /* disabled */
-+#define D64_RS0_RS_ACTIVE 0x10000000 /* active */
-+#define D64_RS0_RS_IDLE 0x20000000 /* idle wait */
-+#define D64_RS0_RS_STOPPED 0x30000000 /* stopped */
-+#define D64_RS0_RS_SUSP 0x40000000 /* suspend pending */
-+
-+#define D64_RS1_AD_MASK 0x0001ffff /* active descriptor */
-+#define D64_RS1_RE_MASK 0xf0000000 /* receive errors */
-+#define D64_RS1_RE_SHIFT 28
-+#define D64_RS1_RE_NOERR 0x00000000 /* no error */
-+#define D64_RS1_RE_DPO 0x10000000 /* descriptor protocol error */
-+#define D64_RS1_RE_DFU 0x20000000 /* data fifo overflow */
-+#define D64_RS1_RE_DTE 0x30000000 /* data transfer error */
-+#define D64_RS1_RE_DESRE 0x40000000 /* descriptor read error */
-+#define D64_RS1_RE_COREE 0x50000000 /* core error */
-+
-+/* fifoaddr */
-+#define D64_FA_OFF_MASK 0xffff /* offset */
-+#define D64_FA_SEL_MASK 0xf0000 /* select */
-+#define D64_FA_SEL_SHIFT 16
-+#define D64_FA_SEL_XDD 0x00000 /* transmit dma data */
-+#define D64_FA_SEL_XDP 0x10000 /* transmit dma pointers */
-+#define D64_FA_SEL_RDD 0x40000 /* receive dma data */
-+#define D64_FA_SEL_RDP 0x50000 /* receive dma pointers */
-+#define D64_FA_SEL_XFD 0x80000 /* transmit fifo data */
-+#define D64_FA_SEL_XFP 0x90000 /* transmit fifo pointers */
-+#define D64_FA_SEL_RFD 0xc0000 /* receive fifo data */
-+#define D64_FA_SEL_RFP 0xd0000 /* receive fifo pointers */
-+#define D64_FA_SEL_RSD 0xe0000 /* receive frame status data */
-+#define D64_FA_SEL_RSP 0xf0000 /* receive frame status pointers */
-+
-+/* descriptor control flags 1 */
-+#define D64_CTRL1_EOT ((uint32)1 << 28) /* end of descriptor table */
-+#define D64_CTRL1_IOC ((uint32)1 << 29) /* interrupt on completion */
-+#define D64_CTRL1_EOF ((uint32)1 << 30) /* end of frame */
-+#define D64_CTRL1_SOF ((uint32)1 << 31) /* start of frame */
-+
-+/* descriptor control flags 2 */
-+#define D64_CTRL2_BC_MASK 0x00007fff /* buffer byte count mask */
-+#define D64_CTRL2_AE 0x00030000 /* address extension bits */
-+#define D64_CTRL2_AE_SHIFT 16
-+
-+/* control flags in the range [27:20] are core-specific and not defined here */
-+#define D64_CTRL_CORE_MASK 0x0ff00000
-+
-+
-+#endif /* _sbhnddma_h_ */
-diff -urN linux.old/drivers/parport/Config.in linux.dev/drivers/parport/Config.in
---- linux.old/drivers/parport/Config.in 2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/drivers/parport/Config.in 2006-04-27 19:24:19.000000000 +0200
-@@ -11,6 +11,7 @@
- tristate 'Parallel port support' CONFIG_PARPORT
- if [ "$CONFIG_PARPORT" != "n" ]; then
- dep_tristate ' PC-style hardware' CONFIG_PARPORT_PC $CONFIG_PARPORT
-+ dep_tristate ' Asus WL500g parallel port' CONFIG_PARPORT_SPLINK $CONFIG_PARPORT
- if [ "$CONFIG_PARPORT_PC" != "n" -a "$CONFIG_SERIAL" != "n" ]; then
- if [ "$CONFIG_SERIAL" = "m" ]; then
- define_tristate CONFIG_PARPORT_PC_CML1 m
-diff -urN linux.old/drivers/parport/Makefile linux.dev/drivers/parport/Makefile
---- linux.old/drivers/parport/Makefile 2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/drivers/parport/Makefile 2006-04-27 19:24:19.000000000 +0200
-@@ -22,6 +22,7 @@
-
- obj-$(CONFIG_PARPORT) += parport.o
- obj-$(CONFIG_PARPORT_PC) += parport_pc.o
-+obj-$(CONFIG_PARPORT_SPLINK) += parport_splink.o
- obj-$(CONFIG_PARPORT_PC_PCMCIA) += parport_cs.o
- obj-$(CONFIG_PARPORT_AMIGA) += parport_amiga.o
- obj-$(CONFIG_PARPORT_MFC3) += parport_mfc3.o
-diff -urN linux.old/drivers/parport/parport_splink.c linux.dev/drivers/parport/parport_splink.c
---- linux.old/drivers/parport/parport_splink.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/parport/parport_splink.c 2006-04-27 19:24:19.000000000 +0200
-@@ -0,0 +1,345 @@
-+/* Low-level parallel port routines for the ASUS WL-500g built-in port
-+ *
-+ * Author: Nuno Grilo <nuno.grilo@netcabo.pt>
-+ * Based on parport_pc source
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/ioport.h>
-+#include <linux/kernel.h>
-+#include <linux/slab.h>
-+#include <linux/parport.h>
-+#include <linux/parport_pc.h>
-+
-+#define SPLINK_ADDRESS 0xBF800010
-+
-+#undef DEBUG
-+
-+#ifdef DEBUG
-+#define DPRINTK printk
-+#else
-+#define DPRINTK(stuff...)
-+#endif
-+
-+
-+/* __parport_splink_frob_control differs from parport_splink_frob_control in that
-+ * it doesn't do any extra masking. */
-+static __inline__ unsigned char __parport_splink_frob_control (struct parport *p,
-+ unsigned char mask,
-+ unsigned char val)
-+{
-+ struct parport_pc_private *priv = p->physport->private_data;
-+ unsigned char *io = (unsigned char *) p->base;
-+ unsigned char ctr = priv->ctr;
-+#ifdef DEBUG_PARPORT
-+ printk (KERN_DEBUG
-+ "__parport_splink_frob_control(%02x,%02x): %02x -> %02x\n",
-+ mask, val, ctr, ((ctr & ~mask) ^ val) & priv->ctr_writable);
-+#endif
-+ ctr = (ctr & ~mask) ^ val;
-+ ctr &= priv->ctr_writable; /* only write writable bits. */
-+ *(io+2) = ctr;
-+ priv->ctr = ctr; /* Update soft copy */
-+ return ctr;
-+}
-+
-+
-+
-+static void parport_splink_data_forward (struct parport *p)
-+{
-+ DPRINTK(KERN_DEBUG "parport_splink: parport_data_forward called\n");
-+ __parport_splink_frob_control (p, 0x20, 0);
-+}
-+
-+static void parport_splink_data_reverse (struct parport *p)
-+{
-+ DPRINTK(KERN_DEBUG "parport_splink: parport_data_forward called\n");
-+ __parport_splink_frob_control (p, 0x20, 0x20);
-+}
-+
-+/*
-+static void parport_splink_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ DPRINTK(KERN_DEBUG "parport_splink: IRQ handler called\n");
-+ parport_generic_irq(irq, (struct parport *) dev_id, regs);
-+}
-+*/
-+
-+static void parport_splink_enable_irq(struct parport *p)
-+{
-+ DPRINTK(KERN_DEBUG "parport_splink: parport_splink_enable_irq called\n");
-+ __parport_splink_frob_control (p, 0x10, 0x10);
-+}
-+
-+static void parport_splink_disable_irq(struct parport *p)
-+{
-+ DPRINTK(KERN_DEBUG "parport_splink: parport_splink_disable_irq called\n");
-+ __parport_splink_frob_control (p, 0x10, 0);
-+}
-+
-+static void parport_splink_init_state(struct pardevice *dev, struct parport_state *s)
-+{
-+ DPRINTK(KERN_DEBUG "parport_splink: parport_splink_init_state called\n");
-+ s->u.pc.ctr = 0xc | (dev->irq_func ? 0x10 : 0x0);
-+ if (dev->irq_func &&
-+ dev->port->irq != PARPORT_IRQ_NONE)
-+ /* Set ackIntEn */
-+ s->u.pc.ctr |= 0x10;
-+}
-+
-+static void parport_splink_save_state(struct parport *p, struct parport_state *s)
-+{
-+ const struct parport_pc_private *priv = p->physport->private_data;
-+ DPRINTK(KERN_DEBUG "parport_splink: parport_splink_save_state called\n");
-+ s->u.pc.ctr = priv->ctr;
-+}
-+
-+static void parport_splink_restore_state(struct parport *p, struct parport_state *s)
-+{
-+ struct parport_pc_private *priv = p->physport->private_data;
-+ unsigned char *io = (unsigned char *) p->base;
-+ unsigned char ctr = s->u.pc.ctr;
-+
-+ DPRINTK(KERN_DEBUG "parport_splink: parport_splink_restore_state called\n");
-+ *(io+2) = ctr;
-+ priv->ctr = ctr;
-+}
-+
-+static void parport_splink_setup_interrupt(void) {
-+ return;
-+}
-+
-+static void parport_splink_write_data(struct parport *p, unsigned char d) {
-+ DPRINTK(KERN_DEBUG "parport_splink: write data called\n");
-+ unsigned char *io = (unsigned char *) p->base;
-+ *io = d;
-+}
-+
-+static unsigned char parport_splink_read_data(struct parport *p) {
-+ DPRINTK(KERN_DEBUG "parport_splink: read data called\n");
-+ unsigned char *io = (unsigned char *) p->base;
-+ return *io;
-+}
-+
-+static void parport_splink_write_control(struct parport *p, unsigned char d)
-+{
-+ const unsigned char wm = (PARPORT_CONTROL_STROBE |
-+ PARPORT_CONTROL_AUTOFD |
-+ PARPORT_CONTROL_INIT |
-+ PARPORT_CONTROL_SELECT);
-+
-+ DPRINTK(KERN_DEBUG "parport_splink: write control called\n");
-+ /* Take this out when drivers have adapted to the newer interface. */
-+ if (d & 0x20) {
-+ printk (KERN_DEBUG "%s (%s): use data_reverse for this!\n",
-+ p->name, p->cad->name);
-+ parport_splink_data_reverse (p);
-+ }
-+
-+ __parport_splink_frob_control (p, wm, d & wm);
-+}
-+
-+static unsigned char parport_splink_read_control(struct parport *p)
-+{
-+ const unsigned char wm = (PARPORT_CONTROL_STROBE |
-+ PARPORT_CONTROL_AUTOFD |
-+ PARPORT_CONTROL_INIT |
-+ PARPORT_CONTROL_SELECT);
-+ DPRINTK(KERN_DEBUG "parport_splink: read control called\n");
-+ const struct parport_pc_private *priv = p->physport->private_data;
-+ return priv->ctr & wm; /* Use soft copy */
-+}
-+
-+static unsigned char parport_splink_frob_control (struct parport *p, unsigned char mask,
-+ unsigned char val)
-+{
-+ const unsigned char wm = (PARPORT_CONTROL_STROBE |
-+ PARPORT_CONTROL_AUTOFD |
-+ PARPORT_CONTROL_INIT |
-+ PARPORT_CONTROL_SELECT);
-+
-+ DPRINTK(KERN_DEBUG "parport_splink: frob control called\n");
-+ /* Take this out when drivers have adapted to the newer interface. */
-+ if (mask & 0x20) {
-+ printk (KERN_DEBUG "%s (%s): use data_%s for this!\n",
-+ p->name, p->cad->name,
-+ (val & 0x20) ? "reverse" : "forward");
-+ if (val & 0x20)
-+ parport_splink_data_reverse (p);
-+ else
-+ parport_splink_data_forward (p);
-+ }
-+
-+ /* Restrict mask and val to control lines. */
-+ mask &= wm;
-+ val &= wm;
-+
-+ return __parport_splink_frob_control (p, mask, val);
-+}
-+
-+static unsigned char parport_splink_read_status(struct parport *p)
-+{
-+ DPRINTK(KERN_DEBUG "parport_splink: read status called\n");
-+ unsigned char *io = (unsigned char *) p->base;
-+ return *(io+1);
-+}
-+
-+static void parport_splink_inc_use_count(void)
-+{
-+#ifdef MODULE
-+ MOD_INC_USE_COUNT;
-+#endif
-+}
-+
-+static void parport_splink_dec_use_count(void)
-+{
-+#ifdef MODULE
-+ MOD_DEC_USE_COUNT;
-+#endif
-+}
-+
-+static struct parport_operations parport_splink_ops =
-+{
-+ parport_splink_write_data,
-+ parport_splink_read_data,
-+
-+ parport_splink_write_control,
-+ parport_splink_read_control,
-+ parport_splink_frob_control,
-+
-+ parport_splink_read_status,
-+
-+ parport_splink_enable_irq,
-+ parport_splink_disable_irq,
-+
-+ parport_splink_data_forward,
-+ parport_splink_data_reverse,
-+
-+ parport_splink_init_state,
-+ parport_splink_save_state,
-+ parport_splink_restore_state,
-+
-+ parport_splink_inc_use_count,
-+ parport_splink_dec_use_count,
-+
-+ parport_ieee1284_epp_write_data,
-+ parport_ieee1284_epp_read_data,
-+ parport_ieee1284_epp_write_addr,
-+ parport_ieee1284_epp_read_addr,
-+
-+ parport_ieee1284_ecp_write_data,
-+ parport_ieee1284_ecp_read_data,
-+ parport_ieee1284_ecp_write_addr,
-+
-+ parport_ieee1284_write_compat,
-+ parport_ieee1284_read_nibble,
-+ parport_ieee1284_read_byte,
-+};
-+
-+/* --- Initialisation code -------------------------------- */
-+
-+static struct parport *parport_splink_probe_port (unsigned long int base)
-+{
-+ struct parport_pc_private *priv;
-+ struct parport_operations *ops;
-+ struct parport *p;
-+
-+ if (check_mem_region(base, 3)) {
-+ printk (KERN_DEBUG "parport (0x%lx): iomem region not available\n", base);
-+ return NULL;
-+ }
-+ priv = kmalloc (sizeof (struct parport_pc_private), GFP_KERNEL);
-+ if (!priv) {
-+ printk (KERN_DEBUG "parport (0x%lx): no memory!\n", base);
-+ return NULL;
-+ }
-+ ops = kmalloc (sizeof (struct parport_operations), GFP_KERNEL);
-+ if (!ops) {
-+ printk (KERN_DEBUG "parport (0x%lx): no memory for ops!\n",
-+ base);
-+ kfree (priv);
-+ return NULL;
-+ }
-+ memcpy (ops, &parport_splink_ops, sizeof (struct parport_operations));
-+ priv->ctr = 0xc;
-+ priv->ctr_writable = 0xff;
-+
-+ if (!(p = parport_register_port(base, PARPORT_IRQ_NONE,
-+ PARPORT_DMA_NONE, ops))) {
-+ printk (KERN_DEBUG "parport (0x%lx): registration failed!\n",
-+ base);
-+ kfree (priv);
-+ kfree (ops);
-+ return NULL;
-+ }
-+
-+ p->modes = PARPORT_MODE_PCSPP | PARPORT_MODE_SAFEININT;
-+ p->size = (p->modes & PARPORT_MODE_EPP)?8:3;
-+ p->private_data = priv;
-+
-+ parport_proc_register(p);
-+ request_mem_region (p->base, 3, p->name);
-+
-+ /* Done probing. Now put the port into a sensible start-up state. */
-+ parport_splink_write_data(p, 0);
-+ parport_splink_data_forward (p);
-+
-+ /* Now that we've told the sharing engine about the port, and
-+ found out its characteristics, let the high-level drivers
-+ know about it. */
-+ parport_announce_port (p);
-+
-+ DPRINTK(KERN_DEBUG "parport (0x%lx): init ok!\n",
-+ base);
-+ return p;
-+}
-+
-+static void parport_splink_unregister_port(struct parport *p) {
-+ struct parport_pc_private *priv = p->private_data;
-+ struct parport_operations *ops = p->ops;
-+
-+ if (p->irq != PARPORT_IRQ_NONE)
-+ free_irq(p->irq, p);
-+ release_mem_region(p->base, 3);
-+ parport_proc_unregister(p);
-+ kfree (priv);
-+ parport_unregister_port(p);
-+ kfree (ops);
-+}
-+
-+
-+int parport_splink_init(void)
-+{
-+ int ret;
-+
-+ DPRINTK(KERN_DEBUG "parport_splink init called\n");
-+ parport_splink_setup_interrupt();
-+ ret = !parport_splink_probe_port(SPLINK_ADDRESS);
-+
-+ return ret;
-+}
-+
-+void parport_splink_cleanup(void) {
-+ struct parport *p = parport_enumerate(), *tmp;
-+ DPRINTK(KERN_DEBUG "parport_splink cleanup called\n");
-+ if (p->size) {
-+ if (p->modes & PARPORT_MODE_PCSPP) {
-+ while(p) {
-+ tmp = p->next;
-+ parport_splink_unregister_port(p);
-+ p = tmp;
-+ }
-+ }
-+ }
-+}
-+
-+MODULE_AUTHOR("Nuno Grilo <nuno.grilo@netcabo.pt>");
-+MODULE_DESCRIPTION("Parport Driver for ASUS WL-500g router builtin Port");
-+MODULE_SUPPORTED_DEVICE("ASUS WL-500g builtin Parallel Port");
-+MODULE_LICENSE("GPL");
-+
-+module_init(parport_splink_init)
-+module_exit(parport_splink_cleanup)
-+
-diff -urN linux.old/include/asm-mips/bootinfo.h linux.dev/include/asm-mips/bootinfo.h
---- linux.old/include/asm-mips/bootinfo.h 2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/include/asm-mips/bootinfo.h 2006-04-27 19:24:19.000000000 +0200
-@@ -37,6 +37,7 @@
- #define MACH_GROUP_HP_LJ 20 /* Hewlett Packard LaserJet */
- #define MACH_GROUP_LASAT 21
- #define MACH_GROUP_TITAN 22 /* PMC-Sierra Titan */
-+#define MACH_GROUP_BRCM 23 /* Broadcom */
-
- /*
- * Valid machtype values for group unknown (low order halfword of mips_machtype)
-@@ -197,6 +198,15 @@
- #define MACH_TANBAC_TB0229 7 /* TANBAC TB0229 (VR4131DIMM) */
-
- /*
-+ * Valid machtypes for group Broadcom
-+ */
-+#define MACH_BCM93725 0
-+#define MACH_BCM93725_VJ 1
-+#define MACH_BCM93730 2
-+#define MACH_BCM947XX 3
-+#define MACH_BCM933XX 4
-+
-+/*
- * Valid machtype for group TITAN
- */
- #define MACH_TITAN_YOSEMITE 1 /* PMC-Sierra Yosemite */
-diff -urN linux.old/include/asm-mips/cpu.h linux.dev/include/asm-mips/cpu.h
---- linux.old/include/asm-mips/cpu.h 2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/include/asm-mips/cpu.h 2006-04-27 19:24:19.000000000 +0200
-@@ -22,6 +22,11 @@
- spec.
- */
-
-+#define PRID_COPT_MASK 0xff000000
-+#define PRID_COMP_MASK 0x00ff0000
-+#define PRID_IMP_MASK 0x0000ff00
-+#define PRID_REV_MASK 0x000000ff
-+
- #define PRID_COMP_LEGACY 0x000000
- #define PRID_COMP_MIPS 0x010000
- #define PRID_COMP_BROADCOM 0x020000
-@@ -58,6 +63,7 @@
- #define PRID_IMP_RM7000 0x2700
- #define PRID_IMP_NEVADA 0x2800 /* RM5260 ??? */
- #define PRID_IMP_RM9000 0x3400
-+#define PRID_IMP_BCM4710 0x4000
- #define PRID_IMP_R5432 0x5400
- #define PRID_IMP_R5500 0x5500
- #define PRID_IMP_4KC 0x8000
-@@ -66,10 +72,16 @@
- #define PRID_IMP_4KEC 0x8400
- #define PRID_IMP_4KSC 0x8600
- #define PRID_IMP_25KF 0x8800
-+#define PRID_IMP_BCM3302 0x9000
-+#define PRID_IMP_BCM3303 0x9100
- #define PRID_IMP_24K 0x9300
-
- #define PRID_IMP_UNKNOWN 0xff00
-
-+#define BCM330X(id) \
-+ (((id & (PRID_COMP_MASK | PRID_IMP_MASK)) == (PRID_COMP_BROADCOM | PRID_IMP_BCM3302)) \
-+ || ((id & (PRID_COMP_MASK | PRID_IMP_MASK)) == (PRID_COMP_BROADCOM | PRID_IMP_BCM3303)))
-+
- /*
- * These are the PRID's for when 23:16 == PRID_COMP_SIBYTE
- */
-@@ -174,7 +186,9 @@
- #define CPU_AU1550 57
- #define CPU_24K 58
- #define CPU_AU1200 59
--#define CPU_LAST 59
-+#define CPU_BCM4710 60
-+#define CPU_BCM3302 61
-+#define CPU_LAST 61
-
- /*
- * ISA Level encodings
-diff -urN linux.old/include/asm-mips/r4kcache.h linux.dev/include/asm-mips/r4kcache.h
---- linux.old/include/asm-mips/r4kcache.h 2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/include/asm-mips/r4kcache.h 2006-04-27 19:24:19.000000000 +0200
-@@ -658,4 +658,17 @@
- cache128_unroll32(addr|ws,Index_Writeback_Inv_SD);
- }
-
-+extern inline void fill_icache_line(unsigned long addr)
-+{
-+ __asm__ __volatile__(
-+ ".set noreorder\n\t"
-+ ".set mips3\n\t"
-+ "cache %1, (%0)\n\t"
-+ ".set mips0\n\t"
-+ ".set reorder"
-+ :
-+ : "r" (addr),
-+ "i" (Fill));
-+}
-+
- #endif /* __ASM_R4KCACHE_H */
-diff -urN linux.old/include/asm-mips/serial.h linux.dev/include/asm-mips/serial.h
---- linux.old/include/asm-mips/serial.h 2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/include/asm-mips/serial.h 2006-04-27 19:24:19.000000000 +0200
-@@ -223,6 +223,13 @@
- #define TXX927_SERIAL_PORT_DEFNS
- #endif
-
-+#ifdef CONFIG_BCM947XX
-+/* reserve 4 ports to be configured at runtime */
-+#define BCM947XX_SERIAL_PORT_DEFNS { 0, }, { 0, }, { 0, }, { 0, },
-+#else
-+#define BCM947XX_SERIAL_PORT_DEFNS
-+#endif
-+
- #ifdef CONFIG_HAVE_STD_PC_SERIAL_PORT
- #define STD_SERIAL_PORT_DEFNS \
- /* UART CLK PORT IRQ FLAGS */ \
-@@ -470,6 +477,7 @@
- #define SERIAL_PORT_DFNS \
- ATLAS_SERIAL_PORT_DEFNS \
- AU1000_SERIAL_PORT_DEFNS \
-+ BCM947XX_SERIAL_PORT_DEFNS \
- COBALT_SERIAL_PORT_DEFNS \
- DDB5477_SERIAL_PORT_DEFNS \
- EV96100_SERIAL_PORT_DEFNS \
-diff -urN linux.old/init/do_mounts.c linux.dev/init/do_mounts.c
---- linux.old/init/do_mounts.c 2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/init/do_mounts.c 2006-04-27 19:24:19.000000000 +0200
-@@ -254,7 +254,13 @@
- { "ftlb", 0x2c08 },
- { "ftlc", 0x2c10 },
- { "ftld", 0x2c18 },
-+#if defined(CONFIG_MTD_BLOCK) || defined(CONFIG_MTD_BLOCK_RO)
- { "mtdblock", 0x1f00 },
-+ { "mtdblock0",0x1f00 },
-+ { "mtdblock1",0x1f01 },
-+ { "mtdblock2",0x1f02 },
-+ { "mtdblock3",0x1f03 },
-+#endif
- { "nb", 0x2b00 },
- { NULL, 0 }
- };
diff --git a/openwrt/target/linux/brcm-2.4/patches/002-wl_fix.patch b/openwrt/target/linux/brcm-2.4/patches/002-wl_fix.patch
deleted file mode 100644
index 95044b6d60..0000000000
--- a/openwrt/target/linux/brcm-2.4/patches/002-wl_fix.patch
+++ /dev/null
@@ -1,348 +0,0 @@
-diff -urN linux.old/include/linux/netdevice.h linux.dev/include/linux/netdevice.h
---- linux.old/include/linux/netdevice.h 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/include/linux/netdevice.h 2006-03-19 06:33:21.000000000 +0100
-@@ -296,10 +296,7 @@
- /* List of functions to handle Wireless Extensions (instead of ioctl).
- * See <net/iw_handler.h> for details. Jean II */
- const struct iw_handler_def * wireless_handlers;
-- /* Instance data managed by the core of Wireless Extensions. */
-- struct iw_public_data * wireless_data;
-
-- struct ethtool_ops *ethtool_ops;
-
- /*
- * This marks the end of the "visible" part of the structure. All
-@@ -354,8 +351,8 @@
-
- struct Qdisc *qdisc;
- struct Qdisc *qdisc_sleeping;
-+ struct Qdisc *qdisc_list;
- struct Qdisc *qdisc_ingress;
-- struct list_head qdisc_list;
- unsigned long tx_queue_len; /* Max frames per queue allowed */
-
- /* hard_start_xmit synchronizer */
-@@ -455,6 +452,10 @@
- /* this will get initialized at each interface type init routine */
- struct divert_blk *divert;
- #endif /* CONFIG_NET_DIVERT */
-+ struct ethtool_ops *ethtool_ops;
-+
-+ /* Instance data managed by the core of Wireless Extensions. */
-+ struct iw_public_data * wireless_data;
- };
-
- /* 2.6 compatibility */
-diff -urN linux.old/include/linux/skbuff.h linux.dev/include/linux/skbuff.h
---- linux.old/include/linux/skbuff.h 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/include/linux/skbuff.h 2006-03-19 06:29:41.000000000 +0100
-@@ -138,10 +138,6 @@
- struct sock *sk; /* Socket we are owned by */
- struct timeval stamp; /* Time we arrived */
- struct net_device *dev; /* Device we arrived on/are leaving by */
-- struct net_device *real_dev; /* For support of point to point protocols
-- (e.g. 802.3ad) over bonding, we must save the
-- physical device that got the packet before
-- replacing skb->dev with the virtual device. */
-
- /* Transport layer header */
- union
-@@ -225,6 +221,10 @@
- #if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
- struct nf_info *nf_info;
- #endif
-+ struct net_device *real_dev; /* For support of point to point protocols
-+ (e.g. 802.3ad) over bonding, we must save the
-+ physical device that got the packet before
-+ replacing skb->dev with the virtual device. */
- };
-
- #ifdef __KERNEL__
-diff -urN linux.old/include/net/pkt_sched.h linux.dev/include/net/pkt_sched.h
---- linux.old/include/net/pkt_sched.h 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/include/net/pkt_sched.h 2006-03-19 06:29:41.000000000 +0100
-@@ -63,8 +63,11 @@
- int (*enqueue)(struct sk_buff *, struct Qdisc *);
- struct sk_buff * (*dequeue)(struct Qdisc *);
- int (*requeue)(struct sk_buff *, struct Qdisc *);
-- unsigned int (*drop)(struct Qdisc *);
--
-+#ifdef CONFIG_BCM4710
-+ int (*drop)(struct Qdisc *);
-+#else
-+ unsigned int (*drop)(struct Qdisc *);
-+#endif
- int (*init)(struct Qdisc *, struct rtattr *arg);
- void (*reset)(struct Qdisc *);
- void (*destroy)(struct Qdisc *);
-@@ -84,12 +87,19 @@
- #define TCQ_F_THROTTLED 2
- #define TCQ_F_INGRESS 4
- struct Qdisc_ops *ops;
-+#ifdef CONFIG_BCM4710
-+ struct Qdisc *next;
-+#endif
- u32 handle;
-- u32 parent;
-+#ifndef CONFIG_BCM4710
-+ u32 parent;
-+#endif
- atomic_t refcnt;
- struct sk_buff_head q;
- struct net_device *dev;
-- struct list_head list;
-+#ifndef CONFIG_BCM4710
-+ struct list_head list;
-+#endif
-
- struct tc_stats stats;
- int (*reshape_fail)(struct sk_buff *skb, struct Qdisc *q);
-diff -urN linux.old/net/core/Makefile linux.dev/net/core/Makefile
---- linux.old/net/core/Makefile 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/net/core/Makefile 2006-03-19 06:29:41.000000000 +0100
-@@ -9,7 +9,11 @@
-
- O_TARGET := core.o
-
-+ifeq ($(CONFIG_BCM4710),y)
-+export-objs := netfilter.o profile.o neighbour.o
-+else
- export-objs := netfilter.o profile.o ethtool.o neighbour.o
-+endif
-
- obj-y := sock.o skbuff.o iovec.o datagram.o scm.o
-
-@@ -21,8 +25,13 @@
-
- obj-$(CONFIG_FILTER) += filter.o
-
-+ifeq ($(CONFIG_BCM4710),y)
-+obj-$(CONFIG_NET) += dev.o dev_mcast.o dst.o neighbour.o \
-+ rtnetlink.o utils.o
-+else
- obj-$(CONFIG_NET) += dev.o ethtool.o dev_mcast.o dst.o neighbour.o \
- rtnetlink.o utils.o
-+endif
-
- obj-$(CONFIG_NETFILTER) += netfilter.o
- obj-$(CONFIG_NET_DIVERT) += dv.o
-diff -urN linux.old/net/core/dev.c linux.dev/net/core/dev.c
---- linux.old/net/core/dev.c 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/net/core/dev.c 2006-03-19 06:29:41.000000000 +0100
-@@ -2232,6 +2232,7 @@
- cmd == SIOCGMIIPHY ||
- cmd == SIOCGMIIREG ||
- cmd == SIOCSMIIREG ||
-+ cmd == SIOCETHTOOL ||
- cmd == SIOCWANDEV) {
- if (dev->do_ioctl) {
- if (!netif_device_present(dev))
-@@ -2324,6 +2325,7 @@
- }
- return ret;
-
-+#ifndef CONFIG_BCM4710
- case SIOCETHTOOL:
- dev_load(ifr.ifr_name);
- rtnl_lock();
-@@ -2337,6 +2339,7 @@
- ret = -EFAULT;
- }
- return ret;
-+#endif
-
- /*
- * These ioctl calls:
-@@ -2412,6 +2415,7 @@
-
- default:
- if (cmd == SIOCWANDEV ||
-+ (cmd == SIOCETHTOOL) ||
- (cmd >= SIOCDEVPRIVATE &&
- cmd <= SIOCDEVPRIVATE + 15)) {
- dev_load(ifr.ifr_name);
-diff -urN linux.old/net/sched/sch_api.c linux.dev/net/sched/sch_api.c
---- linux.old/net/sched/sch_api.c 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/net/sched/sch_api.c 2006-03-19 06:29:41.000000000 +0100
-@@ -194,11 +194,12 @@
- {
- struct Qdisc *q;
-
-- list_for_each_entry(q, &dev->qdisc_list, list) {
-+ for (q = dev->qdisc_list; q; q = q->next) {
- if (q->handle == handle)
- return q;
- }
- return NULL;
-+
- }
-
- struct Qdisc *qdisc_leaf(struct Qdisc *p, u32 classid)
-@@ -371,8 +372,6 @@
- unsigned long cl = cops->get(parent, classid);
- if (cl) {
- err = cops->graft(parent, cl, new, old);
-- if (new)
-- new->parent = classid;
- cops->put(parent, cl);
- }
- }
-@@ -427,7 +426,6 @@
-
- memset(sch, 0, size);
-
-- INIT_LIST_HEAD(&sch->list);
- skb_queue_head_init(&sch->q);
-
- if (handle == TC_H_INGRESS)
-@@ -453,7 +451,8 @@
-
- if (!ops->init || (err = ops->init(sch, tca[TCA_OPTIONS-1])) == 0) {
- write_lock(&qdisc_tree_lock);
-- list_add_tail(&sch->list, &dev->qdisc_list);
-+ sch->next = dev->qdisc_list;
-+ dev->qdisc_list = sch;
- write_unlock(&qdisc_tree_lock);
- #ifdef CONFIG_NET_ESTIMATOR
- if (tca[TCA_RATE-1])
-@@ -808,19 +807,16 @@
- if (idx > s_idx)
- s_q_idx = 0;
- read_lock(&qdisc_tree_lock);
-- q_idx = 0;
-- list_for_each_entry(q, &dev->qdisc_list, list) {
-- if (q_idx < s_q_idx) {
-- q_idx++;
-- continue;
-- }
-- if (tc_fill_qdisc(skb, q, q->parent, NETLINK_CB(cb->skb).pid,
-- cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWQDISC) <= 0) {
-- read_unlock(&qdisc_tree_lock);
-- goto done;
-- }
-- q_idx++;
-- }
-+ for (q = dev->qdisc_list, q_idx = 0; q;
-+ q = q->next, q_idx++) {
-+ if (q_idx < s_q_idx)
-+ continue;
-+ if (tc_fill_qdisc(skb, q, 0, NETLINK_CB(cb->skb).pid,
-+ cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWQDISC) <= 0) {
-+ read_unlock(&qdisc_tree_lock);
-+ goto done;
-+ }
-+ }
- read_unlock(&qdisc_tree_lock);
- }
-
-@@ -1033,27 +1029,24 @@
- t = 0;
-
- read_lock(&qdisc_tree_lock);
-- list_for_each_entry(q, &dev->qdisc_list, list) {
-- if (t < s_t || !q->ops->cl_ops ||
-- (tcm->tcm_parent &&
-- TC_H_MAJ(tcm->tcm_parent) != q->handle)) {
-- t++;
-- continue;
-- }
-- if (t > s_t)
-- memset(&cb->args[1], 0, sizeof(cb->args)-sizeof(cb->args[0]));
-- arg.w.fn = qdisc_class_dump;
-- arg.skb = skb;
-- arg.cb = cb;
-- arg.w.stop = 0;
-- arg.w.skip = cb->args[1];
-- arg.w.count = 0;
-- q->ops->cl_ops->walk(q, &arg.w);
-- cb->args[1] = arg.w.count;
-- if (arg.w.stop)
-- break;
-- t++;
-- }
-+ for (q=dev->qdisc_list, t=0; q; q = q->next, t++) {
-+ if (t < s_t) continue;
-+ if (!q->ops->cl_ops) continue;
-+ if (tcm->tcm_parent && TC_H_MAJ(tcm->tcm_parent) != q->handle)
-+ continue;
-+ if (t > s_t)
-+ memset(&cb->args[1], 0, sizeof(cb->args)-sizeof(cb->args[0]));
-+ arg.w.fn = qdisc_class_dump;
-+ arg.skb = skb;
-+ arg.cb = cb;
-+ arg.w.stop = 0;
-+ arg.w.skip = cb->args[1];
-+ arg.w.count = 0;
-+ q->ops->cl_ops->walk(q, &arg.w);
-+ cb->args[1] = arg.w.count;
-+ if (arg.w.stop)
-+ break;
-+ }
- read_unlock(&qdisc_tree_lock);
-
- cb->args[0] = t;
-diff -urN linux.old/net/sched/sch_generic.c linux.dev/net/sched/sch_generic.c
---- linux.old/net/sched/sch_generic.c 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/net/sched/sch_generic.c 2006-03-19 06:29:41.000000000 +0100
-@@ -399,7 +399,6 @@
- return NULL;
- memset(sch, 0, size);
-
-- INIT_LIST_HEAD(&sch->list);
- skb_queue_head_init(&sch->q);
- sch->ops = ops;
- sch->enqueue = ops->enqueue;
-@@ -429,11 +428,22 @@
- void qdisc_destroy(struct Qdisc *qdisc)
- {
- struct Qdisc_ops *ops = qdisc->ops;
-+ struct net_device *dev;
-
- if (qdisc->flags&TCQ_F_BUILTIN ||
- !atomic_dec_and_test(&qdisc->refcnt))
- return;
-- list_del(&qdisc->list);
-+
-+ dev = qdisc->dev;
-+ if (dev) {
-+ struct Qdisc *q, **qp;
-+ for (qp = &qdisc->dev->qdisc_list; (q=*qp) != NULL; qp = &q->next) {
-+ if (q == qdisc) {
-+ *qp = q->next;
-+ break;
-+ }
-+ }
-+ }
- #ifdef CONFIG_NET_ESTIMATOR
- qdisc_kill_estimator(&qdisc->stats);
- #endif
-@@ -462,9 +472,9 @@
- return;
- }
- write_lock(&qdisc_tree_lock);
-- list_add_tail(&qdisc->list, &dev->qdisc_list);
-+ qdisc->next = dev->qdisc_list;
-+ dev->qdisc_list = qdisc;
- write_unlock(&qdisc_tree_lock);
--
- } else {
- qdisc = &noqueue_qdisc;
- }
-@@ -508,7 +518,7 @@
- dev->qdisc = &noop_qdisc;
- spin_unlock_bh(&dev->queue_lock);
- dev->qdisc_sleeping = &noop_qdisc;
-- INIT_LIST_HEAD(&dev->qdisc_list);
-+ dev->qdisc_list = NULL;
- write_unlock(&qdisc_tree_lock);
-
- dev_watchdog_init(dev);
-@@ -530,7 +540,7 @@
- qdisc_destroy(qdisc);
- }
- #endif
-- BUG_TRAP(list_empty(&dev->qdisc_list));
-+ BUG_TRAP(dev->qdisc_list == NULL);
- BUG_TRAP(!timer_pending(&dev->watchdog_timer));
- spin_unlock_bh(&dev->queue_lock);
- write_unlock(&qdisc_tree_lock);
diff --git a/openwrt/target/linux/brcm-2.4/patches/003-bcm47xx_cache_fixes.patch b/openwrt/target/linux/brcm-2.4/patches/003-bcm47xx_cache_fixes.patch
deleted file mode 100644
index e971e7fdfd..0000000000
--- a/openwrt/target/linux/brcm-2.4/patches/003-bcm47xx_cache_fixes.patch
+++ /dev/null
@@ -1,498 +0,0 @@
-diff -urN linux.old/arch/mips/kernel/entry.S linux.dev/arch/mips/kernel/entry.S
---- linux.old/arch/mips/kernel/entry.S 2005-07-05 16:46:49.000000000 +0200
-+++ linux.dev/arch/mips/kernel/entry.S 2005-07-06 11:23:55.000000000 +0200
-@@ -100,6 +100,10 @@
- * and R4400 SC and MC versions.
- */
- NESTED(except_vec3_generic, 0, sp)
-+#ifdef CONFIG_BCM4710
-+ nop
-+ nop
-+#endif
- #if R5432_CP0_INTERRUPT_WAR
- mfc0 k0, CP0_INDEX
- #endif
-diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
---- linux.old/arch/mips/mm/c-r4k.c 2005-07-05 16:46:49.000000000 +0200
-+++ linux.dev/arch/mips/mm/c-r4k.c 2005-07-06 11:23:55.000000000 +0200
-@@ -14,6 +14,12 @@
- #include <linux/mm.h>
- #include <linux/bitops.h>
-
-+#ifdef CONFIG_BCM4710
-+#include "../bcm947xx/include/typedefs.h"
-+#include "../bcm947xx/include/sbconfig.h"
-+#include <asm/paccess.h>
-+#endif
-+
- #include <asm/bcache.h>
- #include <asm/bootinfo.h>
- #include <asm/cacheops.h>
-@@ -40,6 +46,8 @@
- .bc_inv = (void *)no_sc_noop
- };
-
-+int bcm4710 = 0;
-+EXPORT_SYMBOL(bcm4710);
- struct bcache_ops *bcops = &no_sc_ops;
-
- #define cpu_is_r4600_v1_x() ((read_c0_prid() & 0xfffffff0) == 0x2010)
-@@ -64,8 +72,10 @@
- static inline void r4k_blast_dcache_page_setup(void)
- {
- unsigned long dc_lsize = current_cpu_data.dcache.linesz;
--
-- if (dc_lsize == 16)
-+
-+ if (bcm4710)
-+ r4k_blast_dcache_page = blast_dcache_page;
-+ else if (dc_lsize == 16)
- r4k_blast_dcache_page = blast_dcache16_page;
- else if (dc_lsize == 32)
- r4k_blast_dcache_page = r4k_blast_dcache_page_dc32;
-@@ -77,7 +87,9 @@
- {
- unsigned long dc_lsize = current_cpu_data.dcache.linesz;
-
-- if (dc_lsize == 16)
-+ if (bcm4710)
-+ r4k_blast_dcache_page_indexed = blast_dcache_page_indexed;
-+ else if (dc_lsize == 16)
- r4k_blast_dcache_page_indexed = blast_dcache16_page_indexed;
- else if (dc_lsize == 32)
- r4k_blast_dcache_page_indexed = blast_dcache32_page_indexed;
-@@ -89,7 +101,9 @@
- {
- unsigned long dc_lsize = current_cpu_data.dcache.linesz;
-
-- if (dc_lsize == 16)
-+ if (bcm4710)
-+ r4k_blast_dcache = blast_dcache;
-+ else if (dc_lsize == 16)
- r4k_blast_dcache = blast_dcache16;
- else if (dc_lsize == 32)
- r4k_blast_dcache = blast_dcache32;
-@@ -266,6 +280,7 @@
- r4k_blast_dcache();
- r4k_blast_icache();
-
-+ if (!bcm4710)
- switch (current_cpu_data.cputype) {
- case CPU_R4000SC:
- case CPU_R4000MC:
-@@ -304,10 +319,10 @@
- * Kludge alert. For obscure reasons R4000SC and R4400SC go nuts if we
- * only flush the primary caches but R10000 and R12000 behave sane ...
- */
-- if (current_cpu_data.cputype == CPU_R4000SC ||
-+ if (!bcm4710 && (current_cpu_data.cputype == CPU_R4000SC ||
- current_cpu_data.cputype == CPU_R4000MC ||
- current_cpu_data.cputype == CPU_R4400SC ||
-- current_cpu_data.cputype == CPU_R4400MC)
-+ current_cpu_data.cputype == CPU_R4400MC))
- r4k_blast_scache();
- }
-
-@@ -383,12 +398,15 @@
- unsigned long ic_lsize = current_cpu_data.icache.linesz;
- unsigned long addr, aend;
-
-+ addr = start & ~(dc_lsize - 1);
-+ aend = (end - 1) & ~(dc_lsize - 1);
-+
- if (!cpu_has_ic_fills_f_dc) {
- if (end - start > dcache_size)
- r4k_blast_dcache();
- else {
-- addr = start & ~(dc_lsize - 1);
-- aend = (end - 1) & ~(dc_lsize - 1);
-+ BCM4710_PROTECTED_FILL_TLB(addr);
-+ BCM4710_PROTECTED_FILL_TLB(aend);
-
- while (1) {
- /* Hit_Writeback_Inv_D */
-@@ -403,8 +421,6 @@
- if (end - start > icache_size)
- r4k_blast_icache();
- else {
-- addr = start & ~(ic_lsize - 1);
-- aend = (end - 1) & ~(ic_lsize - 1);
- while (1) {
- /* Hit_Invalidate_I */
- protected_flush_icache_line(addr);
-@@ -413,6 +429,9 @@
- addr += ic_lsize;
- }
- }
-+
-+ if (bcm4710)
-+ flush_cache_all();
- }
-
- /*
-@@ -443,7 +462,8 @@
- if (cpu_has_subset_pcaches) {
- unsigned long addr = (unsigned long) page_address(page);
-
-- r4k_blast_scache_page(addr);
-+ if (!bcm4710)
-+ r4k_blast_scache_page(addr);
- ClearPageDcacheDirty(page);
-
- return;
-@@ -451,6 +471,7 @@
-
- if (!cpu_has_ic_fills_f_dc) {
- unsigned long addr = (unsigned long) page_address(page);
-+
- r4k_blast_dcache_page(addr);
- ClearPageDcacheDirty(page);
- }
-@@ -477,7 +498,7 @@
- /* Catch bad driver code */
- BUG_ON(size == 0);
-
-- if (cpu_has_subset_pcaches) {
-+ if (!bcm4710 && cpu_has_subset_pcaches) {
- unsigned long sc_lsize = current_cpu_data.scache.linesz;
-
- if (size >= scache_size) {
-@@ -509,6 +530,8 @@
- R4600_HIT_CACHEOP_WAR_IMPL;
- a = addr & ~(dc_lsize - 1);
- end = (addr + size - 1) & ~(dc_lsize - 1);
-+ BCM4710_FILL_TLB(a);
-+ BCM4710_FILL_TLB(end);
- while (1) {
- flush_dcache_line(a); /* Hit_Writeback_Inv_D */
- if (a == end)
-@@ -527,7 +550,7 @@
- /* Catch bad driver code */
- BUG_ON(size == 0);
-
-- if (cpu_has_subset_pcaches) {
-+ if (!bcm4710 && (cpu_has_subset_pcaches)) {
- unsigned long sc_lsize = current_cpu_data.scache.linesz;
-
- if (size >= scache_size) {
-@@ -554,6 +577,8 @@
- R4600_HIT_CACHEOP_WAR_IMPL;
- a = addr & ~(dc_lsize - 1);
- end = (addr + size - 1) & ~(dc_lsize - 1);
-+ BCM4710_FILL_TLB(a);
-+ BCM4710_FILL_TLB(end);
- while (1) {
- flush_dcache_line(a); /* Hit_Writeback_Inv_D */
- if (a == end)
-@@ -577,6 +602,8 @@
- unsigned long dc_lsize = current_cpu_data.dcache.linesz;
-
- R4600_HIT_CACHEOP_WAR_IMPL;
-+ BCM4710_PROTECTED_FILL_TLB(addr);
-+ BCM4710_PROTECTED_FILL_TLB(addr + 4);
- protected_writeback_dcache_line(addr & ~(dc_lsize - 1));
- protected_flush_icache_line(addr & ~(ic_lsize - 1));
- if (MIPS4K_ICACHE_REFILL_WAR) {
-@@ -986,10 +1013,12 @@
- case CPU_R4000MC:
- case CPU_R4400SC:
- case CPU_R4400MC:
-- probe_scache_kseg1 = (probe_func_t) (KSEG1ADDR(&probe_scache));
-- sc_present = probe_scache_kseg1(config);
-- if (sc_present)
-- c->options |= MIPS_CPU_CACHE_CDEX_S;
-+ if (!bcm4710) {
-+ probe_scache_kseg1 = (probe_func_t) (KSEG1ADDR(&probe_scache));
-+ sc_present = probe_scache_kseg1(config);
-+ if (sc_present)
-+ c->options |= MIPS_CPU_CACHE_CDEX_S;
-+ }
- break;
-
- case CPU_R10000:
-@@ -1041,6 +1070,19 @@
- static inline void coherency_setup(void)
- {
- change_c0_config(CONF_CM_CMASK, CONF_CM_DEFAULT);
-+
-+#if defined(CONFIG_BCM4310) || defined(CONFIG_BCM4704) || defined(CONFIG_BCM5365)
-+ if (BCM330X(current_cpu_data.processor_id)) {
-+ uint32 cm;
-+
-+ cm = read_c0_diag();
-+ /* Enable icache */
-+ cm |= (1 << 31);
-+ /* Enable dcache */
-+ cm |= (1 << 30);
-+ write_c0_diag(cm);
-+ }
-+#endif
-
- /*
- * c0_status.cu=0 specifies that updates by the sc instruction use
-@@ -1073,6 +1115,12 @@
- memcpy((void *)(KSEG0 + 0x100), &except_vec2_generic, 0x80);
- memcpy((void *)(KSEG1 + 0x100), &except_vec2_generic, 0x80);
-
-+ if (current_cpu_data.cputype == CPU_BCM4710 && (current_cpu_data.processor_id & PRID_REV_MASK) == 0) {
-+ printk("Enabling BCM4710A0 cache workarounds.\n");
-+ bcm4710 = 1;
-+ } else
-+ bcm4710 = 0;
-+
- probe_pcache();
- setup_scache();
-
-diff -urN linux.old/arch/mips/mm/tlbex-mips32.S linux.dev/arch/mips/mm/tlbex-mips32.S
---- linux.old/arch/mips/mm/tlbex-mips32.S 2005-07-05 16:46:49.000000000 +0200
-+++ linux.dev/arch/mips/mm/tlbex-mips32.S 2005-07-06 11:23:56.000000000 +0200
-@@ -90,6 +90,9 @@
- .set noat
- LEAF(except_vec0_r4000)
- .set mips3
-+#ifdef CONFIG_BCM4704
-+ nop
-+#endif
- #ifdef CONFIG_SMP
- mfc0 k1, CP0_CONTEXT
- la k0, pgd_current
-diff -urN linux.old/include/asm-mips/r4kcache.h linux.dev/include/asm-mips/r4kcache.h
---- linux.old/include/asm-mips/r4kcache.h 2005-07-05 16:46:49.000000000 +0200
-+++ linux.dev/include/asm-mips/r4kcache.h 2005-07-06 12:52:57.000000000 +0200
-@@ -15,6 +15,18 @@
- #include <asm/asm.h>
- #include <asm/cacheops.h>
-
-+#ifdef CONFIG_BCM4710
-+#define BCM4710_DUMMY_RREG() (((sbconfig_t *)(KSEG1ADDR(SB_ENUM_BASE + SBCONFIGOFF)))->sbimstate)
-+
-+#define BCM4710_FILL_TLB(addr) (*(volatile unsigned long *)(addr))
-+#define BCM4710_PROTECTED_FILL_TLB(addr) ({ unsigned long x; get_dbe(x, (volatile unsigned long *)(addr)); })
-+#else
-+#define BCM4710_DUMMY_RREG()
-+
-+#define BCM4710_FILL_TLB(addr)
-+#define BCM4710_PROTECTED_FILL_TLB(addr)
-+#endif
-+
- #define cache_op(op,addr) \
- __asm__ __volatile__( \
- " .set noreorder \n" \
-@@ -27,12 +39,25 @@
-
- static inline void flush_icache_line_indexed(unsigned long addr)
- {
-- cache_op(Index_Invalidate_I, addr);
-+ unsigned int way;
-+ unsigned long ws_inc = 1UL << current_cpu_data.dcache.waybit;
-+
-+ for (way = 0; way < current_cpu_data.dcache.ways; way++) {
-+ cache_op(Index_Invalidate_I, addr);
-+ addr += ws_inc;
-+ }
- }
-
- static inline void flush_dcache_line_indexed(unsigned long addr)
- {
-- cache_op(Index_Writeback_Inv_D, addr);
-+ unsigned int way;
-+ unsigned long ws_inc = 1UL << current_cpu_data.dcache.waybit;
-+
-+ for (way = 0; way < current_cpu_data.dcache.ways; way++) {
-+ BCM4710_DUMMY_RREG();
-+ cache_op(Index_Writeback_Inv_D, addr);
-+ addr += ws_inc;
-+ }
- }
-
- static inline void flush_scache_line_indexed(unsigned long addr)
-@@ -47,6 +72,7 @@
-
- static inline void flush_dcache_line(unsigned long addr)
- {
-+ BCM4710_DUMMY_RREG();
- cache_op(Hit_Writeback_Inv_D, addr);
- }
-
-@@ -91,6 +117,7 @@
- */
- static inline void protected_writeback_dcache_line(unsigned long addr)
- {
-+ BCM4710_DUMMY_RREG();
- __asm__ __volatile__(
- ".set noreorder\n\t"
- ".set mips3\n"
-@@ -138,6 +165,62 @@
- : "r" (base), \
- "i" (op));
-
-+#define cache_unroll(base,op) \
-+ __asm__ __volatile__(" \
-+ .set noreorder; \
-+ .set mips3; \
-+ cache %1, (%0); \
-+ .set mips0; \
-+ .set reorder" \
-+ : \
-+ : "r" (base), \
-+ "i" (op));
-+
-+
-+static inline void blast_dcache(void)
-+{
-+ unsigned long start = KSEG0;
-+ unsigned long dcache_size = current_cpu_data.dcache.waysize * current_cpu_data.dcache.ways;
-+ unsigned long end = (start + dcache_size);
-+
-+ while(start < end) {
-+ BCM4710_DUMMY_RREG();
-+ cache_unroll(start,Index_Writeback_Inv_D);
-+ start += current_cpu_data.dcache.linesz;
-+ }
-+}
-+
-+static inline void blast_dcache_page(unsigned long page)
-+{
-+ unsigned long start = page;
-+ unsigned long end = start + PAGE_SIZE;
-+
-+ BCM4710_FILL_TLB(start);
-+ do {
-+ BCM4710_DUMMY_RREG();
-+ cache_unroll(start,Hit_Writeback_Inv_D);
-+ start += current_cpu_data.dcache.linesz;
-+ } while (start < end);
-+}
-+
-+static inline void blast_dcache_page_indexed(unsigned long page)
-+{
-+ unsigned long start = page;
-+ unsigned long end = start + PAGE_SIZE;
-+ unsigned long ws_inc = 1UL << current_cpu_data.dcache.waybit;
-+ unsigned long ws_end = current_cpu_data.dcache.ways <<
-+ current_cpu_data.dcache.waybit;
-+ unsigned long ws, addr;
-+
-+ for (ws = 0; ws < ws_end; ws += ws_inc) {
-+ start = page + ws;
-+ for (addr = start; addr < end; addr += current_cpu_data.dcache.linesz) {
-+ BCM4710_DUMMY_RREG();
-+ cache_unroll(addr,Index_Writeback_Inv_D);
-+ }
-+ }
-+}
-+
- static inline void blast_dcache16(void)
- {
- unsigned long start = KSEG0;
-@@ -148,8 +231,9 @@
- unsigned long ws, addr;
-
- for (ws = 0; ws < ws_end; ws += ws_inc)
-- for (addr = start; addr < end; addr += 0x200)
-+ for (addr = start; addr < end; addr += 0x200) {
- cache16_unroll32(addr|ws,Index_Writeback_Inv_D);
-+ }
- }
-
- static inline void blast_dcache16_page(unsigned long page)
-@@ -173,8 +257,9 @@
- unsigned long ws, addr;
-
- for (ws = 0; ws < ws_end; ws += ws_inc)
-- for (addr = start; addr < end; addr += 0x200)
-+ for (addr = start; addr < end; addr += 0x200) {
- cache16_unroll32(addr|ws,Index_Writeback_Inv_D);
-+ }
- }
-
- static inline void blast_icache16(void)
-@@ -196,6 +281,7 @@
- unsigned long start = page;
- unsigned long end = start + PAGE_SIZE;
-
-+ BCM4710_FILL_TLB(start);
- do {
- cache16_unroll32(start,Hit_Invalidate_I);
- start += 0x200;
-@@ -281,6 +367,7 @@
- : "r" (base), \
- "i" (op));
-
-+
- static inline void blast_dcache32(void)
- {
- unsigned long start = KSEG0;
-@@ -291,8 +378,9 @@
- unsigned long ws, addr;
-
- for (ws = 0; ws < ws_end; ws += ws_inc)
-- for (addr = start; addr < end; addr += 0x400)
-+ for (addr = start; addr < end; addr += 0x400) {
- cache32_unroll32(addr|ws,Index_Writeback_Inv_D);
-+ }
- }
-
- static inline void blast_dcache32_page(unsigned long page)
-@@ -316,8 +404,9 @@
- unsigned long ws, addr;
-
- for (ws = 0; ws < ws_end; ws += ws_inc)
-- for (addr = start; addr < end; addr += 0x400)
-+ for (addr = start; addr < end; addr += 0x400) {
- cache32_unroll32(addr|ws,Index_Writeback_Inv_D);
-+ }
- }
-
- static inline void blast_icache32(void)
-@@ -339,6 +428,7 @@
- unsigned long start = page;
- unsigned long end = start + PAGE_SIZE;
-
-+ BCM4710_FILL_TLB(start);
- do {
- cache32_unroll32(start,Hit_Invalidate_I);
- start += 0x400;
-@@ -443,6 +533,7 @@
- unsigned long start = page;
- unsigned long end = start + PAGE_SIZE;
-
-+ BCM4710_FILL_TLB(start);
- do {
- cache64_unroll32(start,Hit_Invalidate_I);
- start += 0x800;
-diff -urN linux.old/include/asm-mips/stackframe.h linux.dev/include/asm-mips/stackframe.h
---- linux.old/include/asm-mips/stackframe.h 2005-07-05 16:46:49.000000000 +0200
-+++ linux.dev/include/asm-mips/stackframe.h 2005-07-06 11:23:56.000000000 +0200
-@@ -209,6 +209,20 @@
-
- #endif
-
-+#if defined(CONFIG_BCM4710) || defined(CONFIG_BCM4704)
-+
-+#undef RESTORE_SP_AND_RET
-+#define RESTORE_SP_AND_RET \
-+ lw sp, PT_R29(sp); \
-+ .set mips3; \
-+ nop; \
-+ nop; \
-+ eret; \
-+ .set mips0
-+
-+#endif
-+
-+
- #define RESTORE_SP \
- lw sp, PT_R29(sp); \
-
-diff -urN linux.old/mm/memory.c linux.dev/mm/memory.c
---- linux.old/mm/memory.c 2005-04-04 03:42:20.000000000 +0200
-+++ linux.dev/mm/memory.c 2005-07-06 11:23:56.000000000 +0200
-@@ -925,6 +925,7 @@
- flush_page_to_ram(new_page);
- flush_cache_page(vma, address);
- establish_pte(vma, address, page_table, pte_mkwrite(pte_mkdirty(mk_pte(new_page, vma->vm_page_prot))));
-+ flush_icache_page(vma, new_page);
- }
-
- /*
diff --git a/openwrt/target/linux/brcm-2.4/patches/004-flash.patch b/openwrt/target/linux/brcm-2.4/patches/004-flash.patch
deleted file mode 100644
index 3511091ed2..0000000000
--- a/openwrt/target/linux/brcm-2.4/patches/004-flash.patch
+++ /dev/null
@@ -1,784 +0,0 @@
-diff -Nur linux-2.4.32/drivers/mtd/devices/Config.in linux-2.4.32-flash/drivers/mtd/devices/Config.in
---- linux-2.4.32/drivers/mtd/devices/Config.in 2003-06-13 16:51:34.000000000 +0200
-+++ linux-2.4.32-flash/drivers/mtd/devices/Config.in 2006-03-27 17:10:51.000000000 +0200
-@@ -5,6 +5,7 @@
- mainmenu_option next_comment
-
- comment 'Self-contained MTD device drivers'
-+bool ' Broadcom Chipcommon Serial Flash support' CONFIG_MTD_SFLASH
- dep_tristate ' Ramix PMC551 PCI Mezzanine RAM card support' CONFIG_MTD_PMC551 $CONFIG_MTD $CONFIG_PCI
- if [ "$CONFIG_MTD_PMC551" = "y" -o "$CONFIG_MTD_PMC551" = "m" ]; then
- bool ' PMC551 256M DRAM Bugfix' CONFIG_MTD_PMC551_BUGFIX
-diff -Nur linux-2.4.32/drivers/mtd/devices/Makefile linux-2.4.32-flash/drivers/mtd/devices/Makefile
---- linux-2.4.32/drivers/mtd/devices/Makefile 2002-11-29 00:53:13.000000000 +0100
-+++ linux-2.4.32-flash/drivers/mtd/devices/Makefile 2006-03-27 17:10:51.000000000 +0200
-@@ -3,6 +3,8 @@
- #
- # $Id: Makefile,v 1.4 2001/06/26 21:10:05 spse Exp $
-
-+EXTRA_CFLAGS := -I$(TOPDIR)/arch/mips/bcm947xx/include
-+
- O_TARGET := devlink.o
-
- # *** BIG UGLY NOTE ***
-@@ -12,6 +14,7 @@
- # here where previously there was none. We now have to ensure that
- # doc200[01].o are linked before docprobe.o
-
-+obj-$(CONFIG_MTD_SFLASH) += sflash.o
- obj-$(CONFIG_MTD_DOC1000) += doc1000.o
- obj-$(CONFIG_MTD_DOC2000) += doc2000.o
- obj-$(CONFIG_MTD_DOC2001) += doc2001.o
-diff -Nur linux-2.4.32/drivers/mtd/devices/sflash.c linux-2.4.32-flash/drivers/mtd/devices/sflash.c
---- linux-2.4.32/drivers/mtd/devices/sflash.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-flash/drivers/mtd/devices/sflash.c 2006-03-27 17:10:51.000000000 +0200
-@@ -0,0 +1,298 @@
-+/*
-+ * Broadcom SiliconBackplane chipcommon serial flash interface
-+ *
-+ * Copyright 2001-2003, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sflash.c,v 1.1.1.3 2003/11/10 17:43:38 hyin Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/slab.h>
-+#include <linux/ioport.h>
-+#include <linux/mtd/compatmac.h>
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/partitions.h>
-+#include <linux/errno.h>
-+#include <linux/pci.h>
-+#include <linux/delay.h>
-+#include <asm/io.h>
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/partitions.h>
-+#include <linux/minix_fs.h>
-+#include <linux/ext2_fs.h>
-+#include <linux/romfs_fs.h>
-+#include <linux/cramfs_fs.h>
-+#include <linux/jffs2.h>
-+#endif
-+
-+#include <typedefs.h>
-+#include <bcmdevs.h>
-+#include <bcmutils.h>
-+#include <osl.h>
-+#include <bcmutils.h>
-+#include <bcmnvram.h>
-+#include <sbconfig.h>
-+#include <sbchipc.h>
-+#include <sflash.h>
-+#include <trxhdr.h>
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+extern struct mtd_partition * init_mtd_partitions(struct mtd_info *mtd, size_t size);
-+#endif
-+
-+struct sflash_mtd {
-+ chipcregs_t *cc;
-+ struct semaphore lock;
-+ struct mtd_info mtd;
-+ struct mtd_erase_region_info regions[1];
-+};
-+
-+/* Private global state */
-+static struct sflash_mtd sflash;
-+
-+static int
-+sflash_mtd_poll(struct sflash_mtd *sflash, unsigned int offset, int timeout)
-+{
-+ int now = jiffies;
-+ int ret = 0;
-+
-+ for (;;) {
-+ if (!sflash_poll(sflash->cc, offset)) {
-+ ret = 0;
-+ break;
-+ }
-+ if (time_after(jiffies, now + timeout)) {
-+ printk(KERN_ERR "sflash: timeout\n");
-+ ret = -ETIMEDOUT;
-+ break;
-+ }
-+ if (current->need_resched) {
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ schedule_timeout(timeout / 10);
-+ } else
-+ udelay(1);
-+ }
-+
-+ return ret;
-+}
-+
-+static int
-+sflash_mtd_read(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf)
-+{
-+ struct sflash_mtd *sflash = (struct sflash_mtd *) mtd->priv;
-+ int bytes, ret = 0;
-+
-+ /* Check address range */
-+ if (!len)
-+ return 0;
-+ if ((from + len) > mtd->size)
-+ return -EINVAL;
-+
-+ down(&sflash->lock);
-+
-+ *retlen = 0;
-+ while (len) {
-+ if ((bytes = sflash_read(sflash->cc, (uint) from, len, buf)) < 0) {
-+ ret = bytes;
-+ break;
-+ }
-+ from += (loff_t) bytes;
-+ len -= bytes;
-+ buf += bytes;
-+ *retlen += bytes;
-+ }
-+
-+ up(&sflash->lock);
-+
-+ return ret;
-+}
-+
-+static int
-+sflash_mtd_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf)
-+{
-+ struct sflash_mtd *sflash = (struct sflash_mtd *) mtd->priv;
-+ int bytes, ret = 0;
-+
-+ /* Check address range */
-+ if (!len)
-+ return 0;
-+ if ((to + len) > mtd->size)
-+ return -EINVAL;
-+
-+ down(&sflash->lock);
-+
-+ *retlen = 0;
-+ while (len) {
-+ if ((bytes = sflash_write(sflash->cc, (uint) to, len, buf)) < 0) {
-+ ret = bytes;
-+ break;
-+ }
-+ if ((ret = sflash_mtd_poll(sflash, (unsigned int) to, HZ / 10)))
-+ break;
-+ to += (loff_t) bytes;
-+ len -= bytes;
-+ buf += bytes;
-+ *retlen += bytes;
-+ }
-+
-+ up(&sflash->lock);
-+
-+ return ret;
-+}
-+
-+static int
-+sflash_mtd_erase(struct mtd_info *mtd, struct erase_info *erase)
-+{
-+ struct sflash_mtd *sflash = (struct sflash_mtd *) mtd->priv;
-+ int i, j, ret = 0;
-+ unsigned int addr, len;
-+
-+ /* Check address range */
-+ if (!erase->len)
-+ return 0;
-+ if ((erase->addr + erase->len) > mtd->size)
-+ return -EINVAL;
-+
-+ addr = erase->addr;
-+ len = erase->len;
-+
-+ down(&sflash->lock);
-+
-+ /* Ensure that requested region is aligned */
-+ for (i = 0; i < mtd->numeraseregions; i++) {
-+ for (j = 0; j < mtd->eraseregions[i].numblocks; j++) {
-+ if (addr == mtd->eraseregions[i].offset + mtd->eraseregions[i].erasesize * j &&
-+ len >= mtd->eraseregions[i].erasesize) {
-+ if ((ret = sflash_erase(sflash->cc, addr)) < 0)
-+ break;
-+ if ((ret = sflash_mtd_poll(sflash, addr, 10 * HZ)))
-+ break;
-+ addr += mtd->eraseregions[i].erasesize;
-+ len -= mtd->eraseregions[i].erasesize;
-+ }
-+ }
-+ if (ret)
-+ break;
-+ }
-+
-+ up(&sflash->lock);
-+
-+ /* Set erase status */
-+ if (ret)
-+ erase->state = MTD_ERASE_FAILED;
-+ else
-+ erase->state = MTD_ERASE_DONE;
-+
-+ /* Call erase callback */
-+ if (erase->callback)
-+ erase->callback(erase);
-+
-+ return ret;
-+}
-+
-+#if LINUX_VERSION_CODE < 0x20212 && defined(MODULE)
-+#define sflash_mtd_init init_module
-+#define sflash_mtd_exit cleanup_module
-+#endif
-+
-+mod_init_t
-+sflash_mtd_init(void)
-+{
-+ struct pci_dev *pdev;
-+ int ret = 0;
-+ struct sflash *info;
-+ uint bank, i;
-+#ifdef CONFIG_MTD_PARTITIONS
-+ struct mtd_partition *parts;
-+#endif
-+
-+ if (!(pdev = pci_find_device(VENDOR_BROADCOM, SB_CC, NULL))) {
-+ printk(KERN_ERR "sflash: chipcommon not found\n");
-+ return -ENODEV;
-+ }
-+
-+ memset(&sflash, 0, sizeof(struct sflash_mtd));
-+ init_MUTEX(&sflash.lock);
-+
-+ /* Map registers and flash base */
-+ if (!(sflash.cc = ioremap_nocache(pci_resource_start(pdev, 0),
-+ pci_resource_len(pdev, 0)))) {
-+ printk(KERN_ERR "sflash: error mapping registers\n");
-+ ret = -EIO;
-+ goto fail;
-+ }
-+
-+ /* Initialize serial flash access */
-+ info = sflash_init(sflash.cc);
-+
-+ if (!info) {
-+ printk(KERN_ERR "sflash: found no supported devices\n");
-+ ret = -ENODEV;
-+ goto fail;
-+ }
-+
-+ /* Setup banks */
-+ sflash.regions[0].offset = 0;
-+ sflash.regions[0].erasesize = info->blocksize;
-+ sflash.regions[0].numblocks = info->numblocks;
-+ if (sflash.regions[0].erasesize > sflash.mtd.erasesize)
-+ sflash.mtd.erasesize = sflash.regions[0].erasesize;
-+ if (sflash.regions[0].erasesize * sflash.regions[0].numblocks) {
-+ sflash.mtd.size += sflash.regions[0].erasesize * sflash.regions[0].numblocks;
-+ }
-+ sflash.mtd.numeraseregions = 1;
-+ ASSERT(sflash.mtd.size == info->size);
-+
-+ /* Register with MTD */
-+ sflash.mtd.name = "sflash";
-+ sflash.mtd.type = MTD_NORFLASH;
-+ sflash.mtd.flags = MTD_CAP_NORFLASH;
-+ sflash.mtd.eraseregions = sflash.regions;
-+ sflash.mtd.module = THIS_MODULE;
-+ sflash.mtd.erase = sflash_mtd_erase;
-+ sflash.mtd.read = sflash_mtd_read;
-+ sflash.mtd.write = sflash_mtd_write;
-+ sflash.mtd.priv = &sflash;
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+ parts = init_mtd_partitions(&sflash.mtd, sflash.mtd.size);
-+ for (i = 0; parts[i].name; i++);
-+ ret = add_mtd_partitions(&sflash.mtd, parts, i);
-+#else
-+ ret = add_mtd_device(&sflash.mtd);
-+#endif
-+ if (ret) {
-+ printk(KERN_ERR "sflash: add_mtd failed\n");
-+ goto fail;
-+ }
-+
-+ return 0;
-+
-+ fail:
-+ if (sflash.cc)
-+ iounmap((void *) sflash.cc);
-+ return ret;
-+}
-+
-+mod_exit_t
-+sflash_mtd_exit(void)
-+{
-+#ifdef CONFIG_MTD_PARTITIONS
-+ del_mtd_partitions(&sflash.mtd);
-+#else
-+ del_mtd_device(&sflash.mtd);
-+#endif
-+ iounmap((void *) sflash.cc);
-+}
-+
-+module_init(sflash_mtd_init);
-+module_exit(sflash_mtd_exit);
-diff -Nur linux-2.4.32/drivers/mtd/maps/bcm947xx-flash.c linux-2.4.32-flash/drivers/mtd/maps/bcm947xx-flash.c
---- linux-2.4.32/drivers/mtd/maps/bcm947xx-flash.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-flash/drivers/mtd/maps/bcm947xx-flash.c 2006-03-27 17:07:27.000000000 +0200
-@@ -0,0 +1,416 @@
-+/*
-+ * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.org)
-+ * Copyright (C) 2005 Waldemar Brodkorb <wbx@openwrt.org>
-+ *
-+ * original functions for finding root filesystem from Mike Baker
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ * Copyright 2004, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * Flash mapping for BCM947XX boards
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <asm/io.h>
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/map.h>
-+#ifdef CONFIG_MTD_PARTITIONS
-+#include <linux/mtd/partitions.h>
-+#endif
-+#include <linux/config.h>
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <bcmnvram.h>
-+#include <bcmutils.h>
-+#include <sbconfig.h>
-+#include <sbchipc.h>
-+#include <sbutils.h>
-+#include <trxhdr.h>
-+
-+/* Global SB handle */
-+extern void *bcm947xx_sbh;
-+extern spinlock_t bcm947xx_sbh_lock;
-+
-+/* Convenience */
-+#define sbh bcm947xx_sbh
-+#define sbh_lock bcm947xx_sbh_lock
-+
-+#define WINDOW_ADDR 0x1fc00000
-+#define WINDOW_SIZE 0x400000
-+#define BUSWIDTH 2
-+
-+static struct mtd_info *bcm947xx_mtd;
-+
-+__u8 bcm947xx_map_read8(struct map_info *map, unsigned long ofs)
-+{
-+ if (map->map_priv_2 == 1)
-+ return __raw_readb(map->map_priv_1 + ofs);
-+
-+ u16 val = __raw_readw(map->map_priv_1 + (ofs & ~1));
-+ if (ofs & 1)
-+ return ((val >> 8) & 0xff);
-+ else
-+ return (val & 0xff);
-+}
-+
-+__u16 bcm947xx_map_read16(struct map_info *map, unsigned long ofs)
-+{
-+ return __raw_readw(map->map_priv_1 + ofs);
-+}
-+
-+__u32 bcm947xx_map_read32(struct map_info *map, unsigned long ofs)
-+{
-+ return __raw_readl(map->map_priv_1 + ofs);
-+}
-+
-+void bcm947xx_map_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
-+{
-+ if (len==1) {
-+ memcpy_fromio(to, map->map_priv_1 + from, len);
-+ } else {
-+ int i;
-+ u16 *dest = (u16 *) to;
-+ u16 *src = (u16 *) (map->map_priv_1 + from);
-+ for (i = 0; i < (len / 2); i++) {
-+ dest[i] = src[i];
-+ }
-+ if (len & 1)
-+ *((u8 *)dest+len-1) = src[i] & 0xff;
-+ }
-+}
-+
-+void bcm947xx_map_write8(struct map_info *map, __u8 d, unsigned long adr)
-+{
-+ __raw_writeb(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void bcm947xx_map_write16(struct map_info *map, __u16 d, unsigned long adr)
-+{
-+ __raw_writew(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void bcm947xx_map_write32(struct map_info *map, __u32 d, unsigned long adr)
-+{
-+ __raw_writel(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void bcm947xx_map_copy_to(struct map_info *map, unsigned long to, const void *from, ssize_t len)
-+{
-+ memcpy_toio(map->map_priv_1 + to, from, len);
-+}
-+
-+struct map_info bcm947xx_map = {
-+ name: "Physically mapped flash",
-+ size: WINDOW_SIZE,
-+ buswidth: BUSWIDTH,
-+ read8: bcm947xx_map_read8,
-+ read16: bcm947xx_map_read16,
-+ read32: bcm947xx_map_read32,
-+ copy_from: bcm947xx_map_copy_from,
-+ write8: bcm947xx_map_write8,
-+ write16: bcm947xx_map_write16,
-+ write32: bcm947xx_map_write32,
-+ copy_to: bcm947xx_map_copy_to
-+};
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+
-+static struct mtd_partition bcm947xx_parts[] = {
-+ { name: "cfe", offset: 0, size: 0, mask_flags: MTD_WRITEABLE, },
-+ { name: "linux", offset: 0, size: 0, },
-+ { name: "rootfs", offset: 0, size: 0, },
-+ { name: "nvram", offset: 0, size: 0, },
-+ { name: "OpenWrt", offset: 0, size: 0, },
-+ { name: NULL, },
-+};
-+
-+static int __init
-+find_cfe_size(struct mtd_info *mtd, size_t size)
-+{
-+ struct trx_header *trx;
-+ unsigned char buf[512];
-+ int off;
-+ size_t len;
-+ int blocksize;
-+
-+ trx = (struct trx_header *) buf;
-+
-+ blocksize = mtd->erasesize;
-+ if (blocksize < 0x10000)
-+ blocksize = 0x10000;
-+
-+ for (off = (128*1024); off < size; off += blocksize) {
-+ memset(buf, 0xe5, sizeof(buf));
-+
-+ /*
-+ * Read into buffer
-+ */
-+ if (MTD_READ(mtd, off, sizeof(buf), &len, buf) ||
-+ len != sizeof(buf))
-+ continue;
-+
-+ /* found a TRX header */
-+ if (le32_to_cpu(trx->magic) == TRX_MAGIC) {
-+ goto done;
-+ }
-+ }
-+
-+ printk(KERN_NOTICE
-+ "%s: Couldn't find bootloader size\n",
-+ mtd->name);
-+ return -1;
-+
-+ done:
-+ printk(KERN_NOTICE "bootloader size: %d\n", off);
-+ return off;
-+
-+}
-+
-+static int __init
-+find_root(struct mtd_info *mtd, size_t size, struct mtd_partition *part)
-+{
-+ struct trx_header *trx;
-+ unsigned char buf[512];
-+ int off;
-+ size_t len;
-+ int blocksize;
-+
-+ trx = (struct trx_header *) buf;
-+
-+ blocksize = mtd->erasesize;
-+ if (blocksize < 0x10000)
-+ blocksize = 0x10000;
-+
-+ for (off = (128*1024); off < size; off += blocksize) {
-+ memset(buf, 0xe5, sizeof(buf));
-+
-+ /*
-+ * Read into buffer
-+ */
-+ if (MTD_READ(mtd, off, sizeof(buf), &len, buf) ||
-+ len != sizeof(buf))
-+ continue;
-+
-+ /* found a TRX header */
-+ if (le32_to_cpu(trx->magic) == TRX_MAGIC) {
-+ part->offset = le32_to_cpu(trx->offsets[2]) ? :
-+ le32_to_cpu(trx->offsets[1]);
-+ part->size = le32_to_cpu(trx->len);
-+
-+ part->size -= part->offset;
-+ part->offset += off;
-+
-+ goto done;
-+ }
-+ }
-+
-+ printk(KERN_NOTICE
-+ "%s: Couldn't find root filesystem\n",
-+ mtd->name);
-+ return -1;
-+
-+ done:
-+ return part->size;
-+}
-+
-+struct mtd_partition * __init
-+init_mtd_partitions(struct mtd_info *mtd, size_t size)
-+{
-+
-+ int cfe_size;
-+
-+ cfe_size = find_cfe_size(mtd,size);
-+
-+ /* boot loader */
-+ bcm947xx_parts[0].offset = 0;
-+ bcm947xx_parts[0].size = cfe_size;
-+
-+ /* nvram */
-+ if (cfe_size != 384 * 1024) {
-+ bcm947xx_parts[3].offset = size - ROUNDUP(NVRAM_SPACE, mtd->erasesize);
-+ bcm947xx_parts[3].size = ROUNDUP(NVRAM_SPACE, mtd->erasesize);
-+ } else {
-+ /* nvram (old 128kb config partition on netgear wgt634u) */
-+ bcm947xx_parts[3].offset = bcm947xx_parts[0].size;
-+ bcm947xx_parts[3].size = ROUNDUP(NVRAM_SPACE, mtd->erasesize);
-+ }
-+
-+ /* linux (kernel and rootfs) */
-+ if (cfe_size != 384 * 1024) {
-+ bcm947xx_parts[1].offset = bcm947xx_parts[0].size;
-+ bcm947xx_parts[1].size = bcm947xx_parts[3].offset -
-+ bcm947xx_parts[1].offset;
-+ } else {
-+ /* do not count the elf loader, which is on one block */
-+ bcm947xx_parts[1].offset = bcm947xx_parts[0].size +
-+ bcm947xx_parts[3].size + mtd->erasesize;
-+ bcm947xx_parts[1].size = size -
-+ bcm947xx_parts[0].size -
-+ (2*bcm947xx_parts[3].size) -
-+ mtd->erasesize;
-+ }
-+
-+ /* find and size rootfs */
-+ if (find_root(mtd,size,&bcm947xx_parts[2])==0) {
-+ /* entirely jffs2 */
-+ bcm947xx_parts[4].name = NULL;
-+ bcm947xx_parts[2].size = size - bcm947xx_parts[2].offset -
-+ bcm947xx_parts[3].size;
-+ } else {
-+ /* legacy setup */
-+ /* calculate leftover flash, and assign it to the jffs2 partition */
-+ if (cfe_size != 384 * 1024) {
-+ bcm947xx_parts[4].offset = bcm947xx_parts[2].offset +
-+ bcm947xx_parts[2].size;
-+ if ((bcm947xx_parts[4].offset % mtd->erasesize) > 0) {
-+ bcm947xx_parts[4].offset += mtd->erasesize -
-+ (bcm947xx_parts[4].offset % mtd->erasesize);
-+ }
-+ bcm947xx_parts[4].size = bcm947xx_parts[3].offset -
-+ bcm947xx_parts[4].offset;
-+ } else {
-+ bcm947xx_parts[4].offset = bcm947xx_parts[2].offset +
-+ bcm947xx_parts[2].size;
-+ if ((bcm947xx_parts[4].offset % mtd->erasesize) > 0) {
-+ bcm947xx_parts[4].offset += mtd->erasesize -
-+ (bcm947xx_parts[4].offset % mtd->erasesize);
-+ }
-+ bcm947xx_parts[4].size = size - bcm947xx_parts[3].size -
-+ bcm947xx_parts[4].offset;
-+ }
-+ }
-+
-+ return bcm947xx_parts;
-+}
-+
-+#endif
-+
-+
-+mod_init_t init_bcm947xx_map(void)
-+{
-+ ulong flags;
-+ uint coreidx;
-+ chipcregs_t *cc;
-+ uint32 fltype;
-+ uint window_addr = 0, window_size = 0;
-+ size_t size;
-+ int ret = 0;
-+#ifdef CONFIG_MTD_PARTITIONS
-+ struct mtd_partition *parts;
-+ int i;
-+#endif
-+
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ coreidx = sb_coreidx(sbh);
-+
-+ /* Check strapping option if chipcommon exists */
-+ if ((cc = sb_setcore(sbh, SB_CC, 0))) {
-+ fltype = readl(&cc->capabilities) & CAP_FLASH_MASK;
-+ if (fltype == PFLASH) {
-+ bcm947xx_map.map_priv_2 = 1;
-+ window_addr = 0x1c000000;
-+ bcm947xx_map.size = window_size = 32 * 1024 * 1024;
-+ if ((readl(&cc->flash_config) & CC_CFG_DS) == 0)
-+ bcm947xx_map.buswidth = 1;
-+ }
-+ } else {
-+ fltype = PFLASH;
-+ bcm947xx_map.map_priv_2 = 0;
-+ window_addr = WINDOW_ADDR;
-+ window_size = WINDOW_SIZE;
-+ }
-+
-+ sb_setcoreidx(sbh, coreidx);
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+
-+ if (fltype != PFLASH) {
-+ printk(KERN_ERR "pflash: found no supported devices\n");
-+ ret = -ENODEV;
-+ goto fail;
-+ }
-+
-+ bcm947xx_map.map_priv_1 = (unsigned long) ioremap(window_addr, window_size);
-+
-+ if (!bcm947xx_map.map_priv_1) {
-+ printk(KERN_ERR "Failed to ioremap\n");
-+ return -EIO;
-+ }
-+
-+ if (!(bcm947xx_mtd = do_map_probe("cfi_probe", &bcm947xx_map))) {
-+ printk(KERN_ERR "pflash: cfi_probe failed\n");
-+ iounmap((void *)bcm947xx_map.map_priv_1);
-+ return -ENXIO;
-+ }
-+
-+ bcm947xx_mtd->module = THIS_MODULE;
-+
-+ size = bcm947xx_mtd->size;
-+
-+ printk(KERN_NOTICE "Flash device: 0x%x at 0x%x\n", size, window_addr);
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+ parts = init_mtd_partitions(bcm947xx_mtd, size);
-+ for (i = 0; parts[i].name; i++);
-+ ret = add_mtd_partitions(bcm947xx_mtd, parts, i);
-+ if (ret) {
-+ printk(KERN_ERR "Flash: add_mtd_partitions failed\n");
-+ goto fail;
-+ }
-+#endif
-+
-+ return 0;
-+
-+ fail:
-+ if (bcm947xx_mtd)
-+ map_destroy(bcm947xx_mtd);
-+ if (bcm947xx_map.map_priv_1)
-+ iounmap((void *) bcm947xx_map.map_priv_1);
-+ bcm947xx_map.map_priv_1 = 0;
-+ return ret;
-+}
-+
-+mod_exit_t cleanup_bcm947xx_map(void)
-+{
-+#ifdef CONFIG_MTD_PARTITIONS
-+ del_mtd_partitions(bcm947xx_mtd);
-+#endif
-+ map_destroy(bcm947xx_mtd);
-+ iounmap((void *) bcm947xx_map.map_priv_1);
-+ bcm947xx_map.map_priv_1 = 0;
-+}
-+
-+module_init(init_bcm947xx_map);
-+module_exit(cleanup_bcm947xx_map);
-diff -Nur linux-2.4.32/drivers/mtd/maps/Config.in linux-2.4.32-flash/drivers/mtd/maps/Config.in
---- linux-2.4.32/drivers/mtd/maps/Config.in 2003-06-13 16:51:34.000000000 +0200
-+++ linux-2.4.32-flash/drivers/mtd/maps/Config.in 2006-01-31 22:03:50.000000000 +0100
-@@ -48,6 +48,7 @@
- fi
-
- if [ "$CONFIG_MIPS" = "y" ]; then
-+ dep_tristate ' CFI Flash device mapped on Broadcom BCM947XX boards' CONFIG_MTD_BCM947XX $CONFIG_MTD_CFI
- dep_tristate ' Pb1000 MTD support' CONFIG_MTD_PB1000 $CONFIG_MIPS_PB1000
- dep_tristate ' Pb1500 MTD support' CONFIG_MTD_PB1500 $CONFIG_MIPS_PB1500
- dep_tristate ' Pb1100 MTD support' CONFIG_MTD_PB1100 $CONFIG_MIPS_PB1100
-diff -Nur linux-2.4.32/drivers/mtd/maps/Makefile linux-2.4.32-flash/drivers/mtd/maps/Makefile
---- linux-2.4.32/drivers/mtd/maps/Makefile 2003-06-13 16:51:34.000000000 +0200
-+++ linux-2.4.32-flash/drivers/mtd/maps/Makefile 2006-01-31 22:03:50.000000000 +0100
-@@ -3,6 +3,8 @@
- #
- # $Id: Makefile,v 1.37 2003/01/24 14:26:38 dwmw2 Exp $
-
-+EXTRA_CFLAGS := -I$(TOPDIR)/arch/mips/bcm947xx/include
-+
- BELOW25 := $(shell echo $(PATCHLEVEL) | sed s/[1234]/y/)
-
- ifeq ($(BELOW25),y)
-@@ -10,6 +12,7 @@
- endif
-
- # Chip mappings
-+obj-$(CONFIG_MTD_BCM947XX) += bcm947xx-flash.o
- obj-$(CONFIG_MTD_CDB89712) += cdb89712.o
- obj-$(CONFIG_MTD_ARM_INTEGRATOR)+= integrator-flash.o
- obj-$(CONFIG_MTD_CFI_FLAGADM) += cfi_flagadm.o
diff --git a/openwrt/target/linux/brcm-2.4/patches/005-bluetooth_sco_buffer_align.patch b/openwrt/target/linux/brcm-2.4/patches/005-bluetooth_sco_buffer_align.patch
deleted file mode 100644
index 77ade1c8b2..0000000000
--- a/openwrt/target/linux/brcm-2.4/patches/005-bluetooth_sco_buffer_align.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- linux-2.4.30/drivers/bluetooth/hci_usb.c 2004-08-08 01:26:04.000000000 +0200
-+++ linux-2.4.30/drivers/bluetooth/hci_usb.c 2005-07-25 20:12:11.000000000 +0200
-@@ -259,6 +259,9 @@
- void *buf;
-
- mtu = husb->isoc_in_ep->wMaxPacketSize;
-+#ifdef CONFIG_BCM4710
-+ mtu = (mtu + 1) & ~1; /* brcm: isoc buffers must be aligned on word boundary */
-+#endif
- size = mtu * HCI_MAX_ISOC_FRAMES;
-
- buf = kmalloc(size, GFP_ATOMIC);
diff --git a/openwrt/target/linux/brcm-2.4/patches/006-ide_workaround.patch b/openwrt/target/linux/brcm-2.4/patches/006-ide_workaround.patch
deleted file mode 100644
index 9f8d2ee29d..0000000000
--- a/openwrt/target/linux/brcm-2.4/patches/006-ide_workaround.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -urN linux.old/arch/mips/lib/ide-std.c linux.dev/arch/mips/lib/ide-std.c
---- linux.old/arch/mips/lib/ide-std.c 2003-08-25 13:44:40.000000000 +0200
-+++ linux.dev/arch/mips/lib/ide-std.c 2005-08-12 23:55:23.886963936 +0200
-@@ -31,12 +31,14 @@
- static ide_ioreg_t std_ide_default_io_base(int index)
- {
- switch (index) {
-+#if 0
- case 0: return 0x1f0;
- case 1: return 0x170;
- case 2: return 0x1e8;
- case 3: return 0x168;
- case 4: return 0x1e0;
- case 5: return 0x160;
-+#endif
- default:
- return 0;
- }
diff --git a/openwrt/target/linux/brcm-2.4/patches/007-sched_use_tsc.patch b/openwrt/target/linux/brcm-2.4/patches/007-sched_use_tsc.patch
deleted file mode 100644
index 5b64310738..0000000000
--- a/openwrt/target/linux/brcm-2.4/patches/007-sched_use_tsc.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-diff -urN linux.old/arch/mips/kernel/time.c linux.dev/arch/mips/kernel/time.c
---- linux.old/arch/mips/kernel/time.c 2005-11-14 11:06:38.661262000 +0100
-+++ linux.dev/arch/mips/kernel/time.c 2005-11-15 20:02:50.059676750 +0100
-@@ -151,6 +151,27 @@
- unsigned int (*mips_hpt_read)(void);
- void (*mips_hpt_init)(unsigned int);
-
-+extern __u32 get_htscl(void)
-+{
-+ return timerhi;
-+}
-+
-+static __u64 tscll_last = 0;
-+
-+extern __u64 get_tscll(void)
-+{
-+ __u64 h = (__u64) timerhi;
-+ __u32 c = read_c0_count();
-+
-+ h <<= 32;
-+ h += c;
-+
-+ while (h < tscll_last)
-+ h += (((__u64) 1) << 32);
-+
-+ tscll_last = h;
-+ return h;
-+}
-
- /*
- * timeofday services, for syscalls.
-@@ -761,3 +782,5 @@
- EXPORT_SYMBOL(to_tm);
- EXPORT_SYMBOL(rtc_set_time);
- EXPORT_SYMBOL(rtc_get_time);
-+EXPORT_SYMBOL(get_htscl);
-+EXPORT_SYMBOL(get_tscll);
-diff -urN linux.old/include/asm-mips/timex.h linux.dev/include/asm-mips/timex.h
---- linux.old/include/asm-mips/timex.h 2005-11-14 11:06:38.685263500 +0100
-+++ linux.dev/include/asm-mips/timex.h 2005-11-14 11:02:21.069163500 +0100
-@@ -31,6 +31,19 @@
- return read_c0_count();
- }
-
-+extern __u32 get_htscl(void);
-+extern __u64 get_tscll(void);
-+
-+#define rdtsc(low, high) \
-+ high = get_htscl(); \
-+ low = read_c0_count();
-+
-+#define rdtscl(low) \
-+ low = read_c0_count();
-+
-+#define rdtscll(val) \
-+ val = get_tscll();
-+
- #define vxtime_lock() do {} while (0)
- #define vxtime_unlock() do {} while (0)
-
-diff -urN linux.old/include/net/pkt_sched.h linux.dev/include/net/pkt_sched.h
---- linux.old/include/net/pkt_sched.h 2005-11-14 11:06:38.709265000 +0100
-+++ linux.dev/include/net/pkt_sched.h 2005-11-14 11:02:21.069163500 +0100
-@@ -5,7 +5,11 @@
- #define PSCHED_JIFFIES 2
- #define PSCHED_CPU 3
-
-+#ifdef __mips__
-+#define PSCHED_CLOCK_SOURCE PSCHED_CPU
-+#else
- #define PSCHED_CLOCK_SOURCE PSCHED_JIFFIES
-+#endif
-
- #include <linux/config.h>
- #include <linux/types.h>
-@@ -271,7 +275,7 @@
- #define PSCHED_US2JIFFIE(delay) (((delay)+psched_clock_per_hz-1)/psched_clock_per_hz)
- #define PSCHED_JIFFIE2US(delay) ((delay)*psched_clock_per_hz)
-
--#ifdef CONFIG_X86_TSC
-+#if defined(CONFIG_X86_TSC) || defined(__mips__)
-
- #define PSCHED_GET_TIME(stamp) \
- ({ u64 __cur; \
diff --git a/openwrt/target/linux/brcm-2.4/patches/008-b44_bcm47xx_support.patch b/openwrt/target/linux/brcm-2.4/patches/008-b44_bcm47xx_support.patch
deleted file mode 100644
index 35c80acd25..0000000000
--- a/openwrt/target/linux/brcm-2.4/patches/008-b44_bcm47xx_support.patch
+++ /dev/null
@@ -1,585 +0,0 @@
-diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
---- linux.old/drivers/net/b44.c 2006-02-12 13:49:59.000000000 +0100
-+++ linux.dev/drivers/net/b44.c 2006-03-06 22:37:14.000000000 +0100
-@@ -1,7 +1,9 @@
- /* b44.c: Broadcom 4400 device driver.
- *
- * Copyright (C) 2002 David S. Miller (davem@redhat.com)
-- * Fixed by Pekka Pietikainen (pp@ee.oulu.fi)
-+ * Copyright (C) 2004 Pekka Pietikainen (pp@ee.oulu.fi)
-+ * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.org)
-+ * Copyright (C) 2006 Felix Fietkau (nbd@openwrt.org)
- *
- * Distribute under GPL.
- */
-@@ -25,6 +27,41 @@
-
- #include "b44.h"
-
-+#include <typedefs.h>
-+#include <bcmdevs.h>
-+#include <bcmutils.h>
-+#include <osl.h>
-+#include <bcmutils.h>
-+#include <bcmnvram.h>
-+#include <sbconfig.h>
-+#include <sbchipc.h>
-+#include <sflash.h>
-+
-+#ifdef CONFIG_BCM947XX
-+#define atoi(str) simple_strtoul(((str != NULL) ? str : ""), NULL, 0)
-+
-+static inline void e_aton(char *str, char *dest)
-+{
-+ int i = 0;
-+ u16 *d = (u16 *) dest;
-+
-+ if (str == NULL) {
-+ memset(dest, 0, 6);
-+ return;
-+ }
-+
-+ for (;;) {
-+ dest[i++] = (char) simple_strtoul(str, NULL, 16);
-+ str += 2;
-+ if (!*str++ || i == 6)
-+ break;
-+ }
-+}
-+
-+static int instance = 0;
-+#endif
-+
-+
- #define DRV_MODULE_NAME "b44"
- #define PFX DRV_MODULE_NAME ": "
- #define DRV_MODULE_VERSION "0.93"
-@@ -75,7 +112,7 @@
- DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
-
- MODULE_AUTHOR("David S. Miller (davem@redhat.com)");
--MODULE_DESCRIPTION("Broadcom 4400 10/100 PCI ethernet driver");
-+MODULE_DESCRIPTION("Broadcom 4400/47xx 10/100 PCI ethernet driver");
- MODULE_LICENSE("GPL");
- MODULE_PARM(b44_debug, "i");
- MODULE_PARM_DESC(b44_debug, "B44 bitmapped debugging message enable value");
-@@ -89,6 +126,8 @@
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
- { PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BCM4401B1,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
-+ { PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BCM4713,
-+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
- { } /* terminate list with empty entry */
- };
-
-@@ -113,11 +152,13 @@
- udelay(10);
- }
- if (i == timeout) {
-+#ifdef DEBUG
- printk(KERN_ERR PFX "%s: BUG! Timeout waiting for bit %08x of register "
- "%lx to %s.\n",
- bp->dev->name,
- bit, reg,
- (clear ? "clear" : "set"));
-+#endif
- return -ENODEV;
- }
- return 0;
-@@ -236,6 +277,8 @@
- udelay(1);
- }
-
-+static int b44_4713_instance;
-+
- static int ssb_core_unit(struct b44 *bp)
- {
- #if 0
-@@ -258,6 +301,9 @@
- break;
- };
- #endif
-+ if (bp->pdev->device == PCI_DEVICE_ID_BCM4713)
-+ return b44_4713_instance++;
-+ else
- return 0;
- }
-
-@@ -267,6 +313,28 @@
- == SBTMSLOW_CLOCK);
- }
-
-+static inline void __b44_cam_read(struct b44 *bp, unsigned char *data, int index)
-+{
-+ u32 val;
-+
-+ bw32(B44_CAM_CTRL, (CAM_CTRL_READ |
-+ (index << CAM_CTRL_INDEX_SHIFT)));
-+
-+ b44_wait_bit(bp, B44_CAM_CTRL, CAM_CTRL_BUSY, 100, 1);
-+
-+ val = br32(B44_CAM_DATA_LO);
-+
-+ data[2] = (val >> 24) & 0xFF;
-+ data[3] = (val >> 16) & 0xFF;
-+ data[4] = (val >> 8) & 0xFF;
-+ data[5] = (val >> 0) & 0xFF;
-+
-+ val = br32(B44_CAM_DATA_HI);
-+
-+ data[0] = (val >> 8) & 0xFF;
-+ data[1] = (val >> 0) & 0xFF;
-+}
-+
- static void __b44_cam_write(struct b44 *bp, unsigned char *data, int index)
- {
- u32 val;
-@@ -287,7 +355,7 @@
-
- static inline void __b44_disable_ints(struct b44 *bp)
- {
-- bw32(B44_IMASK, 0);
-+ bw32(B44_IMASK, ISTAT_TO); /* leave the timeout interrupt active */
- }
-
- static void b44_disable_ints(struct b44 *bp)
-@@ -303,14 +371,14 @@
- bw32(B44_IMASK, bp->imask);
- }
-
--static int b44_readphy(struct b44 *bp, int reg, u32 *val)
-+static int __b44_readphy(struct b44 *bp, int phy_addr, int reg, u32 *val)
- {
- int err;
-
- bw32(B44_EMAC_ISTAT, EMAC_INT_MII);
- bw32(B44_MDIO_DATA, (MDIO_DATA_SB_START |
- (MDIO_OP_READ << MDIO_DATA_OP_SHIFT) |
-- (bp->phy_addr << MDIO_DATA_PMD_SHIFT) |
-+ (phy_addr << MDIO_DATA_PMD_SHIFT) |
- (reg << MDIO_DATA_RA_SHIFT) |
- (MDIO_TA_VALID << MDIO_DATA_TA_SHIFT)));
- err = b44_wait_bit(bp, B44_EMAC_ISTAT, EMAC_INT_MII, 100, 0);
-@@ -319,23 +387,42 @@
- return err;
- }
-
--static int b44_writephy(struct b44 *bp, int reg, u32 val)
-+static int b44_readphy(struct b44 *bp, int reg, u32 *val)
-+{
-+ if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
-+ return 0;
-+
-+ return __b44_readphy(bp, bp->phy_addr, reg, val);
-+}
-+
-+static int __b44_writephy(struct b44 *bp, int phy_addr, int reg, u32 val)
- {
- bw32(B44_EMAC_ISTAT, EMAC_INT_MII);
- bw32(B44_MDIO_DATA, (MDIO_DATA_SB_START |
- (MDIO_OP_WRITE << MDIO_DATA_OP_SHIFT) |
-- (bp->phy_addr << MDIO_DATA_PMD_SHIFT) |
-+ (phy_addr << MDIO_DATA_PMD_SHIFT) |
- (reg << MDIO_DATA_RA_SHIFT) |
- (MDIO_TA_VALID << MDIO_DATA_TA_SHIFT) |
- (val & MDIO_DATA_DATA)));
- return b44_wait_bit(bp, B44_EMAC_ISTAT, EMAC_INT_MII, 100, 0);
- }
-
-+static int b44_writephy(struct b44 *bp, int reg, u32 val)
-+{
-+ if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
-+ return 0;
-+
-+ return __b44_writephy(bp, bp->phy_addr, reg, val);
-+}
-+
- static int b44_phy_reset(struct b44 *bp)
- {
- u32 val;
- int err;
-
-+ if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
-+ return 0;
-+
- err = b44_writephy(bp, MII_BMCR, BMCR_RESET);
- if (err)
- return err;
-@@ -406,6 +493,23 @@
- u32 val;
- int err;
-
-+
-+ /*
-+ * workaround for bad hardware design in Linksys WAP54G v1.0
-+ * see https://dev.openwrt.org/ticket/146
-+ * check and reset bit "isolate"
-+ */
-+ if ((bp->pdev->device == PCI_DEVICE_ID_BCM4713) &&
-+ (atoi(nvram_get("boardnum")) == 2) &&
-+ (__b44_readphy(bp, 0, MII_BMCR, &val) == 0) &&
-+ (val & BMCR_ISOLATE) &&
-+ (__b44_writephy(bp, 0, MII_BMCR, val & ~BMCR_ISOLATE) != 0)) {
-+ printk(KERN_WARNING PFX "PHY: cannot reset MII transceiver isolate bit.\n");
-+ }
-+
-+ if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
-+ return 0;
-+
- if ((err = b44_readphy(bp, B44_MII_ALEDCTRL, &val)) != 0)
- goto out;
- if ((err = b44_writephy(bp, B44_MII_ALEDCTRL,
-@@ -498,6 +602,19 @@
- {
- u32 bmsr, aux;
-
-+ if (bp->phy_addr == B44_PHY_ADDR_NO_PHY) {
-+ bp->flags |= B44_FLAG_100_BASE_T;
-+ bp->flags |= B44_FLAG_FULL_DUPLEX;
-+ if (!netif_carrier_ok(bp->dev)) {
-+ u32 val = br32(B44_TX_CTRL);
-+ val |= TX_CTRL_DUPLEX;
-+ bw32(B44_TX_CTRL, val);
-+ netif_carrier_on(bp->dev);
-+ b44_link_report(bp);
-+ }
-+ return;
-+ }
-+
- if (!b44_readphy(bp, MII_BMSR, &bmsr) &&
- !b44_readphy(bp, B44_MII_AUXCTRL, &aux) &&
- (bmsr != 0xffff)) {
-@@ -765,6 +882,25 @@
- return received;
- }
-
-+
-+static inline void __b44_reset(struct b44 *bp)
-+{
-+ spin_lock_irq(&bp->lock);
-+ b44_halt(bp);
-+ b44_init_rings(bp);
-+ b44_init_hw(bp);
-+ spin_unlock_irq(&bp->lock);
-+
-+ b44_enable_ints(bp);
-+ netif_wake_queue(bp->dev);
-+}
-+
-+static inline void __b44_set_timeout(struct b44 *bp, int timeout)
-+{
-+ /* Set timeout for Rx to two seconds after the last Tx */
-+ bw32(B44_GPTIMER, timeout ? 2 * 125000000 : 0);
-+}
-+
- static int b44_poll(struct net_device *netdev, int *budget)
- {
- struct b44 *bp = netdev->priv;
-@@ -772,13 +908,13 @@
-
- spin_lock_irq(&bp->lock);
-
-- if (bp->istat & (ISTAT_TX | ISTAT_TO)) {
-+ if (bp->istat & ISTAT_TX) {
- /* spin_lock(&bp->tx_lock); */
- b44_tx(bp);
- /* spin_unlock(&bp->tx_lock); */
- }
- spin_unlock_irq(&bp->lock);
--
-+
- done = 1;
- if (bp->istat & ISTAT_RX) {
- int orig_budget = *budget;
-@@ -796,24 +932,18 @@
- done = 0;
- }
-
-- if (bp->istat & ISTAT_ERRORS) {
-- spin_lock_irq(&bp->lock);
-- b44_halt(bp);
-- b44_init_rings(bp);
-- b44_init_hw(bp);
-- netif_wake_queue(bp->dev);
-- spin_unlock_irq(&bp->lock);
-- done = 1;
-- }
--
- if (done) {
- netif_rx_complete(netdev);
- b44_enable_ints(bp);
- }
-
-+ if ((bp->core_unit == 1) && (bp->istat & (ISTAT_TX | ISTAT_RX)))
-+ __b44_set_timeout(bp, (bp->istat & ISTAT_TX) ? 1 : 0);
-+
- return (done ? 0 : 1);
- }
-
-+
- static irqreturn_t b44_interrupt(int irq, void *dev_id, struct pt_regs *regs)
- {
- struct net_device *dev = dev_id;
-@@ -832,6 +962,18 @@
- */
- istat &= imask;
- if (istat) {
-+ /* Workaround for the WL-500g WAN port hang */
-+ if (istat & (ISTAT_TO | ISTAT_ERRORS)) {
-+ /*
-+ * no rx before the watchdog timeout
-+ * reset the interface
-+ */
-+ __b44_reset(bp);
-+ }
-+
-+ if ((bp->core_unit == 1) && (bp->istat & (ISTAT_TX | ISTAT_RX)))
-+ __b44_set_timeout(bp, (bp->istat & ISTAT_TX) ? 1 : 0);
-+
- handled = 1;
- if (netif_rx_schedule_prep(dev)) {
- /* NOTE: These writes are posted by the readback of
-@@ -848,6 +990,7 @@
- bw32(B44_ISTAT, istat);
- br32(B44_ISTAT);
- }
-+
- spin_unlock_irqrestore(&bp->lock, flags);
- return IRQ_RETVAL(handled);
- }
-@@ -859,16 +1002,7 @@
- printk(KERN_ERR PFX "%s: transmit timed out, resetting\n",
- dev->name);
-
-- spin_lock_irq(&bp->lock);
--
-- b44_halt(bp);
-- b44_init_rings(bp);
-- b44_init_hw(bp);
--
-- spin_unlock_irq(&bp->lock);
--
-- b44_enable_ints(bp);
--
-+ __b44_reset(bp);
- netif_wake_queue(dev);
- }
-
-@@ -1092,6 +1226,8 @@
- /* bp->lock is held. */
- static void b44_chip_reset(struct b44 *bp)
- {
-+ unsigned int sb_clock;
-+
- if (ssb_is_core_up(bp)) {
- bw32(B44_RCV_LAZY, 0);
- bw32(B44_ENET_CTRL, ENET_CTRL_DISABLE);
-@@ -1105,9 +1241,10 @@
- bw32(B44_DMARX_CTRL, 0);
- bp->rx_prod = bp->rx_cons = 0;
- } else {
-- ssb_pci_setup(bp, (bp->core_unit == 0 ?
-- SBINTVEC_ENET0 :
-- SBINTVEC_ENET1));
-+ /*if (bp->pdev->device != PCI_DEVICE_ID_BCM4713)*/
-+ ssb_pci_setup(bp, (bp->core_unit == 0 ?
-+ SBINTVEC_ENET0 :
-+ SBINTVEC_ENET1));
- }
-
- ssb_core_reset(bp);
-@@ -1115,6 +1252,11 @@
- b44_clear_stats(bp);
-
- /* Make PHY accessible. */
-+ if (bp->pdev->device == PCI_DEVICE_ID_BCM4713)
-+ sb_clock = 100000000; /* 100 MHz */
-+ else
-+ sb_clock = 62500000; /* 62.5 MHz */
-+
- bw32(B44_MDIO_CTRL, (MDIO_CTRL_PREAMBLE |
- (0x0d & MDIO_CTRL_MAXF_MASK)));
- br32(B44_MDIO_CTRL);
-@@ -1215,6 +1357,8 @@
- struct b44 *bp = dev->priv;
- int err;
-
-+ netif_carrier_off(dev);
-+
- err = b44_alloc_consistent(bp);
- if (err)
- return err;
-@@ -1235,9 +1379,10 @@
- bp->timer.expires = jiffies + HZ;
- bp->timer.data = (unsigned long) bp;
- bp->timer.function = b44_timer;
-- add_timer(&bp->timer);
-+ b44_timer((unsigned long) bp);
-
- b44_enable_ints(bp);
-+ netif_start_queue(dev);
-
- return 0;
-
-@@ -1628,7 +1773,7 @@
- u32 mii_regval;
-
- spin_lock_irq(&bp->lock);
-- err = b44_readphy(bp, data->reg_num & 0x1f, &mii_regval);
-+ err = __b44_readphy(bp, data->phy_id & 0x1f, data->reg_num & 0x1f, &mii_regval);
- spin_unlock_irq(&bp->lock);
-
- data->val_out = mii_regval;
-@@ -1641,7 +1786,7 @@
- return -EPERM;
-
- spin_lock_irq(&bp->lock);
-- err = b44_writephy(bp, data->reg_num & 0x1f, data->val_in);
-+ err = __b44_writephy(bp, data->phy_id & 0x1f, data->reg_num & 0x1f, data->val_in);
- spin_unlock_irq(&bp->lock);
-
- return err;
-@@ -1668,21 +1813,52 @@
- static int __devinit b44_get_invariants(struct b44 *bp)
- {
- u8 eeprom[128];
-+ u8 buf[32];
- int err;
-+ unsigned long flags;
-
-- err = b44_read_eeprom(bp, &eeprom[0]);
-- if (err)
-- goto out;
--
-- bp->dev->dev_addr[0] = eeprom[79];
-- bp->dev->dev_addr[1] = eeprom[78];
-- bp->dev->dev_addr[2] = eeprom[81];
-- bp->dev->dev_addr[3] = eeprom[80];
-- bp->dev->dev_addr[4] = eeprom[83];
-- bp->dev->dev_addr[5] = eeprom[82];
--
-- bp->phy_addr = eeprom[90] & 0x1f;
-- bp->mdc_port = (eeprom[90] >> 14) & 0x1;
-+ if (bp->pdev->device == PCI_DEVICE_ID_BCM4713) {
-+#ifdef CONFIG_BCM947XX
-+ sprintf(buf, "et%dmacaddr", instance - 1);
-+ e_aton(nvram_get(buf), bp->dev->dev_addr);
-+
-+ sprintf(buf, "et%dphyaddr", instance - 1);
-+ bp->phy_addr = B44_PHY_ADDR_NO_PHY;
-+#else
-+ /*
-+ * BCM47xx boards don't have a EEPROM. The MAC is stored in
-+ * a NVRAM area somewhere in the flash memory. As we don't
-+ * know the location and/or the format of the NVRAM area
-+ * here, we simply rely on the bootloader to write the
-+ * MAC into the CAM.
-+ */
-+ spin_lock_irqsave(&bp->lock, flags);
-+ __b44_cam_read(bp, bp->dev->dev_addr, 0);
-+ spin_unlock_irqrestore(&bp->lock, flags);
-+
-+ /*
-+ * BCM47xx boards don't have a PHY. Usually there is a switch
-+ * chip with multiple PHYs connected to the PHY port.
-+ */
-+ bp->phy_addr = B44_PHY_ADDR_NO_PHY;
-+#endif
-+ bp->dma_offset = 0;
-+ } else {
-+ err = b44_read_eeprom(bp, &eeprom[0]);
-+ if (err)
-+ return err;
-+
-+ bp->dev->dev_addr[0] = eeprom[79];
-+ bp->dev->dev_addr[1] = eeprom[78];
-+ bp->dev->dev_addr[2] = eeprom[81];
-+ bp->dev->dev_addr[3] = eeprom[80];
-+ bp->dev->dev_addr[4] = eeprom[83];
-+ bp->dev->dev_addr[5] = eeprom[82];
-+
-+ bp->phy_addr = eeprom[90] & 0x1f;
-+ bp->dma_offset = SB_PCI_DMA;
-+ bp->mdc_port = (eeprom[90] >> 14) & 0x1;
-+ }
-
- /* With this, plus the rx_header prepended to the data by the
- * hardware, we'll land the ethernet header on a 2-byte boundary.
-@@ -1692,13 +1868,12 @@
- bp->imask = IMASK_DEF;
-
- bp->core_unit = ssb_core_unit(bp);
-- bp->dma_offset = ssb_get_addr(bp, SBID_PCI_DMA, 0);
-
- /* XXX - really required?
- bp->flags |= B44_FLAG_BUGGY_TXPTR;
- */
--out:
-- return err;
-+
-+ return 0;
- }
-
- static int __devinit b44_init_one(struct pci_dev *pdev,
-@@ -1710,6 +1885,10 @@
- struct b44 *bp;
- int err, i;
-
-+#ifdef CONFIG_BCM947XX
-+ instance++;
-+#endif
-+
- if (b44_version_printed++ == 0)
- printk(KERN_INFO "%s", version);
-
-@@ -1819,11 +1998,17 @@
-
- pci_save_state(bp->pdev, bp->pci_cfg_state);
-
-- printk(KERN_INFO "%s: Broadcom 4400 10/100BaseT Ethernet ", dev->name);
-+ printk(KERN_INFO "%s: Broadcom %s 10/100BaseT Ethernet ", dev->name,
-+ (pdev->device == PCI_DEVICE_ID_BCM4713) ? "47xx" : "4400");
- for (i = 0; i < 6; i++)
- printk("%2.2x%c", dev->dev_addr[i],
- i == 5 ? '\n' : ':');
-
-+ /* Initialize phy */
-+ spin_lock_irq(&bp->lock);
-+ b44_chip_reset(bp);
-+ spin_unlock_irq(&bp->lock);
-+
- return 0;
-
- err_out_iounmap:
-diff -urN linux.old/drivers/net/b44.h linux.dev/drivers/net/b44.h
---- linux.old/drivers/net/b44.h 2006-02-12 13:49:59.000000000 +0100
-+++ linux.dev/drivers/net/b44.h 2006-01-24 20:52:08.000000000 +0100
-@@ -229,8 +229,6 @@
- #define SBIPSFLAG_IMASK4 0x3f000000 /* Which sbflags --> mips interrupt 4 */
- #define SBIPSFLAG_ISHIFT4 24
- #define B44_SBTPSFLAG 0x0F18UL /* SB Target Port OCP Slave Flag */
--#define SBTPS_NUM0_MASK 0x0000003f
--#define SBTPS_F0EN0 0x00000040
- #define B44_SBADMATCH3 0x0F60UL /* SB Address Match 3 */
- #define B44_SBADMATCH2 0x0F68UL /* SB Address Match 2 */
- #define B44_SBADMATCH1 0x0F70UL /* SB Address Match 1 */
-@@ -461,6 +459,8 @@
- };
-
- #define B44_MCAST_TABLE_SIZE 32
-+#define B44_PHY_ADDR_NO_PHY 30
-+#define B44_MDC_RATIO 5000000
-
- /* SW copy of device statistics, kept up to date by periodic timer
- * which probes HW values. Must have same relative layout as HW
-diff -urN linux.old/include/linux/pci_ids.h linux.dev/include/linux/pci_ids.h
---- linux.old/include/linux/pci_ids.h 2006-02-12 13:49:59.000000000 +0100
-+++ linux.dev/include/linux/pci_ids.h 2006-01-24 20:52:08.000000000 +0100
-@@ -1735,6 +1735,7 @@
- #define PCI_DEVICE_ID_TIGON3_5901_2 0x170e
- #define PCI_DEVICE_ID_BCM4401 0x4401
- #define PCI_DEVICE_ID_BCM4401B0 0x4402
-+#define PCI_DEVICE_ID_BCM4713 0x4713
-
- #define PCI_VENDOR_ID_ENE 0x1524
- #define PCI_DEVICE_ID_ENE_1211 0x1211
diff --git a/openwrt/target/linux/brcm-2.4/patches/009-wrt54g3g_pcmcia.patch b/openwrt/target/linux/brcm-2.4/patches/009-wrt54g3g_pcmcia.patch
deleted file mode 100644
index 0759eeb40e..0000000000
--- a/openwrt/target/linux/brcm-2.4/patches/009-wrt54g3g_pcmcia.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-diff -urN linux.old/arch/mips/bcm947xx/pcibios.c linux.dev/arch/mips/bcm947xx/pcibios.c
---- linux.old/arch/mips/bcm947xx/pcibios.c 2006-04-07 21:20:59.000000000 +0200
-+++ linux.dev/arch/mips/bcm947xx/pcibios.c 2006-04-08 03:17:59.000000000 +0200
-@@ -157,6 +157,7 @@
-
- static u32 pci_iobase = 0x100;
- static u32 pci_membase = SB_PCI_DMA;
-+static u32 pcmcia_membase = 0x40004000;
-
- void __init
- pcibios_fixup_bus(struct pci_bus *b)
-@@ -188,7 +189,7 @@
- /* Fix up resource bases */
- for (pos = 0; pos < 6; pos++) {
- res = &d->resource[pos];
-- base = (res->flags & IORESOURCE_IO) ? &pci_iobase : &pci_membase;
-+ base = (res->flags & IORESOURCE_IO) ? &pci_iobase : ((b->number == 2) ? &pcmcia_membase : &pci_membase);
- if (res->end) {
- size = res->end - res->start + 1;
- if (*base & (size - 1))
-@@ -308,7 +309,12 @@
- where = PCI_BASE_ADDRESS_0 + (resource * 4);
- size = res->end - res->start;
- pci_read_config_dword(dev, where, &reg);
-- reg = (reg & size) | (((u32)(res->start - root->start)) & ~size);
-+
-+ if (dev->bus->number == 1)
-+ reg = (reg & size) | (((u32)(res->start - root->start)) & ~size);
-+ else
-+ reg = res->start;
-+
- pci_write_config_dword(dev, where, reg);
- }
-
-diff -urN linux.old/drivers/pcmcia/yenta.c linux.dev/drivers/pcmcia/yenta.c
---- linux.old/drivers/pcmcia/yenta.c 2004-11-17 12:54:21.000000000 +0100
-+++ linux.dev/drivers/pcmcia/yenta.c 2006-04-11 17:47:45.000000000 +0200
-@@ -543,6 +543,9 @@
- * Probe for usable interrupts using the force
- * register to generate bogus card status events.
- */
-+
-+#ifndef CONFIG_BCM947XX
-+ /* WRT54G3G does not like this */
- cb_writel(socket, CB_SOCKET_EVENT, -1);
- cb_writel(socket, CB_SOCKET_MASK, CB_CSTSMASK);
- exca_writeb(socket, I365_CSCINT, 0);
-@@ -557,7 +560,8 @@
- }
- cb_writel(socket, CB_SOCKET_MASK, 0);
- exca_writeb(socket, I365_CSCINT, 0);
--
-+#endif
-+
- mask = probe_irq_mask(val) & 0xffff;
-
- bridge_ctrl &= ~CB_BRIDGE_INTR;
-@@ -578,6 +582,12 @@
- socket->cap.cb_dev = socket->dev;
- socket->cap.bus = NULL;
-
-+#ifdef CONFIG_BCM947XX
-+ /* irq mask probing is broken for the WRT54G3G */
-+ if (socket->cap.irq_mask == 0)
-+ socket->cap.irq_mask = 0x6f8;
-+#endif
-+
- printk(KERN_INFO "Yenta ISA IRQ mask 0x%04x, PCI irq %d\n",
- socket->cap.irq_mask, socket->cb_irq);
- }
-@@ -609,6 +619,15 @@
- printk(KERN_INFO "Socket status: %08x\n",
- cb_readl(socket, CB_SOCKET_STATE));
-
-+ /* Generate an interrupt on card insert/remove */
-+ config_writew(socket, CB_SOCKET_MASK, CB_CSTSMASK | CB_CDMASK);
-+
-+ /* Set up Multifunction Routing Status Register */
-+ config_writew(socket, 0x8C, 0x1000 /* MFUNC3 to GPIO3 */ | 0x2 /* MFUNC0 to INTA */);
-+
-+ /* Switch interrupts to parallelized */
-+ config_writeb(socket, 0x92, 0x64);
-+
- /* Register it with the pcmcia layer.. */
- cardbus_register(socket);
-
-@@ -731,7 +750,7 @@
- {
- struct pci_bus *bus;
- struct resource *root, *res;
-- u32 start, end;
-+ u32 start = 0, end = 0;
- u32 align, size, min, max;
- unsigned offset;
- unsigned mask;
-@@ -750,6 +769,15 @@
- res->end = 0;
- root = pci_find_parent_resource(socket->dev, res);
-
-+#ifdef CONFIG_BCM947XX
-+ /* default mem resources are completely fscked up on the wrt54g3g */
-+ /* bypass the entire resource allocation stuff below and just set it statically */
-+ if (type & IORESOURCE_MEM) {
-+ res->start = 0x40004000;
-+ res->end = res->start + 0x3fff;
-+ }
-+
-+#else
- if (!root)
- return;
-
-@@ -794,6 +822,7 @@
- res->start = res->end = 0;
- return;
- }
-+#endif
-
- config_writel(socket, offset, res->start);
- config_writel(socket, offset+4, res->end);
diff --git a/openwrt/target/linux/brcm-2.6/Makefile b/openwrt/target/linux/brcm-2.6/Makefile
deleted file mode 100644
index 5926e6ebcd..0000000000
--- a/openwrt/target/linux/brcm-2.6/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-LINUX_VERSION:=2.6.16.7
-LINUX_RELEASE:=1
-LINUX_KERNEL_MD5SUM:=9682b2bd6e02f3087982d7c3f5ba824e
-
-include ../rules.mk
-include ./config
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
-
-
-$(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
- [ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches $(MAKE_TRACE)
- [ -d ./patches ] && $(PATCH) $(LINUX_DIR) ./patches $(MAKE_TRACE)
- @$(CP) config $(LINUX_DIR)/.config
- touch $@
-
diff --git a/openwrt/target/linux/brcm-2.6/config b/openwrt/target/linux/brcm-2.6/config
deleted file mode 100644
index 4a5d98c095..0000000000
--- a/openwrt/target/linux/brcm-2.6/config
+++ /dev/null
@@ -1,1728 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Wed Mar 29 00:13:01 2006
-#
-CONFIG_MIPS=y
-
-#
-# Machine selection
-#
-# CONFIG_MIPS_MTX1 is not set
-# CONFIG_MIPS_BOSPORUS is not set
-# CONFIG_MIPS_PB1000 is not set
-# CONFIG_MIPS_PB1100 is not set
-# CONFIG_MIPS_PB1500 is not set
-# CONFIG_MIPS_PB1550 is not set
-# CONFIG_MIPS_PB1200 is not set
-# CONFIG_MIPS_DB1000 is not set
-# CONFIG_MIPS_DB1100 is not set
-# CONFIG_MIPS_DB1500 is not set
-# CONFIG_MIPS_DB1550 is not set
-# CONFIG_MIPS_DB1200 is not set
-# CONFIG_MIPS_MIRAGE is not set
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MIPS_EV64120 is not set
-# CONFIG_MIPS_EV96100 is not set
-# CONFIG_MIPS_IVR is not set
-# CONFIG_MIPS_ITE8172 is not set
-# CONFIG_MACH_JAZZ is not set
-CONFIG_BCM947XX=y
-# CONFIG_LASAT is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_MALTA is not set
-# CONFIG_MIPS_SEAD is not set
-# CONFIG_MIPS_SIM is not set
-# CONFIG_MOMENCO_JAGUAR_ATX is not set
-# CONFIG_MOMENCO_OCELOT is not set
-# CONFIG_MOMENCO_OCELOT_3 is not set
-# CONFIG_MOMENCO_OCELOT_C is not set
-# CONFIG_MOMENCO_OCELOT_G is not set
-# CONFIG_MIPS_XXS1500 is not set
-# CONFIG_PNX8550_V2PCI is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_DDB5074 is not set
-# CONFIG_DDB5476 is not set
-# CONFIG_DDB5477 is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_QEMU is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SIBYTE_SWARM is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_PTSWARM is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SNI_RM200_PCI is not set
-# CONFIG_TOSHIBA_JMR3927 is not set
-# CONFIG_TOSHIBA_RBTX4927 is not set
-# CONFIG_TOSHIBA_RBTX4938 is not set
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_DMA_NEED_PCI_MAP_STATE=y
-# CONFIG_CPU_BIG_ENDIAN is not set
-CONFIG_CPU_LITTLE_ENDIAN=y
-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
-CONFIG_IRQ_CPU=y
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-
-#
-# CPU selection
-#
-CONFIG_CPU_MIPS32_R1=y
-# CONFIG_CPU_MIPS32_R2 is not set
-# CONFIG_CPU_MIPS64_R1 is not set
-# CONFIG_CPU_MIPS64_R2 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_VR41XX is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_CPU_MIPS32=y
-CONFIG_CPU_MIPSR1=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-
-#
-# Kernel type
-#
-CONFIG_32BIT=y
-# CONFIG_64BIT is not set
-CONFIG_PAGE_SIZE_4KB=y
-# CONFIG_PAGE_SIZE_8KB is not set
-# CONFIG_PAGE_SIZE_16KB is not set
-# CONFIG_PAGE_SIZE_64KB is not set
-CONFIG_CPU_HAS_PREFETCH=y
-# CONFIG_MIPS_MT is not set
-# CONFIG_64BIT_PHYS_ADDR is not set
-# CONFIG_CPU_ADVANCED is not set
-CONFIG_CPU_HAS_LLSC=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_ARCH_FLATMEM_ENABLE=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_SPLIT_PTLOCK_CPUS=4
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-
-#
-# 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_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_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-# CONFIG_KALLSYMS 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=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-CONFIG_OBSOLETE_INTERMODULE=y
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
-
-#
-# Block layer
-#
-# CONFIG_LBD is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-# CONFIG_IOSCHED_DEADLINE is not set
-# 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"
-
-#
-# Bus options (PCI, PCMCIA, EISA, ISA, TC)
-#
-CONFIG_HW_HAS_PCI=y
-CONFIG_PCI=y
-# CONFIG_PCI_LEGACY_PROC is not set
-CONFIG_MMU=y
-
-#
-# 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
-CONFIG_CARDBUS=y
-
-#
-# PC-card bridges
-#
-CONFIG_YENTA=m
-# CONFIG_YENTA_O2 is not set
-# CONFIG_YENTA_RICOH is not set
-# CONFIG_YENTA_TI is not set
-# CONFIG_YENTA_TOSHIBA is not set
-# CONFIG_PD6729 is not set
-# CONFIG_I82092 is not set
-CONFIG_PCCARD_NONSTATIC=m
-
-#
-# PCI Hotplug Support
-#
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_TRAD_SIGNALS=y
-
-#
-# 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_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_FWMARK=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
-# CONFIG_IP_ROUTE_VERBOSE is not set
-# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_NET_IPGRE_BROADCAST is not set
-CONFIG_IPSEC_NAT_TRAVERSAL=y
-# 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_TUNNEL=m
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-CONFIG_TCP_CONG_ADVANCED=y
-
-#
-# TCP congestion control
-#
-CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=m
-CONFIG_TCP_CONG_WESTWOOD=m
-CONFIG_TCP_CONG_HTCP=m
-CONFIG_TCP_CONG_HSTCP=m
-CONFIG_TCP_CONG_HYBLA=m
-CONFIG_TCP_CONG_VEGAS=y
-CONFIG_TCP_CONG_SCALABLE=m
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_INET6_AH is not set
-# CONFIG_INET6_ESP is not set
-# CONFIG_INET6_IPCOMP is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_IPV6_TUNNEL is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-# CONFIG_BRIDGE_NETFILTER is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-CONFIG_NETFILTER_XTABLES=y
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-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_PKTTYPE 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_STRING is not set
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=y
-CONFIG_IP_NF_CT_ACCT=y
-CONFIG_IP_NF_CONNTRACK_MARK=y
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-# CONFIG_IP_NF_CT_PROTO_SCTP is not set
-CONFIG_IP_NF_FTP=y
-CONFIG_IP_NF_IRC=y
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_PPTP=m
-CONFIG_IP_NF_SIP=m
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_LAYER7=m
-# CONFIG_IP_NF_MATCH_LAYER7_DEBUG is not set
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_IPP2P=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_TIME=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
-# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
-# CONFIG_IP_NF_MATCH_POLICY is not set
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-CONFIG_IP_NF_TARGET_IMQ=m
-# CONFIG_IP_NF_TARGET_LOG is not set
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=y
-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_NAT_IRC=y
-CONFIG_IP_NF_NAT_FTP=y
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_NAT_PPTP=m
-CONFIG_IP_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=y
-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_TARGET_CLUSTERIP is not set
-# CONFIG_IP_NF_RAW is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-CONFIG_IP_NF_SET=m
-CONFIG_IP_NF_SET_MAX=256
-CONFIG_IP_NF_SET_HASHSIZE=1024
-CONFIG_IP_NF_SET_IPMAP=m
-CONFIG_IP_NF_SET_MACIPMAP=m
-CONFIG_IP_NF_SET_PORTMAP=m
-CONFIG_IP_NF_SET_IPHASH=m
-CONFIG_IP_NF_SET_NETHASH=m
-CONFIG_IP_NF_SET_IPTREE=m
-CONFIG_IP_NF_MATCH_SET=m
-CONFIG_IP_NF_TARGET_SET=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_AHESP is not set
-CONFIG_IP6_NF_MATCH_EUI64=m
-# CONFIG_IP6_NF_MATCH_POLICY is not set
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_IMQ=m
-# CONFIG_IP6_NF_TARGET_LOG is not set
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-# CONFIG_IP6_NF_TARGET_HL is not set
-# 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
-
-#
-# 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=m
-CONFIG_ATM_CLIP=m
-CONFIG_ATM_CLIP_NO_ICMP=y
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-CONFIG_ATM_BR2684_IPFILTER=y
-CONFIG_BRIDGE=y
-CONFIG_VLAN_8021Q=y
-# 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=y
-CONFIG_NET_SCH_CLK_JIFFIES=y
-# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
-# 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_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_ESFQ=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 is not set
-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 is not set
-# CONFIG_CLS_U32_MARK is not set
-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=y
-# CONFIG_NET_CLS_IND is not set
-CONFIG_NET_ESTIMATOR=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_HAMRADIO=y
-
-#
-# Packet Radio protocols
-#
-CONFIG_AX25=m
-# CONFIG_AX25_DAMA_SLAVE is not set
-# CONFIG_NETROM is not set
-# CONFIG_ROSE is not set
-
-#
-# AX.25 network device drivers
-#
-CONFIG_MKISS=m
-# CONFIG_6PACK is not set
-# CONFIG_BPQETHER is not set
-# CONFIG_BAYCOM_SER_FDX is not set
-# CONFIG_BAYCOM_SER_HDX is not set
-# CONFIG_YAM 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 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_D80211=m
-CONFIG_D80211_DEBUG=y
-CONFIG_D80211_VERBOSE_DEBUG=y
-# CONFIG_TKIP_DEBUG is not set
-# CONFIG_D80211_DEBUG_COUNTERS is not set
-# CONFIG_HOSTAPD_WPA_TESTING 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
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-
-#
-# 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
-
-#
-# 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=y
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_AMDSTD_RETRY=0
-# 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_BCM47XX=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_BLKMTD 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=m
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-# 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=m
-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
-
-#
-# SCSI Transport Attributes
-#
-# 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
-
-#
-# SCSI low-level drivers
-#
-# 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_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 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_FC 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
-
-#
-# 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
-
-#
-# Multi-device support (RAID and LVM)
-#
-# 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_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_IMQ=m
-# CONFIG_IMQ_BEHAVIOR_AA is not set
-# CONFIG_IMQ_BEHAVIOR_AB is not set
-CONFIG_IMQ_BEHAVIOR_BA=y
-# CONFIG_IMQ_BEHAVIOR_BB is not set
-CONFIG_IMQ_NUM_DEVS=2
-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_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM 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=y
-# 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_LAN_SAA9730 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 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
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# 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_IPW2100=m
-CONFIG_IPW2100_MONITOR=y
-# CONFIG_IPW2100_DEBUG is not set
-CONFIG_IPW2200=m
-# CONFIG_IPW2200_DEBUG is not set
-# 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
-
-#
-# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
-#
-# CONFIG_PRISM54 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-CONFIG_HOSTAP_CS=m
-CONFIG_BCM43XX_D80211=m
-CONFIG_BCM43XX_D80211_DEBUG=y
-CONFIG_BCM43XX_D80211_DMA=y
-CONFIG_BCM43XX_D80211_PIO=y
-CONFIG_BCM43XX_D80211_DMA_AND_PIO_MODE=y
-# CONFIG_BCM43XX_D80211_DMA_MODE is not set
-# CONFIG_BCM43XX_D80211_PIO_MODE is not set
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-# CONFIG_NET_PCMCIA is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# ATM drivers
-#
-CONFIG_ATM_DUMMY=m
-CONFIG_ATM_TCP=m
-# 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 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_PPPOATM=m
-# 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
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Telephony Support
-#
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=m
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-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 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_CS=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 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
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_DRM 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
-# CONFIG_TELCLOCK 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
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_DPC is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-# 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_MIXER_OSS is not set
-# CONFIG_SND_PCM_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-# CONFIG_SND_SUPPORT_OLD_API 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
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 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_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_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 MIPS devices
-#
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# 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=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 is not set
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# 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_OBSOLETE_OSS_USB_DRIVER is not set
-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 is not set
-# 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_MTOUCH is not set
-# CONFIG_USB_ITMTOUCH is not set
-# CONFIG_USB_EGALAX 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 Multimedia devices
-#
-# CONFIG_USB_DABUSB is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC 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_PWC 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_USB_ZD1201 is not set
-# CONFIG_USB_MON is not set
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA 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 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_VISOR=m
-# 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_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-# CONFIG_USB_SERIAL_SAFE 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
-
-#
-# 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_CYTHERM is not set
-# CONFIG_USB_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-# CONFIG_USB_CXACRU is not set
-CONFIG_USB_UEAGLEATM=m
-# CONFIG_USB_XUSBATM is not set
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
-#
-
-#
-# 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_JBD=m
-# CONFIG_JBD_DEBUG is not set
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_REISERFS_FS_XATTR is not set
-CONFIG_JFS_FS=m
-# CONFIG_JFS_POSIX_ACL is not set
-# CONFIG_JFS_SECURITY is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_STATISTICS is not set
-# CONFIG_FS_POSIX_ACL is not set
-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_OCFS2_FS is not set
-CONFIG_MINIX_FS=m
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=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_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS 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_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_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_SQUASHFS=y
-# 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 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=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR 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=y
-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=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=m
-# 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_PRINTK_TIME is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_CROSSCOMPILE=y
-CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=squashfs,jffs2 init=/etc/preinit noinitrd console=ttyS0,115200"
-
-#
-# 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 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_DES=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_TEST is not set
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC32=y
-# CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/openwrt/target/linux/brcm-2.6/patches/001-bcm947xx.patch b/openwrt/target/linux/brcm-2.6/patches/001-bcm947xx.patch
deleted file mode 100644
index 771ea71b7f..0000000000
--- a/openwrt/target/linux/brcm-2.6/patches/001-bcm947xx.patch
+++ /dev/null
@@ -1,11932 +0,0 @@
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/broadcom/bcmsrom.c linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/bcmsrom.c
---- linux-2.6.16/arch/mips/bcm947xx/broadcom/bcmsrom.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/bcmsrom.c 2006-03-21 09:30:59.000000000 +0100
-@@ -0,0 +1,481 @@
-+/*
-+ * Misc useful routines to access NIC SROM/OTP .
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <bcmutils.h>
-+#include <bcmsrom.h>
-+#include <bcmdevs.h>
-+#include <bcmendian.h>
-+#include <pcicfg.h>
-+#include <sbutils.h>
-+
-+#include <proto/ethernet.h> /* for sprom content groking */
-+
-+#define VARS_MAX 4096 /* should be reduced */
-+
-+#define WRITE_ENABLE_DELAY 500 /* 500 ms after write enable/disable toggle */
-+#define WRITE_WORD_DELAY 20 /* 20 ms between each word write */
-+
-+static int initvars_srom_pci(void *sbh, void *curmap, char **vars, int *count);
-+static int sprom_read_pci(uint16 *sprom, uint wordoff, uint16 *buf, uint nwords, bool check_crc);
-+
-+static int initvars_table(osl_t *osh, char *start, char *end, char **vars, uint *count);
-+
-+/*
-+ * Initialize local vars from the right source for this platform.
-+ * Return 0 on success, nonzero on error.
-+ */
-+int
-+srom_var_init(void *sbh, uint bustype, void *curmap, osl_t *osh, char **vars, int *count)
-+{
-+ ASSERT(bustype == BUSTYPE(bustype));
-+ if (vars == NULL || count == NULL)
-+ return (0);
-+
-+ switch (BUSTYPE(bustype)) {
-+
-+ case PCI_BUS:
-+ ASSERT(curmap); /* can not be NULL */
-+ return initvars_srom_pci(sbh, curmap, vars, count);
-+
-+ default:
-+ return 0;
-+ }
-+ return (-1);
-+}
-+
-+/* support only 16-bit word read from srom */
-+int
-+srom_read(uint bustype, void *curmap, osl_t *osh, uint byteoff, uint nbytes, uint16 *buf)
-+{
-+ void *srom;
-+ uint off, nw;
-+
-+ ASSERT(bustype == BUSTYPE(bustype));
-+
-+ /* check input - 16-bit access only */
-+ if (byteoff & 1 || nbytes & 1 || (byteoff + nbytes) > (SPROM_SIZE * 2))
-+ return 1;
-+
-+ off = byteoff / 2;
-+ nw = nbytes / 2;
-+
-+ if (BUSTYPE(bustype) == PCI_BUS) {
-+ if (!curmap)
-+ return 1;
-+ srom = (uchar*)curmap + PCI_BAR0_SPROM_OFFSET;
-+ if (sprom_read_pci(srom, off, buf, nw, FALSE))
-+ return 1;
-+ } else {
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+/* support only 16-bit word write into srom */
-+int
-+srom_write(uint bustype, void *curmap, osl_t *osh, uint byteoff, uint nbytes, uint16 *buf)
-+{
-+ uint16 *srom;
-+ uint i, off, nw, crc_range;
-+ uint16 image[SPROM_SIZE], *p;
-+ uint8 crc;
-+ volatile uint32 val32;
-+
-+ ASSERT(bustype == BUSTYPE(bustype));
-+
-+ /* check input - 16-bit access only */
-+ if (byteoff & 1 || nbytes & 1 || (byteoff + nbytes) > (SPROM_SIZE * 2))
-+ return 1;
-+
-+ crc_range = (((BUSTYPE(bustype) == SDIO_BUS)) ? SPROM_SIZE : SPROM_CRC_RANGE) * 2;
-+
-+ /* if changes made inside crc cover range */
-+ if (byteoff < crc_range) {
-+ nw = (((byteoff + nbytes) > crc_range) ? byteoff + nbytes : crc_range) / 2;
-+ /* read data including entire first 64 words from srom */
-+ if (srom_read(bustype, curmap, osh, 0, nw * 2, image))
-+ return 1;
-+ /* make changes */
-+ bcopy((void*)buf, (void*)&image[byteoff / 2], nbytes);
-+ /* calculate crc */
-+ htol16_buf(image, crc_range);
-+ crc = ~hndcrc8((uint8 *)image, crc_range - 1, CRC8_INIT_VALUE);
-+ ltoh16_buf(image, crc_range);
-+ image[(crc_range / 2) - 1] = (crc << 8) | (image[(crc_range / 2) - 1] & 0xff);
-+ p = image;
-+ off = 0;
-+ } else {
-+ p = buf;
-+ off = byteoff / 2;
-+ nw = nbytes / 2;
-+ }
-+
-+ if (BUSTYPE(bustype) == PCI_BUS) {
-+ srom = (uint16*)((uchar*)curmap + PCI_BAR0_SPROM_OFFSET);
-+ /* enable writes to the SPROM */
-+ val32 = OSL_PCI_READ_CONFIG(osh, PCI_SPROM_CONTROL, sizeof(uint32));
-+ val32 |= SPROM_WRITEEN;
-+ OSL_PCI_WRITE_CONFIG(osh, PCI_SPROM_CONTROL, sizeof(uint32), val32);
-+ bcm_mdelay(WRITE_ENABLE_DELAY);
-+ /* write srom */
-+ for (i = 0; i < nw; i++) {
-+ W_REG(&srom[off + i], p[i]);
-+ bcm_mdelay(WRITE_WORD_DELAY);
-+ }
-+ /* disable writes to the SPROM */
-+ OSL_PCI_WRITE_CONFIG(osh, PCI_SPROM_CONTROL, sizeof(uint32), val32 & ~SPROM_WRITEEN);
-+ } else {
-+ return 1;
-+ }
-+
-+ bcm_mdelay(WRITE_ENABLE_DELAY);
-+ return 0;
-+}
-+
-+
-+/*
-+ * Read in and validate sprom.
-+ * Return 0 on success, nonzero on error.
-+ */
-+static int
-+sprom_read_pci(uint16 *sprom, uint wordoff, uint16 *buf, uint nwords, bool check_crc)
-+{
-+ int err = 0;
-+ uint i;
-+
-+ /* read the sprom */
-+ for (i = 0; i < nwords; i++)
-+ buf[i] = R_REG(&sprom[wordoff + i]);
-+
-+ if (check_crc) {
-+ /* fixup the endianness so crc8 will pass */
-+ htol16_buf(buf, nwords * 2);
-+ if (hndcrc8((uint8*)buf, nwords * 2, CRC8_INIT_VALUE) != CRC8_GOOD_VALUE)
-+ err = 1;
-+ /* now correct the endianness of the byte array */
-+ ltoh16_buf(buf, nwords * 2);
-+ }
-+
-+ return err;
-+}
-+
-+/*
-+* Create variable table from memory.
-+* Return 0 on success, nonzero on error.
-+*/
-+static int
-+initvars_table(osl_t *osh, char *start, char *end, char **vars, uint *count)
-+{
-+ int c = (int)(end - start);
-+
-+ /* do it only when there is more than just the null string */
-+ if (c > 1) {
-+ char *vp = MALLOC(osh, c);
-+ ASSERT(vp);
-+ if (!vp)
-+ return BCME_NOMEM;
-+ bcopy(start, vp, c);
-+ *vars = vp;
-+ *count = c;
-+ }
-+ else {
-+ *vars = NULL;
-+ *count = 0;
-+ }
-+
-+ return 0;
-+}
-+
-+/*
-+ * Initialize nonvolatile variable table from sprom.
-+ * Return 0 on success, nonzero on error.
-+ */
-+static int
-+initvars_srom_pci(void *sbh, void *curmap, char **vars, int *count)
-+{
-+ uint16 w, b[64];
-+ uint8 sromrev;
-+ struct ether_addr ea;
-+ char eabuf[32];
-+ uint32 w32;
-+ int woff, i;
-+ char *vp, *base;
-+ osl_t *osh = sb_osh(sbh);
-+ int err;
-+
-+ /*
-+ * Apply CRC over SROM content regardless SROM is present or not,
-+ * and use variable <devpath>sromrev's existance in flash to decide
-+ * if we should return an error when CRC fails or read SROM variables
-+ * from flash.
-+ */
-+ sprom_read_pci((void*)((int8*)curmap + PCI_BAR0_SPROM_OFFSET), 0, b, sizeof(b)/sizeof(b[0]), TRUE);
-+
-+ /* top word of sprom contains version and crc8 */
-+ sromrev = b[63] & 0xff;
-+ /* bcm4401 sroms misprogrammed */
-+ if (sromrev == 0x10)
-+ sromrev = 1;
-+
-+ /* srom version check */
-+ if (sromrev > 3)
-+ return (-2);
-+
-+ ASSERT(vars);
-+ ASSERT(count);
-+
-+ base = vp = MALLOC(osh, VARS_MAX);
-+ ASSERT(vp);
-+ if (!vp)
-+ return -2;
-+
-+ vp += sprintf(vp, "sromrev=%d", sromrev);
-+ vp++;
-+
-+ if (sromrev >= 3) {
-+ /* New section takes over the 3th hardware function space */
-+
-+ /* Words 22+23 are 11a (mid) ofdm power offsets */
-+ w32 = ((uint32)b[23] << 16) | b[22];
-+ vp += sprintf(vp, "ofdmapo=%d", w32);
-+ vp++;
-+
-+ /* Words 24+25 are 11a (low) ofdm power offsets */
-+ w32 = ((uint32)b[25] << 16) | b[24];
-+ vp += sprintf(vp, "ofdmalpo=%d", w32);
-+ vp++;
-+
-+ /* Words 26+27 are 11a (high) ofdm power offsets */
-+ w32 = ((uint32)b[27] << 16) | b[26];
-+ vp += sprintf(vp, "ofdmahpo=%d", w32);
-+ vp++;
-+
-+ /*GPIO LED Powersave duty cycle (oncount >> 24) (offcount >> 8)*/
-+ w32 = ((uint32)b[43] << 24) | ((uint32)b[42] << 8);
-+ vp += sprintf(vp, "gpiotimerval=%d", w32);
-+
-+ /*GPIO LED Powersave duty cycle (oncount >> 24) (offcount >> 8)*/
-+ w32 = ((uint32)((unsigned char)(b[21] >> 8) & 0xFF) << 24) | /* oncount*/
-+ ((uint32)((unsigned char)(b[21] & 0xFF)) << 8); /* offcount */
-+ vp += sprintf(vp, "gpiotimerval=%d", w32);
-+
-+ vp++;
-+ }
-+
-+ if (sromrev >= 2) {
-+ /* New section takes over the 4th hardware function space */
-+
-+ /* Word 29 is max power 11a high/low */
-+ w = b[29];
-+ vp += sprintf(vp, "pa1himaxpwr=%d", w & 0xff);
-+ vp++;
-+ vp += sprintf(vp, "pa1lomaxpwr=%d", (w >> 8) & 0xff);
-+ vp++;
-+
-+ /* Words 30-32 set the 11alow pa settings,
-+ * 33-35 are the 11ahigh ones.
-+ */
-+ for (i = 0; i < 3; i++) {
-+ vp += sprintf(vp, "pa1lob%d=%d", i, b[30 + i]);
-+ vp++;
-+ vp += sprintf(vp, "pa1hib%d=%d", i, b[33 + i]);
-+ vp++;
-+ }
-+ w = b[59];
-+ if (w == 0)
-+ vp += sprintf(vp, "ccode=");
-+ else
-+ vp += sprintf(vp, "ccode=%c%c", (w >> 8), (w & 0xff));
-+ vp++;
-+
-+ }
-+
-+ /* parameter section of sprom starts at byte offset 72 */
-+ woff = 72/2;
-+
-+ /* first 6 bytes are il0macaddr */
-+ ea.octet[0] = (b[woff] >> 8) & 0xff;
-+ ea.octet[1] = b[woff] & 0xff;
-+ ea.octet[2] = (b[woff+1] >> 8) & 0xff;
-+ ea.octet[3] = b[woff+1] & 0xff;
-+ ea.octet[4] = (b[woff+2] >> 8) & 0xff;
-+ ea.octet[5] = b[woff+2] & 0xff;
-+ woff += ETHER_ADDR_LEN/2 ;
-+ bcm_ether_ntoa((uchar*)&ea, eabuf);
-+ vp += sprintf(vp, "il0macaddr=%s", eabuf);
-+ vp++;
-+
-+ /* next 6 bytes are et0macaddr */
-+ ea.octet[0] = (b[woff] >> 8) & 0xff;
-+ ea.octet[1] = b[woff] & 0xff;
-+ ea.octet[2] = (b[woff+1] >> 8) & 0xff;
-+ ea.octet[3] = b[woff+1] & 0xff;
-+ ea.octet[4] = (b[woff+2] >> 8) & 0xff;
-+ ea.octet[5] = b[woff+2] & 0xff;
-+ woff += ETHER_ADDR_LEN/2 ;
-+ bcm_ether_ntoa((uchar*)&ea, eabuf);
-+ vp += sprintf(vp, "et0macaddr=%s", eabuf);
-+ vp++;
-+
-+ /* next 6 bytes are et1macaddr */
-+ ea.octet[0] = (b[woff] >> 8) & 0xff;
-+ ea.octet[1] = b[woff] & 0xff;
-+ ea.octet[2] = (b[woff+1] >> 8) & 0xff;
-+ ea.octet[3] = b[woff+1] & 0xff;
-+ ea.octet[4] = (b[woff+2] >> 8) & 0xff;
-+ ea.octet[5] = b[woff+2] & 0xff;
-+ woff += ETHER_ADDR_LEN/2 ;
-+ bcm_ether_ntoa((uchar*)&ea, eabuf);
-+ vp += sprintf(vp, "et1macaddr=%s", eabuf);
-+ vp++;
-+
-+ /*
-+ * Enet phy settings one or two singles or a dual
-+ * Bits 4-0 : MII address for enet0 (0x1f for not there)
-+ * Bits 9-5 : MII address for enet1 (0x1f for not there)
-+ * Bit 14 : Mdio for enet0
-+ * Bit 15 : Mdio for enet1
-+ */
-+ w = b[woff];
-+ vp += sprintf(vp, "et0phyaddr=%d", (w & 0x1f));
-+ vp++;
-+ vp += sprintf(vp, "et1phyaddr=%d", ((w >> 5) & 0x1f));
-+ vp++;
-+ vp += sprintf(vp, "et0mdcport=%d", ((w >> 14) & 0x1));
-+ vp++;
-+ vp += sprintf(vp, "et1mdcport=%d", ((w >> 15) & 0x1));
-+ vp++;
-+
-+ /* Word 46 has board rev, antennas 0/1 & Country code/control */
-+ w = b[46];
-+ vp += sprintf(vp, "boardrev=%d", w & 0xff);
-+ vp++;
-+
-+ if (sromrev > 1)
-+ vp += sprintf(vp, "cctl=%d", (w >> 8) & 0xf);
-+ else
-+ vp += sprintf(vp, "cc=%d", (w >> 8) & 0xf);
-+ vp++;
-+
-+ vp += sprintf(vp, "aa0=%d", (w >> 12) & 0x3);
-+ vp++;
-+
-+ vp += sprintf(vp, "aa1=%d", (w >> 14) & 0x3);
-+ vp++;
-+
-+ /* Words 47-49 set the (wl) pa settings */
-+ woff = 47;
-+
-+ for (i = 0; i < 3; i++) {
-+ vp += sprintf(vp, "pa0b%d=%d", i, b[woff+i]);
-+ vp++;
-+ vp += sprintf(vp, "pa1b%d=%d", i, b[woff+i+6]);
-+ vp++;
-+ }
-+
-+ /*
-+ * Words 50-51 set the customer-configured wl led behavior.
-+ * 8 bits/gpio pin. High bit: activehi=0, activelo=1;
-+ * LED behavior values defined in wlioctl.h .
-+ */
-+ w = b[50];
-+ if ((w != 0) && (w != 0xffff)) {
-+ /* gpio0 */
-+ vp += sprintf(vp, "wl0gpio0=%d", (w & 0xff));
-+ vp++;
-+
-+ /* gpio1 */
-+ vp += sprintf(vp, "wl0gpio1=%d", (w >> 8) & 0xff);
-+ vp++;
-+ }
-+ w = b[51];
-+ if ((w != 0) && (w != 0xffff)) {
-+ /* gpio2 */
-+ vp += sprintf(vp, "wl0gpio2=%d", w & 0xff);
-+ vp++;
-+
-+ /* gpio3 */
-+ vp += sprintf(vp, "wl0gpio3=%d", (w >> 8) & 0xff);
-+ vp++;
-+ }
-+
-+ /* Word 52 is max power 0/1 */
-+ w = b[52];
-+ vp += sprintf(vp, "pa0maxpwr=%d", w & 0xff);
-+ vp++;
-+ vp += sprintf(vp, "pa1maxpwr=%d", (w >> 8) & 0xff);
-+ vp++;
-+
-+ /* Word 56 is idle tssi target 0/1 */
-+ w = b[56];
-+ vp += sprintf(vp, "pa0itssit=%d", w & 0xff);
-+ vp++;
-+ vp += sprintf(vp, "pa1itssit=%d", (w >> 8) & 0xff);
-+ vp++;
-+
-+ /* Word 57 is boardflags, if not programmed make it zero */
-+ w32 = (uint32)b[57];
-+ if (w32 == 0xffff) w32 = 0;
-+ if (sromrev > 1) {
-+ /* Word 28 is the high bits of boardflags */
-+ w32 |= (uint32)b[28] << 16;
-+ }
-+ vp += sprintf(vp, "boardflags=%d", w32);
-+ vp++;
-+
-+ /* Word 58 is antenna gain 0/1 */
-+ w = b[58];
-+ vp += sprintf(vp, "ag0=%d", w & 0xff);
-+ vp++;
-+
-+ vp += sprintf(vp, "ag1=%d", (w >> 8) & 0xff);
-+ vp++;
-+
-+ if (sromrev == 1) {
-+ /* set the oem string */
-+ vp += sprintf(vp, "oem=%02x%02x%02x%02x%02x%02x%02x%02x",
-+ ((b[59] >> 8) & 0xff), (b[59] & 0xff),
-+ ((b[60] >> 8) & 0xff), (b[60] & 0xff),
-+ ((b[61] >> 8) & 0xff), (b[61] & 0xff),
-+ ((b[62] >> 8) & 0xff), (b[62] & 0xff));
-+ vp++;
-+ } else if (sromrev == 2) {
-+ /* Word 60 OFDM tx power offset from CCK level */
-+ /* OFDM Power Offset - opo */
-+ vp += sprintf(vp, "opo=%d", b[60] & 0xff);
-+ vp++;
-+ } else {
-+ /* Word 60: cck power offsets */
-+ vp += sprintf(vp, "cckpo=%d", b[60]);
-+ vp++;
-+
-+ /* Words 61+62: 11g ofdm power offsets */
-+ w32 = ((uint32)b[62] << 16) | b[61];
-+ vp += sprintf(vp, "ofdmgpo=%d", w32);
-+ vp++;
-+ }
-+
-+ /* final nullbyte terminator */
-+ *vp++ = '\0';
-+
-+ ASSERT((vp - base) <= VARS_MAX);
-+
-+ err = initvars_table(osh, base, vp, vars, count);
-+
-+ MFREE(osh, base, VARS_MAX);
-+ return err;
-+}
-+
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/broadcom/bcmutils.c linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/bcmutils.c
---- linux-2.6.16/arch/mips/bcm947xx/broadcom/bcmutils.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/bcmutils.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,356 @@
-+/*
-+ * Misc useful OS-independent routines.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <sbutils.h>
-+#include <bcmnvram.h>
-+#include <bcmutils.h>
-+#include <bcmendian.h>
-+#include <bcmdevs.h>
-+
-+unsigned char bcm_ctype[] = {
-+ _BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C, /* 0-7 */
-+ _BCM_C,_BCM_C|_BCM_S,_BCM_C|_BCM_S,_BCM_C|_BCM_S,_BCM_C|_BCM_S,_BCM_C|_BCM_S,_BCM_C,_BCM_C, /* 8-15 */
-+ _BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C, /* 16-23 */
-+ _BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C,_BCM_C, /* 24-31 */
-+ _BCM_S|_BCM_SP,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P, /* 32-39 */
-+ _BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P, /* 40-47 */
-+ _BCM_D,_BCM_D,_BCM_D,_BCM_D,_BCM_D,_BCM_D,_BCM_D,_BCM_D, /* 48-55 */
-+ _BCM_D,_BCM_D,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P, /* 56-63 */
-+ _BCM_P,_BCM_U|_BCM_X,_BCM_U|_BCM_X,_BCM_U|_BCM_X,_BCM_U|_BCM_X,_BCM_U|_BCM_X,_BCM_U|_BCM_X,_BCM_U, /* 64-71 */
-+ _BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U, /* 72-79 */
-+ _BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U, /* 80-87 */
-+ _BCM_U,_BCM_U,_BCM_U,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P, /* 88-95 */
-+ _BCM_P,_BCM_L|_BCM_X,_BCM_L|_BCM_X,_BCM_L|_BCM_X,_BCM_L|_BCM_X,_BCM_L|_BCM_X,_BCM_L|_BCM_X,_BCM_L, /* 96-103 */
-+ _BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L, /* 104-111 */
-+ _BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L, /* 112-119 */
-+ _BCM_L,_BCM_L,_BCM_L,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_C, /* 120-127 */
-+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 128-143 */
-+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 144-159 */
-+ _BCM_S|_BCM_SP,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P, /* 160-175 */
-+ _BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P,_BCM_P, /* 176-191 */
-+ _BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U, /* 192-207 */
-+ _BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_P,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_U,_BCM_L, /* 208-223 */
-+ _BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L, /* 224-239 */
-+ _BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_P,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L,_BCM_L /* 240-255 */
-+};
-+
-+uchar
-+bcm_toupper(uchar c)
-+{
-+ if (bcm_islower(c))
-+ c -= 'a'-'A';
-+ return (c);
-+}
-+
-+ulong
-+bcm_strtoul(char *cp, char **endp, uint base)
-+{
-+ ulong result, value;
-+ bool minus;
-+
-+ minus = FALSE;
-+
-+ while (bcm_isspace(*cp))
-+ cp++;
-+
-+ if (cp[0] == '+')
-+ cp++;
-+ else if (cp[0] == '-') {
-+ minus = TRUE;
-+ cp++;
-+ }
-+
-+ if (base == 0) {
-+ if (cp[0] == '0') {
-+ if ((cp[1] == 'x') || (cp[1] == 'X')) {
-+ base = 16;
-+ cp = &cp[2];
-+ } else {
-+ base = 8;
-+ cp = &cp[1];
-+ }
-+ } else
-+ base = 10;
-+ } else if (base == 16 && (cp[0] == '0') && ((cp[1] == 'x') || (cp[1] == 'X'))) {
-+ cp = &cp[2];
-+ }
-+
-+ result = 0;
-+
-+ while (bcm_isxdigit(*cp) &&
-+ (value = bcm_isdigit(*cp) ? *cp-'0' : bcm_toupper(*cp)-'A'+10) < base) {
-+ result = result*base + value;
-+ cp++;
-+ }
-+
-+ if (minus)
-+ result = (ulong)(result * -1);
-+
-+ if (endp)
-+ *endp = (char *)cp;
-+
-+ return (result);
-+}
-+
-+uint
-+bcm_atoi(char *s)
-+{
-+ uint n;
-+
-+ n = 0;
-+
-+ while (bcm_isdigit(*s))
-+ n = (n * 10) + *s++ - '0';
-+ return (n);
-+}
-+
-+/* return pointer to location of substring 'needle' in 'haystack' */
-+char*
-+bcmstrstr(char *haystack, char *needle)
-+{
-+ int len, nlen;
-+ int i;
-+
-+ if ((haystack == NULL) || (needle == NULL))
-+ return (haystack);
-+
-+ nlen = strlen(needle);
-+ len = strlen(haystack) - nlen + 1;
-+
-+ for (i = 0; i < len; i++)
-+ if (bcmp(needle, &haystack[i], nlen) == 0)
-+ return (&haystack[i]);
-+ return (NULL);
-+}
-+
-+char*
-+bcmstrcat(char *dest, const char *src)
-+{
-+ strcpy(&dest[strlen(dest)], src);
-+ return (dest);
-+}
-+
-+
-+char*
-+bcm_ether_ntoa(char *ea, char *buf)
-+{
-+ sprintf(buf,"%02x:%02x:%02x:%02x:%02x:%02x",
-+ (uchar)ea[0]&0xff, (uchar)ea[1]&0xff, (uchar)ea[2]&0xff,
-+ (uchar)ea[3]&0xff, (uchar)ea[4]&0xff, (uchar)ea[5]&0xff);
-+ return (buf);
-+}
-+
-+/* parse a xx:xx:xx:xx:xx:xx format ethernet address */
-+int
-+bcm_ether_atoe(char *p, char *ea)
-+{
-+ int i = 0;
-+
-+ for (;;) {
-+ ea[i++] = (char) bcm_strtoul(p, &p, 16);
-+ if (!*p++ || i == 6)
-+ break;
-+ }
-+
-+ return (i == 6);
-+}
-+
-+void
-+bcm_mdelay(uint ms)
-+{
-+ uint i;
-+
-+ for (i = 0; i < ms; i++) {
-+ OSL_DELAY(1000);
-+ }
-+}
-+
-+/*
-+ * Search the name=value vars for a specific one and return its value.
-+ * Returns NULL if not found.
-+ */
-+char*
-+getvar(char *vars, char *name)
-+{
-+ char *s;
-+ int len;
-+
-+ len = strlen(name);
-+
-+ /* first look in vars[] */
-+ for (s = vars; s && *s; ) {
-+ if ((bcmp(s, name, len) == 0) && (s[len] == '='))
-+ return (&s[len+1]);
-+
-+ while (*s++)
-+ ;
-+ }
-+
-+ /* then query nvram */
-+ return (BCMINIT(nvram_get)(name));
-+}
-+
-+/*
-+ * Search the vars for a specific one and return its value as
-+ * an integer. Returns 0 if not found.
-+ */
-+int
-+getintvar(char *vars, char *name)
-+{
-+ char *val;
-+
-+ if ((val = getvar(vars, name)) == NULL)
-+ return (0);
-+
-+ return (bcm_strtoul(val, NULL, 0));
-+}
-+
-+
-+/* Search for token in comma separated token-string */
-+static int
-+findmatch(char *string, char *name)
-+{
-+ uint len;
-+ char *c;
-+
-+ len = strlen(name);
-+ while ((c = strchr(string, ',')) != NULL) {
-+ if (len == (uint)(c - string) && !strncmp(string, name, len))
-+ return 1;
-+ string = c + 1;
-+ }
-+
-+ return (!strcmp(string, name));
-+}
-+
-+/* Return gpio pin number assigned to the named pin */
-+/*
-+* Variable should be in format:
-+*
-+* gpio<N>=pin_name,pin_name
-+*
-+* This format allows multiple features to share the gpio with mutual
-+* understanding.
-+*
-+* 'def_pin' is returned if a specific gpio is not defined for the requested functionality
-+* and if def_pin is not used by others.
-+*/
-+uint
-+getgpiopin(char *vars, char *pin_name, uint def_pin)
-+{
-+ char name[] = "gpioXXXX";
-+ char *val;
-+ uint pin;
-+
-+ /* Go thru all possibilities till a match in pin name */
-+ for (pin = 0; pin < GPIO_NUMPINS; pin ++) {
-+ sprintf(name, "gpio%d", pin);
-+ val = getvar(vars, name);
-+ if (val && findmatch(val, pin_name))
-+ return pin;
-+ }
-+
-+ if (def_pin != GPIO_PIN_NOTDEFINED) {
-+ /* make sure the default pin is not used by someone else */
-+ sprintf(name, "gpio%d", def_pin);
-+ if (getvar(vars, name)) {
-+ def_pin = GPIO_PIN_NOTDEFINED;
-+ }
-+ }
-+
-+ return def_pin;
-+}
-+
-+
-+/*******************************************************************************
-+ * crc8
-+ *
-+ * Computes a crc8 over the input data using the polynomial:
-+ *
-+ * x^8 + x^7 +x^6 + x^4 + x^2 + 1
-+ *
-+ * The caller provides the initial value (either CRC8_INIT_VALUE
-+ * or the previous returned value) to allow for processing of
-+ * discontiguous blocks of data. When generating the CRC the
-+ * caller is responsible for complementing the final return value
-+ * and inserting it into the byte stream. When checking, a final
-+ * return value of CRC8_GOOD_VALUE indicates a valid CRC.
-+ *
-+ * Reference: Dallas Semiconductor Application Note 27
-+ * Williams, Ross N., "A Painless Guide to CRC Error Detection Algorithms",
-+ * ver 3, Aug 1993, ross@guest.adelaide.edu.au, Rocksoft Pty Ltd.,
-+ * ftp://ftp.rocksoft.com/clients/rocksoft/papers/crc_v3.txt
-+ *
-+ ******************************************************************************/
-+
-+static uint8 crc8_table[256] = {
-+ 0x00, 0xF7, 0xB9, 0x4E, 0x25, 0xD2, 0x9C, 0x6B,
-+ 0x4A, 0xBD, 0xF3, 0x04, 0x6F, 0x98, 0xD6, 0x21,
-+ 0x94, 0x63, 0x2D, 0xDA, 0xB1, 0x46, 0x08, 0xFF,
-+ 0xDE, 0x29, 0x67, 0x90, 0xFB, 0x0C, 0x42, 0xB5,
-+ 0x7F, 0x88, 0xC6, 0x31, 0x5A, 0xAD, 0xE3, 0x14,
-+ 0x35, 0xC2, 0x8C, 0x7B, 0x10, 0xE7, 0xA9, 0x5E,
-+ 0xEB, 0x1C, 0x52, 0xA5, 0xCE, 0x39, 0x77, 0x80,
-+ 0xA1, 0x56, 0x18, 0xEF, 0x84, 0x73, 0x3D, 0xCA,
-+ 0xFE, 0x09, 0x47, 0xB0, 0xDB, 0x2C, 0x62, 0x95,
-+ 0xB4, 0x43, 0x0D, 0xFA, 0x91, 0x66, 0x28, 0xDF,
-+ 0x6A, 0x9D, 0xD3, 0x24, 0x4F, 0xB8, 0xF6, 0x01,
-+ 0x20, 0xD7, 0x99, 0x6E, 0x05, 0xF2, 0xBC, 0x4B,
-+ 0x81, 0x76, 0x38, 0xCF, 0xA4, 0x53, 0x1D, 0xEA,
-+ 0xCB, 0x3C, 0x72, 0x85, 0xEE, 0x19, 0x57, 0xA0,
-+ 0x15, 0xE2, 0xAC, 0x5B, 0x30, 0xC7, 0x89, 0x7E,
-+ 0x5F, 0xA8, 0xE6, 0x11, 0x7A, 0x8D, 0xC3, 0x34,
-+ 0xAB, 0x5C, 0x12, 0xE5, 0x8E, 0x79, 0x37, 0xC0,
-+ 0xE1, 0x16, 0x58, 0xAF, 0xC4, 0x33, 0x7D, 0x8A,
-+ 0x3F, 0xC8, 0x86, 0x71, 0x1A, 0xED, 0xA3, 0x54,
-+ 0x75, 0x82, 0xCC, 0x3B, 0x50, 0xA7, 0xE9, 0x1E,
-+ 0xD4, 0x23, 0x6D, 0x9A, 0xF1, 0x06, 0x48, 0xBF,
-+ 0x9E, 0x69, 0x27, 0xD0, 0xBB, 0x4C, 0x02, 0xF5,
-+ 0x40, 0xB7, 0xF9, 0x0E, 0x65, 0x92, 0xDC, 0x2B,
-+ 0x0A, 0xFD, 0xB3, 0x44, 0x2F, 0xD8, 0x96, 0x61,
-+ 0x55, 0xA2, 0xEC, 0x1B, 0x70, 0x87, 0xC9, 0x3E,
-+ 0x1F, 0xE8, 0xA6, 0x51, 0x3A, 0xCD, 0x83, 0x74,
-+ 0xC1, 0x36, 0x78, 0x8F, 0xE4, 0x13, 0x5D, 0xAA,
-+ 0x8B, 0x7C, 0x32, 0xC5, 0xAE, 0x59, 0x17, 0xE0,
-+ 0x2A, 0xDD, 0x93, 0x64, 0x0F, 0xF8, 0xB6, 0x41,
-+ 0x60, 0x97, 0xD9, 0x2E, 0x45, 0xB2, 0xFC, 0x0B,
-+ 0xBE, 0x49, 0x07, 0xF0, 0x9B, 0x6C, 0x22, 0xD5,
-+ 0xF4, 0x03, 0x4D, 0xBA, 0xD1, 0x26, 0x68, 0x9F
-+};
-+
-+#define CRC_INNER_LOOP(n, c, x) \
-+ (c) = ((c) >> 8) ^ crc##n##_table[((c) ^ (x)) & 0xff]
-+
-+uint8
-+hndcrc8(
-+ uint8 *pdata, /* pointer to array of data to process */
-+ uint nbytes, /* number of input data bytes to process */
-+ uint8 crc /* either CRC8_INIT_VALUE or previous return value */
-+)
-+{
-+ /* hard code the crc loop instead of using CRC_INNER_LOOP macro
-+ * to avoid the undefined and unnecessary (uint8 >> 8) operation. */
-+ while (nbytes-- > 0)
-+ crc = crc8_table[(crc ^ *pdata++) & 0xff];
-+
-+ return crc;
-+}
-+
-+#ifdef notdef
-+#define CLEN 1499
-+#define CBUFSIZ (CLEN+4)
-+#define CNBUFS 5
-+
-+#endif
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/broadcom/cfe_env.c linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/cfe_env.c
---- linux-2.6.16/arch/mips/bcm947xx/broadcom/cfe_env.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/cfe_env.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,234 @@
-+/*
-+ * NVRAM variable manipulation (Linux kernel half)
-+ *
-+ * Copyright 2001-2003, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/string.h>
-+#include <asm/io.h>
-+#include <asm/uaccess.h>
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <bcmendian.h>
-+#include <bcmutils.h>
-+
-+#define NVRAM_SIZE (0x1ff0)
-+static char _nvdata[NVRAM_SIZE] __initdata;
-+static char _valuestr[256] __initdata;
-+
-+/*
-+ * TLV types. These codes are used in the "type-length-value"
-+ * encoding of the items stored in the NVRAM device (flash or EEPROM)
-+ *
-+ * The layout of the flash/nvram is as follows:
-+ *
-+ * <type> <length> <data ...> <type> <length> <data ...> <type_end>
-+ *
-+ * The type code of "ENV_TLV_TYPE_END" marks the end of the list.
-+ * The "length" field marks the length of the data section, not
-+ * including the type and length fields.
-+ *
-+ * Environment variables are stored as follows:
-+ *
-+ * <type_env> <length> <flags> <name> = <value>
-+ *
-+ * If bit 0 (low bit) is set, the length is an 8-bit value.
-+ * If bit 0 (low bit) is clear, the length is a 16-bit value
-+ *
-+ * Bit 7 set indicates "user" TLVs. In this case, bit 0 still
-+ * indicates the size of the length field.
-+ *
-+ * Flags are from the constants below:
-+ *
-+ */
-+#define ENV_LENGTH_16BITS 0x00 /* for low bit */
-+#define ENV_LENGTH_8BITS 0x01
-+
-+#define ENV_TYPE_USER 0x80
-+
-+#define ENV_CODE_SYS(n,l) (((n)<<1)|(l))
-+#define ENV_CODE_USER(n,l) ((((n)<<1)|(l)) | ENV_TYPE_USER)
-+
-+/*
-+ * The actual TLV types we support
-+ */
-+
-+#define ENV_TLV_TYPE_END 0x00
-+#define ENV_TLV_TYPE_ENV ENV_CODE_SYS(0,ENV_LENGTH_8BITS)
-+
-+/*
-+ * Environment variable flags
-+ */
-+
-+#define ENV_FLG_NORMAL 0x00 /* normal read/write */
-+#define ENV_FLG_BUILTIN 0x01 /* builtin - not stored in flash */
-+#define ENV_FLG_READONLY 0x02 /* read-only - cannot be changed */
-+
-+#define ENV_FLG_MASK 0xFF /* mask of attributes we keep */
-+#define ENV_FLG_ADMIN 0x100 /* lets us internally override permissions */
-+
-+
-+/* *********************************************************************
-+ * _nvram_read(buffer,offset,length)
-+ *
-+ * Read data from the NVRAM device
-+ *
-+ * Input parameters:
-+ * buffer - destination buffer
-+ * offset - offset of data to read
-+ * length - number of bytes to read
-+ *
-+ * Return value:
-+ * number of bytes read, or <0 if error occured
-+ ********************************************************************* */
-+static int
-+_nvram_read(unsigned char *nv_buf, unsigned char *buffer, int offset, int length)
-+{
-+ int i;
-+ if (offset > NVRAM_SIZE)
-+ return -1;
-+
-+ for ( i = 0; i < length; i++) {
-+ buffer[i] = ((volatile unsigned char*)nv_buf)[offset + i];
-+ }
-+ return length;
-+}
-+
-+
-+static char*
-+_strnchr(const char *dest,int c,size_t cnt)
-+{
-+ while (*dest && (cnt > 0)) {
-+ if (*dest == c) return (char *) dest;
-+ dest++;
-+ cnt--;
-+ }
-+ return NULL;
-+}
-+
-+
-+
-+/*
-+ * Core support API: Externally visible.
-+ */
-+
-+/*
-+ * Get the value of an NVRAM variable
-+ * @param name name of variable to get
-+ * @return value of variable or NULL if undefined
-+ */
-+
-+char*
-+cfe_env_get(unsigned char *nv_buf, char* name)
-+{
-+ int size;
-+ unsigned char *buffer;
-+ unsigned char *ptr;
-+ unsigned char *envval;
-+ unsigned int reclen;
-+ unsigned int rectype;
-+ int offset;
-+ int flg;
-+
-+ size = NVRAM_SIZE;
-+ buffer = &_nvdata[0];
-+
-+ ptr = buffer;
-+ offset = 0;
-+
-+ /* Read the record type and length */
-+ if (_nvram_read(nv_buf, ptr,offset,1) != 1) {
-+ goto error;
-+ }
-+
-+ while ((*ptr != ENV_TLV_TYPE_END) && (size > 1)) {
-+
-+ /* Adjust pointer for TLV type */
-+ rectype = *(ptr);
-+ offset++;
-+ size--;
-+
-+ /*
-+ * Read the length. It can be either 1 or 2 bytes
-+ * depending on the code
-+ */
-+ if (rectype & ENV_LENGTH_8BITS) {
-+ /* Read the record type and length - 8 bits */
-+ if (_nvram_read(nv_buf, ptr,offset,1) != 1) {
-+ goto error;
-+ }
-+ reclen = *(ptr);
-+ size--;
-+ offset++;
-+ }
-+ else {
-+ /* Read the record type and length - 16 bits, MSB first */
-+ if (_nvram_read(nv_buf, ptr,offset,2) != 2) {
-+ goto error;
-+ }
-+ reclen = (((unsigned int) *(ptr)) << 8) + (unsigned int) *(ptr+1);
-+ size -= 2;
-+ offset += 2;
-+ }
-+
-+ if (reclen > size)
-+ break; /* should not happen, bad NVRAM */
-+
-+ switch (rectype) {
-+ case ENV_TLV_TYPE_ENV:
-+ /* Read the TLV data */
-+ if (_nvram_read(nv_buf, ptr,offset,reclen) != reclen)
-+ goto error;
-+ flg = *ptr++;
-+ envval = (unsigned char *) _strnchr(ptr,'=',(reclen-1));
-+ if (envval) {
-+ *envval++ = '\0';
-+ memcpy(_valuestr,envval,(reclen-1)-(envval-ptr));
-+ _valuestr[(reclen-1)-(envval-ptr)] = '\0';
-+#if 0
-+ printk(KERN_INFO "NVRAM:%s=%s\n", ptr, _valuestr);
-+#endif
-+ if(!strcmp(ptr, name)){
-+ return _valuestr;
-+ }
-+ if((strlen(ptr) > 1) && !strcmp(&ptr[1], name))
-+ return _valuestr;
-+ }
-+ break;
-+
-+ default:
-+ /* Unknown TLV type, skip it. */
-+ break;
-+ }
-+
-+ /*
-+ * Advance to next TLV
-+ */
-+
-+ size -= (int)reclen;
-+ offset += reclen;
-+
-+ /* Read the next record type */
-+ ptr = buffer;
-+ if (_nvram_read(nv_buf, ptr,offset,1) != 1)
-+ goto error;
-+ }
-+
-+error:
-+ return NULL;
-+
-+}
-+
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/broadcom/linux_osl.c linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/linux_osl.c
---- linux-2.6.16/arch/mips/bcm947xx/broadcom/linux_osl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/linux_osl.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,102 @@
-+/*
-+ * Linux OS Independent Layer
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#define LINUX_OSL
-+
-+#include <typedefs.h>
-+#include <bcmendian.h>
-+#include <linux/module.h>
-+#include <linuxver.h>
-+#include <osl.h>
-+#include <bcmutils.h>
-+#include <linux/delay.h>
-+#ifdef mips
-+#include <asm/paccess.h>
-+#endif
-+#include <pcicfg.h>
-+
-+#define PCI_CFG_RETRY 10
-+
-+#define OS_HANDLE_MAGIC 0x1234abcd
-+#define BCM_MEM_FILENAME_LEN 24
-+
-+typedef struct bcm_mem_link {
-+ struct bcm_mem_link *prev;
-+ struct bcm_mem_link *next;
-+ uint size;
-+ int line;
-+ char file[BCM_MEM_FILENAME_LEN];
-+} bcm_mem_link_t;
-+
-+struct os_handle {
-+ uint magic;
-+ void *pdev;
-+ uint malloced;
-+ uint failed;
-+ bcm_mem_link_t *dbgmem_list;
-+};
-+
-+uint32
-+osl_pci_read_config(osl_t *osh, uint offset, uint size)
-+{
-+ uint val;
-+ uint retry=PCI_CFG_RETRY;
-+
-+ ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
-+
-+ /* only 4byte access supported */
-+ ASSERT(size == 4);
-+
-+ do {
-+ pci_read_config_dword(osh->pdev, offset, &val);
-+ if (val != 0xffffffff)
-+ break;
-+ } while (retry--);
-+
-+
-+ return (val);
-+}
-+
-+void
-+osl_pci_write_config(osl_t *osh, uint offset, uint size, uint val)
-+{
-+ uint retry=PCI_CFG_RETRY;
-+
-+ ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
-+
-+ /* only 4byte access supported */
-+ ASSERT(size == 4);
-+
-+ do {
-+ pci_write_config_dword(osh->pdev, offset, val);
-+ if (offset!=PCI_BAR0_WIN)
-+ break;
-+ if (osl_pci_read_config(osh,offset,size) == val)
-+ break;
-+ } while (retry--);
-+
-+}
-+
-+void
-+osl_delay(uint usec)
-+{
-+ uint d;
-+
-+ while (usec > 0) {
-+ d = MIN(usec, 1000);
-+ udelay(d);
-+ usec -= d;
-+ }
-+}
-+
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/broadcom/Makefile linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/Makefile
---- linux-2.6.16/arch/mips/bcm947xx/broadcom/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/Makefile 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,6 @@
-+#
-+# Makefile for the BCM47xx specific kernel interface routines
-+# under Linux.
-+#
-+
-+obj-y := sbutils.o linux_osl.o bcmsrom.o bcmutils.o sbmips.o sbpci.o sflash.o nvram.o cfe_env.o
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/broadcom/nvram.c linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/nvram.c
---- linux-2.6.16/arch/mips/bcm947xx/broadcom/nvram.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/nvram.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,192 @@
-+/*
-+ * NVRAM variable manipulation (Linux kernel half)
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/string.h>
-+#include <linux/interrupt.h>
-+#include <linux/spinlock.h>
-+#include <linux/slab.h>
-+#include <asm/bootinfo.h>
-+#include <asm/addrspace.h>
-+#include <asm/io.h>
-+#include <asm/uaccess.h>
-+
-+#include <typedefs.h>
-+#include <bcmendian.h>
-+#include <bcmnvram.h>
-+#include <bcmutils.h>
-+#include <sbconfig.h>
-+#include <sbchipc.h>
-+#include <sbutils.h>
-+#include <sbmips.h>
-+#include <sflash.h>
-+
-+/* In BSS to minimize text size and page aligned so it can be mmap()-ed */
-+static char nvram_buf[NVRAM_SPACE] __attribute__((aligned(PAGE_SIZE)));
-+
-+/* Global SB handle */
-+extern void *sbh;
-+extern spinlock_t bcm947xx_sbh_lock;
-+static int cfe_env;
-+
-+extern char *cfe_env_get(char *nv_buf, const char *name);
-+
-+
-+/* Convenience */
-+#define sbh_lock bcm947xx_sbh_lock
-+#define KB * 1024
-+#define MB * 1024 * 1024
-+
-+/* Probe for NVRAM header */
-+static void __init
-+early_nvram_init(void)
-+{
-+ struct nvram_header *header;
-+ chipcregs_t *cc;
-+ struct sflash *info = NULL;
-+ int i;
-+ uint32 base, off, lim;
-+ u32 *src, *dst;
-+
-+ cfe_env = 0;
-+ if ((cc = sb_setcore(sbh, SB_CC, 0)) != NULL) {
-+ base = KSEG1ADDR(SB_FLASH2);
-+ switch (readl(&cc->capabilities) & CAP_FLASH_MASK) {
-+ case PFLASH:
-+ lim = SB_FLASH2_SZ;
-+ break;
-+
-+ case SFLASH_ST:
-+ case SFLASH_AT:
-+ if ((info = sflash_init(cc)) == NULL)
-+ return;
-+ lim = info->size;
-+ break;
-+
-+ case FLASH_NONE:
-+ default:
-+ return;
-+ }
-+ } else {
-+ /* extif assumed, Stop at 4 MB */
-+ base = KSEG1ADDR(SB_FLASH1);
-+ lim = SB_FLASH1_SZ;
-+ }
-+
-+ /* XXX: hack for supporting the CFE environment stuff on WGT634U */
-+ src = (u32 *) KSEG1ADDR(base + 8 * 1024 * 1024 - 0x2000);
-+ dst = (u32 *) nvram_buf;
-+ if ((lim == 0x02000000) && ((*src & 0xff00ff) == 0x000001)) {
-+ printk("early_nvram_init: WGT634U NVRAM found.\n");
-+
-+ for (i = 0; i < 0x1ff0; i++) {
-+ if (*src == 0xFFFFFFFF)
-+ break;
-+ *dst++ = *src++;
-+ }
-+ cfe_env = 1;
-+ return;
-+ }
-+
-+ off = FLASH_MIN;
-+ while (off <= lim) {
-+ /* Windowed flash access */
-+ header = (struct nvram_header *) KSEG1ADDR(base + off - NVRAM_SPACE);
-+ if (header->magic == NVRAM_MAGIC)
-+ goto found;
-+ off <<= 1;
-+ }
-+
-+ /* Try embedded NVRAM at 4 KB and 1 KB as last resorts */
-+ header = (struct nvram_header *) KSEG1ADDR(base + 4 KB);
-+ if (header->magic == NVRAM_MAGIC)
-+ goto found;
-+
-+ header = (struct nvram_header *) KSEG1ADDR(base + 1 KB);
-+ if (header->magic == NVRAM_MAGIC)
-+ goto found;
-+
-+ return;
-+
-+found:
-+ src = (u32 *) header;
-+ dst = (u32 *) nvram_buf;
-+ for (i = 0; i < sizeof(struct nvram_header); i += 4)
-+ *dst++ = *src++;
-+ for (; i < header->len && i < NVRAM_SPACE; i += 4)
-+ *dst++ = ltoh32(*src++);
-+}
-+
-+/* Early (before mm or mtd) read-only access to NVRAM */
-+char * __init early_nvram_get(const char *name)
-+{
-+ char *var, *value, *end, *eq;
-+
-+ if (!name)
-+ return NULL;
-+
-+ /* Too early? */
-+ if (sbh == NULL)
-+ return NULL;
-+
-+ if (!nvram_buf[0])
-+ early_nvram_init();
-+
-+ if (cfe_env)
-+ return cfe_env_get(nvram_buf, name);
-+
-+ /* Look for name=value and return value */
-+ var = &nvram_buf[sizeof(struct nvram_header)];
-+ end = nvram_buf + sizeof(nvram_buf) - 2;
-+ end[0] = end[1] = '\0';
-+ for (; *var; var = value + strlen(value) + 1) {
-+ if (!(eq = strchr(var, '=')))
-+ break;
-+ value = eq + 1;
-+ if ((eq - var) == strlen(name) && strncmp(var, name, (eq - var)) == 0)
-+ return value;
-+ }
-+
-+ return NULL;
-+}
-+
-+char *nvram_get(const char *name)
-+{
-+ char *var, *value, *end, *eq;
-+
-+ if (!name)
-+ return NULL;
-+
-+ if (!nvram_buf[0])
-+ return NULL;
-+
-+ /* Look for name=value and return value */
-+ var = &nvram_buf[sizeof(struct nvram_header)];
-+ end = nvram_buf + sizeof(nvram_buf) - 2;
-+ end[0] = end[1] = '\0';
-+ for (; *var; var = value + strlen(value) + 1) {
-+ if (!(eq = strchr(var, '=')))
-+ break;
-+ value = eq + 1;
-+ if ((eq - var) == strlen(name) && strncmp(var, name, (eq - var)) == 0)
-+ return value;
-+ }
-+
-+ return NULL;
-+}
-+
-+EXPORT_SYMBOL(nvram_get);
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/broadcom/sbmips.c linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/sbmips.c
---- linux-2.6.16/arch/mips/bcm947xx/broadcom/sbmips.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/sbmips.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,1055 @@
-+/*
-+ * BCM47XX Sonics SiliconBackplane MIPS core routines
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <sbutils.h>
-+#include <bcmdevs.h>
-+#include <bcmnvram.h>
-+#include <bcmutils.h>
-+#include <hndmips.h>
-+#include <sbconfig.h>
-+#include <sbextif.h>
-+#include <sbchipc.h>
-+#include <sbmemc.h>
-+#include <mipsinc.h>
-+#include <sbutils.h>
-+
-+/*
-+ * Returns TRUE if an external UART exists at the given base
-+ * register.
-+ */
-+static bool
-+BCMINITFN(serial_exists)(uint8 *regs)
-+{
-+ uint8 save_mcr, status1;
-+
-+ save_mcr = R_REG(&regs[UART_MCR]);
-+ W_REG(&regs[UART_MCR], UART_MCR_LOOP | 0x0a);
-+ status1 = R_REG(&regs[UART_MSR]) & 0xf0;
-+ W_REG(&regs[UART_MCR], save_mcr);
-+
-+ return (status1 == 0x90);
-+}
-+
-+/*
-+ * Initializes UART access. The callback function will be called once
-+ * per found UART.
-+ */
-+void
-+BCMINITFN(sb_serial_init)(sb_t *sbh, void (*add)(void *regs, uint irq, uint baud_base, uint reg_shift))
-+{
-+ void *regs;
-+ ulong base;
-+ uint irq;
-+ int i, n;
-+
-+ if ((regs = sb_setcore(sbh, SB_EXTIF, 0))) {
-+ extifregs_t *eir = (extifregs_t *) regs;
-+ sbconfig_t *sb;
-+
-+ /* Determine external UART register base */
-+ sb = (sbconfig_t *)((ulong) eir + SBCONFIGOFF);
-+ base = EXTIF_CFGIF_BASE(sb_base(R_REG(&sb->sbadmatch1)));
-+
-+ /* Determine IRQ */
-+ irq = sb_irq(sbh);
-+
-+ /* Disable GPIO interrupt initially */
-+ W_REG(&eir->gpiointpolarity, 0);
-+ W_REG(&eir->gpiointmask, 0);
-+
-+ /* Search for external UARTs */
-+ n = 2;
-+ for (i = 0; i < 2; i++) {
-+ regs = (void *) REG_MAP(base + (i * 8), 8);
-+ if (BCMINIT(serial_exists)(regs)) {
-+ /* Set GPIO 1 to be the external UART IRQ */
-+ W_REG(&eir->gpiointmask, 2);
-+ if (add)
-+ add(regs, irq, 13500000, 0);
-+ }
-+ }
-+
-+ /* Add internal UART if enabled */
-+ if (R_REG(&eir->corecontrol) & CC_UE)
-+ if (add)
-+ add((void *) &eir->uartdata, irq, sb_clock(sbh), 2);
-+ } else if ((regs = sb_setcore(sbh, SB_CC, 0))) {
-+ chipcregs_t *cc = (chipcregs_t *) regs;
-+ uint32 rev, cap, pll, baud_base, div;
-+
-+ /* Determine core revision and capabilities */
-+ rev = sb_corerev(sbh);
-+ cap = R_REG(&cc->capabilities);
-+ pll = cap & CAP_PLL_MASK;
-+
-+ /* Determine IRQ */
-+ irq = sb_irq(sbh);
-+
-+ if (pll == PLL_TYPE1) {
-+ /* PLL clock */
-+ baud_base = sb_clock_rate(pll,
-+ R_REG(&cc->clockcontrol_n),
-+ R_REG(&cc->clockcontrol_m2));
-+ div = 1;
-+ } else {
-+ if (rev >= 11) {
-+ /* Fixed ALP clock */
-+ baud_base = 20000000;
-+ div = 1;
-+ /* Set the override bit so we don't divide it */
-+ W_REG(&cc->corecontrol, CC_UARTCLKO);
-+ } else if (rev >= 3) {
-+ /* Internal backplane clock */
-+ baud_base = sb_clock(sbh);
-+ div = 2; /* Minimum divisor */
-+ W_REG(&cc->clkdiv,
-+ ((R_REG(&cc->clkdiv) & ~CLKD_UART) | div));
-+ } else {
-+ /* Fixed internal backplane clock */
-+ baud_base = 88000000;
-+ div = 48;
-+ }
-+
-+ /* Clock source depends on strapping if UartClkOverride is unset */
-+ if ((rev > 0) &&
-+ ((R_REG(&cc->corecontrol) & CC_UARTCLKO) == 0)) {
-+ if ((cap & CAP_UCLKSEL) == CAP_UINTCLK) {
-+ /* Internal divided backplane clock */
-+ baud_base /= div;
-+ } else {
-+ /* Assume external clock of 1.8432 MHz */
-+ baud_base = 1843200;
-+ }
-+ }
-+ }
-+
-+ /* Add internal UARTs */
-+ n = cap & CAP_UARTS_MASK;
-+ for (i = 0; i < n; i++) {
-+ /* Register offset changed after revision 0 */
-+ if (rev)
-+ regs = (void *)((ulong) &cc->uart0data + (i * 256));
-+ else
-+ regs = (void *)((ulong) &cc->uart0data + (i * 8));
-+
-+ if (add)
-+ add(regs, irq, baud_base, 0);
-+ }
-+ }
-+}
-+
-+/*
-+ * Initialize jtag master and return handle for
-+ * jtag_rwreg. Returns NULL on failure.
-+ */
-+void *
-+sb_jtagm_init(sb_t *sbh, uint clkd, bool exttap)
-+{
-+ void *regs;
-+
-+ if ((regs = sb_setcore(sbh, SB_CC, 0)) != NULL) {
-+ chipcregs_t *cc = (chipcregs_t *) regs;
-+ uint32 tmp;
-+
-+ /*
-+ * Determine jtagm availability from
-+ * core revision and capabilities.
-+ */
-+ tmp = sb_corerev(sbh);
-+ /*
-+ * Corerev 10 has jtagm, but the only chip
-+ * with it does not have a mips, and
-+ * the layout of the jtagcmd register is
-+ * different. We'll only accept >= 11.
-+ */
-+ if (tmp < 11)
-+ return (NULL);
-+
-+ tmp = R_REG(&cc->capabilities);
-+ if ((tmp & CAP_JTAGP) == 0)
-+ return (NULL);
-+
-+ /* Set clock divider if requested */
-+ if (clkd != 0) {
-+ tmp = R_REG(&cc->clkdiv);
-+ tmp = (tmp & ~CLKD_JTAG) |
-+ ((clkd << CLKD_JTAG_SHIFT) & CLKD_JTAG);
-+ W_REG(&cc->clkdiv, tmp);
-+ }
-+
-+ /* Enable jtagm */
-+ tmp = JCTRL_EN | (exttap ? JCTRL_EXT_EN : 0);
-+ W_REG(&cc->jtagctrl, tmp);
-+ }
-+
-+ return (regs);
-+}
-+
-+void
-+sb_jtagm_disable(void *h)
-+{
-+ chipcregs_t *cc = (chipcregs_t *)h;
-+
-+ W_REG(&cc->jtagctrl, R_REG(&cc->jtagctrl) & ~JCTRL_EN);
-+}
-+
-+/*
-+ * Read/write a jtag register. Assumes a target with
-+ * 8 bit IR and 32 bit DR.
-+ */
-+#define IRWIDTH 8
-+#define DRWIDTH 32
-+uint32
-+jtag_rwreg(void *h, uint32 ir, uint32 dr)
-+{
-+ chipcregs_t *cc = (chipcregs_t *) h;
-+ uint32 tmp;
-+
-+ W_REG(&cc->jtagir, ir);
-+ W_REG(&cc->jtagdr, dr);
-+ tmp = JCMD_START | JCMD_ACC_IRDR |
-+ ((IRWIDTH - 1) << JCMD_IRW_SHIFT) |
-+ (DRWIDTH - 1);
-+ W_REG(&cc->jtagcmd, tmp);
-+ while (((tmp = R_REG(&cc->jtagcmd)) & JCMD_BUSY) == JCMD_BUSY) {
-+ /* OSL_DELAY(1); */
-+ }
-+
-+ tmp = R_REG(&cc->jtagdr);
-+ return (tmp);
-+}
-+
-+/* Returns the SB interrupt flag of the current core. */
-+uint32
-+sb_flag(sb_t *sbh)
-+{
-+ void *regs;
-+ sbconfig_t *sb;
-+
-+ regs = sb_coreregs(sbh);
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+
-+ return (R_REG(&sb->sbtpsflag) & SBTPS_NUM0_MASK);
-+}
-+
-+static const uint32 sbips_int_mask[] = {
-+ 0,
-+ SBIPS_INT1_MASK,
-+ SBIPS_INT2_MASK,
-+ SBIPS_INT3_MASK,
-+ SBIPS_INT4_MASK
-+};
-+
-+static const uint32 sbips_int_shift[] = {
-+ 0,
-+ 0,
-+ SBIPS_INT2_SHIFT,
-+ SBIPS_INT3_SHIFT,
-+ SBIPS_INT4_SHIFT
-+};
-+
-+/*
-+ * Returns the MIPS IRQ assignment of the current core. If unassigned,
-+ * 0 is returned.
-+ */
-+uint
-+sb_irq(sb_t *sbh)
-+{
-+ uint idx;
-+ void *regs;
-+ sbconfig_t *sb;
-+ uint32 flag, sbipsflag;
-+ uint irq = 0;
-+
-+ flag = sb_flag(sbh);
-+
-+ idx = sb_coreidx(sbh);
-+
-+ if ((regs = sb_setcore(sbh, SB_MIPS, 0)) ||
-+ (regs = sb_setcore(sbh, SB_MIPS33, 0))) {
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+
-+ /* sbipsflag specifies which core is routed to interrupts 1 to 4 */
-+ sbipsflag = R_REG(&sb->sbipsflag);
-+ for (irq = 1; irq <= 4; irq++) {
-+ if (((sbipsflag & sbips_int_mask[irq]) >> sbips_int_shift[irq]) == flag)
-+ break;
-+ }
-+ if (irq == 5)
-+ irq = 0;
-+ }
-+
-+ sb_setcoreidx(sbh, idx);
-+
-+ return irq;
-+}
-+
-+/* Clears the specified MIPS IRQ. */
-+static void
-+BCMINITFN(sb_clearirq)(sb_t *sbh, uint irq)
-+{
-+ void *regs;
-+ sbconfig_t *sb;
-+
-+ if (!(regs = sb_setcore(sbh, SB_MIPS, 0)) &&
-+ !(regs = sb_setcore(sbh, SB_MIPS33, 0)))
-+ ASSERT(regs);
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+
-+ if (irq == 0)
-+ W_REG(&sb->sbintvec, 0);
-+ else
-+ OR_REG(&sb->sbipsflag, sbips_int_mask[irq]);
-+}
-+
-+/*
-+ * Assigns the specified MIPS IRQ to the specified core. Shared MIPS
-+ * IRQ 0 may be assigned more than once.
-+ */
-+static void
-+BCMINITFN(sb_setirq)(sb_t *sbh, uint irq, uint coreid, uint coreunit)
-+{
-+ void *regs;
-+ sbconfig_t *sb;
-+ uint32 flag;
-+
-+ regs = sb_setcore(sbh, coreid, coreunit);
-+ ASSERT(regs);
-+ flag = sb_flag(sbh);
-+
-+ if (!(regs = sb_setcore(sbh, SB_MIPS, 0)) &&
-+ !(regs = sb_setcore(sbh, SB_MIPS33, 0)))
-+ ASSERT(regs);
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+
-+ if (irq == 0)
-+ OR_REG(&sb->sbintvec, 1 << flag);
-+ else {
-+ flag <<= sbips_int_shift[irq];
-+ ASSERT(!(flag & ~sbips_int_mask[irq]));
-+ flag |= R_REG(&sb->sbipsflag) & ~sbips_int_mask[irq];
-+ W_REG(&sb->sbipsflag, flag);
-+ }
-+}
-+
-+/*
-+ * Initializes clocks and interrupts. SB and NVRAM access must be
-+ * initialized prior to calling.
-+ */
-+void
-+BCMINITFN(sb_mips_init)(sb_t *sbh)
-+{
-+ ulong hz, ns, tmp;
-+ extifregs_t *eir;
-+ chipcregs_t *cc;
-+ char *value;
-+ uint irq;
-+
-+ /* Figure out current SB clock speed */
-+ if ((hz = sb_clock(sbh)) == 0)
-+ hz = 100000000;
-+ ns = 1000000000 / hz;
-+
-+ /* Setup external interface timing */
-+ if ((eir = sb_setcore(sbh, SB_EXTIF, 0))) {
-+ /* Initialize extif so we can get to the LEDs and external UART */
-+ W_REG(&eir->prog_config, CF_EN);
-+
-+ /* Set timing for the flash */
-+ tmp = CEIL(10, ns) << FW_W3_SHIFT; /* W3 = 10nS */
-+ tmp = tmp | (CEIL(40, ns) << FW_W1_SHIFT); /* W1 = 40nS */
-+ tmp = tmp | CEIL(120, ns); /* W0 = 120nS */
-+ W_REG(&eir->prog_waitcount, tmp); /* 0x01020a0c for a 100Mhz clock */
-+
-+ /* Set programmable interface timing for external uart */
-+ tmp = CEIL(10, ns) << FW_W3_SHIFT; /* W3 = 10nS */
-+ tmp = tmp | (CEIL(20, ns) << FW_W2_SHIFT); /* W2 = 20nS */
-+ tmp = tmp | (CEIL(100, ns) << FW_W1_SHIFT); /* W1 = 100nS */
-+ tmp = tmp | CEIL(120, ns); /* W0 = 120nS */
-+ W_REG(&eir->prog_waitcount, tmp); /* 0x01020a0c for a 100Mhz clock */
-+ } else if ((cc = sb_setcore(sbh, SB_CC, 0))) {
-+ /* set register for external IO to control LED. */
-+ W_REG(&cc->prog_config, 0x11);
-+ tmp = CEIL(10, ns) << FW_W3_SHIFT; /* W3 = 10nS */
-+ tmp = tmp | (CEIL(40, ns) << FW_W1_SHIFT); /* W1 = 40nS */
-+ tmp = tmp | CEIL(240, ns); /* W0 = 120nS */
-+ W_REG(&cc->prog_waitcount, tmp); /* 0x01020a0c for a 100Mhz clock */
-+
-+ /* Set timing for the flash */
-+ tmp = CEIL(10, ns) << FW_W3_SHIFT; /* W3 = 10nS */
-+ tmp |= CEIL(10, ns) << FW_W1_SHIFT; /* W1 = 10nS */
-+ tmp |= CEIL(120, ns); /* W0 = 120nS */
-+
-+ // Added by Chen-I for 5365
-+ if (BCMINIT(sb_chip)(sbh) == BCM5365_DEVICE_ID)
-+ {
-+ W_REG(&cc->flash_waitcount, tmp);
-+ W_REG(&cc->pcmcia_memwait, tmp);
-+ }
-+ else
-+ {
-+ if (sb_corerev(sbh) < 9)
-+ W_REG(&cc->flash_waitcount, tmp);
-+
-+ if ((sb_corerev(sbh) < 9) ||
-+ ((BCMINIT(sb_chip)(sbh) == BCM5350_DEVICE_ID) && BCMINIT(sb_chiprev)(sbh) == 0)) {
-+ W_REG(&cc->pcmcia_memwait, tmp);
-+ }
-+ }
-+ // Added by Chen-I & Yen for enabling 5350 EXTIF
-+ if (BCMINIT(sb_chip)(sbh) == BCM5350_DEVICE_ID)
-+ {
-+ /* Set programmable interface timing for external uart */
-+ tmp = CEIL(10, ns) << FW_W3_SHIFT; /* W3 = 10nS */
-+ tmp = tmp | (CEIL(20, ns) << FW_W2_SHIFT); /* W2 = 20nS */
-+ tmp = tmp | (CEIL(100, ns) << FW_W1_SHIFT); /* W1 = 100nS */
-+ tmp = tmp | CEIL(120, ns); /* W0 = 120nS */
-+ W_REG(&cc->prog_waitcount, tmp); /* 0x01020a0c for a 100Mhz clock */
-+ }
-+ }
-+
-+ /* Chip specific initialization */
-+ switch (BCMINIT(sb_chip)(sbh)) {
-+ case BCM4710_DEVICE_ID:
-+ /* Clear interrupt map */
-+ for (irq = 0; irq <= 4; irq++)
-+ BCMINIT(sb_clearirq)(sbh, irq);
-+ BCMINIT(sb_setirq)(sbh, 0, SB_CODEC, 0);
-+ BCMINIT(sb_setirq)(sbh, 0, SB_EXTIF, 0);
-+ BCMINIT(sb_setirq)(sbh, 2, SB_ENET, 1);
-+ BCMINIT(sb_setirq)(sbh, 3, SB_ILINE20, 0);
-+ BCMINIT(sb_setirq)(sbh, 4, SB_PCI, 0);
-+ ASSERT(eir);
-+ value = BCMINIT(early_nvram_get)("et0phyaddr");
-+ if (value && !strcmp(value, "31")) {
-+ /* Enable internal UART */
-+ W_REG(&eir->corecontrol, CC_UE);
-+ /* Give USB its own interrupt */
-+ BCMINIT(sb_setirq)(sbh, 1, SB_USB, 0);
-+ } else {
-+ /* Disable internal UART */
-+ W_REG(&eir->corecontrol, 0);
-+ /* Give Ethernet its own interrupt */
-+ BCMINIT(sb_setirq)(sbh, 1, SB_ENET, 0);
-+ BCMINIT(sb_setirq)(sbh, 0, SB_USB, 0);
-+ }
-+ break;
-+ case BCM5350_DEVICE_ID:
-+ /* Clear interrupt map */
-+ for (irq = 0; irq <= 4; irq++)
-+ BCMINIT(sb_clearirq)(sbh, irq);
-+ BCMINIT(sb_setirq)(sbh, 0, SB_CC, 0);
-+ BCMINIT(sb_setirq)(sbh, 1, SB_D11, 0);
-+ BCMINIT(sb_setirq)(sbh, 2, SB_ENET, 0);
-+ BCMINIT(sb_setirq)(sbh, 3, SB_PCI, 0);
-+ BCMINIT(sb_setirq)(sbh, 4, SB_USB, 0);
-+ break;
-+ }
-+}
-+
-+uint32
-+BCMINITFN(sb_mips_clock)(sb_t *sbh)
-+{
-+ extifregs_t *eir;
-+ chipcregs_t *cc;
-+ uint32 n, m;
-+ uint idx;
-+ uint32 pll_type, rate = 0;
-+
-+ /* get index of the current core */
-+ idx = sb_coreidx(sbh);
-+ pll_type = PLL_TYPE1;
-+
-+ /* switch to extif or chipc core */
-+ if ((eir = (extifregs_t *) sb_setcore(sbh, SB_EXTIF, 0))) {
-+ n = R_REG(&eir->clockcontrol_n);
-+ m = R_REG(&eir->clockcontrol_sb);
-+ } else if ((cc = (chipcregs_t *) sb_setcore(sbh, SB_CC, 0))) {
-+ pll_type = R_REG(&cc->capabilities) & CAP_PLL_MASK;
-+ n = R_REG(&cc->clockcontrol_n);
-+ if ((pll_type == PLL_TYPE2) ||
-+ (pll_type == PLL_TYPE4) ||
-+ (pll_type == PLL_TYPE6) ||
-+ (pll_type == PLL_TYPE7))
-+ m = R_REG(&cc->clockcontrol_mips);
-+ else if (pll_type == PLL_TYPE5) {
-+ rate = 200000000;
-+ goto out;
-+ }
-+ else if (pll_type == PLL_TYPE3) {
-+ if (BCMINIT(sb_chip)(sbh) == BCM5365_DEVICE_ID) { /* 5365 is also type3 */
-+ rate = 200000000;
-+ goto out;
-+ } else
-+ m = R_REG(&cc->clockcontrol_m2); /* 5350 uses m2 to control mips */
-+ } else
-+ m = R_REG(&cc->clockcontrol_sb);
-+ } else
-+ goto out;
-+
-+ // Added by Chen-I for 5365
-+ if (BCMINIT(sb_chip)(sbh) == BCM5365_DEVICE_ID)
-+ rate = 100000000;
-+ else
-+ /* calculate rate */
-+ rate = sb_clock_rate(pll_type, n, m);
-+
-+ if (pll_type == PLL_TYPE6)
-+ rate = SB2MIPS_T6(rate);
-+
-+out:
-+ /* switch back to previous core */
-+ sb_setcoreidx(sbh, idx);
-+
-+ return rate;
-+}
-+
-+#define ALLINTS (IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4)
-+
-+static void
-+BCMINITFN(handler)(void)
-+{
-+ /* Step 11 */
-+ __asm__ (
-+ ".set\tmips32\n\t"
-+ "ssnop\n\t"
-+ "ssnop\n\t"
-+ /* Disable interrupts */
-+ /* MTC0(C0_STATUS, 0, MFC0(C0_STATUS, 0) & ~(ALLINTS | STO_IE)); */
-+ "mfc0 $15, $12\n\t"
-+ /* Just a Hack to not to use reg 'at' which was causing problems on 4704 A2 */
-+ "li $14, -31746\n\t"
-+ "and $15, $15, $14\n\t"
-+ "mtc0 $15, $12\n\t"
-+ "eret\n\t"
-+ "nop\n\t"
-+ "nop\n\t"
-+ ".set\tmips0"
-+ );
-+}
-+
-+/* The following MUST come right after handler() */
-+static void
-+BCMINITFN(afterhandler)(void)
-+{
-+}
-+
-+/*
-+ * Set the MIPS, backplane and PCI clocks as closely as possible.
-+ */
-+bool
-+BCMINITFN(sb_mips_setclock)(sb_t *sbh, uint32 mipsclock, uint32 sbclock, uint32 pciclock)
-+{
-+ extifregs_t *eir = NULL;
-+ chipcregs_t *cc = NULL;
-+ mipsregs_t *mipsr = NULL;
-+ volatile uint32 *clockcontrol_n, *clockcontrol_sb, *clockcontrol_pci, *clockcontrol_m2;
-+ uint32 orig_n, orig_sb, orig_pci, orig_m2, orig_mips, orig_ratio_parm, orig_ratio_cfg;
-+ uint32 pll_type, sync_mode;
-+ uint ic_size, ic_lsize;
-+ uint idx, i;
-+ typedef struct {
-+ uint32 mipsclock;
-+ uint16 n;
-+ uint32 sb;
-+ uint32 pci33;
-+ uint32 pci25;
-+ } n3m_table_t;
-+ static n3m_table_t BCMINITDATA(type1_table)[] = {
-+ { 96000000, 0x0303, 0x04020011, 0x11030011, 0x11050011 }, /* 96.000 32.000 24.000 */
-+ { 100000000, 0x0009, 0x04020011, 0x11030011, 0x11050011 }, /* 100.000 33.333 25.000 */
-+ { 104000000, 0x0802, 0x04020011, 0x11050009, 0x11090009 }, /* 104.000 31.200 24.960 */
-+ { 108000000, 0x0403, 0x04020011, 0x11050009, 0x02000802 }, /* 108.000 32.400 24.923 */
-+ { 112000000, 0x0205, 0x04020011, 0x11030021, 0x02000403 }, /* 112.000 32.000 24.889 */
-+ { 115200000, 0x0303, 0x04020009, 0x11030011, 0x11050011 }, /* 115.200 32.000 24.000 */
-+ { 120000000, 0x0011, 0x04020011, 0x11050011, 0x11090011 }, /* 120.000 30.000 24.000 */
-+ { 124800000, 0x0802, 0x04020009, 0x11050009, 0x11090009 }, /* 124.800 31.200 24.960 */
-+ { 128000000, 0x0305, 0x04020011, 0x11050011, 0x02000305 }, /* 128.000 32.000 24.000 */
-+ { 132000000, 0x0603, 0x04020011, 0x11050011, 0x02000305 }, /* 132.000 33.000 24.750 */
-+ { 136000000, 0x0c02, 0x04020011, 0x11090009, 0x02000603 }, /* 136.000 32.640 24.727 */
-+ { 140000000, 0x0021, 0x04020011, 0x11050021, 0x02000c02 }, /* 140.000 30.000 24.706 */
-+ { 144000000, 0x0405, 0x04020011, 0x01020202, 0x11090021 }, /* 144.000 30.857 24.686 */
-+ { 150857142, 0x0605, 0x04020021, 0x02000305, 0x02000605 }, /* 150.857 33.000 24.000 */
-+ { 152000000, 0x0e02, 0x04020011, 0x11050021, 0x02000e02 }, /* 152.000 32.571 24.000 */
-+ { 156000000, 0x0802, 0x04020005, 0x11050009, 0x11090009 }, /* 156.000 31.200 24.960 */
-+ { 160000000, 0x0309, 0x04020011, 0x11090011, 0x02000309 }, /* 160.000 32.000 24.000 */
-+ { 163200000, 0x0c02, 0x04020009, 0x11090009, 0x02000603 }, /* 163.200 32.640 24.727 */
-+ { 168000000, 0x0205, 0x04020005, 0x11030021, 0x02000403 }, /* 168.000 32.000 24.889 */
-+ { 176000000, 0x0602, 0x04020003, 0x11050005, 0x02000602 }, /* 176.000 33.000 24.000 */
-+ };
-+ typedef struct {
-+ uint32 mipsclock;
-+ uint16 n;
-+ uint32 m2; /* that is the clockcontrol_m2 */
-+ } type3_table_t;
-+ static type3_table_t type3_table[] = { /* for 5350, mips clock is always double sb clock */
-+ { 150000000, 0x311, 0x4020005 },
-+ { 200000000, 0x311, 0x4020003 },
-+ };
-+ typedef struct {
-+ uint32 mipsclock;
-+ uint32 sbclock;
-+ uint16 n;
-+ uint32 sb;
-+ uint32 pci33;
-+ uint32 m2;
-+ uint32 m3;
-+ uint32 ratio_cfg;
-+ uint32 ratio_parm;
-+ } n4m_table_t;
-+
-+ static n4m_table_t BCMINITDATA(type2_table)[] = {
-+ { 180000000, 80000000, 0x0403, 0x01010000, 0x01020300, 0x01020600, 0x05000100, 8, 0x012a00a9 },
-+ { 180000000, 90000000, 0x0403, 0x01000100, 0x01020300, 0x01000100, 0x05000100, 11, 0x0aaa0555 },
-+ { 200000000, 100000000, 0x0303, 0x02010000, 0x02040001, 0x02010000, 0x06000001, 11, 0x0aaa0555 },
-+ { 211200000, 105600000, 0x0902, 0x01000200, 0x01030400, 0x01000200, 0x05000200, 11, 0x0aaa0555 },
-+ { 220800000, 110400000, 0x1500, 0x01000200, 0x01030400, 0x01000200, 0x05000200, 11, 0x0aaa0555 },
-+ { 230400000, 115200000, 0x0604, 0x01000200, 0x01020600, 0x01000200, 0x05000200, 11, 0x0aaa0555 },
-+ { 234000000, 104000000, 0x0b01, 0x01010000, 0x01010700, 0x01020600, 0x05000100, 8, 0x012a00a9 },
-+ { 240000000, 120000000, 0x0803, 0x01000200, 0x01020600, 0x01000200, 0x05000200, 11, 0x0aaa0555 },
-+ { 252000000, 126000000, 0x0504, 0x01000100, 0x01020500, 0x01000100, 0x05000100, 11, 0x0aaa0555 },
-+ { 264000000, 132000000, 0x0903, 0x01000200, 0x01020700, 0x01000200, 0x05000200, 11, 0x0aaa0555 },
-+ { 270000000, 120000000, 0x0703, 0x01010000, 0x01030400, 0x01020600, 0x05000100, 8, 0x012a00a9 },
-+ { 276000000, 122666666, 0x1500, 0x01010000, 0x01030400, 0x01020600, 0x05000100, 8, 0x012a00a9 },
-+ { 280000000, 140000000, 0x0503, 0x01000000, 0x01010600, 0x01000000, 0x05000000, 11, 0x0aaa0555 },
-+ { 288000000, 128000000, 0x0604, 0x01010000, 0x01030400, 0x01020600, 0x05000100, 8, 0x012a00a9 },
-+ { 288000000, 144000000, 0x0404, 0x01000000, 0x01010600, 0x01000000, 0x05000000, 11, 0x0aaa0555 },
-+ { 300000000, 133333333, 0x0803, 0x01010000, 0x01020600, 0x01020600, 0x05000100, 8, 0x012a00a9 },
-+ { 300000000, 150000000, 0x0803, 0x01000100, 0x01020600, 0x01000100, 0x05000100, 11, 0x0aaa0555 }
-+ };
-+
-+ static n4m_table_t BCMINITDATA(type4_table)[] = {
-+ { 192000000, 96000000, 0x0702, 0x04000011, 0x11030011, 0x04000011, 0x04000003, 11, 0x0aaa0555 },
-+ { 198000000, 99000000, 0x0603, 0x11020005, 0x11030011, 0x11020005, 0x04000005, 11, 0x0aaa0555 },
-+ { 200000000, 100000000, 0x0009, 0x04020011, 0x11030011, 0x04020011, 0x04020003, 11, 0x0aaa0555 },
-+ { 204000000, 102000000, 0x0c02, 0x11020005, 0x01030303, 0x11020005, 0x04000005, 11, 0x0aaa0555 },
-+ { 208000000, 104000000, 0x0802, 0x11030002, 0x11090005, 0x11030002, 0x04000003, 11, 0x0aaa0555 },
-+ { 210000000, 105000000, 0x0209, 0x11020005, 0x01030303, 0x11020005, 0x04000005, 11, 0x0aaa0555 },
-+ { 216000000, 108000000, 0x0111, 0x11020005, 0x01030303, 0x11020005, 0x04000005, 11, 0x0aaa0555 },
-+ { 224000000, 112000000, 0x0205, 0x11030002, 0x02002103, 0x11030002, 0x04000003, 11, 0x0aaa0555 },
-+ { 228000000, 101333333, 0x0e02, 0x11030003, 0x11210005, 0x01030305, 0x04000005, 8, 0x012a00a9 },
-+ { 228000000, 114000000, 0x0e02, 0x11020005, 0x11210005, 0x11020005, 0x04000005, 11, 0x0aaa0555 },
-+ { 240000000, 102857143, 0x0109, 0x04000021, 0x01050203, 0x11030021, 0x04000003, 13, 0x254a14a9 },
-+ { 240000000, 120000000, 0x0109, 0x11030002, 0x01050203, 0x11030002, 0x04000003, 11, 0x0aaa0555 },
-+ { 252000000, 100800000, 0x0203, 0x04000009, 0x11050005, 0x02000209, 0x04000002, 9, 0x02520129 },
-+ { 252000000, 126000000, 0x0203, 0x04000005, 0x11050005, 0x04000005, 0x04000002, 11, 0x0aaa0555 },
-+ { 264000000, 132000000, 0x0602, 0x04000005, 0x11050005, 0x04000005, 0x04000002, 11, 0x0aaa0555 },
-+ { 272000000, 116571428, 0x0c02, 0x04000021, 0x02000909, 0x02000221, 0x04000003, 13, 0x254a14a9 },
-+ { 280000000, 120000000, 0x0209, 0x04000021, 0x01030303, 0x02000221, 0x04000003, 13, 0x254a14a9 },
-+ { 288000000, 123428571, 0x0111, 0x04000021, 0x01030303, 0x02000221, 0x04000003, 13, 0x254a14a9 },
-+ { 300000000, 120000000, 0x0009, 0x04000009, 0x01030203, 0x02000902, 0x04000002, 9, 0x02520129 },
-+ { 300000000, 150000000, 0x0009, 0x04000005, 0x01030203, 0x04000005, 0x04000002, 11, 0x0aaa0555 }
-+ };
-+
-+ static n4m_table_t BCMINITDATA(type7_table)[] = {
-+ { 183333333, 91666666, 0x0605, 0x04000011, 0x11030011, 0x04000011, 0x04000003, 11, 0x0aaa0555 },
-+ { 187500000, 93750000, 0x0a03, 0x04000011, 0x11030011, 0x04000011, 0x04000003, 11, 0x0aaa0555 },
-+ { 196875000, 98437500, 0x1003, 0x11020005, 0x11050011, 0x11020005, 0x04000005, 11, 0x0aaa0555 },
-+ { 200000000, 100000000, 0x0311, 0x04000011, 0x11030011, 0x04000009, 0x04000003, 11, 0x0aaa0555 },
-+ { 200000000, 100000000, 0x0311, 0x04020011, 0x11030011, 0x04020011, 0x04020003, 11, 0x0aaa0555 },
-+ { 206250000, 103125000, 0x1103, 0x11020005, 0x11050011, 0x11020005, 0x04000005, 11, 0x0aaa0555 },
-+ { 212500000, 106250000, 0x0c05, 0x11020005, 0x01030303, 0x11020005, 0x04000005, 11, 0x0aaa0555 },
-+ { 215625000, 107812500, 0x1203, 0x11090009, 0x11050005, 0x11020005, 0x04000005, 11, 0x0aaa0555 },
-+ { 216666666, 108333333, 0x0805, 0x11020003, 0x11030011, 0x11020003, 0x04000003, 11, 0x0aaa0555 },
-+ { 225000000, 112500000, 0x0d03, 0x11020003, 0x11030011, 0x11020003, 0x04000003, 11, 0x0aaa0555 },
-+ { 233333333, 116666666, 0x0905, 0x11020003, 0x11030011, 0x11020003, 0x04000003, 11, 0x0aaa0555 },
-+ { 237500000, 118750000, 0x0e05, 0x11020005, 0x11210005, 0x11020005, 0x04000005, 11, 0x0aaa0555 },
-+ { 240000000, 120000000, 0x0b11, 0x11020009, 0x11210009, 0x11020009, 0x04000009, 11, 0x0aaa0555 },
-+ { 250000000, 125000000, 0x0f03, 0x11020003, 0x11210003, 0x11020003, 0x04000003, 11, 0x0aaa0555 }
-+ };
-+
-+ ulong start, end, dst;
-+ bool ret = FALSE;
-+
-+ /* get index of the current core */
-+ idx = sb_coreidx(sbh);
-+ clockcontrol_m2 = NULL;
-+
-+ /* switch to extif or chipc core */
-+ if ((eir = (extifregs_t *) sb_setcore(sbh, SB_EXTIF, 0))) {
-+ pll_type = PLL_TYPE1;
-+ clockcontrol_n = &eir->clockcontrol_n;
-+ clockcontrol_sb = &eir->clockcontrol_sb;
-+ clockcontrol_pci = &eir->clockcontrol_pci;
-+ clockcontrol_m2 = &cc->clockcontrol_m2;
-+ } else if ((cc = (chipcregs_t *) sb_setcore(sbh, SB_CC, 0))) {
-+ pll_type = R_REG(&cc->capabilities) & CAP_PLL_MASK;
-+ if (pll_type == PLL_TYPE6) {
-+ clockcontrol_n = NULL;
-+ clockcontrol_sb = NULL;
-+ clockcontrol_pci = NULL;
-+ } else {
-+ clockcontrol_n = &cc->clockcontrol_n;
-+ clockcontrol_sb = &cc->clockcontrol_sb;
-+ clockcontrol_pci = &cc->clockcontrol_pci;
-+ clockcontrol_m2 = &cc->clockcontrol_m2;
-+ }
-+ } else
-+ goto done;
-+
-+ if (pll_type == PLL_TYPE6) {
-+ /* Silence compilers */
-+ orig_n = orig_sb = orig_pci = 0;
-+ } else {
-+ /* Store the current clock register values */
-+ orig_n = R_REG(clockcontrol_n);
-+ orig_sb = R_REG(clockcontrol_sb);
-+ orig_pci = R_REG(clockcontrol_pci);
-+ }
-+
-+ if (pll_type == PLL_TYPE1) {
-+ /* Keep the current PCI clock if not specified */
-+ if (pciclock == 0) {
-+ pciclock = sb_clock_rate(pll_type, R_REG(clockcontrol_n), R_REG(clockcontrol_pci));
-+ pciclock = (pciclock <= 25000000) ? 25000000 : 33000000;
-+ }
-+
-+ /* Search for the closest MIPS clock less than or equal to a preferred value */
-+ for (i = 0; i < ARRAYSIZE(BCMINIT(type1_table)); i++) {
-+ ASSERT(BCMINIT(type1_table)[i].mipsclock ==
-+ sb_clock_rate(pll_type, BCMINIT(type1_table)[i].n, BCMINIT(type1_table)[i].sb));
-+ if (BCMINIT(type1_table)[i].mipsclock > mipsclock)
-+ break;
-+ }
-+ if (i == 0) {
-+ ret = FALSE;
-+ goto done;
-+ } else {
-+ ret = TRUE;
-+ i--;
-+ }
-+ ASSERT(BCMINIT(type1_table)[i].mipsclock <= mipsclock);
-+
-+ /* No PLL change */
-+ if ((orig_n == BCMINIT(type1_table)[i].n) &&
-+ (orig_sb == BCMINIT(type1_table)[i].sb) &&
-+ (orig_pci == BCMINIT(type1_table)[i].pci33))
-+ goto done;
-+
-+ /* Set the PLL controls */
-+ W_REG(clockcontrol_n, BCMINIT(type1_table)[i].n);
-+ W_REG(clockcontrol_sb, BCMINIT(type1_table)[i].sb);
-+ if (pciclock == 25000000)
-+ W_REG(clockcontrol_pci, BCMINIT(type1_table)[i].pci25);
-+ else
-+ W_REG(clockcontrol_pci, BCMINIT(type1_table)[i].pci33);
-+
-+ /* Reset */
-+ sb_watchdog(sbh, 1);
-+
-+ while (1);
-+ } else if ((pll_type == PLL_TYPE3) &&
-+ (BCMINIT(sb_chip)(sbh) != BCM5365_DEVICE_ID)) {
-+ /* 5350 */
-+ /* Search for the closest MIPS clock less than or equal to a preferred value */
-+
-+ for (i = 0; i < ARRAYSIZE(type3_table); i++) {
-+ if (type3_table[i].mipsclock > mipsclock)
-+ break;
-+ }
-+ if (i == 0) {
-+ ret = FALSE;
-+ goto done;
-+ } else {
-+ ret = TRUE;
-+ i--;
-+ }
-+ ASSERT(type3_table[i].mipsclock <= mipsclock);
-+
-+ /* No PLL change */
-+ orig_m2 = R_REG(&cc->clockcontrol_m2);
-+ if ((orig_n == type3_table[i].n) &&
-+ (orig_m2 == type3_table[i].m2)) {
-+ goto done;
-+ }
-+
-+ /* Set the PLL controls */
-+ W_REG(clockcontrol_n, type3_table[i].n);
-+ W_REG(clockcontrol_m2, type3_table[i].m2);
-+
-+ /* Reset */
-+ sb_watchdog(sbh, 1);
-+ while (1);
-+ } else if ((pll_type == PLL_TYPE2) ||
-+ (pll_type == PLL_TYPE4) ||
-+ (pll_type == PLL_TYPE6) ||
-+ (pll_type == PLL_TYPE7)) {
-+ n4m_table_t *table = NULL, *te;
-+ uint tabsz = 0;
-+
-+ ASSERT(cc);
-+
-+ orig_mips = R_REG(&cc->clockcontrol_mips);
-+
-+ if (pll_type == PLL_TYPE6) {
-+ uint32 new_mips = 0;
-+
-+ ret = TRUE;
-+ if (mipsclock <= SB2MIPS_T6(CC_T6_M1))
-+ new_mips = CC_T6_MMASK;
-+
-+ if (orig_mips == new_mips)
-+ goto done;
-+
-+ W_REG(&cc->clockcontrol_mips, new_mips);
-+ goto end_fill;
-+ }
-+
-+ if (pll_type == PLL_TYPE2) {
-+ table = BCMINIT(type2_table);
-+ tabsz = ARRAYSIZE(BCMINIT(type2_table));
-+ } else if (pll_type == PLL_TYPE4) {
-+ table = BCMINIT(type4_table);
-+ tabsz = ARRAYSIZE(BCMINIT(type4_table));
-+ } else if (pll_type == PLL_TYPE7) {
-+ table = BCMINIT(type7_table);
-+ tabsz = ARRAYSIZE(BCMINIT(type7_table));
-+ } else
-+ ASSERT("No table for plltype" == NULL);
-+
-+ /* Store the current clock register values */
-+ orig_m2 = R_REG(&cc->clockcontrol_m2);
-+ orig_ratio_parm = 0;
-+ orig_ratio_cfg = 0;
-+
-+ /* Look up current ratio */
-+ for (i = 0; i < tabsz; i++) {
-+ if ((orig_n == table[i].n) &&
-+ (orig_sb == table[i].sb) &&
-+ (orig_pci == table[i].pci33) &&
-+ (orig_m2 == table[i].m2) &&
-+ (orig_mips == table[i].m3)) {
-+ orig_ratio_parm = table[i].ratio_parm;
-+ orig_ratio_cfg = table[i].ratio_cfg;
-+ break;
-+ }
-+ }
-+
-+ /* Search for the closest MIPS clock greater or equal to a preferred value */
-+ for (i = 0; i < tabsz; i++) {
-+ ASSERT(table[i].mipsclock ==
-+ sb_clock_rate(pll_type, table[i].n, table[i].m3));
-+ if ((mipsclock <= table[i].mipsclock) &&
-+ ((sbclock == 0) || (sbclock <= table[i].sbclock)))
-+ break;
-+ }
-+ if (i == tabsz) {
-+ ret = FALSE;
-+ goto done;
-+ } else {
-+ te = &table[i];
-+ ret = TRUE;
-+ }
-+
-+ /* No PLL change */
-+ if ((orig_n == te->n) &&
-+ (orig_sb == te->sb) &&
-+ (orig_pci == te->pci33) &&
-+ (orig_m2 == te->m2) &&
-+ (orig_mips == te->m3))
-+ goto done;
-+
-+ /* Set the PLL controls */
-+ W_REG(clockcontrol_n, te->n);
-+ W_REG(clockcontrol_sb, te->sb);
-+ W_REG(clockcontrol_pci, te->pci33);
-+ W_REG(&cc->clockcontrol_m2, te->m2);
-+ W_REG(&cc->clockcontrol_mips, te->m3);
-+
-+ /* Set the chipcontrol bit to change mipsref to the backplane divider if needed */
-+ if ((pll_type == PLL_TYPE7) &&
-+ (te->sb != te->m2) &&
-+ (sb_clock_rate(pll_type, te->n, te->m2) == 120000000))
-+ W_REG(&cc->chipcontrol, R_REG(&cc->chipcontrol) | 0x100);
-+
-+ /* No ratio change */
-+ if (orig_ratio_parm == te->ratio_parm)
-+ goto end_fill;
-+
-+ icache_probe(MFC0(C0_CONFIG, 1), &ic_size, &ic_lsize);
-+
-+ /* Preload the code into the cache */
-+ start = ((ulong) &&start_fill) & ~(ic_lsize - 1);
-+ end = ((ulong) &&end_fill + (ic_lsize - 1)) & ~(ic_lsize - 1);
-+ while (start < end) {
-+ cache_op(start, Fill_I);
-+ start += ic_lsize;
-+ }
-+
-+ /* Copy the handler */
-+ start = (ulong) &BCMINIT(handler);
-+ end = (ulong) &BCMINIT(afterhandler);
-+ dst = KSEG1ADDR(0x180);
-+ for (i = 0; i < (end - start); i += 4)
-+ *((ulong *)(dst + i)) = *((ulong *)(start + i));
-+
-+ /* Preload handler into the cache one line at a time */
-+ for (i = 0; i < (end - start); i += 4)
-+ cache_op(dst + i, Fill_I);
-+
-+ /* Clear BEV bit */
-+ MTC0(C0_STATUS, 0, MFC0(C0_STATUS, 0) & ~ST0_BEV);
-+
-+ /* Enable interrupts */
-+ MTC0(C0_STATUS, 0, MFC0(C0_STATUS, 0) | (ALLINTS | ST0_IE));
-+
-+ /* Enable MIPS timer interrupt */
-+ if (!(mipsr = sb_setcore(sbh, SB_MIPS, 0)) &&
-+ !(mipsr = sb_setcore(sbh, SB_MIPS33, 0)))
-+ ASSERT(mipsr);
-+ W_REG(&mipsr->intmask, 1);
-+
-+ start_fill:
-+ /* step 1, set clock ratios */
-+ MTC0(C0_BROADCOM, 3, te->ratio_parm);
-+ MTC0(C0_BROADCOM, 1, te->ratio_cfg);
-+
-+ /* step 2: program timer intr */
-+ W_REG(&mipsr->timer, 100);
-+ (void) R_REG(&mipsr->timer);
-+
-+ /* step 3, switch to async */
-+ sync_mode = MFC0(C0_BROADCOM, 4);
-+ MTC0(C0_BROADCOM, 4, 1 << 22);
-+
-+ /* step 4, set cfg active */
-+ MTC0(C0_BROADCOM, 2, 0x9);
-+
-+
-+ /* steps 5 & 6 */
-+ __asm__ __volatile__ (
-+ ".set\tmips3\n\t"
-+ "wait\n\t"
-+ ".set\tmips0"
-+ );
-+
-+ /* step 7, clear cfg_active */
-+ MTC0(C0_BROADCOM, 2, 0);
-+
-+ /* Additional Step: set back to orig sync mode */
-+ MTC0(C0_BROADCOM, 4, sync_mode);
-+
-+ /* step 8, fake soft reset */
-+ MTC0(C0_BROADCOM, 5, MFC0(C0_BROADCOM, 5) | 4);
-+
-+ end_fill:
-+ /* step 9 set watchdog timer */
-+ sb_watchdog(sbh, 20);
-+ (void) R_REG(&cc->chipid);
-+
-+ /* step 11 */
-+ __asm__ __volatile__ (
-+ ".set\tmips3\n\t"
-+ "sync\n\t"
-+ "wait\n\t"
-+ ".set\tmips0"
-+ );
-+ while (1);
-+ }
-+
-+done:
-+ /* switch back to previous core */
-+ sb_setcoreidx(sbh, idx);
-+
-+ return ret;
-+}
-+
-+/*
-+ * This also must be run from the cache on 47xx
-+ * so there are no mips core BIU ops in progress
-+ * when the PFC is enabled.
-+ */
-+
-+static void
-+BCMINITFN(_enable_pfc)(uint32 mode)
-+{
-+ /* write range */
-+ *(volatile uint32 *)PFC_CR1 = 0xffff0000;
-+
-+ /* enable */
-+ *(volatile uint32 *)PFC_CR0 = mode;
-+}
-+
-+void
-+BCMINITFN(enable_pfc)(uint32 mode)
-+{
-+ ulong start, end;
-+ int i;
-+
-+ /* If auto then choose the correct mode for this
-+ platform, currently we only ever select one mode */
-+ if (mode == PFC_AUTO)
-+ mode = PFC_INST;
-+
-+ /* enable prefetch cache if available */
-+ if (MFC0(C0_BROADCOM, 0) & BRCM_PFC_AVAIL) {
-+ start = (ulong) &BCMINIT(_enable_pfc);
-+ end = (ulong) &BCMINIT(enable_pfc);
-+
-+ /* Preload handler into the cache one line at a time */
-+ for (i = 0; i < (end - start); i += 4)
-+ cache_op(start + i, Fill_I);
-+
-+ BCMINIT(_enable_pfc)(mode);
-+ }
-+}
-+
-+/* returns the ncdl value to be programmed into sdram_ncdl for calibration */
-+uint32
-+BCMINITFN(sb_memc_get_ncdl)(sb_t *sbh)
-+{
-+ sbmemcregs_t *memc;
-+ uint32 ret = 0;
-+ uint32 config, rd, wr, misc, dqsg, cd, sm, sd;
-+ uint idx, rev;
-+
-+ idx = sb_coreidx(sbh);
-+
-+ memc = (sbmemcregs_t *)sb_setcore(sbh, SB_MEMC, 0);
-+ if (memc == 0)
-+ goto out;
-+
-+ rev = sb_corerev(sbh);
-+
-+ config = R_REG(&memc->config);
-+ wr = R_REG(&memc->wrncdlcor);
-+ rd = R_REG(&memc->rdncdlcor);
-+ misc = R_REG(&memc->miscdlyctl);
-+ dqsg = R_REG(&memc->dqsgatencdl);
-+
-+ rd &= MEMC_RDNCDLCOR_RD_MASK;
-+ wr &= MEMC_WRNCDLCOR_WR_MASK;
-+ dqsg &= MEMC_DQSGATENCDL_G_MASK;
-+
-+ if (config & MEMC_CONFIG_DDR) {
-+ ret = (wr << 16) | (rd << 8) | dqsg;
-+ } else {
-+ if (rev > 0)
-+ cd = rd;
-+ else
-+ cd = (rd == MEMC_CD_THRESHOLD) ? rd : (wr + MEMC_CD_THRESHOLD);
-+ sm = (misc & MEMC_MISC_SM_MASK) >> MEMC_MISC_SM_SHIFT;
-+ sd = (misc & MEMC_MISC_SD_MASK) >> MEMC_MISC_SD_SHIFT;
-+ ret = (sm << 16) | (sd << 8) | cd;
-+ }
-+
-+out:
-+ /* switch back to previous core */
-+ sb_setcoreidx(sbh, idx);
-+
-+ return ret;
-+}
-+
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/broadcom/sbpci.c linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/sbpci.c
---- linux-2.6.16/arch/mips/bcm947xx/broadcom/sbpci.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/sbpci.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,534 @@
-+/*
-+ * Low-Level PCI and SB support for BCM47xx
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#include <typedefs.h>
-+#include <pcicfg.h>
-+#include <bcmdevs.h>
-+#include <sbconfig.h>
-+#include <osl.h>
-+#include <sbutils.h>
-+#include <sbpci.h>
-+#include <bcmendian.h>
-+#include <bcmutils.h>
-+#include <bcmnvram.h>
-+#include <hndmips.h>
-+
-+/* Can free sbpci_init() memory after boot */
-+#ifndef linux
-+#define __init
-+#endif
-+
-+/* Emulated configuration space */
-+static pci_config_regs sb_config_regs[SB_MAXCORES];
-+
-+/* Banned cores */
-+static uint16 pci_ban[32] = { 0 };
-+static uint pci_banned = 0;
-+
-+/* CardBus mode */
-+static bool cardbus = FALSE;
-+
-+/* Disable PCI host core */
-+static bool pci_disabled = FALSE;
-+
-+/*
-+ * Functions for accessing external PCI configuration space
-+ */
-+
-+/* Assume one-hot slot wiring */
-+#define PCI_SLOT_MAX 16
-+
-+static uint32
-+config_cmd(sb_t *sbh, uint bus, uint dev, uint func, uint off)
-+{
-+ uint coreidx;
-+ sbpciregs_t *regs;
-+ uint32 addr = 0;
-+
-+ /* CardBusMode supports only one device */
-+ if (cardbus && dev > 1)
-+ return 0;
-+
-+ coreidx = sb_coreidx(sbh);
-+ regs = (sbpciregs_t *) sb_setcore(sbh, SB_PCI, 0);
-+
-+ /* Type 0 transaction */
-+ if (bus == 1) {
-+ /* Skip unwired slots */
-+ if (dev < PCI_SLOT_MAX) {
-+ /* Slide the PCI window to the appropriate slot */
-+ W_REG(&regs->sbtopci1, SBTOPCI_CFG0 | ((1 << (dev + 16)) & SBTOPCI1_MASK));
-+ addr = SB_PCI_CFG | ((1 << (dev + 16)) & ~SBTOPCI1_MASK) |
-+ (func << 8) | (off & ~3);
-+ }
-+ }
-+
-+ /* Type 1 transaction */
-+ else {
-+ W_REG(&regs->sbtopci1, SBTOPCI_CFG1);
-+ addr = SB_PCI_CFG | (bus << 16) | (dev << 11) | (func << 8) | (off & ~3);
-+ }
-+
-+ sb_setcoreidx(sbh, coreidx);
-+
-+ return addr;
-+}
-+
-+static int
-+extpci_read_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len)
-+{
-+ uint32 addr, *reg = NULL, val;
-+ int ret = 0;
-+
-+ if (pci_disabled ||
-+ !(addr = config_cmd(sbh, bus, dev, func, off)) ||
-+ !(reg = (uint32 *) REG_MAP(addr, len)) ||
-+ BUSPROBE(val, reg))
-+ val = 0xffffffff;
-+
-+ val >>= 8 * (off & 3);
-+ if (len == 4)
-+ *((uint32 *) buf) = val;
-+ else if (len == 2)
-+ *((uint16 *) buf) = (uint16) val;
-+ else if (len == 1)
-+ *((uint8 *) buf) = (uint8) val;
-+ else
-+ ret = -1;
-+
-+ if (reg)
-+ REG_UNMAP(reg);
-+
-+ return ret;
-+}
-+
-+static int
-+extpci_write_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len)
-+{
-+ uint32 addr, *reg = NULL, val;
-+ int ret = 0;
-+
-+ if (pci_disabled ||
-+ !(addr = config_cmd(sbh, bus, dev, func, off)) ||
-+ !(reg = (uint32 *) REG_MAP(addr, len)) ||
-+ BUSPROBE(val, reg))
-+ goto done;
-+
-+ if (len == 4)
-+ val = *((uint32 *) buf);
-+ else if (len == 2) {
-+ val &= ~(0xffff << (8 * (off & 3)));
-+ val |= *((uint16 *) buf) << (8 * (off & 3));
-+ } else if (len == 1) {
-+ val &= ~(0xff << (8 * (off & 3)));
-+ val |= *((uint8 *) buf) << (8 * (off & 3));
-+ } else
-+ ret = -1;
-+
-+ W_REG(reg, val);
-+
-+ done:
-+ if (reg)
-+ REG_UNMAP(reg);
-+
-+ return ret;
-+}
-+
-+/*
-+ * Functions for accessing translated SB configuration space
-+ */
-+
-+static int
-+sb_read_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len)
-+{
-+ pci_config_regs *cfg;
-+
-+ if (dev >= SB_MAXCORES || (off + len) > sizeof(pci_config_regs))
-+ return -1;
-+ cfg = &sb_config_regs[dev];
-+
-+ ASSERT(ISALIGNED(off, len));
-+ ASSERT(ISALIGNED((uintptr)buf, len));
-+
-+ if (len == 4)
-+ *((uint32 *) buf) = ltoh32(*((uint32 *)((ulong) cfg + off)));
-+ else if (len == 2)
-+ *((uint16 *) buf) = ltoh16(*((uint16 *)((ulong) cfg + off)));
-+ else if (len == 1)
-+ *((uint8 *) buf) = *((uint8 *)((ulong) cfg + off));
-+ else
-+ return -1;
-+
-+ return 0;
-+}
-+
-+static int
-+sb_write_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len)
-+{
-+ uint coreidx, n;
-+ void *regs;
-+ sbconfig_t *sb;
-+ pci_config_regs *cfg;
-+
-+ if (dev >= SB_MAXCORES || (off + len) > sizeof(pci_config_regs))
-+ return -1;
-+ cfg = &sb_config_regs[dev];
-+
-+ ASSERT(ISALIGNED(off, len));
-+ ASSERT(ISALIGNED((uintptr)buf, len));
-+
-+ /* Emulate BAR sizing */
-+ if (off >= OFFSETOF(pci_config_regs, base[0]) && off <= OFFSETOF(pci_config_regs, base[3]) &&
-+ len == 4 && *((uint32 *) buf) == ~0) {
-+ coreidx = sb_coreidx(sbh);
-+ if ((regs = sb_setcoreidx(sbh, dev))) {
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+ /* Highest numbered address match register */
-+ n = (R_REG(&sb->sbidlow) & SBIDL_AR_MASK) >> SBIDL_AR_SHIFT;
-+ if (off == OFFSETOF(pci_config_regs, base[0]))
-+ cfg->base[0] = ~(sb_size(R_REG(&sb->sbadmatch0)) - 1);
-+#if 0
-+ else if (off == OFFSETOF(pci_config_regs, base[1]) && n >= 1)
-+ cfg->base[1] = ~(sb_size(R_REG(&sb->sbadmatch1)) - 1);
-+ else if (off == OFFSETOF(pci_config_regs, base[2]) && n >= 2)
-+ cfg->base[2] = ~(sb_size(R_REG(&sb->sbadmatch2)) - 1);
-+ else if (off == OFFSETOF(pci_config_regs, base[3]) && n >= 3)
-+ cfg->base[3] = ~(sb_size(R_REG(&sb->sbadmatch3)) - 1);
-+#endif
-+ }
-+ sb_setcoreidx(sbh, coreidx);
-+ return 0;
-+ }
-+
-+ if (len == 4)
-+ *((uint32 *)((ulong) cfg + off)) = htol32(*((uint32 *) buf));
-+ else if (len == 2)
-+ *((uint16 *)((ulong) cfg + off)) = htol16(*((uint16 *) buf));
-+ else if (len == 1)
-+ *((uint8 *)((ulong) cfg + off)) = *((uint8 *) buf);
-+ else
-+ return -1;
-+
-+ return 0;
-+}
-+
-+int
-+sbpci_read_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len)
-+{
-+ if (bus == 0)
-+ return sb_read_config(sbh, bus, dev, func, off, buf, len);
-+ else
-+ return extpci_read_config(sbh, bus, dev, func, off, buf, len);
-+}
-+
-+int
-+sbpci_write_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len)
-+{
-+ if (bus == 0)
-+ return sb_write_config(sbh, bus, dev, func, off, buf, len);
-+ else
-+ return extpci_write_config(sbh, bus, dev, func, off, buf, len);
-+}
-+
-+void
-+sbpci_ban(uint16 core)
-+{
-+ if (pci_banned < ARRAYSIZE(pci_ban))
-+ pci_ban[pci_banned++] = core;
-+}
-+
-+static int
-+sbpci_init_pci(sb_t *sbh)
-+{
-+ uint chip, chiprev, chippkg, host;
-+ uint32 boardflags;
-+ sbpciregs_t *pci;
-+ sbconfig_t *sb;
-+ uint32 val;
-+
-+ chip = sb_chip(sbh);
-+ chiprev = sb_chiprev(sbh);
-+ chippkg = sb_chippkg(sbh);
-+
-+ if (!(pci = (sbpciregs_t *) sb_setcore(sbh, SB_PCI, 0))) {
-+ printf("PCI: no core\n");
-+ pci_disabled = TRUE;
-+ return -1;
-+ }
-+ sb_core_reset(sbh, 0);
-+
-+ boardflags = (uint32) getintvar(NULL, "boardflags");
-+
-+ if ((chip == BCM4310_DEVICE_ID) && (chiprev == 0))
-+ pci_disabled = TRUE;
-+
-+ /*
-+ * The 200-pin BCM4712 package does not bond out PCI. Even when
-+ * PCI is bonded out, some boards may leave the pins
-+ * floating.
-+ */
-+ if (((chip == BCM4712_DEVICE_ID) &&
-+ ((chippkg == BCM4712SMALL_PKG_ID) ||
-+ (chippkg == BCM4712MID_PKG_ID))) ||
-+ (chip == BCM5350_DEVICE_ID) ||
-+ (boardflags & BFL_NOPCI))
-+ pci_disabled = TRUE;
-+
-+ /*
-+ * If the PCI core should not be touched (disabled, not bonded
-+ * out, or pins floating), do not even attempt to access core
-+ * registers. Otherwise, try to determine if it is in host
-+ * mode.
-+ */
-+ if (pci_disabled)
-+ host = 0;
-+ else
-+ host = !BUSPROBE(val, &pci->control);
-+
-+ if (!host) {
-+ /* Disable PCI interrupts in client mode */
-+ sb = (sbconfig_t *)((ulong) pci + SBCONFIGOFF);
-+ W_REG(&sb->sbintvec, 0);
-+
-+ /* Disable the PCI bridge in client mode */
-+ sbpci_ban(SB_PCI);
-+ printf("PCI: Disabled\n");
-+ } else {
-+ /* Reset the external PCI bus and enable the clock */
-+ W_REG(&pci->control, 0x5); /* enable the tristate drivers */
-+ W_REG(&pci->control, 0xd); /* enable the PCI clock */
-+ OSL_DELAY(150); /* delay > 100 us */
-+ W_REG(&pci->control, 0xf); /* deassert PCI reset */
-+ W_REG(&pci->arbcontrol, PCI_INT_ARB); /* use internal arbiter */
-+ OSL_DELAY(1); /* delay 1 us */
-+
-+ /* Enable CardBusMode */
-+ cardbus = nvram_match("cardbus", "1");
-+ if (cardbus) {
-+ printf("PCI: Enabling CardBus\n");
-+ /* GPIO 1 resets the CardBus device on bcm94710ap */
-+ sb_gpioout(sbh, 1, 1, GPIO_DRV_PRIORITY);
-+ sb_gpioouten(sbh, 1, 1, GPIO_DRV_PRIORITY);
-+ W_REG(&pci->sprom[0], R_REG(&pci->sprom[0]) | 0x400);
-+ }
-+
-+ /* 64 MB I/O access window */
-+ W_REG(&pci->sbtopci0, SBTOPCI_IO);
-+ /* 64 MB configuration access window */
-+ W_REG(&pci->sbtopci1, SBTOPCI_CFG0);
-+ /* 1 GB memory access window */
-+ W_REG(&pci->sbtopci2, SBTOPCI_MEM | SB_PCI_DMA);
-+
-+ /* Enable PCI bridge BAR0 prefetch and burst */
-+ val = 6;
-+ sbpci_write_config(sbh, 1, 0, 0, PCI_CFG_CMD, &val, sizeof(val));
-+
-+ /* Enable PCI interrupts */
-+ W_REG(&pci->intmask, PCI_INTA);
-+ }
-+
-+ return 0;
-+}
-+
-+static int
-+sbpci_init_cores(sb_t *sbh)
-+{
-+ uint chip, chiprev, chippkg, coreidx, i;
-+ sbconfig_t *sb;
-+ pci_config_regs *cfg;
-+ void *regs;
-+ char varname[8];
-+ uint wlidx = 0;
-+ uint16 vendor, core;
-+ uint8 class, subclass, progif;
-+ uint32 val;
-+ uint32 sbips_int_mask[] = { 0, SBIPS_INT1_MASK, SBIPS_INT2_MASK, SBIPS_INT3_MASK, SBIPS_INT4_MASK };
-+ uint32 sbips_int_shift[] = { 0, 0, SBIPS_INT2_SHIFT, SBIPS_INT3_SHIFT, SBIPS_INT4_SHIFT };
-+
-+ chip = sb_chip(sbh);
-+ chiprev = sb_chiprev(sbh);
-+ chippkg = sb_chippkg(sbh);
-+ coreidx = sb_coreidx(sbh);
-+
-+ /* Scan the SB bus */
-+ bzero(sb_config_regs, sizeof(sb_config_regs));
-+ for (cfg = sb_config_regs; cfg < &sb_config_regs[SB_MAXCORES]; cfg++) {
-+ cfg->vendor = 0xffff;
-+ if (!(regs = sb_setcoreidx(sbh, cfg - sb_config_regs)))
-+ continue;
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+
-+ /* Read ID register and parse vendor and core */
-+ val = R_REG(&sb->sbidhigh);
-+ vendor = (val & SBIDH_VC_MASK) >> SBIDH_VC_SHIFT;
-+ core = (val & SBIDH_CC_MASK) >> SBIDH_CC_SHIFT;
-+ progif = 0;
-+
-+ /* Check if this core is banned */
-+ for (i = 0; i < pci_banned; i++)
-+ if (core == pci_ban[i])
-+ break;
-+ if (i < pci_banned)
-+ continue;
-+
-+ /* Known vendor translations */
-+ switch (vendor) {
-+ case SB_VEND_BCM:
-+ vendor = VENDOR_BROADCOM;
-+ break;
-+ }
-+
-+ /* Determine class based on known core codes */
-+ switch (core) {
-+ case SB_ILINE20:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_ETHER;
-+ core = BCM47XX_ILINE_ID;
-+ break;
-+ case SB_ILINE100:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_ETHER;
-+ core = BCM4610_ILINE_ID;
-+ break;
-+ case SB_ENET:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_ETHER;
-+ core = BCM47XX_ENET_ID;
-+ break;
-+ case SB_SDRAM:
-+ case SB_MEMC:
-+ class = PCI_CLASS_MEMORY;
-+ subclass = PCI_MEMORY_RAM;
-+ break;
-+ case SB_PCI:
-+#if 0
-+ class = PCI_CLASS_BRIDGE;
-+ subclass = PCI_BRIDGE_PCI;
-+ break;
-+#endif
-+ case SB_MIPS:
-+ case SB_MIPS33:
-+ class = PCI_CLASS_CPU;
-+ subclass = PCI_CPU_MIPS;
-+ break;
-+ case SB_CODEC:
-+ class = PCI_CLASS_COMM;
-+ subclass = PCI_COMM_MODEM;
-+ core = BCM47XX_V90_ID;
-+ break;
-+ case SB_USB:
-+ class = PCI_CLASS_SERIAL;
-+ subclass = PCI_SERIAL_USB;
-+ progif = 0x10; /* OHCI */
-+ core = BCM47XX_USB_ID;
-+ break;
-+ case SB_USB11H:
-+ class = PCI_CLASS_SERIAL;
-+ subclass = PCI_SERIAL_USB;
-+ progif = 0x10; /* OHCI */
-+ core = BCM47XX_USBH_ID;
-+ break;
-+ case SB_USB11D:
-+ class = PCI_CLASS_SERIAL;
-+ subclass = PCI_SERIAL_USB;
-+ core = BCM47XX_USBD_ID;
-+ break;
-+ case SB_IPSEC:
-+ class = PCI_CLASS_CRYPT;
-+ subclass = PCI_CRYPT_NETWORK;
-+ core = BCM47XX_IPSEC_ID;
-+ break;
-+ case SB_ROBO:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_OTHER;
-+ core = BCM47XX_ROBO_ID;
-+ break;
-+ case SB_EXTIF:
-+ case SB_CC:
-+ class = PCI_CLASS_MEMORY;
-+ subclass = PCI_MEMORY_FLASH;
-+ break;
-+ case SB_D11:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_OTHER;
-+ /* Let an nvram variable override this */
-+ sprintf(varname, "wl%did", wlidx);
-+ wlidx++;
-+ if ((core = getintvar(NULL, varname)) == 0) {
-+ if (chip == BCM4712_DEVICE_ID) {
-+ if (chippkg == BCM4712SMALL_PKG_ID)
-+ core = BCM4306_D11G_ID;
-+ else
-+ core = BCM4306_D11DUAL_ID;
-+ } else {
-+ /* 4310 */
-+ core = BCM4310_D11B_ID;
-+ }
-+ }
-+ break;
-+
-+ default:
-+ class = subclass = progif = 0xff;
-+ break;
-+ }
-+
-+ /* Supported translations */
-+ cfg->vendor = htol16(vendor);
-+ cfg->device = htol16(core);
-+ cfg->rev_id = chiprev;
-+ cfg->prog_if = progif;
-+ cfg->sub_class = subclass;
-+ cfg->base_class = class;
-+ cfg->base[0] = htol32(sb_base(R_REG(&sb->sbadmatch0)));
-+ cfg->base[1] = 0;//htol32(sb_base(R_REG(&sb->sbadmatch1)));
-+ cfg->base[2] = 0;//htol32(sb_base(R_REG(&sb->sbadmatch2)));
-+ cfg->base[3] = 0;//htol32(sb_base(R_REG(&sb->sbadmatch3)));
-+ cfg->base[4] = 0;
-+ cfg->base[5] = 0;
-+ if (class == PCI_CLASS_BRIDGE && subclass == PCI_BRIDGE_PCI)
-+ cfg->header_type = PCI_HEADER_BRIDGE;
-+ else
-+ cfg->header_type = PCI_HEADER_NORMAL;
-+ /* Save core interrupt flag */
-+ cfg->int_pin = R_REG(&sb->sbtpsflag) & SBTPS_NUM0_MASK;
-+ /* Default to MIPS shared interrupt 0 */
-+ cfg->int_line = 0;
-+ /* MIPS sbipsflag maps core interrupt flags to interrupts 1 through 4 */
-+ if ((regs = sb_setcore(sbh, SB_MIPS, 0)) ||
-+ (regs = sb_setcore(sbh, SB_MIPS33, 0))) {
-+ sb = (sbconfig_t *)((ulong) regs + SBCONFIGOFF);
-+ val = R_REG(&sb->sbipsflag);
-+ for (cfg->int_line = 1; cfg->int_line <= 4; cfg->int_line++) {
-+ if (((val & sbips_int_mask[cfg->int_line]) >> sbips_int_shift[cfg->int_line]) == cfg->int_pin)
-+ break;
-+ }
-+ if (cfg->int_line > 4)
-+ cfg->int_line = 0;
-+ }
-+ /* Emulated core */
-+ *((uint32 *) &cfg->sprom_control) = 0xffffffff;
-+ }
-+
-+ sb_setcoreidx(sbh, coreidx);
-+ return 0;
-+}
-+
-+int __init
-+sbpci_init(sb_t *sbh)
-+{
-+ sbpci_init_pci(sbh);
-+ sbpci_init_cores(sbh);
-+ return 0;
-+}
-+
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/broadcom/sbutils.c linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/sbutils.c
---- linux-2.6.16/arch/mips/bcm947xx/broadcom/sbutils.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/sbutils.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,2370 @@
-+/*
-+ * Misc utility routines for accessing chip-specific features
-+ * of the SiliconBackplane-based Broadcom chips.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <sbutils.h>
-+#include <bcmutils.h>
-+#include <bcmdevs.h>
-+#include <sbconfig.h>
-+#include <sbchipc.h>
-+#include <sbpci.h>
-+#include <pcicfg.h>
-+#include <sbextif.h>
-+#include <bcmsrom.h>
-+
-+/* debug/trace */
-+#define SB_ERROR(args)
-+
-+
-+typedef uint32 (*sb_intrsoff_t)(void *intr_arg);
-+typedef void (*sb_intrsrestore_t)(void *intr_arg, uint32 arg);
-+typedef bool (*sb_intrsenabled_t)(void *intr_arg);
-+
-+/* misc sb info needed by some of the routines */
-+typedef struct sb_info {
-+
-+ struct sb_pub sb; /* back plane public state(must be first field of sb_info */
-+
-+ void *osh; /* osl os handle */
-+ void *sdh; /* bcmsdh handle */
-+
-+ void *curmap; /* current regs va */
-+ void *regs[SB_MAXCORES]; /* other regs va */
-+
-+ uint curidx; /* current core index */
-+ uint dev_coreid; /* the core provides driver functions */
-+
-+ uint gpioidx; /* gpio control core index */
-+ uint gpioid; /* gpio control coretype */
-+
-+ uint numcores; /* # discovered cores */
-+ uint coreid[SB_MAXCORES]; /* id of each core */
-+
-+ void *intr_arg; /* interrupt callback function arg */
-+ sb_intrsoff_t intrsoff_fn; /* function turns chip interrupts off */
-+ sb_intrsrestore_t intrsrestore_fn; /* function restore chip interrupts */
-+ sb_intrsenabled_t intrsenabled_fn; /* function to check if chip interrupts are enabled */
-+
-+} sb_info_t;
-+
-+/* local prototypes */
-+static sb_info_t * BCMINIT(sb_doattach)(sb_info_t *si, uint devid, osl_t *osh, void *regs,
-+ uint bustype, void *sdh, char **vars, int *varsz);
-+static void BCMINIT(sb_scan)(sb_info_t *si);
-+static uint sb_corereg(sb_info_t *si, uint coreidx, uint regoff, uint mask, uint val);
-+static uint _sb_coreidx(sb_info_t *si);
-+static uint sb_findcoreidx(sb_info_t *si, uint coreid, uint coreunit);
-+static uint BCMINIT(sb_pcidev2chip)(uint pcidev);
-+static uint BCMINIT(sb_chip2numcores)(uint chip);
-+static int sb_pci_fixcfg(sb_info_t *si);
-+
-+/* delay needed between the mdio control/ mdiodata register data access */
-+#define PR28829_DELAY() OSL_DELAY(10)
-+
-+
-+/* global variable to indicate reservation/release of gpio's*/
-+static uint32 sb_gpioreservation = 0;
-+
-+#define SB_INFO(sbh) (sb_info_t*)sbh
-+#define SET_SBREG(sbh, r, mask, val) W_SBREG((sbh), (r), ((R_SBREG((sbh), (r)) & ~(mask)) | (val)))
-+#define GOODCOREADDR(x) (((x) >= SB_ENUM_BASE) && ((x) <= SB_ENUM_LIM) && ISALIGNED((x), SB_CORE_SIZE))
-+#define GOODREGS(regs) ((regs) && ISALIGNED((uintptr)(regs), SB_CORE_SIZE))
-+#define REGS2SB(va) (sbconfig_t*) ((int8*)(va) + SBCONFIGOFF)
-+#define GOODIDX(idx) (((uint)idx) < SB_MAXCORES)
-+#define BADIDX (SB_MAXCORES+1)
-+#define NOREV -1
-+
-+#define PCI(si) ((BUSTYPE(si->sb.bustype) == PCI_BUS) && (si->sb.buscoretype == SB_PCI))
-+
-+/* sonicsrev */
-+#define SONICS_2_2 (SBIDL_RV_2_2 >> SBIDL_RV_SHIFT)
-+#define SONICS_2_3 (SBIDL_RV_2_3 >> SBIDL_RV_SHIFT)
-+
-+#define R_SBREG(sbh, sbr) sb_read_sbreg((sbh), (sbr))
-+#define W_SBREG(sbh, sbr, v) sb_write_sbreg((sbh), (sbr), (v))
-+#define AND_SBREG(sbh, sbr, v) W_SBREG((sbh), (sbr), (R_SBREG((sbh), (sbr)) & (v)))
-+#define OR_SBREG(sbh, sbr, v) W_SBREG((sbh), (sbr), (R_SBREG((sbh), (sbr)) | (v)))
-+
-+/*
-+ * Macros to disable/restore function core(D11, ENET, ILINE20, etc) interrupts before/
-+ * after core switching to avoid invalid register accesss inside ISR.
-+ */
-+#define INTR_OFF(si, intr_val) \
-+ if ((si)->intrsoff_fn && (si)->coreid[(si)->curidx] == (si)->dev_coreid) { \
-+ intr_val = (*(si)->intrsoff_fn)((si)->intr_arg); }
-+#define INTR_RESTORE(si, intr_val) \
-+ if ((si)->intrsrestore_fn && (si)->coreid[(si)->curidx] == (si)->dev_coreid) { \
-+ (*(si)->intrsrestore_fn)((si)->intr_arg, intr_val); }
-+
-+/* dynamic clock control defines */
-+#define LPOMINFREQ 25000 /* low power oscillator min */
-+#define LPOMAXFREQ 43000 /* low power oscillator max */
-+#define XTALMINFREQ 19800000 /* 20 MHz - 1% */
-+#define XTALMAXFREQ 20200000 /* 20 MHz + 1% */
-+#define PCIMINFREQ 25000000 /* 25 MHz */
-+#define PCIMAXFREQ 34000000 /* 33 MHz + fudge */
-+
-+#define ILP_DIV_5MHZ 0 /* ILP = 5 MHz */
-+#define ILP_DIV_1MHZ 4 /* ILP = 1 MHz */
-+
-+#define MIN_DUMPBUFLEN 32 /* debug */
-+
-+/* GPIO Based LED powersave defines */
-+#define DEFAULT_GPIO_ONTIME 10
-+#define DEFAULT_GPIO_OFFTIME 90
-+
-+#define DEFAULT_GPIOTIMERVAL ((DEFAULT_GPIO_ONTIME << GPIO_ONTIME_SHIFT) | DEFAULT_GPIO_OFFTIME)
-+
-+static uint32
-+sb_read_sbreg(sb_info_t *si, volatile uint32 *sbr)
-+{
-+ uint32 val = R_REG(sbr);
-+
-+ return (val);
-+}
-+
-+static void
-+sb_write_sbreg(sb_info_t *si, volatile uint32 *sbr, uint32 v)
-+{
-+ W_REG(sbr, v);
-+}
-+
-+/* Using sb_kattach depends on SB_BUS support, either implicit */
-+/* no limiting BCMBUSTYPE value) or explicit (value is SB_BUS). */
-+#if !defined(BCMBUSTYPE) || (BCMBUSTYPE == SB_BUS)
-+
-+/* global kernel resource */
-+static sb_info_t ksi;
-+
-+/* generic kernel variant of sb_attach() */
-+sb_t *
-+BCMINITFN(sb_kattach)()
-+{
-+ uint32 *regs;
-+
-+ if (ksi.curmap == NULL) {
-+ uint32 cid;
-+
-+ regs = (uint32 *)REG_MAP(SB_ENUM_BASE, SB_CORE_SIZE);
-+ cid = R_REG((uint32 *)regs);
-+ if (((cid & CID_ID_MASK) == BCM4712_DEVICE_ID) &&
-+ ((cid & CID_PKG_MASK) != BCM4712LARGE_PKG_ID) &&
-+ ((cid & CID_REV_MASK) <= (3 << CID_REV_SHIFT))) {
-+ uint32 *scc, val;
-+
-+ scc = (uint32 *)((uchar*)regs + OFFSETOF(chipcregs_t, slow_clk_ctl));
-+ val = R_REG(scc);
-+ SB_ERROR((" initial scc = 0x%x\n", val));
-+ val |= SCC_SS_XTAL;
-+ W_REG(scc, val);
-+ }
-+
-+ if (BCMINIT(sb_doattach)(&ksi, BCM4710_DEVICE_ID, NULL, (void*)regs,
-+ SB_BUS, NULL, NULL, NULL) == NULL) {
-+ return NULL;
-+ }
-+ }
-+
-+ return (sb_t *)&ksi;
-+}
-+#endif
-+
-+static sb_info_t *
-+BCMINITFN(sb_doattach)(sb_info_t *si, uint devid, osl_t *osh, void *regs,
-+ uint bustype, void *sdh, char **vars, int *varsz)
-+{
-+ uint origidx;
-+ chipcregs_t *cc;
-+ sbconfig_t *sb;
-+ uint32 w;
-+
-+ ASSERT(GOODREGS(regs));
-+
-+ bzero((uchar*)si, sizeof (sb_info_t));
-+
-+ si->sb.buscoreidx = si->gpioidx = BADIDX;
-+
-+ si->osh = osh;
-+ si->curmap = regs;
-+ si->sdh = sdh;
-+
-+ /* check to see if we are a sb core mimic'ing a pci core */
-+ if (bustype == PCI_BUS) {
-+ if (OSL_PCI_READ_CONFIG(osh, PCI_SPROM_CONTROL, sizeof (uint32)) == 0xffffffff)
-+ bustype = SB_BUS;
-+ else
-+ bustype = PCI_BUS;
-+ }
-+
-+ si->sb.bustype = bustype;
-+ if (si->sb.bustype != BUSTYPE(si->sb.bustype)) {
-+ SB_ERROR(("sb_doattach: bus type %d does not match configured bus type %d\n",
-+ si->sb.bustype, BUSTYPE(si->sb.bustype)));
-+ return NULL;
-+ }
-+
-+ /* kludge to enable the clock on the 4306 which lacks a slowclock */
-+ if (BUSTYPE(si->sb.bustype) == PCI_BUS)
-+ sb_clkctl_xtal(&si->sb, XTAL|PLL, ON);
-+
-+ if (BUSTYPE(si->sb.bustype) == PCI_BUS) {
-+ w = OSL_PCI_READ_CONFIG(osh, PCI_BAR0_WIN, sizeof (uint32));
-+ if (!GOODCOREADDR(w))
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_BAR0_WIN, sizeof (uint32), SB_ENUM_BASE);
-+ }
-+
-+ /* initialize current core index value */
-+ si->curidx = _sb_coreidx(si);
-+
-+ if (si->curidx == BADIDX) {
-+ SB_ERROR(("sb_doattach: bad core index\n"));
-+ return NULL;
-+ }
-+
-+ /* get sonics backplane revision */
-+ sb = REGS2SB(si->curmap);
-+ si->sb.sonicsrev = (R_SBREG(si, &(sb)->sbidlow) & SBIDL_RV_MASK) >> SBIDL_RV_SHIFT;
-+
-+ /* keep and reuse the initial register mapping */
-+ origidx = si->curidx;
-+ if (BUSTYPE(si->sb.bustype) == SB_BUS)
-+ si->regs[origidx] = regs;
-+
-+ /* is core-0 a chipcommon core? */
-+ si->numcores = 1;
-+ cc = (chipcregs_t*) sb_setcoreidx(&si->sb, 0);
-+ if (sb_coreid(&si->sb) != SB_CC)
-+ cc = NULL;
-+
-+ /* determine chip id and rev */
-+ if (cc) {
-+ /* chip common core found! */
-+ si->sb.chip = R_REG(&cc->chipid) & CID_ID_MASK;
-+ si->sb.chiprev = (R_REG(&cc->chipid) & CID_REV_MASK) >> CID_REV_SHIFT;
-+ si->sb.chippkg = (R_REG(&cc->chipid) & CID_PKG_MASK) >> CID_PKG_SHIFT;
-+ } else {
-+ /* no chip common core -- must convert device id to chip id */
-+ if ((si->sb.chip = BCMINIT(sb_pcidev2chip)(devid)) == 0) {
-+ SB_ERROR(("sb_doattach: unrecognized device id 0x%04x\n", devid));
-+ sb_setcoreidx(&si->sb, origidx);
-+ return NULL;
-+ }
-+ }
-+
-+ /* get chipcommon rev */
-+ si->sb.ccrev = cc ? (int)sb_corerev(&si->sb) : NOREV;
-+
-+ /* determine numcores */
-+ if (cc && ((si->sb.ccrev == 4) || (si->sb.ccrev >= 6)))
-+ si->numcores = (R_REG(&cc->chipid) & CID_CC_MASK) >> CID_CC_SHIFT;
-+ else
-+ si->numcores = BCMINIT(sb_chip2numcores)(si->sb.chip);
-+
-+ /* return to original core */
-+ sb_setcoreidx(&si->sb, origidx);
-+
-+ /* sanity checks */
-+ ASSERT(si->sb.chip);
-+
-+ /* scan for cores */
-+ BCMINIT(sb_scan)(si);
-+
-+ /* fixup necessary chip/core configurations */
-+ if (BUSTYPE(si->sb.bustype) == PCI_BUS) {
-+ if (sb_pci_fixcfg(si)) {
-+ SB_ERROR(("sb_doattach: sb_pci_fixcfg failed\n"));
-+ return NULL;
-+ }
-+ }
-+
-+ /* srom_var_init() depends on sb_scan() info */
-+ if (srom_var_init(si, si->sb.bustype, si->curmap, osh, vars, varsz)) {
-+ SB_ERROR(("sb_doattach: srom_var_init failed: bad srom\n"));
-+ return (NULL);
-+ }
-+
-+ if (cc == NULL) {
-+ /*
-+ * The chip revision number is hardwired into all
-+ * of the pci function config rev fields and is
-+ * independent from the individual core revision numbers.
-+ * For example, the "A0" silicon of each chip is chip rev 0.
-+ */
-+ if (BUSTYPE(si->sb.bustype) == PCI_BUS) {
-+ w = OSL_PCI_READ_CONFIG(osh, PCI_CFG_REV, sizeof (uint32));
-+ si->sb.chiprev = w & 0xff;
-+ } else
-+ si->sb.chiprev = 0;
-+ }
-+
-+ /* gpio control core is required */
-+ if (!GOODIDX(si->gpioidx)) {
-+ SB_ERROR(("sb_doattach: gpio control core not found\n"));
-+ return NULL;
-+ }
-+
-+ /* get boardtype and boardrev */
-+ switch (BUSTYPE(si->sb.bustype)) {
-+ case PCI_BUS:
-+ /* do a pci config read to get subsystem id and subvendor id */
-+ w = OSL_PCI_READ_CONFIG(osh, PCI_CFG_SVID, sizeof (uint32));
-+ si->sb.boardvendor = w & 0xffff;
-+ si->sb.boardtype = (w >> 16) & 0xffff;
-+ break;
-+
-+ case SB_BUS:
-+ case JTAG_BUS:
-+ si->sb.boardvendor = VENDOR_BROADCOM;
-+ if ((si->sb.boardtype = getintvar(NULL, "boardtype")) == 0)
-+ si->sb.boardtype = 0xffff;
-+ break;
-+ }
-+
-+ if (si->sb.boardtype == 0) {
-+ SB_ERROR(("sb_doattach: unknown board type\n"));
-+ ASSERT(si->sb.boardtype);
-+ }
-+
-+ /* setup the GPIO based LED powersave register */
-+ if (si->sb.ccrev >= 16) {
-+ w = getintvar(*vars, "gpiotimerval");
-+ if (!w)
-+ w = DEFAULT_GPIOTIMERVAL;
-+ sb_corereg(si, 0, OFFSETOF(chipcregs_t, gpiotimerval), ~0, w);
-+ }
-+
-+
-+ return (si);
-+}
-+
-+uint
-+sb_coreid(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+
-+ return ((R_SBREG(si, &(sb)->sbidhigh) & SBIDH_CC_MASK) >> SBIDH_CC_SHIFT);
-+}
-+
-+uint
-+sb_coreidx(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->curidx);
-+}
-+
-+/* return current index of core */
-+static uint
-+_sb_coreidx(sb_info_t *si)
-+{
-+ sbconfig_t *sb;
-+ uint32 sbaddr = 0;
-+
-+ ASSERT(si);
-+
-+ switch (BUSTYPE(si->sb.bustype)) {
-+ case SB_BUS:
-+ sb = REGS2SB(si->curmap);
-+ sbaddr = sb_base(R_SBREG(si, &sb->sbadmatch0));
-+ break;
-+
-+ case PCI_BUS:
-+ sbaddr = OSL_PCI_READ_CONFIG(si->osh, PCI_BAR0_WIN, sizeof (uint32));
-+ break;
-+
-+#ifdef BCMJTAG
-+ case JTAG_BUS:
-+ sbaddr = (uint32)si->curmap;
-+ break;
-+#endif /* BCMJTAG */
-+
-+ default:
-+ ASSERT(0);
-+ }
-+
-+ if (!GOODCOREADDR(sbaddr))
-+ return BADIDX;
-+
-+ return ((sbaddr - SB_ENUM_BASE) / SB_CORE_SIZE);
-+}
-+
-+uint
-+sb_corevendor(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+
-+ return ((R_SBREG(si, &(sb)->sbidhigh) & SBIDH_VC_MASK) >> SBIDH_VC_SHIFT);
-+}
-+
-+uint
-+sb_corerev(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+ uint sbidh;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+ sbidh = R_SBREG(si, &(sb)->sbidhigh);
-+
-+ return (SBCOREREV(sbidh));
-+}
-+
-+void *
-+sb_osh(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return si->osh;
-+}
-+
-+#define SBTML_ALLOW (SBTML_PE | SBTML_FGC | SBTML_FL_MASK)
-+
-+/* set/clear sbtmstatelow core-specific flags */
-+uint32
-+sb_coreflags(sb_t *sbh, uint32 mask, uint32 val)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+ uint32 w;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+
-+ ASSERT((val & ~mask) == 0);
-+ ASSERT((mask & ~SBTML_ALLOW) == 0);
-+
-+ /* mask and set */
-+ if (mask || val) {
-+ w = (R_SBREG(si, &sb->sbtmstatelow) & ~mask) | val;
-+ W_SBREG(si, &sb->sbtmstatelow, w);
-+ }
-+
-+ /* return the new value */
-+ return (R_SBREG(si, &sb->sbtmstatelow) & SBTML_ALLOW);
-+}
-+
-+/* set/clear sbtmstatehigh core-specific flags */
-+uint32
-+sb_coreflagshi(sb_t *sbh, uint32 mask, uint32 val)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+ uint32 w;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+
-+ ASSERT((val & ~mask) == 0);
-+ ASSERT((mask & ~SBTMH_FL_MASK) == 0);
-+
-+ /* mask and set */
-+ if (mask || val) {
-+ w = (R_SBREG(si, &sb->sbtmstatehigh) & ~mask) | val;
-+ W_SBREG(si, &sb->sbtmstatehigh, w);
-+ }
-+
-+ /* return the new value */
-+ return (R_SBREG(si, &sb->sbtmstatehigh) & SBTMH_FL_MASK);
-+}
-+
-+/* caller needs to take care of core-specific bist hazards */
-+int
-+sb_corebist(sb_t *sbh, uint coreid, uint coreunit)
-+{
-+ uint32 sblo;
-+ uint coreidx;
-+ sb_info_t *si;
-+ int result = 0;
-+
-+ si = SB_INFO(sbh);
-+
-+ coreidx = sb_findcoreidx(si, coreid, coreunit);
-+ if (!GOODIDX(coreidx))
-+ result = BCME_ERROR;
-+ else {
-+ sblo = sb_corereg(si, coreidx, SBCONFIGOFF + OFFSETOF(sbconfig_t, sbtmstatelow), 0, 0);
-+ sb_corereg(si, coreidx, SBCONFIGOFF + OFFSETOF(sbconfig_t, sbtmstatelow), ~0, (sblo | SBTML_FGC | SBTML_BE));
-+
-+ SPINWAIT(((sb_corereg(si, coreidx, SBCONFIGOFF + OFFSETOF(sbconfig_t, sbtmstatehigh), 0, 0) & SBTMH_BISTD) == 0), 100000);
-+
-+ if (sb_corereg(si, coreidx, SBCONFIGOFF + OFFSETOF(sbconfig_t, sbtmstatehigh), 0, 0) & SBTMH_BISTF)
-+ result = BCME_ERROR;
-+
-+ sb_corereg(si, coreidx, SBCONFIGOFF + OFFSETOF(sbconfig_t, sbtmstatelow), ~0, sblo);
-+ }
-+
-+ return result;
-+}
-+
-+bool
-+sb_iscoreup(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+
-+ si = SB_INFO(sbh);
-+ sb = REGS2SB(si->curmap);
-+
-+ return ((R_SBREG(si, &(sb)->sbtmstatelow) & (SBTML_RESET | SBTML_REJ_MASK | SBTML_CLK)) == SBTML_CLK);
-+}
-+
-+/*
-+ * Switch to 'coreidx', issue a single arbitrary 32bit register mask&set operation,
-+ * switch back to the original core, and return the new value.
-+ */
-+static uint
-+sb_corereg(sb_info_t *si, uint coreidx, uint regoff, uint mask, uint val)
-+{
-+ uint origidx;
-+ uint32 *r;
-+ uint w;
-+ uint intr_val = 0;
-+
-+ ASSERT(GOODIDX(coreidx));
-+ ASSERT(regoff < SB_CORE_SIZE);
-+ ASSERT((val & ~mask) == 0);
-+
-+ INTR_OFF(si, intr_val);
-+
-+ /* save current core index */
-+ origidx = sb_coreidx(&si->sb);
-+
-+ /* switch core */
-+ r = (uint32*) ((uchar*) sb_setcoreidx(&si->sb, coreidx) + regoff);
-+
-+ /* mask and set */
-+ if (mask || val) {
-+ if (regoff >= SBCONFIGOFF) {
-+ w = (R_SBREG(si, r) & ~mask) | val;
-+ W_SBREG(si, r, w);
-+ } else {
-+ w = (R_REG(r) & ~mask) | val;
-+ W_REG(r, w);
-+ }
-+ }
-+
-+ /* readback */
-+ if (regoff >= SBCONFIGOFF)
-+ w = R_SBREG(si, r);
-+ else
-+ w = R_REG(r);
-+
-+ /* restore core index */
-+ if (origidx != coreidx)
-+ sb_setcoreidx(&si->sb, origidx);
-+
-+ INTR_RESTORE(si, intr_val);
-+ return (w);
-+}
-+
-+#define DWORD_ALIGN(x) (x & ~(0x03))
-+#define BYTE_POS(x) (x & 0x3)
-+#define WORD_POS(x) (x & 0x1)
-+
-+#define BYTE_SHIFT(x) (8 * BYTE_POS(x))
-+#define WORD_SHIFT(x) (16 * WORD_POS(x))
-+
-+#define BYTE_VAL(a, x) ((a >> BYTE_SHIFT(x)) & 0xFF)
-+#define WORD_VAL(a, x) ((a >> WORD_SHIFT(x)) & 0xFFFF)
-+
-+#define read_pci_cfg_byte(a) \
-+ (BYTE_VAL(OSL_PCI_READ_CONFIG(si->osh, DWORD_ALIGN(a), 4), a) & 0xff)
-+
-+#define read_pci_cfg_write(a) \
-+ (WORD_VAL(OSL_PCI_READ_CONFIG(si->osh, DWORD_ALIGN(a), 4), a) & 0xffff)
-+
-+
-+/* scan the sb enumerated space to identify all cores */
-+static void
-+BCMINITFN(sb_scan)(sb_info_t *si)
-+{
-+ uint origidx;
-+ uint i;
-+ bool pci;
-+ uint pciidx;
-+ uint pcirev;
-+
-+
-+
-+ /* numcores should already be set */
-+ ASSERT((si->numcores > 0) && (si->numcores <= SB_MAXCORES));
-+
-+ /* save current core index */
-+ origidx = sb_coreidx(&si->sb);
-+
-+ si->sb.buscorerev = NOREV;
-+ si->sb.buscoreidx = BADIDX;
-+
-+ si->gpioidx = BADIDX;
-+
-+ pci = FALSE;
-+ pcirev = NOREV;
-+ pciidx = BADIDX;
-+
-+ for (i = 0; i < si->numcores; i++) {
-+ sb_setcoreidx(&si->sb, i);
-+ si->coreid[i] = sb_coreid(&si->sb);
-+
-+ if (si->coreid[i] == SB_PCI) {
-+ pciidx = i;
-+ pcirev = sb_corerev(&si->sb);
-+ pci = TRUE;
-+ }
-+ }
-+ if (pci) {
-+ si->sb.buscoretype = SB_PCI;
-+ si->sb.buscorerev = pcirev;
-+ si->sb.buscoreidx = pciidx;
-+ }
-+
-+ /*
-+ * Find the gpio "controlling core" type and index.
-+ * Precedence:
-+ * - if there's a chip common core - use that
-+ * - else if there's a pci core (rev >= 2) - use that
-+ * - else there had better be an extif core (4710 only)
-+ */
-+ if (GOODIDX(sb_findcoreidx(si, SB_CC, 0))) {
-+ si->gpioidx = sb_findcoreidx(si, SB_CC, 0);
-+ si->gpioid = SB_CC;
-+ } else if (PCI(si) && (si->sb.buscorerev >= 2)) {
-+ si->gpioidx = si->sb.buscoreidx;
-+ si->gpioid = SB_PCI;
-+ } else if (sb_findcoreidx(si, SB_EXTIF, 0)) {
-+ si->gpioidx = sb_findcoreidx(si, SB_EXTIF, 0);
-+ si->gpioid = SB_EXTIF;
-+ } else
-+ ASSERT(si->gpioidx != BADIDX);
-+
-+ /* return to original core index */
-+ sb_setcoreidx(&si->sb, origidx);
-+}
-+
-+/* may be called with core in reset */
-+void
-+sb_detach(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint idx;
-+
-+ si = SB_INFO(sbh);
-+
-+ if (si == NULL)
-+ return;
-+
-+ if (BUSTYPE(si->sb.bustype) == SB_BUS)
-+ for (idx = 0; idx < SB_MAXCORES; idx++)
-+ if (si->regs[idx]) {
-+ REG_UNMAP(si->regs[idx]);
-+ si->regs[idx] = NULL;
-+ }
-+
-+ if (si != &ksi)
-+ MFREE(si->osh, si, sizeof (sb_info_t));
-+}
-+
-+/* use pci dev id to determine chip id for chips not having a chipcommon core */
-+static uint
-+BCMINITFN(sb_pcidev2chip)(uint pcidev)
-+{
-+ if ((pcidev >= BCM4710_DEVICE_ID) && (pcidev <= BCM47XX_USB_ID))
-+ return (BCM4710_DEVICE_ID);
-+ if ((pcidev >= BCM4402_DEVICE_ID) && (pcidev <= BCM4402_V90_ID))
-+ return (BCM4402_DEVICE_ID);
-+ if (pcidev == BCM4401_ENET_ID)
-+ return (BCM4402_DEVICE_ID);
-+ if ((pcidev >= BCM4307_V90_ID) && (pcidev <= BCM4307_D11B_ID))
-+ return (BCM4307_DEVICE_ID);
-+ if (pcidev == BCM4301_DEVICE_ID)
-+ return (BCM4301_DEVICE_ID);
-+
-+ return (0);
-+}
-+
-+/* convert chip number to number of i/o cores */
-+static uint
-+BCMINITFN(sb_chip2numcores)(uint chip)
-+{
-+ if (chip == BCM4710_DEVICE_ID)
-+ return (9);
-+ if (chip == BCM4402_DEVICE_ID)
-+ return (3);
-+ if ((chip == BCM4301_DEVICE_ID) || (chip == BCM4307_DEVICE_ID))
-+ return (5);
-+ if (chip == BCM4306_DEVICE_ID) /* < 4306c0 */
-+ return (6);
-+ if (chip == BCM4704_DEVICE_ID)
-+ return (9);
-+ if (chip == BCM5365_DEVICE_ID)
-+ return (7);
-+
-+ SB_ERROR(("sb_chip2numcores: unsupported chip 0x%x\n", chip));
-+ ASSERT(0);
-+ return (1);
-+}
-+
-+/* return index of coreid or BADIDX if not found */
-+static uint
-+sb_findcoreidx( sb_info_t *si, uint coreid, uint coreunit)
-+{
-+ uint found;
-+ uint i;
-+
-+ found = 0;
-+
-+ for (i = 0; i < si->numcores; i++)
-+ if (si->coreid[i] == coreid) {
-+ if (found == coreunit)
-+ return (i);
-+ found++;
-+ }
-+
-+ return (BADIDX);
-+}
-+
-+/*
-+ * this function changes logical "focus" to the indiciated core,
-+ * must be called with interrupt off.
-+ * Moreover, callers should keep interrupts off during switching out of and back to d11 core
-+ */
-+void*
-+sb_setcoreidx(sb_t *sbh, uint coreidx)
-+{
-+ sb_info_t *si;
-+ uint32 sbaddr;
-+
-+ si = SB_INFO(sbh);
-+
-+ if (coreidx >= si->numcores)
-+ return (NULL);
-+
-+ /*
-+ * If the user has provided an interrupt mask enabled function,
-+ * then assert interrupts are disabled before switching the core.
-+ */
-+ ASSERT((si->intrsenabled_fn == NULL) || !(*(si)->intrsenabled_fn)((si)->intr_arg));
-+
-+ sbaddr = SB_ENUM_BASE + (coreidx * SB_CORE_SIZE);
-+
-+ switch (BUSTYPE(si->sb.bustype)) {
-+ case SB_BUS:
-+ /* map new one */
-+ if (!si->regs[coreidx]) {
-+ si->regs[coreidx] = (void*)REG_MAP(sbaddr, SB_CORE_SIZE);
-+ ASSERT(GOODREGS(si->regs[coreidx]));
-+ }
-+ si->curmap = si->regs[coreidx];
-+ break;
-+
-+ case PCI_BUS:
-+ /* point bar0 window */
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_BAR0_WIN, 4, sbaddr);
-+ break;
-+
-+#ifdef BCMJTAG
-+ case JTAG_BUS:
-+ /* map new one */
-+ if (!si->regs[coreidx]) {
-+ si->regs[coreidx] = (void *)sbaddr;
-+ ASSERT(GOODREGS(si->regs[coreidx]));
-+ }
-+ si->curmap = si->regs[coreidx];
-+ break;
-+#endif /* BCMJTAG */
-+ }
-+
-+ si->curidx = coreidx;
-+
-+ return (si->curmap);
-+}
-+
-+/*
-+ * this function changes logical "focus" to the indiciated core,
-+ * must be called with interrupt off.
-+ * Moreover, callers should keep interrupts off during switching out of and back to d11 core
-+ */
-+void*
-+sb_setcore(sb_t *sbh, uint coreid, uint coreunit)
-+{
-+ sb_info_t *si;
-+ uint idx;
-+
-+ si = SB_INFO(sbh);
-+ idx = sb_findcoreidx(si, coreid, coreunit);
-+ if (!GOODIDX(idx))
-+ return (NULL);
-+
-+ return (sb_setcoreidx(sbh, idx));
-+}
-+
-+/* return chip number */
-+uint
-+BCMINITFN(sb_chip)(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.chip);
-+}
-+
-+/* return chip revision number */
-+uint
-+BCMINITFN(sb_chiprev)(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.chiprev);
-+}
-+
-+/* return chip common revision number */
-+uint
-+BCMINITFN(sb_chipcrev)(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.ccrev);
-+}
-+
-+/* return chip package option */
-+uint
-+BCMINITFN(sb_chippkg)(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.chippkg);
-+}
-+
-+/* return PCI core rev. */
-+uint
-+BCMINITFN(sb_pcirev)(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.buscorerev);
-+}
-+
-+bool
-+BCMINITFN(sb_war16165)(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ return (PCI(si) && (si->sb.buscorerev <= 10));
-+}
-+
-+/* return board vendor id */
-+uint
-+BCMINITFN(sb_boardvendor)(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.boardvendor);
-+}
-+
-+/* return boardtype */
-+uint
-+BCMINITFN(sb_boardtype)(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ char *var;
-+
-+ si = SB_INFO(sbh);
-+
-+ if (BUSTYPE(si->sb.bustype) == SB_BUS && si->sb.boardtype == 0xffff) {
-+ /* boardtype format is a hex string */
-+ si->sb.boardtype = getintvar(NULL, "boardtype");
-+
-+ /* backward compatibility for older boardtype string format */
-+ if ((si->sb.boardtype == 0) && (var = getvar(NULL, "boardtype"))) {
-+ if (!strcmp(var, "bcm94710dev"))
-+ si->sb.boardtype = BCM94710D_BOARD;
-+ else if (!strcmp(var, "bcm94710ap"))
-+ si->sb.boardtype = BCM94710AP_BOARD;
-+ else if (!strcmp(var, "bu4710"))
-+ si->sb.boardtype = BU4710_BOARD;
-+ else if (!strcmp(var, "bcm94702mn"))
-+ si->sb.boardtype = BCM94702MN_BOARD;
-+ else if (!strcmp(var, "bcm94710r1"))
-+ si->sb.boardtype = BCM94710R1_BOARD;
-+ else if (!strcmp(var, "bcm94710r4"))
-+ si->sb.boardtype = BCM94710R4_BOARD;
-+ else if (!strcmp(var, "bcm94702cpci"))
-+ si->sb.boardtype = BCM94702CPCI_BOARD;
-+ else if (!strcmp(var, "bcm95380_rr"))
-+ si->sb.boardtype = BCM95380RR_BOARD;
-+ }
-+ }
-+
-+ return (si->sb.boardtype);
-+}
-+
-+/* return bus type of sbh device */
-+uint
-+sb_bus(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ return (si->sb.bustype);
-+}
-+
-+/* return bus core type */
-+uint
-+sb_buscoretype(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ return (si->sb.buscoretype);
-+}
-+
-+/* return bus core revision */
-+uint
-+sb_buscorerev(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ si = SB_INFO(sbh);
-+
-+ return (si->sb.buscorerev);
-+}
-+
-+/* return list of found cores */
-+uint
-+sb_corelist(sb_t *sbh, uint coreid[])
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ bcopy((uchar*)si->coreid, (uchar*)coreid, (si->numcores * sizeof (uint)));
-+ return (si->numcores);
-+}
-+
-+/* return current register mapping */
-+void *
-+sb_coreregs(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ ASSERT(GOODREGS(si->curmap));
-+
-+ return (si->curmap);
-+}
-+
-+
-+/* do buffered registers update */
-+void
-+sb_commit(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint origidx;
-+ uint intr_val = 0;
-+
-+ si = SB_INFO(sbh);
-+
-+ origidx = si->curidx;
-+ ASSERT(GOODIDX(origidx));
-+
-+ INTR_OFF(si, intr_val);
-+
-+ /* switch over to chipcommon core if there is one, else use pci */
-+ if (si->sb.ccrev != NOREV) {
-+ chipcregs_t *ccregs = (chipcregs_t *)sb_setcore(sbh, SB_CC, 0);
-+
-+ /* do the buffer registers update */
-+ W_REG(&ccregs->broadcastaddress, SB_COMMIT);
-+ W_REG(&ccregs->broadcastdata, 0x0);
-+ } else if (PCI(si)) {
-+ sbpciregs_t *pciregs = (sbpciregs_t *)sb_setcore(sbh, SB_PCI, 0);
-+
-+ /* do the buffer registers update */
-+ W_REG(&pciregs->bcastaddr, SB_COMMIT);
-+ W_REG(&pciregs->bcastdata, 0x0);
-+ } else
-+ ASSERT(0);
-+
-+ /* restore core index */
-+ sb_setcoreidx(sbh, origidx);
-+ INTR_RESTORE(si, intr_val);
-+}
-+
-+/* reset and re-enable a core */
-+void
-+sb_core_reset(sb_t *sbh, uint32 bits)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+ volatile uint32 dummy;
-+
-+ si = SB_INFO(sbh);
-+ ASSERT(GOODREGS(si->curmap));
-+ sb = REGS2SB(si->curmap);
-+
-+ /*
-+ * Must do the disable sequence first to work for arbitrary current core state.
-+ */
-+ sb_core_disable(sbh, bits);
-+
-+ /*
-+ * Now do the initialization sequence.
-+ */
-+
-+ /* set reset while enabling the clock and forcing them on throughout the core */
-+ W_SBREG(si, &sb->sbtmstatelow, (SBTML_FGC | SBTML_CLK | SBTML_RESET | bits));
-+ dummy = R_SBREG(si, &sb->sbtmstatelow);
-+ OSL_DELAY(1);
-+
-+ if (R_SBREG(si, &sb->sbtmstatehigh) & SBTMH_SERR) {
-+ W_SBREG(si, &sb->sbtmstatehigh, 0);
-+ }
-+ if ((dummy = R_SBREG(si, &sb->sbimstate)) & (SBIM_IBE | SBIM_TO)) {
-+ AND_SBREG(si, &sb->sbimstate, ~(SBIM_IBE | SBIM_TO));
-+ }
-+
-+ /* clear reset and allow it to propagate throughout the core */
-+ W_SBREG(si, &sb->sbtmstatelow, (SBTML_FGC | SBTML_CLK | bits));
-+ dummy = R_SBREG(si, &sb->sbtmstatelow);
-+ OSL_DELAY(1);
-+
-+ /* leave clock enabled */
-+ W_SBREG(si, &sb->sbtmstatelow, (SBTML_CLK | bits));
-+ dummy = R_SBREG(si, &sb->sbtmstatelow);
-+ OSL_DELAY(1);
-+}
-+
-+void
-+sb_core_tofixup(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+
-+ si = SB_INFO(sbh);
-+
-+ if ( (BUSTYPE(si->sb.bustype) != PCI_BUS) || (PCI(si) && (si->sb.buscorerev >= 5)) )
-+ return;
-+
-+ ASSERT(GOODREGS(si->curmap));
-+ sb = REGS2SB(si->curmap);
-+
-+ if (BUSTYPE(si->sb.bustype) == SB_BUS) {
-+ SET_SBREG(si, &sb->sbimconfiglow,
-+ SBIMCL_RTO_MASK | SBIMCL_STO_MASK,
-+ (0x5 << SBIMCL_RTO_SHIFT) | 0x3);
-+ } else {
-+ if (sb_coreid(sbh) == SB_PCI) {
-+ SET_SBREG(si, &sb->sbimconfiglow,
-+ SBIMCL_RTO_MASK | SBIMCL_STO_MASK,
-+ (0x3 << SBIMCL_RTO_SHIFT) | 0x2);
-+ } else {
-+ SET_SBREG(si, &sb->sbimconfiglow, (SBIMCL_RTO_MASK | SBIMCL_STO_MASK), 0);
-+ }
-+ }
-+
-+ sb_commit(sbh);
-+}
-+
-+/*
-+ * Set the initiator timeout for the "master core".
-+ * The master core is defined to be the core in control
-+ * of the chip and so it issues accesses to non-memory
-+ * locations (Because of dma *any* core can access memeory).
-+ *
-+ * The routine uses the bus to decide who is the master:
-+ * SB_BUS => mips
-+ * JTAG_BUS => chipc
-+ * PCI_BUS => pci
-+ *
-+ * This routine exists so callers can disable initiator
-+ * timeouts so accesses to very slow devices like otp
-+ * won't cause an abort. The routine allows arbitrary
-+ * settings of the service and request timeouts, though.
-+ *
-+ * Returns the timeout state before changing it or -1
-+ * on error.
-+ */
-+
-+#define TO_MASK (SBIMCL_RTO_MASK | SBIMCL_STO_MASK)
-+
-+uint32
-+sb_set_initiator_to(sb_t *sbh, uint32 to)
-+{
-+ sb_info_t *si;
-+ uint origidx, idx;
-+ uint intr_val = 0;
-+ uint32 tmp, ret = 0xffffffff;
-+ sbconfig_t *sb;
-+
-+ si = SB_INFO(sbh);
-+
-+ if ((to & ~TO_MASK) != 0)
-+ return ret;
-+
-+ /* Figure out the master core */
-+ idx = BADIDX;
-+ switch (BUSTYPE(si->sb.bustype)) {
-+ case PCI_BUS:
-+ idx = si->sb.buscoreidx;
-+ break;
-+ case JTAG_BUS:
-+ idx = SB_CC_IDX;
-+ break;
-+ case SB_BUS:
-+ if ((idx = sb_findcoreidx(si, SB_MIPS33, 0)) == BADIDX)
-+ idx = sb_findcoreidx(si, SB_MIPS, 0);
-+ break;
-+ default:
-+ ASSERT(0);
-+ }
-+ if (idx == BADIDX)
-+ return ret;
-+
-+ INTR_OFF(si, intr_val);
-+ origidx = sb_coreidx(sbh);
-+
-+ sb = REGS2SB(sb_setcoreidx(sbh, idx));
-+
-+ tmp = R_SBREG(si, &sb->sbimconfiglow);
-+ ret = tmp & TO_MASK;
-+ W_SBREG(si, &sb->sbimconfiglow, (tmp & ~TO_MASK) | to);
-+
-+ sb_commit(sbh);
-+ sb_setcoreidx(sbh, origidx);
-+ INTR_RESTORE(si, intr_val);
-+ return ret;
-+}
-+
-+void
-+sb_core_disable(sb_t *sbh, uint32 bits)
-+{
-+ sb_info_t *si;
-+ volatile uint32 dummy;
-+ uint32 rej;
-+ sbconfig_t *sb;
-+
-+ si = SB_INFO(sbh);
-+
-+ ASSERT(GOODREGS(si->curmap));
-+ sb = REGS2SB(si->curmap);
-+
-+ /* if core is already in reset, just return */
-+ if (R_SBREG(si, &sb->sbtmstatelow) & SBTML_RESET)
-+ return;
-+
-+ /* reject value changed between sonics 2.2 and 2.3 */
-+ if (si->sb.sonicsrev == SONICS_2_2)
-+ rej = (1 << SBTML_REJ_SHIFT);
-+ else
-+ rej = (2 << SBTML_REJ_SHIFT);
-+
-+ /* if clocks are not enabled, put into reset and return */
-+ if ((R_SBREG(si, &sb->sbtmstatelow) & SBTML_CLK) == 0)
-+ goto disable;
-+
-+ /* set target reject and spin until busy is clear (preserve core-specific bits) */
-+ OR_SBREG(si, &sb->sbtmstatelow, rej);
-+ dummy = R_SBREG(si, &sb->sbtmstatelow);
-+ OSL_DELAY(1);
-+ SPINWAIT((R_SBREG(si, &sb->sbtmstatehigh) & SBTMH_BUSY), 100000);
-+
-+ if (R_SBREG(si, &sb->sbidlow) & SBIDL_INIT) {
-+ OR_SBREG(si, &sb->sbimstate, SBIM_RJ);
-+ dummy = R_SBREG(si, &sb->sbimstate);
-+ OSL_DELAY(1);
-+ SPINWAIT((R_SBREG(si, &sb->sbimstate) & SBIM_BY), 100000);
-+ }
-+
-+ /* set reset and reject while enabling the clocks */
-+ W_SBREG(si, &sb->sbtmstatelow, (bits | SBTML_FGC | SBTML_CLK | rej | SBTML_RESET));
-+ dummy = R_SBREG(si, &sb->sbtmstatelow);
-+ OSL_DELAY(10);
-+
-+ /* don't forget to clear the initiator reject bit */
-+ if (R_SBREG(si, &sb->sbidlow) & SBIDL_INIT)
-+ AND_SBREG(si, &sb->sbimstate, ~SBIM_RJ);
-+
-+disable:
-+ /* leave reset and reject asserted */
-+ W_SBREG(si, &sb->sbtmstatelow, (bits | rej | SBTML_RESET));
-+ OSL_DELAY(1);
-+}
-+
-+/* set chip watchdog reset timer to fire in 'ticks' backplane cycles */
-+void
-+sb_watchdog(sb_t *sbh, uint ticks)
-+{
-+ sb_info_t *si = SB_INFO(sbh);
-+
-+ /* instant NMI */
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ sb_corereg(si, 0, OFFSETOF(chipcregs_t, watchdog), ~0, ticks);
-+ break;
-+ case SB_EXTIF:
-+ sb_corereg(si, si->gpioidx, OFFSETOF(extifregs_t, watchdog), ~0, ticks);
-+ break;
-+ }
-+}
-+
-+
-+/*
-+ * Configure the pci core for pci client (NIC) action
-+ * coremask is the bitvec of cores by index to be enabled.
-+ */
-+void
-+sb_pci_setup(sb_t *sbh, uint coremask)
-+{
-+ sb_info_t *si;
-+ sbconfig_t *sb;
-+ sbpciregs_t *pciregs;
-+ uint32 sbflag;
-+ uint32 w;
-+ uint idx;
-+
-+ si = SB_INFO(sbh);
-+
-+ /* if not pci bus, we're done */
-+ if (BUSTYPE(si->sb.bustype) != PCI_BUS)
-+ return;
-+
-+ ASSERT(PCI(si));
-+ ASSERT(si->sb.buscoreidx != BADIDX);
-+
-+ /* get current core index */
-+ idx = si->curidx;
-+
-+ /* we interrupt on this backplane flag number */
-+ ASSERT(GOODREGS(si->curmap));
-+ sb = REGS2SB(si->curmap);
-+ sbflag = R_SBREG(si, &sb->sbtpsflag) & SBTPS_NUM0_MASK;
-+
-+ /* switch over to pci core */
-+ pciregs = (sbpciregs_t*) sb_setcoreidx(sbh, si->sb.buscoreidx);
-+ sb = REGS2SB(pciregs);
-+
-+ /*
-+ * Enable sb->pci interrupts. Assume
-+ * PCI rev 2.3 support was added in pci core rev 6 and things changed..
-+ */
-+ if ((PCI(si) && ((si->sb.buscorerev) >= 6))) {
-+ /* pci config write to set this core bit in PCIIntMask */
-+ w = OSL_PCI_READ_CONFIG(si->osh, PCI_INT_MASK, sizeof(uint32));
-+ w |= (coremask << PCI_SBIM_SHIFT);
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_INT_MASK, sizeof(uint32), w);
-+ } else {
-+ /* set sbintvec bit for our flag number */
-+ OR_SBREG(si, &sb->sbintvec, (1 << sbflag));
-+ }
-+
-+ if (PCI(si)) {
-+ OR_REG(&pciregs->sbtopci2, (SBTOPCI_PREF|SBTOPCI_BURST));
-+ if (si->sb.buscorerev >= 11)
-+ OR_REG(&pciregs->sbtopci2, SBTOPCI_RC_READMULTI);
-+ if (si->sb.buscorerev < 5) {
-+ SET_SBREG(si, &sb->sbimconfiglow, SBIMCL_RTO_MASK | SBIMCL_STO_MASK,
-+ (0x3 << SBIMCL_RTO_SHIFT) | 0x2);
-+ sb_commit(sbh);
-+ }
-+ }
-+
-+ /* switch back to previous core */
-+ sb_setcoreidx(sbh, idx);
-+}
-+
-+uint32
-+sb_base(uint32 admatch)
-+{
-+ uint32 base;
-+ uint type;
-+
-+ type = admatch & SBAM_TYPE_MASK;
-+ ASSERT(type < 3);
-+
-+ base = 0;
-+
-+ if (type == 0) {
-+ base = admatch & SBAM_BASE0_MASK;
-+ } else if (type == 1) {
-+ ASSERT(!(admatch & SBAM_ADNEG)); /* neg not supported */
-+ base = admatch & SBAM_BASE1_MASK;
-+ } else if (type == 2) {
-+ ASSERT(!(admatch & SBAM_ADNEG)); /* neg not supported */
-+ base = admatch & SBAM_BASE2_MASK;
-+ }
-+
-+ return (base);
-+}
-+
-+uint32
-+sb_size(uint32 admatch)
-+{
-+ uint32 size;
-+ uint type;
-+
-+ type = admatch & SBAM_TYPE_MASK;
-+ ASSERT(type < 3);
-+
-+ size = 0;
-+
-+ if (type == 0) {
-+ size = 1 << (((admatch & SBAM_ADINT0_MASK) >> SBAM_ADINT0_SHIFT) + 1);
-+ } else if (type == 1) {
-+ ASSERT(!(admatch & SBAM_ADNEG)); /* neg not supported */
-+ size = 1 << (((admatch & SBAM_ADINT1_MASK) >> SBAM_ADINT1_SHIFT) + 1);
-+ } else if (type == 2) {
-+ ASSERT(!(admatch & SBAM_ADNEG)); /* neg not supported */
-+ size = 1 << (((admatch & SBAM_ADINT2_MASK) >> SBAM_ADINT2_SHIFT) + 1);
-+ }
-+
-+ return (size);
-+}
-+
-+/* return the core-type instantiation # of the current core */
-+uint
-+sb_coreunit(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint idx;
-+ uint coreid;
-+ uint coreunit;
-+ uint i;
-+
-+ si = SB_INFO(sbh);
-+ coreunit = 0;
-+
-+ idx = si->curidx;
-+
-+ ASSERT(GOODREGS(si->curmap));
-+ coreid = sb_coreid(sbh);
-+
-+ /* count the cores of our type */
-+ for (i = 0; i < idx; i++)
-+ if (si->coreid[i] == coreid)
-+ coreunit++;
-+
-+ return (coreunit);
-+}
-+
-+static INLINE uint32
-+factor6(uint32 x)
-+{
-+ switch (x) {
-+ case CC_F6_2: return 2;
-+ case CC_F6_3: return 3;
-+ case CC_F6_4: return 4;
-+ case CC_F6_5: return 5;
-+ case CC_F6_6: return 6;
-+ case CC_F6_7: return 7;
-+ default: return 0;
-+ }
-+}
-+
-+/* calculate the speed the SB would run at given a set of clockcontrol values */
-+uint32
-+sb_clock_rate(uint32 pll_type, uint32 n, uint32 m)
-+{
-+ uint32 n1, n2, clock, m1, m2, m3, mc;
-+
-+ n1 = n & CN_N1_MASK;
-+ n2 = (n & CN_N2_MASK) >> CN_N2_SHIFT;
-+
-+ if (pll_type == PLL_TYPE6) {
-+ if (m & CC_T6_MMASK)
-+ return CC_T6_M1;
-+ else
-+ return CC_T6_M0;
-+ } else if ((pll_type == PLL_TYPE1) ||
-+ (pll_type == PLL_TYPE3) ||
-+ (pll_type == PLL_TYPE4) ||
-+ (pll_type == PLL_TYPE7)) {
-+ n1 = factor6(n1);
-+ n2 += CC_F5_BIAS;
-+ } else if (pll_type == PLL_TYPE2) {
-+ n1 += CC_T2_BIAS;
-+ n2 += CC_T2_BIAS;
-+ ASSERT((n1 >= 2) && (n1 <= 7));
-+ ASSERT((n2 >= 5) && (n2 <= 23));
-+ } else if (pll_type == PLL_TYPE5) {
-+ return (100000000);
-+ } else
-+ ASSERT(0);
-+ /* PLL types 3 and 7 use BASE2 (25Mhz) */
-+ if ((pll_type == PLL_TYPE3) ||
-+ (pll_type == PLL_TYPE7)) {
-+ clock = CC_CLOCK_BASE2 * n1 * n2;
-+ }
-+ else
-+ clock = CC_CLOCK_BASE1 * n1 * n2;
-+
-+ if (clock == 0)
-+ return 0;
-+
-+ m1 = m & CC_M1_MASK;
-+ m2 = (m & CC_M2_MASK) >> CC_M2_SHIFT;
-+ m3 = (m & CC_M3_MASK) >> CC_M3_SHIFT;
-+ mc = (m & CC_MC_MASK) >> CC_MC_SHIFT;
-+
-+ if ((pll_type == PLL_TYPE1) ||
-+ (pll_type == PLL_TYPE3) ||
-+ (pll_type == PLL_TYPE4) ||
-+ (pll_type == PLL_TYPE7)) {
-+ m1 = factor6(m1);
-+ if ((pll_type == PLL_TYPE1) || (pll_type == PLL_TYPE3))
-+ m2 += CC_F5_BIAS;
-+ else
-+ m2 = factor6(m2);
-+ m3 = factor6(m3);
-+
-+ switch (mc) {
-+ case CC_MC_BYPASS: return (clock);
-+ case CC_MC_M1: return (clock / m1);
-+ case CC_MC_M1M2: return (clock / (m1 * m2));
-+ case CC_MC_M1M2M3: return (clock / (m1 * m2 * m3));
-+ case CC_MC_M1M3: return (clock / (m1 * m3));
-+ default: return (0);
-+ }
-+ } else {
-+ ASSERT(pll_type == PLL_TYPE2);
-+
-+ m1 += CC_T2_BIAS;
-+ m2 += CC_T2M2_BIAS;
-+ m3 += CC_T2_BIAS;
-+ ASSERT((m1 >= 2) && (m1 <= 7));
-+ ASSERT((m2 >= 3) && (m2 <= 10));
-+ ASSERT((m3 >= 2) && (m3 <= 7));
-+
-+ if ((mc & CC_T2MC_M1BYP) == 0)
-+ clock /= m1;
-+ if ((mc & CC_T2MC_M2BYP) == 0)
-+ clock /= m2;
-+ if ((mc & CC_T2MC_M3BYP) == 0)
-+ clock /= m3;
-+
-+ return(clock);
-+ }
-+}
-+
-+/* returns the current speed the SB is running at */
-+uint32
-+sb_clock(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ extifregs_t *eir;
-+ chipcregs_t *cc;
-+ uint32 n, m;
-+ uint idx;
-+ uint32 pll_type, rate;
-+ uint intr_val = 0;
-+
-+ si = SB_INFO(sbh);
-+ idx = si->curidx;
-+ pll_type = PLL_TYPE1;
-+
-+ INTR_OFF(si, intr_val);
-+
-+ /* switch to extif or chipc core */
-+ if ((eir = (extifregs_t *) sb_setcore(sbh, SB_EXTIF, 0))) {
-+ n = R_REG(&eir->clockcontrol_n);
-+ m = R_REG(&eir->clockcontrol_sb);
-+ } else if ((cc = (chipcregs_t *) sb_setcore(sbh, SB_CC, 0))) {
-+ pll_type = R_REG(&cc->capabilities) & CAP_PLL_MASK;
-+ n = R_REG(&cc->clockcontrol_n);
-+ if (pll_type == PLL_TYPE6)
-+ m = R_REG(&cc->clockcontrol_mips);
-+ else if (pll_type == PLL_TYPE3)
-+ {
-+ // Added by Chen-I for 5365
-+ if (BCMINIT(sb_chip)(sbh) == BCM5365_DEVICE_ID)
-+ m = R_REG(&cc->clockcontrol_sb);
-+ else
-+ m = R_REG(&cc->clockcontrol_m2);
-+ }
-+ else
-+ m = R_REG(&cc->clockcontrol_sb);
-+ } else {
-+ INTR_RESTORE(si, intr_val);
-+ return 0;
-+ }
-+
-+ // Added by Chen-I for 5365
-+ if (BCMINIT(sb_chip)(sbh) == BCM5365_DEVICE_ID)
-+ {
-+ rate = 100000000;
-+ }
-+ else
-+ {
-+ /* calculate rate */
-+ rate = sb_clock_rate(pll_type, n, m);
-+ if (pll_type == PLL_TYPE3)
-+ rate = rate / 2;
-+ }
-+
-+ /* switch back to previous core */
-+ sb_setcoreidx(sbh, idx);
-+
-+ INTR_RESTORE(si, intr_val);
-+
-+ return rate;
-+}
-+
-+/* change logical "focus" to the gpio core for optimized access */
-+void*
-+sb_gpiosetcore(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ return (sb_setcoreidx(sbh, si->gpioidx));
-+}
-+
-+/* mask&set gpiocontrol bits */
-+uint32
-+sb_gpiocontrol(sb_t *sbh, uint32 mask, uint32 val, uint8 priority)
-+{
-+ sb_info_t *si;
-+ uint regoff;
-+
-+ si = SB_INFO(sbh);
-+ regoff = 0;
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* gpios could be shared on router platforms */
-+ if ((BUSTYPE(si->sb.bustype) == SB_BUS) && (val || mask)) {
-+ mask = priority ? (sb_gpioreservation & mask) :
-+ ((sb_gpioreservation | mask) & ~(sb_gpioreservation));
-+ val &= mask;
-+ }
-+
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ regoff = OFFSETOF(chipcregs_t, gpiocontrol);
-+ break;
-+
-+ case SB_PCI:
-+ regoff = OFFSETOF(sbpciregs_t, gpiocontrol);
-+ break;
-+
-+ case SB_EXTIF:
-+ return (0);
-+ }
-+
-+ return (sb_corereg(si, si->gpioidx, regoff, mask, val));
-+}
-+
-+/* mask&set gpio output enable bits */
-+uint32
-+sb_gpioouten(sb_t *sbh, uint32 mask, uint32 val, uint8 priority)
-+{
-+ sb_info_t *si;
-+ uint regoff;
-+
-+ si = SB_INFO(sbh);
-+ regoff = 0;
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* gpios could be shared on router platforms */
-+ if ((BUSTYPE(si->sb.bustype) == SB_BUS) && (val || mask)) {
-+ mask = priority ? (sb_gpioreservation & mask) :
-+ ((sb_gpioreservation | mask) & ~(sb_gpioreservation));
-+ val &= mask;
-+ }
-+
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ regoff = OFFSETOF(chipcregs_t, gpioouten);
-+ break;
-+
-+ case SB_PCI:
-+ regoff = OFFSETOF(sbpciregs_t, gpioouten);
-+ break;
-+
-+ case SB_EXTIF:
-+ regoff = OFFSETOF(extifregs_t, gpio[0].outen);
-+ break;
-+ }
-+
-+ return (sb_corereg(si, si->gpioidx, regoff, mask, val));
-+}
-+
-+/* mask&set gpio output bits */
-+uint32
-+sb_gpioout(sb_t *sbh, uint32 mask, uint32 val, uint8 priority)
-+{
-+ sb_info_t *si;
-+ uint regoff;
-+
-+ si = SB_INFO(sbh);
-+ regoff = 0;
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* gpios could be shared on router platforms */
-+ if ((BUSTYPE(si->sb.bustype) == SB_BUS) && (val || mask)) {
-+ mask = priority ? (sb_gpioreservation & mask) :
-+ ((sb_gpioreservation | mask) & ~(sb_gpioreservation));
-+ val &= mask;
-+ }
-+
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ regoff = OFFSETOF(chipcregs_t, gpioout);
-+ break;
-+
-+ case SB_PCI:
-+ regoff = OFFSETOF(sbpciregs_t, gpioout);
-+ break;
-+
-+ case SB_EXTIF:
-+ regoff = OFFSETOF(extifregs_t, gpio[0].out);
-+ break;
-+ }
-+
-+ return (sb_corereg(si, si->gpioidx, regoff, mask, val));
-+}
-+
-+/* reserve one gpio */
-+uint32
-+sb_gpioreserve(sb_t *sbh, uint32 gpio_bitmask, uint8 priority)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* only cores on SB_BUS share GPIO's and only applcation users need to reserve/release GPIO */
-+ if ( (BUSTYPE(si->sb.bustype) != SB_BUS) || (!priority)) {
-+ ASSERT((BUSTYPE(si->sb.bustype) == SB_BUS) && (priority));
-+ return -1;
-+ }
-+ /* make sure only one bit is set */
-+ if ((!gpio_bitmask) || ((gpio_bitmask) & (gpio_bitmask - 1))) {
-+ ASSERT((gpio_bitmask) && !((gpio_bitmask) & (gpio_bitmask - 1)));
-+ return -1;
-+ }
-+
-+ /* already reserved */
-+ if (sb_gpioreservation & gpio_bitmask)
-+ return -1;
-+ /* set reservation */
-+ sb_gpioreservation |= gpio_bitmask;
-+
-+ return sb_gpioreservation;
-+}
-+
-+/* release one gpio */
-+/*
-+ * releasing the gpio doesn't change the current value on the GPIO last write value
-+ * persists till some one overwrites it
-+*/
-+
-+uint32
-+sb_gpiorelease(sb_t *sbh, uint32 gpio_bitmask, uint8 priority)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* only cores on SB_BUS share GPIO's and only applcation users need to reserve/release GPIO */
-+ if ( (BUSTYPE(si->sb.bustype) != SB_BUS) || (!priority)) {
-+ ASSERT((BUSTYPE(si->sb.bustype) == SB_BUS) && (priority));
-+ return -1;
-+ }
-+ /* make sure only one bit is set */
-+ if ((!gpio_bitmask) || ((gpio_bitmask) & (gpio_bitmask - 1))) {
-+ ASSERT((gpio_bitmask) && !((gpio_bitmask) & (gpio_bitmask - 1)));
-+ return -1;
-+ }
-+
-+ /* already released */
-+ if (!(sb_gpioreservation & gpio_bitmask))
-+ return -1;
-+
-+ /* clear reservation */
-+ sb_gpioreservation &= ~gpio_bitmask;
-+
-+ return sb_gpioreservation;
-+}
-+
-+/* return the current gpioin register value */
-+uint32
-+sb_gpioin(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint regoff;
-+
-+ si = SB_INFO(sbh);
-+ regoff = 0;
-+
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ regoff = OFFSETOF(chipcregs_t, gpioin);
-+ break;
-+
-+ case SB_PCI:
-+ regoff = OFFSETOF(sbpciregs_t, gpioin);
-+ break;
-+
-+ case SB_EXTIF:
-+ regoff = OFFSETOF(extifregs_t, gpioin);
-+ break;
-+ }
-+
-+ return (sb_corereg(si, si->gpioidx, regoff, 0, 0));
-+}
-+
-+/* mask&set gpio interrupt polarity bits */
-+uint32
-+sb_gpiointpolarity(sb_t *sbh, uint32 mask, uint32 val, uint8 priority)
-+{
-+ sb_info_t *si;
-+ uint regoff;
-+
-+ si = SB_INFO(sbh);
-+ regoff = 0;
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* gpios could be shared on router platforms */
-+ if ((BUSTYPE(si->sb.bustype) == SB_BUS) && (val || mask)) {
-+ mask = priority ? (sb_gpioreservation & mask) :
-+ ((sb_gpioreservation | mask) & ~(sb_gpioreservation));
-+ val &= mask;
-+ }
-+
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ regoff = OFFSETOF(chipcregs_t, gpiointpolarity);
-+ break;
-+
-+ case SB_PCI:
-+ /* pci gpio implementation does not support interrupt polarity */
-+ ASSERT(0);
-+ break;
-+
-+ case SB_EXTIF:
-+ regoff = OFFSETOF(extifregs_t, gpiointpolarity);
-+ break;
-+ }
-+
-+ return (sb_corereg(si, si->gpioidx, regoff, mask, val));
-+}
-+
-+/* mask&set gpio interrupt mask bits */
-+uint32
-+sb_gpiointmask(sb_t *sbh, uint32 mask, uint32 val, uint8 priority)
-+{
-+ sb_info_t *si;
-+ uint regoff;
-+
-+ si = SB_INFO(sbh);
-+ regoff = 0;
-+
-+ priority = GPIO_DRV_PRIORITY; /* compatibility hack */
-+
-+ /* gpios could be shared on router platforms */
-+ if ((BUSTYPE(si->sb.bustype) == SB_BUS) && (val || mask)) {
-+ mask = priority ? (sb_gpioreservation & mask) :
-+ ((sb_gpioreservation | mask) & ~(sb_gpioreservation));
-+ val &= mask;
-+ }
-+
-+ switch (si->gpioid) {
-+ case SB_CC:
-+ regoff = OFFSETOF(chipcregs_t, gpiointmask);
-+ break;
-+
-+ case SB_PCI:
-+ /* pci gpio implementation does not support interrupt mask */
-+ ASSERT(0);
-+ break;
-+
-+ case SB_EXTIF:
-+ regoff = OFFSETOF(extifregs_t, gpiointmask);
-+ break;
-+ }
-+
-+ return (sb_corereg(si, si->gpioidx, regoff, mask, val));
-+}
-+
-+/* assign the gpio to an led */
-+uint32
-+sb_gpioled(sb_t *sbh, uint32 mask, uint32 val)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ if (si->sb.ccrev < 16)
-+ return -1;
-+
-+ /* gpio led powersave reg */
-+ return(sb_corereg(si, 0, OFFSETOF(chipcregs_t, gpiotimeroutmask), mask, val));
-+}
-+
-+/* mask&set gpio timer val */
-+uint32
-+sb_gpiotimerval(sb_t *sbh, uint32 mask, uint32 gpiotimerval)
-+{
-+ sb_info_t *si;
-+ si = SB_INFO(sbh);
-+
-+ if (si->sb.ccrev < 16)
-+ return -1;
-+
-+ return(sb_corereg(si, 0, OFFSETOF(chipcregs_t, gpiotimerval), mask, gpiotimerval));
-+}
-+
-+
-+/* return the slow clock source - LPO, XTAL, or PCI */
-+static uint
-+sb_slowclk_src(sb_info_t *si)
-+{
-+ chipcregs_t *cc;
-+
-+
-+ ASSERT(sb_coreid(&si->sb) == SB_CC);
-+
-+ if (si->sb.ccrev < 6) {
-+ if ((BUSTYPE(si->sb.bustype) == PCI_BUS)
-+ && (OSL_PCI_READ_CONFIG(si->osh, PCI_GPIO_OUT, sizeof (uint32)) & PCI_CFG_GPIO_SCS))
-+ return (SCC_SS_PCI);
-+ else
-+ return (SCC_SS_XTAL);
-+ } else if (si->sb.ccrev < 10) {
-+ cc = (chipcregs_t*) sb_setcoreidx(&si->sb, si->curidx);
-+ return (R_REG(&cc->slow_clk_ctl) & SCC_SS_MASK);
-+ } else /* Insta-clock */
-+ return (SCC_SS_XTAL);
-+}
-+
-+/* return the ILP (slowclock) min or max frequency */
-+static uint
-+sb_slowclk_freq(sb_info_t *si, bool max)
-+{
-+ chipcregs_t *cc;
-+ uint32 slowclk;
-+ uint div;
-+
-+
-+ ASSERT(sb_coreid(&si->sb) == SB_CC);
-+
-+ cc = (chipcregs_t*) sb_setcoreidx(&si->sb, si->curidx);
-+
-+ /* shouldn't be here unless we've established the chip has dynamic clk control */
-+ ASSERT(R_REG(&cc->capabilities) & CAP_PWR_CTL);
-+
-+ slowclk = sb_slowclk_src(si);
-+ if (si->sb.ccrev < 6) {
-+ if (slowclk == SCC_SS_PCI)
-+ return (max? (PCIMAXFREQ/64) : (PCIMINFREQ/64));
-+ else
-+ return (max? (XTALMAXFREQ/32) : (XTALMINFREQ/32));
-+ } else if (si->sb.ccrev < 10) {
-+ div = 4 * (((R_REG(&cc->slow_clk_ctl) & SCC_CD_MASK) >> SCC_CD_SHIFT) + 1);
-+ if (slowclk == SCC_SS_LPO)
-+ return (max? LPOMAXFREQ : LPOMINFREQ);
-+ else if (slowclk == SCC_SS_XTAL)
-+ return (max? (XTALMAXFREQ/div) : (XTALMINFREQ/div));
-+ else if (slowclk == SCC_SS_PCI)
-+ return (max? (PCIMAXFREQ/div) : (PCIMINFREQ/div));
-+ else
-+ ASSERT(0);
-+ } else {
-+ /* Chipc rev 10 is InstaClock */
-+ div = R_REG(&cc->system_clk_ctl) >> SYCC_CD_SHIFT;
-+ div = 4 * (div + 1);
-+ return (max ? XTALMAXFREQ : (XTALMINFREQ/div));
-+ }
-+ return (0);
-+}
-+
-+static void
-+sb_clkctl_setdelay(sb_info_t *si, void *chipcregs)
-+{
-+ chipcregs_t * cc;
-+ uint slowmaxfreq, pll_delay, slowclk;
-+ uint pll_on_delay, fref_sel_delay;
-+
-+ pll_delay = PLL_DELAY;
-+
-+ /* If the slow clock is not sourced by the xtal then add the xtal_on_delay
-+ * since the xtal will also be powered down by dynamic clk control logic.
-+ */
-+ slowclk = sb_slowclk_src(si);
-+ if (slowclk != SCC_SS_XTAL)
-+ pll_delay += XTAL_ON_DELAY;
-+
-+ /* Starting with 4318 it is ILP that is used for the delays */
-+ slowmaxfreq = sb_slowclk_freq(si, (si->sb.ccrev >= 10) ? FALSE : TRUE);
-+
-+ pll_on_delay = ((slowmaxfreq * pll_delay) + 999999) / 1000000;
-+ fref_sel_delay = ((slowmaxfreq * FREF_DELAY) + 999999) / 1000000;
-+
-+ cc = (chipcregs_t *)chipcregs;
-+ W_REG(&cc->pll_on_delay, pll_on_delay);
-+ W_REG(&cc->fref_sel_delay, fref_sel_delay);
-+}
-+
-+int
-+sb_pwrctl_slowclk(void *sbh, bool set, uint *div)
-+{
-+ sb_info_t *si;
-+ uint origidx;
-+ chipcregs_t *cc;
-+ uint intr_val = 0;
-+ uint err = 0;
-+
-+ si = SB_INFO(sbh);
-+
-+ /* chipcommon cores prior to rev6 don't support slowclkcontrol */
-+ if (si->sb.ccrev < 6)
-+ return 1;
-+
-+ /* chipcommon cores rev10 are a whole new ball game */
-+ if (si->sb.ccrev >= 10)
-+ return 1;
-+
-+ if (set && ((*div % 4) || (*div < 4)))
-+ return 2;
-+
-+ INTR_OFF(si, intr_val);
-+ origidx = si->curidx;
-+ cc = (chipcregs_t*) sb_setcore(sbh, SB_CC, 0);
-+ ASSERT(cc != NULL);
-+
-+ if (!(R_REG(&cc->capabilities) & CAP_PWR_CTL)) {
-+ err = 3;
-+ goto done;
-+ }
-+
-+ if (set) {
-+ SET_REG(&cc->slow_clk_ctl, SCC_CD_MASK, ((*div / 4 - 1) << SCC_CD_SHIFT));
-+ sb_clkctl_setdelay(sbh, (void *)cc);
-+ } else
-+ *div = 4 * (((R_REG(&cc->slow_clk_ctl) & SCC_CD_MASK) >> SCC_CD_SHIFT) + 1);
-+
-+done:
-+ sb_setcoreidx(sbh, origidx);
-+ INTR_RESTORE(si, intr_val);
-+ return err;
-+}
-+
-+/* initialize power control delay registers */
-+void sb_clkctl_init(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint origidx;
-+ chipcregs_t *cc;
-+
-+ si = SB_INFO(sbh);
-+
-+ origidx = si->curidx;
-+
-+ if ((cc = (chipcregs_t*) sb_setcore(sbh, SB_CC, 0)) == NULL)
-+ return;
-+
-+ if (!(R_REG(&cc->capabilities) & CAP_PWR_CTL))
-+ goto done;
-+
-+ /* set all Instaclk chip ILP to 1 MHz */
-+ if (si->sb.ccrev >= 10)
-+ SET_REG(&cc->system_clk_ctl, SYCC_CD_MASK, (ILP_DIV_1MHZ << SYCC_CD_SHIFT));
-+
-+ sb_clkctl_setdelay(si, (void *)cc);
-+
-+done:
-+ sb_setcoreidx(sbh, origidx);
-+}
-+void sb_pwrctl_init(sb_t *sbh)
-+{
-+sb_clkctl_init(sbh);
-+}
-+/* return the value suitable for writing to the dot11 core FAST_PWRUP_DELAY register */
-+uint16
-+sb_clkctl_fast_pwrup_delay(sb_t *sbh)
-+{
-+ sb_info_t *si;
-+ uint origidx;
-+ chipcregs_t *cc;
-+ uint slowminfreq;
-+ uint16 fpdelay;
-+ uint intr_val = 0;
-+
-+ si = SB_INFO(sbh);
-+ fpdelay = 0;
-+ origidx = si->curidx;
-+
-+ INTR_OFF(si, intr_val);
-+
-+ if ((cc = (chipcregs_t*) sb_setcore(sbh, SB_CC, 0)) == NULL)
-+ goto done;
-+
-+ if (!(R_REG(&cc->capabilities) & CAP_PWR_CTL))
-+ goto done;
-+
-+ slowminfreq = sb_slowclk_freq(si, FALSE);
-+ fpdelay = (((R_REG(&cc->pll_on_delay) + 2) * 1000000) + (slowminfreq - 1)) / slowminfreq;
-+
-+done:
-+ sb_setcoreidx(sbh, origidx);
-+ INTR_RESTORE(si, intr_val);
-+ return (fpdelay);
-+}
-+uint16 sb_pwrctl_fast_pwrup_delay(sb_t *sbh)
-+{
-+return sb_clkctl_fast_pwrup_delay(sbh);
-+}
-+/* turn primary xtal and/or pll off/on */
-+int
-+sb_clkctl_xtal(sb_t *sbh, uint what, bool on)
-+{
-+ sb_info_t *si;
-+ uint32 in, out, outen;
-+
-+ si = SB_INFO(sbh);
-+
-+ switch (BUSTYPE(si->sb.bustype)) {
-+ case PCI_BUS:
-+
-+ in = OSL_PCI_READ_CONFIG(si->osh, PCI_GPIO_IN, sizeof (uint32));
-+ out = OSL_PCI_READ_CONFIG(si->osh, PCI_GPIO_OUT, sizeof (uint32));
-+ outen = OSL_PCI_READ_CONFIG(si->osh, PCI_GPIO_OUTEN, sizeof (uint32));
-+
-+ /*
-+ * Avoid glitching the clock if GPRS is already using it.
-+ * We can't actually read the state of the PLLPD so we infer it
-+ * by the value of XTAL_PU which *is* readable via gpioin.
-+ */
-+ if (on && (in & PCI_CFG_GPIO_XTAL))
-+ return (0);
-+
-+ if (what & XTAL)
-+ outen |= PCI_CFG_GPIO_XTAL;
-+ if (what & PLL)
-+ outen |= PCI_CFG_GPIO_PLL;
-+
-+ if (on) {
-+ /* turn primary xtal on */
-+ if (what & XTAL) {
-+ out |= PCI_CFG_GPIO_XTAL;
-+ if (what & PLL)
-+ out |= PCI_CFG_GPIO_PLL;
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_GPIO_OUT, sizeof (uint32), out);
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_GPIO_OUTEN, sizeof (uint32), outen);
-+ OSL_DELAY(XTAL_ON_DELAY);
-+ }
-+
-+ /* turn pll on */
-+ if (what & PLL) {
-+ out &= ~PCI_CFG_GPIO_PLL;
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_GPIO_OUT, sizeof (uint32), out);
-+ OSL_DELAY(2000);
-+ }
-+ } else {
-+ if (what & XTAL)
-+ out &= ~PCI_CFG_GPIO_XTAL;
-+ if (what & PLL)
-+ out |= PCI_CFG_GPIO_PLL;
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_GPIO_OUT, sizeof (uint32), out);
-+ OSL_PCI_WRITE_CONFIG(si->osh, PCI_GPIO_OUTEN, sizeof (uint32), outen);
-+ }
-+
-+ default:
-+ return (-1);
-+ }
-+
-+ return (0);
-+}
-+
-+int sb_pwrctl_xtal(sb_t *sbh, uint what, bool on)
-+{
-+return sb_clkctl_xtal(sbh,what,on);
-+}
-+
-+/* set dynamic clk control mode (forceslow, forcefast, dynamic) */
-+/* returns true if ignore pll off is set and false if it is not */
-+bool
-+sb_clkctl_clk(sb_t *sbh, uint mode)
-+{
-+ sb_info_t *si;
-+ uint origidx;
-+ chipcregs_t *cc;
-+ uint32 scc;
-+ bool forcefastclk=FALSE;
-+ uint intr_val = 0;
-+
-+ si = SB_INFO(sbh);
-+
-+ /* chipcommon cores prior to rev6 don't support dynamic clock control */
-+ if (si->sb.ccrev < 6)
-+ return (FALSE);
-+
-+ /* chipcommon cores rev10 are a whole new ball game */
-+ if (si->sb.ccrev >= 10)
-+ return (FALSE);
-+
-+ INTR_OFF(si, intr_val);
-+
-+ origidx = si->curidx;
-+
-+ cc = (chipcregs_t*) sb_setcore(sbh, SB_CC, 0);
-+ ASSERT(cc != NULL);
-+
-+ if (!(R_REG(&cc->capabilities) & CAP_PWR_CTL))
-+ goto done;
-+
-+ switch (mode) {
-+ case CLK_FAST: /* force fast (pll) clock */
-+ /* don't forget to force xtal back on before we clear SCC_DYN_XTAL.. */
-+ sb_clkctl_xtal(&si->sb, XTAL, ON);
-+
-+ SET_REG(&cc->slow_clk_ctl, (SCC_XC | SCC_FS | SCC_IP), SCC_IP);
-+ break;
-+
-+ case CLK_DYNAMIC: /* enable dynamic clock control */
-+ scc = R_REG(&cc->slow_clk_ctl);
-+ scc &= ~(SCC_FS | SCC_IP | SCC_XC);
-+ if ((scc & SCC_SS_MASK) != SCC_SS_XTAL)
-+ scc |= SCC_XC;
-+ W_REG(&cc->slow_clk_ctl, scc);
-+
-+ /* for dynamic control, we have to release our xtal_pu "force on" */
-+ if (scc & SCC_XC)
-+ sb_clkctl_xtal(&si->sb, XTAL, OFF);
-+ break;
-+
-+ default:
-+ ASSERT(0);
-+ }
-+
-+ /* Is the h/w forcing the use of the fast clk */
-+ forcefastclk = (bool)((R_REG(&cc->slow_clk_ctl) & SCC_IP) == SCC_IP);
-+
-+done:
-+ sb_setcoreidx(sbh, origidx);
-+ INTR_RESTORE(si, intr_val);
-+ return (forcefastclk);
-+}
-+
-+bool sb_pwrctl_clk(sb_t *sbh, uint mode)
-+{
-+return sb_clkctl_clk(sbh, mode);
-+}
-+/* register driver interrupt disabling and restoring callback functions */
-+void
-+sb_register_intr_callback(sb_t *sbh, void *intrsoff_fn, void *intrsrestore_fn, void *intrsenabled_fn, void *intr_arg)
-+{
-+ sb_info_t *si;
-+
-+ si = SB_INFO(sbh);
-+ si->intr_arg = intr_arg;
-+ si->intrsoff_fn = (sb_intrsoff_t)intrsoff_fn;
-+ si->intrsrestore_fn = (sb_intrsrestore_t)intrsrestore_fn;
-+ si->intrsenabled_fn = (sb_intrsenabled_t)intrsenabled_fn;
-+ /* save current core id. when this function called, the current core
-+ * must be the core which provides driver functions(il, et, wl, etc.)
-+ */
-+ si->dev_coreid = si->coreid[si->curidx];
-+}
-+
-+
-+void
-+sb_corepciid(sb_t *sbh, uint16 *pcivendor, uint16 *pcidevice,
-+ uint8 *pciclass, uint8 *pcisubclass, uint8 *pciprogif)
-+{
-+ uint vendor, core, unit;
-+ uint chip, chippkg;
-+ char varname[8];
-+ uint8 class, subclass, progif;
-+
-+ vendor = sb_corevendor(sbh);
-+ core = sb_coreid(sbh);
-+ unit = sb_coreunit(sbh);
-+
-+ chip = BCMINIT(sb_chip)(sbh);
-+ chippkg = BCMINIT(sb_chippkg)(sbh);
-+
-+ progif = 0;
-+
-+ /* Known vendor translations */
-+ switch (vendor) {
-+ case SB_VEND_BCM:
-+ vendor = VENDOR_BROADCOM;
-+ break;
-+ }
-+
-+ /* Determine class based on known core codes */
-+ switch (core) {
-+ case SB_ILINE20:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_ETHER;
-+ core = BCM47XX_ILINE_ID;
-+ break;
-+ case SB_ENET:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_ETHER;
-+ core = BCM47XX_ENET_ID;
-+ break;
-+ case SB_SDRAM:
-+ case SB_MEMC:
-+ class = PCI_CLASS_MEMORY;
-+ subclass = PCI_MEMORY_RAM;
-+ break;
-+ case SB_PCI:
-+ class = PCI_CLASS_BRIDGE;
-+ subclass = PCI_BRIDGE_PCI;
-+ break;
-+ case SB_MIPS:
-+ case SB_MIPS33:
-+ class = PCI_CLASS_CPU;
-+ subclass = PCI_CPU_MIPS;
-+ break;
-+ case SB_CODEC:
-+ class = PCI_CLASS_COMM;
-+ subclass = PCI_COMM_MODEM;
-+ core = BCM47XX_V90_ID;
-+ break;
-+ case SB_USB:
-+ class = PCI_CLASS_SERIAL;
-+ subclass = PCI_SERIAL_USB;
-+ progif = 0x10; /* OHCI */
-+ core = BCM47XX_USB_ID;
-+ break;
-+ case SB_USB11H:
-+ class = PCI_CLASS_SERIAL;
-+ subclass = PCI_SERIAL_USB;
-+ progif = 0x10; /* OHCI */
-+ core = BCM47XX_USBH_ID;
-+ break;
-+ case SB_USB11D:
-+ class = PCI_CLASS_SERIAL;
-+ subclass = PCI_SERIAL_USB;
-+ core = BCM47XX_USBD_ID;
-+ break;
-+ case SB_IPSEC:
-+ class = PCI_CLASS_CRYPT;
-+ subclass = PCI_CRYPT_NETWORK;
-+ core = BCM47XX_IPSEC_ID;
-+ break;
-+ case SB_ROBO:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_OTHER;
-+ core = BCM47XX_ROBO_ID;
-+ break;
-+ case SB_EXTIF:
-+ case SB_CC:
-+ class = PCI_CLASS_MEMORY;
-+ subclass = PCI_MEMORY_FLASH;
-+ break;
-+ case SB_D11:
-+ class = PCI_CLASS_NET;
-+ subclass = PCI_NET_OTHER;
-+ /* Let an nvram variable override this */
-+ sprintf(varname, "wl%did", unit);
-+ if ((core = getintvar(NULL, varname)) == 0) {
-+ if (chip == BCM4712_DEVICE_ID) {
-+ if (chippkg == BCM4712SMALL_PKG_ID)
-+ core = BCM4306_D11G_ID;
-+ else
-+ core = BCM4306_D11DUAL_ID;
-+ }
-+ }
-+ break;
-+
-+ default:
-+ class = subclass = progif = 0xff;
-+ break;
-+ }
-+
-+ *pcivendor = (uint16)vendor;
-+ *pcidevice = (uint16)core;
-+ *pciclass = class;
-+ *pcisubclass = subclass;
-+ *pciprogif = progif;
-+}
-+
-+/* Fix chip's configuration. The current core may be changed upon return */
-+static int
-+sb_pci_fixcfg(sb_info_t *si)
-+{
-+ uint origidx, pciidx;
-+ sbpciregs_t *pciregs;
-+ uint16 val16, *reg16;
-+
-+ ASSERT(BUSTYPE(si->sb.bustype) == PCI_BUS);
-+
-+ /* Fix PCI(e) SROM shadow area */
-+ /* save the current index */
-+ origidx = sb_coreidx(&si->sb);
-+
-+ if (si->sb.buscoretype == SB_PCI) {
-+ pciregs = (sbpciregs_t *)sb_setcore(&si->sb, SB_PCI, 0);
-+ ASSERT(pciregs);
-+ reg16 = &pciregs->sprom[SRSH_PI_OFFSET];
-+ }
-+ else {
-+ ASSERT(0);
-+ return -1;
-+ }
-+ pciidx = sb_coreidx(&si->sb);
-+ val16 = R_REG(reg16);
-+ if (((val16 & SRSH_PI_MASK) >> SRSH_PI_SHIFT) != (uint16)pciidx) {
-+ val16 = (uint16)(pciidx << SRSH_PI_SHIFT) | (val16 & ~SRSH_PI_MASK);
-+ W_REG(reg16, val16);
-+ }
-+
-+ /* restore the original index */
-+ sb_setcoreidx(&si->sb, origidx);
-+
-+ return 0;
-+}
-+
-+EXPORT_SYMBOL(sb_boardtype);
-+EXPORT_SYMBOL(sb_boardvendor);
-+EXPORT_SYMBOL(sb_gpiocontrol);
-+EXPORT_SYMBOL(sb_gpioin);
-+EXPORT_SYMBOL(sb_gpiointmask);
-+EXPORT_SYMBOL(sb_gpiointpolarity);
-+EXPORT_SYMBOL(sb_gpioled);
-+EXPORT_SYMBOL(sb_gpioout);
-+EXPORT_SYMBOL(sb_gpioouten);
-+EXPORT_SYMBOL(sb_gpiorelease);
-+EXPORT_SYMBOL(sb_gpioreserve);
-+EXPORT_SYMBOL(sb_gpiosetcore);
-+EXPORT_SYMBOL(sb_gpiotimerval);
-+EXPORT_SYMBOL(sb_watchdog);
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/broadcom/sflash.c linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/sflash.c
---- linux-2.6.16/arch/mips/bcm947xx/broadcom/sflash.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/broadcom/sflash.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,418 @@
-+/*
-+ * Broadcom SiliconBackplane chipcommon serial flash interface
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#include <osl.h>
-+#include <typedefs.h>
-+#include <sbconfig.h>
-+#include <sbchipc.h>
-+#include <mipsinc.h>
-+#include <bcmutils.h>
-+#include <bcmdevs.h>
-+#include <sflash.h>
-+
-+/* Private global state */
-+static struct sflash sflash;
-+
-+/* Issue a serial flash command */
-+static INLINE void
-+sflash_cmd(chipcregs_t *cc, uint opcode)
-+{
-+ W_REG(&cc->flashcontrol, SFLASH_START | opcode);
-+ while (R_REG(&cc->flashcontrol) & SFLASH_BUSY);
-+}
-+
-+/* Initialize serial flash access */
-+struct sflash *
-+sflash_init(chipcregs_t *cc)
-+{
-+ uint32 id, id2;
-+
-+ bzero(&sflash, sizeof(sflash));
-+
-+ sflash.type = R_REG(&cc->capabilities) & CAP_FLASH_MASK;
-+
-+ switch (sflash.type) {
-+ case SFLASH_ST:
-+ /* Probe for ST chips */
-+ sflash_cmd(cc, SFLASH_ST_DP);
-+ sflash_cmd(cc, SFLASH_ST_RES);
-+ id = R_REG(&cc->flashdata);
-+ switch (id) {
-+ case 0x11:
-+ /* ST M25P20 2 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 4;
-+ break;
-+ case 0x12:
-+ /* ST M25P40 4 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 8;
-+ break;
-+ case 0x13:
-+ /* ST M25P80 8 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 16;
-+ break;
-+ case 0x14:
-+ /* ST M25P16 16 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 32;
-+ break;
-+ case 0x15:
-+ /* ST M25P32 32 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 64;
-+ break;
-+ case 0xbf:
-+ W_REG(&cc->flashaddress, 1);
-+ sflash_cmd(cc, SFLASH_ST_RES);
-+ id2 = R_REG(&cc->flashdata);
-+ if (id2 == 0x44) {
-+ /* SST M25VF80 4 Mbit Serial Flash */
-+ sflash.blocksize = 64 * 1024;
-+ sflash.numblocks = 8;
-+ }
-+ break;
-+ }
-+ break;
-+
-+ case SFLASH_AT:
-+ /* Probe for Atmel chips */
-+ sflash_cmd(cc, SFLASH_AT_STATUS);
-+ id = R_REG(&cc->flashdata) & 0x3c;
-+ switch (id) {
-+ case 0xc:
-+ /* Atmel AT45DB011 1Mbit Serial Flash */
-+ sflash.blocksize = 256;
-+ sflash.numblocks = 512;
-+ break;
-+ case 0x14:
-+ /* Atmel AT45DB021 2Mbit Serial Flash */
-+ sflash.blocksize = 256;
-+ sflash.numblocks = 1024;
-+ break;
-+ case 0x1c:
-+ /* Atmel AT45DB041 4Mbit Serial Flash */
-+ sflash.blocksize = 256;
-+ sflash.numblocks = 2048;
-+ break;
-+ case 0x24:
-+ /* Atmel AT45DB081 8Mbit Serial Flash */
-+ sflash.blocksize = 256;
-+ sflash.numblocks = 4096;
-+ break;
-+ case 0x2c:
-+ /* Atmel AT45DB161 16Mbit Serial Flash */
-+ sflash.blocksize = 512;
-+ sflash.numblocks = 4096;
-+ break;
-+ case 0x34:
-+ /* Atmel AT45DB321 32Mbit Serial Flash */
-+ sflash.blocksize = 512;
-+ sflash.numblocks = 8192;
-+ break;
-+ case 0x3c:
-+ /* Atmel AT45DB642 64Mbit Serial Flash */
-+ sflash.blocksize = 1024;
-+ sflash.numblocks = 8192;
-+ break;
-+ }
-+ break;
-+ }
-+
-+ sflash.size = sflash.blocksize * sflash.numblocks;
-+ return sflash.size ? &sflash : NULL;
-+}
-+
-+/* Read len bytes starting at offset into buf. Returns number of bytes read. */
-+int
-+sflash_read(chipcregs_t *cc, uint offset, uint len, uchar *buf)
-+{
-+ int cnt;
-+ uint32 *from, *to;
-+
-+ if (!len)
-+ return 0;
-+
-+ if ((offset + len) > sflash.size)
-+ return -22;
-+
-+ if ((len >= 4) && (offset & 3))
-+ cnt = 4 - (offset & 3);
-+ else if ((len >= 4) && ((uint32)buf & 3))
-+ cnt = 4 - ((uint32)buf & 3);
-+ else
-+ cnt = len;
-+
-+ from = (uint32 *)KSEG1ADDR(SB_FLASH2 + offset);
-+ to = (uint32 *)buf;
-+
-+ if (cnt < 4) {
-+ bcopy(from, to, cnt);
-+ return cnt;
-+ }
-+
-+ while (cnt >= 4) {
-+ *to++ = *from++;
-+ cnt -= 4;
-+ }
-+
-+ return (len - cnt);
-+}
-+
-+/* Poll for command completion. Returns zero when complete. */
-+int
-+sflash_poll(chipcregs_t *cc, uint offset)
-+{
-+ if (offset >= sflash.size)
-+ return -22;
-+
-+ switch (sflash.type) {
-+ case SFLASH_ST:
-+ /* Check for ST Write In Progress bit */
-+ sflash_cmd(cc, SFLASH_ST_RDSR);
-+ return R_REG(&cc->flashdata) & SFLASH_ST_WIP;
-+ case SFLASH_AT:
-+ /* Check for Atmel Ready bit */
-+ sflash_cmd(cc, SFLASH_AT_STATUS);
-+ return !(R_REG(&cc->flashdata) & SFLASH_AT_READY);
-+ }
-+
-+ return 0;
-+}
-+
-+/* Write len bytes starting at offset into buf. Returns number of bytes
-+ * written. Caller should poll for completion.
-+ */
-+int
-+sflash_write(chipcregs_t *cc, uint offset, uint len, const uchar *buf)
-+{
-+ struct sflash *sfl;
-+ int ret = 0;
-+ bool is4712b0;
-+ uint32 page, byte, mask;
-+
-+ if (!len)
-+ return 0;
-+
-+ if ((offset + len) > sflash.size)
-+ return -22;
-+
-+ sfl = &sflash;
-+ switch (sfl->type) {
-+ case SFLASH_ST:
-+ mask = R_REG(&cc->chipid);
-+ is4712b0 = (((mask & CID_ID_MASK) == BCM4712_DEVICE_ID) &&
-+ ((mask & CID_REV_MASK) == (3 << CID_REV_SHIFT)));
-+ /* Enable writes */
-+ sflash_cmd(cc, SFLASH_ST_WREN);
-+ if (is4712b0) {
-+ mask = 1 << 14;
-+ W_REG(&cc->flashaddress, offset);
-+ W_REG(&cc->flashdata, *buf++);
-+ /* Set chip select */
-+ OR_REG(&cc->gpioout, mask);
-+ /* Issue a page program with the first byte */
-+ sflash_cmd(cc, SFLASH_ST_PP);
-+ ret = 1;
-+ offset++;
-+ len--;
-+ while (len > 0) {
-+ if ((offset & 255) == 0) {
-+ /* Page boundary, drop cs and return */
-+ AND_REG(&cc->gpioout, ~mask);
-+ if (!sflash_poll(cc, offset)) {
-+ /* Flash rejected command */
-+ return -11;
-+ }
-+ return ret;
-+ } else {
-+ /* Write single byte */
-+ sflash_cmd(cc, *buf++);
-+ }
-+ ret++;
-+ offset++;
-+ len--;
-+ }
-+ /* All done, drop cs if needed */
-+ if ((offset & 255) != 1) {
-+ /* Drop cs */
-+ AND_REG(&cc->gpioout, ~mask);
-+ if (!sflash_poll(cc, offset)) {
-+ /* Flash rejected command */
-+ return -12;
-+ }
-+ }
-+ } else {
-+ ret = 1;
-+ W_REG(&cc->flashaddress, offset);
-+ W_REG(&cc->flashdata, *buf);
-+ /* Page program */
-+ sflash_cmd(cc, SFLASH_ST_PP);
-+ }
-+ break;
-+ case SFLASH_AT:
-+ mask = sfl->blocksize - 1;
-+ page = (offset & ~mask) << 1;
-+ byte = offset & mask;
-+ /* Read main memory page into buffer 1 */
-+ if (byte || len < sfl->blocksize) {
-+ W_REG(&cc->flashaddress, page);
-+ sflash_cmd(cc, SFLASH_AT_BUF1_LOAD);
-+ /* 250 us for AT45DB321B */
-+ SPINWAIT(sflash_poll(cc, offset), 1000);
-+ ASSERT(!sflash_poll(cc, offset));
-+ }
-+ /* Write into buffer 1 */
-+ for (ret = 0; ret < len && byte < sfl->blocksize; ret++) {
-+ W_REG(&cc->flashaddress, byte++);
-+ W_REG(&cc->flashdata, *buf++);
-+ sflash_cmd(cc, SFLASH_AT_BUF1_WRITE);
-+ }
-+ /* Write buffer 1 into main memory page */
-+ W_REG(&cc->flashaddress, page);
-+ sflash_cmd(cc, SFLASH_AT_BUF1_PROGRAM);
-+ break;
-+ }
-+
-+ return ret;
-+}
-+
-+/* Erase a region. Returns number of bytes scheduled for erasure.
-+ * Caller should poll for completion.
-+ */
-+int
-+sflash_erase(chipcregs_t *cc, uint offset)
-+{
-+ struct sflash *sfl;
-+
-+ if (offset >= sflash.size)
-+ return -22;
-+
-+ sfl = &sflash;
-+ switch (sfl->type) {
-+ case SFLASH_ST:
-+ sflash_cmd(cc, SFLASH_ST_WREN);
-+ W_REG(&cc->flashaddress, offset);
-+ sflash_cmd(cc, SFLASH_ST_SE);
-+ return sfl->blocksize;
-+ case SFLASH_AT:
-+ W_REG(&cc->flashaddress, offset << 1);
-+ sflash_cmd(cc, SFLASH_AT_PAGE_ERASE);
-+ return sfl->blocksize;
-+ }
-+
-+ return 0;
-+}
-+
-+/*
-+ * writes the appropriate range of flash, a NULL buf simply erases
-+ * the region of flash
-+ */
-+int
-+sflash_commit(chipcregs_t *cc, uint offset, uint len, const uchar *buf)
-+{
-+ struct sflash *sfl;
-+ uchar *block = NULL, *cur_ptr, *blk_ptr;
-+ uint blocksize = 0, mask, cur_offset, cur_length, cur_retlen, remainder;
-+ uint blk_offset, blk_len, copied;
-+ int bytes, ret = 0;
-+
-+ /* Check address range */
-+ if (len <= 0)
-+ return 0;
-+
-+ sfl = &sflash;
-+ if ((offset + len) > sfl->size)
-+ return -1;
-+
-+ blocksize = sfl->blocksize;
-+ mask = blocksize - 1;
-+
-+ /* Allocate a block of mem */
-+ if (!(block = MALLOC(NULL, blocksize)))
-+ return -1;
-+
-+ while (len) {
-+ /* Align offset */
-+ cur_offset = offset & ~mask;
-+ cur_length = blocksize;
-+ cur_ptr = block;
-+
-+ remainder = blocksize - (offset & mask);
-+ if (len < remainder)
-+ cur_retlen = len;
-+ else
-+ cur_retlen = remainder;
-+
-+ /* buf == NULL means erase only */
-+ if (buf) {
-+ /* Copy existing data into holding block if necessary */
-+ if ((offset & mask) || (len < blocksize)) {
-+ blk_offset = cur_offset;
-+ blk_len = cur_length;
-+ blk_ptr = cur_ptr;
-+
-+ /* Copy entire block */
-+ while(blk_len) {
-+ copied = sflash_read(cc, blk_offset, blk_len, blk_ptr);
-+ blk_offset += copied;
-+ blk_len -= copied;
-+ blk_ptr += copied;
-+ }
-+ }
-+
-+ /* Copy input data into holding block */
-+ memcpy(cur_ptr + (offset & mask), buf, cur_retlen);
-+ }
-+
-+ /* Erase block */
-+ if ((ret = sflash_erase(cc, (uint) cur_offset)) < 0)
-+ goto done;
-+ while (sflash_poll(cc, (uint) cur_offset));
-+
-+ /* buf == NULL means erase only */
-+ if (!buf) {
-+ offset += cur_retlen;
-+ len -= cur_retlen;
-+ continue;
-+ }
-+
-+ /* Write holding block */
-+ while (cur_length > 0) {
-+ if ((bytes = sflash_write(cc,
-+ (uint) cur_offset,
-+ (uint) cur_length,
-+ (uchar *) cur_ptr)) < 0) {
-+ ret = bytes;
-+ goto done;
-+ }
-+ while (sflash_poll(cc, (uint) cur_offset));
-+ cur_offset += bytes;
-+ cur_length -= bytes;
-+ cur_ptr += bytes;
-+ }
-+
-+ offset += cur_retlen;
-+ len -= cur_retlen;
-+ buf += cur_retlen;
-+ }
-+
-+ ret = len;
-+done:
-+ if (block)
-+ MFREE(NULL, block, blocksize);
-+ return ret;
-+}
-+
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/bcmdevs.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/bcmdevs.h
---- linux-2.6.16/arch/mips/bcm947xx/include/bcmdevs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/bcmdevs.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,391 @@
-+/*
-+ * Broadcom device-specific manifest constants.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#ifndef _BCMDEVS_H
-+#define _BCMDEVS_H
-+
-+
-+/* Known PCI vendor Id's */
-+#define VENDOR_EPIGRAM 0xfeda
-+#define VENDOR_BROADCOM 0x14e4
-+#define VENDOR_3COM 0x10b7
-+#define VENDOR_NETGEAR 0x1385
-+#define VENDOR_DIAMOND 0x1092
-+#define VENDOR_DELL 0x1028
-+#define VENDOR_HP 0x0e11
-+#define VENDOR_APPLE 0x106b
-+
-+/* PCI Device Id's */
-+#define BCM4210_DEVICE_ID 0x1072 /* never used */
-+#define BCM4211_DEVICE_ID 0x4211
-+#define BCM4230_DEVICE_ID 0x1086 /* never used */
-+#define BCM4231_DEVICE_ID 0x4231
-+
-+#define BCM4410_DEVICE_ID 0x4410 /* bcm44xx family pci iline */
-+#define BCM4430_DEVICE_ID 0x4430 /* bcm44xx family cardbus iline */
-+#define BCM4412_DEVICE_ID 0x4412 /* bcm44xx family pci enet */
-+#define BCM4432_DEVICE_ID 0x4432 /* bcm44xx family cardbus enet */
-+
-+#define BCM3352_DEVICE_ID 0x3352 /* bcm3352 device id */
-+#define BCM3360_DEVICE_ID 0x3360 /* bcm3360 device id */
-+
-+#define EPI41210_DEVICE_ID 0xa0fa /* bcm4210 */
-+#define EPI41230_DEVICE_ID 0xa10e /* bcm4230 */
-+
-+#define BCM47XX_ILINE_ID 0x4711 /* 47xx iline20 */
-+#define BCM47XX_V90_ID 0x4712 /* 47xx v90 codec */
-+#define BCM47XX_ENET_ID 0x4713 /* 47xx enet */
-+#define BCM47XX_EXT_ID 0x4714 /* 47xx external i/f */
-+#define BCM47XX_USB_ID 0x4715 /* 47xx usb */
-+#define BCM47XX_USBH_ID 0x4716 /* 47xx usb host */
-+#define BCM47XX_USBD_ID 0x4717 /* 47xx usb device */
-+#define BCM47XX_IPSEC_ID 0x4718 /* 47xx ipsec */
-+#define BCM47XX_ROBO_ID 0x4719 /* 47xx/53xx roboswitch core */
-+#define BCM47XX_USB20H_ID 0x471a /* 47xx usb 2.0 host */
-+#define BCM47XX_USB20D_ID 0x471b /* 47xx usb 2.0 device */
-+
-+#define BCM4710_DEVICE_ID 0x4710 /* 4710 primary function 0 */
-+
-+#define BCM4610_DEVICE_ID 0x4610 /* 4610 primary function 0 */
-+#define BCM4610_ILINE_ID 0x4611 /* 4610 iline100 */
-+#define BCM4610_V90_ID 0x4612 /* 4610 v90 codec */
-+#define BCM4610_ENET_ID 0x4613 /* 4610 enet */
-+#define BCM4610_EXT_ID 0x4614 /* 4610 external i/f */
-+#define BCM4610_USB_ID 0x4615 /* 4610 usb */
-+
-+#define BCM4402_DEVICE_ID 0x4402 /* 4402 primary function 0 */
-+#define BCM4402_ENET_ID 0x4402 /* 4402 enet */
-+#define BCM4402_V90_ID 0x4403 /* 4402 v90 codec */
-+#define BCM4401_ENET_ID 0x170c /* 4401b0 production enet cards */
-+
-+#define BCM4301_DEVICE_ID 0x4301 /* 4301 primary function 0 */
-+#define BCM4301_D11B_ID 0x4301 /* 4301 802.11b */
-+
-+#define BCM4307_DEVICE_ID 0x4307 /* 4307 primary function 0 */
-+#define BCM4307_V90_ID 0x4305 /* 4307 v90 codec */
-+#define BCM4307_ENET_ID 0x4306 /* 4307 enet */
-+#define BCM4307_D11B_ID 0x4307 /* 4307 802.11b */
-+
-+#define BCM4306_DEVICE_ID 0x4306 /* 4306 chipcommon chipid */
-+#define BCM4306_D11G_ID 0x4320 /* 4306 802.11g */
-+#define BCM4306_D11G_ID2 0x4325
-+#define BCM4306_D11A_ID 0x4321 /* 4306 802.11a */
-+#define BCM4306_UART_ID 0x4322 /* 4306 uart */
-+#define BCM4306_V90_ID 0x4323 /* 4306 v90 codec */
-+#define BCM4306_D11DUAL_ID 0x4324 /* 4306 dual A+B */
-+
-+#define BCM4309_PKG_ID 1 /* 4309 package id */
-+
-+#define BCM4303_D11B_ID 0x4303 /* 4303 802.11b */
-+#define BCM4303_PKG_ID 2 /* 4303 package id */
-+
-+#define BCM4310_DEVICE_ID 0x4310 /* 4310 chipcommon chipid */
-+#define BCM4310_D11B_ID 0x4311 /* 4310 802.11b */
-+#define BCM4310_UART_ID 0x4312 /* 4310 uart */
-+#define BCM4310_ENET_ID 0x4313 /* 4310 enet */
-+#define BCM4310_USB_ID 0x4315 /* 4310 usb */
-+
-+#define BCMGPRS_UART_ID 0x4333 /* Uart id used by 4306/gprs card */
-+#define BCMGPRS2_UART_ID 0x4344 /* Uart id used by 4306/gprs card */
-+
-+
-+#define BCM4704_DEVICE_ID 0x4704 /* 4704 chipcommon chipid */
-+#define BCM4704_ENET_ID 0x4706 /* 4704 enet (Use 47XX_ENET_ID instead!) */
-+
-+#define BCM4317_DEVICE_ID 0x4317 /* 4317 chip common chipid */
-+
-+#define BCM4318_DEVICE_ID 0x4318 /* 4318 chip common chipid */
-+#define BCM4318_D11G_ID 0x4318 /* 4318 801.11b/g id */
-+#define BCM4318_D11DUAL_ID 0x4319 /* 4318 801.11a/b/g id */
-+#define BCM4318_JTAGM_ID 0x4331 /* 4318 jtagm device id */
-+
-+#define FPGA_JTAGM_ID 0x4330 /* ??? */
-+
-+/* Address map */
-+#define BCM4710_SDRAM 0x00000000 /* Physical SDRAM */
-+#define BCM4710_PCI_MEM 0x08000000 /* Host Mode PCI memory access space (64 MB) */
-+#define BCM4710_PCI_CFG 0x0c000000 /* Host Mode PCI configuration space (64 MB) */
-+#define BCM4710_PCI_DMA 0x40000000 /* Client Mode PCI memory access space (1 GB) */
-+#define BCM4710_SDRAM_SWAPPED 0x10000000 /* Byteswapped Physical SDRAM */
-+#define BCM4710_ENUM 0x18000000 /* Beginning of core enumeration space */
-+
-+/* Core register space */
-+#define BCM4710_REG_SDRAM 0x18000000 /* SDRAM core registers */
-+#define BCM4710_REG_ILINE20 0x18001000 /* InsideLine20 core registers */
-+#define BCM4710_REG_EMAC0 0x18002000 /* Ethernet MAC 0 core registers */
-+#define BCM4710_REG_CODEC 0x18003000 /* Codec core registers */
-+#define BCM4710_REG_USB 0x18004000 /* USB core registers */
-+#define BCM4710_REG_PCI 0x18005000 /* PCI core registers */
-+#define BCM4710_REG_MIPS 0x18006000 /* MIPS core registers */
-+#define BCM4710_REG_EXTIF 0x18007000 /* External Interface core registers */
-+#define BCM4710_REG_EMAC1 0x18008000 /* Ethernet MAC 1 core registers */
-+
-+#define BCM4710_EXTIF 0x1f000000 /* External Interface base address */
-+#define BCM4710_PCMCIA_MEM 0x1f000000 /* External Interface PCMCIA memory access */
-+#define BCM4710_PCMCIA_IO 0x1f100000 /* PCMCIA I/O access */
-+#define BCM4710_PCMCIA_CONF 0x1f200000 /* PCMCIA configuration */
-+#define BCM4710_PROG 0x1f800000 /* Programable interface */
-+#define BCM4710_FLASH 0x1fc00000 /* Flash */
-+
-+#define BCM4710_EJTAG 0xff200000 /* MIPS EJTAG space (2M) */
-+
-+#define BCM4710_UART (BCM4710_REG_EXTIF + 0x00000300)
-+
-+#define BCM4710_EUART (BCM4710_EXTIF + 0x00800000)
-+#define BCM4710_LED (BCM4710_EXTIF + 0x00900000)
-+
-+#define BCM4712_DEVICE_ID 0x4712 /* 4712 chipcommon chipid */
-+#define BCM4712_MIPS_ID 0x4720 /* 4712 base devid */
-+#define BCM4712LARGE_PKG_ID 0 /* 340pin 4712 package id */
-+#define BCM4712SMALL_PKG_ID 1 /* 200pin 4712 package id */
-+#define BCM4712MID_PKG_ID 2 /* 225pin 4712 package id */
-+
-+#define SDIOH_FPGA_ID 0x4380 /* sdio host fpga */
-+
-+#define BCM5365_DEVICE_ID 0x5365 /* 5365 chipcommon chipid */
-+#define BCM5350_DEVICE_ID 0x5350 /* bcm5350 chipcommon chipid */
-+#define BCM5352_DEVICE_ID 0x5352 /* bcm5352 chipcommon chipid */
-+
-+#define BCM4320_DEVICE_ID 0x4320 /* bcm4320 chipcommon chipid */
-+
-+/* PCMCIA vendor Id's */
-+
-+#define VENDOR_BROADCOM_PCMCIA 0x02d0
-+
-+/* SDIO vendor Id's */
-+#define VENDOR_BROADCOM_SDIO 0x00BF
-+
-+
-+/* boardflags */
-+#define BFL_BTCOEXIST 0x0001 /* This board implements Bluetooth coexistance */
-+#define BFL_PACTRL 0x0002 /* This board has gpio 9 controlling the PA */
-+#define BFL_AIRLINEMODE 0x0004 /* This board implements gpio13 radio disable indication */
-+#define BFL_ENETROBO 0x0010 /* This board has robo switch or core */
-+#define BFL_CCKHIPWR 0x0040 /* Can do high-power CCK transmission */
-+#define BFL_ENETADM 0x0080 /* This board has ADMtek switch */
-+#define BFL_ENETVLAN 0x0100 /* This board has vlan capability */
-+#define BFL_AFTERBURNER 0x0200 /* This board supports Afterburner mode */
-+#define BFL_NOPCI 0x0400 /* This board leaves PCI floating */
-+#define BFL_FEM 0x0800 /* This board supports the Front End Module */
-+#define BFL_EXTLNA 0x1000 /* This board has an external LNA */
-+#define BFL_HGPA 0x2000 /* This board has a high gain PA */
-+#define BFL_BTCMOD 0x4000 /* This board' BTCOEXIST is in the alternate gpios */
-+#define BFL_ALTIQ 0x8000 /* Alternate I/Q settings */
-+
-+/* board specific GPIO assignment, gpio 0-3 are also customer-configurable led */
-+#define BOARD_GPIO_HWRAD_B 0x010 /* bit 4 is HWRAD input on 4301 */
-+#define BOARD_GPIO_BTCMOD_IN 0x010 /* bit 4 is the alternate BT Coexistance Input */
-+#define BOARD_GPIO_BTCMOD_OUT 0x020 /* bit 5 is the alternate BT Coexistance Out */
-+#define BOARD_GPIO_BTC_IN 0x080 /* bit 7 is BT Coexistance Input */
-+#define BOARD_GPIO_BTC_OUT 0x100 /* bit 8 is BT Coexistance Out */
-+#define BOARD_GPIO_PACTRL 0x200 /* bit 9 controls the PA on new 4306 boards */
-+#define PCI_CFG_GPIO_SCS 0x10 /* PCI config space bit 4 for 4306c0 slow clock source */
-+#define PCI_CFG_GPIO_HWRAD 0x20 /* PCI config space GPIO 13 for hw radio disable */
-+#define PCI_CFG_GPIO_XTAL 0x40 /* PCI config space GPIO 14 for Xtal powerup */
-+#define PCI_CFG_GPIO_PLL 0x80 /* PCI config space GPIO 15 for PLL powerdown */
-+
-+/* Bus types */
-+#define SB_BUS 0 /* Silicon Backplane */
-+#define PCI_BUS 1 /* PCI target */
-+#define PCMCIA_BUS 2 /* PCMCIA target */
-+#define SDIO_BUS 3 /* SDIO target */
-+#define JTAG_BUS 4 /* JTAG */
-+
-+/* Allows optimization for single-bus support */
-+#ifdef BCMBUSTYPE
-+#define BUSTYPE(bus) (BCMBUSTYPE)
-+#else
-+#define BUSTYPE(bus) (bus)
-+#endif
-+
-+/* power control defines */
-+#define PLL_DELAY 150 /* us pll on delay */
-+#define FREF_DELAY 200 /* us fref change delay */
-+#define MIN_SLOW_CLK 32 /* us Slow clock period */
-+#define XTAL_ON_DELAY 1000 /* us crystal power-on delay */
-+
-+/* Reference Board Types */
-+
-+#define BU4710_BOARD 0x0400
-+#define VSIM4710_BOARD 0x0401
-+#define QT4710_BOARD 0x0402
-+
-+#define BU4610_BOARD 0x0403
-+#define VSIM4610_BOARD 0x0404
-+
-+#define BU4307_BOARD 0x0405
-+#define BCM94301CB_BOARD 0x0406
-+#define BCM94301PC_BOARD 0x0406 /* Pcmcia 5v card */
-+#define BCM94301MP_BOARD 0x0407
-+#define BCM94307MP_BOARD 0x0408
-+#define BCMAP4307_BOARD 0x0409
-+
-+#define BU4309_BOARD 0x040a
-+#define BCM94309CB_BOARD 0x040b
-+#define BCM94309MP_BOARD 0x040c
-+#define BCM4309AP_BOARD 0x040d
-+
-+#define BCM94302MP_BOARD 0x040e
-+
-+#define VSIM4310_BOARD 0x040f
-+#define BU4711_BOARD 0x0410
-+#define BCM94310U_BOARD 0x0411
-+#define BCM94310AP_BOARD 0x0412
-+#define BCM94310MP_BOARD 0x0414
-+
-+#define BU4306_BOARD 0x0416
-+#define BCM94306CB_BOARD 0x0417
-+#define BCM94306MP_BOARD 0x0418
-+
-+#define BCM94710D_BOARD 0x041a
-+#define BCM94710R1_BOARD 0x041b
-+#define BCM94710R4_BOARD 0x041c
-+#define BCM94710AP_BOARD 0x041d
-+
-+
-+#define BU2050_BOARD 0x041f
-+
-+
-+#define BCM94309G_BOARD 0x0421
-+
-+#define BCM94301PC3_BOARD 0x0422 /* Pcmcia 3.3v card */
-+
-+#define BU4704_BOARD 0x0423
-+#define BU4702_BOARD 0x0424
-+
-+#define BCM94306PC_BOARD 0x0425 /* pcmcia 3.3v 4306 card */
-+
-+#define BU4317_BOARD 0x0426
-+
-+
-+#define BCM94702MN_BOARD 0x0428
-+
-+/* BCM4702 1U CompactPCI Board */
-+#define BCM94702CPCI_BOARD 0x0429
-+
-+/* BCM4702 with BCM95380 VLAN Router */
-+#define BCM95380RR_BOARD 0x042a
-+
-+/* cb4306 with SiGe PA */
-+#define BCM94306CBSG_BOARD 0x042b
-+
-+/* mp4301 with 2050 radio */
-+#define BCM94301MPL_BOARD 0x042c
-+
-+/* cb4306 with SiGe PA */
-+#define PCSG94306_BOARD 0x042d
-+
-+/* bu4704 with sdram */
-+#define BU4704SD_BOARD 0x042e
-+
-+/* Dual 11a/11g Router */
-+#define BCM94704AGR_BOARD 0x042f
-+
-+/* 11a-only minipci */
-+#define BCM94308MP_BOARD 0x0430
-+
-+
-+
-+/* BCM94317 boards */
-+#define BCM94317CB_BOARD 0x0440
-+#define BCM94317MP_BOARD 0x0441
-+#define BCM94317PCMCIA_BOARD 0x0442
-+#define BCM94317SDIO_BOARD 0x0443
-+
-+#define BU4712_BOARD 0x0444
-+#define BU4712SD_BOARD 0x045d
-+#define BU4712L_BOARD 0x045f
-+
-+/* BCM4712 boards */
-+#define BCM94712AP_BOARD 0x0445
-+#define BCM94712P_BOARD 0x0446
-+
-+/* BCM4318 boards */
-+#define BU4318_BOARD 0x0447
-+#define CB4318_BOARD 0x0448
-+#define MPG4318_BOARD 0x0449
-+#define MP4318_BOARD 0x044a
-+#define SD4318_BOARD 0x044b
-+
-+/* BCM63XX boards */
-+#define BCM96338_BOARD 0x6338
-+#define BCM96345_BOARD 0x6345
-+#define BCM96348_BOARD 0x6348
-+
-+/* Another mp4306 with SiGe */
-+#define BCM94306P_BOARD 0x044c
-+
-+/* CF-like 4317 modules */
-+#define BCM94317CF_BOARD 0x044d
-+
-+/* mp4303 */
-+#define BCM94303MP_BOARD 0x044e
-+
-+/* mpsgh4306 */
-+#define BCM94306MPSGH_BOARD 0x044f
-+
-+/* BRCM 4306 w/ Front End Modules */
-+#define BCM94306MPM 0x0450
-+#define BCM94306MPL 0x0453
-+
-+/* 4712agr */
-+#define BCM94712AGR_BOARD 0x0451
-+
-+/* The real CF 4317 board */
-+#define CFI4317_BOARD 0x0452
-+
-+/* pcmcia 4303 */
-+#define PC4303_BOARD 0x0454
-+
-+/* 5350K */
-+#define BCM95350K_BOARD 0x0455
-+
-+/* 5350R */
-+#define BCM95350R_BOARD 0x0456
-+
-+/* 4306mplna */
-+#define BCM94306MPLNA_BOARD 0x0457
-+
-+/* 4320 boards */
-+#define BU4320_BOARD 0x0458
-+#define BU4320S_BOARD 0x0459
-+#define BCM94320PH_BOARD 0x045a
-+
-+/* 4306mph */
-+#define BCM94306MPH_BOARD 0x045b
-+
-+/* 4306pciv */
-+#define BCM94306PCIV_BOARD 0x045c
-+
-+#define BU4712SD_BOARD 0x045d
-+
-+#define BCM94320PFLSH_BOARD 0x045e
-+
-+#define BU4712L_BOARD 0x045f
-+#define BCM94712LGR_BOARD 0x0460
-+#define BCM94320R_BOARD 0x0461
-+
-+#define BU5352_BOARD 0x0462
-+
-+#define BCM94318MPGH_BOARD 0x0463
-+
-+
-+#define BCM95352GR_BOARD 0x0467
-+
-+/* bcm95351agr */
-+#define BCM95351AGR_BOARD 0x0470
-+
-+/* # of GPIO pins */
-+#define GPIO_NUMPINS 16
-+
-+#endif /* _BCMDEVS_H */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/bcmendian.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/bcmendian.h
---- linux-2.6.16/arch/mips/bcm947xx/include/bcmendian.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/bcmendian.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,152 @@
-+/*
-+ * local version of endian.h - byte order defines
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+*/
-+
-+#ifndef _BCMENDIAN_H_
-+#define _BCMENDIAN_H_
-+
-+#include <typedefs.h>
-+
-+/* Byte swap a 16 bit value */
-+#define BCMSWAP16(val) \
-+ ((uint16)( \
-+ (((uint16)(val) & (uint16)0x00ffU) << 8) | \
-+ (((uint16)(val) & (uint16)0xff00U) >> 8) ))
-+
-+/* Byte swap a 32 bit value */
-+#define BCMSWAP32(val) \
-+ ((uint32)( \
-+ (((uint32)(val) & (uint32)0x000000ffUL) << 24) | \
-+ (((uint32)(val) & (uint32)0x0000ff00UL) << 8) | \
-+ (((uint32)(val) & (uint32)0x00ff0000UL) >> 8) | \
-+ (((uint32)(val) & (uint32)0xff000000UL) >> 24) ))
-+
-+/* 2 Byte swap a 32 bit value */
-+#define BCMSWAP32BY16(val) \
-+ ((uint32)( \
-+ (((uint32)(val) & (uint32)0x0000ffffUL) << 16) | \
-+ (((uint32)(val) & (uint32)0xffff0000UL) >> 16) ))
-+
-+
-+static INLINE uint16
-+bcmswap16(uint16 val)
-+{
-+ return BCMSWAP16(val);
-+}
-+
-+static INLINE uint32
-+bcmswap32(uint32 val)
-+{
-+ return BCMSWAP32(val);
-+}
-+
-+static INLINE uint32
-+bcmswap32by16(uint32 val)
-+{
-+ return BCMSWAP32BY16(val);
-+}
-+
-+/* buf - start of buffer of shorts to swap */
-+/* len - byte length of buffer */
-+static INLINE void
-+bcmswap16_buf(uint16 *buf, uint len)
-+{
-+ len = len/2;
-+
-+ while(len--){
-+ *buf = bcmswap16(*buf);
-+ buf++;
-+ }
-+}
-+
-+#ifndef hton16
-+#ifndef IL_BIGENDIAN
-+#define HTON16(i) BCMSWAP16(i)
-+#define hton16(i) bcmswap16(i)
-+#define hton32(i) bcmswap32(i)
-+#define ntoh16(i) bcmswap16(i)
-+#define ntoh32(i) bcmswap32(i)
-+#define ltoh16(i) (i)
-+#define ltoh32(i) (i)
-+#define htol16(i) (i)
-+#define htol32(i) (i)
-+#else
-+#define HTON16(i) (i)
-+#define hton16(i) (i)
-+#define hton32(i) (i)
-+#define ntoh16(i) (i)
-+#define ntoh32(i) (i)
-+#define ltoh16(i) bcmswap16(i)
-+#define ltoh32(i) bcmswap32(i)
-+#define htol16(i) bcmswap16(i)
-+#define htol32(i) bcmswap32(i)
-+#endif
-+#endif
-+
-+#ifndef IL_BIGENDIAN
-+#define ltoh16_buf(buf, i)
-+#define htol16_buf(buf, i)
-+#else
-+#define ltoh16_buf(buf, i) bcmswap16_buf((uint16*)buf, i)
-+#define htol16_buf(buf, i) bcmswap16_buf((uint16*)buf, i)
-+#endif
-+
-+/*
-+* load 16-bit value from unaligned little endian byte array.
-+*/
-+static INLINE uint16
-+ltoh16_ua(uint8 *bytes)
-+{
-+ return (bytes[1]<<8)+bytes[0];
-+}
-+
-+/*
-+* load 32-bit value from unaligned little endian byte array.
-+*/
-+static INLINE uint32
-+ltoh32_ua(uint8 *bytes)
-+{
-+ return (bytes[3]<<24)+(bytes[2]<<16)+(bytes[1]<<8)+bytes[0];
-+}
-+
-+/*
-+* load 16-bit value from unaligned big(network) endian byte array.
-+*/
-+static INLINE uint16
-+ntoh16_ua(uint8 *bytes)
-+{
-+ return (bytes[0]<<8)+bytes[1];
-+}
-+
-+/*
-+* load 32-bit value from unaligned big(network) endian byte array.
-+*/
-+static INLINE uint32
-+ntoh32_ua(uint8 *bytes)
-+{
-+ return (bytes[0]<<24)+(bytes[1]<<16)+(bytes[2]<<8)+bytes[3];
-+}
-+
-+#define ltoh_ua(ptr) ( \
-+ sizeof(*(ptr)) == sizeof(uint8) ? *(uint8 *)ptr : \
-+ sizeof(*(ptr)) == sizeof(uint16) ? (((uint8 *)ptr)[1]<<8)+((uint8 *)ptr)[0] : \
-+ (((uint8 *)ptr)[3]<<24)+(((uint8 *)ptr)[2]<<16)+(((uint8 *)ptr)[1]<<8)+((uint8 *)ptr)[0] \
-+)
-+
-+#define ntoh_ua(ptr) ( \
-+ sizeof(*(ptr)) == sizeof(uint8) ? *(uint8 *)ptr : \
-+ sizeof(*(ptr)) == sizeof(uint16) ? (((uint8 *)ptr)[0]<<8)+((uint8 *)ptr)[1] : \
-+ (((uint8 *)ptr)[0]<<24)+(((uint8 *)ptr)[1]<<16)+(((uint8 *)ptr)[2]<<8)+((uint8 *)ptr)[3] \
-+)
-+
-+#endif /* _BCMENDIAN_H_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/bcmnvram.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/bcmnvram.h
---- linux-2.6.16/arch/mips/bcm947xx/include/bcmnvram.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/bcmnvram.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,95 @@
-+/*
-+ * NVRAM variable manipulation
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#ifndef _bcmnvram_h_
-+#define _bcmnvram_h_
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+#include <typedefs.h>
-+
-+struct nvram_header {
-+ uint32 magic;
-+ uint32 len;
-+ uint32 crc_ver_init; /* 0:7 crc, 8:15 ver, 16:31 sdram_init */
-+ uint32 config_refresh; /* 0:15 sdram_config, 16:31 sdram_refresh */
-+ uint32 config_ncdl; /* ncdl values for memc */
-+};
-+
-+struct nvram_tuple {
-+ char *name;
-+ char *value;
-+ struct nvram_tuple *next;
-+};
-+
-+/*
-+ * Get the value of an NVRAM variable. The pointer returned may be
-+ * invalid after a set.
-+ * @param name name of variable to get
-+ * @return value of variable or NULL if undefined
-+ */
-+extern char * __init early_nvram_get(const char *name);
-+
-+/*
-+ * Get the value of an NVRAM variable. The pointer returned may be
-+ * invalid after a set.
-+ * @param name name of variable to get
-+ * @return value of variable or NULL if undefined
-+ */
-+extern char *nvram_get(const char *name);
-+
-+/*
-+ * Get the value of an NVRAM variable.
-+ * @param name name of variable to get
-+ * @return value of variable or NUL if undefined
-+ */
-+#define nvram_safe_get(name) (BCMINIT(early_nvram_get)(name) ? : "")
-+
-+/*
-+ * Match an NVRAM variable.
-+ * @param name name of variable to match
-+ * @param match value to compare against value of variable
-+ * @return TRUE if variable is defined and its value is string equal
-+ * to match or FALSE otherwise
-+ */
-+static inline int
-+nvram_match(char *name, char *match) {
-+ const char *value = BCMINIT(early_nvram_get)(name);
-+ return (value && !strcmp(value, match));
-+}
-+
-+/*
-+ * Inversely match an NVRAM variable.
-+ * @param name name of variable to match
-+ * @param match value to compare against value of variable
-+ * @return TRUE if variable is defined and its value is not string
-+ * equal to invmatch or FALSE otherwise
-+ */
-+static inline int
-+nvram_invmatch(char *name, char *invmatch) {
-+ const char *value = BCMINIT(early_nvram_get)(name);
-+ return (value && strcmp(value, invmatch));
-+}
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+#define NVRAM_MAGIC 0x48534C46 /* 'FLSH' */
-+#define NVRAM_VERSION 1
-+#define NVRAM_HEADER_SIZE 20
-+#define NVRAM_SPACE 0x8000
-+
-+#define NVRAM_MAX_VALUE_LEN 255
-+#define NVRAM_MAX_PARAM_LEN 64
-+
-+#endif /* _bcmnvram_h_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/bcmsrom.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/bcmsrom.h
---- linux-2.6.16/arch/mips/bcm947xx/include/bcmsrom.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/bcmsrom.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,23 @@
-+/*
-+ * Misc useful routines to access NIC local SROM/OTP .
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#ifndef _bcmsrom_h_
-+#define _bcmsrom_h_
-+
-+extern int srom_var_init(void *sbh, uint bus, void *curmap, osl_t *osh, char **vars, int *count);
-+
-+extern int srom_read(uint bus, void *curmap, osl_t *osh, uint byteoff, uint nbytes, uint16 *buf);
-+extern int srom_write(uint bus, void *curmap, osl_t *osh, uint byteoff, uint nbytes, uint16 *buf);
-+
-+#endif /* _bcmsrom_h_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/bcmutils.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/bcmutils.h
---- linux-2.6.16/arch/mips/bcm947xx/include/bcmutils.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/bcmutils.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,308 @@
-+/*
-+ * Misc useful os-independent macros and functions.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#ifndef _bcmutils_h_
-+#define _bcmutils_h_
-+
-+/*** driver-only section ***/
-+#include <osl.h>
-+
-+#define _BCM_U 0x01 /* upper */
-+#define _BCM_L 0x02 /* lower */
-+#define _BCM_D 0x04 /* digit */
-+#define _BCM_C 0x08 /* cntrl */
-+#define _BCM_P 0x10 /* punct */
-+#define _BCM_S 0x20 /* white space (space/lf/tab) */
-+#define _BCM_X 0x40 /* hex digit */
-+#define _BCM_SP 0x80 /* hard space (0x20) */
-+
-+#define GPIO_PIN_NOTDEFINED 0x20
-+
-+extern unsigned char bcm_ctype[];
-+#define bcm_ismask(x) (bcm_ctype[(int)(unsigned char)(x)])
-+
-+#define bcm_isalnum(c) ((bcm_ismask(c)&(_BCM_U|_BCM_L|_BCM_D)) != 0)
-+#define bcm_isalpha(c) ((bcm_ismask(c)&(_BCM_U|_BCM_L)) != 0)
-+#define bcm_iscntrl(c) ((bcm_ismask(c)&(_BCM_C)) != 0)
-+#define bcm_isdigit(c) ((bcm_ismask(c)&(_BCM_D)) != 0)
-+#define bcm_isgraph(c) ((bcm_ismask(c)&(_BCM_P|_BCM_U|_BCM_L|_BCM_D)) != 0)
-+#define bcm_islower(c) ((bcm_ismask(c)&(_BCM_L)) != 0)
-+#define bcm_isprint(c) ((bcm_ismask(c)&(_BCM_P|_BCM_U|_BCM_L|_BCM_D|_BCM_SP)) != 0)
-+#define bcm_ispunct(c) ((bcm_ismask(c)&(_BCM_P)) != 0)
-+#define bcm_isspace(c) ((bcm_ismask(c)&(_BCM_S)) != 0)
-+#define bcm_isupper(c) ((bcm_ismask(c)&(_BCM_U)) != 0)
-+#define bcm_isxdigit(c) ((bcm_ismask(c)&(_BCM_D|_BCM_X)) != 0)
-+
-+/*
-+ * Spin at most 'us' microseconds while 'exp' is true.
-+ * Caller should explicitly test 'exp' when this completes
-+ * and take appropriate error action if 'exp' is still true.
-+ */
-+#define SPINWAIT(exp, us) { \
-+ uint countdown = (us) + 9; \
-+ while ((exp) && (countdown >= 10)) {\
-+ OSL_DELAY(10); \
-+ countdown -= 10; \
-+ } \
-+}
-+
-+/* generic osl packet queue */
-+struct pktq {
-+ void *head; /* first packet to dequeue */
-+ void *tail; /* last packet to dequeue */
-+ uint len; /* number of queued packets */
-+ uint maxlen; /* maximum number of queued packets */
-+ bool priority; /* enqueue by packet priority */
-+ uint8 prio_map[MAXPRIO+1]; /* user priority to packet enqueue policy map */
-+};
-+#define DEFAULT_QLEN 128
-+
-+#define pktq_len(q) ((q)->len)
-+#define pktq_avail(q) ((q)->maxlen - (q)->len)
-+#define pktq_head(q) ((q)->head)
-+#define pktq_full(q) ((q)->len >= (q)->maxlen)
-+#define _pktq_pri(q, pri) ((q)->prio_map[pri])
-+#define pktq_tailpri(q) ((q)->tail ? _pktq_pri(q, PKTPRIO((q)->tail)) : _pktq_pri(q, 0))
-+
-+/* externs */
-+/* packet */
-+extern uint pktcopy(osl_t *osh, void *p, uint offset, int len, uchar *buf);
-+extern uint pkttotlen(osl_t *osh, void *);
-+extern void pktq_init(struct pktq *q, uint maxlen, const uint8 prio_map[]);
-+extern void pktenq(struct pktq *q, void *p, bool lifo);
-+extern void *pktdeq(struct pktq *q);
-+extern void *pktdeqtail(struct pktq *q);
-+/* string */
-+extern uint bcm_atoi(char *s);
-+extern uchar bcm_toupper(uchar c);
-+extern ulong bcm_strtoul(char *cp, char **endp, uint base);
-+extern char *bcmstrstr(char *haystack, char *needle);
-+extern char *bcmstrcat(char *dest, const char *src);
-+extern ulong wchar2ascii(char *abuf, ushort *wbuf, ushort wbuflen, ulong abuflen);
-+/* ethernet address */
-+extern char *bcm_ether_ntoa(char *ea, char *buf);
-+extern int bcm_ether_atoe(char *p, char *ea);
-+/* delay */
-+extern void bcm_mdelay(uint ms);
-+/* variable access */
-+extern char *getvar(char *vars, char *name);
-+extern int getintvar(char *vars, char *name);
-+extern uint getgpiopin(char *vars, char *pin_name, uint def_pin);
-+#define bcmlog(fmt, a1, a2)
-+#define bcmdumplog(buf, size) *buf = '\0'
-+#define bcmdumplogent(buf, idx) -1
-+
-+/*** driver/apps-shared section ***/
-+
-+#define BCME_STRLEN 64
-+#define VALID_BCMERROR(e) ((e <= 0) && (e >= BCME_LAST))
-+
-+
-+/*
-+ * error codes could be added but the defined ones shouldn't be changed/deleted
-+ * these error codes are exposed to the user code
-+ * when ever a new error code is added to this list
-+ * please update errorstring table with the related error string and
-+ * update osl files with os specific errorcode map
-+*/
-+
-+#define BCME_ERROR -1 /* Error generic */
-+#define BCME_BADARG -2 /* Bad Argument */
-+#define BCME_BADOPTION -3 /* Bad option */
-+#define BCME_NOTUP -4 /* Not up */
-+#define BCME_NOTDOWN -5 /* Not down */
-+#define BCME_NOTAP -6 /* Not AP */
-+#define BCME_NOTSTA -7 /* Not STA */
-+#define BCME_BADKEYIDX -8 /* BAD Key Index */
-+#define BCME_RADIOOFF -9 /* Radio Off */
-+#define BCME_NOTBANDLOCKED -10 /* Not bandlocked */
-+#define BCME_NOCLK -11 /* No Clock*/
-+#define BCME_BADRATESET -12 /* BAD RateSet*/
-+#define BCME_BADBAND -13 /* BAD Band */
-+#define BCME_BUFTOOSHORT -14 /* Buffer too short */
-+#define BCME_BUFTOOLONG -15 /* Buffer too Long */
-+#define BCME_BUSY -16 /* Busy*/
-+#define BCME_NOTASSOCIATED -17 /* Not associated*/
-+#define BCME_BADSSIDLEN -18 /* BAD SSID Len */
-+#define BCME_OUTOFRANGECHAN -19 /* Out of Range Channel*/
-+#define BCME_BADCHAN -20 /* BAD Channel */
-+#define BCME_BADADDR -21 /* BAD Address*/
-+#define BCME_NORESOURCE -22 /* No resources*/
-+#define BCME_UNSUPPORTED -23 /* Unsupported*/
-+#define BCME_BADLEN -24 /* Bad Length*/
-+#define BCME_NOTREADY -25 /* Not ready Yet*/
-+#define BCME_EPERM -26 /* Not Permitted */
-+#define BCME_NOMEM -27 /* No Memory */
-+#define BCME_ASSOCIATED -28 /* Associated */
-+#define BCME_RANGE -29 /* Range Error*/
-+#define BCME_NOTFOUND -30 /* Not found */
-+#define BCME_LAST BCME_NOTFOUND
-+
-+#ifndef ABS
-+#define ABS(a) (((a)<0)?-(a):(a))
-+#endif
-+
-+#ifndef MIN
-+#define MIN(a, b) (((a)<(b))?(a):(b))
-+#endif
-+
-+#ifndef MAX
-+#define MAX(a, b) (((a)>(b))?(a):(b))
-+#endif
-+
-+#define CEIL(x, y) (((x) + ((y)-1)) / (y))
-+#define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y))
-+#define ISALIGNED(a, x) (((a) & ((x)-1)) == 0)
-+#define ISPOWEROF2(x) ((((x)-1)&(x))==0)
-+#define VALID_MASK(mask) !((mask) & ((mask) + 1))
-+#define OFFSETOF(type, member) ((uint)(uintptr)&((type *)0)->member)
-+#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
-+
-+/* bit map related macros */
-+#ifndef setbit
-+#define NBBY 8 /* 8 bits per byte */
-+#define setbit(a,i) (((uint8 *)a)[(i)/NBBY] |= 1<<((i)%NBBY))
-+#define clrbit(a,i) (((uint8 *)a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
-+#define isset(a,i) (((uint8 *)a)[(i)/NBBY] & (1<<((i)%NBBY)))
-+#define isclr(a,i) ((((uint8 *)a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
-+#endif
-+
-+#define NBITS(type) (sizeof(type) * 8)
-+#define NBITVAL(bits) (1 << (bits))
-+#define MAXBITVAL(bits) ((1 << (bits)) - 1)
-+
-+/* crc defines */
-+#define CRC8_INIT_VALUE 0xff /* Initial CRC8 checksum value */
-+#define CRC8_GOOD_VALUE 0x9f /* Good final CRC8 checksum value */
-+#define CRC16_INIT_VALUE 0xffff /* Initial CRC16 checksum value */
-+#define CRC16_GOOD_VALUE 0xf0b8 /* Good final CRC16 checksum value */
-+#define CRC32_INIT_VALUE 0xffffffff /* Initial CRC32 checksum value */
-+#define CRC32_GOOD_VALUE 0xdebb20e3 /* Good final CRC32 checksum value */
-+
-+/* bcm_format_flags() bit description structure */
-+typedef struct bcm_bit_desc {
-+ uint32 bit;
-+ char* name;
-+} bcm_bit_desc_t;
-+
-+/* tag_ID/length/value_buffer tuple */
-+typedef struct bcm_tlv {
-+ uint8 id;
-+ uint8 len;
-+ uint8 data[1];
-+} bcm_tlv_t;
-+
-+/* Check that bcm_tlv_t fits into the given buflen */
-+#define bcm_valid_tlv(elt, buflen) ((buflen) >= 2 && (int)(buflen) >= (int)(2 + (elt)->len))
-+
-+/* buffer length for ethernet address from bcm_ether_ntoa() */
-+#define ETHER_ADDR_STR_LEN 18
-+
-+/* unaligned load and store macros */
-+#ifdef IL_BIGENDIAN
-+static INLINE uint32
-+load32_ua(uint8 *a)
-+{
-+ return ((a[0] << 24) | (a[1] << 16) | (a[2] << 8) | a[3]);
-+}
-+
-+static INLINE void
-+store32_ua(uint8 *a, uint32 v)
-+{
-+ a[0] = (v >> 24) & 0xff;
-+ a[1] = (v >> 16) & 0xff;
-+ a[2] = (v >> 8) & 0xff;
-+ a[3] = v & 0xff;
-+}
-+
-+static INLINE uint16
-+load16_ua(uint8 *a)
-+{
-+ return ((a[0] << 8) | a[1]);
-+}
-+
-+static INLINE void
-+store16_ua(uint8 *a, uint16 v)
-+{
-+ a[0] = (v >> 8) & 0xff;
-+ a[1] = v & 0xff;
-+}
-+
-+#else
-+
-+static INLINE uint32
-+load32_ua(uint8 *a)
-+{
-+ return ((a[3] << 24) | (a[2] << 16) | (a[1] << 8) | a[0]);
-+}
-+
-+static INLINE void
-+store32_ua(uint8 *a, uint32 v)
-+{
-+ a[3] = (v >> 24) & 0xff;
-+ a[2] = (v >> 16) & 0xff;
-+ a[1] = (v >> 8) & 0xff;
-+ a[0] = v & 0xff;
-+}
-+
-+static INLINE uint16
-+load16_ua(uint8 *a)
-+{
-+ return ((a[1] << 8) | a[0]);
-+}
-+
-+static INLINE void
-+store16_ua(uint8 *a, uint16 v)
-+{
-+ a[1] = (v >> 8) & 0xff;
-+ a[0] = v & 0xff;
-+}
-+
-+#endif
-+
-+/* externs */
-+/* crc */
-+extern uint8 hndcrc8(uint8 *p, uint nbytes, uint8 crc);
-+/* format/print */
-+/* IE parsing */
-+extern bcm_tlv_t *bcm_next_tlv(bcm_tlv_t *elt, int *buflen);
-+extern bcm_tlv_t *bcm_parse_tlvs(void *buf, int buflen, uint key);
-+extern bcm_tlv_t *bcm_parse_ordered_tlvs(void *buf, int buflen, uint key);
-+
-+/* bcmerror*/
-+extern const char *bcmerrorstr(int bcmerror);
-+
-+/* multi-bool data type: set of bools, mbool is true if any is set */
-+typedef uint32 mbool;
-+#define mboolset(mb, bit) (mb |= bit) /* set one bool */
-+#define mboolclr(mb, bit) (mb &= ~bit) /* clear one bool */
-+#define mboolisset(mb, bit) ((mb & bit) != 0) /* TRUE if one bool is set */
-+#define mboolmaskset(mb, mask, val) ((mb) = (((mb) & ~(mask)) | (val)))
-+
-+/* power conversion */
-+extern uint16 bcm_qdbm_to_mw(uint8 qdbm);
-+extern uint8 bcm_mw_to_qdbm(uint16 mw);
-+
-+/* generic datastruct to help dump routines */
-+struct fielddesc {
-+ char *nameandfmt;
-+ uint32 offset;
-+ uint32 len;
-+};
-+
-+typedef uint32 (*readreg_rtn)(void *arg0, void *arg1, uint32 offset);
-+extern uint bcmdumpfields(readreg_rtn func_ptr, void *arg0, void *arg1, struct fielddesc *str, char *buf, uint32 bufsize);
-+
-+extern uint bcm_mkiovar(char *name, char *data, uint datalen, char *buf, uint len);
-+
-+#endif /* _bcmutils_h_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/bitfuncs.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/bitfuncs.h
---- linux-2.6.16/arch/mips/bcm947xx/include/bitfuncs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/bitfuncs.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,85 @@
-+/*
-+ * bit manipulation utility functions
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#ifndef _BITFUNCS_H
-+#define _BITFUNCS_H
-+
-+#include <typedefs.h>
-+
-+/* local prototypes */
-+static INLINE uint32 find_msbit(uint32 x);
-+
-+
-+/*
-+ * find_msbit: returns index of most significant set bit in x, with index
-+ * range defined as 0-31. NOTE: returns zero if input is zero.
-+ */
-+
-+#if defined(USE_PENTIUM_BSR) && defined(__GNUC__)
-+
-+/*
-+ * Implementation for Pentium processors and gcc. Note that this
-+ * instruction is actually very slow on some processors (e.g., family 5,
-+ * model 2, stepping 12, "Pentium 75 - 200"), so we use the generic
-+ * implementation instead.
-+ */
-+static INLINE uint32 find_msbit(uint32 x)
-+{
-+ uint msbit;
-+ __asm__("bsrl %1,%0"
-+ :"=r" (msbit)
-+ :"r" (x));
-+ return msbit;
-+}
-+
-+#else
-+
-+/*
-+ * Generic Implementation
-+ */
-+
-+#define DB_POW_MASK16 0xffff0000
-+#define DB_POW_MASK8 0x0000ff00
-+#define DB_POW_MASK4 0x000000f0
-+#define DB_POW_MASK2 0x0000000c
-+#define DB_POW_MASK1 0x00000002
-+
-+static INLINE uint32 find_msbit(uint32 x)
-+{
-+ uint32 temp_x = x;
-+ uint msbit = 0;
-+ if (temp_x & DB_POW_MASK16) {
-+ temp_x >>= 16;
-+ msbit = 16;
-+ }
-+ if (temp_x & DB_POW_MASK8) {
-+ temp_x >>= 8;
-+ msbit += 8;
-+ }
-+ if (temp_x & DB_POW_MASK4) {
-+ temp_x >>= 4;
-+ msbit += 4;
-+ }
-+ if (temp_x & DB_POW_MASK2) {
-+ temp_x >>= 2;
-+ msbit += 2;
-+ }
-+ if (temp_x & DB_POW_MASK1) {
-+ msbit += 1;
-+ }
-+ return(msbit);
-+}
-+
-+#endif
-+
-+#endif /* _BITFUNCS_H */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/flash.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/flash.h
---- linux-2.6.16/arch/mips/bcm947xx/include/flash.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/flash.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,188 @@
-+/*
-+ * flash.h: Common definitions for flash access.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+/* Types of flashes we know about */
-+typedef enum _flash_type {OLD, BSC, SCS, AMD, SST, SFLASH} flash_type_t;
-+
-+/* Commands to write/erase the flases */
-+typedef struct _flash_cmds{
-+ flash_type_t type;
-+ bool need_unlock;
-+ uint16 pre_erase;
-+ uint16 erase_block;
-+ uint16 erase_chip;
-+ uint16 write_word;
-+ uint16 write_buf;
-+ uint16 clear_csr;
-+ uint16 read_csr;
-+ uint16 read_id;
-+ uint16 confirm;
-+ uint16 read_array;
-+} flash_cmds_t;
-+
-+#define UNLOCK_CMD_WORDS 2
-+
-+typedef struct _unlock_cmd {
-+ uint addr[UNLOCK_CMD_WORDS];
-+ uint16 cmd[UNLOCK_CMD_WORDS];
-+} unlock_cmd_t;
-+
-+/* Flash descriptors */
-+typedef struct _flash_desc {
-+ uint16 mfgid; /* Manufacturer Id */
-+ uint16 devid; /* Device Id */
-+ uint size; /* Total size in bytes */
-+ uint width; /* Device width in bytes */
-+ flash_type_t type; /* Device type old, S, J */
-+ uint bsize; /* Block size */
-+ uint nb; /* Number of blocks */
-+ uint ff; /* First full block */
-+ uint lf; /* Last full block */
-+ uint nsub; /* Number of subblocks */
-+ uint *subblocks; /* Offsets for subblocks */
-+ char *desc; /* Description */
-+} flash_desc_t;
-+
-+
-+#ifdef DECLARE_FLASHES
-+flash_cmds_t sflash_cmd_t =
-+ { SFLASH, 0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-+
-+flash_cmds_t flash_cmds[] = {
-+/* type needu preera eraseb erasech write wbuf clcsr rdcsr rdid confrm read */
-+ { BSC, 0, 0x00, 0x20, 0x00, 0x40, 0x00, 0x50, 0x70, 0x90, 0xd0, 0xff },
-+ { SCS, 0, 0x00, 0x20, 0x00, 0x40, 0xe8, 0x50, 0x70, 0x90, 0xd0, 0xff },
-+ { AMD, 1, 0x80, 0x30, 0x10, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x00, 0xf0 },
-+ { SST, 1, 0x80, 0x50, 0x10, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x00, 0xf0 },
-+ { 0 }
-+};
-+
-+unlock_cmd_t unlock_cmd_amd = {
-+#ifdef MIPSEB
-+/* addr: */ { 0x0aa8, 0x0556},
-+#else
-+/* addr: */ { 0x0aaa, 0x0554},
-+#endif
-+/* data: */ { 0xaa, 0x55}
-+};
-+
-+unlock_cmd_t unlock_cmd_sst = {
-+#ifdef MIPSEB
-+/* addr: */ { 0xaaa8, 0x5556},
-+#else
-+/* addr: */ { 0xaaaa, 0x5554},
-+#endif
-+/* data: */ { 0xaa, 0x55}
-+};
-+
-+#define AMD_CMD 0xaaa
-+#define SST_CMD 0xaaaa
-+
-+/* intel unlock block cmds */
-+#define INTEL_UNLOCK1 0x60
-+#define INTEL_UNLOCK2 0xD0
-+
-+/* Just eight blocks of 8KB byte each */
-+
-+uint blk8x8k[] = { 0x00000000,
-+ 0x00002000,
-+ 0x00004000,
-+ 0x00006000,
-+ 0x00008000,
-+ 0x0000a000,
-+ 0x0000c000,
-+ 0x0000e000,
-+ 0x00010000
-+};
-+
-+/* Funky AMD arrangement for 29xx800's */
-+uint amd800[] = { 0x00000000, /* 16KB */
-+ 0x00004000, /* 32KB */
-+ 0x0000c000, /* 8KB */
-+ 0x0000e000, /* 8KB */
-+ 0x00010000, /* 8KB */
-+ 0x00012000, /* 8KB */
-+ 0x00014000, /* 32KB */
-+ 0x0001c000, /* 16KB */
-+ 0x00020000
-+};
-+
-+/* AMD arrangement for 29xx160's */
-+uint amd4112[] = { 0x00000000, /* 32KB */
-+ 0x00008000, /* 8KB */
-+ 0x0000a000, /* 8KB */
-+ 0x0000c000, /* 16KB */
-+ 0x00010000
-+};
-+uint amd2114[] = { 0x00000000, /* 16KB */
-+ 0x00004000, /* 8KB */
-+ 0x00006000, /* 8KB */
-+ 0x00008000, /* 32KB */
-+ 0x00010000
-+};
-+
-+
-+flash_desc_t sflash_desc =
-+ { 0, 0, 0, 0, SFLASH, 0, 0, 0, 0, 0, NULL, "SFLASH" };
-+
-+flash_desc_t flashes[] = {
-+ { 0x00b0, 0x00d0, 0x0200000, 2, SCS, 0x10000, 32, 0, 31, 0, NULL, "Intel 28F160S3/5 1Mx16" },
-+ { 0x00b0, 0x00d4, 0x0400000, 2, SCS, 0x10000, 64, 0, 63, 0, NULL, "Intel 28F320S3/5 2Mx16" },
-+ { 0x0089, 0x8890, 0x0200000, 2, BSC, 0x10000, 32, 0, 30, 8, blk8x8k, "Intel 28F160B3 1Mx16 TopB" },
-+ { 0x0089, 0x8891, 0x0200000, 2, BSC, 0x10000, 32, 1, 31, 8, blk8x8k, "Intel 28F160B3 1Mx16 BotB" },
-+ { 0x0089, 0x8896, 0x0400000, 2, BSC, 0x10000, 64, 0, 62, 8, blk8x8k, "Intel 28F320B3 2Mx16 TopB" },
-+ { 0x0089, 0x8897, 0x0400000, 2, BSC, 0x10000, 64, 1, 63, 8, blk8x8k, "Intel 28F320B3 2Mx16 BotB" },
-+ { 0x0089, 0x8898, 0x0800000, 2, BSC, 0x10000, 128, 0, 126, 8, blk8x8k, "Intel 28F640B3 4Mx16 TopB" },
-+ { 0x0089, 0x8899, 0x0800000, 2, BSC, 0x10000, 128, 1, 127, 8, blk8x8k, "Intel 28F640B3 4Mx16 BotB" },
-+ { 0x0089, 0x88C2, 0x0200000, 2, BSC, 0x10000, 32, 0, 30, 8, blk8x8k, "Intel 28F160C3 1Mx16 TopB" },
-+ { 0x0089, 0x88C3, 0x0200000, 2, BSC, 0x10000, 32, 1, 31, 8, blk8x8k, "Intel 28F160C3 1Mx16 BotB" },
-+ { 0x0089, 0x88C4, 0x0400000, 2, BSC, 0x10000, 64, 0, 62, 8, blk8x8k, "Intel 28F320C3 2Mx16 TopB" },
-+ { 0x0089, 0x88C5, 0x0400000, 2, BSC, 0x10000, 64, 1, 63, 8, blk8x8k, "Intel 28F320C3 2Mx16 BotB" },
-+ { 0x0089, 0x88CC, 0x0800000, 2, BSC, 0x10000, 128, 0, 126, 8, blk8x8k, "Intel 28F640C3 4Mx16 TopB" },
-+ { 0x0089, 0x88CD, 0x0800000, 2, BSC, 0x10000, 128, 1, 127, 8, blk8x8k, "Intel 28F640C3 4Mx16 BotB" },
-+ { 0x0089, 0x0014, 0x0400000, 2, SCS, 0x20000, 32, 0, 31, 0, NULL, "Intel 28F320J5 2Mx16" },
-+ { 0x0089, 0x0015, 0x0800000, 2, SCS, 0x20000, 64, 0, 63, 0, NULL, "Intel 28F640J5 4Mx16" },
-+ { 0x0089, 0x0016, 0x0400000, 2, SCS, 0x20000, 32, 0, 31, 0, NULL, "Intel 28F320J3 2Mx16" },
-+ { 0x0089, 0x0017, 0x0800000, 2, SCS, 0x20000, 64, 0, 63, 0, NULL, "Intel 28F640J3 4Mx16" },
-+ { 0x0089, 0x0018, 0x1000000, 2, SCS, 0x20000, 128, 0, 127, 0, NULL, "Intel 28F128J3 8Mx16" },
-+ { 0x00b0, 0x00e3, 0x0400000, 2, BSC, 0x10000, 64, 1, 63, 8, blk8x8k, "Sharp 28F320BJE 2Mx16 BotB" },
-+ { 0x0001, 0x224a, 0x0100000, 2, AMD, 0x10000, 16, 0, 13, 8, amd800, "AMD 29DL800BT 512Kx16 TopB" },
-+ { 0x0001, 0x22cb, 0x0100000, 2, AMD, 0x10000, 16, 2, 15, 8, amd800, "AMD 29DL800BB 512Kx16 BotB" },
-+ { 0x0001, 0x22c4, 0x0200000, 2, AMD, 0x10000, 32, 0, 30, 4, amd2114, "AMD 29lv160DT 1Mx16 TopB" },
-+ { 0x0001, 0x2249, 0x0200000, 2, AMD, 0x10000, 32, 1, 31, 4, amd4112, "AMD 29lv160DB 1Mx16 BotB" },
-+ { 0x0001, 0x22f6, 0x0400000, 2, AMD, 0x10000, 64, 0, 62, 8, blk8x8k, "AMD 29lv320DT 2Mx16 TopB" },
-+ { 0x0001, 0x22f9, 0x0400000, 2, AMD, 0x10000, 64, 1, 63, 8, blk8x8k, "AMD 29lv320DB 2Mx16 BotB" },
-+ { 0x0001, 0x227e, 0x0400000, 2, AMD, 0x10000, 64, 0, 62, 8, blk8x8k, "AMD 29lv320MT 2Mx16 TopB" },
-+ { 0x0001, 0x2200, 0x0400000, 2, AMD, 0x10000, 64, 1, 63, 8, blk8x8k, "AMD 29lv320MB 2Mx16 BotB" },
-+ { 0x0020, 0x22CA, 0x0400000, 2, AMD, 0x10000, 64, 0, 62, 4, amd4112, "ST 29w320DT 2Mx16 TopB" },
-+ { 0x0020, 0x22CB, 0x0400000, 2, AMD, 0x10000, 64, 1, 63, 4, amd2114, "ST 29w320DB 2Mx16 BotB" },
-+ { 0x00C2, 0x00A7, 0x0400000, 2, AMD, 0x10000, 64, 0, 62, 4, amd4112, "MX29LV320T 2Mx16 TopB" },
-+ { 0x00C2, 0x00A8, 0x0400000, 2, AMD, 0x10000, 64, 1, 63, 4, amd2114, "MX29LV320B 2Mx16 BotB" },
-+ { 0x0004, 0x22F6, 0x0400000, 2, AMD, 0x10000, 64, 0, 62, 4, amd4112, "MBM29LV320TE 2Mx16 TopB" },
-+ { 0x0004, 0x22F9, 0x0400000, 2, AMD, 0x10000, 64, 1, 63, 4, amd2114, "MBM29LV320BE 2Mx16 BotB" },
-+ { 0x0098, 0x009A, 0x0400000, 2, AMD, 0x10000, 64, 0, 62, 4, amd4112, "TC58FVT321 2Mx16 TopB" },
-+ { 0x0098, 0x009C, 0x0400000, 2, AMD, 0x10000, 64, 1, 63, 4, amd2114, "TC58FVB321 2Mx16 BotB" },
-+ { 0x00C2, 0x22A7, 0x0400000, 2, AMD, 0x10000, 64, 0, 62, 4, amd4112, "MX29LV320T 2Mx16 TopB" },
-+ { 0x00C2, 0x22A8, 0x0400000, 2, AMD, 0x10000, 64, 1, 63, 4, amd2114, "MX29LV320B 2Mx16 BotB" },
-+ { 0x00BF, 0x2783, 0x0400000, 2, SST, 0x10000, 64, 0, 63, 0, NULL, "SST39VF320 2Mx16" },
-+ { 0, 0, 0, 0, OLD, 0, 0, 0, 0, 0, NULL, NULL },
-+};
-+
-+#else
-+
-+extern flash_cmds_t flash_cmds[];
-+extern unlock_cmd_t unlock_cmd;
-+extern flash_desc_t flashes[];
-+
-+#endif
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/flashutl.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/flashutl.h
---- linux-2.6.16/arch/mips/bcm947xx/include/flashutl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/flashutl.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,27 @@
-+/*
-+ * BCM47XX FLASH driver interface
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#ifndef _flashutl_h_
-+#define _flashutl_h_
-+
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+int sysFlashInit(char *flash_str);
-+int sysFlashRead(uint off, uchar *dst, uint bytes);
-+int sysFlashWrite(uint off, uchar *src, uint bytes);
-+void nvWrite(unsigned short *data, unsigned int len);
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+#endif /* _flashutl_h_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/hndmips.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/hndmips.h
---- linux-2.6.16/arch/mips/bcm947xx/include/hndmips.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/hndmips.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,16 @@
-+/*
-+ * Alternate include file for HND sbmips.h since CFE also ships with
-+ * a sbmips.h.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#include "sbmips.h"
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/linux_osl.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/linux_osl.h
---- linux-2.6.16/arch/mips/bcm947xx/include/linux_osl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/linux_osl.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,331 @@
-+/*
-+ * Linux OS Independent Layer
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#ifndef _linux_osl_h_
-+#define _linux_osl_h_
-+
-+#include <typedefs.h>
-+
-+/* use current 2.4.x calling conventions */
-+#include <linuxver.h>
-+
-+/* assert and panic */
-+#ifdef __GNUC__
-+#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
-+#if GCC_VERSION > 30100
-+#define ASSERT(exp) do {} while (0)
-+#else
-+/* ASSERT could causes segmentation fault on GCC3.1, use empty instead*/
-+#define ASSERT(exp)
-+#endif
-+#endif
-+
-+/* microsecond delay */
-+#define OSL_DELAY(usec) osl_delay(usec)
-+extern void osl_delay(uint usec);
-+
-+/* PCI configuration space access macros */
-+#define OSL_PCI_READ_CONFIG(osh, offset, size) \
-+ osl_pci_read_config((osh), (offset), (size))
-+#define OSL_PCI_WRITE_CONFIG(osh, offset, size, val) \
-+ osl_pci_write_config((osh), (offset), (size), (val))
-+extern uint32 osl_pci_read_config(osl_t *osh, uint size, uint offset);
-+extern void osl_pci_write_config(osl_t *osh, uint offset, uint size, uint val);
-+
-+/* PCI device bus # and slot # */
-+#define OSL_PCI_BUS(osh) osl_pci_bus(osh)
-+#define OSL_PCI_SLOT(osh) osl_pci_slot(osh)
-+extern uint osl_pci_bus(osl_t *osh);
-+extern uint osl_pci_slot(osl_t *osh);
-+
-+/* OSL initialization */
-+extern osl_t *osl_attach(void *pdev);
-+extern void osl_detach(osl_t *osh);
-+
-+/* host/bus architecture-specific byte swap */
-+#define BUS_SWAP32(v) (v)
-+
-+/* general purpose memory allocation */
-+
-+#define MALLOC(osh, size) kmalloc(size, GFP_ATOMIC)
-+#define MFREE(osh, addr, size) kfree(addr);
-+
-+#define MALLOC_FAILED(osh) osl_malloc_failed((osh))
-+
-+extern void *osl_malloc(osl_t *osh, uint size);
-+extern void osl_mfree(osl_t *osh, void *addr, uint size);
-+extern uint osl_malloced(osl_t *osh);
-+extern uint osl_malloc_failed(osl_t *osh);
-+
-+/* allocate/free shared (dma-able) consistent memory */
-+#define DMA_CONSISTENT_ALIGN PAGE_SIZE
-+#define DMA_ALLOC_CONSISTENT(osh, size, pap) \
-+ osl_dma_alloc_consistent((osh), (size), (pap))
-+#define DMA_FREE_CONSISTENT(osh, va, size, pa) \
-+ osl_dma_free_consistent((osh), (void*)(va), (size), (pa))
-+extern void *osl_dma_alloc_consistent(osl_t *osh, uint size, ulong *pap);
-+extern void osl_dma_free_consistent(osl_t *osh, void *va, uint size, ulong pa);
-+
-+/* map/unmap direction */
-+#define DMA_TX 1
-+#define DMA_RX 2
-+
-+/* register access macros */
-+#if defined(BCMJTAG)
-+#include <bcmjtag.h>
-+#define R_REG(r) bcmjtag_read(NULL, (uint32)(r), sizeof (*(r)))
-+#define W_REG(r, v) bcmjtag_write(NULL, (uint32)(r), (uint32)(v), sizeof (*(r)))
-+#endif
-+
-+/*
-+ * BINOSL selects the slightly slower function-call-based binary compatible osl.
-+ * Macros expand to calls to functions defined in linux_osl.c .
-+ */
-+#ifndef BINOSL
-+
-+/* string library, kernel mode */
-+#define printf(fmt, args...) printk(fmt, ## args)
-+#include <linux/kernel.h>
-+#include <linux/string.h>
-+
-+/* register access macros */
-+#if !defined(BCMJTAG)
-+#ifndef IL_BIGENDIAN
-+#define R_REG(r) ( \
-+ sizeof(*(r)) == sizeof(uint8) ? readb((volatile uint8*)(r)) : \
-+ sizeof(*(r)) == sizeof(uint16) ? readw((volatile uint16*)(r)) : \
-+ readl((volatile uint32*)(r)) \
-+)
-+#define W_REG(r, v) do { \
-+ switch (sizeof(*(r))) { \
-+ case sizeof(uint8): writeb((uint8)(v), (volatile uint8*)(r)); break; \
-+ case sizeof(uint16): writew((uint16)(v), (volatile uint16*)(r)); break; \
-+ case sizeof(uint32): writel((uint32)(v), (volatile uint32*)(r)); break; \
-+ } \
-+} while (0)
-+#else /* IL_BIGENDIAN */
-+#define R_REG(r) ({ \
-+ __typeof(*(r)) __osl_v; \
-+ switch (sizeof(*(r))) { \
-+ case sizeof(uint8): __osl_v = readb((volatile uint8*)((uint32)r^3)); break; \
-+ case sizeof(uint16): __osl_v = readw((volatile uint16*)((uint32)r^2)); break; \
-+ case sizeof(uint32): __osl_v = readl((volatile uint32*)(r)); break; \
-+ } \
-+ __osl_v; \
-+})
-+#define W_REG(r, v) do { \
-+ switch (sizeof(*(r))) { \
-+ case sizeof(uint8): writeb((uint8)(v), (volatile uint8*)((uint32)r^3)); break; \
-+ case sizeof(uint16): writew((uint16)(v), (volatile uint16*)((uint32)r^2)); break; \
-+ case sizeof(uint32): writel((uint32)(v), (volatile uint32*)(r)); break; \
-+ } \
-+} while (0)
-+#endif
-+#endif
-+
-+#define AND_REG(r, v) W_REG((r), R_REG(r) & (v))
-+#define OR_REG(r, v) W_REG((r), R_REG(r) | (v))
-+
-+/* bcopy, bcmp, and bzero */
-+#define bcopy(src, dst, len) memcpy((dst), (src), (len))
-+#define bcmp(b1, b2, len) memcmp((b1), (b2), (len))
-+#define bzero(b, len) memset((b), '\0', (len))
-+
-+/* uncached virtual address */
-+#ifdef mips
-+#define OSL_UNCACHED(va) KSEG1ADDR((va))
-+#include <asm/addrspace.h>
-+#else
-+#define OSL_UNCACHED(va) (va)
-+#endif
-+
-+/* get processor cycle count */
-+#if defined(mips)
-+#define OSL_GETCYCLES(x) ((x) = read_c0_count() * 2)
-+#elif defined(__i386__)
-+#define OSL_GETCYCLES(x) rdtscl((x))
-+#else
-+#define OSL_GETCYCLES(x) ((x) = 0)
-+#endif
-+
-+/* dereference an address that may cause a bus exception */
-+#ifdef mips
-+#if defined(MODULE) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,17))
-+#define BUSPROBE(val, addr) panic("get_dbe() will not fixup a bus exception when compiled into a module")
-+#else
-+#define BUSPROBE(val, addr) get_dbe((val), (addr))
-+#include <asm/paccess.h>
-+#endif
-+#else
-+#define BUSPROBE(val, addr) ({ (val) = R_REG((addr)); 0; })
-+#endif
-+
-+/* map/unmap physical to virtual I/O */
-+#define REG_MAP(pa, size) ioremap_nocache((unsigned long)(pa), (unsigned long)(size))
-+#define REG_UNMAP(va) iounmap((void *)(va))
-+
-+/* shared (dma-able) memory access macros */
-+#define R_SM(r) *(r)
-+#define W_SM(r, v) (*(r) = (v))
-+#define BZERO_SM(r, len) memset((r), '\0', (len))
-+
-+/* packet primitives */
-+#define PKTGET(osh, len, send) osl_pktget((osh), (len), (send))
-+#define PKTFREE(osh, skb, send) osl_pktfree((skb))
-+#define PKTDATA(osh, skb) (((struct sk_buff*)(skb))->data)
-+#define PKTLEN(osh, skb) (((struct sk_buff*)(skb))->len)
-+#define PKTHEADROOM(osh, skb) (PKTDATA(osh,skb)-(((struct sk_buff*)(skb))->head))
-+#define PKTTAILROOM(osh, skb) ((((struct sk_buff*)(skb))->end)-(((struct sk_buff*)(skb))->tail))
-+#define PKTNEXT(osh, skb) (((struct sk_buff*)(skb))->next)
-+#define PKTSETNEXT(skb, x) (((struct sk_buff*)(skb))->next = (struct sk_buff*)(x))
-+#define PKTSETLEN(osh, skb, len) __skb_trim((struct sk_buff*)(skb), (len))
-+#define PKTPUSH(osh, skb, bytes) skb_push((struct sk_buff*)(skb), (bytes))
-+#define PKTPULL(osh, skb, bytes) skb_pull((struct sk_buff*)(skb), (bytes))
-+#define PKTDUP(osh, skb) skb_clone((struct sk_buff*)(skb), GFP_ATOMIC)
-+#define PKTCOOKIE(skb) ((void*)((struct sk_buff*)(skb))->csum)
-+#define PKTSETCOOKIE(skb, x) (((struct sk_buff*)(skb))->csum = (uint)(x))
-+#define PKTLINK(skb) (((struct sk_buff*)(skb))->prev)
-+#define PKTSETLINK(skb, x) (((struct sk_buff*)(skb))->prev = (struct sk_buff*)(x))
-+#define PKTPRIO(skb) (((struct sk_buff*)(skb))->priority)
-+#define PKTSETPRIO(skb, x) (((struct sk_buff*)(skb))->priority = (x))
-+extern void *osl_pktget(osl_t *osh, uint len, bool send);
-+extern void osl_pktfree(void *skb);
-+
-+#else /* BINOSL */
-+
-+/* string library */
-+#ifndef LINUX_OSL
-+#undef printf
-+#define printf(fmt, args...) osl_printf((fmt), ## args)
-+#undef sprintf
-+#define sprintf(buf, fmt, args...) osl_sprintf((buf), (fmt), ## args)
-+#undef strcmp
-+#define strcmp(s1, s2) osl_strcmp((s1), (s2))
-+#undef strncmp
-+#define strncmp(s1, s2, n) osl_strncmp((s1), (s2), (n))
-+#undef strlen
-+#define strlen(s) osl_strlen((s))
-+#undef strcpy
-+#define strcpy(d, s) osl_strcpy((d), (s))
-+#undef strncpy
-+#define strncpy(d, s, n) osl_strncpy((d), (s), (n))
-+#endif
-+extern int osl_printf(const char *format, ...);
-+extern int osl_sprintf(char *buf, const char *format, ...);
-+extern int osl_strcmp(const char *s1, const char *s2);
-+extern int osl_strncmp(const char *s1, const char *s2, uint n);
-+extern int osl_strlen(const char *s);
-+extern char* osl_strcpy(char *d, const char *s);
-+extern char* osl_strncpy(char *d, const char *s, uint n);
-+
-+/* register access macros */
-+#if !defined(BCMJTAG)
-+#define R_REG(r) ( \
-+ sizeof(*(r)) == sizeof(uint8) ? osl_readb((volatile uint8*)(r)) : \
-+ sizeof(*(r)) == sizeof(uint16) ? osl_readw((volatile uint16*)(r)) : \
-+ osl_readl((volatile uint32*)(r)) \
-+)
-+#define W_REG(r, v) do { \
-+ switch (sizeof(*(r))) { \
-+ case sizeof(uint8): osl_writeb((uint8)(v), (volatile uint8*)(r)); break; \
-+ case sizeof(uint16): osl_writew((uint16)(v), (volatile uint16*)(r)); break; \
-+ case sizeof(uint32): osl_writel((uint32)(v), (volatile uint32*)(r)); break; \
-+ } \
-+} while (0)
-+#endif
-+
-+#define AND_REG(r, v) W_REG((r), R_REG(r) & (v))
-+#define OR_REG(r, v) W_REG((r), R_REG(r) | (v))
-+extern uint8 osl_readb(volatile uint8 *r);
-+extern uint16 osl_readw(volatile uint16 *r);
-+extern uint32 osl_readl(volatile uint32 *r);
-+extern void osl_writeb(uint8 v, volatile uint8 *r);
-+extern void osl_writew(uint16 v, volatile uint16 *r);
-+extern void osl_writel(uint32 v, volatile uint32 *r);
-+
-+/* bcopy, bcmp, and bzero */
-+extern void bcopy(const void *src, void *dst, int len);
-+extern int bcmp(const void *b1, const void *b2, int len);
-+extern void bzero(void *b, int len);
-+
-+/* uncached virtual address */
-+#define OSL_UNCACHED(va) osl_uncached((va))
-+extern void *osl_uncached(void *va);
-+
-+/* get processor cycle count */
-+#define OSL_GETCYCLES(x) ((x) = osl_getcycles())
-+extern uint osl_getcycles(void);
-+
-+/* dereference an address that may target abort */
-+#define BUSPROBE(val, addr) osl_busprobe(&(val), (addr))
-+extern int osl_busprobe(uint32 *val, uint32 addr);
-+
-+/* map/unmap physical to virtual */
-+#define REG_MAP(pa, size) osl_reg_map((pa), (size))
-+#define REG_UNMAP(va) osl_reg_unmap((va))
-+extern void *osl_reg_map(uint32 pa, uint size);
-+extern void osl_reg_unmap(void *va);
-+
-+/* shared (dma-able) memory access macros */
-+#define R_SM(r) *(r)
-+#define W_SM(r, v) (*(r) = (v))
-+#define BZERO_SM(r, len) bzero((r), (len))
-+
-+/* packet primitives */
-+#define PKTGET(osh, len, send) osl_pktget((osh), (len), (send))
-+#define PKTFREE(osh, skb, send) osl_pktfree((skb))
-+#define PKTDATA(osh, skb) osl_pktdata((osh), (skb))
-+#define PKTLEN(osh, skb) osl_pktlen((osh), (skb))
-+#define PKTHEADROOM(osh, skb) osl_pktheadroom((osh), (skb))
-+#define PKTTAILROOM(osh, skb) osl_pkttailroom((osh), (skb))
-+#define PKTNEXT(osh, skb) osl_pktnext((osh), (skb))
-+#define PKTSETNEXT(skb, x) osl_pktsetnext((skb), (x))
-+#define PKTSETLEN(osh, skb, len) osl_pktsetlen((osh), (skb), (len))
-+#define PKTPUSH(osh, skb, bytes) osl_pktpush((osh), (skb), (bytes))
-+#define PKTPULL(osh, skb, bytes) osl_pktpull((osh), (skb), (bytes))
-+#define PKTDUP(osh, skb) osl_pktdup((osh), (skb))
-+#define PKTCOOKIE(skb) osl_pktcookie((skb))
-+#define PKTSETCOOKIE(skb, x) osl_pktsetcookie((skb), (x))
-+#define PKTLINK(skb) osl_pktlink((skb))
-+#define PKTSETLINK(skb, x) osl_pktsetlink((skb), (x))
-+#define PKTPRIO(skb) osl_pktprio((skb))
-+#define PKTSETPRIO(skb, x) osl_pktsetprio((skb), (x))
-+extern void *osl_pktget(osl_t *osh, uint len, bool send);
-+extern void osl_pktfree(void *skb);
-+extern uchar *osl_pktdata(osl_t *osh, void *skb);
-+extern uint osl_pktlen(osl_t *osh, void *skb);
-+extern uint osl_pktheadroom(osl_t *osh, void *skb);
-+extern uint osl_pkttailroom(osl_t *osh, void *skb);
-+extern void *osl_pktnext(osl_t *osh, void *skb);
-+extern void osl_pktsetnext(void *skb, void *x);
-+extern void osl_pktsetlen(osl_t *osh, void *skb, uint len);
-+extern uchar *osl_pktpush(osl_t *osh, void *skb, int bytes);
-+extern uchar *osl_pktpull(osl_t *osh, void *skb, int bytes);
-+extern void *osl_pktdup(osl_t *osh, void *skb);
-+extern void *osl_pktcookie(void *skb);
-+extern void osl_pktsetcookie(void *skb, void *x);
-+extern void *osl_pktlink(void *skb);
-+extern void osl_pktsetlink(void *skb, void *x);
-+extern uint osl_pktprio(void *skb);
-+extern void osl_pktsetprio(void *skb, uint x);
-+
-+#endif /* BINOSL */
-+
-+#define OSL_ERROR(bcmerror) osl_error(bcmerror)
-+extern int osl_error(int bcmerror);
-+
-+/* the largest reasonable packet buffer driver uses for ethernet MTU in bytes */
-+#define PKTBUFSZ 2048
-+
-+#endif /* _linux_osl_h_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/linuxver.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/linuxver.h
---- linux-2.6.16/arch/mips/bcm947xx/include/linuxver.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/linuxver.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,389 @@
-+/*
-+ * Linux-specific abstractions to gain some independence from linux kernel versions.
-+ * Pave over some 2.2 versus 2.4 versus 2.6 kernel differences.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#ifndef _linuxver_h_
-+#define _linuxver_h_
-+
-+#include <linux/config.h>
-+#include <linux/version.h>
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0))
-+/* __NO_VERSION__ must be defined for all linkables except one in 2.2 */
-+#ifdef __UNDEF_NO_VERSION__
-+#undef __NO_VERSION__
-+#else
-+#define __NO_VERSION__
-+#endif
-+#endif
-+
-+#if defined(MODULE) && defined(MODVERSIONS)
-+#include <linux/modversions.h>
-+#endif
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
-+#include <linux/moduleparam.h>
-+#endif
-+
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-+#define module_param(_name_, _type_, _perm_) MODULE_PARM(_name_, "i")
-+#define module_param_string(_name_, _string_, _size_, _perm_) MODULE_PARM(_string_, "c" __MODULE_STRING(_size_))
-+#endif
-+
-+/* linux/malloc.h is deprecated, use linux/slab.h instead. */
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,9))
-+#include <linux/malloc.h>
-+#else
-+#include <linux/slab.h>
-+#endif
-+
-+#include <linux/types.h>
-+#include <linux/init.h>
-+#include <linux/mm.h>
-+#include <linux/string.h>
-+#include <linux/pci.h>
-+#include <linux/interrupt.h>
-+#include <linux/netdevice.h>
-+#include <asm/io.h>
-+
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,41))
-+#include <linux/workqueue.h>
-+#else
-+#include <linux/tqueue.h>
-+#ifndef work_struct
-+#define work_struct tq_struct
-+#endif
-+#ifndef INIT_WORK
-+#define INIT_WORK(_work, _func, _data) INIT_TQUEUE((_work), (_func), (_data))
-+#endif
-+#ifndef schedule_work
-+#define schedule_work(_work) schedule_task((_work))
-+#endif
-+#ifndef flush_scheduled_work
-+#define flush_scheduled_work() flush_scheduled_tasks()
-+#endif
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
-+/* Some distributions have their own 2.6.x compatibility layers */
-+#ifndef IRQ_NONE
-+typedef void irqreturn_t;
-+#define IRQ_NONE
-+#define IRQ_HANDLED
-+#define IRQ_RETVAL(x)
-+#endif
-+#else
-+typedef irqreturn_t (*FN_ISR) (int irq, void *dev_id, struct pt_regs *ptregs);
-+#endif
-+
-+#ifndef __exit
-+#define __exit
-+#endif
-+#ifndef __devexit
-+#define __devexit
-+#endif
-+#ifndef __devinit
-+#define __devinit __init
-+#endif
-+#ifndef __devinitdata
-+#define __devinitdata
-+#endif
-+#ifndef __devexit_p
-+#define __devexit_p(x) x
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
-+
-+#define pci_get_drvdata(dev) (dev)->sysdata
-+#define pci_set_drvdata(dev, value) (dev)->sysdata=(value)
-+
-+/*
-+ * New-style (2.4.x) PCI/hot-pluggable PCI/CardBus registration
-+ */
-+
-+struct pci_device_id {
-+ unsigned int vendor, device; /* Vendor and device ID or PCI_ANY_ID */
-+ unsigned int subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */
-+ unsigned int class, class_mask; /* (class,subclass,prog-if) triplet */
-+ unsigned long driver_data; /* Data private to the driver */
-+};
-+
-+struct pci_driver {
-+ struct list_head node;
-+ char *name;
-+ const struct pci_device_id *id_table; /* NULL if wants all devices */
-+ int (*probe)(struct pci_dev *dev, const struct pci_device_id *id); /* New device inserted */
-+ void (*remove)(struct pci_dev *dev); /* Device removed (NULL if not a hot-plug capable driver) */
-+ void (*suspend)(struct pci_dev *dev); /* Device suspended */
-+ void (*resume)(struct pci_dev *dev); /* Device woken up */
-+};
-+
-+#define MODULE_DEVICE_TABLE(type, name)
-+#define PCI_ANY_ID (~0)
-+
-+/* compatpci.c */
-+#define pci_module_init pci_register_driver
-+extern int pci_register_driver(struct pci_driver *drv);
-+extern void pci_unregister_driver(struct pci_driver *drv);
-+
-+#endif /* PCI registration */
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,2,18))
-+#ifdef MODULE
-+#define module_init(x) int init_module(void) { return x(); }
-+#define module_exit(x) void cleanup_module(void) { x(); }
-+#else
-+#define module_init(x) __initcall(x);
-+#define module_exit(x) __exitcall(x);
-+#endif
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,48))
-+#define list_for_each(pos, head) \
-+ for (pos = (head)->next; pos != (head); pos = pos->next)
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,13))
-+#define pci_resource_start(dev, bar) ((dev)->base_address[(bar)])
-+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,44))
-+#define pci_resource_start(dev, bar) ((dev)->resource[(bar)].start)
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,23))
-+#define pci_enable_device(dev) do { } while (0)
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,14))
-+#define net_device device
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,42))
-+
-+/*
-+ * DMA mapping
-+ *
-+ * See linux/Documentation/DMA-mapping.txt
-+ */
-+
-+#ifndef PCI_DMA_TODEVICE
-+#define PCI_DMA_TODEVICE 1
-+#define PCI_DMA_FROMDEVICE 2
-+#endif
-+
-+typedef u32 dma_addr_t;
-+
-+/* Pure 2^n version of get_order */
-+static inline int get_order(unsigned long size)
-+{
-+ int order;
-+
-+ size = (size-1) >> (PAGE_SHIFT-1);
-+ order = -1;
-+ do {
-+ size >>= 1;
-+ order++;
-+ } while (size);
-+ return order;
-+}
-+
-+static inline void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
-+ dma_addr_t *dma_handle)
-+{
-+ void *ret;
-+ int gfp = GFP_ATOMIC | GFP_DMA;
-+
-+ ret = (void *)__get_free_pages(gfp, get_order(size));
-+
-+ if (ret != NULL) {
-+ memset(ret, 0, size);
-+ *dma_handle = virt_to_bus(ret);
-+ }
-+ return ret;
-+}
-+static inline void pci_free_consistent(struct pci_dev *hwdev, size_t size,
-+ void *vaddr, dma_addr_t dma_handle)
-+{
-+ free_pages((unsigned long)vaddr, get_order(size));
-+}
-+#ifdef ILSIM
-+extern uint pci_map_single(void *dev, void *va, uint size, int direction);
-+extern void pci_unmap_single(void *dev, uint pa, uint size, int direction);
-+#else
-+#define pci_map_single(cookie, address, size, dir) virt_to_bus(address)
-+#define pci_unmap_single(cookie, address, size, dir)
-+#endif
-+
-+#endif /* DMA mapping */
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,43))
-+
-+#define dev_kfree_skb_any(a) dev_kfree_skb(a)
-+#define netif_down(dev) do { (dev)->start = 0; } while(0)
-+
-+/* pcmcia-cs provides its own netdevice compatibility layer */
-+#ifndef _COMPAT_NETDEVICE_H
-+
-+/*
-+ * SoftNet
-+ *
-+ * For pre-softnet kernels we need to tell the upper layer not to
-+ * re-enter start_xmit() while we are in there. However softnet
-+ * guarantees not to enter while we are in there so there is no need
-+ * to do the netif_stop_queue() dance unless the transmit queue really
-+ * gets stuck. This should also improve performance according to tests
-+ * done by Aman Singla.
-+ */
-+
-+#define dev_kfree_skb_irq(a) dev_kfree_skb(a)
-+#define netif_wake_queue(dev) do { clear_bit(0, &(dev)->tbusy); mark_bh(NET_BH); } while(0)
-+#define netif_stop_queue(dev) set_bit(0, &(dev)->tbusy)
-+
-+static inline void netif_start_queue(struct net_device *dev)
-+{
-+ dev->tbusy = 0;
-+ dev->interrupt = 0;
-+ dev->start = 1;
-+}
-+
-+#define netif_queue_stopped(dev) (dev)->tbusy
-+#define netif_running(dev) (dev)->start
-+
-+#endif /* _COMPAT_NETDEVICE_H */
-+
-+#define netif_device_attach(dev) netif_start_queue(dev)
-+#define netif_device_detach(dev) netif_stop_queue(dev)
-+
-+/* 2.4.x renamed bottom halves to tasklets */
-+#define tasklet_struct tq_struct
-+static inline void tasklet_schedule(struct tasklet_struct *tasklet)
-+{
-+ queue_task(tasklet, &tq_immediate);
-+ mark_bh(IMMEDIATE_BH);
-+}
-+
-+static inline void tasklet_init(struct tasklet_struct *tasklet,
-+ void (*func)(unsigned long),
-+ unsigned long data)
-+{
-+ tasklet->next = NULL;
-+ tasklet->sync = 0;
-+ tasklet->routine = (void (*)(void *))func;
-+ tasklet->data = (void *)data;
-+}
-+#define tasklet_kill(tasklet) {do{} while(0);}
-+
-+/* 2.4.x introduced del_timer_sync() */
-+#define del_timer_sync(timer) del_timer(timer)
-+
-+#else
-+
-+#define netif_down(dev)
-+
-+#endif /* SoftNet */
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,3))
-+
-+/*
-+ * Emit code to initialise a tq_struct's routine and data pointers
-+ */
-+#define PREPARE_TQUEUE(_tq, _routine, _data) \
-+ do { \
-+ (_tq)->routine = _routine; \
-+ (_tq)->data = _data; \
-+ } while (0)
-+
-+/*
-+ * Emit code to initialise all of a tq_struct
-+ */
-+#define INIT_TQUEUE(_tq, _routine, _data) \
-+ do { \
-+ INIT_LIST_HEAD(&(_tq)->list); \
-+ (_tq)->sync = 0; \
-+ PREPARE_TQUEUE((_tq), (_routine), (_data)); \
-+ } while (0)
-+
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,6))
-+
-+/* Power management related routines */
-+
-+static inline int
-+pci_save_state(struct pci_dev *dev, u32 *buffer)
-+{
-+ int i;
-+ if (buffer) {
-+ for (i = 0; i < 16; i++)
-+ pci_read_config_dword(dev, i * 4,&buffer[i]);
-+ }
-+ return 0;
-+}
-+
-+static inline int
-+pci_restore_state(struct pci_dev *dev, u32 *buffer)
-+{
-+ int i;
-+
-+ if (buffer) {
-+ for (i = 0; i < 16; i++)
-+ pci_write_config_dword(dev,i * 4, buffer[i]);
-+ }
-+ /*
-+ * otherwise, write the context information we know from bootup.
-+ * This works around a problem where warm-booting from Windows
-+ * combined with a D3(hot)->D0 transition causes PCI config
-+ * header data to be forgotten.
-+ */
-+ else {
-+ for (i = 0; i < 6; i ++)
-+ pci_write_config_dword(dev,
-+ PCI_BASE_ADDRESS_0 + (i * 4),
-+ pci_resource_start(dev, i));
-+ pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
-+ }
-+ return 0;
-+}
-+
-+#endif /* PCI power management */
-+
-+/* Old cp0 access macros deprecated in 2.4.19 */
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,19))
-+#define read_c0_count() read_32bit_cp0_register(CP0_COUNT)
-+#endif
-+
-+/* Module refcount handled internally in 2.6.x */
-+#ifndef SET_MODULE_OWNER
-+#define SET_MODULE_OWNER(dev) do {} while (0)
-+#define OLD_MOD_INC_USE_COUNT MOD_INC_USE_COUNT
-+#define OLD_MOD_DEC_USE_COUNT MOD_DEC_USE_COUNT
-+#else
-+#define OLD_MOD_INC_USE_COUNT do {} while (0)
-+#define OLD_MOD_DEC_USE_COUNT do {} while (0)
-+#endif
-+
-+#ifndef SET_NETDEV_DEV
-+#define SET_NETDEV_DEV(net, pdev) do {} while (0)
-+#endif
-+
-+#ifndef HAVE_FREE_NETDEV
-+#define free_netdev(dev) kfree(dev)
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
-+/* struct packet_type redefined in 2.6.x */
-+#define af_packet_priv data
-+#endif
-+
-+#endif /* _linuxver_h_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/mipsinc.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/mipsinc.h
---- linux-2.6.16/arch/mips/bcm947xx/include/mipsinc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/mipsinc.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,552 @@
-+/*
-+ * HND Run Time Environment for standalone MIPS programs.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#ifndef _MISPINC_H
-+#define _MISPINC_H
-+
-+
-+/* MIPS defines */
-+
-+#ifdef _LANGUAGE_ASSEMBLY
-+
-+/*
-+ * Symbolic register names for 32 bit ABI
-+ */
-+#define zero $0 /* wired zero */
-+#define AT $1 /* assembler temp - uppercase because of ".set at" */
-+#define v0 $2 /* return value */
-+#define v1 $3
-+#define a0 $4 /* argument registers */
-+#define a1 $5
-+#define a2 $6
-+#define a3 $7
-+#define t0 $8 /* caller saved */
-+#define t1 $9
-+#define t2 $10
-+#define t3 $11
-+#define t4 $12
-+#define t5 $13
-+#define t6 $14
-+#define t7 $15
-+#define s0 $16 /* callee saved */
-+#define s1 $17
-+#define s2 $18
-+#define s3 $19
-+#define s4 $20
-+#define s5 $21
-+#define s6 $22
-+#define s7 $23
-+#define t8 $24 /* caller saved */
-+#define t9 $25
-+#define jp $25 /* PIC jump register */
-+#define k0 $26 /* kernel scratch */
-+#define k1 $27
-+#define gp $28 /* global pointer */
-+#define sp $29 /* stack pointer */
-+#define fp $30 /* frame pointer */
-+#define s8 $30 /* same like fp! */
-+#define ra $31 /* return address */
-+
-+
-+/*
-+ * CP0 Registers
-+ */
-+
-+#define C0_INX $0
-+#define C0_RAND $1
-+#define C0_TLBLO0 $2
-+#define C0_TLBLO C0_TLBLO0
-+#define C0_TLBLO1 $3
-+#define C0_CTEXT $4
-+#define C0_PGMASK $5
-+#define C0_WIRED $6
-+#define C0_BADVADDR $8
-+#define C0_COUNT $9
-+#define C0_TLBHI $10
-+#define C0_COMPARE $11
-+#define C0_SR $12
-+#define C0_STATUS C0_SR
-+#define C0_CAUSE $13
-+#define C0_EPC $14
-+#define C0_PRID $15
-+#define C0_CONFIG $16
-+#define C0_LLADDR $17
-+#define C0_WATCHLO $18
-+#define C0_WATCHHI $19
-+#define C0_XCTEXT $20
-+#define C0_DIAGNOSTIC $22
-+#define C0_BROADCOM C0_DIAGNOSTIC
-+#define C0_PERFORMANCE $25
-+#define C0_ECC $26
-+#define C0_CACHEERR $27
-+#define C0_TAGLO $28
-+#define C0_TAGHI $29
-+#define C0_ERREPC $30
-+#define C0_DESAVE $31
-+
-+/*
-+ * LEAF - declare leaf routine
-+ */
-+#define LEAF(symbol) \
-+ .globl symbol; \
-+ .align 2; \
-+ .type symbol,@function; \
-+ .ent symbol,0; \
-+symbol: .frame sp,0,ra
-+
-+/*
-+ * END - mark end of function
-+ */
-+#define END(function) \
-+ .end function; \
-+ .size function,.-function
-+
-+#define _ULCAST_
-+
-+#else
-+
-+/*
-+ * The following macros are especially useful for __asm__
-+ * inline assembler.
-+ */
-+#ifndef __STR
-+#define __STR(x) #x
-+#endif
-+#ifndef STR
-+#define STR(x) __STR(x)
-+#endif
-+
-+#define _ULCAST_ (unsigned long)
-+
-+
-+/*
-+ * CP0 Registers
-+ */
-+
-+#define C0_INX 0 /* CP0: TLB Index */
-+#define C0_RAND 1 /* CP0: TLB Random */
-+#define C0_TLBLO0 2 /* CP0: TLB EntryLo0 */
-+#define C0_TLBLO C0_TLBLO0 /* CP0: TLB EntryLo0 */
-+#define C0_TLBLO1 3 /* CP0: TLB EntryLo1 */
-+#define C0_CTEXT 4 /* CP0: Context */
-+#define C0_PGMASK 5 /* CP0: TLB PageMask */
-+#define C0_WIRED 6 /* CP0: TLB Wired */
-+#define C0_BADVADDR 8 /* CP0: Bad Virtual Address */
-+#define C0_COUNT 9 /* CP0: Count */
-+#define C0_TLBHI 10 /* CP0: TLB EntryHi */
-+#define C0_COMPARE 11 /* CP0: Compare */
-+#define C0_SR 12 /* CP0: Processor Status */
-+#define C0_STATUS C0_SR /* CP0: Processor Status */
-+#define C0_CAUSE 13 /* CP0: Exception Cause */
-+#define C0_EPC 14 /* CP0: Exception PC */
-+#define C0_PRID 15 /* CP0: Processor Revision Indentifier */
-+#define C0_CONFIG 16 /* CP0: Config */
-+#define C0_LLADDR 17 /* CP0: LLAddr */
-+#define C0_WATCHLO 18 /* CP0: WatchpointLo */
-+#define C0_WATCHHI 19 /* CP0: WatchpointHi */
-+#define C0_XCTEXT 20 /* CP0: XContext */
-+#define C0_DIAGNOSTIC 22 /* CP0: Diagnostic */
-+#define C0_BROADCOM C0_DIAGNOSTIC /* CP0: Broadcom Register */
-+#define C0_PERFORMANCE 25 /* CP0: Performance Counter/Control Registers */
-+#define C0_ECC 26 /* CP0: ECC */
-+#define C0_CACHEERR 27 /* CP0: CacheErr */
-+#define C0_TAGLO 28 /* CP0: TagLo */
-+#define C0_TAGHI 29 /* CP0: TagHi */
-+#define C0_ERREPC 30 /* CP0: ErrorEPC */
-+#define C0_DESAVE 31 /* CP0: DebugSave */
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+/*
-+ * Memory segments (32bit kernel mode addresses)
-+ */
-+#undef KUSEG
-+#undef KSEG0
-+#undef KSEG1
-+#undef KSEG2
-+#undef KSEG3
-+#define KUSEG 0x00000000
-+#define KSEG0 0x80000000
-+#define KSEG1 0xa0000000
-+#define KSEG2 0xc0000000
-+#define KSEG3 0xe0000000
-+#define PHYSADDR_MASK 0x1fffffff
-+
-+/*
-+ * Map an address to a certain kernel segment
-+ */
-+#undef PHYSADDR
-+#undef KSEG0ADDR
-+#undef KSEG1ADDR
-+#undef KSEG2ADDR
-+#undef KSEG3ADDR
-+
-+#define PHYSADDR(a) (_ULCAST_(a) & PHYSADDR_MASK)
-+#define KSEG0ADDR(a) ((_ULCAST_(a) & PHYSADDR_MASK) | KSEG0)
-+#define KSEG1ADDR(a) ((_ULCAST_(a) & PHYSADDR_MASK) | KSEG1)
-+#define KSEG2ADDR(a) ((_ULCAST_(a) & PHYSADDR_MASK) | KSEG2)
-+#define KSEG3ADDR(a) ((_ULCAST_(a) & PHYSADDR_MASK) | KSEG3)
-+
-+
-+#ifndef Index_Invalidate_I
-+/*
-+ * Cache Operations
-+ */
-+#define Index_Invalidate_I 0x00
-+#define Index_Writeback_Inv_D 0x01
-+#define Index_Invalidate_SI 0x02
-+#define Index_Writeback_Inv_SD 0x03
-+#define Index_Load_Tag_I 0x04
-+#define Index_Load_Tag_D 0x05
-+#define Index_Load_Tag_SI 0x06
-+#define Index_Load_Tag_SD 0x07
-+#define Index_Store_Tag_I 0x08
-+#define Index_Store_Tag_D 0x09
-+#define Index_Store_Tag_SI 0x0A
-+#define Index_Store_Tag_SD 0x0B
-+#define Create_Dirty_Excl_D 0x0d
-+#define Create_Dirty_Excl_SD 0x0f
-+#define Hit_Invalidate_I 0x10
-+#define Hit_Invalidate_D 0x11
-+#define Hit_Invalidate_SI 0x12
-+#define Hit_Invalidate_SD 0x13
-+#define Fill_I 0x14
-+#define Hit_Writeback_Inv_D 0x15
-+ /* 0x16 is unused */
-+#define Hit_Writeback_Inv_SD 0x17
-+#define R5K_Page_Invalidate_S 0x17
-+#define Hit_Writeback_I 0x18
-+#define Hit_Writeback_D 0x19
-+ /* 0x1a is unused */
-+#define Hit_Writeback_SD 0x1b
-+ /* 0x1c is unused */
-+ /* 0x1e is unused */
-+#define Hit_Set_Virtual_SI 0x1e
-+#define Hit_Set_Virtual_SD 0x1f
-+#endif
-+
-+
-+/*
-+ * R4x00 interrupt enable / cause bits
-+ */
-+#define IE_SW0 (_ULCAST_(1) << 8)
-+#define IE_SW1 (_ULCAST_(1) << 9)
-+#define IE_IRQ0 (_ULCAST_(1) << 10)
-+#define IE_IRQ1 (_ULCAST_(1) << 11)
-+#define IE_IRQ2 (_ULCAST_(1) << 12)
-+#define IE_IRQ3 (_ULCAST_(1) << 13)
-+#define IE_IRQ4 (_ULCAST_(1) << 14)
-+#define IE_IRQ5 (_ULCAST_(1) << 15)
-+
-+#ifndef ST0_UM
-+/*
-+ * Bitfields in the mips32 cp0 status register
-+ */
-+#define ST0_IE 0x00000001
-+#define ST0_EXL 0x00000002
-+#define ST0_ERL 0x00000004
-+#define ST0_UM 0x00000010
-+#define ST0_SWINT0 0x00000100
-+#define ST0_SWINT1 0x00000200
-+#define ST0_HWINT0 0x00000400
-+#define ST0_HWINT1 0x00000800
-+#define ST0_HWINT2 0x00001000
-+#define ST0_HWINT3 0x00002000
-+#define ST0_HWINT4 0x00004000
-+#define ST0_HWINT5 0x00008000
-+#define ST0_IM 0x0000ff00
-+#define ST0_NMI 0x00080000
-+#define ST0_SR 0x00100000
-+#define ST0_TS 0x00200000
-+#define ST0_BEV 0x00400000
-+#define ST0_RE 0x02000000
-+#define ST0_RP 0x08000000
-+#define ST0_CU 0xf0000000
-+#define ST0_CU0 0x10000000
-+#define ST0_CU1 0x20000000
-+#define ST0_CU2 0x40000000
-+#define ST0_CU3 0x80000000
-+#endif
-+
-+
-+/*
-+ * Bitfields in the mips32 cp0 cause register
-+ */
-+#define C_EXC 0x0000007c
-+#define C_EXC_SHIFT 2
-+#define C_INT 0x0000ff00
-+#define C_INT_SHIFT 8
-+#define C_SW0 (_ULCAST_(1) << 8)
-+#define C_SW1 (_ULCAST_(1) << 9)
-+#define C_IRQ0 (_ULCAST_(1) << 10)
-+#define C_IRQ1 (_ULCAST_(1) << 11)
-+#define C_IRQ2 (_ULCAST_(1) << 12)
-+#define C_IRQ3 (_ULCAST_(1) << 13)
-+#define C_IRQ4 (_ULCAST_(1) << 14)
-+#define C_IRQ5 (_ULCAST_(1) << 15)
-+#define C_WP 0x00400000
-+#define C_IV 0x00800000
-+#define C_CE 0x30000000
-+#define C_CE_SHIFT 28
-+#define C_BD 0x80000000
-+
-+/* Values in C_EXC */
-+#define EXC_INT 0
-+#define EXC_TLBM 1
-+#define EXC_TLBL 2
-+#define EXC_TLBS 3
-+#define EXC_AEL 4
-+#define EXC_AES 5
-+#define EXC_IBE 6
-+#define EXC_DBE 7
-+#define EXC_SYS 8
-+#define EXC_BPT 9
-+#define EXC_RI 10
-+#define EXC_CU 11
-+#define EXC_OV 12
-+#define EXC_TR 13
-+#define EXC_WATCH 23
-+#define EXC_MCHK 24
-+
-+
-+/*
-+ * Bits in the cp0 config register.
-+ */
-+#define CONF_CM_CACHABLE_NO_WA 0
-+#define CONF_CM_CACHABLE_WA 1
-+#define CONF_CM_UNCACHED 2
-+#define CONF_CM_CACHABLE_NONCOHERENT 3
-+#define CONF_CM_CACHABLE_CE 4
-+#define CONF_CM_CACHABLE_COW 5
-+#define CONF_CM_CACHABLE_CUW 6
-+#define CONF_CM_CACHABLE_ACCELERATED 7
-+#define CONF_CM_CMASK 7
-+#define CONF_CU (_ULCAST_(1) << 3)
-+#define CONF_DB (_ULCAST_(1) << 4)
-+#define CONF_IB (_ULCAST_(1) << 5)
-+#define CONF_SE (_ULCAST_(1) << 12)
-+#define CONF_SC (_ULCAST_(1) << 17)
-+#define CONF_AC (_ULCAST_(1) << 23)
-+#define CONF_HALT (_ULCAST_(1) << 25)
-+
-+
-+/*
-+ * Bits in the cp0 config register select 1.
-+ */
-+#define CONF1_FP 0x00000001 /* FPU present */
-+#define CONF1_EP 0x00000002 /* EJTAG present */
-+#define CONF1_CA 0x00000004 /* mips16 implemented */
-+#define CONF1_WR 0x00000008 /* Watch registers present */
-+#define CONF1_PC 0x00000010 /* Performance counters present */
-+#define CONF1_DA_SHIFT 7 /* D$ associativity */
-+#define CONF1_DA_MASK 0x00000380
-+#define CONF1_DA_BASE 1
-+#define CONF1_DL_SHIFT 10 /* D$ line size */
-+#define CONF1_DL_MASK 0x00001c00
-+#define CONF1_DL_BASE 2
-+#define CONF1_DS_SHIFT 13 /* D$ sets/way */
-+#define CONF1_DS_MASK 0x0000e000
-+#define CONF1_DS_BASE 64
-+#define CONF1_IA_SHIFT 16 /* I$ associativity */
-+#define CONF1_IA_MASK 0x00070000
-+#define CONF1_IA_BASE 1
-+#define CONF1_IL_SHIFT 19 /* I$ line size */
-+#define CONF1_IL_MASK 0x00380000
-+#define CONF1_IL_BASE 2
-+#define CONF1_IS_SHIFT 22 /* Instruction cache sets/way */
-+#define CONF1_IS_MASK 0x01c00000
-+#define CONF1_IS_BASE 64
-+#define CONF1_MS_MASK 0x7e000000 /* Number of tlb entries */
-+#define CONF1_MS_SHIFT 25
-+
-+/* PRID register */
-+#define PRID_COPT_MASK 0xff000000
-+#define PRID_COMP_MASK 0x00ff0000
-+#define PRID_IMP_MASK 0x0000ff00
-+#define PRID_REV_MASK 0x000000ff
-+
-+#define PRID_COMP_LEGACY 0x000000
-+#define PRID_COMP_MIPS 0x010000
-+#define PRID_COMP_BROADCOM 0x020000
-+#define PRID_COMP_ALCHEMY 0x030000
-+#define PRID_COMP_SIBYTE 0x040000
-+#define PRID_IMP_BCM4710 0x4000
-+#define PRID_IMP_BCM3302 0x9000
-+#define PRID_IMP_BCM3303 0x9100
-+
-+#define PRID_IMP_UNKNOWN 0xff00
-+
-+#define BCM330X(id) \
-+ (((id & (PRID_COMP_MASK | PRID_IMP_MASK)) == (PRID_COMP_BROADCOM | PRID_IMP_BCM3302)) \
-+ || ((id & (PRID_COMP_MASK | PRID_IMP_MASK)) == (PRID_COMP_BROADCOM | PRID_IMP_BCM3303)))
-+
-+/* Bits in C0_BROADCOM */
-+#define BRCM_PFC_AVAIL 0x20000000 /* PFC is available */
-+#define BRCM_DC_ENABLE 0x40000000 /* Enable Data $ */
-+#define BRCM_IC_ENABLE 0x80000000 /* Enable Instruction $ */
-+#define BRCM_PFC_ENABLE 0x00400000 /* Obsolete? Enable PFC (at least on 4310) */
-+
-+/* PreFetch Cache aka Read Ahead Cache */
-+
-+#define PFC_CR0 0xff400000 /* control reg 0 */
-+#define PFC_CR1 0xff400004 /* control reg 1 */
-+
-+/* PFC operations */
-+#define PFC_I 0x00000001 /* Enable PFC use for instructions */
-+#define PFC_D 0x00000002 /* Enable PFC use for data */
-+#define PFC_PFI 0x00000004 /* Enable seq. prefetch for instructions */
-+#define PFC_PFD 0x00000008 /* Enable seq. prefetch for data */
-+#define PFC_CINV 0x00000010 /* Enable selective (i/d) cacheop flushing */
-+#define PFC_NCH 0x00000020 /* Disable flushing based on cacheops */
-+#define PFC_DPF 0x00000040 /* Enable directional prefetching */
-+#define PFC_FLUSH 0x00000100 /* Flush the PFC */
-+#define PFC_BRR 0x40000000 /* Bus error indication */
-+#define PFC_PWR 0x80000000 /* Disable power saving (clock gating) */
-+
-+/* Handy defaults */
-+#define PFC_DISABLED 0
-+#define PFC_AUTO 0xffffffff /* auto select the default mode */
-+#define PFC_INST (PFC_I | PFC_PFI | PFC_CINV)
-+#define PFC_INST_NOPF (PFC_I | PFC_CINV)
-+#define PFC_DATA (PFC_D | PFC_PFD | PFC_CINV)
-+#define PFC_DATA_NOPF (PFC_D | PFC_CINV)
-+#define PFC_I_AND_D (PFC_INST | PFC_DATA)
-+#define PFC_I_AND_D_NOPF (PFC_INST_NOPF | PFC_DATA_NOPF)
-+
-+
-+/*
-+ * These are the UART port assignments, expressed as offsets from the base
-+ * register. These assignments should hold for any serial port based on
-+ * a 8250, 16450, or 16550(A).
-+ */
-+
-+#define UART_RX 0 /* In: Receive buffer (DLAB=0) */
-+#define UART_TX 0 /* Out: Transmit buffer (DLAB=0) */
-+#define UART_DLL 0 /* Out: Divisor Latch Low (DLAB=1) */
-+#define UART_DLM 1 /* Out: Divisor Latch High (DLAB=1) */
-+#define UART_LCR 3 /* Out: Line Control Register */
-+#define UART_MCR 4 /* Out: Modem Control Register */
-+#define UART_LSR 5 /* In: Line Status Register */
-+#define UART_MSR 6 /* In: Modem Status Register */
-+#define UART_SCR 7 /* I/O: Scratch Register */
-+#define UART_LCR_DLAB 0x80 /* Divisor latch access bit */
-+#define UART_LCR_WLEN8 0x03 /* Wordlength: 8 bits */
-+#define UART_MCR_LOOP 0x10 /* Enable loopback test mode */
-+#define UART_LSR_THRE 0x20 /* Transmit-hold-register empty */
-+#define UART_LSR_RXRDY 0x01 /* Receiver ready */
-+
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+/*
-+ * Macros to access the system control coprocessor
-+ */
-+
-+#define MFC0(source, sel) \
-+({ \
-+ int __res; \
-+ __asm__ __volatile__( \
-+ ".set\tnoreorder\n\t" \
-+ ".set\tnoat\n\t" \
-+ ".word\t"STR(0x40010000 | ((source)<<11) | (sel))"\n\t" \
-+ "move\t%0,$1\n\t" \
-+ ".set\tat\n\t" \
-+ ".set\treorder" \
-+ :"=r" (__res) \
-+ : \
-+ :"$1"); \
-+ __res; \
-+})
-+
-+#define MTC0(source, sel, value) \
-+do { \
-+ __asm__ __volatile__( \
-+ ".set\tnoreorder\n\t" \
-+ ".set\tnoat\n\t" \
-+ "move\t$1,%z0\n\t" \
-+ ".word\t"STR(0x40810000 | ((source)<<11) | (sel))"\n\t" \
-+ ".set\tat\n\t" \
-+ ".set\treorder" \
-+ : \
-+ :"jr" (value) \
-+ :"$1"); \
-+} while (0)
-+
-+#define get_c0_count() \
-+({ \
-+ int __res; \
-+ __asm__ __volatile__( \
-+ ".set\tnoreorder\n\t" \
-+ ".set\tnoat\n\t" \
-+ "mfc0\t%0,$9\n\t" \
-+ ".set\tat\n\t" \
-+ ".set\treorder" \
-+ :"=r" (__res)); \
-+ __res; \
-+})
-+
-+static INLINE void icache_probe(uint32 config1, uint *size, uint *lsize)
-+{
-+ uint lsz, sets, ways;
-+
-+ /* Instruction Cache Size = Associativity * Line Size * Sets Per Way */
-+ if ((lsz = ((config1 & CONF1_IL_MASK) >> CONF1_IL_SHIFT)))
-+ lsz = CONF1_IL_BASE << lsz;
-+ sets = CONF1_IS_BASE << ((config1 & CONF1_IS_MASK) >> CONF1_IS_SHIFT);
-+ ways = CONF1_IA_BASE + ((config1 & CONF1_IA_MASK) >> CONF1_IA_SHIFT);
-+ *size = lsz * sets * ways;
-+ *lsize = lsz;
-+}
-+
-+static INLINE void dcache_probe(uint32 config1, uint *size, uint *lsize)
-+{
-+ uint lsz, sets, ways;
-+
-+ /* Data Cache Size = Associativity * Line Size * Sets Per Way */
-+ if ((lsz = ((config1 & CONF1_DL_MASK) >> CONF1_DL_SHIFT)))
-+ lsz = CONF1_DL_BASE << lsz;
-+ sets = CONF1_DS_BASE << ((config1 & CONF1_DS_MASK) >> CONF1_DS_SHIFT);
-+ ways = CONF1_DA_BASE + ((config1 & CONF1_DA_MASK) >> CONF1_DA_SHIFT);
-+ *size = lsz * sets * ways;
-+ *lsize = lsz;
-+}
-+
-+#define cache_op(base, op) \
-+ __asm__ __volatile__(" \
-+ .set noreorder; \
-+ .set mips3; \
-+ cache %1, (%0); \
-+ .set mips0; \
-+ .set reorder" \
-+ : \
-+ : "r" (base), \
-+ "i" (op));
-+
-+#define cache_unroll4(base, delta, op) \
-+ __asm__ __volatile__(" \
-+ .set noreorder; \
-+ .set mips3; \
-+ cache %1,0(%0); \
-+ cache %1,delta(%0); \
-+ cache %1,(2 * delta)(%0); \
-+ cache %1,(3 * delta)(%0); \
-+ .set mips0; \
-+ .set reorder" \
-+ : \
-+ : "r" (base), \
-+ "i" (op));
-+
-+#endif /* !_LANGUAGE_ASSEMBLY */
-+
-+#endif /* _MISPINC_H */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/osl.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/osl.h
---- linux-2.6.16/arch/mips/bcm947xx/include/osl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/osl.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,42 @@
-+/*
-+ * OS Abstraction Layer
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#ifndef _osl_h_
-+#define _osl_h_
-+
-+/* osl handle type forward declaration */
-+typedef struct os_handle osl_t;
-+
-+#if defined(linux)
-+#include <linux_osl.h>
-+#elif defined(NDIS)
-+#include <ndis_osl.h>
-+#elif defined(_CFE_)
-+#include <cfe_osl.h>
-+#elif defined(_HNDRTE_)
-+#include <hndrte_osl.h>
-+#elif defined(_MINOSL_)
-+#include <min_osl.h>
-+#elif PMON
-+#include <pmon_osl.h>
-+#elif defined(MACOSX)
-+#include <macosx_osl.h>
-+#else
-+#error "Unsupported OSL requested"
-+#endif
-+
-+/* handy */
-+#define SET_REG(r, mask, val) W_REG((r), ((R_REG(r) & ~(mask)) | (val)))
-+#define MAXPRIO 7 /* 0-7 */
-+
-+#endif /* _osl_h_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/pcicfg.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/pcicfg.h
---- linux-2.6.16/arch/mips/bcm947xx/include/pcicfg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/pcicfg.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,398 @@
-+/*
-+ * pcicfg.h: PCI configuration constants and structures.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#ifndef _h_pci_
-+#define _h_pci_
-+
-+/* The following inside ifndef's so we don't collide with NTDDK.H */
-+#ifndef PCI_MAX_BUS
-+#define PCI_MAX_BUS 0x100
-+#endif
-+#ifndef PCI_MAX_DEVICES
-+#define PCI_MAX_DEVICES 0x20
-+#endif
-+#ifndef PCI_MAX_FUNCTION
-+#define PCI_MAX_FUNCTION 0x8
-+#endif
-+
-+#ifndef PCI_INVALID_VENDORID
-+#define PCI_INVALID_VENDORID 0xffff
-+#endif
-+#ifndef PCI_INVALID_DEVICEID
-+#define PCI_INVALID_DEVICEID 0xffff
-+#endif
-+
-+
-+/* Convert between bus-slot-function-register and config addresses */
-+
-+#define PCICFG_BUS_SHIFT 16 /* Bus shift */
-+#define PCICFG_SLOT_SHIFT 11 /* Slot shift */
-+#define PCICFG_FUN_SHIFT 8 /* Function shift */
-+#define PCICFG_OFF_SHIFT 0 /* Register shift */
-+
-+#define PCICFG_BUS_MASK 0xff /* Bus mask */
-+#define PCICFG_SLOT_MASK 0x1f /* Slot mask */
-+#define PCICFG_FUN_MASK 7 /* Function mask */
-+#define PCICFG_OFF_MASK 0xff /* Bus mask */
-+
-+#define PCI_CONFIG_ADDR(b, s, f, o) \
-+ ((((b) & PCICFG_BUS_MASK) << PCICFG_BUS_SHIFT) \
-+ | (((s) & PCICFG_SLOT_MASK) << PCICFG_SLOT_SHIFT) \
-+ | (((f) & PCICFG_FUN_MASK) << PCICFG_FUN_SHIFT) \
-+ | (((o) & PCICFG_OFF_MASK) << PCICFG_OFF_SHIFT))
-+
-+#define PCI_CONFIG_BUS(a) (((a) >> PCICFG_BUS_SHIFT) & PCICFG_BUS_MASK)
-+#define PCI_CONFIG_SLOT(a) (((a) >> PCICFG_SLOT_SHIFT) & PCICFG_SLOT_MASK)
-+#define PCI_CONFIG_FUN(a) (((a) >> PCICFG_FUN_SHIFT) & PCICFG_FUN_MASK)
-+#define PCI_CONFIG_OFF(a) (((a) >> PCICFG_OFF_SHIFT) & PCICFG_OFF_MASK)
-+
-+/* The actual config space */
-+
-+#define PCI_BAR_MAX 6
-+
-+#define PCI_ROM_BAR 8
-+
-+#define PCR_RSVDA_MAX 2
-+
-+/* pci config status reg has a bit to indicate that capability ptr is present*/
-+
-+#define PCI_CAPPTR_PRESENT 0x0010
-+
-+typedef struct _pci_config_regs {
-+ unsigned short vendor;
-+ unsigned short device;
-+ unsigned short command;
-+ unsigned short status;
-+ unsigned char rev_id;
-+ unsigned char prog_if;
-+ unsigned char sub_class;
-+ unsigned char base_class;
-+ unsigned char cache_line_size;
-+ unsigned char latency_timer;
-+ unsigned char header_type;
-+ unsigned char bist;
-+ unsigned long base[PCI_BAR_MAX];
-+ unsigned long cardbus_cis;
-+ unsigned short subsys_vendor;
-+ unsigned short subsys_id;
-+ unsigned long baserom;
-+ unsigned long rsvd_a[PCR_RSVDA_MAX];
-+ unsigned char int_line;
-+ unsigned char int_pin;
-+ unsigned char min_gnt;
-+ unsigned char max_lat;
-+ unsigned char dev_dep[192];
-+} pci_config_regs;
-+
-+#define SZPCR (sizeof (pci_config_regs))
-+#define MINSZPCR 64 /* offsetof (dev_dep[0] */
-+
-+/* A structure for the config registers is nice, but in most
-+ * systems the config space is not memory mapped, so we need
-+ * filed offsetts. :-(
-+ */
-+#define PCI_CFG_VID 0
-+#define PCI_CFG_DID 2
-+#define PCI_CFG_CMD 4
-+#define PCI_CFG_STAT 6
-+#define PCI_CFG_REV 8
-+#define PCI_CFG_PROGIF 9
-+#define PCI_CFG_SUBCL 0xa
-+#define PCI_CFG_BASECL 0xb
-+#define PCI_CFG_CLSZ 0xc
-+#define PCI_CFG_LATTIM 0xd
-+#define PCI_CFG_HDR 0xe
-+#define PCI_CFG_BIST 0xf
-+#define PCI_CFG_BAR0 0x10
-+#define PCI_CFG_BAR1 0x14
-+#define PCI_CFG_BAR2 0x18
-+#define PCI_CFG_BAR3 0x1c
-+#define PCI_CFG_BAR4 0x20
-+#define PCI_CFG_BAR5 0x24
-+#define PCI_CFG_CIS 0x28
-+#define PCI_CFG_SVID 0x2c
-+#define PCI_CFG_SSID 0x2e
-+#define PCI_CFG_ROMBAR 0x30
-+#define PCI_CFG_CAPPTR 0x34
-+#define PCI_CFG_INT 0x3c
-+#define PCI_CFG_PIN 0x3d
-+#define PCI_CFG_MINGNT 0x3e
-+#define PCI_CFG_MAXLAT 0x3f
-+
-+/* Classes and subclasses */
-+
-+typedef enum {
-+ PCI_CLASS_OLD = 0,
-+ PCI_CLASS_DASDI,
-+ PCI_CLASS_NET,
-+ PCI_CLASS_DISPLAY,
-+ PCI_CLASS_MMEDIA,
-+ PCI_CLASS_MEMORY,
-+ PCI_CLASS_BRIDGE,
-+ PCI_CLASS_COMM,
-+ PCI_CLASS_BASE,
-+ PCI_CLASS_INPUT,
-+ PCI_CLASS_DOCK,
-+ PCI_CLASS_CPU,
-+ PCI_CLASS_SERIAL,
-+ PCI_CLASS_INTELLIGENT = 0xe,
-+ PCI_CLASS_SATELLITE,
-+ PCI_CLASS_CRYPT,
-+ PCI_CLASS_DSP,
-+ PCI_CLASS_MAX
-+} pci_classes;
-+
-+typedef enum {
-+ PCI_DASDI_SCSI,
-+ PCI_DASDI_IDE,
-+ PCI_DASDI_FLOPPY,
-+ PCI_DASDI_IPI,
-+ PCI_DASDI_RAID,
-+ PCI_DASDI_OTHER = 0x80
-+} pci_dasdi_subclasses;
-+
-+typedef enum {
-+ PCI_NET_ETHER,
-+ PCI_NET_TOKEN,
-+ PCI_NET_FDDI,
-+ PCI_NET_ATM,
-+ PCI_NET_OTHER = 0x80
-+} pci_net_subclasses;
-+
-+typedef enum {
-+ PCI_DISPLAY_VGA,
-+ PCI_DISPLAY_XGA,
-+ PCI_DISPLAY_3D,
-+ PCI_DISPLAY_OTHER = 0x80
-+} pci_display_subclasses;
-+
-+typedef enum {
-+ PCI_MMEDIA_VIDEO,
-+ PCI_MMEDIA_AUDIO,
-+ PCI_MMEDIA_PHONE,
-+ PCI_MEDIA_OTHER = 0x80
-+} pci_mmedia_subclasses;
-+
-+typedef enum {
-+ PCI_MEMORY_RAM,
-+ PCI_MEMORY_FLASH,
-+ PCI_MEMORY_OTHER = 0x80
-+} pci_memory_subclasses;
-+
-+typedef enum {
-+ PCI_BRIDGE_HOST,
-+ PCI_BRIDGE_ISA,
-+ PCI_BRIDGE_EISA,
-+ PCI_BRIDGE_MC,
-+ PCI_BRIDGE_PCI,
-+ PCI_BRIDGE_PCMCIA,
-+ PCI_BRIDGE_NUBUS,
-+ PCI_BRIDGE_CARDBUS,
-+ PCI_BRIDGE_RACEWAY,
-+ PCI_BRIDGE_OTHER = 0x80
-+} pci_bridge_subclasses;
-+
-+typedef enum {
-+ PCI_COMM_UART,
-+ PCI_COMM_PARALLEL,
-+ PCI_COMM_MULTIUART,
-+ PCI_COMM_MODEM,
-+ PCI_COMM_OTHER = 0x80
-+} pci_comm_subclasses;
-+
-+typedef enum {
-+ PCI_BASE_PIC,
-+ PCI_BASE_DMA,
-+ PCI_BASE_TIMER,
-+ PCI_BASE_RTC,
-+ PCI_BASE_PCI_HOTPLUG,
-+ PCI_BASE_OTHER = 0x80
-+} pci_base_subclasses;
-+
-+typedef enum {
-+ PCI_INPUT_KBD,
-+ PCI_INPUT_PEN,
-+ PCI_INPUT_MOUSE,
-+ PCI_INPUT_SCANNER,
-+ PCI_INPUT_GAMEPORT,
-+ PCI_INPUT_OTHER = 0x80
-+} pci_input_subclasses;
-+
-+typedef enum {
-+ PCI_DOCK_GENERIC,
-+ PCI_DOCK_OTHER = 0x80
-+} pci_dock_subclasses;
-+
-+typedef enum {
-+ PCI_CPU_386,
-+ PCI_CPU_486,
-+ PCI_CPU_PENTIUM,
-+ PCI_CPU_ALPHA = 0x10,
-+ PCI_CPU_POWERPC = 0x20,
-+ PCI_CPU_MIPS = 0x30,
-+ PCI_CPU_COPROC = 0x40,
-+ PCI_CPU_OTHER = 0x80
-+} pci_cpu_subclasses;
-+
-+typedef enum {
-+ PCI_SERIAL_IEEE1394,
-+ PCI_SERIAL_ACCESS,
-+ PCI_SERIAL_SSA,
-+ PCI_SERIAL_USB,
-+ PCI_SERIAL_FIBER,
-+ PCI_SERIAL_SMBUS,
-+ PCI_SERIAL_OTHER = 0x80
-+} pci_serial_subclasses;
-+
-+typedef enum {
-+ PCI_INTELLIGENT_I2O,
-+} pci_intelligent_subclasses;
-+
-+typedef enum {
-+ PCI_SATELLITE_TV,
-+ PCI_SATELLITE_AUDIO,
-+ PCI_SATELLITE_VOICE,
-+ PCI_SATELLITE_DATA,
-+ PCI_SATELLITE_OTHER = 0x80
-+} pci_satellite_subclasses;
-+
-+typedef enum {
-+ PCI_CRYPT_NETWORK,
-+ PCI_CRYPT_ENTERTAINMENT,
-+ PCI_CRYPT_OTHER = 0x80
-+} pci_crypt_subclasses;
-+
-+typedef enum {
-+ PCI_DSP_DPIO,
-+ PCI_DSP_OTHER = 0x80
-+} pci_dsp_subclasses;
-+
-+/* Header types */
-+typedef enum {
-+ PCI_HEADER_NORMAL,
-+ PCI_HEADER_BRIDGE,
-+ PCI_HEADER_CARDBUS
-+} pci_header_types;
-+
-+
-+/* Overlay for a PCI-to-PCI bridge */
-+
-+#define PPB_RSVDA_MAX 2
-+#define PPB_RSVDD_MAX 8
-+
-+typedef struct _ppb_config_regs {
-+ unsigned short vendor;
-+ unsigned short device;
-+ unsigned short command;
-+ unsigned short status;
-+ unsigned char rev_id;
-+ unsigned char prog_if;
-+ unsigned char sub_class;
-+ unsigned char base_class;
-+ unsigned char cache_line_size;
-+ unsigned char latency_timer;
-+ unsigned char header_type;
-+ unsigned char bist;
-+ unsigned long rsvd_a[PPB_RSVDA_MAX];
-+ unsigned char prim_bus;
-+ unsigned char sec_bus;
-+ unsigned char sub_bus;
-+ unsigned char sec_lat;
-+ unsigned char io_base;
-+ unsigned char io_lim;
-+ unsigned short sec_status;
-+ unsigned short mem_base;
-+ unsigned short mem_lim;
-+ unsigned short pf_mem_base;
-+ unsigned short pf_mem_lim;
-+ unsigned long pf_mem_base_hi;
-+ unsigned long pf_mem_lim_hi;
-+ unsigned short io_base_hi;
-+ unsigned short io_lim_hi;
-+ unsigned short subsys_vendor;
-+ unsigned short subsys_id;
-+ unsigned long rsvd_b;
-+ unsigned char rsvd_c;
-+ unsigned char int_pin;
-+ unsigned short bridge_ctrl;
-+ unsigned char chip_ctrl;
-+ unsigned char diag_ctrl;
-+ unsigned short arb_ctrl;
-+ unsigned long rsvd_d[PPB_RSVDD_MAX];
-+ unsigned char dev_dep[192];
-+} ppb_config_regs;
-+
-+
-+/* PCI CAPABILITY DEFINES */
-+#define PCI_CAP_POWERMGMTCAP_ID 0x01
-+#define PCI_CAP_MSICAP_ID 0x05
-+
-+/* Data structure to define the Message Signalled Interrupt facility
-+ * Valid for PCI and PCIE configurations */
-+typedef struct _pciconfig_cap_msi {
-+ unsigned char capID;
-+ unsigned char nextptr;
-+ unsigned short msgctrl;
-+ unsigned int msgaddr;
-+} pciconfig_cap_msi;
-+
-+/* Data structure to define the Power managment facility
-+ * Valid for PCI and PCIE configurations */
-+typedef struct _pciconfig_cap_pwrmgmt {
-+ unsigned char capID;
-+ unsigned char nextptr;
-+ unsigned short pme_cap;
-+ unsigned short pme_sts_ctrl;
-+ unsigned char pme_bridge_ext;
-+ unsigned char data;
-+} pciconfig_cap_pwrmgmt;
-+
-+/* Everything below is BRCM HND proprietary */
-+
-+#define PCI_BAR0_WIN 0x80 /* backplane addres space accessed by BAR0 */
-+#define PCI_BAR1_WIN 0x84 /* backplane addres space accessed by BAR1 */
-+#define PCI_SPROM_CONTROL 0x88 /* sprom property control */
-+#define PCI_BAR1_CONTROL 0x8c /* BAR1 region burst control */
-+#define PCI_INT_STATUS 0x90 /* PCI and other cores interrupts */
-+#define PCI_INT_MASK 0x94 /* mask of PCI and other cores interrupts */
-+#define PCI_TO_SB_MB 0x98 /* signal backplane interrupts */
-+#define PCI_BACKPLANE_ADDR 0xA0 /* address an arbitrary location on the system backplane */
-+#define PCI_BACKPLANE_DATA 0xA4 /* data at the location specified by above address register */
-+#define PCI_GPIO_IN 0xb0 /* pci config space gpio input (>=rev3) */
-+#define PCI_GPIO_OUT 0xb4 /* pci config space gpio output (>=rev3) */
-+#define PCI_GPIO_OUTEN 0xb8 /* pci config space gpio output enable (>=rev3) */
-+
-+#define PCI_BAR0_SPROM_OFFSET (4 * 1024) /* bar0 + 4K accesses external sprom */
-+#define PCI_BAR0_PCIREGS_OFFSET (6 * 1024) /* bar0 + 6K accesses pci core registers */
-+
-+/* PCI_INT_STATUS */
-+#define PCI_SBIM_STATUS_SERR 0x4 /* backplane SBErr interrupt status */
-+
-+/* PCI_INT_MASK */
-+#define PCI_SBIM_SHIFT 8 /* backplane core interrupt mask bits offset */
-+#define PCI_SBIM_MASK 0xff00 /* backplane core interrupt mask */
-+#define PCI_SBIM_MASK_SERR 0x4 /* backplane SBErr interrupt mask */
-+
-+/* PCI_SPROM_CONTROL */
-+#define SPROM_BLANK 0x04 /* indicating a blank sprom */
-+#define SPROM_WRITEEN 0x10 /* sprom write enable */
-+#define SPROM_BOOTROM_WE 0x20 /* external bootrom write enable */
-+
-+#define SPROM_SIZE 256 /* sprom size in 16-bit */
-+#define SPROM_CRC_RANGE 64 /* crc cover range in 16-bit */
-+
-+/* PCI_CFG_CMD_STAT */
-+#define PCI_CFG_CMD_STAT_TA 0x08000000 /* target abort status */
-+
-+#endif
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/proto/ethernet.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/proto/ethernet.h
---- linux-2.6.16/arch/mips/bcm947xx/include/proto/ethernet.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/proto/ethernet.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,145 @@
-+/*******************************************************************************
-+ * $Id$
-+ * Copyright 2001-2003, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * From FreeBSD 2.2.7: Fundamental constants relating to ethernet.
-+ ******************************************************************************/
-+
-+#ifndef _NET_ETHERNET_H_ /* use native BSD ethernet.h when available */
-+#define _NET_ETHERNET_H_
-+
-+#ifndef _TYPEDEFS_H_
-+#include "typedefs.h"
-+#endif
-+
-+#if defined(__GNUC__)
-+#define PACKED __attribute__((packed))
-+#else
-+#define PACKED
-+#endif
-+
-+/*
-+ * The number of bytes in an ethernet (MAC) address.
-+ */
-+#define ETHER_ADDR_LEN 6
-+
-+/*
-+ * The number of bytes in the type field.
-+ */
-+#define ETHER_TYPE_LEN 2
-+
-+/*
-+ * The number of bytes in the trailing CRC field.
-+ */
-+#define ETHER_CRC_LEN 4
-+
-+/*
-+ * The length of the combined header.
-+ */
-+#define ETHER_HDR_LEN (ETHER_ADDR_LEN*2+ETHER_TYPE_LEN)
-+
-+/*
-+ * The minimum packet length.
-+ */
-+#define ETHER_MIN_LEN 64
-+
-+/*
-+ * The minimum packet user data length.
-+ */
-+#define ETHER_MIN_DATA 46
-+
-+/*
-+ * The maximum packet length.
-+ */
-+#define ETHER_MAX_LEN 1518
-+
-+/*
-+ * The maximum packet user data length.
-+ */
-+#define ETHER_MAX_DATA 1500
-+
-+/*
-+ * Used to uniquely identify a 802.1q VLAN-tagged header.
-+ */
-+#define VLAN_TAG 0x8100
-+
-+/*
-+ * Located after dest & src address in ether header.
-+ */
-+#define VLAN_FIELDS_OFFSET (ETHER_ADDR_LEN * 2)
-+
-+/*
-+ * 4 bytes of vlan field info.
-+ */
-+#define VLAN_FIELDS_SIZE 4
-+
-+/* location of pri bits in 16-bit vlan fields */
-+#define VLAN_PRI_SHIFT 13
-+
-+/* 3 bits of priority */
-+#define VLAN_PRI_MASK 7
-+
-+/* 802.1X ethertype */
-+#define ETHER_TYPE_802_1X 0x888e
-+
-+/*
-+ * A macro to validate a length with
-+ */
-+#define ETHER_IS_VALID_LEN(foo) \
-+ ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN)
-+
-+
-+#ifndef __INCif_etherh /* Quick and ugly hack for VxWorks */
-+/*
-+ * Structure of a 10Mb/s Ethernet header.
-+ */
-+struct ether_header {
-+ uint8 ether_dhost[ETHER_ADDR_LEN];
-+ uint8 ether_shost[ETHER_ADDR_LEN];
-+ uint16 ether_type;
-+} PACKED ;
-+
-+/*
-+ * Structure of a 48-bit Ethernet address.
-+ */
-+struct ether_addr {
-+ uint8 octet[ETHER_ADDR_LEN];
-+} PACKED ;
-+#endif
-+
-+/*
-+ * Takes a pointer, returns true if a 48-bit multicast address
-+ * (including broadcast, since it is all ones)
-+ */
-+#define ETHER_ISMULTI(ea) (((uint8 *)(ea))[0] & 1)
-+
-+/*
-+ * Takes a pointer, returns true if a 48-bit broadcast (all ones)
-+ */
-+#define ETHER_ISBCAST(ea) ((((uint8 *)(ea))[0] & \
-+ ((uint8 *)(ea))[1] & \
-+ ((uint8 *)(ea))[2] & \
-+ ((uint8 *)(ea))[3] & \
-+ ((uint8 *)(ea))[4] & \
-+ ((uint8 *)(ea))[5]) == 0xff)
-+
-+static const struct ether_addr ether_bcast = {{255, 255, 255, 255, 255, 255}};
-+
-+/*
-+ * Takes a pointer, returns true if a 48-bit null address (all zeros)
-+ */
-+#define ETHER_ISNULLADDR(ea) ((((uint8 *)(ea))[0] | \
-+ ((uint8 *)(ea))[1] | \
-+ ((uint8 *)(ea))[2] | \
-+ ((uint8 *)(ea))[3] | \
-+ ((uint8 *)(ea))[4] | \
-+ ((uint8 *)(ea))[5]) == 0)
-+
-+#undef PACKED
-+
-+#endif /* _NET_ETHERNET_H_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/s5.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/s5.h
---- linux-2.6.16/arch/mips/bcm947xx/include/s5.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/s5.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,103 @@
-+#ifndef _S5_H_
-+#define _S5_H_
-+/*
-+ * Copyright 2003, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * Broadcom Sentry5 (S5) BCM5365, 53xx, BCM58xx SOC Internal Core
-+ * and MIPS3301 (R4K) System Address Space
-+ *
-+ * 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, located in the file
-+ * LICENSE.
-+ *
-+ * $Id: s5.h,v 1.3 2003/06/10 18:54:51 jfd Exp $
-+ *
-+ */
-+
-+/* BCM5365 Address map */
-+#define KSEG1ADDR(x) ( (x) | 0xa0000000)
-+#define BCM5365_SDRAM 0x00000000 /* 0-128MB Physical SDRAM */
-+#define BCM5365_PCI_MEM 0x08000000 /* Host Mode PCI mem space (64MB) */
-+#define BCM5365_PCI_CFG 0x0c000000 /* Host Mode PCI cfg space (64MB) */
-+#define BCM5365_PCI_DMA 0x40000000 /* Client Mode PCI mem space (1GB)*/
-+#define BCM5365_SDRAM_SWAPPED 0x10000000 /* Byteswapped Physical SDRAM */
-+#define BCM5365_ENUM 0x18000000 /* Beginning of core enum space */
-+
-+/* BCM5365 Core register space */
-+#define BCM5365_REG_CHIPC 0x18000000 /* Chipcommon registers */
-+#define BCM5365_REG_EMAC0 0x18001000 /* Ethernet MAC0 core registers */
-+#define BCM5365_REG_IPSEC 0x18002000 /* BCM582x CryptoCore registers */
-+#define BCM5365_REG_USB 0x18003000 /* USB core registers */
-+#define BCM5365_REG_PCI 0x18004000 /* PCI core registers */
-+#define BCM5365_REG_MIPS33 0x18005000 /* MIPS core registers */
-+#define BCM5365_REG_MEMC 0x18006000 /* MEMC core registers */
-+#define BCM5365_REG_UARTS (BCM5365_REG_CHIPC + 0x300) /* UART regs */
-+#define BCM5365_EJTAG 0xff200000 /* MIPS EJTAG space (2M) */
-+
-+/* COM Ports 1/2 */
-+#define BCM5365_UART (BCM5365_REG_UARTS)
-+#define BCM5365_UART_COM2 (BCM5365_REG_UARTS + 0x00000100)
-+
-+/* Registers common to MIPS33 Core used in 5365 */
-+#define MIPS33_FLASH_REGION 0x1fc00000 /* Boot FLASH Region */
-+#define MIPS33_EXTIF_REGION 0x1a000000 /* Chipcommon EXTIF region*/
-+#define BCM5365_EXTIF 0x1b000000 /* MISC_CS */
-+#define MIPS33_FLASH_REGION_AUX 0x1c000000 /* FLASH Region 2*/
-+
-+/* Internal Core Sonics Backplane Devices */
-+#define INTERNAL_UART_COM1 BCM5365_UART
-+#define INTERNAL_UART_COM2 BCM5365_UART_COM2
-+#define SB_REG_CHIPC BCM5365_REG_CHIPC
-+#define SB_REG_ENET0 BCM5365_REG_EMAC0
-+#define SB_REG_IPSEC BCM5365_REG_IPSEC
-+#define SB_REG_USB BCM5365_REG_USB
-+#define SB_REG_PCI BCM5365_REG_PCI
-+#define SB_REG_MIPS BCM5365_REG_MIPS33
-+#define SB_REG_MEMC BCM5365_REG_MEMC
-+#define SB_REG_MEMC_OFF 0x6000
-+#define SB_EXTIF_SPACE MIPS33_EXTIF_REGION
-+#define SB_FLASH_SPACE MIPS33_FLASH_REGION
-+
-+/*
-+ * XXX
-+ * 5365-specific backplane interrupt flag numbers. This should be done
-+ * dynamically instead.
-+ */
-+#define SBFLAG_PCI 0
-+#define SBFLAG_ENET0 1
-+#define SBFLAG_ILINE20 2
-+#define SBFLAG_CODEC 3
-+#define SBFLAG_USB 4
-+#define SBFLAG_EXTIF 5
-+#define SBFLAG_ENET1 6
-+
-+/* BCM95365 Local Bus devices */
-+#define BCM95365K_RESET_ADDR BCM5365_EXTIF
-+#define BCM95365K_BOARDID_ADDR (BCM5365_EXTIF | 0x4000)
-+#define BCM95365K_DOC_ADDR (BCM5365_EXTIF | 0x6000)
-+#define BCM95365K_LED_ADDR (BCM5365_EXTIF | 0xc000)
-+#define BCM95365K_TOD_REG_BASE (BCM95365K_NVRAM_ADDR | 0x1ff0)
-+#define BCM95365K_NVRAM_ADDR (BCM5365_EXTIF | 0xe000)
-+#define BCM95365K_NVRAM_SIZE 0x1ff0 /* 8K NVRAM : DS1743/STM48txx*/
-+
-+/* Write to DLR2416 VFD Display character RAM */
-+#define LED_REG(x) \
-+ (*(volatile unsigned char *) (KSEG1ADDR(BCM95365K_LED_ADDR) + (x)))
-+
-+#ifdef CONFIG_VSIM
-+#define BCM5365_TRACE(trval) do { *((int *)0xa0002ff8) = (trval); \
-+ } while (0)
-+#else
-+#define BCM5365_TRACE(trval) do { *((unsigned char *)\
-+ KSEG1ADDR(BCM5365K_LED_ADDR)) = (trval); \
-+ *((int *)0xa0002ff8) = (trval); } while (0)
-+#endif
-+
-+/* BCM9536R Local Bus devices */
-+#define BCM95365R_DOC_ADDR BCM5365_EXTIF
-+
-+
-+
-+#endif /*!_S5_H_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/sbchipc.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbchipc.h
---- linux-2.6.16/arch/mips/bcm947xx/include/sbchipc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbchipc.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,440 @@
-+/*
-+ * SiliconBackplane Chipcommon core hardware definitions.
-+ *
-+ * The chipcommon core provides chip identification, SB control,
-+ * jtag, 0/1/2 uarts, clock frequency control, a watchdog interrupt timer,
-+ * gpio interface, extbus, and support for serial and parallel flashes.
-+ *
-+ * $Id$
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ */
-+
-+#ifndef _SBCHIPC_H
-+#define _SBCHIPC_H
-+
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+/* cpp contortions to concatenate w/arg prescan */
-+#ifndef PAD
-+#define _PADLINE(line) pad ## line
-+#define _XSTR(line) _PADLINE(line)
-+#define PAD _XSTR(__LINE__)
-+#endif /* PAD */
-+
-+typedef volatile struct {
-+ uint32 chipid; /* 0x0 */
-+ uint32 capabilities;
-+ uint32 corecontrol; /* corerev >= 1 */
-+ uint32 bist;
-+
-+ /* OTP */
-+ uint32 otpstatus; /* 0x10, corerev >= 10 */
-+ uint32 otpcontrol;
-+ uint32 otpprog;
-+ uint32 PAD;
-+
-+ /* Interrupt control */
-+ uint32 intstatus; /* 0x20 */
-+ uint32 intmask;
-+ uint32 chipcontrol; /* 0x28, rev >= 11 */
-+ uint32 chipstatus; /* 0x2c, rev >= 11 */
-+
-+ /* Jtag Master */
-+ uint32 jtagcmd; /* 0x30, rev >= 10 */
-+ uint32 jtagir;
-+ uint32 jtagdr;
-+ uint32 jtagctrl;
-+
-+ /* serial flash interface registers */
-+ uint32 flashcontrol; /* 0x40 */
-+ uint32 flashaddress;
-+ uint32 flashdata;
-+ uint32 PAD[1];
-+
-+ /* Silicon backplane configuration broadcast control */
-+ uint32 broadcastaddress; /* 0x50 */
-+ uint32 broadcastdata;
-+ uint32 PAD[2];
-+
-+ /* gpio - cleared only by power-on-reset */
-+ uint32 gpioin; /* 0x60 */
-+ uint32 gpioout;
-+ uint32 gpioouten;
-+ uint32 gpiocontrol;
-+ uint32 gpiointpolarity;
-+ uint32 gpiointmask;
-+ uint32 PAD[2];
-+
-+ /* Watchdog timer */
-+ uint32 watchdog; /* 0x80 */
-+ uint32 PAD[1];
-+
-+ /*GPIO based LED powersave registers corerev >= 16*/
-+ uint32 gpiotimerval; /*0x88 */
-+ uint32 gpiotimeroutmask;
-+
-+ /* clock control */
-+ uint32 clockcontrol_n; /* 0x90 */
-+ uint32 clockcontrol_sb; /* aka m0 */
-+ uint32 clockcontrol_pci; /* aka m1 */
-+ uint32 clockcontrol_m2; /* mii/uart/mipsref */
-+ uint32 clockcontrol_mips; /* aka m3 */
-+ uint32 clkdiv; /* corerev >= 3 */
-+ uint32 PAD[2];
-+
-+ /* pll delay registers (corerev >= 4) */
-+ uint32 pll_on_delay; /* 0xb0 */
-+ uint32 fref_sel_delay;
-+ uint32 slow_clk_ctl; /* 5 < corerev < 10 */
-+ uint32 PAD[1];
-+
-+ /* Instaclock registers (corerev >= 10) */
-+ uint32 system_clk_ctl; /* 0xc0 */
-+ uint32 clkstatestretch;
-+ uint32 PAD[14];
-+
-+ /* ExtBus control registers (corerev >= 3) */
-+ uint32 pcmcia_config; /* 0x100 */
-+ uint32 pcmcia_memwait;
-+ uint32 pcmcia_attrwait;
-+ uint32 pcmcia_iowait;
-+ uint32 ide_config;
-+ uint32 ide_memwait;
-+ uint32 ide_attrwait;
-+ uint32 ide_iowait;
-+ uint32 prog_config;
-+ uint32 prog_waitcount;
-+ uint32 flash_config;
-+ uint32 flash_waitcount;
-+ uint32 PAD[116];
-+
-+ /* uarts */
-+ uint8 uart0data; /* 0x300 */
-+ uint8 uart0imr;
-+ uint8 uart0fcr;
-+ uint8 uart0lcr;
-+ uint8 uart0mcr;
-+ uint8 uart0lsr;
-+ uint8 uart0msr;
-+ uint8 uart0scratch;
-+ uint8 PAD[248]; /* corerev >= 1 */
-+
-+ uint8 uart1data; /* 0x400 */
-+ uint8 uart1imr;
-+ uint8 uart1fcr;
-+ uint8 uart1lcr;
-+ uint8 uart1mcr;
-+ uint8 uart1lsr;
-+ uint8 uart1msr;
-+ uint8 uart1scratch;
-+} chipcregs_t;
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+#define CC_CHIPID 0
-+#define CC_CAPABILITIES 4
-+#define CC_JTAGCMD 0x30
-+#define CC_JTAGIR 0x34
-+#define CC_JTAGDR 0x38
-+#define CC_JTAGCTRL 0x3c
-+#define CC_WATCHDOG 0x80
-+#define CC_CLKC_N 0x90
-+#define CC_CLKC_M0 0x94
-+#define CC_CLKC_M1 0x98
-+#define CC_CLKC_M2 0x9c
-+#define CC_CLKC_M3 0xa0
-+#define CC_CLKDIV 0xa4
-+#define CC_SYS_CLK_CTL 0xc0
-+#define CC_OTP 0x800
-+
-+/* chipid */
-+#define CID_ID_MASK 0x0000ffff /* Chip Id mask */
-+#define CID_REV_MASK 0x000f0000 /* Chip Revision mask */
-+#define CID_REV_SHIFT 16 /* Chip Revision shift */
-+#define CID_PKG_MASK 0x00f00000 /* Package Option mask */
-+#define CID_PKG_SHIFT 20 /* Package Option shift */
-+#define CID_CC_MASK 0x0f000000 /* CoreCount (corerev >= 4) */
-+#define CID_CC_SHIFT 24
-+
-+/* capabilities */
-+#define CAP_UARTS_MASK 0x00000003 /* Number of uarts */
-+#define CAP_MIPSEB 0x00000004 /* MIPS is in big-endian mode */
-+#define CAP_UCLKSEL 0x00000018 /* UARTs clock select */
-+#define CAP_UINTCLK 0x00000008 /* UARTs are driven by internal divided clock */
-+#define CAP_UARTGPIO 0x00000020 /* UARTs own Gpio's 15:12 */
-+#define CAP_EXTBUS 0x00000040 /* External bus present */
-+#define CAP_FLASH_MASK 0x00000700 /* Type of flash */
-+#define CAP_PLL_MASK 0x00038000 /* Type of PLL */
-+#define CAP_PWR_CTL 0x00040000 /* Power control */
-+#define CAP_OTPSIZE 0x00380000 /* OTP Size (0 = none) */
-+#define CAP_OTPSIZE_SHIFT 19 /* OTP Size shift */
-+#define CAP_OTPSIZE_BASE 5 /* OTP Size base */
-+#define CAP_JTAGP 0x00400000 /* JTAG Master Present */
-+#define CAP_ROM 0x00800000 /* Internal boot rom active */
-+
-+/* PLL type */
-+#define PLL_NONE 0x00000000
-+#define PLL_TYPE1 0x00010000 /* 48Mhz base, 3 dividers */
-+#define PLL_TYPE2 0x00020000 /* 48Mhz, 4 dividers */
-+#define PLL_TYPE3 0x00030000 /* 25Mhz, 2 dividers */
-+#define PLL_TYPE4 0x00008000 /* 48Mhz, 4 dividers */
-+#define PLL_TYPE5 0x00018000 /* 25Mhz, 4 dividers */
-+#define PLL_TYPE6 0x00028000 /* 100/200 or 120/240 only */
-+#define PLL_TYPE7 0x00038000 /* 25Mhz, 4 dividers */
-+
-+/* corecontrol */
-+#define CC_UARTCLKO 0x00000001 /* Drive UART with internal clock */
-+#define CC_SE 0x00000002 /* sync clk out enable (corerev >= 3) */
-+
-+/* Fields in the otpstatus register */
-+#define OTPS_PROGFAIL 0x80000000
-+#define OTPS_PROTECT 0x00000007
-+#define OTPS_HW_PROTECT 0x00000001
-+#define OTPS_SW_PROTECT 0x00000002
-+#define OTPS_CID_PROTECT 0x00000004
-+
-+/* Fields in the otpcontrol register */
-+#define OTPC_RECWAIT 0xff000000
-+#define OTPC_PROGWAIT 0x00ffff00
-+#define OTPC_PRW_SHIFT 8
-+#define OTPC_MAXFAIL 0x00000038
-+#define OTPC_VSEL 0x00000006
-+#define OTPC_SELVL 0x00000001
-+
-+/* Fields in otpprog */
-+#define OTPP_COL_MASK 0x000000ff
-+#define OTPP_ROW_MASK 0x0000ff00
-+#define OTPP_ROW_SHIFT 8
-+#define OTPP_READERR 0x10000000
-+#define OTPP_VALUE 0x20000000
-+#define OTPP_VALUE_SHIFT 29
-+#define OTPP_READ 0x40000000
-+#define OTPP_START 0x80000000
-+#define OTPP_BUSY 0x80000000
-+
-+/* jtagcmd */
-+#define JCMD_START 0x80000000
-+#define JCMD_BUSY 0x80000000
-+#define JCMD_PAUSE 0x40000000
-+#define JCMD0_ACC_MASK 0x0000f000
-+#define JCMD0_ACC_IRDR 0x00000000
-+#define JCMD0_ACC_DR 0x00001000
-+#define JCMD0_ACC_IR 0x00002000
-+#define JCMD0_ACC_RESET 0x00003000
-+#define JCMD0_ACC_IRPDR 0x00004000
-+#define JCMD0_ACC_PDR 0x00005000
-+#define JCMD0_IRW_MASK 0x00000f00
-+#define JCMD_ACC_MASK 0x000f0000 /* Changes for corerev 11 */
-+#define JCMD_ACC_IRDR 0x00000000
-+#define JCMD_ACC_DR 0x00010000
-+#define JCMD_ACC_IR 0x00020000
-+#define JCMD_ACC_RESET 0x00030000
-+#define JCMD_ACC_IRPDR 0x00040000
-+#define JCMD_ACC_PDR 0x00050000
-+#define JCMD_IRW_MASK 0x00001f00
-+#define JCMD_IRW_SHIFT 8
-+#define JCMD_DRW_MASK 0x0000003f
-+
-+/* jtagctrl */
-+#define JCTRL_FORCE_CLK 4 /* Force clock */
-+#define JCTRL_EXT_EN 2 /* Enable external targets */
-+#define JCTRL_EN 1 /* Enable Jtag master */
-+
-+/* Fields in clkdiv */
-+#define CLKD_SFLASH 0x0f000000
-+#define CLKD_SFLASH_SHIFT 24
-+#define CLKD_OTP 0x000f0000
-+#define CLKD_OTP_SHIFT 16
-+#define CLKD_JTAG 0x00000f00
-+#define CLKD_JTAG_SHIFT 8
-+#define CLKD_UART 0x000000ff
-+
-+/* intstatus/intmask */
-+#define CI_GPIO 0x00000001 /* gpio intr */
-+#define CI_EI 0x00000002 /* ro: ext intr pin (corerev >= 3) */
-+#define CI_WDRESET 0x80000000 /* watchdog reset occurred */
-+
-+/* slow_clk_ctl */
-+#define SCC_SS_MASK 0x00000007 /* slow clock source mask */
-+#define SCC_SS_LPO 0x00000000 /* source of slow clock is LPO */
-+#define SCC_SS_XTAL 0x00000001 /* source of slow clock is crystal */
-+#define SCC_SS_PCI 0x00000002 /* source of slow clock is PCI */
-+#define SCC_LF 0x00000200 /* LPOFreqSel, 1: 160Khz, 0: 32KHz */
-+#define SCC_LP 0x00000400 /* LPOPowerDown, 1: LPO is disabled, 0: LPO is enabled */
-+#define SCC_FS 0x00000800 /* ForceSlowClk, 1: sb/cores running on slow clock, 0: power logic control */
-+#define SCC_IP 0x00001000 /* IgnorePllOffReq, 1/0: power logic ignores/honors PLL clock disable requests from core */
-+#define SCC_XC 0x00002000 /* XtalControlEn, 1/0: power logic does/doesn't disable crystal when appropriate */
-+#define SCC_XP 0x00004000 /* XtalPU (RO), 1/0: crystal running/disabled */
-+#define SCC_CD_MASK 0xffff0000 /* ClockDivider (SlowClk = 1/(4+divisor)) */
-+#define SCC_CD_SHIFT 16
-+
-+/* system_clk_ctl */
-+#define SYCC_IE 0x00000001 /* ILPen: Enable Idle Low Power */
-+#define SYCC_AE 0x00000002 /* ALPen: Enable Active Low Power */
-+#define SYCC_FP 0x00000004 /* ForcePLLOn */
-+#define SYCC_AR 0x00000008 /* Force ALP (or HT if ALPen is not set */
-+#define SYCC_HR 0x00000010 /* Force HT */
-+#define SYCC_CD_MASK 0xffff0000 /* ClkDiv (ILP = 1/(4+divisor)) */
-+#define SYCC_CD_SHIFT 16
-+
-+/* gpiotimerval*/
-+#define GPIO_ONTIME_SHIFT 16
-+
-+/* clockcontrol_n */
-+#define CN_N1_MASK 0x3f /* n1 control */
-+#define CN_N2_MASK 0x3f00 /* n2 control */
-+#define CN_N2_SHIFT 8
-+#define CN_PLLC_MASK 0xf0000 /* pll control */
-+#define CN_PLLC_SHIFT 16
-+
-+/* clockcontrol_sb/pci/uart */
-+#define CC_M1_MASK 0x3f /* m1 control */
-+#define CC_M2_MASK 0x3f00 /* m2 control */
-+#define CC_M2_SHIFT 8
-+#define CC_M3_MASK 0x3f0000 /* m3 control */
-+#define CC_M3_SHIFT 16
-+#define CC_MC_MASK 0x1f000000 /* mux control */
-+#define CC_MC_SHIFT 24
-+
-+/* N3M Clock control magic field values */
-+#define CC_F6_2 0x02 /* A factor of 2 in */
-+#define CC_F6_3 0x03 /* 6-bit fields like */
-+#define CC_F6_4 0x05 /* N1, M1 or M3 */
-+#define CC_F6_5 0x09
-+#define CC_F6_6 0x11
-+#define CC_F6_7 0x21
-+
-+#define CC_F5_BIAS 5 /* 5-bit fields get this added */
-+
-+#define CC_MC_BYPASS 0x08
-+#define CC_MC_M1 0x04
-+#define CC_MC_M1M2 0x02
-+#define CC_MC_M1M2M3 0x01
-+#define CC_MC_M1M3 0x11
-+
-+/* Type 2 Clock control magic field values */
-+#define CC_T2_BIAS 2 /* n1, n2, m1 & m3 bias */
-+#define CC_T2M2_BIAS 3 /* m2 bias */
-+
-+#define CC_T2MC_M1BYP 1
-+#define CC_T2MC_M2BYP 2
-+#define CC_T2MC_M3BYP 4
-+
-+/* Type 6 Clock control magic field values */
-+#define CC_T6_MMASK 1 /* bits of interest in m */
-+#define CC_T6_M0 120000000 /* sb clock for m = 0 */
-+#define CC_T6_M1 100000000 /* sb clock for m = 1 */
-+#define SB2MIPS_T6(sb) (2 * (sb))
-+
-+/* Common clock base */
-+#define CC_CLOCK_BASE1 24000000 /* Half the clock freq */
-+#define CC_CLOCK_BASE2 12500000 /* Alternate crystal on some PLL's */
-+
-+/* Clock control values for 200Mhz in 5350 */
-+#define CLKC_5350_N 0x0311
-+#define CLKC_5350_M 0x04020009
-+
-+/* Flash types in the chipcommon capabilities register */
-+#define FLASH_NONE 0x000 /* No flash */
-+#define SFLASH_ST 0x100 /* ST serial flash */
-+#define SFLASH_AT 0x200 /* Atmel serial flash */
-+#define PFLASH 0x700 /* Parallel flash */
-+
-+/* Bits in the config registers */
-+#define CC_CFG_EN 0x0001 /* Enable */
-+#define CC_CFG_EM_MASK 0x000e /* Extif Mode */
-+#define CC_CFG_EM_ASYNC 0x0002 /* Async/Parallel flash */
-+#define CC_CFG_EM_SYNC 0x0004 /* Synchronous */
-+#define CC_CFG_EM_PCMCIA 0x0008 /* PCMCIA */
-+#define CC_CFG_EM_IDE 0x000a /* IDE */
-+#define CC_CFG_DS 0x0010 /* Data size, 0=8bit, 1=16bit */
-+#define CC_CFG_CD_MASK 0x0060 /* Sync: Clock divisor */
-+#define CC_CFG_CE 0x0080 /* Sync: Clock enable */
-+#define CC_CFG_SB 0x0100 /* Sync: Size/Bytestrobe */
-+
-+/* Start/busy bit in flashcontrol */
-+#define SFLASH_START 0x80000000
-+#define SFLASH_BUSY SFLASH_START
-+
-+/* flashcontrol opcodes for ST flashes */
-+#define SFLASH_ST_WREN 0x0006 /* Write Enable */
-+#define SFLASH_ST_WRDIS 0x0004 /* Write Disable */
-+#define SFLASH_ST_RDSR 0x0105 /* Read Status Register */
-+#define SFLASH_ST_WRSR 0x0101 /* Write Status Register */
-+#define SFLASH_ST_READ 0x0303 /* Read Data Bytes */
-+#define SFLASH_ST_PP 0x0302 /* Page Program */
-+#define SFLASH_ST_SE 0x02d8 /* Sector Erase */
-+#define SFLASH_ST_BE 0x00c7 /* Bulk Erase */
-+#define SFLASH_ST_DP 0x00b9 /* Deep Power-down */
-+#define SFLASH_ST_RES 0x03ab /* Read Electronic Signature */
-+
-+/* Status register bits for ST flashes */
-+#define SFLASH_ST_WIP 0x01 /* Write In Progress */
-+#define SFLASH_ST_WEL 0x02 /* Write Enable Latch */
-+#define SFLASH_ST_BP_MASK 0x1c /* Block Protect */
-+#define SFLASH_ST_BP_SHIFT 2
-+#define SFLASH_ST_SRWD 0x80 /* Status Register Write Disable */
-+
-+/* flashcontrol opcodes for Atmel flashes */
-+#define SFLASH_AT_READ 0x07e8
-+#define SFLASH_AT_PAGE_READ 0x07d2
-+#define SFLASH_AT_BUF1_READ
-+#define SFLASH_AT_BUF2_READ
-+#define SFLASH_AT_STATUS 0x01d7
-+#define SFLASH_AT_BUF1_WRITE 0x0384
-+#define SFLASH_AT_BUF2_WRITE 0x0387
-+#define SFLASH_AT_BUF1_ERASE_PROGRAM 0x0283
-+#define SFLASH_AT_BUF2_ERASE_PROGRAM 0x0286
-+#define SFLASH_AT_BUF1_PROGRAM 0x0288
-+#define SFLASH_AT_BUF2_PROGRAM 0x0289
-+#define SFLASH_AT_PAGE_ERASE 0x0281
-+#define SFLASH_AT_BLOCK_ERASE 0x0250
-+#define SFLASH_AT_BUF1_WRITE_ERASE_PROGRAM 0x0382
-+#define SFLASH_AT_BUF2_WRITE_ERASE_PROGRAM 0x0385
-+#define SFLASH_AT_BUF1_LOAD 0x0253
-+#define SFLASH_AT_BUF2_LOAD 0x0255
-+#define SFLASH_AT_BUF1_COMPARE 0x0260
-+#define SFLASH_AT_BUF2_COMPARE 0x0261
-+#define SFLASH_AT_BUF1_REPROGRAM 0x0258
-+#define SFLASH_AT_BUF2_REPROGRAM 0x0259
-+
-+/* Status register bits for Atmel flashes */
-+#define SFLASH_AT_READY 0x80
-+#define SFLASH_AT_MISMATCH 0x40
-+#define SFLASH_AT_ID_MASK 0x38
-+#define SFLASH_AT_ID_SHIFT 3
-+
-+/* OTP regions */
-+#define OTP_HW_REGION OTPS_HW_PROTECT
-+#define OTP_SW_REGION OTPS_SW_PROTECT
-+#define OTP_CID_REGION OTPS_CID_PROTECT
-+
-+/* OTP regions (Byte offsets from otp size) */
-+#define OTP_SWLIM_OFF (-8)
-+#define OTP_CIDBASE_OFF 0
-+#define OTP_CIDLIM_OFF 8
-+
-+/* Predefined OTP words (Word offset from otp size) */
-+#define OTP_BOUNDARY_OFF (-4)
-+#define OTP_HWSIGN_OFF (-3)
-+#define OTP_SWSIGN_OFF (-2)
-+#define OTP_CIDSIGN_OFF (-1)
-+
-+#define OTP_CID_OFF 0
-+#define OTP_PKG_OFF 1
-+#define OTP_FID_OFF 2
-+#define OTP_RSV_OFF 3
-+#define OTP_LIM_OFF 4
-+
-+#define OTP_SIGNATURE 0x578a
-+#define OTP_MAGIC 0x4e56
-+
-+#endif /* _SBCHIPC_H */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/sbconfig.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbconfig.h
---- linux-2.6.16/arch/mips/bcm947xx/include/sbconfig.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbconfig.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,342 @@
-+/*
-+ * Broadcom SiliconBackplane hardware register definitions.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#ifndef _SBCONFIG_H
-+#define _SBCONFIG_H
-+
-+/* cpp contortions to concatenate w/arg prescan */
-+#ifndef PAD
-+#define _PADLINE(line) pad ## line
-+#define _XSTR(line) _PADLINE(line)
-+#define PAD _XSTR(__LINE__)
-+#endif
-+
-+/*
-+ * SiliconBackplane Address Map.
-+ * All regions may not exist on all chips.
-+ */
-+#define SB_SDRAM_BASE 0x00000000 /* Physical SDRAM */
-+#define SB_PCI_MEM 0x08000000 /* Host Mode sb2pcitranslation0 (64 MB) */
-+#define SB_PCI_CFG 0x0c000000 /* Host Mode sb2pcitranslation1 (64 MB) */
-+#define SB_SDRAM_SWAPPED 0x10000000 /* Byteswapped Physical SDRAM */
-+#define SB_ENUM_BASE 0x18000000 /* Enumeration space base */
-+#define SB_ENUM_LIM 0x18010000 /* Enumeration space limit */
-+
-+#define SB_FLASH2 0x1c000000 /* Flash Region 2 (region 1 shadowed here) */
-+#define SB_FLASH2_SZ 0x02000000 /* Size of Flash Region 2 */
-+
-+#define SB_EXTIF_BASE 0x1f000000 /* External Interface region base address */
-+#define SB_FLASH1 0x1fc00000 /* Flash Region 1 */
-+#define SB_FLASH1_SZ 0x00400000 /* Size of Flash Region 1 */
-+
-+#define SB_PCI_DMA 0x40000000 /* Client Mode sb2pcitranslation2 (1 GB) */
-+#define SB_PCI_DMA_SZ 0x40000000 /* Client Mode sb2pcitranslation2 size in bytes */
-+#define SB_PCIE_DMA_L32 0x00000000 /* PCIE Client Mode sb2pcitranslation2 (2 ZettaBytes), low 32 bits */
-+#define SB_PCIE_DMA_H32 0x80000000 /* PCIE Client Mode sb2pcitranslation2 (2 ZettaBytes), high 32 bits */
-+#define SB_EUART (SB_EXTIF_BASE + 0x00800000)
-+#define SB_LED (SB_EXTIF_BASE + 0x00900000)
-+
-+
-+/* enumeration space related defs */
-+#define SB_CORE_SIZE 0x1000 /* each core gets 4Kbytes for registers */
-+#define SB_MAXCORES ((SB_ENUM_LIM - SB_ENUM_BASE)/SB_CORE_SIZE)
-+#define SBCONFIGOFF 0xf00 /* core sbconfig regs are top 256bytes of regs */
-+#define SBCONFIGSIZE 256 /* sizeof (sbconfig_t) */
-+
-+/* mips address */
-+#define SB_EJTAG 0xff200000 /* MIPS EJTAG space (2M) */
-+
-+/*
-+ * Sonics Configuration Space Registers.
-+ */
-+#define SBIPSFLAG 0x08
-+#define SBTPSFLAG 0x18
-+#define SBTMERRLOGA 0x48 /* sonics >= 2.3 */
-+#define SBTMERRLOG 0x50 /* sonics >= 2.3 */
-+#define SBADMATCH3 0x60
-+#define SBADMATCH2 0x68
-+#define SBADMATCH1 0x70
-+#define SBIMSTATE 0x90
-+#define SBINTVEC 0x94
-+#define SBTMSTATELOW 0x98
-+#define SBTMSTATEHIGH 0x9c
-+#define SBBWA0 0xa0
-+#define SBIMCONFIGLOW 0xa8
-+#define SBIMCONFIGHIGH 0xac
-+#define SBADMATCH0 0xb0
-+#define SBTMCONFIGLOW 0xb8
-+#define SBTMCONFIGHIGH 0xbc
-+#define SBBCONFIG 0xc0
-+#define SBBSTATE 0xc8
-+#define SBACTCNFG 0xd8
-+#define SBFLAGST 0xe8
-+#define SBIDLOW 0xf8
-+#define SBIDHIGH 0xfc
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+typedef volatile struct _sbconfig {
-+ uint32 PAD[2];
-+ uint32 sbipsflag; /* initiator port ocp slave flag */
-+ uint32 PAD[3];
-+ uint32 sbtpsflag; /* target port ocp slave flag */
-+ uint32 PAD[11];
-+ uint32 sbtmerrloga; /* (sonics >= 2.3) */
-+ uint32 PAD;
-+ uint32 sbtmerrlog; /* (sonics >= 2.3) */
-+ uint32 PAD[3];
-+ uint32 sbadmatch3; /* address match3 */
-+ uint32 PAD;
-+ uint32 sbadmatch2; /* address match2 */
-+ uint32 PAD;
-+ uint32 sbadmatch1; /* address match1 */
-+ uint32 PAD[7];
-+ uint32 sbimstate; /* initiator agent state */
-+ uint32 sbintvec; /* interrupt mask */
-+ uint32 sbtmstatelow; /* target state */
-+ uint32 sbtmstatehigh; /* target state */
-+ uint32 sbbwa0; /* bandwidth allocation table0 */
-+ uint32 PAD;
-+ uint32 sbimconfiglow; /* initiator configuration */
-+ uint32 sbimconfighigh; /* initiator configuration */
-+ uint32 sbadmatch0; /* address match0 */
-+ uint32 PAD;
-+ uint32 sbtmconfiglow; /* target configuration */
-+ uint32 sbtmconfighigh; /* target configuration */
-+ uint32 sbbconfig; /* broadcast configuration */
-+ uint32 PAD;
-+ uint32 sbbstate; /* broadcast state */
-+ uint32 PAD[3];
-+ uint32 sbactcnfg; /* activate configuration */
-+ uint32 PAD[3];
-+ uint32 sbflagst; /* current sbflags */
-+ uint32 PAD[3];
-+ uint32 sbidlow; /* identification */
-+ uint32 sbidhigh; /* identification */
-+} sbconfig_t;
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+/* sbipsflag */
-+#define SBIPS_INT1_MASK 0x3f /* which sbflags get routed to mips interrupt 1 */
-+#define SBIPS_INT1_SHIFT 0
-+#define SBIPS_INT2_MASK 0x3f00 /* which sbflags get routed to mips interrupt 2 */
-+#define SBIPS_INT2_SHIFT 8
-+#define SBIPS_INT3_MASK 0x3f0000 /* which sbflags get routed to mips interrupt 3 */
-+#define SBIPS_INT3_SHIFT 16
-+#define SBIPS_INT4_MASK 0x3f000000 /* which sbflags get routed to mips interrupt 4 */
-+#define SBIPS_INT4_SHIFT 24
-+
-+/* sbtpsflag */
-+#define SBTPS_NUM0_MASK 0x3f /* interrupt sbFlag # generated by this core */
-+#define SBTPS_F0EN0 0x40 /* interrupt is always sent on the backplane */
-+
-+/* sbtmerrlog */
-+#define SBTMEL_CM 0x00000007 /* command */
-+#define SBTMEL_CI 0x0000ff00 /* connection id */
-+#define SBTMEL_EC 0x0f000000 /* error code */
-+#define SBTMEL_ME 0x80000000 /* multiple error */
-+
-+/* sbimstate */
-+#define SBIM_PC 0xf /* pipecount */
-+#define SBIM_AP_MASK 0x30 /* arbitration policy */
-+#define SBIM_AP_BOTH 0x00 /* use both timeslaces and token */
-+#define SBIM_AP_TS 0x10 /* use timesliaces only */
-+#define SBIM_AP_TK 0x20 /* use token only */
-+#define SBIM_AP_RSV 0x30 /* reserved */
-+#define SBIM_IBE 0x20000 /* inbanderror */
-+#define SBIM_TO 0x40000 /* timeout */
-+#define SBIM_BY 0x01800000 /* busy (sonics >= 2.3) */
-+#define SBIM_RJ 0x02000000 /* reject (sonics >= 2.3) */
-+
-+/* sbtmstatelow */
-+#define SBTML_RESET 0x1 /* reset */
-+#define SBTML_REJ_MASK 0x6 /* reject */
-+#define SBTML_REJ_SHIFT 1
-+#define SBTML_CLK 0x10000 /* clock enable */
-+#define SBTML_FGC 0x20000 /* force gated clocks on */
-+#define SBTML_FL_MASK 0x3ffc0000 /* core-specific flags */
-+#define SBTML_PE 0x40000000 /* pme enable */
-+#define SBTML_BE 0x80000000 /* bist enable */
-+
-+/* sbtmstatehigh */
-+#define SBTMH_SERR 0x1 /* serror */
-+#define SBTMH_INT 0x2 /* interrupt */
-+#define SBTMH_BUSY 0x4 /* busy */
-+#define SBTMH_TO 0x00000020 /* timeout (sonics >= 2.3) */
-+#define SBTMH_FL_MASK 0x1fff0000 /* core-specific flags */
-+#define SBTMH_DMA64 0x10000000 /* supports DMA with 64-bit addresses */
-+#define SBTMH_GCR 0x20000000 /* gated clock request */
-+#define SBTMH_BISTF 0x40000000 /* bist failed */
-+#define SBTMH_BISTD 0x80000000 /* bist done */
-+
-+
-+/* sbbwa0 */
-+#define SBBWA_TAB0_MASK 0xffff /* lookup table 0 */
-+#define SBBWA_TAB1_MASK 0xffff /* lookup table 1 */
-+#define SBBWA_TAB1_SHIFT 16
-+
-+/* sbimconfiglow */
-+#define SBIMCL_STO_MASK 0x7 /* service timeout */
-+#define SBIMCL_RTO_MASK 0x70 /* request timeout */
-+#define SBIMCL_RTO_SHIFT 4
-+#define SBIMCL_CID_MASK 0xff0000 /* connection id */
-+#define SBIMCL_CID_SHIFT 16
-+
-+/* sbimconfighigh */
-+#define SBIMCH_IEM_MASK 0xc /* inband error mode */
-+#define SBIMCH_TEM_MASK 0x30 /* timeout error mode */
-+#define SBIMCH_TEM_SHIFT 4
-+#define SBIMCH_BEM_MASK 0xc0 /* bus error mode */
-+#define SBIMCH_BEM_SHIFT 6
-+
-+/* sbadmatch0 */
-+#define SBAM_TYPE_MASK 0x3 /* address type */
-+#define SBAM_AD64 0x4 /* reserved */
-+#define SBAM_ADINT0_MASK 0xf8 /* type0 size */
-+#define SBAM_ADINT0_SHIFT 3
-+#define SBAM_ADINT1_MASK 0x1f8 /* type1 size */
-+#define SBAM_ADINT1_SHIFT 3
-+#define SBAM_ADINT2_MASK 0x1f8 /* type2 size */
-+#define SBAM_ADINT2_SHIFT 3
-+#define SBAM_ADEN 0x400 /* enable */
-+#define SBAM_ADNEG 0x800 /* negative decode */
-+#define SBAM_BASE0_MASK 0xffffff00 /* type0 base address */
-+#define SBAM_BASE0_SHIFT 8
-+#define SBAM_BASE1_MASK 0xfffff000 /* type1 base address for the core */
-+#define SBAM_BASE1_SHIFT 12
-+#define SBAM_BASE2_MASK 0xffff0000 /* type2 base address for the core */
-+#define SBAM_BASE2_SHIFT 16
-+
-+/* sbtmconfiglow */
-+#define SBTMCL_CD_MASK 0xff /* clock divide */
-+#define SBTMCL_CO_MASK 0xf800 /* clock offset */
-+#define SBTMCL_CO_SHIFT 11
-+#define SBTMCL_IF_MASK 0xfc0000 /* interrupt flags */
-+#define SBTMCL_IF_SHIFT 18
-+#define SBTMCL_IM_MASK 0x3000000 /* interrupt mode */
-+#define SBTMCL_IM_SHIFT 24
-+
-+/* sbtmconfighigh */
-+#define SBTMCH_BM_MASK 0x3 /* busy mode */
-+#define SBTMCH_RM_MASK 0x3 /* retry mode */
-+#define SBTMCH_RM_SHIFT 2
-+#define SBTMCH_SM_MASK 0x30 /* stop mode */
-+#define SBTMCH_SM_SHIFT 4
-+#define SBTMCH_EM_MASK 0x300 /* sb error mode */
-+#define SBTMCH_EM_SHIFT 8
-+#define SBTMCH_IM_MASK 0xc00 /* int mode */
-+#define SBTMCH_IM_SHIFT 10
-+
-+/* sbbconfig */
-+#define SBBC_LAT_MASK 0x3 /* sb latency */
-+#define SBBC_MAX0_MASK 0xf0000 /* maxccntr0 */
-+#define SBBC_MAX0_SHIFT 16
-+#define SBBC_MAX1_MASK 0xf00000 /* maxccntr1 */
-+#define SBBC_MAX1_SHIFT 20
-+
-+/* sbbstate */
-+#define SBBS_SRD 0x1 /* st reg disable */
-+#define SBBS_HRD 0x2 /* hold reg disable */
-+
-+/* sbidlow */
-+#define SBIDL_CS_MASK 0x3 /* config space */
-+#define SBIDL_AR_MASK 0x38 /* # address ranges supported */
-+#define SBIDL_AR_SHIFT 3
-+#define SBIDL_SYNCH 0x40 /* sync */
-+#define SBIDL_INIT 0x80 /* initiator */
-+#define SBIDL_MINLAT_MASK 0xf00 /* minimum backplane latency */
-+#define SBIDL_MINLAT_SHIFT 8
-+#define SBIDL_MAXLAT 0xf000 /* maximum backplane latency */
-+#define SBIDL_MAXLAT_SHIFT 12
-+#define SBIDL_FIRST 0x10000 /* this initiator is first */
-+#define SBIDL_CW_MASK 0xc0000 /* cycle counter width */
-+#define SBIDL_CW_SHIFT 18
-+#define SBIDL_TP_MASK 0xf00000 /* target ports */
-+#define SBIDL_TP_SHIFT 20
-+#define SBIDL_IP_MASK 0xf000000 /* initiator ports */
-+#define SBIDL_IP_SHIFT 24
-+#define SBIDL_RV_MASK 0xf0000000 /* sonics backplane revision code */
-+#define SBIDL_RV_SHIFT 28
-+#define SBIDL_RV_2_2 0x00000000 /* version 2.2 or earlier */
-+#define SBIDL_RV_2_3 0x10000000 /* version 2.3 */
-+
-+/* sbidhigh */
-+#define SBIDH_RC_MASK 0x000f /* revision code */
-+#define SBIDH_RCE_MASK 0x7000 /* revision code extension field */
-+#define SBIDH_RCE_SHIFT 8
-+#define SBCOREREV(sbidh) \
-+ ((((sbidh) & SBIDH_RCE_MASK) >> SBIDH_RCE_SHIFT) | ((sbidh) & SBIDH_RC_MASK))
-+#define SBIDH_CC_MASK 0x8ff0 /* core code */
-+#define SBIDH_CC_SHIFT 4
-+#define SBIDH_VC_MASK 0xffff0000 /* vendor code */
-+#define SBIDH_VC_SHIFT 16
-+
-+#define SB_COMMIT 0xfd8 /* update buffered registers value */
-+
-+/* vendor codes */
-+#define SB_VEND_BCM 0x4243 /* Broadcom's SB vendor code */
-+
-+/* core codes */
-+#define SB_CC 0x800 /* chipcommon core */
-+#define SB_ILINE20 0x801 /* iline20 core */
-+#define SB_SDRAM 0x803 /* sdram core */
-+#define SB_PCI 0x804 /* pci core */
-+#define SB_MIPS 0x805 /* mips core */
-+#define SB_ENET 0x806 /* enet mac core */
-+#define SB_CODEC 0x807 /* v90 codec core */
-+#define SB_USB 0x808 /* usb 1.1 host/device core */
-+#define SB_ADSL 0x809 /* ADSL core */
-+#define SB_ILINE100 0x80a /* iline100 core */
-+#define SB_IPSEC 0x80b /* ipsec core */
-+#define SB_PCMCIA 0x80d /* pcmcia core */
-+#define SB_SOCRAM 0x80e /* internal memory core */
-+#define SB_MEMC 0x80f /* memc sdram core */
-+#define SB_EXTIF 0x811 /* external interface core */
-+#define SB_D11 0x812 /* 802.11 MAC core */
-+#define SB_MIPS33 0x816 /* mips3302 core */
-+#define SB_USB11H 0x817 /* usb 1.1 host core */
-+#define SB_USB11D 0x818 /* usb 1.1 device core */
-+#define SB_USB20H 0x819 /* usb 2.0 host core */
-+#define SB_USB20D 0x81a /* usb 2.0 device core */
-+#define SB_SDIOH 0x81b /* sdio host core */
-+#define SB_ROBO 0x81c /* roboswitch core */
-+#define SB_ATA100 0x81d /* parallel ATA core */
-+#define SB_SATAXOR 0x81e /* serial ATA & XOR DMA core */
-+#define SB_GIGETH 0x81f /* gigabit ethernet core */
-+#define SB_PCIE 0x820 /* pci express core */
-+#define SB_SRAMC 0x822 /* SRAM controller core */
-+#define SB_MINIMAC 0x823 /* MINI MAC/phy core */
-+
-+#define SB_CC_IDX 0 /* chipc, when present, is always core 0 */
-+
-+/* Not really related to Silicon Backplane, but a couple of software
-+ * conventions for the use the flash space:
-+ */
-+
-+/* Minumum amount of flash we support */
-+#define FLASH_MIN 0x00020000 /* Minimum flash size */
-+
-+/* A boot/binary may have an embedded block that describes its size */
-+#define BISZ_OFFSET 0x3e0 /* At this offset into the binary */
-+#define BISZ_MAGIC 0x4249535a /* Marked with this value: 'BISZ' */
-+#define BISZ_MAGIC_IDX 0 /* Word 0: magic */
-+#define BISZ_TXTST_IDX 1 /* 1: text start */
-+#define BISZ_TXTEND_IDX 2 /* 2: text start */
-+#define BISZ_DATAST_IDX 3 /* 3: text start */
-+#define BISZ_DATAEND_IDX 4 /* 4: text start */
-+#define BISZ_BSSST_IDX 5 /* 5: text start */
-+#define BISZ_BSSEND_IDX 6 /* 6: text start */
-+#define BISZ_SIZE 7 /* descriptor size in 32-bit intergers */
-+
-+#endif /* _SBCONFIG_H */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/sbextif.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbextif.h
---- linux-2.6.16/arch/mips/bcm947xx/include/sbextif.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbextif.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,242 @@
-+/*
-+ * Hardware-specific External Interface I/O core definitions
-+ * for the BCM47xx family of SiliconBackplane-based chips.
-+ *
-+ * The External Interface core supports a total of three external chip selects
-+ * supporting external interfaces. One of the external chip selects is
-+ * used for Flash, one is used for PCMCIA, and the other may be
-+ * programmed to support either a synchronous interface or an
-+ * asynchronous interface. The asynchronous interface can be used to
-+ * support external devices such as UARTs and the BCM2019 Bluetooth
-+ * baseband processor.
-+ * The external interface core also contains 2 on-chip 16550 UARTs, clock
-+ * frequency control, a watchdog interrupt timer, and a GPIO interface.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#ifndef _SBEXTIF_H
-+#define _SBEXTIF_H
-+
-+/* external interface address space */
-+#define EXTIF_PCMCIA_MEMBASE(x) (x)
-+#define EXTIF_PCMCIA_IOBASE(x) ((x) + 0x100000)
-+#define EXTIF_PCMCIA_CFGBASE(x) ((x) + 0x200000)
-+#define EXTIF_CFGIF_BASE(x) ((x) + 0x800000)
-+#define EXTIF_FLASH_BASE(x) ((x) + 0xc00000)
-+
-+/* cpp contortions to concatenate w/arg prescan */
-+#ifndef PAD
-+#define _PADLINE(line) pad ## line
-+#define _XSTR(line) _PADLINE(line)
-+#define PAD _XSTR(__LINE__)
-+#endif /* PAD */
-+
-+/*
-+ * The multiple instances of output and output enable registers
-+ * are present to allow driver software for multiple cores to control
-+ * gpio outputs without needing to share a single register pair.
-+ */
-+struct gpiouser {
-+ uint32 out;
-+ uint32 outen;
-+};
-+#define NGPIOUSER 5
-+
-+typedef volatile struct {
-+ uint32 corecontrol;
-+ uint32 extstatus;
-+ uint32 PAD[2];
-+
-+ /* pcmcia control registers */
-+ uint32 pcmcia_config;
-+ uint32 pcmcia_memwait;
-+ uint32 pcmcia_attrwait;
-+ uint32 pcmcia_iowait;
-+
-+ /* programmable interface control registers */
-+ uint32 prog_config;
-+ uint32 prog_waitcount;
-+
-+ /* flash control registers */
-+ uint32 flash_config;
-+ uint32 flash_waitcount;
-+ uint32 PAD[4];
-+
-+ uint32 watchdog;
-+
-+ /* clock control */
-+ uint32 clockcontrol_n;
-+ uint32 clockcontrol_sb;
-+ uint32 clockcontrol_pci;
-+ uint32 clockcontrol_mii;
-+ uint32 PAD[3];
-+
-+ /* gpio */
-+ uint32 gpioin;
-+ struct gpiouser gpio[NGPIOUSER];
-+ uint32 PAD;
-+ uint32 ejtagouten;
-+ uint32 gpiointpolarity;
-+ uint32 gpiointmask;
-+ uint32 PAD[153];
-+
-+ uint8 uartdata;
-+ uint8 PAD[3];
-+ uint8 uartimer;
-+ uint8 PAD[3];
-+ uint8 uartfcr;
-+ uint8 PAD[3];
-+ uint8 uartlcr;
-+ uint8 PAD[3];
-+ uint8 uartmcr;
-+ uint8 PAD[3];
-+ uint8 uartlsr;
-+ uint8 PAD[3];
-+ uint8 uartmsr;
-+ uint8 PAD[3];
-+ uint8 uartscratch;
-+ uint8 PAD[3];
-+} extifregs_t;
-+
-+/* corecontrol */
-+#define CC_UE (1 << 0) /* uart enable */
-+
-+/* extstatus */
-+#define ES_EM (1 << 0) /* endian mode (ro) */
-+#define ES_EI (1 << 1) /* external interrupt pin (ro) */
-+#define ES_GI (1 << 2) /* gpio interrupt pin (ro) */
-+
-+/* gpio bit mask */
-+#define GPIO_BIT0 (1 << 0)
-+#define GPIO_BIT1 (1 << 1)
-+#define GPIO_BIT2 (1 << 2)
-+#define GPIO_BIT3 (1 << 3)
-+#define GPIO_BIT4 (1 << 4)
-+#define GPIO_BIT5 (1 << 5)
-+#define GPIO_BIT6 (1 << 6)
-+#define GPIO_BIT7 (1 << 7)
-+
-+
-+/* pcmcia/prog/flash_config */
-+#define CF_EN (1 << 0) /* enable */
-+#define CF_EM_MASK 0xe /* mode */
-+#define CF_EM_SHIFT 1
-+#define CF_EM_FLASH 0x0 /* flash/asynchronous mode */
-+#define CF_EM_SYNC 0x2 /* synchronous mode */
-+#define CF_EM_PCMCIA 0x4 /* pcmcia mode */
-+#define CF_DS (1 << 4) /* destsize: 0=8bit, 1=16bit */
-+#define CF_BS (1 << 5) /* byteswap */
-+#define CF_CD_MASK 0xc0 /* clock divider */
-+#define CF_CD_SHIFT 6
-+#define CF_CD_DIV2 0x0 /* backplane/2 */
-+#define CF_CD_DIV3 0x40 /* backplane/3 */
-+#define CF_CD_DIV4 0x80 /* backplane/4 */
-+#define CF_CE (1 << 8) /* clock enable */
-+#define CF_SB (1 << 9) /* size/bytestrobe (synch only) */
-+
-+/* pcmcia_memwait */
-+#define PM_W0_MASK 0x3f /* waitcount0 */
-+#define PM_W1_MASK 0x1f00 /* waitcount1 */
-+#define PM_W1_SHIFT 8
-+#define PM_W2_MASK 0x1f0000 /* waitcount2 */
-+#define PM_W2_SHIFT 16
-+#define PM_W3_MASK 0x1f000000 /* waitcount3 */
-+#define PM_W3_SHIFT 24
-+
-+/* pcmcia_attrwait */
-+#define PA_W0_MASK 0x3f /* waitcount0 */
-+#define PA_W1_MASK 0x1f00 /* waitcount1 */
-+#define PA_W1_SHIFT 8
-+#define PA_W2_MASK 0x1f0000 /* waitcount2 */
-+#define PA_W2_SHIFT 16
-+#define PA_W3_MASK 0x1f000000 /* waitcount3 */
-+#define PA_W3_SHIFT 24
-+
-+/* pcmcia_iowait */
-+#define PI_W0_MASK 0x3f /* waitcount0 */
-+#define PI_W1_MASK 0x1f00 /* waitcount1 */
-+#define PI_W1_SHIFT 8
-+#define PI_W2_MASK 0x1f0000 /* waitcount2 */
-+#define PI_W2_SHIFT 16
-+#define PI_W3_MASK 0x1f000000 /* waitcount3 */
-+#define PI_W3_SHIFT 24
-+
-+/* prog_waitcount */
-+#define PW_W0_MASK 0x0000001f /* waitcount0 */
-+#define PW_W1_MASK 0x00001f00 /* waitcount1 */
-+#define PW_W1_SHIFT 8
-+#define PW_W2_MASK 0x001f0000 /* waitcount2 */
-+#define PW_W2_SHIFT 16
-+#define PW_W3_MASK 0x1f000000 /* waitcount3 */
-+#define PW_W3_SHIFT 24
-+
-+#define PW_W0 0x0000000c
-+#define PW_W1 0x00000a00
-+#define PW_W2 0x00020000
-+#define PW_W3 0x01000000
-+
-+/* flash_waitcount */
-+#define FW_W0_MASK 0x1f /* waitcount0 */
-+#define FW_W1_MASK 0x1f00 /* waitcount1 */
-+#define FW_W1_SHIFT 8
-+#define FW_W2_MASK 0x1f0000 /* waitcount2 */
-+#define FW_W2_SHIFT 16
-+#define FW_W3_MASK 0x1f000000 /* waitcount3 */
-+#define FW_W3_SHIFT 24
-+
-+/* watchdog */
-+#define WATCHDOG_CLOCK 48000000 /* Hz */
-+
-+/* clockcontrol_n */
-+#define CN_N1_MASK 0x3f /* n1 control */
-+#define CN_N2_MASK 0x3f00 /* n2 control */
-+#define CN_N2_SHIFT 8
-+
-+/* clockcontrol_sb/pci/mii */
-+#define CC_M1_MASK 0x3f /* m1 control */
-+#define CC_M2_MASK 0x3f00 /* m2 control */
-+#define CC_M2_SHIFT 8
-+#define CC_M3_MASK 0x3f0000 /* m3 control */
-+#define CC_M3_SHIFT 16
-+#define CC_MC_MASK 0x1f000000 /* mux control */
-+#define CC_MC_SHIFT 24
-+
-+/* Clock control default values */
-+#define CC_DEF_N 0x0009 /* Default values for bcm4710 */
-+#define CC_DEF_100 0x04020011
-+#define CC_DEF_33 0x11030011
-+#define CC_DEF_25 0x11050011
-+
-+/* Clock control values for 125Mhz */
-+#define CC_125_N 0x0802
-+#define CC_125_M 0x04020009
-+#define CC_125_M25 0x11090009
-+#define CC_125_M33 0x11090005
-+
-+/* Clock control magic field values */
-+#define CC_F6_2 0x02 /* A factor of 2 in */
-+#define CC_F6_3 0x03 /* 6-bit fields like */
-+#define CC_F6_4 0x05 /* N1, M1 or M3 */
-+#define CC_F6_5 0x09
-+#define CC_F6_6 0x11
-+#define CC_F6_7 0x21
-+
-+#define CC_F5_BIAS 5 /* 5-bit fields get this added */
-+
-+#define CC_MC_BYPASS 0x08
-+#define CC_MC_M1 0x04
-+#define CC_MC_M1M2 0x02
-+#define CC_MC_M1M2M3 0x01
-+#define CC_MC_M1M3 0x11
-+
-+#define CC_CLOCK_BASE 24000000 /* Half the clock freq. in the 4710 */
-+
-+#endif /* _SBEXTIF_H */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/sbmemc.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbmemc.h
---- linux-2.6.16/arch/mips/bcm947xx/include/sbmemc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbmemc.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,148 @@
-+/*
-+ * BCM47XX Sonics SiliconBackplane DDR/SDRAM controller core hardware definitions.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#ifndef _SBMEMC_H
-+#define _SBMEMC_H
-+
-+#ifdef _LANGUAGE_ASSEMBLY
-+
-+#define MEMC_CONTROL 0x00
-+#define MEMC_CONFIG 0x04
-+#define MEMC_REFRESH 0x08
-+#define MEMC_BISTSTAT 0x0c
-+#define MEMC_MODEBUF 0x10
-+#define MEMC_BKCLS 0x14
-+#define MEMC_PRIORINV 0x18
-+#define MEMC_DRAMTIM 0x1c
-+#define MEMC_INTSTAT 0x20
-+#define MEMC_INTMASK 0x24
-+#define MEMC_INTINFO 0x28
-+#define MEMC_NCDLCTL 0x30
-+#define MEMC_RDNCDLCOR 0x34
-+#define MEMC_WRNCDLCOR 0x38
-+#define MEMC_MISCDLYCTL 0x3c
-+#define MEMC_DQSGATENCDL 0x40
-+#define MEMC_SPARE 0x44
-+#define MEMC_TPADDR 0x48
-+#define MEMC_TPDATA 0x4c
-+#define MEMC_BARRIER 0x50
-+#define MEMC_CORE 0x54
-+
-+
-+#else
-+
-+/* Sonics side: MEMC core registers */
-+typedef volatile struct sbmemcregs {
-+ uint32 control;
-+ uint32 config;
-+ uint32 refresh;
-+ uint32 biststat;
-+ uint32 modebuf;
-+ uint32 bkcls;
-+ uint32 priorinv;
-+ uint32 dramtim;
-+ uint32 intstat;
-+ uint32 intmask;
-+ uint32 intinfo;
-+ uint32 reserved1;
-+ uint32 ncdlctl;
-+ uint32 rdncdlcor;
-+ uint32 wrncdlcor;
-+ uint32 miscdlyctl;
-+ uint32 dqsgatencdl;
-+ uint32 spare;
-+ uint32 tpaddr;
-+ uint32 tpdata;
-+ uint32 barrier;
-+ uint32 core;
-+} sbmemcregs_t;
-+
-+#endif
-+
-+/* MEMC Core Init values (OCP ID 0x80f) */
-+
-+/* For sdr: */
-+#define MEMC_SD_CONFIG_INIT 0x00048000
-+#define MEMC_SD_DRAMTIM2_INIT 0x000754d8
-+#define MEMC_SD_DRAMTIM3_INIT 0x000754da
-+#define MEMC_SD_RDNCDLCOR_INIT 0x00000000
-+#define MEMC_SD_WRNCDLCOR_INIT 0x49351200
-+#define MEMC_SD1_WRNCDLCOR_INIT 0x14500200 /* For corerev 1 (4712) */
-+#define MEMC_SD_MISCDLYCTL_INIT 0x00061c1b
-+#define MEMC_SD1_MISCDLYCTL_INIT 0x00021416 /* For corerev 1 (4712) */
-+#define MEMC_SD_CONTROL_INIT0 0x00000002
-+#define MEMC_SD_CONTROL_INIT1 0x00000008
-+#define MEMC_SD_CONTROL_INIT2 0x00000004
-+#define MEMC_SD_CONTROL_INIT3 0x00000010
-+#define MEMC_SD_CONTROL_INIT4 0x00000001
-+#define MEMC_SD_MODEBUF_INIT 0x00000000
-+#define MEMC_SD_REFRESH_INIT 0x0000840f
-+
-+
-+/* This is for SDRM8X8X4 */
-+#define MEMC_SDR_INIT 0x0008
-+#define MEMC_SDR_MODE 0x32
-+#define MEMC_SDR_NCDL 0x00020032
-+#define MEMC_SDR1_NCDL 0x0002020f /* For corerev 1 (4712) */
-+
-+/* For ddr: */
-+#define MEMC_CONFIG_INIT 0x00048000
-+#define MEMC_DRAMTIM2_INIT 0x000754d8
-+#define MEMC_DRAMTIM25_INIT 0x000754d9
-+#define MEMC_RDNCDLCOR_INIT 0x00000000
-+#define MEMC_RDNCDLCOR_SIMINIT 0xf6f6f6f6 /* For hdl sim */
-+#define MEMC_WRNCDLCOR_INIT 0x49351200
-+#define MEMC_1_WRNCDLCOR_INIT 0x14500200
-+#define MEMC_DQSGATENCDL_INIT 0x00030000
-+#define MEMC_MISCDLYCTL_INIT 0x21061c1b
-+#define MEMC_1_MISCDLYCTL_INIT 0x21021400
-+#define MEMC_NCDLCTL_INIT 0x00002001
-+#define MEMC_CONTROL_INIT0 0x00000002
-+#define MEMC_CONTROL_INIT1 0x00000008
-+#define MEMC_MODEBUF_INIT0 0x00004000
-+#define MEMC_CONTROL_INIT2 0x00000010
-+#define MEMC_MODEBUF_INIT1 0x00000100
-+#define MEMC_CONTROL_INIT3 0x00000010
-+#define MEMC_CONTROL_INIT4 0x00000008
-+#define MEMC_REFRESH_INIT 0x0000840f
-+#define MEMC_CONTROL_INIT5 0x00000004
-+#define MEMC_MODEBUF_INIT2 0x00000000
-+#define MEMC_CONTROL_INIT6 0x00000010
-+#define MEMC_CONTROL_INIT7 0x00000001
-+
-+
-+/* This is for DDRM16X16X2 */
-+#define MEMC_DDR_INIT 0x0009
-+#define MEMC_DDR_MODE 0x62
-+#define MEMC_DDR_NCDL 0x0005050a
-+#define MEMC_DDR1_NCDL 0x00000a0a /* For corerev 1 (4712) */
-+
-+/* mask for sdr/ddr calibration registers */
-+#define MEMC_RDNCDLCOR_RD_MASK 0x000000ff
-+#define MEMC_WRNCDLCOR_WR_MASK 0x000000ff
-+#define MEMC_DQSGATENCDL_G_MASK 0x000000ff
-+
-+/* masks for miscdlyctl registers */
-+#define MEMC_MISC_SM_MASK 0x30000000
-+#define MEMC_MISC_SM_SHIFT 28
-+#define MEMC_MISC_SD_MASK 0x0f000000
-+#define MEMC_MISC_SD_SHIFT 24
-+
-+/* hw threshhold for calculating wr/rd for sdr memc */
-+#define MEMC_CD_THRESHOLD 128
-+
-+/* Low bit of init register says if memc is ddr or sdr */
-+#define MEMC_CONFIG_DDR 0x00000001
-+
-+#endif /* _SBMEMC_H */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/sbmips.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbmips.h
---- linux-2.6.16/arch/mips/bcm947xx/include/sbmips.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbmips.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,62 @@
-+/*
-+ * Broadcom SiliconBackplane MIPS definitions
-+ *
-+ * SB MIPS cores are custom MIPS32 processors with SiliconBackplane
-+ * OCP interfaces. The CP0 processor ID is 0x00024000, where bits
-+ * 23:16 mean Broadcom and bits 15:8 mean a MIPS core with an OCP
-+ * interface. The core revision is stored in the SB ID register in SB
-+ * configuration space.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#ifndef _SBMIPS_H
-+#define _SBMIPS_H
-+
-+#include <mipsinc.h>
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+/* cpp contortions to concatenate w/arg prescan */
-+#ifndef PAD
-+#define _PADLINE(line) pad ## line
-+#define _XSTR(line) _PADLINE(line)
-+#define PAD _XSTR(__LINE__)
-+#endif /* PAD */
-+
-+typedef volatile struct {
-+ uint32 corecontrol;
-+ uint32 PAD[2];
-+ uint32 biststatus;
-+ uint32 PAD[4];
-+ uint32 intstatus;
-+ uint32 intmask;
-+ uint32 timer;
-+} mipsregs_t;
-+
-+extern uint32 sb_flag(sb_t *sbh);
-+extern uint sb_irq(sb_t *sbh);
-+
-+extern void BCMINIT(sb_serial_init)(sb_t *sbh, void (*add)(void *regs, uint irq, uint baud_base, uint reg_shift));
-+
-+extern void *sb_jtagm_init(sb_t *sbh, uint clkd, bool exttap);
-+extern void sb_jtagm_disable(void *h);
-+extern uint32 jtag_rwreg(void *h, uint32 ir, uint32 dr);
-+extern void BCMINIT(sb_mips_init)(sb_t *sbh);
-+extern uint32 BCMINIT(sb_mips_clock)(sb_t *sbh);
-+extern bool BCMINIT(sb_mips_setclock)(sb_t *sbh, uint32 mipsclock, uint32 sbclock, uint32 pciclock);
-+extern void BCMINIT(enable_pfc)(uint32 mode);
-+extern uint32 BCMINIT(sb_memc_get_ncdl)(sb_t *sbh);
-+
-+
-+#endif /* _LANGUAGE_ASSEMBLY */
-+
-+#endif /* _SBMIPS_H */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/sbpci.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbpci.h
---- linux-2.6.16/arch/mips/bcm947xx/include/sbpci.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbpci.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,122 @@
-+/*
-+ * BCM47XX Sonics SiliconBackplane PCI core hardware definitions.
-+ *
-+ * $Id$
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ */
-+
-+#ifndef _SBPCI_H
-+#define _SBPCI_H
-+
-+/* cpp contortions to concatenate w/arg prescan */
-+#ifndef PAD
-+#define _PADLINE(line) pad ## line
-+#define _XSTR(line) _PADLINE(line)
-+#define PAD _XSTR(__LINE__)
-+#endif
-+
-+/* Sonics side: PCI core and host control registers */
-+typedef struct sbpciregs {
-+ uint32 control; /* PCI control */
-+ uint32 PAD[3];
-+ uint32 arbcontrol; /* PCI arbiter control */
-+ uint32 PAD[3];
-+ uint32 intstatus; /* Interrupt status */
-+ uint32 intmask; /* Interrupt mask */
-+ uint32 sbtopcimailbox; /* Sonics to PCI mailbox */
-+ uint32 PAD[9];
-+ uint32 bcastaddr; /* Sonics broadcast address */
-+ uint32 bcastdata; /* Sonics broadcast data */
-+ uint32 PAD[2];
-+ uint32 gpioin; /* ro: gpio input (>=rev2) */
-+ uint32 gpioout; /* rw: gpio output (>=rev2) */
-+ uint32 gpioouten; /* rw: gpio output enable (>= rev2) */
-+ uint32 gpiocontrol; /* rw: gpio control (>= rev2) */
-+ uint32 PAD[36];
-+ uint32 sbtopci0; /* Sonics to PCI translation 0 */
-+ uint32 sbtopci1; /* Sonics to PCI translation 1 */
-+ uint32 sbtopci2; /* Sonics to PCI translation 2 */
-+ uint32 PAD[445];
-+ uint16 sprom[36]; /* SPROM shadow Area */
-+ uint32 PAD[46];
-+} sbpciregs_t;
-+
-+/* PCI control */
-+#define PCI_RST_OE 0x01 /* When set, drives PCI_RESET out to pin */
-+#define PCI_RST 0x02 /* Value driven out to pin */
-+#define PCI_CLK_OE 0x04 /* When set, drives clock as gated by PCI_CLK out to pin */
-+#define PCI_CLK 0x08 /* Gate for clock driven out to pin */
-+
-+/* PCI arbiter control */
-+#define PCI_INT_ARB 0x01 /* When set, use an internal arbiter */
-+#define PCI_EXT_ARB 0x02 /* When set, use an external arbiter */
-+#define PCI_PARKID_MASK 0x06 /* Selects which agent is parked on an idle bus */
-+#define PCI_PARKID_SHIFT 1
-+#define PCI_PARKID_LAST 0 /* Last requestor */
-+#define PCI_PARKID_4710 1 /* 4710 */
-+#define PCI_PARKID_EXTREQ0 2 /* External requestor 0 */
-+#define PCI_PARKID_EXTREQ1 3 /* External requestor 1 */
-+
-+/* Interrupt status/mask */
-+#define PCI_INTA 0x01 /* PCI INTA# is asserted */
-+#define PCI_INTB 0x02 /* PCI INTB# is asserted */
-+#define PCI_SERR 0x04 /* PCI SERR# has been asserted (write one to clear) */
-+#define PCI_PERR 0x08 /* PCI PERR# has been asserted (write one to clear) */
-+#define PCI_PME 0x10 /* PCI PME# is asserted */
-+
-+/* (General) PCI/SB mailbox interrupts, two bits per pci function */
-+#define MAILBOX_F0_0 0x100 /* function 0, int 0 */
-+#define MAILBOX_F0_1 0x200 /* function 0, int 1 */
-+#define MAILBOX_F1_0 0x400 /* function 1, int 0 */
-+#define MAILBOX_F1_1 0x800 /* function 1, int 1 */
-+#define MAILBOX_F2_0 0x1000 /* function 2, int 0 */
-+#define MAILBOX_F2_1 0x2000 /* function 2, int 1 */
-+#define MAILBOX_F3_0 0x4000 /* function 3, int 0 */
-+#define MAILBOX_F3_1 0x8000 /* function 3, int 1 */
-+
-+/* Sonics broadcast address */
-+#define BCAST_ADDR_MASK 0xff /* Broadcast register address */
-+
-+/* Sonics to PCI translation types */
-+#define SBTOPCI0_MASK 0xfc000000
-+#define SBTOPCI1_MASK 0xfc000000
-+#define SBTOPCI2_MASK 0xc0000000
-+#define SBTOPCI_MEM 0
-+#define SBTOPCI_IO 1
-+#define SBTOPCI_CFG0 2
-+#define SBTOPCI_CFG1 3
-+#define SBTOPCI_PREF 0x4 /* prefetch enable */
-+#define SBTOPCI_BURST 0x8 /* burst enable */
-+#define SBTOPCI_RC_MASK 0x30 /* read command (>= rev11) */
-+#define SBTOPCI_RC_READ 0x00 /* memory read */
-+#define SBTOPCI_RC_READLINE 0x10 /* memory read line */
-+#define SBTOPCI_RC_READMULTI 0x20 /* memory read multiple */
-+
-+/* PCI core index in SROM shadow area */
-+#define SRSH_PI_OFFSET 0 /* first word */
-+#define SRSH_PI_MASK 0xf000 /* bit 15:12 */
-+#define SRSH_PI_SHIFT 12 /* bit 15:12 */
-+
-+/* PCI side: Reserved PCI configuration registers (see pcicfg.h) */
-+#define cap_list rsvd_a[0]
-+#define bar0_window dev_dep[0x80 - 0x40]
-+#define bar1_window dev_dep[0x84 - 0x40]
-+#define sprom_control dev_dep[0x88 - 0x40]
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+extern int sbpci_read_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len);
-+extern int sbpci_write_config(sb_t *sbh, uint bus, uint dev, uint func, uint off, void *buf, int len);
-+extern void sbpci_ban(uint16 core);
-+extern int sbpci_init(sb_t *sbh);
-+extern void sbpci_check(sb_t *sbh);
-+
-+#endif /* !_LANGUAGE_ASSEMBLY */
-+
-+#endif /* _SBPCI_H */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/sbsdram.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbsdram.h
---- linux-2.6.16/arch/mips/bcm947xx/include/sbsdram.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbsdram.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,75 @@
-+/*
-+ * BCM47XX Sonics SiliconBackplane SDRAM controller core hardware definitions.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#ifndef _SBSDRAM_H
-+#define _SBSDRAM_H
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+/* Sonics side: SDRAM core registers */
-+typedef volatile struct sbsdramregs {
-+ uint32 initcontrol; /* Generates external SDRAM initialization sequence */
-+ uint32 config; /* Initializes external SDRAM mode register */
-+ uint32 refresh; /* Controls external SDRAM refresh rate */
-+ uint32 pad1;
-+ uint32 pad2;
-+} sbsdramregs_t;
-+
-+#endif
-+
-+/* SDRAM initialization control (initcontrol) register bits */
-+#define SDRAM_CBR 0x0001 /* Writing 1 generates refresh cycle and toggles bit */
-+#define SDRAM_PRE 0x0002 /* Writing 1 generates precharge cycle and toggles bit */
-+#define SDRAM_MRS 0x0004 /* Writing 1 generates mode register select cycle and toggles bit */
-+#define SDRAM_EN 0x0008 /* When set, enables access to SDRAM */
-+#define SDRAM_16Mb 0x0000 /* Use 16 Megabit SDRAM */
-+#define SDRAM_64Mb 0x0010 /* Use 64 Megabit SDRAM */
-+#define SDRAM_128Mb 0x0020 /* Use 128 Megabit SDRAM */
-+#define SDRAM_RSVMb 0x0030 /* Use special SDRAM */
-+#define SDRAM_RST 0x0080 /* Writing 1 causes soft reset of controller */
-+#define SDRAM_SELFREF 0x0100 /* Writing 1 enables self refresh mode */
-+#define SDRAM_PWRDOWN 0x0200 /* Writing 1 causes controller to power down */
-+#define SDRAM_32BIT 0x0400 /* When set, indicates 32 bit SDRAM interface */
-+#define SDRAM_9BITCOL 0x0800 /* When set, indicates 9 bit column */
-+
-+/* SDRAM configuration (config) register bits */
-+#define SDRAM_BURSTFULL 0x0000 /* Use full page bursts */
-+#define SDRAM_BURST8 0x0001 /* Use burst of 8 */
-+#define SDRAM_BURST4 0x0002 /* Use burst of 4 */
-+#define SDRAM_BURST2 0x0003 /* Use burst of 2 */
-+#define SDRAM_CAS3 0x0000 /* Use CAS latency of 3 */
-+#define SDRAM_CAS2 0x0004 /* Use CAS latency of 2 */
-+
-+/* SDRAM refresh control (refresh) register bits */
-+#define SDRAM_REF(p) (((p)&0xff) | SDRAM_REF_EN) /* Refresh period */
-+#define SDRAM_REF_EN 0x8000 /* Writing 1 enables periodic refresh */
-+
-+/* SDRAM Core default Init values (OCP ID 0x803) */
-+#define SDRAM_INIT MEM4MX16X2
-+#define SDRAM_CONFIG SDRAM_BURSTFULL
-+#define SDRAM_REFRESH SDRAM_REF(0x40)
-+
-+#define MEM1MX16 0x009 /* 2 MB */
-+#define MEM1MX16X2 0x409 /* 4 MB */
-+#define MEM2MX8X2 0x809 /* 4 MB */
-+#define MEM2MX8X4 0xc09 /* 8 MB */
-+#define MEM2MX32 0x439 /* 8 MB */
-+#define MEM4MX16 0x019 /* 8 MB */
-+#define MEM4MX16X2 0x419 /* 16 MB */
-+#define MEM8MX8X2 0x819 /* 16 MB */
-+#define MEM8MX16 0x829 /* 16 MB */
-+#define MEM4MX32 0x429 /* 16 MB */
-+#define MEM8MX8X4 0xc19 /* 32 MB */
-+#define MEM8MX16X2 0xc29 /* 32 MB */
-+
-+#endif /* _SBSDRAM_H */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/sbutils.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbutils.h
---- linux-2.6.16/arch/mips/bcm947xx/include/sbutils.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/sbutils.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,136 @@
-+/*
-+ * Misc utility routines for accessing chip-specific features
-+ * of Broadcom HNBU SiliconBackplane-based chips.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#ifndef _sbutils_h_
-+#define _sbutils_h_
-+
-+/*
-+ * Datastructure to export all chip specific common variables
-+ * public (read-only) portion of sbutils handle returned by
-+ * sb_attach()/sb_kattach()
-+*/
-+
-+struct sb_pub {
-+
-+ uint bustype; /* SB_BUS, PCI_BUS */
-+ uint buscoretype; /* SB_PCI, SB_PCMCIA, SB_PCIE*/
-+ uint buscorerev; /* buscore rev */
-+ uint buscoreidx; /* buscore index */
-+ int ccrev; /* chip common core rev */
-+ uint boardtype; /* board type */
-+ uint boardvendor; /* board vendor */
-+ uint chip; /* chip number */
-+ uint chiprev; /* chip revision */
-+ uint chippkg; /* chip package option */
-+ uint sonicsrev; /* sonics backplane rev */
-+};
-+
-+typedef const struct sb_pub sb_t;
-+
-+/*
-+ * Many of the routines below take an 'sbh' handle as their first arg.
-+ * Allocate this by calling sb_attach(). Free it by calling sb_detach().
-+ * At any one time, the sbh is logically focused on one particular sb core
-+ * (the "current core").
-+ * Use sb_setcore() or sb_setcoreidx() to change the association to another core.
-+ */
-+
-+/* exported externs */
-+extern sb_t * BCMINIT(sb_attach)(uint pcidev, osl_t *osh, void *regs, uint bustype, void *sdh, char **vars, int *varsz);
-+extern sb_t * BCMINIT(sb_kattach)(void);
-+extern void sb_detach(sb_t *sbh);
-+extern uint BCMINIT(sb_chip)(sb_t *sbh);
-+extern uint BCMINIT(sb_chiprev)(sb_t *sbh);
-+extern uint BCMINIT(sb_chipcrev)(sb_t *sbh);
-+extern uint BCMINIT(sb_chippkg)(sb_t *sbh);
-+extern uint BCMINIT(sb_pcirev)(sb_t *sbh);
-+extern bool BCMINIT(sb_war16165)(sb_t *sbh);
-+extern uint BCMINIT(sb_boardvendor)(sb_t *sbh);
-+extern uint BCMINIT(sb_boardtype)(sb_t *sbh);
-+extern uint sb_bus(sb_t *sbh);
-+extern uint sb_buscoretype(sb_t *sbh);
-+extern uint sb_buscorerev(sb_t *sbh);
-+extern uint sb_corelist(sb_t *sbh, uint coreid[]);
-+extern uint sb_coreid(sb_t *sbh);
-+extern uint sb_coreidx(sb_t *sbh);
-+extern uint sb_coreunit(sb_t *sbh);
-+extern uint sb_corevendor(sb_t *sbh);
-+extern uint sb_corerev(sb_t *sbh);
-+extern void *sb_osh(sb_t *sbh);
-+extern void *sb_coreregs(sb_t *sbh);
-+extern uint32 sb_coreflags(sb_t *sbh, uint32 mask, uint32 val);
-+extern uint32 sb_coreflagshi(sb_t *sbh, uint32 mask, uint32 val);
-+extern bool sb_iscoreup(sb_t *sbh);
-+extern void *sb_setcoreidx(sb_t *sbh, uint coreidx);
-+extern void *sb_setcore(sb_t *sbh, uint coreid, uint coreunit);
-+extern int sb_corebist(sb_t *sbh, uint coreid, uint coreunit);
-+extern void sb_commit(sb_t *sbh);
-+extern uint32 sb_base(uint32 admatch);
-+extern uint32 sb_size(uint32 admatch);
-+extern void sb_core_reset(sb_t *sbh, uint32 bits);
-+extern void sb_core_tofixup(sb_t *sbh);
-+extern void sb_core_disable(sb_t *sbh, uint32 bits);
-+extern uint32 sb_clock_rate(uint32 pll_type, uint32 n, uint32 m);
-+extern uint32 sb_clock(sb_t *sbh);
-+extern void sb_pci_setup(sb_t *sbh, uint coremask);
-+extern void sb_watchdog(sb_t *sbh, uint ticks);
-+extern void *sb_gpiosetcore(sb_t *sbh);
-+extern uint32 sb_gpiocontrol(sb_t *sbh, uint32 mask, uint32 val, uint8 priority);
-+extern uint32 sb_gpioouten(sb_t *sbh, uint32 mask, uint32 val, uint8 priority);
-+extern uint32 sb_gpioout(sb_t *sbh, uint32 mask, uint32 val, uint8 priority);
-+extern uint32 sb_gpioin(sb_t *sbh);
-+extern uint32 sb_gpiointpolarity(sb_t *sbh, uint32 mask, uint32 val, uint8 priority);
-+extern uint32 sb_gpiointmask(sb_t *sbh, uint32 mask, uint32 val, uint8 priority);
-+extern uint32 sb_gpioled(sb_t *sbh, uint32 mask, uint32 val);
-+extern uint32 sb_gpioreserve(sb_t *sbh, uint32 gpio_num, uint8 priority);
-+extern uint32 sb_gpiorelease(sb_t *sbh, uint32 gpio_num, uint8 priority);
-+
-+extern void sb_clkctl_init(sb_t *sbh);
-+extern uint16 sb_clkctl_fast_pwrup_delay(sb_t *sbh);
-+extern bool sb_clkctl_clk(sb_t *sbh, uint mode);
-+extern int sb_clkctl_xtal(sb_t *sbh, uint what, bool on);
-+extern void sb_register_intr_callback(sb_t *sbh, void *intrsoff_fn,
-+ void *intrsrestore_fn, void *intrsenabled_fn, void *intr_arg);
-+extern uint32 sb_set_initiator_to(sb_t *sbh, uint32 to);
-+extern void sb_corepciid(sb_t *sbh, uint16 *pcivendor, uint16 *pcidevice,
-+ uint8 *pciclass, uint8 *pcisubclass, uint8 *pciprogif);
-+extern uint32 sb_gpiotimerval(sb_t *sbh, uint32 mask, uint32 val);
-+
-+
-+
-+/*
-+* Build device path. Path size must be >= SB_DEVPATH_BUFSZ.
-+* The returned path is NULL terminated and has trailing '/'.
-+* Return 0 on success, nonzero otherwise.
-+*/
-+extern int sb_devpath(sb_t *sbh, char *path, int size);
-+
-+/* clkctl xtal what flags */
-+#define XTAL 0x1 /* primary crystal oscillator (2050) */
-+#define PLL 0x2 /* main chip pll */
-+
-+/* clkctl clk mode */
-+#define CLK_FAST 0 /* force fast (pll) clock */
-+#define CLK_DYNAMIC 2 /* enable dynamic clock control */
-+
-+
-+/* GPIO usage priorities */
-+#define GPIO_DRV_PRIORITY 0
-+#define GPIO_APP_PRIORITY 1
-+
-+/* device path */
-+#define SB_DEVPATH_BUFSZ 16 /* min buffer size in bytes */
-+
-+#endif /* _sbutils_h_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/sflash.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/sflash.h
---- linux-2.6.16/arch/mips/bcm947xx/include/sflash.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/sflash.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,36 @@
-+/*
-+ * Broadcom SiliconBackplane chipcommon serial flash interface
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#ifndef _sflash_h_
-+#define _sflash_h_
-+
-+#include <typedefs.h>
-+#include <sbchipc.h>
-+
-+struct sflash {
-+ uint blocksize; /* Block size */
-+ uint numblocks; /* Number of blocks */
-+ uint32 type; /* Type */
-+ uint size; /* Total size in bytes */
-+};
-+
-+/* Utility functions */
-+extern int sflash_poll(chipcregs_t *cc, uint offset);
-+extern int sflash_read(chipcregs_t *cc, uint offset, uint len, uchar *buf);
-+extern int sflash_write(chipcregs_t *cc, uint offset, uint len, const uchar *buf);
-+extern int sflash_erase(chipcregs_t *cc, uint offset);
-+extern int sflash_commit(chipcregs_t *cc, uint offset, uint len, const uchar *buf);
-+extern struct sflash * sflash_init(chipcregs_t *cc);
-+
-+#endif /* _sflash_h_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/trxhdr.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/trxhdr.h
---- linux-2.6.16/arch/mips/bcm947xx/include/trxhdr.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/trxhdr.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,33 @@
-+/*
-+ * TRX image file header format.
-+ *
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id$
-+ */
-+
-+#include <typedefs.h>
-+
-+#define TRX_MAGIC 0x30524448 /* "HDR0" */
-+#define TRX_VERSION 1
-+#define TRX_MAX_LEN 0x3A0000
-+#define TRX_NO_HEADER 1 /* Do not write TRX header */
-+#define TRX_GZ_FILES 0x2 /* Contains up to TRX_MAX_OFFSET individual gzip files */
-+#define TRX_MAX_OFFSET 3
-+
-+struct trx_header {
-+ uint32 magic; /* "HDR0" */
-+ uint32 len; /* Length of file including header */
-+ uint32 crc32; /* 32-bit CRC from flag_version to end of file */
-+ uint32 flag_version; /* 0:15 flags, 16:31 version */
-+ uint32 offsets[TRX_MAX_OFFSET]; /* Offsets of partitions from start of header */
-+};
-+
-+/* Compatibility */
-+typedef struct trx_header TRXHDR, *PTRXHDR;
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/include/typedefs.h linux-2.6.16-owrt/arch/mips/bcm947xx/include/typedefs.h
---- linux-2.6.16/arch/mips/bcm947xx/include/typedefs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/include/typedefs.h 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,326 @@
-+/*
-+ * Copyright 2005, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id$
-+ */
-+
-+#ifndef _TYPEDEFS_H_
-+#define _TYPEDEFS_H_
-+
-+
-+/* Define 'SITE_TYPEDEFS' in the compile to include a site specific
-+ * typedef file "site_typedefs.h".
-+ *
-+ * If 'SITE_TYPEDEFS' is not defined, then the "Inferred Typedefs"
-+ * section of this file makes inferences about the compile environment
-+ * based on defined symbols and possibly compiler pragmas.
-+ *
-+ * Following these two sections is the "Default Typedefs"
-+ * section. This section is only prcessed if 'USE_TYPEDEF_DEFAULTS' is
-+ * defined. This section has a default set of typedefs and a few
-+ * proprocessor symbols (TRUE, FALSE, NULL, ...).
-+ */
-+
-+#ifdef SITE_TYPEDEFS
-+
-+/*******************************************************************************
-+ * Site Specific Typedefs
-+ *******************************************************************************/
-+
-+#include "site_typedefs.h"
-+
-+#else
-+
-+/*******************************************************************************
-+ * Inferred Typedefs
-+ *******************************************************************************/
-+
-+/* Infer the compile environment based on preprocessor symbols and pramas.
-+ * Override type definitions as needed, and include configuration dependent
-+ * header files to define types.
-+ */
-+
-+#ifdef __cplusplus
-+
-+#define TYPEDEF_BOOL
-+#ifndef FALSE
-+#define FALSE false
-+#endif
-+#ifndef TRUE
-+#define TRUE true
-+#endif
-+
-+#else /* ! __cplusplus */
-+
-+#if defined(_WIN32)
-+
-+#define TYPEDEF_BOOL
-+typedef unsigned char bool; /* consistent w/BOOL */
-+
-+#endif /* _WIN32 */
-+
-+#endif /* ! __cplusplus */
-+
-+/* use the Windows ULONG_PTR type when compiling for 64 bit */
-+#if defined(_WIN64)
-+#include <basetsd.h>
-+#define TYPEDEF_UINTPTR
-+typedef ULONG_PTR uintptr;
-+#endif
-+
-+#ifdef _HNDRTE_
-+typedef long unsigned int size_t;
-+#endif
-+
-+#ifdef _MSC_VER /* Microsoft C */
-+#define TYPEDEF_INT64
-+#define TYPEDEF_UINT64
-+typedef signed __int64 int64;
-+typedef unsigned __int64 uint64;
-+#endif
-+
-+#if defined(MACOSX) && defined(KERNEL)
-+#define TYPEDEF_BOOL
-+#endif
-+
-+
-+#if defined(linux)
-+#define TYPEDEF_UINT
-+#define TYPEDEF_USHORT
-+#define TYPEDEF_ULONG
-+#endif
-+
-+#if !defined(linux) && !defined(_WIN32) && !defined(PMON) && !defined(_CFE_) && !defined(_HNDRTE_) && !defined(_MINOSL_)
-+#define TYPEDEF_UINT
-+#define TYPEDEF_USHORT
-+#endif
-+
-+
-+/* Do not support the (u)int64 types with strict ansi for GNU C */
-+#if defined(__GNUC__) && defined(__STRICT_ANSI__)
-+#define TYPEDEF_INT64
-+#define TYPEDEF_UINT64
-+#endif
-+
-+/* ICL accepts unsigned 64 bit type only, and complains in ANSI mode
-+ * for singned or unsigned */
-+#if defined(__ICL)
-+
-+#define TYPEDEF_INT64
-+
-+#if defined(__STDC__)
-+#define TYPEDEF_UINT64
-+#endif
-+
-+#endif /* __ICL */
-+
-+
-+#if !defined(_WIN32) && !defined(PMON) && !defined(_CFE_) && !defined(_HNDRTE_) && !defined(_MINOSL_)
-+
-+/* pick up ushort & uint from standard types.h */
-+#if defined(linux) && defined(__KERNEL__)
-+
-+#include <linux/types.h> /* sys/types.h and linux/types.h are oil and water */
-+
-+#else
-+
-+#include <sys/types.h>
-+
-+#endif
-+
-+#endif /* !_WIN32 && !PMON && !_CFE_ && !_HNDRTE_ && !_MINOSL_ */
-+
-+#if defined(MACOSX) && defined(KERNEL)
-+#include <IOKit/IOTypes.h>
-+#endif
-+
-+
-+/* use the default typedefs in the next section of this file */
-+#define USE_TYPEDEF_DEFAULTS
-+
-+#endif /* SITE_TYPEDEFS */
-+
-+
-+/*******************************************************************************
-+ * Default Typedefs
-+ *******************************************************************************/
-+
-+#ifdef USE_TYPEDEF_DEFAULTS
-+#undef USE_TYPEDEF_DEFAULTS
-+
-+#ifndef TYPEDEF_BOOL
-+typedef /*@abstract@*/ unsigned char bool;
-+#endif
-+
-+/*----------------------- define uchar, ushort, uint, ulong ------------------*/
-+
-+#ifndef TYPEDEF_UCHAR
-+typedef unsigned char uchar;
-+#endif
-+
-+#ifndef TYPEDEF_USHORT
-+typedef unsigned short ushort;
-+#endif
-+
-+#ifndef TYPEDEF_UINT
-+typedef unsigned int uint;
-+#endif
-+
-+#ifndef TYPEDEF_ULONG
-+typedef unsigned long ulong;
-+#endif
-+
-+/*----------------------- define [u]int8/16/32/64, uintptr --------------------*/
-+
-+#ifndef TYPEDEF_UINT8
-+typedef unsigned char uint8;
-+#endif
-+
-+#ifndef TYPEDEF_UINT16
-+typedef unsigned short uint16;
-+#endif
-+
-+#ifndef TYPEDEF_UINT32
-+typedef unsigned int uint32;
-+#endif
-+
-+#ifndef TYPEDEF_UINT64
-+typedef unsigned long long uint64;
-+#endif
-+
-+#ifndef TYPEDEF_UINTPTR
-+typedef unsigned int uintptr;
-+#endif
-+
-+#ifndef TYPEDEF_INT8
-+typedef signed char int8;
-+#endif
-+
-+#ifndef TYPEDEF_INT16
-+typedef signed short int16;
-+#endif
-+
-+#ifndef TYPEDEF_INT32
-+typedef signed int int32;
-+#endif
-+
-+#ifndef TYPEDEF_INT64
-+typedef signed long long int64;
-+#endif
-+
-+/*----------------------- define float32/64, float_t -----------------------*/
-+
-+#ifndef TYPEDEF_FLOAT32
-+typedef float float32;
-+#endif
-+
-+#ifndef TYPEDEF_FLOAT64
-+typedef double float64;
-+#endif
-+
-+/*
-+ * abstracted floating point type allows for compile time selection of
-+ * single or double precision arithmetic. Compiling with -DFLOAT32
-+ * selects single precision; the default is double precision.
-+ */
-+
-+#ifndef TYPEDEF_FLOAT_T
-+
-+#if defined(FLOAT32)
-+typedef float32 float_t;
-+#else /* default to double precision floating point */
-+typedef float64 float_t;
-+#endif
-+
-+#endif /* TYPEDEF_FLOAT_T */
-+
-+/*----------------------- define macro values -----------------------------*/
-+
-+#ifndef FALSE
-+#define FALSE 0
-+#endif
-+
-+#ifndef TRUE
-+#define TRUE 1
-+#endif
-+
-+#ifndef NULL
-+#define NULL 0
-+#endif
-+
-+#ifndef OFF
-+#define OFF 0
-+#endif
-+
-+#ifndef ON
-+#define ON 1
-+#endif
-+
-+#define AUTO (-1)
-+
-+/* Reclaiming text and data :
-+ The following macros specify special linker sections that can be reclaimed
-+ after a system is considered 'up'.
-+ */
-+#if defined(__GNUC__) && defined(BCMRECLAIM)
-+extern bool bcmreclaimed;
-+#define BCMINITDATA(_data) __attribute__ ((__section__ (".dataini." #_data))) _data##_ini
-+#define BCMINITFN(_fn) __attribute__ ((__section__ (".textini." #_fn))) _fn##_ini
-+#define BCMINIT(_id) _id##_ini
-+#else
-+#define BCMINITDATA(_data) _data
-+#define BCMINITFN(_fn) _fn
-+#define BCMINIT(_id) _id
-+#define bcmreclaimed 0
-+#endif
-+
-+/*----------------------- define PTRSZ, INLINE ----------------------------*/
-+
-+#ifndef PTRSZ
-+#define PTRSZ sizeof (char*)
-+#endif
-+
-+#ifndef INLINE
-+
-+#ifdef _MSC_VER
-+
-+#define INLINE __inline
-+
-+#elif __GNUC__
-+
-+#define INLINE __inline__
-+
-+#else
-+
-+#define INLINE
-+
-+#endif /* _MSC_VER */
-+
-+#endif /* INLINE */
-+
-+#undef TYPEDEF_BOOL
-+#undef TYPEDEF_UCHAR
-+#undef TYPEDEF_USHORT
-+#undef TYPEDEF_UINT
-+#undef TYPEDEF_ULONG
-+#undef TYPEDEF_UINT8
-+#undef TYPEDEF_UINT16
-+#undef TYPEDEF_UINT32
-+#undef TYPEDEF_UINT64
-+#undef TYPEDEF_UINTPTR
-+#undef TYPEDEF_INT8
-+#undef TYPEDEF_INT16
-+#undef TYPEDEF_INT32
-+#undef TYPEDEF_INT64
-+#undef TYPEDEF_FLOAT32
-+#undef TYPEDEF_FLOAT64
-+#undef TYPEDEF_FLOAT_T
-+
-+#endif /* USE_TYPEDEF_DEFAULTS */
-+
-+#endif /* _TYPEDEFS_H_ */
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/int-handler.S linux-2.6.16-owrt/arch/mips/bcm947xx/int-handler.S
---- linux-2.6.16/arch/mips/bcm947xx/int-handler.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/int-handler.S 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,48 @@
-+/*
-+ * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.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 SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <asm/asm.h>
-+#include <asm/mipsregs.h>
-+#include <asm/regdef.h>
-+#include <asm/stackframe.h>
-+
-+ .text
-+ .set noreorder
-+ .set noat
-+ .align 5
-+
-+ NESTED(bcm47xx_irq_handler, PT_SIZE, sp)
-+ SAVE_ALL
-+ CLI
-+
-+ .set at
-+ .set noreorder
-+
-+ jal bcm47xx_irq_dispatch
-+ move a0, sp
-+
-+ j ret_from_irq
-+ nop
-+
-+ END(bcm47xx_irq_handler)
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/irq.c linux-2.6.16-owrt/arch/mips/bcm947xx/irq.c
---- linux-2.6.16/arch/mips/bcm947xx/irq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/irq.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,67 @@
-+/*
-+ * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.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 SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/errno.h>
-+#include <linux/init.h>
-+#include <linux/interrupt.h>
-+#include <linux/irq.h>
-+#include <linux/module.h>
-+#include <linux/smp.h>
-+#include <linux/types.h>
-+
-+#include <asm/cpu.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+#include <asm/irq_cpu.h>
-+
-+extern asmlinkage void bcm47xx_irq_handler(void);
-+
-+void bcm47xx_irq_dispatch(struct pt_regs *regs)
-+{
-+ u32 cause;
-+
-+ cause = read_c0_cause() & read_c0_status() & CAUSEF_IP;
-+
-+ clear_c0_status(cause);
-+
-+ if (cause & CAUSEF_IP7)
-+ do_IRQ(7, regs);
-+ if (cause & CAUSEF_IP2)
-+ do_IRQ(2, regs);
-+ if (cause & CAUSEF_IP3)
-+ do_IRQ(3, regs);
-+ if (cause & CAUSEF_IP4)
-+ do_IRQ(4, regs);
-+ if (cause & CAUSEF_IP5)
-+ do_IRQ(5, regs);
-+ if (cause & CAUSEF_IP6)
-+ do_IRQ(6, regs);
-+}
-+
-+void __init arch_init_irq(void)
-+{
-+ set_except_vector(0, bcm47xx_irq_handler);
-+ mips_cpu_irq_init(0);
-+}
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/Makefile linux-2.6.16-owrt/arch/mips/bcm947xx/Makefile
---- linux-2.6.16/arch/mips/bcm947xx/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/Makefile 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,6 @@
-+#
-+# Makefile for the BCM47xx specific kernel interface routines
-+# under Linux.
-+#
-+
-+obj-y := irq.o int-handler.o prom.o setup.o time.o pci.o
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/pci.c linux-2.6.16-owrt/arch/mips/bcm947xx/pci.c
---- linux-2.6.16/arch/mips/bcm947xx/pci.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/pci.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,215 @@
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/pci.h>
-+#include <linux/types.h>
-+
-+#include <asm/cpu.h>
-+#include <asm/io.h>
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <sbutils.h>
-+#include <sbmips.h>
-+#include <sbconfig.h>
-+#include <sbpci.h>
-+#include <bcmdevs.h>
-+#include <pcicfg.h>
-+
-+extern sb_t *sbh;
-+extern spinlock_t sbh_lock;
-+
-+
-+static int
-+sb_pci_read_config(struct pci_bus *bus, unsigned int devfn,
-+ int reg, int size, u32 *val)
-+{
-+ int ret;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ ret = sbpci_read_config(sbh, bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), reg, val, size);
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+
-+ return ret ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
-+}
-+
-+static int
-+sb_pci_write_config(struct pci_bus *bus, unsigned int devfn,
-+ int reg, int size, u32 val)
-+{
-+ int ret;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ ret = sbpci_write_config(sbh, bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), reg, &val, size);
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+
-+ return ret ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
-+}
-+
-+
-+static struct pci_ops sb_pci_ops = {
-+ .read = sb_pci_read_config,
-+ .write = sb_pci_write_config,
-+};
-+
-+static struct resource sb_pci_mem_resource = {
-+ .name = "SB PCI Memory resources",
-+ .start = SB_ENUM_BASE,
-+ .end = SB_ENUM_LIM - 1,
-+ .flags = IORESOURCE_MEM,
-+};
-+
-+static struct resource sb_pci_io_resource = {
-+ .name = "SB PCI I/O resources",
-+ .start = 0x000,
-+ .end = 0x0FF,
-+ .flags = IORESOURCE_IO,
-+};
-+
-+static struct pci_controller bcm47xx_sb_pci_controller = {
-+ .pci_ops = &sb_pci_ops,
-+ .mem_resource = &sb_pci_mem_resource,
-+ .io_resource = &sb_pci_io_resource,
-+};
-+
-+static struct resource ext_pci_mem_resource = {
-+ .name = "Ext PCI Memory resources",
-+ .start = 0x40000000,
-+ .end = 0x7fffffff,
-+ .flags = IORESOURCE_MEM,
-+};
-+
-+static struct resource ext_pci_io_resource = {
-+ .name = "Ext PCI I/O resources",
-+ .start = 0x100,
-+ .end = 0x1FF,
-+ .flags = IORESOURCE_IO,
-+};
-+
-+static struct pci_controller bcm47xx_ext_pci_controller = {
-+ .pci_ops = &sb_pci_ops,
-+ .io_resource = &ext_pci_io_resource,
-+ .mem_resource = &ext_pci_mem_resource,
-+ .mem_offset = 0x24000000,
-+};
-+
-+void bcm47xx_pci_init(void)
-+{
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ sbpci_init(sbh);
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+
-+ set_io_port_base((unsigned long) ioremap_nocache(SB_PCI_MEM, 0x04000000));
-+
-+ register_pci_controller(&bcm47xx_sb_pci_controller);
-+ register_pci_controller(&bcm47xx_ext_pci_controller);
-+}
-+
-+int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
-+{
-+ u8 irq;
-+
-+ if (dev->bus->number == 1)
-+ return 2;
-+
-+ pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
-+ return irq + 2;
-+}
-+
-+u32 pci_iobase = 0x100;
-+u32 pci_membase = SB_PCI_DMA;
-+
-+static void bcm47xx_fixup_device(struct pci_dev *d)
-+{
-+ struct resource *res;
-+ int pos, size;
-+ u32 *base;
-+
-+ if (d->bus->number == 0)
-+ return;
-+
-+ printk("PCI: Fixing up device %s\n", pci_name(d));
-+
-+ /* Fix up resource bases */
-+ for (pos = 0; pos < 6; pos++) {
-+ res = &d->resource[pos];
-+ base = ((res->flags & IORESOURCE_IO) ? &pci_iobase : &pci_membase);
-+ if (res->end) {
-+ size = res->end - res->start + 1;
-+ if (*base & (size - 1))
-+ *base = (*base + size) & ~(size - 1);
-+ res->start = *base;
-+ res->end = res->start + size - 1;
-+ *base += size;
-+ pci_write_config_dword(d, PCI_BASE_ADDRESS_0 + (pos << 2), res->start);
-+ }
-+ /* Fix up PCI bridge BAR0 only */
-+ if (d->bus->number == 1 && PCI_SLOT(d->devfn) == 0)
-+ break;
-+ }
-+ /* Fix up interrupt lines */
-+ if (pci_find_device(VENDOR_BROADCOM, SB_PCI, NULL))
-+ d->irq = (pci_find_device(VENDOR_BROADCOM, SB_PCI, NULL))->irq;
-+ pci_write_config_byte(d, PCI_INTERRUPT_LINE, d->irq);
-+}
-+
-+
-+static void bcm47xx_fixup_bridge(struct pci_dev *dev)
-+{
-+ if (dev->bus->number != 1 || PCI_SLOT(dev->devfn) != 0)
-+ return;
-+
-+ printk("PCI: fixing up bridge\n");
-+
-+ /* Enable PCI bridge bus mastering and memory space */
-+ pci_set_master(dev);
-+ pcibios_enable_device(dev, ~0);
-+
-+ /* Enable PCI bridge BAR1 prefetch and burst */
-+ pci_write_config_dword(dev, PCI_BAR1_CONTROL, 3);
-+}
-+
-+/* Do platform specific device initialization at pci_enable_device() time */
-+int pcibios_plat_dev_init(struct pci_dev *dev)
-+{
-+ uint coreidx;
-+ unsigned long flags;
-+
-+ bcm47xx_fixup_device(dev);
-+
-+ /* These cores come out of reset enabled */
-+ if ((dev->bus->number != 0) ||
-+ (dev->device == SB_MIPS) ||
-+ (dev->device == SB_MIPS33) ||
-+ (dev->device == SB_EXTIF) ||
-+ (dev->device == SB_CC))
-+ return 0;
-+
-+ /* Do a core reset */
-+ spin_lock_irqsave(&sbh_lock, flags);
-+ coreidx = sb_coreidx(sbh);
-+ if (sb_setcoreidx(sbh, PCI_SLOT(dev->devfn)) && (sb_coreid(sbh) == SB_USB)) {
-+ /*
-+ * The USB core requires a special bit to be set during core
-+ * reset to enable host (OHCI) mode. Resetting the SB core in
-+ * pcibios_enable_device() is a hack for compatibility with
-+ * vanilla usb-ohci so that it does not have to know about
-+ * SB. A driver that wants to use the USB core in device mode
-+ * should know about SB and should reset the bit back to 0
-+ * after calling pcibios_enable_device().
-+ */
-+ sb_core_disable(sbh, sb_coreflags(sbh, 0, 0));
-+ sb_core_reset(sbh, 1 << 29);
-+ } else {
-+ sb_core_reset(sbh, 0);
-+ }
-+ sb_setcoreidx(sbh, coreidx);
-+ spin_unlock_irqrestore(&sbh_lock, flags);
-+
-+ return 0;
-+}
-+
-+DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, bcm47xx_fixup_bridge);
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/prom.c linux-2.6.16-owrt/arch/mips/bcm947xx/prom.c
---- linux-2.6.16/arch/mips/bcm947xx/prom.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/prom.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,59 @@
-+/*
-+ * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.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 SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/mm.h>
-+#include <linux/sched.h>
-+#include <linux/bootmem.h>
-+
-+#include <asm/addrspace.h>
-+#include <asm/bootinfo.h>
-+#include <asm/pmon.h>
-+
-+const char *get_system_type(void)
-+{
-+ return "Broadcom BCM47xx";
-+}
-+
-+void __init prom_init(void)
-+{
-+ unsigned long mem;
-+
-+ mips_machgroup = MACH_GROUP_BRCM;
-+ mips_machtype = MACH_BCM47XX;
-+
-+ /* Figure out memory size by finding aliases */
-+ for (mem = (1 << 20); mem < (128 << 20); mem += (1 << 20)) {
-+ if (*(unsigned long *)((unsigned long)(prom_init) + mem) ==
-+ *(unsigned long *)(prom_init))
-+ break;
-+ }
-+
-+ add_memory_region(0, mem, BOOT_MEM_RAM);
-+}
-+
-+unsigned long __init prom_free_prom_memory(void)
-+{
-+ return 0;
-+}
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/setup.c linux-2.6.16-owrt/arch/mips/bcm947xx/setup.c
---- linux-2.6.16/arch/mips/bcm947xx/setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/setup.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,158 @@
-+/*
-+ * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.org)
-+ * Copyright (C) 2005 Waldemar Brodkorb <wbx@openwrt.org>
-+ * Copyright (C) 2005 Felix Fietkau <nbd@openwrt.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 SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/types.h>
-+#include <linux/tty.h>
-+#include <linux/serial.h>
-+#include <linux/serial_core.h>
-+#include <linux/serial_reg.h>
-+#include <asm/bootinfo.h>
-+#include <asm/time.h>
-+#include <asm/reboot.h>
-+#include <linux/pm.h>
-+
-+#include <typedefs.h>
-+#include <osl.h>
-+#include <sbutils.h>
-+#include <sbmips.h>
-+#include <sbpci.h>
-+#include <sbconfig.h>
-+#include <bcmdevs.h>
-+#include <bcmutils.h>
-+#include <bcmnvram.h>
-+
-+extern void bcm47xx_pci_init(void);
-+extern void bcm47xx_time_init(void);
-+extern void bcm47xx_timer_setup(struct irqaction *irq);
-+void *sbh;
-+spinlock_t sbh_lock = SPIN_LOCK_UNLOCKED;
-+int boardflags;
-+
-+static int ser_line = 0;
-+
-+typedef struct {
-+ void *regs;
-+ uint irq;
-+ uint baud_base;
-+ uint reg_shift;
-+} serial_port;
-+
-+static serial_port ports[4];
-+static int num_ports = 0;
-+
-+static void
-+serial_add(void *regs, uint irq, uint baud_base, uint reg_shift)
-+{
-+ ports[num_ports].regs = regs;
-+ ports[num_ports].irq = irq;
-+ ports[num_ports].baud_base = baud_base;
-+ ports[num_ports].reg_shift = reg_shift;
-+ num_ports++;
-+}
-+
-+static void
-+do_serial_add(serial_port *port)
-+{
-+ void *regs;
-+ uint irq;
-+ uint baud_base;
-+ uint reg_shift;
-+ struct uart_port s;
-+
-+ regs = port->regs;
-+ irq = port->irq;
-+ baud_base = port->baud_base;
-+ reg_shift = port->reg_shift;
-+
-+ memset(&s, 0, sizeof(s));
-+
-+ s.line = ser_line++;
-+ s.membase = regs;
-+ s.irq = irq + 2;
-+ s.uartclk = baud_base;
-+ s.flags = ASYNC_BOOT_AUTOCONF;
-+ s.iotype = SERIAL_IO_MEM;
-+ s.regshift = reg_shift;
-+
-+ if (early_serial_setup(&s) != 0) {
-+ printk(KERN_ERR "Serial setup failed!\n");
-+ }
-+}
-+
-+static void bcm47xx_machine_restart(char *command)
-+{
-+ printk("Please stand by while rebooting the system...\n");
-+
-+ /* Set the watchdog timer to reset immediately */
-+ local_irq_disable();
-+ sb_watchdog(sbh, 1);
-+ while (1);
-+}
-+
-+static void bcm47xx_machine_halt(void)
-+{
-+ /* Disable interrupts and watchdog and spin forever */
-+ local_irq_disable();
-+ sb_watchdog(sbh, 0);
-+ while (1);
-+}
-+
-+void __init plat_setup(void)
-+{
-+ char *s;
-+ int i;
-+
-+ sbh = (void *) sb_kattach();
-+ sb_mips_init(sbh);
-+
-+ bcm47xx_pci_init();
-+
-+ sb_serial_init(sbh, serial_add);
-+ boardflags = getintvar(NULL, "boardflags");
-+
-+ /* reverse serial ports if the nvram variable kernel_args starts with console=ttyS1 */
-+ s = early_nvram_get("kernel_args");
-+ if (!s) s = "";
-+ if (!strncmp(s, "console=ttyS1", 13)) {
-+ for (i = num_ports; i; i--)
-+ do_serial_add(&ports[i - 1]);
-+ } else {
-+ for (i = 0; i < num_ports; i++)
-+ do_serial_add(&ports[i]);
-+ }
-+
-+ _machine_restart = bcm47xx_machine_restart;
-+ _machine_halt = bcm47xx_machine_halt;
-+ pm_power_off = bcm47xx_machine_halt;
-+
-+ board_time_init = bcm47xx_time_init;
-+ board_timer_setup = bcm47xx_timer_setup;
-+}
-+
-+EXPORT_SYMBOL(sbh);
-+EXPORT_SYMBOL(sbh_lock);
-+EXPORT_SYMBOL(boardflags);
-diff -Nur linux-2.6.16/arch/mips/bcm947xx/time.c linux-2.6.16-owrt/arch/mips/bcm947xx/time.c
---- linux-2.6.16/arch/mips/bcm947xx/time.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/bcm947xx/time.c 2006-03-21 09:31:00.000000000 +0100
-@@ -0,0 +1,59 @@
-+/*
-+ * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.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 SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/serial_reg.h>
-+#include <linux/interrupt.h>
-+#include <asm/addrspace.h>
-+#include <asm/io.h>
-+#include <asm/time.h>
-+
-+void __init
-+bcm47xx_time_init(void)
-+{
-+ unsigned int hz;
-+
-+ /*
-+ * Use deterministic values for initial counter interrupt
-+ * so that calibrate delay avoids encountering a counter wrap.
-+ */
-+ write_c0_count(0);
-+ write_c0_compare(0xffff);
-+
-+ hz = 200 * 1000 * 1000;
-+
-+ /* Set MIPS counter frequency for fixed_rate_gettimeoffset() */
-+ mips_hpt_frequency = hz / 2;
-+
-+}
-+
-+void __init
-+bcm47xx_timer_setup(struct irqaction *irq)
-+{
-+ /* Enable the timer interrupt */
-+ setup_irq(7, irq);
-+}
-diff -Nur linux-2.6.16/arch/mips/Kconfig linux-2.6.16-owrt/arch/mips/Kconfig
---- linux-2.6.16/arch/mips/Kconfig 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/Kconfig 2006-03-21 09:31:00.000000000 +0100
-@@ -244,6 +244,17 @@
- Members include the Acer PICA, MIPS Magnum 4000, MIPS Millenium and
- Olivetti M700-10 workstations.
-
-+config BCM947XX
-+ bool "Support for BCM947xx based boards"
-+ select DMA_NONCOHERENT
-+ select HW_HAS_PCI
-+ select IRQ_CPU
-+ select SYS_HAS_CPU_MIPS32_R1
-+ select SYS_SUPPORTS_32BIT_KERNEL
-+ select SYS_SUPPORTS_LITTLE_ENDIAN
-+ help
-+ Support for BCM947xx based boards
-+
- config LASAT
- bool "Support for LASAT Networks platforms"
- select DMA_NONCOHERENT
-diff -Nur linux-2.6.16/arch/mips/kernel/cpu-probe.c linux-2.6.16-owrt/arch/mips/kernel/cpu-probe.c
---- linux-2.6.16/arch/mips/kernel/cpu-probe.c 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/kernel/cpu-probe.c 2006-03-21 09:32:48.000000000 +0100
-@@ -678,6 +678,28 @@
- }
-
-
-+static inline void cpu_probe_broadcom(struct cpuinfo_mips *c)
-+{
-+ decode_config1(c);
-+ switch (c->processor_id & 0xff00) {
-+ case PRID_IMP_BCM3302:
-+ c->cputype = CPU_BCM3302;
-+ c->isa_level = MIPS_CPU_ISA_M32R1;
-+ c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX |
-+ MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER;
-+ break;
-+ case PRID_IMP_BCM4710:
-+ c->cputype = CPU_BCM4710;
-+ c->isa_level = MIPS_CPU_ISA_M32R1;
-+ c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX |
-+ MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER;
-+ break;
-+ default:
-+ c->cputype = CPU_UNKNOWN;
-+ break;
-+ }
-+}
-+
- __init void cpu_probe(void)
- {
- struct cpuinfo_mips *c = &current_cpu_data;
-@@ -700,6 +722,9 @@
- case PRID_COMP_SIBYTE:
- cpu_probe_sibyte(c);
- break;
-+ case PRID_COMP_BROADCOM:
-+ cpu_probe_broadcom(c);
-+ break;
- case PRID_COMP_SANDCRAFT:
- cpu_probe_sandcraft(c);
- break;
-diff -Nur linux-2.6.16/arch/mips/kernel/head.S linux-2.6.16-owrt/arch/mips/kernel/head.S
---- linux-2.6.16/arch/mips/kernel/head.S 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/kernel/head.S 2006-03-21 09:31:00.000000000 +0100
-@@ -107,6 +107,14 @@
- #endif
- .endm
-
-+#ifdef CONFIG_BCM4710
-+#undef eret
-+#define eret nop; nop; eret
-+#endif
-+
-+ j kernel_entry
-+ nop
-+
- /*
- * Reserved space for exception handlers.
- * Necessary for machines which link their kernels at KSEG0.
-diff -Nur linux-2.6.16/arch/mips/kernel/proc.c linux-2.6.16-owrt/arch/mips/kernel/proc.c
---- linux-2.6.16/arch/mips/kernel/proc.c 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/kernel/proc.c 2006-03-21 09:31:00.000000000 +0100
-@@ -82,6 +82,8 @@
- [CPU_VR4181] = "NEC VR4181",
- [CPU_VR4181A] = "NEC VR4181A",
- [CPU_SR71000] = "Sandcraft SR71000",
-+ [CPU_BCM3302] = "Broadcom BCM3302",
-+ [CPU_BCM4710] = "Broadcom BCM4710",
- [CPU_PR4450] = "Philips PR4450",
- };
-
-diff -Nur linux-2.6.16/arch/mips/Makefile linux-2.6.16-owrt/arch/mips/Makefile
---- linux-2.6.16/arch/mips/Makefile 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/Makefile 2006-03-21 09:31:00.000000000 +0100
-@@ -710,6 +710,13 @@
- load-$(CONFIG_SIBYTE_BIGSUR) := 0xffffffff80100000
-
- #
-+# Broadcom BCM47XX boards
-+#
-+core-$(CONFIG_BCM947XX) += arch/mips/bcm947xx/ arch/mips/bcm947xx/broadcom/
-+cflags-$(CONFIG_BCM947XX) += -Iarch/mips/bcm947xx/include
-+load-$(CONFIG_BCM947XX) := 0xffffffff80001000
-+
-+#
- # SNI RM200 PCI
- #
- core-$(CONFIG_SNI_RM200_PCI) += arch/mips/sni/
-diff -Nur linux-2.6.16/arch/mips/mm/tlbex.c linux-2.6.16-owrt/arch/mips/mm/tlbex.c
---- linux-2.6.16/arch/mips/mm/tlbex.c 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/mm/tlbex.c 2006-03-21 09:31:00.000000000 +0100
-@@ -858,6 +858,8 @@
- case CPU_4KSC:
- case CPU_20KC:
- case CPU_25KF:
-+ case CPU_BCM3302:
-+ case CPU_BCM4710:
- tlbw(p);
- break;
-
-diff -Nur linux-2.6.16/include/asm-mips/bootinfo.h linux-2.6.16-owrt/include/asm-mips/bootinfo.h
---- linux-2.6.16/include/asm-mips/bootinfo.h 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/bootinfo.h 2006-03-21 09:31:00.000000000 +0100
-@@ -218,6 +218,12 @@
- #define MACH_GROUP_TITAN 22 /* PMC-Sierra Titan */
- #define MACH_TITAN_YOSEMITE 1 /* PMC-Sierra Yosemite */
-
-+/*
-+ * Valid machtype for group Broadcom
-+ */
-+#define MACH_GROUP_BRCM 23 /* Broadcom */
-+#define MACH_BCM47XX 1 /* Broadcom BCM47xx */
-+
- #define CL_SIZE COMMAND_LINE_SIZE
-
- const char *get_system_type(void);
-diff -Nur linux-2.6.16/include/asm-mips/cpu.h linux-2.6.16-owrt/include/asm-mips/cpu.h
---- linux-2.6.16/include/asm-mips/cpu.h 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/include/asm-mips/cpu.h 2006-03-21 09:31:00.000000000 +0100
-@@ -102,6 +102,13 @@
- #define PRID_IMP_SR71000 0x0400
-
- /*
-+ * These are the PRID's for when 23:16 == PRID_COMP_BROADCOM
-+ */
-+
-+#define PRID_IMP_BCM4710 0x4000
-+#define PRID_IMP_BCM3302 0x9000
-+
-+/*
- * Definitions for 7:0 on legacy processors
- */
-
-@@ -196,7 +203,9 @@
- #define CPU_34K 60
- #define CPU_PR4450 61
- #define CPU_SB1A 62
--#define CPU_LAST 62
-+#define CPU_BCM3302 63
-+#define CPU_BCM4710 64
-+#define CPU_LAST 64
-
- /*
- * ISA Level encodings
-diff -Nur linux-2.6.16/include/linux/init.h linux-2.6.16-owrt/include/linux/init.h
---- linux-2.6.16/include/linux/init.h 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/include/linux/init.h 2006-03-21 09:31:00.000000000 +0100
-@@ -86,6 +86,8 @@
- static initcall_t __initcall_##fn __attribute_used__ \
- __attribute__((__section__(".initcall" level ".init"))) = fn
-
-+#define early_initcall(fn) __define_initcall(".early1",fn)
-+
- #define core_initcall(fn) __define_initcall("1",fn)
- #define postcore_initcall(fn) __define_initcall("2",fn)
- #define arch_initcall(fn) __define_initcall("3",fn)
-diff -Nur linux-2.6.16/include/linux/pci_ids.h linux-2.6.16-owrt/include/linux/pci_ids.h
---- linux-2.6.16/include/linux/pci_ids.h 2006-03-20 06:53:29.000000000 +0100
-+++ linux-2.6.16-owrt/include/linux/pci_ids.h 2006-03-21 09:31:00.000000000 +0100
-@@ -1885,6 +1885,7 @@
- #define PCI_DEVICE_ID_TIGON3_5901_2 0x170e
- #define PCI_DEVICE_ID_BCM4401 0x4401
- #define PCI_DEVICE_ID_BCM4401B0 0x4402
-+#define PCI_DEVICE_ID_BCM4713 0x4713
-
- #define PCI_VENDOR_ID_TOPIC 0x151f
- #define PCI_DEVICE_ID_TOPIC_TP560 0x0000
diff --git a/openwrt/target/linux/brcm-2.6/patches/002-flash-map.patch b/openwrt/target/linux/brcm-2.6/patches/002-flash-map.patch
deleted file mode 100644
index b8aeafa602..0000000000
--- a/openwrt/target/linux/brcm-2.6/patches/002-flash-map.patch
+++ /dev/null
@@ -1,347 +0,0 @@
-diff -Nur linux-2.6.15-rc5/drivers/mtd/maps/bcm47xx-flash.c linux-2.6.15-rc5-flash/drivers/mtd/maps/bcm47xx-flash.c
---- linux-2.6.15-rc5/drivers/mtd/maps/bcm47xx-flash.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-rc5-flash/drivers/mtd/maps/bcm47xx-flash.c 2005-12-19 00:33:31.276241000 +0100
-@@ -0,0 +1,316 @@
-+/*
-+ * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.org)
-+ * Copyright (C) 2005 Waldemar Brodkorb <wbx@openwrt.org>
-+ *
-+ * original functions for finding root filesystem from Mike Baker
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ * Copyright 2001-2003, Broadcom Corporation
-+ * All Rights Reserved.
-+ *
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * Flash mapping for BCM947XX boards
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <asm/io.h>
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/map.h>
-+#ifdef CONFIG_MTD_PARTITIONS
-+#include <linux/mtd/partitions.h>
-+#endif
-+#include <linux/config.h>
-+
-+#include <trxhdr.h>
-+
-+#define WINDOW_ADDR 0x1c000000
-+#define WINDOW_SIZE (0x400000*2)
-+#define BUSWIDTH 2
-+
-+static struct mtd_info *bcm947xx_mtd;
-+
-+static void bcm947xx_map_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
-+{
-+#define MIPS_MEMCPY_ALIGN 4
-+ map_word ret;
-+ ssize_t transfer;
-+ ssize_t done = 0;
-+ if ((len >= MIPS_MEMCPY_ALIGN) && (!(from & (MIPS_MEMCPY_ALIGN - 1))) && (!(((unsigned int)to & (MIPS_MEMCPY_ALIGN - 1))))) {
-+ done = len & ~(MIPS_MEMCPY_ALIGN - 1);
-+ memcpy_fromio(to, map->virt + from, done);
-+ }
-+ while (done < len) {
-+ ret = map->read(map, from + done);
-+ transfer = len - done;
-+ if (transfer > map->bankwidth)
-+ transfer = map->bankwidth;
-+ memcpy((void *)((unsigned long)to + done), &ret.x[0], transfer);
-+ done += transfer;
-+ }
-+}
-+
-+static struct map_info bcm947xx_map = {
-+ name: "Physically mapped flash",
-+ size: WINDOW_SIZE,
-+ bankwidth: BUSWIDTH,
-+ phys: WINDOW_ADDR,
-+};
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+
-+static struct mtd_partition bcm947xx_parts[] = {
-+ { name: "cfe", offset: 0, size: 0, mask_flags: MTD_WRITEABLE, },
-+ { name: "linux", offset: 0, size: 0, },
-+ { name: "rootfs", offset: 0, size: 0, },
-+ { name: "nvram", offset: 0, size: 0, },
-+ { name: "OpenWrt", offset: 0, size: 0, },
-+ { name: NULL, },
-+};
-+
-+static int __init
-+find_cfe_size(struct mtd_info *mtd, size_t size)
-+{
-+ struct trx_header *trx;
-+ unsigned char buf[512];
-+ int off;
-+ size_t len;
-+ int cfe_size_flag;
-+
-+ trx = (struct trx_header *) buf;
-+
-+ cfe_size_flag=0;
-+
-+ for (off = (256*1024); off < size; off += mtd->erasesize) {
-+ memset(buf, 0xe5, sizeof(buf));
-+
-+ /*
-+ * Read into buffer
-+ */
-+ if (MTD_READ(mtd, off, sizeof(buf), &len, buf) ||
-+ len != sizeof(buf))
-+ continue;
-+
-+ /* found a TRX header */
-+ if (le32_to_cpu(trx->magic) == TRX_MAGIC) {
-+ goto done;
-+ }
-+ cfe_size_flag += 1;
-+ }
-+
-+ printk(KERN_NOTICE
-+ "%s: Couldn't find bootloader size\n",
-+ mtd->name);
-+ return -1;
-+
-+ done:
-+ printk(KERN_NOTICE "bootloader size flag: %d\n", cfe_size_flag);
-+ return cfe_size_flag;
-+
-+}
-+
-+static int __init
-+find_root(struct mtd_info *mtd, size_t size, struct mtd_partition *part)
-+{
-+ struct trx_header *trx;
-+ unsigned char buf[512];
-+ int off;
-+ size_t len;
-+
-+ trx = (struct trx_header *) buf;
-+
-+ for (off = (256*1024); off < size; off += mtd->erasesize) {
-+ memset(buf, 0xe5, sizeof(buf));
-+
-+ /*
-+ * Read into buffer
-+ */
-+ if (MTD_READ(mtd, off, sizeof(buf), &len, buf) ||
-+ len != sizeof(buf))
-+ continue;
-+
-+ /* found a TRX header */
-+ if (le32_to_cpu(trx->magic) == TRX_MAGIC) {
-+ part->offset = le32_to_cpu(trx->offsets[2]) ? :
-+ le32_to_cpu(trx->offsets[1]);
-+ part->size = le32_to_cpu(trx->len);
-+
-+ part->size -= part->offset;
-+ part->offset += off;
-+
-+ goto done;
-+ }
-+ }
-+
-+ printk(KERN_NOTICE
-+ "%s: Couldn't find root filesystem\n",
-+ mtd->name);
-+ return -1;
-+
-+ done:
-+ return part->size;
-+}
-+
-+struct mtd_partition * __init
-+init_mtd_partitions(struct mtd_info *mtd, size_t size)
-+{
-+
-+ int cfe_size_flag;
-+
-+ /* if cfe_size_flag=0, cfe size is 256 kb, else 384 kb */
-+ cfe_size_flag = find_cfe_size(mtd, size);
-+
-+ /* boot loader */
-+ bcm947xx_parts[0].offset = 0;
-+ if (cfe_size_flag == 0) {
-+ bcm947xx_parts[0].size = 1024*256;
-+ } else {
-+ /* netgear wgt634u has 384 kb bootloader */
-+ bcm947xx_parts[0].size = 1024*384;
-+ }
-+
-+ /* nvram */
-+ if (cfe_size_flag == 0) {
-+ bcm947xx_parts[3].offset = size - mtd->erasesize;
-+ } else {
-+ /* nvram (old 128kb config partition on netgear wgt634u) */
-+ bcm947xx_parts[3].offset = bcm947xx_parts[0].size;
-+ }
-+ bcm947xx_parts[3].size = mtd->erasesize;
-+
-+ /* linux (kernel and rootfs) */
-+ if (cfe_size_flag == 0) {
-+ bcm947xx_parts[1].offset = bcm947xx_parts[0].size;
-+ bcm947xx_parts[1].size = bcm947xx_parts[3].offset -
-+ bcm947xx_parts[1].offset;
-+ } else {
-+ /* do not count the elf loader, which is on one block */
-+ bcm947xx_parts[1].offset = bcm947xx_parts[0].size +
-+ bcm947xx_parts[3].size + mtd->erasesize;
-+ bcm947xx_parts[1].size = size -
-+ bcm947xx_parts[0].size -
-+ (2*bcm947xx_parts[3].size) -
-+ mtd->erasesize;
-+ }
-+
-+ /* find and size rootfs */
-+ if (find_root(mtd,size,&bcm947xx_parts[2])==0) {
-+ /* entirely jffs2 */
-+ bcm947xx_parts[4].name = NULL;
-+ bcm947xx_parts[2].size = size - bcm947xx_parts[2].offset -
-+ bcm947xx_parts[3].size;
-+ } else {
-+ /* legacy setup */
-+ /* calculate leftover flash, and assign it to the jffs2 partition */
-+ if (cfe_size_flag == 0) {
-+ bcm947xx_parts[4].offset = bcm947xx_parts[2].offset +
-+ bcm947xx_parts[2].size;
-+ if ((bcm947xx_parts[4].offset % mtd->erasesize) > 0) {
-+ bcm947xx_parts[4].offset += mtd->erasesize -
-+ (bcm947xx_parts[4].offset % mtd->erasesize);
-+ }
-+ bcm947xx_parts[4].size = bcm947xx_parts[3].offset -
-+ bcm947xx_parts[4].offset;
-+ } else {
-+ bcm947xx_parts[4].offset = bcm947xx_parts[2].offset +
-+ bcm947xx_parts[2].size;
-+ if ((bcm947xx_parts[4].offset % mtd->erasesize) > 0) {
-+ bcm947xx_parts[4].offset += mtd->erasesize -
-+ (bcm947xx_parts[4].offset % mtd->erasesize);
-+ }
-+ bcm947xx_parts[4].size = size - bcm947xx_parts[3].size -
-+ bcm947xx_parts[4].offset;
-+ }
-+ }
-+
-+ return bcm947xx_parts;
-+}
-+#endif
-+
-+int __init init_bcm947xx_map(void)
-+{
-+ size_t size;
-+ int ret = 0;
-+#ifdef CONFIG_MTD_PARTITIONS
-+ struct mtd_partition *parts;
-+ int i;
-+#endif
-+
-+ bcm947xx_map.virt = ioremap(WINDOW_ADDR, WINDOW_SIZE);
-+
-+ if (!bcm947xx_map.virt) {
-+ printk("Failed to ioremap\n");
-+ return -EIO;
-+ }
-+ simple_map_init(&bcm947xx_map);
-+
-+ bcm947xx_map.copy_from = bcm947xx_map_copy_from;
-+
-+ if (!(bcm947xx_mtd = do_map_probe("cfi_probe", &bcm947xx_map))) {
-+ printk("Failed to do_map_probe\n");
-+ iounmap((void *)bcm947xx_map.virt);
-+ return -ENXIO;
-+ }
-+
-+ bcm947xx_mtd->owner = THIS_MODULE;
-+
-+ size = bcm947xx_mtd->size;
-+
-+ printk(KERN_NOTICE "Flash device: 0x%x at 0x%x\n", size, WINDOW_ADDR);
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+ parts = init_mtd_partitions(bcm947xx_mtd, size);
-+ for (i = 0; parts[i].name; i++);
-+ ret = add_mtd_partitions(bcm947xx_mtd, parts, i);
-+ if (ret) {
-+ printk(KERN_ERR "Flash: add_mtd_partitions failed\n");
-+ goto fail;
-+ }
-+#endif
-+ return 0;
-+
-+ fail:
-+ if (bcm947xx_mtd)
-+ map_destroy(bcm947xx_mtd);
-+ if (bcm947xx_map.virt)
-+ iounmap((void *)bcm947xx_map.virt);
-+ bcm947xx_map.virt = 0;
-+ return ret;
-+}
-+
-+void __exit cleanup_bcm947xx_map(void)
-+{
-+#ifdef CONFIG_MTD_PARTITIONS
-+ del_mtd_partitions(bcm947xx_mtd);
-+#endif
-+ map_destroy(bcm947xx_mtd);
-+ iounmap((void *)bcm947xx_map.virt);
-+}
-+
-+module_init(init_bcm947xx_map);
-+module_exit(cleanup_bcm947xx_map);
-diff -Nur linux-2.6.15-rc5/drivers/mtd/maps/Kconfig linux-2.6.15-rc5-flash/drivers/mtd/maps/Kconfig
---- linux-2.6.15-rc5/drivers/mtd/maps/Kconfig 2005-12-04 06:10:42.000000000 +0100
-+++ linux-2.6.15-rc5-flash/drivers/mtd/maps/Kconfig 2005-12-18 19:36:11.555087000 +0100
-@@ -299,6 +299,12 @@
- Mapping for the Flaga digital module. If you don't have one, ignore
- this setting.
-
-+config MTD_BCM47XX
-+ tristate "BCM47xx flash device"
-+ depends on MIPS && MTD_CFI && BCM947XX
-+ help
-+ Support for the flash chips on the BCM947xx board.
-+
- config MTD_BEECH
- tristate "CFI Flash device mapped on IBM 405LP Beech"
- depends on MTD_CFI && BEECH
-diff -Nur linux-2.6.15-rc5/drivers/mtd/maps/Makefile linux-2.6.15-rc5-flash/drivers/mtd/maps/Makefile
---- linux-2.6.15-rc5/drivers/mtd/maps/Makefile 2005-12-04 06:10:42.000000000 +0100
-+++ linux-2.6.15-rc5-flash/drivers/mtd/maps/Makefile 2005-12-18 19:36:11.555087000 +0100
-@@ -31,6 +31,7 @@
- obj-$(CONFIG_MTD_PCMCIA) += pcmciamtd.o
- obj-$(CONFIG_MTD_RPXLITE) += rpxlite.o
- obj-$(CONFIG_MTD_TQM8XXL) += tqm8xxl.o
-+obj-$(CONFIG_MTD_BCM47XX) += bcm47xx-flash.o
- obj-$(CONFIG_MTD_SA1100) += sa1100-flash.o
- obj-$(CONFIG_MTD_IPAQ) += ipaq-flash.o
- obj-$(CONFIG_MTD_SBC_GXX) += sbc_gxx.o
diff --git a/openwrt/target/linux/brcm-2.6/patches/003-bcm4710_cache_fixes.patch b/openwrt/target/linux/brcm-2.6/patches/003-bcm4710_cache_fixes.patch
deleted file mode 100644
index eaa5231267..0000000000
--- a/openwrt/target/linux/brcm-2.6/patches/003-bcm4710_cache_fixes.patch
+++ /dev/null
@@ -1,347 +0,0 @@
-diff -urN linux.old/arch/mips/kernel/genex.S linux.dev/arch/mips/kernel/genex.S
---- linux.old/arch/mips/kernel/genex.S 2006-03-20 06:53:29.000000000 +0100
-+++ linux.dev/arch/mips/kernel/genex.S 2006-03-21 12:19:26.000000000 +0100
-@@ -72,6 +72,10 @@
- .set push
- .set mips3
- .set noat
-+#ifdef CONFIG_BCM4710
-+ nop
-+ nop
-+#endif
- mfc0 k1, CP0_CAUSE
- li k0, 31<<2
- andi k1, k1, 0x7c
-diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
---- linux.old/arch/mips/mm/c-r4k.c 2006-03-20 06:53:29.000000000 +0100
-+++ linux.dev/arch/mips/mm/c-r4k.c 2006-03-21 12:19:26.000000000 +0100
-@@ -14,6 +14,12 @@
- #include <linux/mm.h>
- #include <linux/bitops.h>
-
-+#ifdef CONFIG_BCM4710
-+#include "../bcm947xx/include/typedefs.h"
-+#include "../bcm947xx/include/sbconfig.h"
-+#include <asm/paccess.h>
-+#endif
-+
- #include <asm/bcache.h>
- #include <asm/bootinfo.h>
- #include <asm/cache.h>
-@@ -29,6 +35,9 @@
- #include <asm/war.h>
- #include <asm/cacheflush.h> /* for run_uncached() */
-
-+/* For enabling BCM4710 cache workarounds */
-+int bcm4710 = 0;
-+
- /*
- * Must die.
- */
-@@ -73,7 +82,9 @@
- {
- unsigned long dc_lsize = cpu_dcache_line_size();
-
-- if (dc_lsize == 16)
-+ if (bcm4710)
-+ r4k_blast_dcache_page = blast_dcache_page;
-+ else if (dc_lsize == 16)
- r4k_blast_dcache_page = blast_dcache16_page;
- else if (dc_lsize == 32)
- r4k_blast_dcache_page = r4k_blast_dcache_page_dc32;
-@@ -85,7 +96,9 @@
- {
- unsigned long dc_lsize = cpu_dcache_line_size();
-
-- if (dc_lsize == 16)
-+ if (bcm4710)
-+ r4k_blast_dcache_page_indexed = blast_dcache_page_indexed;
-+ else if (dc_lsize == 16)
- r4k_blast_dcache_page_indexed = blast_dcache16_page_indexed;
- else if (dc_lsize == 32)
- r4k_blast_dcache_page_indexed = blast_dcache32_page_indexed;
-@@ -97,7 +110,9 @@
- {
- unsigned long dc_lsize = cpu_dcache_line_size();
-
-- if (dc_lsize == 16)
-+ if (bcm4710)
-+ r4k_blast_dcache = blast_dcache;
-+ else if (dc_lsize == 16)
- r4k_blast_dcache = blast_dcache16;
- else if (dc_lsize == 32)
- r4k_blast_dcache = blast_dcache32;
-@@ -660,6 +675,8 @@
- unsigned long addr = (unsigned long) arg;
-
- R4600_HIT_CACHEOP_WAR_IMPL;
-+ BCM4710_PROTECTED_FILL_TLB(addr);
-+ BCM4710_PROTECTED_FILL_TLB(addr + 4);
- protected_writeback_dcache_line(addr & ~(dc_lsize - 1));
- if (!cpu_icache_snoops_remote_store && scache_size)
- protected_writeback_scache_line(addr & ~(sc_lsize - 1));
-@@ -1136,6 +1153,16 @@
- static inline void coherency_setup(void)
- {
- change_c0_config(CONF_CM_CMASK, CONF_CM_DEFAULT);
-+#if defined(CONFIG_BCM4310) || defined(CONFIG_BCM4704) || defined(CONFIG_BCM5365)
-+ if (BCM330X(current_cpu_data.processor_id)) {
-+ __u32 cm = read_c0_diag();
-+ /* Enable icache */
-+ cm |= (1 << 31);
-+ /* Enable dcache */
-+ cm |= (1 << 30);
-+ write_c0_diag(cm);
-+ }
-+#endif
-
- /*
- * c0_status.cu=0 specifies that updates by the sc instruction use
-@@ -1165,6 +1192,15 @@
-
- /* Default cache error handler for R4000 and R5000 family */
- set_uncached_handler (0x100, &except_vec2_generic, 0x80);
-+
-+ /* Check if special workarounds are required */
-+#ifdef CONFIG_BCM4710
-+ if (current_cpu_data.cputype == CPU_BCM4710 && (current_cpu_data.processor_id & 0xff) == 0) {
-+ printk("Enabling BCM4710A0 cache workarounds.\n");
-+ bcm4710 = 1;
-+ } else
-+#endif
-+ bcm4710 = 0;
-
- probe_pcache();
- setup_scache();
-diff -urN linux.old/arch/mips/mm/tlbex.c linux.dev/arch/mips/mm/tlbex.c
---- linux.old/arch/mips/mm/tlbex.c 2006-03-21 12:12:38.000000000 +0100
-+++ linux.dev/arch/mips/mm/tlbex.c 2006-03-21 12:19:26.000000000 +0100
-@@ -28,6 +28,10 @@
-
- /* #define DEBUG_TLB */
-
-+#ifdef CONFIG_BCM4710
-+extern int bcm4710;
-+#endif
-+
- static __init int __attribute__((unused)) r45k_bvahwbug(void)
- {
- /* XXX: We should probe for the presence of this bug, but we don't. */
-@@ -1152,6 +1156,12 @@
- memset(relocs, 0, sizeof(relocs));
- memset(final_handler, 0, sizeof(final_handler));
-
-+#ifdef CONFIG_BCM4710
-+ if (bcm4710) {
-+ i_nop(&p);
-+ }
-+#endif
-+
- /*
- * create the plain linear handler
- */
-diff -urN linux.old/include/asm-mips/r4kcache.h linux.dev/include/asm-mips/r4kcache.h
---- linux.old/include/asm-mips/r4kcache.h 2006-03-20 06:53:29.000000000 +0100
-+++ linux.dev/include/asm-mips/r4kcache.h 2006-03-21 18:40:32.000000000 +0100
-@@ -16,6 +16,18 @@
- #include <asm/cacheops.h>
- #include <asm/cpu-features.h>
-
-+#ifdef CONFIG_BCM4710
-+#define BCM4710_DUMMY_RREG() (((sbconfig_t *)(KSEG1ADDR(SB_ENUM_BASE + SBCONFIGOFF)))->sbimstate)
-+
-+#define BCM4710_FILL_TLB(addr) (*(volatile unsigned long *)(addr))
-+#define BCM4710_PROTECTED_FILL_TLB(addr) ({ unsigned long x; get_dbe(x, (volatile unsigned long *)(addr)); })
-+#else
-+#define BCM4710_DUMMY_RREG()
-+
-+#define BCM4710_FILL_TLB(addr)
-+#define BCM4710_PROTECTED_FILL_TLB(addr)
-+#endif
-+
- /*
- * This macro return a properly sign-extended address suitable as base address
- * for indexed cache operations. Two issues here:
-@@ -46,6 +58,7 @@
-
- static inline void flush_dcache_line_indexed(unsigned long addr)
- {
-+ BCM4710_DUMMY_RREG();
- cache_op(Index_Writeback_Inv_D, addr);
- }
-
-@@ -61,11 +74,13 @@
-
- static inline void flush_dcache_line(unsigned long addr)
- {
-+ BCM4710_DUMMY_RREG();
- cache_op(Hit_Writeback_Inv_D, addr);
- }
-
- static inline void invalidate_dcache_line(unsigned long addr)
- {
-+ BCM4710_DUMMY_RREG();
- cache_op(Hit_Invalidate_D, addr);
- }
-
-@@ -97,6 +112,7 @@
- */
- static inline void protected_flush_icache_line(unsigned long addr)
- {
-+ BCM4710_DUMMY_RREG();
- protected_cache_op(Hit_Invalidate_I, addr);
- }
-
-@@ -108,6 +124,7 @@
- */
- static inline void protected_writeback_dcache_line(unsigned long addr)
- {
-+ BCM4710_DUMMY_RREG();
- protected_cache_op(Hit_Writeback_Inv_D, addr);
- }
-
-@@ -228,8 +245,52 @@
- : "r" (base), \
- "i" (op));
-
-+static inline void blast_dcache(void)
-+{
-+ unsigned long start = KSEG0;
-+ unsigned long dcache_size = current_cpu_data.dcache.waysize * current_cpu_data.dcache.ways;
-+ unsigned long end = (start + dcache_size);
-+
-+ do {
-+ BCM4710_DUMMY_RREG();
-+ cache_op(Index_Writeback_Inv_D, start);
-+ start += current_cpu_data.dcache.linesz;
-+ } while(start < end);
-+}
-+
-+static inline void blast_dcache_page(unsigned long page)
-+{
-+ unsigned long start = page;
-+ unsigned long end = start + PAGE_SIZE;
-+
-+ BCM4710_FILL_TLB(start);
-+ do {
-+ BCM4710_DUMMY_RREG();
-+ cache_op(Hit_Writeback_Inv_D, start);
-+ start += current_cpu_data.dcache.linesz;
-+ } while(start < end);
-+}
-+
-+static inline void blast_dcache_page_indexed(unsigned long page)
-+{
-+ unsigned long start = page;
-+ unsigned long end = start + PAGE_SIZE;
-+ unsigned long ws_inc = 1UL << current_cpu_data.dcache.waybit;
-+ unsigned long ws_end = current_cpu_data.dcache.ways <<
-+ current_cpu_data.dcache.waybit;
-+ unsigned long ws, addr;
-+ for (ws = 0; ws < ws_end; ws += ws_inc) {
-+ start = page + ws;
-+ for (addr = start; addr < end; addr += current_cpu_data.dcache.linesz) {
-+ BCM4710_DUMMY_RREG();
-+ cache_op(Index_Writeback_Inv_D, addr);
-+ }
-+ }
-+}
-+
-+
- /* build blast_xxx, blast_xxx_page, blast_xxx_page_indexed */
--#define __BUILD_BLAST_CACHE(pfx, desc, indexop, hitop, lsize) \
-+#define __BUILD_BLAST_CACHE(pfx, desc, indexop, hitop, lsize, war) \
- static inline void blast_##pfx##cache##lsize(void) \
- { \
- unsigned long start = INDEX_BASE; \
-@@ -239,6 +300,7 @@
- current_cpu_data.desc.waybit; \
- unsigned long ws, addr; \
- \
-+ war \
- for (ws = 0; ws < ws_end; ws += ws_inc) \
- for (addr = start; addr < end; addr += lsize * 32) \
- cache##lsize##_unroll32(addr|ws,indexop); \
-@@ -249,6 +311,7 @@
- unsigned long start = page; \
- unsigned long end = page + PAGE_SIZE; \
- \
-+ war \
- do { \
- cache##lsize##_unroll32(start,hitop); \
- start += lsize * 32; \
-@@ -265,29 +328,31 @@
- current_cpu_data.desc.waybit; \
- unsigned long ws, addr; \
- \
-+ war \
- for (ws = 0; ws < ws_end; ws += ws_inc) \
- for (addr = start; addr < end; addr += lsize * 32) \
- cache##lsize##_unroll32(addr|ws,indexop); \
- }
-
--__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 16)
--__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 16)
--__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 16)
--__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 32)
--__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 32)
--__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 32)
--__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 64)
--__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 64)
--__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 128)
-+__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 16, )
-+__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 16, BCM4710_FILL_TLB(start);)
-+__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 16, )
-+__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 32, )
-+__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 32, BCM4710_FILL_TLB(start);)
-+__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 32, )
-+__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 64, BCM4710_FILL_TLB(start);)
-+__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 64, )
-+__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 128, )
-
- /* build blast_xxx_range, protected_blast_xxx_range */
--#define __BUILD_BLAST_CACHE_RANGE(pfx, desc, hitop, prot) \
-+#define __BUILD_BLAST_CACHE_RANGE(pfx, desc, hitop, prot, war) \
- static inline void prot##blast_##pfx##cache##_range(unsigned long start, \
- unsigned long end) \
- { \
- unsigned long lsize = cpu_##desc##_line_size(); \
- unsigned long addr = start & ~(lsize - 1); \
- unsigned long aend = (end - 1) & ~(lsize - 1); \
-+ war \
- while (1) { \
- prot##cache_op(hitop, addr); \
- if (addr == aend) \
-@@ -296,12 +361,12 @@
- } \
- }
-
--__BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, protected_)
--__BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, protected_)
--__BUILD_BLAST_CACHE_RANGE(i, icache, Hit_Invalidate_I, protected_)
--__BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, )
--__BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, )
-+__BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, protected_, BCM4710_PROTECTED_FILL_TLB(addr); BCM4710_PROTECTED_FILL_TLB(aend);)
-+__BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, protected_, )
-+__BUILD_BLAST_CACHE_RANGE(i, icache, Hit_Invalidate_I, protected_, )
-+__BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, , BCM4710_FILL_TLB(addr); BCM4710_FILL_TLB(aend);)
-+__BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, , )
- /* blast_inv_dcache_range */
--__BUILD_BLAST_CACHE_RANGE(inv_d, dcache, Hit_Invalidate_D, )
-+__BUILD_BLAST_CACHE_RANGE(inv_d, dcache, Hit_Invalidate_D, , )
-
- #endif /* _ASM_R4KCACHE_H */
-diff -urN linux.old/include/asm-mips/stackframe.h linux.dev/include/asm-mips/stackframe.h
---- linux.old/include/asm-mips/stackframe.h 2006-03-20 06:53:29.000000000 +0100
-+++ linux.dev/include/asm-mips/stackframe.h 2006-03-21 12:19:26.000000000 +0100
-@@ -285,6 +285,10 @@
- .macro RESTORE_SP_AND_RET
- LONG_L sp, PT_R29(sp)
- .set mips3
-+#ifdef CONFIG_BCM4710
-+ nop
-+ nop
-+#endif
- eret
- .set mips0
- .endm
diff --git a/openwrt/target/linux/brcm-2.6/patches/004-b44_bcm47xx_support.patch b/openwrt/target/linux/brcm-2.6/patches/004-b44_bcm47xx_support.patch
deleted file mode 100644
index b24480763f..0000000000
--- a/openwrt/target/linux/brcm-2.6/patches/004-b44_bcm47xx_support.patch
+++ /dev/null
@@ -1,697 +0,0 @@
-diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
---- linux.old/drivers/net/b44.c 2006-01-16 20:35:09.203794500 +0100
-+++ linux.dev/drivers/net/b44.c 2006-01-16 22:20:45.631180500 +0100
-@@ -1,7 +1,9 @@
--/* b44.c: Broadcom 4400 device driver.
-+/* b44.c: Broadcom 4400/47xx device driver.
- *
- * Copyright (C) 2002 David S. Miller (davem@redhat.com)
-- * Fixed by Pekka Pietikainen (pp@ee.oulu.fi)
-+ * Copyright (C) 2004 Pekka Pietikainen (pp@ee.oulu.fi)
-+ * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.org)
-+ * Copyright (C) 2006 Felix Fietkau (nbd@openwrt.org)
- *
- * Distribute under GPL.
- */
-@@ -31,6 +33,28 @@
- #define DRV_MODULE_VERSION "0.97"
- #define DRV_MODULE_RELDATE "Nov 30, 2005"
-
-+#ifdef CONFIG_BCM947XX
-+extern char *nvram_get(char *name);
-+static inline void e_aton(char *str, char *dest)
-+{
-+ int i = 0;
-+
-+ if (str == NULL) {
-+ memset(dest, 0, 6);
-+ return;
-+ }
-+
-+ for (;;) {
-+ dest[i++] = (char) simple_strtoul(str, NULL, 16);
-+ str += 2;
-+ if (!*str++ || i == 6)
-+ break;
-+ }
-+}
-+
-+static int b44_4713_instance;
-+#endif
-+
- #define B44_DEF_MSG_ENABLE \
- (NETIF_MSG_DRV | \
- NETIF_MSG_PROBE | \
-@@ -77,8 +101,8 @@
- static char version[] __devinitdata =
- DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
-
--MODULE_AUTHOR("Florian Schirmer, Pekka Pietikainen, David S. Miller");
--MODULE_DESCRIPTION("Broadcom 4400 10/100 PCI ethernet driver");
-+MODULE_AUTHOR("Felix Fietkau, Florian Schirmer, Pekka Pietikainen, David S. Miller");
-+MODULE_DESCRIPTION("Broadcom 4400/47xx 10/100 PCI ethernet driver");
- MODULE_LICENSE("GPL");
- MODULE_VERSION(DRV_MODULE_VERSION);
-
-@@ -93,6 +117,10 @@
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
- { PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BCM4401B1,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
-+#ifdef CONFIG_BCM947XX
-+ { PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BCM4713,
-+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
-+#endif
- { } /* terminate list with empty entry */
- };
-
-@@ -131,17 +159,6 @@
- dma_desc_sync_size, dir);
- }
-
--static inline unsigned long br32(const struct b44 *bp, unsigned long reg)
--{
-- return readl(bp->regs + reg);
--}
--
--static inline void bw32(const struct b44 *bp,
-- unsigned long reg, unsigned long val)
--{
-- writel(val, bp->regs + reg);
--}
--
- static int b44_wait_bit(struct b44 *bp, unsigned long reg,
- u32 bit, unsigned long timeout, const int clear)
- {
-@@ -268,6 +285,10 @@
- break;
- };
- #endif
-+#ifdef CONFIG_BCM947XX
-+ if (bp->pdev->device == PCI_DEVICE_ID_BCM4713)
-+ return b44_4713_instance++;
-+#endif
- return 0;
- }
-
-@@ -277,6 +298,30 @@
- == SBTMSLOW_CLOCK);
- }
-
-+#ifdef CONFIG_BCM947XX
-+static inline void __b44_cam_read(struct b44 *bp, unsigned char *data, int index)
-+{
-+ u32 val;
-+
-+ bw32(bp, B44_CAM_CTRL, (CAM_CTRL_READ |
-+ (index << CAM_CTRL_INDEX_SHIFT)));
-+
-+ b44_wait_bit(bp, B44_CAM_CTRL, CAM_CTRL_BUSY, 100, 1);
-+
-+ val = br32(bp, B44_CAM_DATA_LO);
-+
-+ data[2] = (val >> 24) & 0xFF;
-+ data[3] = (val >> 16) & 0xFF;
-+ data[4] = (val >> 8) & 0xFF;
-+ data[5] = (val >> 0) & 0xFF;
-+
-+ val = br32(bp, B44_CAM_DATA_HI);
-+
-+ data[0] = (val >> 8) & 0xFF;
-+ data[1] = (val >> 0) & 0xFF;
-+}
-+#endif
-+
- static void __b44_cam_write(struct b44 *bp, unsigned char *data, int index)
- {
- u32 val;
-@@ -313,14 +358,14 @@
- bw32(bp, B44_IMASK, bp->imask);
- }
-
--static int b44_readphy(struct b44 *bp, int reg, u32 *val)
-+static int __b44_readphy(struct b44 *bp, int phy_addr, int reg, u32 *val)
- {
- int err;
-
- bw32(bp, B44_EMAC_ISTAT, EMAC_INT_MII);
- bw32(bp, B44_MDIO_DATA, (MDIO_DATA_SB_START |
- (MDIO_OP_READ << MDIO_DATA_OP_SHIFT) |
-- (bp->phy_addr << MDIO_DATA_PMD_SHIFT) |
-+ (phy_addr << MDIO_DATA_PMD_SHIFT) |
- (reg << MDIO_DATA_RA_SHIFT) |
- (MDIO_TA_VALID << MDIO_DATA_TA_SHIFT)));
- err = b44_wait_bit(bp, B44_EMAC_ISTAT, EMAC_INT_MII, 100, 0);
-@@ -329,18 +374,34 @@
- return err;
- }
-
--static int b44_writephy(struct b44 *bp, int reg, u32 val)
-+static int __b44_writephy(struct b44 *bp, int phy_addr, int reg, u32 val)
- {
- bw32(bp, B44_EMAC_ISTAT, EMAC_INT_MII);
- bw32(bp, B44_MDIO_DATA, (MDIO_DATA_SB_START |
- (MDIO_OP_WRITE << MDIO_DATA_OP_SHIFT) |
-- (bp->phy_addr << MDIO_DATA_PMD_SHIFT) |
-+ (phy_addr << MDIO_DATA_PMD_SHIFT) |
- (reg << MDIO_DATA_RA_SHIFT) |
- (MDIO_TA_VALID << MDIO_DATA_TA_SHIFT) |
- (val & MDIO_DATA_DATA)));
- return b44_wait_bit(bp, B44_EMAC_ISTAT, EMAC_INT_MII, 100, 0);
- }
-
-+static inline int b44_readphy(struct b44 *bp, int reg, u32 *val)
-+{
-+ if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
-+ return 0;
-+
-+ return __b44_readphy(bp, bp->phy_addr, reg, val);
-+}
-+
-+static inline int b44_writephy(struct b44 *bp, int reg, u32 val)
-+{
-+ if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
-+ return 0;
-+
-+ return __b44_writephy(bp, bp->phy_addr, reg, val);
-+}
-+
- /* miilib interface */
- /* FIXME FIXME: phy_id is ignored, bp->phy_addr use is unconditional
- * due to code existing before miilib use was added to this driver.
-@@ -369,6 +430,8 @@
- u32 val;
- int err;
-
-+ if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
-+ return 0;
- err = b44_writephy(bp, MII_BMCR, BMCR_RESET);
- if (err)
- return err;
-@@ -439,6 +502,22 @@
- u32 val;
- int err;
-
-+#ifdef CONFIG_BCM947XX
-+ /*
-+ * workaround for bad hardware design in Linksys WAP54G v1.0
-+ * see https://dev.openwrt.org/ticket/146
-+ * check and reset bit "isolate"
-+ */
-+ if ((bp->pdev->device == PCI_DEVICE_ID_BCM4713) &&
-+ (atoi(nvram_get("boardnum")) == 2) &&
-+ (__b44_readphy(bp, 0, MII_BMCR, &val) == 0) &&
-+ (val & BMCR_ISOLATE) &&
-+ (__b44_writephy(bp, 0, MII_BMCR, val & ~BMCR_ISOLATE) != 0)) {
-+ printk(KERN_WARNING PFX "PHY: cannot reset MII transceiver isolate bit.\n");
-+ }
-+#endif
-+ if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
-+ return 0;
- if ((err = b44_readphy(bp, B44_MII_ALEDCTRL, &val)) != 0)
- goto out;
- if ((err = b44_writephy(bp, B44_MII_ALEDCTRL,
-@@ -534,6 +613,19 @@
- {
- u32 bmsr, aux;
-
-+ if (bp->phy_addr == B44_PHY_ADDR_NO_PHY) {
-+ bp->flags |= B44_FLAG_100_BASE_T;
-+ bp->flags |= B44_FLAG_FULL_DUPLEX;
-+ if (!netif_carrier_ok(bp->dev)) {
-+ u32 val = br32(bp, B44_TX_CTRL);
-+ val |= TX_CTRL_DUPLEX;
-+ bw32(bp, B44_TX_CTRL, val);
-+ netif_carrier_on(bp->dev);
-+ b44_link_report(bp);
-+ }
-+ return;
-+ }
-+
- if (!b44_readphy(bp, MII_BMSR, &bmsr) &&
- !b44_readphy(bp, B44_MII_AUXCTRL, &aux) &&
- (bmsr != 0xffff)) {
-@@ -1281,9 +1373,10 @@
- bw32(bp, B44_DMARX_CTRL, 0);
- bp->rx_prod = bp->rx_cons = 0;
- } else {
-- ssb_pci_setup(bp, (bp->core_unit == 0 ?
-- SBINTVEC_ENET0 :
-- SBINTVEC_ENET1));
-+ if (bp->pdev->device != PCI_DEVICE_ID_BCM4713)
-+ ssb_pci_setup(bp, (bp->core_unit == 0 ?
-+ SBINTVEC_ENET0 :
-+ SBINTVEC_ENET1));
- }
-
- ssb_core_reset(bp);
-@@ -1291,8 +1384,14 @@
- b44_clear_stats(bp);
-
- /* Make PHY accessible. */
-- bw32(bp, B44_MDIO_CTRL, (MDIO_CTRL_PREAMBLE |
-+ if (bp->pdev->device == PCI_DEVICE_ID_BCM4713)
-+ bw32(bp, B44_MDIO_CTRL, (MDIO_CTRL_PREAMBLE |
-+ (((100000000 + (B44_MDC_RATIO / 2)) / B44_MDC_RATIO)
-+ & MDIO_CTRL_MAXF_MASK)));
-+ else
-+ bw32(bp, B44_MDIO_CTRL, (MDIO_CTRL_PREAMBLE |
- (0x0d & MDIO_CTRL_MAXF_MASK)));
-+
- br32(bp, B44_MDIO_CTRL);
-
- if (!(br32(bp, B44_DEVCTRL) & DEVCTRL_IPP)) {
-@@ -1834,18 +1933,297 @@
- .get_perm_addr = ethtool_op_get_perm_addr,
- };
-
-+static int b44_ethtool_ioctl (struct net_device *dev, void __user *useraddr)
-+{
-+ struct b44 *bp = dev->priv;
-+ struct pci_dev *pci_dev = bp->pdev;
-+ u32 ethcmd;
-+
-+ if (copy_from_user (&ethcmd, useraddr, sizeof (ethcmd)))
-+ return -EFAULT;
-+
-+ switch (ethcmd) {
-+ case ETHTOOL_GDRVINFO: {
-+ struct ethtool_drvinfo info = { ETHTOOL_GDRVINFO };
-+ strcpy (info.driver, DRV_MODULE_NAME);
-+ strcpy (info.version, DRV_MODULE_VERSION);
-+ memset(&info.fw_version, 0, sizeof(info.fw_version));
-+ strcpy (info.bus_info, pci_name(pci_dev));
-+ info.eedump_len = 0;
-+ info.regdump_len = 0;
-+ if (copy_to_user (useraddr, &info, sizeof (info)))
-+ return -EFAULT;
-+ return 0;
-+ }
-+
-+ case ETHTOOL_GSET: {
-+ struct ethtool_cmd cmd = { ETHTOOL_GSET };
-+
-+ if (!(bp->flags & B44_FLAG_INIT_COMPLETE))
-+ return -EAGAIN;
-+ cmd.supported = (SUPPORTED_Autoneg);
-+ cmd.supported |= (SUPPORTED_100baseT_Half |
-+ SUPPORTED_100baseT_Full |
-+ SUPPORTED_10baseT_Half |
-+ SUPPORTED_10baseT_Full |
-+ SUPPORTED_MII);
-+
-+ cmd.advertising = 0;
-+ if (bp->flags & B44_FLAG_ADV_10HALF)
-+ cmd.advertising |= ADVERTISE_10HALF;
-+ if (bp->flags & B44_FLAG_ADV_10FULL)
-+ cmd.advertising |= ADVERTISE_10FULL;
-+ if (bp->flags & B44_FLAG_ADV_100HALF)
-+ cmd.advertising |= ADVERTISE_100HALF;
-+ if (bp->flags & B44_FLAG_ADV_100FULL)
-+ cmd.advertising |= ADVERTISE_100FULL;
-+ cmd.advertising |= ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM;
-+ cmd.speed = (bp->flags & B44_FLAG_100_BASE_T) ?
-+ SPEED_100 : SPEED_10;
-+ cmd.duplex = (bp->flags & B44_FLAG_FULL_DUPLEX) ?
-+ DUPLEX_FULL : DUPLEX_HALF;
-+ cmd.port = 0;
-+ cmd.phy_address = bp->phy_addr;
-+ cmd.transceiver = (bp->flags & B44_FLAG_INTERNAL_PHY) ?
-+ XCVR_INTERNAL : XCVR_EXTERNAL;
-+ cmd.autoneg = (bp->flags & B44_FLAG_FORCE_LINK) ?
-+ AUTONEG_DISABLE : AUTONEG_ENABLE;
-+ cmd.maxtxpkt = 0;
-+ cmd.maxrxpkt = 0;
-+ if (copy_to_user(useraddr, &cmd, sizeof(cmd)))
-+ return -EFAULT;
-+ return 0;
-+ }
-+ case ETHTOOL_SSET: {
-+ struct ethtool_cmd cmd;
-+
-+ if (!(bp->flags & B44_FLAG_INIT_COMPLETE))
-+ return -EAGAIN;
-+
-+ if (copy_from_user(&cmd, useraddr, sizeof(cmd)))
-+ return -EFAULT;
-+
-+ /* We do not support gigabit. */
-+ if (cmd.autoneg == AUTONEG_ENABLE) {
-+ if (cmd.advertising &
-+ (ADVERTISED_1000baseT_Half |
-+ ADVERTISED_1000baseT_Full))
-+ return -EINVAL;
-+ } else if ((cmd.speed != SPEED_100 &&
-+ cmd.speed != SPEED_10) ||
-+ (cmd.duplex != DUPLEX_HALF &&
-+ cmd.duplex != DUPLEX_FULL)) {
-+ return -EINVAL;
-+ }
-+
-+ spin_lock_irq(&bp->lock);
-+
-+ if (cmd.autoneg == AUTONEG_ENABLE) {
-+ bp->flags &= ~B44_FLAG_FORCE_LINK;
-+ bp->flags &= ~(B44_FLAG_ADV_10HALF |
-+ B44_FLAG_ADV_10FULL |
-+ B44_FLAG_ADV_100HALF |
-+ B44_FLAG_ADV_100FULL);
-+ if (cmd.advertising & ADVERTISE_10HALF)
-+ bp->flags |= B44_FLAG_ADV_10HALF;
-+ if (cmd.advertising & ADVERTISE_10FULL)
-+ bp->flags |= B44_FLAG_ADV_10FULL;
-+ if (cmd.advertising & ADVERTISE_100HALF)
-+ bp->flags |= B44_FLAG_ADV_100HALF;
-+ if (cmd.advertising & ADVERTISE_100FULL)
-+ bp->flags |= B44_FLAG_ADV_100FULL;
-+ } else {
-+ bp->flags |= B44_FLAG_FORCE_LINK;
-+ if (cmd.speed == SPEED_100)
-+ bp->flags |= B44_FLAG_100_BASE_T;
-+ if (cmd.duplex == DUPLEX_FULL)
-+ bp->flags |= B44_FLAG_FULL_DUPLEX;
-+ }
-+
-+ b44_setup_phy(bp);
-+
-+ spin_unlock_irq(&bp->lock);
-+
-+ return 0;
-+ }
-+
-+ case ETHTOOL_GMSGLVL: {
-+ struct ethtool_value edata = { ETHTOOL_GMSGLVL };
-+ edata.data = bp->msg_enable;
-+ if (copy_to_user(useraddr, &edata, sizeof(edata)))
-+ return -EFAULT;
-+ return 0;
-+ }
-+ case ETHTOOL_SMSGLVL: {
-+ struct ethtool_value edata;
-+ if (copy_from_user(&edata, useraddr, sizeof(edata)))
-+ return -EFAULT;
-+ bp->msg_enable = edata.data;
-+ return 0;
-+ }
-+ case ETHTOOL_NWAY_RST: {
-+ u32 bmcr;
-+ int r;
-+
-+ spin_lock_irq(&bp->lock);
-+ b44_readphy(bp, MII_BMCR, &bmcr);
-+ b44_readphy(bp, MII_BMCR, &bmcr);
-+ r = -EINVAL;
-+ if (bmcr & BMCR_ANENABLE) {
-+ b44_writephy(bp, MII_BMCR,
-+ bmcr | BMCR_ANRESTART);
-+ r = 0;
-+ }
-+ spin_unlock_irq(&bp->lock);
-+
-+ return r;
-+ }
-+ case ETHTOOL_GLINK: {
-+ struct ethtool_value edata = { ETHTOOL_GLINK };
-+ edata.data = netif_carrier_ok(bp->dev) ? 1 : 0;
-+ if (copy_to_user(useraddr, &edata, sizeof(edata)))
-+ return -EFAULT;
-+ return 0;
-+ }
-+ case ETHTOOL_GRINGPARAM: {
-+ struct ethtool_ringparam ering = { ETHTOOL_GRINGPARAM };
-+
-+ ering.rx_max_pending = B44_RX_RING_SIZE - 1;
-+ ering.rx_pending = bp->rx_pending;
-+
-+ /* XXX ethtool lacks a tx_max_pending, oops... */
-+
-+ if (copy_to_user(useraddr, &ering, sizeof(ering)))
-+ return -EFAULT;
-+ return 0;
-+ }
-+ case ETHTOOL_SRINGPARAM: {
-+ struct ethtool_ringparam ering;
-+
-+ if (copy_from_user(&ering, useraddr, sizeof(ering)))
-+ return -EFAULT;
-+
-+ if ((ering.rx_pending > B44_RX_RING_SIZE - 1) ||
-+ (ering.rx_mini_pending != 0) ||
-+ (ering.rx_jumbo_pending != 0) ||
-+ (ering.tx_pending > B44_TX_RING_SIZE - 1))
-+ return -EINVAL;
-+
-+ spin_lock_irq(&bp->lock);
-+
-+ bp->rx_pending = ering.rx_pending;
-+ bp->tx_pending = ering.tx_pending;
-+
-+ b44_halt(bp);
-+ b44_init_rings(bp);
-+ b44_init_hw(bp);
-+ netif_wake_queue(bp->dev);
-+ spin_unlock_irq(&bp->lock);
-+
-+ b44_enable_ints(bp);
-+
-+ return 0;
-+ }
-+ case ETHTOOL_GPAUSEPARAM: {
-+ struct ethtool_pauseparam epause = { ETHTOOL_GPAUSEPARAM };
-+
-+ epause.autoneg =
-+ (bp->flags & B44_FLAG_PAUSE_AUTO) != 0;
-+ epause.rx_pause =
-+ (bp->flags & B44_FLAG_RX_PAUSE) != 0;
-+ epause.tx_pause =
-+ (bp->flags & B44_FLAG_TX_PAUSE) != 0;
-+ if (copy_to_user(useraddr, &epause, sizeof(epause)))
-+ return -EFAULT;
-+ return 0;
-+ }
-+ case ETHTOOL_SPAUSEPARAM: {
-+ struct ethtool_pauseparam epause;
-+
-+ if (copy_from_user(&epause, useraddr, sizeof(epause)))
-+ return -EFAULT;
-+
-+ spin_lock_irq(&bp->lock);
-+ if (epause.autoneg)
-+ bp->flags |= B44_FLAG_PAUSE_AUTO;
-+ else
-+ bp->flags &= ~B44_FLAG_PAUSE_AUTO;
-+ if (epause.rx_pause)
-+ bp->flags |= B44_FLAG_RX_PAUSE;
-+ else
-+ bp->flags &= ~B44_FLAG_RX_PAUSE;
-+ if (epause.tx_pause)
-+ bp->flags |= B44_FLAG_TX_PAUSE;
-+ else
-+ bp->flags &= ~B44_FLAG_TX_PAUSE;
-+ if (bp->flags & B44_FLAG_PAUSE_AUTO) {
-+ b44_halt(bp);
-+ b44_init_rings(bp);
-+ b44_init_hw(bp);
-+ } else {
-+ __b44_set_flow_ctrl(bp, bp->flags);
-+ }
-+ spin_unlock_irq(&bp->lock);
-+
-+ b44_enable_ints(bp);
-+
-+ return 0;
-+ }
-+ };
-+
-+ return -EOPNOTSUPP;
-+}
-+
- static int b44_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
- {
- struct mii_ioctl_data *data = if_mii(ifr);
- struct b44 *bp = netdev_priv(dev);
- int err = -EINVAL;
-
-- if (!netif_running(dev))
-+ if (bp->pdev->device != PCI_DEVICE_ID_BCM4713) {
-+ if (!netif_running(dev))
-+ goto out;
-+
-+ spin_lock_irq(&bp->lock);
-+ err = generic_mii_ioctl(&bp->mii_if, data, cmd, NULL);
-+ spin_unlock_irq(&bp->lock);
- goto out;
-+ }
-
-- spin_lock_irq(&bp->lock);
-- err = generic_mii_ioctl(&bp->mii_if, data, cmd, NULL);
-- spin_unlock_irq(&bp->lock);
-+ switch (cmd) {
-+ case SIOCETHTOOL:
-+ return b44_ethtool_ioctl(dev, (void __user*) ifr->ifr_data);
-+
-+ case SIOCGMIIPHY:
-+ data->phy_id = bp->phy_addr;
-+
-+ /* fallthru */
-+ case SIOCGMIIREG: {
-+ u32 mii_regval;
-+ spin_lock_irq(&bp->lock);
-+ err = __b44_readphy(bp, data->phy_id & 0x1f, data->reg_num & 0x1f, &mii_regval);
-+ spin_unlock_irq(&bp->lock);
-+
-+ data->val_out = mii_regval;
-+
-+ return err;
-+ }
-+
-+ case SIOCSMIIREG:
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EPERM;
-+
-+ spin_lock_irq(&bp->lock);
-+ err = __b44_writephy(bp, data->phy_id & 0x1f, data->reg_num & 0x1f, data->val_in);
-+ spin_unlock_irq(&bp->lock);
-+
-+ return err;
-+
-+ default:
-+ break;
-+ };
-+ return -EOPNOTSUPP;
-+
- out:
- return err;
- }
-@@ -1865,22 +2243,55 @@
- static int __devinit b44_get_invariants(struct b44 *bp)
- {
- u8 eeprom[128];
-- int err;
--
-- err = b44_read_eeprom(bp, &eeprom[0]);
-- if (err)
-- goto out;
--
-- bp->dev->dev_addr[0] = eeprom[79];
-- bp->dev->dev_addr[1] = eeprom[78];
-- bp->dev->dev_addr[2] = eeprom[81];
-- bp->dev->dev_addr[3] = eeprom[80];
-- bp->dev->dev_addr[4] = eeprom[83];
-- bp->dev->dev_addr[5] = eeprom[82];
-- memcpy(bp->dev->perm_addr, bp->dev->dev_addr, bp->dev->addr_len);
--
-- bp->phy_addr = eeprom[90] & 0x1f;
-+ u8 buf[32];
-+ int err = 0;
-+ unsigned long flags;
-+
-+#ifdef CONFIG_BCM947XX
-+ if (bp->pdev->device == PCI_DEVICE_ID_BCM4713) {
-+ /*
-+ * BCM47xx boards don't have a EEPROM. The MAC is stored in
-+ * a NVRAM area somewhere in the flash memory.
-+ */
-+ sprintf(buf, "et%dmacaddr", b44_4713_instance);
-+ if (nvram_get(buf)) {
-+ e_aton(nvram_get(buf), bp->dev->dev_addr);
-+ } else {
-+ /*
-+ * Getting the MAC out of NVRAM failed. To make it work
-+ * here, we simply rely on the bootloader to write the
-+ * MAC into the CAM.
-+ */
-+ spin_lock_irqsave(&bp->lock, flags);
-+ __b44_cam_read(bp, bp->dev->dev_addr, 0);
-+ spin_unlock_irqrestore(&bp->lock, flags);
-+ }
-
-+ /*
-+ * BCM47xx boards don't have a PHY. Usually there is a switch
-+ * chip with multiple PHYs connected to the PHY port.
-+ */
-+ bp->phy_addr = B44_PHY_ADDR_NO_PHY;
-+ bp->dma_offset = 0;
-+ } else
-+#endif
-+ {
-+ err = b44_read_eeprom(bp, &eeprom[0]);
-+ if (err)
-+ goto out;
-+
-+ bp->dev->dev_addr[0] = eeprom[79];
-+ bp->dev->dev_addr[1] = eeprom[78];
-+ bp->dev->dev_addr[2] = eeprom[81];
-+ bp->dev->dev_addr[3] = eeprom[80];
-+ bp->dev->dev_addr[4] = eeprom[83];
-+ bp->dev->dev_addr[5] = eeprom[82];
-+ memcpy(bp->dev->perm_addr, bp->dev->dev_addr, bp->dev->addr_len);
-+
-+ bp->phy_addr = eeprom[90] & 0x1f;
-+ bp->dma_offset = SB_PCI_DMA;
-+ }
-+
- /* With this, plus the rx_header prepended to the data by the
- * hardware, we'll land the ethernet header on a 2-byte boundary.
- */
-@@ -1889,11 +2300,7 @@
- bp->imask = IMASK_DEF;
-
- bp->core_unit = ssb_core_unit(bp);
-- bp->dma_offset = SB_PCI_DMA;
-
-- /* XXX - really required?
-- bp->flags |= B44_FLAG_BUGGY_TXPTR;
-- */
- out:
- return err;
- }
-@@ -2032,11 +2439,17 @@
-
- pci_save_state(bp->pdev);
-
-- printk(KERN_INFO "%s: Broadcom 4400 10/100BaseT Ethernet ", dev->name);
-+ printk(KERN_INFO "%s: Broadcom %s 10/100BaseT Ethernet ", dev->name,
-+ (pdev->device == PCI_DEVICE_ID_BCM4713) ? "47xx" : "4400");
- for (i = 0; i < 6; i++)
- printk("%2.2x%c", dev->dev_addr[i],
- i == 5 ? '\n' : ':');
-
-+ /* Initialize phy */
-+ spin_lock_irq(&bp->lock);
-+ b44_chip_reset(bp);
-+ spin_unlock_irq(&bp->lock);
-+
- return 0;
-
- err_out_iounmap:
-diff -urN linux.old/drivers/net/b44.h linux.dev/drivers/net/b44.h
---- linux.old/drivers/net/b44.h 2006-01-16 20:35:09.255797750 +0100
-+++ linux.dev/drivers/net/b44.h 2006-01-16 20:30:30.566380750 +0100
-@@ -292,6 +292,10 @@
- #define SSB_PCI_MASK1 0xfc000000
- #define SSB_PCI_MASK2 0xc0000000
-
-+#define br32(bp, REG) readl((void *)bp->regs + (REG))
-+#define bw32(bp, REG,VAL) writel((VAL), (void *)bp->regs + (REG))
-+#define atoi(str) simple_strtoul(((str != NULL) ? str : ""), NULL, 0)
-+
- /* 4400 PHY registers */
- #define B44_MII_AUXCTRL 24 /* Auxiliary Control */
- #define MII_AUXCTRL_DUPLEX 0x0001 /* Full Duplex */
-@@ -345,6 +349,8 @@
- };
-
- #define B44_MCAST_TABLE_SIZE 32
-+#define B44_PHY_ADDR_NO_PHY 30
-+#define B44_MDC_RATIO 5000000
-
- #define B44_STAT_REG_DECLARE \
- _B44(tx_good_octets) \
-@@ -420,6 +426,7 @@
-
- u32 dma_offset;
- u32 flags;
-+#define B44_FLAG_INIT_COMPLETE 0x00000001
- #define B44_FLAG_BUGGY_TXPTR 0x00000002
- #define B44_FLAG_REORDER_BUG 0x00000004
- #define B44_FLAG_PAUSE_AUTO 0x00008000
diff --git a/openwrt/target/linux/control/kernel.control b/openwrt/target/linux/control/kernel.control
deleted file mode 100644
index be5f10940d..0000000000
--- a/openwrt/target/linux/control/kernel.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kernel
-Priority: optional
-Section: sys
-Description: Virtual package for the Kernel
diff --git a/openwrt/target/linux/control/kmod-arptables.control b/openwrt/target/linux/control/kmod-arptables.control
deleted file mode 100644
index 6896388e6e..0000000000
--- a/openwrt/target/linux/control/kmod-arptables.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-arptables
-Priority: optional
-Section: net
-Description: ARP firewalling kernel modules
diff --git a/openwrt/target/linux/control/kmod-atm.control b/openwrt/target/linux/control/kmod-atm.control
deleted file mode 100644
index ae07126a6a..0000000000
--- a/openwrt/target/linux/control/kmod-atm.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-atm
-Priority: optional
-Section: sys
-Description: ATM/ADSL support
diff --git a/openwrt/target/linux/control/kmod-ax25.control b/openwrt/target/linux/control/kmod-ax25.control
deleted file mode 100644
index 18c4cef8fe..0000000000
--- a/openwrt/target/linux/control/kmod-ax25.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ax25
-Priority: optional
-Section: net
-Description: Kernel AX25 driver
diff --git a/openwrt/target/linux/control/kmod-bluetooth.control b/openwrt/target/linux/control/kmod-bluetooth.control
deleted file mode 100644
index 9f5409a9b7..0000000000
--- a/openwrt/target/linux/control/kmod-bluetooth.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-bluetooth
-Priority: optional
-Section: sys
-Description: Bluetooth support
diff --git a/openwrt/target/linux/control/kmod-brcm-et.control b/openwrt/target/linux/control/kmod-brcm-et.control
deleted file mode 100644
index 3e65bc906a..0000000000
--- a/openwrt/target/linux/control/kmod-brcm-et.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-brcm-et
-Priority: optional
-Section: sys
-Description: Proprietary driver for Broadcom Ethernet chipsets
diff --git a/openwrt/target/linux/control/kmod-brcm-wl.control b/openwrt/target/linux/control/kmod-brcm-wl.control
deleted file mode 100644
index cf610c3673..0000000000
--- a/openwrt/target/linux/control/kmod-brcm-wl.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-brcm-wl
-Priority: optional
-Section: sys
-Description: Proprietary driver for Broadcom Wireless chipsets
diff --git a/openwrt/target/linux/control/kmod-brcm-wl2.control b/openwrt/target/linux/control/kmod-brcm-wl2.control
deleted file mode 100644
index 4ae019ddf9..0000000000
--- a/openwrt/target/linux/control/kmod-brcm-wl2.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: kmod-brcm-wl2
-Priority: optional
-Section: sys
-Description: Proprietary driver for Broadcom Wireless chipsets
- New version with multi-BSS support
diff --git a/openwrt/target/linux/control/kmod-cpmac.control b/openwrt/target/linux/control/kmod-cpmac.control
deleted file mode 100644
index 18f8e901b6..0000000000
--- a/openwrt/target/linux/control/kmod-cpmac.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-cpmac
-Priority: optional
-Section: sys
-Description: AR7 CPMAC ethernet driver
diff --git a/openwrt/target/linux/control/kmod-crypto.control b/openwrt/target/linux/control/kmod-crypto.control
deleted file mode 100644
index 199d33cd7d..0000000000
--- a/openwrt/target/linux/control/kmod-crypto.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-crypto
-Priority: optional
-Section: sys
-Description: CryptoAPI kernel modules
diff --git a/openwrt/target/linux/control/kmod-ebtables.control b/openwrt/target/linux/control/kmod-ebtables.control
deleted file mode 100644
index 85c2af9bcc..0000000000
--- a/openwrt/target/linux/control/kmod-ebtables.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ebtables
-Priority: optional
-Section: net
-Description: Ethernet bridge firewalling kernel modules
diff --git a/openwrt/target/linux/control/kmod-fs-cifs.control b/openwrt/target/linux/control/kmod-fs-cifs.control
deleted file mode 100644
index 832224764d..0000000000
--- a/openwrt/target/linux/control/kmod-fs-cifs.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-fs-cifs
-Priority: optional
-Section: sys
-Description: Kernel modules for CIFS support
diff --git a/openwrt/target/linux/control/kmod-fs-ext2.control b/openwrt/target/linux/control/kmod-fs-ext2.control
deleted file mode 100644
index ec06cffe23..0000000000
--- a/openwrt/target/linux/control/kmod-fs-ext2.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-fs-ext2
-Priority: optional
-Section: sys
-Description: Kernel modules for EXT2 filesystem support
diff --git a/openwrt/target/linux/control/kmod-fs-ext3.control b/openwrt/target/linux/control/kmod-fs-ext3.control
deleted file mode 100644
index 735178895d..0000000000
--- a/openwrt/target/linux/control/kmod-fs-ext3.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-fs-ext3
-Priority: optional
-Section: sys
-Description: Kernel modules for EXT3 filesystem support
diff --git a/openwrt/target/linux/control/kmod-fs-hfsplus.control b/openwrt/target/linux/control/kmod-fs-hfsplus.control
deleted file mode 100644
index bb59553338..0000000000
--- a/openwrt/target/linux/control/kmod-fs-hfsplus.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-fs-hfsplus
-Priority: optional
-Section: sys
-Description: Kernel modules for HFS+ filesystem support
diff --git a/openwrt/target/linux/control/kmod-fs-minix.control b/openwrt/target/linux/control/kmod-fs-minix.control
deleted file mode 100644
index 2169ba6acd..0000000000
--- a/openwrt/target/linux/control/kmod-fs-minix.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-fs-minix
-Priority: optional
-Section: sys
-Description: Kernel modules for MINIX filesystem support
diff --git a/openwrt/target/linux/control/kmod-fs-nfs.control b/openwrt/target/linux/control/kmod-fs-nfs.control
deleted file mode 100644
index 32dc9ff323..0000000000
--- a/openwrt/target/linux/control/kmod-fs-nfs.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-fs-nfs
-Priority: optional
-Section: sys
-Description: Kernel modules for NFS support
diff --git a/openwrt/target/linux/control/kmod-fs-vfat.control b/openwrt/target/linux/control/kmod-fs-vfat.control
deleted file mode 100644
index cc2983313d..0000000000
--- a/openwrt/target/linux/control/kmod-fs-vfat.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-fs-vfat
-Priority: optional
-Section: sys
-Description: Kernel modules for VFAT filesystem support
diff --git a/openwrt/target/linux/control/kmod-fs-xfs.control b/openwrt/target/linux/control/kmod-fs-xfs.control
deleted file mode 100644
index 8efd35a666..0000000000
--- a/openwrt/target/linux/control/kmod-fs-xfs.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-fs-xfs
-Priority: optional
-Section: sys
-Description: Kernel modules for XFS filesystem support
diff --git a/openwrt/target/linux/control/kmod-gre.control b/openwrt/target/linux/control/kmod-gre.control
deleted file mode 100644
index 42db0cce54..0000000000
--- a/openwrt/target/linux/control/kmod-gre.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-gre
-Priority: optional
-Section: sys
-Description: Kernel GRE tunneling support
diff --git a/openwrt/target/linux/control/kmod-ide.control b/openwrt/target/linux/control/kmod-ide.control
deleted file mode 100644
index 2b02d82257..0000000000
--- a/openwrt/target/linux/control/kmod-ide.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ide
-Priority: optional
-Section: sys
-Description: Kernel modules IDE support
diff --git a/openwrt/target/linux/control/kmod-imq.control b/openwrt/target/linux/control/kmod-imq.control
deleted file mode 100644
index 78925a40b5..0000000000
--- a/openwrt/target/linux/control/kmod-imq.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-imq
-Priority: optional
-Section: net
-Description: Kernel support for the Intermediate Queueing device
diff --git a/openwrt/target/linux/control/kmod-ip6tables.control b/openwrt/target/linux/control/kmod-ip6tables.control
deleted file mode 100644
index 6ccf422ffb..0000000000
--- a/openwrt/target/linux/control/kmod-ip6tables.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ip6tables
-Priority: optional
-Section: net
-Description: Kernel modules for ip6tables
diff --git a/openwrt/target/linux/control/kmod-ipip.control b/openwrt/target/linux/control/kmod-ipip.control
deleted file mode 100644
index 99bf0ec34b..0000000000
--- a/openwrt/target/linux/control/kmod-ipip.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ipip
-Section: sys
-Priority: optional
-Description: IP in IP encapsulation support
diff --git a/openwrt/target/linux/control/kmod-ipt-conntrack.control b/openwrt/target/linux/control/kmod-ipt-conntrack.control
deleted file mode 100644
index 3528ec4e0b..0000000000
--- a/openwrt/target/linux/control/kmod-ipt-conntrack.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ipt-conntrack
-Priority: optional
-Section: net
-Description: Extra Netfilter (IPv4) kernel modules for connection tracking
diff --git a/openwrt/target/linux/control/kmod-ipt-extra.control b/openwrt/target/linux/control/kmod-ipt-extra.control
deleted file mode 100644
index d336cc3006..0000000000
--- a/openwrt/target/linux/control/kmod-ipt-extra.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ipt-extra
-Priority: optional
-Section: net
-Description: Other extra Netfilter (IPv4) kernel modules
diff --git a/openwrt/target/linux/control/kmod-ipt-filter.control b/openwrt/target/linux/control/kmod-ipt-filter.control
deleted file mode 100644
index 8f5684d492..0000000000
--- a/openwrt/target/linux/control/kmod-ipt-filter.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ipt-filter
-Priority: optional
-Section: net
-Description: Netfilter (IPv4) kernel modules for packet content inspection
diff --git a/openwrt/target/linux/control/kmod-ipt-ipopt.control b/openwrt/target/linux/control/kmod-ipt-ipopt.control
deleted file mode 100644
index f0c9856d00..0000000000
--- a/openwrt/target/linux/control/kmod-ipt-ipopt.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ipt-ipopt
-Priority: optional
-Section: net
-Description: Netfilter (IPv4) kernel modules for matching/changing IP packet options
diff --git a/openwrt/target/linux/control/kmod-ipt-ipsec.control b/openwrt/target/linux/control/kmod-ipt-ipsec.control
deleted file mode 100644
index 6baa3d4448..0000000000
--- a/openwrt/target/linux/control/kmod-ipt-ipsec.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ipt-ipsec
-Priority: optional
-Section: net
-Description: Netfilter (IPv4) kernel modules for matching special IPsec packets
diff --git a/openwrt/target/linux/control/kmod-ipt-nat-extra.control b/openwrt/target/linux/control/kmod-ipt-nat-extra.control
deleted file mode 100644
index 84b429453b..0000000000
--- a/openwrt/target/linux/control/kmod-ipt-nat-extra.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ipt-nat-extra
-Priority: optional
-Section: net
-Description: Extra Netfilter (IPv4) NAT kernel modules for special protocols
diff --git a/openwrt/target/linux/control/kmod-ipt-nat.control b/openwrt/target/linux/control/kmod-ipt-nat.control
deleted file mode 100644
index 89fc8434b6..0000000000
--- a/openwrt/target/linux/control/kmod-ipt-nat.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ipt-nat
-Priority: optional
-Section: net
-Description: Netfilter (IPv4) kernel modules for different NAT targets
diff --git a/openwrt/target/linux/control/kmod-ipt-queue.control b/openwrt/target/linux/control/kmod-ipt-queue.control
deleted file mode 100644
index ba96eb5c20..0000000000
--- a/openwrt/target/linux/control/kmod-ipt-queue.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ipt-queue
-Priority: optional
-Section: net
-Description: Netfilter (IPv4) kernel module for user-space packet queuing
diff --git a/openwrt/target/linux/control/kmod-ipt-ulog.control b/openwrt/target/linux/control/kmod-ipt-ulog.control
deleted file mode 100644
index 2ce0fdcae7..0000000000
--- a/openwrt/target/linux/control/kmod-ipt-ulog.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ipt-ulog
-Priority: optional
-Section: net
-Description: Netfilter (IPv4) kernel module for user-space packet logging
diff --git a/openwrt/target/linux/control/kmod-iptables-extra.control b/openwrt/target/linux/control/kmod-iptables-extra.control
deleted file mode 100644
index 96a3b1acc0..0000000000
--- a/openwrt/target/linux/control/kmod-iptables-extra.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-iptables-extra
-Priority: optional
-Section: net
-Description: Extra kernel modules for iptables
diff --git a/openwrt/target/linux/control/kmod-iptables.control b/openwrt/target/linux/control/kmod-iptables.control
deleted file mode 100644
index 7f97cc44b6..0000000000
--- a/openwrt/target/linux/control/kmod-iptables.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-iptables
-Priority: optional
-Section: net
-Description: kernel modules for iptables
diff --git a/openwrt/target/linux/control/kmod-ipv6.control b/openwrt/target/linux/control/kmod-ipv6.control
deleted file mode 100644
index 3a6ccc9920..0000000000
--- a/openwrt/target/linux/control/kmod-ipv6.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ipv6
-Priority: optional
-Section: net
-Description: Kernel modules for the IPv6 protocol
diff --git a/openwrt/target/linux/control/kmod-loop.control b/openwrt/target/linux/control/kmod-loop.control
deleted file mode 100644
index 48bcb835d6..0000000000
--- a/openwrt/target/linux/control/kmod-loop.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-loop
-Priority: optional
-Section: sys
-Description: Kernel module for mount loopback support
diff --git a/openwrt/target/linux/control/kmod-lp.control b/openwrt/target/linux/control/kmod-lp.control
deleted file mode 100644
index 5d40813159..0000000000
--- a/openwrt/target/linux/control/kmod-lp.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-lp
-Priority: optional
-Section: sys
-Description: Kernel modules for parallel port support and line printer
diff --git a/openwrt/target/linux/control/kmod-mppe.control b/openwrt/target/linux/control/kmod-mppe.control
deleted file mode 100644
index e4aa4c963a..0000000000
--- a/openwrt/target/linux/control/kmod-mppe.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-mppe
-Priority: optional
-Section: net
-Description: Microsoft PPP Encryption/Compression support
diff --git a/openwrt/target/linux/control/kmod-nbd.control b/openwrt/target/linux/control/kmod-nbd.control
deleted file mode 100644
index 3c467223bf..0000000000
--- a/openwrt/target/linux/control/kmod-nbd.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-nbd
-Priority: optional
-Section: sys
-Description: Kernel module for network block device
diff --git a/openwrt/target/linux/control/kmod-net-3c59x.control b/openwrt/target/linux/control/kmod-net-3c59x.control
deleted file mode 100644
index 8d2b880056..0000000000
--- a/openwrt/target/linux/control/kmod-net-3c59x.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-net-3c59x
-Priority: optional
-Section: sys
-Description: 3Com 3c590/3c900 series (592/595/597) "Vortex/Boomerang" cards kernel support
diff --git a/openwrt/target/linux/control/kmod-net-8139too.control b/openwrt/target/linux/control/kmod-net-8139too.control
deleted file mode 100644
index a3ad9afc60..0000000000
--- a/openwrt/target/linux/control/kmod-net-8139too.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-net-8139too
-Priority: optional
-Section: sys
-Description: RealTek RTL-8139 PCI Fast Ethernet Adapter kernel support
diff --git a/openwrt/target/linux/control/kmod-net-airo.control b/openwrt/target/linux/control/kmod-net-airo.control
deleted file mode 100644
index 3693df589b..0000000000
--- a/openwrt/target/linux/control/kmod-net-airo.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-net-airo
-Priority: optional
-Section: sys
-Description: Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards kernel support
diff --git a/openwrt/target/linux/control/kmod-net-e100.control b/openwrt/target/linux/control/kmod-net-e100.control
deleted file mode 100644
index bd5537b3f2..0000000000
--- a/openwrt/target/linux/control/kmod-net-e100.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-net-e100
-Priority: optional
-Section: sys
-Description: Intel(R) PRO/100+ cards kernel support
diff --git a/openwrt/target/linux/control/kmod-net-hermes-pci.control b/openwrt/target/linux/control/kmod-net-hermes-pci.control
deleted file mode 100644
index 911609d4f6..0000000000
--- a/openwrt/target/linux/control/kmod-net-hermes-pci.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-net-hermes-pci
-Priority: optional
-Section: sys
-Description: Intersil Prism 2.5 PCI 802.11b adaptor support
diff --git a/openwrt/target/linux/control/kmod-net-hermes-plx.control b/openwrt/target/linux/control/kmod-net-hermes-plx.control
deleted file mode 100644
index 8df07274d9..0000000000
--- a/openwrt/target/linux/control/kmod-net-hermes-plx.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-net-hermes-plx
-Priority: optional
-Section: sys
-Description: Hermes in PLX9052 based PCI adaptor (Netgear MA301, etc.) kernel support
diff --git a/openwrt/target/linux/control/kmod-net-hermes.control b/openwrt/target/linux/control/kmod-net-hermes.control
deleted file mode 100644
index 7fa91a9d20..0000000000
--- a/openwrt/target/linux/control/kmod-net-hermes.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-net-hermes
-Priority: optional
-Section: sys
-Description: Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) kernel support
diff --git a/openwrt/target/linux/control/kmod-net-natsemi.control b/openwrt/target/linux/control/kmod-net-natsemi.control
deleted file mode 100644
index 740ade67d6..0000000000
--- a/openwrt/target/linux/control/kmod-net-natsemi.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-net-natsemi
-Priority: optional
-Section: sys
-Description: National Semiconductor DP8381x series PCI Ethernet kernel support
diff --git a/openwrt/target/linux/control/kmod-net-prism54.control b/openwrt/target/linux/control/kmod-net-prism54.control
deleted file mode 100644
index 2ba3111ea6..0000000000
--- a/openwrt/target/linux/control/kmod-net-prism54.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-net-prism54
-Priority: optional
-Section: sys
-Description: Intersil Prism GT/Duette/Indigo PCI/PCMCIA cards kernel support
diff --git a/openwrt/target/linux/control/kmod-nls-base.control b/openwrt/target/linux/control/kmod-nls-base.control
deleted file mode 100644
index 067f5dec86..0000000000
--- a/openwrt/target/linux/control/kmod-nls-base.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-nls-base
-Priority: optional
-Section: sys
-Description: Kernel modules for basic native language support
diff --git a/openwrt/target/linux/control/kmod-nls-cp437.control b/openwrt/target/linux/control/kmod-nls-cp437.control
deleted file mode 100644
index f47146083f..0000000000
--- a/openwrt/target/linux/control/kmod-nls-cp437.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-nls-cp437
-Priority: optional
-Section: sys
-Description: Kernel module for codepage 437
diff --git a/openwrt/target/linux/control/kmod-nls-cp850.control b/openwrt/target/linux/control/kmod-nls-cp850.control
deleted file mode 100644
index 1a7d083f90..0000000000
--- a/openwrt/target/linux/control/kmod-nls-cp850.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-nls-cp850
-Priority: optional
-Section: sys
-Description: Kernel module for codepage 850
diff --git a/openwrt/target/linux/control/kmod-nls-iso8859-1.control b/openwrt/target/linux/control/kmod-nls-iso8859-1.control
deleted file mode 100644
index 91e40faa7a..0000000000
--- a/openwrt/target/linux/control/kmod-nls-iso8859-1.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-nls-iso8859-1
-Priority: optional
-Section: sys
-Description: Kernel module for iso8859-1 charset support
diff --git a/openwrt/target/linux/control/kmod-nls-iso8859-15.control b/openwrt/target/linux/control/kmod-nls-iso8859-15.control
deleted file mode 100644
index f565e379e9..0000000000
--- a/openwrt/target/linux/control/kmod-nls-iso8859-15.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-nls-iso8859-15
-Priority: optional
-Section: sys
-Description: Kernel module for iso8859-15 charset support
diff --git a/openwrt/target/linux/control/kmod-nls-utf8.control b/openwrt/target/linux/control/kmod-nls-utf8.control
deleted file mode 100644
index 8c5b23c37e..0000000000
--- a/openwrt/target/linux/control/kmod-nls-utf8.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-nls-utf8
-Priority: optional
-Section: sys
-Description: Kernel module for utf8 support
diff --git a/openwrt/target/linux/control/kmod-pcmcia-core.control b/openwrt/target/linux/control/kmod-pcmcia-core.control
deleted file mode 100644
index 3e137ea06d..0000000000
--- a/openwrt/target/linux/control/kmod-pcmcia-core.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-pcmcia-core
-Priority: optional
-Section: sys
-Description: PCMCIA/CardBus kernel support
diff --git a/openwrt/target/linux/control/kmod-pcmcia-serial.control b/openwrt/target/linux/control/kmod-pcmcia-serial.control
deleted file mode 100644
index 7e8a03c957..0000000000
--- a/openwrt/target/linux/control/kmod-pcmcia-serial.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-pcmcia-serial
-Priority: optional
-Section: sys
-Description: PCMCIA/CardBus serial device support
diff --git a/openwrt/target/linux/control/kmod-ppp.control b/openwrt/target/linux/control/kmod-ppp.control
deleted file mode 100644
index d851e6526e..0000000000
--- a/openwrt/target/linux/control/kmod-ppp.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-ppp
-Priority: optional
-Section: net
-Description: PPP support
diff --git a/openwrt/target/linux/control/kmod-pppoatm.control b/openwrt/target/linux/control/kmod-pppoatm.control
deleted file mode 100644
index c777362ab7..0000000000
--- a/openwrt/target/linux/control/kmod-pppoatm.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-pppoatm
-Priority: optional
-Section: net
-Description: PPP over ATM support
diff --git a/openwrt/target/linux/control/kmod-pppoe.control b/openwrt/target/linux/control/kmod-pppoe.control
deleted file mode 100644
index 3216e2c889..0000000000
--- a/openwrt/target/linux/control/kmod-pppoe.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-pppoe
-Priority: optional
-Section: net
-Description: PPP over Ethernet support
diff --git a/openwrt/target/linux/control/kmod-pwc.control b/openwrt/target/linux/control/kmod-pwc.control
deleted file mode 100644
index 2860eedf3d..0000000000
--- a/openwrt/target/linux/control/kmod-pwc.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-pwc
-Priority: optional
-Section: sys
-Description: Kernel driver for USB Philips Cameras
diff --git a/openwrt/target/linux/control/kmod-sangam-atm-annex-a.control b/openwrt/target/linux/control/kmod-sangam-atm-annex-a.control
deleted file mode 100644
index e07e724565..0000000000
--- a/openwrt/target/linux/control/kmod-sangam-atm-annex-a.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-sangam-atm-annex-a
-Priority: optional
-Section: sys
-Description: AR7 Sangam ATM/ADSL driver (Annex A version)
diff --git a/openwrt/target/linux/control/kmod-sangam-atm-annex-b.control b/openwrt/target/linux/control/kmod-sangam-atm-annex-b.control
deleted file mode 100644
index 7e6ff3f63e..0000000000
--- a/openwrt/target/linux/control/kmod-sangam-atm-annex-b.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-sangam-atm-annex-b
-Priority: optional
-Section: sys
-Description: AR7 Sangam ATM/ADSL driver (Annex B version)
diff --git a/openwrt/target/linux/control/kmod-sched.control b/openwrt/target/linux/control/kmod-sched.control
deleted file mode 100644
index 53e993de47..0000000000
--- a/openwrt/target/linux/control/kmod-sched.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-sched
-Priority: optional
-Section: sys
-Description: Kernel schedulers for IP traffic
diff --git a/openwrt/target/linux/control/kmod-softdog.control b/openwrt/target/linux/control/kmod-softdog.control
deleted file mode 100644
index 01aff7fe8e..0000000000
--- a/openwrt/target/linux/control/kmod-softdog.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-softdog
-Priority: optional
-Section: sys
-Description: Kernel software watchdog driver
diff --git a/openwrt/target/linux/control/kmod-soundcore.control b/openwrt/target/linux/control/kmod-soundcore.control
deleted file mode 100644
index 6b4fffa058..0000000000
--- a/openwrt/target/linux/control/kmod-soundcore.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-soundcore
-Priority: optional
-Section: sys
-Description: Kernel support for audio soundcards
diff --git a/openwrt/target/linux/control/kmod-tun.control b/openwrt/target/linux/control/kmod-tun.control
deleted file mode 100644
index b60a8feee5..0000000000
--- a/openwrt/target/linux/control/kmod-tun.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-tun
-Priority: optional
-Section: sys
-Description: Kernel TUN/TAP extension
diff --git a/openwrt/target/linux/control/kmod-usb-acm.control b/openwrt/target/linux/control/kmod-usb-acm.control
deleted file mode 100644
index 8d1fca496b..0000000000
--- a/openwrt/target/linux/control/kmod-usb-acm.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-acm
-Priority: optional
-Section: sys
-Description: Kernel modules for USB modems and ISDN
diff --git a/openwrt/target/linux/control/kmod-usb-atm-speedtouch.control b/openwrt/target/linux/control/kmod-usb-atm-speedtouch.control
deleted file mode 100644
index e8ded69d48..0000000000
--- a/openwrt/target/linux/control/kmod-usb-atm-speedtouch.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-atm-speedtouch
-Priority: optional
-Section: sys
-Description: Kernel driver for USB Speedtouch ADSL modem
diff --git a/openwrt/target/linux/control/kmod-usb-atm.control b/openwrt/target/linux/control/kmod-usb-atm.control
deleted file mode 100644
index 0f4adadd4a..0000000000
--- a/openwrt/target/linux/control/kmod-usb-atm.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: kmod-usb-atm
-Priority: optional
-Section: sys
-Source: buildroot internal
-Description: Kernel modules for USB ATM support
diff --git a/openwrt/target/linux/control/kmod-usb-audio.control b/openwrt/target/linux/control/kmod-usb-audio.control
deleted file mode 100644
index d30b8f2c70..0000000000
--- a/openwrt/target/linux/control/kmod-usb-audio.control
+++ /dev/null
@@ -1,5 +0,0 @@
-Package: kmod-usb-audio
-Priority: optional
-Section: sys
-Depends: kmod-soundcore
-Description: Kernel Support for USB Soundcards
diff --git a/openwrt/target/linux/control/kmod-usb-core.control b/openwrt/target/linux/control/kmod-usb-core.control
deleted file mode 100644
index fa1c13bbd8..0000000000
--- a/openwrt/target/linux/control/kmod-usb-core.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-core
-Priority: optional
-Section: sys
-Description: Kernel Support for USB
diff --git a/openwrt/target/linux/control/kmod-usb-ohci.control b/openwrt/target/linux/control/kmod-usb-ohci.control
deleted file mode 100644
index 3d0edc863c..0000000000
--- a/openwrt/target/linux/control/kmod-usb-ohci.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-ohci
-Priority: optional
-Section: sys
-Description: Kernel driver for OHCI USB controllers
diff --git a/openwrt/target/linux/control/kmod-usb-printer.control b/openwrt/target/linux/control/kmod-usb-printer.control
deleted file mode 100644
index 1c47a3d176..0000000000
--- a/openwrt/target/linux/control/kmod-usb-printer.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-printer
-Priority: optional
-Section: sys
-Description: Kernel modules for USB Printer support
diff --git a/openwrt/target/linux/control/kmod-usb-serial-belkin.control b/openwrt/target/linux/control/kmod-usb-serial-belkin.control
deleted file mode 100644
index d907a9702b..0000000000
--- a/openwrt/target/linux/control/kmod-usb-serial-belkin.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-serial-belkin
-Priority: optional
-Section: sys
-Description: Kernel Support for Belkin USB-to-Serial converters
diff --git a/openwrt/target/linux/control/kmod-usb-serial-ftdi.control b/openwrt/target/linux/control/kmod-usb-serial-ftdi.control
deleted file mode 100644
index e845294a5f..0000000000
--- a/openwrt/target/linux/control/kmod-usb-serial-ftdi.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-serial-ftdi
-Priority: optional
-Section: sys
-Description: Kernel Support for FTDI USB-to-Serial converters
diff --git a/openwrt/target/linux/control/kmod-usb-serial-mct-u232.control b/openwrt/target/linux/control/kmod-usb-serial-mct-u232.control
deleted file mode 100644
index b52b7ca7b3..0000000000
--- a/openwrt/target/linux/control/kmod-usb-serial-mct-u232.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-serial-mct-u232
-Priority: optional
-Section: sys
-Description: Kernel Support for Magic Control Technology USB-to-Serial converters
diff --git a/openwrt/target/linux/control/kmod-usb-serial-pl2303.control b/openwrt/target/linux/control/kmod-usb-serial-pl2303.control
deleted file mode 100644
index 4de43bd510..0000000000
--- a/openwrt/target/linux/control/kmod-usb-serial-pl2303.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-serial-pl2303
-Priority: optional
-Section: sys
-Description: Kernel Support for Prolific PL2303 USB-to-Serial converters
diff --git a/openwrt/target/linux/control/kmod-usb-serial-visor.control b/openwrt/target/linux/control/kmod-usb-serial-visor.control
deleted file mode 100644
index 951c00c51f..0000000000
--- a/openwrt/target/linux/control/kmod-usb-serial-visor.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-serial-visor
-Priority: optional
-Section: sys
-Description: Kernel Support for Handspring Visor / Palm m50x / Sony Clie Driver
diff --git a/openwrt/target/linux/control/kmod-usb-serial.control b/openwrt/target/linux/control/kmod-usb-serial.control
deleted file mode 100644
index 136fca752f..0000000000
--- a/openwrt/target/linux/control/kmod-usb-serial.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-serial
-Priority: optional
-Section: sys
-Description: Kernel Support for USB-to-Serial converters
diff --git a/openwrt/target/linux/control/kmod-usb-storage.control b/openwrt/target/linux/control/kmod-usb-storage.control
deleted file mode 100644
index 4ee70eb8a9..0000000000
--- a/openwrt/target/linux/control/kmod-usb-storage.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-storage
-Priority: optional
-Section: sys
-Description: Kernel modules for USB storage support
diff --git a/openwrt/target/linux/control/kmod-usb-uhci.control b/openwrt/target/linux/control/kmod-usb-uhci.control
deleted file mode 100644
index 09966a8a0e..0000000000
--- a/openwrt/target/linux/control/kmod-usb-uhci.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb-uhci
-Priority: optional
-Section: sys
-Description: Kernel driver for UHCI USB controllers
diff --git a/openwrt/target/linux/control/kmod-usb2.control b/openwrt/target/linux/control/kmod-usb2.control
deleted file mode 100644
index 338865e524..0000000000
--- a/openwrt/target/linux/control/kmod-usb2.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-usb2
-Priority: optional
-Section: sys
-Description: Kernel driver for USB2 controllers
diff --git a/openwrt/target/linux/control/kmod-videodev.control b/openwrt/target/linux/control/kmod-videodev.control
deleted file mode 100644
index 57c0b1cdfe..0000000000
--- a/openwrt/target/linux/control/kmod-videodev.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-videodev
-Priority: optional
-Section: sys
-Description: Video For Linux kernel support
diff --git a/openwrt/target/linux/control/kmod-wd1100.control b/openwrt/target/linux/control/kmod-wd1100.control
deleted file mode 100644
index 32163200ec..0000000000
--- a/openwrt/target/linux/control/kmod-wd1100.control
+++ /dev/null
@@ -1,4 +0,0 @@
-Package: kmod-wd1100
-Priority: optional
-Section: sys
-Description: NatSemi SC1x00 series Watchdog kernel support
diff --git a/openwrt/target/linux/generic-2.4/README b/openwrt/target/linux/generic-2.4/README
deleted file mode 100644
index 15d95232d7..0000000000
--- a/openwrt/target/linux/generic-2.4/README
+++ /dev/null
@@ -1,98 +0,0 @@
-Description of kernel patches:
-
-
-generic/
- Generic patches for vanilla Linux kernel
-
-000-linux_mips.patch
- This is the diff between vanilla linux-2.4.32 and linux-mips.org kernel
- (CVS tag 2_4_32-rc1 used). The kernel source from linux-mips.org CVS repository has
- newer drivers and code then vanilla linux-2.4.32 especially for the mips architecture.
-
-001-squashfs.patch
- Support for the squashfs filesystem. It has better compression ratio then cramfs.
-
-002-squashfs_lzma.patch
- LZMA Addon patch from Oleg I. Vdovikin for the squashfs filesystem.
- Even better compression ratio.
-
-003-jffs2_compression.patch
- Compression for jffs2 filesystem.
-
-004-exec_pagesize.patch
-
-005-mtd_flashtypes.patch
- Additional mtd drivers for flash chips
-
-100-ebtables.patch
- Filtering packets on ethernet layer. See http://ebtables.sf.net
-
-101-netfilter_ipp2p.patch
- Netfilter ipp2p match module (matches traffic of most P2P networks)
-
-102-netfilter_layer7.patch
-
-103-netfilter_nat_pptp.patch
- NAT support for PPTP and GRE
-
-104-netfilter_maxconn.patch
-
-105-netfilter_TTL.patch
- Netfilter target for manipulating the TTL of IP packets
-
-106-mppe_mppc.patch
- Microsoft PPP Encryption/Compression
-
-107-cifs.patch
- CIFS (Common Internet File System) module.
-
-108-optional_aout_support.patch
-
-109-ipsec_nat_traversal.patch
- Openswan patch for allowing IPSec through NAT
-
-110-netdev_random_core.patch
- Support for gathering entropy from network devices for /dev/random
-
-200-i4l.patch
-
-201-hfc_usb_backport.patch
-
-202-pl2303_backport.patch
-
-203-hfsplus_fix.patch
-
-204-net_b44.patch
- Support for the BCM47xx chipset in the b44 driver
-
-206-gcc_3.4_fixes.patch
- mips specific gcc 3.4 fixes
-
-207-gcc_4.0_fixes.patch
- gcc 4.0 fixes
-
-
-brcm/
- Broadcom specific patches
-
-001-bcm47xx.patch
- This is the broadcom specific code from asus (1941) GPL source tarball.
- There are many small patches included, so it works with linux 2.4.32 kernel.
- The original code is based on Linux 2.4.20.
-
-002-wl_fix.patch
- The driver for the wireless lan chip on brcm47xx based routers is binary only.
- This means it depends on older data structures in the kernel. We backported some
- of the changes or changed some of the data structures to work with the binary modul.
- This is a really bad hack, but without source code, there is no better chance to get
- the driver working with newer kernels.
-
-003-bcm47xx_cache_fixes.patch
-
-
-ar7/
- TI AR7 specific patches
-
-000-ar7_support.patch
-
-001-flash_map.patch
diff --git a/openwrt/target/linux/generic-2.4/modules.mk b/openwrt/target/linux/generic-2.4/modules.mk
deleted file mode 100644
index 540ac715cc..0000000000
--- a/openwrt/target/linux/generic-2.4/modules.mk
+++ /dev/null
@@ -1,320 +0,0 @@
-include ../netfilter.mk
-
-# Networking
-
-$(eval $(call KMOD_template,ATM,atm,\
- $(MODULES_DIR)/kernel/net/atm/atm.o \
- $(MODULES_DIR)/kernel/net/atm/br2684.o \
-,CONFIG_ATM,,50,atm))
-
-$(eval $(call KMOD_template,GRE,gre,\
- $(MODULES_DIR)/kernel/net/ipv4/ip_gre.o \
-,CONFIG_NET_IPGRE))
-
-$(eval $(call KMOD_template,IMQ,imq,\
- $(MODULES_DIR)/kernel/net/ipv4/netfilter/*IMQ*.o \
- $(MODULES_DIR)/kernel/drivers/net/imq.o \
-))
-$(eval $(call KMOD_template,IPIP,ipip,\
- $(MODULES_DIR)/kernel/net/ipv4/ipip.o \
-,CONFIG_NET_IPIP,,60,ipip))
-
-$(eval $(call KMOD_template,IPV6,ipv6,\
- $(MODULES_DIR)/kernel/net/ipv6/ipv6.o \
-,CONFIG_IPV6,,20,ipv6))
-
-$(eval $(call KMOD_template,PPP,ppp,\
- $(MODULES_DIR)/kernel/drivers/net/ppp_async.o \
- $(MODULES_DIR)/kernel/drivers/net/ppp_generic.o \
- $(MODULES_DIR)/kernel/drivers/net/slhc.o \
- $(MODULES_DIR)/kernel/drivers/net/pppox.o \
-,CONFIG_PPP))
-
-$(eval $(call KMOD_template,MPPE,mppe,\
- $(MODULES_DIR)/kernel/drivers/net/ppp_mppe_mppc.o \
-,CONFIG_PPP_MPPE_MPPC))
-
-$(eval $(call KMOD_template,PPPOATM,pppoatm,\
- $(MODULES_DIR)/kernel/net/atm/pppoatm.o \
-,CONFIG_PPPOATM))
-
-$(eval $(call KMOD_template,PPPOE,pppoe,\
- $(MODULES_DIR)/kernel/drivers/net/pppoe.o \
-,CONFIG_PPPOE))
-
-$(eval $(call KMOD_template,SCHED,sched,\
- $(MODULES_DIR)/kernel/net/sched/*.o \
-))
-
-$(eval $(call KMOD_template,TUN,tun,\
- $(MODULES_DIR)/kernel/drivers/net/tun.o \
-,CONFIG_TUN,,20,tun))
-
-# Filtering / Firewalling
-
-$(eval $(call KMOD_template,ARPTABLES,arptables,\
- $(MODULES_DIR)/kernel/net/ipv4/netfilter/arp*.o \
-,CONFIG_IP_NF_ARPTABLES))
-
-$(eval $(call KMOD_template,EBTABLES,ebtables,\
- $(MODULES_DIR)/kernel/net/bridge/netfilter/*.o \
-,CONFIG_BRIDGE_NF_EBTABLES))
-
-# metapackage for compatibility ...
-$(eval $(call KMOD_template,IPTABLES_EXTRA,iptables-extra,\
-,,kmod-ipt-conntrack kmod-ipt-extra kmod-ipt-filter kmod-ipt-ipopt kmod-ipt-ipsec kmod-ipt-nat kmod-ipt-nat-extra kmod-ipt-queue kmod-ipt-ulogd))
-
-$(eval $(call KMOD_template,IPT_CONNTRACK,ipt-conntrack,\
- $(foreach mod,$(IPT_CONNTRACK-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_EXTRA,ipt-extra,\
- $(foreach mod,$(IPT_EXTRA-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_FILTER,ipt-filter,\
- $(foreach mod,$(IPT_FILTER-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_IPOPT,ipt-ipopt,\
- $(foreach mod,$(IPT_IPOPT-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_IPSEC,ipt-ipsec,\
- $(foreach mod,$(IPT_IPSEC-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_NAT,ipt-nat,\
- $(foreach mod,$(IPT_NAT-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_NAT_EXTRA,ipt-nat-extra,\
- $(foreach mod,$(IPT_NAT_EXTRA-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-,,,40,$(IPT_NAT_EXTRA-m)))
-
-$(eval $(call KMOD_template,IPT_QUEUE,ipt-queue,\
- $(foreach mod,$(IPT_QUEUE-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_ULOG,ipt-ulog,\
- $(foreach mod,$(IPT_ULOG-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IP6TABLES,ip6tables,\
- $(MODULES_DIR)/kernel/net/ipv6/netfilter/ip*.o \
-,CONFIG_IP6_NF_IPTABLES,kmod-ipv6))
-
-
-# Block devices
-
-$(eval $(call KMOD_template,IDE,ide,\
- $(MODULES_DIR)/kernel/drivers/ide/*.o \
- $(MODULES_DIR)/kernel/drivers/ide/*/*.o \
-,CONFIG_IDE,,20,pdc202xx_old ide-core ide-detect ide-disk))
-
-$(eval $(call KMOD_template,LOOP,loop,\
- $(MODULES_DIR)/kernel/drivers/block/loop.o \
-,CONFIG_BLK_DEV_LOOP,,20,loop))
-
-$(eval $(call KMOD_template,NBD,nbd,\
- $(MODULES_DIR)/kernel/drivers/block/nbd.o \
-,CONFIG_BLK_DEV_NBD,,20,nbd))
-
-
-# Crypto
-
-ifneq ($(wildcard $(MODULES_DIR)/kernel/crypto/*.o),)
-CONFIG_CRYPTO:=m
-endif
-$(eval $(call KMOD_template,CRYPTO,crypto,\
- $(MODULES_DIR)/kernel/crypto/*.o \
-,CONFIG_CRYPTO))
-
-
-# Filesystems
-
-$(eval $(call KMOD_template,FS_CIFS,fs-cifs,\
- $(MODULES_DIR)/kernel/fs/cifs/cifs.o \
-,CONFIG_CIFS,,30,cifs))
-
-$(eval $(call KMOD_template,FS_MINIX,fs-minix,\
- $(MODULES_DIR)/kernel/fs/minix/*.o \
-,CONFIG_MINIX_FS,,30,minix))
-
-$(eval $(call KMOD_template,FS_EXT2,fs-ext2,\
- $(MODULES_DIR)/kernel/fs/ext2/*.o \
-,CONFIG_EXT2_FS,,30,ext2))
-
-$(eval $(call KMOD_template,FS_EXT3,fs-ext3,\
- $(MODULES_DIR)/kernel/fs/ext3/*.o \
- $(MODULES_DIR)/kernel/fs/jbd/*.o \
-,CONFIG_EXT3_FS,,30,jbd ext3))
-
-$(eval $(call KMOD_template,FS_HFSPLUS,fs-hfsplus,\
- $(MODULES_DIR)/kernel/fs/hfsplus/*.o \
-,CONFIG_HFSPLUS_FS,,30,hfsplus))
-
-$(eval $(call KMOD_template,FS_NFS,fs-nfs,\
- $(MODULES_DIR)/kernel/fs/lockd/*.o \
- $(MODULES_DIR)/kernel/fs/nfs/*.o \
- $(MODULES_DIR)/kernel/net/sunrpc/*.o \
-,CONFIG_NFS_FS,,30,sunrpc lockd nfs))
-
-$(eval $(call KMOD_template,FS_VFAT,fs-vfat,\
- $(MODULES_DIR)/kernel/fs/vfat/vfat.o \
- $(MODULES_DIR)/kernel/fs/fat/fat.o \
-,CONFIG_VFAT_FS,,30,fat vfat))
-
-$(eval $(call KMOD_template,FS_XFS,fs-xfs,\
- $(MODULES_DIR)/kernel/fs/xfs/*.o \
-,CONFIG_XFS_FS,,30,xfs))
-
-
-# Multimedia
-
-$(eval $(call KMOD_template,PWC,pwc,\
- $(MODULES_DIR)/kernel/drivers/usb/pwc.o \
-,CONFIG_USB_PWC,kmod-videodev,63,pwc))
-
-$(eval $(call KMOD_template,SOUNDCORE,soundcore,\
- $(MODULES_DIR)/kernel/drivers/sound/soundcore.o \
-,CONFIG_SOUND,,30,soundcore))
-
-$(eval $(call KMOD_template,VIDEODEV,videodev,\
- $(MODULES_DIR)/kernel/drivers/media/video/videodev.o \
-,CONFIG_VIDEO_DEV,,62,videodev))
-
-
-# Network devices
-
-$(eval $(call KMOD_template,NET_3C59X,net-3c59x,\
- $(MODULES_DIR)/kernel/drivers/net/3c59x.o \
-,CONFIG_VORTEX,,10,3c59x))
-
-$(eval $(call KMOD_template,NET_8139TOO,net-8139too,\
- $(MODULES_DIR)/kernel/drivers/net/8139too.o \
- $(MODULES_DIR)/kernel/drivers/net/mii.o \
-,CONFIG_8139TOO,,10,mii 8139too))
-
-$(eval $(call KMOD_template,NET_AIRO,net-airo,\
- $(MODULES_DIR)/kernel/drivers/net/wireless/airo.o \
-,CONFIG_AIRO,,10,airo))
-
-$(eval $(call KMOD_template,NET_E100,net-e100,\
- $(MODULES_DIR)/kernel/drivers/net/e100.o \
-,CONFIG_E100,,10,e100))
-
-$(eval $(call KMOD_template,NET_HERMES,net-hermes,\
- $(MODULES_DIR)/kernel/drivers/net/wireless/hermes.o \
- $(MODULES_DIR)/kernel/drivers/net/wireless/orinoco.o \
-,CONFIG_HERMES,,10,hermes orinoco))
-
-$(eval $(call KMOD_template,NET_HERMES_PCI,net-hermes-pci,\
- $(MODULES_DIR)/kernel/drivers/net/wireless/orinoco_pci.o \
-,CONFIG_PCI_HERMES,kmod-net-hermes,11,orinoco_pci))
-
-$(eval $(call KMOD_template,NET_HERMES_PCI,net-hermes-plx,\
- $(MODULES_DIR)/kernel/drivers/net/wireless/orinoco_plx.o \
-,CONFIG_PLX_HERMES,kmod-net-hermes,11,orinoco_plx))
-
-$(eval $(call KMOD_template,NET_NATSEMI,net-natsemi,\
- $(MODULES_DIR)/kernel/drivers/net/natsemi.o \
-,CONFIG_NATSEMI,,10,natsemi))
-
-$(eval $(call KMOD_template,NET_PRISM54,net-prism54,\
- $(MODULES_DIR)/kernel/drivers/net/wireless/prism54/prism54.o \
-,CONFIG_PRISM54,,10,prism54))
-
-
-# PCMCIA/CardBus
-
-$(eval $(call KMOD_template,PCMCIA_CORE,pcmcia-core,\
- $(MODULES_DIR)/kernel/drivers/pcmcia/pcmcia_core.o \
- $(MODULES_DIR)/kernel/drivers/pcmcia/yenta_socket.o \
- $(MODULES_DIR)/kernel/drivers/pcmcia/ds.o \
-,CONFIG_PCMCIA,,50,pcmcia_core yenta_socket ds))
-
-$(eval $(call KMOD_template,PCMCIA_SERIAL,pcmcia-serial,\
- $(MODULES_DIR)/kernel/drivers/char/pcmcia/serial_cs.o \
-,CONFIG_PCMCIA_SERIAL_CS,kmod-pcmcia-core,51,serial_cs))
-
-
-# USB
-
-$(eval $(call KMOD_template,USB,usb-core,\
- $(MODULES_DIR)/kernel/drivers/usb/usbcore.o \
-,CONFIG_USB,,50,usbcore))
-
-$(eval $(call KMOD_template,USB_OHCI,usb-ohci,\
- $(MODULES_DIR)/kernel/drivers/usb/host/usb-ohci.o \
-,CONFIG_USB_OHCI,kmod-usb-core,60,usb-ohci))
-
-$(eval $(call KMOD_template,USB_UHCI,usb-uhci,\
- $(MODULES_DIR)/kernel/drivers/usb/host/uhci.o \
-,CONFIG_USB_UHCI_ALT,kmod-usb-core,60,uhci))
-
-$(eval $(call KMOD_template,USB2,usb2,\
- $(MODULES_DIR)/kernel/drivers/usb/host/ehci-hcd.o \
-,CONFIG_USB_EHCI_HCD,kmod-usb-core,60,ehci-hcd))
-
-$(eval $(call KMOD_template,USB_ACM,usb-acm,\
- $(MODULES_DIR)/kernel/drivers/usb/acm.o \
-,CONFIG_USB_ACM))
-
-$(eval $(call KMOD_template,USB_AUDIO,usb-audio,\
- $(MODULES_DIR)/kernel/drivers/usb/audio.o \
-,CONFIG_USB_AUDIO,kmod-soundcore kmod-usb-core,61,audio))
-
-$(eval $(call KMOD_template,USB_PRINTER,usb-printer,\
- $(MODULES_DIR)/kernel/drivers/usb/printer.o \
-,CONFIG_USB_PRINTER,kmod-usb-core,60,printer))
-
-$(eval $(call KMOD_template,USB_SERIAL,usb-serial,\
- $(MODULES_DIR)/kernel/drivers/usb/serial/usbserial.o \
-,CONFIG_USB_SERIAL,kmod-usb-core,60,usbserial))
-
-$(eval $(call KMOD_template,USB_SERIAL_BELKIN,usb-serial-belkin,\
- $(MODULES_DIR)/kernel/drivers/usb/serial/belkin_sa.o \
-,CONFIG_USB_SERIAL_BELKIN,kmod-usb-serial,61,belkin_sa))
-
-$(eval $(call KMOD_template,USB_SERIAL_FTDI,usb-serial-ftdi,\
- $(MODULES_DIR)/kernel/drivers/usb/serial/ftdi_sio.o \
-,CONFIG_USB_SERIAL_FTDI_SIO,kmod-usb-serial,61,ftdi_sio))
-
-$(eval $(call KMOD_template,USB_SERIAL_MCT_U232,usb-serial-mct-u232,\
- $(MODULES_DIR)/kernel/drivers/usb/serial/mct_u232.o \
-,CONFIG_USB_SERIAL_MCT_U232,kmod-usb-serial,61,mct_u232))
-
-$(eval $(call KMOD_template,USB_SERIAL_PL2303,usb-serial-pl2303,\
- $(MODULES_DIR)/kernel/drivers/usb/serial/pl2303.o \
-,CONFIG_USB_SERIAL_PL2303,kmod-usb-serial,61,pl2303))
-
-$(eval $(call KMOD_template,USB_SERIAL_VISOR,usb-serial-visor,\
- $(MODULES_DIR)/kernel/drivers/usb/serial/visor.o \
-,CONFIG_USB_SERIAL_VISOR,kmod-usb-serial,61,visor))
-
-$(eval $(call KMOD_template,USB_STORAGE,usb-storage,\
- $(MODULES_DIR)/kernel/drivers/scsi/*.o \
- $(MODULES_DIR)/kernel/drivers/usb/storage/*.o \
-,CONFIG_USB_STORAGE,kmod-usb-core,60,scsi_mod sd_mod usb-storage))
-
-
-# Misc. devices
-
-$(eval $(call KMOD_template,AX25,ax25,\
- $(MODULES_DIR)/kernel/net/ax25/ax25.o \
- $(MODULES_DIR)/kernel/drivers/net/hamradio/mkiss.o \
-,CONFIG_AX25,,90,ax25 mkiss))
-
-$(eval $(call KMOD_template,BLUETOOTH,bluetooth,\
- $(MODULES_DIR)/kernel/net/bluetooth/*.o \
- $(MODULES_DIR)/kernel/net/bluetooth/rfcomm/*.o \
- $(MODULES_DIR)/kernel/drivers/bluetooth/*.o \
-,CONFIG_BLUEZ))
-
-$(eval $(call KMOD_template,SOFTDOG,softdog,\
- $(MODULES_DIR)/kernel/drivers/char/softdog.o \
-,CONFIG_SOFT_WATCHDOG,,95,softdog))
-
-
-
diff --git a/openwrt/target/linux/generic-2.4/patches/000-linux_mips.patch b/openwrt/target/linux/generic-2.4/patches/000-linux_mips.patch
deleted file mode 100644
index 7fae1eefc6..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/000-linux_mips.patch
+++ /dev/null
@@ -1,27968 +0,0 @@
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/au1xxx_irqmap.c linux-2.4.32-rc1.mips/arch/mips/au1000/common/au1xxx_irqmap.c
---- linux-2.4.32-rc1/arch/mips/au1000/common/au1xxx_irqmap.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/au1xxx_irqmap.c 2005-01-30 09:01:27.000000000 +0100
-@@ -172,14 +172,14 @@
- { AU1550_PSC1_INT, INTC_INT_HIGH_LEVEL, 0},
- { AU1550_PSC2_INT, INTC_INT_HIGH_LEVEL, 0},
- { AU1550_PSC3_INT, INTC_INT_HIGH_LEVEL, 0},
-- { AU1550_TOY_INT, INTC_INT_RISE_EDGE, 0 },
-- { AU1550_TOY_MATCH0_INT, INTC_INT_RISE_EDGE, 0 },
-- { AU1550_TOY_MATCH1_INT, INTC_INT_RISE_EDGE, 0 },
-- { AU1550_TOY_MATCH2_INT, INTC_INT_RISE_EDGE, 1 },
-- { AU1550_RTC_INT, INTC_INT_RISE_EDGE, 0 },
-- { AU1550_RTC_MATCH0_INT, INTC_INT_RISE_EDGE, 0 },
-- { AU1550_RTC_MATCH1_INT, INTC_INT_RISE_EDGE, 0 },
-- { AU1550_RTC_MATCH2_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_TOY_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_TOY_MATCH0_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_TOY_MATCH1_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_TOY_MATCH2_INT, INTC_INT_RISE_EDGE, 1 },
-+ { AU1000_RTC_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_RTC_MATCH0_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_RTC_MATCH1_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_RTC_MATCH2_INT, INTC_INT_RISE_EDGE, 0 },
- { AU1550_NAND_INT, INTC_INT_RISE_EDGE, 0},
- { AU1550_USB_DEV_REQ_INT, INTC_INT_HIGH_LEVEL, 0 },
- { AU1550_USB_DEV_SUS_INT, INTC_INT_RISE_EDGE, 0 },
-@@ -200,14 +200,14 @@
- { AU1200_PSC1_INT, INTC_INT_HIGH_LEVEL, 0},
- { AU1200_AES_INT, INTC_INT_HIGH_LEVEL, 0},
- { AU1200_CAMERA_INT, INTC_INT_HIGH_LEVEL, 0},
-- { AU1200_TOY_INT, INTC_INT_RISE_EDGE, 0 },
-- { AU1200_TOY_MATCH0_INT, INTC_INT_RISE_EDGE, 0 },
-- { AU1200_TOY_MATCH1_INT, INTC_INT_RISE_EDGE, 0 },
-- { AU1200_TOY_MATCH2_INT, INTC_INT_RISE_EDGE, 1 },
-- { AU1200_RTC_INT, INTC_INT_RISE_EDGE, 0 },
-- { AU1200_RTC_MATCH0_INT, INTC_INT_RISE_EDGE, 0 },
-- { AU1200_RTC_MATCH1_INT, INTC_INT_RISE_EDGE, 0 },
-- { AU1200_RTC_MATCH2_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_TOY_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_TOY_MATCH0_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_TOY_MATCH1_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_TOY_MATCH2_INT, INTC_INT_RISE_EDGE, 1 },
-+ { AU1000_RTC_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_RTC_MATCH0_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_RTC_MATCH1_INT, INTC_INT_RISE_EDGE, 0 },
-+ { AU1000_RTC_MATCH2_INT, INTC_INT_RISE_EDGE, 0 },
- { AU1200_NAND_INT, INTC_INT_RISE_EDGE, 0},
- { AU1200_USB_INT, INTC_INT_HIGH_LEVEL, 0 },
- { AU1200_LCD_INT, INTC_INT_HIGH_LEVEL, 0},
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/cputable.c linux-2.4.32-rc1.mips/arch/mips/au1000/common/cputable.c
---- linux-2.4.32-rc1/arch/mips/au1000/common/cputable.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/cputable.c 2005-01-30 09:01:27.000000000 +0100
-@@ -39,7 +39,8 @@
- { 0xffffffff, 0x02030203, "Au1100 BD", 0, 1 },
- { 0xffffffff, 0x02030204, "Au1100 BE", 0, 1 },
- { 0xffffffff, 0x03030200, "Au1550 AA", 0, 1 },
-- { 0xffffffff, 0x04030200, "Au1200 AA", 0, 1 },
-+ { 0xffffffff, 0x04030200, "Au1200 AB", 0, 0 },
-+ { 0xffffffff, 0x04030201, "Au1200 AC", 0, 0 },
- { 0x00000000, 0x00000000, "Unknown Au1xxx", 1, 0 },
- };
-
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/dbdma.c linux-2.4.32-rc1.mips/arch/mips/au1000/common/dbdma.c
---- linux-2.4.32-rc1/arch/mips/au1000/common/dbdma.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/dbdma.c 2005-02-08 07:28:37.000000000 +0100
-@@ -41,6 +41,8 @@
- #include <asm/au1xxx_dbdma.h>
- #include <asm/system.h>
-
-+#include <linux/module.h>
-+
- #if defined(CONFIG_SOC_AU1550) || defined(CONFIG_SOC_AU1200)
-
- /*
-@@ -60,37 +62,10 @@
- */
- #define ALIGN_ADDR(x, a) ((((u32)(x)) + (a-1)) & ~(a-1))
-
--static volatile dbdma_global_t *dbdma_gptr = (dbdma_global_t *)DDMA_GLOBAL_BASE;
--static int dbdma_initialized;
-+static dbdma_global_t *dbdma_gptr = (dbdma_global_t *)DDMA_GLOBAL_BASE;
-+static int dbdma_initialized=0;
- static void au1xxx_dbdma_init(void);
-
--typedef struct dbdma_device_table {
-- u32 dev_id;
-- u32 dev_flags;
-- u32 dev_tsize;
-- u32 dev_devwidth;
-- u32 dev_physaddr; /* If FIFO */
-- u32 dev_intlevel;
-- u32 dev_intpolarity;
--} dbdev_tab_t;
--
--typedef struct dbdma_chan_config {
-- u32 chan_flags;
-- u32 chan_index;
-- dbdev_tab_t *chan_src;
-- dbdev_tab_t *chan_dest;
-- au1x_dma_chan_t *chan_ptr;
-- au1x_ddma_desc_t *chan_desc_base;
-- au1x_ddma_desc_t *get_ptr, *put_ptr, *cur_ptr;
-- void *chan_callparam;
-- void (*chan_callback)(int, void *, struct pt_regs *);
--} chan_tab_t;
--
--#define DEV_FLAGS_INUSE (1 << 0)
--#define DEV_FLAGS_ANYUSE (1 << 1)
--#define DEV_FLAGS_OUT (1 << 2)
--#define DEV_FLAGS_IN (1 << 3)
--
- static dbdev_tab_t dbdev_tab[] = {
- #ifdef CONFIG_SOC_AU1550
- /* UARTS */
-@@ -156,13 +131,13 @@
- { DSCR_CMD0_MAE_BOTH, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
- { DSCR_CMD0_LCD, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
-
-- { DSCR_CMD0_SDMS_TX0, DEV_FLAGS_OUT, 0, 0, 0x00000000, 0, 0 },
-- { DSCR_CMD0_SDMS_RX0, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 },
-- { DSCR_CMD0_SDMS_TX1, DEV_FLAGS_OUT, 0, 0, 0x00000000, 0, 0 },
-- { DSCR_CMD0_SDMS_RX1, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 },
-+ { DSCR_CMD0_SDMS_TX0, DEV_FLAGS_OUT, 4, 8, 0x10600000, 0, 0 },
-+ { DSCR_CMD0_SDMS_RX0, DEV_FLAGS_IN, 4, 8, 0x10600004, 0, 0 },
-+ { DSCR_CMD0_SDMS_TX1, DEV_FLAGS_OUT, 4, 8, 0x10680000, 0, 0 },
-+ { DSCR_CMD0_SDMS_RX1, DEV_FLAGS_IN, 4, 8, 0x10680004, 0, 0 },
-
-- { DSCR_CMD0_AES_TX, DEV_FLAGS_OUT, 0, 0, 0x00000000, 0, 0 },
-- { DSCR_CMD0_AES_RX, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 },
-+ { DSCR_CMD0_AES_RX, DEV_FLAGS_IN , 4, 32, 0x10300008, 0, 0 },
-+ { DSCR_CMD0_AES_TX, DEV_FLAGS_OUT, 4, 32, 0x10300004, 0, 0 },
-
- { DSCR_CMD0_PSC0_TX, DEV_FLAGS_OUT, 0, 0, 0x11a0001c, 0, 0 },
- { DSCR_CMD0_PSC0_RX, DEV_FLAGS_IN, 0, 0, 0x11a0001c, 0, 0 },
-@@ -172,9 +147,9 @@
- { DSCR_CMD0_PSC1_RX, DEV_FLAGS_IN, 0, 0, 0x11b0001c, 0, 0 },
- { DSCR_CMD0_PSC1_SYNC, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
-
-- { DSCR_CMD0_CIM_RXA, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 },
-- { DSCR_CMD0_CIM_RXB, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 },
-- { DSCR_CMD0_CIM_RXC, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 },
-+ { DSCR_CMD0_CIM_RXA, DEV_FLAGS_IN, 0, 32, 0x14004020, 0, 0 },
-+ { DSCR_CMD0_CIM_RXB, DEV_FLAGS_IN, 0, 32, 0x14004040, 0, 0 },
-+ { DSCR_CMD0_CIM_RXC, DEV_FLAGS_IN, 0, 32, 0x14004060, 0, 0 },
- { DSCR_CMD0_CIM_SYNC, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
-
- { DSCR_CMD0_NAND_FLASH, DEV_FLAGS_IN, 0, 0, 0x00000000, 0, 0 },
-@@ -183,6 +158,24 @@
-
- { DSCR_CMD0_THROTTLE, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
- { DSCR_CMD0_ALWAYS, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
-+
-+ /* Provide 16 user definable device types */
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
-+ { 0, 0, 0, 0, 0, 0, 0 },
- };
-
- #define DBDEV_TAB_SIZE (sizeof(dbdev_tab) / sizeof(dbdev_tab_t))
-@@ -202,6 +195,30 @@
- return NULL;
- }
-
-+u32
-+au1xxx_ddma_add_device(dbdev_tab_t *dev)
-+{
-+ u32 ret = 0;
-+ dbdev_tab_t *p=NULL;
-+ static u16 new_id=0x1000;
-+
-+ p = find_dbdev_id(0);
-+ if ( NULL != p )
-+ {
-+ memcpy(p, dev, sizeof(dbdev_tab_t));
-+ p->dev_id = DSCR_DEV2CUSTOM_ID(new_id,dev->dev_id);
-+ ret = p->dev_id;
-+ new_id++;
-+#if 0
-+ printk("add_device: id:%x flags:%x padd:%x\n",
-+ p->dev_id, p->dev_flags, p->dev_physaddr );
-+#endif
-+ }
-+
-+ return ret;
-+}
-+EXPORT_SYMBOL(au1xxx_ddma_add_device);
-+
- /* Allocate a channel and return a non-zero descriptor if successful.
- */
- u32
-@@ -214,7 +231,7 @@
- int i;
- dbdev_tab_t *stp, *dtp;
- chan_tab_t *ctp;
-- volatile au1x_dma_chan_t *cp;
-+ au1x_dma_chan_t *cp;
-
- /* We do the intialization on the first channel allocation.
- * We have to wait because of the interrupt handler initialization
-@@ -224,9 +241,6 @@
- au1xxx_dbdma_init();
- dbdma_initialized = 1;
-
-- if ((srcid > DSCR_NDEV_IDS) || (destid > DSCR_NDEV_IDS))
-- return 0;
--
- if ((stp = find_dbdev_id(srcid)) == NULL) return 0;
- if ((dtp = find_dbdev_id(destid)) == NULL) return 0;
-
-@@ -268,9 +282,9 @@
- /* If kmalloc fails, it is caught below same
- * as a channel not available.
- */
-- ctp = (chan_tab_t *)kmalloc(sizeof(chan_tab_t), GFP_KERNEL);
-+ ctp = (chan_tab_t *)
-+ kmalloc(sizeof(chan_tab_t), GFP_KERNEL);
- chan_tab_ptr[i] = ctp;
-- ctp->chan_index = chan = i;
- break;
- }
- }
-@@ -278,10 +292,11 @@
-
- if (ctp != NULL) {
- memset(ctp, 0, sizeof(chan_tab_t));
-+ ctp->chan_index = chan = i;
- dcp = DDMA_CHANNEL_BASE;
- dcp += (0x0100 * chan);
- ctp->chan_ptr = (au1x_dma_chan_t *)dcp;
-- cp = (volatile au1x_dma_chan_t *)dcp;
-+ cp = (au1x_dma_chan_t *)dcp;
- ctp->chan_src = stp;
- ctp->chan_dest = dtp;
- ctp->chan_callback = callback;
-@@ -298,6 +313,9 @@
- i |= DDMA_CFG_DED;
- if (dtp->dev_intpolarity)
- i |= DDMA_CFG_DP;
-+ if ((stp->dev_flags & DEV_FLAGS_SYNC) ||
-+ (dtp->dev_flags & DEV_FLAGS_SYNC))
-+ i |= DDMA_CFG_SYNC;
- cp->ddma_cfg = i;
- au_sync();
-
-@@ -308,14 +326,14 @@
- rv = (u32)(&chan_tab_ptr[chan]);
- }
- else {
-- /* Release devices.
-- */
-+ /* Release devices */
- stp->dev_flags &= ~DEV_FLAGS_INUSE;
- dtp->dev_flags &= ~DEV_FLAGS_INUSE;
- }
- }
- return rv;
- }
-+EXPORT_SYMBOL(au1xxx_dbdma_chan_alloc);
-
- /* Set the device width if source or destination is a FIFO.
- * Should be 8, 16, or 32 bits.
-@@ -343,6 +361,7 @@
-
- return rv;
- }
-+EXPORT_SYMBOL(au1xxx_dbdma_set_devwidth);
-
- /* Allocate a descriptor ring, initializing as much as possible.
- */
-@@ -369,7 +388,8 @@
- * and if we try that first we are likely to not waste larger
- * slabs of memory.
- */
-- desc_base = (u32)kmalloc(entries * sizeof(au1x_ddma_desc_t), GFP_KERNEL);
-+ desc_base = (u32)kmalloc(entries * sizeof(au1x_ddma_desc_t),
-+ GFP_KERNEL|GFP_DMA);
- if (desc_base == 0)
- return 0;
-
-@@ -380,7 +400,7 @@
- kfree((const void *)desc_base);
- i = entries * sizeof(au1x_ddma_desc_t);
- i += (sizeof(au1x_ddma_desc_t) - 1);
-- if ((desc_base = (u32)kmalloc(i, GFP_KERNEL)) == 0)
-+ if ((desc_base = (u32)kmalloc(i, GFP_KERNEL|GFP_DMA)) == 0)
- return 0;
-
- desc_base = ALIGN_ADDR(desc_base, sizeof(au1x_ddma_desc_t));
-@@ -460,9 +480,14 @@
- /* If source input is fifo, set static address.
- */
- if (stp->dev_flags & DEV_FLAGS_IN) {
-- src0 = stp->dev_physaddr;
-- src1 |= DSCR_SRC1_SAM(DSCR_xAM_STATIC);
-+ if ( stp->dev_flags & DEV_FLAGS_BURSTABLE )
-+ src1 |= DSCR_SRC1_SAM(DSCR_xAM_BURST);
-+ else
-+ src1 |= DSCR_SRC1_SAM(DSCR_xAM_STATIC);
-+
- }
-+ if (stp->dev_physaddr)
-+ src0 = stp->dev_physaddr;
-
- /* Set up dest1. For now, assume no stride and increment.
- * A channel attribute update can change this later.
-@@ -486,10 +511,18 @@
- /* If destination output is fifo, set static address.
- */
- if (dtp->dev_flags & DEV_FLAGS_OUT) {
-- dest0 = dtp->dev_physaddr;
-+ if ( dtp->dev_flags & DEV_FLAGS_BURSTABLE )
-+ dest1 |= DSCR_DEST1_DAM(DSCR_xAM_BURST);
-+ else
- dest1 |= DSCR_DEST1_DAM(DSCR_xAM_STATIC);
- }
-+ if (dtp->dev_physaddr)
-+ dest0 = dtp->dev_physaddr;
-
-+#if 0
-+ printk("did:%x sid:%x cmd0:%x cmd1:%x source0:%x source1:%x dest0:%x dest1:%x\n",
-+ dtp->dev_id, stp->dev_id, cmd0, cmd1, src0, src1, dest0, dest1 );
-+#endif
- for (i=0; i<entries; i++) {
- dp->dscr_cmd0 = cmd0;
- dp->dscr_cmd1 = cmd1;
-@@ -498,6 +531,7 @@
- dp->dscr_dest0 = dest0;
- dp->dscr_dest1 = dest1;
- dp->dscr_stat = 0;
-+ dp->sw_context = dp->sw_status = 0;
- dp->dscr_nxtptr = DSCR_NXTPTR(virt_to_phys(dp + 1));
- dp++;
- }
-@@ -510,13 +544,14 @@
-
- return (u32)(ctp->chan_desc_base);
- }
-+EXPORT_SYMBOL(au1xxx_dbdma_ring_alloc);
-
- /* Put a source buffer into the DMA ring.
- * This updates the source pointer and byte count. Normally used
- * for memory to fifo transfers.
- */
- u32
--au1xxx_dbdma_put_source(u32 chanid, void *buf, int nbytes)
-+_au1xxx_dbdma_put_source(u32 chanid, void *buf, int nbytes, u32 flags)
- {
- chan_tab_t *ctp;
- au1x_ddma_desc_t *dp;
-@@ -543,24 +578,40 @@
- */
- dp->dscr_source0 = virt_to_phys(buf);
- dp->dscr_cmd1 = nbytes;
-- dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */
-- ctp->chan_ptr->ddma_dbell = 0xffffffff; /* Make it go */
--
-+ /* Check flags */
-+ if (flags & DDMA_FLAGS_IE)
-+ dp->dscr_cmd0 |= DSCR_CMD0_IE;
-+ if (flags & DDMA_FLAGS_NOIE)
-+ dp->dscr_cmd0 &= ~DSCR_CMD0_IE;
- /* Get next descriptor pointer.
- */
- ctp->put_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
-
-+ /*
-+ * There is an errata on the Au1200/Au1550 parts that could result
-+ * in "stale" data being DMA'd. It has to do with the snoop logic on
-+ * the dache eviction buffer. NONCOHERENT_IO is on by default for
-+ * these parts. If it is fixedin the future, these dma_cache_inv will
-+ * just be nothing more than empty macros. See io.h.
-+ * */
-+ dma_cache_wback_inv(buf,nbytes);
-+ dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */
-+ au_sync();
-+ dma_cache_wback_inv(dp, sizeof(dp));
-+ ctp->chan_ptr->ddma_dbell = 0;
-+
- /* return something not zero.
- */
- return nbytes;
- }
-+EXPORT_SYMBOL(_au1xxx_dbdma_put_source);
-
- /* Put a destination buffer into the DMA ring.
- * This updates the destination pointer and byte count. Normally used
- * to place an empty buffer into the ring for fifo to memory transfers.
- */
- u32
--au1xxx_dbdma_put_dest(u32 chanid, void *buf, int nbytes)
-+_au1xxx_dbdma_put_dest(u32 chanid, void *buf, int nbytes, u32 flags)
- {
- chan_tab_t *ctp;
- au1x_ddma_desc_t *dp;
-@@ -582,11 +633,33 @@
- if (dp->dscr_cmd0 & DSCR_CMD0_V)
- return 0;
-
-- /* Load up buffer address and byte count.
-- */
-+ /* Load up buffer address and byte count */
-+
-+ /* Check flags */
-+ if (flags & DDMA_FLAGS_IE)
-+ dp->dscr_cmd0 |= DSCR_CMD0_IE;
-+ if (flags & DDMA_FLAGS_NOIE)
-+ dp->dscr_cmd0 &= ~DSCR_CMD0_IE;
-+
- dp->dscr_dest0 = virt_to_phys(buf);
- dp->dscr_cmd1 = nbytes;
-+#if 0
-+ printk("cmd0:%x cmd1:%x source0:%x source1:%x dest0:%x dest1:%x\n",
-+ dp->dscr_cmd0, dp->dscr_cmd1, dp->dscr_source0,
-+ dp->dscr_source1, dp->dscr_dest0, dp->dscr_dest1 );
-+#endif
-+ /*
-+ * There is an errata on the Au1200/Au1550 parts that could result in
-+ * "stale" data being DMA'd. It has to do with the snoop logic on the
-+ * dache eviction buffer. NONCOHERENT_IO is on by default for these
-+ * parts. If it is fixedin the future, these dma_cache_inv will just
-+ * be nothing more than empty macros. See io.h.
-+ * */
-+ dma_cache_inv(buf,nbytes);
- dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */
-+ au_sync();
-+ dma_cache_wback_inv(dp, sizeof(dp));
-+ ctp->chan_ptr->ddma_dbell = 0;
-
- /* Get next descriptor pointer.
- */
-@@ -596,6 +669,7 @@
- */
- return nbytes;
- }
-+EXPORT_SYMBOL(_au1xxx_dbdma_put_dest);
-
- /* Get a destination buffer into the DMA ring.
- * Normally used to get a full buffer from the ring during fifo
-@@ -645,7 +719,7 @@
- au1xxx_dbdma_stop(u32 chanid)
- {
- chan_tab_t *ctp;
-- volatile au1x_dma_chan_t *cp;
-+ au1x_dma_chan_t *cp;
- int halt_timeout = 0;
-
- ctp = *((chan_tab_t **)chanid);
-@@ -665,6 +739,7 @@
- cp->ddma_stat |= (DDMA_STAT_DB | DDMA_STAT_V);
- au_sync();
- }
-+EXPORT_SYMBOL(au1xxx_dbdma_stop);
-
- /* Start using the current descriptor pointer. If the dbdma encounters
- * a not valid descriptor, it will stop. In this case, we can just
-@@ -674,17 +749,17 @@
- au1xxx_dbdma_start(u32 chanid)
- {
- chan_tab_t *ctp;
-- volatile au1x_dma_chan_t *cp;
-+ au1x_dma_chan_t *cp;
-
- ctp = *((chan_tab_t **)chanid);
--
- cp = ctp->chan_ptr;
- cp->ddma_desptr = virt_to_phys(ctp->cur_ptr);
- cp->ddma_cfg |= DDMA_CFG_EN; /* Enable channel */
- au_sync();
-- cp->ddma_dbell = 0xffffffff; /* Make it go */
-+ cp->ddma_dbell = 0;
- au_sync();
- }
-+EXPORT_SYMBOL(au1xxx_dbdma_start);
-
- void
- au1xxx_dbdma_reset(u32 chanid)
-@@ -703,15 +778,21 @@
-
- do {
- dp->dscr_cmd0 &= ~DSCR_CMD0_V;
-+ /* reset our SW status -- this is used to determine
-+ * if a descriptor is in use by upper level SW. Since
-+ * posting can reset 'V' bit.
-+ */
-+ dp->sw_status = 0;
- dp = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
- } while (dp != ctp->chan_desc_base);
- }
-+EXPORT_SYMBOL(au1xxx_dbdma_reset);
-
- u32
- au1xxx_get_dma_residue(u32 chanid)
- {
- chan_tab_t *ctp;
-- volatile au1x_dma_chan_t *cp;
-+ au1x_dma_chan_t *cp;
- u32 rv;
-
- ctp = *((chan_tab_t **)chanid);
-@@ -746,15 +827,16 @@
-
- kfree(ctp);
- }
-+EXPORT_SYMBOL(au1xxx_dbdma_chan_free);
-
- static void
- dbdma_interrupt(int irq, void *dev_id, struct pt_regs *regs)
- {
-- u32 intstat;
-+ u32 intstat, flags;
- u32 chan_index;
- chan_tab_t *ctp;
- au1x_ddma_desc_t *dp;
-- volatile au1x_dma_chan_t *cp;
-+ au1x_dma_chan_t *cp;
-
- intstat = dbdma_gptr->ddma_intstat;
- au_sync();
-@@ -773,18 +855,26 @@
- (ctp->chan_callback)(irq, ctp->chan_callparam, regs);
-
- ctp->cur_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
--
- }
-
--static void
--au1xxx_dbdma_init(void)
-+static void au1xxx_dbdma_init(void)
- {
-+ int irq_nr;
-+
- dbdma_gptr->ddma_config = 0;
- dbdma_gptr->ddma_throttle = 0;
- dbdma_gptr->ddma_inten = 0xffff;
- au_sync();
-
-- if (request_irq(AU1550_DDMA_INT, dbdma_interrupt, SA_INTERRUPT,
-+#if defined(CONFIG_SOC_AU1550)
-+ irq_nr = AU1550_DDMA_INT;
-+#elif defined(CONFIG_SOC_AU1200)
-+ irq_nr = AU1200_DDMA_INT;
-+#else
-+ #error Unknown Au1x00 SOC
-+#endif
-+
-+ if (request_irq(irq_nr, dbdma_interrupt, SA_INTERRUPT,
- "Au1xxx dbdma", (void *)dbdma_gptr))
- printk("Can't get 1550 dbdma irq");
- }
-@@ -795,7 +885,8 @@
- chan_tab_t *ctp;
- au1x_ddma_desc_t *dp;
- dbdev_tab_t *stp, *dtp;
-- volatile au1x_dma_chan_t *cp;
-+ au1x_dma_chan_t *cp;
-+ u32 i = 0;
-
- ctp = *((chan_tab_t **)chanid);
- stp = ctp->chan_src;
-@@ -820,15 +911,64 @@
- dp = ctp->chan_desc_base;
-
- do {
-- printk("dp %08x, cmd0 %08x, cmd1 %08x\n",
-- (u32)dp, dp->dscr_cmd0, dp->dscr_cmd1);
-- printk("src0 %08x, src1 %08x, dest0 %08x\n",
-- dp->dscr_source0, dp->dscr_source1, dp->dscr_dest0);
-- printk("dest1 %08x, stat %08x, nxtptr %08x\n",
-- dp->dscr_dest1, dp->dscr_stat, dp->dscr_nxtptr);
-+ printk("Dp[%d]= %08x, cmd0 %08x, cmd1 %08x\n",
-+ i++, (u32)dp, dp->dscr_cmd0, dp->dscr_cmd1);
-+ printk("src0 %08x, src1 %08x, dest0 %08x, dest1 %08x\n",
-+ dp->dscr_source0, dp->dscr_source1, dp->dscr_dest0, dp->dscr_dest1);
-+ printk("stat %08x, nxtptr %08x\n",
-+ dp->dscr_stat, dp->dscr_nxtptr);
- dp = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
- } while (dp != ctp->chan_desc_base);
- }
-
-+/* Put a descriptor into the DMA ring.
-+ * This updates the source/destination pointers and byte count.
-+ */
-+u32
-+au1xxx_dbdma_put_dscr(u32 chanid, au1x_ddma_desc_t *dscr )
-+{
-+ chan_tab_t *ctp;
-+ au1x_ddma_desc_t *dp;
-+ u32 nbytes=0;
-+
-+ /* I guess we could check this to be within the
-+ * range of the table......
-+ */
-+ ctp = *((chan_tab_t **)chanid);
-+
-+ /* We should have multiple callers for a particular channel,
-+ * an interrupt doesn't affect this pointer nor the descriptor,
-+ * so no locking should be needed.
-+ */
-+ dp = ctp->put_ptr;
-+
-+ /* If the descriptor is valid, we are way ahead of the DMA
-+ * engine, so just return an error condition.
-+ */
-+ if (dp->dscr_cmd0 & DSCR_CMD0_V)
-+ return 0;
-+
-+ /* Load up buffer addresses and byte count.
-+ */
-+ dp->dscr_dest0 = dscr->dscr_dest0;
-+ dp->dscr_source0 = dscr->dscr_source0;
-+ dp->dscr_dest1 = dscr->dscr_dest1;
-+ dp->dscr_source1 = dscr->dscr_source1;
-+ dp->dscr_cmd1 = dscr->dscr_cmd1;
-+ nbytes = dscr->dscr_cmd1;
-+ /* Allow the caller to specifiy if an interrupt is generated */
-+ dp->dscr_cmd0 &= ~DSCR_CMD0_IE;
-+ dp->dscr_cmd0 |= dscr->dscr_cmd0 | DSCR_CMD0_V;
-+ ctp->chan_ptr->ddma_dbell = 0;
-+
-+ /* Get next descriptor pointer.
-+ */
-+ ctp->put_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
-+
-+ /* return something not zero.
-+ */
-+ return nbytes;
-+}
-+
- #endif /* defined(CONFIG_SOC_AU1550) || defined(CONFIG_SOC_AU1200) */
-
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/gpio.c linux-2.4.32-rc1.mips/arch/mips/au1000/common/gpio.c
---- linux-2.4.32-rc1/arch/mips/au1000/common/gpio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/gpio.c 2005-01-30 09:01:27.000000000 +0100
-@@ -0,0 +1,118 @@
-+/*
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <asm/au1000.h>
-+#include <asm/au1xxx_gpio.h>
-+
-+#define gpio1 sys
-+#if !defined(CONFIG_SOC_AU1000)
-+static AU1X00_GPIO2 * const gpio2 = (AU1X00_GPIO2 *)GPIO2_BASE;
-+
-+#define GPIO2_OUTPUT_ENABLE_MASK 0x00010000
-+
-+int au1xxx_gpio2_read(int signal)
-+{
-+ signal -= 200;
-+/* gpio2->dir &= ~(0x01 << signal); //Set GPIO to input */
-+ return ((gpio2->pinstate >> signal) & 0x01);
-+}
-+
-+void au1xxx_gpio2_write(int signal, int value)
-+{
-+ signal -= 200;
-+
-+ gpio2->output = (GPIO2_OUTPUT_ENABLE_MASK << signal) |
-+ (value << signal);
-+}
-+
-+void au1xxx_gpio2_tristate(int signal)
-+{
-+ signal -= 200;
-+ gpio2->dir &= ~(0x01 << signal); /* Set GPIO to input */
-+}
-+#endif
-+
-+int au1xxx_gpio1_read(int signal)
-+{
-+/* gpio1->trioutclr |= (0x01 << signal); */
-+ return ((gpio1->pinstaterd >> signal) & 0x01);
-+}
-+
-+void au1xxx_gpio1_write(int signal, int value)
-+{
-+ if(value)
-+ gpio1->outputset = (0x01 << signal);
-+ else
-+ gpio1->outputclr = (0x01 << signal); /* Output a Zero */
-+}
-+
-+void au1xxx_gpio1_tristate(int signal)
-+{
-+ gpio1->trioutclr = (0x01 << signal); /* Tristate signal */
-+}
-+
-+
-+int au1xxx_gpio_read(int signal)
-+{
-+ if(signal >= 200)
-+#if defined(CONFIG_SOC_AU1000)
-+ return 0;
-+#else
-+ return au1xxx_gpio2_read(signal);
-+#endif
-+ else
-+ return au1xxx_gpio1_read(signal);
-+}
-+
-+void au1xxx_gpio_write(int signal, int value)
-+{
-+ if(signal >= 200)
-+#if defined(CONFIG_SOC_AU1000)
-+ ;
-+#else
-+ au1xxx_gpio2_write(signal, value);
-+#endif
-+ else
-+ au1xxx_gpio1_write(signal, value);
-+}
-+
-+void au1xxx_gpio_tristate(int signal)
-+{
-+ if(signal >= 200)
-+#if defined(CONFIG_SOC_AU1000)
-+ ;
-+#else
-+ au1xxx_gpio2_tristate(signal);
-+#endif
-+ else
-+ au1xxx_gpio1_tristate(signal);
-+}
-+
-+void au1xxx_gpio1_set_inputs(void)
-+{
-+ gpio1->pininputen = 0;
-+}
-+
-+EXPORT_SYMBOL(au1xxx_gpio1_set_inputs);
-+EXPORT_SYMBOL(au1xxx_gpio_tristate);
-+EXPORT_SYMBOL(au1xxx_gpio_write);
-+EXPORT_SYMBOL(au1xxx_gpio_read);
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/irq.c linux-2.4.32-rc1.mips/arch/mips/au1000/common/irq.c
---- linux-2.4.32-rc1/arch/mips/au1000/common/irq.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/irq.c 2005-03-13 08:56:57.000000000 +0100
-@@ -303,8 +303,30 @@
- };
-
- #ifdef CONFIG_PM
--void startup_match20_interrupt(void)
-+void startup_match20_interrupt(void (*handler)(int, void *, struct pt_regs *))
- {
-+ static struct irqaction action;
-+ /* This is a big problem.... since we didn't use request_irq
-+ when kernel/irq.c calls probe_irq_xxx this interrupt will
-+ be probed for usage. This will end up disabling the device :(
-+
-+ Give it a bogus "action" pointer -- this will keep it from
-+ getting auto-probed!
-+
-+ By setting the status to match that of request_irq() we
-+ can avoid it. --cgray
-+ */
-+ action.dev_id = handler;
-+ action.flags = 0;
-+ action.mask = 0;
-+ action.name = "Au1xxx TOY";
-+ action.handler = handler;
-+ action.next = NULL;
-+
-+ irq_desc[AU1000_TOY_MATCH2_INT].action = &action;
-+ irq_desc[AU1000_TOY_MATCH2_INT].status
-+ &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING | IRQ_INPROGRESS);
-+
- local_enable_irq(AU1000_TOY_MATCH2_INT);
- }
- #endif
-@@ -508,6 +530,7 @@
-
- if (!intc0_req0) return;
-
-+#ifdef AU1000_USB_DEV_REQ_INT
- /*
- * Because of the tight timing of SETUP token to reply
- * transactions, the USB devices-side packet complete
-@@ -518,6 +541,7 @@
- do_IRQ(AU1000_USB_DEV_REQ_INT, regs);
- return;
- }
-+#endif
-
- irq = au_ffs(intc0_req0) - 1;
- intc0_req0 &= ~(1<<irq);
-@@ -536,17 +560,7 @@
-
- irq = au_ffs(intc0_req1) - 1;
- intc0_req1 &= ~(1<<irq);
--#ifdef CONFIG_PM
-- if (irq == AU1000_TOY_MATCH2_INT) {
-- mask_and_ack_rise_edge_irq(irq);
-- counter0_irq(irq, NULL, regs);
-- local_enable_irq(irq);
-- }
-- else
--#endif
-- {
-- do_IRQ(irq, regs);
-- }
-+ do_IRQ(irq, regs);
- }
-
-
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/Makefile linux-2.4.32-rc1.mips/arch/mips/au1000/common/Makefile
---- linux-2.4.32-rc1/arch/mips/au1000/common/Makefile 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/Makefile 2005-01-30 09:01:27.000000000 +0100
-@@ -19,9 +19,9 @@
- export-objs = prom.o clocks.o power.o usbdev.o
-
- obj-y := prom.o int-handler.o irq.o puts.o time.o reset.o cputable.o \
-- au1xxx_irqmap.o clocks.o power.o setup.o sleeper.o dma.o dbdma.o
-+ au1xxx_irqmap.o clocks.o power.o setup.o sleeper.o dma.o dbdma.o gpio.o
-
--export-objs += dma.o dbdma.o
-+export-objs += dma.o dbdma.o gpio.o
-
- obj-$(CONFIG_AU1X00_USB_DEVICE) += usbdev.o
- obj-$(CONFIG_KGDB) += dbg_io.o
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/pci_fixup.c linux-2.4.32-rc1.mips/arch/mips/au1000/common/pci_fixup.c
---- linux-2.4.32-rc1/arch/mips/au1000/common/pci_fixup.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/pci_fixup.c 2004-12-03 09:00:32.000000000 +0100
-@@ -75,9 +75,13 @@
-
- #ifdef CONFIG_NONCOHERENT_IO
- /*
-- * Set the NC bit in controller for pre-AC silicon
-+ * Set the NC bit in controller for Au1500 pre-AC silicon
- */
-- au_writel( 1<<16 | au_readl(Au1500_PCI_CFG), Au1500_PCI_CFG);
-+ u32 prid = read_c0_prid();
-+ if ( (prid & 0xFF000000) == 0x01000000 && prid < 0x01030202) {
-+ au_writel( 1<<16 | au_readl(Au1500_PCI_CFG), Au1500_PCI_CFG);
-+ printk("Non-coherent PCI accesses enabled\n");
-+ }
- printk("Non-coherent PCI accesses enabled\n");
- #endif
-
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/pci_ops.c linux-2.4.32-rc1.mips/arch/mips/au1000/common/pci_ops.c
---- linux-2.4.32-rc1/arch/mips/au1000/common/pci_ops.c 2004-02-18 14:36:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/pci_ops.c 2005-02-27 23:14:24.000000000 +0100
-@@ -162,6 +162,7 @@
- static int config_access(unsigned char access_type, struct pci_dev *dev,
- unsigned char where, u32 * data)
- {
-+ int error = PCIBIOS_SUCCESSFUL;
- #if defined( CONFIG_SOC_AU1500 ) || defined( CONFIG_SOC_AU1550 )
- unsigned char bus = dev->bus->number;
- unsigned int dev_fn = dev->devfn;
-@@ -170,7 +171,6 @@
- unsigned long offset, status;
- unsigned long cfg_base;
- unsigned long flags;
-- int error = PCIBIOS_SUCCESSFUL;
- unsigned long entryLo0, entryLo1;
-
- if (device > 19) {
-@@ -205,9 +205,8 @@
- last_entryLo0 = last_entryLo1 = 0xffffffff;
- }
-
-- /* Since the Au1xxx doesn't do the idsel timing exactly to spec,
-- * many board vendors implement their own off-chip idsel, so call
-- * it now. If it doesn't succeed, may as well bail out at this point.
-+ /* Allow board vendors to implement their own off-chip idsel.
-+ * If it doesn't succeed, may as well bail out at this point.
- */
- if (board_pci_idsel) {
- if (board_pci_idsel(device, 1) == 0) {
-@@ -271,8 +270,11 @@
- }
-
- local_irq_restore(flags);
-- return error;
-+#else
-+ /* Fake out Config space access with no responder */
-+ *data = 0xFFFFFFFF;
- #endif
-+ return error;
- }
- #endif
-
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/power.c linux-2.4.32-rc1.mips/arch/mips/au1000/common/power.c
---- linux-2.4.32-rc1/arch/mips/au1000/common/power.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/power.c 2005-04-07 02:37:19.000000000 +0200
-@@ -50,7 +50,6 @@
-
- static void calibrate_delay(void);
-
--extern void set_au1x00_speed(unsigned int new_freq);
- extern unsigned int get_au1x00_speed(void);
- extern unsigned long get_au1x00_uart_baud_base(void);
- extern void set_au1x00_uart_baud_base(unsigned long new_baud_base);
-@@ -116,6 +115,7 @@
- sleep_uart0_clkdiv = au_readl(UART0_ADDR + UART_CLK);
- sleep_uart0_enable = au_readl(UART0_ADDR + UART_MOD_CNTRL);
-
-+#ifndef CONFIG_SOC_AU1200
- /* Shutdown USB host/device.
- */
- sleep_usbhost_enable = au_readl(USB_HOST_CONFIG);
-@@ -127,6 +127,7 @@
-
- sleep_usbdev_enable = au_readl(USBD_ENABLE);
- au_writel(0, USBD_ENABLE); au_sync();
-+#endif
-
- /* Save interrupt controller state.
- */
-@@ -212,14 +213,12 @@
- int au_sleep(void)
- {
- unsigned long wakeup, flags;
-- extern void save_and_sleep(void);
-+ extern unsigned int save_and_sleep(void);
-
- spin_lock_irqsave(&pm_lock,flags);
-
- save_core_regs();
-
-- flush_cache_all();
--
- /** The code below is all system dependent and we should probably
- ** have a function call out of here to set this up. You need
- ** to configure the GPIO or timer interrupts that will bring
-@@ -227,27 +226,26 @@
- ** For testing, the TOY counter wakeup is useful.
- **/
-
--#if 0
-+#if 1
- au_writel(au_readl(SYS_PINSTATERD) & ~(1 << 11), SYS_PINSTATERD);
-
- /* gpio 6 can cause a wake up event */
- wakeup = au_readl(SYS_WAKEMSK);
- wakeup &= ~(1 << 8); /* turn off match20 wakeup */
-- wakeup |= 1 << 6; /* turn on gpio 6 wakeup */
-+ wakeup = 1 << 5; /* turn on gpio 6 wakeup */
- #else
-- /* For testing, allow match20 to wake us up.
-- */
-+ /* For testing, allow match20 to wake us up. */
- #ifdef SLEEP_TEST_TIMEOUT
- wakeup_counter0_set(sleep_ticks);
- #endif
- wakeup = 1 << 8; /* turn on match20 wakeup */
- wakeup = 0;
- #endif
-- au_writel(1, SYS_WAKESRC); /* clear cause */
-+ au_writel(0, SYS_WAKESRC); /* clear cause */
- au_sync();
- au_writel(wakeup, SYS_WAKEMSK);
- au_sync();
--
-+ DPRINTK("Entering sleep!\n");
- save_and_sleep();
-
- /* after a wakeup, the cpu vectors back to 0x1fc00000 so
-@@ -255,6 +253,7 @@
- */
- restore_core_regs();
- spin_unlock_irqrestore(&pm_lock, flags);
-+ DPRINTK("Leaving sleep!\n");
- return 0;
- }
-
-@@ -285,7 +284,6 @@
-
- if (retval)
- return retval;
--
- au_sleep();
- retval = pm_send_all(PM_RESUME, (void *) 0);
- }
-@@ -296,7 +294,6 @@
- void *buffer, size_t * len)
- {
- int retval = 0;
-- void au1k_wait(void);
-
- if (!write) {
- *len = 0;
-@@ -305,119 +302,9 @@
- if (retval)
- return retval;
- suspend_mode = 1;
-- au1k_wait();
-- retval = pm_send_all(PM_RESUME, (void *) 0);
-- }
-- return retval;
--}
-
--
--static int pm_do_freq(ctl_table * ctl, int write, struct file *file,
-- void *buffer, size_t * len)
--{
-- int retval = 0, i;
-- unsigned long val, pll;
--#define TMPBUFLEN 64
--#define MAX_CPU_FREQ 396
-- char buf[TMPBUFLEN], *p;
-- unsigned long flags, intc0_mask, intc1_mask;
-- unsigned long old_baud_base, old_cpu_freq, baud_rate, old_clk,
-- old_refresh;
-- unsigned long new_baud_base, new_cpu_freq, new_clk, new_refresh;
--
-- spin_lock_irqsave(&pm_lock, flags);
-- if (!write) {
-- *len = 0;
-- } else {
-- /* Parse the new frequency */
-- if (*len > TMPBUFLEN - 1) {
-- spin_unlock_irqrestore(&pm_lock, flags);
-- return -EFAULT;
-- }
-- if (copy_from_user(buf, buffer, *len)) {
-- spin_unlock_irqrestore(&pm_lock, flags);
-- return -EFAULT;
-- }
-- buf[*len] = 0;
-- p = buf;
-- val = simple_strtoul(p, &p, 0);
-- if (val > MAX_CPU_FREQ) {
-- spin_unlock_irqrestore(&pm_lock, flags);
-- return -EFAULT;
-- }
--
-- pll = val / 12;
-- if ((pll > 33) || (pll < 7)) { /* 396 MHz max, 84 MHz min */
-- /* revisit this for higher speed cpus */
-- spin_unlock_irqrestore(&pm_lock, flags);
-- return -EFAULT;
-- }
--
-- old_baud_base = get_au1x00_uart_baud_base();
-- old_cpu_freq = get_au1x00_speed();
--
-- new_cpu_freq = pll * 12 * 1000000;
-- new_baud_base = (new_cpu_freq / (2 * ((int)(au_readl(SYS_POWERCTRL)&0x03) + 2) * 16));
-- set_au1x00_speed(new_cpu_freq);
-- set_au1x00_uart_baud_base(new_baud_base);
--
-- old_refresh = au_readl(MEM_SDREFCFG) & 0x1ffffff;
-- new_refresh =
-- ((old_refresh * new_cpu_freq) /
-- old_cpu_freq) | (au_readl(MEM_SDREFCFG) & ~0x1ffffff);
--
-- au_writel(pll, SYS_CPUPLL);
-- au_sync_delay(1);
-- au_writel(new_refresh, MEM_SDREFCFG);
-- au_sync_delay(1);
--
-- for (i = 0; i < 4; i++) {
-- if (au_readl
-- (UART_BASE + UART_MOD_CNTRL +
-- i * 0x00100000) == 3) {
-- old_clk =
-- au_readl(UART_BASE + UART_CLK +
-- i * 0x00100000);
-- // baud_rate = baud_base/clk
-- baud_rate = old_baud_base / old_clk;
-- /* we won't get an exact baud rate and the error
-- * could be significant enough that our new
-- * calculation will result in a clock that will
-- * give us a baud rate that's too far off from
-- * what we really want.
-- */
-- if (baud_rate > 100000)
-- baud_rate = 115200;
-- else if (baud_rate > 50000)
-- baud_rate = 57600;
-- else if (baud_rate > 30000)
-- baud_rate = 38400;
-- else if (baud_rate > 17000)
-- baud_rate = 19200;
-- else
-- (baud_rate = 9600);
-- // new_clk = new_baud_base/baud_rate
-- new_clk = new_baud_base / baud_rate;
-- au_writel(new_clk,
-- UART_BASE + UART_CLK +
-- i * 0x00100000);
-- au_sync_delay(10);
-- }
-- }
-+ retval = pm_send_all(PM_RESUME, (void *) 0);
- }
--
--
-- /* We don't want _any_ interrupts other than
-- * match20. Otherwise our calibrate_delay()
-- * calculation will be off, potentially a lot.
-- */
-- intc0_mask = save_local_and_disable(0);
-- intc1_mask = save_local_and_disable(1);
-- local_enable_irq(AU1000_TOY_MATCH2_INT);
-- spin_unlock_irqrestore(&pm_lock, flags);
-- calibrate_delay();
-- restore_local_and_enable(0, intc0_mask);
-- restore_local_and_enable(1, intc1_mask);
- return retval;
- }
-
-@@ -425,7 +312,6 @@
- static struct ctl_table pm_table[] = {
- {ACPI_S1_SLP_TYP, "suspend", NULL, 0, 0600, NULL, &pm_do_suspend},
- {ACPI_SLEEP, "sleep", NULL, 0, 0600, NULL, &pm_do_sleep},
-- {CTL_ACPI, "freq", NULL, 0, 0600, NULL, &pm_do_freq},
- {0}
- };
-
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/reset.c linux-2.4.32-rc1.mips/arch/mips/au1000/common/reset.c
---- linux-2.4.32-rc1/arch/mips/au1000/common/reset.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/reset.c 2005-03-19 08:17:51.000000000 +0100
-@@ -37,8 +37,6 @@
- #include <asm/system.h>
- #include <asm/au1000.h>
-
--extern int au_sleep(void);
--
- void au1000_restart(char *command)
- {
- /* Set all integrated peripherals to disabled states */
-@@ -144,6 +142,26 @@
- au_writel(0x00, 0xb1900064); /* sys_auxpll */
- au_writel(0x00, 0xb1900100); /* sys_pininputen */
- break;
-+ case 0x04000000: /* Au1200 */
-+ au_writel(0x00, 0xb400300c); /* ddma */
-+ au_writel(0x00, 0xb1a00004); /* psc 0 */
-+ au_writel(0x00, 0xb1b00004); /* psc 1 */
-+ au_writel(0x00d02000, 0xb4020004); /* ehci, ohci, udc, otg */
-+ au_writel(0x00, 0xb5000004); /* lcd */
-+ au_writel(0x00, 0xb060000c); /* sd0 */
-+ au_writel(0x00, 0xb068000c); /* sd1 */
-+ au_writel(0x00, 0xb1100100); /* swcnt */
-+ au_writel(0x00, 0xb0300000); /* aes */
-+ au_writel(0x00, 0xb4004000); /* cim */
-+ au_writel(0x00, 0xb1100100); /* uart0_enable */
-+ au_writel(0x00, 0xb1200100); /* uart1_enable */
-+ au_writel(0x00, 0xb1900020); /* sys_freqctrl0 */
-+ au_writel(0x00, 0xb1900024); /* sys_freqctrl1 */
-+ au_writel(0x00, 0xb1900028); /* sys_clksrc */
-+ au_writel(0x10, 0xb1900060); /* sys_cpupll */
-+ au_writel(0x00, 0xb1900064); /* sys_auxpll */
-+ au_writel(0x00, 0xb1900100); /* sys_pininputen */
-+ break;
-
- default:
- break;
-@@ -163,32 +181,23 @@
-
- void au1000_halt(void)
- {
--#if defined(CONFIG_MIPS_PB1550)
-- /* power off system */
-- printk("\n** Powering off Pb1550\n");
-- au_writew(au_readw(0xAF00001C) | (3<<14), 0xAF00001C);
-- au_sync();
-- while(1); /* should not get here */
--#endif
-- printk(KERN_NOTICE "\n** You can safely turn off the power\n");
--#ifdef CONFIG_MIPS_MIRAGE
-- au_writel((1 << 26) | (1 << 10), GPIO2_OUTPUT);
--#endif
--#ifdef CONFIG_PM
-- au_sleep();
--
-- /* should not get here */
-- printk(KERN_ERR "Unable to put cpu in sleep mode\n");
-- while(1);
--#else
-- while (1)
-+ /* Use WAIT in a low-power infinite spin loop */
-+ while (1) {
- __asm__(".set\tmips3\n\t"
- "wait\n\t"
- ".set\tmips0");
--#endif
-+ }
- }
-
- void au1000_power_off(void)
- {
-+ extern void board_power_off (void);
-+
-+ printk(KERN_NOTICE "\n** You can safely turn off the power\n");
-+
-+ /* Give board a chance to power-off */
-+ board_power_off();
-+
-+ /* If board can't power-off, spin forever */
- au1000_halt();
- }
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/setup.c linux-2.4.32-rc1.mips/arch/mips/au1000/common/setup.c
---- linux-2.4.32-rc1/arch/mips/au1000/common/setup.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/setup.c 2005-01-30 09:01:27.000000000 +0100
-@@ -174,6 +174,40 @@
- initrd_end = (unsigned long)&__rd_end;
- #endif
-
-+#if defined(CONFIG_SOC_AU1200)
-+#ifdef CONFIG_USB_EHCI_HCD
-+ if ((argptr = strstr(argptr, "usb_ehci=")) == NULL) {
-+ char usb_args[80];
-+ argptr = prom_getcmdline();
-+ memset(usb_args, 0, sizeof(usb_args));
-+ sprintf(usb_args, " usb_ehci=base:0x%x,len:0x%x,irq:%d",
-+ USB_EHCI_BASE, USB_EHCI_LEN, AU1000_USB_HOST_INT);
-+ strcat(argptr, usb_args);
-+ }
-+#ifdef CONFIG_USB_AMD5536UDC
-+ /* enable EHC + OHC + UDC clocks, memory and bus mastering */
-+/* au_writel( 0x00DF207F, USB_MSR_BASE + 4); */
-+ au_writel( 0xC0DF207F, USB_MSR_BASE + 4); // incl. prefetch
-+#else
-+ /* enable EHC + OHC clocks, memory and bus mastering */
-+/* au_writel( 0x00DB200F, USB_MSR_BASE + 4); */
-+ au_writel( 0xC0DB200F, USB_MSR_BASE + 4); /* incl. prefetch */
-+#endif
-+ udelay(1000);
-+
-+#else /* CONFIG_USB_EHCI_HCD */
-+
-+#ifdef CONFIG_USB_AMD5536UDC
-+#ifndef CONFIG_USB_OHCI
-+ /* enable UDC clocks, memory and bus mastering */
-+/* au_writel( 0x00DC2070, USB_MSR_BASE + 4); */
-+ au_writel( 0xC0DC2070, USB_MSR_BASE + 4); // incl. prefetch
-+ udelay(1000);
-+#endif
-+#endif
-+#endif /* CONFIG_USB_EHCI_HCD */
-+#endif /* CONFIG_SOC_AU1200 */
-+
- #if defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE)
- #ifdef CONFIG_USB_OHCI
- if ((argptr = strstr(argptr, "usb_ohci=")) == NULL) {
-@@ -187,19 +221,38 @@
- #endif
-
- #ifdef CONFIG_USB_OHCI
-- // enable host controller and wait for reset done
-+#if defined(CONFIG_SOC_AU1200)
-+#ifndef CONFIG_USB_EHCI_HCD
-+#ifdef CONFIG_USB_AMD5536UDC
-+ /* enable OHC + UDC clocks, memory and bus mastering */
-+/* au_writel( 0x00DD2073, USB_MSR_BASE + 4); */
-+ au_writel( 0xC0DD2073, USB_MSR_BASE + 4); // incl. prefetch
-+#else
-+ /* enable OHC clocks, memory and bus mastering */
-+ au_writel( 0x00D12003, USB_MSR_BASE + 4);
-+#endif
-+ udelay(1000);
-+printk("DEBUG: Reading Au1200 USB2 reg 0x%x\n", au_readl(USB_MSR_BASE + 4));
-+#endif
-+#else
-+ /* Au1000, Au1500, Au1100, Au1550 */
-+ /* enable host controller and wait for reset done */
- au_writel(0x08, USB_HOST_CONFIG);
- udelay(1000);
- au_writel(0x0E, USB_HOST_CONFIG);
- udelay(1000);
-- au_readl(USB_HOST_CONFIG); // throw away first read
-+ au_readl(USB_HOST_CONFIG); /* throw away first read */
- while (!(au_readl(USB_HOST_CONFIG) & 0x10))
- au_readl(USB_HOST_CONFIG);
-+#endif /* CONFIG_SOC_AU1200 */
- #endif
--#endif // defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE)
-+#else
-+
-+#endif /* defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE) */
-+
-
- #ifdef CONFIG_FB
-- // Needed if PCI video card in use
-+ /* Needed if PCI video card in use */
- conswitchp = &dummy_con;
- #endif
-
-@@ -209,8 +262,7 @@
- #endif
-
- #ifdef CONFIG_BLK_DEV_IDE
-- /* Board setup takes precedence for unique devices.
-- */
-+ /* Board setup takes precedence for unique devices. */
- if ((ide_ops == NULL) || (ide_ops == &no_ide_ops))
- ide_ops = &std_ide_ops;
- #endif
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/sleeper.S linux-2.4.32-rc1.mips/arch/mips/au1000/common/sleeper.S
---- linux-2.4.32-rc1/arch/mips/au1000/common/sleeper.S 2004-02-18 14:36:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/sleeper.S 2005-01-30 09:01:27.000000000 +0100
-@@ -15,17 +15,48 @@
- #include <asm/addrspace.h>
- #include <asm/regdef.h>
- #include <asm/stackframe.h>
-+#include <asm/au1000.h>
-+
-+/*
-+ * Note: This file is *not* conditional on CONFIG_PM since Alchemy sleep
-+ * need not be tied to any particular power management scheme.
-+ */
-+
-+ .extern ___flush_cache_all
-
- .text
-- .set macro
-- .set noat
- .align 5
-
--/* Save all of the processor general registers and go to sleep.
-- * A wakeup condition will get us back here to restore the registers.
-+/*
-+ * Save the processor general registers and go to sleep. A wakeup
-+ * condition will get us back here to restore the registers.
- */
--LEAF(save_and_sleep)
-
-+/* still need to fix alignment issues here */
-+save_and_sleep_frmsz = 48
-+NESTED(save_and_sleep, save_and_sleep_frmsz, ra)
-+ .set noreorder
-+ .set nomacro
-+ .set noat
-+ subu sp, save_and_sleep_frmsz
-+ sw ra, save_and_sleep_frmsz-4(sp)
-+ sw s0, save_and_sleep_frmsz-8(sp)
-+ sw s1, save_and_sleep_frmsz-12(sp)
-+ sw s2, save_and_sleep_frmsz-16(sp)
-+ sw s3, save_and_sleep_frmsz-20(sp)
-+ sw s4, save_and_sleep_frmsz-24(sp)
-+ sw s5, save_and_sleep_frmsz-28(sp)
-+ sw s6, save_and_sleep_frmsz-32(sp)
-+ sw s7, save_and_sleep_frmsz-36(sp)
-+ sw s8, save_and_sleep_frmsz-40(sp)
-+ sw gp, save_and_sleep_frmsz-44(sp)
-+
-+ /* We only need to save the registers that the calling function
-+ * hasn't saved for us. 0 is always zero. 8 - 15, 24 and 25 are
-+ * temporaries and can be used without saving. 26 and 27 are reserved
-+ * for interrupt/trap handling and expected to change. 29 is the
-+ * stack pointer which is handled as a special case here.
-+ */
- subu sp, PT_SIZE
- sw $1, PT_R1(sp)
- sw $2, PT_R2(sp)
-@@ -34,14 +65,6 @@
- sw $5, PT_R5(sp)
- sw $6, PT_R6(sp)
- sw $7, PT_R7(sp)
-- sw $8, PT_R8(sp)
-- sw $9, PT_R9(sp)
-- sw $10, PT_R10(sp)
-- sw $11, PT_R11(sp)
-- sw $12, PT_R12(sp)
-- sw $13, PT_R13(sp)
-- sw $14, PT_R14(sp)
-- sw $15, PT_R15(sp)
- sw $16, PT_R16(sp)
- sw $17, PT_R17(sp)
- sw $18, PT_R18(sp)
-@@ -50,32 +73,47 @@
- sw $21, PT_R21(sp)
- sw $22, PT_R22(sp)
- sw $23, PT_R23(sp)
-- sw $24, PT_R24(sp)
-- sw $25, PT_R25(sp)
-- sw $26, PT_R26(sp)
-- sw $27, PT_R27(sp)
- sw $28, PT_R28(sp)
-- sw $29, PT_R29(sp)
- sw $30, PT_R30(sp)
- sw $31, PT_R31(sp)
-+#define PT_C0STATUS PT_LO
-+#define PT_CONTEXT PT_HI
-+#define PT_PAGEMASK PT_EPC
-+#define PT_CONFIG PT_BVADDR
- mfc0 k0, CP0_STATUS
-- sw k0, 0x20(sp)
-+ sw k0, PT_C0STATUS(sp) // 0x20
- mfc0 k0, CP0_CONTEXT
-- sw k0, 0x1c(sp)
-+ sw k0, PT_CONTEXT(sp) // 0x1c
- mfc0 k0, CP0_PAGEMASK
-- sw k0, 0x18(sp)
-+ sw k0, PT_PAGEMASK(sp) // 0x18
- mfc0 k0, CP0_CONFIG
-- sw k0, 0x14(sp)
-+ sw k0, PT_CONFIG(sp) // 0x14
-+
-+ .set macro
-+ .set at
-+
-+ li t0, SYS_SLPPWR
-+ sw zero, 0(t0) /* Get the processor ready to sleep */
-+ sync
-
- /* Now set up the scratch registers so the boot rom will
- * return to this point upon wakeup.
-+ * sys_scratch0 : SP
-+ * sys_scratch1 : RA
-+ */
-+ li t0, SYS_SCRATCH0
-+ li t1, SYS_SCRATCH1
-+ sw sp, 0(t0)
-+ la k0, resume_from_sleep
-+ sw k0, 0(t1)
-+
-+/*
-+ * Flush DCACHE to make sure context is in memory
- */
-- la k0, 1f
-- lui k1, 0xb190
-- ori k1, 0x18
-- sw sp, 0(k1)
-- ori k1, 0x1c
-- sw k0, 0(k1)
-+ la t1,___flush_cache_all /* _flush_cache_all is a function pointer */
-+ lw t0,0(t1)
-+ jal t0
-+ nop
-
- /* Put SDRAM into self refresh. Preload instructions into cache,
- * issue a precharge, then auto refresh, then sleep commands to it.
-@@ -88,30 +126,65 @@
- cache 0x14, 96(t0)
- .set mips0
-
-+ /* Put SDRAM to sleep */
- sdsleep:
-- lui k0, 0xb400
-- sw zero, 0x001c(k0) /* Precharge */
-- sw zero, 0x0020(k0) /* Auto refresh */
-- sw zero, 0x0030(k0) /* SDRAM sleep */
-+ li a0, MEM_PHYS_ADDR
-+ or a0, a0, 0xA0000000
-+#if defined(CONFIG_SOC_AU1000) || defined(CONFIG_SOC_AU1100) || defined(CONFIG_SOC_AU1500)
-+ lw k0, MEM_SDMODE0(a0)
-+ sw zero, MEM_SDPRECMD(a0) /* Precharge */
-+ sw zero, MEM_SDAUTOREF(a0) /* Auto Refresh */
-+ sw zero, MEM_SDSLEEP(a0) /* Sleep */
- sync
--
-- lui k1, 0xb190
-- sw zero, 0x0078(k1) /* get ready to sleep */
-+#endif
-+#if defined(CONFIG_SOC_AU1550) || defined(CONFIG_SOC_AU1200)
-+ sw zero, MEM_SDPRECMD(a0) /* Precharge */
-+ sw zero, MEM_SDSREF(a0)
-+
-+ #lw t0, MEM_SDSTAT(a0)
-+ #and t0, t0, 0x01000000
-+ li t0, 0x01000000
-+refresh_not_set:
-+ lw t1, MEM_SDSTAT(a0)
-+ and t2, t1, t0
-+ beq zero, t2, refresh_not_set
-+ nop
-+
-+ li t0, ~0x30000000
-+ lw t1, MEM_SDCONFIGA(a0)
-+ and t1, t0, t1
-+ sw t1, MEM_SDCONFIGA(a0)
- sync
-- sw zero, 0x007c(k1) /* Put processor to sleep */
-+#endif
-+
-+ li t0, SYS_SLEEP
-+ sw zero, 0(t0) /* Put processor to sleep */
- sync
-+ nop
-+ nop
-+ nop
-+ nop
-+ nop
-+ nop
-+ nop
-+ nop
-+
-
- /* This is where we return upon wakeup.
- * Reload all of the registers and return.
- */
--1: nop
-- lw k0, 0x20(sp)
-+resume_from_sleep:
-+ nop
-+ .set nomacro
-+ .set noat
-+
-+ lw k0, PT_C0STATUS(sp) // 0x20
- mtc0 k0, CP0_STATUS
-- lw k0, 0x1c(sp)
-+ lw k0, PT_CONTEXT(sp) // 0x1c
- mtc0 k0, CP0_CONTEXT
-- lw k0, 0x18(sp)
-+ lw k0, PT_PAGEMASK(sp) // 0x18
- mtc0 k0, CP0_PAGEMASK
-- lw k0, 0x14(sp)
-+ lw k0, PT_CONFIG(sp) // 0x14
- mtc0 k0, CP0_CONFIG
- lw $1, PT_R1(sp)
- lw $2, PT_R2(sp)
-@@ -120,14 +193,6 @@
- lw $5, PT_R5(sp)
- lw $6, PT_R6(sp)
- lw $7, PT_R7(sp)
-- lw $8, PT_R8(sp)
-- lw $9, PT_R9(sp)
-- lw $10, PT_R10(sp)
-- lw $11, PT_R11(sp)
-- lw $12, PT_R12(sp)
-- lw $13, PT_R13(sp)
-- lw $14, PT_R14(sp)
-- lw $15, PT_R15(sp)
- lw $16, PT_R16(sp)
- lw $17, PT_R17(sp)
- lw $18, PT_R18(sp)
-@@ -136,15 +201,36 @@
- lw $21, PT_R21(sp)
- lw $22, PT_R22(sp)
- lw $23, PT_R23(sp)
-- lw $24, PT_R24(sp)
-- lw $25, PT_R25(sp)
-- lw $26, PT_R26(sp)
-- lw $27, PT_R27(sp)
- lw $28, PT_R28(sp)
-- lw $29, PT_R29(sp)
- lw $30, PT_R30(sp)
- lw $31, PT_R31(sp)
-+
-+ .set macro
-+ .set at
-+
-+ /* clear the wake source, but save it as the return value of the function */
-+ li t0, SYS_WAKESRC
-+ lw v0, 0(t0)
-+ sw v0, PT_R2(sp)
-+ sw zero, 0(t0)
-+
- addiu sp, PT_SIZE
-
-+ lw gp, save_and_sleep_frmsz-44(sp)
-+ lw s8, save_and_sleep_frmsz-40(sp)
-+ lw s7, save_and_sleep_frmsz-36(sp)
-+ lw s6, save_and_sleep_frmsz-32(sp)
-+ lw s5, save_and_sleep_frmsz-28(sp)
-+ lw s4, save_and_sleep_frmsz-24(sp)
-+ lw s3, save_and_sleep_frmsz-20(sp)
-+ lw s2, save_and_sleep_frmsz-16(sp)
-+ lw s1, save_and_sleep_frmsz-12(sp)
-+ lw s0, save_and_sleep_frmsz-8(sp)
-+ lw ra, save_and_sleep_frmsz-4(sp)
-+
-+ addu sp, save_and_sleep_frmsz
- jr ra
-+ nop
-+ .set reorder
- END(save_and_sleep)
-+
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/common/time.c linux-2.4.32-rc1.mips/arch/mips/au1000/common/time.c
---- linux-2.4.32-rc1/arch/mips/au1000/common/time.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/common/time.c 2005-04-08 10:33:17.000000000 +0200
-@@ -50,7 +50,6 @@
- #include <linux/mc146818rtc.h>
- #include <linux/timex.h>
-
--extern void startup_match20_interrupt(void);
- extern void do_softirq(void);
- extern volatile unsigned long wall_jiffies;
- unsigned long missed_heart_beats = 0;
-@@ -59,14 +58,14 @@
- static unsigned long r4k_cur; /* What counter should be at next timer irq */
- extern rwlock_t xtime_lock;
- int no_au1xxx_32khz;
--void (*au1k_wait_ptr)(void);
-+extern int allow_au1k_wait; /* default off for CP0 Counter */
-
- /* Cycle counter value at the previous timer interrupt.. */
- static unsigned int timerhi = 0, timerlo = 0;
-
- #ifdef CONFIG_PM
- #define MATCH20_INC 328
--extern void startup_match20_interrupt(void);
-+extern void startup_match20_interrupt(void (*handler)(int, void *, struct pt_regs *));
- static unsigned long last_pc0, last_match20;
- #endif
-
-@@ -385,7 +384,6 @@
- {
- unsigned int est_freq;
- extern unsigned long (*do_gettimeoffset)(void);
-- extern void au1k_wait(void);
-
- printk("calculating r4koff... ");
- r4k_offset = cal_r4koff();
-@@ -437,9 +435,6 @@
- au_writel(0, SYS_TOYWRITE);
- while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C0S);
-
-- au_writel(au_readl(SYS_WAKEMSK) | (1<<8), SYS_WAKEMSK);
-- au_writel(~0, SYS_WAKESRC);
-- au_sync();
- while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20);
-
- /* setup match20 to interrupt once every 10ms */
-@@ -447,13 +442,13 @@
- au_writel(last_match20 + MATCH20_INC, SYS_TOYMATCH2);
- au_sync();
- while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20);
-- startup_match20_interrupt();
-+ startup_match20_interrupt(counter0_irq);
-
- do_gettimeoffset = do_fast_pm_gettimeoffset;
-
- /* We can use the real 'wait' instruction.
- */
-- au1k_wait_ptr = au1k_wait;
-+ allow_au1k_wait = 1;
- }
-
- #else
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/db1x00/board_setup.c linux-2.4.32-rc1.mips/arch/mips/au1000/db1x00/board_setup.c
---- linux-2.4.32-rc1/arch/mips/au1000/db1x00/board_setup.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/db1x00/board_setup.c 2005-03-19 08:17:51.000000000 +0100
-@@ -46,10 +46,22 @@
- #include <asm/au1000.h>
- #include <asm/db1x00.h>
-
--extern struct rtc_ops no_rtc_ops;
-+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX) && defined(CONFIG_MIPS_DB1550)
-+#include <asm/au1xxx_dbdma.h>
-+extern struct ide_ops *ide_ops;
-+extern struct ide_ops au1xxx_ide_ops;
-+extern u32 au1xxx_ide_virtbase;
-+extern u64 au1xxx_ide_physbase;
-+extern int au1xxx_ide_irq;
-+
-+/* Ddma */
-+chan_tab_t *ide_read_ch, *ide_write_ch;
-+u32 au1xxx_ide_ddma_enable = 0, switch4ddma = 1; // PIO+ddma
-+
-+dbdev_tab_t new_dbdev_tab_element = { DSCR_CMD0_THROTTLE, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 };
-+#endif /* end CONFIG_BLK_DEV_IDE_AU1XXX */
-
--/* not correct for db1550 */
--static BCSR * const bcsr = (BCSR *)0xAE000000;
-+extern struct rtc_ops no_rtc_ops;
-
- void board_reset (void)
- {
-@@ -57,6 +69,13 @@
- au_writel(0x00000000, 0xAE00001C);
- }
-
-+void board_power_off (void)
-+{
-+#ifdef CONFIG_MIPS_MIRAGE
-+ au_writel((1 << 26) | (1 << 10), GPIO2_OUTPUT);
-+#endif
-+}
-+
- void __init board_setup(void)
- {
- u32 pin_func;
-@@ -108,8 +127,42 @@
- au_writel(0x02000200, GPIO2_OUTPUT);
- #endif
-
-+#if defined(CONFIG_AU1XXX_SMC91111)
-+#define CPLD_CONTROL (0xAF00000C)
-+ {
-+ extern uint32_t au1xxx_smc91111_base;
-+ extern unsigned int au1xxx_smc91111_irq;
-+ extern int au1xxx_smc91111_nowait;
-+
-+ au1xxx_smc91111_base = 0xAC000300;
-+ au1xxx_smc91111_irq = AU1000_GPIO_8;
-+ au1xxx_smc91111_nowait = 1;
-+
-+ /* set up the Static Bus timing - only 396Mhz */
-+ bcsr->resets |= 0x7;
-+ au_writel(0x00010003, MEM_STCFG0);
-+ au_writel(0x000c00c0, MEM_STCFG2);
-+ au_writel(0x85E1900D, MEM_STTIME2);
-+ }
-+#endif /* end CONFIG_SMC91111 */
- au_sync();
-
-+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX) && defined(CONFIG_MIPS_DB1550)
-+ /*
-+ * Iniz IDE parameters
-+ */
-+ ide_ops = &au1xxx_ide_ops;
-+ au1xxx_ide_irq = DAUGHTER_CARD_IRQ;
-+ au1xxx_ide_physbase = AU1XXX_ATA_PHYS_ADDR;
-+ au1xxx_ide_virtbase = KSEG1ADDR(AU1XXX_ATA_PHYS_ADDR);
-+
-+ /*
-+ * change PIO or PIO+Ddma
-+ * check the GPIO-6 pin condition. db1550:s6_dot
-+ */
-+ switch4ddma = (au_readl(SYS_PINSTATERD) & (1 << 6)) ? 1 : 0;
-+#endif
-+
- #ifdef CONFIG_MIPS_DB1000
- printk("AMD Alchemy Au1000/Db1000 Board\n");
- #endif
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/db1x00/irqmap.c linux-2.4.32-rc1.mips/arch/mips/au1000/db1x00/irqmap.c
---- linux-2.4.32-rc1/arch/mips/au1000/db1x00/irqmap.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/db1x00/irqmap.c 2005-01-30 09:06:19.000000000 +0100
-@@ -53,6 +53,7 @@
- #ifdef CONFIG_MIPS_DB1550
- { AU1000_GPIO_3, INTC_INT_LOW_LEVEL, 0 }, // PCMCIA Card 0 IRQ#
- { AU1000_GPIO_5, INTC_INT_LOW_LEVEL, 0 }, // PCMCIA Card 1 IRQ#
-+ { AU1000_GPIO_8, INTC_INT_LOW_LEVEL, 0 }, // Daughtercard IRQ#
- #else
- { AU1000_GPIO_0, INTC_INT_LOW_LEVEL, 0 }, // PCMCIA Card 0 Fully_Interted#
- { AU1000_GPIO_1, INTC_INT_LOW_LEVEL, 0 }, // PCMCIA Card 0 STSCHG#
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/db1x00/Makefile linux-2.4.32-rc1.mips/arch/mips/au1000/db1x00/Makefile
---- linux-2.4.32-rc1/arch/mips/au1000/db1x00/Makefile 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/db1x00/Makefile 2005-01-30 09:06:19.000000000 +0100
-@@ -17,4 +17,11 @@
- obj-y := init.o board_setup.o irqmap.o
- obj-$(CONFIG_WM97XX_COMODULE) += mirage_ts.o
-
-+ifdef CONFIG_MIPS_DB1100
-+ifdef CONFIG_MMC
-+obj-y += mmc_support.o
-+export-objs += mmc_support.o
-+endif
-+endif
-+
- include $(TOPDIR)/Rules.make
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/db1x00/mmc_support.c linux-2.4.32-rc1.mips/arch/mips/au1000/db1x00/mmc_support.c
---- linux-2.4.32-rc1/arch/mips/au1000/db1x00/mmc_support.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/db1x00/mmc_support.c 2005-01-30 09:07:01.000000000 +0100
-@@ -0,0 +1,126 @@
-+/*
-+ * BRIEF MODULE DESCRIPTION
-+ *
-+ * MMC support routines for DB1100.
-+ *
-+ *
-+ * Copyright (c) 2003-2004 Embedded Edge, LLC.
-+ * Author: Embedded Edge, LLC.
-+ * Contact: dan@embeddededge.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+
-+#include <linux/config.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+
-+#include <asm/irq.h>
-+#include <asm/au1000.h>
-+#include <asm/au1100_mmc.h>
-+#include <asm/db1x00.h>
-+
-+
-+/* SD/MMC controller support functions */
-+
-+/*
-+ * Detect card.
-+ */
-+void mmc_card_inserted(int _n_, int *_res_)
-+{
-+ u32 gpios = au_readl(SYS_PINSTATERD);
-+ u32 emptybit = (_n_) ? (1<<20) : (1<<19);
-+ *_res_ = ((gpios & emptybit) == 0);
-+}
-+
-+/*
-+ * Check card write protection.
-+ */
-+void mmc_card_writable(int _n_, int *_res_)
-+{
-+ BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+ unsigned long mmc_wp, board_specific;
-+
-+ if (_n_) {
-+ mmc_wp = BCSR_BOARD_SD1_WP;
-+ } else {
-+ mmc_wp = BCSR_BOARD_SD0_WP;
-+ }
-+
-+ board_specific = au_readl((unsigned long)(&bcsr->specific));
-+
-+ if (!(board_specific & mmc_wp)) {/* low means card writable */
-+ *_res_ = 1;
-+ } else {
-+ *_res_ = 0;
-+ }
-+}
-+
-+/*
-+ * Apply power to card slot.
-+ */
-+void mmc_power_on(int _n_)
-+{
-+ BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+ unsigned long mmc_pwr, board_specific;
-+
-+ if (_n_) {
-+ mmc_pwr = BCSR_BOARD_SD1_PWR;
-+ } else {
-+ mmc_pwr = BCSR_BOARD_SD0_PWR;
-+ }
-+
-+ board_specific = au_readl((unsigned long)(&bcsr->specific));
-+ board_specific |= mmc_pwr;
-+
-+ au_writel(board_specific, (int)(&bcsr->specific));
-+ au_sync_delay(1);
-+}
-+
-+/*
-+ * Remove power from card slot.
-+ */
-+void mmc_power_off(int _n_)
-+{
-+ BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+ unsigned long mmc_pwr, board_specific;
-+
-+ if (_n_) {
-+ mmc_pwr = BCSR_BOARD_SD1_PWR;
-+ } else {
-+ mmc_pwr = BCSR_BOARD_SD0_PWR;
-+ }
-+
-+ board_specific = au_readl((unsigned long)(&bcsr->specific));
-+ board_specific &= ~mmc_pwr;
-+
-+ au_writel(board_specific, (int)(&bcsr->specific));
-+ au_sync_delay(1);
-+}
-+
-+EXPORT_SYMBOL(mmc_card_inserted);
-+EXPORT_SYMBOL(mmc_card_writable);
-+EXPORT_SYMBOL(mmc_power_on);
-+EXPORT_SYMBOL(mmc_power_off);
-+
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/ficmmp/au1200_ibutton.c linux-2.4.32-rc1.mips/arch/mips/au1000/ficmmp/au1200_ibutton.c
---- linux-2.4.32-rc1/arch/mips/au1000/ficmmp/au1200_ibutton.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/ficmmp/au1200_ibutton.c 2005-02-03 07:35:29.000000000 +0100
-@@ -0,0 +1,270 @@
-+/* ----------------------------------------------------------------------
-+ * mtwilson_keys.c
-+ *
-+ * Copyright (C) 2003 Intrinsyc Software Inc.
-+ *
-+ * Intel Personal Media Player buttons
-+ *
-+ * 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.
-+ *
-+ * May 02, 2003 : Initial version [FB]
-+ *
-+ ------------------------------------------------------------------------*/
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/fs.h>
-+#include <linux/sched.h>
-+#include <linux/miscdevice.h>
-+#include <linux/errno.h>
-+#include <linux/poll.h>
-+#include <linux/delay.h>
-+#include <linux/input.h>
-+
-+#include <asm/au1000.h>
-+#include <asm/uaccess.h>
-+#include <asm/au1xxx_gpio.h>
-+#include <asm/irq.h>
-+#include <asm/keyboard.h>
-+#include <linux/time.h>
-+
-+#define DRIVER_VERSION "V1.0"
-+#define DRIVER_AUTHOR "FIC"
-+#define DRIVER_DESC "FIC Travis Media Player Button Driver"
-+#define DRIVER_NAME "Au1200Button"
-+
-+#define BUTTON_MAIN (1<<1)
-+#define BUTTON_SELECT (1<<6)
-+#define BUTTON_GUIDE (1<<12)
-+#define BUTTON_DOWN (1<<17)
-+#define BUTTON_LEFT (1<<19)
-+#define BUTTON_RIGHT (1<<26)
-+#define BUTTON_UP (1<<28)
-+
-+#define BUTTON_MASK (\
-+ BUTTON_MAIN \
-+ | BUTTON_SELECT \
-+ | BUTTON_GUIDE \
-+ | BUTTON_DOWN \
-+ | BUTTON_LEFT \
-+ | BUTTON_RIGHT \
-+ | BUTTON_UP \
-+ )
-+
-+#define BUTTON_INVERT (\
-+ BUTTON_MAIN \
-+ | 0 \
-+ | BUTTON_GUIDE \
-+ | 0 \
-+ | 0 \
-+ | 0 \
-+ | 0 \
-+ )
-+
-+char button_map[32]={0,KEY_S,0,0,0,0,KEY_ENTER,0,0,0,0,0,KEY_G,0,0,0,0,KEY_DOWN,0,KEY_LEFT,0,0,0,0,0,0,KEY_RIGHT,0,KEY_UP,0,0,0};
-+//char button_map[32]={0,0,0,0,0,0,KEY_ENTER,0,0,0,0,0,KEY_G,0,0,0,0,KEY_DOWN,0,KEY_LEFT,0,0,0,0,0,0,KEY_RIGHT,0,KEY_UP,0,0,0};
-+
-+//char button_map[32]={0,KEY_TAB,0,0,0,0,KEY_M,0,0,0,0,0,KEY_S,0,0,0,0,KEY_DOWN,0,KEY_LEFT,0,0,0,0,0,0,KEY_RIGHT,0,KEY_UP,0,0,0};
-+//char button_map[32]={0,0,0,0,0,0,KEY_M,0,0,0,0,0,KEY_S,0,0,0,0,KEY_DOWN,0,KEY_LEFT,0,0,0,0,0,0,KEY_RIGHT,0,KEY_UP,0,0,0};
-+
-+#define BUTTON_COUNT (sizeof (button_map) / sizeof (button_map[0]))
-+
-+struct input_dev dev;
-+struct timeval cur_tv;
-+
-+static unsigned int old_tv_usec = 0;
-+
-+static unsigned int read_button_state(void)
-+{
-+ unsigned int state;
-+
-+ state = au_readl(SYS_PINSTATERD) & BUTTON_MASK; /* get gpio status */
-+
-+ state ^= BUTTON_INVERT; /* invert main & guide button */
-+
-+ /* printk("au1200_ibutton.c: button state [0x%X]\r\n",state); */
-+ return state;
-+}
-+
-+//This function returns 0 if the allowed microseconds have elapsed since the last call to ths function, otherwise it returns 1 to indicate a bounce condition
-+static unsigned int bounce()
-+{
-+
-+ unsigned int elapsed_time;
-+
-+ do_gettimeofday (&cur_tv);
-+
-+ if (!old_tv_usec) {
-+ old_tv_usec = cur_tv.tv_usec;
-+ return 0;
-+ }
-+
-+ if(cur_tv.tv_usec > old_tv_usec) {
-+ /* If there hasn't been rollover */
-+ elapsed_time = ((cur_tv.tv_usec - old_tv_usec));
-+ }
-+ else {
-+ /* Accounting for rollover */
-+ elapsed_time = ((1000000 - old_tv_usec + cur_tv.tv_usec));
-+ }
-+
-+ if (elapsed_time > 250000) {
-+ old_tv_usec = 0; /* reset the bounce time */
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
-+/* button interrupt handler */
-+static void button_interrupt(int irq, void *dev, struct pt_regs *regs)
-+{
-+
-+ unsigned int i,bit_mask, key_choice;
-+ u32 button_state;
-+
-+ /* Report state to upper level */
-+
-+ button_state = read_button_state() & BUTTON_MASK; /* get new gpio status */
-+
-+ /* Return if this is a repeated (bouncing) event */
-+ if(bounce())
-+ return;
-+
-+ /* we want to make keystrokes */
-+ for( i=0; i< BUTTON_COUNT; i++) {
-+ bit_mask = 1<<i;
-+ if (button_state & bit_mask) {
-+ key_choice = button_map[i];
-+ /* toggle key down */
-+ input_report_key(dev, key_choice, 1);
-+ /* toggle key up */
-+ input_report_key(dev, key_choice, 0);
-+ printk("ibutton gpio %d stat %x scan code %d\r\n",
-+ i, button_state, key_choice);
-+ /* Only report the first key event; it doesn't make
-+ * sense for two keys to be pressed at the same time,
-+ * and causes problems with the directional keys
-+ * return;
-+ */
-+ }
-+ }
-+}
-+
-+static int
-+button_translate(unsigned char scancode, unsigned char *keycode, char raw_mode)
-+{
-+ static int prev_scancode;
-+
-+ printk( "ibutton.c: translate: scancode=%x raw_mode=%x\n",
-+ scancode, raw_mode);
-+
-+ if (scancode == 0xe0 || scancode == 0xe1) {
-+ prev_scancode = scancode;
-+ return 0;
-+ }
-+
-+ if (scancode == 0x00 || scancode == 0xff) {
-+ prev_scancode = 0;
-+ return 0;
-+ }
-+
-+ *keycode = scancode;
-+
-+ return 1;
-+}
-+
-+/* init button hardware */
-+static int button_hw_init(void)
-+{
-+ unsigned int ipinfunc=0;
-+
-+ printk("au1200_ibutton.c: Initializing buttons hardware\n");
-+
-+ // initialize GPIO pin function assignments
-+
-+ ipinfunc = au_readl(SYS_PINFUNC);
-+
-+ ipinfunc &= ~(SYS_PINFUNC_DMA | SYS_PINFUNC_S0A | SYS_PINFUNC_S0B);
-+ au_writel( ipinfunc ,SYS_PINFUNC);
-+
-+ ipinfunc |= (SYS_PINFUNC_S0C);
-+ au_writel( ipinfunc ,SYS_PINFUNC);
-+
-+ return 0;
-+}
-+
-+/* button driver init */
-+static int __init button_init(void)
-+{
-+ int ret, i;
-+ unsigned int flag=0;
-+
-+ printk("au1200_ibutton.c: button_init()\r\n");
-+
-+ button_hw_init();
-+
-+ /* register all button irq handler */
-+
-+ for(i=0; i< sizeof(button_map)/sizeof(button_map[0]); i++)
-+ {
-+ /* register irq <-- gpio 1 ,6 ,12 , 17 ,19 , 26 ,28 */
-+ if(button_map[i] != 0)
-+ {
-+ ret = request_irq(AU1000_GPIO_0 + i ,
-+ &button_interrupt , SA_INTERRUPT ,
-+ DRIVER_NAME , &dev);
-+ if(ret) flag |= 1<<i;
-+ }
-+ }
-+
-+ printk("au1200_ibutton.c: request_irq,ret:0x%x\r\n",ret);
-+
-+ if (ret) {
-+ printk("au1200_ibutton.c: request_irq:%X failed\r\n",flag);
-+ return ret;
-+ }
-+
-+ dev.name = DRIVER_NAME;
-+ dev.evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
-+
-+ for (i=0;i<sizeof(button_map)/sizeof(button_map[0]);i++)
-+ {
-+ dev.keybit[LONG(button_map[i])] |= BIT(button_map[i]);
-+ }
-+
-+ input_register_device(&dev);
-+
-+ /* ready to receive interrupts */
-+
-+ return 0;
-+}
-+
-+/* button driver exit */
-+static void __exit button_exit(void)
-+{
-+ int i;
-+
-+ for(i=0;i<sizeof(button_map)/sizeof(button_map[0]);i++)
-+ {
-+ if(button_map[i] != 0)
-+ {
-+ free_irq( AU1000_GPIO_0 + i, &dev);
-+ }
-+ }
-+
-+ input_unregister_device(&dev);
-+
-+ printk("au1200_ibutton.c: button_exit()\r\n");
-+}
-+
-+module_init(button_init);
-+module_exit(button_exit);
-+
-+MODULE_AUTHOR( DRIVER_AUTHOR );
-+MODULE_DESCRIPTION( DRIVER_DESC );
-+MODULE_LICENSE("GPL");
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/ficmmp/au1xxx_dock.c linux-2.4.32-rc1.mips/arch/mips/au1000/ficmmp/au1xxx_dock.c
---- linux-2.4.32-rc1/arch/mips/au1000/ficmmp/au1xxx_dock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/ficmmp/au1xxx_dock.c 2005-01-30 09:01:27.000000000 +0100
-@@ -0,0 +1,261 @@
-+/*
-+ * Copyright (C) 2003 Metrowerks, All Rights Reserved.
-+ *
-+ * 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/module.h>
-+#include <linux/init.h>
-+#include <linux/fs.h>
-+#include <linux/sched.h>
-+#include <linux/miscdevice.h>
-+#include <linux/errno.h>
-+#include <linux/poll.h>
-+#include <asm/au1000.h>
-+#include <asm/uaccess.h>
-+#include <asm/au1xxx_gpio.h>
-+
-+
-+#if defined(CONFIG_MIPS_FICMMP)
-+ #define DOCK_GPIO 215
-+#else
-+ #error Unsupported Au1xxx Platform
-+#endif
-+
-+#define MAKE_FLAG 0x20
-+
-+#undef DEBUG
-+
-+#define DEBUG 0
-+//#define DEBUG 1
-+
-+#if DEBUG
-+#define DPRINTK(format, args...) printk(__FUNCTION__ ": " format, ## args)
-+#else
-+#define DPRINTK(format, args...) do { } while (0)
-+#endif
-+
-+/* Please note that this driver is based on a timer and is not interrupt
-+ * driven. If you are going to make use of this driver, you will need to have
-+ * your application open the dock listing from the /dev directory first.
-+ */
-+
-+struct au1xxx_dock {
-+ struct fasync_struct *fasync;
-+ wait_queue_head_t read_wait;
-+ int open_count;
-+ unsigned int debounce;
-+ unsigned int current;
-+ unsigned int last;
-+};
-+
-+static struct au1xxx_dock dock_info;
-+
-+
-+static void dock_timer_periodic(void *data);
-+
-+static struct tq_struct dock_task = {
-+ routine: dock_timer_periodic,
-+ data: NULL
-+};
-+
-+static int cleanup_flag = 0;
-+static DECLARE_WAIT_QUEUE_HEAD(cleanup_wait_queue);
-+
-+
-+static unsigned int read_dock_state(void)
-+{
-+ u32 state;
-+
-+ state = au1xxx_gpio_read(DOCK_GPIO);
-+
-+ /* printk( "Current Dock State: %d\n", state ); */
-+
-+ return state;
-+}
-+
-+
-+static void dock_timer_periodic(void *data)
-+{
-+ struct au1xxx_dock *dock = (struct au1xxx_dock *)data;
-+ unsigned long dock_state;
-+
-+ /* If cleanup wants us to die */
-+ if (cleanup_flag) {
-+ /* now cleanup_module can return */
-+ wake_up(&cleanup_wait_queue);
-+ } else {
-+ /* put ourselves back in the task queue */
-+ queue_task(&dock_task, &tq_timer);
-+ }
-+
-+ /* read current dock */
-+ dock_state = read_dock_state();
-+
-+ /* if dock states hasn't changed */
-+ /* save time and be done. */
-+ if (dock_state == dock->current) {
-+ return;
-+ }
-+
-+ if (dock_state == dock->debounce) {
-+ dock->current = dock_state;
-+ } else {
-+ dock->debounce = dock_state;
-+ }
-+ if (dock->current != dock->last) {
-+ if (waitqueue_active(&dock->read_wait)) {
-+ wake_up_interruptible(&dock->read_wait);
-+ }
-+ }
-+}
-+
-+
-+static ssize_t au1xxx_dock_read(struct file *filp, char *buffer, size_t count, loff_t *ppos)
-+{
-+ struct au1xxx_dock *dock = filp->private_data;
-+ char event[3];
-+ int last;
-+ int cur;
-+ int err;
-+
-+try_again:
-+
-+ while (dock->current == dock->last) {
-+ if (filp->f_flags & O_NONBLOCK) {
-+ return -EAGAIN;
-+ }
-+ interruptible_sleep_on(&dock->read_wait);
-+ if (signal_pending(current)) {
-+ return -ERESTARTSYS;
-+ }
-+ }
-+
-+ cur = dock->current;
-+ last = dock->last;
-+
-+ if(cur != last)
-+ {
-+ event[0] = cur ? 'D' : 'U';
-+ event[1] = '\r';
-+ event[2] = '\n';
-+ }
-+ else
-+ goto try_again;
-+
-+ dock->last = cur;
-+ err = copy_to_user(buffer, &event, 3);
-+ if (err) {
-+ return err;
-+ }
-+
-+ return 3;
-+}
-+
-+
-+static int au1xxx_dock_open(struct inode *inode, struct file *filp)
-+{
-+ struct au1xxx_dock *dock = &dock_info;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ filp->private_data = dock;
-+
-+ if (dock->open_count++ == 0) {
-+ dock_task.data = dock;
-+ cleanup_flag = 0;
-+ queue_task(&dock_task, &tq_timer);
-+ }
-+
-+ return 0;
-+}
-+
-+
-+static unsigned int au1xxx_dock_poll(struct file *filp, poll_table *wait)
-+{
-+ struct au1xxx_dock *dock = filp->private_data;
-+ int ret = 0;
-+
-+ DPRINTK("start\n");
-+ poll_wait(filp, &dock->read_wait, wait);
-+ if (dock->current != dock->last) {
-+ ret = POLLIN | POLLRDNORM;
-+ }
-+ return ret;
-+}
-+
-+
-+static int au1xxx_dock_release(struct inode *inode, struct file *filp)
-+{
-+ struct au1xxx_dock *dock = filp->private_data;
-+
-+ DPRINTK("start\n");
-+
-+ if (--dock->open_count == 0) {
-+ cleanup_flag = 1;
-+ sleep_on(&cleanup_wait_queue);
-+ }
-+ MOD_DEC_USE_COUNT;
-+
-+ return 0;
-+}
-+
-+
-+
-+static struct file_operations au1xxx_dock_fops = {
-+ owner: THIS_MODULE,
-+ read: au1xxx_dock_read,
-+ poll: au1xxx_dock_poll,
-+ open: au1xxx_dock_open,
-+ release: au1xxx_dock_release,
-+};
-+
-+/*
-+ * The au1xxx dock is a misc device:
-+ * Major 10 char
-+ * Minor 22 /dev/dock
-+ *
-+ * This is /dev/misc/dock if devfs is used.
-+ */
-+
-+static struct miscdevice au1xxx_dock_dev = {
-+ minor: 23,
-+ name: "dock",
-+ fops: &au1xxx_dock_fops,
-+};
-+
-+static int __init au1xxx_dock_init(void)
-+{
-+ struct au1xxx_dock *dock = &dock_info;
-+ int ret;
-+
-+ DPRINTK("Initializing dock driver\n");
-+ dock->open_count = 0;
-+ cleanup_flag = 0;
-+ init_waitqueue_head(&dock->read_wait);
-+
-+
-+ /* yamon configures GPIO pins for the dock
-+ * no initialization needed
-+ */
-+
-+ ret = misc_register(&au1xxx_dock_dev);
-+
-+ DPRINTK("dock driver fully initialized.\n");
-+
-+ return ret;
-+}
-+
-+
-+static void __exit au1xxx_dock_exit(void)
-+{
-+ DPRINTK("unloading dock driver\n");
-+ misc_deregister(&au1xxx_dock_dev);
-+}
-+
-+
-+module_init(au1xxx_dock_init);
-+module_exit(au1xxx_dock_exit);
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/ficmmp/board_setup.c linux-2.4.32-rc1.mips/arch/mips/au1000/ficmmp/board_setup.c
---- linux-2.4.32-rc1/arch/mips/au1000/ficmmp/board_setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/ficmmp/board_setup.c 2005-03-19 08:17:51.000000000 +0100
-@@ -0,0 +1,226 @@
-+/*
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Alchemy Pb1200 board setup.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/ioport.h>
-+#include <linux/mm.h>
-+#include <linux/console.h>
-+#include <linux/mc146818rtc.h>
-+#include <linux/delay.h>
-+#include <linux/ide.h>
-+
-+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX)
-+#include <linux/ide.h>
-+#endif
-+
-+#include <asm/cpu.h>
-+#include <asm/bootinfo.h>
-+#include <asm/irq.h>
-+#include <asm/keyboard.h>
-+#include <asm/mipsregs.h>
-+#include <asm/reboot.h>
-+#include <asm/pgtable.h>
-+#include <asm/au1000.h>
-+#include <asm/ficmmp.h>
-+#include <asm/au1xxx_dbdma.h>
-+#include <asm/au1xxx_gpio.h>
-+
-+extern struct rtc_ops no_rtc_ops;
-+
-+/* value currently in the board configuration register */
-+u16 ficmmp_config = 0;
-+
-+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX)
-+extern struct ide_ops *ide_ops;
-+extern struct ide_ops au1xxx_ide_ops;
-+extern u32 au1xxx_ide_virtbase;
-+extern u64 au1xxx_ide_physbase;
-+extern int au1xxx_ide_irq;
-+
-+u32 led_base_addr;
-+/* Ddma */
-+chan_tab_t *ide_read_ch, *ide_write_ch;
-+u32 au1xxx_ide_ddma_enable = 0, switch4ddma = 1; // PIO+ddma
-+
-+dbdev_tab_t new_dbdev_tab_element = { DSCR_CMD0_THROTTLE, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 };
-+#endif /* end CONFIG_BLK_DEV_IDE_AU1XXX */
-+
-+void board_reset (void)
-+{
-+ au_writel(0, 0xAD80001C);
-+}
-+
-+void board_power_off (void)
-+{
-+}
-+
-+void __init board_setup(void)
-+{
-+ char *argptr = NULL;
-+ u32 pin_func;
-+ rtc_ops = &no_rtc_ops;
-+
-+ ficmmp_config_init(); //Initialize FIC control register
-+
-+#if 0
-+ /* Enable PSC1 SYNC for AC97. Normaly done in audio driver,
-+ * but it is board specific code, so put it here.
-+ */
-+ pin_func = au_readl(SYS_PINFUNC);
-+ au_sync();
-+ pin_func |= SYS_PF_MUST_BE_SET | SYS_PF_PSC1_S1;
-+ au_writel(pin_func, SYS_PINFUNC);
-+
-+ au_writel(0, (u32)bcsr|0x10); /* turn off pcmcia power */
-+ au_sync();
-+#endif
-+
-+#if defined( CONFIG_I2C_ALGO_AU1550 )
-+ {
-+ u32 freq0, clksrc;
-+
-+ /* Select SMBUS in CPLD */
-+ /* bcsr->resets &= ~(BCSR_RESETS_PCS0MUX); */
-+
-+ pin_func = au_readl(SYS_PINFUNC);
-+ au_sync();
-+ pin_func &= ~(3<<17 | 1<<4);
-+ /* Set GPIOs correctly */
-+ pin_func |= 2<<17;
-+ au_writel(pin_func, SYS_PINFUNC);
-+ au_sync();
-+
-+ /* The i2c driver depends on 50Mhz clock */
-+ freq0 = au_readl(SYS_FREQCTRL0);
-+ au_sync();
-+ freq0 &= ~(SYS_FC_FRDIV1_MASK | SYS_FC_FS1 | SYS_FC_FE1);
-+ freq0 |= (3<<SYS_FC_FRDIV1_BIT);
-+ /* 396Mhz / (3+1)*2 == 49.5Mhz */
-+ au_writel(freq0, SYS_FREQCTRL0);
-+ au_sync();
-+ freq0 |= SYS_FC_FE1;
-+ au_writel(freq0, SYS_FREQCTRL0);
-+ au_sync();
-+
-+ clksrc = au_readl(SYS_CLKSRC);
-+ au_sync();
-+ clksrc &= ~0x01f00000;
-+ /* bit 22 is EXTCLK0 for PSC0 */
-+ clksrc |= (0x3 << 22);
-+ au_writel(clksrc, SYS_CLKSRC);
-+ au_sync();
-+ }
-+#endif
-+
-+#ifdef CONFIG_FB_AU1200
-+ argptr = prom_getcmdline();
-+ strcat(argptr, " video=au1200fb:");
-+#endif
-+
-+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX)
-+ /*
-+ * Iniz IDE parameters
-+ */
-+ ide_ops = &au1xxx_ide_ops;
-+ au1xxx_ide_irq = FICMMP_IDE_INT;
-+ au1xxx_ide_physbase = AU1XXX_ATA_PHYS_ADDR;
-+ au1xxx_ide_virtbase = KSEG1ADDR(AU1XXX_ATA_PHYS_ADDR);
-+ switch4ddma = 0;
-+ /*
-+ ide_ops = &au1xxx_ide_ops;
-+ au1xxx_ide_irq = FICMMP_IDE_INT;
-+ au1xxx_ide_base = KSEG1ADDR(AU1XXX_ATA_BASE);
-+ */
-+ au1xxx_gpio_write(9, 1);
-+ printk("B4001010: %X\n", *((u32*)0xB4001010));
-+ printk("B4001014: %X\n", *((u32*)0xB4001014));
-+ printk("B4001018: %X\n", *((u32*)0xB4001018));
-+ printk("B1900100: %X\n", *((u32*)0xB1900100));
-+
-+#if 0
-+ ficmmp_config_clear(FICMMP_CONFIG_IDERST);
-+ mdelay(100);
-+ ficmmp_config_set(FICMMP_CONFIG_IDERST);
-+ mdelay(100);
-+#endif
-+ /*
-+ * change PIO or PIO+Ddma
-+ * check the GPIO-5 pin condition. pb1200:s18_dot
-+ */
-+/* switch4ddma = 0; //(au_readl(SYS_PINSTATERD) & (1 << 5)) ? 1 : 0; */
-+#endif
-+
-+ /* The Pb1200 development board uses external MUX for PSC0 to
-+ support SMB/SPI. bcsr->resets bit 12: 0=SMB 1=SPI
-+ */
-+#if defined(CONFIG_AU1550_PSC_SPI) && defined(CONFIG_I2C_ALGO_AU1550)
-+ #error I2C and SPI are mutually exclusive. Both are physically connected to PSC0.\
-+ Refer to Pb1200 documentation.
-+#elif defined( CONFIG_AU1550_PSC_SPI )
-+ //bcsr->resets |= BCSR_RESETS_PCS0MUX;
-+#elif defined( CONFIG_I2C_ALGO_AU1550 )
-+ //bcsr->resets &= (~BCSR_RESETS_PCS0MUX);
-+#endif
-+ au_sync();
-+
-+ printk("FIC Multimedia Player Board\n");
-+ au1xxx_gpio_tristate(5);
-+ printk("B1900100: %X\n", *((volatile u32*)0xB1900100));
-+ printk("B190002C: %X\n", *((volatile u32*)0xB190002C));
-+}
-+
-+int
-+board_au1200fb_panel (void)
-+{
-+ au1xxx_gpio_tristate(6);
-+
-+ if (au1xxx_gpio_read(12) == 0)
-+ return 9; /* FS453_640x480 (Composite/S-Video) */
-+ else
-+ return 7; /* Sharp 320x240 TFT */
-+}
-+
-+int
-+board_au1200fb_panel_init (void)
-+{
-+ /*Enable data buffers*/
-+ ficmmp_config_clear(FICMMP_CONFIG_LCMDATAOUT);
-+ /*Take LCD out of reset*/
-+ ficmmp_config_set(FICMMP_CONFIG_LCMPWREN | FICMMP_CONFIG_LCMEN);
-+ return 0;
-+}
-+
-+int
-+board_au1200fb_panel_shutdown (void)
-+{
-+ /*Disable data buffers*/
-+ ficmmp_config_set(FICMMP_CONFIG_LCMDATAOUT);
-+ /*Put LCD in reset, remove power*/
-+ ficmmp_config_clear(FICMMP_CONFIG_LCMEN | FICMMP_CONFIG_LCMPWREN);
-+ return 0;
-+}
-+
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/ficmmp/init.c linux-2.4.32-rc1.mips/arch/mips/au1000/ficmmp/init.c
---- linux-2.4.32-rc1/arch/mips/au1000/ficmmp/init.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/ficmmp/init.c 2005-01-30 09:01:27.000000000 +0100
-@@ -0,0 +1,76 @@
-+/*
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * PB1200 board setup
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/mm.h>
-+#include <linux/sched.h>
-+#include <linux/bootmem.h>
-+#include <asm/addrspace.h>
-+#include <asm/bootinfo.h>
-+#include <linux/config.h>
-+#include <linux/string.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+
-+int prom_argc;
-+char **prom_argv, **prom_envp;
-+extern void __init prom_init_cmdline(void);
-+extern char *prom_getenv(char *envname);
-+
-+const char *get_system_type(void)
-+{
-+ return "FIC Multimedia Player (Au1200)";
-+}
-+
-+u32 mae_memsize = 0;
-+
-+int __init prom_init(int argc, char **argv, char **envp, int *prom_vec)
-+{
-+ unsigned char *memsize_str;
-+ unsigned long memsize;
-+
-+ prom_argc = argc;
-+ prom_argv = argv;
-+ prom_envp = envp;
-+
-+ mips_machgroup = MACH_GROUP_ALCHEMY;
-+ mips_machtype = MACH_PB1000; /* set the platform # */
-+ prom_init_cmdline();
-+
-+ memsize_str = prom_getenv("memsize");
-+ if (!memsize_str) {
-+ memsize = 0x08000000;
-+ } else {
-+ memsize = simple_strtol(memsize_str, NULL, 0);
-+ }
-+
-+ /* reserved 32MB for MAE driver */
-+ memsize -= (32 * 1024 * 1024);
-+ add_memory_region(0, memsize, BOOT_MEM_RAM);
-+ mae_memsize = memsize; /* for drivers/char/au1xxx_mae.c */
-+ return 0;
-+}
-+
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/ficmmp/irqmap.c linux-2.4.32-rc1.mips/arch/mips/au1000/ficmmp/irqmap.c
---- linux-2.4.32-rc1/arch/mips/au1000/ficmmp/irqmap.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/ficmmp/irqmap.c 2005-01-30 09:01:27.000000000 +0100
-@@ -0,0 +1,61 @@
-+/*
-+ * BRIEF MODULE DESCRIPTION
-+ * Au1xxx irq map table
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+#include <linux/errno.h>
-+#include <linux/init.h>
-+#include <linux/irq.h>
-+#include <linux/kernel_stat.h>
-+#include <linux/module.h>
-+#include <linux/signal.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/interrupt.h>
-+#include <linux/ioport.h>
-+#include <linux/timex.h>
-+#include <linux/slab.h>
-+#include <linux/random.h>
-+#include <linux/delay.h>
-+
-+#include <asm/bitops.h>
-+#include <asm/bootinfo.h>
-+#include <asm/io.h>
-+#include <asm/mipsregs.h>
-+#include <asm/system.h>
-+#include <asm/au1000.h>
-+#include <asm/ficmmp.h>
-+
-+au1xxx_irq_map_t au1xxx_irq_map[] = {
-+ { FICMMP_IDE_INT, INTC_INT_HIGH_LEVEL, 0 },
-+ { AU1XXX_SMC91111_IRQ, INTC_INT_HIGH_LEVEL, 0 },
-+ { AU1000_GPIO_1 , INTC_INT_FALL_EDGE, 0 }, // main button
-+ { AU1000_GPIO_6 , INTC_INT_RISE_EDGE, 0 }, // select button
-+ { AU1000_GPIO_12, INTC_INT_FALL_EDGE, 0 }, // guide button
-+ { AU1000_GPIO_17, INTC_INT_RISE_EDGE, 0 }, // down button
-+ { AU1000_GPIO_19, INTC_INT_RISE_EDGE, 0 }, // left button
-+ { AU1000_GPIO_26, INTC_INT_RISE_EDGE, 0 }, // right button
-+ { AU1000_GPIO_28, INTC_INT_RISE_EDGE, 0 }, // up button
-+};
-+
-+int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
-+
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/ficmmp/Makefile linux-2.4.32-rc1.mips/arch/mips/au1000/ficmmp/Makefile
---- linux-2.4.32-rc1/arch/mips/au1000/ficmmp/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/ficmmp/Makefile 2005-01-30 09:01:27.000000000 +0100
-@@ -0,0 +1,25 @@
-+#
-+# Copyright 2000 MontaVista Software Inc.
-+# Author: MontaVista Software, Inc.
-+# ppopov@mvista.com or source@mvista.com
-+#
-+# Makefile for the Alchemy Semiconductor FIC board.
-+#
-+# Note! Dependencies are done automagically by 'make dep', which also
-+# removes any old dependencies. DON'T put your own dependencies here
-+# unless it's something special (ie not a .c file).
-+#
-+
-+USE_STANDARD_AS_RULE := true
-+
-+O_TARGET := ficmmp.o
-+
-+obj-y := init.o board_setup.o irqmap.o au1200_ibutton.o au1xxx_dock.o
-+
-+ifdef CONFIG_MMC
-+obj-y += mmc_support.o
-+export-objs +=mmc_support.o
-+endif
-+
-+
-+include $(TOPDIR)/Rules.make
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/hydrogen3/board_setup.c linux-2.4.32-rc1.mips/arch/mips/au1000/hydrogen3/board_setup.c
---- linux-2.4.32-rc1/arch/mips/au1000/hydrogen3/board_setup.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/hydrogen3/board_setup.c 2005-03-19 08:17:51.000000000 +0100
-@@ -51,12 +51,19 @@
- {
- }
-
-+void board_power_off (void)
-+{
-+}
-+
- void __init board_setup(void)
- {
- u32 pin_func;
-
- rtc_ops = &no_rtc_ops;
-
-+ /* Set GPIO14 high to make CD/DAT1 high for MMC to work */
-+ au_writel(1<<14, SYS_OUTPUTSET);
-+
- #ifdef CONFIG_AU1X00_USB_DEVICE
- // 2nd USB port is USB device
- pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8000);
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/hydrogen3/buttons.c linux-2.4.32-rc1.mips/arch/mips/au1000/hydrogen3/buttons.c
---- linux-2.4.32-rc1/arch/mips/au1000/hydrogen3/buttons.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/hydrogen3/buttons.c 2005-02-11 22:09:55.000000000 +0100
-@@ -0,0 +1,308 @@
-+/*
-+ * Copyright (C) 2003 Metrowerks, All Rights Reserved.
-+ *
-+ * 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/module.h>
-+#include <linux/init.h>
-+#include <linux/fs.h>
-+#include <linux/sched.h>
-+#include <linux/miscdevice.h>
-+#include <linux/errno.h>
-+#include <linux/poll.h>
-+#include <asm/au1000.h>
-+#include <asm/uaccess.h>
-+
-+#define BUTTON_SELECT (1<<1)
-+#define BUTTON_1 (1<<2)
-+#define BUTTON_2 (1<<3)
-+#define BUTTON_ONOFF (1<<6)
-+#define BUTTON_3 (1<<7)
-+#define BUTTON_4 (1<<8)
-+#define BUTTON_LEFT (1<<9)
-+#define BUTTON_DOWN (1<<10)
-+#define BUTTON_RIGHT (1<<11)
-+#define BUTTON_UP (1<<12)
-+
-+#define BUTTON_MASK (\
-+ BUTTON_SELECT \
-+ | BUTTON_1 \
-+ | BUTTON_2 \
-+ | BUTTON_ONOFF \
-+ | BUTTON_3 \
-+ | BUTTON_4 \
-+ | BUTTON_LEFT \
-+ | BUTTON_DOWN \
-+ | BUTTON_RIGHT \
-+ | BUTTON_UP \
-+ )
-+
-+#define BUTTON_INVERT (\
-+ BUTTON_SELECT \
-+ | BUTTON_1 \
-+ | BUTTON_2 \
-+ | BUTTON_3 \
-+ | BUTTON_4 \
-+ | BUTTON_LEFT \
-+ | BUTTON_DOWN \
-+ | BUTTON_RIGHT \
-+ | BUTTON_UP \
-+ )
-+
-+
-+
-+#define MAKE_FLAG 0x20
-+
-+#undef DEBUG
-+
-+#define DEBUG 0
-+//#define DEBUG 1
-+
-+#if DEBUG
-+#define DPRINTK(format, args...) printk(__FUNCTION__ ": " format, ## args)
-+#else
-+#define DPRINTK(format, args...) do { } while (0)
-+#endif
-+
-+/* Please note that this driver is based on a timer and is not interrupt
-+ * driven. If you are going to make use of this driver, you will need to have
-+ * your application open the buttons listing from the /dev directory first.
-+ */
-+
-+struct hydrogen3_buttons {
-+ struct fasync_struct *fasync;
-+ wait_queue_head_t read_wait;
-+ int open_count;
-+ unsigned int debounce;
-+ unsigned int current;
-+ unsigned int last;
-+};
-+
-+static struct hydrogen3_buttons buttons_info;
-+
-+
-+static void button_timer_periodic(void *data);
-+
-+static struct tq_struct button_task = {
-+ routine: button_timer_periodic,
-+ data: NULL
-+};
-+
-+static int cleanup_flag = 0;
-+static DECLARE_WAIT_QUEUE_HEAD(cleanup_wait_queue);
-+
-+
-+static unsigned int read_button_state(void)
-+{
-+ unsigned long state;
-+
-+ state = inl(SYS_PINSTATERD) & BUTTON_MASK;
-+ state ^= BUTTON_INVERT;
-+
-+ DPRINTK( "Current Button State: %d\n", state );
-+
-+ return state;
-+}
-+
-+
-+static void button_timer_periodic(void *data)
-+{
-+ struct hydrogen3_buttons *buttons = (struct hydrogen3_buttons *)data;
-+ unsigned long button_state;
-+
-+ // If cleanup wants us to die
-+ if (cleanup_flag) {
-+ wake_up(&cleanup_wait_queue); // now cleanup_module can return
-+ } else {
-+ queue_task(&button_task, &tq_timer); // put ourselves back in the task queue
-+ }
-+
-+ // read current buttons
-+ button_state = read_button_state();
-+
-+ // if no buttons are down and nothing to do then
-+ // save time and be done.
-+ if ((button_state == 0) && (buttons->current == 0)) {
-+ return;
-+ }
-+
-+ if (button_state == buttons->debounce) {
-+ buttons->current = button_state;
-+ } else {
-+ buttons->debounce = button_state;
-+ }
-+// printk("0x%04x\n", button_state);
-+ if (buttons->current != buttons->last) {
-+ if (waitqueue_active(&buttons->read_wait)) {
-+ wake_up_interruptible(&buttons->read_wait);
-+ }
-+ }
-+}
-+
-+
-+static ssize_t hydrogen3_buttons_read(struct file *filp, char *buffer, size_t count, loff_t *ppos)
-+{
-+ struct hydrogen3_buttons *buttons = filp->private_data;
-+ char events[16];
-+ int index;
-+ int last;
-+ int cur;
-+ int bit;
-+ int bit_mask;
-+ int err;
-+
-+ DPRINTK("start\n");
-+
-+try_again:
-+
-+ while (buttons->current == buttons->last) {
-+ if (filp->f_flags & O_NONBLOCK) {
-+ return -EAGAIN;
-+ }
-+ interruptible_sleep_on(&buttons->read_wait);
-+ if (signal_pending(current)) {
-+ return -ERESTARTSYS;
-+ }
-+ }
-+
-+ cur = buttons->current;
-+ last = buttons->last;
-+
-+ index = 0;
-+ bit_mask = 1;
-+ for (bit = 0; (bit < 16) && count; bit++) {
-+ if ((cur ^ last) & bit_mask) {
-+ if (cur & bit_mask) {
-+ events[index] = (bit | MAKE_FLAG) + 'A';
-+ last |= bit_mask;
-+ } else {
-+ events[index] = bit + 'A';
-+ last &= ~bit_mask;
-+ }
-+ index++;
-+ count--;
-+ }
-+ bit_mask <<= 1;
-+ }
-+ buttons->last = last;
-+
-+ if (index == 0) {
-+ goto try_again;
-+ }
-+
-+ err = copy_to_user(buffer, events, index);
-+ if (err) {
-+ return err;
-+ }
-+
-+ return index;
-+}
-+
-+
-+static int hydrogen3_buttons_open(struct inode *inode, struct file *filp)
-+{
-+ struct hydrogen3_buttons *buttons = &buttons_info;
-+
-+ DPRINTK("start\n");
-+ MOD_INC_USE_COUNT;
-+
-+ filp->private_data = buttons;
-+
-+ if (buttons->open_count++ == 0) {
-+ button_task.data = buttons;
-+ cleanup_flag = 0;
-+ queue_task(&button_task, &tq_timer);
-+ }
-+
-+ return 0;
-+}
-+
-+
-+static unsigned int hydrogen3_buttons_poll(struct file *filp, poll_table *wait)
-+{
-+ struct hydrogen3_buttons *buttons = filp->private_data;
-+ int ret = 0;
-+
-+ DPRINTK("start\n");
-+ poll_wait(filp, &buttons->read_wait, wait);
-+ if (buttons->current != buttons->last) {
-+ ret = POLLIN | POLLRDNORM;
-+ }
-+ return ret;
-+}
-+
-+
-+static int hydrogen3_buttons_release(struct inode *inode, struct file *filp)
-+{
-+ struct hydrogen3_buttons *buttons = filp->private_data;
-+
-+ DPRINTK("start\n");
-+
-+ if (--buttons->open_count == 0) {
-+ cleanup_flag = 1;
-+ sleep_on(&cleanup_wait_queue);
-+ }
-+ MOD_DEC_USE_COUNT;
-+
-+ return 0;
-+}
-+
-+
-+
-+static struct file_operations hydrogen3_buttons_fops = {
-+ owner: THIS_MODULE,
-+ read: hydrogen3_buttons_read,
-+ poll: hydrogen3_buttons_poll,
-+ open: hydrogen3_buttons_open,
-+ release: hydrogen3_buttons_release,
-+};
-+
-+/*
-+ * The hydrogen3 buttons is a misc device:
-+ * Major 10 char
-+ * Minor 22 /dev/buttons
-+ *
-+ * This is /dev/misc/buttons if devfs is used.
-+ */
-+
-+static struct miscdevice hydrogen3_buttons_dev = {
-+ minor: 22,
-+ name: "buttons",
-+ fops: &hydrogen3_buttons_fops,
-+};
-+
-+static int __init hydrogen3_buttons_init(void)
-+{
-+ struct hydrogen3_buttons *buttons = &buttons_info;
-+ int ret;
-+
-+ DPRINTK("Initializing buttons driver\n");
-+ buttons->open_count = 0;
-+ cleanup_flag = 0;
-+ init_waitqueue_head(&buttons->read_wait);
-+
-+
-+ // yamon configures GPIO pins for the buttons
-+ // no initialization needed
-+
-+ ret = misc_register(&hydrogen3_buttons_dev);
-+
-+ DPRINTK("Buttons driver fully initialized.\n");
-+
-+ return ret;
-+}
-+
-+
-+static void __exit hydrogen3_buttons_exit(void)
-+{
-+ DPRINTK("unloading buttons driver\n");
-+ misc_deregister(&hydrogen3_buttons_dev);
-+}
-+
-+
-+module_init(hydrogen3_buttons_init);
-+module_exit(hydrogen3_buttons_exit);
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/hydrogen3/Makefile linux-2.4.32-rc1.mips/arch/mips/au1000/hydrogen3/Makefile
---- linux-2.4.32-rc1/arch/mips/au1000/hydrogen3/Makefile 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/hydrogen3/Makefile 2005-02-11 22:09:55.000000000 +0100
-@@ -14,6 +14,11 @@
-
- O_TARGET := hydrogen3.o
-
--obj-y := init.o board_setup.o irqmap.o
-+obj-y := init.o board_setup.o irqmap.o buttons.o
-+
-+ifdef CONFIG_MMC
-+obj-y += mmc_support.o
-+export-objs +=mmc_support.o
-+endif
-
- include $(TOPDIR)/Rules.make
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/hydrogen3/mmc_support.c linux-2.4.32-rc1.mips/arch/mips/au1000/hydrogen3/mmc_support.c
---- linux-2.4.32-rc1/arch/mips/au1000/hydrogen3/mmc_support.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/hydrogen3/mmc_support.c 2005-02-02 05:27:06.000000000 +0100
-@@ -0,0 +1,89 @@
-+/*
-+ * BRIEF MODULE DESCRIPTION
-+ *
-+ * MMC support routines for Hydrogen3.
-+ *
-+ *
-+ * Copyright (c) 2003-2004 Embedded Edge, LLC.
-+ * Author: Embedded Edge, LLC.
-+ * Contact: dan@embeddededge.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+
-+#include <linux/config.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+
-+#include <asm/irq.h>
-+#include <asm/au1000.h>
-+#include <asm/au1100_mmc.h>
-+
-+#define GPIO_17_WP 0x20000
-+
-+/* SD/MMC controller support functions */
-+
-+/*
-+ * Detect card.
-+ */
-+void mmc_card_inserted(int _n_, int *_res_)
-+{
-+ u32 gpios = au_readl(SYS_PINSTATERD);
-+ u32 emptybit = (1<<16);
-+ *_res_ = ((gpios & emptybit) == 0);
-+}
-+
-+/*
-+ * Check card write protection.
-+ */
-+void mmc_card_writable(int _n_, int *_res_)
-+{
-+ unsigned long mmc_wp, board_specific;
-+ board_specific = au_readl(SYS_OUTPUTSET);
-+ mmc_wp=GPIO_17_WP;
-+ if (!(board_specific & mmc_wp)) {/* low means card writable */
-+ *_res_ = 1;
-+ } else {
-+ *_res_ = 0;
-+ }
-+}
-+/*
-+ * Apply power to card slot.
-+ */
-+void mmc_power_on(int _n_)
-+{
-+}
-+
-+/*
-+ * Remove power from card slot.
-+ */
-+void mmc_power_off(int _n_)
-+{
-+}
-+
-+EXPORT_SYMBOL(mmc_card_inserted);
-+EXPORT_SYMBOL(mmc_card_writable);
-+EXPORT_SYMBOL(mmc_power_on);
-+EXPORT_SYMBOL(mmc_power_off);
-+
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/mtx-1/board_setup.c linux-2.4.32-rc1.mips/arch/mips/au1000/mtx-1/board_setup.c
---- linux-2.4.32-rc1/arch/mips/au1000/mtx-1/board_setup.c 2004-02-18 14:36:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/mtx-1/board_setup.c 2004-11-26 09:37:16.000000000 +0100
-@@ -48,6 +48,12 @@
-
- extern struct rtc_ops no_rtc_ops;
-
-+void board_reset (void)
-+{
-+ /* Hit BCSR.SYSTEM_CONTROL[SW_RST] */
-+ au_writel(0x00000000, 0xAE00001C);
-+}
-+
- void __init board_setup(void)
- {
- rtc_ops = &no_rtc_ops;
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/mtx-1/irqmap.c linux-2.4.32-rc1.mips/arch/mips/au1000/mtx-1/irqmap.c
---- linux-2.4.32-rc1/arch/mips/au1000/mtx-1/irqmap.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/mtx-1/irqmap.c 2004-11-26 09:37:16.000000000 +0100
-@@ -72,10 +72,10 @@
- * A B C D
- */
- {
-- {INTA, INTB, INTC, INTD}, /* IDSEL 0 */
-- {INTA, INTB, INTC, INTD}, /* IDSEL 1 */
-- {INTA, INTB, INTC, INTD}, /* IDSEL 2 */
-- {INTA, INTB, INTC, INTD}, /* IDSEL 3 */
-+ {INTA, INTB, INTX, INTX}, /* IDSEL 0 */
-+ {INTB, INTA, INTX, INTX}, /* IDSEL 1 */
-+ {INTC, INTD, INTX, INTX}, /* IDSEL 2 */
-+ {INTD, INTC, INTX, INTX}, /* IDSEL 3 */
- };
- const long min_idsel = 0, max_idsel = 3, irqs_per_slot = 4;
- return PCI_IRQ_TABLE_LOOKUP;
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/pb1000/board_setup.c linux-2.4.32-rc1.mips/arch/mips/au1000/pb1000/board_setup.c
---- linux-2.4.32-rc1/arch/mips/au1000/pb1000/board_setup.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/pb1000/board_setup.c 2005-03-19 08:17:51.000000000 +0100
-@@ -58,6 +58,10 @@
- {
- }
-
-+void board_power_off (void)
-+{
-+}
-+
- void __init board_setup(void)
- {
- u32 pin_func, static_cfg0;
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/pb1100/board_setup.c linux-2.4.32-rc1.mips/arch/mips/au1000/pb1100/board_setup.c
---- linux-2.4.32-rc1/arch/mips/au1000/pb1100/board_setup.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/pb1100/board_setup.c 2005-03-19 08:17:51.000000000 +0100
-@@ -62,6 +62,10 @@
- au_writel(0x00000000, 0xAE00001C);
- }
-
-+void board_power_off (void)
-+{
-+}
-+
- void __init board_setup(void)
- {
- u32 pin_func;
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/pb1100/Makefile linux-2.4.32-rc1.mips/arch/mips/au1000/pb1100/Makefile
---- linux-2.4.32-rc1/arch/mips/au1000/pb1100/Makefile 2003-08-25 13:44:39.000000000 +0200
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/pb1100/Makefile 2005-01-30 09:10:29.000000000 +0100
-@@ -16,4 +16,10 @@
-
- obj-y := init.o board_setup.o irqmap.o
-
-+
-+ifdef CONFIG_MMC
-+obj-y += mmc_support.o
-+export-objs += mmc_support.o
-+endif
-+
- include $(TOPDIR)/Rules.make
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/pb1100/mmc_support.c linux-2.4.32-rc1.mips/arch/mips/au1000/pb1100/mmc_support.c
---- linux-2.4.32-rc1/arch/mips/au1000/pb1100/mmc_support.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/pb1100/mmc_support.c 2005-01-30 09:10:29.000000000 +0100
-@@ -0,0 +1,126 @@
-+/*
-+ * BRIEF MODULE DESCRIPTION
-+ *
-+ * MMC support routines for PB1100.
-+ *
-+ *
-+ * Copyright (c) 2003-2004 Embedded Edge, LLC.
-+ * Author: Embedded Edge, LLC.
-+ * Contact: dan@embeddededge.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+
-+#include <linux/config.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+
-+#include <asm/irq.h>
-+#include <asm/au1000.h>
-+#include <asm/au1100_mmc.h>
-+#include <asm/pb1100.h>
-+
-+
-+/* SD/MMC controller support functions */
-+
-+/*
-+ * Detect card.
-+ */
-+void mmc_card_inserted(int _n_, int *_res_)
-+{
-+ u32 gpios = au_readl(SYS_PINSTATERD);
-+ u32 emptybit = (_n_) ? (1<<15) : (1<<14);
-+ *_res_ = ((gpios & emptybit) == 0);
-+}
-+
-+/*
-+ * Check card write protection.
-+ */
-+void mmc_card_writable(int _n_, int *_res_)
-+{
-+ BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+ unsigned long mmc_wp, board_specific;
-+
-+ if (_n_) {
-+ mmc_wp = BCSR_PCMCIA_SD1_WP;
-+ } else {
-+ mmc_wp = BCSR_PCMCIA_SD0_WP;
-+ }
-+
-+ board_specific = au_readl((unsigned long)(&bcsr->pcmcia));
-+
-+ if (!(board_specific & mmc_wp)) {/* low means card writable */
-+ *_res_ = 1;
-+ } else {
-+ *_res_ = 0;
-+ }
-+}
-+
-+/*
-+ * Apply power to card slot.
-+ */
-+void mmc_power_on(int _n_)
-+{
-+ BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+ unsigned long mmc_pwr, board_specific;
-+
-+ if (_n_) {
-+ mmc_pwr = BCSR_PCMCIA_SD1_PWR;
-+ } else {
-+ mmc_pwr = BCSR_PCMCIA_SD0_PWR;
-+ }
-+
-+ board_specific = au_readl((unsigned long)(&bcsr->pcmcia));
-+ board_specific |= mmc_pwr;
-+
-+ au_writel(board_specific, (int)(&bcsr->pcmcia));
-+ au_sync_delay(1);
-+}
-+
-+/*
-+ * Remove power from card slot.
-+ */
-+void mmc_power_off(int _n_)
-+{
-+ BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+ unsigned long mmc_pwr, board_specific;
-+
-+ if (_n_) {
-+ mmc_pwr = BCSR_PCMCIA_SD1_PWR;
-+ } else {
-+ mmc_pwr = BCSR_PCMCIA_SD0_PWR;
-+ }
-+
-+ board_specific = au_readl((unsigned long)(&bcsr->pcmcia));
-+ board_specific &= ~mmc_pwr;
-+
-+ au_writel(board_specific, (int)(&bcsr->pcmcia));
-+ au_sync_delay(1);
-+}
-+
-+EXPORT_SYMBOL(mmc_card_inserted);
-+EXPORT_SYMBOL(mmc_card_writable);
-+EXPORT_SYMBOL(mmc_power_on);
-+EXPORT_SYMBOL(mmc_power_off);
-+
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/pb1200/board_setup.c linux-2.4.32-rc1.mips/arch/mips/au1000/pb1200/board_setup.c
---- linux-2.4.32-rc1/arch/mips/au1000/pb1200/board_setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/pb1200/board_setup.c 2005-03-19 08:17:51.000000000 +0100
-@@ -0,0 +1,221 @@
-+/*
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * Alchemy Pb1200 board setup.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/sched.h>
-+#include <linux/ioport.h>
-+#include <linux/mm.h>
-+#include <linux/console.h>
-+#include <linux/mc146818rtc.h>
-+#include <linux/delay.h>
-+
-+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX)
-+#include <linux/ide.h>
-+#endif
-+
-+#include <asm/cpu.h>
-+#include <asm/bootinfo.h>
-+#include <asm/irq.h>
-+#include <asm/keyboard.h>
-+#include <asm/mipsregs.h>
-+#include <asm/reboot.h>
-+#include <asm/pgtable.h>
-+#include <asm/au1000.h>
-+#include <asm/au1xxx_dbdma.h>
-+
-+#ifdef CONFIG_MIPS_PB1200
-+#include <asm/pb1200.h>
-+#endif
-+
-+#ifdef CONFIG_MIPS_DB1200
-+#include <asm/db1200.h>
-+#define PB1200_ETH_INT DB1200_ETH_INT
-+#define PB1200_IDE_INT DB1200_IDE_INT
-+#endif
-+
-+extern struct rtc_ops no_rtc_ops;
-+
-+extern void _board_init_irq(void);
-+extern void (*board_init_irq)(void);
-+
-+#ifdef CONFIG_BLK_DEV_IDE_AU1XXX
-+extern struct ide_ops *ide_ops;
-+extern struct ide_ops au1xxx_ide_ops;
-+extern u32 au1xxx_ide_virtbase;
-+extern u64 au1xxx_ide_physbase;
-+extern int au1xxx_ide_irq;
-+
-+u32 led_base_addr;
-+/* Ddma */
-+chan_tab_t *ide_read_ch, *ide_write_ch;
-+u32 au1xxx_ide_ddma_enable = 0, switch4ddma = 1; // PIO+ddma
-+
-+dbdev_tab_t new_dbdev_tab_element = { DSCR_CMD0_THROTTLE, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 };
-+#endif /* end CONFIG_BLK_DEV_IDE_AU1XXX */
-+
-+void board_reset (void)
-+{
-+ bcsr->resets = 0;
-+}
-+
-+void board_power_off (void)
-+{
-+ bcsr->resets = 0xC000;
-+}
-+
-+void __init board_setup(void)
-+{
-+ char *argptr = NULL;
-+ u32 pin_func;
-+ rtc_ops = &no_rtc_ops;
-+
-+#if 0
-+ /* Enable PSC1 SYNC for AC97. Normaly done in audio driver,
-+ * but it is board specific code, so put it here.
-+ */
-+ pin_func = au_readl(SYS_PINFUNC);
-+ au_sync();
-+ pin_func |= SYS_PF_MUST_BE_SET | SYS_PF_PSC1_S1;
-+ au_writel(pin_func, SYS_PINFUNC);
-+
-+ au_writel(0, (u32)bcsr|0x10); /* turn off pcmcia power */
-+ au_sync();
-+#endif
-+
-+#if defined( CONFIG_I2C_ALGO_AU1550 )
-+ {
-+ u32 freq0, clksrc;
-+
-+ /* Select SMBUS in CPLD */
-+ bcsr->resets &= ~(BCSR_RESETS_PCS0MUX);
-+
-+ pin_func = au_readl(SYS_PINFUNC);
-+ au_sync();
-+ pin_func &= ~(3<<17 | 1<<4);
-+ /* Set GPIOs correctly */
-+ pin_func |= 2<<17;
-+ au_writel(pin_func, SYS_PINFUNC);
-+ au_sync();
-+
-+ /* The i2c driver depends on 50Mhz clock */
-+ freq0 = au_readl(SYS_FREQCTRL0);
-+ au_sync();
-+ freq0 &= ~(SYS_FC_FRDIV1_MASK | SYS_FC_FS1 | SYS_FC_FE1);
-+ freq0 |= (3<<SYS_FC_FRDIV1_BIT);
-+ /* 396Mhz / (3+1)*2 == 49.5Mhz */
-+ au_writel(freq0, SYS_FREQCTRL0);
-+ au_sync();
-+ freq0 |= SYS_FC_FE1;
-+ au_writel(freq0, SYS_FREQCTRL0);
-+ au_sync();
-+
-+ clksrc = au_readl(SYS_CLKSRC);
-+ au_sync();
-+ clksrc &= ~0x01f00000;
-+ /* bit 22 is EXTCLK0 for PSC0 */
-+ clksrc |= (0x3 << 22);
-+ au_writel(clksrc, SYS_CLKSRC);
-+ au_sync();
-+ }
-+#endif
-+
-+#ifdef CONFIG_FB_AU1200
-+ argptr = prom_getcmdline();
-+ strcat(argptr, " video=au1200fb:");
-+#endif
-+
-+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX)
-+ /*
-+ * Iniz IDE parameters
-+ */
-+ ide_ops = &au1xxx_ide_ops;
-+ au1xxx_ide_irq = PB1200_IDE_INT;
-+ au1xxx_ide_physbase = AU1XXX_ATA_PHYS_ADDR;
-+ au1xxx_ide_virtbase = KSEG1ADDR(AU1XXX_ATA_PHYS_ADDR);
-+ /*
-+ * change PIO or PIO+Ddma
-+ * check the GPIO-5 pin condition. pb1200:s18_dot */
-+ switch4ddma = (au_readl(SYS_PINSTATERD) & (1 << 5)) ? 1 : 0;
-+#endif
-+
-+ /* The Pb1200 development board uses external MUX for PSC0 to
-+ support SMB/SPI. bcsr->resets bit 12: 0=SMB 1=SPI
-+ */
-+#if defined(CONFIG_AU1550_PSC_SPI) && defined(CONFIG_I2C_ALGO_AU1550)
-+ #error I2C and SPI are mutually exclusive. Both are physically connected to PSC0.\
-+ Refer to Pb1200/Db1200 documentation.
-+#elif defined( CONFIG_AU1550_PSC_SPI )
-+ bcsr->resets |= BCSR_RESETS_PCS0MUX;
-+#elif defined( CONFIG_I2C_ALGO_AU1550 )
-+ bcsr->resets &= (~BCSR_RESETS_PCS0MUX);
-+#endif
-+ au_sync();
-+
-+#ifdef CONFIG_MIPS_PB1200
-+ printk("AMD Alchemy Pb1200 Board\n");
-+#endif
-+#ifdef CONFIG_MIPS_DB1200
-+ printk("AMD Alchemy Db1200 Board\n");
-+#endif
-+
-+ /* Setup Pb1200 External Interrupt Controller */
-+ {
-+ extern void (*board_init_irq)(void);
-+ extern void _board_init_irq(void);
-+ board_init_irq = _board_init_irq;
-+ }
-+}
-+
-+int
-+board_au1200fb_panel (void)
-+{
-+ BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+ int p;
-+
-+ p = bcsr->switches;
-+ p >>= 8;
-+ p &= 0x0F;
-+ return p;
-+}
-+
-+int
-+board_au1200fb_panel_init (void)
-+{
-+ /* Apply power */
-+ BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+ bcsr->board |= (BCSR_BOARD_LCDVEE | BCSR_BOARD_LCDVDD | BCSR_BOARD_LCDBL);
-+ return 0;
-+}
-+
-+int
-+board_au1200fb_panel_shutdown (void)
-+{
-+ /* Remove power */
-+ BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+ bcsr->board &= ~(BCSR_BOARD_LCDVEE | BCSR_BOARD_LCDVDD | BCSR_BOARD_LCDBL);
-+ return 0;
-+}
-+
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/pb1200/init.c linux-2.4.32-rc1.mips/arch/mips/au1000/pb1200/init.c
---- linux-2.4.32-rc1/arch/mips/au1000/pb1200/init.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/pb1200/init.c 2005-01-30 09:01:28.000000000 +0100
-@@ -0,0 +1,72 @@
-+/*
-+ *
-+ * BRIEF MODULE DESCRIPTION
-+ * PB1200 board setup
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/mm.h>
-+#include <linux/sched.h>
-+#include <linux/bootmem.h>
-+#include <asm/addrspace.h>
-+#include <asm/bootinfo.h>
-+#include <linux/config.h>
-+#include <linux/string.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+
-+int prom_argc;
-+char **prom_argv, **prom_envp;
-+extern void __init prom_init_cmdline(void);
-+extern char *prom_getenv(char *envname);
-+
-+const char *get_system_type(void)
-+{
-+ return "AMD Alchemy Au1200/Pb1200";
-+}
-+
-+u32 mae_memsize = 0;
-+
-+int __init prom_init(int argc, char **argv, char **envp, int *prom_vec)
-+{
-+ unsigned char *memsize_str;
-+ unsigned long memsize;
-+
-+ prom_argc = argc;
-+ prom_argv = argv;
-+ prom_envp = envp;
-+
-+ mips_machgroup = MACH_GROUP_ALCHEMY;
-+ mips_machtype = MACH_PB1000; /* set the platform # */
-+ prom_init_cmdline();
-+
-+ memsize_str = prom_getenv("memsize");
-+ if (!memsize_str) {
-+ memsize = 0x08000000;
-+ } else {
-+ memsize = simple_strtol(memsize_str, NULL, 0);
-+ }
-+ add_memory_region(0, memsize, BOOT_MEM_RAM);
-+ return 0;
-+}
-+
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/pb1200/irqmap.c linux-2.4.32-rc1.mips/arch/mips/au1000/pb1200/irqmap.c
---- linux-2.4.32-rc1/arch/mips/au1000/pb1200/irqmap.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/pb1200/irqmap.c 2005-01-30 09:01:28.000000000 +0100
-@@ -0,0 +1,180 @@
-+/*
-+ * BRIEF MODULE DESCRIPTION
-+ * Au1xxx irq map table
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+#include <linux/errno.h>
-+#include <linux/init.h>
-+#include <linux/irq.h>
-+#include <linux/kernel_stat.h>
-+#include <linux/module.h>
-+#include <linux/signal.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/interrupt.h>
-+#include <linux/ioport.h>
-+#include <linux/timex.h>
-+#include <linux/slab.h>
-+#include <linux/random.h>
-+#include <linux/delay.h>
-+
-+#include <asm/bitops.h>
-+#include <asm/bootinfo.h>
-+#include <asm/io.h>
-+#include <asm/mipsregs.h>
-+#include <asm/system.h>
-+#include <asm/au1000.h>
-+
-+#ifdef CONFIG_MIPS_PB1200
-+#include <asm/pb1200.h>
-+#endif
-+
-+#ifdef CONFIG_MIPS_DB1200
-+#include <asm/db1200.h>
-+#define PB1200_INT_BEGIN DB1200_INT_BEGIN
-+#define PB1200_INT_END DB1200_INT_END
-+#endif
-+
-+au1xxx_irq_map_t au1xxx_irq_map[] = {
-+ { AU1000_GPIO_7, INTC_INT_LOW_LEVEL, 0 }, // This is exteranl interrupt cascade
-+};
-+
-+int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
-+
-+/*
-+ * Support for External interrupts on the PbAu1200 Development platform.
-+ */
-+static volatile int pb1200_cascade_en=0;
-+
-+void pb1200_cascade_handler( int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ unsigned short bisr = bcsr->int_status;
-+ int extirq_nr = 0;
-+
-+ /* Clear all the edge interrupts. This has no effect on level */
-+ bcsr->int_status = bisr;
-+ for( ; bisr; bisr &= (bisr-1) )
-+ {
-+ extirq_nr = (PB1200_INT_BEGIN-1) + au_ffs(bisr);
-+ /* Ack and dispatch IRQ */
-+ do_IRQ(extirq_nr,regs);
-+ }
-+}
-+
-+inline void pb1200_enable_irq(unsigned int irq_nr)
-+{
-+ bcsr->intset_mask = 1<<(irq_nr - PB1200_INT_BEGIN);
-+ bcsr->intset = 1<<(irq_nr - PB1200_INT_BEGIN);
-+}
-+
-+inline void pb1200_disable_irq(unsigned int irq_nr)
-+{
-+ bcsr->intclr_mask = 1<<(irq_nr - PB1200_INT_BEGIN);
-+ bcsr->intclr = 1<<(irq_nr - PB1200_INT_BEGIN);
-+}
-+
-+static unsigned int pb1200_startup_irq( unsigned int irq_nr )
-+{
-+ if (++pb1200_cascade_en == 1)
-+ {
-+ request_irq(AU1000_GPIO_7, &pb1200_cascade_handler,
-+ 0, "Pb1200 Cascade", &pb1200_cascade_handler );
-+#ifdef CONFIG_MIPS_PB1200
-+ /* We have a problem with CPLD rev3. Enable a workaround */
-+ if( ((bcsr->whoami & BCSR_WHOAMI_CPLD)>>4) <= 3)
-+ {
-+ printk("\nWARNING!!!\n");
-+ printk("\nWARNING!!!\n");
-+ printk("\nWARNING!!!\n");
-+ printk("\nWARNING!!!\n");
-+ printk("\nWARNING!!!\n");
-+ printk("\nWARNING!!!\n");
-+ printk("Pb1200 must be at CPLD rev4. Please have Pb1200\n");
-+ printk("updated to latest revision. This software will not\n");
-+ printk("work on anything less than CPLD rev4\n");
-+ printk("\nWARNING!!!\n");
-+ printk("\nWARNING!!!\n");
-+ printk("\nWARNING!!!\n");
-+ printk("\nWARNING!!!\n");
-+ printk("\nWARNING!!!\n");
-+ printk("\nWARNING!!!\n");
-+ while(1);
-+ }
-+#endif
-+ }
-+ pb1200_enable_irq(irq_nr);
-+ return 0;
-+}
-+
-+static void pb1200_shutdown_irq( unsigned int irq_nr )
-+{
-+ pb1200_disable_irq(irq_nr);
-+ if (--pb1200_cascade_en == 0)
-+ {
-+ free_irq(AU1000_GPIO_7,&pb1200_cascade_handler );
-+ }
-+ return;
-+}
-+
-+static inline void pb1200_mask_and_ack_irq(unsigned int irq_nr)
-+{
-+ pb1200_disable_irq( irq_nr );
-+}
-+
-+static void pb1200_end_irq(unsigned int irq_nr)
-+{
-+ if (!(irq_desc[irq_nr].status & (IRQ_DISABLED|IRQ_INPROGRESS))) {
-+ pb1200_enable_irq(irq_nr);
-+ }
-+}
-+
-+static struct hw_interrupt_type external_irq_type =
-+{
-+#ifdef CONFIG_MIPS_PB1200
-+ "Pb1200 Ext",
-+#endif
-+#ifdef CONFIG_MIPS_DB1200
-+ "Db1200 Ext",
-+#endif
-+ pb1200_startup_irq,
-+ pb1200_shutdown_irq,
-+ pb1200_enable_irq,
-+ pb1200_disable_irq,
-+ pb1200_mask_and_ack_irq,
-+ pb1200_end_irq,
-+ NULL
-+};
-+
-+void _board_init_irq(void)
-+{
-+ int irq_nr;
-+
-+ for (irq_nr = PB1200_INT_BEGIN; irq_nr <= PB1200_INT_END; irq_nr++)
-+ {
-+ irq_desc[irq_nr].handler = &external_irq_type;
-+ pb1200_disable_irq(irq_nr);
-+ }
-+
-+ /* GPIO_7 can not be hooked here, so it is hooked upon first
-+ request of any source attached to the cascade */
-+}
-+
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/pb1200/Makefile linux-2.4.32-rc1.mips/arch/mips/au1000/pb1200/Makefile
---- linux-2.4.32-rc1/arch/mips/au1000/pb1200/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/pb1200/Makefile 2005-01-30 09:01:27.000000000 +0100
-@@ -0,0 +1,25 @@
-+#
-+# Copyright 2000 MontaVista Software Inc.
-+# Author: MontaVista Software, Inc.
-+# ppopov@mvista.com or source@mvista.com
-+#
-+# Makefile for the Alchemy Semiconductor PB1000 board.
-+#
-+# Note! Dependencies are done automagically by 'make dep', which also
-+# removes any old dependencies. DON'T put your own dependencies here
-+# unless it's something special (ie not a .c file).
-+#
-+
-+USE_STANDARD_AS_RULE := true
-+
-+O_TARGET := pb1200.o
-+
-+obj-y := init.o board_setup.o irqmap.o
-+
-+ifdef CONFIG_MMC
-+obj-y += mmc_support.o
-+export-objs +=mmc_support.o
-+endif
-+
-+
-+include $(TOPDIR)/Rules.make
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/pb1200/mmc_support.c linux-2.4.32-rc1.mips/arch/mips/au1000/pb1200/mmc_support.c
---- linux-2.4.32-rc1/arch/mips/au1000/pb1200/mmc_support.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/pb1200/mmc_support.c 2005-01-30 09:01:28.000000000 +0100
-@@ -0,0 +1,141 @@
-+/*
-+ * BRIEF MODULE DESCRIPTION
-+ *
-+ * MMC support routines for PB1200.
-+ *
-+ *
-+ * Copyright (c) 2003-2004 Embedded Edge, LLC.
-+ * Author: Embedded Edge, LLC.
-+ * Contact: dan@embeddededge.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+
-+#include <linux/config.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+
-+#include <asm/irq.h>
-+#include <asm/au1000.h>
-+#include <asm/au1100_mmc.h>
-+
-+#ifdef CONFIG_MIPS_PB1200
-+#include <asm/pb1200.h>
-+#endif
-+
-+#ifdef CONFIG_MIPS_DB1200
-+/* NOTE: DB1200 only has SD0 pinned out and usable */
-+#include <asm/db1200.h>
-+#endif
-+
-+/* SD/MMC controller support functions */
-+
-+/*
-+ * Detect card.
-+ */
-+void mmc_card_inserted(int socket, int *result)
-+{
-+ u16 mask;
-+
-+ if (socket)
-+#ifdef CONFIG_MIPS_DB1200
-+ mask = 0;
-+#else
-+ mask = BCSR_INT_SD1INSERT;
-+#endif
-+ else
-+ mask = BCSR_INT_SD0INSERT;
-+
-+ *result = ((bcsr->sig_status & mask) != 0);
-+}
-+
-+/*
-+ * Check card write protection.
-+ */
-+void mmc_card_writable(int socket, int *result)
-+{
-+ u16 mask;
-+
-+ if (socket)
-+#ifdef CONFIG_MIPS_DB1200
-+ mask = 0;
-+#else
-+ mask = BCSR_STATUS_SD1WP;
-+#endif
-+ else
-+ mask = BCSR_STATUS_SD0WP;
-+
-+ /* low means card writable */
-+ if (!(bcsr->status & mask)) {
-+ *result = 1;
-+ } else {
-+ *result = 0;
-+ }
-+}
-+
-+/*
-+ * Apply power to card slot.
-+ */
-+void mmc_power_on(int socket)
-+{
-+ u16 mask;
-+
-+ if (socket)
-+#ifdef CONFIG_MIPS_DB1200
-+ mask = 0;
-+#else
-+ mask = BCSR_BOARD_SD1PWR;
-+#endif
-+ else
-+ mask = BCSR_BOARD_SD0PWR;
-+
-+ bcsr->board |= mask;
-+ au_sync_delay(1);
-+}
-+
-+/*
-+ * Remove power from card slot.
-+ */
-+void mmc_power_off(int socket)
-+{
-+ u16 mask;
-+
-+ if (socket)
-+#ifdef CONFIG_MIPS_DB1200
-+ mask = 0;
-+#else
-+ mask = BCSR_BOARD_SD1PWR;
-+#endif
-+ else
-+ mask = BCSR_BOARD_SD0PWR;
-+
-+ bcsr->board &= ~mask;
-+ au_sync_delay(1);
-+}
-+
-+EXPORT_SYMBOL(mmc_card_inserted);
-+EXPORT_SYMBOL(mmc_card_writable);
-+EXPORT_SYMBOL(mmc_power_on);
-+EXPORT_SYMBOL(mmc_power_off);
-+
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/pb1500/board_setup.c linux-2.4.32-rc1.mips/arch/mips/au1000/pb1500/board_setup.c
---- linux-2.4.32-rc1/arch/mips/au1000/pb1500/board_setup.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/pb1500/board_setup.c 2005-03-19 08:17:51.000000000 +0100
-@@ -62,6 +62,10 @@
- au_writel(0x00000000, 0xAE00001C);
- }
-
-+void board_power_off (void)
-+{
-+}
-+
- void __init board_setup(void)
- {
- u32 pin_func;
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/pb1550/board_setup.c linux-2.4.32-rc1.mips/arch/mips/au1000/pb1550/board_setup.c
---- linux-2.4.32-rc1/arch/mips/au1000/pb1550/board_setup.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/pb1550/board_setup.c 2005-03-19 08:17:51.000000000 +0100
-@@ -48,12 +48,31 @@
-
- extern struct rtc_ops no_rtc_ops;
-
-+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX)
-+extern struct ide_ops *ide_ops;
-+extern struct ide_ops au1xxx_ide_ops;
-+extern u32 au1xxx_ide_virtbase;
-+extern u64 au1xxx_ide_physbase;
-+extern unsigned int au1xxx_ide_irq;
-+
-+u32 au1xxx_ide_ddma_enable = 0, switch4ddma = 1; // PIO+ddma
-+#endif /* end CONFIG_BLK_DEV_IDE_AU1XXX */
-+
- void board_reset (void)
- {
- /* Hit BCSR.SYSTEM_CONTROL[SW_RST] */
- au_writew(au_readw(0xAF00001C) & ~(1<<15), 0xAF00001C);
- }
-
-+void board_power_off (void)
-+{
-+ /* power off system */
-+ printk("\n** Powering off Pb1550\n");
-+ au_writew(au_readw(0xAF00001C) | (3<<14), 0xAF00001C);
-+ au_sync();
-+ while(1); /* should not get here */
-+}
-+
- void __init board_setup(void)
- {
- u32 pin_func;
-@@ -78,5 +97,36 @@
- au_writel(0, (u32)bcsr|0x10); /* turn off pcmcia power */
- au_sync();
-
-+#if defined(CONFIG_AU1XXX_SMC91111)
-+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX)
-+#error "Resource conflict occured. Disable either Ethernet or IDE daughter card."
-+#else
-+#define CPLD_CONTROL (0xAF00000C)
-+ {
-+ /* set up the Static Bus timing */
-+ /* only 396Mhz */
-+ /* reset the DC */
-+ au_writew(au_readw(CPLD_CONTROL) | 0x0f, CPLD_CONTROL);
-+ au_writel(0x00010003, MEM_STCFG0);
-+ au_writel(0x000c00c0, MEM_STCFG2);
-+ au_writel(0x85E1900D, MEM_STTIME2);
-+ }
-+#endif
-+#endif /* end CONFIG_SMC91111 */
-+
-+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX)
-+ /*
-+ * Iniz IDE parameters
-+ */
-+ ide_ops = &au1xxx_ide_ops;
-+ au1xxx_ide_irq = DAUGHTER_CARD_IRQ;;
-+ au1xxx_ide_physbase = AU1XXX_ATA_PHYS_ADDR;
-+ au1xxx_ide_virtbase = KSEG1ADDR(AU1XXX_ATA_PHYS_ADDR);
-+ /*
-+ * change PIO or PIO+Ddma
-+ * check the GPIO-6 pin condition. pb1550:s15_dot
-+ */
-+ switch4ddma = (au_readl(SYS_PINSTATERD) & (1 << 6)) ? 1 : 0;
-+#endif
- printk("AMD Alchemy Pb1550 Board\n");
- }
-diff -Nur linux-2.4.32-rc1/arch/mips/au1000/pb1550/irqmap.c linux-2.4.32-rc1.mips/arch/mips/au1000/pb1550/irqmap.c
---- linux-2.4.32-rc1/arch/mips/au1000/pb1550/irqmap.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/au1000/pb1550/irqmap.c 2005-01-30 09:01:28.000000000 +0100
-@@ -50,6 +50,9 @@
- au1xxx_irq_map_t au1xxx_irq_map[] = {
- { AU1000_GPIO_0, INTC_INT_LOW_LEVEL, 0 },
- { AU1000_GPIO_1, INTC_INT_LOW_LEVEL, 0 },
-+#ifdef CONFIG_AU1XXX_SMC91111
-+ { AU1000_GPIO_3, INTC_INT_LOW_LEVEL, 0 },
-+#endif
- };
-
- int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
-diff -Nur linux-2.4.32-rc1/arch/mips/config-shared.in linux-2.4.32-rc1.mips/arch/mips/config-shared.in
---- linux-2.4.32-rc1/arch/mips/config-shared.in 2005-01-19 15:09:27.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/config-shared.in 2005-01-30 09:01:26.000000000 +0100
-@@ -21,16 +21,19 @@
- comment 'Machine selection'
- dep_bool 'Support for Acer PICA 1 chipset (EXPERIMENTAL)' CONFIG_ACER_PICA_61 $CONFIG_EXPERIMENTAL
- dep_bool 'Support for Alchemy Bosporus board' CONFIG_MIPS_BOSPORUS $CONFIG_MIPS32
-+dep_bool 'Support for FIC Multimedia Player board' CONFIG_MIPS_FICMMP $CONFIG_MIPS32
- dep_bool 'Support for Alchemy Mirage board' CONFIG_MIPS_MIRAGE $CONFIG_MIPS32
- dep_bool 'Support for Alchemy Db1000 board' CONFIG_MIPS_DB1000 $CONFIG_MIPS32
- dep_bool 'Support for Alchemy Db1100 board' CONFIG_MIPS_DB1100 $CONFIG_MIPS32
- dep_bool 'Support for Alchemy Db1500 board' CONFIG_MIPS_DB1500 $CONFIG_MIPS32
- dep_bool 'Support for Alchemy Db1550 board' CONFIG_MIPS_DB1550 $CONFIG_MIPS32
-+dep_bool 'Support for Alchemy Db1200 board' CONFIG_MIPS_DB1200 $CONFIG_MIPS32
- dep_bool 'Support for Alchemy PB1000 board' CONFIG_MIPS_PB1000 $CONFIG_MIPS32
- dep_bool 'Support for Alchemy PB1100 board' CONFIG_MIPS_PB1100 $CONFIG_MIPS32
- dep_bool 'Support for Alchemy PB1500 board' CONFIG_MIPS_PB1500 $CONFIG_MIPS32
--dep_bool 'Support for Alchemy Hydrogen3 board' CONFIG_MIPS_HYDROGEN3 $CONFIG_MIPS32
- dep_bool 'Support for Alchemy PB1550 board' CONFIG_MIPS_PB1550 $CONFIG_MIPS32
-+dep_bool 'Support for Alchemy PB1200 board' CONFIG_MIPS_PB1200 $CONFIG_MIPS32
-+dep_bool 'Support for Alchemy Hydrogen3 board' CONFIG_MIPS_HYDROGEN3 $CONFIG_MIPS32
- dep_bool 'Support for MyCable XXS1500 board' CONFIG_MIPS_XXS1500 $CONFIG_MIPS32
- dep_bool 'Support for 4G Systems MTX-1 board' CONFIG_MIPS_MTX1 $CONFIG_MIPS32
- dep_bool 'Support for Cogent CSB250 board' CONFIG_COGENT_CSB250 $CONFIG_MIPS32
-@@ -249,6 +252,12 @@
- define_bool CONFIG_PC_KEYB y
- define_bool CONFIG_NONCOHERENT_IO y
- fi
-+if [ "$CONFIG_MIPS_FICMMP" = "y" ]; then
-+ define_bool CONFIG_SOC_AU1X00 y
-+ define_bool CONFIG_SOC_AU1200 y
-+ define_bool CONFIG_NONCOHERENT_IO y
-+ define_bool CONFIG_PC_KEYB y
-+fi
- if [ "$CONFIG_MIPS_BOSPORUS" = "y" ]; then
- define_bool CONFIG_SOC_AU1X00 y
- define_bool CONFIG_SOC_AU1500 y
-@@ -263,6 +272,12 @@
- define_bool CONFIG_SWAP_IO_SPACE_W y
- define_bool CONFIG_SWAP_IO_SPACE_L y
- fi
-+if [ "$CONFIG_MIPS_PB1500" = "y" ]; then
-+ define_bool CONFIG_SOC_AU1X00 y
-+ define_bool CONFIG_SOC_AU1500 y
-+ define_bool CONFIG_NONCOHERENT_IO y
-+ define_bool CONFIG_PC_KEYB y
-+fi
- if [ "$CONFIG_MIPS_PB1100" = "y" ]; then
- define_bool CONFIG_SOC_AU1X00 y
- define_bool CONFIG_SOC_AU1100 y
-@@ -271,9 +286,15 @@
- define_bool CONFIG_SWAP_IO_SPACE_W y
- define_bool CONFIG_SWAP_IO_SPACE_L y
- fi
--if [ "$CONFIG_MIPS_PB1500" = "y" ]; then
-+if [ "$CONFIG_MIPS_PB1550" = "y" ]; then
- define_bool CONFIG_SOC_AU1X00 y
-- define_bool CONFIG_SOC_AU1500 y
-+ define_bool CONFIG_SOC_AU1550 y
-+ define_bool CONFIG_NONCOHERENT_IO n
-+ define_bool CONFIG_PC_KEYB y
-+fi
-+if [ "$CONFIG_MIPS_PB1200" = "y" ]; then
-+ define_bool CONFIG_SOC_AU1X00 y
-+ define_bool CONFIG_SOC_AU1200 y
- define_bool CONFIG_NONCOHERENT_IO y
- define_bool CONFIG_PC_KEYB y
- fi
-@@ -290,18 +311,24 @@
- define_bool CONFIG_NONCOHERENT_IO y
- define_bool CONFIG_PC_KEYB y
- fi
-+if [ "$CONFIG_MIPS_DB1100" = "y" ]; then
-+ define_bool CONFIG_SOC_AU1X00 y
-+ define_bool CONFIG_SOC_AU1100 y
-+ define_bool CONFIG_NONCOHERENT_IO y
-+ define_bool CONFIG_PC_KEYB y
-+ define_bool CONFIG_SWAP_IO_SPACE y
-+fi
- if [ "$CONFIG_MIPS_DB1550" = "y" ]; then
- define_bool CONFIG_SOC_AU1X00 y
- define_bool CONFIG_SOC_AU1550 y
- define_bool CONFIG_NONCOHERENT_IO y
- define_bool CONFIG_PC_KEYB y
- fi
--if [ "$CONFIG_MIPS_DB1100" = "y" ]; then
-+if [ "$CONFIG_MIPS_DB1200" = "y" ]; then
- define_bool CONFIG_SOC_AU1X00 y
-- define_bool CONFIG_SOC_AU1100 y
-+ define_bool CONFIG_SOC_AU1200 y
- define_bool CONFIG_NONCOHERENT_IO y
- define_bool CONFIG_PC_KEYB y
-- define_bool CONFIG_SWAP_IO_SPACE y
- fi
- if [ "$CONFIG_MIPS_HYDROGEN3" = "y" ]; then
- define_bool CONFIG_SOC_AU1X00 y
-@@ -327,12 +354,6 @@
- define_bool CONFIG_NONCOHERENT_IO y
- define_bool CONFIG_PC_KEYB y
- fi
--if [ "$CONFIG_MIPS_PB1550" = "y" ]; then
-- define_bool CONFIG_SOC_AU1X00 y
-- define_bool CONFIG_SOC_AU1550 y
-- define_bool CONFIG_NONCOHERENT_IO n
-- define_bool CONFIG_PC_KEYB y
--fi
- if [ "$CONFIG_MIPS_COBALT" = "y" ]; then
- define_bool CONFIG_BOOT_ELF32 y
- define_bool CONFIG_COBALT_LCD y
-@@ -729,6 +750,13 @@
- "$CONFIG_MIPS_PB1000" = "y" -o \
- "$CONFIG_MIPS_PB1100" = "y" -o \
- "$CONFIG_MIPS_PB1500" = "y" -o \
-+ "$CONFIG_MIPS_PB1550" = "y" -o \
-+ "$CONFIG_MIPS_PB1200" = "y" -o \
-+ "$CONFIG_MIPS_DB1000" = "y" -o \
-+ "$CONFIG_MIPS_DB1100" = "y" -o \
-+ "$CONFIG_MIPS_DB1500" = "y" -o \
-+ "$CONFIG_MIPS_DB1550" = "y" -o \
-+ "$CONFIG_MIPS_DB1200" = "y" -o \
- "$CONFIG_NEC_OSPREY" = "y" -o \
- "$CONFIG_NEC_EAGLE" = "y" -o \
- "$CONFIG_NINO" = "y" -o \
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig linux-2.4.32-rc1.mips/arch/mips/defconfig
---- linux-2.4.32-rc1/arch/mips/defconfig 2005-01-19 15:09:27.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -235,11 +235,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -319,9 +314,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -465,7 +462,6 @@
- # CONFIG_SERIAL is not set
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-atlas linux-2.4.32-rc1.mips/arch/mips/defconfig-atlas
---- linux-2.4.32-rc1/arch/mips/defconfig-atlas 2005-01-19 15:09:27.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-atlas 2005-03-18 13:13:21.000000000 +0100
-@@ -28,8 +28,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -235,11 +235,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -317,9 +312,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -528,7 +525,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-bosporus linux-2.4.32-rc1.mips/arch/mips/defconfig-bosporus
---- linux-2.4.32-rc1/arch/mips/defconfig-bosporus 2005-01-19 15:09:27.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-bosporus 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -208,9 +208,7 @@
- CONFIG_MTD_BOSPORUS=y
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -229,7 +227,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -373,11 +370,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -457,9 +449,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -681,7 +675,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-capcella linux-2.4.32-rc1.mips/arch/mips/defconfig-capcella
---- linux-2.4.32-rc1/arch/mips/defconfig-capcella 2005-01-19 15:09:27.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-capcella 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -228,11 +228,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -472,7 +467,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_VR41XX_KIU is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-cobalt linux-2.4.32-rc1.mips/arch/mips/defconfig-cobalt
---- linux-2.4.32-rc1/arch/mips/defconfig-cobalt 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-cobalt 2005-03-18 13:13:21.000000000 +0100
-@@ -28,8 +28,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -222,11 +222,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -505,7 +500,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=16
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-csb250 linux-2.4.32-rc1.mips/arch/mips/defconfig-csb250
---- linux-2.4.32-rc1/arch/mips/defconfig-csb250 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-csb250 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- CONFIG_COGENT_CSB250=y
-@@ -268,11 +268,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -556,7 +551,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-db1000 linux-2.4.32-rc1.mips/arch/mips/defconfig-db1000
---- linux-2.4.32-rc1/arch/mips/defconfig-db1000 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-db1000 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -214,11 +214,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--CONFIG_MTD_DB1X00=y
--CONFIG_MTD_DB1X00_BOOT=y
--CONFIG_MTD_DB1X00_USER=y
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -237,7 +233,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -342,11 +337,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -636,7 +626,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-db1100 linux-2.4.32-rc1.mips/arch/mips/defconfig-db1100
---- linux-2.4.32-rc1/arch/mips/defconfig-db1100 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-db1100 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -214,11 +214,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--CONFIG_MTD_DB1X00=y
--# CONFIG_MTD_DB1X00_BOOT is not set
--CONFIG_MTD_DB1X00_USER=y
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -237,7 +233,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -342,11 +337,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -636,7 +626,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-@@ -884,6 +873,7 @@
- # CONFIG_FB_PM2 is not set
- # CONFIG_FB_PM3 is not set
- # CONFIG_FB_CYBER2000 is not set
-+CONFIG_FB_AU1100=y
- # CONFIG_FB_MATROX is not set
- # CONFIG_FB_ATY is not set
- # CONFIG_FB_RADEON is not set
-@@ -895,7 +885,6 @@
- # CONFIG_FB_VOODOO1 is not set
- # CONFIG_FB_TRIDENT is not set
- # CONFIG_FB_E1356 is not set
--CONFIG_FB_AU1100=y
- # CONFIG_FB_IT8181 is not set
- # CONFIG_FB_VIRTUAL is not set
- CONFIG_FBCON_ADVANCED=y
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-db1200 linux-2.4.32-rc1.mips/arch/mips/defconfig-db1200
---- linux-2.4.32-rc1/arch/mips/defconfig-db1200 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-db1200 2005-03-18 13:13:21.000000000 +0100
-@@ -0,0 +1,1032 @@
-+#
-+# Automatically generated make config: don't edit
-+#
-+CONFIG_MIPS=y
-+CONFIG_MIPS32=y
-+# CONFIG_MIPS64 is not set
-+
-+#
-+# Code maturity level options
-+#
-+CONFIG_EXPERIMENTAL=y
-+
-+#
-+# Loadable module support
-+#
-+CONFIG_MODULES=y
-+# CONFIG_MODVERSIONS is not set
-+CONFIG_KMOD=y
-+
-+#
-+# Machine selection
-+#
-+# CONFIG_ACER_PICA_61 is not set
-+# CONFIG_MIPS_BOSPORUS is not set
-+# CONFIG_MIPS_MIRAGE is not set
-+# CONFIG_MIPS_DB1000 is not set
-+# CONFIG_MIPS_DB1100 is not set
-+# CONFIG_MIPS_DB1500 is not set
-+# CONFIG_MIPS_DB1550 is not set
-+# CONFIG_MIPS_PB1000 is not set
-+# CONFIG_MIPS_PB1100 is not set
-+# CONFIG_MIPS_PB1500 is not set
-+# CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
-+# CONFIG_MIPS_XXS1500 is not set
-+# CONFIG_MIPS_MTX1 is not set
-+# CONFIG_COGENT_CSB250 is not set
-+# CONFIG_BAGET_MIPS is not set
-+# CONFIG_CASIO_E55 is not set
-+# CONFIG_MIPS_COBALT is not set
-+# CONFIG_DECSTATION is not set
-+# CONFIG_MIPS_EV64120 is not set
-+# CONFIG_MIPS_EV96100 is not set
-+# CONFIG_MIPS_IVR is not set
-+# CONFIG_HP_LASERJET is not set
-+# CONFIG_IBM_WORKPAD is not set
-+# CONFIG_LASAT is not set
-+# CONFIG_MIPS_ITE8172 is not set
-+# CONFIG_MIPS_ATLAS is not set
-+# CONFIG_MIPS_MAGNUM_4000 is not set
-+# CONFIG_MIPS_MALTA is not set
-+# CONFIG_MIPS_SEAD is not set
-+# CONFIG_MOMENCO_OCELOT is not set
-+# CONFIG_MOMENCO_OCELOT_G is not set
-+# CONFIG_MOMENCO_OCELOT_C is not set
-+# CONFIG_MOMENCO_JAGUAR_ATX is not set
-+# CONFIG_PMC_BIG_SUR is not set
-+# CONFIG_PMC_STRETCH is not set
-+# CONFIG_PMC_YOSEMITE is not set
-+# CONFIG_DDB5074 is not set
-+# CONFIG_DDB5476 is not set
-+# CONFIG_DDB5477 is not set
-+# CONFIG_NEC_OSPREY is not set
-+# CONFIG_NEC_EAGLE is not set
-+# CONFIG_OLIVETTI_M700 is not set
-+# CONFIG_NINO is not set
-+# CONFIG_SGI_IP22 is not set
-+# CONFIG_SGI_IP27 is not set
-+# CONFIG_SIBYTE_SB1xxx_SOC is not set
-+# CONFIG_SNI_RM200_PCI is not set
-+# CONFIG_TANBAC_TB0226 is not set
-+# CONFIG_TANBAC_TB0229 is not set
-+# CONFIG_TOSHIBA_JMR3927 is not set
-+# CONFIG_TOSHIBA_RBTX4927 is not set
-+# CONFIG_VICTOR_MPC30X is not set
-+# CONFIG_ZAO_CAPCELLA is not set
-+# CONFIG_HIGHMEM is not set
-+CONFIG_RWSEM_GENERIC_SPINLOCK=y
-+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-+# CONFIG_MIPS_AU1000 is not set
-+
-+#
-+# CPU selection
-+#
-+CONFIG_CPU_MIPS32=y
-+# CONFIG_CPU_MIPS64 is not set
-+# CONFIG_CPU_R3000 is not set
-+# CONFIG_CPU_TX39XX is not set
-+# CONFIG_CPU_VR41XX is not set
-+# CONFIG_CPU_R4300 is not set
-+# CONFIG_CPU_R4X00 is not set
-+# CONFIG_CPU_TX49XX is not set
-+# CONFIG_CPU_R5000 is not set
-+# CONFIG_CPU_R5432 is not set
-+# CONFIG_CPU_R6000 is not set
-+# CONFIG_CPU_NEVADA is not set
-+# CONFIG_CPU_R8000 is not set
-+# CONFIG_CPU_R10000 is not set
-+# CONFIG_CPU_RM7000 is not set
-+# CONFIG_CPU_RM9000 is not set
-+# CONFIG_CPU_SB1 is not set
-+CONFIG_PAGE_SIZE_4KB=y
-+# CONFIG_PAGE_SIZE_16KB is not set
-+# CONFIG_PAGE_SIZE_64KB is not set
-+CONFIG_CPU_HAS_PREFETCH=y
-+# CONFIG_VTAG_ICACHE is not set
-+CONFIG_64BIT_PHYS_ADDR=y
-+# CONFIG_CPU_ADVANCED is not set
-+CONFIG_CPU_HAS_LLSC=y
-+# CONFIG_CPU_HAS_LLDSCD is not set
-+# CONFIG_CPU_HAS_WB is not set
-+CONFIG_CPU_HAS_SYNC=y
-+
-+#
-+# General setup
-+#
-+CONFIG_CPU_LITTLE_ENDIAN=y
-+# CONFIG_BUILD_ELF64 is not set
-+CONFIG_NET=y
-+CONFIG_PCI=y
-+CONFIG_PCI_NEW=y
-+CONFIG_PCI_AUTO=y
-+# CONFIG_PCI_NAMES is not set
-+# CONFIG_ISA is not set
-+# CONFIG_TC is not set
-+# CONFIG_MCA is not set
-+# CONFIG_SBUS is not set
-+CONFIG_HOTPLUG=y
-+
-+#
-+# PCMCIA/CardBus support
-+#
-+CONFIG_PCMCIA=m
-+# CONFIG_CARDBUS is not set
-+# CONFIG_TCIC is not set
-+# CONFIG_I82092 is not set
-+# CONFIG_I82365 is not set
-+
-+#
-+# PCI Hotplug Support
-+#
-+# CONFIG_HOTPLUG_PCI is not set
-+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
-+# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
-+# CONFIG_HOTPLUG_PCI_SHPC is not set
-+# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set
-+# CONFIG_HOTPLUG_PCI_PCIE is not set
-+# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set
-+CONFIG_SYSVIPC=y
-+# CONFIG_BSD_PROCESS_ACCT is not set
-+CONFIG_SYSCTL=y
-+CONFIG_KCORE_ELF=y
-+# CONFIG_KCORE_AOUT is not set
-+# CONFIG_BINFMT_AOUT is not set
-+CONFIG_BINFMT_ELF=y
-+# CONFIG_MIPS32_COMPAT is not set
-+# CONFIG_MIPS32_O32 is not set
-+# CONFIG_MIPS32_N32 is not set
-+# CONFIG_BINFMT_ELF32 is not set
-+# CONFIG_BINFMT_MISC is not set
-+# CONFIG_OOM_KILLER is not set
-+CONFIG_CMDLINE_BOOL=y
-+CONFIG_CMDLINE="mem=96M"
-+
-+#
-+# Memory Technology Devices (MTD)
-+#
-+# CONFIG_MTD is not set
-+
-+#
-+# Parallel port support
-+#
-+# CONFIG_PARPORT is not set
-+
-+#
-+# Plug and Play configuration
-+#
-+# CONFIG_PNP is not set
-+# CONFIG_ISAPNP is not set
-+
-+#
-+# Block devices
-+#
-+# CONFIG_BLK_DEV_FD is not set
-+# 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_CISS_SCSI_TAPE is not set
-+# CONFIG_CISS_MONITOR_THREAD is not set
-+# CONFIG_BLK_DEV_DAC960 is not set
-+# CONFIG_BLK_DEV_UMEM is not set
-+# CONFIG_BLK_DEV_SX8 is not set
-+CONFIG_BLK_DEV_LOOP=y
-+# CONFIG_BLK_DEV_NBD is not set
-+# CONFIG_BLK_DEV_RAM is not set
-+# CONFIG_BLK_DEV_INITRD is not set
-+# CONFIG_BLK_STATS is not set
-+
-+#
-+# Multi-device support (RAID and LVM)
-+#
-+# CONFIG_MD is not set
-+# CONFIG_BLK_DEV_MD is not set
-+# CONFIG_MD_LINEAR is not set
-+# CONFIG_MD_RAID0 is not set
-+# CONFIG_MD_RAID1 is not set
-+# CONFIG_MD_RAID5 is not set
-+# CONFIG_MD_MULTIPATH is not set
-+# CONFIG_BLK_DEV_LVM is not set
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+# CONFIG_PACKET_MMAP is not set
-+# CONFIG_NETLINK_DEV is not set
-+CONFIG_NETFILTER=y
-+# CONFIG_NETFILTER_DEBUG is not set
-+CONFIG_FILTER=y
-+CONFIG_UNIX=y
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_PNP=y
-+# CONFIG_IP_PNP_DHCP is not set
-+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_IP_MROUTE is not set
-+# CONFIG_ARPD is not set
-+# CONFIG_INET_ECN is not set
-+# CONFIG_SYN_COOKIES is not set
-+
-+#
-+# IP: Netfilter Configuration
-+#
-+# CONFIG_IP_NF_CONNTRACK is not set
-+# CONFIG_IP_NF_QUEUE is not set
-+# CONFIG_IP_NF_IPTABLES is not set
-+# CONFIG_IP_NF_ARPTABLES is not set
-+# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-+
-+#
-+# IP: Virtual Server Configuration
-+#
-+# CONFIG_IP_VS is not set
-+# CONFIG_IPV6 is not set
-+# CONFIG_KHTTPD is not set
-+
-+#
-+# SCTP Configuration (EXPERIMENTAL)
-+#
-+# CONFIG_IP_SCTP is not set
-+# CONFIG_ATM is not set
-+# CONFIG_VLAN_8021Q is not set
-+
-+#
-+#
-+#
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_DECNET is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_X25 is not set
-+# CONFIG_LAPB is not set
-+# CONFIG_LLC is not set
-+# CONFIG_NET_DIVERT is not set
-+# CONFIG_ECONET is not set
-+# CONFIG_WAN_ROUTER is not set
-+# CONFIG_NET_FASTROUTE is not set
-+# CONFIG_NET_HW_FLOWCONTROL is not set
-+
-+#
-+# QoS and/or fair queueing
-+#
-+# CONFIG_NET_SCHED is not set
-+
-+#
-+# Network testing
-+#
-+# CONFIG_NET_PKTGEN is not set
-+
-+#
-+# Telephony Support
-+#
-+# CONFIG_PHONE is not set
-+# CONFIG_PHONE_IXJ is not set
-+# CONFIG_PHONE_IXJ_PCMCIA is not set
-+
-+#
-+# ATA/IDE/MFM/RLL support
-+#
-+CONFIG_IDE=y
-+
-+#
-+# IDE, ATA and ATAPI Block devices
-+#
-+CONFIG_BLK_DEV_IDE=y
-+
-+#
-+# Please see Documentation/ide.txt for help/info on IDE drives
-+#
-+# CONFIG_BLK_DEV_HD_IDE is not set
-+# CONFIG_BLK_DEV_HD is not set
-+# CONFIG_BLK_DEV_IDE_SATA is not set
-+CONFIG_BLK_DEV_IDEDISK=y
-+CONFIG_IDEDISK_MULTI_MODE=y
-+CONFIG_IDEDISK_STROKE=y
-+CONFIG_BLK_DEV_IDECS=m
-+# CONFIG_BLK_DEV_DELKIN is not set
-+# 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_BLK_DEV_CMD640 is not set
-+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-+# CONFIG_BLK_DEV_ISAPNP is not set
-+# CONFIG_BLK_DEV_IDEPCI is not set
-+# CONFIG_IDE_CHIPSETS is not set
-+# CONFIG_IDEDMA_AUTO is not set
-+# CONFIG_DMA_NONPCI is not set
-+# CONFIG_BLK_DEV_ATARAID is not set
-+# CONFIG_BLK_DEV_ATARAID_PDC is not set
-+# CONFIG_BLK_DEV_ATARAID_HPT is not set
-+# CONFIG_BLK_DEV_ATARAID_MEDLEY is not set
-+# CONFIG_BLK_DEV_ATARAID_SII is not set
-+
-+#
-+# SCSI support
-+#
-+CONFIG_SCSI=y
-+
-+#
-+# SCSI support type (disk, tape, CD-ROM)
-+#
-+CONFIG_BLK_DEV_SD=y
-+CONFIG_SD_EXTRA_DEVS=40
-+CONFIG_CHR_DEV_ST=y
-+# CONFIG_CHR_DEV_OSST is not set
-+CONFIG_BLK_DEV_SR=y
-+# CONFIG_BLK_DEV_SR_VENDOR is not set
-+CONFIG_SR_EXTRA_DEVS=2
-+# CONFIG_CHR_DEV_SG is not set
-+
-+#
-+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-+#
-+# CONFIG_SCSI_DEBUG_QUEUES is not set
-+# CONFIG_SCSI_MULTI_LUN is not set
-+CONFIG_SCSI_CONSTANTS=y
-+# CONFIG_SCSI_LOGGING is not set
-+
-+#
-+# SCSI low-level drivers
-+#
-+# CONFIG_BLK_DEV_3W_XXXX_RAID 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_AHA1740 is not set
-+# CONFIG_SCSI_AACRAID is not set
-+# CONFIG_SCSI_AIC7XXX is not set
-+# CONFIG_SCSI_AIC79XX is not set
-+# CONFIG_SCSI_AIC7XXX_OLD is not set
-+# CONFIG_SCSI_DPT_I2O is not set
-+# CONFIG_SCSI_ADVANSYS is not set
-+# CONFIG_SCSI_IN2000 is not set
-+# CONFIG_SCSI_AM53C974 is not set
-+# CONFIG_SCSI_MEGARAID is not set
-+# CONFIG_SCSI_MEGARAID2 is not set
-+# CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
-+# CONFIG_SCSI_SATA_SVW is not set
-+# CONFIG_SCSI_ATA_PIIX is not set
-+# CONFIG_SCSI_SATA_NV 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_SIS is not set
-+# CONFIG_SCSI_SATA_ULI is not set
-+# CONFIG_SCSI_SATA_VIA is not set
-+# CONFIG_SCSI_SATA_VITESSE is not set
-+# CONFIG_SCSI_BUSLOGIC is not set
-+# CONFIG_SCSI_CPQFCTS is not set
-+# CONFIG_SCSI_DMX3191D is not set
-+# CONFIG_SCSI_DTC3280 is not set
-+# CONFIG_SCSI_EATA is not set
-+# CONFIG_SCSI_EATA_DMA is not set
-+# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-+# CONFIG_SCSI_INIA100 is not set
-+# CONFIG_SCSI_NCR53C406A is not set
-+# CONFIG_SCSI_NCR53C7xx is not set
-+# CONFIG_SCSI_SYM53C8XX_2 is not set
-+# CONFIG_SCSI_NCR53C8XX is not set
-+# CONFIG_SCSI_SYM53C8XX is not set
-+# CONFIG_SCSI_PAS16 is not set
-+# CONFIG_SCSI_PCI2000 is not set
-+# CONFIG_SCSI_PCI2220I is not set
-+# CONFIG_SCSI_PSI240I is not set
-+# CONFIG_SCSI_QLOGIC_FAS is not set
-+# CONFIG_SCSI_QLOGIC_ISP is not set
-+# CONFIG_SCSI_QLOGIC_FC is not set
-+# CONFIG_SCSI_QLOGIC_1280 is not set
-+# CONFIG_SCSI_SIM710 is not set
-+# CONFIG_SCSI_SYM53C416 is not set
-+# CONFIG_SCSI_DC390T is not set
-+# CONFIG_SCSI_T128 is not set
-+# CONFIG_SCSI_U14_34F is not set
-+# CONFIG_SCSI_NSP32 is not set
-+# CONFIG_SCSI_DEBUG is not set
-+
-+#
-+# PCMCIA SCSI adapter support
-+#
-+# CONFIG_SCSI_PCMCIA is not set
-+
-+#
-+# Fusion MPT device support
-+#
-+# CONFIG_FUSION is not set
-+# CONFIG_FUSION_BOOT is not set
-+# CONFIG_FUSION_ISENSE is not set
-+# CONFIG_FUSION_CTL is not set
-+# CONFIG_FUSION_LAN is not set
-+
-+#
-+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
-+#
-+# CONFIG_IEEE1394 is not set
-+
-+#
-+# I2O device support
-+#
-+# CONFIG_I2O is not set
-+# CONFIG_I2O_PCI is not set
-+# CONFIG_I2O_BLOCK is not set
-+# CONFIG_I2O_LAN is not set
-+# CONFIG_I2O_SCSI is not set
-+# CONFIG_I2O_PROC is not set
-+
-+#
-+# Network device support
-+#
-+CONFIG_NETDEVICES=y
-+
-+#
-+# ARCnet devices
-+#
-+# CONFIG_ARCNET is not set
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_ETHERTAP is not set
-+
-+#
-+# Ethernet (10 or 100Mbit)
-+#
-+CONFIG_NET_ETHERNET=y
-+# CONFIG_SUNLANCE is not set
-+# CONFIG_HAPPYMEAL is not set
-+# CONFIG_SUNBMAC is not set
-+# CONFIG_SUNQE is not set
-+# CONFIG_SUNGEM is not set
-+# CONFIG_NET_VENDOR_3COM is not set
-+# CONFIG_LANCE is not set
-+# CONFIG_NET_VENDOR_SMC is not set
-+# CONFIG_NET_VENDOR_RACAL is not set
-+# CONFIG_HP100 is not set
-+# CONFIG_NET_ISA is not set
-+# CONFIG_NET_PCI is not set
-+# CONFIG_NET_POCKET is not set
-+
-+#
-+# Ethernet (1000 Mbit)
-+#
-+# CONFIG_ACENIC is not set
-+# CONFIG_DL2K is not set
-+# CONFIG_E1000 is not set
-+# CONFIG_MYRI_SBUS is not set
-+# CONFIG_NS83820 is not set
-+# CONFIG_HAMACHI is not set
-+# CONFIG_YELLOWFIN is not set
-+# CONFIG_R8169 is not set
-+# CONFIG_SK98LIN is not set
-+# CONFIG_TIGON3 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
-+
-+#
-+# Wireless LAN (non-hamradio)
-+#
-+# CONFIG_NET_RADIO is not set
-+
-+#
-+# Token Ring devices
-+#
-+# CONFIG_TR is not set
-+# CONFIG_NET_FC is not set
-+# CONFIG_RCPCI is not set
-+# CONFIG_SHAPER is not set
-+
-+#
-+# Wan interfaces
-+#
-+# CONFIG_WAN is not set
-+
-+#
-+# PCMCIA network device support
-+#
-+# CONFIG_NET_PCMCIA is not set
-+
-+#
-+# Amateur Radio support
-+#
-+# CONFIG_HAMRADIO is not set
-+
-+#
-+# IrDA (infrared) support
-+#
-+# CONFIG_IRDA is not set
-+
-+#
-+# ISDN subsystem
-+#
-+# CONFIG_ISDN is not set
-+
-+#
-+# Input core support
-+#
-+CONFIG_INPUT=y
-+CONFIG_INPUT_KEYBDEV=y
-+CONFIG_INPUT_MOUSEDEV=y
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-+# CONFIG_INPUT_JOYDEV is not set
-+CONFIG_INPUT_EVDEV=y
-+# CONFIG_INPUT_UINPUT is not set
-+
-+#
-+# Character devices
-+#
-+CONFIG_VT=y
-+# CONFIG_VT_CONSOLE is not set
-+# CONFIG_SERIAL is not set
-+# CONFIG_SERIAL_EXTENDED 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_DIGI is not set
-+# CONFIG_ESPSERIAL is not set
-+# CONFIG_MOXA_INTELLIO is not set
-+# CONFIG_MOXA_SMARTIO is not set
-+# CONFIG_ISI is not set
-+# CONFIG_SYNCLINK is not set
-+# CONFIG_SYNCLINKMP is not set
-+# CONFIG_N_HDLC is not set
-+# 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
-+# CONFIG_SERIAL_TX3912 is not set
-+# CONFIG_SERIAL_TX3912_CONSOLE is not set
-+# CONFIG_SERIAL_TXX9 is not set
-+# CONFIG_SERIAL_TXX9_CONSOLE is not set
-+# CONFIG_TXX927_SERIAL is not set
-+CONFIG_UNIX98_PTYS=y
-+CONFIG_UNIX98_PTY_COUNT=256
-+
-+#
-+# I2C support
-+#
-+# CONFIG_I2C is not set
-+
-+#
-+# Mice
-+#
-+# CONFIG_BUSMOUSE is not set
-+# CONFIG_MOUSE is not set
-+
-+#
-+# Joysticks
-+#
-+# CONFIG_INPUT_GAMEPORT is not set
-+# CONFIG_INPUT_NS558 is not set
-+# CONFIG_INPUT_LIGHTNING is not set
-+# CONFIG_INPUT_PCIGAME is not set
-+# CONFIG_INPUT_CS461X is not set
-+# CONFIG_INPUT_EMU10K1 is not set
-+# CONFIG_INPUT_SERIO is not set
-+# CONFIG_INPUT_SERPORT is not set
-+
-+#
-+# Joysticks
-+#
-+# CONFIG_INPUT_ANALOG is not set
-+# CONFIG_INPUT_A3D is not set
-+# CONFIG_INPUT_ADI is not set
-+# CONFIG_INPUT_COBRA is not set
-+# CONFIG_INPUT_GF2K is not set
-+# CONFIG_INPUT_GRIP is not set
-+# CONFIG_INPUT_INTERACT is not set
-+# CONFIG_INPUT_TMDC is not set
-+# CONFIG_INPUT_SIDEWINDER is not set
-+# CONFIG_INPUT_IFORCE_USB is not set
-+# CONFIG_INPUT_IFORCE_232 is not set
-+# CONFIG_INPUT_WARRIOR is not set
-+# CONFIG_INPUT_MAGELLAN is not set
-+# CONFIG_INPUT_SPACEORB is not set
-+# CONFIG_INPUT_SPACEBALL is not set
-+# CONFIG_INPUT_STINGER is not set
-+# CONFIG_INPUT_DB9 is not set
-+# CONFIG_INPUT_GAMECON is not set
-+# CONFIG_INPUT_TURBOGRAFX is not set
-+# CONFIG_QIC02_TAPE is not set
-+# CONFIG_IPMI_HANDLER is not set
-+# CONFIG_IPMI_PANIC_EVENT is not set
-+# CONFIG_IPMI_DEVICE_INTERFACE is not set
-+# CONFIG_IPMI_KCS is not set
-+# CONFIG_IPMI_WATCHDOG is not set
-+
-+#
-+# Watchdog Cards
-+#
-+# CONFIG_WATCHDOG is not set
-+# CONFIG_SCx200 is not set
-+# CONFIG_SCx200_GPIO is not set
-+# CONFIG_AMD_PM768 is not set
-+# CONFIG_NVRAM is not set
-+# CONFIG_RTC 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_FTAPE is not set
-+# CONFIG_AGP is not set
-+
-+#
-+# Direct Rendering Manager (XFree86 DRI support)
-+#
-+# CONFIG_DRM is not set
-+
-+#
-+# PCMCIA character devices
-+#
-+# CONFIG_PCMCIA_SERIAL_CS is not set
-+# CONFIG_SYNCLINK_CS is not set
-+
-+#
-+# File systems
-+#
-+# CONFIG_QUOTA is not set
-+# CONFIG_QFMT_V2 is not set
-+CONFIG_AUTOFS_FS=y
-+# CONFIG_AUTOFS4_FS is not set
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_REISERFS_CHECK is not set
-+# CONFIG_REISERFS_PROC_INFO is not set
-+# CONFIG_ADFS_FS is not set
-+# CONFIG_ADFS_FS_RW 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_BEFS_DEBUG is not set
-+# CONFIG_BFS_FS is not set
-+CONFIG_EXT3_FS=y
-+CONFIG_JBD=y
-+# CONFIG_JBD_DEBUG is not set
-+CONFIG_FAT_FS=y
-+CONFIG_MSDOS_FS=y
-+# CONFIG_UMSDOS_FS is not set
-+CONFIG_VFAT_FS=y
-+# CONFIG_EFS_FS is not set
-+# CONFIG_JFFS_FS is not set
-+# CONFIG_JFFS2_FS is not set
-+# CONFIG_CRAMFS is not set
-+CONFIG_TMPFS=y
-+CONFIG_RAMFS=y
-+# CONFIG_ISO9660_FS is not set
-+# CONFIG_JOLIET is not set
-+# CONFIG_ZISOFS is not set
-+# CONFIG_JFS_FS is not set
-+# CONFIG_JFS_DEBUG is not set
-+# CONFIG_JFS_STATISTICS is not set
-+# CONFIG_MINIX_FS is not set
-+# CONFIG_VXFS_FS is not set
-+# CONFIG_NTFS_FS is not set
-+# CONFIG_NTFS_RW is not set
-+# CONFIG_HPFS_FS is not set
-+CONFIG_PROC_FS=y
-+# CONFIG_DEVFS_FS is not set
-+# CONFIG_DEVFS_MOUNT is not set
-+# CONFIG_DEVFS_DEBUG is not set
-+CONFIG_DEVPTS_FS=y
-+# CONFIG_QNX4FS_FS is not set
-+# CONFIG_QNX4FS_RW is not set
-+# CONFIG_ROMFS_FS is not set
-+CONFIG_EXT2_FS=y
-+# CONFIG_SYSV_FS is not set
-+# CONFIG_UDF_FS is not set
-+# CONFIG_UDF_RW is not set
-+# CONFIG_UFS_FS is not set
-+# CONFIG_UFS_FS_WRITE is not set
-+# CONFIG_XFS_FS is not set
-+# CONFIG_XFS_QUOTA is not set
-+# CONFIG_XFS_RT is not set
-+# CONFIG_XFS_TRACE is not set
-+# CONFIG_XFS_DEBUG is not set
-+
-+#
-+# Network File Systems
-+#
-+# CONFIG_CODA_FS is not set
-+# CONFIG_INTERMEZZO_FS is not set
-+CONFIG_NFS_FS=y
-+CONFIG_NFS_V3=y
-+# CONFIG_NFS_DIRECTIO is not set
-+CONFIG_ROOT_NFS=y
-+# CONFIG_NFSD is not set
-+# CONFIG_NFSD_V3 is not set
-+# CONFIG_NFSD_TCP is not set
-+CONFIG_SUNRPC=y
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=y
-+# CONFIG_SMB_FS is not set
-+# CONFIG_NCP_FS is not set
-+# CONFIG_NCPFS_PACKET_SIGNING is not set
-+# CONFIG_NCPFS_IOCTL_LOCKING is not set
-+# CONFIG_NCPFS_STRONG is not set
-+# CONFIG_NCPFS_NFS_NS is not set
-+# CONFIG_NCPFS_OS2_NS is not set
-+# CONFIG_NCPFS_SMALLDOS is not set
-+# CONFIG_NCPFS_NLS is not set
-+# CONFIG_NCPFS_EXTRAS is not set
-+# CONFIG_ZISOFS_FS is not set
-+
-+#
-+# Partition Types
-+#
-+# CONFIG_PARTITION_ADVANCED is not set
-+CONFIG_MSDOS_PARTITION=y
-+# CONFIG_SMB_NLS is not set
-+CONFIG_NLS=y
-+
-+#
-+# Native Language Support
-+#
-+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_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
-+
-+#
-+# Multimedia devices
-+#
-+# CONFIG_VIDEO_DEV is not set
-+
-+#
-+# Console drivers
-+#
-+# CONFIG_VGA_CONSOLE is not set
-+# CONFIG_MDA_CONSOLE is not set
-+
-+#
-+# Frame-buffer support
-+#
-+CONFIG_FB=y
-+CONFIG_DUMMY_CONSOLE=y
-+# CONFIG_FB_RIVA is not set
-+# CONFIG_FB_CLGEN is not set
-+# CONFIG_FB_PM2 is not set
-+# CONFIG_FB_PM3 is not set
-+# CONFIG_FB_CYBER2000 is not set
-+# CONFIG_FB_MATROX is not set
-+# CONFIG_FB_ATY is not set
-+# CONFIG_FB_RADEON is not set
-+# CONFIG_FB_ATY128 is not set
-+# CONFIG_FB_INTEL is not set
-+# CONFIG_FB_SIS is not set
-+# CONFIG_FB_NEOMAGIC is not set
-+# CONFIG_FB_3DFX is not set
-+# CONFIG_FB_VOODOO1 is not set
-+# CONFIG_FB_TRIDENT is not set
-+# CONFIG_FB_E1356 is not set
-+# CONFIG_FB_IT8181 is not set
-+# CONFIG_FB_VIRTUAL is not set
-+CONFIG_FBCON_ADVANCED=y
-+# CONFIG_FBCON_MFB is not set
-+# CONFIG_FBCON_CFB2 is not set
-+# CONFIG_FBCON_CFB4 is not set
-+# CONFIG_FBCON_CFB8 is not set
-+CONFIG_FBCON_CFB16=y
-+# CONFIG_FBCON_CFB24 is not set
-+CONFIG_FBCON_CFB32=y
-+# CONFIG_FBCON_AFB is not set
-+# CONFIG_FBCON_ILBM is not set
-+# CONFIG_FBCON_IPLAN2P2 is not set
-+# CONFIG_FBCON_IPLAN2P4 is not set
-+# CONFIG_FBCON_IPLAN2P8 is not set
-+# CONFIG_FBCON_MAC is not set
-+# CONFIG_FBCON_VGA_PLANES is not set
-+# CONFIG_FBCON_VGA is not set
-+# CONFIG_FBCON_HGA is not set
-+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-+CONFIG_FBCON_FONTS=y
-+CONFIG_FONT_8x8=y
-+CONFIG_FONT_8x16=y
-+# CONFIG_FONT_SUN8x16 is not set
-+# CONFIG_FONT_SUN12x22 is not set
-+# CONFIG_FONT_6x11 is not set
-+# CONFIG_FONT_PEARL_8x8 is not set
-+# CONFIG_FONT_ACORN_8x8 is not set
-+
-+#
-+# Sound
-+#
-+CONFIG_SOUND=y
-+# CONFIG_SOUND_ALI5455 is not set
-+# CONFIG_SOUND_BT878 is not set
-+# CONFIG_SOUND_CMPCI is not set
-+# CONFIG_SOUND_EMU10K1 is not set
-+# CONFIG_MIDI_EMU10K1 is not set
-+# CONFIG_SOUND_FUSION is not set
-+# CONFIG_SOUND_CS4281 is not set
-+# CONFIG_SOUND_ES1370 is not set
-+# CONFIG_SOUND_ES1371 is not set
-+# CONFIG_SOUND_ESSSOLO1 is not set
-+# CONFIG_SOUND_MAESTRO is not set
-+# CONFIG_SOUND_MAESTRO3 is not set
-+# CONFIG_SOUND_FORTE is not set
-+# CONFIG_SOUND_ICH is not set
-+# CONFIG_SOUND_RME96XX is not set
-+# CONFIG_SOUND_SONICVIBES is not set
-+# CONFIG_SOUND_TRIDENT is not set
-+# CONFIG_SOUND_MSNDCLAS is not set
-+# CONFIG_SOUND_MSNDPIN is not set
-+# CONFIG_SOUND_VIA82CXXX is not set
-+# CONFIG_MIDI_VIA82CXXX is not set
-+# CONFIG_SOUND_OSS is not set
-+# CONFIG_SOUND_TVMIXER is not set
-+# CONFIG_SOUND_AD1980 is not set
-+# CONFIG_SOUND_WM97XX is not set
-+
-+#
-+# USB support
-+#
-+CONFIG_USB=y
-+# CONFIG_USB_DEBUG is not set
-+
-+#
-+# Miscellaneous USB options
-+#
-+CONFIG_USB_DEVICEFS=y
-+# CONFIG_USB_BANDWIDTH is not set
-+
-+#
-+# USB Host Controller Drivers
-+#
-+# CONFIG_USB_EHCI_HCD is not set
-+# CONFIG_USB_UHCI is not set
-+# CONFIG_USB_UHCI_ALT is not set
-+CONFIG_USB_OHCI=y
-+
-+#
-+# USB Device Class drivers
-+#
-+# CONFIG_USB_AUDIO is not set
-+# CONFIG_USB_EMI26 is not set
-+# CONFIG_USB_BLUETOOTH is not set
-+# CONFIG_USB_MIDI is not set
-+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_HP8200e 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_ACM is not set
-+# CONFIG_USB_PRINTER is not set
-+
-+#
-+# USB Human Interface Devices (HID)
-+#
-+CONFIG_USB_HID=y
-+CONFIG_USB_HIDINPUT=y
-+CONFIG_USB_HIDDEV=y
-+# CONFIG_USB_AIPTEK is not set
-+# CONFIG_USB_WACOM is not set
-+# CONFIG_USB_KBTAB is not set
-+# CONFIG_USB_POWERMATE is not set
-+
-+#
-+# USB Imaging devices
-+#
-+# CONFIG_USB_DC2XX is not set
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_SCANNER is not set
-+# CONFIG_USB_MICROTEK is not set
-+# CONFIG_USB_HPUSBSCSI is not set
-+
-+#
-+# USB Multimedia devices
-+#
-+
-+#
-+# Video4Linux support is needed for USB Multimedia device support
-+#
-+
-+#
-+# USB Network adaptors
-+#
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_RTL8150 is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_CDCETHER is not set
-+# CONFIG_USB_USBNET is not set
-+
-+#
-+# USB port drivers
-+#
-+# CONFIG_USB_USS720 is not set
-+
-+#
-+# USB Serial Converter support
-+#
-+# CONFIG_USB_SERIAL is not set
-+
-+#
-+# USB Miscellaneous drivers
-+#
-+# CONFIG_USB_RIO500 is not set
-+# CONFIG_USB_AUERSWALD is not set
-+# CONFIG_USB_TIGL is not set
-+# CONFIG_USB_BRLVGER is not set
-+# CONFIG_USB_LCD is not set
-+
-+#
-+# Support for USB gadgets
-+#
-+# CONFIG_USB_GADGET is not set
-+
-+#
-+# Bluetooth support
-+#
-+# CONFIG_BLUEZ is not set
-+
-+#
-+# Kernel hacking
-+#
-+CONFIG_CROSSCOMPILE=y
-+# CONFIG_RUNTIME_DEBUG is not set
-+# CONFIG_KGDB is not set
-+# CONFIG_GDB_CONSOLE is not set
-+# CONFIG_DEBUG_INFO is not set
-+# CONFIG_MAGIC_SYSRQ is not set
-+# CONFIG_MIPS_UNCACHED is not set
-+CONFIG_LOG_BUF_SHIFT=0
-+
-+#
-+# Cryptographic options
-+#
-+# CONFIG_CRYPTO is not set
-+
-+#
-+# Library routines
-+#
-+# CONFIG_CRC32 is not set
-+CONFIG_ZLIB_INFLATE=m
-+CONFIG_ZLIB_DEFLATE=m
-+# CONFIG_FW_LOADER is not set
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-db1500 linux-2.4.32-rc1.mips/arch/mips/defconfig-db1500
---- linux-2.4.32-rc1/arch/mips/defconfig-db1500 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-db1500 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -267,11 +267,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -555,7 +550,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-db1550 linux-2.4.32-rc1.mips/arch/mips/defconfig-db1550
---- linux-2.4.32-rc1/arch/mips/defconfig-db1550 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-db1550 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -213,11 +213,9 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- CONFIG_MTD_PB1550=y
- CONFIG_MTD_PB1550_BOOT=y
- CONFIG_MTD_PB1550_USER=y
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -236,7 +234,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -343,11 +340,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -633,7 +625,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-ddb5476 linux-2.4.32-rc1.mips/arch/mips/defconfig-ddb5476
---- linux-2.4.32-rc1/arch/mips/defconfig-ddb5476 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-ddb5476 2005-03-18 13:13:21.000000000 +0100
-@@ -28,8 +28,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -226,11 +226,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -517,7 +512,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-ddb5477 linux-2.4.32-rc1.mips/arch/mips/defconfig-ddb5477
---- linux-2.4.32-rc1/arch/mips/defconfig-ddb5477 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-ddb5477 2005-03-18 13:13:21.000000000 +0100
-@@ -28,8 +28,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -226,11 +226,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -434,7 +429,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-decstation linux-2.4.32-rc1.mips/arch/mips/defconfig-decstation
---- linux-2.4.32-rc1/arch/mips/defconfig-decstation 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-decstation 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -223,11 +223,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -306,9 +301,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -477,7 +474,6 @@
- CONFIG_SERIAL_DEC_CONSOLE=y
- CONFIG_DZ=y
- CONFIG_ZS=y
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-e55 linux-2.4.32-rc1.mips/arch/mips/defconfig-e55
---- linux-2.4.32-rc1/arch/mips/defconfig-e55 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-e55 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -222,11 +222,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -426,7 +421,6 @@
- # CONFIG_SERIAL_MULTIPORT is not set
- # CONFIG_HUB6 is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_VR41XX_KIU is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-eagle linux-2.4.32-rc1.mips/arch/mips/defconfig-eagle
---- linux-2.4.32-rc1/arch/mips/defconfig-eagle 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-eagle 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -208,8 +208,8 @@
- # Mapping drivers for chip access
- #
- CONFIG_MTD_PHYSMAP=y
--CONFIG_MTD_PHYSMAP_START=1c000000
--CONFIG_MTD_PHYSMAP_LEN=2000000
-+CONFIG_MTD_PHYSMAP_START=0x1c000000
-+CONFIG_MTD_PHYSMAP_LEN=0x2000000
- CONFIG_MTD_PHYSMAP_BUSWIDTH=4
- # CONFIG_MTD_PB1000 is not set
- # CONFIG_MTD_PB1500 is not set
-@@ -217,9 +217,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -238,7 +236,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -327,11 +324,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -587,7 +579,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_VR41XX_KIU is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-ev64120 linux-2.4.32-rc1.mips/arch/mips/defconfig-ev64120
---- linux-2.4.32-rc1/arch/mips/defconfig-ev64120 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-ev64120 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -230,11 +230,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -443,7 +438,6 @@
- # CONFIG_SERIAL_CONSOLE is not set
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-ev96100 linux-2.4.32-rc1.mips/arch/mips/defconfig-ev96100
---- linux-2.4.32-rc1/arch/mips/defconfig-ev96100 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-ev96100 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -232,11 +232,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -441,7 +436,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-ficmmp linux-2.4.32-rc1.mips/arch/mips/defconfig-ficmmp
---- linux-2.4.32-rc1/arch/mips/defconfig-ficmmp 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-ficmmp 2005-03-18 13:13:21.000000000 +0100
-@@ -0,0 +1,862 @@
-+#
-+# Automatically generated make config: don't edit
-+#
-+CONFIG_MIPS=y
-+CONFIG_MIPS32=y
-+# CONFIG_MIPS64 is not set
-+
-+#
-+# Code maturity level options
-+#
-+CONFIG_EXPERIMENTAL=y
-+
-+#
-+# Loadable module support
-+#
-+CONFIG_MODULES=y
-+# CONFIG_MODVERSIONS is not set
-+CONFIG_KMOD=y
-+
-+#
-+# Machine selection
-+#
-+# CONFIG_ACER_PICA_61 is not set
-+# CONFIG_MIPS_BOSPORUS is not set
-+# CONFIG_MIPS_MIRAGE is not set
-+# CONFIG_MIPS_DB1000 is not set
-+# CONFIG_MIPS_DB1100 is not set
-+# CONFIG_MIPS_DB1500 is not set
-+# CONFIG_MIPS_DB1550 is not set
-+# CONFIG_MIPS_PB1000 is not set
-+# CONFIG_MIPS_PB1100 is not set
-+# CONFIG_MIPS_PB1500 is not set
-+# CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
-+# CONFIG_MIPS_XXS1500 is not set
-+# CONFIG_MIPS_MTX1 is not set
-+# CONFIG_COGENT_CSB250 is not set
-+# CONFIG_BAGET_MIPS is not set
-+# CONFIG_CASIO_E55 is not set
-+# CONFIG_MIPS_COBALT is not set
-+# CONFIG_DECSTATION is not set
-+# CONFIG_MIPS_EV64120 is not set
-+# CONFIG_MIPS_EV96100 is not set
-+# CONFIG_MIPS_IVR is not set
-+# CONFIG_HP_LASERJET is not set
-+# CONFIG_IBM_WORKPAD is not set
-+# CONFIG_LASAT is not set
-+# CONFIG_MIPS_ITE8172 is not set
-+# CONFIG_MIPS_ATLAS is not set
-+# CONFIG_MIPS_MAGNUM_4000 is not set
-+# CONFIG_MIPS_MALTA is not set
-+# CONFIG_MIPS_SEAD is not set
-+# CONFIG_MOMENCO_OCELOT is not set
-+# CONFIG_MOMENCO_OCELOT_G is not set
-+# CONFIG_MOMENCO_OCELOT_C is not set
-+# CONFIG_MOMENCO_JAGUAR_ATX is not set
-+# CONFIG_PMC_BIG_SUR is not set
-+# CONFIG_PMC_STRETCH is not set
-+# CONFIG_PMC_YOSEMITE is not set
-+# CONFIG_DDB5074 is not set
-+# CONFIG_DDB5476 is not set
-+# CONFIG_DDB5477 is not set
-+# CONFIG_NEC_OSPREY is not set
-+# CONFIG_NEC_EAGLE is not set
-+# CONFIG_OLIVETTI_M700 is not set
-+# CONFIG_NINO is not set
-+# CONFIG_SGI_IP22 is not set
-+# CONFIG_SGI_IP27 is not set
-+# CONFIG_SIBYTE_SB1xxx_SOC is not set
-+# CONFIG_SNI_RM200_PCI is not set
-+# CONFIG_TANBAC_TB0226 is not set
-+# CONFIG_TANBAC_TB0229 is not set
-+# CONFIG_TOSHIBA_JMR3927 is not set
-+# CONFIG_TOSHIBA_RBTX4927 is not set
-+# CONFIG_VICTOR_MPC30X is not set
-+# CONFIG_ZAO_CAPCELLA is not set
-+# CONFIG_HIGHMEM is not set
-+CONFIG_RWSEM_GENERIC_SPINLOCK=y
-+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-+# CONFIG_MIPS_AU1000 is not set
-+
-+#
-+# CPU selection
-+#
-+CONFIG_CPU_MIPS32=y
-+# CONFIG_CPU_MIPS64 is not set
-+# CONFIG_CPU_R3000 is not set
-+# CONFIG_CPU_TX39XX is not set
-+# CONFIG_CPU_VR41XX is not set
-+# CONFIG_CPU_R4300 is not set
-+# CONFIG_CPU_R4X00 is not set
-+# CONFIG_CPU_TX49XX is not set
-+# CONFIG_CPU_R5000 is not set
-+# CONFIG_CPU_R5432 is not set
-+# CONFIG_CPU_R6000 is not set
-+# CONFIG_CPU_NEVADA is not set
-+# CONFIG_CPU_R8000 is not set
-+# CONFIG_CPU_R10000 is not set
-+# CONFIG_CPU_RM7000 is not set
-+# CONFIG_CPU_RM9000 is not set
-+# CONFIG_CPU_SB1 is not set
-+CONFIG_PAGE_SIZE_4KB=y
-+# CONFIG_PAGE_SIZE_16KB is not set
-+# CONFIG_PAGE_SIZE_64KB is not set
-+CONFIG_CPU_HAS_PREFETCH=y
-+# CONFIG_VTAG_ICACHE is not set
-+CONFIG_64BIT_PHYS_ADDR=y
-+# CONFIG_CPU_ADVANCED is not set
-+CONFIG_CPU_HAS_LLSC=y
-+# CONFIG_CPU_HAS_LLDSCD is not set
-+# CONFIG_CPU_HAS_WB is not set
-+CONFIG_CPU_HAS_SYNC=y
-+
-+#
-+# General setup
-+#
-+CONFIG_CPU_LITTLE_ENDIAN=y
-+# CONFIG_BUILD_ELF64 is not set
-+CONFIG_NET=y
-+# CONFIG_PCI is not set
-+# CONFIG_PCI_NEW is not set
-+CONFIG_PCI_AUTO=y
-+# CONFIG_ISA is not set
-+# CONFIG_TC is not set
-+# CONFIG_MCA is not set
-+# CONFIG_SBUS is not set
-+# CONFIG_HOTPLUG is not set
-+# CONFIG_PCMCIA is not set
-+# CONFIG_HOTPLUG_PCI is not set
-+CONFIG_SYSVIPC=y
-+# CONFIG_BSD_PROCESS_ACCT is not set
-+CONFIG_SYSCTL=y
-+CONFIG_KCORE_ELF=y
-+# CONFIG_KCORE_AOUT is not set
-+# CONFIG_BINFMT_AOUT is not set
-+CONFIG_BINFMT_ELF=y
-+# CONFIG_MIPS32_COMPAT is not set
-+# CONFIG_MIPS32_O32 is not set
-+# CONFIG_MIPS32_N32 is not set
-+# CONFIG_BINFMT_ELF32 is not set
-+# CONFIG_BINFMT_MISC is not set
-+# CONFIG_OOM_KILLER is not set
-+CONFIG_CMDLINE_BOOL=y
-+CONFIG_CMDLINE="ide3=dma mem=96M root=/dev/hda2 rootflags=data=journal"
-+
-+#
-+# Memory Technology Devices (MTD)
-+#
-+# CONFIG_MTD is not set
-+
-+#
-+# Parallel port support
-+#
-+# CONFIG_PARPORT is not set
-+
-+#
-+# Plug and Play configuration
-+#
-+# CONFIG_PNP is not set
-+# CONFIG_ISAPNP is not set
-+
-+#
-+# Block devices
-+#
-+# CONFIG_BLK_DEV_FD is not set
-+# 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_CISS_SCSI_TAPE is not set
-+# CONFIG_CISS_MONITOR_THREAD is not set
-+# CONFIG_BLK_DEV_DAC960 is not set
-+# CONFIG_BLK_DEV_UMEM is not set
-+# CONFIG_BLK_DEV_SX8 is not set
-+CONFIG_BLK_DEV_LOOP=y
-+# CONFIG_BLK_DEV_NBD is not set
-+# CONFIG_BLK_DEV_RAM is not set
-+# CONFIG_BLK_DEV_INITRD is not set
-+# CONFIG_BLK_STATS is not set
-+
-+#
-+# Multi-device support (RAID and LVM)
-+#
-+# CONFIG_MD is not set
-+# CONFIG_BLK_DEV_MD is not set
-+# CONFIG_MD_LINEAR is not set
-+# CONFIG_MD_RAID0 is not set
-+# CONFIG_MD_RAID1 is not set
-+# CONFIG_MD_RAID5 is not set
-+# CONFIG_MD_MULTIPATH is not set
-+# CONFIG_BLK_DEV_LVM is not set
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+# CONFIG_PACKET_MMAP is not set
-+# CONFIG_NETLINK_DEV is not set
-+CONFIG_NETFILTER=y
-+# CONFIG_NETFILTER_DEBUG is not set
-+CONFIG_FILTER=y
-+CONFIG_UNIX=y
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+# 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_INET_ECN is not set
-+# CONFIG_SYN_COOKIES is not set
-+
-+#
-+# IP: Netfilter Configuration
-+#
-+# CONFIG_IP_NF_CONNTRACK is not set
-+# CONFIG_IP_NF_QUEUE is not set
-+# CONFIG_IP_NF_IPTABLES is not set
-+# CONFIG_IP_NF_ARPTABLES is not set
-+# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-+
-+#
-+# IP: Virtual Server Configuration
-+#
-+# CONFIG_IP_VS is not set
-+# CONFIG_IPV6 is not set
-+# CONFIG_KHTTPD is not set
-+
-+#
-+# SCTP Configuration (EXPERIMENTAL)
-+#
-+# CONFIG_IP_SCTP is not set
-+# CONFIG_ATM is not set
-+# CONFIG_VLAN_8021Q is not set
-+
-+#
-+#
-+#
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_DECNET is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_X25 is not set
-+# CONFIG_LAPB is not set
-+# CONFIG_LLC is not set
-+# CONFIG_NET_DIVERT is not set
-+# CONFIG_ECONET is not set
-+# CONFIG_WAN_ROUTER is not set
-+# CONFIG_NET_FASTROUTE is not set
-+# CONFIG_NET_HW_FLOWCONTROL is not set
-+
-+#
-+# QoS and/or fair queueing
-+#
-+# CONFIG_NET_SCHED is not set
-+
-+#
-+# Network testing
-+#
-+# CONFIG_NET_PKTGEN is not set
-+
-+#
-+# Telephony Support
-+#
-+# CONFIG_PHONE is not set
-+# CONFIG_PHONE_IXJ is not set
-+# CONFIG_PHONE_IXJ_PCMCIA is not set
-+
-+#
-+# ATA/IDE/MFM/RLL support
-+#
-+CONFIG_IDE=y
-+
-+#
-+# IDE, ATA and ATAPI Block devices
-+#
-+CONFIG_BLK_DEV_IDE=y
-+
-+#
-+# Please see Documentation/ide.txt for help/info on IDE drives
-+#
-+CONFIG_BLK_DEV_HD_IDE=y
-+CONFIG_BLK_DEV_HD=y
-+# CONFIG_BLK_DEV_IDE_SATA is not set
-+CONFIG_BLK_DEV_IDEDISK=y
-+CONFIG_IDEDISK_MULTI_MODE=y
-+CONFIG_IDEDISK_STROKE=y
-+# CONFIG_BLK_DEV_IDECS is not set
-+# CONFIG_BLK_DEV_DELKIN is not set
-+# 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_BLK_DEV_CMD640 is not set
-+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-+# CONFIG_BLK_DEV_ISAPNP is not set
-+# CONFIG_IDE_CHIPSETS is not set
-+# CONFIG_IDEDMA_AUTO is not set
-+# CONFIG_DMA_NONPCI is not set
-+# CONFIG_BLK_DEV_ATARAID is not set
-+# CONFIG_BLK_DEV_ATARAID_PDC is not set
-+# CONFIG_BLK_DEV_ATARAID_HPT is not set
-+# CONFIG_BLK_DEV_ATARAID_MEDLEY is not set
-+# CONFIG_BLK_DEV_ATARAID_SII is not set
-+
-+#
-+# SCSI support
-+#
-+CONFIG_SCSI=y
-+
-+#
-+# SCSI support type (disk, tape, CD-ROM)
-+#
-+CONFIG_BLK_DEV_SD=y
-+CONFIG_SD_EXTRA_DEVS=40
-+CONFIG_CHR_DEV_ST=y
-+# CONFIG_CHR_DEV_OSST is not set
-+CONFIG_BLK_DEV_SR=y
-+# CONFIG_BLK_DEV_SR_VENDOR is not set
-+CONFIG_SR_EXTRA_DEVS=2
-+# CONFIG_CHR_DEV_SG is not set
-+
-+#
-+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-+#
-+# CONFIG_SCSI_DEBUG_QUEUES is not set
-+# CONFIG_SCSI_MULTI_LUN is not set
-+CONFIG_SCSI_CONSTANTS=y
-+# CONFIG_SCSI_LOGGING is not set
-+
-+#
-+# SCSI low-level drivers
-+#
-+# 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_AHA1740 is not set
-+# CONFIG_SCSI_AACRAID is not set
-+# CONFIG_SCSI_AIC7XXX is not set
-+# CONFIG_SCSI_AIC79XX is not set
-+# CONFIG_SCSI_AIC7XXX_OLD is not set
-+# CONFIG_SCSI_DPT_I2O is not set
-+# CONFIG_SCSI_ADVANSYS is not set
-+# CONFIG_SCSI_IN2000 is not set
-+# CONFIG_SCSI_AM53C974 is not set
-+# CONFIG_SCSI_MEGARAID is not set
-+# CONFIG_SCSI_MEGARAID2 is not set
-+# CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
-+# CONFIG_SCSI_SATA_SVW is not set
-+# CONFIG_SCSI_ATA_PIIX is not set
-+# CONFIG_SCSI_SATA_NV 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_SIS is not set
-+# CONFIG_SCSI_SATA_ULI is not set
-+# CONFIG_SCSI_SATA_VIA is not set
-+# CONFIG_SCSI_SATA_VITESSE 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_EATA_DMA is not set
-+# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-+# CONFIG_SCSI_INIA100 is not set
-+# CONFIG_SCSI_NCR53C406A is not set
-+# CONFIG_SCSI_NCR53C7xx is not set
-+# CONFIG_SCSI_PAS16 is not set
-+# CONFIG_SCSI_PCI2000 is not set
-+# CONFIG_SCSI_PCI2220I is not set
-+# CONFIG_SCSI_PSI240I is not set
-+# CONFIG_SCSI_QLOGIC_FAS is not set
-+# CONFIG_SCSI_SIM710 is not set
-+# CONFIG_SCSI_SYM53C416 is not set
-+# CONFIG_SCSI_T128 is not set
-+# CONFIG_SCSI_U14_34F is not set
-+# CONFIG_SCSI_NSP32 is not set
-+# CONFIG_SCSI_DEBUG is not set
-+
-+#
-+# Fusion MPT device support
-+#
-+# CONFIG_FUSION is not set
-+# CONFIG_FUSION_BOOT is not set
-+# CONFIG_FUSION_ISENSE is not set
-+# CONFIG_FUSION_CTL is not set
-+# CONFIG_FUSION_LAN is not set
-+
-+#
-+# Network device support
-+#
-+CONFIG_NETDEVICES=y
-+
-+#
-+# ARCnet devices
-+#
-+# CONFIG_ARCNET is not set
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_ETHERTAP is not set
-+
-+#
-+# Ethernet (10 or 100Mbit)
-+#
-+CONFIG_NET_ETHERNET=y
-+# CONFIG_SUNLANCE is not set
-+# CONFIG_SUNBMAC is not set
-+# CONFIG_SUNQE is not set
-+# CONFIG_SUNGEM is not set
-+# CONFIG_NET_VENDOR_3COM is not set
-+# CONFIG_LANCE is not set
-+# CONFIG_NET_VENDOR_SMC is not set
-+# CONFIG_NET_VENDOR_RACAL is not set
-+# CONFIG_NET_ISA is not set
-+# CONFIG_NET_PCI is not set
-+# CONFIG_NET_POCKET is not set
-+
-+#
-+# Ethernet (1000 Mbit)
-+#
-+# CONFIG_ACENIC is not set
-+# CONFIG_DL2K is not set
-+# CONFIG_E1000 is not set
-+# CONFIG_MYRI_SBUS is not set
-+# CONFIG_NS83820 is not set
-+# CONFIG_HAMACHI is not set
-+# CONFIG_YELLOWFIN is not set
-+# CONFIG_R8169 is not set
-+# CONFIG_SK98LIN is not set
-+# CONFIG_TIGON3 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
-+
-+#
-+# Wireless LAN (non-hamradio)
-+#
-+# CONFIG_NET_RADIO is not set
-+
-+#
-+# Token Ring devices
-+#
-+# CONFIG_TR is not set
-+# CONFIG_NET_FC is not set
-+# CONFIG_RCPCI is not set
-+# CONFIG_SHAPER is not set
-+
-+#
-+# Wan interfaces
-+#
-+# CONFIG_WAN is not set
-+
-+#
-+# Amateur Radio support
-+#
-+# CONFIG_HAMRADIO is not set
-+
-+#
-+# IrDA (infrared) support
-+#
-+# CONFIG_IRDA is not set
-+
-+#
-+# ISDN subsystem
-+#
-+# CONFIG_ISDN is not set
-+
-+#
-+# Input core support
-+#
-+CONFIG_INPUT=y
-+CONFIG_INPUT_KEYBDEV=y
-+CONFIG_INPUT_MOUSEDEV=y
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-+# CONFIG_INPUT_JOYDEV is not set
-+CONFIG_INPUT_EVDEV=y
-+# CONFIG_INPUT_UINPUT is not set
-+
-+#
-+# Character devices
-+#
-+CONFIG_VT=y
-+CONFIG_VT_CONSOLE=y
-+# CONFIG_SERIAL is not set
-+# CONFIG_SERIAL_EXTENDED 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_DIGI is not set
-+# CONFIG_ESPSERIAL is not set
-+# CONFIG_MOXA_INTELLIO is not set
-+# CONFIG_MOXA_SMARTIO is not set
-+# CONFIG_ISI is not set
-+# CONFIG_SYNCLINK is not set
-+# CONFIG_SYNCLINKMP is not set
-+# CONFIG_N_HDLC is not set
-+# 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
-+# CONFIG_SERIAL_TX3912 is not set
-+# CONFIG_SERIAL_TX3912_CONSOLE is not set
-+# CONFIG_SERIAL_TXX9 is not set
-+# CONFIG_SERIAL_TXX9_CONSOLE is not set
-+# CONFIG_TXX927_SERIAL is not set
-+CONFIG_UNIX98_PTYS=y
-+CONFIG_UNIX98_PTY_COUNT=256
-+
-+#
-+# I2C support
-+#
-+CONFIG_I2C=y
-+# CONFIG_I2C_ALGOBIT is not set
-+# CONFIG_SCx200_ACB is not set
-+# CONFIG_I2C_ALGOPCF is not set
-+# CONFIG_I2C_CHARDEV is not set
-+# CONFIG_I2C_PROC is not set
-+
-+#
-+# Mice
-+#
-+# CONFIG_BUSMOUSE is not set
-+# CONFIG_MOUSE is not set
-+
-+#
-+# Joysticks
-+#
-+# CONFIG_INPUT_GAMEPORT is not set
-+# CONFIG_INPUT_NS558 is not set
-+# CONFIG_INPUT_LIGHTNING is not set
-+# CONFIG_INPUT_PCIGAME is not set
-+# CONFIG_INPUT_CS461X is not set
-+# CONFIG_INPUT_EMU10K1 is not set
-+# CONFIG_INPUT_SERIO is not set
-+# CONFIG_INPUT_SERPORT is not set
-+
-+#
-+# Joysticks
-+#
-+# CONFIG_INPUT_ANALOG is not set
-+# CONFIG_INPUT_A3D is not set
-+# CONFIG_INPUT_ADI is not set
-+# CONFIG_INPUT_COBRA is not set
-+# CONFIG_INPUT_GF2K is not set
-+# CONFIG_INPUT_GRIP is not set
-+# CONFIG_INPUT_INTERACT is not set
-+# CONFIG_INPUT_TMDC is not set
-+# CONFIG_INPUT_SIDEWINDER is not set
-+# CONFIG_INPUT_IFORCE_USB is not set
-+# CONFIG_INPUT_IFORCE_232 is not set
-+# CONFIG_INPUT_WARRIOR is not set
-+# CONFIG_INPUT_MAGELLAN is not set
-+# CONFIG_INPUT_SPACEORB is not set
-+# CONFIG_INPUT_SPACEBALL is not set
-+# CONFIG_INPUT_STINGER is not set
-+# CONFIG_INPUT_DB9 is not set
-+# CONFIG_INPUT_GAMECON is not set
-+# CONFIG_INPUT_TURBOGRAFX is not set
-+# CONFIG_QIC02_TAPE is not set
-+# CONFIG_IPMI_HANDLER is not set
-+# CONFIG_IPMI_PANIC_EVENT is not set
-+# CONFIG_IPMI_DEVICE_INTERFACE is not set
-+# CONFIG_IPMI_KCS is not set
-+# CONFIG_IPMI_WATCHDOG is not set
-+
-+#
-+# Watchdog Cards
-+#
-+# CONFIG_WATCHDOG is not set
-+# CONFIG_SCx200 is not set
-+# CONFIG_SCx200_GPIO is not set
-+# CONFIG_AMD_PM768 is not set
-+# CONFIG_NVRAM is not set
-+# CONFIG_RTC 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_FTAPE is not set
-+# CONFIG_AGP is not set
-+
-+#
-+# Direct Rendering Manager (XFree86 DRI support)
-+#
-+# CONFIG_DRM is not set
-+
-+#
-+# File systems
-+#
-+# CONFIG_QUOTA is not set
-+# CONFIG_QFMT_V2 is not set
-+CONFIG_AUTOFS_FS=y
-+# CONFIG_AUTOFS4_FS is not set
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_REISERFS_CHECK is not set
-+# CONFIG_REISERFS_PROC_INFO is not set
-+# CONFIG_ADFS_FS is not set
-+# CONFIG_ADFS_FS_RW 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_BEFS_DEBUG is not set
-+# CONFIG_BFS_FS is not set
-+CONFIG_EXT3_FS=y
-+CONFIG_JBD=y
-+# CONFIG_JBD_DEBUG is not set
-+CONFIG_FAT_FS=y
-+CONFIG_MSDOS_FS=y
-+# CONFIG_UMSDOS_FS is not set
-+CONFIG_VFAT_FS=y
-+# CONFIG_EFS_FS is not set
-+# CONFIG_JFFS_FS is not set
-+# CONFIG_JFFS2_FS is not set
-+# CONFIG_CRAMFS is not set
-+# CONFIG_TMPFS is not set
-+CONFIG_RAMFS=y
-+# CONFIG_ISO9660_FS is not set
-+# CONFIG_JOLIET is not set
-+# CONFIG_ZISOFS is not set
-+# CONFIG_JFS_FS is not set
-+# CONFIG_JFS_DEBUG is not set
-+# CONFIG_JFS_STATISTICS is not set
-+# CONFIG_MINIX_FS is not set
-+# CONFIG_VXFS_FS is not set
-+# CONFIG_NTFS_FS is not set
-+# CONFIG_NTFS_RW is not set
-+# CONFIG_HPFS_FS is not set
-+CONFIG_PROC_FS=y
-+# CONFIG_DEVFS_FS is not set
-+# CONFIG_DEVFS_MOUNT is not set
-+# CONFIG_DEVFS_DEBUG is not set
-+CONFIG_DEVPTS_FS=y
-+# CONFIG_QNX4FS_FS is not set
-+# CONFIG_QNX4FS_RW is not set
-+# CONFIG_ROMFS_FS is not set
-+CONFIG_EXT2_FS=y
-+# CONFIG_SYSV_FS is not set
-+# CONFIG_UDF_FS is not set
-+# CONFIG_UDF_RW is not set
-+# CONFIG_UFS_FS is not set
-+# CONFIG_UFS_FS_WRITE is not set
-+# CONFIG_XFS_FS is not set
-+# CONFIG_XFS_QUOTA is not set
-+# CONFIG_XFS_RT is not set
-+# CONFIG_XFS_TRACE is not set
-+# CONFIG_XFS_DEBUG is not set
-+
-+#
-+# Network File Systems
-+#
-+# CONFIG_CODA_FS is not set
-+# CONFIG_INTERMEZZO_FS is not set
-+# CONFIG_NFS_FS is not set
-+# CONFIG_NFS_V3 is not set
-+# CONFIG_NFS_DIRECTIO is not set
-+# CONFIG_ROOT_NFS is not set
-+# CONFIG_NFSD is not set
-+# CONFIG_NFSD_V3 is not set
-+# CONFIG_NFSD_TCP is not set
-+# CONFIG_SUNRPC is not set
-+# CONFIG_LOCKD is not set
-+# CONFIG_SMB_FS is not set
-+# CONFIG_NCP_FS is not set
-+# CONFIG_NCPFS_PACKET_SIGNING is not set
-+# CONFIG_NCPFS_IOCTL_LOCKING is not set
-+# CONFIG_NCPFS_STRONG is not set
-+# CONFIG_NCPFS_NFS_NS is not set
-+# CONFIG_NCPFS_OS2_NS is not set
-+# CONFIG_NCPFS_SMALLDOS is not set
-+# CONFIG_NCPFS_NLS is not set
-+# CONFIG_NCPFS_EXTRAS is not set
-+# CONFIG_ZISOFS_FS is not set
-+
-+#
-+# Partition Types
-+#
-+# CONFIG_PARTITION_ADVANCED is not set
-+CONFIG_MSDOS_PARTITION=y
-+# CONFIG_SMB_NLS is not set
-+CONFIG_NLS=y
-+
-+#
-+# Native Language Support
-+#
-+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_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
-+
-+#
-+# Multimedia devices
-+#
-+# CONFIG_VIDEO_DEV is not set
-+
-+#
-+# Console drivers
-+#
-+# CONFIG_VGA_CONSOLE is not set
-+# CONFIG_MDA_CONSOLE is not set
-+
-+#
-+# Frame-buffer support
-+#
-+CONFIG_FB=y
-+CONFIG_DUMMY_CONSOLE=y
-+# CONFIG_FB_CYBER2000 is not set
-+# CONFIG_FB_VIRTUAL is not set
-+CONFIG_FBCON_ADVANCED=y
-+# CONFIG_FBCON_MFB is not set
-+# CONFIG_FBCON_CFB2 is not set
-+# CONFIG_FBCON_CFB4 is not set
-+# CONFIG_FBCON_CFB8 is not set
-+CONFIG_FBCON_CFB16=y
-+# CONFIG_FBCON_CFB24 is not set
-+# CONFIG_FBCON_CFB32 is not set
-+# CONFIG_FBCON_AFB is not set
-+# CONFIG_FBCON_ILBM is not set
-+# CONFIG_FBCON_IPLAN2P2 is not set
-+# CONFIG_FBCON_IPLAN2P4 is not set
-+# CONFIG_FBCON_IPLAN2P8 is not set
-+# CONFIG_FBCON_MAC is not set
-+# CONFIG_FBCON_VGA_PLANES is not set
-+# CONFIG_FBCON_VGA is not set
-+# CONFIG_FBCON_HGA is not set
-+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-+CONFIG_FBCON_FONTS=y
-+CONFIG_FONT_8x8=y
-+CONFIG_FONT_8x16=y
-+# CONFIG_FONT_SUN8x16 is not set
-+# CONFIG_FONT_SUN12x22 is not set
-+# CONFIG_FONT_6x11 is not set
-+# CONFIG_FONT_PEARL_8x8 is not set
-+# CONFIG_FONT_ACORN_8x8 is not set
-+
-+#
-+# Sound
-+#
-+CONFIG_SOUND=y
-+# CONFIG_SOUND_ALI5455 is not set
-+# CONFIG_SOUND_BT878 is not set
-+# CONFIG_SOUND_CMPCI is not set
-+# CONFIG_SOUND_EMU10K1 is not set
-+# CONFIG_MIDI_EMU10K1 is not set
-+# CONFIG_SOUND_FUSION is not set
-+# CONFIG_SOUND_CS4281 is not set
-+# CONFIG_SOUND_ES1370 is not set
-+# CONFIG_SOUND_ES1371 is not set
-+# CONFIG_SOUND_ESSSOLO1 is not set
-+# CONFIG_SOUND_MAESTRO is not set
-+# CONFIG_SOUND_MAESTRO3 is not set
-+# CONFIG_SOUND_FORTE is not set
-+# CONFIG_SOUND_ICH is not set
-+# CONFIG_SOUND_RME96XX is not set
-+# CONFIG_SOUND_SONICVIBES is not set
-+# CONFIG_SOUND_TRIDENT is not set
-+# CONFIG_SOUND_MSNDCLAS is not set
-+# CONFIG_SOUND_MSNDPIN is not set
-+# CONFIG_SOUND_VIA82CXXX is not set
-+# CONFIG_MIDI_VIA82CXXX is not set
-+# CONFIG_SOUND_OSS is not set
-+# CONFIG_SOUND_TVMIXER is not set
-+# CONFIG_SOUND_AD1980 is not set
-+# CONFIG_SOUND_WM97XX is not set
-+
-+#
-+# USB support
-+#
-+# CONFIG_USB is not set
-+
-+#
-+# Support for USB gadgets
-+#
-+# CONFIG_USB_GADGET is not set
-+
-+#
-+# Bluetooth support
-+#
-+# CONFIG_BLUEZ is not set
-+
-+#
-+# Kernel hacking
-+#
-+CONFIG_CROSSCOMPILE=y
-+# CONFIG_RUNTIME_DEBUG is not set
-+# CONFIG_KGDB is not set
-+# CONFIG_GDB_CONSOLE is not set
-+# CONFIG_DEBUG_INFO is not set
-+# CONFIG_MAGIC_SYSRQ is not set
-+# CONFIG_MIPS_UNCACHED is not set
-+CONFIG_LOG_BUF_SHIFT=0
-+
-+#
-+# Cryptographic options
-+#
-+# CONFIG_CRYPTO is not set
-+
-+#
-+# Library routines
-+#
-+# CONFIG_CRC32 is not set
-+CONFIG_ZLIB_INFLATE=m
-+CONFIG_ZLIB_DEFLATE=m
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-hp-lj linux-2.4.32-rc1.mips/arch/mips/defconfig-hp-lj
---- linux-2.4.32-rc1/arch/mips/defconfig-hp-lj 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-hp-lj 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -184,8 +184,8 @@
- # Mapping drivers for chip access
- #
- CONFIG_MTD_PHYSMAP=y
--CONFIG_MTD_PHYSMAP_START=10040000
--CONFIG_MTD_PHYSMAP_LEN=00fc0000
-+CONFIG_MTD_PHYSMAP_START=0x10040000
-+CONFIG_MTD_PHYSMAP_LEN=0x00fc0000
- CONFIG_MTD_PHYSMAP_BUSWIDTH=4
- # CONFIG_MTD_PB1000 is not set
- # CONFIG_MTD_PB1500 is not set
-@@ -193,9 +193,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -214,7 +212,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -304,11 +301,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -604,7 +596,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_UNIX98_PTYS is not set
-
- #
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-hydrogen3 linux-2.4.32-rc1.mips/arch/mips/defconfig-hydrogen3
---- linux-2.4.32-rc1/arch/mips/defconfig-hydrogen3 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-hydrogen3 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--CONFIG_MIPS_HYDROGEN3=y
- # CONFIG_MIPS_PB1550 is not set
-+CONFIG_MIPS_HYDROGEN3=y
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -214,9 +214,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--CONFIG_MTD_HYDROGEN3=y
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -235,7 +233,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -340,11 +337,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -590,7 +582,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--CONFIG_MIPS_HYDROGEN3_BUTTONS=y
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-@@ -838,6 +829,7 @@
- # CONFIG_FB_PM2 is not set
- # CONFIG_FB_PM3 is not set
- # CONFIG_FB_CYBER2000 is not set
-+CONFIG_FB_AU1100=y
- # CONFIG_FB_MATROX is not set
- # CONFIG_FB_ATY is not set
- # CONFIG_FB_RADEON is not set
-@@ -849,7 +841,6 @@
- # CONFIG_FB_VOODOO1 is not set
- # CONFIG_FB_TRIDENT is not set
- # CONFIG_FB_E1356 is not set
--CONFIG_FB_AU1100=y
- # CONFIG_FB_IT8181 is not set
- # CONFIG_FB_VIRTUAL is not set
- CONFIG_FBCON_ADVANCED=y
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-ip22 linux-2.4.32-rc1.mips/arch/mips/defconfig-ip22
---- linux-2.4.32-rc1/arch/mips/defconfig-ip22 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-ip22 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -235,11 +235,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -319,9 +314,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -465,7 +462,6 @@
- # CONFIG_SERIAL is not set
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-it8172 linux-2.4.32-rc1.mips/arch/mips/defconfig-it8172
---- linux-2.4.32-rc1/arch/mips/defconfig-it8172 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-it8172 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -186,8 +186,8 @@
- # Mapping drivers for chip access
- #
- CONFIG_MTD_PHYSMAP=y
--CONFIG_MTD_PHYSMAP_START=8000000
--CONFIG_MTD_PHYSMAP_LEN=2000000
-+CONFIG_MTD_PHYSMAP_START=0x8000000
-+CONFIG_MTD_PHYSMAP_LEN=0x2000000
- CONFIG_MTD_PHYSMAP_BUSWIDTH=4
- # CONFIG_MTD_PB1000 is not set
- # CONFIG_MTD_PB1500 is not set
-@@ -195,9 +195,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -216,7 +214,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -304,11 +301,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -592,7 +584,6 @@
- CONFIG_PC_KEYB=y
- # CONFIG_IT8172_SCR0 is not set
- # CONFIG_IT8172_SCR1 is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-ivr linux-2.4.32-rc1.mips/arch/mips/defconfig-ivr
---- linux-2.4.32-rc1/arch/mips/defconfig-ivr 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-ivr 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -226,11 +226,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -516,7 +511,6 @@
- CONFIG_QTRONIX_KEYBOARD=y
- CONFIG_IT8172_CIR=y
- # CONFIG_IT8172_SCR0 is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-jmr3927 linux-2.4.32-rc1.mips/arch/mips/defconfig-jmr3927
---- linux-2.4.32-rc1/arch/mips/defconfig-jmr3927 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-jmr3927 2005-03-18 13:13:21.000000000 +0100
-@@ -28,8 +28,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -225,11 +225,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -454,7 +449,6 @@
- # CONFIG_SERIAL_TXX9_CONSOLE is not set
- CONFIG_TXX927_SERIAL=y
- CONFIG_TXX927_SERIAL_CONSOLE=y
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_UNIX98_PTYS is not set
-
- #
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-lasat linux-2.4.32-rc1.mips/arch/mips/defconfig-lasat
---- linux-2.4.32-rc1/arch/mips/defconfig-lasat 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-lasat 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -198,9 +198,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -219,7 +217,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -303,11 +300,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -584,7 +576,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-malta linux-2.4.32-rc1.mips/arch/mips/defconfig-malta
---- linux-2.4.32-rc1/arch/mips/defconfig-malta 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-malta 2005-04-19 14:19:34.000000000 +0200
-@@ -22,16 +22,19 @@
- #
- # CONFIG_ACER_PICA_61 is not set
- # CONFIG_MIPS_BOSPORUS is not set
-+# CONFIG_MIPS_FICMMP is not set
- # CONFIG_MIPS_MIRAGE is not set
- # CONFIG_MIPS_DB1000 is not set
- # CONFIG_MIPS_DB1100 is not set
- # CONFIG_MIPS_DB1500 is not set
- # CONFIG_MIPS_DB1550 is not set
-+# CONFIG_MIPS_DB1200 is not set
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_PB1200 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -237,11 +240,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -273,8 +271,83 @@
- #
- # ATA/IDE/MFM/RLL support
- #
--# CONFIG_IDE is not set
-+CONFIG_IDE=y
-+
-+#
-+# IDE, ATA and ATAPI Block devices
-+#
-+CONFIG_BLK_DEV_IDE=y
-+
-+#
-+# Please see Documentation/ide.txt for help/info on IDE drives
-+#
-+# CONFIG_BLK_DEV_HD_IDE is not set
- # CONFIG_BLK_DEV_HD is not set
-+# CONFIG_BLK_DEV_IDE_SATA is not set
-+CONFIG_BLK_DEV_IDEDISK=y
-+# CONFIG_IDEDISK_MULTI_MODE is not set
-+# CONFIG_IDEDISK_STROKE is not set
-+# CONFIG_BLK_DEV_IDECS is not set
-+# CONFIG_BLK_DEV_DELKIN is not set
-+CONFIG_BLK_DEV_IDECD=y
-+CONFIG_BLK_DEV_IDETAPE=y
-+CONFIG_BLK_DEV_IDEFLOPPY=y
-+CONFIG_BLK_DEV_IDESCSI=y
-+# CONFIG_IDE_TASK_IOCTL is not set
-+
-+#
-+# IDE chipset support/bugfixes
-+#
-+# CONFIG_BLK_DEV_CMD640 is not set
-+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-+# CONFIG_BLK_DEV_ISAPNP is not set
-+CONFIG_BLK_DEV_IDEPCI=y
-+CONFIG_BLK_DEV_GENERIC=y
-+CONFIG_IDEPCI_SHARE_IRQ=y
-+CONFIG_BLK_DEV_IDEDMA_PCI=y
-+# CONFIG_BLK_DEV_OFFBOARD is not set
-+CONFIG_BLK_DEV_IDEDMA_FORCED=y
-+CONFIG_IDEDMA_PCI_AUTO=y
-+# CONFIG_IDEDMA_ONLYDISK is not set
-+CONFIG_BLK_DEV_IDEDMA=y
-+# CONFIG_IDEDMA_PCI_WIP is not set
-+# CONFIG_BLK_DEV_ADMA100 is not set
-+# CONFIG_BLK_DEV_AEC62XX is not set
-+# CONFIG_BLK_DEV_ALI15X3 is not set
-+# CONFIG_WDC_ALI15X3 is not set
-+# CONFIG_BLK_DEV_AMD74XX is not set
-+# CONFIG_AMD74XX_OVERRIDE 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_CS5530 is not set
-+# CONFIG_BLK_DEV_HPT34X is not set
-+# CONFIG_HPT34X_AUTODMA is not set
-+# CONFIG_BLK_DEV_HPT366 is not set
-+CONFIG_BLK_DEV_PIIX=y
-+# CONFIG_BLK_DEV_NS87415 is not set
-+# CONFIG_BLK_DEV_OPTI621 is not set
-+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-+# CONFIG_PDC202XX_BURST is not set
-+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-+# CONFIG_BLK_DEV_RZ1000 is not set
-+# CONFIG_BLK_DEV_SC1200 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_IDE_CHIPSETS is not set
-+CONFIG_IDEDMA_AUTO=y
-+# CONFIG_IDEDMA_IVB is not set
-+# CONFIG_DMA_NONPCI is not set
-+# CONFIG_BLK_DEV_ATARAID is not set
-+# CONFIG_BLK_DEV_ATARAID_PDC is not set
-+# CONFIG_BLK_DEV_ATARAID_HPT is not set
-+# CONFIG_BLK_DEV_ATARAID_MEDLEY is not set
-+# CONFIG_BLK_DEV_ATARAID_SII is not set
-
- #
- # SCSI support
-@@ -319,9 +392,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -524,7 +599,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-mirage linux-2.4.32-rc1.mips/arch/mips/defconfig-mirage
---- linux-2.4.32-rc1/arch/mips/defconfig-mirage 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-mirage 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -209,9 +209,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- CONFIG_MTD_MIRAGE=y
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -230,7 +228,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -335,11 +332,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -560,7 +552,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-mpc30x linux-2.4.32-rc1.mips/arch/mips/defconfig-mpc30x
---- linux-2.4.32-rc1/arch/mips/defconfig-mpc30x 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-mpc30x 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -228,11 +228,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -400,7 +395,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_VR41XX_KIU is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-mtx-1 linux-2.4.32-rc1.mips/arch/mips/defconfig-mtx-1
---- linux-2.4.32-rc1/arch/mips/defconfig-mtx-1 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-mtx-1 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- CONFIG_MIPS_MTX1=y
- # CONFIG_COGENT_CSB250 is not set
-@@ -193,9 +193,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- CONFIG_MTD_MTX1=y
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -214,7 +212,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -371,11 +368,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- CONFIG_BRIDGE=m
- # CONFIG_X25 is not set
-@@ -479,9 +471,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -700,7 +694,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-nino linux-2.4.32-rc1.mips/arch/mips/defconfig-nino
---- linux-2.4.32-rc1/arch/mips/defconfig-nino 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-nino 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -226,11 +226,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -339,7 +334,6 @@
- # CONFIG_SERIAL_TXX9 is not set
- # CONFIG_SERIAL_TXX9_CONSOLE is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_UNIX98_PTYS is not set
-
- #
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-ocelot linux-2.4.32-rc1.mips/arch/mips/defconfig-ocelot
---- linux-2.4.32-rc1/arch/mips/defconfig-ocelot 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-ocelot 2005-03-18 13:13:21.000000000 +0100
-@@ -28,8 +28,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -194,9 +194,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- CONFIG_MTD_OCELOT=y
-@@ -215,7 +213,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- CONFIG_MTD_DOC2000=y
- # CONFIG_MTD_DOC2001 is not set
- CONFIG_MTD_DOCPROBE=y
-@@ -307,11 +304,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -513,7 +505,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-osprey linux-2.4.32-rc1.mips/arch/mips/defconfig-osprey
---- linux-2.4.32-rc1/arch/mips/defconfig-osprey 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-osprey 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -227,11 +227,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -388,7 +383,6 @@
- # CONFIG_SERIAL_MULTIPORT is not set
- # CONFIG_HUB6 is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_VR41XX_KIU is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-pb1000 linux-2.4.32-rc1.mips/arch/mips/defconfig-pb1000
---- linux-2.4.32-rc1/arch/mips/defconfig-pb1000 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-pb1000 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- CONFIG_MIPS_PB1000=y
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -215,9 +215,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -236,7 +234,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -324,11 +321,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -622,7 +614,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-@@ -707,7 +698,7 @@
- #
- # CONFIG_PCMCIA_SERIAL_CS is not set
- # CONFIG_SYNCLINK_CS is not set
--CONFIG_AU1X00_GPIO=m
-+CONFIG_AU1X00_GPIO=y
- # CONFIG_TS_AU1X00_ADS7846 is not set
-
- #
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-pb1100 linux-2.4.32-rc1.mips/arch/mips/defconfig-pb1100
---- linux-2.4.32-rc1/arch/mips/defconfig-pb1100 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-pb1100 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- CONFIG_MIPS_PB1100=y
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -198,9 +198,7 @@
- # CONFIG_MTD_MTX1 is not set
- CONFIG_MTD_PB1500_BOOT=y
- CONFIG_MTD_PB1500_USER=y
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -219,7 +217,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -324,11 +321,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -613,7 +605,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-@@ -859,6 +850,7 @@
- # CONFIG_FB_PM2 is not set
- # CONFIG_FB_PM3 is not set
- # CONFIG_FB_CYBER2000 is not set
-+CONFIG_FB_AU1100=y
- # CONFIG_FB_MATROX is not set
- # CONFIG_FB_ATY is not set
- # CONFIG_FB_RADEON is not set
-@@ -870,7 +862,6 @@
- # CONFIG_FB_VOODOO1 is not set
- # CONFIG_FB_TRIDENT is not set
- # CONFIG_FB_E1356 is not set
--CONFIG_FB_AU1100=y
- # CONFIG_FB_IT8181 is not set
- # CONFIG_FB_VIRTUAL is not set
- CONFIG_FBCON_ADVANCED=y
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-pb1200 linux-2.4.32-rc1.mips/arch/mips/defconfig-pb1200
---- linux-2.4.32-rc1/arch/mips/defconfig-pb1200 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-pb1200 2005-03-18 13:13:21.000000000 +0100
-@@ -0,0 +1,1060 @@
-+#
-+# Automatically generated make config: don't edit
-+#
-+CONFIG_MIPS=y
-+CONFIG_MIPS32=y
-+# CONFIG_MIPS64 is not set
-+
-+#
-+# Code maturity level options
-+#
-+CONFIG_EXPERIMENTAL=y
-+
-+#
-+# Loadable module support
-+#
-+CONFIG_MODULES=y
-+# CONFIG_MODVERSIONS is not set
-+CONFIG_KMOD=y
-+
-+#
-+# Machine selection
-+#
-+# CONFIG_ACER_PICA_61 is not set
-+# CONFIG_MIPS_BOSPORUS is not set
-+# CONFIG_MIPS_MIRAGE is not set
-+# CONFIG_MIPS_DB1000 is not set
-+# CONFIG_MIPS_DB1100 is not set
-+# CONFIG_MIPS_DB1500 is not set
-+# CONFIG_MIPS_DB1550 is not set
-+# CONFIG_MIPS_PB1000 is not set
-+# CONFIG_MIPS_PB1100 is not set
-+# CONFIG_MIPS_PB1500 is not set
-+# CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
-+# CONFIG_MIPS_XXS1500 is not set
-+# CONFIG_MIPS_MTX1 is not set
-+# CONFIG_COGENT_CSB250 is not set
-+# CONFIG_BAGET_MIPS is not set
-+# CONFIG_CASIO_E55 is not set
-+# CONFIG_MIPS_COBALT is not set
-+# CONFIG_DECSTATION is not set
-+# CONFIG_MIPS_EV64120 is not set
-+# CONFIG_MIPS_EV96100 is not set
-+# CONFIG_MIPS_IVR is not set
-+# CONFIG_HP_LASERJET is not set
-+# CONFIG_IBM_WORKPAD is not set
-+# CONFIG_LASAT is not set
-+# CONFIG_MIPS_ITE8172 is not set
-+# CONFIG_MIPS_ATLAS is not set
-+# CONFIG_MIPS_MAGNUM_4000 is not set
-+# CONFIG_MIPS_MALTA is not set
-+# CONFIG_MIPS_SEAD is not set
-+# CONFIG_MOMENCO_OCELOT is not set
-+# CONFIG_MOMENCO_OCELOT_G is not set
-+# CONFIG_MOMENCO_OCELOT_C is not set
-+# CONFIG_MOMENCO_JAGUAR_ATX is not set
-+# CONFIG_PMC_BIG_SUR is not set
-+# CONFIG_PMC_STRETCH is not set
-+# CONFIG_PMC_YOSEMITE is not set
-+# CONFIG_DDB5074 is not set
-+# CONFIG_DDB5476 is not set
-+# CONFIG_DDB5477 is not set
-+# CONFIG_NEC_OSPREY is not set
-+# CONFIG_NEC_EAGLE is not set
-+# CONFIG_OLIVETTI_M700 is not set
-+# CONFIG_NINO is not set
-+# CONFIG_SGI_IP22 is not set
-+# CONFIG_SGI_IP27 is not set
-+# CONFIG_SIBYTE_SB1xxx_SOC is not set
-+# CONFIG_SNI_RM200_PCI is not set
-+# CONFIG_TANBAC_TB0226 is not set
-+# CONFIG_TANBAC_TB0229 is not set
-+# CONFIG_TOSHIBA_JMR3927 is not set
-+# CONFIG_TOSHIBA_RBTX4927 is not set
-+# CONFIG_VICTOR_MPC30X is not set
-+# CONFIG_ZAO_CAPCELLA is not set
-+# CONFIG_HIGHMEM is not set
-+CONFIG_RWSEM_GENERIC_SPINLOCK=y
-+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-+CONFIG_SOC_AU1X00=y
-+CONFIG_SOC_AU1200=y
-+CONFIG_NONCOHERENT_IO=y
-+CONFIG_PC_KEYB=y
-+# CONFIG_MIPS_AU1000 is not set
-+
-+#
-+# CPU selection
-+#
-+CONFIG_CPU_MIPS32=y
-+# CONFIG_CPU_MIPS64 is not set
-+# CONFIG_CPU_R3000 is not set
-+# CONFIG_CPU_TX39XX is not set
-+# CONFIG_CPU_VR41XX is not set
-+# CONFIG_CPU_R4300 is not set
-+# CONFIG_CPU_R4X00 is not set
-+# CONFIG_CPU_TX49XX is not set
-+# CONFIG_CPU_R5000 is not set
-+# CONFIG_CPU_R5432 is not set
-+# CONFIG_CPU_R6000 is not set
-+# CONFIG_CPU_NEVADA is not set
-+# CONFIG_CPU_R8000 is not set
-+# CONFIG_CPU_R10000 is not set
-+# CONFIG_CPU_RM7000 is not set
-+# CONFIG_CPU_RM9000 is not set
-+# CONFIG_CPU_SB1 is not set
-+CONFIG_PAGE_SIZE_4KB=y
-+# CONFIG_PAGE_SIZE_16KB is not set
-+# CONFIG_PAGE_SIZE_64KB is not set
-+CONFIG_CPU_HAS_PREFETCH=y
-+# CONFIG_VTAG_ICACHE is not set
-+CONFIG_64BIT_PHYS_ADDR=y
-+# CONFIG_CPU_ADVANCED is not set
-+CONFIG_CPU_HAS_LLSC=y
-+# CONFIG_CPU_HAS_LLDSCD is not set
-+# CONFIG_CPU_HAS_WB is not set
-+CONFIG_CPU_HAS_SYNC=y
-+
-+#
-+# General setup
-+#
-+CONFIG_CPU_LITTLE_ENDIAN=y
-+# CONFIG_BUILD_ELF64 is not set
-+CONFIG_NET=y
-+CONFIG_PCI=y
-+CONFIG_PCI_NEW=y
-+CONFIG_PCI_AUTO=y
-+# CONFIG_PCI_NAMES is not set
-+# CONFIG_ISA is not set
-+# CONFIG_TC is not set
-+# CONFIG_MCA is not set
-+# CONFIG_SBUS is not set
-+CONFIG_HOTPLUG=y
-+
-+#
-+# PCMCIA/CardBus support
-+#
-+CONFIG_PCMCIA=m
-+# CONFIG_CARDBUS is not set
-+# CONFIG_TCIC is not set
-+# CONFIG_I82092 is not set
-+# CONFIG_I82365 is not set
-+CONFIG_PCMCIA_AU1X00=m
-+
-+#
-+# PCI Hotplug Support
-+#
-+# CONFIG_HOTPLUG_PCI is not set
-+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
-+# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
-+# CONFIG_HOTPLUG_PCI_SHPC is not set
-+# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set
-+# CONFIG_HOTPLUG_PCI_PCIE is not set
-+# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set
-+CONFIG_SYSVIPC=y
-+# CONFIG_BSD_PROCESS_ACCT is not set
-+CONFIG_SYSCTL=y
-+CONFIG_KCORE_ELF=y
-+# CONFIG_KCORE_AOUT is not set
-+# CONFIG_BINFMT_AOUT is not set
-+CONFIG_BINFMT_ELF=y
-+# CONFIG_MIPS32_COMPAT is not set
-+# CONFIG_MIPS32_O32 is not set
-+# CONFIG_MIPS32_N32 is not set
-+# CONFIG_BINFMT_ELF32 is not set
-+# CONFIG_BINFMT_MISC is not set
-+# CONFIG_OOM_KILLER is not set
-+CONFIG_CMDLINE_BOOL=y
-+CONFIG_CMDLINE="mem=96M"
-+# CONFIG_PM is not set
-+
-+#
-+# Memory Technology Devices (MTD)
-+#
-+# CONFIG_MTD is not set
-+
-+#
-+# Parallel port support
-+#
-+# CONFIG_PARPORT is not set
-+
-+#
-+# Plug and Play configuration
-+#
-+# CONFIG_PNP is not set
-+# CONFIG_ISAPNP is not set
-+
-+#
-+# Block devices
-+#
-+# CONFIG_BLK_DEV_FD is not set
-+# 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_CISS_SCSI_TAPE is not set
-+# CONFIG_CISS_MONITOR_THREAD is not set
-+# CONFIG_BLK_DEV_DAC960 is not set
-+# CONFIG_BLK_DEV_UMEM is not set
-+# CONFIG_BLK_DEV_SX8 is not set
-+CONFIG_BLK_DEV_LOOP=y
-+# CONFIG_BLK_DEV_NBD is not set
-+# CONFIG_BLK_DEV_RAM is not set
-+# CONFIG_BLK_DEV_INITRD is not set
-+# CONFIG_BLK_STATS is not set
-+
-+#
-+# Multi-device support (RAID and LVM)
-+#
-+# CONFIG_MD is not set
-+# CONFIG_BLK_DEV_MD is not set
-+# CONFIG_MD_LINEAR is not set
-+# CONFIG_MD_RAID0 is not set
-+# CONFIG_MD_RAID1 is not set
-+# CONFIG_MD_RAID5 is not set
-+# CONFIG_MD_MULTIPATH is not set
-+# CONFIG_BLK_DEV_LVM is not set
-+
-+#
-+# Networking options
-+#
-+CONFIG_PACKET=y
-+# CONFIG_PACKET_MMAP is not set
-+# CONFIG_NETLINK_DEV is not set
-+CONFIG_NETFILTER=y
-+# CONFIG_NETFILTER_DEBUG is not set
-+CONFIG_FILTER=y
-+CONFIG_UNIX=y
-+CONFIG_INET=y
-+CONFIG_IP_MULTICAST=y
-+# CONFIG_IP_ADVANCED_ROUTER is not set
-+CONFIG_IP_PNP=y
-+# CONFIG_IP_PNP_DHCP is not set
-+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_IP_MROUTE is not set
-+# CONFIG_ARPD is not set
-+# CONFIG_INET_ECN is not set
-+# CONFIG_SYN_COOKIES is not set
-+
-+#
-+# IP: Netfilter Configuration
-+#
-+# CONFIG_IP_NF_CONNTRACK is not set
-+# CONFIG_IP_NF_QUEUE is not set
-+# CONFIG_IP_NF_IPTABLES is not set
-+# CONFIG_IP_NF_ARPTABLES is not set
-+# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-+
-+#
-+# IP: Virtual Server Configuration
-+#
-+# CONFIG_IP_VS is not set
-+# CONFIG_IPV6 is not set
-+# CONFIG_KHTTPD is not set
-+
-+#
-+# SCTP Configuration (EXPERIMENTAL)
-+#
-+# CONFIG_IP_SCTP is not set
-+# CONFIG_ATM is not set
-+# CONFIG_VLAN_8021Q is not set
-+
-+#
-+#
-+#
-+# CONFIG_IPX is not set
-+# CONFIG_ATALK is not set
-+# CONFIG_DECNET is not set
-+# CONFIG_BRIDGE is not set
-+# CONFIG_X25 is not set
-+# CONFIG_LAPB is not set
-+# CONFIG_LLC is not set
-+# CONFIG_NET_DIVERT is not set
-+# CONFIG_ECONET is not set
-+# CONFIG_WAN_ROUTER is not set
-+# CONFIG_NET_FASTROUTE is not set
-+# CONFIG_NET_HW_FLOWCONTROL is not set
-+
-+#
-+# QoS and/or fair queueing
-+#
-+# CONFIG_NET_SCHED is not set
-+
-+#
-+# Network testing
-+#
-+# CONFIG_NET_PKTGEN is not set
-+
-+#
-+# Telephony Support
-+#
-+# CONFIG_PHONE is not set
-+# CONFIG_PHONE_IXJ is not set
-+# CONFIG_PHONE_IXJ_PCMCIA is not set
-+
-+#
-+# ATA/IDE/MFM/RLL support
-+#
-+CONFIG_IDE=y
-+
-+#
-+# IDE, ATA and ATAPI Block devices
-+#
-+CONFIG_BLK_DEV_IDE=y
-+
-+#
-+# Please see Documentation/ide.txt for help/info on IDE drives
-+#
-+# CONFIG_BLK_DEV_HD_IDE is not set
-+# CONFIG_BLK_DEV_HD is not set
-+# CONFIG_BLK_DEV_IDE_SATA is not set
-+CONFIG_BLK_DEV_IDEDISK=y
-+CONFIG_IDEDISK_MULTI_MODE=y
-+CONFIG_IDEDISK_STROKE=y
-+CONFIG_BLK_DEV_IDECS=m
-+# CONFIG_BLK_DEV_DELKIN is not set
-+# 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_BLK_DEV_CMD640 is not set
-+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-+# CONFIG_BLK_DEV_ISAPNP is not set
-+# CONFIG_BLK_DEV_IDEPCI is not set
-+# CONFIG_IDE_CHIPSETS is not set
-+# CONFIG_IDEDMA_AUTO is not set
-+# CONFIG_DMA_NONPCI is not set
-+# CONFIG_BLK_DEV_ATARAID is not set
-+# CONFIG_BLK_DEV_ATARAID_PDC is not set
-+# CONFIG_BLK_DEV_ATARAID_HPT is not set
-+# CONFIG_BLK_DEV_ATARAID_MEDLEY is not set
-+# CONFIG_BLK_DEV_ATARAID_SII is not set
-+
-+#
-+# SCSI support
-+#
-+CONFIG_SCSI=y
-+
-+#
-+# SCSI support type (disk, tape, CD-ROM)
-+#
-+CONFIG_BLK_DEV_SD=y
-+CONFIG_SD_EXTRA_DEVS=40
-+CONFIG_CHR_DEV_ST=y
-+# CONFIG_CHR_DEV_OSST is not set
-+CONFIG_BLK_DEV_SR=y
-+# CONFIG_BLK_DEV_SR_VENDOR is not set
-+CONFIG_SR_EXTRA_DEVS=2
-+# CONFIG_CHR_DEV_SG is not set
-+
-+#
-+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-+#
-+# CONFIG_SCSI_DEBUG_QUEUES is not set
-+# CONFIG_SCSI_MULTI_LUN is not set
-+CONFIG_SCSI_CONSTANTS=y
-+# CONFIG_SCSI_LOGGING is not set
-+
-+#
-+# SCSI low-level drivers
-+#
-+# CONFIG_BLK_DEV_3W_XXXX_RAID 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_AHA1740 is not set
-+# CONFIG_SCSI_AACRAID is not set
-+# CONFIG_SCSI_AIC7XXX is not set
-+# CONFIG_SCSI_AIC79XX is not set
-+# CONFIG_SCSI_AIC7XXX_OLD is not set
-+# CONFIG_SCSI_DPT_I2O is not set
-+# CONFIG_SCSI_ADVANSYS is not set
-+# CONFIG_SCSI_IN2000 is not set
-+# CONFIG_SCSI_AM53C974 is not set
-+# CONFIG_SCSI_MEGARAID is not set
-+# CONFIG_SCSI_MEGARAID2 is not set
-+# CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
-+# CONFIG_SCSI_SATA_SVW is not set
-+# CONFIG_SCSI_ATA_PIIX is not set
-+# CONFIG_SCSI_SATA_NV 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_SIS is not set
-+# CONFIG_SCSI_SATA_ULI is not set
-+# CONFIG_SCSI_SATA_VIA is not set
-+# CONFIG_SCSI_SATA_VITESSE is not set
-+# CONFIG_SCSI_BUSLOGIC is not set
-+# CONFIG_SCSI_CPQFCTS is not set
-+# CONFIG_SCSI_DMX3191D is not set
-+# CONFIG_SCSI_DTC3280 is not set
-+# CONFIG_SCSI_EATA is not set
-+# CONFIG_SCSI_EATA_DMA is not set
-+# CONFIG_SCSI_EATA_PIO 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_INITIO is not set
-+# CONFIG_SCSI_INIA100 is not set
-+# CONFIG_SCSI_NCR53C406A is not set
-+# CONFIG_SCSI_NCR53C7xx is not set
-+# CONFIG_SCSI_SYM53C8XX_2 is not set
-+# CONFIG_SCSI_NCR53C8XX is not set
-+# CONFIG_SCSI_SYM53C8XX is not set
-+# CONFIG_SCSI_PAS16 is not set
-+# CONFIG_SCSI_PCI2000 is not set
-+# CONFIG_SCSI_PCI2220I is not set
-+# CONFIG_SCSI_PSI240I is not set
-+# CONFIG_SCSI_QLOGIC_FAS is not set
-+# CONFIG_SCSI_QLOGIC_ISP is not set
-+# CONFIG_SCSI_QLOGIC_FC is not set
-+# CONFIG_SCSI_QLOGIC_1280 is not set
-+# CONFIG_SCSI_SIM710 is not set
-+# CONFIG_SCSI_SYM53C416 is not set
-+# CONFIG_SCSI_DC390T is not set
-+# CONFIG_SCSI_T128 is not set
-+# CONFIG_SCSI_U14_34F is not set
-+# CONFIG_SCSI_NSP32 is not set
-+# CONFIG_SCSI_DEBUG is not set
-+
-+#
-+# PCMCIA SCSI adapter support
-+#
-+# CONFIG_SCSI_PCMCIA is not set
-+
-+#
-+# Fusion MPT device support
-+#
-+# CONFIG_FUSION is not set
-+# CONFIG_FUSION_BOOT is not set
-+# CONFIG_FUSION_ISENSE is not set
-+# CONFIG_FUSION_CTL is not set
-+# CONFIG_FUSION_LAN is not set
-+
-+#
-+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
-+#
-+# CONFIG_IEEE1394 is not set
-+
-+#
-+# I2O device support
-+#
-+# CONFIG_I2O is not set
-+# CONFIG_I2O_PCI is not set
-+# CONFIG_I2O_BLOCK is not set
-+# CONFIG_I2O_LAN is not set
-+# CONFIG_I2O_SCSI is not set
-+# CONFIG_I2O_PROC is not set
-+
-+#
-+# Network device support
-+#
-+CONFIG_NETDEVICES=y
-+
-+#
-+# ARCnet devices
-+#
-+# CONFIG_ARCNET is not set
-+# CONFIG_DUMMY is not set
-+# CONFIG_BONDING is not set
-+# CONFIG_EQUALIZER is not set
-+# CONFIG_TUN is not set
-+# CONFIG_ETHERTAP is not set
-+
-+#
-+# Ethernet (10 or 100Mbit)
-+#
-+CONFIG_NET_ETHERNET=y
-+# CONFIG_MIPS_AU1X00_ENET is not set
-+# CONFIG_SUNLANCE is not set
-+# CONFIG_HAPPYMEAL is not set
-+# CONFIG_SUNBMAC is not set
-+# CONFIG_SUNQE is not set
-+# CONFIG_SUNGEM is not set
-+# CONFIG_NET_VENDOR_3COM is not set
-+# CONFIG_LANCE is not set
-+# CONFIG_NET_VENDOR_SMC is not set
-+# CONFIG_NET_VENDOR_RACAL is not set
-+# CONFIG_HP100 is not set
-+# CONFIG_NET_ISA is not set
-+# CONFIG_NET_PCI is not set
-+# CONFIG_NET_POCKET is not set
-+
-+#
-+# Ethernet (1000 Mbit)
-+#
-+# CONFIG_ACENIC is not set
-+# CONFIG_DL2K is not set
-+# CONFIG_E1000 is not set
-+# CONFIG_MYRI_SBUS is not set
-+# CONFIG_NS83820 is not set
-+# CONFIG_HAMACHI is not set
-+# CONFIG_YELLOWFIN is not set
-+# CONFIG_R8169 is not set
-+# CONFIG_SK98LIN is not set
-+# CONFIG_TIGON3 is not set
-+# CONFIG_FDDI is not set
-+# CONFIG_HIPPI is not set
-+# CONFIG_PLIP is not set
-+CONFIG_PPP=m
-+CONFIG_PPP_MULTILINK=y
-+# 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_PPPOE=m
-+# CONFIG_SLIP is not set
-+
-+#
-+# Wireless LAN (non-hamradio)
-+#
-+# CONFIG_NET_RADIO is not set
-+
-+#
-+# Token Ring devices
-+#
-+# CONFIG_TR is not set
-+# CONFIG_NET_FC is not set
-+# CONFIG_RCPCI is not set
-+# CONFIG_SHAPER is not set
-+
-+#
-+# Wan interfaces
-+#
-+# CONFIG_WAN is not set
-+
-+#
-+# PCMCIA network device support
-+#
-+# CONFIG_NET_PCMCIA is not set
-+
-+#
-+# Amateur Radio support
-+#
-+# CONFIG_HAMRADIO is not set
-+
-+#
-+# IrDA (infrared) support
-+#
-+# CONFIG_IRDA is not set
-+
-+#
-+# ISDN subsystem
-+#
-+# CONFIG_ISDN is not set
-+
-+#
-+# Input core support
-+#
-+CONFIG_INPUT=y
-+CONFIG_INPUT_KEYBDEV=y
-+CONFIG_INPUT_MOUSEDEV=y
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-+# CONFIG_INPUT_JOYDEV is not set
-+CONFIG_INPUT_EVDEV=y
-+# CONFIG_INPUT_UINPUT is not set
-+
-+#
-+# Character devices
-+#
-+CONFIG_VT=y
-+# CONFIG_VT_CONSOLE is not set
-+# CONFIG_SERIAL is not set
-+# CONFIG_SERIAL_EXTENDED 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_DIGI is not set
-+# CONFIG_ESPSERIAL is not set
-+# CONFIG_MOXA_INTELLIO is not set
-+# CONFIG_MOXA_SMARTIO is not set
-+# CONFIG_ISI is not set
-+# CONFIG_SYNCLINK is not set
-+# CONFIG_SYNCLINKMP is not set
-+# CONFIG_N_HDLC is not set
-+# 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
-+# CONFIG_SERIAL_TX3912 is not set
-+# CONFIG_SERIAL_TX3912_CONSOLE is not set
-+# CONFIG_SERIAL_TXX9 is not set
-+# CONFIG_SERIAL_TXX9_CONSOLE is not set
-+CONFIG_AU1X00_UART=y
-+CONFIG_AU1X00_SERIAL_CONSOLE=y
-+# CONFIG_AU1X00_USB_TTY is not set
-+# CONFIG_AU1X00_USB_RAW is not set
-+# CONFIG_TXX927_SERIAL is not set
-+CONFIG_UNIX98_PTYS=y
-+CONFIG_UNIX98_PTY_COUNT=256
-+
-+#
-+# I2C support
-+#
-+CONFIG_I2C=y
-+# CONFIG_I2C_ALGOBIT is not set
-+# CONFIG_SCx200_ACB is not set
-+# CONFIG_I2C_ALGOPCF is not set
-+# CONFIG_I2C_CHARDEV is not set
-+CONFIG_I2C_PROC=y
-+
-+#
-+# Mice
-+#
-+# CONFIG_BUSMOUSE is not set
-+# CONFIG_MOUSE is not set
-+
-+#
-+# Joysticks
-+#
-+# CONFIG_INPUT_GAMEPORT is not set
-+# CONFIG_INPUT_NS558 is not set
-+# CONFIG_INPUT_LIGHTNING is not set
-+# CONFIG_INPUT_PCIGAME is not set
-+# CONFIG_INPUT_CS461X is not set
-+# CONFIG_INPUT_EMU10K1 is not set
-+# CONFIG_INPUT_SERIO is not set
-+# CONFIG_INPUT_SERPORT is not set
-+
-+#
-+# Joysticks
-+#
-+# CONFIG_INPUT_ANALOG is not set
-+# CONFIG_INPUT_A3D is not set
-+# CONFIG_INPUT_ADI is not set
-+# CONFIG_INPUT_COBRA is not set
-+# CONFIG_INPUT_GF2K is not set
-+# CONFIG_INPUT_GRIP is not set
-+# CONFIG_INPUT_INTERACT is not set
-+# CONFIG_INPUT_TMDC is not set
-+# CONFIG_INPUT_SIDEWINDER is not set
-+# CONFIG_INPUT_IFORCE_USB is not set
-+# CONFIG_INPUT_IFORCE_232 is not set
-+# CONFIG_INPUT_WARRIOR is not set
-+# CONFIG_INPUT_MAGELLAN is not set
-+# CONFIG_INPUT_SPACEORB is not set
-+# CONFIG_INPUT_SPACEBALL is not set
-+# CONFIG_INPUT_STINGER is not set
-+# CONFIG_INPUT_DB9 is not set
-+# CONFIG_INPUT_GAMECON is not set
-+# CONFIG_INPUT_TURBOGRAFX is not set
-+# CONFIG_QIC02_TAPE is not set
-+# CONFIG_IPMI_HANDLER is not set
-+# CONFIG_IPMI_PANIC_EVENT is not set
-+# CONFIG_IPMI_DEVICE_INTERFACE is not set
-+# CONFIG_IPMI_KCS is not set
-+# CONFIG_IPMI_WATCHDOG is not set
-+
-+#
-+# Watchdog Cards
-+#
-+# CONFIG_WATCHDOG is not set
-+# CONFIG_SCx200 is not set
-+# CONFIG_SCx200_GPIO is not set
-+# CONFIG_AMD_PM768 is not set
-+# CONFIG_NVRAM is not set
-+# CONFIG_RTC 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_FTAPE is not set
-+# CONFIG_AGP is not set
-+
-+#
-+# Direct Rendering Manager (XFree86 DRI support)
-+#
-+# CONFIG_DRM is not set
-+
-+#
-+# PCMCIA character devices
-+#
-+# CONFIG_PCMCIA_SERIAL_CS is not set
-+# CONFIG_SYNCLINK_CS is not set
-+# CONFIG_AU1X00_GPIO is not set
-+# CONFIG_TS_AU1X00_ADS7846 is not set
-+
-+#
-+# File systems
-+#
-+# CONFIG_QUOTA is not set
-+# CONFIG_QFMT_V2 is not set
-+CONFIG_AUTOFS_FS=y
-+# CONFIG_AUTOFS4_FS is not set
-+# CONFIG_REISERFS_FS is not set
-+# CONFIG_REISERFS_CHECK is not set
-+# CONFIG_REISERFS_PROC_INFO is not set
-+# CONFIG_ADFS_FS is not set
-+# CONFIG_ADFS_FS_RW 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_BEFS_DEBUG is not set
-+# CONFIG_BFS_FS is not set
-+CONFIG_EXT3_FS=y
-+CONFIG_JBD=y
-+# CONFIG_JBD_DEBUG is not set
-+CONFIG_FAT_FS=y
-+CONFIG_MSDOS_FS=y
-+# CONFIG_UMSDOS_FS is not set
-+CONFIG_VFAT_FS=y
-+# CONFIG_EFS_FS is not set
-+# CONFIG_JFFS_FS is not set
-+# CONFIG_JFFS2_FS is not set
-+# CONFIG_CRAMFS is not set
-+CONFIG_TMPFS=y
-+CONFIG_RAMFS=y
-+# CONFIG_ISO9660_FS is not set
-+# CONFIG_JOLIET is not set
-+# CONFIG_ZISOFS is not set
-+# CONFIG_JFS_FS is not set
-+# CONFIG_JFS_DEBUG is not set
-+# CONFIG_JFS_STATISTICS is not set
-+# CONFIG_MINIX_FS is not set
-+# CONFIG_VXFS_FS is not set
-+# CONFIG_NTFS_FS is not set
-+# CONFIG_NTFS_RW is not set
-+# CONFIG_HPFS_FS is not set
-+CONFIG_PROC_FS=y
-+# CONFIG_DEVFS_FS is not set
-+# CONFIG_DEVFS_MOUNT is not set
-+# CONFIG_DEVFS_DEBUG is not set
-+CONFIG_DEVPTS_FS=y
-+# CONFIG_QNX4FS_FS is not set
-+# CONFIG_QNX4FS_RW is not set
-+# CONFIG_ROMFS_FS is not set
-+CONFIG_EXT2_FS=y
-+# CONFIG_SYSV_FS is not set
-+# CONFIG_UDF_FS is not set
-+# CONFIG_UDF_RW is not set
-+# CONFIG_UFS_FS is not set
-+# CONFIG_UFS_FS_WRITE is not set
-+# CONFIG_XFS_FS is not set
-+# CONFIG_XFS_QUOTA is not set
-+# CONFIG_XFS_RT is not set
-+# CONFIG_XFS_TRACE is not set
-+# CONFIG_XFS_DEBUG is not set
-+
-+#
-+# Network File Systems
-+#
-+# CONFIG_CODA_FS is not set
-+# CONFIG_INTERMEZZO_FS is not set
-+CONFIG_NFS_FS=y
-+CONFIG_NFS_V3=y
-+# CONFIG_NFS_DIRECTIO is not set
-+CONFIG_ROOT_NFS=y
-+# CONFIG_NFSD is not set
-+# CONFIG_NFSD_V3 is not set
-+# CONFIG_NFSD_TCP is not set
-+CONFIG_SUNRPC=y
-+CONFIG_LOCKD=y
-+CONFIG_LOCKD_V4=y
-+# CONFIG_SMB_FS is not set
-+# CONFIG_NCP_FS is not set
-+# CONFIG_NCPFS_PACKET_SIGNING is not set
-+# CONFIG_NCPFS_IOCTL_LOCKING is not set
-+# CONFIG_NCPFS_STRONG is not set
-+# CONFIG_NCPFS_NFS_NS is not set
-+# CONFIG_NCPFS_OS2_NS is not set
-+# CONFIG_NCPFS_SMALLDOS is not set
-+# CONFIG_NCPFS_NLS is not set
-+# CONFIG_NCPFS_EXTRAS is not set
-+# CONFIG_ZISOFS_FS is not set
-+
-+#
-+# Partition Types
-+#
-+# CONFIG_PARTITION_ADVANCED is not set
-+CONFIG_MSDOS_PARTITION=y
-+# CONFIG_SMB_NLS is not set
-+CONFIG_NLS=y
-+
-+#
-+# Native Language Support
-+#
-+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_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
-+
-+#
-+# Multimedia devices
-+#
-+# CONFIG_VIDEO_DEV is not set
-+
-+#
-+# Console drivers
-+#
-+# CONFIG_VGA_CONSOLE is not set
-+# CONFIG_MDA_CONSOLE is not set
-+
-+#
-+# Frame-buffer support
-+#
-+CONFIG_FB=y
-+CONFIG_DUMMY_CONSOLE=y
-+# CONFIG_FB_RIVA is not set
-+# CONFIG_FB_CLGEN is not set
-+# CONFIG_FB_PM2 is not set
-+# CONFIG_FB_PM3 is not set
-+# CONFIG_FB_CYBER2000 is not set
-+# CONFIG_FB_MATROX is not set
-+# CONFIG_FB_ATY is not set
-+# CONFIG_FB_RADEON is not set
-+# CONFIG_FB_ATY128 is not set
-+# CONFIG_FB_INTEL is not set
-+# CONFIG_FB_SIS is not set
-+# CONFIG_FB_NEOMAGIC is not set
-+# CONFIG_FB_3DFX is not set
-+# CONFIG_FB_VOODOO1 is not set
-+# CONFIG_FB_TRIDENT is not set
-+# CONFIG_FB_E1356 is not set
-+# CONFIG_FB_IT8181 is not set
-+# CONFIG_FB_VIRTUAL is not set
-+CONFIG_FBCON_ADVANCED=y
-+# CONFIG_FBCON_MFB is not set
-+# CONFIG_FBCON_CFB2 is not set
-+# CONFIG_FBCON_CFB4 is not set
-+# CONFIG_FBCON_CFB8 is not set
-+CONFIG_FBCON_CFB16=y
-+# CONFIG_FBCON_CFB24 is not set
-+CONFIG_FBCON_CFB32=y
-+# CONFIG_FBCON_AFB is not set
-+# CONFIG_FBCON_ILBM is not set
-+# CONFIG_FBCON_IPLAN2P2 is not set
-+# CONFIG_FBCON_IPLAN2P4 is not set
-+# CONFIG_FBCON_IPLAN2P8 is not set
-+# CONFIG_FBCON_MAC is not set
-+# CONFIG_FBCON_VGA_PLANES is not set
-+# CONFIG_FBCON_VGA is not set
-+# CONFIG_FBCON_HGA is not set
-+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-+CONFIG_FBCON_FONTS=y
-+CONFIG_FONT_8x8=y
-+CONFIG_FONT_8x16=y
-+# CONFIG_FONT_SUN8x16 is not set
-+# CONFIG_FONT_SUN12x22 is not set
-+# CONFIG_FONT_6x11 is not set
-+# CONFIG_FONT_PEARL_8x8 is not set
-+# CONFIG_FONT_ACORN_8x8 is not set
-+
-+#
-+# Sound
-+#
-+CONFIG_SOUND=y
-+# CONFIG_SOUND_ALI5455 is not set
-+# CONFIG_SOUND_BT878 is not set
-+# CONFIG_SOUND_CMPCI is not set
-+# CONFIG_SOUND_EMU10K1 is not set
-+# CONFIG_MIDI_EMU10K1 is not set
-+# CONFIG_SOUND_FUSION is not set
-+# CONFIG_SOUND_CS4281 is not set
-+# CONFIG_SOUND_ES1370 is not set
-+# CONFIG_SOUND_ES1371 is not set
-+# CONFIG_SOUND_ESSSOLO1 is not set
-+# CONFIG_SOUND_MAESTRO is not set
-+# CONFIG_SOUND_MAESTRO3 is not set
-+# CONFIG_SOUND_FORTE is not set
-+# CONFIG_SOUND_ICH is not set
-+# CONFIG_SOUND_RME96XX is not set
-+# CONFIG_SOUND_SONICVIBES is not set
-+# CONFIG_SOUND_AU1X00 is not set
-+CONFIG_SOUND_AU1550_PSC=y
-+# CONFIG_SOUND_AU1550_I2S is not set
-+# CONFIG_SOUND_TRIDENT is not set
-+# CONFIG_SOUND_MSNDCLAS is not set
-+# CONFIG_SOUND_MSNDPIN is not set
-+# CONFIG_SOUND_VIA82CXXX is not set
-+# CONFIG_MIDI_VIA82CXXX is not set
-+# CONFIG_SOUND_OSS is not set
-+# CONFIG_SOUND_TVMIXER is not set
-+# CONFIG_SOUND_AD1980 is not set
-+# CONFIG_SOUND_WM97XX is not set
-+
-+#
-+# USB support
-+#
-+CONFIG_USB=y
-+# CONFIG_USB_DEBUG is not set
-+
-+#
-+# Miscellaneous USB options
-+#
-+CONFIG_USB_DEVICEFS=y
-+# CONFIG_USB_BANDWIDTH is not set
-+
-+#
-+# USB Host Controller Drivers
-+#
-+# CONFIG_USB_EHCI_HCD is not set
-+# CONFIG_USB_UHCI is not set
-+# CONFIG_USB_UHCI_ALT is not set
-+CONFIG_USB_OHCI=y
-+
-+#
-+# USB Device Class drivers
-+#
-+# CONFIG_USB_AUDIO is not set
-+# CONFIG_USB_EMI26 is not set
-+# CONFIG_USB_BLUETOOTH is not set
-+# CONFIG_USB_MIDI is not set
-+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_HP8200e 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_ACM is not set
-+# CONFIG_USB_PRINTER is not set
-+
-+#
-+# USB Human Interface Devices (HID)
-+#
-+CONFIG_USB_HID=y
-+CONFIG_USB_HIDINPUT=y
-+CONFIG_USB_HIDDEV=y
-+# CONFIG_USB_AIPTEK is not set
-+# CONFIG_USB_WACOM is not set
-+# CONFIG_USB_KBTAB is not set
-+# CONFIG_USB_POWERMATE is not set
-+
-+#
-+# USB Imaging devices
-+#
-+# CONFIG_USB_DC2XX is not set
-+# CONFIG_USB_MDC800 is not set
-+# CONFIG_USB_SCANNER is not set
-+# CONFIG_USB_MICROTEK is not set
-+# CONFIG_USB_HPUSBSCSI is not set
-+
-+#
-+# USB Multimedia devices
-+#
-+
-+#
-+# Video4Linux support is needed for USB Multimedia device support
-+#
-+
-+#
-+# USB Network adaptors
-+#
-+# CONFIG_USB_PEGASUS is not set
-+# CONFIG_USB_RTL8150 is not set
-+# CONFIG_USB_KAWETH is not set
-+# CONFIG_USB_CATC is not set
-+# CONFIG_USB_CDCETHER is not set
-+# CONFIG_USB_USBNET is not set
-+
-+#
-+# USB port drivers
-+#
-+# CONFIG_USB_USS720 is not set
-+
-+#
-+# USB Serial Converter support
-+#
-+# CONFIG_USB_SERIAL is not set
-+
-+#
-+# USB Miscellaneous drivers
-+#
-+# CONFIG_USB_RIO500 is not set
-+# CONFIG_USB_AUERSWALD is not set
-+# CONFIG_USB_TIGL is not set
-+# CONFIG_USB_BRLVGER is not set
-+# CONFIG_USB_LCD is not set
-+
-+#
-+# Support for USB gadgets
-+#
-+# CONFIG_USB_GADGET is not set
-+
-+#
-+# Bluetooth support
-+#
-+# CONFIG_BLUEZ is not set
-+
-+#
-+# Kernel hacking
-+#
-+CONFIG_CROSSCOMPILE=y
-+# CONFIG_RUNTIME_DEBUG is not set
-+# CONFIG_KGDB is not set
-+# CONFIG_GDB_CONSOLE is not set
-+# CONFIG_DEBUG_INFO is not set
-+# CONFIG_MAGIC_SYSRQ is not set
-+# CONFIG_MIPS_UNCACHED is not set
-+CONFIG_LOG_BUF_SHIFT=0
-+
-+#
-+# Cryptographic options
-+#
-+# CONFIG_CRYPTO is not set
-+
-+#
-+# Library routines
-+#
-+# CONFIG_CRC32 is not set
-+CONFIG_ZLIB_INFLATE=m
-+CONFIG_ZLIB_DEFLATE=m
-+# CONFIG_FW_LOADER is not set
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-pb1500 linux-2.4.32-rc1.mips/arch/mips/defconfig-pb1500
---- linux-2.4.32-rc1/arch/mips/defconfig-pb1500 2005-01-19 15:09:28.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-pb1500 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- CONFIG_MIPS_PB1500=y
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -215,9 +215,7 @@
- # CONFIG_MTD_MTX1 is not set
- CONFIG_MTD_PB1500_BOOT=y
- # CONFIG_MTD_PB1500_USER is not set
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -236,7 +234,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -341,11 +338,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -675,7 +667,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-pb1550 linux-2.4.32-rc1.mips/arch/mips/defconfig-pb1550
---- linux-2.4.32-rc1/arch/mips/defconfig-pb1550 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-pb1550 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- CONFIG_MIPS_PB1550=y
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -213,11 +213,9 @@
- # CONFIG_MTD_BOSPORUS is not set
- # CONFIG_MTD_XXS1500 is not set
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- CONFIG_MTD_PB1550=y
- CONFIG_MTD_PB1550_BOOT=y
- CONFIG_MTD_PB1550_USER=y
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -236,7 +234,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -343,11 +340,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -633,7 +625,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-rbtx4927 linux-2.4.32-rc1.mips/arch/mips/defconfig-rbtx4927
---- linux-2.4.32-rc1/arch/mips/defconfig-rbtx4927 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-rbtx4927 2005-03-18 13:13:21.000000000 +0100
-@@ -28,8 +28,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -223,11 +223,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -466,7 +461,6 @@
- CONFIG_SERIAL_TXX9=y
- CONFIG_SERIAL_TXX9_CONSOLE=y
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_UNIX98_PTYS is not set
-
- #
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-rm200 linux-2.4.32-rc1.mips/arch/mips/defconfig-rm200
---- linux-2.4.32-rc1/arch/mips/defconfig-rm200 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-rm200 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -229,11 +229,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -340,7 +335,6 @@
- # CONFIG_SERIAL is not set
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-sb1250-swarm linux-2.4.32-rc1.mips/arch/mips/defconfig-sb1250-swarm
---- linux-2.4.32-rc1/arch/mips/defconfig-sb1250-swarm 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-sb1250-swarm 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -90,6 +90,7 @@
- # CONFIG_SIBYTE_TBPROF is not set
- CONFIG_SIBYTE_GENBUS_IDE=y
- CONFIG_SMP_CAPABLE=y
-+CONFIG_MIPS_RTC=y
- # CONFIG_SNI_RM200_PCI is not set
- # CONFIG_TANBAC_TB0226 is not set
- # CONFIG_TANBAC_TB0229 is not set
-@@ -253,11 +254,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -469,7 +465,6 @@
- CONFIG_SIBYTE_SB1250_DUART=y
- CONFIG_SIBYTE_SB1250_DUART_CONSOLE=y
- CONFIG_SERIAL_CONSOLE=y
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-sead linux-2.4.32-rc1.mips/arch/mips/defconfig-sead
---- linux-2.4.32-rc1/arch/mips/defconfig-sead 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-sead 2005-03-18 13:13:21.000000000 +0100
-@@ -28,8 +28,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -244,7 +244,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_UNIX98_PTYS is not set
-
- #
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-stretch linux-2.4.32-rc1.mips/arch/mips/defconfig-stretch
---- linux-2.4.32-rc1/arch/mips/defconfig-stretch 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-stretch 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -240,11 +240,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -324,9 +319,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -516,7 +513,6 @@
- # CONFIG_SERIAL_TXX9 is not set
- # CONFIG_SERIAL_TXX9_CONSOLE is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-tb0226 linux-2.4.32-rc1.mips/arch/mips/defconfig-tb0226
---- linux-2.4.32-rc1/arch/mips/defconfig-tb0226 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-tb0226 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -228,11 +228,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -312,9 +307,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -518,7 +515,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_VR41XX_KIU is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-tb0229 linux-2.4.32-rc1.mips/arch/mips/defconfig-tb0229
---- linux-2.4.32-rc1/arch/mips/defconfig-tb0229 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-tb0229 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -230,11 +230,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -445,7 +440,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_VR41XX_KIU is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-ti1500 linux-2.4.32-rc1.mips/arch/mips/defconfig-ti1500
---- linux-2.4.32-rc1/arch/mips/defconfig-ti1500 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-ti1500 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- CONFIG_MIPS_XXS1500=y
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -213,9 +213,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- CONFIG_MTD_XXS1500=y
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -234,7 +232,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -339,11 +336,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -600,7 +592,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-workpad linux-2.4.32-rc1.mips/arch/mips/defconfig-workpad
---- linux-2.4.32-rc1/arch/mips/defconfig-workpad 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-workpad 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -222,11 +222,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -426,7 +421,6 @@
- # CONFIG_SERIAL_MULTIPORT is not set
- # CONFIG_HUB6 is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_VR41XX_KIU is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-xxs1500 linux-2.4.32-rc1.mips/arch/mips/defconfig-xxs1500
---- linux-2.4.32-rc1/arch/mips/defconfig-xxs1500 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-xxs1500 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- CONFIG_MIPS_XXS1500=y
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -213,9 +213,7 @@
- # CONFIG_MTD_BOSPORUS is not set
- CONFIG_MTD_XXS1500=y
- # CONFIG_MTD_MTX1 is not set
--# CONFIG_MTD_DB1X00 is not set
- # CONFIG_MTD_PB1550 is not set
--# CONFIG_MTD_HYDROGEN3 is not set
- # CONFIG_MTD_MIRAGE is not set
- # CONFIG_MTD_CSTM_MIPS_IXX is not set
- # CONFIG_MTD_OCELOT is not set
-@@ -234,7 +232,6 @@
- #
- # Disk-On-Chip Device Drivers
- #
--# CONFIG_MTD_DOC1000 is not set
- # CONFIG_MTD_DOC2000 is not set
- # CONFIG_MTD_DOC2001 is not set
- # CONFIG_MTD_DOCPROBE is not set
-@@ -339,11 +336,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -671,7 +663,6 @@
- # CONFIG_AU1X00_USB_TTY is not set
- # CONFIG_AU1X00_USB_RAW is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/defconfig-yosemite linux-2.4.32-rc1.mips/arch/mips/defconfig-yosemite
---- linux-2.4.32-rc1/arch/mips/defconfig-yosemite 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/defconfig-yosemite 2005-03-18 13:13:21.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -227,11 +227,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -310,9 +305,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -477,7 +474,6 @@
- # CONFIG_SERIAL_TXX9 is not set
- # CONFIG_SERIAL_TXX9_CONSOLE is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips/kernel/cpu-probe.c linux-2.4.32-rc1.mips/arch/mips/kernel/cpu-probe.c
---- linux-2.4.32-rc1/arch/mips/kernel/cpu-probe.c 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/kernel/cpu-probe.c 2005-05-25 15:33:22.000000000 +0200
-@@ -34,21 +34,16 @@
- ".set\tmips0");
- }
-
--/* The Au1xxx wait is available only if we run CONFIG_PM and
-- * the timer setup found we had a 32KHz counter available.
-- * There are still problems with functions that may call au1k_wait
-- * directly, but that will be discovered pretty quickly.
-- */
--extern void (*au1k_wait_ptr)(void);
--void au1k_wait(void)
-+/* The Au1xxx wait is available only if using 32khz counter or
-+ * external timer source, but specifically not CP0 Counter. */
-+int allow_au1k_wait;
-+
-+static void au1k_wait(void)
- {
--#ifdef CONFIG_PM
-- unsigned long addr;
- /* using the wait instruction makes CP0 counter unusable */
-- __asm__("la %0,au1k_wait\n\t"
-- ".set mips3\n\t"
-- "cache 0x14,0(%0)\n\t"
-- "cache 0x14,32(%0)\n\t"
-+ __asm__(".set mips3\n\t"
-+ "cache 0x14, 0(%0)\n\t"
-+ "cache 0x14, 32(%0)\n\t"
- "sync\n\t"
- "nop\n\t"
- "wait\n\t"
-@@ -57,11 +52,7 @@
- "nop\n\t"
- "nop\n\t"
- ".set mips0\n\t"
-- : : "r" (addr));
--#else
-- __asm__("nop\n\t"
-- "nop");
--#endif
-+ : : "r" (au1k_wait));
- }
-
- static inline void check_wait(void)
-@@ -100,20 +91,17 @@
- cpu_wait = r4k_wait;
- printk(" available.\n");
- break;
--#ifdef CONFIG_PM
- case CPU_AU1000:
- case CPU_AU1100:
- case CPU_AU1500:
- case CPU_AU1550:
-- if (au1k_wait_ptr != NULL) {
-- cpu_wait = au1k_wait_ptr;
-+ case CPU_AU1200:
-+ if (allow_au1k_wait) {
-+ cpu_wait = au1k_wait;
- printk(" available.\n");
-- }
-- else {
-+ } else
- printk(" unavailable.\n");
-- }
- break;
--#endif
- default:
- printk(" unavailable.\n");
- break;
-diff -Nur linux-2.4.32-rc1/arch/mips/kernel/head.S linux-2.4.32-rc1.mips/arch/mips/kernel/head.S
---- linux-2.4.32-rc1/arch/mips/kernel/head.S 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/kernel/head.S 2004-11-22 14:38:23.000000000 +0100
-@@ -43,9 +43,9 @@
-
- /* Cache Error */
- LEAF(except_vec2_generic)
-+ .set push
- .set noreorder
- .set noat
-- .set mips0
- /*
- * This is a very bad place to be. Our cache error
- * detection has triggered. If we have write-back data
-@@ -64,10 +64,9 @@
-
- j cache_parity_error
- nop
-+ .set pop
- END(except_vec2_generic)
-
-- .set at
--
- /*
- * Special interrupt vector for embedded MIPS. This is a
- * dedicated interrupt vector which reduces interrupt processing
-@@ -76,8 +75,11 @@
- * size!
- */
- NESTED(except_vec4, 0, sp)
-+ .set push
-+ .set noreorder
- 1: j 1b /* Dummy, will be replaced */
- nop
-+ .set pop
- END(except_vec4)
-
- /*
-@@ -87,8 +89,11 @@
- * unconditional jump to this vector.
- */
- NESTED(except_vec_ejtag_debug, 0, sp)
-+ .set push
-+ .set noreorder
- j ejtag_debug_handler
- nop
-+ .set pop
- END(except_vec_ejtag_debug)
-
- __FINIT
-@@ -97,6 +102,7 @@
- * EJTAG debug exception handler.
- */
- NESTED(ejtag_debug_handler, PT_SIZE, sp)
-+ .set push
- .set noat
- .set noreorder
- mtc0 k0, CP0_DESAVE
-@@ -120,7 +126,7 @@
- deret
- .set mips0
- nop
-- .set at
-+ .set pop
- END(ejtag_debug_handler)
-
- __INIT
-@@ -132,13 +138,17 @@
- * unconditional jump to this vector.
- */
- NESTED(except_vec_nmi, 0, sp)
-+ .set push
-+ .set noreorder
- j nmi_handler
- nop
-+ .set pop
- END(except_vec_nmi)
-
- __FINIT
-
- NESTED(nmi_handler, PT_SIZE, sp)
-+ .set push
- .set noat
- .set noreorder
- .set mips3
-@@ -147,8 +157,7 @@
- move a0, sp
- RESTORE_ALL
- eret
-- .set at
-- .set mips0
-+ .set pop
- END(nmi_handler)
-
- __INIT
-@@ -157,7 +166,20 @@
- * Kernel entry point
- */
- NESTED(kernel_entry, 16, sp)
-+ .set push
-+ /*
-+ * For the moment disable interrupts and mark the kernel mode.
-+ * A full initialization of the CPU's status register is done
-+ * later in per_cpu_trap_init().
-+ */
-+ mfc0 t0, CP0_STATUS
-+ or t0, ST0_CU0|0x1f
-+ xor t0, 0x1f
-+ mtc0 t0, CP0_STATUS
-+
- .set noreorder
-+ sll zero,3 # ehb
-+ .set reorder
-
- /*
- * The firmware/bootloader passes argc/argp/envp
-@@ -170,8 +192,8 @@
- la t1, (_end - 4)
- 1:
- addiu t0, 4
-+ sw zero, (t0)
- bne t0, t1, 1b
-- sw zero, (t0)
-
- /*
- * Stack for kernel and init, current variable
-@@ -182,7 +204,7 @@
- sw t0, kernelsp
-
- jal init_arch
-- nop
-+ .set pop
- END(kernel_entry)
-
-
-@@ -193,17 +215,26 @@
- * function after setting up the stack and gp registers.
- */
- LEAF(smp_bootstrap)
-- .set push
-- .set noreorder
-- mtc0 zero, CP0_WIRED
-- CLI
-+ .set push
-+ /*
-+ * For the moment disable interrupts and bootstrap exception
-+ * vectors and mark the kernel mode. A full initialization of
-+ * the CPU's status register is done later in
-+ * per_cpu_trap_init().
-+ */
- mfc0 t0, CP0_STATUS
-- li t1, ~(ST0_CU1|ST0_CU2|ST0_CU3|ST0_KX|ST0_SX|ST0_UX)
-- and t0, t1
-- or t0, (ST0_CU0);
-+ or t0, ST0_CU0|ST0_BEV|0x1f
-+ xor t0, ST0_BEV|0x1f
-+ mtc0 t0, CP0_STATUS
-+
-+ .set noreorder
-+ sll zero,3 # ehb
-+ .set reorder
-+
-+ mtc0 zero, CP0_WIRED
-+
- jal start_secondary
-- mtc0 t0, CP0_STATUS
-- .set pop
-+ .set pop
- END(smp_bootstrap)
- #endif
-
-diff -Nur linux-2.4.32-rc1/arch/mips/kernel/process.c linux-2.4.32-rc1.mips/arch/mips/kernel/process.c
---- linux-2.4.32-rc1/arch/mips/kernel/process.c 2003-08-25 13:44:40.000000000 +0200
-+++ linux-2.4.32-rc1.mips/arch/mips/kernel/process.c 2005-04-14 12:41:44.000000000 +0200
-@@ -128,6 +128,26 @@
- return 1;
- }
-
-+void dump_regs(elf_greg_t *gp, struct pt_regs *regs)
-+{
-+ int i;
-+
-+ for (i = 0; i < EF_REG0; i++)
-+ gp[i] = 0;
-+ gp[EF_REG0] = 0;
-+ for (i = 1; i <= 31; i++)
-+ gp[EF_REG0 + i] = regs->regs[i];
-+ gp[EF_REG26] = 0;
-+ gp[EF_REG27] = 0;
-+ gp[EF_LO] = regs->lo;
-+ gp[EF_HI] = regs->hi;
-+ gp[EF_CP0_EPC] = regs->cp0_epc;
-+ gp[EF_CP0_BADVADDR] = regs->cp0_badvaddr;
-+ gp[EF_CP0_STATUS] = regs->cp0_status;
-+ gp[EF_CP0_CAUSE] = regs->cp0_cause;
-+ gp[EF_UNUSED0] = 0;
-+}
-+
- /*
- * Create a kernel thread
- */
-diff -Nur linux-2.4.32-rc1/arch/mips/kernel/scall_o32.S linux-2.4.32-rc1.mips/arch/mips/kernel/scall_o32.S
---- linux-2.4.32-rc1/arch/mips/kernel/scall_o32.S 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/kernel/scall_o32.S 2005-02-07 22:21:53.000000000 +0100
-@@ -121,15 +121,14 @@
-
- trace_a_syscall:
- SAVE_STATIC
-- sw t2, PT_R1(sp)
-+ move s0, t2
- jal syscall_trace
-- lw t2, PT_R1(sp)
-
- lw a0, PT_R4(sp) # Restore argument registers
- lw a1, PT_R5(sp)
- lw a2, PT_R6(sp)
- lw a3, PT_R7(sp)
-- jalr t2
-+ jalr s0
-
- li t0, -EMAXERRNO - 1 # error?
- sltu t0, t0, v0
-diff -Nur linux-2.4.32-rc1/arch/mips/kernel/setup.c linux-2.4.32-rc1.mips/arch/mips/kernel/setup.c
---- linux-2.4.32-rc1/arch/mips/kernel/setup.c 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/kernel/setup.c 2005-01-13 22:15:57.000000000 +0100
-@@ -5,7 +5,7 @@
- *
- * Copyright (C) 1995 Linus Torvalds
- * Copyright (C) 1995 Waldorf Electronics
-- * Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001 Ralf Baechle
-+ * Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 01, 05 Ralf Baechle
- * Copyright (C) 1996 Stoned Elipot
- * Copyright (C) 2000, 2001, 2002 Maciej W. Rozycki
- */
-@@ -71,6 +71,8 @@
- extern struct rtc_ops no_rtc_ops;
- struct rtc_ops *rtc_ops;
-
-+EXPORT_SYMBOL(rtc_ops);
-+
- #ifdef CONFIG_PC_KEYB
- struct kbd_ops *kbd_ops;
- #endif
-@@ -132,10 +134,6 @@
- */
- load_mmu();
-
-- /* Disable coprocessors and set FPU for 16/32 FPR register model */
-- clear_c0_status(ST0_CU1|ST0_CU2|ST0_CU3|ST0_KX|ST0_SX|ST0_FR);
-- set_c0_status(ST0_CU0);
--
- start_kernel();
- }
-
-diff -Nur linux-2.4.32-rc1/arch/mips/kernel/traps.c linux-2.4.32-rc1.mips/arch/mips/kernel/traps.c
---- linux-2.4.32-rc1/arch/mips/kernel/traps.c 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/kernel/traps.c 2005-04-12 22:25:34.000000000 +0200
-@@ -452,9 +452,10 @@
- }
- ll_task = current;
-
-+ compute_return_epc(regs);
-+
- regs->regs[(opcode & RT) >> 16] = value;
-
-- compute_return_epc(regs);
- return;
-
- sig:
-@@ -485,8 +486,8 @@
- goto sig;
- }
- if (ll_bit == 0 || ll_task != current) {
-- regs->regs[reg] = 0;
- compute_return_epc(regs);
-+ regs->regs[reg] = 0;
- return;
- }
-
-@@ -495,9 +496,9 @@
- goto sig;
- }
-
-+ compute_return_epc(regs);
- regs->regs[reg] = 1;
-
-- compute_return_epc(regs);
- return;
-
- sig:
-@@ -887,12 +888,18 @@
- void __init per_cpu_trap_init(void)
- {
- unsigned int cpu = smp_processor_id();
-+ unsigned int status_set = ST0_CU0;
-
-- /* Some firmware leaves the BEV flag set, clear it. */
-- clear_c0_status(ST0_CU3|ST0_CU2|ST0_CU1|ST0_BEV|ST0_KX|ST0_SX|ST0_UX);
--
-+ /*
-+ * Disable coprocessors and 64-bit addressing and set FPU for
-+ * the 16/32 FPR register model. Reset the BEV flag that some
-+ * firmware may have left set and the TS bit (for IP27). Set
-+ * XX for ISA IV code to work.
-+ */
- if (current_cpu_data.isa_level == MIPS_CPU_ISA_IV)
-- set_c0_status(ST0_XX);
-+ status_set |= ST0_XX;
-+ change_c0_status(ST0_CU|ST0_FR|ST0_BEV|ST0_TS|ST0_KX|ST0_SX|ST0_UX,
-+ status_set);
-
- /*
- * Some MIPS CPUs have a dedicated interrupt vector which reduces the
-@@ -902,7 +909,7 @@
- set_c0_cause(CAUSEF_IV);
-
- cpu_data[cpu].asid_cache = ASID_FIRST_VERSION;
-- write_c0_context(cpu << 23);
-+ TLBMISS_HANDLER_SETUP();
-
- atomic_inc(&init_mm.mm_count);
- current->active_mm = &init_mm;
-@@ -918,8 +925,6 @@
- extern char except_vec4;
- unsigned long i;
-
-- per_cpu_trap_init();
--
- /* Copy the generic exception handler code to it's final destination. */
- memcpy((void *)(KSEG0 + 0x80), &except_vec1_generic, 0x80);
-
-@@ -1020,10 +1025,5 @@
-
- flush_icache_range(KSEG0, KSEG0 + 0x400);
-
-- atomic_inc(&init_mm.mm_count); /* XXX UP? */
-- current->active_mm = &init_mm;
--
-- /* XXX Must be done for all CPUs */
-- current_cpu_data.asid_cache = ASID_FIRST_VERSION;
-- TLBMISS_HANDLER_SETUP();
-+ per_cpu_trap_init();
- }
-diff -Nur linux-2.4.32-rc1/arch/mips/lib/rtc-no.c linux-2.4.32-rc1.mips/arch/mips/lib/rtc-no.c
---- linux-2.4.32-rc1/arch/mips/lib/rtc-no.c 2004-02-18 14:36:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/lib/rtc-no.c 2005-01-13 22:15:57.000000000 +0100
-@@ -6,10 +6,9 @@
- * Stub RTC routines to keep Linux from crashing on machine which don't
- * have a RTC chip.
- *
-- * Copyright (C) 1998, 2001 by Ralf Baechle
-+ * Copyright (C) 1998, 2001, 2005 by Ralf Baechle
- */
- #include <linux/kernel.h>
--#include <linux/module.h>
- #include <linux/mc146818rtc.h>
-
- static unsigned int shouldnt_happen(void)
-@@ -29,5 +28,3 @@
- .rtc_write_data = (void *) &shouldnt_happen,
- .rtc_bcd_mode = (void *) &shouldnt_happen
- };
--
--EXPORT_SYMBOL(rtc_ops);
-diff -Nur linux-2.4.32-rc1/arch/mips/lib/rtc-std.c linux-2.4.32-rc1.mips/arch/mips/lib/rtc-std.c
---- linux-2.4.32-rc1/arch/mips/lib/rtc-std.c 2004-02-18 14:36:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/lib/rtc-std.c 2005-01-13 22:15:57.000000000 +0100
-@@ -5,9 +5,8 @@
- *
- * RTC routines for PC style attached Dallas chip.
- *
-- * Copyright (C) 1998, 2001 by Ralf Baechle
-+ * Copyright (C) 1998, 2001, 05 by Ralf Baechle
- */
--#include <linux/module.h>
- #include <linux/mc146818rtc.h>
- #include <asm/io.h>
-
-@@ -33,5 +32,3 @@
- &std_rtc_write_data,
- &std_rtc_bcd_mode
- };
--
--EXPORT_SYMBOL(rtc_ops);
-diff -Nur linux-2.4.32-rc1/arch/mips/Makefile linux-2.4.32-rc1.mips/arch/mips/Makefile
---- linux-2.4.32-rc1/arch/mips/Makefile 2005-01-19 15:09:26.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/Makefile 2005-01-30 09:01:26.000000000 +0100
-@@ -211,7 +211,7 @@
- endif
-
- #
--# Au1000 (Alchemy Semi PB1000) eval board
-+# Au1x AMD Alchemy eval boards
- #
- ifdef CONFIG_MIPS_PB1000
- LIBS += arch/mips/au1000/pb1000/pb1000.o \
-@@ -220,9 +220,6 @@
- LOADADDR := 0x80100000
- endif
-
--#
--# Au1100 (Alchemy Semi PB1100) eval board
--#
- ifdef CONFIG_MIPS_PB1100
- LIBS += arch/mips/au1000/pb1100/pb1100.o \
- arch/mips/au1000/common/au1000.o
-@@ -230,9 +227,6 @@
- LOADADDR += 0x80100000
- endif
-
--#
--# Au1500 (Alchemy Semi PB1500) eval board
--#
- ifdef CONFIG_MIPS_PB1500
- LIBS += arch/mips/au1000/pb1500/pb1500.o \
- arch/mips/au1000/common/au1000.o
-@@ -240,9 +234,6 @@
- LOADADDR := 0x80100000
- endif
-
--#
--# Au1x00 (AMD/Alchemy) eval boards
--#
- ifdef CONFIG_MIPS_DB1000
- LIBS += arch/mips/au1000/db1x00/db1x00.o \
- arch/mips/au1000/common/au1000.o
-@@ -313,6 +304,27 @@
- LOADADDR += 0x80100000
- endif
-
-+ifdef CONFIG_MIPS_PB1200
-+LIBS += arch/mips/au1000/pb1200/pb1200.o \
-+ arch/mips/au1000/common/au1000.o
-+SUBDIRS += arch/mips/au1000/pb1200 arch/mips/au1000/common
-+LOADADDR += 0x80100000
-+endif
-+
-+ifdef CONFIG_MIPS_DB1200
-+LIBS += arch/mips/au1000/pb1200/pb1200.o \
-+ arch/mips/au1000/common/au1000.o
-+SUBDIRS += arch/mips/au1000/pb1200 arch/mips/au1000/common
-+LOADADDR += 0x80100000
-+endif
-+
-+ifdef CONFIG_MIPS_FICMMP
-+LIBS += arch/mips/au1000/ficmmp/ficmmp.o \
-+ arch/mips/au1000/common/au1000.o
-+SUBDIRS += arch/mips/au1000/ficmmp arch/mips/au1000/common
-+LOADADDR += 0x80100000
-+endif
-+
-
- #
- # Cogent CSB250
-diff -Nur linux-2.4.32-rc1/arch/mips/mm/cerr-sb1.c linux-2.4.32-rc1.mips/arch/mips/mm/cerr-sb1.c
---- linux-2.4.32-rc1/arch/mips/mm/cerr-sb1.c 2004-02-18 14:36:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/mm/cerr-sb1.c 2004-12-13 18:37:23.000000000 +0100
-@@ -252,14 +252,14 @@
-
- /* Masks to select bits for Hamming parity, mask_72_64[i] for bit[i] */
- static const uint64_t mask_72_64[8] = {
-- 0x0738C808099264FFL,
-- 0x38C808099264FF07L,
-- 0xC808099264FF0738L,
-- 0x08099264FF0738C8L,
-- 0x099264FF0738C808L,
-- 0x9264FF0738C80809L,
-- 0x64FF0738C8080992L,
-- 0xFF0738C808099264L
-+ 0x0738C808099264FFULL,
-+ 0x38C808099264FF07ULL,
-+ 0xC808099264FF0738ULL,
-+ 0x08099264FF0738C8ULL,
-+ 0x099264FF0738C808ULL,
-+ 0x9264FF0738C80809ULL,
-+ 0x64FF0738C8080992ULL,
-+ 0xFF0738C808099264ULL
- };
-
- /* Calculate the parity on a range of bits */
-@@ -331,9 +331,9 @@
- ((lru >> 4) & 0x3),
- ((lru >> 6) & 0x3));
- }
-- va = (taglo & 0xC0000FFFFFFFE000) | addr;
-+ va = (taglo & 0xC0000FFFFFFFE000ULL) | addr;
- if ((taglo & (1 << 31)) && (((taglo >> 62) & 0x3) == 3))
-- va |= 0x3FFFF00000000000;
-+ va |= 0x3FFFF00000000000ULL;
- valid = ((taghi >> 29) & 1);
- if (valid) {
- tlo_tmp = taglo & 0xfff3ff;
-@@ -474,7 +474,7 @@
- : "r" ((way << 13) | addr));
-
- taglo = ((unsigned long long)taglohi << 32) | taglolo;
-- pa = (taglo & 0xFFFFFFE000) | addr;
-+ pa = (taglo & 0xFFFFFFE000ULL) | addr;
- if (way == 0) {
- lru = (taghi >> 14) & 0xff;
- prom_printf("[Bank %d Set 0x%02x] LRU > %d %d %d %d > MRU\n",
-diff -Nur linux-2.4.32-rc1/arch/mips/mm/c-r4k.c linux-2.4.32-rc1.mips/arch/mips/mm/c-r4k.c
---- linux-2.4.32-rc1/arch/mips/mm/c-r4k.c 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/mm/c-r4k.c 2005-02-06 22:55:42.000000000 +0100
-@@ -867,9 +867,16 @@
- * normally they'd suffer from aliases but magic in the hardware deals
- * with that for us so we don't need to take care ourselves.
- */
-- if (c->cputype != CPU_R10000 && c->cputype != CPU_R12000)
-- if (c->dcache.waysize > PAGE_SIZE)
-- c->dcache.flags |= MIPS_CACHE_ALIASES;
-+ switch (c->cputype) {
-+ case CPU_R10000:
-+ case CPU_R12000:
-+ break;
-+ case CPU_24K:
-+ if (!(read_c0_config7() & (1 << 16)))
-+ default:
-+ if (c->dcache.waysize > PAGE_SIZE)
-+ c->dcache.flags |= MIPS_CACHE_ALIASES;
-+ }
-
- switch (c->cputype) {
- case CPU_20KC:
-@@ -1069,9 +1076,6 @@
- probe_pcache();
- setup_scache();
-
-- if (c->dcache.sets * c->dcache.ways > PAGE_SIZE)
-- c->dcache.flags |= MIPS_CACHE_ALIASES;
--
- r4k_blast_dcache_page_setup();
- r4k_blast_dcache_page_indexed_setup();
- r4k_blast_dcache_setup();
-diff -Nur linux-2.4.32-rc1/arch/mips/mm/tlbex-mips32.S linux-2.4.32-rc1.mips/arch/mips/mm/tlbex-mips32.S
---- linux-2.4.32-rc1/arch/mips/mm/tlbex-mips32.S 2004-02-18 14:36:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/mm/tlbex-mips32.S 2004-11-29 00:33:15.000000000 +0100
-@@ -196,7 +196,7 @@
- .set noat; \
- SAVE_ALL; \
- mfc0 a2, CP0_BADVADDR; \
-- STI; \
-+ KMODE; \
- .set at; \
- move a0, sp; \
- jal do_page_fault; \
-diff -Nur linux-2.4.32-rc1/arch/mips/mm/tlbex-r4k.S linux-2.4.32-rc1.mips/arch/mips/mm/tlbex-r4k.S
---- linux-2.4.32-rc1/arch/mips/mm/tlbex-r4k.S 2004-02-18 14:36:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/mm/tlbex-r4k.S 2005-06-06 16:46:22.000000000 +0200
-@@ -184,13 +184,10 @@
- P_MTC0 k0, CP0_ENTRYLO0 # load it
- PTE_SRL k1, k1, 6 # convert to entrylo1
- P_MTC0 k1, CP0_ENTRYLO1 # load it
-- b 1f
-- rm9000_tlb_hazard
-+ mtc0_tlbw_hazard
- tlbwr # write random tlb entry
--1:
-- nop
-- rm9000_tlb_hazard
-- eret # return from trap
-+ tlbw_eret_hazard
-+ eret
- END(except_vec0_r4000)
-
- /* TLB refill, EXL == 0, R4600 version */
-@@ -468,13 +465,9 @@
- PTE_PRESENT(k0, k1, nopage_tlbl)
- PTE_MAKEVALID(k0, k1)
- PTE_RELOAD(k1, k0)
-- rm9000_tlb_hazard
-- nop
-- b 1f
-- tlbwi
--1:
-- nop
-- rm9000_tlb_hazard
-+ mtc0_tlbw_hazard
-+ tlbwi
-+ tlbw_eret_hazard
- .set mips3
- eret
- .set mips0
-@@ -496,13 +489,9 @@
- PTE_WRITABLE(k0, k1, nopage_tlbs)
- PTE_MAKEWRITE(k0, k1)
- PTE_RELOAD(k1, k0)
-- rm9000_tlb_hazard
-- nop
-- b 1f
-- tlbwi
--1:
-- nop
-- rm9000_tlb_hazard
-+ mtc0_tlbw_hazard
-+ tlbwi
-+ tlbw_eret_hazard
- .set mips3
- eret
- .set mips0
-@@ -529,13 +518,9 @@
-
- /* Now reload the entry into the tlb. */
- PTE_RELOAD(k1, k0)
-- rm9000_tlb_hazard
-- nop
-- b 1f
-- tlbwi
--1:
-- rm9000_tlb_hazard
-- nop
-+ mtc0_tlbw_hazard
-+ tlbwi
-+ tlbw_eret_hazard
- .set mips3
- eret
- .set mips0
-diff -Nur linux-2.4.32-rc1/arch/mips/mm/tlb-r4k.c linux-2.4.32-rc1.mips/arch/mips/mm/tlb-r4k.c
---- linux-2.4.32-rc1/arch/mips/mm/tlb-r4k.c 2005-01-19 15:09:29.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips/mm/tlb-r4k.c 2004-11-25 23:18:38.000000000 +0100
-@@ -3,17 +3,12 @@
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
-- * r4xx0.c: R4000 processor variant specific MMU/Cache routines.
-- *
- * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
- * Copyright (C) 1997, 1998, 1999, 2000 Ralf Baechle ralf@gnu.org
-- *
-- * To do:
-- *
-- * - this code is a overbloated pig
-- * - many of the bug workarounds are not efficient at all, but at
-- * least they are functional ...
-+ * Carsten Langgaard, carstenl@mips.com
-+ * Copyright (C) 2002 MIPS Technologies, Inc. All rights reserved.
- */
-+#include <linux/config.h>
- #include <linux/init.h>
- #include <linux/sched.h>
- #include <linux/mm.h>
-@@ -25,9 +20,6 @@
- #include <asm/pgtable.h>
- #include <asm/system.h>
-
--#undef DEBUG_TLB
--#undef DEBUG_TLBUPDATE
--
- extern char except_vec0_nevada, except_vec0_r4000, except_vec0_r4600;
-
- /* CP0 hazard avoidance. */
-@@ -41,33 +33,23 @@
- unsigned long old_ctx;
- int entry;
-
--#ifdef DEBUG_TLB
-- printk("[tlball]");
--#endif
--
- local_irq_save(flags);
- /* Save old context and create impossible VPN2 value */
- old_ctx = read_c0_entryhi();
- write_c0_entrylo0(0);
- write_c0_entrylo1(0);
-- BARRIER;
-
- entry = read_c0_wired();
-
- /* Blast 'em all away. */
- while (entry < current_cpu_data.tlbsize) {
-- /*
-- * Make sure all entries differ. If they're not different
-- * MIPS32 will take revenge ...
-- */
- write_c0_entryhi(KSEG0 + entry*0x2000);
- write_c0_index(entry);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_write_indexed();
-- BARRIER;
- entry++;
- }
-- BARRIER;
-+ tlbw_use_hazard();
- write_c0_entryhi(old_ctx);
- local_irq_restore(flags);
- }
-@@ -76,12 +58,8 @@
- {
- int cpu = smp_processor_id();
-
-- if (cpu_context(cpu, mm) != 0) {
--#ifdef DEBUG_TLB
-- printk("[tlbmm<%d>]", cpu_context(cpu, mm));
--#endif
-+ if (cpu_context(cpu, mm) != 0)
- drop_mmu_context(mm,cpu);
-- }
- }
-
- void local_flush_tlb_range(struct mm_struct *mm, unsigned long start,
-@@ -93,10 +71,6 @@
- unsigned long flags;
- int size;
-
--#ifdef DEBUG_TLB
-- printk("[tlbrange<%02x,%08lx,%08lx>]",
-- cpu_asid(cpu, mm), start, end);
--#endif
- local_irq_save(flags);
- size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
- size = (size + 1) >> 1;
-@@ -112,7 +86,7 @@
-
- write_c0_entryhi(start | newpid);
- start += (PAGE_SIZE << 1);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_probe();
- BARRIER;
- idx = read_c0_index();
-@@ -122,10 +96,10 @@
- continue;
- /* Make sure all entries differ. */
- write_c0_entryhi(KSEG0 + idx*0x2000);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_write_indexed();
-- BARRIER;
- }
-+ tlbw_use_hazard();
- write_c0_entryhi(oldpid);
- } else {
- drop_mmu_context(mm, cpu);
-@@ -138,34 +112,30 @@
- {
- int cpu = smp_processor_id();
-
-- if (!vma || cpu_context(cpu, vma->vm_mm) != 0) {
-+ if (cpu_context(cpu, vma->vm_mm) != 0) {
- unsigned long flags;
-- int oldpid, newpid, idx;
-+ unsigned long oldpid, newpid, idx;
-
--#ifdef DEBUG_TLB
-- printk("[tlbpage<%d,%08lx>]", cpu_context(cpu, vma->vm_mm),
-- page);
--#endif
- newpid = cpu_asid(cpu, vma->vm_mm);
- page &= (PAGE_MASK << 1);
- local_irq_save(flags);
- oldpid = read_c0_entryhi();
- write_c0_entryhi(page | newpid);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_probe();
- BARRIER;
- idx = read_c0_index();
- write_c0_entrylo0(0);
- write_c0_entrylo1(0);
-- if(idx < 0)
-+ if (idx < 0)
- goto finish;
- /* Make sure all entries differ. */
- write_c0_entryhi(KSEG0+idx*0x2000);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_write_indexed();
-+ tlbw_use_hazard();
-
- finish:
-- BARRIER;
- write_c0_entryhi(oldpid);
- local_irq_restore(flags);
- }
-@@ -185,7 +155,7 @@
-
- local_irq_save(flags);
- write_c0_entryhi(page);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_probe();
- BARRIER;
- idx = read_c0_index();
-@@ -194,18 +164,19 @@
- if (idx >= 0) {
- /* Make sure all entries differ. */
- write_c0_entryhi(KSEG0+idx*0x2000);
-+ mtc0_tlbw_hazard();
- tlb_write_indexed();
-+ tlbw_use_hazard();
- }
-- BARRIER;
- write_c0_entryhi(oldpid);
-+
- local_irq_restore(flags);
- }
-
- EXPORT_SYMBOL(local_flush_tlb_one);
-
--/* We will need multiple versions of update_mmu_cache(), one that just
-- * updates the TLB with the new pte(s), and another which also checks
-- * for the R4k "end of page" hardware bug and does the needy.
-+/*
-+ * Updates the TLB with the new pte(s).
- */
- void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte)
- {
-@@ -223,25 +194,16 @@
-
- pid = read_c0_entryhi() & ASID_MASK;
-
--#ifdef DEBUG_TLB
-- if ((pid != cpu_asid(cpu, vma->vm_mm)) ||
-- (cpu_context(vma->vm_mm) == 0)) {
-- printk("update_mmu_cache: Wheee, bogus tlbpid mmpid=%d "
-- "tlbpid=%d\n", (int) (cpu_asid(cpu, vma->vm_mm)), pid);
-- }
--#endif
--
- local_irq_save(flags);
- address &= (PAGE_MASK << 1);
- write_c0_entryhi(address | pid);
- pgdp = pgd_offset(vma->vm_mm, address);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_probe();
- BARRIER;
- pmdp = pmd_offset(pgdp, address);
- idx = read_c0_index();
- ptep = pte_offset(pmdp, address);
-- BARRIER;
- #if defined(CONFIG_64BIT_PHYS_ADDR) && defined(CONFIG_CPU_MIPS32)
- write_c0_entrylo0(ptep->pte_high);
- ptep++;
-@@ -251,15 +213,13 @@
- write_c0_entrylo1(pte_val(*ptep) >> 6);
- #endif
- write_c0_entryhi(address | pid);
-- BARRIER;
-- if (idx < 0) {
-+ mtc0_tlbw_hazard();
-+ if (idx < 0)
- tlb_write_random();
-- } else {
-+ else
- tlb_write_indexed();
-- }
-- BARRIER;
-+ tlbw_use_hazard();
- write_c0_entryhi(pid);
-- BARRIER;
- local_irq_restore(flags);
- }
-
-@@ -279,24 +239,26 @@
- asid = read_c0_entryhi() & ASID_MASK;
- write_c0_entryhi(address | asid);
- pgdp = pgd_offset(vma->vm_mm, address);
-+ mtc0_tlbw_hazard();
- tlb_probe();
-+ BARRIER;
- pmdp = pmd_offset(pgdp, address);
- idx = read_c0_index();
- ptep = pte_offset(pmdp, address);
- write_c0_entrylo0(pte_val(*ptep++) >> 6);
- write_c0_entrylo1(pte_val(*ptep) >> 6);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- if (idx < 0)
- tlb_write_random();
- else
- tlb_write_indexed();
-- BARRIER;
-+ tlbw_use_hazard();
- local_irq_restore(flags);
- }
- #endif
-
- void __init add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
-- unsigned long entryhi, unsigned long pagemask)
-+ unsigned long entryhi, unsigned long pagemask)
- {
- unsigned long flags;
- unsigned long wired;
-@@ -315,9 +277,9 @@
- write_c0_entryhi(entryhi);
- write_c0_entrylo0(entrylo0);
- write_c0_entrylo1(entrylo1);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_write_indexed();
-- BARRIER;
-+ tlbw_use_hazard();
-
- write_c0_entryhi(old_ctx);
- BARRIER;
-@@ -355,17 +317,15 @@
- }
-
- write_c0_index(temp_tlb_entry);
-- BARRIER;
- write_c0_pagemask(pagemask);
- write_c0_entryhi(entryhi);
- write_c0_entrylo0(entrylo0);
- write_c0_entrylo1(entrylo1);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_write_indexed();
-- BARRIER;
-+ tlbw_use_hazard();
-
- write_c0_entryhi(old_ctx);
-- BARRIER;
- write_c0_pagemask(old_pagemask);
- out:
- local_irq_restore(flags);
-@@ -375,7 +335,7 @@
- static void __init probe_tlb(unsigned long config)
- {
- struct cpuinfo_mips *c = &current_cpu_data;
-- unsigned int reg;
-+ unsigned int config1;
-
- /*
- * If this isn't a MIPS32 / MIPS64 compliant CPU. Config 1 register
-@@ -385,16 +345,16 @@
- if ((c->processor_id & 0xff0000) == PRID_COMP_LEGACY)
- return;
-
-- reg = read_c0_config1();
-+ config1 = read_c0_config1();
- if (!((config >> 7) & 3))
- panic("No TLB present");
-
-- c->tlbsize = ((reg >> 25) & 0x3f) + 1;
-+ c->tlbsize = ((config1 >> 25) & 0x3f) + 1;
- }
-
- void __init r4k_tlb_init(void)
- {
-- u32 config = read_c0_config();
-+ unsigned int config = read_c0_config();
-
- /*
- * You should never change this register:
-diff -Nur linux-2.4.32-rc1/arch/mips64/defconfig linux-2.4.32-rc1.mips/arch/mips64/defconfig
---- linux-2.4.32-rc1/arch/mips64/defconfig 2005-01-19 15:09:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/defconfig 2005-03-18 13:13:23.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -470,9 +470,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -658,7 +660,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips64/defconfig-atlas linux-2.4.32-rc1.mips/arch/mips64/defconfig-atlas
---- linux-2.4.32-rc1/arch/mips64/defconfig-atlas 2005-01-19 15:09:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/defconfig-atlas 2005-03-18 13:13:23.000000000 +0100
-@@ -28,8 +28,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -232,11 +232,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -314,9 +309,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -474,7 +471,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips64/defconfig-decstation linux-2.4.32-rc1.mips/arch/mips64/defconfig-decstation
---- linux-2.4.32-rc1/arch/mips64/defconfig-decstation 2005-01-19 15:09:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/defconfig-decstation 2005-03-18 13:13:23.000000000 +0100
-@@ -28,8 +28,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -224,11 +224,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -307,9 +302,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -477,7 +474,6 @@
- CONFIG_SERIAL_DEC_CONSOLE=y
- # CONFIG_DZ is not set
- CONFIG_ZS=y
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips64/defconfig-ip22 linux-2.4.32-rc1.mips/arch/mips64/defconfig-ip22
---- linux-2.4.32-rc1/arch/mips64/defconfig-ip22 2005-01-19 15:09:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/defconfig-ip22 2005-03-18 13:13:23.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -235,11 +235,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -319,9 +314,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -488,7 +485,6 @@
- # CONFIG_SERIAL_TXX9_CONSOLE is not set
- # CONFIG_TXX927_SERIAL is not set
- CONFIG_IP22_SERIAL=y
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips64/defconfig-ip27 linux-2.4.32-rc1.mips/arch/mips64/defconfig-ip27
---- linux-2.4.32-rc1/arch/mips64/defconfig-ip27 2005-01-19 15:09:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/defconfig-ip27 2005-03-18 13:13:23.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -470,9 +470,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -658,7 +660,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips64/defconfig-jaguar linux-2.4.32-rc1.mips/arch/mips64/defconfig-jaguar
---- linux-2.4.32-rc1/arch/mips64/defconfig-jaguar 2005-01-19 15:09:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/defconfig-jaguar 2005-03-18 13:13:23.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -227,11 +227,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -403,7 +398,6 @@
- # CONFIG_SERIAL_TXX9 is not set
- # CONFIG_SERIAL_TXX9_CONSOLE is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips64/defconfig-malta linux-2.4.32-rc1.mips/arch/mips64/defconfig-malta
---- linux-2.4.32-rc1/arch/mips64/defconfig-malta 2005-01-19 15:09:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/defconfig-malta 2005-04-19 14:19:34.000000000 +0200
-@@ -22,16 +22,19 @@
- #
- # CONFIG_ACER_PICA_61 is not set
- # CONFIG_MIPS_BOSPORUS is not set
-+# CONFIG_MIPS_FICMMP is not set
- # CONFIG_MIPS_MIRAGE is not set
- # CONFIG_MIPS_DB1000 is not set
- # CONFIG_MIPS_DB1100 is not set
- # CONFIG_MIPS_DB1500 is not set
- # CONFIG_MIPS_DB1550 is not set
-+# CONFIG_MIPS_DB1200 is not set
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_PB1200 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -146,9 +149,9 @@
- CONFIG_BINFMT_ELF=y
- CONFIG_MIPS32_COMPAT=y
- CONFIG_MIPS32_O32=y
--# CONFIG_MIPS32_N32 is not set
-+CONFIG_MIPS32_N32=y
- CONFIG_BINFMT_ELF32=y
--# CONFIG_BINFMT_MISC is not set
-+CONFIG_BINFMT_MISC=y
- # CONFIG_OOM_KILLER is not set
- # CONFIG_CMDLINE_BOOL is not set
-
-@@ -235,11 +238,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -271,8 +269,83 @@
- #
- # ATA/IDE/MFM/RLL support
- #
--# CONFIG_IDE is not set
-+CONFIG_IDE=y
-+
-+#
-+# IDE, ATA and ATAPI Block devices
-+#
-+CONFIG_BLK_DEV_IDE=y
-+
-+#
-+# Please see Documentation/ide.txt for help/info on IDE drives
-+#
-+# CONFIG_BLK_DEV_HD_IDE is not set
- # CONFIG_BLK_DEV_HD is not set
-+# CONFIG_BLK_DEV_IDE_SATA is not set
-+CONFIG_BLK_DEV_IDEDISK=y
-+# CONFIG_IDEDISK_MULTI_MODE is not set
-+# CONFIG_IDEDISK_STROKE is not set
-+# CONFIG_BLK_DEV_IDECS is not set
-+# CONFIG_BLK_DEV_DELKIN is not set
-+CONFIG_BLK_DEV_IDECD=y
-+CONFIG_BLK_DEV_IDETAPE=y
-+CONFIG_BLK_DEV_IDEFLOPPY=y
-+# CONFIG_BLK_DEV_IDESCSI is not set
-+# CONFIG_IDE_TASK_IOCTL is not set
-+
-+#
-+# IDE chipset support/bugfixes
-+#
-+# CONFIG_BLK_DEV_CMD640 is not set
-+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-+# CONFIG_BLK_DEV_ISAPNP is not set
-+CONFIG_BLK_DEV_IDEPCI=y
-+CONFIG_BLK_DEV_GENERIC=y
-+CONFIG_IDEPCI_SHARE_IRQ=y
-+CONFIG_BLK_DEV_IDEDMA_PCI=y
-+# CONFIG_BLK_DEV_OFFBOARD is not set
-+CONFIG_BLK_DEV_IDEDMA_FORCED=y
-+CONFIG_IDEDMA_PCI_AUTO=y
-+# CONFIG_IDEDMA_ONLYDISK is not set
-+CONFIG_BLK_DEV_IDEDMA=y
-+# CONFIG_IDEDMA_PCI_WIP is not set
-+# CONFIG_BLK_DEV_ADMA100 is not set
-+# CONFIG_BLK_DEV_AEC62XX is not set
-+# CONFIG_BLK_DEV_ALI15X3 is not set
-+# CONFIG_WDC_ALI15X3 is not set
-+# CONFIG_BLK_DEV_AMD74XX is not set
-+# CONFIG_AMD74XX_OVERRIDE 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_CS5530 is not set
-+# CONFIG_BLK_DEV_HPT34X is not set
-+# CONFIG_HPT34X_AUTODMA is not set
-+# CONFIG_BLK_DEV_HPT366 is not set
-+CONFIG_BLK_DEV_PIIX=y
-+# CONFIG_BLK_DEV_NS87415 is not set
-+# CONFIG_BLK_DEV_OPTI621 is not set
-+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-+# CONFIG_PDC202XX_BURST is not set
-+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-+# CONFIG_BLK_DEV_RZ1000 is not set
-+# CONFIG_BLK_DEV_SC1200 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_IDE_CHIPSETS is not set
-+CONFIG_IDEDMA_AUTO=y
-+# CONFIG_IDEDMA_IVB is not set
-+# CONFIG_DMA_NONPCI is not set
-+# CONFIG_BLK_DEV_ATARAID is not set
-+# CONFIG_BLK_DEV_ATARAID_PDC is not set
-+# CONFIG_BLK_DEV_ATARAID_HPT is not set
-+# CONFIG_BLK_DEV_ATARAID_MEDLEY is not set
-+# CONFIG_BLK_DEV_ATARAID_SII is not set
-
- #
- # SCSI support
-@@ -317,9 +390,11 @@
- # CONFIG_SCSI_MEGARAID is not set
- # CONFIG_SCSI_MEGARAID2 is not set
- # CONFIG_SCSI_SATA is not set
-+# CONFIG_SCSI_SATA_AHCI is not set
- # CONFIG_SCSI_SATA_SVW is not set
- # CONFIG_SCSI_ATA_PIIX is not set
- # CONFIG_SCSI_SATA_NV 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
-@@ -477,7 +552,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips64/defconfig-ocelotc linux-2.4.32-rc1.mips/arch/mips64/defconfig-ocelotc
---- linux-2.4.32-rc1/arch/mips64/defconfig-ocelotc 2005-01-19 15:09:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/defconfig-ocelotc 2005-03-18 13:13:23.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -231,11 +231,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -453,7 +448,6 @@
- # CONFIG_SERIAL_TXX9 is not set
- # CONFIG_SERIAL_TXX9_CONSOLE is not set
- # CONFIG_TXX927_SERIAL is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips64/defconfig-sb1250-swarm linux-2.4.32-rc1.mips/arch/mips64/defconfig-sb1250-swarm
---- linux-2.4.32-rc1/arch/mips64/defconfig-sb1250-swarm 2005-01-19 15:09:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/defconfig-sb1250-swarm 2005-03-18 13:13:23.000000000 +0100
-@@ -30,8 +30,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -90,6 +90,7 @@
- # CONFIG_SIBYTE_TBPROF is not set
- CONFIG_SIBYTE_GENBUS_IDE=y
- CONFIG_SMP_CAPABLE=y
-+CONFIG_MIPS_RTC=y
- # CONFIG_SNI_RM200_PCI is not set
- # CONFIG_TANBAC_TB0226 is not set
- # CONFIG_TANBAC_TB0229 is not set
-@@ -253,11 +254,6 @@
- #
- # CONFIG_IPX is not set
- # CONFIG_ATALK is not set
--
--#
--# Appletalk devices
--#
--# CONFIG_DEV_APPLETALK is not set
- # CONFIG_DECNET is not set
- # CONFIG_BRIDGE is not set
- # CONFIG_X25 is not set
-@@ -432,7 +428,6 @@
- CONFIG_SIBYTE_SB1250_DUART=y
- CONFIG_SIBYTE_SB1250_DUART_CONSOLE=y
- CONFIG_SERIAL_CONSOLE=y
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- CONFIG_UNIX98_PTYS=y
- CONFIG_UNIX98_PTY_COUNT=256
-
-diff -Nur linux-2.4.32-rc1/arch/mips64/defconfig-sead linux-2.4.32-rc1.mips/arch/mips64/defconfig-sead
---- linux-2.4.32-rc1/arch/mips64/defconfig-sead 2005-01-19 15:09:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/defconfig-sead 2005-03-18 13:13:23.000000000 +0100
-@@ -28,8 +28,8 @@
- # CONFIG_MIPS_PB1000 is not set
- # CONFIG_MIPS_PB1100 is not set
- # CONFIG_MIPS_PB1500 is not set
--# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_PB1550 is not set
-+# CONFIG_MIPS_HYDROGEN3 is not set
- # CONFIG_MIPS_XXS1500 is not set
- # CONFIG_MIPS_MTX1 is not set
- # CONFIG_COGENT_CSB250 is not set
-@@ -242,7 +242,6 @@
- CONFIG_SERIAL_CONSOLE=y
- # CONFIG_SERIAL_EXTENDED is not set
- # CONFIG_SERIAL_NONSTANDARD is not set
--# CONFIG_MIPS_HYDROGEN3_BUTTONS is not set
- # CONFIG_UNIX98_PTYS is not set
-
- #
-diff -Nur linux-2.4.32-rc1/arch/mips64/kernel/binfmt_elfn32.c linux-2.4.32-rc1.mips/arch/mips64/kernel/binfmt_elfn32.c
---- linux-2.4.32-rc1/arch/mips64/kernel/binfmt_elfn32.c 2003-08-25 13:44:40.000000000 +0200
-+++ linux-2.4.32-rc1.mips/arch/mips64/kernel/binfmt_elfn32.c 2005-01-26 03:40:47.000000000 +0100
-@@ -116,4 +116,7 @@
- #undef MODULE_DESCRIPTION
- #undef MODULE_AUTHOR
-
-+#undef TASK_SIZE
-+#define TASK_SIZE TASK_SIZE32
-+
- #include "../../../fs/binfmt_elf.c"
-diff -Nur linux-2.4.32-rc1/arch/mips64/kernel/binfmt_elfo32.c linux-2.4.32-rc1.mips/arch/mips64/kernel/binfmt_elfo32.c
---- linux-2.4.32-rc1/arch/mips64/kernel/binfmt_elfo32.c 2003-08-25 13:44:40.000000000 +0200
-+++ linux-2.4.32-rc1.mips/arch/mips64/kernel/binfmt_elfo32.c 2005-01-26 03:40:47.000000000 +0100
-@@ -137,4 +137,7 @@
- #undef MODULE_DESCRIPTION
- #undef MODULE_AUTHOR
-
-+#undef TASK_SIZE
-+#define TASK_SIZE TASK_SIZE32
-+
- #include "../../../fs/binfmt_elf.c"
-diff -Nur linux-2.4.32-rc1/arch/mips64/kernel/head.S linux-2.4.32-rc1.mips/arch/mips64/kernel/head.S
---- linux-2.4.32-rc1/arch/mips64/kernel/head.S 2004-02-18 14:36:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/kernel/head.S 2004-11-22 14:38:26.000000000 +0100
-@@ -91,6 +91,21 @@
- __INIT
-
- NESTED(kernel_entry, 16, sp) # kernel entry point
-+ .set push
-+ /*
-+ * For the moment disable interrupts, mark the kernel mode and
-+ * set ST0_KX so that the CPU does not spit fire when using
-+ * 64-bit addresses. A full initialization of the CPU's status
-+ * register is done later in per_cpu_trap_init().
-+ */
-+ mfc0 t0, CP0_STATUS
-+ or t0, ST0_CU0|ST0_KX|0x1f
-+ xor t0, 0x1f
-+ mtc0 t0, CP0_STATUS
-+
-+ .set noreorder
-+ sll zero,3 # ehb
-+ .set reorder
-
- ori sp, 0xf # align stack on 16 byte.
- xori sp, 0xf
-@@ -103,8 +118,6 @@
-
- ARC64_TWIDDLE_PC
-
-- CLI # disable interrupts
--
- /*
- * The firmware/bootloader passes argc/argp/envp
- * to us as arguments. But clear bss first because
-@@ -125,6 +138,7 @@
- dsubu sp, 4*SZREG # init stack pointer
-
- j init_arch
-+ .set pop
- END(kernel_entry)
-
- #ifdef CONFIG_SMP
-@@ -133,6 +147,23 @@
- * function after setting up the stack and gp registers.
- */
- NESTED(smp_bootstrap, 16, sp)
-+ .set push
-+ /*
-+ * For the moment disable interrupts and bootstrap exception
-+ * vectors, mark the kernel mode and set ST0_KX so that the CPU
-+ * does not spit fire when using 64-bit addresses. A full
-+ * initialization of the CPU's status register is done later in
-+ * per_cpu_trap_init().
-+ */
-+ mfc0 t0, CP0_STATUS
-+ or t0, ST0_CU0|ST0_BEV|ST0_KX|0x1f
-+ xor t0, ST0_BEV|0x1f
-+ mtc0 t0, CP0_STATUS
-+
-+ .set noreorder
-+ sll zero,3 # ehb
-+ .set reorder
-+
- #ifdef CONFIG_SGI_IP27
- GET_NASID_ASM t1
- dli t0, KLDIR_OFFSET + (KLI_KERN_VARS * KLDIR_ENT_SIZE) + \
-@@ -146,19 +177,8 @@
- ARC64_TWIDDLE_PC
- #endif /* CONFIG_SGI_IP27 */
-
-- CLI
--
-- /*
-- * For the moment set ST0_KU so the CPU will not spit fire when
-- * executing 64-bit instructions. The full initialization of the
-- * CPU's status register is done later in per_cpu_trap_init().
-- */
-- mfc0 t0, CP0_STATUS
-- or t0, ST0_KX
-- mtc0 t0, CP0_STATUS
--
- jal start_secondary # XXX: IP27: cboot
--
-+ .set pop
- END(smp_bootstrap)
- #endif /* CONFIG_SMP */
-
-diff -Nur linux-2.4.32-rc1/arch/mips64/kernel/ioctl32.c linux-2.4.32-rc1.mips/arch/mips64/kernel/ioctl32.c
---- linux-2.4.32-rc1/arch/mips64/kernel/ioctl32.c 2005-01-19 15:09:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/kernel/ioctl32.c 2005-01-26 03:36:17.000000000 +0100
-@@ -2352,7 +2352,7 @@
- IOCTL32_HANDLER(AUTOFS_IOC_SETTIMEOUT32, ioc_settimeout),
- IOCTL32_DEFAULT(AUTOFS_IOC_EXPIRE),
- IOCTL32_DEFAULT(AUTOFS_IOC_EXPIRE_MULTI),
-- IOCTL32_DEFAULT(AUTOFS_IOC_PROTSUBVER),
-+ IOCTL32_DEFAULT(AUTOFS_IOC_PROTOSUBVER),
- IOCTL32_DEFAULT(AUTOFS_IOC_ASKREGHOST),
- IOCTL32_DEFAULT(AUTOFS_IOC_TOGGLEREGHOST),
- IOCTL32_DEFAULT(AUTOFS_IOC_ASKUMOUNT),
-diff -Nur linux-2.4.32-rc1/arch/mips64/kernel/linux32.c linux-2.4.32-rc1.mips/arch/mips64/kernel/linux32.c
---- linux-2.4.32-rc1/arch/mips64/kernel/linux32.c 2005-04-04 03:42:19.000000000 +0200
-+++ linux-2.4.32-rc1.mips/arch/mips64/kernel/linux32.c 2005-04-22 15:01:00.000000000 +0200
-@@ -1101,6 +1101,7 @@
- * specially as they have atomicity guarantees and can handle
- * iovec's natively
- */
-+ inode = file->f_dentry->d_inode;
- if (inode->i_sock) {
- int err;
- err = sock_readv_writev(type, inode, file, iov, count, tot_len);
-@@ -1187,72 +1188,19 @@
- lseek back to original location. They fail just like lseek does on
- non-seekable files. */
-
--asmlinkage ssize_t sys32_pread(unsigned int fd, char * buf,
-- size_t count, u32 unused, u64 a4, u64 a5)
-+asmlinkage ssize_t sys32_pread(unsigned int fd, char *buf,
-+ size_t count, u32 unused, u64 a4, u64 a5)
- {
-- ssize_t ret;
-- struct file * file;
-- ssize_t (*read)(struct file *, char *, size_t, loff_t *);
-- loff_t pos;
--
-- ret = -EBADF;
-- file = fget(fd);
-- if (!file)
-- goto bad_file;
-- if (!(file->f_mode & FMODE_READ))
-- goto out;
-- pos = merge_64(a4, a5);
-- ret = locks_verify_area(FLOCK_VERIFY_READ, file->f_dentry->d_inode,
-- file, pos, count);
-- if (ret)
-- goto out;
-- ret = -EINVAL;
-- if (!file->f_op || !(read = file->f_op->read))
-- goto out;
-- if (pos < 0)
-- goto out;
-- ret = read(file, buf, count, &pos);
-- if (ret > 0)
-- dnotify_parent(file->f_dentry, DN_ACCESS);
--out:
-- fput(file);
--bad_file:
-- return ret;
-+ return sys_pread(fd, buf, count, merge_64(a4, a5));
- }
-
- asmlinkage ssize_t sys32_pwrite(unsigned int fd, const char * buf,
- size_t count, u32 unused, u64 a4, u64 a5)
- {
-- ssize_t ret;
-- struct file * file;
-- ssize_t (*write)(struct file *, const char *, size_t, loff_t *);
-- loff_t pos;
-+ return sys_pwrite(fd, buf, count, merge_64(a4, a5));
-+}
-
-- ret = -EBADF;
-- file = fget(fd);
-- if (!file)
-- goto bad_file;
-- if (!(file->f_mode & FMODE_WRITE))
-- goto out;
-- pos = merge_64(a4, a5);
-- ret = locks_verify_area(FLOCK_VERIFY_WRITE, file->f_dentry->d_inode,
-- file, pos, count);
-- if (ret)
-- goto out;
-- ret = -EINVAL;
-- if (!file->f_op || !(write = file->f_op->write))
-- goto out;
-- if (pos < 0)
-- goto out;
-
-- ret = write(file, buf, count, &pos);
-- if (ret > 0)
-- dnotify_parent(file->f_dentry, DN_MODIFY);
--out:
-- fput(file);
--bad_file:
-- return ret;
--}
- /*
- * Ooo, nasty. We need here to frob 32-bit unsigned longs to
- * 64-bit unsigned longs.
-diff -Nur linux-2.4.32-rc1/arch/mips64/kernel/process.c linux-2.4.32-rc1.mips/arch/mips64/kernel/process.c
---- linux-2.4.32-rc1/arch/mips64/kernel/process.c 2003-08-25 13:44:40.000000000 +0200
-+++ linux-2.4.32-rc1.mips/arch/mips64/kernel/process.c 2005-04-14 12:41:44.000000000 +0200
-@@ -125,6 +125,25 @@
- return 1;
- }
-
-+void dump_regs(elf_greg_t *gp, struct pt_regs *regs)
-+{
-+ int i;
-+
-+ for (i = 0; i < EF_REG0; i++)
-+ gp[i] = 0;
-+ gp[EF_REG0] = 0;
-+ for (i = 1; i <= 31; i++)
-+ gp[EF_REG0 + i] = regs->regs[i];
-+ gp[EF_REG26] = 0;
-+ gp[EF_REG27] = 0;
-+ gp[EF_LO] = regs->lo;
-+ gp[EF_HI] = regs->hi;
-+ gp[EF_CP0_EPC] = regs->cp0_epc;
-+ gp[EF_CP0_BADVADDR] = regs->cp0_badvaddr;
-+ gp[EF_CP0_STATUS] = regs->cp0_status;
-+ gp[EF_CP0_CAUSE] = regs->cp0_cause;
-+}
-+
- /*
- * Create a kernel thread
- */
-diff -Nur linux-2.4.32-rc1/arch/mips64/kernel/scall_64.S linux-2.4.32-rc1.mips/arch/mips64/kernel/scall_64.S
---- linux-2.4.32-rc1/arch/mips64/kernel/scall_64.S 2005-01-19 15:09:32.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/kernel/scall_64.S 2005-02-07 22:21:54.000000000 +0100
-@@ -102,15 +102,14 @@
-
- trace_a_syscall:
- SAVE_STATIC
-- sd t2,PT_R1(sp)
-+ move s0, t2
- jal syscall_trace
-- ld t2,PT_R1(sp)
-
- ld a0, PT_R4(sp) # Restore argument registers
- ld a1, PT_R5(sp)
- ld a2, PT_R6(sp)
- ld a3, PT_R7(sp)
-- jalr t2
-+ jalr s0
-
- li t0, -EMAXERRNO - 1 # error?
- sltu t0, t0, v0
-diff -Nur linux-2.4.32-rc1/arch/mips64/kernel/scall_n32.S linux-2.4.32-rc1.mips/arch/mips64/kernel/scall_n32.S
---- linux-2.4.32-rc1/arch/mips64/kernel/scall_n32.S 2005-01-19 15:09:32.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/kernel/scall_n32.S 2005-02-07 22:21:54.000000000 +0100
-@@ -106,15 +106,14 @@
-
- trace_a_syscall:
- SAVE_STATIC
-- sd t2,PT_R1(sp)
-+ move s0, t2
- jal syscall_trace
-- ld t2,PT_R1(sp)
-
- ld a0, PT_R4(sp) # Restore argument registers
- ld a1, PT_R5(sp)
- ld a2, PT_R6(sp)
- ld a3, PT_R7(sp)
-- jalr t2
-+ jalr s0
-
- li t0, -EMAXERRNO - 1 # error?
- sltu t0, t0, v0
-diff -Nur linux-2.4.32-rc1/arch/mips64/kernel/scall_o32.S linux-2.4.32-rc1.mips/arch/mips64/kernel/scall_o32.S
---- linux-2.4.32-rc1/arch/mips64/kernel/scall_o32.S 2005-01-19 15:09:32.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/kernel/scall_o32.S 2005-02-14 04:52:57.000000000 +0100
-@@ -118,9 +118,8 @@
- sd a6, PT_R10(sp)
- sd a7, PT_R11(sp)
-
-- sd t2,PT_R1(sp)
-+ move s0, t2
- jal syscall_trace
-- ld t2,PT_R1(sp)
-
- ld a0, PT_R4(sp) # Restore argument registers
- ld a1, PT_R5(sp)
-@@ -129,7 +128,7 @@
- ld a4, PT_R8(sp)
- ld a5, PT_R9(sp)
-
-- jalr t2
-+ jalr s0
-
- li t0, -EMAXERRNO - 1 # error?
- sltu t0, t0, v0
-@@ -576,6 +575,8 @@
- sys_call_table:
- syscalltable
-
-+ .purgem sys
-+
- .macro sys function, nargs
- .byte \nargs
- .endm
-diff -Nur linux-2.4.32-rc1/arch/mips64/kernel/setup.c linux-2.4.32-rc1.mips/arch/mips64/kernel/setup.c
---- linux-2.4.32-rc1/arch/mips64/kernel/setup.c 2005-01-19 15:09:32.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/kernel/setup.c 2004-11-22 14:38:26.000000000 +0100
-@@ -129,14 +129,6 @@
- */
- load_mmu();
-
-- /*
-- * On IP27, I am seeing the TS bit set when the kernel is loaded.
-- * Maybe because the kernel is in ckseg0 and not xkphys? Clear it
-- * anyway ...
-- */
-- clear_c0_status(ST0_BEV|ST0_TS|ST0_CU1|ST0_CU2|ST0_CU3);
-- set_c0_status(ST0_CU0|ST0_KX|ST0_SX|ST0_FR);
--
- start_kernel();
- }
-
-diff -Nur linux-2.4.32-rc1/arch/mips64/kernel/signal_n32.c linux-2.4.32-rc1.mips/arch/mips64/kernel/signal_n32.c
---- linux-2.4.32-rc1/arch/mips64/kernel/signal_n32.c 2005-01-19 15:09:33.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/kernel/signal_n32.c 2005-02-07 22:10:53.000000000 +0100
-@@ -68,7 +68,7 @@
- };
-
- extern asmlinkage int restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc);
--extern int inline setup_sigcontext(struct pt_regs *regs, struct sigcontext *sc);
-+extern int setup_sigcontext(struct pt_regs *regs, struct sigcontext *sc);
-
- asmlinkage void sysn32_rt_sigreturn(abi64_no_regargs, struct pt_regs regs)
- {
-diff -Nur linux-2.4.32-rc1/arch/mips64/kernel/traps.c linux-2.4.32-rc1.mips/arch/mips64/kernel/traps.c
---- linux-2.4.32-rc1/arch/mips64/kernel/traps.c 2005-01-19 15:09:33.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/kernel/traps.c 2005-04-12 22:25:34.000000000 +0200
-@@ -462,9 +462,10 @@
- }
- ll_task = current;
-
-+ compute_return_epc(regs);
-+
- regs->regs[(opcode & RT) >> 16] = value;
-
-- compute_return_epc(regs);
- return;
-
- sig:
-@@ -495,8 +496,8 @@
- goto sig;
- }
- if (ll_bit == 0 || ll_task != current) {
-- regs->regs[reg] = 0;
- compute_return_epc(regs);
-+ regs->regs[reg] = 0;
- return;
- }
-
-@@ -505,9 +506,9 @@
- goto sig;
- }
-
-+ compute_return_epc(regs);
- regs->regs[reg] = 1;
-
-- compute_return_epc(regs);
- return;
-
- sig:
-@@ -809,13 +810,18 @@
- void __init per_cpu_trap_init(void)
- {
- unsigned int cpu = smp_processor_id();
-+ unsigned int status_set = ST0_CU0|ST0_FR|ST0_KX|ST0_SX|ST0_UX;
-
-- /* Some firmware leaves the BEV flag set, clear it. */
-- clear_c0_status(ST0_CU1|ST0_CU2|ST0_CU3|ST0_BEV);
-- set_c0_status(ST0_CU0|ST0_FR|ST0_KX|ST0_SX|ST0_UX);
--
-+ /*
-+ * Disable coprocessors, enable 64-bit addressing and set FPU
-+ * for the 32/32 FPR register model. Reset the BEV flag that
-+ * some firmware may have left set and the TS bit (for IP27).
-+ * Set XX for ISA IV code to work.
-+ */
- if (current_cpu_data.isa_level == MIPS_CPU_ISA_IV)
-- set_c0_status(ST0_XX);
-+ status_set |= ST0_XX;
-+ change_c0_status(ST0_CU|ST0_FR|ST0_BEV|ST0_TS|ST0_KX|ST0_SX|ST0_UX,
-+ status_set);
-
- /*
- * Some MIPS CPUs have a dedicated interrupt vector which reduces the
-@@ -825,13 +831,11 @@
- set_c0_cause(CAUSEF_IV);
-
- cpu_data[cpu].asid_cache = ASID_FIRST_VERSION;
-- write_c0_context(((long)(&pgd_current[cpu])) << 23);
-- write_c0_wired(0);
-+ TLBMISS_HANDLER_SETUP();
-
- atomic_inc(&init_mm.mm_count);
- current->active_mm = &init_mm;
-- if (current->mm)
-- BUG();
-+ BUG_ON(current->mm);
- enter_lazy_tlb(&init_mm, current, cpu);
- }
-
-@@ -842,8 +846,6 @@
- extern char except_vec4;
- unsigned long i;
-
-- per_cpu_trap_init();
--
- /* Copy the generic exception handlers to their final destination. */
- memcpy((void *) KSEG0 , &except_vec0_generic, 0x80);
- memcpy((void *)(KSEG0 + 0x180), &except_vec3_generic, 0x80);
-@@ -933,6 +935,5 @@
-
- flush_icache_range(KSEG0, KSEG0 + 0x400);
-
-- atomic_inc(&init_mm.mm_count); /* XXX UP? */
-- current->active_mm = &init_mm;
-+ per_cpu_trap_init();
- }
-diff -Nur linux-2.4.32-rc1/arch/mips64/mm/cerr-sb1.c linux-2.4.32-rc1.mips/arch/mips64/mm/cerr-sb1.c
---- linux-2.4.32-rc1/arch/mips64/mm/cerr-sb1.c 2004-02-18 14:36:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/mm/cerr-sb1.c 2004-12-13 18:37:26.000000000 +0100
-@@ -252,14 +252,14 @@
-
- /* Masks to select bits for Hamming parity, mask_72_64[i] for bit[i] */
- static const uint64_t mask_72_64[8] = {
-- 0x0738C808099264FFL,
-- 0x38C808099264FF07L,
-- 0xC808099264FF0738L,
-- 0x08099264FF0738C8L,
-- 0x099264FF0738C808L,
-- 0x9264FF0738C80809L,
-- 0x64FF0738C8080992L,
-- 0xFF0738C808099264L
-+ 0x0738C808099264FFULL,
-+ 0x38C808099264FF07ULL,
-+ 0xC808099264FF0738ULL,
-+ 0x08099264FF0738C8ULL,
-+ 0x099264FF0738C808ULL,
-+ 0x9264FF0738C80809ULL,
-+ 0x64FF0738C8080992ULL,
-+ 0xFF0738C808099264ULL
- };
-
- /* Calculate the parity on a range of bits */
-@@ -331,9 +331,9 @@
- ((lru >> 4) & 0x3),
- ((lru >> 6) & 0x3));
- }
-- va = (taglo & 0xC0000FFFFFFFE000) | addr;
-+ va = (taglo & 0xC0000FFFFFFFE000ULL) | addr;
- if ((taglo & (1 << 31)) && (((taglo >> 62) & 0x3) == 3))
-- va |= 0x3FFFF00000000000;
-+ va |= 0x3FFFF00000000000ULL;
- valid = ((taghi >> 29) & 1);
- if (valid) {
- tlo_tmp = taglo & 0xfff3ff;
-@@ -474,7 +474,7 @@
- : "r" ((way << 13) | addr));
-
- taglo = ((unsigned long long)taglohi << 32) | taglolo;
-- pa = (taglo & 0xFFFFFFE000) | addr;
-+ pa = (taglo & 0xFFFFFFE000ULL) | addr;
- if (way == 0) {
- lru = (taghi >> 14) & 0xff;
- prom_printf("[Bank %d Set 0x%02x] LRU > %d %d %d %d > MRU\n",
-diff -Nur linux-2.4.32-rc1/arch/mips64/mm/c-r4k.c linux-2.4.32-rc1.mips/arch/mips64/mm/c-r4k.c
---- linux-2.4.32-rc1/arch/mips64/mm/c-r4k.c 2005-01-19 15:09:33.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/mm/c-r4k.c 2005-02-06 22:55:42.000000000 +0100
-@@ -867,9 +867,16 @@
- * normally they'd suffer from aliases but magic in the hardware deals
- * with that for us so we don't need to take care ourselves.
- */
-- if (c->cputype != CPU_R10000 && c->cputype != CPU_R12000)
-- if (c->dcache.waysize > PAGE_SIZE)
-- c->dcache.flags |= MIPS_CACHE_ALIASES;
-+ switch (c->cputype) {
-+ case CPU_R10000:
-+ case CPU_R12000:
-+ break;
-+ case CPU_24K:
-+ if (!(read_c0_config7() & (1 << 16)))
-+ default:
-+ if (c->dcache.waysize > PAGE_SIZE)
-+ c->dcache.flags |= MIPS_CACHE_ALIASES;
-+ }
-
- switch (c->cputype) {
- case CPU_20KC:
-@@ -1070,9 +1077,6 @@
- setup_scache();
- coherency_setup();
-
-- if (c->dcache.sets * c->dcache.ways > PAGE_SIZE)
-- c->dcache.flags |= MIPS_CACHE_ALIASES;
--
- r4k_blast_dcache_page_setup();
- r4k_blast_dcache_page_indexed_setup();
- r4k_blast_dcache_setup();
-diff -Nur linux-2.4.32-rc1/arch/mips64/mm/tlbex-r4k.S linux-2.4.32-rc1.mips/arch/mips64/mm/tlbex-r4k.S
---- linux-2.4.32-rc1/arch/mips64/mm/tlbex-r4k.S 2004-02-18 14:36:30.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/mm/tlbex-r4k.S 2005-06-06 16:46:22.000000000 +0200
-@@ -125,6 +125,33 @@
- nop
- END(except_vec1_r4k)
-
-+ __FINIT
-+
-+ .align 5
-+LEAF(handle_vec1_r4k)
-+ .set noat
-+ LOAD_PTE2 k1 k0 9f
-+ ld k0, 0(k1) # get even pte
-+ ld k1, 8(k1) # get odd pte
-+ PTE_RELOAD k0 k1
-+ mtc0_tlbw_hazard
-+ tlbwr
-+ tlbw_eret_hazard
-+ eret
-+
-+9: # handle the vmalloc range
-+ LOAD_KPTE2 k1 k0 invalid_vmalloc_address
-+ ld k0, 0(k1) # get even pte
-+ ld k1, 8(k1) # get odd pte
-+ PTE_RELOAD k0 k1
-+ mtc0_tlbw_hazard
-+ tlbwr
-+ tlbw_eret_hazard
-+ eret
-+END(handle_vec1_r4k)
-+
-+ __INIT
-+
- LEAF(except_vec1_sb1)
- #if BCM1250_M3_WAR
- dmfc0 k0, CP0_BADVADDR
-@@ -134,28 +161,24 @@
- bnez k0, 1f
- #endif
- .set noat
-- dla k0, handle_vec1_r4k
-+ dla k0, handle_vec1_sb1
- jr k0
- nop
-
- 1: eret
-- nop
- END(except_vec1_sb1)
-
- __FINIT
-
- .align 5
--LEAF(handle_vec1_r4k)
-+LEAF(handle_vec1_sb1)
- .set noat
- LOAD_PTE2 k1 k0 9f
- ld k0, 0(k1) # get even pte
- ld k1, 8(k1) # get odd pte
- PTE_RELOAD k0 k1
-- rm9000_tlb_hazard
-- b 1f
-- tlbwr
--1: nop
-- rm9000_tlb_hazard
-+ mtc0_tlbw_hazard
-+ tlbwr
- eret
-
- 9: # handle the vmalloc range
-@@ -163,13 +186,10 @@
- ld k0, 0(k1) # get even pte
- ld k1, 8(k1) # get odd pte
- PTE_RELOAD k0 k1
-- rm9000_tlb_hazard
-- b 1f
-- tlbwr
--1: nop
-- rm9000_tlb_hazard
-+ mtc0_tlbw_hazard
-+ tlbwr
- eret
--END(handle_vec1_r4k)
-+END(handle_vec1_sb1)
-
-
- __INIT
-@@ -195,10 +215,8 @@
- ld k0, 0(k1) # get even pte
- ld k1, 8(k1) # get odd pte
- PTE_RELOAD k0 k1
-- rm9000_tlb_hazard
-- nop
-+ mtc0_tlbw_hazard
- tlbwr
-- rm9000_tlb_hazard
- eret
-
- 9: # handle the vmalloc range
-@@ -206,10 +224,8 @@
- ld k0, 0(k1) # get even pte
- ld k1, 8(k1) # get odd pte
- PTE_RELOAD k0 k1
-- rm9000_tlb_hazard
-- nop
-+ mtc0_tlbw_hazard
- tlbwr
-- rm9000_tlb_hazard
- eret
- END(handle_vec1_r10k)
-
-diff -Nur linux-2.4.32-rc1/arch/mips64/mm/tlb-r4k.c linux-2.4.32-rc1.mips/arch/mips64/mm/tlb-r4k.c
---- linux-2.4.32-rc1/arch/mips64/mm/tlb-r4k.c 2005-01-19 15:09:33.000000000 +0100
-+++ linux-2.4.32-rc1.mips/arch/mips64/mm/tlb-r4k.c 2004-11-25 23:18:38.000000000 +0100
-@@ -1,24 +1,12 @@
- /*
-- * Carsten Langgaard, carstenl@mips.com
-- * Copyright (C) 2002 MIPS Technologies, Inc. All rights reserved.
-- *
-- * This program is free software; you can distribute it and/or modify it
-- * under the terms of the GNU General Public License (Version 2) as
-- * published by the Free Software Foundation.
-- *
-- * This program is distributed in the hope 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
-+ * 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.
- *
-- * 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.
-- *
-- * MIPS64 CPU variant specific MMU routines.
-- * These routine are not optimized in any way, they are done in a generic way
-- * so they can be used on all MIPS64 compliant CPUs, and also done in an
-- * attempt not to break anything for the R4xx0 style CPUs.
-+ * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
-+ * Copyright (C) 1997, 1998, 1999, 2000 Ralf Baechle ralf@gnu.org
-+ * Carsten Langgaard, carstenl@mips.com
-+ * Copyright (C) 2002 MIPS Technologies, Inc. All rights reserved.
- */
- #include <linux/init.h>
- #include <linux/sched.h>
-@@ -30,9 +18,6 @@
- #include <asm/pgtable.h>
- #include <asm/system.h>
-
--#undef DEBUG_TLB
--#undef DEBUG_TLBUPDATE
--
- extern void except_vec1_r4k(void);
-
- /* CP0 hazard avoidance. */
-@@ -46,31 +31,23 @@
- unsigned long old_ctx;
- int entry;
-
--#ifdef DEBUG_TLB
-- printk("[tlball]");
--#endif
--
- local_irq_save(flags);
- /* Save old context and create impossible VPN2 value */
- old_ctx = read_c0_entryhi();
-- write_c0_entryhi(XKPHYS);
- write_c0_entrylo0(0);
- write_c0_entrylo1(0);
-- BARRIER;
-
- entry = read_c0_wired();
-
- /* Blast 'em all away. */
-- while(entry < current_cpu_data.tlbsize) {
-- /* Make sure all entries differ. */
-- write_c0_entryhi(XKPHYS+entry*0x2000);
-+ while (entry < current_cpu_data.tlbsize) {
-+ write_c0_entryhi(XKPHYS + entry*0x2000);
- write_c0_index(entry);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_write_indexed();
-- BARRIER;
- entry++;
- }
-- BARRIER;
-+ tlbw_use_hazard();
- write_c0_entryhi(old_ctx);
- local_irq_restore(flags);
- }
-@@ -79,12 +56,8 @@
- {
- int cpu = smp_processor_id();
-
-- if (cpu_context(cpu, mm) != 0) {
--#ifdef DEBUG_TLB
-- printk("[tlbmm<%d>]", mm->context);
--#endif
-+ if (cpu_context(cpu, mm) != 0)
- drop_mmu_context(mm,cpu);
-- }
- }
-
- void local_flush_tlb_range(struct mm_struct *mm, unsigned long start,
-@@ -96,10 +69,6 @@
- unsigned long flags;
- int size;
-
--#ifdef DEBUG_TLB
-- printk("[tlbrange<%02x,%08lx,%08lx>]", (mm->context & ASID_MASK),
-- start, end);
--#endif
- local_irq_save(flags);
- size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
- size = (size + 1) >> 1;
-@@ -110,25 +79,25 @@
- start &= (PAGE_MASK << 1);
- end += ((PAGE_SIZE << 1) - 1);
- end &= (PAGE_MASK << 1);
-- while(start < end) {
-+ while (start < end) {
- int idx;
-
- write_c0_entryhi(start | newpid);
- start += (PAGE_SIZE << 1);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_probe();
- BARRIER;
- idx = read_c0_index();
- write_c0_entrylo0(0);
- write_c0_entrylo1(0);
-- if(idx < 0)
-+ if (idx < 0)
- continue;
- /* Make sure all entries differ. */
- write_c0_entryhi(XKPHYS+idx*0x2000);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_write_indexed();
-- BARRIER;
- }
-+ tlbw_use_hazard();
- write_c0_entryhi(oldpid);
- } else {
- drop_mmu_context(mm, cpu);
-@@ -145,28 +114,26 @@
- unsigned long flags;
- unsigned long oldpid, newpid, idx;
-
--#ifdef DEBUG_TLB
-- printk("[tlbpage<%d,%08lx>]", vma->vm_mm->context, page);
--#endif
- newpid = cpu_asid(cpu, vma->vm_mm);
- page &= (PAGE_MASK << 1);
- local_irq_save(flags);
- oldpid = read_c0_entryhi();
- write_c0_entryhi(page | newpid);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_probe();
- BARRIER;
- idx = read_c0_index();
- write_c0_entrylo0(0);
- write_c0_entrylo1(0);
-- if(idx < 0)
-+ if (idx < 0)
- goto finish;
- /* Make sure all entries differ. */
- write_c0_entryhi(XKPHYS+idx*0x2000);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_write_indexed();
-+ tlbw_use_hazard();
-+
- finish:
-- BARRIER;
- write_c0_entryhi(oldpid);
- local_irq_restore(flags);
- }
-@@ -186,7 +153,7 @@
-
- local_irq_save(flags);
- write_c0_entryhi(page);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_probe();
- BARRIER;
- idx = read_c0_index();
-@@ -195,10 +162,12 @@
- if (idx >= 0) {
- /* Make sure all entries differ. */
- write_c0_entryhi(KSEG0+idx*0x2000);
-+ mtc0_tlbw_hazard();
- tlb_write_indexed();
-+ tlbw_use_hazard();
- }
-- BARRIER;
- write_c0_entryhi(oldpid);
-+
- local_irq_restore(flags);
- }
-
-@@ -208,7 +177,6 @@
- void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte)
- {
- unsigned long flags;
-- unsigned int asid;
- pgd_t *pgdp;
- pmd_t *pmdp;
- pte_t *ptep;
-@@ -222,70 +190,58 @@
-
- pid = read_c0_entryhi() & ASID_MASK;
-
--#ifdef DEBUG_TLB
-- if ((pid != (cpu_asid(smp_processor_id(), vma->vm_mm))) ||
-- (cpu_context(smp_processor_id(), vma->vm_mm) == 0)) {
-- printk("update_mmu_cache: Wheee, bogus tlbpid mmpid=%d"
-- "tlbpid=%d\n", (int) (cpu_context(smp_processor_id(),
-- vma->vm_mm) & ASID_MASK), pid);
-- }
--#endif
--
- local_irq_save(flags);
- address &= (PAGE_MASK << 1);
-- write_c0_entryhi(address | (pid));
-+ write_c0_entryhi(address | pid);
- pgdp = pgd_offset(vma->vm_mm, address);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_probe();
- BARRIER;
- pmdp = pmd_offset(pgdp, address);
- idx = read_c0_index();
- ptep = pte_offset(pmdp, address);
-- BARRIER;
- write_c0_entrylo0(pte_val(*ptep++) >> 6);
- write_c0_entrylo1(pte_val(*ptep) >> 6);
-- write_c0_entryhi(address | (pid));
-- BARRIER;
-- if(idx < 0) {
-+ write_c0_entryhi(address | pid);
-+ mtc0_tlbw_hazard();
-+ if (idx < 0)
- tlb_write_random();
-- } else {
-+ else
- tlb_write_indexed();
-- }
-- BARRIER;
-+ tlbw_use_hazard();
- write_c0_entryhi(pid);
-- BARRIER;
- local_irq_restore(flags);
- }
-
--void add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
-- unsigned long entryhi, unsigned long pagemask)
-+void __init add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
-+ unsigned long entryhi, unsigned long pagemask)
- {
-- unsigned long flags;
-- unsigned long wired;
-- unsigned long old_pagemask;
-- unsigned long old_ctx;
--
-- local_irq_save(flags);
-- /* Save old context and create impossible VPN2 value */
-- old_ctx = (read_c0_entryhi() & ASID_MASK);
-- old_pagemask = read_c0_pagemask();
-- wired = read_c0_wired();
-- write_c0_wired(wired + 1);
-- write_c0_index(wired);
-- BARRIER;
-- write_c0_pagemask(pagemask);
-- write_c0_entryhi(entryhi);
-- write_c0_entrylo0(entrylo0);
-- write_c0_entrylo1(entrylo1);
-- BARRIER;
-- tlb_write_indexed();
-- BARRIER;
--
-- write_c0_entryhi(old_ctx);
-- BARRIER;
-- write_c0_pagemask(old_pagemask);
-- local_flush_tlb_all();
-- local_irq_restore(flags);
-+ unsigned long flags;
-+ unsigned long wired;
-+ unsigned long old_pagemask;
-+ unsigned long old_ctx;
-+
-+ local_irq_save(flags);
-+ /* Save old context and create impossible VPN2 value */
-+ old_ctx = read_c0_entryhi() & ASID_MASK;
-+ old_pagemask = read_c0_pagemask();
-+ wired = read_c0_wired();
-+ write_c0_wired(wired + 1);
-+ write_c0_index(wired);
-+ BARRIER;
-+ write_c0_pagemask(pagemask);
-+ write_c0_entryhi(entryhi);
-+ write_c0_entrylo0(entrylo0);
-+ write_c0_entrylo1(entrylo1);
-+ mtc0_tlbw_hazard();
-+ tlb_write_indexed();
-+ tlbw_use_hazard();
-+
-+ write_c0_entryhi(old_ctx);
-+ BARRIER;
-+ write_c0_pagemask(old_pagemask);
-+ local_flush_tlb_all();
-+ local_irq_restore(flags);
- }
-
- /*
-@@ -317,17 +273,15 @@
- }
-
- write_c0_index(temp_tlb_entry);
-- BARRIER;
- write_c0_pagemask(pagemask);
- write_c0_entryhi(entryhi);
- write_c0_entrylo0(entrylo0);
- write_c0_entrylo1(entrylo1);
-- BARRIER;
-+ mtc0_tlbw_hazard();
- tlb_write_indexed();
-- BARRIER;
-+ tlbw_use_hazard();
-
- write_c0_entryhi(old_ctx);
-- BARRIER;
- write_c0_pagemask(old_pagemask);
- out:
- local_irq_restore(flags);
-@@ -348,15 +302,23 @@
- return;
-
- config1 = read_c0_config1();
-- if (!((config1 >> 7) & 3))
-- panic("No MMU present");
-+ if (!((config >> 7) & 3))
-+ panic("No TLB present");
-
- c->tlbsize = ((config1 >> 25) & 0x3f) + 1;
- }
-
- void __init r4k_tlb_init(void)
- {
-- unsigned long config = read_c0_config();
-+ unsigned int config = read_c0_config();
-+
-+ /*
-+ * You should never change this register:
-+ * - On R4600 1.7 the tlbp never hits for pages smaller than
-+ * the value in the c0_pagemask register.
-+ * - The entire mm handling assumes the c0_pagemask register to
-+ * be set for 4kb pages.
-+ */
- probe_tlb(config);
- write_c0_pagemask(PM_DEFAULT_MASK);
- write_c0_wired(0);
-diff -Nur linux-2.4.32-rc1/drivers/char/au1000_gpio.c linux-2.4.32-rc1.mips/drivers/char/au1000_gpio.c
---- linux-2.4.32-rc1/drivers/char/au1000_gpio.c 2003-08-25 13:44:41.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/char/au1000_gpio.c 2003-12-20 14:18:51.000000000 +0100
-@@ -246,7 +246,7 @@
-
- static struct miscdevice au1000gpio_miscdev =
- {
-- GPIO_MINOR,
-+ MISC_DYNAMIC_MINOR,
- "au1000_gpio",
- &au1000gpio_fops
- };
-diff -Nur linux-2.4.32-rc1/drivers/char/au1550_psc_spi.c linux-2.4.32-rc1.mips/drivers/char/au1550_psc_spi.c
---- linux-2.4.32-rc1/drivers/char/au1550_psc_spi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/char/au1550_psc_spi.c 2005-02-11 21:37:24.000000000 +0100
-@@ -0,0 +1,466 @@
-+/*
-+ * Driver for Alchemy Au1550 SPI on the PSC.
-+ *
-+ * Copyright 2004 Embedded Edge, LLC.
-+ * dan@embeddededge.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <linux/miscdevice.h>
-+#include <linux/init.h>
-+#include <asm/uaccess.h>
-+#include <asm/io.h>
-+#include <asm/au1000.h>
-+#include <asm/au1550_spi.h>
-+#include <asm/au1xxx_psc.h>
-+
-+#ifdef CONFIG_MIPS_PB1550
-+#include <asm/pb1550.h>
-+#endif
-+
-+#ifdef CONFIG_MIPS_DB1550
-+#include <asm/db1x00.h>
-+#endif
-+
-+#ifdef CONFIG_MIPS_PB1200
-+#include <asm/pb1200.h>
-+#endif
-+
-+/* This is just a simple programmed I/O SPI interface on the PSC of the 1550.
-+ * We support open, close, write, and ioctl. The SPI is a full duplex
-+ * interface, you can't read without writing. So, the write system call
-+ * copies the bytes out to the SPI, and whatever is returned is placed
-+ * in the same buffer. Kinda weird, maybe we'll change it, but for now
-+ * it works OK.
-+ * I didn't implement any DMA yet, and it's a debate about the necessity.
-+ * The SPI clocks are usually quite fast, so data is sent/received as
-+ * quickly as you can stuff the FIFO. The overhead of DMA and interrupts
-+ * are usually far greater than the data transfer itself. If, however,
-+ * we find applications that move large amounts of data, we may choose
-+ * use the overhead of buffering and DMA to do the work.
-+ */
-+
-+/* The maximum clock rate specified in the manual is 2mHz.
-+*/
-+#define MAX_BAUD_RATE (2 * 1000000)
-+#define PSC_INTCLK_RATE (32 * 1000000)
-+
-+static int inuse;
-+
-+/* We have to know what the user requested for the data length
-+ * so we know how to stuff the fifo. The FIFO is 32 bits wide,
-+ * and we have to load it with the bits to go in a single transfer.
-+ */
-+static uint spi_datalen;
-+
-+static int
-+au1550spi_master_done( int ms )
-+{
-+ int timeout=ms;
-+ volatile psc_spi_t *sp;
-+
-+ sp = (volatile psc_spi_t *)SPI_PSC_BASE;
-+
-+ /* Loop until MD is set or timeout has expired */
-+ while(!(sp->psc_spievent & PSC_SPIEVNT_MD) && timeout--) udelay(1000);
-+
-+ if ( !timeout )
-+ return 0;
-+ else
-+ sp->psc_spievent |= PSC_SPIEVNT_MD;
-+
-+ return 1;
-+}
-+
-+static int
-+au1550spi_open(struct inode *inode, struct file *file)
-+{
-+ if (inuse)
-+ return -EBUSY;
-+
-+ inuse = 1;
-+
-+ MOD_INC_USE_COUNT;
-+
-+ return 0;
-+}
-+
-+static ssize_t
-+au1550spi_write(struct file *fp, const char *bp, size_t count, loff_t *ppos)
-+{
-+ int bytelen, i;
-+ size_t rcount, retval;
-+ unsigned char sb, *rp, *wp;
-+ uint fifoword, pcr, stat;
-+ volatile psc_spi_t *sp;
-+
-+ /* Get the number of bytes per transfer.
-+ */
-+ bytelen = ((spi_datalen - 1) / 8) + 1;
-+
-+ /* User needs to send us multiple of this count.
-+ */
-+ if ((count % bytelen) != 0)
-+ return -EINVAL;
-+
-+ rp = wp = (unsigned char *)bp;
-+ retval = rcount = count;
-+
-+ /* Reset the FIFO.
-+ */
-+ sp = (volatile psc_spi_t *)SPI_PSC_BASE;
-+ sp->psc_spipcr = (PSC_SPIPCR_RC | PSC_SPIPCR_TC);
-+ au_sync();
-+ do {
-+ pcr = sp->psc_spipcr;
-+ au_sync();
-+ } while (pcr != 0);
-+
-+ /* Prime the transmit FIFO.
-+ */
-+ while (count > 0) {
-+ fifoword = 0;
-+ for (i=0; i<bytelen; i++) {
-+ fifoword <<= 8;
-+ if (get_user(sb, wp) < 0)
-+ return -EFAULT;
-+ fifoword |= sb;
-+ wp++;
-+ }
-+ count -= bytelen;
-+ if (count <= 0)
-+ fifoword |= PSC_SPITXRX_LC;
-+ sp->psc_spitxrx = fifoword;
-+ au_sync();
-+ stat = sp->psc_spistat;
-+ au_sync();
-+ if (stat & PSC_SPISTAT_TF)
-+ break;
-+ }
-+
-+ /* Start the transfer.
-+ */
-+ sp->psc_spipcr = PSC_SPIPCR_MS;
-+ au_sync();
-+
-+ /* Now, just keep the transmit fifo full and empty the receive.
-+ */
-+ while (count > 0) {
-+ stat = sp->psc_spistat;
-+ au_sync();
-+ while ((stat & PSC_SPISTAT_RE) == 0) {
-+ fifoword = sp->psc_spitxrx;
-+ au_sync();
-+ for (i=0; i<bytelen; i++) {
-+ sb = fifoword & 0xff;
-+ if (put_user(sb, rp) < 0)
-+ return -EFAULT;
-+ fifoword >>= 8;
-+ rp++;
-+ }
-+ rcount -= bytelen;
-+ stat = sp->psc_spistat;
-+ au_sync();
-+ }
-+ if ((stat & PSC_SPISTAT_TF) == 0) {
-+ fifoword = 0;
-+ for (i=0; i<bytelen; i++) {
-+ fifoword <<= 8;
-+ if (get_user(sb, wp) < 0)
-+ return -EFAULT;
-+ fifoword |= sb;
-+ wp++;
-+ }
-+ count -= bytelen;
-+ if (count <= 0)
-+ fifoword |= PSC_SPITXRX_LC;
-+ sp->psc_spitxrx = fifoword;
-+ au_sync();
-+ }
-+ }
-+
-+ /* All of the bytes for transmit have been written. Hang
-+ * out waiting for any residual bytes that are yet to be
-+ * read from the fifo.
-+ */
-+ while (rcount > 0) {
-+ stat = sp->psc_spistat;
-+ au_sync();
-+ if ((stat & PSC_SPISTAT_RE) == 0) {
-+ fifoword = sp->psc_spitxrx;
-+ au_sync();
-+ for (i=0; i<bytelen; i++) {
-+ sb = fifoword & 0xff;
-+ if (put_user(sb, rp) < 0)
-+ return -EFAULT;
-+ fifoword >>= 8;
-+ rp++;
-+ }
-+ rcount -= bytelen;
-+ }
-+ }
-+
-+ /* Wait for MasterDone event. 30ms timeout */
-+ if (!au1550spi_master_done(30) ) retval = -EFAULT;
-+ return retval;
-+}
-+
-+static int
-+au1550spi_release(struct inode *inode, struct file *file)
-+{
-+ MOD_DEC_USE_COUNT;
-+
-+ inuse = 0;
-+
-+ return 0;
-+}
-+
-+/* Set the baud rate closest to the request, then return the actual
-+ * value we are using.
-+ */
-+static uint
-+set_baud_rate(uint baud)
-+{
-+ uint rate, tmpclk, brg, ctl, stat;
-+ volatile psc_spi_t *sp;
-+
-+ /* For starters, the input clock is divided by two.
-+ */
-+ tmpclk = PSC_INTCLK_RATE/2;
-+
-+ rate = tmpclk / baud;
-+
-+ /* The dividers work as follows:
-+ * baud = tmpclk / (2 * (brg + 1))
-+ */
-+ brg = (rate/2) - 1;
-+
-+ /* Test BRG to ensure it will fit into the 6 bits allocated.
-+ */
-+
-+ /* Make sure the device is disabled while we make the change.
-+ */
-+ sp = (volatile psc_spi_t *)SPI_PSC_BASE;
-+ ctl = sp->psc_spicfg;
-+ au_sync();
-+ sp->psc_spicfg = ctl & ~PSC_SPICFG_DE_ENABLE;
-+ au_sync();
-+ ctl = PSC_SPICFG_CLR_BAUD(ctl);
-+ ctl |= PSC_SPICFG_SET_BAUD(brg);
-+ sp->psc_spicfg = ctl;
-+ au_sync();
-+
-+ /* If the device was running prior to getting here, wait for
-+ * it to restart.
-+ */
-+ if (ctl & PSC_SPICFG_DE_ENABLE) {
-+ do {
-+ stat = sp->psc_spistat;
-+ au_sync();
-+ } while ((stat & PSC_SPISTAT_DR) == 0);
-+ }
-+
-+ /* Return the actual value.
-+ */
-+ rate = tmpclk / (2 * (brg + 1));
-+
-+ return(rate);
-+}
-+
-+static uint
-+set_word_len(uint len)
-+{
-+ uint ctl, stat;
-+ volatile psc_spi_t *sp;
-+
-+ if ((len < 4) || (len > 24))
-+ return -EINVAL;
-+
-+ /* Make sure the device is disabled while we make the change.
-+ */
-+ sp = (volatile psc_spi_t *)SPI_PSC_BASE;
-+ ctl = sp->psc_spicfg;
-+ au_sync();
-+ sp->psc_spicfg = ctl & ~PSC_SPICFG_DE_ENABLE;
-+ au_sync();
-+ ctl = PSC_SPICFG_CLR_LEN(ctl);
-+ ctl |= PSC_SPICFG_SET_LEN(len);
-+ sp->psc_spicfg = ctl;
-+ au_sync();
-+
-+ /* If the device was running prior to getting here, wait for
-+ * it to restart.
-+ */
-+ if (ctl & PSC_SPICFG_DE_ENABLE) {
-+ do {
-+ stat = sp->psc_spistat;
-+ au_sync();
-+ } while ((stat & PSC_SPISTAT_DR) == 0);
-+ }
-+
-+ return 0;
-+}
-+
-+static int
-+au1550spi_ioctl(struct inode *inode, struct file *file,
-+ unsigned int cmd, unsigned long arg)
-+{
-+ int status;
-+ u32 val;
-+
-+ status = 0;
-+
-+ switch(cmd) {
-+ case AU1550SPI_WORD_LEN:
-+ status = set_word_len(arg);
-+ break;
-+
-+ case AU1550SPI_SET_BAUD:
-+ if (get_user(val, (u32 *)arg))
-+ return -EFAULT;
-+
-+ val = set_baud_rate(val);
-+ if (put_user(val, (u32 *)arg))
-+ return -EFAULT;
-+ break;
-+
-+ default:
-+ status = -ENOIOCTLCMD;
-+
-+ }
-+
-+ return status;
-+}
-+
-+
-+static struct file_operations au1550spi_fops =
-+{
-+ owner: THIS_MODULE,
-+ write: au1550spi_write,
-+ ioctl: au1550spi_ioctl,
-+ open: au1550spi_open,
-+ release: au1550spi_release,
-+};
-+
-+
-+static struct miscdevice au1550spi_miscdev =
-+{
-+ MISC_DYNAMIC_MINOR,
-+ "au1550_spi",
-+ &au1550spi_fops
-+};
-+
-+
-+int __init
-+au1550spi_init(void)
-+{
-+ uint clk, rate, stat;
-+ volatile psc_spi_t *sp;
-+
-+ /* Wire up Freq3 as a clock for the SPI. The PSC does
-+ * factor of 2 divisor, so run a higher rate so we can
-+ * get some granularity to the clock speeds.
-+ * We can't do this in board set up because the frequency
-+ * is computed too late.
-+ */
-+ rate = get_au1x00_speed();
-+ rate /= PSC_INTCLK_RATE;
-+
-+ /* The FRDIV in the frequency control is (FRDIV + 1) * 2
-+ */
-+ rate /=2;
-+ rate--;
-+ clk = au_readl(SYS_FREQCTRL1);
-+ au_sync();
-+ clk &= ~SYS_FC_FRDIV3_MASK;
-+ clk |= (rate << SYS_FC_FRDIV3_BIT);
-+ clk |= SYS_FC_FE3;
-+ au_writel(clk, SYS_FREQCTRL1);
-+ au_sync();
-+
-+ /* Set up the clock source routing to get Freq3 to PSC0_intclk.
-+ */
-+ clk = au_readl(SYS_CLKSRC);
-+ au_sync();
-+ clk &= ~0x03e0;
-+ clk |= (5 << 7);
-+ au_writel(clk, SYS_CLKSRC);
-+ au_sync();
-+
-+ /* Set up GPIO pin function to drive PSC0_SYNC1, which is
-+ * the SPI Select.
-+ */
-+ clk = au_readl(SYS_PINFUNC);
-+ au_sync();
-+ clk |= 1;
-+ au_writel(clk, SYS_PINFUNC);
-+ au_sync();
-+
-+ /* Now, set up the PSC for SPI PIO mode.
-+ */
-+ sp = (volatile psc_spi_t *)SPI_PSC_BASE;
-+ sp->psc_ctrl = PSC_CTRL_DISABLE;
-+ au_sync();
-+ sp->psc_sel = PSC_SEL_PS_SPIMODE;
-+ sp->psc_spicfg = 0;
-+ au_sync();
-+ sp->psc_ctrl = PSC_CTRL_ENABLE;
-+ au_sync();
-+ do {
-+ stat = sp->psc_spistat;
-+ au_sync();
-+ } while ((stat & PSC_SPISTAT_SR) == 0);
-+
-+ sp->psc_spicfg = (PSC_SPICFG_RT_FIFO8 | PSC_SPICFG_TT_FIFO8 |
-+ PSC_SPICFG_DD_DISABLE | PSC_SPICFG_MO);
-+ sp->psc_spicfg |= PSC_SPICFG_SET_LEN(8);
-+ spi_datalen = 8;
-+ sp->psc_spimsk = PSC_SPIMSK_ALLMASK;
-+ au_sync();
-+
-+ set_baud_rate(1000000);
-+
-+ sp->psc_spicfg |= PSC_SPICFG_DE_ENABLE;
-+ do {
-+ stat = sp->psc_spistat;
-+ au_sync();
-+ } while ((stat & PSC_SPISTAT_DR) == 0);
-+
-+ misc_register(&au1550spi_miscdev);
-+ printk("Au1550 SPI driver\n");
-+ return 0;
-+}
-+
-+
-+void __exit
-+au1550spi_exit(void)
-+{
-+ misc_deregister(&au1550spi_miscdev);
-+}
-+
-+
-+module_init(au1550spi_init);
-+module_exit(au1550spi_exit);
-diff -Nur linux-2.4.32-rc1/drivers/char/Config.in linux-2.4.32-rc1.mips/drivers/char/Config.in
---- linux-2.4.32-rc1/drivers/char/Config.in 2004-08-08 01:26:04.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/char/Config.in 2005-02-11 22:09:56.000000000 +0100
-@@ -313,14 +313,11 @@
- if [ "$CONFIG_OBSOLETE" = "y" -a "$CONFIG_ALPHA_BOOK1" = "y" ]; then
- bool 'Tadpole ANA H8 Support (OBSOLETE)' CONFIG_H8
- fi
--if [ "$CONFIG_MIPS" = "y" -a "$CONFIG_NEW_TIME_C" = "y" ]; then
-- tristate 'Generic MIPS RTC Support' CONFIG_MIPS_RTC
--fi
- if [ "$CONFIG_SGI_IP22" = "y" ]; then
-- bool 'SGI DS1286 RTC support' CONFIG_SGI_DS1286
-+ tristate 'Dallas DS1286 RTC support' CONFIG_DS1286
- fi
- if [ "$CONFIG_SGI_IP27" = "y" ]; then
-- bool 'SGI M48T35 RTC support' CONFIG_SGI_IP27_RTC
-+ tristate 'SGI M48T35 RTC support' CONFIG_SGI_IP27_RTC
- fi
- if [ "$CONFIG_TOSHIBA_RBTX4927" = "y" -o "$CONFIG_TOSHIBA_JMR3927" = "y" ]; then
- tristate 'Dallas DS1742 RTC support' CONFIG_DS1742
-@@ -383,6 +380,11 @@
- source drivers/char/drm/Config.in
- fi
- fi
-+
-+if [ "$CONFIG_X86" = "y" ]; then
-+ tristate 'ACP Modem (Mwave) support' CONFIG_MWAVE
-+fi
-+
- endmenu
-
- if [ "$CONFIG_HOTPLUG" = "y" -a "$CONFIG_PCMCIA" != "n" ]; then
-@@ -391,6 +393,7 @@
- if [ "$CONFIG_SOC_AU1X00" = "y" ]; then
- tristate ' Alchemy Au1x00 GPIO device support' CONFIG_AU1X00_GPIO
- tristate ' Au1000/ADS7846 touchscreen support' CONFIG_TS_AU1X00_ADS7846
-+ #tristate ' Alchemy Au1550 PSC SPI support' CONFIG_AU1550_PSC_SPI
- fi
- if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
- tristate ' ITE GPIO' CONFIG_ITE_GPIO
-diff -Nur linux-2.4.32-rc1/drivers/char/decserial.c linux-2.4.32-rc1.mips/drivers/char/decserial.c
---- linux-2.4.32-rc1/drivers/char/decserial.c 2003-08-25 13:44:41.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/char/decserial.c 2004-09-28 02:53:01.000000000 +0200
-@@ -3,95 +3,105 @@
- * choose the right serial device at boot time
- *
- * triemer 6-SEP-1998
-- * sercons.c is designed to allow the three different kinds
-+ * sercons.c is designed to allow the three different kinds
- * of serial devices under the decstation world to co-exist
-- * in the same kernel. The idea here is to abstract
-+ * in the same kernel. The idea here is to abstract
- * the pieces of the drivers that are common to this file
- * so that they do not clash at compile time and runtime.
- *
- * HK 16-SEP-1998 v0.002
- * removed the PROM console as this is not a real serial
- * device. Added support for PROM console in drivers/char/tty_io.c
-- * instead. Although it may work to enable more than one
-+ * instead. Although it may work to enable more than one
- * console device I strongly recommend to use only one.
-+ *
-+ * Copyright (C) 2004 Maciej W. Rozycki
- */
-
- #include <linux/config.h>
-+#include <linux/errno.h>
- #include <linux/init.h>
-+
- #include <asm/dec/machtype.h>
-+#include <asm/dec/serial.h>
-+
-+extern int register_zs_hook(unsigned int channel,
-+ struct dec_serial_hook *hook);
-+extern int unregister_zs_hook(unsigned int channel);
-+
-+extern int register_dz_hook(unsigned int channel,
-+ struct dec_serial_hook *hook);
-+extern int unregister_dz_hook(unsigned int channel);
-
-+int register_dec_serial_hook(unsigned int channel,
-+ struct dec_serial_hook *hook)
-+{
- #ifdef CONFIG_ZS
--extern int zs_init(void);
-+ if (IOASIC)
-+ return register_zs_hook(channel, hook);
- #endif
--
- #ifdef CONFIG_DZ
--extern int dz_init(void);
-+ if (!IOASIC)
-+ return register_dz_hook(channel, hook);
- #endif
-+ return 0;
-+}
-
--#ifdef CONFIG_SERIAL_DEC_CONSOLE
--
-+int unregister_dec_serial_hook(unsigned int channel)
-+{
- #ifdef CONFIG_ZS
--extern void zs_serial_console_init(void);
-+ if (IOASIC)
-+ return unregister_zs_hook(channel);
- #endif
--
- #ifdef CONFIG_DZ
--extern void dz_serial_console_init(void);
--#endif
--
-+ if (!IOASIC)
-+ return unregister_dz_hook(channel);
- #endif
-+ return 0;
-+}
-
--/* rs_init - starts up the serial interface -
-- handle normal case of starting up the serial interface */
-
--#ifdef CONFIG_SERIAL_DEC
-+extern int zs_init(void);
-+extern int dz_init(void);
-
-+/*
-+ * rs_init - starts up the serial interface -
-+ * handle normal case of starting up the serial interface
-+ */
- int __init rs_init(void)
- {
--
--#if defined(CONFIG_ZS) && defined(CONFIG_DZ)
-- if (IOASIC)
-- return zs_init();
-- else
-- return dz_init();
--#else
--
- #ifdef CONFIG_ZS
-- return zs_init();
-+ if (IOASIC)
-+ return zs_init();
- #endif
--
- #ifdef CONFIG_DZ
-- return dz_init();
--#endif
--
-+ if (!IOASIC)
-+ return dz_init();
- #endif
-+ return -ENXIO;
- }
-
- __initcall(rs_init);
-
--#endif
-
- #ifdef CONFIG_SERIAL_DEC_CONSOLE
-
--/* dec_serial_console_init handles the special case of starting
-- * up the console on the serial port
-+extern void zs_serial_console_init(void);
-+extern void dz_serial_console_init(void);
-+
-+/*
-+ * dec_serial_console_init handles the special case of starting
-+ * up the console on the serial port
- */
- void __init dec_serial_console_init(void)
- {
--#if defined(CONFIG_ZS) && defined(CONFIG_DZ)
-- if (IOASIC)
-- zs_serial_console_init();
-- else
-- dz_serial_console_init();
--#else
--
- #ifdef CONFIG_ZS
-- zs_serial_console_init();
-+ if (IOASIC)
-+ zs_serial_console_init();
- #endif
--
- #ifdef CONFIG_DZ
-- dz_serial_console_init();
--#endif
--
-+ if (!IOASIC)
-+ dz_serial_console_init();
- #endif
- }
-
-diff -Nur linux-2.4.32-rc1/drivers/char/ds1286.c linux-2.4.32-rc1.mips/drivers/char/ds1286.c
---- linux-2.4.32-rc1/drivers/char/ds1286.c 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/char/ds1286.c 2004-01-10 06:21:39.000000000 +0100
-@@ -1,6 +1,10 @@
- /*
- * DS1286 Real Time Clock interface for Linux
- *
-+ * Copyright (C) 2003 TimeSys Corp.
-+ * S. James Hill (James.Hill@timesys.com)
-+ * (sjhill@realitydiluted.com)
-+ *
- * Copyright (C) 1998, 1999, 2000 Ralf Baechle
- *
- * Based on code written by Paul Gortmaker.
-@@ -29,6 +33,7 @@
- #include <linux/types.h>
- #include <linux/errno.h>
- #include <linux/miscdevice.h>
-+#include <linux/module.h>
- #include <linux/slab.h>
- #include <linux/ioport.h>
- #include <linux/fcntl.h>
-@@ -95,6 +100,12 @@
- return -EIO;
- }
-
-+void rtc_ds1286_wait(void)
-+{
-+ unsigned char sec = CMOS_READ(RTC_SECONDS);
-+ while (sec == CMOS_READ(RTC_SECONDS));
-+}
-+
- static int ds1286_ioctl(struct inode *inode, struct file *file,
- unsigned int cmd, unsigned long arg)
- {
-@@ -249,23 +260,22 @@
- {
- spin_lock_irq(&ds1286_lock);
-
-- if (ds1286_status & RTC_IS_OPEN)
-- goto out_busy;
-+ if (ds1286_status & RTC_IS_OPEN) {
-+ spin_unlock_irq(&ds1286_lock);
-+ return -EBUSY;
-+ }
-
- ds1286_status |= RTC_IS_OPEN;
-
-- spin_lock_irq(&ds1286_lock);
-+ spin_unlock_irq(&ds1286_lock);
- return 0;
--
--out_busy:
-- spin_lock_irq(&ds1286_lock);
-- return -EBUSY;
- }
-
- static int ds1286_release(struct inode *inode, struct file *file)
- {
-+ spin_lock_irq(&ds1286_lock);
- ds1286_status &= ~RTC_IS_OPEN;
--
-+ spin_unlock_irq(&ds1286_lock);
- return 0;
- }
-
-@@ -276,32 +286,6 @@
- return 0;
- }
-
--/*
-- * The various file operations we support.
-- */
--
--static struct file_operations ds1286_fops = {
-- .llseek = no_llseek,
-- .read = ds1286_read,
-- .poll = ds1286_poll,
-- .ioctl = ds1286_ioctl,
-- .open = ds1286_open,
-- .release = ds1286_release,
--};
--
--static struct miscdevice ds1286_dev=
--{
-- .minor = RTC_MINOR,
-- .name = "rtc",
-- .fops = &ds1286_fops,
--};
--
--int __init ds1286_init(void)
--{
-- printk(KERN_INFO "DS1286 Real Time Clock Driver v%s\n", DS1286_VERSION);
-- return misc_register(&ds1286_dev);
--}
--
- static char *days[] = {
- "***", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
- };
-@@ -528,3 +512,38 @@
- BCD_TO_BIN(alm_tm->tm_hour);
- alm_tm->tm_sec = 0;
- }
-+
-+static struct file_operations ds1286_fops = {
-+ .owner = THIS_MODULE,
-+ .llseek = no_llseek,
-+ .read = ds1286_read,
-+ .poll = ds1286_poll,
-+ .ioctl = ds1286_ioctl,
-+ .open = ds1286_open,
-+ .release = ds1286_release,
-+};
-+
-+static struct miscdevice ds1286_dev =
-+{
-+ .minor = RTC_MINOR,
-+ .name = "rtc",
-+ .fops = &ds1286_fops,
-+};
-+
-+static int __init ds1286_init(void)
-+{
-+ printk(KERN_INFO "DS1286 Real Time Clock Driver v%s\n", DS1286_VERSION);
-+ return misc_register(&ds1286_dev);
-+}
-+
-+static void __exit ds1286_exit(void)
-+{
-+ misc_deregister(&ds1286_dev);
-+}
-+
-+module_init(ds1286_init);
-+module_exit(ds1286_exit);
-+EXPORT_NO_SYMBOLS;
-+
-+MODULE_AUTHOR("Ralf Baechle");
-+MODULE_LICENSE("GPL");
-diff -Nur linux-2.4.32-rc1/drivers/char/ds1742.c linux-2.4.32-rc1.mips/drivers/char/ds1742.c
---- linux-2.4.32-rc1/drivers/char/ds1742.c 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/char/ds1742.c 2004-01-09 20:27:16.000000000 +0100
-@@ -142,6 +142,7 @@
- CMOS_WRITE(RTC_WRITE, RTC_CONTROL);
-
- /* convert */
-+ memset(&tm, 0, sizeof(struct rtc_time));
- to_tm(t, &tm);
-
- /* check each field one by one */
-@@ -216,6 +217,7 @@
- unsigned long curr_time;
-
- curr_time = rtc_ds1742_get_time();
-+ memset(&tm, 0, sizeof(struct rtc_time));
- to_tm(curr_time, &tm);
-
- p = buf;
-@@ -251,8 +253,8 @@
-
- void rtc_ds1742_wait(void)
- {
-- while (CMOS_READ(RTC_SECONDS) & 1);
-- while (!(CMOS_READ(RTC_SECONDS) & 1));
-+ unsigned char sec = CMOS_READ(RTC_SECONDS);
-+ while (sec == CMOS_READ(RTC_SECONDS));
- }
-
- static int ds1742_ioctl(struct inode *inode, struct file *file,
-@@ -264,6 +266,7 @@
- switch (cmd) {
- case RTC_RD_TIME: /* Read the time/date from RTC */
- curr_time = rtc_ds1742_get_time();
-+ memset(&rtc_tm, 0, sizeof(struct rtc_time));
- to_tm(curr_time, &rtc_tm);
- rtc_tm.tm_year -= 1900;
- return copy_to_user((void *) arg, &rtc_tm, sizeof(rtc_tm)) ?
-diff -Nur linux-2.4.32-rc1/drivers/char/dummy_keyb.c linux-2.4.32-rc1.mips/drivers/char/dummy_keyb.c
---- linux-2.4.32-rc1/drivers/char/dummy_keyb.c 2003-08-25 13:44:41.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/char/dummy_keyb.c 2004-01-09 09:53:08.000000000 +0100
-@@ -140,3 +140,7 @@
- {
- printk("Dummy keyboard driver installed.\n");
- }
-+#ifdef CONFIG_MAGIC_SYSRQ
-+unsigned char kbd_sysrq_key;
-+unsigned char kbd_sysrq_xlate[128];
-+#endif
-diff -Nur linux-2.4.32-rc1/drivers/char/dz.c linux-2.4.32-rc1.mips/drivers/char/dz.c
---- linux-2.4.32-rc1/drivers/char/dz.c 2005-01-19 15:09:44.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/char/dz.c 2004-12-27 05:13:42.000000000 +0100
-@@ -1,11 +1,13 @@
- /*
-- * dz.c: Serial port driver for DECStations equiped
-+ * dz.c: Serial port driver for DECstations equipped
- * with the DZ chipset.
- *
- * Copyright (C) 1998 Olivier A. D. Lebaillif
- *
- * Email: olivier.lebaillif@ifrsys.com
- *
-+ * Copyright (C) 2004 Maciej W. Rozycki
-+ *
- * [31-AUG-98] triemer
- * Changed IRQ to use Harald's dec internals interrupts.h
- * removed base_addr code - moving address assignment to setup.c
-@@ -24,6 +26,7 @@
- #undef DEBUG_DZ
-
- #include <linux/config.h>
-+#include <linux/delay.h>
- #include <linux/version.h>
- #include <linux/kernel.h>
- #include <linux/sched.h>
-@@ -54,33 +57,56 @@
- #include <asm/system.h>
- #include <asm/uaccess.h>
-
--#define CONSOLE_LINE (3) /* for definition of struct console */
-+#ifdef CONFIG_MAGIC_SYSRQ
-+#include <linux/sysrq.h>
-+#endif
-
- #include "dz.h"
-
--#define DZ_INTR_DEBUG 1
--
- DECLARE_TASK_QUEUE(tq_serial);
-
--static struct dz_serial *lines[4];
--static unsigned char tmp_buffer[256];
-+static struct dz_serial multi[DZ_NB_PORT]; /* Four serial lines in the DZ chip */
-+static struct tty_driver serial_driver, callout_driver;
-+
-+static struct tty_struct *serial_table[DZ_NB_PORT];
-+static struct termios *serial_termios[DZ_NB_PORT];
-+static struct termios *serial_termios_locked[DZ_NB_PORT];
-+
-+static int serial_refcount;
-
--#ifdef DEBUG_DZ
- /*
-- * debugging code to send out chars via prom
-+ * tmp_buf is used as a temporary buffer by serial_write. We need to
-+ * lock it in case the copy_from_user blocks while swapping in a page,
-+ * and some other program tries to do a serial write at the same time.
-+ * Since the lock will only come under contention when the system is
-+ * swapping and available memory is low, it makes sense to share one
-+ * buffer across all the serial ports, since it significantly saves
-+ * memory if large numbers of serial ports are open.
- */
--static void debug_console(const char *s, int count)
--{
-- unsigned i;
-+static unsigned char *tmp_buf;
-+static DECLARE_MUTEX(tmp_buf_sem);
-
-- for (i = 0; i < count; i++) {
-- if (*s == 10)
-- prom_printf("%c", 13);
-- prom_printf("%c", *s++);
-- }
--}
-+static char *dz_name __initdata = "DECstation DZ serial driver version ";
-+static char *dz_version __initdata = "1.03";
-+
-+static struct dz_serial *lines[DZ_NB_PORT];
-+static unsigned char tmp_buffer[256];
-+
-+#ifdef CONFIG_SERIAL_DEC_CONSOLE
-+static struct console dz_sercons;
-+#endif
-+#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && \
-+ !defined(MODULE)
-+static unsigned long break_pressed; /* break, really ... */
- #endif
-
-+static void change_speed (struct dz_serial *);
-+
-+static int baud_table[] = {
-+ 0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
-+ 9600, 0
-+};
-+
- /*
- * ------------------------------------------------------------
- * dz_in () and dz_out ()
-@@ -94,15 +120,16 @@
- {
- volatile unsigned short *addr =
- (volatile unsigned short *) (info->port + offset);
-+
- return *addr;
- }
-
- static inline void dz_out(struct dz_serial *info, unsigned offset,
- unsigned short value)
- {
--
- volatile unsigned short *addr =
- (volatile unsigned short *) (info->port + offset);
-+
- *addr = value;
- }
-
-@@ -143,25 +170,24 @@
-
- tmp |= mask; /* set the TX flag */
- dz_out(info, DZ_TCR, tmp);
--
- }
-
- /*
- * ------------------------------------------------------------
-- * Here starts the interrupt handling routines. All of the
-- * following subroutines are declared as inline and are folded
-- * into dz_interrupt. They were separated out for readability's
-- * sake.
- *
-- * Note: rs_interrupt() is a "fast" interrupt, which means that it
-+ * Here starts the interrupt handling routines. All of the following
-+ * subroutines are declared as inline and are folded into
-+ * dz_interrupt(). They were separated out for readability's sake.
-+ *
-+ * Note: dz_interrupt() is a "fast" interrupt, which means that it
- * runs with interrupts turned off. People who may want to modify
-- * rs_interrupt() should try to keep the interrupt handler as fast as
-+ * dz_interrupt() should try to keep the interrupt handler as fast as
- * possible. After you are done making modifications, it is not a bad
- * idea to do:
- *
- * gcc -S -DKERNEL -Wall -Wstrict-prototypes -O6 -fomit-frame-pointer dz.c
- *
-- * and look at the resulting assemble code in serial.s.
-+ * and look at the resulting assemble code in dz.s.
- *
- * ------------------------------------------------------------
- */
-@@ -188,101 +214,97 @@
- * This routine deals with inputs from any lines.
- * ------------------------------------------------------------
- */
--static inline void receive_chars(struct dz_serial *info_in)
-+static inline void receive_chars(struct dz_serial *info_in,
-+ struct pt_regs *regs)
- {
--
- struct dz_serial *info;
-- struct tty_struct *tty = 0;
-+ struct tty_struct *tty;
- struct async_icount *icount;
-- int ignore = 0;
-- unsigned short status, tmp;
-- unsigned char ch;
--
-- /* this code is going to be a problem...
-- the call to tty_flip_buffer is going to need
-- to be rethought...
-- */
-- do {
-- status = dz_in(info_in, DZ_RBUF);
-- info = lines[LINE(status)];
-+ int lines_rx[DZ_NB_PORT] = { [0 ... DZ_NB_PORT - 1] = 0 };
-+ unsigned short status;
-+ unsigned char ch, flag;
-+ int i;
-
-- /* punt so we don't get duplicate characters */
-- if (!(status & DZ_DVAL))
-- goto ignore_char;
--
-- ch = UCHAR(status); /* grab the char */
--
--#if 0
-- if (info->is_console) {
-- if (ch == 0)
-- return; /* it's a break ... */
-- }
--#endif
-+ while ((status = dz_in(info_in, DZ_RBUF)) & DZ_DVAL) {
-+ info = lines[LINE(status)];
-+ tty = info->tty; /* point to the proper dev */
-
-- tty = info->tty; /* now tty points to the proper dev */
-- icount = &info->icount;
-+ ch = UCHAR(status); /* grab the char */
-
-- if (!tty)
-- break;
-- if (tty->flip.count >= TTY_FLIPBUF_SIZE)
-- break;
-+ if (!tty && (!info->hook || !info->hook->rx_char))
-+ continue;
-
-- *tty->flip.char_buf_ptr = ch;
-- *tty->flip.flag_buf_ptr = 0;
-+ icount = &info->icount;
- icount->rx++;
-
-- /* keep track of the statistics */
-- if (status & (DZ_OERR | DZ_FERR | DZ_PERR)) {
-- if (status & DZ_PERR) /* parity error */
-- icount->parity++;
-- else if (status & DZ_FERR) /* frame error */
-- icount->frame++;
-- if (status & DZ_OERR) /* overrun error */
-- icount->overrun++;
--
-- /* check to see if we should ignore the character
-- and mask off conditions that should be ignored
-+ flag = 0;
-+ if (status & DZ_FERR) { /* frame error */
-+ /*
-+ * There is no separate BREAK status bit, so
-+ * treat framing errors as BREAKs for Magic SysRq
-+ * and SAK; normally, otherwise.
- */
--
-- if (status & info->ignore_status_mask) {
-- if (++ignore > 100)
-- break;
-- goto ignore_char;
-+#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && \
-+ !defined(MODULE)
-+ if (info->line == dz_sercons.index) {
-+ if (!break_pressed)
-+ break_pressed = jiffies;
-+ continue;
- }
-- /* mask off the error conditions we want to ignore */
-- tmp = status & info->read_status_mask;
--
-- if (tmp & DZ_PERR) {
-- *tty->flip.flag_buf_ptr = TTY_PARITY;
--#ifdef DEBUG_DZ
-- debug_console("PERR\n", 5);
--#endif
-- } else if (tmp & DZ_FERR) {
-- *tty->flip.flag_buf_ptr = TTY_FRAME;
--#ifdef DEBUG_DZ
-- debug_console("FERR\n", 5);
- #endif
-+ flag = TTY_BREAK;
-+ if (info->flags & DZ_SAK)
-+ do_SAK(tty);
-+ else
-+ flag = TTY_FRAME;
-+ } else if (status & DZ_OERR) /* overrun error */
-+ flag = TTY_OVERRUN;
-+ else if (status & DZ_PERR) /* parity error */
-+ flag = TTY_PARITY;
-+
-+#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && \
-+ !defined(MODULE)
-+ if (break_pressed && info->line == dz_sercons.index) {
-+ if (time_before(jiffies, break_pressed + HZ * 5)) {
-+ handle_sysrq(ch, regs, NULL, NULL);
-+ break_pressed = 0;
-+ continue;
- }
-- if (tmp & DZ_OERR) {
--#ifdef DEBUG_DZ
-- debug_console("OERR\n", 5);
-+ break_pressed = 0;
-+ }
- #endif
-- if (tty->flip.count < TTY_FLIPBUF_SIZE) {
-- tty->flip.count++;
-- tty->flip.flag_buf_ptr++;
-- tty->flip.char_buf_ptr++;
-- *tty->flip.flag_buf_ptr = TTY_OVERRUN;
-- }
-- }
-+
-+ if (info->hook && info->hook->rx_char) {
-+ (*info->hook->rx_char)(ch, flag);
-+ return;
- }
-- tty->flip.flag_buf_ptr++;
-- tty->flip.char_buf_ptr++;
-- tty->flip.count++;
-- ignore_char:
-- } while (status & DZ_DVAL);
-
-- if (tty)
-- tty_flip_buffer_push(tty);
-+ /* keep track of the statistics */
-+ switch (flag) {
-+ case TTY_FRAME:
-+ icount->frame++;
-+ break;
-+ case TTY_PARITY:
-+ icount->parity++;
-+ break;
-+ case TTY_OVERRUN:
-+ icount->overrun++;
-+ break;
-+ case TTY_BREAK:
-+ icount->brk++;
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ if ((status & info->ignore_status_mask) == 0) {
-+ tty_insert_flip_char(tty, ch, flag);
-+ lines_rx[LINE(status)] = 1;
-+ }
-+ }
-+ for (i = 0; i < DZ_NB_PORT; i++)
-+ if (lines_rx[i])
-+ tty_flip_buffer_push(lines[i]->tty);
- }
-
- /*
-@@ -292,20 +314,34 @@
- * This routine deals with outputs to any lines.
- * ------------------------------------------------------------
- */
--static inline void transmit_chars(struct dz_serial *info)
-+static inline void transmit_chars(struct dz_serial *info_in)
- {
-+ struct dz_serial *info;
-+ unsigned short status;
- unsigned char tmp;
-
-+ status = dz_in(info_in, DZ_CSR);
-+ info = lines[LINE(status)];
-
-+ if (info->hook || !info->tty) {
-+ unsigned short mask, tmp;
-
-- if (info->x_char) { /* XON/XOFF chars */
-+ mask = 1 << info->line;
-+ tmp = dz_in(info, DZ_TCR); /* read the TX flag */
-+ tmp &= ~mask; /* clear the TX flag */
-+ dz_out(info, DZ_TCR, tmp);
-+ return;
-+ }
-+
-+ if (info->x_char) { /* XON/XOFF chars */
- dz_out(info, DZ_TDR, info->x_char);
- info->icount.tx++;
- info->x_char = 0;
- return;
- }
- /* if nothing to do or stopped or hardware stopped */
-- if ((info->xmit_cnt <= 0) || info->tty->stopped || info->tty->hw_stopped) {
-+ if (info->xmit_cnt <= 0 ||
-+ info->tty->stopped || info->tty->hw_stopped) {
- dz_stop(info->tty);
- return;
- }
-@@ -359,15 +395,14 @@
- */
- static void dz_interrupt(int irq, void *dev, struct pt_regs *regs)
- {
-- struct dz_serial *info;
-+ struct dz_serial *info = (struct dz_serial *)dev;
- unsigned short status;
-
- /* get the reason why we just got an irq */
-- status = dz_in((struct dz_serial *) dev, DZ_CSR);
-- info = lines[LINE(status)]; /* re-arrange info the proper port */
-+ status = dz_in(info, DZ_CSR);
-
- if (status & DZ_RDONE)
-- receive_chars(info); /* the receive function */
-+ receive_chars(info, regs);
-
- if (status & DZ_TRDY)
- transmit_chars(info);
-@@ -514,7 +549,7 @@
-
-
- info->cflags &= ~DZ_CREAD; /* turn off receive enable flag */
-- dz_out(info, DZ_LPR, info->cflags);
-+ dz_out(info, DZ_LPR, info->cflags | info->line);
-
- if (info->xmit_buf) { /* free Tx buffer */
- free_page((unsigned long) info->xmit_buf);
-@@ -545,18 +580,21 @@
- {
- unsigned long flags;
- unsigned cflag;
-- int baud;
-+ int baud, i;
-
-- if (!info->tty || !info->tty->termios)
-- return;
-+ if (!info->hook) {
-+ if (!info->tty || !info->tty->termios)
-+ return;
-+ cflag = info->tty->termios->c_cflag;
-+ } else {
-+ cflag = info->hook->cflags;
-+ }
-
- save_flags(flags);
- cli();
-
- info->cflags = info->line;
-
-- cflag = info->tty->termios->c_cflag;
--
- switch (cflag & CSIZE) {
- case CS5:
- info->cflags |= DZ_CS5;
-@@ -579,7 +617,16 @@
- if (cflag & PARODD)
- info->cflags |= DZ_PARODD;
-
-- baud = tty_get_baud_rate(info->tty);
-+ i = cflag & CBAUD;
-+ if (i & CBAUDEX) {
-+ i &= ~CBAUDEX;
-+ if (!info->hook)
-+ info->tty->termios->c_cflag &= ~CBAUDEX;
-+ else
-+ info->hook->cflags &= ~CBAUDEX;
-+ }
-+ baud = baud_table[i];
-+
- switch (baud) {
- case 50:
- info->cflags |= DZ_B50;
-@@ -629,16 +676,16 @@
- }
-
- info->cflags |= DZ_RXENAB;
-- dz_out(info, DZ_LPR, info->cflags);
-+ dz_out(info, DZ_LPR, info->cflags | info->line);
-
- /* setup accept flag */
- info->read_status_mask = DZ_OERR;
-- if (I_INPCK(info->tty))
-+ if (info->tty && I_INPCK(info->tty))
- info->read_status_mask |= (DZ_FERR | DZ_PERR);
-
- /* characters to ignore */
- info->ignore_status_mask = 0;
-- if (I_IGNPAR(info->tty))
-+ if (info->tty && I_IGNPAR(info->tty))
- info->ignore_status_mask |= (DZ_FERR | DZ_PERR);
-
- restore_flags(flags);
-@@ -694,7 +741,7 @@
-
- down(&tmp_buf_sem);
- while (1) {
-- c = MIN(count, MIN(DZ_XMIT_SIZE - info->xmit_cnt - 1, DZ_XMIT_SIZE - info->xmit_head));
-+ c = min(count, min(DZ_XMIT_SIZE - info->xmit_cnt - 1, DZ_XMIT_SIZE - info->xmit_head));
- if (c <= 0)
- break;
-
-@@ -707,7 +754,7 @@
- save_flags(flags);
- cli();
-
-- c = MIN(c, MIN(DZ_XMIT_SIZE - info->xmit_cnt - 1, DZ_XMIT_SIZE - info->xmit_head));
-+ c = min(c, min(DZ_XMIT_SIZE - info->xmit_cnt - 1, DZ_XMIT_SIZE - info->xmit_head));
- memcpy(info->xmit_buf + info->xmit_head, tmp_buf, c);
- info->xmit_head = ((info->xmit_head + c) & (DZ_XMIT_SIZE - 1));
- info->xmit_cnt += c;
-@@ -727,7 +774,7 @@
- save_flags(flags);
- cli();
-
-- c = MIN(count, MIN(DZ_XMIT_SIZE - info->xmit_cnt - 1, DZ_XMIT_SIZE - info->xmit_head));
-+ c = min(count, min(DZ_XMIT_SIZE - info->xmit_cnt - 1, DZ_XMIT_SIZE - info->xmit_head));
- if (c <= 0) {
- restore_flags(flags);
- break;
-@@ -845,7 +892,7 @@
-
- /*
- * ------------------------------------------------------------
-- * rs_ioctl () and friends
-+ * dz_ioctl () and friends
- * ------------------------------------------------------------
- */
- static int get_serial_info(struct dz_serial *info,
-@@ -958,6 +1005,9 @@
- struct dz_serial *info = (struct dz_serial *) tty->driver_data;
- int retval;
-
-+ if (info->hook)
-+ return -ENODEV;
-+
- if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) &&
- (cmd != TIOCSERCONFIG) && (cmd != TIOCSERGWILD) &&
- (cmd != TIOCSERSWILD) && (cmd != TIOCSERGSTRUCT)) {
-@@ -1252,19 +1302,14 @@
- int retval, line;
-
- line = MINOR(tty->device) - tty->driver.minor_start;
--
-- /* The dz lines for the mouse/keyboard must be
-- * opened using their respective drivers.
-- */
- if ((line < 0) || (line >= DZ_NB_PORT))
- return -ENODEV;
-+ info = lines[line];
-
-- if ((line == DZ_KEYBOARD) || (line == DZ_MOUSE))
-+ if (info->hook)
- return -ENODEV;
-
-- info = lines[line];
- info->count++;
--
- tty->driver_data = info;
- info->tty = tty;
-
-@@ -1285,14 +1330,21 @@
- else
- *tty->termios = info->callout_termios;
- change_speed(info);
--
- }
-+#ifdef CONFIG_SERIAL_DEC_CONSOLE
-+ if (dz_sercons.cflag && dz_sercons.index == line) {
-+ tty->termios->c_cflag = dz_sercons.cflag;
-+ dz_sercons.cflag = 0;
-+ change_speed(info);
-+ }
-+#endif
-+
- info->session = current->session;
- info->pgrp = current->pgrp;
- return 0;
- }
-
--static void show_serial_version(void)
-+static void __init show_serial_version(void)
- {
- printk("%s%s\n", dz_name, dz_version);
- }
-@@ -1300,7 +1352,6 @@
- int __init dz_init(void)
- {
- int i;
-- long flags;
- struct dz_serial *info;
-
- /* Setup base handler, and timer table. */
-@@ -1311,9 +1362,9 @@
- memset(&serial_driver, 0, sizeof(struct tty_driver));
- serial_driver.magic = TTY_DRIVER_MAGIC;
- #if (LINUX_VERSION_CODE > 0x2032D && defined(CONFIG_DEVFS_FS))
-- serial_driver.name = "ttyS";
--#else
- serial_driver.name = "tts/%d";
-+#else
-+ serial_driver.name = "ttyS";
- #endif
- serial_driver.major = TTY_MAJOR;
- serial_driver.minor_start = 64;
-@@ -1352,9 +1403,9 @@
- */
- callout_driver = serial_driver;
- #if (LINUX_VERSION_CODE > 0x2032D && defined(CONFIG_DEVFS_FS))
-- callout_driver.name = "cua";
--#else
- callout_driver.name = "cua/%d";
-+#else
-+ callout_driver.name = "cua";
- #endif
- callout_driver.major = TTYAUX_MAJOR;
- callout_driver.subtype = SERIAL_TYPE_CALLOUT;
-@@ -1363,25 +1414,27 @@
- panic("Couldn't register serial driver");
- if (tty_register_driver(&callout_driver))
- panic("Couldn't register callout driver");
-- save_flags(flags);
-- cli();
-
- for (i = 0; i < DZ_NB_PORT; i++) {
- info = &multi[i];
- lines[i] = info;
-- info->magic = SERIAL_MAGIC;
--
-+ info->tty = 0;
-+ info->x_char = 0;
- if (mips_machtype == MACH_DS23100 ||
- mips_machtype == MACH_DS5100)
- info->port = (unsigned long) KN01_DZ11_BASE;
- else
- info->port = (unsigned long) KN02_DZ11_BASE;
--
- info->line = i;
-- info->tty = 0;
-+
-+ if (info->hook && info->hook->init_info) {
-+ (*info->hook->init_info)(info);
-+ continue;
-+ }
-+
-+ info->magic = SERIAL_MAGIC;
- info->close_delay = 50;
- info->closing_wait = 3000;
-- info->x_char = 0;
- info->event = 0;
- info->count = 0;
- info->blocked_open = 0;
-@@ -1393,25 +1446,16 @@
- info->normal_termios = serial_driver.init_termios;
- init_waitqueue_head(&info->open_wait);
- init_waitqueue_head(&info->close_wait);
--
-- /*
-- * If we are pointing to address zero then punt - not correctly
-- * set up in setup.c to handle this.
-- */
-- if (!info->port)
-- return 0;
--
-- printk("ttyS%02d at 0x%08x (irq = %d)\n", info->line,
-- info->port, dec_interrupt[DEC_IRQ_DZ11]);
--
-+ printk("ttyS%02d at 0x%08x (irq = %d) is a DC7085 DZ\n",
-+ info->line, info->port, dec_interrupt[DEC_IRQ_DZ11]);
- tty_register_devfs(&serial_driver, 0,
-- serial_driver.minor_start + info->line);
-+ serial_driver.minor_start + info->line);
- tty_register_devfs(&callout_driver, 0,
-- callout_driver.minor_start + info->line);
-+ callout_driver.minor_start + info->line);
- }
-
-- /* reset the chip */
- #ifndef CONFIG_SERIAL_DEC_CONSOLE
-+ /* reset the chip */
- dz_out(info, DZ_CSR, DZ_CLR);
- while (dz_in(info, DZ_CSR) & DZ_CLR);
- iob();
-@@ -1420,43 +1464,104 @@
- dz_out(info, DZ_CSR, DZ_MSE);
- #endif
-
-- /* order matters here... the trick is that flags
-- is updated... in request_irq - to immediatedly obliterate
-- it is unwise. */
-- restore_flags(flags);
--
--
- if (request_irq(dec_interrupt[DEC_IRQ_DZ11], dz_interrupt,
-- SA_INTERRUPT, "DZ", lines[0]))
-+ 0, "DZ", lines[0]))
- panic("Unable to register DZ interrupt");
-
-+ for (i = 0; i < DZ_NB_PORT; i++)
-+ if (lines[i]->hook) {
-+ startup(lines[i]);
-+ if (lines[i]->hook->init_channel)
-+ (*lines[i]->hook->init_channel)(lines[i]);
-+ }
-+
- return 0;
- }
-
--#ifdef CONFIG_SERIAL_DEC_CONSOLE
--static void dz_console_put_char(unsigned char ch)
-+/*
-+ * polling I/O routines
-+ */
-+static int dz_poll_tx_char(void *handle, unsigned char ch)
- {
- unsigned long flags;
-- int loops = 2500;
-- unsigned short tmp = ch;
-- /* this code sends stuff out to serial device - spinning its
-- wheels and waiting. */
-+ struct dz_serial *info = handle;
-+ unsigned short csr, tcr, trdy, mask;
-+ int loops = 10000;
-+ int ret;
-
-- /* force the issue - point it at lines[3] */
-- dz_console = &multi[CONSOLE_LINE];
-+ local_irq_save(flags);
-+ csr = dz_in(info, DZ_CSR);
-+ dz_out(info, DZ_CSR, csr & ~DZ_TIE);
-+ tcr = dz_in(info, DZ_TCR);
-+ tcr |= 1 << info->line;
-+ mask = tcr;
-+ dz_out(info, DZ_TCR, mask);
-+ iob();
-+ local_irq_restore(flags);
-
-- save_flags(flags);
-- cli();
-+ while (loops--) {
-+ trdy = dz_in(info, DZ_CSR);
-+ if (!(trdy & DZ_TRDY))
-+ continue;
-+ trdy = (trdy & DZ_TLINE) >> 8;
-+ if (trdy == info->line)
-+ break;
-+ mask &= ~(1 << trdy);
-+ dz_out(info, DZ_TCR, mask);
-+ iob();
-+ udelay(2);
-+ }
-
-+ if (loops) {
-+ dz_out(info, DZ_TDR, ch);
-+ ret = 0;
-+ } else
-+ ret = -EAGAIN;
-
-- /* spin our wheels */
-- while (((dz_in(dz_console, DZ_CSR) & DZ_TRDY) != DZ_TRDY) && loops--);
-+ dz_out(info, DZ_TCR, tcr);
-+ dz_out(info, DZ_CSR, csr);
-
-- /* Actually transmit the character. */
-- dz_out(dz_console, DZ_TDR, tmp);
-+ return ret;
-+}
-
-- restore_flags(flags);
-+static int dz_poll_rx_char(void *handle)
-+{
-+ return -ENODEV;
-+}
-+
-+int register_dz_hook(unsigned int channel, struct dec_serial_hook *hook)
-+{
-+ struct dz_serial *info = multi + channel;
-+
-+ if (info->hook) {
-+ printk("%s: line %d has already a hook registered\n",
-+ __FUNCTION__, channel);
-+
-+ return 0;
-+ } else {
-+ hook->poll_rx_char = dz_poll_rx_char;
-+ hook->poll_tx_char = dz_poll_tx_char;
-+ info->hook = hook;
-+
-+ return 1;
-+ }
-+}
-+
-+int unregister_dz_hook(unsigned int channel)
-+{
-+ struct dz_serial *info = &multi[channel];
-+
-+ if (info->hook) {
-+ info->hook = NULL;
-+ return 1;
-+ } else {
-+ printk("%s: trying to unregister hook on line %d,"
-+ " but none is registered\n", __FUNCTION__, channel);
-+ return 0;
-+ }
- }
-+
-+#ifdef CONFIG_SERIAL_DEC_CONSOLE
- /*
- * -------------------------------------------------------------------
- * dz_console_print ()
-@@ -1465,17 +1570,19 @@
- * The console must be locked when we get here.
- * -------------------------------------------------------------------
- */
--static void dz_console_print(struct console *cons,
-+static void dz_console_print(struct console *co,
- const char *str,
- unsigned int count)
- {
-+ struct dz_serial *info = multi + co->index;
-+
- #ifdef DEBUG_DZ
- prom_printf((char *) str);
- #endif
- while (count--) {
- if (*str == '\n')
-- dz_console_put_char('\r');
-- dz_console_put_char(*str++);
-+ dz_poll_tx_char(info, '\r');
-+ dz_poll_tx_char(info, *str++);
- }
- }
-
-@@ -1486,12 +1593,12 @@
-
- static int __init dz_console_setup(struct console *co, char *options)
- {
-+ struct dz_serial *info = multi + co->index;
- int baud = 9600;
- int bits = 8;
- int parity = 'n';
- int cflag = CREAD | HUPCL | CLOCAL;
- char *s;
-- unsigned short mask, tmp;
-
- if (options) {
- baud = simple_strtoul(options, NULL, 10);
-@@ -1542,44 +1649,31 @@
- }
- co->cflag = cflag;
-
-- /* TOFIX: force to console line */
-- dz_console = &multi[CONSOLE_LINE];
- if ((mips_machtype == MACH_DS23100) || (mips_machtype == MACH_DS5100))
-- dz_console->port = KN01_DZ11_BASE;
-+ info->port = KN01_DZ11_BASE;
- else
-- dz_console->port = KN02_DZ11_BASE;
-- dz_console->line = CONSOLE_LINE;
-+ info->port = KN02_DZ11_BASE;
-+ info->line = co->index;
-
-- dz_out(dz_console, DZ_CSR, DZ_CLR);
-- while ((tmp = dz_in(dz_console, DZ_CSR)) & DZ_CLR);
-+ dz_out(info, DZ_CSR, DZ_CLR);
-+ while (dz_in(info, DZ_CSR) & DZ_CLR);
-
- /* enable scanning */
-- dz_out(dz_console, DZ_CSR, DZ_MSE);
-+ dz_out(info, DZ_CSR, DZ_MSE);
-
- /* Set up flags... */
-- dz_console->cflags = 0;
-- dz_console->cflags |= DZ_B9600;
-- dz_console->cflags |= DZ_CS8;
-- dz_console->cflags |= DZ_PARENB;
-- dz_out(dz_console, DZ_LPR, dz_console->cflags);
--
-- mask = 1 << dz_console->line;
-- tmp = dz_in(dz_console, DZ_TCR); /* read the TX flag */
-- if (!(tmp & mask)) {
-- tmp |= mask; /* set the TX flag */
-- dz_out(dz_console, DZ_TCR, tmp);
-- }
-+ dz_out(info, DZ_LPR, cflag | info->line);
-+
- return 0;
- }
-
--static struct console dz_sercons =
--{
-- .name = "ttyS",
-- .write = dz_console_print,
-- .device = dz_console_device,
-- .setup = dz_console_setup,
-- .flags = CON_CONSDEV | CON_PRINTBUFFER,
-- .index = CONSOLE_LINE,
-+static struct console dz_sercons = {
-+ .name = "ttyS",
-+ .write = dz_console_print,
-+ .device = dz_console_device,
-+ .setup = dz_console_setup,
-+ .flags = CON_PRINTBUFFER,
-+ .index = -1,
- };
-
- void __init dz_serial_console_init(void)
-diff -Nur linux-2.4.32-rc1/drivers/char/dz.h linux-2.4.32-rc1.mips/drivers/char/dz.h
---- linux-2.4.32-rc1/drivers/char/dz.h 2002-08-03 02:39:43.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/char/dz.h 2004-09-28 02:53:01.000000000 +0200
-@@ -10,6 +10,8 @@
- #ifndef DZ_SERIAL_H
- #define DZ_SERIAL_H
-
-+#include <asm/dec/serial.h>
-+
- #define SERIAL_MAGIC 0x5301
-
- /*
-@@ -17,6 +19,7 @@
- */
- #define DZ_TRDY 0x8000 /* Transmitter empty */
- #define DZ_TIE 0x4000 /* Transmitter Interrupt Enable */
-+#define DZ_TLINE 0x0300 /* Transmitter Line Number */
- #define DZ_RDONE 0x0080 /* Receiver data ready */
- #define DZ_RIE 0x0040 /* Receive Interrupt Enable */
- #define DZ_MSE 0x0020 /* Master Scan Enable */
-@@ -37,19 +40,30 @@
- #define UCHAR(x) (unsigned char)(x & DZ_RBUF_MASK)
-
- /*
-- * Definitions for the Transmit Register.
-+ * Definitions for the Transmit Control Register.
- */
- #define DZ_LINE_KEYBOARD 0x0001
- #define DZ_LINE_MOUSE 0x0002
- #define DZ_LINE_MODEM 0x0004
- #define DZ_LINE_PRINTER 0x0008
-
-+#define DZ_MODEM_RTS 0x0800 /* RTS for the modem line (2) */
- #define DZ_MODEM_DTR 0x0400 /* DTR for the modem line (2) */
-+#define DZ_PRINT_RTS 0x0200 /* RTS for the printer line (3) */
-+#define DZ_PRINT_DTR 0x0100 /* DTR for the printer line (3) */
-+#define DZ_LNENB 0x000f /* Transmitter Line Enable */
-
- /*
- * Definitions for the Modem Status Register.
- */
-+#define DZ_MODEM_RI 0x0800 /* RI for the modem line (2) */
-+#define DZ_MODEM_CD 0x0400 /* CD for the modem line (2) */
- #define DZ_MODEM_DSR 0x0200 /* DSR for the modem line (2) */
-+#define DZ_MODEM_CTS 0x0100 /* CTS for the modem line (2) */
-+#define DZ_PRINT_RI 0x0008 /* RI for the printer line (2) */
-+#define DZ_PRINT_CD 0x0004 /* CD for the printer line (2) */
-+#define DZ_PRINT_DSR 0x0002 /* DSR for the printer line (2) */
-+#define DZ_PRINT_CTS 0x0001 /* CTS for the printer line (2) */
-
- /*
- * Definitions for the Transmit Data Register.
-@@ -115,9 +129,6 @@
-
- #define DZ_EVENT_WRITE_WAKEUP 0
-
--#ifndef MIN
--#define MIN(a,b) ((a) < (b) ? (a) : (b))
--
- #define DZ_INITIALIZED 0x80000000 /* Serial port was initialized */
- #define DZ_CALLOUT_ACTIVE 0x40000000 /* Call out device is active */
- #define DZ_NORMAL_ACTIVE 0x20000000 /* Normal device is active */
-@@ -129,6 +140,7 @@
- #define DZ_CLOSING_WAIT_INF 0
- #define DZ_CLOSING_WAIT_NONE 65535
-
-+#define DZ_SAK 0x0004 /* Secure Attention Key (Orange book) */
- #define DZ_SPLIT_TERMIOS 0x0008 /* Separate termios for dialin/callout */
- #define DZ_SESSION_LOCKOUT 0x0100 /* Lock out cua opens based on session */
- #define DZ_PGRP_LOCKOUT 0x0200 /* Lock out cua opens based on pgrp */
-@@ -166,79 +178,9 @@
- long session; /* Session of opening process */
- long pgrp; /* pgrp of opening process */
-
-+ struct dec_serial_hook *hook; /* Hook on this channel. */
- unsigned char is_console; /* flag indicating a serial console */
- unsigned char is_initialized;
- };
-
--static struct dz_serial multi[DZ_NB_PORT]; /* Four serial lines in the DZ chip */
--static struct dz_serial *dz_console;
--static struct tty_driver serial_driver, callout_driver;
--
--static struct tty_struct *serial_table[DZ_NB_PORT];
--static struct termios *serial_termios[DZ_NB_PORT];
--static struct termios *serial_termios_locked[DZ_NB_PORT];
--
--static int serial_refcount;
--
--/*
-- * tmp_buf is used as a temporary buffer by serial_write. We need to
-- * lock it in case the copy_from_user blocks while swapping in a page,
-- * and some other program tries to do a serial write at the same time.
-- * Since the lock will only come under contention when the system is
-- * swapping and available memory is low, it makes sense to share one
-- * buffer across all the serial ports, since it significantly saves
-- * memory if large numbers of serial ports are open.
-- */
--static unsigned char *tmp_buf;
--static DECLARE_MUTEX(tmp_buf_sem);
--
--static char *dz_name = "DECstation DZ serial driver version ";
--static char *dz_version = "1.02";
--
--static inline unsigned short dz_in (struct dz_serial *, unsigned);
--static inline void dz_out (struct dz_serial *, unsigned, unsigned short);
--
--static inline void dz_sched_event (struct dz_serial *, int);
--static inline void receive_chars (struct dz_serial *);
--static inline void transmit_chars (struct dz_serial *);
--static inline void check_modem_status (struct dz_serial *);
--
--static void dz_stop (struct tty_struct *);
--static void dz_start (struct tty_struct *);
--static void dz_interrupt (int, void *, struct pt_regs *);
--static void do_serial_bh (void);
--static void do_softint (void *);
--static void do_serial_hangup (void *);
--static void change_speed (struct dz_serial *);
--static void dz_flush_chars (struct tty_struct *);
--static void dz_console_print (struct console *, const char *, unsigned int);
--static void dz_flush_buffer (struct tty_struct *);
--static void dz_throttle (struct tty_struct *);
--static void dz_unthrottle (struct tty_struct *);
--static void dz_send_xchar (struct tty_struct *, char);
--static void shutdown (struct dz_serial *);
--static void send_break (struct dz_serial *, int);
--static void dz_set_termios (struct tty_struct *, struct termios *);
--static void dz_close (struct tty_struct *, struct file *);
--static void dz_hangup (struct tty_struct *);
--static void show_serial_version (void);
--
--static int dz_write (struct tty_struct *, int, const unsigned char *, int);
--static int dz_write_room (struct tty_struct *);
--static int dz_chars_in_buffer (struct tty_struct *);
--static int startup (struct dz_serial *);
--static int get_serial_info (struct dz_serial *, struct serial_struct *);
--static int set_serial_info (struct dz_serial *, struct serial_struct *);
--static int get_lsr_info (struct dz_serial *, unsigned int *);
--static int dz_ioctl (struct tty_struct *, struct file *, unsigned int, unsigned long);
--static int block_til_ready (struct tty_struct *, struct file *, struct dz_serial *);
--static int dz_open (struct tty_struct *, struct file *);
--
--#ifdef MODULE
--int init_module (void)
--void cleanup_module (void)
--#endif
--
--#endif
--
- #endif /* DZ_SERIAL_H */
-diff -Nur linux-2.4.32-rc1/drivers/char/ibm_workpad_keymap.map linux-2.4.32-rc1.mips/drivers/char/ibm_workpad_keymap.map
---- linux-2.4.32-rc1/drivers/char/ibm_workpad_keymap.map 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/char/ibm_workpad_keymap.map 2003-12-20 15:20:44.000000000 +0100
-@@ -0,0 +1,343 @@
-+# Keymap for IBM Workpad z50
-+# US Mapping
-+#
-+# by Michael Klar <wyldfier@iname.com>
-+#
-+# This is a great big mess on account of how the Caps Lock key is handled as
-+# LeftShift-RightShift. Right shift key had to be broken out, so don't use
-+# use this map file as a basis for other keyboards that don't do the same
-+# thing with Caps Lock.
-+#
-+# 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.
-+
-+keymaps 0-2,4-5,8,12,32-33,36-37
-+strings as usual
-+
-+keycode 0 = F1 F11 Console_13
-+ shiftr keycode 0 = F11
-+ shift shiftr keycode 0 = F11
-+ control keycode 0 = F1
-+ alt keycode 0 = Console_1
-+ control alt keycode 0 = Console_1
-+keycode 1 = F3 F13 Console_15
-+ shiftr keycode 1 = F13
-+ shift shiftr keycode 1 = F13
-+ control keycode 1 = F3
-+ alt keycode 1 = Console_3
-+ control alt keycode 1 = Console_3
-+keycode 2 = F5 F15 Console_17
-+ shiftr keycode 2 = F15
-+ shift shiftr keycode 2 = F15
-+ control keycode 2 = F5
-+ alt keycode 2 = Console_5
-+ control alt keycode 2 = Console_5
-+keycode 3 = F7 F17 Console_19
-+ shiftr keycode 3 = F17
-+ shift shiftr keycode 3 = F17
-+ control keycode 3 = F7
-+ alt keycode 3 = Console_7
-+ control alt keycode 3 = Console_7
-+keycode 4 = F9 F19 Console_21
-+ shiftr keycode 4 = F19
-+ shift shiftr keycode 4 = F19
-+ control keycode 4 = F9
-+ alt keycode 4 = Console_9
-+ control alt keycode 4 = Console_9
-+#keycode 5 is contrast down
-+#keycode 6 is contrast up
-+keycode 7 = F11 F11 Console_23
-+ shiftr keycode 7 = F11
-+ shift shiftr keycode 7 = F11
-+ control keycode 7 = F11
-+ alt keycode 7 = Console_11
-+ control alt keycode 7 = Console_11
-+keycode 8 = F2 F12 Console_14
-+ shiftr keycode 8 = F12
-+ shift shiftr keycode 8 = F12
-+ control keycode 8 = F2
-+ alt keycode 8 = Console_2
-+ control alt keycode 8 = Console_2
-+keycode 9 = F4 F14 Console_16
-+ shiftr keycode 9 = F14
-+ shift shiftr keycode 9 = F14
-+ control keycode 9 = F4
-+ alt keycode 9 = Console_4
-+ control alt keycode 9 = Console_4
-+keycode 10 = F6 F16 Console_18
-+ shiftr keycode 10 = F16
-+ shift shiftr keycode 10 = F16
-+ control keycode 10 = F6
-+ alt keycode 10 = Console_6
-+ control alt keycode 10 = Console_6
-+keycode 11 = F8 F18 Console_20
-+ shiftr keycode 11 = F18
-+ shift shiftr keycode 11 = F18
-+ control keycode 11 = F8
-+ alt keycode 11 = Console_8
-+ control alt keycode 11 = Console_8
-+keycode 12 = F10 F20 Console_22
-+ shiftr keycode 12 = F20
-+ shift shiftr keycode 12 = F20
-+ control keycode 12 = F10
-+ alt keycode 12 = Console_10
-+ control alt keycode 12 = Console_10
-+#keycode 13 is brightness down
-+#keycode 14 is brightness up
-+keycode 15 = F12 F12 Console_24
-+ shiftr keycode 15 = F12
-+ shift shiftr keycode 15 = F12
-+ control keycode 15 = F12
-+ alt keycode 15 = Console_12
-+ control alt keycode 15 = Console_12
-+keycode 16 = apostrophe quotedbl
-+ shiftr keycode 16 = quotedbl
-+ shift shiftr keycode 16 = quotedbl
-+ control keycode 16 = Control_g
-+ alt keycode 16 = Meta_apostrophe
-+keycode 17 = bracketleft braceleft
-+ shiftr keycode 17 = braceleft
-+ shift shiftr keycode 17 = braceleft
-+ control keycode 17 = Escape
-+ alt keycode 17 = Meta_bracketleft
-+keycode 18 = minus underscore backslash
-+ shiftr keycode 18 = underscore
-+ shift shiftr keycode 18 = underscore
-+ control keycode 18 = Control_underscore
-+ shift control keycode 18 = Control_underscore
-+ shiftr control keycode 18 = Control_underscore
-+ shift shiftr control keycode 18 = Control_underscore
-+ alt keycode 18 = Meta_minus
-+keycode 19 = zero parenright braceright
-+ shiftr keycode 19 = parenright
-+ shift shiftr keycode 19 = parenright
-+ alt keycode 19 = Meta_zero
-+keycode 20 = p
-+ shiftr keycode 20 = +P
-+ shift shiftr keycode 20 = +p
-+keycode 21 = semicolon colon
-+ shiftr keycode 21 = colon
-+ shift shiftr keycode 21 = colon
-+ alt keycode 21 = Meta_semicolon
-+keycode 22 = Up Scroll_Backward
-+ shiftr keycode 22 = Scroll_Backward
-+ shift shiftr keycode 22 = Scroll_Backward
-+ alt keycode 22 = Prior
-+keycode 23 = slash question
-+ shiftr keycode 23 = question
-+ shift shiftr keycode 23 = question
-+ control keycode 23 = Delete
-+ alt keycode 23 = Meta_slash
-+
-+keycode 27 = nine parenleft bracketright
-+ shiftr keycode 27 = parenleft
-+ shift shiftr keycode 27 = parenleft
-+ alt keycode 27 = Meta_nine
-+keycode 28 = o
-+ shiftr keycode 28 = +O
-+ shift shiftr keycode 28 = +o
-+keycode 29 = l
-+ shiftr keycode 29 = +L
-+ shift shiftr keycode 29 = +l
-+keycode 30 = period greater
-+ shiftr keycode 30 = greater
-+ shift shiftr keycode 30 = greater
-+ control keycode 30 = Compose
-+ alt keycode 30 = Meta_period
-+
-+keycode 32 = Left Decr_Console
-+ shiftr keycode 32 = Decr_Console
-+ shift shiftr keycode 32 = Decr_Console
-+ alt keycode 32 = Home
-+keycode 33 = bracketright braceright asciitilde
-+ shiftr keycode 33 = braceright
-+ shift shiftr keycode 33 = braceright
-+ control keycode 33 = Control_bracketright
-+ alt keycode 33 = Meta_bracketright
-+keycode 34 = equal plus
-+ shiftr keycode 34 = plus
-+ shift shiftr keycode 34 = plus
-+ alt keycode 34 = Meta_equal
-+keycode 35 = eight asterisk bracketleft
-+ shiftr keycode 35 = asterisk
-+ shift shiftr keycode 35 = asterisk
-+ control keycode 35 = Delete
-+ alt keycode 35 = Meta_eight
-+keycode 36 = i
-+ shiftr keycode 36 = +I
-+ shift shiftr keycode 36 = +i
-+keycode 37 = k
-+ shiftr keycode 37 = +K
-+ shift shiftr keycode 37 = +k
-+keycode 38 = comma less
-+ shiftr keycode 38 = less
-+ shift shiftr keycode 38 = less
-+ alt keycode 38 = Meta_comma
-+
-+keycode 40 = h
-+ shiftr keycode 40 = +H
-+ shift shiftr keycode 40 = +h
-+keycode 41 = y
-+ shiftr keycode 41 = +Y
-+ shift shiftr keycode 41 = +y
-+keycode 42 = six asciicircum
-+ shiftr keycode 42 = asciicircum
-+ shift shiftr keycode 42 = asciicircum
-+ control keycode 42 = Control_asciicircum
-+ alt keycode 42 = Meta_six
-+keycode 43 = seven ampersand braceleft
-+ shiftr keycode 43 = ampersand
-+ shift shiftr keycode 43 = ampersand
-+ control keycode 43 = Control_underscore
-+ alt keycode 43 = Meta_seven
-+keycode 44 = u
-+ shiftr keycode 44 = +U
-+ shift shiftr keycode 44 = +u
-+keycode 45 = j
-+ shiftr keycode 45 = +J
-+ shift shiftr keycode 45 = +j
-+keycode 46 = m
-+ shiftr keycode 46 = +M
-+ shift shiftr keycode 46 = +m
-+keycode 47 = n
-+ shiftr keycode 47 = +N
-+ shift shiftr keycode 47 = +n
-+
-+# This is the "Backspace" key:
-+keycode 49 = Delete Delete
-+ shiftr keycode 49 = Delete
-+ shift shiftr keycode 49 = Delete
-+ control keycode 49 = BackSpace
-+ alt keycode 49 = Meta_Delete
-+keycode 50 = Num_Lock
-+ shift keycode 50 = Bare_Num_Lock
-+ shiftr keycode 50 = Bare_Num_Lock
-+ shift shiftr keycode 50 = Bare_Num_Lock
-+# This is the "Delete" key:
-+keycode 51 = Remove
-+ control alt keycode 51 = Boot
-+
-+keycode 53 = backslash bar
-+ shiftr keycode 53 = bar
-+ shift shiftr keycode 53 = bar
-+ control keycode 53 = Control_backslash
-+ alt keycode 53 = Meta_backslash
-+keycode 54 = Return
-+ alt keycode 54 = Meta_Control_m
-+keycode 55 = space space
-+ shiftr keycode 55 = space
-+ shift shiftr keycode 55 = space
-+ control keycode 55 = nul
-+ alt keycode 55 = Meta_space
-+keycode 56 = g
-+ shiftr keycode 56 = +G
-+ shift shiftr keycode 56 = +g
-+keycode 57 = t
-+ shiftr keycode 57 = +T
-+ shift shiftr keycode 57 = +t
-+keycode 58 = five percent
-+ shiftr keycode 58 = percent
-+ shift shiftr keycode 58 = percent
-+ control keycode 58 = Control_bracketright
-+ alt keycode 58 = Meta_five
-+keycode 59 = four dollar dollar
-+ shiftr keycode 59 = dollar
-+ shift shiftr keycode 59 = dollar
-+ control keycode 59 = Control_backslash
-+ alt keycode 59 = Meta_four
-+keycode 60 = r
-+ shiftr keycode 60 = +R
-+ shift shiftr keycode 60 = +r
-+keycode 61 = f
-+ shiftr keycode 61 = +F
-+ shift shiftr keycode 61 = +f
-+ altgr keycode 61 = Hex_F
-+keycode 62 = v
-+ shiftr keycode 62 = +V
-+ shift shiftr keycode 62 = +v
-+keycode 63 = b
-+ shiftr keycode 63 = +B
-+ shift shiftr keycode 63 = +b
-+ altgr keycode 63 = Hex_B
-+
-+keycode 67 = three numbersign
-+ shiftr keycode 67 = numbersign
-+ shift shiftr keycode 67 = numbersign
-+ control keycode 67 = Escape
-+ alt keycode 67 = Meta_three
-+keycode 68 = e
-+ shiftr keycode 68 = +E
-+ shift shiftr keycode 68 = +e
-+ altgr keycode 68 = Hex_E
-+keycode 69 = d
-+ shiftr keycode 69 = +D
-+ shift shiftr keycode 69 = +d
-+ altgr keycode 69 = Hex_D
-+keycode 70 = c
-+ shiftr keycode 70 = +C
-+ shift shiftr keycode 70 = +c
-+ altgr keycode 70 = Hex_C
-+keycode 71 = Right Incr_Console
-+ shiftr keycode 71 = Incr_Console
-+ shift shiftr keycode 71 = Incr_Console
-+ alt keycode 71 = End
-+
-+keycode 75 = two at at
-+ shiftr keycode 75 = at
-+ shift shiftr keycode 75 = at
-+ control keycode 75 = nul
-+ shift control keycode 75 = nul
-+ shiftr control keycode 75 = nul
-+ shift shiftr control keycode 75 = nul
-+ alt keycode 75 = Meta_two
-+keycode 76 = w
-+ shiftr keycode 76 = +W
-+ shift shiftr keycode 76 = +w
-+keycode 77 = s
-+ shiftr keycode 77 = +S
-+ shift shiftr keycode 77 = +s
-+keycode 78 = x
-+ shiftr keycode 78 = +X
-+ shift shiftr keycode 78 = +x
-+keycode 79 = Down Scroll_Forward
-+ shiftr keycode 79 = Scroll_Forward
-+ shift shiftr keycode 79 = Scroll_Forward
-+ alt keycode 79 = Next
-+keycode 80 = Escape Escape
-+ shiftr keycode 80 = Escape
-+ shift shiftr keycode 80 = Escape
-+ alt keycode 80 = Meta_Escape
-+keycode 81 = Tab Tab
-+ shiftr keycode 81 = Tab
-+ shift shiftr keycode 81 = Tab
-+ alt keycode 81 = Meta_Tab
-+keycode 82 = grave asciitilde
-+ shiftr keycode 82 = asciitilde
-+ shift shiftr keycode 82 = asciitilde
-+ control keycode 82 = nul
-+ alt keycode 82 = Meta_grave
-+keycode 83 = one exclam
-+ shiftr keycode 83 = exclam
-+ shift shiftr keycode 83 = exclam
-+ alt keycode 83 = Meta_one
-+keycode 84 = q
-+ shiftr keycode 84 = +Q
-+ shift shiftr keycode 84 = +q
-+keycode 85 = a
-+ shiftr keycode 85 = +A
-+ shift shiftr keycode 85 = +a
-+ altgr keycode 85 = Hex_A
-+keycode 86 = z
-+ shiftr keycode 86 = +Z
-+ shift shiftr keycode 86 = +z
-+
-+# This is the windows key:
-+keycode 88 = Decr_Console
-+keycode 89 = Shift
-+keycode 90 = Control
-+keycode 91 = Control
-+keycode 92 = Alt
-+keycode 93 = AltGr
-+keycode 94 = ShiftR
-+ shift keycode 94 = Caps_Lock
-diff -Nur linux-2.4.32-rc1/drivers/char/indydog.c linux-2.4.32-rc1.mips/drivers/char/indydog.c
---- linux-2.4.32-rc1/drivers/char/indydog.c 2003-08-25 13:44:41.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/char/indydog.c 2004-06-22 17:32:07.000000000 +0200
-@@ -1,5 +1,5 @@
- /*
-- * IndyDog 0.2 A Hardware Watchdog Device for SGI IP22
-+ * IndyDog 0.3 A Hardware Watchdog Device for SGI IP22
- *
- * (c) Copyright 2002 Guido Guenther <agx@sigxcpu.org>, All Rights Reserved.
- *
-@@ -7,10 +7,10 @@
- * 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.
-- *
-+ *
- * based on softdog.c by Alan Cox <alan@redhat.com>
- */
--
-+
- #include <linux/module.h>
- #include <linux/config.h>
- #include <linux/types.h>
-@@ -19,13 +19,12 @@
- #include <linux/mm.h>
- #include <linux/miscdevice.h>
- #include <linux/watchdog.h>
--#include <linux/smp_lock.h>
- #include <linux/init.h>
- #include <asm/uaccess.h>
- #include <asm/sgi/mc.h>
-
--static unsigned long indydog_alive;
--static int expect_close = 0;
-+#define PFX "indydog: "
-+static int indydog_alive;
-
- #ifdef CONFIG_WATCHDOG_NOWAYOUT
- static int nowayout = 1;
-@@ -33,10 +32,30 @@
- static int nowayout = 0;
- #endif
-
-+#define WATCHDOG_TIMEOUT 30 /* 30 sec default timeout */
-+
- MODULE_PARM(nowayout,"i");
- MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=CONFIG_WATCHDOG_NOWAYOUT)");
-
--static inline void indydog_ping(void)
-+static void indydog_start(void)
-+{
-+ u32 mc_ctrl0 = sgimc->cpuctrl0;
-+
-+ mc_ctrl0 = sgimc->cpuctrl0 | SGIMC_CCTRL0_WDOG;
-+ sgimc->cpuctrl0 = mc_ctrl0;
-+}
-+
-+static void indydog_stop(void)
-+{
-+ u32 mc_ctrl0 = sgimc->cpuctrl0;
-+
-+ mc_ctrl0 &= ~SGIMC_CCTRL0_WDOG;
-+ sgimc->cpuctrl0 = mc_ctrl0;
-+
-+ printk(KERN_INFO PFX "Stopped watchdog timer.\n");
-+}
-+
-+static void indydog_ping(void)
- {
- sgimc->watchdogt = 0;
- }
-@@ -46,18 +65,14 @@
- */
- static int indydog_open(struct inode *inode, struct file *file)
- {
-- u32 mc_ctrl0;
--
-- if (test_and_set_bit(0,&indydog_alive))
-+ if (indydog_alive)
- return -EBUSY;
-
-- if (nowayout) {
-+ if (nowayout)
- MOD_INC_USE_COUNT;
-- }
-
- /* Activate timer */
-- mc_ctrl0 = sgimc->cpuctrl0 | SGIMC_CCTRL0_WDOG;
-- sgimc->cpuctrl0 = mc_ctrl0;
-+ indydog_start();
- indydog_ping();
-
- indydog_alive = 1;
-@@ -69,63 +84,48 @@
- static int indydog_release(struct inode *inode, struct file *file)
- {
- /* Shut off the timer.
-- * Lock it in if it's a module and we set nowayout. */
-- lock_kernel();
-- if (expect_close) {
-- u32 mc_ctrl0 = sgimc->cpuctrl0;
-+ * Lock it in if it's a module and we defined ...NOWAYOUT */
-+ if (!nowayout) {
-+ u32 mc_ctrl0 = sgimc->cpuctrl0;
- mc_ctrl0 &= ~SGIMC_CCTRL0_WDOG;
- sgimc->cpuctrl0 = mc_ctrl0;
- printk(KERN_INFO "Stopped watchdog timer.\n");
-- } else
-- printk(KERN_CRIT "WDT device closed unexpectedly. WDT will not stop!\n");
-- clear_bit(0, &indydog_alive);
-- unlock_kernel();
-+ }
-+ indydog_alive = 0;
-
- return 0;
- }
-
- static ssize_t indydog_write(struct file *file, const char *data, size_t len, loff_t *ppos)
- {
-- /* Can't seek (pwrite) on this device */
-+ /* Can't seek (pwrite) on this device */
- if (ppos != &file->f_pos)
- return -ESPIPE;
-
-- /*
-- * Refresh the timer.
-- */
-+ /* Refresh the timer. */
- if (len) {
-- if (!nowayout) {
-- size_t i;
--
-- /* In case it was set long ago */
-- expect_close = 0;
--
-- for (i = 0; i != len; i++) {
-- char c;
-- if (get_user(c, data + i))
-- return -EFAULT;
-- if (c == 'V')
-- expect_close = 1;
-- }
-- }
- indydog_ping();
-- return 1;
- }
-- return 0;
-+ return len;
- }
-
- static int indydog_ioctl(struct inode *inode, struct file *file,
- unsigned int cmd, unsigned long arg)
- {
-+ int options, retval = -EINVAL;
- static struct watchdog_info ident = {
-- options: WDIOF_MAGICCLOSE,
-- identity: "Hardware Watchdog for SGI IP22",
-+ .options = WDIOF_KEEPALIVEPING |
-+ WDIOF_MAGICCLOSE,
-+ .firmware_version = 0,
-+ .identity = "Hardware Watchdog for SGI IP22",
- };
-+
- switch (cmd) {
- default:
- return -ENOIOCTLCMD;
- case WDIOC_GETSUPPORT:
-- if(copy_to_user((struct watchdog_info *)arg, &ident, sizeof(ident)))
-+ if (copy_to_user((struct watchdog_info *)arg,
-+ &ident, sizeof(ident)))
- return -EFAULT;
- return 0;
- case WDIOC_GETSTATUS:
-@@ -134,31 +134,53 @@
- case WDIOC_KEEPALIVE:
- indydog_ping();
- return 0;
-+ case WDIOC_GETTIMEOUT:
-+ return put_user(WATCHDOG_TIMEOUT,(int *)arg);
-+ case WDIOC_SETOPTIONS:
-+ {
-+ if (get_user(options, (int *)arg))
-+ return -EFAULT;
-+
-+ if (options & WDIOS_DISABLECARD) {
-+ indydog_stop();
-+ retval = 0;
-+ }
-+
-+ if (options & WDIOS_ENABLECARD) {
-+ indydog_start();
-+ retval = 0;
-+ }
-+
-+ return retval;
-+ }
- }
- }
-
- static struct file_operations indydog_fops = {
-- owner: THIS_MODULE,
-- write: indydog_write,
-- ioctl: indydog_ioctl,
-- open: indydog_open,
-- release: indydog_release,
-+ .owner = THIS_MODULE,
-+ .write = indydog_write,
-+ .ioctl = indydog_ioctl,
-+ .open = indydog_open,
-+ .release = indydog_release,
- };
-
- static struct miscdevice indydog_miscdev = {
-- minor: WATCHDOG_MINOR,
-- name: "watchdog",
-- fops: &indydog_fops,
-+ .minor = WATCHDOG_MINOR,
-+ .name = "watchdog",
-+ .fops = &indydog_fops,
- };
-
--static const char banner[] __initdata = KERN_INFO "Hardware Watchdog Timer for SGI IP22: 0.2\n";
-+static char banner[] __initdata =
-+ KERN_INFO PFX "Hardware Watchdog Timer for SGI IP22: 0.3\n";
-
- static int __init watchdog_init(void)
- {
- int ret = misc_register(&indydog_miscdev);
--
-- if (ret)
-+ if (ret) {
-+ printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n",
-+ WATCHDOG_MINOR, ret);
- return ret;
-+ }
-
- printk(banner);
-
-@@ -172,4 +194,7 @@
-
- module_init(watchdog_init);
- module_exit(watchdog_exit);
-+
-+MODULE_AUTHOR("Guido Guenther <agx@sigxcpu.org>");
-+MODULE_DESCRIPTION("Hardware Watchdog Device for SGI IP22");
- MODULE_LICENSE("GPL");
-diff -Nur linux-2.4.32-rc1/drivers/char/ip27-rtc.c linux-2.4.32-rc1.mips/drivers/char/ip27-rtc.c
---- linux-2.4.32-rc1/drivers/char/ip27-rtc.c 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/char/ip27-rtc.c 2004-04-06 03:35:30.000000000 +0200
-@@ -44,6 +44,7 @@
- #include <asm/sn/klconfig.h>
- #include <asm/sn/sn0/ip27.h>
- #include <asm/sn/sn0/hub.h>
-+#include <asm/sn/sn_private.h>
-
- static int rtc_ioctl(struct inode *inode, struct file *file,
- unsigned int cmd, unsigned long arg);
-@@ -209,11 +210,8 @@
-
- static int __init rtc_init(void)
- {
-- nasid_t nid;
--
-- nid = get_nasid();
- rtc = (struct m48t35_rtc *)
-- (KL_CONFIG_CH_CONS_INFO(nid)->memory_base + IOC3_BYTEBUS_DEV0);
-+ (KL_CONFIG_CH_CONS_INFO(master_nasid)->memory_base + IOC3_BYTEBUS_DEV0);
-
- printk(KERN_INFO "Real Time Clock Driver v%s\n", RTC_VERSION);
- if (misc_register(&rtc_dev)) {
-@@ -325,3 +323,7 @@
-
- rtc_tm->tm_mon--;
- }
-+
-+MODULE_AUTHOR("Ralf Baechle <ralf@linux-mips.org>");
-+MODULE_DESCRIPTION("SGI IP27 M48T35 RTC driver");
-+MODULE_LICENSE("GPL");
-diff -Nur linux-2.4.32-rc1/drivers/char/Makefile linux-2.4.32-rc1.mips/drivers/char/Makefile
---- linux-2.4.32-rc1/drivers/char/Makefile 2004-08-08 01:26:04.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/char/Makefile 2005-02-11 22:09:56.000000000 +0100
-@@ -48,7 +48,12 @@
- KEYBD =
- endif
- ifeq ($(CONFIG_VR41XX_KIU),y)
-- KEYMAP =
-+ ifeq ($(CONFIG_IBM_WORKPAD),y)
-+ KEYMAP = ibm_workpad_keymap.o
-+ endif
-+ ifeq ($(CONFIG_VICTOR_MPC30X),y)
-+ KEYMAP = victor_mpc30x_keymap.o
-+ endif
- KEYBD = vr41xx_keyb.o
- endif
- endif
-@@ -251,7 +256,6 @@
- obj-$(CONFIG_RTC) += rtc.o
- obj-$(CONFIG_GEN_RTC) += genrtc.o
- obj-$(CONFIG_EFI_RTC) += efirtc.o
--obj-$(CONFIG_SGI_DS1286) += ds1286.o
- obj-$(CONFIG_MIPS_RTC) += mips_rtc.o
- obj-$(CONFIG_SGI_IP27_RTC) += ip27-rtc.o
- ifeq ($(CONFIG_PPC),)
-@@ -259,6 +263,7 @@
- endif
- obj-$(CONFIG_TOSHIBA) += toshiba.o
- obj-$(CONFIG_I8K) += i8k.o
-+obj-$(CONFIG_DS1286) += ds1286.o
- obj-$(CONFIG_DS1620) += ds1620.o
- obj-$(CONFIG_DS1742) += ds1742.o
- obj-$(CONFIG_INTEL_RNG) += i810_rng.o
-@@ -269,6 +274,7 @@
-
- obj-$(CONFIG_ITE_GPIO) += ite_gpio.o
- obj-$(CONFIG_AU1X00_GPIO) += au1000_gpio.o
-+obj-$(CONFIG_AU1550_PSC_SPI) += au1550_psc_spi.o
- obj-$(CONFIG_AU1X00_USB_TTY) += au1000_usbtty.o
- obj-$(CONFIG_AU1X00_USB_RAW) += au1000_usbraw.o
- obj-$(CONFIG_COBALT_LCD) += lcd.o
-@@ -353,3 +359,9 @@
-
- qtronixmap.c: qtronixmap.map
- set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
-+
-+ibm_workpad_keymap.c: ibm_workpad_keymap.map
-+ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
-+
-+victor_mpc30x_keymap.c: victor_mpc30x_keymap.map
-+ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
-diff -Nur linux-2.4.32-rc1/drivers/char/mips_rtc.c linux-2.4.32-rc1.mips/drivers/char/mips_rtc.c
---- linux-2.4.32-rc1/drivers/char/mips_rtc.c 2004-01-05 14:53:56.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/char/mips_rtc.c 2004-06-28 14:54:53.000000000 +0200
-@@ -53,14 +53,6 @@
- #include <asm/io.h>
- #include <asm/uaccess.h>
- #include <asm/system.h>
--
--/*
-- * Check machine
-- */
--#if !defined(CONFIG_MIPS) || !defined(CONFIG_NEW_TIME_C)
--#error "This driver is for MIPS machines with CONFIG_NEW_TIME_C defined"
--#endif
--
- #include <asm/time.h>
-
- static unsigned long rtc_status = 0; /* bitmapped status byte. */
-diff -Nur linux-2.4.32-rc1/drivers/char/sb1250_duart.c linux-2.4.32-rc1.mips/drivers/char/sb1250_duart.c
---- linux-2.4.32-rc1/drivers/char/sb1250_duart.c 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/char/sb1250_duart.c 2004-09-17 01:25:44.000000000 +0200
-@@ -328,10 +328,11 @@
- if (c <= 0) break;
-
- if (from_user) {
-+ spin_unlock_irqrestore(&us->outp_lock, flags);
- if (copy_from_user(us->outp_buf + us->outp_tail, buf, c)) {
-- spin_unlock_irqrestore(&us->outp_lock, flags);
- return -EFAULT;
- }
-+ spin_lock_irqsave(&us->outp_lock, flags);
- } else {
- memcpy(us->outp_buf + us->outp_tail, buf, c);
- }
-@@ -498,9 +499,31 @@
- duart_set_cflag(us->line, tty->termios->c_cflag);
- }
-
-+static int get_serial_info(uart_state_t *us, struct serial_struct * retinfo) {
-+
-+ struct serial_struct tmp;
-+
-+ memset(&tmp, 0, sizeof(tmp));
-+
-+ tmp.type=PORT_SB1250;
-+ tmp.line=us->line;
-+ tmp.port=A_DUART_CHANREG(tmp.line,0);
-+ tmp.irq=K_INT_UART_0 + tmp.line;
-+ tmp.xmit_fifo_size=16; /* fixed by hw */
-+ tmp.baud_base=5000000;
-+ tmp.io_type=SERIAL_IO_MEM;
-+
-+ if (copy_to_user(retinfo,&tmp,sizeof(*retinfo)))
-+ return -EFAULT;
-+
-+ return 0;
-+}
-+
- static int duart_ioctl(struct tty_struct *tty, struct file * file,
- unsigned int cmd, unsigned long arg)
- {
-+ uart_state_t *us = (uart_state_t *) tty->driver_data;
-+
- /* if (serial_paranoia_check(info, tty->device, "rs_ioctl"))
- return -ENODEV;*/
- switch (cmd) {
-@@ -517,7 +540,7 @@
- printk("Ignoring TIOCMSET\n");
- break;
- case TIOCGSERIAL:
-- printk("Ignoring TIOCGSERIAL\n");
-+ return get_serial_info(us,(struct serial_struct *) arg);
- break;
- case TIOCSSERIAL:
- printk("Ignoring TIOCSSERIAL\n");
-diff -Nur linux-2.4.32-rc1/drivers/char/serial.c linux-2.4.32-rc1.mips/drivers/char/serial.c
---- linux-2.4.32-rc1/drivers/char/serial.c 2005-10-24 11:33:29.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/char/serial.c 2005-09-23 22:41:22.000000000 +0200
-@@ -62,6 +62,12 @@
- * Robert Schwebel <robert@schwebel.de>,
- * Juergen Beisert <jbeisert@eurodsn.de>,
- * Theodore Ts'o <tytso@mit.edu>
-+ *
-+ * 10/00: Added suport for MIPS Atlas board.
-+ * 11/00: Hooks for serial kernel debug port support added.
-+ * Kevin D. Kissell, kevink@mips.com and Carsten Langgaard,
-+ * carstenl@mips.com
-+ * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
- */
-
- static char *serial_version = "5.05c";
-@@ -413,6 +419,22 @@
- return 0;
- }
-
-+#if defined(CONFIG_MIPS_ATLAS) || defined(CONFIG_MIPS_SEAD)
-+
-+#include <asm/mips-boards/atlas.h>
-+
-+static _INLINE_ unsigned int serial_in(struct async_struct *info, int offset)
-+{
-+ return (*(volatile unsigned int *)(mips_io_port_base + ATLAS_UART_REGS_BASE + offset*8) & 0xff);
-+}
-+
-+static _INLINE_ void serial_out(struct async_struct *info, int offset, int value)
-+{
-+ *(volatile unsigned int *)(mips_io_port_base + ATLAS_UART_REGS_BASE + offset*8) = value;
-+}
-+
-+#else
-+
- static _INLINE_ unsigned int serial_in(struct async_struct *info, int offset)
- {
- switch (info->io_type) {
-@@ -447,6 +469,8 @@
- outb(value, info->port+offset);
- }
- }
-+#endif
-+
-
- /*
- * We used to support using pause I/O for certain machines. We
-diff -Nur linux-2.4.32-rc1/drivers/char/victor_mpc30x_keymap.map linux-2.4.32-rc1.mips/drivers/char/victor_mpc30x_keymap.map
---- linux-2.4.32-rc1/drivers/char/victor_mpc30x_keymap.map 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/char/victor_mpc30x_keymap.map 2004-02-05 18:04:42.000000000 +0100
-@@ -0,0 +1,102 @@
-+# Victor Interlink MP-C303/304 keyboard keymap
-+#
-+# Copyright (C) 2003 Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
-+#
-+# 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.
-+keymaps 0-1,4-5,8-9,12
-+alt_is_meta
-+strings as usual
-+compose as usual for "iso-8859-1"
-+
-+# First line
-+keycode 89 = Escape
-+keycode 9 = Delete
-+
-+# 2nd line
-+keycode 73 = one exclam
-+keycode 18 = two quotedbl
-+keycode 92 = three numbersign
-+ control keycode 92 = Escape
-+keycode 53 = four dollar
-+ control keycode 53 = Control_backslash
-+keycode 21 = five percent
-+ control keycode 21 = Control_bracketright
-+keycode 50 = six ampersand
-+ control keycode 50 = Control_underscore
-+keycode 48 = seven apostrophe
-+keycode 51 = eight parenleft
-+keycode 16 = nine parenright
-+keycode 80 = zero asciitilde
-+ control keycode 80 = nul
-+keycode 49 = minus equal
-+keycode 30 = asciicircum asciitilde
-+ control keycode 30 = Control_asciicircum
-+keycode 5 = backslash bar
-+ control keycode 5 = Control_backslash
-+keycode 13 = BackSpace
-+# 3rd line
-+keycode 57 = Tab
-+keycode 74 = q
-+keycode 26 = w
-+keycode 81 = e
-+keycode 29 = r
-+keycode 37 = t
-+keycode 45 = y
-+keycode 72 = u
-+keycode 24 = i
-+keycode 32 = o
-+keycode 41 = p
-+keycode 1 = at grave
-+ control keycode 1 = nul
-+keycode 54 = bracketleft braceleft
-+keycode 63 = Return
-+ alt keycode 63 = Meta_Control_m
-+# 4th line
-+keycode 23 = Caps_Lock
-+keycode 34 = a
-+keycode 66 = s
-+keycode 52 = d
-+keycode 20 = f
-+keycode 84 = g
-+keycode 67 = h
-+keycode 64 = j
-+keycode 17 = k
-+keycode 83 = l
-+keycode 22 = semicolon plus
-+keycode 61 = colon asterisk
-+ control keycode 61 = Control_g
-+keycode 65 = bracketright braceright
-+ control keycode 65 = Control_bracketright
-+# 5th line
-+keycode 91 = Shift
-+keycode 76 = z
-+keycode 68 = x
-+keycode 28 = c
-+keycode 36 = v
-+keycode 44 = b
-+keycode 19 = n
-+keycode 27 = m
-+keycode 35 = comma less
-+keycode 3 = period greater
-+ control keycode 3 = Compose
-+keycode 38 = slash question
-+ control keycode 38 = Delete
-+ shift control keycode 38 = Delete
-+keycode 6 = backslash underscore
-+ control keycode 6 = Control_backslash
-+keycode 55 = Up
-+ alt keycode 55 = PageUp
-+keycode 14 = Shift
-+# 6th line
-+keycode 56 = Control
-+keycode 42 = Alt
-+keycode 33 = space
-+ control keycode 33 = nul
-+keycode 7 = Left
-+ alt keycode 7 = Home
-+keycode 31 = Down
-+ alt keycode 31 = PageDown
-+keycode 47 = Right
-+ alt keycode 47 = End
-diff -Nur linux-2.4.32-rc1/drivers/char/vr41xx_keyb.c linux-2.4.32-rc1.mips/drivers/char/vr41xx_keyb.c
---- linux-2.4.32-rc1/drivers/char/vr41xx_keyb.c 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/char/vr41xx_keyb.c 2004-02-17 13:08:55.000000000 +0100
-@@ -308,7 +308,7 @@
- if (found != 0) {
- kiu_base = VRC4173_KIU_OFFSET;
- mkiuintreg = VRC4173_MKIUINTREG_OFFSET;
-- vrc4173_clock_supply(VRC4173_KIU_CLOCK);
-+ vrc4173_supply_clock(VRC4173_KIU_CLOCK);
- }
- }
- #endif
-@@ -325,7 +325,7 @@
-
- if (current_cpu_data.cputype == CPU_VR4111 ||
- current_cpu_data.cputype == CPU_VR4121)
-- vr41xx_clock_supply(KIU_CLOCK);
-+ vr41xx_supply_clock(KIU_CLOCK);
-
- kiu_writew(KIURST_KIURST, KIURST);
-
-diff -Nur linux-2.4.32-rc1/drivers/i2c/Config.in linux-2.4.32-rc1.mips/drivers/i2c/Config.in
---- linux-2.4.32-rc1/drivers/i2c/Config.in 2004-04-14 15:05:29.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/i2c/Config.in 2005-02-11 20:49:04.000000000 +0100
-@@ -57,6 +57,10 @@
- if [ "$CONFIG_SGI_IP22" = "y" ]; then
- dep_tristate 'I2C SGI interfaces' CONFIG_I2C_ALGO_SGI $CONFIG_I2C
- fi
-+
-+ if [ "$CONFIG_SOC_AU1550" = "y" -o "$CONFIG_SOC_AU1200" ]; then
-+ dep_tristate 'Au1550/Au1200 SMBus interface' CONFIG_I2C_ALGO_AU1550 $CONFIG_I2C
-+ fi
-
- # This is needed for automatic patch generation: sensors code starts here
- # This is needed for automatic patch generation: sensors code ends here
-diff -Nur linux-2.4.32-rc1/drivers/i2c/i2c-algo-au1550.c linux-2.4.32-rc1.mips/drivers/i2c/i2c-algo-au1550.c
---- linux-2.4.32-rc1/drivers/i2c/i2c-algo-au1550.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/i2c/i2c-algo-au1550.c 2005-02-11 20:49:04.000000000 +0100
-@@ -0,0 +1,340 @@
-+/*
-+ * i2c-algo-au1550.c: SMBus (i2c) driver algorithms for Alchemy PSC interface
-+ * Copyright (C) 2004 Embedded Edge, LLC <dan@embeddededge.com>
-+ *
-+ * The documentation describes this as an SMBus controller, but it doesn't
-+ * understand any of the SMBus protocol in hardware. It's really an I2C
-+ * controller that could emulate most of the SMBus in software.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/errno.h>
-+#include <linux/delay.h>
-+
-+#include <asm/au1000.h>
-+#include <asm/au1xxx_psc.h>
-+
-+#include <linux/i2c.h>
-+#include <linux/i2c-algo-au1550.h>
-+
-+static int
-+wait_xfer_done(struct i2c_algo_au1550_data *adap)
-+{
-+ u32 stat;
-+ int i;
-+ volatile psc_smb_t *sp;
-+
-+ sp = (volatile psc_smb_t *)(adap->psc_base);
-+
-+ /* Wait for Tx FIFO Underflow.
-+ */
-+ for (i = 0; i < adap->xfer_timeout; i++) {
-+ stat = sp->psc_smbevnt;
-+ au_sync();
-+ if ((stat & PSC_SMBEVNT_TU) != 0) {
-+ /* Clear it. */
-+ sp->psc_smbevnt = PSC_SMBEVNT_TU;
-+ au_sync();
-+ return 0;
-+ }
-+ udelay(1);
-+ }
-+
-+ return -ETIMEDOUT;
-+}
-+
-+static int
-+wait_ack(struct i2c_algo_au1550_data *adap)
-+{
-+ u32 stat;
-+ volatile psc_smb_t *sp;
-+
-+ if (wait_xfer_done(adap))
-+ return -ETIMEDOUT;
-+
-+ sp = (volatile psc_smb_t *)(adap->psc_base);
-+
-+ stat = sp->psc_smbevnt;
-+ au_sync();
-+
-+ if ((stat & (PSC_SMBEVNT_DN | PSC_SMBEVNT_AN | PSC_SMBEVNT_AL)) != 0)
-+ return -ETIMEDOUT;
-+
-+ return 0;
-+}
-+
-+static int
-+wait_master_done(struct i2c_algo_au1550_data *adap)
-+{
-+ u32 stat;
-+ int i;
-+ volatile psc_smb_t *sp;
-+
-+ sp = (volatile psc_smb_t *)(adap->psc_base);
-+
-+ /* Wait for Master Done.
-+ */
-+ for (i = 0; i < adap->xfer_timeout; i++) {
-+ stat = sp->psc_smbevnt;
-+ au_sync();
-+ if ((stat & PSC_SMBEVNT_MD) != 0)
-+ return 0;
-+ udelay(1);
-+ }
-+
-+ return -ETIMEDOUT;
-+}
-+
-+static int
-+do_address(struct i2c_algo_au1550_data *adap, unsigned int addr, int rd)
-+{
-+ volatile psc_smb_t *sp;
-+ u32 stat;
-+
-+ sp = (volatile psc_smb_t *)(adap->psc_base);
-+
-+ /* Reset the FIFOs, clear events.
-+ */
-+ sp->psc_smbpcr = PSC_SMBPCR_DC;
-+ sp->psc_smbevnt = PSC_SMBEVNT_ALLCLR;
-+ au_sync();
-+ do {
-+ stat = sp->psc_smbpcr;
-+ au_sync();
-+ } while ((stat & PSC_SMBPCR_DC) != 0);
-+
-+ /* Write out the i2c chip address and specify operation
-+ */
-+ addr <<= 1;
-+ if (rd)
-+ addr |= 1;
-+
-+ /* Put byte into fifo, start up master.
-+ */
-+ sp->psc_smbtxrx = addr;
-+ au_sync();
-+ sp->psc_smbpcr = PSC_SMBPCR_MS;
-+ au_sync();
-+ if (wait_ack(adap))
-+ return -EIO;
-+ return 0;
-+}
-+
-+static u32
-+wait_for_rx_byte(struct i2c_algo_au1550_data *adap, u32 *ret_data)
-+{
-+ int j;
-+ u32 data, stat;
-+ volatile psc_smb_t *sp;
-+
-+ if (wait_xfer_done(adap))
-+ return -EIO;
-+
-+ sp = (volatile psc_smb_t *)(adap->psc_base);
-+
-+ j = adap->xfer_timeout * 100;
-+ do {
-+ j--;
-+ if (j <= 0)
-+ return -EIO;
-+
-+ stat = sp->psc_smbstat;
-+ au_sync();
-+ if ((stat & PSC_SMBSTAT_RE) == 0)
-+ j = 0;
-+ else
-+ udelay(1);
-+ } while (j > 0);
-+ data = sp->psc_smbtxrx;
-+ au_sync();
-+ *ret_data = data;
-+
-+ return 0;
-+}
-+
-+static int
-+i2c_read(struct i2c_algo_au1550_data *adap, unsigned char *buf,
-+ unsigned int len)
-+{
-+ int i;
-+ u32 data;
-+ volatile psc_smb_t *sp;
-+
-+ if (len == 0)
-+ return 0;
-+
-+ /* A read is performed by stuffing the transmit fifo with
-+ * zero bytes for timing, waiting for bytes to appear in the
-+ * receive fifo, then reading the bytes.
-+ */
-+
-+ sp = (volatile psc_smb_t *)(adap->psc_base);
-+
-+ i = 0;
-+ while (i < (len-1)) {
-+ sp->psc_smbtxrx = 0;
-+ au_sync();
-+ if (wait_for_rx_byte(adap, &data))
-+ return -EIO;
-+
-+ buf[i] = data;
-+ i++;
-+ }
-+
-+ /* The last byte has to indicate transfer done.
-+ */
-+ sp->psc_smbtxrx = PSC_SMBTXRX_STP;
-+ au_sync();
-+ if (wait_master_done(adap))
-+ return -EIO;
-+
-+ data = sp->psc_smbtxrx;
-+ au_sync();
-+ buf[i] = data;
-+ return 0;
-+}
-+
-+static int
-+i2c_write(struct i2c_algo_au1550_data *adap, unsigned char *buf,
-+ unsigned int len)
-+{
-+ int i;
-+ u32 data;
-+ volatile psc_smb_t *sp;
-+
-+ if (len == 0)
-+ return 0;
-+
-+ sp = (volatile psc_smb_t *)(adap->psc_base);
-+
-+ i = 0;
-+ while (i < (len-1)) {
-+ data = buf[i];
-+ sp->psc_smbtxrx = data;
-+ au_sync();
-+ if (wait_ack(adap))
-+ return -EIO;
-+ i++;
-+ }
-+
-+ /* The last byte has to indicate transfer done.
-+ */
-+ data = buf[i];
-+ data |= PSC_SMBTXRX_STP;
-+ sp->psc_smbtxrx = data;
-+ au_sync();
-+ if (wait_master_done(adap))
-+ return -EIO;
-+ return 0;
-+}
-+
-+static int
-+au1550_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs[], int num)
-+{
-+ struct i2c_algo_au1550_data *adap = i2c_adap->algo_data;
-+ struct i2c_msg *p;
-+ int i, err = 0;
-+
-+ for (i = 0; !err && i < num; i++) {
-+ p = &msgs[i];
-+ err = do_address(adap, p->addr, p->flags & I2C_M_RD);
-+ if (err || !p->len)
-+ continue;
-+ if (p->flags & I2C_M_RD)
-+ err = i2c_read(adap, p->buf, p->len);
-+ else
-+ err = i2c_write(adap, p->buf, p->len);
-+ }
-+
-+ /* Return the number of messages processed, or the error code.
-+ */
-+ if (err == 0)
-+ err = num;
-+ return err;
-+}
-+
-+static u32
-+au1550_func(struct i2c_adapter *adap)
-+{
-+ return I2C_FUNC_I2C;
-+}
-+
-+static struct i2c_algorithm au1550_algo = {
-+ .name = "Au1550 algorithm",
-+ .id = I2C_ALGO_AU1550,
-+ .master_xfer = au1550_xfer,
-+ .functionality = au1550_func,
-+};
-+
-+/*
-+ * registering functions to load algorithms at runtime
-+ * Prior to calling us, the 50MHz clock frequency and routing
-+ * must have been set up for the PSC indicated by the adapter.
-+ */
-+int
-+i2c_au1550_add_bus(struct i2c_adapter *i2c_adap)
-+{
-+ struct i2c_algo_au1550_data *adap = i2c_adap->algo_data;
-+ volatile psc_smb_t *sp;
-+ u32 stat;
-+
-+ i2c_adap->algo = &au1550_algo;
-+
-+ /* Now, set up the PSC for SMBus PIO mode.
-+ */
-+ sp = (volatile psc_smb_t *)(adap->psc_base);
-+ sp->psc_ctrl = PSC_CTRL_DISABLE;
-+ au_sync();
-+ sp->psc_sel = PSC_SEL_PS_SMBUSMODE;
-+ sp->psc_smbcfg = 0;
-+ au_sync();
-+ sp->psc_ctrl = PSC_CTRL_ENABLE;
-+ au_sync();
-+ do {
-+ stat = sp->psc_smbstat;
-+ au_sync();
-+ } while ((stat & PSC_SMBSTAT_SR) == 0);
-+
-+ sp->psc_smbcfg = (PSC_SMBCFG_RT_FIFO8 | PSC_SMBCFG_TT_FIFO8 |
-+ PSC_SMBCFG_DD_DISABLE);
-+
-+ /* Divide by 8 to get a 6.25 MHz clock. The later protocol
-+ * timings are based on this clock.
-+ */
-+ sp->psc_smbcfg |= PSC_SMBCFG_SET_DIV(PSC_SMBCFG_DIV2);
-+ sp->psc_smbmsk = PSC_SMBMSK_ALLMASK;
-+ au_sync();
-+
-+ /* Set the protocol timer values. See Table 71 in the
-+ * Au1550 Data Book for standard timing values.
-+ */
-+ sp->psc_smbtmr = PSC_SMBTMR_SET_TH(2) | PSC_SMBTMR_SET_PS(15) | \
-+ PSC_SMBTMR_SET_PU(11) | PSC_SMBTMR_SET_SH(11) | \
-+ PSC_SMBTMR_SET_SU(11) | PSC_SMBTMR_SET_CL(15) | \
-+ PSC_SMBTMR_SET_CH(11);
-+ au_sync();
-+
-+ sp->psc_smbcfg |= PSC_SMBCFG_DE_ENABLE;
-+ do {
-+ stat = sp->psc_smbstat;
-+ au_sync();
-+ } while ((stat & PSC_SMBSTAT_DR) == 0);
-+
-+ return i2c_add_adapter(i2c_adap);
-+}
-+
-+
-+int
-+i2c_au1550_del_bus(struct i2c_adapter *adap)
-+{
-+ return i2c_del_adapter(adap);
-+}
-+
-+EXPORT_SYMBOL(i2c_au1550_add_bus);
-+EXPORT_SYMBOL(i2c_au1550_del_bus);
-+
-+MODULE_AUTHOR("Dan Malek <dan@embeddededge.com>");
-+MODULE_DESCRIPTION("SMBus Au1550 algorithm");
-+MODULE_LICENSE("GPL");
-diff -Nur linux-2.4.32-rc1/drivers/i2c/i2c-au1550.c linux-2.4.32-rc1.mips/drivers/i2c/i2c-au1550.c
---- linux-2.4.32-rc1/drivers/i2c/i2c-au1550.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/i2c/i2c-au1550.c 2005-02-11 20:49:04.000000000 +0100
-@@ -0,0 +1,154 @@
-+/*
-+ * i2c-au1550.c: SMBus (i2c) adapter for Alchemy PSC interface
-+ * Copyright (C) 2004 Embedded Edge, LLC <dan@embeddededge.com>
-+ *
-+ * This is just a skeleton adapter to use with the Au1550 PSC
-+ * algorithm. It was developed for the Pb1550, but will work with
-+ * any Au1550 board that has a similar PSC configuration.
-+ *
-+ * 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 <linux/config.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/errno.h>
-+
-+#include <asm/au1000.h>
-+#include <asm/au1xxx_psc.h>
-+#if defined( CONFIG_MIPS_PB1550 )
-+ #include <asm/pb1550.h>
-+#endif
-+#if defined( CONFIG_MIPS_PB1200 )
-+ #include <asm/pb1200.h>
-+#endif
-+#if defined( CONFIG_MIPS_DB1200 )
-+ #include <asm/db1200.h>
-+#endif
-+#if defined( CONFIG_MIPS_FICMMP )
-+ #include <asm/ficmmp.h>
-+#endif
-+
-+#include <linux/i2c.h>
-+#include <linux/i2c-algo-au1550.h>
-+
-+
-+
-+static int
-+pb1550_reg(struct i2c_client *client)
-+{
-+ return 0;
-+}
-+
-+static int
-+pb1550_unreg(struct i2c_client *client)
-+{
-+ return 0;
-+}
-+
-+static void
-+pb1550_inc_use(struct i2c_adapter *adap)
-+{
-+#ifdef MODULE
-+ MOD_INC_USE_COUNT;
-+#endif
-+}
-+
-+static void
-+pb1550_dec_use(struct i2c_adapter *adap)
-+{
-+#ifdef MODULE
-+ MOD_DEC_USE_COUNT;
-+#endif
-+}
-+
-+static struct i2c_algo_au1550_data pb1550_i2c_info = {
-+ SMBUS_PSC_BASE, 200, 200
-+};
-+
-+static struct i2c_adapter pb1550_board_adapter = {
-+ name: "pb1550 adapter",
-+ id: I2C_HW_AU1550_PSC,
-+ algo: NULL,
-+ algo_data: &pb1550_i2c_info,
-+ inc_use: pb1550_inc_use,
-+ dec_use: pb1550_dec_use,
-+ client_register: pb1550_reg,
-+ client_unregister: pb1550_unreg,
-+ client_count: 0,
-+};
-+
-+int __init
-+i2c_pb1550_init(void)
-+{
-+ /* This is where we would set up a 50MHz clock source
-+ * and routing. On the Pb1550, the SMBus is PSC2, which
-+ * uses a shared clock with USB. This has been already
-+ * configured by Yamon as a 48MHz clock, close enough
-+ * for our work.
-+ */
-+ if (i2c_au1550_add_bus(&pb1550_board_adapter) < 0)
-+ return -ENODEV;
-+
-+ return 0;
-+}
-+
-+/* BIG hack to support the control interface on the Wolfson WM8731
-+ * audio codec on the Pb1550 board. We get an address and two data
-+ * bytes to write, create an i2c message, and send it across the
-+ * i2c transfer function. We do this here because we have access to
-+ * the i2c adapter structure.
-+ */
-+static struct i2c_msg wm_i2c_msg; /* We don't want this stuff on the stack */
-+static u8 i2cbuf[2];
-+
-+int
-+pb1550_wm_codec_write(u8 addr, u8 reg, u8 val)
-+{
-+ wm_i2c_msg.addr = addr;
-+ wm_i2c_msg.flags = 0;
-+ wm_i2c_msg.buf = i2cbuf;
-+ wm_i2c_msg.len = 2;
-+ i2cbuf[0] = reg;
-+ i2cbuf[1] = val;
-+
-+ return pb1550_board_adapter.algo->master_xfer(&pb1550_board_adapter, &wm_i2c_msg, 1);
-+}
-+
-+/* the next function is needed by DVB driver. */
-+int pb1550_i2c_xfer(struct i2c_msg msgs[], int num)
-+{
-+ return pb1550_board_adapter.algo->master_xfer(&pb1550_board_adapter, msgs, num);
-+}
-+
-+EXPORT_SYMBOL(pb1550_wm_codec_write);
-+EXPORT_SYMBOL(pb1550_i2c_xfer);
-+
-+MODULE_AUTHOR("Dan Malek, Embedded Edge, LLC.");
-+MODULE_DESCRIPTION("SMBus adapter Alchemy pb1550");
-+MODULE_LICENSE("GPL");
-+
-+int
-+init_module(void)
-+{
-+ return i2c_pb1550_init();
-+}
-+
-+void
-+cleanup_module(void)
-+{
-+ i2c_au1550_del_bus(&pb1550_board_adapter);
-+}
-diff -Nur linux-2.4.32-rc1/drivers/i2c/i2c-core.c linux-2.4.32-rc1.mips/drivers/i2c/i2c-core.c
---- linux-2.4.32-rc1/drivers/i2c/i2c-core.c 2005-06-01 02:56:56.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/i2c/i2c-core.c 2005-05-23 14:12:30.000000000 +0200
-@@ -1280,6 +1280,9 @@
- #ifdef CONFIG_I2C_MAX1617
- extern int i2c_max1617_init(void);
- #endif
-+#ifdef CONFIG_I2C_ALGO_AU1550
-+ extern int i2c_pb1550_init(void);
-+#endif
-
- #ifdef CONFIG_I2C_PROC
- extern int sensors_init(void);
-@@ -1335,6 +1338,10 @@
- i2c_max1617_init();
- #endif
-
-+#ifdef CONFIG_I2C_ALGO_AU1550
-+ i2c_pb1550_init();
-+#endif
-+
- /* -------------- proc interface ---- */
- #ifdef CONFIG_I2C_PROC
- sensors_init();
-diff -Nur linux-2.4.32-rc1/drivers/i2c/Makefile linux-2.4.32-rc1.mips/drivers/i2c/Makefile
---- linux-2.4.32-rc1/drivers/i2c/Makefile 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/i2c/Makefile 2005-02-11 20:49:04.000000000 +0100
-@@ -6,7 +6,7 @@
-
- export-objs := i2c-core.o i2c-algo-bit.o i2c-algo-pcf.o \
- i2c-algo-ite.o i2c-algo-sibyte.o i2c-algo-sgi.o \
-- i2c-proc.o
-+ i2c-algo-au1550.o i2c-proc.o i2c-au1550.o
-
- obj-$(CONFIG_I2C) += i2c-core.o
- obj-$(CONFIG_I2C_CHARDEV) += i2c-dev.o
-@@ -25,6 +25,7 @@
- obj-$(CONFIG_I2C_ALGO_SIBYTE) += i2c-algo-sibyte.o i2c-sibyte.o
- obj-$(CONFIG_I2C_MAX1617) += i2c-max1617.o
- obj-$(CONFIG_I2C_ALGO_SGI) += i2c-algo-sgi.o
-+obj-$(CONFIG_I2C_ALGO_AU1550) += i2c-algo-au1550.o i2c-au1550.o
-
- # This is needed for automatic patch generation: sensors code starts here
- # This is needed for automatic patch generation: sensors code ends here
-diff -Nur linux-2.4.32-rc1/drivers/media/video/indycam.c linux-2.4.32-rc1.mips/drivers/media/video/indycam.c
---- linux-2.4.32-rc1/drivers/media/video/indycam.c 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/media/video/indycam.c 2004-12-09 21:32:05.000000000 +0100
-@@ -50,13 +50,14 @@
- 0x80, /* INDYCAM_GAMMA */
- };
-
-- int err = 0;
- struct indycam *camera;
- struct i2c_client *client;
-+ int err = 0;
-
- client = kmalloc(sizeof(*client), GFP_KERNEL);
-- if (!client)
-+ if (!client)
- return -ENOMEM;
-+
- camera = kmalloc(sizeof(*camera), GFP_KERNEL);
- if (!camera) {
- err = -ENOMEM;
-@@ -67,7 +68,7 @@
- client->adapter = adap;
- client->addr = addr;
- client->driver = &i2c_driver_indycam;
-- strcpy(client->name, "IndyCam client");
-+ strcpy(client->name, "IndyCam client");
- camera->client = client;
-
- err = i2c_attach_client(client);
-@@ -75,18 +76,18 @@
- goto out_free_camera;
-
- camera->version = i2c_smbus_read_byte_data(client, INDYCAM_VERSION);
-- if (camera->version != CAMERA_VERSION_INDY &&
-- camera->version != CAMERA_VERSION_MOOSE) {
-+ if ((camera->version != CAMERA_VERSION_INDY) &&
-+ (camera->version != CAMERA_VERSION_MOOSE)) {
- err = -ENODEV;
- goto out_detach_client;
- }
-- printk(KERN_INFO "Indycam v%d.%d detected.\n",
-+ printk(KERN_INFO "IndyCam v%d.%d detected.\n",
- INDYCAM_VERSION_MAJOR(camera->version),
- INDYCAM_VERSION_MINOR(camera->version));
-
- err = i2c_master_send(client, initseq, sizeof(initseq));
- if (err)
-- printk(KERN_INFO "IndyCam initalization failed\n");
-+ printk(KERN_ERR "IndyCam initalization failed.\n");
-
- MOD_INC_USE_COUNT;
- return 0;
-diff -Nur linux-2.4.32-rc1/drivers/media/video/vino.c linux-2.4.32-rc1.mips/drivers/media/video/vino.c
---- linux-2.4.32-rc1/drivers/media/video/vino.c 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/media/video/vino.c 2004-12-10 05:02:54.000000000 +0100
-@@ -5,6 +5,8 @@
- * License version 2 as published by the Free Software Foundation.
- *
- * Copyright (C) 2003 Ladislav Michl <ladis@linux-mips.org>
-+ * Copyright (C) 2004 Mikael Nousiainen <tmnousia@cc.hut.fi>
-+ *
- */
-
- #include <linux/module.h>
-@@ -37,13 +39,23 @@
- #define DEBUG(x...)
- #endif
-
-+/* Channels (who could have guessed) */
-+#define VINO_CHAN_NONE 0
-+#define VINO_CHAN_A 1
-+#define VINO_CHAN_B 2
-+
- /* VINO video size */
- #define VINO_PAL_WIDTH 768
- #define VINO_PAL_HEIGHT 576
- #define VINO_NTSC_WIDTH 646
- #define VINO_NTSC_HEIGHT 486
-
--/* set this to some sensible values. note: VINO_MIN_WIDTH has to be 8*x */
-+/* Minimum value for Y-clipping (for smaller values the images
-+ * will be corrupted) */
-+#define VINO_MIN_Y_CLIPPING 2
-+
-+/* Set these to some sensible values.
-+ * Note: the picture width has to be divisible by 8 */
- #define VINO_MIN_WIDTH 32
- #define VINO_MIN_HEIGHT 32
-
-@@ -64,9 +76,7 @@
-
- struct vino_device {
- struct video_device vdev;
--#define VINO_CHAN_A 1
--#define VINO_CHAN_B 2
-- int chan;
-+ int chan; /* VINO_CHAN_NONE, VINO_CHAN_A or VINO_CHAN_B */
- int alpha;
- /* clipping... */
- unsigned int left, right, top, bottom;
-@@ -106,7 +116,7 @@
-
- struct vino_client {
- struct i2c_client *driver;
-- int owner;
-+ int owner; /* VINO_CHAN_NONE, VINO_CHAN_A or VINO_CHAN_B */
- };
-
- struct vino_video {
-@@ -362,6 +372,7 @@
- static int dma_setup(struct vino_device *v)
- {
- u32 ctrl, intr;
-+ int ofs;
- struct sgi_vino_channel *ch;
-
- ch = (v->chan == VINO_CHAN_A) ? &vino->a : &vino->b;
-@@ -377,14 +388,24 @@
- ch->line_size = v->line_size - 8;
- /* set the alpha register */
- ch->alpha = v->alpha;
-- /* set cliping registers */
-- ch->clip_start = VINO_CLIP_ODD(v->top) | VINO_CLIP_EVEN(v->top+1) |
-+ /* Set the clipping registers, this is the constant source of fun :)
-+ * Y clipping start has to be >= 2 and end has to be start + height/2
-+ * The values of top and bottom are even so dividing is not a problem
-+ *
-+ * The docs say that clipping values for the even field should be
-+ * odd_end + something_to_skip_vertical_blanking + some_lines and
-+ * even_start + height/2, though the image is good this way also
-+ *
-+ * TODO: for analog sources (SAA7191), the clipping values are a bit
-+ * different and that case isn't yet handled
-+ */
-+ ofs = VINO_MIN_Y_CLIPPING; /* Should depend on input source */
-+ ch->clip_start = VINO_CLIP_ODD(ofs + v->top / 2) |
-+ VINO_CLIP_EVEN(ofs + v->top / 2 + 1) |
- VINO_CLIP_X(v->left);
-- ch->clip_end = VINO_CLIP_ODD(v->bottom) | VINO_CLIP_EVEN(v->bottom+1) |
-+ ch->clip_end = VINO_CLIP_ODD(ofs + v->bottom / 2 - 1) |
-+ VINO_CLIP_EVEN(ofs + v->bottom / 2) |
- VINO_CLIP_X(v->right);
-- /* FIXME: end-of-field bug workaround
-- VINO_CLIP_X(VINO_PAL_WIDTH);
-- */
- /* init the frame rate and norm (full frame rate only for now...) */
- ch->frame_rate = VINO_FRAMERT_RT(0x1fff) |
- (get_capture_norm(v) == VIDEO_MODE_PAL ?
-@@ -510,6 +531,7 @@
- static void vino_interrupt(int irq, void *dev_id, struct pt_regs *regs)
- {
- u32 intr, ctrl;
-+ int a_eof, b_eof;
-
- spin_lock(&Vino->vino_lock);
- ctrl = vino->control;
-@@ -525,12 +547,14 @@
- vino->control = ctrl;
- clear_eod(&Vino->chB);
- }
-+ a_eof = intr & VINO_INTSTAT_A_EOF;
-+ b_eof = intr & VINO_INTSTAT_B_EOF;
- vino->intr_status = ~intr;
- spin_unlock(&Vino->vino_lock);
-- /* FIXME: For now we are assuming that interrupt means that frame is
-- * done. That's not true, but we can live with such brokeness for
-- * a while ;-) */
-- field_done(&Vino->chA);
-+ if (a_eof)
-+ field_done(&Vino->chA);
-+ if (b_eof)
-+ field_done(&Vino->chB);
- }
-
- static int vino_grab(struct vino_device *v, int frame)
-diff -Nur linux-2.4.32-rc1/drivers/mtd/devices/docprobe.c linux-2.4.32-rc1.mips/drivers/mtd/devices/docprobe.c
---- linux-2.4.32-rc1/drivers/mtd/devices/docprobe.c 2003-06-13 16:51:34.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/mtd/devices/docprobe.c 2003-06-16 01:42:21.000000000 +0200
-@@ -89,10 +89,10 @@
- 0xe4000000,
- #elif defined(CONFIG_MOMENCO_OCELOT)
- 0x2f000000,
-- 0xff000000,
-+ 0xff000000,
- #elif defined(CONFIG_MOMENCO_OCELOT_G) || defined (CONFIG_MOMENCO_OCELOT_C)
-- 0xff000000,
--##else
-+ 0xff000000,
-+#else
- #warning Unknown architecture for DiskOnChip. No default probe locations defined
- #endif
- 0 };
-diff -Nur linux-2.4.32-rc1/drivers/mtd/devices/ms02-nv.c linux-2.4.32-rc1.mips/drivers/mtd/devices/ms02-nv.c
---- linux-2.4.32-rc1/drivers/mtd/devices/ms02-nv.c 2003-06-13 16:51:34.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/mtd/devices/ms02-nv.c 2004-07-30 12:22:40.000000000 +0200
-@@ -1,10 +1,10 @@
- /*
-- * Copyright (c) 2001 Maciej W. Rozycki
-+ * Copyright (c) 2001 Maciej W. Rozycki
- *
-- * 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 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.
- *
- * $Id: ms02-nv.c,v 1.2 2003/01/24 14:05:17 dwmw2 Exp $
- */
-@@ -29,18 +29,18 @@
-
-
- static char version[] __initdata =
-- "ms02-nv.c: v.1.0.0 13 Aug 2001 Maciej W. Rozycki.\n";
-+ "ms02-nv.c: v.1.0.0 13 Aug 2001 Maciej W. Rozycki.\n";
-
--MODULE_AUTHOR("Maciej W. Rozycki <macro@ds2.pg.gda.pl>");
-+MODULE_AUTHOR("Maciej W. Rozycki <macro@linux-mips.org>");
- MODULE_DESCRIPTION("DEC MS02-NV NVRAM module driver");
- MODULE_LICENSE("GPL");
-
-
- /*
- * Addresses we probe for an MS02-NV at. Modules may be located
-- * at any 8MB boundary within a 0MB up to 112MB range or at any 32MB
-- * boundary within a 0MB up to 448MB range. We don't support a module
-- * at 0MB, though.
-+ * at any 8MiB boundary within a 0MiB up to 112MiB range or at any 32MiB
-+ * boundary within a 0MiB up to 448MiB range. We don't support a module
-+ * at 0MiB, though.
- */
- static ulong ms02nv_addrs[] __initdata = {
- 0x07000000, 0x06800000, 0x06000000, 0x05800000, 0x05000000,
-@@ -130,7 +130,7 @@
-
- int ret = -ENODEV;
-
-- /* The module decodes 8MB of address space. */
-+ /* The module decodes 8MiB of address space. */
- mod_res = kmalloc(sizeof(*mod_res), GFP_KERNEL);
- if (!mod_res)
- return -ENOMEM;
-@@ -233,7 +233,7 @@
- goto err_out_csr_res;
- }
-
-- printk(KERN_INFO "mtd%d: %s at 0x%08lx, size %uMB.\n",
-+ printk(KERN_INFO "mtd%d: %s at 0x%08lx, size %uMiB.\n",
- mtd->index, ms02nv_name, addr, size >> 20);
-
- mp->next = root_ms02nv_mtd;
-@@ -293,12 +293,12 @@
-
- switch (mips_machtype) {
- case MACH_DS5000_200:
-- csr = (volatile u32 *)KN02_CSR_ADDR;
-+ csr = (volatile u32 *)KN02_CSR_BASE;
- if (*csr & KN02_CSR_BNK32M)
- stride = 2;
- break;
- case MACH_DS5000_2X0:
-- case MACH_DS5000:
-+ case MACH_DS5900:
- csr = (volatile u32 *)KN03_MCR_BASE;
- if (*csr & KN03_MCR_BNK32M)
- stride = 2;
-diff -Nur linux-2.4.32-rc1/drivers/mtd/devices/ms02-nv.h linux-2.4.32-rc1.mips/drivers/mtd/devices/ms02-nv.h
---- linux-2.4.32-rc1/drivers/mtd/devices/ms02-nv.h 2002-11-29 00:53:13.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/mtd/devices/ms02-nv.h 2004-07-30 12:22:40.000000000 +0200
-@@ -1,32 +1,96 @@
- /*
-- * Copyright (c) 2001 Maciej W. Rozycki
-+ * Copyright (c) 2001, 2003 Maciej W. Rozycki
- *
-- * 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.
-+ * DEC MS02-NV (54-20948-01) battery backed-up NVRAM module for
-+ * DECstation/DECsystem 5000/2x0 and DECsystem 5900 and 5900/260
-+ * systems.
-+ *
-+ * 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.
-+ *
-+ * $Id: ms02-nv.h,v 1.3 2003/08/19 09:25:36 dwmw2 Exp $
- */
-
- #include <linux/ioport.h>
- #include <linux/mtd/mtd.h>
-
-+/*
-+ * Addresses are decoded as follows:
-+ *
-+ * 0x000000 - 0x3fffff SRAM
-+ * 0x400000 - 0x7fffff CSR
-+ *
-+ * Within the SRAM area the following ranges are forced by the system
-+ * firmware:
-+ *
-+ * 0x000000 - 0x0003ff diagnostic area, destroyed upon a reboot
-+ * 0x000400 - ENDofRAM storage area, available to operating systems
-+ *
-+ * but we can't really use the available area right from 0x000400 as
-+ * the first word is used by the firmware as a status flag passed
-+ * from an operating system. If anything but the valid data magic
-+ * ID value is found, the firmware considers the SRAM clean, i.e.
-+ * containing no valid data, and disables the battery resulting in
-+ * data being erased as soon as power is switched off. So the choice
-+ * for the start address of the user-available is 0x001000 which is
-+ * nicely page aligned. The area between 0x000404 and 0x000fff may
-+ * be used by the driver for own needs.
-+ *
-+ * The diagnostic area defines two status words to be read by an
-+ * operating system, a magic ID to distinguish a MS02-NV board from
-+ * anything else and a status information providing results of tests
-+ * as well as the size of SRAM available, which can be 1MiB or 2MiB
-+ * (that's what the firmware handles; no idea if 2MiB modules ever
-+ * existed).
-+ *
-+ * The firmware only handles the MS02-NV board if installed in the
-+ * last (15th) slot, so for any other location the status information
-+ * stored in the SRAM cannot be relied upon. But from the hardware
-+ * point of view there is no problem using up to 14 such boards in a
-+ * system -- only the 1st slot needs to be filled with a DRAM module.
-+ * The MS02-NV board is ECC-protected, like other MS02 memory boards.
-+ *
-+ * The state of the battery as provided by the CSR is reflected on
-+ * the two onboard LEDs. When facing the battery side of the board,
-+ * with the LEDs at the top left and the battery at the bottom right
-+ * (i.e. looking from the back side of the system box), their meaning
-+ * is as follows (the system has to be powered on):
-+ *
-+ * left LED battery disable status: lit = enabled
-+ * right LED battery condition status: lit = OK
-+ */
-+
- /* MS02-NV iomem register offsets. */
- #define MS02NV_CSR 0x400000 /* control & status register */
-
-+/* MS02-NV CSR status bits. */
-+#define MS02NV_CSR_BATT_OK 0x01 /* battery OK */
-+#define MS02NV_CSR_BATT_OFF 0x02 /* battery disabled */
-+
-+
- /* MS02-NV memory offsets. */
- #define MS02NV_DIAG 0x0003f8 /* diagnostic status */
- #define MS02NV_MAGIC 0x0003fc /* MS02-NV magic ID */
--#define MS02NV_RAM 0x000400 /* general-purpose RAM start */
-+#define MS02NV_VALID 0x000400 /* valid data magic ID */
-+#define MS02NV_RAM 0x001000 /* user-exposed RAM start */
-
--/* MS02-NV diagnostic status constants. */
--#define MS02NV_DIAG_SIZE_MASK 0xf0 /* RAM size mask */
--#define MS02NV_DIAG_SIZE_SHIFT 0x10 /* RAM size shift (left) */
-+/* MS02-NV diagnostic status bits. */
-+#define MS02NV_DIAG_TEST 0x01 /* SRAM test done (?) */
-+#define MS02NV_DIAG_RO 0x02 /* SRAM r/o test done */
-+#define MS02NV_DIAG_RW 0x04 /* SRAM r/w test done */
-+#define MS02NV_DIAG_FAIL 0x08 /* SRAM test failed */
-+#define MS02NV_DIAG_SIZE_MASK 0xf0 /* SRAM size mask */
-+#define MS02NV_DIAG_SIZE_SHIFT 0x10 /* SRAM size shift (left) */
-
- /* MS02-NV general constants. */
- #define MS02NV_ID 0x03021966 /* MS02-NV magic ID value */
-+#define MS02NV_VALID_ID 0xbd100248 /* valid data magic ID value */
- #define MS02NV_SLOT_SIZE 0x800000 /* size of the address space
- decoded by the module */
-
-+
- typedef volatile u32 ms02nv_uint;
-
- struct ms02nv_private {
-diff -Nur linux-2.4.32-rc1/drivers/mtd/maps/Config.in linux-2.4.32-rc1.mips/drivers/mtd/maps/Config.in
---- linux-2.4.32-rc1/drivers/mtd/maps/Config.in 2003-06-13 16:51:34.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/mtd/maps/Config.in 2004-02-26 01:46:35.000000000 +0100
-@@ -51,11 +51,26 @@
- dep_tristate ' Pb1000 MTD support' CONFIG_MTD_PB1000 $CONFIG_MIPS_PB1000
- dep_tristate ' Pb1500 MTD support' CONFIG_MTD_PB1500 $CONFIG_MIPS_PB1500
- dep_tristate ' Pb1100 MTD support' CONFIG_MTD_PB1100 $CONFIG_MIPS_PB1100
-+ dep_tristate ' Bosporus MTD support' CONFIG_MTD_BOSPORUS $CONFIG_MIPS_BOSPORUS
-+ dep_tristate ' XXS1500 boot flash device' CONFIG_MTD_XXS1500 $CONFIG_MIPS_XXS1500
-+ dep_tristate ' MTX-1 flash device' CONFIG_MTD_MTX1 $CONFIG_MIPS_MTX1
- if [ "$CONFIG_MTD_PB1500" = "y" -o "$CONFIG_MTD_PB1500" = "m" \
- -o "$CONFIG_MTD_PB1100" = "y" -o "$CONFIG_MTD_PB1100" = "m" ]; then
- bool ' Pb[15]00 boot flash device' CONFIG_MTD_PB1500_BOOT
- bool ' Pb[15]00 user flash device (2nd 32MiB bank)' CONFIG_MTD_PB1500_USER
- fi
-+ tristate ' Db1x00 MTD support' CONFIG_MTD_DB1X00
-+ if [ "$CONFIG_MTD_DB1X00" = "y" -o "$CONFIG_MTD_DB1X00" = "m" ]; then
-+ bool ' Db1x00 boot flash device' CONFIG_MTD_DB1X00_BOOT
-+ bool ' Db1x00 user flash device (2nd bank)' CONFIG_MTD_DB1X00_USER
-+ fi
-+ tristate ' Pb1550 MTD support' CONFIG_MTD_PB1550
-+ if [ "$CONFIG_MTD_PB1550" = "y" -o "$CONFIG_MTD_PB1550" = "m" ]; then
-+ bool ' Pb1550 Boot Flash' CONFIG_MTD_PB1550_BOOT
-+ bool ' Pb1550 User Parameter Flash' CONFIG_MTD_PB1550_USER
-+ fi
-+ dep_tristate ' Hydrogen 3 MTD support' CONFIG_MTD_HYDROGEN3 $CONFIG_MIPS_HYDROGEN3
-+ dep_tristate ' Mirage MTD support' CONFIG_MTD_MIRAGE $CONFIG_MIPS_MIRAGE
- dep_tristate ' Flash chip mapping on ITE QED-4N-S01B, Globespan IVR or custom board' CONFIG_MTD_CSTM_MIPS_IXX $CONFIG_MTD_CFI $CONFIG_MTD_JEDEC $CONFIG_MTD_PARTITIONS
- if [ "$CONFIG_MTD_CSTM_MIPS_IXX" = "y" -o "$CONFIG_MTD_CSTM_MIPS_IXX" = "m" ]; then
- hex ' Physical start address of flash mapping' CONFIG_MTD_CSTM_MIPS_IXX_START 0x8000000
-diff -Nur linux-2.4.32-rc1/drivers/mtd/maps/db1x00-flash.c linux-2.4.32-rc1.mips/drivers/mtd/maps/db1x00-flash.c
---- linux-2.4.32-rc1/drivers/mtd/maps/db1x00-flash.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/mtd/maps/db1x00-flash.c 2005-02-03 07:35:29.000000000 +0100
-@@ -0,0 +1,283 @@
-+/*
-+ * Flash memory access on Alchemy Db1xxx boards
-+ *
-+ * (C) 2003 Pete Popov <ppopov@pacbell.net>
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/map.h>
-+#include <linux/mtd/partitions.h>
-+
-+#include <asm/io.h>
-+#include <asm/au1000.h>
-+#include <asm/db1x00.h>
-+
-+#ifdef DEBUG_RW
-+#define DBG(x...) printk(x)
-+#else
-+#define DBG(x...)
-+#endif
-+
-+static unsigned long window_addr;
-+static unsigned long window_size;
-+static unsigned long flash_size;
-+
-+__u8 physmap_read8(struct map_info *map, unsigned long ofs)
-+{
-+ __u8 ret;
-+ ret = __raw_readb(map->map_priv_1 + ofs);
-+ DBG("read8 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+__u16 physmap_read16(struct map_info *map, unsigned long ofs)
-+{
-+ __u16 ret;
-+ ret = __raw_readw(map->map_priv_1 + ofs);
-+ DBG("read16 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+__u32 physmap_read32(struct map_info *map, unsigned long ofs)
-+{
-+ __u32 ret;
-+ ret = __raw_readl(map->map_priv_1 + ofs);
-+ DBG("read32 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+void physmap_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
-+{
-+ DBG("physmap_copy from %x to %x\n", (unsigned)from, (unsigned)to);
-+ memcpy_fromio(to, map->map_priv_1 + from, len);
-+}
-+
-+void physmap_write8(struct map_info *map, __u8 d, unsigned long adr)
-+{
-+ DBG("write8 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writeb(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_write16(struct map_info *map, __u16 d, unsigned long adr)
-+{
-+ DBG("write16 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writew(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_write32(struct map_info *map, __u32 d, unsigned long adr)
-+{
-+ DBG("write32 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writel(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_copy_to(struct map_info *map, unsigned long to, const void *from, ssize_t len)
-+{
-+ DBG("physmap_copy_to %x from %x\n", (unsigned)to, (unsigned)from);
-+ memcpy_toio(map->map_priv_1 + to, from, len);
-+}
-+
-+static struct map_info db1x00_map = {
-+ name: "Db1x00 flash",
-+ read8: physmap_read8,
-+ read16: physmap_read16,
-+ read32: physmap_read32,
-+ copy_from: physmap_copy_from,
-+ write8: physmap_write8,
-+ write16: physmap_write16,
-+ write32: physmap_write32,
-+ copy_to: physmap_copy_to,
-+};
-+
-+static unsigned char flash_buswidth = 4;
-+
-+/*
-+ * The Db1x boards support different flash densities. We setup
-+ * the mtd_partition structures below for default of 64Mbit
-+ * flash densities, and override the partitions sizes, if
-+ * necessary, after we check the board status register.
-+ */
-+
-+#ifdef DB1X00_BOTH_BANKS
-+/* both banks will be used. Combine the first bank and the first
-+ * part of the second bank together into a single jffs/jffs2
-+ * partition.
-+ */
-+static struct mtd_partition db1x00_partitions[] = {
-+ {
-+ name: "User FS",
-+ size: 0x1c00000,
-+ offset: 0x0000000
-+ },{
-+ name: "yamon",
-+ size: 0x0100000,
-+ offset: MTDPART_OFS_APPEND,
-+ mask_flags: MTD_WRITEABLE
-+ },{
-+ name: "raw kernel",
-+ size: (0x300000-0x40000), /* last 256KB is yamon env */
-+ offset: MTDPART_OFS_APPEND,
-+ }
-+};
-+#elif defined(DB1X00_BOOT_ONLY)
-+static struct mtd_partition db1x00_partitions[] = {
-+ {
-+ name: "User FS",
-+ size: 0x00c00000,
-+ offset: 0x0000000
-+ },{
-+ name: "yamon",
-+ size: 0x0100000,
-+ offset: MTDPART_OFS_APPEND,
-+ mask_flags: MTD_WRITEABLE
-+ },{
-+ name: "raw kernel",
-+ size: (0x300000-0x40000), /* last 256KB is yamon env */
-+ offset: MTDPART_OFS_APPEND,
-+ }
-+};
-+#elif defined(DB1X00_USER_ONLY)
-+static struct mtd_partition db1x00_partitions[] = {
-+ {
-+ name: "User FS",
-+ size: 0x0e00000,
-+ offset: 0x0000000
-+ },{
-+ name: "raw kernel",
-+ size: MTDPART_SIZ_FULL,
-+ offset: MTDPART_OFS_APPEND,
-+ }
-+};
-+#else
-+#error MTD_DB1X00 define combo error /* should never happen */
-+#endif
-+
-+
-+#define NB_OF(x) (sizeof(x)/sizeof(x[0]))
-+
-+static struct mtd_partition *parsed_parts;
-+static struct mtd_info *mymtd;
-+
-+/*
-+ * Probe the flash density and setup window address and size
-+ * based on user CONFIG options. There are times when we don't
-+ * want the MTD driver to be probing the boot or user flash,
-+ * so having the option to enable only one bank is important.
-+ */
-+int setup_flash_params()
-+{
-+ switch ((bcsr->status >> 14) & 0x3) {
-+ case 0: /* 64Mbit devices */
-+ flash_size = 0x800000; /* 8MB per part */
-+#if defined(DB1X00_BOTH_BANKS)
-+ window_addr = 0x1E000000;
-+ window_size = 0x2000000;
-+#elif defined(DB1X00_BOOT_ONLY)
-+ window_addr = 0x1F000000;
-+ window_size = 0x1000000;
-+#else /* USER ONLY */
-+ window_addr = 0x1E000000;
-+ window_size = 0x1000000;
-+#endif
-+ break;
-+ case 1:
-+ /* 128 Mbit devices */
-+ flash_size = 0x1000000; /* 16MB per part */
-+#if defined(DB1X00_BOTH_BANKS)
-+ window_addr = 0x1C000000;
-+ window_size = 0x4000000;
-+ /* USERFS from 0x1C00 0000 to 0x1FC0 0000 */
-+ db1x00_partitions[0].size = 0x3C00000;
-+#elif defined(DB1X00_BOOT_ONLY)
-+ window_addr = 0x1E000000;
-+ window_size = 0x2000000;
-+ /* USERFS from 0x1E00 0000 to 0x1FC0 0000 */
-+ db1x00_partitions[0].size = 0x1C00000;
-+#else /* USER ONLY */
-+ window_addr = 0x1C000000;
-+ window_size = 0x2000000;
-+ /* USERFS from 0x1C00 0000 to 0x1DE00000 */
-+ db1x00_partitions[0].size = 0x1DE0000;
-+#endif
-+ break;
-+ case 2:
-+ /* 256 Mbit devices */
-+ flash_size = 0x4000000; /* 64MB per part */
-+#if defined(DB1X00_BOTH_BANKS)
-+ return 1;
-+#elif defined(DB1X00_BOOT_ONLY)
-+ /* Boot ROM flash bank only; no user bank */
-+ window_addr = 0x1C000000;
-+ window_size = 0x4000000;
-+ /* USERFS from 0x1C00 0000 to 0x1FC00000 */
-+ db1x00_partitions[0].size = 0x3C00000;
-+#else /* USER ONLY */
-+ return 1;
-+#endif
-+ break;
-+ default:
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+int __init db1x00_mtd_init(void)
-+{
-+ struct mtd_partition *parts;
-+ int nb_parts = 0;
-+ char *part_type;
-+
-+ /* Default flash buswidth */
-+ db1x00_map.buswidth = flash_buswidth;
-+
-+ if (setup_flash_params())
-+ return -ENXIO;
-+
-+ /*
-+ * Static partition definition selection
-+ */
-+ part_type = "static";
-+ parts = db1x00_partitions;
-+ nb_parts = NB_OF(db1x00_partitions);
-+ db1x00_map.size = window_size;
-+
-+ /*
-+ * Now let's probe for the actual flash. Do it here since
-+ * specific machine settings might have been set above.
-+ */
-+ printk(KERN_NOTICE "Db1xxx flash: probing %d-bit flash bus\n",
-+ db1x00_map.buswidth*8);
-+ db1x00_map.map_priv_1 =
-+ (unsigned long)ioremap(window_addr, window_size);
-+ mymtd = do_map_probe("cfi_probe", &db1x00_map);
-+ if (!mymtd) return -ENXIO;
-+ mymtd->module = THIS_MODULE;
-+
-+ add_mtd_partitions(mymtd, parts, nb_parts);
-+ return 0;
-+}
-+
-+static void __exit db1x00_mtd_cleanup(void)
-+{
-+ if (mymtd) {
-+ del_mtd_partitions(mymtd);
-+ map_destroy(mymtd);
-+ if (parsed_parts)
-+ kfree(parsed_parts);
-+ }
-+}
-+
-+module_init(db1x00_mtd_init);
-+module_exit(db1x00_mtd_cleanup);
-+
-+MODULE_AUTHOR("Pete Popov");
-+MODULE_DESCRIPTION("Db1x00 mtd map driver");
-+MODULE_LICENSE("GPL");
-diff -Nur linux-2.4.32-rc1/drivers/mtd/maps/hydrogen3-flash.c linux-2.4.32-rc1.mips/drivers/mtd/maps/hydrogen3-flash.c
---- linux-2.4.32-rc1/drivers/mtd/maps/hydrogen3-flash.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/mtd/maps/hydrogen3-flash.c 2004-01-10 23:40:18.000000000 +0100
-@@ -0,0 +1,189 @@
-+/*
-+ * Flash memory access on Alchemy HydrogenIII boards
-+ *
-+ * (C) 2003 Pete Popov <ppopov@pacbell.net>
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/map.h>
-+#include <linux/mtd/partitions.h>
-+
-+#include <asm/io.h>
-+#include <asm/au1000.h>
-+
-+#ifdef DEBUG_RW
-+#define DBG(x...) printk(x)
-+#else
-+#define DBG(x...)
-+#endif
-+
-+#define WINDOW_ADDR 0x1E000000
-+#define WINDOW_SIZE 0x02000000
-+
-+
-+__u8 physmap_read8(struct map_info *map, unsigned long ofs)
-+{
-+ __u8 ret;
-+ ret = __raw_readb(map->map_priv_1 + ofs);
-+ DBG("read8 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+__u16 physmap_read16(struct map_info *map, unsigned long ofs)
-+{
-+ __u16 ret;
-+ ret = __raw_readw(map->map_priv_1 + ofs);
-+ DBG("read16 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+__u32 physmap_read32(struct map_info *map, unsigned long ofs)
-+{
-+ __u32 ret;
-+ ret = __raw_readl(map->map_priv_1 + ofs);
-+ DBG("read32 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+void physmap_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
-+{
-+ DBG("physmap_copy from %x to %x\n", (unsigned)from, (unsigned)to);
-+ memcpy_fromio(to, map->map_priv_1 + from, len);
-+}
-+
-+void physmap_write8(struct map_info *map, __u8 d, unsigned long adr)
-+{
-+ DBG("write8 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writeb(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_write16(struct map_info *map, __u16 d, unsigned long adr)
-+{
-+ DBG("write16 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writew(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_write32(struct map_info *map, __u32 d, unsigned long adr)
-+{
-+ DBG("write32 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writel(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_copy_to(struct map_info *map, unsigned long to, const void *from, ssize_t len)
-+{
-+ DBG("physmap_copy_to %x from %x\n", (unsigned)to, (unsigned)from);
-+ memcpy_toio(map->map_priv_1 + to, from, len);
-+}
-+
-+static struct map_info hydrogen3_map = {
-+ name: "HydrogenIII flash",
-+ read8: physmap_read8,
-+ read16: physmap_read16,
-+ read32: physmap_read32,
-+ copy_from: physmap_copy_from,
-+ write8: physmap_write8,
-+ write16: physmap_write16,
-+ write32: physmap_write32,
-+ copy_to: physmap_copy_to,
-+};
-+
-+static unsigned char flash_buswidth = 4;
-+
-+/* MTDPART_OFS_APPEND is vastly preferred to any attempt at statically lining
-+ * up the offsets. */
-+static struct mtd_partition hydrogen3_partitions[] = {
-+ {
-+ name: "User FS",
-+ size: 0x1c00000,
-+ offset: 0x0000000
-+ },{
-+ name: "yamon",
-+ size: 0x0100000,
-+ offset: MTDPART_OFS_APPEND,
-+ mask_flags: MTD_WRITEABLE
-+ },{
-+ name: "raw kernel",
-+ size: 0x02c0000,
-+ offset: MTDPART_OFS_APPEND
-+ }
-+};
-+
-+#define NB_OF(x) (sizeof(x)/sizeof(x[0]))
-+
-+static struct mtd_partition *parsed_parts;
-+static struct mtd_info *mymtd;
-+
-+int __init hydrogen3_mtd_init(void)
-+{
-+ struct mtd_partition *parts;
-+ int nb_parts = 0;
-+ char *part_type;
-+
-+ /* Default flash buswidth */
-+ hydrogen3_map.buswidth = flash_buswidth;
-+
-+ /*
-+ * Static partition definition selection
-+ */
-+ part_type = "static";
-+ parts = hydrogen3_partitions;
-+ nb_parts = NB_OF(hydrogen3_partitions);
-+ hydrogen3_map.size = WINDOW_SIZE;
-+
-+ /*
-+ * Now let's probe for the actual flash. Do it here since
-+ * specific machine settings might have been set above.
-+ */
-+ printk(KERN_NOTICE "HydrogenIII flash: probing %d-bit flash bus\n",
-+ hydrogen3_map.buswidth*8);
-+ hydrogen3_map.map_priv_1 =
-+ (unsigned long)ioremap(WINDOW_ADDR, WINDOW_SIZE);
-+ mymtd = do_map_probe("cfi_probe", &hydrogen3_map);
-+ if (!mymtd) return -ENXIO;
-+ mymtd->module = THIS_MODULE;
-+
-+ add_mtd_partitions(mymtd, parts, nb_parts);
-+ return 0;
-+}
-+
-+static void __exit hydrogen3_mtd_cleanup(void)
-+{
-+ if (mymtd) {
-+ del_mtd_partitions(mymtd);
-+ map_destroy(mymtd);
-+ if (parsed_parts)
-+ kfree(parsed_parts);
-+ }
-+}
-+
-+/*#ifndef MODULE
-+
-+static int __init _bootflashonly(char *str)
-+{
-+ bootflashonly = simple_strtol(str, NULL, 0);
-+ return 1;
-+}
-+
-+
-+__setup("bootflashonly=", _bootflashonly);
-+
-+#endif*/
-+
-+
-+module_init(hydrogen3_mtd_init);
-+module_exit(hydrogen3_mtd_cleanup);
-+
-+MODULE_PARM(bootflashonly, "i");
-+MODULE_PARM_DESC(bootflashonly, "1=use \"boot flash only\"");
-+MODULE_AUTHOR("Pete Popov");
-+MODULE_DESCRIPTION("HydrogenIII mtd map driver");
-+MODULE_LICENSE("GPL");
-diff -Nur linux-2.4.32-rc1/drivers/mtd/maps/lasat.c linux-2.4.32-rc1.mips/drivers/mtd/maps/lasat.c
---- linux-2.4.32-rc1/drivers/mtd/maps/lasat.c 2003-06-13 16:51:34.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/mtd/maps/lasat.c 2003-08-18 04:59:02.000000000 +0200
-@@ -1,15 +1,6 @@
- /*
- * Flash device on lasat 100 and 200 boards
- *
-- * Presumably (C) 2002 Brian Murphy <brian@murphy.dk> or whoever he
-- * works for.
-- *
-- * 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.
-- *
-- * $Id: lasat.c,v 1.1 2003/01/24 14:26:38 dwmw2 Exp $
-- *
- */
-
- #include <linux/module.h>
-@@ -21,7 +12,6 @@
- #include <linux/mtd/partitions.h>
- #include <linux/config.h>
- #include <asm/lasat/lasat.h>
--#include <asm/lasat/lasat_mtd.h>
-
- static struct mtd_info *mymtd;
-
-@@ -69,30 +59,33 @@
- }
-
- static struct map_info sp_map = {
-- .name = "SP flash",
-- .buswidth = 4,
-- .read8 = sp_read8,
-- .read16 = sp_read16,
-- .read32 = sp_read32,
-- .copy_from = sp_copy_from,
-- .write8 = sp_write8,
-- .write16 = sp_write16,
-- .write32 = sp_write32,
-- .copy_to = sp_copy_to
-+ name: "SP flash",
-+ buswidth: 4,
-+ read8: sp_read8,
-+ read16: sp_read16,
-+ read32: sp_read32,
-+ copy_from: sp_copy_from,
-+ write8: sp_write8,
-+ write16: sp_write16,
-+ write32: sp_write32,
-+ copy_to: sp_copy_to
- };
-
- static struct mtd_partition partition_info[LASAT_MTD_LAST];
--static char *lasat_mtd_partnames[] = {"Bootloader", "Service", "Normal", "Filesystem", "Config"};
-+static char *lasat_mtd_partnames[] = {"Bootloader", "Service", "Normal", "Config", "Filesystem"};
-
- static int __init init_sp(void)
- {
- int i;
-+ int nparts = 0;
- /* this does not play well with the old flash code which
- * protects and uprotects the flash when necessary */
- printk(KERN_NOTICE "Unprotecting flash\n");
- *lasat_misc->flash_wp_reg |= 1 << lasat_misc->flash_wp_bit;
-
-- sp_map.map_priv_1 = lasat_flash_partition_start(LASAT_MTD_BOOTLOADER);
-+ sp_map.map_priv_1 = ioremap_nocache(
-+ lasat_flash_partition_start(LASAT_MTD_BOOTLOADER),
-+ lasat_board_info.li_flash_size);
- sp_map.size = lasat_board_info.li_flash_size;
-
- printk(KERN_NOTICE "sp flash device: %lx at %lx\n",
-@@ -109,12 +102,15 @@
-
- for (i=0; i < LASAT_MTD_LAST; i++) {
- size = lasat_flash_partition_size(i);
-- partition_info[i].size = size;
-- partition_info[i].offset = offset;
-- offset += size;
-+ if (size != 0) {
-+ nparts++;
-+ partition_info[i].size = size;
-+ partition_info[i].offset = offset;
-+ offset += size;
-+ }
- }
-
-- add_mtd_partitions( mymtd, partition_info, LASAT_MTD_LAST );
-+ add_mtd_partitions( mymtd, partition_info, nparts );
- return 0;
- }
-
-@@ -124,11 +120,11 @@
- static void __exit cleanup_sp(void)
- {
- if (mymtd) {
-- del_mtd_partitions(mymtd);
-- map_destroy(mymtd);
-+ del_mtd_partitions(mymtd);
-+ map_destroy(mymtd);
- }
- if (sp_map.map_priv_1) {
-- sp_map.map_priv_1 = 0;
-+ sp_map.map_priv_1 = 0;
- }
- }
-
-diff -Nur linux-2.4.32-rc1/drivers/mtd/maps/Makefile linux-2.4.32-rc1.mips/drivers/mtd/maps/Makefile
---- linux-2.4.32-rc1/drivers/mtd/maps/Makefile 2003-06-13 16:51:34.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/mtd/maps/Makefile 2004-02-26 01:46:35.000000000 +0100
-@@ -52,7 +52,13 @@
- obj-$(CONFIG_MTD_PB1000) += pb1xxx-flash.o
- obj-$(CONFIG_MTD_PB1100) += pb1xxx-flash.o
- obj-$(CONFIG_MTD_PB1500) += pb1xxx-flash.o
-+obj-$(CONFIG_MTD_XXS1500) += xxs1500.o
-+obj-$(CONFIG_MTD_MTX1) += mtx-1.o
- obj-$(CONFIG_MTD_LASAT) += lasat.o
-+obj-$(CONFIG_MTD_DB1X00) += db1x00-flash.o
-+obj-$(CONFIG_MTD_PB1550) += pb1550-flash.o
-+obj-$(CONFIG_MTD_HYDROGEN3) += hydrogen3-flash.o
-+obj-$(CONFIG_MTD_BOSPORUS) += pb1xxx-flash.o
- obj-$(CONFIG_MTD_AUTCPU12) += autcpu12-nvram.o
- obj-$(CONFIG_MTD_EDB7312) += edb7312.o
- obj-$(CONFIG_MTD_IMPA7) += impa7.o
-@@ -61,5 +67,6 @@
- obj-$(CONFIG_MTD_UCLINUX) += uclinux.o
- obj-$(CONFIG_MTD_NETtel) += nettel.o
- obj-$(CONFIG_MTD_SCB2_FLASH) += scb2_flash.o
-+obj-$(CONFIG_MTD_MIRAGE) += mirage-flash.o
-
- include $(TOPDIR)/Rules.make
-diff -Nur linux-2.4.32-rc1/drivers/mtd/maps/mirage-flash.c linux-2.4.32-rc1.mips/drivers/mtd/maps/mirage-flash.c
---- linux-2.4.32-rc1/drivers/mtd/maps/mirage-flash.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/mtd/maps/mirage-flash.c 2003-12-22 04:37:22.000000000 +0100
-@@ -0,0 +1,194 @@
-+/*
-+ * Flash memory access on AMD Mirage board.
-+ *
-+ * (C) 2003 Embedded Edge
-+ * based on mirage-flash.c:
-+ * (C) 2003 Pete Popov <ppopov@pacbell.net>
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/map.h>
-+#include <linux/mtd/partitions.h>
-+
-+#include <asm/io.h>
-+#include <asm/au1000.h>
-+//#include <asm/mirage.h>
-+
-+#ifdef DEBUG_RW
-+#define DBG(x...) printk(x)
-+#else
-+#define DBG(x...)
-+#endif
-+
-+static unsigned long window_addr;
-+static unsigned long window_size;
-+static unsigned long flash_size;
-+
-+__u8 physmap_read8(struct map_info *map, unsigned long ofs)
-+{
-+ __u8 ret;
-+ ret = __raw_readb(map->map_priv_1 + ofs);
-+ DBG("read8 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+__u16 physmap_read16(struct map_info *map, unsigned long ofs)
-+{
-+ __u16 ret;
-+ ret = __raw_readw(map->map_priv_1 + ofs);
-+ DBG("read16 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+__u32 physmap_read32(struct map_info *map, unsigned long ofs)
-+{
-+ __u32 ret;
-+ ret = __raw_readl(map->map_priv_1 + ofs);
-+ DBG("read32 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+void physmap_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
-+{
-+ DBG("physmap_copy from %x to %x\n", (unsigned)from, (unsigned)to);
-+ memcpy_fromio(to, map->map_priv_1 + from, len);
-+}
-+
-+void physmap_write8(struct map_info *map, __u8 d, unsigned long adr)
-+{
-+ DBG("write8 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writeb(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_write16(struct map_info *map, __u16 d, unsigned long adr)
-+{
-+ DBG("write16 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writew(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_write32(struct map_info *map, __u32 d, unsigned long adr)
-+{
-+ DBG("write32 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writel(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_copy_to(struct map_info *map, unsigned long to, const void *from, ssize_t len)
-+{
-+ DBG("physmap_copy_to %x from %x\n", (unsigned)to, (unsigned)from);
-+ memcpy_toio(map->map_priv_1 + to, from, len);
-+}
-+
-+static struct map_info mirage_map = {
-+ name: "Mirage flash",
-+ read8: physmap_read8,
-+ read16: physmap_read16,
-+ read32: physmap_read32,
-+ copy_from: physmap_copy_from,
-+ write8: physmap_write8,
-+ write16: physmap_write16,
-+ write32: physmap_write32,
-+ copy_to: physmap_copy_to,
-+};
-+
-+static unsigned char flash_buswidth = 4;
-+
-+static struct mtd_partition mirage_partitions[] = {
-+ {
-+ name: "User FS",
-+ size: 0x1c00000,
-+ offset: 0x0000000
-+ },{
-+ name: "yamon",
-+ size: 0x0100000,
-+ offset: MTDPART_OFS_APPEND,
-+ mask_flags: MTD_WRITEABLE
-+ },{
-+ name: "raw kernel",
-+ size: (0x300000-0x40000), /* last 256KB is yamon env */
-+ offset: MTDPART_OFS_APPEND,
-+ }
-+};
-+
-+#define NB_OF(x) (sizeof(x)/sizeof(x[0]))
-+
-+static struct mtd_partition *parsed_parts;
-+static struct mtd_info *mymtd;
-+
-+/*
-+ * Probe the flash density and setup window address and size
-+ * based on user CONFIG options. There are times when we don't
-+ * want the MTD driver to be probing the boot or user flash,
-+ * so having the option to enable only one bank is important.
-+ */
-+int setup_flash_params()
-+{
-+ flash_size = 0x4000000; /* 64MB per part */
-+ /* Boot ROM flash bank only; no user bank */
-+ window_addr = 0x1C000000;
-+ window_size = 0x4000000;
-+ /* USERFS from 0x1C00 0000 to 0x1FC00000 */
-+ mirage_partitions[0].size = 0x3C00000;
-+ return 0;
-+}
-+
-+int __init mirage_mtd_init(void)
-+{
-+ struct mtd_partition *parts;
-+ int nb_parts = 0;
-+ char *part_type;
-+
-+ /* Default flash buswidth */
-+ mirage_map.buswidth = flash_buswidth;
-+
-+ if (setup_flash_params())
-+ return -ENXIO;
-+
-+ /*
-+ * Static partition definition selection
-+ */
-+ part_type = "static";
-+ parts = mirage_partitions;
-+ nb_parts = NB_OF(mirage_partitions);
-+ mirage_map.size = window_size;
-+
-+ /*
-+ * Now let's probe for the actual flash. Do it here since
-+ * specific machine settings might have been set above.
-+ */
-+ printk(KERN_NOTICE "Mirage flash: probing %d-bit flash bus\n",
-+ mirage_map.buswidth*8);
-+ mirage_map.map_priv_1 =
-+ (unsigned long)ioremap(window_addr, window_size);
-+ mymtd = do_map_probe("cfi_probe", &mirage_map);
-+ if (!mymtd) return -ENXIO;
-+ mymtd->module = THIS_MODULE;
-+
-+ add_mtd_partitions(mymtd, parts, nb_parts);
-+ return 0;
-+}
-+
-+static void __exit mirage_mtd_cleanup(void)
-+{
-+ if (mymtd) {
-+ del_mtd_partitions(mymtd);
-+ map_destroy(mymtd);
-+ if (parsed_parts)
-+ kfree(parsed_parts);
-+ }
-+}
-+
-+module_init(mirage_mtd_init);
-+module_exit(mirage_mtd_cleanup);
-+
-+MODULE_AUTHOR("Embedded Edge");
-+MODULE_DESCRIPTION("Mirage mtd map driver");
-+MODULE_LICENSE("GPL");
-diff -Nur linux-2.4.32-rc1/drivers/mtd/maps/mtx-1.c linux-2.4.32-rc1.mips/drivers/mtd/maps/mtx-1.c
---- linux-2.4.32-rc1/drivers/mtd/maps/mtx-1.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/mtd/maps/mtx-1.c 2003-06-27 02:04:35.000000000 +0200
-@@ -0,0 +1,181 @@
-+/*
-+ * Flash memory access on 4G Systems MTX-1 board
-+ *
-+ * (C) 2003 Pete Popov <ppopov@mvista.com>
-+ * Bruno Randolf <bruno.randolf@4g-systems.de>
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/map.h>
-+#include <linux/mtd/partitions.h>
-+
-+#include <asm/io.h>
-+#include <asm/au1000.h>
-+
-+#ifdef DEBUG_RW
-+#define DBG(x...) printk(x)
-+#else
-+#define DBG(x...)
-+#endif
-+
-+#ifdef CONFIG_MIPS_MTX1
-+#define WINDOW_ADDR 0x1E000000
-+#define WINDOW_SIZE 0x2000000
-+#endif
-+
-+__u8 physmap_read8(struct map_info *map, unsigned long ofs)
-+{
-+ __u8 ret;
-+ ret = __raw_readb(map->map_priv_1 + ofs);
-+ DBG("read8 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+__u16 physmap_read16(struct map_info *map, unsigned long ofs)
-+{
-+ __u16 ret;
-+ ret = __raw_readw(map->map_priv_1 + ofs);
-+ DBG("read16 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+__u32 physmap_read32(struct map_info *map, unsigned long ofs)
-+{
-+ __u32 ret;
-+ ret = __raw_readl(map->map_priv_1 + ofs);
-+ DBG("read32 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+void physmap_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
-+{
-+ DBG("physmap_copy from %x to %x\n", (unsigned)from, (unsigned)to);
-+ memcpy_fromio(to, map->map_priv_1 + from, len);
-+}
-+
-+void physmap_write8(struct map_info *map, __u8 d, unsigned long adr)
-+{
-+ DBG("write8 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writeb(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_write16(struct map_info *map, __u16 d, unsigned long adr)
-+{
-+ DBG("write16 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writew(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_write32(struct map_info *map, __u32 d, unsigned long adr)
-+{
-+ DBG("write32 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writel(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_copy_to(struct map_info *map, unsigned long to, const void *from, ssize_t len)
-+{
-+ DBG("physmap_copy_to %x from %x\n", (unsigned)to, (unsigned)from);
-+ memcpy_toio(map->map_priv_1 + to, from, len);
-+}
-+
-+
-+
-+static struct map_info mtx1_map = {
-+ name: "MTX-1 flash",
-+ read8: physmap_read8,
-+ read16: physmap_read16,
-+ read32: physmap_read32,
-+ copy_from: physmap_copy_from,
-+ write8: physmap_write8,
-+ write16: physmap_write16,
-+ write32: physmap_write32,
-+ copy_to: physmap_copy_to,
-+};
-+
-+
-+static unsigned long flash_size = 0x01000000;
-+static unsigned char flash_buswidth = 4;
-+static struct mtd_partition mtx1_partitions[] = {
-+ {
-+ name: "user fs",
-+ size: 0x1c00000,
-+ offset: 0,
-+ },{
-+ name: "yamon",
-+ size: 0x0100000,
-+ offset: MTDPART_OFS_APPEND,
-+ mask_flags: MTD_WRITEABLE
-+ },{
-+ name: "raw kernel",
-+ size: 0x02c0000,
-+ offset: MTDPART_OFS_APPEND,
-+ },{
-+ name: "yamon env vars",
-+ size: 0x0040000,
-+ offset: MTDPART_OFS_APPEND,
-+ mask_flags: MTD_WRITEABLE
-+ }
-+};
-+
-+
-+#define NB_OF(x) (sizeof(x)/sizeof(x[0]))
-+
-+static struct mtd_partition *parsed_parts;
-+static struct mtd_info *mymtd;
-+
-+int __init mtx1_mtd_init(void)
-+{
-+ struct mtd_partition *parts;
-+ int nb_parts = 0;
-+ char *part_type;
-+
-+ /* Default flash buswidth */
-+ mtx1_map.buswidth = flash_buswidth;
-+
-+ /*
-+ * Static partition definition selection
-+ */
-+ part_type = "static";
-+ parts = mtx1_partitions;
-+ nb_parts = NB_OF(mtx1_partitions);
-+ mtx1_map.size = flash_size;
-+
-+ /*
-+ * Now let's probe for the actual flash. Do it here since
-+ * specific machine settings might have been set above.
-+ */
-+ printk(KERN_NOTICE "MTX-1 flash: probing %d-bit flash bus\n",
-+ mtx1_map.buswidth*8);
-+ mtx1_map.map_priv_1 =
-+ (unsigned long)ioremap(WINDOW_ADDR, WINDOW_SIZE);
-+ mymtd = do_map_probe("cfi_probe", &mtx1_map);
-+ if (!mymtd) return -ENXIO;
-+ mymtd->module = THIS_MODULE;
-+
-+ add_mtd_partitions(mymtd, parts, nb_parts);
-+ return 0;
-+}
-+
-+static void __exit mtx1_mtd_cleanup(void)
-+{
-+ if (mymtd) {
-+ del_mtd_partitions(mymtd);
-+ map_destroy(mymtd);
-+ if (parsed_parts)
-+ kfree(parsed_parts);
-+ }
-+}
-+
-+module_init(mtx1_mtd_init);
-+module_exit(mtx1_mtd_cleanup);
-+
-+MODULE_AUTHOR("Pete Popov");
-+MODULE_DESCRIPTION("MTX-1 CFI map driver");
-+MODULE_LICENSE("GPL");
-diff -Nur linux-2.4.32-rc1/drivers/mtd/maps/pb1550-flash.c linux-2.4.32-rc1.mips/drivers/mtd/maps/pb1550-flash.c
---- linux-2.4.32-rc1/drivers/mtd/maps/pb1550-flash.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/mtd/maps/pb1550-flash.c 2004-02-26 01:48:48.000000000 +0100
-@@ -0,0 +1,270 @@
-+/*
-+ * Flash memory access on Alchemy Pb1550 board
-+ *
-+ * (C) 2004 Embedded Edge, LLC, based on pb1550-flash.c:
-+ * (C) 2003 Pete Popov <ppopov@pacbell.net>
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/map.h>
-+#include <linux/mtd/partitions.h>
-+
-+#include <asm/io.h>
-+#include <asm/au1000.h>
-+#include <asm/pb1550.h>
-+
-+#ifdef DEBUG_RW
-+#define DBG(x...) printk(x)
-+#else
-+#define DBG(x...)
-+#endif
-+
-+static unsigned long window_addr;
-+static unsigned long window_size;
-+
-+__u8 physmap_read8(struct map_info *map, unsigned long ofs)
-+{
-+ __u8 ret;
-+ ret = __raw_readb(map->map_priv_1 + ofs);
-+ DBG("read8 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+__u16 physmap_read16(struct map_info *map, unsigned long ofs)
-+{
-+ __u16 ret;
-+ ret = __raw_readw(map->map_priv_1 + ofs);
-+ DBG("read16 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+__u32 physmap_read32(struct map_info *map, unsigned long ofs)
-+{
-+ __u32 ret;
-+ ret = __raw_readl(map->map_priv_1 + ofs);
-+ DBG("read32 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+void physmap_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
-+{
-+ DBG("physmap_copy from %x to %x\n", (unsigned)from, (unsigned)to);
-+ memcpy_fromio(to, map->map_priv_1 + from, len);
-+}
-+
-+void physmap_write8(struct map_info *map, __u8 d, unsigned long adr)
-+{
-+ DBG("write8 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writeb(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_write16(struct map_info *map, __u16 d, unsigned long adr)
-+{
-+ DBG("write16 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writew(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_write32(struct map_info *map, __u32 d, unsigned long adr)
-+{
-+ DBG("write32 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writel(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_copy_to(struct map_info *map, unsigned long to, const void *from, ssize_t len)
-+{
-+ DBG("physmap_copy_to %x from %x\n", (unsigned)to, (unsigned)from);
-+ memcpy_toio(map->map_priv_1 + to, from, len);
-+}
-+
-+static struct map_info pb1550_map = {
-+ name: "Pb1550 flash",
-+ read8: physmap_read8,
-+ read16: physmap_read16,
-+ read32: physmap_read32,
-+ copy_from: physmap_copy_from,
-+ write8: physmap_write8,
-+ write16: physmap_write16,
-+ write32: physmap_write32,
-+ copy_to: physmap_copy_to,
-+};
-+
-+static unsigned char flash_buswidth = 4;
-+
-+/*
-+ * Support only 64MB NOR Flash parts
-+ */
-+
-+#ifdef PB1550_BOTH_BANKS
-+/* both banks will be used. Combine the first bank and the first
-+ * part of the second bank together into a single jffs/jffs2
-+ * partition.
-+ */
-+static struct mtd_partition pb1550_partitions[] = {
-+ /* assume boot[2:0]:swap is '0000' or '1000', which translates to:
-+ * 1C00 0000 1FFF FFFF CE0 64MB Boot NOR Flash
-+ * 1800 0000 1BFF FFFF CE0 64MB Param NOR Flash
-+ */
-+ {
-+ name: "User FS",
-+ size: (0x1FC00000 - 0x18000000),
-+ offset: 0x0000000
-+ },{
-+ name: "yamon",
-+ size: 0x0100000,
-+ offset: MTDPART_OFS_APPEND,
-+ mask_flags: MTD_WRITEABLE
-+ },{
-+ name: "raw kernel",
-+ size: (0x300000 - 0x40000), /* last 256KB is yamon env */
-+ offset: MTDPART_OFS_APPEND,
-+ }
-+};
-+#elif defined(PB1550_BOOT_ONLY)
-+static struct mtd_partition pb1550_partitions[] = {
-+ /* assume boot[2:0]:swap is '0000' or '1000', which translates to:
-+ * 1C00 0000 1FFF FFFF CE0 64MB Boot NOR Flash
-+ */
-+ {
-+ name: "User FS",
-+ size: 0x03c00000,
-+ offset: 0x0000000
-+ },{
-+ name: "yamon",
-+ size: 0x0100000,
-+ offset: MTDPART_OFS_APPEND,
-+ mask_flags: MTD_WRITEABLE
-+ },{
-+ name: "raw kernel",
-+ size: (0x300000-0x40000), /* last 256KB is yamon env */
-+ offset: MTDPART_OFS_APPEND,
-+ }
-+};
-+#elif defined(PB1550_USER_ONLY)
-+static struct mtd_partition pb1550_partitions[] = {
-+ /* assume boot[2:0]:swap is '0000' or '1000', which translates to:
-+ * 1800 0000 1BFF FFFF CE0 64MB Param NOR Flash
-+ */
-+ {
-+ name: "User FS",
-+ size: (0x4000000 - 0x200000), /* reserve 2MB for raw kernel */
-+ offset: 0x0000000
-+ },{
-+ name: "raw kernel",
-+ size: MTDPART_SIZ_FULL,
-+ offset: MTDPART_OFS_APPEND,
-+ }
-+};
-+#else
-+#error MTD_PB1550 define combo error /* should never happen */
-+#endif
-+
-+#define NB_OF(x) (sizeof(x)/sizeof(x[0]))
-+
-+static struct mtd_partition *parsed_parts;
-+static struct mtd_info *mymtd;
-+
-+/*
-+ * Probe the flash density and setup window address and size
-+ * based on user CONFIG options. There are times when we don't
-+ * want the MTD driver to be probing the boot or user flash,
-+ * so having the option to enable only one bank is important.
-+ */
-+int setup_flash_params()
-+{
-+ u16 boot_swapboot;
-+ boot_swapboot = (au_readl(MEM_STSTAT) & (0x7<<1)) |
-+ ((bcsr->status >> 6) & 0x1);
-+ printk("Pb1550 MTD: boot:swap %d\n", boot_swapboot);
-+
-+ switch (boot_swapboot) {
-+ case 0: /* 512Mbit devices, both enabled */
-+ case 1:
-+ case 8:
-+ case 9:
-+#if defined(PB1550_BOTH_BANKS)
-+ window_addr = 0x18000000;
-+ window_size = 0x8000000;
-+#elif defined(PB1550_BOOT_ONLY)
-+ window_addr = 0x1C000000;
-+ window_size = 0x4000000;
-+#else /* USER ONLY */
-+ window_addr = 0x1E000000;
-+ window_size = 0x1000000;
-+#endif
-+ break;
-+ case 0xC:
-+ case 0xD:
-+ case 0xE:
-+ case 0xF:
-+ /* 64 MB Boot NOR Flash is disabled */
-+ /* and the start address is moved to 0x0C00000 */
-+ window_addr = 0x0C000000;
-+ window_size = 0x4000000;
-+ default:
-+ printk("Pb1550 MTD: unsupported boot:swap setting\n");
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+int __init pb1550_mtd_init(void)
-+{
-+ struct mtd_partition *parts;
-+ int nb_parts = 0;
-+ char *part_type;
-+
-+ /* Default flash buswidth */
-+ pb1550_map.buswidth = flash_buswidth;
-+
-+ if (setup_flash_params())
-+ return -ENXIO;
-+
-+ /*
-+ * Static partition definition selection
-+ */
-+ part_type = "static";
-+ parts = pb1550_partitions;
-+ nb_parts = NB_OF(pb1550_partitions);
-+ pb1550_map.size = window_size;
-+
-+ /*
-+ * Now let's probe for the actual flash. Do it here since
-+ * specific machine settings might have been set above.
-+ */
-+ printk(KERN_NOTICE "Pb1550 flash: probing %d-bit flash bus\n",
-+ pb1550_map.buswidth*8);
-+ pb1550_map.map_priv_1 =
-+ (unsigned long)ioremap(window_addr, window_size);
-+ mymtd = do_map_probe("cfi_probe", &pb1550_map);
-+ if (!mymtd) return -ENXIO;
-+ mymtd->module = THIS_MODULE;
-+
-+ add_mtd_partitions(mymtd, parts, nb_parts);
-+ return 0;
-+}
-+
-+static void __exit pb1550_mtd_cleanup(void)
-+{
-+ if (mymtd) {
-+ del_mtd_partitions(mymtd);
-+ map_destroy(mymtd);
-+ if (parsed_parts)
-+ kfree(parsed_parts);
-+ }
-+}
-+
-+module_init(pb1550_mtd_init);
-+module_exit(pb1550_mtd_cleanup);
-+
-+MODULE_AUTHOR("Embedded Edge, LLC");
-+MODULE_DESCRIPTION("Pb1550 mtd map driver");
-+MODULE_LICENSE("GPL");
-diff -Nur linux-2.4.32-rc1/drivers/mtd/maps/pb1xxx-flash.c linux-2.4.32-rc1.mips/drivers/mtd/maps/pb1xxx-flash.c
---- linux-2.4.32-rc1/drivers/mtd/maps/pb1xxx-flash.c 2003-06-13 16:51:34.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/mtd/maps/pb1xxx-flash.c 2003-05-19 08:27:22.000000000 +0200
-@@ -192,6 +192,34 @@
- #else
- #error MTD_PB1500 define combo error /* should never happen */
- #endif
-+#elif defined(CONFIG_MTD_BOSPORUS)
-+static unsigned char flash_buswidth = 2;
-+static unsigned long flash_size = 0x02000000;
-+#define WINDOW_ADDR 0x1F000000
-+#define WINDOW_SIZE 0x2000000
-+static struct mtd_partition pb1xxx_partitions[] = {
-+ {
-+ name: "User FS",
-+ size: 0x00400000,
-+ offset: 0x00000000,
-+ },{
-+ name: "Yamon-2",
-+ size: 0x00100000,
-+ offset: 0x00400000,
-+ },{
-+ name: "Root FS",
-+ size: 0x00700000,
-+ offset: 0x00500000,
-+ },{
-+ name: "Yamon-1",
-+ size: 0x00100000,
-+ offset: 0x00C00000,
-+ },{
-+ name: "Kernel",
-+ size: 0x00300000,
-+ offset: 0x00D00000,
-+ }
-+};
- #else
- #error Unsupported board
- #endif
-diff -Nur linux-2.4.32-rc1/drivers/mtd/maps/xxs1500.c linux-2.4.32-rc1.mips/drivers/mtd/maps/xxs1500.c
---- linux-2.4.32-rc1/drivers/mtd/maps/xxs1500.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/mtd/maps/xxs1500.c 2003-08-02 04:06:01.000000000 +0200
-@@ -0,0 +1,186 @@
-+/*
-+ * Flash memory access on MyCable XXS1500 board
-+ *
-+ * (C) 2003 Pete Popov <ppopov@mvista.com>
-+ *
-+ * $Id: xxs1500.c,v 1.1.2.1 2003/06/13 21:15:46 ppopov Exp $
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/map.h>
-+#include <linux/mtd/partitions.h>
-+
-+#include <asm/io.h>
-+#include <asm/au1000.h>
-+
-+#ifdef DEBUG_RW
-+#define DBG(x...) printk(x)
-+#else
-+#define DBG(x...)
-+#endif
-+
-+#ifdef CONFIG_MIPS_XXS1500
-+#define WINDOW_ADDR 0x1F000000
-+#define WINDOW_SIZE 0x1000000
-+#endif
-+
-+__u8 physmap_read8(struct map_info *map, unsigned long ofs)
-+{
-+ __u8 ret;
-+ ret = __raw_readb(map->map_priv_1 + ofs);
-+ DBG("read8 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+__u16 physmap_read16(struct map_info *map, unsigned long ofs)
-+{
-+ __u16 ret;
-+ ret = __raw_readw(map->map_priv_1 + ofs);
-+ DBG("read16 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+__u32 physmap_read32(struct map_info *map, unsigned long ofs)
-+{
-+ __u32 ret;
-+ ret = __raw_readl(map->map_priv_1 + ofs);
-+ DBG("read32 from %x, %x\n", (unsigned)(map->map_priv_1 + ofs), ret);
-+ return ret;
-+}
-+
-+void physmap_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
-+{
-+ DBG("physmap_copy from %x to %x\n", (unsigned)from, (unsigned)to);
-+ memcpy_fromio(to, map->map_priv_1 + from, len);
-+}
-+
-+void physmap_write8(struct map_info *map, __u8 d, unsigned long adr)
-+{
-+ DBG("write8 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writeb(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_write16(struct map_info *map, __u16 d, unsigned long adr)
-+{
-+ DBG("write16 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writew(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_write32(struct map_info *map, __u32 d, unsigned long adr)
-+{
-+ DBG("write32 at %x, %x\n", (unsigned)(map->map_priv_1 + adr), d);
-+ __raw_writel(d, map->map_priv_1 + adr);
-+ mb();
-+}
-+
-+void physmap_copy_to(struct map_info *map, unsigned long to, const void *from, ssize_t len)
-+{
-+ DBG("physmap_copy_to %x from %x\n", (unsigned)to, (unsigned)from);
-+ memcpy_toio(map->map_priv_1 + to, from, len);
-+}
-+
-+
-+
-+static struct map_info xxs1500_map = {
-+ name: "XXS1500 flash",
-+ read8: physmap_read8,
-+ read16: physmap_read16,
-+ read32: physmap_read32,
-+ copy_from: physmap_copy_from,
-+ write8: physmap_write8,
-+ write16: physmap_write16,
-+ write32: physmap_write32,
-+ copy_to: physmap_copy_to,
-+};
-+
-+
-+static unsigned long flash_size = 0x00800000;
-+static unsigned char flash_buswidth = 4;
-+static struct mtd_partition xxs1500_partitions[] = {
-+ {
-+ name: "kernel image",
-+ size: 0x00200000,
-+ offset: 0,
-+ },{
-+ name: "user fs 0",
-+ size: (0x00C00000-0x200000),
-+ offset: MTDPART_OFS_APPEND,
-+ },{
-+ name: "yamon",
-+ size: 0x00100000,
-+ offset: MTDPART_OFS_APPEND,
-+ mask_flags: MTD_WRITEABLE
-+ },{
-+ name: "user fs 1",
-+ size: 0x2c0000,
-+ offset: MTDPART_OFS_APPEND,
-+ },{
-+ name: "yamon env vars",
-+ size: 0x040000,
-+ offset: MTDPART_OFS_APPEND,
-+ mask_flags: MTD_WRITEABLE
-+ }
-+};
-+
-+
-+#define NB_OF(x) (sizeof(x)/sizeof(x[0]))
-+
-+static struct mtd_partition *parsed_parts;
-+static struct mtd_info *mymtd;
-+
-+int __init xxs1500_mtd_init(void)
-+{
-+ struct mtd_partition *parts;
-+ int nb_parts = 0;
-+ char *part_type;
-+
-+ /* Default flash buswidth */
-+ xxs1500_map.buswidth = flash_buswidth;
-+
-+ /*
-+ * Static partition definition selection
-+ */
-+ part_type = "static";
-+ parts = xxs1500_partitions;
-+ nb_parts = NB_OF(xxs1500_partitions);
-+ xxs1500_map.size = flash_size;
-+
-+ /*
-+ * Now let's probe for the actual flash. Do it here since
-+ * specific machine settings might have been set above.
-+ */
-+ printk(KERN_NOTICE "XXS1500 flash: probing %d-bit flash bus\n",
-+ xxs1500_map.buswidth*8);
-+ xxs1500_map.map_priv_1 =
-+ (unsigned long)ioremap(WINDOW_ADDR, WINDOW_SIZE);
-+ mymtd = do_map_probe("cfi_probe", &xxs1500_map);
-+ if (!mymtd) return -ENXIO;
-+ mymtd->module = THIS_MODULE;
-+
-+ add_mtd_partitions(mymtd, parts, nb_parts);
-+ return 0;
-+}
-+
-+static void __exit xxs1500_mtd_cleanup(void)
-+{
-+ if (mymtd) {
-+ del_mtd_partitions(mymtd);
-+ map_destroy(mymtd);
-+ if (parsed_parts)
-+ kfree(parsed_parts);
-+ }
-+}
-+
-+module_init(xxs1500_mtd_init);
-+module_exit(xxs1500_mtd_cleanup);
-+
-+MODULE_AUTHOR("Pete Popov");
-+MODULE_DESCRIPTION("XXS1500 CFI map driver");
-+MODULE_LICENSE("GPL");
-diff -Nur linux-2.4.32-rc1/drivers/net/defxx.c linux-2.4.32-rc1.mips/drivers/net/defxx.c
---- linux-2.4.32-rc1/drivers/net/defxx.c 2004-11-17 12:54:21.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/net/defxx.c 2004-11-19 01:28:39.000000000 +0100
-@@ -10,24 +10,18 @@
- *
- * Abstract:
- * A Linux device driver supporting the Digital Equipment Corporation
-- * FDDI EISA and PCI controller families. Supported adapters include:
-+ * FDDI TURBOchannel, EISA and PCI controller families. Supported
-+ * adapters include:
- *
-- * DEC FDDIcontroller/EISA (DEFEA)
-- * DEC FDDIcontroller/PCI (DEFPA)
-+ * DEC FDDIcontroller/TURBOchannel (DEFTA)
-+ * DEC FDDIcontroller/EISA (DEFEA)
-+ * DEC FDDIcontroller/PCI (DEFPA)
- *
-- * Maintainers:
-- * LVS Lawrence V. Stefani
-- *
-- * Contact:
-- * The author may be reached at:
-+ * The original author:
-+ * LVS Lawrence V. Stefani <lstefani@yahoo.com>
- *
-- * Inet: stefani@lkg.dec.com
-- * (NOTE! this address no longer works -jgarzik)
-- *
-- * Mail: Digital Equipment Corporation
-- * 550 King Street
-- * M/S: LKG1-3/M07
-- * Littleton, MA 01460
-+ * Maintainers:
-+ * macro Maciej W. Rozycki <macro@linux-mips.org>
- *
- * Credits:
- * I'd like to thank Patricia Cross for helping me get started with
-@@ -197,16 +191,16 @@
- * Sep 2000 tjeerd Fix leak on unload, cosmetic code cleanup
- * Feb 2001 Skb allocation fixes
- * Feb 2001 davej PCI enable cleanups.
-+ * 04 Aug 2003 macro Converted to the DMA API.
-+ * 14 Aug 2004 macro Fix device names reported.
-+ * 26 Sep 2004 macro TURBOchannel support.
- */
-
- /* Include files */
-
- #include <linux/module.h>
--
- #include <linux/kernel.h>
--#include <linux/sched.h>
- #include <linux/string.h>
--#include <linux/ptrace.h>
- #include <linux/errno.h>
- #include <linux/ioport.h>
- #include <linux/slab.h>
-@@ -215,19 +209,33 @@
- #include <linux/delay.h>
- #include <linux/init.h>
- #include <linux/netdevice.h>
-+#include <linux/fddidevice.h>
-+#include <linux/skbuff.h>
-+
- #include <asm/byteorder.h>
- #include <asm/bitops.h>
- #include <asm/io.h>
-
--#include <linux/fddidevice.h>
--#include <linux/skbuff.h>
-+#ifdef CONFIG_TC
-+#include <asm/dec/tc.h>
-+#else
-+static int search_tc_card(const char *name) { return -ENODEV; }
-+static void claim_tc_card(int slot) { }
-+static void release_tc_card(int slot) { }
-+static unsigned long get_tc_base_addr(int slot) { return 0; }
-+static unsigned long get_tc_irq_nr(int slot) { return -1; }
-+#endif
-
- #include "defxx.h"
-
--/* Version information string - should be updated prior to each new release!!! */
-+/* Version information string should be updated prior to each new release! */
-+#define DRV_NAME "defxx"
-+#define DRV_VERSION "v1.07T"
-+#define DRV_RELDATE "2004/09/26"
-
- static char version[] __devinitdata =
-- "defxx.c:v1.05e 2001/02/03 Lawrence V. Stefani and others\n";
-+ DRV_NAME ": " DRV_VERSION " " DRV_RELDATE
-+ " Lawrence V. Stefani and others\n";
-
- #define DYNAMIC_BUFFERS 1
-
-@@ -243,7 +251,7 @@
- static void dfx_bus_init(struct net_device *dev);
- static void dfx_bus_config_check(DFX_board_t *bp);
-
--static int dfx_driver_init(struct net_device *dev);
-+static int dfx_driver_init(struct net_device *dev, const char *print_name);
- static int dfx_adap_init(DFX_board_t *bp, int get_buffers);
-
- static int dfx_open(struct net_device *dev);
-@@ -337,48 +345,84 @@
- int offset,
- u8 data
- )
-+{
-+ if (bp->bus_type == DFX_BUS_TYPE_TC)
-+ {
-+ volatile u8 *addr = (void *)(bp->base_addr + offset);
-
-+ *addr = data;
-+ mb();
-+ }
-+ else
- {
- u16 port = bp->base_addr + offset;
-
- outb(data, port);
- }
-+}
-
- static inline void dfx_port_read_byte(
- DFX_board_t *bp,
- int offset,
- u8 *data
- )
-+{
-+ if (bp->bus_type == DFX_BUS_TYPE_TC)
-+ {
-+ volatile u8 *addr = (void *)(bp->base_addr + offset);
-
-+ mb();
-+ *data = *addr;
-+ }
-+ else
- {
- u16 port = bp->base_addr + offset;
-
- *data = inb(port);
- }
-+}
-
- static inline void dfx_port_write_long(
- DFX_board_t *bp,
- int offset,
- u32 data
- )
-+{
-+ if (bp->bus_type == DFX_BUS_TYPE_TC)
-+ {
-+ volatile u32 *addr = (void *)(bp->base_addr + offset);
-
-+ *addr = data;
-+ mb();
-+ }
-+ else
- {
- u16 port = bp->base_addr + offset;
-
- outl(data, port);
- }
-+}
-
- static inline void dfx_port_read_long(
- DFX_board_t *bp,
- int offset,
- u32 *data
- )
-+{
-+ if (bp->bus_type == DFX_BUS_TYPE_TC)
-+ {
-+ volatile u32 *addr = (void *)(bp->base_addr + offset);
-
-+ mb();
-+ *data = *addr;
-+ }
-+ else
- {
- u16 port = bp->base_addr + offset;
-
- *data = inl(port);
- }
-+}
-
-
- /*
-@@ -393,8 +437,9 @@
- * Condition code
- *
- * Arguments:
-- * pdev - pointer to pci device information (NULL for EISA)
-- * ioaddr - pointer to port (NULL for PCI)
-+ * pdev - pointer to pci device information (NULL for EISA or TURBOchannel)
-+ * bus_type - bus type (one of DFX_BUS_TYPE_*)
-+ * handle - bus-specific data: slot (TC), pointer to port (EISA), NULL (PCI)
- *
- * Functional Description:
- *
-@@ -410,54 +455,68 @@
- * initialized and the board resources are read and stored in
- * the device structure.
- */
--static int __devinit dfx_init_one_pci_or_eisa(struct pci_dev *pdev, long ioaddr)
-+static int __devinit dfx_init_one_pci_or_eisa(struct pci_dev *pdev, u32 bus_type, long handle)
- {
-+ static int version_disp;
-+ char *print_name = DRV_NAME;
- struct net_device *dev;
- DFX_board_t *bp; /* board pointer */
-+ long ioaddr; /* pointer to port */
-+ unsigned long len; /* resource length */
-+ int alloc_size; /* total buffer size used */
- int err;
-
--#ifndef MODULE
-- static int version_disp;
--
-- if (!version_disp) /* display version info if adapter is found */
-- {
-+ if (!version_disp) { /* display version info if adapter is found */
- version_disp = 1; /* set display flag to TRUE so that */
- printk(version); /* we only display this string ONCE */
- }
--#endif
-
-- /*
-- * init_fddidev() allocates a device structure with private data, clears the device structure and private data,
-- * and calls fddi_setup() and register_netdev(). Not much left to do for us here.
-- */
-- dev = init_fddidev(NULL, sizeof(*bp));
-+ if (pdev != NULL)
-+ print_name = pdev->slot_name;
-+
-+ dev = alloc_fddidev(sizeof(*bp));
- if (!dev) {
-- printk (KERN_ERR "defxx: unable to allocate fddidev, aborting\n");
-+ printk(KERN_ERR "%s: unable to allocate fddidev, aborting\n",
-+ print_name);
- return -ENOMEM;
- }
-
- /* Enable PCI device. */
-- if (pdev != NULL) {
-+ if (bus_type == DFX_BUS_TYPE_PCI) {
- err = pci_enable_device (pdev);
- if (err) goto err_out;
- ioaddr = pci_resource_start (pdev, 1);
- }
-
- SET_MODULE_OWNER(dev);
-+ SET_NETDEV_DEV(dev, &pdev->dev);
-
- bp = dev->priv;
-
-- if (!request_region (ioaddr, pdev ? PFI_K_CSR_IO_LEN : PI_ESIC_K_CSR_IO_LEN, dev->name)) {
-- printk (KERN_ERR "%s: Cannot reserve I/O resource 0x%x @ 0x%lx, aborting\n",
-- dev->name, PFI_K_CSR_IO_LEN, ioaddr);
-+ if (bus_type == DFX_BUS_TYPE_TC) {
-+ /* TURBOchannel board */
-+ bp->slot = handle;
-+ claim_tc_card(bp->slot);
-+ ioaddr = get_tc_base_addr(handle) + PI_TC_K_CSR_OFFSET;
-+ len = PI_TC_K_CSR_LEN;
-+ } else if (bus_type == DFX_BUS_TYPE_EISA) {
-+ /* EISA board */
-+ ioaddr = handle;
-+ len = PI_ESIC_K_CSR_IO_LEN;
-+ } else
-+ /* PCI board */
-+ len = PFI_K_CSR_IO_LEN;
-+ dev->base_addr = ioaddr; /* save port (I/O) base address */
-+
-+ if (!request_region(ioaddr, len, print_name)) {
-+ printk(KERN_ERR "%s: Cannot reserve I/O resource "
-+ "0x%lx @ 0x%lx, aborting\n", print_name, len, ioaddr);
- err = -EBUSY;
- goto err_out;
- }
-
- /* Initialize new device structure */
-
-- dev->base_addr = ioaddr; /* save port (I/O) base address */
--
- dev->get_stats = dfx_ctl_get_stats;
- dev->open = dfx_open;
- dev->stop = dfx_close;
-@@ -465,37 +524,54 @@
- dev->set_multicast_list = dfx_ctl_set_multicast_list;
- dev->set_mac_address = dfx_ctl_set_mac_address;
-
-- if (pdev == NULL) {
-- /* EISA board */
-- bp->bus_type = DFX_BUS_TYPE_EISA;
-+ bp->bus_type = bus_type;
-+ if (bus_type == DFX_BUS_TYPE_TC || bus_type == DFX_BUS_TYPE_EISA) {
-+ /* TURBOchannel or EISA board */
- bp->next = root_dfx_eisa_dev;
- root_dfx_eisa_dev = dev;
- } else {
- /* PCI board */
-- bp->bus_type = DFX_BUS_TYPE_PCI;
- bp->pci_dev = pdev;
- pci_set_drvdata (pdev, dev);
- pci_set_master (pdev);
- }
-
-- if (dfx_driver_init(dev) != DFX_K_SUCCESS) {
-+
-+ if (dfx_driver_init(dev, print_name) != DFX_K_SUCCESS) {
- err = -ENODEV;
- goto err_out_region;
- }
-
-+ err = register_netdev(dev);
-+ if (err)
-+ goto err_out_kfree;
-+
-+ printk("%s: registered as %s\n", print_name, dev->name);
- return 0;
-
-+err_out_kfree:
-+ alloc_size = sizeof(PI_DESCR_BLOCK) +
-+ PI_CMD_REQ_K_SIZE_MAX + PI_CMD_RSP_K_SIZE_MAX +
-+#ifndef DYNAMIC_BUFFERS
-+ (bp->rcv_bufs_to_post * PI_RCV_DATA_K_SIZE_MAX) +
-+#endif
-+ sizeof(PI_CONSUMER_BLOCK) +
-+ (PI_ALIGN_K_DESC_BLK - 1);
-+ if (bp->kmalloced)
-+ pci_free_consistent(pdev, alloc_size,
-+ bp->kmalloced, bp->kmalloced_dma);
- err_out_region:
-- release_region(ioaddr, pdev ? PFI_K_CSR_IO_LEN : PI_ESIC_K_CSR_IO_LEN);
-+ release_region(ioaddr, len);
- err_out:
-- unregister_netdev(dev);
-- kfree(dev);
-+ if (bp->bus_type == DFX_BUS_TYPE_TC)
-+ release_tc_card(bp->slot);
-+ free_netdev(dev);
- return err;
- }
-
- static int __devinit dfx_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
- {
-- return dfx_init_one_pci_or_eisa(pdev, 0);
-+ return dfx_init_one_pci_or_eisa(pdev, DFX_BUS_TYPE_PCI, 0);
- }
-
- static int __init dfx_eisa_init(void)
-@@ -507,6 +583,7 @@
-
- DBG_printk("In dfx_eisa_init...\n");
-
-+#ifdef CONFIG_EISA
- /* Scan for FDDI EISA controllers */
-
- for (i=0; i < DFX_MAX_EISA_SLOTS; i++) /* only scan for up to 16 EISA slots */
-@@ -517,9 +594,27 @@
- {
- port = (i << 12); /* recalc base addr */
-
-- if (dfx_init_one_pci_or_eisa(NULL, port) == 0) rc = 0;
-+ if (dfx_init_one_pci_or_eisa(NULL, DFX_BUS_TYPE_EISA, port) == 0) rc = 0;
- }
- }
-+#endif
-+ return rc;
-+}
-+
-+static int __init dfx_tc_init(void)
-+{
-+ int rc = -ENODEV;
-+ int slot; /* TC slot number */
-+
-+ DBG_printk("In dfx_tc_init...\n");
-+
-+ /* Scan for FDDI TC controllers */
-+ while ((slot = search_tc_card("PMAF-F")) >= 0) {
-+ if (dfx_init_one_pci_or_eisa(NULL, DFX_BUS_TYPE_TC, slot) == 0)
-+ rc = 0;
-+ else
-+ break;
-+ }
- return rc;
- }
-
-@@ -583,8 +678,9 @@
-
- /* Initialize adapter based on bus type */
-
-- if (bp->bus_type == DFX_BUS_TYPE_EISA)
-- {
-+ if (bp->bus_type == DFX_BUS_TYPE_TC) {
-+ dev->irq = get_tc_irq_nr(bp->slot);
-+ } else if (bp->bus_type == DFX_BUS_TYPE_EISA) {
- /* Get the interrupt level from the ESIC chip */
-
- dfx_port_read_byte(bp, PI_ESIC_K_IO_CONFIG_STAT_0, &val);
-@@ -766,6 +862,7 @@
- *
- * Arguments:
- * dev - pointer to device information
-+ * print_name - printable device name
- *
- * Functional Description:
- * This function allocates additional resources such as the host memory
-@@ -780,20 +877,21 @@
- * or read adapter MAC address
- *
- * Assumptions:
-- * Memory allocated from kmalloc() call is physically contiguous, locked
-- * memory whose physical address equals its virtual address.
-+ * Memory allocated from pci_alloc_consistent() call is physically
-+ * contiguous, locked memory.
- *
- * Side Effects:
- * Adapter is reset and should be in DMA_UNAVAILABLE state before
- * returning from this routine.
- */
-
--static int __devinit dfx_driver_init(struct net_device *dev)
-+static int __devinit dfx_driver_init(struct net_device *dev,
-+ const char *print_name)
- {
- DFX_board_t *bp = dev->priv;
- int alloc_size; /* total buffer size needed */
- char *top_v, *curr_v; /* virtual addrs into memory block */
-- u32 top_p, curr_p; /* physical addrs into memory block */
-+ dma_addr_t top_p, curr_p; /* physical addrs into memory block */
- u32 data; /* host data register value */
-
- DBG_printk("In dfx_driver_init...\n");
-@@ -837,26 +935,20 @@
-
- /* Read the factory MAC address from the adapter then save it */
-
-- if (dfx_hw_port_ctrl_req(bp,
-- PI_PCTRL_M_MLA,
-- PI_PDATA_A_MLA_K_LO,
-- 0,
-- &data) != DFX_K_SUCCESS)
-- {
-- printk("%s: Could not read adapter factory MAC address!\n", dev->name);
-+ if (dfx_hw_port_ctrl_req(bp, PI_PCTRL_M_MLA, PI_PDATA_A_MLA_K_LO, 0,
-+ &data) != DFX_K_SUCCESS) {
-+ printk("%s: Could not read adapter factory MAC address!\n",
-+ print_name);
- return(DFX_K_FAILURE);
-- }
-+ }
- memcpy(&bp->factory_mac_addr[0], &data, sizeof(u32));
-
-- if (dfx_hw_port_ctrl_req(bp,
-- PI_PCTRL_M_MLA,
-- PI_PDATA_A_MLA_K_HI,
-- 0,
-- &data) != DFX_K_SUCCESS)
-- {
-- printk("%s: Could not read adapter factory MAC address!\n", dev->name);
-+ if (dfx_hw_port_ctrl_req(bp, PI_PCTRL_M_MLA, PI_PDATA_A_MLA_K_HI, 0,
-+ &data) != DFX_K_SUCCESS) {
-+ printk("%s: Could not read adapter factory MAC address!\n",
-+ print_name);
- return(DFX_K_FAILURE);
-- }
-+ }
- memcpy(&bp->factory_mac_addr[4], &data, sizeof(u16));
-
- /*
-@@ -867,28 +959,27 @@
- */
-
- memcpy(dev->dev_addr, bp->factory_mac_addr, FDDI_K_ALEN);
-- if (bp->bus_type == DFX_BUS_TYPE_EISA)
-- printk("%s: DEFEA at I/O addr = 0x%lX, IRQ = %d, Hardware addr = %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]);
-+ if (bp->bus_type == DFX_BUS_TYPE_TC)
-+ printk("%s: DEFTA at addr = 0x%lX, IRQ = %d, "
-+ "Hardware addr = %02X-%02X-%02X-%02X-%02X-%02X\n",
-+ print_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]);
-+ else if (bp->bus_type == DFX_BUS_TYPE_EISA)
-+ printk("%s: DEFEA at I/O addr = 0x%lX, IRQ = %d, "
-+ "Hardware addr = %02X-%02X-%02X-%02X-%02X-%02X\n",
-+ print_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]);
- else
-- printk("%s: DEFPA at I/O addr = 0x%lX, IRQ = %d, Hardware addr = %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]);
-+ printk("%s: DEFPA at I/O addr = 0x%lX, IRQ = %d, "
-+ "Hardware addr = %02X-%02X-%02X-%02X-%02X-%02X\n",
-+ print_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]);
-
- /*
- * Get memory for descriptor block, consumer block, and other buffers
-@@ -903,14 +994,15 @@
- #endif
- sizeof(PI_CONSUMER_BLOCK) +
- (PI_ALIGN_K_DESC_BLK - 1);
-- bp->kmalloced = top_v = (char *) kmalloc(alloc_size, GFP_KERNEL);
-- if (top_v == NULL)
-- {
-- printk("%s: Could not allocate memory for host buffers and structures!\n", dev->name);
-+ bp->kmalloced = top_v = pci_alloc_consistent(bp->pci_dev, alloc_size,
-+ &bp->kmalloced_dma);
-+ if (top_v == NULL) {
-+ printk("%s: Could not allocate memory for host buffers "
-+ "and structures!\n", print_name);
- return(DFX_K_FAILURE);
-- }
-+ }
- memset(top_v, 0, alloc_size); /* zero out memory before continuing */
-- top_p = virt_to_bus(top_v); /* get physical address of buffer */
-+ top_p = bp->kmalloced_dma; /* get physical address of buffer */
-
- /*
- * To guarantee the 8K alignment required for the descriptor block, 8K - 1
-@@ -924,7 +1016,7 @@
- * for allocating the needed memory.
- */
-
-- curr_p = (u32) (ALIGN(top_p, PI_ALIGN_K_DESC_BLK));
-+ curr_p = ALIGN(top_p, PI_ALIGN_K_DESC_BLK);
- curr_v = top_v + (curr_p - top_p);
-
- /* Reserve space for descriptor block */
-@@ -965,14 +1057,20 @@
-
- /* Display virtual and physical addresses if debug driver */
-
-- DBG_printk("%s: Descriptor block virt = %0lX, phys = %0X\n", dev->name, (long)bp->descr_block_virt, bp->descr_block_phys);
-- DBG_printk("%s: Command Request buffer virt = %0lX, phys = %0X\n", dev->name, (long)bp->cmd_req_virt, bp->cmd_req_phys);
-- DBG_printk("%s: Command Response buffer virt = %0lX, phys = %0X\n", dev->name, (long)bp->cmd_rsp_virt, bp->cmd_rsp_phys);
-- DBG_printk("%s: Receive buffer block virt = %0lX, phys = %0X\n", dev->name, (long)bp->rcv_block_virt, bp->rcv_block_phys);
-- DBG_printk("%s: Consumer block virt = %0lX, phys = %0X\n", dev->name, (long)bp->cons_block_virt, bp->cons_block_phys);
-+ DBG_printk("%s: Descriptor block virt = %0lX, phys = %0X\n",
-+ print_name,
-+ (long)bp->descr_block_virt, bp->descr_block_phys);
-+ DBG_printk("%s: Command Request buffer virt = %0lX, phys = %0X\n",
-+ print_name, (long)bp->cmd_req_virt, bp->cmd_req_phys);
-+ DBG_printk("%s: Command Response buffer virt = %0lX, phys = %0X\n",
-+ print_name, (long)bp->cmd_rsp_virt, bp->cmd_rsp_phys);
-+ DBG_printk("%s: Receive buffer block virt = %0lX, phys = %0X\n",
-+ print_name, (long)bp->rcv_block_virt, bp->rcv_block_phys);
-+ DBG_printk("%s: Consumer block virt = %0lX, phys = %0X\n",
-+ print_name, (long)bp->cons_block_virt, bp->cons_block_phys);
-
- return(DFX_K_SUCCESS);
-- }
-+}
-
-
- /*
-@@ -1218,7 +1316,9 @@
-
- /* Register IRQ - support shared interrupts by passing device ptr */
-
-- ret = request_irq(dev->irq, (void *)dfx_interrupt, SA_SHIRQ, dev->name, dev);
-+ ret = request_irq(dev->irq, (void *)dfx_interrupt,
-+ (bp->bus_type == DFX_BUS_TYPE_TC) ? 0 : SA_SHIRQ,
-+ dev->name, dev);
- if (ret) {
- printk(KERN_ERR "%s: Requested IRQ %d is busy\n", dev->name, dev->irq);
- return ret;
-@@ -1737,7 +1837,7 @@
- dfx_port_write_long(bp, PFI_K_REG_MODE_CTRL,
- (PFI_MODE_M_PDQ_INT_ENB + PFI_MODE_M_DMA_ENB));
- }
-- else
-+ else if (bp->bus_type == DFX_BUS_TYPE_EISA)
- {
- /* Disable interrupts at the ESIC */
-
-@@ -1755,6 +1855,13 @@
- tmp |= PI_CONFIG_STAT_0_M_INT_ENB;
- dfx_port_write_byte(bp, PI_ESIC_K_IO_CONFIG_STAT_0, tmp);
- }
-+ else {
-+ /* TC doesn't share interrupts so no need to disable them */
-+
-+ /* Call interrupt service routine for this adapter */
-+
-+ dfx_int_common(dev);
-+ }
-
- spin_unlock(&bp->lock);
- }
-@@ -2663,12 +2770,12 @@
-
- static void my_skb_align(struct sk_buff *skb, int n)
- {
-- u32 x=(u32)skb->data; /* We only want the low bits .. */
-- u32 v;
-+ unsigned long x = (unsigned long)skb->data;
-+ unsigned long v;
-
-- v=(x+n-1)&~(n-1); /* Where we want to be */
-+ v = ALIGN(x, n); /* Where we want to be */
-
-- skb_reserve(skb, v-x);
-+ skb_reserve(skb, v - x);
- }
-
-
-@@ -2745,7 +2852,10 @@
- */
-
- my_skb_align(newskb, 128);
-- bp->descr_block_virt->rcv_data[i+j].long_1 = virt_to_bus(newskb->data);
-+ bp->descr_block_virt->rcv_data[i + j].long_1 =
-+ (u32)pci_map_single(bp->pci_dev, newskb->data,
-+ NEW_SKB_SIZE,
-+ PCI_DMA_FROMDEVICE);
- /*
- * p_rcv_buff_va is only used inside the
- * kernel so we put the skb pointer here.
-@@ -2859,9 +2969,17 @@
-
- my_skb_align(newskb, 128);
- skb = (struct sk_buff *)bp->p_rcv_buff_va[entry];
-+ pci_unmap_single(bp->pci_dev,
-+ bp->descr_block_virt->rcv_data[entry].long_1,
-+ NEW_SKB_SIZE,
-+ PCI_DMA_FROMDEVICE);
- skb_reserve(skb, RCV_BUFF_K_PADDING);
- bp->p_rcv_buff_va[entry] = (char *)newskb;
-- bp->descr_block_virt->rcv_data[entry].long_1 = virt_to_bus(newskb->data);
-+ bp->descr_block_virt->rcv_data[entry].long_1 =
-+ (u32)pci_map_single(bp->pci_dev,
-+ newskb->data,
-+ NEW_SKB_SIZE,
-+ PCI_DMA_FROMDEVICE);
- } else
- skb = NULL;
- } else
-@@ -2934,7 +3052,7 @@
- * is contained in a single physically contiguous buffer
- * in which the virtual address of the start of packet
- * (skb->data) can be converted to a physical address
-- * by using virt_to_bus().
-+ * by using pci_map_single().
- *
- * Since the adapter architecture requires a three byte
- * packet request header to prepend the start of packet,
-@@ -3082,12 +3200,13 @@
- * skb->data.
- * 6. The physical address of the start of packet
- * can be determined from the virtual address
-- * by using virt_to_bus() and is only 32-bits
-+ * by using pci_map_single() and is only 32-bits
- * wide.
- */
-
- p_xmt_descr->long_0 = (u32) (PI_XMT_DESCR_M_SOP | PI_XMT_DESCR_M_EOP | ((skb->len) << PI_XMT_DESCR_V_SEG_LEN));
-- p_xmt_descr->long_1 = (u32) virt_to_bus(skb->data);
-+ p_xmt_descr->long_1 = (u32)pci_map_single(bp->pci_dev, skb->data,
-+ skb->len, PCI_DMA_TODEVICE);
-
- /*
- * Verify that descriptor is actually available
-@@ -3171,6 +3290,7 @@
- {
- XMT_DRIVER_DESCR *p_xmt_drv_descr; /* ptr to transmit driver descriptor */
- PI_TYPE_2_CONSUMER *p_type_2_cons; /* ptr to rcv/xmt consumer block register */
-+ u8 comp; /* local transmit completion index */
- int freed = 0; /* buffers freed */
-
- /* Service all consumed transmit frames */
-@@ -3188,7 +3308,11 @@
- bp->xmt_total_bytes += p_xmt_drv_descr->p_skb->len;
-
- /* Return skb to operating system */
--
-+ comp = bp->rcv_xmt_reg.index.xmt_comp;
-+ pci_unmap_single(bp->pci_dev,
-+ bp->descr_block_virt->xmt_data[comp].long_1,
-+ p_xmt_drv_descr->p_skb->len,
-+ PCI_DMA_TODEVICE);
- dev_kfree_skb_irq(p_xmt_drv_descr->p_skb);
-
- /*
-@@ -3297,6 +3421,7 @@
- {
- u32 prod_cons; /* rcv/xmt consumer block longword */
- XMT_DRIVER_DESCR *p_xmt_drv_descr; /* ptr to transmit driver descriptor */
-+ u8 comp; /* local transmit completion index */
-
- /* Flush all outstanding transmit frames */
-
-@@ -3307,7 +3432,11 @@
- p_xmt_drv_descr = &(bp->xmt_drv_descr_blk[bp->rcv_xmt_reg.index.xmt_comp]);
-
- /* Return skb to operating system */
--
-+ comp = bp->rcv_xmt_reg.index.xmt_comp;
-+ pci_unmap_single(bp->pci_dev,
-+ bp->descr_block_virt->xmt_data[comp].long_1,
-+ p_xmt_drv_descr->p_skb->len,
-+ PCI_DMA_TODEVICE);
- dev_kfree_skb(p_xmt_drv_descr->p_skb);
-
- /* Increment transmit error counter */
-@@ -3337,12 +3466,36 @@
-
- static void __devexit dfx_remove_one_pci_or_eisa(struct pci_dev *pdev, struct net_device *dev)
- {
-- DFX_board_t *bp = dev->priv;
-+ DFX_board_t *bp = dev->priv;
-+ unsigned long len; /* resource length */
-+ int alloc_size; /* total buffer size used */
-
-+ if (bp->bus_type == DFX_BUS_TYPE_TC) {
-+ /* TURBOchannel board */
-+ len = PI_TC_K_CSR_LEN;
-+ } else if (bp->bus_type == DFX_BUS_TYPE_EISA) {
-+ /* EISA board */
-+ len = PI_ESIC_K_CSR_IO_LEN;
-+ } else {
-+ len = PFI_K_CSR_IO_LEN;
-+ }
- unregister_netdev(dev);
-- release_region(dev->base_addr, pdev ? PFI_K_CSR_IO_LEN : PI_ESIC_K_CSR_IO_LEN );
-- if (bp->kmalloced) kfree(bp->kmalloced);
-- kfree(dev);
-+ release_region(dev->base_addr, len);
-+
-+ if (bp->bus_type == DFX_BUS_TYPE_TC)
-+ release_tc_card(bp->slot);
-+
-+ alloc_size = sizeof(PI_DESCR_BLOCK) +
-+ PI_CMD_REQ_K_SIZE_MAX + PI_CMD_RSP_K_SIZE_MAX +
-+#ifndef DYNAMIC_BUFFERS
-+ (bp->rcv_bufs_to_post * PI_RCV_DATA_K_SIZE_MAX) +
-+#endif
-+ sizeof(PI_CONSUMER_BLOCK) +
-+ (PI_ALIGN_K_DESC_BLK - 1);
-+ if (bp->kmalloced)
-+ pci_free_consistent(pdev, alloc_size, bp->kmalloced,
-+ bp->kmalloced_dma);
-+ free_netdev(dev);
- }
-
- static void __devexit dfx_remove_one (struct pci_dev *pdev)
-@@ -3353,21 +3506,22 @@
- pci_set_drvdata(pdev, NULL);
- }
-
--static struct pci_device_id dfx_pci_tbl[] __devinitdata = {
-+static struct pci_device_id dfx_pci_tbl[] = {
- { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_FDDI, PCI_ANY_ID, PCI_ANY_ID, },
- { 0, }
- };
- MODULE_DEVICE_TABLE(pci, dfx_pci_tbl);
-
- static struct pci_driver dfx_driver = {
-- name: "defxx",
-- probe: dfx_init_one,
-- remove: __devexit_p(dfx_remove_one),
-- id_table: dfx_pci_tbl,
-+ .name = "defxx",
-+ .probe = dfx_init_one,
-+ .remove = __devexit_p(dfx_remove_one),
-+ .id_table = dfx_pci_tbl,
- };
-
- static int dfx_have_pci;
- static int dfx_have_eisa;
-+static int dfx_have_tc;
-
-
- static void __exit dfx_eisa_cleanup(void)
-@@ -3388,12 +3542,7 @@
-
- static int __init dfx_init(void)
- {
-- int rc_pci, rc_eisa;
--
--/* when a module, this is printed whether or not devices are found in probe */
--#ifdef MODULE
-- printk(version);
--#endif
-+ int rc_pci, rc_eisa, rc_tc;
-
- rc_pci = pci_module_init(&dfx_driver);
- if (rc_pci >= 0) dfx_have_pci = 1;
-@@ -3401,20 +3550,27 @@
- rc_eisa = dfx_eisa_init();
- if (rc_eisa >= 0) dfx_have_eisa = 1;
-
-- return ((rc_eisa < 0) ? 0 : rc_eisa) + ((rc_pci < 0) ? 0 : rc_pci);
-+ rc_tc = dfx_tc_init();
-+ if (rc_tc >= 0) dfx_have_tc = 1;
-+
-+ return ((rc_tc < 0) ? 0 : rc_tc) +
-+ ((rc_eisa < 0) ? 0 : rc_eisa) +
-+ ((rc_pci < 0) ? 0 : rc_pci);
- }
-
- static void __exit dfx_cleanup(void)
- {
- if (dfx_have_pci)
- pci_unregister_driver(&dfx_driver);
-- if (dfx_have_eisa)
-+ if (dfx_have_eisa || dfx_have_tc)
- dfx_eisa_cleanup();
--
- }
-
- module_init(dfx_init);
- module_exit(dfx_cleanup);
-+MODULE_AUTHOR("Lawrence V. Stefani");
-+MODULE_DESCRIPTION("DEC FDDIcontroller EISA/PCI (DEFEA/DEFPA) driver "
-+ DRV_VERSION " " DRV_RELDATE);
- MODULE_LICENSE("GPL");
-
-
-diff -Nur linux-2.4.32-rc1/drivers/net/defxx.h linux-2.4.32-rc1.mips/drivers/net/defxx.h
---- linux-2.4.32-rc1/drivers/net/defxx.h 2001-02-13 22:15:05.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/net/defxx.h 2004-10-03 20:06:48.000000000 +0200
-@@ -12,17 +12,11 @@
- * Contains all definitions specified by port specification and required
- * by the defxx.c driver.
- *
-- * Maintainers:
-- * LVS Lawrence V. Stefani
-- *
-- * Contact:
-- * The author may be reached at:
-+ * The original author:
-+ * LVS Lawrence V. Stefani <lstefani@yahoo.com>
- *
-- * Inet: stefani@lkg.dec.com
-- * Mail: Digital Equipment Corporation
-- * 550 King Street
-- * M/S: LKG1-3/M07
-- * Littleton, MA 01460
-+ * Maintainers:
-+ * macro Maciej W. Rozycki <macro@linux-mips.org>
- *
- * Modification History:
- * Date Name Description
-@@ -30,6 +24,7 @@
- * 09-Sep-96 LVS Added group_prom field. Moved read/write I/O
- * macros to DEFXX.C.
- * 12-Sep-96 LVS Removed packet request header pointers.
-+ * 04 Aug 2003 macro Converted to the DMA API.
- */
-
- #ifndef _DEFXX_H_
-@@ -1467,6 +1462,11 @@
-
- #endif /* #ifndef BIG_ENDIAN */
-
-+/* Define TC PDQ CSR offset and length */
-+
-+#define PI_TC_K_CSR_OFFSET 0x100000
-+#define PI_TC_K_CSR_LEN 0x80 /* 128 bytes */
-+
- /* Define EISA controller register offsets */
-
- #define PI_ESIC_K_BURST_HOLDOFF 0x040
-@@ -1634,6 +1634,7 @@
-
- #define DFX_BUS_TYPE_PCI 0 /* type code for DEC FDDIcontroller/PCI */
- #define DFX_BUS_TYPE_EISA 1 /* type code for DEC FDDIcontroller/EISA */
-+#define DFX_BUS_TYPE_TC 2 /* type code for DEC FDDIcontroller/TURBOchannel */
-
- #define DFX_FC_PRH2_PRH1_PRH0 0x54003820 /* Packet Request Header bytes + FC */
- #define DFX_PRH0_BYTE 0x20 /* Packet Request Header byte 0 */
-@@ -1704,17 +1705,19 @@
- {
- /* Keep virtual and physical pointers to locked, physically contiguous memory */
-
-- char *kmalloced; /* kfree this on unload */
-+ char *kmalloced; /* pci_free_consistent this on unload */
-+ dma_addr_t kmalloced_dma;
-+ /* DMA handle for the above */
- PI_DESCR_BLOCK *descr_block_virt; /* PDQ descriptor block virt address */
-- u32 descr_block_phys; /* PDQ descriptor block phys address */
-+ dma_addr_t descr_block_phys; /* PDQ descriptor block phys address */
- PI_DMA_CMD_REQ *cmd_req_virt; /* Command request buffer virt address */
-- u32 cmd_req_phys; /* Command request buffer phys address */
-+ dma_addr_t cmd_req_phys; /* Command request buffer phys address */
- PI_DMA_CMD_RSP *cmd_rsp_virt; /* Command response buffer virt address */
-- u32 cmd_rsp_phys; /* Command response buffer phys address */
-+ dma_addr_t cmd_rsp_phys; /* Command response buffer phys address */
- char *rcv_block_virt; /* LLC host receive queue buf blk virt */
-- u32 rcv_block_phys; /* LLC host receive queue buf blk phys */
-+ dma_addr_t rcv_block_phys; /* LLC host receive queue buf blk phys */
- PI_CONSUMER_BLOCK *cons_block_virt; /* PDQ consumer block virt address */
-- u32 cons_block_phys; /* PDQ consumer block phys address */
-+ dma_addr_t cons_block_phys; /* PDQ consumer block phys address */
-
- /* Keep local copies of Type 1 and Type 2 register data */
-
-@@ -1758,8 +1761,9 @@
-
- struct net_device *dev; /* pointer to device structure */
- struct net_device *next;
-- u32 bus_type; /* bus type (0 == PCI, 1 == EISA) */
-- u16 base_addr; /* base I/O address (same as dev->base_addr) */
-+ u32 bus_type; /* bus type (0 == PCI, 1 == EISA, 2 == TC) */
-+ long base_addr; /* base I/O address (same as dev->base_addr) */
-+ int slot; /* TC slot number */
- struct pci_dev * pci_dev;
- u32 full_duplex_enb; /* FDDI Full Duplex enable (1 == on, 2 == off) */
- u32 req_ttrt; /* requested TTRT value (in 80ns units) */
-diff -Nur linux-2.4.32-rc1/drivers/net/hamradio/hdlcdrv.c linux-2.4.32-rc1.mips/drivers/net/hamradio/hdlcdrv.c
---- linux-2.4.32-rc1/drivers/net/hamradio/hdlcdrv.c 2002-02-25 20:37:59.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/net/hamradio/hdlcdrv.c 2004-05-04 14:04:27.000000000 +0200
-@@ -587,6 +587,8 @@
- return -EINVAL;
- s = (struct hdlcdrv_state *)dev->priv;
-
-+ netif_stop_queue(dev);
-+
- if (s->ops && s->ops->close)
- i = s->ops->close(dev);
- if (s->skb)
-diff -Nur linux-2.4.32-rc1/drivers/net/irda/au1k_ir.c linux-2.4.32-rc1.mips/drivers/net/irda/au1k_ir.c
---- linux-2.4.32-rc1/drivers/net/irda/au1k_ir.c 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/net/irda/au1k_ir.c 2005-02-03 07:35:29.000000000 +0100
-@@ -81,10 +81,6 @@
-
- #define RUN_AT(x) (jiffies + (x))
-
--#if defined(CONFIG_MIPS_DB1000) || defined(CONFIG_MIPS_DB1100)
--static BCSR * const bcsr = (BCSR *)0xAE000000;
--#endif
--
- static spinlock_t ir_lock = SPIN_LOCK_UNLOCKED;
-
- /*
-diff -Nur linux-2.4.32-rc1/drivers/net/sgiseeq.c linux-2.4.32-rc1.mips/drivers/net/sgiseeq.c
---- linux-2.4.32-rc1/drivers/net/sgiseeq.c 2005-01-19 15:09:56.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/net/sgiseeq.c 2005-09-23 16:35:27.000000000 +0200
-@@ -24,16 +24,16 @@
- #include <asm/io.h>
- #include <asm/system.h>
- #include <asm/bitops.h>
-+#include <asm/paccess.h>
- #include <asm/page.h>
- #include <asm/pgtable.h>
-+#include <asm/sgi/mc.h>
- #include <asm/sgi/hpc3.h>
- #include <asm/sgi/ip22.h>
- #include <asm/sgialib.h>
-
- #include "sgiseeq.h"
-
--static char *version = "sgiseeq.c: David S. Miller (dm@engr.sgi.com)\n";
--
- static char *sgiseeqstr = "SGI Seeq8003";
-
- /*
-@@ -113,9 +113,9 @@
-
- static inline void hpc3_eth_reset(struct hpc3_ethregs *hregs)
- {
-- hregs->rx_reset = HPC3_ERXRST_CRESET | HPC3_ERXRST_CLRIRQ;
-+ hregs->reset = HPC3_ERST_CRESET | HPC3_ERST_CLRIRQ;
- udelay(20);
-- hregs->rx_reset = 0;
-+ hregs->reset = 0;
- }
-
- static inline void reset_hpc3_and_seeq(struct hpc3_ethregs *hregs,
-@@ -238,7 +238,6 @@
-
- #define TSTAT_INIT_SEEQ (SEEQ_TCMD_IPT|SEEQ_TCMD_I16|SEEQ_TCMD_IC|SEEQ_TCMD_IUF)
- #define TSTAT_INIT_EDLC ((TSTAT_INIT_SEEQ) | SEEQ_TCMD_RB2)
--#define RDMACFG_INIT (HPC3_ERXDCFG_FRXDC | HPC3_ERXDCFG_FEOP | HPC3_ERXDCFG_FIRQ)
-
- static int init_seeq(struct net_device *dev, struct sgiseeq_private *sp,
- struct sgiseeq_regs *sregs)
-@@ -260,8 +259,6 @@
- sregs->tstat = TSTAT_INIT_SEEQ;
- }
-
-- hregs->rx_dconfig |= RDMACFG_INIT;
--
- hregs->rx_ndptr = PHYSADDR(&sp->srings.rx_desc[0]);
- hregs->tx_ndptr = PHYSADDR(&sp->srings.tx_desc[0]);
-
-@@ -432,7 +429,7 @@
- spin_lock(&sp->tx_lock);
-
- /* Ack the IRQ and set software state. */
-- hregs->rx_reset = HPC3_ERXRST_CLRIRQ;
-+ hregs->reset = HPC3_ERST_CLRIRQ;
-
- /* Always check for received packets. */
- sgiseeq_rx(dev, sp, hregs, sregs);
-@@ -616,7 +613,7 @@
-
- #define ALIGNED(x) ((((unsigned long)(x)) + 0xf) & ~(0xf))
-
--int sgiseeq_init(struct hpc3_regs* regs, int irq)
-+int sgiseeq_init(struct hpc3_regs* hpcregs, int irq, int has_eeprom)
- {
- struct net_device *dev;
- struct sgiseeq_private *sp;
-@@ -629,7 +626,7 @@
- goto err_out;
- }
- /* Make private data page aligned */
-- sp = (struct sgiseeq_private *) get_zeroed_page(GFP_KERNEL);
-+ sp = (struct sgiseeq_private *) get_zeroed_page(GFP_KERNEL);
- if (!sp) {
- printk(KERN_ERR "Sgiseeq: Page alloc failed, aborting.\n");
- err = -ENOMEM;
-@@ -644,7 +641,9 @@
-
- #define EADDR_NVOFS 250
- for (i = 0; i < 3; i++) {
-- unsigned short tmp = ip22_nvram_read(EADDR_NVOFS / 2 + i);
-+ unsigned short tmp = has_eeprom ?
-+ ip22_eeprom_read(&hpcregs->eeprom, EADDR_NVOFS / 2+i) :
-+ ip22_nvram_read(EADDR_NVOFS / 2+i);
-
- dev->dev_addr[2 * i] = tmp >> 8;
- dev->dev_addr[2 * i + 1] = tmp & 0xff;
-@@ -654,8 +653,8 @@
- gpriv = sp;
- gdev = dev;
- #endif
-- sp->sregs = (struct sgiseeq_regs *) &hpc3c0->eth_ext[0];
-- sp->hregs = &hpc3c0->ethregs;
-+ sp->sregs = (struct sgiseeq_regs *) &hpcregs->eth_ext[0];
-+ sp->hregs = &hpcregs->ethregs;
- sp->name = sgiseeqstr;
- sp->mode = SEEQ_RCMD_RBCAST;
-
-@@ -672,6 +671,11 @@
- setup_rx_ring(sp->srings.rx_desc, SEEQ_RX_BUFFERS);
- setup_tx_ring(sp->srings.tx_desc, SEEQ_TX_BUFFERS);
-
-+ /* Setup PIO and DMA transfer timing */
-+ sp->hregs->pconfig = 0x161;
-+ sp->hregs->dconfig = HPC3_EDCFG_FIRQ | HPC3_EDCFG_FEOP |
-+ HPC3_EDCFG_FRXDC | HPC3_EDCFG_PTO | 0x026;
-+
- /* Reset the chip. */
- hpc3_eth_reset(sp->hregs);
-
-@@ -699,7 +703,7 @@
- goto err_out_free_irq;
- }
-
-- printk(KERN_INFO "%s: SGI Seeq8003 ", dev->name);
-+ printk(KERN_INFO "%s: %s ", dev->name, sgiseeqstr);
- for (i = 0; i < 6; i++)
- printk("%2.2x%c", dev->dev_addr[i], i == 5 ? '\n' : ':');
-
-@@ -721,10 +725,22 @@
-
- static int __init sgiseeq_probe(void)
- {
-- printk(version);
-+ unsigned int tmp, ret1, ret2 = 0;
-
- /* On board adapter on 1st HPC is always present */
-- return sgiseeq_init(hpc3c0, SGI_ENET_IRQ);
-+ ret1 = sgiseeq_init(hpc3c0, SGI_ENET_IRQ, 0);
-+ /* Let's see if second HPC is there */
-+ if (!(ip22_is_fullhouse()) &&
-+ get_dbe(tmp, (unsigned int *)&hpc3c1->pbdma[1]) == 0) {
-+ sgimc->giopar |= SGIMC_GIOPAR_MASTEREXP1 |
-+ SGIMC_GIOPAR_EXP164 |
-+ SGIMC_GIOPAR_HPC264;
-+ hpc3c1->pbus_piocfg[0][0] = 0x3ffff;
-+ /* interrupt/config register on Challenge S Mezz board */
-+ hpc3c1->pbus_extregs[0][0] = 0x30;
-+ ret2 = sgiseeq_init(hpc3c1, SGI_GIO_0_IRQ, 1);
-+ }
-+ return (ret1 & ret2) ? ret1 : 0;
- }
-
- static void __exit sgiseeq_exit(void)
-@@ -747,4 +763,6 @@
- module_init(sgiseeq_probe);
- module_exit(sgiseeq_exit);
-
-+MODULE_DESCRIPTION("SGI Seeq 8003 driver");
-+MODULE_AUTHOR("David S. Miller");
- MODULE_LICENSE("GPL");
-diff -Nur linux-2.4.32-rc1/drivers/pci/pci.c linux-2.4.32-rc1.mips/drivers/pci/pci.c
---- linux-2.4.32-rc1/drivers/pci/pci.c 2004-11-17 12:54:21.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/pci/pci.c 2004-11-19 01:28:41.000000000 +0100
-@@ -1281,11 +1281,17 @@
- {
- unsigned int buses;
- unsigned short cr;
-+ unsigned short bctl;
- struct pci_bus *child;
- int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
-
- pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
- DBG("Scanning behind PCI bridge %s, config %06x, pass %d\n", dev->slot_name, buses & 0xffffff, pass);
-+ /* Disable MasterAbortMode during probing to avoid reporting
-+ of bus errors (in some architectures) */
-+ pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bctl);
-+ pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
-+ bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
- if ((buses & 0xffff00) && !pcibios_assign_all_busses()) {
- /*
- * Bus already configured by firmware, process it in the first
-@@ -1351,6 +1357,7 @@
- pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
- pci_write_config_word(dev, PCI_COMMAND, cr);
- }
-+ pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
- sprintf(child->name, (is_cardbus ? "PCI CardBus #%02x" : "PCI Bus #%02x"), child->number);
- return max;
- }
-diff -Nur linux-2.4.32-rc1/drivers/pcmcia/au1000_db1x00.c linux-2.4.32-rc1.mips/drivers/pcmcia/au1000_db1x00.c
---- linux-2.4.32-rc1/drivers/pcmcia/au1000_db1x00.c 2005-01-19 15:09:57.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/pcmcia/au1000_db1x00.c 2005-02-03 07:35:30.000000000 +0100
-@@ -1,6 +1,6 @@
- /*
- *
-- * Alchemy Semi Db1x00 boards specific pcmcia routines.
-+ * AMD Alchemy DUAL-SLOT Db1x00 boards' specific pcmcia routines.
- *
- * Copyright 2002 MontaVista Software Inc.
- * Author: MontaVista Software, Inc.
-@@ -54,9 +54,20 @@
- #include <asm/au1000.h>
- #include <asm/au1000_pcmcia.h>
-
-+#if defined(CONFIG_MIPS_PB1200)
-+#include <asm/pb1200.h>
-+#elif defined(CONFIG_MIPS_DB1200)
-+#include <asm/db1200.h>
-+#else
- #include <asm/db1x00.h>
-+#endif
-
--static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+#define PCMCIA_MAX_SOCK 1
-+#define PCMCIA_NUM_SOCKS (PCMCIA_MAX_SOCK+1)
-+
-+/* VPP/VCC */
-+#define SET_VCC_VPP(VCC, VPP, SLOT)\
-+ ((((VCC)<<2) | ((VPP)<<0)) << ((SLOT)*8))
-
- static int db1x00_pcmcia_init(struct pcmcia_init *init)
- {
-@@ -76,7 +87,7 @@
- db1x00_pcmcia_socket_state(unsigned sock, struct pcmcia_state *state)
- {
- u32 inserted;
-- unsigned char vs;
-+ u16 vs;
-
- if(sock > PCMCIA_MAX_SOCK) return -1;
-
-@@ -87,11 +98,11 @@
-
- if (sock == 0) {
- vs = bcsr->status & 0x3;
-- inserted = !(bcsr->status & (1<<4));
-+ inserted = BOARD_CARD_INSERTED(0);
- }
- else {
- vs = (bcsr->status & 0xC)>>2;
-- inserted = !(bcsr->status & (1<<5));
-+ inserted = BOARD_CARD_INSERTED(1);
- }
-
- DEBUG(KERN_DEBUG "db1x00 socket %d: inserted %d, vs %d\n",
-@@ -144,16 +155,9 @@
- if(info->sock > PCMCIA_MAX_SOCK) return -1;
-
- if(info->sock == 0)
--#ifdef CONFIG_MIPS_DB1550
-- info->irq = AU1000_GPIO_3;
-+ info->irq = BOARD_PC0_INT;
- else
-- info->irq = AU1000_GPIO_5;
--#else
-- info->irq = AU1000_GPIO_2;
-- else
-- info->irq = AU1000_GPIO_5;
--#endif
--
-+ info->irq = BOARD_PC1_INT;
- return 0;
- }
-
-diff -Nur linux-2.4.32-rc1/drivers/pcmcia/Config.in linux-2.4.32-rc1.mips/drivers/pcmcia/Config.in
---- linux-2.4.32-rc1/drivers/pcmcia/Config.in 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/pcmcia/Config.in 2004-02-22 06:21:34.000000000 +0100
-@@ -30,16 +30,14 @@
- dep_tristate ' M8xx support' CONFIG_PCMCIA_M8XX $CONFIG_PCMCIA
- fi
- if [ "$CONFIG_SOC_AU1X00" = "y" ]; then
-- dep_tristate ' Au1x00 PCMCIA support' CONFIG_PCMCIA_AU1X00 $CONFIG_PCMCIA
-- if [ "$CONFIG_PCMCIA_AU1X00" != "n" ]; then
-- bool ' Pb1x00 board support' CONFIG_PCMCIA_PB1X00
-- bool ' Db1x00 board support' CONFIG_PCMCIA_DB1X00
-- bool ' XXS1500 board support' CONFIG_PCMCIA_XXS1500
-- fi
-+ dep_tristate ' Au1x00 PCMCIA support' CONFIG_PCMCIA_AU1X00 $CONFIG_PCMCIA
- fi
- if [ "$CONFIG_SIBYTE_SB1xxx_SOC" = "y" ]; then
- dep_bool ' SiByte PCMCIA support' CONFIG_PCMCIA_SIBYTE $CONFIG_PCMCIA $CONFIG_BLK_DEV_IDE_SIBYTE
- fi
-+ if [ "$CONFIG_VRC4171" = "y" -o "$CONFIG_VRC4171" = "m" ]; then
-+ dep_tristate ' NEC VRC4171 Card Controllers support' CONFIG_PCMCIA_VRC4171 $CONFIG_PCMCIA
-+ fi
- if [ "$CONFIG_VRC4173" = "y" -o "$CONFIG_VRC4173" = "m" ]; then
- dep_tristate ' NEC VRC4173 CARDU support' CONFIG_PCMCIA_VRC4173 $CONFIG_PCMCIA
- fi
-diff -Nur linux-2.4.32-rc1/drivers/pcmcia/Makefile linux-2.4.32-rc1.mips/drivers/pcmcia/Makefile
---- linux-2.4.32-rc1/drivers/pcmcia/Makefile 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/pcmcia/Makefile 2005-02-03 07:35:30.000000000 +0100
-@@ -61,9 +61,18 @@
-
- obj-$(CONFIG_PCMCIA_AU1X00) += au1x00_ss.o
- au1000_ss-objs-y := au1000_generic.o
--au1000_ss-objs-$(CONFIG_PCMCIA_PB1X00) += au1000_pb1x00.o
--au1000_ss-objs-$(CONFIG_PCMCIA_DB1X00) += au1000_db1x00.o
--au1000_ss-objs-$(CONFIG_PCMCIA_XXS1500) += au1000_xxs1500.o
-+au1000_ss-objs-$(CONFIG_MIPS_PB1000) += au1000_pb1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_PB1100) += au1000_pb1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_PB1500) += au1000_pb1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_PB1550) += au1000_pb1550.o
-+au1000_ss-objs-$(CONFIG_MIPS_PB1200) += au1000_db1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_DB1000) += au1000_db1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_DB1100) += au1000_db1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_DB1500) += au1000_db1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_DB1550) += au1000_db1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_DB1200) += au1000_db1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_HYDROGEN3) += au1000_hydrogen3.o
-+au1000_ss-objs-$(CONFIG_MIPS_XXS1500) += au1000_xxs1500.o
-
- obj-$(CONFIG_PCMCIA_SA1100) += sa1100_cs.o
- obj-$(CONFIG_PCMCIA_M8XX) += m8xx_pcmcia.o
-@@ -89,6 +98,7 @@
- sa1100_cs-objs-$(CONFIG_SA1100_XP860) += sa1100_xp860.o sa1111_generic.o
- sa1100_cs-objs-$(CONFIG_SA1100_YOPY) += sa1100_yopy.o
-
-+obj-$(CONFIG_PCMCIA_VRC4171) += vrc4171_card.o
- obj-$(CONFIG_PCMCIA_VRC4173) += vrc4173_cardu.o
-
- include $(TOPDIR)/Rules.make
-diff -Nur linux-2.4.32-rc1/drivers/pcmcia/vrc4171_card.c linux-2.4.32-rc1.mips/drivers/pcmcia/vrc4171_card.c
---- linux-2.4.32-rc1/drivers/pcmcia/vrc4171_card.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/pcmcia/vrc4171_card.c 2004-01-19 16:54:58.000000000 +0100
-@@ -0,0 +1,886 @@
-+/*
-+ * vrc4171_card.c, NEC VRC4171 Card Controller driver for Socket Services.
-+ *
-+ * Copyright (C) 2003 Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
-+ *
-+ * 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 <linux/init.h>
-+#include <linux/ioport.h>
-+#include <linux/irq.h>
-+#include <linux/module.h>
-+#include <linux/spinlock.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+
-+#include <asm/io.h>
-+#include <asm/vr41xx/vrc4171.h>
-+
-+#include <pcmcia/ss.h>
-+
-+#include "i82365.h"
-+
-+MODULE_DESCRIPTION("NEC VRC4171 Card Controllers driver for Socket Services");
-+MODULE_AUTHOR("Yoichi Yuasa <yuasa@hh.iij4u.or.jp>");
-+MODULE_LICENSE("GPL");
-+
-+#define CARD_MAX_SLOTS 2
-+#define CARD_SLOTA 0
-+#define CARD_SLOTB 1
-+#define CARD_SLOTB_OFFSET 0x40
-+
-+#define CARD_MEM_START 0x10000000
-+#define CARD_MEM_END 0x13ffffff
-+#define CARD_MAX_MEM_OFFSET 0x3ffffff
-+#define CARD_MAX_MEM_SPEED 1000
-+
-+#define CARD_CONTROLLER_INDEX 0x03e0
-+#define CARD_CONTROLLER_DATA 0x03e1
-+#define CARD_CONTROLLER_SIZE 2
-+ /* Power register */
-+ #define VPP_GET_VCC 0x01
-+ #define POWER_ENABLE 0x10
-+ #define CARD_VOLTAGE_SENSE 0x1f
-+ #define VCC_3VORXV_CAPABLE 0x00
-+ #define VCC_XV_ONLY 0x01
-+ #define VCC_3V_CAPABLE 0x02
-+ #define VCC_5V_ONLY 0x03
-+ #define CARD_VOLTAGE_SELECT 0x2f
-+ #define VCC_3V 0x01
-+ #define VCC_5V 0x00
-+ #define VCC_XV 0x02
-+ #define VCC_STATUS_3V 0x02
-+ #define VCC_STATUS_5V 0x01
-+ #define VCC_STATUS_XV 0x03
-+ #define GLOBAL_CONTROL 0x1e
-+ #define EXWRBK 0x04
-+ #define IRQPM_EN 0x08
-+ #define CLRPMIRQ 0x10
-+
-+#define IO_MAX_MAPS 2
-+#define MEM_MAX_MAPS 5
-+
-+enum {
-+ SLOTB_PROBE = 0,
-+ SLOTB_NOPROBE_IO,
-+ SLOTB_NOPROBE_MEM,
-+ SLOTB_NOPROBE_ALL
-+};
-+
-+typedef struct vrc4171_socket {
-+ int noprobe;
-+ void (*handler)(void *, unsigned int);
-+ void *info;
-+ socket_cap_t cap;
-+ spinlock_t event_lock;
-+ uint16_t events;
-+ struct socket_info_t *pcmcia_socket;
-+ struct tq_struct tq_task;
-+ char name[24];
-+ int csc_irq;
-+ int io_irq;
-+} vrc4171_socket_t;
-+
-+static vrc4171_socket_t vrc4171_sockets[CARD_MAX_SLOTS];
-+static int vrc4171_slotb = SLOTB_IS_NONE;
-+static unsigned int vrc4171_irq;
-+static uint16_t vrc4171_irq_mask = 0xdeb8;
-+
-+extern struct socket_info_t *pcmcia_register_socket(int slot,
-+ struct pccard_operations *vtable,
-+ int use_bus_pm);
-+extern void pcmcia_unregister_socket(struct socket_info_t *s);
-+
-+static inline uint8_t exca_read_byte(int slot, uint8_t index)
-+{
-+ if (slot == CARD_SLOTB)
-+ index += CARD_SLOTB_OFFSET;
-+
-+ outb(index, CARD_CONTROLLER_INDEX);
-+ return inb(CARD_CONTROLLER_DATA);
-+}
-+
-+static inline uint16_t exca_read_word(int slot, uint8_t index)
-+{
-+ uint16_t data;
-+
-+ if (slot == CARD_SLOTB)
-+ index += CARD_SLOTB_OFFSET;
-+
-+ outb(index++, CARD_CONTROLLER_INDEX);
-+ data = inb(CARD_CONTROLLER_DATA);
-+
-+ outb(index, CARD_CONTROLLER_INDEX);
-+ data |= ((uint16_t)inb(CARD_CONTROLLER_DATA)) << 8;
-+
-+ return data;
-+}
-+
-+static inline uint8_t exca_write_byte(int slot, uint8_t index, uint8_t data)
-+{
-+ if (slot == CARD_SLOTB)
-+ index += CARD_SLOTB_OFFSET;
-+
-+ outb(index, CARD_CONTROLLER_INDEX);
-+ outb(data, CARD_CONTROLLER_DATA);
-+
-+ return data;
-+}
-+
-+static inline uint16_t exca_write_word(int slot, uint8_t index, uint16_t data)
-+{
-+ if (slot == CARD_SLOTB)
-+ index += CARD_SLOTB_OFFSET;
-+
-+ outb(index++, CARD_CONTROLLER_INDEX);
-+ outb(data, CARD_CONTROLLER_DATA);
-+
-+ outb(index, CARD_CONTROLLER_INDEX);
-+ outb((uint8_t)(data >> 8), CARD_CONTROLLER_DATA);
-+
-+ return data;
-+}
-+
-+static inline int search_nonuse_irq(void)
-+{
-+ int i;
-+
-+ for (i = 0; i < 16; i++) {
-+ if (vrc4171_irq_mask & (1 << i)) {
-+ vrc4171_irq_mask &= ~(1 << i);
-+ return i;
-+ }
-+ }
-+
-+ return -1;
-+}
-+
-+static int pccard_init(unsigned int slot)
-+{
-+ vrc4171_socket_t *socket = &vrc4171_sockets[slot];
-+
-+ socket->cap.features |= SS_CAP_PCCARD | SS_CAP_PAGE_REGS;
-+ socket->cap.irq_mask = 0;
-+ socket->cap.pci_irq = vrc4171_irq;
-+ socket->cap.map_size = 0x1000;
-+ socket->events = 0;
-+ spin_lock_init(socket->event_lock);
-+ socket->csc_irq = search_nonuse_irq();
-+ socket->io_irq = search_nonuse_irq();
-+
-+ return 0;
-+}
-+
-+static int pccard_suspend(unsigned int slot)
-+{
-+ return -EINVAL;
-+}
-+
-+static int pccard_register_callback(unsigned int slot,
-+ void (*handler)(void *, unsigned int),
-+ void *info)
-+{
-+ vrc4171_socket_t *socket;
-+
-+ if (slot >= CARD_MAX_SLOTS)
-+ return -EINVAL;
-+
-+ socket = &vrc4171_sockets[slot];
-+
-+ socket->handler = handler;
-+ socket->info = info;
-+
-+ if (handler)
-+ MOD_INC_USE_COUNT;
-+ else
-+ MOD_DEC_USE_COUNT;
-+
-+ return 0;
-+}
-+
-+static int pccard_inquire_socket(unsigned int slot, socket_cap_t *cap)
-+{
-+ vrc4171_socket_t *socket;
-+
-+ if (slot >= CARD_MAX_SLOTS || cap == NULL)
-+ return -EINVAL;
-+
-+ socket = &vrc4171_sockets[slot];
-+
-+ *cap = socket->cap;
-+
-+ return 0;
-+}
-+
-+static int pccard_get_status(unsigned int slot, u_int *value)
-+{
-+ uint8_t status, sense;
-+ u_int val = 0;
-+
-+ if (slot >= CARD_MAX_SLOTS || value == NULL)
-+ return -EINVAL;
-+
-+ status = exca_read_byte(slot, I365_STATUS);
-+ if (exca_read_byte(slot, I365_INTCTL) & I365_PC_IOCARD) {
-+ if (status & I365_CS_STSCHG)
-+ val |= SS_STSCHG;
-+ } else {
-+ if (!(status & I365_CS_BVD1))
-+ val |= SS_BATDEAD;
-+ else if ((status & (I365_CS_BVD1 | I365_CS_BVD2)) == I365_CS_BVD1)
-+ val |= SS_BATWARN;
-+ }
-+ if ((status & I365_CS_DETECT) == I365_CS_DETECT)
-+ val |= SS_DETECT;
-+ if (status & I365_CS_WRPROT)
-+ val |= SS_WRPROT;
-+ if (status & I365_CS_READY)
-+ val |= SS_READY;
-+ if (status & I365_CS_POWERON)
-+ val |= SS_POWERON;
-+
-+ sense = exca_read_byte(slot, CARD_VOLTAGE_SENSE);
-+ switch (sense) {
-+ case VCC_3VORXV_CAPABLE:
-+ val |= SS_3VCARD | SS_XVCARD;
-+ break;
-+ case VCC_XV_ONLY:
-+ val |= SS_XVCARD;
-+ break;
-+ case VCC_3V_CAPABLE:
-+ val |= SS_3VCARD;
-+ break;
-+ default:
-+ /* 5V only */
-+ break;
-+ }
-+
-+ *value = val;
-+
-+ return 0;
-+}
-+
-+static inline u_char get_Vcc_value(uint8_t voltage)
-+{
-+ switch (voltage) {
-+ case VCC_STATUS_3V:
-+ return 33;
-+ case VCC_STATUS_5V:
-+ return 50;
-+ default:
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+static inline u_char get_Vpp_value(uint8_t power, u_char Vcc)
-+{
-+ if ((power & 0x03) == 0x01 || (power & 0x03) == 0x02)
-+ return Vcc;
-+
-+ return 0;
-+}
-+
-+static int pccard_get_socket(unsigned int slot, socket_state_t *state)
-+{
-+ vrc4171_socket_t *socket;
-+ uint8_t power, voltage, control, cscint;
-+
-+ if (slot >= CARD_MAX_SLOTS || state == NULL)
-+ return -EINVAL;
-+
-+ socket = &vrc4171_sockets[slot];
-+
-+ power = exca_read_byte(slot, I365_POWER);
-+ voltage = exca_read_byte(slot, CARD_VOLTAGE_SELECT);
-+
-+ state->Vcc = get_Vcc_value(voltage);
-+ state->Vpp = get_Vpp_value(power, state->Vcc);
-+
-+ state->flags = 0;
-+ if (power & POWER_ENABLE)
-+ state->flags |= SS_PWR_AUTO;
-+ if (power & I365_PWR_OUT)
-+ state->flags |= SS_OUTPUT_ENA;
-+
-+ control = exca_read_byte(slot, I365_INTCTL);
-+ if (control & I365_PC_IOCARD)
-+ state->flags |= SS_IOCARD;
-+ if (!(control & I365_PC_RESET))
-+ state->flags |= SS_RESET;
-+
-+ cscint = exca_read_byte(slot, I365_CSCINT);
-+ state->csc_mask = 0;
-+ if (state->flags & SS_IOCARD) {
-+ if (cscint & I365_CSC_STSCHG)
-+ state->flags |= SS_STSCHG;
-+ } else {
-+ if (cscint & I365_CSC_BVD1)
-+ state->csc_mask |= SS_BATDEAD;
-+ if (cscint & I365_CSC_BVD2)
-+ state->csc_mask |= SS_BATWARN;
-+ }
-+ if (cscint & I365_CSC_READY)
-+ state->csc_mask |= SS_READY;
-+ if (cscint & I365_CSC_DETECT)
-+ state->csc_mask |= SS_DETECT;
-+
-+ return 0;
-+}
-+
-+static inline uint8_t set_Vcc_value(u_char Vcc)
-+{
-+ switch (Vcc) {
-+ case 33:
-+ return VCC_3V;
-+ case 50:
-+ return VCC_5V;
-+ }
-+
-+ /* Small voltage is chosen for safety. */
-+ return VCC_3V;
-+}
-+
-+static int pccard_set_socket(unsigned int slot, socket_state_t *state)
-+{
-+ vrc4171_socket_t *socket;
-+ uint8_t voltage, power, control, cscint;
-+
-+ if (slot >= CARD_MAX_SLOTS ||
-+ (state->Vpp != state->Vcc && state->Vpp != 0) ||
-+ (state->Vcc != 50 && state->Vcc != 33 && state->Vcc != 0))
-+ return -EINVAL;
-+
-+ socket = &vrc4171_sockets[slot];
-+
-+ spin_lock_irq(&socket->event_lock);
-+
-+ voltage = set_Vcc_value(state->Vcc);
-+ exca_write_byte(slot, CARD_VOLTAGE_SELECT, voltage);
-+
-+ power = POWER_ENABLE;
-+ if (state->Vpp == state->Vcc)
-+ power |= VPP_GET_VCC;
-+ if (state->flags & SS_OUTPUT_ENA)
-+ power |= I365_PWR_OUT;
-+ exca_write_byte(slot, I365_POWER, power);
-+
-+ control = 0;
-+ if (state->io_irq != 0)
-+ control |= socket->io_irq;
-+ if (state->flags & SS_IOCARD)
-+ control |= I365_PC_IOCARD;
-+ if (state->flags & SS_RESET)
-+ control &= ~I365_PC_RESET;
-+ else
-+ control |= I365_PC_RESET;
-+ exca_write_byte(slot, I365_INTCTL, control);
-+
-+ cscint = 0;
-+ exca_write_byte(slot, I365_CSCINT, cscint);
-+ exca_read_byte(slot, I365_CSC); /* clear CardStatus change */
-+ if (state->csc_mask != 0)
-+ cscint |= socket->csc_irq << 8;
-+ if (state->flags & SS_IOCARD) {
-+ if (state->csc_mask & SS_STSCHG)
-+ cscint |= I365_CSC_STSCHG;
-+ } else {
-+ if (state->csc_mask & SS_BATDEAD)
-+ cscint |= I365_CSC_BVD1;
-+ if (state->csc_mask & SS_BATWARN)
-+ cscint |= I365_CSC_BVD2;
-+ }
-+ if (state->csc_mask & SS_READY)
-+ cscint |= I365_CSC_READY;
-+ if (state->csc_mask & SS_DETECT)
-+ cscint |= I365_CSC_DETECT;
-+ exca_write_byte(slot, I365_CSCINT, cscint);
-+
-+ spin_unlock_irq(&socket->event_lock);
-+
-+ return 0;
-+}
-+
-+static int pccard_get_io_map(unsigned int slot, struct pccard_io_map *io)
-+{
-+ vrc4171_socket_t *socket;
-+ uint8_t ioctl, addrwin;
-+ u_char map;
-+
-+ if (slot >= CARD_MAX_SLOTS || io == NULL ||
-+ io->map >= IO_MAX_MAPS)
-+ return -EINVAL;
-+
-+ socket = &vrc4171_sockets[slot];
-+ map = io->map;
-+
-+ io->start = exca_read_word(slot, I365_IO(map)+I365_W_START);
-+ io->stop = exca_read_word(slot, I365_IO(map)+I365_W_STOP);
-+
-+ ioctl = exca_read_byte(slot, I365_IOCTL);
-+ if (io->flags & I365_IOCTL_WAIT(map))
-+ io->speed = 1;
-+ else
-+ io->speed = 0;
-+
-+ io->flags = 0;
-+ if (ioctl & I365_IOCTL_16BIT(map))
-+ io->flags |= MAP_16BIT;
-+ if (ioctl & I365_IOCTL_IOCS16(map))
-+ io->flags |= MAP_AUTOSZ;
-+ if (ioctl & I365_IOCTL_0WS(map))
-+ io->flags |= MAP_0WS;
-+
-+ addrwin = exca_read_byte(slot, I365_ADDRWIN);
-+ if (addrwin & I365_ENA_IO(map))
-+ io->flags |= MAP_ACTIVE;
-+
-+ return 0;
-+}
-+
-+static int pccard_set_io_map(unsigned int slot, struct pccard_io_map *io)
-+{
-+ vrc4171_socket_t *socket;
-+ uint8_t ioctl, addrwin;
-+ u_char map;
-+
-+ if (slot >= CARD_MAX_SLOTS ||
-+ io == NULL || io->map >= IO_MAX_MAPS ||
-+ io->start > 0xffff || io->stop > 0xffff || io->start > io->stop)
-+ return -EINVAL;
-+
-+ socket = &vrc4171_sockets[slot];
-+ map = io->map;
-+
-+ addrwin = exca_read_byte(slot, I365_ADDRWIN);
-+ if (addrwin & I365_ENA_IO(map)) {
-+ addrwin &= ~I365_ENA_IO(map);
-+ exca_write_byte(slot, I365_ADDRWIN, addrwin);
-+ }
-+
-+ exca_write_word(slot, I365_IO(map)+I365_W_START, io->start);
-+ exca_write_word(slot, I365_IO(map)+I365_W_STOP, io->stop);
-+
-+ ioctl = 0;
-+ if (io->speed > 0)
-+ ioctl |= I365_IOCTL_WAIT(map);
-+ if (io->flags & MAP_16BIT)
-+ ioctl |= I365_IOCTL_16BIT(map);
-+ if (io->flags & MAP_AUTOSZ)
-+ ioctl |= I365_IOCTL_IOCS16(map);
-+ if (io->flags & MAP_0WS)
-+ ioctl |= I365_IOCTL_0WS(map);
-+ exca_write_byte(slot, I365_IOCTL, ioctl);
-+
-+ if (io->flags & MAP_ACTIVE) {
-+ addrwin |= I365_ENA_IO(map);
-+ exca_write_byte(slot, I365_ADDRWIN, addrwin);
-+ }
-+
-+ return 0;
-+}
-+
-+static int pccard_get_mem_map(unsigned int slot, struct pccard_mem_map *mem)
-+{
-+ vrc4171_socket_t *socket;
-+ uint8_t addrwin;
-+ u_long start, stop;
-+ u_int offset;
-+ u_char map;
-+
-+ if (slot >= CARD_MAX_SLOTS || mem == NULL || mem->map >= MEM_MAX_MAPS)
-+ return -EINVAL;
-+
-+ socket = &vrc4171_sockets[slot];
-+ map = mem->map;
-+
-+ mem->flags = 0;
-+ mem->speed = 0;
-+
-+ addrwin = exca_read_byte(slot, I365_ADDRWIN);
-+ if (addrwin & I365_ENA_MEM(map))
-+ mem->flags |= MAP_ACTIVE;
-+
-+ start = exca_read_word(slot, I365_MEM(map)+I365_W_START);
-+ if (start & I365_MEM_16BIT)
-+ mem->flags |= MAP_16BIT;
-+ mem->sys_start = (start & 0x3fffUL) << 12;
-+
-+ stop = exca_read_word(slot, I365_MEM(map)+I365_W_STOP);
-+ if (start & I365_MEM_WS0)
-+ mem->speed += 1;
-+ if (start & I365_MEM_WS1)
-+ mem->speed += 2;
-+ mem->sys_stop = ((stop & 0x3fffUL) << 12) + 0xfffUL;
-+
-+ offset = exca_read_word(slot, I365_MEM(map)+I365_W_OFF);
-+ if (offset & I365_MEM_REG)
-+ mem->flags |= MAP_ATTRIB;
-+ if (offset & I365_MEM_WRPROT)
-+ mem->flags |= MAP_WRPROT;
-+ mem->card_start = (offset & 0x3fffUL) << 12;
-+
-+ mem->sys_start += CARD_MEM_START;
-+ mem->sys_stop += CARD_MEM_START;
-+
-+ return 0;
-+}
-+
-+static int pccard_set_mem_map(unsigned int slot, struct pccard_mem_map *mem)
-+{
-+ vrc4171_socket_t *socket;
-+ uint16_t start, stop, offset;
-+ uint8_t addrwin;
-+ u_char map;
-+
-+ if (slot >= CARD_MAX_SLOTS ||
-+ mem == NULL || mem->map >= MEM_MAX_MAPS ||
-+ mem->sys_start < CARD_MEM_START || mem->sys_start > CARD_MEM_END ||
-+ mem->sys_stop < CARD_MEM_START || mem->sys_stop > CARD_MEM_END ||
-+ mem->sys_start > mem->sys_stop ||
-+ mem->card_start > CARD_MAX_MEM_OFFSET ||
-+ mem->speed > CARD_MAX_MEM_SPEED)
-+ return -EINVAL;
-+
-+ socket = &vrc4171_sockets[slot];
-+ map = mem->map;
-+
-+ addrwin = exca_read_byte(slot, I365_ADDRWIN);
-+ if (addrwin & I365_ENA_MEM(map)) {
-+ addrwin &= ~I365_ENA_MEM(map);
-+ exca_write_byte(slot, I365_ADDRWIN, addrwin);
-+ }
-+
-+ start = (mem->sys_start >> 12) & 0x3fff;
-+ if (mem->flags & MAP_16BIT)
-+ start |= I365_MEM_16BIT;
-+ exca_write_word(slot, I365_MEM(map)+I365_W_START, start);
-+
-+ stop = (mem->sys_stop >> 12) & 0x3fff;
-+ switch (mem->speed) {
-+ case 0:
-+ break;
-+ case 1:
-+ stop |= I365_MEM_WS0;
-+ break;
-+ case 2:
-+ stop |= I365_MEM_WS1;
-+ break;
-+ default:
-+ stop |= I365_MEM_WS0 | I365_MEM_WS1;
-+ break;
-+ }
-+ exca_write_word(slot, I365_MEM(map)+I365_W_STOP, stop);
-+
-+ offset = (mem->card_start >> 12) & 0x3fff;
-+ if (mem->flags & MAP_ATTRIB)
-+ offset |= I365_MEM_REG;
-+ if (mem->flags & MAP_WRPROT)
-+ offset |= I365_MEM_WRPROT;
-+ exca_write_word(slot, I365_MEM(map)+I365_W_OFF, offset);
-+
-+ if (mem->flags & MAP_ACTIVE) {
-+ addrwin |= I365_ENA_MEM(map);
-+ exca_write_byte(slot, I365_ADDRWIN, addrwin);
-+ }
-+
-+ return 0;
-+}
-+
-+static void pccard_proc_setup(unsigned int slot, struct proc_dir_entry *base)
-+{
-+}
-+
-+static struct pccard_operations vrc4171_pccard_operations = {
-+ .init = pccard_init,
-+ .suspend = pccard_suspend,
-+ .register_callback = pccard_register_callback,
-+ .inquire_socket = pccard_inquire_socket,
-+ .get_status = pccard_get_status,
-+ .get_socket = pccard_get_socket,
-+ .set_socket = pccard_set_socket,
-+ .get_io_map = pccard_get_io_map,
-+ .set_io_map = pccard_set_io_map,
-+ .get_mem_map = pccard_get_mem_map,
-+ .set_mem_map = pccard_set_mem_map,
-+ .proc_setup = pccard_proc_setup,
-+};
-+
-+static void pccard_bh(void *data)
-+{
-+ vrc4171_socket_t *socket = (vrc4171_socket_t *)data;
-+ uint16_t events;
-+
-+ spin_lock_irq(&socket->event_lock);
-+ events = socket->events;
-+ socket->events = 0;
-+ spin_unlock_irq(&socket->event_lock);
-+
-+ if (socket->handler)
-+ socket->handler(socket->info, events);
-+}
-+
-+static inline uint16_t get_events(int slot)
-+{
-+ uint16_t events = 0;
-+ uint8_t status, csc;
-+
-+ status = exca_read_byte(slot, I365_STATUS);
-+ csc = exca_read_byte(slot, I365_CSC);
-+
-+ if (exca_read_byte(slot, I365_INTCTL) & I365_PC_IOCARD) {
-+ if ((csc & I365_CSC_STSCHG) && (status & I365_CS_STSCHG))
-+ events |= SS_STSCHG;
-+ } else {
-+ if (csc & (I365_CSC_BVD1 | I365_CSC_BVD2)) {
-+ if (!(status & I365_CS_BVD1))
-+ events |= SS_BATDEAD;
-+ else if ((status & (I365_CS_BVD1 | I365_CS_BVD2)) == I365_CS_BVD1)
-+ events |= SS_BATWARN;
-+ }
-+ }
-+ if ((csc & I365_CSC_READY) && (status & I365_CS_READY))
-+ events |= SS_READY;
-+ if ((csc & I365_CSC_DETECT) && ((status & I365_CS_DETECT) == I365_CS_DETECT))
-+ events |= SS_DETECT;
-+
-+ return events;
-+}
-+
-+static void pccard_status_change(int slot, vrc4171_socket_t *socket)
-+{
-+ uint16_t events;
-+
-+ socket->tq_task.routine = pccard_bh;
-+ socket->tq_task.data = socket;
-+
-+ events = get_events(slot);
-+ if (events) {
-+ spin_lock(&socket->event_lock);
-+ socket->events |= events;
-+ spin_unlock(&socket->event_lock);
-+ schedule_task(&socket->tq_task);
-+ }
-+}
-+
-+static void pccard_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ vrc4171_socket_t *socket;
-+ uint16_t status;
-+
-+ status = vrc4171_get_irq_status();
-+ if (status & IRQ_A) {
-+ socket = &vrc4171_sockets[CARD_SLOTA];
-+ if (socket->noprobe == SLOTB_PROBE) {
-+ if (status & (1 << socket->csc_irq))
-+ pccard_status_change(CARD_SLOTA, socket);
-+ }
-+ }
-+
-+ if (status & IRQ_B) {
-+ socket = &vrc4171_sockets[CARD_SLOTB];
-+ if (socket->noprobe == SLOTB_PROBE) {
-+ if (status & (1 << socket->csc_irq))
-+ pccard_status_change(CARD_SLOTB, socket);
-+ }
-+ }
-+}
-+
-+static inline void reserve_using_irq(int slot)
-+{
-+ unsigned int irq;
-+
-+ irq = exca_read_byte(slot, I365_INTCTL);
-+ irq &= 0x0f;
-+ vrc4171_irq_mask &= ~(1 << irq);
-+
-+ irq = exca_read_byte(slot, I365_CSCINT);
-+ irq = (irq & 0xf0) >> 4;
-+ vrc4171_irq_mask &= ~(1 << irq);
-+}
-+
-+static int __devinit vrc4171_add_socket(int slot)
-+{
-+ vrc4171_socket_t *socket;
-+
-+ if (slot >= CARD_MAX_SLOTS)
-+ return -EINVAL;
-+
-+ socket = &vrc4171_sockets[slot];
-+ if (socket->noprobe != SLOTB_PROBE) {
-+ uint8_t addrwin;
-+
-+ switch (socket->noprobe) {
-+ case SLOTB_NOPROBE_MEM:
-+ addrwin = exca_read_byte(slot, I365_ADDRWIN);
-+ addrwin &= 0x1f;
-+ exca_write_byte(slot, I365_ADDRWIN, addrwin);
-+ break;
-+ case SLOTB_NOPROBE_IO:
-+ addrwin = exca_read_byte(slot, I365_ADDRWIN);
-+ addrwin &= 0xc0;
-+ exca_write_byte(slot, I365_ADDRWIN, addrwin);
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ reserve_using_irq(slot);
-+
-+ return 0;
-+ }
-+
-+ sprintf(socket->name, "NEC VRC4171 Card Slot %1c", 'A' + slot);
-+
-+ socket->pcmcia_socket = pcmcia_register_socket(slot, &vrc4171_pccard_operations, 1);
-+ if (socket->pcmcia_socket == NULL)
-+ return -ENOMEM;
-+
-+ exca_write_byte(slot, I365_ADDRWIN, 0);
-+
-+ exca_write_byte(slot, GLOBAL_CONTROL, 0);
-+
-+ return 0;
-+}
-+
-+static void vrc4171_remove_socket(int slot)
-+{
-+ vrc4171_socket_t *socket;
-+
-+ if (slot >= CARD_MAX_SLOTS)
-+ return;
-+
-+ socket = &vrc4171_sockets[slot];
-+
-+ if (socket->pcmcia_socket != NULL) {
-+ pcmcia_unregister_socket(socket->pcmcia_socket);
-+ socket->pcmcia_socket = NULL;
-+ }
-+}
-+
-+static int __devinit vrc4171_card_setup(char *options)
-+{
-+ if (options == NULL || *options == '\0')
-+ return 0;
-+
-+ if (strncmp(options, "irq:", 4) == 0) {
-+ int irq;
-+ options += 4;
-+ irq = simple_strtoul(options, &options, 0);
-+ if (irq >= 0 && irq < NR_IRQS)
-+ vrc4171_irq = irq;
-+
-+ if (*options != ',')
-+ return 0;
-+ options++;
-+ }
-+
-+ if (strncmp(options, "slota:", 6) == 0) {
-+ options += 6;
-+ if (*options != '\0') {
-+ if (strncmp(options, "noprobe", 7) == 0) {
-+ vrc4171_sockets[CARD_SLOTA].noprobe = 1;
-+ options += 7;
-+ }
-+
-+ if (*options != ',')
-+ return 0;
-+ options++;
-+ } else
-+ return 0;
-+
-+ }
-+
-+ if (strncmp(options, "slotb:", 6) == 0) {
-+ options += 6;
-+ if (*options != '\0') {
-+ if (strncmp(options, "pccard", 6) == 0) {
-+ vrc4171_slotb = SLOTB_IS_PCCARD;
-+ options += 6;
-+ } else if (strncmp(options, "cf", 2) == 0) {
-+ vrc4171_slotb = SLOTB_IS_CF;
-+ options += 2;
-+ } else if (strncmp(options, "flashrom", 8) == 0) {
-+ vrc4171_slotb = SLOTB_IS_FLASHROM;
-+ options += 8;
-+ } else if (strncmp(options, "none", 4) == 0) {
-+ vrc4171_slotb = SLOTB_IS_NONE;
-+ options += 4;
-+ }
-+
-+ if (*options != ',')
-+ return 0;
-+ options++;
-+
-+ if ( strncmp(options, "memnoprobe", 10) == 0)
-+ vrc4171_sockets[CARD_SLOTB].noprobe = SLOTB_NOPROBE_MEM;
-+ if ( strncmp(options, "ionoprobe", 9) == 0)
-+ vrc4171_sockets[CARD_SLOTB].noprobe = SLOTB_NOPROBE_IO;
-+ if ( strncmp(options, "noprobe", 7) == 0)
-+ vrc4171_sockets[CARD_SLOTB].noprobe = SLOTB_NOPROBE_ALL;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+__setup("vrc4171_card=", vrc4171_card_setup);
-+
-+static int __devinit vrc4171_card_init(void)
-+{
-+ int retval, slot;
-+
-+ vrc4171_set_multifunction_pin(vrc4171_slotb);
-+
-+ if (request_region(CARD_CONTROLLER_INDEX, CARD_CONTROLLER_SIZE,
-+ "NEC VRC4171 Card Controller") == NULL)
-+ return -EBUSY;
-+
-+ for (slot = 0; slot < CARD_MAX_SLOTS; slot++) {
-+ if (slot == CARD_SLOTB && vrc4171_slotb == SLOTB_IS_NONE)
-+ break;
-+
-+ retval = vrc4171_add_socket(slot);
-+ if (retval != 0)
-+ return retval;
-+ }
-+
-+ retval = request_irq(vrc4171_irq, pccard_interrupt, SA_SHIRQ,
-+ "NEC VRC4171 Card Controller", vrc4171_sockets);
-+ if (retval < 0) {
-+ for (slot = 0; slot < CARD_MAX_SLOTS; slot++)
-+ vrc4171_remove_socket(slot);
-+
-+ return retval;
-+ }
-+
-+ printk(KERN_INFO "NEC VRC4171 Card Controller, connected to IRQ %d\n", vrc4171_irq);
-+
-+ return 0;
-+}
-+
-+static void __devexit vrc4171_card_exit(void)
-+{
-+ int slot;
-+
-+ for (slot = 0; slot < CARD_MAX_SLOTS; slot++)
-+ vrc4171_remove_socket(slot);
-+
-+ release_region(CARD_CONTROLLER_INDEX, CARD_CONTROLLER_SIZE);
-+}
-+
-+module_init(vrc4171_card_init);
-+module_exit(vrc4171_card_exit);
-diff -Nur linux-2.4.32-rc1/drivers/scsi/NCR53C9x.h linux-2.4.32-rc1.mips/drivers/scsi/NCR53C9x.h
---- linux-2.4.32-rc1/drivers/scsi/NCR53C9x.h 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/scsi/NCR53C9x.h 2003-12-15 19:19:51.000000000 +0100
-@@ -144,12 +144,7 @@
-
- #ifndef MULTIPLE_PAD_SIZES
-
--#ifdef CONFIG_CPU_HAS_WB
--#include <asm/wbflush.h>
--#define esp_write(__reg, __val) do{(__reg) = (__val); wbflush();} while(0)
--#else
--#define esp_write(__reg, __val) ((__reg) = (__val))
--#endif
-+#define esp_write(__reg, __val) do{(__reg) = (__val); iob();} while(0)
- #define esp_read(__reg) (__reg)
-
- struct ESP_regs {
-diff -Nur linux-2.4.32-rc1/drivers/sound/au1550_i2s.c linux-2.4.32-rc1.mips/drivers/sound/au1550_i2s.c
---- linux-2.4.32-rc1/drivers/sound/au1550_i2s.c 2005-01-19 15:10:04.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/sound/au1550_i2s.c 2005-02-08 08:07:50.000000000 +0100
-@@ -41,6 +41,7 @@
- * 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-+
- #include <linux/version.h>
- #include <linux/module.h>
- #include <linux/string.h>
-@@ -62,7 +63,45 @@
- #include <asm/uaccess.h>
- #include <asm/hardirq.h>
- #include <asm/au1000.h>
-+
-+#if defined(CONFIG_SOC_AU1550)
- #include <asm/pb1550.h>
-+#endif
-+
-+#if defined(CONFIG_MIPS_PB1200)
-+#define WM8731
-+#define WM_MODE_USB
-+#include <asm/pb1200.h>
-+#endif
-+
-+#if defined(CONFIG_MIPS_FICMMP)
-+#define WM8721
-+#define WM_MODE_NORMAL
-+#include <asm/ficmmp.h>
-+#endif
-+
-+
-+#define WM_VOLUME_MIN 47
-+#define WM_VOLUME_SCALE 80
-+
-+#if defined(WM8731)
-+ /* OSS interface to the wm i2s.. */
-+ #define CODEC_NAME "Wolfson WM8731 I2S"
-+ #define WM_I2S_STEREO_MASK (SOUND_MASK_PCM | SOUND_MASK_LINE)
-+ #define WM_I2S_SUPPORTED_MASK (WM_I2S_STEREO_MASK | SOUND_MASK_MIC)
-+ #define WM_I2S_RECORD_MASK (SOUND_MASK_MIC | SOUND_MASK_LINE1 | SOUND_MASK_LINE)
-+#elif defined(WM8721)
-+ #define CODEC_NAME "Wolfson WM8721 I2S"
-+ #define WM_I2S_STEREO_MASK (SOUND_MASK_PCM)
-+ #define WM_I2S_SUPPORTED_MASK (WM_I2S_STEREO_MASK)
-+ #define WM_I2S_RECORD_MASK (0)
-+#endif
-+
-+
-+#define supported_mixer(FOO) ((FOO >= 0) && \
-+ (FOO < SOUND_MIXER_NRDEVICES) && \
-+ WM_I2S_SUPPORTED_MASK & (1<<FOO) )
-+
- #include <asm/au1xxx_psc.h>
- #include <asm/au1xxx_dbdma.h>
-
-@@ -98,13 +137,51 @@
- * 0 = no VRA, 1 = use VRA if codec supports it
- * The framework is here, but we currently force no VRA.
- */
-+#if defined(CONFIG_MIPS_PB1200) | defined(CONFIG_MIPS_PB1550)
- static int vra = 0;
-+#elif defined(CONFIG_MIPS_FICMMP)
-+static int vra = 1;
-+#endif
-+
-+#define WM_REG_L_HEADPHONE_OUT 0x02
-+#define WM_REG_R_HEADPHONE_OUT 0x03
-+#define WM_REG_ANALOGUE_AUDIO_PATH_CTRL 0x04
-+#define WM_REG_DIGITAL_AUDIO_PATH_CTRL 0x05
-+#define WM_REG_POWER_DOWN_CTRL 0x06
-+#define WM_REG_DIGITAL_AUDIO_IF 0x07
-+#define WM_REG_SAMPLING_CONTROL 0x08
-+#define WM_REG_ACTIVE_CTRL 0x09
-+#define WM_REG_RESET 0x0F
-+#define WM_SC_SR_96000 (0x7<<2)
-+#define WM_SC_SR_88200 (0xF<<2)
-+#define WM_SC_SR_48000 (0x0<<2)
-+#define WM_SC_SR_44100 (0x8<<2)
-+#define WM_SC_SR_32000 (0x6<<2)
-+#define WM_SC_SR_8018 (0x9<<2)
-+#define WM_SC_SR_8000 (0x1<<2)
-+#define WM_SC_MODE_USB 1
-+#define WM_SC_MODE_NORMAL 0
-+#define WM_SC_BOSR_250FS (0<<1)
-+#define WM_SC_BOSR_272FS (1<<1)
-+#define WM_SC_BOSR_256FS (0<<1)
-+#define WM_SC_BOSR_128FS (0<<1)
-+#define WM_SC_BOSR_384FS (1<<1)
-+#define WM_SC_BOSR_192FS (1<<1)
-+
-+#define WS_64FS 31
-+#define WS_96FS 47
-+#define WS_128FS 63
-+#define WS_192FS 95
-+
-+#define MIN_Q_COUNT 2
-+
- MODULE_PARM(vra, "i");
- MODULE_PARM_DESC(vra, "if 1 use VRA if codec supports it");
-
- static struct au1550_state {
- /* soundcore stuff */
- int dev_audio;
-+ int dev_mixer;
-
- spinlock_t lock;
- struct semaphore open_sem;
-@@ -114,6 +191,11 @@
- int no_vra;
- volatile psc_i2s_t *psc_addr;
-
-+ int level_line;
-+ int level_mic;
-+ int level_left;
-+ int level_right;
-+
- struct dmabuf {
- u32 dmanr;
- unsigned sample_rate;
-@@ -195,60 +277,224 @@
- }
- }
-
--/* Just a place holder. The Wolfson codec is a write only device,
-- * so we would have to keep a local copy of the data.
-- */
--#if 0
--static u8
--rdcodec(u8 addr)
--{
-- return 0 /* data */;
--}
--#endif
--
--
- static void
--wrcodec(u8 ctlreg, u8 val)
-+wrcodec(u8 ctlreg, u16 val)
- {
- int rcnt;
- extern int pb1550_wm_codec_write(u8 addr, u8 reg, u8 val);
--
- /* The codec is a write only device, with a 16-bit control/data
- * word. Although it is written as two bytes on the I2C, the
- * format is actually 7 bits of register and 9 bits of data.
- * The ls bit of the first byte is the ms bit of the data.
- */
- rcnt = 0;
-- while ((pb1550_wm_codec_write((0x36 >> 1), ctlreg, val) != 1)
-- && (rcnt < 50)) {
-+ while ((pb1550_wm_codec_write((0x36 >> 1),
-+ (ctlreg << 1) | ((val >> 8) & 0x01),
-+ (u8) (val & 0x00FF)) != 1) &&
-+ (rcnt < 50)) {
- rcnt++;
--#if 0
-- printk("Codec write retry %02x %02x\n", ctlreg, val);
--#endif
- }
-+
-+ au1550_delay(10);
-+}
-+
-+static int
-+au1550_open_mixdev(struct inode *inode, struct file *file)
-+{
-+ file->private_data = &au1550_state;
-+ return 0;
-+}
-+
-+static int
-+au1550_release_mixdev(struct inode *inode, struct file *file)
-+{
-+ return 0;
-+}
-+
-+static int wm_i2s_read_mixer(struct au1550_state *s, int oss_channel)
-+{
-+ int ret = 0;
-+
-+ if (WM_I2S_STEREO_MASK & (1 << oss_channel)) {
-+ /* nice stereo mixers .. */
-+
-+ ret = s->level_left | (s->level_right << 8);
-+ } else if (oss_channel == SOUND_MIXER_MIC) {
-+ ret = 0;
-+ /* TODO: Implement read mixer for input/output codecs */
-+ }
-+
-+ return ret;
- }
-
-+static void wm_i2s_write_mixer(struct au1550_state *s, int oss_channel, unsigned int left, unsigned int right)
-+{
-+ if (WM_I2S_STEREO_MASK & (1 << oss_channel)) {
-+ /* stereo mixers */
-+ s->level_left = left;
-+ s->level_right = right;
-+
-+ right = (right * WM_VOLUME_SCALE) / 100;
-+ left = (left * WM_VOLUME_SCALE) / 100;
-+ if (right > WM_VOLUME_SCALE)
-+ right = WM_VOLUME_SCALE;
-+ if (left > WM_VOLUME_SCALE)
-+ left = WM_VOLUME_SCALE;
-+
-+ right += WM_VOLUME_MIN;
-+ left += WM_VOLUME_MIN;
-+
-+ wrcodec(WM_REG_L_HEADPHONE_OUT, left);
-+ wrcodec(WM_REG_R_HEADPHONE_OUT, right);
-+
-+ }else if (oss_channel == SOUND_MIXER_MIC) {
-+ /* TODO: implement write mixer for input/output codecs */
-+ }
-+}
-+
-+/* a thin wrapper for write_mixer */
-+static void wm_i2s_set_mixer(struct au1550_state *s, unsigned int oss_mixer, unsigned int val )
-+{
-+ unsigned int left,right;
-+
-+ /* cleanse input a little */
-+ right = ((val >> 8) & 0xff) ;
-+ left = (val & 0xff) ;
-+
-+ if (right > 100) right = 100;
-+ if (left > 100) left = 100;
-+
-+ wm_i2s_write_mixer(s, oss_mixer, left, right);
-+}
-+
-+static int
-+au1550_ioctl_mixdev(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
-+{
-+ struct au1550_state *s = (struct au1550_state *)file->private_data;
-+
-+ int i, val = 0;
-+
-+ if (cmd == SOUND_MIXER_INFO) {
-+ mixer_info info;
-+ strncpy(info.id, CODEC_NAME, sizeof(info.id));
-+ strncpy(info.name, CODEC_NAME, sizeof(info.name));
-+ info.modify_counter = 0;
-+ if (copy_to_user((void *)arg, &info, sizeof(info)))
-+ return -EFAULT;
-+ return 0;
-+ }
-+ if (cmd == SOUND_OLD_MIXER_INFO) {
-+ _old_mixer_info info;
-+ strncpy(info.id, CODEC_NAME, sizeof(info.id));
-+ strncpy(info.name, CODEC_NAME, sizeof(info.name));
-+ if (copy_to_user((void *)arg, &info, sizeof(info)))
-+ return -EFAULT;
-+ return 0;
-+ }
-+
-+ if (_IOC_TYPE(cmd) != 'M' || _SIOC_SIZE(cmd) != sizeof(int))
-+ return -EINVAL;
-+
-+ if (cmd == OSS_GETVERSION)
-+ return put_user(SOUND_VERSION, (int *)arg);
-+
-+ if (_SIOC_DIR(cmd) == _SIOC_READ) {
-+ switch (_IOC_NR(cmd)) {
-+ case SOUND_MIXER_RECSRC: /* give them the current record src */
-+ val = 0;
-+ /*
-+ if (!codec->recmask_io) {
-+ val = 0;
-+ } else {
-+ val = codec->recmask_io(codec, 1, 0);
-+ }*/
-+ break;
-+
-+ case SOUND_MIXER_DEVMASK: /* give them the supported mixers */
-+ val = WM_I2S_SUPPORTED_MASK;
-+ break;
-+
-+ case SOUND_MIXER_RECMASK:
-+ /* Arg contains a bit for each supported recording
-+ * source */
-+ val = WM_I2S_RECORD_MASK;
-+ break;
-+
-+ case SOUND_MIXER_STEREODEVS:
-+ /* Mixer channels supporting stereo */
-+ val = WM_I2S_STEREO_MASK;
-+ break;
-+
-+ case SOUND_MIXER_CAPS:
-+ val = SOUND_CAP_EXCL_INPUT;
-+ break;
-+
-+ default: /* read a specific mixer */
-+ i = _IOC_NR(cmd);
-+
-+ if (!supported_mixer(i))
-+ return -EINVAL;
-+
-+ val = wm_i2s_read_mixer(s, i);
-+ break;
-+ }
-+ return put_user(val, (int *)arg);
-+ }
-+
-+ if (_SIOC_DIR(cmd) == (_SIOC_WRITE|_SIOC_READ)) {
-+ if (get_user(val, (int *)arg))
-+ return -EFAULT;
-+
-+ switch (_IOC_NR(cmd)) {
-+ case SOUND_MIXER_RECSRC:
-+ /* Arg contains a bit for each recording source */
-+ if (!WM_I2S_RECORD_MASK)
-+ return -EINVAL;
-+ if (!val)
-+ return 0;
-+ if (!(val &= WM_I2S_RECORD_MASK))
-+ return -EINVAL;
-+
-+ return 0;
-+ default: /* write a specific mixer */
-+ i = _IOC_NR(cmd);
-+
-+ if (!supported_mixer(i))
-+ return -EINVAL;
-+
-+ wm_i2s_set_mixer(s, i, val);
-+
-+ return 0;
-+ }
-+}
-+ return -EINVAL;
-+}
-+
-+static loff_t
-+au1550_llseek(struct file *file, loff_t offset, int origin)
-+{
-+ return -ESPIPE;
-+}
-+
-+static /*const */ struct file_operations au1550_mixer_fops = {
-+ owner:THIS_MODULE,
-+ llseek:au1550_llseek,
-+ ioctl:au1550_ioctl_mixdev,
-+ open:au1550_open_mixdev,
-+ release:au1550_release_mixdev,
-+};
-+
- void
--codec_init(void)
-+codec_init(struct au1550_state *s)
- {
-- wrcodec(0x1e, 0x00); /* Reset */
-- au1550_delay(200);
-- wrcodec(0x0c, 0x00); /* Power up everything */
-- au1550_delay(10);
-- wrcodec(0x12, 0x00); /* Deactivate codec */
-- au1550_delay(10);
-- wrcodec(0x08, 0x10); /* Select DAC outputs to line out */
-- au1550_delay(10);
-- wrcodec(0x0a, 0x00); /* Disable output mute */
-- au1550_delay(10);
-- wrcodec(0x05, 0x70); /* lower output volume on headphone */
-- au1550_delay(10);
-- wrcodec(0x0e, 0x02); /* Set slave, 16-bit, I2S modes */
-- au1550_delay(10);
-- wrcodec(0x10, 0x01); /* 12MHz (USB), 250fs */
-- au1550_delay(10);
-- wrcodec(0x12, 0x01); /* Activate codec */
-- au1550_delay(10);
-+ wrcodec(WM_REG_RESET, 0x00); /* Reset */
-+ wrcodec(WM_REG_POWER_DOWN_CTRL, 0x00); /* Power up everything */
-+ wrcodec(WM_REG_ACTIVE_CTRL, 0x00); /* Deactivate codec */
-+ wrcodec(WM_REG_ANALOGUE_AUDIO_PATH_CTRL, 0x10); /* Select DAC outputs to line out */
-+ wrcodec(WM_REG_DIGITAL_AUDIO_PATH_CTRL, 0x00); /* Disable output mute */
-+ wm_i2s_write_mixer(s, SOUND_MIXER_PCM, 74, 74);
-+ wrcodec(WM_REG_DIGITAL_AUDIO_IF, 0x02); /* Set slave, 16-bit, I2S modes */
-+ wrcodec(WM_REG_ACTIVE_CTRL, 0x01); /* Activate codec */
- }
-
- /* stop the ADC before calling */
-@@ -256,27 +502,16 @@
- set_adc_rate(struct au1550_state *s, unsigned rate)
- {
- struct dmabuf *adc = &s->dma_adc;
-- struct dmabuf *dac = &s->dma_dac;
-
-- if (s->no_vra) {
-- /* calc SRC factor
-- */
-+ #if defined(WM_MODE_USB)
- adc->src_factor = (((SAMP_RATE*2) / rate) + 1) >> 1;
- adc->sample_rate = SAMP_RATE / adc->src_factor;
- return;
-- }
-+ #else
-+ //TODO: Need code for normal mode
-+ #endif
-
- adc->src_factor = 1;
--
--
--#if 0
-- rate = rate > SAMP_RATE ? SAMP_RATE : rate;
--
-- wrcodec(0, 0); /* I don't yet know what to write here if we vra */
--
-- adc->sample_rate = rate;
-- dac->sample_rate = rate;
--#endif
- }
-
- /* stop the DAC before calling */
-@@ -284,26 +519,89 @@
- set_dac_rate(struct au1550_state *s, unsigned rate)
- {
- struct dmabuf *dac = &s->dma_dac;
-- struct dmabuf *adc = &s->dma_adc;
-
-- if (s->no_vra) {
-- /* calc SRC factor
-- */
-- dac->src_factor = (((SAMP_RATE*2) / rate) + 1) >> 1;
-- dac->sample_rate = SAMP_RATE / dac->src_factor;
-- return;
-+ u16 sr, ws, div, bosr, mode;
-+ volatile psc_i2s_t* ip = (volatile psc_i2s_t *)I2S_PSC_BASE;
-+ u32 cfg;
-+
-+ #if defined(CONFIG_MIPS_FICMMP)
-+ rate = ficmmp_set_i2s_sample_rate(rate);
-+ #endif
-+
-+ switch(rate)
-+ {
-+ case 96000:
-+ sr = WM_SC_SR_96000;
-+ ws = WS_64FS;
-+ div = PSC_I2SCFG_DIV2;
-+ break;
-+ case 88200:
-+ sr = WM_SC_SR_88200;
-+ ws = WS_64FS;
-+ div = PSC_I2SCFG_DIV2;
-+ break;
-+ case 44100:
-+ sr = WM_SC_SR_44100;
-+ ws = WS_128FS;
-+ div = PSC_I2SCFG_DIV2;
-+ break;
-+ case 48000:
-+ sr = WM_SC_SR_48000;
-+ ws = WS_128FS;
-+ div = PSC_I2SCFG_DIV2;
-+ break;
-+ case 32000:
-+ sr = WM_SC_SR_32000;
-+ ws = WS_96FS;
-+ div = PSC_I2SCFG_DIV4;
-+ break;
-+ case 8018:
-+ sr = WM_SC_SR_8018;
-+ ws = WS_128FS;
-+ div = PSC_I2SCFG_DIV2;
-+ break;
-+ case 8000:
-+ default:
-+ sr = WM_SC_SR_8000;
-+ ws = WS_96FS;
-+ div = PSC_I2SCFG_DIV16;
-+ break;
- }
-
-+ #if defined(WM_MODE_USB)
-+ mode = WM_SC_MODE_USB;
-+ #else
-+ mode = WM_SC_MODE_NORMAL;
-+ #endif
-+
-+ bosr = 0;
-+
- dac->src_factor = 1;
-+ dac->sample_rate = rate;
-
--#if 0
-- rate = rate > SAMP_RATE ? SAMP_RATE : rate;
-+ /* Deactivate codec */
-+ wrcodec(WM_REG_ACTIVE_CTRL, 0x00);
-
-- wrcodec(0, 0); /* I don't yet know what to write here if we vra */
-+ /* Disable I2S controller */
-+ ip->psc_i2scfg &= ~PSC_I2SCFG_DE_ENABLE;
-+ /* Wait for device disabled */
-+ while ((ip->psc_i2sstat & PSC_I2SSTAT_DR) == 1);
-+
-+ cfg = ip->psc_i2scfg;
-+ /* Clear WS and DIVIDER values */
-+ cfg &= ~(PSC_I2SCFG_WS_MASK | PSC_I2SCFG_DIV_MASK);
-+ cfg |= PSC_I2SCFG_WS(ws) | div;
-+ /* Reconfigure and enable */
-+ ip->psc_i2scfg = cfg | PSC_I2SCFG_DE_ENABLE;
-
-- adc->sample_rate = rate;
-- dac->sample_rate = rate;
--#endif
-+ /* Wait for device enabled */
-+ while ((ip->psc_i2sstat & PSC_I2SSTAT_DR) == 0);
-+
-+ /* Set appropriate sampling rate */
-+ wrcodec(WM_REG_SAMPLING_CONTROL, bosr | mode | sr);
-+
-+ /* Activate codec */
-+ wrcodec(WM_REG_ACTIVE_CTRL, 0x01);
- }
-
- static void
-@@ -354,8 +652,7 @@
- ip->psc_i2spcr = PSC_I2SPCR_RP;
- au_sync();
-
-- /* Wait for Receive Busy to show disabled.
-- */
-+ /* Wait for Receive Busy to show disabled. */
- do {
- stat = ip->psc_i2sstat;
- au_sync();
-@@ -463,7 +760,6 @@
- if (db->num_channels == 1)
- db->cnt_factor *= 2;
- db->cnt_factor *= db->src_factor;
--
- db->count = 0;
- db->dma_qcount = 0;
- db->nextIn = db->nextOut = db->rawbuf;
-@@ -546,12 +842,13 @@
- if (i2s_stat & (PSC_I2SSTAT_TF | PSC_I2SSTAT_TR | PSC_I2SSTAT_TF))
- dbg("I2S status = 0x%08x", i2s_stat);
- #endif
-+
- db->dma_qcount--;
-
- if (db->count >= db->fragsize) {
-- if (au1xxx_dbdma_put_source(db->dmanr, db->nextOut,
-- db->fragsize) == 0) {
-- err("qcount < 2 and no ring room!");
-+ if (au1xxx_dbdma_put_source(db->dmanr, db->nextOut, db->fragsize) == 0)
-+ {
-+ err("qcount < MIN_Q_COUNT and no ring room!");
- }
- db->nextOut += db->fragsize;
- if (db->nextOut >= db->rawbuf + db->dmasize)
-@@ -606,65 +903,43 @@
-
- }
-
--static loff_t
--au1550_llseek(struct file *file, loff_t offset, int origin)
--{
-- return -ESPIPE;
--}
--
--
--#if 0
--static int
--au1550_open_mixdev(struct inode *inode, struct file *file)
--{
-- file->private_data = &au1550_state;
-- return 0;
--}
--
--static int
--au1550_release_mixdev(struct inode *inode, struct file *file)
--{
-- return 0;
--}
--
--static int
--mixdev_ioctl(struct ac97_codec *codec, unsigned int cmd,
-- unsigned long arg)
--{
-- return codec->mixer_ioctl(codec, cmd, arg);
--}
--
--static int
--au1550_ioctl_mixdev(struct inode *inode, struct file *file,
-- unsigned int cmd, unsigned long arg)
--{
-- struct au1550_state *s = (struct au1550_state *)file->private_data;
-- struct ac97_codec *codec = s->codec;
--
-- return mixdev_ioctl(codec, cmd, arg);
--}
--
--static /*const */ struct file_operations au1550_mixer_fops = {
-- owner:THIS_MODULE,
-- llseek:au1550_llseek,
-- ioctl:au1550_ioctl_mixdev,
-- open:au1550_open_mixdev,
-- release:au1550_release_mixdev,
--};
--#endif
--
- static int
- drain_dac(struct au1550_state *s, int nonblock)
- {
- unsigned long flags;
- int count, tmo;
-
-+ struct dmabuf *db = &s->dma_dac;
-+
-+ //DPRINTF();
- if (s->dma_dac.mapped || !s->dma_dac.ready || s->dma_dac.stopped)
- return 0;
-
- for (;;) {
- spin_lock_irqsave(&s->lock, flags);
-- count = s->dma_dac.count;
-+ count = db->count;
-+
-+ /* Pad the ddma buffer with zeros if the amount remaining
-+ * is not a multiple of fragsize */
-+ if(count % db->fragsize != 0)
-+ {
-+ int pad = db->fragsize - (count % db->fragsize);
-+ char* bufptr = db->nextIn;
-+ char* bufend = db->rawbuf + db->dmasize;
-+
-+ if((bufend - bufptr) < pad)
-+ printk("Error! ddma padding is bigger than available ring space!\n");
-+ else
-+ {
-+ memset((void*)bufptr, 0, pad);
-+ count += pad;
-+ db->nextIn += pad;
-+ db->count += pad;
-+ if (db->dma_qcount == 0)
-+ start_dac(s);
-+ db->dma_qcount++;
-+ }
-+ }
- spin_unlock_irqrestore(&s->lock, flags);
- if (count <= 0)
- break;
-@@ -672,9 +947,9 @@
- break;
- if (nonblock)
- return -EBUSY;
-- tmo = 1000 * count / (s->no_vra ?
-- SAMP_RATE : s->dma_dac.sample_rate);
-+ tmo = 1000 * count / s->dma_dac.sample_rate;
- tmo /= s->dma_dac.dma_bytes_per_sample;
-+
- au1550_delay(tmo);
- }
- if (signal_pending(current))
-@@ -698,8 +973,7 @@
- * If interpolating (no VRA), duplicate every audio frame src_factor times.
- */
- static int
--translate_from_user(struct dmabuf *db, char* dmabuf, char* userbuf,
-- int dmacount)
-+translate_from_user(struct dmabuf *db, char* dmabuf, char* userbuf, int dmacount)
- {
- int sample, i;
- int interp_bytes_per_sample;
-@@ -737,11 +1011,12 @@
-
- /* duplicate every audio frame src_factor times
- */
-- for (i = 0; i < db->src_factor; i++)
-+ for (i = 0; i < db->src_factor; i++) {
- memcpy(dmabuf, dmasample, db->dma_bytes_per_sample);
-+ dmabuf += interp_bytes_per_sample;
-+ }
-
- userbuf += db->user_bytes_per_sample;
-- dmabuf += interp_bytes_per_sample;
- }
-
- return num_samples * interp_bytes_per_sample;
-@@ -996,15 +1271,14 @@
- * on the dma queue. If the queue count reaches zero,
- * we know the dma has stopped.
- */
-- while ((db->dma_qcount < 2) && (db->count >= db->fragsize)) {
-+ while ((db->dma_qcount < MIN_Q_COUNT) && (db->count >= db->fragsize)) {
- if (au1xxx_dbdma_put_source(db->dmanr, db->nextOut,
- db->fragsize) == 0) {
-- err("qcount < 2 and no ring room!");
-+ err("qcount < MIN_Q_COUNT and no ring room!");
- }
- db->nextOut += db->fragsize;
- if (db->nextOut >= db->rawbuf + db->dmasize)
- db->nextOut -= db->dmasize;
-- db->count -= db->fragsize;
- db->total_bytes += db->dma_fragsize;
- if (db->dma_qcount == 0)
- start_dac(s);
-@@ -1017,7 +1291,6 @@
- buffer += usercnt;
- ret += usercnt;
- } /* while (count > 0) */
--
- out:
- up(&s->sem);
- out2:
-@@ -1371,9 +1644,6 @@
- s->dma_dac.cnt_factor;
- abinfo.fragstotal = s->dma_dac.numfrag;
- abinfo.fragments = abinfo.bytes >> s->dma_dac.fragshift;
--#ifdef AU1000_VERBOSE_DEBUG
-- dbg("bytes=%d, fragments=%d", abinfo.bytes, abinfo.fragments);
--#endif
- return copy_to_user((void *) arg, &abinfo,
- sizeof(abinfo)) ? -EFAULT : 0;
-
-@@ -1536,13 +1806,9 @@
- case SNDCTL_DSP_SETSYNCRO:
- case SOUND_PCM_READ_FILTER:
- return -EINVAL;
-+ default: break;
- }
--
--#if 0
-- return mixdev_ioctl(s->codec, cmd, arg);
--#else
- return 0;
--#endif
- }
-
-
-@@ -1664,15 +1930,15 @@
- MODULE_AUTHOR("Advanced Micro Devices (AMD), dan@embeddededge.com");
- MODULE_DESCRIPTION("Au1550 Audio Driver");
-
-+#if defined(WM_MODE_USB)
- /* Set up an internal clock for the PSC3. This will then get
- * driven out of the Au1550 as the master.
- */
- static void
- intclk_setup(void)
- {
-- uint clk, rate, stat;
--
-- /* Wire up Freq4 as a clock for the PSC3.
-+ uint clk, rate;
-+ /* Wire up Freq4 as a clock for the PSC.
- * We know SMBus uses Freq3.
- * By making changes to this rate, plus the word strobe
- * size, we can make fine adjustments to the actual data rate.
-@@ -1700,11 +1966,17 @@
- */
- clk = au_readl(SYS_CLKSRC);
- au_sync();
-+#if defined(CONFIG_SOC_AU1550)
- clk &= ~0x01f00000;
- clk |= (6 << 22);
-+#elif defined(CONFIG_SOC_AU1200)
-+ clk &= ~0x3e000000;
-+ clk |= (6 << 27);
-+#endif
- au_writel(clk, SYS_CLKSRC);
- au_sync();
- }
-+#endif
-
- static int __devinit
- au1550_probe(void)
-@@ -1724,6 +1996,11 @@
- init_MUTEX(&s->open_sem);
- spin_lock_init(&s->lock);
-
-+ /* CPLD Mux for I2s */
-+
-+#if defined(CONFIG_MIPS_PB1200)
-+ bcsr->resets |= BCSR_RESETS_PCS1MUX;
-+#endif
-
- s->psc_addr = (volatile psc_i2s_t *)I2S_PSC_BASE;
- ip = s->psc_addr;
-@@ -1765,9 +2042,8 @@
-
- if ((s->dev_audio = register_sound_dsp(&au1550_audio_fops, -1)) < 0)
- goto err_dev1;
--#if 0
-- if ((s->codec->dev_mixer =
-- register_sound_mixer(&au1550_mixer_fops, -1)) < 0)
-+#if 1
-+ if ((s->dev_mixer = register_sound_mixer(&au1550_mixer_fops, -1)) < 0)
- goto err_dev2;
- #endif
-
-@@ -1777,7 +2053,6 @@
- proc_au1550_dump, NULL);
- #endif /* AU1550_DEBUG */
-
-- intclk_setup();
-
- /* The GPIO for the appropriate PSC was configured by the
- * board specific start up.
-@@ -1786,7 +2061,12 @@
- */
- ip->psc_ctrl = PSC_CTRL_DISABLE; /* Disable PSC */
- au_sync();
-+#if defined(WM_MODE_USB)
-+ intclk_setup();
- ip->psc_sel = (PSC_SEL_CLK_INTCLK | PSC_SEL_PS_I2SMODE);
-+#else
-+ ip->psc_sel = (PSC_SEL_CLK_EXTCLK | PSC_SEL_PS_I2SMODE);
-+#endif
- au_sync();
-
- /* Enable PSC
-@@ -1806,42 +2086,18 @@
- * Actual I2S mode (first bit delayed by one clock).
- * Master mode (We provide the clock from the PSC).
- */
-- val = PSC_I2SCFG_SET_LEN(16);
--#ifdef TRY_441KHz
-- /* This really should be 250, but it appears that all of the
-- * PLLs, dividers and so on in the chain shift it. That's the
-- * problem with sourceing the clock instead of letting the very
-- * stable codec provide it. But, the PSC doesn't appear to want
-- * to work in slave mode, so this is what we get. It's not
-- * studio quality timing, but it's good enough for listening
-- * to mp3s.
-- */
-- val |= PSC_I2SCFG_SET_WS(252);
--#else
-- val |= PSC_I2SCFG_SET_WS(250);
--#endif
-- val |= PSC_I2SCFG_RT_FIFO8 | PSC_I2SCFG_TT_FIFO8 | \
-+
-+ val = PSC_I2SCFG_SET_LEN(16) | PSC_I2SCFG_WS(WS_128FS) | PSC_I2SCFG_RT_FIFO8 | PSC_I2SCFG_TT_FIFO8 | \
- PSC_I2SCFG_BI | PSC_I2SCFG_XM;
-
-- ip->psc_i2scfg = val;
-- au_sync();
-- val |= PSC_I2SCFG_DE_ENABLE;
-- ip->psc_i2scfg = val;
-- au_sync();
-+ ip->psc_i2scfg = val | PSC_I2SCFG_DE_ENABLE;
-
-- /* Wait for Device ready.
-- */
-- do {
-- val = ip->psc_i2sstat;
-- au_sync();
-- } while ((val & PSC_I2SSTAT_DR) == 0);
-+ set_dac_rate(s, 8000); //Set default rate
-
-- val = ip->psc_i2scfg;
-- au_sync();
-+ codec_init(s);
-
-- codec_init();
-+ s->no_vra = vra ? 0 : 1;
-
-- s->no_vra = 1;
- if (s->no_vra)
- info("no VRA, interpolating and decimating");
-
-@@ -1866,6 +2122,8 @@
- err_dev2:
- unregister_sound_dsp(s->dev_audio);
- #endif
-+ err_dev2:
-+ unregister_sound_dsp(s->dev_audio);
- err_dev1:
- au1xxx_dbdma_chan_free(s->dma_adc.dmanr);
- err_dma2:
-diff -Nur linux-2.4.32-rc1/drivers/sound/au1550_psc.c linux-2.4.32-rc1.mips/drivers/sound/au1550_psc.c
---- linux-2.4.32-rc1/drivers/sound/au1550_psc.c 2005-01-19 15:10:04.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/sound/au1550_psc.c 2005-01-30 09:01:28.000000000 +0100
-@@ -30,6 +30,7 @@
- * 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-+
- #include <linux/version.h>
- #include <linux/module.h>
- #include <linux/string.h>
-@@ -63,6 +64,14 @@
- #include <asm/db1x00.h>
- #endif
-
-+#ifdef CONFIG_MIPS_PB1200
-+#include <asm/pb1200.h>
-+#endif
-+
-+#ifdef CONFIG_MIPS_DB1200
-+#include <asm/db1200.h>
-+#endif
-+
- #undef OSS_DOCUMENTED_MIXER_SEMANTICS
-
- #define AU1550_MODULE_NAME "Au1550 psc audio"
-@@ -521,7 +530,14 @@
- spin_unlock_irqrestore(&s->lock, flags);
- }
-
--
-+/*
-+ NOTE: The xmit slots cannot be changed on the fly when in full-duplex
-+ because the AC'97 block must be stopped/started. When using this driver
-+ in full-duplex (in & out at the same time), the DMA engine will stop if
-+ you disable the block.
-+ TODO: change implementation to properly restart adc/dac after setting
-+ xmit slots.
-+*/
- static void
- set_xmit_slots(int num_channels)
- {
-@@ -565,6 +581,14 @@
- } while ((stat & PSC_AC97STAT_DR) == 0);
- }
-
-+/*
-+ NOTE: The recv slots cannot be changed on the fly when in full-duplex
-+ because the AC'97 block must be stopped/started. When using this driver
-+ in full-duplex (in & out at the same time), the DMA engine will stop if
-+ you disable the block.
-+ TODO: change implementation to properly restart adc/dac after setting
-+ recv slots.
-+*/
- static void
- set_recv_slots(int num_channels)
- {
-@@ -608,7 +632,6 @@
-
- spin_lock_irqsave(&s->lock, flags);
-
-- set_xmit_slots(db->num_channels);
- au_writel(PSC_AC97PCR_TC, PSC_AC97PCR);
- au_sync();
- au_writel(PSC_AC97PCR_TS, PSC_AC97PCR);
-@@ -640,7 +663,6 @@
- db->nextIn -= db->dmasize;
- }
-
-- set_recv_slots(db->num_channels);
- au1xxx_dbdma_start(db->dmanr);
- au_writel(PSC_AC97PCR_RC, PSC_AC97PCR);
- au_sync();
-@@ -752,12 +774,16 @@
- if (ac97c_stat & (AC97C_XU | AC97C_XO | AC97C_TE))
- dbg("AC97C status = 0x%08x", ac97c_stat);
- #endif
-+ /* There is a possiblity that we are getting 1 interrupt for
-+ multiple descriptors. Use ddma api to find out how many
-+ completed.
-+ */
- db->dma_qcount--;
-
- if (db->count >= db->fragsize) {
- if (au1xxx_dbdma_put_source(db->dmanr, db->nextOut,
- db->fragsize) == 0) {
-- err("qcount < 2 and no ring room!");
-+ err("qcount < 2 and no ring room1!");
- }
- db->nextOut += db->fragsize;
- if (db->nextOut >= db->rawbuf + db->dmasize)
-@@ -941,11 +967,12 @@
-
- /* duplicate every audio frame src_factor times
- */
-- for (i = 0; i < db->src_factor; i++)
-+ for (i = 0; i < db->src_factor; i++) {
- memcpy(dmabuf, dmasample, db->dma_bytes_per_sample);
-+ dmabuf += interp_bytes_per_sample;
-+ }
-
- userbuf += db->user_bytes_per_sample;
-- dmabuf += interp_bytes_per_sample;
- }
-
- return num_samples * interp_bytes_per_sample;
-@@ -1203,7 +1230,7 @@
- while ((db->dma_qcount < 2) && (db->count >= db->fragsize)) {
- if (au1xxx_dbdma_put_source(db->dmanr, db->nextOut,
- db->fragsize) == 0) {
-- err("qcount < 2 and no ring room!");
-+ err("qcount < 2 and no ring room!0");
- }
- db->nextOut += db->fragsize;
- if (db->nextOut >= db->rawbuf + db->dmasize)
-@@ -1481,6 +1508,7 @@
- return -EINVAL;
- stop_adc(s);
- s->dma_adc.num_channels = val;
-+ set_recv_slots(val);
- if ((ret = prog_dmabuf_adc(s)))
- return ret;
- }
-@@ -1538,6 +1566,7 @@
- }
-
- s->dma_dac.num_channels = val;
-+ set_xmit_slots(val);
- if ((ret = prog_dmabuf_dac(s)))
- return ret;
- }
-@@ -1832,10 +1861,8 @@
- down(&s->open_sem);
- }
-
-- stop_dac(s);
-- stop_adc(s);
--
- if (file->f_mode & FMODE_READ) {
-+ stop_adc(s);
- s->dma_adc.ossfragshift = s->dma_adc.ossmaxfrags =
- s->dma_adc.subdivision = s->dma_adc.total_bytes = 0;
- s->dma_adc.num_channels = 1;
-@@ -1846,6 +1873,7 @@
- }
-
- if (file->f_mode & FMODE_WRITE) {
-+ stop_dac(s);
- s->dma_dac.ossfragshift = s->dma_dac.ossmaxfrags =
- s->dma_dac.subdivision = s->dma_dac.total_bytes = 0;
- s->dma_dac.num_channels = 1;
-@@ -2091,6 +2119,9 @@
- ac97_read_proc, &s->codec);
- #endif
-
-+ set_xmit_slots(1);
-+ set_recv_slots(1);
-+
- return 0;
-
- err_dev3:
-diff -Nur linux-2.4.32-rc1/drivers/sound/Config.in linux-2.4.32-rc1.mips/drivers/sound/Config.in
---- linux-2.4.32-rc1/drivers/sound/Config.in 2005-01-19 15:10:04.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/sound/Config.in 2005-04-21 07:53:07.000000000 +0200
-@@ -72,10 +72,15 @@
- if [ "$CONFIG_DDB5477" = "y" ]; then
- dep_tristate ' NEC Vrc5477 AC97 sound' CONFIG_SOUND_VRC5477 $CONFIG_SOUND
- fi
--if [ "$CONFIG_SOC_AU1X00" = "y" -o "$CONFIG_SOC_AU1500" = "y" ]; then
-- dep_tristate ' Au1x00 Sound' CONFIG_SOUND_AU1X00 $CONFIG_SOUND
-- dep_tristate ' Au1550 PSC Sound' CONFIG_SOUND_AU1550_PSC $CONFIG_SOUND
-- dep_tristate ' Au1550 I2S Sound' CONFIG_SOUND_AU1550_I2S $CONFIG_SOUND
-+if [ "$CONFIG_SOC_AU1000" = "y" -o \
-+ "$CONFIG_SOC_AU1500" = "y" -o \
-+ "$CONFIG_SOC_AU1100" = "y" ]; then
-+ dep_tristate ' Au1x00 AC97 Sound' CONFIG_SOUND_AU1X00 $CONFIG_SOUND
-+fi
-+if [ "$CONFIG_SOC_AU1550" = "y" -o \
-+ "$CONFIG_SOC_AU1200" = "y" ]; then
-+ dep_tristate ' Au1550/Au1200 PSC AC97 Sound' CONFIG_SOUND_AU1550_PSC $CONFIG_SOUND
-+ dep_tristate ' Au1550/Au1200 PSC I2S Sound' CONFIG_SOUND_AU1550_I2S $CONFIG_SOUND
- fi
-
- dep_tristate ' Trident 4DWave DX/NX, SiS 7018 or ALi 5451 PCI Audio Core' CONFIG_SOUND_TRIDENT $CONFIG_SOUND $CONFIG_PCI
-diff -Nur linux-2.4.32-rc1/drivers/tc/lk201.c linux-2.4.32-rc1.mips/drivers/tc/lk201.c
---- linux-2.4.32-rc1/drivers/tc/lk201.c 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/tc/lk201.c 2004-09-28 02:53:04.000000000 +0200
-@@ -5,7 +5,7 @@
- * for more details.
- *
- * Copyright (C) 1999-2002 Harald Koerfgen <hkoerfg@web.de>
-- * Copyright (C) 2001, 2002, 2003 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
-+ * Copyright (C) 2001, 2002, 2003, 2004 Maciej W. Rozycki
- */
-
- #include <linux/config.h>
-@@ -23,8 +23,8 @@
- #include <asm/keyboard.h>
- #include <asm/dec/tc.h>
- #include <asm/dec/machtype.h>
-+#include <asm/dec/serial.h>
-
--#include "zs.h"
- #include "lk201.h"
-
- /*
-@@ -55,19 +55,20 @@
- unsigned char kbd_sysrq_key = -1;
- #endif
-
--#define KEYB_LINE 3
-+#define KEYB_LINE_ZS 3
-+#define KEYB_LINE_DZ 0
-
--static int __init lk201_init(struct dec_serial *);
--static void __init lk201_info(struct dec_serial *);
--static void lk201_kbd_rx_char(unsigned char, unsigned char);
-+static int __init lk201_init(void *);
-+static void __init lk201_info(void *);
-+static void lk201_rx_char(unsigned char, unsigned char);
-
--struct zs_hook lk201_kbdhook = {
-+static struct dec_serial_hook lk201_hook = {
- .init_channel = lk201_init,
- .init_info = lk201_info,
- .rx_char = NULL,
- .poll_rx_char = NULL,
- .poll_tx_char = NULL,
-- .cflags = B4800 | CS8 | CSTOPB | CLOCAL
-+ .cflags = B4800 | CS8 | CSTOPB | CLOCAL,
- };
-
- /*
-@@ -93,28 +94,28 @@
- LK_CMD_ENB_BELL, LK_PARAM_VOLUME(4),
- };
-
--static struct dec_serial* lk201kbd_info;
-+static void *lk201_handle;
-
--static int lk201_send(struct dec_serial *info, unsigned char ch)
-+static int lk201_send(unsigned char ch)
- {
-- if (info->hook->poll_tx_char(info, ch)) {
-+ if (lk201_hook.poll_tx_char(lk201_handle, ch)) {
- printk(KERN_ERR "lk201: transmit timeout\n");
- return -EIO;
- }
- return 0;
- }
-
--static inline int lk201_get_id(struct dec_serial *info)
-+static inline int lk201_get_id(void)
- {
-- return lk201_send(info, LK_CMD_REQ_ID);
-+ return lk201_send(LK_CMD_REQ_ID);
- }
-
--static int lk201_reset(struct dec_serial *info)
-+static int lk201_reset(void)
- {
- int i, r;
-
- for (i = 0; i < sizeof(lk201_reset_string); i++) {
-- r = lk201_send(info, lk201_reset_string[i]);
-+ r = lk201_send(lk201_reset_string[i]);
- if (r < 0)
- return r;
- }
-@@ -203,24 +204,26 @@
-
- static int write_kbd_rate(struct kbd_repeat *rep)
- {
-- struct dec_serial* info = lk201kbd_info;
- int delay, rate;
- int i;
-
- delay = rep->delay / 5;
- rate = rep->rate;
- for (i = 0; i < 4; i++) {
-- if (info->hook->poll_tx_char(info, LK_CMD_RPT_RATE(i)))
-+ if (lk201_hook.poll_tx_char(lk201_handle,
-+ LK_CMD_RPT_RATE(i)))
- return 1;
-- if (info->hook->poll_tx_char(info, LK_PARAM_DELAY(delay)))
-+ if (lk201_hook.poll_tx_char(lk201_handle,
-+ LK_PARAM_DELAY(delay)))
- return 1;
-- if (info->hook->poll_tx_char(info, LK_PARAM_RATE(rate)))
-+ if (lk201_hook.poll_tx_char(lk201_handle,
-+ LK_PARAM_RATE(rate)))
- return 1;
- }
- return 0;
- }
-
--static int lk201kbd_rate(struct kbd_repeat *rep)
-+static int lk201_kbd_rate(struct kbd_repeat *rep)
- {
- if (rep == NULL)
- return -EINVAL;
-@@ -237,10 +240,8 @@
- return 0;
- }
-
--static void lk201kd_mksound(unsigned int hz, unsigned int ticks)
-+static void lk201_kd_mksound(unsigned int hz, unsigned int ticks)
- {
-- struct dec_serial* info = lk201kbd_info;
--
- if (!ticks)
- return;
-
-@@ -253,20 +254,19 @@
- ticks = 7;
- ticks = 7 - ticks;
-
-- if (info->hook->poll_tx_char(info, LK_CMD_ENB_BELL))
-+ if (lk201_hook.poll_tx_char(lk201_handle, LK_CMD_ENB_BELL))
- return;
-- if (info->hook->poll_tx_char(info, LK_PARAM_VOLUME(ticks)))
-+ if (lk201_hook.poll_tx_char(lk201_handle, LK_PARAM_VOLUME(ticks)))
- return;
-- if (info->hook->poll_tx_char(info, LK_CMD_BELL))
-+ if (lk201_hook.poll_tx_char(lk201_handle, LK_CMD_BELL))
- return;
- }
-
- void kbd_leds(unsigned char leds)
- {
-- struct dec_serial* info = lk201kbd_info;
- unsigned char l = 0;
-
-- if (!info) /* FIXME */
-+ if (!lk201_handle) /* FIXME */
- return;
-
- /* FIXME -- Only Hold and Lock LEDs for now. --macro */
-@@ -275,13 +275,13 @@
- if (leds & LED_CAP)
- l |= LK_LED_LOCK;
-
-- if (info->hook->poll_tx_char(info, LK_CMD_LEDS_ON))
-+ if (lk201_hook.poll_tx_char(lk201_handle, LK_CMD_LEDS_ON))
- return;
-- if (info->hook->poll_tx_char(info, LK_PARAM_LED_MASK(l)))
-+ if (lk201_hook.poll_tx_char(lk201_handle, LK_PARAM_LED_MASK(l)))
- return;
-- if (info->hook->poll_tx_char(info, LK_CMD_LEDS_OFF))
-+ if (lk201_hook.poll_tx_char(lk201_handle, LK_CMD_LEDS_OFF))
- return;
-- if (info->hook->poll_tx_char(info, LK_PARAM_LED_MASK(~l)))
-+ if (lk201_hook.poll_tx_char(lk201_handle, LK_PARAM_LED_MASK(~l)))
- return;
- }
-
-@@ -307,7 +307,7 @@
- return 0x80;
- }
-
--static void lk201_kbd_rx_char(unsigned char ch, unsigned char stat)
-+static void lk201_rx_char(unsigned char ch, unsigned char fl)
- {
- static unsigned char id[6];
- static int id_i;
-@@ -316,9 +316,8 @@
- static int prev_scancode;
- unsigned char c = scancodeRemap[ch];
-
-- if (stat && stat != TTY_OVERRUN) {
-- printk(KERN_ERR "lk201: keyboard receive error: 0x%02x\n",
-- stat);
-+ if (fl != TTY_NORMAL && fl != TTY_OVERRUN) {
-+ printk(KERN_ERR "lk201: keyboard receive error: 0x%02x\n", fl);
- return;
- }
-
-@@ -335,7 +334,7 @@
- /* OK, the power-up concluded. */
- lk201_report(id);
- if (id[2] == LK_STAT_PWRUP_OK)
-- lk201_get_id(lk201kbd_info);
-+ lk201_get_id();
- else {
- id_i = 0;
- printk(KERN_ERR "lk201: keyboard power-up "
-@@ -345,7 +344,7 @@
- /* We got the ID; report it and start operation. */
- id_i = 0;
- lk201_id(id);
-- lk201_reset(lk201kbd_info);
-+ lk201_reset();
- }
- return;
- }
-@@ -398,29 +397,28 @@
- tasklet_schedule(&keyboard_tasklet);
- }
-
--static void __init lk201_info(struct dec_serial *info)
-+static void __init lk201_info(void *handle)
- {
- }
-
--static int __init lk201_init(struct dec_serial *info)
-+static int __init lk201_init(void *handle)
- {
- /* First install handlers. */
-- lk201kbd_info = info;
-- kbd_rate = lk201kbd_rate;
-- kd_mksound = lk201kd_mksound;
-+ lk201_handle = handle;
-+ kbd_rate = lk201_kbd_rate;
-+ kd_mksound = lk201_kd_mksound;
-
-- info->hook->rx_char = lk201_kbd_rx_char;
-+ lk201_hook.rx_char = lk201_rx_char;
-
- /* Then just issue a reset -- the handlers will do the rest. */
-- lk201_send(info, LK_CMD_POWER_UP);
-+ lk201_send(LK_CMD_POWER_UP);
-
- return 0;
- }
-
- void __init kbd_init_hw(void)
- {
-- extern int register_zs_hook(unsigned int, struct zs_hook *);
-- extern int unregister_zs_hook(unsigned int);
-+ int keyb_line;
-
- /* Maxine uses LK501 at the Access.Bus. */
- if (!LK_IFACE)
-@@ -428,19 +426,15 @@
-
- printk(KERN_INFO "lk201: DECstation LK keyboard driver v0.05.\n");
-
-- if (LK_IFACE_ZS) {
-- /*
-- * kbd_init_hw() is being called before
-- * rs_init() so just register the kbd hook
-- * and let zs_init do the rest :-)
-- */
-- if(!register_zs_hook(KEYB_LINE, &lk201_kbdhook))
-- unregister_zs_hook(KEYB_LINE);
-- } else {
-- /*
-- * TODO: modify dz.c to allow similar hooks
-- * for LK201 handling on DS2100, DS3100, and DS5000/200
-- */
-- printk(KERN_ERR "lk201: support for DZ11 not yet ready.\n");
-- }
-+ /*
-+ * kbd_init_hw() is being called before
-+ * rs_init() so just register the kbd hook
-+ * and let zs_init do the rest :-)
-+ */
-+ if (LK_IFACE_ZS)
-+ keyb_line = KEYB_LINE_ZS;
-+ else
-+ keyb_line = KEYB_LINE_DZ;
-+ if (!register_dec_serial_hook(keyb_line, &lk201_hook))
-+ unregister_dec_serial_hook(keyb_line);
- }
-diff -Nur linux-2.4.32-rc1/drivers/tc/zs.c linux-2.4.32-rc1.mips/drivers/tc/zs.c
---- linux-2.4.32-rc1/drivers/tc/zs.c 2005-01-19 15:10:05.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/tc/zs.c 2004-12-27 05:13:50.000000000 +0100
-@@ -68,6 +68,8 @@
- #include <asm/bitops.h>
- #include <asm/uaccess.h>
- #include <asm/bootinfo.h>
-+#include <asm/dec/serial.h>
-+
- #ifdef CONFIG_DECSTATION
- #include <asm/dec/interrupts.h>
- #include <asm/dec/machtype.h>
-@@ -160,8 +162,8 @@
- #ifdef CONFIG_SERIAL_DEC_CONSOLE
- static struct console sercons;
- #endif
--#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) \
-- && !defined(MODULE)
-+#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && \
-+ !defined(MODULE)
- static unsigned long break_pressed; /* break, really ... */
- #endif
-
-@@ -196,7 +198,6 @@
- /*
- * Debugging.
- */
--#undef SERIAL_DEBUG_INTR
- #undef SERIAL_DEBUG_OPEN
- #undef SERIAL_DEBUG_FLOW
- #undef SERIAL_DEBUG_THROTTLE
-@@ -221,10 +222,6 @@
- static struct termios *serial_termios[NUM_CHANNELS];
- static struct termios *serial_termios_locked[NUM_CHANNELS];
-
--#ifndef MIN
--#define MIN(a,b) ((a) < (b) ? (a) : (b))
--#endif
--
- /*
- * tmp_buf is used as a temporary buffer by serial_write. We need to
- * lock it in case the copy_from_user blocks while swapping in a page,
-@@ -386,8 +383,6 @@
- * -----------------------------------------------------------------------
- */
-
--static int tty_break; /* Set whenever BREAK condition is detected. */
--
- /*
- * This routine is used by the interrupt handler to schedule
- * processing in the software interrupt portion of the driver.
-@@ -414,20 +409,15 @@
- if (!tty && (!info->hook || !info->hook->rx_char))
- continue;
-
-- if (tty_break) {
-- tty_break = 0;
--#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && !defined(MODULE)
-- if (info->line == sercons.index) {
-- if (!break_pressed) {
-- break_pressed = jiffies;
-- goto ignore_char;
-- }
-- break_pressed = 0;
-- }
--#endif
-+ flag = TTY_NORMAL;
-+ if (info->tty_break) {
-+ info->tty_break = 0;
- flag = TTY_BREAK;
- if (info->flags & ZILOG_SAK)
- do_SAK(tty);
-+ /* Ignore the null char got when BREAK is removed. */
-+ if (ch == 0)
-+ continue;
- } else {
- if (stat & Rx_OVR) {
- flag = TTY_OVERRUN;
-@@ -435,20 +425,22 @@
- flag = TTY_FRAME;
- } else if (stat & PAR_ERR) {
- flag = TTY_PARITY;
-- } else
-- flag = 0;
-- if (flag)
-+ }
-+ if (flag != TTY_NORMAL)
- /* reset the error indication */
- write_zsreg(info->zs_channel, R0, ERR_RES);
- }
-
--#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && !defined(MODULE)
-+#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && \
-+ !defined(MODULE)
- if (break_pressed && info->line == sercons.index) {
-- if (ch != 0 &&
-- time_before(jiffies, break_pressed + HZ*5)) {
-+ /* Ignore the null char got when BREAK is removed. */
-+ if (ch == 0)
-+ continue;
-+ if (time_before(jiffies, break_pressed + HZ * 5)) {
- handle_sysrq(ch, regs, NULL, NULL);
- break_pressed = 0;
-- goto ignore_char;
-+ continue;
- }
- break_pressed = 0;
- }
-@@ -459,23 +451,7 @@
- return;
- }
-
-- if (tty->flip.count >= TTY_FLIPBUF_SIZE) {
-- static int flip_buf_ovf;
-- ++flip_buf_ovf;
-- continue;
-- }
-- tty->flip.count++;
-- {
-- static int flip_max_cnt;
-- if (flip_max_cnt < tty->flip.count)
-- flip_max_cnt = tty->flip.count;
-- }
--
-- *tty->flip.flag_buf_ptr++ = flag;
-- *tty->flip.char_buf_ptr++ = ch;
--#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && !defined(MODULE)
-- ignore_char:
--#endif
-+ tty_insert_flip_char(tty, ch, flag);
- }
- if (tty)
- tty_flip_buffer_push(tty);
-@@ -517,11 +493,15 @@
- /* Get status from Read Register 0 */
- stat = read_zsreg(info->zs_channel, R0);
-
-- if (stat & BRK_ABRT) {
--#ifdef SERIAL_DEBUG_INTR
-- printk("handling break....");
-+ if ((stat & BRK_ABRT) && !(info->read_reg_zero & BRK_ABRT)) {
-+#if defined(CONFIG_SERIAL_DEC_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) && \
-+ !defined(MODULE)
-+ if (info->line == sercons.index) {
-+ if (!break_pressed)
-+ break_pressed = jiffies;
-+ } else
- #endif
-- tty_break = 1;
-+ info->tty_break = 1;
- }
-
- if (info->zs_channel != info->zs_chan_a) {
-@@ -957,7 +937,7 @@
- save_flags(flags);
- while (1) {
- cli();
-- c = MIN(count, MIN(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
-+ c = min(count, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
- SERIAL_XMIT_SIZE - info->xmit_head));
- if (c <= 0)
- break;
-@@ -965,7 +945,7 @@
- if (from_user) {
- down(&tmp_buf_sem);
- copy_from_user(tmp_buf, buf, c);
-- c = MIN(c, MIN(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
-+ c = min(c, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
- SERIAL_XMIT_SIZE - info->xmit_head));
- memcpy(info->xmit_buf + info->xmit_head, tmp_buf, c);
- up(&tmp_buf_sem);
-@@ -1282,46 +1262,48 @@
- }
-
- switch (cmd) {
-- case TIOCMGET:
-- error = verify_area(VERIFY_WRITE, (void *) arg,
-- sizeof(unsigned int));
-- if (error)
-- return error;
-- return get_modem_info(info, (unsigned int *) arg);
-- case TIOCMBIS:
-- case TIOCMBIC:
-- case TIOCMSET:
-- return set_modem_info(info, cmd, (unsigned int *) arg);
-- case TIOCGSERIAL:
-- error = verify_area(VERIFY_WRITE, (void *) arg,
-- sizeof(struct serial_struct));
-- if (error)
-- return error;
-- return get_serial_info(info,
-- (struct serial_struct *) arg);
-- case TIOCSSERIAL:
-- return set_serial_info(info,
-- (struct serial_struct *) arg);
-- case TIOCSERGETLSR: /* Get line status register */
-- error = verify_area(VERIFY_WRITE, (void *) arg,
-- sizeof(unsigned int));
-- if (error)
-- return error;
-- else
-- return get_lsr_info(info, (unsigned int *) arg);
-+ case TIOCMGET:
-+ error = verify_area(VERIFY_WRITE, (void *)arg,
-+ sizeof(unsigned int));
-+ if (error)
-+ return error;
-+ return get_modem_info(info, (unsigned int *)arg);
-
-- case TIOCSERGSTRUCT:
-- error = verify_area(VERIFY_WRITE, (void *) arg,
-- sizeof(struct dec_serial));
-- if (error)
-- return error;
-- copy_from_user((struct dec_serial *) arg,
-- info, sizeof(struct dec_serial));
-- return 0;
-+ case TIOCMBIS:
-+ case TIOCMBIC:
-+ case TIOCMSET:
-+ return set_modem_info(info, cmd, (unsigned int *)arg);
-
-- default:
-- return -ENOIOCTLCMD;
-- }
-+ case TIOCGSERIAL:
-+ error = verify_area(VERIFY_WRITE, (void *)arg,
-+ sizeof(struct serial_struct));
-+ if (error)
-+ return error;
-+ return get_serial_info(info, (struct serial_struct *)arg);
-+
-+ case TIOCSSERIAL:
-+ return set_serial_info(info, (struct serial_struct *)arg);
-+
-+ case TIOCSERGETLSR: /* Get line status register */
-+ error = verify_area(VERIFY_WRITE, (void *)arg,
-+ sizeof(unsigned int));
-+ if (error)
-+ return error;
-+ else
-+ return get_lsr_info(info, (unsigned int *)arg);
-+
-+ case TIOCSERGSTRUCT:
-+ error = verify_area(VERIFY_WRITE, (void *)arg,
-+ sizeof(struct dec_serial));
-+ if (error)
-+ return error;
-+ copy_from_user((struct dec_serial *)arg, info,
-+ sizeof(struct dec_serial));
-+ return 0;
-+
-+ default:
-+ return -ENOIOCTLCMD;
-+ }
- return 0;
- }
-
-@@ -1446,7 +1428,8 @@
- static void rs_wait_until_sent(struct tty_struct *tty, int timeout)
- {
- struct dec_serial *info = (struct dec_serial *) tty->driver_data;
-- unsigned long orig_jiffies, char_time;
-+ unsigned long orig_jiffies;
-+ int char_time;
-
- if (serial_paranoia_check(info, tty->device, "rs_wait_until_sent"))
- return;
-@@ -1462,7 +1445,7 @@
- if (char_time == 0)
- char_time = 1;
- if (timeout)
-- char_time = MIN(char_time, timeout);
-+ char_time = min(char_time, timeout);
- while ((read_zsreg(info->zs_channel, 1) & Tx_BUF_EMP) == 0) {
- current->state = TASK_INTERRUPTIBLE;
- schedule_timeout(char_time);
-@@ -1714,7 +1697,7 @@
-
- static void __init show_serial_version(void)
- {
-- printk("DECstation Z8530 serial driver version 0.08\n");
-+ printk("DECstation Z8530 serial driver version 0.09\n");
- }
-
- /* Initialize Z8530s zs_channels
-@@ -1994,8 +1977,9 @@
- * polling I/O routines
- */
- static int
--zs_poll_tx_char(struct dec_serial *info, unsigned char ch)
-+zs_poll_tx_char(void *handle, unsigned char ch)
- {
-+ struct dec_serial *info = handle;
- struct dec_zschannel *chan = info->zs_channel;
- int ret;
-
-@@ -2017,8 +2001,9 @@
- }
-
- static int
--zs_poll_rx_char(struct dec_serial *info)
-+zs_poll_rx_char(void *handle)
- {
-+ struct dec_serial *info = handle;
- struct dec_zschannel *chan = info->zs_channel;
- int ret;
-
-@@ -2038,12 +2023,13 @@
- return -ENODEV;
- }
-
--unsigned int register_zs_hook(unsigned int channel, struct zs_hook *hook)
-+int register_zs_hook(unsigned int channel, struct dec_serial_hook *hook)
- {
- struct dec_serial *info = &zs_soft[channel];
-
- if (info->hook) {
-- printk(__FUNCTION__": line %d has already a hook registered\n", channel);
-+ printk("%s: line %d has already a hook registered\n",
-+ __FUNCTION__, channel);
-
- return 0;
- } else {
-@@ -2055,7 +2041,7 @@
- }
- }
-
--unsigned int unregister_zs_hook(unsigned int channel)
-+int unregister_zs_hook(unsigned int channel)
- {
- struct dec_serial *info = &zs_soft[channel];
-
-@@ -2063,8 +2049,8 @@
- info->hook = NULL;
- return 1;
- } else {
-- printk(__FUNCTION__": trying to unregister hook on line %d,"
-- " but none is registered\n", channel);
-+ printk("%s: trying to unregister hook on line %d,"
-+ " but none is registered\n", __FUNCTION__, channel);
- return 0;
- }
- }
-@@ -2319,22 +2305,23 @@
- write_zsreg(chan, 9, nine);
- }
-
--static int kgdbhook_init_channel(struct dec_serial* info)
-+static int kgdbhook_init_channel(void *handle)
- {
- return 0;
- }
-
--static void kgdbhook_init_info(struct dec_serial* info)
-+static void kgdbhook_init_info(void *handle)
- {
- }
-
--static void kgdbhook_rx_char(struct dec_serial* info,
-- unsigned char ch, unsigned char stat)
-+static void kgdbhook_rx_char(void *handle, unsigned char ch, unsigned char fl)
- {
-+ struct dec_serial *info = handle;
-+
-+ if (fl != TTY_NORMAL)
-+ return;
- if (ch == 0x03 || ch == '$')
- breakpoint();
-- if (stat & (Rx_OVR|FRM_ERR|PAR_ERR))
-- write_zsreg(info->zs_channel, 0, ERR_RES);
- }
-
- /* This sets up the serial port we're using, and turns on
-@@ -2360,11 +2347,11 @@
- * for /dev/ttyb which is determined in setup_arch() from the
- * boot command line flags.
- */
--struct zs_hook zs_kgdbhook = {
-- init_channel : kgdbhook_init_channel,
-- init_info : kgdbhook_init_info,
-- cflags : B38400|CS8|CLOCAL,
-- rx_char : kgdbhook_rx_char,
-+struct dec_serial_hook zs_kgdbhook = {
-+ .init_channel = kgdbhook_init_channel,
-+ .init_info = kgdbhook_init_info,
-+ .rx_char = kgdbhook_rx_char,
-+ .cflags = B38400 | CS8 | CLOCAL,
- }
-
- void __init zs_kgdb_hook(int tty_num)
-diff -Nur linux-2.4.32-rc1/drivers/tc/zs.h linux-2.4.32-rc1.mips/drivers/tc/zs.h
---- linux-2.4.32-rc1/drivers/tc/zs.h 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/tc/zs.h 2004-07-01 15:28:54.000000000 +0200
-@@ -1,14 +1,18 @@
- /*
-- * macserial.h: Definitions for the Macintosh Z8530 serial driver.
-+ * drivers/tc/zs.h: Definitions for the DECstation Z85C30 serial driver.
- *
- * Adapted from drivers/sbus/char/sunserial.h by Paul Mackerras.
-+ * Adapted from drivers/macintosh/macserial.h by Harald Koerfgen.
- *
- * Copyright (C) 1996 Paul Mackerras (Paul.Mackerras@cs.anu.edu.au)
- * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
-+ * Copyright (C) 2004 Maciej W. Rozycki
- */
- #ifndef _DECSERIAL_H
- #define _DECSERIAL_H
-
-+#include <asm/dec/serial.h>
-+
- #define NUM_ZSREGS 16
-
- struct serial_struct {
-@@ -89,63 +93,50 @@
- unsigned char curregs[NUM_ZSREGS];
- };
-
--struct dec_serial;
--
--struct zs_hook {
-- int (*init_channel)(struct dec_serial* info);
-- void (*init_info)(struct dec_serial* info);
-- void (*rx_char)(unsigned char ch, unsigned char stat);
-- int (*poll_rx_char)(struct dec_serial* info);
-- int (*poll_tx_char)(struct dec_serial* info,
-- unsigned char ch);
-- unsigned cflags;
--};
--
- struct dec_serial {
-- struct dec_serial *zs_next; /* For IRQ servicing chain */
-- struct dec_zschannel *zs_channel; /* Channel registers */
-- struct dec_zschannel *zs_chan_a; /* A side registers */
-- unsigned char read_reg_zero;
--
-- char soft_carrier; /* Use soft carrier on this channel */
-- char break_abort; /* Is serial console in, so process brk/abrt */
-- struct zs_hook *hook; /* Hook on this channel */
-- char is_cons; /* Is this our console. */
-- unsigned char tx_active; /* character is being xmitted */
-- unsigned char tx_stopped; /* output is suspended */
--
-- /* We need to know the current clock divisor
-- * to read the bps rate the chip has currently
-- * loaded.
-+ struct dec_serial *zs_next; /* For IRQ servicing chain. */
-+ struct dec_zschannel *zs_channel; /* Channel registers. */
-+ struct dec_zschannel *zs_chan_a; /* A side registers. */
-+ unsigned char read_reg_zero;
-+
-+ struct dec_serial_hook *hook; /* Hook on this channel. */
-+ int tty_break; /* Set on BREAK condition. */
-+ int is_cons; /* Is this our console. */
-+ int tx_active; /* Char is being xmitted. */
-+ int tx_stopped; /* Output is suspended. */
-+
-+ /*
-+ * We need to know the current clock divisor
-+ * to read the bps rate the chip has currently loaded.
- */
-- unsigned char clk_divisor; /* May be 1, 16, 32, or 64 */
-- int zs_baud;
-+ int clk_divisor; /* May be 1, 16, 32, or 64. */
-+ int zs_baud;
-
-- char change_needed;
-+ char change_needed;
-
- int magic;
- int baud_base;
- int port;
- int irq;
-- int flags; /* defined in tty.h */
-- int type; /* UART type */
-+ int flags; /* Defined in tty.h. */
-+ int type; /* UART type. */
- struct tty_struct *tty;
- int read_status_mask;
- int ignore_status_mask;
- int timeout;
- int xmit_fifo_size;
- int custom_divisor;
-- int x_char; /* xon/xoff character */
-+ int x_char; /* XON/XOFF character. */
- int close_delay;
- unsigned short closing_wait;
- unsigned short closing_wait2;
- unsigned long event;
- unsigned long last_active;
- int line;
-- int count; /* # of fd on device */
-- int blocked_open; /* # of blocked opens */
-- long session; /* Session of opening process */
-- long pgrp; /* pgrp of opening process */
-+ int count; /* # of fds on device. */
-+ int blocked_open; /* # of blocked opens. */
-+ long session; /* Sess of opening process. */
-+ long pgrp; /* Pgrp of opening process. */
- unsigned char *xmit_buf;
- int xmit_head;
- int xmit_tail;
-diff -Nur linux-2.4.32-rc1/drivers/video/au1200fb.c linux-2.4.32-rc1.mips/drivers/video/au1200fb.c
---- linux-2.4.32-rc1/drivers/video/au1200fb.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/video/au1200fb.c 2005-03-13 09:04:16.000000000 +0100
-@@ -0,0 +1,1564 @@
-+/*
-+ * BRIEF MODULE DESCRIPTION
-+ * Au1200 LCD Driver.
-+ *
-+ * Copyright 2004 AMD
-+ * Author: AMD
-+ *
-+ * Based on:
-+ * linux/drivers/video/skeletonfb.c -- Skeleton for a frame buffer device
-+ * Created 28 Dec 1997 by Geert Uytterhoeven
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/mm.h>
-+#include <linux/tty.h>
-+#include <linux/slab.h>
-+#include <linux/delay.h>
-+#include <linux/fb.h>
-+#include <linux/init.h>
-+#include <asm/uaccess.h>
-+
-+#include <asm/au1000.h>
-+#include <asm/au1xxx_gpio.h>
-+#include "au1200fb.h"
-+
-+#include <video/fbcon.h>
-+#include <video/fbcon-cfb16.h>
-+#include <video/fbcon-cfb32.h>
-+#define CMAPSIZE 16
-+
-+#define AU1200_LCD_GET_WINENABLE 1
-+#define AU1200_LCD_SET_WINENABLE 2
-+#define AU1200_LCD_GET_WINLOCATION 3
-+#define AU1200_LCD_SET_WINLOCATION 4
-+#define AU1200_LCD_GET_WINSIZE 5
-+#define AU1200_LCD_SET_WINSIZE 6
-+#define AU1200_LCD_GET_BACKCOLOR 7
-+#define AU1200_LCD_SET_BACKCOLOR 8
-+#define AU1200_LCD_GET_COLORKEY 9
-+#define AU1200_LCD_SET_COLORKEY 10
-+#define AU1200_LCD_GET_PANEL 11
-+#define AU1200_LCD_SET_PANEL 12
-+
-+typedef struct au1200_lcd_getset_t
-+{
-+ unsigned int subcmd;
-+ union {
-+ struct {
-+ int enable;
-+ } winenable;
-+ struct {
-+ int x, y;
-+ } winlocation;
-+ struct {
-+ int hsz, vsz;
-+ } winsize;
-+ struct {
-+ unsigned int color;
-+ } backcolor;
-+ struct {
-+ unsigned int key;
-+ unsigned int mask;
-+ } colorkey;
-+ struct {
-+ int panel;
-+ char desc[80];
-+ } panel;
-+ };
-+} au1200_lcd_getset_t;
-+
-+AU1200_LCD *lcd = (AU1200_LCD *)AU1200_LCD_ADDR;
-+static int window_index = 0; /* default is zero */
-+static int panel_index = -1; /* default is call board_au1200fb_panel */
-+
-+struct window_settings
-+{
-+ unsigned char name[64];
-+ uint32 mode_backcolor;
-+ uint32 mode_colorkey;
-+ uint32 mode_colorkeymsk;
-+ struct
-+ {
-+ int xres;
-+ int yres;
-+ int xpos;
-+ int ypos;
-+ uint32 mode_winctrl1; /* winctrl1[FRM,CCO,PO,PIPE] */
-+ uint32 mode_winenable;
-+ } w[4];
-+};
-+
-+struct panel_settings
-+{
-+ unsigned char name[64];
-+ /* panel physical dimensions */
-+ uint32 Xres;
-+ uint32 Yres;
-+ /* panel timings */
-+ uint32 mode_screen;
-+ uint32 mode_horztiming;
-+ uint32 mode_verttiming;
-+ uint32 mode_clkcontrol;
-+ uint32 mode_pwmdiv;
-+ uint32 mode_pwmhi;
-+ uint32 mode_outmask;
-+ uint32 mode_fifoctrl;
-+ uint32 mode_toyclksrc;
-+ uint32 mode_backlight;
-+ uint32 mode_auxpll;
-+ int (*device_init)(void);
-+ int (*device_shutdown)(void);
-+};
-+
-+#if defined(__BIG_ENDIAN)
-+#define LCD_WINCTRL1_PO_16BPP LCD_WINCTRL1_PO_00
-+#else
-+#define LCD_WINCTRL1_PO_16BPP LCD_WINCTRL1_PO_01
-+#endif
-+
-+extern int board_au1200fb_panel (void);
-+extern int board_au1200fb_panel_init (void);
-+extern int board_au1200fb_panel_shutdown (void);
-+
-+#if defined(CONFIG_FOCUS_ENHANCEMENTS)
-+extern int board_au1200fb_focus_init_hdtv(void);
-+extern int board_au1200fb_focus_init_component(void);
-+extern int board_au1200fb_focus_init_cvsv(void);
-+extern int board_au1200fb_focus_shutdown(void);
-+#endif
-+
-+/*
-+ * Default window configurations
-+ */
-+static struct window_settings windows[] =
-+{
-+ { /* Index 0 */
-+ "0-FS gfx, 1-video, 2-ovly gfx, 3-ovly gfx",
-+ /* mode_backcolor */ 0x006600ff,
-+ /* mode_colorkey,msk*/ 0, 0,
-+ {
-+ {
-+ /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
-+ /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565|LCD_WINCTRL1_PO_16BPP,
-+ /* mode_winenable*/ LCD_WINENABLE_WEN0,
-+ },
-+ {
-+ /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
-+ /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565|LCD_WINCTRL1_PO_16BPP,
-+ /* mode_winenable*/ 0,
-+ },
-+ {
-+ /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
-+ /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565|LCD_WINCTRL1_PO_16BPP|LCD_WINCTRL1_PIPE,
-+ /* mode_winenable*/ 0,
-+ },
-+ {
-+ /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
-+ /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565|LCD_WINCTRL1_PO_16BPP|LCD_WINCTRL1_PIPE,
-+ /* mode_winenable*/ 0,
-+ },
-+ },
-+ },
-+
-+ { /* Index 1 */
-+ "0-FS gfx, 1-video, 2-ovly gfx, 3-ovly gfx",
-+ /* mode_backcolor */ 0x006600ff,
-+ /* mode_colorkey,msk*/ 0, 0,
-+ {
-+ {
-+ /* xres, yres, xpos, ypos */ 320, 240, 5, 5,
-+#if 0
-+ /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565|LCD_WINCTRL1_PO_16BPP,
-+#endif
-+ /* mode_winctrl1 */ LCD_WINCTRL1_FRM_24BPP|LCD_WINCTRL1_PO_00,
-+ /* mode_winenable*/ LCD_WINENABLE_WEN0,
-+ },
-+ {
-+ /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
-+ /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565|LCD_WINCTRL1_PO_16BPP,
-+ /* mode_winenable*/ 0,
-+ },
-+ {
-+ /* xres, yres, xpos, ypos */ 100, 100, 0, 0,
-+ /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565|LCD_WINCTRL1_PO_16BPP|LCD_WINCTRL1_PIPE,
-+ /* mode_winenable*/ 0/*LCD_WINENABLE_WEN2*/,
-+ },
-+ {
-+ /* xres, yres, xpos, ypos */ 200, 25, 0, 0,
-+ /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565|LCD_WINCTRL1_PO_16BPP|LCD_WINCTRL1_PIPE,
-+ /* mode_winenable*/ 0,
-+ },
-+ },
-+ },
-+ /* Need VGA 640 @ 24bpp, @ 32bpp */
-+ /* Need VGA 800 @ 24bpp, @ 32bpp */
-+ /* Need VGA 1024 @ 24bpp, @ 32bpp */
-+} ;
-+
-+/*
-+ * Controller configurations for various panels.
-+ */
-+static struct panel_settings panels[] =
-+{
-+ { /* Index 0: QVGA 320x240 H:33.3kHz V:110Hz */
-+ "VGA_320x240",
-+ 320, 240,
-+ /* mode_screen */ LCD_SCREEN_SX_N(320) | LCD_SCREEN_SY_N(240),
-+ /* mode_horztiming */ 0x00c4623b,
-+ /* mode_verttiming */ 0x00502814,
-+ /* mode_clkcontrol */ 0x00020002, /* /4=24Mhz */
-+ /* mode_pwmdiv */ 0x00000000,
-+ /* mode_pwmhi */ 0x00000000,
-+ /* mode_outmask */ 0x00FFFFFF,
-+ /* mode_fifoctrl */ 0x2f2f2f2f,
-+ /* mode_toyclksrc */ 0x00000004, /* 96MHz AUXPLL directly */
-+ /* mode_backlight */ 0x00000000,
-+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ NULL,
-+ /* device_shutdown */ NULL,
-+ },
-+
-+ { /* Index 1: VGA 640x480 H:30.3kHz V:58Hz */
-+ "VGA_640x480",
-+ 640, 480,
-+ /* mode_screen */ 0x13f9df80,
-+ /* mode_horztiming */ 0x003c5859,
-+ /* mode_verttiming */ 0x00741201,
-+ /* mode_clkcontrol */ 0x00020001, /* /4=24Mhz */
-+ /* mode_pwmdiv */ 0x00000000,
-+ /* mode_pwmhi */ 0x00000000,
-+ /* mode_outmask */ 0x00FFFFFF,
-+ /* mode_fifoctrl */ 0x2f2f2f2f,
-+ /* mode_toyclksrc */ 0x00000004, /* AUXPLL directly */
-+ /* mode_backlight */ 0x00000000,
-+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ NULL,
-+ /* device_shutdown */ NULL,
-+ },
-+
-+ { /* Index 2: SVGA 800x600 H:46.1kHz V:69Hz */
-+ "SVGA_800x600",
-+ 800, 600,
-+ /* mode_screen */ 0x18fa5780,
-+ /* mode_horztiming */ 0x00dc7e77,
-+ /* mode_verttiming */ 0x00584805,
-+ /* mode_clkcontrol */ 0x00020000, /* /2=48Mhz */
-+ /* mode_pwmdiv */ 0x00000000,
-+ /* mode_pwmhi */ 0x00000000,
-+ /* mode_outmask */ 0x00FFFFFF,
-+ /* mode_fifoctrl */ 0x2f2f2f2f,
-+ /* mode_toyclksrc */ 0x00000004, /* AUXPLL directly */
-+ /* mode_backlight */ 0x00000000,
-+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ NULL,
-+ /* device_shutdown */ NULL,
-+ },
-+
-+ { /* Index 3: XVGA 1024x768 H:56.2kHz V:70Hz */
-+ "XVGA_1024x768",
-+ 1024, 768,
-+ /* mode_screen */ 0x1ffaff80,
-+ /* mode_horztiming */ 0x007d0e57,
-+ /* mode_verttiming */ 0x00740a01,
-+ /* mode_clkcontrol */ 0x000A0000, /* /1 */
-+ /* mode_pwmdiv */ 0x00000000,
-+ /* mode_pwmhi */ 0x00000000,
-+ /* mode_outmask */ 0x00FFFFFF,
-+ /* mode_fifoctrl */ 0x2f2f2f2f,
-+ /* mode_toyclksrc */ 0x00000004, /* AUXPLL directly */
-+ /* mode_backlight */ 0x00000000,
-+ /* mode_auxpll */ 6, /* 72MHz AUXPLL */
-+ /* device_init */ NULL,
-+ /* device_shutdown */ NULL,
-+ },
-+
-+ { /* Index 4: XVGA 1280x1024 H:68.5kHz V:65Hz */
-+ "XVGA_1280x1024",
-+ 1280, 1024,
-+ /* mode_screen */ 0x27fbff80,
-+ /* mode_horztiming */ 0x00cdb2c7,
-+ /* mode_verttiming */ 0x00600002,
-+ /* mode_clkcontrol */ 0x000A0000, /* /1 */
-+ /* mode_pwmdiv */ 0x00000000,
-+ /* mode_pwmhi */ 0x00000000,
-+ /* mode_outmask */ 0x00FFFFFF,
-+ /* mode_fifoctrl */ 0x2f2f2f2f,
-+ /* mode_toyclksrc */ 0x00000004, /* AUXPLL directly */
-+ /* mode_backlight */ 0x00000000,
-+ /* mode_auxpll */ 10, /* 120MHz AUXPLL */
-+ /* device_init */ NULL,
-+ /* device_shutdown */ NULL,
-+ },
-+
-+ { /* Index 5: Samsung 1024x768 TFT */
-+ "Samsung_1024x768_TFT",
-+ 1024, 768,
-+ /* mode_screen */ 0x1ffaff80,
-+ /* mode_horztiming */ 0x018cc677,
-+ /* mode_verttiming */ 0x00241217,
-+ /* mode_clkcontrol */ 0x00000000, /* SCB 0x1 /4=24Mhz */
-+ /* mode_pwmdiv */ 0x8000063f, /* SCB 0x0 */
-+ /* mode_pwmhi */ 0x03400000, /* SCB 0x0 */
-+ /* mode_outmask */ 0x00fcfcfc,
-+ /* mode_fifoctrl */ 0x2f2f2f2f,
-+ /* mode_toyclksrc */ 0x00000004, /* 96MHz AUXPLL directly */
-+ /* mode_backlight */ 0x00000000,
-+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ board_au1200fb_panel_init,
-+ /* device_shutdown */ board_au1200fb_panel_shutdown,
-+ },
-+
-+ { /* Index 6: Toshiba 640x480 TFT */
-+ "Toshiba_640x480_TFT",
-+ 640, 480,
-+ /* mode_screen */ LCD_SCREEN_SX_N(640) | LCD_SCREEN_SY_N(480),
-+ /* mode_horztiming */ LCD_HORZTIMING_HPW_N(96) | LCD_HORZTIMING_HND1_N(13) | LCD_HORZTIMING_HND2_N(51),
-+ /* mode_verttiming */ LCD_VERTTIMING_VPW_N(2) | LCD_VERTTIMING_VND1_N(11) | LCD_VERTTIMING_VND2_N(32) ,
-+ /* mode_clkcontrol */ 0x00000000, /* /4=24Mhz */
-+ /* mode_pwmdiv */ 0x8000063f,
-+ /* mode_pwmhi */ 0x03400000,
-+ /* mode_outmask */ 0x00fcfcfc,
-+ /* mode_fifoctrl */ 0x2f2f2f2f,
-+ /* mode_toyclksrc */ 0x00000004, /* 96MHz AUXPLL directly */
-+ /* mode_backlight */ 0x00000000,
-+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ board_au1200fb_panel_init,
-+ /* device_shutdown */ board_au1200fb_panel_shutdown,
-+ },
-+
-+ { /* Index 7: Sharp 320x240 TFT */
-+ "Sharp_320x240_TFT",
-+ 320, 240,
-+ /* mode_screen */ LCD_SCREEN_SX_N(320) | LCD_SCREEN_SY_N(240),
-+ /* mode_horztiming */ LCD_HORZTIMING_HPW_N(60) | LCD_HORZTIMING_HND1_N(13) | LCD_HORZTIMING_HND2_N(2),
-+ /* mode_verttiming */ LCD_VERTTIMING_VPW_N(2) | LCD_VERTTIMING_VND1_N(2) | LCD_VERTTIMING_VND2_N(5) ,
-+ /* mode_clkcontrol */ LCD_CLKCONTROL_PCD_N(7), /* /16=6Mhz */
-+ /* mode_pwmdiv */ 0x8000063f,
-+ /* mode_pwmhi */ 0x03400000,
-+ /* mode_outmask */ 0x00fcfcfc,
-+ /* mode_fifoctrl */ 0x2f2f2f2f,
-+ /* mode_toyclksrc */ 0x00000004, /* 96MHz AUXPLL directly */
-+ /* mode_backlight */ 0x00000000,
-+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ board_au1200fb_panel_init,
-+ /* device_shutdown */ board_au1200fb_panel_shutdown,
-+ },
-+ { /* Index 8: Toppoly TD070WGCB2 7" 854x480 TFT */
-+ "Toppoly_TD070WGCB2",
-+ 854, 480,
-+ /* mode_screen */ LCD_SCREEN_SX_N(854) | LCD_SCREEN_SY_N(480),
-+ /* mode_horztiming */ LCD_HORZTIMING_HND2_N(44) | LCD_HORZTIMING_HND1_N(44) | LCD_HORZTIMING_HPW_N(114),
-+ /* mode_verttiming */ LCD_VERTTIMING_VND2_N(20) | LCD_VERTTIMING_VND1_N(21) | LCD_VERTTIMING_VPW_N(4),
-+ /* mode_clkcontrol */ 0x00020001, /* /4=24Mhz */
-+ /* mode_pwmdiv */ 0x8000063f,
-+ /* mode_pwmhi */ 0x03400000,
-+ /* mode_outmask */ 0x00FCFCFC,
-+ /* mode_fifoctrl */ 0x2f2f2f2f,
-+ /* mode_toyclksrc */ 0x00000004, /* AUXPLL directly */
-+ /* mode_backlight */ 0x00000000,
-+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ board_au1200fb_panel_init,
-+ /* device_shutdown */ board_au1200fb_panel_shutdown,
-+ },
-+#if defined(CONFIG_FOCUS_ENHANCEMENTS)
-+ { /* Index 9: Focus FS453 TV-Out 640x480 */
-+ "FS453_640x480 (Composite/S-Video)",
-+ 640, 480,
-+ /* mode_screen */ LCD_SCREEN_SX_N(640) | LCD_SCREEN_SY_N(480),
-+ /* mode_horztiming */ LCD_HORZTIMING_HND2_N(143) | LCD_HORZTIMING_HND1_N(143) | LCD_HORZTIMING_HPW_N(10),
-+ /* mode_verttiming */ LCD_VERTTIMING_VND2_N(30) | LCD_VERTTIMING_VND1_N(30) | LCD_VERTTIMING_VPW_N(5),
-+ /* mode_clkcontrol */ 0x00480000 | (1<<17) | (1<<18), /* External Clock, 1:1 clock ratio */
-+ /* mode_pwmdiv */ 0x00000000,
-+ /* mode_pwmhi */ 0x00000000,
-+ /* mode_outmask */ 0x00FFFFFF,
-+ /* mode_fifoctrl */ 0x2f2f2f2f,
-+ /* mode_toyclksrc */ 0x00000000,
-+ /* mode_backlight */ 0x00000000,
-+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ board_au1200fb_focus_init_cvsv,
-+ /* device_shutdown */ board_au1200fb_focus_shutdown,
-+ },
-+
-+ { /* Index 10: Focus FS453 TV-Out 640x480 */
-+ "FS453_640x480 (Component Video)",
-+ 640, 480,
-+ /* mode_screen */ LCD_SCREEN_SX_N(640) | LCD_SCREEN_SY_N(480),
-+ /* mode_horztiming */ LCD_HORZTIMING_HND2_N(143) | LCD_HORZTIMING_HND1_N(143) | LCD_HORZTIMING_HPW_N(10),
-+ /* mode_verttiming */ LCD_VERTTIMING_VND2_N(30) | LCD_VERTTIMING_VND1_N(30) | LCD_VERTTIMING_VPW_N(5),
-+ /* mode_clkcontrol */ 0x00480000 | (1<<17) | (1<<18), /* External Clock, 1:1 clock ratio */
-+ /* mode_pwmdiv */ 0x00000000,
-+ /* mode_pwmhi */ 0x00000000,
-+ /* mode_outmask */ 0x00FFFFFF,
-+ /* mode_fifoctrl */ 0x2f2f2f2f,
-+ /* mode_toyclksrc */ 0x00000000,
-+ /* mode_backlight */ 0x00000000,
-+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ board_au1200fb_focus_init_component,
-+ /* device_shutdown */ board_au1200fb_focus_shutdown,
-+ },
-+
-+ { /* Index 11: Focus FS453 TV-Out 640x480 */
-+ "FS453_640x480 (HDTV)",
-+ 720, 480,
-+ /* mode_screen */ LCD_SCREEN_SX_N(720) | LCD_SCREEN_SY_N(480),
-+ /* mode_horztiming */ LCD_HORZTIMING_HND2_N(28) | LCD_HORZTIMING_HND1_N(46) | LCD_HORZTIMING_HPW_N(64),
-+ /* mode_verttiming */ LCD_VERTTIMING_VND2_N(7) | LCD_VERTTIMING_VND1_N(31) | LCD_VERTTIMING_VPW_N(7),
-+ /* mode_clkcontrol */ 0x00480000 | (1<<17) | (1<<18), /* External Clock, 1:1 clock ratio */
-+ /* mode_pwmdiv */ 0x00000000,
-+ /* mode_pwmhi */ 0x00000000,
-+ /* mode_outmask */ 0x00FFFFFF,
-+ /* mode_fifoctrl */ 0x2f2f2f2f,
-+ /* mode_toyclksrc */ 0x00000000,
-+ /* mode_backlight */ 0x00000000,
-+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ board_au1200fb_focus_init_hdtv,
-+ /* device_shutdown */ board_au1200fb_focus_shutdown,
-+ },
-+#endif
-+};
-+
-+#define NUM_PANELS (sizeof(panels) / sizeof(struct panel_settings))
-+
-+static struct window_settings *win;
-+static struct panel_settings *panel;
-+
-+struct au1200fb_info {
-+ struct fb_info_gen gen;
-+ unsigned long fb_virt_start;
-+ unsigned long fb_size;
-+ unsigned long fb_phys;
-+ int mmaped;
-+ int nohwcursor;
-+ int noblanking;
-+
-+ struct { unsigned red, green, blue, pad; } palette[256];
-+
-+#if defined(FBCON_HAS_CFB16)
-+ u16 fbcon_cmap16[16];
-+#endif
-+#if defined(FBCON_HAS_CFB32)
-+ u32 fbcon_cmap32[16];
-+#endif
-+};
-+
-+
-+struct au1200fb_par {
-+ struct fb_var_screeninfo var;
-+
-+ int line_length; /* in bytes */
-+ int cmap_len; /* color-map length */
-+};
-+
-+#ifndef CONFIG_FB_AU1200_DEVS
-+#define CONFIG_FB_AU1200_DEVS 1
-+#endif
-+
-+static struct au1200fb_info fb_infos[CONFIG_FB_AU1200_DEVS];
-+static struct au1200fb_par fb_pars[CONFIG_FB_AU1200_DEVS];
-+static struct display disps[CONFIG_FB_AU1200_DEVS];
-+
-+int au1200fb_init(void);
-+void au1200fb_setup(char *options, int *ints);
-+static int au1200fb_mmap(struct fb_info *fb, struct file *file,
-+ struct vm_area_struct *vma);
-+static int au1200_blank(int blank_mode, struct fb_info_gen *info);
-+static int au1200fb_ioctl(struct inode *inode, struct file *file, u_int cmd,
-+ u_long arg, int con, struct fb_info *info);
-+
-+void au1200_nocursor(struct display *p, int mode, int xx, int yy){};
-+
-+static int au1200_setlocation (int plane, int xpos, int ypos);
-+static int au1200_setsize (int plane, int xres, int yres);
-+static void au1200_setmode(int plane);
-+static void au1200_setpanel (struct panel_settings *newpanel);
-+
-+static struct fb_ops au1200fb_ops = {
-+ owner: THIS_MODULE,
-+ fb_get_fix: fbgen_get_fix,
-+ fb_get_var: fbgen_get_var,
-+ fb_set_var: fbgen_set_var,
-+ fb_get_cmap: fbgen_get_cmap,
-+ fb_set_cmap: fbgen_set_cmap,
-+ fb_pan_display: fbgen_pan_display,
-+ fb_ioctl: au1200fb_ioctl,
-+ fb_mmap: au1200fb_mmap,
-+};
-+
-+
-+static int
-+winbpp (unsigned int winctrl1)
-+{
-+ /* how many bytes of memory are needed for each pixel format */
-+ switch (winctrl1 & LCD_WINCTRL1_FRM)
-+ {
-+ case LCD_WINCTRL1_FRM_1BPP: return 1; break;
-+ case LCD_WINCTRL1_FRM_2BPP: return 2; break;
-+ case LCD_WINCTRL1_FRM_4BPP: return 4; break;
-+ case LCD_WINCTRL1_FRM_8BPP: return 8; break;
-+ case LCD_WINCTRL1_FRM_12BPP: return 16; break;
-+ case LCD_WINCTRL1_FRM_16BPP655: return 16; break;
-+ case LCD_WINCTRL1_FRM_16BPP565: return 16; break;
-+ case LCD_WINCTRL1_FRM_16BPP556: return 16; break;
-+ case LCD_WINCTRL1_FRM_16BPPI1555: return 16; break;
-+ case LCD_WINCTRL1_FRM_16BPPI5551: return 16; break;
-+ case LCD_WINCTRL1_FRM_16BPPA1555: return 16; break;
-+ case LCD_WINCTRL1_FRM_16BPPA5551: return 16; break;
-+ case LCD_WINCTRL1_FRM_24BPP: return 32; break;
-+ case LCD_WINCTRL1_FRM_32BPP: return 32; break;
-+ default: return 0; break;
-+ }
-+}
-+
-+static int
-+fbinfo2index (struct fb_info *fb_info)
-+{
-+ int i;
-+ for (i = 0; i < CONFIG_FB_AU1200_DEVS; ++i)
-+ {
-+ if (fb_info == (struct fb_info *)(&fb_infos[i]))
-+ return i;
-+ }
-+ printk("au1200fb: ERROR: fbinfo2index failed!\n");
-+ return -1;
-+}
-+
-+static void au1200_detect(void)
-+{
-+ /*
-+ * This function should detect the current video mode settings
-+ * and store it as the default video mode
-+ * Yeh, well, we're not going to change any settings so we're
-+ * always stuck with the default ...
-+ */
-+}
-+
-+static int au1200_encode_fix(struct fb_fix_screeninfo *fix,
-+ const void *_par, struct fb_info_gen *_info)
-+{
-+ struct au1200fb_info *info = (struct au1200fb_info *) _info;
-+ struct au1200fb_par *par = (struct au1200fb_par *) _par;
-+ int plane;
-+
-+ plane = fbinfo2index(info);
-+
-+ memset(fix, 0, sizeof(struct fb_fix_screeninfo));
-+
-+ fix->smem_start = info->fb_phys;
-+ fix->smem_len = info->fb_size;
-+ fix->type = FB_TYPE_PACKED_PIXELS;
-+ fix->type_aux = 0;
-+ fix->visual = (par->var.bits_per_pixel == 8) ?
-+ FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
-+ fix->ywrapstep = 0;
-+ fix->xpanstep = 1;
-+ fix->ypanstep = 1;
-+ /* FIX!!!! why doesn't par->line_length work???? it does for au1100 */
-+ fix->line_length = fb_pars[plane].line_length; /*par->line_length;*/
-+ return 0;
-+}
-+
-+static void set_color_bitfields(struct fb_var_screeninfo *var, int plane)
-+{
-+ if (var->bits_per_pixel == 8)
-+ {
-+ var->red.offset = 0;
-+ var->red.length = 8;
-+ var->green.offset = 0;
-+ var->green.length = 8;
-+ var->blue.offset = 0;
-+ var->blue.length = 8;
-+ var->transp.offset = 0;
-+ var->transp.length = 0;
-+ }
-+ else
-+
-+ if (var->bits_per_pixel == 16)
-+ {
-+ /* FIX!!! How does CCO affect this ? */
-+ /* FIX!!! Not exactly sure how many of these work with FB */
-+ switch (win->w[plane].mode_winctrl1 & LCD_WINCTRL1_FRM)
-+ {
-+ case LCD_WINCTRL1_FRM_16BPP655:
-+ var->red.offset = 10;
-+ var->red.length = 6;
-+ var->green.offset = 5;
-+ var->green.length = 5;
-+ var->blue.offset = 0;
-+ var->blue.length = 5;
-+ var->transp.offset = 0;
-+ var->transp.length = 0;
-+ break;
-+
-+ case LCD_WINCTRL1_FRM_16BPP565:
-+ 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 = 0;
-+ var->transp.length = 0;
-+ break;
-+
-+ case LCD_WINCTRL1_FRM_16BPP556:
-+ var->red.offset = 11;
-+ var->red.length = 5;
-+ var->green.offset = 6;
-+ var->green.length = 5;
-+ var->blue.offset = 0;
-+ var->blue.length = 6;
-+ var->transp.offset = 0;
-+ var->transp.length = 0;
-+ break;
-+
-+ case LCD_WINCTRL1_FRM_16BPPI1555:
-+ var->red.offset = 10;
-+ var->red.length = 5;
-+ var->green.offset = 5;
-+ var->green.length = 5;
-+ var->blue.offset = 0;
-+ var->blue.length = 5;
-+ var->transp.offset = 0;
-+ var->transp.length = 0;
-+ break;
-+
-+ case LCD_WINCTRL1_FRM_16BPPI5551:
-+ var->red.offset = 11;
-+ var->red.length = 5;
-+ var->green.offset = 6;
-+ var->green.length = 5;
-+ var->blue.offset = 1;
-+ var->blue.length = 5;
-+ var->transp.offset = 0;
-+ var->transp.length = 0;
-+ break;
-+
-+ case LCD_WINCTRL1_FRM_16BPPA1555:
-+ var->red.offset = 10;
-+ var->red.length = 5;
-+ var->green.offset = 5;
-+ var->green.length = 5;
-+ var->blue.offset = 0;
-+ var->blue.length = 5;
-+ var->transp.offset = 15;
-+ var->transp.length = 1;
-+ break;
-+
-+ case LCD_WINCTRL1_FRM_16BPPA5551:
-+ var->red.offset = 11;
-+ var->red.length = 5;
-+ var->green.offset = 6;
-+ var->green.length = 5;
-+ var->blue.offset = 1;
-+ var->blue.length = 5;
-+ var->transp.offset = 0;
-+ var->transp.length = 1;
-+ break;
-+
-+ default:
-+ printk("ERROR: Invalid PIXEL FORMAT!!!\n"); break;
-+ }
-+ }
-+ else
-+
-+ if (var->bits_per_pixel == 32)
-+ {
-+ switch (win->w[plane].mode_winctrl1 & LCD_WINCTRL1_FRM)
-+ {
-+ case LCD_WINCTRL1_FRM_24BPP:
-+ var->red.offset = 16;
-+ var->red.length = 8;
-+ var->green.offset = 8;
-+ var->green.length = 8;
-+ var->blue.offset = 0;
-+ var->blue.length = 8;
-+ var->transp.offset = 0;
-+ var->transp.length = 0;
-+ break;
-+
-+ case LCD_WINCTRL1_FRM_32BPP:
-+ var->red.offset = 16;
-+ var->red.length = 8;
-+ var->green.offset = 8;
-+ var->green.length = 8;
-+ var->blue.offset = 0;
-+ var->blue.length = 8;
-+ var->transp.offset = 24;
-+ var->transp.length = 8;
-+ break;
-+ }
-+ }
-+ var->red.msb_right = 0;
-+ var->green.msb_right = 0;
-+ var->blue.msb_right = 0;
-+ var->transp.msb_right = 0;
-+#if 0
-+printk("set_color_bitfields(a=%d, r=%d..%d, g=%d..%d, b=%d..%d)\n",
-+ var->transp.offset,
-+ var->red.offset+var->red.length-1, var->red.offset,
-+ var->green.offset+var->green.length-1, var->green.offset,
-+ var->blue.offset+var->blue.length-1, var->blue.offset);
-+#endif
-+}
-+
-+static int au1200_decode_var(const struct fb_var_screeninfo *var,
-+ void *_par, struct fb_info_gen *_info)
-+{
-+ struct au1200fb_par *par = (struct au1200fb_par *)_par;
-+ int plane, bpp;
-+
-+ plane = fbinfo2index((struct fb_info *)_info);
-+
-+ /*
-+ * Don't allow setting any of these yet: xres and yres don't
-+ * make sense for LCD panels.
-+ */
-+ if (var->xres != win->w[plane].xres ||
-+ var->yres != win->w[plane].yres ||
-+ var->xres != win->w[plane].xres ||
-+ var->yres != win->w[plane].yres) {
-+ return -EINVAL;
-+ }
-+
-+ bpp = winbpp(win->w[plane].mode_winctrl1);
-+ if(var->bits_per_pixel != bpp) {
-+ /* on au1200, window pixel format is independent of panel pixel */
-+ printk("WARNING: bits_per_pizel != panel->bpp\n");
-+ }
-+
-+ memset(par, 0, sizeof(struct au1200fb_par));
-+ par->var = *var;
-+
-+ /* FIX!!! */
-+ switch (var->bits_per_pixel) {
-+ case 8:
-+ par->var.bits_per_pixel = 8;
-+ break;
-+ case 16:
-+ par->var.bits_per_pixel = 16;
-+ break;
-+ case 24:
-+ case 32:
-+ par->var.bits_per_pixel = 32;
-+ break;
-+ default:
-+ printk("color depth %d bpp not supported\n",
-+ var->bits_per_pixel);
-+ return -EINVAL;
-+
-+ }
-+ set_color_bitfields(&par->var, plane);
-+ /* FIX!!! what is this for 24/32bpp? */
-+ par->cmap_len = (par->var.bits_per_pixel == 8) ? 256 : 16;
-+ return 0;
-+}
-+
-+static int au1200_encode_var(struct fb_var_screeninfo *var,
-+ const void *par, struct fb_info_gen *_info)
-+{
-+ *var = ((struct au1200fb_par *)par)->var;
-+ return 0;
-+}
-+
-+static void
-+au1200_get_par(void *_par, struct fb_info_gen *_info)
-+{
-+ int index;
-+
-+ index = fbinfo2index((struct fb_info *)_info);
-+ *(struct au1200fb_par *)_par = fb_pars[index];
-+}
-+
-+static void au1200_set_par(const void *par, struct fb_info_gen *info)
-+{
-+ /* nothing to do: we don't change any settings */
-+}
-+
-+static int au1200_getcolreg(unsigned regno, unsigned *red, unsigned *green,
-+ unsigned *blue, unsigned *transp,
-+ struct fb_info *info)
-+{
-+ struct au1200fb_info* i = (struct au1200fb_info*)info;
-+
-+ if (regno > 255)
-+ return 1;
-+
-+ *red = i->palette[regno].red;
-+ *green = i->palette[regno].green;
-+ *blue = i->palette[regno].blue;
-+ *transp = 0;
-+
-+ return 0;
-+}
-+
-+static int au1200_setcolreg(unsigned regno, unsigned red, unsigned green,
-+ unsigned blue, unsigned transp,
-+ struct fb_info *info)
-+{
-+ struct au1200fb_info* i = (struct au1200fb_info *)info;
-+ u32 rgbcol;
-+ int plane, bpp;
-+
-+ plane = fbinfo2index((struct fb_info *)info);
-+ bpp = winbpp(win->w[plane].mode_winctrl1);
-+
-+ if (regno > 255)
-+ return 1;
-+
-+ i->palette[regno].red = red;
-+ i->palette[regno].green = green;
-+ i->palette[regno].blue = blue;
-+
-+ switch(bpp) {
-+#ifdef FBCON_HAS_CFB8
-+ case 8:
-+ red >>= 10;
-+ green >>= 10;
-+ blue >>= 10;
-+ panel_reg->lcd_pallettebase[regno] = (blue&0x1f) |
-+ ((green&0x3f)<<5) | ((red&0x1f)<<11);
-+ break;
-+#endif
-+#ifdef FBCON_HAS_CFB16
-+/* FIX!!!! depends upon pixel format */
-+ case 16:
-+ i->fbcon_cmap16[regno] =
-+ ((red & 0xf800) >> 0) |
-+ ((green & 0xfc00) >> 5) |
-+ ((blue & 0xf800) >> 11);
-+ break;
-+#endif
-+#ifdef FBCON_HAS_CFB32
-+ case 32:
-+ i->fbcon_cmap32[regno] =
-+ (((u32 )transp & 0xff00) << 16) |
-+ (((u32 )red & 0xff00) << 8) |
-+ (((u32 )green & 0xff00)) |
-+ (((u32 )blue & 0xff00) >> 8);
-+ break;
-+#endif
-+ default:
-+ printk("unsupported au1200_setcolreg(%d)\n", bpp);
-+ break;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+static int au1200_blank(int blank_mode, struct fb_info_gen *_info)
-+{
-+ struct au1200fb_info *fb_info = (struct au1200fb_info *)_info;
-+ int plane;
-+
-+ /* Short-circuit screen blanking */
-+ if (fb_info->noblanking)
-+ return 0;
-+
-+ plane = fbinfo2index((struct fb_info *)_info);
-+
-+ switch (blank_mode) {
-+ case VESA_NO_BLANKING:
-+ /* printk("turn on panel\n"); */
-+ au1200_setpanel(panel);
-+ break;
-+
-+ case VESA_VSYNC_SUSPEND:
-+ case VESA_HSYNC_SUSPEND:
-+ case VESA_POWERDOWN:
-+ /* printk("turn off panel\n"); */
-+ au1200_setpanel(NULL);
-+ break;
-+ default:
-+ break;
-+
-+ }
-+ return 0;
-+}
-+
-+static void au1200_set_disp(const void *unused, struct display *disp,
-+ struct fb_info_gen *info)
-+{
-+ struct au1200fb_info *fb_info;
-+ int plane;
-+
-+ fb_info = (struct au1200fb_info *)info;
-+
-+ disp->screen_base = (char *)fb_info->fb_virt_start;
-+
-+ switch (disp->var.bits_per_pixel) {
-+#ifdef FBCON_HAS_CFB8
-+ case 8:
-+ disp->dispsw = &fbcon_cfb8;
-+ if (fb_info->nohwcursor)
-+ fbcon_cfb8.cursor = au1200_nocursor;
-+ break;
-+#endif
-+#ifdef FBCON_HAS_CFB16
-+ case 16:
-+ disp->dispsw = &fbcon_cfb16;
-+ disp->dispsw_data = fb_info->fbcon_cmap16;
-+ if (fb_info->nohwcursor)
-+ fbcon_cfb16.cursor = au1200_nocursor;
-+ break;
-+#endif
-+#ifdef FBCON_HAS_CFB32
-+ case 32:
-+ disp->dispsw = &fbcon_cfb32;
-+ disp->dispsw_data = fb_info->fbcon_cmap32;
-+ if (fb_info->nohwcursor)
-+ fbcon_cfb32.cursor = au1200_nocursor;
-+ break;
-+#endif
-+ default:
-+ disp->dispsw = &fbcon_dummy;
-+ disp->dispsw_data = NULL;
-+ break;
-+ }
-+}
-+
-+static int
-+au1200fb_mmap(struct fb_info *_fb,
-+ struct file *file,
-+ struct vm_area_struct *vma)
-+{
-+ unsigned int len;
-+ unsigned long start=0, off;
-+
-+ struct au1200fb_info *fb_info = (struct au1200fb_info *)_fb;
-+
-+ if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT)) {
-+ return -EINVAL;
-+ }
-+
-+ start = fb_info->fb_phys & PAGE_MASK;
-+ len = PAGE_ALIGN((start & ~PAGE_MASK) + fb_info->fb_size);
-+
-+ off = vma->vm_pgoff << PAGE_SHIFT;
-+
-+ if ((vma->vm_end - vma->vm_start + off) > len) {
-+ return -EINVAL;
-+ }
-+
-+ off += start;
-+ vma->vm_pgoff = off >> PAGE_SHIFT;
-+
-+ pgprot_val(vma->vm_page_prot) &= ~_CACHE_MASK;
-+ pgprot_val(vma->vm_page_prot) |= _CACHE_UNCACHED;
-+
-+ /* This is an IO map - tell maydump to skip this VMA */
-+ vma->vm_flags |= VM_IO;
-+
-+ if (io_remap_page_range(vma->vm_start, off,
-+ vma->vm_end - vma->vm_start,
-+ vma->vm_page_prot)) {
-+ return -EAGAIN;
-+ }
-+
-+ fb_info->mmaped = 1;
-+ return 0;
-+}
-+
-+int au1200_pan_display(const struct fb_var_screeninfo *var,
-+ struct fb_info_gen *info)
-+{
-+ return 0;
-+}
-+
-+
-+static int au1200fb_ioctl(struct inode *inode, struct file *file, u_int cmd,
-+ u_long arg, int con, struct fb_info *info)
-+{
-+ int plane;
-+
-+ plane = fbinfo2index(info);
-+
-+ /* printk("au1200fb: ioctl %d on plane %d\n", cmd, plane); */
-+
-+ if (cmd == 0x46FF)
-+ {
-+ au1200_lcd_getset_t iodata;
-+
-+ if (copy_from_user(&iodata, (void *) arg, sizeof(au1200_lcd_getset_t)))
-+ return -EFAULT;
-+
-+ switch (iodata.subcmd)
-+ {
-+ case AU1200_LCD_GET_WINENABLE:
-+ iodata.winenable.enable = (lcd->winenable & (1<<plane)) ? 1 : 0;
-+ break;
-+ case AU1200_LCD_SET_WINENABLE:
-+ {
-+ u32 winenable;
-+ winenable = lcd->winenable;
-+ winenable &= ~(1<<plane);
-+ winenable |= (iodata.winenable.enable) ? (1<<plane) : 0;
-+ lcd->winenable = winenable;
-+ }
-+ break;
-+ case AU1200_LCD_GET_WINLOCATION:
-+ iodata.winlocation.x =
-+ (lcd->window[plane].winctrl0 & LCD_WINCTRL0_OX) >> 21;
-+ iodata.winlocation.y =
-+ (lcd->window[plane].winctrl0 & LCD_WINCTRL0_OY) >> 10;
-+ break;
-+ case AU1200_LCD_SET_WINLOCATION:
-+ au1200_setlocation(plane, iodata.winlocation.x, iodata.winlocation.y);
-+ break;
-+ case AU1200_LCD_GET_WINSIZE:
-+ iodata.winsize.hsz =
-+ (lcd->window[plane].winctrl1 & LCD_WINCTRL1_SZX) >> 11;
-+ iodata.winsize.vsz =
-+ (lcd->window[plane].winctrl0 & LCD_WINCTRL1_SZY) >> 0;
-+ break;
-+ case AU1200_LCD_SET_WINSIZE:
-+ au1200_setsize(plane, iodata.winsize.hsz, iodata.winsize.vsz);
-+ break;
-+ case AU1200_LCD_GET_BACKCOLOR:
-+ iodata.backcolor.color = lcd->backcolor;
-+ break;
-+ case AU1200_LCD_SET_BACKCOLOR:
-+ lcd->backcolor = iodata.backcolor.color;
-+ break;
-+ case AU1200_LCD_GET_COLORKEY:
-+ iodata.colorkey.key = lcd->colorkey;
-+ iodata.colorkey.mask = lcd->colorkeymsk;
-+ break;
-+ case AU1200_LCD_SET_COLORKEY:
-+ lcd->colorkey = iodata.colorkey.key;
-+ lcd->colorkeymsk = iodata.colorkey.mask;
-+ break;
-+ case AU1200_LCD_GET_PANEL:
-+ iodata.panel.panel = panel_index;
-+ break;
-+ case AU1200_LCD_SET_PANEL:
-+ if ((iodata.panel.panel >= 0) && (iodata.panel.panel < NUM_PANELS))
-+ {
-+ struct panel_settings *newpanel;
-+ panel_index = iodata.panel.panel;
-+ newpanel = &panels[panel_index];
-+ au1200_setpanel(newpanel);
-+ }
-+ break;
-+ }
-+
-+ return copy_to_user((void *) arg, &iodata, sizeof(au1200_lcd_getset_t)) ? -EFAULT : 0;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static struct fbgen_hwswitch au1200_switch = {
-+ au1200_detect,
-+ au1200_encode_fix,
-+ au1200_decode_var,
-+ au1200_encode_var,
-+ au1200_get_par,
-+ au1200_set_par,
-+ au1200_getcolreg,
-+ au1200_setcolreg,
-+ au1200_pan_display,
-+ au1200_blank,
-+ au1200_set_disp
-+};
-+
-+static void au1200_setpanel (struct panel_settings *newpanel)
-+{
-+ /*
-+ * Perform global setup/init of LCD controller
-+ */
-+ uint32 winenable;
-+
-+ /* Make sure all windows disabled */
-+ winenable = lcd->winenable;
-+ lcd->winenable = 0;
-+
-+ /*
-+ * Ensure everything is disabled before reconfiguring
-+ */
-+ if (lcd->screen & LCD_SCREEN_SEN)
-+ {
-+ /* Wait for vertical sync period */
-+ lcd->intstatus = LCD_INT_SS;
-+ while ((lcd->intstatus & LCD_INT_SS) == 0)
-+ ;
-+
-+ lcd->screen &= ~LCD_SCREEN_SEN; /*disable the controller*/
-+
-+ do
-+ {
-+ lcd->intstatus = lcd->intstatus; /*clear interrupts*/
-+ }
-+ /*wait for controller to shut down*/
-+ while ((lcd->intstatus & LCD_INT_SD) == 0);
-+
-+ /* Call shutdown of current panel (if up) */
-+ /* this must occur last, because if an external clock is driving
-+ the controller, the clock cannot be turned off before first
-+ shutting down the controller.
-+ */
-+ if (panel->device_shutdown != NULL) panel->device_shutdown();
-+ }
-+
-+ /* Check if only needing to turn off panel */
-+ if (panel == NULL) return;
-+
-+ panel = newpanel;
-+
-+ printk("Panel(%s), %dx%d\n", panel->name, panel->Xres, panel->Yres);
-+
-+ /*
-+ * Setup clocking if internal LCD clock source (assumes sys_auxpll valid)
-+ */
-+ if (!(panel->mode_clkcontrol & LCD_CLKCONTROL_EXT))
-+ {
-+ uint32 sys_clksrc;
-+ /* WARNING! This should really be a check since other peripherals can
-+ be affected by changins sys_auxpll */
-+ au_writel(panel->mode_auxpll, SYS_AUXPLL);
-+ sys_clksrc = au_readl(SYS_CLKSRC) & ~0x0000001f;
-+ sys_clksrc |= panel->mode_toyclksrc;
-+ au_writel(sys_clksrc, SYS_CLKSRC);
-+ }
-+
-+ /*
-+ * Configure panel timings
-+ */
-+ lcd->screen = panel->mode_screen;
-+ lcd->horztiming = panel->mode_horztiming;
-+ lcd->verttiming = panel->mode_verttiming;
-+ lcd->clkcontrol = panel->mode_clkcontrol;
-+ lcd->pwmdiv = panel->mode_pwmdiv;
-+ lcd->pwmhi = panel->mode_pwmhi;
-+ lcd->outmask = panel->mode_outmask;
-+ lcd->fifoctrl = panel->mode_fifoctrl;
-+ au_sync();
-+
-+ /* FIX!!! Check window settings to make sure still valid for new geometry */
-+ au1200_setlocation(0, win->w[0].xpos, win->w[0].ypos);
-+ au1200_setlocation(1, win->w[1].xpos, win->w[1].ypos);
-+ au1200_setlocation(2, win->w[2].xpos, win->w[2].ypos);
-+ au1200_setlocation(3, win->w[3].xpos, win->w[3].ypos);
-+ lcd->winenable = winenable;
-+
-+ /*
-+ * Re-enable screen now that it is configured
-+ */
-+ lcd->screen |= LCD_SCREEN_SEN;
-+ au_sync();
-+
-+ /* Call init of panel */
-+ if (panel->device_init != NULL) panel->device_init();
-+
-+#if 0
-+#define D(X) printk("%25s: %08X\n", #X, X)
-+ D(lcd->screen);
-+ D(lcd->horztiming);
-+ D(lcd->verttiming);
-+ D(lcd->clkcontrol);
-+ D(lcd->pwmdiv);
-+ D(lcd->pwmhi);
-+ D(lcd->outmask);
-+ D(lcd->fifoctrl);
-+ D(lcd->window[0].winctrl0);
-+ D(lcd->window[0].winctrl1);
-+ D(lcd->window[0].winctrl2);
-+ D(lcd->window[0].winbuf0);
-+ D(lcd->window[0].winbuf1);
-+ D(lcd->window[0].winbufctrl);
-+ D(lcd->window[1].winctrl0);
-+ D(lcd->window[1].winctrl1);
-+ D(lcd->window[1].winctrl2);
-+ D(lcd->window[1].winbuf0);
-+ D(lcd->window[1].winbuf1);
-+ D(lcd->window[1].winbufctrl);
-+ D(lcd->window[2].winctrl0);
-+ D(lcd->window[2].winctrl1);
-+ D(lcd->window[2].winctrl2);
-+ D(lcd->window[2].winbuf0);
-+ D(lcd->window[2].winbuf1);
-+ D(lcd->window[2].winbufctrl);
-+ D(lcd->window[3].winctrl0);
-+ D(lcd->window[3].winctrl1);
-+ D(lcd->window[3].winctrl2);
-+ D(lcd->window[3].winbuf0);
-+ D(lcd->window[3].winbuf1);
-+ D(lcd->window[3].winbufctrl);
-+ D(lcd->winenable);
-+ D(lcd->intenable);
-+ D(lcd->intstatus);
-+ D(lcd->backcolor);
-+ D(lcd->winenable);
-+ D(lcd->colorkey);
-+ D(lcd->colorkeymsk);
-+ D(lcd->hwc.cursorctrl);
-+ D(lcd->hwc.cursorpos);
-+ D(lcd->hwc.cursorcolor0);
-+ D(lcd->hwc.cursorcolor1);
-+ D(lcd->hwc.cursorcolor2);
-+ D(lcd->hwc.cursorcolor3);
-+#endif
-+}
-+
-+static int au1200_setsize (int plane, int xres, int yres)
-+{
-+#if 0
-+ uint32 winctrl0, winctrl1, winenable;
-+ int xsz, ysz;
-+
-+ /* FIX!!! X*Y can not surpass allocated memory */
-+
-+ printk("setsize: x %d y %d\n", xres, yres);
-+ winctrl1 = lcd->window[plane].winctrl1;
-+ printk("org winctrl1 %08X\n", winctrl1);
-+ winctrl1 &= ~(LCD_WINCTRL1_SZX | LCD_WINCTRL1_SZY);
-+
-+ xres -= 1;
-+ yres -= 1;
-+ winctrl1 |= (xres << 11);
-+ winctrl1 |= (yres << 0);
-+
-+ printk("new winctrl1 %08X\n", winctrl1);
-+
-+ /*winenable = lcd->winenable & (1 << plane); */
-+ /*lcd->winenable &= ~(1 << plane); */
-+ lcd->window[plane].winctrl1 = winctrl1;
-+ /*lcd->winenable |= winenable; */
-+#endif
-+ return 0;
-+}
-+
-+static int au1200_setlocation (int plane, int xpos, int ypos)
-+{
-+ uint32 winctrl0, winctrl1, winenable, fb_offset = 0;
-+ int xsz, ysz;
-+
-+ /* FIX!!! NOT CHECKING FOR COMPLETE OFFSCREEN YET */
-+
-+ winctrl0 = lcd->window[plane].winctrl0;
-+ winctrl1 = lcd->window[plane].winctrl1;
-+ winctrl0 &= (LCD_WINCTRL0_A | LCD_WINCTRL0_AEN);
-+ winctrl1 &= ~(LCD_WINCTRL1_SZX | LCD_WINCTRL1_SZY);
-+
-+ /* Check for off-screen adjustments */
-+ xsz = win->w[plane].xres;
-+ ysz = win->w[plane].yres;
-+ if ((xpos + win->w[plane].xres) > panel->Xres)
-+ {
-+ /* Off-screen to the right */
-+ xsz = panel->Xres - xpos; /* off by 1 ??? */
-+ /*printk("off screen right\n");*/
-+ }
-+
-+ if ((ypos + win->w[plane].yres) > panel->Yres)
-+ {
-+ /* Off-screen to the bottom */
-+ ysz = panel->Yres - ypos; /* off by 1 ??? */
-+ /*printk("off screen bottom\n");*/
-+ }
-+
-+ if (xpos < 0)
-+ {
-+ /* Off-screen to the left */
-+ xsz = win->w[plane].xres + xpos;
-+ fb_offset += (((0 - xpos) * winbpp(lcd->window[plane].winctrl1))/8);
-+ xpos = 0;
-+ /*printk("off screen left\n");*/
-+ }
-+
-+ if (ypos < 0)
-+ {
-+ /* Off-screen to the top */
-+ ysz = win->w[plane].yres + ypos;
-+ fb_offset += ((0 - ypos) * fb_pars[plane].line_length);
-+ ypos = 0;
-+ /*printk("off screen top\n");*/
-+ }
-+
-+ /* record settings */
-+ win->w[plane].xpos = xpos;
-+ win->w[plane].ypos = ypos;
-+
-+ xsz -= 1;
-+ ysz -= 1;
-+ winctrl0 |= (xpos << 21);
-+ winctrl0 |= (ypos << 10);
-+ winctrl1 |= (xsz << 11);
-+ winctrl1 |= (ysz << 0);
-+
-+ /* Disable the window while making changes, then restore WINEN */
-+ winenable = lcd->winenable & (1 << plane);
-+ lcd->winenable &= ~(1 << plane);
-+ lcd->window[plane].winctrl0 = winctrl0;
-+ lcd->window[plane].winctrl1 = winctrl1;
-+ lcd->window[plane].winbuf0 =
-+ lcd->window[plane].winbuf1 = fb_infos[plane].fb_phys + fb_offset;
-+ lcd->window[plane].winbufctrl = 0; /* select winbuf0 */
-+ lcd->winenable |= winenable;
-+
-+ return 0;
-+}
-+
-+static void au1200_setmode(int plane)
-+{
-+ /* Window/plane setup */
-+ lcd->window[plane].winctrl1 = ( 0
-+ | LCD_WINCTRL1_PRI_N(plane)
-+ | win->w[plane].mode_winctrl1 /* FRM,CCO,PO,PIPE */
-+ ) ;
-+
-+ au1200_setlocation(plane, win->w[plane].xpos, win->w[plane].ypos);
-+
-+ lcd->window[plane].winctrl2 = ( 0
-+ | LCD_WINCTRL2_CKMODE_00
-+ | LCD_WINCTRL2_DBM
-+/* | LCD_WINCTRL2_RAM */
-+ | LCD_WINCTRL2_BX_N(fb_pars[plane].line_length)
-+ | LCD_WINCTRL2_SCX_1
-+ | LCD_WINCTRL2_SCY_1
-+ ) ;
-+ lcd->winenable |= win->w[plane].mode_winenable;
-+ au_sync();
-+
-+}
-+
-+static unsigned long
-+au1200fb_alloc_fbmem (unsigned long size)
-+{
-+ /* __get_free_pages() fulfills a max request of 2MB */
-+ /* do multiple requests to obtain large contigous mem */
-+#define MAX_GFP 0x00200000
-+
-+ unsigned long mem, amem, alloced = 0, allocsize;
-+
-+ size += 0x1000;
-+ allocsize = (size < MAX_GFP) ? size : MAX_GFP;
-+
-+ /* Get first chunk */
-+ mem = (unsigned long )
-+ __get_free_pages(GFP_ATOMIC | GFP_DMA, get_order(allocsize));
-+ if (mem != 0) alloced = allocsize;
-+
-+ /* Get remaining, contiguous chunks */
-+ while (alloced < size)
-+ {
-+ amem = (unsigned long )
-+ __get_free_pages(GFP_ATOMIC | GFP_DMA, get_order(allocsize));
-+ if (amem != 0)
-+ alloced += allocsize;
-+
-+ /* check for contiguous mem alloced */
-+ if ((amem == 0) || (amem + allocsize) != mem)
-+ break;
-+ else
-+ mem = amem;
-+ }
-+ return mem;
-+}
-+
-+int __init au1200fb_init(void)
-+{
-+ int num_panels = sizeof(panels)/sizeof(struct panel_settings);
-+ struct au1200fb_info *fb_info;
-+ struct display *disp;
-+ struct au1200fb_par *par;
-+ unsigned long page;
-+ int plane, bpp;
-+
-+ /*
-+ * Get the panel information/display mode
-+ */
-+ if (panel_index < 0)
-+ panel_index = board_au1200fb_panel();
-+ if ((panel_index < 0) || (panel_index >= num_panels)) {
-+ printk("ERROR: INVALID PANEL %d\n", panel_index);
-+ return -EINVAL;
-+ }
-+ panel = &panels[panel_index];
-+ win = &windows[window_index];
-+
-+ printk("au1200fb: Panel %d %s\n", panel_index, panel->name);
-+ printk("au1200fb: Win %d %s\n", window_index, win->name);
-+
-+ /* Global setup/init */
-+ au1200_setpanel(panel);
-+ lcd->intenable = 0;
-+ lcd->intstatus = ~0;
-+ lcd->backcolor = win->mode_backcolor;
-+ lcd->winenable = 0;
-+
-+ /* Setup Color Key - FIX!!! */
-+ lcd->colorkey = win->mode_colorkey;
-+ lcd->colorkeymsk = win->mode_colorkeymsk;
-+
-+ /* Setup HWCursor - FIX!!! Need to support this eventually */
-+ lcd->hwc.cursorctrl = 0;
-+ lcd->hwc.cursorpos = 0;
-+ lcd->hwc.cursorcolor0 = 0;
-+ lcd->hwc.cursorcolor1 = 0;
-+ lcd->hwc.cursorcolor2 = 0;
-+ lcd->hwc.cursorcolor3 = 0;
-+
-+ /* Register each plane as a frame buffer device */
-+ for (plane = 0; plane < CONFIG_FB_AU1200_DEVS; ++plane)
-+ {
-+ fb_info = &fb_infos[plane];
-+ disp = &disps[plane];
-+ par = &fb_pars[plane];
-+
-+ bpp = winbpp(win->w[plane].mode_winctrl1);
-+ if (win->w[plane].xres == 0)
-+ win->w[plane].xres = panel->Xres;
-+ if (win->w[plane].yres == 0)
-+ win->w[plane].yres = panel->Yres;
-+
-+ par->var.xres =
-+ par->var.xres_virtual = win->w[plane].xres;
-+ par->var.yres =
-+ par->var.yres_virtual = win->w[plane].yres;
-+ par->var.bits_per_pixel = bpp;
-+ par->line_length = win->w[plane].xres * bpp / 8; /* in bytes */
-+ /*
-+ * Allocate LCD framebuffer from system memory
-+ * Set page reserved so that mmap will work. This is necessary
-+ * since we'll be remapping normal memory.
-+ */
-+ fb_info->fb_size = (win->w[plane].xres * win->w[plane].yres * bpp) / 8;
-+ fb_info->fb_virt_start = au1200fb_alloc_fbmem(fb_info->fb_size);
-+ if (!fb_info->fb_virt_start) {
-+ printk("Unable to allocate fb memory\n");
-+ return -ENOMEM;
-+ }
-+ fb_info->fb_phys = virt_to_bus((void *)fb_info->fb_virt_start);
-+ for (page = fb_info->fb_virt_start;
-+ page < PAGE_ALIGN(fb_info->fb_virt_start + fb_info->fb_size);
-+ page += PAGE_SIZE) {
-+ SetPageReserved(virt_to_page(page));
-+ }
-+ /* Convert to kseg1 */
-+ fb_info->fb_virt_start =
-+ (void *)((u32)fb_info->fb_virt_start | 0xA0000000);
-+ /* FIX!!! may wish to avoid this to save startup time??? */
-+ memset((void *)fb_info->fb_virt_start, 0, fb_info->fb_size);
-+
-+ fb_info->gen.parsize = sizeof(struct au1200fb_par);
-+ fb_info->gen.fbhw = &au1200_switch;
-+ strcpy(fb_info->gen.info.modename, "Au1200 LCD");
-+ fb_info->gen.info.changevar = NULL;
-+ fb_info->gen.info.node = -1;
-+
-+ fb_info->gen.info.fbops = &au1200fb_ops;
-+ fb_info->gen.info.disp = disp;
-+ fb_info->gen.info.switch_con = &fbgen_switch;
-+ fb_info->gen.info.updatevar = &fbgen_update_var;
-+ fb_info->gen.info.blank = &fbgen_blank;
-+ fb_info->gen.info.flags = FBINFO_FLAG_DEFAULT;
-+
-+ fb_info->nohwcursor = 1;
-+ fb_info->noblanking = 1;
-+
-+ /* This should give a reasonable default video mode */
-+ fbgen_get_var(&disp->var, -1, &fb_info->gen.info);
-+ fbgen_do_set_var(&disp->var, 1, &fb_info->gen);
-+ fbgen_set_disp(-1, &fb_info->gen);
-+ fbgen_install_cmap(0, &fb_info->gen);
-+
-+ /* Turn on plane */
-+ au1200_setmode(plane);
-+
-+ if (register_framebuffer(&fb_info->gen.info) < 0)
-+ return -EINVAL;
-+
-+ printk(KERN_INFO "fb%d: %s plane %d @ %08X (%d x %d x %d)\n",
-+ GET_FB_IDX(fb_info->gen.info.node),
-+ fb_info->gen.info.modename, plane, fb_info->fb_phys,
-+ win->w[plane].xres, win->w[plane].yres, bpp);
-+ }
-+ /* uncomment this if your driver cannot be unloaded */
-+ /* MOD_INC_USE_COUNT; */
-+ return 0;
-+}
-+
-+void au1200fb_setup(char *options, int *ints)
-+{
-+ char* this_opt;
-+ int i;
-+ int num_panels = sizeof(panels)/sizeof(struct panel_settings);
-+
-+ if (!options || !*options)
-+ return;
-+
-+ for(this_opt=strtok(options, ","); this_opt;
-+ this_opt=strtok(NULL, ",")) {
-+ if (!strncmp(this_opt, "panel:", 6)) {
-+ int i;
-+ long int li;
-+ char *endptr;
-+ this_opt += 6;
-+
-+ /* Panel name can be name, "bs" for board-switch, or number/index */
-+ li = simple_strtol(this_opt, &endptr, 0);
-+ if (*endptr == '\0') {
-+ panel_index = (int)li;
-+ }
-+ else if (strcmp(this_opt, "bs") == 0) {
-+ panel_index = board_au1200fb_panel();
-+ }
-+ else
-+ for (i=0; i<num_panels; i++) {
-+ if (!strcmp(this_opt, panels[i].name)) {
-+ panel_index = i;
-+ break;
-+ }
-+ }
-+ }
-+ else if (!strncmp(this_opt, "nohwcursor", 10)) {
-+ printk("nohwcursor\n");
-+ fb_infos[0].nohwcursor = 1;
-+ }
-+ }
-+
-+ printk("au1200fb: Panel %d %s\n", panel_index,
-+ panels[panel_index].name);
-+}
-+
-+
-+
-+#ifdef MODULE
-+MODULE_LICENSE("GPL");
-+MODULE_DESCRIPTION("Au1200 LCD framebuffer driver");
-+
-+void au1200fb_cleanup(struct fb_info *info)
-+{
-+ unregister_framebuffer(info);
-+}
-+
-+module_init(au1200fb_init);
-+module_exit(au1200fb_cleanup);
-+#endif /* MODULE */
-+
-+
-diff -Nur linux-2.4.32-rc1/drivers/video/au1200fb.h linux-2.4.32-rc1.mips/drivers/video/au1200fb.h
---- linux-2.4.32-rc1/drivers/video/au1200fb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/video/au1200fb.h 2005-02-11 22:16:44.000000000 +0100
-@@ -0,0 +1,288 @@
-+/*
-+ * BRIEF MODULE DESCRIPTION
-+ * Hardware definitions for the Au1200 LCD controller
-+ *
-+ * Copyright 2004 AMD
-+ * Author: AMD
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * You should have received a copy of the GNU General Public License along
-+ * with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+#ifndef _AU1200LCD_H
-+#define _AU1200LCD_H
-+
-+/********************************************************************/
-+#define AU1200_LCD_ADDR 0xB5000000
-+
-+#define uint8 unsigned char
-+#define uint32 unsigned int
-+
-+typedef volatile struct
-+{
-+ uint32 reserved0;
-+ uint32 screen;
-+ uint32 backcolor;
-+ uint32 horztiming;
-+ uint32 verttiming;
-+ uint32 clkcontrol;
-+ uint32 pwmdiv;
-+ uint32 pwmhi;
-+ uint32 reserved1;
-+ uint32 winenable;
-+ uint32 colorkey;
-+ uint32 colorkeymsk;
-+ struct
-+ {
-+ uint32 cursorctrl;
-+ uint32 cursorpos;
-+ uint32 cursorcolor0;
-+ uint32 cursorcolor1;
-+ uint32 cursorcolor2;
-+ uint32 cursorcolor3;
-+ } hwc;
-+ uint32 intstatus;
-+ uint32 intenable;
-+ uint32 outmask;
-+ uint32 fifoctrl;
-+ uint32 reserved2[(0x0100-0x0058)/4];
-+ struct
-+ {
-+ uint32 winctrl0;
-+ uint32 winctrl1;
-+ uint32 winctrl2;
-+ uint32 winbuf0;
-+ uint32 winbuf1;
-+ uint32 winbufctrl;
-+ uint32 winreserved0;
-+ uint32 winreserved1;
-+ } window[4];
-+
-+ uint32 reserved3[(0x0400-0x0180)/4];
-+
-+ uint32 palette[(0x0800-0x0400)/4];
-+
-+ uint8 cursorpattern[256];
-+
-+} AU1200_LCD;
-+
-+/* lcd_screen */
-+#define LCD_SCREEN_SEN (1<<31)
-+#define LCD_SCREEN_SX (0x07FF<<19)
-+#define LCD_SCREEN_SY (0x07FF<< 8)
-+#define LCD_SCREEN_SWP (1<<7)
-+#define LCD_SCREEN_SWD (1<<6)
-+#define LCD_SCREEN_ST (7<<0)
-+#define LCD_SCREEN_ST_TFT (0<<0)
-+#define LCD_SCREEN_SX_N(WIDTH) ((WIDTH-1)<<19)
-+#define LCD_SCREEN_SY_N(HEIGHT) ((HEIGHT-1)<<8)
-+#define LCD_SCREEN_ST_CSTN (1<<0)
-+#define LCD_SCREEN_ST_CDSTN (2<<0)
-+#define LCD_SCREEN_ST_M8STN (3<<0)
-+#define LCD_SCREEN_ST_M4STN (4<<0)
-+
-+/* lcd_backcolor */
-+#define LCD_BACKCOLOR_SBGR (0xFF<<16)
-+#define LCD_BACKCOLOR_SBGG (0xFF<<8)
-+#define LCD_BACKCOLOR_SBGB (0xFF<<0)
-+#define LCD_BACKCOLOR_SBGR_N(N) ((N)<<16)
-+#define LCD_BACKCOLOR_SBGG_N(N) ((N)<<8)
-+#define LCD_BACKCOLOR_SBGB_N(N) ((N)<<0)
-+
-+/* lcd_winenable */
-+#define LCD_WINENABLE_WEN3 (1<<3)
-+#define LCD_WINENABLE_WEN2 (1<<2)
-+#define LCD_WINENABLE_WEN1 (1<<1)
-+#define LCD_WINENABLE_WEN0 (1<<0)
-+
-+/* lcd_colorkey */
-+#define LCD_COLORKEY_CKR (0xFF<<16)
-+#define LCD_COLORKEY_CKG (0xFF<<8)
-+#define LCD_COLORKEY_CKB (0xFF<<0)
-+#define LCD_COLORKEY_CKR_N(N) ((N)<<16)
-+#define LCD_COLORKEY_CKG_N(N) ((N)<<8)
-+#define LCD_COLORKEY_CKB_N(N) ((N)<<0)
-+
-+/* lcd_colorkeymsk */
-+#define LCD_COLORKEYMSK_CKMR (0xFF<<16)
-+#define LCD_COLORKEYMSK_CKMG (0xFF<<8)
-+#define LCD_COLORKEYMSK_CKMB (0xFF<<0)
-+#define LCD_COLORKEYMSK_CKMR_N(N) ((N)<<16)
-+#define LCD_COLORKEYMSK_CKMG_N(N) ((N)<<8)
-+#define LCD_COLORKEYMSK_CKMB_N(N) ((N)<<0)
-+
-+/* lcd windows control 0 */
-+#define LCD_WINCTRL0_OX (0x07FF<<21)
-+#define LCD_WINCTRL0_OY (0x07FF<<10)
-+#define LCD_WINCTRL0_A (0x00FF<<2)
-+#define LCD_WINCTRL0_AEN (1<<1)
-+#define LCD_WINCTRL0_OX_N(N) ((N)<<21)
-+#define LCD_WINCTRL0_OY_N(N) ((N)<<10)
-+#define LCD_WINCTRL0_A_N(N) ((N)<<2)
-+
-+/* lcd windows control 1 */
-+#define LCD_WINCTRL1_PRI (3<<30)
-+#define LCD_WINCTRL1_PIPE (1<<29)
-+#define LCD_WINCTRL1_FRM (0xF<<25)
-+#define LCD_WINCTRL1_CCO (1<<24)
-+#define LCD_WINCTRL1_PO (3<<22)
-+#define LCD_WINCTRL1_SZX (0x07FF<<11)
-+#define LCD_WINCTRL1_SZY (0x07FF<<0)
-+#define LCD_WINCTRL1_FRM_1BPP (0<<25)
-+#define LCD_WINCTRL1_FRM_2BPP (1<<25)
-+#define LCD_WINCTRL1_FRM_4BPP (2<<25)
-+#define LCD_WINCTRL1_FRM_8BPP (3<<25)
-+#define LCD_WINCTRL1_FRM_12BPP (4<<25)
-+#define LCD_WINCTRL1_FRM_16BPP655 (5<<25)
-+#define LCD_WINCTRL1_FRM_16BPP565 (6<<25)
-+#define LCD_WINCTRL1_FRM_16BPP556 (7<<25)
-+#define LCD_WINCTRL1_FRM_16BPPI1555 (8<<25)
-+#define LCD_WINCTRL1_FRM_16BPPI5551 (9<<25)
-+#define LCD_WINCTRL1_FRM_16BPPA1555 (10<<25)
-+#define LCD_WINCTRL1_FRM_16BPPA5551 (11<<25)
-+#define LCD_WINCTRL1_FRM_24BPP (12<<25)
-+#define LCD_WINCTRL1_FRM_32BPP (13<<25)
-+#define LCD_WINCTRL1_PRI_N(N) ((N)<<30)
-+#define LCD_WINCTRL1_PO_00 (0<<22)
-+#define LCD_WINCTRL1_PO_01 (1<<22)
-+#define LCD_WINCTRL1_PO_10 (2<<22)
-+#define LCD_WINCTRL1_PO_11 (3<<22)
-+#define LCD_WINCTRL1_SZX_N(N) ((N-1)<<11)
-+#define LCD_WINCTRL1_SZY_N(N) ((N-1)<<0)
-+
-+/* lcd windows control 2 */
-+#define LCD_WINCTRL2_CKMODE (3<<24)
-+#define LCD_WINCTRL2_DBM (1<<23)
-+#define LCD_WINCTRL2_RAM (3<<21)
-+#define LCD_WINCTRL2_BX (0x1FFF<<8)
-+#define LCD_WINCTRL2_SCX (0xF<<4)
-+#define LCD_WINCTRL2_SCY (0xF<<0)
-+#define LCD_WINCTRL2_CKMODE_00 (0<<24)
-+#define LCD_WINCTRL2_CKMODE_01 (1<<24)
-+#define LCD_WINCTRL2_CKMODE_10 (2<<24)
-+#define LCD_WINCTRL2_CKMODE_11 (3<<24)
-+#define LCD_WINCTRL2_RAM_NONE (0<<21)
-+#define LCD_WINCTRL2_RAM_PALETTE (1<<21)
-+#define LCD_WINCTRL2_RAM_GAMMA (2<<21)
-+#define LCD_WINCTRL2_RAM_BUFFER (3<<21)
-+#define LCD_WINCTRL2_BX_N(N) ((N)<<8)
-+#define LCD_WINCTRL2_SCX_1 (0<<4)
-+#define LCD_WINCTRL2_SCX_2 (1<<4)
-+#define LCD_WINCTRL2_SCX_4 (2<<4)
-+#define LCD_WINCTRL2_SCY_1 (0<<0)
-+#define LCD_WINCTRL2_SCY_2 (1<<0)
-+#define LCD_WINCTRL2_SCY_4 (2<<0)
-+
-+/* lcd windows buffer control */
-+#define LCD_WINBUFCTRL_DB (1<<1)
-+#define LCD_WINBUFCTRL_DBN (1<<0)
-+
-+/* lcd_intstatus, lcd_intenable */
-+#define LCD_INT_IFO (0xF<<14)
-+#define LCD_INT_IFU (0xF<<10)
-+#define LCD_INT_OFO (1<<9)
-+#define LCD_INT_OFU (1<<8)
-+#define LCD_INT_WAIT (1<<3)
-+#define LCD_INT_SD (1<<2)
-+#define LCD_INT_SA (1<<1)
-+#define LCD_INT_SS (1<<0)
-+
-+/* lcd_horztiming */
-+#define LCD_HORZTIMING_HND2 (0x1FF<<18)
-+#define LCD_HORZTIMING_HND1 (0x1FF<<9)
-+#define LCD_HORZTIMING_HPW (0x1FF<<0)
-+#define LCD_HORZTIMING_HND2_N(N)(((N)-1)<<18)
-+#define LCD_HORZTIMING_HND1_N(N)(((N)-1)<<9)
-+#define LCD_HORZTIMING_HPW_N(N) (((N)-1)<<0)
-+
-+/* lcd_verttiming */
-+#define LCD_VERTTIMING_VND2 (0x1FF<<18)
-+#define LCD_VERTTIMING_VND1 (0x1FF<<9)
-+#define LCD_VERTTIMING_VPW (0x1FF<<0)
-+#define LCD_VERTTIMING_VND2_N(N)(((N)-1)<<18)
-+#define LCD_VERTTIMING_VND1_N(N)(((N)-1)<<9)
-+#define LCD_VERTTIMING_VPW_N(N) (((N)-1)<<0)
-+
-+/* lcd_clkcontrol */
-+#define LCD_CLKCONTROL_EXT (1<<22)
-+#define LCD_CLKCONTROL_DELAY (3<<20)
-+#define LCD_CLKCONTROL_CDD (1<<19)
-+#define LCD_CLKCONTROL_IB (1<<18)
-+#define LCD_CLKCONTROL_IC (1<<17)
-+#define LCD_CLKCONTROL_IH (1<<16)
-+#define LCD_CLKCONTROL_IV (1<<15)
-+#define LCD_CLKCONTROL_BF (0x1F<<10)
-+#define LCD_CLKCONTROL_PCD (0x3FF<<0)
-+#define LCD_CLKCONTROL_BF_N(N) (((N)-1)<<10)
-+#define LCD_CLKCONTROL_PCD_N(N) ((N)<<0)
-+
-+/* lcd_pwmdiv */
-+#define LCD_PWMDIV_EN (1<<31)
-+#define LCD_PWMDIV_PWMDIV (0x1FFFF<<0)
-+#define LCD_PWMDIV_PWMDIV_N(N) ((N)<<0)
-+
-+/* lcd_pwmhi */
-+#define LCD_PWMHI_PWMHI1 (0xFFFF<<16)
-+#define LCD_PWMHI_PWMHI0 (0xFFFF<<0)
-+#define LCD_PWMHI_PWMHI1_N(N) ((N)<<16)
-+#define LCD_PWMHI_PWMHI0_N(N) ((N)<<0)
-+
-+/* lcd_hwccon */
-+#define LCD_HWCCON_EN (1<<0)
-+
-+/* lcd_cursorpos */
-+#define LCD_CURSORPOS_HWCXOFF (0x1F<<27)
-+#define LCD_CURSORPOS_HWCXPOS (0x07FF<<16)
-+#define LCD_CURSORPOS_HWCYOFF (0x1F<<11)
-+#define LCD_CURSORPOS_HWCYPOS (0x07FF<<0)
-+#define LCD_CURSORPOS_HWCXOFF_N(N) ((N)<<27)
-+#define LCD_CURSORPOS_HWCXPOS_N(N) ((N)<<16)
-+#define LCD_CURSORPOS_HWCYOFF_N(N) ((N)<<11)
-+#define LCD_CURSORPOS_HWCYPOS_N(N) ((N)<<0)
-+
-+/* lcd_cursorcolor */
-+#define LCD_CURSORCOLOR_HWCA (0xFF<<24)
-+#define LCD_CURSORCOLOR_HWCR (0xFF<<16)
-+#define LCD_CURSORCOLOR_HWCG (0xFF<<8)
-+#define LCD_CURSORCOLOR_HWCB (0xFF<<0)
-+#define LCD_CURSORCOLOR_HWCA_N(N) ((N)<<24)
-+#define LCD_CURSORCOLOR_HWCR_N(N) ((N)<<16)
-+#define LCD_CURSORCOLOR_HWCG_N(N) ((N)<<8)
-+#define LCD_CURSORCOLOR_HWCB_N(N) ((N)<<0)
-+
-+/* lcd_fifoctrl */
-+#define LCD_FIFOCTRL_F3IF (1<<29)
-+#define LCD_FIFOCTRL_F3REQ (0x1F<<24)
-+#define LCD_FIFOCTRL_F2IF (1<<29)
-+#define LCD_FIFOCTRL_F2REQ (0x1F<<16)
-+#define LCD_FIFOCTRL_F1IF (1<<29)
-+#define LCD_FIFOCTRL_F1REQ (0x1F<<8)
-+#define LCD_FIFOCTRL_F0IF (1<<29)
-+#define LCD_FIFOCTRL_F0REQ (0x1F<<0)
-+#define LCD_FIFOCTRL_F3REQ_N(N) ((N-1)<<24)
-+#define LCD_FIFOCTRL_F2REQ_N(N) ((N-1)<<16)
-+#define LCD_FIFOCTRL_F1REQ_N(N) ((N-1)<<8)
-+#define LCD_FIFOCTRL_F0REQ_N(N) ((N-1)<<0)
-+
-+/* lcd_outmask */
-+#define LCD_OUTMASK_MASK (0x00FFFFFF)
-+
-+/********************************************************************/
-+#endif /* _AU1200LCD_H */
-diff -Nur linux-2.4.32-rc1/drivers/video/Config.in linux-2.4.32-rc1.mips/drivers/video/Config.in
---- linux-2.4.32-rc1/drivers/video/Config.in 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/video/Config.in 2005-02-11 22:16:44.000000000 +0100
-@@ -87,8 +87,8 @@
- if [ "$CONFIG_HP300" = "y" ]; then
- define_bool CONFIG_FB_HP300 y
- fi
-- if [ "$ARCH" = "alpha" ]; then
-- tristate ' TGA framebuffer support' CONFIG_FB_TGA
-+ if [ "$ARCH" = "alpha" -o "$CONFIG_TC" = "y" ]; then
-+ tristate ' TGA/SFB+ framebuffer support' CONFIG_FB_TGA
- fi
- if [ "$CONFIG_X86" = "y" ]; then
- bool ' VESA VGA graphics console' CONFIG_FB_VESA
-@@ -121,6 +121,17 @@
- hex ' Framebuffer Base Address' CONFIG_E1355_FB_BASE a8200000
- fi
- fi
-+ if [ "$CONFIG_SOC_AU1100" = "y" ]; then
-+ bool ' Au1100 LCD Driver' CONFIG_FB_AU1100
-+ fi
-+
-+ if [ "$CONFIG_SOC_AU1200" = "y" ]; then
-+ bool ' Au1200 LCD Driver' CONFIG_FB_AU1200
-+ if [ "$CONFIG_FB_AU1200" = "y" ]; then
-+ int ' Number of planes (1 to 4)' CONFIG_FB_AU1200_DEVS 1
-+ fi
-+ fi
-+
- if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
- if [ "$CONFIG_PCI" != "n" ]; then
- tristate ' Matrox acceleration (EXPERIMENTAL)' CONFIG_FB_MATROX
-@@ -178,9 +189,6 @@
- bool ' Use CRT on Pb1100 ' CONFIG_PB1500_CRT
- bool ' Use TFT Panel on Pb1100 ' CONFIG_PB1500_TFT
- fi
-- if [ "$CONFIG_SOC_AU1100" = "y" ]; then
-- bool ' Au1100 LCD Driver' CONFIG_FB_AU1100
-- fi
- fi
- fi
- fi
-diff -Nur linux-2.4.32-rc1/drivers/video/fbmem.c linux-2.4.32-rc1.mips/drivers/video/fbmem.c
---- linux-2.4.32-rc1/drivers/video/fbmem.c 2005-06-01 02:56:56.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/video/fbmem.c 2005-05-25 19:14:24.000000000 +0200
-@@ -139,6 +139,8 @@
- extern int e1356fb_setup(char*);
- extern int au1100fb_init(void);
- extern int au1100fb_setup(char*);
-+extern int au1200fb_init(void);
-+extern int au1200fb_setup(char*);
- extern int pvr2fb_init(void);
- extern int pvr2fb_setup(char*);
- extern int sstfb_init(void);
-@@ -331,6 +333,9 @@
- #ifdef CONFIG_FB_AU1100
- { "au1100fb", au1100fb_init, au1100fb_setup },
- #endif
-+#ifdef CONFIG_FB_AU1200
-+ { "au1200fb", au1200fb_init, au1200fb_setup },
-+#endif
- #ifdef CONFIG_FB_IT8181
- { "it8181fb", it8181fb_init, it8181fb_setup },
- #endif
-diff -Nur linux-2.4.32-rc1/drivers/video/ims332.h linux-2.4.32-rc1.mips/drivers/video/ims332.h
---- linux-2.4.32-rc1/drivers/video/ims332.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/video/ims332.h 2003-12-22 17:02:20.000000000 +0100
-@@ -0,0 +1,275 @@
-+/*
-+ * linux/drivers/video/ims332.h
-+ *
-+ * Copyright 2003 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-+ *
-+ * This file is subject to the terms and conditions of the GNU General
-+ * Public License. See the file COPYING in the main directory of this
-+ * archive for more details.
-+ */
-+#include <linux/types.h>
-+
-+/*
-+ * IMS332 16-bit wide, 128-bit aligned registers.
-+ */
-+struct _ims332_reg {
-+ volatile u16 r;
-+ u16 pad[7];
-+};
-+
-+struct _ims332_regs {
-+#define IMS332_BOOT_PLL_MUTLIPLIER 0x00001f
-+#define IMS332_BOOT_CLOCK_SOURCE_SEL 0x000020
-+#define IMS332_BOOT_ADDRESS_ALIGNMENT 0x000040
-+#define IMS332_BOOT_WRITE_ZERO 0xffff80
-+ struct _ims332_reg boot;
-+ struct _ims332_reg pad0[0x020 - 0x000];
-+ struct _ims332_reg half_sync;
-+ struct _ims332_reg back_porch;
-+ struct _ims332_reg display;
-+ struct _ims332_reg short_display;
-+ struct _ims332_reg broad_pulse;
-+ struct _ims332_reg vsync;
-+ struct _ims332_reg vpre_equalise;
-+ struct _ims332_reg vpost_equalise;
-+ struct _ims332_reg vblank;
-+ struct _ims332_reg vdisplay;
-+ struct _ims332_reg line_time;
-+ struct _ims332_reg line_start;
-+ struct _ims332_reg mem_init;
-+ struct _ims332_reg transfer_delay;
-+ struct _ims332_reg pad1[0x03f - 0x02e];
-+ struct _ims332_reg pixel_address_mask;
-+ struct _ims332_reg pad2[0x05f - 0x040];
-+
-+#define IMS332_CTRL_A_BOOT_ENABLE_VTG 0x000001
-+#define IMS332_CTRL_A_SCREEN_FORMAT 0x000002
-+#define IMS332_CTRL_A_INTERLACED_STANDARD 0x000004
-+#define IMS332_CTRL_A_OPERATING_MODE 0x000008
-+#define IMS332_CTRL_A_FRAME_FLYBACK_PATTERN 0x000010
-+#define IMS332_CTRL_A_DIGITAL_SYNC_FORMAT 0x000020
-+#define IMS332_CTRL_A_ANALOGUE_VIDEO_FORMAT 0x000040
-+#define IMS332_CTRL_A_BLANK_LEVEL 0x000080
-+#define IMS332_CTRL_A_BLANK_IO 0x000100
-+#define IMS332_CTRL_A_BLANK_FUNCTION_SWITCH 0x000200
-+#define IMS332_CTRL_A_FORCE_BLANKING 0x000400
-+#define IMS332_CTRL_A_TURN_OFF_BLANKING 0x000800
-+#define IMS332_CTRL_A_VRAM_ADDRESS_INCREMENT 0x003000
-+#define IMS332_CTRL_A_TURN_OFF_DMA 0x004000
-+#define IMS332_CTRL_A_SYNC_DELAY 0x038000
-+#define IMS332_CTRL_A_PIXEL_PORT_INTERLEAVING 0x040000
-+#define IMS332_CTRL_A_DELAYED_SAMPLING 0x080000
-+#define IMS332_CTRL_A_BITS_PER_PIXEL 0x700000
-+#define IMS332_CTRL_A_CURSOR_DISABLE 0x800000
-+ struct _ims332_reg config_control_a;
-+ struct _ims332_reg pad3[0x06f - 0x060];
-+
-+#define IMS332_CTRL_B_WRITE_ZERO 0xffffff
-+ struct _ims332_reg config_control_b;
-+ struct _ims332_reg pad4[0x07f - 0x070];
-+ struct _ims332_reg screen_top;
-+ struct _ims332_reg pad5[0x0a0 - 0x080];
-+ /* cursor color palette, 3 entries, reg no. 0xa1 - 0xa3 */
-+ struct _ims332_reg cursor_color_palette0;
-+ struct _ims332_reg cursor_color_palette1;
-+ struct _ims332_reg cursor_color_palette2;
-+ struct _ims332_reg pad6[0x0bf - 0x0a3];
-+ struct _ims332_reg rgb_frame_checksum0;
-+ struct _ims332_reg rgb_frame_checksum1;
-+ struct _ims332_reg rgb_frame_checksum2;
-+ struct _ims332_reg pad7[0x0c6 - 0x0c2];
-+ struct _ims332_reg cursor_start;
-+ struct _ims332_reg pad8[0x0ff - 0x0c7];
-+ /* color palette, 256 entries of form 0x00BBGGRR, reg no. 0x100 - 0x1ff */
-+ struct _ims332_reg color_palette[0x1ff - 0x0ff];
-+ /* hardware cursor bitmap, reg no. 0x200 - 0x3ff */
-+ struct _ims332_reg cursor_ram[0x3ff - 0x1ff];
-+};
-+
-+/*
-+ * In the functions below we use some weird looking helper variables to
-+ * access most members of this struct, otherwise the compiler splits
-+ * the read/write in two byte accesses.
-+ */
-+struct ims332_regs {
-+ struct _ims332_regs rw;
-+ char pad0[0x80000 - sizeof (struct _ims332_regs)];
-+ struct _ims332_regs r;
-+ char pad1[0xa0000 - (sizeof (struct _ims332_regs) + 0x80000)];
-+ struct _ims332_regs w;
-+} __attribute__((packed));
-+
-+static inline void ims332_control_reg_bits(struct ims332_regs *regs, u32 mask,
-+ u32 val)
-+{
-+ volatile u16 *ctr = &(regs->r.config_control_a.r);
-+ volatile u16 *ctw = &(regs->w.config_control_a.r);
-+ u32 ctrl;
-+
-+ mb();
-+ ctrl = *ctr;
-+ rmb();
-+ ctrl |= ((regs->rw.boot.r << 8) & 0x00ff0000);
-+ ctrl |= val & mask;
-+ ctrl &= ~(~val & mask);
-+ wmb();
-+ regs->rw.boot.r = (ctrl >> 8) & 0xff00;
-+ wmb();
-+ *ctw = ctrl & 0xffff;
-+}
-+
-+/* FIXME: This is maxinefb specific. */
-+static inline void ims332_bootstrap(struct ims332_regs *regs)
-+{
-+ volatile u16 *ctw = &(regs->w.config_control_a.r);
-+ u32 ctrl = IMS332_CTRL_A_BOOT_ENABLE_VTG | IMS332_CTRL_A_TURN_OFF_DMA;
-+
-+ /* bootstrap sequence */
-+ mb();
-+ regs->rw.boot.r = 0;
-+ wmb();
-+ *ctw = 0;
-+
-+ /* init control A register */
-+ wmb();
-+ regs->rw.boot.r = (ctrl >> 8) & 0xff00;
-+ wmb();
-+ *ctw = ctrl & 0xffff;
-+}
-+
-+static inline void ims332_blank_screen(struct ims332_regs *regs, int blank)
-+{
-+ ims332_control_reg_bits(regs, IMS332_CTRL_A_FORCE_BLANKING,
-+ blank ? IMS332_CTRL_A_FORCE_BLANKING : 0);
-+}
-+
-+static inline void ims332_set_color_depth(struct ims332_regs *regs, u32 depth)
-+{
-+ u32 dp;
-+ u32 mask = (IMS332_CTRL_A_PIXEL_PORT_INTERLEAVING
-+ | IMS332_CTRL_A_DELAYED_SAMPLING
-+ | IMS332_CTRL_A_BITS_PER_PIXEL);
-+
-+ switch (depth) {
-+ case 1: dp = 0 << 20; break;
-+ case 2: dp = 1 << 20; break;
-+ case 4: dp = 2 << 20; break;
-+ case 8: dp = 3 << 20; break;
-+ case 15: dp = (4 << 20) | IMS332_CTRL_A_PIXEL_PORT_INTERLEAVING; break;
-+ case 16: dp = (5 << 20) | IMS332_CTRL_A_PIXEL_PORT_INTERLEAVING; break;
-+ default: return;
-+ }
-+ ims332_control_reg_bits(regs, mask, dp);
-+
-+ if (depth <= 8) {
-+ volatile u16 *pmask = &(regs->w.pixel_address_mask.r);
-+ u32 dm = (1 << depth) - 1;
-+
-+ wmb();
-+ regs->rw.boot.r = dm << 8;
-+ wmb();
-+ *pmask = dm << 8 | dm;
-+ }
-+}
-+
-+static inline void ims332_set_screen_top(struct ims332_regs *regs, u16 top)
-+{
-+ volatile u16 *st = &(regs->w.screen_top.r);
-+
-+ mb();
-+ *st = top & 0xffff;
-+}
-+
-+static inline void ims332_enable_cursor(struct ims332_regs *regs, int on)
-+{
-+ ims332_control_reg_bits(regs, IMS332_CTRL_A_CURSOR_DISABLE,
-+ on ? 0 : IMS332_CTRL_A_CURSOR_DISABLE);
-+}
-+
-+static inline void ims332_position_cursor(struct ims332_regs *regs,
-+ u16 x, u16 y)
-+{
-+ volatile u16 *cp = &(regs->w.cursor_start.r);
-+ u32 val = ((x & 0xfff) << 12) | (y & 0xfff);
-+
-+ if (x > 2303 || y > 2303)
-+ return;
-+
-+ mb();
-+ regs->rw.boot.r = (val >> 8) & 0xff00;
-+ wmb();
-+ *cp = val & 0xffff;
-+}
-+
-+static inline void ims332_set_font(struct ims332_regs *regs, u8 fgc,
-+ u16 width, u16 height)
-+{
-+ volatile u16 *cp0 = &(regs->w.cursor_color_palette0.r);
-+ int i;
-+
-+ mb();
-+ for (i = 0; i < 0x200; i++) {
-+ volatile u16 *cram = &(regs->w.cursor_ram[i].r);
-+
-+ if (height << 6 <= i << 3)
-+ *cram = 0x0000;
-+ else if (width <= i % 8 << 3)
-+ *cram = 0x0000;
-+ else if (((width >> 3) & 0xffff) > i % 8)
-+ *cram = 0x5555;
-+ else
-+ *cram = 0x5555 & ~(0xffff << (width % 8 << 1));
-+ wmb();
-+ }
-+ regs->rw.boot.r = fgc << 8;
-+ wmb();
-+ *cp0 = fgc << 8 | fgc;
-+}
-+
-+static inline void ims332_read_cmap(struct ims332_regs *regs, u8 reg,
-+ u8* red, u8* green, u8* blue)
-+{
-+ volatile u16 *rptr = &(regs->r.color_palette[reg].r);
-+ u16 val;
-+
-+ mb();
-+ val = *rptr;
-+ *red = val & 0xff;
-+ *green = (val >> 8) & 0xff;
-+ rmb();
-+ *blue = (regs->rw.boot.r >> 8) & 0xff;
-+}
-+
-+static inline void ims332_write_cmap(struct ims332_regs *regs, u8 reg,
-+ u8 red, u8 green, u8 blue)
-+{
-+ volatile u16 *wptr = &(regs->w.color_palette[reg].r);
-+
-+ mb();
-+ regs->rw.boot.r = blue << 8;
-+ wmb();
-+ *wptr = (green << 8) + red;
-+}
-+
-+static inline void ims332_dump_regs(struct ims332_regs *regs)
-+{
-+ int i;
-+
-+ printk(__FUNCTION__);
-+ ims332_control_reg_bits(regs, IMS332_CTRL_A_BOOT_ENABLE_VTG, 0);
-+ for (i = 0; i < 0x100; i++) {
-+ volatile u16 *cpad = (u16 *)((char *)(&regs->r) + sizeof(struct _ims332_reg) * i);
-+ u32 val;
-+
-+ val = *cpad;
-+ rmb();
-+ val |= regs->rw.boot.r << 8;
-+ rmb();
-+ if (! (i % 8))
-+ printk("\n%02x:", i);
-+ printk(" %06x", val);
-+ }
-+ ims332_control_reg_bits(regs, IMS332_CTRL_A_BOOT_ENABLE_VTG,
-+ IMS332_CTRL_A_BOOT_ENABLE_VTG);
-+ printk("\n");
-+}
-diff -Nur linux-2.4.32-rc1/drivers/video/Makefile linux-2.4.32-rc1.mips/drivers/video/Makefile
---- linux-2.4.32-rc1/drivers/video/Makefile 2004-02-18 14:36:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/video/Makefile 2005-02-11 22:16:44.000000000 +0100
-@@ -87,6 +87,7 @@
- obj-$(CONFIG_FB_MAXINE) += maxinefb.o
- obj-$(CONFIG_FB_TX3912) += tx3912fb.o
- obj-$(CONFIG_FB_AU1100) += au1100fb.o fbgen.o
-+obj-$(CONFIG_FB_AU1200) += au1200fb.o fbgen.o
- obj-$(CONFIG_FB_IT8181) += it8181fb.o fbgen.o
-
- subdir-$(CONFIG_STI_CONSOLE) += sti
-diff -Nur linux-2.4.32-rc1/drivers/video/maxinefb.h linux-2.4.32-rc1.mips/drivers/video/maxinefb.h
---- linux-2.4.32-rc1/drivers/video/maxinefb.h 2003-08-25 13:44:42.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/video/maxinefb.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,38 +0,0 @@
--/*
-- * linux/drivers/video/maxinefb.h
-- *
-- * DECstation 5000/xx onboard framebuffer support, Copyright (C) 1999 by
-- * Michael Engel <engel@unix-ag.org> and Karsten Merker <merker@guug.de>
-- * This file is subject to the terms and conditions of the GNU General
-- * Public License. See the file COPYING in the main directory of this
-- * archive for more details.
-- */
--
--#include <asm/addrspace.h>
--
--/*
-- * IMS332 video controller register base address
-- */
--#define MAXINEFB_IMS332_ADDRESS KSEG1ADDR(0x1c140000)
--
--/*
-- * Begin of DECstation 5000/xx onboard framebuffer memory, default resolution
-- * is 1024x768x8
-- */
--#define DS5000_xx_ONBOARD_FBMEM_START KSEG1ADDR(0x0a000000)
--
--/*
-- * The IMS 332 video controller used in the DECstation 5000/xx series
-- * uses 32 bits wide registers; the following defines declare the
-- * register numbers, to get the real offset, these have to be multiplied
-- * by four.
-- */
--
--#define IMS332_REG_CURSOR_RAM 0x200 /* hardware cursor bitmap */
--
--/*
-- * The color palette entries have the form 0x00BBGGRR
-- */
--#define IMS332_REG_COLOR_PALETTE 0x100 /* color palette, 256 entries */
--#define IMS332_REG_CURSOR_COLOR_PALETTE 0x0a1 /* cursor color palette, */
-- /* 3 entries */
-diff -Nur linux-2.4.32-rc1/drivers/video/newport_con.c linux-2.4.32-rc1.mips/drivers/video/newport_con.c
---- linux-2.4.32-rc1/drivers/video/newport_con.c 2003-08-25 13:44:42.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/video/newport_con.c 2004-09-23 15:32:29.000000000 +0200
-@@ -22,6 +22,7 @@
- #include <linux/module.h>
- #include <linux/slab.h>
-
-+#include <asm/io.h>
- #include <asm/uaccess.h>
- #include <asm/system.h>
- #include <asm/page.h>
-@@ -77,7 +78,7 @@
- static inline void newport_render_background(int xstart, int ystart,
- int xend, int yend, int ci)
- {
-- newport_wait();
-+ newport_wait(npregs);
- npregs->set.wrmask = 0xffffffff;
- npregs->set.drawmode0 = (NPORT_DMODE0_DRAW | NPORT_DMODE0_BLOCK |
- NPORT_DMODE0_DOSETUP | NPORT_DMODE0_STOPX
-@@ -94,7 +95,7 @@
- unsigned short i;
-
- for (i = 0; i < 16; i++) {
-- newport_bfwait();
-+ newport_bfwait(npregs);
- newport_cmap_setaddr(npregs, color_table[i]);
- newport_cmap_setrgb(npregs,
- default_red[i],
-@@ -107,7 +108,7 @@
- unsigned long i;
-
- for (i = 0; i < LINUX_LOGO_COLORS; i++) {
-- newport_bfwait();
-+ newport_bfwait(npregs);
- newport_cmap_setaddr(npregs, i + 0x20);
- newport_cmap_setrgb(npregs,
- linux_logo_red[i],
-@@ -115,13 +116,13 @@
- linux_logo_blue[i]);
- }
-
-- newport_wait();
-+ newport_wait(npregs);
- npregs->set.drawmode0 = (NPORT_DMODE0_DRAW | NPORT_DMODE0_BLOCK |
- NPORT_DMODE0_CHOST);
-
- npregs->set.xystarti = ((newport_xsize - LOGO_W) << 16) | (0);
- npregs->set.xyendi = ((newport_xsize - 1) << 16);
-- newport_wait();
-+ newport_wait(npregs);
-
- for (i = 0; i < LOGO_W * LOGO_H; i++)
- npregs->go.hostrw0 = linux_logo[i] << 24;
-@@ -133,7 +134,7 @@
- if (logo_active)
- return;
-
-- newport_wait();
-+ newport_wait(npregs);
- npregs->set.wrmask = 0xffffffff;
- npregs->set.drawmode0 = (NPORT_DMODE0_DRAW | NPORT_DMODE0_BLOCK |
- NPORT_DMODE0_DOSETUP | NPORT_DMODE0_STOPX
-@@ -155,7 +156,7 @@
- unsigned short treg;
- int i;
-
-- newport_wait();
-+ newport_wait(npregs);
- treg = newport_vc2_get(npregs, VC2_IREG_CONTROL);
- newport_vc2_set(npregs, VC2_IREG_CONTROL,
- (treg | VC2_CTRL_EVIDEO));
-@@ -165,7 +166,7 @@
- npregs->set.dcbmode = (NPORT_DMODE_AVC2 | VC2_REGADDR_RAM |
- NPORT_DMODE_W2 | VC2_PROTOCOL);
- for (i = 0; i < 128; i++) {
-- newport_bfwait();
-+ newport_bfwait(npregs);
- if (i == 92 || i == 94)
- npregs->set.dcbdata0.byshort.s1 = 0xff00;
- else
-@@ -205,7 +206,7 @@
- npregs->set.dcbmode = (NPORT_DMODE_AVC2 | VC2_REGADDR_RAM |
- NPORT_DMODE_W2 | VC2_PROTOCOL);
- for (i = 0; i < 128; i++) {
-- newport_bfwait();
-+ newport_bfwait(npregs);
- linetable[i] = npregs->set.dcbdata0.byshort.s1;
- }
-
-@@ -216,12 +217,12 @@
- npregs->set.dcbmode = (NPORT_DMODE_AVC2 | VC2_REGADDR_RAM |
- NPORT_DMODE_W2 | VC2_PROTOCOL);
- do {
-- newport_bfwait();
-+ newport_bfwait(npregs);
- treg = npregs->set.dcbdata0.byshort.s1;
- if ((treg & 1) == 0)
- cols += (treg >> 7) & 0xfe;
- if ((treg & 0x80) == 0) {
-- newport_bfwait();
-+ newport_bfwait(npregs);
- treg = npregs->set.dcbdata0.byshort.s1;
- }
- } while ((treg & 0x8000) == 0);
-@@ -291,16 +292,16 @@
-
- if (!sgi_gfxaddr)
- return NULL;
-- npregs = (struct newport_regs *) (KSEG1 + sgi_gfxaddr);
-+ npregs = (struct newport_regs *) /* ioremap cannot fail */
-+ ioremap(sgi_gfxaddr, sizeof(struct newport_regs));
- npregs->cset.config = NPORT_CFG_GD0;
-
-- if (newport_wait()) {
-- return NULL;
-- }
-+ if (newport_wait(npregs))
-+ goto out_unmap;
-
- npregs->set.xstarti = TESTVAL;
- if (npregs->set._xstart.word != XSTI_TO_FXSTART(TESTVAL))
-- return NULL;
-+ goto out_unmap;
-
- for (i = 0; i < MAX_NR_CONSOLES; i++)
- font_data[i] = FONT_DATA;
-@@ -310,6 +311,10 @@
- newport_get_screensize();
-
- return "SGI Newport";
-+
-+out_unmap:
-+ iounmap((void *)npregs);
-+ return NULL;
- }
-
- static void newport_init(struct vc_data *vc, int init)
-@@ -363,7 +368,7 @@
- (charattr & 0xf0) >> 4);
-
- /* Set the color and drawing mode. */
-- newport_wait();
-+ newport_wait(npregs);
- npregs->set.colori = charattr & 0xf;
- npregs->set.drawmode0 = (NPORT_DMODE0_DRAW | NPORT_DMODE0_BLOCK |
- NPORT_DMODE0_STOPX | NPORT_DMODE0_ZPENAB |
-@@ -372,7 +377,7 @@
- /* Set coordinates for bitmap operation. */
- npregs->set.xystarti = (xpos << 16) | ((ypos + topscan) & 0x3ff);
- npregs->set.xyendi = ((xpos + 7) << 16);
-- newport_wait();
-+ newport_wait(npregs);
-
- /* Go, baby, go... */
- RENDER(npregs, p);
-@@ -396,7 +401,7 @@
- xpos + ((count - 1) << 3), ypos,
- (charattr & 0xf0) >> 4);
-
-- newport_wait();
-+ newport_wait(npregs);
-
- /* Set the color and drawing mode. */
- npregs->set.colori = charattr & 0xf;
-@@ -407,7 +412,7 @@
- for (i = 0; i < count; i++, xpos += 8) {
- p = &font_data[vc->vc_num][(scr_readw(s++) & 0xff) << 4];
-
-- newport_wait();
-+ newport_wait(npregs);
-
- /* Set coordinates for bitmap operation. */
- npregs->set.xystarti =
-@@ -689,7 +694,7 @@
- xe = xs;
- xs = tmp;
- }
-- newport_wait();
-+ newport_wait(npregs);
- npregs->set.drawmode0 = (NPORT_DMODE0_S2S | NPORT_DMODE0_BLOCK |
- NPORT_DMODE0_DOSETUP | NPORT_DMODE0_STOPX
- | NPORT_DMODE0_STOPY);
-@@ -706,35 +711,35 @@
- #define DUMMY (void *) newport_dummy
-
- const struct consw newport_con = {
-- con_startup: newport_startup,
-- con_init: newport_init,
-- con_deinit: newport_deinit,
-- con_clear: newport_clear,
-- con_putc: newport_putc,
-- con_putcs: newport_putcs,
-- con_cursor: newport_cursor,
-- con_scroll: newport_scroll,
-- con_bmove: newport_bmove,
-- con_switch: newport_switch,
-- con_blank: newport_blank,
-- con_font_op: newport_font_op,
-- con_set_palette: newport_set_palette,
-- con_scrolldelta: newport_scrolldelta,
-- con_set_origin: DUMMY,
-- con_save_screen: DUMMY
-+ .con_startup = newport_startup,
-+ .con_init = newport_init,
-+ .con_deinit = newport_deinit,
-+ .con_clear = newport_clear,
-+ .con_putc = newport_putc,
-+ .con_putcs = newport_putcs,
-+ .con_cursor = newport_cursor,
-+ .con_scroll = newport_scroll,
-+ .con_bmove = newport_bmove,
-+ .con_switch = newport_switch,
-+ .con_blank = newport_blank,
-+ .con_font_op = newport_font_op,
-+ .con_set_palette = newport_set_palette,
-+ .con_scrolldelta = newport_scrolldelta,
-+ .con_set_origin = DUMMY,
-+ .con_save_screen = DUMMY
- };
-
- #ifdef MODULE
- static int __init newport_console_init(void)
- {
- take_over_console(&newport_con, 0, MAX_NR_CONSOLES - 1, 1);
--
- return 0;
- }
-
- static void __exit newport_console_exit(void)
- {
- give_up_console(&newport_con);
-+ iounmap((void *)npregs);
- }
-
- module_init(newport_console_init);
-diff -Nur linux-2.4.32-rc1/drivers/video/tgafb.c linux-2.4.32-rc1.mips/drivers/video/tgafb.c
---- linux-2.4.32-rc1/drivers/video/tgafb.c 2001-11-14 23:52:20.000000000 +0100
-+++ linux-2.4.32-rc1.mips/drivers/video/tgafb.c 2004-10-30 01:15:02.000000000 +0200
-@@ -45,6 +45,15 @@
- #include <linux/console.h>
- #include <asm/io.h>
-
-+#ifdef CONFIG_TC
-+#include <asm/dec/tc.h>
-+#else
-+static int search_tc_card(const char *) { return -1; }
-+static void claim_tc_card(int) { }
-+static void release_tc_card(int) { }
-+static unsigned long get_tc_base_addr(int) { return 0; }
-+#endif
-+
- #include <video/fbcon.h>
- #include <video/fbcon-cfb8.h>
- #include <video/fbcon-cfb32.h>
-@@ -84,10 +93,10 @@
- };
-
- static unsigned int deep_presets[4] = {
-- 0x00014000,
-- 0x0001440d,
-+ 0x00004000,
-+ 0x0000440d,
- 0xffffffff,
-- 0x0001441d
-+ 0x0000441d
- };
-
- static unsigned int rasterop_presets[4] = {
-@@ -131,6 +140,13 @@
- 0,
- FB_VMODE_NONINTERLACED
- }},
-+ { "1280x1024-72", { /* mode #0 of PMAGD boards */
-+ 1280, 1024, 1280, 1024, 0, 0, 0, 0,
-+ {0, 8, 0}, {0, 8, 0}, {0, 8, 0}, {0, 0, 0},
-+ 0, 0, -1, -1, FB_ACCELF_TEXT, 7692, 232, 32, 34, 3, 160, 3,
-+ FB_SYNC_ON_GREEN,
-+ FB_VMODE_NONINTERLACED
-+ }},
- { "800x600-56", {
- 800, 600, 800, 600, 0, 0, 0, 0,
- {0, 8, 0}, {0, 8, 0}, {0, 8, 0}, {0, 0, 0},
-@@ -488,7 +504,8 @@
- continue;
-
- mb();
-- TGA_WRITE_REG(deep_presets[fb_info.tga_type], TGA_DEEP_REG);
-+ TGA_WRITE_REG(deep_presets[fb_info.tga_type] |
-+ (par->sync_on_green ? 0x0 : 0x00010000), TGA_DEEP_REG);
- while (TGA_READ_REG(TGA_CMD_STAT_REG) & 1) /* wait for not busy */
- continue;
- mb();
-@@ -548,7 +565,7 @@
- BT463_WRITE(BT463_REG_ACC, BT463_CMD_REG_0, 0x40);
- BT463_WRITE(BT463_REG_ACC, BT463_CMD_REG_1, 0x08);
- BT463_WRITE(BT463_REG_ACC, BT463_CMD_REG_2,
-- (par->sync_on_green ? 0x80 : 0x40));
-+ (par->sync_on_green ? 0xc0 : 0x40));
-
- BT463_WRITE(BT463_REG_ACC, BT463_READ_MASK_0, 0xff);
- BT463_WRITE(BT463_REG_ACC, BT463_READ_MASK_1, 0xff);
-@@ -921,19 +938,34 @@
- int __init tgafb_init(void)
- {
- struct pci_dev *pdev;
-+ int slot;
-
- pdev = pci_find_device(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TGA, NULL);
- if (!pdev)
-+ slot = search_tc_card("PMAGD");
-+ if (!pdev && slot < 0)
- return -ENXIO;
-
- /* divine board type */
-
-- fb_info.tga_mem_base = (unsigned long)ioremap(pdev->resource[0].start, 0);
-- fb_info.tga_type = (readl(fb_info.tga_mem_base) >> 12) & 0x0f;
-- fb_info.tga_regs_base = fb_info.tga_mem_base + TGA_REGS_OFFSET;
-- fb_info.tga_fb_base = (fb_info.tga_mem_base
-+ if (pdev) {
-+ fb_info.tga_mem_base = (unsigned long)ioremap(pdev->resource[0].start,
-+ 0);
-+ fb_info.tga_type = (readl(fb_info.tga_mem_base) >> 12) & 0x0f;
-+ fb_info.tga_regs_base = fb_info.tga_mem_base + TGA_REGS_OFFSET;
-+ fb_info.tga_fb_base = (fb_info.tga_mem_base
- + fb_offset_presets[fb_info.tga_type]);
-- pci_read_config_byte(pdev, PCI_REVISION_ID, &fb_info.tga_chip_rev);
-+ pci_read_config_byte(pdev, PCI_REVISION_ID, &fb_info.tga_chip_rev);
-+
-+ } else {
-+ claim_tc_card(slot);
-+ fb_info.tga_mem_base = get_tc_base_addr(slot);
-+ fb_info.tga_type = (readl(fb_info.tga_mem_base) >> 12) & 0x0f; /* ? */
-+ fb_info.tga_regs_base = fb_info.tga_mem_base + TGA_REGS_OFFSET;
-+ fb_info.tga_fb_base = (fb_info.tga_mem_base
-+ + fb_offset_presets[fb_info.tga_type]);
-+ fb_info.tga_chip_rev = TGA_READ_REG(TGA_START_REG) & 0xff;
-+ }
-
- /* setup framebuffer */
-
-@@ -950,40 +982,62 @@
- fb_info.gen.fbhw = &tgafb_hwswitch;
- fb_info.gen.fbhw->detect();
-
-- printk (KERN_INFO "tgafb: DC21030 [TGA] detected, rev=0x%02x\n", fb_info.tga_chip_rev);
-- printk (KERN_INFO "tgafb: at PCI bus %d, device %d, function %d\n",
-- pdev->bus->number, PCI_SLOT(pdev->devfn), PCI_FUNC(pdev->devfn));
-+ if (pdev) {
-+ printk (KERN_INFO "tgafb: DC21030 [TGA] detected, rev=0x%02x\n",
-+ fb_info.tga_chip_rev);
-+ printk (KERN_INFO "tgafb: at PCI bus %d, device %d, function %d\n",
-+ pdev->bus->number,
-+ PCI_SLOT(pdev->devfn), PCI_FUNC(pdev->devfn));
-+ } else {
-+ printk (KERN_INFO "tgafb: SFB+ detected, rev=0x%02x\n",
-+ fb_info.tga_chip_rev);
-+ }
-
- switch (fb_info.tga_type)
- {
- case TGA_TYPE_8PLANE:
-- strcpy (fb_info.gen.info.modename,"Digital ZLXp-E1");
-+ if (pdev)
-+ strcpy (fb_info.gen.info.modename,"Digital ZLXp-E1");
-+ else
-+ strcpy (fb_info.gen.info.modename,"Digital ZLX-E1");
- break;
-
- case TGA_TYPE_24PLANE:
-- strcpy (fb_info.gen.info.modename,"Digital ZLXp-E2");
-+ if (pdev)
-+ strcpy (fb_info.gen.info.modename,"Digital ZLXp-E2");
-+ else
-+ strcpy (fb_info.gen.info.modename,"Digital ZLX-E2");
- break;
-
- case TGA_TYPE_24PLUSZ:
-- strcpy (fb_info.gen.info.modename,"Digital ZLXp-E3");
-+ if (pdev)
-+ strcpy (fb_info.gen.info.modename,"Digital ZLXp-E3");
-+ else
-+ strcpy (fb_info.gen.info.modename,"Digital ZLX-E3");
- break;
- }
-
- /* This should give a reasonable default video mode */
-
- if (!default_var_valid) {
-- default_var = tgafb_predefined[0].var;
-+ if (pdev)
-+ default_var = tgafb_predefined[0].var;
-+ else
-+ default_var = tgafb_predefined[1].var;
- }
- fbgen_get_var(&disp.var, -1, &fb_info.gen.info);
- disp.var.activate = FB_ACTIVATE_NOW;
- fbgen_do_set_var(&disp.var, 1, &fb_info.gen);
- fbgen_set_disp(-1, &fb_info.gen);
- fbgen_install_cmap(0, &fb_info.gen);
-- if (register_framebuffer(&fb_info.gen.info) < 0)
-+ if (register_framebuffer(&fb_info.gen.info) < 0) {
-+ if (slot >= 0)
-+ release_tc_card(slot);
- return -EINVAL;
-- printk(KERN_INFO "fb%d: %s frame buffer device at 0x%lx\n",
-+ }
-+ printk(KERN_INFO "fb%d: %s frame buffer device at 0x%llx\n",
- GET_FB_IDX(fb_info.gen.info.node), fb_info.gen.info.modename,
-- pdev->resource[0].start);
-+ fb_info.tga_mem_base);
- return 0;
- }
-
-diff -Nur linux-2.4.32-rc1/drivers/video/tgafb.h linux-2.4.32-rc1.mips/drivers/video/tgafb.h
---- linux-2.4.32-rc1/drivers/video/tgafb.h 2000-04-12 18:47:28.000000000 +0200
-+++ linux-2.4.32-rc1.mips/drivers/video/tgafb.h 2004-10-30 01:15:02.000000000 +0200
-@@ -36,6 +36,7 @@
- #define TGA_RASTEROP_REG 0x0034
- #define TGA_PIXELSHIFT_REG 0x0038
- #define TGA_DEEP_REG 0x0050
-+#define TGA_START_REG 0x0054
- #define TGA_PIXELMASK_REG 0x005c
- #define TGA_CURSOR_BASE_REG 0x0060
- #define TGA_HORIZ_REG 0x0064
-diff -Nur linux-2.4.32-rc1/fs/binfmt_elf.c linux-2.4.32-rc1.mips/fs/binfmt_elf.c
---- linux-2.4.32-rc1/fs/binfmt_elf.c 2005-06-01 02:56:56.000000000 +0200
-+++ linux-2.4.32-rc1.mips/fs/binfmt_elf.c 2005-05-23 14:12:31.000000000 +0200
-@@ -660,6 +660,9 @@
- bprm->argc++;
- }
- }
-+ } else {
-+ /* Executables without an interpreter also need a personality */
-+ SET_PERSONALITY(elf_ex, ibcs2_interpreter);
- }
-
- /* Flush all traces of the currently running executable */
-@@ -1211,7 +1214,11 @@
- elf.e_entry = 0;
- elf.e_phoff = sizeof(elf);
- elf.e_shoff = 0;
-+#ifdef ELF_CORE_EFLAGS
-+ elf.e_flags = ELF_CORE_EFLAGS;
-+#else
- elf.e_flags = 0;
-+#endif
- elf.e_ehsize = sizeof(elf);
- elf.e_phentsize = sizeof(struct elf_phdr);
- elf.e_phnum = segs+1; /* Include notes */
-diff -Nur linux-2.4.32-rc1/fs/partitions/sgi.c linux-2.4.32-rc1.mips/fs/partitions/sgi.c
---- linux-2.4.32-rc1/fs/partitions/sgi.c 2001-10-02 05:03:26.000000000 +0200
-+++ linux-2.4.32-rc1.mips/fs/partitions/sgi.c 2004-08-11 22:30:07.000000000 +0200
-@@ -17,6 +17,11 @@
- #include "check.h"
- #include "sgi.h"
-
-+#if CONFIG_BLK_DEV_MD
-+extern void md_autodetect_dev(kdev_t dev);
-+#endif
-+
-+
- int sgi_partition(struct gendisk *hd, struct block_device *bdev, unsigned long first_sector, int current_minor)
- {
- int i, csum, magic;
-@@ -77,6 +82,10 @@
- if(!blocks)
- continue;
- add_gd_partition(hd, current_minor, start, blocks);
-+#ifdef CONFIG_BLK_DEV_MD
-+ if (be32_to_cpu(p->type) == LINUX_RAID_PARTITION)
-+ md_autodetect_dev(MKDEV(hd->major, current_minor));
-+#endif
- current_minor++;
- }
- printk("\n");
-diff -Nur linux-2.4.32-rc1/fs/proc/array.c linux-2.4.32-rc1.mips/fs/proc/array.c
---- linux-2.4.32-rc1/fs/proc/array.c 2005-01-19 15:10:11.000000000 +0100
-+++ linux-2.4.32-rc1.mips/fs/proc/array.c 2004-11-29 18:47:18.000000000 +0100
-@@ -368,15 +368,15 @@
- task->cmin_flt,
- task->maj_flt,
- task->cmaj_flt,
-- task->times.tms_utime,
-- task->times.tms_stime,
-- task->times.tms_cutime,
-- task->times.tms_cstime,
-+ hz_to_std(task->times.tms_utime),
-+ hz_to_std(task->times.tms_stime),
-+ hz_to_std(task->times.tms_cutime),
-+ hz_to_std(task->times.tms_cstime),
- priority,
- nice,
- 0UL /* removed */,
- task->it_real_value,
-- task->start_time,
-+ hz_to_std(task->start_time),
- vsize,
- mm ? mm->rss : 0, /* you might want to shift this left 3 */
- task->rlim[RLIMIT_RSS].rlim_cur,
-@@ -615,14 +615,14 @@
-
- len = sprintf(buffer,
- "cpu %lu %lu\n",
-- task->times.tms_utime,
-- task->times.tms_stime);
-+ hz_to_std(task->times.tms_utime),
-+ hz_to_std(task->times.tms_stime));
-
- for (i = 0 ; i < smp_num_cpus; i++)
- len += sprintf(buffer + len, "cpu%d %lu %lu\n",
- i,
-- task->per_cpu_utime[cpu_logical_map(i)],
-- task->per_cpu_stime[cpu_logical_map(i)]);
-+ hz_to_std(task->per_cpu_utime[cpu_logical_map(i)]),
-+ hz_to_std(task->per_cpu_stime[cpu_logical_map(i)]));
-
- return len;
- }
-diff -Nur linux-2.4.32-rc1/fs/proc/proc_misc.c linux-2.4.32-rc1.mips/fs/proc/proc_misc.c
---- linux-2.4.32-rc1/fs/proc/proc_misc.c 2004-08-08 01:26:06.000000000 +0200
-+++ linux-2.4.32-rc1.mips/fs/proc/proc_misc.c 2004-08-14 20:39:01.000000000 +0200
-@@ -308,16 +308,16 @@
- {
- int i, len = 0;
- extern unsigned long total_forks;
-- unsigned long jif = jiffies;
-+ unsigned long jif = hz_to_std(jiffies);
- unsigned int sum = 0, user = 0, nice = 0, system = 0;
- int major, disk;
-
- for (i = 0 ; i < smp_num_cpus; i++) {
- int cpu = cpu_logical_map(i), j;
-
-- user += kstat.per_cpu_user[cpu];
-- nice += kstat.per_cpu_nice[cpu];
-- system += kstat.per_cpu_system[cpu];
-+ user += hz_to_std(kstat.per_cpu_user[cpu]);
-+ nice += hz_to_std(kstat.per_cpu_nice[cpu]);
-+ system += hz_to_std(kstat.per_cpu_system[cpu]);
- #if !defined(CONFIG_ARCH_S390)
- for (j = 0 ; j < NR_IRQS ; j++)
- sum += kstat.irqs[cpu][j];
-@@ -331,10 +331,10 @@
- proc_sprintf(page, &off, &len,
- "cpu%d %u %u %u %lu\n",
- i,
-- kstat.per_cpu_user[cpu_logical_map(i)],
-- kstat.per_cpu_nice[cpu_logical_map(i)],
-- kstat.per_cpu_system[cpu_logical_map(i)],
-- jif - ( kstat.per_cpu_user[cpu_logical_map(i)] \
-+ hz_to_std(kstat.per_cpu_user[cpu_logical_map(i)]),
-+ hz_to_std(kstat.per_cpu_nice[cpu_logical_map(i)]),
-+ hz_to_std(kstat.per_cpu_system[cpu_logical_map(i)]),
-+ jif - hz_to_std( kstat.per_cpu_user[cpu_logical_map(i)] \
- + kstat.per_cpu_nice[cpu_logical_map(i)] \
- + kstat.per_cpu_system[cpu_logical_map(i)]));
- proc_sprintf(page, &off, &len,
-diff -Nur linux-2.4.32-rc1/include/asm-alpha/param.h linux-2.4.32-rc1.mips/include/asm-alpha/param.h
---- linux-2.4.32-rc1/include/asm-alpha/param.h 2000-11-08 08:37:31.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-alpha/param.h 2000-11-28 04:59:03.000000000 +0100
-@@ -13,6 +13,9 @@
- # else
- # define HZ 1200
- # endif
-+#ifdef __KERNEL__
-+# define hz_to_std(a) (a)
-+#endif
- #endif
-
- #define EXEC_PAGESIZE 8192
-diff -Nur linux-2.4.32-rc1/include/asm-i386/param.h linux-2.4.32-rc1.mips/include/asm-i386/param.h
---- linux-2.4.32-rc1/include/asm-i386/param.h 2000-10-27 20:04:43.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/asm-i386/param.h 2000-11-23 03:00:55.000000000 +0100
-@@ -3,6 +3,9 @@
-
- #ifndef HZ
- #define HZ 100
-+#ifdef __KERNEL__
-+#define hz_to_std(a) (a)
-+#endif
- #endif
-
- #define EXEC_PAGESIZE 4096
-diff -Nur linux-2.4.32-rc1/include/asm-ia64/param.h linux-2.4.32-rc1.mips/include/asm-ia64/param.h
---- linux-2.4.32-rc1/include/asm-ia64/param.h 2004-04-14 15:05:40.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/asm-ia64/param.h 2004-04-16 05:14:20.000000000 +0200
-@@ -7,9 +7,15 @@
- * Based on <asm-i386/param.h>.
- *
- * Modified 1998, 1999, 2002-2003
-- * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co
-+ * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co
- */
-
-+#include <linux/config.h>
-+
-+#ifdef __KERNEL__
-+#define hz_to_std(a) (a)
-+#endif
-+
- #define EXEC_PAGESIZE 65536
-
- #ifndef NGROUPS
-diff -Nur linux-2.4.32-rc1/include/asm-m68k/param.h linux-2.4.32-rc1.mips/include/asm-m68k/param.h
---- linux-2.4.32-rc1/include/asm-m68k/param.h 2001-01-04 22:00:55.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-m68k/param.h 2001-01-11 05:02:45.000000000 +0100
-@@ -3,6 +3,9 @@
-
- #ifndef HZ
- #define HZ 100
-+#ifdef __KERNEL__
-+#define hz_to_std(a) (a)
-+#endif
- #endif
-
- #define EXEC_PAGESIZE 8192
-diff -Nur linux-2.4.32-rc1/include/asm-mips/au1000_gpio.h linux-2.4.32-rc1.mips/include/asm-mips/au1000_gpio.h
---- linux-2.4.32-rc1/include/asm-mips/au1000_gpio.h 2002-11-29 00:53:15.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/au1000_gpio.h 2005-01-30 09:01:28.000000000 +0100
-@@ -30,6 +30,13 @@
- * 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-+/*
-+ * Revision history
-+ * 01/31/02 0.01 Initial release. Steve Longerbeam, MontaVista
-+ * 10/12/03 0.1 Added Au1100/Au1500, GPIO2, and bit operations. K.C. Nishio, AMD
-+ * 08/05/04 0.11 Added Au1550 and Au1200. K.C. Nishio
-+ */
-+
- #ifndef __AU1000_GPIO_H
- #define __AU1000_GPIO_H
-
-@@ -44,13 +51,94 @@
- #define AU1000GPIO_TRISTATE _IOW (AU1000GPIO_IOC_MAGIC, 4, int)
- #define AU1000GPIO_AVAIL_MASK _IOR (AU1000GPIO_IOC_MAGIC, 5, int)
-
-+// bit operations
-+#define AU1000GPIO_BIT_READ _IOW (AU1000GPIO_IOC_MAGIC, 6, int)
-+#define AU1000GPIO_BIT_SET _IOW (AU1000GPIO_IOC_MAGIC, 7, int)
-+#define AU1000GPIO_BIT_CLEAR _IOW (AU1000GPIO_IOC_MAGIC, 8, int)
-+#define AU1000GPIO_BIT_TRISTATE _IOW (AU1000GPIO_IOC_MAGIC, 9, int)
-+#define AU1000GPIO_BIT_INIT _IOW (AU1000GPIO_IOC_MAGIC, 10, int)
-+#define AU1000GPIO_BIT_TERM _IOW (AU1000GPIO_IOC_MAGIC, 11, int)
-+
-+/* set this major numer same as the CRIS GPIO driver */
-+#define AU1X00_GPIO_MAJOR (120)
-+
-+#define ENABLED_ZERO (0)
-+#define ENABLED_ONE (1)
-+#define ENABLED_10 (0x2)
-+#define ENABLED_11 (0x3)
-+#define ENABLED_111 (0x7)
-+#define NOT_AVAIL (-1)
-+#define AU1X00_MAX_PRIMARY_GPIO (32)
-+
-+#define AU1000_GPIO_MINOR_MAX AU1X00_MAX_PRIMARY_GPIO
-+/* Au1100, 1500, 1550 and 1200 have the secondary GPIO block */
-+#define AU1XX0_GPIO_MINOR_MAX (48)
-+
-+#define AU1X00_GPIO_NAME "gpio"
-+
-+/* GPIO pins which are not multiplexed */
-+#if defined(CONFIG_SOC_AU1000)
-+ #define NATIVE_GPIOPIN ((1 << 15) | (1 << 8) | (1 << 7) | (1 << 1) | (1 << 0))
-+ #define NATIVE_GPIO2PIN (0)
-+#elif defined(CONFIG_SOC_AU1100)
-+ #define NATIVE_GPIOPIN ((1 << 23) | (1 << 22) | (1 << 21) | (1 << 20) | (1 << 19) | (1 << 18) | \
-+ (1 << 17) | (1 << 16) | (1 << 7) | (1 << 1) | (1 << 0))
-+ #define NATIVE_GPIO2PIN (0)
-+#elif defined(CONFIG_SOC_AU1500)
-+ #define NATIVE_GPIOPIN ((1 << 15) | (1 << 8) | (1 << 7) | (1 << 1) | (1 << 0))
-+ /* exclude the PCI reset output signal: GPIO[200], DMA_REQ2 and DMA_REQ3 */
-+ #define NATIVE_GPIO2PIN (0xfffe & ~((1 << 9) | (1 << 8)))
-+#elif defined(CONFIG_SOC_AU1550)
-+ #define NATIVE_GPIOPIN ((1 << 15) | (1 << 8) | (1 << 7) | (1 << 6) | (1 << 1) | (1 << 0))
-+ /* please refere Au1550 Data Book, chapter 15 */
-+ #define NATIVE_GPIO2PIN (1 << 5)
-+#elif defined(CONFIG_SOC_AU1200)
-+ #define NATIVE_GPIOPIN ((1 << 7) | (1 << 5))
-+ #define NATIVE_GPIO2PIN (0)
-+#endif
-+
-+/* minor as u32 */
-+#define MINOR_TO_GPIOPIN(minor) ((minor < AU1X00_MAX_PRIMARY_GPIO) ? minor : (minor - AU1X00_MAX_PRIMARY_GPIO))
-+#define IS_PRIMARY_GPIOPIN(minor) ((minor < AU1X00_MAX_PRIMARY_GPIO) ? 1 : 0)
-+
-+/*
-+ * pin to minor mapping.
-+ * GPIO0-GPIO31, minor=0-31.
-+ * GPIO200-GPIO215, minor=32-47.
-+ */
-+typedef struct _au1x00_gpio_bit_ctl {
-+ int direction; // The direction of this GPIO pin. 0: IN, 1: OUT.
-+ int data; // Pin output when itized (0/1), or at the term. 0/1/-1 (tristate).
-+} au1x00_gpio_bit_ctl;
-+
-+typedef struct _au1x00_gpio_driver {
-+ const char *driver_name;
-+ const char *name;
-+ int name_base; /* offset of printed name */
-+ short major; /* major device number */
-+ short minor_start; /* start of minor device number*/
-+ short num; /* number of devices */
-+} au1x00_gpio_driver;
-+
- #ifdef __KERNEL__
--extern u32 get_au1000_avail_gpio_mask(void);
--extern int au1000gpio_tristate(u32 data);
--extern int au1000gpio_in(u32 *data);
--extern int au1000gpio_set(u32 data);
--extern int au1000gpio_clear(u32 data);
--extern int au1000gpio_out(u32 data);
-+extern u32 get_au1000_avail_gpio_mask(u32 *avail_gpio2);
-+extern int au1000gpio_tristate(u32 minor, u32 data);
-+extern int au1000gpio_in(u32 minor, u32 *data);
-+extern int au1000gpio_set(u32 minor, u32 data);
-+extern int au1000gpio_clear(u32 minor, u32 data);
-+extern int au1000gpio_out(u32 minor, u32 data);
-+extern int au1000gpio_bit_read(u32 minor, u32 *read_data);
-+extern int au1000gpio_bit_set(u32 minor);
-+extern int au1000gpio_bit_clear(u32 minor);
-+extern int au1000gpio_bit_tristate(u32 minor);
-+extern int check_minor_to_gpio(u32 minor);
-+extern int au1000gpio_bit_init(u32 minor, au1x00_gpio_bit_ctl *bit_opt);
-+extern int au1000gpio_bit_term(u32 minor, au1x00_gpio_bit_ctl *bit_opt);
-+
-+extern void gpio_register_devfs (au1x00_gpio_driver *driver, unsigned int flags, unsigned minor);
-+extern void gpio_unregister_devfs (au1x00_gpio_driver *driver, unsigned minor);
-+extern int gpio_register_driver(au1x00_gpio_driver *driver);
-+extern int gpio_unregister_driver(au1x00_gpio_driver *driver);
- #endif
-
- #endif
-diff -Nur linux-2.4.32-rc1/include/asm-mips/au1000.h linux-2.4.32-rc1.mips/include/asm-mips/au1000.h
---- linux-2.4.32-rc1/include/asm-mips/au1000.h 2005-01-19 15:10:11.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/au1000.h 2005-01-30 09:01:28.000000000 +0100
-@@ -160,28 +160,356 @@
- #define ALLINTS (IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4 | IE_IRQ5)
- #endif
-
--/* SDRAM Controller */
-+/*
-+ * SDRAM Register Offsets
-+ */
- #if defined(CONFIG_SOC_AU1000) || defined(CONFIG_SOC_AU1500) || defined(CONFIG_SOC_AU1100)
--#define MEM_SDMODE0 0xB4000000
--#define MEM_SDMODE1 0xB4000004
--#define MEM_SDMODE2 0xB4000008
--
--#define MEM_SDADDR0 0xB400000C
--#define MEM_SDADDR1 0xB4000010
--#define MEM_SDADDR2 0xB4000014
--
--#define MEM_SDREFCFG 0xB4000018
--#define MEM_SDPRECMD 0xB400001C
--#define MEM_SDAUTOREF 0xB4000020
--
--#define MEM_SDWRMD0 0xB4000024
--#define MEM_SDWRMD1 0xB4000028
--#define MEM_SDWRMD2 0xB400002C
-+#define MEM_SDMODE0 (0x0000)
-+#define MEM_SDMODE1 (0x0004)
-+#define MEM_SDMODE2 (0x0008)
-+#define MEM_SDADDR0 (0x000C)
-+#define MEM_SDADDR1 (0x0010)
-+#define MEM_SDADDR2 (0x0014)
-+#define MEM_SDREFCFG (0x0018)
-+#define MEM_SDPRECMD (0x001C)
-+#define MEM_SDAUTOREF (0x0020)
-+#define MEM_SDWRMD0 (0x0024)
-+#define MEM_SDWRMD1 (0x0028)
-+#define MEM_SDWRMD2 (0x002C)
-+#define MEM_SDSLEEP (0x0030)
-+#define MEM_SDSMCKE (0x0034)
-+
-+#ifndef ASSEMBLER
-+/*typedef volatile struct
-+{
-+ uint32 sdmode0;
-+ uint32 sdmode1;
-+ uint32 sdmode2;
-+ uint32 sdaddr0;
-+ uint32 sdaddr1;
-+ uint32 sdaddr2;
-+ uint32 sdrefcfg;
-+ uint32 sdautoref;
-+ uint32 sdwrmd0;
-+ uint32 sdwrmd1;
-+ uint32 sdwrmd2;
-+ uint32 sdsleep;
-+ uint32 sdsmcke;
-+
-+} AU1X00_SDRAM;*/
-+#endif
-+
-+/*
-+ * MEM_SDMODE register content definitions
-+ */
-+#define MEM_SDMODE_F (1<<22)
-+#define MEM_SDMODE_SR (1<<21)
-+#define MEM_SDMODE_BS (1<<20)
-+#define MEM_SDMODE_RS (3<<18)
-+#define MEM_SDMODE_CS (7<<15)
-+#define MEM_SDMODE_TRAS (15<<11)
-+#define MEM_SDMODE_TMRD (3<<9)
-+#define MEM_SDMODE_TWR (3<<7)
-+#define MEM_SDMODE_TRP (3<<5)
-+#define MEM_SDMODE_TRCD (3<<3)
-+#define MEM_SDMODE_TCL (7<<0)
-+
-+#define MEM_SDMODE_BS_2Bank (0<<20)
-+#define MEM_SDMODE_BS_4Bank (1<<20)
-+#define MEM_SDMODE_RS_11Row (0<<18)
-+#define MEM_SDMODE_RS_12Row (1<<18)
-+#define MEM_SDMODE_RS_13Row (2<<18)
-+#define MEM_SDMODE_RS_N(N) ((N)<<18)
-+#define MEM_SDMODE_CS_7Col (0<<15)
-+#define MEM_SDMODE_CS_8Col (1<<15)
-+#define MEM_SDMODE_CS_9Col (2<<15)
-+#define MEM_SDMODE_CS_10Col (3<<15)
-+#define MEM_SDMODE_CS_11Col (4<<15)
-+#define MEM_SDMODE_CS_N(N) ((N)<<15)
-+#define MEM_SDMODE_TRAS_N(N) ((N)<<11)
-+#define MEM_SDMODE_TMRD_N(N) ((N)<<9)
-+#define MEM_SDMODE_TWR_N(N) ((N)<<7)
-+#define MEM_SDMODE_TRP_N(N) ((N)<<5)
-+#define MEM_SDMODE_TRCD_N(N) ((N)<<3)
-+#define MEM_SDMODE_TCL_N(N) ((N)<<0)
-+
-+/*
-+ * MEM_SDADDR register contents definitions
-+ */
-+#define MEM_SDADDR_E (1<<20)
-+#define MEM_SDADDR_CSBA (0x03FF<<10)
-+#define MEM_SDADDR_CSMASK (0x03FF<<0)
-+#define MEM_SDADDR_CSBA_N(N) ((N)&(0x03FF<<22)>>12)
-+#define MEM_SDADDR_CSMASK_N(N) ((N)&(0x03FF<<22)>>22)
-+
-+/*
-+ * MEM_SDREFCFG register content definitions
-+ */
-+#define MEM_SDREFCFG_TRC (15<<28)
-+#define MEM_SDREFCFG_TRPM (3<<26)
-+#define MEM_SDREFCFG_E (1<<25)
-+#define MEM_SDREFCFG_RE (0x1ffffff<<0)
-+#define MEM_SDREFCFG_TRC_N(N) ((N)<<MEM_SDREFCFG_TRC)
-+#define MEM_SDREFCFG_TRPM_N(N) ((N)<<MEM_SDREFCFG_TRPM)
-+#define MEM_SDREFCFG_REF_N(N) (N)
-+#endif
-+
-+/***********************************************************************/
-+
-+/*
-+ * Au1550 SDRAM Register Offsets
-+ */
-+
-+/***********************************************************************/
-+
-+#if defined(CONFIG_SOC_AU1550) || defined(CONFIG_SOC_AU1200)
-+#define MEM_SDMODE0 (0x0800)
-+#define MEM_SDMODE1 (0x0808)
-+#define MEM_SDMODE2 (0x0810)
-+#define MEM_SDADDR0 (0x0820)
-+#define MEM_SDADDR1 (0x0828)
-+#define MEM_SDADDR2 (0x0830)
-+#define MEM_SDCONFIGA (0x0840)
-+#define MEM_SDCONFIGB (0x0848)
-+#define MEM_SDSTAT (0x0850)
-+#define MEM_SDERRADDR (0x0858)
-+#define MEM_SDSTRIDE0 (0x0860)
-+#define MEM_SDSTRIDE1 (0x0868)
-+#define MEM_SDSTRIDE2 (0x0870)
-+#define MEM_SDWRMD0 (0x0880)
-+#define MEM_SDWRMD1 (0x0888)
-+#define MEM_SDWRMD2 (0x0890)
-+#define MEM_SDPRECMD (0x08C0)
-+#define MEM_SDAUTOREF (0x08C8)
-+#define MEM_SDSREF (0x08D0)
-+#define MEM_SDSLEEP MEM_SDSREF
-+
-+#ifndef ASSEMBLER
-+/*typedef volatile struct
-+{
-+ uint32 sdmode0;
-+ uint32 reserved0;
-+ uint32 sdmode1;
-+ uint32 reserved1;
-+ uint32 sdmode2;
-+ uint32 reserved2[3];
-+ uint32 sdaddr0;
-+ uint32 reserved3;
-+ uint32 sdaddr1;
-+ uint32 reserved4;
-+ uint32 sdaddr2;
-+ uint32 reserved5[3];
-+ uint32 sdconfiga;
-+ uint32 reserved6;
-+ uint32 sdconfigb;
-+ uint32 reserved7;
-+ uint32 sdstat;
-+ uint32 reserved8;
-+ uint32 sderraddr;
-+ uint32 reserved9;
-+ uint32 sdstride0;
-+ uint32 reserved10;
-+ uint32 sdstride1;
-+ uint32 reserved11;
-+ uint32 sdstride2;
-+ uint32 reserved12[3];
-+ uint32 sdwrmd0;
-+ uint32 reserved13;
-+ uint32 sdwrmd1;
-+ uint32 reserved14;
-+ uint32 sdwrmd2;
-+ uint32 reserved15[11];
-+ uint32 sdprecmd;
-+ uint32 reserved16;
-+ uint32 sdautoref;
-+ uint32 reserved17;
-+ uint32 sdsref;
-+
-+} AU1550_SDRAM;*/
-+#endif
-+#endif
-+
-+/*
-+ * Physical base addresses for integrated peripherals
-+ */
-+
-+#ifdef CONFIG_SOC_AU1000
-+#define MEM_PHYS_ADDR 0x14000000
-+#define STATIC_MEM_PHYS_ADDR 0x14001000
-+#define DMA0_PHYS_ADDR 0x14002000
-+#define DMA1_PHYS_ADDR 0x14002100
-+#define DMA2_PHYS_ADDR 0x14002200
-+#define DMA3_PHYS_ADDR 0x14002300
-+#define DMA4_PHYS_ADDR 0x14002400
-+#define DMA5_PHYS_ADDR 0x14002500
-+#define DMA6_PHYS_ADDR 0x14002600
-+#define DMA7_PHYS_ADDR 0x14002700
-+#define IC0_PHYS_ADDR 0x10400000
-+#define IC1_PHYS_ADDR 0x11800000
-+#define AC97_PHYS_ADDR 0x10000000
-+#define USBH_PHYS_ADDR 0x10100000
-+#define USBD_PHYS_ADDR 0x10200000
-+#define IRDA_PHYS_ADDR 0x10300000
-+#define MAC0_PHYS_ADDR 0x10500000
-+#define MAC1_PHYS_ADDR 0x10510000
-+#define MACEN_PHYS_ADDR 0x10520000
-+#define MACDMA0_PHYS_ADDR 0x14004000
-+#define MACDMA1_PHYS_ADDR 0x14004200
-+#define I2S_PHYS_ADDR 0x11000000
-+#define UART0_PHYS_ADDR 0x11100000
-+#define UART1_PHYS_ADDR 0x11200000
-+#define UART2_PHYS_ADDR 0x11300000
-+#define UART3_PHYS_ADDR 0x11400000
-+#define SSI0_PHYS_ADDR 0x11600000
-+#define SSI1_PHYS_ADDR 0x11680000
-+#define SYS_PHYS_ADDR 0x11900000
-+#define PCMCIA_IO_PHYS_ADDR 0xF00000000
-+#define PCMCIA_ATTR_PHYS_ADDR 0xF40000000
-+#define PCMCIA_MEM_PHYS_ADDR 0xF80000000
-+#endif
-+
-+/********************************************************************/
-
--#define MEM_SDSLEEP 0xB4000030
--#define MEM_SDSMCKE 0xB4000034
-+#ifdef CONFIG_SOC_AU1500
-+#define MEM_PHYS_ADDR 0x14000000
-+#define STATIC_MEM_PHYS_ADDR 0x14001000
-+#define DMA0_PHYS_ADDR 0x14002000
-+#define DMA1_PHYS_ADDR 0x14002100
-+#define DMA2_PHYS_ADDR 0x14002200
-+#define DMA3_PHYS_ADDR 0x14002300
-+#define DMA4_PHYS_ADDR 0x14002400
-+#define DMA5_PHYS_ADDR 0x14002500
-+#define DMA6_PHYS_ADDR 0x14002600
-+#define DMA7_PHYS_ADDR 0x14002700
-+#define IC0_PHYS_ADDR 0x10400000
-+#define IC1_PHYS_ADDR 0x11800000
-+#define AC97_PHYS_ADDR 0x10000000
-+#define USBH_PHYS_ADDR 0x10100000
-+#define USBD_PHYS_ADDR 0x10200000
-+#define PCI_PHYS_ADDR 0x14005000
-+#define MAC0_PHYS_ADDR 0x11500000
-+#define MAC1_PHYS_ADDR 0x11510000
-+#define MACEN_PHYS_ADDR 0x11520000
-+#define MACDMA0_PHYS_ADDR 0x14004000
-+#define MACDMA1_PHYS_ADDR 0x14004200
-+#define I2S_PHYS_ADDR 0x11000000
-+#define UART0_PHYS_ADDR 0x11100000
-+#define UART3_PHYS_ADDR 0x11400000
-+#define GPIO2_PHYS_ADDR 0x11700000
-+#define SYS_PHYS_ADDR 0x11900000
-+#define PCI_MEM_PHYS_ADDR 0x400000000
-+#define PCI_IO_PHYS_ADDR 0x500000000
-+#define PCI_CONFIG0_PHYS_ADDR 0x600000000
-+#define PCI_CONFIG1_PHYS_ADDR 0x680000000
-+#define PCMCIA_IO_PHYS_ADDR 0xF00000000
-+#define PCMCIA_ATTR_PHYS_ADDR 0xF40000000
-+#define PCMCIA_MEM_PHYS_ADDR 0xF80000000
- #endif
-
-+/********************************************************************/
-+
-+#ifdef CONFIG_SOC_AU1100
-+#define MEM_PHYS_ADDR 0x14000000
-+#define STATIC_MEM_PHYS_ADDR 0x14001000
-+#define DMA0_PHYS_ADDR 0x14002000
-+#define DMA1_PHYS_ADDR 0x14002100
-+#define DMA2_PHYS_ADDR 0x14002200
-+#define DMA3_PHYS_ADDR 0x14002300
-+#define DMA4_PHYS_ADDR 0x14002400
-+#define DMA5_PHYS_ADDR 0x14002500
-+#define DMA6_PHYS_ADDR 0x14002600
-+#define DMA7_PHYS_ADDR 0x14002700
-+#define IC0_PHYS_ADDR 0x10400000
-+#define SD0_PHYS_ADDR 0x10600000
-+#define SD1_PHYS_ADDR 0x10680000
-+#define IC1_PHYS_ADDR 0x11800000
-+#define AC97_PHYS_ADDR 0x10000000
-+#define USBH_PHYS_ADDR 0x10100000
-+#define USBD_PHYS_ADDR 0x10200000
-+#define IRDA_PHYS_ADDR 0x10300000
-+#define MAC0_PHYS_ADDR 0x10500000
-+#define MACEN_PHYS_ADDR 0x10520000
-+#define MACDMA0_PHYS_ADDR 0x14004000
-+#define MACDMA1_PHYS_ADDR 0x14004200
-+#define I2S_PHYS_ADDR 0x11000000
-+#define UART0_PHYS_ADDR 0x11100000
-+#define UART1_PHYS_ADDR 0x11200000
-+#define UART3_PHYS_ADDR 0x11400000
-+#define SSI0_PHYS_ADDR 0x11600000
-+#define SSI1_PHYS_ADDR 0x11680000
-+#define GPIO2_PHYS_ADDR 0x11700000
-+#define SYS_PHYS_ADDR 0x11900000
-+#define LCD_PHYS_ADDR 0x15000000
-+#define PCMCIA_IO_PHYS_ADDR 0xF00000000
-+#define PCMCIA_ATTR_PHYS_ADDR 0xF40000000
-+#define PCMCIA_MEM_PHYS_ADDR 0xF80000000
-+#endif
-+
-+/***********************************************************************/
-+
-+#ifdef CONFIG_SOC_AU1550
-+#define MEM_PHYS_ADDR 0x14000000
-+#define STATIC_MEM_PHYS_ADDR 0x14001000
-+#define IC0_PHYS_ADDR 0x10400000
-+#define IC1_PHYS_ADDR 0x11800000
-+#define USBH_PHYS_ADDR 0x14020000
-+#define USBD_PHYS_ADDR 0x10200000
-+#define PCI_PHYS_ADDR 0x14005000
-+#define MAC0_PHYS_ADDR 0x10500000
-+#define MAC1_PHYS_ADDR 0x10510000
-+#define MACEN_PHYS_ADDR 0x10520000
-+#define MACDMA0_PHYS_ADDR 0x14004000
-+#define MACDMA1_PHYS_ADDR 0x14004200
-+#define UART0_PHYS_ADDR 0x11100000
-+#define UART1_PHYS_ADDR 0x11200000
-+#define UART3_PHYS_ADDR 0x11400000
-+#define GPIO2_PHYS_ADDR 0x11700000
-+#define SYS_PHYS_ADDR 0x11900000
-+#define DDMA_PHYS_ADDR 0x14002000
-+#define PE_PHYS_ADDR 0x14008000
-+#define PSC0_PHYS_ADDR 0x11A00000
-+#define PSC1_PHYS_ADDR 0x11B00000
-+#define PSC2_PHYS_ADDR 0x10A00000
-+#define PSC3_PHYS_ADDR 0x10B00000
-+#define PCI_MEM_PHYS_ADDR 0x400000000
-+#define PCI_IO_PHYS_ADDR 0x500000000
-+#define PCI_CONFIG0_PHYS_ADDR 0x600000000
-+#define PCI_CONFIG1_PHYS_ADDR 0x680000000
-+#define PCMCIA_IO_PHYS_ADDR 0xF00000000
-+#define PCMCIA_ATTR_PHYS_ADDR 0xF40000000
-+#define PCMCIA_MEM_PHYS_ADDR 0xF80000000
-+#endif
-+
-+/***********************************************************************/
-+
-+#ifdef CONFIG_SOC_AU1200
-+#define MEM_PHYS_ADDR 0x14000000
-+#define STATIC_MEM_PHYS_ADDR 0x14001000
-+#define AES_PHYS_ADDR 0x10300000
-+#define CIM_PHYS_ADDR 0x14004000
-+#define IC0_PHYS_ADDR 0x10400000
-+#define IC1_PHYS_ADDR 0x11800000
-+#define USBM_PHYS_ADDR 0x14020000
-+#define USBH_PHYS_ADDR 0x14020100
-+#define UART0_PHYS_ADDR 0x11100000
-+#define UART1_PHYS_ADDR 0x11200000
-+#define GPIO2_PHYS_ADDR 0x11700000
-+#define SYS_PHYS_ADDR 0x11900000
-+#define DDMA_PHYS_ADDR 0x14002000
-+#define PSC0_PHYS_ADDR 0x11A00000
-+#define PSC1_PHYS_ADDR 0x11B00000
-+#define PCMCIA_IO_PHYS_ADDR 0xF00000000
-+#define PCMCIA_ATTR_PHYS_ADDR 0xF40000000
-+#define PCMCIA_MEM_PHYS_ADDR 0xF80000000
-+#define SD0_PHYS_ADDR 0x10600000
-+#define SD1_PHYS_ADDR 0x10680000
-+#define LCD_PHYS_ADDR 0x15000000
-+#define SWCNT_PHYS_ADDR 0x1110010C
-+#define MAEFE_PHYS_ADDR 0x14012000
-+#define MAEBE_PHYS_ADDR 0x14010000
-+#endif
-+
-+
- /* Static Bus Controller */
- #define MEM_STCFG0 0xB4001000
- #define MEM_STTIME0 0xB4001004
-@@ -367,7 +695,7 @@
- #define AU1000_MAC0_ENABLE 0xB0520000
- #define AU1000_MAC1_ENABLE 0xB0520004
- #define NUM_ETH_INTERFACES 2
--#endif // CONFIG_SOC_AU1000
-+#endif /* CONFIG_SOC_AU1000 */
-
- /* Au1500 */
- #ifdef CONFIG_SOC_AU1500
-@@ -438,7 +766,7 @@
- #define AU1500_MAC0_ENABLE 0xB1520000
- #define AU1500_MAC1_ENABLE 0xB1520004
- #define NUM_ETH_INTERFACES 2
--#endif // CONFIG_SOC_AU1500
-+#endif /* CONFIG_SOC_AU1500 */
-
- /* Au1100 */
- #ifdef CONFIG_SOC_AU1100
-@@ -483,6 +811,22 @@
- #define AU1000_GPIO_13 45
- #define AU1000_GPIO_14 46
- #define AU1000_GPIO_15 47
-+#define AU1000_GPIO_16 48
-+#define AU1000_GPIO_17 49
-+#define AU1000_GPIO_18 50
-+#define AU1000_GPIO_19 51
-+#define AU1000_GPIO_20 52
-+#define AU1000_GPIO_21 53
-+#define AU1000_GPIO_22 54
-+#define AU1000_GPIO_23 55
-+#define AU1000_GPIO_24 56
-+#define AU1000_GPIO_25 57
-+#define AU1000_GPIO_26 58
-+#define AU1000_GPIO_27 59
-+#define AU1000_GPIO_28 60
-+#define AU1000_GPIO_29 61
-+#define AU1000_GPIO_30 62
-+#define AU1000_GPIO_31 63
-
- #define UART0_ADDR 0xB1100000
- #define UART1_ADDR 0xB1200000
-@@ -494,7 +838,7 @@
- #define AU1100_ETH0_BASE 0xB0500000
- #define AU1100_MAC0_ENABLE 0xB0520000
- #define NUM_ETH_INTERFACES 1
--#endif // CONFIG_SOC_AU1100
-+#endif /* CONFIG_SOC_AU1100 */
-
- #ifdef CONFIG_SOC_AU1550
- #define AU1550_UART0_INT 0
-@@ -511,14 +855,14 @@
- #define AU1550_PSC1_INT 11
- #define AU1550_PSC2_INT 12
- #define AU1550_PSC3_INT 13
--#define AU1550_TOY_INT 14
--#define AU1550_TOY_MATCH0_INT 15
--#define AU1550_TOY_MATCH1_INT 16
--#define AU1550_TOY_MATCH2_INT 17
--#define AU1550_RTC_INT 18
--#define AU1550_RTC_MATCH0_INT 19
--#define AU1550_RTC_MATCH1_INT 20
--#define AU1550_RTC_MATCH2_INT 21
-+#define AU1000_TOY_INT 14
-+#define AU1000_TOY_MATCH0_INT 15
-+#define AU1000_TOY_MATCH1_INT 16
-+#define AU1000_TOY_MATCH2_INT 17
-+#define AU1000_RTC_INT 18
-+#define AU1000_RTC_MATCH0_INT 19
-+#define AU1000_RTC_MATCH1_INT 20
-+#define AU1000_RTC_MATCH2_INT 21
- #define AU1550_NAND_INT 23
- #define AU1550_USB_DEV_REQ_INT 24
- #define AU1550_USB_DEV_SUS_INT 25
-@@ -573,7 +917,7 @@
- #define AU1550_MAC0_ENABLE 0xB0520000
- #define AU1550_MAC1_ENABLE 0xB0520004
- #define NUM_ETH_INTERFACES 2
--#endif // CONFIG_SOC_AU1550
-+#endif /* CONFIG_SOC_AU1550 */
-
- #ifdef CONFIG_SOC_AU1200
- #define AU1200_UART0_INT 0
-@@ -590,14 +934,14 @@
- #define AU1200_PSC1_INT 11
- #define AU1200_AES_INT 12
- #define AU1200_CAMERA_INT 13
--#define AU1200_TOY_INT 14
--#define AU1200_TOY_MATCH0_INT 15
--#define AU1200_TOY_MATCH1_INT 16
--#define AU1200_TOY_MATCH2_INT 17
--#define AU1200_RTC_INT 18
--#define AU1200_RTC_MATCH0_INT 19
--#define AU1200_RTC_MATCH1_INT 20
--#define AU1200_RTC_MATCH2_INT 21
-+#define AU1000_TOY_INT 14
-+#define AU1000_TOY_MATCH0_INT 15
-+#define AU1000_TOY_MATCH1_INT 16
-+#define AU1000_TOY_MATCH2_INT 17
-+#define AU1000_RTC_INT 18
-+#define AU1000_RTC_MATCH0_INT 19
-+#define AU1000_RTC_MATCH1_INT 20
-+#define AU1000_RTC_MATCH2_INT 21
- #define AU1200_NAND_INT 23
- #define AU1200_GPIO_204 24
- #define AU1200_GPIO_205 25
-@@ -605,6 +949,7 @@
- #define AU1200_GPIO_207 27
- #define AU1200_GPIO_208_215 28 // Logical OR of 208:215
- #define AU1200_USB_INT 29
-+#define AU1000_USB_HOST_INT AU1200_USB_INT
- #define AU1200_LCD_INT 30
- #define AU1200_MAE_BOTH_INT 31
- #define AU1000_GPIO_0 32
-@@ -643,21 +988,36 @@
- #define UART0_ADDR 0xB1100000
- #define UART1_ADDR 0xB1200000
-
--#define USB_OHCI_BASE 0x14020000 // phys addr for ioremap
--#define USB_HOST_CONFIG 0xB4027ffc
-+#define USB_UOC_BASE 0x14020020
-+#define USB_UOC_LEN 0x20
-+#define USB_OHCI_BASE 0x14020100
-+#define USB_OHCI_LEN 0x100
-+#define USB_EHCI_BASE 0x14020200
-+#define USB_EHCI_LEN 0x100
-+#define USB_UDC_BASE 0x14022000
-+#define USB_UDC_LEN 0x2000
-+#define USB_MSR_BASE 0xB4020000
-+#define USB_MSR_MCFG 4
-+#define USBMSRMCFG_OMEMEN 0
-+#define USBMSRMCFG_OBMEN 1
-+#define USBMSRMCFG_EMEMEN 2
-+#define USBMSRMCFG_EBMEN 3
-+#define USBMSRMCFG_DMEMEN 4
-+#define USBMSRMCFG_DBMEN 5
-+#define USBMSRMCFG_GMEMEN 6
-+#define USBMSRMCFG_OHCCLKEN 16
-+#define USBMSRMCFG_EHCCLKEN 17
-+#define USBMSRMCFG_UDCCLKEN 18
-+#define USBMSRMCFG_PHYPLLEN 19
-+#define USBMSRMCFG_RDCOMB 30
-+#define USBMSRMCFG_PFEN 31
-
--// these are here for prototyping on au1550 (do not exist on au1200)
--#define AU1200_ETH0_BASE 0xB0500000
--#define AU1200_ETH1_BASE 0xB0510000
--#define AU1200_MAC0_ENABLE 0xB0520000
--#define AU1200_MAC1_ENABLE 0xB0520004
--#define NUM_ETH_INTERFACES 2
--#endif // CONFIG_SOC_AU1200
-+#endif /* CONFIG_SOC_AU1200 */
-
- #define AU1000_LAST_INTC0_INT 31
-+#define AU1000_LAST_INTC1_INT 63
- #define AU1000_MAX_INTR 63
-
--
- /* Programmable Counters 0 and 1 */
- #define SYS_BASE 0xB1900000
- #define SYS_COUNTER_CNTRL (SYS_BASE + 0x14)
-@@ -728,6 +1088,8 @@
- #define I2S_CONTROL_D (1<<1)
- #define I2S_CONTROL_CE (1<<0)
-
-+#ifndef CONFIG_SOC_AU1200
-+
- /* USB Host Controller */
- #define USB_OHCI_LEN 0x00100000
-
-@@ -773,6 +1135,8 @@
- #define USBDEV_ENABLE (1<<1)
- #define USBDEV_CE (1<<0)
-
-+#endif /* !CONFIG_SOC_AU1200 */
-+
- /* Ethernet Controllers */
-
- /* 4 byte offsets from AU1000_ETH_BASE */
-@@ -1171,6 +1535,37 @@
- #define SYS_PF_PSC1_S1 (1 << 1)
- #define SYS_PF_MUST_BE_SET ((1 << 5) | (1 << 2))
-
-+/* Au1200 Only */
-+#ifdef CONFIG_SOC_AU1200
-+#define SYS_PINFUNC_DMA (1<<31)
-+#define SYS_PINFUNC_S0A (1<<30)
-+#define SYS_PINFUNC_S1A (1<<29)
-+#define SYS_PINFUNC_LP0 (1<<28)
-+#define SYS_PINFUNC_LP1 (1<<27)
-+#define SYS_PINFUNC_LD16 (1<<26)
-+#define SYS_PINFUNC_LD8 (1<<25)
-+#define SYS_PINFUNC_LD1 (1<<24)
-+#define SYS_PINFUNC_LD0 (1<<23)
-+#define SYS_PINFUNC_P1A (3<<21)
-+#define SYS_PINFUNC_P1B (1<<20)
-+#define SYS_PINFUNC_FS3 (1<<19)
-+#define SYS_PINFUNC_P0A (3<<17)
-+#define SYS_PINFUNC_CS (1<<16)
-+#define SYS_PINFUNC_CIM (1<<15)
-+#define SYS_PINFUNC_P1C (1<<14)
-+#define SYS_PINFUNC_U1T (1<<12)
-+#define SYS_PINFUNC_U1R (1<<11)
-+#define SYS_PINFUNC_EX1 (1<<10)
-+#define SYS_PINFUNC_EX0 (1<<9)
-+#define SYS_PINFUNC_U0R (1<<8)
-+#define SYS_PINFUNC_MC (1<<7)
-+#define SYS_PINFUNC_S0B (1<<6)
-+#define SYS_PINFUNC_S0C (1<<5)
-+#define SYS_PINFUNC_P0B (1<<4)
-+#define SYS_PINFUNC_U0T (1<<3)
-+#define SYS_PINFUNC_S1B (1<<2)
-+#endif
-+
- #define SYS_TRIOUTRD 0xB1900100
- #define SYS_TRIOUTCLR 0xB1900100
- #define SYS_OUTPUTRD 0xB1900108
-@@ -1298,7 +1693,6 @@
- #define SD1_XMIT_FIFO 0xB0680000
- #define SD1_RECV_FIFO 0xB0680004
-
--
- #if defined (CONFIG_SOC_AU1500) || defined(CONFIG_SOC_AU1550)
- /* Au1500 PCI Controller */
- #define Au1500_CFG_BASE 0xB4005000 // virtual, kseg0 addr
-@@ -1388,9 +1782,60 @@
-
- #endif
-
-+#ifndef _LANGUAGE_ASSEMBLY
-+typedef volatile struct
-+{
-+ /* 0x0000 */ u32 toytrim;
-+ /* 0x0004 */ u32 toywrite;
-+ /* 0x0008 */ u32 toymatch0;
-+ /* 0x000C */ u32 toymatch1;
-+ /* 0x0010 */ u32 toymatch2;
-+ /* 0x0014 */ u32 cntrctrl;
-+ /* 0x0018 */ u32 scratch0;
-+ /* 0x001C */ u32 scratch1;
-+ /* 0x0020 */ u32 freqctrl0;
-+ /* 0x0024 */ u32 freqctrl1;
-+ /* 0x0028 */ u32 clksrc;
-+ /* 0x002C */ u32 pinfunc;
-+ /* 0x0030 */ u32 reserved0;
-+ /* 0x0034 */ u32 wakemsk;
-+ /* 0x0038 */ u32 endian;
-+ /* 0x003C */ u32 powerctrl;
-+ /* 0x0040 */ u32 toyread;
-+ /* 0x0044 */ u32 rtctrim;
-+ /* 0x0048 */ u32 rtcwrite;
-+ /* 0x004C */ u32 rtcmatch0;
-+ /* 0x0050 */ u32 rtcmatch1;
-+ /* 0x0054 */ u32 rtcmatch2;
-+ /* 0x0058 */ u32 rtcread;
-+ /* 0x005C */ u32 wakesrc;
-+ /* 0x0060 */ u32 cpupll;
-+ /* 0x0064 */ u32 auxpll;
-+ /* 0x0068 */ u32 reserved1;
-+ /* 0x006C */ u32 reserved2;
-+ /* 0x0070 */ u32 reserved3;
-+ /* 0x0074 */ u32 reserved4;
-+ /* 0x0078 */ u32 slppwr;
-+ /* 0x007C */ u32 sleep;
-+ /* 0x0080 */ u32 reserved5[32];
-+ /* 0x0100 */ u32 trioutrd;
-+#define trioutclr trioutrd
-+ /* 0x0104 */ u32 reserved6;
-+ /* 0x0108 */ u32 outputrd;
-+#define outputset outputrd
-+ /* 0x010C */ u32 outputclr;
-+ /* 0x0110 */ u32 pinstaterd;
-+#define pininputen pinstaterd
-+
-+} AU1X00_SYS;
-+
-+static AU1X00_SYS* const sys = (AU1X00_SYS *)SYS_BASE;
-+
-+#endif
- /* Processor information base on prid.
- * Copied from PowerPC.
- */
-+#ifndef _LANGUAGE_ASSEMBLY
- struct cpu_spec {
- /* CPU is matched via (PRID & prid_mask) == prid_value */
- unsigned int prid_mask;
-@@ -1404,3 +1849,6 @@
- extern struct cpu_spec cpu_specs[];
- extern struct cpu_spec *cur_cpu_spec[];
- #endif
-+
-+#endif
-+
-diff -Nur linux-2.4.32-rc1/include/asm-mips/au1000_pcmcia.h linux-2.4.32-rc1.mips/include/asm-mips/au1000_pcmcia.h
---- linux-2.4.32-rc1/include/asm-mips/au1000_pcmcia.h 2005-01-19 15:10:11.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/au1000_pcmcia.h 2005-01-30 09:01:28.000000000 +0100
-@@ -38,16 +38,41 @@
- #define AU1X_SOCK0_PHYS_MEM 0xF80000000
-
- /* pcmcia socket 1 needs external glue logic so the memory map
-- * differs from board to board.
-+ * differs from board to board. the general rule is that
-+ * static bus address bit 26 should be used to decode socket 0
-+ * from socket 1. alas, some boards dont follow this...
-+ * These really belong in a board-specific header file...
- */
--#if defined(CONFIG_MIPS_PB1000) || defined(CONFIG_MIPS_PB1100) || defined(CONFIG_MIPS_PB1500)
--#define AU1X_SOCK1_IO 0xF08000000
--#define AU1X_SOCK1_PHYS_ATTR 0xF48000000
--#define AU1X_SOCK1_PHYS_MEM 0xF88000000
--#elif defined(CONFIG_MIPS_DB1000) || defined(CONFIG_MIPS_DB1100) || defined(CONFIG_MIPS_DB1500) || defined(CONFIG_MIPS_PB1550) || defined(CONFIG_MIPS_DB1550)
--#define AU1X_SOCK1_IO 0xF04000000
--#define AU1X_SOCK1_PHYS_ATTR 0xF44000000
--#define AU1X_SOCK1_PHYS_MEM 0xF84000000
-+#ifdef CONFIG_MIPS_PB1000
-+#define SOCK1_DECODE (1<<27)
-+#endif
-+#ifdef CONFIG_MIPS_DB1000
-+#define SOCK1_DECODE (1<<26)
-+#endif
-+#ifdef CONFIG_MIPS_DB1500
-+#define SOCK1_DECODE (1<<26)
-+#endif
-+#ifdef CONFIG_MIPS_DB1100
-+#define SOCK1_DECODE (1<<26)
-+#endif
-+#ifdef CONFIG_MIPS_DB1550
-+#define SOCK1_DECODE (1<<26)
-+#endif
-+#ifdef CONFIG_MIPS_DB1200
-+#define SOCK1_DECODE (1<<26)
-+#endif
-+#ifdef CONFIG_MIPS_PB1550
-+#define SOCK1_DECODE (1<<26)
-+#endif
-+#ifdef CONFIG_MIPS_PB1200
-+#define SOCK1_DECODE (1<<26)
-+#endif
-+
-+/* The board has a second PCMCIA socket */
-+#ifdef SOCK1_DECODE
-+#define AU1X_SOCK1_IO (0xF00000000|SOCK1_DECODE)
-+#define AU1X_SOCK1_PHYS_ATTR (0xF40000000|SOCK1_DECODE)
-+#define AU1X_SOCK1_PHYS_MEM (0xF80000000|SOCK1_DECODE)
- #endif
-
- struct pcmcia_state {
-diff -Nur linux-2.4.32-rc1/include/asm-mips/au1100_mmc.h linux-2.4.32-rc1.mips/include/asm-mips/au1100_mmc.h
---- linux-2.4.32-rc1/include/asm-mips/au1100_mmc.h 2005-01-19 15:10:11.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/au1100_mmc.h 2005-01-30 09:01:28.000000000 +0100
-@@ -39,16 +39,22 @@
- #define __ASM_AU1100_MMC_H
-
-
--#define NUM_AU1100_MMC_CONTROLLERS 2
--
--
--#define AU1100_SD_IRQ 2
--
-+#if defined(CONFIG_SOC_AU1100)
-+#define NUM_MMC_CONTROLLERS 2
-+#define AU1X_MMC_INT AU1100_SD_INT
-+#endif
-+
-+#if defined(CONFIG_SOC_AU1200)
-+#define NUM_MMC_CONTROLLERS 2
-+#define AU1X_MMC_INT AU1200_SD_INT
-+#endif
-
- #define SD0_BASE 0xB0600000
- #define SD1_BASE 0xB0680000
-
-
-+
-+
- /*
- * Register offsets.
- */
-@@ -201,5 +207,12 @@
- #define SD_CMD_RT_1B (0x00810000)
-
-
-+/* support routines required on a platform-specific basis */
-+extern void mmc_card_inserted(int _n_, int *_res_);
-+extern void mmc_card_writable(int _n_, int *_res_);
-+extern void mmc_power_on(int _n_);
-+extern void mmc_power_off(int _n_);
-+
-+
- #endif /* __ASM_AU1100_MMC_H */
-
-diff -Nur linux-2.4.32-rc1/include/asm-mips/au1xxx_dbdma.h linux-2.4.32-rc1.mips/include/asm-mips/au1xxx_dbdma.h
---- linux-2.4.32-rc1/include/asm-mips/au1xxx_dbdma.h 2005-01-19 15:10:11.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/au1xxx_dbdma.h 2005-01-30 09:01:28.000000000 +0100
-@@ -43,7 +43,7 @@
- #define DDMA_GLOBAL_BASE 0xb4003000
- #define DDMA_CHANNEL_BASE 0xb4002000
-
--typedef struct dbdma_global {
-+typedef volatile struct dbdma_global {
- u32 ddma_config;
- u32 ddma_intstat;
- u32 ddma_throttle;
-@@ -60,7 +60,7 @@
-
- /* The structure of a DMA Channel.
- */
--typedef struct au1xxx_dma_channel {
-+typedef volatile struct au1xxx_dma_channel {
- u32 ddma_cfg; /* See below */
- u32 ddma_desptr; /* 32-byte aligned pointer to descriptor */
- u32 ddma_statptr; /* word aligned pointer to status word */
-@@ -96,7 +96,7 @@
- /* "Standard" DDMA Descriptor.
- * Must be 32-byte aligned.
- */
--typedef struct au1xxx_ddma_desc {
-+typedef volatile struct au1xxx_ddma_desc {
- u32 dscr_cmd0; /* See below */
- u32 dscr_cmd1; /* See below */
- u32 dscr_source0; /* source phys address */
-@@ -105,6 +105,12 @@
- u32 dscr_dest1; /* See below */
- u32 dscr_stat; /* completion status */
- u32 dscr_nxtptr; /* Next descriptor pointer (mostly) */
-+ /* First 32bytes are HW specific!!!
-+ Lets have some SW data following.. make sure its 32bytes
-+ */
-+ u32 sw_status;
-+ u32 sw_context;
-+ u32 sw_reserved[6];
- } au1x_ddma_desc_t;
-
- #define DSCR_CMD0_V (1 << 31) /* Descriptor valid */
-@@ -123,6 +129,8 @@
- #define DSCR_CMD0_CV (0x1 << 2) /* Clear Valid when done */
- #define DSCR_CMD0_ST_MASK (0x3 << 0) /* Status instruction */
-
-+#define SW_STATUS_INUSE (1<<0)
-+
- /* Command 0 device IDs.
- */
- #ifdef CONFIG_SOC_AU1550
-@@ -169,8 +177,8 @@
- #define DSCR_CMD0_SDMS_RX0 9
- #define DSCR_CMD0_SDMS_TX1 10
- #define DSCR_CMD0_SDMS_RX1 11
--#define DSCR_CMD0_AES_TX 12
--#define DSCR_CMD0_AES_RX 13
-+#define DSCR_CMD0_AES_TX 13
-+#define DSCR_CMD0_AES_RX 12
- #define DSCR_CMD0_PSC0_TX 14
- #define DSCR_CMD0_PSC0_RX 15
- #define DSCR_CMD0_PSC1_TX 16
-@@ -189,6 +197,10 @@
- #define DSCR_CMD0_THROTTLE 30
- #define DSCR_CMD0_ALWAYS 31
- #define DSCR_NDEV_IDS 32
-+/* THis macro is used to find/create custom device types */
-+#define DSCR_DEV2CUSTOM_ID(x,d) (((((x)&0xFFFF)<<8)|0x32000000)|((d)&0xFF))
-+#define DSCR_CUSTOM2DEV_ID(x) ((x)&0xFF)
-+
-
- #define DSCR_CMD0_SID(x) (((x) & 0x1f) << 25)
- #define DSCR_CMD0_DID(x) (((x) & 0x1f) << 20)
-@@ -277,6 +289,43 @@
- */
- #define NUM_DBDMA_CHANS 16
-
-+/*
-+ * Ddma API definitions
-+ * FIXME: may not fit to this header file
-+ */
-+typedef struct dbdma_device_table {
-+ u32 dev_id;
-+ u32 dev_flags;
-+ u32 dev_tsize;
-+ u32 dev_devwidth;
-+ u32 dev_physaddr; /* If FIFO */
-+ u32 dev_intlevel;
-+ u32 dev_intpolarity;
-+} dbdev_tab_t;
-+
-+
-+typedef struct dbdma_chan_config {
-+ spinlock_t lock;
-+
-+ u32 chan_flags;
-+ u32 chan_index;
-+ dbdev_tab_t *chan_src;
-+ dbdev_tab_t *chan_dest;
-+ au1x_dma_chan_t *chan_ptr;
-+ au1x_ddma_desc_t *chan_desc_base;
-+ au1x_ddma_desc_t *get_ptr, *put_ptr, *cur_ptr;
-+ void *chan_callparam;
-+ void (*chan_callback)(int, void *, struct pt_regs *);
-+} chan_tab_t;
-+
-+#define DEV_FLAGS_INUSE (1 << 0)
-+#define DEV_FLAGS_ANYUSE (1 << 1)
-+#define DEV_FLAGS_OUT (1 << 2)
-+#define DEV_FLAGS_IN (1 << 3)
-+#define DEV_FLAGS_BURSTABLE (1 << 4)
-+#define DEV_FLAGS_SYNC (1 << 5)
-+/* end Ddma API definitions */
-+
- /* External functions for drivers to use.
- */
- /* Use this to allocate a dbdma channel. The device ids are one of the
-@@ -299,8 +348,8 @@
-
- /* Put buffers on source/destination descriptors.
- */
--u32 au1xxx_dbdma_put_source(u32 chanid, void *buf, int nbytes);
--u32 au1xxx_dbdma_put_dest(u32 chanid, void *buf, int nbytes);
-+u32 _au1xxx_dbdma_put_source(u32 chanid, void *buf, int nbytes, u32 flags);
-+u32 _au1xxx_dbdma_put_dest(u32 chanid, void *buf, int nbytes, u32 flags);
-
- /* Get a buffer from the destination descriptor.
- */
-@@ -314,5 +363,25 @@
- void au1xxx_dbdma_chan_free(u32 chanid);
- void au1xxx_dbdma_dump(u32 chanid);
-
-+u32 au1xxx_dbdma_put_dscr(u32 chanid, au1x_ddma_desc_t *dscr );
-+
-+u32 au1xxx_ddma_add_device( dbdev_tab_t *dev );
-+
-+/*
-+ Some compatibilty macros --
-+ Needed to make changes to API without breaking existing drivers
-+*/
-+#define au1xxx_dbdma_put_source(chanid,buf,nbytes)_au1xxx_dbdma_put_source(chanid, buf, nbytes, DDMA_FLAGS_IE)
-+#define au1xxx_dbdma_put_source_flags(chanid,buf,nbytes,flags) _au1xxx_dbdma_put_source(chanid, buf, nbytes, flags)
-+
-+#define au1xxx_dbdma_put_dest(chanid,buf,nbytes) _au1xxx_dbdma_put_dest(chanid, buf, nbytes, DDMA_FLAGS_IE)
-+#define au1xxx_dbdma_put_dest_flags(chanid,buf,nbytes,flags) _au1xxx_dbdma_put_dest(chanid, buf, nbytes, flags)
-+
-+/*
-+ * Flags for the put_source/put_dest functions.
-+ */
-+#define DDMA_FLAGS_IE (1<<0)
-+#define DDMA_FLAGS_NOIE (1<<1)
-+
- #endif /* _LANGUAGE_ASSEMBLY */
- #endif /* _AU1000_DBDMA_H_ */
-diff -Nur linux-2.4.32-rc1/include/asm-mips/au1xxx_gpio.h linux-2.4.32-rc1.mips/include/asm-mips/au1xxx_gpio.h
---- linux-2.4.32-rc1/include/asm-mips/au1xxx_gpio.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/au1xxx_gpio.h 2005-01-30 09:01:28.000000000 +0100
-@@ -0,0 +1,22 @@
-+
-+
-+#ifndef __AU1XXX_GPIO_H
-+#define __AU1XXX_GPIO_H
-+
-+void au1xxx_gpio1_set_inputs(void);
-+void au1xxx_gpio_tristate(int signal);
-+void au1xxx_gpio_write(int signal, int value);
-+int au1xxx_gpio_read(int signal);
-+
-+typedef volatile struct
-+{
-+ u32 dir;
-+ u32 reserved;
-+ u32 output;
-+ u32 pinstate;
-+ u32 inten;
-+ u32 enable;
-+
-+} AU1X00_GPIO2;
-+
-+#endif //__AU1XXX_GPIO_H
-diff -Nur linux-2.4.32-rc1/include/asm-mips/au1xxx_psc.h linux-2.4.32-rc1.mips/include/asm-mips/au1xxx_psc.h
---- linux-2.4.32-rc1/include/asm-mips/au1xxx_psc.h 2005-01-19 15:10:11.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/au1xxx_psc.h 2005-01-30 09:01:28.000000000 +0100
-@@ -41,6 +41,11 @@
- #define PSC3_BASE_ADDR 0xb0d00000
- #endif
-
-+#ifdef CONFIG_SOC_AU1200
-+#define PSC0_BASE_ADDR 0xb1a00000
-+#define PSC1_BASE_ADDR 0xb1b00000
-+#endif
-+
- /* The PSC select and control registers are common to
- * all protocols.
- */
-@@ -226,6 +231,8 @@
- #define PSC_I2SCFG_DD_DISABLE (1 << 27)
- #define PSC_I2SCFG_DE_ENABLE (1 << 26)
- #define PSC_I2SCFG_SET_WS(x) (((((x) / 2) - 1) & 0x7f) << 16)
-+#define PSC_I2SCFG_WS(n) ((n&0xFF)<<16)
-+#define PSC_I2SCFG_WS_MASK (PSC_I2SCFG_WS(0x3F))
- #define PSC_I2SCFG_WI (1 << 15)
-
- #define PSC_I2SCFG_DIV_MASK (3 << 13)
-diff -Nur linux-2.4.32-rc1/include/asm-mips/bootinfo.h linux-2.4.32-rc1.mips/include/asm-mips/bootinfo.h
---- linux-2.4.32-rc1/include/asm-mips/bootinfo.h 2004-02-18 14:36:32.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/bootinfo.h 2005-01-30 09:01:28.000000000 +0100
-@@ -180,6 +180,9 @@
- #define MACH_MTX1 7 /* 4G MTX-1 Au1500-based board */
- #define MACH_CSB250 8 /* Cogent Au1500 */
- #define MACH_PB1550 9 /* Au1550-based eval board */
-+#define MACH_PB1200 10 /* Au1200-based eval board */
-+#define MACH_DB1550 11 /* Au1550-based eval board */
-+#define MACH_DB1200 12 /* Au1200-based eval board */
-
- /*
- * Valid machtype for group NEC_VR41XX
-diff -Nur linux-2.4.32-rc1/include/asm-mips/db1200.h linux-2.4.32-rc1.mips/include/asm-mips/db1200.h
---- linux-2.4.32-rc1/include/asm-mips/db1200.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/db1200.h 2005-01-30 09:02:45.000000000 +0100
-@@ -0,0 +1,214 @@
-+/*
-+ * AMD Alchemy DB1200 Referrence Board
-+ * Board Registers defines.
-+ *
-+ * ########################################################################
-+ *
-+ * This program is free software; you can distribute it and/or modify it
-+ * under the terms of the GNU General Public License (Version 2) as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope 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 __ASM_DB1200_H
-+#define __ASM_DB1200_H
-+
-+#include <linux/types.h>
-+
-+// This is defined in au1000.h with bogus value
-+#undef AU1X00_EXTERNAL_INT
-+
-+#define DBDMA_AC97_TX_CHAN DSCR_CMD0_PSC1_TX
-+#define DBDMA_AC97_RX_CHAN DSCR_CMD0_PSC1_RX
-+#define DBDMA_I2S_TX_CHAN DSCR_CMD0_PSC1_TX
-+#define DBDMA_I2S_RX_CHAN DSCR_CMD0_PSC1_RX
-+
-+/* SPI and SMB are muxed on the Pb1200 board.
-+ Refer to board documentation.
-+ */
-+#define SPI_PSC_BASE PSC0_BASE_ADDR
-+#define SMBUS_PSC_BASE PSC0_BASE_ADDR
-+/* AC97 and I2S are muxed on the Pb1200 board.
-+ Refer to board documentation.
-+ */
-+#define AC97_PSC_BASE PSC1_BASE_ADDR
-+#define I2S_PSC_BASE PSC1_BASE_ADDR
-+
-+#define BCSR_KSEG1_ADDR 0xB9800000
-+
-+typedef volatile struct
-+{
-+ /*00*/ u16 whoami;
-+ u16 reserved0;
-+ /*04*/ u16 status;
-+ u16 reserved1;
-+ /*08*/ u16 switches;
-+ u16 reserved2;
-+ /*0C*/ u16 resets;
-+ u16 reserved3;
-+
-+ /*10*/ u16 pcmcia;
-+ u16 reserved4;
-+ /*14*/ u16 board;
-+ u16 reserved5;
-+ /*18*/ u16 disk_leds;
-+ u16 reserved6;
-+ /*1C*/ u16 system;
-+ u16 reserved7;
-+
-+ /*20*/ u16 intclr;
-+ u16 reserved8;
-+ /*24*/ u16 intset;
-+ u16 reserved9;
-+ /*28*/ u16 intclr_mask;
-+ u16 reserved10;
-+ /*2C*/ u16 intset_mask;
-+ u16 reserved11;
-+
-+ /*30*/ u16 sig_status;
-+ u16 reserved12;
-+ /*34*/ u16 int_status;
-+ u16 reserved13;
-+ /*38*/ u16 reserved14;
-+ u16 reserved15;
-+ /*3C*/ u16 reserved16;
-+ u16 reserved17;
-+
-+} BCSR;
-+
-+static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+
-+/*
-+ * Register bit definitions for the BCSRs
-+ */
-+#define BCSR_WHOAMI_DCID 0x000F
-+#define BCSR_WHOAMI_CPLD 0x00F0
-+#define BCSR_WHOAMI_BOARD 0x0F00
-+
-+#define BCSR_STATUS_PCMCIA0VS 0x0003
-+#define BCSR_STATUS_PCMCIA1VS 0x000C
-+#define BCSR_STATUS_SWAPBOOT 0x0040
-+#define BCSR_STATUS_FLASHBUSY 0x0100
-+#define BCSR_STATUS_IDECBLID 0x0200
-+#define BCSR_STATUS_SD0WP 0x0400
-+#define BCSR_STATUS_U0RXD 0x1000
-+#define BCSR_STATUS_U1RXD 0x2000
-+
-+#define BCSR_SWITCHES_OCTAL 0x00FF
-+#define BCSR_SWITCHES_DIP_1 0x0080
-+#define BCSR_SWITCHES_DIP_2 0x0040
-+#define BCSR_SWITCHES_DIP_3 0x0020
-+#define BCSR_SWITCHES_DIP_4 0x0010
-+#define BCSR_SWITCHES_DIP_5 0x0008
-+#define BCSR_SWITCHES_DIP_6 0x0004
-+#define BCSR_SWITCHES_DIP_7 0x0002
-+#define BCSR_SWITCHES_DIP_8 0x0001
-+#define BCSR_SWITCHES_ROTARY 0x0F00
-+
-+#define BCSR_RESETS_ETH 0x0001
-+#define BCSR_RESETS_CAMERA 0x0002
-+#define BCSR_RESETS_DC 0x0004
-+#define BCSR_RESETS_IDE 0x0008
-+#define BCSR_RESETS_TV 0x0010
-+/* not resets but in the same register */
-+#define BCSR_RESETS_PWMR1mUX 0x0800
-+#define BCSR_RESETS_PCS0MUX 0x1000
-+#define BCSR_RESETS_PCS1MUX 0x2000
-+#define BCSR_RESETS_SPISEL 0x4000
-+
-+#define BCSR_PCMCIA_PC0VPP 0x0003
-+#define BCSR_PCMCIA_PC0VCC 0x000C
-+#define BCSR_PCMCIA_PC0DRVEN 0x0010
-+#define BCSR_PCMCIA_PC0RST 0x0080
-+#define BCSR_PCMCIA_PC1VPP 0x0300
-+#define BCSR_PCMCIA_PC1VCC 0x0C00
-+#define BCSR_PCMCIA_PC1DRVEN 0x1000
-+#define BCSR_PCMCIA_PC1RST 0x8000
-+
-+#define BCSR_BOARD_LCDVEE 0x0001
-+#define BCSR_BOARD_LCDVDD 0x0002
-+#define BCSR_BOARD_LCDBL 0x0004
-+#define BCSR_BOARD_CAMSNAP 0x0010
-+#define BCSR_BOARD_CAMPWR 0x0020
-+#define BCSR_BOARD_SD0PWR 0x0040
-+
-+#define BCSR_LEDS_DECIMALS 0x0003
-+#define BCSR_LEDS_LED0 0x0100
-+#define BCSR_LEDS_LED1 0x0200
-+#define BCSR_LEDS_LED2 0x0400
-+#define BCSR_LEDS_LED3 0x0800
-+
-+#define BCSR_SYSTEM_POWEROFF 0x4000
-+#define BCSR_SYSTEM_RESET 0x8000
-+
-+/* Bit positions for the different interrupt sources */
-+#define BCSR_INT_IDE 0x0001
-+#define BCSR_INT_ETH 0x0002
-+#define BCSR_INT_PC0 0x0004
-+#define BCSR_INT_PC0STSCHG 0x0008
-+#define BCSR_INT_PC1 0x0010
-+#define BCSR_INT_PC1STSCHG 0x0020
-+#define BCSR_INT_DC 0x0040
-+#define BCSR_INT_FLASHBUSY 0x0080
-+#define BCSR_INT_PC0INSERT 0x0100
-+#define BCSR_INT_PC0EJECT 0x0200
-+#define BCSR_INT_PC1INSERT 0x0400
-+#define BCSR_INT_PC1EJECT 0x0800
-+#define BCSR_INT_SD0INSERT 0x1000
-+#define BCSR_INT_SD0EJECT 0x2000
-+
-+#define AU1XXX_SMC91111_PHYS_ADDR (0x19000300)
-+#define AU1XXX_SMC91111_IRQ DB1200_ETH_INT
-+
-+#define AU1XXX_ATA_PHYS_ADDR (0x18800000)
-+#define AU1XXX_ATA_PHYS_LEN (0x100)
-+#define AU1XXX_ATA_REG_OFFSET (5)
-+#define AU1XXX_ATA_INT DB1200_IDE_INT
-+#define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1;
-+#define AU1XXX_ATA_RQSIZE 128
-+
-+#define NAND_PHYS_ADDR 0x20000000
-+
-+/*
-+ * External Interrupts for Pb1200 as of 8/6/2004.
-+ * Bit positions in the CPLD registers can be calculated by taking
-+ * the interrupt define and subtracting the DB1200_INT_BEGIN value.
-+ * *example: IDE bis pos is = 64 - 64
-+ ETH bit pos is = 65 - 64
-+ */
-+#define DB1200_INT_BEGIN (AU1000_LAST_INTC1_INT + 1)
-+#define DB1200_IDE_INT (DB1200_INT_BEGIN + 0)
-+#define DB1200_ETH_INT (DB1200_INT_BEGIN + 1)
-+#define DB1200_PC0_INT (DB1200_INT_BEGIN + 2)
-+#define DB1200_PC0_STSCHG_INT (DB1200_INT_BEGIN + 3)
-+#define DB1200_PC1_INT (DB1200_INT_BEGIN + 4)
-+#define DB1200_PC1_STSCHG_INT (DB1200_INT_BEGIN + 5)
-+#define DB1200_DC_INT (DB1200_INT_BEGIN + 6)
-+#define DB1200_FLASHBUSY_INT (DB1200_INT_BEGIN + 7)
-+#define DB1200_PC0_INSERT_INT (DB1200_INT_BEGIN + 8)
-+#define DB1200_PC0_EJECT_INT (DB1200_INT_BEGIN + 9)
-+#define DB1200_PC1_INSERT_INT (DB1200_INT_BEGIN + 10)
-+#define DB1200_PC1_EJECT_INT (DB1200_INT_BEGIN + 11)
-+#define DB1200_SD0_INSERT_INT (DB1200_INT_BEGIN + 12)
-+#define DB1200_SD0_EJECT_INT (DB1200_INT_BEGIN + 13)
-+
-+#define DB1200_INT_END (DB1200_INT_BEGIN + 15)
-+
-+/* For drivers/pcmcia/au1000_db1x00.c */
-+#define BOARD_PC0_INT DB1200_PC0_INT
-+#define BOARD_PC1_INT DB1200_PC1_INT
-+#define BOARD_CARD_INSERTED(SOCKET) bcsr->sig_status & (1<<(8+(2*SOCKET)))
-+
-+#endif /* __ASM_DB1200_H */
-+
-diff -Nur linux-2.4.32-rc1/include/asm-mips/db1x00.h linux-2.4.32-rc1.mips/include/asm-mips/db1x00.h
---- linux-2.4.32-rc1/include/asm-mips/db1x00.h 2005-01-19 15:10:11.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/db1x00.h 2005-01-30 09:06:19.000000000 +0100
-@@ -1,5 +1,5 @@
- /*
-- * AMD Alchemy DB1x00 Reference Boards
-+ * AMD Alchemy DB1x00 Reference Boards (BUT NOT DB1200)
- *
- * Copyright 2001 MontaVista Software Inc.
- * Author: MontaVista Software, Inc.
-@@ -36,9 +36,18 @@
- #define AC97_PSC_BASE PSC1_BASE_ADDR
- #define SMBUS_PSC_BASE PSC2_BASE_ADDR
- #define I2S_PSC_BASE PSC3_BASE_ADDR
-+#define NAND_CS 1
-+/* for drivers/pcmcia/au1000_db1x00.c */
-+#define BOARD_PC0_INT AU1000_GPIO_3
-+#define BOARD_PC1_INT AU1000_GPIO_5
-+#define BOARD_CARD_INSERTED(SOCKET) !(bcsr->status & (1<<(4+SOCKET)))
-
- #else
- #define BCSR_KSEG1_ADDR 0xAE000000
-+/* for drivers/pcmcia/au1000_db1x00.c */
-+#define BOARD_PC0_INT AU1000_GPIO_2
-+#define BOARD_PC1_INT AU1000_GPIO_5
-+#define BOARD_CARD_INSERTED(SOCKET) !(bcsr->status & (1<<(4+SOCKET)))
- #endif
-
- /*
-@@ -66,6 +75,7 @@
-
- } BCSR;
-
-+static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-
- /*
- * Register/mask bit definitions for the BCSRs
-@@ -130,14 +140,6 @@
-
- #define BCSR_SWRESET_RESET 0x0080
-
--/* PCMCIA Db1x00 specific defines */
--#define PCMCIA_MAX_SOCK 1
--#define PCMCIA_NUM_SOCKS (PCMCIA_MAX_SOCK+1)
--
--/* VPP/VCC */
--#define SET_VCC_VPP(VCC, VPP, SLOT)\
-- ((((VCC)<<2) | ((VPP)<<0)) << ((SLOT)*8))
--
- /* MTD CONFIG OPTIONS */
- #if defined(CONFIG_MTD_DB1X00_BOOT) && defined(CONFIG_MTD_DB1X00_USER)
- #define DB1X00_BOTH_BANKS
-@@ -147,48 +149,15 @@
- #define DB1X00_USER_ONLY
- #endif
-
--/* SD controller macros */
--/*
-- * Detect card.
-- */
--#define mmc_card_inserted(_n_, _res_) \
-- do { \
-- BCSR * const bcsr = (BCSR *)0xAE000000; \
-- unsigned long mmc_wp, board_specific; \
-- if ((_n_)) { \
-- mmc_wp = BCSR_BOARD_SD1_WP; \
-- } else { \
-- mmc_wp = BCSR_BOARD_SD0_WP; \
-- } \
-- board_specific = au_readl((unsigned long)(&bcsr->specific)); \
-- if (!(board_specific & mmc_wp)) {/* low means card present */ \
-- *(int *)(_res_) = 1; \
-- } else { \
-- *(int *)(_res_) = 0; \
-- } \
-- } while (0)
--
-+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX) && defined(CONFIG_MIPS_DB1550)
- /*
-- * Apply power to card slot(s).
-+ * Daughter card information.
- */
--#define mmc_power_on(_n_) \
-- do { \
-- BCSR * const bcsr = (BCSR *)0xAE000000; \
-- unsigned long mmc_pwr, mmc_wp, board_specific; \
-- if ((_n_)) { \
-- mmc_pwr = BCSR_BOARD_SD1_PWR; \
-- mmc_wp = BCSR_BOARD_SD1_WP; \
-- } else { \
-- mmc_pwr = BCSR_BOARD_SD0_PWR; \
-- mmc_wp = BCSR_BOARD_SD0_WP; \
-- } \
-- board_specific = au_readl((unsigned long)(&bcsr->specific)); \
-- if (!(board_specific & mmc_wp)) {/* low means card present */ \
-- board_specific |= mmc_pwr; \
-- au_writel(board_specific, (int)(&bcsr->specific)); \
-- au_sync(); \
-- } \
-- } while (0)
-+#define DAUGHTER_CARD_IRQ (AU1000_GPIO_8)
-+/* DC_IDE */
-+#define AU1XXX_ATA_PHYS_ADDR (0x0C000000)
-+#define AU1XXX_ATA_REG_OFFSET (5)
-+#endif /* CONFIG_MIPS_DB1550 */
-
- #endif /* __ASM_DB1X00_H */
-
-diff -Nur linux-2.4.32-rc1/include/asm-mips/elf.h linux-2.4.32-rc1.mips/include/asm-mips/elf.h
---- linux-2.4.32-rc1/include/asm-mips/elf.h 2004-02-18 14:36:32.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/elf.h 2005-04-14 12:41:44.000000000 +0200
-@@ -66,9 +66,10 @@
- #define USE_ELF_CORE_DUMP
- #define ELF_EXEC_PAGESIZE PAGE_SIZE
-
--#define ELF_CORE_COPY_REGS(_dest,_regs) \
-- memcpy((char *) &_dest, (char *) _regs, \
-- sizeof(struct pt_regs));
-+extern void dump_regs(elf_greg_t *, struct pt_regs *regs);
-+
-+#define ELF_CORE_COPY_REGS(elf_regs, regs) \
-+ dump_regs((elf_greg_t *)&(elf_regs), regs);
-
- /* This yields a mask that user programs can use to figure out what
- instruction set this cpu supports. This could be done in userspace,
-diff -Nur linux-2.4.32-rc1/include/asm-mips/ficmmp.h linux-2.4.32-rc1.mips/include/asm-mips/ficmmp.h
---- linux-2.4.32-rc1/include/asm-mips/ficmmp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/ficmmp.h 2005-01-30 09:01:28.000000000 +0100
-@@ -0,0 +1,156 @@
-+/*
-+ * FIC MMP
-+ *
-+ * ########################################################################
-+ *
-+ * This program is free software; you can distribute it and/or modify it
-+ * under the terms of the GNU General Public License (Version 2) as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope 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 __ASM_FICMMP_H
-+#define __ASM_FICMMP_H
-+
-+#include <linux/types.h>
-+#include <asm/au1000.h>
-+#include <asm/au1xxx_gpio.h>
-+
-+// This is defined in au1000.h with bogus value
-+#undef AU1X00_EXTERNAL_INT
-+
-+#define DBDMA_AC97_TX_CHAN DSCR_CMD0_PSC1_TX
-+#define DBDMA_AC97_RX_CHAN DSCR_CMD0_PSC1_RX
-+#define DBDMA_I2S_TX_CHAN DSCR_CMD0_PSC1_TX
-+#define DBDMA_I2S_RX_CHAN DSCR_CMD0_PSC1_RX
-+/* SPI and SMB are muxed on the Pb1200 board.
-+ Refer to board documentation.
-+ */
-+#define SPI_PSC_BASE PSC0_BASE_ADDR
-+#define SMBUS_PSC_BASE PSC0_BASE_ADDR
-+/* AC97 and I2S are muxed on the Pb1200 board.
-+ Refer to board documentation.
-+ */
-+#define AC97_PSC_BASE PSC1_BASE_ADDR
-+#define I2S_PSC_BASE PSC1_BASE_ADDR
-+
-+
-+/*
-+ * SMSC LAN91C111
-+ */
-+#define AU1XXX_SMC91111_PHYS_ADDR (0xAC000300)
-+#define AU1XXX_SMC91111_IRQ AU1000_GPIO_5
-+
-+/* DC_IDE and DC_ETHERNET */
-+#define FICMMP_IDE_INT AU1000_GPIO_4
-+
-+#define AU1XXX_ATA_PHYS_ADDR (0x0C800000)
-+#define AU1XXX_ATA_REG_OFFSET (5)
-+/*
-+#define AU1XXX_ATA_BASE (0x0C800000)
-+#define AU1XXX_ATA_END (0x0CFFFFFF)
-+#define AU1XXX_ATA_MEM_SIZE (AU1XXX_ATA_END - AU1XXX_ATA_BASE +1)
-+
-+#define AU1XXX_ATA_REG_OFFSET (5)
-+*/
-+/* VPP/VCC */
-+#define SET_VCC_VPP(VCC, VPP, SLOT)\
-+ ((((VCC)<<2) | ((VPP)<<0)) << ((SLOT)*8))
-+
-+
-+#define FICMMP_CONFIG_BASE 0xAD000000
-+#define FICMMP_CONFIG_ENABLE 13
-+
-+#define FICMMP_CONFIG_I2SFREQ(N) (N<<0)
-+#define FICMMP_CONFIG_I2SXTAL0 (1<<0)
-+#define FICMMP_CONFIG_I2SXTAL1 (1<<1)
-+#define FICMMP_CONFIG_I2SXTAL2 (1<<2)
-+#define FICMMP_CONFIG_I2SXTAL3 (1<<3)
-+#define FICMMP_CONFIG_ADV1 (1<<4)
-+#define FICMMP_CONFIG_IDERST (1<<5)
-+#define FICMMP_CONFIG_LCMEN (1<<6)
-+#define FICMMP_CONFIG_CAMPWDN (1<<7)
-+#define FICMMP_CONFIG_USBPWREN (1<<8)
-+#define FICMMP_CONFIG_LCMPWREN (1<<9)
-+#define FICMMP_CONFIG_TVOUTPWREN (1<<10)
-+#define FICMMP_CONFIG_RS232PWREN (1<<11)
-+#define FICMMP_CONFIG_LCMDATAOUT (1<<12)
-+#define FICMMP_CONFIG_TVODATAOUT (1<<13)
-+#define FICMMP_CONFIG_ADV3 (1<<14)
-+#define FICMMP_CONFIG_ADV4 (1<<15)
-+
-+#define I2S_FREQ_8_192 (0x0)
-+#define I2S_FREQ_11_2896 (0x1)
-+#define I2S_FREQ_12_288 (0x2)
-+#define I2S_FREQ_24_576 (0x3)
-+//#define I2S_FREQ_12_288 (0x4)
-+#define I2S_FREQ_16_9344 (0x5)
-+#define I2S_FREQ_18_432 (0x6)
-+#define I2S_FREQ_36_864 (0x7)
-+#define I2S_FREQ_16_384 (0x8)
-+#define I2S_FREQ_22_5792 (0x9)
-+//#define I2S_FREQ_24_576 (0x10)
-+#define I2S_FREQ_49_152 (0x11)
-+//#define I2S_FREQ_24_576 (0x12)
-+#define I2S_FREQ_33_8688 (0x13)
-+//#define I2S_FREQ_36_864 (0x14)
-+#define I2S_FREQ_73_728 (0x15)
-+
-+#define FICMMP_IDE_PWR 9
-+#define FICMMP_FOCUS_RST 2
-+
-+static __inline void ficmmp_config_set(u16 bits)
-+{
-+ extern u16 ficmmp_config;
-+ //printk("set_config: %X, Old: %X, New: %X\n", bits, ficmmp_config, ficmmp_config | bits);
-+ ficmmp_config |= bits;
-+ *((u16*)FICMMP_CONFIG_BASE) = ficmmp_config;
-+}
-+
-+static __inline void ficmmp_config_clear(u16 bits)
-+{
-+ extern u16 ficmmp_config;
-+// printk("clear_config: %X, Old: %X, New: %X\n", bits, ficmmp_config, ficmmp_config & ~bits);
-+ ficmmp_config &= ~bits;
-+ *((u16*)FICMMP_CONFIG_BASE) = ficmmp_config;
-+}
-+
-+static __inline void ficmmp_config_init(void)
-+{
-+ au1xxx_gpio_write(FICMMP_CONFIG_ENABLE, 0); //Enable configuration latch
-+ ficmmp_config_set(FICMMP_CONFIG_LCMDATAOUT | FICMMP_CONFIG_TVODATAOUT | FICMMP_CONFIG_IDERST); //Disable display data buffers
-+ ficmmp_config_set(FICMMP_CONFIG_I2SFREQ(I2S_FREQ_36_864));
-+}
-+
-+static __inline u32 ficmmp_set_i2s_sample_rate(u32 rate)
-+{
-+ u32 freq;
-+
-+ switch(rate)
-+ {
-+ case 88200:
-+ case 44100:
-+ case 8018: freq = I2S_FREQ_11_2896; break;
-+ case 48000:
-+ case 32000: //freq = I2S_FREQ_18_432; break;
-+ case 8000: freq = I2S_FREQ_12_288; break;
-+ default: freq = I2S_FREQ_12_288; rate = 8000;
-+ }
-+ ficmmp_config_clear(FICMMP_CONFIG_I2SFREQ(0xF));
-+ ficmmp_config_set(FICMMP_CONFIG_I2SFREQ(freq));
-+ return rate;
-+}
-+
-+#endif /* __ASM_FICMMP_H */
-+
-diff -Nur linux-2.4.32-rc1/include/asm-mips/hazards.h linux-2.4.32-rc1.mips/include/asm-mips/hazards.h
---- linux-2.4.32-rc1/include/asm-mips/hazards.h 2004-02-18 14:36:32.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/hazards.h 2005-06-06 16:46:22.000000000 +0200
-@@ -3,7 +3,7 @@
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
-- * Copyright (C) 2003 Ralf Baechle
-+ * Copyright (C) 2003, 2004 Ralf Baechle
- */
- #ifndef _ASM_HAZARDS_H
- #define _ASM_HAZARDS_H
-@@ -12,38 +12,200 @@
-
- #ifdef __ASSEMBLY__
-
-+ .macro _ssnop
-+ sll $0, $0, 1
-+ .endm
-+
- /*
- * RM9000 hazards. When the JTLB is updated by tlbwi or tlbwr, a subsequent
- * use of the JTLB for instructions should not occur for 4 cpu cycles and use
- * for data translations should not occur for 3 cpu cycles.
- */
- #ifdef CONFIG_CPU_RM9000
--#define rm9000_tlb_hazard \
-+
-+#define mtc0_tlbw_hazard \
- .set push; \
- .set mips32; \
-- ssnop; ssnop; ssnop; ssnop; \
-+ _ssnop; _ssnop; _ssnop; _ssnop; \
- .set pop
-+
-+#define tlbw_eret_hazard \
-+ .set push; \
-+ .set mips32; \
-+ _ssnop; _ssnop; _ssnop; _ssnop; \
-+ .set pop
-+
- #else
--#define rm9000_tlb_hazard
-+
-+/*
-+ * The taken branch will result in a two cycle penalty for the two killed
-+ * instructions on R4000 / R4400. Other processors only have a single cycle
-+ * hazard so this is nice trick to have an optimal code for a range of
-+ * processors.
-+ */
-+#define mtc0_tlbw_hazard \
-+ b . + 8
-+#define tlbw_eret_hazard \
-+ nop
- #endif
-
-+/*
-+ * mtc0->mfc0 hazard
-+ * The 24K has a 2 cycle mtc0/mfc0 execution hazard.
-+ * It is a MIPS32R2 processor so ehb will clear the hazard.
-+ */
-+
-+#ifdef CONFIG_CPU_MIPSR2
-+/*
-+ * Use a macro for ehb unless explicit support for MIPSR2 is enabled
-+ */
-+ .macro ehb
-+ sll $0, $0, 3
-+ .endm
-+
-+#define irq_enable_hazard \
-+ ehb # irq_enable_hazard
-+
-+#define irq_disable_hazard \
-+ ehb # irq_disable_hazard
-+
-+#elif defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_RM9000)
-+
-+/*
-+ * R10000 rocks - all hazards handled in hardware, so this becomes a nobrainer.
-+ */
-+
-+#define irq_enable_hazard
-+
-+#define irq_disable_hazard
-+
- #else
-
- /*
-+ * Classic MIPS needs 1 - 3 nops or ssnops
-+ */
-+#define irq_enable_hazard
-+#define irq_disable_hazard \
-+ _ssnop; _ssnop; _ssnop
-+
-+#endif
-+
-+#else /* __ASSEMBLY__ */
-+
-+/*
- * RM9000 hazards. When the JTLB is updated by tlbwi or tlbwr, a subsequent
- * use of the JTLB for instructions should not occur for 4 cpu cycles and use
- * for data translations should not occur for 3 cpu cycles.
- */
- #ifdef CONFIG_CPU_RM9000
--#define rm9000_tlb_hazard() \
-+
-+#define mtc0_tlbw_hazard() \
- __asm__ __volatile__( \
- ".set\tmips32\n\t" \
-- "ssnop; ssnop; ssnop; ssnop\n\t" \
-+ "_ssnop; _ssnop; _ssnop; _ssnop\n\t" \
-+ ".set\tmips0")
-+
-+#define tlbw_use_hazard() \
-+ __asm__ __volatile__( \
-+ ".set\tmips32\n\t" \
-+ "_ssnop; _ssnop; _ssnop; _ssnop\n\t" \
- ".set\tmips0")
- #else
--#define rm9000_tlb_hazard() do { } while (0)
-+
-+/*
-+ * Overkill warning ...
-+ */
-+#define mtc0_tlbw_hazard() \
-+ __asm__ __volatile__( \
-+ ".set noreorder\n\t" \
-+ "nop; nop; nop; nop; nop; nop;\n\t" \
-+ ".set reorder\n\t")
-+
-+#define tlbw_use_hazard() \
-+ __asm__ __volatile__( \
-+ ".set noreorder\n\t" \
-+ "nop; nop; nop; nop; nop; nop;\n\t" \
-+ ".set reorder\n\t")
-+
- #endif
-
-+/*
-+ * mtc0->mfc0 hazard
-+ * The 24K has a 2 cycle mtc0/mfc0 execution hazard.
-+ * It is a MIPS32R2 processor so ehb will clear the hazard.
-+ */
-+
-+#ifdef CONFIG_CPU_MIPSR2
-+/*
-+ * Use a macro for ehb unless explicit support for MIPSR2 is enabled
-+ */
-+__asm__(
-+ " .macro ehb \n\t"
-+ " sll $0, $0, 3 \n\t"
-+ " .endm \n\t"
-+ " \n\t"
-+ " .macro\tirq_enable_hazard \n\t"
-+ " ehb \n\t"
-+ " .endm \n\t"
-+ " \n\t"
-+ " .macro\tirq_disable_hazard \n\t"
-+ " ehb \n\t"
-+ " .endm");
-+
-+#define irq_enable_hazard() \
-+ __asm__ __volatile__( \
-+ "ehb\t\t\t\t# irq_enable_hazard")
-+
-+#define irq_disable_hazard() \
-+ __asm__ __volatile__( \
-+ "ehb\t\t\t\t# irq_disable_hazard")
-+
-+#elif defined(CONFIG_CPU_R10000)
-+
-+/*
-+ * R10000 rocks - all hazards handled in hardware, so this becomes a nobrainer.
-+ */
-+
-+__asm__(
-+ " .macro\tirq_enable_hazard \n\t"
-+ " .endm \n\t"
-+ " \n\t"
-+ " .macro\tirq_disable_hazard \n\t"
-+ " .endm");
-+
-+#define irq_enable_hazard() do { } while (0)
-+#define irq_disable_hazard() do { } while (0)
-+
-+#else
-+
-+/*
-+ * Default for classic MIPS processors. Assume worst case hazards but don't
-+ * care about the irq_enable_hazard - sooner or later the hardware will
-+ * enable it and we don't care when exactly.
-+ */
-+
-+__asm__(
-+ " .macro _ssnop \n\t"
-+ " sll $0, $2, 1 \n\t"
-+ " .endm \n\t"
-+ " \n\t"
-+ " # \n\t"
-+ " # There is a hazard but we do not care \n\t"
-+ " # \n\t"
-+ " .macro\tirq_enable_hazard \n\t"
-+ " .endm \n\t"
-+ " \n\t"
-+ " .macro\tirq_disable_hazard \n\t"
-+ " _ssnop; _ssnop; _ssnop \n\t"
-+ " .endm");
-+
-+#define irq_enable_hazard() do { } while (0)
-+#define irq_disable_hazard() \
-+ __asm__ __volatile__( \
-+ "_ssnop; _ssnop; _ssnop;\t\t# irq_disable_hazard")
-+
- #endif
-
-+#endif /* __ASSEMBLY__ */
-+
- #endif /* _ASM_HAZARDS_H */
-diff -Nur linux-2.4.32-rc1/include/asm-mips/ide.h linux-2.4.32-rc1.mips/include/asm-mips/ide.h
---- linux-2.4.32-rc1/include/asm-mips/ide.h 2003-08-25 13:44:43.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/asm-mips/ide.h 2005-04-19 14:26:53.000000000 +0200
-@@ -32,12 +32,12 @@
-
- extern struct ide_ops *ide_ops;
-
--static __inline__ int ide_default_irq(ide_ioreg_t base)
-+static inline int ide_default_irq(ide_ioreg_t base)
- {
- return ide_ops->ide_default_irq(base);
- }
-
--static __inline__ ide_ioreg_t ide_default_io_base(int index)
-+static inline ide_ioreg_t ide_default_io_base(int index)
- {
- return ide_ops->ide_default_io_base(index);
- }
-@@ -48,7 +48,7 @@
- ide_ops->ide_init_hwif_ports(hw, data_port, ctrl_port, irq);
- }
-
--static __inline__ void ide_init_default_hwifs(void)
-+static inline void ide_init_default_hwifs(void)
- {
- #ifndef CONFIG_BLK_DEV_IDEPCI
- hw_regs_t hw;
-@@ -68,7 +68,89 @@
- #define ide_ack_intr(hwif) ((hwif)->hw.ack_intr ? (hwif)->hw.ack_intr(hwif) : 1)
- #endif
-
--#include <asm-generic/ide_iops.h>
-+/* MIPS port and memory-mapped I/O string operations. */
-+
-+static inline void __ide_flush_dcache_range(unsigned long addr, unsigned long size)
-+{
-+ if (cpu_has_dc_aliases) {
-+ unsigned long end = addr + size;
-+ for (; addr < end; addr += PAGE_SIZE)
-+ flush_dcache_page(virt_to_page(addr));
-+ }
-+}
-+
-+static inline void __ide_insw(unsigned long port, void *addr,
-+ unsigned int count)
-+{
-+ insw(port, addr, count);
-+ __ide_flush_dcache_range((unsigned long)addr, count * 2);
-+}
-+
-+static inline void __ide_insl(unsigned long port, void *addr, unsigned int count)
-+{
-+ insl(port, addr, count);
-+ __ide_flush_dcache_range((unsigned long)addr, count * 4);
-+}
-+
-+static inline void __ide_outsw(unsigned long port, const void *addr,
-+ unsigned long count)
-+{
-+ outsw(port, addr, count);
-+ __ide_flush_dcache_range((unsigned long)addr, count * 2);
-+}
-+
-+static inline void __ide_outsl(unsigned long port, const void *addr,
-+ unsigned long count)
-+{
-+ outsl(port, addr, count);
-+ __ide_flush_dcache_range((unsigned long)addr, count * 4);
-+}
-+
-+static inline void __ide_mm_insw(unsigned long port, void *addr, u32 count)
-+{
-+ unsigned long start = (unsigned long) addr;
-+
-+ while (count--) {
-+ *(u16 *)addr = readw(port);
-+ addr += 2;
-+ }
-+ __ide_flush_dcache_range(start, count * 2);
-+}
-+
-+static inline void __ide_mm_insl(unsigned long port, void *addr, u32 count)
-+{
-+ unsigned long start = (unsigned long) addr;
-+
-+ while (count--) {
-+ *(u32 *)addr = readl(port);
-+ addr += 4;
-+ }
-+ __ide_flush_dcache_range(start, count * 4);
-+}
-+
-+static inline void __ide_mm_outsw(unsigned long port, const void *addr,
-+ u32 count)
-+{
-+ unsigned long start = (unsigned long) addr;
-+
-+ while (count--) {
-+ writew(*(u16 *)addr, port);
-+ addr += 2;
-+ }
-+ __ide_flush_dcache_range(start, count * 2);
-+}
-+
-+static inline void __ide_mm_outsl(unsigned long port, const void *addr,
-+ u32 count)
-+{
-+ unsigned long start = (unsigned long) addr;
-+
-+ while (count--) {
-+ writel(*(u32 *)addr, port);
-+ addr += 4;
-+ }
-+ __ide_flush_dcache_range(start, count * 4);
-+}
-
- #endif /* __KERNEL__ */
-
-diff -Nur linux-2.4.32-rc1/include/asm-mips/io.h linux-2.4.32-rc1.mips/include/asm-mips/io.h
---- linux-2.4.32-rc1/include/asm-mips/io.h 2003-08-25 13:44:43.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/asm-mips/io.h 2005-04-19 14:24:16.000000000 +0200
-@@ -392,7 +392,8 @@
- return __ioswab32(__val);
- }
-
--static inline void __outsb(unsigned long port, void *addr, unsigned int count)
-+static inline void __outsb(unsigned long port, const void *addr,
-+ unsigned int count)
- {
- while (count--) {
- outb(*(u8 *)addr, port);
-@@ -408,7 +409,8 @@
- }
- }
-
--static inline void __outsw(unsigned long port, void *addr, unsigned int count)
-+static inline void __outsw(unsigned long port, const void *addr,
-+ unsigned int count)
- {
- while (count--) {
- outw(*(u16 *)addr, port);
-@@ -424,7 +426,8 @@
- }
- }
-
--static inline void __outsl(unsigned long port, void *addr, unsigned int count)
-+static inline void __outsl(unsigned long port, const void *addr,
-+ unsigned int count)
- {
- while (count--) {
- outl(*(u32 *)addr, port);
-diff -Nur linux-2.4.32-rc1/include/asm-mips/mipsregs.h linux-2.4.32-rc1.mips/include/asm-mips/mipsregs.h
---- linux-2.4.32-rc1/include/asm-mips/mipsregs.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/mipsregs.h 2005-02-06 22:24:22.000000000 +0100
-@@ -757,10 +757,18 @@
- #define read_c0_config1() __read_32bit_c0_register($16, 1)
- #define read_c0_config2() __read_32bit_c0_register($16, 2)
- #define read_c0_config3() __read_32bit_c0_register($16, 3)
-+#define read_c0_config4() __read_32bit_c0_register($16, 4)
-+#define read_c0_config5() __read_32bit_c0_register($16, 5)
-+#define read_c0_config6() __read_32bit_c0_register($16, 6)
-+#define read_c0_config7() __read_32bit_c0_register($16, 7)
- #define write_c0_config(val) __write_32bit_c0_register($16, 0, val)
- #define write_c0_config1(val) __write_32bit_c0_register($16, 1, val)
- #define write_c0_config2(val) __write_32bit_c0_register($16, 2, val)
- #define write_c0_config3(val) __write_32bit_c0_register($16, 3, val)
-+#define write_c0_config4(val) __write_32bit_c0_register($16, 4, val)
-+#define write_c0_config5(val) __write_32bit_c0_register($16, 5, val)
-+#define write_c0_config6(val) __write_32bit_c0_register($16, 6, val)
-+#define write_c0_config7(val) __write_32bit_c0_register($16, 7, val)
-
- /*
- * The WatchLo register. There may be upto 8 of them.
-@@ -874,42 +882,34 @@
- */
- static inline void tlb_probe(void)
- {
-- rm9000_tlb_hazard();
- __asm__ __volatile__(
- ".set noreorder\n\t"
- "tlbp\n\t"
- ".set reorder");
-- rm9000_tlb_hazard();
- }
-
- static inline void tlb_read(void)
- {
-- rm9000_tlb_hazard();
- __asm__ __volatile__(
- ".set noreorder\n\t"
- "tlbr\n\t"
- ".set reorder");
-- rm9000_tlb_hazard();
- }
-
- static inline void tlb_write_indexed(void)
- {
-- rm9000_tlb_hazard();
- __asm__ __volatile__(
- ".set noreorder\n\t"
- "tlbwi\n\t"
- ".set reorder");
-- rm9000_tlb_hazard();
- }
-
- static inline void tlb_write_random(void)
- {
-- rm9000_tlb_hazard();
- __asm__ __volatile__(
- ".set noreorder\n\t"
- "tlbwr\n\t"
- ".set reorder");
-- rm9000_tlb_hazard();
- }
-
- /*
-diff -Nur linux-2.4.32-rc1/include/asm-mips/mmu_context.h linux-2.4.32-rc1.mips/include/asm-mips/mmu_context.h
---- linux-2.4.32-rc1/include/asm-mips/mmu_context.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/mmu_context.h 2004-11-22 14:38:29.000000000 +0100
-@@ -27,7 +27,7 @@
- #define TLBMISS_HANDLER_SETUP_PGD(pgd) \
- pgd_current[smp_processor_id()] = (unsigned long)(pgd)
- #define TLBMISS_HANDLER_SETUP() \
-- write_c0_context((unsigned long) smp_processor_id() << (23 + 3)); \
-+ write_c0_context((unsigned long) smp_processor_id() << 23); \
- TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir)
- extern unsigned long pgd_current[];
-
-diff -Nur linux-2.4.32-rc1/include/asm-mips/pb1100.h linux-2.4.32-rc1.mips/include/asm-mips/pb1100.h
---- linux-2.4.32-rc1/include/asm-mips/pb1100.h 2003-08-25 13:44:44.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/asm-mips/pb1100.h 2005-01-30 09:10:29.000000000 +0100
-@@ -1,5 +1,5 @@
- /*
-- * Alchemy Semi PB1100 Referrence Board
-+ * AMD Alchemy PB1100 Reference Boards
- *
- * Copyright 2001 MontaVista Software Inc.
- * Author: MontaVista Software, Inc.
-@@ -27,55 +27,108 @@
- #ifndef __ASM_PB1100_H
- #define __ASM_PB1100_H
-
--#define PB1100_IDENT 0xAE000000
--#define BOARD_STATUS_REG 0xAE000004
-- #define PB1100_ROM_SEL (1<<15)
-- #define PB1100_ROM_SIZ (1<<14)
-- #define PB1100_SWAP_BOOT (1<<13)
-- #define PB1100_FLASH_WP (1<<12)
-- #define PB1100_ROM_H_STS (1<<11)
-- #define PB1100_ROM_L_STS (1<<10)
-- #define PB1100_FLASH_H_STS (1<<9)
-- #define PB1100_FLASH_L_STS (1<<8)
-- #define PB1100_SRAM_SIZ (1<<7)
-- #define PB1100_TSC_BUSY (1<<6)
-- #define PB1100_PCMCIA_VS_MASK (3<<4)
-- #define PB1100_RS232_CD (1<<3)
-- #define PB1100_RS232_CTS (1<<2)
-- #define PB1100_RS232_DSR (1<<1)
-- #define PB1100_RS232_RI (1<<0)
--
--#define PB1100_IRDA_RS232 0xAE00000C
-- #define PB1100_IRDA_FULL (0<<14) /* full power */
-- #define PB1100_IRDA_SHUTDOWN (1<<14)
-- #define PB1100_IRDA_TT (2<<14) /* 2/3 power */
-- #define PB1100_IRDA_OT (3<<14) /* 1/3 power */
-- #define PB1100_IRDA_FIR (1<<13)
--
--#define PCMCIA_BOARD_REG 0xAE000010
-- #define PB1100_SD_WP1_RO (1<<15) /* read only */
-- #define PB1100_SD_WP0_RO (1<<14) /* read only */
-- #define PB1100_SD_PWR1 (1<<11) /* applies power to SD1 */
-- #define PB1100_SD_PWR0 (1<<10) /* applies power to SD0 */
-- #define PB1100_SEL_SD_CONN1 (1<<9)
-- #define PB1100_SEL_SD_CONN0 (1<<8)
-- #define PC_DEASSERT_RST (1<<7)
-- #define PC_DRV_EN (1<<4)
--
--#define PB1100_G_CONTROL 0xAE000014 /* graphics control */
--
--#define PB1100_RST_VDDI 0xAE00001C
-- #define PB1100_SOFT_RESET (1<<15) /* clear to reset the board */
-- #define PB1100_VDDI_MASK (0x1F)
-+#define BCSR_KSEG1_ADDR 0xAE000000
-+
-+/*
-+ * Overlay data structure of the Pb1100 board registers.
-+ * Registers located at physical 0E0000xx, KSEG1 0xAE0000xx
-+ */
-+typedef volatile struct
-+{
-+ /*00*/ unsigned short whoami;
-+ unsigned short reserved0;
-+ /*04*/ unsigned short status;
-+ unsigned short reserved1;
-+ /*08*/ unsigned short switches;
-+ unsigned short reserved2;
-+ /*0C*/ unsigned short resets;
-+ unsigned short reserved3;
-+ /*10*/ unsigned short pcmcia;
-+ unsigned short reserved4;
-+ /*14*/ unsigned short graphics;
-+ unsigned short reserved5;
-+ /*18*/ unsigned short leds;
-+ unsigned short reserved6;
-+ /*1C*/ unsigned short swreset;
-+ unsigned short reserved7;
-+
-+} BCSR;
-
--#define PB1100_LEDS 0xAE000018
-
--/* 11:8 is 4 discreet LEDs. Clearing a bit illuminates the LED.
-- * 7:0 is the LED Display's decimal points.
-+/*
-+ * Register/mask bit definitions for the BCSRs
- */
--#define PB1100_HEX_LED 0xAE000018
-+#define BCSR_WHOAMI_DCID 0x000F
-+#define BCSR_WHOAMI_CPLD 0x00F0
-+#define BCSR_WHOAMI_BOARD 0x0F00
-+
-+#define BCSR_STATUS_RS232_RI 0x0001
-+#define BCSR_STATUS_RS232_DSR 0x0002
-+#define BCSR_STATUS_RS232_CTS 0x0004
-+#define BCSR_STATUS_RS232_CD 0x0008
-+#define BCSR_STATUS_PCMCIA_VS_MASK 0x0030
-+#define BCSR_STATUS_TSC_BUSY 0x0040
-+#define BCSR_STATUS_SRAM_SIZ 0x0080
-+#define BCSR_STATUS_FLASH_L_STS 0x0100
-+#define BCSR_STATUS_FLASH_H_STS 0x0200
-+#define BCSR_STATUS_ROM_H_STS 0x0400
-+#define BCSR_STATUS_ROM_L_STS 0x0800
-+#define BCSR_STATUS_FLASH_WP 0x1000
-+#define BCSR_STATUS_SWAP_BOOT 0x2000
-+#define BCSR_STATUS_ROM_SIZ 0x4000
-+#define BCSR_STATUS_ROM_SEL 0x8000
-+
-+#define BCSR_SWITCHES_DIP 0x00FF
-+#define BCSR_SWITCHES_DIP_1 0x0080
-+#define BCSR_SWITCHES_DIP_2 0x0040
-+#define BCSR_SWITCHES_DIP_3 0x0020
-+#define BCSR_SWITCHES_DIP_4 0x0010
-+#define BCSR_SWITCHES_DIP_5 0x0008
-+#define BCSR_SWITCHES_DIP_6 0x0004
-+#define BCSR_SWITCHES_DIP_7 0x0002
-+#define BCSR_SWITCHES_DIP_8 0x0001
-+#define BCSR_SWITCHES_ROTARY 0x0F00
-+#define BCSR_SWITCHES_SDO_CL 0x8000
-+
-+#define BCSR_RESETS_PHY0 0x0001
-+#define BCSR_RESETS_PHY1 0x0002
-+#define BCSR_RESETS_DC 0x0004
-+#define BCSR_RESETS_RS232_RTS 0x0100
-+#define BCSR_RESETS_RS232_DTR 0x0200
-+#define BCSR_RESETS_FIR_SEL 0x2000
-+#define BCSR_RESETS_IRDA_MODE_MASK 0xC000
-+#define BCSR_RESETS_IRDA_MODE_FULL 0x0000
-+#define BCSR_RESETS_IRDA_MODE_OFF 0x4000
-+#define BCSR_RESETS_IRDA_MODE_2_3 0x8000
-+#define BCSR_RESETS_IRDA_MODE_1_3 0xC000
-+
-+#define BCSR_PCMCIA_PC0VPP 0x0003
-+#define BCSR_PCMCIA_PC0VCC 0x000C
-+#define BCSR_PCMCIA_PC0_DR_VEN 0x0010
-+#define BCSR_PCMCIA_PC0RST 0x0080
-+#define BCSR_PCMCIA_SEL_SD_CON0 0x0100
-+#define BCSR_PCMCIA_SEL_SD_CON1 0x0200
-+#define BCSR_PCMCIA_SD0_PWR 0x0400
-+#define BCSR_PCMCIA_SD1_PWR 0x0800
-+#define BCSR_PCMCIA_SD0_WP 0x4000
-+#define BCSR_PCMCIA_SD1_WP 0x8000
-+
-+#define PB1100_G_CONTROL 0xAE000014
-+#define BCSR_GRAPHICS_GPX_SMPASS 0x0010
-+#define BCSR_GRAPHICS_GPX_BIG_ENDIAN 0x0020
-+#define BCSR_GRAPHICS_GPX_RST 0x0040
-+
-+#define BCSR_LEDS_DECIMALS 0x00FF
-+#define BCSR_LEDS_LED0 0x0100
-+#define BCSR_LEDS_LED1 0x0200
-+#define BCSR_LEDS_LED2 0x0400
-+#define BCSR_LEDS_LED3 0x0800
-+
-+#define BCSR_SWRESET_RESET 0x0080
-+#define BCSR_VDDI_VDI 0x001F
-
--/* PCMCIA PB1100 specific defines */
-+
-+ /* PCMCIA Pb1x00 specific defines */
- #define PCMCIA_MAX_SOCK 0
- #define PCMCIA_NUM_SOCKS (PCMCIA_MAX_SOCK+1)
-
-@@ -83,3 +136,4 @@
- #define SET_VCC_VPP(VCC, VPP) (((VCC)<<2) | ((VPP)<<0))
-
- #endif /* __ASM_PB1100_H */
-+
-diff -Nur linux-2.4.32-rc1/include/asm-mips/pb1200.h linux-2.4.32-rc1.mips/include/asm-mips/pb1200.h
---- linux-2.4.32-rc1/include/asm-mips/pb1200.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/pb1200.h 2005-01-30 09:01:28.000000000 +0100
-@@ -0,0 +1,244 @@
-+/*
-+ * AMD Alchemy PB1200 Referrence Board
-+ * Board Registers defines.
-+ *
-+ * ########################################################################
-+ *
-+ * This program is free software; you can distribute it and/or modify it
-+ * under the terms of the GNU General Public License (Version 2) as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope 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 __ASM_PB1200_H
-+#define __ASM_PB1200_H
-+
-+#include <linux/types.h>
-+
-+// This is defined in au1000.h with bogus value
-+#undef AU1X00_EXTERNAL_INT
-+
-+#define DBDMA_AC97_TX_CHAN DSCR_CMD0_PSC1_TX
-+#define DBDMA_AC97_RX_CHAN DSCR_CMD0_PSC1_RX
-+#define DBDMA_I2S_TX_CHAN DSCR_CMD0_PSC1_TX
-+#define DBDMA_I2S_RX_CHAN DSCR_CMD0_PSC1_RX
-+
-+/* SPI and SMB are muxed on the Pb1200 board.
-+ Refer to board documentation.
-+ */
-+#define SPI_PSC_BASE PSC0_BASE_ADDR
-+#define SMBUS_PSC_BASE PSC0_BASE_ADDR
-+/* AC97 and I2S are muxed on the Pb1200 board.
-+ Refer to board documentation.
-+ */
-+#define AC97_PSC_BASE PSC1_BASE_ADDR
-+#define I2S_PSC_BASE PSC1_BASE_ADDR
-+
-+#define BCSR_KSEG1_ADDR 0xAD800000
-+
-+typedef volatile struct
-+{
-+ /*00*/ u16 whoami;
-+ u16 reserved0;
-+ /*04*/ u16 status;
-+ u16 reserved1;
-+ /*08*/ u16 switches;
-+ u16 reserved2;
-+ /*0C*/ u16 resets;
-+ u16 reserved3;
-+
-+ /*10*/ u16 pcmcia;
-+ u16 reserved4;
-+ /*14*/ u16 board;
-+ u16 reserved5;
-+ /*18*/ u16 disk_leds;
-+ u16 reserved6;
-+ /*1C*/ u16 system;
-+ u16 reserved7;
-+
-+ /*20*/ u16 intclr;
-+ u16 reserved8;
-+ /*24*/ u16 intset;
-+ u16 reserved9;
-+ /*28*/ u16 intclr_mask;
-+ u16 reserved10;
-+ /*2C*/ u16 intset_mask;
-+ u16 reserved11;
-+
-+ /*30*/ u16 sig_status;
-+ u16 reserved12;
-+ /*34*/ u16 int_status;
-+ u16 reserved13;
-+ /*38*/ u16 reserved14;
-+ u16 reserved15;
-+ /*3C*/ u16 reserved16;
-+ u16 reserved17;
-+
-+} BCSR;
-+
-+static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+
-+/*
-+ * Register bit definitions for the BCSRs
-+ */
-+#define BCSR_WHOAMI_DCID 0x000F
-+#define BCSR_WHOAMI_CPLD 0x00F0
-+#define BCSR_WHOAMI_BOARD 0x0F00
-+
-+#define BCSR_STATUS_PCMCIA0VS 0x0003
-+#define BCSR_STATUS_PCMCIA1VS 0x000C
-+#define BCSR_STATUS_SWAPBOOT 0x0040
-+#define BCSR_STATUS_FLASHBUSY 0x0100
-+#define BCSR_STATUS_IDECBLID 0x0200
-+#define BCSR_STATUS_SD0WP 0x0400
-+#define BCSR_STATUS_SD1WP 0x0800
-+#define BCSR_STATUS_U0RXD 0x1000
-+#define BCSR_STATUS_U1RXD 0x2000
-+
-+#define BCSR_SWITCHES_OCTAL 0x00FF
-+#define BCSR_SWITCHES_DIP_1 0x0080
-+#define BCSR_SWITCHES_DIP_2 0x0040
-+#define BCSR_SWITCHES_DIP_3 0x0020
-+#define BCSR_SWITCHES_DIP_4 0x0010
-+#define BCSR_SWITCHES_DIP_5 0x0008
-+#define BCSR_SWITCHES_DIP_6 0x0004
-+#define BCSR_SWITCHES_DIP_7 0x0002
-+#define BCSR_SWITCHES_DIP_8 0x0001
-+#define BCSR_SWITCHES_ROTARY 0x0F00
-+
-+#define BCSR_RESETS_ETH 0x0001
-+#define BCSR_RESETS_CAMERA 0x0002
-+#define BCSR_RESETS_DC 0x0004
-+#define BCSR_RESETS_IDE 0x0008
-+/* not resets but in the same register */
-+#define BCSR_RESETS_WSCFSM 0x0800
-+#define BCSR_RESETS_PCS0MUX 0x1000
-+#define BCSR_RESETS_PCS1MUX 0x2000
-+#define BCSR_RESETS_SPISEL 0x4000
-+#define BCSR_RESETS_SD1MUX 0x8000
-+
-+#define BCSR_PCMCIA_PC0VPP 0x0003
-+#define BCSR_PCMCIA_PC0VCC 0x000C
-+#define BCSR_PCMCIA_PC0DRVEN 0x0010
-+#define BCSR_PCMCIA_PC0RST 0x0080
-+#define BCSR_PCMCIA_PC1VPP 0x0300
-+#define BCSR_PCMCIA_PC1VCC 0x0C00
-+#define BCSR_PCMCIA_PC1DRVEN 0x1000
-+#define BCSR_PCMCIA_PC1RST 0x8000
-+
-+#define BCSR_BOARD_LCDVEE 0x0001
-+#define BCSR_BOARD_LCDVDD 0x0002
-+#define BCSR_BOARD_LCDBL 0x0004
-+#define BCSR_BOARD_CAMSNAP 0x0010
-+#define BCSR_BOARD_CAMPWR 0x0020
-+#define BCSR_BOARD_SD0PWR 0x0040
-+#define BCSR_BOARD_SD1PWR 0x0080
-+
-+#define BCSR_LEDS_DECIMALS 0x00FF
-+#define BCSR_LEDS_LED0 0x0100
-+#define BCSR_LEDS_LED1 0x0200
-+#define BCSR_LEDS_LED2 0x0400
-+#define BCSR_LEDS_LED3 0x0800
-+
-+#define BCSR_SYSTEM_VDDI 0x001F
-+#define BCSR_SYSTEM_POWEROFF 0x4000
-+#define BCSR_SYSTEM_RESET 0x8000
-+
-+/* Bit positions for the different interrupt sources */
-+#define BCSR_INT_IDE 0x0001
-+#define BCSR_INT_ETH 0x0002
-+#define BCSR_INT_PC0 0x0004
-+#define BCSR_INT_PC0STSCHG 0x0008
-+#define BCSR_INT_PC1 0x0010
-+#define BCSR_INT_PC1STSCHG 0x0020
-+#define BCSR_INT_DC 0x0040
-+#define BCSR_INT_FLASHBUSY 0x0080
-+#define BCSR_INT_PC0INSERT 0x0100
-+#define BCSR_INT_PC0EJECT 0x0200
-+#define BCSR_INT_PC1INSERT 0x0400
-+#define BCSR_INT_PC1EJECT 0x0800
-+#define BCSR_INT_SD0INSERT 0x1000
-+#define BCSR_INT_SD0EJECT 0x2000
-+#define BCSR_INT_SD1INSERT 0x4000
-+#define BCSR_INT_SD1EJECT 0x8000
-+
-+#define AU1XXX_SMC91111_PHYS_ADDR (0x0D000300)
-+#define AU1XXX_SMC91111_IRQ PB1200_ETH_INT
-+
-+#define AU1XXX_ATA_PHYS_ADDR (0x0C800000)
-+#define AU1XXX_ATA_PHYS_LEN (0x100)
-+#define AU1XXX_ATA_REG_OFFSET (5)
-+#define AU1XXX_ATA_INT PB1200_IDE_INT
-+#define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1;
-+#define AU1XXX_ATA_RQSIZE 128
-+
-+#define NAND_PHYS_ADDR 0x1C000000
-+
-+/* Timing values as described in databook, * ns value stripped of
-+ * lower 2 bits.
-+ * These defines are here rather than an SOC1200 generic file because
-+ * the parts chosen on another board may be different and may require
-+ * different timings.
-+ */
-+#define NAND_T_H (18 >> 2)
-+#define NAND_T_PUL (30 >> 2)
-+#define NAND_T_SU (30 >> 2)
-+#define NAND_T_WH (30 >> 2)
-+
-+/* Bitfield shift amounts */
-+#define NAND_T_H_SHIFT 0
-+#define NAND_T_PUL_SHIFT 4
-+#define NAND_T_SU_SHIFT 8
-+#define NAND_T_WH_SHIFT 12
-+
-+#define NAND_TIMING ((NAND_T_H & 0xF) << NAND_T_H_SHIFT) | \
-+ ((NAND_T_PUL & 0xF) << NAND_T_PUL_SHIFT) | \
-+ ((NAND_T_SU & 0xF) << NAND_T_SU_SHIFT) | \
-+ ((NAND_T_WH & 0xF) << NAND_T_WH_SHIFT)
-+
-+
-+/*
-+ * External Interrupts for Pb1200 as of 8/6/2004.
-+ * Bit positions in the CPLD registers can be calculated by taking
-+ * the interrupt define and subtracting the PB1200_INT_BEGIN value.
-+ * *example: IDE bis pos is = 64 - 64
-+ ETH bit pos is = 65 - 64
-+ */
-+#define PB1200_INT_BEGIN (AU1000_LAST_INTC1_INT + 1)
-+#define PB1200_IDE_INT (PB1200_INT_BEGIN + 0)
-+#define PB1200_ETH_INT (PB1200_INT_BEGIN + 1)
-+#define PB1200_PC0_INT (PB1200_INT_BEGIN + 2)
-+#define PB1200_PC0_STSCHG_INT (PB1200_INT_BEGIN + 3)
-+#define PB1200_PC1_INT (PB1200_INT_BEGIN + 4)
-+#define PB1200_PC1_STSCHG_INT (PB1200_INT_BEGIN + 5)
-+#define PB1200_DC_INT (PB1200_INT_BEGIN + 6)
-+#define PB1200_FLASHBUSY_INT (PB1200_INT_BEGIN + 7)
-+#define PB1200_PC0_INSERT_INT (PB1200_INT_BEGIN + 8)
-+#define PB1200_PC0_EJECT_INT (PB1200_INT_BEGIN + 9)
-+#define PB1200_PC1_INSERT_INT (PB1200_INT_BEGIN + 10)
-+#define PB1200_PC1_EJECT_INT (PB1200_INT_BEGIN + 11)
-+#define PB1200_SD0_INSERT_INT (PB1200_INT_BEGIN + 12)
-+#define PB1200_SD0_EJECT_INT (PB1200_INT_BEGIN + 13)
-+#define PB1200_SD1_INSERT_INT (PB1200_INT_BEGIN + 14)
-+#define PB1200_SD1_EJECT_INT (PB1200_INT_BEGIN + 15)
-+
-+#define PB1200_INT_END (PB1200_INT_BEGIN + 15)
-+
-+/* For drivers/pcmcia/au1000_db1x00.c */
-+#define BOARD_PC0_INT PB1200_PC0_INT
-+#define BOARD_PC1_INT PB1200_PC1_INT
-+#define BOARD_CARD_INSERTED(SOCKET) bcsr->sig_status & (1<<(8+(2*SOCKET)))
-+
-+#endif /* __ASM_PB1200_H */
-+
-diff -Nur linux-2.4.32-rc1/include/asm-mips/pb1550.h linux-2.4.32-rc1.mips/include/asm-mips/pb1550.h
---- linux-2.4.32-rc1/include/asm-mips/pb1550.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/pb1550.h 2005-01-30 09:01:28.000000000 +0100
-@@ -30,13 +30,11 @@
-
- #define DBDMA_AC97_TX_CHAN DSCR_CMD0_PSC1_TX
- #define DBDMA_AC97_RX_CHAN DSCR_CMD0_PSC1_RX
--#define DBDMA_I2S_TX_CHAN DSCR_CMD0_PSC3_TX
--#define DBDMA_I2S_RX_CHAN DSCR_CMD0_PSC3_RX
--
- #define SPI_PSC_BASE PSC0_BASE_ADDR
- #define AC97_PSC_BASE PSC1_BASE_ADDR
- #define SMBUS_PSC_BASE PSC2_BASE_ADDR
- #define I2S_PSC_BASE PSC3_BASE_ADDR
-+#define NAND_CS 1
-
- #define BCSR_PHYS_ADDR 0xAF000000
-
-@@ -160,9 +158,23 @@
- #define NAND_T_SU_SHIFT 8
- #define NAND_T_WH_SHIFT 12
-
--#define NAND_TIMING ((NAND_T_H & 0xF) << NAND_T_H_SHIFT) | \
-- ((NAND_T_PUL & 0xF) << NAND_T_PUL_SHIFT) | \
-- ((NAND_T_SU & 0xF) << NAND_T_SU_SHIFT) | \
-- ((NAND_T_WH & 0xF) << NAND_T_WH_SHIFT)
-+#define NAND_TIMING ((NAND_T_H & 0xF) << NAND_T_H_SHIFT) | \
-+ ((NAND_T_PUL & 0xF) << NAND_T_PUL_SHIFT) | \
-+ ((NAND_T_SU & 0xF) << NAND_T_SU_SHIFT) | \
-+ ((NAND_T_WH & 0xF) << NAND_T_WH_SHIFT)
-+
-+/*
-+ * Daughter card information.
-+ */
-+#define DAUGHTER_CARD_BASE (0xAC000000)
-+#define DAUGHTER_CARD_MEM_SIZE (0xADFFFFFF - DAUGHTER_CARD_BASE + 1)
-+#define DAUGHTER_CARD_IRQ (AU1000_GPIO_3)
-+
-+/* DC_IDE and DC_ETHERNET */
-+#define AU1XXX_ATA_PHYS_ADDR (0x0C000000)
-+#define AU1XXX_ATA_REG_OFFSET (5)
-+
-+#define AU1XXX_SMC91111_PHYS_ADDR (0x0C000300)
-+#define AU1XXX_SMC91111_IRQ AU1000_GPIO_3
-
- #endif /* __ASM_PB1550_H */
-diff -Nur linux-2.4.32-rc1/include/asm-mips/reg.h linux-2.4.32-rc1.mips/include/asm-mips/reg.h
---- linux-2.4.32-rc1/include/asm-mips/reg.h 2002-08-03 02:39:45.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/asm-mips/reg.h 2005-04-14 12:41:44.000000000 +0200
-@@ -45,6 +45,9 @@
- /*
- * k0/k1 unsaved
- */
-+#define EF_REG26 32
-+#define EF_REG27 33
-+
- #define EF_REG28 34
- #define EF_REG29 35
- #define EF_REG30 36
-@@ -60,6 +63,7 @@
- #define EF_CP0_BADVADDR 41
- #define EF_CP0_STATUS 42
- #define EF_CP0_CAUSE 43
-+#define EF_UNUSED0 44
-
- #define EF_SIZE 180 /* size in bytes */
-
-diff -Nur linux-2.4.32-rc1/include/asm-mips/sgi/hpc3.h linux-2.4.32-rc1.mips/include/asm-mips/sgi/hpc3.h
---- linux-2.4.32-rc1/include/asm-mips/sgi/hpc3.h 2003-08-25 13:44:44.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/asm-mips/sgi/hpc3.h 2005-09-23 16:35:27.000000000 +0200
-@@ -128,26 +128,26 @@
- volatile u32 rx_gfptr; /* current GIO fifo ptr */
- volatile u32 rx_dfptr; /* current device fifo ptr */
- u32 _unused1; /* padding */
-- volatile u32 rx_reset; /* reset register */
--#define HPC3_ERXRST_CRESET 0x1 /* Reset dma channel and external controller */
--#define HPC3_ERXRST_CLRIRQ 0x2 /* Clear channel interrupt */
--#define HPC3_ERXRST_LBACK 0x4 /* Enable diagnostic loopback mode of Seeq8003 */
--
-- volatile u32 rx_dconfig; /* DMA configuration register */
--#define HPC3_ERXDCFG_D1 0x0000f /* Cycles to spend in D1 state for PIO */
--#define HPC3_ERXDCFG_D2 0x000f0 /* Cycles to spend in D2 state for PIO */
--#define HPC3_ERXDCFG_D3 0x00f00 /* Cycles to spend in D3 state for PIO */
--#define HPC3_ERXDCFG_WCTRL 0x01000 /* Enable writes of desc into ex ctrl port */
--#define HPC3_ERXDCFG_FRXDC 0x02000 /* Clear eop stat bits upon rxdc, hw seeq fix */
--#define HPC3_ERXDCFG_FEOP 0x04000 /* Bad packet marker timeout enable */
--#define HPC3_ERXDCFG_FIRQ 0x08000 /* Another bad packet timeout enable */
--#define HPC3_ERXDCFG_PTO 0x30000 /* Programmed timeout value for above two */
--
-- volatile u32 rx_pconfig; /* PIO configuration register */
--#define HPC3_ERXPCFG_P1 0x000f /* Cycles to spend in P1 state for PIO */
--#define HPC3_ERXPCFG_P2 0x00f0 /* Cycles to spend in P2 state for PIO */
--#define HPC3_ERXPCFG_P3 0x0f00 /* Cycles to spend in P3 state for PIO */
--#define HPC3_ERXPCFG_TST 0x1000 /* Diagnistic ram test feature bit */
-+ volatile u32 reset; /* reset register */
-+#define HPC3_ERST_CRESET 0x1 /* Reset dma channel and external controller */
-+#define HPC3_ERST_CLRIRQ 0x2 /* Clear channel interrupt */
-+#define HPC3_ERST_LBACK 0x4 /* Enable diagnostic loopback mode of Seeq8003 */
-+
-+ volatile u32 dconfig; /* DMA configuration register */
-+#define HPC3_EDCFG_D1 0x0000f /* Cycles to spend in D1 state for PIO */
-+#define HPC3_EDCFG_D2 0x000f0 /* Cycles to spend in D2 state for PIO */
-+#define HPC3_EDCFG_D3 0x00f00 /* Cycles to spend in D3 state for PIO */
-+#define HPC3_EDCFG_WCTRL 0x01000 /* Enable writes of desc into ex ctrl port */
-+#define HPC3_EDCFG_FRXDC 0x02000 /* Clear eop stat bits upon rxdc, hw seeq fix */
-+#define HPC3_EDCFG_FEOP 0x04000 /* Bad packet marker timeout enable */
-+#define HPC3_EDCFG_FIRQ 0x08000 /* Another bad packet timeout enable */
-+#define HPC3_EDCFG_PTO 0x30000 /* Programmed timeout value for above two */
-+
-+ volatile u32 pconfig; /* PIO configuration register */
-+#define HPC3_EPCFG_P1 0x000f /* Cycles to spend in P1 state for PIO */
-+#define HPC3_EPCFG_P2 0x00f0 /* Cycles to spend in P2 state for PIO */
-+#define HPC3_EPCFG_P3 0x0f00 /* Cycles to spend in P3 state for PIO */
-+#define HPC3_EPCFG_TST 0x1000 /* Diagnistic ram test feature bit */
-
- u32 _unused2[0x1000/4 - 8]; /* padding */
-
-@@ -221,7 +221,7 @@
- #define HPC3_BESTAT_PIDMASK 0x3f700 /* DMA channel parity identifier */
-
- u32 _unused1[0x14000/4 - 5]; /* padding */
--
-+
- /* Now direct PIO per-HPC3 peripheral access to external regs. */
- volatile u32 scsi0_ext[256]; /* SCSI channel 0 external regs */
- u32 _unused2[0x7c00/4];
-@@ -304,7 +304,7 @@
- volatile u32 bbram[8192-50-14]; /* Battery backed ram */
- };
-
--/*
-+/*
- * It is possible to have two HPC3's within the address space on
- * one machine, though only having one is more likely on an Indy.
- */
-diff -Nur linux-2.4.32-rc1/include/asm-mips/tx4927/tx4927.h linux-2.4.32-rc1.mips/include/asm-mips/tx4927/tx4927.h
---- linux-2.4.32-rc1/include/asm-mips/tx4927/tx4927.h 2003-08-25 13:44:44.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/asm-mips/tx4927/tx4927.h 2004-11-22 19:02:10.000000000 +0100
-@@ -88,8 +88,8 @@
-
-
- /* TX4927 Configuration registers (64-bit registers) */
--#define TX4927_CONFIG_BASE 0xe300
--#define TX4927_CONFIG_CCFG 0xe300
-+#define TX4927_CONFIG_BASE 0xe000
-+#define TX4927_CONFIG_CCFG 0xe000
- #define TX4927_CONFIG_CCFG_RESERVED_42_63 BM_63_42
- #define TX4927_CONFIG_CCFG_WDRST BM_41_41
- #define TX4927_CONFIG_CCFG_WDREXEN BM_40_40
-@@ -124,14 +124,14 @@
- #define TX4927_CONFIG_CCFG_ENDIAN BM_02_02
- #define TX4927_CONFIG_CCFG_ARMODE BM_01_01
- #define TX4927_CONFIG_CCFG_ACEHOLD BM_00_00
--#define TX4927_CONFIG_REVID 0xe308
-+#define TX4927_CONFIG_REVID 0xe008
- #define TX4927_CONFIG_REVID_RESERVED_32_63 BM_32_63
- #define TX4927_CONFIG_REVID_PCODE BM_16_31
- #define TX4927_CONFIG_REVID_MJERREV BM_12_15
- #define TX4927_CONFIG_REVID_MINEREV BM_08_11
- #define TX4927_CONFIG_REVID_MJREV BM_04_07
- #define TX4927_CONFIG_REVID_MINREV BM_00_03
--#define TX4927_CONFIG_PCFG 0xe310
-+#define TX4927_CONFIG_PCFG 0xe010
- #define TX4927_CONFIG_PCFG_RESERVED_57_63 BM_57_63
- #define TX4927_CONFIG_PCFG_DRVDATA BM_56_56
- #define TX4927_CONFIG_PCFG_DRVCB BM_55_55
-@@ -197,10 +197,10 @@
- #define TX4927_CONFIG_PCFG_DMASEL0_SIO1 BM_00_00
- #define TX4927_CONFIG_PCFG_DMASEL0_ACLC0 BM_01_01
- #define TX4927_CONFIG_PCFG_DMASEL0_ACLC2 BM_00_01
--#define TX4927_CONFIG_TOEA 0xe318
-+#define TX4927_CONFIG_TOEA 0xe018
- #define TX4927_CONFIG_TOEA_RESERVED_36_63 BM_36_63
- #define TX4927_CONFIG_TOEA_TOEA BM_00_35
--#define TX4927_CONFIG_CLKCTR 0xe320
-+#define TX4927_CONFIG_CLKCTR 0xe020
- #define TX4927_CONFIG_CLKCTR_RESERVED_26_63 BM_26_63
- #define TX4927_CONFIG_CLKCTR_ACLCKD BM_25_25
- #define TX4927_CONFIG_CLKCTR_PIOCKD BM_24_24
-@@ -223,7 +223,7 @@
- #define TX4927_CONFIG_CLKCTR_TM2RST BM_02_02
- #define TX4927_CONFIG_CLKCTR_SIO0RST BM_01_01
- #define TX4927_CONFIG_CLKCTR_SIO1RST BM_00_00
--#define TX4927_CONFIG_GARBC 0xe330
-+#define TX4927_CONFIG_GARBC 0xe030
- #define TX4927_CONFIG_GARBC_RESERVED_10_63 BM_10_63
- #define TX4927_CONFIG_GARBC_SET_09 BM_09_09
- #define TX4927_CONFIG_GARBC_ARBMD BM_08_08
-@@ -243,7 +243,7 @@
- #define TX4927_CONFIG_GARBC_PRIORITY_H3_PDMAC BM_00_00
- #define TX4927_CONFIG_GARBC_PRIORITY_H3_DMAC BM_01_01
- #define TX4927_CONFIG_GARBC_PRIORITY_H3_BAD_VALUE BM_00_01
--#define TX4927_CONFIG_RAMP 0xe348
-+#define TX4927_CONFIG_RAMP 0xe048
- #define TX4927_CONFIG_RAMP_RESERVED_20_63 BM_20_63
- #define TX4927_CONFIG_RAMP_RAMP BM_00_19
- #define TX4927_CONFIG_LIMIT 0xefff
-@@ -456,7 +456,7 @@
- #define TX4927_ACLC_ACINTSTS 0xf710
- #define TX4927_ACLC_ACINTMSTS 0xf714
- #define TX4927_ACLC_ACINTEN 0xf718
--#define TX4927_ACLC_ACINTDIS 0xfR71c
-+#define TX4927_ACLC_ACINTDIS 0xf71c
- #define TX4927_ACLC_ACSEMAPH 0xf720
- #define TX4927_ACLC_ACGPIDAT 0xf740
- #define TX4927_ACLC_ACGPODAT 0xf744
-diff -Nur linux-2.4.32-rc1/include/asm-mips/unistd.h linux-2.4.32-rc1.mips/include/asm-mips/unistd.h
---- linux-2.4.32-rc1/include/asm-mips/unistd.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips/unistd.h 2004-11-24 21:30:06.000000000 +0100
-@@ -760,7 +760,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- /*
-@@ -788,7 +788,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #define _syscall2(type,name,atype,a,btype,b) \
-@@ -813,7 +813,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #define _syscall3(type,name,atype,a,btype,b,ctype,c) \
-@@ -839,7 +839,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #define _syscall4(type,name,atype,a,btype,b,ctype,c,dtype,d) \
-@@ -865,7 +865,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #if (_MIPS_SIM == _MIPS_SIM_ABI32)
-@@ -902,7 +902,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #define _syscall6(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e,ftype,f) \
-@@ -935,7 +935,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #endif /* (_MIPS_SIM == _MIPS_SIM_ABI32) */
-@@ -966,7 +966,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #define _syscall6(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e,ftype,f) \
-@@ -995,7 +995,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #endif /* (_MIPS_SIM == _MIPS_SIM_NABI32) || (_MIPS_SIM == _MIPS_SIM_ABI64) */
-diff -Nur linux-2.4.32-rc1/include/asm-mips64/checksum.h linux-2.4.32-rc1.mips/include/asm-mips64/checksum.h
---- linux-2.4.32-rc1/include/asm-mips64/checksum.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips64/checksum.h 2005-09-20 12:58:50.000000000 +0200
-@@ -144,7 +144,7 @@
- "daddu\t%0, %4\n\t"
- "dsll32\t$1, %0, 0\n\t"
- "daddu\t%0, $1\n\t"
-- "dsrl32\t%0, %0, 0\n\t"
-+ "dsra32\t%0, %0, 0\n\t"
- ".set\tat"
- : "=&r" (sum)
- : "0" (daddr), "r"(saddr),
-diff -Nur linux-2.4.32-rc1/include/asm-mips64/elf.h linux-2.4.32-rc1.mips/include/asm-mips64/elf.h
---- linux-2.4.32-rc1/include/asm-mips64/elf.h 2004-02-18 14:36:32.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips64/elf.h 2005-04-14 12:41:44.000000000 +0200
-@@ -64,9 +64,10 @@
- #define USE_ELF_CORE_DUMP
- #define ELF_EXEC_PAGESIZE PAGE_SIZE
-
--#define ELF_CORE_COPY_REGS(_dest,_regs) \
-- memcpy((char *) &_dest, (char *) _regs, \
-- sizeof(struct pt_regs));
-+extern void dump_regs(elf_greg_t *, struct pt_regs *regs);
-+
-+#define ELF_CORE_COPY_REGS(elf_regs, regs) \
-+ dump_regs((elf_greg_t *)&(elf_regs), regs);
-
- /* This yields a mask that user programs can use to figure out what
- instruction set this cpu supports. This could be done in userspace,
-diff -Nur linux-2.4.32-rc1/include/asm-mips64/hazards.h linux-2.4.32-rc1.mips/include/asm-mips64/hazards.h
---- linux-2.4.32-rc1/include/asm-mips64/hazards.h 2004-02-18 14:36:32.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips64/hazards.h 2005-06-06 16:46:22.000000000 +0200
-@@ -3,7 +3,7 @@
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
-- * Copyright (C) 2003 Ralf Baechle
-+ * Copyright (C) 2003, 2004 Ralf Baechle
- */
- #ifndef _ASM_HAZARDS_H
- #define _ASM_HAZARDS_H
-@@ -12,37 +12,200 @@
-
- #ifdef __ASSEMBLY__
-
-+ .macro _ssnop
-+ sll $0, $0, 1
-+ .endm
-+
- /*
- * RM9000 hazards. When the JTLB is updated by tlbwi or tlbwr, a subsequent
- * use of the JTLB for instructions should not occur for 4 cpu cycles and use
- * for data translations should not occur for 3 cpu cycles.
- */
- #ifdef CONFIG_CPU_RM9000
--#define rm9000_tlb_hazard \
-+
-+#define mtc0_tlbw_hazard \
-+ .set push; \
- .set mips32; \
-- ssnop; ssnop; ssnop; ssnop; \
-- .set mips0
-+ _ssnop; _ssnop; _ssnop; _ssnop; \
-+ .set pop
-+
-+#define tlbw_eret_hazard \
-+ .set push; \
-+ .set mips32; \
-+ _ssnop; _ssnop; _ssnop; _ssnop; \
-+ .set pop
-+
- #else
--#define rm9000_tlb_hazard
-+
-+/*
-+ * The taken branch will result in a two cycle penalty for the two killed
-+ * instructions on R4000 / R4400. Other processors only have a single cycle
-+ * hazard so this is nice trick to have an optimal code for a range of
-+ * processors.
-+ */
-+#define mtc0_tlbw_hazard \
-+ b . + 8
-+#define tlbw_eret_hazard \
-+ nop
- #endif
-
-+/*
-+ * mtc0->mfc0 hazard
-+ * The 24K has a 2 cycle mtc0/mfc0 execution hazard.
-+ * It is a MIPS32R2 processor so ehb will clear the hazard.
-+ */
-+
-+#ifdef CONFIG_CPU_MIPSR2
-+/*
-+ * Use a macro for ehb unless explicit support for MIPSR2 is enabled
-+ */
-+ .macro ehb
-+ sll $0, $0, 3
-+ .endm
-+
-+#define irq_enable_hazard \
-+ ehb # irq_enable_hazard
-+
-+#define irq_disable_hazard \
-+ ehb # irq_disable_hazard
-+
-+#elif defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_RM9000)
-+
-+/*
-+ * R10000 rocks - all hazards handled in hardware, so this becomes a nobrainer.
-+ */
-+
-+#define irq_enable_hazard
-+
-+#define irq_disable_hazard
-+
- #else
-
- /*
-+ * Classic MIPS needs 1 - 3 nops or ssnops
-+ */
-+#define irq_enable_hazard
-+#define irq_disable_hazard \
-+ _ssnop; _ssnop; _ssnop
-+
-+#endif
-+
-+#else /* __ASSEMBLY__ */
-+
-+/*
- * RM9000 hazards. When the JTLB is updated by tlbwi or tlbwr, a subsequent
- * use of the JTLB for instructions should not occur for 4 cpu cycles and use
- * for data translations should not occur for 3 cpu cycles.
- */
- #ifdef CONFIG_CPU_RM9000
--#define rm9000_tlb_hazard() \
-+
-+#define mtc0_tlbw_hazard() \
-+ __asm__ __volatile__( \
-+ ".set\tmips32\n\t" \
-+ "_ssnop; _ssnop; _ssnop; _ssnop\n\t" \
-+ ".set\tmips0")
-+
-+#define tlbw_use_hazard() \
- __asm__ __volatile__( \
- ".set\tmips32\n\t" \
-- "ssnop; ssnop; ssnop; ssnop\n\t" \
-+ "_ssnop; _ssnop; _ssnop; _ssnop\n\t" \
- ".set\tmips0")
- #else
--#define rm9000_tlb_hazard() do { } while (0)
-+
-+/*
-+ * Overkill warning ...
-+ */
-+#define mtc0_tlbw_hazard() \
-+ __asm__ __volatile__( \
-+ ".set noreorder\n\t" \
-+ "nop; nop; nop; nop; nop; nop;\n\t" \
-+ ".set reorder\n\t")
-+
-+#define tlbw_use_hazard() \
-+ __asm__ __volatile__( \
-+ ".set noreorder\n\t" \
-+ "nop; nop; nop; nop; nop; nop;\n\t" \
-+ ".set reorder\n\t")
-+
- #endif
-
-+/*
-+ * mtc0->mfc0 hazard
-+ * The 24K has a 2 cycle mtc0/mfc0 execution hazard.
-+ * It is a MIPS32R2 processor so ehb will clear the hazard.
-+ */
-+
-+#ifdef CONFIG_CPU_MIPSR2
-+/*
-+ * Use a macro for ehb unless explicit support for MIPSR2 is enabled
-+ */
-+__asm__(
-+ " .macro ehb \n\t"
-+ " sll $0, $0, 3 \n\t"
-+ " .endm \n\t"
-+ " \n\t"
-+ " .macro\tirq_enable_hazard \n\t"
-+ " ehb \n\t"
-+ " .endm \n\t"
-+ " \n\t"
-+ " .macro\tirq_disable_hazard \n\t"
-+ " ehb \n\t"
-+ " .endm");
-+
-+#define irq_enable_hazard() \
-+ __asm__ __volatile__( \
-+ "ehb\t\t\t\t# irq_enable_hazard")
-+
-+#define irq_disable_hazard() \
-+ __asm__ __volatile__( \
-+ "ehb\t\t\t\t# irq_disable_hazard")
-+
-+#elif defined(CONFIG_CPU_R10000)
-+
-+/*
-+ * R10000 rocks - all hazards handled in hardware, so this becomes a nobrainer.
-+ */
-+
-+__asm__(
-+ " .macro\tirq_enable_hazard \n\t"
-+ " .endm \n\t"
-+ " \n\t"
-+ " .macro\tirq_disable_hazard \n\t"
-+ " .endm");
-+
-+#define irq_enable_hazard() do { } while (0)
-+#define irq_disable_hazard() do { } while (0)
-+
-+#else
-+
-+/*
-+ * Default for classic MIPS processors. Assume worst case hazards but don't
-+ * care about the irq_enable_hazard - sooner or later the hardware will
-+ * enable it and we don't care when exactly.
-+ */
-+
-+__asm__(
-+ " .macro _ssnop \n\t"
-+ " sll $0, $2, 1 \n\t"
-+ " .endm \n\t"
-+ " \n\t"
-+ " # \n\t"
-+ " # There is a hazard but we do not care \n\t"
-+ " # \n\t"
-+ " .macro\tirq_enable_hazard \n\t"
-+ " .endm \n\t"
-+ " \n\t"
-+ " .macro\tirq_disable_hazard \n\t"
-+ " _ssnop; _ssnop; _ssnop \n\t"
-+ " .endm");
-+
-+#define irq_enable_hazard() do { } while (0)
-+#define irq_disable_hazard() \
-+ __asm__ __volatile__( \
-+ "_ssnop; _ssnop; _ssnop;\t\t# irq_disable_hazard")
-+
- #endif
-
-+#endif /* __ASSEMBLY__ */
-+
- #endif /* _ASM_HAZARDS_H */
-diff -Nur linux-2.4.32-rc1/include/asm-mips64/ide.h linux-2.4.32-rc1.mips/include/asm-mips64/ide.h
---- linux-2.4.32-rc1/include/asm-mips64/ide.h 2003-08-25 13:44:44.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/asm-mips64/ide.h 2005-04-19 14:26:53.000000000 +0200
-@@ -32,12 +32,12 @@
-
- extern struct ide_ops *ide_ops;
-
--static __inline__ int ide_default_irq(ide_ioreg_t base)
-+static inline int ide_default_irq(ide_ioreg_t base)
- {
- return ide_ops->ide_default_irq(base);
- }
-
--static __inline__ ide_ioreg_t ide_default_io_base(int index)
-+static inline ide_ioreg_t ide_default_io_base(int index)
- {
- return ide_ops->ide_default_io_base(index);
- }
-@@ -48,7 +48,7 @@
- ide_ops->ide_init_hwif_ports(hw, data_port, ctrl_port, irq);
- }
-
--static __inline__ void ide_init_default_hwifs(void)
-+static inline void ide_init_default_hwifs(void)
- {
- #ifndef CONFIG_BLK_DEV_IDEPCI
- hw_regs_t hw;
-@@ -68,7 +68,89 @@
- #define ide_ack_intr(hwif) ((hwif)->hw.ack_intr ? (hwif)->hw.ack_intr(hwif) : 1)
- #endif
-
--#include <asm-generic/ide_iops.h>
-+/* MIPS port and memory-mapped I/O string operations. */
-+
-+static inline void __ide_flush_dcache_range(unsigned long addr, unsigned long size)
-+{
-+ if (cpu_has_dc_aliases) {
-+ unsigned long end = addr + size;
-+ for (; addr < end; addr += PAGE_SIZE)
-+ flush_dcache_page(virt_to_page(addr));
-+ }
-+}
-+
-+static inline void __ide_insw(unsigned long port, void *addr,
-+ unsigned int count)
-+{
-+ insw(port, addr, count);
-+ __ide_flush_dcache_range((unsigned long)addr, count * 2);
-+}
-+
-+static inline void __ide_insl(unsigned long port, void *addr, unsigned int count)
-+{
-+ insl(port, addr, count);
-+ __ide_flush_dcache_range((unsigned long)addr, count * 4);
-+}
-+
-+static inline void __ide_outsw(unsigned long port, const void *addr,
-+ unsigned long count)
-+{
-+ outsw(port, addr, count);
-+ __ide_flush_dcache_range((unsigned long)addr, count * 2);
-+}
-+
-+static inline void __ide_outsl(unsigned long port, const void *addr,
-+ unsigned long count)
-+{
-+ outsl(port, addr, count);
-+ __ide_flush_dcache_range((unsigned long)addr, count * 4);
-+}
-+
-+static inline void __ide_mm_insw(unsigned long port, void *addr, u32 count)
-+{
-+ unsigned long start = (unsigned long) addr;
-+
-+ while (count--) {
-+ *(u16 *)addr = readw(port);
-+ addr += 2;
-+ }
-+ __ide_flush_dcache_range(start, count * 2);
-+}
-+
-+static inline void __ide_mm_insl(unsigned long port, void *addr, u32 count)
-+{
-+ unsigned long start = (unsigned long) addr;
-+
-+ while (count--) {
-+ *(u32 *)addr = readl(port);
-+ addr += 4;
-+ }
-+ __ide_flush_dcache_range(start, count * 4);
-+}
-+
-+static inline void __ide_mm_outsw(unsigned long port, const void *addr,
-+ u32 count)
-+{
-+ unsigned long start = (unsigned long) addr;
-+
-+ while (count--) {
-+ writew(*(u16 *)addr, port);
-+ addr += 2;
-+ }
-+ __ide_flush_dcache_range(start, count * 2);
-+}
-+
-+static inline void __ide_mm_outsl(unsigned long port, const void *addr,
-+ u32 count)
-+{
-+ unsigned long start = (unsigned long) addr;
-+
-+ while (count--) {
-+ writel(*(u32 *)addr, port);
-+ addr += 4;
-+ }
-+ __ide_flush_dcache_range(start, count * 4);
-+}
-
- #endif /* __KERNEL__ */
-
-diff -Nur linux-2.4.32-rc1/include/asm-mips64/io.h linux-2.4.32-rc1.mips/include/asm-mips64/io.h
---- linux-2.4.32-rc1/include/asm-mips64/io.h 2004-02-18 14:36:32.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips64/io.h 2005-04-19 14:24:53.000000000 +0200
-@@ -414,7 +414,8 @@
- return __ioswab32(__val);
- }
-
--static inline void __outsb(unsigned long port, void *addr, unsigned int count)
-+static inline void __outsb(unsigned long port, const void *addr,
-+ unsigned int count)
- {
- while (count--) {
- outb(*(u8 *)addr, port);
-@@ -430,7 +431,8 @@
- }
- }
-
--static inline void __outsw(unsigned long port, void *addr, unsigned int count)
-+static inline void __outsw(unsigned long port, const void *addr,
-+ unsigned int count)
- {
- while (count--) {
- outw(*(u16 *)addr, port);
-@@ -446,7 +448,8 @@
- }
- }
-
--static inline void __outsl(unsigned long port, void *addr, unsigned int count)
-+static inline void __outsl(unsigned long port, const void *addr,
-+ unsigned int count)
- {
- while (count--) {
- outl(*(u32 *)addr, port);
-diff -Nur linux-2.4.32-rc1/include/asm-mips64/mipsregs.h linux-2.4.32-rc1.mips/include/asm-mips64/mipsregs.h
---- linux-2.4.32-rc1/include/asm-mips64/mipsregs.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips64/mipsregs.h 2005-02-06 22:24:22.000000000 +0100
-@@ -757,10 +757,18 @@
- #define read_c0_config1() __read_32bit_c0_register($16, 1)
- #define read_c0_config2() __read_32bit_c0_register($16, 2)
- #define read_c0_config3() __read_32bit_c0_register($16, 3)
-+#define read_c0_config4() __read_32bit_c0_register($16, 4)
-+#define read_c0_config5() __read_32bit_c0_register($16, 5)
-+#define read_c0_config6() __read_32bit_c0_register($16, 6)
-+#define read_c0_config7() __read_32bit_c0_register($16, 7)
- #define write_c0_config(val) __write_32bit_c0_register($16, 0, val)
- #define write_c0_config1(val) __write_32bit_c0_register($16, 1, val)
- #define write_c0_config2(val) __write_32bit_c0_register($16, 2, val)
- #define write_c0_config3(val) __write_32bit_c0_register($16, 3, val)
-+#define write_c0_config4(val) __write_32bit_c0_register($16, 4, val)
-+#define write_c0_config5(val) __write_32bit_c0_register($16, 5, val)
-+#define write_c0_config6(val) __write_32bit_c0_register($16, 6, val)
-+#define write_c0_config7(val) __write_32bit_c0_register($16, 7, val)
-
- /*
- * The WatchLo register. There may be upto 8 of them.
-@@ -856,42 +864,34 @@
- */
- static inline void tlb_probe(void)
- {
-- rm9000_tlb_hazard();
- __asm__ __volatile__(
- ".set noreorder\n\t"
- "tlbp\n\t"
- ".set reorder");
-- rm9000_tlb_hazard();
- }
-
- static inline void tlb_read(void)
- {
-- rm9000_tlb_hazard();
- __asm__ __volatile__(
- ".set noreorder\n\t"
- "tlbr\n\t"
- ".set reorder");
-- rm9000_tlb_hazard();
- }
-
- static inline void tlb_write_indexed(void)
- {
-- rm9000_tlb_hazard();
- __asm__ __volatile__(
- ".set noreorder\n\t"
- "tlbwi\n\t"
- ".set reorder");
-- rm9000_tlb_hazard();
- }
-
- static inline void tlb_write_random(void)
- {
-- rm9000_tlb_hazard();
- __asm__ __volatile__(
- ".set noreorder\n\t"
- "tlbwr\n\t"
- ".set reorder");
-- rm9000_tlb_hazard();
- }
-
- /*
-diff -Nur linux-2.4.32-rc1/include/asm-mips64/reg.h linux-2.4.32-rc1.mips/include/asm-mips64/reg.h
---- linux-2.4.32-rc1/include/asm-mips64/reg.h 2003-08-25 13:44:44.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/asm-mips64/reg.h 2005-04-14 12:41:44.000000000 +0200
-@@ -46,6 +46,9 @@
- /*
- * k0/k1 unsaved
- */
-+#define EF_REG26 26
-+#define EF_REG27 27
-+
- #define EF_REG28 28
- #define EF_REG29 29
- #define EF_REG30 30
-diff -Nur linux-2.4.32-rc1/include/asm-mips64/sgi/hpc3.h linux-2.4.32-rc1.mips/include/asm-mips64/sgi/hpc3.h
---- linux-2.4.32-rc1/include/asm-mips64/sgi/hpc3.h 2003-08-25 13:44:44.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/asm-mips64/sgi/hpc3.h 2005-09-23 16:35:27.000000000 +0200
-@@ -128,26 +128,26 @@
- volatile u32 rx_gfptr; /* current GIO fifo ptr */
- volatile u32 rx_dfptr; /* current device fifo ptr */
- u32 _unused1; /* padding */
-- volatile u32 rx_reset; /* reset register */
--#define HPC3_ERXRST_CRESET 0x1 /* Reset dma channel and external controller */
--#define HPC3_ERXRST_CLRIRQ 0x2 /* Clear channel interrupt */
--#define HPC3_ERXRST_LBACK 0x4 /* Enable diagnostic loopback mode of Seeq8003 */
--
-- volatile u32 rx_dconfig; /* DMA configuration register */
--#define HPC3_ERXDCFG_D1 0x0000f /* Cycles to spend in D1 state for PIO */
--#define HPC3_ERXDCFG_D2 0x000f0 /* Cycles to spend in D2 state for PIO */
--#define HPC3_ERXDCFG_D3 0x00f00 /* Cycles to spend in D3 state for PIO */
--#define HPC3_ERXDCFG_WCTRL 0x01000 /* Enable writes of desc into ex ctrl port */
--#define HPC3_ERXDCFG_FRXDC 0x02000 /* Clear eop stat bits upon rxdc, hw seeq fix */
--#define HPC3_ERXDCFG_FEOP 0x04000 /* Bad packet marker timeout enable */
--#define HPC3_ERXDCFG_FIRQ 0x08000 /* Another bad packet timeout enable */
--#define HPC3_ERXDCFG_PTO 0x30000 /* Programmed timeout value for above two */
--
-- volatile u32 rx_pconfig; /* PIO configuration register */
--#define HPC3_ERXPCFG_P1 0x000f /* Cycles to spend in P1 state for PIO */
--#define HPC3_ERXPCFG_P2 0x00f0 /* Cycles to spend in P2 state for PIO */
--#define HPC3_ERXPCFG_P3 0x0f00 /* Cycles to spend in P3 state for PIO */
--#define HPC3_ERXPCFG_TST 0x1000 /* Diagnistic ram test feature bit */
-+ volatile u32 reset; /* reset register */
-+#define HPC3_ERST_CRESET 0x1 /* Reset dma channel and external controller */
-+#define HPC3_ERST_CLRIRQ 0x2 /* Clear channel interrupt */
-+#define HPC3_ERST_LBACK 0x4 /* Enable diagnostic loopback mode of Seeq8003 */
-+
-+ volatile u32 dconfig; /* DMA configuration register */
-+#define HPC3_EDCFG_D1 0x0000f /* Cycles to spend in D1 state for PIO */
-+#define HPC3_EDCFG_D2 0x000f0 /* Cycles to spend in D2 state for PIO */
-+#define HPC3_EDCFG_D3 0x00f00 /* Cycles to spend in D3 state for PIO */
-+#define HPC3_EDCFG_WCTRL 0x01000 /* Enable writes of desc into ex ctrl port */
-+#define HPC3_EDCFG_FRXDC 0x02000 /* Clear eop stat bits upon rxdc, hw seeq fix */
-+#define HPC3_EDCFG_FEOP 0x04000 /* Bad packet marker timeout enable */
-+#define HPC3_EDCFG_FIRQ 0x08000 /* Another bad packet timeout enable */
-+#define HPC3_EDCFG_PTO 0x30000 /* Programmed timeout value for above two */
-+
-+ volatile u32 pconfig; /* PIO configuration register */
-+#define HPC3_EPCFG_P1 0x000f /* Cycles to spend in P1 state for PIO */
-+#define HPC3_EPCFG_P2 0x00f0 /* Cycles to spend in P2 state for PIO */
-+#define HPC3_EPCFG_P3 0x0f00 /* Cycles to spend in P3 state for PIO */
-+#define HPC3_EPCFG_TST 0x1000 /* Diagnistic ram test feature bit */
-
- u32 _unused2[0x1000/4 - 8]; /* padding */
-
-@@ -221,7 +221,7 @@
- #define HPC3_BESTAT_PIDMASK 0x3f700 /* DMA channel parity identifier */
-
- u32 _unused1[0x14000/4 - 5]; /* padding */
--
-+
- /* Now direct PIO per-HPC3 peripheral access to external regs. */
- volatile u32 scsi0_ext[256]; /* SCSI channel 0 external regs */
- u32 _unused2[0x7c00/4];
-@@ -304,7 +304,7 @@
- volatile u32 bbram[8192-50-14]; /* Battery backed ram */
- };
-
--/*
-+/*
- * It is possible to have two HPC3's within the address space on
- * one machine, though only having one is more likely on an Indy.
- */
-diff -Nur linux-2.4.32-rc1/include/asm-mips64/sn/nmi.h linux-2.4.32-rc1.mips/include/asm-mips64/sn/nmi.h
---- linux-2.4.32-rc1/include/asm-mips64/sn/nmi.h 2002-11-29 00:53:15.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips64/sn/nmi.h 2002-08-06 01:53:40.000000000 +0200
-@@ -8,7 +8,7 @@
- #ifndef __ASM_SN_NMI_H
- #define __ASM_SN_NMI_H
-
--#ident "$Revision: 1.2.4.2 $"
-+#ident "$Revision: 1.2.4.1 $"
-
- #include <asm/sn/addrs.h>
-
-diff -Nur linux-2.4.32-rc1/include/asm-mips64/unistd.h linux-2.4.32-rc1.mips/include/asm-mips64/unistd.h
---- linux-2.4.32-rc1/include/asm-mips64/unistd.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-mips64/unistd.h 2004-11-24 21:30:06.000000000 +0100
-@@ -760,7 +760,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- /*
-@@ -788,7 +788,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #define _syscall2(type,name,atype,a,btype,b) \
-@@ -813,7 +813,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #define _syscall3(type,name,atype,a,btype,b,ctype,c) \
-@@ -839,7 +839,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #define _syscall4(type,name,atype,a,btype,b,ctype,c,dtype,d) \
-@@ -865,7 +865,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #if (_MIPS_SIM == _MIPS_SIM_ABI32)
-@@ -902,7 +902,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #define _syscall6(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e,ftype,f) \
-@@ -935,7 +935,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #endif /* (_MIPS_SIM == _MIPS_SIM_ABI32) */
-@@ -966,7 +966,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #define _syscall6(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e,ftype,f) \
-@@ -995,7 +995,7 @@
- if (__a3 == 0) \
- return (type) __v0; \
- errno = __v0; \
-- return -1; \
-+ return (type)-1; \
- }
-
- #endif /* (_MIPS_SIM == _MIPS_SIM_NABI32) || (_MIPS_SIM == _MIPS_SIM_ABI64) */
-diff -Nur linux-2.4.32-rc1/include/asm-ppc/param.h linux-2.4.32-rc1.mips/include/asm-ppc/param.h
---- linux-2.4.32-rc1/include/asm-ppc/param.h 2003-06-13 16:51:38.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/asm-ppc/param.h 2003-07-05 05:23:46.000000000 +0200
-@@ -3,6 +3,9 @@
-
- #ifndef HZ
- #define HZ 100
-+#ifdef __KERNEL__
-+#define hz_to_std(a) (a)
-+#endif
- #endif
-
- #define EXEC_PAGESIZE 4096
-diff -Nur linux-2.4.32-rc1/include/asm-s390/param.h linux-2.4.32-rc1.mips/include/asm-s390/param.h
---- linux-2.4.32-rc1/include/asm-s390/param.h 2001-02-13 23:13:44.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-s390/param.h 2001-03-09 21:34:48.000000000 +0100
-@@ -11,6 +11,9 @@
-
- #ifndef HZ
- #define HZ 100
-+#ifdef __KERNEL__
-+#define hz_to_std(a) (a)
-+#endif
- #endif
-
- #define EXEC_PAGESIZE 4096
-diff -Nur linux-2.4.32-rc1/include/asm-sh/param.h linux-2.4.32-rc1.mips/include/asm-sh/param.h
---- linux-2.4.32-rc1/include/asm-sh/param.h 2001-01-04 22:19:13.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-sh/param.h 2001-01-11 05:02:45.000000000 +0100
-@@ -3,6 +3,9 @@
-
- #ifndef HZ
- #define HZ 100
-+#ifdef __KERNEL__
-+#define hz_to_std(a) (a)
-+#endif
- #endif
-
- #define EXEC_PAGESIZE 4096
-diff -Nur linux-2.4.32-rc1/include/asm-sparc/param.h linux-2.4.32-rc1.mips/include/asm-sparc/param.h
---- linux-2.4.32-rc1/include/asm-sparc/param.h 2000-10-30 23:34:12.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-sparc/param.h 2000-11-23 03:00:56.000000000 +0100
-@@ -4,6 +4,9 @@
-
- #ifndef HZ
- #define HZ 100
-+#ifdef __KERNEL__
-+#define hz_to_std(a) (a)
-+#endif
- #endif
-
- #define EXEC_PAGESIZE 8192 /* Thanks for sun4's we carry baggage... */
-diff -Nur linux-2.4.32-rc1/include/asm-sparc64/param.h linux-2.4.32-rc1.mips/include/asm-sparc64/param.h
---- linux-2.4.32-rc1/include/asm-sparc64/param.h 2000-10-30 23:34:12.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/asm-sparc64/param.h 2000-11-23 03:00:56.000000000 +0100
-@@ -4,6 +4,9 @@
-
- #ifndef HZ
- #define HZ 100
-+#ifdef __KERNEL__
-+#define hz_to_std(a) (a)
-+#endif
- #endif
-
- #define EXEC_PAGESIZE 8192 /* Thanks for sun4's we carry baggage... */
-diff -Nur linux-2.4.32-rc1/include/linux/i2c-algo-au1550.h linux-2.4.32-rc1.mips/include/linux/i2c-algo-au1550.h
---- linux-2.4.32-rc1/include/linux/i2c-algo-au1550.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/linux/i2c-algo-au1550.h 2004-07-07 02:38:02.000000000 +0200
-@@ -0,0 +1,31 @@
-+/*
-+ * Copyright (C) 2004 Embedded Edge, LLC <dan@embeddededge.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 I2C_ALGO_AU1550_H
-+#define I2C_ALGO_AU1550_H 1
-+
-+struct i2c_algo_au1550_data {
-+ u32 psc_base;
-+ int xfer_timeout;
-+ int ack_timeout;
-+};
-+
-+int i2c_au1550_add_bus(struct i2c_adapter *);
-+int i2c_au1550_del_bus(struct i2c_adapter *);
-+
-+#endif /* I2C_ALGO_AU1550_H */
-diff -Nur linux-2.4.32-rc1/include/linux/i2c-id.h linux-2.4.32-rc1.mips/include/linux/i2c-id.h
---- linux-2.4.32-rc1/include/linux/i2c-id.h 2004-02-18 14:36:32.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/linux/i2c-id.h 2004-07-07 02:38:02.000000000 +0200
-@@ -156,6 +156,8 @@
-
- #define I2C_ALGO_SGI 0x130000 /* SGI algorithm */
-
-+#define I2C_ALGO_AU1550 0x140000 /* Alchemy Au1550 PSC */
-+
- #define I2C_ALGO_EXP 0x800000 /* experimental */
-
- #define I2C_ALGO_MASK 0xff0000 /* Mask for algorithms */
-@@ -204,6 +206,9 @@
- #define I2C_HW_SGI_VINO 0x00
- #define I2C_HW_SGI_MACE 0x01
-
-+/* --- Au1550 PSC adapters */
-+#define I2C_HW_AU1550_PSC 0x00
-+
- /* --- SMBus only adapters */
- #define I2C_HW_SMBUS_PIIX4 0x00
- #define I2C_HW_SMBUS_ALI15X3 0x01
-diff -Nur linux-2.4.32-rc1/include/linux/sched.h linux-2.4.32-rc1.mips/include/linux/sched.h
---- linux-2.4.32-rc1/include/linux/sched.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/linux/sched.h 2004-11-29 18:47:18.000000000 +0100
-@@ -617,6 +617,10 @@
- extern int in_group_p(gid_t);
- extern int in_egroup_p(gid_t);
-
-+extern ATTRIB_NORET void cpu_idle(void);
-+
-+extern void release_task(struct task_struct * p);
-+
- extern void proc_caches_init(void);
- extern void flush_signals(struct task_struct *);
- extern void flush_signal_handlers(struct task_struct *);
-diff -Nur linux-2.4.32-rc1/include/linux/serial.h linux-2.4.32-rc1.mips/include/linux/serial.h
---- linux-2.4.32-rc1/include/linux/serial.h 2002-08-03 02:39:45.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/linux/serial.h 2004-07-31 02:17:57.000000000 +0200
-@@ -75,7 +75,8 @@
- #define PORT_16654 11
- #define PORT_16850 12
- #define PORT_RSA 13 /* RSA-DV II/S card */
--#define PORT_MAX 13
-+#define PORT_SB1250 14
-+#define PORT_MAX 14
-
- #define SERIAL_IO_PORT 0
- #define SERIAL_IO_HUB6 1
-diff -Nur linux-2.4.32-rc1/include/linux/swap.h linux-2.4.32-rc1.mips/include/linux/swap.h
---- linux-2.4.32-rc1/include/linux/swap.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux-2.4.32-rc1.mips/include/linux/swap.h 2004-11-29 18:47:18.000000000 +0100
-@@ -1,6 +1,12 @@
- #ifndef _LINUX_SWAP_H
- #define _LINUX_SWAP_H
-
-+#include <linux/config.h>
-+
-+#define MAX_SWAPFILES 32
-+
-+#ifdef __KERNEL__
-+
- #include <linux/spinlock.h>
- #include <asm/page.h>
-
-@@ -8,8 +14,6 @@
- #define SWAP_FLAG_PRIO_MASK 0x7fff
- #define SWAP_FLAG_PRIO_SHIFT 0
-
--#define MAX_SWAPFILES 32
--
- /*
- * Magic header for a swap area. The first part of the union is
- * what the swap magic looks like for the old (limited to 128MB)
-@@ -39,8 +43,6 @@
- } info;
- };
-
--#ifdef __KERNEL__
--
- /*
- * Max bad pages in the new format..
- */
-diff -Nur linux-2.4.32-rc1/include/video/newport.h linux-2.4.32-rc1.mips/include/video/newport.h
---- linux-2.4.32-rc1/include/video/newport.h 2001-04-12 21:20:31.000000000 +0200
-+++ linux-2.4.32-rc1.mips/include/video/newport.h 2004-09-23 15:32:29.000000000 +0200
-@@ -291,8 +291,6 @@
- unsigned int _unused2[0x1ef];
- struct newport_cregs cgo;
- };
--extern struct newport_regs *npregs;
--
-
- typedef struct {
- unsigned int drawmode1;
-@@ -450,38 +448,26 @@
-
- /* Miscellaneous NEWPORT routines. */
- #define BUSY_TIMEOUT 100000
--static __inline__ int newport_wait(void)
-+static __inline__ int newport_wait(struct newport_regs *regs)
- {
-- int i = 0;
-+ int t = BUSY_TIMEOUT;
-
-- while(i < BUSY_TIMEOUT)
-- if(!(npregs->cset.status & NPORT_STAT_GBUSY))
-+ while (t--)
-+ if (!(regs->cset.status & NPORT_STAT_GBUSY))
- break;
-- if(i == BUSY_TIMEOUT)
-- return 1;
-- return 0;
-+ return !t;
- }
-
--static __inline__ int newport_bfwait(void)
-+static __inline__ int newport_bfwait(struct newport_regs *regs)
- {
-- int i = 0;
-+ int t = BUSY_TIMEOUT;
-
-- while(i < BUSY_TIMEOUT)
-- if(!(npregs->cset.status & NPORT_STAT_BBUSY))
-+ while (t--)
-+ if(!(regs->cset.status & NPORT_STAT_BBUSY))
- break;
-- if(i == BUSY_TIMEOUT)
-- return 1;
-- return 0;
-+ return !t;
- }
-
--/* newport.c and cons_newport.c routines */
--extern struct graphics_ops *newport_probe (int, const char **);
--
--void newport_save (void *);
--void newport_restore (void *);
--void newport_reset (void);
--int newport_ioctl (int card, int cmd, unsigned long arg);
--
- /*
- * DCBMODE register defines:
- */
-@@ -564,7 +550,7 @@
- {
- rex->set.dcbmode = DCB_XMAP0 | XM9_CRS_FIFO_AVAIL |
- DCB_DATAWIDTH_1 | R_DCB_XMAP9_PROTOCOL;
-- newport_bfwait ();
-+ newport_bfwait (rex);
-
- while ((rex->set.dcbdata0.bybytes.b3 & 3) != XM9_FIFO_EMPTY)
- ;
-diff -Nur linux-2.4.32-rc1/init/main.c linux-2.4.32-rc1.mips/init/main.c
---- linux-2.4.32-rc1/init/main.c 2004-11-17 12:54:22.000000000 +0100
-+++ linux-2.4.32-rc1.mips/init/main.c 2004-11-19 01:28:52.000000000 +0100
-@@ -296,7 +296,6 @@
-
-
- extern void setup_arch(char **);
--extern void cpu_idle(void);
-
- unsigned long wait_init_idle;
-
-diff -Nur linux-2.4.32-rc1/kernel/exit.c linux-2.4.32-rc1.mips/kernel/exit.c
---- linux-2.4.32-rc1/kernel/exit.c 2002-11-29 00:53:15.000000000 +0100
-+++ linux-2.4.32-rc1.mips/kernel/exit.c 2003-01-11 18:53:18.000000000 +0100
-@@ -26,7 +26,7 @@
-
- int getrusage(struct task_struct *, int, struct rusage *);
-
--static void release_task(struct task_struct * p)
-+void release_task(struct task_struct * p)
- {
- if (p != current) {
- #ifdef CONFIG_SMP
-diff -Nur linux-2.4.32-rc1/kernel/signal.c linux-2.4.32-rc1.mips/kernel/signal.c
---- linux-2.4.32-rc1/kernel/signal.c 2004-02-18 14:36:32.000000000 +0100
-+++ linux-2.4.32-rc1.mips/kernel/signal.c 2004-01-20 16:10:34.000000000 +0100
-@@ -14,6 +14,7 @@
- #include <linux/init.h>
- #include <linux/sched.h>
-
-+#include <asm/param.h>
- #include <asm/uaccess.h>
-
- /*
-@@ -28,6 +29,14 @@
- #define SIG_SLAB_DEBUG 0
- #endif
-
-+#define DEBUG_SIG 0
-+
-+#if DEBUG_SIG
-+#define SIG_SLAB_DEBUG (SLAB_DEBUG_FREE | SLAB_RED_ZONE /* | SLAB_POISON */)
-+#else
-+#define SIG_SLAB_DEBUG 0
-+#endif
-+
- static kmem_cache_t *sigqueue_cachep;
-
- atomic_t nr_queued_signals;
-@@ -270,6 +279,11 @@
- signal_pending(current));
- #endif
-
-+#if DEBUG_SIG
-+printk("SIG dequeue (%s:%d): %d ", current->comm, current->pid,
-+ signal_pending(current));
-+#endif
-+
- sig = next_signal(current, mask);
- if (sig) {
- if (current->notifier) {
-@@ -293,6 +307,10 @@
- printk(" %d -> %d\n", signal_pending(current), sig);
- #endif
-
-+#if DEBUG_SIG
-+printk(" %d -> %d\n", signal_pending(current), sig);
-+#endif
-+
- return sig;
- }
-
-@@ -540,6 +558,11 @@
- printk("SIG queue (%s:%d): %d ", t->comm, t->pid, sig);
- #endif
-
-+
-+#if DEBUG_SIG
-+printk("SIG queue (%s:%d): %d ", t->comm, t->pid, sig);
-+#endif
-+
- ret = -EINVAL;
- if (sig < 0 || sig > _NSIG)
- goto out_nolock;
-@@ -778,8 +801,8 @@
- info.si_uid = tsk->uid;
-
- /* FIXME: find out whether or not this is supposed to be c*time. */
-- info.si_utime = tsk->times.tms_utime;
-- info.si_stime = tsk->times.tms_stime;
-+ info.si_utime = hz_to_std(tsk->times.tms_utime);
-+ info.si_stime = hz_to_std(tsk->times.tms_stime);
-
- status = tsk->exit_code & 0x7f;
- why = SI_KERNEL; /* shouldn't happen */
-diff -Nur linux-2.4.32-rc1/kernel/sys.c linux-2.4.32-rc1.mips/kernel/sys.c
---- linux-2.4.32-rc1/kernel/sys.c 2003-11-28 19:26:21.000000000 +0100
-+++ linux-2.4.32-rc1.mips/kernel/sys.c 2003-11-17 02:07:47.000000000 +0100
-@@ -801,16 +801,23 @@
-
- asmlinkage long sys_times(struct tms * tbuf)
- {
-+ struct tms temp;
-+
- /*
- * In the SMP world we might just be unlucky and have one of
- * the times increment as we use it. Since the value is an
- * atomically safe type this is just fine. Conceptually its
- * as if the syscall took an instant longer to occur.
- */
-- if (tbuf)
-- if (copy_to_user(tbuf, &current->times, sizeof(struct tms)))
-+ if (tbuf) {
-+ temp.tms_utime = hz_to_std(current->times.tms_utime);
-+ temp.tms_stime = hz_to_std(current->times.tms_stime);
-+ temp.tms_cutime = hz_to_std(current->times.tms_cutime);
-+ temp.tms_cstime = hz_to_std(current->times.tms_cstime);
-+ if (copy_to_user(tbuf, &temp, sizeof(struct tms)))
- return -EFAULT;
-- return jiffies;
-+ }
-+ return hz_to_std(jiffies);
- }
-
- /*
-diff -Nur linux-2.4.32-rc1/lib/Makefile linux-2.4.32-rc1.mips/lib/Makefile
---- linux-2.4.32-rc1/lib/Makefile 2004-04-14 15:05:40.000000000 +0200
-+++ linux-2.4.32-rc1.mips/lib/Makefile 2004-04-16 05:14:21.000000000 +0200
-@@ -27,6 +27,7 @@
- subdir-$(CONFIG_ZLIB_INFLATE) += zlib_inflate
- subdir-$(CONFIG_ZLIB_DEFLATE) += zlib_deflate
-
-+-include $(TOPDIR)/arch/$(ARCH)/Makefile.lib
- include $(TOPDIR)/drivers/net/Makefile.lib
- include $(TOPDIR)/drivers/usb/Makefile.lib
- include $(TOPDIR)/drivers/bluetooth/Makefile.lib
-diff -Nur linux-2.4.32-rc1/Makefile linux-2.4.32-rc1.mips/Makefile
---- linux-2.4.32-rc1/Makefile 2005-10-24 11:33:30.000000000 +0200
-+++ linux-2.4.32-rc1.mips/Makefile 2005-09-23 22:41:15.000000000 +0200
-@@ -5,7 +5,7 @@
-
- KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
-
--ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
-+ARCH = mips
- KERNELPATH=kernel-$(shell echo $(KERNELRELEASE) | sed -e "s/-//g")
-
- CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
-@@ -462,10 +462,11 @@
- $(MAKE) -C Documentation/DocBook mrproper
-
- distclean: mrproper
-- rm -f core `find . \( -not -type d \) -and \
-- \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
-- -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
-- -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -type f -print` TAGS tags
-+ find . \( -not -type d \) -and \
-+ \( -name core -o -name '*.orig' -o -name '*.rej' \
-+ -o -name '*~' -o -name '*.bak' -o -name '#*#' \
-+ -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \
-+ -o -name TAGS -o -name tags \) -print | env -i xargs rm -f
-
- backup: mrproper
- cd .. && tar cf - linux/ | gzip -9 > backup.gz
-@@ -492,7 +493,7 @@
- $(MAKE) -C Documentation/DocBook man
-
- sums:
-- find . -type f -print | sort | xargs sum > .SUMS
-+ find . -type f -print | sort | env -i xargs sum > .SUMS
-
- dep-files: scripts/mkdep archdep include/linux/version.h
- rm -f .depend .hdepend
diff --git a/openwrt/target/linux/generic-2.4/patches/001-squashfs.patch b/openwrt/target/linux/generic-2.4/patches/001-squashfs.patch
deleted file mode 100644
index b2d9cf3707..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/001-squashfs.patch
+++ /dev/null
@@ -1,4070 +0,0 @@
-diff --new-file -urp linux-2.4.32/fs/Config.in linux-2.4.32-squashfs3.0/fs/Config.in
---- linux-2.4.32/fs/Config.in 2004-11-17 11:54:21.000000000 +0000
-+++ linux-2.4.32-squashfs3.0/fs/Config.in 2006-03-07 21:12:36.000000000 +0000
-@@ -51,6 +51,14 @@ if [ "$CONFIG_JFFS2_FS" = "y" -o "$CONFI
- int 'JFFS2 debugging verbosity (0 = quiet, 2 = noisy)' CONFIG_JFFS2_FS_DEBUG 0
- fi
- tristate 'Compressed ROM file system support' CONFIG_CRAMFS
-+tristate 'Squashed file system support' CONFIG_SQUASHFS
-+if [ "$CONFIG_SQUASHFS" = "y" -o "$CONFIG_SQUASHFS" = "m" ] ; then
-+bool 'Additional options for memory constrained systems ' CONFIG_SQUASHFS_EMBEDDED
-+fi
-+if [ "$CONFIG_SQUASHFS_EMBEDDED" = "y" ] ; then
-+int 'Number of fragments cached' CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE 3
-+bool 'Use Vmalloc rather than Kmalloc' CONFIG_SQUASHFS_VMALLOC
-+fi
- bool 'Virtual memory file system support (former shm fs)' CONFIG_TMPFS
- define_bool CONFIG_RAMFS y
-
-diff --new-file -urp linux-2.4.32/fs/Makefile linux-2.4.32-squashfs3.0/fs/Makefile
---- linux-2.4.32/fs/Makefile 2004-02-18 13:36:31.000000000 +0000
-+++ linux-2.4.32-squashfs3.0/fs/Makefile 2006-03-07 21:12:36.000000000 +0000
-@@ -65,6 +65,7 @@ subdir-$(CONFIG_REISERFS_FS) += reiserfs
- subdir-$(CONFIG_DEVPTS_FS) += devpts
- subdir-$(CONFIG_SUN_OPENPROMFS) += openpromfs
- subdir-$(CONFIG_BEFS_FS) += befs
-+subdir-$(CONFIG_SQUASHFS) += squashfs
- subdir-$(CONFIG_JFS_FS) += jfs
- subdir-$(CONFIG_XFS_FS) += xfs
-
-diff --new-file -urp linux-2.4.32/fs/squashfs/inode.c linux-2.4.32-squashfs3.0/fs/squashfs/inode.c
---- linux-2.4.32/fs/squashfs/inode.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-squashfs3.0/fs/squashfs/inode.c 2006-03-07 21:12:36.000000000 +0000
-@@ -0,0 +1,2028 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * 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/types.h>
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/smp_lock.h>
-+#include <linux/locks.h>
-+#include <linux/init.h>
-+#include <linux/dcache.h>
-+#include <linux/wait.h>
-+#include <linux/zlib.h>
-+#include <linux/blkdev.h>
-+#include <linux/vmalloc.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+
-+#include "squashfs.h"
-+
-+static struct super_block *squashfs_read_super(struct super_block *, void *, int);
-+static void squashfs_put_super(struct super_block *);
-+static int squashfs_statfs(struct super_block *, struct statfs *);
-+static int squashfs_symlink_readpage(struct file *file, struct page *page);
-+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 *);
-+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode);
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize);
-+
-+static z_stream stream;
-+
-+static DECLARE_FSTYPE_DEV(squashfs_fs_type, "squashfs", squashfs_read_super);
-+
-+static 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_ops = {
-+ .statfs = squashfs_statfs,
-+ .put_super = squashfs_put_super,
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_symlink_aops = {
-+ .readpage = squashfs_symlink_readpage
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_aops = {
-+ .readpage = squashfs_readpage
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_aops_4K = {
-+ .readpage = squashfs_readpage4K
-+};
-+
-+static struct file_operations squashfs_dir_ops = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir
-+};
-+
-+static 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->u.squashfs_sb;
-+ 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)
-+{
-+ struct squashfs_sb_info *msblk = &s->u.squashfs_sb;
-+ 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;
-+ char *c_buffer;
-+ unsigned int compressed;
-+ unsigned int c_byte = length;
-+
-+ if (c_byte) {
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
-+ c_buffer = compressed ? msblk->read_data : buffer;
-+ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ 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 (!(bh[0] = get_block_length(s, &cur_index, &offset,
-+ &c_byte)))
-+ goto read_failure;
-+
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED(c_byte);
-+ c_buffer = compressed ? msblk->read_data : buffer;
-+ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ 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)
-+ down(&msblk->read_data_mutex);
-+
-+ for (bytes = 0, k = 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 block_release;
-+ memcpy(c_buffer + bytes, bh[k]->b_data + offset, avail_bytes);
-+ bytes += avail_bytes;
-+ offset = 0;
-+ brelse(bh[k]);
-+ }
-+
-+ /*
-+ * uncompress block
-+ */
-+ if (compressed) {
-+ int zlib_err;
-+
-+ stream.next_in = c_buffer;
-+ stream.avail_in = c_byte;
-+ stream.next_out = buffer;
-+ stream.avail_out = msblk->read_size;
-+
-+ if (((zlib_err = zlib_inflateInit(&stream)) != Z_OK) ||
-+ ((zlib_err = zlib_inflate(&stream, Z_FINISH))
-+ != Z_STREAM_END) || ((zlib_err =
-+ zlib_inflateEnd(&stream)) != Z_OK)) {
-+ ERROR("zlib_fs returned unexpected result 0x%x\n",
-+ zlib_err);
-+ bytes = 0;
-+ } else
-+ bytes = stream.total_out;
-+
-+ up(&msblk->read_data_mutex);
-+ }
-+
-+ if (next_index)
-+ *next_index = index + c_byte + (length ? 0 :
-+ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
-+ ? 3 : 2));
-+ return bytes;
-+
-+block_release:
-+ while (--b >= 0)
-+ brelse(bh[b]);
-+
-+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->u.squashfs_sb;
-+ 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;
-+
-+ down(&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);
-+ up(&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");
-+ up(&msblk->block_cache_mutex);
-+ goto out;
-+ }
-+ }
-+
-+ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
-+ up(&msblk->block_cache_mutex);
-+
-+ if (!(msblk->block_cache[i].length =
-+ squashfs_read_data(s,
-+ msblk->block_cache[i].data,
-+ block, 0, &next_index))) {
-+ ERROR("Unable to read cache block [%llx:%x]\n",
-+ block, offset);
-+ goto out;
-+ }
-+
-+ down(&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) {
-+ up(&msblk->block_cache_mutex);
-+ continue;
-+ }
-+
-+ if ((bytes = msblk->block_cache[i].length - offset) >= 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;
-+ }
-+ up(&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;
-+ up(&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->u.squashfs_sb;
-+ 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)
-+{
-+ down(&msblk->fragment_mutex);
-+ fragment->locked --;
-+ wake_up(&msblk->fragment_wait_queue);
-+ up(&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->u.squashfs_sb;
-+
-+ while ( 1 ) {
-+ down(&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);
-+ up(&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");
-+ up(&msblk->fragment_mutex);
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].locked = 1;
-+ up(&msblk->fragment_mutex);
-+
-+ if (!(msblk->fragment[i].length = squashfs_read_data(s,
-+ msblk->fragment[i].data,
-+ start_block, length, NULL))) {
-+ ERROR("Unable to read fragment cache block "
-+ "[%llx]\n", start_block);
-+ msblk->fragment[i].locked = 0;
-+ goto out;
-+ }
-+
-+ 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);
-+ break;
-+ }
-+
-+ msblk->fragment[i].locked++;
-+ up(&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 struct inode *squashfs_new_inode(struct super_block *s,
-+ struct squashfs_base_inode_header *inodeb)
-+{
-+ struct squashfs_sb_info *msblk = &s->u.squashfs_sb;
-+ struct inode *i = new_inode(s);
-+
-+ if (i) {
-+ i->i_ino = inodeb->inode_number;
-+ i->i_mtime = inodeb->mtime;
-+ i->i_atime = inodeb->mtime;
-+ i->i_ctime = 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];
-+ }
-+
-+ return i;
-+}
-+
-+
-+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode)
-+{
-+ struct inode *i;
-+ struct squashfs_sb_info *msblk = &s->u.squashfs_sb;
-+ 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_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(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ 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;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ 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;
-+ i->i_blksize = PAGE_CACHE_SIZE;
-+ 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;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ 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;
-+ i->i_blksize = PAGE_CACHE_SIZE;
-+ 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;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ 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;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ 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;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ 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;
-+
-+ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ 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, 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;
-+
-+ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ 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;
-+ }
-+
-+ insert_inode_hash(i);
-+ return i;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
-+
-+failed_read1:
-+ return NULL;
-+}
-+
-+
-+int read_fragment_index_table(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = &s->u.squashfs_sb;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ if (!(msblk->fragment_index = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ 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->iget = squashfs_iget;
-+ 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 struct super_block *squashfs_read_super(struct super_block *s,
-+ void *data, int silent)
-+{
-+ kdev_t dev = s->s_dev;
-+ struct squashfs_sb_info *msblk = &s->u.squashfs_sb;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i;
-+ struct inode *root;
-+
-+ msblk->devblksize = get_hardsect_size(dev);
-+ if(msblk->devblksize < BLOCK_SIZE)
-+ msblk->devblksize = BLOCK_SIZE;
-+ msblk->devblksize_log2 = ffz(~msblk->devblksize);
-+ set_blocksize(dev, msblk->devblksize);
-+ s->s_blocksize = msblk->devblksize;
-+ s->s_blocksize_bits = msblk->devblksize_log2;
-+
-+ init_MUTEX(&msblk->read_data_mutex);
-+ init_MUTEX(&msblk->read_page_mutex);
-+ init_MUTEX(&msblk->block_cache_mutex);
-+ init_MUTEX(&msblk->fragment_mutex);
-+
-+ init_waitqueue_head(&msblk->waitq);
-+ init_waitqueue_head(&msblk->fragment_wait_queue);
-+
-+ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
-+ sizeof(struct squashfs_super_block) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ 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(dev));
-+
-+ 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(dev));
-+ goto failed_mount;
-+ }
-+ }
-+
-+ /* Check the MAJOR & MINOR versions */
-+ if(!supported_squashfs_filesystem(msblk, silent))
-+ goto failed_mount;
-+
-+ TRACE("Found valid superblock on %s\n", bdevname(dev));
-+ 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_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_data block */
-+ msblk->read_size = (sblk->block_size < SQUASHFS_METADATA_SIZE) ?
-+ SQUASHFS_METADATA_SIZE :
-+ sblk->block_size;
-+
-+ if (!(msblk->read_data = kmalloc(msblk->read_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_data block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* 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)) {
-+ 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)) {
-+ 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 fragment index table */
-+ if(msblk->read_fragment_index_table(s) == 0)
-+ goto failed_mount;
-+
-+allocate_root:
-+ if ((root = (msblk->iget)(s, sblk->root_inode)) == NULL)
-+ goto failed_mount;
-+
-+ 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 s;
-+
-+failed_mount:
-+ kfree(msblk->fragment_index);
-+ kfree(msblk->fragment);
-+ kfree(msblk->uid);
-+ kfree(msblk->read_page);
-+ kfree(msblk->read_data);
-+ kfree(msblk->block_cache);
-+ kfree(msblk->fragment_index_2);
-+ return NULL;
-+}
-+
-+
-+static int squashfs_statfs(struct super_block *s, struct statfs *buf)
-+{
-+ struct squashfs_sb_info *msblk = &s->u.squashfs_sb;
-+ 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);
-+ SetPageUptodate(page);
-+ UnlockPage(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->u.squashfs_sb;
-+ int i;
-+
-+ down(&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:
-+ up(&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->u.squashfs_sb;
-+ struct meta_index *meta = NULL;
-+ int i;
-+
-+ down(&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:
-+ up(&msblk->meta_index_mutex);
-+ return meta;
-+}
-+
-+
-+void release_meta_index(struct inode *inode, struct meta_index *meta)
-+{
-+ meta->locked = 0;
-+}
-+
-+
-+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->u.squashfs_sb;
-+ 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->u.squashfs_sb;
-+ 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 {
-+ 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->u.squashfs_sb;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char block_list[SIZE];
-+ 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 (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;
-+
-+ down(&msblk->read_page_mutex);
-+
-+ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
-+ block, bsize, NULL))) {
-+ ERROR("Unable to read page, block %llx, size %x\n", block,
-+ bsize);
-+ up(&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 available_bytes = (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, available_bytes);
-+
-+ if (i == page->index) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memcpy(pageaddr, data_ptr + byte_offset,
-+ available_bytes);
-+ memset(pageaddr + available_bytes, 0,
-+ PAGE_CACHE_SIZE - available_bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ UnlockPage(page);
-+ } else if ((push_page =
-+ grab_cache_page_nowait(page->mapping, i))) {
-+ pageaddr = kmap_atomic(push_page, KM_USER0);
-+
-+ memcpy(pageaddr, data_ptr + byte_offset,
-+ available_bytes);
-+ memset(pageaddr + available_bytes, 0,
-+ PAGE_CACHE_SIZE - available_bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(push_page);
-+ SetPageUptodate(push_page);
-+ UnlockPage(push_page);
-+ 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))
-+ up(&msblk->read_page_mutex);
-+ else
-+ release_cached_fragment(msblk, fragment);
-+
-+ 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);
-+ UnlockPage(page);
-+
-+ 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->u.squashfs_sb;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char block_list[SIZE];
-+ 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)) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ 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);
-+
-+ down(&msblk->read_page_mutex);
-+ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
-+ bsize, NULL);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ if (bytes)
-+ memcpy(pageaddr, msblk->read_page, bytes);
-+ else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ block, bsize);
-+ up(&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);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ if (fragment) {
-+ bytes = i_size_read(inode) & (sblk->block_size - 1);
-+ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
-+ u.s1.fragment_offset, bytes);
-+ 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:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ UnlockPage(page);
-+
-+ 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->u.squashfs_sb;
-+ 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->u.squashfs_sb;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ char buffer[sizeof(struct squashfs_dir_index) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_index *index = (struct squashfs_dir_index *) buffer;
-+ char str[SQUASHFS_NAME_LEN + 1];
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ 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;
-+ 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->u.squashfs_sb;
-+ 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, dirs_read = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
-+
-+ TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
-+
-+ 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;
-+ dirs_read++;
-+ }
-+
-+ 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;
-+ dirs_read++;
-+ }
-+ }
-+
-+finish:
-+ return dirs_read;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry)
-+{
-+ 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->u.squashfs_sb;
-+ 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;
-+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN];
-+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ 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 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_loop;
-+
-+ 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 = (msblk->iget)(i->i_sb, ino);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ 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;
-+}
-+
-+
-+static void squashfs_put_super(struct super_block *s)
-+{
-+ int i;
-+
-+ struct squashfs_sb_info *sbi = &s->u.squashfs_sb;
-+ 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_data);
-+ kfree(sbi->read_page);
-+ kfree(sbi->uid);
-+ kfree(sbi->fragment_index);
-+ kfree(sbi->fragment_index_2);
-+ sbi->block_cache = NULL;
-+ sbi->uid = NULL;
-+ sbi->read_data = NULL;
-+ sbi->read_page = NULL;
-+ sbi->fragment = NULL;
-+ sbi->fragment_index = NULL;
-+ sbi->fragment_index_2 = NULL;
-+}
-+
-+
-+static int __init init_squashfs_fs(void)
-+{
-+
-+ printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
-+ "Phillip Lougher\n");
-+
-+ if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
-+ ERROR("Failed to allocate zlib workspace\n");
-+ return -ENOMEM;
-+ }
-+ return register_filesystem(&squashfs_fs_type);
-+}
-+
-+
-+static void __exit exit_squashfs_fs(void)
-+{
-+ vfree(stream.workspace);
-+ unregister_filesystem(&squashfs_fs_type);
-+}
-+
-+
-+EXPORT_NO_SYMBOLS;
-+
-+module_init(init_squashfs_fs);
-+module_exit(exit_squashfs_fs);
-+MODULE_DESCRIPTION("squashfs, a compressed read-only filesystem");
-+MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
-+MODULE_LICENSE("GPL");
-diff --new-file -urp linux-2.4.32/fs/squashfs/Makefile linux-2.4.32-squashfs3.0/fs/squashfs/Makefile
---- linux-2.4.32/fs/squashfs/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-squashfs3.0/fs/squashfs/Makefile 2006-03-07 21:12:36.000000000 +0000
-@@ -0,0 +1,11 @@
-+#
-+# Makefile for the linux squashfs routines.
-+#
-+
-+O_TARGET := squashfs.o
-+
-+obj-y := inode.o squashfs2_0.o
-+
-+obj-m := $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff --new-file -urp linux-2.4.32/fs/squashfs/squashfs2_0.c linux-2.4.32-squashfs3.0/fs/squashfs/squashfs2_0.c
---- linux-2.4.32/fs/squashfs/squashfs2_0.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-squashfs3.0/fs/squashfs/squashfs2_0.c 2006-03-07 21:12:36.000000000 +0000
-@@ -0,0 +1,751 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * 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/types.h>
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/smp_lock.h>
-+#include <linux/locks.h>
-+#include <linux/init.h>
-+#include <linux/dcache.h>
-+#include <linux/wait.h>
-+#include <linux/zlib.h>
-+#include <linux/blkdev.h>
-+#include <linux/vmalloc.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.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 *i, struct dentry *dentry);
-+
-+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->u.squashfs_sb;
-+ 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)) {
-+ 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->u.squashfs_sb;
-+ 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 struct inode *squashfs_new_inode(struct super_block *s,
-+ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
-+{
-+ struct squashfs_sb_info *msblk = &s->u.squashfs_sb;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ struct inode *i = new_inode(s);
-+
-+ if (i) {
-+ i->i_ino = ino;
-+ i->i_mtime = sblk->mkfs_time;
-+ i->i_atime = sblk->mkfs_time;
-+ i->i_ctime = 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];
-+ }
-+
-+ return i;
-+}
-+
-+
-+static struct inode *squashfs_iget_2(struct super_block *s, squashfs_inode_t inode)
-+{
-+ struct inode *i;
-+ struct squashfs_sb_info *msblk = &s->u.squashfs_sb;
-+ 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 = SQUASHFS_MK_VFS_INODE(block
-+ - sblk->inode_table_start, offset);
-+ 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;
-+
-+ 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;
-+
-+ 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;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_mtime = inodep->mtime;
-+ i->i_atime = inodep->mtime;
-+ i->i_ctime = inodep->mtime;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ i->i_blksize = PAGE_CACHE_SIZE;
-+ 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;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ 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 = inodep->mtime;
-+ i->i_atime = inodep->mtime;
-+ i->i_ctime = 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;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ 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 = inodep->mtime;
-+ i->i_atime = inodep->mtime;
-+ i->i_ctime = 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;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ 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;
-+
-+ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode, 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: {
-+ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ 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;
-+ }
-+
-+ insert_inode_hash(i);
-+ return i;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%x:%x]\n", block, offset);
-+
-+failed_read1:
-+ return NULL;
-+}
-+
-+
-+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->u.squashfs_sb;
-+ 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->u.squashfs_sb;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ char buffer[sizeof(struct squashfs_dir_index_2) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_index_2 *index = (struct squashfs_dir_index_2 *) buffer;
-+ char str[SQUASHFS_NAME_LEN + 1];
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ 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;
-+ 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->u.squashfs_sb;
-+ 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, dirs_read = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
-+
-+ TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
-+
-+ 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;
-+ dirs_read++;
-+ }
-+ }
-+
-+finish:
-+ return dirs_read;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry)
-+{
-+ 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->u.squashfs_sb;
-+ 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;
-+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN];
-+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
-+ int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ 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);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %d\n", name,
-+ dirh.start_block, dire->offset, ino);
-+
-+ inode = (msblk->iget)(i->i_sb, ino);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ 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->iget = squashfs_iget_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 --new-file -urp linux-2.4.32/fs/squashfs/squashfs.h linux-2.4.32-squashfs3.0/fs/squashfs/squashfs.h
---- linux-2.4.32/fs/squashfs/squashfs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-squashfs3.0/fs/squashfs/squashfs.h 2006-03-07 21:12:36.000000000 +0000
-@@ -0,0 +1,85 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * 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)
-+
-+#define SQUASHFS_I(INO) (&INO->u.squashfs_i)
-+
-+#define i_size_read(INO) (INO->i_size)
-+
-+#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);
-+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 address_space_operations squashfs_symlink_aops;
-+extern struct address_space_operations squashfs_aops;
-+extern struct address_space_operations squashfs_aops_4K;
-+extern struct file_operations squashfs_dir_ops;
-+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 --new-file -urp linux-2.4.32/include/linux/fs.h linux-2.4.32-squashfs3.0/include/linux/fs.h
---- linux-2.4.32/include/linux/fs.h 2005-04-04 02:42:20.000000000 +0100
-+++ linux-2.4.32-squashfs3.0/include/linux/fs.h 2006-03-07 21:12:36.000000000 +0000
-@@ -324,6 +324,7 @@ extern void set_bh_page(struct buffer_he
- #include <linux/usbdev_fs_i.h>
- #include <linux/jffs2_fs_i.h>
- #include <linux/cramfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-
- /*
- * Attribute flags. These should be or-ed together to figure out what
-@@ -519,6 +520,7 @@ struct inode {
- struct socket socket_i;
- struct usbdev_inode_info usbdev_i;
- struct jffs2_inode_info jffs2_i;
-+ struct squashfs_inode_info squashfs_i;
- void *generic_ip;
- } u;
- };
-@@ -734,6 +736,7 @@ struct nameidata {
- #include <linux/usbdev_fs_sb.h>
- #include <linux/cramfs_fs_sb.h>
- #include <linux/jffs2_fs_sb.h>
-+#include <linux/squashfs_fs_sb.h>
-
- extern struct list_head super_blocks;
- extern spinlock_t sb_lock;
-@@ -793,6 +796,7 @@ struct super_block {
- struct usbdev_sb_info usbdevfs_sb;
- struct jffs2_sb_info jffs2_sb;
- struct cramfs_sb_info cramfs_sb;
-+ struct squashfs_sb_info squashfs_sb;
- void *generic_sbp;
- } u;
- /*
-diff --new-file -urp linux-2.4.32/include/linux/squashfs_fs.h linux-2.4.32-squashfs3.0/include/linux/squashfs_fs.h
---- linux-2.4.32/include/linux/squashfs_fs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-squashfs3.0/include/linux/squashfs_fs.h 2006-03-07 21:12:36.000000000 +0000
-@@ -0,0 +1,915 @@
-+#ifndef SQUASHFS_FS
-+#define SQUASHFS_FS
-+
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * 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
-+#ifdef CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
-+#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
-+#else
-+#define SQUASHFS_CACHED_FRAGMENTS 3
-+#endif
-+#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_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_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_CHECK)
-+
-+#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
-+ duplicate_checking) (noi | (nod << 1) | (check_data << 2) \
-+ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
-+ (duplicate_checking << 6))
-+
-+/* 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))
-+
-+/* 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 unused;
-+} __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 unused;
-+} __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)->unused, 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_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)
-+
-+#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 --new-file -urp linux-2.4.32/include/linux/squashfs_fs_i.h linux-2.4.32-squashfs3.0/include/linux/squashfs_fs_i.h
---- linux-2.4.32/include/linux/squashfs_fs_i.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-squashfs3.0/include/linux/squashfs_fs_i.h 2006-03-07 21:12:36.000000000 +0000
-@@ -0,0 +1,44 @@
-+#ifndef SQUASHFS_FS_I
-+#define SQUASHFS_FS_I
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * 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;
-+};
-+#endif
-diff --new-file -urp linux-2.4.32/include/linux/squashfs_fs_sb.h linux-2.4.32-squashfs3.0/include/linux/squashfs_fs_sb.h
---- linux-2.4.32/include/linux/squashfs_fs_sb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-squashfs3.0/include/linux/squashfs_fs_sb.h 2006-03-07 21:12:36.000000000 +0000
-@@ -0,0 +1,74 @@
-+#ifndef SQUASHFS_FS_SB
-+#define SQUASHFS_FS_SB
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * 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;
-+ unsigned int read_size;
-+ char *read_data;
-+ char *read_page;
-+ struct semaphore read_data_mutex;
-+ struct semaphore read_page_mutex;
-+ struct semaphore block_cache_mutex;
-+ struct semaphore fragment_mutex;
-+ struct semaphore meta_index_mutex;
-+ wait_queue_head_t waitq;
-+ wait_queue_head_t fragment_wait_queue;
-+ struct meta_index *meta_index;
-+ struct inode *(*iget)(struct super_block *s, 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 --new-file -urp linux-2.4.32/init/do_mounts.c linux-2.4.32-squashfs3.0/init/do_mounts.c
---- linux-2.4.32/init/do_mounts.c 2003-11-28 18:26:21.000000000 +0000
-+++ linux-2.4.32-squashfs3.0/init/do_mounts.c 2006-03-07 21:12:36.000000000 +0000
-@@ -15,6 +15,7 @@
- #include <linux/minix_fs.h>
- #include <linux/ext2_fs.h>
- #include <linux/romfs_fs.h>
-+#include <linux/squashfs_fs.h>
- #include <linux/cramfs_fs.h>
-
- #define BUILD_CRAMDISK
-@@ -476,6 +477,7 @@ static int __init crd_load(int in_fd, in
- * minix
- * ext2
- * romfs
-+ * squashfs
- * cramfs
- * gzip
- */
-@@ -486,6 +488,7 @@ identify_ramdisk_image(int fd, int start
- struct minix_super_block *minixsb;
- struct ext2_super_block *ext2sb;
- struct romfs_super_block *romfsb;
-+ struct squashfs_super_block *squashfsb;
- struct cramfs_super *cramfsb;
- int nblocks = -1;
- unsigned char *buf;
-@@ -497,6 +500,7 @@ identify_ramdisk_image(int fd, int start
- minixsb = (struct minix_super_block *) buf;
- ext2sb = (struct ext2_super_block *) buf;
- romfsb = (struct romfs_super_block *) buf;
-+ squashfsb = (struct squashfs_super_block *) buf;
- cramfsb = (struct cramfs_super *) buf;
- memset(buf, 0xe5, size);
-
-@@ -535,6 +539,15 @@ 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);
-+ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
-+ goto done;
-+ }
-+
- /*
- * Read block 1 to test for minix and ext2 superblock
- */
-diff --new-file -urp linux-2.4.32/lib/Config.in linux-2.4.32-squashfs3.0/lib/Config.in
---- linux-2.4.32/lib/Config.in 2003-11-28 18:26:21.000000000 +0000
-+++ linux-2.4.32-squashfs3.0/lib/Config.in 2006-03-07 21:12:36.000000000 +0000
-@@ -10,6 +10,7 @@ tristate 'CRC32 functions' CONFIG_CRC32
- # Do we need the compression support?
- #
- if [ "$CONFIG_CRAMFS" = "y" -o \
-+ "$CONFIG_SQUASHFS" = "y" -o \
- "$CONFIG_PPP_DEFLATE" = "y" -o \
- "$CONFIG_CRYPTO_DEFLATE" = "y" -o \
- "$CONFIG_JFFS2_FS" = "y" -o \
-@@ -17,6 +18,7 @@ if [ "$CONFIG_CRAMFS" = "y" -o \
- define_tristate CONFIG_ZLIB_INFLATE y
- else
- if [ "$CONFIG_CRAMFS" = "m" -o \
-+ "$CONFIG_SQUASHFS" = "m" -o \
- "$CONFIG_PPP_DEFLATE" = "m" -o \
- "$CONFIG_CRYPTO_DEFLATE" = "m" -o \
- "$CONFIG_JFFS2_FS" = "m" -o \
diff --git a/openwrt/target/linux/generic-2.4/patches/002-squashfs_lzma.patch b/openwrt/target/linux/generic-2.4/patches/002-squashfs_lzma.patch
deleted file mode 100644
index d534154871..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/002-squashfs_lzma.patch
+++ /dev/null
@@ -1,883 +0,0 @@
-diff -Nur linux-2.4.32/fs/squashfs/inode.c linux-2.4.32-owrt/fs/squashfs/inode.c
---- linux-2.4.32/fs/squashfs/inode.c 2006-03-21 13:06:10.000000000 +0100
-+++ linux-2.4.32-owrt/fs/squashfs/inode.c 2006-03-21 13:12:07.000000000 +0100
-@@ -4,6 +4,9 @@
- * Copyright (c) 2002, 2003, 2004, 2005, 2006
- * Phillip Lougher <phillip@lougher.org.uk>
- *
-+ * LZMA decompressor support added by Oleg I. Vdovikin
-+ * Copyright (c) 2005 Oleg I.Vdovikin <oleg@cs.msu.su>
-+ *
- * 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,
-@@ -21,6 +24,7 @@
- * inode.c
- */
-
-+#define SQUASHFS_LZMA
- #include <linux/types.h>
- #include <linux/squashfs_fs.h>
- #include <linux/module.h>
-@@ -40,6 +44,20 @@
-
- #include "squashfs.h"
-
-+#ifdef SQUASHFS_LZMA
-+#include "LzmaDecode.h"
-+
-+/* default LZMA settings, should be in sync with mksquashfs */
-+#define LZMA_LC 3
-+#define LZMA_LP 0
-+#define LZMA_PB 2
-+
-+#define LZMA_WORKSPACE_SIZE ((LZMA_BASE_SIZE + \
-+ (LZMA_LIT_SIZE << (LZMA_LC + LZMA_LP))) * sizeof(CProb))
-+
-+#endif
-+
-+
- static struct super_block *squashfs_read_super(struct super_block *, void *, int);
- static void squashfs_put_super(struct super_block *);
- static int squashfs_statfs(struct super_block *, struct statfs *);
-@@ -53,7 +71,11 @@
- int readahead_blks, char *block_list,
- unsigned short **block_p, unsigned int *bsize);
-
-+#ifdef SQUASHFS_LZMA
-+static unsigned char lzma_workspace[LZMA_WORKSPACE_SIZE];
-+#else
- static z_stream stream;
-+#endif
-
- static DECLARE_FSTYPE_DEV(squashfs_fs_type, "squashfs", squashfs_read_super);
-
-@@ -229,6 +251,15 @@
- if (compressed) {
- int zlib_err;
-
-+#ifdef SQUASHFS_LZMA
-+ if ((zlib_err = LzmaDecode(lzma_workspace,
-+ LZMA_WORKSPACE_SIZE, LZMA_LC, LZMA_LP, LZMA_PB,
-+ c_buffer, c_byte, buffer, msblk->read_size, &bytes)) != LZMA_RESULT_OK)
-+ {
-+ ERROR("lzma returned unexpected result 0x%x\n", zlib_err);
-+ bytes = 0;
-+ }
-+#else
- stream.next_in = c_buffer;
- stream.avail_in = c_byte;
- stream.next_out = buffer;
-@@ -243,6 +274,7 @@
- bytes = 0;
- } else
- bytes = stream.total_out;
-+#endif
-
- up(&msblk->read_data_mutex);
- }
-@@ -2004,17 +2036,21 @@
- printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
- "Phillip Lougher\n");
-
-+#ifndef SQUASHFS_LZMA
- if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
- ERROR("Failed to allocate zlib workspace\n");
- return -ENOMEM;
- }
-+#endif
- return register_filesystem(&squashfs_fs_type);
- }
-
-
- static void __exit exit_squashfs_fs(void)
- {
-+#ifndef SQUASHFS_LZMA
- vfree(stream.workspace);
-+#endif
- unregister_filesystem(&squashfs_fs_type);
- }
-
-diff -Nur linux-2.4.32/fs/squashfs/LzmaDecode.c linux-2.4.32-owrt/fs/squashfs/LzmaDecode.c
---- linux-2.4.32/fs/squashfs/LzmaDecode.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-owrt/fs/squashfs/LzmaDecode.c 2006-03-21 13:06:33.000000000 +0100
-@@ -0,0 +1,663 @@
-+/*
-+ LzmaDecode.c
-+ LZMA Decoder
-+
-+ LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25)
-+ http://www.7-zip.org/
-+
-+ LZMA SDK is licensed under two licenses:
-+ 1) GNU Lesser General Public License (GNU LGPL)
-+ 2) Common Public License (CPL)
-+ It means that you can select one of these two licenses and
-+ follow rules of that license.
-+
-+ SPECIAL EXCEPTION:
-+ Igor Pavlov, as the author of this code, expressly permits you to
-+ statically or dynamically link your code (or bind by name) to the
-+ interfaces of this file without subjecting your linked code to the
-+ terms of the CPL or GNU LGPL. Any modifications or additions
-+ to this file, however, are subject to the LGPL or CPL terms.
-+*/
-+
-+#include "LzmaDecode.h"
-+
-+#ifndef Byte
-+#define Byte unsigned char
-+#endif
-+
-+#define kNumTopBits 24
-+#define kTopValue ((UInt32)1 << kNumTopBits)
-+
-+#define kNumBitModelTotalBits 11
-+#define kBitModelTotal (1 << kNumBitModelTotalBits)
-+#define kNumMoveBits 5
-+
-+typedef struct _CRangeDecoder
-+{
-+ Byte *Buffer;
-+ Byte *BufferLim;
-+ UInt32 Range;
-+ UInt32 Code;
-+ #ifdef _LZMA_IN_CB
-+ ILzmaInCallback *InCallback;
-+ int Result;
-+ #endif
-+ int ExtraBytes;
-+} CRangeDecoder;
-+
-+Byte RangeDecoderReadByte(CRangeDecoder *rd)
-+{
-+ if (rd->Buffer == rd->BufferLim)
-+ {
-+ #ifdef _LZMA_IN_CB
-+ UInt32 size;
-+ rd->Result = rd->InCallback->Read(rd->InCallback, &rd->Buffer, &size);
-+ rd->BufferLim = rd->Buffer + size;
-+ if (size == 0)
-+ #endif
-+ {
-+ rd->ExtraBytes = 1;
-+ return 0xFF;
-+ }
-+ }
-+ return (*rd->Buffer++);
-+}
-+
-+/* #define ReadByte (*rd->Buffer++) */
-+#define ReadByte (RangeDecoderReadByte(rd))
-+
-+void RangeDecoderInit(CRangeDecoder *rd,
-+ #ifdef _LZMA_IN_CB
-+ ILzmaInCallback *inCallback
-+ #else
-+ Byte *stream, UInt32 bufferSize
-+ #endif
-+ )
-+{
-+ int i;
-+ #ifdef _LZMA_IN_CB
-+ rd->InCallback = inCallback;
-+ rd->Buffer = rd->BufferLim = 0;
-+ #else
-+ rd->Buffer = stream;
-+ rd->BufferLim = stream + bufferSize;
-+ #endif
-+ rd->ExtraBytes = 0;
-+ rd->Code = 0;
-+ rd->Range = (0xFFFFFFFF);
-+ for(i = 0; i < 5; i++)
-+ rd->Code = (rd->Code << 8) | ReadByte;
-+}
-+
-+#define RC_INIT_VAR UInt32 range = rd->Range; UInt32 code = rd->Code;
-+#define RC_FLUSH_VAR rd->Range = range; rd->Code = code;
-+#define RC_NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | ReadByte; }
-+
-+UInt32 RangeDecoderDecodeDirectBits(CRangeDecoder *rd, int numTotalBits)
-+{
-+ RC_INIT_VAR
-+ UInt32 result = 0;
-+ int i;
-+ for (i = numTotalBits; i > 0; i--)
-+ {
-+ /* UInt32 t; */
-+ range >>= 1;
-+
-+ result <<= 1;
-+ if (code >= range)
-+ {
-+ code -= range;
-+ result |= 1;
-+ }
-+ /*
-+ t = (code - range) >> 31;
-+ t &= 1;
-+ code -= range & (t - 1);
-+ result = (result + result) | (1 - t);
-+ */
-+ RC_NORMALIZE
-+ }
-+ RC_FLUSH_VAR
-+ return result;
-+}
-+
-+int RangeDecoderBitDecode(CProb *prob, CRangeDecoder *rd)
-+{
-+ UInt32 bound = (rd->Range >> kNumBitModelTotalBits) * *prob;
-+ if (rd->Code < bound)
-+ {
-+ rd->Range = bound;
-+ *prob += (kBitModelTotal - *prob) >> kNumMoveBits;
-+ if (rd->Range < kTopValue)
-+ {
-+ rd->Code = (rd->Code << 8) | ReadByte;
-+ rd->Range <<= 8;
-+ }
-+ return 0;
-+ }
-+ else
-+ {
-+ rd->Range -= bound;
-+ rd->Code -= bound;
-+ *prob -= (*prob) >> kNumMoveBits;
-+ if (rd->Range < kTopValue)
-+ {
-+ rd->Code = (rd->Code << 8) | ReadByte;
-+ rd->Range <<= 8;
-+ }
-+ return 1;
-+ }
-+}
-+
-+#define RC_GET_BIT2(prob, mi, A0, A1) \
-+ UInt32 bound = (range >> kNumBitModelTotalBits) * *prob; \
-+ if (code < bound) \
-+ { A0; range = bound; *prob += (kBitModelTotal - *prob) >> kNumMoveBits; mi <<= 1; } \
-+ else \
-+ { A1; range -= bound; code -= bound; *prob -= (*prob) >> kNumMoveBits; mi = (mi + mi) + 1; } \
-+ RC_NORMALIZE
-+
-+#define RC_GET_BIT(prob, mi) RC_GET_BIT2(prob, mi, ; , ;)
-+
-+int RangeDecoderBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd)
-+{
-+ int mi = 1;
-+ int i;
-+ #ifdef _LZMA_LOC_OPT
-+ RC_INIT_VAR
-+ #endif
-+ for(i = numLevels; i > 0; i--)
-+ {
-+ #ifdef _LZMA_LOC_OPT
-+ CProb *prob = probs + mi;
-+ RC_GET_BIT(prob, mi)
-+ #else
-+ mi = (mi + mi) + RangeDecoderBitDecode(probs + mi, rd);
-+ #endif
-+ }
-+ #ifdef _LZMA_LOC_OPT
-+ RC_FLUSH_VAR
-+ #endif
-+ return mi - (1 << numLevels);
-+}
-+
-+int RangeDecoderReverseBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd)
-+{
-+ int mi = 1;
-+ int i;
-+ int symbol = 0;
-+ #ifdef _LZMA_LOC_OPT
-+ RC_INIT_VAR
-+ #endif
-+ for(i = 0; i < numLevels; i++)
-+ {
-+ #ifdef _LZMA_LOC_OPT
-+ CProb *prob = probs + mi;
-+ RC_GET_BIT2(prob, mi, ; , symbol |= (1 << i))
-+ #else
-+ int bit = RangeDecoderBitDecode(probs + mi, rd);
-+ mi = mi + mi + bit;
-+ symbol |= (bit << i);
-+ #endif
-+ }
-+ #ifdef _LZMA_LOC_OPT
-+ RC_FLUSH_VAR
-+ #endif
-+ return symbol;
-+}
-+
-+Byte LzmaLiteralDecode(CProb *probs, CRangeDecoder *rd)
-+{
-+ int symbol = 1;
-+ #ifdef _LZMA_LOC_OPT
-+ RC_INIT_VAR
-+ #endif
-+ do
-+ {
-+ #ifdef _LZMA_LOC_OPT
-+ CProb *prob = probs + symbol;
-+ RC_GET_BIT(prob, symbol)
-+ #else
-+ symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd);
-+ #endif
-+ }
-+ while (symbol < 0x100);
-+ #ifdef _LZMA_LOC_OPT
-+ RC_FLUSH_VAR
-+ #endif
-+ return symbol;
-+}
-+
-+Byte LzmaLiteralDecodeMatch(CProb *probs, CRangeDecoder *rd, Byte matchByte)
-+{
-+ int symbol = 1;
-+ #ifdef _LZMA_LOC_OPT
-+ RC_INIT_VAR
-+ #endif
-+ do
-+ {
-+ int bit;
-+ int matchBit = (matchByte >> 7) & 1;
-+ matchByte <<= 1;
-+ #ifdef _LZMA_LOC_OPT
-+ {
-+ CProb *prob = probs + ((1 + matchBit) << 8) + symbol;
-+ RC_GET_BIT2(prob, symbol, bit = 0, bit = 1)
-+ }
-+ #else
-+ bit = RangeDecoderBitDecode(probs + ((1 + matchBit) << 8) + symbol, rd);
-+ symbol = (symbol << 1) | bit;
-+ #endif
-+ if (matchBit != bit)
-+ {
-+ while (symbol < 0x100)
-+ {
-+ #ifdef _LZMA_LOC_OPT
-+ CProb *prob = probs + symbol;
-+ RC_GET_BIT(prob, symbol)
-+ #else
-+ symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd);
-+ #endif
-+ }
-+ break;
-+ }
-+ }
-+ while (symbol < 0x100);
-+ #ifdef _LZMA_LOC_OPT
-+ RC_FLUSH_VAR
-+ #endif
-+ return symbol;
-+}
-+
-+#define kNumPosBitsMax 4
-+#define kNumPosStatesMax (1 << kNumPosBitsMax)
-+
-+#define kLenNumLowBits 3
-+#define kLenNumLowSymbols (1 << kLenNumLowBits)
-+#define kLenNumMidBits 3
-+#define kLenNumMidSymbols (1 << kLenNumMidBits)
-+#define kLenNumHighBits 8
-+#define kLenNumHighSymbols (1 << kLenNumHighBits)
-+
-+#define LenChoice 0
-+#define LenChoice2 (LenChoice + 1)
-+#define LenLow (LenChoice2 + 1)
-+#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
-+#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
-+#define kNumLenProbs (LenHigh + kLenNumHighSymbols)
-+
-+int LzmaLenDecode(CProb *p, CRangeDecoder *rd, int posState)
-+{
-+ if(RangeDecoderBitDecode(p + LenChoice, rd) == 0)
-+ return RangeDecoderBitTreeDecode(p + LenLow +
-+ (posState << kLenNumLowBits), kLenNumLowBits, rd);
-+ if(RangeDecoderBitDecode(p + LenChoice2, rd) == 0)
-+ return kLenNumLowSymbols + RangeDecoderBitTreeDecode(p + LenMid +
-+ (posState << kLenNumMidBits), kLenNumMidBits, rd);
-+ return kLenNumLowSymbols + kLenNumMidSymbols +
-+ RangeDecoderBitTreeDecode(p + LenHigh, kLenNumHighBits, rd);
-+}
-+
-+#define kNumStates 12
-+
-+#define kStartPosModelIndex 4
-+#define kEndPosModelIndex 14
-+#define kNumFullDistances (1 << (kEndPosModelIndex >> 1))
-+
-+#define kNumPosSlotBits 6
-+#define kNumLenToPosStates 4
-+
-+#define kNumAlignBits 4
-+#define kAlignTableSize (1 << kNumAlignBits)
-+
-+#define kMatchMinLen 2
-+
-+#define IsMatch 0
-+#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax))
-+#define IsRepG0 (IsRep + kNumStates)
-+#define IsRepG1 (IsRepG0 + kNumStates)
-+#define IsRepG2 (IsRepG1 + kNumStates)
-+#define IsRep0Long (IsRepG2 + kNumStates)
-+#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax))
-+#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
-+#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex)
-+#define LenCoder (Align + kAlignTableSize)
-+#define RepLenCoder (LenCoder + kNumLenProbs)
-+#define Literal (RepLenCoder + kNumLenProbs)
-+
-+#if Literal != LZMA_BASE_SIZE
-+StopCompilingDueBUG
-+#endif
-+
-+#ifdef _LZMA_OUT_READ
-+
-+typedef struct _LzmaVarState
-+{
-+ CRangeDecoder RangeDecoder;
-+ Byte *Dictionary;
-+ UInt32 DictionarySize;
-+ UInt32 DictionaryPos;
-+ UInt32 GlobalPos;
-+ UInt32 Reps[4];
-+ int lc;
-+ int lp;
-+ int pb;
-+ int State;
-+ int PreviousIsMatch;
-+ int RemainLen;
-+} LzmaVarState;
-+
-+int LzmaDecoderInit(
-+ unsigned char *buffer, UInt32 bufferSize,
-+ int lc, int lp, int pb,
-+ unsigned char *dictionary, UInt32 dictionarySize,
-+ #ifdef _LZMA_IN_CB
-+ ILzmaInCallback *inCallback
-+ #else
-+ unsigned char *inStream, UInt32 inSize
-+ #endif
-+ )
-+{
-+ LzmaVarState *vs = (LzmaVarState *)buffer;
-+ CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
-+ UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
-+ UInt32 i;
-+ if (bufferSize < numProbs * sizeof(CProb) + sizeof(LzmaVarState))
-+ return LZMA_RESULT_NOT_ENOUGH_MEM;
-+ vs->Dictionary = dictionary;
-+ vs->DictionarySize = dictionarySize;
-+ vs->DictionaryPos = 0;
-+ vs->GlobalPos = 0;
-+ vs->Reps[0] = vs->Reps[1] = vs->Reps[2] = vs->Reps[3] = 1;
-+ vs->lc = lc;
-+ vs->lp = lp;
-+ vs->pb = pb;
-+ vs->State = 0;
-+ vs->PreviousIsMatch = 0;
-+ vs->RemainLen = 0;
-+ dictionary[dictionarySize - 1] = 0;
-+ for (i = 0; i < numProbs; i++)
-+ p[i] = kBitModelTotal >> 1;
-+ RangeDecoderInit(&vs->RangeDecoder,
-+ #ifdef _LZMA_IN_CB
-+ inCallback
-+ #else
-+ inStream, inSize
-+ #endif
-+ );
-+ return LZMA_RESULT_OK;
-+}
-+
-+int LzmaDecode(unsigned char *buffer,
-+ unsigned char *outStream, UInt32 outSize,
-+ UInt32 *outSizeProcessed)
-+{
-+ LzmaVarState *vs = (LzmaVarState *)buffer;
-+ CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
-+ CRangeDecoder rd = vs->RangeDecoder;
-+ int state = vs->State;
-+ int previousIsMatch = vs->PreviousIsMatch;
-+ Byte previousByte;
-+ UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3];
-+ UInt32 nowPos = 0;
-+ UInt32 posStateMask = (1 << (vs->pb)) - 1;
-+ UInt32 literalPosMask = (1 << (vs->lp)) - 1;
-+ int lc = vs->lc;
-+ int len = vs->RemainLen;
-+ UInt32 globalPos = vs->GlobalPos;
-+
-+ Byte *dictionary = vs->Dictionary;
-+ UInt32 dictionarySize = vs->DictionarySize;
-+ UInt32 dictionaryPos = vs->DictionaryPos;
-+
-+ if (len == -1)
-+ {
-+ *outSizeProcessed = 0;
-+ return LZMA_RESULT_OK;
-+ }
-+
-+ while(len > 0 && nowPos < outSize)
-+ {
-+ UInt32 pos = dictionaryPos - rep0;
-+ if (pos >= dictionarySize)
-+ pos += dictionarySize;
-+ outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos];
-+ if (++dictionaryPos == dictionarySize)
-+ dictionaryPos = 0;
-+ len--;
-+ }
-+ if (dictionaryPos == 0)
-+ previousByte = dictionary[dictionarySize - 1];
-+ else
-+ previousByte = dictionary[dictionaryPos - 1];
-+#else
-+
-+int LzmaDecode(
-+ Byte *buffer, UInt32 bufferSize,
-+ int lc, int lp, int pb,
-+ #ifdef _LZMA_IN_CB
-+ ILzmaInCallback *inCallback,
-+ #else
-+ unsigned char *inStream, UInt32 inSize,
-+ #endif
-+ unsigned char *outStream, UInt32 outSize,
-+ UInt32 *outSizeProcessed)
-+{
-+ UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
-+ CProb *p = (CProb *)buffer;
-+ CRangeDecoder rd;
-+ UInt32 i;
-+ int state = 0;
-+ int previousIsMatch = 0;
-+ Byte previousByte = 0;
-+ UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1;
-+ UInt32 nowPos = 0;
-+ UInt32 posStateMask = (1 << pb) - 1;
-+ UInt32 literalPosMask = (1 << lp) - 1;
-+ int len = 0;
-+ if (bufferSize < numProbs * sizeof(CProb))
-+ return LZMA_RESULT_NOT_ENOUGH_MEM;
-+ for (i = 0; i < numProbs; i++)
-+ p[i] = kBitModelTotal >> 1;
-+ RangeDecoderInit(&rd,
-+ #ifdef _LZMA_IN_CB
-+ inCallback
-+ #else
-+ inStream, inSize
-+ #endif
-+ );
-+#endif
-+
-+ *outSizeProcessed = 0;
-+ while(nowPos < outSize)
-+ {
-+ int posState = (int)(
-+ (nowPos
-+ #ifdef _LZMA_OUT_READ
-+ + globalPos
-+ #endif
-+ )
-+ & posStateMask);
-+ #ifdef _LZMA_IN_CB
-+ if (rd.Result != LZMA_RESULT_OK)
-+ return rd.Result;
-+ #endif
-+ if (rd.ExtraBytes != 0)
-+ return LZMA_RESULT_DATA_ERROR;
-+ if (RangeDecoderBitDecode(p + IsMatch + (state << kNumPosBitsMax) + posState, &rd) == 0)
-+ {
-+ CProb *probs = p + Literal + (LZMA_LIT_SIZE *
-+ (((
-+ (nowPos
-+ #ifdef _LZMA_OUT_READ
-+ + globalPos
-+ #endif
-+ )
-+ & literalPosMask) << lc) + (previousByte >> (8 - lc))));
-+
-+ if (state < 4) state = 0;
-+ else if (state < 10) state -= 3;
-+ else state -= 6;
-+ if (previousIsMatch)
-+ {
-+ Byte matchByte;
-+ #ifdef _LZMA_OUT_READ
-+ UInt32 pos = dictionaryPos - rep0;
-+ if (pos >= dictionarySize)
-+ pos += dictionarySize;
-+ matchByte = dictionary[pos];
-+ #else
-+ matchByte = outStream[nowPos - rep0];
-+ #endif
-+ previousByte = LzmaLiteralDecodeMatch(probs, &rd, matchByte);
-+ previousIsMatch = 0;
-+ }
-+ else
-+ previousByte = LzmaLiteralDecode(probs, &rd);
-+ outStream[nowPos++] = previousByte;
-+ #ifdef _LZMA_OUT_READ
-+ dictionary[dictionaryPos] = previousByte;
-+ if (++dictionaryPos == dictionarySize)
-+ dictionaryPos = 0;
-+ #endif
-+ }
-+ else
-+ {
-+ previousIsMatch = 1;
-+ if (RangeDecoderBitDecode(p + IsRep + state, &rd) == 1)
-+ {
-+ if (RangeDecoderBitDecode(p + IsRepG0 + state, &rd) == 0)
-+ {
-+ if (RangeDecoderBitDecode(p + IsRep0Long + (state << kNumPosBitsMax) + posState, &rd) == 0)
-+ {
-+ #ifdef _LZMA_OUT_READ
-+ UInt32 pos;
-+ #endif
-+ if (
-+ (nowPos
-+ #ifdef _LZMA_OUT_READ
-+ + globalPos
-+ #endif
-+ )
-+ == 0)
-+ return LZMA_RESULT_DATA_ERROR;
-+ state = state < 7 ? 9 : 11;
-+ #ifdef _LZMA_OUT_READ
-+ pos = dictionaryPos - rep0;
-+ if (pos >= dictionarySize)
-+ pos += dictionarySize;
-+ previousByte = dictionary[pos];
-+ dictionary[dictionaryPos] = previousByte;
-+ if (++dictionaryPos == dictionarySize)
-+ dictionaryPos = 0;
-+ #else
-+ previousByte = outStream[nowPos - rep0];
-+ #endif
-+ outStream[nowPos++] = previousByte;
-+ continue;
-+ }
-+ }
-+ else
-+ {
-+ UInt32 distance;
-+ if(RangeDecoderBitDecode(p + IsRepG1 + state, &rd) == 0)
-+ distance = rep1;
-+ else
-+ {
-+ if(RangeDecoderBitDecode(p + IsRepG2 + state, &rd) == 0)
-+ distance = rep2;
-+ else
-+ {
-+ distance = rep3;
-+ rep3 = rep2;
-+ }
-+ rep2 = rep1;
-+ }
-+ rep1 = rep0;
-+ rep0 = distance;
-+ }
-+ len = LzmaLenDecode(p + RepLenCoder, &rd, posState);
-+ state = state < 7 ? 8 : 11;
-+ }
-+ else
-+ {
-+ int posSlot;
-+ rep3 = rep2;
-+ rep2 = rep1;
-+ rep1 = rep0;
-+ state = state < 7 ? 7 : 10;
-+ len = LzmaLenDecode(p + LenCoder, &rd, posState);
-+ posSlot = RangeDecoderBitTreeDecode(p + PosSlot +
-+ ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) <<
-+ kNumPosSlotBits), kNumPosSlotBits, &rd);
-+ if (posSlot >= kStartPosModelIndex)
-+ {
-+ int numDirectBits = ((posSlot >> 1) - 1);
-+ rep0 = ((2 | ((UInt32)posSlot & 1)) << numDirectBits);
-+ if (posSlot < kEndPosModelIndex)
-+ {
-+ rep0 += RangeDecoderReverseBitTreeDecode(
-+ p + SpecPos + rep0 - posSlot - 1, numDirectBits, &rd);
-+ }
-+ else
-+ {
-+ rep0 += RangeDecoderDecodeDirectBits(&rd,
-+ numDirectBits - kNumAlignBits) << kNumAlignBits;
-+ rep0 += RangeDecoderReverseBitTreeDecode(p + Align, kNumAlignBits, &rd);
-+ }
-+ }
-+ else
-+ rep0 = posSlot;
-+ rep0++;
-+ }
-+ if (rep0 == (UInt32)(0))
-+ {
-+ /* it's for stream version */
-+ len = -1;
-+ break;
-+ }
-+ if (rep0 > nowPos
-+ #ifdef _LZMA_OUT_READ
-+ + globalPos
-+ #endif
-+ )
-+ {
-+ return LZMA_RESULT_DATA_ERROR;
-+ }
-+ len += kMatchMinLen;
-+ do
-+ {
-+ #ifdef _LZMA_OUT_READ
-+ UInt32 pos = dictionaryPos - rep0;
-+ if (pos >= dictionarySize)
-+ pos += dictionarySize;
-+ previousByte = dictionary[pos];
-+ dictionary[dictionaryPos] = previousByte;
-+ if (++dictionaryPos == dictionarySize)
-+ dictionaryPos = 0;
-+ #else
-+ previousByte = outStream[nowPos - rep0];
-+ #endif
-+ outStream[nowPos++] = previousByte;
-+ len--;
-+ }
-+ while(len > 0 && nowPos < outSize);
-+ }
-+ }
-+
-+ #ifdef _LZMA_OUT_READ
-+ vs->RangeDecoder = rd;
-+ vs->DictionaryPos = dictionaryPos;
-+ vs->GlobalPos = globalPos + nowPos;
-+ vs->Reps[0] = rep0;
-+ vs->Reps[1] = rep1;
-+ vs->Reps[2] = rep2;
-+ vs->Reps[3] = rep3;
-+ vs->State = state;
-+ vs->PreviousIsMatch = previousIsMatch;
-+ vs->RemainLen = len;
-+ #endif
-+
-+ *outSizeProcessed = nowPos;
-+ return LZMA_RESULT_OK;
-+}
-diff -Nur linux-2.4.32/fs/squashfs/LzmaDecode.h linux-2.4.32-owrt/fs/squashfs/LzmaDecode.h
---- linux-2.4.32/fs/squashfs/LzmaDecode.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.32-owrt/fs/squashfs/LzmaDecode.h 2006-03-21 13:06:33.000000000 +0100
-@@ -0,0 +1,100 @@
-+/*
-+ LzmaDecode.h
-+ LZMA Decoder interface
-+
-+ LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25)
-+ http://www.7-zip.org/
-+
-+ LZMA SDK is licensed under two licenses:
-+ 1) GNU Lesser General Public License (GNU LGPL)
-+ 2) Common Public License (CPL)
-+ It means that you can select one of these two licenses and
-+ follow rules of that license.
-+
-+ SPECIAL EXCEPTION:
-+ Igor Pavlov, as the author of this code, expressly permits you to
-+ statically or dynamically link your code (or bind by name) to the
-+ interfaces of this file without subjecting your linked code to the
-+ terms of the CPL or GNU LGPL. Any modifications or additions
-+ to this file, however, are subject to the LGPL or CPL terms.
-+*/
-+
-+#ifndef __LZMADECODE_H
-+#define __LZMADECODE_H
-+
-+/* #define _LZMA_IN_CB */
-+/* Use callback for input data */
-+
-+/* #define _LZMA_OUT_READ */
-+/* Use read function for output data */
-+
-+/* #define _LZMA_PROB32 */
-+/* It can increase speed on some 32-bit CPUs,
-+ but memory usage will be doubled in that case */
-+
-+/* #define _LZMA_LOC_OPT */
-+/* Enable local speed optimizations inside code */
-+
-+#ifndef UInt32
-+#ifdef _LZMA_UINT32_IS_ULONG
-+#define UInt32 unsigned long
-+#else
-+#define UInt32 unsigned int
-+#endif
-+#endif
-+
-+#ifdef _LZMA_PROB32
-+#define CProb UInt32
-+#else
-+#define CProb unsigned short
-+#endif
-+
-+#define LZMA_RESULT_OK 0
-+#define LZMA_RESULT_DATA_ERROR 1
-+#define LZMA_RESULT_NOT_ENOUGH_MEM 2
-+
-+#ifdef _LZMA_IN_CB
-+typedef struct _ILzmaInCallback
-+{
-+ int (*Read)(void *object, unsigned char **buffer, UInt32 *bufferSize);
-+} ILzmaInCallback;
-+#endif
-+
-+#define LZMA_BASE_SIZE 1846
-+#define LZMA_LIT_SIZE 768
-+
-+/*
-+bufferSize = (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)))* sizeof(CProb)
-+bufferSize += 100 in case of _LZMA_OUT_READ
-+by default CProb is unsigned short,
-+but if specify _LZMA_PROB_32, CProb will be UInt32(unsigned int)
-+*/
-+
-+#ifdef _LZMA_OUT_READ
-+int LzmaDecoderInit(
-+ unsigned char *buffer, UInt32 bufferSize,
-+ int lc, int lp, int pb,
-+ unsigned char *dictionary, UInt32 dictionarySize,
-+ #ifdef _LZMA_IN_CB
-+ ILzmaInCallback *inCallback
-+ #else
-+ unsigned char *inStream, UInt32 inSize
-+ #endif
-+);
-+#endif
-+
-+int LzmaDecode(
-+ unsigned char *buffer,
-+ #ifndef _LZMA_OUT_READ
-+ UInt32 bufferSize,
-+ int lc, int lp, int pb,
-+ #ifdef _LZMA_IN_CB
-+ ILzmaInCallback *inCallback,
-+ #else
-+ unsigned char *inStream, UInt32 inSize,
-+ #endif
-+ #endif
-+ unsigned char *outStream, UInt32 outSize,
-+ UInt32 *outSizeProcessed);
-+
-+#endif
-diff -Nur linux-2.4.32/fs/squashfs/Makefile linux-2.4.32-owrt/fs/squashfs/Makefile
---- linux-2.4.32/fs/squashfs/Makefile 2006-03-21 13:06:10.000000000 +0100
-+++ linux-2.4.32-owrt/fs/squashfs/Makefile 2006-03-21 13:12:39.000000000 +0100
-@@ -4,7 +4,7 @@
-
- O_TARGET := squashfs.o
-
--obj-y := inode.o squashfs2_0.o
-+obj-y := inode.o squashfs2_0.o LzmaDecode.o
-
- obj-m := $(O_TARGET)
-
diff --git a/openwrt/target/linux/generic-2.4/patches/003-jffs2_compression.patch b/openwrt/target/linux/generic-2.4/patches/003-jffs2_compression.patch
deleted file mode 100644
index 56c5b3cbc0..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/003-jffs2_compression.patch
+++ /dev/null
@@ -1,9119 +0,0 @@
-diff -Nur linux-mips-cvs/Documentation/Configure.help linux-mips/Documentation/Configure.help
---- linux-mips-cvs/Documentation/Configure.help 2005-01-20 03:19:21.000000000 +0100
-+++ linux-mips/Documentation/Configure.help 2005-02-07 05:08:35.000000000 +0100
-@@ -17528,6 +17528,32 @@
- If reporting bugs, please try to have available a full dump of the
- messages at debug level 1 while the misbehaviour was occurring.
-
-+ARMLIB compression support for BBC (EXPERIMENTAL)
-+CONFIG_JFFS2_BBC_ARMLIB
-+ This enables ARMLIB support for BBC.
-+
-+LZO1X-* compression support for BBC (EXPERIMENTAL)
-+CONFIG_JFFS2_BBC_LZO
-+ This enables LZO1X-1 and LZO1X-999 support for BBC. (fast & good
-+ compressor, beats ZLIB in everything)
-+
-+LZARI compression support for BBC (EXPERIMENTAL)
-+CONFIG_JFFS2_BBC_LZARI
-+ This enables LempelZiv-Storer-Szymanski compression for BBC with
-+ additional arithmetic coding (damn slow, but best compresor).
-+
-+LZHD compression support for BBC (EXPERIMENTAL)
-+CONFIG_JFFS2_BBC_LZHD
-+ This enables LempelZiv-Storer-Szymanski compression for BBC with
-+ additional dynamic Huffman coding (a little faster than LZARI, and
-+ it's compression ratio is a little worse than LZARI's)
-+
-+LZSS compression support for BBC (EXPERIMENTAL)
-+CONFIG_JFFS2_BBC_LZSS
-+ This enables simple LempelZiv-Storer-Szymanski compression for BBC
-+ (faster than LZHD, and, and has a not-so-good compression ratio,
-+ was included just for testing)
-+
- JFFS stats available in /proc filesystem
- CONFIG_JFFS_PROC_FS
- Enabling this option will cause statistics from mounted JFFS file systems
-diff -Nur linux-mips-cvs/fs/Config.in linux-mips/fs/Config.in
---- linux-mips-cvs/fs/Config.in 2004-11-19 01:28:47.000000000 +0100
-+++ linux-mips/fs/Config.in 2005-02-07 05:08:34.000000000 +0100
-@@ -50,6 +50,12 @@
- if [ "$CONFIG_JFFS2_FS" = "y" -o "$CONFIG_JFFS2_FS" = "m" ] ; then
- int 'JFFS2 debugging verbosity (0 = quiet, 2 = noisy)' CONFIG_JFFS2_FS_DEBUG 0
- fi
-+dep_mbool ' ARMLIB compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_ARMLIB $CONFIG_JFFS2_FS
-+dep_mbool ' LZO1X-* compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_LZO $CONFIG_JFFS2_FS
-+dep_mbool ' LZARI compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_LZARI $CONFIG_JFFS2_FS
-+dep_mbool ' LZHD compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_LZHD $CONFIG_JFFS2_FS
-+dep_mbool ' LZSS compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_LZSS $CONFIG_JFFS2_FS
-+
- tristate 'Compressed ROM file system support' CONFIG_CRAMFS
- bool 'Virtual memory file system support (former shm fs)' CONFIG_TMPFS
- define_bool CONFIG_RAMFS y
-diff -Nur linux-mips-cvs/fs/jffs2/Config.in.bbc.inc linux-mips/fs/jffs2/Config.in.bbc.inc
---- linux-mips-cvs/fs/jffs2/Config.in.bbc.inc 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/Config.in.bbc.inc 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,5 @@
-+dep_mbool ' ARMLIB compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_ARMLIB $CONFIG_JFFS2_FS
-+dep_mbool ' LZO1X-* compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_LZO $CONFIG_JFFS2_FS
-+dep_mbool ' LZARI compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_LZARI $CONFIG_JFFS2_FS
-+dep_mbool ' LZHD compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_LZHD $CONFIG_JFFS2_FS
-+dep_mbool ' LZSS compression support for BBC (EXPERIMENTAL)' CONFIG_JFFS2_BBC_LZSS $CONFIG_JFFS2_FS
-diff -Nur linux-mips-cvs/fs/jffs2/Configure.help.bbc.inc linux-mips/fs/jffs2/Configure.help.bbc.inc
---- linux-mips-cvs/fs/jffs2/Configure.help.bbc.inc 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/Configure.help.bbc.inc 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,25 @@
-+ARMLIB compression support for BBC (EXPERIMENTAL)
-+CONFIG_JFFS2_BBC_ARMLIB
-+ This enables ARMLIB support for BBC.
-+
-+LZO1X-* compression support for BBC (EXPERIMENTAL)
-+CONFIG_JFFS2_BBC_LZO
-+ This enables LZO1X-1 and LZO1X-999 support for BBC. (fast & good
-+ compressor, beats ZLIB in everything)
-+
-+LZARI compression support for BBC (EXPERIMENTAL)
-+CONFIG_JFFS2_BBC_LZARI
-+ This enables LempelZiv-Storer-Szymanski compression for BBC with
-+ additional arithmetic coding (damn slow, but best compresor).
-+
-+LZHD compression support for BBC (EXPERIMENTAL)
-+CONFIG_JFFS2_BBC_LZHD
-+ This enables LempelZiv-Storer-Szymanski compression for BBC with
-+ additional dynamic Huffman coding (a little faster than LZARI, and
-+ it's compression ratio is a little worse than LZARI's)
-+
-+LZSS compression support for BBC (EXPERIMENTAL)
-+CONFIG_JFFS2_BBC_LZSS
-+ This enables simple LempelZiv-Storer-Szymanski compression for BBC
-+ (faster than LZHD, and, and has a not-so-good compression ratio,
-+ was included just for testing)
-diff -Nur linux-mips-cvs/fs/jffs2/Kconfig.bbc.inc linux-mips/fs/jffs2/Kconfig.bbc.inc
---- linux-mips-cvs/fs/jffs2/Kconfig.bbc.inc 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/Kconfig.bbc.inc 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,40 @@
-+config JFFS2_BBC_ARMLIB
-+ bool "ARMLIB compression support for BBC (EXPERIMENTAL)"
-+ depends on JFFS2_FS && EXPERIMENTAL
-+ default y
-+ help
-+ This enables ARMLIB support for BBC.
-+
-+config JFFS2_BBC_LZO
-+ bool "LZO1X-* compression support for BBC (EXPERIMENTAL)"
-+ depends on JFFS2_FS && EXPERIMENTAL
-+ default y
-+ help
-+ This enables LZO1X-1 and LZO1X-999 support for BBC. (fast & good
-+ compressor)
-+
-+config JFFS2_BBC_LZARI
-+ bool "LZARI compression support for BBC (EXPERIMENTAL)"
-+ depends on JFFS2_FS && EXPERIMENTAL
-+ default y
-+ help
-+ This enables LempelZiv-Storer-Szymanski compression for BBC with
-+ additional arithmetic coding (damn slow, but best compresor).
-+
-+config JFFS2_BBC_LZHD
-+ bool "LZHD compression support for BBC (EXPERIMENTAL)"
-+ depends on JFFS2_FS && EXPERIMENTAL
-+ default y
-+ help
-+ This enables LempelZiv-Storer-Szymanski compression for BBC with
-+ additional dynamic Huffman coding (a little faster than LZARI, and
-+ it's compression ratio is a little worse than LZARI's)
-+
-+config JFFS2_BBC_LZSS
-+ bool "LZSS compression support for BBC (EXPERIMENTAL)"
-+ depends on JFFS2_FS && EXPERIMENTAL
-+ default y
-+ help
-+ This enables simple LempelZiv-Storer-Szymanski compression for BBC
-+ (faster than LZHD, and, and has a not-so-good compression ratio,
-+ was included just for testing)
-diff -Nur linux-mips-cvs/fs/jffs2/Makefile linux-mips/fs/jffs2/Makefile
---- linux-mips-cvs/fs/jffs2/Makefile 2003-08-13 19:19:25.000000000 +0200
-+++ linux-mips/fs/jffs2/Makefile 2005-02-07 05:08:34.000000000 +0100
-@@ -10,9 +10,23 @@
- # Note 2! The CFLAGS definitions are now in the main makefile...
-
-
-+JFFS2_BBC_KERNEL_OBJS-y = jffs2_bbc_framework.o jffs2_bbc_fs.o
-+
-+JFFS2_BBC_KERNEL_OBJS-$(CONFIG_JFFS2_BBC_ARMLIB) += jffs2_bbc_armlib_comp.o
-+JFFS2_BBC_KERNEL_OBJS-$(CONFIG_JFFS2_BBC_LZO) += jffs2_bbc_lzo_comp.o
-+JFFS2_BBC_KERNEL_OBJS-$(CONFIG_JFFS2_BBC_LZSS) += jffs2_bbc_lzss_comp.o
-+JFFS2_BBC_KERNEL_OBJS-$(CONFIG_JFFS2_BBC_LZARI) += jffs2_bbc_lzari_comp.o
-+JFFS2_BBC_KERNEL_OBJS-$(CONFIG_JFFS2_BBC_LZHD) += jffs2_bbc_lzhd_comp.o
-+
-+JFFS2_BBC_KERNEL_OBJS := $(JFFS2_BBC_KERNEL_OBJS-y)
-+
-+JFFS2_BBC_MKFS_OBJS = jffs2_bbc_mkfs.o jffs2_bbc_framework.o jffs2_bbc_armlib_comp.o jffs2_bbc_lzo_comp.o\
-+ jffs2_bbc_lzss_comp.o jffs2_bbc_lzari_comp.o jffs2_bbc_lzhd_comp.o
-+
- COMPR_OBJS := compr.o compr_rubin.o compr_rtime.o pushpull.o \
- compr_zlib.o
- JFFS2_OBJS := dir.o file.o ioctl.o nodelist.o malloc.o \
-+ $(JFFS2_BBC_KERNEL_OBJS) \
- read.o nodemgmt.o readinode.o super.o write.o scan.o gc.o \
- symlink.o build.o erase.o background.o
-
-diff -Nur linux-mips-cvs/fs/jffs2/Makefile.bbc.inc linux-mips/fs/jffs2/Makefile.bbc.inc
---- linux-mips-cvs/fs/jffs2/Makefile.bbc.inc 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/Makefile.bbc.inc 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,12 @@
-+JFFS2_BBC_KERNEL_OBJS-y = jffs2_bbc_framework.o jffs2_bbc_fs.o
-+
-+JFFS2_BBC_KERNEL_OBJS-$(CONFIG_JFFS2_BBC_ARMLIB) += jffs2_bbc_armlib_comp.o
-+JFFS2_BBC_KERNEL_OBJS-$(CONFIG_JFFS2_BBC_LZO) += jffs2_bbc_lzo_comp.o
-+JFFS2_BBC_KERNEL_OBJS-$(CONFIG_JFFS2_BBC_LZSS) += jffs2_bbc_lzss_comp.o
-+JFFS2_BBC_KERNEL_OBJS-$(CONFIG_JFFS2_BBC_LZARI) += jffs2_bbc_lzari_comp.o
-+JFFS2_BBC_KERNEL_OBJS-$(CONFIG_JFFS2_BBC_LZHD) += jffs2_bbc_lzhd_comp.o
-+
-+JFFS2_BBC_KERNEL_OBJS := $(JFFS2_BBC_KERNEL_OBJS-y)
-+
-+JFFS2_BBC_MKFS_OBJS = jffs2_bbc_mkfs.o jffs2_bbc_framework.o jffs2_bbc_armlib_comp.o jffs2_bbc_lzo_comp.o\
-+ jffs2_bbc_lzss_comp.o jffs2_bbc_lzari_comp.o jffs2_bbc_lzhd_comp.o
-diff -Nur linux-mips-cvs/fs/jffs2/compr_zlib.c linux-mips/fs/jffs2/compr_zlib.c
---- linux-mips-cvs/fs/jffs2/compr_zlib.c 2003-01-11 18:53:17.000000000 +0100
-+++ linux-mips/fs/jffs2/compr_zlib.c 2005-02-07 05:08:35.000000000 +0100
-@@ -85,7 +85,7 @@
- vfree(inflate_workspace);
- }
-
--int zlib_compress(unsigned char *data_in, unsigned char *cpage_out,
-+int jffs2_zlib_compress2(unsigned char *data_in, unsigned char *cpage_out,
- __u32 *sourcelen, __u32 *dstlen)
- {
- z_stream strm;
-@@ -145,7 +145,7 @@
- return 0;
- }
-
--void zlib_decompress(unsigned char *data_in, unsigned char *cpage_out,
-+void jffs2_zlib_decompress2(unsigned char *data_in, unsigned char *cpage_out,
- __u32 srclen, __u32 destlen)
- {
- z_stream strm;
-@@ -175,3 +175,19 @@
- zlib_inflateEnd(&strm);
- up(&inflate_sem);
- }
-+
-+extern int jffs2_zlib_compress(unsigned char *data_in, unsigned char *cpage_out, __u32 * sourcelen, __u32 * dstlen);
-+extern void jffs2_zlib_decompress(unsigned char *data_in, unsigned char *cpage_out, __u32 srclen, __u32 destlen);
-+
-+int zlib_compress(unsigned char *data_in, unsigned char *cpage_out,
-+ __u32 *sourcelen, __u32 *dstlen)
-+{
-+ return jffs2_zlib_compress(data_in,cpage_out,sourcelen,dstlen);
-+}
-+
-+void zlib_decompress(unsigned char *data_in, unsigned char *cpage_out,
-+ __u32 srclen, __u32 destlen)
-+{
-+ jffs2_zlib_decompress(data_in,cpage_out,srclen,destlen);
-+}
-+
-diff -Nur linux-mips-cvs/fs/jffs2/file.c linux-mips/fs/jffs2/file.c
---- linux-mips-cvs/fs/jffs2/file.c 2003-11-17 02:07:44.000000000 +0100
-+++ linux-mips/fs/jffs2/file.c 2005-02-07 05:08:35.000000000 +0100
-@@ -35,6 +35,7 @@
- *
- */
-
-+#include "jffs2_bbc_framework.h" /**BBC**/
- #include <linux/kernel.h>
- #include <linux/mtd/compatmac.h> /* for min() */
- #include <linux/slab.h>
-@@ -459,6 +460,7 @@
-
- comprbuf = kmalloc(cdatalen, GFP_KERNEL);
- if (comprbuf) {
-+ jffs2_bbc_model_set_act_sb(c); /**BBC**/
- comprtype = jffs2_compress(page_address(pg)+ (file_ofs & (PAGE_CACHE_SIZE-1)), comprbuf, &datalen, &cdatalen);
- }
- if (comprtype == JFFS2_COMPR_NONE) {
-diff -Nur linux-mips-cvs/fs/jffs2/gc.c linux-mips/fs/jffs2/gc.c
---- linux-mips-cvs/fs/jffs2/gc.c 2003-11-17 02:07:44.000000000 +0100
-+++ linux-mips/fs/jffs2/gc.c 2005-02-07 05:08:35.000000000 +0100
-@@ -35,6 +35,7 @@
- *
- */
-
-+#include "jffs2_bbc_framework.h" /**BBC**/
- #include <linux/kernel.h>
- #include <linux/mtd/mtd.h>
- #include <linux/slab.h>
-@@ -651,6 +652,7 @@
- writebuf = pg_ptr + (offset & (PAGE_CACHE_SIZE -1));
-
- if (comprbuf) {
-+ jffs2_bbc_model_set_act_sb(c); /**BBC**/
- comprtype = jffs2_compress(writebuf, comprbuf, &datalen, &cdatalen);
- }
- if (comprtype) {
-diff -Nur linux-mips-cvs/fs/jffs2/hpatch linux-mips/fs/jffs2/hpatch
---- linux-mips-cvs/fs/jffs2/hpatch 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/hpatch 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,191 @@
-+#!/usr/bin/perl
-+# A patch-like utility
-+# Designed for patching different version of jffs2 with the same hpatch file
-+#
-+# Copyright (C) 2004, Ferenc Havasi
-+#
-+# 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.
-+
-+$filename_tmp1="file1.tmp";
-+$filename_tmp2="file2.tmp";
-+
-+$filename_in="";
-+$filename_out=$filename_tmp1;
-+$filename_cnt=0;
-+
-+# Modes:
-+# 0: expecting =
-+# 1: normal_cmd
-+# 2: skip until =
-+# 3: expecting F (first state)
-+$mode=3;
-+
-+%rules = ();
-+
-+sub file_end {
-+ if (($mode!=2)&&($modified==1)) {
-+ while (<SRC>) {
-+ print DST $_;
-+ }
-+ close(SRC);
-+ close(DST);
-+ if ($cmd_name ne "") { $rules{"$cmd_name"}=1; }
-+ $filename_result=$filename_out;
-+ if ($filename_result ne $filename_in_save) {
-+ open(RES,"<$filename_result") or die "Cannot open $filename_result.\n";
-+ open(DST,">$filename_in_save") or die "Cannot open $filename_in_save.\n";
-+ while (<RES>) {
-+ print DST $_;
-+ }
-+ close(DST);
-+ close(RES);
-+ }
-+ unlink($filename_tmp1) && unlink($filename_tmp2);
-+ }
-+ else {
-+ close(SRC);
-+ close(DST);
-+ $filename_result=$filename_in;
-+ if ($filename_result ne $filename_in_save) {
-+ open(RES,"<$filename_result") or die "Cannot open $filename_result.\n";
-+ open(DST,">$filename_in_save") or die "Cannot open $filename_in_save.\n";
-+ while (<RES>) {
-+ print DST $_;
-+ }
-+ close(DST);
-+ close(RES);
-+ }
-+ unlink($filename_tmp1);
-+ }
-+ $modified=0;
-+ foreach $rulename (keys %rules) {
-+ if ($rules{"$rulename"}==0) { print(STDERR "On $filename_in_save error applying rule $rulename.\n"); }
-+ }
-+ %rules = ();
-+}
-+
-+if ($#ARGV<0) {
-+ print ("usage: hpatch hpatch_file\n");
-+ exit;
-+}
-+
-+open(CMD,"<$ARGV[0]") or die "Cannot open $ARGV[0].\n";
-+$cmd_linenum=0;
-+
-+while (chomp($cmd_line=<CMD>)) {
-+ $cmd_linenum++;
-+ if ($cmd_line eq "") {next;}
-+ #$cmd_line =~ s/\#.*//;
-+ $cmd_line =~ s/\ *$//;
-+ if ($cmd_line eq "") {next;}
-+ if ($cmd_line =~ /^F(.*)/) {
-+ $tmp_filename_in=$1;
-+ if ($mode!=3) {
-+ file_end();
-+ }
-+ $filename_in=$tmp_filename_in;
-+ $filename_in_save=$filename_in;
-+ open(SRC,"<$filename_in") or die "Cannot open $filename_in.\n";
-+ open(DST,">$filename_out") or die "Cannot open $filename_out.\n";;
-+ $modified=0;
-+ $mode=0;
-+ next;
-+ }
-+ if ($mode==3) {die "error: F expression expected in line $cmd_linenum\n";}
-+ if ($cmd_line =~ /^=(.*)/) {
-+ $tmp_cmd_name=$1;
-+ if (($mode!=2)&&($modified==1)) {
-+ while (<SRC>) {
-+ print DST $_;
-+ }
-+ close(SRC);
-+ close(DST);
-+ if (($cmd_name ne "")) {$rules{"$cmd_name"}=1;};
-+ $filename_cnt++;
-+ if ($filename_cnt%2==1) {
-+ $filename_in=$filename_tmp1;
-+ $filename_out=$filename_tmp2;
-+ }
-+ else {
-+ $filename_in=$filename_tmp2;
-+ $filename_out=$filename_tmp1;
-+ }
-+ }
-+ else {
-+ close(SRC);
-+ close(DST);
-+ }
-+ $mode=1;
-+ $cmd_name=$tmp_cmd_name;
-+ if (($cmd_name ne "")) {
-+ if ($rules{"$cmd_name"}==1) {
-+ $mode=2;
-+ }
-+ else {
-+ $rules{"$cmd_name"}=0;
-+ }
-+ }
-+ open(SRC,"<$filename_in") or die "Cannot open $filename_in.\n";
-+ open(DST,">$filename_out") or die "Cannot open $filename_out.\n";
-+ $modified=0;
-+ next;
-+ }
-+ if ($mode == 0) {die "error: = expression expected in line $cmd_linenum\n";}
-+ if ($mode == 2) {next;}
-+ if ($cmd_line =~ /^!(.*)/) {
-+ print "$1\n";
-+ $modified=1;
-+ next;
-+ }
-+ if ($cmd_line =~ /^\?(.*)/) {
-+ $search_str=$1;
-+ $found=0;
-+ while (<SRC>) {
-+ print DST $_;
-+ if (index($_,$search_str)>=0) {$found=1; last;}
-+ }
-+ if ($found==0) { $mode=2; }
-+ next;
-+ }
-+ if ($cmd_line =~ /^\+(.*)/) {
-+ print DST "$1\n";
-+ $modified=1;
-+ next;
-+ }
-+ if ($cmd_line =~ /^\-(.*)/) {
-+ $search_str=$1;
-+ $found=0;
-+ while (<SRC>) {
-+ if (index($_,$search_str)>=0) {$saved_line=$_; $found=1; $modified=1; last;}
-+ print DST $_;
-+ }
-+ if ($found==0) { $mode=2; }
-+ next;
-+ }
-+ if ($cmd_line =~ /^i(.*)/) {
-+ $filename_inc=$1;
-+ open(INCSRC,"<$filename_inc") or die "Cannot open $filename_inc.\n";
-+ while (<INCSRC>) {
-+ print DST $_;
-+ }
-+ next;
-+ }
-+ if ($cmd_line =~ /^I/) {
-+ print DST $saved_line;
-+ next;
-+ }
-+}
-+file_end();
-+close(CMD);
-diff -Nur linux-mips-cvs/fs/jffs2/jffs2_bbc_armlib_comp.c linux-mips/fs/jffs2/jffs2_bbc_armlib_comp.c
---- linux-mips-cvs/fs/jffs2/jffs2_bbc_armlib_comp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/jffs2_bbc_armlib_comp.c 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,2224 @@
-+/*
-+ * JFFS2-BBC: armlib compressor plugin
-+ *
-+ * $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+ *
-+ * Copyright (C) 2004, Ferenc Havasi & Tamas Gergely
-+ *
-+ * 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 "jffs2_bbc_framework.h"
-+
-+#ifdef __KERNEL__
-+#include <linux/string.h>
-+#else
-+#include <string.h>
-+#endif
-+
-+//ORIGIN: include/DataStructures/TypeDefs.h
-+
-+/*******************************************************************************
-+* FILE: TypeDefs.h
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+#ifndef TYPEDEFS_H
-+#define TYPEDEFS_H
-+
-+#pragma pack(4)
-+
-+#ifndef bool
-+#define bool char
-+#define true 1
-+#define false 0
-+#endif
-+
-+#ifndef u8
-+#define u8 unsigned char
-+#endif
-+#ifndef u16
-+#define u16 unsigned short
-+#endif
-+#ifndef u32
-+#define u32 unsigned long
-+#endif
-+#ifndef s8
-+#define s8 signed char
-+#endif
-+#ifndef s16
-+#define s16 signed short
-+#endif
-+#ifndef s32
-+#define s32 signed long
-+#endif
-+
-+typedef struct
-+{
-+ u32 capacity;
-+ u32 size;
-+ u32 alloc_size;
-+ void *ptr;
-+} vector;
-+
-+#define VECTOR_P_END(vct) ((void*)(((char*)((vct)->ptr)) + (vct)->size))
-+#define VECTOR_S_END(vct) ((void*)(((char*)((vct).ptr)) + (vct).size))
-+
-+static void vector_clear(vector *);
-+#ifdef JFFS2_BBC_ARMLIB_MODELGEN
-+static void vector_reset(vector *);
-+static void vector_clr_ptr(vector *);
-+static void vector_add_u8(vector *, u8);
-+static void vector_add_u16(vector *, u16);
-+static void vector_add_u32(vector *, u32);
-+static void vector_add_s8(vector *, s8);
-+static void vector_add_s16(vector *, s16);
-+static void vector_add_s32(vector *, s32);
-+static void vector_add_ptr(vector *, void *);
-+static void vector_concat(vector *, vector *);
-+#endif
-+
-+#endif
-+
-+//ORIGIN: include/DataStructures/DataTypes.h
-+
-+/*******************************************************************************
-+* FILE: DataTypes.h
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+#ifndef DATATYPES_H
-+#define DATATYPES_H
-+
-+//#include "DataStructures/TypeDefs.h"
-+
-+typedef u16 THUMB_DataType;
-+typedef u32 ARM_DataType;
-+typedef u8 TokenType;
-+typedef u8 PredictorType;
-+typedef u8 *ProbDist;
-+
-+typedef vector RawData;
-+typedef vector RawBlocks;
-+typedef vector TokenStream;
-+typedef vector TokenBlocks;
-+typedef vector LatType;
-+
-+#define THUMB_DATA_LENGTH 16
-+#define ARM_DATA_LENGTH 32
-+#define TOKEN_LENGTH 8
-+#define TOKEN_MAXVALUE 0xff
-+#define PREDICTOR_LENGTH 8
-+#define PREDICTOR_MAXVALUE 0xff
-+
-+#endif
-+
-+//ORIGIN: include/DataStructures/BitVector.h
-+
-+/*******************************************************************************
-+* FILE: BitVector.h
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+#ifndef BITVECTOR_H
-+#define BITVECTOR_H
-+
-+//#include "DataStructures/TypeDefs.h"
-+
-+typedef vector BitBlocks;
-+
-+#pragma pack(4)
-+
-+typedef struct
-+{
-+ u32 freebits;
-+ u32 capacity;
-+ u32 size;
-+ u8 *base;
-+ u8 *ptr;
-+} BitVector;
-+
-+#ifdef JFFS2_BBC_ARMLIB_MODELGEN
-+static void bitblocks_clear(BitBlocks *);
-+static void bitvector_clear(BitVector *);
-+static void bitvector_W_reset(BitVector *);
-+static void bitvector_W_add0(BitVector *);
-+static void bitvector_W_add1(BitVector *);
-+static void bitvector_W_concat_b(BitVector *, BitVector *);
-+static void bitvector_W_concat_v(BitVector *, vector *);
-+static void bitvector_W_flush(BitVector *);
-+static void bitvector_R_reset(BitVector *);
-+static u8 bitvector_R_get1(BitVector *);
-+static u8 bitvector_R_get8(BitVector *);
-+#endif
-+
-+#define BITVECTOR_P_END(bv) ((void*)(((bv)->base)+((bv)->size)))
-+#define BITVECTOR_S_END(bv) ((void*)( ((bv).base)+ ((bv).size)))
-+#define BITVECTOR_SKIP(bv,num) ((bv)->ptr) += (num)
-+
-+#endif
-+
-+//ORIGIN: include/DataStructures/DecisionTree.h
-+
-+/*******************************************************************************
-+* FILE: DecisionTree.h
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+#ifndef DECISIONTREE_H
-+#define DECISIONTREE_H
-+
-+//#include "DataStructures/DataTypes.h"
-+
-+#pragma pack(4)
-+
-+#define TREENODETYPE_NULLNODE 0
-+#define TREENODETYPE_NODE_BINARY_EQ 1
-+#define TREENODETYPE_LEAF_P 2
-+#define TREENODETYPE_LEAF_C 3
-+#define TREENODETYPE_NODE_BINARY_LT 5
-+#define TREENODETYPE_IS_NODE(n) (((n) == TREENODETYPE_NODE_BINARY_EQ) || \
-+ ((n) == TREENODETYPE_NODE_BINARY_LT))
-+#define TREENODETYPE_IS_NODE_BINARY(n) (((n) == TREENODETYPE_NODE_BINARY_EQ) || \
-+ ((n) == TREENODETYPE_NODE_BINARY_LT))
-+
-+#define TREENODETYPE_IS_LEAF(n) (((n) == TREENODETYPE_LEAF_P) || \
-+ ((n) == TREENODETYPE_LEAF_C))
-+
-+
-+#define TREE_SUBTREE_RELATION_LEFT_EQ !=
-+#define TREE_SUBTREE_RELATION_RIGHT_EQ ==
-+#define TREE_SUBTREE_RELATION_LEFT_LT <
-+#define TREE_SUBTREE_RELATION_RIGHT_LT >=
-+
-+#define GET_NODE_PTR_TYPE(n) (((TreeNodeDummy*)(n))->type)
-+
-+typedef struct
-+{
-+ u8 type;
-+} TreeNodeDummy;
-+
-+typedef struct
-+{
-+ u8 type; // [TREENODETYPE_NODE_BINARY]
-+ u8 attribute;
-+ PredictorType value;
-+ void *left;
-+ void *right;
-+} TreeNodeBinary;
-+
-+typedef struct
-+{
-+ u8 type; // [TREENODETYPE_LEAF_P]
-+ u16 pairs;
-+ PredictorType *probabilities;
-+} TreeLeafP;
-+
-+typedef struct
-+{
-+ u8 type; // [TREENODETYPE_LEAF_C]
-+ PredictorType predicted_class;
-+} TreeLeafC;
-+
-+typedef struct
-+{
-+ u32 high;
-+ u32 low;
-+ u32 max;
-+} ProbabilityType;
-+
-+
-+typedef struct
-+{
-+ void *root;
-+ u16 number_of_classes;
-+ u16 number_of_predictors;
-+ PredictorType *predictor_max_values;
-+} DecisionTree;
-+
-+#ifdef JFFS2_BBC_ARMLIB_MODELGEN
-+static void decisiontree_delete(DecisionTree *);
-+static void decisiontree_get_probability_for_token(void *, PredictorType *, TokenType, ProbabilityType *);
-+static TokenType decisiontree_get_token_for_range(void *, PredictorType *, u32, u32, ProbabilityType *);
-+#endif
-+
-+#endif
-+
-+//ORIGIN: include/DataStructures/PredictorTable.h
-+
-+/*******************************************************************************
-+* FILE: PredictorTable.h
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+#ifndef PREDICTORTABLE_H
-+#define PREDICTORTABLE_H
-+
-+//#include "DataStructures/TypeDefs.h"
-+//#include "DataStructures/DataTypes.h"
-+////#include "DataStructures/Filter.h"
-+////#include "DataStructures/Converter.h"
-+////#include "DataStructures/Manipulator.h"
-+
-+#define NUMBER_OF_PREDICTORS_ARM 17
-+
-+#ifndef __KERNEL__
-+#define NUMBER_OF_PREDICTORS_TXT 2
-+#else
-+#undef TXT_TOKENS
-+#endif // __KERNEL__
-+
-+#ifdef TXT_TOKENS
-+#define NUMBER_OF_PREDICTORS NUMBER_OF_PREDICTORS_TXT
-+#define predictortable_reset predictortable_resetTXT
-+#define predictortable_update predictortable_updateTXT
-+#define predictortable_minvalue predictortable_minvalueTXT
-+#define predictortable_maxvalue predictortable_maxvalueTXT
-+#else
-+#define NUMBER_OF_PREDICTORS NUMBER_OF_PREDICTORS_ARM
-+#define predictortable_reset predictortable_resetARM
-+#define predictortable_update predictortable_updateARM
-+#define predictortable_minvalue predictortable_minvalueARM
-+#define predictortable_maxvalue predictortable_maxvalueARM
-+#endif
-+
-+
-+#pragma pack(4)
-+
-+typedef struct
-+{
-+ PredictorType *predictors;
-+} PredictorTable;
-+
-+#ifdef JFFS2_BBC_ARMLIB_MODELGEN
-+static void predictortable_clear(PredictorTable *);
-+static void predictortable_free(PredictorTable *);
-+static void predictortable_resetARM(PredictorTable *);
-+static void predictortable_updateARM(PredictorTable *, TokenType);
-+static PredictorType predictortable_minvalueARM(PredictorTable *, u32);
-+static PredictorType predictortable_maxvalueARM(PredictorTable *, u32);
-+#endif
-+
-+#ifndef __KERNEL__
-+/*
-+static void predictortable_resetTXT(PredictorTable *);
-+static void predictortable_updateTXT(PredictorTable *, TokenType);
-+static PredictorType predictortable_minvalueTXT(PredictorTable *, u32);
-+static PredictorType predictortable_maxvalueTXT(PredictorTable *, u32);
-+*/
-+#endif // __KERNEL__
-+
-+#endif
-+
-+//ORIGIN: include/DataStructures/ipack_model.h
-+
-+/*******************************************************************************
-+* FILE: ipack_model.h
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+#ifndef IPACK_MODEL_H
-+#define IPACK_MODEL_H
-+
-+//#include "DataStructures/DataTypes.h"
-+//#include "DataStructures/DecisionTree.h"
-+//#include "DataStructures/PredictorTable.h"
-+
-+#define PROBABILITY_SHIFT 12
-+#define PROBABILITY_MAX 0x00001000l
-+
-+#define NUMBER_OF_TOKENS_ARM 16
-+#define NUMBER_OF_TOKENS_PER_INSTRUCTION_ARM 8
-+
-+#ifndef __KERNEL__
-+#define NUMBER_OF_TOKENS_TXT 256
-+#define NUMBER_OF_TOKENS_PER_INSTRUCTION_TXT 4
-+#else
-+#undef TXT_TOKENS
-+#endif // __KERNEL__
-+
-+#ifdef TXT_TOKENS
-+#define NUMBER_OF_TOKENS NUMBER_OF_TOKENS_TXT
-+#define NUMBER_OF_TOKENS_PER_INSTRUCTION NUMBER_OF_TOKENS_PER_INSTRUCTION_TXT
-+#else
-+#define NUMBER_OF_TOKENS NUMBER_OF_TOKENS_ARM
-+#define NUMBER_OF_TOKENS_PER_INSTRUCTION NUMBER_OF_TOKENS_PER_INSTRUCTION_ARM
-+#endif
-+
-+#pragma pack(4)
-+
-+/*
-+ Data structure of an internal node of the tree
-+*/
-+typedef struct
-+{
-+ PredictorType *attribute_ptr;
-+ u32 value; // PredictorType
-+ void *right_child_ptr;
-+} ipack_treenodeBin;
-+/*
-+ Data structure of a leaf with probabilities
-+*/
-+typedef struct
-+{
-+ u16 probabilities[0]; // PredictorType[0]
-+} ipack_treeleafP;
-+/*
-+ Data structure of a leaf with class prediction
-+*/
-+typedef struct
-+{
-+ PredictorType predicted_class; // PredictorType
-+} ipack_treeleafC;
-+/*
-+ Possible data structures of a tree node
-+*/
-+typedef union
-+{
-+ ipack_treenodeBin nodeBin;
-+ ipack_treeleafP leafP;
-+ ipack_treeleafC leafC;
-+} ipack_node_data;
-+/*
-+ Tree node
-+*/
-+typedef struct
-+{
-+ u32 type; // u8
-+ ipack_node_data data; // ipack_node_data
-+} ipack_nodetype;
-+/*
-+ Nullnode
-+*/
-+typedef struct
-+{
-+ u32 type;
-+ u16 probabilities[NUMBER_OF_TOKENS];
-+} ipack_nullnode;
-+/*
-+ Model for ipack project
-+*/
-+typedef struct
-+{
-+ char ID[4]; // char[4]
-+ char block_sign[4]; // only the first 2 are used!
-+ void *tree_root_ptr; // void*
-+ void *tree_code; // generated ARM code
-+ PredictorType *predictors_ptr; // PredictorType*
-+ ipack_nullnode nullnode;
-+} ipack_model_type;
-+
-+typedef struct
-+{
-+ u32 high;
-+ u32 low;
-+} ipack_probability_type;
-+
-+
-+static void ipack_model_get_probability_for_token(ipack_nodetype *, TokenType, ipack_probability_type *);
-+static TokenType ipack_model_get_token_for_range(ipack_nodetype *, u32, u32, ipack_probability_type *);
-+/*void ipack_model_predictortable_reset (PredictorType*);
-+void ipack_model_predictortable_update (PredictorType*, TokenType);*/
-+
-+#ifndef __KERNEL__
-+/*static void ipack_model_printinfo(ipack_model_type *);
-+static void ipack_dumpmodel(void *);*/
-+#endif
-+
-+#endif
-+
-+//ORIGIN: include/Builders/PredictorGenerator.h
-+
-+/*******************************************************************************
-+* FILE: PredictorGenerator.h
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+#ifndef PREDICTORGENERATOR_H
-+#define PREDICTORGENERATOR_H
-+
-+//#include "DataStructures.h"
-+
-+#ifdef JFFS2_BBC_ARMLIB_MODELGEN
-+static PredictorTable *predictorgenerator_generate(void);
-+#endif
-+
-+#endif
-+
-+//ORIGIN: include/Builders/Coder.h
-+
-+/*******************************************************************************
-+* FILE: Coder.h
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+#ifndef CODER_H
-+#define CODER_H
-+
-+#define CODER_VALUEBITS 16
-+#define CODER_VALUEMAX 0x00010000l
-+#define CODER_VALUE3RD 0x0000c000l
-+#define CODER_VALUEHLF 0x00008000l
-+#define CODER_VALUE1ST 0x00004000l
-+
-+#endif
-+
-+//ORIGIN: DataStructures/src/TypeDefs.c
-+
-+/*******************************************************************************
-+* FILE: TypeDefs.c
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+//#include "ipack_common.h"
-+//#include "DataStructures/TypeDefs.h"
-+#ifndef __KERNEL__
-+#include <memory.h>
-+#endif
-+
-+#define VECTOR_ALLOC_SIZE 0x00001000
-+
-+static void vector_clear(vector * vct)
-+{
-+ if (vct->ptr)
-+ jffs2_bbc_free(vct->ptr);
-+ vct->capacity = 0;
-+ vct->size = 0;
-+ vct->ptr = 0;
-+}
-+
-+#ifdef JFFS2_BBC_ARMLIB_MODELGEN
-+static void vector_extend(vector * vct)
-+{
-+ void *tmp;
-+ vct->capacity += vct->alloc_size;
-+ tmp = jffs2_bbc_malloc(vct->capacity);
-+ if (vct->ptr) {
-+ memcpy(tmp, vct->ptr, vct->size);
-+ jffs2_bbc_free(vct->ptr);
-+ }
-+ vct->ptr = tmp;
-+}
-+
-+static void vector_reset(vector * vct)
-+{
-+ vct->capacity = 0;
-+ vct->size = 0;
-+ vct->alloc_size = VECTOR_ALLOC_SIZE;
-+ vct->ptr = 0;
-+}
-+
-+static void vector_clr_ptr(vector * vct)
-+{
-+ void **it;
-+ void *end_it;
-+ for (it = vct->ptr, end_it = (((char *) (vct->ptr)) + vct->size); it != end_it; it++) {
-+ vector_clear(*it);
-+ jffs2_bbc_free(*it);
-+ }
-+ if (vct->ptr)
-+ jffs2_bbc_free(vct->ptr);
-+ vct->capacity = 0;
-+ vct->size = 0;
-+ vct->ptr = 0;
-+}
-+
-+static void vector_add_u8(vector * vct, u8 val)
-+{
-+ if ((vct->size) + sizeof(u8) > (vct->capacity)) {
-+ vector_extend(vct);
-+ }
-+ *(u8 *) ((char *) (vct->ptr) + (vct->size)) = val;
-+ vct->size += sizeof(u8);
-+};
-+
-+static void vector_add_u16(vector * vct, u16 val)
-+{
-+ if ((vct->size) + sizeof(u16) > (vct->capacity)) {
-+ vector_extend(vct);
-+ }
-+ *(u16 *) ((char *) (vct->ptr) + (vct->size)) = val;
-+ vct->size += sizeof(u16);
-+};
-+
-+static void vector_add_u32(vector * vct, u32 val)
-+{
-+ if ((vct->size) + sizeof(u32) > (vct->capacity)) {
-+ vector_extend(vct);
-+ }
-+ *(u32 *) ((char *) (vct->ptr) + (vct->size)) = val;
-+ vct->size += sizeof(u32);
-+};
-+
-+static void vector_add_s8(vector * vct, s8 val)
-+{
-+ if ((vct->size) + sizeof(s8) > (vct->capacity)) {
-+ vector_extend(vct);
-+ }
-+ *(s8 *) ((char *) (vct->ptr) + (vct->size)) = val;
-+ vct->size += sizeof(s8);
-+};
-+
-+static void vector_add_s16(vector * vct, s16 val)
-+{
-+ if ((vct->size) + sizeof(s16) > (vct->capacity)) {
-+ vector_extend(vct);
-+ }
-+ *(s16 *) ((char *) (vct->ptr) + (vct->size)) = val;
-+ vct->size += sizeof(s16);
-+};
-+
-+static void vector_add_s32(vector * vct, s32 val)
-+{
-+ if ((vct->size) + sizeof(s32) > (vct->capacity)) {
-+ vector_extend(vct);
-+ }
-+ *(s32 *) ((char *) (vct->ptr) + (vct->size)) = val;
-+ vct->size += sizeof(s32);
-+};
-+
-+static void vector_add_ptr(vector * vct, void *ptr)
-+{
-+ if ((vct->size) + sizeof(void *) > (vct->capacity)) {
-+ vector_extend(vct);
-+ }
-+ *(void **) ((char *) (vct->ptr) + (vct->size)) = ptr;
-+ vct->size += sizeof(void *);
-+}
-+
-+static void vector_concat(vector * lhs, vector * rhs)
-+{
-+ void *tmp;
-+ if (!(rhs->size)) {
-+ return;
-+ }
-+ tmp = lhs->ptr;
-+ lhs->capacity = (lhs->size) + (rhs->size);
-+ lhs->ptr = jffs2_bbc_malloc(lhs->capacity);
-+ if (tmp) {
-+ memcpy(lhs->ptr, tmp, lhs->size);
-+ jffs2_bbc_free(tmp);
-+ }
-+ memcpy((((u8 *) lhs->ptr) + lhs->size), rhs->ptr, rhs->size);
-+ lhs->size += rhs->size;
-+}
-+
-+#endif
-+
-+//ORIGIN: DataStructures/src/BitVector.c
-+
-+/*******************************************************************************
-+* FILE: BitVector.c
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+//#include "ipack_common.h"
-+//#include "DataStructures/BitVector.h"
-+#ifndef __KERNEL__
-+#include <memory.h>
-+#endif
-+
-+#define VECTOR_ALLOC_SIZE 0x00001000
-+
-+#ifdef JFFS2_BBC_ARMLIB_MODELGEN
-+
-+static void bitblocks_clear(BitBlocks * this)
-+{
-+ BitVector **it;
-+ void *end_it;
-+ for (it = this->ptr, end_it = VECTOR_P_END(this); it != end_it; it++) {
-+ bitvector_clear(*it);
-+ jffs2_bbc_free(*it);
-+ }
-+ jffs2_bbc_free(this->ptr);
-+ this->ptr = 0;
-+}
-+
-+static void bitvector_clear(BitVector * this)
-+{
-+ if (this->base) {
-+ jffs2_bbc_free(this->base);
-+ }
-+ this->freebits = 0;
-+ this->capacity = 0;
-+ this->size = 0;
-+ this->base = 0;
-+ this->ptr = 0;
-+}
-+
-+static void bitvector_W_reset(BitVector * this)
-+{
-+ this->freebits = 0;
-+ this->capacity = 0;
-+ this->size = 0;
-+ this->base = 0;
-+ this->ptr = 0;
-+}
-+
-+static void bitvector_W_add0(BitVector * this)
-+{
-+ if (!(this->freebits)) {
-+ if (this->size == this->capacity) {
-+ void *tmp = this->base;
-+ this->capacity += VECTOR_ALLOC_SIZE;
-+ this->base = jffs2_bbc_malloc(this->capacity);
-+ this->ptr = ((u8 *) (this->base)) + this->size;
-+ memcpy(this->base, tmp, this->size);
-+ jffs2_bbc_free(tmp);
-+ }
-+ else {
-+ this->ptr++;
-+ }
-+ this->size++;
-+ this->freebits = 7;
-+ *(this->ptr) = 0x00;
-+ }
-+ else {
-+ this->freebits--;
-+ (*(this->ptr)) <<= 1;
-+ }
-+}
-+
-+static void bitvector_W_add1(BitVector * this)
-+{
-+ if (!(this->freebits)) {
-+ if (this->size == this->capacity) {
-+ void *tmp = this->base;
-+ this->capacity += VECTOR_ALLOC_SIZE;
-+ this->base = jffs2_bbc_malloc(this->capacity);
-+ this->ptr = ((u8 *) (this->base)) + this->size;
-+ memcpy(this->base, tmp, this->size);
-+ jffs2_bbc_free(tmp);
-+ }
-+ else {
-+ this->ptr++;
-+ }
-+ this->size++;
-+ this->freebits = 7;
-+ *(this->ptr) = 0x01;
-+ }
-+ else {
-+ this->freebits--;
-+ (*(this->ptr)) <<= 1;
-+ (*(this->ptr)) |= 0x01;
-+ }
-+}
-+
-+static void bitvector_W_concat_b(BitVector * lhs, BitVector * rhs)
-+{
-+ void *tmp;
-+ if (!(rhs->size)) {
-+ return;
-+ }
-+ tmp = lhs->base;
-+ lhs->capacity = ((((lhs->size) + (rhs->size) - 1) / VECTOR_ALLOC_SIZE) + 1) * VECTOR_ALLOC_SIZE;
-+ lhs->base = jffs2_bbc_malloc(lhs->capacity);
-+ if (tmp) {
-+ memcpy(lhs->base, tmp, lhs->size);
-+ jffs2_bbc_free(tmp);
-+ }
-+ memcpy((((u8 *) (lhs->base)) + lhs->size), rhs->base, rhs->size);
-+ lhs->freebits = 0;
-+ lhs->size += rhs->size;
-+ lhs->ptr = ((u8 *) (lhs->base)) + lhs->size;
-+}
-+
-+static void bitvector_W_concat_v(BitVector * lhs, vector * rhs)
-+{
-+ void *tmp;
-+ if (!(rhs->size)) {
-+ return;
-+ }
-+ tmp = lhs->base;
-+ lhs->capacity = ((((lhs->size) + (rhs->size) - 1) / VECTOR_ALLOC_SIZE) + 1) * VECTOR_ALLOC_SIZE;
-+ lhs->base = jffs2_bbc_malloc(lhs->capacity);
-+ if (tmp) {
-+ memcpy(lhs->base, tmp, lhs->size);
-+ jffs2_bbc_free(tmp);
-+ }
-+ memcpy((((u8 *) (lhs->base)) + lhs->size), rhs->ptr, rhs->size);
-+ lhs->freebits = 0;
-+ lhs->size += rhs->size;
-+ lhs->ptr = ((u8 *) (lhs->base)) + lhs->size;
-+}
-+
-+static void bitvector_W_flush(BitVector * this)
-+{
-+ (*(this->ptr)) <<= this->freebits;
-+ this->freebits = 0;
-+}
-+
-+static void bitvector_R_reset(BitVector * this)
-+{
-+ this->freebits = 7;
-+ this->ptr = this->base;
-+}
-+
-+static u8 bitvector_R_get1(BitVector * this)
-+{
-+ u8 tmp = ((*(this->ptr)) >> this->freebits) & 0x01;
-+ if (!(this->freebits)) {
-+ this->freebits = 7;
-+ this->ptr++;
-+ }
-+ else {
-+ this->freebits--;
-+ }
-+ return tmp;
-+}
-+
-+static u8 bitvector_R_get8(BitVector * this)
-+{
-+ u8 tmp = (*(this->ptr));
-+ this->ptr++;
-+ return tmp;
-+}
-+
-+#endif
-+
-+//ORIGIN: DataStructures/src/DecisionTree.c
-+
-+/*******************************************************************************
-+* FILE: DecisionTree.c
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+//#include "ipack_common.h"
-+//#include "DataStructures/DecisionTree.h"
-+
-+static void decisiontree_delete_node(void *root)
-+{
-+ u8 tmp = GET_NODE_PTR_TYPE(root);
-+ if (TREENODETYPE_IS_NODE_BINARY(tmp)) {
-+ decisiontree_delete_node(((TreeNodeBinary *) root)->left);
-+ decisiontree_delete_node(((TreeNodeBinary *) root)->right);
-+ }
-+ else if ((tmp) == TREENODETYPE_LEAF_P) {
-+ if (((TreeLeafP *) root)->probabilities) {
-+ jffs2_bbc_free(((TreeLeafP *) root)->probabilities);
-+ }
-+ }
-+ else if ((tmp) == TREENODETYPE_LEAF_C) {
-+ }
-+ jffs2_bbc_free(root);
-+}
-+
-+#ifdef JFFS2_BBC_ARMLIB_MODELGEN
-+
-+static void decisiontree_delete(DecisionTree * dt)
-+{
-+ decisiontree_delete_node(dt->root);
-+ jffs2_bbc_free(dt->predictor_max_values);
-+}
-+
-+static void decisiontree_get_probability_for_token(void *root, PredictorType * preds, TokenType token, ProbabilityType * prob)
-+{
-+ void *tmp = root;
-+ while (TREENODETYPE_IS_NODE(((TreeNodeBinary *) tmp)->type)) {
-+ if (((TreeNodeBinary *) tmp)->type == TREENODETYPE_NODE_BINARY_EQ) {
-+ if (preds[((TreeNodeBinary *) tmp)->attribute] TREE_SUBTREE_RELATION_LEFT_EQ((TreeNodeBinary *) tmp)->value) {
-+ tmp = ((TreeNodeBinary *) tmp)->left;
-+ }
-+ else {
-+ tmp = ((TreeNodeBinary *) tmp)->right;
-+ }
-+ }
-+ else if (((TreeNodeBinary *) tmp)->type == TREENODETYPE_NODE_BINARY_LT) {
-+ if (preds[((TreeNodeBinary *) tmp)->attribute] TREE_SUBTREE_RELATION_LEFT_LT((TreeNodeBinary *) tmp)->value) {
-+ tmp = ((TreeNodeBinary *) tmp)->left;
-+ }
-+ else {
-+ tmp = ((TreeNodeBinary *) tmp)->right;
-+ }
-+ }
-+ }
-+ prob->high = 0;
-+ prob->low = 0;
-+ prob->max = 0;
-+ if (((TreeNodeBinary *) tmp)->type == TREENODETYPE_LEAF_P) {
-+ u32 i;
-+ u32 lngth = ((TreeLeafP *) tmp)->pairs << 1;
-+ for (i = 0; i < lngth;) {
-+ TokenType at = ((TreeLeafP *) tmp)->probabilities[i++];
-+ TokenType av = ((TreeLeafP *) tmp)->probabilities[i++];
-+ if (token > at)
-+ prob->low += av;
-+ if (token >= at)
-+ prob->high += av;
-+ prob->max += av;
-+ }
-+ }
-+ else if (((TreeNodeBinary *) tmp)->type == TREENODETYPE_LEAF_C) {
-+ if (((TreeLeafC *) tmp)->predicted_class == token) {
-+ prob->high = TOKEN_MAXVALUE;
-+ prob->max = TOKEN_MAXVALUE;
-+ }
-+ }
-+}
-+
-+static TokenType decisiontree_get_token_for_range(void *root, PredictorType * preds, u32 value, u32 range, ProbabilityType * prob)
-+{
-+ void *tmp = root;
-+ TokenType token = 0;
-+ while (TREENODETYPE_IS_NODE(((TreeNodeBinary *) tmp)->type)) {
-+ if (((TreeNodeBinary *) tmp)->type == TREENODETYPE_NODE_BINARY_EQ) {
-+ if (preds[((TreeNodeBinary *) tmp)->attribute] TREE_SUBTREE_RELATION_LEFT_EQ((TreeNodeBinary *) tmp)->value) {
-+ tmp = ((TreeNodeBinary *) tmp)->left;
-+ }
-+ else {
-+ tmp = ((TreeNodeBinary *) tmp)->right;
-+ }
-+ }
-+ else if (((TreeNodeBinary *) tmp)->type == TREENODETYPE_NODE_BINARY_LT) {
-+ if (preds[((TreeNodeBinary *) tmp)->attribute] TREE_SUBTREE_RELATION_LEFT_LT((TreeNodeBinary *) tmp)->value) {
-+ tmp = ((TreeNodeBinary *) tmp)->left;
-+ }
-+ else {
-+ tmp = ((TreeNodeBinary *) tmp)->right;
-+ }
-+ }
-+ }
-+ prob->high = 0;
-+ prob->low = 0;
-+ prob->max = 0;
-+ if (((TreeNodeBinary *) tmp)->type == TREENODETYPE_LEAF_P) {
-+ u32 i;
-+ u32 norm;
-+ TokenType at = 0;
-+ TokenType av;
-+ u32 lngth = ((TreeLeafP *) tmp)->pairs << 1;
-+ for (i = 0; i < lngth;) {
-+ i++;
-+ prob->max += ((TreeLeafP *) tmp)->probabilities[i++];
-+ }
-+ norm = (value * prob->max - 1) / range;
-+ for (i = 0; prob->high <= norm;) {
-+ at = ((TreeLeafP *) tmp)->probabilities[i++];
-+ av = ((TreeLeafP *) tmp)->probabilities[i++];
-+ prob->high += av;
-+ if (prob->high <= norm)
-+ prob->low += av;
-+ }
-+ token = at;
-+ }
-+ else if (((TreeNodeBinary *) tmp)->type == TREENODETYPE_LEAF_C) {
-+ token = ((TreeLeafC *) tmp)->predicted_class;
-+ prob->high = TOKEN_MAXVALUE;
-+ prob->max = TOKEN_MAXVALUE;
-+ }
-+ return token;
-+}
-+#endif
-+
-+//ORIGIN: DataStructures/src/PredictorTable.c
-+
-+/*******************************************************************************
-+* FILE: PredictorTable.c
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+//#include "ipack_common.h"
-+//#include "DataStructures/PredictorTable.h"
-+
-+#ifdef JFFS2_BBC_ARMLIB_MODELGEN
-+
-+static void predictortable_clear(PredictorTable * table)
-+{
-+ table->predictors = 0;
-+}
-+
-+static void predictortable_free(PredictorTable * table)
-+{
-+ if (table->predictors) {
-+ jffs2_bbc_free(table->predictors);
-+ table->predictors = 0;
-+ }
-+}
-+
-+static void predictortable_resetARM(PredictorTable * table)
-+{
-+ register PredictorType *ptr = table->predictors;
-+ register PredictorType *end = ptr + NUMBER_OF_PREDICTORS_ARM;
-+ while (ptr < end) {
-+ *(ptr++) = 0;
-+ }
-+}
-+
-+static void predictortable_updateARM(PredictorTable * table, TokenType token)
-+{
-+ register PredictorType *ptr = table->predictors;
-+ register u32 ndx = ptr[0] + 1;
-+ ptr[ndx + 8] = ptr[ndx];
-+ ptr[ndx] = token;
-+ if (ndx == 8) {
-+ ptr[0] = 0;
-+ }
-+ else {
-+ ++ptr[0];
-+ }
-+}
-+
-+static PredictorType predictortable_minvalueARM(PredictorTable * table, u32 index)
-+{
-+ return 0;
-+}
-+
-+static PredictorType predictortable_maxvalueARM(PredictorTable * table, u32 index)
-+{
-+ if (index == 0) {
-+ return 7;
-+ }
-+ else {
-+ return 15;
-+ }
-+}
-+
-+#endif
-+
-+#ifndef __KERNEL__
-+
-+/*static void predictortable_resetTXT(PredictorTable * table)
-+{
-+ register PredictorType *ptr = table->predictors;
-+ register PredictorType *end = ptr + NUMBER_OF_PREDICTORS_TXT;
-+ while (ptr < end) {
-+ *(ptr++) = 0;
-+ }
-+}
-+
-+static void predictortable_updateTXT(PredictorTable * table, TokenType token)
-+{ //TODO: modify
-+ register PredictorType *ptr = table->predictors;
-+// register u32 ndx;
-+ ptr[0] = token;
-+ if ((('a' <= token) && (token <= 'z')) || (('A' <= token) && (token <= 'Z'))) {
-+ ++(ptr[1]);
-+ }
-+ else {
-+ ptr[1] = 0;
-+ }
-+}
-+
-+static PredictorType predictortable_minvalueTXT(PredictorTable * table, u32 index)
-+{
-+ return 0;
-+}
-+
-+static PredictorType predictortable_maxvalueTXT(PredictorTable * table, u32 index)
-+{ //TODO: modify
-+ return 254;
-+}*/
-+
-+#endif // __KERNEL__
-+
-+//ORIGIN: DataStructures/src/ipack_model.c
-+
-+/*******************************************************************************
-+* FILE: ipack_model.c
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+//#include "DataStructures/ipack_model.h"
-+//#include "measuredef.h"
-+//#include "ipack_common.h"
-+
-+#ifdef __MEASURE_TIME_MODEL_GETPROB
-+#define __MT_P_MAX 256
-+#define __MT_P_DIV 128
-+#define __MT_P_MIN 0
-+#endif
-+
-+static void ipack_model_get_probability_for_token(ipack_nodetype * tmp, TokenType token, ipack_probability_type * prob)
-+{
-+// register ipack_nodetype* tmp = model->tree_root_ptr;
-+// register ipack_nodetype* tmp = root;
-+ while (TREENODETYPE_IS_NODE(tmp->type)) {
-+ if (tmp->type == TREENODETYPE_NODE_BINARY_EQ) {
-+ if (*(tmp->data.nodeBin.attribute_ptr) TREE_SUBTREE_RELATION_LEFT_EQ tmp->data.nodeBin.value) {
-+ ((char *) tmp) += sizeof(tmp->type) + sizeof(ipack_treenodeBin);
-+ }
-+ else {
-+ tmp = tmp->data.nodeBin.right_child_ptr;
-+ }
-+ }
-+ else if (tmp->type == TREENODETYPE_NODE_BINARY_LT) {
-+ if (*(tmp->data.nodeBin.attribute_ptr) TREE_SUBTREE_RELATION_LEFT_LT tmp->data.nodeBin.value) {
-+ ((char *) tmp) += sizeof(tmp->type) + sizeof(ipack_treenodeBin);
-+ }
-+ else {
-+ tmp = tmp->data.nodeBin.right_child_ptr;
-+ }
-+ }
-+ }
-+ prob->high = 0;
-+ prob->low = 0;
-+// prob->max = 0;
-+ if (tmp->type == TREENODETYPE_LEAF_P) {
-+ if (token) {
-+ prob->low = tmp->data.leafP.probabilities[token - 1];
-+ }
-+ prob->high = tmp->data.leafP.probabilities[token];
-+// prob->max = tmp->data.leafP.probabilities[15];
-+ }
-+ else if (tmp->type == TREENODETYPE_LEAF_C) {
-+ if (tmp->data.leafC.predicted_class == token) {
-+ prob->high = TOKEN_MAXVALUE;
-+// prob->max = TOKEN_MAXVALUE;
-+ }
-+ }
-+}
-+
-+#ifndef IPACK_ARM_ASM
-+
-+//return ipack_model_get_token_for_range2(tmp,value,range,prob);
-+
-+static TokenType ipack_model_get_token_for_range(ipack_nodetype * tmp, u32 value, u32 range, ipack_probability_type * prob)
-+{
-+// register ipack_nodetype* tmp = model->tree_root_ptr;
-+// register ipack_nodetype* tmp = root;
-+ register TokenType token = 0;
-+ while (TREENODETYPE_IS_NODE(tmp->type)) {
-+ if (tmp->type == TREENODETYPE_NODE_BINARY_EQ) {
-+ if (*(tmp->data.nodeBin.attribute_ptr) TREE_SUBTREE_RELATION_LEFT_EQ tmp->data.nodeBin.value) {
-+ ((char *) tmp) += sizeof(tmp->type) + sizeof(ipack_treenodeBin);
-+ }
-+ else {
-+ tmp = tmp->data.nodeBin.right_child_ptr;
-+ }
-+ }
-+ else if (tmp->type == TREENODETYPE_NODE_BINARY_LT) {
-+ if (*(tmp->data.nodeBin.attribute_ptr) TREE_SUBTREE_RELATION_LEFT_LT tmp->data.nodeBin.value) {
-+ ((char *) tmp) += sizeof(tmp->type) + sizeof(ipack_treenodeBin);
-+ }
-+ else {
-+ tmp = tmp->data.nodeBin.right_child_ptr;
-+ }
-+ }
-+ }
-+ prob->high = 0;
-+ prob->low = 0;
-+// prob->max = 0;
-+ if (tmp->type == TREENODETYPE_LEAF_P) {
-+ u32 i;
-+ u32 norm;
-+// prob->max = tmp->data.leafP.probabilities[15];
-+/* norm = (value * prob->max -1)/range;
-+ for(i = 0; i < 15; ++i) {
-+ if(tmp->data.leafP.probabilities[i] > norm) {
-+ break;
-+ }
-+ }*/
-+ norm = ((value << PROBABILITY_SHIFT) - 1);
-+ for (i = 0; i < NUMBER_OF_TOKENS; ++i) {
-+ if (range * tmp->data.leafP.probabilities[i] > norm) {
-+ break;
-+ }
-+ }
-+ token = (TokenType) i;
-+ prob->high = tmp->data.leafP.probabilities[i];
-+ if (token) {
-+ prob->low = tmp->data.leafP.probabilities[token - 1];
-+ }
-+ }
-+ else if (tmp->type == TREENODETYPE_LEAF_C) {
-+ token = tmp->data.leafC.predicted_class;
-+ prob->high = PROBABILITY_MAX;
-+// prob->max = PROBABILITY_MAX;
-+ }
-+ return token;
-+}
-+#endif
-+/*
-+void ipack_model_predictortable_reset(PredictorType* ptr)
-+{
-+// register PredictorType* ptr = model->predictors_ptr;
-+// register PredictorType* ptr = preds;
-+ register PredictorType* end = ptr + NUMBER_OF_PREDICTORS;
-+ while(ptr < end) {
-+ *(ptr++) = 0;
-+ }
-+}
-+
-+void ipack_model_predictortable_update(PredictorType* ptr, TokenType token)
-+{
-+// register PredictorType* ptr = model->predictors_ptr;
-+// register PredictorType* ptr = preds;
-+ register u32 ndx = ptr[0] + 1;
-+ ptr[ndx + 8] = ptr[ndx];
-+ ptr[ndx] = token;
-+ if(ndx == 8) {
-+ ptr[0] = 0;
-+ } else {
-+ ++ ptr[0];
-+ }
-+}*/
-+/****************************************************************************/
-+
-+#ifndef __KERNEL__
-+static void ipack_model_countpreds(void *ptr, ipack_nodetype * node, double *table, double val)
-+{
-+ if ((node->type == TREENODETYPE_NODE_BINARY_EQ) || (node->type == TREENODETYPE_NODE_BINARY_LT)) {
-+ table[(u32) (node->data.nodeBin.attribute_ptr) - (u32) (ptr)] += val;
-+ ipack_model_countpreds(ptr, (void *) (((u8 *) (node)) + sizeof(node->type) + sizeof(ipack_treenodeBin)), table, val / 2);
-+ ipack_model_countpreds(ptr, node->data.nodeBin.right_child_ptr, table, val / 2);
-+ }
-+ else {
-+ }
-+}
-+
-+/*static void ipack_model_printinfo(ipack_model_type * model)
-+{
-+ double *prcnt = jffs2_bbc_malloc(sizeof(double) * NUMBER_OF_PREDICTORS);
-+ u32 i;
-+ for (i = 0; i < NUMBER_OF_PREDICTORS; i++) {
-+ prcnt[i] = 0.0;
-+ }
-+ ipack_model_countpreds(model->predictors_ptr, model->tree_root_ptr, prcnt, 100);
-+ for (i = 0; i < NUMBER_OF_PREDICTORS; i++) {
-+ jffs2_bbc_print3(" p[%3d] = %10.6lf\n", (int) i, prcnt[i]);
-+ }
-+ jffs2_bbc_free(prcnt);
-+}*/
-+
-+static void ipack_dumpnode(unsigned char **ptr, FILE * file, char *prefs)
-+{
-+ switch (*((*ptr)++)) {
-+ u32 i;
-+ u32 j;
-+ u32 x;
-+ u32 y;
-+ case TREENODETYPE_NODE_BINARY_EQ:
-+ x = *((*ptr)++);
-+ y = *((*ptr)++);
-+ fprintf(file, "%s+->\tBinary node: P[%u] equals %u\n", prefs, (unsigned int)x, (unsigned int)y);
-+ for (j = 0; j < 4096 && prefs[j]; ++j);
-+ prefs[j] = '\t';
-+ prefs[++j] = '|';
-+ ipack_dumpnode(ptr, file, prefs);
-+ prefs[j--] = 0;
-+ ipack_dumpnode(ptr, file, prefs);
-+ prefs[j] = 0;
-+ break;
-+ case TREENODETYPE_NODE_BINARY_LT:
-+ x = *((*ptr)++);
-+ y = *((*ptr)++);
-+ fprintf(file, "%s+->\tBinary node: P[%u] greater than %u\n", prefs, (unsigned int)x, (unsigned int)y);
-+ for (j = 0; j < 4096 && prefs[j]; ++j);
-+ prefs[j] = '\t';
-+ prefs[++j] = '|';
-+ ipack_dumpnode(ptr, file, prefs);
-+ prefs[j--] = 0;
-+ ipack_dumpnode(ptr, file, prefs);
-+ prefs[j] = 0;
-+ break;
-+ case TREENODETYPE_LEAF_P:
-+ x = *((*ptr)++);
-+ fprintf(file, "%s+->\tLeaf: %u pairs\n", prefs, (unsigned int)x);
-+ (*ptr) += (x << 1);
-+ break;
-+ case TREENODETYPE_LEAF_C:
-+ x = *((*ptr)++);
-+ fprintf(file, "%s+->\tLeaf: class %u\n", prefs, (unsigned int)x);
-+ break;
-+ default:
-+ fprintf(file, "%s+->\tLeaf: nullnode\n", prefs);
-+ }
-+}
-+
-+/*static void ipack_dumpmodel(void *model)
-+{
-+ unsigned char *tmp_ptr = model;
-+ FILE *file;
-+ char C[4096];
-+ if ((file = fopen("DUMPED_MODEL", "wa"))) {
-+ int i;
-+ for (i = 0; i < 4096; C[i++] = 0);
-+ tmp_ptr += 8;
-+ tmp_ptr += sizeof(u32);
-+ ipack_dumpnode(&tmp_ptr, file, C);
-+ fclose(file);
-+ }
-+}*/
-+
-+#endif
-+
-+//ORIGIN: Builders/src/PredictorGenerator.c
-+
-+/*******************************************************************************
-+* FILE: PredictorGenerator.c
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+//#include "ipack_common.h"
-+//#include "Builders/PredictorGenerator.h"
-+
-+#ifdef JFFS2_BBC_ARMLIB_MODELGEN
-+static PredictorTable *predictorgenerator_generate( /*PredictorGeneratorSettings* settings */ )
-+{
-+ PredictorTable *ptr = jffs2_bbc_malloc(sizeof(PredictorTable));
-+ predictortable_clear(ptr);
-+ ptr->predictors = jffs2_bbc_malloc(NUMBER_OF_PREDICTORS * sizeof(PredictorType));
-+ return ptr;
-+}
-+#endif
-+
-+//ORIGIN: Builders/src/ipack_armlib_compressor.c
-+
-+/*******************************************************************************
-+* FILE: ipack_armlim_compressor.c
-+* AUTHOR: Tamás Gergely
-+* MODIFIED: $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*******************************************************************************/
-+
-+//#include "ipack_common.h"
-+//#include "DataStructures.h"
-+//#include "Builders/PredictorGenerator.h"
-+//#include "Builders/Tokenizer.h"
-+//#include "Builders/Coder.h"
-+
-+#define EC_NO_ERROR 0
-+#define EC_NOT_IPMF_FILE -1
-+#define EC_NOT_IPMF_MODEL -2
-+#define EC_NOT_HG_BLOCK -3
-+#define EC_WRONG_INPUT_LENGTH -501
-+#define EC_CODER_WRONG_PROBABILITY 1
-+#define EC_CODER_WRONG_RANGE 2
-+#define EC_BUFFER_OVERFLOW 501
-+#define EC_BUFFER_UNDERFLOW 502
-+#define EC_UNKNOWN_TOKEN_TYPE 1001
-+#define EC_UNKNOWN_FILTER 1002
-+#define EC_UNKNOWN_CONVERTER 1003
-+#define EC_UNKNOWN_MANIPULATOR 1004
-+
-+/*******************************************************************************
-+
-+ COMPRESSOR INIT FUNCTIONS
-+
-+*******************************************************************************/
-+
-+#define ROUND_UP_TO_DWORD(val) ( ( (val) + 3 ) & 0xfffffffc )
-+
-+#ifndef __KERNEL__
-+int ipack_glb_endian_X;
-+#endif
-+
-+static int ipack_compressor_init_tree(unsigned char **ptr, ipack_model_type * model, ipack_nodetype * node, void *nullnode)
-+{
-+ int retval = 0;
-+ node->type = *((*ptr)++);
-+ switch (node->type) {
-+ u32 i;
-+ u32 j;
-+ u32 lngth;
-+ u32 tmpret;
-+ TokenType at;
-+ u16 av;
-+ case TREENODETYPE_NODE_BINARY_EQ:
-+ case TREENODETYPE_NODE_BINARY_LT:
-+ node->data.nodeBin.attribute_ptr = (model->predictors_ptr) + (*((*ptr)++));
-+ node->data.nodeBin.value = *((*ptr)++);
-+ retval = sizeof(node->data.nodeBin);
-+ retval += ipack_compressor_init_tree(ptr, model, (void *) ROUND_UP_TO_DWORD(((u32) node) + sizeof(node->type) + sizeof(node->data.nodeBin)), nullnode);
-+ node->data.nodeBin.right_child_ptr = (void *) ROUND_UP_TO_DWORD(((u32) node) + retval + sizeof(node->type));
-+ retval += ipack_compressor_init_tree(ptr, model, node->data.nodeBin.right_child_ptr, nullnode);
-+ break;
-+ case TREENODETYPE_LEAF_P:
-+ lngth = *((*ptr)++);
-+ av = 0;
-+ for (i = 0, j = 0; i < lngth; ++i) {
-+ at = *((*ptr)++);
-+ while (j < at) {
-+ node->data.leafP.probabilities[j++] = av;
-+ }
-+ av += *((*ptr)++);
-+ }
-+ while (j < NUMBER_OF_TOKENS) {
-+ node->data.leafP.probabilities[j++] = av;
-+ }
-+ for (i = 0; i < NUMBER_OF_TOKENS; ++i) {
-+ node->data.leafP.probabilities[i] = ((node->data.leafP.probabilities[i] << PROBABILITY_SHIFT) / node->data.leafP.probabilities[NUMBER_OF_TOKENS - 1]);
-+ }
-+ retval = ROUND_UP_TO_DWORD(NUMBER_OF_TOKENS * sizeof(u16));
-+ break;
-+ case TREENODETYPE_LEAF_C:
-+ node->data.leafC.predicted_class = *((*ptr)++);
-+ retval = sizeof(node->data.leafC);
-+ retval = ROUND_UP_TO_DWORD(retval);
-+ break;
-+ default:
-+ return 0;
-+ }
-+ return retval + sizeof(node->type);
-+}
-+
-+#define IPACK_TREE_CONVERT_REPLACE 0
-+#define IPACK_TREE_CONVERT_KEEP 1
-+
-+static void *ipack_tree_to_code(ipack_model_type * model, int *code_size);
-+
-+static int ipack_armlib_convert_tree_to_code(ipack_model_type * model_img, int mode)
-+{
-+#ifdef IPACK_TREE_TO_CODE
-+ int tree_size;
-+
-+ model_img->tree_code = ipack_tree_to_code(model_img, &tree_size);
-+ jffs2_bbc_print2("Convertation done. Code size=%d\n", tree_size);
-+ if (mode == IPACK_TREE_CONVERT_REPLACE) {
-+ jffs2_bbc_print1("Freeing original tree.\n");
-+ jffs2_bbc_free(model_img->tree_root_ptr);
-+ model_img->tree_root_ptr = NULL;
-+ }
-+#endif
-+ return 0;
-+}
-+
-+
-+static int ipack_armlib_compressor_init(void **model)
-+{
-+ int retval = EC_NO_ERROR;
-+ unsigned char *tmp_ptr = *model;
-+ u32 i;
-+ ipack_model_type *model_img;
-+ char tmp_c[2];
-+
-+ if (*(tmp_ptr++) != 'i') {
-+ return EC_NOT_IPMF_FILE;
-+ }
-+ else if (*(tmp_ptr++) != 'P') {
-+ return EC_NOT_IPMF_FILE;
-+ }
-+ else if (*(tmp_ptr++) != 'M') {
-+ return EC_NOT_IPMF_FILE;
-+ }
-+ else if (*(tmp_ptr++) != 'F') {
-+ return EC_NOT_IPMF_FILE;
-+ }
-+ tmp_c[0] = *(tmp_ptr++);
-+ tmp_c[1] = *(tmp_ptr++);
-+ tmp_ptr += 2;
-+
-+ //model_img = jffs2_bbc_malloc(*((u32*)tmp_ptr));
-+ model_img = jffs2_bbc_malloc(sizeof(ipack_model_type) + ROUND_UP_TO_DWORD(NUMBER_OF_PREDICTORS));
-+ model_img->tree_root_ptr = jffs2_bbc_malloc(*((u32 *) tmp_ptr)); //it is smaller a little but, but...
-+
-+ tmp_ptr += sizeof(u32);
-+
-+ model_img->ID[0] = 'i';
-+ model_img->ID[1] = 'P';
-+ model_img->ID[2] = 'M';
-+ model_img->ID[3] = 'F';
-+
-+ model_img->block_sign[0] = tmp_c[0];
-+ model_img->block_sign[1] = tmp_c[1];
-+
-+ model_img->nullnode.type = TREENODETYPE_LEAF_P;
-+ for (i = 0; i < NUMBER_OF_TOKENS; ++i) {
-+ model_img->nullnode.probabilities[i] = 0;
-+ }
-+ model_img->predictors_ptr = (void *) (((u32) model_img) + sizeof(ipack_model_type));
-+ //model_img->tree_root_ptr = (void*)ROUND_UP_TO_DWORD(((u32)(model_img->predictors_ptr)) + NUMBER_OF_PREDICTORS);//ALIGN
-+
-+ ipack_compressor_init_tree(&tmp_ptr, model_img, model_img->tree_root_ptr, &(model_img->nullnode));
-+
-+#ifdef IPACK_TREE_TO_CODE
-+#ifdef IPACK_AUTO_TREE_TO_CODE
-+ jffs2_bbc_print1("Automatically converting tree to ARM code...\n");
-+ ipack_armlib_convert_tree_to_code(model_img, IPACK_TREE_CONVERT_REPLACE);
-+#else
-+ model_img->tree_code = NULL;
-+#endif
-+#else
-+ model_img->tree_code = NULL;
-+#endif
-+
-+ jffs2_bbc_free(*model);
-+ *model = model_img;
-+ return retval;
-+}
-+
-+/*******************************************************************************
-+
-+ COMPRESSOR DEINIT FUNCTIONS
-+
-+*******************************************************************************/
-+
-+
-+/* Descructor of compressor (model will be freed with jffs2_bbc_free() after it)*/
-+static void ipack_armlib_compressor_deinit(void)
-+{
-+}
-+
-+/*******************************************************************************
-+
-+ COMPRESS FUNCTIONS
-+
-+*******************************************************************************/
-+
-+static int writebits0(unsigned char **dest, u8 * freebits, u32 * opposite, unsigned char *end)
-+{
-+ if (!(*freebits)) {
-+ ++(*dest);
-+ *freebits = 7;
-+ **dest = 0x00;
-+ }
-+ else {
-+ --(*freebits);
-+ (**dest) <<= 1;
-+ }
-+ if ((*dest == end) && !(*freebits)) {
-+ return EC_BUFFER_OVERFLOW;
-+ }
-+ while (*opposite) {
-+ --(*opposite);
-+ if (!(*freebits)) {
-+ ++(*dest);
-+ *freebits = 7;
-+ **dest = 0x01;
-+ }
-+ else {
-+ --(*freebits);
-+ (**dest) <<= 1;
-+ (**dest) |= 0x01;
-+ }
-+ if ((*dest == end) && !(*freebits)) {
-+ return EC_BUFFER_OVERFLOW;
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int writebits1(unsigned char **dest, u8 * freebits, u32 * opposite, unsigned char *end)
-+{
-+ if (!(*freebits)) {
-+ ++(*dest);
-+ *freebits = 7;
-+ **dest = 0x01;
-+ }
-+ else {
-+ --(*freebits);
-+ (**dest) <<= 1;
-+ (**dest) |= 0x01;
-+ }
-+ if ((*dest == end) && !(*freebits)) {
-+ return EC_BUFFER_OVERFLOW;
-+ }
-+ while (*opposite) {
-+ --(*opposite);
-+ if (!(*freebits)) {
-+ ++(*dest);
-+ *freebits = 7;
-+ **dest = 0x00;
-+ }
-+ else {
-+ --(*freebits);
-+ (**dest) <<= 1;
-+ }
-+ if ((*dest == end) && !(*freebits)) {
-+ return EC_BUFFER_OVERFLOW;
-+ }
-+ }
-+ return 0;
-+}
-+
-+
-+
-+
-+/* Compress block
-+ * *dstlen bytes are allocated.
-+ * if it is not enough write *sourcelen over to the processed amount of data
-+ * returns non zero if fails
-+ */
-+static int ipack_armlib_compress(void *model, unsigned char *input, unsigned char *output, unsigned long *sourcelen, unsigned long *dstlen)
-+{
-+ register u32 coder_high = CODER_VALUEMAX - 1;
-+ register u32 coder_low = 0;
-+ u32 coder_opbits = 0;
-+ u8 bitvector_freebits = 8;
-+ unsigned char *bitvector_ptr = output;
-+ unsigned char *bitvector_end = output + (*dstlen - 1);
-+ ARM_DataType *tmpp;
-+ TokenStream tmpv;
-+ TokenType *it;
-+ void *end_it;
-+
-+ ipack_nodetype *treeroot = ((ipack_model_type *) model)->tree_root_ptr;
-+ PredictorType *predctrs = ((ipack_model_type *) model)->predictors_ptr;
-+
-+#ifdef IPACK_TREE_TO_CODE
-+ void (*treefunc) (ipack_nodetype *, TokenType, ipack_probability_type *);
-+
-+ treefunc = ((ipack_model_type *) model)->tree_code;
-+ if (treefunc != NULL)
-+ treefunc += 4;
-+#endif
-+
-+ if ((*sourcelen % 4) != 0) {
-+ return EC_WRONG_INPUT_LENGTH;
-+ }
-+ if (*dstlen <= 4) {
-+ return EC_BUFFER_OVERFLOW;
-+ }
-+
-+ if (((ipack_model_type *) model)->ID[0] != 'i') {
-+ return EC_NOT_IPMF_MODEL;
-+ }
-+ else if (((ipack_model_type *) model)->ID[1] != 'P') {
-+ return EC_NOT_IPMF_MODEL;
-+ }
-+ else if (((ipack_model_type *) model)->ID[2] != 'M') {
-+ return EC_NOT_IPMF_MODEL;
-+ }
-+ else if (((ipack_model_type *) model)->ID[3] != 'F') {
-+ return EC_NOT_IPMF_MODEL;
-+ }
-+#ifdef TXT_TOKENS
-+ tmpv.capacity = (*sourcelen);
-+#else
-+ tmpv.capacity = (*sourcelen) << 1;
-+#endif
-+ tmpv.size = tmpv.capacity;
-+ tmpv.ptr = jffs2_bbc_malloc(tmpv.size);
-+ it = tmpv.ptr;
-+
-+#ifndef __KERNEL__
-+ if (ipack_glb_endian_X) {
-+ for (tmpp = (void *) input; (u32) tmpp < (u32) (input + *sourcelen); ++tmpp) {
-+#ifdef TXT_TOKENS
-+ *(it++) = (u8) ((*tmpp & 0xff000000) >> 24);
-+ *(it++) = (u8) ((*tmpp & 0x00ff0000) >> 16);
-+ *(it++) = (u8) ((*tmpp & 0x0000ff00) >> 8);
-+ *(it++) = (u8) ((*tmpp & 0x000000ff));
-+#else
-+ *(it++) = (u8) ((*tmpp & 0x0000f000) >> 12);
-+ *(it++) = (u8) ((*tmpp & 0x0000000f));
-+ *(it++) = (u8) ((*tmpp & 0xf0000000) >> 28);
-+ *(it++) = (u8) ((*tmpp & 0x000f0000) >> 16);
-+ *(it++) = (u8) ((*tmpp & 0x00000f00) >> 8);
-+ *(it++) = (u8) ((*tmpp & 0x00f00000) >> 20);
-+ *(it++) = (u8) ((*tmpp & 0x0f000000) >> 24);
-+ *(it++) = (u8) ((*tmpp & 0x000000f0) >> 4);
-+#endif //TXT_TOKENS
-+ }
-+ }
-+ else {
-+#endif
-+ for (tmpp = (void *) input; (u32) tmpp < (u32) (input + *sourcelen); ++tmpp) {
-+#ifdef TXT_TOKENS
-+ *(it++) = (u8) ((*tmpp & 0x000000ff));
-+ *(it++) = (u8) ((*tmpp & 0x0000ff00) >> 8);
-+ *(it++) = (u8) ((*tmpp & 0x00ff0000) >> 16);
-+ *(it++) = (u8) ((*tmpp & 0xff000000) >> 24);
-+#else
-+ *(it++) = (u8) ((*tmpp & 0x00f00000) >> 20);
-+ *(it++) = (u8) ((*tmpp & 0x0f000000) >> 24);
-+ *(it++) = (u8) ((*tmpp & 0x000000f0) >> 4);
-+ *(it++) = (u8) ((*tmpp & 0x00000f00) >> 8);
-+ *(it++) = (u8) ((*tmpp & 0x000f0000) >> 16);
-+ *(it++) = (u8) ((*tmpp & 0x0000f000) >> 12);
-+ *(it++) = (u8) ((*tmpp & 0x0000000f));
-+ *(it++) = (u8) ((*tmpp & 0xf0000000) >> 28);
-+#endif //TXT_TOKENS
-+ }
-+#ifndef __KERNEL__
-+ }
-+#endif
-+/*
-+ ENCODE
-+*/
-+ { //predictor reset
-+ register PredictorType *ptr = predctrs;
-+ register PredictorType *end = ptr + NUMBER_OF_PREDICTORS;
-+ while (ptr < end) {
-+ *(ptr++) = 0;
-+ }
-+ }
-+
-+ //*(bitvector_ptr++) = 'H';
-+ //*(bitvector_ptr++) = 'G';
-+ *(bitvector_ptr++) = ((ipack_model_type *) model)->block_sign[0];
-+ *(bitvector_ptr++) = ((ipack_model_type *) model)->block_sign[1];
-+
-+ *(bitvector_ptr++) = (unsigned char) (((*sourcelen) >> 8) & 0xff);
-+ *(bitvector_ptr++) = (unsigned char) ((*sourcelen) & 0xff);
-+ for (it = tmpv.ptr, end_it = VECTOR_S_END(tmpv); it != end_it; ++it) {
-+ ipack_probability_type prob;
-+ u32 range;
-+
-+#ifdef IPACK_TREE_TO_CODE
-+ if (treefunc != NULL)
-+ (*treefunc) (treeroot, *it, &prob);
-+ else
-+ ipack_model_get_probability_for_token(treeroot, *it, &prob);
-+#else
-+ ipack_model_get_probability_for_token(treeroot, *it, &prob);
-+#endif
-+
-+ if (prob.high == prob.low) {
-+ vector_clear(&tmpv);
-+ return EC_CODER_WRONG_PROBABILITY;
-+ }
-+ range = coder_high - coder_low + 1;
-+ coder_high = coder_low + ((range * prob.high) >> PROBABILITY_SHIFT) - 1;
-+ coder_low += ((range * prob.low) >> PROBABILITY_SHIFT);
-+ for (;;) {
-+ if (coder_high < CODER_VALUEHLF) {
-+ if (writebits0(&bitvector_ptr, &bitvector_freebits, &coder_opbits, bitvector_end)) {
-+ vector_clear(&tmpv);
-+ return EC_BUFFER_OVERFLOW;
-+ }
-+ }
-+ else if (coder_low >= CODER_VALUEHLF) {
-+ if (writebits1(&bitvector_ptr, &bitvector_freebits, &coder_opbits, bitvector_end)) {
-+ vector_clear(&tmpv);
-+ return EC_BUFFER_OVERFLOW;
-+ }
-+ coder_high -= CODER_VALUEHLF;
-+ coder_low -= CODER_VALUEHLF;
-+ }
-+ else if ((CODER_VALUE1ST <= coder_low) && (coder_high < CODER_VALUE3RD)) {
-+ ++coder_opbits;
-+ coder_high -= CODER_VALUE1ST;
-+ coder_low -= CODER_VALUE1ST;
-+ }
-+ else {
-+ break;
-+ }
-+ coder_high <<= 1;
-+ ++coder_high;
-+ coder_low <<= 1;
-+ if (coder_high < coder_low) {
-+ vector_clear(&tmpv);
-+ return EC_CODER_WRONG_RANGE;
-+ }
-+ }
-+ {
-+#ifdef TXT_TOKENS
-+// register u32 ndx;
-+ predctrs[0] = *it;
-+ if ((('a' <= *it) && (*it <= 'z')) || (('A' <= *it) && (*it <= 'Z'))) {
-+ ++(predctrs[1]);
-+ }
-+ else {
-+ predctrs[1] = 0;
-+ }
-+#else
-+ register u32 ndx = predctrs[0] + 1;
-+ predctrs[ndx + 8] = predctrs[ndx];
-+ predctrs[ndx] = *it;
-+ if (ndx == 8) {
-+ predctrs[0] = 0;
-+ }
-+ else {
-+ ++predctrs[0];
-+ }
-+#endif
-+ }
-+
-+ }
-+ vector_clear(&tmpv);
-+ ++coder_opbits;
-+ if (coder_low < CODER_VALUE1ST) {
-+ if (writebits0(&bitvector_ptr, &bitvector_freebits, &coder_opbits, bitvector_end)) {
-+ return EC_BUFFER_OVERFLOW;
-+ }
-+ }
-+ else {
-+ if (writebits1(&bitvector_ptr, &bitvector_freebits, &coder_opbits, bitvector_end)) {
-+ return EC_BUFFER_OVERFLOW;
-+ }
-+ }
-+ (*(bitvector_ptr)) <<= bitvector_freebits;
-+ *dstlen = ((u32) bitvector_ptr - (u32) output + 1);
-+ return EC_NO_ERROR;
-+}
-+
-+/*******************************************************************************
-+
-+ DECOMPRESS FUNCTIONS
-+
-+*******************************************************************************/
-+
-+typedef struct
-+{
-+ u32 high;
-+ u32 low;
-+ u32 value;
-+ u32 overread;
-+} ipack_decompressor_values;
-+
-+typedef struct
-+{
-+ u8 freebits;
-+ unsigned char *ptr;
-+ unsigned char *end;
-+} ipack_decompressor_bitvector;
-+
-+static u8 ipack_bitvector_R_get1(ipack_decompressor_bitvector * bv)
-+{
-+ u8 tmp;
-+ if (bv->ptr == bv->end) {
-+ bv->freebits = 0;
-+ return 0;
-+ }
-+ tmp = (*(bv->ptr) >> bv->freebits) & 0x01;
-+ if (!(bv->freebits)) {
-+ bv->freebits = 7;
-+ ++(bv->ptr);
-+ }
-+ else {
-+ --(bv->freebits);
-+ }
-+ return tmp;
-+}
-+
-+/* Decompress block
-+ * returns non zero if fails
-+ */
-+static int ipack_armlib_decompress(void *model, unsigned char *input, unsigned char *output, unsigned long sourcelen, unsigned long dstlen)
-+{
-+ ARM_DataType *data;
-+ register u32 coder_high = CODER_VALUEMAX - 1;
-+ register u32 coder_low = 0;
-+ register u32 coder_value = 0;
-+ u32 coder_overread = 0;
-+ ipack_decompressor_bitvector bitvector;
-+ u32 lngth;
-+ u32 i;
-+ u32 cntbytes;
-+ TokenType tkns[8];
-+ TokenType *tptr;
-+
-+ ipack_nodetype *treeroot = ((ipack_model_type *) model)->tree_root_ptr;
-+ PredictorType *predctrs = ((ipack_model_type *) model)->predictors_ptr;
-+
-+#ifdef IPACK_TREE_TO_CODE
-+ TokenType(*treefunc) (ipack_nodetype *, u32, u32, ipack_probability_type *);
-+
-+ treefunc = ((ipack_model_type *) model)->tree_code;
-+#endif
-+
-+
-+ if (((ipack_model_type *) model)->ID[0] != 'i') {
-+ return EC_NOT_IPMF_MODEL;
-+ }
-+ else if (((ipack_model_type *) model)->ID[1] != 'P') {
-+ return EC_NOT_IPMF_MODEL;
-+ }
-+ else if (((ipack_model_type *) model)->ID[2] != 'M') {
-+ return EC_NOT_IPMF_MODEL;
-+ }
-+ else if (((ipack_model_type *) model)->ID[3] != 'F') {
-+ return EC_NOT_IPMF_MODEL;
-+ }
-+
-+ bitvector.freebits = 7;
-+ bitvector.ptr = input;
-+ bitvector.end = input + sourcelen;
-+
-+ /*if(*(bitvector.ptr++) != 'H') {
-+ return EC_NOT_HG_BLOCK;
-+ } else if(*(bitvector.ptr++) != 'G') {
-+ return EC_NOT_HG_BLOCK;
-+ } */
-+ bitvector.ptr++;
-+ bitvector.ptr++;
-+
-+ data = (void *) output;
-+ cntbytes = *(bitvector.ptr++);
-+ cntbytes <<= 8;
-+ cntbytes += *(bitvector.ptr++);
-+
-+ { //predictor reset
-+ register PredictorType *ptr = predctrs;
-+ register PredictorType *end = ptr + NUMBER_OF_PREDICTORS;
-+ while (ptr < end) {
-+ *(ptr++) = 0;
-+ }
-+ }
-+ for (i = 0; i < CODER_VALUEBITS; ++i) {
-+ coder_value <<= 1;
-+ coder_value += ipack_bitvector_R_get1(&bitvector);
-+ }
-+ lngth = dstlen >> 2;
-+ if (lngth > (cntbytes >> 2)) {
-+ lngth = cntbytes >> 2;
-+ }
-+ for (i = 0; (i < lngth); ++i) {
-+ TokenType itoken;
-+ u32 j;
-+ tptr = tkns;
-+ for (j = 0; j < NUMBER_OF_TOKENS_PER_INSTRUCTION; ++j) {
-+ ipack_probability_type prob;
-+ u32 range = coder_high - coder_low + 1;
-+
-+#ifdef IPACK_TREE_TO_CODE
-+ if (treefunc != NULL)
-+ itoken = (*treefunc) (treeroot, coder_value - coder_low + 1, range, &prob);
-+ else
-+#endif
-+ itoken = ipack_model_get_token_for_range(treeroot, coder_value - coder_low + 1, range, &prob);
-+
-+
-+ if (prob.high == prob.low) {
-+ return EC_CODER_WRONG_PROBABILITY;
-+ }
-+ coder_high = coder_low + ((range * prob.high) >> PROBABILITY_SHIFT) - 1;
-+ coder_low += ((range * prob.low) >> PROBABILITY_SHIFT);
-+ for (;;) {
-+ if (coder_high < CODER_VALUEHLF) {
-+ }
-+ else if (CODER_VALUEHLF <= coder_low) {
-+ coder_value -= CODER_VALUEHLF;
-+ coder_high -= CODER_VALUEHLF;
-+ coder_low -= CODER_VALUEHLF;
-+ }
-+ else if ((CODER_VALUE1ST <= coder_low) && (coder_high < CODER_VALUE3RD)) {
-+ coder_value -= CODER_VALUE1ST;
-+ coder_high -= CODER_VALUE1ST;
-+ coder_low -= CODER_VALUE1ST;
-+ }
-+ else {
-+ break;
-+ }
-+ coder_low <<= 1;
-+ coder_high <<= 1;
-+ ++(coder_high);
-+ coder_value <<= 1;
-+ if (bitvector.ptr == bitvector.end) {
-+ bitvector.freebits = 0;
-+ }
-+ coder_value += ((*(bitvector.ptr) >> bitvector.freebits) & 0x01);
-+ if (bitvector.freebits) {
-+ --bitvector.freebits;
-+ }
-+ else {
-+ bitvector.freebits = 7;
-+ ++bitvector.ptr;
-+ }
-+ if (coder_high < coder_low) {
-+ return EC_CODER_WRONG_RANGE;
-+ }
-+ if ((bitvector.ptr == bitvector.end) && !(bitvector.freebits)) {
-+ if ((coder_overread++) > CODER_VALUEBITS) {
-+ return EC_BUFFER_UNDERFLOW;
-+ }
-+ }
-+ }
-+ {
-+#ifdef TXT_TOKENS
-+// register u32 ndx;
-+ predctrs[0] = itoken;
-+ if ((('a' <= itoken) && (itoken <= 'z')) || (('A' <= itoken) && (itoken <= 'Z'))) {
-+ ++(predctrs[1]);
-+ }
-+ else {
-+ predctrs[1] = 0;
-+ }
-+
-+#else
-+ register u32 ndx = predctrs[0] + 1;
-+ predctrs[ndx + 8] = predctrs[ndx];
-+ predctrs[ndx] = itoken;
-+ if (ndx == 8) {
-+ predctrs[0] = 0;
-+ }
-+ else {
-+ ++predctrs[0];
-+ }
-+#endif
-+ }
-+
-+ (*(tptr++)) = itoken;
-+ }
-+ tptr = tkns;
-+#ifndef __KERNEL__
-+ if (ipack_glb_endian_X) {
-+#ifdef TXT_TOKENS
-+ (*data) = ((*tptr) << 24);
-+ ++tptr;
-+ (*data) |= ((*tptr) << 16);
-+ ++tptr;
-+ (*data) |= ((*tptr) << 8);
-+ ++tptr;
-+ (*data) |= (*tptr);
-+ ++data;
-+#else
-+ (*data) = (((*tptr) & 0xf) << 12);
-+ ++tptr;
-+ (*data) |= ((*tptr) & 0xf);
-+ ++tptr;
-+ (*data) |= (((*tptr) & 0xf) << 28);
-+ ++tptr;
-+ (*data) |= (((*tptr) & 0xf) << 16);
-+ ++tptr;
-+ (*data) |= (((*tptr) & 0xf) << 8);
-+ ++tptr;
-+ (*data) |= (((*tptr) & 0xf) << 20);
-+ ++tptr;
-+ (*data) |= (((*tptr) & 0xf) << 24);
-+ ++tptr;
-+ (*data) |= (((*tptr) & 0xf) << 4);
-+ ++data;
-+#endif
-+ }
-+ else {
-+#endif
-+#ifdef TXT_TOKENS
-+ (*data) = (*tptr);
-+ ++tptr;
-+ (*data) |= ((*tptr) << 8);
-+ ++tptr;
-+ (*data) |= ((*tptr) << 16);
-+ ++tptr;
-+ (*data) |= ((*tptr) << 24);
-+ ++data;
-+#else
-+ (*data) = (((*tptr) & 0xf) << 20);
-+ ++tptr;
-+ (*data) |= (((*tptr) & 0xf) << 24);
-+ ++tptr;
-+ (*data) |= (((*tptr) & 0xf) << 4);
-+ ++tptr;
-+ (*data) |= (((*tptr) & 0xf) << 8);
-+ ++tptr;
-+ (*data) |= (((*tptr) & 0xf) << 16);
-+ ++tptr;
-+ (*data) |= (((*tptr) & 0xf) << 12);
-+ ++tptr;
-+ (*data) |= ((*tptr) & 0xf);
-+ ++tptr;
-+ (*data) |= (((*tptr) & 0xf) << 28);
-+ ++data;
-+#endif
-+#ifndef __KERNEL__
-+ }
-+#endif
-+ }
-+ return EC_NO_ERROR;
-+}
-+
-+static int ipack_armlib_estimate(void *model, unsigned char *input, unsigned long sourcelen, unsigned long *dstlen, unsigned long *readtime, unsigned long *writetime)
-+{
-+ int i, tmp, tmp2, max, maxi;
-+ int cnt_cond[] = { 0, 0, 0, 0 };
-+ int cnt_inst[] = { 0, 0, 0, 0 };
-+
-+ // TODO: make a more precise estimation!!!
-+ *readtime = JFFS2_BBC_ZLIB_READ_TIME * 6;
-+ *writetime = JFFS2_BBC_ZLIB_WRITE_TIME * 2;
-+
-+ if (sourcelen % 4 != 0) {
-+ *dstlen = sourcelen;
-+ return 0;
-+ }
-+ for (i = 0; i < sourcelen; i++, input++) {
-+ tmp2 = tmp = *input;
-+ tmp = ((tmp) & 0xf0) >> 4;
-+ tmp2 = tmp2 & 0xf;
-+ if (tmp == 14)
-+ cnt_cond[i % 4]++;
-+ if ((tmp2 == 2) || (tmp2 == 3))
-+ cnt_inst[i % 4]++;
-+ }
-+ maxi = -1;
-+ max = -1;
-+ for (i = 0; i < 4; i++)
-+ if (max < cnt_cond[i]) {
-+ max = cnt_cond[i];
-+ maxi = i;
-+ }
-+ /*jffs2_bbc_print("armlib_EST: %d/%d : %d/%d %d/%d %d/%d %d/%d",
-+ cnt_cond[maxi],cnt_inst[maxi],
-+ cnt_cond[0],cnt_inst[0],
-+ cnt_cond[1],cnt_inst[1],
-+ cnt_cond[2],cnt_inst[2],
-+ cnt_cond[3],cnt_inst[3]); */
-+
-+ if (cnt_cond[maxi] < (sourcelen >> 4)) {
-+ *dstlen = sourcelen;
-+ }
-+ else {
-+ *dstlen = sourcelen / 3;
-+ }
-+
-+ return 0;
-+}
-+
-+static char *ipack_armlib_proc_info(void);
-+static int ipack_armlib_proc_command(char *command);
-+static void ipack_armlib_destroy_model(void **model);
-+
-+struct jffs2_bbc_compressor_type jffs2_bbc_armlib = {
-+ "armlib",
-+ 0x464d5069,
-+ {0, 0, 0, 0},
-+ NULL, // init
-+ ipack_armlib_compressor_init, // init_model
-+ ipack_armlib_destroy_model, // destroy_model
-+ ipack_armlib_compressor_deinit, // deinit
-+ ipack_armlib_compress,
-+ ipack_armlib_estimate,
-+ ipack_armlib_decompress,
-+ ipack_armlib_proc_info,
-+ ipack_armlib_proc_command
-+};
-+
-+
-+static char *ipack_armlib_proc_info()
-+{
-+#ifdef IPACK_TREE_TO_CODE
-+#ifdef IPACK_AUTO_TREE_TO_CODE
-+ return "automatic tree to code conversion";
-+#else
-+ return "manual tree to code conversion possibility";
-+#endif
-+#else
-+ return "tree in memory version";
-+#endif
-+}
-+
-+static int ipack_armlib_proc_command(char *command)
-+{
-+ struct jffs2_bbc_model_list_node *model;
-+ ipack_model_type *armlib_model;
-+
-+ if ((*command == 'g') || (*command == 'G')) {
-+ jffs2_bbc_print1("Converting tree(s) to ARM code... (keeping original)\n");
-+ model = jffs2_bbc_armlib.models;
-+ if (model == NULL)
-+ jffs2_bbc_print1("no model found!\n");
-+ while (model != NULL) {
-+ armlib_model = model->model;
-+ if (armlib_model == NULL) {
-+ jffs2_bbc_print1("Error: NULL model!\n");
-+ }
-+ else {
-+ ipack_armlib_convert_tree_to_code(armlib_model, IPACK_TREE_CONVERT_KEEP);
-+ }
-+ model = model->next_compr_model;
-+ }
-+ }
-+ else if ((*command == 'r') || (*command == 'R')) {
-+ jffs2_bbc_print1("Converting tree(s) to ARM code... (deleting original)\n");
-+ model = jffs2_bbc_armlib.models;
-+ if (model == NULL)
-+ jffs2_bbc_print1("no model found!\n");
-+ while (model != NULL) {
-+ armlib_model = model->model;
-+ if (armlib_model == NULL) {
-+ jffs2_bbc_print1("Error: NULL model!\n");
-+ }
-+ else {
-+ //armlib_model->tree_code = ipack_tree_to_code(armlib_model, &tree_size);
-+ //jffs2_bbc_print("Convertation done. Code size=%d\n",tree_size);
-+ ipack_armlib_convert_tree_to_code(armlib_model, IPACK_TREE_CONVERT_REPLACE);
-+ }
-+ model = model->next_compr_model;
-+ }
-+ }
-+ else if ((*command == 'c') || (*command == 'C')) {
-+ jffs2_bbc_print1("Deleting ARM representation of the tree(s)...\n");
-+ model = jffs2_bbc_armlib.models;
-+ if (model == NULL)
-+ jffs2_bbc_print1("no model found!\n");
-+ while (model != NULL) {
-+ armlib_model = model->model;
-+ if (armlib_model == NULL) {
-+ jffs2_bbc_print1("Error: NULL model!\n");
-+ }
-+ else {
-+ if (armlib_model->tree_code == NULL) {
-+ jffs2_bbc_print1("already deleted.\n");
-+ }
-+ else {
-+ if (armlib_model->tree_root_ptr == NULL) {
-+ jffs2_bbc_print1("cannot delete this ARM tree - original tree has deleted\n");
-+ }
-+ else {
-+ jffs2_bbc_print1("deleting...");
-+ jffs2_bbc_free(armlib_model->tree_code);
-+ armlib_model->tree_code = NULL;
-+ jffs2_bbc_print1("done.\n");
-+ }
-+ }
-+ }
-+ model = model->next_compr_model;
-+ }
-+ }
-+ else if (*command == '?') {
-+ jffs2_bbc_print1("ARMLIB commands:\n");
-+ jffs2_bbc_print1(" g: convert TREEs to ARM code and keep the original\n");
-+ jffs2_bbc_print1(" r: convert TREEs to ARM code and remove the original\n");
-+ jffs2_bbc_print1(" c: delete the original TREEs - if there is any\n");
-+ }
-+ else {
-+ jffs2_bbc_print1("Unknown command.\n");
-+ }
-+ return 0;
-+}
-+
-+static void ipack_armlib_destroy_model(void **model)
-+{
-+ ipack_model_type *model_img;
-+
-+ model_img = *model;
-+ if (model_img == NULL) {
-+ jffs2_bbc_print1("jffs2.bbc: armlib: NULL model at destoying model!\n");
-+ return;
-+ }
-+ if (model_img->tree_code != NULL) {
-+ //jffs2_bbc_print1("jffs2.bbc: armlib: debug: freeing code...\n");
-+ jffs2_bbc_free(model_img->tree_code);
-+ model_img->tree_code = NULL;
-+ }
-+ if (model_img->tree_root_ptr != NULL) {
-+ //jffs2_bbc_print1("jffs2.bbc: armlib: debug: freeing tree...\n");
-+ jffs2_bbc_free(model_img->tree_root_ptr);
-+ model_img->tree_root_ptr = NULL;
-+ }
-+
-+ jffs2_bbc_free(model_img);
-+ *model = NULL;
-+}
-+
-+struct jffs2_bbc_compressor_type *jffs2_bbc_armlib_init(int mode)
-+{
-+ if (jffs2_bbc_register_compressor(&jffs2_bbc_armlib) == 0)
-+ return &jffs2_bbc_armlib;
-+ else
-+ return NULL;
-+}
-+
-+void jffs2_bbc_armlib_deinit(void)
-+{
-+ jffs2_bbc_unregister_compressor(&jffs2_bbc_armlib);
-+}
-+
-+/*END OF ARMLIB*/
-diff -Nur linux-mips-cvs/fs/jffs2/jffs2_bbc_framework.c linux-mips/fs/jffs2/jffs2_bbc_framework.c
---- linux-mips-cvs/fs/jffs2/jffs2_bbc_framework.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/jffs2_bbc_framework.c 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,1324 @@
-+/*
-+ * JFFS2-BBC: Compression Framework
-+ *
-+ * $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+ *
-+ * Copyright (C) 2004, Ferenc Havasi
-+ *
-+ * 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.
-+ *
-+ */
-+
-+/* USE JFFS2_BBC_STANDALONE define if you don't want to compile without JFFS2 */
-+
-+//#define DEBUG_COMPRESSORS
-+//#define DEBUG_SHOW_BLOCK_SIZES
-+
-+#define JFFS2_BBC_STAT_BUFF_SIZE 8000
-+
-+#ifndef __KERNEL__
-+
-+#include <stdio.h>
-+#include <malloc.h>
-+typedef unsigned long uint32_t;
-+
-+#else
-+
-+#include <linux/kernel.h>
-+#include <linux/slab.h>
-+#include <linux/vmalloc.h>
-+
-+#endif
-+
-+#define JFFS2_BBC_ZLIB_BLOCK_SIGN_0 (120)
-+#define JFFS2_BBC_ZLIB_BLOCK_SIGN_1 (94)
-+
-+#define JFFS2_BBC_DUMMY_BLOCKSIGN_0 (0x54)
-+#define JFFS2_BBC_DUMMY_BLOCKSIGN_1 (0x01)
-+
-+#ifndef NULL
-+#define NULL ((void*)(0))
-+#endif
-+
-+#include "jffs2_bbc_framework.h"
-+
-+/*********************************************************************
-+ * Global data *
-+ *********************************************************************/
-+
-+static int jffs2_bbc_compression_mode = JFFS2_BBC_ZLIB_MODE;
-+static struct jffs2_bbc_compressor_type *jffs2_bbc_manual_compressor = NULL;
-+static struct jffs2_bbc_compressor_type *jffs2_bbc_compressors = NULL;
-+static struct jffs2_bbc_model_list_node *jffs2_bbc_model_list = NULL;
-+static void *last_sb = NULL; /* previously activated sb */
-+
-+/*********************************************************************
-+ * Compressor initialization *
-+ *********************************************************************/
-+
-+#ifndef JFFS2_BBC_STANDALONE
-+
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_ARMLIB)
-+struct jffs2_bbc_compressor_type *jffs2_bbc_armlib_init(void);
-+void jffs2_bbc_armlib_deinit(void);
-+#endif
-+
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_LZO)
-+struct jffs2_bbc_compressor_type *jffs2_bbc_lzo_init(void);
-+void jffs2_bbc_lzo_deinit(void);
-+#endif
-+
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_LZSS)
-+struct jffs2_bbc_compressor_type *jffs2_bbc_lzss_init(void);
-+void jffs2_bbc_lzss_deinit(void);
-+#endif
-+
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_LZARI)
-+struct jffs2_bbc_compressor_type *jffs2_bbc_lzari_init(void);
-+void jffs2_bbc_lzari_deinit(void);
-+#endif
-+
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_LZHD)
-+struct jffs2_bbc_compressor_type *jffs2_bbc_lzhd_init(void);
-+void jffs2_bbc_lzhd_deinit(void);
-+#endif
-+
-+void jffs2_bbc_compressor_init()
-+{
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_ARMLIB)
-+ jffs2_bbc_armlib_init();
-+#endif
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_LZO)
-+ jffs2_bbc_lzo_init();
-+#endif
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_LZSS)
-+ jffs2_bbc_lzss_init();
-+#endif
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_LZARI)
-+ jffs2_bbc_lzari_init();
-+#endif
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_LZHD)
-+ jffs2_bbc_lzhd_init();
-+#endif
-+}
-+
-+void jffs2_bbc_compressor_deinit()
-+{
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_LZHD)
-+ jffs2_bbc_lzhd_deinit();
-+#endif
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_LZARI)
-+ jffs2_bbc_lzari_deinit();
-+#endif
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_LZSS)
-+ jffs2_bbc_lzss_deinit();
-+#endif
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_LZO)
-+ jffs2_bbc_lzo_deinit();
-+#endif
-+#if !defined(__KERNEL__) || defined(CONFIG_JFFS2_BBC_ARMLIB)
-+ jffs2_bbc_armlib_deinit();
-+#endif
-+}
-+
-+#endif
-+
-+#ifndef JFFS2_BBC_STANDALONE
-+
-+/*********************************************************************
-+ * ZLIB COMPRESSOR *
-+ *********************************************************************/
-+
-+extern int jffs2_zlib_compress2(unsigned char *data_in, unsigned char *cpage_out, uint32_t * sourcelen, uint32_t * dstlen);
-+extern void jffs2_zlib_decompress2(unsigned char *data_in, unsigned char *cpage_out, uint32_t srclen, uint32_t destlen);
-+
-+static int jffs2_bbc_zlib_compress(void *model, unsigned char *input, unsigned char *output, unsigned long *sourcelen, unsigned long *dstlen)
-+{
-+ return jffs2_zlib_compress2(input, output, sourcelen, dstlen);
-+}
-+
-+static int jffs2_bbc_zlib_decompress(void *model, unsigned char *input, unsigned char *output, unsigned long sourcelen, unsigned long dstlen)
-+{
-+ jffs2_zlib_decompress2(input, output, sourcelen, dstlen);
-+ return 0;
-+}
-+
-+static int jffs2_bbc_zlib_estimate(void *model, unsigned char *input, unsigned long sourcelen, unsigned long *dstlen, unsigned long *readtime, unsigned long *writetime)
-+{
-+ *dstlen = sourcelen * 65 / 100;
-+ *readtime = JFFS2_BBC_ZLIB_READ_TIME;
-+ *writetime = JFFS2_BBC_ZLIB_WRITE_TIME;
-+ return 0;
-+}
-+
-+static struct jffs2_bbc_compressor_type jffs2_bbc_zlib = {
-+ "zlib",
-+ 0,
-+ {JFFS2_BBC_ZLIB_BLOCK_SIGN_0, JFFS2_BBC_ZLIB_BLOCK_SIGN_1, 0, 0},
-+ NULL,
-+ NULL,
-+ NULL,
-+ NULL,
-+ jffs2_bbc_zlib_compress,
-+ jffs2_bbc_zlib_estimate,
-+ jffs2_bbc_zlib_decompress,
-+ NULL,
-+ NULL,
-+ 1
-+};
-+
-+static struct jffs2_bbc_compressor_type *jffs2_bbc_original_compressor = &jffs2_bbc_zlib;
-+
-+#endif
-+
-+/*********************************************************************
-+ * Compression mode handling *
-+ *********************************************************************/
-+
-+int jffs2_bbc_get_compression_mode(void)
-+{
-+ return jffs2_bbc_compression_mode;
-+}
-+
-+void jffs2_bbc_set_compression_mode(int mode)
-+{
-+ jffs2_bbc_compression_mode = mode;
-+}
-+
-+void jffs2_bbc_set_manual_compressor(struct jffs2_bbc_compressor_type *c)
-+{
-+ jffs2_bbc_manual_compressor = c;
-+ jffs2_bbc_set_compression_mode(JFFS2_BBC_MANUAL_MODE);
-+}
-+
-+int jffs2_bbc_set_manual_compressor_by_name(char *name)
-+{
-+ struct jffs2_bbc_compressor_type *l;
-+ int i;
-+
-+ l = jffs2_bbc_compressors;
-+ while (l != NULL) {
-+ for (i = 0; i < 1000; i++) {
-+ if (l->name[i] == 0) {
-+ jffs2_bbc_set_manual_compressor(l);
-+ return 0;
-+ }
-+ else if (name[i] == 0)
-+ i = 1000;
-+ else if (name[i] != l->name[i])
-+ i = 1000;
-+ }
-+ l = l->next;
-+ }
-+ jffs2_bbc_set_manual_compressor(NULL);
-+ return 1;
-+}
-+
-+static struct jffs2_bbc_compressor_type *jffs2_bbc_get_compressor_by_name(char *name)
-+{
-+ struct jffs2_bbc_compressor_type *l;
-+ int i;
-+
-+#ifndef JFFS2_BBC_STANDALONE
-+ l = jffs2_bbc_original_compressor;
-+ for (i = 0; i < 1000; i++) {
-+ if (l->name[i] == 0) {
-+ return l;
-+ }
-+ else if (name[i] == 0)
-+ i = 1000;
-+ else if (name[i] != l->name[i])
-+ i = 1000;
-+ }
-+#endif
-+
-+ l = jffs2_bbc_compressors;
-+ while (l != NULL) {
-+ for (i = 0; i < 1000; i++) {
-+ if (l->name[i] == 0) {
-+ return l;
-+ }
-+ else if (name[i] == 0)
-+ i = 1000;
-+ else if (name[i] != l->name[i])
-+ i = 1000;
-+ }
-+ l = l->next;
-+ }
-+
-+ return NULL;
-+}
-+
-+int jffs2_bbc_disable_compressor_by_name(char *name)
-+{
-+ struct jffs2_bbc_compressor_type *l;
-+
-+ l = jffs2_bbc_get_compressor_by_name(name);
-+ if (l == NULL) return 1;
-+ l->enabled = 0;
-+ return 0;
-+}
-+
-+int jffs2_bbc_enable_compressor_by_name(char *name)
-+{
-+ struct jffs2_bbc_compressor_type *l;
-+
-+ l = jffs2_bbc_get_compressor_by_name(name);
-+ if (l == NULL) return 1;
-+ l->enabled = 1;
-+ return 0;
-+}
-+
-+void jffs2_bbc_compressor_command_by_name(char *name_and_command)
-+{
-+ struct jffs2_bbc_compressor_type *l;
-+ int i;
-+
-+ l = jffs2_bbc_compressors;
-+ while (l != NULL) {
-+ for (i = 0; i < 1000; i++) {
-+ if (l->name[i] == 0) {
-+ if (name_and_command[i] != ':') {
-+ jffs2_bbc_print1("jffs2.bbc: ':' missing after compressor name\n");
-+ }
-+ else {
-+ if (l->proc_command != NULL)
-+ l->proc_command(name_and_command + i + 1);
-+ }
-+ i = 1000;
-+ return;
-+ }
-+ else if (name_and_command[i] == 0) {
-+ i = 1000;
-+ }
-+ else if (name_and_command[i] != l->name[i]) {
-+ i = 1000;
-+ }
-+ }
-+ l = l->next;
-+ }
-+}
-+
-+struct jffs2_bbc_compressor_type *jffs2_bbc_get_manual_compressor(void)
-+{
-+ if (jffs2_bbc_get_compression_mode() != JFFS2_BBC_MANUAL_MODE) {
-+ jffs2_bbc_manual_compressor = NULL;
-+ }
-+ return jffs2_bbc_manual_compressor;
-+}
-+
-+/*********************************************************************
-+ * Compressor handling *
-+ *********************************************************************/
-+
-+struct jffs2_bbc_compressor_type *jffs2_bbc_get_compressor_list(void)
-+{
-+ return jffs2_bbc_compressors;
-+}
-+
-+struct jffs2_bbc_model_list_node *jffs2_bbc_get_model_list(void)
-+{
-+ return jffs2_bbc_model_list;
-+}
-+
-+int jffs2_bbc_register_compressor(struct jffs2_bbc_compressor_type *c)
-+{
-+ struct jffs2_bbc_compressor_type *l;
-+ struct jffs2_bbc_model_list_node *l2;
-+ int model_found = 0;
-+
-+ l = jffs2_bbc_compressors;
-+ /* Check for confilcts */
-+ while (l != NULL) {
-+ c->name[15] = 0;
-+ /*if (strcmp(c->name,l->name)==0) {
-+ jffs2_bbc_print1("jffs2.bbc: compressor is already loaded.");
-+ return -1;
-+ } */
-+ if ((l->model_file_sign == c->model_file_sign) && (c->model_file_sign != 0)) {
-+ jffs2_bbc_print1("jffs2.bbc: already used model file sign. fail.");
-+ return -1;
-+ }
-+ l = l->next;
-+ }
-+ /* Search and initialize model */
-+ c->models = NULL;
-+ c->mounted = 0;
-+ if (c->init != NULL) {
-+ if (c->init() != 0) {
-+ jffs2_bbc_print2("jffs2.bbc: cannot initialize compressor %s.\n", c->name);
-+ return -1;
-+ }
-+ }
-+ if (c->model_file_sign != 0) {
-+ l2 = jffs2_bbc_model_list;
-+ while (1) {
-+ if (l2 == NULL)
-+ break;
-+ if (c->model_file_sign == l2->sign) {
-+ if (l2->compressor != NULL) {
-+ jffs2_bbc_print2("jffs2.bbc: register for %s: BUG, model file already reserved!!!!\n", c->name);
-+ }
-+ else {
-+ if (c->init_model(&(l2->model)) != 0) {
-+ jffs2_bbc_print2("jffs2.bbc: cannot initialize compressor %s for a model", c->name);
-+ }
-+ else {
-+ l2->compressor = c;
-+ l2->next_compr_model = c->models;
-+ c->models = l2;
-+ c->mounted++;
-+ model_found++;
-+ }
-+ }
-+ }
-+ l2 = l2->next_model;
-+ }
-+ /*if (model_found==0) {
-+ jffs2_bbc_print2("jffs2.bbc: no macthing model file found for %s at this time (maybe later)\n",c->name);
-+ } */
-+ }
-+ /* Insert to the end of the compressor list */
-+ c->enabled = 1;
-+ c->buffer = NULL;
-+ c->buffer_size = 0;
-+ c->stat_compr_orig = c->stat_compr_new = c->stat_decompr = 0;
-+ c->next = NULL;
-+ if (jffs2_bbc_compressors == NULL) {
-+ jffs2_bbc_compressors = c;
-+ }
-+ else {
-+ l = jffs2_bbc_compressors;
-+ while (l->next != NULL)
-+ l = l->next;
-+ l->next = c;
-+ }
-+ return 0;
-+}
-+
-+int jffs2_bbc_unregister_compressor(struct jffs2_bbc_compressor_type *c)
-+{
-+ struct jffs2_bbc_compressor_type *l;
-+ struct jffs2_bbc_model_list_node *l2;
-+
-+ if (c->mounted != 0) {
-+ jffs2_bbc_print1("jffs2.bbc: Compressor is in use. Sorry.");
-+ return -1;
-+ }
-+ if (jffs2_bbc_compressors == NULL) {
-+ jffs2_bbc_print1("jffs2.bbc: unregister: empty list.");
-+ return -1;
-+ }
-+ else if (jffs2_bbc_compressors == c) {
-+ if (c->deinit != NULL)
-+ c->deinit();
-+ jffs2_bbc_compressors = c->next;
-+ }
-+ else {
-+ l = jffs2_bbc_compressors;
-+ while (l->next != c) {
-+ if (l->next == NULL) {
-+ jffs2_bbc_print2("jffs2.bbc: unregister: cannot find compressor %s in the list.", c->name);
-+ return -1;
-+ }
-+ l = l->next;
-+ }
-+ if (c->deinit != NULL)
-+ c->deinit();
-+ l->next = c->next;
-+ }
-+ if (c->buffer != NULL) {
-+ jffs2_bbc_free(c->buffer);
-+ c->buffer = NULL;
-+ c->buffer_size = 0;
-+ }
-+
-+ l2 = jffs2_bbc_model_list;
-+ while (l2 != NULL) {
-+ if (l2->compressor == c) {
-+ jffs2_bbc_print1("jffs2.bbc: unregister: BUG: model found!!!");
-+ l2->compressor = NULL;
-+ l2->next_compr_model = NULL;
-+ }
-+ l2 = l2->next_model;
-+ }
-+
-+ return 0;
-+}
-+
-+int jffs2_bbc_model_new(void *sb, int i_num, void *model)
-+{
-+ struct jffs2_bbc_model_list_node *node;
-+ struct jffs2_bbc_compressor_type *l;
-+ char block_sign[2];
-+
-+ int sign;
-+
-+ /* check for conflicts... */
-+ sign = *((int *) model);
-+ block_sign[0] = *(((char *) model) + 4);
-+ block_sign[1] = *(((char *) model) + 5);
-+ node = jffs2_bbc_model_list;
-+ while (node != NULL) {
-+ if ((node->block_sign[0] == block_sign[0]) && (node->block_sign[1] == block_sign[1]) && (node->sb == sb)) {
-+ //jffs2_bbc_print2("jffs2.bbc: model_new: model conflict (inode=%d)!\n",i_num);
-+ return -1;
-+ }
-+ node = node->next_model;
-+ }
-+
-+ /* insertion */
-+ node = jffs2_bbc_malloc_small((long)sizeof(struct jffs2_bbc_model_list_node));
-+ node->sb = sb;
-+ node->model = model;
-+ node->sign = *((int *) model);
-+ node->block_sign[0] = *(((char *) model) + 4);
-+ node->block_sign[1] = *(((char *) model) + 5);
-+ node->inode = i_num;
-+ node->next_model = jffs2_bbc_model_list;
-+ node->compressor = NULL;
-+ node->stat_decompr = 0;
-+ node->next_compr_model = NULL;
-+ jffs2_bbc_model_list = node;
-+
-+ /* search for matching compressor */
-+ l = jffs2_bbc_compressors;
-+ while (l != NULL) {
-+ if (l->model_file_sign == sign) {
-+ //jffs2_bbc_print2("jffs2.bbc: compressor for model found: %s ",l->name);
-+ if (l->init_model(&(node->model)) != 0) {
-+ jffs2_bbc_print1("jffs2.bbc: cannot initialize compressor for a model");
-+ }
-+ else {
-+ l->mounted++;
-+ node->compressor = l;
-+ node->next_compr_model = l->models;
-+ l->models = node;
-+ }
-+ break;
-+ }
-+ l = l->next;
-+ }
-+ return 0;
-+}
-+
-+static void jffs2_bbc_model_del_from_compressor(struct jffs2_bbc_model_list_node *node)
-+{
-+ struct jffs2_bbc_model_list_node *l;
-+
-+ if (node->model != NULL) {
-+ if (node->compressor != NULL) {
-+ if (node->compressor->destroy_model == NULL) {
-+ jffs2_bbc_free(node->model);
-+ node->model = NULL;
-+ }
-+ else {
-+ node->compressor->destroy_model(&(node->model));
-+ if (node->model != NULL)
-+ jffs2_bbc_print1("jffs2.bbc: warning: not NULL model after destroying!\n");
-+ }
-+ }
-+ }
-+
-+ if (node->compressor == NULL) {
-+ jffs2_bbc_print1("jffs2.bbc: jffs2_bbc_model_del_from_compressor: no compressor!\n");
-+ return;
-+ }
-+ l = node->compressor->models;
-+ if (l == NULL) {
-+ jffs2_bbc_print1("jffs2.bbc: jffs2_bbc_model_del_from_compressor error, models=NULL!\n");
-+ return;
-+ }
-+ if (l == node) {
-+ node->compressor->models = node->next_compr_model;
-+ node->compressor->mounted--;
-+ return;
-+ }
-+ while (1) {
-+ if (l->next_compr_model == node) {
-+ l->next_compr_model = node->next_compr_model;
-+ node->compressor->mounted--;
-+ return;
-+ }
-+ l = l->next_compr_model;
-+ if (l == NULL) {
-+ jffs2_bbc_print1("jffs2.bbc: jffs2_bbc_model_del_from_compressor: not found\n");
-+ return;
-+ }
-+ }
-+}
-+
-+void jffs2_bbc_model_del(void *sb)
-+{
-+ struct jffs2_bbc_model_list_node *l, *l2;
-+
-+ l = jffs2_bbc_model_list;
-+ if (l == NULL)
-+ return;
-+ if (l->sb == sb) {
-+ jffs2_bbc_model_list = l->next_model;
-+ jffs2_bbc_model_del_from_compressor(l);
-+ jffs2_bbc_free_small(l);
-+ jffs2_bbc_model_del(sb);
-+ return;
-+ }
-+ while (1) {
-+ if (l->next_model == NULL) {
-+ break;
-+ }
-+ if (l->next_model->sb == sb) {
-+ l2 = l->next_model;
-+ l->next_model = l->next_model->next_model;
-+ jffs2_bbc_model_del_from_compressor(l2);
-+ jffs2_bbc_free_small(l2);
-+ jffs2_bbc_model_del(sb);
-+ return;
-+ }
-+ l = l->next_model;
-+ }
-+ last_sb = NULL;
-+}
-+
-+void jffs2_bbc_model_set_act_sb(void *sb)
-+{
-+ last_sb = sb;
-+}
-+
-+void *jffs2_bbc_model_get_act_sb(void)
-+{
-+ return last_sb;
-+}
-+
-+void *jffs2_bbc_model_get_newest(struct jffs2_bbc_compressor_type *compressor)
-+{
-+ struct jffs2_bbc_model_list_node *m, *best_m;
-+ int max_sign, sign;
-+
-+ if (compressor == NULL) {
-+ jffs2_bbc_print1("jffs2.bbc: jffs2_bbc_model_get: NULL!!\n");
-+ return NULL;
-+ }
-+
-+ best_m = NULL;
-+ max_sign = -1;
-+ m = compressor->models;
-+ while (m != NULL) {
-+ if (m->sb == last_sb) {
-+ sign = (int) (m->block_sign[0]) * 256 + (int) (m->block_sign[1]);
-+ if (sign > max_sign) {
-+ max_sign = sign;
-+ best_m = m;
-+ }
-+ }
-+ m = m->next_compr_model;
-+ }
-+ if (best_m != NULL)
-+ return best_m->model;
-+ else
-+ return NULL;
-+}
-+
-+/*********************************************************************
-+ * Statistics *
-+ *********************************************************************/
-+
-+static char *jffs2_bbc_stat_buff = NULL;
-+
-+char *jffs2_bbc_get_model_stats(void)
-+{
-+ char *b;
-+ struct jffs2_bbc_model_list_node *m;
-+ struct jffs2_bbc_compressor_type *c;
-+
-+ if (jffs2_bbc_stat_buff == NULL)
-+ jffs2_bbc_stat_buff = jffs2_bbc_malloc(8000);
-+
-+ b = jffs2_bbc_stat_buff;
-+
-+ b += sprintf(b, "Loaded compressors:");
-+ c = jffs2_bbc_compressors;
-+ while (c != NULL) {
-+ b += sprintf(b, "\n %s (%d) ", c->name, c->enabled);
-+ if (c->model_file_sign != 0) {
-+ b += sprintf(b, "m_sign=%d ", c->model_file_sign);
-+ b += sprintf(b, "models=");
-+ m = c->models;
-+ while (m != NULL) {
-+ b += sprintf(b, "(inode=%d)", m->inode);
-+ m = m->next_compr_model;
-+ }
-+ }
-+ else {
-+ b += sprintf(b, "b_sign=(%d,%d) nomodel", (int) (c->block_sign[0]), (int) (c->block_sign[1]));
-+ }
-+ if (c->proc_info != NULL) {
-+ b += sprintf(b, "\n %s", c->proc_info());
-+ }
-+ c = c->next;
-+ }
-+
-+ m = jffs2_bbc_model_list;
-+
-+ if (m == NULL) {
-+ b += sprintf(b, "\nPresent models: NONE\n");
-+ }
-+ else {
-+ b += sprintf(b, "\nPresent models:\n");
-+ while (m != NULL) {
-+ b += sprintf(b, " b_sign=(%d,%d),inode=%d,decompr=%d", (int) (m->block_sign[0]), (int) (m->block_sign[1]), m->inode, m->stat_decompr);
-+ if (m->compressor == NULL)
-+ b += sprintf(b, ",compressor=NULL\n");
-+ else
-+ b += sprintf(b, ",compressor=%s\n", m->compressor->name);
-+ m = m->next_model;
-+ }
-+ }
-+
-+ return jffs2_bbc_stat_buff;
-+}
-+
-+/*********************************************************************
-+ * Memory handling, debug *
-+ *********************************************************************/
-+
-+static int jffs2_bbc_mem_counter = 0;
-+
-+#ifdef __KERNEL__
-+
-+void *jffs2_bbc_malloc(long size)
-+{
-+ void *addr = vmalloc(size);
-+ if (addr != NULL)
-+ jffs2_bbc_mem_counter++;
-+ else {
-+ jffs2_bbc_print2("DEBUG: not enough memory (%ld)\n", size);
-+ }
-+ return addr;
-+}
-+
-+void jffs2_bbc_free(void *addr)
-+{
-+ jffs2_bbc_mem_counter--;
-+ vfree(addr);
-+}
-+
-+void *jffs2_bbc_malloc_small(long size)
-+{
-+ void *addr;
-+ addr = kmalloc(size, 0);
-+ if (addr != NULL)
-+ jffs2_bbc_mem_counter++;
-+ return addr;
-+}
-+
-+void jffs2_bbc_free_small(void *addr)
-+{
-+ jffs2_bbc_mem_counter--;
-+ kfree(addr);
-+}
-+
-+#else
-+
-+void *jffs2_bbc_malloc(long size)
-+{
-+ void *addr = malloc(size);
-+ if (addr != NULL)
-+ jffs2_bbc_mem_counter++;
-+ return addr;
-+}
-+
-+void jffs2_bbc_free(void *addr)
-+{
-+ jffs2_bbc_mem_counter--;
-+ free(addr);
-+}
-+
-+void *jffs2_bbc_malloc_small(long size)
-+{
-+ return jffs2_bbc_malloc(size);
-+}
-+
-+void jffs2_bbc_free_small(void *addr)
-+{
-+ jffs2_bbc_free(addr);
-+}
-+
-+#endif
-+
-+int jffs2_bbc_test_memory_counter(int verbose)
-+{
-+ if (verbose > 0) {
-+ jffs2_bbc_print2("jffs2.bbc: mem_counter=%d!\n", jffs2_bbc_mem_counter);
-+ }
-+ return jffs2_bbc_mem_counter;
-+}
-+
-+int jffs2_bbc_get_memory_counter(void)
-+{
-+ return jffs2_bbc_mem_counter;
-+}
-+
-+static char mem_stat[200];
-+
-+char *jffs2_bbc_get_mem_stats(void)
-+{
-+ sprintf(mem_stat, "Memcounter=%d\n", jffs2_bbc_mem_counter);
-+ return mem_stat;
-+}
-+
-+void jffs2_bbc_print_flush(void)
-+{
-+#ifdef __KERNEL__
-+ return;
-+#else
-+ fflush(stdout);
-+ fflush(stderr);
-+#endif
-+}
-+
-+/*********************************************************************
-+ * FRAMEWORK - ZLIB REPLACEMENT *
-+ *********************************************************************/
-+
-+#ifndef JFFS2_BBC_STANDALONE
-+
-+/* Temorary buffers */
-+static char stat_str[JFFS2_BBC_STAT_BUFF_SIZE];
-+static int tmp_buffer_size = 0;
-+static char *tmp_buffer = NULL;
-+
-+/* Statistic - used by /proc/jffs2_bbc and mkfs.jffs2 */
-+char *jffs2_bbc_get_compr_stats(void)
-+{
-+ struct jffs2_bbc_compressor_type *l;
-+ char *s = stat_str;
-+
-+ s += sprintf(s, "Compression statistics:\n");
-+ l = jffs2_bbc_original_compressor;
-+ //s += sprintf(s, " zlib: compr=%d/%d decompr=%d\n", stat_zlib_compr_new, stat_zlib_compr_orig, stat_zlib_decompr);
-+ s += sprintf(s, " %s: compr=%d/%d decompr=%d\n", l->name, l->stat_compr_new, l->stat_compr_orig, l->stat_decompr);
-+ l = jffs2_bbc_get_compressor_list();
-+ while (l != NULL) {
-+ s += sprintf(s, " %s: compr=%d/%d decompr=%d\n", l->name, l->stat_compr_new, l->stat_compr_orig, l->stat_decompr);
-+ l = l->next;
-+ }
-+ return stat_str;
-+}
-+
-+static void jffs2_bbc_buffer_fill(unsigned char *buff, int size)
-+{
-+ for (; size > 0; size--, buff++)
-+ *buff = 255;
-+}
-+
-+
-+static int jffs2_bbc_update_compr_buf(unsigned long size)
-+{
-+ struct jffs2_bbc_compressor_type *l;
-+
-+ if (size < 5000)
-+ size = 5000;
-+ if (tmp_buffer == NULL) {
-+ tmp_buffer = jffs2_bbc_malloc(size);
-+ jffs2_bbc_buffer_fill(tmp_buffer, size);
-+ tmp_buffer_size = size;
-+ }
-+ else if (tmp_buffer_size < size) {
-+ jffs2_bbc_free(tmp_buffer);
-+ tmp_buffer = jffs2_bbc_malloc(size);
-+ jffs2_bbc_buffer_fill(tmp_buffer, size);
-+ tmp_buffer_size = size;
-+ }
-+ l = jffs2_bbc_get_compressor_list();
-+ while (l != NULL) {
-+ if (l->buffer == NULL) {
-+ l->buffer_size = size;
-+ l->buffer = jffs2_bbc_malloc(size);
-+ jffs2_bbc_buffer_fill(l->buffer, size);
-+ }
-+ else if (l->buffer_size < size) {
-+ jffs2_bbc_free(l->buffer);
-+ l->buffer_size = size;
-+ l->buffer = jffs2_bbc_malloc(size);
-+ jffs2_bbc_buffer_fill(l->buffer, size);
-+ }
-+ l = l->next;
-+ }
-+ return 0;
-+}
-+
-+#ifdef DEBUG_COMPRESSORS
-+
-+static unsigned char *debug_tmp_buff = NULL;
-+static long debug_orig_srclen = -1;
-+static long debug_orig_dstlen = -1;
-+static int debug_mem_counter = -1;
-+
-+
-+void debug_before_compress(struct jffs2_bbc_compressor_type *c, void *model, unsigned char *input, unsigned char *output, long *sourcelen, long *dstlen)
-+{
-+
-+ debug_orig_srclen = *sourcelen; // for buffer overflow test
-+ debug_orig_dstlen = *dstlen; // for buffer overflow test
-+ output[debug_orig_dstlen + 1] = 255;
-+
-+ debug_mem_counter = jffs2_bbc_get_memory_counter(); // for memory guard
-+}
-+
-+void debug_after_compress(struct jffs2_bbc_compressor_type *c, int back, void *model, unsigned char *input, unsigned char *output, long *sourcelen, long *dstlen)
-+{
-+ long dst_len = *dstlen;
-+ long src_len = *sourcelen;
-+ int i;
-+
-+ // Memory guard
-+ if (debug_mem_counter != jffs2_bbc_get_memory_counter()) {
-+ jffs2_bbc_print4("!!!!!!!! %s error: possible COMPRESSOR MEMORY LEAK: %d->%d\n", c->name, debug_mem_counter, jffs2_bbc_get_memory_counter());
-+ debug_mem_counter = jffs2_bbc_get_memory_counter();
-+ }
-+
-+ // Buffer overflow test
-+ if (output[debug_orig_dstlen + 1] != 255) {
-+ jffs2_bbc_print7("!!!!!!!! %s error: BUFFER OVERFLOW !!!!!!!!!!!! b[%d]=%d (srclen=%d dstlen=%d, back=%d)\n", c->name, (int) (debug_orig_dstlen + 1), (int) (output[debug_orig_dstlen + 1]), (int) (debug_orig_srclen), (int) (*dstlen), back);
-+ }
-+
-+ // Decompression check
-+ if (back == 0) {
-+ if (debug_tmp_buff == NULL)
-+ debug_tmp_buff = jffs2_bbc_malloc(17000);
-+ for (i = 0; i < src_len; i++) debug_tmp_buff[i] = 0xf6;
-+ c->decompress(model, output, debug_tmp_buff, dst_len, src_len);
-+ // Memory guard for decompressor
-+ if (debug_mem_counter != jffs2_bbc_get_memory_counter()) {
-+ jffs2_bbc_print4("!!!!!!!! %s error: possible DECOMPRESSOR MEMORY LEAK: %d->%d\n", c->name, debug_mem_counter, jffs2_bbc_get_memory_counter());
-+ debug_mem_counter = jffs2_bbc_get_memory_counter();
-+ }
-+
-+ for (i = 0; i < src_len; i++)
-+ if (input[i] != debug_tmp_buff[i]) {
-+ jffs2_bbc_print7("!!!!!!!! %s error: BLOCK DECOMPRESSED BADLY (first bad: %d in %d: %d!=%d (compressed size=%d)) !!!!!!!!!!!!\n", c->name, i, src_len, (int)input[i], (int)debug_tmp_buff[i], dst_len);
-+ break;
-+ }
-+ return;
-+ }
-+
-+ // Return value test
-+ //jffs2_bbc_print3("!!!!!!!! %s error: %d !!!!!!!!!!!!\n", c->name, back);
-+}
-+
-+#endif
-+
-+int jffs2_zlib_compress(unsigned char *data_in, unsigned char *cpage_out, uint32_t * sourcelen, uint32_t * dstlen)
-+{
-+ struct jffs2_bbc_compressor_type *c;
-+ int back, back_zlib, mode, min, i, i2;
-+ long tmp = 0, tmp_read_time = 1000, tmp_write_time = 1000, orig_src, orig_dest, src, dest;
-+ struct jffs2_bbc_model_list_node *m;
-+ void *sb;
-+ unsigned char *tmp_p = NULL;
-+
-+ sb = jffs2_bbc_model_get_act_sb();
-+
-+ orig_src = *sourcelen;
-+ orig_dest = *dstlen;
-+
-+ mode = jffs2_bbc_get_compression_mode();
-+
-+ if (mode == JFFS2_BBC_DUMMY_MODE) {
-+ i=0; i2=0;
-+ if (*dstlen>2) {
-+ cpage_out[i++]=JFFS2_BBC_DUMMY_BLOCKSIGN_0;
-+ cpage_out[i++]=JFFS2_BBC_DUMMY_BLOCKSIGN_1;
-+ i2=i;
-+ }
-+ for (;((i < *dstlen) && (i < (*sourcelen)+i2));i++) {
-+ cpage_out[i] = data_in[i-i2];
-+ }
-+ *sourcelen=i-i2;
-+ *dstlen=i;
-+ return 0;
-+ }
-+
-+ if (mode == JFFS2_BBC_ZLIB_MODE) {
-+ /*if (!jffs2_bbc_original_compressor->enabled) {
-+ jffs2_bbc_print2("jffs2.bbc: WARNING: ZLIB mode but %s disabled! Enabling for this procedure...\n",jffs2_bbc_original_compressor->name);
-+ }*/
-+ back = jffs2_bbc_original_compressor->compress(NULL, data_in, cpage_out, sourcelen, dstlen);
-+ jffs2_bbc_original_compressor->stat_compr_orig += *sourcelen;
-+ jffs2_bbc_original_compressor->stat_compr_new += *dstlen;
-+ return back;
-+ }
-+
-+ jffs2_bbc_update_compr_buf(orig_dest);
-+
-+ if (mode == JFFS2_BBC_SIZE_MODE) {
-+ // Testing all compressors
-+ if (!jffs2_bbc_original_compressor->enabled) {
-+ min = -1;
-+ }
-+ else {
-+ back_zlib = jffs2_bbc_original_compressor->compress(NULL, data_in, cpage_out, sourcelen, dstlen);
-+ min = *dstlen;
-+ }
-+ c = jffs2_bbc_get_compressor_list();
-+ while (c != NULL) {
-+ c->buffer_cnt = -1;
-+ if (c->enabled == 0) {
-+ c = c->next;
-+ continue;
-+ }
-+ if (c->model_file_sign == 0) {
-+ src = orig_src;
-+ dest = orig_dest;
-+#ifdef DEBUG_COMPRESSORS
-+ debug_before_compress(c, NULL, data_in, c->buffer, &src, &dest);
-+#endif
-+ back = c->compress(NULL, data_in, c->buffer, &src, &dest);
-+#ifdef DEBUG_COMPRESSORS
-+ debug_after_compress(c, back, NULL, data_in, c->buffer, &src, &dest);
-+#endif
-+ if (back == 0) {
-+ c->buffer_cnt = dest;
-+ if ((min < 0) || (min > dest))
-+ min = dest;
-+ }
-+ }
-+ else {
-+ m = c->models;
-+ while (m != NULL) {
-+ src = orig_src;
-+ dest = orig_dest;
-+ if (m->sb == sb) {
-+ if (c->buffer_cnt == -1) {
-+#ifdef DEBUG_COMPRESSORS
-+ debug_before_compress(c, m->model, data_in, c->buffer, (long *) (&src), (long *) (&dest));
-+#endif
-+ back = c->compress(m->model, data_in, c->buffer, (long *) (&src), (long *) (&dest));
-+#ifdef DEBUG_COMPRESSORS
-+ debug_after_compress(c, back, m->model, data_in, c->buffer, (long *) (&src), (long *) (&dest));
-+#endif
-+ if (back == 0) {
-+ c->buffer_cnt = dest;
-+ if ((min < 0) || (min > dest))
-+ min = dest;
-+ }
-+ }
-+ else {
-+#ifdef DEBUG_COMPRESSORS
-+ debug_before_compress(c, m->model, data_in, tmp_buffer, &src, &dest);
-+#endif
-+ back = c->compress(m->model, data_in, tmp_buffer, &src, &dest);
-+#ifdef DEBUG_COMPRESSORS
-+ debug_after_compress(c, back, m->model, data_in, tmp_buffer, &src, &dest);
-+#endif
-+ if (back == 0) {
-+ if (c->buffer_cnt > dest) {
-+ c->buffer_cnt = dest;
-+ tmp_p = c->buffer;
-+ c->buffer = tmp_buffer;
-+ tmp_buffer = tmp_p;
-+ if ((min < 0) || (min > dest))
-+ min = dest;
-+ }
-+ }
-+ }
-+ }
-+ m = m->next_compr_model;
-+ }
-+ }
-+ c = c->next;
-+ }
-+ //Finding the best and copy its result
-+
-+#ifdef DEBUG_SHOW_BLOCK_SIZES
-+ jffs2_bbc_print1("\n");
-+ if (jffs2_bbc_original_compressor->enabled) {
-+ if (min == *dstlen) {
-+ jffs2_bbc_print3("%s:%d* ", jffs2_bbc_original_compressor->name, (int) (*dstlen));
-+ }
-+ else {
-+ jffs2_bbc_print3("%s:%d ", jffs2_bbc_original_compressor->name, (int) (*dstlen));
-+ }
-+ }
-+ c = jffs2_bbc_get_compressor_list();
-+ while (c != NULL) {
-+ if (c->enabled == 0) {
-+ c = c->next;
-+ continue;
-+ }
-+ if (c->buffer_cnt == min)
-+ jffs2_bbc_print3("%s:%d* ", c->name, c->buffer_cnt);
-+ else
-+ jffs2_bbc_print3("%s:%d ", c->name, c->buffer_cnt);
-+ c = c->next;
-+ }
-+#endif
-+
-+ if (min == -1) {
-+ return -1; // none of compressors work (maybe too short output buffer)
-+ }
-+
-+ if (jffs2_bbc_original_compressor->enabled) {
-+ if (min == *dstlen) {
-+ jffs2_bbc_original_compressor->stat_compr_orig += *sourcelen;
-+ jffs2_bbc_original_compressor->stat_compr_new += *dstlen;
-+ return back_zlib;
-+ }
-+ }
-+
-+ c = jffs2_bbc_get_compressor_list();
-+ while (c != NULL) {
-+ if (c->enabled == 0) {
-+ c = c->next;
-+ continue;
-+ }
-+ if (c->buffer_cnt == min) {
-+ *dstlen = c->buffer_cnt;
-+ *sourcelen = orig_src;
-+ for (i = 0; i < *dstlen; i++) {
-+ cpage_out[i] = c->buffer[i];
-+ }
-+ c->stat_compr_orig += *sourcelen;
-+ c->stat_compr_new += *dstlen;
-+ return 0;
-+ }
-+ c = c->next;
-+ }
-+ jffs2_bbc_print1("jffs2.bbc: compr (full): BUG!!!\n");
-+ return 0;
-+ }
-+
-+ if ((mode == JFFS2_BBC_FASTR_MODE)||(mode == JFFS2_BBC_FASTW_MODE)||(mode == JFFS2_BBC_FASTS_MODE)) {
-+ // Estimating all compressors
-+ if (jffs2_bbc_original_compressor->enabled) {
-+ back = jffs2_bbc_original_compressor->estimate(NULL, data_in, *sourcelen, &tmp, &tmp_read_time, &tmp_write_time);
-+ }
-+ else {
-+ tmp = -1;
-+ tmp_read_time = -1;
-+ tmp_write_time = -1;
-+ }
-+ if (mode == JFFS2_BBC_FASTR_MODE) tmp = tmp_read_time;
-+ if (mode == JFFS2_BBC_FASTW_MODE) tmp = tmp_write_time;
-+ min = tmp;
-+ c = jffs2_bbc_get_compressor_list();
-+ while (c != NULL) {
-+ src = orig_src;
-+ dest = orig_dest;
-+ c->buffer_cnt = -1;
-+ if (c->enabled == 0) {
-+ c = c->next;
-+ continue;
-+ }
-+ if ((c->model_file_sign == 0) || (jffs2_bbc_model_get_newest(c) != NULL)) {
-+ back = c->estimate(jffs2_bbc_model_get_newest(c), data_in, src, &dest, &tmp_read_time, &tmp_write_time);
-+ if (mode == JFFS2_BBC_FASTR_MODE) dest = tmp_read_time;
-+ if (mode == JFFS2_BBC_FASTW_MODE) dest = tmp_write_time;
-+ if (back == 0) {
-+ c->buffer_cnt = dest;
-+ if ((min < 0) || (min > dest))
-+ min = dest;
-+ }
-+ else {
-+ c->buffer_cnt = -1;
-+ }
-+ }
-+ c = c->next;
-+ }
-+ // Finding the best and compress with it
-+ if (min == -1) {
-+ return -1;
-+ }
-+ if (jffs2_bbc_original_compressor->enabled) {
-+ if (min == tmp) {
-+ back = jffs2_bbc_original_compressor->compress(NULL, data_in, cpage_out, sourcelen, dstlen);
-+ jffs2_bbc_original_compressor->stat_compr_orig += *sourcelen;
-+ jffs2_bbc_original_compressor->stat_compr_new += *dstlen;
-+ return back;
-+ }
-+ }
-+ c = jffs2_bbc_get_compressor_list();
-+ while (c != NULL) {
-+ if (c->enabled == 0) {
-+ c = c->next;
-+ continue;
-+ }
-+ if (c->buffer_cnt == min) {
-+ back = c->compress(jffs2_bbc_model_get_newest(c), data_in, cpage_out, (unsigned long*)sourcelen, (unsigned long*)dstlen);
-+ if ((back == 0) && (*dstlen < orig_dest) && (*dstlen > 4)) {
-+ c->stat_compr_orig += *sourcelen;
-+ c->stat_compr_new += *dstlen;
-+ }
-+ else { // fallback will always be available
-+ *sourcelen = orig_src;
-+ *dstlen = orig_dest;
-+ back = jffs2_bbc_original_compressor->compress(NULL, data_in, cpage_out, sourcelen, dstlen);
-+ jffs2_bbc_original_compressor->stat_compr_orig += *sourcelen;
-+ jffs2_bbc_original_compressor->stat_compr_new += *dstlen;
-+ return back;
-+ }
-+ return 0;
-+ }
-+ c = c->next;
-+ }
-+ jffs2_bbc_print1("jffs2.bbc: compress (fastX mode): BUG!!!\n");
-+ return 0;
-+ }
-+
-+ if (mode == JFFS2_BBC_MANUAL_MODE) {
-+ c = jffs2_bbc_get_manual_compressor();
-+ if (c != NULL) {
-+ if (c->model_file_sign == 0) {
-+ src = orig_src;
-+ dest = orig_dest;
-+ back = c->compress(NULL, data_in, cpage_out, &src, &dest);
-+ if (back == 0) {
-+ *dstlen = dest;
-+ *sourcelen = src;
-+ c->stat_compr_orig += *sourcelen;
-+ c->stat_compr_new += *dstlen;
-+ return 0;
-+ }
-+ }
-+ else {
-+ c->buffer_cnt = -1;
-+ m = c->models;
-+ min = -1;
-+ while (m != NULL) {
-+ src = orig_src;
-+ dest = orig_dest;
-+ if (m->sb == sb) {
-+ if (min == -1) {
-+ back = c->compress(m->model, data_in, cpage_out, (unsigned long*)sourcelen, (unsigned long*)dstlen);
-+ if ((back == 0) && (*dstlen < orig_dest) && (*dstlen > 4)) {
-+ min = dest;
-+ tmp_p = cpage_out;
-+ }
-+ }
-+ else {
-+ back = c->compress(m->model, data_in, tmp_buffer, &src, &dest);
-+ if ((back == 0) && (dest < orig_dest) && (dest > 4)) {
-+ if (c->buffer_cnt > dest) {
-+ if (min > dest) {
-+ min = dest;
-+ tmp_p = tmp_buffer;
-+ }
-+ }
-+ }
-+ }
-+ }
-+ m = m->next_compr_model;
-+ }
-+ if (min != -1) {
-+ if (tmp_p != cpage_out) {
-+ for (i = 0; i < min; i++)
-+ cpage_out[i] = tmp_p[i];
-+ *sourcelen = orig_src;
-+ *dstlen = min;
-+ }
-+ c->stat_compr_orig += *sourcelen;
-+ c->stat_compr_new += *dstlen;
-+ return 0;
-+ }
-+ }
-+ }
-+ /*else {
-+ jffs2_bbc_print1("iPack: manual mode without selected compressor!\n");
-+ } */
-+
-+ /*if (!jffs2_bbc_original_compressor->enabled) {
-+ jffs2_bbc_print2("jffs2.bbc: WARNING: %s must be enabled! Enabling for this procedure...\n",jffs2_bbc_original_compressor->name);
-+ }*/
-+ back = jffs2_bbc_original_compressor->compress(NULL, data_in, cpage_out, sourcelen, dstlen);
-+ jffs2_bbc_original_compressor->stat_compr_orig += *sourcelen;
-+ jffs2_bbc_original_compressor->stat_compr_new += *dstlen;
-+ return back;
-+
-+
-+ }
-+
-+ jffs2_bbc_print1("jffs2.bbc: compress: unimlemented compress mode!!!\n");
-+ return 0;
-+}
-+
-+void jffs2_zlib_decompress(unsigned char *data_in, unsigned char *cpage_out, uint32_t srclen, uint32_t destlen)
-+{
-+ struct jffs2_bbc_model_list_node *m;
-+ struct jffs2_bbc_compressor_type *c;
-+ char d[2];
-+ void *sb;
-+ int i;
-+
-+ /* If the input too small... */
-+ if (destlen<=2) {
-+ cpage_out[0]=data_in[0];
-+ if (destlen==2) cpage_out[1]=data_in[1];
-+ return;
-+ }
-+
-+ sb = jffs2_bbc_model_get_act_sb();
-+ d[0] = *(data_in);
-+ d[1] = *(data_in + 1);
-+
-+ d[0] &= 0x7f; // Variants support...
-+
-+ /* Search for model based decompressors... */
-+ m = jffs2_bbc_get_model_list();
-+ while (m != NULL) {
-+ if ((d[0] == m->block_sign[0]) && (d[1] == m->block_sign[1]) && (sb == m->sb)) {
-+ if (m->compressor == NULL) {
-+ jffs2_bbc_print3("jffs2.bbc: decompressor for block_sign (%d,%d) not loaded!\n", (int) (d[0]), (int) (d[1]));
-+ }
-+ else {
-+ m->compressor->decompress(m->model, data_in, cpage_out, srclen, destlen);
-+ m->compressor->stat_decompr++;
-+ m->stat_decompr++;
-+ }
-+ return;
-+ }
-+ m = m->next_model;
-+ }
-+ /* Is it ZLIB? */
-+ if ((((int) d[0]) == (int)(jffs2_bbc_original_compressor->block_sign[0])) && (((int) d[1]) == (int)(jffs2_bbc_original_compressor->block_sign[1]))) {
-+ jffs2_bbc_original_compressor->decompress(NULL, data_in, cpage_out, srclen, destlen);
-+ jffs2_bbc_original_compressor->stat_decompr++;
-+ return;
-+ }
-+ /* Search for non model based decompressors... */
-+ c = jffs2_bbc_get_compressor_list();
-+ while (c != NULL) {
-+ if (c->model_file_sign == 0) {
-+ if (((int) (d[0]) == (int) (c->block_sign[0])) && ((int) (d[1]) == (int) (c->block_sign[1]))) {
-+ c->decompress(NULL, data_in, cpage_out, srclen, destlen);
-+ c->stat_decompr++;
-+ return;
-+ }
-+ }
-+ c = c->next;
-+ }
-+ /* Is it DUMMY? */
-+ if ((((int) d[0]) == JFFS2_BBC_DUMMY_BLOCKSIGN_0) && (((int) d[1]) == JFFS2_BBC_DUMMY_BLOCKSIGN_1)) {
-+ for (i=0;i<destlen;i++) {
-+ cpage_out[i]=data_in[i+2];
-+ }
-+ return;
-+ }
-+ /* No matching decompressor found... */
-+ jffs2_bbc_print4("jffs2.bbc: cannot find model for decompress: bsign=(%d,%d),sb=%d. Using zlib.\n", (int) d[0], (int) d[1], (int) sb);
-+ jffs2_bbc_original_compressor->decompress(NULL, data_in, cpage_out, srclen, destlen);
-+ jffs2_bbc_original_compressor->stat_decompr++;
-+}
-+
-+#endif
-diff -Nur linux-mips-cvs/fs/jffs2/jffs2_bbc_framework.h linux-mips/fs/jffs2/jffs2_bbc_framework.h
---- linux-mips-cvs/fs/jffs2/jffs2_bbc_framework.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/jffs2_bbc_framework.h 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,202 @@
-+/*
-+ * JFFS2-BBC: Compression Framework - headers
-+ *
-+ * $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+ *
-+ * Copyright (C) 2004, Ferenc Havasi
-+ *
-+ * 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 __JFFS2_BBC_FRAMEWORK_H__
-+
-+#define __JFFS2_BBC_FRAMEWORK_H__
-+
-+#define JFFS2_BBC_VERSION "0.54.3"
-+
-+#define JFFS2_BBC_CONFIG_FILE "bbc.conf"
-+
-+/*********************************************************************
-+ * Compression mode handling *
-+ *********************************************************************/
-+
-+#define JFFS2_BBC_ZLIB_MODE 1
-+#define JFFS2_BBC_SIZE_MODE 2
-+#define JFFS2_BBC_FASTR_MODE 3
-+#define JFFS2_BBC_FASTW_MODE 4
-+#define JFFS2_BBC_FASTS_MODE 5
-+#define JFFS2_BBC_MANUAL_MODE 6
-+#define JFFS2_BBC_DUMMY_MODE 7
-+
-+int jffs2_bbc_get_compression_mode(void);
-+void jffs2_bbc_set_compression_mode(int mode);
-+
-+/*********************************************************************
-+ * Read/write speed unit *
-+ * everything is relative to the speed of zlib *
-+ * bigger number means slower speed! *
-+ *********************************************************************/
-+
-+#define JFFS2_BBC_ZLIB_READ_TIME 10000
-+#define JFFS2_BBC_ZLIB_WRITE_TIME 10000
-+
-+/*********************************************************************
-+ * Compressor handling *
-+ *********************************************************************/
-+
-+struct jffs2_bbc_compressor_type
-+{
-+ char name[16];
-+ int model_file_sign; /* 0 for no model file needed */
-+ char block_sign[4]; /* only nomodel compressors, and only the first 2 _bytes are used! */
-+ int (*init)(void);
-+ int (*init_model)(void **model);
-+ void (*destroy_model)(void **model);
-+ void (*deinit)(void);
-+ /* Compress block
-+ * *dstlen bytes are allocated.
-+ * if it is not enough write *sourcelen over to the processed amount of data
-+ * returns non zero if fails
-+ */
-+ int (*compress)(void *model, unsigned char *input, unsigned char *output, unsigned long *sourcelen, unsigned long *dstlen);
-+ int (*estimate)(void *model, unsigned char *input, unsigned long sourcelen,
-+ unsigned long *dstlen, unsigned long *readtime, unsigned long *writetime);
-+ /* Decompress block
-+ * returns non zero if fails
-+ */
-+ int (*decompress)(void *model, unsigned char *input, unsigned char *output, unsigned long sourcelen, unsigned long dstlen);
-+ char *(*proc_info)(void);
-+ int (*proc_command)(char *command);
-+ int enabled; /* filled by BBC */
-+ int mounted; /* filled by BBC */
-+ void *models; /* filled by BBC */
-+ char *buffer; /* filled by BBC */
-+ int buffer_size; /* filled by BBC */
-+ int buffer_cnt; /* filled by BBC */
-+ int buffer_tmp; /* filled by BBC */
-+ int stat_compr_orig; /* filled by BBC */
-+ int stat_compr_new; /* filled by BBC */
-+ int stat_decompr; /* filled by BBC */
-+ struct jffs2_bbc_compressor_type *next; /* filled by BBC */
-+};
-+
-+/* It sets the compression mode to JFFS2_BBC_MANUAL_MODE */
-+
-+void jffs2_bbc_set_manual_compressor(struct jffs2_bbc_compressor_type *c); /* NULL = ZLIB */
-+int jffs2_bbc_set_manual_compressor_by_name(char *name);
-+int jffs2_bbc_disable_compressor_by_name(char *name);
-+int jffs2_bbc_enable_compressor_by_name(char *name);
-+void jffs2_bbc_compressor_command_by_name(char *name_and_command);
-+
-+/* If the compression mode is JFFS2_BCC_MANUAL_MODE the manually setted
-+ compressor can be get using it. Otherwise it returns with NULL. */
-+
-+struct jffs2_bbc_compressor_type *jffs2_bbc_get_manual_compressor(void);
-+
-+struct jffs2_bbc_model_list_node
-+{
-+ void *sb; /* FS idendifier (JFFS2_SB_INFO(sb) at this moment) */
-+ void *model; /* model data */
-+ int sign; /* sign of the model (first 4 bytes) */
-+ char block_sign[4]; /* block sign - only the first 2 bytes are used! */
-+ int inode; /* inode number of the model file */
-+ int stat_decompr;
-+ struct jffs2_bbc_compressor_type *compressor;
-+ struct jffs2_bbc_model_list_node *next_model;
-+ struct jffs2_bbc_model_list_node *next_compr_model;
-+};
-+
-+struct jffs2_bbc_compressor_type *jffs2_bbc_get_compressor_list(void);
-+struct jffs2_bbc_model_list_node *jffs2_bbc_get_model_list(void);
-+
-+int jffs2_bbc_register_compressor(struct jffs2_bbc_compressor_type *c);
-+int jffs2_bbc_unregister_compressor(struct jffs2_bbc_compressor_type *c);
-+
-+int jffs2_bbc_model_new(void *sb, int i_num, void *model);
-+void jffs2_bbc_model_del(void *sb);
-+void jffs2_bbc_model_set_act_sb(void *sb);
-+void *jffs2_bbc_model_get_act_sb(void);
-+void *jffs2_bbc_model_get_newest(struct jffs2_bbc_compressor_type *compressor);
-+
-+/*********************************************************************
-+ * Compressor init function *
-+ *********************************************************************/
-+
-+void jffs2_bbc_compressor_init(void);
-+void jffs2_bbc_compressor_deinit(void);
-+
-+/*********************************************************************
-+ * Statistics *
-+ *********************************************************************/
-+
-+char *jffs2_bbc_get_compr_stats(void);
-+char *jffs2_bbc_get_model_stats(void);
-+
-+/*********************************************************************
-+ * Other *
-+ *********************************************************************/
-+
-+
-+void jffs2_bbc_print_flush(void);
-+
-+#ifdef __KERNEL__
-+#include <linux/kernel.h>
-+#define jffs2_bbc_print1(a) printk(a)
-+#define jffs2_bbc_print2(a,b) printk(a,b)
-+#define jffs2_bbc_print3(a,b,c) printk(a,b,c)
-+#define jffs2_bbc_print4(a,b,c,d) printk(a,b,c,d)
-+#define jffs2_bbc_print5(a,b,c,d,e) printk(a,b,c,d,e)
-+#define jffs2_bbc_print6(a,b,c,d,e,f) printk(a,b,c,d,e,f)
-+#define jffs2_bbc_print7(a,b,c,d,e,f,g) printk(a,b,c,d,e,f,g)
-+#define jffs2_bbc_print8(a,b,c,d,e,f,g,h) printk(a,b,c,d,e,f,g,h)
-+#define jffs2_bbc_print9(a,b,c,d,e,f,g,h,i) printk(a,b,c,d,e,f,g,h,i)
-+#else
-+#include <stdio.h>
-+#define jffs2_bbc_print1(a) fprintf(stderr,a)
-+#define jffs2_bbc_print2(a,b) fprintf(stderr,a,b)
-+#define jffs2_bbc_print3(a,b,c) fprintf(stderr,a,b,c)
-+#define jffs2_bbc_print4(a,b,c,d) fprintf(stderr,a,b,c,d)
-+#define jffs2_bbc_print5(a,b,c,d,e) fprintf(stderr,a,b,c,d,e)
-+#define jffs2_bbc_print6(a,b,c,d,e,f) fprintf(stderr,a,b,c,d,e,f)
-+#define jffs2_bbc_print7(a,b,c,d,e,f,g) fprintf(stderr,a,b,c,d,e,f,g)
-+#define jffs2_bbc_print8(a,b,c,d,e,f,g,h) fprintf(stderr,a,b,c,d,e,f,g,h)
-+#define jffs2_bbc_print9(a,b,c,d,e,f,g,h,i) fprintf(stderr,a,b,c,d,e,f,g,h,i)
-+#endif
-+
-+/* Handle endianness */
-+#ifndef __KERNEL__
-+
-+#define ENDIAN_HOST_AND_TARGET_SAME 0
-+#define ENDIAN_HOST_AND_TARGET_DIFFERENT 1
-+
-+extern int jffs2_bbc_glb_endian_X;
-+
-+#endif
-+
-+/* Allocating more than one page (tip. 4096 byte) */
-+void *jffs2_bbc_malloc(long size);
-+void jffs2_bbc_free(void *addr);
-+
-+/* Allocating less than one page (tip. 4096 byte) */
-+void *jffs2_bbc_malloc_small(long size);
-+void jffs2_bbc_free_small(void *addr);
-+
-+/* Memory guarding */
-+int jffs2_bbc_test_memory_counter(int verbose);
-+char *jffs2_bbc_get_mem_stats(void);
-+int jffs2_bbc_get_memory_counter(void);
-+
-+#endif
-diff -Nur linux-mips-cvs/fs/jffs2/jffs2_bbc_fs.c linux-mips/fs/jffs2/jffs2_bbc_fs.c
---- linux-mips-cvs/fs/jffs2/jffs2_bbc_fs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/jffs2_bbc_fs.c 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,331 @@
-+/*
-+ * JFFS2-BBC: File System Extension for Linux Kernel
-+ *
-+ * $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+ *
-+ * Copyright (C) 2004, Ferenc Havasi
-+ *
-+ * 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 <linux/kernel.h>
-+#include <linux/fs.h>
-+#include <linux/jffs2.h>
-+#include <linux/proc_fs.h>
-+#include <linux/version.h>
-+
-+#include "nodelist.h"
-+
-+#include "jffs2_bbc_framework.h"
-+
-+struct jffs2_bbc_fs_sb_list {
-+ struct super_block *sb;
-+ struct jffs2_bbc_fs_sb_list *next;
-+};
-+
-+static struct jffs2_bbc_fs_sb_list *sb_list = NULL;
-+
-+void jffs2_bbc_proc_init(void);
-+void jffs2_bbc_proc_deinit(void);
-+
-+void jffs2_bbc_load_model(void *sb_par) {
-+ struct jffs2_sb_info *c;
-+ //struct jffs2_inode_info *f;
-+ struct dentry *config_dentry,*model_dentry;
-+ struct qstr config_name,model_name;
-+ struct file *config_file,*model_file;
-+ char *buff=NULL,*model_buff;
-+ int config_size,model_size;
-+ int i,prev_i;
-+ struct super_block *sb;
-+ struct jffs2_bbc_fs_sb_list *sb_l;
-+
-+ sb = sb_par;
-+ sb_l = jffs2_bbc_malloc_small(sizeof(struct jffs2_bbc_fs_sb_list));
-+ sb_l->sb = sb;
-+ sb_l->next = sb_list;
-+ sb_list = sb_l;
-+ config_name.name = JFFS2_BBC_CONFIG_FILE;
-+ config_name.len = strlen(config_name.name);
-+ config_name.hash = full_name_hash(config_name.name,config_name.len);
-+ config_dentry = d_alloc(sb->s_root,&config_name);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-+ sb->s_root->d_inode->i_op->lookup(sb->s_root->d_inode,config_dentry);
-+#else
-+ sb->s_root->d_inode->i_op->lookup(sb->s_root->d_inode,config_dentry,NULL);
-+#endif
-+
-+ if (config_dentry->d_inode != NULL) {
-+ config_size = config_dentry->d_inode->i_size;
-+ //printk("config_file_size=%d\n",config_size);
-+ if (config_size > 0) {
-+ buff = jffs2_bbc_malloc(config_size+1);
-+ config_file = dentry_open(config_dentry,NULL,O_RDONLY);
-+ kernel_read(config_file,0,buff,config_size);
-+ buff[config_size] = 0;
-+ for (prev_i = i = 0 ; i < config_size+1 ; i++) {
-+ if (buff[i] == '\n') buff[i]=0;
-+ if (buff[i] == 0) {
-+ if (prev_i != i) {
-+ if ((buff[prev_i] == '-') && (buff[prev_i+1] == 0)) break;
-+ printk("reading model file %s... ",buff+prev_i);
-+ model_name.name = buff+prev_i;
-+ model_name.len = strlen(buff+prev_i);
-+ model_name.hash = full_name_hash(model_name.name,model_name.len);
-+ model_dentry = d_alloc(sb->s_root,&model_name);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-+ sb->s_root->d_inode->i_op->lookup(sb->s_root->d_inode,model_dentry);
-+#else
-+ sb->s_root->d_inode->i_op->lookup(sb->s_root->d_inode,model_dentry,NULL);
-+#endif
-+ if (model_dentry->d_inode != NULL) {
-+ c = JFFS2_SB_INFO(model_dentry->d_inode->i_sb);
-+ //f = JFFS2_INODE_INFO(model_dentry->d_inode);
-+ model_size = model_dentry->d_inode->i_size;
-+ model_buff = jffs2_bbc_malloc(model_size);
-+ model_file = dentry_open(model_dentry,NULL,O_RDONLY);
-+ kernel_read(model_file,0,model_buff,model_size);
-+ if (jffs2_bbc_model_new(c,model_dentry->d_inode->i_ino,model_buff) != 0) {
-+ printk("already loaded.\n");
-+ jffs2_bbc_free(model_buff);
-+ }
-+ else {
-+ printk("done (%d bytes readed from inode %d).\n",model_size,(int)(model_dentry->d_inode->i_ino));
-+ }
-+ }
-+ else {
-+ printk("not found.\n");
-+ }
-+ dput(model_dentry);
-+ }
-+ prev_i = i+1;
-+ }
-+ }
-+ }
-+ }
-+ dput(config_dentry);
-+ if (buff != NULL) jffs2_bbc_free(buff);
-+}
-+
-+void jffs2_bbc_unload_model(void *sb_par)
-+{
-+ struct jffs2_sb_info *c;
-+ struct super_block *sb = sb_par;
-+ struct jffs2_bbc_fs_sb_list *sb_l,*sb_l2;
-+ int done = 0;
-+
-+ c = JFFS2_SB_INFO(sb);
-+ jffs2_bbc_model_del(c);
-+ if (sb_list == NULL) printk("jffs2.bbc: error! NULL sb list!\n");
-+ else {
-+ if (sb_list->sb == sb) {
-+ jffs2_bbc_free_small(sb_list);
-+ sb_list = NULL;
-+ done = 1;
-+ }
-+ else {
-+ sb_l = sb_list;
-+ while (sb_l->next != NULL) {
-+ if (sb_l->next->sb == sb) {
-+ sb_l2 = sb_l->next->next;
-+ jffs2_bbc_free_small(sb_l->next);
-+ sb_l->next = sb_l2;
-+ done = 1;
-+ }
-+ sb_l = sb_l->next;
-+ }
-+
-+ }
-+ if (done == 0) {
-+ printk("jffs2.bbc: cannot delete sb from sblist!\n");
-+ }
-+ }
-+}
-+
-+static int jffs2_bbc_get_mounted(void) {
-+ struct jffs2_bbc_fs_sb_list *sb_l;
-+ int num = 0;
-+
-+ sb_l = sb_list;
-+ while (sb_l != NULL) {
-+ num++;
-+ sb_l = sb_l->next;
-+ }
-+ return num;
-+
-+}
-+
-+int jffs2_bbc_proc_read(char *buf, char **start, off_t offset, int count, int *eof, void *data)
-+{
-+ int len = 0, mode;
-+
-+ mode = jffs2_bbc_get_compression_mode();
-+ len += sprintf(buf + len, "BBC version: %s\n", JFFS2_BBC_VERSION);
-+ len += sprintf(buf+len,"Mounted jffs2 filesystems: %d\n",jffs2_bbc_get_mounted());
-+ //len += sprintf(buf+len,"actual model file inode: %d\n",jffs2_bbc_model_get_inum());
-+ len += sprintf(buf + len, "Compression mode: ");
-+ if (mode == JFFS2_BBC_ZLIB_MODE)
-+ len += sprintf(buf + len, "ZLIB mode");
-+ else if (mode == JFFS2_BBC_SIZE_MODE)
-+ len += sprintf(buf + len, "SIZE mode");
-+ else if (mode == JFFS2_BBC_FASTR_MODE)
-+ len += sprintf(buf + len, "FASTR mode");
-+ else if (mode == JFFS2_BBC_FASTW_MODE)
-+ len += sprintf(buf + len, "FASTW mode");
-+ else if (mode == JFFS2_BBC_FASTS_MODE)
-+ len += sprintf(buf + len, "FASTS mode");
-+ else if (mode == JFFS2_BBC_DUMMY_MODE)
-+ len += sprintf(buf + len, "DUMMY mode");
-+ else if (mode == JFFS2_BBC_MANUAL_MODE) {
-+ len += sprintf(buf + len, "MANUAL mode (");
-+ if (jffs2_bbc_get_manual_compressor() != NULL)
-+ len += sprintf(buf + len, "%s)", jffs2_bbc_get_manual_compressor()->name);
-+ else
-+ len += sprintf(buf + len, "ZLIB)");
-+ }
-+ else
-+ len += sprintf(buf + len, "unknown mode");
-+ len += sprintf(buf + len, "\n");
-+ len += sprintf(buf + len, "%s", jffs2_bbc_get_compr_stats());
-+ len += sprintf(buf + len, "%s", jffs2_bbc_get_model_stats());
-+ len += sprintf(buf + len, "%s", jffs2_bbc_get_mem_stats());
-+ *eof = 1;
-+ return len;
-+}
-+
-+int jffs2_bbc_proc_write(struct file *file, const char *buffer_orig, unsigned long count, void *data)
-+{
-+ char *buffer;
-+ int i;
-+ struct jffs2_bbc_fs_sb_list *sb_l;
-+
-+ if (buffer_orig == NULL) return 0;
-+
-+ buffer = jffs2_bbc_malloc(count+2);
-+ for (i=0;i<count;i++) buffer[i]=buffer_orig[i];
-+ buffer[count] = 0;
-+ if ((*buffer == 'z') || (*buffer == 'Z')) {
-+ jffs2_bbc_set_compression_mode(JFFS2_BBC_ZLIB_MODE);
-+ jffs2_bbc_print1("jffs2.bbc: ZLIB compression mode activated.\n");
-+ jffs2_bbc_free(buffer);
-+ return count;
-+ }
-+ else if ((*buffer == 's') || (*buffer == 'S')) {
-+ jffs2_bbc_set_compression_mode(JFFS2_BBC_SIZE_MODE);
-+ jffs2_bbc_print1("jffs2.bbc: SIZE compression mode activated.\n");
-+ jffs2_bbc_free(buffer);
-+ return count;
-+ }
-+ else if ((*buffer == 'd') || (*buffer == 'D')) {
-+ jffs2_bbc_set_compression_mode(JFFS2_BBC_DUMMY_MODE);
-+ jffs2_bbc_print1("jffs2.bbc: DUMMY compression mode activated.\n");
-+ jffs2_bbc_free(buffer);
-+ return count;
-+ }
-+ else if (((*buffer == 'm') || (*buffer == 'M')) && (count >= 3) && (buffer[1] == ':')) {
-+ jffs2_bbc_print1("jffs2.bbc: activating MANUAL mode.\n");
-+ jffs2_bbc_set_manual_compressor_by_name(buffer + 2);
-+ jffs2_bbc_free(buffer);
-+ return count;
-+ }
-+ else if (((*buffer == '0')) && (count >= 3) && (buffer[1] == ':')) {
-+ jffs2_bbc_print1("jffs2.bbc: disabling a compressor... ");
-+ if (jffs2_bbc_disable_compressor_by_name(buffer + 2) == 0) {
-+ jffs2_bbc_print1("done.\n");
-+ }
-+ else {
-+ jffs2_bbc_print1("not found.\n");
-+ }
-+ jffs2_bbc_free(buffer);
-+ return count;
-+ }
-+ else if (((*buffer == '1')) && (count >= 3) && (buffer[1] == ':')) {
-+ jffs2_bbc_print1("jffs2.bbc: enabling a compressor... ");
-+ if (jffs2_bbc_enable_compressor_by_name(buffer + 2) == 0) {
-+ jffs2_bbc_print1("done.\n");
-+ }
-+ else {
-+ jffs2_bbc_print1("not found.\n");
-+ }
-+ jffs2_bbc_free(buffer);
-+ return count;
-+ }
-+ else if (((*buffer == 'c') || (*buffer == 'C')) && (count >= 3) && (buffer[1] == ':')) {
-+ jffs2_bbc_compressor_command_by_name(buffer + 2);
-+ jffs2_bbc_free(buffer);
-+ return count;
-+ }
-+ else if ((*buffer == 'r') || (*buffer == 'R')) {
-+ jffs2_bbc_print1("jffs2.bbc: reloading model files:\n");
-+ sb_l = sb_list;
-+ while (sb_l != NULL) {
-+ jffs2_bbc_unload_model(sb_l->sb);
-+ jffs2_bbc_load_model(sb_l->sb);
-+ sb_l = sb_l->next;
-+ }
-+ jffs2_bbc_free(buffer);
-+ return count;
-+ }
-+ else if (((buffer[0] == 'f') || (buffer[0] == 'F'))&&((buffer[1] == 'r') || (buffer[1] == 'R'))) {
-+ jffs2_bbc_set_compression_mode(JFFS2_BBC_FASTR_MODE);
-+ jffs2_bbc_print1("jffs2.bbc: FASTR compression mode activated.\n");
-+ jffs2_bbc_free(buffer);
-+ return count;
-+ }
-+ else if (((buffer[0] == 'f') || (buffer[0] == 'F'))&&((buffer[1] == 'w') || (buffer[1] == 'W'))) {
-+ jffs2_bbc_set_compression_mode(JFFS2_BBC_FASTW_MODE);
-+ jffs2_bbc_print1("jffs2.bbc: FASTW compression mode activated.\n");
-+ jffs2_bbc_free(buffer);
-+ return count;
-+ }
-+ else if (((buffer[0] == 'f') || (buffer[0] == 'F'))&&((buffer[1] == 's') || (buffer[1] == 'S'))) {
-+ jffs2_bbc_set_compression_mode(JFFS2_BBC_FASTS_MODE);
-+ jffs2_bbc_print1("jffs2.bbc: FASTS compression mode activated.\n");
-+ jffs2_bbc_free(buffer);
-+ return count;
-+ }
-+
-+ jffs2_bbc_print1("jffs2.bbc: unkown command. Valid commands are:\n"
-+ " z = switch to ZLIB compression mode\n"
-+ " s = switch to SIZE compression mode\n"
-+ " d = switch to DUMMY compression mode\n"
-+ " fr = switch to FASTR compression mode\n"
-+ " fw = switch to FASTW compression mode\n"
-+ " fs = switch to FASTS compression mode\n"
-+ " r = reread model files from actual file system\n"
-+ " m:compressor_name = switch to MANUAL compression mode\n"
-+ " 0:compressor_name = disable a compressor\n"
-+ " 1:compressor_name = enable a compressor\n"
-+ " c:compressor_name:command = enable a compressor\n");
-+ jffs2_bbc_free(buffer);
-+ return count;
-+}
-+
-+void jffs2_bbc_proc_init()
-+{
-+ struct proc_dir_entry *res = create_proc_entry("jffs2_bbc", 0, NULL);
-+ jffs2_bbc_compressor_init();
-+ if (res) {
-+ res->read_proc = jffs2_bbc_proc_read;
-+ res->write_proc = jffs2_bbc_proc_write;
-+ }
-+}
-+
-+void jffs2_bbc_proc_deinit()
-+{
-+ jffs2_bbc_compressor_deinit();
-+ remove_proc_entry("jffs2_bbc", NULL);
-+}
-diff -Nur linux-mips-cvs/fs/jffs2/jffs2_bbc_fs.h linux-mips/fs/jffs2/jffs2_bbc_fs.h
---- linux-mips-cvs/fs/jffs2/jffs2_bbc_fs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/jffs2_bbc_fs.h 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,30 @@
-+/*
-+ * JFFS2 BBC: File System Extension for Linux Kernel - headers
-+ *
-+ * $Id: 301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+ *
-+ * Copyright (C) 2004, Ferenc Havasi
-+ *
-+ * 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.
-+ *
-+ */
-+
-+extern int jffs2_bbc_inode_not_found;
-+
-+void jffs2_bbc_load_model(void *sb);
-+void jffs2_bbc_unload_model(void *sb);
-+
-+void jffs2_bbc_proc_init(void);
-+void jffs2_bbc_proc_deinit(void);
-diff -Nur linux-mips-cvs/fs/jffs2/jffs2_bbc_lzari_comp.c linux-mips/fs/jffs2/jffs2_bbc_lzari_comp.c
---- linux-mips-cvs/fs/jffs2/jffs2_bbc_lzari_comp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/jffs2_bbc_lzari_comp.c 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,788 @@
-+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
-+
-+/*
-+ jffs2_bbc_lzari_comp.c -- Lempel-Ziv-Arithmetic coding compression module for jffs2
-+ Copyright (C) 2004 Patrik Kluba
-+ Based on the LZARI source included in LDS (lossless datacompression sources)
-+ Block-compression and bitstream modifications by Patrik Kluba
-+ $Header: /openwrt/openwrt/package/linux/kernel-patches/301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*/
-+
-+/*
-+Original copyright follows:
-+
-+**************************************************************
-+ LZARI.C -- A Data Compression Program
-+ (tab = 4 spaces)
-+**************************************************************
-+ 4/7/1989 Haruhiko Okumura
-+ Use, distribute, and modify this program freely.
-+ Please send me your improved versions.
-+ PC-VAN SCIENCE
-+ NIFTY-Serve PAF01022
-+ CompuServe 74050,1022
-+**************************************************************
-+
-+LZARI.C (c)1989 by Haruyasu Yoshizaki, Haruhiko Okumura, and Kenji Rikitake.
-+All rights reserved. Permission granted for non-commercial use.
-+
-+*/
-+
-+/*
-+
-+ 2004-02-18 pajko <pajko(AT)halom(DOT)u-szeged(DOT)hu>
-+ Removed unused variables and fixed no return value
-+
-+ 2004-02-16 pajko <pajko(AT)halom(DOT)u-szeged(DOT)hu>
-+ Initial release
-+
-+*/
-+
-+/* lzari.c */
-+
-+#define N 4096 /* size of ring buffer */
-+#define F 60 /* upper limit for match_length */
-+#define THRESHOLD 2 /* encode string into position and length
-+ if match_length is greater than this */
-+#define NIL N /* index for root of binary search trees */
-+
-+static unsigned char
-+ text_buf[N + F - 1]; /* ring buffer of size N,
-+ with extra F-1 bytes to facilitate string comparison */
-+static unsigned long match_position, match_length, /* of longest match. These are
-+ set by the InsertNode() procedure. */
-+ lson[N + 1], rson[N + 257], dad[N + 1]; /* left & right children &
-+ parents -- These constitute binary search trees. */
-+
-+static void InitTree(void) /* Initialize trees */
-+{
-+ unsigned long i;
-+
-+ /* For i = 0 to N - 1, rson[i] and lson[i] will be the right and
-+ left children of node i. These nodes need not be initialized.
-+ Also, dad[i] is the parent of node i. These are initialized to
-+ NIL (= N), which stands for 'not used.'
-+ For i = 0 to 255, rson[N + i + 1] is the root of the tree
-+ for strings that begin with character i. These are initialized
-+ to NIL. Note there are 256 trees. */
-+
-+ for (i = N + 1; i <= N + 256; i++) rson[i] = NIL; /* root */
-+ for (i = 0; i < N; i++) dad[i] = NIL; /* node */
-+}
-+
-+static void InsertNode(unsigned long r)
-+ /* Inserts string of length F, text_buf[r..r+F-1], into one of the
-+ trees (text_buf[r]'th tree) and returns the longest-match position
-+ and length via the global variables match_position and match_length.
-+ If match_length = F, then removes the old node in favor of the new
-+ one, because the old one will be deleted sooner.
-+ Note r plays double role, as tree node and position in buffer. */
-+{
-+ unsigned long i, p, temp;
-+ unsigned char *key;
-+ signed long cmp;
-+
-+ cmp = 1; key = &text_buf[r]; p = N + 1 + key[0];
-+ rson[r] = lson[r] = NIL; match_length = 0;
-+ for ( ; ; ) {
-+ if (cmp >= 0) {
-+ if (rson[p] != NIL) p = rson[p];
-+ else { rson[p] = r; dad[r] = p; return; }
-+ } else {
-+ if (lson[p] != NIL) p = lson[p];
-+ else { lson[p] = r; dad[r] = p; return; }
-+ }
-+ for (i = 1; i < F; i++)
-+ if ((cmp = key[i] - text_buf[p + i]) != 0) break;
-+ if (i > THRESHOLD) {
-+ if (i > match_length) {
-+ match_position = (r - p) & (N - 1);
-+ if ((match_length = i) >= F) break;
-+ } else if (i == match_length) {
-+ if ((temp = (r - p) & (N - 1)) < match_position)
-+ match_position = temp;
-+ }
-+ }
-+ }
-+ dad[r] = dad[p]; lson[r] = lson[p]; rson[r] = rson[p];
-+ dad[lson[p]] = r; dad[rson[p]] = r;
-+ if (rson[dad[p]] == p) rson[dad[p]] = r;
-+ else lson[dad[p]] = r;
-+ dad[p] = NIL; /* remove p */
-+}
-+
-+static void DeleteNode(unsigned long p) /* Delete node p from tree */
-+{
-+ unsigned long q;
-+
-+ if (dad[p] == NIL) return; /* not in tree */
-+ if (rson[p] == NIL) q = lson[p];
-+ else if (lson[p] == NIL) q = rson[p];
-+ else {
-+ q = lson[p];
-+ if (rson[q] != NIL) {
-+ do { q = rson[q]; } while (rson[q] != NIL);
-+ rson[dad[q]] = lson[q]; dad[lson[q]] = dad[q];
-+ lson[q] = lson[p]; dad[lson[p]] = q;
-+ }
-+ rson[q] = rson[p]; dad[rson[p]] = q;
-+ }
-+ dad[q] = dad[p];
-+ if (rson[dad[p]] == p) rson[dad[p]] = q;
-+ else lson[dad[p]] = q;
-+ dad[p] = NIL;
-+}
-+
-+/********** Arithmetic Compression **********/
-+
-+/* If you are not familiar with arithmetic compression, you should read
-+ I. E. Witten, R. M. Neal, and J. G. Cleary,
-+ Communications of the ACM, Vol. 30, pp. 520-540 (1987),
-+ from which much have been borrowed. */
-+
-+#define M 15
-+
-+/* Q1 (= 2 to the M) must be sufficiently large, but not so
-+ large as the unsigned long 4 * Q1 * (Q1 - 1) overflows. */
-+
-+#define Q1 (1UL << M)
-+#define Q2 (2 * Q1)
-+#define Q3 (3 * Q1)
-+#define Q4 (4 * Q1)
-+#define MAX_CUM (Q1 - 1)
-+
-+#define N_CHAR (256 - THRESHOLD + F)
-+ /* character code = 0, 1, ..., N_CHAR - 1 */
-+
-+static unsigned long char_to_sym[N_CHAR], sym_to_char[N_CHAR + 1];
-+static unsigned long
-+ sym_freq[N_CHAR + 1], /* frequency for symbols */
-+ sym_cum[N_CHAR + 1], /* cumulative freq for symbols */
-+ position_cum[N + 1]; /* cumulative freq for positions */
-+
-+static void StartModel(void) /* Initialize model */
-+{
-+ unsigned long ch, sym, i;
-+
-+ sym_cum[N_CHAR] = 0;
-+ for (sym = N_CHAR; sym >= 1; sym--) {
-+ ch = sym - 1;
-+ char_to_sym[ch] = sym; sym_to_char[sym] = ch;
-+ sym_freq[sym] = 1;
-+ sym_cum[sym - 1] = sym_cum[sym] + sym_freq[sym];
-+ }
-+ sym_freq[0] = 0; /* sentinel (!= sym_freq[1]) */
-+ position_cum[N] = 0;
-+ for (i = N; i >= 1; i--)
-+ position_cum[i - 1] = position_cum[i] + 10000 / (i + 200);
-+ /* empirical distribution function (quite tentative) */
-+ /* Please devise a better mechanism! */
-+}
-+
-+static void UpdateModel(unsigned long sym)
-+{
-+ unsigned long c, ch_i, ch_sym;
-+ unsigned long i;
-+ if (sym_cum[0] >= MAX_CUM) {
-+ c = 0;
-+ for (i = N_CHAR; i > 0; i--) {
-+ sym_cum[i] = c;
-+ c += (sym_freq[i] = (sym_freq[i] + 1) >> 1);
-+ }
-+ sym_cum[0] = c;
-+ }
-+ for (i = sym; sym_freq[i] == sym_freq[i - 1]; i--) ;
-+ if (i < sym) {
-+ ch_i = sym_to_char[i]; ch_sym = sym_to_char[sym];
-+ sym_to_char[i] = ch_sym; sym_to_char[sym] = ch_i;
-+ char_to_sym[ch_i] = sym; char_to_sym[ch_sym] = i;
-+ }
-+ sym_freq[i]++;
-+ while (--i > 0) sym_cum[i]++;
-+ sym_cum[0]++;
-+}
-+
-+static unsigned long BinarySearchSym(unsigned long x)
-+ /* 1 if x >= sym_cum[1],
-+ N_CHAR if sym_cum[N_CHAR] > x,
-+ i such that sym_cum[i - 1] > x >= sym_cum[i] otherwise */
-+{
-+ unsigned long i, j, k;
-+
-+ i = 1; j = N_CHAR;
-+ while (i < j) {
-+ k = (i + j) / 2;
-+ if (sym_cum[k] > x) i = k + 1; else j = k;
-+ }
-+ return i;
-+}
-+
-+unsigned long BinarySearchPos(unsigned long x)
-+ /* 0 if x >= position_cum[1],
-+ N - 1 if position_cum[N] > x,
-+ i such that position_cum[i] > x >= position_cum[i + 1] otherwise */
-+{
-+ unsigned long i, j, k;
-+
-+ i = 1; j = N;
-+ while (i < j) {
-+ k = (i + j) / 2;
-+ if (position_cum[k] > x) i = k + 1; else j = k;
-+ }
-+ return i - 1;
-+}
-+
-+/* modified for block compression */
-+/* on return, srclen will contain the number of successfully compressed bytes
-+ and dstlen will contain completed compressed bytes */
-+
-+static int Encode(unsigned char *srcbuf, unsigned char *dstbuf, unsigned long *srclen,
-+ unsigned long *dstlen)
-+{
-+ unsigned long c, i, len, r, s, last_match_length, sym, range;
-+ unsigned long low = 0;
-+ unsigned long high = Q4;
-+ unsigned long shifts = 0; /* counts for magnifying low and high around Q2 */
-+ unsigned char *ip, *op;
-+ unsigned long written = 0;
-+ unsigned long read = 0;
-+ unsigned char buffer = 0;
-+ unsigned char mask = 128;
-+ unsigned char *srcend = srcbuf + *srclen;
-+ unsigned char *dstend = dstbuf + *dstlen;
-+ ip = srcbuf;
-+ op = dstbuf;
-+ StartModel();
-+ InitTree(); /* initialize trees */
-+ s = 0; r = N - F;
-+ for (i = s; i < r; i++) text_buf[i] = ' '; /* Clear the buffer with
-+ any character that will appear often. */
-+ for (len = 0; (len < F) && (ip < srcend); len++)
-+ text_buf[r + len] = *(ip++); /* Read F bytes into the last F bytes of
-+ the buffer */
-+ read = len;
-+ for (i = 1; i <= F; i++) InsertNode(r - i); /* Insert the F strings,
-+ each of which begins with one or more 'space' characters. Note
-+ the order in which these strings are inserted. This way,
-+ degenerate trees will be less likely to occur. */
-+ InsertNode(r); /* Finally, insert the whole string just read. The
-+ global variables match_length and match_position are set. */
-+ do {
-+ if (match_length > len) match_length = len; /* match_length
-+ may be spuriously long near the end of text. */
-+ if (match_length <= THRESHOLD) {
-+ match_length = 1; /* Not long enough match. Send one byte. */
-+ sym = char_to_sym[text_buf[r]];
-+ range = high - low;
-+ high = low + (range * sym_cum[sym - 1]) / sym_cum[0];
-+ low += (range * sym_cum[sym ]) / sym_cum[0];
-+ for ( ; ; ) {
-+ if (high <= Q2) {
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ for ( ; shifts > 0; shifts--) {
-+ buffer |= mask;
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ }
-+ } else if (low >= Q2) {
-+ buffer |= mask;
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ for ( ; shifts > 0; shifts--) {
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ }
-+ low -= Q2;
-+ high -= Q2;
-+ } else if (low >= Q1 && high <= Q3) {
-+ shifts++;
-+ low -= Q1;
-+ high -= Q1;
-+ } else break;
-+ low += low; high += high;
-+ }
-+ UpdateModel(sym);
-+ } else {
-+ sym = char_to_sym[255 - THRESHOLD + match_length];
-+ range = high - low;
-+ high = low + (range * sym_cum[sym - 1]) / sym_cum[0];
-+ low += (range * sym_cum[sym ]) / sym_cum[0];
-+ for ( ; ; ) {
-+ if (high <= Q2) {
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ for ( ; shifts > 0; shifts--) {
-+ buffer |= mask;
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ }
-+ } else if (low >= Q2) {
-+ buffer |= mask;
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ for ( ; shifts > 0; shifts--) {
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ }
-+ low -= Q2;
-+ high -= Q2;
-+ } else if (low >= Q1 && high <= Q3) {
-+ shifts++;
-+ low -= Q1;
-+ high -= Q1;
-+ } else break;
-+ low += low; high += high;
-+ }
-+ UpdateModel(sym);
-+ range = high - low;
-+ high = low + (range * position_cum[match_position - 1]) / position_cum[0];
-+ low += (range * position_cum[match_position ]) / position_cum[0];
-+ for ( ; ; ) {
-+ if (high <= Q2) {
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ for ( ; shifts > 0; shifts--) {
-+ buffer |= mask;
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ }
-+ } else {
-+ if (low >= Q2) {
-+ buffer |= mask;
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ for ( ; shifts > 0; shifts--) {
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ }
-+ low -= Q2;
-+ high -= Q2;
-+ } else {
-+ if ((low >= Q1) && (high <= Q3)) {
-+ shifts++;
-+ low -= Q1;
-+ high -= Q1;
-+ } else {
-+ break;
-+ }
-+ }
-+ }
-+ low += low;
-+ high += high;
-+ }
-+ }
-+ last_match_length = match_length;
-+ for (i = 0; (i < last_match_length) && (ip < srcend); i++) {
-+ c = *(ip++);
-+ DeleteNode(s);
-+ text_buf[s] = c;
-+ if (s < F - 1)
-+ text_buf[s + N] = c;
-+ s = (s + 1) & (N - 1);
-+ r = (r + 1) & (N - 1);
-+ InsertNode(r);
-+ }
-+ read += i;
-+ while (i++ < last_match_length) {
-+ DeleteNode(s);
-+ s = (s + 1) & (N - 1);
-+ r = (r + 1) & (N - 1);
-+ if (--len) InsertNode(r);
-+ }
-+ } while (len > 0);
-+ shifts++;
-+ if (low < Q1) {
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ for ( ; shifts > 0; shifts--) {
-+ buffer |= mask;
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ }
-+ } else {
-+ buffer |= mask;
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ for ( ; shifts > 0; shifts--) {
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ }
-+ }
-+ for (i = 0; i < 7; i++) {
-+ if ((mask >>= 1) == 0) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = buffer;
-+ buffer = 0;
-+ mask = 128;
-+ written++;
-+ *srclen = read;
-+ }
-+ }
-+ *dstlen = written;
-+ return 0;
-+}
-+
-+static int Decode(unsigned char *srcbuf, unsigned char *dstbuf, unsigned long srclen,
-+ unsigned long dstlen) /* Just the reverse of Encode(). */
-+{
-+ unsigned long i, r, j, k, c, range, sym;
-+ unsigned char *ip, *op;
-+ unsigned char *srcend = srcbuf + srclen;
-+ unsigned char *dstend = dstbuf + dstlen;
-+ unsigned char buffer = 0;
-+ unsigned char mask = 0;
-+ unsigned long low = 0;
-+ unsigned long high = Q4;
-+ unsigned long value = 0;
-+ ip = srcbuf;
-+ op = dstbuf;
-+ for (i = 0; i < M + 2; i++) {
-+ value *= 2;
-+ if ((mask >>= 1) == 0) {
-+ buffer = (ip >= srcend) ? 0 : *(ip++);
-+ mask = 128;
-+ }
-+ value += ((buffer & mask) != 0);
-+ }
-+ StartModel();
-+ for (i = 0; i < N - F; i++) text_buf[i] = ' ';
-+ r = N - F;
-+ while (op < dstend) {
-+ range = high - low;
-+ sym = BinarySearchSym((unsigned long)
-+ (((value - low + 1) * sym_cum[0] - 1) / range));
-+ high = low + (range * sym_cum[sym - 1]) / sym_cum[0];
-+ low += (range * sym_cum[sym ]) / sym_cum[0];
-+ for ( ; ; ) {
-+ if (low >= Q2) {
-+ value -= Q2; low -= Q2; high -= Q2;
-+ } else if (low >= Q1 && high <= Q3) {
-+ value -= Q1; low -= Q1; high -= Q1;
-+ } else if (high > Q2) break;
-+ low += low; high += high;
-+ value *= 2;
-+ if ((mask >>= 1) == 0) {
-+ buffer = (ip >= srcend) ? 0 : *(ip++);
-+ mask = 128;
-+ }
-+ value += ((buffer & mask) != 0);
-+ }
-+ c = sym_to_char[sym];
-+ UpdateModel(sym);
-+ if (c < 256) {
-+ if (op >= dstend) return -1;
-+ *(op++) = c;
-+ text_buf[r++] = c;
-+ r &= (N - 1);
-+ } else {
-+ j = c - 255 + THRESHOLD;
-+ range = high - low;
-+ i = BinarySearchPos((unsigned long)
-+ (((value - low + 1) * position_cum[0] - 1) / range));
-+ high = low + (range * position_cum[i ]) / position_cum[0];
-+ low += (range * position_cum[i + 1]) / position_cum[0];
-+ for ( ; ; ) {
-+ if (low >= Q2) {
-+ value -= Q2; low -= Q2; high -= Q2;
-+ } else if (low >= Q1 && high <= Q3) {
-+ value -= Q1; low -= Q1; high -= Q1;
-+ } else if (high > Q2) break;
-+ low += low; high += high;
-+ value *= 2;
-+ if ((mask >>= 1) == 0) {
-+ buffer = (ip >= srcend) ? 0 : *(ip++);
-+ mask = 128;
-+ }
-+ value += ((buffer & mask) != 0);
-+ }
-+ i = (r - i - 1) & (N - 1);
-+ for (k = 0; k < j; k++) {
-+ c = text_buf[(i + k) & (N - 1)];
-+ if (op >= dstend) return -1;
-+ *(op++) = c;
-+ text_buf[r++] = c;
-+ r &= (N - 1);
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+/* interface to jffs2 bbc follows */
-+
-+#include "jffs2_bbc_framework.h"
-+
-+#define JFFS2_BBC_LZARI_BLOCK_SIGN {0x73, 0x9a, 0x1c, 0x4d}
-+
-+static int
-+jffs2_bbc_lzari_compressor_init (void);
-+
-+static void
-+jffs2_bbc_lzari_compressor_deinit (void);
-+
-+static int
-+jffs2_bbc_lzari_compress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long *sourcelen,
-+ unsigned long *dstlen);
-+
-+static int
-+jffs2_bbc_lzari_estimate (void *model, unsigned char *input,
-+ unsigned long sourcelen, unsigned long *dstlen,
-+ unsigned long *readtime, unsigned long *writetime);
-+
-+static int
-+jffs2_bbc_lzari_decompress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long sourcelen,
-+ unsigned long dstlen);
-+
-+static char *
-+jffs2_bbc_lzari_proc_info (void);
-+
-+static int
-+jffs2_bbc_lzari_proc_command (char *command);
-+
-+struct jffs2_bbc_compressor_type jffs2_bbc_lzari = {
-+ "lzari",
-+ 0,
-+ JFFS2_BBC_LZARI_BLOCK_SIGN,
-+ jffs2_bbc_lzari_compressor_init,
-+ NULL,
-+ NULL,
-+ jffs2_bbc_lzari_compressor_deinit,
-+ jffs2_bbc_lzari_compress,
-+ jffs2_bbc_lzari_estimate,
-+ jffs2_bbc_lzari_decompress,
-+ jffs2_bbc_lzari_proc_info,
-+ jffs2_bbc_lzari_proc_command
-+};
-+
-+static int
-+jffs2_bbc_lzari_compressor_init (void)
-+{
-+ return 0;
-+}
-+
-+static void
-+jffs2_bbc_lzari_compressor_deinit (void)
-+{
-+}
-+
-+static int
-+jffs2_bbc_lzari_compress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long *sourcelen,
-+ unsigned long *dstlen)
-+{
-+ int retval;
-+ unsigned long dst = *dstlen;
-+ *(output++) = jffs2_bbc_lzari.block_sign[0];
-+ *(output++) = jffs2_bbc_lzari.block_sign[1];
-+ dst -= 2;
-+ retval = Encode(input, output, sourcelen, &dst);
-+ dst += 2;
-+ *dstlen = dst;
-+ return retval;
-+}
-+
-+static int
-+jffs2_bbc_lzari_estimate (void *model, unsigned char *input,
-+ unsigned long sourcelen, unsigned long *dstlen,
-+ unsigned long *readtime, unsigned long *writetime)
-+{
-+ *dstlen = sourcelen / 2;
-+ *readtime = JFFS2_BBC_ZLIB_READ_TIME * 15;
-+ *writetime = JFFS2_BBC_ZLIB_WRITE_TIME * 7;
-+ return 0;
-+}
-+
-+static int
-+jffs2_bbc_lzari_decompress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long sourcelen,
-+ unsigned long dstlen)
-+{
-+ if ( ( *(input++) != (unsigned char)jffs2_bbc_lzari.block_sign[0] ) ||
-+ ( *(input++) != (unsigned char)jffs2_bbc_lzari.block_sign[1] )
-+ ) {
-+ return -1;
-+ } else {
-+ return Decode(input, output, sourcelen - 2, dstlen);
-+ }
-+}
-+
-+static char *
-+jffs2_bbc_lzari_proc_info (void)
-+{
-+ return "Lempel-Ziv-Arithmetic coding compression module";
-+}
-+
-+static int
-+jffs2_bbc_lzari_proc_command (char *command)
-+{
-+ return 0;
-+}
-+
-+struct jffs2_bbc_compressor_type *
-+jffs2_bbc_lzari_init (int mode)
-+{
-+ if (jffs2_bbc_register_compressor (&jffs2_bbc_lzari) == 0)
-+ {
-+ return &jffs2_bbc_lzari;
-+ }
-+ else
-+ {
-+ return NULL;
-+ }
-+}
-+
-+void
-+jffs2_bbc_lzari_deinit (void)
-+{
-+ jffs2_bbc_unregister_compressor (&jffs2_bbc_lzari);
-+}
-diff -Nur linux-mips-cvs/fs/jffs2/jffs2_bbc_lzhd_comp.c linux-mips/fs/jffs2/jffs2_bbc_lzhd_comp.c
---- linux-mips-cvs/fs/jffs2/jffs2_bbc_lzhd_comp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/jffs2_bbc_lzhd_comp.c 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,747 @@
-+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
-+
-+/*
-+ jffs2_bbc_lzhd_comp.c -- Lempel-Ziv-(dynamic) Huffman compression module for jffs2
-+ Copyright (C) 2004 Patrik Kluba
-+ Based on the LZHUF source included in LDS (lossless datacompression sources)
-+ Block-compression and bitstream modifications by Patrik Kluba
-+ $Header: /openwrt/openwrt/package/linux/kernel-patches/301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*/
-+
-+/*
-+Original copyright follows:
-+
-+**************************************************************
-+ lzhuf.c
-+ written by Haruyasu Yoshizaki 11/20/1988
-+ some minor changes 4/6/1989
-+ comments translated by Haruhiko Okumura 4/7/1989
-+**************************************************************
-+
-+LZHUF.C (c)1989 by Haruyasu Yoshizaki, Haruhiko Okumura, and Kenji Rikitake.
-+All rights reserved. Permission granted for non-commercial use.
-+
-+*/
-+
-+/*
-+
-+ 2004-02-18 pajko <pajko(AT)halom(DOT)u-szeged(DOT)hu>
-+ Replaced name lzh-d with lzhd
-+ Fixed no return value
-+
-+ 2004-02-16 pajko <pajko(AT)halom(DOT)u-szeged(DOT)hu>
-+ Initial release
-+
-+*/
-+
-+/* required because of memmove */
-+#ifndef __KERNEL__
-+ #include <string.h>
-+#else
-+ #include <linux/string.h>
-+#endif
-+
-+/* lzhuf.c */
-+
-+#define N 4096 /* size of ring buffer */
-+#define F 60 /* upper limit for match_length */
-+#define THRESHOLD 2 /* encode string into position and length
-+ if match_length is greater than this */
-+#define NIL N /* index for root of binary search trees */
-+
-+static unsigned char
-+ text_buf[N + F - 1]; /* ring buffer of size N,
-+ with extra F-1 bytes to facilitate string comparison */
-+static unsigned long match_position, match_length, /* of longest match. These are
-+ set by the InsertNode() procedure. */
-+ lson[N + 1], rson[N + 257], dad[N + 1]; /* left & right children &
-+ parents -- These constitute binary search trees. */
-+
-+static void InitTree(void) /* initialize trees */
-+{
-+ unsigned long i;
-+
-+ /* For i = 0 to N - 1, rson[i] and lson[i] will be the right and
-+ left children of node i. These nodes need not be initialized.
-+ Also, dad[i] is the parent of node i. These are initialized to
-+ NIL (= N), which stands for 'not used.'
-+ For i = 0 to 255, rson[N + i + 1] is the root of the tree
-+ for strings that begin with character i. These are initialized
-+ to NIL. Note there are 256 trees. */
-+
-+ for (i = N + 1; i <= N + 256; i++) rson[i] = NIL;
-+ for (i = 0; i < N; i++) dad[i] = NIL;
-+}
-+
-+static void InsertNode(unsigned long r)
-+ /* Inserts string of length F, text_buf[r..r+F-1], into one of the
-+ trees (text_buf[r]'th tree) and returns the longest-match position
-+ and length via the global variables match_position and match_length.
-+ If match_length = F, then removes the old node in favor of the new
-+ one, because the old one will be deleted sooner.
-+ Note r plays double role, as tree node and position in buffer. */
-+{
-+ unsigned long i, p, c;
-+ signed long cmp;
-+ unsigned char *key;
-+
-+ cmp = 1; key = &text_buf[r]; p = N + 1 + key[0];
-+ rson[r] = lson[r] = NIL; match_length = 0;
-+ for ( ; ; ) {
-+ if (cmp >= 0) {
-+ if (rson[p] != NIL) p = rson[p];
-+ else { rson[p] = r; dad[r] = p; return; }
-+ } else {
-+ if (lson[p] != NIL) p = lson[p];
-+ else { lson[p] = r; dad[r] = p; return; }
-+ }
-+ for (i = 1; i < F; i++)
-+ if ((cmp = key[i] - text_buf[p + i]) != 0) break;
-+ if (i > THRESHOLD) {
-+ if (i > match_length) {
-+ match_position = ((r - p) & (N - 1)) - 1;
-+ if ((match_length = i) >= F) break;
-+ }
-+ if (i == match_length) {
-+ if ((c = ((r - p) & (N - 1)) - 1) < match_position) {
-+ match_position = c;
-+ }
-+ }
-+ }
-+ }
-+ dad[r] = dad[p]; lson[r] = lson[p]; rson[r] = rson[p];
-+ dad[lson[p]] = r; dad[rson[p]] = r;
-+ if (rson[dad[p]] == p) rson[dad[p]] = r;
-+ else lson[dad[p]] = r;
-+ dad[p] = NIL; /* remove p */
-+}
-+
-+static void DeleteNode(unsigned long p) /* deletes node p from tree */
-+{
-+ unsigned long q;
-+
-+ if (dad[p] == NIL) return; /* not in tree */
-+ if (rson[p] == NIL) q = lson[p];
-+ else if (lson[p] == NIL) q = rson[p];
-+ else {
-+ q = lson[p];
-+ if (rson[q] != NIL) {
-+ do { q = rson[q]; } while (rson[q] != NIL);
-+ rson[dad[q]] = lson[q]; dad[lson[q]] = dad[q];
-+ lson[q] = lson[p]; dad[lson[p]] = q;
-+ }
-+ rson[q] = rson[p]; dad[rson[p]] = q;
-+ }
-+ dad[q] = dad[p];
-+ if (rson[dad[p]] == p) rson[dad[p]] = q; else lson[dad[p]] = q;
-+ dad[p] = NIL;
-+}
-+
-+/* Huffman coding */
-+
-+#define N_CHAR (256 - THRESHOLD + F)
-+ /* kinds of characters (character code = 0..N_CHAR-1) */
-+#define T (N_CHAR * 2 - 1) /* size of table */
-+#define R (T - 1) /* position of root */
-+#define MAX_FREQ 0x8000 /* updates tree when the */
-+ /* root frequency comes to this value. */
-+
-+typedef unsigned long uchar; // much-much faster
-+
-+/* table for encoding and decoding the upper 6 bits of position */
-+
-+/* for encoding */
-+static uchar p_len[64] = {
-+ 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05,
-+ 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06,
-+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
-+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
-+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
-+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
-+};
-+
-+static uchar p_code[64] = {
-+ 0x00, 0x20, 0x30, 0x40, 0x50, 0x58, 0x60, 0x68,
-+ 0x70, 0x78, 0x80, 0x88, 0x90, 0x94, 0x98, 0x9C,
-+ 0xA0, 0xA4, 0xA8, 0xAC, 0xB0, 0xB4, 0xB8, 0xBC,
-+ 0xC0, 0xC2, 0xC4, 0xC6, 0xC8, 0xCA, 0xCC, 0xCE,
-+ 0xD0, 0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC, 0xDE,
-+ 0xE0, 0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE,
-+ 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
-+ 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
-+};
-+
-+/* for decoding */
-+static uchar d_code[256] = {
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
-+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
-+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
-+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
-+ 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
-+ 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
-+ 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D,
-+ 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F,
-+ 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11,
-+ 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13,
-+ 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15,
-+ 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17,
-+ 0x18, 0x18, 0x19, 0x19, 0x1A, 0x1A, 0x1B, 0x1B,
-+ 0x1C, 0x1C, 0x1D, 0x1D, 0x1E, 0x1E, 0x1F, 0x1F,
-+ 0x20, 0x20, 0x21, 0x21, 0x22, 0x22, 0x23, 0x23,
-+ 0x24, 0x24, 0x25, 0x25, 0x26, 0x26, 0x27, 0x27,
-+ 0x28, 0x28, 0x29, 0x29, 0x2A, 0x2A, 0x2B, 0x2B,
-+ 0x2C, 0x2C, 0x2D, 0x2D, 0x2E, 0x2E, 0x2F, 0x2F,
-+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-+ 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
-+};
-+
-+static uchar d_len[256] = {
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
-+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
-+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
-+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
-+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
-+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
-+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
-+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
-+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
-+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
-+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
-+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
-+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
-+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
-+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
-+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
-+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
-+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
-+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
-+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-+};
-+
-+static unsigned long freq[T + 1]; /* frequency table */
-+
-+static unsigned long prnt[T + N_CHAR]; /* pointers to parent nodes, except for the */
-+ /* elements [T..T + N_CHAR - 1] which are used to get */
-+ /* the positions of leaves corresponding to the codes. */
-+
-+static unsigned long son[T]; /* pointers to child nodes (son[], son[] + 1) */
-+
-+/* initialization of tree */
-+
-+static void StartHuff(void)
-+{
-+ unsigned long i, j;
-+
-+ for (i = 0; i < N_CHAR; i++) {
-+ freq[i] = 1;
-+ son[i] = i + T;
-+ prnt[i + T] = i;
-+ }
-+ i = 0; j = N_CHAR;
-+ while (j <= R) {
-+ freq[j] = freq[i] + freq[i + 1];
-+ son[j] = i;
-+ prnt[i] = prnt[i + 1] = j;
-+ i += 2; j++;
-+ }
-+ freq[T] = 0xffff;
-+ prnt[R] = 0;
-+}
-+
-+/* reconstruction of tree */
-+
-+static void reconst(void)
-+{
-+ unsigned long f, l, i, j, k;
-+
-+ /* collect leaf nodes in the first half of the table */
-+ /* and replace the freq by (freq + 1) / 2. */
-+ j = 0;
-+ for (i = 0; i < T; i++) {
-+ if (son[i] >= T) {
-+ freq[j] = (freq[i] + 1) / 2;
-+ son[j] = son[i];
-+ j++;
-+ }
-+ }
-+ /* begin constructing tree by connecting sons */
-+ for (i = 0, j = N_CHAR; j < T; i += 2, j++) {
-+ k = i + 1;
-+ f = freq[j] = freq[i] + freq[k];
-+ for (k = j - 1; f < freq[k]; k--);
-+ k++;
-+ l = (j - k) * 2;
-+ memmove(&freq[k + 1], &freq[k], l*sizeof(unsigned long));
-+ freq[k] = f;
-+ memmove(&son[k + 1], &son[k], l*sizeof(unsigned long));
-+ son[k] = i;
-+ }
-+ /* connect prnt */
-+ for (i = 0; i < T; i++) {
-+ if ((k = son[i]) >= T) {
-+ prnt[k] = i;
-+ } else {
-+ prnt[k] = prnt[k + 1] = i;
-+ }
-+ }
-+}
-+
-+/* increment frequency of given code by one, and update tree */
-+
-+static void update(unsigned long c)
-+{
-+ unsigned long i, j, k, l;
-+
-+ if (freq[R] == MAX_FREQ) {
-+ reconst();
-+ }
-+ c = prnt[c + T];
-+ do {
-+ k = ++freq[c];
-+
-+ /* if the order is disturbed, exchange nodes */
-+ if (k > freq[l = c + 1]) {
-+ while (k > freq[++l]);
-+ l--;
-+ freq[c] = freq[l];
-+ freq[l] = k;
-+
-+ i = son[c];
-+ prnt[i] = l;
-+ if (i < T) prnt[i + 1] = l;
-+
-+ j = son[l];
-+ son[l] = i;
-+
-+ prnt[j] = c;
-+ if (j < T) prnt[j + 1] = c;
-+ son[c] = j;
-+
-+ c = l;
-+ }
-+ } while (c = prnt[c]); /* repeat up to root */
-+}
-+
-+/* modified for block compression */
-+/* on return, srclen will contain the number of successfully compressed bytes
-+ and dstlen will contain completed compressed bytes */
-+
-+static int Encode(unsigned char *srcbuf, unsigned char *dstbuf, unsigned long *srclen,
-+ unsigned long *dstlen)
-+{
-+ unsigned long c, i, j, k, len, r, s, last_match_length, code_buf_ptr;
-+ unsigned char code_buf[17], mask;
-+ unsigned char *ip, *op;
-+ unsigned long written = 0;
-+ unsigned long read = 0;
-+ unsigned short putbuf = 0;
-+ uchar putlen = 0;
-+ unsigned char *srcend = srcbuf + *srclen;
-+ unsigned char *dstend = dstbuf + *dstlen;
-+ ip = srcbuf;
-+ op = dstbuf;
-+ StartHuff();
-+ InitTree(); /* initialize trees */
-+ code_buf[0] = 0; /* code_buf[1..16] saves eight units of code, and
-+ code_buf[0] works as eight flags, "1" representing that the unit
-+ is an unencoded letter (1 byte), "0" a position-and-length pair
-+ (2 bytes). Thus, eight units require at most 16 bytes of code. */
-+ code_buf_ptr = mask = 1;
-+ s = 0; r = N - F;
-+ for (i = s; i < r; i++) text_buf[i] = ' '; /* Clear the buffer with
-+ any character that will appear often. */
-+ for (len = 0; (len < F) && (ip < srcend); len++)
-+ text_buf[r + len] = *(ip++); /* Read F bytes into the last F bytes of
-+ the buffer */
-+ read = len;
-+ for (i = 1; i <= F; i++) InsertNode(r - i); /* Insert the F strings,
-+ each of which begins with one or more 'space' characters. Note
-+ the order in which these strings are inserted. This way,
-+ degenerate trees will be less likely to occur. */
-+ InsertNode(r); /* Finally, insert the whole string just read. The
-+ global variables match_length and match_position are set. */
-+ do {
-+ if (match_length > len) match_length = len; /* match_length
-+ may be spuriously long near the end of text. */
-+ if (match_length <= THRESHOLD) {
-+ match_length = 1; /* Not long enough match. Send one byte. */
-+ c = text_buf[r];
-+ i = 0; j = 0; k = prnt[c + T];
-+ do {
-+ i >>= 1;
-+ /* if node's address is odd-numbered, choose bigger brother node */
-+ if (k & 1) i |= 0x8000;
-+ j++;
-+ } while ((k = prnt[k]) != R);
-+ putbuf |= i >> putlen;
-+ if ((putlen += j) >= 8) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = putbuf >> 8;
-+ if ((putlen -= 8) >= 8) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = putbuf;
-+ written += 2;
-+ putlen -= 8;
-+ putbuf = i << (j - putlen); /**warm**/
-+ } else {
-+ putbuf <<= 8;
-+ written++;
-+ }
-+ *srclen = read;
-+ }
-+ update(c);
-+ } else {
-+ c = 255 - THRESHOLD + match_length;
-+ i = 0; j = 0; k = prnt[c + T];
-+ do {
-+ i >>= 1;
-+ /* if node's address is odd-numbered, choose bigger brother node */
-+ if (k & 1) i |= 0x8000;
-+ j++;
-+ } while ((k = prnt[k]) != R);
-+ putbuf |= i >> putlen;
-+ if ((putlen += j) >= 8) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = putbuf >> 8;
-+ if ((putlen -= 8) >= 8) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = putbuf;
-+ written += 2;
-+ putlen -= 8;
-+ putbuf = i << (j - putlen); /**warm**/
-+ } else {
-+ putbuf <<= 8;
-+ written++;
-+ }
-+ *srclen = read;
-+ }
-+ update(c);
-+ j = p_len[match_position >> 6];
-+ i = p_code[match_position >> 6] << 8;
-+ putbuf |= i >> putlen;
-+ if ((putlen += j) >= 8) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = putbuf >> 8;
-+ if ((putlen -= 8) >= 8) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = putbuf;
-+ written += 2;
-+ putlen -= 8;
-+ putbuf = i << (j - putlen); /**hot**/
-+ } else {
-+ putbuf <<= 8;
-+ written++;
-+ }
-+ *srclen = read;
-+ }
-+ j = 6;
-+ i = (match_position & 0x3f) << 10;
-+ putbuf |= i >> putlen;
-+ if ((putlen += j) >= 8) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = putbuf >> 8;
-+ if ((putlen -= 8) >= 8) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = putbuf;
-+ written += 2;
-+ putlen -= 8;
-+ putbuf = i << (j - putlen); /**hot**/
-+ } else {
-+ putbuf <<= 8;
-+ written++;
-+ }
-+ *srclen = read;
-+ }
-+ }
-+ last_match_length = match_length;
-+ for (i = 0; (i < last_match_length) && (ip < srcend); i++) {
-+ c = *(ip++);
-+ DeleteNode(s);
-+ text_buf[s] = c;
-+ if (s < F - 1)
-+ text_buf[s + N] = c;
-+ s = (s + 1) & (N - 1);
-+ r = (r + 1) & (N - 1);
-+ InsertNode(r);
-+ }
-+ read += i;
-+ while (i++ < last_match_length) {
-+ DeleteNode(s);
-+ s = (s + 1) & (N - 1);
-+ r = (r + 1) & (N - 1);
-+ if (--len) InsertNode(r);
-+ }
-+ } while (len > 0);
-+ if (putlen) {
-+ if (op >= dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ *(op++) = putbuf >> 8;
-+ written++;
-+ *srclen = read;
-+ }
-+ *dstlen = written;
-+ return 0;
-+}
-+
-+static int Decode(unsigned char *srcbuf, unsigned char *dstbuf, unsigned long srclen,
-+ unsigned long dstlen) /* Just the reverse of Encode(). */
-+{
-+ unsigned long i, r, j, k, c;
-+ unsigned char *ip, *op;
-+ unsigned char *srcend = srcbuf + srclen;
-+ unsigned char *dstend = dstbuf + dstlen;
-+ unsigned short getbuf = 0;
-+ uchar getlen = 0;
-+ ip = srcbuf;
-+ op = dstbuf;
-+ StartHuff();
-+ for (i = 0; i < N - F; i++) text_buf[i] = ' ';
-+ r = N - F;
-+ while (op < dstend) {
-+ c = son[R];
-+ /* travel from root to leaf, */
-+ /* choosing the smaller child node (son[]) if the read bit is 0, */
-+ /* the bigger (son[]+1} if 1 */
-+ while (c < T) {
-+ while (getlen <= 8) {
-+ unsigned short t;
-+ t = (ip >= srcend) ? 0 : *(ip++);
-+ getbuf |= t << (8 - getlen);
-+ getlen += 8;
-+ }
-+ c += ((signed short)getbuf < 0);
-+ getbuf <<= 1;
-+ getlen--;
-+ c = son[c];
-+ }
-+ c -= T;
-+ update(c);
-+ if (c < 256) {
-+ if (op >= dstend) return -1;
-+ *(op++) = c;
-+ text_buf[r++] = c;
-+ r &= (N - 1);
-+ } else {
-+ j = c - 255 + THRESHOLD;
-+ while (getlen <= 8) {
-+ unsigned short t;
-+ t = (ip >= srcend) ? 0 : *(ip++);
-+ getbuf |= t << (8 - getlen);
-+ getlen += 8;
-+ }
-+ i = getbuf >> 8;
-+ getbuf <<= 8;
-+ getlen -= 8;
-+ c = d_code[i] << 6;
-+ k = d_len[i];
-+ /* read lower 6 bits verbatim */
-+ k -= 2;
-+ while (k--) {
-+ while (getlen <= 8) {
-+ unsigned short t;
-+ t = (ip >= srcend) ? 0 : *(ip++);
-+ getbuf |= t << (8 - getlen);
-+ getlen += 8;
-+ }
-+ i = (i << 1) + ((signed short)getbuf < 0);
-+ getbuf <<= 1;
-+ getlen--;
-+ }
-+ i = c | (i & 0x3F);
-+ i = r - i - 1;
-+ i &= (N - 1);
-+ for (k = 0; k < j; k++) {
-+ c = text_buf[(i + k) & (N - 1)];
-+ if (op >= dstend) return -1;
-+ *(op++) = c;
-+ text_buf[r++] = c;
-+ r &= (N - 1);
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+/* interface to jffs2 bbc follows */
-+
-+#include "jffs2_bbc_framework.h"
-+
-+
-+#define JFFS2_BBC_LZHD_BLOCK_SIGN {0x3a, 0x98, 0xf7, 0xda}
-+
-+static int
-+jffs2_bbc_lzhd_compressor_init (void);
-+
-+static void
-+jffs2_bbc_lzhd_compressor_deinit (void);
-+
-+static int
-+jffs2_bbc_lzhd_compress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long *sourcelen,
-+ unsigned long *dstlen);
-+
-+static int
-+jffs2_bbc_lzhd_estimate (void *model, unsigned char *input,
-+ unsigned long sourcelen, unsigned long *dstlen,
-+ unsigned long *readtime, unsigned long *writetime);
-+
-+static int
-+jffs2_bbc_lzhd_decompress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long sourcelen,
-+ unsigned long dstlen);
-+
-+static char *
-+jffs2_bbc_lzhd_proc_info (void);
-+
-+static int
-+jffs2_bbc_lzhd_proc_command (char *command);
-+
-+struct jffs2_bbc_compressor_type jffs2_bbc_lzhd = {
-+ "lzhd",
-+ 0,
-+ JFFS2_BBC_LZHD_BLOCK_SIGN,
-+ jffs2_bbc_lzhd_compressor_init,
-+ NULL,
-+ NULL,
-+ jffs2_bbc_lzhd_compressor_deinit,
-+ jffs2_bbc_lzhd_compress,
-+ jffs2_bbc_lzhd_estimate,
-+ jffs2_bbc_lzhd_decompress,
-+ jffs2_bbc_lzhd_proc_info,
-+ jffs2_bbc_lzhd_proc_command
-+};
-+
-+static int
-+jffs2_bbc_lzhd_compressor_init (void)
-+{
-+ return 0;
-+}
-+
-+static void
-+jffs2_bbc_lzhd_compressor_deinit (void)
-+{
-+}
-+
-+static int
-+jffs2_bbc_lzhd_compress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long *sourcelen,
-+ unsigned long *dstlen)
-+{
-+ int retval;
-+ unsigned long dst = *dstlen;
-+ *(output++) = jffs2_bbc_lzhd.block_sign[0];
-+ *(output++) = jffs2_bbc_lzhd.block_sign[1];
-+ dst -= 2;
-+ retval = Encode(input, output, sourcelen, &dst);
-+ dst += 2;
-+ *dstlen = dst;
-+ return retval;
-+}
-+
-+static int
-+jffs2_bbc_lzhd_estimate (void *model, unsigned char *input,
-+ unsigned long sourcelen, unsigned long *dstlen,
-+ unsigned long *readtime, unsigned long *writetime)
-+{
-+ *dstlen = sourcelen * 55 / 100;
-+ *readtime = JFFS2_BBC_ZLIB_READ_TIME * 8;
-+ *writetime = JFFS2_BBC_ZLIB_WRITE_TIME * 65 / 10;
-+ return 0;
-+}
-+
-+static int
-+jffs2_bbc_lzhd_decompress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long sourcelen,
-+ unsigned long dstlen)
-+{
-+ if ( ( *(input++) != (unsigned char)jffs2_bbc_lzhd.block_sign[0] ) ||
-+ ( *(input++) != (unsigned char)jffs2_bbc_lzhd.block_sign[1] )
-+ ) {
-+ return -1;
-+ } else {
-+ return Decode(input, output, sourcelen - 2, dstlen);
-+ }
-+}
-+
-+static char *
-+jffs2_bbc_lzhd_proc_info (void)
-+{
-+ return "Lempel-Ziv-(dynamic) Huffman compression module";
-+}
-+
-+static int
-+jffs2_bbc_lzhd_proc_command (char *command)
-+{
-+ return 0;
-+}
-+
-+struct jffs2_bbc_compressor_type *
-+jffs2_bbc_lzhd_init (int mode)
-+{
-+ if (jffs2_bbc_register_compressor (&jffs2_bbc_lzhd) == 0)
-+ {
-+ return &jffs2_bbc_lzhd;
-+ }
-+ else
-+ {
-+ return NULL;
-+ }
-+}
-+
-+void
-+jffs2_bbc_lzhd_deinit (void)
-+{
-+ jffs2_bbc_unregister_compressor (&jffs2_bbc_lzhd);
-+}
-diff -Nur linux-mips-cvs/fs/jffs2/jffs2_bbc_lzo_comp.c linux-mips/fs/jffs2/jffs2_bbc_lzo_comp.c
---- linux-mips-cvs/fs/jffs2/jffs2_bbc_lzo_comp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/jffs2_bbc_lzo_comp.c 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,2435 @@
-+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
-+
-+/*
-+ jffs2_bbc_lzo_comp.c -- LZO1X-1 (and -999) compression module for jffs2
-+ Copyright (C) 2004 Patrik Kluba
-+ Based on the original LZO sources
-+ $Header: /openwrt/openwrt/package/linux/kernel-patches/301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*/
-+
-+/*
-+ Original copyright notice follows:
-+
-+ lzo1x_9x.c -- implementation of the LZO1X-999 compression algorithm
-+ lzo_ptr.h -- low-level pointer constructs
-+ lzo_swd.ch -- sliding window dictionary
-+ lzoconf.h -- configuration for the LZO real-time data compression library
-+ lzo_mchw.ch -- matching functions using a window
-+ minilzo.c -- mini subset of the LZO real-time data compression library
-+ config1x.h -- configuration for the LZO1X algorithm
-+ lzo1x.h -- public interface of the LZO1X compression algorithm
-+
-+ These files are part of the LZO real-time data compression library.
-+
-+ Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
-+ All Rights Reserved.
-+
-+ The LZO library 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.
-+
-+ The LZO 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 General Public License for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with the LZO library; see the file COPYING.
-+ If not, write to the Free Software Foundation, Inc.,
-+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+
-+ Markus F.X.J. Oberhumer
-+ <markus@oberhumer.com>
-+*/
-+
-+/*
-+
-+ 2004-02-16 pajko <pajko(AT)halom(DOT)u-szeged(DOT)hu>
-+ Initial release
-+ -removed all 16 bit code
-+ -all sensitive data will be on 4 byte boundary
-+ -removed check parts for library use
-+ -removed all but LZO1X-* compression
-+
-+*/
-+
-+#ifndef __KERNEL__
-+ #include <sys/types.h>
-+ #include <stddef.h>
-+ #include <string.h>
-+ #include <limits.h>
-+#else
-+ #include <linux/kernel.h>
-+ #include <linux/types.h>
-+ #include <linux/stddef.h>
-+ #include <linux/string.h>
-+ #define USHRT_MAX 65535
-+ /* #define UINT_MAX 4294967295U */
-+#endif
-+
-+/* data type definitions */
-+#define U32 unsigned long
-+#define S32 signed long
-+#define I32 long
-+#define U16 unsigned short
-+#define S16 signed short
-+#define I16 short
-+#define U8 unsigned char
-+#define S8 signed char
-+#define I8 char
-+
-+/*************************************/
-+
-+/* lzo_swd.ch */
-+
-+#define SWD_N N
-+#define SWD_F F
-+#define SWD_THRESHOLD THRESHOLD
-+
-+/* shortest unsigned int that 2 * SWD_F + SWD_N (currently 53248) fits in */
-+typedef unsigned short swd_uint;
-+/* upper limit of that data type */
-+#define SWD_UINT_MAX USHRT_MAX
-+
-+/* minilzo.c */
-+
-+#define LZO_VERSION_DATE "Jul 12 2002"
-+#define LZO_VERSION_STRING "1.08"
-+#define LZO_VERSION 0x1080
-+
-+/* lzo_ptr.h */
-+
-+/* Integral types that have *exactly* the same number of bits as a lzo_voidp */
-+typedef unsigned long lzo_ptr_t;
-+typedef long lzo_sptr_t;
-+
-+
-+/*************************************/
-+
-+/* config1x.h */
-+
-+#define M1_MAX_OFFSET 0x0400
-+#define M2_MAX_OFFSET 0x0800
-+#define M3_MAX_OFFSET 0x4000
-+#define M4_MAX_OFFSET 0xbfff
-+
-+#define MX_MAX_OFFSET (M1_MAX_OFFSET + M2_MAX_OFFSET)
-+
-+#define M1_MIN_LEN 2
-+#define M1_MAX_LEN 2
-+#define M2_MIN_LEN 3
-+#define M2_MAX_LEN 8
-+#define M3_MIN_LEN 3
-+#define M3_MAX_LEN 33
-+#define M4_MIN_LEN 3
-+#define M4_MAX_LEN 9
-+
-+#define M1_MARKER 0
-+#define M2_MARKER 64
-+#define M3_MARKER 32
-+#define M4_MARKER 16
-+
-+#define MIN_LOOKAHEAD (M2_MAX_LEN + 1)
-+
-+/* minilzo.c */
-+
-+#define LZO_BYTE(x) ((unsigned char) ((x) & 0xff))
-+
-+#define LZO_MAX(a,b) ((a) >= (b) ? (a) : (b))
-+#define LZO_MIN(a,b) ((a) <= (b) ? (a) : (b))
-+#define LZO_MAX3(a,b,c) ((a) >= (b) ? LZO_MAX(a,c) : LZO_MAX(b,c))
-+#define LZO_MIN3(a,b,c) ((a) <= (b) ? LZO_MIN(a,c) : LZO_MIN(b,c))
-+
-+#define lzo_sizeof(type) ((lzo_uint) (sizeof(type)))
-+
-+#define LZO_HIGH(array) ((lzo_uint) (sizeof(array)/sizeof(*(array))))
-+
-+#define LZO_SIZE(bits) (1u << (bits))
-+#define LZO_MASK(bits) (LZO_SIZE(bits) - 1)
-+
-+#define LZO_LSIZE(bits) (1ul << (bits))
-+#define LZO_LMASK(bits) (LZO_LSIZE(bits) - 1)
-+
-+#define LZO_USIZE(bits) ((lzo_uint) 1 << (bits))
-+#define LZO_UMASK(bits) (LZO_USIZE(bits) - 1)
-+
-+#define LZO_STYPE_MAX(b) (((1l << (8*(b)-2)) - 1l) + (1l << (8*(b)-2)))
-+#define LZO_UTYPE_MAX(b) (((1ul << (8*(b)-1)) - 1ul) + (1ul << (8*(b)-1)))
-+
-+#define _LZO_STRINGIZE(x) #x
-+#define _LZO_MEXPAND(x) _LZO_STRINGIZE(x)
-+
-+#define _LZO_CONCAT2(a,b) a ## b
-+#define _LZO_CONCAT3(a,b,c) a ## b ## c
-+#define _LZO_CONCAT4(a,b,c,d) a ## b ## c ## d
-+#define _LZO_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e
-+
-+#define _LZO_ECONCAT2(a,b) _LZO_CONCAT2(a,b)
-+#define _LZO_ECONCAT3(a,b,c) _LZO_CONCAT3(a,b,c)
-+#define _LZO_ECONCAT4(a,b,c,d) _LZO_CONCAT4(a,b,c,d)
-+#define _LZO_ECONCAT5(a,b,c,d,e) _LZO_CONCAT5(a,b,c,d,e)
-+
-+#define lzo_dict_t const lzo_bytep
-+#define lzo_dict_p lzo_dict_t *
-+#define lzo_moff_t lzo_uint
-+
-+#define MEMCPY8_DS(dest,src,len) \
-+ memcpy(dest,src,len); \
-+ dest += len; \
-+ src += len
-+
-+#define MEMCPY_DS(dest,src,len) \
-+ do *dest++ = *src++; \
-+ while (--len > 0)
-+
-+#define MEMMOVE_DS(dest,src,len) \
-+ do *dest++ = *src++; \
-+ while (--len > 0)
-+
-+#define BZERO8_PTR(s,l,n) memset((s),0,(lzo_uint)(l)*(n))
-+
-+#define LZO_BASE 65521u
-+#define LZO_NMAX 5552
-+
-+#define LZO_DO1(buf,i) {s1 += buf[i]; s2 += s1;}
-+#define LZO_DO2(buf,i) LZO_DO1(buf,i); LZO_DO1(buf,i+1);
-+#define LZO_DO4(buf,i) LZO_DO2(buf,i); LZO_DO2(buf,i+2);
-+#define LZO_DO8(buf,i) LZO_DO4(buf,i); LZO_DO4(buf,i+4);
-+#define LZO_DO16(buf,i) LZO_DO8(buf,i); LZO_DO8(buf,i+8);
-+
-+#define IS_SIGNED(type) (((type) (-1)) < ((type) 0))
-+#define IS_UNSIGNED(type) (((type) (-1)) > ((type) 0))
-+
-+#define IS_POWER_OF_2(x) (((x) & ((x) - 1)) == 0)
-+
-+#define D_BITS 14
-+#define D_INDEX1(d,p) d = DM((0x21*DX3(p,5,5,6)) >> 5)
-+#define D_INDEX2(d,p) d = (d & (D_MASK & 0x7ff)) ^ (D_HIGH | 0x1f)
-+
-+#define LZO_HASH LZO_HASH_LZO_INCREMENTAL_B
-+
-+#define DL_MIN_LEN M2_MIN_LEN
-+
-+#define D_SIZE LZO_SIZE(D_BITS)
-+#define D_MASK LZO_MASK(D_BITS)
-+
-+#define D_HIGH ((D_MASK >> 1) + 1)
-+
-+#define DINDEX1 D_INDEX1
-+#define DINDEX2 D_INDEX2
-+
-+#define DX2(p,s1,s2) \
-+ (((((lzo_uint32)((p)[2]) << (s2)) ^ (p)[1]) << (s1)) ^ (p)[0])
-+
-+#define DX3(p,s1,s2,s3) ((DX2((p)+1,s2,s3) << (s1)) ^ (p)[0])
-+#define DMS(v,s) ((lzo_uint) (((v) & (D_MASK >> (s))) << (s)))
-+#define DM(v) DMS(v,0)
-+
-+#define DENTRY(p,in) (p)
-+#define GINDEX(m_pos,m_off,dict,dindex,in) m_pos = dict[dindex]
-+
-+#define LZO_CHECK_MPOS_DET(m_pos,m_off,in,ip,max_offset) \
-+ (m_pos == NULL || (m_off = (lzo_moff_t) (ip - m_pos)) > max_offset)
-+
-+#define LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,max_offset) \
-+ (BOUNDS_CHECKING_OFF_IN_EXPR( \
-+ (PTR_LT(m_pos,in) || \
-+ (m_off = (lzo_moff_t) PTR_DIFF(ip,m_pos)) <= 0 || \
-+ m_off > max_offset) ))
-+
-+#define BOUNDS_CHECKING_OFF_IN_EXPR(expr) (expr)
-+
-+#define DD_BITS 0
-+#define DD_SIZE LZO_SIZE(DD_BITS)
-+#define DD_MASK LZO_MASK(DD_BITS)
-+
-+#define DL_BITS (D_BITS - DD_BITS)
-+#define DL_SIZE LZO_SIZE(DL_BITS)
-+#define DL_MASK LZO_MASK(DL_BITS)
-+
-+#define UPDATE_D(dict,drun,dv,p,in) dict[ DINDEX(dv,p) ] = DENTRY(p,in)
-+#define UPDATE_I(dict,drun,index,p,in) dict[index] = DENTRY(p,in)
-+#define UPDATE_P(ptr,drun,p,in) (ptr)[0] = DENTRY(p,in)
-+
-+#define __COPY4(dst,src) * (lzo_uint32p)(dst) = * (const lzo_uint32p)(src)
-+#define COPY4(dst,src) __COPY4((lzo_ptr_t)(dst),(lzo_ptr_t)(src))
-+
-+#define TEST_IP (ip < ip_end)
-+#define TEST_OP (op <= op_end)
-+
-+#define NEED_IP(x) \
-+ if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x)) goto input_overrun
-+#define NEED_OP(x) \
-+ if ((lzo_uint)(op_end - op) < (lzo_uint)(x)) goto output_overrun
-+#define TEST_LOOKBEHIND(m_pos,out) if (m_pos < out) goto lookbehind_overrun
-+
-+/* lzo1x_9x.c */
-+
-+#define LZO_UINT_MAX UINT_MAX
-+#define N M4_MAX_OFFSET
-+#define THRESHOLD 1
-+#define F 2048
-+
-+#define SWD_BEST_OFF (LZO_MAX3( M2_MAX_LEN, M3_MAX_LEN, M4_MAX_LEN ) + 1)
-+
-+/* ../include/lzoconf.h */
-+
-+typedef U32 lzo_uint32;
-+typedef I32 lzo_int32;
-+typedef U32 lzo_uint;
-+typedef I32 lzo_int;
-+typedef int lzo_bool;
-+
-+#define lzo_byte U8
-+#define lzo_bytep U8 *
-+#define lzo_charp char *
-+#define lzo_voidp void *
-+#define lzo_shortp short *
-+#define lzo_ushortp unsigned short *
-+#define lzo_uint32p lzo_uint32 *
-+#define lzo_int32p lzo_int32 *
-+#define lzo_uintp lzo_uint *
-+#define lzo_intp lzo_int *
-+#define lzo_voidpp lzo_voidp *
-+#define lzo_bytepp lzo_bytep *
-+#define lzo_sizeof_dict_t sizeof(lzo_bytep)
-+
-+#define LZO_E_OK 0
-+#define LZO_E_ERROR (-1)
-+#define LZO_E_OUT_OF_MEMORY (-2) /* not used right now */
-+#define LZO_E_NOT_COMPRESSIBLE (-3) /* not used right now */
-+#define LZO_E_INPUT_OVERRUN (-4)
-+#define LZO_E_OUTPUT_OVERRUN (-5)
-+#define LZO_E_LOOKBEHIND_OVERRUN (-6)
-+#define LZO_E_EOF_NOT_FOUND (-7)
-+#define LZO_E_INPUT_NOT_CONSUMED (-8)
-+
-+#define LZO_PTR_ALIGN_UP(_ptr,_size) \
-+ ((_ptr) + (lzo_uint) __lzo_align_gap((const lzo_voidp)(_ptr),(lzo_uint)(_size)))
-+#define LZO_ALIGN(_ptr,_size) LZO_PTR_ALIGN_UP(_ptr,_size)
-+
-+typedef int
-+ (*lzo_compress_t) (const lzo_byte * src, lzo_uint src_len,
-+ lzo_byte * dst, lzo_uintp dst_len,
-+ lzo_voidp wrkmem);
-+
-+typedef int
-+ (*lzo_decompress_t) (const lzo_byte * src, lzo_uint src_len,
-+ lzo_byte * dst, lzo_uintp dst_len,
-+ lzo_voidp wrkmem);
-+
-+typedef int
-+ (*lzo_optimize_t) (lzo_byte * src, lzo_uint src_len,
-+ lzo_byte * dst, lzo_uintp dst_len,
-+ lzo_voidp wrkmem);
-+
-+typedef int
-+ (*lzo_compress_dict_t) (const lzo_byte * src, lzo_uint src_len,
-+ lzo_byte * dst, lzo_uintp dst_len,
-+ lzo_voidp wrkmem,
-+ const lzo_byte * dict, lzo_uint dict_len);
-+
-+typedef int
-+ (*lzo_decompress_dict_t) (const lzo_byte * src, lzo_uint src_len,
-+ lzo_byte * dst, lzo_uintp dst_len,
-+ lzo_voidp wrkmem,
-+ const lzo_byte * dict, lzo_uint dict_len);
-+
-+typedef int
-+ (*lzo_compress_asm_t) (const lzo_byte * src, lzo_uint src_len,
-+ lzo_byte * dst, lzo_uintp dst_len,
-+ lzo_voidp wrkmem);
-+
-+typedef int
-+ (*lzo_decompress_asm_t) (const lzo_byte * src, lzo_uint src_len,
-+ lzo_byte * dst, lzo_uintp dst_len,
-+ lzo_voidp wrkmem);
-+
-+typedef void (*lzo_progress_callback_t) (lzo_uint, lzo_uint);
-+
-+typedef union
-+{
-+ lzo_bytep p;
-+ lzo_uint u;
-+} __lzo_pu_u;
-+typedef union
-+{
-+ lzo_bytep p;
-+ lzo_uint32 u32;
-+} __lzo_pu32_u;
-+typedef union
-+{
-+ void *vp;
-+ lzo_bytep bp;
-+ lzo_uint32 u32;
-+ long l;
-+} lzo_align_t;
-+
-+/* lzo1x.h */
-+
-+#define LZO1X_1_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t))
-+#define LZO1X_999_MEM_COMPRESS ((lzo_uint32) (14 * 16384L * sizeof(short)))
-+
-+/* lzo_ptr.h */
-+
-+#define PTR(a) ((lzo_ptr_t) (a))
-+#define PTR_LINEAR(a) PTR(a)
-+#define PTR_ALIGNED_4(a) ((PTR_LINEAR(a) & 3) == 0)
-+#define PTR_ALIGNED_8(a) ((PTR_LINEAR(a) & 7) == 0)
-+#define PTR_ALIGNED2_4(a,b) (((PTR_LINEAR(a) | PTR_LINEAR(b)) & 3) == 0)
-+#define PTR_ALIGNED2_8(a,b) (((PTR_LINEAR(a) | PTR_LINEAR(b)) & 7) == 0)
-+#define PTR_LT(a,b) (PTR(a) < PTR(b))
-+#define PTR_GE(a,b) (PTR(a) >= PTR(b))
-+#define PTR_DIFF(a,b) ((lzo_ptrdiff_t) (PTR(a) - PTR(b)))
-+#define pd(a,b) ((lzo_uint) ((a)-(b)))
-+
-+typedef ptrdiff_t lzo_ptrdiff_t;
-+
-+typedef union
-+{
-+ char a_char;
-+ unsigned char a_uchar;
-+ short a_short;
-+ unsigned short a_ushort;
-+ int a_int;
-+ unsigned int a_uint;
-+ long a_long;
-+ unsigned long a_ulong;
-+ lzo_int a_lzo_int;
-+ lzo_uint a_lzo_uint;
-+ lzo_int32 a_lzo_int32;
-+ lzo_uint32 a_lzo_uint32;
-+ ptrdiff_t a_ptrdiff_t;
-+ lzo_ptrdiff_t a_lzo_ptrdiff_t;
-+ lzo_ptr_t a_lzo_ptr_t;
-+ lzo_voidp a_lzo_voidp;
-+ void *a_void_p;
-+ lzo_bytep a_lzo_bytep;
-+ lzo_bytepp a_lzo_bytepp;
-+ lzo_uintp a_lzo_uintp;
-+ lzo_uint *a_lzo_uint_p;
-+ lzo_uint32p a_lzo_uint32p;
-+ lzo_uint32 *a_lzo_uint32_p;
-+ unsigned char *a_uchar_p;
-+ char *a_char_p;
-+}
-+lzo_full_align_t;
-+
-+/* lzo_mchw.ch */
-+
-+typedef struct
-+{
-+ int init;
-+
-+ lzo_uint look;
-+
-+ lzo_uint m_len;
-+ lzo_uint m_off;
-+
-+ lzo_uint last_m_len;
-+ lzo_uint last_m_off;
-+
-+ const lzo_byte *bp;
-+ const lzo_byte *ip;
-+ const lzo_byte *in;
-+ const lzo_byte *in_end;
-+ lzo_byte *out;
-+
-+ lzo_progress_callback_t cb;
-+
-+ lzo_uint textsize;
-+ lzo_uint codesize;
-+ lzo_uint printcount;
-+
-+ unsigned long lit_bytes;
-+ unsigned long match_bytes;
-+ unsigned long rep_bytes;
-+ unsigned long lazy;
-+
-+ lzo_uint r1_lit;
-+ lzo_uint r1_m_len;
-+
-+ unsigned long m1a_m, m1b_m, m2_m, m3_m, m4_m;
-+ unsigned long lit1_r, lit2_r, lit3_r;
-+}
-+lzo1x_999_t;
-+
-+#define getbyte(c) ((c).ip < (c).in_end ? *((c).ip)++ : (-1))
-+
-+/* lzo_swd.ch */
-+
-+#define SWD_UINT(x) ((swd_uint)(x))
-+#define SWD_HSIZE 16384
-+#define SWD_MAX_CHAIN 2048
-+#define HEAD3(b,p) \
-+ (((0x9f5f*(((((lzo_uint32)b[p]<<5)^b[p+1])<<5)^b[p+2]))>>5) & (SWD_HSIZE-1))
-+#define HEAD2(b,p) (b[p] ^ ((unsigned)b[p+1]<<8))
-+#define NIL2 SWD_UINT_MAX
-+
-+typedef struct
-+{
-+ lzo_uint n;
-+ lzo_uint f;
-+ lzo_uint threshold;
-+
-+ lzo_uint max_chain;
-+ lzo_uint nice_length;
-+ lzo_bool use_best_off;
-+ lzo_uint lazy_insert;
-+
-+ lzo_uint m_len;
-+ lzo_uint m_off;
-+ lzo_uint look;
-+ int b_char;
-+
-+ lzo_uint best_off[SWD_BEST_OFF];
-+
-+ lzo1x_999_t *c;
-+ lzo_uint m_pos;
-+
-+ lzo_uint best_pos[SWD_BEST_OFF];
-+
-+ const lzo_byte *dict;
-+ const lzo_byte *dict_end;
-+ lzo_uint dict_len;
-+
-+ lzo_uint ip;
-+ lzo_uint bp;
-+ lzo_uint rp;
-+ lzo_uint b_size;
-+
-+ unsigned char *b_wrap;
-+
-+ lzo_uint node_count;
-+ lzo_uint first_rp;
-+
-+ unsigned char b[SWD_N + SWD_F + SWD_F];
-+ swd_uint head3[SWD_HSIZE];
-+ swd_uint succ3[SWD_N + SWD_F];
-+ swd_uint best3[SWD_N + SWD_F];
-+ swd_uint llen3[SWD_HSIZE];
-+
-+ swd_uint head2[65536L];
-+}
-+lzo1x_999_swd_t;
-+
-+#define s_head3(s,key) s->head3[key]
-+#define swd_pos2off(s,pos) \
-+ (s->bp > (pos) ? s->bp - (pos) : s->b_size - ((pos) - s->bp))
-+
-+static __inline__ void
-+swd_getbyte (lzo1x_999_swd_t * s)
-+{
-+ int c;
-+
-+ if ((c = getbyte (*(s->c))) < 0)
-+ {
-+ if (s->look > 0)
-+ --s->look;
-+ }
-+ else
-+ {
-+ s->b[s->ip] = LZO_BYTE (c);
-+ if (s->ip < s->f)
-+ s->b_wrap[s->ip] = LZO_BYTE (c);
-+ }
-+ if (++s->ip == s->b_size)
-+ s->ip = 0;
-+ if (++s->bp == s->b_size)
-+ s->bp = 0;
-+ if (++s->rp == s->b_size)
-+ s->rp = 0;
-+}
-+
-+static void
-+swd_initdict (lzo1x_999_swd_t * s, const lzo_byte * dict, lzo_uint dict_len)
-+{
-+ s->dict = s->dict_end = NULL;
-+ s->dict_len = 0;
-+
-+ if (!dict || dict_len <= 0)
-+ return;
-+ if (dict_len > s->n)
-+ {
-+ dict += dict_len - s->n;
-+ dict_len = s->n;
-+ }
-+
-+ s->dict = dict;
-+ s->dict_len = dict_len;
-+ s->dict_end = dict + dict_len;
-+ memcpy (s->b, dict, dict_len);
-+ s->ip = dict_len;
-+}
-+
-+static void
-+swd_insertdict (lzo1x_999_swd_t * s, lzo_uint node, lzo_uint len)
-+{
-+ lzo_uint key;
-+
-+ s->node_count = s->n - len;
-+ s->first_rp = node;
-+
-+ while (len-- > 0)
-+ {
-+ key = HEAD3 (s->b, node);
-+ s->succ3[node] = s_head3 (s, key);
-+ s->head3[key] = SWD_UINT (node);
-+ s->best3[node] = SWD_UINT (s->f + 1);
-+ s->llen3[key]++;
-+
-+ key = HEAD2 (s->b, node);
-+ s->head2[key] = SWD_UINT (node);
-+
-+ node++;
-+ }
-+}
-+
-+static int
-+swd_init (lzo1x_999_swd_t * s, const lzo_byte * dict, lzo_uint dict_len)
-+{
-+
-+ s->n = SWD_N;
-+ s->f = SWD_F;
-+ s->threshold = SWD_THRESHOLD;
-+
-+
-+
-+ s->max_chain = SWD_MAX_CHAIN;
-+ s->nice_length = SWD_F;
-+ s->use_best_off = 0;
-+ s->lazy_insert = 0;
-+
-+ s->b_size = s->n + s->f;
-+ if (2 * s->f >= s->n || s->b_size + s->f >= NIL2)
-+ return LZO_E_ERROR;
-+ s->b_wrap = s->b + s->b_size;
-+ s->node_count = s->n;
-+
-+ memset (s->llen3, 0, sizeof (s->llen3[0]) * SWD_HSIZE);
-+ memset (s->head2, 0xff, sizeof (s->head2[0]) * 65536L);
-+
-+ s->ip = 0;
-+ swd_initdict (s, dict, dict_len);
-+ s->bp = s->ip;
-+ s->first_rp = s->ip;
-+
-+ s->look = (lzo_uint) (s->c->in_end - s->c->ip);
-+ if (s->look > 0)
-+ {
-+ if (s->look > s->f)
-+ s->look = s->f;
-+ memcpy (&s->b[s->ip], s->c->ip, s->look);
-+ s->c->ip += s->look;
-+ s->ip += s->look;
-+ }
-+
-+ if (s->ip == s->b_size)
-+ s->ip = 0;
-+
-+ if (s->look >= 2 && s->dict_len > 0)
-+ swd_insertdict (s, 0, s->dict_len);
-+
-+ s->rp = s->first_rp;
-+ if (s->rp >= s->node_count)
-+ s->rp -= s->node_count;
-+ else
-+ s->rp += s->b_size - s->node_count;
-+
-+ return LZO_E_OK;
-+}
-+
-+static __inline__ void
-+swd_remove_node (lzo1x_999_swd_t * s, lzo_uint node)
-+{
-+ if (s->node_count == 0)
-+ {
-+ lzo_uint key;
-+
-+ key = HEAD3 (s->b, node);
-+
-+ --s->llen3[key];
-+
-+ key = HEAD2 (s->b, node);
-+
-+ if ((lzo_uint) s->head2[key] == node)
-+ s->head2[key] = NIL2;
-+ }
-+ else
-+ --s->node_count;
-+}
-+
-+static void
-+swd_accept (lzo1x_999_swd_t * s, lzo_uint n)
-+{
-+
-+ while (n--)
-+ {
-+ lzo_uint key;
-+
-+ swd_remove_node (s, s->rp);
-+
-+ key = HEAD3 (s->b, s->bp);
-+ s->succ3[s->bp] = s_head3 (s, key);
-+ s->head3[key] = SWD_UINT (s->bp);
-+ s->best3[s->bp] = SWD_UINT (s->f + 1);
-+ s->llen3[key]++;
-+
-+ key = HEAD2 (s->b, s->bp);
-+ s->head2[key] = SWD_UINT (s->bp);;
-+
-+ swd_getbyte (s);
-+ }
-+}
-+
-+static void
-+swd_search (lzo1x_999_swd_t * s, lzo_uint node, lzo_uint cnt)
-+{
-+ const unsigned char *p1;
-+ const unsigned char *p2;
-+ const unsigned char *px;
-+
-+ lzo_uint m_len = s->m_len;
-+ const unsigned char *b = s->b;
-+ const unsigned char *bp = s->b + s->bp;
-+ const unsigned char *bx = s->b + s->bp + s->look;
-+ unsigned char scan_end1;
-+
-+ scan_end1 = bp[m_len - 1];
-+ for (; cnt-- > 0; node = s->succ3[node])
-+ {
-+ p1 = bp;
-+ p2 = b + node;
-+ px = bx;
-+
-+ if (p2[m_len - 1] == scan_end1 &&
-+ p2[m_len] == p1[m_len] &&
-+ p2[0] == p1[0] && p2[1] == p1[1])
-+ {
-+ lzo_uint i;
-+
-+ p1 += 2;
-+ p2 += 2;
-+ do
-+ {
-+ }
-+ while (++p1 < px && *p1 == *++p2);
-+
-+ i = p1 - bp;
-+
-+ if (i < SWD_BEST_OFF)
-+ {
-+ if (s->best_pos[i] == 0)
-+ s->best_pos[i] = node + 1;
-+ }
-+
-+ if (i > m_len)
-+ {
-+ s->m_len = m_len = i;
-+ s->m_pos = node;
-+ if (m_len == s->look)
-+ return;
-+ if (m_len >= s->nice_length)
-+ return;
-+ if (m_len > (lzo_uint) s->best3[node])
-+ return;
-+ scan_end1 = bp[m_len - 1];
-+ }
-+ }
-+ }
-+}
-+
-+static lzo_bool
-+swd_search2 (lzo1x_999_swd_t * s)
-+{
-+ lzo_uint key;
-+
-+ key = s->head2[HEAD2 (s->b, s->bp)];
-+ if (key == NIL2)
-+ return 0;
-+
-+ if (s->best_pos[2] == 0)
-+ s->best_pos[2] = key + 1;
-+
-+ if (s->m_len < 2)
-+ {
-+ s->m_len = 2;
-+ s->m_pos = key;
-+ }
-+ return 1;
-+}
-+
-+static void
-+swd_findbest (lzo1x_999_swd_t * s)
-+{
-+ lzo_uint key;
-+ lzo_uint cnt, node;
-+ lzo_uint len;
-+
-+ key = HEAD3 (s->b, s->bp);
-+ node = s->succ3[s->bp] = s_head3 (s, key);
-+ cnt = s->llen3[key]++;
-+
-+ if (cnt > s->max_chain && s->max_chain > 0)
-+ cnt = s->max_chain;
-+ s->head3[key] = SWD_UINT (s->bp);
-+
-+ s->b_char = s->b[s->bp];
-+ len = s->m_len;
-+ if (s->m_len >= s->look)
-+ {
-+ if (s->look == 0)
-+ s->b_char = -1;
-+ s->m_off = 0;
-+ s->best3[s->bp] = SWD_UINT (s->f + 1);
-+ }
-+ else
-+ {
-+
-+ if (swd_search2 (s))
-+
-+ if (s->look >= 3)
-+ swd_search (s, node, cnt);
-+ if (s->m_len > len)
-+ s->m_off = swd_pos2off (s, s->m_pos);
-+ s->best3[s->bp] = SWD_UINT (s->m_len);
-+
-+ if (s->use_best_off)
-+ {
-+ int i;
-+ for (i = 2; i < SWD_BEST_OFF; i++)
-+ if (s->best_pos[i] > 0)
-+ s->best_off[i] =
-+ swd_pos2off (s,
-+ s->best_pos[i] -
-+ 1);
-+ else
-+ s->best_off[i] = 0;
-+ }
-+
-+ }
-+
-+ swd_remove_node (s, s->rp);
-+
-+ key = HEAD2 (s->b, s->bp);
-+ s->head2[key] = SWD_UINT (s->bp);
-+
-+}
-+
-+/* lzo_mchw.ch */
-+
-+static int
-+init_match (lzo1x_999_t * c, lzo1x_999_swd_t * s,
-+ const lzo_byte * dict, lzo_uint dict_len, lzo_uint32 flags)
-+{
-+ int r;
-+
-+ c->init = 1;
-+
-+ s->c = c;
-+
-+ c->last_m_len = c->last_m_off = 0;
-+
-+ c->textsize = c->codesize = c->printcount = 0;
-+ c->lit_bytes = c->match_bytes = c->rep_bytes = 0;
-+ c->lazy = 0;
-+
-+ r = swd_init (s, dict, dict_len);
-+ if (r != 0)
-+ return r;
-+
-+ s->use_best_off = (flags & 1) ? 1 : 0;
-+ return r;
-+}
-+
-+static int
-+find_match (lzo1x_999_t * c, lzo1x_999_swd_t * s,
-+ lzo_uint this_len, lzo_uint skip)
-+{
-+ if (skip > 0)
-+ {
-+ swd_accept (s, this_len - skip);
-+ c->textsize += this_len - skip + 1;
-+ }
-+ else
-+ {
-+ c->textsize += this_len - skip;
-+ }
-+
-+ s->m_len = 1;
-+ s->m_len = 1;
-+
-+ if (s->use_best_off)
-+ memset (s->best_pos, 0, sizeof (s->best_pos));
-+
-+ swd_findbest (s);
-+ c->m_len = s->m_len;
-+ c->m_off = s->m_off;
-+
-+ swd_getbyte (s);
-+
-+ if (s->b_char < 0)
-+ {
-+ c->look = 0;
-+ c->m_len = 0;
-+ }
-+ else
-+ {
-+ c->look = s->look + 1;
-+ }
-+ c->bp = c->ip - c->look;
-+
-+ if (c->cb && c->textsize > c->printcount)
-+ {
-+ (*c->cb) (c->textsize, c->codesize);
-+ c->printcount += 1024;
-+ }
-+
-+ return LZO_E_OK;
-+}
-+
-+/* lzo1x_9x.c */
-+
-+static lzo_byte *
-+code_match (lzo1x_999_t * c, lzo_byte * op, lzo_uint m_len, lzo_uint m_off)
-+{
-+ lzo_uint x_len = m_len;
-+ lzo_uint x_off = m_off;
-+
-+ c->match_bytes += m_len;
-+
-+ if (m_len == 2)
-+ {
-+ m_off -= 1;
-+
-+ *op++ = LZO_BYTE (M1_MARKER | ((m_off & 3) << 2));
-+ *op++ = LZO_BYTE (m_off >> 2);
-+
-+ c->m1a_m++;
-+ }
-+
-+ else if (m_len <= M2_MAX_LEN && m_off <= M2_MAX_OFFSET)
-+
-+ {
-+
-+ m_off -= 1;
-+ *op++ = LZO_BYTE (((m_len - 1) << 5) | ((m_off & 7) << 2));
-+ *op++ = LZO_BYTE (m_off >> 3);
-+ c->m2_m++;
-+ }
-+ else if (m_len == M2_MIN_LEN && m_off <= MX_MAX_OFFSET
-+ && c->r1_lit >= 4)
-+ {
-+ m_off -= 1 + M2_MAX_OFFSET;
-+
-+ *op++ = LZO_BYTE (M1_MARKER | ((m_off & 3) << 2));
-+ *op++ = LZO_BYTE (m_off >> 2);
-+
-+ c->m1b_m++;
-+ }
-+ else if (m_off <= M3_MAX_OFFSET)
-+ {
-+ m_off -= 1;
-+ if (m_len <= M3_MAX_LEN)
-+ *op++ = LZO_BYTE (M3_MARKER | (m_len - 2));
-+ else
-+ {
-+ m_len -= M3_MAX_LEN;
-+ *op++ = M3_MARKER | 0;
-+ while (m_len > 255)
-+ {
-+ m_len -= 255;
-+ *op++ = 0;
-+ }
-+ *op++ = LZO_BYTE (m_len);
-+ }
-+
-+ *op++ = LZO_BYTE (m_off << 2);
-+ *op++ = LZO_BYTE (m_off >> 6);
-+
-+ c->m3_m++;
-+ }
-+ else
-+ {
-+ lzo_uint k;
-+
-+ m_off -= 0x4000;
-+ k = (m_off & 0x4000) >> 11;
-+ if (m_len <= M4_MAX_LEN)
-+ *op++ = LZO_BYTE (M4_MARKER | k | (m_len - 2));
-+ else
-+ {
-+ m_len -= M4_MAX_LEN;
-+ *op++ = LZO_BYTE (M4_MARKER | k | 0);
-+ while (m_len > 255)
-+ {
-+ m_len -= 255;
-+ *op++ = 0;
-+ }
-+ *op++ = LZO_BYTE (m_len);
-+ }
-+
-+ *op++ = LZO_BYTE (m_off << 2);
-+ *op++ = LZO_BYTE (m_off >> 6);
-+
-+ c->m4_m++;
-+ }
-+
-+ c->last_m_len = x_len;
-+ c->last_m_off = x_off;
-+ return op;
-+}
-+
-+static lzo_byte *
-+STORE_RUN (lzo1x_999_t * c, lzo_byte * op, const lzo_byte * ii, lzo_uint t)
-+{
-+ c->lit_bytes += t;
-+
-+ if (op == c->out && t <= 238)
-+ {
-+ *op++ = LZO_BYTE (17 + t);
-+ }
-+ else if (t <= 3)
-+ {
-+ op[-2] |= LZO_BYTE (t);
-+
-+ c->lit1_r++;
-+ }
-+ else if (t <= 18)
-+ {
-+ *op++ = LZO_BYTE (t - 3);
-+ c->lit2_r++;
-+ }
-+ else
-+ {
-+ lzo_uint tt = t - 18;
-+
-+ *op++ = 0;
-+ while (tt > 255)
-+ {
-+ tt -= 255;
-+ *op++ = 0;
-+ }
-+ *op++ = LZO_BYTE (tt);
-+ c->lit3_r++;
-+ }
-+ do
-+ *op++ = *ii++;
-+ while (--t > 0);
-+
-+ return op;
-+}
-+
-+static lzo_byte *
-+code_run (lzo1x_999_t * c, lzo_byte * op, const lzo_byte * ii,
-+ lzo_uint lit, lzo_uint m_len)
-+{
-+ if (lit > 0)
-+ {
-+ op = STORE_RUN (c, op, ii, lit);
-+ c->r1_m_len = m_len;
-+ c->r1_lit = lit;
-+ }
-+ else
-+ {
-+ c->r1_m_len = 0;
-+ c->r1_lit = 0;
-+ }
-+
-+ return op;
-+}
-+
-+static int
-+len_of_coded_match (lzo_uint m_len, lzo_uint m_off, lzo_uint lit)
-+{
-+ int n = 4;
-+
-+ if (m_len < 2)
-+ return -1;
-+ if (m_len == 2)
-+ return (m_off <= M1_MAX_OFFSET && lit > 0
-+ && lit < 4) ? 2 : -1;
-+ if (m_len <= M2_MAX_LEN && m_off <= M2_MAX_OFFSET)
-+ return 2;
-+ if (m_len == M2_MIN_LEN && m_off <= MX_MAX_OFFSET && lit >= 4)
-+ return 2;
-+ if (m_off <= M3_MAX_OFFSET)
-+ {
-+ if (m_len <= M3_MAX_LEN)
-+ return 3;
-+ m_len -= M3_MAX_LEN;
-+ while (m_len > 255)
-+ {
-+ m_len -= 255;
-+ n++;
-+ }
-+ return n;
-+ }
-+ if (m_off <= M4_MAX_OFFSET)
-+ {
-+ if (m_len <= M4_MAX_LEN)
-+ return 3;
-+ m_len -= M4_MAX_LEN;
-+ while (m_len > 255)
-+ {
-+ m_len -= 255;
-+ n++;
-+ }
-+ return n;
-+ }
-+ return -1;
-+}
-+
-+static lzo_int
-+min_gain (lzo_uint ahead, lzo_uint lit1, lzo_uint lit2, int l1, int l2,
-+ int l3)
-+{
-+ lzo_int lazy_match_min_gain = 0;
-+
-+ lazy_match_min_gain += ahead;
-+
-+ if (lit1 <= 3)
-+ lazy_match_min_gain += (lit2 <= 3) ? 0 : 2;
-+ else if (lit1 <= 18)
-+ lazy_match_min_gain += (lit2 <= 18) ? 0 : 1;
-+
-+ lazy_match_min_gain += (l2 - l1) * 2;
-+ if (l3 > 0)
-+ lazy_match_min_gain -= (ahead - l3) * 2;
-+
-+ if (lazy_match_min_gain < 0)
-+ lazy_match_min_gain = 0;
-+
-+ return lazy_match_min_gain;
-+}
-+
-+static void
-+better_match (const lzo1x_999_swd_t * swd, lzo_uint * m_len, lzo_uint * m_off)
-+{
-+ if (*m_len <= M2_MIN_LEN)
-+ return;
-+
-+ if (*m_off <= M2_MAX_OFFSET)
-+ return;
-+
-+ if (*m_off > M2_MAX_OFFSET &&
-+ *m_len >= M2_MIN_LEN + 1 && *m_len <= M2_MAX_LEN + 1 &&
-+ swd->best_off[*m_len - 1]
-+ && swd->best_off[*m_len - 1] <= M2_MAX_OFFSET)
-+ {
-+ *m_len = *m_len - 1;
-+ *m_off = swd->best_off[*m_len];
-+ return;
-+ }
-+
-+ if (*m_off > M3_MAX_OFFSET &&
-+ *m_len >= M4_MAX_LEN + 1 && *m_len <= M2_MAX_LEN + 2 &&
-+ swd->best_off[*m_len - 2]
-+ && swd->best_off[*m_len - 2] <= M2_MAX_OFFSET)
-+ {
-+ *m_len = *m_len - 2;
-+ *m_off = swd->best_off[*m_len];
-+ return;
-+ }
-+
-+ if (*m_off > M3_MAX_OFFSET &&
-+ *m_len >= M4_MAX_LEN + 1 && *m_len <= M3_MAX_LEN + 1 &&
-+ swd->best_off[*m_len - 1]
-+ && swd->best_off[*m_len - 1] <= M3_MAX_OFFSET)
-+ {
-+ *m_len = *m_len - 1;
-+ *m_off = swd->best_off[*m_len];
-+ }
-+
-+}
-+
-+/* minilzo.c */
-+
-+static lzo_bool
-+lzo_assert (int expr)
-+{
-+ return (expr) ? 1 : 0;
-+}
-+
-+/* lzo1x_9x.c */
-+
-+static int
-+lzo1x_999_compress_internal (const lzo_byte * in, lzo_uint in_len,
-+ lzo_byte * out, lzo_uintp out_len,
-+ lzo_voidp wrkmem,
-+ const lzo_byte * dict, lzo_uint dict_len,
-+ lzo_progress_callback_t cb,
-+ int try_lazy,
-+ lzo_uint good_length,
-+ lzo_uint max_lazy,
-+ lzo_uint nice_length,
-+ lzo_uint max_chain, lzo_uint32 flags)
-+{
-+ lzo_byte *op;
-+ const lzo_byte *ii;
-+ lzo_uint lit;
-+ lzo_uint m_len, m_off;
-+ lzo1x_999_t cc;
-+ lzo1x_999_t *const c = &cc;
-+ lzo1x_999_swd_t *const swd = (lzo1x_999_swd_t *) wrkmem;
-+ int r;
-+
-+ if (!lzo_assert
-+ (LZO1X_999_MEM_COMPRESS >= lzo_sizeof (lzo1x_999_swd_t)))
-+ return LZO_E_ERROR;
-+
-+ if (try_lazy < 0)
-+ try_lazy = 1;
-+
-+ if (good_length <= 0)
-+ good_length = 32;
-+
-+ if (max_lazy <= 0)
-+ max_lazy = 32;
-+
-+ if (nice_length <= 0)
-+ nice_length = 0;
-+
-+ if (max_chain <= 0)
-+ max_chain = SWD_MAX_CHAIN;
-+
-+ c->init = 0;
-+ c->ip = c->in = in;
-+ c->in_end = in + in_len;
-+ c->out = out;
-+ c->cb = cb;
-+ c->m1a_m = c->m1b_m = c->m2_m = c->m3_m = c->m4_m = 0;
-+ c->lit1_r = c->lit2_r = c->lit3_r = 0;
-+
-+ op = out;
-+ ii = c->ip;
-+ lit = 0;
-+ c->r1_lit = c->r1_m_len = 0;
-+
-+ r = init_match (c, swd, dict, dict_len, flags);
-+ if (r != 0)
-+ return r;
-+ if (max_chain > 0)
-+ swd->max_chain = max_chain;
-+ if (nice_length > 0)
-+ swd->nice_length = nice_length;
-+
-+ r = find_match (c, swd, 0, 0);
-+ if (r != 0)
-+ return r;
-+ while (c->look > 0)
-+ {
-+ lzo_uint ahead;
-+ lzo_uint max_ahead;
-+ int l1, l2, l3;
-+
-+ c->codesize = op - out;
-+
-+ m_len = c->m_len;
-+ m_off = c->m_off;
-+
-+ if (lit == 0)
-+ ii = c->bp;
-+
-+ if (m_len < 2 ||
-+ (m_len == 2
-+ && (m_off > M1_MAX_OFFSET || lit == 0 || lit >= 4))
-+ || (m_len == 2 && op == out) || (op == out && lit == 0))
-+ {
-+
-+ m_len = 0;
-+ }
-+ else if (m_len == M2_MIN_LEN)
-+ {
-+
-+ if (m_off > MX_MAX_OFFSET && lit >= 4)
-+ m_len = 0;
-+ }
-+
-+ if (m_len == 0)
-+ {
-+
-+ lit++;
-+ swd->max_chain = max_chain;
-+ r = find_match (c, swd, 1, 0);
-+ continue;
-+ }
-+
-+ if (swd->use_best_off)
-+ better_match (swd, &m_len, &m_off);
-+
-+ ahead = 0;
-+ if (try_lazy <= 0 || m_len >= max_lazy)
-+ {
-+
-+ l1 = 0;
-+ max_ahead = 0;
-+ }
-+ else
-+ {
-+
-+ l1 = len_of_coded_match (m_len, m_off, lit);
-+
-+ max_ahead = LZO_MIN (try_lazy, l1 - 1);
-+
-+ }
-+
-+ while (ahead < max_ahead && c->look > m_len)
-+ {
-+ lzo_int lazy_match_min_gain;
-+
-+ if (m_len >= good_length)
-+ swd->max_chain = max_chain >> 2;
-+ else
-+ swd->max_chain = max_chain;
-+ r = find_match (c, swd, 1, 0);
-+ ahead++;
-+
-+ if (c->m_len < m_len)
-+ continue;
-+
-+ if (c->m_len == m_len && c->m_off >= m_off)
-+ continue;
-+
-+ if (swd->use_best_off)
-+ better_match (swd, &c->m_len, &c->m_off);
-+
-+ l2 = len_of_coded_match (c->m_len, c->m_off,
-+ lit + ahead);
-+ if (l2 < 0)
-+ continue;
-+
-+ l3 = (op == out) ? -1 : len_of_coded_match (ahead,
-+ m_off,
-+ lit);
-+
-+ lazy_match_min_gain =
-+ min_gain (ahead, lit, lit + ahead, l1, l2,
-+ l3);
-+ if (c->m_len >= m_len + lazy_match_min_gain)
-+ {
-+ c->lazy++;
-+
-+ if (l3 > 0)
-+ {
-+
-+ op = code_run (c, op, ii, lit, ahead);
-+ lit = 0;
-+
-+ op = code_match (c, op, ahead, m_off);
-+ }
-+ else
-+ {
-+ lit += ahead;
-+ }
-+ goto lazy_match_done;
-+ }
-+ }
-+
-+ op = code_run (c, op, ii, lit, m_len);
-+ lit = 0;
-+
-+ op = code_match (c, op, m_len, m_off);
-+ swd->max_chain = max_chain;
-+ r = find_match (c, swd, m_len, 1 + ahead);
-+
-+ lazy_match_done:;
-+ }
-+
-+ if (lit > 0)
-+ op = STORE_RUN (c, op, ii, lit);
-+
-+ *op++ = M4_MARKER | 1;
-+ *op++ = 0;
-+ *op++ = 0;
-+
-+ c->codesize = op - out;
-+
-+ *out_len = op - out;
-+
-+ if (c->cb)
-+ (*c->cb) (c->textsize, c->codesize);
-+
-+ return LZO_E_OK;
-+}
-+
-+static int
-+lzo1x_999_compress_level (const lzo_byte * in, lzo_uint in_len,
-+ lzo_byte * out, lzo_uintp out_len,
-+ lzo_voidp wrkmem,
-+ const lzo_byte * dict, lzo_uint dict_len,
-+ lzo_progress_callback_t cb, int compression_level)
-+{
-+ static const struct
-+ {
-+ int try_lazy;
-+ lzo_uint good_length;
-+ lzo_uint max_lazy;
-+ lzo_uint nice_length;
-+ lzo_uint max_chain;
-+ lzo_uint32 flags;
-+ } c[9] =
-+ {
-+ {
-+ 0, 0, 0, 8, 4, 0},
-+ {
-+ 0, 0, 0, 16, 8, 0},
-+ {
-+ 0, 0, 0, 32, 16, 0},
-+ {
-+ 1, 4, 4, 16, 16, 0},
-+ {
-+ 1, 8, 16, 32, 32, 0},
-+ {
-+ 1, 8, 16, 128, 128, 0},
-+ {
-+ 2, 8, 32, 128, 256, 0},
-+ {
-+ 2, 32, 128, F, 2048, 1},
-+ {
-+ 2, F, F, F, 4096, 1}
-+ };
-+
-+ if (compression_level < 1 || compression_level > 9)
-+ return LZO_E_ERROR;
-+
-+ compression_level -= 1;
-+ return lzo1x_999_compress_internal (in, in_len, out, out_len, wrkmem,
-+ dict, dict_len, cb,
-+ c[compression_level].try_lazy,
-+ c[compression_level].good_length,
-+ c[compression_level].max_lazy,
-+ 0,
-+ c[compression_level].max_chain,
-+ c[compression_level].flags);
-+}
-+
-+static int
-+lzo1x_999_compress (const lzo_byte * in, lzo_uint in_len,
-+ lzo_byte * out, lzo_uintp out_len, lzo_voidp wrkmem)
-+{
-+ return lzo1x_999_compress_level (in, in_len, out, out_len, wrkmem,
-+ NULL, 0, 0, 8);
-+}
-+
-+/* minilzo.c */
-+
-+static const lzo_byte __lzo_copyright[] = LZO_VERSION_STRING;
-+
-+static lzo_uint
-+_lzo1x_1_do_compress (const lzo_byte * in, lzo_uint in_len,
-+ lzo_byte * out, lzo_uintp out_len, lzo_voidp wrkmem)
-+{
-+
-+ register const lzo_byte *ip;
-+
-+ lzo_byte *op;
-+ const lzo_byte *const in_end = in + in_len;
-+ const lzo_byte *const ip_end = in + in_len - 8 - 5;
-+ const lzo_byte *ii;
-+ lzo_dict_p const dict = (lzo_dict_p) wrkmem;
-+
-+ op = out;
-+ ip = in;
-+ ii = ip;
-+
-+ ip += 4;
-+ for (;;)
-+ {
-+ register const lzo_byte *m_pos;
-+
-+ lzo_uint m_off;
-+ lzo_uint m_len;
-+ lzo_uint dindex;
-+
-+ DINDEX1 (dindex, ip);
-+ GINDEX (m_pos, m_off, dict, dindex, in);
-+ if (LZO_CHECK_MPOS_NON_DET
-+ (m_pos, m_off, in, ip, M4_MAX_OFFSET))
-+ goto literal;
-+
-+ if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3])
-+ goto try_match;
-+ DINDEX2 (dindex, ip);
-+ GINDEX (m_pos, m_off, dict, dindex, in);
-+
-+ if (LZO_CHECK_MPOS_NON_DET
-+ (m_pos, m_off, in, ip, M4_MAX_OFFSET))
-+ goto literal;
-+ if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3])
-+ goto try_match;
-+ goto literal;
-+
-+ try_match:
-+ if (m_pos[0] != ip[0] || m_pos[1] != ip[1])
-+ {
-+ }
-+ else
-+ {
-+ if (m_pos[2] == ip[2])
-+ {
-+ goto match;
-+ }
-+ else
-+ {
-+ }
-+ }
-+
-+ literal:
-+ UPDATE_I (dict, 0, dindex, ip, in);
-+ ++ip;
-+ if (ip >= ip_end)
-+ break;
-+ continue;
-+
-+ match:
-+ UPDATE_I (dict, 0, dindex, ip, in);
-+
-+ if (pd (ip, ii) > 0)
-+ {
-+ register lzo_uint t = pd (ip, ii);
-+
-+ if (t <= 3)
-+ {
-+ op[-2] |= LZO_BYTE (t);
-+ }
-+ else if (t <= 18)
-+ *op++ = LZO_BYTE (t - 3);
-+ else
-+ {
-+ register lzo_uint tt = t - 18;
-+
-+ *op++ = 0;
-+ while (tt > 255)
-+ {
-+ tt -= 255;
-+ *op++ = 0;
-+ }
-+ *op++ = LZO_BYTE (tt);;
-+ }
-+ do
-+ *op++ = *ii++;
-+ while (--t > 0);
-+ }
-+
-+ ip += 3;
-+ if (m_pos[3] != *ip++ || m_pos[4] != *ip++
-+ || m_pos[5] != *ip++ || m_pos[6] != *ip++
-+ || m_pos[7] != *ip++ || m_pos[8] != *ip++)
-+ {
-+ --ip;
-+ m_len = ip - ii;
-+
-+ if (m_off <= M2_MAX_OFFSET)
-+ {
-+ m_off -= 1;
-+
-+ *op++ = LZO_BYTE (((m_len -
-+ 1) << 5) | ((m_off & 7) <<
-+ 2));
-+ *op++ = LZO_BYTE (m_off >> 3);
-+ }
-+ else if (m_off <= M3_MAX_OFFSET)
-+ {
-+ m_off -= 1;
-+ *op++ = LZO_BYTE (M3_MARKER | (m_len - 2));
-+ goto m3_m4_offset;
-+ }
-+ else
-+
-+ {
-+ m_off -= 0x4000;
-+
-+ *op++ = LZO_BYTE (M4_MARKER |
-+ ((m_off & 0x4000) >> 11) |
-+ (m_len - 2));
-+ goto m3_m4_offset;
-+ }
-+ }
-+ else
-+ {
-+ {
-+ const lzo_byte *end = in_end;
-+ const lzo_byte *m = m_pos + M2_MAX_LEN + 1;
-+ while (ip < end && *m == *ip)
-+ m++, ip++;
-+ m_len = (ip - ii);
-+ }
-+
-+
-+ if (m_off <= M3_MAX_OFFSET)
-+ {
-+ m_off -= 1;
-+ if (m_len <= 33)
-+ *op++ = LZO_BYTE (M3_MARKER |
-+ (m_len - 2));
-+ else
-+ {
-+ m_len -= 33;
-+ *op++ = M3_MARKER | 0;
-+ goto m3_m4_len;
-+ }
-+ }
-+ else
-+ {
-+ m_off -= 0x4000;
-+
-+ if (m_len <= M4_MAX_LEN)
-+ *op++ = LZO_BYTE (M4_MARKER |
-+ ((m_off & 0x4000) >>
-+ 11) | (m_len - 2));
-+
-+ else
-+ {
-+ m_len -= M4_MAX_LEN;
-+ *op++ = LZO_BYTE (M4_MARKER |
-+ ((m_off & 0x4000) >>
-+ 11));
-+ m3_m4_len:
-+ while (m_len > 255)
-+ {
-+ m_len -= 255;
-+ *op++ = 0;
-+ }
-+
-+ *op++ = LZO_BYTE (m_len);
-+ }
-+ }
-+
-+ m3_m4_offset:
-+ *op++ = LZO_BYTE ((m_off & 63) << 2);
-+ *op++ = LZO_BYTE (m_off >> 6);
-+ }
-+ ii = ip;
-+ if (ip >= ip_end)
-+ break;
-+ }
-+
-+ *out_len = op - out;
-+ return pd (in_end, ii);
-+}
-+
-+static int
-+lzo1x_1_compress (const lzo_byte * in, lzo_uint in_len,
-+ lzo_byte * out, lzo_uintp out_len, lzo_voidp wrkmem)
-+{
-+ lzo_byte *op = out;
-+ lzo_uint t;
-+
-+ if (in_len <= M2_MAX_LEN + 5)
-+ t = in_len;
-+ else
-+ {
-+ t = _lzo1x_1_do_compress (in, in_len, op, out_len, wrkmem);
-+ op += *out_len;
-+ }
-+
-+ if (t > 0)
-+ {
-+ const lzo_byte *ii = in + in_len - t;
-+
-+ if (op == out && t <= 238)
-+ *op++ = LZO_BYTE (17 + t);
-+ else if (t <= 3)
-+ op[-2] |= LZO_BYTE (t);
-+ else if (t <= 18)
-+ *op++ = LZO_BYTE (t - 3);
-+ else
-+ {
-+ lzo_uint tt = t - 18;
-+
-+ *op++ = 0;
-+ while (tt > 255)
-+ {
-+ tt -= 255;
-+ *op++ = 0;
-+ }
-+
-+ *op++ = LZO_BYTE (tt);
-+ }
-+ do
-+ *op++ = *ii++;
-+ while (--t > 0);
-+ }
-+
-+ *op++ = M4_MARKER | 1;
-+ *op++ = 0;
-+ *op++ = 0;
-+
-+ *out_len = op - out;
-+ return 0;
-+}
-+
-+static int
-+lzo1x_decompress (const lzo_byte * in, lzo_uint in_len,
-+ lzo_byte * out, lzo_uintp out_len, lzo_voidp wrkmem)
-+{
-+ register lzo_byte *op;
-+ register const lzo_byte *ip;
-+ register lzo_uint t;
-+
-+ register const lzo_byte *m_pos;
-+
-+ const lzo_byte *const ip_end = in + in_len;
-+ lzo_byte *const op_end = out + *out_len;
-+
-+ *out_len = 0;
-+
-+ op = out;
-+ ip = in;
-+
-+ if (*ip > 17)
-+ {
-+ t = *ip++ - 17;
-+ if (t < 4)
-+ goto match_next;
-+ NEED_OP (t);
-+ NEED_IP (t + 1);
-+ do
-+ *op++ = *ip++;
-+ while (--t > 0);
-+ goto first_literal_run;
-+ }
-+
-+ while (TEST_IP && TEST_OP)
-+ {
-+ t = *ip++;
-+ if (t >= 16)
-+ goto match;
-+ if (t == 0)
-+ {
-+ NEED_IP (1);
-+ while (*ip == 0)
-+ {
-+ t += 255;
-+ ip++;
-+ NEED_IP (1);
-+ }
-+ t += 15 + *ip++;
-+ }
-+ NEED_OP (t + 3);
-+ NEED_IP (t + 4);
-+ if (PTR_ALIGNED2_4 (op, ip))
-+ {
-+ COPY4 (op, ip);
-+
-+ op += 4;
-+ ip += 4;
-+ if (--t > 0)
-+ {
-+ if (t >= 4)
-+ {
-+ do
-+ {
-+ COPY4 (op, ip);
-+ op += 4;
-+ ip += 4;
-+ t -= 4;
-+ }
-+ while (t >= 4);
-+ if (t > 0)
-+ do
-+ *op++ = *ip++;
-+ while (--t > 0);
-+ }
-+ else
-+ do
-+ *op++ = *ip++;
-+ while (--t > 0);
-+ }
-+ }
-+ else
-+ {
-+ *op++ = *ip++;
-+ *op++ = *ip++;
-+ *op++ = *ip++;
-+ do
-+ *op++ = *ip++;
-+ while (--t > 0);
-+ }
-+ first_literal_run:
-+
-+ t = *ip++;
-+ if (t >= 16)
-+ goto match;
-+
-+ m_pos = op - (1 + M2_MAX_OFFSET);
-+ m_pos -= t >> 2;
-+ m_pos -= *ip++ << 2;
-+ TEST_LOOKBEHIND (m_pos, out);
-+ NEED_OP (3);
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos;
-+
-+ goto match_done;
-+
-+ while (TEST_IP && TEST_OP)
-+ {
-+ match:
-+ if (t >= 64)
-+ {
-+ m_pos = op - 1;
-+ m_pos -= (t >> 2) & 7;
-+ m_pos -= *ip++ << 3;
-+ t = (t >> 5) - 1;
-+ TEST_LOOKBEHIND (m_pos, out);
-+ NEED_OP (t + 3 - 1);
-+ goto copy_match;
-+
-+ }
-+ else if (t >= 32)
-+ {
-+ t &= 31;
-+ if (t == 0)
-+ {
-+ NEED_IP (1);
-+ while (*ip == 0)
-+ {
-+ t += 255;
-+ ip++;
-+ NEED_IP (1);
-+ }
-+ t += 31 + *ip++;
-+ }
-+
-+ m_pos = op - 1;
-+ m_pos -= (ip[0] >> 2) + (ip[1] << 6);
-+
-+ ip += 2;
-+ }
-+ else if (t >= 16)
-+ {
-+ m_pos = op;
-+ m_pos -= (t & 8) << 11;
-+
-+ t &= 7;
-+ if (t == 0)
-+ {
-+ NEED_IP (1);
-+ while (*ip == 0)
-+ {
-+ t += 255;
-+ ip++;
-+ NEED_IP (1);
-+ }
-+ t += 7 + *ip++;
-+ }
-+
-+ m_pos -= (ip[0] >> 2) + (ip[1] << 6);
-+
-+ ip += 2;
-+ if (m_pos == op)
-+ goto eof_found;
-+ m_pos -= 0x4000;
-+ }
-+ else
-+ {
-+
-+ m_pos = op - 1;
-+ m_pos -= t >> 2;
-+ m_pos -= *ip++ << 2;
-+ TEST_LOOKBEHIND (m_pos, out);
-+ NEED_OP (2);
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos;
-+
-+ goto match_done;
-+ }
-+
-+ TEST_LOOKBEHIND (m_pos, out);
-+ NEED_OP (t + 3 - 1);
-+ if (t >= 2 * 4 - (3 - 1)
-+ && PTR_ALIGNED2_4 (op, m_pos))
-+ {
-+ COPY4 (op, m_pos);
-+ op += 4;
-+ m_pos += 4;
-+ t -= 4 - (3 - 1);
-+ do
-+ {
-+ COPY4 (op, m_pos);
-+ op += 4;
-+ m_pos += 4;
-+ t -= 4;
-+ }
-+ while (t >= 4);
-+ if (t > 0)
-+ do
-+ *op++ = *m_pos++;
-+ while (--t > 0);
-+ }
-+ else
-+
-+ {
-+ copy_match:
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos++;
-+ do
-+ *op++ = *m_pos++;
-+ while (--t > 0);
-+ }
-+
-+ match_done:
-+ t = ip[-2] & 3;
-+
-+ if (t == 0)
-+ break;
-+
-+ match_next:
-+ NEED_OP (t);
-+ NEED_IP (t + 1);
-+ do
-+ *op++ = *ip++;
-+ while (--t > 0);
-+ t = *ip++;
-+ }
-+ }
-+ *out_len = op - out;
-+ return LZO_E_EOF_NOT_FOUND;
-+
-+ eof_found:
-+ *out_len = op - out;
-+ return (ip == ip_end ? LZO_E_OK :
-+ (ip <
-+ ip_end ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN));
-+
-+ input_overrun:
-+ *out_len = op - out;
-+ return LZO_E_INPUT_OVERRUN;
-+
-+ output_overrun:
-+ *out_len = op - out;
-+ return LZO_E_OUTPUT_OVERRUN;
-+
-+ lookbehind_overrun:
-+ *out_len = op - out;
-+ return LZO_E_LOOKBEHIND_OVERRUN;
-+}
-+
-+/* lzo1x_oo.ch */
-+
-+#define NO_LIT LZO_UINT_MAX
-+
-+static void
-+copy2 (lzo_byte * ip, const lzo_byte * m_pos, lzo_ptrdiff_t off)
-+{
-+ ip[0] = m_pos[0];
-+ if (off == 1)
-+ ip[1] = m_pos[0];
-+ else
-+ ip[1] = m_pos[1];
-+}
-+
-+static void
-+copy3 (lzo_byte * ip, const lzo_byte * m_pos, lzo_ptrdiff_t off)
-+{
-+ ip[0] = m_pos[0];
-+ if (off == 1)
-+ {
-+ ip[2] = ip[1] = m_pos[0];
-+ }
-+ else if (off == 2)
-+ {
-+ ip[1] = m_pos[1];
-+ ip[2] = m_pos[0];
-+ }
-+ else
-+ {
-+ ip[1] = m_pos[1];
-+ ip[2] = m_pos[2];
-+ }
-+}
-+
-+static int
-+lzo1x_optimize (lzo_byte * in, lzo_uint in_len,
-+ lzo_byte * out, lzo_uintp out_len, lzo_voidp wrkmem)
-+{
-+ register lzo_byte *op;
-+ register lzo_byte *ip;
-+ register lzo_uint t;
-+ register lzo_byte *m_pos;
-+ lzo_uint nl;
-+ const lzo_byte *const ip_end = in + in_len;
-+ const lzo_byte *const op_end = out + *out_len;
-+ lzo_byte *litp = NULL;
-+ lzo_uint lit = 0;
-+ lzo_uint next_lit = NO_LIT;
-+ long o_m1_a = 0, o_m1_b = 0, o_m2 = 0, o_m3_a = 0, o_m3_b = 0;
-+
-+ *out_len = 0;
-+
-+ op = out;
-+ ip = in;
-+
-+ if (*ip > 17)
-+ {
-+ t = *ip++ - 17;
-+ if (t < 4)
-+ goto match_next;
-+ goto first_literal_run;
-+ }
-+
-+ while (TEST_IP && TEST_OP)
-+ {
-+ t = *ip++;
-+ if (t >= 16)
-+ goto match;
-+ litp = ip - 1;
-+ if (t == 0)
-+ {
-+ t = 15;
-+ while (*ip == 0)
-+ t += 255, ip++;
-+ t += *ip++;
-+ }
-+ lit = t + 3;
-+ copy_literal_run:
-+ *op++ = *ip++;
-+ *op++ = *ip++;
-+ *op++ = *ip++;
-+ first_literal_run:
-+ do
-+ *op++ = *ip++;
-+ while (--t > 0);
-+
-+ t = *ip++;
-+
-+ if (t >= 16)
-+ goto match;
-+ m_pos = op - 1 - 0x800;
-+ m_pos -= t >> 2;
-+ m_pos -= *ip++ << 2;
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos++;
-+ lit = 0;
-+ goto match_done;
-+
-+ while (TEST_IP && TEST_OP)
-+ {
-+ if (t < 16)
-+ {
-+ m_pos = op - 1;
-+ m_pos -= t >> 2;
-+ m_pos -= *ip++ << 2;
-+
-+ if (litp == NULL)
-+ goto copy_m1;
-+
-+ nl = ip[-2] & 3;
-+ if (nl == 0 && lit == 1 && ip[0] >= 16)
-+ {
-+ next_lit = nl;
-+ lit += 2;
-+ *litp = LZO_BYTE ((*litp & ~3) | lit);
-+ copy2 (ip - 2, m_pos, op - m_pos);
-+ o_m1_a++;
-+ }
-+ else if (nl == 0 && ip[0] < 16 && ip[0] != 0
-+ && (lit + 2 + ip[0] < 16))
-+ {
-+ t = *ip++;
-+ *litp &= ~3;
-+ copy2 (ip - 3 + 1, m_pos, op - m_pos);
-+ litp += 2;
-+ if (lit > 0)
-+ memmove (litp + 1, litp, lit);
-+ lit += 2 + t + 3;
-+ *litp = LZO_BYTE (lit - 3);
-+
-+ o_m1_b++;
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos++;
-+ goto copy_literal_run;
-+ }
-+ copy_m1:
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos++;
-+ }
-+ else
-+ {
-+ match:
-+ if (t >= 64)
-+ {
-+ m_pos = op - 1;
-+ m_pos -= (t >> 2) & 7;
-+ m_pos -= *ip++ << 3;
-+ t = (t >> 5) - 1;
-+ if (litp == NULL)
-+ goto copy_m;
-+
-+ nl = ip[-2] & 3;
-+ if (t == 1 && lit > 3 && nl == 0 &&
-+ ip[0] < 16 && ip[0] != 0
-+ && (lit + 3 + ip[0] < 16))
-+ {
-+ t = *ip++;
-+ copy3 (ip - 1 - 2, m_pos,
-+ op - m_pos);
-+ lit += 3 + t + 3;
-+ *litp = LZO_BYTE (lit - 3);
-+ o_m2++;
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos++;
-+ goto copy_literal_run;
-+ }
-+ }
-+ else
-+ {
-+ if (t >= 32)
-+ {
-+ t &= 31;
-+ if (t == 0)
-+ {
-+ t = 31;
-+ while (*ip == 0)
-+ t += 255,
-+ ip++;
-+ t += *ip++;
-+ }
-+ m_pos = op - 1;
-+ m_pos -= *ip++ >> 2;
-+ m_pos -= *ip++ << 6;
-+ }
-+ else
-+ {
-+ m_pos = op;
-+ m_pos -= (t & 8) << 11;
-+ t &= 7;
-+ if (t == 0)
-+ {
-+ t = 7;
-+ while (*ip == 0)
-+ t += 255,
-+ ip++;
-+ t += *ip++;
-+ }
-+ m_pos -= *ip++ >> 2;
-+ m_pos -= *ip++ << 6;
-+ if (m_pos == op)
-+ goto eof_found;
-+ m_pos -= 0x4000;
-+ }
-+ if (litp == NULL)
-+ goto copy_m;
-+
-+ nl = ip[-2] & 3;
-+ if (t == 1 && lit == 0 && nl == 0
-+ && ip[0] >= 16)
-+ {
-+ next_lit = nl;
-+ lit += 3;
-+ *litp = LZO_BYTE ((*litp & ~3)
-+ | lit);
-+ copy3 (ip - 3, m_pos,
-+ op - m_pos);
-+ o_m3_a++;
-+ }
-+ else if (t == 1 && lit <= 3 && nl == 0
-+ && ip[0] < 16 && ip[0] != 0
-+ && (lit + 3 + ip[0] < 16))
-+ {
-+ t = *ip++;
-+ *litp &= ~3;
-+ copy3 (ip - 4 + 1, m_pos,
-+ op - m_pos);
-+ litp += 2;
-+ if (lit > 0)
-+ memmove (litp + 1,
-+ litp, lit);
-+ lit += 3 + t + 3;
-+ *litp = LZO_BYTE (lit - 3);
-+
-+ o_m3_b++;
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos++;
-+ goto copy_literal_run;
-+ }
-+ }
-+ copy_m:
-+ *op++ = *m_pos++;
-+ *op++ = *m_pos++;
-+ do
-+ *op++ = *m_pos++;
-+ while (--t > 0);
-+ }
-+
-+ match_done:
-+ if (next_lit == NO_LIT)
-+ {
-+ t = ip[-2] & 3;
-+ lit = t;
-+ litp = ip - 2;
-+ }
-+ else
-+ t = next_lit;
-+ next_lit = NO_LIT;
-+ if (t == 0)
-+ break;
-+ match_next:
-+ do
-+ *op++ = *ip++;
-+ while (--t > 0);
-+ t = *ip++;
-+ }
-+ }
-+
-+ *out_len = op - out;
-+ return LZO_E_EOF_NOT_FOUND;
-+
-+ eof_found:
-+ *out_len = op - out;
-+ return (ip == ip_end ? LZO_E_OK :
-+ (ip <
-+ ip_end ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN));
-+}
-+
-+/* interface to jffs2 bbc follows */
-+
-+#include "jffs2_bbc_framework.h"
-+
-+#define BLOCKSIZE 4096
-+#define OUTBLOCKSIZE (BLOCKSIZE + BLOCKSIZE / 64 + 16 + 3)
-+
-+#define JFFS2_BBC_LZO_BLOCK_SIGN {0x3f, 0x47, 0x5a, 0x18}
-+
-+static int
-+jffs2_bbc_lzo_compressor_init (void);
-+
-+static void
-+jffs2_bbc_lzo_compressor_deinit (void);
-+
-+static int
-+jffs2_bbc_lzo_compress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long *sourcelen,
-+ unsigned long *dstlen);
-+
-+static int
-+jffs2_bbc_lzo_estimate (void *model, unsigned char *input,
-+ unsigned long sourcelen, unsigned long *dstlen,
-+ unsigned long *readtime, unsigned long *writetime);
-+
-+static int
-+jffs2_bbc_lzo_decompress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long sourcelen,
-+ unsigned long dstlen);
-+
-+static char *
-+jffs2_bbc_lzo_proc_info (void);
-+
-+static int
-+jffs2_bbc_lzo_proc_command (char *command);
-+
-+struct jffs2_bbc_compressor_type jffs2_bbc_lzo = {
-+ "lzo",
-+ 0,
-+ JFFS2_BBC_LZO_BLOCK_SIGN,
-+ jffs2_bbc_lzo_compressor_init,
-+ NULL,
-+ NULL,
-+ jffs2_bbc_lzo_compressor_deinit,
-+ jffs2_bbc_lzo_compress,
-+ jffs2_bbc_lzo_estimate,
-+ jffs2_bbc_lzo_decompress,
-+ jffs2_bbc_lzo_proc_info,
-+ jffs2_bbc_lzo_proc_command
-+};
-+
-+static int
-+no_lzo1x_optimize (lzo_byte * src, lzo_uint src_len,
-+ lzo_byte * dst, lzo_uintp dst_len, lzo_voidp wrkmem)
-+{
-+ return 0;
-+}
-+
-+#ifdef __KERNEL__
-+static lzo_compress_t lzo1x_compressor = lzo1x_1_compress;
-+static lzo_optimize_t lzo1x_optimizer = no_lzo1x_optimize;
-+static int lzo1x_compressor_type = 1;
-+static int lzo1x_optimize_type = 0;
-+static unsigned long lzo1x_compressor_memsize = LZO1X_1_MEM_COMPRESS;
-+#else
-+static lzo_compress_t lzo1x_compressor = lzo1x_999_compress;
-+static lzo_optimize_t lzo1x_optimizer = lzo1x_optimize;
-+static int lzo1x_compressor_type = 999;
-+static int lzo1x_optimize_type = 1;
-+static unsigned long lzo1x_compressor_memsize = LZO1X_999_MEM_COMPRESS;
-+#endif
-+
-+static lzo_bytep wrkmem = NULL; /* temporary buffer for compression, used by lzo */
-+static lzo_bytep cmprssmem = NULL; /* temporary buffer for compression, used by interface */
-+
-+static int
-+jffs2_bbc_lzo_compressor_init (void)
-+{
-+ wrkmem = (lzo_bytep) jffs2_bbc_malloc (lzo1x_compressor_memsize);
-+ cmprssmem = (lzo_bytep) jffs2_bbc_malloc (OUTBLOCKSIZE);
-+ return !(wrkmem && cmprssmem);
-+}
-+
-+static void
-+jffs2_bbc_lzo_compressor_deinit (void)
-+{
-+ jffs2_bbc_free (wrkmem);
-+ jffs2_bbc_free (cmprssmem);
-+}
-+
-+static int
-+jffs2_bbc_lzo_compress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long *sourcelen,
-+ unsigned long *dstlen)
-+{
-+ lzo_uint csize = OUTBLOCKSIZE;
-+ lzo_uint isize = *sourcelen;
-+ int retval;
-+ if ((retval =
-+ lzo1x_compressor (input, *sourcelen, cmprssmem, &csize,
-+ wrkmem)) != LZO_E_OK)
-+ {
-+ *sourcelen = *dstlen = 0;
-+ return retval;
-+ }
-+ else
-+ {
-+ retval = lzo1x_optimizer (cmprssmem, csize, input, &isize,
-+ NULL);
-+ csize += 2;
-+ if (csize <= *dstlen) {
-+ *dstlen = csize;
-+ *(output++) = jffs2_bbc_lzo.block_sign[0];
-+ *(output++) = jffs2_bbc_lzo.block_sign[1];
-+ memcpy (output, cmprssmem, csize - 2);
-+ return retval;
-+ } else {
-+ *sourcelen = *dstlen = 0;
-+ return -1;
-+ }
-+ }
-+}
-+
-+static int
-+jffs2_bbc_lzo_estimate (void *model, unsigned char *input,
-+ unsigned long sourcelen, unsigned long *dstlen,
-+ unsigned long *readtime, unsigned long *writetime)
-+{
-+ *dstlen = sourcelen * 55 / 100;
-+ *readtime = JFFS2_BBC_ZLIB_READ_TIME / 2;
-+ *writetime = JFFS2_BBC_ZLIB_WRITE_TIME * 8 / 10; /* LZO1X-1 is much-much faster,
-+ but LZO1X-999 is slow. The default mode for inside kernel compression is LZO1X-1
-+ This should be *0.4 really */
-+ return 0;
-+}
-+
-+static int
-+jffs2_bbc_lzo_decompress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long sourcelen,
-+ unsigned long dstlen)
-+{
-+ lzo_uint outlen = dstlen;
-+ if ( ( *(input++) != (unsigned char)jffs2_bbc_lzo.block_sign[0] ) ||
-+ ( *(input++) != (unsigned char)jffs2_bbc_lzo.block_sign[1] )
-+ ) {
-+ return -1;
-+ } else {
-+ return lzo1x_decompress (input, sourcelen - 2, output, &outlen, NULL);
-+ }
-+}
-+
-+static char *
-+jffs2_bbc_lzo_proc_info (void)
-+{
-+ if (lzo1x_compressor_type == 1)
-+ {
-+ if (lzo1x_optimize_type == 1)
-+ {
-+ return "LZO1X-1 compression with optimization";
-+ }
-+ else
-+ {
-+ return "LZO1X-1 compression without optimization";
-+ }
-+ }
-+ else if (lzo1x_compressor_type == 999)
-+ {
-+ if (lzo1x_optimize_type == 1)
-+ {
-+ return "LZO1X-999 compression with optimization";
-+ }
-+ else
-+ {
-+ return "LZO1X-999 compression without optimization";
-+ }
-+ }
-+ else
-+ {
-+ return "Unknown configuration!";
-+ }
-+}
-+
-+static int
-+jffs2_bbc_lzo_proc_command (char *command)
-+{
-+ switch (*command)
-+ {
-+ case 'o':
-+ /* switch optimization off */
-+ lzo1x_optimizer = no_lzo1x_optimize;
-+ lzo1x_optimize_type = 0;
-+ jffs2_bbc_print1 ("Compression optimization switched off.\n");
-+ return 0;
-+ case 'O':
-+ /* switch optimization on */
-+ lzo1x_optimizer = lzo1x_optimize;
-+ lzo1x_optimize_type = 1;
-+ jffs2_bbc_print1 ("Compression optimization switched on.\n");
-+ return 0;
-+ case '1':
-+ /* switch compression to LZO1X-1 */
-+ jffs2_bbc_free (wrkmem);
-+ lzo1x_compressor_type = 1;
-+ lzo1x_compressor = lzo1x_1_compress;
-+ lzo1x_compressor_memsize = LZO1X_1_MEM_COMPRESS;
-+ wrkmem = (lzo_bytep)
-+ jffs2_bbc_malloc (lzo1x_compressor_memsize);
-+ jffs2_bbc_print1 ("Compression type switched to LZO1X-1.\n");
-+ return 0;
-+ case '9':
-+ /* switch compression to LZO1X-999 */
-+ jffs2_bbc_free (wrkmem);
-+ lzo1x_compressor_type = 999;
-+ lzo1x_compressor = lzo1x_999_compress;
-+ lzo1x_compressor_memsize = LZO1X_999_MEM_COMPRESS;
-+ wrkmem = (lzo_bytep)
-+ jffs2_bbc_malloc (lzo1x_compressor_memsize);
-+ jffs2_bbc_print1
-+ ("Compression type switched to LZO1X-999.\n");
-+ return 0;
-+ default:
-+ jffs2_bbc_print1 ("Unknown command!\n");
-+ return 0;
-+ }
-+}
-+
-+
-+struct jffs2_bbc_compressor_type *
-+jffs2_bbc_lzo_init (int mode)
-+{
-+ if (jffs2_bbc_register_compressor (&jffs2_bbc_lzo) == 0)
-+ {
-+ return &jffs2_bbc_lzo;
-+ }
-+ else
-+ {
-+ return NULL;
-+ }
-+}
-+
-+void
-+jffs2_bbc_lzo_deinit (void)
-+{
-+ jffs2_bbc_unregister_compressor (&jffs2_bbc_lzo);
-+}
-diff -Nur linux-mips-cvs/fs/jffs2/jffs2_bbc_lzss_comp.c linux-mips/fs/jffs2/jffs2_bbc_lzss_comp.c
---- linux-mips-cvs/fs/jffs2/jffs2_bbc_lzss_comp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/jffs2_bbc_lzss_comp.c 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,385 @@
-+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
-+
-+/*
-+ jffs2_bbc_lzss_comp.c -- Lempel-Ziv-Storer-Szymanski compression module for jffs2
-+ Copyright (C) 2004 Patrik Kluba
-+ Based on the LZSS source included in LDS (lossless datacompression sources)
-+ Block-compression modifications by Patrik Kluba
-+ $Header: /openwrt/openwrt/package/linux/kernel-patches/301-jffs-compression,v 1.1 2005/03/26 10:33:31 wbx Exp $
-+*/
-+
-+/*
-+Original copyright follows:
-+
-+**************************************************************
-+ LZSS.C -- A Data Compression Program
-+**************************************************************
-+ 4/6/1989 Haruhiko Okumura
-+ Use, distribute, and modify this program freely.
-+ Please send me your improved versions.
-+ PC-VAN SCIENCE
-+ NIFTY-Serve PAF01022
-+ CompuServe 74050,1022
-+**************************************************************
-+
-+*/
-+
-+/*
-+
-+ 2004-02-16 pajko <pajko(AT)halom(DOT)u-szeged(DOT)hu>
-+ Initial release
-+
-+*/
-+
-+/* lzss.c */
-+
-+#define N 4096 /* size of ring buffer */
-+#define F 18 /* upper limit for match_length */
-+#define THRESHOLD 2 /* encode string into position and length
-+ if match_length is greater than this */
-+#define NIL N /* index for root of binary search trees */
-+
-+static unsigned char
-+ text_buf[N + F - 1]; /* ring buffer of size N,
-+ with extra F-1 bytes to facilitate string comparison */
-+static unsigned long match_position, match_length; /* of longest match. These are
-+ set by the InsertNode() procedure. */
-+static unsigned long lson[N + 1], rson[N + 257], dad[N + 1]; /* left & right children &
-+ parents -- These constitute binary search trees. */
-+
-+static void InitTree(void) /* initialize trees */
-+{
-+ unsigned long i;
-+
-+ /* For i = 0 to N - 1, rson[i] and lson[i] will be the right and
-+ left children of node i. These nodes need not be initialized.
-+ Also, dad[i] is the parent of node i. These are initialized to
-+ NIL (= N), which stands for 'not used.'
-+ For i = 0 to 255, rson[N + i + 1] is the root of the tree
-+ for strings that begin with character i. These are initialized
-+ to NIL. Note there are 256 trees. */
-+
-+ for (i = N + 1; i <= N + 256; i++) rson[i] = NIL;
-+ for (i = 0; i < N; i++) dad[i] = NIL;
-+}
-+
-+static void InsertNode(unsigned long r)
-+ /* Inserts string of length F, text_buf[r..r+F-1], into one of the
-+ trees (text_buf[r]'th tree) and returns the longest-match position
-+ and length via the global variables match_position and match_length.
-+ If match_length = F, then removes the old node in favor of the new
-+ one, because the old one will be deleted sooner.
-+ Note r plays double role, as tree node and position in buffer. */
-+{
-+ unsigned long i, p;
-+ unsigned char *key;
-+ signed long cmp;
-+
-+ cmp = 1; key = &text_buf[r]; p = N + 1 + key[0];
-+ rson[r] = lson[r] = NIL; match_length = 0;
-+ for ( ; ; ) {
-+ if (cmp >= 0) {
-+ if (rson[p] != NIL) p = rson[p];
-+ else { rson[p] = r; dad[r] = p; return; }
-+ } else {
-+ if (lson[p] != NIL) p = lson[p];
-+ else { lson[p] = r; dad[r] = p; return; }
-+ }
-+ for (i = 1; i < F; i++)
-+ if ((cmp = key[i] - text_buf[p + i]) != 0) break;
-+ if (i > match_length) {
-+ match_position = p;
-+ if ((match_length = i) >= F) break;
-+ }
-+ }
-+ dad[r] = dad[p]; lson[r] = lson[p]; rson[r] = rson[p];
-+ dad[lson[p]] = r; dad[rson[p]] = r;
-+ if (rson[dad[p]] == p) rson[dad[p]] = r;
-+ else lson[dad[p]] = r;
-+ dad[p] = NIL; /* remove p */
-+}
-+
-+static void DeleteNode(unsigned long p) /* deletes node p from tree */
-+{
-+ unsigned long q;
-+
-+ if (dad[p] == NIL) return; /* not in tree */
-+ if (rson[p] == NIL) q = lson[p];
-+ else if (lson[p] == NIL) q = rson[p];
-+ else {
-+ q = lson[p];
-+ if (rson[q] != NIL) {
-+ do { q = rson[q]; } while (rson[q] != NIL);
-+ rson[dad[q]] = lson[q]; dad[lson[q]] = dad[q];
-+ lson[q] = lson[p]; dad[lson[p]] = q;
-+ }
-+ rson[q] = rson[p]; dad[rson[p]] = q;
-+ }
-+ dad[q] = dad[p];
-+ if (rson[dad[p]] == p) rson[dad[p]] = q; else lson[dad[p]] = q;
-+ dad[p] = NIL;
-+}
-+
-+/* modified for block compression */
-+/* on return, srclen will contain the number of successfully compressed bytes
-+ and dstlen will contain completed compressed bytes */
-+
-+static int Encode(unsigned char *srcbuf, unsigned char *dstbuf, unsigned long *srclen,
-+ unsigned long *dstlen)
-+{
-+ unsigned long i, len, r, c, s, last_match_length, code_buf_ptr;
-+ unsigned char code_buf[17], mask;
-+ unsigned char *ip, *op;
-+ unsigned long written = 0;
-+ unsigned long read = 0;
-+ unsigned char *srcend = srcbuf + *srclen;
-+ unsigned char *dstend = dstbuf + *dstlen;
-+ ip = srcbuf;
-+ op = dstbuf;
-+ InitTree(); /* initialize trees */
-+ code_buf[0] = 0; /* code_buf[1..16] saves eight units of code, and
-+ code_buf[0] works as eight flags, "1" representing that the unit
-+ is an unencoded letter (1 byte), "0" a position-and-length pair
-+ (2 bytes). Thus, eight units require at most 16 bytes of code. */
-+ code_buf_ptr = mask = 1;
-+ s = 0; r = N - F;
-+ for (i = s; i < r; i++) text_buf[i] = ' '; /* Clear the buffer with
-+ any character that will appear often. */
-+ for (len = 0; (len < F) && (ip < srcend); len++)
-+ text_buf[r + len] = *(ip++); /* Read F bytes into the last F bytes of
-+ the buffer */
-+ read = len;
-+ for (i = 1; i <= F; i++) InsertNode(r - i); /* Insert the F strings,
-+ each of which begins with one or more 'space' characters. Note
-+ the order in which these strings are inserted. This way,
-+ degenerate trees will be less likely to occur. */
-+ InsertNode(r); /* Finally, insert the whole string just read. The
-+ global variables match_length and match_position are set. */
-+ do {
-+ if (match_length > len) match_length = len; /* match_length
-+ may be spuriously long near the end of text. */
-+ if (match_length <= THRESHOLD) {
-+ match_length = 1; /* Not long enough match. Send one byte. */
-+ code_buf[0] |= mask; /* 'send one byte' flag */
-+ code_buf[code_buf_ptr++] = text_buf[r]; /* Send uncoded. */
-+ } else {
-+ code_buf[code_buf_ptr++] = match_position;
-+ code_buf[code_buf_ptr++] = (((match_position >> 4) & 0xf0)
-+ | (match_length - (THRESHOLD + 1))); /* Send position and
-+ length pair. Note match_length > THRESHOLD. */
-+ }
-+ if ((mask <<= 1) == 0) { /* Shift mask left one bit. */
-+ if ((op + code_buf_ptr) > dstend) {
-+ *dstlen = written; /* written contains bytes of complete compressed
-+ code */
-+ return -1;
-+ };
-+ for (i = 0; i < code_buf_ptr; *(op++) = code_buf[i++]); /* Send at most 8 units of */
-+ /* code together */
-+ written += code_buf_ptr;
-+ *srclen = read; /* this many bytes have been successfully compressed */
-+ code_buf[0] = 0; code_buf_ptr = mask = 1;
-+ }
-+ last_match_length = match_length;
-+ for (i = 0; (i < last_match_length) && (ip < srcend); i++) {
-+ c = *(ip++);
-+ DeleteNode(s); /* Delete old strings and */
-+ text_buf[s] = c; /* read new bytes */
-+ if (s < F - 1) text_buf[s + N] = c; /* If the position is
-+ near the end of buffer, extend the buffer to make
-+ string comparison easier. */
-+ s = (s + 1) & (N - 1); r = (r + 1) & (N - 1);
-+ /* Since this is a ring buffer, increment the position
-+ modulo N. */
-+ InsertNode(r); /* Register the string in text_buf[r..r+F-1] */
-+ }
-+ read += i;
-+ while (i++ < last_match_length) { /* After the end of text, */
-+ DeleteNode(s); /* no need to read, but */
-+ s = (s + 1) & (N - 1); r = (r + 1) & (N - 1);
-+ if (--len) InsertNode(r); /* buffer may not be empty. */
-+ }
-+ } while (len > 0); /* until length of string to be processed is zero */
-+ if (code_buf_ptr > 1) { /* Send remaining code. */
-+ if ((op + code_buf_ptr) > dstend) {
-+ *dstlen = written;
-+ return -1;
-+ }
-+ for (i = 0; i < code_buf_ptr; *(op++) = code_buf[i++]);
-+ written += code_buf_ptr;
-+ *srclen = read;
-+ }
-+ *dstlen = written;
-+ return 0;
-+}
-+
-+static int Decode(unsigned char *srcbuf, unsigned char *dstbuf, unsigned long srclen,
-+ unsigned long dstlen) /* Just the reverse of Encode(). */
-+{
-+ unsigned long i, r, c, j, k, flags;
-+ unsigned char *ip, *op;
-+ unsigned long written;
-+ unsigned long read;
-+ unsigned char *srcend = srcbuf + srclen;
-+ unsigned char *dstend = dstbuf + dstlen;
-+ read = written = 0;
-+ ip = srcbuf;
-+ op = dstbuf;
-+ for (i = 0; i < N - F; i++) text_buf[i] = ' ';
-+ r = N - F; flags = 0;
-+ for ( ; ; ) {
-+ if (((flags >>= 1) & 256) == 0) {
-+ if (ip >= srcend) return 0;
-+ c = *(ip++);
-+ flags = c | 0xff00; /* uses higher byte cleverly */
-+ } /* to count eight */
-+ if (flags & 1) {
-+ if (ip >= srcend) return 0;
-+ c = *(ip++);
-+ if (op >= dstend) return -1;
-+ *(op++) = text_buf[r++] = c; r &= (N - 1);
-+ } else {
-+ if ((ip + 2) > srcend) return 0;
-+ i = *(ip++);
-+ j = *(ip++);
-+ i |= ((j & 0xf0) << 4); j = (j & 0x0f) + THRESHOLD;
-+ if ((op + j + 1) > dstend) return -1;
-+ for (k = 0; k <= j; k++) {
-+ c = text_buf[(i + k) & (N - 1)];
-+ *(op++) = text_buf[r++] = c; r &= (N - 1);
-+ }
-+ }
-+ }
-+}
-+
-+/* interface to jffs2 bbc follows */
-+
-+#include "jffs2_bbc_framework.h"
-+
-+
-+#define JFFS2_BBC_LZSS_BLOCK_SIGN {0x27, 0x6f, 0x12, 0xc4}
-+
-+static int
-+jffs2_bbc_lzss_compressor_init (void);
-+
-+static void
-+jffs2_bbc_lzss_compressor_deinit (void);
-+
-+static int
-+jffs2_bbc_lzss_compress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long *sourcelen,
-+ unsigned long *dstlen);
-+
-+static int
-+jffs2_bbc_lzss_estimate (void *model, unsigned char *input,
-+ unsigned long sourcelen, unsigned long *dstlen,
-+ unsigned long *readtime, unsigned long *writetime);
-+
-+static int
-+jffs2_bbc_lzss_decompress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long sourcelen,
-+ unsigned long dstlen);
-+
-+static char *
-+jffs2_bbc_lzss_proc_info (void);
-+
-+static int
-+jffs2_bbc_lzss_proc_command (char *command);
-+
-+struct jffs2_bbc_compressor_type jffs2_bbc_lzss = {
-+ "lzss",
-+ 0,
-+ JFFS2_BBC_LZSS_BLOCK_SIGN,
-+ jffs2_bbc_lzss_compressor_init,
-+ NULL,
-+ NULL,
-+ jffs2_bbc_lzss_compressor_deinit,
-+ jffs2_bbc_lzss_compress,
-+ jffs2_bbc_lzss_estimate,
-+ jffs2_bbc_lzss_decompress,
-+ jffs2_bbc_lzss_proc_info,
-+ jffs2_bbc_lzss_proc_command
-+};
-+
-+static int
-+jffs2_bbc_lzss_compressor_init (void)
-+{
-+ return 0;
-+}
-+
-+static void
-+jffs2_bbc_lzss_compressor_deinit (void)
-+{
-+}
-+
-+static int
-+jffs2_bbc_lzss_compress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long *sourcelen,
-+ unsigned long *dstlen)
-+{
-+ int retval;
-+ unsigned long dst = *dstlen;
-+ *(output++) = jffs2_bbc_lzss.block_sign[0];
-+ *(output++) = jffs2_bbc_lzss.block_sign[1];
-+ dst -= 2;
-+ retval = Encode(input, output, sourcelen, &dst);
-+ dst += 2;
-+ *dstlen = dst;
-+ return retval;
-+}
-+
-+static int
-+jffs2_bbc_lzss_estimate (void *model, unsigned char *input,
-+ unsigned long sourcelen, unsigned long *dstlen,
-+ unsigned long *readtime, unsigned long *writetime)
-+{
-+ *dstlen = sourcelen * 60 / 100;
-+ *readtime = JFFS2_BBC_ZLIB_READ_TIME * 12 / 10;
-+ *writetime = JFFS2_BBC_ZLIB_WRITE_TIME * 3;
-+ return 0;
-+}
-+
-+static int
-+jffs2_bbc_lzss_decompress (void *model, unsigned char *input,
-+ unsigned char *output, unsigned long sourcelen,
-+ unsigned long dstlen)
-+{
-+ if ( ( *(input++) != (unsigned char)jffs2_bbc_lzss.block_sign[0] ) ||
-+ ( *(input++) != (unsigned char)jffs2_bbc_lzss.block_sign[1] )
-+ ) {
-+ return -1;
-+ } else {
-+ return Decode(input, output, sourcelen - 2, dstlen);
-+ }
-+}
-+
-+static char *
-+jffs2_bbc_lzss_proc_info (void)
-+{
-+ return "Lempel-Ziv-Storer-Szymanski compression module";
-+}
-+
-+static int
-+jffs2_bbc_lzss_proc_command (char *command)
-+{
-+ return 0;
-+}
-+
-+struct jffs2_bbc_compressor_type *
-+jffs2_bbc_lzss_init (int mode)
-+{
-+ if (jffs2_bbc_register_compressor (&jffs2_bbc_lzss) == 0)
-+ {
-+ return &jffs2_bbc_lzss;
-+ }
-+ else
-+ {
-+ return NULL;
-+ }
-+}
-+
-+void
-+jffs2_bbc_lzss_deinit (void)
-+{
-+ jffs2_bbc_unregister_compressor (&jffs2_bbc_lzss);
-+}
-diff -Nur linux-mips-cvs/fs/jffs2/linux-2.4.25.hpatch linux-mips/fs/jffs2/linux-2.4.25.hpatch
---- linux-mips-cvs/fs/jffs2/linux-2.4.25.hpatch 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/fs/jffs2/linux-2.4.25.hpatch 2005-02-07 05:08:34.000000000 +0100
-@@ -0,0 +1,97 @@
-+FMakefile
-+=BBC insertion
-+-COMPR_OBJS
-+iMakefile.bbc.inc
-++
-+I
-+?JFFS2_OBJS
-++ $(JFFS2_BBC_KERNEL_OBJS) \
-+
-+F../Config.in
-+=BBC insertion
-+-tristate 'Compressed ROM file system support' CONFIG_CRAMFS
-+iConfig.in.bbc.inc
-++
-+I
-+F../../Documentation/Configure.help
-+=BBC insertion
-+-JFFS stats available
-+iConfigure.help.bbc.inc
-++
-+I
-+Fcompr_zlib.c
-+=(de)compress->(de)compress2
-+-int zlib_compress(unsigned char *data_in, unsigned char *cpage_out,
-++int jffs2_zlib_compress2(unsigned char *data_in, unsigned char *cpage_out,
-+-void zlib_decompress(unsigned char *data_in, unsigned char *cpage_out,
-++void jffs2_zlib_decompress2(unsigned char *data_in, unsigned char *cpage_out,
-+?inflateEnd(&strm);
-+?}
-++
-++extern int jffs2_zlib_compress(unsigned char *data_in, unsigned char *cpage_out, __u32 * sourcelen, __u32 * dstlen);
-++extern void jffs2_zlib_decompress(unsigned char *data_in, unsigned char *cpage_out, __u32 srclen, __u32 destlen);
-++
-++int zlib_compress(unsigned char *data_in, unsigned char *cpage_out,
-++ __u32 *sourcelen, __u32 *dstlen)
-++{
-++ return jffs2_zlib_compress(data_in,cpage_out,sourcelen,dstlen);
-++}
-++
-++void zlib_decompress(unsigned char *data_in, unsigned char *cpage_out,
-++ __u32 srclen, __u32 destlen)
-++{
-++ jffs2_zlib_decompress(data_in,cpage_out,srclen,destlen);
-++}
-++
-+
-+Ffile.c
-+=set_act_sb before write
-+-#include
-++#include "jffs2_bbc_framework.h" /**BBC**/
-+I
-+?int jffs2_commit_write
-+-jffs2_compress(
-++ jffs2_bbc_model_set_act_sb(c); /**BBC**/
-+I
-+
-+Fgc.c
-+=set_act_sb before write
-+-#include
-++#include "jffs2_bbc_framework.h" /**BBC**/
-+I
-+?int jffs2_garbage_collect_dnode(
-+-jffs2_compress(
-++ jffs2_bbc_model_set_act_sb(c); /**BBC**/
-+I
-+
-+Fread.c
-+=set_act_sb before read
-+-#include
-++#include "jffs2_bbc_framework.h" /**BBC**/
-+I
-+?int jffs2_read_dnode(
-+-jffs2_decompress(
-++ jffs2_bbc_model_set_act_sb(c); /**BBC**/
-+I
-+
-+Fsuper.c
-+=init, load_model
-+-#include
-++#include "jffs2_bbc_fs.h" /**BBC**/
-+I
-+?struct super_block *jffs2_read_super(
-+-return sb;
-++ jffs2_bbc_load_model(sb); /**BBC**/
-+I
-+?void jffs2_put_super
-+?c = JFFS2_SB_INFO
-++ jffs2_bbc_unload_model(sb); /**BBC**/
-+?init_jffs2_fs(void)
-+?int ret;
-++
-++ jffs2_bbc_proc_init(); /**BBC**/
-++
-+?exit_jffs2_fs(void)
-+?{
-++ jffs2_bbc_proc_deinit(); /**BBC**/
-++
-diff -Nur linux-mips-cvs/fs/jffs2/read.c linux-mips/fs/jffs2/read.c
---- linux-mips-cvs/fs/jffs2/read.c 2003-11-17 02:07:44.000000000 +0100
-+++ linux-mips/fs/jffs2/read.c 2005-02-07 05:08:35.000000000 +0100
-@@ -35,6 +35,7 @@
- *
- */
-
-+#include "jffs2_bbc_framework.h" /**BBC**/
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/jffs2.h>
-@@ -140,6 +141,7 @@
- D2(printk(KERN_DEBUG "Data CRC matches calculated CRC %08x\n", crc));
- if (ri->compr != JFFS2_COMPR_NONE) {
- D2(printk(KERN_DEBUG "Decompress %d bytes from %p to %d bytes at %p\n", ri->csize, readbuf, ri->dsize, decomprbuf));
-+ jffs2_bbc_model_set_act_sb(c); /**BBC**/
- ret = jffs2_decompress(ri->compr, readbuf, decomprbuf, ri->csize, ri->dsize);
- if (ret) {
- printk(KERN_WARNING "Error: jffs2_decompress returned %d\n", ret);
-diff -Nur linux-mips-cvs/fs/jffs2/super.c linux-mips/fs/jffs2/super.c
---- linux-mips-cvs/fs/jffs2/super.c 2003-01-11 18:53:17.000000000 +0100
-+++ linux-mips/fs/jffs2/super.c 2005-02-07 05:08:35.000000000 +0100
-@@ -35,6 +35,7 @@
- *
- */
-
-+#include "jffs2_bbc_fs.h" /**BBC**/
- #include <linux/config.h>
- #include <linux/kernel.h>
- #include <linux/module.h>
-@@ -272,6 +273,7 @@
- sb->s_magic = JFFS2_SUPER_MAGIC;
- if (!(sb->s_flags & MS_RDONLY))
- jffs2_start_garbage_collect_thread(c);
-+ jffs2_bbc_load_model(sb); /**BBC**/
- return sb;
-
- out_root_i:
-@@ -288,6 +290,7 @@
- void jffs2_put_super (struct super_block *sb)
- {
- struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
-+ jffs2_bbc_unload_model(sb); /**BBC**/
-
- D2(printk(KERN_DEBUG "jffs2: jffs2_put_super()\n"));
-
-@@ -344,6 +347,9 @@
- {
- int ret;
-
-+ jffs2_bbc_proc_init(); /**BBC**/
-+
-+
- printk(KERN_NOTICE "JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications AB.\n");
-
- #ifdef JFFS2_OUT_OF_KERNEL
-@@ -388,6 +394,8 @@
-
- static void __exit exit_jffs2_fs(void)
- {
-+ jffs2_bbc_proc_deinit(); /**BBC**/
-+
- jffs2_destroy_slab_caches();
- jffs2_zlib_exit();
- unregister_filesystem(&jffs2_fs_type);
diff --git a/openwrt/target/linux/generic-2.4/patches/004-exec_pagesize.patch b/openwrt/target/linux/generic-2.4/patches/004-exec_pagesize.patch
deleted file mode 100644
index a7b1d04064..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/004-exec_pagesize.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- linux.old/include/asm-mips/param.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux.dev/include/asm-mips/param.h 2005-05-30 02:42:06.000000000 +0200
-@@ -55,7 +55,7 @@
- #endif /* defined(__KERNEL__) */
- #endif /* defined(HZ) */
-
--#define EXEC_PAGESIZE 65536
-+#define EXEC_PAGESIZE 4096
-
- #ifndef NGROUPS
- #define NGROUPS 32
diff --git a/openwrt/target/linux/generic-2.4/patches/005-mtd_flashtypes.patch b/openwrt/target/linux/generic-2.4/patches/005-mtd_flashtypes.patch
deleted file mode 100644
index 9115b9f611..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/005-mtd_flashtypes.patch
+++ /dev/null
@@ -1,925 +0,0 @@
-diff -Nur linux-2.4.30/drivers/mtd/chips/Config.in linux-2.4.30.openwrt/drivers/mtd/chips/Config.in
---- linux-2.4.30/drivers/mtd/chips/Config.in 2003-06-13 16:51:34.000000000 +0200
-+++ linux-2.4.30.openwrt/drivers/mtd/chips/Config.in 2005-06-28 11:26:26.000000000 +0200
-@@ -45,6 +45,7 @@
- dep_tristate ' Support for Intel/Sharp flash chips' CONFIG_MTD_CFI_INTELEXT $CONFIG_MTD_GEN_PROBE
- dep_tristate ' Support for AMD/Fujitsu flash chips' CONFIG_MTD_CFI_AMDSTD $CONFIG_MTD_GEN_PROBE
- dep_tristate ' Support for ST (Advanced Architecture) flash chips' CONFIG_MTD_CFI_STAA $CONFIG_MTD_GEN_PROBE
-+dep_tristate ' Support for SST flash chips' CONFIG_MTD_CFI_SSTSTD $CONFIG_MTD_GEN_PROBE
-
- dep_tristate ' Support for RAM chips in bus mapping' CONFIG_MTD_RAM $CONFIG_MTD
- dep_tristate ' Support for ROM chips in bus mapping' CONFIG_MTD_ROM $CONFIG_MTD
-diff -Nur linux-2.4.30/drivers/mtd/chips/Makefile linux-2.4.30.openwrt/drivers/mtd/chips/Makefile
---- linux-2.4.30/drivers/mtd/chips/Makefile 2003-06-13 16:51:34.000000000 +0200
-+++ linux-2.4.30.openwrt/drivers/mtd/chips/Makefile 2005-06-28 11:26:26.000000000 +0200
-@@ -18,6 +18,7 @@
- obj-$(CONFIG_MTD_AMDSTD) += amd_flash.o
- obj-$(CONFIG_MTD_CFI) += cfi_probe.o
- obj-$(CONFIG_MTD_CFI_STAA) += cfi_cmdset_0020.o
-+obj-$(CONFIG_MTD_CFI_SSTSTD) += cfi_cmdset_0701.o
- obj-$(CONFIG_MTD_CFI_AMDSTD) += cfi_cmdset_0002.o
- obj-$(CONFIG_MTD_CFI_INTELEXT) += cfi_cmdset_0001.o
- obj-$(CONFIG_MTD_GEN_PROBE) += gen_probe.o
-diff -Nur linux-2.4.30/drivers/mtd/chips/cfi_cmdset_0701.c linux-2.4.30.openwrt/drivers/mtd/chips/cfi_cmdset_0701.c
---- linux-2.4.30/drivers/mtd/chips/cfi_cmdset_0701.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.30.openwrt/drivers/mtd/chips/cfi_cmdset_0701.c 2005-06-28 11:26:26.000000000 +0200
-@@ -0,0 +1,855 @@
-+/*
-+ * Common Flash Interface support:
-+ * SST Standard Vendor Command Set (ID 0x0701)
-+ *
-+ * Copyright (C) 2000 Crossnet Co. <info@crossnet.co.jp>
-+ *
-+ * 2_by_8 routines added by Simon Munton
-+ *
-+ * This code is GPL
-+ *
-+ * $Id: cfi_cmdset_0701.c,v 1.1 2005/03/16 13:50:00 wbx Exp $
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <asm/io.h>
-+#include <asm/byteorder.h>
-+
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/delay.h>
-+#include <linux/interrupt.h>
-+#include <linux/mtd/map.h>
-+#include <linux/mtd/cfi.h>
-+
-+static int cfi_sststd_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
-+static int cfi_sststd_write(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
-+static int cfi_sststd_erase_onesize(struct mtd_info *, struct erase_info *);
-+static int cfi_sststd_erase_varsize(struct mtd_info *, struct erase_info *);
-+static void cfi_sststd_sync (struct mtd_info *);
-+static int cfi_sststd_suspend (struct mtd_info *);
-+static void cfi_sststd_resume (struct mtd_info *);
-+
-+static void cfi_sststd_destroy(struct mtd_info *);
-+
-+struct mtd_info *cfi_cmdset_0701(struct map_info *, int);
-+static struct mtd_info *cfi_sststd_setup (struct map_info *);
-+
-+
-+static struct mtd_chip_driver cfi_sststd_chipdrv = {
-+ probe: NULL, /* Not usable directly */
-+ destroy: cfi_sststd_destroy,
-+ name: "cfi_cmdset_0701",
-+ module: THIS_MODULE
-+};
-+
-+struct mtd_info *cfi_cmdset_0701(struct map_info *map, int primary)
-+{
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ int ofs_factor = cfi->interleave * cfi->device_type;
-+ int i;
-+ __u8 major, minor;
-+ __u32 base = cfi->chips[0].start;
-+
-+ if (cfi->cfi_mode==1){
-+ __u16 adr = primary?cfi->cfiq->P_ADR:cfi->cfiq->A_ADR;
-+
-+ cfi_send_gen_cmd(0xAA, 0x5555, base, map, cfi, cfi->device_type, NULL);
-+ cfi_send_gen_cmd(0x55, 0x2AAA, base, map, cfi, cfi->device_type, NULL);
-+ cfi_send_gen_cmd(0x98, 0x5555, base, map, cfi, cfi->device_type, NULL);
-+
-+ major = cfi_read_query(map, base + (adr+3)*ofs_factor);
-+ minor = cfi_read_query(map, base + (adr+4)*ofs_factor);
-+
-+ printk(" SST Query Table v%c.%c at 0x%4.4X\n",
-+ major, minor, adr);
-+ cfi_send_gen_cmd(0xf0, 0x5555, base, map, cfi, cfi->device_type, NULL);
-+
-+ cfi_send_gen_cmd(0xAA, 0x5555, base, map, cfi, cfi->device_type, NULL);
-+ cfi_send_gen_cmd(0x55, 0x2AAA, base, map, cfi, cfi->device_type, NULL);
-+ cfi_send_gen_cmd(0x90, 0x5555, base, map, cfi, cfi->device_type, NULL);
-+ cfi->mfr = cfi_read_query(map, base);
-+ cfi->id = cfi_read_query(map, base + ofs_factor);
-+
-+ cfi_send_gen_cmd(0xAA, 0x5555, base, map, cfi, cfi->device_type, NULL);
-+ cfi_send_gen_cmd(0x55, 0x2AAA, base, map, cfi, cfi->device_type, NULL);
-+ cfi_send_gen_cmd(0x98, 0x5555, base, map, cfi, cfi->device_type, NULL);
-+
-+ switch (cfi->device_type) {
-+ case CFI_DEVICETYPE_X16:
-+ cfi->addr_unlock1 = 0x5555;
-+ cfi->addr_unlock2 = 0x2AAA;
-+ break;
-+ default:
-+ printk(KERN_NOTICE "Eep. Unknown cfi_cmdset_0701 device type %d\n", cfi->device_type);
-+ return NULL;
-+ }
-+ } /* CFI mode */
-+
-+ for (i=0; i< cfi->numchips; i++) {
-+ cfi->chips[i].word_write_time = 1<<cfi->cfiq->WordWriteTimeoutTyp;
-+ cfi->chips[i].buffer_write_time = 1<<cfi->cfiq->BufWriteTimeoutTyp;
-+ cfi->chips[i].erase_time = 1<<cfi->cfiq->BlockEraseTimeoutTyp;
-+ }
-+
-+ map->fldrv = &cfi_sststd_chipdrv;
-+ MOD_INC_USE_COUNT;
-+
-+ cfi_send_gen_cmd(0xf0, 0x5555, base, map, cfi, cfi->device_type, NULL);
-+ return cfi_sststd_setup(map);
-+}
-+
-+static struct mtd_info *cfi_sststd_setup(struct map_info *map)
-+{
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ struct mtd_info *mtd;
-+ unsigned long devsize = (1<<cfi->cfiq->DevSize) * cfi->interleave;
-+
-+ mtd = kmalloc(sizeof(*mtd), GFP_KERNEL);
-+ printk("number of %s chips: %d\n", (cfi->cfi_mode)?"JEDEC":"CFI",cfi->numchips);
-+
-+ if (!mtd) {
-+ printk("Failed to allocate memory for MTD device\n");
-+ kfree(cfi->cmdset_priv);
-+ return NULL;
-+ }
-+
-+ memset(mtd, 0, sizeof(*mtd));
-+ mtd->priv = map;
-+ mtd->type = MTD_NORFLASH;
-+ /* Also select the correct geometry setup too */
-+ mtd->size = devsize * cfi->numchips;
-+
-+ if (cfi->cfiq->NumEraseRegions == 1) {
-+ /* No need to muck about with multiple erase sizes */
-+ mtd->erasesize = ((cfi->cfiq->EraseRegionInfo[0] >> 8) & ~0xff) * cfi->interleave;
-+ } else {
-+ unsigned long offset = 0;
-+ int i,j;
-+
-+ mtd->numeraseregions = cfi->cfiq->NumEraseRegions * cfi->numchips;
-+ mtd->eraseregions = kmalloc(sizeof(struct mtd_erase_region_info) * mtd->numeraseregions, GFP_KERNEL);
-+ if (!mtd->eraseregions) {
-+ printk("Failed to allocate memory for MTD erase region info\n");
-+ kfree(cfi->cmdset_priv);
-+ return NULL;
-+ }
-+
-+ for (i=0; i<cfi->cfiq->NumEraseRegions; i++) {
-+ unsigned long ernum, ersize;
-+ ersize = ((cfi->cfiq->EraseRegionInfo[i] >> 8) & ~0xff) * cfi->interleave;
-+ ernum = (cfi->cfiq->EraseRegionInfo[i] & 0xffff) + 1;
-+
-+ if (mtd->erasesize < ersize) {
-+ mtd->erasesize = ersize;
-+ }
-+ for (j=0; j<cfi->numchips; j++) {
-+ mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].offset = (j*devsize)+offset;
-+ mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].erasesize = ersize;
-+ mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].numblocks = ernum;
-+ }
-+ offset += (ersize * ernum);
-+ }
-+
-+ // debug
-+ for (i=0; i<mtd->numeraseregions;i++){
-+ printk("%d: offset=0x%x,size=0x%x,blocks=%d\n",
-+ i,mtd->eraseregions[i].offset,
-+ mtd->eraseregions[i].erasesize,
-+ mtd->eraseregions[i].numblocks);
-+ }
-+ }
-+
-+ switch (CFIDEV_BUSWIDTH)
-+ {
-+ case 1:
-+ case 2:
-+ case 4:
-+ if (mtd->numeraseregions > 1)
-+ mtd->erase = cfi_sststd_erase_varsize;
-+ else
-+ mtd->erase = cfi_sststd_erase_onesize;
-+ mtd->read = cfi_sststd_read;
-+ mtd->write = cfi_sststd_write;
-+ break;
-+
-+ default:
-+ printk("Unsupported buswidth\n");
-+ kfree(mtd);
-+ kfree(cfi->cmdset_priv);
-+ return NULL;
-+ break;
-+ }
-+ mtd->sync = cfi_sststd_sync;
-+ mtd->suspend = cfi_sststd_suspend;
-+ mtd->resume = cfi_sststd_resume;
-+ mtd->flags = MTD_CAP_NORFLASH;
-+ map->fldrv = &cfi_sststd_chipdrv;
-+ mtd->name = map->name;
-+ MOD_INC_USE_COUNT;
-+ return mtd;
-+}
-+
-+static inline int do_read_onechip(struct map_info *map, struct flchip *chip, loff_t adr, size_t len, u_char *buf)
-+{
-+ DECLARE_WAITQUEUE(wait, current);
-+ unsigned long timeo = jiffies + HZ;
-+
-+ retry:
-+ cfi_spin_lock(chip->mutex);
-+
-+ if (chip->state != FL_READY){
-+ printk("Waiting for chip to read, status = %d\n", chip->state);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ add_wait_queue(&chip->wq, &wait);
-+
-+ cfi_spin_unlock(chip->mutex);
-+
-+ schedule();
-+ remove_wait_queue(&chip->wq, &wait);
-+ timeo = jiffies + HZ;
-+
-+ goto retry;
-+ }
-+
-+ adr += chip->start;
-+
-+ chip->state = FL_READY;
-+
-+ map->copy_from(map, buf, adr, len);
-+
-+ wake_up(&chip->wq);
-+ cfi_spin_unlock(chip->mutex);
-+
-+ return 0;
-+}
-+
-+static int cfi_sststd_read (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ unsigned long ofs;
-+ int chipnum;
-+ int ret = 0;
-+
-+ /* ofs: offset within the first chip that the first read should start */
-+
-+ chipnum = (from >> cfi->chipshift);
-+ ofs = from - (chipnum << cfi->chipshift);
-+
-+
-+ *retlen = 0;
-+
-+ while (len) {
-+ unsigned long thislen;
-+
-+ if (chipnum >= cfi->numchips)
-+ break;
-+
-+ if ((len + ofs -1) >> cfi->chipshift)
-+ thislen = (1<<cfi->chipshift) - ofs;
-+ else
-+ thislen = len;
-+
-+ ret = do_read_onechip(map, &cfi->chips[chipnum], ofs, thislen, buf);
-+ if (ret)
-+ break;
-+
-+ *retlen += thislen;
-+ len -= thislen;
-+ buf += thislen;
-+
-+ ofs = 0;
-+ chipnum++;
-+ }
-+ return ret;
-+}
-+
-+static int do_write_oneword(struct map_info *map, struct flchip *chip, unsigned long adr, __u32 datum, int fast)
-+{
-+ unsigned long timeo = jiffies + HZ;
-+ unsigned int Last[4];
-+ unsigned long Count = 0;
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ DECLARE_WAITQUEUE(wait, current);
-+ int ret = 0;
-+
-+ retry:
-+ cfi_spin_lock(chip->mutex);
-+
-+ if (chip->state != FL_READY){
-+ printk("Waiting for chip to write, status = %d\n", chip->state);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ add_wait_queue(&chip->wq, &wait);
-+
-+ cfi_spin_unlock(chip->mutex);
-+
-+ schedule();
-+ remove_wait_queue(&chip->wq, &wait);
-+ printk("Wake up to write:\n");
-+ timeo = jiffies + HZ;
-+
-+ goto retry;
-+ }
-+
-+ chip->state = FL_WRITING;
-+
-+ adr += chip->start;
-+ ENABLE_VPP(map);
-+ cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, CFI_DEVICETYPE_X16, NULL);
-+ cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, CFI_DEVICETYPE_X16, NULL);
-+ cfi_send_gen_cmd(0xA0, cfi->addr_unlock1, chip->start, map, cfi, CFI_DEVICETYPE_X16, NULL);
-+
-+ cfi_write(map, datum, adr);
-+
-+ cfi_spin_unlock(chip->mutex);
-+ cfi_udelay(chip->word_write_time);
-+ cfi_spin_lock(chip->mutex);
-+
-+ Last[0] = cfi_read(map, adr);
-+ // printk("Last[0] is %x\n", Last[0]);
-+ Last[1] = cfi_read(map, adr);
-+ // printk("Last[1] is %x\n", Last[1]);
-+ Last[2] = cfi_read(map, adr);
-+ // printk("Last[2] is %x\n", Last[2]);
-+
-+ for (Count = 3; Last[(Count - 1) % 4] != Last[(Count - 2) % 4] && Count < 10000; Count++){
-+ cfi_spin_unlock(chip->mutex);
-+ cfi_udelay(10);
-+ cfi_spin_lock(chip->mutex);
-+
-+ Last[Count % 4] = cfi_read(map, adr);
-+ // printk("Last[%d%%4] is %x\n", Count, Last[Count%4]);
-+ }
-+
-+ if (Last[(Count - 1) % 4] != datum){
-+ printk("Last[%ld] is %x, datum is %x\n",(Count - 1) % 4,Last[(Count - 1) % 4],datum);
-+ cfi_send_gen_cmd(0xF0, 0, chip->start, map, cfi, cfi->device_type, NULL);
-+ DISABLE_VPP(map);
-+ ret = -EIO;
-+ }
-+ DISABLE_VPP(map);
-+ chip->state = FL_READY;
-+ wake_up(&chip->wq);
-+ cfi_spin_unlock(chip->mutex);
-+
-+ return ret;
-+}
-+
-+static int cfi_sststd_write (struct mtd_info *mtd, loff_t to , size_t len, size_t *retlen, const u_char *buf)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ int ret = 0;
-+ int chipnum;
-+ unsigned long ofs, chipstart;
-+
-+ *retlen = 0;
-+ if (!len)
-+ return 0;
-+
-+ chipnum = to >> cfi->chipshift;
-+ ofs = to - (chipnum << cfi->chipshift);
-+ chipstart = cfi->chips[chipnum].start;
-+
-+ /* If it's not bus-aligned, do the first byte write */
-+ if (ofs & (CFIDEV_BUSWIDTH-1)) {
-+ unsigned long bus_ofs = ofs & ~(CFIDEV_BUSWIDTH-1);
-+ int i = ofs - bus_ofs;
-+ int n = 0;
-+ u_char tmp_buf[4];
-+ __u32 datum;
-+
-+ map->copy_from(map, tmp_buf, bus_ofs + cfi->chips[chipnum].start, CFIDEV_BUSWIDTH);
-+ while (len && i < CFIDEV_BUSWIDTH)
-+ tmp_buf[i++] = buf[n++], len--;
-+
-+ if (cfi_buswidth_is_2()) {
-+ datum = *(__u16*)tmp_buf;
-+ } else if (cfi_buswidth_is_4()) {
-+ datum = *(__u32*)tmp_buf;
-+ } else {
-+ return -EINVAL; /* should never happen, but be safe */
-+ }
-+
-+ ret = do_write_oneword(map, &cfi->chips[chipnum],
-+ bus_ofs, datum, 0);
-+ if (ret)
-+ return ret;
-+
-+ ofs += n;
-+ buf += n;
-+ (*retlen) += n;
-+
-+ if (ofs >> cfi->chipshift) {
-+ chipnum ++;
-+ ofs = 0;
-+ if (chipnum == cfi->numchips)
-+ return 0;
-+ }
-+ }
-+
-+ /* We are now aligned, write as much as possible */
-+ while(len >= CFIDEV_BUSWIDTH) {
-+ __u32 datum;
-+
-+ if (cfi_buswidth_is_1()) {
-+ datum = *(__u8*)buf;
-+ } else if (cfi_buswidth_is_2()) {
-+ datum = *(__u16*)buf;
-+ } else if (cfi_buswidth_is_4()) {
-+ datum = *(__u32*)buf;
-+ } else {
-+ return -EINVAL;
-+ }
-+ ret = do_write_oneword(map, &cfi->chips[chipnum],
-+ ofs, datum, cfi->fast_prog);
-+ if (ret) {
-+ return ret;
-+ }
-+
-+ ofs += CFIDEV_BUSWIDTH;
-+ buf += CFIDEV_BUSWIDTH;
-+ (*retlen) += CFIDEV_BUSWIDTH;
-+ len -= CFIDEV_BUSWIDTH;
-+
-+ if (ofs >> cfi->chipshift) {
-+ chipnum ++;
-+ ofs = 0;
-+ if (chipnum == cfi->numchips)
-+ return 0;
-+ chipstart = cfi->chips[chipnum].start;
-+ }
-+ }
-+
-+ if (len & (CFIDEV_BUSWIDTH-1)) {
-+ int i = 0, n = 0;
-+ u_char tmp_buf[4];
-+ __u32 datum;
-+
-+ map->copy_from(map, tmp_buf, ofs + cfi->chips[chipnum].start, CFIDEV_BUSWIDTH);
-+ while (len--)
-+ tmp_buf[i++] = buf[n++];
-+
-+ if (cfi_buswidth_is_2()) {
-+ datum = *(__u16*)tmp_buf;
-+ } else if (cfi_buswidth_is_4()) {
-+ datum = *(__u32*)tmp_buf;
-+ } else {
-+ return -EINVAL; /* should never happen, but be safe */
-+ }
-+
-+ ret = do_write_oneword(map, &cfi->chips[chipnum],
-+ ofs, datum, 0);
-+ if (ret)
-+ return ret;
-+
-+ (*retlen) += n;
-+ }
-+
-+ return 0;
-+}
-+
-+static inline int do_erase_oneblock(struct map_info *map, struct flchip *chip, unsigned long adr)
-+{
-+ unsigned int status;
-+ unsigned long timeo = jiffies + HZ;
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ unsigned int rdy_mask;
-+ DECLARE_WAITQUEUE(wait, current);
-+
-+ retry:
-+ cfi_spin_lock(chip->mutex);
-+
-+ if (chip->state != FL_READY){
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ add_wait_queue(&chip->wq, &wait);
-+
-+ cfi_spin_unlock(chip->mutex);
-+
-+ schedule();
-+ remove_wait_queue(&chip->wq, &wait);
-+ timeo = jiffies + HZ;
-+
-+ goto retry;
-+ }
-+
-+ chip->state = FL_ERASING;
-+
-+ adr += chip->start;
-+ ENABLE_VPP(map);
-+ cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, CFI_DEVICETYPE_X16, NULL);
-+ cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, CFI_DEVICETYPE_X16, NULL);
-+ cfi_send_gen_cmd(0x80, cfi->addr_unlock1, chip->start, map, cfi, CFI_DEVICETYPE_X16, NULL);
-+ cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, CFI_DEVICETYPE_X16, NULL);
-+ cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, CFI_DEVICETYPE_X16, NULL);
-+ cfi_write(map, CMD(0x30), adr);
-+
-+ timeo = jiffies + (HZ*20);
-+
-+ cfi_spin_unlock(chip->mutex);
-+ schedule_timeout(HZ);
-+ cfi_spin_lock(chip->mutex);
-+
-+ rdy_mask = CMD(0x80);
-+
-+ /* Once the state machine's known to be working I'll do that */
-+
-+ while ( ( (status = cfi_read(map,adr)) & rdy_mask ) != rdy_mask ) {
-+ static int z=0;
-+
-+ if (chip->state != FL_ERASING) {
-+ /* Someone's suspended the erase. Sleep */
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ add_wait_queue(&chip->wq, &wait);
-+
-+ cfi_spin_unlock(chip->mutex);
-+ printk("erase suspended. Sleeping\n");
-+
-+ schedule();
-+ remove_wait_queue(&chip->wq, &wait);
-+ timeo = jiffies + (HZ*2);
-+ cfi_spin_lock(chip->mutex);
-+ continue;
-+ }
-+
-+ /* OK Still waiting */
-+ if (time_after(jiffies, timeo)) {
-+ chip->state = FL_READY;
-+ cfi_spin_unlock(chip->mutex);
-+ printk("waiting for erase to complete timed out.");
-+ DISABLE_VPP(map);
-+ return -EIO;
-+ }
-+
-+ /* Latency issues. Drop the lock, wait a while and retry */
-+ cfi_spin_unlock(chip->mutex);
-+
-+ z++;
-+ if ( 0 && !(z % 100 ))
-+ printk("chip not ready yet after erase. looping\n");
-+
-+ cfi_udelay(1);
-+
-+ cfi_spin_lock(chip->mutex);
-+ continue;
-+ }
-+
-+ /* Done and happy. */
-+ DISABLE_VPP(map);
-+ chip->state = FL_READY;
-+ wake_up(&chip->wq);
-+ cfi_spin_unlock(chip->mutex);
-+ return 0;
-+}
-+
-+static int cfi_sststd_erase_varsize(struct mtd_info *mtd, struct erase_info *instr)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ unsigned long adr, len;
-+ int chipnum, ret = 0;
-+ int i, first;
-+ struct mtd_erase_region_info *regions = mtd->eraseregions;
-+
-+ if (instr->addr > mtd->size)
-+ return -EINVAL;
-+
-+ if ((instr->len + instr->addr) > mtd->size)
-+ return -EINVAL;
-+
-+ /* Check that both start and end of the requested erase are
-+ * aligned with the erasesize at the appropriate addresses.
-+ */
-+
-+ i = 0;
-+
-+ /* Skip all erase regions which are ended before the start of
-+ the requested erase. Actually, to save on the calculations,
-+ we skip to the first erase region which starts after the
-+ start of the requested erase, and then go back one.
-+ */
-+
-+ while (i < mtd->numeraseregions && instr->addr >= regions[i].offset)
-+ i++;
-+ i--;
-+
-+ /* OK, now i is pointing at the erase region in which this
-+ erase request starts. Check the start of the requested
-+ erase range is aligned with the erase size which is in
-+ effect here.
-+ */
-+
-+ if (instr->addr & (regions[i].erasesize-1))
-+ return -EINVAL;
-+
-+ /* Remember the erase region we start on */
-+ first = i;
-+
-+ /* Next, check that the end of the requested erase is aligned
-+ * with the erase region at that address.
-+ */
-+
-+ while (i<mtd->numeraseregions && (instr->addr + instr->len) >= regions[i].offset)
-+ i++;
-+
-+ /* As before, drop back one to point at the region in which
-+ the address actually falls
-+ */
-+ i--;
-+
-+ if ((instr->addr + instr->len) & (regions[i].erasesize-1))
-+ return -EINVAL;
-+
-+ chipnum = instr->addr >> cfi->chipshift;
-+ adr = instr->addr - (chipnum << cfi->chipshift);
-+ len = instr->len;
-+
-+ i=first;
-+
-+ while(len) {
-+ ret = do_erase_oneblock(map, &cfi->chips[chipnum], adr);
-+
-+ if (ret)
-+ return ret;
-+
-+ adr += regions[i].erasesize;
-+ len -= regions[i].erasesize;
-+
-+ if (adr % (1<< cfi->chipshift) == ((regions[i].offset + (regions[i].erasesize * regions[i].numblocks)) %( 1<< cfi->chipshift)))
-+ i++;
-+
-+ if (adr >> cfi->chipshift) {
-+ adr = 0;
-+ chipnum++;
-+
-+ if (chipnum >= cfi->numchips)
-+ break;
-+ }
-+ }
-+
-+ instr->state = MTD_ERASE_DONE;
-+ if (instr->callback)
-+ instr->callback(instr);
-+
-+ return 0;
-+}
-+
-+static int cfi_sststd_erase_onesize(struct mtd_info *mtd, struct erase_info *instr)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ unsigned long adr, len;
-+ int chipnum, ret = 0;
-+
-+ if (instr->addr & (mtd->erasesize - 1))
-+ return -EINVAL;
-+
-+ if (instr->len & (mtd->erasesize -1))
-+ return -EINVAL;
-+
-+ if ((instr->len + instr->addr) > mtd->size)
-+ return -EINVAL;
-+
-+ chipnum = instr->addr >> cfi->chipshift;
-+ adr = instr->addr - (chipnum << cfi->chipshift);
-+ len = instr->len;
-+
-+ while(len) {
-+ ret = do_erase_oneblock(map, &cfi->chips[chipnum], adr);
-+
-+ if (ret)
-+ return ret;
-+
-+ adr += mtd->erasesize;
-+ len -= mtd->erasesize;
-+
-+ if (adr >> cfi->chipshift) {
-+ adr = 0;
-+ chipnum++;
-+
-+ if (chipnum >= cfi->numchips)
-+ break;
-+ }
-+ }
-+
-+ instr->state = MTD_ERASE_DONE;
-+ if (instr->callback)
-+ instr->callback(instr);
-+
-+ return 0;
-+}
-+
-+static void cfi_sststd_sync (struct mtd_info *mtd)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ int i;
-+ struct flchip *chip;
-+ int ret = 0;
-+ DECLARE_WAITQUEUE(wait, current);
-+
-+ for (i=0; !ret && i<cfi->numchips; i++) {
-+ chip = &cfi->chips[i];
-+
-+ retry:
-+ cfi_spin_lock(chip->mutex);
-+
-+ switch(chip->state) {
-+ case FL_READY:
-+ case FL_STATUS:
-+ case FL_CFI_QUERY:
-+ case FL_JEDEC_QUERY:
-+ chip->oldstate = chip->state;
-+ chip->state = FL_SYNCING;
-+ /* No need to wake_up() on this state change -
-+ * as the whole point is that nobody can do anything
-+ * with the chip now anyway.
-+ */
-+ case FL_SYNCING:
-+ cfi_spin_unlock(chip->mutex);
-+ break;
-+
-+ default:
-+ /* Not an idle state */
-+ add_wait_queue(&chip->wq, &wait);
-+
-+ cfi_spin_unlock(chip->mutex);
-+
-+ schedule();
-+
-+ remove_wait_queue(&chip->wq, &wait);
-+
-+ goto retry;
-+ }
-+ }
-+
-+ /* Unlock the chips again */
-+
-+ for (i--; i >=0; i--) {
-+ chip = &cfi->chips[i];
-+
-+ cfi_spin_lock(chip->mutex);
-+
-+ if (chip->state == FL_SYNCING) {
-+ chip->state = chip->oldstate;
-+ wake_up(&chip->wq);
-+ }
-+ cfi_spin_unlock(chip->mutex);
-+ }
-+}
-+
-+
-+static int cfi_sststd_suspend(struct mtd_info *mtd)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ int i;
-+ struct flchip *chip;
-+ int ret = 0;
-+//printk("suspend\n");
-+
-+ for (i=0; !ret && i<cfi->numchips; i++) {
-+ chip = &cfi->chips[i];
-+
-+ cfi_spin_lock(chip->mutex);
-+
-+ switch(chip->state) {
-+ case FL_READY:
-+ case FL_STATUS:
-+ case FL_CFI_QUERY:
-+ case FL_JEDEC_QUERY:
-+ chip->oldstate = chip->state;
-+ chip->state = FL_PM_SUSPENDED;
-+ /* No need to wake_up() on this state change -
-+ * as the whole point is that nobody can do anything
-+ * with the chip now anyway.
-+ */
-+ case FL_PM_SUSPENDED:
-+ break;
-+
-+ default:
-+ ret = -EAGAIN;
-+ break;
-+ }
-+ cfi_spin_unlock(chip->mutex);
-+ }
-+
-+ /* Unlock the chips again */
-+
-+ if (ret) {
-+ for (i--; i >=0; i--) {
-+ chip = &cfi->chips[i];
-+
-+ cfi_spin_lock(chip->mutex);
-+
-+ if (chip->state == FL_PM_SUSPENDED) {
-+ chip->state = chip->oldstate;
-+ wake_up(&chip->wq);
-+ }
-+ cfi_spin_unlock(chip->mutex);
-+ }
-+ }
-+
-+ return ret;
-+}
-+
-+static void cfi_sststd_resume(struct mtd_info *mtd)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ int i;
-+ struct flchip *chip;
-+//printk("resume\n");
-+
-+ for (i=0; i<cfi->numchips; i++) {
-+
-+ chip = &cfi->chips[i];
-+
-+ cfi_spin_lock(chip->mutex);
-+
-+ if (chip->state == FL_PM_SUSPENDED) {
-+ chip->state = FL_READY;
-+ cfi_write(map, CMD(0xF0), chip->start);
-+ wake_up(&chip->wq);
-+ }
-+ else
-+ printk("Argh. Chip not in PM_SUSPENDED state upon resume()\n");
-+
-+ cfi_spin_unlock(chip->mutex);
-+ }
-+}
-+
-+static void cfi_sststd_destroy(struct mtd_info *mtd)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ kfree(cfi->cmdset_priv);
-+ kfree(cfi);
-+}
-+
-+#if LINUX_VERSION_CODE < 0x20212 && defined(MODULE)
-+#define cfi_sststd_init init_module
-+#define cfi_sststd_exit cleanup_module
-+#endif
-+
-+static char im_name[]="cfi_cmdset_0701";
-+
-+mod_init_t cfi_sststd_init(void)
-+{
-+ inter_module_register(im_name, THIS_MODULE, &cfi_cmdset_0701);
-+ return 0;
-+}
-+
-+mod_exit_t cfi_sststd_exit(void)
-+{
-+ inter_module_unregister(im_name);
-+}
-+
-+module_init(cfi_sststd_init);
-+module_exit(cfi_sststd_exit);
-+
-diff -Nur linux-2.4.30/drivers/mtd/chips/cfi_probe.c linux-2.4.30.openwrt/drivers/mtd/chips/cfi_probe.c
---- linux-2.4.30/drivers/mtd/chips/cfi_probe.c 2003-06-13 16:51:34.000000000 +0200
-+++ linux-2.4.30.openwrt/drivers/mtd/chips/cfi_probe.c 2005-06-28 11:26:26.000000000 +0200
-@@ -67,8 +67,15 @@
- cfi_send_gen_cmd(0xF0, 0, base, map, cfi, cfi->device_type, NULL);
- cfi_send_gen_cmd(0x98, 0x55, base, map, cfi, cfi->device_type, NULL);
-
-- if (!qry_present(map,base,cfi))
-- return 0;
-+ if (!qry_present(map,base,cfi)) {
-+ /* rather broken SST cfi probe (requires SST unlock) */
-+ cfi_send_gen_cmd(0xF0, 0, base, map, cfi, cfi->device_type, NULL);
-+ cfi_send_gen_cmd(0xAA, 0x5555, base, map, cfi, cfi->device_type, NULL);
-+ cfi_send_gen_cmd(0x55, 0x2AAA, base, map, cfi, cfi->device_type, NULL);
-+ cfi_send_gen_cmd(0x98, 0x5555, base, map, cfi, cfi->device_type, NULL);
-+ if (!qry_present(map,base,cfi))
-+ return 0;
-+ }
-
- if (!cfi->numchips) {
- /* This is the first time we're called. Set up the CFI
-diff -Nur linux-2.4.30/drivers/mtd/chips/gen_probe.c linux-2.4.30.openwrt/drivers/mtd/chips/gen_probe.c
---- linux-2.4.30/drivers/mtd/chips/gen_probe.c 2003-08-25 13:44:42.000000000 +0200
-+++ linux-2.4.30.openwrt/drivers/mtd/chips/gen_probe.c 2005-06-28 11:29:23.000000000 +0200
-@@ -328,13 +328,18 @@
- return cfi_cmdset_0001(map, primary);
- #endif
- #ifdef CONFIG_MTD_CFI_AMDSTD
-+ case 0x0006:
- case 0x0002:
- return cfi_cmdset_0002(map, primary);
- #endif
- #ifdef CONFIG_MTD_CFI_STAA
-- case 0x0020:
-+ case 0x0020:
- return cfi_cmdset_0020(map, primary);
- #endif
-+#ifdef CONFIG_MTD_CFI_SSTSTD
-+ case 0x0701:
-+ return cfi_cmdset_0701(map, primary);
-+#endif
- }
-
- return cfi_cmdset_unknown(map, primary);
diff --git a/openwrt/target/linux/generic-2.4/patches/006-gcc4_fixes.patch b/openwrt/target/linux/generic-2.4/patches/006-gcc4_fixes.patch
deleted file mode 100644
index 4034d1b48b..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/006-gcc4_fixes.patch
+++ /dev/null
@@ -1,522 +0,0 @@
-diff -rupN linux-2.4.32/Makefile linux-2.4.32.gcc4-fixes-v12/Makefile
---- linux-2.4.32/Makefile 2005-11-17 13:27:30.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/Makefile 2005-11-17 13:32:13.000000000 +0100
-@@ -93,11 +93,17 @@ CPPFLAGS := -D__KERNEL__ -I$(HPATH)
-
- CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes -Wno-trigraphs -O2 \
- -fno-strict-aliasing -fno-common
-+CFLAGS += -fno-builtin-sprintf
- ifndef CONFIG_FRAME_POINTER
- CFLAGS += -fomit-frame-pointer
- endif
- AFLAGS := -D__ASSEMBLY__ $(CPPFLAGS)
-
-+check_gcc = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi)
-+
-+# disable pointer signedness warnings in gcc 4.0
-+CFLAGS += $(call check_gcc,-Wno-pointer-sign,)
-+
- #
- # ROOT_DEV specifies the default root-device when making the image.
- # This can be either FLOPPY, CURRENT, /dev/xxxx or empty, in which case
-diff -rupN linux-2.4.32/arch/i386/Makefile linux-2.4.32.gcc4-fixes-v12/arch/i386/Makefile
---- linux-2.4.32/arch/i386/Makefile 2004-11-17 18:36:41.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/arch/i386/Makefile 2005-11-17 13:32:13.000000000 +0100
-@@ -23,8 +23,6 @@ LINKFLAGS =-T $(TOPDIR)/arch/i386/vmlinu
-
- CFLAGS += -pipe
-
--check_gcc = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi)
--
- # prevent gcc from keeping the stack 16 byte aligned
- CFLAGS += $(call check_gcc,-mpreferred-stack-boundary=2,)
-
-diff -rupN linux-2.4.32/arch/mips/Makefile linux-2.4.32.gcc4-fixes-v12/arch/mips/Makefile
---- linux-2.4.32/arch/mips/Makefile 2005-01-19 18:00:52.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/arch/mips/Makefile 2005-11-17 13:32:13.000000000 +0100
-@@ -30,8 +30,6 @@ endif
-
- MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
-
--check_gcc = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi)
--
- #
- #
- # GCC uses -G 0 -mabicalls -fpic as default. We don't want PIC in the kernel
-diff -rupN linux-2.4.32/arch/mips64/Makefile linux-2.4.32.gcc4-fixes-v12/arch/mips64/Makefile
---- linux-2.4.32/arch/mips64/Makefile 2005-01-19 18:00:52.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/arch/mips64/Makefile 2005-11-17 13:32:13.000000000 +0100
-@@ -26,7 +26,6 @@ ifdef CONFIG_CROSSCOMPILE
- CROSS_COMPILE = $(tool-prefix)
- endif
-
--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_gas = $(shell if $(CC) $(1) -Wa,-Z -c -o /dev/null -xassembler /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi)
-
- #
-diff -rupN linux-2.4.32/arch/ppc/kernel/open_pic_defs.h linux-2.4.32.gcc4-fixes-v12/arch/ppc/kernel/open_pic_defs.h
---- linux-2.4.32/arch/ppc/kernel/open_pic_defs.h 2003-06-14 13:30:19.000000000 +0200
-+++ linux-2.4.32.gcc4-fixes-v12/arch/ppc/kernel/open_pic_defs.h 2005-11-17 13:32:13.000000000 +0100
-@@ -172,9 +172,6 @@ struct OpenPIC {
- OpenPIC_Processor Processor[OPENPIC_MAX_PROCESSORS];
- };
-
--extern volatile struct OpenPIC *OpenPIC;
--
--
- /*
- * Current Task Priority Register
- */
-diff -rupN linux-2.4.32/arch/x86_64/Makefile linux-2.4.32.gcc4-fixes-v12/arch/x86_64/Makefile
---- linux-2.4.32/arch/x86_64/Makefile 2004-04-14 20:22:20.000000000 +0200
-+++ linux-2.4.32.gcc4-fixes-v12/arch/x86_64/Makefile 2005-11-17 13:32:13.000000000 +0100
-@@ -38,8 +38,6 @@ OBJCOPY=$(CROSS_COMPILE)objcopy -O binar
- LDFLAGS=-e stext
- LINKFLAGS =-T $(TOPDIR)/arch/x86_64/vmlinux.lds $(LDFLAGS)
-
--check_gcc = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then echo "$(1)"; else echo "$(2)"; fi)
--
- CFLAGS += -mno-red-zone
- CFLAGS += -mcmodel=kernel
- CFLAGS += -pipe
-diff -rupN linux-2.4.32/arch/x86_64/ia32/ia32entry.S linux-2.4.32.gcc4-fixes-v12/arch/x86_64/ia32/ia32entry.S
---- linux-2.4.32/arch/x86_64/ia32/ia32entry.S 2005-01-19 18:00:53.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/arch/x86_64/ia32/ia32entry.S 2005-11-17 13:32:13.000000000 +0100
-@@ -113,9 +113,18 @@ quiet_ni_syscall:
- PTREGSCALL stub32_fork, sys32_fork
- PTREGSCALL stub32_clone, sys32_clone
- PTREGSCALL stub32_vfork, sys32_vfork
-- PTREGSCALL stub32_iopl, sys_iopl
- PTREGSCALL stub32_rt_sigsuspend, sys_rt_sigsuspend
-
-+ .macro PTREGSCALL3 label, func, arg
-+ .globl \label
-+\label:
-+ leaq \func(%rip),%rax
-+ leaq -ARGOFFSET+8(%rsp),\arg /* 8 for return address */
-+ jmp ia32_ptregs_common
-+ .endm
-+
-+ PTREGSCALL3 stub32_iopl, sys_iopl, %rsi
-+
- ENTRY(ia32_ptregs_common)
- popq %r11
- SAVE_REST
-diff -rupN linux-2.4.32/arch/x86_64/kernel/entry.S linux-2.4.32.gcc4-fixes-v12/arch/x86_64/kernel/entry.S
---- linux-2.4.32/arch/x86_64/kernel/entry.S 2003-11-29 00:28:11.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/arch/x86_64/kernel/entry.S 2005-11-17 13:32:13.000000000 +0100
-@@ -249,7 +249,16 @@ intret_signal_test:
- PTREGSCALL stub_vfork, sys_vfork
- PTREGSCALL stub_rt_sigsuspend, sys_rt_sigsuspend
- PTREGSCALL stub_sigaltstack, sys_sigaltstack
-- PTREGSCALL stub_iopl, sys_iopl
-+
-+ .macro PTREGSCALL3 label,func,arg
-+ .globl \label
-+\label:
-+ leaq \func(%rip),%rax
-+ leaq -ARGOFFSET+8(%rsp),\arg /* 8 for return address */
-+ jmp ptregscall_common
-+ .endm
-+
-+ PTREGSCALL3 stub_iopl, sys_iopl, %rsi
-
- ENTRY(ptregscall_common)
- popq %r11
-diff -rupN linux-2.4.32/arch/x86_64/kernel/ioport.c linux-2.4.32.gcc4-fixes-v12/arch/x86_64/kernel/ioport.c
---- linux-2.4.32/arch/x86_64/kernel/ioport.c 2003-11-29 00:28:11.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/arch/x86_64/kernel/ioport.c 2005-11-17 13:32:13.000000000 +0100
-@@ -81,9 +81,9 @@ asmlinkage long sys_ioperm(unsigned long
- * code.
- */
-
--asmlinkage long sys_iopl(unsigned int level, struct pt_regs regs)
-+asmlinkage long sys_iopl(unsigned int level, struct pt_regs *regs)
- {
-- unsigned int old = (regs.eflags >> 12) & 3;
-+ unsigned int old = (regs->eflags >> 12) & 3;
-
- if (level > 3)
- return -EINVAL;
-@@ -92,6 +92,6 @@ asmlinkage long sys_iopl(unsigned int le
- if (!capable(CAP_SYS_RAWIO))
- return -EPERM;
- }
-- regs.eflags = (regs.eflags & 0xffffffffffffcfff) | (level << 12);
-+ regs->eflags = (regs->eflags &~ 0x3000UL) | (level << 12);
- return 0;
- }
-diff -rupN linux-2.4.32/drivers/acpi/bus.c linux-2.4.32.gcc4-fixes-v12/drivers/acpi/bus.c
---- linux-2.4.32/drivers/acpi/bus.c 2005-01-19 18:00:53.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/drivers/acpi/bus.c 2005-11-17 13:32:13.000000000 +0100
-@@ -623,7 +623,7 @@ acpi_bus_generate_event (
- int data)
- {
- struct acpi_bus_event *event = NULL;
-- u32 flags = 0;
-+ unsigned long flags = 0;
-
- ACPI_FUNCTION_TRACE("acpi_bus_generate_event");
-
-@@ -656,7 +656,7 @@ int
- acpi_bus_receive_event (
- struct acpi_bus_event *event)
- {
-- u32 flags = 0;
-+ unsigned long flags = 0;
- struct acpi_bus_event *entry = NULL;
-
- DECLARE_WAITQUEUE(wait, current);
-diff -rupN linux-2.4.32/drivers/sound/sound_firmware.c linux-2.4.32.gcc4-fixes-v12/drivers/sound/sound_firmware.c
---- linux-2.4.32/drivers/sound/sound_firmware.c 2001-02-22 15:23:46.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/drivers/sound/sound_firmware.c 2005-11-17 13:32:13.000000000 +0100
-@@ -4,10 +4,11 @@
- #include <linux/fs.h>
- #include <linux/mm.h>
- #include <linux/slab.h>
--#include <linux/unistd.h>
-+static int my_errno;
-+#define errno my_errno
-+#include <asm/unistd.h>
- #include <asm/uaccess.h>
-
--static int errno;
- static int do_mod_firmware_load(const char *fn, char **fp)
- {
- int fd;
-diff -rupN linux-2.4.32/drivers/usb/host/ehci-q.c linux-2.4.32.gcc4-fixes-v12/drivers/usb/host/ehci-q.c
---- linux-2.4.32/drivers/usb/host/ehci-q.c 2005-01-19 18:00:53.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/drivers/usb/host/ehci-q.c 2005-11-17 13:32:13.000000000 +0100
-@@ -199,8 +199,6 @@ ehci_urb_done (struct ehci_hcd *ehci, st
- #ifdef INTR_AUTOMAGIC
- struct urb *resubmit = 0;
- struct usb_device *dev = 0;
--
-- static int ehci_urb_enqueue (struct usb_hcd *, struct urb *, int);
- #endif
-
- if (likely (urb->hcpriv != 0)) {
-diff -rupN linux-2.4.32/drivers/usb/inode.c linux-2.4.32.gcc4-fixes-v12/drivers/usb/inode.c
---- linux-2.4.32/drivers/usb/inode.c 2004-02-18 15:16:23.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/drivers/usb/inode.c 2005-11-17 13:32:13.000000000 +0100
-@@ -41,6 +41,9 @@
- #include <linux/usbdevice_fs.h>
- #include <asm/uaccess.h>
-
-+static struct inode_operations usbdevfs_bus_inode_operations;
-+static struct file_operations usbdevfs_bus_file_operations;
-+
- /* --------------------------------------------------------------------- */
-
- /*
-diff -rupN linux-2.4.32/fs/hfs/trans.c linux-2.4.32.gcc4-fixes-v12/fs/hfs/trans.c
---- linux-2.4.32/fs/hfs/trans.c 2001-02-22 15:23:47.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/fs/hfs/trans.c 2005-11-17 13:32:13.000000000 +0100
-@@ -33,6 +33,7 @@
- #include <linux/hfs_fs_sb.h>
- #include <linux/hfs_fs_i.h>
- #include <linux/hfs_fs.h>
-+#include <linux/compiler.h>
-
- /*================ File-local variables ================*/
-
-@@ -78,7 +79,7 @@ static unsigned char mac2latin_map[128]
- *
- * Given a hexadecimal digit in ASCII, return the integer representation.
- */
--static inline const unsigned char dehex(char c) {
-+static inline __attribute_const__ unsigned char dehex(char c) {
- if ((c>='0')&&(c<='9')) {
- return c-'0';
- }
-diff -rupN linux-2.4.32/include/asm-i386/byteorder.h linux-2.4.32.gcc4-fixes-v12/include/asm-i386/byteorder.h
---- linux-2.4.32/include/asm-i386/byteorder.h 2003-06-14 13:30:27.000000000 +0200
-+++ linux-2.4.32.gcc4-fixes-v12/include/asm-i386/byteorder.h 2005-11-17 13:32:13.000000000 +0100
-@@ -2,6 +2,7 @@
- #define _I386_BYTEORDER_H
-
- #include <asm/types.h>
-+#include <linux/compiler.h>
-
- #ifdef __GNUC__
-
-@@ -10,7 +11,7 @@
- #include <linux/config.h>
- #endif
-
--static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
-+static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x)
- {
- #ifdef CONFIG_X86_BSWAP
- __asm__("bswap %0" : "=r" (x) : "0" (x));
-@@ -26,7 +27,7 @@ static __inline__ __const__ __u32 ___arc
-
- /* gcc should generate this for open coded C now too. May be worth switching to
- it because inline assembly cannot be scheduled. -AK */
--static __inline__ __const__ __u16 ___arch__swab16(__u16 x)
-+static __inline__ __attribute_const__ __u16 ___arch__swab16(__u16 x)
- {
- __asm__("xchgb %b0,%h0" /* swap bytes */
- : "=q" (x)
-diff -rupN linux-2.4.32/include/asm-i386/processor.h linux-2.4.32.gcc4-fixes-v12/include/asm-i386/processor.h
---- linux-2.4.32/include/asm-i386/processor.h 2004-02-18 15:16:24.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/include/asm-i386/processor.h 2005-11-17 13:32:13.000000000 +0100
-@@ -72,7 +72,6 @@ struct cpuinfo_x86 {
- */
-
- extern struct cpuinfo_x86 boot_cpu_data;
--extern struct tss_struct init_tss[NR_CPUS];
-
- #ifdef CONFIG_SMP
- extern struct cpuinfo_x86 cpu_data[];
-@@ -357,6 +356,8 @@ struct tss_struct {
- unsigned long __cacheline_filler[5];
- };
-
-+extern struct tss_struct init_tss[NR_CPUS];
-+
- struct thread_struct {
- unsigned long esp0;
- unsigned long eip;
-diff -rupN linux-2.4.32/include/asm-i386/string.h linux-2.4.32.gcc4-fixes-v12/include/asm-i386/string.h
---- linux-2.4.32/include/asm-i386/string.h 2001-08-12 11:35:53.000000000 +0200
-+++ linux-2.4.32.gcc4-fixes-v12/include/asm-i386/string.h 2005-11-17 13:32:13.000000000 +0100
-@@ -337,7 +337,7 @@ extern void __struct_cpy_bug (void);
- #define struct_cpy(x,y) \
- ({ \
- if (sizeof(*(x)) != sizeof(*(y))) \
-- __struct_cpy_bug; \
-+ __struct_cpy_bug(); \
- memcpy(x, y, sizeof(*(x))); \
- })
-
-diff -rupN linux-2.4.32/include/asm-m68k/setup.h linux-2.4.32.gcc4-fixes-v12/include/asm-m68k/setup.h
---- linux-2.4.32/include/asm-m68k/setup.h 2000-01-29 13:07:40.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/include/asm-m68k/setup.h 2005-11-17 13:32:13.000000000 +0100
-@@ -361,12 +361,13 @@ extern int m68k_is040or060;
- #ifndef __ASSEMBLY__
- extern int m68k_num_memory; /* # of memory blocks found (and used) */
- extern int m68k_realnum_memory; /* real # of memory blocks found */
--extern struct mem_info m68k_memory[NUM_MEMINFO];/* memory description */
-
- struct mem_info {
- unsigned long addr; /* physical address of memory chunk */
- unsigned long size; /* length of memory chunk (in bytes) */
- };
-+
-+extern struct mem_info m68k_memory[NUM_MEMINFO];/* memory description */
- #endif
-
- #endif /* __KERNEL__ */
-diff -rupN linux-2.4.32/include/asm-ppc/byteorder.h linux-2.4.32.gcc4-fixes-v12/include/asm-ppc/byteorder.h
---- linux-2.4.32/include/asm-ppc/byteorder.h 2003-06-14 13:30:28.000000000 +0200
-+++ linux-2.4.32.gcc4-fixes-v12/include/asm-ppc/byteorder.h 2005-11-17 13:32:13.000000000 +0100
-@@ -2,6 +2,7 @@
- #define _PPC_BYTEORDER_H
-
- #include <asm/types.h>
-+#include <linux/compiler.h>
-
- #ifdef __GNUC__
- #ifdef __KERNEL__
-@@ -50,7 +51,7 @@ extern __inline__ void st_le64(volatile
- __asm__ __volatile__ ("stwbrx %1,0,%2" : "=m" (*addr) : "r" (val), "r" (taddr+4));
- }
-
--static __inline__ __const__ __u16 ___arch__swab16(__u16 value)
-+static __inline__ __attribute_const__ __u16 ___arch__swab16(__u16 value)
- {
- __u16 result;
-
-@@ -58,7 +59,7 @@ static __inline__ __const__ __u16 ___arc
- return result;
- }
-
--static __inline__ __const__ __u32 ___arch__swab32(__u32 value)
-+static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 value)
- {
- __u32 result;
-
-diff -rupN linux-2.4.32/include/asm-ppc/time.h linux-2.4.32.gcc4-fixes-v12/include/asm-ppc/time.h
---- linux-2.4.32/include/asm-ppc/time.h 2003-08-25 20:07:49.000000000 +0200
-+++ linux-2.4.32.gcc4-fixes-v12/include/asm-ppc/time.h 2005-11-17 13:32:13.000000000 +0100
-@@ -12,6 +12,7 @@
- #include <linux/config.h>
- #include <linux/mc146818rtc.h>
- #include <linux/threads.h>
-+#include <linux/compiler.h>
-
- #include <asm/processor.h>
-
-@@ -57,7 +58,7 @@ static __inline__ void set_dec(unsigned
- /* Accessor functions for the timebase (RTC on 601) registers. */
- /* If one day CONFIG_POWER is added just define __USE_RTC as 1 */
- #ifdef CONFIG_6xx
--extern __inline__ int const __USE_RTC(void) {
-+extern __inline__ int __attribute_const__ __USE_RTC(void) {
- return (mfspr(SPRN_PVR)>>16) == 1;
- }
- #else
-diff -rupN linux-2.4.32/include/asm-x86_64/byteorder.h linux-2.4.32.gcc4-fixes-v12/include/asm-x86_64/byteorder.h
---- linux-2.4.32/include/asm-x86_64/byteorder.h 2002-11-30 17:12:31.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/include/asm-x86_64/byteorder.h 2005-11-17 13:32:13.000000000 +0100
-@@ -2,16 +2,17 @@
- #define _X86_64_BYTEORDER_H
-
- #include <asm/types.h>
-+#include <linux/compiler.h>
-
- #ifdef __GNUC__
-
--static __inline__ __const__ __u64 ___arch__swab64(__u64 x)
-+static __inline__ __attribute_const__ __u64 ___arch__swab64(__u64 x)
- {
- __asm__("bswapq %0" : "=r" (x) : "0" (x));
- return x;
- }
-
--static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
-+static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x)
- {
- __asm__("bswapl %0" : "=r" (x) : "0" (x));
- return x;
-diff -rupN linux-2.4.32/include/asm-x86_64/processor.h linux-2.4.32.gcc4-fixes-v12/include/asm-x86_64/processor.h
---- linux-2.4.32/include/asm-x86_64/processor.h 2005-11-17 13:27:30.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/include/asm-x86_64/processor.h 2005-11-17 13:32:13.000000000 +0100
-@@ -68,7 +68,6 @@ struct cpuinfo_x86 {
- #define X86_VENDOR_UNKNOWN 0xff
-
- extern struct cpuinfo_x86 boot_cpu_data;
--extern struct tss_struct init_tss[NR_CPUS];
-
- #ifdef CONFIG_SMP
- extern struct cpuinfo_x86 cpu_data[];
-@@ -300,6 +299,8 @@ struct tss_struct {
- u32 io_bitmap[IO_BITMAP_SIZE];
- } __attribute__((packed)) ____cacheline_aligned;
-
-+extern struct tss_struct init_tss[NR_CPUS];
-+
- struct thread_struct {
- unsigned long rsp0;
- unsigned long rip;
-diff -rupN linux-2.4.32/include/linux/byteorder/swab.h linux-2.4.32.gcc4-fixes-v12/include/linux/byteorder/swab.h
---- linux-2.4.32/include/linux/byteorder/swab.h 2002-11-30 17:12:31.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/include/linux/byteorder/swab.h 2005-11-17 13:32:13.000000000 +0100
-@@ -15,6 +15,8 @@
- *
- */
-
-+#include <linux/compiler.h>
-+
- /* casts are necessary for constants, because we never know how for sure
- * how U/UL/ULL map to __u16, __u32, __u64. At least not in a portable way.
- */
-@@ -156,7 +158,7 @@
- #endif /* OPTIMIZE */
-
-
--static __inline__ __const__ __u16 __fswab16(__u16 x)
-+static __inline__ __attribute_const__ __u16 __fswab16(__u16 x)
- {
- return __arch__swab16(x);
- }
-@@ -169,7 +171,7 @@ static __inline__ void __swab16s(__u16 *
- __arch__swab16s(addr);
- }
-
--static __inline__ __const__ __u32 __fswab24(__u32 x)
-+static __inline__ __attribute_const__ __u32 __fswab24(__u32 x)
- {
- return __arch__swab24(x);
- }
-@@ -182,7 +184,7 @@ static __inline__ void __swab24s(__u32 *
- __arch__swab24s(addr);
- }
-
--static __inline__ __const__ __u32 __fswab32(__u32 x)
-+static __inline__ __attribute_const__ __u32 __fswab32(__u32 x)
- {
- return __arch__swab32(x);
- }
-@@ -196,7 +198,7 @@ static __inline__ void __swab32s(__u32 *
- }
-
- #ifdef __BYTEORDER_HAS_U64__
--static __inline__ __const__ __u64 __fswab64(__u64 x)
-+static __inline__ __attribute_const__ __u64 __fswab64(__u64 x)
- {
- # ifdef __SWAB_64_THRU_32__
- __u32 h = x >> 32;
-diff -rupN linux-2.4.32/include/linux/compiler.h linux-2.4.32.gcc4-fixes-v12/include/linux/compiler.h
---- linux-2.4.32/include/linux/compiler.h 2004-11-17 18:36:42.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/include/linux/compiler.h 2005-11-17 13:32:13.000000000 +0100
-@@ -27,6 +27,12 @@
- #define __attribute_used__ /* not implemented */
- #endif /* __GNUC__ */
-
-+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-+#define __attribute_const__ __attribute__((__const__))
-+#else
-+#define __attribute_const__ /* unimplemented */
-+#endif
-+
- #if __GNUC__ == 3
- #if __GNUC_MINOR__ >= 1
- # define inline __inline__ __attribute__((always_inline))
-diff -rupN linux-2.4.32/include/linux/fs.h linux-2.4.32.gcc4-fixes-v12/include/linux/fs.h
---- linux-2.4.32/include/linux/fs.h 2005-04-04 19:56:05.000000000 +0200
-+++ linux-2.4.32.gcc4-fixes-v12/include/linux/fs.h 2005-11-17 13:32:13.000000000 +0100
-@@ -1559,7 +1559,6 @@ static inline int is_mounted(kdev_t dev)
- unsigned long generate_cluster(kdev_t, int b[], int);
- unsigned long generate_cluster_swab32(kdev_t, int b[], int);
- extern kdev_t ROOT_DEV;
--extern char root_device_name[];
-
-
- extern void show_buffers(void);
-diff -rupN linux-2.4.32/include/linux/ufs_fs.h linux-2.4.32.gcc4-fixes-v12/include/linux/ufs_fs.h
---- linux-2.4.32/include/linux/ufs_fs.h 2001-11-23 22:40:15.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/include/linux/ufs_fs.h 2005-11-17 13:32:13.000000000 +0100
-@@ -555,7 +555,6 @@ extern struct buffer_head * ufs_bread (s
- extern struct file_operations ufs_dir_operations;
-
- /* super.c */
--extern struct file_system_type ufs_fs_type;
- extern void ufs_warning (struct super_block *, const char *, const char *, ...) __attribute__ ((format (printf, 3, 4)));
- extern void ufs_error (struct super_block *, const char *, const char *, ...) __attribute__ ((format (printf, 3, 4)));
- extern void ufs_panic (struct super_block *, const char *, const char *, ...) __attribute__ ((format (printf, 3, 4)));
-diff -rupN linux-2.4.32/include/linux/usbdevice_fs.h linux-2.4.32.gcc4-fixes-v12/include/linux/usbdevice_fs.h
---- linux-2.4.32/include/linux/usbdevice_fs.h 2003-11-29 00:28:14.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/include/linux/usbdevice_fs.h 2005-11-17 13:32:13.000000000 +0100
-@@ -185,8 +185,6 @@ extern struct file_operations usbdevfs_d
- extern struct file_operations usbdevfs_devices_fops;
- extern struct file_operations usbdevfs_device_file_operations;
- extern struct inode_operations usbdevfs_device_inode_operations;
--extern struct inode_operations usbdevfs_bus_inode_operations;
--extern struct file_operations usbdevfs_bus_file_operations;
- extern void usbdevfs_conn_disc_event(void);
-
- #endif /* __KERNEL__ */
-diff -rupN linux-2.4.32/include/net/icmp.h linux-2.4.32.gcc4-fixes-v12/include/net/icmp.h
---- linux-2.4.32/include/net/icmp.h 2001-04-28 12:35:26.000000000 +0200
-+++ linux-2.4.32.gcc4-fixes-v12/include/net/icmp.h 2005-11-17 13:32:13.000000000 +0100
-@@ -23,6 +23,7 @@
-
- #include <net/sock.h>
- #include <net/protocol.h>
-+#include <net/snmp.h>
-
- struct icmp_err {
- int errno;
-diff -rupN linux-2.4.32/include/net/ipv6.h linux-2.4.32.gcc4-fixes-v12/include/net/ipv6.h
---- linux-2.4.32/include/net/ipv6.h 2004-11-17 18:36:43.000000000 +0100
-+++ linux-2.4.32.gcc4-fixes-v12/include/net/ipv6.h 2005-11-17 13:32:13.000000000 +0100
-@@ -101,6 +101,7 @@ struct frag_hdr {
- #ifdef __KERNEL__
-
- #include <net/sock.h>
-+#include <net/snmp.h>
-
- /* sysctls */
- extern int sysctl_ipv6_bindv6only;
diff --git a/openwrt/target/linux/generic-2.4/patches/007-more_gcc4_fixes.patch b/openwrt/target/linux/generic-2.4/patches/007-more_gcc4_fixes.patch
deleted file mode 100644
index b234c7028c..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/007-more_gcc4_fixes.patch
+++ /dev/null
@@ -1,1339 +0,0 @@
-diff -rupN linux-2.4.32/drivers/atm/fore200e.c linux-2.4.32.more-gcc4-fixes-v1/drivers/atm/fore200e.c
---- linux-2.4.32/drivers/atm/fore200e.c 2004-11-17 18:36:41.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/atm/fore200e.c 2005-11-17 13:31:16.000000000 +0100
-@@ -112,8 +112,8 @@
- #endif
-
-
--extern const struct atmdev_ops fore200e_ops;
--extern const struct fore200e_bus fore200e_bus[];
-+static const struct atmdev_ops fore200e_ops;
-+static const struct fore200e_bus fore200e_bus[];
-
- static struct fore200e* fore200e_boards = NULL;
-
-diff -rupN linux-2.4.32/drivers/atm/horizon.c linux-2.4.32.more-gcc4-fixes-v1/drivers/atm/horizon.c
---- linux-2.4.32/drivers/atm/horizon.c 2004-02-18 15:16:22.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/atm/horizon.c 2005-11-17 13:31:16.000000000 +0100
-@@ -481,6 +481,7 @@ static inline void dump_skb (char * pref
- return;
- }
-
-+#if 0 /* unused and in conflict with <asm-ppc/system.h> */
- static inline void dump_regs (hrz_dev * dev) {
- #ifdef DEBUG_HORIZON
- PRINTD (DBG_REGS, "CONTROL 0: %#x", rd_regl (dev, CONTROL_0_REG));
-@@ -494,6 +495,7 @@ static inline void dump_regs (hrz_dev *
- #endif
- return;
- }
-+#endif
-
- static inline void dump_framer (hrz_dev * dev) {
- #ifdef DEBUG_HORIZON
-diff -rupN linux-2.4.32/drivers/atm/iphase.c linux-2.4.32.more-gcc4-fixes-v1/drivers/atm/iphase.c
---- linux-2.4.32/drivers/atm/iphase.c 2004-11-17 18:36:41.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/atm/iphase.c 2005-11-17 13:31:16.000000000 +0100
-@@ -82,6 +82,7 @@ static IADEV *ia_dev[8];
- static struct atm_dev *_ia_dev[8];
- static int iadev_count;
- static void ia_led_timer(unsigned long arg);
-+static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb);
- static struct timer_list ia_timer = { function: ia_led_timer };
- struct atm_vcc *vcc_close_que[100];
- static int IA_TX_BUF = DFL_TX_BUFFERS, IA_TX_BUF_SZ = DFL_TX_BUF_SZ;
-@@ -627,7 +628,6 @@ static int ia_que_tx (IADEV *iadev) {
- int num_desc;
- struct atm_vcc *vcc;
- struct ia_vcc *iavcc;
-- static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb);
- num_desc = ia_avail_descs(iadev);
- while (num_desc && (skb = skb_dequeue(&iadev->tx_backlog))) {
- if (!(vcc = ATM_SKB(skb)->vcc)) {
-diff -rupN linux-2.4.32/drivers/atm/iphase.h linux-2.4.32.more-gcc4-fixes-v1/drivers/atm/iphase.h
---- linux-2.4.32/drivers/atm/iphase.h 2003-06-14 13:30:20.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/atm/iphase.h 2005-11-17 13:31:16.000000000 +0100
-@@ -68,8 +68,6 @@
- #define IF_IADBG_SUNI_STAT 0x02000000 // suni statistics
- #define IF_IADBG_RESET 0x04000000
-
--extern unsigned int IADebugFlag;
--
- #define IF_IADBG(f) if (IADebugFlag & (f))
-
- #ifdef CONFIG_ATM_IA_DEBUG /* Debug build */
-diff -rupN linux-2.4.32/drivers/block/nbd.c linux-2.4.32.more-gcc4-fixes-v1/drivers/block/nbd.c
---- linux-2.4.32/drivers/block/nbd.c 2005-04-04 19:56:04.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/block/nbd.c 2005-11-17 13:31:16.000000000 +0100
-@@ -74,6 +74,29 @@ static int requests_in;
- static int requests_out;
- #endif
-
-+static void
-+nbd_end_request(struct request *req)
-+{
-+ struct buffer_head *bh;
-+ unsigned nsect;
-+ unsigned long flags;
-+ int uptodate = (req->errors == 0) ? 1 : 0;
-+
-+#ifdef PARANOIA
-+ requests_out++;
-+#endif
-+ spin_lock_irqsave(&io_request_lock, flags);
-+ while((bh = req->bh) != NULL) {
-+ nsect = bh->b_size >> 9;
-+ blk_finished_io(nsect);
-+ req->bh = bh->b_reqnext;
-+ bh->b_reqnext = NULL;
-+ bh->b_end_io(bh, uptodate);
-+ }
-+ blkdev_release_request(req);
-+ spin_unlock_irqrestore(&io_request_lock, flags);
-+}
-+
- static int nbd_open(struct inode *inode, struct file *file)
- {
- int dev;
-diff -rupN linux-2.4.32/drivers/block/paride/pd.c linux-2.4.32.more-gcc4-fixes-v1/drivers/block/paride/pd.c
---- linux-2.4.32/drivers/block/paride/pd.c 2002-11-30 17:12:24.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/block/paride/pd.c 2005-11-17 13:31:16.000000000 +0100
-@@ -343,7 +343,14 @@ static char *pd_errs[17] = { "ERR","INDE
-
- /* kernel glue structures */
-
--extern struct block_device_operations pd_fops;
-+static struct block_device_operations pd_fops = {
-+ owner: THIS_MODULE,
-+ open: pd_open,
-+ release: pd_release,
-+ ioctl: pd_ioctl,
-+ check_media_change: pd_check_media,
-+ revalidate: pd_revalidate
-+};
-
- static struct gendisk pd_gendisk = {
- major: PD_MAJOR,
-@@ -355,15 +362,6 @@ static struct gendisk pd_gendisk = {
- fops: &pd_fops,
- };
-
--static struct block_device_operations pd_fops = {
-- owner: THIS_MODULE,
-- open: pd_open,
-- release: pd_release,
-- ioctl: pd_ioctl,
-- check_media_change: pd_check_media,
-- revalidate: pd_revalidate
--};
--
- void pd_init_units( void )
-
- { int unit, j;
-diff -rupN linux-2.4.32/drivers/block/xd.c linux-2.4.32.more-gcc4-fixes-v1/drivers/block/xd.c
---- linux-2.4.32/drivers/block/xd.c 2002-11-30 17:12:24.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/block/xd.c 2005-11-17 13:31:16.000000000 +0100
-@@ -125,7 +125,12 @@ static int xd_sizes[XD_MAXDRIVES << 6],
- static int xd_blocksizes[XD_MAXDRIVES << 6];
- static int xd_maxsect[XD_MAXDRIVES << 6];
-
--extern struct block_device_operations xd_fops;
-+static struct block_device_operations xd_fops = {
-+ owner: THIS_MODULE,
-+ open: xd_open,
-+ release: xd_release,
-+ ioctl: xd_ioctl,
-+};
-
- static struct gendisk xd_gendisk = {
- major: MAJOR_NR,
-@@ -138,13 +143,6 @@ static struct gendisk xd_gendisk = {
- fops: &xd_fops,
- };
-
--static struct block_device_operations xd_fops = {
-- owner: THIS_MODULE,
-- open: xd_open,
-- release: xd_release,
-- ioctl: xd_ioctl,
--};
--
- static DECLARE_WAIT_QUEUE_HEAD(xd_wait_int);
- static DECLARE_WAIT_QUEUE_HEAD(xd_wait_open);
- static u8 xd_valid[XD_MAXDRIVES] = { 0,0 };
-diff -rupN linux-2.4.32/drivers/cdrom/sbpcd.c linux-2.4.32.more-gcc4-fixes-v1/drivers/cdrom/sbpcd.c
---- linux-2.4.32/drivers/cdrom/sbpcd.c 2001-11-06 12:12:06.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/cdrom/sbpcd.c 2005-11-17 13:31:16.000000000 +0100
-@@ -525,6 +525,8 @@ static int sbp_data(struct request *req)
- static int cmd_out(void);
- static int DiskInfo(void);
- static int sbpcd_chk_disk_change(kdev_t);
-+static int cmd_out_T(void);
-+static int cc_DriveReset(void);
-
- /*==========================================================================*/
-
-@@ -1213,8 +1215,6 @@ static int get_state_T(void)
- {
- int i;
-
-- static int cmd_out_T(void);
--
- clr_cmdbuf();
- D_S[d].n_bytes=1;
- drvcmd[0]=CMDT_STATUS;
-@@ -1362,7 +1362,6 @@ static int cmd_out_T(void)
- #define CMDT_TRIES 1000
- #define TEST_FALSE_FF 1
-
-- static int cc_DriveReset(void);
- int i, j, l=0, m, ntries;
- long flags;
-
-diff -rupN linux-2.4.32/drivers/char/ip2/i2lib.c linux-2.4.32.more-gcc4-fixes-v1/drivers/char/ip2/i2lib.c
---- linux-2.4.32/drivers/char/ip2/i2lib.c 2005-01-19 18:00:53.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/char/ip2/i2lib.c 2005-11-17 13:31:16.000000000 +0100
-@@ -1262,7 +1262,7 @@ i2RetryFlushOutput(i2ChanStrPtr pCh)
-
- }
- if ( old_flags & STOPFL_FLAG ) {
-- if ( 1 == i2QueueCommands(PTYPE_INLINE, pCh, 0, 1, CMD_STOPFL) > 0 ) {
-+ if ( 1 == i2QueueCommands(PTYPE_INLINE, pCh, 0, 1, CMD_STOPFL)) {
- old_flags = 0; // Success - clear flags
- }
-
-diff -rupN linux-2.4.32/drivers/char/rio/rio_linux.c linux-2.4.32.more-gcc4-fixes-v1/drivers/char/rio/rio_linux.c
---- linux-2.4.32/drivers/char/rio/rio_linux.c 2002-02-26 13:26:56.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/char/rio/rio_linux.c 2005-11-17 13:31:16.000000000 +0100
-@@ -1205,8 +1205,8 @@ static int __init rio_init(void)
- hp->Ivec = get_irq (pdev);
- if (((1 << hp->Ivec) & rio_irqmask) == 0)
- hp->Ivec = 0;
-- hp->CardP = (struct DpRam *)
- hp->Caddr = ioremap(p->RIOHosts[p->RIONumHosts].PaddrP, RIO_WINDOW_LEN);
-+ hp->CardP = (struct DpRam *) hp->Caddr;
- hp->Type = RIO_PCI;
- hp->Copy = rio_pcicopy;
- hp->Mode = RIO_PCI_BOOT_FROM_RAM;
-@@ -1277,8 +1277,8 @@ static int __init rio_init(void)
- if (((1 << hp->Ivec) & rio_irqmask) == 0)
- hp->Ivec = 0;
- hp->Ivec |= 0x8000; /* Mark as non-sharable */
-- hp->CardP = (struct DpRam *)
- hp->Caddr = ioremap(p->RIOHosts[p->RIONumHosts].PaddrP, RIO_WINDOW_LEN);
-+ hp->CardP = (struct DpRam *) hp->Caddr;
- hp->Type = RIO_PCI;
- hp->Copy = rio_pcicopy;
- hp->Mode = RIO_PCI_BOOT_FROM_RAM;
-@@ -1329,8 +1329,8 @@ static int __init rio_init(void)
- hp->PaddrP = rio_probe_addrs[i];
- /* There was something about the IRQs of these cards. 'Forget what.--REW */
- hp->Ivec = 0;
-- hp->CardP = (struct DpRam *)
- hp->Caddr = ioremap(p->RIOHosts[p->RIONumHosts].PaddrP, RIO_WINDOW_LEN);
-+ hp->CardP = (struct DpRam *) hp->Caddr;
- hp->Type = RIO_AT;
- hp->Copy = rio_pcicopy; /* AT card PCI???? - PVDL
- * -- YES! this is now a normal copy. Only the
-diff -rupN linux-2.4.32/drivers/char/sonypi.c linux-2.4.32.more-gcc4-fixes-v1/drivers/char/sonypi.c
---- linux-2.4.32/drivers/char/sonypi.c 2004-04-14 20:22:20.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/char/sonypi.c 2005-11-17 13:31:16.000000000 +0100
-@@ -60,6 +60,35 @@ static int compat; /* = 0 */
- static int useinput = 1;
- static unsigned long mask = 0xffffffff;
-
-+static inline int sonypi_ec_write(u8 addr, u8 value) {
-+#ifdef CONFIG_ACPI_EC
-+ if (SONYPI_ACPI_ACTIVE)
-+ return ec_write(addr, value);
-+#endif
-+ wait_on_command(1, inb_p(SONYPI_CST_IOPORT) & 3, ITERATIONS_LONG);
-+ outb_p(0x81, SONYPI_CST_IOPORT);
-+ wait_on_command(0, inb_p(SONYPI_CST_IOPORT) & 2, ITERATIONS_LONG);
-+ outb_p(addr, SONYPI_DATA_IOPORT);
-+ wait_on_command(0, inb_p(SONYPI_CST_IOPORT) & 2, ITERATIONS_LONG);
-+ outb_p(value, SONYPI_DATA_IOPORT);
-+ wait_on_command(0, inb_p(SONYPI_CST_IOPORT) & 2, ITERATIONS_LONG);
-+ return 0;
-+}
-+
-+static inline int sonypi_ec_read(u8 addr, u8 *value) {
-+#ifdef CONFIG_ACPI_EC
-+ if (SONYPI_ACPI_ACTIVE)
-+ return ec_read(addr, value);
-+#endif
-+ wait_on_command(1, inb_p(SONYPI_CST_IOPORT) & 3, ITERATIONS_LONG);
-+ outb_p(0x80, SONYPI_CST_IOPORT);
-+ wait_on_command(0, inb_p(SONYPI_CST_IOPORT) & 2, ITERATIONS_LONG);
-+ outb_p(addr, SONYPI_DATA_IOPORT);
-+ wait_on_command(0, inb_p(SONYPI_CST_IOPORT) & 2, ITERATIONS_LONG);
-+ *value = inb_p(SONYPI_DATA_IOPORT);
-+ return 0;
-+}
-+
- /* Inits the queue */
- static inline void sonypi_initq(void) {
- sonypi_device.queue.head = sonypi_device.queue.tail = 0;
-diff -rupN linux-2.4.32/drivers/char/sonypi.h linux-2.4.32.more-gcc4-fixes-v1/drivers/char/sonypi.h
---- linux-2.4.32/drivers/char/sonypi.h 2004-04-14 20:22:20.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/char/sonypi.h 2005-11-17 13:31:16.000000000 +0100
-@@ -401,37 +401,6 @@ struct sonypi_device {
- #define SONYPI_ACPI_ACTIVE 0
- #endif /* CONFIG_ACPI */
-
--extern int verbose;
--
--static inline int sonypi_ec_write(u8 addr, u8 value) {
--#ifdef CONFIG_ACPI_EC
-- if (SONYPI_ACPI_ACTIVE)
-- return ec_write(addr, value);
--#endif
-- wait_on_command(1, inb_p(SONYPI_CST_IOPORT) & 3, ITERATIONS_LONG);
-- outb_p(0x81, SONYPI_CST_IOPORT);
-- wait_on_command(0, inb_p(SONYPI_CST_IOPORT) & 2, ITERATIONS_LONG);
-- outb_p(addr, SONYPI_DATA_IOPORT);
-- wait_on_command(0, inb_p(SONYPI_CST_IOPORT) & 2, ITERATIONS_LONG);
-- outb_p(value, SONYPI_DATA_IOPORT);
-- wait_on_command(0, inb_p(SONYPI_CST_IOPORT) & 2, ITERATIONS_LONG);
-- return 0;
--}
--
--static inline int sonypi_ec_read(u8 addr, u8 *value) {
--#ifdef CONFIG_ACPI_EC
-- if (SONYPI_ACPI_ACTIVE)
-- return ec_read(addr, value);
--#endif
-- wait_on_command(1, inb_p(SONYPI_CST_IOPORT) & 3, ITERATIONS_LONG);
-- outb_p(0x80, SONYPI_CST_IOPORT);
-- wait_on_command(0, inb_p(SONYPI_CST_IOPORT) & 2, ITERATIONS_LONG);
-- outb_p(addr, SONYPI_DATA_IOPORT);
-- wait_on_command(0, inb_p(SONYPI_CST_IOPORT) & 2, ITERATIONS_LONG);
-- *value = inb_p(SONYPI_DATA_IOPORT);
-- return 0;
--}
--
- #endif /* __KERNEL__ */
-
- #endif /* _SONYPI_PRIV_H_ */
-diff -rupN linux-2.4.32/drivers/char/sx.c linux-2.4.32.more-gcc4-fixes-v1/drivers/char/sx.c
---- linux-2.4.32/drivers/char/sx.c 2005-01-19 18:00:53.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/char/sx.c 2005-11-17 13:31:16.000000000 +0100
-@@ -522,13 +522,13 @@ static int sx_busy_wait_eq (struct sx_bo
-
- func_enter ();
-
-- for (i=0; i < TIMEOUT_1 > 0;i++)
-+ for (i=0; i < TIMEOUT_1 ;i++)
- if ((read_sx_byte (board, offset) & mask) == correctval) {
- func_exit ();
- return 1;
- }
-
-- for (i=0; i < TIMEOUT_2 > 0;i++) {
-+ for (i=0; i < TIMEOUT_2 ;i++) {
- if ((read_sx_byte (board, offset) & mask) == correctval) {
- func_exit ();
- return 1;
-@@ -548,13 +548,13 @@ static int sx_busy_wait_neq (struct sx_b
-
- func_enter ();
-
-- for (i=0; i < TIMEOUT_1 > 0;i++)
-+ for (i=0; i < TIMEOUT_1 ;i++)
- if ((read_sx_byte (board, offset) & mask) != badval) {
- func_exit ();
- return 1;
- }
-
-- for (i=0; i < TIMEOUT_2 > 0;i++) {
-+ for (i=0; i < TIMEOUT_2 ;i++) {
- if ((read_sx_byte (board, offset) & mask) != badval) {
- func_exit ();
- return 1;
-diff -rupN linux-2.4.32/drivers/char/tpqic02.c linux-2.4.32.more-gcc4-fixes-v1/drivers/char/tpqic02.c
---- linux-2.4.32/drivers/char/tpqic02.c 2004-08-08 10:56:31.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/char/tpqic02.c 2005-11-17 13:31:16.000000000 +0100
-@@ -202,6 +202,7 @@ static int mode_access; /* access mode:
-
- static int qic02_get_resources(void);
- static void qic02_release_resources(void);
-+static void finish_rw(int cmd);
-
- /* This is a pointer to the actual kernel buffer where the interrupt routines
- * read from/write to. It is needed because the DMA channels 1 and 3 cannot
-@@ -820,7 +821,6 @@ static int get_ext_status3(void)
- static int tp_sense(int ignore)
- {
- unsigned err = 0, exnr = 0, gs = 0;
-- static void finish_rw(int cmd);
-
- if (TPQDBG(SENSE_TEXT))
- printk(TPQIC02_NAME ": tp_sense(ignore=0x%x) enter\n",
-@@ -2173,16 +2173,6 @@ static ssize_t qic02_tape_write(struct f
- * Don't rewind if the minor bits specify density 0.
- */
-
--static int qic02_tape_open(struct inode *inode, struct file *filp)
--{
-- static int qic02_tape_open_no_use_count(struct inode *,
-- struct file *);
-- int open_error;
--
-- open_error = qic02_tape_open_no_use_count(inode, filp);
-- return open_error;
--}
--
- static int qic02_tape_open_no_use_count(struct inode *inode,
- struct file *filp)
- {
-@@ -2385,6 +2375,14 @@ static int qic02_tape_open_no_use_count(
- } /* qic02_tape_open */
-
-
-+static int qic02_tape_open(struct inode *inode, struct file *filp)
-+{
-+ int open_error;
-+
-+ open_error = qic02_tape_open_no_use_count(inode, filp);
-+ return open_error;
-+}
-+
- static int qic02_tape_release(struct inode *inode, struct file *filp)
- {
- kdev_t dev = inode->i_rdev;
-diff -rupN linux-2.4.32/drivers/i2c/i2c-core.c linux-2.4.32.more-gcc4-fixes-v1/drivers/i2c/i2c-core.c
---- linux-2.4.32/drivers/i2c/i2c-core.c 2005-06-01 18:02:21.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/i2c/i2c-core.c 2005-11-17 13:31:16.000000000 +0100
-@@ -720,7 +720,7 @@ int i2cproc_cleanup(void)
- * ----------------------------------------------------
- */
-
--int i2c_transfer(struct i2c_adapter * adap, struct i2c_msg msgs[],int num)
-+int i2c_transfer(struct i2c_adapter * adap, struct i2c_msg *msgs,int num)
- {
- int ret;
-
-@@ -750,7 +750,7 @@ int i2c_master_send(struct i2c_client *c
- msg.addr = client->addr;
- msg.flags = client->flags & I2C_M_TEN;
- msg.len = count;
-- (const char *)msg.buf = buf;
-+ msg.buf = (char *)buf;
-
- DEB2(printk(KERN_DEBUG "i2c-core.o: master_send: writing %d bytes on %s.\n",
- count,client->adapter->name));
-diff -rupN linux-2.4.32/drivers/i2c/i2c-proc.c linux-2.4.32.more-gcc4-fixes-v1/drivers/i2c/i2c-proc.c
---- linux-2.4.32/drivers/i2c/i2c-proc.c 2005-01-19 18:00:53.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/i2c/i2c-proc.c 2005-11-17 13:31:16.000000000 +0100
-@@ -205,7 +205,7 @@ void i2c_deregister_entry(int id)
- table = i2c_entries[id]->ctl_table;
- unregister_sysctl_table(i2c_entries[id]);
- /* 2-step kfree needed to keep gcc happy about const points */
-- (const char *) temp = table[4].procname;
-+ temp = (char *) table[4].procname;
- kfree(temp);
- kfree(table);
- i2c_entries[id] = NULL;
-@@ -287,7 +287,7 @@ int i2c_proc_chips(ctl_table * ctl, int
- if(copy_to_user(buffer, BUF, buflen))
- return -EFAULT;
- curbufsize += buflen;
-- (char *) buffer += buflen;
-+ buffer = (char *) buffer + buflen;
- }
- *lenp = curbufsize;
- filp->f_pos += curbufsize;
-@@ -318,7 +318,7 @@ int i2c_sysctl_chips(ctl_table * table,
- sizeof(struct
- i2c_chips_data)))
- return -EFAULT;
-- (char *) oldval +=
-+ oldval = (char *) oldval +
- sizeof(struct i2c_chips_data);
- nrels++;
- }
-@@ -473,7 +473,7 @@ int i2c_parse_reals(int *nrels, void *bu
- !((ret=get_user(nextchar, (char *) buffer))) &&
- isspace((int) nextchar)) {
- bufsize--;
-- ((char *) buffer)++;
-+ buffer = (char *) buffer + 1;
- }
-
- if (ret)
-@@ -492,7 +492,7 @@ int i2c_parse_reals(int *nrels, void *bu
- && (nextchar == '-')) {
- min = 1;
- bufsize--;
-- ((char *) buffer)++;
-+ buffer = (char *) buffer + 1;
- }
- if (ret)
- return -EFAULT;
-@@ -503,7 +503,7 @@ int i2c_parse_reals(int *nrels, void *bu
- isdigit((int) nextchar)) {
- res = res * 10 + nextchar - '0';
- bufsize--;
-- ((char *) buffer)++;
-+ buffer = (char *) buffer + 1;
- }
- if (ret)
- return -EFAULT;
-@@ -517,7 +517,7 @@ int i2c_parse_reals(int *nrels, void *bu
- if (bufsize && (nextchar == '.')) {
- /* Skip the dot */
- bufsize--;
-- ((char *) buffer)++;
-+ buffer = (char *) buffer + 1;
-
- /* Read digits while they are significant */
- while (bufsize && (mag > 0) &&
-@@ -526,7 +526,7 @@ int i2c_parse_reals(int *nrels, void *bu
- res = res * 10 + nextchar - '0';
- mag--;
- bufsize--;
-- ((char *) buffer)++;
-+ buffer = (char *) buffer + 1;
- }
- if (ret)
- return -EFAULT;
-@@ -542,7 +542,7 @@ int i2c_parse_reals(int *nrels, void *bu
- !((ret=get_user(nextchar, (char *) buffer))) &&
- !isspace((int) nextchar)) {
- bufsize--;
-- ((char *) buffer)++;
-+ buffer = (char *) buffer + 1;
- }
- if (ret)
- return -EFAULT;
-@@ -574,7 +574,7 @@ int i2c_write_reals(int nrels, void *buf
- if(put_user(' ', (char *) buffer))
- return -EFAULT;
- curbufsize++;
-- ((char *) buffer)++;
-+ buffer = (char *) buffer + 1;
- }
-
- /* Fill BUF with the representation of the next string */
-@@ -615,7 +615,7 @@ int i2c_write_reals(int nrels, void *buf
- if(copy_to_user(buffer, BUF, buflen))
- return -EFAULT;
- curbufsize += buflen;
-- (char *) buffer += buflen;
-+ buffer = (char *) buffer + buflen;
-
- nr++;
- }
-diff -rupN linux-2.4.32/drivers/ide/legacy/hd.c linux-2.4.32.more-gcc4-fixes-v1/drivers/ide/legacy/hd.c
---- linux-2.4.32/drivers/ide/legacy/hd.c 2003-06-14 13:30:22.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/ide/legacy/hd.c 2005-11-17 13:31:16.000000000 +0100
-@@ -694,7 +694,11 @@ static int hd_release(struct inode * ino
- return 0;
- }
-
--extern struct block_device_operations hd_fops;
-+static struct block_device_operations hd_fops = {
-+ open: hd_open,
-+ release: hd_release,
-+ ioctl: hd_ioctl,
-+};
-
- static struct gendisk hd_gendisk = {
- major: MAJOR_NR,
-@@ -718,12 +722,6 @@ static void hd_interrupt(int irq, void *
- sti();
- }
-
--static struct block_device_operations hd_fops = {
-- open: hd_open,
-- release: hd_release,
-- ioctl: hd_ioctl,
--};
--
- /*
- * This is the hard disk IRQ description. The SA_INTERRUPT in sa_flags
- * means we run the IRQ-handler with interrupts disabled: this is bad for
-diff -rupN linux-2.4.32/drivers/ieee1394/highlevel.c linux-2.4.32.more-gcc4-fixes-v1/drivers/ieee1394/highlevel.c
---- linux-2.4.32/drivers/ieee1394/highlevel.c 2003-11-29 00:28:11.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/ieee1394/highlevel.c 2005-11-17 13:31:16.000000000 +0100
-@@ -500,7 +500,7 @@ int highlevel_read(struct hpsb_host *hos
- rcode = RCODE_TYPE_ERROR;
- }
-
-- (u8 *)data += partlength;
-+ data += partlength;
- length -= partlength;
- addr += partlength;
-
-@@ -546,7 +546,7 @@ int highlevel_write(struct hpsb_host *ho
- rcode = RCODE_TYPE_ERROR;
- }
-
-- (u8 *)data += partlength;
-+ data += partlength;
- length -= partlength;
- addr += partlength;
-
-diff -rupN linux-2.4.32/drivers/isdn/eicon/eicon.h linux-2.4.32.more-gcc4-fixes-v1/drivers/isdn/eicon/eicon.h
---- linux-2.4.32/drivers/isdn/eicon/eicon.h 2002-08-07 00:52:20.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/isdn/eicon/eicon.h 2005-11-17 13:31:16.000000000 +0100
-@@ -344,7 +344,6 @@ typedef struct eicon_card {
-
- #include "eicon_idi.h"
-
--extern eicon_card *cards;
- extern char *eicon_ctype_name[];
-
-
-diff -rupN linux-2.4.32/drivers/isdn/hisax/hfc_pci.c linux-2.4.32.more-gcc4-fixes-v1/drivers/isdn/hisax/hfc_pci.c
---- linux-2.4.32/drivers/isdn/hisax/hfc_pci.c 2004-11-17 18:36:42.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/isdn/hisax/hfc_pci.c 2005-11-17 13:31:16.000000000 +0100
-@@ -1742,7 +1742,7 @@ setup_hfcpci(struct IsdnCard *card)
- /* Allocate memory for FIFOS */
- /* Because the HFC-PCI needs a 32K physical alignment, we */
- /* need to allocate the double mem and align the address */
-- if (!((void *) cs->hw.hfcpci.share_start = kmalloc(65536, GFP_KERNEL))) {
-+ if (!(cs->hw.hfcpci.share_start = kmalloc(65536, GFP_KERNEL))) {
- printk(KERN_WARNING "HFC-PCI: Error allocating memory for FIFO!\n");
- return 0;
- }
-diff -rupN linux-2.4.32/drivers/md/lvm-internal.h linux-2.4.32.more-gcc4-fixes-v1/drivers/md/lvm-internal.h
---- linux-2.4.32/drivers/md/lvm-internal.h 2003-11-29 00:28:12.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/md/lvm-internal.h 2005-11-17 13:31:16.000000000 +0100
-@@ -45,7 +45,6 @@ extern int loadtime;
- extern const char *const lvm_name;
-
-
--extern uint vg_count;
- extern vg_t *vg[];
- extern struct file_operations lvm_chr_fops;
-
-diff -rupN linux-2.4.32/drivers/media/video/bttvp.h linux-2.4.32.more-gcc4-fixes-v1/drivers/media/video/bttvp.h
---- linux-2.4.32/drivers/media/video/bttvp.h 2003-11-29 00:28:12.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/media/video/bttvp.h 2005-11-17 13:31:16.000000000 +0100
-@@ -58,7 +58,6 @@ extern int pvr_boot(struct bttv *btv);
-
- #define BTTV_MAX 16
- extern unsigned int bttv_num; /* number of Bt848s in use */
--extern struct bttv bttvs[BTTV_MAX];
-
- #define UNSET -1U
-
-@@ -203,6 +202,8 @@ struct bttv {
- int shutdown;
- void (*audio_hook)(struct bttv *btv, struct video_audio *v, int set);
- };
-+
-+extern struct bttv bttvs[BTTV_MAX];
- #endif
-
- #define btwrite(dat,adr) writel((dat), (char *) (btv->bt848_mem+(adr)))
-diff -rupN linux-2.4.32/drivers/media/video/videodev.c linux-2.4.32.more-gcc4-fixes-v1/drivers/media/video/videodev.c
---- linux-2.4.32/drivers/media/video/videodev.c 2004-08-08 10:56:31.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/media/video/videodev.c 2005-11-17 13:31:16.000000000 +0100
-@@ -489,7 +489,18 @@ static void videodev_proc_destroy_dev (s
-
- #endif /* CONFIG_VIDEO_PROC_FS */
-
--extern struct file_operations video_fops;
-+static struct file_operations video_fops=
-+{
-+ owner: THIS_MODULE,
-+ llseek: no_llseek,
-+ read: video_read,
-+ write: video_write,
-+ ioctl: video_ioctl,
-+ mmap: video_mmap,
-+ open: video_open,
-+ release: video_release,
-+ poll: video_poll,
-+};
-
- /**
- * video_register_device - register video4linux devices
-@@ -633,19 +644,6 @@ void video_unregister_device(struct vide
- }
-
-
--static struct file_operations video_fops=
--{
-- owner: THIS_MODULE,
-- llseek: no_llseek,
-- read: video_read,
-- write: video_write,
-- ioctl: video_ioctl,
-- mmap: video_mmap,
-- open: video_open,
-- release: video_release,
-- poll: video_poll,
--};
--
- /*
- * Initialise video for linux
- */
-diff -rupN linux-2.4.32/drivers/net/3c507.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/3c507.c
---- linux-2.4.32/drivers/net/3c507.c 2003-11-29 00:28:12.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/3c507.c 2005-11-17 13:31:16.000000000 +0100
-@@ -306,6 +306,7 @@ static void el16_tx_timeout (struct net_
- static void hardware_send_packet(struct net_device *dev, void *buf, short length, short pad);
- static void init_82586_mem(struct net_device *dev);
- static struct ethtool_ops netdev_ethtool_ops;
-+static void init_rx_bufs(struct net_device *);
-
-
- /* Check for a network adaptor of this type, and return '0' iff one exists.
-@@ -602,7 +603,6 @@ static void el16_interrupt(int irq, void
- }
-
- if ((status & 0x0070) != 0x0040 && netif_running(dev)) {
-- static void init_rx_bufs(struct net_device *);
- /* The Rx unit is not ready, it must be hung. Restart the receiver by
- initializing the rx buffers, and issuing an Rx start command. */
- if (net_debug)
-diff -rupN linux-2.4.32/drivers/net/acenic.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/acenic.c
---- linux-2.4.32/drivers/net/acenic.c 2003-08-25 20:07:43.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/acenic.c 2005-11-17 13:31:16.000000000 +0100
-@@ -594,6 +594,7 @@ static struct net_device *root_dev;
-
- static int probed __initdata = 0;
-
-+static void ace_watchdog(struct net_device *dev);
-
- int __devinit acenic_probe (ACE_PROBE_ARG)
- {
-@@ -665,7 +666,6 @@ int __devinit acenic_probe (ACE_PROBE_AR
- dev->vlan_rx_kill_vid = ace_vlan_rx_kill_vid;
- #endif
- if (1) {
-- static void ace_watchdog(struct net_device *dev);
- dev->tx_timeout = &ace_watchdog;
- dev->watchdog_timeo = 5*HZ;
- }
-diff -rupN linux-2.4.32/drivers/net/arcnet/arcnet.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/arcnet/arcnet.c
---- linux-2.4.32/drivers/net/arcnet/arcnet.c 2003-08-25 20:07:43.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/arcnet/arcnet.c 2005-11-17 13:31:16.000000000 +0100
-@@ -277,7 +277,7 @@ static void release_arcbuf(struct net_de
- BUGLVL(D_DURING) {
- BUGMSG(D_DURING, "release_arcbuf: freed #%d; buffer queue is now: ",
- bufnum);
-- for (i = lp->next_buf; i != lp->first_free_buf; i = ++i % 5)
-+ for (i = lp->next_buf; i != lp->first_free_buf; i = (i+1) % 5)
- BUGMSG2(D_DURING, "#%d ", lp->buf_queue[i]);
- BUGMSG2(D_DURING, "\n");
- }
-@@ -310,7 +310,7 @@ static int get_arcbuf(struct net_device
-
- BUGLVL(D_DURING) {
- BUGMSG(D_DURING, "get_arcbuf: got #%d; buffer queue is now: ", buf);
-- for (i = lp->next_buf; i != lp->first_free_buf; i = ++i % 5)
-+ for (i = lp->next_buf; i != lp->first_free_buf; i = (i+1) % 5)
- BUGMSG2(D_DURING, "#%d ", lp->buf_queue[i]);
- BUGMSG2(D_DURING, "\n");
- }
-diff -rupN linux-2.4.32/drivers/net/arlan.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/arlan.c
---- linux-2.4.32/drivers/net/arlan.c 2002-08-07 00:52:20.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/arlan.c 2005-11-17 13:31:16.000000000 +0100
-@@ -12,7 +12,7 @@
- # error FIXME: this driver requires a 32-bit platform
- #endif
-
--static const char *arlan_version = "C.Jennigs 97 & Elmer.Joandi@ut.ee Oct'98, http://www.ylenurme.ee/~elmer/655/";
-+const char *arlan_version = "C.Jennigs 97 & Elmer.Joandi@ut.ee Oct'98, http://www.ylenurme.ee/~elmer/655/";
-
- struct net_device *arlan_device[MAX_ARLANS];
- int last_arlan;
-diff -rupN linux-2.4.32/drivers/net/arlan.h linux-2.4.32.more-gcc4-fixes-v1/drivers/net/arlan.h
---- linux-2.4.32/drivers/net/arlan.h 2001-03-30 19:05:06.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/arlan.h 2005-11-17 13:31:16.000000000 +0100
-@@ -47,7 +47,6 @@ extern int init_arlan_proc(void);
-
- extern struct net_device *arlan_device[MAX_ARLANS];
- extern int arlan_debug;
--extern char * siteName;
- extern int arlan_entry_debug;
- extern int arlan_exit_debug;
- extern int testMemory;
-diff -rupN linux-2.4.32/drivers/net/bonding/bond_alb.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/bonding/bond_alb.c
---- linux-2.4.32/drivers/net/bonding/bond_alb.c 2004-04-14 20:22:20.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/bonding/bond_alb.c 2005-11-17 13:31:16.000000000 +0100
-@@ -1275,7 +1275,7 @@ void bond_alb_deinitialize(struct bondin
- int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
- {
- struct bonding *bond = bond_dev->priv;
-- struct ethhdr *eth_data = (struct ethhdr *)skb->mac.raw = skb->data;
-+ struct ethhdr *eth_data;
- struct alb_bond_info *bond_info = &(BOND_ALB_INFO(bond));
- struct slave *tx_slave = NULL;
- static u32 ip_bcast = 0xffffffff;
-@@ -1285,6 +1285,9 @@ int bond_alb_xmit(struct sk_buff *skb, s
- u8 *hash_start = NULL;
- int res = 1;
-
-+ skb->mac.raw = (unsigned char *)skb->data;
-+ eth_data = (struct ethhdr *)skb->mac.raw;
-+
- /* make sure that the curr_active_slave and the slaves list do
- * not change during tx
- */
-diff -rupN linux-2.4.32/drivers/net/de4x5.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/de4x5.c
---- linux-2.4.32/drivers/net/de4x5.c 2004-02-18 15:16:23.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/de4x5.c 2005-11-17 13:31:16.000000000 +0100
-@@ -5109,7 +5109,7 @@ mii_get_phy(struct net_device *dev)
- lp->useMII = TRUE;
-
- /* Search the MII address space for possible PHY devices */
-- for (n=0, lp->mii_cnt=0, i=1; !((i==1) && (n==1)); i=(++i)%DE4X5_MAX_MII) {
-+ for (n=0, lp->mii_cnt=0, i=1; !((i==1) && (n==1)); i=(i+1)%DE4X5_MAX_MII) {
- lp->phy[lp->active].addr = i;
- if (i==0) n++; /* Count cycles */
- while (de4x5_reset_phy(dev)<0) udelay(100);/* Wait for reset */
-diff -rupN linux-2.4.32/drivers/net/depca.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/depca.c
---- linux-2.4.32/drivers/net/depca.c 2003-06-14 13:30:23.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/depca.c 2005-11-17 13:31:16.000000000 +0100
-@@ -1746,7 +1746,7 @@ static int load_packet(struct net_device
-
- /* set up the buffer descriptors */
- len = (skb->len < ETH_ZLEN) ? ETH_ZLEN : skb->len;
-- for (i = entry; i != end; i = (++i) & lp->txRingMask) {
-+ for (i = entry; i != end; i = (i+1) & lp->txRingMask) {
- /* clean out flags */
- writel(readl(&lp->tx_ring[i].base) & ~T_FLAGS, &lp->tx_ring[i].base);
- writew(0x0000, &lp->tx_ring[i].misc); /* clears other error flags */
-diff -rupN linux-2.4.32/drivers/net/hamradio/baycom_epp.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/hamradio/baycom_epp.c
---- linux-2.4.32/drivers/net/hamradio/baycom_epp.c 2002-11-30 17:12:25.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/hamradio/baycom_epp.c 2005-11-17 13:31:16.000000000 +0100
-@@ -60,8 +60,10 @@
- #include <net/ax25.h>
- #endif /* CONFIG_AX25 || CONFIG_AX25_MODULE */
-
-+static int my_errno;
-+#define errno my_errno
- #define __KERNEL_SYSCALLS__
--#include <linux/unistd.h>
-+#include <asm/unistd.h>
-
- /* --------------------------------------------------------------------- */
-
-@@ -370,8 +372,6 @@ static char eppconfig_path[256] = "/usr/
-
- static char *envp[] = { "HOME=/", "TERM=linux", "PATH=/usr/bin:/bin", NULL };
-
--static int errno;
--
- static int exec_eppfpga(void *b)
- {
- struct baycom_state *bc = (struct baycom_state *)b;
-diff -rupN linux-2.4.32/drivers/net/hamradio/soundmodem/sm.h linux-2.4.32.more-gcc4-fixes-v1/drivers/net/hamradio/soundmodem/sm.h
---- linux-2.4.32/drivers/net/hamradio/soundmodem/sm.h 2002-08-07 00:52:20.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/hamradio/soundmodem/sm.h 2005-11-17 13:31:16.000000000 +0100
-@@ -151,7 +151,6 @@ struct hardware_info {
- /* --------------------------------------------------------------------- */
-
- extern const char sm_drvname[];
--extern const char sm_drvinfo[];
-
- /* --------------------------------------------------------------------- */
- /*
-@@ -353,7 +352,6 @@ extern const struct hardware_info sm_hw_
-
- extern const struct modem_tx_info *sm_modem_tx_table[];
- extern const struct modem_rx_info *sm_modem_rx_table[];
--extern const struct hardware_info *sm_hardware_table[];
-
- /* --------------------------------------------------------------------- */
-
-diff -rupN linux-2.4.32/drivers/net/irda/donauboe.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/irda/donauboe.c
---- linux-2.4.32/drivers/net/irda/donauboe.c 2003-06-14 13:30:23.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/irda/donauboe.c 2005-11-17 13:31:16.000000000 +0100
-@@ -209,7 +209,11 @@ static int do_probe = DO_PROBE;
- #ifdef CRC_EXPORTED
- extern __u16 const irda_crc16_table[];
- #else
--static __u16 const irda_crc16_table[256] = {
-+/* Our local version of irda_crc16_table must have a unique
-+ name to prevent extern-redefined-as-static compile errors.
-+ This #define redirects the irda_fcs() macro to our version. */
-+#define irda_crc16_table donauboe_irda_crc16_table
-+static __u16 const donauboe_irda_crc16_table[256] = {
- 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
- 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
- 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
-diff -rupN linux-2.4.32/drivers/net/rrunner.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/rrunner.c
---- linux-2.4.32/drivers/net/rrunner.c 2003-06-14 13:30:23.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/rrunner.c 2005-11-17 13:31:16.000000000 +0100
-@@ -234,7 +234,7 @@ int __init rr_hippi_probe (struct net_de
- * Don't access any registes before this point!
- */
- #ifdef __BIG_ENDIAN
-- writel(readl(&regs->HostCtrl) | NO_SWAP, &regs->HostCtrl);
-+ writel(readl(&rrpriv->regs->HostCtrl) | NO_SWAP, &rrpriv->regs->HostCtrl);
- #endif
- /*
- * Need to add a case for little-endian 64-bit hosts here.
-diff -rupN linux-2.4.32/drivers/net/sk98lin/skvpd.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/sk98lin/skvpd.c
---- linux-2.4.32/drivers/net/sk98lin/skvpd.c 2005-04-04 19:56:04.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/sk98lin/skvpd.c 2005-11-17 13:31:16.000000000 +0100
-@@ -472,7 +472,7 @@ SK_IOC IoC) /* IO Context */
- ((unsigned char)pAC->vpd.vpd_buf[0x40] == 0x3c) &&
- ((unsigned char)pAC->vpd.vpd_buf[0x41] == 0x45) ) {
- printk(KERN_INFO "sk98lin : humm... Asus mainboard with buggy VPD ? correcting data.\n");
-- (unsigned char)pAC->vpd.vpd_buf[0x40] = 0x38;
-+ pAC->vpd.vpd_buf[0x40] = 0x38;
- }
-
- /* find the end tag of the RO area */
-diff -rupN linux-2.4.32/drivers/net/wan/comx-hw-comx.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/wan/comx-hw-comx.c
---- linux-2.4.32/drivers/net/wan/comx-hw-comx.c 2002-11-30 17:12:26.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/wan/comx-hw-comx.c 2005-11-17 13:31:16.000000000 +0100
-@@ -92,9 +92,9 @@ struct comx_privdata {
- };
-
- static struct net_device *memory_used[(COMX_MEM_MAX - COMX_MEM_MIN) / 0x10000];
--extern struct comx_hardware hicomx_hw;
--extern struct comx_hardware comx_hw;
--extern struct comx_hardware cmx_hw;
-+static struct comx_hardware hicomx_hw;
-+static struct comx_hardware comx_hw;
-+static struct comx_hardware cmx_hw;
-
- static void COMX_interrupt(int irq, void *dev_id, struct pt_regs *regs);
-
-diff -rupN linux-2.4.32/drivers/net/wan/comx.h linux-2.4.32.more-gcc4-fixes-v1/drivers/net/wan/comx.h
---- linux-2.4.32/drivers/net/wan/comx.h 2001-08-16 23:47:01.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/wan/comx.h 2005-11-17 13:31:16.000000000 +0100
-@@ -212,8 +212,6 @@ typedef u16 word;
- #define SEEK_END 2
- #endif
-
--extern struct proc_dir_entry * comx_root_dir;
--
- extern int comx_register_hardware(struct comx_hardware *comx_hw);
- extern int comx_unregister_hardware(char *name);
- extern int comx_register_protocol(struct comx_protocol *comx_line);
-diff -rupN linux-2.4.32/drivers/net/wan/sdla_fr.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/wan/sdla_fr.c
---- linux-2.4.32/drivers/net/wan/sdla_fr.c 2003-11-29 00:28:12.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/wan/sdla_fr.c 2005-11-17 13:31:16.000000000 +0100
-@@ -3929,7 +3929,7 @@ static int process_udp_mgmt_pkt(sdla_t*
- break;
- }
-
-- (void *)ptr_trc_el = card->u.f.curr_trc_el;
-+ ptr_trc_el = (void *)card->u.f.curr_trc_el;
-
- buffer_length = 0;
- fr_udp_pkt->data[0x00] = 0x00;
-@@ -3980,7 +3980,7 @@ static int process_udp_mgmt_pkt(sdla_t*
-
- ptr_trc_el ++;
- if((void *)ptr_trc_el > card->u.f.trc_el_last)
-- (void*)ptr_trc_el = card->u.f.trc_el_base;
-+ ptr_trc_el = (void*)card->u.f.trc_el_base;
-
- buffer_length += sizeof(fpipemon_trc_hdr_t);
- if(fpipemon_trc->fpipemon_trc_hdr.data_passed) {
-diff -rupN linux-2.4.32/drivers/net/wan/sdladrv.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/wan/sdladrv.c
---- linux-2.4.32/drivers/net/wan/sdladrv.c 2001-09-23 21:06:34.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/wan/sdladrv.c 2005-11-17 13:31:16.000000000 +0100
-@@ -1002,7 +1002,7 @@ int sdla_peek (sdlahw_t* hw, unsigned lo
- peek_by_4 ((unsigned long)hw->dpmbase + curpos, buf,
- curlen);
- addr += curlen;
-- (char*)buf += curlen;
-+ buf = (char*)buf + curlen;
- len -= curlen;
- }
-
-@@ -1086,7 +1086,7 @@ int sdla_poke (sdlahw_t* hw, unsigned lo
- poke_by_4 ((unsigned long)hw->dpmbase + curpos, buf,
- curlen);
- addr += curlen;
-- (char*)buf += curlen;
-+ buf = (char*)buf + curlen;
- len -= curlen;
- }
-
-@@ -2127,10 +2127,10 @@ static int detect_s514 (sdlahw_t* hw)
- modname, hw->irq);
-
- /* map the physical PCI memory to virtual memory */
-- (void *)hw->dpmbase = ioremap((unsigned long)S514_mem_base_addr,
-+ hw->dpmbase = (void *)ioremap((unsigned long)S514_mem_base_addr,
- (unsigned long)MAX_SIZEOF_S514_MEMORY);
- /* map the physical control register memory to virtual memory */
-- (void *)hw->vector = ioremap(
-+ hw->vector = (unsigned long)ioremap(
- (unsigned long)(S514_mem_base_addr + S514_CTRL_REG_BYTE),
- (unsigned long)16);
-
-diff -rupN linux-2.4.32/drivers/net/wan/sdlamain.c linux-2.4.32.more-gcc4-fixes-v1/drivers/net/wan/sdlamain.c
---- linux-2.4.32/drivers/net/wan/sdlamain.c 2003-11-29 00:28:12.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/net/wan/sdlamain.c 2005-11-17 13:31:16.000000000 +0100
-@@ -1027,7 +1027,7 @@ static int ioctl_dump (sdla_t* card, sdl
- #endif
- dump.length -= len;
- dump.offset += len;
-- (char*)dump.ptr += len;
-+ dump.ptr = (char*)dump.ptr + len;
- }
-
- sdla_mapmem(&card->hw, oldvec);/* restore DPM window position */
-diff -rupN linux-2.4.32/drivers/scsi/advansys.c linux-2.4.32.more-gcc4-fixes-v1/drivers/scsi/advansys.c
---- linux-2.4.32/drivers/scsi/advansys.c 2005-01-19 18:00:53.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/scsi/advansys.c 2005-11-17 13:31:16.000000000 +0100
-@@ -3456,9 +3456,9 @@ do { \
- /*
- * Default EEPROM Configuration structure defined in a_init.c.
- */
--extern ADVEEP_3550_CONFIG Default_3550_EEPROM_Config;
--extern ADVEEP_38C0800_CONFIG Default_38C0800_EEPROM_Config;
--extern ADVEEP_38C1600_CONFIG Default_38C1600_EEPROM_Config;
-+static ADVEEP_3550_CONFIG Default_3550_EEPROM_Config;
-+static ADVEEP_38C0800_CONFIG Default_38C0800_EEPROM_Config;
-+static ADVEEP_38C1600_CONFIG Default_38C1600_EEPROM_Config;
-
- /*
- * DvcGetPhyAddr() flag arguments
-@@ -7171,7 +7171,7 @@ asc_isr_callback(ASC_DVC_VAR *asc_dvc_va
- * then return the number of underrun bytes.
- */
- if (scp->request_bufflen != 0 && qdonep->remain_bytes != 0 &&
-- qdonep->remain_bytes <= scp->request_bufflen != 0) {
-+ qdonep->remain_bytes <= scp->request_bufflen) {
- ASC_DBG1(1, "asc_isr_callback: underrun condition %u bytes\n",
- (unsigned) qdonep->remain_bytes);
- scp->resid = qdonep->remain_bytes;
-diff -rupN linux-2.4.32/drivers/scsi/atp870u.c linux-2.4.32.more-gcc4-fixes-v1/drivers/scsi/atp870u.c
---- linux-2.4.32/drivers/scsi/atp870u.c 2002-08-07 00:52:21.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/scsi/atp870u.c 2005-11-17 13:31:16.000000000 +0100
-@@ -807,19 +807,19 @@ oktosend:
- bttl = virt_to_bus(sgpnt[j].address);
- l = sgpnt[j].length;
- while (l > 0x10000) {
-- (unsigned short int) (((unsigned short int *) (prd))[i + 3]) = 0x0000;
-- (unsigned short int) (((unsigned short int *) (prd))[i + 2]) = 0x0000;
-- (unsigned long) (((unsigned long *) (prd))[i >> 1]) = bttl;
-+ (((unsigned short int *) (prd))[i + 3]) = 0x0000;
-+ (((unsigned short int *) (prd))[i + 2]) = 0x0000;
-+ (((unsigned long *) (prd))[i >> 1]) = bttl;
- l -= 0x10000;
- bttl += 0x10000;
- i += 0x04;
- }
-- (unsigned long) (((unsigned long *) (prd))[i >> 1]) = bttl;
-- (unsigned short int) (((unsigned short int *) (prd))[i + 2]) = l;
-- (unsigned short int) (((unsigned short int *) (prd))[i + 3]) = 0;
-+ (((unsigned long *) (prd))[i >> 1]) = bttl;
-+ (((unsigned short int *) (prd))[i + 2]) = l;
-+ (((unsigned short int *) (prd))[i + 3]) = 0;
- i += 0x04;
- }
-- (unsigned short int) (((unsigned short int *) (prd))[i - 1]) = 0x8000;
-+ (((unsigned short int *) (prd))[i - 1]) = 0x8000;
- } else {
- /*
- * For a linear request write a chain of blocks
-@@ -828,16 +828,16 @@ oktosend:
- l = workrequ->request_bufflen;
- i = 0;
- while (l > 0x10000) {
-- (unsigned short int) (((unsigned short int *) (prd))[i + 3]) = 0x0000;
-- (unsigned short int) (((unsigned short int *) (prd))[i + 2]) = 0x0000;
-- (unsigned long) (((unsigned long *) (prd))[i >> 1]) = bttl;
-+ (((unsigned short int *) (prd))[i + 3]) = 0x0000;
-+ (((unsigned short int *) (prd))[i + 2]) = 0x0000;
-+ (((unsigned long *) (prd))[i >> 1]) = bttl;
- l -= 0x10000;
- bttl += 0x10000;
- i += 0x04;
- }
-- (unsigned short int) (((unsigned short int *) (prd))[i + 3]) = 0x8000;
-- (unsigned short int) (((unsigned short int *) (prd))[i + 2]) = l;
-- (unsigned long) (((unsigned long *) (prd))[i >> 1]) = bttl;
-+ (((unsigned short int *) (prd))[i + 3]) = 0x8000;
-+ (((unsigned short int *) (prd))[i + 2]) = l;
-+ (((unsigned long *) (prd))[i >> 1]) = bttl;
- }
- tmpcip = tmpcip + 4;
- dev->id[target_id].prdaddru = virt_to_bus(dev->id[target_id].prd_tableu);
-diff -rupN linux-2.4.32/drivers/scsi/cpqfcTSstructs.h linux-2.4.32.more-gcc4-fixes-v1/drivers/scsi/cpqfcTSstructs.h
---- linux-2.4.32/drivers/scsi/cpqfcTSstructs.h 2004-02-18 15:16:23.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/scsi/cpqfcTSstructs.h 2005-11-17 13:31:16.000000000 +0100
-@@ -965,7 +965,6 @@ void fcSestReset(CPQFCHBA *);
-
- void cpqfc_pci_unmap(struct pci_dev *pcidev, Scsi_Cmnd * cmd, PTACHYON fcChip, __u32 x_ID);
-
--extern const __u8 valid_al_pa[];
- extern const int number_of_al_pa;
-
- #define FCP_RESID_UNDER 0x80000
-diff -rupN linux-2.4.32/drivers/scsi/cpqfcTSworker.c linux-2.4.32.more-gcc4-fixes-v1/drivers/scsi/cpqfcTSworker.c
---- linux-2.4.32/drivers/scsi/cpqfcTSworker.c 2003-06-14 13:30:24.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/scsi/cpqfcTSworker.c 2005-11-17 13:31:16.000000000 +0100
-@@ -48,6 +48,7 @@
- #include "cpqfcTSchip.h"
- #include "cpqfcTSstructs.h"
- #include "cpqfcTStrigger.h"
-+static const __u8 valid_al_pa[];
-
- //#define LOGIN_DBG 1
-
-diff -rupN linux-2.4.32/drivers/sound/wavfront.c linux-2.4.32.more-gcc4-fixes-v1/drivers/sound/wavfront.c
---- linux-2.4.32/drivers/sound/wavfront.c 2001-10-11 13:34:42.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/sound/wavfront.c 2005-11-17 13:31:16.000000000 +0100
-@@ -2484,11 +2484,11 @@ static int __init detect_wavefront (int
- #include <linux/fs.h>
- #include <linux/mm.h>
- #include <linux/slab.h>
--#include <linux/unistd.h>
-+static int my_errno;
-+#define errno my_errno
-+#include <asm/unistd.h>
- #include <asm/uaccess.h>
-
--static int errno;
--
- static int
- wavefront_download_firmware (char *path)
-
-diff -rupN linux-2.4.32/drivers/usb/audio.c linux-2.4.32.more-gcc4-fixes-v1/drivers/usb/audio.c
---- linux-2.4.32/drivers/usb/audio.c 2004-11-17 18:36:42.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/drivers/usb/audio.c 2005-11-17 13:31:16.000000000 +0100
-@@ -462,6 +462,7 @@ struct usb_audio_state {
-
- /* prevent picking up a bogus abs macro */
- #undef abs
-+#define abs my_abs
- static inline int abs(int x)
- {
- if (x < 0)
-diff -rupN linux-2.4.32/fs/intermezzo/presto.c linux-2.4.32.more-gcc4-fixes-v1/fs/intermezzo/presto.c
---- linux-2.4.32/fs/intermezzo/presto.c 2002-11-30 17:12:28.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/fs/intermezzo/presto.c 2005-11-17 13:31:16.000000000 +0100
-@@ -344,8 +344,8 @@ int izo_mark_cache(struct dentry *dentry
- return -EBADF;
- }
-
-- ((int)cache->cache_flags) &= and_flag;
-- ((int)cache->cache_flags) |= or_flag;
-+ cache->cache_flags &= and_flag;
-+ cache->cache_flags |= or_flag;
- if (res)
- *res = (int)cache->cache_flags;
-
-@@ -383,8 +383,8 @@ int izo_mark_fset(struct dentry *dentry,
- make_bad_inode(dentry->d_inode);
- return -EBADF;
- }
-- ((int)fset->fset_flags) &= and_flag;
-- ((int)fset->fset_flags) |= or_flag;
-+ fset->fset_flags &= and_flag;
-+ fset->fset_flags |= or_flag;
- if (res)
- *res = (int)fset->fset_flags;
-
-diff -rupN linux-2.4.32/include/asm-ppc/spinlock.h linux-2.4.32.more-gcc4-fixes-v1/include/asm-ppc/spinlock.h
---- linux-2.4.32/include/asm-ppc/spinlock.h 2003-06-14 13:30:28.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/include/asm-ppc/spinlock.h 2005-11-17 13:31:16.000000000 +0100
-@@ -40,7 +40,6 @@ typedef struct {
- extern void _spin_lock(spinlock_t *lock);
- extern void _spin_unlock(spinlock_t *lock);
- extern int spin_trylock(spinlock_t *lock);
--extern unsigned long __spin_trylock(volatile unsigned long *lock);
-
- #define spin_lock(lp) _spin_lock(lp)
- #define spin_unlock(lp) _spin_unlock(lp)
-diff -rupN linux-2.4.32/include/linux/fsfilter.h linux-2.4.32.more-gcc4-fixes-v1/include/linux/fsfilter.h
---- linux-2.4.32/include/linux/fsfilter.h 2004-11-17 18:36:42.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/include/linux/fsfilter.h 2005-11-17 13:31:16.000000000 +0100
-@@ -70,7 +70,6 @@ struct filter_fs {
- #define FILTER_FS_XFS 3
- #define FILTER_FS_OBDFS 4
- #define FILTER_FS_TMPFS 5
--extern struct filter_fs filter_oppar[FILTER_FS_TYPES];
-
- struct filter_fs *filter_get_filter_fs(const char *cache_type);
- void filter_setup_journal_ops(struct filter_fs *ops, char *cache_type);
-diff -rupN linux-2.4.32/include/linux/generic_serial.h linux-2.4.32.more-gcc4-fixes-v1/include/linux/generic_serial.h
---- linux-2.4.32/include/linux/generic_serial.h 2002-02-26 13:26:58.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/include/linux/generic_serial.h 2005-11-17 13:31:16.000000000 +0100
-@@ -98,6 +98,4 @@ int gs_setserial(struct gs_port *port,
- int gs_getserial(struct gs_port *port, struct serial_struct *sp);
- void gs_got_break(struct gs_port *port);
-
--extern int gs_debug;
--
- #endif
-diff -rupN linux-2.4.32/include/linux/i2c.h linux-2.4.32.more-gcc4-fixes-v1/include/linux/i2c.h
---- linux-2.4.32/include/linux/i2c.h 2005-06-01 18:02:21.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/include/linux/i2c.h 2005-11-17 13:31:16.000000000 +0100
-@@ -70,7 +70,7 @@ extern int i2c_master_recv(struct i2c_cl
-
- /* Transfer num messages.
- */
--extern int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],int num);
-+extern int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msg,int num);
-
- /*
- * Some adapter types (i.e. PCF 8584 based ones) may support slave behaviuor.
-@@ -197,7 +197,7 @@ struct i2c_algorithm {
- to NULL. If an adapter algorithm can do SMBus access, set
- smbus_xfer. If set to NULL, the SMBus protocol is simulated
- using common I2C messages */
-- int (*master_xfer)(struct i2c_adapter *adap,struct i2c_msg msgs[],
-+ int (*master_xfer)(struct i2c_adapter *adap,struct i2c_msg *msgs,
- int num);
- int (*smbus_xfer) (struct i2c_adapter *adap, u16 addr,
- unsigned short flags, char read_write,
-diff -rupN linux-2.4.32/include/linux/intermezzo_fs.h linux-2.4.32.more-gcc4-fixes-v1/include/linux/intermezzo_fs.h
---- linux-2.4.32/include/linux/intermezzo_fs.h 2005-01-19 18:00:53.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/include/linux/intermezzo_fs.h 2005-11-17 13:31:16.000000000 +0100
-@@ -321,7 +321,6 @@ int presto_fwrite(struct file *file, con
- int presto_ispresto(struct inode *);
-
- /* super.c */
--extern struct file_system_type presto_fs_type;
- extern int init_intermezzo_fs(void);
-
- /* fileset.c */
-diff -rupN linux-2.4.32/include/linux/nbd.h linux-2.4.32.more-gcc4-fixes-v1/include/linux/nbd.h
---- linux-2.4.32/include/linux/nbd.h 2002-08-07 00:52:26.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/include/linux/nbd.h 2005-11-17 13:31:16.000000000 +0100
-@@ -29,34 +29,6 @@
-
- #include <linux/blk.h>
-
--#ifdef PARANOIA
--extern int requests_in;
--extern int requests_out;
--#endif
--
--static void
--nbd_end_request(struct request *req)
--{
-- struct buffer_head *bh;
-- unsigned nsect;
-- unsigned long flags;
-- int uptodate = (req->errors == 0) ? 1 : 0;
--
--#ifdef PARANOIA
-- requests_out++;
--#endif
-- spin_lock_irqsave(&io_request_lock, flags);
-- while((bh = req->bh) != NULL) {
-- nsect = bh->b_size >> 9;
-- blk_finished_io(nsect);
-- req->bh = bh->b_reqnext;
-- bh->b_reqnext = NULL;
-- bh->b_end_io(bh, uptodate);
-- }
-- blkdev_release_request(req);
-- spin_unlock_irqrestore(&io_request_lock, flags);
--}
--
- #define MAX_NBD 128
-
- struct nbd_device {
-diff -rupN linux-2.4.32/include/net/irda/irlan_event.h linux-2.4.32.more-gcc4-fixes-v1/include/net/irda/irlan_event.h
---- linux-2.4.32/include/net/irda/irlan_event.h 1999-03-09 11:36:02.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/include/net/irda/irlan_event.h 2005-11-17 13:31:16.000000000 +0100
-@@ -67,8 +67,6 @@ typedef enum {
- IRLAN_WATCHDOG_TIMEOUT,
- } IRLAN_EVENT;
-
--extern char *irlan_state[];
--
- void irlan_do_client_event(struct irlan_cb *self, IRLAN_EVENT event,
- struct sk_buff *skb);
-
-diff -rupN linux-2.4.32/include/net/irda/irttp.h linux-2.4.32.more-gcc4-fixes-v1/include/net/irda/irttp.h
---- linux-2.4.32/include/net/irda/irttp.h 2003-06-14 13:30:29.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/include/net/irda/irttp.h 2005-11-17 13:31:16.000000000 +0100
-@@ -209,6 +209,4 @@ static inline int irttp_is_primary(struc
- return(irlap_is_primary(self->lsap->lap->irlap));
- }
-
--extern struct irttp_cb *irttp;
--
- #endif /* IRTTP_H */
-diff -rupN linux-2.4.32/include/net/irda/qos.h linux-2.4.32.more-gcc4-fixes-v1/include/net/irda/qos.h
---- linux-2.4.32/include/net/irda/qos.h 2001-07-21 11:47:34.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/include/net/irda/qos.h 2005-11-17 13:31:16.000000000 +0100
-@@ -83,7 +83,6 @@ struct qos_info {
- extern int sysctl_max_baud_rate;
- extern int sysctl_max_inactive_time;
-
--extern __u32 baud_rates[];
- extern __u32 data_sizes[];
- extern __u32 min_turn_times[];
- extern __u32 add_bofs[];
-diff -rupN linux-2.4.32/include/net/udp.h linux-2.4.32.more-gcc4-fixes-v1/include/net/udp.h
---- linux-2.4.32/include/net/udp.h 2005-01-19 18:00:53.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/include/net/udp.h 2005-11-17 13:31:16.000000000 +0100
-@@ -25,6 +25,7 @@
- #include <linux/udp.h>
- #include <linux/poll.h>
- #include <net/sock.h>
-+#include <net/snmp.h>
-
- #define UDP_HTABLE_SIZE 128
-
-diff -rupN linux-2.4.32/net/ipv6/ip6_fib.c linux-2.4.32.more-gcc4-fixes-v1/net/ipv6/ip6_fib.c
---- linux-2.4.32/net/ipv6/ip6_fib.c 2005-11-17 13:27:30.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/net/ipv6/ip6_fib.c 2005-11-17 13:31:16.000000000 +0100
-@@ -95,7 +95,7 @@ static __u32 rt_sernum = 0;
-
- static struct timer_list ip6_fib_timer = { function: fib6_run_gc };
-
--static struct fib6_walker_t fib6_walker_list = {
-+struct fib6_walker_t fib6_walker_list = {
- &fib6_walker_list, &fib6_walker_list,
- };
-
-diff -rupN linux-2.4.32/net/ipv6/sysctl_net_ipv6.c linux-2.4.32.more-gcc4-fixes-v1/net/ipv6/sysctl_net_ipv6.c
---- linux-2.4.32/net/ipv6/sysctl_net_ipv6.c 2004-04-14 20:22:21.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/net/ipv6/sysctl_net_ipv6.c 2005-11-17 13:31:16.000000000 +0100
-@@ -31,17 +31,14 @@ ctl_table ipv6_table[] = {
-
- #ifdef MODULE
- static struct ctl_table_header *ipv6_sysctl_header;
--static struct ctl_table ipv6_root_table[];
--static struct ctl_table ipv6_net_table[];
-
--
--ctl_table ipv6_root_table[] = {
-- {CTL_NET, "net", NULL, 0, 0555, ipv6_net_table},
-+static ctl_table ipv6_net_table[] = {
-+ {NET_IPV6, "ipv6", NULL, 0, 0555, ipv6_table},
- {0}
- };
-
--ctl_table ipv6_net_table[] = {
-- {NET_IPV6, "ipv6", NULL, 0, 0555, ipv6_table},
-+static ctl_table ipv6_root_table[] = {
-+ {CTL_NET, "net", NULL, 0, 0555, ipv6_net_table},
- {0}
- };
-
-diff -rupN linux-2.4.32/net/irda/qos.c linux-2.4.32.more-gcc4-fixes-v1/net/irda/qos.c
---- linux-2.4.32/net/irda/qos.c 2003-11-29 00:28:15.000000000 +0100
-+++ linux-2.4.32.more-gcc4-fixes-v1/net/irda/qos.c 2005-11-17 13:31:16.000000000 +0100
-@@ -97,7 +97,7 @@ static int irlap_param_min_turn_time(voi
- int get);
-
- __u32 min_turn_times[] = { 10000, 5000, 1000, 500, 100, 50, 10, 0 }; /* us */
--__u32 baud_rates[] = { 2400, 9600, 19200, 38400, 57600, 115200, 576000,
-+static __u32 baud_rates[] = { 2400, 9600, 19200, 38400, 57600, 115200, 576000,
- 1152000, 4000000, 16000000 }; /* bps */
- __u32 data_sizes[] = { 64, 128, 256, 512, 1024, 2048 }; /* bytes */
- __u32 add_bofs[] = { 48, 24, 12, 5, 3, 2, 1, 0 }; /* bytes */
-diff -rupN linux-2.4.32/net/khttpd/prototypes.h linux-2.4.32.more-gcc4-fixes-v1/net/khttpd/prototypes.h
---- linux-2.4.32/net/khttpd/prototypes.h 2001-08-16 23:47:03.000000000 +0200
-+++ linux-2.4.32.more-gcc4-fixes-v1/net/khttpd/prototypes.h 2005-11-17 13:31:16.000000000 +0100
-@@ -49,7 +49,6 @@ extern int sysctl_khttpd_stop;
- extern struct khttpd_threadinfo threadinfo[CONFIG_KHTTPD_NUMCPU];
- extern char CurrentTime[];
- extern atomic_t ConnectCount;
--extern struct wait_queue main_wait[CONFIG_KHTTPD_NUMCPU];
-
- /* misc.c */
-
diff --git a/openwrt/target/linux/generic-2.4/patches/008-intel_flashchip_fix.patch b/openwrt/target/linux/generic-2.4/patches/008-intel_flashchip_fix.patch
deleted file mode 100644
index b2397f6249..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/008-intel_flashchip_fix.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-diff -urN linux.old/drivers/mtd/chips/cfi_cmdset_0001.c linux.dev/drivers/mtd/chips/cfi_cmdset_0001.c
---- linux.old/drivers/mtd/chips/cfi_cmdset_0001.c 2004-11-17 12:54:21.000000000 +0100
-+++ linux.dev/drivers/mtd/chips/cfi_cmdset_0001.c 2006-03-16 17:25:04.000000000 +0100
-@@ -28,10 +28,18 @@
- #include <linux/slab.h>
- #include <linux/delay.h>
- #include <linux/interrupt.h>
-+#include <linux/notifier.h>
-+#include <linux/reboot.h>
- #include <linux/mtd/map.h>
- #include <linux/mtd/cfi.h>
- #include <linux/mtd/compatmac.h>
-
-+#ifndef container_of
-+#define container_of(ptr, type, member) ({ \
-+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
-+ (type *)( (char *)__mptr - offsetof(type,member) );})
-+#endif
-+
- // debugging, turns off buffer write mode #define FORCE_WORD_WRITE
-
- static int cfi_intelext_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
-@@ -45,6 +53,7 @@
- static int cfi_intelext_unlock(struct mtd_info *mtd, loff_t ofs, size_t len);
- static int cfi_intelext_suspend (struct mtd_info *);
- static void cfi_intelext_resume (struct mtd_info *);
-+static int cfi_intelext_reboot(struct notifier_block *nb, unsigned long val, void *v);
-
- static void cfi_intelext_destroy(struct mtd_info *);
-
-@@ -288,6 +297,9 @@
- map->fldrv = &cfi_intelext_chipdrv;
- MOD_INC_USE_COUNT;
- mtd->name = map->name;
-+ mtd->reboot_notifier.notifier_call = cfi_intelext_reboot;
-+ register_reboot_notifier(&mtd->reboot_notifier);
-+
- return mtd;
-
- setup_err:
-@@ -1960,10 +1972,40 @@
- }
- }
-
-+
-+static void cfi_intelext_reset(struct mtd_info *mtd)
-+{
-+ struct map_info *map = mtd->priv;
-+ struct cfi_private *cfi = map->fldrv_priv;
-+ int i;
-+ struct flchip *chip;
-+
-+ cfi_intelext_sync(mtd);
-+ for (i=0; i<cfi->numchips; i++) {
-+ chip = &cfi->chips[i];
-+
-+ spin_lock(chip->mutex);
-+ cfi_write(map, CMD(0xFF), 0);
-+ chip->state = FL_READY;
-+ spin_unlock(chip->mutex);
-+ }
-+}
-+
-+static int cfi_intelext_reboot(struct notifier_block *nb, unsigned long val, void *v)
-+{
-+ struct mtd_info *mtd;
-+
-+ mtd = container_of(nb, struct mtd_info, reboot_notifier);
-+ cfi_intelext_reset(mtd);
-+ return NOTIFY_DONE;
-+}
-+
- static void cfi_intelext_destroy(struct mtd_info *mtd)
- {
- struct map_info *map = mtd->priv;
- struct cfi_private *cfi = map->fldrv_priv;
-+ cfi_intelext_reset(mtd);
-+ unregister_reboot_notifier(&mtd->reboot_notifier);
- kfree(cfi->cmdset_priv);
- kfree(cfi->cfiq);
- kfree(cfi);
-diff -urN linux.old/include/linux/mtd/mtd.h linux.dev/include/linux/mtd/mtd.h
---- linux.old/include/linux/mtd/mtd.h 2003-08-25 13:44:44.000000000 +0200
-+++ linux.dev/include/linux/mtd/mtd.h 2006-03-16 17:00:10.000000000 +0100
-@@ -10,6 +10,7 @@
- #include <linux/version.h>
- #include <linux/types.h>
- #include <linux/mtd/compatmac.h>
-+#include <linux/notifier.h>
- #include <linux/module.h>
- #include <linux/uio.h>
-
-@@ -217,6 +218,8 @@
- int (*suspend) (struct mtd_info *mtd);
- void (*resume) (struct mtd_info *mtd);
-
-+ struct notifier_block reboot_notifier;
-+
- void *priv;
- };
-
diff --git a/openwrt/target/linux/generic-2.4/patches/010-disable_old_squashfs_compatibility.patch b/openwrt/target/linux/generic-2.4/patches/010-disable_old_squashfs_compatibility.patch
deleted file mode 100644
index 8647652018..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/010-disable_old_squashfs_compatibility.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -Nur linux-2.4.32/fs/squashfs/Makefile linux-2.4.32-owrt/fs/squashfs/Makefile
---- linux-2.4.32/fs/squashfs/Makefile 2006-03-21 13:47:50.000000000 +0100
-+++ linux-2.4.32-owrt/fs/squashfs/Makefile 2006-03-21 13:48:49.000000000 +0100
-@@ -4,7 +4,7 @@
-
- O_TARGET := squashfs.o
-
--obj-y := inode.o squashfs2_0.o LzmaDecode.o
-+obj-y := inode.o LzmaDecode.o
-
- obj-m := $(O_TARGET)
-
-diff -Nur linux-2.4.32/fs/squashfs/squashfs.h linux-2.4.32-owrt/fs/squashfs/squashfs.h
---- linux-2.4.32/fs/squashfs/squashfs.h 2006-03-21 13:06:10.000000000 +0100
-+++ linux-2.4.32-owrt/fs/squashfs/squashfs.h 2006-03-21 13:48:36.000000000 +0100
-@@ -24,6 +24,9 @@
- #ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
- #undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
- #endif
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#undef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#endif
- #ifdef SQUASHFS_TRACE
- #define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
- #else
diff --git a/openwrt/target/linux/generic-2.4/patches/050-build_flags.patch b/openwrt/target/linux/generic-2.4/patches/050-build_flags.patch
deleted file mode 100644
index 14a207df23..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/050-build_flags.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-diff -ur linux-2.4.32/arch/mips/Makefile linux-2.4.32-openwrt/arch/mips/Makefile
---- linux-2.4.32/arch/mips/Makefile 2005-12-15 13:53:59.000000000 +0100
-+++ linux-2.4.32-openwrt/arch/mips/Makefile 2005-12-15 14:02:33.000000000 +0100
-@@ -44,10 +44,10 @@
- GCCFLAGS := -I $(TOPDIR)/include/asm/gcc
- GCCFLAGS += -G 0 -mno-abicalls -fno-pic -pipe
- GCCFLAGS += $(call check_gcc, -finline-limit=100000,)
--LINKFLAGS += -G 0 -static -n
--MODFLAGS += -mlong-calls
-+LINKFLAGS += -G 0 -static -n -nostdlib
-+MODFLAGS += -mlong-calls -fno-common
-
--ifdef CONFIG_DEBUG_INFO
-+ifdef CONFIG_REMOTE_DEBUG
- GCCFLAGS += -g
- ifdef CONFIG_SB1XXX_CORELIS
- GCCFLAGS += -mno-sched-prolog -fno-omit-frame-pointer
-@@ -69,13 +69,13 @@
- set_gccflags = $(shell \
- while :; do \
- cpu=$(1); isa=-$(2); \
-- for gcc_opt in -march= -mcpu=; do \
-+ for gcc_opt in -march= -mtune=; do \
- $(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \
- -xc /dev/null > /dev/null 2>&1 && \
- break 2; \
- done; \
- cpu=$(3); isa=-$(4); \
-- for gcc_opt in -march= -mcpu=; do \
-+ for gcc_opt in -march= -mtune=; do \
- $(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \
- -xc /dev/null > /dev/null 2>&1 && \
- break 2; \
-@@ -90,7 +90,7 @@
- fi; \
- gas_abi=-Wa,-32; gas_cpu=$$cpu; gas_isa=-Wa,$$isa; \
- while :; do \
-- for gas_opt in -Wa,-march= -Wa,-mcpu=; do \
-+ for gas_opt in -Wa,-march= -Wa,-mtune=; do \
- $(CC) $$gas_abi $$gas_opt$$cpu $$gas_isa -Wa,-Z -c \
- -o /dev/null -xassembler /dev/null > /dev/null 2>&1 && \
- break 2; \
-@@ -172,6 +172,7 @@
- endif
-
- AFLAGS += $(GCCFLAGS)
-+ASFLAGS += $(GCCFLAGS)
- CFLAGS += $(GCCFLAGS)
-
- LD += -m $(ld-emul)
-diff -ur linux-2.4.32/Makefile linux-2.4.32-openwrt/Makefile
---- linux-2.4.32/Makefile 2005-12-15 13:53:59.000000000 +0100
-+++ linux-2.4.32-openwrt/Makefile 2005-12-15 13:59:30.000000000 +0100
-@@ -17,7 +17,7 @@
- FINDHPATH = $(HPATH)/asm $(HPATH)/linux $(HPATH)/scsi $(HPATH)/net $(HPATH)/math-emu
-
- HOSTCC = gcc
--HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
-+HOSTCFLAGS = -Wall -Wstrict-prototypes -Os -fomit-frame-pointer
-
- CROSS_COMPILE =
-
-@@ -88,10 +88,9 @@
- #
- # standard CFLAGS
- #
--
- CPPFLAGS := -D__KERNEL__ -I$(HPATH)
-
--CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes -Wno-trigraphs -O2 \
-+CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes -Wno-trigraphs -Os \
- -fno-strict-aliasing -fno-common
- CFLAGS += -fno-builtin-sprintf
- ifndef CONFIG_FRAME_POINTER
-@@ -104,6 +103,8 @@
- # disable pointer signedness warnings in gcc 4.0
- CFLAGS += $(call check_gcc,-Wno-pointer-sign,)
-
-+CFLAGS += $(call check_gcc, -funit-at-a-time,)
-+
- #
- # ROOT_DEV specifies the default root-device when making the image.
- # This can be either FLOPPY, CURRENT, /dev/xxxx or empty, in which case
diff --git a/openwrt/target/linux/generic-2.4/patches/100-wireless-extension.patch b/openwrt/target/linux/generic-2.4/patches/100-wireless-extension.patch
deleted file mode 100644
index 88e91831ff..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/100-wireless-extension.patch
+++ /dev/null
@@ -1,1121 +0,0 @@
-diff -Nur linux-2.4.32/include/linux/netdevice.h linux-2.4.32-we/include/linux/netdevice.h
---- linux-2.4.32/include/linux/netdevice.h 2004-11-17 12:54:22.000000000 +0100
-+++ linux-2.4.32-we/include/linux/netdevice.h 2006-03-13 12:10:57.000000000 +0100
-@@ -295,7 +295,9 @@
-
- /* List of functions to handle Wireless Extensions (instead of ioctl).
- * See <net/iw_handler.h> for details. Jean II */
-- struct iw_handler_def * wireless_handlers;
-+ const struct iw_handler_def * wireless_handlers;
-+ /* Instance data managed by the core of Wireless Extensions. */
-+ struct iw_public_data * wireless_data;
-
- struct ethtool_ops *ethtool_ops;
-
-diff -Nur linux-2.4.32/include/linux/wireless.h linux-2.4.32-we/include/linux/wireless.h
---- linux-2.4.32/include/linux/wireless.h 2003-11-28 19:26:21.000000000 +0100
-+++ linux-2.4.32-we/include/linux/wireless.h 2006-03-13 12:11:02.000000000 +0100
-@@ -1,10 +1,10 @@
- /*
- * This file define a set of standard wireless extensions
- *
-- * Version : 16 2.4.03
-+ * Version : 18 12.3.05
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-- * Copyright (c) 1997-2002 Jean Tourrilhes, All Rights Reserved.
-+ * Copyright (c) 1997-2005 Jean Tourrilhes, All Rights Reserved.
- */
-
- #ifndef _LINUX_WIRELESS_H
-@@ -47,12 +47,12 @@
- * # include/net/iw_handler.h
- *
- * Note as well that /proc/net/wireless implementation has now moved in :
-- * # include/linux/wireless.c
-+ * # net/core/wireless.c
- *
- * Wireless Events (2002 -> onward) :
- * --------------------------------
- * Events are defined at the end of this file, and implemented in :
-- * # include/linux/wireless.c
-+ * # net/core/wireless.c
- *
- * Other comments :
- * --------------
-@@ -82,7 +82,7 @@
- * (there is some stuff that will be added in the future...)
- * I just plan to increment with each new version.
- */
--#define WIRELESS_EXT 16
-+#define WIRELESS_EXT 18
-
- /*
- * Changes :
-@@ -175,6 +175,28 @@
- * - Remove IW_MAX_GET_SPY because conflict with enhanced spy support
- * - Add SIOCSIWTHRSPY/SIOCGIWTHRSPY and "struct iw_thrspy"
- * - Add IW_ENCODE_TEMP and iw_range->encoding_login_index
-+ *
-+ * V16 to V17
-+ * ----------
-+ * - Add flags to frequency -> auto/fixed
-+ * - Document (struct iw_quality *)->updated, add new flags (INVALID)
-+ * - Wireless Event capability in struct iw_range
-+ * - Add support for relative TxPower (yick !)
-+ *
-+ * V17 to V18 (From Jouni Malinen <jkmaline@cc.hut.fi>)
-+ * ----------
-+ * - Add support for WPA/WPA2
-+ * - Add extended encoding configuration (SIOCSIWENCODEEXT and
-+ * SIOCGIWENCODEEXT)
-+ * - Add SIOCSIWGENIE/SIOCGIWGENIE
-+ * - Add SIOCSIWMLME
-+ * - Add SIOCSIWPMKSA
-+ * - Add struct iw_range bit field for supported encoding capabilities
-+ * - Add optional scan request parameters for SIOCSIWSCAN
-+ * - Add SIOCSIWAUTH/SIOCGIWAUTH for setting authentication and WPA
-+ * related parameters (extensible up to 4096 parameter values)
-+ * - Add wireless events: IWEVGENIE, IWEVMICHAELMICFAILURE,
-+ * IWEVASSOCREQIE, IWEVASSOCRESPIE, IWEVPMKIDCAND
- */
-
- /**************************** CONSTANTS ****************************/
-@@ -249,9 +271,33 @@
- #define SIOCSIWPOWER 0x8B2C /* set Power Management settings */
- #define SIOCGIWPOWER 0x8B2D /* get Power Management settings */
-
-+/* WPA : Generic IEEE 802.11 informatiom element (e.g., for WPA/RSN/WMM).
-+ * This ioctl uses struct iw_point and data buffer that includes IE id and len
-+ * fields. More than one IE may be included in the request. Setting the generic
-+ * IE to empty buffer (len=0) removes the generic IE from the driver. Drivers
-+ * are allowed to generate their own WPA/RSN IEs, but in these cases, drivers
-+ * are required to report the used IE as a wireless event, e.g., when
-+ * associating with an AP. */
-+#define SIOCSIWGENIE 0x8B30 /* set generic IE */
-+#define SIOCGIWGENIE 0x8B31 /* get generic IE */
-+
-+/* WPA : IEEE 802.11 MLME requests */
-+#define SIOCSIWMLME 0x8B16 /* request MLME operation; uses
-+ * struct iw_mlme */
-+/* WPA : Authentication mode parameters */
-+#define SIOCSIWAUTH 0x8B32 /* set authentication mode params */
-+#define SIOCGIWAUTH 0x8B33 /* get authentication mode params */
-+
-+/* WPA : Extended version of encoding configuration */
-+#define SIOCSIWENCODEEXT 0x8B34 /* set encoding token & mode */
-+#define SIOCGIWENCODEEXT 0x8B35 /* get encoding token & mode */
-+
-+/* WPA2 : PMKSA cache management */
-+#define SIOCSIWPMKSA 0x8B36 /* PMKSA cache operation */
-+
- /* -------------------- DEV PRIVATE IOCTL LIST -------------------- */
-
--/* These 16 ioctl are wireless device private.
-+/* These 32 ioctl are wireless device private, for 16 commands.
- * Each driver is free to use them for whatever purpose it chooses,
- * however the driver *must* export the description of those ioctls
- * with SIOCGIWPRIV and *must* use arguments as defined below.
-@@ -266,8 +312,8 @@
- * We now have 32 commands, so a bit more space ;-).
- * Also, all 'odd' commands are only usable by root and don't return the
- * content of ifr/iwr to user (but you are not obliged to use the set/get
-- * convention, just use every other two command).
-- * And I repeat : you are not obliged to use them with iwspy, but you
-+ * convention, just use every other two command). More details in iwpriv.c.
-+ * And I repeat : you are not forced to use them with iwpriv, but you
- * must be compliant with it.
- */
-
-@@ -290,6 +336,34 @@
- #define IWEVCUSTOM 0x8C02 /* Driver specific ascii string */
- #define IWEVREGISTERED 0x8C03 /* Discovered a new node (AP mode) */
- #define IWEVEXPIRED 0x8C04 /* Expired a node (AP mode) */
-+#define IWEVGENIE 0x8C05 /* Generic IE (WPA, RSN, WMM, ..)
-+ * (scan results); This includes id and
-+ * length fields. One IWEVGENIE may
-+ * contain more than one IE. Scan
-+ * results may contain one or more
-+ * IWEVGENIE events. */
-+#define IWEVMICHAELMICFAILURE 0x8C06 /* Michael MIC failure
-+ * (struct iw_michaelmicfailure)
-+ */
-+#define IWEVASSOCREQIE 0x8C07 /* IEs used in (Re)Association Request.
-+ * The data includes id and length
-+ * fields and may contain more than one
-+ * IE. This event is required in
-+ * Managed mode if the driver
-+ * generates its own WPA/RSN IE. This
-+ * should be sent just before
-+ * IWEVREGISTERED event for the
-+ * association. */
-+#define IWEVASSOCRESPIE 0x8C08 /* IEs used in (Re)Association
-+ * Response. The data includes id and
-+ * length fields and may contain more
-+ * than one IE. This may be sent
-+ * between IWEVASSOCREQIE and
-+ * IWEVREGISTERED events for the
-+ * association. */
-+#define IWEVPMKIDCAND 0x8C09 /* PMKID candidate for RSN
-+ * pre-authentication
-+ * (struct iw_pmkid_cand) */
-
- #define IWEVFIRST 0x8C00
-
-@@ -352,6 +426,18 @@
- #define IW_MODE_SECOND 5 /* Secondary master/repeater (backup) */
- #define IW_MODE_MONITOR 6 /* Passive monitor (listen only) */
-
-+/* Statistics flags (bitmask in updated) */
-+#define IW_QUAL_QUAL_UPDATED 0x1 /* Value was updated since last read */
-+#define IW_QUAL_LEVEL_UPDATED 0x2
-+#define IW_QUAL_NOISE_UPDATED 0x4
-+#define IW_QUAL_QUAL_INVALID 0x10 /* Driver doesn't provide value */
-+#define IW_QUAL_LEVEL_INVALID 0x20
-+#define IW_QUAL_NOISE_INVALID 0x40
-+
-+/* Frequency flags */
-+#define IW_FREQ_AUTO 0x00 /* Let the driver decides */
-+#define IW_FREQ_FIXED 0x01 /* Force a specific value */
-+
- /* Maximum number of size of encoding token available
- * they are listed in the range structure */
- #define IW_MAX_ENCODING_SIZES 8
-@@ -390,6 +476,7 @@
- #define IW_TXPOW_TYPE 0x00FF /* Type of value */
- #define IW_TXPOW_DBM 0x0000 /* Value is in dBm */
- #define IW_TXPOW_MWATT 0x0001 /* Value is in mW */
-+#define IW_TXPOW_RELATIVE 0x0002 /* Value is in arbitrary units */
- #define IW_TXPOW_RANGE 0x1000 /* Range of value between min/max */
-
- /* Retry limits and lifetime flags available */
-@@ -412,12 +499,113 @@
- #define IW_SCAN_THIS_MODE 0x0020 /* Scan only this Mode */
- #define IW_SCAN_ALL_RATE 0x0040 /* Scan all Bit-Rates */
- #define IW_SCAN_THIS_RATE 0x0080 /* Scan only this Bit-Rate */
-+/* struct iw_scan_req scan_type */
-+#define IW_SCAN_TYPE_ACTIVE 0
-+#define IW_SCAN_TYPE_PASSIVE 1
- /* Maximum size of returned data */
- #define IW_SCAN_MAX_DATA 4096 /* In bytes */
-
- /* Max number of char in custom event - use multiple of them if needed */
- #define IW_CUSTOM_MAX 256 /* In bytes */
-
-+/* Generic information element */
-+#define IW_GENERIC_IE_MAX 1024
-+
-+/* MLME requests (SIOCSIWMLME / struct iw_mlme) */
-+#define IW_MLME_DEAUTH 0
-+#define IW_MLME_DISASSOC 1
-+
-+/* SIOCSIWAUTH/SIOCGIWAUTH struct iw_param flags */
-+#define IW_AUTH_INDEX 0x0FFF
-+#define IW_AUTH_FLAGS 0xF000
-+/* SIOCSIWAUTH/SIOCGIWAUTH parameters (0 .. 4095)
-+ * (IW_AUTH_INDEX mask in struct iw_param flags; this is the index of the
-+ * parameter that is being set/get to; value will be read/written to
-+ * struct iw_param value field) */
-+#define IW_AUTH_WPA_VERSION 0
-+#define IW_AUTH_CIPHER_PAIRWISE 1
-+#define IW_AUTH_CIPHER_GROUP 2
-+#define IW_AUTH_KEY_MGMT 3
-+#define IW_AUTH_TKIP_COUNTERMEASURES 4
-+#define IW_AUTH_DROP_UNENCRYPTED 5
-+#define IW_AUTH_80211_AUTH_ALG 6
-+#define IW_AUTH_WPA_ENABLED 7
-+#define IW_AUTH_RX_UNENCRYPTED_EAPOL 8
-+#define IW_AUTH_ROAMING_CONTROL 9
-+#define IW_AUTH_PRIVACY_INVOKED 10
-+
-+/* IW_AUTH_WPA_VERSION values (bit field) */
-+#define IW_AUTH_WPA_VERSION_DISABLED 0x00000001
-+#define IW_AUTH_WPA_VERSION_WPA 0x00000002
-+#define IW_AUTH_WPA_VERSION_WPA2 0x00000004
-+
-+/* IW_AUTH_PAIRWISE_CIPHER and IW_AUTH_GROUP_CIPHER values (bit field) */
-+#define IW_AUTH_CIPHER_NONE 0x00000001
-+#define IW_AUTH_CIPHER_WEP40 0x00000002
-+#define IW_AUTH_CIPHER_TKIP 0x00000004
-+#define IW_AUTH_CIPHER_CCMP 0x00000008
-+#define IW_AUTH_CIPHER_WEP104 0x00000010
-+
-+/* IW_AUTH_KEY_MGMT values (bit field) */
-+#define IW_AUTH_KEY_MGMT_802_1X 1
-+#define IW_AUTH_KEY_MGMT_PSK 2
-+
-+/* IW_AUTH_80211_AUTH_ALG values (bit field) */
-+#define IW_AUTH_ALG_OPEN_SYSTEM 0x00000001
-+#define IW_AUTH_ALG_SHARED_KEY 0x00000002
-+#define IW_AUTH_ALG_LEAP 0x00000004
-+
-+/* IW_AUTH_ROAMING_CONTROL values */
-+#define IW_AUTH_ROAMING_ENABLE 0 /* driver/firmware based roaming */
-+#define IW_AUTH_ROAMING_DISABLE 1 /* user space program used for roaming
-+ * control */
-+
-+/* SIOCSIWENCODEEXT definitions */
-+#define IW_ENCODE_SEQ_MAX_SIZE 8
-+/* struct iw_encode_ext ->alg */
-+#define IW_ENCODE_ALG_NONE 0
-+#define IW_ENCODE_ALG_WEP 1
-+#define IW_ENCODE_ALG_TKIP 2
-+#define IW_ENCODE_ALG_CCMP 3
-+/* struct iw_encode_ext ->ext_flags */
-+#define IW_ENCODE_EXT_TX_SEQ_VALID 0x00000001
-+#define IW_ENCODE_EXT_RX_SEQ_VALID 0x00000002
-+#define IW_ENCODE_EXT_GROUP_KEY 0x00000004
-+#define IW_ENCODE_EXT_SET_TX_KEY 0x00000008
-+
-+/* IWEVMICHAELMICFAILURE : struct iw_michaelmicfailure ->flags */
-+#define IW_MICFAILURE_KEY_ID 0x00000003 /* Key ID 0..3 */
-+#define IW_MICFAILURE_GROUP 0x00000004
-+#define IW_MICFAILURE_PAIRWISE 0x00000008
-+#define IW_MICFAILURE_STAKEY 0x00000010
-+#define IW_MICFAILURE_COUNT 0x00000060 /* 1 or 2 (0 = count not supported)
-+ */
-+
-+/* Bit field values for enc_capa in struct iw_range */
-+#define IW_ENC_CAPA_WPA 0x00000001
-+#define IW_ENC_CAPA_WPA2 0x00000002
-+#define IW_ENC_CAPA_CIPHER_TKIP 0x00000004
-+#define IW_ENC_CAPA_CIPHER_CCMP 0x00000008
-+
-+/* Event capability macros - in (struct iw_range *)->event_capa
-+ * Because we have more than 32 possible events, we use an array of
-+ * 32 bit bitmasks. Note : 32 bits = 0x20 = 2^5. */
-+#define IW_EVENT_CAPA_BASE(cmd) ((cmd >= SIOCIWFIRSTPRIV) ? \
-+ (cmd - SIOCIWFIRSTPRIV + 0x60) : \
-+ (cmd - SIOCSIWCOMMIT))
-+#define IW_EVENT_CAPA_INDEX(cmd) (IW_EVENT_CAPA_BASE(cmd) >> 5)
-+#define IW_EVENT_CAPA_MASK(cmd) (1 << (IW_EVENT_CAPA_BASE(cmd) & 0x1F))
-+/* Event capability constants - event autogenerated by the kernel
-+ * This list is valid for most 802.11 devices, customise as needed... */
-+#define IW_EVENT_CAPA_K_0 (IW_EVENT_CAPA_MASK(0x8B04) | \
-+ IW_EVENT_CAPA_MASK(0x8B06) | \
-+ IW_EVENT_CAPA_MASK(0x8B1A))
-+#define IW_EVENT_CAPA_K_1 (IW_EVENT_CAPA_MASK(0x8B2A))
-+/* "Easy" macro to set events in iw_range (less efficient) */
-+#define IW_EVENT_CAPA_SET(event_capa, cmd) (event_capa[IW_EVENT_CAPA_INDEX(cmd)] |= IW_EVENT_CAPA_MASK(cmd))
-+#define IW_EVENT_CAPA_SET_KERNEL(event_capa) {event_capa[0] |= IW_EVENT_CAPA_K_0; event_capa[1] |= IW_EVENT_CAPA_K_1; }
-+
-+
- /****************************** TYPES ******************************/
-
- /* --------------------------- SUBTYPES --------------------------- */
-@@ -456,7 +644,7 @@
- __s32 m; /* Mantissa */
- __s16 e; /* Exponent */
- __u8 i; /* List index (when in range struct) */
-- __u8 pad; /* Unused - just for alignement */
-+ __u8 flags; /* Flags (fixed/auto) */
- };
-
- /*
-@@ -507,6 +695,132 @@
- struct iw_quality high; /* High threshold */
- };
-
-+/*
-+ * Optional data for scan request
-+ *
-+ * Note: these optional parameters are controlling parameters for the
-+ * scanning behavior, these do not apply to getting scan results
-+ * (SIOCGIWSCAN). Drivers are expected to keep a local BSS table and
-+ * provide a merged results with all BSSes even if the previous scan
-+ * request limited scanning to a subset, e.g., by specifying an SSID.
-+ * Especially, scan results are required to include an entry for the
-+ * current BSS if the driver is in Managed mode and associated with an AP.
-+ */
-+struct iw_scan_req
-+{
-+ __u8 scan_type; /* IW_SCAN_TYPE_{ACTIVE,PASSIVE} */
-+ __u8 essid_len;
-+ __u8 num_channels; /* num entries in channel_list;
-+ * 0 = scan all allowed channels */
-+ __u8 flags; /* reserved as padding; use zero, this may
-+ * be used in the future for adding flags
-+ * to request different scan behavior */
-+ struct sockaddr bssid; /* ff:ff:ff:ff:ff:ff for broadcast BSSID or
-+ * individual address of a specific BSS */
-+
-+ /*
-+ * Use this ESSID if IW_SCAN_THIS_ESSID flag is used instead of using
-+ * the current ESSID. This allows scan requests for specific ESSID
-+ * without having to change the current ESSID and potentially breaking
-+ * the current association.
-+ */
-+ __u8 essid[IW_ESSID_MAX_SIZE];
-+
-+ /*
-+ * Optional parameters for changing the default scanning behavior.
-+ * These are based on the MLME-SCAN.request from IEEE Std 802.11.
-+ * TU is 1.024 ms. If these are set to 0, driver is expected to use
-+ * reasonable default values. min_channel_time defines the time that
-+ * will be used to wait for the first reply on each channel. If no
-+ * replies are received, next channel will be scanned after this. If
-+ * replies are received, total time waited on the channel is defined by
-+ * max_channel_time.
-+ */
-+ __u32 min_channel_time; /* in TU */
-+ __u32 max_channel_time; /* in TU */
-+
-+ struct iw_freq channel_list[IW_MAX_FREQUENCIES];
-+};
-+
-+/* ------------------------- WPA SUPPORT ------------------------- */
-+
-+/*
-+ * Extended data structure for get/set encoding (this is used with
-+ * SIOCSIWENCODEEXT/SIOCGIWENCODEEXT. struct iw_point and IW_ENCODE_*
-+ * flags are used in the same way as with SIOCSIWENCODE/SIOCGIWENCODE and
-+ * only the data contents changes (key data -> this structure, including
-+ * key data).
-+ *
-+ * If the new key is the first group key, it will be set as the default
-+ * TX key. Otherwise, default TX key index is only changed if
-+ * IW_ENCODE_EXT_SET_TX_KEY flag is set.
-+ *
-+ * Key will be changed with SIOCSIWENCODEEXT in all cases except for
-+ * special "change TX key index" operation which is indicated by setting
-+ * key_len = 0 and ext_flags |= IW_ENCODE_EXT_SET_TX_KEY.
-+ *
-+ * tx_seq/rx_seq are only used when respective
-+ * IW_ENCODE_EXT_{TX,RX}_SEQ_VALID flag is set in ext_flags. Normal
-+ * TKIP/CCMP operation is to set RX seq with SIOCSIWENCODEEXT and start
-+ * TX seq from zero whenever key is changed. SIOCGIWENCODEEXT is normally
-+ * used only by an Authenticator (AP or an IBSS station) to get the
-+ * current TX sequence number. Using TX_SEQ_VALID for SIOCSIWENCODEEXT and
-+ * RX_SEQ_VALID for SIOCGIWENCODEEXT are optional, but can be useful for
-+ * debugging/testing.
-+ */
-+struct iw_encode_ext
-+{
-+ __u32 ext_flags; /* IW_ENCODE_EXT_* */
-+ __u8 tx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */
-+ __u8 rx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */
-+ struct sockaddr addr; /* ff:ff:ff:ff:ff:ff for broadcast/multicast
-+ * (group) keys or unicast address for
-+ * individual keys */
-+ __u16 alg; /* IW_ENCODE_ALG_* */
-+ __u16 key_len;
-+ __u8 key[0];
-+};
-+
-+/* SIOCSIWMLME data */
-+struct iw_mlme
-+{
-+ __u16 cmd; /* IW_MLME_* */
-+ __u16 reason_code;
-+ struct sockaddr addr;
-+};
-+
-+/* SIOCSIWPMKSA data */
-+#define IW_PMKSA_ADD 1
-+#define IW_PMKSA_REMOVE 2
-+#define IW_PMKSA_FLUSH 3
-+
-+#define IW_PMKID_LEN 16
-+
-+struct iw_pmksa
-+{
-+ __u32 cmd; /* IW_PMKSA_* */
-+ struct sockaddr bssid;
-+ __u8 pmkid[IW_PMKID_LEN];
-+};
-+
-+/* IWEVMICHAELMICFAILURE data */
-+struct iw_michaelmicfailure
-+{
-+ __u32 flags;
-+ struct sockaddr src_addr;
-+ __u8 tsc[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */
-+};
-+
-+/* IWEVPMKIDCAND data */
-+#define IW_PMKID_CAND_PREAUTH 0x00000001 /* RNS pre-authentication enabled */
-+struct iw_pmkid_cand
-+{
-+ __u32 flags; /* IW_PMKID_CAND_* */
-+ __u32 index; /* the smaller the index, the higher the
-+ * priority */
-+ struct sockaddr bssid;
-+};
-+
- /* ------------------------ WIRELESS STATS ------------------------ */
- /*
- * Wireless statistics (used for /proc/net/wireless)
-@@ -610,11 +924,12 @@
- /* Old Frequency (backward compat - moved lower ) */
- __u16 old_num_channels;
- __u8 old_num_frequency;
-- /* Filler to keep "version" at the same offset */
-- __s32 old_freq[6];
-+
-+ /* Wireless event capability bitmasks */
-+ __u32 event_capa[6];
-
- /* signal level threshold range */
-- __s32 sensitivity;
-+ __s32 sensitivity;
-
- /* Quality of link & SNR stuff */
- /* Quality range (link, level, noise)
-@@ -685,6 +1000,8 @@
- struct iw_freq freq[IW_MAX_FREQUENCIES]; /* list */
- /* Note : this frequency list doesn't need to fit channel numbers,
- * because each entry contain its channel index */
-+
-+ __u32 enc_capa; /* IW_ENC_CAPA_* bit field */
- };
-
- /*
-diff -Nur linux-2.4.32/include/net/iw_handler.h linux-2.4.32-we/include/net/iw_handler.h
---- linux-2.4.32/include/net/iw_handler.h 2003-11-28 19:26:21.000000000 +0100
-+++ linux-2.4.32-we/include/net/iw_handler.h 2006-03-13 12:10:57.000000000 +0100
-@@ -1,10 +1,10 @@
- /*
- * This file define the new driver API for Wireless Extensions
- *
-- * Version : 5 4.12.02
-+ * Version : 6 21.6.04
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-- * Copyright (c) 2001-2002 Jean Tourrilhes, All Rights Reserved.
-+ * Copyright (c) 2001-2004 Jean Tourrilhes, All Rights Reserved.
- */
-
- #ifndef _IW_HANDLER_H
-@@ -206,7 +206,7 @@
- * will be needed...
- * I just plan to increment with each new version.
- */
--#define IW_HANDLER_VERSION 5
-+#define IW_HANDLER_VERSION 6
-
- /*
- * Changes :
-@@ -224,11 +224,18 @@
- * V4 to V5
- * --------
- * - Add new spy support : struct iw_spy_data & prototypes
-+ *
-+ * V5 to V6
-+ * --------
-+ * - Change the way we get to spy_data method for added safety
-+ * - Remove spy #ifdef, they are always on -> cleaner code
-+ * - Add IW_DESCR_FLAG_NOMAX flag for very large requests
-+ * - Start migrating get_wireless_stats to struct iw_handler_def
- */
-
- /**************************** CONSTANTS ****************************/
-
--/* Enable enhanced spy support. Disable to reduce footprint */
-+/* Enhanced spy support available */
- #define IW_WIRELESS_SPY
- #define IW_WIRELESS_THRSPY
-
-@@ -258,6 +265,7 @@
- #define IW_DESCR_FLAG_EVENT 0x0002 /* Generate an event on SET */
- #define IW_DESCR_FLAG_RESTRICT 0x0004 /* GET : request is ROOT only */
- /* SET : Omit payload from generated iwevent */
-+#define IW_DESCR_FLAG_NOMAX 0x0008 /* GET : no limit on request size */
- /* Driver level flags */
- #define IW_DESCR_FLAG_WAIT 0x0100 /* Wait for driver event */
-
-@@ -311,23 +319,25 @@
- /* Array of handlers for standard ioctls
- * We will call dev->wireless_handlers->standard[ioctl - SIOCSIWNAME]
- */
-- iw_handler * standard;
-+ const iw_handler * standard;
-
- /* Array of handlers for private ioctls
- * Will call dev->wireless_handlers->private[ioctl - SIOCIWFIRSTPRIV]
- */
-- iw_handler * private;
-+ const iw_handler * private;
-
- /* Arguments of private handler. This one is just a list, so you
- * can put it in any order you want and should not leave holes...
- * We will automatically export that to user space... */
-- struct iw_priv_args * private_args;
-+ const struct iw_priv_args * private_args;
-
-- /* Driver enhanced spy support */
-- long spy_offset; /* Spy data offset */
-+ /* This field will be *removed* in the next version of WE */
-+ long spy_offset; /* DO NOT USE */
-
-- /* In the long term, get_wireless_stats will move from
-- * 'struct net_device' to here, to minimise bloat. */
-+ /* New location of get_wireless_stats, to de-bloat struct net_device.
-+ * The old pointer in struct net_device will be gradually phased
-+ * out, and drivers are encouraged to use this one... */
-+ struct iw_statistics* (*get_wireless_stats)(struct net_device *dev);
- };
-
- /* ---------------------- IOCTL DESCRIPTION ---------------------- */
-@@ -374,18 +384,29 @@
- */
- struct iw_spy_data
- {
--#ifdef IW_WIRELESS_SPY
- /* --- Standard spy support --- */
- int spy_number;
- u_char spy_address[IW_MAX_SPY][ETH_ALEN];
- struct iw_quality spy_stat[IW_MAX_SPY];
--#ifdef IW_WIRELESS_THRSPY
- /* --- Enhanced spy support (event) */
- struct iw_quality spy_thr_low; /* Low threshold */
- struct iw_quality spy_thr_high; /* High threshold */
- u_char spy_thr_under[IW_MAX_SPY];
--#endif /* IW_WIRELESS_THRSPY */
--#endif /* IW_WIRELESS_SPY */
-+};
-+
-+/* --------------------- DEVICE WIRELESS DATA --------------------- */
-+/*
-+ * This is all the wireless data specific to a device instance that
-+ * is managed by the core of Wireless Extensions.
-+ * We only keep pointer to those structures, so that a driver is free
-+ * to share them between instances.
-+ * This structure should be initialised before registering the device.
-+ * Access to this data follow the same rules as any other struct net_device
-+ * data (i.e. valid as long as struct net_device exist, same locking rules).
-+ */
-+struct iw_public_data {
-+ /* Driver enhanced spy support */
-+ struct iw_spy_data * spy_data;
- };
-
- /**************************** PROTOTYPES ****************************/
-diff -Nur linux-2.4.32/net/core/dev.c linux-2.4.32-we/net/core/dev.c
---- linux-2.4.32/net/core/dev.c 2005-04-04 03:42:20.000000000 +0200
-+++ linux-2.4.32-we/net/core/dev.c 2006-03-13 12:10:57.000000000 +0100
-@@ -2426,7 +2426,7 @@
- /* Follow me in net/core/wireless.c */
- ret = wireless_process_ioctl(&ifr, cmd);
- rtnl_unlock();
-- if (!ret && IW_IS_GET(cmd) &&
-+ if (IW_IS_GET(cmd) &&
- copy_to_user(arg, &ifr, sizeof(struct ifreq)))
- return -EFAULT;
- return ret;
-diff -Nur linux-2.4.32/net/core/wireless.c linux-2.4.32-we/net/core/wireless.c
---- linux-2.4.32/net/core/wireless.c 2003-11-28 19:26:21.000000000 +0100
-+++ linux-2.4.32-we/net/core/wireless.c 2006-03-13 12:11:02.000000000 +0100
-@@ -2,7 +2,7 @@
- * This file implement the Wireless Extensions APIs.
- *
- * Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
-- * Copyright (c) 1997-2003 Jean Tourrilhes, All Rights Reserved.
-+ * Copyright (c) 1997-2005 Jean Tourrilhes, All Rights Reserved.
- *
- * (As all part of the Linux kernel, this file is GPL)
- */
-@@ -48,6 +48,16 @@
- * o Add common spy support : iw_handler_set_spy(), wireless_spy_update()
- * o Add enhanced spy support : iw_handler_set_thrspy() and event.
- * o Add WIRELESS_EXT version display in /proc/net/wireless
-+ *
-+ * v6 - 18.06.04 - Jean II
-+ * o Change get_spydata() method for added safety
-+ * o Remove spy #ifdef, they are always on -> cleaner code
-+ * o Allow any size GET request if user specifies length > max
-+ * and if request has IW_DESCR_FLAG_NOMAX flag or is SIOCGIWPRIV
-+ * o Start migrating get_wireless_stats to struct iw_handler_def
-+ * o Add wmb() in iw_handler_set_spy() for non-coherent archs/cpus
-+ * Based on patch from Pavel Roskin <proski@gnu.org> :
-+ * o Fix kernel data leak to user space in private handler handling
- */
-
- /***************************** INCLUDES *****************************/
-@@ -64,11 +74,7 @@
-
- /**************************** CONSTANTS ****************************/
-
--/* Enough lenience, let's make sure things are proper... */
--#define WE_STRICT_WRITE /* Check write buffer size */
--/* I'll probably drop both the define and kernel message in the next version */
--
--/* Debuging stuff */
-+/* Debugging stuff */
- #undef WE_IOCTL_DEBUG /* Debug IOCTL API */
- #undef WE_EVENT_DEBUG /* Debug Event dispatcher */
- #undef WE_SPY_DEBUG /* Debug enhanced spy support */
-@@ -131,14 +137,14 @@
- { IW_HEADER_TYPE_ADDR, 0, 0, 0, 0, 0},
- /* SIOCGIWAP */
- { IW_HEADER_TYPE_ADDR, 0, 0, 0, 0, IW_DESCR_FLAG_DUMP},
-- /* -- hole -- */
-- { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* SIOCSIWMLME */
-+ { IW_HEADER_TYPE_POINT, 0, 1, sizeof(struct iw_mlme), sizeof(struct iw_mlme), 0},
- /* SIOCGIWAPLIST */
-- { IW_HEADER_TYPE_POINT, 0, (sizeof(struct sockaddr) + sizeof(struct iw_quality)), 0, IW_MAX_AP, 0},
-+ { IW_HEADER_TYPE_POINT, 0, (sizeof(struct sockaddr) + sizeof(struct iw_quality)), 0, IW_MAX_AP, IW_DESCR_FLAG_NOMAX},
- /* SIOCSIWSCAN */
-- { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, sizeof(struct iw_scan_req), 0},
- /* SIOCGIWSCAN */
-- { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_SCAN_MAX_DATA, 0},
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_SCAN_MAX_DATA, IW_DESCR_FLAG_NOMAX},
- /* SIOCSIWESSID */
- { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_ESSID_MAX_SIZE + 1, IW_DESCR_FLAG_EVENT},
- /* SIOCGIWESSID */
-@@ -179,6 +185,25 @@
- { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
- /* SIOCGIWPOWER */
- { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* -- hole -- */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* -- hole -- */
-+ { IW_HEADER_TYPE_NULL, 0, 0, 0, 0, 0},
-+ /* SIOCSIWGENIE */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_GENERIC_IE_MAX, 0},
-+ /* SIOCGIWGENIE */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_GENERIC_IE_MAX, 0},
-+ /* SIOCSIWAUTH */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCGIWAUTH */
-+ { IW_HEADER_TYPE_PARAM, 0, 0, 0, 0, 0},
-+ /* SIOCSIWENCODEEXT */
-+ { IW_HEADER_TYPE_POINT, 0, 1, sizeof(struct iw_encode_ext), sizeof(struct iw_encode_ext) + IW_ENCODING_TOKEN_MAX, 0},
-+ /* SIOCGIWENCODEEXT */
-+ { IW_HEADER_TYPE_POINT, 0, 1, sizeof(struct iw_encode_ext), sizeof(struct iw_encode_ext) + IW_ENCODING_TOKEN_MAX, 0},
-+ /* SIOCSIWPMKSA */
-+ { IW_HEADER_TYPE_POINT, 0, 1, sizeof(struct iw_pmksa), sizeof(struct iw_pmksa), 0},
-+ /* -- hole -- */
- };
- static const int standard_ioctl_num = (sizeof(standard_ioctl) /
- sizeof(struct iw_ioctl_description));
-@@ -198,12 +223,22 @@
- { IW_HEADER_TYPE_ADDR, 0, 0, 0, 0, 0},
- /* IWEVEXPIRED */
- { IW_HEADER_TYPE_ADDR, 0, 0, 0, 0, 0},
-+ /* IWEVGENIE */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_GENERIC_IE_MAX, 0},
-+ /* IWEVMICHAELMICFAILURE */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, sizeof(struct iw_michaelmicfailure), 0},
-+ /* IWEVASSOCREQIE */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_GENERIC_IE_MAX, 0},
-+ /* IWEVASSOCRESPIE */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, IW_GENERIC_IE_MAX, 0},
-+ /* IWEVPMKIDCAND */
-+ { IW_HEADER_TYPE_POINT, 0, 1, 0, sizeof(struct iw_pmkid_cand), 0},
- };
- static const int standard_event_num = (sizeof(standard_event) /
- sizeof(struct iw_ioctl_description));
-
- /* Size (in bytes) of the various private data types */
--static const char priv_type_size[] = {
-+static const char iw_priv_type_size[] = {
- 0, /* IW_PRIV_TYPE_NONE */
- 1, /* IW_PRIV_TYPE_BYTE */
- 1, /* IW_PRIV_TYPE_CHAR */
-@@ -270,12 +305,15 @@
- */
- static inline struct iw_statistics *get_wireless_stats(struct net_device *dev)
- {
-+ /* New location */
-+ if((dev->wireless_handlers != NULL) &&
-+ (dev->wireless_handlers->get_wireless_stats != NULL))
-+ return dev->wireless_handlers->get_wireless_stats(dev);
-+
-+ /* Old location, will be phased out in next WE */
- return (dev->get_wireless_stats ?
- dev->get_wireless_stats(dev) :
- (struct iw_statistics *) NULL);
-- /* In the future, get_wireless_stats may move from 'struct net_device'
-- * to 'struct iw_handler_def', to de-bloat struct net_device.
-- * Definitely worse a thought... */
- }
-
- /* ---------------------------------------------------------------- */
-@@ -310,14 +348,32 @@
-
- /* ---------------------------------------------------------------- */
- /*
-- * Number of private arguments
-+ * Calculate size of private arguments
- */
- static inline int get_priv_size(__u16 args)
- {
- int num = args & IW_PRIV_SIZE_MASK;
- int type = (args & IW_PRIV_TYPE_MASK) >> 12;
-
-- return num * priv_type_size[type];
-+ return num * iw_priv_type_size[type];
-+}
-+
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Re-calculate the size of private arguments
-+ */
-+static inline int adjust_priv_size(__u16 args,
-+ union iwreq_data * wrqu)
-+{
-+ int num = wrqu->data.length;
-+ int max = args & IW_PRIV_SIZE_MASK;
-+ int type = (args & IW_PRIV_TYPE_MASK) >> 12;
-+
-+ /* Make sure the driver doesn't goof up */
-+ if (max < num)
-+ num = max;
-+
-+ return num * iw_priv_type_size[type];
- }
-
-
-@@ -350,11 +406,14 @@
- dev->name,
- stats->status,
- stats->qual.qual,
-- stats->qual.updated & 1 ? '.' : ' ',
-+ stats->qual.updated & IW_QUAL_QUAL_UPDATED
-+ ? '.' : ' ',
- ((__u8) stats->qual.level),
-- stats->qual.updated & 2 ? '.' : ' ',
-+ stats->qual.updated & IW_QUAL_LEVEL_UPDATED
-+ ? '.' : ' ',
- ((__u8) stats->qual.noise),
-- stats->qual.updated & 4 ? '.' : ' ',
-+ stats->qual.updated & IW_QUAL_NOISE_UPDATED
-+ ? '.' : ' ',
- stats->discard.nwid,
- stats->discard.code,
- stats->discard.fragment,
-@@ -470,13 +529,15 @@
- /* Check NULL pointer */
- if(iwr->u.data.pointer == NULL)
- return -EFAULT;
--#ifdef WE_STRICT_WRITE
-+
- /* Check if there is enough buffer up there */
- if(iwr->u.data.length < dev->wireless_handlers->num_private_args) {
-- printk(KERN_ERR "%s (WE) : Buffer for request SIOCGIWPRIV too small (%d<%d)\n", dev->name, iwr->u.data.length, dev->wireless_handlers->num_private_args);
-+ /* User space can't know in advance how large the buffer
-+ * needs to be. Give it a hint, so that we can support
-+ * any size buffer we want somewhat efficiently... */
-+ iwr->u.data.length = dev->wireless_handlers->num_private_args;
- return -E2BIG;
- }
--#endif /* WE_STRICT_WRITE */
-
- /* Set the number of available ioctls. */
- iwr->u.data.length = dev->wireless_handlers->num_private_args;
-@@ -505,7 +566,6 @@
- const struct iw_ioctl_description * descr;
- struct iw_request_info info;
- int ret = -EINVAL;
-- int user_size = 0;
-
- /* Get the description of the IOCTL */
- if((cmd - SIOCIWFIRST) >= standard_ioctl_num)
-@@ -536,8 +596,14 @@
- #endif /* WE_SET_EVENT */
- } else {
- char * extra;
-+ int extra_size;
-+ int user_length = 0;
- int err;
-
-+ /* Calculate space needed by arguments. Always allocate
-+ * for max space. Easier, and won't last long... */
-+ extra_size = descr->max_tokens * descr->token_size;
-+
- /* Check what user space is giving us */
- if(IW_IS_SET(cmd)) {
- /* Check NULL pointer */
-@@ -554,18 +620,33 @@
- if(iwr->u.data.pointer == NULL)
- return -EFAULT;
- /* Save user space buffer size for checking */
-- user_size = iwr->u.data.length;
-+ user_length = iwr->u.data.length;
-+
-+ /* Don't check if user_length > max to allow forward
-+ * compatibility. The test user_length < min is
-+ * implied by the test at the end. */
-+
-+ /* Support for very large requests */
-+ if((descr->flags & IW_DESCR_FLAG_NOMAX) &&
-+ (user_length > descr->max_tokens)) {
-+ /* Allow userspace to GET more than max so
-+ * we can support any size GET requests.
-+ * There is still a limit : -ENOMEM. */
-+ extra_size = user_length * descr->token_size;
-+ /* Note : user_length is originally a __u16,
-+ * and token_size is controlled by us,
-+ * so extra_size won't get negative and
-+ * won't overflow... */
-+ }
- }
-
- #ifdef WE_IOCTL_DEBUG
- printk(KERN_DEBUG "%s (WE) : Malloc %d bytes\n",
-- dev->name, descr->max_tokens * descr->token_size);
-+ dev->name, extra_size);
- #endif /* WE_IOCTL_DEBUG */
-
-- /* Always allocate for max space. Easier, and won't last
-- * long... */
-- extra = kmalloc(descr->max_tokens * descr->token_size,
-- GFP_KERNEL);
-+ /* Create the kernel buffer */
-+ extra = kmalloc(extra_size, GFP_KERNEL);
- if (extra == NULL) {
- return -ENOMEM;
- }
-@@ -591,14 +672,11 @@
-
- /* If we have something to return to the user */
- if (!ret && IW_IS_GET(cmd)) {
--#ifdef WE_STRICT_WRITE
- /* Check if there is enough buffer up there */
-- if(user_size < iwr->u.data.length) {
-- printk(KERN_ERR "%s (WE) : Buffer for request %04X too small (%d<%d)\n", dev->name, cmd, user_size, iwr->u.data.length);
-+ if(user_length < iwr->u.data.length) {
- kfree(extra);
- return -E2BIG;
- }
--#endif /* WE_STRICT_WRITE */
-
- err = copy_to_user(iwr->u.data.pointer, extra,
- iwr->u.data.length *
-@@ -661,7 +739,7 @@
- iw_handler handler)
- {
- struct iwreq * iwr = (struct iwreq *) ifr;
-- struct iw_priv_args * descr = NULL;
-+ const struct iw_priv_args * descr = NULL;
- struct iw_request_info info;
- int extra_size = 0;
- int i;
-@@ -701,7 +779,7 @@
- ((extra_size + offset) <= IFNAMSIZ))
- extra_size = 0;
- } else {
-- /* Size of set arguments */
-+ /* Size of get arguments */
- extra_size = get_priv_size(descr->get_args);
-
- /* Does it fits in iwr ? */
-@@ -771,6 +849,14 @@
-
- /* If we have something to return to the user */
- if (!ret && IW_IS_GET(cmd)) {
-+
-+ /* Adjust for the actual length if it's variable,
-+ * avoid leaking kernel bits outside. */
-+ if (!(descr->get_args & IW_PRIV_SIZE_FIXED)) {
-+ extra_size = adjust_priv_size(descr->get_args,
-+ &(iwr->u));
-+ }
-+
- err = copy_to_user(iwr->u.data.pointer, extra,
- extra_size);
- if (err)
-@@ -1042,9 +1128,25 @@
- * One of the main advantage of centralising spy support here is that
- * it becomes much easier to improve and extend it without having to touch
- * the drivers. One example is the addition of the Spy-Threshold events.
-- * Note : IW_WIRELESS_SPY is defined in iw_handler.h
- */
-
-+/* ---------------------------------------------------------------- */
-+/*
-+ * Return the pointer to the spy data in the driver.
-+ * Because this is called on the Rx path via wireless_spy_update(),
-+ * we want it to be efficient...
-+ */
-+static inline struct iw_spy_data * get_spydata(struct net_device *dev)
-+{
-+ /* This is the new way */
-+ if(dev->wireless_data)
-+ return(dev->wireless_data->spy_data);
-+
-+ /* This is the old way. Doesn't work for multi-headed drivers.
-+ * It will be removed in the next version of WE. */
-+ return (dev->priv + dev->wireless_handlers->spy_offset);
-+}
-+
- /*------------------------------------------------------------------*/
- /*
- * Standard Wireless Handler : set Spy List
-@@ -1054,16 +1156,26 @@
- union iwreq_data * wrqu,
- char * extra)
- {
--#ifdef IW_WIRELESS_SPY
-- struct iw_spy_data * spydata = (dev->priv +
-- dev->wireless_handlers->spy_offset);
-+ struct iw_spy_data * spydata = get_spydata(dev);
- struct sockaddr * address = (struct sockaddr *) extra;
-
-+ /* Make sure driver is not buggy or using the old API */
-+ if(!spydata)
-+ return -EOPNOTSUPP;
-+
- /* Disable spy collection while we copy the addresses.
-- * As we don't disable interrupts, we need to do this to avoid races.
-- * As we are the only writer, this is good enough. */
-+ * While we copy addresses, any call to wireless_spy_update()
-+ * will NOP. This is OK, as anyway the addresses are changing. */
- spydata->spy_number = 0;
-
-+ /* We want to operate without locking, because wireless_spy_update()
-+ * most likely will happen in the interrupt handler, and therefore
-+ * have its own locking constraints and needs performance.
-+ * The rtnl_lock() make sure we don't race with the other iw_handlers.
-+ * This make sure wireless_spy_update() "see" that the spy list
-+ * is temporarily disabled. */
-+ wmb();
-+
- /* Are there are addresses to copy? */
- if(wrqu->data.length > 0) {
- int i;
-@@ -1089,13 +1201,14 @@
- spydata->spy_address[i][5]);
- #endif /* WE_SPY_DEBUG */
- }
-+
-+ /* Make sure above is updated before re-enabling */
-+ wmb();
-+
- /* Enable addresses */
- spydata->spy_number = wrqu->data.length;
-
- return 0;
--#else /* IW_WIRELESS_SPY */
-- return -EOPNOTSUPP;
--#endif /* IW_WIRELESS_SPY */
- }
-
- /*------------------------------------------------------------------*/
-@@ -1107,12 +1220,14 @@
- union iwreq_data * wrqu,
- char * extra)
- {
--#ifdef IW_WIRELESS_SPY
-- struct iw_spy_data * spydata = (dev->priv +
-- dev->wireless_handlers->spy_offset);
-+ struct iw_spy_data * spydata = get_spydata(dev);
- struct sockaddr * address = (struct sockaddr *) extra;
- int i;
-
-+ /* Make sure driver is not buggy or using the old API */
-+ if(!spydata)
-+ return -EOPNOTSUPP;
-+
- wrqu->data.length = spydata->spy_number;
-
- /* Copy addresses. */
-@@ -1129,9 +1244,6 @@
- for(i = 0; i < spydata->spy_number; i++)
- spydata->spy_stat[i].updated = 0;
- return 0;
--#else /* IW_WIRELESS_SPY */
-- return -EOPNOTSUPP;
--#endif /* IW_WIRELESS_SPY */
- }
-
- /*------------------------------------------------------------------*/
-@@ -1143,11 +1255,13 @@
- union iwreq_data * wrqu,
- char * extra)
- {
--#ifdef IW_WIRELESS_THRSPY
-- struct iw_spy_data * spydata = (dev->priv +
-- dev->wireless_handlers->spy_offset);
-+ struct iw_spy_data * spydata = get_spydata(dev);
- struct iw_thrspy * threshold = (struct iw_thrspy *) extra;
-
-+ /* Make sure driver is not buggy or using the old API */
-+ if(!spydata)
-+ return -EOPNOTSUPP;
-+
- /* Just do it */
- memcpy(&(spydata->spy_thr_low), &(threshold->low),
- 2 * sizeof(struct iw_quality));
-@@ -1160,9 +1274,6 @@
- #endif /* WE_SPY_DEBUG */
-
- return 0;
--#else /* IW_WIRELESS_THRSPY */
-- return -EOPNOTSUPP;
--#endif /* IW_WIRELESS_THRSPY */
- }
-
- /*------------------------------------------------------------------*/
-@@ -1174,22 +1285,20 @@
- union iwreq_data * wrqu,
- char * extra)
- {
--#ifdef IW_WIRELESS_THRSPY
-- struct iw_spy_data * spydata = (dev->priv +
-- dev->wireless_handlers->spy_offset);
-+ struct iw_spy_data * spydata = get_spydata(dev);
- struct iw_thrspy * threshold = (struct iw_thrspy *) extra;
-
-+ /* Make sure driver is not buggy or using the old API */
-+ if(!spydata)
-+ return -EOPNOTSUPP;
-+
- /* Just do it */
- memcpy(&(threshold->low), &(spydata->spy_thr_low),
- 2 * sizeof(struct iw_quality));
-
- return 0;
--#else /* IW_WIRELESS_THRSPY */
-- return -EOPNOTSUPP;
--#endif /* IW_WIRELESS_THRSPY */
- }
-
--#ifdef IW_WIRELESS_THRSPY
- /*------------------------------------------------------------------*/
- /*
- * Prepare and send a Spy Threshold event
-@@ -1227,7 +1336,6 @@
- /* Send event to user space */
- wireless_send_event(dev, SIOCGIWTHRSPY, &wrqu, (char *) &threshold);
- }
--#endif /* IW_WIRELESS_THRSPY */
-
- /* ---------------------------------------------------------------- */
- /*
-@@ -1240,12 +1348,14 @@
- unsigned char * address,
- struct iw_quality * wstats)
- {
--#ifdef IW_WIRELESS_SPY
-- struct iw_spy_data * spydata = (dev->priv +
-- dev->wireless_handlers->spy_offset);
-+ struct iw_spy_data * spydata = get_spydata(dev);
- int i;
- int match = -1;
-
-+ /* Make sure driver is not buggy or using the old API */
-+ if(!spydata)
-+ return;
-+
- #ifdef WE_SPY_DEBUG
- printk(KERN_DEBUG "wireless_spy_update() : offset %ld, spydata %p, address %02X:%02X:%02X:%02X:%02X:%02X\n", dev->wireless_handlers->spy_offset, spydata, address[0], address[1], address[2], address[3], address[4], address[5]);
- #endif /* WE_SPY_DEBUG */
-@@ -1257,7 +1367,7 @@
- sizeof(struct iw_quality));
- match = i;
- }
--#ifdef IW_WIRELESS_THRSPY
-+
- /* Generate an event if we cross the spy threshold.
- * To avoid event storms, we have a simple hysteresis : we generate
- * event only when we go under the low threshold or above the
-@@ -1277,6 +1387,4 @@
- }
- }
- }
--#endif /* IW_WIRELESS_THRSPY */
--#endif /* IW_WIRELESS_SPY */
- }
diff --git a/openwrt/target/linux/generic-2.4/patches/106-mppe_mppc.patch b/openwrt/target/linux/generic-2.4/patches/106-mppe_mppc.patch
deleted file mode 100644
index 382b4623f2..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/106-mppe_mppc.patch
+++ /dev/null
@@ -1,1649 +0,0 @@
-MPPE/MPPC kernel module for Linux
-
-Microsoft Point-to-Point Encryption / Compression support
-
- http://www.polbox.com/h/hs001/linux-2.4.29-mppe-mppc-1.3.patch.gz
-
-diff -ruN linux-2.4.29.orig/Documentation/Configure.help linux-2.4.29/Documentation/Configure.help
---- linux-2.4.29.orig/Documentation/Configure.help 2005-02-02 22:18:18.000000000 +0100
-+++ linux-2.4.29/Documentation/Configure.help 2005-02-02 22:26:37.000000000 +0100
-@@ -9969,6 +9969,28 @@
- module; it is called bsd_comp.o and will show up in the directory
- modules once you have said "make modules". If unsure, say N.
-
-+Microsoft PPP compression/encryption (MPPC/MPPE)
-+CONFIG_PPP_MPPE_MPPC
-+ Support for the Microsoft Point-To-Point Compression (RFC2118) and
-+ Microsoft Point-To-Point Encryption (RFC3078). These protocols are
-+ supported by Microsoft Windows and wide range of "hardware" access
-+ servers. MPPE is common protocol in Virtual Private Networks. According
-+ to RFC3078, MPPE supports 40, 56 and 128-bit key lengths. Depending on
-+ PPP daemon configuration on both ends of the link, following scenarios
-+ are possible:
-+ - only compression (MPPC) is used,
-+ - only encryption (MPPE) is used,
-+ - compression and encryption (MPPC+MPPE) are used.
-+
-+ Please note that Hi/Fn (http://www.hifn.com) holds patent on MPPC so
-+ you should check if this patent is valid in your country in order to
-+ avoid legal problems.
-+
-+ For more information please visit http://free.polbox.pl/h/hs001
-+
-+ To compile this driver as a module, choose M here. The module will
-+ be called ppp_mppe_mppc.o.
-+
- PPP over Ethernet
- CONFIG_PPPOE
- Support for PPP over Ethernet.
-diff -ruN linux-2.4.29.orig/crypto/Config.in linux-2.4.29/crypto/Config.in
---- linux-2.4.29.orig/crypto/Config.in 2005-02-02 22:18:14.000000000 +0100
-+++ linux-2.4.29/crypto/Config.in 2005-02-02 22:26:37.000000000 +0100
-@@ -11,7 +11,9 @@
- "$CONFIG_INET6_AH" = "y" -o \
- "$CONFIG_INET6_AH" = "m" -o \
- "$CONFIG_INET6_ESP" = "y" -o \
-- "$CONFIG_INET6_ESP" = "m" ]; then
-+ "$CONFIG_INET6_ESP" = "m" -o \
-+ "$CONFIG_PPP_MPPE_MPPC" = "y" -o \
-+ "$CONFIG_PPP_MPPE_MPPC" = "m" ]; then
- define_bool CONFIG_CRYPTO y
- else
- bool 'Cryptographic API' CONFIG_CRYPTO
-@@ -51,11 +53,24 @@
- "$CONFIG_INET6_AH" = "y" -o \
- "$CONFIG_INET6_AH" = "m" -o \
- "$CONFIG_INET6_ESP" = "y" -o \
-- "$CONFIG_INET6_ESP" = "m" ]; then
-- define_bool CONFIG_CRYPTO_SHA1 y
-- else
-- tristate ' SHA1 digest algorithm' CONFIG_CRYPTO_SHA1
-+ "$CONFIG_INET6_ESP" = "m" -o \
-+ "$CONFIG_PPP_MPPE_MPPC" = "y" -o \
-+ "$CONFIG_PPP_MPPE_MPPC" = "m" ]; then
-+ if [ "$CONFIG_INET_AH" = "y" -o \
-+ "$CONFIG_INET_ESP" = "y" -o \
-+ "$CONFIG_INET6_AH" = "y" -o \
-+ "$CONFIG_INET6_ESP" = "y" -o \
-+ "$CONFIG_PPP_MPPE_MPPC" = "y" ]; then
-+ define_tristate CONFIG_CRYPTO_SHA1 y
-+ else
-+ if [ "$CONFIG_CRYPTO_SHA1" != "y" -a \
-+ "$CONFIG_CRYPTO_SHA1" != "m" ]; then
-+ define_tristate CONFIG_CRYPTO_SHA1 m
-+ fi
-+ fi
- fi
-+ tristate ' SHA1 digest algorithm' CONFIG_CRYPTO_SHA1
-+
- tristate ' SHA256 digest algorithm' CONFIG_CRYPTO_SHA256
- tristate ' SHA384 and SHA512 digest algorithms' CONFIG_CRYPTO_SHA512
- tristate ' Whirlpool digest algorithms' CONFIG_CRYPTO_WP512
-@@ -76,7 +91,20 @@
- tristate ' TEA and XTEA cipher algorithms' CONFIG_CRYPTO_TEA
- tristate ' Khazad cipher algorithm' CONFIG_CRYPTO_KHAZAD
- tristate ' Anubis cipher algorithm' CONFIG_CRYPTO_ANUBIS
-+
-+ if [ "$CONFIG_PPP_MPPE_MPPC" = "y" -o \
-+ "$CONFIG_PPP_MPPE_MPPC" = "m" ]; then
-+ if [ "$CONFIG_PPP_MPPE_MPPC" = "y" ]; then
-+ define_tristate CONFIG_CRYPTO_ARC4 y
-+ else
-+ if [ "$CONFIG_CRYPTO_ARC4" != "y" -a \
-+ "$CONFIG_CRYPTO_ARC4" != "m" ]; then
-+ define_tristate CONFIG_CRYPTO_ARC4 m
-+ fi
-+ fi
-+ fi
- tristate ' ARC4 cipher algorithm' CONFIG_CRYPTO_ARC4
-+
- if [ "$CONFIG_INET_IPCOMP" = "y" -o \
- "$CONFIG_INET_IPCOMP" = "m" -o \
- "$CONFIG_INET6_IPCOMP" = "y" -o \
-diff -ruN linux-2.4.29.orig/drivers/net/Config.in linux-2.4.29/drivers/net/Config.in
---- linux-2.4.29.orig/drivers/net/Config.in 2005-02-02 22:17:31.000000000 +0100
-+++ linux-2.4.29/drivers/net/Config.in 2005-02-02 22:26:37.000000000 +0100
-@@ -332,6 +332,7 @@
- dep_tristate ' PPP support for sync tty ports' CONFIG_PPP_SYNC_TTY $CONFIG_PPP
- dep_tristate ' PPP Deflate compression' CONFIG_PPP_DEFLATE $CONFIG_PPP
- dep_tristate ' PPP BSD-Compress compression' CONFIG_PPP_BSDCOMP $CONFIG_PPP
-+ dep_tristate ' Microsoft PPP compression/encryption (MPPC/MPPE)' CONFIG_PPP_MPPE_MPPC $CONFIG_PPP
- if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
- dep_tristate ' PPP over Ethernet (EXPERIMENTAL)' CONFIG_PPPOE $CONFIG_PPP
- fi
-diff -ruN linux-2.4.29.orig/drivers/net/Makefile linux-2.4.29/drivers/net/Makefile
---- linux-2.4.29.orig/drivers/net/Makefile 2005-02-02 22:17:23.000000000 +0100
-+++ linux-2.4.29/drivers/net/Makefile 2005-02-02 22:26:37.000000000 +0100
-@@ -163,6 +163,7 @@
- obj-$(CONFIG_PPP_SYNC_TTY) += ppp_synctty.o
- obj-$(CONFIG_PPP_DEFLATE) += ppp_deflate.o
- obj-$(CONFIG_PPP_BSDCOMP) += bsd_comp.o
-+obj-$(CONFIG_PPP_MPPE_MPPC) += ppp_mppe_mppc.o
- obj-$(CONFIG_PPPOE) += pppox.o pppoe.o
-
- obj-$(CONFIG_SLIP) += slip.o
-diff -ruN linux-2.4.29.orig/drivers/net/ppp_generic.c linux-2.4.29/drivers/net/ppp_generic.c
---- linux-2.4.29.orig/drivers/net/ppp_generic.c 2005-02-02 22:17:24.000000000 +0100
-+++ linux-2.4.29/drivers/net/ppp_generic.c 2005-02-02 22:26:37.000000000 +0100
-@@ -19,7 +19,7 @@
- * PPP driver, written by Michael Callahan and Al Longyear, and
- * subsequently hacked by Paul Mackerras.
- *
-- * ==FILEVERSION 20020217==
-+ * ==FILEVERSION 20040509==
- */
-
- #include <linux/config.h>
-@@ -102,6 +102,7 @@
- spinlock_t rlock; /* lock for receive side 58 */
- spinlock_t wlock; /* lock for transmit side 5c */
- int mru; /* max receive unit 60 */
-+ int mru_alloc; /* MAX(1500,MRU) for dev_alloc_skb() */
- unsigned int flags; /* control bits 64 */
- unsigned int xstate; /* transmit state bits 68 */
- unsigned int rstate; /* receive state bits 6c */
-@@ -552,7 +553,9 @@
- case PPPIOCSMRU:
- if (get_user(val, (int *) arg))
- break;
-- ppp->mru = val;
-+ ppp->mru_alloc = ppp->mru = val;
-+ if (ppp->mru_alloc < PPP_MRU)
-+ ppp->mru_alloc = PPP_MRU; /* increase for broken peers */
- err = 0;
- break;
-
-@@ -1025,14 +1028,37 @@
- case PPP_CCP:
- /* peek at outbound CCP frames */
- ppp_ccp_peek(ppp, skb, 0);
-+ /*
-+ * When LZS or MPPE/MPPC has been negotiated we don't send
-+ * CCP_RESETACK after receiving CCP_RESETREQ; in fact pppd
-+ * sends such a packet but we silently discard it here
-+ */
-+ if (CCP_CODE(skb->data+2) == CCP_RESETACK
-+ && (ppp->xcomp->compress_proto == CI_MPPE
-+ || ppp->xcomp->compress_proto == CI_LZS)) {
-+ --ppp->stats.tx_packets;
-+ ppp->stats.tx_bytes -= skb->len - 2;
-+ kfree_skb(skb);
-+ return;
-+ }
- break;
- }
-
- /* try to do packet compression */
- if ((ppp->xstate & SC_COMP_RUN) && ppp->xc_state != 0
- && proto != PPP_LCP && proto != PPP_CCP) {
-- new_skb = alloc_skb(ppp->dev->mtu + ppp->dev->hard_header_len,
-- GFP_ATOMIC);
-+ int comp_ovhd = 0;
-+ /*
-+ * because of possible data expansion when MPPC or LZS
-+ * is used, allocate compressor's buffer 12.5% bigger
-+ * than MTU
-+ */
-+ if (ppp->xcomp->compress_proto == CI_MPPE)
-+ comp_ovhd = ((ppp->dev->mtu * 9) / 8) + 1 + MPPE_OVHD;
-+ else if (ppp->xcomp->compress_proto == CI_LZS)
-+ comp_ovhd = ((ppp->dev->mtu * 9) / 8) + 1 + LZS_OVHD;
-+ new_skb = alloc_skb(ppp->dev->mtu + ppp->dev->hard_header_len
-+ + comp_ovhd, GFP_ATOMIC);
- if (new_skb == 0) {
- printk(KERN_ERR "PPP: no memory (comp pkt)\n");
- goto drop;
-@@ -1050,9 +1076,21 @@
- skb = new_skb;
- skb_put(skb, len);
- skb_pull(skb, 2); /* pull off A/C bytes */
-- } else {
-+ } else if (len == 0) {
- /* didn't compress, or CCP not up yet */
- kfree_skb(new_skb);
-+ } else {
-+ /*
-+ * (len < 0)
-+ * MPPE requires that we do not send unencrypted
-+ * frames. The compressor will return -1 if we
-+ * should drop the frame. We cannot simply test
-+ * the compress_proto because MPPE and MPPC share
-+ * the same number.
-+ */
-+ printk(KERN_ERR "ppp: compressor dropped pkt\n");
-+ kfree_skb(new_skb);
-+ goto drop;
- }
- }
-
-@@ -1540,14 +1578,15 @@
- int len;
-
- if (proto == PPP_COMP) {
-- ns = dev_alloc_skb(ppp->mru + PPP_HDRLEN);
-+ ns = dev_alloc_skb(ppp->mru_alloc + PPP_HDRLEN);
- if (ns == 0) {
- printk(KERN_ERR "ppp_decompress_frame: no memory\n");
- goto err;
- }
- /* the decompressor still expects the A/C bytes in the hdr */
- len = ppp->rcomp->decompress(ppp->rc_state, skb->data - 2,
-- skb->len + 2, ns->data, ppp->mru + PPP_HDRLEN);
-+ skb->len + 2, ns->data,
-+ ppp->mru_alloc + PPP_HDRLEN);
- if (len < 0) {
- /* Pass the compressed frame to pppd as an
- error indication. */
-@@ -1573,7 +1612,14 @@
- return skb;
-
- err:
-- ppp->rstate |= SC_DC_ERROR;
-+ if (ppp->rcomp->compress_proto != CI_MPPE
-+ && ppp->rcomp->compress_proto != CI_LZS) {
-+ /*
-+ * If decompression protocol isn't MPPE/MPPC or LZS, we set
-+ * SC_DC_ERROR flag and wait for CCP_RESETACK
-+ */
-+ ppp->rstate |= SC_DC_ERROR;
-+ }
- ppp_receive_error(ppp);
- return skb;
- }
-@@ -2253,6 +2299,7 @@
- /* Initialize the new ppp unit */
- ppp->file.index = unit;
- ppp->mru = PPP_MRU;
-+ ppp->mru_alloc = PPP_MRU;
- init_ppp_file(&ppp->file, INTERFACE);
- ppp->file.hdrlen = PPP_HDRLEN - 2; /* don't count proto bytes */
- for (i = 0; i < NUM_NP; ++i)
-diff -ruN linux-2.4.29.orig/drivers/net/ppp_mppe_mppc.c linux-2.4.29/drivers/net/ppp_mppe_mppc.c
---- linux-2.4.29.orig/drivers/net/ppp_mppe_mppc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/drivers/net/ppp_mppe_mppc.c 2005-02-02 23:07:40.000000000 +0100
-@@ -0,0 +1,1312 @@
-+/*
-+ * ppp_mppe_mppc.c - MPPC/MPPE "compressor/decompressor" module.
-+ *
-+ * Copyright (c) 1994 Árpád Magosányi <mag@bunuel.tii.matav.hu>
-+ * Copyright (c) 1999 Tim Hockin, Cobalt Networks Inc. <thockin@cobaltnet.com>
-+ * Copyright (c) 2002-2005 Jan Dubiec <jdx@slackware.pl>
-+ *
-+ * Permission to use, copy, modify, and distribute this software and its
-+ * documentation is hereby granted, provided that the above copyright
-+ * notice appears in all copies. This software is provided without any
-+ * warranty, express or implied.
-+ *
-+ * The code is based on MPPE kernel module written by Árpád Magosányi and
-+ * Tim Hockin which can be found on http://planetmirror.com/pub/mppe/.
-+ * I have added MPPC and 56 bit session keys support in MPPE.
-+ *
-+ * WARNING! Although this is open source code, its usage in some countries
-+ * (in particular in the USA) may violate Stac Inc. patent for MPPC.
-+ *
-+ * ==FILEVERSION 20050202==
-+ *
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/mm.h>
-+#include <linux/slab.h>
-+#include <asm/scatterlist.h>
-+#include <linux/vmalloc.h>
-+#include <linux/crypto.h>
-+
-+#include <linux/ppp_defs.h>
-+#include <linux/ppp-comp.h>
-+
-+/*
-+ * In 2.4.x kernels macro offset_in_page() is not defined in linux/mm.h so
-+ * we define it here; PAGE_MASK is defined in asm/page.h which is included
-+ * by linux/mm.h.
-+ */
-+#define offset_in_page(p) ((unsigned long)(p) & ~PAGE_MASK)
-+
-+/*
-+ * State for a mppc/mppe "(de)compressor".
-+ */
-+struct ppp_mppe_state {
-+ struct crypto_tfm *arc4_tfm;
-+ struct crypto_tfm *sha1_tfm;
-+ u8 *sha1_digest;
-+ u8 master_key[MPPE_MAX_KEY_LEN];
-+ u8 session_key[MPPE_MAX_KEY_LEN];
-+ u8 mppc; /* do we use compression (MPPC)? */
-+ u8 mppe; /* do we use encryption (MPPE)? */
-+ u8 keylen; /* key length in bytes */
-+ u8 bitkeylen; /* key length in bits */
-+ u16 ccount; /* coherency counter */
-+ u16 bits; /* MPPC/MPPE control bits */
-+ u8 stateless; /* do we use stateless mode? */
-+ u8 nextflushed; /* set A bit in the next outgoing packet;
-+ used only by compressor*/
-+ u8 flushexpected; /* drop packets until A bit is received;
-+ used only by decompressor*/
-+ u8 *hist; /* MPPC history */
-+ u16 *hash; /* Hash table; used only by compressor */
-+ u16 histptr; /* history "cursor" */
-+ int unit;
-+ int debug;
-+ int mru;
-+ struct compstat stats;
-+};
-+
-+#define MPPE_HIST_LEN 8192 /* MPPC history size */
-+#define MPPE_MAX_CCOUNT 0x0FFF /* max. coherency counter value */
-+
-+#define MPPE_BIT_FLUSHED 0x80 /* bit A */
-+#define MPPE_BIT_RESET 0x40 /* bit B */
-+#define MPPE_BIT_COMP 0x20 /* bit C */
-+#define MPPE_BIT_ENCRYPTED 0x10 /* bit D */
-+
-+#define MPPE_SALT0 0xD1 /* values used in MPPE key derivation */
-+#define MPPE_SALT1 0x26 /* according to RFC3079 */
-+#define MPPE_SALT2 0x9E
-+
-+#define MPPE_CCOUNT(x) ((((x)[4] & 0x0f) << 8) + (x)[5])
-+#define MPPE_BITS(x) ((x)[4] & 0xf0)
-+#define MPPE_CTRLHI(x) ((((x)->ccount & 0xf00)>>8)|((x)->bits))
-+#define MPPE_CTRLLO(x) ((x)->ccount & 0xff)
-+
-+/*
-+ * Kernel Crypto API needs its arguments to be in kmalloc'd memory, not in the
-+ * module static data area. That means sha_pad needs to be kmalloc'd. It is done
-+ * in mppe_module_init(). This has been pointed out on 30th July 2004 by Oleg
-+ * Makarenko on pptpclient-devel mailing list.
-+ */
-+#define SHA1_PAD_SIZE 40
-+struct sha_pad {
-+ unsigned char sha_pad1[SHA1_PAD_SIZE];
-+ unsigned char sha_pad2[SHA1_PAD_SIZE];
-+};
-+static struct sha_pad *sha_pad;
-+
-+static inline void
-+setup_sg(struct scatterlist *sg, const void *address, unsigned int length)
-+{
-+ sg[0].page = virt_to_page(address);
-+ sg[0].offset = offset_in_page(address);
-+ sg[0].length = length;
-+}
-+
-+static inline void
-+arc4_setkey(struct ppp_mppe_state *state, const unsigned char *key,
-+ const unsigned int keylen)
-+{
-+ crypto_cipher_setkey(state->arc4_tfm, key, keylen);
-+}
-+
-+static inline void
-+arc4_encrypt(struct ppp_mppe_state *state, const unsigned char *in,
-+ const unsigned int len, unsigned char *out)
-+{
-+ struct scatterlist sgin[4], sgout[4];
-+
-+ setup_sg(sgin, in, len);
-+ setup_sg(sgout, out, len);
-+ crypto_cipher_encrypt(state->arc4_tfm, sgout, sgin, len);
-+}
-+
-+#define arc4_decrypt arc4_encrypt
-+
-+/*
-+ * Key Derivation, from RFC 3078, RFC 3079.
-+ * Equivalent to Get_Key() for MS-CHAP as described in RFC 3079.
-+ */
-+static void
-+get_new_key_from_sha(struct ppp_mppe_state *state, unsigned char *interim_key)
-+{
-+ struct scatterlist sg[4];
-+
-+ setup_sg(&sg[0], state->master_key, state->keylen);
-+ setup_sg(&sg[1], sha_pad->sha_pad1, sizeof(sha_pad->sha_pad1));
-+ setup_sg(&sg[2], state->session_key, state->keylen);
-+ setup_sg(&sg[3], sha_pad->sha_pad2, sizeof(sha_pad->sha_pad2));
-+
-+ crypto_digest_digest (state->sha1_tfm, sg, 4, state->sha1_digest);
-+
-+ memcpy(interim_key, state->sha1_digest, state->keylen);
-+}
-+
-+static void
-+mppe_change_key(struct ppp_mppe_state *state, int initialize)
-+{
-+ unsigned char interim_key[MPPE_MAX_KEY_LEN];
-+
-+ get_new_key_from_sha(state, interim_key);
-+ if (initialize) {
-+ memcpy(state->session_key, interim_key, state->keylen);
-+ } else {
-+ arc4_setkey(state, interim_key, state->keylen);
-+ arc4_encrypt(state, interim_key, state->keylen, state->session_key);
-+ }
-+ if (state->keylen == 8) {
-+ if (state->bitkeylen == 40) {
-+ state->session_key[0] = MPPE_SALT0;
-+ state->session_key[1] = MPPE_SALT1;
-+ state->session_key[2] = MPPE_SALT2;
-+ } else {
-+ state->session_key[0] = MPPE_SALT0;
-+ }
-+ }
-+ arc4_setkey(state, state->session_key, state->keylen);
-+}
-+
-+/* increase 12-bit coherency counter */
-+static inline void
-+mppe_increase_ccount(struct ppp_mppe_state *state)
-+{
-+ state->ccount = (state->ccount + 1) & MPPE_MAX_CCOUNT;
-+ if (state->mppe) {
-+ if (state->stateless) {
-+ mppe_change_key(state, 0);
-+ state->nextflushed = 1;
-+ } else {
-+ if ((state->ccount & 0xff) == 0xff) {
-+ mppe_change_key(state, 0);
-+ }
-+ }
-+ }
-+}
-+
-+/* allocate space for a MPPE/MPPC (de)compressor. */
-+/* comp != 0 -> init compressor */
-+/* comp = 0 -> init decompressor */
-+static void *
-+mppe_alloc(unsigned char *options, int opt_len, int comp)
-+{
-+ struct ppp_mppe_state *state;
-+ unsigned int digestsize;
-+ u8* fname;
-+
-+ fname = comp ? "mppe_comp_alloc" : "mppe_decomp_alloc";
-+
-+ /*
-+ * Hack warning - additionally to the standard MPPC/MPPE configuration
-+ * options, pppd passes to the (de)copressor 8 or 16 byte session key.
-+ * Therefore options[1] contains MPPC/MPPE configuration option length
-+ * (CILEN_MPPE = 6), but the real options length, depending on the key
-+ * length, is 6+8 or 6+16.
-+ */
-+ if (opt_len < CILEN_MPPE) {
-+ printk(KERN_WARNING "%s: wrong options length: %u\n", fname, opt_len);
-+ return NULL;
-+ }
-+
-+ if (options[0] != CI_MPPE || options[1] != CILEN_MPPE ||
-+ (options[2] & ~MPPE_STATELESS) != 0 ||
-+ options[3] != 0 || options[4] != 0 ||
-+ (options[5] & ~(MPPE_128BIT|MPPE_56BIT|MPPE_40BIT|MPPE_MPPC)) != 0 ||
-+ (options[5] & (MPPE_128BIT|MPPE_56BIT|MPPE_40BIT|MPPE_MPPC)) == 0) {
-+ printk(KERN_WARNING "%s: options rejected: o[0]=%02x, o[1]=%02x, "
-+ "o[2]=%02x, o[3]=%02x, o[4]=%02x, o[5]=%02x\n", fname, options[0],
-+ options[1], options[2], options[3], options[4], options[5]);
-+ return NULL;
-+ }
-+
-+ state = (struct ppp_mppe_state *)kmalloc(sizeof(*state), GFP_KERNEL);
-+ if (state == NULL) {
-+ printk(KERN_ERR "%s: cannot allocate space for %scompressor\n", fname,
-+ comp ? "" : "de");
-+ return NULL;
-+ }
-+ memset(state, 0, sizeof(struct ppp_mppe_state));
-+
-+ state->mppc = options[5] & MPPE_MPPC; /* Do we use MPPC? */
-+ state->mppe = options[5] & (MPPE_128BIT | MPPE_56BIT |
-+ MPPE_40BIT); /* Do we use MPPE? */
-+
-+ if (state->mppc) {
-+ /* allocate MPPC history */
-+ state->hist = (u8*)vmalloc(2*MPPE_HIST_LEN*sizeof(u8));
-+ if (state->hist == NULL) {
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot allocate space for MPPC history\n",
-+ fname);
-+ return NULL;
-+ }
-+
-+ /* allocate hashtable for MPPC compressor */
-+ if (comp) {
-+ state->hash = (u16*)vmalloc(MPPE_HIST_LEN*sizeof(u16));
-+ if (state->hash == NULL) {
-+ vfree(state->hist);
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot allocate space for MPPC history\n",
-+ fname);
-+ return NULL;
-+ }
-+ }
-+ }
-+
-+ if (state->mppe) { /* specific for MPPE */
-+ /* Load ARC4 algorithm */
-+ state->arc4_tfm = crypto_alloc_tfm("arc4", 0);
-+ if (state->arc4_tfm == NULL) {
-+ if (state->mppc) {
-+ vfree(state->hash);
-+ if (comp)
-+ vfree(state->hist);
-+ }
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot load ARC4 module\n", fname);
-+ return NULL;
-+ }
-+
-+ /* Load SHA1 algorithm */
-+ state->sha1_tfm = crypto_alloc_tfm("sha1", 0);
-+ if (state->sha1_tfm == NULL) {
-+ crypto_free_tfm(state->arc4_tfm);
-+ if (state->mppc) {
-+ vfree(state->hash);
-+ if (comp)
-+ vfree(state->hist);
-+ }
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot load SHA1 module\n", fname);
-+ return NULL;
-+ }
-+
-+ digestsize = crypto_tfm_alg_digestsize(state->sha1_tfm);
-+ if (digestsize < MPPE_MAX_KEY_LEN) {
-+ crypto_free_tfm(state->sha1_tfm);
-+ crypto_free_tfm(state->arc4_tfm);
-+ if (state->mppc) {
-+ vfree(state->hash);
-+ if (comp)
-+ vfree(state->hist);
-+ }
-+ kfree(state);
-+ printk(KERN_ERR "%s: CryptoAPI SHA1 digest size too small\n", fname);
-+ }
-+
-+ state->sha1_digest = kmalloc(digestsize, GFP_KERNEL);
-+ if (!state->sha1_digest) {
-+ crypto_free_tfm(state->sha1_tfm);
-+ crypto_free_tfm(state->arc4_tfm);
-+ if (state->mppc) {
-+ vfree(state->hash);
-+ if (comp)
-+ vfree(state->hist);
-+ }
-+ kfree(state);
-+ printk(KERN_ERR "%s: cannot allocate space for SHA1 digest\n", fname);
-+ }
-+
-+ memcpy(state->master_key, options+CILEN_MPPE, MPPE_MAX_KEY_LEN);
-+ memcpy(state->session_key, state->master_key, MPPE_MAX_KEY_LEN);
-+ /* initial key generation is done in mppe_init() */
-+ }
-+
-+ MOD_INC_USE_COUNT;
-+
-+ return (void *) state;
-+}
-+
-+static void *
-+mppe_comp_alloc(unsigned char *options, int opt_len)
-+{
-+ return mppe_alloc(options, opt_len, 1);
-+}
-+
-+static void *
-+mppe_decomp_alloc(unsigned char *options, int opt_len)
-+{
-+ return mppe_alloc(options, opt_len, 0);
-+}
-+
-+/* cleanup the (de)compressor */
-+static void
-+mppe_comp_free(void *arg)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
-+
-+ if (state != NULL) {
-+ if (state->mppe) {
-+ if (state->sha1_tfm != NULL)
-+ crypto_free_tfm(state->sha1_tfm);
-+ if (state->arc4_tfm != NULL)
-+ crypto_free_tfm(state->arc4_tfm);
-+ }
-+ if (state->hist != NULL)
-+ vfree(state->hist);
-+ if (state->hash != NULL)
-+ vfree(state->hash);
-+ kfree(state);
-+ }
-+
-+ MOD_DEC_USE_COUNT;
-+}
-+
-+/* init MPPC/MPPE (de)compresor */
-+/* comp != 0 -> init compressor */
-+/* comp = 0 -> init decompressor */
-+static int
-+mppe_init(void *arg, unsigned char *options, int opt_len, int unit,
-+ int hdrlen, int mru, int debug, int comp)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
-+ u8* fname;
-+
-+ fname = comp ? "mppe_comp_init" : "mppe_decomp_init";
-+
-+ if (opt_len < CILEN_MPPE) {
-+ if (debug)
-+ printk(KERN_WARNING "%s: wrong options length: %u\n",
-+ fname, opt_len);
-+ return 0;
-+ }
-+
-+ if (options[0] != CI_MPPE || options[1] != CILEN_MPPE ||
-+ (options[2] & ~MPPE_STATELESS) != 0 ||
-+ options[3] != 0 || options[4] != 0 ||
-+ (options[5] & ~(MPPE_56BIT|MPPE_128BIT|MPPE_40BIT|MPPE_MPPC)) != 0 ||
-+ (options[5] & (MPPE_56BIT|MPPE_128BIT|MPPE_40BIT|MPPE_MPPC)) == 0) {
-+ if (debug)
-+ printk(KERN_WARNING "%s: options rejected: o[0]=%02x, o[1]=%02x, "
-+ "o[2]=%02x, o[3]=%02x, o[4]=%02x, o[5]=%02x\n", fname,
-+ options[0], options[1], options[2], options[3], options[4],
-+ options[5]);
-+ return 0;
-+ }
-+
-+ if ((options[5] & ~MPPE_MPPC) != MPPE_128BIT &&
-+ (options[5] & ~MPPE_MPPC) != MPPE_56BIT &&
-+ (options[5] & ~MPPE_MPPC) != MPPE_40BIT &&
-+ (options[5] & MPPE_MPPC) != MPPE_MPPC) {
-+ if (debug)
-+ printk(KERN_WARNING "%s: don't know what to do: o[5]=%02x\n",
-+ fname, options[5]);
-+ return 0;
-+ }
-+
-+ state->mppc = options[5] & MPPE_MPPC; /* Do we use MPPC? */
-+ state->mppe = options[5] & (MPPE_128BIT | MPPE_56BIT |
-+ MPPE_40BIT); /* Do we use MPPE? */
-+ state->stateless = options[2] & MPPE_STATELESS; /* Do we use stateless mode? */
-+
-+ switch (state->mppe) {
-+ case MPPE_40BIT: /* 40 bit key */
-+ state->keylen = 8;
-+ state->bitkeylen = 40;
-+ break;
-+ case MPPE_56BIT: /* 56 bit key */
-+ state->keylen = 8;
-+ state->bitkeylen = 56;
-+ break;
-+ case MPPE_128BIT: /* 128 bit key */
-+ state->keylen = 16;
-+ state->bitkeylen = 128;
-+ break;
-+ default:
-+ state->keylen = 0;
-+ state->bitkeylen = 0;
-+ }
-+
-+ state->ccount = MPPE_MAX_CCOUNT;
-+ state->bits = 0;
-+ state->unit = unit;
-+ state->debug = debug;
-+ state->histptr = MPPE_HIST_LEN;
-+ if (state->mppc) { /* reset history if MPPC was negotiated */
-+ memset(state->hist, 0, 2*MPPE_HIST_LEN*sizeof(u8));
-+ }
-+
-+ if (state->mppe) { /* generate initial session keys */
-+ mppe_change_key(state, 1);
-+ }
-+
-+ if (comp) { /* specific for compressor */
-+ state->nextflushed = 1;
-+ } else { /* specific for decompressor */
-+ state->mru = mru;
-+ state->flushexpected = 1;
-+ }
-+
-+ return 1;
-+}
-+
-+static int
-+mppe_comp_init(void *arg, unsigned char *options, int opt_len, int unit,
-+ int hdrlen, int debug)
-+{
-+ return mppe_init(arg, options, opt_len, unit, hdrlen, 0, debug, 1);
-+}
-+
-+
-+static int
-+mppe_decomp_init(void *arg, unsigned char *options, int opt_len, int unit,
-+ int hdrlen, int mru, int debug)
-+{
-+ return mppe_init(arg, options, opt_len, unit, hdrlen, mru, debug, 0);
-+}
-+
-+static void
-+mppe_comp_reset(void *arg)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: resetting MPPC/MPPE compressor\n",
-+ __FUNCTION__, state->unit);
-+
-+ state->nextflushed = 1;
-+ if (state->mppe)
-+ arc4_setkey(state, state->session_key, state->keylen);
-+}
-+
-+static void
-+mppe_decomp_reset(void *arg)
-+{
-+ /* When MPPC/MPPE is in use, we shouldn't receive any CCP Reset-Ack.
-+ But when we receive such a packet, we just ignore it. */
-+ return;
-+}
-+
-+static void
-+mppe_stats(void *arg, struct compstat *stats)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+
-+ *stats = state->stats;
-+}
-+
-+/***************************/
-+/**** Compression stuff ****/
-+/***************************/
-+/* inserts 1 to 8 bits into the output buffer */
-+static inline void putbits8(u8 *buf, u32 val, const u32 n, u32 *i, u32 *l)
-+{
-+ buf += *i;
-+ if (*l >= n) {
-+ *l = (*l) - n;
-+ val <<= *l;
-+ *buf = *buf | (val & 0xff);
-+ if (*l == 0) {
-+ *l = 8;
-+ (*i)++;
-+ *(++buf) = 0;
-+ }
-+ } else {
-+ (*i)++;
-+ *l = 8 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 8) & 0xff);
-+ *(++buf) = val & 0xff;
-+ }
-+}
-+
-+/* inserts 9 to 16 bits into the output buffer */
-+static inline void putbits16(u8 *buf, u32 val, const u32 n, u32 *i, u32 *l)
-+{
-+ buf += *i;
-+ if (*l >= n - 8) {
-+ (*i)++;
-+ *l = 8 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 8) & 0xff);
-+ *(++buf) = val & 0xff;
-+ if (*l == 0) {
-+ *l = 8;
-+ (*i)++;
-+ *(++buf) = 0;
-+ }
-+ } else {
-+ (*i)++; (*i)++;
-+ *l = 16 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 16) & 0xff);
-+ *(++buf) = (val >> 8) & 0xff;
-+ *(++buf) = val & 0xff;
-+ }
-+}
-+
-+/* inserts 17 to 24 bits into the output buffer */
-+static inline void putbits24(u8 *buf, u32 val, const u32 n, u32 *i, u32 *l)
-+{
-+ buf += *i;
-+ if (*l >= n - 16) {
-+ (*i)++; (*i)++;
-+ *l = 16 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 16) & 0xff);
-+ *(++buf) = (val >> 8) & 0xff;
-+ *(++buf) = val & 0xff;
-+ if (*l == 0) {
-+ *l = 8;
-+ (*i)++;
-+ *(++buf) = 0;
-+ }
-+ } else {
-+ (*i)++; (*i)++; (*i)++;
-+ *l = 24 - n + (*l);
-+ val <<= *l;
-+ *buf = *buf | ((val >> 24) & 0xff);
-+ *(++buf) = (val >> 16) & 0xff;
-+ *(++buf) = (val >> 8) & 0xff;
-+ *(++buf) = val & 0xff;
-+ }
-+}
-+
-+static int
-+mppc_compress(struct ppp_mppe_state *state, unsigned char *ibuf,
-+ unsigned char *obuf, int isize, int osize)
-+{
-+ u32 olen, off, len, idx, i, l;
-+ u8 *hist, *sbuf, *p, *q, *r, *s;
-+
-+ /*
-+ At this point, to avoid possible buffer overflow caused by packet
-+ expansion during/after compression, we should make sure that
-+ osize >= (((isize*9)/8)+1)+2, but we don't do that because in
-+ ppp_generic.c we simply allocate bigger obuf.
-+
-+ Maximum MPPC packet expansion is 12.5%. This is the worst case when
-+ all octets in the input buffer are >= 0x80 and we cannot find any
-+ repeated tokens. Additionally we have to reserve 2 bytes for MPPE/MPPC
-+ status bits and coherency counter.
-+ */
-+
-+ hist = state->hist + MPPE_HIST_LEN;
-+ /* check if there is enough room at the end of the history */
-+ if (state->histptr + isize >= 2*MPPE_HIST_LEN) {
-+ state->bits |= MPPE_BIT_RESET;
-+ state->histptr = MPPE_HIST_LEN;
-+ memcpy(state->hist, hist, MPPE_HIST_LEN);
-+ }
-+ /* add packet to the history; isize must be <= MPPE_HIST_LEN */
-+ sbuf = state->hist + state->histptr;
-+ memcpy(sbuf, ibuf, isize);
-+ state->histptr += isize;
-+
-+ /* compress data */
-+ r = sbuf + isize;
-+ *obuf = olen = i = 0;
-+ l = 8;
-+ while (i < isize - 2) {
-+ s = q = sbuf + i;
-+ idx = ((40543*((((s[0]<<4)^s[1])<<4)^s[2]))>>4) & 0x1fff;
-+ p = hist + state->hash[idx];
-+ state->hash[idx] = (u16) (s - hist);
-+ off = s - p;
-+ if (off > MPPE_HIST_LEN - 1 || off < 1 || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++) {
-+ /* no match found; encode literal byte */
-+ if (ibuf[i] < 0x80) { /* literal byte < 0x80 */
-+ putbits8(obuf, (u32) ibuf[i], 8, &olen, &l);
-+ } else { /* literal byte >= 0x80 */
-+ putbits16(obuf, (u32) (0x100|(ibuf[i]&0x7f)), 9, &olen, &l);
-+ }
-+ ++i;
-+ continue;
-+ }
-+ if (r - q >= 64) {
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++ || *p++ != *s++ || *p++ != *s++ || *p++ != *s++ ||
-+ *p++ != *s++;
-+ if (s - q == 64) {
-+ p--; s--;
-+ while((*p++ == *s++) && (s < r) && (p < q));
-+ }
-+ } else {
-+ while((*p++ == *s++) && (s < r) && (p < q));
-+ }
-+ len = s - q - 1;
-+ i += len;
-+
-+ /* at least 3 character match found; code data */
-+ /* encode offset */
-+ if (off < 64) { /* 10-bit offset; 0 <= offset < 64 */
-+ putbits16(obuf, 0x3c0|off, 10, &olen, &l);
-+ } else if (off < 320) { /* 12-bit offset; 64 <= offset < 320 */
-+ putbits16(obuf, 0xe00|(off-64), 12, &olen, &l);
-+ } else if (off < 8192) { /* 16-bit offset; 320 <= offset < 8192 */
-+ putbits16(obuf, 0xc000|(off-320), 16, &olen, &l);
-+ } else {
-+ /* This shouldn't happen; we return 0 what means "packet expands",
-+ and we send packet uncompressed. */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: wrong offset value: %d\n",
-+ __FUNCTION__, state->unit, off);
-+ return 0;
-+ }
-+ /* encode length of match */
-+ if (len < 4) { /* length = 3 */
-+ putbits8(obuf, 0, 1, &olen, &l);
-+ } else if (len < 8) { /* 4 <= length < 8 */
-+ putbits8(obuf, 0x08|(len&0x03), 4, &olen, &l);
-+ } else if (len < 16) { /* 8 <= length < 16 */
-+ putbits8(obuf, 0x30|(len&0x07), 6, &olen, &l);
-+ } else if (len < 32) { /* 16 <= length < 32 */
-+ putbits8(obuf, 0xe0|(len&0x0f), 8, &olen, &l);
-+ } else if (len < 64) { /* 32 <= length < 64 */
-+ putbits16(obuf, 0x3c0|(len&0x1f), 10, &olen, &l);
-+ } else if (len < 128) { /* 64 <= length < 128 */
-+ putbits16(obuf, 0xf80|(len&0x3f), 12, &olen, &l);
-+ } else if (len < 256) { /* 128 <= length < 256 */
-+ putbits16(obuf, 0x3f00|(len&0x7f), 14, &olen, &l);
-+ } else if (len < 512) { /* 256 <= length < 512 */
-+ putbits16(obuf, 0xfe00|(len&0xff), 16, &olen, &l);
-+ } else if (len < 1024) { /* 512 <= length < 1024 */
-+ putbits24(obuf, 0x3fc00|(len&0x1ff), 18, &olen, &l);
-+ } else if (len < 2048) { /* 1024 <= length < 2048 */
-+ putbits24(obuf, 0xff800|(len&0x3ff), 20, &olen, &l);
-+ } else if (len < 4096) { /* 2048 <= length < 4096 */
-+ putbits24(obuf, 0x3ff000|(len&0x7ff), 22, &olen, &l);
-+ } else if (len < 8192) { /* 4096 <= length < 8192 */
-+ putbits24(obuf, 0xffe000|(len&0xfff), 24, &olen, &l);
-+ } else {
-+ /* This shouldn't happen; we return 0 what means "packet expands",
-+ and send packet uncompressed. */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: wrong length of match value: %d\n",
-+ __FUNCTION__, state->unit, len);
-+ return 0;
-+ }
-+ }
-+
-+ /* Add remaining octets to the output */
-+ while(isize - i > 0) {
-+ if (ibuf[i] < 0x80) { /* literal byte < 0x80 */
-+ putbits8(obuf, (u32) ibuf[i++], 8, &olen, &l);
-+ } else { /* literal byte >= 0x80 */
-+ putbits16(obuf, (u32) (0x100|(ibuf[i++]&0x7f)), 9, &olen, &l);
-+ }
-+ }
-+ /* Reset unused bits of the last output octet */
-+ if ((l != 0) && (l != 8)) {
-+ putbits8(obuf, 0, l, &olen, &l);
-+ }
-+
-+ return (int) olen;
-+}
-+
-+int
-+mppe_compress(void *arg, unsigned char *ibuf, unsigned char *obuf,
-+ int isize, int osize)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
-+ int proto, olen, complen, off;
-+ unsigned char *wptr;
-+
-+ /* Check that the protocol is in the range we handle. */
-+ proto = PPP_PROTOCOL(ibuf);
-+ if (proto < 0x0021 || proto > 0x00fa)
-+ return 0;
-+
-+ wptr = obuf;
-+ /* Copy over the PPP header */
-+ wptr[0] = PPP_ADDRESS(ibuf);
-+ wptr[1] = PPP_CONTROL(ibuf);
-+ wptr[2] = PPP_COMP >> 8;
-+ wptr[3] = PPP_COMP;
-+ wptr += PPP_HDRLEN + (MPPE_OVHD / 2); /* Leave two octets for MPPE/MPPC bits */
-+
-+ /*
-+ * In ver. 0.99 protocol field was compressed. Deflate and BSD compress
-+ * do PFC before actual compression, RCF2118 and RFC3078 are not precise
-+ * on this topic so I decided to do PFC. Unfortunately this change caused
-+ * incompatibility with older/other MPPE/MPPC modules. I have received
-+ * a lot of complaints from unexperienced users so I have decided to revert
-+ * to previous state, i.e. the protocol field is sent uncompressed now.
-+ * Although this may be changed in the future.
-+ *
-+ * Receiving side (mppe_decompress()) still accepts packets with compressed
-+ * and uncompressed protocol field so you shouldn't get "Unsupported protocol
-+ * 0x2145 received" messages anymore.
-+ */
-+ //off = (proto > 0xff) ? 2 : 3; /* PFC - skip first protocol byte if 0 */
-+ off = 2;
-+
-+ ibuf += off;
-+
-+ mppe_increase_ccount(state);
-+
-+ if (state->nextflushed) {
-+ state->bits |= MPPE_BIT_FLUSHED;
-+ state->nextflushed = 0;
-+ if (state->mppe && !state->stateless) {
-+ /*
-+ * If this is the flag packet, the key has been already changed in
-+ * mppe_increase_ccount() so we dont't do it once again.
-+ */
-+ if ((state->ccount & 0xff) != 0xff) {
-+ arc4_setkey(state, state->session_key, state->keylen);
-+ }
-+ }
-+ if (state->mppc) { /* reset history */
-+ state->bits |= MPPE_BIT_RESET;
-+ state->histptr = MPPE_HIST_LEN;
-+ memset(state->hist + MPPE_HIST_LEN, 0, MPPE_HIST_LEN*sizeof(u8));
-+ }
-+ }
-+
-+ if (state->mppc && !state->mppe) { /* Do only compression */
-+ complen = mppc_compress(state, ibuf, wptr, isize - off,
-+ osize - PPP_HDRLEN - (MPPE_OVHD / 2));
-+ /*
-+ * TODO: Implement an heuristics to handle packet expansion in a smart
-+ * way. Now, when a packet expands, we send it as uncompressed and
-+ * when next packet is sent we have to reset compressor's history.
-+ * Maybe it would be better to send such packet as compressed in order
-+ * to keep history's continuity.
-+ */
-+ if ((complen > isize) || (complen > osize - PPP_HDRLEN) ||
-+ (complen == 0)) {
-+ /* packet expands */
-+ state->nextflushed = 1;
-+ memcpy(wptr, ibuf, isize - off);
-+ olen = isize - (off - 2) + MPPE_OVHD;
-+ (state->stats).inc_bytes += olen;
-+ (state->stats).inc_packets++;
-+ } else {
-+ state->bits |= MPPE_BIT_COMP;
-+ olen = complen + PPP_HDRLEN + (MPPE_OVHD / 2);
-+ (state->stats).comp_bytes += olen;
-+ (state->stats).comp_packets++;
-+ }
-+ } else { /* Do encryption with or without compression */
-+ state->bits |= MPPE_BIT_ENCRYPTED;
-+ if (!state->mppc && state->mppe) { /* Do only encryption */
-+ /* read from ibuf, write to wptr, adjust for PPP_HDRLEN */
-+ arc4_encrypt(state, ibuf, isize - off, wptr);
-+ olen = isize - (off - 2) + MPPE_OVHD;
-+ (state->stats).inc_bytes += olen;
-+ (state->stats).inc_packets++;
-+ } else { /* Do compression and then encryption - RFC3078 */
-+ complen = mppc_compress(state, ibuf, wptr, isize - off,
-+ osize - PPP_HDRLEN - (MPPE_OVHD / 2));
-+ /*
-+ * TODO: Implement an heuristics to handle packet expansion in a smart
-+ * way. Now, when a packet expands, we send it as uncompressed and
-+ * when next packet is sent we have to reset compressor's history.
-+ * Maybe it would be good to send such packet as compressed in order
-+ * to keep history's continuity.
-+ */
-+ if ((complen > isize) || (complen > osize - PPP_HDRLEN) ||
-+ (complen == 0)) {
-+ /* packet expands */
-+ state->nextflushed = 1;
-+ arc4_encrypt(state, ibuf, isize - off, wptr);
-+ olen = isize - (off - 2) + MPPE_OVHD;
-+ (state->stats).inc_bytes += olen;
-+ (state->stats).inc_packets++;
-+ } else {
-+ state->bits |= MPPE_BIT_COMP;
-+ /* Hack warning !!! RC4 implementation which we use does
-+ encryption "in place" - it means that input and output
-+ buffers can be *the same* memory area. Therefore we don't
-+ need to use a temporary buffer. But be careful - other
-+ implementations don't have to be so nice.
-+ I used to use ibuf as temporary buffer here, but it led
-+ packet sniffers into error. Thanks to Wilfried Weissmann
-+ for pointing that. */
-+ arc4_encrypt(state, wptr, complen, wptr);
-+ olen = complen + PPP_HDRLEN + (MPPE_OVHD / 2);
-+ (state->stats).comp_bytes += olen;
-+ (state->stats).comp_packets++;
-+ }
-+ }
-+ }
-+
-+ /* write status bits and coherency counter into the output buffer */
-+ wptr = obuf + PPP_HDRLEN;
-+ wptr[0] = MPPE_CTRLHI(state);
-+ wptr[1] = MPPE_CTRLLO(state);
-+
-+ state->bits = 0;
-+
-+ (state->stats).unc_bytes += isize;
-+ (state->stats).unc_packets++;
-+
-+ return olen;
-+}
-+
-+/***************************/
-+/*** Decompression stuff ***/
-+/***************************/
-+static inline u32 getbits(const u8 *buf, const u32 n, u32 *i, u32 *l)
-+{
-+ static const u32 m[] = {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff};
-+ u32 res, ol;
-+
-+ ol = *l;
-+ if (*l >= n) {
-+ *l = (*l) - n;
-+ res = (buf[*i] & m[ol]) >> (*l);
-+ if (*l == 0) {
-+ *l = 8;
-+ (*i)++;
-+ }
-+ } else {
-+ *l = 8 - n + (*l);
-+ res = (buf[(*i)++] & m[ol]) << 8;
-+ res = (res | buf[*i]) >> (*l);
-+ }
-+
-+ return res;
-+}
-+
-+static inline u32 getbyte(const u8 *buf, const u32 i, const u32 l)
-+{
-+ if (l == 8) {
-+ return buf[i];
-+ } else {
-+ return (((buf[i] << 8) | buf[i+1]) >> l) & 0xff;
-+ }
-+}
-+
-+static inline void lamecopy(u8 *dst, u8 *src, u32 len)
-+{
-+ while (len--)
-+ *dst++ = *src++;
-+}
-+
-+static int
-+mppc_decompress(struct ppp_mppe_state *state, unsigned char *ibuf,
-+ unsigned char *obuf, int isize, int osize)
-+{
-+ u32 olen, off, len, bits, val, sig, i, l;
-+ u8 *history, *s;
-+
-+ history = state->hist + state->histptr;
-+ olen = len = i = 0;
-+ l = 8;
-+ bits = isize * 8;
-+ while (bits >= 8) {
-+ val = getbyte(ibuf, i++, l);
-+ if (val < 0x80) { /* literal byte < 0x80 */
-+ if (state->histptr < 2*MPPE_HIST_LEN) {
-+ /* copy uncompressed byte to the history */
-+ (state->hist)[(state->histptr)++] = (u8) val;
-+ } else {
-+ /* buffer overflow; drop packet */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: trying to write outside history "
-+ "buffer\n", __FUNCTION__, state->unit);
-+ return DECOMP_ERROR;
-+ }
-+ olen++;
-+ bits -= 8;
-+ continue;
-+ }
-+
-+ sig = val & 0xc0;
-+ if (sig == 0x80) { /* literal byte >= 0x80 */
-+ if (state->histptr < 2*MPPE_HIST_LEN) {
-+ /* copy uncompressed byte to the history */
-+ (state->hist)[(state->histptr)++] =
-+ (u8) (0x80|((val&0x3f)<<1)|getbits(ibuf, 1 , &i ,&l));
-+ } else {
-+ /* buffer overflow; drop packet */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: trying to write outside history "
-+ "buffer\n", __FUNCTION__, state->unit);
-+ return DECOMP_ERROR;
-+ }
-+ olen++;
-+ bits -= 9;
-+ continue;
-+ }
-+
-+ /* Not a literal byte so it must be an (offset,length) pair */
-+ /* decode offset */
-+ sig = val & 0xf0;
-+ if (sig == 0xf0) { /* 10-bit offset; 0 <= offset < 64 */
-+ off = (((val&0x0f)<<2)|getbits(ibuf, 2 , &i ,&l));
-+ bits -= 10;
-+ } else {
-+ if (sig == 0xe0) { /* 12-bit offset; 64 <= offset < 320 */
-+ off = ((((val&0x0f)<<4)|getbits(ibuf, 4 , &i ,&l))+64);
-+ bits -= 12;
-+ } else {
-+ if ((sig&0xe0) == 0xc0) {/* 16-bit offset; 320 <= offset < 8192 */
-+ off = ((((val&0x1f)<<8)|getbyte(ibuf, i++, l))+320);
-+ bits -= 16;
-+ if (off > MPPE_HIST_LEN - 1) {
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: too big offset value: %d\n",
-+ __FUNCTION__, state->unit, off);
-+ return DECOMP_ERROR;
-+ }
-+ } else { /* this shouldn't happen */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: cannot decode offset value\n",
-+ __FUNCTION__, state->unit);
-+ return DECOMP_ERROR;
-+ }
-+ }
-+ }
-+ /* decode length of match */
-+ val = getbyte(ibuf, i, l);
-+ if ((val & 0x80) == 0x00) { /* len = 3 */
-+ len = 3;
-+ bits--;
-+ getbits(ibuf, 1 , &i ,&l);
-+ } else if ((val & 0xc0) == 0x80) { /* 4 <= len < 8 */
-+ len = 0x04 | ((val>>4) & 0x03);
-+ bits -= 4;
-+ getbits(ibuf, 4 , &i ,&l);
-+ } else if ((val & 0xe0) == 0xc0) { /* 8 <= len < 16 */
-+ len = 0x08 | ((val>>2) & 0x07);
-+ bits -= 6;
-+ getbits(ibuf, 6 , &i ,&l);
-+ } else if ((val & 0xf0) == 0xe0) { /* 16 <= len < 32 */
-+ len = 0x10 | (val & 0x0f);
-+ bits -= 8;
-+ i++;
-+ } else {
-+ bits -= 8;
-+ val = (val << 8) | getbyte(ibuf, ++i, l);
-+ if ((val & 0xf800) == 0xf000) { /* 32 <= len < 64 */
-+ len = 0x0020 | ((val >> 6) & 0x001f);
-+ bits -= 2;
-+ getbits(ibuf, 2 , &i ,&l);
-+ } else if ((val & 0xfc00) == 0xf800) { /* 64 <= len < 128 */
-+ len = 0x0040 | ((val >> 4) & 0x003f);
-+ bits -= 4;
-+ getbits(ibuf, 4 , &i ,&l);
-+ } else if ((val & 0xfe00) == 0xfc00) { /* 128 <= len < 256 */
-+ len = 0x0080 | ((val >> 2) & 0x007f);
-+ bits -= 6;
-+ getbits(ibuf, 6 , &i ,&l);
-+ } else if ((val & 0xff00) == 0xfe00) { /* 256 <= len < 512 */
-+ len = 0x0100 | (val & 0x00ff);
-+ bits -= 8;
-+ i++;
-+ } else {
-+ bits -= 8;
-+ val = (val << 8) | getbyte(ibuf, ++i, l);
-+ if ((val & 0xff8000) == 0xff0000) { /* 512 <= len < 1024 */
-+ len = 0x000200 | ((val >> 6) & 0x0001ff);
-+ bits -= 2;
-+ getbits(ibuf, 2 , &i ,&l);
-+ } else if ((val & 0xffc000) == 0xff8000) {/* 1024 <= len < 2048 */
-+ len = 0x000400 | ((val >> 4) & 0x0003ff);
-+ bits -= 4;
-+ getbits(ibuf, 4 , &i ,&l);
-+ } else if ((val & 0xffe000) == 0xffc000) {/* 2048 <= len < 4096 */
-+ len = 0x000800 | ((val >> 2) & 0x0007ff);
-+ bits -= 6;
-+ getbits(ibuf, 6 , &i ,&l);
-+ } else if ((val & 0xfff000) == 0xffe000) {/* 4096 <= len < 8192 */
-+ len = 0x001000 | (val & 0x000fff);
-+ bits -= 8;
-+ i++;
-+ } else { /* this shouldn't happen */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: wrong length code: 0x%X\n",
-+ __FUNCTION__, state->unit, val);
-+ return DECOMP_ERROR;
-+ }
-+ }
-+ }
-+ s = state->hist + state->histptr;
-+ state->histptr += len;
-+ olen += len;
-+ if (state->histptr < 2*MPPE_HIST_LEN) {
-+ /* copy uncompressed bytes to the history */
-+
-+ /* In some cases len may be greater than off. It means that memory
-+ * areas pointed by s and s-off overlap. I had used memmove() here
-+ * because I thought that it acts as libc's version. Unfortunately,
-+ * I was wrong. :-) I got strange errors sometimes. Wilfried suggested
-+ * using of byte by byte copying here and strange errors disappeared.
-+ */
-+ lamecopy(s, s - off, len);
-+ } else {
-+ /* buffer overflow; drop packet */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: trying to write outside history "
-+ "buffer\n", __FUNCTION__, state->unit);
-+ return DECOMP_ERROR;
-+ }
-+ }
-+
-+ /* Do PFC decompression */
-+ len = olen;
-+ if ((history[0] & 0x01) != 0) {
-+ obuf[0] = 0;
-+ obuf++;
-+ len++;
-+ }
-+
-+ if (len <= osize) {
-+ /* copy uncompressed packet to the output buffer */
-+ memcpy(obuf, history, olen);
-+ } else {
-+ /* buffer overflow; drop packet */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: too big uncompressed packet: %d\n",
-+ __FUNCTION__, state->unit, len + (PPP_HDRLEN / 2));
-+ return DECOMP_ERROR;
-+ }
-+
-+ return (int) len;
-+}
-+
-+int
-+mppe_decompress(void *arg, unsigned char *ibuf, int isize,
-+ unsigned char *obuf, int osize)
-+{
-+ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg;
-+ int seq, bits, uncomplen;
-+
-+ if (isize <= PPP_HDRLEN + MPPE_OVHD) {
-+ if (state->debug) {
-+ printk(KERN_DEBUG "%s%d: short packet (len=%d)\n", __FUNCTION__,
-+ state->unit, isize);
-+ }
-+ return DECOMP_ERROR;
-+ }
-+
-+ /* Get coherency counter and control bits from input buffer */
-+ seq = MPPE_CCOUNT(ibuf);
-+ bits = MPPE_BITS(ibuf);
-+
-+ if (state->stateless) {
-+ /* RFC 3078, sec 8.1. */
-+ mppe_increase_ccount(state);
-+ if ((seq != state->ccount) && state->debug)
-+ printk(KERN_DEBUG "%s%d: bad sequence number: %d, expected: %d\n",
-+ __FUNCTION__, state->unit, seq, state->ccount);
-+ while (seq != state->ccount)
-+ mppe_increase_ccount(state);
-+ } else {
-+ /* RFC 3078, sec 8.2. */
-+ if (state->flushexpected) { /* discard state */
-+ if ((bits & MPPE_BIT_FLUSHED)) { /* we received expected FLUSH bit */
-+ while (seq != state->ccount)
-+ mppe_increase_ccount(state);
-+ state->flushexpected = 0;
-+ } else /* drop packet*/
-+ return DECOMP_ERROR;
-+ } else { /* normal state */
-+ mppe_increase_ccount(state);
-+ if (seq != state->ccount) {
-+ /* Packet loss detected, enter the discard state. */
-+ if (state->debug)
-+ printk(KERN_DEBUG "%s%d: bad sequence number: %d, expected: %d\n",
-+ __FUNCTION__, state->unit, seq, state->ccount);
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ }
-+ if (state->mppe && (bits & MPPE_BIT_FLUSHED)) {
-+ arc4_setkey(state, state->session_key, state->keylen);
-+ }
-+ }
-+
-+ if (state->mppc && (bits & (MPPE_BIT_FLUSHED | MPPE_BIT_RESET))) {
-+ state->histptr = MPPE_HIST_LEN;
-+ if ((bits & MPPE_BIT_FLUSHED)) {
-+ memset(state->hist + MPPE_HIST_LEN, 0, MPPE_HIST_LEN*sizeof(u8));
-+ } else
-+ if ((bits & MPPE_BIT_RESET)) {
-+ memcpy(state->hist, state->hist + MPPE_HIST_LEN, MPPE_HIST_LEN);
-+ }
-+ }
-+
-+ /* Fill in the first part of the PPP header. The protocol field
-+ comes from the decompressed data. */
-+ obuf[0] = PPP_ADDRESS(ibuf);
-+ obuf[1] = PPP_CONTROL(ibuf);
-+ obuf += PPP_HDRLEN / 2;
-+
-+ if (state->mppe) { /* process encrypted packet */
-+ if ((bits & MPPE_BIT_ENCRYPTED)) {
-+ /* OK, packet encrypted, so decrypt it */
-+ if (state->mppc && (bits & MPPE_BIT_COMP)) {
-+ /* Hack warning !!! RC4 implementation which we use does
-+ decryption "in place" - it means that input and output
-+ buffers can be *the same* memory area. Therefore we don't
-+ need to use a temporary buffer. But be careful - other
-+ implementations don't have to be so nice. */
-+ arc4_decrypt(state, ibuf + PPP_HDRLEN + (MPPE_OVHD / 2), isize -
-+ PPP_HDRLEN - (MPPE_OVHD / 2), ibuf + PPP_HDRLEN +
-+ (MPPE_OVHD / 2));
-+ uncomplen = mppc_decompress(state, ibuf + PPP_HDRLEN +
-+ (MPPE_OVHD / 2), obuf, isize -
-+ PPP_HDRLEN - (MPPE_OVHD / 2),
-+ osize - (PPP_HDRLEN / 2));
-+ if (uncomplen == DECOMP_ERROR) {
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ uncomplen += PPP_HDRLEN / 2;
-+ (state->stats).comp_bytes += isize;
-+ (state->stats).comp_packets++;
-+ } else {
-+ uncomplen = isize - MPPE_OVHD;
-+ /* Decrypt the first byte in order to check if it is
-+ compressed or uncompressed protocol field */
-+ arc4_decrypt(state, ibuf + PPP_HDRLEN + (MPPE_OVHD / 2), 1, obuf);
-+ /* Do PFC decompression */
-+ if ((obuf[0] & 0x01) != 0) {
-+ obuf[1] = obuf[0];
-+ obuf[0] = 0;
-+ obuf++;
-+ uncomplen++;
-+ }
-+ /* And finally, decrypt the rest of the frame. */
-+ arc4_decrypt(state, ibuf + PPP_HDRLEN + (MPPE_OVHD / 2) + 1,
-+ isize - PPP_HDRLEN - (MPPE_OVHD / 2) - 1, obuf + 1);
-+ (state->stats).inc_bytes += isize;
-+ (state->stats).inc_packets++;
-+ }
-+ } else { /* this shouldn't happen */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: encryption negotiated but not an "
-+ "encrypted packet received\n", __FUNCTION__, state->unit);
-+ mppe_change_key(state, 0);
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ } else {
-+ if (state->mppc) { /* no MPPE, only MPPC */
-+ if ((bits & MPPE_BIT_COMP)) {
-+ uncomplen = mppc_decompress(state, ibuf + PPP_HDRLEN +
-+ (MPPE_OVHD / 2), obuf, isize -
-+ PPP_HDRLEN - (MPPE_OVHD / 2),
-+ osize - (PPP_HDRLEN / 2));
-+ if (uncomplen == DECOMP_ERROR) {
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ uncomplen += PPP_HDRLEN / 2;
-+ (state->stats).comp_bytes += isize;
-+ (state->stats).comp_packets++;
-+ } else {
-+ memcpy(obuf, ibuf + PPP_HDRLEN + (MPPE_OVHD / 2), isize -
-+ PPP_HDRLEN - (MPPE_OVHD / 2));
-+ uncomplen = isize - MPPE_OVHD;
-+ (state->stats).inc_bytes += isize;
-+ (state->stats).inc_packets++;
-+ }
-+ } else { /* this shouldn't happen */
-+ if (state->debug)
-+ printk(KERN_ERR "%s%d: error - not an MPPC or MPPE frame "
-+ "received\n", __FUNCTION__, state->unit);
-+ state->flushexpected = 1;
-+ return DECOMP_ERROR;
-+ }
-+ }
-+
-+ (state->stats).unc_bytes += uncomplen;
-+ (state->stats).unc_packets++;
-+
-+ return uncomplen;
-+}
-+
-+
-+/************************************************************
-+ * Module interface table
-+ ************************************************************/
-+
-+/* These are in ppp_generic.c */
-+extern int ppp_register_compressor (struct compressor *cp);
-+extern void ppp_unregister_compressor (struct compressor *cp);
-+
-+/*
-+ * Functions exported to ppp_generic.c.
-+ *
-+ * In case of MPPC/MPPE there is no need to process incompressible data
-+ * because such a data is sent in MPPC/MPPE frame. Therefore the (*incomp)
-+ * callback function isn't needed.
-+ */
-+struct compressor ppp_mppe = {
-+ CI_MPPE, /* compress_proto */
-+ mppe_comp_alloc, /* comp_alloc */
-+ mppe_comp_free, /* comp_free */
-+ mppe_comp_init, /* comp_init */
-+ mppe_comp_reset, /* comp_reset */
-+ mppe_compress, /* compress */
-+ mppe_stats, /* comp_stat */
-+ mppe_decomp_alloc, /* decomp_alloc */
-+ mppe_comp_free, /* decomp_free */
-+ mppe_decomp_init, /* decomp_init */
-+ mppe_decomp_reset, /* decomp_reset */
-+ mppe_decompress, /* decompress */
-+ NULL, /* incomp */
-+ mppe_stats, /* decomp_stat */
-+};
-+
-+/************************************************************
-+ * Module support routines
-+ ************************************************************/
-+
-+int __init mppe_module_init(void)
-+{
-+ int answer;
-+
-+ /* When the module is compiled into kernel, it is initialized before
-+ * CryptoAPI. Therefore the code below reports that there is no crypto
-+ * stuff in the kernel. Marlon de Boer who has pointed out the problem,
-+ * has sent also a message to CryptoAPI developers, so maybe in the future
-+ * the code will be uncommented.
-+ *
-+ if (!(crypto_alg_available("arc4", 0) && crypto_alg_available("sha1", 0))) {
-+ printk(KERN_ERR "Kernel doesn't provide ARC4 and/or SHA1 algorithms "
-+ "required by MPPE/MPPC. Check CryptoAPI configuration.\n");
-+ return -ENODEV;
-+ }
-+ */
-+
-+ /* Allocate space for SHAPad1, SHAPad2 and ... */
-+ sha_pad = kmalloc(sizeof(struct sha_pad), GFP_KERNEL);
-+ if (sha_pad == NULL)
-+ return -ENOMEM;
-+ /* ... initialize them */
-+ memset(sha_pad->sha_pad1, 0x00, sizeof(sha_pad->sha_pad1));
-+ memset(sha_pad->sha_pad2, 0xf2, sizeof(sha_pad->sha_pad2));
-+
-+ answer = ppp_register_compressor(&ppp_mppe);
-+ if (answer == 0) {
-+ printk(KERN_INFO "MPPE/MPPC encryption/compression module registered\n");
-+ }
-+ return answer;
-+}
-+
-+void __exit mppe_module_cleanup(void)
-+{
-+ kfree(sha_pad);
-+ ppp_unregister_compressor(&ppp_mppe);
-+ printk(KERN_INFO "MPPE/MPPC encryption/compression module unregistered\n");
-+}
-+
-+module_init(mppe_module_init);
-+module_exit(mppe_module_cleanup);
-+
-+MODULE_AUTHOR("Jan Dubiec <jdx@slackware.pl>");
-+MODULE_DESCRIPTION("MPPE/MPPC encryption/compression module for Linux");
-+MODULE_LICENSE("Dual BSD/GPL");
-diff -ruN linux-2.4.29.orig/include/linux/ppp-comp.h linux-2.4.29/include/linux/ppp-comp.h
---- linux-2.4.29.orig/include/linux/ppp-comp.h 2005-02-02 22:18:25.000000000 +0100
-+++ linux-2.4.29/include/linux/ppp-comp.h 2005-02-02 22:41:01.000000000 +0100
-@@ -28,7 +28,7 @@
- */
-
- /*
-- * ==FILEVERSION 980319==
-+ * ==FILEVERSION 20040509==
- *
- * NOTE TO MAINTAINERS:
- * If you modify this file at all, please set the above date.
-@@ -78,7 +78,7 @@
-
- /* Compress a packet */
- int (*compress) (void *state, unsigned char *rptr,
-- unsigned char *obuf, int isize, int osize);
-+ unsigned char *obuf, int isize, int osize);
-
- /* Return compression statistics */
- void (*comp_stat) (void *state, struct compstat *stats);
-@@ -99,7 +99,7 @@
-
- /* Decompress a packet. */
- int (*decompress) (void *state, unsigned char *ibuf, int isize,
-- unsigned char *obuf, int osize);
-+ unsigned char *obuf, int osize);
-
- /* Update state for an incompressible packet received */
- void (*incomp) (void *state, unsigned char *ibuf, int icnt);
-@@ -187,6 +187,42 @@
- #define DEFLATE_CHK_SEQUENCE 0
-
- /*
-+ * Definitions for MPPE/MPPC.
-+ */
-+
-+#define CI_MPPE 18 /* config option for MPPE */
-+#define CILEN_MPPE 6 /* length of config option */
-+
-+#define MPPE_OVHD 4 /* MPPE overhead */
-+#define MPPE_MAX_KEY_LEN 16 /* largest key length (128-bit) */
-+
-+#define MPPE_STATELESS 0x01 /* configuration bit H */
-+#define MPPE_40BIT 0x20 /* configuration bit L */
-+#define MPPE_56BIT 0x80 /* configuration bit M */
-+#define MPPE_128BIT 0x40 /* configuration bit S */
-+#define MPPE_MPPC 0x01 /* configuration bit C */
-+
-+/*
-+ * Definitions for Stac LZS.
-+ */
-+
-+#define CI_LZS 17 /* config option for Stac LZS */
-+#define CILEN_LZS 5 /* length of config option */
-+
-+#define LZS_OVHD 4 /* max. LZS overhead */
-+#define LZS_HIST_LEN 2048 /* LZS history size */
-+#define LZS_MAX_CCOUNT 0x0FFF /* max. coherency counter value */
-+
-+#define LZS_MODE_NONE 0
-+#define LZS_MODE_LCB 1
-+#define LZS_MODE_CRC 2
-+#define LZS_MODE_SEQ 3
-+#define LZS_MODE_EXT 4
-+
-+#define LZS_EXT_BIT_FLUSHED 0x80 /* bit A */
-+#define LZS_EXT_BIT_COMP 0x20 /* bit C */
-+
-+/*
- * Definitions for other, as yet unsupported, compression methods.
- */
-
diff --git a/openwrt/target/linux/generic-2.4/patches/107-cifs.patch b/openwrt/target/linux/generic-2.4/patches/107-cifs.patch
deleted file mode 100644
index bdccf4de9f..0000000000
--- a/openwrt/target/linux/generic-2.4/patches/107-cifs.patch
+++ /dev/null
@@ -1,22022 +0,0 @@
-diff -urN linux-2.4.29.old/Documentation/Configure.help linux-2.4.29/Documentation/Configure.help
---- linux-2.4.29.old/Documentation/Configure.help 2005-03-21 19:30:22.000000000 +0100
-+++ linux-2.4.29/Documentation/Configure.help 2005-03-21 19:36:51.000000000 +0100
-@@ -17943,6 +17943,34 @@
-
- If you don't know what all this is about, say N.
-
-+CIFS (Common Internet File System) support
-+CONFIG_CIFS
-+ This is the client VFS module for the Common Internet File System
-+ (CIFS) protocol which is the successor to the Server Message Block
-+ (SMB) protocol, the native file sharing mechanism for most early
-+ PC operating systems. CIFS is fully supported by current network
-+ file servers such as Windows 2000, Windows 2003 (including
-+ Windows XP) as well by Samba (which provides excellent CIFS
-+ server support for Linux and many other operating systems).
-+ The smbfs module should be used instead of this cifs module for
-+ mounting to older SMB servers such as OS/2. The smbfs and cifs
-+ modules can coexist and do not conflict.
-+
-+ The intent of this module is to provide the most advanced network
-+ file system function for CIFS compliant servers, including better
-+ POSIX compliance, secure per-user session establishment, high
-+ performance safe distributed caching (oplock), optional packet
-+ signing, Unicode support and other internationalization improvements
-+ For more information see the project page at
-+ http://us1.samba.org/samba/Linux_CIFS_client.html
-+
-+CIFS Debugging
-+CONFIG_CIFS_DEBUG
-+ If you are experiencing any problems with the CIFS filesystem, say
-+ Y here. This will result in additional debugging messages to be
-+ written to the system log. Under normal circumstances, this
-+ results in very little overhead.
-+
- SMB file system support (to mount Windows shares etc.)
- CONFIG_SMB_FS
- SMB (Server Message Block) is the protocol Windows for Workgroups
-diff -urN linux-2.4.29.old/Documentation/filesystems/00-INDEX linux-2.4.29/Documentation/filesystems/00-INDEX
---- linux-2.4.29.old/Documentation/filesystems/00-INDEX 2004-02-18 14:36:30.000000000 +0100
-+++ linux-2.4.29/Documentation/filesystems/00-INDEX 2005-03-21 19:36:51.000000000 +0100
-@@ -10,6 +10,8 @@
- - info for the BeOS file system (BFS)
- bfs.txt
- - info for the SCO UnixWare Boot Filesystem (BFS).
-+cifs.txt
-+ - info on the Common Internet File System (CIFS)
- coda.txt
- - description of the CODA filesystem.
- cramfs.txt
-diff -urN linux-2.4.29.old/Documentation/filesystems/cifs.txt linux-2.4.29/Documentation/filesystems/cifs.txt
---- linux-2.4.29.old/Documentation/filesystems/cifs.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/Documentation/filesystems/cifs.txt 2005-03-21 19:36:51.000000000 +0100
-@@ -0,0 +1,51 @@
-+ This is the client VFS module for the Common Internet File System
-+ (CIFS) protocol which is the successor to the Server Message Block
-+ (SMB) protocol, the native file sharing mechanism for most early
-+ PC operating systems. CIFS is fully supported by current network
-+ file servers such as Windows 2000, Windows 2003 (including
-+ Windows XP) as well by Samba (which provides excellent CIFS
-+ server support for Linux and many other operating systems), so
-+ this network filesystem client can mount to a wide variety of
-+ servers. The smbfs module should be used instead of this cifs module
-+ for mounting to older SMB servers such as OS/2. The smbfs and cifs
-+ modules can coexist and do not conflict. The CIFS VFS filesystem
-+ module is designed to work well with servers that implement the
-+ newer versions (dialects) of the SMB/CIFS protocol such as Samba,
-+ the program written by Andrew Tridgell that turns any Unix host
-+ into a SMB/CIFS file server.
-+
-+ The intent of this module is to provide the most advanced network
-+ file system function for CIFS compliant servers, including better
-+ POSIX compliance, secure per-user session establishment, high
-+ performance safe distributed caching (oplock), optional packet
-+ signing, large files, Unicode support and other internationalization
-+ improvements. Since both Samba server and this filesystem client support
-+ the CIFS Unix extensions, the combination can provide a reasonable
-+ alternative to NFSv4 for fileserving in some Linux to Linux environments,
-+ not just in Linux to Windows environments.
-+
-+ This filesystem has an optional mount utility (mount.cifs) that can
-+ be obtained from the project page and installed in the path in the same
-+ directory with the other mount helpers (such as mount.smbfs).
-+ Mounting using the cifs filesystem without installing the mount helper
-+ requires specifying the server's ip address.
-+
-+ For Linux 2.4:
-+ mount //anything/here /mnt_target -o
-+ user=username,pass=password,unc=//ip_address_of_server/sharename
-+
-+ For Linux 2.5:
-+ mount //ip_address_of_server/sharename /mnt_target -o user=username, pass=password
-+
-+
-+ For more information on the module see the project page at
-+
-+ http://us1.samba.org/samba/Linux_CIFS_client.html
-+
-+ For more information on CIFS see:
-+
-+ http://www.snia.org/tech_activities/CIFS
-+
-+ or the Samba site:
-+
-+ http://www.samba.org
-diff -urN linux-2.4.29.old/fs/cifs/asn1.c linux-2.4.29/fs/cifs/asn1.c
---- linux-2.4.29.old/fs/cifs/asn1.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/asn1.c 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,614 @@
-+/*
-+ * The ASB.1/BER parsing code is derived from ip_nat_snmp_basic.c which was in
-+ * turn derived from the gxsnmp package by Gregory McLean & Jochen Friedrich
-+ *
-+ * Copyright (c) 2000 RP Internet (www.rpi.net.au).
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the 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 <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <linux/mm.h>
-+#include <linux/slab.h>
-+#include "cifspdu.h"
-+#include "cifsglob.h"
-+#include "cifs_debug.h"
-+
-+/*****************************************************************************
-+ *
-+ * Basic ASN.1 decoding routines (gxsnmp author Dirk Wisse)
-+ *
-+ *****************************************************************************/
-+
-+/* Class */
-+#define ASN1_UNI 0 /* Universal */
-+#define ASN1_APL 1 /* Application */
-+#define ASN1_CTX 2 /* Context */
-+#define ASN1_PRV 3 /* Private */
-+
-+/* Tag */
-+#define ASN1_EOC 0 /* End Of Contents or N/A */
-+#define ASN1_BOL 1 /* Boolean */
-+#define ASN1_INT 2 /* Integer */
-+#define ASN1_BTS 3 /* Bit String */
-+#define ASN1_OTS 4 /* Octet String */
-+#define ASN1_NUL 5 /* Null */
-+#define ASN1_OJI 6 /* Object Identifier */
-+#define ASN1_OJD 7 /* Object Description */
-+#define ASN1_EXT 8 /* External */
-+#define ASN1_SEQ 16 /* Sequence */
-+#define ASN1_SET 17 /* Set */
-+#define ASN1_NUMSTR 18 /* Numerical String */
-+#define ASN1_PRNSTR 19 /* Printable String */
-+#define ASN1_TEXSTR 20 /* Teletext String */
-+#define ASN1_VIDSTR 21 /* Video String */
-+#define ASN1_IA5STR 22 /* IA5 String */
-+#define ASN1_UNITIM 23 /* Universal Time */
-+#define ASN1_GENTIM 24 /* General Time */
-+#define ASN1_GRASTR 25 /* Graphical String */
-+#define ASN1_VISSTR 26 /* Visible String */
-+#define ASN1_GENSTR 27 /* General String */
-+
-+/* Primitive / Constructed methods*/
-+#define ASN1_PRI 0 /* Primitive */
-+#define ASN1_CON 1 /* Constructed */
-+
-+/*
-+ * Error codes.
-+ */
-+#define ASN1_ERR_NOERROR 0
-+#define ASN1_ERR_DEC_EMPTY 2
-+#define ASN1_ERR_DEC_EOC_MISMATCH 3
-+#define ASN1_ERR_DEC_LENGTH_MISMATCH 4
-+#define ASN1_ERR_DEC_BADVALUE 5
-+
-+#define SPNEGO_OID_LEN 7
-+#define NTLMSSP_OID_LEN 10
-+unsigned long SPNEGO_OID[7] = { 1, 3, 6, 1, 5, 5, 2 };
-+unsigned long NTLMSSP_OID[10] = { 1, 3, 6, 1, 4, 1, 311, 2, 2, 10 };
-+
-+/*
-+ * ASN.1 context.
-+ */
-+struct asn1_ctx {
-+ int error; /* Error condition */
-+ unsigned char *pointer; /* Octet just to be decoded */
-+ unsigned char *begin; /* First octet */
-+ unsigned char *end; /* Octet after last octet */
-+};
-+
-+/*
-+ * Octet string (not null terminated)
-+ */
-+struct asn1_octstr {
-+ unsigned char *data;
-+ unsigned int len;
-+};
-+
-+static void
-+asn1_open(struct asn1_ctx *ctx, unsigned char *buf, unsigned int len)
-+{
-+ ctx->begin = buf;
-+ ctx->end = buf + len;
-+ ctx->pointer = buf;
-+ ctx->error = ASN1_ERR_NOERROR;
-+}
-+
-+static unsigned char
-+asn1_octet_decode(struct asn1_ctx *ctx, unsigned char *ch)
-+{
-+ if (ctx->pointer >= ctx->end) {
-+ ctx->error = ASN1_ERR_DEC_EMPTY;
-+ return 0;
-+ }
-+ *ch = *(ctx->pointer)++;
-+ return 1;
-+}
-+
-+static unsigned char
-+asn1_tag_decode(struct asn1_ctx *ctx, unsigned int *tag)
-+{
-+ unsigned char ch;
-+
-+ *tag = 0;
-+
-+ do {
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+ *tag <<= 7;
-+ *tag |= ch & 0x7F;
-+ } while ((ch & 0x80) == 0x80);
-+ return 1;
-+}
-+
-+static unsigned char
-+asn1_id_decode(struct asn1_ctx *ctx,
-+ unsigned int *cls, unsigned int *con, unsigned int *tag)
-+{
-+ unsigned char ch;
-+
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+
-+ *cls = (ch & 0xC0) >> 6;
-+ *con = (ch & 0x20) >> 5;
-+ *tag = (ch & 0x1F);
-+
-+ if (*tag == 0x1F) {
-+ if (!asn1_tag_decode(ctx, tag))
-+ return 0;
-+ }
-+ return 1;
-+}
-+
-+static unsigned char
-+asn1_length_decode(struct asn1_ctx *ctx, unsigned int *def, unsigned int *len)
-+{
-+ unsigned char ch, cnt;
-+
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+
-+ if (ch == 0x80)
-+ *def = 0;
-+ else {
-+ *def = 1;
-+
-+ if (ch < 0x80)
-+ *len = ch;
-+ else {
-+ cnt = (unsigned char) (ch & 0x7F);
-+ *len = 0;
-+
-+ while (cnt > 0) {
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+ *len <<= 8;
-+ *len |= ch;
-+ cnt--;
-+ }
-+ }
-+ }
-+ return 1;
-+}
-+
-+static unsigned char
-+asn1_header_decode(struct asn1_ctx *ctx,
-+ unsigned char **eoc,
-+ unsigned int *cls, unsigned int *con, unsigned int *tag)
-+{
-+ unsigned int def, len;
-+
-+ if (!asn1_id_decode(ctx, cls, con, tag))
-+ return 0;
-+
-+ if (!asn1_length_decode(ctx, &def, &len))
-+ return 0;
-+
-+ if (def)
-+ *eoc = ctx->pointer + len;
-+ else
-+ *eoc = NULL;
-+ return 1;
-+}
-+
-+static unsigned char
-+asn1_eoc_decode(struct asn1_ctx *ctx, unsigned char *eoc)
-+{
-+ unsigned char ch;
-+
-+ if (eoc == 0) {
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+
-+ if (ch != 0x00) {
-+ ctx->error = ASN1_ERR_DEC_EOC_MISMATCH;
-+ return 0;
-+ }
-+
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+
-+ if (ch != 0x00) {
-+ ctx->error = ASN1_ERR_DEC_EOC_MISMATCH;
-+ return 0;
-+ }
-+ return 1;
-+ } else {
-+ if (ctx->pointer != eoc) {
-+ ctx->error = ASN1_ERR_DEC_LENGTH_MISMATCH;
-+ return 0;
-+ }
-+ return 1;
-+ }
-+}
-+
-+/* static unsigned char asn1_null_decode(struct asn1_ctx *ctx,
-+ unsigned char *eoc)
-+{
-+ ctx->pointer = eoc;
-+ return 1;
-+}
-+
-+static unsigned char asn1_long_decode(struct asn1_ctx *ctx,
-+ unsigned char *eoc, long *integer)
-+{
-+ unsigned char ch;
-+ unsigned int len;
-+
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+
-+ *integer = (signed char) ch;
-+ len = 1;
-+
-+ while (ctx->pointer < eoc) {
-+ if (++len > sizeof(long)) {
-+ ctx->error = ASN1_ERR_DEC_BADVALUE;
-+ return 0;
-+ }
-+
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+
-+ *integer <<= 8;
-+ *integer |= ch;
-+ }
-+ return 1;
-+}
-+
-+static unsigned char asn1_uint_decode(struct asn1_ctx *ctx,
-+ unsigned char *eoc,
-+ unsigned int *integer)
-+{
-+ unsigned char ch;
-+ unsigned int len;
-+
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+
-+ *integer = ch;
-+ if (ch == 0)
-+ len = 0;
-+ else
-+ len = 1;
-+
-+ while (ctx->pointer < eoc) {
-+ if (++len > sizeof(unsigned int)) {
-+ ctx->error = ASN1_ERR_DEC_BADVALUE;
-+ return 0;
-+ }
-+
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+
-+ *integer <<= 8;
-+ *integer |= ch;
-+ }
-+ return 1;
-+}
-+
-+static unsigned char asn1_ulong_decode(struct asn1_ctx *ctx,
-+ unsigned char *eoc,
-+ unsigned long *integer)
-+{
-+ unsigned char ch;
-+ unsigned int len;
-+
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+
-+ *integer = ch;
-+ if (ch == 0)
-+ len = 0;
-+ else
-+ len = 1;
-+
-+ while (ctx->pointer < eoc) {
-+ if (++len > sizeof(unsigned long)) {
-+ ctx->error = ASN1_ERR_DEC_BADVALUE;
-+ return 0;
-+ }
-+
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+
-+ *integer <<= 8;
-+ *integer |= ch;
-+ }
-+ return 1;
-+}
-+
-+static unsigned char
-+asn1_octets_decode(struct asn1_ctx *ctx,
-+ unsigned char *eoc,
-+ unsigned char **octets, unsigned int *len)
-+{
-+ unsigned char *ptr;
-+
-+ *len = 0;
-+
-+ *octets = kmalloc(eoc - ctx->pointer, GFP_ATOMIC);
-+ if (*octets == NULL) {
-+ return 0;
-+ }
-+
-+ ptr = *octets;
-+ while (ctx->pointer < eoc) {
-+ if (!asn1_octet_decode(ctx, (unsigned char *) ptr++)) {
-+ kfree(*octets);
-+ *octets = NULL;
-+ return 0;
-+ }
-+ (*len)++;
-+ }
-+ return 1;
-+} */
-+
-+static unsigned char
-+asn1_subid_decode(struct asn1_ctx *ctx, unsigned long *subid)
-+{
-+ unsigned char ch;
-+
-+ *subid = 0;
-+
-+ do {
-+ if (!asn1_octet_decode(ctx, &ch))
-+ return 0;
-+
-+ *subid <<= 7;
-+ *subid |= ch & 0x7F;
-+ } while ((ch & 0x80) == 0x80);
-+ return 1;
-+}
-+
-+static unsigned char
-+asn1_oid_decode(struct asn1_ctx *ctx,
-+ unsigned char *eoc, unsigned long **oid, unsigned int *len)
-+{
-+ unsigned long subid;
-+ unsigned int size;
-+ unsigned long *optr;
-+
-+ size = eoc - ctx->pointer + 1;
-+ *oid = kmalloc(size * sizeof (unsigned long), GFP_ATOMIC);
-+ if (*oid == NULL) {
-+ return 0;
-+ }
-+
-+ optr = *oid;
-+
-+ if (!asn1_subid_decode(ctx, &subid)) {
-+ kfree(*oid);
-+ *oid = NULL;
-+ return 0;
-+ }
-+
-+ if (subid < 40) {
-+ optr[0] = 0;
-+ optr[1] = subid;
-+ } else if (subid < 80) {
-+ optr[0] = 1;
-+ optr[1] = subid - 40;
-+ } else {
-+ optr[0] = 2;
-+ optr[1] = subid - 80;
-+ }
-+
-+ *len = 2;
-+ optr += 2;
-+
-+ while (ctx->pointer < eoc) {
-+ if (++(*len) > size) {
-+ ctx->error = ASN1_ERR_DEC_BADVALUE;
-+ kfree(*oid);
-+ *oid = NULL;
-+ return 0;
-+ }
-+
-+ if (!asn1_subid_decode(ctx, optr++)) {
-+ kfree(*oid);
-+ *oid = NULL;
-+ return 0;
-+ }
-+ }
-+ return 1;
-+}
-+
-+static int
-+compare_oid(unsigned long *oid1, unsigned int oid1len,
-+ unsigned long *oid2, unsigned int oid2len)
-+{
-+ unsigned int i;
-+
-+ if (oid1len != oid2len)
-+ return 0;
-+ else {
-+ for (i = 0; i < oid1len; i++) {
-+ if (oid1[i] != oid2[i])
-+ return 0;
-+ }
-+ return 1;
-+ }
-+}
-+
-+ /* BB check for endian conversion issues here */
-+
-+int
-+decode_negTokenInit(unsigned char *security_blob, int length,
-+ enum securityEnum *secType)
-+{
-+ struct asn1_ctx ctx;
-+ unsigned char *end;
-+ unsigned char *sequence_end;
-+ unsigned long *oid;
-+ unsigned int cls, con, tag, oidlen, rc;
-+ int use_ntlmssp = FALSE;
-+
-+ *secType = NTLM; /* BB eventually make Kerberos or NLTMSSP the default */
-+
-+ /* cifs_dump_mem(" Received SecBlob ", security_blob, length); */
-+
-+ asn1_open(&ctx, security_blob, length);
-+
-+ if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
-+ cFYI(1, ("Error decoding negTokenInit header "));
-+ return 0;
-+ } else if ((cls != ASN1_APL) || (con != ASN1_CON)
-+ || (tag != ASN1_EOC)) {
-+ cFYI(1, ("cls = %d con = %d tag = %d", cls, con, tag));
-+ return 0;
-+ } else {
-+ /* remember to free obj->oid */
-+ rc = asn1_header_decode(&ctx, &end, &cls, &con, &tag);
-+ if (rc) {
-+ if ((tag == ASN1_OJI) && (cls == ASN1_PRI)) {
-+ rc = asn1_oid_decode(&ctx, end, &oid, &oidlen);
-+ if (rc) {
-+ rc = compare_oid(oid, oidlen,
-+ SPNEGO_OID,
-+ SPNEGO_OID_LEN);
-+ kfree(oid);
-+ }
-+ } else
-+ rc = 0;
-+ }
-+
-+ if (!rc) {
-+ cFYI(1, ("Error decoding negTokenInit header"));
-+ return 0;
-+ }
-+
-+ if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
-+ cFYI(1, ("Error decoding negTokenInit "));
-+ return 0;
-+ } else if ((cls != ASN1_CTX) || (con != ASN1_CON)
-+ || (tag != ASN1_EOC)) {
-+ cFYI(1,("cls = %d con = %d tag = %d end = %p (%d) exit 0",
-+ cls, con, tag, end, *end));
-+ return 0;
-+ }
-+
-+ if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
-+ cFYI(1, ("Error decoding negTokenInit "));
-+ return 0;
-+ } else if ((cls != ASN1_UNI) || (con != ASN1_CON)
-+ || (tag != ASN1_SEQ)) {
-+ cFYI(1,("cls = %d con = %d tag = %d end = %p (%d) exit 1",
-+ cls, con, tag, end, *end));
-+ return 0;
-+ }
-+
-+ if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
-+ cFYI(1, ("Error decoding 2nd part of negTokenInit "));
-+ return 0;
-+ } else if ((cls != ASN1_CTX) || (con != ASN1_CON)
-+ || (tag != ASN1_EOC)) {
-+ cFYI(1,
-+ ("cls = %d con = %d tag = %d end = %p (%d) exit 0",
-+ cls, con, tag, end, *end));
-+ return 0;
-+ }
-+
-+ if (asn1_header_decode
-+ (&ctx, &sequence_end, &cls, &con, &tag) == 0) {
-+ cFYI(1, ("Error decoding 2nd part of negTokenInit "));
-+ return 0;
-+ } else if ((cls != ASN1_UNI) || (con != ASN1_CON)
-+ || (tag != ASN1_SEQ)) {
-+ cFYI(1,
-+ ("cls = %d con = %d tag = %d end = %p (%d) exit 1",
-+ cls, con, tag, end, *end));
-+ return 0;
-+ }
-+
-+ while (!asn1_eoc_decode(&ctx, sequence_end)) {
-+ rc = asn1_header_decode(&ctx, &end, &cls, &con, &tag);
-+ if (!rc) {
-+ cFYI(1,
-+ ("Error 1 decoding negTokenInit header exit 2"));
-+ return 0;
-+ }
-+ if ((tag == ASN1_OJI) && (con == ASN1_PRI)) {
-+ asn1_oid_decode(&ctx, end, &oid, &oidlen);
-+ cFYI(1,
-+ ("OID len = %d oid = 0x%lx 0x%lx 0x%lx 0x%lx",
-+ oidlen, *oid, *(oid + 1), *(oid + 2),
-+ *(oid + 3)));
-+ rc = compare_oid(oid, oidlen, NTLMSSP_OID,
-+ NTLMSSP_OID_LEN);
-+ kfree(oid);
-+ if (rc)
-+ use_ntlmssp = TRUE;
-+ } else {
-+ cFYI(1,("This should be an oid what is going on? "));
-+ }
-+ }
-+
-+ if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
-+ cFYI(1,
-+ ("Error decoding last part of negTokenInit exit 3"));
-+ return 0;
-+ } else if ((cls != ASN1_CTX) || (con != ASN1_CON)) { /* tag = 3 indicating mechListMIC */
-+ cFYI(1,
-+ ("Exit 4 cls = %d con = %d tag = %d end = %p (%d)",
-+ cls, con, tag, end, *end));
-+ return 0;
-+ }
-+ if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
-+ cFYI(1,
-+ ("Error decoding last part of negTokenInit exit 5"));
-+ return 0;
-+ } else if ((cls != ASN1_UNI) || (con != ASN1_CON)
-+ || (tag != ASN1_SEQ)) {
-+ cFYI(1,
-+ ("Exit 6 cls = %d con = %d tag = %d end = %p (%d)",
-+ cls, con, tag, end, *end));
-+ }
-+
-+ if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
-+ cFYI(1,
-+ ("Error decoding last part of negTokenInit exit 7"));
-+ return 0;
-+ } else if ((cls != ASN1_CTX) || (con != ASN1_CON)) {
-+ cFYI(1,
-+ ("Exit 8 cls = %d con = %d tag = %d end = %p (%d)",
-+ cls, con, tag, end, *end));
-+ return 0;
-+ }
-+ if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
-+ cFYI(1,
-+ ("Error decoding last part of negTokenInit exit 9"));
-+ return 0;
-+ } else if ((cls != ASN1_UNI) || (con != ASN1_PRI)
-+ || (tag != ASN1_GENSTR)) {
-+ cFYI(1,
-+ ("Exit 10 cls = %d con = %d tag = %d end = %p (%d)",
-+ cls, con, tag, end, *end));
-+ return 0;
-+ }
-+ cFYI(1, ("Need to call asn1_octets_decode() function for this %s", ctx.pointer)); /* is this UTF-8 or ASCII? */
-+ }
-+
-+ /* if (use_kerberos)
-+ *secType = Kerberos
-+ else */
-+ if (use_ntlmssp) {
-+ *secType = NTLMSSP;
-+ }
-+
-+ return 1;
-+}
-diff -urN linux-2.4.29.old/fs/cifs/AUTHORS linux-2.4.29/fs/cifs/AUTHORS
---- linux-2.4.29.old/fs/cifs/AUTHORS 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/AUTHORS 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,37 @@
-+Original Author
-+===============
-+Steve French (sfrench@samba.org)
-+
-+The author wishes to express his appreciation and thanks to:
-+Andrew Tridgell (Samba team) for his early suggestions about smb/cifs VFS
-+improvements. Thanks to IBM for allowing me the time and test resources to pursue
-+this project. Jim McDonough from IBM (and the Samba Team) for his help.
-+The IBM Linux JFS team for explaining many esoteric Linux filesystem features.
-+Dave Boutcher of IBM Rochester (author of the OS/400 smb/cifs filesystem client)
-+for proving years ago that a very good smb/cifs client could be done on a Unix like
-+operating system. Volker Lendecke, Andrew Tridgell, Urban Widmark, John Newbigin
-+and others for their work on the Linux smbfs module over the years. Thanks to
-+the other members of the Storage Network Industry Association CIFS Technical
-+Workgroup for their work specifying this highly complex protocol and finally
-+thanks to the Samba team for their technical advice and encouragement.
-+
-+Patch Contributors
-+------------------
-+Zwane Mwaikambo
-+Andi Kleen
-+Amrut Joshi
-+Shobhit Dayal
-+Sergey Vlasov
-+Richard Hughes
-+Yury Umanets
-+
-+Test case and Bug Report contributors
-+-------------------------------------
-+Thanks to those in the community who have submitted detailed bug reports
-+and debug of problems they have found: Jochen Dolze, David Blaine,
-+Rene Scharfe, Martin Josefsson, Alexander Wild, Anthony Liguori,
-+Lars Muller, Urban Widmark, Massimiliano Ferrero, Howard Owen,
-+Olaf Kirch, Kieron Briggs, Nick Millington and others.
-+
-+And thanks to the IBM LTC and Power test teams and SuSE testers for
-+finding multiple bugs during excellent stress test runs.
-diff -urN linux-2.4.29.old/fs/cifs/CHANGES linux-2.4.29/fs/cifs/CHANGES
---- linux-2.4.29.old/fs/cifs/CHANGES 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/CHANGES 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,572 @@
-+Version 1.20
-+------------
-+Make transaction counts more consistent. Merge /proc/fs/cifs/SimultaneousOps
-+info into /proc/fs/cifs/DebugData. Fix oops in rare oops in readdir
-+(in build_wildcard_path_from_dentry). Fix mknod to pass type field
-+(block/char/fifo) properly. Remove spurious mount warning log entry when
-+credentials passed as mount argument. Set major/minor device number in
-+inode for block and char devices when unix extensions enabled.
-+
-+Version 1.19
-+------------
-+Fix /proc/fs/cifs/Stats and DebugData display to handle larger
-+amounts of return data. Properly limit requests to MAX_REQ (50
-+is the usual maximum active multiplex SMB/CIFS requests per server).
-+Do not kill cifsd (and thus hurt the other SMB session) when more than one
-+session to the same server (but with different userids) exists and one
-+of the two user's smb sessions is being removed while leaving the other.
-+Do not loop reconnecting in cifsd demultiplex thread when admin
-+kills the thread without going through unmount.
-+
-+Version 1.18
-+------------
-+Do not rename hardlinked files (since that should be a noop). Flush
-+cached write behind data when reopening a file after session abend,
-+except when already in write. Grab per socket sem during reconnect
-+to avoid oops in sendmsg if overlapping with reconnect. Do not
-+reset cached inode file size on readdir for files open for write on
-+client.
-+
-+
-+Version 1.17
-+------------
-+Update number of blocks in file so du command is happier (in Linux a fake
-+blocksize of 512 is required for calculating number of blocks in inode).
-+Fix prepare write of partial pages to read in data from server if possible.
-+Fix race on tcpStatus field between unmount and reconnection code, causing
-+cifsd process sometimes to hang around forever. Improve out of memory
-+checks in cifs_filldir
-+
-+Version 1.16
-+------------
-+Fix incorrect file size in file handle based setattr on big endian hardware.
-+Fix oops in build_path_from_dentry when out of memory. Add checks for invalid
-+and closing file structs in writepage/partialpagewrite. Add statistics
-+for each mounted share (new menuconfig option). Fix endianness problem in
-+volume information displayed in /proc/fs/cifs/DebugData (only affects
-+affects big endian architectures). Prevent renames while constructing
-+path names for open, mkdir and rmdir.
-+
-+Version 1.15
-+------------
-+Change to mempools for alloc smb request buffers and multiplex structs
-+to better handle low memory problems (and potential deadlocks).
-+
-+Version 1.14
-+------------
-+Fix incomplete listings of large directories on Samba servers when Unix
-+extensions enabled. Fix oops when smb_buffer can not be allocated. Fix
-+rename deadlock when writing out dirty pages at same time.
-+
-+Version 1.13
-+------------
-+Fix open of files in which O_CREATE can cause the mode to change in
-+some cases. Fix case in which retry of write overlaps file close.
-+Fix PPC64 build error. Reduce excessive stack usage in smb password
-+hashing. Fix overwrite of Linux user's view of file mode to Windows servers.
-+
-+Version 1.12
-+------------
-+Fixes for large file copy, signal handling, socket retry, buffer
-+allocation and low memory situations.
-+
-+Version 1.11
-+------------
-+Better port 139 support to Windows servers (RFC1001/RFC1002 Session_Initialize)
-+also now allowing support for specifying client netbiosname. NT4 support added.
-+
-+Version 1.10
-+------------
-+Fix reconnection (and certain failed mounts) to properly wake up the
-+blocked users thread so it does not seem hung (in some cases was blocked
-+until the cifs receive timeout expired). Fix spurious error logging
-+to kernel log when application with open network files killed.
-+
-+Version 1.09
-+------------
-+Fix /proc/fs module unload warning message (that could be logged
-+to the kernel log). Fix intermittent failure in connectathon
-+test7 (hardlink count not immediately refreshed in case in which
-+inode metadata can be incorrectly kept cached when time near zero)
-+
-+Version 1.08
-+------------
-+Allow file_mode and dir_mode (specified at mount time) to be enforced
-+locally (the server already enforced its own ACLs too) for servers
-+that do not report the correct mode (do not support the
-+CIFS Unix Extensions).
-+
-+Version 1.07
-+------------
-+Fix some small memory leaks in some unmount error paths. Fix major leak
-+of cache pages in readpages causing multiple read oriented stress
-+testcases (including fsx, and even large file copy) to fail over time.
-+
-+Version 1.06
-+------------
-+Send NTCreateX with ATTR_POSIX if Linux/Unix extensions negotiated with server.
-+This allows files that differ only in case and improves performance of file
-+creation and file open to such servers. Fix semaphore conflict which causes
-+slow delete of open file to Samba (which unfortunately can cause an oplock
-+break to self while vfs_unlink held i_sem) which can hang for 20 seconds.
-+
-+Version 1.05
-+------------
-+fixes to cifs_readpages for fsx test case
-+
-+Version 1.04
-+------------
-+Fix caching data integrity bug when extending file size especially when no
-+oplock on file. Fix spurious logging of valid already parsed mount options
-+that are parsed outside of the cifs vfs such as nosuid.
-+
-+
-+Version 1.03
-+------------
-+Connect to server when port number override not specified, and tcp port
-+unitialized. Reset search to restart at correct file when kernel routine
-+filldir returns error during large directory searches (readdir).
-+
-+Version 1.02
-+------------
-+Fix caching problem when files opened by multiple clients in which
-+page cache could contain stale data, and write through did
-+not occur often enough while file was still open when read ahead
-+(read oplock) not allowed. Treat "sep=" when first mount option
-+as an overrride of comma as the default separator between mount
-+options.
-+
-+Version 1.01
-+------------
-+Allow passwords longer than 16 bytes. Allow null password string.
-+
-+Version 1.00
-+------------
-+Gracefully clean up failed mounts when attempting to mount to servers such as
-+Windows 98 that terminate tcp sessions during prototocol negotiation. Handle
-+embedded commas in mount parsing of passwords.
-+
-+Version 0.99
-+------------
-+Invalidate local inode cached pages on oplock break and when last file
-+instance is closed so that the client does not continue using stale local
-+copy rather than later modified server copy of file. Do not reconnect
-+when server drops the tcp session prematurely before negotiate
-+protocol response. Fix oops in roepen_file when dentry freed. Allow
-+the support for CIFS Unix Extensions to be disabled via proc interface.
-+
-+Version 0.98
-+------------
-+Fix hang in commit_write during reconnection of open files under heavy load.
-+Fix unload_nls oops in a mount failure path. Serialize writes to same socket
-+which also fixes any possible races when cifs signatures are enabled in SMBs
-+being sent out of signature sequence number order.
-+
-+Version 0.97
-+------------
-+Fix byte range locking bug (endian problem) causing bad offset and
-+length.
-+
-+Version 0.96
-+------------
-+Fix oops (in send_sig) caused by CIFS unmount code trying to
-+wake up the demultiplex thread after it had exited. Do not log
-+error on harmless oplock release of closed handle.
-+
-+Version 0.95
-+------------
-+Fix unsafe global variable usage and password hash failure on gcc 3.3.1
-+Fix problem reconnecting secondary mounts to same server after session
-+failure. Fix invalid dentry - race in mkdir when directory gets created
-+by another client between the lookup and mkdir.
-+
-+Version 0.94
-+------------
-+Fix to list processing in reopen_files. Fix reconnection when server hung
-+but tcpip session still alive. Set proper timeout on socket read.
-+
-+Version 0.93
-+------------
-+Add missing mount options including iocharset. SMP fixes in write and open.
-+Fix errors in reconnecting after TCP session failure. Fix module unloading
-+of default nls codepage
-+
-+Version 0.92
-+------------
-+Active smb transactions should never go negative (fix double FreeXid). Fix
-+list processing in file routines. Check return code on kmalloc in open.
-+Fix spinlock usage for SMP.
-+
-+Version 0.91
-+------------
-+Fix oops in reopen_files when invalid dentry. drop dentry on server rename
-+and on revalidate errors. Fix cases where pid is now tgid. Fix return code
-+on create hard link when server does not support them.
-+
-+Version 0.90
-+------------
-+Fix scheduling while atomic error in getting inode info on newly created file.
-+Fix truncate of existing files opened with O_CREAT but not O_TRUNC set.
-+
-+Version 0.89
-+------------
-+Fix oops on write to dead tcp session. Remove error log write for case when file open
-+O_CREAT but not O_EXCL
-+
-+Version 0.88
-+------------
-+Fix non-POSIX behavior on rename of open file and delete of open file by taking
-+advantage of trans2 SetFileInfo rename facility if available on target server.
-+Retry on ENOSPC and EAGAIN socket errors.
-+
-+Version 0.87
-+------------
-+Fix oops on big endian readdir. Set blksize to be even power of two (2**blkbits) to fix
-+allocation size miscalculation. After oplock token lost do not read through
-+cache.
-+
-+Version 0.86
-+------------
-+Fix oops on empty file readahead. Fix for file size handling for locally cached files.
-+
-+Version 0.85
-+------------
-+Fix oops in mkdir when server fails to return inode info. Fix oops in reopen_files
-+during auto reconnection to server after server recovered from failure.
-+
-+Version 0.84
-+------------
-+Finish support for Linux 2.5 open/create changes, which removes the
-+redundant NTCreate/QPathInfo/close that was sent during file create.
-+Enable oplock by default. Enable packet signing by default (needed to
-+access many recent Windows servers)
-+
-+Version 0.83
-+------------
-+Fix oops when mounting to long server names caused by inverted parms to kmalloc.
-+Fix MultiuserMount (/proc/fs/cifs configuration setting) so that when enabled
-+we will choose a cifs user session (smb uid) that better matches the local
-+uid if a) the mount uid does not match the current uid and b) we have another
-+session to the same server (ip address) for a different mount which
-+matches the current local uid.
-+
-+Version 0.82
-+------------
-+Add support for mknod of block or character devices. Fix oplock
-+code (distributed caching) to properly send response to oplock
-+break from server.
-+
-+Version 0.81
-+------------
-+Finish up CIFS packet digital signing for the default
-+NTLM security case. This should help Windows 2003
-+network interoperability since it is common for
-+packet signing to be required now. Fix statfs (stat -f)
-+which recently started returning errors due to
-+invalid value (-1 instead of 0) being set in the
-+struct kstatfs f_ffiles field.
-+
-+Version 0.80
-+-----------
-+Fix oops on stopping oplock thread when removing cifs when
-+built as module.
-+
-+Version 0.79
-+------------
-+Fix mount options for ro (readonly), uid, gid and file and directory mode.
-+
-+Version 0.78
-+------------
-+Fix errors displayed on failed mounts to be more understandable.
-+Fixed various incorrect or misleading smb to posix error code mappings.
-+
-+Version 0.77
-+------------
-+Fix display of NTFS DFS junctions to display as symlinks.
-+They are the network equivalent. Fix oops in
-+cifs_partialpagewrite caused by missing spinlock protection
-+of openfile linked list. Allow writebehind caching errors to
-+be returned to the application at file close.
-+
-+Version 0.76
-+------------
-+Clean up options displayed in /proc/mounts by show_options to
-+be more consistent with other filesystems.
-+
-+Version 0.75
-+------------
-+Fix delete of readonly file to Windows servers. Reflect
-+presence or absence of read only dos attribute in mode
-+bits for servers that do not support CIFS Unix extensions.
-+Fix shortened results on readdir of large directories to
-+servers supporting CIFS Unix extensions (caused by
-+incorrect resume key).
-+
-+Version 0.74
-+------------
-+Fix truncate bug (set file size) that could cause hangs e.g. running fsx
-+
-+Version 0.73
-+------------
-+unload nls if mount fails.
-+
-+Version 0.72
-+------------
-+Add resume key support to search (readdir) code to workaround
-+Windows bug. Add /proc/fs/cifs/LookupCacheEnable which
-+allows disabling caching of attribute information for
-+lookups.
-+
-+Version 0.71
-+------------
-+Add more oplock handling (distributed caching code). Remove
-+dead code. Remove excessive stack space utilization from
-+symlink routines.
-+
-+Version 0.70
-+------------
-+Fix oops in get dfs referral (triggered when null path sent in to
-+mount). Add support for overriding rsize at mount time.
-+
-+Version 0.69
-+------------
-+Fix buffer overrun in readdir which caused intermittent kernel oopses.
-+Fix writepage code to release kmap on write data. Allow "-ip=" new
-+mount option to be passed in on parameter distinct from the first part
-+(server name portion of) the UNC name. Allow override of the
-+tcp port of the target server via new mount option "-port="
-+
-+Version 0.68
-+------------
-+Fix search handle leak on rewind. Fix setuid and gid so that they are
-+reflected in the local inode immediately. Cleanup of whitespace
-+to make 2.4 and 2.5 versions more consistent.
-+
-+
-+Version 0.67
-+------------
-+Fix signal sending so that captive thread (cifsd) exits on umount
-+(which was causing the warning in kmem_cache_free of the request buffers
-+at rmmod time). This had broken as a sideeffect of the recent global
-+kernel change to daemonize. Fix memory leak in readdir code which
-+showed up in "ls -R" (and applications that did search rewinding).
-+
-+Version 0.66
-+------------
-+Reconnect tids and fids after session reconnection (still do not
-+reconnect byte range locks though). Fix problem caching
-+lookup information for directory inodes, improving performance,
-+especially in deep directory trees. Fix various build warnings.
-+
-+Version 0.65
-+------------
-+Finish fixes to commit write for caching/readahead consistency. fsx
-+now works to Samba servers. Fix oops caused when readahead
-+was interrupted by a signal.
-+
-+Version 0.64
-+------------
-+Fix data corruption (in partial page after truncate) that caused fsx to
-+fail to Windows servers. Cleaned up some extraneous error logging in
-+common error paths. Add generic sendfile support.
-+
-+Version 0.63
-+------------
-+Fix memory leak in AllocMidQEntry.
-+Finish reconnection logic, so connection with server can be dropped
-+(or server rebooted) and the cifs client will reconnect.
-+
-+Version 0.62
-+------------
-+Fix temporary socket leak when bad userid or password specified
-+(or other SMBSessSetup failure). Increase maximum buffer size to slightly
-+over 16K to allow negotiation of up to Samba and Windows server default read
-+sizes. Add support for readpages
-+
-+Version 0.61
-+------------
-+Fix oops when username not passed in on mount. Extensive fixes and improvements
-+to error logging (strip redundant newlines, change debug macros to ensure newline
-+passed in and to be more consistent). Fix writepage wrong file handle problem,
-+a readonly file handle could be incorrectly used to attempt to write out
-+file updates through the page cache to multiply open files. This could cause
-+the iozone benchmark to fail on the fwrite test. Fix bug mounting two different
-+shares to the same Windows server when using different usernames
-+(doing this to Samba servers worked but Windows was rejecting it) - now it is
-+possible to use different userids when connecting to the same server from a
-+Linux client. Fix oops when treeDisconnect called during unmount on
-+previously freed socket.
-+
-+Version 0.60
-+------------
-+Fix oops in readpages caused by not setting address space operations in inode in
-+rare code path.
-+
-+Version 0.59
-+------------
-+Includes support for deleting of open files and renaming over existing files (per POSIX
-+requirement). Add readlink support for Windows junction points (directory symlinks).
-+
-+Version 0.58
-+------------
-+Changed read and write to go through pagecache. Added additional address space operations.
-+Memory mapped operations now working.
-+
-+Version 0.57
-+------------
-+Added writepage code for additional memory mapping support. Fixed leak in xids causing
-+the simultaneous operations counter (/proc/fs/cifs/SimultaneousOps) to increase on
-+every stat call. Additional formatting cleanup.
-+
-+Version 0.56
-+------------
-+Fix bigendian bug in order of time conversion. Merge 2.5 to 2.4 version. Formatting cleanup.
-+
-+Version 0.55
-+------------
-+Fixes from Zwane Mwaikambo for adding missing return code checking in a few places.
-+Also included a modified version of his fix to protect global list manipulation of
-+the smb session and tree connection and mid related global variables.
-+
-+Version 0.54
-+------------
-+Fix problem with captive thread hanging around at unmount time. Adjust to 2.5.42-pre
-+changes to superblock layout. Remove wasteful allocation of smb buffers (now the send
-+buffer is reused for responses). Add more oplock handling. Additional minor cleanup.
-+
-+Version 0.53
-+------------
-+More stylistic updates to better match kernel style. Add additional statistics
-+for filesystem which can be viewed via /proc/fs/cifs. Add more pieces of NTLMv2
-+and CIFS Packet Signing enablement.
-+
-+Version 0.52
-+------------
-+Replace call to sleep_on with safer wait_on_event.
-+Make stylistic changes to better match kernel style recommendations.
-+Remove most typedef usage (except for the PDUs themselves).
-+
-+Version 0.51
-+------------
-+Update mount so the -unc mount option is no longer required (the ip address can be specified
-+in a UNC style device name. Implementation of readpage/writepage started.
-+
-+Version 0.50
-+------------
-+Fix intermittent problem with incorrect smb header checking on badly
-+fragmented tcp responses
-+
-+Version 0.49
-+------------
-+Fixes to setting of allocation size and file size.
-+
-+Version 0.48
-+------------
-+Various 2.5.38 fixes. Now works on 2.5.38
-+
-+Version 0.47
-+------------
-+Prepare for 2.5 kernel merge. Remove ifdefs.
-+
-+Version 0.46
-+------------
-+Socket buffer management fixes. Fix dual free.
-+
-+Version 0.45
-+------------
-+Various big endian fixes for hardlinks and symlinks and also for dfs.
-+
-+Version 0.44
-+------------
-+Various big endian fixes for servers with Unix extensions such as Samba
-+
-+Version 0.43
-+------------
-+Various FindNext fixes for incorrect filenames on large directory searches on big endian
-+clients. basic posix file i/o tests now work on big endian machines, not just le
-+
-+Version 0.42
-+------------
-+SessionSetup and NegotiateProtocol now work from Big Endian machines.
-+Various Big Endian fixes found during testing on the Linux on 390. Various fixes for compatibility with older
-+versions of 2.4 kernel (now builds and works again on kernels at least as early as 2.4.7).
-+
-+Version 0.41
-+------------
-+Various minor fixes for Connectathon Posix "basic" file i/o test suite. Directory caching fixed so hardlinked
-+files now return the correct rumber of links on fstat as they are repeatedly linked and unlinked.
-+
-+Version 0.40
-+------------
-+Implemented "Raw" (i.e. not encapsulated in SPNEGO) NTLMSSP (i.e. the Security Provider Interface used to negotiate
-+session advanced session authentication). Raw NTLMSSP is preferred by Windows 2000 Professional and Windows XP.
-+Began implementing support for SPNEGO encapsulation of NTLMSSP based session authentication blobs
-+(which is the mechanism preferred by Windows 2000 server in the absence of Kerberos).
-+
-+Version 0.38
-+------------
-+Introduced optional mount helper utility mount.cifs and made coreq changes to cifs vfs to enable
-+it. Fixed a few bugs in the DFS code (e.g. bcc two bytes too short and incorrect uid in PDU).
-+
-+Version 0.37
-+------------
-+Rewrote much of connection and mount/unmount logic to handle bugs with
-+multiple uses to same share, multiple users to same server etc.
-+
-+Version 0.36
-+------------
-+Fixed major problem with dentry corruption (missing call to dput)
-+
-+Version 0.35
-+------------
-+Rewrite of readdir code to fix bug. Various fixes for bigendian machines.
-+Begin adding oplock support. Multiusermount and oplockEnabled flags added to /proc/fs/cifs
-+although corresponding function not fully implemented in the vfs yet
-+
-+Version 0.34
-+------------
-+Fixed dentry caching bug, misc. cleanup
-+
-+Version 0.33
-+------------
-+Fixed 2.5 support to handle build and configure changes as well as misc. 2.5 changes. Now can build
-+on current 2.5 beta version (2.5.24) of the Linux kernel as well as on 2.4 Linux kernels.
-+Support for STATUS codes (newer 32 bit NT error codes) added. DFS support begun to be added.
-+
-+Version 0.32
-+------------
-+Unix extensions (symlink, readlink, hardlink, chmod and some chgrp and chown) implemented
-+and tested against Samba 2.2.5
-+
-+
-+Version 0.31
-+------------
-+1) Fixed lockrange to be correct (it was one byte too short)
-+
-+2) Fixed GETLK (i.e. the fcntl call to test a range of bytes in a file to see if locked) to correctly
-+show range as locked when there is a conflict with an existing lock.
-+
-+3) default file perms are now 2767 (indicating support for mandatory locks) instead of 777 for directories
-+in most cases. Eventually will offer optional ability to query server for the correct perms.
-+
-+3) Fixed eventual trap when mounting twice to different shares on the same server when the first succeeded
-+but the second one was invalid and failed (the second one was incorrectly disconnecting the tcp and smb
-+session)
-+
-+4) Fixed error logging of valid mount options
-+
-+5) Removed logging of password field.
-+
-+6) Moved negotiate, treeDisconnect and uloggoffX (only tConx and SessSetup remain in connect.c) to cifssmb.c
-+and cleaned them up and made them more consistent with other cifs functions.
-+
-+7) Server support for Unix extensions is now fully detected and FindFirst is implemented both ways
-+(with or without Unix exentions) but FindNext and QueryPathInfo with the Unix extensions are not completed,
-+nor is the symlink support using the Unix extensions
-+
-+8) Started adding the readlink and follow_link code
-+
-+Version 0.3
-+-----------
-+Initial drop
-+
-diff -urN linux-2.4.29.old/fs/cifs/cifs_debug.c linux-2.4.29/fs/cifs/cifs_debug.c
---- linux-2.4.29.old/fs/cifs/cifs_debug.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifs_debug.c 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,797 @@
-+/*
-+ * fs/cifs_debug.c
-+ *
-+ * Copyright (C) International Business Machines Corp., 2000,2003
-+ *
-+ * Modified by Steve French (sfrench@us.ibm.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * 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 <linux/fs.h>
-+#include <linux/string.h>
-+#include <linux/ctype.h>
-+#include <linux/module.h>
-+#include <linux/proc_fs.h>
-+#include <asm/uaccess.h>
-+#include "cifspdu.h"
-+#include "cifsglob.h"
-+#include "cifsproto.h"
-+#include "cifs_debug.h"
-+
-+void
-+cifs_dump_mem(char *label, void *data, int length)
-+{
-+ int i, j;
-+ int *intptr = data;
-+ char *charptr = data;
-+ char buf[10], line[80];
-+
-+ printk(KERN_DEBUG "%s: dump of %d bytes of data at 0x%p\n\n",
-+ label, length, data);
-+ for (i = 0; i < length; i += 16) {
-+ line[0] = 0;
-+ for (j = 0; (j < 4) && (i + j * 4 < length); j++) {
-+ sprintf(buf, " %08x", intptr[i / 4 + j]);
-+ strcat(line, buf);
-+ }
-+ buf[0] = ' ';
-+ buf[2] = 0;
-+ for (j = 0; (j < 16) && (i + j < length); j++) {
-+ buf[1] = isprint(charptr[i + j]) ? charptr[i + j] : '.';
-+ strcat(line, buf);
-+ }
-+ printk(KERN_DEBUG "%s\n", line);
-+ }
-+}
-+
-+#ifdef CONFIG_PROC_FS
-+int
-+cifs_debug_data_read(char *buf, char **beginBuffer, off_t offset,
-+ int count, int *eof, void *data)
-+{
-+ struct list_head *tmp;
-+ struct list_head *tmp1;
-+ struct mid_q_entry * mid_entry;
-+ struct cifsSesInfo *ses;
-+ struct cifsTconInfo *tcon;
-+ int i;
-+ int length = 0;
-+ char * original_buf = buf;
-+
-+ *beginBuffer = buf + offset;
-+
-+
-+ length =
-+ sprintf(buf,
-+ "Display Internal CIFS Data Structures for Debugging\n"
-+ "---------------------------------------------------\n");
-+ buf += length;
-+
-+ length = sprintf(buf, "Servers:\n");
-+ buf += length;
-+
-+ i = 0;
-+ read_lock(&GlobalSMBSeslock);
-+ list_for_each(tmp, &GlobalSMBSessionList) {
-+ i++;
-+ ses = list_entry(tmp, struct cifsSesInfo, cifsSessionList);
-+ length =
-+ sprintf(buf,
-+ "\n%d) Name: %s Domain: %s Mounts: %d ServerOS: %s \n\tServerNOS: %s\tCapabilities: 0x%x\n\tSMB session status: %d\tTCP status: %d",
-+ i, ses->serverName, ses->serverDomain, atomic_read(&ses->inUse),
-+ ses->serverOS, ses->serverNOS, ses->capabilities,ses->status,ses->server->tcpStatus);
-+ buf += length;
-+ if(ses->server) {
-+ buf += sprintf(buf, "\n\tLocal Users To Server: %d SecMode: 0x%x Req Active: %d",
-+ atomic_read(&ses->server->socketUseCount),
-+ ses->server->secMode,
-+ atomic_read(&ses->server->inFlight));
-+
-+ length = sprintf(buf, "\nMIDs: \n");
-+ buf += length;
-+
-+ spin_lock(&GlobalMid_Lock);
-+ list_for_each(tmp1, &ses->server->pending_mid_q) {
-+ mid_entry = list_entry(tmp1, struct
-+ mid_q_entry,
-+ qhead);
-+ if(mid_entry) {
-+ length = sprintf(buf,"State: %d com: %d pid: %d tsk: %p mid %d\n",mid_entry->midState,mid_entry->command,mid_entry->pid,mid_entry->tsk,mid_entry->mid);
-+ buf += length;
-+ }
-+ }
-+ spin_unlock(&GlobalMid_Lock);
-+ }
-+
-+ }
-+ read_unlock(&GlobalSMBSeslock);
-+ sprintf(buf, "\n");
-+ buf++;
-+
-+ length = sprintf(buf, "\nShares:\n");
-+ buf += length;
-+
-+ i = 0;
-+ read_lock(&GlobalSMBSeslock);
-+ list_for_each(tmp, &GlobalTreeConnectionList) {
-+ i++;
-+ tcon = list_entry(tmp, struct cifsTconInfo, cifsConnectionList);
-+ length =
-+ sprintf(buf,
-+ "\n%d) %s Uses: %d Type: %s Characteristics: 0x%x Attributes: 0x%x\nPathComponentMax: %d Status: %d",
-+ i, tcon->treeName,
-+ atomic_read(&tcon->useCount),
-+ tcon->nativeFileSystem,
-+ tcon->fsDevInfo.DeviceCharacteristics,
-+ tcon->fsAttrInfo.Attributes,
-+ tcon->fsAttrInfo.MaxPathNameComponentLength,tcon->tidStatus);
-+ buf += length;
-+ if (tcon->fsDevInfo.DeviceType == FILE_DEVICE_DISK)
-+ length = sprintf(buf, " type: DISK ");
-+ else if (tcon->fsDevInfo.DeviceType == FILE_DEVICE_CD_ROM)
-+ length = sprintf(buf, " type: CDROM ");
-+ else
-+ length =
-+ sprintf(buf, " type: %d ",
-+ tcon->fsDevInfo.DeviceType);
-+ buf += length;
-+ if(tcon->tidStatus == CifsNeedReconnect) {
-+ buf += sprintf(buf, "\tDISCONNECTED ");
-+ length += 14;
-+ }
-+ }
-+ read_unlock(&GlobalSMBSeslock);
-+
-+ length = sprintf(buf, "\n");
-+ buf += length;
-+
-+ /* BB add code to dump additional info such as TCP session info now */
-+ /* Now calculate total size of returned data */
-+ length = buf - original_buf;
-+
-+ if(offset + count >= length)
-+ *eof = 1;
-+ if(length < offset) {
-+ *eof = 1;
-+ return 0;
-+ } else {
-+ length = length - offset;
-+ }
-+ if (length > count)
-+ length = count;
-+
-+ return length;
-+}
-+
-+#ifdef CONFIG_CIFS_STATS
-+int
-+cifs_stats_read(char *buf, char **beginBuffer, off_t offset,
-+ int count, int *eof, void *data)
-+{
-+ int item_length,i,length;
-+ struct list_head *tmp;
-+ struct cifsTconInfo *tcon;
-+
-+ *beginBuffer = buf + offset;
-+
-+ length = sprintf(buf,
-+ "Resources in use\nCIFS Session: %d\n",
-+ sesInfoAllocCount.counter);
-+ buf += length;
-+ item_length =
-+ sprintf(buf,"Share (unique mount targets): %d\n",
-+ tconInfoAllocCount.counter);
-+ length += item_length;
-+ buf += item_length;
-+ item_length =
-+ sprintf(buf,"SMB Request/Response Buffer: %d\n",
-+ bufAllocCount.counter);
-+ length += item_length;
-+ buf += item_length;
-+ item_length =
-+ sprintf(buf,"Operations (MIDs): %d\n",
-+ midCount.counter);
-+ length += item_length;
-+ buf += item_length;
-+ item_length = sprintf(buf,
-+ "\n%d session %d share reconnects\n",
-+ tcpSesReconnectCount.counter,tconInfoReconnectCount.counter);
-+ length += item_length;
-+ buf += item_length;
-+
-+ item_length = sprintf(buf,
-+ "Total vfs operations: %d maximum at one time: %d\n",
-+ GlobalCurrentXid,GlobalMaxActiveXid);
-+ length += item_length;
-+ buf += item_length;
-+
-+ i = 0;
-+ read_lock(&GlobalSMBSeslock);
-+ list_for_each(tmp, &GlobalTreeConnectionList) {
-+ i++;
-+ tcon = list_entry(tmp, struct cifsTconInfo, cifsConnectionList);
-+ item_length = sprintf(buf,"\n%d) %s",i, tcon->treeName);
-+ buf += item_length;
-+ length += item_length;
-+ if(tcon->tidStatus == CifsNeedReconnect) {
-+ buf += sprintf(buf, "\tDISCONNECTED ");
-+ length += 14;
-+ }
-+ item_length = sprintf(buf,"\nSMBs: %d Oplock Breaks: %d",
-+ atomic_read(&tcon->num_smbs_sent),
-+ atomic_read(&tcon->num_oplock_brks));
-+ buf += item_length;
-+ length += item_length;
-+ item_length = sprintf(buf,"\nReads: %d Bytes %lld",
-+ atomic_read(&tcon->num_reads),
-+ (long long)(tcon->bytes_read));
-+ buf += item_length;
-+ length += item_length;
-+ item_length = sprintf(buf,"\nWrites: %d Bytes: %lld",
-+ atomic_read(&tcon->num_writes),
-+ (long long)(tcon->bytes_written));
-+ buf += item_length;
-+ length += item_length;
-+ item_length = sprintf(buf,
-+ "\nOpens: %d Deletes: %d\nMkdirs: %d Rmdirs: %d",
-+ atomic_read(&tcon->num_opens),
-+ atomic_read(&tcon->num_deletes),
-+ atomic_read(&tcon->num_mkdirs),
-+ atomic_read(&tcon->num_rmdirs));
-+ buf += item_length;
-+ length += item_length;
-+ item_length = sprintf(buf,
-+ "\nRenames: %d T2 Renames %d",
-+ atomic_read(&tcon->num_renames),
-+ atomic_read(&tcon->num_t2renames));
-+ buf += item_length;
-+ length += item_length;
-+ }
-+ read_unlock(&GlobalSMBSeslock);
-+
-+ buf += sprintf(buf,"\n");
-+ length++;
-+
-+ if(offset + count >= length)
-+ *eof = 1;
-+ if(length < offset) {
-+ *eof = 1;
-+ return 0;
-+ } else {
-+ length = length - offset;
-+ }
-+ if (length > count)
-+ length = count;
-+
-+ return length;
-+}
-+#endif
-+
-+struct proc_dir_entry *proc_fs_cifs;
-+read_proc_t cifs_txanchor_read;
-+static read_proc_t cifsFYI_read;
-+static write_proc_t cifsFYI_write;
-+static read_proc_t oplockEnabled_read;
-+static write_proc_t oplockEnabled_write;
-+static read_proc_t lookupFlag_read;
-+static write_proc_t lookupFlag_write;
-+static read_proc_t traceSMB_read;
-+static write_proc_t traceSMB_write;
-+static read_proc_t multiuser_mount_read;
-+static write_proc_t multiuser_mount_write;
-+static read_proc_t extended_security_read;
-+static write_proc_t extended_security_write;
-+static read_proc_t ntlmv2_enabled_read;
-+static write_proc_t ntlmv2_enabled_write;
-+static read_proc_t packet_signing_enabled_read;
-+static write_proc_t packet_signing_enabled_write;
-+static read_proc_t quotaEnabled_read;
-+static write_proc_t quotaEnabled_write;
-+static read_proc_t linuxExtensionsEnabled_read;
-+static write_proc_t linuxExtensionsEnabled_write;
-+
-+void
-+cifs_proc_init(void)
-+{
-+ struct proc_dir_entry *pde;
-+
-+ proc_fs_cifs = proc_mkdir("cifs", proc_root_fs);
-+ if (proc_fs_cifs == NULL)
-+ return;
-+
-+ proc_fs_cifs->owner = THIS_MODULE;
-+ create_proc_read_entry("DebugData", 0, proc_fs_cifs,
-+ cifs_debug_data_read, NULL);
-+
-+#ifdef CONFIG_CIFS_STATS
-+ create_proc_read_entry("Stats", 0, proc_fs_cifs,
-+ cifs_stats_read, NULL);
-+#endif
-+ pde = create_proc_read_entry("cifsFYI", 0, proc_fs_cifs,
-+ cifsFYI_read, NULL);
-+ if (pde)
-+ pde->write_proc = cifsFYI_write;
-+
-+ pde =
-+ create_proc_read_entry("traceSMB", 0, proc_fs_cifs,
-+ traceSMB_read, NULL);
-+ if (pde)
-+ pde->write_proc = traceSMB_write;
-+
-+ pde = create_proc_read_entry("OplockEnabled", 0, proc_fs_cifs,
-+ oplockEnabled_read, NULL);
-+ if (pde)
-+ pde->write_proc = oplockEnabled_write;
-+
-+ pde = create_proc_read_entry("QuotaEnabled", 0, proc_fs_cifs,
-+ quotaEnabled_read, NULL);
-+ if (pde)
-+ pde->write_proc = quotaEnabled_write;
-+
-+ pde = create_proc_read_entry("LinuxExtensionsEnabled", 0, proc_fs_cifs,
-+ linuxExtensionsEnabled_read, NULL);
-+ if (pde)
-+ pde->write_proc = linuxExtensionsEnabled_write;
-+
-+ pde =
-+ create_proc_read_entry("MultiuserMount", 0, proc_fs_cifs,
-+ multiuser_mount_read, NULL);
-+ if (pde)
-+ pde->write_proc = multiuser_mount_write;
-+
-+ pde =
-+ create_proc_read_entry("ExtendedSecurity", 0, proc_fs_cifs,
-+ extended_security_read, NULL);
-+ if (pde)
-+ pde->write_proc = extended_security_write;
-+
-+ pde =
-+ create_proc_read_entry("LookupCacheEnabled", 0, proc_fs_cifs,
-+ lookupFlag_read, NULL);
-+ if (pde)
-+ pde->write_proc = lookupFlag_write;
-+
-+ pde =
-+ create_proc_read_entry("NTLMV2Enabled", 0, proc_fs_cifs,
-+ ntlmv2_enabled_read, NULL);
-+ if (pde)
-+ pde->write_proc = ntlmv2_enabled_write;
-+
-+ pde =
-+ create_proc_read_entry("PacketSigningEnabled", 0, proc_fs_cifs,
-+ packet_signing_enabled_read, NULL);
-+ if (pde)
-+ pde->write_proc = packet_signing_enabled_write;
-+}
-+
-+void
-+cifs_proc_clean(void)
-+{
-+ if (proc_fs_cifs == NULL)
-+ return;
-+
-+ remove_proc_entry("DebugData", proc_fs_cifs);
-+ remove_proc_entry("cifsFYI", proc_fs_cifs);
-+ remove_proc_entry("traceSMB", proc_fs_cifs);
-+#ifdef CONFIG_CIFS_STATS
-+ remove_proc_entry("Stats", proc_fs_cifs);
-+#endif
-+ remove_proc_entry("MultiuserMount", proc_fs_cifs);
-+ remove_proc_entry("OplockEnabled", proc_fs_cifs);
-+ remove_proc_entry("NTLMV2Enabled",proc_fs_cifs);
-+ remove_proc_entry("ExtendedSecurity",proc_fs_cifs);
-+ remove_proc_entry("PacketSigningEnabled",proc_fs_cifs);
-+ remove_proc_entry("LinuxExtensionsEnabled",proc_fs_cifs);
-+ remove_proc_entry("QuotaEnabled",proc_fs_cifs);
-+ remove_proc_entry("LookupCacheEnabled",proc_fs_cifs);
-+ remove_proc_entry("cifs", proc_root_fs);
-+}
-+
-+static int
-+cifsFYI_read(char *page, char **start, off_t off, int count,
-+ int *eof, void *data)
-+{
-+ int len;
-+
-+ len = sprintf(page, "%d\n", cifsFYI);
-+
-+ len -= off;
-+ *start = page + off;
-+
-+ if (len > count)
-+ len = count;
-+ else
-+ *eof = 1;
-+
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+static int
-+cifsFYI_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ char c;
-+ int rc;
-+
-+ rc = get_user(c, buffer);
-+ if (rc)
-+ return rc;
-+ if (c == '0' || c == 'n' || c == 'N')
-+ cifsFYI = 0;
-+ else if (c == '1' || c == 'y' || c == 'Y')
-+ cifsFYI = 1;
-+
-+ return count;
-+}
-+
-+static int
-+oplockEnabled_read(char *page, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ int len;
-+
-+ len = sprintf(page, "%d\n", oplockEnabled);
-+
-+ len -= off;
-+ *start = page + off;
-+
-+ if (len > count)
-+ len = count;
-+ else
-+ *eof = 1;
-+
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+static int
-+oplockEnabled_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ char c;
-+ int rc;
-+
-+ rc = get_user(c, buffer);
-+ if (rc)
-+ return rc;
-+ if (c == '0' || c == 'n' || c == 'N')
-+ oplockEnabled = 0;
-+ else if (c == '1' || c == 'y' || c == 'Y')
-+ oplockEnabled = 1;
-+
-+ return count;
-+}
-+
-+static int
-+quotaEnabled_read(char *page, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ int len;
-+
-+ len = sprintf(page, "%d\n", quotaEnabled);
-+/* could also check if quotas are enabled in kernel
-+ as a whole first */
-+ len -= off;
-+ *start = page + off;
-+
-+ if (len > count)
-+ len = count;
-+ else
-+ *eof = 1;
-+
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+static int
-+quotaEnabled_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ char c;
-+ int rc;
-+
-+ rc = get_user(c, buffer);
-+ if (rc)
-+ return rc;
-+ if (c == '0' || c == 'n' || c == 'N')
-+ quotaEnabled = 0;
-+ else if (c == '1' || c == 'y' || c == 'Y')
-+ quotaEnabled = 1;
-+
-+ return count;
-+}
-+
-+static int
-+linuxExtensionsEnabled_read(char *page, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ int len;
-+
-+ len = sprintf(page, "%d\n", linuxExtEnabled);
-+/* could also check if quotas are enabled in kernel
-+ as a whole first */
-+ len -= off;
-+ *start = page + off;
-+
-+ if (len > count)
-+ len = count;
-+ else
-+ *eof = 1;
-+
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+static int
-+linuxExtensionsEnabled_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ char c;
-+ int rc;
-+
-+ rc = get_user(c, buffer);
-+ if (rc)
-+ return rc;
-+ if (c == '0' || c == 'n' || c == 'N')
-+ linuxExtEnabled = 0;
-+ else if (c == '1' || c == 'y' || c == 'Y')
-+ linuxExtEnabled = 1;
-+
-+ return count;
-+}
-+
-+
-+static int
-+lookupFlag_read(char *page, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ int len;
-+
-+ len = sprintf(page, "%d\n", lookupCacheEnabled);
-+
-+ len -= off;
-+ *start = page + off;
-+
-+ if (len > count)
-+ len = count;
-+ else
-+ *eof = 1;
-+
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+static int
-+lookupFlag_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ char c;
-+ int rc;
-+
-+ rc = get_user(c, buffer);
-+ if (rc)
-+ return rc;
-+ if (c == '0' || c == 'n' || c == 'N')
-+ lookupCacheEnabled = 0;
-+ else if (c == '1' || c == 'y' || c == 'Y')
-+ lookupCacheEnabled = 1;
-+
-+ return count;
-+}
-+static int
-+traceSMB_read(char *page, char **start, off_t off, int count,
-+ int *eof, void *data)
-+{
-+ int len;
-+
-+ len = sprintf(page, "%d\n", traceSMB);
-+
-+ len -= off;
-+ *start = page + off;
-+
-+ if (len > count)
-+ len = count;
-+ else
-+ *eof = 1;
-+
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+static int
-+traceSMB_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ char c;
-+ int rc;
-+
-+ rc = get_user(c, buffer);
-+ if (rc)
-+ return rc;
-+ if (c == '0' || c == 'n' || c == 'N')
-+ traceSMB = 0;
-+ else if (c == '1' || c == 'y' || c == 'Y')
-+ traceSMB = 1;
-+
-+ return count;
-+}
-+
-+static int
-+multiuser_mount_read(char *page, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ int len;
-+
-+ len = sprintf(page, "%d\n", multiuser_mount);
-+
-+ len -= off;
-+ *start = page + off;
-+
-+ if (len > count)
-+ len = count;
-+ else
-+ *eof = 1;
-+
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+static int
-+multiuser_mount_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ char c;
-+ int rc;
-+
-+ rc = get_user(c, buffer);
-+ if (rc)
-+ return rc;
-+ if (c == '0' || c == 'n' || c == 'N')
-+ multiuser_mount = 0;
-+ else if (c == '1' || c == 'y' || c == 'Y')
-+ multiuser_mount = 1;
-+
-+ return count;
-+}
-+
-+static int
-+extended_security_read(char *page, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ int len;
-+
-+ len = sprintf(page, "%d\n", extended_security);
-+
-+ len -= off;
-+ *start = page + off;
-+
-+ if (len > count)
-+ len = count;
-+ else
-+ *eof = 1;
-+
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+static int
-+extended_security_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ char c;
-+ int rc;
-+
-+ rc = get_user(c, buffer);
-+ if (rc)
-+ return rc;
-+ if (c == '0' || c == 'n' || c == 'N')
-+ extended_security = 0;
-+ else if (c == '1' || c == 'y' || c == 'Y')
-+ extended_security = 1;
-+
-+ return count;
-+}
-+
-+static int
-+ntlmv2_enabled_read(char *page, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ int len;
-+
-+ len = sprintf(page, "%d\n", ntlmv2_support);
-+
-+ len -= off;
-+ *start = page + off;
-+
-+ if (len > count)
-+ len = count;
-+ else
-+ *eof = 1;
-+
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+static int
-+ntlmv2_enabled_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ char c;
-+ int rc;
-+
-+ rc = get_user(c, buffer);
-+ if (rc)
-+ return rc;
-+ if (c == '0' || c == 'n' || c == 'N')
-+ ntlmv2_support = 0;
-+ else if (c == '1' || c == 'y' || c == 'Y')
-+ ntlmv2_support = 1;
-+
-+ return count;
-+}
-+
-+static int
-+packet_signing_enabled_read(char *page, char **start, off_t off,
-+ int count, int *eof, void *data)
-+{
-+ int len;
-+
-+ len = sprintf(page, "%d\n", sign_CIFS_PDUs);
-+
-+ len -= off;
-+ *start = page + off;
-+
-+ if (len > count)
-+ len = count;
-+ else
-+ *eof = 1;
-+
-+ if (len < 0)
-+ len = 0;
-+
-+ return len;
-+}
-+static int
-+packet_signing_enabled_write(struct file *file, const char *buffer,
-+ unsigned long count, void *data)
-+{
-+ char c;
-+ int rc;
-+
-+ rc = get_user(c, buffer);
-+ if (rc)
-+ return rc;
-+ if (c == '0' || c == 'n' || c == 'N')
-+ sign_CIFS_PDUs = 0;
-+ else if (c == '1' || c == 'y' || c == 'Y')
-+ sign_CIFS_PDUs = 1;
-+ else if (c == '2')
-+ sign_CIFS_PDUs = 2;
-+
-+ return count;
-+}
-+
-+
-+#endif
-diff -urN linux-2.4.29.old/fs/cifs/cifs_debug.h linux-2.4.29/fs/cifs/cifs_debug.h
---- linux-2.4.29.old/fs/cifs/cifs_debug.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifs_debug.h 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,66 @@
-+/*
-+ *
-+ * Copyright (c) International Business Machines Corp., 2000,2002
-+ * Modified by Steve French (sfrench@us.ibm.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * 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 CIFS_DEBUG /* BB temporary */
-+
-+#ifndef _H_CIFS_DEBUG
-+#define _H_CIFS_DEBUG
-+
-+void cifs_dump_mem(char *label, void *data, int length);
-+extern int traceSMB; /* flag which enables the function below */
-+void dump_smb(struct smb_hdr *, int);
-+
-+/*
-+ * debug ON
-+ * --------
-+ */
-+#ifdef CIFS_DEBUG
-+
-+
-+/* information message: e.g., configuration, major event */
-+extern int cifsFYI;
-+#define cifsfyi(format,arg...) if (cifsFYI) printk(KERN_DEBUG " " __FILE__ ": " format "\n" "" , ## arg)
-+
-+#define cFYI(button,prspec) if (button) cifsfyi prspec
-+
-+#define cifswarn(format, arg...) printk(KERN_WARNING ": " format "\n" , ## arg)
-+
-+/* debug event message: */
-+extern int cifsERROR;
-+
-+#define cEVENT(format,arg...) if (cifsERROR) printk(KERN_EVENT __FILE__ ": " format "\n" , ## arg)
-+
-+/* error event message: e.g., i/o error */
-+#define cifserror(format,arg...) if (cifsERROR) printk(KERN_ERR " CIFS VFS: " format "\n" "" , ## arg)
-+
-+#define cERROR(button, prspec) if (button) cifserror prspec
-+
-+/*
-+ * debug OFF
-+ * ---------
-+ */
-+#else /* _CIFS_DEBUG */
-+#define cERROR(button,prspec)
-+#define cEVENT(format,arg...)
-+#define cFYI(button, prspec)
-+#define cifserror(format,arg...)
-+#endif /* _CIFS_DEBUG */
-+
-+#endif /* _H_CIFS_DEBUG */
-diff -urN linux-2.4.29.old/fs/cifs/cifsencrypt.c linux-2.4.29/fs/cifs/cifsencrypt.c
---- linux-2.4.29.old/fs/cifs/cifsencrypt.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifsencrypt.c 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,204 @@
-+/*
-+ * fs/cifs/cifsencrypt.c
-+ *
-+ * Copyright (C) International Business Machines Corp., 2003
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * 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.1 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 <linux/fs.h>
-+#include "cifspdu.h"
-+#include "cifsglob.h"
-+#include "cifs_debug.h"
-+#include "md5.h"
-+#include "cifs_unicode.h"
-+
-+/* Calculate and return the CIFS signature based on the mac key and the smb pdu */
-+/* the 16 byte signature must be allocated by the caller */
-+/* Note we only use the 1st eight bytes */
-+/* Note that the smb header signature field on input contains the
-+ sequence number before this function is called */
-+
-+extern void mdfour(unsigned char *out, unsigned char *in, int n);
-+extern void E_md4hash(const unsigned char *passwd, unsigned char *p16);
-+
-+static int cifs_calculate_signature(const struct smb_hdr * cifs_pdu, const char * key, char * signature)
-+{
-+ struct MD5Context context;
-+
-+ if((cifs_pdu == NULL) || (signature == NULL))
-+ return -EINVAL;
-+
-+ MD5Init(&context);
-+ MD5Update(&context,key,CIFS_SESSION_KEY_SIZE+16);
-+ MD5Update(&context,cifs_pdu->Protocol,cifs_pdu->smb_buf_length);
-+ MD5Final(signature,&context);
-+ return 0;
-+}
-+
-+int cifs_sign_smb(struct smb_hdr * cifs_pdu, struct cifsSesInfo * ses,
-+ __u32 * pexpected_response_sequence_number)
-+{
-+ int rc = 0;
-+ char smb_signature[20];
-+
-+ /* BB remember to initialize sequence number elsewhere and initialize mac_signing key elsewhere BB */
-+ /* BB remember to add code to save expected sequence number in midQ entry BB */
-+
-+ if((cifs_pdu == NULL) || (ses == NULL))
-+ return -EINVAL;
-+
-+ if((le32_to_cpu(cifs_pdu->Flags2) & SMBFLG2_SECURITY_SIGNATURE) == 0)
-+ return rc;
-+
-+ spin_lock(&GlobalMid_Lock);
-+ cifs_pdu->Signature.Sequence.SequenceNumber = cpu_to_le32(ses->sequence_number);
-+ cifs_pdu->Signature.Sequence.Reserved = 0;
-+
-+ *pexpected_response_sequence_number = ses->sequence_number++;
-+ ses->sequence_number++;
-+ spin_unlock(&GlobalMid_Lock);
-+
-+ rc = cifs_calculate_signature(cifs_pdu, ses->mac_signing_key,smb_signature);
-+ if(rc)
-+ memset(cifs_pdu->Signature.SecuritySignature, 0, 8);
-+ else
-+ memcpy(cifs_pdu->Signature.SecuritySignature, smb_signature, 8);
-+
-+ return rc;
-+}
-+
-+int cifs_verify_signature(struct smb_hdr * cifs_pdu, const char * mac_key,
-+ __u32 expected_sequence_number)
-+{
-+ unsigned int rc;
-+ char server_response_sig[8];
-+ char what_we_think_sig_should_be[20];
-+
-+ if((cifs_pdu == NULL) || (mac_key == NULL))
-+ return -EINVAL;
-+
-+ if (cifs_pdu->Command == SMB_COM_NEGOTIATE)
-+ return 0;
-+
-+ if (cifs_pdu->Command == SMB_COM_LOCKING_ANDX) {
-+ struct smb_com_lock_req * pSMB = (struct smb_com_lock_req *)cifs_pdu;
-+ if(pSMB->LockType & LOCKING_ANDX_OPLOCK_RELEASE)
-+ return 0;
-+ }
-+
-+ /* BB what if signatures are supposed to be on for session but server does not
-+ send one? BB */
-+
-+ /* Do not need to verify session setups with signature "BSRSPYL " */
-+ if(memcmp(cifs_pdu->Signature.SecuritySignature,"BSRSPYL ",8)==0)
-+ cFYI(1,("dummy signature received for smb command 0x%x",cifs_pdu->Command));
-+
-+ expected_sequence_number = cpu_to_le32(expected_sequence_number);
-+
-+ /* save off the origiginal signature so we can modify the smb and check
-+ its signature against what the server sent */
-+ memcpy(server_response_sig,cifs_pdu->Signature.SecuritySignature,8);
-+
-+ cifs_pdu->Signature.Sequence.SequenceNumber = expected_sequence_number;
-+ cifs_pdu->Signature.Sequence.Reserved = 0;
-+
-+ rc = cifs_calculate_signature(cifs_pdu, mac_key,
-+ what_we_think_sig_should_be);
-+
-+ if(rc)
-+ return rc;
-+
-+
-+/* cifs_dump_mem("what we think it should be: ",what_we_think_sig_should_be,16); */
-+
-+ if(memcmp(server_response_sig, what_we_think_sig_should_be, 8))
-+ return -EACCES;
-+ else
-+ return 0;
-+
-+}
-+
-+/* We fill in key by putting in 40 byte array which was allocated by caller */
-+int cifs_calculate_mac_key(char * key, const char * rn, const char * password)
-+{
-+ char temp_key[16];
-+ if ((key == NULL) || (rn == NULL))
-+ return -EINVAL;
-+
-+ E_md4hash(password, temp_key);
-+ mdfour(key,temp_key,16);
-+ memcpy(key+16,rn, CIFS_SESSION_KEY_SIZE);
-+ return 0;
-+}
-+
-+int CalcNTLMv2_partial_mac_key(struct cifsSesInfo * ses, struct nls_table * nls_info)
-+{
-+ char temp_hash[16];
-+ struct HMACMD5Context ctx;
-+ char * ucase_buf;
-+ wchar_t * unicode_buf;
-+ unsigned int i,user_name_len,dom_name_len;
-+
-+ if(ses)
-+ return -EINVAL;
-+
-+ E_md4hash(ses->password, temp_hash);
-+
-+ hmac_md5_init_limK_to_64(temp_hash, 16, &ctx);
-+ user_name_len = strlen(ses->userName);
-+ if(user_name_len > MAX_USERNAME_SIZE)
-+ return -EINVAL;
-+ dom_name_len = strlen(ses->domainName);
-+ if(dom_name_len > MAX_USERNAME_SIZE)
-+ return -EINVAL;
-+
-+ ucase_buf = kmalloc((MAX_USERNAME_SIZE+1), GFP_KERNEL);
-+ unicode_buf = kmalloc((MAX_USERNAME_SIZE+1)*4, GFP_KERNEL);
-+
-+ for(i=0;i<user_name_len;i++)
-+ ucase_buf[i] = nls_info->charset2upper[(int)ses->userName[i]];
-+ ucase_buf[i] = 0;
-+ user_name_len = cifs_strtoUCS(unicode_buf, ucase_buf, MAX_USERNAME_SIZE*2, nls_info);
-+ unicode_buf[user_name_len] = 0;
-+ user_name_len++;
-+
-+ for(i=0;i<dom_name_len;i++)
-+ ucase_buf[i] = nls_info->charset2upper[(int)ses->domainName[i]];
-+ ucase_buf[i] = 0;
-+ dom_name_len = cifs_strtoUCS(unicode_buf+user_name_len, ucase_buf, MAX_USERNAME_SIZE*2, nls_info);
-+
-+ unicode_buf[user_name_len + dom_name_len] = 0;
-+ hmac_md5_update((const unsigned char *) unicode_buf,
-+ (user_name_len+dom_name_len)*2,&ctx);
-+
-+ hmac_md5_final(ses->mac_signing_key,&ctx);
-+ kfree(ucase_buf);
-+ kfree(unicode_buf);
-+ return 0;
-+}
-+void CalcNTLMv2_response(const struct cifsSesInfo * ses,char * v2_session_response)
-+{
-+ struct HMACMD5Context context;
-+ memcpy(v2_session_response + 8, ses->server->cryptKey,8);
-+ /* gen_blob(v2_session_response + 16); */
-+ hmac_md5_init_limK_to_64(ses->mac_signing_key, 16, &context);
-+
-+ hmac_md5_update(ses->server->cryptKey,8,&context);
-+/* hmac_md5_update(v2_session_response+16)client thing,8,&context); */ /* BB fix */
-+
-+ hmac_md5_final(v2_session_response,&context);
-+}
-diff -urN linux-2.4.29.old/fs/cifs/cifserr.c linux-2.4.29/fs/cifs/cifserr.c
---- linux-2.4.29.old/fs/cifs/cifserr.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifserr.c 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,70 @@
-+/*
-+ * fs/cifserr.c
-+ *
-+ * Copyright (c) International Business Machines Corp., 2002
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * 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.1 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 <linux/errno.h>
-+#include <linux/fs.h>
-+#include <linux/smbno.h>
-+#include "cifsfs.h"
-+
-+int map_cifs_error(int error_class, int error_code,
-+ int status_codes_negotiated)
-+{
-+
-+
-+ if (status_codes_negotiated) {
-+ switch (error_code) {
-+ default:
-+ return EIO;
-+ }
-+ } else
-+ switch (error_class) {
-+ case SUCCESS:
-+ return 0;
-+
-+ case ERRDOS:
-+ switch (error_code) {
-+ case ERRbadfunc:
-+ return EINVAL;
-+ default:
-+ return EIO;
-+ }
-+
-+ case ERRSRV:
-+ switch (error_code) {
-+ default:
-+ return EIO;
-+ }
-+
-+ case ERRHRD:
-+ switch (error_code) {
-+ default:
-+ return EIO;
-+ }
-+ default:
-+ return EIO;
-+ }
-+ return 0;
-+}
-+
-+int map_smb_error(int error_class, int error_code)
-+{
-+ return map_cifs_error(error_class, error_code, FALSE);
-+}
-diff -urN linux-2.4.29.old/fs/cifs/cifsfs.c linux-2.4.29/fs/cifs/cifsfs.c
---- linux-2.4.29.old/fs/cifs/cifsfs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifsfs.c 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,769 @@
-+/*
-+ * fs/cifs/cifsfs.c
-+ *
-+ * Copyright (C) International Business Machines Corp., 2002,2004
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * Common Internet FileSystem (CIFS) client
-+ *
-+ * 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.1 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
-+ */
-+
-+/* Note that BB means BUGBUG (ie something to fix eventually) */
-+
-+#include <linux/module.h>
-+#include <linux/fs.h>
-+#include <linux/mount.h>
-+#include <linux/slab.h>
-+#include <linux/init.h>
-+#include <linux/version.h>
-+#include <linux/list.h>
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,15))
-+#include <linux/seq_file.h>
-+#endif
-+#include <linux/vfs.h>
-+#include "cifsfs.h"
-+#include "cifspdu.h"
-+#define DECLARE_GLOBALS_HERE
-+#include "cifsglob.h"
-+#include "cifsproto.h"
-+#include "cifs_debug.h"
-+#include "cifs_fs_sb.h"
-+#include <linux/mm.h>
-+#define CIFS_MAGIC_NUMBER 0xFF534D42 /* the first four bytes of SMB PDUs */
-+/* BB when mempool_resize is added back in, we will resize pool on new mount */
-+#define CIFS_MIN_RCV_POOL 11 /* enough for progress to five servers */
-+
-+#ifdef CONFIG_CIFS_QUOTA
-+static struct quotactl_ops cifs_quotactl_ops;
-+#endif
-+
-+extern struct file_system_type cifs_fs_type;
-+
-+int cifsFYI = 0;
-+int cifsERROR = 1;
-+int traceSMB = 0;
-+unsigned int oplockEnabled = 1;
-+unsigned int quotaEnabled = 0;
-+unsigned int linuxExtEnabled = 1;
-+unsigned int lookupCacheEnabled = 1;
-+unsigned int multiuser_mount = 0;
-+unsigned int extended_security = 0;
-+unsigned int ntlmv2_support = 0;
-+unsigned int sign_CIFS_PDUs = 1;
-+unsigned int CIFSMaximumBufferSize = CIFS_MAX_MSGSIZE;
-+struct task_struct * oplockThread = NULL;
-+
-+extern int cifs_mount(struct super_block *, struct cifs_sb_info *, char *,
-+ const char *);
-+extern int cifs_umount(struct super_block *, struct cifs_sb_info *);
-+void cifs_proc_init(void);
-+void cifs_proc_clean(void);
-+
-+static DECLARE_COMPLETION(cifs_oplock_exited);
-+
-+
-+struct super_block *
-+cifs_read_super(struct super_block *sb, void *data, int silent)
-+{
-+ struct inode *inode;
-+ struct cifs_sb_info *cifs_sb;
-+ int rc = 0;
-+
-+ sb->s_flags |= MS_NODIRATIME; /* and probably even noatime */
-+ cifs_sb = CIFS_SB(sb);
-+ if(cifs_sb == NULL)
-+ return 0;
-+ else
-+ memset(cifs_sb,0,sizeof(struct cifs_sb_info));
-+
-+
-+ rc = cifs_mount(sb, cifs_sb, data, NULL);
-+
-+ if (rc) {
-+ if (!silent)
-+ cERROR(1,
-+ ("cifs_mount failed w/return code = %d", rc));
-+ goto out_mount_failed;
-+ }
-+
-+ sb->s_magic = CIFS_MAGIC_NUMBER;
-+ sb->s_op = &cifs_super_ops;
-+/* if(cifs_sb->tcon->ses->server->maxBuf > MAX_CIFS_HDR_SIZE + 512)
-+ sb->s_blocksize = cifs_sb->tcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE; */
-+#ifdef CONFIG_CIFS_QUOTA
-+ sb->s_qcop = &cifs_quotactl_ops;
-+#endif
-+ sb->s_blocksize = CIFS_MAX_MSGSIZE;
-+ sb->s_blocksize_bits = 14; /* default 2**14 = CIFS_MAX_MSGSIZE */
-+ inode = iget(sb, ROOT_I);
-+
-+ if (!inode) {
-+ goto out_no_root;
-+ }
-+
-+ sb->s_root = d_alloc_root(inode);
-+
-+ if (!sb->s_root) {
-+ goto out_no_root;
-+ }
-+
-+ return sb;
-+
-+out_no_root:
-+ cERROR(1, ("cifs_read_super: get root inode failed"));
-+ if (inode)
-+ iput(inode);
-+
-+out_mount_failed:
-+ if(cifs_sb->local_nls)
-+ unload_nls(cifs_sb->local_nls);
-+ sb->s_dev = 0;
-+ return 0;
-+}
-+
-+static void
-+cifs_put_super(struct super_block *sb)
-+{
-+ int rc = 0;
-+ struct cifs_sb_info *cifs_sb;
-+
-+ cFYI(1, ("In cifs_put_super"));
-+ cifs_sb = CIFS_SB(sb);
-+ if(cifs_sb == NULL) {
-+ cFYI(1,("Empty cifs superblock info passed to unmount"));
-+ return;
-+ }
-+ rc = cifs_umount(sb, cifs_sb);
-+ if (rc) {
-+ cERROR(1, ("cifs_umount failed with return code %d", rc));
-+ }
-+ unload_nls(cifs_sb->local_nls);
-+ return;
-+}
-+
-+static int
-+cifs_statfs(struct super_block *sb, struct statfs *buf)
-+{
-+ int xid, rc;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ buf->f_type = CIFS_MAGIC_NUMBER;
-+
-+ /* instead could get the real value via SMB_QUERY_FS_ATTRIBUTE_INFO */
-+ buf->f_namelen = PATH_MAX; /* PATH_MAX may be too long - it would presumably
-+ be length of total path, note that some servers may be
-+ able to support more than this, but best to be safe
-+ since Win2k and others can not handle very long filenames */
-+ buf->f_files = 0; /* undefined */
-+ buf->f_ffree = 0; /* unlimited */
-+
-+ rc = CIFSSMBQFSInfo(xid, pTcon, buf, cifs_sb->local_nls);
-+
-+ /*
-+ int f_type;
-+ __fsid_t f_fsid;
-+ int f_namelen; */
-+ /* BB get from info put in tcon struct at mount time with call to QFSAttrInfo */
-+ FreeXid(xid);
-+ return 0; /* always return success? what if volume is no longer available? */
-+}
-+
-+static int cifs_permission(struct inode * inode, int mask)
-+{
-+ /* the server does permission checks, we do not need to do it here */
-+ return 0;
-+}
-+
-+kmem_cache_t *cifs_req_cachep;
-+kmem_cache_t *cifs_mid_cachep;
-+kmem_cache_t *cifs_oplock_cachep;
-+
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
-+static struct inode *
-+cifs_alloc_inode(struct super_block *sb)
-+{
-+ struct cifsInodeInfo *cifs_inode;
-+ cifs_inode =
-+ (struct cifsInodeInfo *) kmem_cache_alloc(cifs_inode_cachep,
-+ SLAB_KERNEL);
-+ if (!cifs_inode)
-+ return NULL;
-+ cifs_inode->cifsAttrs = 0x20; /* default */
-+ atomic_set(&cifs_inode->inUse, 0);
-+ cifs_inode->time = 0;
-+ /* Until the file is open and we have gotten oplock
-+ info back from the server, can not assume caching of
-+ file data or metadata */
-+ cifs_inode->clientCanCacheRead = FALSE;
-+ cifs_inode->clientCanCacheAll = FALSE;
-+ INIT_LIST_HEAD(&cifs_inode->openFileList);
-+ return &cifs_inode->vfs_inode;
-+}
-+
-+static void
-+cifs_destroy_inode(struct inode *inode)
-+{
-+ kmem_cache_free(cifs_inode_cachep, CIFS_I(inode));
-+}
-+#endif
-+
-+/*
-+ * cifs_show_options() is for displaying mount options in /proc/mounts.
-+ * Not all settable options are displayed but most of the important
-+ * ones are.
-+ */
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,15))
-+static int
-+cifs_show_options(struct seq_file *s, struct vfsmount *m)
-+{
-+ struct cifs_sb_info *cifs_sb;
-+
-+ cifs_sb = CIFS_SB(m->mnt_sb);
-+
-+ if (cifs_sb) {
-+ if (cifs_sb->tcon) {
-+ seq_printf(s, ",unc=%s", cifs_sb->tcon->treeName);
-+ if ((cifs_sb->tcon->ses) && (cifs_sb->tcon->ses->userName))
-+ seq_printf(s, ",username=%s",
-+ cifs_sb->tcon->ses->userName);
-+ if(cifs_sb->tcon->ses->domainName)
-+ seq_printf(s, ",domain=%s",
-+ cifs_sb->tcon->ses->domainName);
-+ }
-+ seq_printf(s, ",rsize=%d",cifs_sb->rsize);
-+ seq_printf(s, ",wsize=%d",cifs_sb->wsize);
-+ }
-+ return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_CIFS_QUOTA
-+int cifs_xquota_set(struct super_block * sb, int quota_type, qid_t qid,
-+ struct fs_disk_quota * pdquota)
-+{
-+ int xid;
-+ int rc = 0;
-+ struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
-+ struct cifsTconInfo *pTcon;
-+
-+ if(cifs_sb)
-+ pTcon = cifs_sb->tcon;
-+ else
-+ return -EIO;
-+
-+
-+ xid = GetXid();
-+ if(pTcon) {
-+ cFYI(1,("set type: 0x%x id: %d",quota_type,qid));
-+ } else {
-+ return -EIO;
-+ }
-+
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int cifs_xquota_get(struct super_block * sb, int quota_type, qid_t qid,
-+ struct fs_disk_quota * pdquota)
-+{
-+ int xid;
-+ int rc = 0;
-+ struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
-+ struct cifsTconInfo *pTcon;
-+
-+ if(cifs_sb)
-+ pTcon = cifs_sb->tcon;
-+ else
-+ return -EIO;
-+
-+ xid = GetXid();
-+ if(pTcon) {
-+ cFYI(1,("set type: 0x%x id: %d",quota_type,qid));
-+ } else {
-+ rc = -EIO;
-+ }
-+
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int cifs_xstate_set(struct super_block * sb, unsigned int flags, int operation)
-+{
-+ int xid;
-+ int rc = 0;
-+ struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
-+ struct cifsTconInfo *pTcon;
-+
-+ if(cifs_sb)
-+ pTcon = cifs_sb->tcon;
-+ else
-+ return -EIO;
-+
-+ xid = GetXid();
-+ if(pTcon) {
-+ cFYI(1,("flags: 0x%x operation: 0x%x",flags,operation));
-+ } else {
-+ rc = -EIO;
-+ }
-+
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int cifs_xstate_get(struct super_block * sb, struct fs_quota_stat *qstats)
-+{
-+ int xid;
-+ int rc = 0;
-+ struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
-+ struct cifsTconInfo *pTcon;
-+
-+ if(cifs_sb) {
-+ pTcon = cifs_sb->tcon;
-+ } else {
-+ return -EIO;
-+ }
-+ xid = GetXid();
-+ if(pTcon) {
-+ cFYI(1,("pqstats %p",qstats));
-+ } else {
-+ rc = -EIO;
-+ }
-+
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+static struct quotactl_ops cifs_quotactl_ops = {
-+ .set_xquota = cifs_xquota_set,
-+ .get_xquota = cifs_xquota_set,
-+ .set_xstate = cifs_xstate_set,
-+ .get_xstate = cifs_xstate_get,
-+};
-+#endif
-+
-+static int cifs_remount(struct super_block *sb, int *flags, char *data)
-+{
-+ *flags |= MS_NODIRATIME;
-+ return 0;
-+}
-+
-+struct super_operations cifs_super_ops = {
-+ .read_inode = cifs_read_inode,
-+ .put_super = cifs_put_super,
-+ .statfs = cifs_statfs,
-+/* .alloc_inode = cifs_alloc_inode,
-+ .destroy_inode = cifs_destroy_inode, */
-+/* .drop_inode = generic_delete_inode,
-+ .delete_inode = cifs_delete_inode, *//* Do not need the above two functions
-+ unless later we add lazy close of inodes or unless the kernel forgets to call
-+ us with the same number of releases (closes) as opens */
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,15))
-+ .show_options = cifs_show_options,
-+#endif
-+/* .umount_begin = cifs_umount_begin, *//* consider adding in the future */
-+};
-+
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
-+static struct super_block *
-+cifs_get_sb(struct file_system_type *fs_type,
-+ int flags, const char *dev_name, void *data)
-+{
-+ int rc;
-+ struct super_block *sb = sget(fs_type, NULL, set_anon_super, NULL);
-+
-+ cFYI(1, ("Devname: %s flags: %d ", dev_name, flags));
-+
-+ if (IS_ERR(sb))
-+ return sb;
-+
-+ sb->s_flags = flags;
-+
-+ rc = cifs_read_super(sb, data, dev_name, flags & MS_VERBOSE ? 1 : 0);
-+ if (rc) {
-+ up_write(&sb->s_umount);
-+ deactivate_super(sb);
-+ return ERR_PTR(rc);
-+ }
-+ sb->s_flags |= MS_ACTIVE;
-+ return sb;
-+}
-+#endif
-+
-+static ssize_t
-+cifs_read_wrapper(struct file * file, char *read_data, size_t read_size,
-+ loff_t * poffset)
-+{
-+ if(file == NULL)
-+ return -EIO;
-+ else if(file->f_dentry == NULL)
-+ return -EIO;
-+ else if(file->f_dentry->d_inode == NULL)
-+ return -EIO;
-+
-+ if(CIFS_I(file->f_dentry->d_inode)->clientCanCacheRead) {
-+ return generic_file_read(file,read_data,read_size,poffset);
-+ } else {
-+ /* BB do we need to lock inode from here until after invalidate? */
-+/* if(file->f_dentry->d_inode->i_mapping) {
-+ filemap_fdatawrite(file->f_dentry->d_inode->i_mapping);
-+ filemap_fdatawait(file->f_dentry->d_inode->i_mapping);
-+ }*/
-+/* cifs_revalidate(file->f_dentry);*/ /* BB fixme */
-+
-+ /* BB we should make timer configurable - perhaps
-+ by simply calling cifs_revalidate here */
-+ /* invalidate_remote_inode(file->f_dentry->d_inode);*/
-+ return generic_file_read(file,read_data,read_size,poffset);
-+ }
-+}
-+
-+static ssize_t
-+cifs_write_wrapper(struct file * file, const char *write_data,
-+ size_t write_size, loff_t * poffset)
-+{
-+ ssize_t written;
-+
-+ if(file == NULL)
-+ return -EIO;
-+ else if(file->f_dentry == NULL)
-+ return -EIO;
-+ else if(file->f_dentry->d_inode == NULL)
-+ return -EIO;
-+
-+ /* check whether we can cache writes locally */
-+ written = generic_file_write(file,write_data,write_size,poffset);
-+ if(!CIFS_I(file->f_dentry->d_inode)->clientCanCacheAll) {
-+ if(file->f_dentry->d_inode->i_mapping) {
-+ filemap_fdatasync(file->f_dentry->d_inode->i_mapping);
-+ }
-+ }
-+ return written;
-+}
-+
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
-+static struct file_system_type cifs_fs_type = {
-+ .owner = THIS_MODULE,
-+ .name = "cifs",
-+ .get_sb = cifs_get_sb,
-+ .kill_sb = kill_anon_super,
-+ /* .fs_flags */
-+};
-+#endif
-+
-+static DECLARE_FSTYPE(cifs_fs_type, "cifs", cifs_read_super,0);
-+
-+
-+struct inode_operations cifs_dir_inode_ops = {
-+ .create = cifs_create,
-+ .lookup = cifs_lookup,
-+ .unlink = cifs_unlink,
-+ .link = cifs_hardlink,
-+ .mkdir = cifs_mkdir,
-+ .rmdir = cifs_rmdir,
-+ .rename = cifs_rename,
-+ .permission = cifs_permission,
-+ .revalidate = cifs_revalidate,
-+ .setattr = cifs_setattr,
-+ .symlink = cifs_symlink,
-+ .mknod = cifs_mknod,
-+};
-+
-+struct inode_operations cifs_file_inode_ops = {
-+ .revalidate = cifs_revalidate,
-+ .setattr = cifs_setattr,
-+/* .getattr = cifs_getattr,*/
-+ .rename = cifs_rename,
-+ .permission = cifs_permission,
-+#ifdef CONFIG_CIFS_XATTR
-+ .setxattr = cifs_setxattr,
-+ .getxattr = cifs_getxattr,
-+ .listxattr = cifs_listxattr,
-+ .removexattr = cifs_removexattr,
-+#endif
-+};
-+
-+struct inode_operations cifs_symlink_inode_ops = {
-+ .readlink = cifs_readlink,
-+ .follow_link = cifs_follow_link,
-+ .permission = cifs_permission,
-+ /* BB add the following two eventually */
-+ /* revalidate: cifs_revalidate,
-+ setattr: cifs_notify_change, *//* BB do we need notify change */
-+#ifdef CONFIG_CIFS_XATTR
-+ .setxattr = cifs_setxattr,
-+ .getxattr = cifs_getxattr,
-+ .listxattr = cifs_listxattr,
-+ .removexattr = cifs_removexattr,
-+#endif
-+};
-+
-+struct file_operations cifs_file_ops = {
-+ .read = cifs_read_wrapper,
-+ .write = cifs_write_wrapper,
-+ .open = cifs_open,
-+ .release = cifs_close,
-+ .lock = cifs_lock,
-+ .fsync = cifs_fsync,
-+ .flush = cifs_flush,
-+ .mmap = cifs_file_mmap,
-+/* .sendfile = generic_file_sendfile,*/
-+#ifdef CONFIG_CIFS_FCNTL
-+ .fcntl = cifs_fcntl,
-+#endif
-+};
-+
-+struct file_operations cifs_dir_ops = {
-+ .readdir = cifs_readdir,
-+ .release = cifs_closedir,
-+ .read = generic_read_dir,
-+#ifdef CONFIG_CIFS_FCNTL
-+ .fcntl = cifs_fcntl,
-+#endif
-+};
-+/*
-+static void
-+cifs_init_once(void *inode, kmem_cache_t * cachep, unsigned long flags)
-+{
-+ struct cifsInodeInfo *cifsi = (struct cifsInodeInfo *) inode;
-+
-+ if ((flags & (SLAB_CTOR_VERIFY | SLAB_CTOR_CONSTRUCTOR)) ==
-+ SLAB_CTOR_CONSTRUCTOR) {
-+ inode_init_once(&cifsi->vfs_inode);
-+ INIT_LIST_HEAD(&cifsi->lockList);
-+ }
-+}
-+
-+static int
-+cifs_init_inodecache(void)
-+{
-+ cifs_inode_cachep = kmem_cache_create("cifs_inode_cache",
-+ sizeof (struct cifsInodeInfo),
-+ 0, SLAB_HWCACHE_ALIGN,
-+ cifs_init_once, NULL);
-+ if (cifs_inode_cachep == NULL)
-+ return -ENOMEM;
-+
-+
-+ return 0;
-+}
-+
-+static void
-+cifs_destroy_inodecache(void)
-+{
-+ if (kmem_cache_destroy(cifs_inode_cachep))
-+ printk(KERN_WARNING "cifs_inode_cache: error freeing\n");
-+} */
-+
-+static int
-+cifs_init_request_bufs(void)
-+{
-+ cifs_req_cachep = kmem_cache_create("cifs_request",
-+ CIFS_MAX_MSGSIZE +
-+ MAX_CIFS_HDR_SIZE, 0,
-+ SLAB_HWCACHE_ALIGN, NULL, NULL);
-+ if (cifs_req_cachep == NULL)
-+ return -ENOMEM;
-+
-+ return 0;
-+}
-+
-+static void
-+cifs_destroy_request_bufs(void)
-+{
-+ if (kmem_cache_destroy(cifs_req_cachep))
-+ printk(KERN_WARNING
-+ "cifs_destroy_request_cache: error not all structures were freed\n");
-+}
-+
-+static int
-+cifs_init_mids(void)
-+{
-+ cifs_mid_cachep = kmem_cache_create("cifs_mpx_ids",
-+ sizeof (struct mid_q_entry), 0,
-+ SLAB_HWCACHE_ALIGN, NULL, NULL);
-+ if (cifs_mid_cachep == NULL)
-+ return -ENOMEM;
-+ cifs_oplock_cachep = kmem_cache_create("cifs_oplock_struct",
-+ sizeof (struct oplock_q_entry), 0,
-+ SLAB_HWCACHE_ALIGN, NULL, NULL);
-+ if (cifs_oplock_cachep == NULL) {
-+ kmem_cache_destroy(cifs_mid_cachep);
-+ return -ENOMEM;
-+ }
-+
-+ return 0;
-+}
-+
-+static void
-+cifs_destroy_mids(void)
-+{
-+ if (kmem_cache_destroy(cifs_mid_cachep))
-+ printk(KERN_WARNING
-+ "cifs_destroy_mids: error not all structures were freed\n");
-+ if (kmem_cache_destroy(cifs_oplock_cachep))
-+ printk(KERN_WARNING
-+ "error not all oplock structures were freed\n");
-+}
-+
-+static int cifs_oplock_thread(void * dummyarg)
-+{
-+ struct oplock_q_entry * oplock_item;
-+ struct cifsTconInfo *pTcon;
-+ struct inode * inode;
-+ __u16 netfid;
-+ int rc = 0;
-+
-+ daemonize();
-+ sprintf(current->comm,"cifsoplockd");
-+
-+ oplockThread = current;
-+ do {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+
-+ schedule_timeout(1*HZ);
-+ spin_lock(&GlobalMid_Lock);
-+ if(list_empty(&GlobalOplock_Q)) {
-+ spin_unlock(&GlobalMid_Lock);
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(39*HZ);
-+ } else {
-+ oplock_item = list_entry(GlobalOplock_Q.next,
-+ struct oplock_q_entry, qhead);
-+ if(oplock_item) {
-+ cFYI(1,("found oplock item to write out"));
-+ pTcon = oplock_item->tcon;
-+ inode = oplock_item->pinode;
-+ netfid = oplock_item->netfid;
-+ spin_unlock(&GlobalMid_Lock);
-+ DeleteOplockQEntry(oplock_item);
-+ /* can not grab inode sem here since it would
-+ deadlock when oplock received on delete
-+ since vfs_unlink holds the i_sem across
-+ the call */
-+ /* down(&inode->i_sem);*/
-+ if (S_ISREG(inode->i_mode)) {
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,17))
-+ rc = filemap_fdatasync(inode->i_mapping);
-+ if(rc)
-+ CIFS_I(inode)->write_behind_rc = rc;
-+#else
-+ filemap_fdatasync(inode->i_mapping);
-+#endif
-+ if(CIFS_I(inode)->clientCanCacheRead == 0)
-+ invalidate_inode_pages(inode);
-+ } else
-+ rc = 0;
-+ /* releasing a stale oplock after recent reconnection
-+ of smb session using a now incorrect file
-+ handle is not a data integrity issue but do
-+ not bother sending an oplock release if session
-+ to server still is disconnected since oplock
-+ already released by the server in that case */
-+ if(pTcon->tidStatus != CifsNeedReconnect) {
-+ rc = CIFSSMBLock(0, pTcon,
-+ netfid,
-+ 0 /* len */ , 0 /* offset */, 0,
-+ 0, LOCKING_ANDX_OPLOCK_RELEASE,
-+ 0 /* wait flag */);
-+ cFYI(1,("Oplock release rc = %d ",rc));
-+ }
-+ } else
-+ spin_unlock(&GlobalMid_Lock);
-+ }
-+ } while(!signal_pending(current));
-+ complete_and_exit (&cifs_oplock_exited, 0);
-+}
-+
-+static int __init
-+init_cifs(void)
-+{
-+ int rc = 0;
-+#if CONFIG_PROC_FS
-+ cifs_proc_init();
-+#endif
-+ INIT_LIST_HEAD(&GlobalServerList); /* BB not implemented yet */
-+ INIT_LIST_HEAD(&GlobalSMBSessionList);
-+ INIT_LIST_HEAD(&GlobalTreeConnectionList);
-+ INIT_LIST_HEAD(&GlobalOplock_Q);
-+/*
-+ * Initialize Global counters
-+ */
-+ atomic_set(&sesInfoAllocCount, 0);
-+ atomic_set(&tconInfoAllocCount, 0);
-+ atomic_set(&tcpSesReconnectCount, 0);
-+ atomic_set(&tconInfoReconnectCount, 0);
-+
-+ atomic_set(&bufAllocCount, 0);
-+ atomic_set(&midCount, 0);
-+ GlobalCurrentXid = 0;
-+ GlobalTotalActiveXid = 0;
-+ GlobalMaxActiveXid = 0;
-+ GlobalSMBSeslock = RW_LOCK_UNLOCKED;
-+ GlobalMid_Lock = SPIN_LOCK_UNLOCKED;
-+
-+/* rc = cifs_init_inodecache();*/
-+ if (!rc) {
-+ rc = cifs_init_mids();
-+ if (!rc) {
-+ rc = cifs_init_request_bufs();
-+ if (!rc) {
-+ rc = register_filesystem(&cifs_fs_type);
-+ if (!rc) {
-+ kernel_thread(cifs_oplock_thread, NULL,
-+ CLONE_FS | CLONE_FILES | CLONE_VM);
-+ return rc; /* Success */
-+ } else
-+ cifs_destroy_request_bufs();
-+ }
-+ cifs_destroy_mids();
-+ }
-+/* cifs_destroy_inodecache(); */
-+ }
-+#if CONFIG_PROC_FS
-+ cifs_proc_clean();
-+#endif
-+ return rc;
-+}
-+
-+static void __exit
-+exit_cifs(void)
-+{
-+ cFYI(0, ("In unregister ie exit_cifs"));
-+#if CONFIG_PROC_FS
-+ cifs_proc_clean();
-+#endif
-+ unregister_filesystem(&cifs_fs_type);
-+/* cifs_destroy_inodecache();*/
-+ cifs_destroy_mids();
-+ cifs_destroy_request_bufs();
-+ if(oplockThread) {
-+ send_sig(SIGTERM, oplockThread, 1);
-+ wait_for_completion(&cifs_oplock_exited);
-+ }
-+}
-+
-+MODULE_AUTHOR("Steve French <sfrench@us.ibm.com>");
-+MODULE_LICENSE("GPL"); /* combination of LGPL + GPL source behaves as GPL */
-+MODULE_DESCRIPTION
-+ ("VFS to access servers complying with the SNIA CIFS Specification e.g. Samba and Windows");
-+module_init(init_cifs)
-+module_exit(exit_cifs)
-diff -urN linux-2.4.29.old/fs/cifs/cifsfs.h linux-2.4.29/fs/cifs/cifsfs.h
---- linux-2.4.29.old/fs/cifs/cifsfs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifsfs.h 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,97 @@
-+/*
-+ * fs/cifs/cifsfs.h
-+ *
-+ * Copyright (c) International Business Machines Corp., 2002
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * 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.1 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 _CIFSFS_H
-+#define _CIFSFS_H
-+
-+#define ROOT_I 2
-+
-+#ifndef FALSE
-+#define FALSE 0
-+#endif
-+
-+#ifndef TRUE
-+#define TRUE 1
-+#endif
-+
-+extern int map_cifs_error(int error_class, int error_code,
-+ int status_codes_negotiated);
-+
-+extern struct address_space_operations cifs_addr_ops;
-+
-+/* Functions related to super block operations */
-+extern struct super_operations cifs_super_ops;
-+extern void cifs_put_inode(struct inode *);
-+extern void cifs_read_inode(struct inode *);
-+extern void cifs_delete_inode(struct inode *);
-+/* extern void cifs_write_inode(struct inode *); *//* BB not needed yet */
-+
-+/* Functions related to inodes */
-+extern struct inode_operations cifs_dir_inode_ops;
-+extern int cifs_create(struct inode *, struct dentry *, int);
-+extern struct dentry *cifs_lookup(struct inode *, struct dentry *);
-+extern int cifs_unlink(struct inode *, struct dentry *);
-+extern int cifs_hardlink(struct dentry *, struct inode *, struct dentry *);
-+extern int cifs_mknod(struct inode *, struct dentry *, int, int);
-+extern int cifs_mkdir(struct inode *, struct dentry *, int);
-+extern int cifs_rmdir(struct inode *, struct dentry *);
-+extern int cifs_rename(struct inode *, struct dentry *, struct inode *,
-+ struct dentry *);
-+extern int cifs_revalidate(struct dentry *);
-+extern int cifs_setattr(struct dentry *, struct iattr *);
-+
-+extern struct inode_operations cifs_file_inode_ops;
-+extern void cifs_truncate_file(struct inode *);
-+extern struct inode_operations cifs_symlink_inode_ops;
-+
-+/* Functions related to files and directories */
-+extern struct file_operations cifs_file_ops;
-+extern int cifs_open(struct inode *inode, struct file *file);
-+extern int cifs_close(struct inode *inode, struct file *file);
-+extern int cifs_closedir(struct inode *inode, struct file *file);
-+extern ssize_t cifs_read(struct file *file, char *read_data,
-+ size_t read_size, loff_t * poffset);
-+extern ssize_t cifs_write(struct file *file, const char *write_data,
-+ size_t write_size, loff_t * poffset);
-+extern int cifs_lock(struct file *, int, struct file_lock *);
-+extern int cifs_fsync(struct file *, struct dentry *, int);
-+extern int cifs_flush(struct file *);
-+extern int cifs_file_mmap(struct file * , struct vm_area_struct *);
-+extern struct file_operations cifs_dir_ops;
-+extern int cifs_dir_open(struct inode *inode, struct file *file);
-+extern int cifs_readdir(struct file *file, void *direntry, filldir_t filldir);
-+extern long cifs_fcntl(int, unsigned int, unsigned long, struct file *);
-+
-+/* Functions related to dir entries */
-+extern struct dentry_operations cifs_dentry_ops;
-+
-+/* Functions related to symlinks */
-+extern int cifs_follow_link(struct dentry *direntry, struct nameidata *nd);
-+extern int cifs_readlink(struct dentry *direntry, char *buffer, int buflen);
-+extern int cifs_symlink(struct inode *inode, struct dentry *direntry,
-+ const char *symname);
-+extern int cifs_removexattr(struct dentry *, const char *);
-+extern int cifs_setxattr(struct dentry *, const char *, const void *,
-+ size_t, int);
-+extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t);
-+extern ssize_t cifs_listxattr(struct dentry *, char *, size_t);
-+#define CIFS_VERSION "1.20"
-+#endif /* _CIFSFS_H */
-diff -urN linux-2.4.29.old/fs/cifs/cifs_fs_sb.h linux-2.4.29/fs/cifs/cifs_fs_sb.h
---- linux-2.4.29.old/fs/cifs/cifs_fs_sb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifs_fs_sb.h 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,32 @@
-+/*
-+ * fs/cifs/cifs_fs_sb.h
-+ *
-+ * Copyright (c) International Business Machines Corp., 2002
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * 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.1 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.
-+ *
-+ */
-+#ifndef _CIFS_FS_SB_H
-+#define _CIFS_FS_SB_H
-+
-+struct cifs_sb_info {
-+ struct cifsTconInfo *tcon; /* primary mount */
-+ struct list_head nested_tcon_q;
-+ struct nls_table *local_nls;
-+ unsigned int rsize;
-+ unsigned int wsize;
-+ uid_t mnt_uid;
-+ gid_t mnt_gid;
-+ mode_t mnt_file_mode;
-+ mode_t mnt_dir_mode;
-+};
-+#endif /* _CIFS_FS_SB_H */
-diff -urN linux-2.4.29.old/fs/cifs/cifsglob.h linux-2.4.29/fs/cifs/cifsglob.h
---- linux-2.4.29.old/fs/cifs/cifsglob.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifsglob.h 2004-07-14 00:25:05.000000000 +0200
-@@ -0,0 +1,413 @@
-+/*
-+ * fs/cifs/cifsglob.h
-+ *
-+ * Copyright (C) International Business Machines Corp., 2002,2003
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * 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.1 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.
-+ *
-+ */
-+#include <linux/in.h>
-+#include <linux/in6.h>
-+#include "cifs_fs_sb.h"
-+/*
-+ * The sizes of various internal tables and strings
-+ */
-+#define MAX_UID_INFO 16
-+#define MAX_SES_INFO 2
-+#define MAX_TCON_INFO 4
-+
-+#define MAX_TREE_SIZE 2 + MAX_SERVER_SIZE + 1 + MAX_SHARE_SIZE + 1
-+#define MAX_SERVER_SIZE 15
-+#define MAX_SHARE_SIZE 64 /* used to be 20 - this should still be enough */
-+#define MAX_USERNAME_SIZE 32 /* 32 is to allow for 15 char names + null
-+ termination then *2 for unicode versions */
-+#define MAX_PASSWORD_SIZE 16
-+
-+/*
-+ * MAX_REQ is the maximum number of requests that WE will send
-+ * on one socket concurently. It also matches the most common
-+ * value of max multiplex returned by servers. We may
-+ * eventually want to use the negotiated value (in case
-+ * future servers can handle more) when we are more confident that
-+ * we will not have problems oveloading the socket with pending
-+ * write data.
-+ */
-+#define CIFS_MAX_REQ 50
-+
-+#define SERVER_NAME_LENGTH 15
-+#define SERVER_NAME_LEN_WITH_NULL (SERVER_NAME_LENGTH + 1)
-+
-+/* used to define string lengths for reversing unicode strings */
-+/* (256+1)*2 = 514 */
-+/* (max path length + 1 for null) * 2 for unicode */
-+#define MAX_NAME 514
-+
-+#include "cifspdu.h"
-+
-+#ifndef FALSE
-+#define FALSE 0
-+#endif
-+
-+#ifndef TRUE
-+#define TRUE 1
-+#endif
-+
-+#ifndef XATTR_DOS_ATTRIB
-+#define XATTR_DOS_ATTRIB "user.DOSATTRIB"
-+#endif
-+
-+/*
-+ * This information is kept on every Server we know about.
-+ *
-+ * Some things to note:
-+ *
-+ */
-+#define SERVER_NAME_LEN_WITH_NULL (SERVER_NAME_LENGTH + 1)
-+
-+/*
-+ * CIFS vfs client Status information (based on what we know.)
-+ */
-+
-+ /* associated with each tcp and smb session */
-+enum statusEnum {
-+ CifsNew = 0,
-+ CifsGood,
-+ CifsExiting,
-+ CifsNeedReconnect
-+};
-+
-+enum securityEnum {
-+ NTLM = 0, /* Legacy NTLM012 auth with NTLM hash */
-+ NTLMv2, /* Legacy NTLM auth with NTLMv2 hash */
-+ RawNTLMSSP, /* NTLMSSP without SPNEGO */
-+ NTLMSSP, /* NTLMSSP via SPNEGO */
-+ Kerberos /* Kerberos via SPNEGO */
-+};
-+
-+enum protocolEnum {
-+ IPV4 = 0,
-+ IPV6,
-+ SCTP
-+ /* Netbios frames protocol not supported at this time */
-+};
-+
-+/*
-+ *****************************************************************
-+ * Except the CIFS PDUs themselves all the
-+ * globally interesting structs should go here
-+ *****************************************************************
-+ */
-+
-+struct TCP_Server_Info {
-+ char server_Name[SERVER_NAME_LEN_WITH_NULL]; /* 15 chars + X'20'in 16th */
-+ char unicode_server_Name[SERVER_NAME_LEN_WITH_NULL * 2]; /* Unicode version of server_Name */
-+ struct socket *ssocket;
-+ union {
-+ struct sockaddr_in sockAddr;
-+ struct sockaddr_in6 sockAddr6;
-+ } addr;
-+ wait_queue_head_t response_q;
-+ wait_queue_head_t request_q; /* if more than maxmpx to srvr must block*/
-+ struct list_head pending_mid_q;
-+ void *Server_NlsInfo; /* BB - placeholder for future NLS info */
-+ unsigned short server_codepage; /* codepage for the server */
-+ unsigned long ip_address; /* IP addr for the server if known */
-+ enum protocolEnum protocolType;
-+ char versionMajor;
-+ char versionMinor;
-+ int svlocal:1; /* local server or remote */
-+ atomic_t socketUseCount; /* number of open cifs sessions on socket */
-+ atomic_t inFlight; /* number of requests on the wire to server */
-+ enum statusEnum tcpStatus; /* what we think the status is */
-+ struct semaphore tcpSem;
-+ struct task_struct *tsk;
-+ char server_GUID[16];
-+ char secMode;
-+ enum securityEnum secType;
-+ unsigned int maxReq; /* Clients should submit no more */
-+ /* than maxReq distinct unanswered SMBs to the server when using */
-+ /* multiplexed reads or writes */
-+ unsigned int maxBuf; /* maxBuf specifies the maximum */
-+ /* message size the server can send or receive for non-raw SMBs */
-+ unsigned int maxRw; /* maxRw specifies the maximum */
-+ /* message size the server can send or receive for */
-+ /* SMB_COM_WRITE_RAW or SMB_COM_READ_RAW. */
-+ char sessid[4]; /* unique token id for this session */
-+ /* (returned on Negotiate */
-+ int capabilities; /* allow selective disabling of caps by smb sess */
-+ __u16 timeZone;
-+ char cryptKey[CIFS_CRYPTO_KEY_SIZE];
-+ char workstation_RFC1001_name[16]; /* 16th byte is always zero */
-+};
-+
-+/*
-+ * The following is our shortcut to user information. We surface the uid,
-+ * and name. We always get the password on the fly in case it
-+ * has changed. We also hang a list of sessions owned by this user off here.
-+ */
-+struct cifsUidInfo {
-+ struct list_head userList;
-+ struct list_head sessionList; /* SMB sessions for this user */
-+ uid_t linux_uid;
-+ char user[MAX_USERNAME_SIZE + 1]; /* ascii name of user */
-+ /* BB may need ptr or callback for PAM or WinBind info */
-+};
-+
-+/*
-+ * Session structure. One of these for each uid session with a particular host
-+ */
-+struct cifsSesInfo {
-+ struct list_head cifsSessionList;
-+ struct semaphore sesSem;
-+ struct cifsUidInfo *uidInfo; /* pointer to user info */
-+ struct TCP_Server_Info *server; /* pointer to server info */
-+ atomic_t inUse; /* # of mounts (tree connections) on this ses */
-+ enum statusEnum status;
-+ __u32 sequence_number; /* needed for CIFS PDU signature */
-+ __u16 ipc_tid; /* special tid for connection to IPC share */
-+ char mac_signing_key[CIFS_SESSION_KEY_SIZE + 16];
-+ char *serverOS; /* name of operating system underlying the server */
-+ char *serverNOS; /* name of network operating system that the server is running */
-+ char *serverDomain; /* security realm of server */
-+ int Suid; /* remote smb uid */
-+ uid_t linux_uid; /* local Linux uid */
-+ int capabilities;
-+ char serverName[SERVER_NAME_LEN_WITH_NULL * 2]; /* BB make bigger for tcp names - will ipv6 and sctp addresses fit here?? */
-+ char userName[MAX_USERNAME_SIZE + 1];
-+ char domainName[MAX_USERNAME_SIZE + 1];
-+ char * password;
-+};
-+
-+/*
-+ * there is one of these for each connection to a resource on a particular
-+ * session
-+ */
-+struct cifsTconInfo {
-+ struct list_head cifsConnectionList;
-+ struct list_head openFileList;
-+ struct semaphore tconSem;
-+ struct cifsSesInfo *ses; /* pointer to session associated with */
-+ char treeName[MAX_TREE_SIZE + 1]; /* UNC name of resource (in ASCII not UTF) */
-+ char *nativeFileSystem;
-+ __u16 tid; /* The 2 byte tree id */
-+ __u16 Flags; /* optional support bits */
-+ enum statusEnum tidStatus;
-+ atomic_t useCount; /* how many mounts (explicit or implicit) to this share */
-+#ifdef CONFIG_CIFS_STATS
-+ atomic_t num_smbs_sent;
-+ atomic_t num_writes;
-+ atomic_t num_reads;
-+ atomic_t num_oplock_brks;
-+ atomic_t num_opens;
-+ atomic_t num_deletes;
-+ atomic_t num_mkdirs;
-+ atomic_t num_rmdirs;
-+ atomic_t num_renames;
-+ atomic_t num_t2renames;
-+ __u64 bytes_read;
-+ __u64 bytes_written;
-+ spinlock_t stat_lock;
-+#endif
-+ FILE_SYSTEM_DEVICE_INFO fsDevInfo;
-+ FILE_SYSTEM_ATTRIBUTE_INFO fsAttrInfo; /* ok if file system name truncated */
-+ FILE_SYSTEM_UNIX_INFO fsUnixInfo;
-+ int retry:1;
-+ /* BB add field for back pointer to sb struct? */
-+};
-+
-+/*
-+ * This info hangs off the cifsFileInfo structure. This is used to track
-+ * byte stream locks on the file
-+ */
-+struct cifsLockInfo {
-+ struct cifsLockInfo *next;
-+ int start;
-+ int length;
-+ int type;
-+};
-+
-+/*
-+ * One of these for each open instance of a file
-+ */
-+struct cifsFileInfo {
-+ struct list_head tlist; /* pointer to next fid owned by tcon */
-+ struct list_head flist; /* next fid (file instance) for this inode */
-+ unsigned int uid; /* allows finding which FileInfo structure */
-+ __u32 pid; /* process id who opened file */
-+ __u16 netfid; /* file id from remote */
-+ /* BB add lock scope info here if needed */ ;
-+ /* lock scope id (0 if none) */
-+ struct file * pfile; /* needed for writepage */
-+ struct inode * pInode; /* needed for oplock break */
-+ int endOfSearch:1; /* we have reached end of search */
-+ int closePend:1; /* file is marked to close */
-+ int emptyDir:1;
-+ int invalidHandle:1; /* file closed via session abend */
-+ struct semaphore fh_sem; /* prevents reopen race after dead ses*/
-+ char * search_resume_name;
-+ unsigned int resume_name_length;
-+ __u32 resume_key;
-+};
-+
-+/*
-+ * One of these for each file inode
-+ */
-+
-+struct cifsInodeInfo {
-+ struct list_head lockList;
-+ /* BB add in lists for dirty pages - i.e. write caching info for oplock */
-+ struct list_head openFileList;
-+ int write_behind_rc;
-+ __u32 cifsAttrs; /* e.g. DOS archive bit, sparse, compressed, system */
-+ atomic_t inUse; /* num concurrent users (local openers cifs) of file*/
-+ unsigned long time; /* jiffies of last update/check of inode */
-+ int clientCanCacheRead:1; /* read oplock */
-+ int clientCanCacheAll:1; /* read and writebehind oplock */
-+ int oplockPending:1;
-+ struct inode vfs_inode;
-+};
-+
-+static inline struct cifsInodeInfo * CIFS_I(struct inode *inode)
-+{
-+ return (struct cifsInodeInfo *)&(inode->u);
-+}
-+
-+static inline struct cifs_sb_info * CIFS_SB(struct super_block *sb)
-+{
-+ return (struct cifs_sb_info *) &(sb->u);
-+}
-+
-+
-+/* one of these for every pending CIFS request to the server */
-+struct mid_q_entry {
-+ struct list_head qhead; /* mids waiting on reply from this server */
-+ __u16 mid; /* multiplex id */
-+ __u16 pid; /* process id */
-+ __u32 sequence_number; /* for CIFS signing */
-+ __u16 command; /* smb command code */
-+ struct timeval when_sent; /* time when smb sent */
-+ struct cifsSesInfo *ses; /* smb was sent to this server */
-+ struct task_struct *tsk; /* task waiting for response */
-+ struct smb_hdr *resp_buf; /* response buffer */
-+ int midState; /* wish this were enum but can not pass to wait_event */
-+};
-+
-+struct oplock_q_entry {
-+ struct list_head qhead;
-+ struct inode * pinode;
-+ struct cifsTconInfo * tcon;
-+ __u16 netfid;
-+};
-+
-+#define MID_FREE 0
-+#define MID_REQUEST_ALLOCATED 1
-+#define MID_REQUEST_SUBMITTED 2
-+#define MID_RESPONSE_RECEIVED 4
-+#define MID_RETRY_NEEDED 8 /* session closed while this request out */
-+
-+/*
-+ *****************************************************************
-+ * All constants go here
-+ *****************************************************************
-+ */
-+
-+#define UID_HASH (16)
-+
-+/*
-+ * Note that ONE module should define _DECLARE_GLOBALS_HERE to cause the
-+ * following to be declared.
-+ */
-+
-+/****************************************************************************
-+ * Locking notes. All updates to global variables and lists should be
-+ * protected by spinlocks or semaphores.
-+ *
-+ * Spinlocks
-+ * ---------
-+ * GlobalMid_Lock protects:
-+ * list operations on pending_mid_q and oplockQ
-+ * updates to XID counters, multiplex id and SMB sequence numbers
-+ * GlobalSMBSesLock protects:
-+ * list operations on tcp and SMB session lists and tCon lists
-+ * f_owner.lock protects certain per file struct operations
-+ * mapping->page_lock protects certain per page operations
-+ *
-+ * Semaphores
-+ * ----------
-+ * sesSem operations on smb session
-+ * tconSem operations on tree connection
-+ * fh_sem file handle reconnection operations
-+ *
-+ ****************************************************************************/
-+
-+#ifdef DECLARE_GLOBALS_HERE
-+#define GLOBAL_EXTERN
-+#else
-+#define GLOBAL_EXTERN extern
-+#endif
-+
-+/*
-+ * The list of servers that did not respond with NT LM 0.12.
-+ * This list helps improve performance and eliminate the messages indicating
-+ * that we had a communications error talking to the server in this list.
-+ */
-+GLOBAL_EXTERN struct servers_not_supported *NotSuppList; /*@z4a */
-+
-+/*
-+ * The following is a hash table of all the users we know about.
-+ */
-+GLOBAL_EXTERN struct smbUidInfo *GlobalUidList[UID_HASH];
-+
-+GLOBAL_EXTERN struct list_head GlobalServerList; /* BB not implemented yet */
-+GLOBAL_EXTERN struct list_head GlobalSMBSessionList;
-+GLOBAL_EXTERN struct list_head GlobalTreeConnectionList;
-+GLOBAL_EXTERN rwlock_t GlobalSMBSeslock; /* protects list inserts on 3 above */
-+
-+GLOBAL_EXTERN struct list_head GlobalOplock_Q;
-+
-+/*
-+ * Global transaction id (XID) information
-+ */
-+GLOBAL_EXTERN unsigned int GlobalCurrentXid; /* protected by GlobalMid_Sem */
-+GLOBAL_EXTERN unsigned int GlobalTotalActiveXid; /* prot by GlobalMid_Sem */
-+GLOBAL_EXTERN unsigned int GlobalMaxActiveXid; /* prot by GlobalMid_Sem */
-+GLOBAL_EXTERN spinlock_t GlobalMid_Lock; /* protects above and list operations */
-+ /* on midQ entries */
-+GLOBAL_EXTERN char Local_System_Name[15];
-+
-+/*
-+ * Global counters, updated atomically
-+ */
-+GLOBAL_EXTERN atomic_t sesInfoAllocCount;
-+GLOBAL_EXTERN atomic_t tconInfoAllocCount;
-+
-+GLOBAL_EXTERN atomic_t tcpSesReconnectCount;
-+GLOBAL_EXTERN atomic_t tconInfoReconnectCount;
-+
-+/* Various Debug counters to remove someday (BB) */
-+GLOBAL_EXTERN atomic_t bufAllocCount;
-+GLOBAL_EXTERN atomic_t midCount;
-+
-+/* Misc globals */
-+GLOBAL_EXTERN unsigned int multiuser_mount; /* if enabled allows new sessions
-+ to be established on existing mount if we
-+ have the uid/password or Kerberos credential
-+ or equivalent for current user */
-+GLOBAL_EXTERN unsigned int oplockEnabled;
-+GLOBAL_EXTERN unsigned int quotaEnabled;
-+GLOBAL_EXTERN unsigned int lookupCacheEnabled;
-+GLOBAL_EXTERN unsigned int extended_security; /* if on, session setup sent
-+ with more secure ntlmssp2 challenge/resp */
-+GLOBAL_EXTERN unsigned int ntlmv2_support; /* better optional password hash */
-+GLOBAL_EXTERN unsigned int sign_CIFS_PDUs; /* enable smb packet signing */
-+GLOBAL_EXTERN unsigned int linuxExtEnabled; /* enable Linux/Unix CIFS extensions */
-+
-diff -urN linux-2.4.29.old/fs/cifs/cifspdu.h linux-2.4.29/fs/cifs/cifspdu.h
---- linux-2.4.29.old/fs/cifs/cifspdu.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifspdu.h 2004-07-14 00:25:05.000000000 +0200
-@@ -0,0 +1,1793 @@
-+/*
-+ * fs/cifs/cifspdu.h
-+ *
-+ * Copyright (c) International Business Machines Corp., 2002
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * 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.1 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 _CIFSPDU_H
-+#define _CIFSPDU_H
-+
-+#include <net/sock.h>
-+
-+#define CIFS_PROT 0
-+#define BAD_PROT CIFS_PROT+1
-+
-+/* SMB command codes */
-+#define SMB_COM_CREATE_DIRECTORY 0x00
-+#define SMB_COM_DELETE_DIRECTORY 0x01
-+#define SMB_COM_CLOSE 0x04
-+#define SMB_COM_DELETE 0x06
-+#define SMB_COM_RENAME 0x07
-+#define SMB_COM_LOCKING_ANDX 0x24
-+#define SMB_COM_COPY 0x29
-+#define SMB_COM_READ_ANDX 0x2E
-+#define SMB_COM_WRITE_ANDX 0x2F
-+#define SMB_COM_TRANSACTION2 0x32
-+#define SMB_COM_TRANSACTION2_SECONDARY 0x33
-+#define SMB_COM_FIND_CLOSE2 0x34
-+#define SMB_COM_TREE_DISCONNECT 0x71
-+#define SMB_COM_NEGOTIATE 0x72
-+#define SMB_COM_SESSION_SETUP_ANDX 0x73
-+#define SMB_COM_LOGOFF_ANDX 0x74
-+#define SMB_COM_TREE_CONNECT_ANDX 0x75
-+#define SMB_COM_NT_TRANSACT 0xA0
-+#define SMB_COM_NT_TRANSACT_SECONDARY 0xA1
-+#define SMB_COM_NT_CREATE_ANDX 0xA2
-+#define SMB_COM_NT_RENAME 0xA5
-+
-+/* Transact2 subcommand codes */
-+#define TRANS2_OPEN 0x00
-+#define TRANS2_FIND_FIRST 0x01
-+#define TRANS2_FIND_NEXT 0x02
-+#define TRANS2_QUERY_FS_INFORMATION 0x03
-+#define TRANS2_QUERY_PATH_INFORMATION 0x05
-+#define TRANS2_SET_PATH_INFORMATION 0x06
-+#define TRANS2_QUERY_FILE_INFORMATION 0x07
-+#define TRANS2_SET_FILE_INFORMATION 0x08
-+#define TRANS2_GET_DFS_REFERRAL 0x10
-+#define TRANS2_REPORT_DFS_INCOSISTENCY 0x11
-+
-+/* NT Transact subcommand codes */
-+#define NT_TRANSACT_CREATE 0x01
-+#define NT_TRANSACT_IOCTL 0x02
-+#define NT_TRANSACT_SET_SECURITY_DESC 0x03
-+#define NT_TRANSACT_NOTIFY_CHANGE 0x04
-+#define NT_TRANSACT_RENAME 0x05
-+#define NT_TRANSACT_QUERY_SECURITY_DESC 0x06
-+#define NT_TRANSACT_GET_USER_QUOTA 0x07
-+#define NT_TRANSACT_SET_USER_QUOTA 0x08
-+
-+#define MAX_CIFS_HDR_SIZE 256 /* chained NTCreateXReadX will probably be biggest */
-+
-+/* internal cifs vfs structures */
-+/*****************************************************************
-+ * All constants go here
-+ *****************************************************************
-+ */
-+
-+/*
-+ * Starting value for maximum SMB size negotiation
-+ */
-+#define CIFS_MAX_MSGSIZE (4*4096)
-+
-+/*
-+ * Size of encrypted user password in bytes
-+ */
-+#define CIFS_ENCPWD_SIZE (16)
-+
-+/*
-+ * Size of the crypto key returned on the negotiate SMB in bytes
-+ */
-+#define CIFS_CRYPTO_KEY_SIZE (8)
-+
-+/*
-+ * Size of the session key (crypto key encrypted with the password
-+ */
-+#define CIFS_SESSION_KEY_SIZE (24)
-+
-+/*
-+ * Maximum user name length
-+ */
-+#define CIFS_UNLEN (20)
-+
-+/*
-+ * Flags on SMB open
-+ */
-+#define SMBOPEN_WRITE_THROUGH 0x4000
-+#define SMBOPEN_DENY_ALL 0x0010
-+#define SMBOPEN_DENY_WRITE 0x0020
-+#define SMBOPEN_DENY_READ 0x0030
-+#define SMBOPEN_DENY_NONE 0x0040
-+#define SMBOPEN_READ 0x0000
-+#define SMBOPEN_WRITE 0x0001
-+#define SMBOPEN_READWRITE 0x0002
-+#define SMBOPEN_EXECUTE 0x0003
-+
-+#define SMBOPEN_OCREATE 0x0010
-+#define SMBOPEN_OTRUNC 0x0002
-+#define SMBOPEN_OAPPEND 0x0001
-+
-+/*
-+ * SMB flag definitions
-+ */
-+#define SMBFLG_EXTD_LOCK 0x01 /* server supports lock-read write-unlock primitives */
-+#define SMBFLG_RCV_POSTED 0x02 /* obsolete */
-+#define SMBFLG_RSVD 0x04
-+#define SMBFLG_CASELESS 0x08 /* all pathnames treated as caseless (off implies case sensitive file handling requested) */
-+#define SMBFLG_CANONICAL_PATH_FORMAT 0x10 /* obsolete */
-+#define SMBFLG_OLD_OPLOCK 0x20 /* obsolete */
-+#define SMBFLG_OLD_OPLOCK_NOTIFY 0x40 /* obsolete */
-+#define SMBFLG_RESPONSE 0x80 /* this PDU is a response from server */
-+
-+/*
-+ * SMB flag2 definitions
-+ */
-+#define SMBFLG2_KNOWS_LONG_NAMES 0x0001 /* can send long (non-8.3) path names in response */
-+#define SMBFLG2_KNOWS_EAS 0x0002
-+#define SMBFLG2_SECURITY_SIGNATURE 0x0004
-+#define SMBFLG2_IS_LONG_NAME 0x0040
-+#define SMBFLG2_EXT_SEC 0x0800
-+#define SMBFLG2_DFS 0x1000
-+#define SMBFLG2_PAGING_IO 0x2000
-+#define SMBFLG2_ERR_STATUS 0x4000
-+#define SMBFLG2_UNICODE 0x8000
-+
-+/*
-+ * These are the file access permission bits defined in CIFS for the
-+ * NTCreateAndX as well as the level 0x107
-+ * TRANS2_QUERY_PATH_INFORMATION API. The level 0x107, SMB_QUERY_FILE_ALL_INFO
-+ * responds with the AccessFlags.
-+ * The AccessFlags specifies the access permissions a caller has to the
-+ * file and can have any suitable combination of the following values:
-+ */
-+
-+#define FILE_READ_DATA 0x00000001 /* Data can be read from the file */
-+#define FILE_WRITE_DATA 0x00000002 /* Data can be written to the file */
-+#define FILE_APPEND_DATA 0x00000004 /* Data can be appended to the file */
-+#define FILE_READ_EA 0x00000008 /* Extended attributes associated */
-+ /* with the file can be read */
-+#define FILE_WRITE_EA 0x00000010 /* Extended attributes associated */
-+ /* with the file can be written */
-+#define FILE_EXECUTE 0x00000020 /*Data can be read into memory from */
-+ /* the file using system paging I/O */
-+#define FILE_DELETE_CHILD 0x00000040
-+#define FILE_READ_ATTRIBUTES 0x00000080 /* Attributes associated with the */
-+ /* file can be read */
-+#define FILE_WRITE_ATTRIBUTES 0x00000100 /* Attributes associated with the */
-+ /* file can be written */
-+#define DELETE 0x00010000 /* The file can be deleted */
-+#define READ_CONTROL 0x00020000 /* The access control list and */
-+ /* ownership associated with the */
-+ /* file can be read */
-+#define WRITE_DAC 0x00040000 /* The access control list and */
-+ /* ownership associated with the */
-+ /* file can be written. */
-+#define WRITE_OWNER 0x00080000 /* Ownership information associated */
-+ /* with the file can be written */
-+#define SYNCHRONIZE 0x00100000 /* The file handle can waited on to */
-+ /* synchronize with the completion */
-+ /* of an input/output request */
-+#define GENERIC_ALL 0x10000000
-+#define GENERIC_EXECUTE 0x20000000
-+#define GENERIC_WRITE 0x40000000
-+#define GENERIC_READ 0x80000000
-+ /* In summary - Relevant file */
-+ /* access flags from CIFS are */
-+ /* file_read_data, file_write_data */
-+ /* file_execute, file_read_attributes */
-+ /* write_dac, and delete. */
-+
-+/*
-+ * Invalid readdir handle
-+ */
-+#define CIFS_NO_HANDLE 0xFFFF
-+
-+/* IPC$ in ASCII */
-+#define CIFS_IPC_RESOURCE "\x49\x50\x43\x24"
-+
-+/* IPC$ in Unicode */
-+#define CIFS_IPC_UNICODE_RESOURCE "\x00\x49\x00\x50\x00\x43\x00\x24\x00\x00"
-+
-+/* Unicode Null terminate 2 bytes of 0 */
-+#define UNICODE_NULL "\x00\x00"
-+#define ASCII_NULL 0x00
-+
-+/*
-+ * Server type values (returned on EnumServer API
-+ */
-+#define CIFS_SV_TYPE_DC 0x00000008
-+#define CIFS_SV_TYPE_BACKDC 0x00000010
-+
-+/*
-+ * Alias type flags (From EnumAlias API call
-+ */
-+#define CIFS_ALIAS_TYPE_FILE 0x0001
-+#define CIFS_SHARE_TYPE_FILE 0x0000
-+
-+/*
-+ * File Attribute flags
-+ */
-+#define ATTR_READONLY 0x0001
-+#define ATTR_HIDDEN 0x0002
-+#define ATTR_SYSTEM 0x0004
-+#define ATTR_VOLUME 0x0008
-+#define ATTR_DIRECTORY 0x0010
-+#define ATTR_ARCHIVE 0x0020
-+#define ATTR_DEVICE 0x0040
-+#define ATTR_NORMAL 0x0080
-+#define ATTR_TEMPORARY 0x0100
-+#define ATTR_SPARSE 0x0200
-+#define ATTR_REPARSE 0x0400
-+#define ATTR_COMPRESSED 0x0800
-+#define ATTR_OFFLINE 0x1000 /* ie file not immediately available - offline storage */
-+#define ATTR_NOT_CONTENT_INDEXED 0x2000
-+#define ATTR_ENCRYPTED 0x4000
-+#define ATTR_POSIX_SEMANTICS 0x01000000
-+#define ATTR_BACKUP_SEMANTICS 0x02000000
-+#define ATTR_DELETE_ON_CLOSE 0x04000000
-+#define ATTR_SEQUENTIAL_SCAN 0x08000000
-+#define ATTR_RANDOM_ACCESS 0x10000000
-+#define ATTR_NO_BUFFERING 0x20000000
-+#define ATTR_WRITE_THROUGH 0x80000000
-+
-+/* ShareAccess flags */
-+#define FILE_NO_SHARE 0x00000000
-+#define FILE_SHARE_READ 0x00000001
-+#define FILE_SHARE_WRITE 0x00000002
-+#define FILE_SHARE_DELETE 0x00000004
-+#define FILE_SHARE_ALL 0x00000007
-+
-+/* CreateDisposition flags */
-+#define FILE_SUPERSEDE 0x00000000
-+#define FILE_OPEN 0x00000001
-+#define FILE_CREATE 0x00000002
-+#define FILE_OPEN_IF 0x00000003
-+#define FILE_OVERWRITE 0x00000004
-+#define FILE_OVERWRITE_IF 0x00000005
-+
-+/* CreateOptions */
-+#define CREATE_NOT_FILE 0x00000001 /* if set must not be file */
-+#define CREATE_WRITE_THROUGH 0x00000002
-+#define CREATE_NOT_DIR 0x00000040 /* if set must not be directory */
-+#define CREATE_RANDOM_ACCESS 0x00000800
-+#define CREATE_DELETE_ON_CLOSE 0x00001000
-+#define OPEN_REPARSE_POINT 0x00200000
-+
-+/* ImpersonationLevel flags */
-+#define SECURITY_ANONYMOUS 0
-+#define SECURITY_IDENTIFICATION 1
-+#define SECURITY_IMPERSONATION 2
-+#define SECURITY_DELEGATION 3
-+
-+/* SecurityFlags */
-+#define SECURITY_CONTEXT_TRACKING 0x01
-+#define SECURITY_EFFECTIVE_ONLY 0x02
-+
-+/*
-+ * Default PID value, used in all SMBs where the PID is not important
-+ */
-+#define CIFS_DFT_PID 0x1234
-+
-+/*
-+ * We use the same routine for Copy and Move SMBs. This flag is used to
-+ * distinguish
-+ */
-+#define CIFS_COPY_OP 1
-+#define CIFS_RENAME_OP 2
-+
-+#define GETU16(var) (*((__u16 *)var)) /* BB check for endian issues */
-+#define GETU32(var) (*((__u32 *)var)) /* BB check for endian issues */
-+
-+#pragma pack(1)
-+
-+struct smb_hdr {
-+ __u32 smb_buf_length; /* big endian on wire *//* BB length is only two or three bytes - with one or two byte type preceding it but that is always zero - we could mask the type byte off just in case BB */
-+ __u8 Protocol[4];
-+ __u8 Command;
-+ union {
-+ struct {
-+ __u8 ErrorClass;
-+ __u8 Reserved;
-+ __u16 Error; /* note: treated as little endian (le) on wire */
-+ } DosError;
-+ __u32 CifsError; /* note: le */
-+ } Status;
-+ __u8 Flags;
-+ __u16 Flags2; /* note: le */
-+ __u16 PidHigh; /* note: le */
-+ union {
-+ struct {
-+ __u32 SequenceNumber; /* le */
-+ __u32 Reserved; /* zero */
-+ } Sequence;
-+ __u8 SecuritySignature[8]; /* le */
-+ } Signature;
-+ __u8 pad[2];
-+ __u16 Tid;
-+ __u16 Pid; /* note: le */
-+ __u16 Uid;
-+ __u16 Mid;
-+ __u8 WordCount;
-+};
-+/* given a pointer to an smb_hdr retrieve the value of byte count */
-+#define BCC(smb_var) ( *(__u16 *)((char *)smb_var + sizeof(struct smb_hdr) + (2* smb_var->WordCount) ) )
-+
-+/* given a pointer to an smb_hdr retrieve the pointer to the byte area */
-+#define pByteArea(smb_var) ((char *)smb_var + sizeof(struct smb_hdr) + (2* smb_var->WordCount) + 2 )
-+
-+/*
-+ * Computer Name Length
-+ */
-+#define CNLEN 15
-+
-+/*
-+ * Share Name Length @S8A
-+ * Note: This length is limited by the SMB used to get @S8A
-+ * the Share info. NetShareEnum only returns 13 @S8A
-+ * chars, including the null termination. @S8A
-+ */
-+#define SNLEN 12 /*@S8A */
-+
-+/*
-+ * Comment Length
-+ */
-+#define MAXCOMMENTLEN 40
-+
-+/*
-+ * The OS/2 maximum path name
-+ */
-+#define MAX_PATHCONF 256
-+
-+/*
-+ * SMB frame definitions (following must be packed structs)
-+ * See the SNIA CIFS Specification for details.
-+ *
-+ * The Naming convention is the lower case version of the
-+ * smb command code name for the struct and this is typedef to the
-+ * uppercase version of the same name with the prefix SMB_ removed
-+ * for brevity. Although typedefs are not commonly used for
-+ * structure definitions in the Linux kernel, their use in the
-+ * CIFS standards document, which this code is based on, may
-+ * make this one of the cases where typedefs for structures make
-+ * sense to improve readability for readers of the standards doc.
-+ * Typedefs can always be removed later if they are too distracting
-+ * and they are only used for the CIFSs PDUs themselves, not
-+ * internal cifs vfs structures
-+ *
-+ */
-+
-+typedef struct negotiate_req {
-+ struct smb_hdr hdr; /* wct = 0 */
-+ __u16 ByteCount;
-+ unsigned char DialectsArray[1];
-+} NEGOTIATE_REQ;
-+
-+typedef struct negotiate_rsp {
-+ struct smb_hdr hdr; /* wct = 17 */
-+ __u16 DialectIndex;
-+ __u8 SecurityMode;
-+ __u16 MaxMpxCount;
-+ __u16 MaxNumberVcs;
-+ __u32 MaxBufferSize;
-+ __u32 MaxRawSize;
-+ __u32 SessionKey;
-+ __u32 Capabilities; /* see below */
-+ __u32 SystemTimeLow;
-+ __u32 SystemTimeHigh;
-+ __u16 ServerTimeZone;
-+ __u8 EncryptionKeyLength;
-+ __u16 ByteCount;
-+ union {
-+ unsigned char EncryptionKey[1]; /* if cap extended security is off */
-+ /* followed by Domain name - if extended security is off */
-+ /* followed by 16 bytes of server GUID */
-+ /* followed by security blob if cap_extended_security negotiated */
-+ struct {
-+ unsigned char GUID[16];
-+ unsigned char SecurityBlob[1];
-+ } extended_response;
-+ } u;
-+} NEGOTIATE_RSP;
-+
-+/* SecurityMode bits */
-+#define SECMODE_USER 0x01 /* off indicates share level security */
-+#define SECMODE_PW_ENCRYPT 0x02
-+#define SECMODE_SIGN_ENABLED 0x04 /* SMB security signatures enabled */
-+#define SECMODE_SIGN_REQUIRED 0x08 /* SMB security signatures required */
-+
-+/* Negotiate response Capabilities */
-+#define CAP_RAW_MODE 0x00000001
-+#define CAP_MPX_MODE 0x00000002
-+#define CAP_UNICODE 0x00000004
-+#define CAP_LARGE_FILES 0x00000008
-+#define CAP_NT_SMBS 0x00000010 /* implies CAP_NT_FIND */
-+#define CAP_RPC_REMOTE_APIS 0x00000020
-+#define CAP_STATUS32 0x00000040
-+#define CAP_LEVEL_II_OPLOCKS 0x00000080
-+#define CAP_LOCK_AND_READ 0x00000100
-+#define CAP_NT_FIND 0x00000200
-+#define CAP_DFS 0x00001000
-+#define CAP_INFOLEVEL_PASSTHRU 0x00002000
-+#define CAP_LARGE_READ_X 0x00004000
-+#define CAP_LARGE_WRITE_X 0x00008000
-+#define CAP_UNIX 0x00800000
-+#define CAP_RESERVED 0x02000000
-+#define CAP_BULK_TRANSFER 0x20000000
-+#define CAP_COMPRESSED_DATA 0x40000000
-+#define CAP_EXTENDED_SECURITY 0x80000000
-+
-+typedef union smb_com_session_setup_andx {
-+ struct { /* request format */
-+ struct smb_hdr hdr; /* wct = 12 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 MaxBufferSize;
-+ __u16 MaxMpxCount;
-+ __u16 VcNumber;
-+ __u32 SessionKey;
-+ __u16 SecurityBlobLength;
-+ __u32 Reserved;
-+ __u32 Capabilities; /* see below */
-+ __u16 ByteCount;
-+ unsigned char SecurityBlob[1]; /* followed by */
-+ /* STRING NativeOS */
-+ /* STRING NativeLanMan */
-+ } req; /* NTLM request format (with extended security */
-+
-+ struct { /* request format */
-+ struct smb_hdr hdr; /* wct = 13 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 MaxBufferSize;
-+ __u16 MaxMpxCount;
-+ __u16 VcNumber;
-+ __u32 SessionKey;
-+ __u16 CaseInsensitivePasswordLength; /* ASCII password length */
-+ __u16 CaseSensitivePasswordLength; /* Unicode password length */
-+ __u32 Reserved; /* see below */
-+ __u32 Capabilities;
-+ __u16 ByteCount;
-+ unsigned char CaseInsensitivePassword[1]; /* followed by: */
-+ /* unsigned char * CaseSensitivePassword; */
-+ /* STRING AccountName */
-+ /* STRING PrimaryDomain */
-+ /* STRING NativeOS */
-+ /* STRING NativeLanMan */
-+ } req_no_secext; /* NTLM request format (without extended security */
-+
-+ struct { /* default (NTLM) response format */
-+ struct smb_hdr hdr; /* wct = 4 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 Action; /* see below */
-+ __u16 SecurityBlobLength;
-+ __u16 ByteCount;
-+ unsigned char SecurityBlob[1]; /* followed by */
-+/* unsigned char * NativeOS; */
-+/* unsigned char * NativeLanMan; */
-+/* unsigned char * PrimaryDomain; */
-+ } resp; /* NTLM response format (with or without extended security */
-+
-+ struct { /* request format */
-+ struct smb_hdr hdr; /* wct = 10 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 MaxBufferSize;
-+ __u16 MaxMpxCount;
-+ __u16 VcNumber;
-+ __u32 SessionKey;
-+ __u16 PassswordLength;
-+ __u32 Reserved;
-+ __u16 ByteCount;
-+ unsigned char AccountPassword[1]; /* followed by */
-+ /* STRING AccountName */
-+ /* STRING PrimaryDomain */
-+ /* STRING NativeOS */
-+ /* STRING NativeLanMan */
-+ } old_req; /* pre-NTLM (LANMAN2.1) request format */
-+
-+ struct { /* default (NTLM) response format */
-+ struct smb_hdr hdr; /* wct = 3 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 Action; /* see below */
-+ __u16 ByteCount;
-+ unsigned char NativeOS[1]; /* followed by */
-+/* unsigned char * NativeLanMan; */
-+/* unsigned char * PrimaryDomain; */
-+ } old_resp; /* pre-NTLM (LANMAN2.1) response format */
-+} SESSION_SETUP_ANDX;
-+
-+#define CIFS_NETWORK_OPSYS "CIFS VFS Client for Linux"
-+
-+/* Capabilities bits (for NTLM SessSetup request) */
-+#define CAP_UNICODE 0x00000004
-+#define CAP_LARGE_FILES 0x00000008
-+#define CAP_NT_SMBS 0x00000010
-+#define CAP_STATUS32 0x00000040
-+#define CAP_LEVEL_II_OPLOCKS 0x00000080
-+#define CAP_NT_FIND 0x00000200 /* reserved should be zero (presumably because NT_SMBs implies the same thing) */
-+#define CAP_BULK_TRANSFER 0x20000000
-+#define CAP_EXTENDED_SECURITY 0x80000000
-+
-+/* Action bits */
-+#define GUEST_LOGIN 1
-+
-+typedef struct smb_com_tconx_req {
-+ struct smb_hdr hdr; /* wct = 4 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 Flags; /* see below */
-+ __u16 PasswordLength;
-+ __u16 ByteCount;
-+ unsigned char Password[1]; /* followed by */
-+/* STRING Path *//* \\server\share name */
-+ /* STRING Service */
-+} TCONX_REQ;
-+
-+typedef struct smb_com_tconx_rsp {
-+ struct smb_hdr hdr; /* wct = 3 *//* note that Win2000 has sent wct=7 in some cases on responses. Four unspecified words followed OptionalSupport */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 OptionalSupport; /* see below */
-+ __u16 ByteCount;
-+ unsigned char Service[1]; /* always ASCII, not Unicode */
-+ /* STRING NativeFileSystem */
-+} TCONX_RSP;
-+
-+/* tree connect Flags */
-+#define DISCONNECT_TID 0x0001
-+#define TCON_EXTENDED_SECINFO 0x0008
-+/* OptionalSupport bits */
-+#define SMB_SUPPORT_SEARCH_BITS 0x0001 /* must have bits (exclusive searches suppt. */
-+#define SMB_SHARE_IS_IN_DFS 0x0002
-+
-+typedef struct smb_com_logoff_andx_req {
-+
-+ struct smb_hdr hdr; /* wct = 2 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 ByteCount;
-+} LOGOFF_ANDX_REQ;
-+
-+typedef struct smb_com_logoff_andx_rsp {
-+ struct smb_hdr hdr; /* wct = 2 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 ByteCount;
-+} LOGOFF_ANDX_RSP;
-+
-+typedef union smb_com_tree_disconnect { /* as an altetnative can use flag on tree_connect PDU to effect disconnect *//* probably the simplest SMB PDU */
-+ struct {
-+ struct smb_hdr hdr; /* wct = 0 */
-+ __u16 ByteCount; /* bcc = 0 */
-+ } req;
-+ struct {
-+ struct smb_hdr hdr; /* wct = 0 */
-+ __u16 ByteCount; /* bcc = 0 */
-+ } resp;
-+} TREE_DISCONNECT;
-+
-+typedef struct smb_com_close_req {
-+ struct smb_hdr hdr; /* wct = 3 */
-+ __u16 FileID;
-+ __u32 LastWriteTime; /* should be zero */
-+ __u16 ByteCount; /* 0 */
-+} CLOSE_REQ;
-+
-+typedef struct smb_com_close_rsp {
-+ struct smb_hdr hdr; /* wct = 0 */
-+ __u16 ByteCount; /* bct = 0 */
-+} CLOSE_RSP;
-+
-+typedef struct smb_com_findclose_req {
-+ struct smb_hdr hdr; /* wct = 1 */
-+ __u16 FileID;
-+ __u16 ByteCount; /* 0 */
-+} FINDCLOSE_REQ;
-+
-+/* OpenFlags */
-+#define REQ_OPLOCK 0x00000002
-+#define REQ_BATCHOPLOCK 0x00000004
-+#define REQ_OPENDIRONLY 0x00000008
-+
-+typedef struct smb_com_open_req { /* also handles create */
-+ struct smb_hdr hdr; /* wct = 24 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u8 Reserved; /* Must Be Zero */
-+ __u16 NameLength;
-+ __u32 OpenFlags;
-+ __u32 RootDirectoryFid;
-+ __u32 DesiredAccess;
-+ __u64 AllocationSize;
-+ __u32 FileAttributes;
-+ __u32 ShareAccess;
-+ __u32 CreateDisposition;
-+ __u32 CreateOptions;
-+ __u32 ImpersonationLevel;
-+ __u8 SecurityFlags;
-+ __u16 ByteCount;
-+ char fileName[1];
-+} OPEN_REQ;
-+
-+/* open response: oplock levels */
-+#define OPLOCK_NONE 0
-+#define OPLOCK_EXCLUSIVE 1
-+#define OPLOCK_BATCH 2
-+#define OPLOCK_READ 3 /* level 2 oplock */
-+
-+/* open response for CreateAction shifted left */
-+#define CIFS_CREATE_ACTION 0x20000 /* file created */
-+
-+typedef struct smb_com_open_rsp {
-+ struct smb_hdr hdr; /* wct = 34 BB */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u8 OplockLevel;
-+ __u16 Fid;
-+ __u32 CreateAction;
-+ __u64 CreationTime;
-+ __u64 LastAccessTime;
-+ __u64 LastWriteTime;
-+ __u64 ChangeTime;
-+ __u32 FileAttributes;
-+ __u64 AllocationSize;
-+ __u64 EndOfFile;
-+ __u16 FileType;
-+ __u16 DeviceState;
-+ __u8 DirectoryFlag;
-+ __u16 ByteCount; /* bct = 0 */
-+} OPEN_RSP;
-+
-+typedef struct smb_com_write_req {
-+ struct smb_hdr hdr; /* wct = 14 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 Fid;
-+ __u32 OffsetLow;
-+ __u32 Reserved;
-+ __u16 WriteMode;
-+ __u16 Remaining;
-+ __u16 DataLengthHigh;
-+ __u16 DataLengthLow;
-+ __u16 DataOffset;
-+ __u32 OffsetHigh;
-+ __u16 ByteCount;
-+ __u8 Pad; /* BB check for whether padded to DWORD boundary and optimum performance here */
-+ char Data[1];
-+} WRITE_REQ;
-+
-+typedef struct smb_com_write_rsp {
-+ struct smb_hdr hdr; /* wct = 6 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 Count;
-+ __u16 Remaining;
-+ __u32 Reserved;
-+ __u16 ByteCount;
-+} WRITE_RSP;
-+
-+typedef struct smb_com_read_req {
-+ struct smb_hdr hdr; /* wct = 12 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 Fid;
-+ __u32 OffsetLow;
-+ __u16 MaxCount;
-+ __u16 MinCount; /* obsolete */
-+ __u32 MaxCountHigh;
-+ __u16 Remaining;
-+ __u32 OffsetHigh;
-+ __u16 ByteCount;
-+} READ_REQ;
-+
-+typedef struct smb_com_read_rsp {
-+ struct smb_hdr hdr; /* wct = 12 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 Remaining;
-+ __u16 DataCompactionMode;
-+ __u16 Reserved;
-+ __u16 DataLength;
-+ __u16 DataOffset;
-+ __u16 DataLengthHigh;
-+ __u64 Reserved2;
-+ __u16 ByteCount;
-+ __u8 Pad; /* BB check for whether padded to DWORD boundary and optimum performance here */
-+ char Data[1];
-+} READ_RSP;
-+
-+typedef struct locking_andx_range {
-+ __u16 Pid;
-+ __u16 Pad;
-+ __u32 OffsetHigh;
-+ __u32 OffsetLow;
-+ __u32 LengthHigh;
-+ __u32 LengthLow;
-+} LOCKING_ANDX_RANGE;
-+
-+#define LOCKING_ANDX_SHARED_LOCK 0x01
-+#define LOCKING_ANDX_OPLOCK_RELEASE 0x02
-+#define LOCKING_ANDX_CHANGE_LOCKTYPE 0x04
-+#define LOCKING_ANDX_CANCEL_LOCK 0x08
-+#define LOCKING_ANDX_LARGE_FILES 0x10 /* always on for us */
-+
-+typedef struct smb_com_lock_req {
-+ struct smb_hdr hdr; /* wct = 8 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 Fid;
-+ __u8 LockType;
-+ __u8 OplockLevel;
-+ __u32 Timeout;
-+ __u16 NumberOfUnlocks;
-+ __u16 NumberOfLocks;
-+ __u16 ByteCount;
-+ LOCKING_ANDX_RANGE Locks[1];
-+} LOCK_REQ;
-+
-+typedef struct smb_com_lock_rsp {
-+ struct smb_hdr hdr; /* wct = 2 */
-+ __u8 AndXCommand;
-+ __u8 AndXReserved;
-+ __u16 AndXOffset;
-+ __u16 ByteCount;
-+} LOCK_RSP;
-+
-+typedef struct smb_com_rename_req {
-+ struct smb_hdr hdr; /* wct = 1 */
-+ __u16 SearchAttributes; /* target file attributes */
-+ __u16 ByteCount;
-+ __u8 BufferFormat; /* 4 = ASCII or Unicode */
-+ unsigned char OldFileName[1];
-+ /* followed by __u8 BufferFormat2 */
-+ /* followed by NewFileName */
-+} RENAME_REQ;
-+
-+ /* copy request flags */
-+#define COPY_MUST_BE_FILE 0x0001
-+#define COPY_MUST_BE_DIR 0x0002
-+#define COPY_TARGET_MODE_ASCII 0x0004 /* if not set, binary */
-+#define COPY_SOURCE_MODE_ASCII 0x0008 /* if not set, binary */
-+#define COPY_VERIFY_WRITES 0x0010
-+#define COPY_TREE 0x0020
-+
-+typedef struct smb_com_copy_req {
-+ struct smb_hdr hdr; /* wct = 3 */
-+ __u16 Tid2;
-+ __u16 OpenFunction;
-+ __u16 Flags;
-+ __u16 ByteCount;
-+ __u8 BufferFormat; /* 4 = ASCII or Unicode */
-+ unsigned char OldFileName[1];
-+ /* followed by __u8 BufferFormat2 */
-+ /* followed by NewFileName string */
-+} COPY_REQ;
-+
-+typedef struct smb_com_copy_rsp {
-+ struct smb_hdr hdr; /* wct = 1 */
-+ __u16 CopyCount; /* number of files copied */
-+ __u16 ByteCount; /* may be zero */
-+ __u8 BufferFormat; /* 0x04 - only present if errored file follows */
-+ unsigned char ErrorFileName[1]; /* only present if error in copy */
-+} COPY_RSP;
-+
-+#define CREATE_HARD_LINK 0x103
-+#define MOVEFILE_COPY_ALLOWED 0x0002
-+#define MOVEFILE_REPLACE_EXISTING 0x0001
-+
-+typedef struct smb_com_nt_rename_req { /* A5 - also used for create hardlink */
-+ struct smb_hdr hdr; /* wct = 4 */
-+ __u16 SearchAttributes; /* target file attributes */
-+ __u16 Flags; /* spec says Information Level */
-+ __u32 ClusterCount;
-+ __u16 ByteCount;
-+ __u8 BufferFormat; /* 4 = ASCII or Unicode */
-+ unsigned char OldFileName[1];
-+ /* followed by __u8 BufferFormat2 */
-+ /* followed by NewFileName */
-+} NT_RENAME_REQ;
-+
-+typedef struct smb_com_rename_rsp {
-+ struct smb_hdr hdr; /* wct = 0 */
-+ __u16 ByteCount; /* bct = 0 */
-+} RENAME_RSP;
-+
-+typedef struct smb_com_delete_file_req {
-+ struct smb_hdr hdr; /* wct = 1 */
-+ __u16 SearchAttributes;
-+ __u16 ByteCount;
-+ __u8 BufferFormat; /* 4 = ASCII */
-+ unsigned char fileName[1];
-+} DELETE_FILE_REQ;
-+
-+typedef struct smb_com_delete_file_rsp {
-+ struct smb_hdr hdr; /* wct = 0 */
-+ __u16 ByteCount; /* bct = 0 */
-+} DELETE_FILE_RSP;
-+
-+typedef struct smb_com_delete_directory_req {
-+ struct smb_hdr hdr; /* wct = 0 */
-+ __u16 ByteCount;
-+ __u8 BufferFormat; /* 4 = ASCII */
-+ unsigned char DirName[1];
-+} DELETE_DIRECTORY_REQ;
-+
-+typedef struct smb_com_delete_directory_rsp {
-+ struct smb_hdr hdr; /* wct = 0 */
-+ __u16 ByteCount; /* bct = 0 */
-+} DELETE_DIRECTORY_RSP;
-+
-+typedef struct smb_com_create_directory_req {
-+ struct smb_hdr hdr; /* wct = 0 */
-+ __u16 ByteCount;
-+ __u8 BufferFormat; /* 4 = ASCII */
-+ unsigned char DirName[1];
-+} CREATE_DIRECTORY_REQ;
-+
-+typedef struct smb_com_create_directory_rsp {
-+ struct smb_hdr hdr; /* wct = 0 */
-+ __u16 ByteCount; /* bct = 0 */
-+} CREATE_DIRECTORY_RSP;
-+
-+/***************************************************/
-+/* NT Transact structure defintions follow */
-+/* Currently only ioctl and notify are implemented */
-+/***************************************************/
-+typedef struct smb_com_transaction_ioctl_req {
-+ struct smb_hdr hdr; /* wct = 23 */
-+ __u8 MaxSetupCount;
-+ __u16 Reserved;
-+ __u32 TotalParameterCount;
-+ __u32 TotalDataCount;
-+ __u32 MaxParameterCount;
-+ __u32 MaxDataCount;
-+ __u32 ParameterCount;
-+ __u32 ParameterOffset;
-+ __u32 DataCount;
-+ __u32 DataOffset;
-+ __u8 SetupCount; /* four setup words follow subcommand */
-+ /* SNIA spec incorrectly included spurious pad here */
-+ __u16 SubCommand;/* 2 = IOCTL/FSCTL */
-+ __u32 FunctionCode;
-+ __u16 Fid;
-+ __u8 IsFsctl; /* 1 = File System Control, 0 = device control (IOCTL)*/
-+ __u8 IsRootFlag; /* 1 = apply command to root of share (must be DFS share)*/
-+ __u16 ByteCount;
-+ __u8 Pad[3];
-+ __u8 Data[1];
-+} TRANSACT_IOCTL_REQ;
-+
-+typedef struct smb_com_transaction_ioctl_rsp {
-+ struct smb_hdr hdr; /* wct = 19 */
-+ __u8 Reserved[3];
-+ __u32 TotalParameterCount;
-+ __u32 TotalDataCount;
-+ __u32 ParameterCount;
-+ __u32 ParameterOffset;
-+ __u32 ParameterDisplacement;
-+ __u32 DataCount;
-+ __u32 DataOffset;
-+ __u32 DataDisplacement;
-+ __u8 SetupCount; /* 1 */
-+ __u16 ReturnedDataLen;
-+ __u16 ByteCount;
-+ __u8 Pad[3];
-+} TRANSACT_IOCTL_RSP;
-+
-+typedef struct smb_com_transaction_change_notify_req {
-+ struct smb_hdr hdr; /* wct = 23 */
-+ __u8 MaxSetupCount;
-+ __u16 Reserved;
-+ __u32 TotalParameterCount;
-+ __u32 TotalDataCount;
-+ __u32 MaxParameterCount;
-+ __u32 MaxDataCount;
-+ __u32 ParameterCount;
-+ __u32 ParameterOffset;
-+ __u32 DataCount;
-+ __u32 DataOffset;
-+ __u8 SetupCount; /* four setup words follow subcommand */
-+ /* SNIA spec incorrectly included spurious pad here */
-+ __u16 SubCommand;/* 4 = Change Notify */
-+ __u32 CompletionFilter; /* operation to monitor */
-+ __u16 Fid;
-+ __u8 WatchTree; /* 1 = Monitor subdirectories */
-+ __u8 Reserved2;
-+ __u16 ByteCount;
-+/* __u8 Pad[3];*/
-+/* __u8 Data[1];*/
-+} TRANSACT_CHANGE_NOTIFY_REQ;
-+
-+typedef struct smb_com_transaction_change_notify_rsp {
-+ struct smb_hdr hdr; /* wct = 18 */
-+ __u8 Reserved[3];
-+ __u32 TotalParameterCount;
-+ __u32 TotalDataCount;
-+ __u32 ParameterCount;
-+ __u32 ParameterOffset;
-+ __u32 ParameterDisplacement;
-+ __u32 DataCount;
-+ __u32 DataOffset;
-+ __u32 DataDisplacement;
-+ __u8 SetupCount; /* 0 */
-+ __u16 ByteCount;
-+ /* __u8 Pad[3]; */
-+} TRANSACT_CHANGE_NOTIFY_RSP;
-+/* Completion Filter flags for Notify */
-+#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
-+#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
-+#define FILE_NOTIFY_CHANGE_NAME 0x00000003
-+#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
-+#define FILE_NOTIFY_CHANGE_SIZE 0x00000008
-+#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
-+#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
-+#define FILE_NOTIFY_CHANGE_CREATION 0x00000040
-+#define FILE_NOTIFY_CHANGE_EA 0x00000080
-+#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100
-+#define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
-+#define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
-+#define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
-+
-+#define FILE_ACTION_ADDED 0x00000001
-+#define FILE_ACTION_REMOVED 0x00000002
-+#define FILE_ACTION_MODIFIED 0x00000003
-+#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004
-+#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005
-+#define FILE_ACTION_ADDED_STREAM 0x00000006
-+#define FILE_ACTION_REMOVED_STREAM 0x00000007
-+#define FILE_ACTION_MODIFIED_STREAM 0x00000008
-+
-+/* response contains array of the following structures */
-+struct file_notify_information {
-+ __u32 NextEntryOffset;
-+ __u32 Action;
-+ __u32 FileNameLength;
-+ __u8 FileName[1];
-+};
-+
-+struct reparse_data {
-+ __u32 ReparseTag;
-+ __u16 ReparseDataLength;
-+ __u16 Reserved;
-+ __u16 AltNameOffset;
-+ __u16 AltNameLen;
-+ __u16 TargetNameOffset;
-+ __u16 TargetNameLen;
-+ char LinkNamesBuf[1];
-+};
-+
-+struct cifs_quota_data {
-+ __u32 rsrvd1; /* 0 */
-+ __u32 sid_size;
-+ __u64 rsrvd2; /* 0 */
-+ __u64 space_used;
-+ __u64 soft_limit;
-+ __u64 hard_limit;
-+ char sid[1]; /* variable size? */
-+};
-+
-+/* quota sub commands */
-+#define QUOTA_LIST_CONTINUE 0
-+#define QUOTA_LIST_START 0x100
-+#define QUOTA_FOR_SID 0x101
-+
-+typedef union smb_com_transaction2 {
-+ struct {
-+ struct smb_hdr hdr; /* wct = 14+ */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 MaxParameterCount;
-+ __u16 MaxDataCount;
-+ __u8 MaxSetupCount;
-+ __u8 Reserved;
-+ __u16 Flags;
-+ __u32 Timeout;
-+ __u16 Reserved2;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u8 SetupCount;
-+ __u8 Reserved3;
-+ __u16 SubCommand; /* 1st setup word - can be followed by SetupCount words */
-+ __u16 ByteCount; /* careful - setupcount is not always one */
-+ } req;
-+ struct {
-+ struct smb_hdr hdr; /* wct = 0 */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 Reserved;
-+ __u16 ParameterCount;
-+ __u16 ParamterOffset;
-+ __u16 ParameterDisplacement;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u16 DataDisplacement;
-+ __u8 SetupCount;
-+ __u8 Reserved1; /* should be zero setup words following */
-+ __u16 ByteCount;
-+ __u16 Reserved2; /* parameter word reserved - present for infolevels > 100 */
-+ /* data area follows */
-+ } resp;
-+} TRANSACTION2;
-+
-+/* PathInfo/FileInfo infolevels */
-+#define SMB_INFO_STANDARD 1
-+#define SMB_INFO_QUERY_EAS_FROM_LIST 3
-+#define SMB_INFO_QUERY_ALL_EAS 4
-+#define SMB_INFO_IS_NAME_VALID 6
-+#define SMB_QUERY_FILE_BASIC_INFO 0x101
-+#define SMB_QUERY_FILE_STANDARD_INFO 0x102
-+#define SMB_QUERY_FILE_EA_INFO 0x103
-+#define SMB_QUERY_FILE_NAME_INFO 0x104
-+#define SMB_QUERY_FILE_ALLOCATION_INFO 0x105
-+#define SMB_QUERY_FILE_END_OF_FILEINFO 0x106
-+#define SMB_QUERY_FILE_ALL_INFO 0x107
-+#define SMB_QUERY_ALT_NAME_INFO 0x108
-+#define SMB_QUERY_FILE_STREAM_INFO 0x109
-+#define SMB_QUERY_FILE_COMPRESSION_INFO 0x10B
-+#define SMB_QUERY_FILE_UNIX_BASIC 0x200
-+#define SMB_QUERY_FILE_UNIX_LINK 0x201
-+
-+#define SMB_SET_FILE_BASIC_INFO 0x101
-+#define SMB_SET_FILE_DISPOSITION_INFO 0x102
-+#define SMB_SET_FILE_ALLOCATION_INFO 0x103
-+#define SMB_SET_FILE_END_OF_FILE_INFO 0x104
-+#define SMB_SET_FILE_UNIX_BASIC 0x200
-+#define SMB_SET_FILE_UNIX_LINK 0x201
-+#define SMB_SET_FILE_UNIX_HLINK 0x203
-+#define SMB_SET_FILE_BASIC_INFO2 0x3ec
-+#define SMB_SET_FILE_RENAME_INFORMATION 0x3f2
-+#define SMB_FILE_ALL_INFO2 0x3fa
-+#define SMB_SET_FILE_ALLOCATION_INFO2 0x3fb
-+#define SMB_SET_FILE_END_OF_FILE_INFO2 0x3fc
-+#define SMB_FILE_MOVE_CLUSTER_INFO 0x407
-+#define SMB_FILE_QUOTA_INFO 0x408
-+#define SMB_FILE_REPARSEPOINT_INFO 0x409
-+#define SMB_FILE_MAXIMUM_INFO 0x40d
-+
-+/* Find File infolevels */
-+#define SMB_FIND_FILE_DIRECTORY_INFO 0x101
-+#define SMB_FIND_FILE_FULL_DIRECTORY_INFO 0x102
-+#define SMB_FIND_FILE_NAMES_INFO 0x103
-+#define SMB_FIND_FILE_BOTH_DIRECTORY_INFO 0x104
-+#define SMB_FIND_FILE_UNIX 0x202
-+
-+typedef struct smb_com_transaction2_qpi_req {
-+ struct smb_hdr hdr; /* wct = 14+ */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 MaxParameterCount;
-+ __u16 MaxDataCount;
-+ __u8 MaxSetupCount;
-+ __u8 Reserved;
-+ __u16 Flags;
-+ __u32 Timeout;
-+ __u16 Reserved2;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u8 SetupCount;
-+ __u8 Reserved3;
-+ __u16 SubCommand; /* one setup word */
-+ __u16 ByteCount;
-+ __u8 Pad;
-+ __u16 InformationLevel;
-+ __u32 Reserved4;
-+ char FileName[1];
-+} TRANSACTION2_QPI_REQ;
-+
-+typedef struct smb_com_transaction2_qpi_rsp {
-+ struct smb_hdr hdr; /* wct = 10 + SetupCount */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 Reserved;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 ParameterDisplacement;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u16 DataDisplacement;
-+ __u8 SetupCount;
-+ __u8 Reserved1; /* should be zero setup words following */
-+ __u16 ByteCount;
-+ __u16 Reserved2; /* parameter word reserved - present for infolevels > 100 */
-+} TRANSACTION2_QPI_RSP;
-+
-+typedef struct smb_com_transaction2_spi_req {
-+ struct smb_hdr hdr; /* wct = 15 */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 MaxParameterCount;
-+ __u16 MaxDataCount;
-+ __u8 MaxSetupCount;
-+ __u8 Reserved;
-+ __u16 Flags;
-+ __u32 Timeout;
-+ __u16 Reserved2;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u8 SetupCount;
-+ __u8 Reserved3;
-+ __u16 SubCommand; /* one setup word */
-+ __u16 ByteCount;
-+ __u8 Pad;
-+ __u16 Pad1;
-+ __u16 InformationLevel;
-+ __u32 Reserved4;
-+ char FileName[1];
-+} TRANSACTION2_SPI_REQ;
-+
-+typedef struct smb_com_transaction2_spi_rsp {
-+ struct smb_hdr hdr; /* wct = 10 + SetupCount */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 Reserved;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 ParameterDisplacement;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u16 DataDisplacement;
-+ __u8 SetupCount;
-+ __u8 Reserved1; /* should be zero setup words following */
-+ __u16 ByteCount;
-+ __u16 Reserved2; /* parameter word reserved - present for infolevels > 100 */
-+} TRANSACTION2_SPI_RSP;
-+
-+struct set_file_rename {
-+ __u32 overwrite; /* 1 = overwrite dest */
-+ __u32 root_fid; /* zero */
-+ __u32 target_name_len;
-+ char target_name[0]; /* Must be unicode */
-+};
-+
-+struct smb_com_transaction2_sfi_req {
-+ struct smb_hdr hdr; /* wct = 15 */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 MaxParameterCount;
-+ __u16 MaxDataCount;
-+ __u8 MaxSetupCount;
-+ __u8 Reserved;
-+ __u16 Flags;
-+ __u32 Timeout;
-+ __u16 Reserved2;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u8 SetupCount;
-+ __u8 Reserved3;
-+ __u16 SubCommand; /* one setup word */
-+ __u16 ByteCount;
-+ __u8 Pad;
-+ __u16 Pad1;
-+ __u16 Fid;
-+ __u16 InformationLevel;
-+ __u16 Reserved4;
-+};
-+
-+struct smb_com_transaction2_sfi_rsp {
-+ struct smb_hdr hdr; /* wct = 10 + SetupCount */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 Reserved;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 ParameterDisplacement;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u16 DataDisplacement;
-+ __u8 SetupCount;
-+ __u8 Reserved1; /* should be zero setup words following */
-+ __u16 ByteCount;
-+ __u16 Reserved2; /* parameter word reserved - present for infolevels > 100 */
-+};
-+
-+
-+/*
-+ * Flags on T2 FINDFIRST and FINDNEXT
-+ */
-+#define CIFS_SEARCH_CLOSE_ALWAYS 0x0001
-+#define CIFS_SEARCH_CLOSE_AT_END 0x0002
-+#define CIFS_SEARCH_RETURN_RESUME 0x0004
-+#define CIFS_SEARCH_CONTINUE_FROM_LAST 0x0008
-+#define CIFS_SEARCH_BACKUP_SEARCH 0x0010
-+
-+/*
-+ * Size of the resume key on FINDFIRST and FINDNEXT calls
-+ */
-+#define CIFS_SMB_RESUME_KEY_SIZE 4
-+
-+typedef struct smb_com_transaction2_ffirst_req {
-+ struct smb_hdr hdr; /* wct = 15 */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 MaxParameterCount;
-+ __u16 MaxDataCount;
-+ __u8 MaxSetupCount;
-+ __u8 Reserved;
-+ __u16 Flags;
-+ __u32 Timeout;
-+ __u16 Reserved2;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u8 SetupCount; /* one */
-+ __u8 Reserved3;
-+ __u16 SubCommand; /* TRANS2_FIND_FIRST */
-+ __u16 ByteCount;
-+ __u8 Pad;
-+ __u16 SearchAttributes;
-+ __u16 SearchCount;
-+ __u16 SearchFlags;
-+ __u16 InformationLevel;
-+ __u32 SearchStorageType;
-+ char FileName[1];
-+} TRANSACTION2_FFIRST_REQ;
-+
-+typedef struct smb_com_transaction2_ffirst_rsp {
-+ struct smb_hdr hdr; /* wct = 10 */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 Reserved;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 ParameterDisplacement;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u16 DataDisplacement;
-+ __u8 SetupCount;
-+ __u8 Reserved1; /* should be zero setup words following */
-+ __u16 ByteCount;
-+} TRANSACTION2_FFIRST_RSP;
-+
-+typedef struct smb_com_transaction2_ffirst_rsp_parms {
-+ __u16 SearchHandle;
-+ __u16 SearchCount;
-+ __u16 EndofSearch;
-+ __u16 EAErrorOffset;
-+ __u16 LastNameOffset;
-+} T2_FFIRST_RSP_PARMS;
-+
-+typedef struct smb_com_transaction2_fnext_req {
-+ struct smb_hdr hdr; /* wct = 15 */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 MaxParameterCount;
-+ __u16 MaxDataCount;
-+ __u8 MaxSetupCount;
-+ __u8 Reserved;
-+ __u16 Flags;
-+ __u32 Timeout;
-+ __u16 Reserved2;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u8 SetupCount; /* one */
-+ __u8 Reserved3;
-+ __u16 SubCommand; /* TRANS2_FIND_NEXT */
-+ __u16 ByteCount;
-+ __u8 Pad;
-+ __u16 SearchHandle;
-+ __u16 SearchCount;
-+ __u16 InformationLevel;
-+ __u32 ResumeKey;
-+ __u16 SearchFlags;
-+ char ResumeFileName[1];
-+} TRANSACTION2_FNEXT_REQ;
-+
-+typedef struct smb_com_transaction2_fnext_rsp {
-+ struct smb_hdr hdr; /* wct = 10 */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 Reserved;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 ParameterDisplacement;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u16 DataDisplacement;
-+ __u8 SetupCount;
-+ __u8 Reserved1; /* should be zero setup words following */
-+ __u16 ByteCount;
-+} TRANSACTION2_FNEXT_RSP;
-+
-+typedef struct smb_com_transaction2_fnext_rsp_parms {
-+ __u16 SearchCount;
-+ __u16 EndofSearch;
-+ __u16 EAErrorOffset;
-+ __u16 LastNameOffset;
-+} T2_FNEXT_RSP_PARMS;
-+
-+/* QFSInfo Levels */
-+#define SMB_INFO_ALLOCATION 1
-+#define SMB_INFO_VOLUME 2
-+#define SMB_QUERY_FS_VOLUME_INFO 0x102
-+#define SMB_QUERY_FS_SIZE_INFO 0x103
-+#define SMB_QUERY_FS_DEVICE_INFO 0x104
-+#define SMB_QUERY_FS_ATTRIBUTE_INFO 0x105
-+#define SMB_QUERY_CIFS_UNIX_INFO 0x200
-+#define SMB_QUERY_LABEL_INFO 0x3ea
-+#define SMB_QUERY_FS_QUOTA_INFO 0x3ee
-+
-+typedef struct smb_com_transaction2_qfsi_req {
-+ struct smb_hdr hdr; /* wct = 14+ */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 MaxParameterCount;
-+ __u16 MaxDataCount;
-+ __u8 MaxSetupCount;
-+ __u8 Reserved;
-+ __u16 Flags;
-+ __u32 Timeout;
-+ __u16 Reserved2;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u8 SetupCount;
-+ __u8 Reserved3;
-+ __u16 SubCommand; /* one setup word */
-+ __u16 ByteCount;
-+ __u8 Pad;
-+ __u16 InformationLevel;
-+} TRANSACTION2_QFSI_REQ;
-+
-+typedef struct smb_com_transaction_qfsi_rsp {
-+ struct smb_hdr hdr; /* wct = 10 + SetupCount */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 Reserved;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 ParameterDisplacement;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u16 DataDisplacement;
-+ __u8 SetupCount;
-+ __u8 Reserved1; /* should be zero setup words following */
-+ __u16 ByteCount;
-+ __u8 Pad; /* may be three bytes *//* followed by data area */
-+} TRANSACTION2_QFSI_RSP;
-+
-+typedef struct smb_com_transaction2_get_dfs_refer_req {
-+ struct smb_hdr hdr; /* wct = 15 */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 MaxParameterCount;
-+ __u16 MaxDataCount;
-+ __u8 MaxSetupCount;
-+ __u8 Reserved;
-+ __u16 Flags;
-+ __u32 Timeout;
-+ __u16 Reserved2;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u8 SetupCount;
-+ __u8 Reserved3;
-+ __u16 SubCommand; /* one setup word */
-+ __u16 ByteCount;
-+ __u8 Pad[3]; /* Win2K has sent 0x0F01 (max resp length perhaps?) followed by one byte pad - doesn't seem to matter though */
-+ __u16 MaxReferralLevel;
-+ char RequestFileName[1];
-+} TRANSACTION2_GET_DFS_REFER_REQ;
-+
-+typedef struct dfs_referral_level_3 {
-+ __u16 VersionNumber;
-+ __u16 ReferralSize;
-+ __u16 ServerType; /* 0x0001 = CIFS server */
-+ __u16 ReferralFlags; /* or proximity - not clear which since always set to zero - SNIA spec says 0x01 means strip off PathConsumed chars before submitting RequestFileName to remote node */
-+ __u16 TimeToLive;
-+ __u16 Proximity;
-+ __u16 DfsPathOffset;
-+ __u16 DfsAlternatePathOffset;
-+ __u16 NetworkAddressOffset;
-+} REFERRAL3;
-+
-+typedef struct smb_com_transaction_get_dfs_refer_rsp {
-+ struct smb_hdr hdr; /* wct = 10 */
-+ __u16 TotalParameterCount;
-+ __u16 TotalDataCount;
-+ __u16 Reserved;
-+ __u16 ParameterCount;
-+ __u16 ParameterOffset;
-+ __u16 ParameterDisplacement;
-+ __u16 DataCount;
-+ __u16 DataOffset;
-+ __u16 DataDisplacement;
-+ __u8 SetupCount;
-+ __u8 Reserved1; /* zero setup words following */
-+ __u16 ByteCount;
-+ __u8 Pad;
-+ __u16 PathConsumed;
-+ __u16 NumberOfReferrals;
-+ __u16 DFSFlags;
-+ __u16 Pad2;
-+ REFERRAL3 referrals[1]; /* array of level 3 dfs_referral structures */
-+ /* followed by the strings pointed to by the referral structures */
-+} TRANSACTION2_GET_DFS_REFER_RSP;
-+
-+/* DFS Flags */
-+#define DFSREF_REFERRAL_SERVER 0x0001
-+#define DFSREF_STORAGE_SERVER 0x0002
-+
-+/* IOCTL information */
-+/* List of ioctl function codes that look to be of interest to remote clients like this. */
-+/* Need to do some experimentation to make sure they all work remotely. */
-+/* Some of the following such as the encryption/compression ones would be */
-+/* invoked from tools via a specialized hook into the VFS rather than via the */
-+/* standard vfs entry points */
-+#define FSCTL_REQUEST_OPLOCK_LEVEL_1 0x00090000
-+#define FSCTL_REQUEST_OPLOCK_LEVEL_2 0x00090004
-+#define FSCTL_REQUEST_BATCH_OPLOCK 0x00090008
-+#define FSCTL_LOCK_VOLUME 0x00090018
-+#define FSCTL_UNLOCK_VOLUME 0x0009001C
-+#define FSCTL_GET_COMPRESSION 0x0009003C
-+#define FSCTL_SET_COMPRESSION 0x0009C040
-+#define FSCTL_REQUEST_FILTER_OPLOCK 0x0009008C
-+#define FSCTL_FILESYS_GET_STATISTICS 0x00090090
-+#define FSCTL_SET_REPARSE_POINT 0x000900A4
-+#define FSCTL_GET_REPARSE_POINT 0x000900A8
-+#define FSCTL_DELETE_REPARSE_POINT 0x000900AC
-+#define FSCTL_SET_SPARSE 0x000900C4
-+#define FSCTL_SET_ZERO_DATA 0x000900C8
-+#define FSCTL_SET_ENCRYPTION 0x000900D7
-+#define FSCTL_ENCRYPTION_FSCTL_IO 0x000900DB
-+#define FSCTL_WRITE_RAW_ENCRYPTED 0x000900DF
-+#define FSCTL_READ_RAW_ENCRYPTED 0x000900E3
-+#define FSCTL_SIS_COPYFILE 0x00090100
-+#define FSCTL_SIS_LINK_FILES 0x0009C104
-+
-+#define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003
-+#define IO_REPARSE_TAG_HSM 0xC0000004
-+#define IO_REPARSE_TAG_SIS 0x80000007
-+
-+/*
-+ ************************************************************************
-+ * All structs for everything above the SMB PDUs themselves
-+ * (such as the T2 level specific data) go here
-+ ************************************************************************
-+ */
-+
-+/*
-+ * Information on a server
-+ */
-+
-+struct serverInfo {
-+ char name[16];
-+ unsigned char versionMajor;
-+ unsigned char versionMinor;
-+ unsigned long type;
-+ unsigned int commentOffset;
-+};
-+
-+/*
-+ * The following structure is the format of the data returned on a NetShareEnum
-+ * with level "90" (x5A)
-+ */
-+
-+struct shareInfo {
-+ char shareName[13];
-+ char pad;
-+ unsigned short type;
-+ unsigned int commentOffset;
-+};
-+
-+struct aliasInfo {
-+ char aliasName[9];
-+ char pad;
-+ unsigned int commentOffset;
-+ unsigned char type[2];
-+};
-+
-+struct aliasInfo92 {
-+ int aliasNameOffset;
-+ int serverNameOffset;
-+ int shareNameOffset;
-+};
-+
-+typedef struct {
-+ __u64 TotalAllocationUnits;
-+ __u64 FreeAllocationUnits;
-+ __u32 SectorsPerAllocationUnit;
-+ __u32 BytesPerSector;
-+} FILE_SYSTEM_INFO; /* size info, level 0x103 */
-+
-+typedef struct {
-+ __u16 MajorVersionNumber;
-+ __u16 MinorVersionNumber;
-+ __u64 Capability;
-+} FILE_SYSTEM_UNIX_INFO; /* Unix extensions info, level 0x200 */
-+/* Linux/Unix extensions capability flags */
-+#define CIFS_UNIX_FCNTL_CAP 0x00000001 /* support for fcntl locks */
-+#define CIFS_UNIX_POSIX_ACL_CAP 0x00000002
-+
-+/* DeviceType Flags */
-+#define FILE_DEVICE_CD_ROM 0x00000002
-+#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
-+#define FILE_DEVICE_DFS 0x00000006
-+#define FILE_DEVICE_DISK 0x00000007
-+#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
-+#define FILE_DEVICE_FILE_SYSTEM 0x00000009
-+#define FILE_DEVICE_NAMED_PIPE 0x00000011
-+#define FILE_DEVICE_NETWORK 0x00000012
-+#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
-+#define FILE_DEVICE_NULL 0x00000015
-+#define FILE_DEVICE_PARALLEL_PORT 0x00000016
-+#define FILE_DEVICE_PRINTER 0x00000018
-+#define FILE_DEVICE_SERIAL_PORT 0x0000001b
-+#define FILE_DEVICE_STREAMS 0x0000001e
-+#define FILE_DEVICE_TAPE 0x0000001f
-+#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
-+#define FILE_DEVICE_VIRTUAL_DISK 0x00000024
-+#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
-+
-+typedef struct {
-+ __u32 DeviceType;
-+ __u32 DeviceCharacteristics;
-+} FILE_SYSTEM_DEVICE_INFO; /* device info, level 0x104 */
-+
-+typedef struct {
-+ __u32 Attributes;
-+ __u32 MaxPathNameComponentLength;
-+ __u32 FileSystemNameLen;
-+ char FileSystemName[52]; /* do not really need to save this - so potentially get only subset of name */
-+} FILE_SYSTEM_ATTRIBUTE_INFO;
-+
-+typedef struct { /* data block encoding of response to level 263 QPathInfo */
-+ __u64 CreationTime;
-+ __u64 LastAccessTime;
-+ __u64 LastWriteTime;
-+ __u64 ChangeTime;
-+ __u32 Attributes;
-+ __u32 Pad1;
-+ __u64 AllocationSize;
-+ __u64 EndOfFile; /* size ie offset to first free byte in file */
-+ __u32 NumberOfLinks; /* hard links */
-+ __u8 DeletePending;
-+ __u8 Directory;
-+ __u16 Pad2;
-+ __u64 IndexNumber;
-+ __u32 EASize;
-+ __u32 AccessFlags;
-+ __u64 IndexNumber1;
-+ __u64 CurrentByteOffset;
-+ __u32 Mode;
-+ __u32 AlignmentRequirement;
-+ __u32 FileNameLength;
-+ char FileName[1];
-+} FILE_ALL_INFO; /* level 263 QPathInfo */
-+
-+typedef struct {
-+ __u64 EndOfFile;
-+ __u64 NumOfBytes;
-+ __u64 LastStatusChange; /*SNIA spec says DCE time for the three time fields */
-+ __u64 LastAccessTime;
-+ __u64 LastModificationTime;
-+ __u64 Uid;
-+ __u64 Gid;
-+ __u32 Type;
-+ __u64 DevMajor;
-+ __u64 DevMinor;
-+ __u64 UniqueId;
-+ __u64 Permissions;
-+ __u64 Nlinks;
-+} FILE_UNIX_BASIC_INFO; /* level 512 QPathInfo */
-+
-+typedef struct {
-+ char LinkDest[1];
-+} FILE_UNIX_LINK_INFO; /* level 513 QPathInfo */
-+
-+/* defines for enumerating possible values of the Unix type field below */
-+#define UNIX_FILE 0
-+#define UNIX_DIR 1
-+#define UNIX_SYMLINK 2
-+#define UNIX_CHARDEV 3
-+#define UNIX_BLOCKDEV 4
-+#define UNIX_FIFO 5
-+#define UNIX_SOCKET 6
-+
-+typedef struct {
-+ __u32 NextEntryOffset;
-+ __u32 ResumeKey;
-+ __u64 EndOfFile;
-+ __u64 NumOfBytes;
-+ __u64 LastStatusChange; /*SNIA spec says DCE time for the three time fields */
-+ __u64 LastAccessTime;
-+ __u64 LastModificationTime;
-+ __u64 Uid;
-+ __u64 Gid;
-+ __u32 Type;
-+ __u64 DevMajor;
-+ __u64 DevMinor;
-+ __u64 UniqueId;
-+ __u64 Permissions;
-+ __u64 Nlinks;
-+ char FileName[1];
-+} FILE_UNIX_INFO;
-+
-+typedef struct {
-+ __u64 CreationTime;
-+ __u64 LastAccessTime;
-+ __u64 LastWriteTime;
-+ __u64 ChangeTime;
-+ __u32 Attributes;
-+ __u32 Pad;
-+} FILE_BASIC_INFO; /* size info, level 0x101 */
-+
-+struct file_allocation_info {
-+ __u64 AllocationSize;
-+}; /* size info, level 0x103 */
-+
-+struct file_end_of_file_info {
-+ __u64 FileSize; /* offset to end of file */
-+}; /* size info, level 0x104 */
-+
-+typedef struct {
-+ __u32 NextEntryOffset;
-+ __u32 FileIndex;
-+ __u64 CreationTime;
-+ __u64 LastAccessTime;
-+ __u64 LastWriteTime;
-+ __u64 ChangeTime;
-+ __u64 EndOfFile;
-+ __u64 AllocationSize;
-+ __u32 ExtFileAttributes;
-+ __u32 FileNameLength;
-+ char FileName[1];
-+} FILE_DIRECTORY_INFO; /* level 257 FF response data area */
-+
-+struct gea {
-+ unsigned char cbName;
-+ char szName[1];
-+};
-+
-+struct gealist {
-+ unsigned long cbList;
-+ struct gea list[1];
-+};
-+
-+struct fea {
-+ unsigned char EA_flags;
-+ __u8 name_len;
-+ __u16 value_len;
-+ char szName[1];
-+ /* optionally followed by value */
-+};
-+/* flags for _FEA.fEA */
-+#define FEA_NEEDEA 0x80 /* need EA bit */
-+
-+struct fealist {
-+ __u32 list_len;
-+ struct fea list[1];
-+};
-+
-+/* used to hold an arbitrary blob of data */
-+struct data_blob {
-+ __u8 *data;
-+ size_t length;
-+ void (*free) (struct data_blob * data_blob);
-+};
-+
-+#ifdef CONFIG_CIFS_POSIX
-+/*
-+ For better POSIX semantics from Linux client, (even better
-+ than the existing CIFS Unix Extensions) we need updated PDUs for:
-+
-+ 1) PosixCreateX - to set and return the mode, inode#, device info and
-+ perhaps add a CreateDevice - to create Pipes and other special .inodes
-+ Also note POSIX open flags
-+ 2) Close - to return the last write time to do cache across close more safely
-+ 3) PosixQFSInfo - to return statfs info
-+ 4) FindFirst return unique inode number - what about resume key, two forms short (matches readdir) and full (enough info to cache inodes)
-+ 5) Mkdir - set mode
-+
-+ And under consideration:
-+ 6) FindClose2 (return nanosecond timestamp ??)
-+ 7) Use nanosecond timestamps throughout all time fields if
-+ corresponding attribute flag is set
-+ 8) sendfile - handle based copy
-+ 9) Direct i/o
-+ 10) "POSIX ACL" support
-+ 11) Misc fcntls?
-+
-+ what about fixing 64 bit alignment
-+
-+ There are also various legacy SMB/CIFS requests used as is
-+
-+ From existing Lanman and NTLM dialects:
-+ --------------------------------------
-+ NEGOTIATE
-+ SESSION_SETUP_ANDX (BB which?)
-+ TREE_CONNECT_ANDX (BB which wct?)
-+ TREE_DISCONNECT (BB add volume timestamp on response)
-+ LOGOFF_ANDX
-+ DELETE (note delete open file behavior)
-+ DELETE_DIRECTORY
-+ READ_AND_X
-+ WRITE_AND_X
-+ LOCKING_AND_X (note posix lock semantics)
-+ RENAME (note rename across dirs and open file rename posix behaviors)
-+ NT_RENAME (for hardlinks) Is this good enough for all features?
-+ FIND_CLOSE2
-+ TRANSACTION2 (18 cases)
-+ SMB_SET_FILE_END_OF_FILE_INFO2 SMB_SET_PATH_END_OF_FILE_INFO2
-+ (BB verify that never need to set allocation size)
-+ SMB_SET_FILE_BASIC_INFO2 (setting times - BB can it be done via Unix ext?)
-+
-+ COPY (note support for copy across directories) - FUTURE, OPTIONAL
-+ setting/getting OS/2 EAs - FUTURE (BB can this handle
-+ setting Linux xattrs perfectly) - OPTIONAL
-+ dnotify - FUTURE, OPTIONAL
-+ quota - FUTURE, OPTIONAL
-+
-+ Note that various requests implemented for NT interop such as
-+ NT_TRANSACT (IOCTL) QueryReparseInfo
-+ are unneeded to servers compliant with the CIFS POSIX extensions
-+
-+ From CIFS Unix Extensions:
-+ -------------------------
-+ T2 SET_PATH_INFO (SMB_SET_FILE_UNIX_LINK) for symlinks
-+ T2 SET_PATH_INFO (SMB_SET_FILE_BASIC_INFO2)
-+ T2 QUERY_PATH_INFO (SMB_QUERY_FILE_UNIX_LINK)
-+ T2 QUERY_PATH_INFO (SMB_QUERY_FILE_UNIX_BASIC) - BB check for missing inode fields
-+ Actually need QUERY_FILE_UNIX_INFO since has inode num
-+ BB what about a) blksize/blkbits/blocks
-+ b) i_version
-+ c) i_rdev
-+ d) notify mask?
-+ e) generation
-+ f) size_seqcount
-+ T2 FIND_FIRST/FIND_NEXT FIND_FILE_UNIX
-+ TRANS2_GET_DFS_REFERRAL - OPTIONAL but recommended
-+ T2_QFS_INFO QueryDevice/AttributeInfo - OPTIONAL
-+
-+
-+ */
-+#endif
-+
-+#pragma pack() /* resume default structure packing */
-+
-+#endif /* _CIFSPDU_H */
-diff -urN linux-2.4.29.old/fs/cifs/cifsproto.h linux-2.4.29/fs/cifs/cifsproto.h
---- linux-2.4.29.old/fs/cifs/cifsproto.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifsproto.h 2004-07-14 00:25:05.000000000 +0200
-@@ -0,0 +1,254 @@
-+/*
-+ * fs/cifs/cifsproto.h
-+ *
-+ * Copyright (c) International Business Machines Corp., 2002
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * 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.1 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 _CIFSPROTO_H
-+#define _CIFSPROTO_H
-+#include <linux/nls.h>
-+
-+struct statfs;
-+
-+/*
-+ *****************************************************************
-+ * All Prototypes
-+ *****************************************************************
-+ */
-+
-+extern struct smb_hdr *cifs_buf_get(void);
-+extern void cifs_buf_release(void *);
-+extern int smb_send(struct socket *, struct smb_hdr *,
-+ unsigned int /* length */ , struct sockaddr *);
-+extern unsigned int _GetXid(void);
-+extern void _FreeXid(unsigned int);
-+#define GetXid() (int)_GetXid(); cFYI(1,("CIFS VFS: in %s as Xid: %d with uid: %d",__FUNCTION__, xid,current->fsuid));
-+#define FreeXid(curr_xid) {_FreeXid(curr_xid); cFYI(1,("CIFS VFS: leaving %s (xid = %d) rc = %d",__FUNCTION__,curr_xid,rc));}
-+extern char *build_path_from_dentry(struct dentry *);
-+extern char *build_wildcard_path_from_dentry(struct dentry *direntry);
-+extern void renew_parental_timestamps(struct dentry *direntry);
-+extern int SendReceive(const unsigned int /* xid */ , struct cifsSesInfo *,
-+ struct smb_hdr * /* input */ ,
-+ struct smb_hdr * /* out */ ,
-+ int * /* bytes returned */ , const int long_op);
-+extern int checkSMBhdr(struct smb_hdr *smb, __u16 mid);
-+extern int checkSMB(struct smb_hdr *smb, __u16 mid, int length);
-+extern int is_valid_oplock_break(struct smb_hdr *smb);
-+extern unsigned int smbCalcSize(struct smb_hdr *ptr);
-+extern int decode_negTokenInit(unsigned char *security_blob, int length,
-+ enum securityEnum *secType);
-+extern int map_smb_to_linux_error(struct smb_hdr *smb);
-+extern void header_assemble(struct smb_hdr *, char /* command */ ,
-+ const struct cifsTconInfo *, int
-+ /* length of fixed section (word count) in two byte units */
-+ );
-+struct oplock_q_entry * AllocOplockQEntry(struct inode *, u16, struct cifsTconInfo *);
-+void DeleteOplockQEntry(struct oplock_q_entry *);
-+extern time_t cifs_NTtimeToUnix(u64 /* utc nanoseconds since 1601 */ );
-+extern u64 cifs_UnixTimeToNT(time_t);
-+extern int cifs_get_inode_info(struct inode **pinode,
-+ const unsigned char *search_path,
-+ FILE_ALL_INFO * pfile_info,
-+ struct super_block *sb, int xid);
-+extern int cifs_get_inode_info_unix(struct inode **pinode,
-+ const unsigned char *search_path,
-+ struct super_block *sb,int xid);
-+
-+extern int cifs_setup_session(unsigned int xid, struct cifsSesInfo *pSesInfo,
-+ struct nls_table * nls_info);
-+extern int CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses);
-+
-+extern int CIFSTCon(unsigned int xid, struct cifsSesInfo *ses,
-+ const char *tree, struct cifsTconInfo *tcon,
-+ const struct nls_table *);
-+
-+extern int CIFSFindFirst(const int xid, struct cifsTconInfo *tcon,
-+ const char *searchName,
-+ FILE_DIRECTORY_INFO * findData,
-+ T2_FFIRST_RSP_PARMS * findParms,
-+ const struct nls_table *nls_codepage,
-+ int *pUnicodeFlag,
-+ int *pUnixFlag /* if Unix extensions used */ );
-+extern int CIFSFindNext(const int xid, struct cifsTconInfo *tcon,
-+ FILE_DIRECTORY_INFO * findData,
-+ T2_FNEXT_RSP_PARMS * findParms,
-+ const __u16 searchHandle, char * resume_name,
-+ int name_length, __u32 resume_key,
-+ int *UnicodeFlag, int *pUnixFlag);
-+
-+extern int CIFSFindClose(const int, struct cifsTconInfo *tcon,
-+ const __u16 search_handle);
-+
-+extern int CIFSSMBQPathInfo(const int xid, struct cifsTconInfo *tcon,
-+ const unsigned char *searchName,
-+ FILE_ALL_INFO * findData,
-+ const struct nls_table *nls_codepage);
-+
-+extern int CIFSSMBUnixQPathInfo(const int xid,
-+ struct cifsTconInfo *tcon,
-+ const unsigned char *searchName,
-+ FILE_UNIX_BASIC_INFO * pFindData,
-+ const struct nls_table *nls_codepage);
-+
-+extern int CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses,
-+ const unsigned char *searchName,
-+ unsigned char **targetUNCs,
-+ unsigned int *number_of_UNC_in_array,
-+ const struct nls_table *nls_codepage);
-+
-+extern int connect_to_dfs_path(int xid, struct cifsSesInfo *pSesInfo,
-+ const char *old_path,
-+ const struct nls_table *nls_codepage);
-+extern int get_dfs_path(int xid, struct cifsSesInfo *pSesInfo,
-+ const char *old_path, const struct nls_table *nls_codepage,
-+ unsigned int *pnum_referrals, unsigned char ** preferrals);
-+extern int CIFSSMBQFSInfo(const int xid, struct cifsTconInfo *tcon,
-+ struct statfs *FSData,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBQFSAttributeInfo(const int xid,
-+ struct cifsTconInfo *tcon,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBQFSDeviceInfo(const int xid, struct cifsTconInfo *tcon,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBQFSUnixInfo(const int xid, struct cifsTconInfo *tcon,
-+ const struct nls_table *nls_codepage);
-+
-+extern int CIFSSMBSetTimes(const int xid, struct cifsTconInfo *tcon,
-+ char *fileName, FILE_BASIC_INFO * data,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBSetEOF(const int xid, struct cifsTconInfo *tcon,
-+ char *fileName, __u64 size,int setAllocationSizeFlag,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBSetFileSize(const int xid, struct cifsTconInfo *tcon,
-+ __u64 size, __u16 fileHandle,__u32 opener_pid, int AllocSizeFlag);
-+extern int CIFSSMBUnixSetPerms(const int xid, struct cifsTconInfo *pTcon,
-+ char *full_path, __u64 mode, __u64 uid,
-+ __u64 gid, dev_t dev, const struct nls_table *nls_codepage);
-+
-+extern int CIFSSMBMkDir(const int xid, struct cifsTconInfo *tcon,
-+ const char *newName,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBRmDir(const int xid, struct cifsTconInfo *tcon,
-+ const char *name, const struct nls_table *nls_codepage);
-+
-+extern int CIFSSMBDelFile(const int xid, struct cifsTconInfo *tcon,
-+ const char *name,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBRename(const int xid, struct cifsTconInfo *tcon,
-+ const char *fromName, const char *toName,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBRenameOpenFile(const int xid,struct cifsTconInfo *pTcon,
-+ int netfid, char * target_name, const struct nls_table *nls_codepage);
-+extern int CIFSCreateHardLink(const int xid,
-+ struct cifsTconInfo *tcon,
-+ const char *fromName, const char *toName,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSUnixCreateHardLink(const int xid,
-+ struct cifsTconInfo *tcon,
-+ const char *fromName, const char *toName,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSUnixCreateSymLink(const int xid,
-+ struct cifsTconInfo *tcon,
-+ const char *fromName, const char *toName,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBUnixQuerySymLink(const int xid,
-+ struct cifsTconInfo *tcon,
-+ const unsigned char *searchName,
-+ char *syminfo, const int buflen,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBQueryReparseLinkInfo(const int xid,
-+ struct cifsTconInfo *tcon,
-+ const unsigned char *searchName,
-+ char *symlinkinfo, const int buflen, __u16 fid,
-+ const struct nls_table *nls_codepage);
-+
-+extern int CIFSSMBOpen(const int xid, struct cifsTconInfo *tcon,
-+ const char *fileName, const int disposition,
-+ const int access_flags, const int omode,
-+ __u16 * netfid, int *pOplock, FILE_ALL_INFO *,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBClose(const int xid, struct cifsTconInfo *tcon,
-+ const int smb_file_id);
-+
-+extern int CIFSSMBRead(const int xid, struct cifsTconInfo *tcon,
-+ const int netfid, unsigned int count,
-+ const __u64 lseek, unsigned int *nbytes, char **buf);
-+extern int CIFSSMBWrite(const int xid, struct cifsTconInfo *tcon,
-+ const int netfid, const unsigned int count,
-+ const __u64 lseek, unsigned int *nbytes,
-+ const char *buf, const int long_op);
-+extern int CIFSSMBLock(const int xid, struct cifsTconInfo *tcon,
-+ const __u16 netfid, const __u64 len,
-+ const __u64 offset, const __u32 numUnlock,
-+ const __u32 numLock, const __u8 lockType,
-+ const int waitFlag);
-+
-+extern int CIFSSMBTDis(const int xid, struct cifsTconInfo *tcon);
-+extern int CIFSSMBLogoff(const int xid, struct cifsSesInfo *ses);
-+
-+extern struct cifsSesInfo *sesInfoAlloc(void);
-+extern void sesInfoFree(struct cifsSesInfo *);
-+extern struct cifsTconInfo *tconInfoAlloc(void);
-+extern void tconInfoFree(struct cifsTconInfo *);
-+
-+extern int cifs_reconnect(struct TCP_Server_Info *server);
-+
-+extern int cifs_sign_smb(struct smb_hdr *, struct cifsSesInfo *,__u32 *);
-+extern int cifs_verify_signature(const struct smb_hdr *, const char * mac_key,
-+ __u32 expected_sequence_number);
-+extern int cifs_calculate_mac_key(char * key,const char * rn,const char * pass);
-+extern void CalcNTLMv2_partial_mac_key(struct cifsSesInfo *, struct nls_table *);
-+extern void CalcNTLMv2_response(const struct cifsSesInfo *,char * );
-+
-+extern int CIFSBuildServerList(int xid, char *serverBufferList,
-+ int recordlength, int *entries,
-+ int *totalEntries, int *topoChangedFlag);
-+extern int CIFSSMBQueryShares(int xid, struct cifsTconInfo *tcon,
-+ struct shareInfo *shareList, int bufferLen,
-+ int *entries, int *totalEntries);
-+extern int CIFSSMBQueryAlias(int xid, struct cifsTconInfo *tcon,
-+ struct aliasInfo *aliasList, int bufferLen,
-+ int *entries, int *totalEntries);
-+extern int CIFSSMBAliasInfo(int xid, struct cifsTconInfo *tcon,
-+ char *aliasName, char *serverName,
-+ char *shareName, char *comment);
-+extern int CIFSSMBGetShareInfo(int xid, struct cifsTconInfo *tcon,
-+ char *share, char *comment);
-+extern int CIFSSMBGetUserPerms(int xid, struct cifsTconInfo *tcon,
-+ char *userName, char *searchName, int *perms);
-+extern int CIFSSMBSync(int xid, struct cifsTconInfo *tcon, int netfid, int pid);
-+
-+extern int CIFSSMBSeek(int xid,
-+ struct cifsTconInfo *tcon,
-+ int netfid,
-+ int pid,
-+ int whence, unsigned long offset, long long *newoffset);
-+
-+extern int CIFSSMBCopy(int xid,
-+ struct cifsTconInfo *source_tcon,
-+ const char *fromName,
-+ const __u16 target_tid,
-+ const char *toName, const int flags,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBNotify(const int xid, struct cifsTconInfo *tcon,
-+ const int notify_subdirs,const __u16 netfid,__u32 filter,
-+ const struct nls_table *nls_codepage);
-+extern int CIFSSMBQAllEAs(const int xid, struct cifsTconInfo *tcon,
-+ const unsigned char *searchName,
-+ char * EAData, size_t size,
-+ const struct nls_table *nls_codepage);
-+#endif /* _CIFSPROTO_H */
-diff -urN linux-2.4.29.old/fs/cifs/cifssmb.c linux-2.4.29/fs/cifs/cifssmb.c
---- linux-2.4.29.old/fs/cifs/cifssmb.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifssmb.c 2004-07-14 00:25:05.000000000 +0200
-@@ -0,0 +1,3016 @@
-+/*
-+ * fs/cifs/cifssmb.c
-+ *
-+ * Copyright (C) International Business Machines Corp., 2002,2003
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * Contains the routines for constructing the SMB PDUs themselves
-+ *
-+ * 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.1 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
-+ */
-+
-+ /* SMB/CIFS PDU handling routines here - except for leftovers in connect.c */
-+ /* These are mostly routines that operate on a pathname, or on a tree id */
-+ /* (mounted volume), but there are eight handle based routines which must be */
-+ /* treated slightly different for reconnection purposes since we never want */
-+ /* to reuse a stale file handle and the caller knows the file handle */
-+
-+#include <linux/fs.h>
-+#include <linux/kernel.h>
-+#include <linux/vfs.h>
-+#include <asm/uaccess.h>
-+#include "cifspdu.h"
-+#include "cifsglob.h"
-+#include "cifsproto.h"
-+#include "cifs_unicode.h"
-+#include "cifs_debug.h"
-+
-+#ifdef CONFIG_CIFS_POSIX
-+static struct {
-+ int index;
-+ char *name;
-+} protocols[] = {
-+ {CIFS_PROT, "\2NT LM 0.12"},
-+ {CIFS_PROT, "\2POSIX 2"},
-+ {BAD_PROT, "\2"}
-+};
-+#else
-+static struct {
-+ int index;
-+ char *name;
-+} protocols[] = {
-+ {CIFS_PROT, "\2NT LM 0.12"},
-+ {BAD_PROT, "\2"}
-+};
-+#endif
-+
-+
-+/* Mark as invalid, all open files on tree connections since they
-+ were closed when session to server was lost */
-+static void mark_open_files_invalid(struct cifsTconInfo * pTcon)
-+{
-+ struct cifsFileInfo *open_file = NULL;
-+ struct list_head * tmp;
-+ struct list_head * tmp1;
-+
-+/* list all files open on tree connection and mark them invalid */
-+ write_lock(&GlobalSMBSeslock);
-+ list_for_each_safe(tmp, tmp1, &pTcon->openFileList) {
-+ open_file = list_entry(tmp,struct cifsFileInfo, tlist);
-+ if(open_file) {
-+ open_file->invalidHandle = TRUE;
-+ }
-+ }
-+ write_unlock(&GlobalSMBSeslock);
-+ /* BB Add call to invalidate_inodes(sb) for all superblocks mounted to this tcon */
-+}
-+
-+static int
-+smb_init(int smb_command, int wct, struct cifsTconInfo *tcon,
-+ void **request_buf /* returned */ ,
-+ void **response_buf /* returned */ )
-+{
-+ int rc = 0;
-+ int timeout = 10 * HZ;
-+
-+ /* SMBs NegProt, SessSetup, uLogoff do not have tcon yet so
-+ check for tcp and smb session status done differently
-+ for those three - in the calling routine */
-+ if(tcon) {
-+ if((tcon->ses) && (tcon->ses->server)){
-+ struct nls_table *nls_codepage;
-+ /* Give Demultiplex thread up to 10 seconds to
-+ reconnect, should be greater than cifs socket
-+ timeout which is 7 seconds */
-+ while(tcon->ses->server->tcpStatus == CifsNeedReconnect) {
-+ while ((tcon->ses->server->tcpStatus != CifsGood) && (timeout > 0)){
-+ timeout = interruptible_sleep_on_timeout(&tcon->ses->server->response_q,timeout);
-+ }
-+ if(tcon->ses->server->tcpStatus == CifsNeedReconnect) {
-+ /* on "soft" mounts we wait once */
-+ if((tcon->retry == FALSE) ||
-+ (tcon->ses->status == CifsExiting)) {
-+ cFYI(1,("gave up waiting on reconnect in smb_init"));
-+ return -EHOSTDOWN;
-+ } /* else "hard" mount - keep retrying until
-+ process is killed or server comes back up */
-+ } else /* TCP session is reestablished now */
-+ break;
-+
-+ }
-+
-+ nls_codepage = load_nls_default();
-+ /* need to prevent multiple threads trying to
-+ simultaneously reconnect the same SMB session */
-+ down(&tcon->ses->sesSem);
-+ if(tcon->ses->status == CifsNeedReconnect)
-+ rc = cifs_setup_session(0, tcon->ses, nls_codepage);
-+ if(!rc && (tcon->tidStatus == CifsNeedReconnect)) {
-+ mark_open_files_invalid(tcon);
-+ rc = CIFSTCon(0, tcon->ses, tcon->treeName, tcon,
-+ nls_codepage);
-+ up(&tcon->ses->sesSem);
-+ if(rc == 0)
-+ atomic_inc(&tconInfoReconnectCount);
-+
-+ cFYI(1, ("reconnect tcon rc = %d", rc));
-+ /* Removed call to reopen open files here -
-+ it is safer (and faster) to reopen files
-+ one at a time as needed in read and write */
-+
-+ /* Check if handle based operation so we
-+ know whether we can continue or not without
-+ returning to caller to reset file handle */
-+ switch(smb_command) {
-+ case SMB_COM_READ_ANDX:
-+ case SMB_COM_WRITE_ANDX:
-+ case SMB_COM_CLOSE:
-+ case SMB_COM_FIND_CLOSE2:
-+ case SMB_COM_LOCKING_ANDX: {
-+ unload_nls(nls_codepage);
-+ return -EAGAIN;
-+ }
-+ }
-+ } else {
-+ up(&tcon->ses->sesSem);
-+ }
-+ unload_nls(nls_codepage);
-+
-+ } else {
-+ return -EIO;
-+ }
-+ }
-+ if(rc)
-+ return rc;
-+
-+ *request_buf = cifs_buf_get();
-+ if (*request_buf == 0) {
-+ /* BB should we add a retry in here if not a writepage? */
-+ return -ENOMEM;
-+ }
-+ /* Although the original thought was we needed the response buf for */
-+ /* potential retries of smb operations it turns out we can determine */
-+ /* from the mid flags when the request buffer can be resent without */
-+ /* having to use a second distinct buffer for the response */
-+ *response_buf = *request_buf;
-+
-+ header_assemble((struct smb_hdr *) *request_buf, smb_command, tcon,
-+ wct /*wct */ );
-+
-+#ifdef CONFIG_CIFS_STATS
-+ if(tcon != NULL) {
-+ atomic_inc(&tcon->num_smbs_sent);
-+ }
-+#endif
-+ return rc;
-+}
-+
-+int
-+CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses)
-+{
-+ NEGOTIATE_REQ *pSMB;
-+ NEGOTIATE_RSP *pSMBr;
-+ int rc = 0;
-+ int bytes_returned;
-+ struct TCP_Server_Info * server;
-+
-+ if(ses->server)
-+ server = ses->server;
-+ else {
-+ rc = -EIO;
-+ return rc;
-+ }
-+ rc = smb_init(SMB_COM_NEGOTIATE, 0, NULL /* no tcon yet */ ,
-+ (void **) &pSMB, (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->hdr.Flags2 |= SMBFLG2_UNICODE;
-+ if (extended_security)
-+ pSMB->hdr.Flags2 |= SMBFLG2_EXT_SEC;
-+
-+ pSMB->ByteCount = strlen(protocols[0].name) + 1;
-+ strncpy(pSMB->DialectsArray, protocols[0].name, 30);
-+ /* null guaranteed to be at end of source and target buffers anyway */
-+
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc == 0) {
-+ server->secMode = pSMBr->SecurityMode;
-+ server->secType = NTLM; /* BB override default for NTLMv2 or krb*/
-+ /* one byte - no need to convert this or EncryptionKeyLen from le,*/
-+ server->maxReq = le16_to_cpu(pSMBr->MaxMpxCount);
-+ /* probably no need to store and check maxvcs */
-+ server->maxBuf =
-+ min(le32_to_cpu(pSMBr->MaxBufferSize),
-+ (__u32) CIFS_MAX_MSGSIZE + MAX_CIFS_HDR_SIZE);
-+ server->maxRw = le32_to_cpu(pSMBr->MaxRawSize);
-+ cFYI(0, ("Max buf = %d ", ses->server->maxBuf));
-+ GETU32(ses->server->sessid) = le32_to_cpu(pSMBr->SessionKey);
-+ server->capabilities = le32_to_cpu(pSMBr->Capabilities);
-+ server->timeZone = le16_to_cpu(pSMBr->ServerTimeZone);
-+ /* BB with UTC do we ever need to be using srvr timezone? */
-+ if (pSMBr->EncryptionKeyLength == CIFS_CRYPTO_KEY_SIZE) {
-+ memcpy(server->cryptKey, pSMBr->u.EncryptionKey,
-+ CIFS_CRYPTO_KEY_SIZE);
-+ } else if ((pSMBr->hdr.Flags2 & SMBFLG2_EXT_SEC)
-+ && (pSMBr->EncryptionKeyLength == 0)) {
-+ /* decode security blob */
-+ } else
-+ rc = -EIO;
-+
-+ /* BB might be helpful to save off the domain of server here */
-+
-+ if (pSMBr->hdr.Flags2 & SMBFLG2_EXT_SEC) {
-+ if (pSMBr->ByteCount < 16)
-+ rc = -EIO;
-+ else if (pSMBr->ByteCount == 16) {
-+ server->secType = RawNTLMSSP;
-+ if (server->socketUseCount.counter > 1) {
-+ if (memcmp
-+ (server->server_GUID,
-+ pSMBr->u.extended_response.
-+ GUID, 16) != 0) {
-+ cFYI(1,
-+ ("UID of server does not match previous connection to same ip address"));
-+ memcpy(server->
-+ server_GUID,
-+ pSMBr->u.
-+ extended_response.
-+ GUID, 16);
-+ }
-+ } else
-+ memcpy(server->server_GUID,
-+ pSMBr->u.extended_response.
-+ GUID, 16);
-+ } else {
-+ rc = decode_negTokenInit(pSMBr->u.
-+ extended_response.
-+ SecurityBlob,
-+ pSMBr->ByteCount -
-+ 16, &server->secType);
-+ }
-+ } else
-+ server->capabilities &= ~CAP_EXTENDED_SECURITY;
-+ if(sign_CIFS_PDUs == FALSE) {
-+ if(server->secMode & SECMODE_SIGN_REQUIRED)
-+ cERROR(1,
-+ ("Server requires /proc/fs/cifs/PacketSigningEnabled"));
-+ server->secMode &= ~(SECMODE_SIGN_ENABLED | SECMODE_SIGN_REQUIRED);
-+ } else if(sign_CIFS_PDUs == 1) {
-+ if((server->secMode & SECMODE_SIGN_REQUIRED) == 0)
-+ server->secMode &= ~(SECMODE_SIGN_ENABLED | SECMODE_SIGN_REQUIRED);
-+ }
-+
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ return rc;
-+}
-+
-+int
-+CIFSSMBTDis(const int xid, struct cifsTconInfo *tcon)
-+{
-+ struct smb_hdr *smb_buffer;
-+ struct smb_hdr *smb_buffer_response;
-+ int rc = 0;
-+ int length;
-+
-+ cFYI(1, ("In tree disconnect"));
-+ /*
-+ * If last user of the connection and
-+ * connection alive - disconnect it
-+ * If this is the last connection on the server session disconnect it
-+ * (and inside session disconnect we should check if tcp socket needs
-+ * to be freed and kernel thread woken up).
-+ */
-+ if (tcon)
-+ down(&tcon->tconSem);
-+ else
-+ return -EIO;
-+
-+ atomic_dec(&tcon->useCount);
-+ if (atomic_read(&tcon->useCount) > 0) {
-+ up(&tcon->tconSem);
-+ return -EBUSY;
-+ }
-+
-+ /* No need to return error on this operation if tid invalidated and
-+ closed on server already e.g. due to tcp session crashing */
-+ if(tcon->tidStatus == CifsNeedReconnect) {
-+ up(&tcon->tconSem);
-+ return 0;
-+ }
-+
-+ if((tcon->ses == 0) || (tcon->ses->server == 0)) {
-+ up(&tcon->tconSem);
-+ return -EIO;
-+ }
-+
-+ rc = smb_init(SMB_COM_TREE_DISCONNECT, 0, tcon,
-+ (void **) &smb_buffer, (void **) &smb_buffer_response);
-+ if (rc) {
-+ up(&tcon->tconSem);
-+ return rc;
-+ }
-+ rc = SendReceive(xid, tcon->ses, smb_buffer, smb_buffer_response,
-+ &length, 0);
-+ if (rc)
-+ cFYI(1, (" Tree disconnect failed %d", rc));
-+
-+ if (smb_buffer)
-+ cifs_buf_release(smb_buffer);
-+ up(&tcon->tconSem);
-+
-+ /* No need to return error on this operation if tid invalidated and
-+ closed on server already e.g. due to tcp session crashing */
-+ if (rc == -EAGAIN)
-+ rc = 0;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBLogoff(const int xid, struct cifsSesInfo *ses)
-+{
-+ struct smb_hdr *smb_buffer_response;
-+ LOGOFF_ANDX_REQ *pSMB;
-+ int rc = 0;
-+ int length;
-+
-+ cFYI(1, ("In SMBLogoff for session disconnect"));
-+ if (ses)
-+ down(&ses->sesSem);
-+ else
-+ return -EIO;
-+
-+ atomic_dec(&ses->inUse);
-+ if (atomic_read(&ses->inUse) > 0) {
-+ up(&ses->sesSem);
-+ return -EBUSY;
-+ }
-+
-+ rc = smb_init(SMB_COM_LOGOFF_ANDX, 2, NULL /* no tcon anymore */,
-+ (void **) &pSMB, (void **) &smb_buffer_response);
-+
-+ if(ses->server->secMode & (SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED))
-+ pSMB->hdr.Flags2 |= SMBFLG2_SECURITY_SIGNATURE;
-+
-+ if (rc) {
-+ up(&ses->sesSem);
-+ return rc;
-+ }
-+
-+ pSMB->hdr.Uid = ses->Suid;
-+
-+ pSMB->AndXCommand = 0xFF;
-+ rc = SendReceive(xid, ses, (struct smb_hdr *) pSMB,
-+ smb_buffer_response, &length, 0);
-+ if (ses->server) {
-+ atomic_dec(&ses->server->socketUseCount);
-+ if (atomic_read(&ses->server->socketUseCount) == 0) {
-+ spin_lock(&GlobalMid_Lock);
-+ ses->server->tcpStatus = CifsExiting;
-+ spin_unlock(&GlobalMid_Lock);
-+ rc = -ESHUTDOWN;
-+ }
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ up(&ses->sesSem);
-+
-+ /* if session dead then we do not need to do ulogoff,
-+ since server closed smb session, no sense reporting
-+ error */
-+ if (rc == -EAGAIN)
-+ rc = 0;
-+ return rc;
-+}
-+
-+int
-+CIFSSMBDelFile(const int xid, struct cifsTconInfo *tcon,
-+ const char *fileName, const struct nls_table *nls_codepage)
-+{
-+ DELETE_FILE_REQ *pSMB = NULL;
-+ DELETE_FILE_RSP *pSMBr = NULL;
-+ int rc = 0;
-+ int bytes_returned;
-+ int name_len;
-+
-+DelFileRetry:
-+ rc = smb_init(SMB_COM_DELETE, 1, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->fileName, fileName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(fileName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->fileName, fileName, name_len);
-+ }
-+ pSMB->SearchAttributes =
-+ cpu_to_le16(ATTR_READONLY | ATTR_HIDDEN | ATTR_SYSTEM);
-+ pSMB->ByteCount = name_len + 1;
-+ pSMB->BufferFormat = 0x04;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Error in RMFile = %d", rc));
-+ }
-+#ifdef CONFIG_CIFS_STATS
-+ else {
-+ atomic_inc(&tcon->num_deletes);
-+ }
-+#endif
-+
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ if (rc == -EAGAIN)
-+ goto DelFileRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBRmDir(const int xid, struct cifsTconInfo *tcon,
-+ const char *dirName, const struct nls_table *nls_codepage)
-+{
-+ DELETE_DIRECTORY_REQ *pSMB = NULL;
-+ DELETE_DIRECTORY_RSP *pSMBr = NULL;
-+ int rc = 0;
-+ int bytes_returned;
-+ int name_len;
-+
-+ cFYI(1, ("In CIFSSMBRmDir"));
-+RmDirRetry:
-+ rc = smb_init(SMB_COM_DELETE_DIRECTORY, 0, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len = cifs_strtoUCS((wchar_t *) pSMB->DirName, dirName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(dirName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->DirName, dirName, name_len);
-+ }
-+
-+ pSMB->ByteCount = name_len + 1;
-+ pSMB->BufferFormat = 0x04;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Error in RMDir = %d", rc));
-+ }
-+#ifdef CONFIG_CIFS_STATS
-+ else {
-+ atomic_inc(&tcon->num_rmdirs);
-+ }
-+#endif
-+
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ if (rc == -EAGAIN)
-+ goto RmDirRetry;
-+ return rc;
-+}
-+
-+int
-+CIFSSMBMkDir(const int xid, struct cifsTconInfo *tcon,
-+ const char *name, const struct nls_table *nls_codepage)
-+{
-+ int rc = 0;
-+ CREATE_DIRECTORY_REQ *pSMB = NULL;
-+ CREATE_DIRECTORY_RSP *pSMBr = NULL;
-+ int bytes_returned;
-+ int name_len;
-+
-+ cFYI(1, ("In CIFSSMBMkDir"));
-+MkDirRetry:
-+ rc = smb_init(SMB_COM_CREATE_DIRECTORY, 0, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len = cifs_strtoUCS((wchar_t *) pSMB->DirName, name, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(name, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->DirName, name, name_len);
-+ }
-+
-+ pSMB->ByteCount = name_len + 1 /* for buf format */ ;
-+ pSMB->BufferFormat = 0x04;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Error in Mkdir = %d", rc));
-+ }
-+#ifdef CONFIG_CIFS_STATS
-+ else {
-+ atomic_inc(&tcon->num_mkdirs);
-+ }
-+#endif
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ if (rc == -EAGAIN)
-+ goto MkDirRetry;
-+ return rc;
-+}
-+
-+int
-+CIFSSMBOpen(const int xid, struct cifsTconInfo *tcon,
-+ const char *fileName, const int openDisposition,
-+ const int access_flags, const int create_options, __u16 * netfid,
-+ int *pOplock, FILE_ALL_INFO * pfile_info,
-+ const struct nls_table *nls_codepage)
-+{
-+ int rc = -EACCES;
-+ OPEN_REQ *pSMB = NULL;
-+ OPEN_RSP *pSMBr = NULL;
-+ int bytes_returned;
-+ int name_len;
-+
-+openRetry:
-+ rc = smb_init(SMB_COM_NT_CREATE_ANDX, 24, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->AndXCommand = 0xFF; /* none */
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ pSMB->ByteCount = 1; /* account for one byte pad to word boundary */
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) (pSMB->fileName + 1),
-+ fileName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ pSMB->NameLength = cpu_to_le16(name_len);
-+ } else { /* BB improve the check for buffer overruns BB */
-+ pSMB->ByteCount = 0; /* no pad */
-+ name_len = strnlen(fileName, 530);
-+ name_len++; /* trailing null */
-+ pSMB->NameLength = cpu_to_le16(name_len);
-+ strncpy(pSMB->fileName, fileName, name_len);
-+ }
-+ if (*pOplock & REQ_OPLOCK)
-+ pSMB->OpenFlags = cpu_to_le32(REQ_OPLOCK);
-+ else if (*pOplock & REQ_BATCHOPLOCK) {
-+ pSMB->OpenFlags = cpu_to_le32(REQ_BATCHOPLOCK);
-+ }
-+ pSMB->DesiredAccess = cpu_to_le32(access_flags);
-+ pSMB->AllocationSize = 0;
-+ pSMB->FileAttributes = ATTR_NORMAL;
-+ /* XP does not handle ATTR_POSIX_SEMANTICS */
-+ /* but it helps speed up case sensitive checks for other
-+ servers such as Samba */
-+ if (tcon->ses->capabilities & CAP_UNIX)
-+ pSMB->FileAttributes |= ATTR_POSIX_SEMANTICS;
-+
-+ /* if ((omode & S_IWUGO) == 0)
-+ pSMB->FileAttributes |= ATTR_READONLY;*/
-+ /* Above line causes problems due to vfs splitting create into two
-+ pieces - need to set mode after file created not while it is
-+ being created */
-+ pSMB->FileAttributes = cpu_to_le32(pSMB->FileAttributes);
-+ pSMB->ShareAccess = cpu_to_le32(FILE_SHARE_ALL);
-+ pSMB->CreateDisposition = cpu_to_le32(openDisposition);
-+ pSMB->CreateOptions = cpu_to_le32(create_options);
-+ pSMB->ImpersonationLevel = cpu_to_le32(SECURITY_IMPERSONATION); /* BB ??*/
-+ pSMB->SecurityFlags =
-+ cpu_to_le32(SECURITY_CONTEXT_TRACKING | SECURITY_EFFECTIVE_ONLY);
-+
-+ pSMB->ByteCount += name_len;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+ /* long_op set to 1 to allow for oplock break timeouts */
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 1);
-+ if (rc) {
-+ cFYI(1, ("Error in Open = %d", rc));
-+ } else {
-+ *pOplock = pSMBr->OplockLevel; /* one byte no need to le_to_cpu */
-+ *netfid = pSMBr->Fid; /* cifs fid stays in le */
-+ /* Let caller know file was created so we can set the mode. */
-+ /* Do we care about the CreateAction in any other cases? */
-+ if(cpu_to_le32(FILE_CREATE) == pSMBr->CreateAction)
-+ *pOplock |= CIFS_CREATE_ACTION;
-+ if(pfile_info) {
-+ memcpy((char *)pfile_info,(char *)&pSMBr->CreationTime,
-+ 36 /* CreationTime to Attributes */);
-+ /* the file_info buf is endian converted by caller */
-+ pfile_info->AllocationSize = pSMBr->AllocationSize;
-+ pfile_info->EndOfFile = pSMBr->EndOfFile;
-+ pfile_info->NumberOfLinks = cpu_to_le32(1);
-+ }
-+
-+#ifdef CONFIG_CIFS_STATS
-+ atomic_inc(&tcon->num_opens);
-+#endif
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ if (rc == -EAGAIN)
-+ goto openRetry;
-+ return rc;
-+}
-+
-+/* If no buffer passed in, then caller wants to do the copy
-+ as in the case of readpages so the SMB buffer must be
-+ freed by the caller */
-+
-+int
-+CIFSSMBRead(const int xid, struct cifsTconInfo *tcon,
-+ const int netfid, const unsigned int count,
-+ const __u64 lseek, unsigned int *nbytes, char **buf)
-+{
-+ int rc = -EACCES;
-+ READ_REQ *pSMB = NULL;
-+ READ_RSP *pSMBr = NULL;
-+ char *pReadData = NULL;
-+ int bytes_returned;
-+
-+ *nbytes = 0;
-+ rc = smb_init(SMB_COM_READ_ANDX, 12, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ /* tcon and ses pointer are checked in smb_init */
-+ if (tcon->ses->server == NULL)
-+ return -ECONNABORTED;
-+
-+ pSMB->AndXCommand = 0xFF; /* none */
-+ pSMB->Fid = netfid;
-+ pSMB->OffsetLow = cpu_to_le32(lseek & 0xFFFFFFFF);
-+ pSMB->OffsetHigh = cpu_to_le32(lseek >> 32);
-+ pSMB->Remaining = 0;
-+ pSMB->MaxCount = cpu_to_le16(count);
-+ pSMB->MaxCountHigh = 0;
-+ pSMB->ByteCount = 0; /* no need to do le conversion since it is 0 */
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cERROR(1, ("Send error in read = %d", rc));
-+ } else {
-+ pSMBr->DataLength = le16_to_cpu(pSMBr->DataLength);
-+ *nbytes = pSMBr->DataLength;
-+ /*check that DataLength would not go beyond end of SMB */
-+ if ((pSMBr->DataLength > CIFS_MAX_MSGSIZE)
-+ || (pSMBr->DataLength > count)) {
-+ cFYI(1,("bad length %d for count %d",pSMBr->DataLength,count));
-+ rc = -EIO;
-+ *nbytes = 0;
-+ } else {
-+ pReadData =
-+ (char *) (&pSMBr->hdr.Protocol) +
-+ le16_to_cpu(pSMBr->DataOffset);
-+/* if(rc = copy_to_user(buf, pReadData, pSMBr->DataLength)) {
-+ cERROR(1,("Faulting on read rc = %d",rc));
-+ rc = -EFAULT;
-+ }*/ /* can not use copy_to_user when using page cache*/
-+ if(*buf)
-+ memcpy(*buf,pReadData,pSMBr->DataLength);
-+ }
-+ }
-+ if (pSMB) {
-+ if(*buf)
-+ cifs_buf_release(pSMB);
-+ else
-+ *buf = (char *)pSMB;
-+ }
-+
-+ /* Note: On -EAGAIN error only caller can retry on handle based calls
-+ since file handle passed in no longer valid */
-+ return rc;
-+}
-+
-+int
-+CIFSSMBWrite(const int xid, struct cifsTconInfo *tcon,
-+ const int netfid, const unsigned int count,
-+ const __u64 offset, unsigned int *nbytes, const char *buf,
-+ const int long_op)
-+{
-+ int rc = -EACCES;
-+ WRITE_REQ *pSMB = NULL;
-+ WRITE_RSP *pSMBr = NULL;
-+ int bytes_returned;
-+
-+ rc = smb_init(SMB_COM_WRITE_ANDX, 14, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+ /* tcon and ses pointer are checked in smb_init */
-+ if (tcon->ses->server == NULL)
-+ return -ECONNABORTED;
-+
-+ pSMB->AndXCommand = 0xFF; /* none */
-+ pSMB->Fid = netfid;
-+ pSMB->OffsetLow = cpu_to_le32(offset & 0xFFFFFFFF);
-+ pSMB->OffsetHigh = cpu_to_le32(offset >> 32);
-+ pSMB->Remaining = 0;
-+ if (count > ((tcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE) & 0xFFFFFF00))
-+ pSMB->DataLengthLow =
-+ (tcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE) & 0xFFFFFF00;
-+ else
-+ pSMB->DataLengthLow = count;
-+ pSMB->DataLengthHigh = 0;
-+ pSMB->DataOffset =
-+ cpu_to_le16(offsetof(struct smb_com_write_req,Data) - 4);
-+
-+ memcpy(pSMB->Data,buf,pSMB->DataLengthLow);
-+
-+ pSMB->ByteCount += pSMB->DataLengthLow + 1 /* pad */ ;
-+ pSMB->DataLengthLow = cpu_to_le16(pSMB->DataLengthLow);
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, long_op);
-+ if (rc) {
-+ cFYI(1, ("Send error in write = %d", rc));
-+ *nbytes = 0;
-+ } else
-+ *nbytes = le16_to_cpu(pSMBr->Count);
-+
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ /* Note: On -EAGAIN error only caller can retry on handle based calls
-+ since file handle passed in no longer valid */
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBLock(const int xid, struct cifsTconInfo *tcon,
-+ const __u16 smb_file_id, const __u64 len,
-+ const __u64 offset, const __u32 numUnlock,
-+ const __u32 numLock, const __u8 lockType, const int waitFlag)
-+{
-+ int rc = 0;
-+ LOCK_REQ *pSMB = NULL;
-+ LOCK_RSP *pSMBr = NULL;
-+ int bytes_returned;
-+ int timeout = 0;
-+ __u64 temp;
-+
-+ cFYI(1, ("In CIFSSMBLock - timeout %d numLock %d",waitFlag,numLock));
-+ rc = smb_init(SMB_COM_LOCKING_ANDX, 8, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if(lockType == LOCKING_ANDX_OPLOCK_RELEASE) {
-+ timeout = -1; /* no response expected */
-+ pSMB->Timeout = 0;
-+ } else if (waitFlag == TRUE) {
-+ timeout = 3; /* blocking operation, no timeout */
-+ pSMB->Timeout = -1; /* blocking - do not time out */
-+ } else {
-+ pSMB->Timeout = 0;
-+ }
-+
-+ pSMB->NumberOfLocks = cpu_to_le32(numLock);
-+ pSMB->NumberOfUnlocks = cpu_to_le32(numUnlock);
-+ pSMB->LockType = lockType;
-+ pSMB->AndXCommand = 0xFF; /* none */
-+ pSMB->Fid = smb_file_id; /* netfid stays le */
-+
-+ if(numLock != 0) {
-+ pSMB->Locks[0].Pid = cpu_to_le16(current->tgid);
-+ /* BB where to store pid high? */
-+ temp = cpu_to_le64(len);
-+ pSMB->Locks[0].LengthLow = (__u32)(temp & 0xFFFFFFFF);
-+ pSMB->Locks[0].LengthHigh = (__u32)(temp>>32);
-+ temp = cpu_to_le64(offset);
-+ pSMB->Locks[0].OffsetLow = (__u32)(temp & 0xFFFFFFFF);
-+ pSMB->Locks[0].OffsetHigh = (__u32)(temp>>32);
-+ pSMB->ByteCount = sizeof (LOCKING_ANDX_RANGE);
-+ } else {
-+ /* oplock break */
-+ pSMB->ByteCount = 0;
-+ }
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, timeout);
-+
-+ if (rc) {
-+ cFYI(1, ("Send error in Lock = %d", rc));
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ /* Note: On -EAGAIN error only caller can retry on handle based calls
-+ since file handle passed in no longer valid */
-+ return rc;
-+}
-+
-+int
-+CIFSSMBClose(const int xid, struct cifsTconInfo *tcon, int smb_file_id)
-+{
-+ int rc = 0;
-+ CLOSE_REQ *pSMB = NULL;
-+ CLOSE_RSP *pSMBr = NULL;
-+ int bytes_returned;
-+ cFYI(1, ("In CIFSSMBClose"));
-+
-+/* do not retry on dead session on close */
-+ rc = smb_init(SMB_COM_CLOSE, 3, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if(rc == -EAGAIN)
-+ return 0;
-+ if (rc)
-+ return rc;
-+
-+ pSMB->FileID = (__u16) smb_file_id;
-+ pSMB->LastWriteTime = 0;
-+ pSMB->ByteCount = 0;
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ if(rc!=-EINTR) {
-+ /* EINTR is expected when user ctl-c to kill app */
-+ cERROR(1, ("Send error in Close = %d", rc));
-+ }
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ /* Since session is dead, file will be closed on server already */
-+ if(rc == -EAGAIN)
-+ rc = 0;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBRename(const int xid, struct cifsTconInfo *tcon,
-+ const char *fromName, const char *toName,
-+ const struct nls_table *nls_codepage)
-+{
-+ int rc = 0;
-+ RENAME_REQ *pSMB = NULL;
-+ RENAME_RSP *pSMBr = NULL;
-+ int bytes_returned;
-+ int name_len, name_len2;
-+
-+ cFYI(1, ("In CIFSSMBRename"));
-+renameRetry:
-+ rc = smb_init(SMB_COM_RENAME, 1, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->BufferFormat = 0x04;
-+ pSMB->SearchAttributes =
-+ cpu_to_le16(ATTR_READONLY | ATTR_HIDDEN | ATTR_SYSTEM |
-+ ATTR_DIRECTORY);
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->OldFileName, fromName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ pSMB->OldFileName[name_len] = 0x04; /* pad */
-+ /* protocol requires ASCII signature byte on Unicode string */
-+ pSMB->OldFileName[name_len + 1] = 0x00;
-+ name_len2 =
-+ cifs_strtoUCS((wchar_t *) & pSMB->
-+ OldFileName[name_len + 2], toName, 530,
-+ nls_codepage);
-+ name_len2 += 1 /* trailing null */ + 1 /* Signature word */ ;
-+ name_len2 *= 2; /* convert to bytes */
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(fromName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->OldFileName, fromName, name_len);
-+ name_len2 = strnlen(toName, 530);
-+ name_len2++; /* trailing null */
-+ pSMB->OldFileName[name_len] = 0x04; /* 2nd buffer format */
-+ strncpy(&pSMB->OldFileName[name_len + 1], toName, name_len2);
-+ name_len2++; /* trailing null */
-+ name_len2++; /* signature byte */
-+ }
-+
-+ pSMB->ByteCount = 1 /* 1st signature byte */ + name_len + name_len2;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Send error in rename = %d", rc));
-+ }
-+
-+#ifdef CONFIG_CIFS_STATS
-+ else {
-+ atomic_inc(&tcon->num_renames);
-+ }
-+#endif
-+
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ if (rc == -EAGAIN)
-+ goto renameRetry;
-+
-+ return rc;
-+}
-+
-+int CIFSSMBRenameOpenFile(const int xid,struct cifsTconInfo *pTcon,
-+ int netfid, char * target_name, const struct nls_table * nls_codepage)
-+{
-+ struct smb_com_transaction2_sfi_req *pSMB = NULL;
-+ struct smb_com_transaction2_sfi_rsp *pSMBr = NULL;
-+ struct set_file_rename * rename_info;
-+ char *data_offset;
-+ char dummy_string[30];
-+ int rc = 0;
-+ int bytes_returned = 0;
-+ int len_of_str;
-+
-+ cFYI(1, ("Rename to File by handle"));
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, pTcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->ParameterCount = 6;
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = offsetof(struct smb_com_transaction2_sfi_req,
-+ Fid) - 4;
-+ pSMB->DataOffset = pSMB->ParameterOffset + pSMB->ParameterCount;
-+
-+ data_offset = (char *) (&pSMB->hdr.Protocol) + pSMB->DataOffset;
-+ rename_info = (struct set_file_rename *) data_offset;
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find max SMB PDU from sess */
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FILE_INFORMATION);
-+ pSMB->ByteCount = 3 /* pad */ + pSMB->ParameterCount;
-+ pSMB->ParameterCount = cpu_to_le16(pSMB->ParameterCount);
-+ pSMB->TotalParameterCount = pSMB->ParameterCount;
-+ pSMB->ParameterOffset = cpu_to_le16(pSMB->ParameterOffset);
-+ pSMB->DataOffset = cpu_to_le16(pSMB->DataOffset);
-+ /* construct random name ".cifs_tmp<inodenum><mid>" */
-+ rename_info->overwrite = cpu_to_le32(1);
-+ rename_info->root_fid = 0;
-+ /* unicode only call */
-+ if(target_name == NULL) {
-+ sprintf(dummy_string,"cifs%x",pSMB->hdr.Mid);
-+ len_of_str = cifs_strtoUCS((wchar_t *) rename_info->target_name, dummy_string, 24, nls_codepage);
-+ } else {
-+ len_of_str = cifs_strtoUCS((wchar_t *) rename_info->target_name, target_name, 530, nls_codepage);
-+ }
-+ rename_info->target_name_len = cpu_to_le32(2 * len_of_str);
-+ pSMB->DataCount = 12 /* sizeof(struct set_file_rename) */ + (2 * len_of_str) + 2;
-+ pSMB->ByteCount += pSMB->DataCount;
-+ pSMB->DataCount = cpu_to_le16(pSMB->DataCount);
-+ pSMB->TotalDataCount = pSMB->DataCount;
-+ pSMB->Fid = netfid;
-+ pSMB->InformationLevel =
-+ cpu_to_le16(SMB_SET_FILE_RENAME_INFORMATION);
-+ pSMB->Reserved4 = 0;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+ rc = SendReceive(xid, pTcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1,("Send error in Rename (by file handle) = %d", rc));
-+ }
-+#ifdef CONFIG_CIFS_STATS
-+ else {
-+ atomic_inc(&pTcon->num_t2renames);
-+ }
-+#endif
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ /* Note: On -EAGAIN error only caller can retry on handle based calls
-+ since file handle passed in no longer valid */
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBCopy(const int xid, struct cifsTconInfo *tcon, const char * fromName,
-+ const __u16 target_tid, const char *toName, const int flags,
-+ const struct nls_table *nls_codepage)
-+{
-+ int rc = 0;
-+ COPY_REQ *pSMB = NULL;
-+ COPY_RSP *pSMBr = NULL;
-+ int bytes_returned;
-+ int name_len, name_len2;
-+
-+ cFYI(1, ("In CIFSSMBCopy"));
-+copyRetry:
-+ rc = smb_init(SMB_COM_COPY, 1, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->BufferFormat = 0x04;
-+ pSMB->Tid2 = target_tid;
-+
-+ if(flags & COPY_TREE)
-+ pSMB->Flags |= COPY_TREE;
-+ pSMB->Flags = cpu_to_le16(pSMB->Flags);
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len = cifs_strtoUCS((wchar_t *) pSMB->OldFileName,
-+ fromName,
-+ 530 /* find define for this maxpathcomponent */,
-+ nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ pSMB->OldFileName[name_len] = 0x04; /* pad */
-+ /* protocol requires ASCII signature byte on Unicode string */
-+ pSMB->OldFileName[name_len + 1] = 0x00;
-+ name_len2 = cifs_strtoUCS((wchar_t *) & pSMB->
-+ OldFileName[name_len + 2], toName, 530,
-+ nls_codepage);
-+ name_len2 += 1 /* trailing null */ + 1 /* Signature word */ ;
-+ name_len2 *= 2; /* convert to bytes */
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(fromName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->OldFileName, fromName, name_len);
-+ name_len2 = strnlen(toName, 530);
-+ name_len2++; /* trailing null */
-+ pSMB->OldFileName[name_len] = 0x04; /* 2nd buffer format */
-+ strncpy(&pSMB->OldFileName[name_len + 1], toName, name_len2);
-+ name_len2++; /* trailing null */
-+ name_len2++; /* signature byte */
-+ }
-+
-+ pSMB->ByteCount = 1 /* 1st signature byte */ + name_len + name_len2;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Send error in copy = %d with %d files copied",
-+ rc, pSMBr->CopyCount));
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ if (rc == -EAGAIN)
-+ goto copyRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSUnixCreateSymLink(const int xid, struct cifsTconInfo *tcon,
-+ const char *fromName, const char *toName,
-+ const struct nls_table *nls_codepage)
-+{
-+ TRANSACTION2_SPI_REQ *pSMB = NULL;
-+ TRANSACTION2_SPI_RSP *pSMBr = NULL;
-+ char *data_offset;
-+ int name_len;
-+ int name_len_target;
-+ int rc = 0;
-+ int bytes_returned = 0;
-+
-+ cFYI(1, ("In Symlink Unix style"));
-+createSymLinkRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->FileName, fromName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(fromName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->FileName, fromName, name_len);
-+ }
-+ pSMB->ParameterCount = 6 + name_len;
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = offsetof(struct smb_com_transaction2_spi_req,
-+ InformationLevel) - 4;
-+ pSMB->DataOffset = pSMB->ParameterOffset + pSMB->ParameterCount;
-+
-+ data_offset = (char *) (&pSMB->hdr.Protocol) + pSMB->DataOffset;
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len_target =
-+ cifs_strtoUCS((wchar_t *) data_offset, toName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len_target++; /* trailing null */
-+ name_len_target *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len_target = strnlen(toName, 530);
-+ name_len_target++; /* trailing null */
-+ strncpy(data_offset, toName, name_len_target);
-+ }
-+
-+ pSMB->DataCount = name_len_target;
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ /* BB find exact max on data count below from sess */
-+ pSMB->MaxDataCount = cpu_to_le16(1000);
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_SET_PATH_INFORMATION);
-+ pSMB->ByteCount = 3 /* pad */ + pSMB->ParameterCount + pSMB->DataCount;
-+ pSMB->DataCount = cpu_to_le16(pSMB->DataCount);
-+ pSMB->ParameterCount = cpu_to_le16(pSMB->ParameterCount);
-+ pSMB->TotalDataCount = pSMB->DataCount;
-+ pSMB->TotalParameterCount = pSMB->ParameterCount;
-+ pSMB->ParameterOffset = cpu_to_le16(pSMB->ParameterOffset);
-+ pSMB->DataOffset = cpu_to_le16(pSMB->DataOffset);
-+ pSMB->InformationLevel = cpu_to_le16(SMB_SET_FILE_UNIX_LINK);
-+ pSMB->Reserved4 = 0;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1,
-+ ("Send error in SetPathInfo (create symlink) = %d",
-+ rc));
-+ }
-+
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ if (rc == -EAGAIN)
-+ goto createSymLinkRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSUnixCreateHardLink(const int xid, struct cifsTconInfo *tcon,
-+ const char *fromName, const char *toName,
-+ const struct nls_table *nls_codepage)
-+{
-+ TRANSACTION2_SPI_REQ *pSMB = NULL;
-+ TRANSACTION2_SPI_RSP *pSMBr = NULL;
-+ char *data_offset;
-+ int name_len;
-+ int name_len_target;
-+ int rc = 0;
-+ int bytes_returned = 0;
-+
-+ cFYI(1, ("In Create Hard link Unix style"));
-+createHardLinkRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len = cifs_strtoUCS((wchar_t *) pSMB->FileName, toName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(toName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->FileName, toName, name_len);
-+ }
-+ pSMB->ParameterCount = 6 + name_len;
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = offsetof(struct smb_com_transaction2_spi_req,
-+ InformationLevel) - 4;
-+ pSMB->DataOffset = pSMB->ParameterOffset + pSMB->ParameterCount;
-+
-+ data_offset = (char *) (&pSMB->hdr.Protocol) + pSMB->DataOffset;
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len_target =
-+ cifs_strtoUCS((wchar_t *) data_offset, fromName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len_target++; /* trailing null */
-+ name_len_target *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len_target = strnlen(fromName, 530);
-+ name_len_target++; /* trailing null */
-+ strncpy(data_offset, fromName, name_len_target);
-+ }
-+
-+ pSMB->DataCount = name_len_target;
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ /* BB find exact max on data count below from sess*/
-+ pSMB->MaxDataCount = cpu_to_le16(1000);
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_SET_PATH_INFORMATION);
-+ pSMB->ByteCount = 3 /* pad */ + pSMB->ParameterCount + pSMB->DataCount;
-+ pSMB->ParameterCount = cpu_to_le16(pSMB->ParameterCount);
-+ pSMB->TotalParameterCount = pSMB->ParameterCount;
-+ pSMB->DataCount = cpu_to_le16(pSMB->DataCount);
-+ pSMB->TotalDataCount = pSMB->DataCount;
-+ pSMB->ParameterOffset = cpu_to_le16(pSMB->ParameterOffset);
-+ pSMB->DataOffset = cpu_to_le16(pSMB->DataOffset);
-+ pSMB->InformationLevel = cpu_to_le16(SMB_SET_FILE_UNIX_HLINK);
-+ pSMB->Reserved4 = 0;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Send error in SetPathInfo (hard link) = %d", rc));
-+ }
-+
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ if (rc == -EAGAIN)
-+ goto createHardLinkRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSCreateHardLink(const int xid, struct cifsTconInfo *tcon,
-+ const char *fromName, const char *toName,
-+ const struct nls_table *nls_codepage)
-+{
-+ int rc = 0;
-+ NT_RENAME_REQ *pSMB = NULL;
-+ RENAME_RSP *pSMBr = NULL;
-+ int bytes_returned;
-+ int name_len, name_len2;
-+
-+ cFYI(1, ("In CIFSCreateHardLink"));
-+winCreateHardLinkRetry:
-+
-+ rc = smb_init(SMB_COM_NT_RENAME, 4, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->SearchAttributes =
-+ cpu_to_le16(ATTR_READONLY | ATTR_HIDDEN | ATTR_SYSTEM |
-+ ATTR_DIRECTORY);
-+ pSMB->Flags = cpu_to_le16(CREATE_HARD_LINK);
-+ pSMB->ClusterCount = 0;
-+
-+ pSMB->BufferFormat = 0x04;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->OldFileName, fromName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ pSMB->OldFileName[name_len] = 0; /* pad */
-+ pSMB->OldFileName[name_len + 1] = 0x04;
-+ name_len2 =
-+ cifs_strtoUCS((wchar_t *) & pSMB->
-+ OldFileName[name_len + 2], toName, 530,
-+ nls_codepage);
-+ name_len2 += 1 /* trailing null */ + 1 /* Signature word */ ;
-+ name_len2 *= 2; /* convert to bytes */
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(fromName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->OldFileName, fromName, name_len);
-+ name_len2 = strnlen(toName, 530);
-+ name_len2++; /* trailing null */
-+ pSMB->OldFileName[name_len] = 0x04; /* 2nd buffer format */
-+ strncpy(&pSMB->OldFileName[name_len + 1], toName, name_len2);
-+ name_len2++; /* trailing null */
-+ name_len2++; /* signature byte */
-+ }
-+
-+ pSMB->ByteCount = 1 /* string type byte */ + name_len + name_len2;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Send error in hard link (NT rename) = %d", rc));
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ if (rc == -EAGAIN)
-+ goto winCreateHardLinkRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBUnixQuerySymLink(const int xid, struct cifsTconInfo *tcon,
-+ const unsigned char *searchName,
-+ char *symlinkinfo, const int buflen,
-+ const struct nls_table *nls_codepage)
-+{
-+/* SMB_QUERY_FILE_UNIX_LINK */
-+ TRANSACTION2_QPI_REQ *pSMB = NULL;
-+ TRANSACTION2_QPI_RSP *pSMBr = NULL;
-+ int rc = 0;
-+ int bytes_returned;
-+ int name_len;
-+
-+ cFYI(1, ("In QPathSymLinkInfo (Unix) for path %s", searchName));
-+
-+querySymLinkRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->FileName, searchName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(searchName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->FileName, searchName, name_len);
-+ }
-+
-+ pSMB->TotalParameterCount =
-+ 2 /* level */ + 4 /* rsrvd */ + name_len /* incl null */ ;
-+ pSMB->TotalDataCount = 0;
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ /* BB find exact max data count below from sess structure BB */
-+ pSMB->MaxDataCount = cpu_to_le16(4000);
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = cpu_to_le16(offsetof(
-+ struct smb_com_transaction2_qpi_req ,InformationLevel) - 4);
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_QUERY_PATH_INFORMATION);
-+ pSMB->ByteCount = pSMB->TotalParameterCount + 1 /* pad */ ;
-+ pSMB->TotalParameterCount = cpu_to_le16(pSMB->TotalParameterCount);
-+ pSMB->ParameterCount = pSMB->TotalParameterCount;
-+ pSMB->InformationLevel = cpu_to_le16(SMB_QUERY_FILE_UNIX_LINK);
-+ pSMB->Reserved4 = 0;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Send error in QuerySymLinkInfo = %d", rc));
-+ } else { /* decode response */
-+ pSMBr->DataOffset = le16_to_cpu(pSMBr->DataOffset);
-+ pSMBr->DataCount = le16_to_cpu(pSMBr->DataCount);
-+ if ((pSMBr->ByteCount < 2) || (pSMBr->DataOffset > 512))
-+ /* BB also check enough total bytes returned */
-+ rc = -EIO; /* bad smb */
-+ else {
-+ if (pSMBr->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len = UniStrnlen((wchar_t *) ((char *)
-+ &pSMBr->hdr.Protocol +pSMBr->DataOffset),
-+ min_t(const int, buflen,pSMBr->DataCount) / 2);
-+ cifs_strfromUCS_le(symlinkinfo,
-+ (wchar_t *) ((char *)&pSMBr->hdr.Protocol +
-+ pSMBr->DataOffset),
-+ name_len, nls_codepage);
-+ } else {
-+ strncpy(symlinkinfo,
-+ (char *) &pSMBr->hdr.Protocol +
-+ pSMBr->DataOffset,
-+ min_t(const int, buflen, pSMBr->DataCount));
-+ }
-+ symlinkinfo[buflen] = 0;
-+ /* just in case so calling code does not go off the end of buffer */
-+ }
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ if (rc == -EAGAIN)
-+ goto querySymLinkRetry;
-+ return rc;
-+}
-+
-+
-+
-+int
-+CIFSSMBQueryReparseLinkInfo(const int xid, struct cifsTconInfo *tcon,
-+ const unsigned char *searchName,
-+ char *symlinkinfo, const int buflen,__u16 fid,
-+ const struct nls_table *nls_codepage)
-+{
-+ int rc = 0;
-+ int bytes_returned;
-+ int name_len;
-+ struct smb_com_transaction_ioctl_req * pSMB;
-+ struct smb_com_transaction_ioctl_rsp * pSMBr;
-+
-+ cFYI(1, ("In Windows reparse style QueryLink for path %s", searchName));
-+ rc = smb_init(SMB_COM_NT_TRANSACT, 23, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->TotalParameterCount = 0 ;
-+ pSMB->TotalDataCount = 0;
-+ pSMB->MaxParameterCount = cpu_to_le32(2);
-+ /* BB find exact data count max from sess structure BB */
-+ pSMB->MaxDataCount = cpu_to_le32(4000);
-+ pSMB->MaxSetupCount = 4;
-+ pSMB->Reserved = 0;
-+ pSMB->ParameterOffset = 0;
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->SetupCount = 4;
-+ pSMB->SubCommand = cpu_to_le16(NT_TRANSACT_IOCTL);
-+ pSMB->ParameterCount = pSMB->TotalParameterCount;
-+ pSMB->FunctionCode = cpu_to_le32(FSCTL_GET_REPARSE_POINT);
-+ pSMB->IsFsctl = 1; /* FSCTL */
-+ pSMB->IsRootFlag = 0;
-+ pSMB->Fid = fid; /* file handle always le */
-+ pSMB->ByteCount = 0;
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Send error in QueryReparseLinkInfo = %d", rc));
-+ } else { /* decode response */
-+ pSMBr->DataOffset = le16_to_cpu(pSMBr->DataOffset);
-+ pSMBr->DataCount = le16_to_cpu(pSMBr->DataCount);
-+ if ((pSMBr->ByteCount < 2) || (pSMBr->DataOffset > 512))
-+ /* BB also check enough total bytes returned */
-+ rc = -EIO; /* bad smb */
-+ else {
-+ if(pSMBr->DataCount && (pSMBr->DataCount < 2048)) {
-+ /* could also validate reparse tag && better check name length */
-+ struct reparse_data * reparse_buf = (struct reparse_data *)
-+ ((char *)&pSMBr->hdr.Protocol + pSMBr->DataOffset);
-+ if (pSMBr->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len = UniStrnlen((wchar_t *)
-+ (reparse_buf->LinkNamesBuf +
-+ reparse_buf->TargetNameOffset),
-+ min(buflen/2, reparse_buf->TargetNameLen / 2));
-+ cifs_strfromUCS_le(symlinkinfo,
-+ (wchar_t *) (reparse_buf->LinkNamesBuf +
-+ reparse_buf->TargetNameOffset),
-+ name_len, nls_codepage);
-+ } else { /* ASCII names */
-+ strncpy(symlinkinfo,reparse_buf->LinkNamesBuf +
-+ reparse_buf->TargetNameOffset,
-+ min_t(const int, buflen, reparse_buf->TargetNameLen));
-+ }
-+ } else {
-+ rc = -EIO;
-+ cFYI(1,("Invalid return data count on get reparse info ioctl"));
-+ }
-+ symlinkinfo[buflen] = 0; /* just in case so the caller
-+ does not go off the end of the buffer */
-+ cFYI(1,("readlink result - %s ",symlinkinfo));
-+ }
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ /* Note: On -EAGAIN error only caller can retry on handle based calls
-+ since file handle passed in no longer valid */
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBQPathInfo(const int xid, struct cifsTconInfo *tcon,
-+ const unsigned char *searchName,
-+ FILE_ALL_INFO * pFindData,
-+ const struct nls_table *nls_codepage)
-+{
-+/* level 263 SMB_QUERY_FILE_ALL_INFO */
-+ TRANSACTION2_QPI_REQ *pSMB = NULL;
-+ TRANSACTION2_QPI_RSP *pSMBr = NULL;
-+ int rc = 0;
-+ int bytes_returned;
-+ int name_len;
-+
-+ cFYI(1, ("In QPathInfo path %s", searchName));
-+QPathInfoRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->FileName, searchName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(searchName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->FileName, searchName, name_len);
-+ }
-+
-+ pSMB->TotalParameterCount = 2 /* level */ + 4 /* reserved */ +
-+ name_len /* includes null */ ;
-+ pSMB->TotalDataCount = 0;
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = cpu_to_le16(offsetof(
-+ struct smb_com_transaction2_qpi_req ,InformationLevel) - 4);
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_QUERY_PATH_INFORMATION);
-+ pSMB->ByteCount = pSMB->TotalParameterCount + 1 /* pad */ ;
-+ pSMB->TotalParameterCount = cpu_to_le16(pSMB->TotalParameterCount);
-+ pSMB->ParameterCount = pSMB->TotalParameterCount;
-+ pSMB->InformationLevel = cpu_to_le16(SMB_QUERY_FILE_ALL_INFO);
-+ pSMB->Reserved4 = 0;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Send error in QPathInfo = %d", rc));
-+ } else { /* decode response */
-+ pSMBr->DataOffset = le16_to_cpu(pSMBr->DataOffset);
-+ /* BB also check enough total bytes returned */
-+ /* BB we need to improve the validity checking
-+ of these trans2 responses */
-+ if ((pSMBr->ByteCount < 40) || (pSMBr->DataOffset > 512))
-+ rc = -EIO; /* bad smb */
-+ else if (pFindData){
-+ memcpy((char *) pFindData,
-+ (char *) &pSMBr->hdr.Protocol +
-+ pSMBr->DataOffset, sizeof (FILE_ALL_INFO));
-+ } else
-+ rc = -ENOMEM;
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ if (rc == -EAGAIN)
-+ goto QPathInfoRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBUnixQPathInfo(const int xid, struct cifsTconInfo *tcon,
-+ const unsigned char *searchName,
-+ FILE_UNIX_BASIC_INFO * pFindData,
-+ const struct nls_table *nls_codepage)
-+{
-+/* SMB_QUERY_FILE_UNIX_BASIC */
-+ TRANSACTION2_QPI_REQ *pSMB = NULL;
-+ TRANSACTION2_QPI_RSP *pSMBr = NULL;
-+ int rc = 0;
-+ int bytes_returned = 0;
-+ int name_len;
-+
-+ cFYI(1, ("In QPathInfo (Unix) the path %s", searchName));
-+UnixQPathInfoRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->FileName, searchName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(searchName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->FileName, searchName, name_len);
-+ }
-+
-+ pSMB->TotalParameterCount = 2 /* level */ + 4 /* reserved */ +
-+ name_len /* includes null */ ;
-+ pSMB->TotalDataCount = 0;
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ /* BB find exact max SMB PDU from sess structure BB */
-+ pSMB->MaxDataCount = cpu_to_le16(4000);
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = cpu_to_le16(offsetof(
-+ struct smb_com_transaction2_qpi_req ,InformationLevel) - 4);
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_QUERY_PATH_INFORMATION);
-+ pSMB->ByteCount = pSMB->TotalParameterCount + 1 /* pad */ ;
-+ pSMB->TotalParameterCount = cpu_to_le16(pSMB->TotalParameterCount);
-+ pSMB->ParameterCount = pSMB->TotalParameterCount;
-+ pSMB->InformationLevel = cpu_to_le16(SMB_QUERY_FILE_UNIX_BASIC);
-+ pSMB->Reserved4 = 0;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Send error in QPathInfo = %d", rc));
-+ } else { /* decode response */
-+ pSMBr->DataOffset = le16_to_cpu(pSMBr->DataOffset);
-+ /* BB also check if enough total bytes returned */
-+ if ((pSMBr->ByteCount < sizeof(FILE_UNIX_BASIC_INFO)) ||
-+ (pSMBr->DataOffset > 512) ||
-+ (pSMBr->DataOffset < sizeof(struct smb_hdr))) {
-+ cFYI(1,("UnixQPathinfo invalid data offset %d bytes returned %d",
-+ (int)pSMBr->DataOffset,bytes_returned));
-+ rc = -EIO; /* bad smb */
-+ } else {
-+ memcpy((char *) pFindData,
-+ (char *) &pSMBr->hdr.Protocol +
-+ pSMBr->DataOffset,
-+ sizeof (FILE_UNIX_BASIC_INFO));
-+ }
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ if (rc == -EAGAIN)
-+ goto UnixQPathInfoRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSFindSingle(const int xid, struct cifsTconInfo *tcon,
-+ const char *searchName, FILE_ALL_INFO * findData,
-+ const struct nls_table *nls_codepage)
-+{
-+/* level 257 SMB_ */
-+ TRANSACTION2_FFIRST_REQ *pSMB = NULL;
-+ TRANSACTION2_FFIRST_RSP *pSMBr = NULL;
-+ int rc = 0;
-+ int bytes_returned;
-+ int name_len;
-+
-+ cFYI(1, ("In FindUnique"));
-+findUniqueRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->FileName, searchName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(searchName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->FileName, searchName, name_len);
-+ }
-+
-+ pSMB->TotalParameterCount = 12 + name_len /* includes null */ ;
-+ pSMB->TotalDataCount = 0; /* no EAs */
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = cpu_to_le16(
-+ offsetof(struct smb_com_transaction2_ffirst_req,InformationLevel) - 4);
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->SetupCount = 1; /* one byte, no need to le convert */
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_FIND_FIRST);
-+ pSMB->ByteCount = pSMB->TotalParameterCount + 1 /* pad */ ;
-+ pSMB->TotalParameterCount = cpu_to_le16(pSMB->TotalDataCount);
-+ pSMB->ParameterCount = pSMB->TotalParameterCount;
-+ pSMB->SearchAttributes =
-+ cpu_to_le16(ATTR_READONLY | ATTR_HIDDEN | ATTR_SYSTEM |
-+ ATTR_DIRECTORY);
-+ pSMB->SearchCount = cpu_to_le16(16); /* BB increase */
-+ pSMB->SearchFlags = cpu_to_le16(1);
-+ pSMB->InformationLevel = cpu_to_le16(SMB_FIND_FILE_DIRECTORY_INFO);
-+ pSMB->SearchStorageType = 0; /* BB what should we set this to? BB */
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+
-+ if (rc) {
-+ cFYI(1, ("Send error in FindFileDirInfo = %d", rc));
-+ } else { /* decode response */
-+
-+ /* BB fill in */
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ if (rc == -EAGAIN)
-+ goto findUniqueRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSFindFirst(const int xid, struct cifsTconInfo *tcon,
-+ const char *searchName, FILE_DIRECTORY_INFO * findData,
-+ T2_FFIRST_RSP_PARMS * findParms,
-+ const struct nls_table *nls_codepage, int *pUnicodeFlag,
-+ int *pUnixFlag)
-+{
-+/* level 257 SMB_ */
-+ TRANSACTION2_FFIRST_REQ *pSMB = NULL;
-+ TRANSACTION2_FFIRST_RSP *pSMBr = NULL;
-+ char *response_data;
-+ int rc = 0;
-+ int bytes_returned;
-+ int name_len;
-+
-+ cFYI(1, ("In FindFirst"));
-+findFirstRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->FileName, searchName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(searchName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->FileName, searchName, name_len);
-+ }
-+
-+ pSMB->TotalParameterCount = 12 + name_len /* includes null */ ;
-+ pSMB->TotalDataCount = 0; /* no EAs */
-+ pSMB->MaxParameterCount = cpu_to_le16(10);
-+ pSMB->MaxDataCount = cpu_to_le16((tcon->ses->server->maxBuf -
-+ MAX_CIFS_HDR_SIZE) & 0xFFFFFF00);
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ByteCount = pSMB->TotalParameterCount + 1 /* pad */ ;
-+ pSMB->TotalParameterCount = cpu_to_le16(pSMB->TotalParameterCount);
-+ pSMB->ParameterCount = pSMB->TotalParameterCount;
-+ pSMB->ParameterOffset = cpu_to_le16(offsetof(struct
-+ smb_com_transaction2_ffirst_req, SearchAttributes) - 4);
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->SetupCount = 1; /* one byte no need to make endian neutral */
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_FIND_FIRST);
-+ pSMB->SearchAttributes =
-+ cpu_to_le16(ATTR_READONLY | ATTR_HIDDEN | ATTR_SYSTEM |
-+ ATTR_DIRECTORY);
-+ pSMB->SearchCount = cpu_to_le16(CIFS_MAX_MSGSIZE / sizeof (FILE_DIRECTORY_INFO)); /* should this be shrunk even more ? */
-+ pSMB->SearchFlags = cpu_to_le16(CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME);
-+
-+ /* test for Unix extensions */
-+ if (tcon->ses->capabilities & CAP_UNIX) {
-+ pSMB->InformationLevel = cpu_to_le16(SMB_FIND_FILE_UNIX);
-+ *pUnixFlag = TRUE;
-+ } else {
-+ pSMB->InformationLevel =
-+ cpu_to_le16(SMB_FIND_FILE_DIRECTORY_INFO);
-+ *pUnixFlag = FALSE;
-+ }
-+ pSMB->SearchStorageType = 0; /* BB what should we set this to? It is not clear if it matters BB */
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+
-+ if (rc) { /* BB add logic to retry regular search if Unix search rejected unexpectedly by server */
-+ cFYI(1, ("Error in FindFirst = %d", rc));
-+ } else { /* decode response */
-+ /* BB add safety checks for these memcpys */
-+ if (pSMBr->hdr.Flags2 & SMBFLG2_UNICODE)
-+ *pUnicodeFlag = TRUE;
-+ else
-+ *pUnicodeFlag = FALSE;
-+ memcpy(findParms,
-+ (char *) &pSMBr->hdr.Protocol +
-+ le16_to_cpu(pSMBr->ParameterOffset),
-+ sizeof (T2_FFIRST_RSP_PARMS));
-+ /* search handle can stay LE and EAoffset not needed so not converted */
-+ findParms->EndofSearch = le16_to_cpu(findParms->EndofSearch);
-+ findParms->LastNameOffset =
-+ le16_to_cpu(findParms->LastNameOffset);
-+ findParms->SearchCount = le16_to_cpu(findParms->SearchCount);
-+ response_data =
-+ (char *) &pSMBr->hdr.Protocol +
-+ le16_to_cpu(pSMBr->DataOffset);
-+ memcpy(findData, response_data, le16_to_cpu(pSMBr->DataCount));
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ if (rc == -EAGAIN)
-+ goto findFirstRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSFindNext(const int xid, struct cifsTconInfo *tcon,
-+ FILE_DIRECTORY_INFO * findData, T2_FNEXT_RSP_PARMS * findParms,
-+ const __u16 searchHandle, char * resume_file_name, int name_len,
-+ __u32 resume_key, int *pUnicodeFlag, int *pUnixFlag)
-+{
-+/* level 257 SMB_ */
-+ TRANSACTION2_FNEXT_REQ *pSMB = NULL;
-+ TRANSACTION2_FNEXT_RSP *pSMBr = NULL;
-+ char *response_data;
-+ int rc = 0;
-+ int bytes_returned;
-+
-+ cFYI(1, ("In FindNext"));
-+
-+ if(resume_file_name == NULL) {
-+ return -EIO;
-+ }
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->TotalParameterCount = 14; /* includes 2 bytes of null string, converted to LE below */
-+ pSMB->TotalDataCount = 0; /* no EAs */
-+ pSMB->MaxParameterCount = cpu_to_le16(8);
-+ pSMB->MaxDataCount =
-+ cpu_to_le16((tcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE) & 0xFFFFFF00);
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = cpu_to_le16(offsetof(
-+ struct smb_com_transaction2_fnext_req,SearchHandle) - 4);
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_FIND_NEXT);
-+ pSMB->SearchHandle = searchHandle; /* always kept as le */
-+ findParms->SearchCount = 0; /* set to zero in case of error */
-+ pSMB->SearchCount =
-+ cpu_to_le16(CIFS_MAX_MSGSIZE / sizeof (FILE_DIRECTORY_INFO));
-+ /* test for Unix extensions */
-+ if (tcon->ses->capabilities & CAP_UNIX) {
-+ pSMB->InformationLevel = cpu_to_le16(SMB_FIND_FILE_UNIX);
-+ *pUnixFlag = TRUE;
-+ } else {
-+ pSMB->InformationLevel =
-+ cpu_to_le16(SMB_FIND_FILE_DIRECTORY_INFO);
-+ *pUnixFlag = FALSE;
-+ }
-+ pSMB->ResumeKey = resume_key;
-+ pSMB->SearchFlags =
-+ cpu_to_le16(CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME);
-+ /* BB add check to make sure we do not cross end of smb */
-+ if(name_len < CIFS_MAX_MSGSIZE) {
-+ memcpy(pSMB->ResumeFileName, resume_file_name, name_len);
-+ pSMB->ByteCount += name_len;
-+ }
-+ pSMB->TotalParameterCount += name_len;
-+ pSMB->ByteCount = pSMB->TotalParameterCount + 1 /* pad */ ;
-+ pSMB->TotalParameterCount = cpu_to_le16(pSMB->TotalParameterCount);
-+ pSMB->ParameterCount = pSMB->TotalParameterCount;
-+ /* BB improve error handling here */
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+
-+ if (rc) {
-+ if (rc == -EBADF)
-+ rc = 0; /* search probably was closed at end of search above */
-+ else
-+ cFYI(1, ("FindNext returned = %d", rc));
-+ } else { /* decode response */
-+ /* BB add safety checks for these memcpys */
-+ if (pSMBr->hdr.Flags2 & SMBFLG2_UNICODE)
-+ *pUnicodeFlag = TRUE;
-+ else
-+ *pUnicodeFlag = FALSE;
-+ memcpy(findParms,
-+ (char *) &pSMBr->hdr.Protocol +
-+ le16_to_cpu(pSMBr->ParameterOffset),
-+ sizeof (T2_FNEXT_RSP_PARMS));
-+ findParms->EndofSearch = le16_to_cpu(findParms->EndofSearch);
-+ findParms->LastNameOffset =
-+ le16_to_cpu(findParms->LastNameOffset);
-+ findParms->SearchCount = le16_to_cpu(findParms->SearchCount);
-+ response_data =
-+ (char *) &pSMBr->hdr.Protocol +
-+ le16_to_cpu(pSMBr->DataOffset);
-+ memcpy(findData, response_data, le16_to_cpu(pSMBr->DataCount));
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ /* Note: On -EAGAIN error only caller can retry on handle based calls
-+ since file handle passed in no longer valid */
-+
-+ return rc;
-+}
-+
-+int
-+CIFSFindClose(const int xid, struct cifsTconInfo *tcon, const __u16 searchHandle)
-+{
-+ int rc = 0;
-+ FINDCLOSE_REQ *pSMB = NULL;
-+ CLOSE_RSP *pSMBr = NULL;
-+ int bytes_returned;
-+
-+ cFYI(1, ("In CIFSSMBFindClose"));
-+ rc = smb_init(SMB_COM_FIND_CLOSE2, 1, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ /* no sense returning error if session restarted
-+ file handle has been closed */
-+ if(rc == -EAGAIN)
-+ return 0;
-+ if (rc)
-+ return rc;
-+
-+ pSMB->FileID = searchHandle;
-+ pSMB->ByteCount = 0;
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cERROR(1, ("Send error in FindClose = %d", rc));
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ /* Since session is dead, search handle closed on server already */
-+ if (rc == -EAGAIN)
-+ rc = 0;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses,
-+ const unsigned char *searchName,
-+ unsigned char **targetUNCs,
-+ unsigned int *number_of_UNC_in_array,
-+ const struct nls_table *nls_codepage)
-+{
-+/* TRANS2_GET_DFS_REFERRAL */
-+ TRANSACTION2_GET_DFS_REFER_REQ *pSMB = NULL;
-+ TRANSACTION2_GET_DFS_REFER_RSP *pSMBr = NULL;
-+ struct dfs_referral_level_3 * referrals = NULL;
-+ int rc = 0;
-+ int bytes_returned;
-+ int name_len;
-+ unsigned int i;
-+ char * temp;
-+ *number_of_UNC_in_array = 0;
-+ *targetUNCs = NULL;
-+
-+ cFYI(1, ("In GetDFSRefer the path %s", searchName));
-+ if (ses == NULL)
-+ return -ENODEV;
-+getDFSRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, NULL, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->hdr.Tid = ses->ipc_tid;
-+ pSMB->hdr.Uid = ses->Suid;
-+ if (ses->capabilities & CAP_STATUS32) {
-+ pSMB->hdr.Flags2 |= SMBFLG2_ERR_STATUS;
-+ }
-+ if (ses->capabilities & CAP_DFS) {
-+ pSMB->hdr.Flags2 |= SMBFLG2_DFS;
-+ }
-+
-+ if (ses->capabilities & CAP_UNICODE) {
-+ pSMB->hdr.Flags2 |= SMBFLG2_UNICODE;
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->RequestFileName,
-+ searchName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(searchName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->RequestFileName, searchName, name_len);
-+ }
-+
-+ pSMB->ParameterCount = 2 /* level */ + name_len /*includes null */ ;
-+ pSMB->TotalDataCount = 0;
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->MaxParameterCount = 0;
-+ pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = cpu_to_le16(offsetof(
-+ struct smb_com_transaction2_get_dfs_refer_req, MaxReferralLevel) - 4);
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_GET_DFS_REFERRAL);
-+ pSMB->ByteCount = pSMB->ParameterCount + 3 /* pad */ ;
-+ pSMB->ParameterCount = cpu_to_le16(pSMB->ParameterCount);
-+ pSMB->TotalParameterCount = pSMB->ParameterCount;
-+ pSMB->MaxReferralLevel = cpu_to_le16(3);
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Send error in GetDFSRefer = %d", rc));
-+ } else { /* decode response */
-+/* BB Add logic to parse referrals here */
-+ pSMBr->DataOffset = le16_to_cpu(pSMBr->DataOffset);
-+ pSMBr->DataCount = le16_to_cpu(pSMBr->DataCount);
-+ cFYI(1,
-+ ("Decoding GetDFSRefer response. BCC: %d Offset %d",
-+ pSMBr->ByteCount, pSMBr->DataOffset));
-+ if ((pSMBr->ByteCount < 17) || (pSMBr->DataOffset > 512)) /* BB also check enough total bytes returned */
-+ rc = -EIO; /* bad smb */
-+ else {
-+ referrals =
-+ (struct dfs_referral_level_3 *)
-+ (8 /* sizeof start of data block */ +
-+ pSMBr->DataOffset +
-+ (char *) &pSMBr->hdr.Protocol);
-+ cFYI(1,("num_referrals: %d dfs flags: 0x%x ... \nfor referral one refer size: 0x%x srv type: 0x%x refer flags: 0x%x ttl: 0x%x",pSMBr->NumberOfReferrals,pSMBr->DFSFlags, referrals->ReferralSize,referrals->ServerType,referrals->ReferralFlags,referrals->TimeToLive));
-+ /* BB This field is actually two bytes in from start of
-+ data block so we could do safety check that DataBlock
-+ begins at address of pSMBr->NumberOfReferrals */
-+ *number_of_UNC_in_array = le16_to_cpu(pSMBr->NumberOfReferrals);
-+
-+ /* BB Fix below so can return more than one referral */
-+ if(*number_of_UNC_in_array > 1)
-+ *number_of_UNC_in_array = 1;
-+
-+ /* get the length of the strings describing refs */
-+ name_len = 0;
-+ for(i=0;i<*number_of_UNC_in_array;i++) {
-+ /* make sure that DfsPathOffset not past end */
-+ referrals->DfsPathOffset = le16_to_cpu(referrals->DfsPathOffset);
-+ if(referrals->DfsPathOffset > pSMBr->DataCount) {
-+ /* if invalid referral, stop here and do
-+ not try to copy any more */
-+ *number_of_UNC_in_array = i;
-+ break;
-+ }
-+ temp = ((char *)referrals) + referrals->DfsPathOffset;
-+
-+ if (pSMBr->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len += UniStrnlen((wchar_t *)temp,pSMBr->DataCount);
-+ } else {
-+ name_len += strnlen(temp,pSMBr->DataCount);
-+ }
-+ referrals++;
-+ /* BB add check that referral pointer does not fall off end PDU */
-+
-+ }
-+ /* BB add check for name_len bigger than bcc */
-+ *targetUNCs =
-+ kmalloc(name_len+1+ (*number_of_UNC_in_array),GFP_KERNEL);
-+ /* copy the ref strings */
-+ referrals =
-+ (struct dfs_referral_level_3 *)
-+ (8 /* sizeof data hdr */ +
-+ pSMBr->DataOffset +
-+ (char *) &pSMBr->hdr.Protocol);
-+
-+ for(i=0;i<*number_of_UNC_in_array;i++) {
-+ temp = ((char *)referrals) + referrals->DfsPathOffset;
-+ if (pSMBr->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ cifs_strfromUCS_le(*targetUNCs,
-+ (wchar_t *) temp, name_len, nls_codepage);
-+ } else {
-+ strncpy(*targetUNCs,temp,name_len);
-+ }
-+ /* BB update target_uncs pointers */
-+ referrals++;
-+ }
-+ temp = *targetUNCs;
-+ temp[name_len] = 0;
-+ }
-+
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ if (rc == -EAGAIN)
-+ goto getDFSRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBQFSInfo(const int xid, struct cifsTconInfo *tcon,
-+ struct statfs *FSData, const struct nls_table *nls_codepage)
-+{
-+/* level 0x103 SMB_QUERY_FILE_SYSTEM_INFO */
-+ TRANSACTION2_QFSI_REQ *pSMB = NULL;
-+ TRANSACTION2_QFSI_RSP *pSMBr = NULL;
-+ FILE_SYSTEM_INFO *response_data;
-+ int rc = 0;
-+ int bytes_returned = 0;
-+
-+ cFYI(1, ("In QFSInfo"));
-+QFSInfoRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->TotalParameterCount = 2; /* level */
-+ pSMB->TotalDataCount = 0;
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ByteCount = pSMB->TotalParameterCount + 1 /* pad */ ;
-+ pSMB->TotalParameterCount = cpu_to_le16(pSMB->TotalParameterCount);
-+ pSMB->ParameterCount = pSMB->TotalParameterCount;
-+ pSMB->ParameterOffset = cpu_to_le16(offsetof(
-+ struct smb_com_transaction2_qfsi_req, InformationLevel) - 4);
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_QUERY_FS_INFORMATION);
-+ pSMB->InformationLevel = cpu_to_le16(SMB_QUERY_FS_SIZE_INFO);
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cERROR(1, ("Send error in QFSInfo = %d", rc));
-+ } else { /* decode response */
-+ pSMBr->DataOffset = le16_to_cpu(pSMBr->DataOffset);
-+ cFYI(1,
-+ ("Decoding qfsinfo response. BCC: %d Offset %d",
-+ pSMBr->ByteCount, pSMBr->DataOffset));
-+ if ((pSMBr->ByteCount < 24) || (pSMBr->DataOffset > 512)) /* BB also check enough total bytes returned */
-+ rc = -EIO; /* bad smb */
-+ else {
-+ response_data =
-+ (FILE_SYSTEM_INFO
-+ *) (((char *) &pSMBr->hdr.Protocol) +
-+ pSMBr->DataOffset);
-+ FSData->f_bsize =
-+ le32_to_cpu(response_data->BytesPerSector) *
-+ le32_to_cpu(response_data->
-+ SectorsPerAllocationUnit);
-+ FSData->f_blocks =
-+ le64_to_cpu(response_data->TotalAllocationUnits);
-+ FSData->f_bfree = FSData->f_bavail =
-+ le64_to_cpu(response_data->FreeAllocationUnits);
-+ cFYI(1,
-+ ("Blocks: %lld Free: %lld Block size %ld",
-+ (unsigned long long)FSData->f_blocks,
-+ (unsigned long long)FSData->f_bfree,
-+ FSData->f_bsize));
-+ }
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ if (rc == -EAGAIN)
-+ goto QFSInfoRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBQFSAttributeInfo(int xid, struct cifsTconInfo *tcon,
-+ const struct nls_table *nls_codepage)
-+{
-+/* level 0x105 SMB_QUERY_FILE_SYSTEM_INFO */
-+ TRANSACTION2_QFSI_REQ *pSMB = NULL;
-+ TRANSACTION2_QFSI_RSP *pSMBr = NULL;
-+ FILE_SYSTEM_ATTRIBUTE_INFO *response_data;
-+ int rc = 0;
-+ int bytes_returned = 0;
-+
-+ cFYI(1, ("In QFSAttributeInfo"));
-+QFSAttributeRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->TotalParameterCount = 2; /* level */
-+ pSMB->TotalDataCount = 0;
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ByteCount = pSMB->TotalParameterCount + 1 /* pad */ ;
-+ pSMB->TotalParameterCount = cpu_to_le16(pSMB->TotalParameterCount);
-+ pSMB->ParameterCount = pSMB->TotalParameterCount;
-+ pSMB->ParameterOffset = cpu_to_le16(offsetof(
-+ struct smb_com_transaction2_qfsi_req, InformationLevel) - 4);
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_QUERY_FS_INFORMATION);
-+ pSMB->InformationLevel = cpu_to_le16(SMB_QUERY_FS_ATTRIBUTE_INFO);
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cERROR(1, ("Send error in QFSAttributeInfo = %d", rc));
-+ } else { /* decode response */
-+ pSMBr->DataOffset = le16_to_cpu(pSMBr->DataOffset);
-+ if ((pSMBr->ByteCount < 13) || (pSMBr->DataOffset > 512)) { /* BB also check enough bytes returned */
-+ rc = -EIO; /* bad smb */
-+ } else {
-+ response_data =
-+ (FILE_SYSTEM_ATTRIBUTE_INFO
-+ *) (((char *) &pSMBr->hdr.Protocol) +
-+ pSMBr->DataOffset);
-+ response_data->Attributes = le32_to_cpu(response_data->Attributes);
-+ response_data->MaxPathNameComponentLength =
-+ le32_to_cpu(response_data->MaxPathNameComponentLength);
-+ response_data->FileSystemNameLen =
-+ le32_to_cpu(response_data->FileSystemNameLen);
-+ memcpy(&tcon->fsAttrInfo, response_data,
-+ sizeof (FILE_SYSTEM_ATTRIBUTE_INFO));
-+ }
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ if (rc == -EAGAIN)
-+ goto QFSAttributeRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBQFSDeviceInfo(int xid, struct cifsTconInfo *tcon,
-+ const struct nls_table *nls_codepage)
-+{
-+/* level 0x104 SMB_QUERY_FILE_SYSTEM_INFO */
-+ TRANSACTION2_QFSI_REQ *pSMB = NULL;
-+ TRANSACTION2_QFSI_RSP *pSMBr = NULL;
-+ FILE_SYSTEM_DEVICE_INFO *response_data;
-+ int rc = 0;
-+ int bytes_returned = 0;
-+
-+ cFYI(1, ("In QFSDeviceInfo"));
-+QFSDeviceRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->TotalParameterCount = 2; /* level */
-+ pSMB->TotalDataCount = 0;
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ByteCount = pSMB->TotalParameterCount + 1 /* pad */ ;
-+ pSMB->TotalParameterCount = cpu_to_le16(pSMB->TotalParameterCount);
-+ pSMB->ParameterCount = pSMB->TotalParameterCount;
-+ pSMB->ParameterOffset = cpu_to_le16(offsetof(
-+ struct smb_com_transaction2_qfsi_req, InformationLevel) - 4);
-+
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_QUERY_FS_INFORMATION);
-+ pSMB->InformationLevel = cpu_to_le16(SMB_QUERY_FS_DEVICE_INFO);
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Send error in QFSDeviceInfo = %d", rc));
-+ } else { /* decode response */
-+ pSMBr->DataOffset = le16_to_cpu(pSMBr->DataOffset);
-+ if ((pSMBr->ByteCount < sizeof (FILE_SYSTEM_DEVICE_INFO))
-+ || (pSMBr->DataOffset > 512))
-+ rc = -EIO; /* bad smb */
-+ else {
-+ response_data =
-+ (FILE_SYSTEM_DEVICE_INFO
-+ *) (((char *) &pSMBr->hdr.Protocol) +
-+ pSMBr->DataOffset);
-+ response_data->DeviceType =
-+ le32_to_cpu(response_data->DeviceType);
-+ response_data->DeviceCharacteristics =
-+ le32_to_cpu(response_data->DeviceCharacteristics);
-+ memcpy(&tcon->fsDevInfo, response_data,
-+ sizeof (FILE_SYSTEM_DEVICE_INFO));
-+ }
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ if (rc == -EAGAIN)
-+ goto QFSDeviceRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBQFSUnixInfo(int xid, struct cifsTconInfo *tcon,
-+ const struct nls_table *nls_codepage)
-+{
-+/* level 0x200 SMB_QUERY_CIFS_UNIX_INFO */
-+ TRANSACTION2_QFSI_REQ *pSMB = NULL;
-+ TRANSACTION2_QFSI_RSP *pSMBr = NULL;
-+ FILE_SYSTEM_UNIX_INFO *response_data;
-+ int rc = 0;
-+ int bytes_returned = 0;
-+
-+ cFYI(1, ("In QFSUnixInfo"));
-+QFSUnixRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->ParameterCount = 2; /* level */
-+ pSMB->TotalDataCount = 0;
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ pSMB->MaxDataCount = cpu_to_le16(100); /* BB find exact max SMB PDU from sess structure BB */
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ByteCount = pSMB->ParameterCount + 1 /* pad */ ;
-+ pSMB->ParameterCount = cpu_to_le16(pSMB->ParameterCount);
-+ pSMB->TotalParameterCount = pSMB->ParameterCount;
-+ pSMB->ParameterOffset = cpu_to_le16(offsetof(struct
-+ smb_com_transaction2_qfsi_req, InformationLevel) - 4);
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_QUERY_FS_INFORMATION);
-+ pSMB->InformationLevel = cpu_to_le16(SMB_QUERY_CIFS_UNIX_INFO);
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cERROR(1, ("Send error in QFSUnixInfo = %d", rc));
-+ } else { /* decode response */
-+ pSMBr->DataOffset = cpu_to_le16(pSMBr->DataOffset);
-+ if ((pSMBr->ByteCount < 13) || (pSMBr->DataOffset > 512)) {
-+ rc = -EIO; /* bad smb */
-+ } else {
-+ response_data =
-+ (FILE_SYSTEM_UNIX_INFO
-+ *) (((char *) &pSMBr->hdr.Protocol) +
-+ pSMBr->DataOffset);
-+ response_data->MajorVersionNumber =
-+ le16_to_cpu(response_data->MajorVersionNumber);
-+ response_data->MinorVersionNumber =
-+ le16_to_cpu(response_data->MinorVersionNumber);
-+ response_data->Capability =
-+ le64_to_cpu(response_data->Capability);
-+ memcpy(&tcon->fsUnixInfo, response_data,
-+ sizeof (FILE_SYSTEM_UNIX_INFO));
-+ }
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ if (rc == -EAGAIN)
-+ goto QFSUnixRetry;
-+
-+
-+ return rc;
-+}
-+
-+/* We can not use write of zero bytes trick to
-+ set file size due to need for large file support. Also note that
-+ this SetPathInfo is preferred to SetFileInfo based method in next
-+ routine which is only needed to work around a sharing violation bug
-+ in Samba which this routine can run into */
-+
-+int
-+CIFSSMBSetEOF(int xid, struct cifsTconInfo *tcon, char *fileName,
-+ __u64 size, int SetAllocation, const struct nls_table *nls_codepage)
-+{
-+ struct smb_com_transaction2_spi_req *pSMB = NULL;
-+ struct smb_com_transaction2_spi_rsp *pSMBr = NULL;
-+ struct file_end_of_file_info *parm_data;
-+ int name_len;
-+ int rc = 0;
-+ int bytes_returned = 0;
-+
-+ cFYI(1, ("In SetEOF"));
-+SetEOFRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->FileName, fileName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(fileName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->FileName, fileName, name_len);
-+ }
-+ pSMB->ParameterCount = 6 + name_len;
-+ pSMB->DataCount = sizeof (struct file_end_of_file_info);
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find max SMB size from sess */
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = offsetof(struct smb_com_transaction2_spi_req,
-+ InformationLevel) - 4;
-+ pSMB->DataOffset = pSMB->ParameterOffset + pSMB->ParameterCount;
-+ if(SetAllocation) {
-+ if (tcon->ses->capabilities & CAP_INFOLEVEL_PASSTHRU)
-+ pSMB->InformationLevel =
-+ cpu_to_le16(SMB_SET_FILE_ALLOCATION_INFO2);
-+ else
-+ pSMB->InformationLevel =
-+ cpu_to_le16(SMB_SET_FILE_ALLOCATION_INFO);
-+ } else /* Set File Size */ {
-+ if (tcon->ses->capabilities & CAP_INFOLEVEL_PASSTHRU)
-+ pSMB->InformationLevel =
-+ cpu_to_le16(SMB_SET_FILE_END_OF_FILE_INFO2);
-+ else
-+ pSMB->InformationLevel =
-+ cpu_to_le16(SMB_SET_FILE_END_OF_FILE_INFO);
-+ }
-+
-+ parm_data =
-+ (struct file_end_of_file_info *) (((char *) &pSMB->hdr.Protocol) +
-+ pSMB->DataOffset);
-+ pSMB->ParameterOffset = cpu_to_le16(pSMB->ParameterOffset);
-+ pSMB->DataOffset = cpu_to_le16(pSMB->DataOffset);
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_SET_PATH_INFORMATION);
-+ pSMB->ByteCount = 3 /* pad */ + pSMB->ParameterCount + pSMB->DataCount;
-+ pSMB->DataCount = cpu_to_le16(pSMB->DataCount);
-+ pSMB->TotalDataCount = pSMB->DataCount;
-+ pSMB->ParameterCount = cpu_to_le16(pSMB->ParameterCount);
-+ pSMB->TotalParameterCount = pSMB->ParameterCount;
-+ pSMB->Reserved4 = 0;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ parm_data->FileSize = cpu_to_le64(size);
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("SetPathInfo (file size) returned %d", rc));
-+ }
-+
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ if (rc == -EAGAIN)
-+ goto SetEOFRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBSetFileSize(const int xid, struct cifsTconInfo *tcon, __u64 size,
-+ __u16 fid, __u32 pid_of_opener, int SetAllocation)
-+{
-+ struct smb_com_transaction2_sfi_req *pSMB = NULL;
-+ struct smb_com_transaction2_sfi_rsp *pSMBr = NULL;
-+ char *data_offset;
-+ struct file_end_of_file_info *parm_data;
-+ int rc = 0;
-+ int bytes_returned = 0;
-+ __u32 tmp;
-+
-+ cFYI(1, ("SetFileSize (via SetFileInfo) %lld",
-+ (long long)size));
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ tmp = cpu_to_le32(pid_of_opener); /* override pid of current process
-+ so network fid will be valid */
-+ pSMB->hdr.Pid = tmp & 0xFFFF;
-+ tmp >>= 16;
-+ pSMB->hdr.PidHigh = tmp & 0xFFFF;
-+
-+ pSMB->ParameterCount = 6;
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = offsetof(struct smb_com_transaction2_sfi_req,
-+ Fid) - 4;
-+ pSMB->DataOffset = pSMB->ParameterOffset + pSMB->ParameterCount;
-+
-+ data_offset = (char *) (&pSMB->hdr.Protocol) + pSMB->DataOffset;
-+
-+ pSMB->DataCount = sizeof(struct file_end_of_file_info);
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find max SMB PDU from sess */
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FILE_INFORMATION);
-+ pSMB->ByteCount = 3 /* pad */ + pSMB->ParameterCount + pSMB->DataCount;
-+ pSMB->DataCount = cpu_to_le16(pSMB->DataCount);
-+ pSMB->ParameterCount = cpu_to_le16(pSMB->ParameterCount);
-+ pSMB->TotalDataCount = pSMB->DataCount;
-+ pSMB->TotalParameterCount = pSMB->ParameterCount;
-+ pSMB->ParameterOffset = cpu_to_le16(pSMB->ParameterOffset);
-+ parm_data =
-+ (struct file_end_of_file_info *) (((char *) &pSMB->hdr.Protocol) +
-+ pSMB->DataOffset);
-+ pSMB->DataOffset = cpu_to_le16(pSMB->DataOffset); /* now safe to change to le */
-+ parm_data->FileSize = cpu_to_le64(size);
-+ pSMB->Fid = fid;
-+ if(SetAllocation) {
-+ if (tcon->ses->capabilities & CAP_INFOLEVEL_PASSTHRU)
-+ pSMB->InformationLevel =
-+ cpu_to_le16(SMB_SET_FILE_ALLOCATION_INFO2);
-+ else
-+ pSMB->InformationLevel =
-+ cpu_to_le16(SMB_SET_FILE_ALLOCATION_INFO);
-+ } else /* Set File Size */ {
-+ if (tcon->ses->capabilities & CAP_INFOLEVEL_PASSTHRU)
-+ pSMB->InformationLevel =
-+ cpu_to_le16(SMB_SET_FILE_END_OF_FILE_INFO2);
-+ else
-+ pSMB->InformationLevel =
-+ cpu_to_le16(SMB_SET_FILE_END_OF_FILE_INFO);
-+ }
-+ pSMB->Reserved4 = 0;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1,
-+ ("Send error in SetFileInfo (SetFileSize) = %d",
-+ rc));
-+ }
-+
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ /* Note: On -EAGAIN error only caller can retry on handle based calls
-+ since file handle passed in no longer valid */
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBSetTimes(int xid, struct cifsTconInfo *tcon, char *fileName,
-+ FILE_BASIC_INFO * data, const struct nls_table *nls_codepage)
-+{
-+ TRANSACTION2_SPI_REQ *pSMB = NULL;
-+ TRANSACTION2_SPI_RSP *pSMBr = NULL;
-+ int name_len;
-+ int rc = 0;
-+ int bytes_returned = 0;
-+ char *data_offset;
-+
-+ cFYI(1, ("In SetTimes"));
-+
-+SetTimesRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->FileName, fileName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(fileName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->FileName, fileName, name_len);
-+ }
-+
-+ pSMB->ParameterCount = 6 + name_len;
-+ pSMB->DataCount = sizeof (FILE_BASIC_INFO);
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = offsetof(struct smb_com_transaction2_spi_req,
-+ InformationLevel) - 4;
-+ pSMB->DataOffset = pSMB->ParameterOffset + pSMB->ParameterCount;
-+ data_offset = (char *) (&pSMB->hdr.Protocol) + pSMB->DataOffset;
-+ pSMB->ParameterOffset = cpu_to_le16(pSMB->ParameterOffset);
-+ pSMB->DataOffset = cpu_to_le16(pSMB->DataOffset);
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_SET_PATH_INFORMATION);
-+ pSMB->ByteCount = 3 /* pad */ + pSMB->ParameterCount + pSMB->DataCount;
-+
-+ pSMB->DataCount = cpu_to_le16(pSMB->DataCount);
-+ pSMB->ParameterCount = cpu_to_le16(pSMB->ParameterCount);
-+ pSMB->TotalDataCount = pSMB->DataCount;
-+ pSMB->TotalParameterCount = pSMB->ParameterCount;
-+ if (tcon->ses->capabilities & CAP_INFOLEVEL_PASSTHRU)
-+ pSMB->InformationLevel = cpu_to_le16(SMB_SET_FILE_BASIC_INFO2);
-+ else
-+ pSMB->InformationLevel = cpu_to_le16(SMB_SET_FILE_BASIC_INFO);
-+ pSMB->Reserved4 = 0;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ memcpy(data_offset, data, sizeof (FILE_BASIC_INFO));
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("SetPathInfo (times) returned %d", rc));
-+ }
-+
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+
-+ if (rc == -EAGAIN)
-+ goto SetTimesRetry;
-+
-+ return rc;
-+}
-+
-+int
-+CIFSSMBUnixSetPerms(const int xid, struct cifsTconInfo *tcon,
-+ char *fileName, __u64 mode, __u64 uid, __u64 gid,
-+ dev_t device, const struct nls_table *nls_codepage)
-+{
-+ TRANSACTION2_SPI_REQ *pSMB = NULL;
-+ TRANSACTION2_SPI_RSP *pSMBr = NULL;
-+ int name_len;
-+ int rc = 0;
-+ int bytes_returned = 0;
-+ FILE_UNIX_BASIC_INFO *data_offset;
-+
-+ cFYI(1, ("In SetUID/GID/Mode"));
-+setPermsRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->FileName, fileName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(fileName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->FileName, fileName, name_len);
-+ }
-+
-+ pSMB->ParameterCount = 6 + name_len;
-+ pSMB->DataCount = sizeof (FILE_UNIX_BASIC_INFO);
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = offsetof(struct smb_com_transaction2_spi_req,
-+ InformationLevel) - 4;
-+ pSMB->DataOffset = pSMB->ParameterOffset + pSMB->ParameterCount;
-+ data_offset =
-+ (FILE_UNIX_BASIC_INFO *) ((char *) &pSMB->hdr.Protocol +
-+ pSMB->DataOffset);
-+ pSMB->DataOffset = cpu_to_le16(pSMB->DataOffset);
-+ pSMB->ParameterOffset = cpu_to_le16(pSMB->ParameterOffset);
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_SET_PATH_INFORMATION);
-+ pSMB->ByteCount = 3 /* pad */ + pSMB->ParameterCount + pSMB->DataCount;
-+ pSMB->ParameterCount = cpu_to_le16(pSMB->ParameterCount);
-+ pSMB->DataCount = cpu_to_le16(pSMB->DataCount);
-+ pSMB->TotalParameterCount = pSMB->ParameterCount;
-+ pSMB->TotalDataCount = pSMB->DataCount;
-+ pSMB->InformationLevel = cpu_to_le16(SMB_SET_FILE_UNIX_BASIC);
-+ pSMB->Reserved4 = 0;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ data_offset->Uid = cpu_to_le64(uid);
-+ data_offset->Gid = cpu_to_le64(gid);
-+ /* better to leave device as zero when it is */
-+ data_offset->DevMajor = cpu_to_le64(MAJOR(device));
-+ data_offset->DevMinor = cpu_to_le64(MINOR(device));
-+ data_offset->Permissions = cpu_to_le64(mode);
-+
-+ if(S_ISREG(mode))
-+ data_offset->Type = cpu_to_le32(UNIX_FILE);
-+ else if(S_ISDIR(mode))
-+ data_offset->Type = cpu_to_le32(UNIX_DIR);
-+ else if(S_ISLNK(mode))
-+ data_offset->Type = cpu_to_le32(UNIX_SYMLINK);
-+ else if(S_ISCHR(mode))
-+ data_offset->Type = cpu_to_le32(UNIX_CHARDEV);
-+ else if(S_ISBLK(mode))
-+ data_offset->Type = cpu_to_le32(UNIX_BLOCKDEV);
-+ else if(S_ISFIFO(mode))
-+ data_offset->Type = cpu_to_le32(UNIX_FIFO);
-+ else if(S_ISSOCK(mode))
-+ data_offset->Type = cpu_to_le32(UNIX_SOCKET);
-+
-+
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("SetPathInfo (perms) returned %d", rc));
-+ }
-+
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ if (rc == -EAGAIN)
-+ goto setPermsRetry;
-+ return rc;
-+}
-+
-+int CIFSSMBNotify(const int xid, struct cifsTconInfo *tcon,
-+ const int notify_subdirs, const __u16 netfid,
-+ __u32 filter, const struct nls_table *nls_codepage)
-+{
-+ int rc = 0;
-+ struct smb_com_transaction_change_notify_req * pSMB = NULL;
-+ struct smb_com_transaction_change_notify_rsp * pSMBr = NULL;
-+ int bytes_returned;
-+
-+ cFYI(1, ("In CIFSSMBNotify for file handle %d",(int)netfid));
-+ rc = smb_init(SMB_COM_NT_TRANSACT, 23, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ pSMB->TotalParameterCount = 0 ;
-+ pSMB->TotalDataCount = 0;
-+ pSMB->MaxParameterCount = cpu_to_le32(2);
-+ /* BB find exact data count max from sess structure BB */
-+ pSMB->MaxDataCount = 0; /* same in little endian or be */
-+ pSMB->MaxSetupCount = 4;
-+ pSMB->Reserved = 0;
-+ pSMB->ParameterOffset = 0;
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->SetupCount = 4; /* single byte does not need le conversion */
-+ pSMB->SubCommand = cpu_to_le16(NT_TRANSACT_NOTIFY_CHANGE);
-+ pSMB->ParameterCount = pSMB->TotalParameterCount;
-+ if(notify_subdirs)
-+ pSMB->WatchTree = 1; /* one byte - no le conversion needed */
-+ pSMB->Reserved2 = 0;
-+ pSMB->CompletionFilter = cpu_to_le32(filter);
-+ pSMB->Fid = netfid; /* file handle always le */
-+ pSMB->ByteCount = 0;
-+
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Error in Notify = %d", rc));
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+/* if (rc == -EAGAIN)
-+ goto NotifyRetry; */
-+ return rc;
-+}
-+#ifdef CONFIG_CIFS_XATTR
-+int
-+CIFSSMBQAllEAs(const int xid, struct cifsTconInfo *tcon,
-+ const unsigned char *searchName,
-+ char * EAData, size_t size,
-+ const struct nls_table *nls_codepage)
-+{
-+ /* BB assumes one setup word */
-+ TRANSACTION2_QPI_REQ *pSMB = NULL;
-+ TRANSACTION2_QPI_RSP *pSMBr = NULL;
-+ int rc = 0;
-+ int bytes_returned;
-+ int name_len;
-+
-+ cFYI(1, ("In Query All EAs path %s", searchName));
-+QAllEAsRetry:
-+ rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
-+ (void **) &pSMBr);
-+ if (rc)
-+ return rc;
-+
-+ if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
-+ name_len =
-+ cifs_strtoUCS((wchar_t *) pSMB->FileName, searchName, 530
-+ /* find define for this maxpathcomponent */
-+ , nls_codepage);
-+ name_len++; /* trailing null */
-+ name_len *= 2;
-+ } else { /* BB improve the check for buffer overruns BB */
-+ name_len = strnlen(searchName, 530);
-+ name_len++; /* trailing null */
-+ strncpy(pSMB->FileName, searchName, name_len);
-+ }
-+
-+ pSMB->TotalParameterCount = 2 /* level */ + 4 /* reserved */ +
-+ name_len /* includes null */ ;
-+ pSMB->TotalDataCount = 0;
-+ pSMB->MaxParameterCount = cpu_to_le16(2);
-+ pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */
-+ pSMB->MaxSetupCount = 0;
-+ pSMB->Reserved = 0;
-+ pSMB->Flags = 0;
-+ pSMB->Timeout = 0;
-+ pSMB->Reserved2 = 0;
-+ pSMB->ParameterOffset = cpu_to_le16(offsetof(
-+ struct smb_com_transaction2_qpi_req ,InformationLevel) - 4);
-+ pSMB->DataCount = 0;
-+ pSMB->DataOffset = 0;
-+ pSMB->SetupCount = 1;
-+ pSMB->Reserved3 = 0;
-+ pSMB->SubCommand = cpu_to_le16(TRANS2_QUERY_PATH_INFORMATION);
-+ pSMB->ByteCount = pSMB->TotalParameterCount + 1 /* pad */ ;
-+ pSMB->TotalParameterCount = cpu_to_le16(pSMB->TotalParameterCount);
-+ pSMB->ParameterCount = pSMB->TotalParameterCount;
-+ pSMB->InformationLevel = cpu_to_le16(SMB_INFO_QUERY_ALL_EAS);
-+ pSMB->Reserved4 = 0;
-+ pSMB->hdr.smb_buf_length += pSMB->ByteCount;
-+ pSMB->ByteCount = cpu_to_le16(pSMB->ByteCount);
-+
-+ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
-+ (struct smb_hdr *) pSMBr, &bytes_returned, 0);
-+ if (rc) {
-+ cFYI(1, ("Send error in QueryAllEAs = %d", rc));
-+ } else { /* decode response */
-+ pSMBr->DataOffset = le16_to_cpu(pSMBr->DataOffset);
-+ /* BB also check enough total bytes returned */
-+ /* BB we need to improve the validity checking
-+ of these trans2 responses */
-+ if ((pSMBr->ByteCount < 4) || (pSMBr->DataOffset > 512))
-+ rc = -EIO; /* bad smb */
-+ /* else if (pFindData){
-+ memcpy((char *) pFindData,
-+ (char *) &pSMBr->hdr.Protocol +
-+ pSMBr->DataOffset, kl);
-+ }*/ else {
-+ /* check that length of list is not more than bcc */
-+ /* check that each entry does not go beyond length
-+ of list */
-+ /* check that each element of each entry does not
-+ go beyond end of list */
-+ struct fealist * ea_response_data;
-+ rc = 0;
-+ /* validate_trans2_offsets() */
-+ /* BB to check if(start of smb + pSMBr->DataOffset > &bcc+ bcc)*/
-+ ea_response_data = (struct fealist *)
-+ (((char *) &pSMBr->hdr.Protocol) +
-+ pSMBr->DataOffset);
-+ cFYI(1,("ea length %d",ea_response_data->list_len));
-+ }
-+ }
-+ if (pSMB)
-+ cifs_buf_release(pSMB);
-+ if (rc == -EAGAIN)
-+ goto QAllEAsRetry;
-+
-+ return rc;
-+}
-+#endif
-diff -urN linux-2.4.29.old/fs/cifs/cifs_unicode.c linux-2.4.29/fs/cifs/cifs_unicode.c
---- linux-2.4.29.old/fs/cifs/cifs_unicode.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifs_unicode.c 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,87 @@
-+/*
-+ * fs/cifs/cifs_unicode.c
-+ *
-+ * Copyright (c) International Business Machines Corp., 2000,2002
-+ * Modified by Steve French (sfrench@us.ibm.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * 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 <linux/fs.h>
-+#include "cifs_unicode.h"
-+#include "cifs_uniupr.h"
-+#include "cifspdu.h"
-+#include "cifs_debug.h"
-+
-+/*
-+ * NAME: cifs_strfromUCS()
-+ *
-+ * FUNCTION: Convert little-endian unicode string to character string
-+ *
-+ */
-+int
-+cifs_strfromUCS_le(char *to, const wchar_t * from, /* LITTLE ENDIAN */
-+ int len, const struct nls_table *codepage)
-+{
-+ int i;
-+ int outlen = 0;
-+
-+ for (i = 0; (i < len) && from[i]; i++) {
-+ int charlen;
-+ /* 2.4.0 kernel or greater */
-+ charlen =
-+ codepage->uni2char(le16_to_cpu(from[i]), &to[outlen],
-+ NLS_MAX_CHARSET_SIZE);
-+ if (charlen > 0) {
-+ outlen += charlen;
-+ } else {
-+ to[outlen++] = '?';
-+ }
-+ }
-+ to[outlen] = 0;
-+ return outlen;
-+}
-+
-+/*
-+ * NAME: cifs_strtoUCS()
-+ *
-+ * FUNCTION: Convert character string to unicode string
-+ *
-+ */
-+int
-+cifs_strtoUCS(wchar_t * to, const char *from, int len,
-+ const struct nls_table *codepage)
-+{
-+ int charlen;
-+ int i;
-+
-+ for (i = 0; len && *from; i++, from += charlen, len -= charlen) {
-+
-+ /* works for 2.4.0 kernel or later */
-+ charlen = codepage->char2uni(from, len, &to[i]);
-+ if (charlen < 1) {
-+ cERROR(1,
-+ ("cifs_strtoUCS: char2uni returned %d",
-+ charlen));
-+ to[i] = cpu_to_le16(0x003f); /* a question mark */
-+ charlen = 1;
-+ }
-+ to[i] = cpu_to_le16(to[i]);
-+
-+ }
-+
-+ to[i] = 0;
-+ return i;
-+}
-+
-diff -urN linux-2.4.29.old/fs/cifs/cifs_unicode.h linux-2.4.29/fs/cifs/cifs_unicode.h
---- linux-2.4.29.old/fs/cifs/cifs_unicode.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifs_unicode.h 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,353 @@
-+/*
-+ * cifs_unicode: Unicode kernel case support
-+ *
-+ * Function:
-+ * Convert a unicode character to upper or lower case using
-+ * compressed tables.
-+ *
-+ * Copyright (c) International Business Machines Corp., 2000,2002
-+ *
-+ * 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
-+ *
-+ *
-+ * Notes:
-+ * These APIs are based on the C library functions. The semantics
-+ * should match the C functions but with expanded size operands.
-+ *
-+ * The upper/lower functions are based on a table created by mkupr.
-+ * This is a compressed table of upper and lower case conversion.
-+ *
-+ */
-+
-+#include <asm/byteorder.h>
-+#include <linux/types.h>
-+#include <linux/nls.h>
-+
-+#define UNIUPR_NOLOWER /* Example to not expand lower case tables */
-+
-+/* Just define what we want from uniupr.h. We don't want to define the tables
-+ * in each source file.
-+ */
-+#ifndef UNICASERANGE_DEFINED
-+struct UniCaseRange {
-+ wchar_t start;
-+ wchar_t end;
-+ signed char *table;
-+};
-+#endif /* UNICASERANGE_DEFINED */
-+
-+#ifndef UNIUPR_NOUPPER
-+extern signed char CifsUniUpperTable[512];
-+extern const struct UniCaseRange CifsUniUpperRange[];
-+#endif /* UNIUPR_NOUPPER */
-+
-+#ifndef UNIUPR_NOLOWER
-+extern signed char UniLowerTable[512];
-+extern struct UniCaseRange UniLowerRange[];
-+#endif /* UNIUPR_NOLOWER */
-+
-+#ifdef __KERNEL__
-+int cifs_strfromUCS_le(char *, const wchar_t *, int, const struct nls_table *);
-+int cifs_strtoUCS(wchar_t *, const char *, int, const struct nls_table *);
-+#endif
-+
-+/*
-+ * UniStrcat: Concatenate the second string to the first
-+ *
-+ * Returns:
-+ * Address of the first string
-+ */
-+static inline wchar_t *
-+UniStrcat(wchar_t * ucs1, const wchar_t * ucs2)
-+{
-+ wchar_t *anchor = ucs1; /* save a pointer to start of ucs1 */
-+
-+ while (*ucs1++) ; /* To end of first string */
-+ ucs1--; /* Return to the null */
-+ while ((*ucs1++ = *ucs2++)) ; /* copy string 2 over */
-+ return anchor;
-+}
-+
-+/*
-+ * UniStrchr: Find a character in a string
-+ *
-+ * Returns:
-+ * Address of first occurrence of character in string
-+ * or NULL if the character is not in the string
-+ */
-+static inline wchar_t *
-+UniStrchr(const wchar_t * ucs, wchar_t uc)
-+{
-+ while ((*ucs != uc) && *ucs)
-+ ucs++;
-+
-+ if (*ucs == uc)
-+ return (wchar_t *) ucs;
-+ return NULL;
-+}
-+
-+/*
-+ * UniStrcmp: Compare two strings
-+ *
-+ * Returns:
-+ * < 0: First string is less than second
-+ * = 0: Strings are equal
-+ * > 0: First string is greater than second
-+ */
-+static inline int
-+UniStrcmp(const wchar_t * ucs1, const wchar_t * ucs2)
-+{
-+ while ((*ucs1 == *ucs2) && *ucs1) {
-+ ucs1++;
-+ ucs2++;
-+ }
-+ return (int) *ucs1 - (int) *ucs2;
-+}
-+
-+/*
-+ * UniStrcpy: Copy a string
-+ */
-+static inline wchar_t *
-+UniStrcpy(wchar_t * ucs1, const wchar_t * ucs2)
-+{
-+ wchar_t *anchor = ucs1; /* save the start of result string */
-+
-+ while ((*ucs1++ = *ucs2++)) ;
-+ return anchor;
-+}
-+
-+/*
-+ * UniStrlen: Return the length of a string (in 16 bit Unicode chars not bytes)
-+ */
-+static inline size_t
-+UniStrlen(const wchar_t * ucs1)
-+{
-+ int i = 0;
-+
-+ while (*ucs1++)
-+ i++;
-+ return i;
-+}
-+
-+/*
-+ * UniStrnlen: Return the length (in 16 bit Unicode chars not bytes) of a string (length limited)
-+ */
-+static inline size_t
-+UniStrnlen(const wchar_t * ucs1, int maxlen)
-+{
-+ int i = 0;
-+
-+ while (*ucs1++) {
-+ i++;
-+ if (i >= maxlen)
-+ break;
-+ }
-+ return i;
-+}
-+
-+/*
-+ * UniStrncat: Concatenate length limited string
-+ */
-+static inline wchar_t *
-+UniStrncat(wchar_t * ucs1, const wchar_t * ucs2, size_t n)
-+{
-+ wchar_t *anchor = ucs1; /* save pointer to string 1 */
-+
-+ while (*ucs1++) ;
-+ ucs1--; /* point to null terminator of s1 */
-+ while (n-- && (*ucs1 = *ucs2)) { /* copy s2 after s1 */
-+ ucs1++;
-+ ucs2++;
-+ }
-+ *ucs1 = 0; /* Null terminate the result */
-+ return (anchor);
-+}
-+
-+/*
-+ * UniStrncmp: Compare length limited string
-+ */
-+static inline int
-+UniStrncmp(const wchar_t * ucs1, const wchar_t * ucs2, size_t n)
-+{
-+ if (!n)
-+ return 0; /* Null strings are equal */
-+ while ((*ucs1 == *ucs2) && *ucs1 && --n) {
-+ ucs1++;
-+ ucs2++;
-+ }
-+ return (int) *ucs1 - (int) *ucs2;
-+}
-+
-+/*
-+ * UniStrncmp_le: Compare length limited string - native to little-endian
-+ */
-+static inline int
-+UniStrncmp_le(const wchar_t * ucs1, const wchar_t * ucs2, size_t n)
-+{
-+ if (!n)
-+ return 0; /* Null strings are equal */
-+ while ((*ucs1 == __le16_to_cpu(*ucs2)) && *ucs1 && --n) {
-+ ucs1++;
-+ ucs2++;
-+ }
-+ return (int) *ucs1 - (int) __le16_to_cpu(*ucs2);
-+}
-+
-+/*
-+ * UniStrncpy: Copy length limited string with pad
-+ */
-+static inline wchar_t *
-+UniStrncpy(wchar_t * ucs1, const wchar_t * ucs2, size_t n)
-+{
-+ wchar_t *anchor = ucs1;
-+
-+ while (n-- && *ucs2) /* Copy the strings */
-+ *ucs1++ = *ucs2++;
-+
-+ n++;
-+ while (n--) /* Pad with nulls */
-+ *ucs1++ = 0;
-+ return anchor;
-+}
-+
-+/*
-+ * UniStrncpy_le: Copy length limited string with pad to little-endian
-+ */
-+static inline wchar_t *
-+UniStrncpy_le(wchar_t * ucs1, const wchar_t * ucs2, size_t n)
-+{
-+ wchar_t *anchor = ucs1;
-+
-+ while (n-- && *ucs2) /* Copy the strings */
-+ *ucs1++ = __le16_to_cpu(*ucs2++);
-+
-+ n++;
-+ while (n--) /* Pad with nulls */
-+ *ucs1++ = 0;
-+ return anchor;
-+}
-+
-+/*
-+ * UniStrstr: Find a string in a string
-+ *
-+ * Returns:
-+ * Address of first match found
-+ * NULL if no matching string is found
-+ */
-+static inline wchar_t *
-+UniStrstr(const wchar_t * ucs1, const wchar_t * ucs2)
-+{
-+ const wchar_t *anchor1 = ucs1;
-+ const wchar_t *anchor2 = ucs2;
-+
-+ while (*ucs1) {
-+ if (*ucs1 == *ucs2) { /* Partial match found */
-+ ucs1++;
-+ ucs2++;
-+ } else {
-+ if (!*ucs2) /* Match found */
-+ return (wchar_t *) anchor1;
-+ ucs1 = ++anchor1; /* No match */
-+ ucs2 = anchor2;
-+ }
-+ }
-+
-+ if (!*ucs2) /* Both end together */
-+ return (wchar_t *) anchor1; /* Match found */
-+ return NULL; /* No match */
-+}
-+
-+#ifndef UNIUPR_NOUPPER
-+/*
-+ * UniToupper: Convert a unicode character to upper case
-+ */
-+static inline wchar_t
-+UniToupper(register wchar_t uc)
-+{
-+ register const struct UniCaseRange *rp;
-+
-+ if (uc < sizeof (CifsUniUpperTable)) { /* Latin characters */
-+ return uc + CifsUniUpperTable[uc]; /* Use base tables */
-+ } else {
-+ rp = CifsUniUpperRange; /* Use range tables */
-+ while (rp->start) {
-+ if (uc < rp->start) /* Before start of range */
-+ return uc; /* Uppercase = input */
-+ if (uc <= rp->end) /* In range */
-+ return uc + rp->table[uc - rp->start];
-+ rp++; /* Try next range */
-+ }
-+ }
-+ return uc; /* Past last range */
-+}
-+
-+/*
-+ * UniStrupr: Upper case a unicode string
-+ */
-+static inline wchar_t *
-+UniStrupr(register wchar_t * upin)
-+{
-+ register wchar_t *up;
-+
-+ up = upin;
-+ while (*up) { /* For all characters */
-+ *up = UniToupper(*up);
-+ up++;
-+ }
-+ return upin; /* Return input pointer */
-+}
-+#endif /* UNIUPR_NOUPPER */
-+
-+#ifndef UNIUPR_NOLOWER
-+/*
-+ * UniTolower: Convert a unicode character to lower case
-+ */
-+static inline wchar_t
-+UniTolower(wchar_t uc)
-+{
-+ register struct UniCaseRange *rp;
-+
-+ if (uc < sizeof (UniLowerTable)) { /* Latin characters */
-+ return uc + UniLowerTable[uc]; /* Use base tables */
-+ } else {
-+ rp = UniLowerRange; /* Use range tables */
-+ while (rp->start) {
-+ if (uc < rp->start) /* Before start of range */
-+ return uc; /* Uppercase = input */
-+ if (uc <= rp->end) /* In range */
-+ return uc + rp->table[uc - rp->start];
-+ rp++; /* Try next range */
-+ }
-+ }
-+ return uc; /* Past last range */
-+}
-+
-+/*
-+ * UniStrlwr: Lower case a unicode string
-+ */
-+static inline wchar_t *
-+UniStrlwr(register wchar_t * upin)
-+{
-+ register wchar_t *up;
-+
-+ up = upin;
-+ while (*up) { /* For all characters */
-+ *up = UniTolower(*up);
-+ up++;
-+ }
-+ return upin; /* Return input pointer */
-+}
-+
-+#endif
-diff -urN linux-2.4.29.old/fs/cifs/cifs_uniupr.h linux-2.4.29/fs/cifs/cifs_uniupr.h
---- linux-2.4.29.old/fs/cifs/cifs_uniupr.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/cifs_uniupr.h 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,253 @@
-+/*
-+ * Copyright (c) International Business Machines Corp., 2000,2002
-+ *
-+ * 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
-+ *
-+ * uniupr.h - Unicode compressed case ranges
-+ *
-+*/
-+
-+#ifndef UNIUPR_NOUPPER
-+/*
-+ * Latin upper case
-+ */
-+signed char CifsUniUpperTable[512] = {
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 000-00f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 010-01f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 020-02f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 030-03f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 040-04f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 050-05f */
-+ 0, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, /* 060-06f */
-+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, 0, 0, 0, 0, 0, /* 070-07f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 080-08f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 090-09f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0a0-0af */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0b0-0bf */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0c0-0cf */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0d0-0df */
-+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, /* 0e0-0ef */
-+ -32, -32, -32, -32, -32, -32, -32, 0, -32, -32, -32, -32, -32, -32, -32, 121, /* 0f0-0ff */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 100-10f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 110-11f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 120-12f */
-+ 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, /* 130-13f */
-+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, /* 140-14f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 150-15f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 160-16f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, /* 170-17f */
-+ 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, /* 180-18f */
-+ 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, /* 190-19f */
-+ 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, /* 1a0-1af */
-+ -1, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, /* 1b0-1bf */
-+ 0, 0, 0, 0, 0, -1, -2, 0, -1, -2, 0, -1, -2, 0, -1, 0, /* 1c0-1cf */
-+ -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, -79, 0, -1, /* 1d0-1df */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e0-1ef */
-+ 0, 0, -1, -2, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1, /* 1f0-1ff */
-+};
-+
-+/* Upper case range - Greek */
-+static signed char UniCaseRangeU03a0[47] = {
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, -37, -37, -37, /* 3a0-3af */
-+ 0, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, /* 3b0-3bf */
-+ -32, -32, -31, -32, -32, -32, -32, -32, -32, -32, -32, -32, -64,
-+ -63, -63,
-+};
-+
-+/* Upper case range - Cyrillic */
-+static signed char UniCaseRangeU0430[48] = {
-+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, /* 430-43f */
-+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, /* 440-44f */
-+ 0, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, 0, -80, -80, /* 450-45f */
-+};
-+
-+/* Upper case range - Extended cyrillic */
-+static signed char UniCaseRangeU0490[61] = {
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 490-49f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 4a0-4af */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 4b0-4bf */
-+ 0, 0, -1, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1,
-+};
-+
-+/* Upper case range - Extended latin and greek */
-+static signed char UniCaseRangeU1e00[509] = {
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e00-1e0f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e10-1e1f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e20-1e2f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e30-1e3f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e40-1e4f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e50-1e5f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e60-1e6f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e70-1e7f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e80-1e8f */
-+ 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, -59, 0, -1, 0, -1, /* 1e90-1e9f */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1ea0-1eaf */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1eb0-1ebf */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1ec0-1ecf */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1ed0-1edf */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1ee0-1eef */
-+ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, /* 1ef0-1eff */
-+ 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f00-1f0f */
-+ 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f10-1f1f */
-+ 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f20-1f2f */
-+ 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f30-1f3f */
-+ 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f40-1f4f */
-+ 0, 8, 0, 8, 0, 8, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f50-1f5f */
-+ 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f60-1f6f */
-+ 74, 74, 86, 86, 86, 86, 100, 100, 0, 0, 112, 112, 126, 126, 0, 0, /* 1f70-1f7f */
-+ 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f80-1f8f */
-+ 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f90-1f9f */
-+ 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fa0-1faf */
-+ 8, 8, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fb0-1fbf */
-+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fc0-1fcf */
-+ 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fd0-1fdf */
-+ 8, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fe0-1fef */
-+ 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+};
-+
-+/* Upper case range - Wide latin */
-+static signed char UniCaseRangeUff40[27] = {
-+ 0, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, /* ff40-ff4f */
-+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
-+};
-+
-+/*
-+ * Upper Case Range
-+ */
-+const struct UniCaseRange CifsUniUpperRange[] = {
-+ {0x03a0, 0x03ce, UniCaseRangeU03a0},
-+ {0x0430, 0x045f, UniCaseRangeU0430},
-+ {0x0490, 0x04cc, UniCaseRangeU0490},
-+ {0x1e00, 0x1ffc, UniCaseRangeU1e00},
-+ {0xff40, 0xff5a, UniCaseRangeUff40},
-+ {0, 0, NULL}
-+};
-+#endif
-+
-+#ifndef UNIUPR_NOLOWER
-+/*
-+ * Latin lower case
-+ */
-+static signed char CifsUniLowerTable[512] = {
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 000-00f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 010-01f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 020-02f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 030-03f */
-+ 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 040-04f */
-+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 0, 0, 0, 0, 0, /* 050-05f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 060-06f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 070-07f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 080-08f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 090-09f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0a0-0af */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0b0-0bf */
-+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0c0-0cf */
-+ 32, 32, 32, 32, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 0, /* 0d0-0df */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0e0-0ef */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0f0-0ff */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 100-10f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 110-11f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 120-12f */
-+ 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, /* 130-13f */
-+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, /* 140-14f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 150-15f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 160-16f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, -121, 1, 0, 1, 0, 1, 0, 0, /* 170-17f */
-+ 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 79, 0, /* 180-18f */
-+ 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 190-19f */
-+ 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, /* 1a0-1af */
-+ 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, /* 1b0-1bf */
-+ 0, 0, 0, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 1, 0, 1, /* 1c0-1cf */
-+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, /* 1d0-1df */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1e0-1ef */
-+ 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1f0-1ff */
-+};
-+
-+/* Lower case range - Greek */
-+static signed char UniCaseRangeL0380[44] = {
-+ 0, 0, 0, 0, 0, 0, 38, 0, 37, 37, 37, 0, 64, 0, 63, 63, /* 380-38f */
-+ 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 390-39f */
-+ 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-+};
-+
-+/* Lower case range - Cyrillic */
-+static signed char UniCaseRangeL0400[48] = {
-+ 0, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 0, 80, 80, /* 400-40f */
-+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 410-41f */
-+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 420-42f */
-+};
-+
-+/* Lower case range - Extended cyrillic */
-+static signed char UniCaseRangeL0490[60] = {
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 490-49f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 4a0-4af */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 4b0-4bf */
-+ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
-+};
-+
-+/* Lower case range - Extended latin and greek */
-+static signed char UniCaseRangeL1e00[504] = {
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1e00-1e0f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1e10-1e1f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1e20-1e2f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1e30-1e3f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1e40-1e4f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1e50-1e5f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1e60-1e6f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1e70-1e7f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1e80-1e8f */
-+ 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, /* 1e90-1e9f */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1ea0-1eaf */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1eb0-1ebf */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1ec0-1ecf */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1ed0-1edf */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* 1ee0-1eef */
-+ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 1ef0-1eff */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, -8, -8, -8, -8, -8, -8, /* 1f00-1f0f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, -8, -8, -8, -8, 0, 0, /* 1f10-1f1f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, -8, -8, -8, -8, -8, -8, /* 1f20-1f2f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, -8, -8, -8, -8, -8, -8, /* 1f30-1f3f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, -8, -8, -8, -8, 0, 0, /* 1f40-1f4f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, -8, 0, -8, 0, -8, /* 1f50-1f5f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, -8, -8, -8, -8, -8, -8, /* 1f60-1f6f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f70-1f7f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, -8, -8, -8, -8, -8, -8, /* 1f80-1f8f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, -8, -8, -8, -8, -8, -8, /* 1f90-1f9f */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, -8, -8, -8, -8, -8, -8, /* 1fa0-1faf */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, -74, -74, -9, 0, 0, 0, /* 1fb0-1fbf */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, -86, -86, -9, 0, 0, 0, /* 1fc0-1fcf */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, -100, -100, 0, 0, 0, 0, /* 1fd0-1fdf */
-+ 0, 0, 0, 0, 0, 0, 0, 0, -8, -8, -112, -112, -7, 0, 0, 0, /* 1fe0-1fef */
-+ 0, 0, 0, 0, 0, 0, 0, 0,
-+};
-+
-+/* Lower case range - Wide latin */
-+static signed char UniCaseRangeLff20[27] = {
-+ 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* ff20-ff2f */
-+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-+};
-+
-+/*
-+ * Lower Case Range
-+ */
-+const static struct UniCaseRange CifsUniLowerRange[] = {
-+ 0x0380, 0x03ab, UniCaseRangeL0380,
-+ 0x0400, 0x042f, UniCaseRangeL0400,
-+ 0x0490, 0x04cb, UniCaseRangeL0490,
-+ 0x1e00, 0x1ff7, UniCaseRangeL1e00,
-+ 0xff20, 0xff3a, UniCaseRangeLff20,
-+ 0, 0, 0
-+};
-+#endif
-diff -urN linux-2.4.29.old/fs/cifs/connect.c linux-2.4.29/fs/cifs/connect.c
---- linux-2.4.29.old/fs/cifs/connect.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/connect.c 2004-07-14 00:25:05.000000000 +0200
-@@ -0,0 +1,2924 @@
-+/*
-+ * fs/cifs/connect.c
-+ *
-+ * Copyright (C) International Business Machines Corp., 2002,2004
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * 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.1 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 <linux/fs.h>
-+#include <linux/net.h>
-+#include <linux/string.h>
-+#include <linux/list.h>
-+#include <linux/wait.h>
-+#include <linux/version.h>
-+#include <linux/ipv6.h>
-+#include <linux/pagemap.h>
-+#include <linux/ctype.h>
-+#include <linux/utsname.h>
-+#include <asm/uaccess.h>
-+#include <asm/processor.h>
-+#include "cifspdu.h"
-+#include "cifsglob.h"
-+#include "cifsproto.h"
-+#include "cifs_unicode.h"
-+#include "cifs_debug.h"
-+#include "cifs_fs_sb.h"
-+#include "ntlmssp.h"
-+#include "nterr.h"
-+#include "rfc1002pdu.h"
-+
-+#define CIFS_PORT 445
-+#define RFC1001_PORT 139
-+
-+extern void SMBencrypt(unsigned char *passwd, unsigned char *c8,
-+ unsigned char *p24);
-+extern void SMBNTencrypt(unsigned char *passwd, unsigned char *c8,
-+ unsigned char *p24);
-+extern int cifs_inet_pton(int, const char *, void *dst);
-+
-+struct smb_vol {
-+ char *username;
-+ char *password;
-+ char *domainname;
-+ char *UNC;
-+ char *UNCip;
-+ char *iocharset; /* local code page for mapping to and from Unicode */
-+ char source_rfc1001_name[16]; /* netbios name of client */
-+ uid_t linux_uid;
-+ gid_t linux_gid;
-+ mode_t file_mode;
-+ mode_t dir_mode;
-+ int rw:1;
-+ int retry:1;
-+ int intr:1;
-+ unsigned int rsize;
-+ unsigned int wsize;
-+ unsigned int sockopt;
-+ unsigned short int port;
-+};
-+
-+static int ipv4_connect(struct sockaddr_in *psin_server,
-+ struct socket **csocket,
-+ char * netb_name);
-+static int ipv6_connect(struct sockaddr_in6 *psin_server,
-+ struct socket **csocket);
-+
-+
-+ /*
-+ * cifs tcp session reconnection
-+ *
-+ * mark tcp session as reconnecting so temporarily locked
-+ * mark all smb sessions as reconnecting for tcp session
-+ * reconnect tcp session
-+ * wake up waiters on reconnection? - (not needed currently)
-+ */
-+
-+int
-+cifs_reconnect(struct TCP_Server_Info *server)
-+{
-+ int rc = 0;
-+ struct list_head *tmp;
-+ struct cifsSesInfo *ses;
-+ struct cifsTconInfo *tcon;
-+ struct mid_q_entry * mid_entry;
-+
-+ spin_lock(&GlobalMid_Lock);
-+ if(server->tcpStatus == CifsExiting) {
-+ /* the demux thread will exit normally
-+ next time through the loop */
-+ spin_unlock(&GlobalMid_Lock);
-+ return rc;
-+ } else
-+ server->tcpStatus = CifsNeedReconnect;
-+ spin_unlock(&GlobalMid_Lock);
-+ server->maxBuf = 0;
-+
-+ cFYI(1, ("Reconnecting tcp session "));
-+
-+ /* before reconnecting the tcp session, mark the smb session (uid)
-+ and the tid bad so they are not used until reconnected */
-+ read_lock(&GlobalSMBSeslock);
-+ list_for_each(tmp, &GlobalSMBSessionList) {
-+ ses = list_entry(tmp, struct cifsSesInfo, cifsSessionList);
-+ if (ses->server) {
-+ if (ses->server == server) {
-+ ses->status = CifsNeedReconnect;
-+ ses->ipc_tid = 0;
-+ }
-+ }
-+ /* else tcp and smb sessions need reconnection */
-+ }
-+ list_for_each(tmp, &GlobalTreeConnectionList) {
-+ tcon = list_entry(tmp, struct cifsTconInfo, cifsConnectionList);
-+ if((tcon) && (tcon->ses) && (tcon->ses->server == server)) {
-+ tcon->tidStatus = CifsNeedReconnect;
-+ }
-+ }
-+ read_unlock(&GlobalSMBSeslock);
-+ /* do not want to be sending data on a socket we are freeing */
-+ down(&server->tcpSem);
-+ if(server->ssocket) {
-+ cFYI(1,("State: 0x%x Flags: 0x%lx", server->ssocket->state,
-+ server->ssocket->flags));
-+ server->ssocket->ops->shutdown(server->ssocket,SEND_SHUTDOWN);
-+ cFYI(1,("Post shutdown state: 0x%x Flags: 0x%lx", server->ssocket->state,
-+ server->ssocket->flags));
-+ sock_release(server->ssocket);
-+ server->ssocket = NULL;
-+ }
-+
-+ spin_lock(&GlobalMid_Lock);
-+ list_for_each(tmp, &server->pending_mid_q) {
-+ mid_entry = list_entry(tmp, struct
-+ mid_q_entry,
-+ qhead);
-+ if(mid_entry) {
-+ if(mid_entry->midState == MID_REQUEST_SUBMITTED) {
-+ /* Mark other intransit requests as needing retry so
-+ we do not immediately mark the session bad again
-+ (ie after we reconnect below) as they timeout too */
-+ mid_entry->midState = MID_RETRY_NEEDED;
-+ }
-+ }
-+ }
-+ spin_unlock(&GlobalMid_Lock);
-+ up(&server->tcpSem);
-+
-+ while ((server->tcpStatus != CifsExiting) && (server->tcpStatus != CifsGood))
-+ {
-+ if(server->protocolType == IPV6) {
-+ rc = ipv6_connect(&server->addr.sockAddr6,&server->ssocket);
-+ } else {
-+ rc = ipv4_connect(&server->addr.sockAddr,
-+ &server->ssocket,
-+ server->workstation_RFC1001_name);
-+ }
-+ if(rc) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(3 * HZ);
-+ } else {
-+ atomic_inc(&tcpSesReconnectCount);
-+ spin_lock(&GlobalMid_Lock);
-+ if(server->tcpStatus != CifsExiting)
-+ server->tcpStatus = CifsGood;
-+ spin_unlock(&GlobalMid_Lock);
-+ /* atomic_set(&server->inFlight,0);*/
-+ wake_up(&server->response_q);
-+ }
-+ }
-+ return rc;
-+}
-+
-+static int
-+cifs_demultiplex_thread(struct TCP_Server_Info *server)
-+{
-+ int length;
-+ unsigned int pdu_length, total_read;
-+ struct smb_hdr *smb_buffer = NULL;
-+ struct msghdr smb_msg;
-+ mm_segment_t temp_fs;
-+ struct iovec iov;
-+ struct socket *csocket = server->ssocket;
-+ struct list_head *tmp;
-+ struct cifsSesInfo *ses;
-+ struct task_struct *task_to_wake = NULL;
-+ struct mid_q_entry *mid_entry;
-+ char *temp;
-+
-+ daemonize();
-+ sprintf(current->comm,"cifsd");
-+ /* allow_signal(SIGKILL);*/
-+ current->flags |= PF_MEMALLOC;
-+ server->tsk = current; /* save process info to wake at shutdown */
-+ cFYI(1, ("Demultiplex PID: %d", current->pid));
-+
-+ temp_fs = get_fs(); /* we must turn off socket api parm checking */
-+ set_fs(get_ds());
-+
-+ while (server->tcpStatus != CifsExiting) {
-+ if (smb_buffer == NULL)
-+ smb_buffer = cifs_buf_get();
-+ else
-+ memset(smb_buffer, 0, sizeof (struct smb_hdr));
-+
-+ if (smb_buffer == NULL) {
-+ cERROR(1,("Can not get memory for SMB response"));
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ * 3); /* give system time to free memory */
-+ continue;
-+ }
-+ iov.iov_base = smb_buffer;
-+ iov.iov_len = sizeof (struct smb_hdr) - 1;
-+ /* 1 byte less above since wct is not always returned in error cases */
-+ smb_msg.msg_iov = &iov;
-+ smb_msg.msg_iovlen = 1;
-+ smb_msg.msg_control = NULL;
-+ smb_msg.msg_controllen = 0;
-+
-+ length =
-+ sock_recvmsg(csocket, &smb_msg,
-+ sizeof (struct smb_hdr) -
-+ 1 /* RFC1001 header and SMB header */ ,
-+ MSG_PEEK /* flags see socket.h */ );
-+
-+ if(server->tcpStatus == CifsExiting) {
-+ break;
-+ } else if (server->tcpStatus == CifsNeedReconnect) {
-+ cFYI(1,("Reconnecting after server stopped responding"));
-+ cifs_reconnect(server);
-+ cFYI(1,("call to reconnect done"));
-+ csocket = server->ssocket;
-+ continue;
-+ } else if ((length == -ERESTARTSYS) || (length == -EAGAIN)) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(1); /* minimum sleep to prevent looping
-+ allowing socket to clear and app threads to set
-+ tcpStatus CifsNeedReconnect if server hung */
-+ continue;
-+ } else if (length <= 0) {
-+ if(server->tcpStatus == CifsNew) {
-+ cFYI(1,("tcp session abended prematurely (after SMBnegprot)"));
-+ /* some servers kill tcp session rather than returning
-+ smb negprot error in which case reconnecting here is
-+ not going to help - return error to mount */
-+ break;
-+ }
-+ if(length == -EINTR) {
-+ cFYI(1,("cifsd thread killed"));
-+ break;
-+ }
-+ cFYI(1,("Reconnecting after unexpected peek error %d",length));
-+ cifs_reconnect(server);
-+ csocket = server->ssocket;
-+ wake_up(&server->response_q);
-+ continue;
-+ }
-+
-+ pdu_length = 4 + ntohl(smb_buffer->smb_buf_length);
-+ /* Ony read pdu_length after below checks for too short (due
-+ to e.g. int overflow) and too long ie beyond end of buf */
-+ cFYI(1, ("Peek length rcvd: 0x%x beginning 0x%x)", length, pdu_length));
-+
-+ temp = (char *) smb_buffer;
-+ if (length > 3) {
-+ if (temp[0] == (char) RFC1002_SESSION_KEEP_ALIVE) {
-+ iov.iov_base = smb_buffer;
-+ iov.iov_len = 4;
-+ length = sock_recvmsg(csocket, &smb_msg, 4, 0);
-+ cFYI(0,("Received 4 byte keep alive packet"));
-+ } else if (temp[0] == (char) RFC1002_POSITIVE_SESSION_RESPONSE) {
-+ iov.iov_base = smb_buffer;
-+ iov.iov_len = 4;
-+ length = sock_recvmsg(csocket, &smb_msg, 4, 0);
-+ cFYI(1,("Good RFC 1002 session rsp"));
-+ } else if ((temp[0] == (char)RFC1002_NEGATIVE_SESSION_RESPONSE)
-+ && (length == 5)) {
-+ /* we get this from Windows 98 instead of error on SMB negprot response */
-+ cFYI(1,("Negative RFC 1002 Session Response Error 0x%x)",temp[4]));
-+ if(server->tcpStatus == CifsNew) {
-+ /* if nack on negprot (rather than
-+ ret of smb negprot error) reconnecting
-+ not going to help, ret error to mount */
-+ break;
-+ } else {
-+ /* give server a second to
-+ clean up before reconnect attempt */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ);
-+ /* always try 445 first on reconnect
-+ since we get NACK on some if we ever
-+ connected to port 139 (the NACK is
-+ since we do not begin with RFC1001
-+ session initialize frame) */
-+ server->addr.sockAddr.sin_port = CIFS_PORT;
-+ cifs_reconnect(server);
-+ csocket = server->ssocket;
-+ wake_up(&server->response_q);
-+ continue;
-+ }
-+ } else if (temp[0] != (char) 0) {
-+ cERROR(1,("Unknown RFC 1002 frame"));
-+ cifs_dump_mem(" Received Data: ", temp, length);
-+ cifs_reconnect(server);
-+ csocket = server->ssocket;
-+ continue;
-+ } else {
-+ if ((length != sizeof (struct smb_hdr) - 1)
-+ || (pdu_length >
-+ CIFS_MAX_MSGSIZE + MAX_CIFS_HDR_SIZE)
-+ || (pdu_length <
-+ sizeof (struct smb_hdr) - 1)
-+ ||
-+ (checkSMBhdr
-+ (smb_buffer, smb_buffer->Mid))) {
-+ cERROR(1,
-+ ("Invalid size or format for SMB found with length %d and pdu_lenght %d",
-+ length, pdu_length));
-+ cifs_dump_mem("Received Data is: ",temp,sizeof(struct smb_hdr));
-+ /* could we fix this network corruption by finding next
-+ smb header (instead of killing the session) and
-+ restart reading from next valid SMB found? */
-+ cifs_reconnect(server);
-+ csocket = server->ssocket;
-+ continue;
-+ } else { /* length ok */
-+
-+ length = 0;
-+ iov.iov_base = smb_buffer;
-+ iov.iov_len = pdu_length;
-+ for (total_read = 0;
-+ total_read < pdu_length;
-+ total_read += length) {
-+ length = sock_recvmsg(csocket, &smb_msg,
-+ pdu_length - total_read, 0);
-+ if (length == 0) {
-+ cERROR(1,
-+ ("Zero length receive when expecting %d ",
-+ pdu_length - total_read));
-+ cifs_reconnect(server);
-+ csocket = server->ssocket;
-+ continue;
-+ }
-+ }
-+ }
-+
-+ dump_smb(smb_buffer, length);
-+ if (checkSMB
-+ (smb_buffer, smb_buffer->Mid, total_read)) {
-+ cERROR(1, ("Bad SMB Received "));
-+ continue;
-+ }
-+
-+ task_to_wake = NULL;
-+ spin_lock(&GlobalMid_Lock);
-+ list_for_each(tmp, &server->pending_mid_q) {
-+ mid_entry = list_entry(tmp, struct
-+ mid_q_entry,
-+ qhead);
-+
-+ if ((mid_entry->mid == smb_buffer->Mid) && (mid_entry->midState == MID_REQUEST_SUBMITTED)) {
-+ cFYI(1,
-+ (" Mid 0x%x matched - waking up ",mid_entry->mid));
-+ task_to_wake = mid_entry->tsk;
-+ mid_entry->resp_buf =
-+ smb_buffer;
-+ mid_entry->midState =
-+ MID_RESPONSE_RECEIVED;
-+ }
-+ }
-+ spin_unlock(&GlobalMid_Lock);
-+ if (task_to_wake) {
-+ smb_buffer = NULL; /* will be freed by users thread after he is done */
-+ wake_up_process(task_to_wake);
-+ } else if (is_valid_oplock_break(smb_buffer) == FALSE) {
-+ cERROR(1, ("No task to wake, unknown frame rcvd!"));
-+ cifs_dump_mem("Received Data is: ",temp,sizeof(struct smb_hdr));
-+ }
-+ }
-+ } else {
-+ cFYI(0,
-+ ("Frame less than four bytes received %d bytes long.",
-+ length));
-+ if (length > 0) {
-+ length = sock_recvmsg(csocket, &smb_msg, length, 0); /* throw away junk frame */
-+ cFYI(1,
-+ (" with junk 0x%x in it ",
-+ *(__u32 *) smb_buffer));
-+ }
-+ }
-+ }
-+ spin_lock(&GlobalMid_Lock);
-+ server->tcpStatus = CifsExiting;
-+ server->tsk = NULL;
-+ atomic_set(&server->inFlight, 0);
-+ spin_unlock(&GlobalMid_Lock);
-+ /* Although there should not be any requests blocked on
-+ this queue it can not hurt to be paranoid and try to wake up requests
-+ that may haven been blocked when more than 50 at time were on the wire
-+ to the same server - they now will see the session is in exit state
-+ and get out of SendReceive. */
-+ wake_up_all(&server->request_q);
-+ /* give those requests time to exit */
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ/8);
-+
-+ if(server->ssocket) {
-+ sock_release(csocket);
-+ server->ssocket = NULL;
-+ }
-+ set_fs(temp_fs);
-+ if (smb_buffer) /* buffer usually freed in free_mid - need to free it on error or exit */
-+ cifs_buf_release(smb_buffer);
-+
-+ read_lock(&GlobalSMBSeslock);
-+ if (list_empty(&server->pending_mid_q)) {
-+ /* loop through server session structures attached to this and mark them dead */
-+ list_for_each(tmp, &GlobalSMBSessionList) {
-+ ses =
-+ list_entry(tmp, struct cifsSesInfo,
-+ cifsSessionList);
-+ if (ses->server == server) {
-+ ses->status = CifsExiting;
-+ ses->server = NULL;
-+ }
-+ }
-+ read_unlock(&GlobalSMBSeslock);
-+ } else {
-+ spin_lock(&GlobalMid_Lock);
-+ list_for_each(tmp, &server->pending_mid_q) {
-+ mid_entry = list_entry(tmp, struct mid_q_entry, qhead);
-+ if (mid_entry->midState == MID_REQUEST_SUBMITTED) {
-+ cFYI(1,
-+ (" Clearing Mid 0x%x - waking up ",mid_entry->mid));
-+ task_to_wake = mid_entry->tsk;
-+ if(task_to_wake) {
-+ wake_up_process(task_to_wake);
-+ }
-+ }
-+ }
-+ spin_unlock(&GlobalMid_Lock);
-+ read_unlock(&GlobalSMBSeslock);
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ /* 1/8th of sec is more than enough time for them to exit */
-+ schedule_timeout(HZ/8);
-+ }
-+
-+ if (list_empty(&server->pending_mid_q)) {
-+ /* mpx threads have not exited yet give them
-+ at least the smb send timeout time for long ops */
-+ cFYI(1, ("Wait for exit from demultiplex thread"));
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(46 * HZ);
-+ /* if threads still have not exited they are probably never
-+ coming home not much else we can do but free the memory */
-+ }
-+ kfree(server);
-+
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ/4);
-+ return 0;
-+}
-+
-+static void *
-+cifs_kcalloc(size_t size, int type)
-+{
-+ void *addr;
-+ addr = kmalloc(size, type);
-+ if (addr)
-+ memset(addr, 0, size);
-+ return addr;
-+}
-+
-+static int
-+cifs_parse_mount_options(char *options, const char *devname, struct smb_vol *vol)
-+{
-+ char *value;
-+ char *data;
-+ unsigned int temp_len, i, j;
-+ char separator[2];
-+
-+ separator[0] = ',';
-+ separator[1] = 0;
-+
-+ memset(vol->source_rfc1001_name,0x20,15);
-+ for(i=0;i < strnlen(system_utsname.nodename,15);i++) {
-+ /* does not have to be a perfect mapping since the field is
-+ informational, only used for servers that do not support
-+ port 445 and it can be overridden at mount time */
-+ vol->source_rfc1001_name[i] = toupper(system_utsname.nodename[i]);
-+ }
-+ vol->source_rfc1001_name[15] = 0;
-+
-+ vol->linux_uid = current->uid; /* current->euid instead? */
-+ vol->linux_gid = current->gid;
-+ vol->dir_mode = S_IRWXUGO;
-+ /* 2767 perms indicate mandatory locking support */
-+ vol->file_mode = S_IALLUGO & ~(S_ISUID | S_IXGRP);
-+
-+ /* vol->retry default is 0 (i.e. "soft" limited retry not hard retry) */
-+ vol->rw = TRUE;
-+
-+ if (!options)
-+ return 1;
-+
-+ if(strncmp(options,"sep=",4) == 0) {
-+ if(options[4] != 0) {
-+ separator[0] = options[4];
-+ options += 5;
-+ } else {
-+ cFYI(1,("Null separator not allowed"));
-+ }
-+ }
-+
-+ while ((data = strsep(&options, separator)) != NULL) {
-+ if (!*data)
-+ continue;
-+ if ((value = strchr(data, '=')) != NULL)
-+ *value++ = '\0';
-+ if (strnicmp(data, "user", 4) == 0) {
-+ if (!value || !*value) {
-+ printk(KERN_WARNING
-+ "CIFS: invalid or missing username\n");
-+ return 1; /* needs_arg; */
-+ }
-+ if (strnlen(value, 200) < 200) {
-+ vol->username = value;
-+ } else {
-+ printk(KERN_WARNING "CIFS: username too long\n");
-+ return 1;
-+ }
-+ } else if (strnicmp(data, "pass", 4) == 0) {
-+ if (!value || !*value) {
-+ vol->password = NULL;
-+ continue;
-+ }
-+ temp_len = strlen(value);
-+ /* removed password length check, NTLM passwords
-+ can be arbitrarily long */
-+
-+ /* if comma in password, the string will be
-+ prematurely null terminated. Commas in password are
-+ specified across the cifs mount interface by a double
-+ comma ie ,, and a comma used as in other cases ie ','
-+ as a parameter delimiter/separator is single and due
-+ to the strsep above is temporarily zeroed. */
-+
-+ /* NB: password legally can have multiple commas and
-+ the only illegal character in a password is null */
-+
-+ if ((value[temp_len] == 0) && (value[temp_len+1] == separator[0])) {
-+ /* reinsert comma */
-+ value[temp_len] = separator[0];
-+ temp_len+=2; /* move after the second comma */
-+ while(value[temp_len] != 0) {
-+ if((value[temp_len] == separator[0]) && (value[temp_len+1] != separator[0])) {
-+ /* single comma indicating start of next parm */
-+ break;
-+ }
-+ temp_len++;
-+ }
-+ if(value[temp_len] == 0) {
-+ options = NULL;
-+ } else {
-+ value[temp_len] = 0;
-+ /* move options to point to start of next parm */
-+ options = value + temp_len + 1;
-+ }
-+ /* go from value to (value + temp_len) condensing double commas to singles */
-+ vol->password = cifs_kcalloc(temp_len, GFP_KERNEL);
-+ for(i=0,j=0;i<temp_len;i++,j++) {
-+ vol->password[j] = value[i];
-+ if(value[i] == separator[0] && value[i+1] == separator[0]) {
-+ /* skip second comma */
-+ i++;
-+ }
-+ }
-+ /* value[temp_len] is zeroed above so
-+ vol->password[temp_len] guaranteed to be null */
-+ } else {
-+ vol->password = cifs_kcalloc(temp_len + 1, GFP_KERNEL);
-+ strcpy(vol->password, value);
-+ }
-+ } else if (strnicmp(data, "ip", 2) == 0) {
-+ if (!value || !*value) {
-+ vol->UNCip = NULL;
-+ } else if (strnlen(value, 35) < 35) {
-+ vol->UNCip = value;
-+ } else {
-+ printk(KERN_WARNING "CIFS: ip address too long\n");
-+ return 1;
-+ }
-+ } else if ((strnicmp(data, "unc", 3) == 0)
-+ || (strnicmp(data, "target", 6) == 0)
-+ || (strnicmp(data, "path", 4) == 0)) {
-+ if (!value || !*value) {
-+ printk(KERN_WARNING
-+ "CIFS: invalid path to network resource\n");
-+ return 1; /* needs_arg; */
-+ }
-+ if ((temp_len = strnlen(value, 300)) < 300) {
-+ vol->UNC = kmalloc(temp_len+1,GFP_KERNEL);
-+ if(vol->UNC == NULL)
-+ return 1;
-+ strcpy(vol->UNC,value);
-+ if (strncmp(vol->UNC, "//", 2) == 0) {
-+ vol->UNC[0] = '\\';
-+ vol->UNC[1] = '\\';
-+ } else if (strncmp(vol->UNC, "\\\\", 2) != 0) {
-+ printk(KERN_WARNING
-+ "CIFS: UNC Path does not begin with // or \\\\ \n");
-+ return 1;
-+ }
-+ } else {
-+ printk(KERN_WARNING "CIFS: UNC name too long\n");
-+ return 1;
-+ }
-+ } else if ((strnicmp(data, "domain", 3) == 0)
-+ || (strnicmp(data, "workgroup", 5) == 0)) {
-+ if (!value || !*value) {
-+ printk(KERN_WARNING "CIFS: invalid domain name\n");
-+ return 1; /* needs_arg; */
-+ }
-+ /* BB are there cases in which a comma can be valid in
-+ a domain name and need special handling? */
-+ if (strnlen(value, 65) < 65) {
-+ vol->domainname = value;
-+ cFYI(1, ("Domain name set"));
-+ } else {
-+ printk(KERN_WARNING "CIFS: domain name too long\n");
-+ return 1;
-+ }
-+ } else if (strnicmp(data, "iocharset", 9) == 0) {
-+ if (!value || !*value) {
-+ printk(KERN_WARNING "CIFS: invalid iocharset specified\n");
-+ return 1; /* needs_arg; */
-+ }
-+ if (strnlen(value, 65) < 65) {
-+ if(strnicmp(value,"default",7))
-+ vol->iocharset = value;
-+ /* if iocharset not set load_nls_default used by caller */
-+ cFYI(1, ("iocharset set to %s",value));
-+ } else {
-+ printk(KERN_WARNING "CIFS: iocharset name too long.\n");
-+ return 1;
-+ }
-+ } else if (strnicmp(data, "uid", 3) == 0) {
-+ if (value && *value) {
-+ vol->linux_uid =
-+ simple_strtoul(value, &value, 0);
-+ }
-+ } else if (strnicmp(data, "gid", 3) == 0) {
-+ if (value && *value) {
-+ vol->linux_gid =
-+ simple_strtoul(value, &value, 0);
-+ }
-+ } else if (strnicmp(data, "file_mode", 4) == 0) {
-+ if (value && *value) {
-+ vol->file_mode =
-+ simple_strtoul(value, &value, 0);
-+ }
-+ } else if (strnicmp(data, "dir_mode", 3) == 0) {
-+ if (value && *value) {
-+ vol->dir_mode =
-+ simple_strtoul(value, &value, 0);
-+ }
-+ } else if (strnicmp(data, "port", 4) == 0) {
-+ if (value && *value) {
-+ vol->port =
-+ simple_strtoul(value, &value, 0);
-+ }
-+ } else if (strnicmp(data, "rsize", 5) == 0) {
-+ if (value && *value) {
-+ vol->rsize =
-+ simple_strtoul(value, &value, 0);
-+ }
-+ } else if (strnicmp(data, "wsize", 5) == 0) {
-+ if (value && *value) {
-+ vol->wsize =
-+ simple_strtoul(value, &value, 0);
-+ }
-+ } else if (strnicmp(data, "sockopt", 5) == 0) {
-+ if (value && *value) {
-+ vol->sockopt =
-+ simple_strtoul(value, &value, 0);
-+ }
-+ } else if (strnicmp(data, "netbiosname", 4) == 0) {
-+ if (!value || !*value || (*value == ' ')) {
-+ cFYI(1,("invalid (empty) netbiosname specified"));
-+ } else {
-+ memset(vol->source_rfc1001_name,0x20,15);
-+ for(i=0;i<15;i++) {
-+ /* BB are there cases in which a comma can be
-+ valid in this workstation netbios name (and need
-+ special handling)? */
-+
-+ /* We do not uppercase netbiosname for user */
-+ if (value[i]==0)
-+ break;
-+ else
-+ vol->source_rfc1001_name[i] = value[i];
-+ }
-+ /* The string has 16th byte zero still from
-+ set at top of the function */
-+ if((i==15) && (value[i] != 0))
-+ printk(KERN_WARNING "CIFS: netbiosname longer than 15 and was truncated.\n");
-+ }
-+ } else if (strnicmp(data, "credentials", 4) == 0) {
-+ /* ignore */
-+ } else if (strnicmp(data, "version", 3) == 0) {
-+ /* ignore */
-+ } else if (strnicmp(data, "rw", 2) == 0) {
-+ vol->rw = TRUE;
-+ } else if ((strnicmp(data, "suid", 4) == 0) ||
-+ (strnicmp(data, "nosuid", 6) == 0) ||
-+ (strnicmp(data, "exec", 4) == 0) ||
-+ (strnicmp(data, "noexec", 6) == 0) ||
-+ (strnicmp(data, "nodev", 5) == 0) ||
-+ (strnicmp(data, "noauto", 6) == 0) ||
-+ (strnicmp(data, "dev", 3) == 0)) {
-+ /* The mount tool or mount.cifs helper (if present)
-+ uses these opts to set flags, and the flags are read
-+ by the kernel vfs layer before we get here (ie
-+ before read super) so there is no point trying to
-+ parse these options again and set anything and it
-+ is ok to just ignore them */
-+ continue;
-+ } else if (strnicmp(data, "ro", 2) == 0) {
-+ vol->rw = FALSE;
-+ } else if (strnicmp(data, "hard", 4) == 0) {
-+ vol->retry = 1;
-+ } else if (strnicmp(data, "soft", 4) == 0) {
-+ vol->retry = 0;
-+ } else if (strnicmp(data, "nohard", 6) == 0) {
-+ vol->retry = 0;
-+ } else if (strnicmp(data, "nosoft", 6) == 0) {
-+ vol->retry = 1;
-+ } else if (strnicmp(data, "nointr", 6) == 0) {
-+ vol->intr = 0;
-+ } else if (strnicmp(data, "intr", 4) == 0) {
-+ vol->intr = 1;
-+ } else if (strnicmp(data, "noac", 4) == 0) {
-+ printk(KERN_WARNING "CIFS: Mount option noac not supported. Instead set /proc/fs/cifs/LookupCacheEnabled to 0\n");
-+ } else
-+ printk(KERN_WARNING "CIFS: Unknown mount option %s\n",data);
-+ }
-+ if (vol->UNC == NULL) {
-+ if(devname == NULL) {
-+ printk(KERN_WARNING "CIFS: Missing UNC name for mount target\n");
-+ return 1;
-+ }
-+ if ((temp_len = strnlen(devname, 300)) < 300) {
-+ vol->UNC = kmalloc(temp_len+1,GFP_KERNEL);
-+ if(vol->UNC == NULL)
-+ return 1;
-+ strcpy(vol->UNC,devname);
-+ if (strncmp(vol->UNC, "//", 2) == 0) {
-+ vol->UNC[0] = '\\';
-+ vol->UNC[1] = '\\';
-+ } else if (strncmp(vol->UNC, "\\\\", 2) != 0) {
-+ printk(KERN_WARNING "CIFS: UNC Path does not begin with // or \\\\ \n");
-+ return 1;
-+ }
-+ } else {
-+ printk(KERN_WARNING "CIFS: UNC name too long\n");
-+ return 1;
-+ }
-+ }
-+ if(vol->UNCip == 0)
-+ vol->UNCip = &vol->UNC[2];
-+
-+ return 0;
-+}
-+
-+static struct cifsSesInfo *
-+cifs_find_tcp_session(__u32 new_target_ip_addr,
-+ char *userName, struct TCP_Server_Info **psrvTcp)
-+{
-+ struct list_head *tmp;
-+ struct cifsSesInfo *ses;
-+
-+ *psrvTcp = NULL;
-+ read_lock(&GlobalSMBSeslock);
-+ list_for_each(tmp, &GlobalSMBSessionList) {
-+ ses = list_entry(tmp, struct cifsSesInfo, cifsSessionList);
-+ if (ses->server) {
-+ if (ses->server->addr.sockAddr.sin_addr.s_addr ==
-+ new_target_ip_addr) {
-+ /* BB lock server and tcp session and increment use count here?? */
-+ *psrvTcp = ses->server; /* found a match on the TCP session */
-+ /* BB check if reconnection needed */
-+ if (strncmp
-+ (ses->userName, userName,
-+ MAX_USERNAME_SIZE) == 0){
-+ read_unlock(&GlobalSMBSeslock);
-+ return ses; /* found exact match on both tcp and SMB sessions */
-+ }
-+ }
-+ }
-+ /* else tcp and smb sessions need reconnection */
-+ }
-+ read_unlock(&GlobalSMBSeslock);
-+ return NULL;
-+}
-+
-+static struct cifsTconInfo *
-+find_unc(__u32 new_target_ip_addr, char *uncName, char *userName)
-+{
-+ struct list_head *tmp;
-+ struct cifsTconInfo *tcon;
-+
-+ read_lock(&GlobalSMBSeslock);
-+ list_for_each(tmp, &GlobalTreeConnectionList) {
-+ cFYI(1, ("Next tcon - "));
-+ tcon = list_entry(tmp, struct cifsTconInfo, cifsConnectionList);
-+ if (tcon->ses) {
-+ if (tcon->ses->server) {
-+ cFYI(1,
-+ (" old ip addr: %x == new ip %x ?",
-+ tcon->ses->server->addr.sockAddr.sin_addr.
-+ s_addr, new_target_ip_addr));
-+ if (tcon->ses->server->addr.sockAddr.sin_addr.
-+ s_addr == new_target_ip_addr) {
-+ /* BB lock tcon and server and tcp session and increment use count here? */
-+ /* found a match on the TCP session */
-+ /* BB check if reconnection needed */
-+ cFYI(1,("Matched ip, old UNC: %s == new: %s ?",
-+ tcon->treeName, uncName));
-+ if (strncmp
-+ (tcon->treeName, uncName,
-+ MAX_TREE_SIZE) == 0) {
-+ cFYI(1,
-+ ("Matched UNC, old user: %s == new: %s ?",
-+ tcon->treeName, uncName));
-+ if (strncmp
-+ (tcon->ses->userName,
-+ userName,
-+ MAX_USERNAME_SIZE) == 0) {
-+ read_unlock(&GlobalSMBSeslock);
-+ return tcon;/* also matched user (smb session)*/
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ read_unlock(&GlobalSMBSeslock);
-+ return NULL;
-+}
-+
-+int
-+connect_to_dfs_path(int xid, struct cifsSesInfo *pSesInfo,
-+ const char *old_path, const struct nls_table *nls_codepage)
-+{
-+ unsigned char *referrals = NULL;
-+ unsigned int num_referrals;
-+ int rc = 0;
-+
-+ rc = get_dfs_path(xid, pSesInfo,old_path, nls_codepage,
-+ &num_referrals, &referrals);
-+
-+ /* BB Add in code to: if valid refrl, if not ip address contact
-+ the helper that resolves tcp names, mount to it, try to
-+ tcon to it unmount it if fail */
-+
-+ if(referrals)
-+ kfree(referrals);
-+
-+ return rc;
-+}
-+
-+int
-+get_dfs_path(int xid, struct cifsSesInfo *pSesInfo,
-+ const char *old_path, const struct nls_table *nls_codepage,
-+ unsigned int *pnum_referrals, unsigned char ** preferrals)
-+{
-+ char *temp_unc;
-+ int rc = 0;
-+
-+ *pnum_referrals = 0;
-+
-+ if (pSesInfo->ipc_tid == 0) {
-+ temp_unc = kmalloc(2 /* for slashes */ +
-+ strnlen(pSesInfo->serverName,SERVER_NAME_LEN_WITH_NULL * 2)
-+ + 1 + 4 /* slash IPC$ */ + 2,
-+ GFP_KERNEL);
-+ if (temp_unc == NULL)
-+ return -ENOMEM;
-+ temp_unc[0] = '\\';
-+ temp_unc[1] = '\\';
-+ strcpy(temp_unc + 2, pSesInfo->serverName);
-+ strcpy(temp_unc + 2 + strlen(pSesInfo->serverName), "\\IPC$");
-+ rc = CIFSTCon(xid, pSesInfo, temp_unc, NULL, nls_codepage);
-+ cFYI(1,
-+ ("CIFS Tcon rc = %d ipc_tid = %d", rc,pSesInfo->ipc_tid));
-+ kfree(temp_unc);
-+ }
-+ if (rc == 0)
-+ rc = CIFSGetDFSRefer(xid, pSesInfo, old_path, preferrals,
-+ pnum_referrals, nls_codepage);
-+
-+ return rc;
-+}
-+
-+/* See RFC1001 section 14 on representation of Netbios names */
-+static void rfc1002mangle(char * target,char * source, unsigned int length)
-+{
-+ unsigned int i,j;
-+
-+ for(i=0,j=0;i<(length);i++) {
-+ /* mask a nibble at a time and encode */
-+ target[j] = 'A' + (0x0F & (source[i] >> 4));
-+ target[j+1] = 'A' + (0x0F & source[i]);
-+ j+=2;
-+ }
-+
-+}
-+
-+
-+static int
-+ipv4_connect(struct sockaddr_in *psin_server, struct socket **csocket,
-+ char * netbios_name)
-+{
-+ int rc = 0;
-+ int connected = 0;
-+ unsigned short int orig_port = 0;
-+
-+ if(*csocket == NULL) {
-+ rc = sock_create(PF_INET, SOCK_STREAM, IPPROTO_TCP, csocket);
-+ if (rc < 0) {
-+ cERROR(1, ("Error %d creating socket",rc));
-+ *csocket = NULL;
-+ return rc;
-+ } else {
-+ /* BB other socket options to set KEEPALIVE, NODELAY? */
-+ cFYI(1,("Socket created"));
-+ (*csocket)->sk->allocation = GFP_NOFS;
-+ }
-+ }
-+
-+ psin_server->sin_family = AF_INET;
-+ if(psin_server->sin_port) { /* user overrode default port */
-+ rc = (*csocket)->ops->connect(*csocket,
-+ (struct sockaddr *) psin_server,
-+ sizeof (struct sockaddr_in),0);
-+ if (rc >= 0)
-+ connected = 1;
-+ }
-+
-+ if(!connected) {
-+ /* save original port so we can retry user specified port
-+ later if fall back ports fail this time */
-+ orig_port = psin_server->sin_port;
-+
-+ /* do not retry on the same port we just failed on */
-+ if(psin_server->sin_port != htons(CIFS_PORT)) {
-+ psin_server->sin_port = htons(CIFS_PORT);
-+
-+ rc = (*csocket)->ops->connect(*csocket,
-+ (struct sockaddr *) psin_server,
-+ sizeof (struct sockaddr_in),0);
-+ if (rc >= 0)
-+ connected = 1;
-+ }
-+ }
-+ if (!connected) {
-+ psin_server->sin_port = htons(RFC1001_PORT);
-+ rc = (*csocket)->ops->connect(*csocket, (struct sockaddr *)
-+ psin_server, sizeof (struct sockaddr_in),0);
-+ if (rc >= 0)
-+ connected = 1;
-+ }
-+
-+ /* give up here - unless we want to retry on different
-+ protocol families some day */
-+ if (!connected) {
-+ if(orig_port)
-+ psin_server->sin_port = orig_port;
-+ cFYI(1,("Error %d connecting to server via ipv4",rc));
-+ sock_release(*csocket);
-+ *csocket = NULL;
-+ return rc;
-+ }
-+ /* Eventually check for other socket options to change from
-+ the default. sock_setsockopt not used because it expects
-+ user space buffer */
-+ (*csocket)->sk->rcvtimeo = 7 * HZ;
-+
-+ /* send RFC1001 sessinit */
-+
-+ if(psin_server->sin_port == htons(139)) {
-+ /* some servers require RFC1001 sessinit before sending
-+ negprot - BB check reconnection in case where second
-+ sessinit is sent but no second negprot */
-+ struct rfc1002_session_packet * ses_init_buf;
-+ struct smb_hdr * smb_buf;
-+ ses_init_buf = cifs_kcalloc(sizeof(struct rfc1002_session_packet), GFP_KERNEL);
-+ if(ses_init_buf) {
-+ ses_init_buf->trailer.session_req.called_len = 32;
-+ rfc1002mangle(ses_init_buf->trailer.session_req.called_name,
-+ DEFAULT_CIFS_CALLED_NAME,16);
-+ ses_init_buf->trailer.session_req.calling_len = 32;
-+ /* calling name ends in null (byte 16) from old smb
-+ convention. */
-+ if(netbios_name && (netbios_name[0] !=0)) {
-+ rfc1002mangle(ses_init_buf->trailer.session_req.calling_name,
-+ netbios_name,16);
-+ } else {
-+ rfc1002mangle(ses_init_buf->trailer.session_req.calling_name,
-+ "LINUX_CIFS_CLNT",16);
-+ }
-+ ses_init_buf->trailer.session_req.scope1 = 0;
-+ ses_init_buf->trailer.session_req.scope2 = 0;
-+ smb_buf = (struct smb_hdr *)ses_init_buf;
-+ /* sizeof RFC1002_SESSION_REQUEST with no scope */
-+ smb_buf->smb_buf_length = 0x81000044;
-+ rc = smb_send(*csocket, smb_buf, 0x44,
-+ (struct sockaddr *)psin_server);
-+ kfree(ses_init_buf);
-+ }
-+ /* else the negprot may still work without this
-+ even though malloc failed */
-+
-+ }
-+
-+ return rc;
-+}
-+
-+static int
-+ipv6_connect(struct sockaddr_in6 *psin_server, struct socket **csocket)
-+{
-+ int rc = 0;
-+ int connected = 0;
-+
-+ if(*csocket == NULL) {
-+ rc = sock_create(PF_INET6, SOCK_STREAM, IPPROTO_TCP, csocket);
-+ if (rc < 0) {
-+ cERROR(1, ("Error %d creating ipv6 socket",rc));
-+ *csocket = NULL;
-+ return rc;
-+ } else {
-+ /* BB other socket options to set KEEPALIVE, NODELAY? */
-+ cFYI(1,("ipv6 Socket created"));
-+ (*csocket)->sk->allocation = GFP_NOFS;
-+ }
-+ }
-+
-+ psin_server->sin6_family = AF_INET6;
-+
-+ if(psin_server->sin6_port) { /* user overrode default port */
-+ rc = (*csocket)->ops->connect(*csocket,
-+ (struct sockaddr *) psin_server,
-+ sizeof (struct sockaddr_in6),0);
-+ if (rc >= 0)
-+ connected = 1;
-+ }
-+
-+ if(!connected) {
-+ /* do not retry on the same port we just failed on */
-+ if(psin_server->sin6_port != htons(CIFS_PORT)) {
-+ psin_server->sin6_port = htons(CIFS_PORT);
-+
-+ rc = (*csocket)->ops->connect(*csocket,
-+ (struct sockaddr *) psin_server,
-+ sizeof (struct sockaddr_in6),0);
-+ if (rc >= 0)
-+ connected = 1;
-+ }
-+ }
-+ if (!connected) {
-+ psin_server->sin6_port = htons(RFC1001_PORT);
-+ rc = (*csocket)->ops->connect(*csocket, (struct sockaddr *)
-+ psin_server, sizeof (struct sockaddr_in6),0);
-+ if (rc >= 0)
-+ connected = 1;
-+ }
-+
-+ /* give up here - unless we want to retry on different
-+ protocol families some day */
-+ if (!connected) {
-+ cFYI(1,("Error %d connecting to server via ipv6",rc));
-+ sock_release(*csocket);
-+ *csocket = NULL;
-+ return rc;
-+ }
-+ /* Eventually check for other socket options to change from
-+ the default. sock_setsockopt not used because it expects
-+ user space buffer */
-+ (*csocket)->sk->rcvtimeo = 7 * HZ;
-+
-+ return rc;
-+}
-+
-+int
-+cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
-+ char *mount_data, const char *devname)
-+{
-+ int rc = 0;
-+ int xid;
-+ struct socket *csocket = NULL;
-+ struct sockaddr_in sin_server;
-+ struct sockaddr_in6 sin_server6;
-+ struct smb_vol volume_info;
-+ struct cifsSesInfo *pSesInfo = NULL;
-+ struct cifsSesInfo *existingCifsSes = NULL;
-+ struct cifsTconInfo *tcon = NULL;
-+ struct TCP_Server_Info *srvTcp = NULL;
-+
-+ xid = GetXid();
-+
-+ cFYI(1, ("Entering cifs_mount. Xid: %d with: %s", xid, mount_data)); /* BB removeme BB fixme */
-+
-+ memset(&volume_info,0,sizeof(struct smb_vol));
-+ if (cifs_parse_mount_options(mount_data, devname, &volume_info)) {
-+ if(volume_info.UNC)
-+ kfree(volume_info.UNC);
-+ if(volume_info.password)
-+ kfree(volume_info.password);
-+ FreeXid(xid);
-+ return -EINVAL;
-+ }
-+
-+ if (volume_info.username) {
-+ cFYI(1, ("Username: %s ", volume_info.username));
-+
-+ } else {
-+ cifserror("No username specified ");
-+ /* In userspace mount helper we can get user name from alternate
-+ locations such as env variables and files on disk */
-+ if(volume_info.UNC)
-+ kfree(volume_info.UNC);
-+ if(volume_info.password)
-+ kfree(volume_info.password);
-+ FreeXid(xid);
-+ return -EINVAL;
-+ }
-+
-+ if (volume_info.UNCip && volume_info.UNC) {
-+ rc = cifs_inet_pton(AF_INET, volume_info.UNCip,&sin_server.sin_addr.s_addr);
-+
-+ if(rc == 0) {
-+ /* not ipv4 address, try ipv6 */
-+ rc = cifs_inet_pton(AF_INET6,volume_info.UNCip,&sin_server6.sin6_addr.in6_u);
-+ }
-+
-+ if(rc != 1) {
-+ /* we failed translating address */
-+ if(volume_info.UNC)
-+ kfree(volume_info.UNC);
-+ if(volume_info.password)
-+ kfree(volume_info.password);
-+ FreeXid(xid);
-+ return -EINVAL;
-+ }
-+
-+ cFYI(1, ("UNC: %s ip: %s", volume_info.UNC, volume_info.UNCip));
-+ /* success */
-+ rc = 0;
-+ } else if (volume_info.UNCip){
-+ /* BB using ip addr as server name connect to the DFS root below */
-+ cERROR(1,("Connecting to DFS root not implemented yet"));
-+ if(volume_info.UNC)
-+ kfree(volume_info.UNC);
-+ if(volume_info.password)
-+ kfree(volume_info.password);
-+ FreeXid(xid);
-+ return -EINVAL;
-+ } else /* which servers DFS root would we conect to */ {
-+ cERROR(1,
-+ ("CIFS mount error: No UNC path (e.g. -o unc=//192.168.1.100/public) specified "));
-+ if(volume_info.UNC)
-+ kfree(volume_info.UNC);
-+ if(volume_info.password)
-+ kfree(volume_info.password);
-+ FreeXid(xid);
-+ return -EINVAL;
-+ }
-+
-+ /* this is needed for ASCII cp to Unicode converts */
-+ if(volume_info.iocharset == NULL) {
-+ cifs_sb->local_nls = load_nls_default();
-+ /* load_nls_default can not return null */
-+ } else {
-+ cifs_sb->local_nls = load_nls(volume_info.iocharset);
-+ if(cifs_sb->local_nls == NULL) {
-+ cERROR(1,("CIFS mount error: iocharset %s not found",volume_info.iocharset));
-+ if(volume_info.UNC)
-+ kfree(volume_info.UNC);
-+ if(volume_info.password)
-+ kfree(volume_info.password);
-+ FreeXid(xid);
-+ return -ELIBACC;
-+ }
-+ }
-+
-+ existingCifsSes =
-+ cifs_find_tcp_session(sin_server.sin_addr.s_addr,
-+ volume_info.username, &srvTcp);
-+ if (srvTcp) {
-+ cFYI(1, ("Existing tcp session with server found "));
-+ } else { /* create socket */
-+ if(volume_info.port)
-+ sin_server.sin_port = htons(volume_info.port);
-+ else
-+ sin_server.sin_port = 0;
-+ rc = ipv4_connect(&sin_server,&csocket,volume_info.source_rfc1001_name);
-+ if (rc < 0) {
-+ cERROR(1,
-+ ("Error connecting to IPv4 socket. Aborting operation"));
-+ if(csocket != NULL)
-+ sock_release(csocket);
-+ if(volume_info.UNC)
-+ kfree(volume_info.UNC);
-+ if(volume_info.password)
-+ kfree(volume_info.password);
-+ FreeXid(xid);
-+ return rc;
-+ }
-+
-+ srvTcp = kmalloc(sizeof (struct TCP_Server_Info), GFP_KERNEL);
-+ if (srvTcp == NULL) {
-+ rc = -ENOMEM;
-+ sock_release(csocket);
-+ if(volume_info.UNC)
-+ kfree(volume_info.UNC);
-+ if(volume_info.password)
-+ kfree(volume_info.password);
-+ FreeXid(xid);
-+ return rc;
-+ } else {
-+ memset(srvTcp, 0, sizeof (struct TCP_Server_Info));
-+ memcpy(&srvTcp->addr.sockAddr, &sin_server, sizeof (struct sockaddr_in));
-+ atomic_set(&srvTcp->inFlight,0);
-+ /* BB Add code for ipv6 case too */
-+ srvTcp->ssocket = csocket;
-+ srvTcp->protocolType = IPV4;
-+ init_waitqueue_head(&srvTcp->response_q);
-+ init_waitqueue_head(&srvTcp->request_q);
-+ INIT_LIST_HEAD(&srvTcp->pending_mid_q);
-+ /* at this point we are the only ones with the pointer
-+ to the struct since the kernel thread not created yet
-+ so no need to spinlock this init of tcpStatus */
-+ srvTcp->tcpStatus = CifsNew;
-+ init_MUTEX(&srvTcp->tcpSem);
-+ kernel_thread((void *)(void *)cifs_demultiplex_thread, srvTcp,
-+ CLONE_FS | CLONE_FILES | CLONE_VM);
-+ memcpy(srvTcp->workstation_RFC1001_name, volume_info.source_rfc1001_name,16);
-+ }
-+ }
-+
-+ if (existingCifsSes) {
-+ pSesInfo = existingCifsSes;
-+ cFYI(1, ("Existing smb sess found "));
-+ if(volume_info.password)
-+ kfree(volume_info.password);
-+ /* volume_info.UNC freed at end of function */
-+ } else if (!rc) {
-+ cFYI(1, ("Existing smb sess not found "));
-+ pSesInfo = sesInfoAlloc();
-+ if (pSesInfo == NULL)
-+ rc = -ENOMEM;
-+ else {
-+ pSesInfo->server = srvTcp;
-+ sprintf(pSesInfo->serverName, "%u.%u.%u.%u",
-+ NIPQUAD(sin_server.sin_addr.s_addr));
-+ }
-+
-+ if (!rc){
-+ /* volume_info.password freed at unmount */
-+ if (volume_info.password)
-+ pSesInfo->password = volume_info.password;
-+ if (volume_info.username)
-+ strncpy(pSesInfo->userName,
-+ volume_info.username,MAX_USERNAME_SIZE);
-+ if (volume_info.domainname)
-+ strncpy(pSesInfo->domainName,
-+ volume_info.domainname,MAX_USERNAME_SIZE);
-+ pSesInfo->linux_uid = volume_info.linux_uid;
-+ down(&pSesInfo->sesSem);
-+ rc = cifs_setup_session(xid,pSesInfo, cifs_sb->local_nls);
-+ up(&pSesInfo->sesSem);
-+ if(!rc)
-+ atomic_inc(&srvTcp->socketUseCount);
-+ } else
-+ if(volume_info.password)
-+ kfree(volume_info.password);
-+ }
-+
-+ /* search for existing tcon to this server share */
-+ if (!rc) {
-+ if((volume_info.rsize) && (volume_info.rsize + MAX_CIFS_HDR_SIZE < srvTcp->maxBuf))
-+ cifs_sb->rsize = volume_info.rsize;
-+ else
-+ cifs_sb->rsize = srvTcp->maxBuf - MAX_CIFS_HDR_SIZE; /* default */
-+ if((volume_info.wsize) && (volume_info.wsize + MAX_CIFS_HDR_SIZE < srvTcp->maxBuf))
-+ cifs_sb->wsize = volume_info.wsize;
-+ else
-+ cifs_sb->wsize = srvTcp->maxBuf - MAX_CIFS_HDR_SIZE; /* default */
-+ if(cifs_sb->rsize < PAGE_CACHE_SIZE) {
-+ cifs_sb->rsize = PAGE_CACHE_SIZE;
-+ cERROR(1,("Attempt to set readsize for mount to less than one page (4096)"));
-+ }
-+ cifs_sb->mnt_uid = volume_info.linux_uid;
-+ cifs_sb->mnt_gid = volume_info.linux_gid;
-+ cifs_sb->mnt_file_mode = volume_info.file_mode;
-+ cifs_sb->mnt_dir_mode = volume_info.dir_mode;
-+ cFYI(1,("file mode: 0x%x dir mode: 0x%x",cifs_sb->mnt_file_mode,cifs_sb->mnt_dir_mode));
-+ tcon =
-+ find_unc(sin_server.sin_addr.s_addr, volume_info.UNC,
-+ volume_info.username);
-+ if (tcon) {
-+ cFYI(1, ("Found match on UNC path "));
-+ /* we can have only one retry value for a connection
-+ to a share so for resources mounted more than once
-+ to the same server share the last value passed in
-+ for the retry flag is used */
-+ tcon->retry = volume_info.retry;
-+ } else {
-+ tcon = tconInfoAlloc();
-+ if (tcon == NULL)
-+ rc = -ENOMEM;
-+ else {
-+ /* check for null share name ie connect to dfs root */
-+
-+ /* BB check if this works for exactly length three strings */
-+ if ((strchr(volume_info.UNC + 3, '\\') == NULL)
-+ && (strchr(volume_info.UNC + 3, '/') ==
-+ NULL)) {
-+ rc = connect_to_dfs_path(xid,
-+ pSesInfo,
-+ "",
-+ cifs_sb->
-+ local_nls);
-+ if(volume_info.UNC)
-+ kfree(volume_info.UNC);
-+ FreeXid(xid);
-+ return -ENODEV;
-+ } else {
-+ rc = CIFSTCon(xid, pSesInfo,
-+ volume_info.UNC,
-+ tcon, cifs_sb->local_nls);
-+ cFYI(1, ("CIFS Tcon rc = %d", rc));
-+ }
-+ if (!rc) {
-+ atomic_inc(&pSesInfo->inUse);
-+ tcon->retry = volume_info.retry;
-+ }
-+ }
-+ }
-+ }
-+ if(pSesInfo) {
-+ if (pSesInfo->capabilities & CAP_LARGE_FILES) {
-+ sb->s_maxbytes = (u64) 1 << 63;
-+ } else
-+ sb->s_maxbytes = (u64) 1 << 31; /* 2 GB */
-+ }
-+
-+/* on error free sesinfo and tcon struct if needed */
-+ if (rc) {
-+ /* if session setup failed, use count is zero but
-+ we still need to free cifsd thread */
-+ if(atomic_read(&srvTcp->socketUseCount) == 0) {
-+ spin_lock(&GlobalMid_Lock);
-+ srvTcp->tcpStatus = CifsExiting;
-+ spin_unlock(&GlobalMid_Lock);
-+ if(srvTcp->tsk)
-+ send_sig(SIGKILL,srvTcp->tsk,1);
-+ }
-+ /* If find_unc succeeded then rc == 0 so we can not end */
-+ if (tcon) /* up accidently freeing someone elses tcon struct */
-+ tconInfoFree(tcon);
-+ if (existingCifsSes == 0) {
-+ if (pSesInfo) {
-+ if ((pSesInfo->server) &&
-+ (pSesInfo->status == CifsGood)) {
-+ int temp_rc;
-+ temp_rc = CIFSSMBLogoff(xid, pSesInfo);
-+ /* if the socketUseCount is now zero */
-+ if((temp_rc == -ESHUTDOWN) &&
-+ (pSesInfo->server->tsk))
-+ send_sig(SIGKILL,pSesInfo->server->tsk,1);
-+ } else
-+ cFYI(1, ("No session or bad tcon"));
-+ sesInfoFree(pSesInfo);
-+ /* pSesInfo = NULL; */
-+ }
-+ }
-+ } else {
-+ atomic_inc(&tcon->useCount);
-+ cifs_sb->tcon = tcon;
-+ tcon->ses = pSesInfo;
-+
-+ /* do not care if following two calls succeed - informational only */
-+ CIFSSMBQFSDeviceInfo(xid, tcon, cifs_sb->local_nls);
-+ CIFSSMBQFSAttributeInfo(xid, tcon, cifs_sb->local_nls);
-+ if (tcon->ses->capabilities & CAP_UNIX)
-+ CIFSSMBQFSUnixInfo(xid, tcon, cifs_sb->local_nls);
-+ }
-+
-+ /* volume_info.password is freed above when existing session found
-+ (in which case it is not needed anymore) but when new sesion is created
-+ the password ptr is put in the new session structure (in which case the
-+ password will be freed at unmount time) */
-+ if(volume_info.UNC)
-+ kfree(volume_info.UNC);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+static int
-+CIFSSessSetup(unsigned int xid, struct cifsSesInfo *ses,
-+ char session_key[CIFS_SESSION_KEY_SIZE],
-+ const struct nls_table *nls_codepage)
-+{
-+ struct smb_hdr *smb_buffer;
-+ struct smb_hdr *smb_buffer_response;
-+ SESSION_SETUP_ANDX *pSMB;
-+ SESSION_SETUP_ANDX *pSMBr;
-+ char *bcc_ptr;
-+ char *user = ses->userName;
-+ char *domain = ses->domainName;
-+ int rc = 0;
-+ int remaining_words = 0;
-+ int bytes_returned = 0;
-+ int len;
-+
-+ cFYI(1, ("In sesssetup "));
-+
-+ smb_buffer = cifs_buf_get();
-+ if (smb_buffer == 0) {
-+ return -ENOMEM;
-+ }
-+ smb_buffer_response = smb_buffer;
-+ pSMBr = pSMB = (SESSION_SETUP_ANDX *) smb_buffer;
-+
-+ /* send SMBsessionSetup here */
-+ header_assemble(smb_buffer, SMB_COM_SESSION_SETUP_ANDX,
-+ NULL /* no tCon exists yet */ , 13 /* wct */ );
-+
-+ pSMB->req_no_secext.AndXCommand = 0xFF;
-+ pSMB->req_no_secext.MaxBufferSize = cpu_to_le16(ses->server->maxBuf);
-+ pSMB->req_no_secext.MaxMpxCount = cpu_to_le16(ses->server->maxReq);
-+
-+ if(ses->server->secMode & (SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED))
-+ smb_buffer->Flags2 |= SMBFLG2_SECURITY_SIGNATURE;
-+
-+ pSMB->req_no_secext.Capabilities =
-+ CAP_LARGE_FILES | CAP_NT_SMBS | CAP_LEVEL_II_OPLOCKS;
-+ if (ses->capabilities & CAP_UNICODE) {
-+ smb_buffer->Flags2 |= SMBFLG2_UNICODE;
-+ pSMB->req_no_secext.Capabilities |= CAP_UNICODE;
-+ }
-+ if (ses->capabilities & CAP_STATUS32) {
-+ smb_buffer->Flags2 |= SMBFLG2_ERR_STATUS;
-+ pSMB->req_no_secext.Capabilities |= CAP_STATUS32;
-+ }
-+ if (ses->capabilities & CAP_DFS) {
-+ smb_buffer->Flags2 |= SMBFLG2_DFS;
-+ pSMB->req_no_secext.Capabilities |= CAP_DFS;
-+ }
-+ pSMB->req_no_secext.Capabilities =
-+ cpu_to_le32(pSMB->req_no_secext.Capabilities);
-+ /* pSMB->req_no_secext.CaseInsensitivePasswordLength =
-+ CIFS_SESSION_KEY_SIZE; */
-+ pSMB->req_no_secext.CaseInsensitivePasswordLength = 0;
-+ pSMB->req_no_secext.CaseSensitivePasswordLength =
-+ cpu_to_le16(CIFS_SESSION_KEY_SIZE);
-+ bcc_ptr = pByteArea(smb_buffer);
-+ /* memcpy(bcc_ptr, (char *) lm_session_key, CIFS_SESSION_KEY_SIZE);
-+ bcc_ptr += CIFS_SESSION_KEY_SIZE; */
-+ memcpy(bcc_ptr, (char *) session_key, CIFS_SESSION_KEY_SIZE);
-+ bcc_ptr += CIFS_SESSION_KEY_SIZE;
-+
-+ if (ses->capabilities & CAP_UNICODE) {
-+ if ((long) bcc_ptr % 2) { /* must be word aligned for Unicode */
-+ *bcc_ptr = 0;
-+ bcc_ptr++;
-+ }
-+ if(user == NULL)
-+ bytes_returned = 0; /* skill null user */
-+ else
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, user, 100,
-+ nls_codepage);
-+ bcc_ptr += 2 * bytes_returned; /* convert num 16 bit words to bytes */
-+ bcc_ptr += 2; /* trailing null */
-+ if (domain == NULL)
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr,
-+ "CIFS_LINUX_DOM", 32, nls_codepage);
-+ else
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, domain, 64,
-+ nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ bcc_ptr += 2;
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, "Linux version ",
-+ 32, nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, UTS_RELEASE, 32,
-+ nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ bcc_ptr += 2;
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, CIFS_NETWORK_OPSYS,
-+ 64, nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ bcc_ptr += 2;
-+ } else {
-+ if(user != NULL) {
-+ strncpy(bcc_ptr, user, 200);
-+ bcc_ptr += strnlen(user, 200);
-+ }
-+ *bcc_ptr = 0;
-+ bcc_ptr++;
-+ if (domain == NULL) {
-+ strcpy(bcc_ptr, "CIFS_LINUX_DOM");
-+ bcc_ptr += strlen("CIFS_LINUX_DOM") + 1;
-+ } else {
-+ strncpy(bcc_ptr, domain, 64);
-+ bcc_ptr += strnlen(domain, 64);
-+ *bcc_ptr = 0;
-+ bcc_ptr++;
-+ }
-+ strcpy(bcc_ptr, "Linux version ");
-+ bcc_ptr += strlen("Linux version ");
-+ strcpy(bcc_ptr, UTS_RELEASE);
-+ bcc_ptr += strlen(UTS_RELEASE) + 1;
-+ strcpy(bcc_ptr, CIFS_NETWORK_OPSYS);
-+ bcc_ptr += strlen(CIFS_NETWORK_OPSYS) + 1;
-+ }
-+ BCC(smb_buffer) = (long) bcc_ptr - (long) pByteArea(smb_buffer);
-+ smb_buffer->smb_buf_length += BCC(smb_buffer);
-+ BCC(smb_buffer) = cpu_to_le16(BCC(smb_buffer));
-+
-+ rc = SendReceive(xid, ses, smb_buffer, smb_buffer_response,
-+ &bytes_returned, 1);
-+ if (rc) {
-+/* rc = map_smb_to_linux_error(smb_buffer_response); now done in SendReceive */
-+ } else if ((smb_buffer_response->WordCount == 3)
-+ || (smb_buffer_response->WordCount == 4)) {
-+ pSMBr->resp.Action = le16_to_cpu(pSMBr->resp.Action);
-+ if (pSMBr->resp.Action & GUEST_LOGIN)
-+ cFYI(1, (" Guest login")); /* do we want to mark SesInfo struct ? */
-+ if (ses) {
-+ ses->Suid = smb_buffer_response->Uid; /* UID left in wire format (le) */
-+ cFYI(1, ("UID = %d ", ses->Suid));
-+ /* response can have either 3 or 4 word count - Samba sends 3 */
-+ bcc_ptr = pByteArea(smb_buffer_response);
-+ if ((pSMBr->resp.hdr.WordCount == 3)
-+ || ((pSMBr->resp.hdr.WordCount == 4)
-+ && (pSMBr->resp.SecurityBlobLength <
-+ pSMBr->resp.ByteCount))) {
-+ if (pSMBr->resp.hdr.WordCount == 4)
-+ bcc_ptr +=
-+ pSMBr->resp.SecurityBlobLength;
-+
-+ if (smb_buffer->Flags2 & SMBFLG2_UNICODE) {
-+ if ((long) (bcc_ptr) % 2) {
-+ remaining_words =
-+ (BCC(smb_buffer_response)
-+ - 1) / 2;
-+ bcc_ptr++; /* Unicode strings must be word aligned */
-+ } else {
-+ remaining_words =
-+ BCC
-+ (smb_buffer_response) / 2;
-+ }
-+ len =
-+ UniStrnlen((wchar_t *) bcc_ptr,
-+ remaining_words - 1);
-+/* We look for obvious messed up bcc or strings in response so we do not go off
-+ the end since (at least) WIN2K and Windows XP have a major bug in not null
-+ terminating last Unicode string in response */
-+ ses->serverOS = cifs_kcalloc(2 * (len + 1), GFP_KERNEL);
-+ cifs_strfromUCS_le(ses->serverOS,
-+ (wchar_t *)bcc_ptr, len,nls_codepage);
-+ bcc_ptr += 2 * (len + 1);
-+ remaining_words -= len + 1;
-+ ses->serverOS[2 * len] = 0;
-+ ses->serverOS[1 + (2 * len)] = 0;
-+ if (remaining_words > 0) {
-+ len = UniStrnlen((wchar_t *)bcc_ptr,
-+ remaining_words
-+ - 1);
-+ ses->serverNOS =cifs_kcalloc(2 * (len + 1),GFP_KERNEL);
-+ cifs_strfromUCS_le(ses->serverNOS,
-+ (wchar_t *)bcc_ptr,len,nls_codepage);
-+ bcc_ptr += 2 * (len + 1);
-+ ses->serverNOS[2 * len] = 0;
-+ ses->serverNOS[1 + (2 * len)] = 0;
-+ remaining_words -= len + 1;
-+ if (remaining_words > 0) {
-+ len = UniStrnlen((wchar_t *) bcc_ptr, remaining_words);
-+ /* last string is not always null terminated (for e.g. for Windows XP & 2000) */
-+ ses->serverDomain =
-+ cifs_kcalloc(2*(len+1),GFP_KERNEL);
-+ cifs_strfromUCS_le(ses->serverDomain,
-+ (wchar_t *)bcc_ptr,len,nls_codepage);
-+ bcc_ptr += 2 * (len + 1);
-+ ses->serverDomain[2*len] = 0;
-+ ses->serverDomain[1+(2*len)] = 0;
-+ } /* else no more room so create dummy domain string */
-+ else
-+ ses->serverDomain =
-+ cifs_kcalloc(2,
-+ GFP_KERNEL);
-+ } else { /* no room so create dummy domain and NOS string */
-+ ses->serverDomain =
-+ cifs_kcalloc(2, GFP_KERNEL);
-+ ses->serverNOS =
-+ cifs_kcalloc(2, GFP_KERNEL);
-+ }
-+ } else { /* ASCII */
-+ len = strnlen(bcc_ptr, 1024);
-+ if (((long) bcc_ptr + len) - (long)
-+ pByteArea(smb_buffer_response)
-+ <= BCC(smb_buffer_response)) {
-+ ses->serverOS = cifs_kcalloc(len + 1,GFP_KERNEL);
-+ strncpy(ses->serverOS,bcc_ptr, len);
-+
-+ bcc_ptr += len;
-+ bcc_ptr[0] = 0; /* null terminate the string */
-+ bcc_ptr++;
-+
-+ len = strnlen(bcc_ptr, 1024);
-+ ses->serverNOS = cifs_kcalloc(len + 1,GFP_KERNEL);
-+ strncpy(ses->serverNOS, bcc_ptr, len);
-+ bcc_ptr += len;
-+ bcc_ptr[0] = 0;
-+ bcc_ptr++;
-+
-+ len = strnlen(bcc_ptr, 1024);
-+ ses->serverDomain = cifs_kcalloc(len + 1,GFP_KERNEL);
-+ strncpy(ses->serverDomain, bcc_ptr, len);
-+ bcc_ptr += len;
-+ bcc_ptr[0] = 0;
-+ bcc_ptr++;
-+ } else
-+ cFYI(1,
-+ ("Variable field of length %d extends beyond end of smb ",
-+ len));
-+ }
-+ } else {
-+ cERROR(1,
-+ (" Security Blob Length extends beyond end of SMB"));
-+ }
-+ } else {
-+ cERROR(1, ("No session structure passed in."));
-+ }
-+ } else {
-+ cERROR(1,
-+ (" Invalid Word count %d: ",
-+ smb_buffer_response->WordCount));
-+ rc = -EIO;
-+ }
-+
-+ if (smb_buffer)
-+ cifs_buf_release(smb_buffer);
-+
-+ return rc;
-+}
-+
-+static int
-+CIFSSpnegoSessSetup(unsigned int xid, struct cifsSesInfo *ses,
-+ char *SecurityBlob,int SecurityBlobLength,
-+ const struct nls_table *nls_codepage)
-+{
-+ struct smb_hdr *smb_buffer;
-+ struct smb_hdr *smb_buffer_response;
-+ SESSION_SETUP_ANDX *pSMB;
-+ SESSION_SETUP_ANDX *pSMBr;
-+ char *bcc_ptr;
-+ char *user = ses->userName;
-+ char *domain = ses->domainName;
-+ int rc = 0;
-+ int remaining_words = 0;
-+ int bytes_returned = 0;
-+ int len;
-+
-+ cFYI(1, ("In spnego sesssetup "));
-+
-+ smb_buffer = cifs_buf_get();
-+ if (smb_buffer == 0) {
-+ return -ENOMEM;
-+ }
-+ smb_buffer_response = smb_buffer;
-+ pSMBr = pSMB = (SESSION_SETUP_ANDX *) smb_buffer;
-+
-+ /* send SMBsessionSetup here */
-+ header_assemble(smb_buffer, SMB_COM_SESSION_SETUP_ANDX,
-+ NULL /* no tCon exists yet */ , 12 /* wct */ );
-+ pSMB->req.hdr.Flags2 |= SMBFLG2_EXT_SEC;
-+ pSMB->req.AndXCommand = 0xFF;
-+ pSMB->req.MaxBufferSize = cpu_to_le16(ses->server->maxBuf);
-+ pSMB->req.MaxMpxCount = cpu_to_le16(ses->server->maxReq);
-+
-+ if(ses->server->secMode & (SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED))
-+ smb_buffer->Flags2 |= SMBFLG2_SECURITY_SIGNATURE;
-+
-+ pSMB->req.Capabilities =
-+ CAP_LARGE_FILES | CAP_NT_SMBS | CAP_LEVEL_II_OPLOCKS |
-+ CAP_EXTENDED_SECURITY;
-+ if (ses->capabilities & CAP_UNICODE) {
-+ smb_buffer->Flags2 |= SMBFLG2_UNICODE;
-+ pSMB->req.Capabilities |= CAP_UNICODE;
-+ }
-+ if (ses->capabilities & CAP_STATUS32) {
-+ smb_buffer->Flags2 |= SMBFLG2_ERR_STATUS;
-+ pSMB->req.Capabilities |= CAP_STATUS32;
-+ }
-+ if (ses->capabilities & CAP_DFS) {
-+ smb_buffer->Flags2 |= SMBFLG2_DFS;
-+ pSMB->req.Capabilities |= CAP_DFS;
-+ }
-+ pSMB->req.Capabilities = cpu_to_le32(pSMB->req.Capabilities);
-+
-+ pSMB->req.SecurityBlobLength = cpu_to_le16(SecurityBlobLength);
-+ bcc_ptr = pByteArea(smb_buffer);
-+ memcpy(bcc_ptr, SecurityBlob, SecurityBlobLength);
-+ bcc_ptr += SecurityBlobLength;
-+
-+ if (ses->capabilities & CAP_UNICODE) {
-+ if ((long) bcc_ptr % 2) { /* must be word aligned for Unicode strings */
-+ *bcc_ptr = 0;
-+ bcc_ptr++;
-+ }
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, user, 100, nls_codepage);
-+ bcc_ptr += 2 * bytes_returned; /* convert num of 16 bit words to bytes */
-+ bcc_ptr += 2; /* trailing null */
-+ if (domain == NULL)
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr,
-+ "CIFS_LINUX_DOM", 32, nls_codepage);
-+ else
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, domain, 64,
-+ nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ bcc_ptr += 2;
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, "Linux version ",
-+ 32, nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, UTS_RELEASE, 32,
-+ nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ bcc_ptr += 2;
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, CIFS_NETWORK_OPSYS,
-+ 64, nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ bcc_ptr += 2;
-+ } else {
-+ strncpy(bcc_ptr, user, 200);
-+ bcc_ptr += strnlen(user, 200);
-+ *bcc_ptr = 0;
-+ bcc_ptr++;
-+ if (domain == NULL) {
-+ strcpy(bcc_ptr, "CIFS_LINUX_DOM");
-+ bcc_ptr += strlen("CIFS_LINUX_DOM") + 1;
-+ } else {
-+ strncpy(bcc_ptr, domain, 64);
-+ bcc_ptr += strnlen(domain, 64);
-+ *bcc_ptr = 0;
-+ bcc_ptr++;
-+ }
-+ strcpy(bcc_ptr, "Linux version ");
-+ bcc_ptr += strlen("Linux version ");
-+ strcpy(bcc_ptr, UTS_RELEASE);
-+ bcc_ptr += strlen(UTS_RELEASE) + 1;
-+ strcpy(bcc_ptr, CIFS_NETWORK_OPSYS);
-+ bcc_ptr += strlen(CIFS_NETWORK_OPSYS) + 1;
-+ }
-+ BCC(smb_buffer) = (long) bcc_ptr - (long) pByteArea(smb_buffer);
-+ smb_buffer->smb_buf_length += BCC(smb_buffer);
-+ BCC(smb_buffer) = cpu_to_le16(BCC(smb_buffer));
-+
-+ rc = SendReceive(xid, ses, smb_buffer, smb_buffer_response,
-+ &bytes_returned, 1);
-+ if (rc) {
-+/* rc = map_smb_to_linux_error(smb_buffer_response); *//* done in SendReceive now */
-+ } else if ((smb_buffer_response->WordCount == 3)
-+ || (smb_buffer_response->WordCount == 4)) {
-+ pSMBr->resp.Action = le16_to_cpu(pSMBr->resp.Action);
-+ pSMBr->resp.SecurityBlobLength =
-+ le16_to_cpu(pSMBr->resp.SecurityBlobLength);
-+ if (pSMBr->resp.Action & GUEST_LOGIN)
-+ cFYI(1, (" Guest login")); /* BB do we want to set anything in SesInfo struct ? */
-+ if (ses) {
-+ ses->Suid = smb_buffer_response->Uid; /* UID left in wire format (le) */
-+ cFYI(1, ("UID = %d ", ses->Suid));
-+ bcc_ptr = pByteArea(smb_buffer_response); /* response can have either 3 or 4 word count - Samba sends 3 */
-+
-+ /* BB Fix below to make endian neutral !! */
-+
-+ if ((pSMBr->resp.hdr.WordCount == 3)
-+ || ((pSMBr->resp.hdr.WordCount == 4)
-+ && (pSMBr->resp.SecurityBlobLength <
-+ pSMBr->resp.ByteCount))) {
-+ if (pSMBr->resp.hdr.WordCount == 4) {
-+ bcc_ptr +=
-+ pSMBr->resp.SecurityBlobLength;
-+ cFYI(1,
-+ ("Security Blob Length %d ",
-+ pSMBr->resp.SecurityBlobLength));
-+ }
-+
-+ if (smb_buffer->Flags2 & SMBFLG2_UNICODE) {
-+ if ((long) (bcc_ptr) % 2) {
-+ remaining_words =
-+ (BCC(smb_buffer_response)
-+ - 1) / 2;
-+ bcc_ptr++; /* Unicode strings must be word aligned */
-+ } else {
-+ remaining_words =
-+ BCC
-+ (smb_buffer_response) / 2;
-+ }
-+ len =
-+ UniStrnlen((wchar_t *) bcc_ptr,
-+ remaining_words - 1);
-+/* We look for obvious messed up bcc or strings in response so we do not go off
-+ the end since (at least) WIN2K and Windows XP have a major bug in not null
-+ terminating last Unicode string in response */
-+ ses->serverOS =
-+ cifs_kcalloc(2 * (len + 1), GFP_KERNEL);
-+ cifs_strfromUCS_le(ses->serverOS,
-+ (wchar_t *)
-+ bcc_ptr, len,
-+ nls_codepage);
-+ bcc_ptr += 2 * (len + 1);
-+ remaining_words -= len + 1;
-+ ses->serverOS[2 * len] = 0;
-+ ses->serverOS[1 + (2 * len)] = 0;
-+ if (remaining_words > 0) {
-+ len = UniStrnlen((wchar_t *)bcc_ptr,
-+ remaining_words
-+ - 1);
-+ ses->serverNOS =
-+ cifs_kcalloc(2 * (len + 1),
-+ GFP_KERNEL);
-+ cifs_strfromUCS_le(ses->serverNOS,
-+ (wchar_t *)bcc_ptr,
-+ len,
-+ nls_codepage);
-+ bcc_ptr += 2 * (len + 1);
-+ ses->serverNOS[2 * len] = 0;
-+ ses->serverNOS[1 + (2 * len)] = 0;
-+ remaining_words -= len + 1;
-+ if (remaining_words > 0) {
-+ len = UniStrnlen((wchar_t *) bcc_ptr, remaining_words);
-+ /* last string is not always null terminated (for e.g. for Windows XP & 2000) */
-+ ses->serverDomain = cifs_kcalloc(2*(len+1),GFP_KERNEL);
-+ cifs_strfromUCS_le(ses->serverDomain,
-+ (wchar_t *)bcc_ptr,
-+ len,
-+ nls_codepage);
-+ bcc_ptr += 2*(len+1);
-+ ses->serverDomain[2*len] = 0;
-+ ses->serverDomain[1+(2*len)] = 0;
-+ } /* else no more room so create dummy domain string */
-+ else
-+ ses->serverDomain =
-+ cifs_kcalloc(2,GFP_KERNEL);
-+ } else { /* no room so create dummy domain and NOS string */
-+ ses->serverDomain = cifs_kcalloc(2, GFP_KERNEL);
-+ ses->serverNOS = cifs_kcalloc(2, GFP_KERNEL);
-+ }
-+ } else { /* ASCII */
-+
-+ len = strnlen(bcc_ptr, 1024);
-+ if (((long) bcc_ptr + len) - (long)
-+ pByteArea(smb_buffer_response)
-+ <= BCC(smb_buffer_response)) {
-+ ses->serverOS = cifs_kcalloc(len + 1, GFP_KERNEL);
-+ strncpy(ses->serverOS, bcc_ptr, len);
-+
-+ bcc_ptr += len;
-+ bcc_ptr[0] = 0; /* null terminate the string */
-+ bcc_ptr++;
-+
-+ len = strnlen(bcc_ptr, 1024);
-+ ses->serverNOS = cifs_kcalloc(len + 1,GFP_KERNEL);
-+ strncpy(ses->serverNOS, bcc_ptr, len);
-+ bcc_ptr += len;
-+ bcc_ptr[0] = 0;
-+ bcc_ptr++;
-+
-+ len = strnlen(bcc_ptr, 1024);
-+ ses->serverDomain = cifs_kcalloc(len + 1, GFP_KERNEL);
-+ strncpy(ses->serverDomain, bcc_ptr, len);
-+ bcc_ptr += len;
-+ bcc_ptr[0] = 0;
-+ bcc_ptr++;
-+ } else
-+ cFYI(1,
-+ ("Variable field of length %d extends beyond end of smb ",
-+ len));
-+ }
-+ } else {
-+ cERROR(1,
-+ (" Security Blob Length extends beyond end of SMB"));
-+ }
-+ } else {
-+ cERROR(1, ("No session structure passed in."));
-+ }
-+ } else {
-+ cERROR(1,
-+ (" Invalid Word count %d: ",
-+ smb_buffer_response->WordCount));
-+ rc = -EIO;
-+ }
-+
-+ if (smb_buffer)
-+ cifs_buf_release(smb_buffer);
-+
-+ return rc;
-+}
-+
-+static int
-+CIFSNTLMSSPNegotiateSessSetup(unsigned int xid,
-+ struct cifsSesInfo *ses, int * pNTLMv2_flag,
-+ const struct nls_table *nls_codepage)
-+{
-+ struct smb_hdr *smb_buffer;
-+ struct smb_hdr *smb_buffer_response;
-+ SESSION_SETUP_ANDX *pSMB;
-+ SESSION_SETUP_ANDX *pSMBr;
-+ char *bcc_ptr;
-+ char *domain = ses->domainName;
-+ int rc = 0;
-+ int remaining_words = 0;
-+ int bytes_returned = 0;
-+ int len;
-+ int SecurityBlobLength = sizeof (NEGOTIATE_MESSAGE);
-+ PNEGOTIATE_MESSAGE SecurityBlob;
-+ PCHALLENGE_MESSAGE SecurityBlob2;
-+
-+ cFYI(1, ("In NTLMSSP sesssetup (negotiate) "));
-+ *pNTLMv2_flag = FALSE;
-+ smb_buffer = cifs_buf_get();
-+ if (smb_buffer == 0) {
-+ return -ENOMEM;
-+ }
-+ smb_buffer_response = smb_buffer;
-+ pSMB = (SESSION_SETUP_ANDX *) smb_buffer;
-+ pSMBr = (SESSION_SETUP_ANDX *) smb_buffer_response;
-+
-+ /* send SMBsessionSetup here */
-+ header_assemble(smb_buffer, SMB_COM_SESSION_SETUP_ANDX,
-+ NULL /* no tCon exists yet */ , 12 /* wct */ );
-+ pSMB->req.hdr.Flags2 |= SMBFLG2_EXT_SEC;
-+ pSMB->req.hdr.Flags |= (SMBFLG_CASELESS | SMBFLG_CANONICAL_PATH_FORMAT);
-+
-+ pSMB->req.AndXCommand = 0xFF;
-+ pSMB->req.MaxBufferSize = cpu_to_le16(ses->server->maxBuf);
-+ pSMB->req.MaxMpxCount = cpu_to_le16(ses->server->maxReq);
-+
-+ if(ses->server->secMode & (SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED))
-+ smb_buffer->Flags2 |= SMBFLG2_SECURITY_SIGNATURE;
-+
-+ pSMB->req.Capabilities =
-+ CAP_LARGE_FILES | CAP_NT_SMBS | CAP_LEVEL_II_OPLOCKS |
-+ CAP_EXTENDED_SECURITY;
-+ if (ses->capabilities & CAP_UNICODE) {
-+ smb_buffer->Flags2 |= SMBFLG2_UNICODE;
-+ pSMB->req.Capabilities |= CAP_UNICODE;
-+ }
-+ if (ses->capabilities & CAP_STATUS32) {
-+ smb_buffer->Flags2 |= SMBFLG2_ERR_STATUS;
-+ pSMB->req.Capabilities |= CAP_STATUS32;
-+ }
-+ if (ses->capabilities & CAP_DFS) {
-+ smb_buffer->Flags2 |= SMBFLG2_DFS;
-+ pSMB->req.Capabilities |= CAP_DFS;
-+ }
-+ pSMB->req.Capabilities = cpu_to_le32(pSMB->req.Capabilities);
-+
-+ bcc_ptr = (char *) &pSMB->req.SecurityBlob;
-+ SecurityBlob = (PNEGOTIATE_MESSAGE) bcc_ptr;
-+ strncpy(SecurityBlob->Signature, NTLMSSP_SIGNATURE, 8);
-+ SecurityBlob->MessageType = NtLmNegotiate;
-+ SecurityBlob->NegotiateFlags =
-+ NTLMSSP_NEGOTIATE_UNICODE | NTLMSSP_NEGOTIATE_OEM |
-+ NTLMSSP_REQUEST_TARGET | NTLMSSP_NEGOTIATE_NTLM | 0x80000000 |
-+ /* NTLMSSP_NEGOTIATE_ALWAYS_SIGN | */ NTLMSSP_NEGOTIATE_128;
-+ if(sign_CIFS_PDUs)
-+ SecurityBlob->NegotiateFlags |= NTLMSSP_NEGOTIATE_SIGN;
-+ if(ntlmv2_support)
-+ SecurityBlob->NegotiateFlags |= NTLMSSP_NEGOTIATE_NTLMV2;
-+ /* setup pointers to domain name and workstation name */
-+ bcc_ptr += SecurityBlobLength;
-+
-+ SecurityBlob->WorkstationName.Buffer = 0;
-+ SecurityBlob->WorkstationName.Length = 0;
-+ SecurityBlob->WorkstationName.MaximumLength = 0;
-+
-+ if (domain == NULL) {
-+ SecurityBlob->DomainName.Buffer = 0;
-+ SecurityBlob->DomainName.Length = 0;
-+ SecurityBlob->DomainName.MaximumLength = 0;
-+ } else {
-+ SecurityBlob->NegotiateFlags |=
-+ NTLMSSP_NEGOTIATE_DOMAIN_SUPPLIED;
-+ strncpy(bcc_ptr, domain, 63);
-+ SecurityBlob->DomainName.Length = strnlen(domain, 64);
-+ SecurityBlob->DomainName.MaximumLength =
-+ cpu_to_le16(SecurityBlob->DomainName.Length);
-+ SecurityBlob->DomainName.Buffer =
-+ cpu_to_le32((long) &SecurityBlob->
-+ DomainString -
-+ (long) &SecurityBlob->Signature);
-+ bcc_ptr += SecurityBlob->DomainName.Length;
-+ SecurityBlobLength += SecurityBlob->DomainName.Length;
-+ SecurityBlob->DomainName.Length =
-+ cpu_to_le16(SecurityBlob->DomainName.Length);
-+ }
-+ if (ses->capabilities & CAP_UNICODE) {
-+ if ((long) bcc_ptr % 2) {
-+ *bcc_ptr = 0;
-+ bcc_ptr++;
-+ }
-+
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, "Linux version ",
-+ 32, nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, UTS_RELEASE, 32,
-+ nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ bcc_ptr += 2; /* null terminate Linux version */
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, CIFS_NETWORK_OPSYS,
-+ 64, nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ *(bcc_ptr + 1) = 0;
-+ *(bcc_ptr + 2) = 0;
-+ bcc_ptr += 2; /* null terminate network opsys string */
-+ *(bcc_ptr + 1) = 0;
-+ *(bcc_ptr + 2) = 0;
-+ bcc_ptr += 2; /* null domain */
-+ } else { /* ASCII */
-+ strcpy(bcc_ptr, "Linux version ");
-+ bcc_ptr += strlen("Linux version ");
-+ strcpy(bcc_ptr, UTS_RELEASE);
-+ bcc_ptr += strlen(UTS_RELEASE) + 1;
-+ strcpy(bcc_ptr, CIFS_NETWORK_OPSYS);
-+ bcc_ptr += strlen(CIFS_NETWORK_OPSYS) + 1;
-+ bcc_ptr++; /* empty domain field */
-+ *bcc_ptr = 0;
-+ }
-+ SecurityBlob->NegotiateFlags =
-+ cpu_to_le32(SecurityBlob->NegotiateFlags);
-+ pSMB->req.SecurityBlobLength = cpu_to_le16(SecurityBlobLength);
-+ BCC(smb_buffer) = (long) bcc_ptr - (long) pByteArea(smb_buffer);
-+ smb_buffer->smb_buf_length += BCC(smb_buffer);
-+ BCC(smb_buffer) = cpu_to_le16(BCC(smb_buffer));
-+
-+ rc = SendReceive(xid, ses, smb_buffer, smb_buffer_response,
-+ &bytes_returned, 1);
-+
-+ if (smb_buffer_response->Status.CifsError ==
-+ (NT_STATUS_MORE_PROCESSING_REQUIRED))
-+ rc = 0;
-+
-+ if (rc) {
-+/* rc = map_smb_to_linux_error(smb_buffer_response); *//* done in SendReceive now */
-+ } else if ((smb_buffer_response->WordCount == 3)
-+ || (smb_buffer_response->WordCount == 4)) {
-+ pSMBr->resp.Action = le16_to_cpu(pSMBr->resp.Action);
-+ pSMBr->resp.SecurityBlobLength =
-+ le16_to_cpu(pSMBr->resp.SecurityBlobLength);
-+ if (pSMBr->resp.Action & GUEST_LOGIN)
-+ cFYI(1, (" Guest login"));
-+ /* Do we want to set anything in SesInfo struct when guest login? */
-+
-+ bcc_ptr = pByteArea(smb_buffer_response);
-+ /* response can have either 3 or 4 word count - Samba sends 3 */
-+
-+ SecurityBlob2 = (PCHALLENGE_MESSAGE) bcc_ptr;
-+ if (SecurityBlob2->MessageType != NtLmChallenge) {
-+ cFYI(1,
-+ ("Unexpected NTLMSSP message type received %d",
-+ SecurityBlob2->MessageType));
-+ } else if (ses) {
-+ ses->Suid = smb_buffer_response->Uid; /* UID left in le format */
-+ cFYI(1, ("UID = %d ", ses->Suid));
-+ if ((pSMBr->resp.hdr.WordCount == 3)
-+ || ((pSMBr->resp.hdr.WordCount == 4)
-+ && (pSMBr->resp.SecurityBlobLength <
-+ pSMBr->resp.ByteCount))) {
-+ if (pSMBr->resp.hdr.WordCount == 4) {
-+ bcc_ptr +=
-+ pSMBr->resp.SecurityBlobLength;
-+ cFYI(1,
-+ ("Security Blob Length %d ",
-+ pSMBr->resp.SecurityBlobLength));
-+ }
-+
-+ cFYI(1, ("NTLMSSP Challenge rcvd "));
-+
-+ memcpy(ses->server->cryptKey,
-+ SecurityBlob2->Challenge,
-+ CIFS_CRYPTO_KEY_SIZE);
-+ if(SecurityBlob2->NegotiateFlags & NTLMSSP_NEGOTIATE_NTLMV2)
-+ *pNTLMv2_flag = TRUE;
-+
-+ if((SecurityBlob2->NegotiateFlags &
-+ NTLMSSP_NEGOTIATE_ALWAYS_SIGN)
-+ || (sign_CIFS_PDUs > 1))
-+ ses->server->secMode |=
-+ SECMODE_SIGN_REQUIRED;
-+ if ((SecurityBlob2->NegotiateFlags &
-+ NTLMSSP_NEGOTIATE_SIGN) && (sign_CIFS_PDUs))
-+ ses->server->secMode |=
-+ SECMODE_SIGN_ENABLED;
-+
-+ if (smb_buffer->Flags2 & SMBFLG2_UNICODE) {
-+ if ((long) (bcc_ptr) % 2) {
-+ remaining_words =
-+ (BCC(smb_buffer_response)
-+ - 1) / 2;
-+ bcc_ptr++; /* Unicode strings must be word aligned */
-+ } else {
-+ remaining_words =
-+ BCC
-+ (smb_buffer_response) / 2;
-+ }
-+ len =
-+ UniStrnlen((wchar_t *) bcc_ptr,
-+ remaining_words - 1);
-+/* We look for obvious messed up bcc or strings in response so we do not go off
-+ the end since (at least) WIN2K and Windows XP have a major bug in not null
-+ terminating last Unicode string in response */
-+ ses->serverOS =
-+ cifs_kcalloc(2 * (len + 1), GFP_KERNEL);
-+ cifs_strfromUCS_le(ses->serverOS,
-+ (wchar_t *)
-+ bcc_ptr, len,
-+ nls_codepage);
-+ bcc_ptr += 2 * (len + 1);
-+ remaining_words -= len + 1;
-+ ses->serverOS[2 * len] = 0;
-+ ses->serverOS[1 + (2 * len)] = 0;
-+ if (remaining_words > 0) {
-+ len = UniStrnlen((wchar_t *)
-+ bcc_ptr,
-+ remaining_words
-+ - 1);
-+ ses->serverNOS =
-+ cifs_kcalloc(2 * (len + 1),
-+ GFP_KERNEL);
-+ cifs_strfromUCS_le(ses->
-+ serverNOS,
-+ (wchar_t *)
-+ bcc_ptr,
-+ len,
-+ nls_codepage);
-+ bcc_ptr += 2 * (len + 1);
-+ ses->serverNOS[2 * len] = 0;
-+ ses->serverNOS[1 +
-+ (2 * len)] = 0;
-+ remaining_words -= len + 1;
-+ if (remaining_words > 0) {
-+ len = UniStrnlen((wchar_t *) bcc_ptr, remaining_words);
-+ /* last string is not always null terminated (for e.g. for Windows XP & 2000) */
-+ ses->serverDomain =
-+ cifs_kcalloc(2 *
-+ (len +
-+ 1),
-+ GFP_KERNEL);
-+ cifs_strfromUCS_le
-+ (ses->
-+ serverDomain,
-+ (wchar_t *)
-+ bcc_ptr, len,
-+ nls_codepage);
-+ bcc_ptr +=
-+ 2 * (len + 1);
-+ ses->
-+ serverDomain[2
-+ * len]
-+ = 0;
-+ ses->
-+ serverDomain[1
-+ +
-+ (2
-+ *
-+ len)]
-+ = 0;
-+ } /* else no more room so create dummy domain string */
-+ else
-+ ses->serverDomain =
-+ cifs_kcalloc(2,
-+ GFP_KERNEL);
-+ } else { /* no room so create dummy domain and NOS string */
-+ ses->serverDomain =
-+ cifs_kcalloc(2, GFP_KERNEL);
-+ ses->serverNOS =
-+ cifs_kcalloc(2, GFP_KERNEL);
-+ }
-+ } else { /* ASCII */
-+ len = strnlen(bcc_ptr, 1024);
-+ if (((long) bcc_ptr + len) - (long)
-+ pByteArea(smb_buffer_response)
-+ <= BCC(smb_buffer_response)) {
-+ ses->serverOS =
-+ cifs_kcalloc(len + 1,
-+ GFP_KERNEL);
-+ strncpy(ses->serverOS,
-+ bcc_ptr, len);
-+
-+ bcc_ptr += len;
-+ bcc_ptr[0] = 0; /* null terminate string */
-+ bcc_ptr++;
-+
-+ len = strnlen(bcc_ptr, 1024);
-+ ses->serverNOS =
-+ cifs_kcalloc(len + 1,
-+ GFP_KERNEL);
-+ strncpy(ses->serverNOS, bcc_ptr, len);
-+ bcc_ptr += len;
-+ bcc_ptr[0] = 0;
-+ bcc_ptr++;
-+
-+ len = strnlen(bcc_ptr, 1024);
-+ ses->serverDomain =
-+ cifs_kcalloc(len + 1,
-+ GFP_KERNEL);
-+ strncpy(ses->serverDomain, bcc_ptr, len);
-+ bcc_ptr += len;
-+ bcc_ptr[0] = 0;
-+ bcc_ptr++;
-+ } else
-+ cFYI(1,
-+ ("Variable field of length %d extends beyond end of smb ",
-+ len));
-+ }
-+ } else {
-+ cERROR(1,
-+ (" Security Blob Length extends beyond end of SMB"));
-+ }
-+ } else {
-+ cERROR(1, ("No session structure passed in."));
-+ }
-+ } else {
-+ cERROR(1,
-+ (" Invalid Word count %d: ",
-+ smb_buffer_response->WordCount));
-+ rc = -EIO;
-+ }
-+
-+ if (smb_buffer)
-+ cifs_buf_release(smb_buffer);
-+
-+ return rc;
-+}
-+
-+static int
-+CIFSNTLMSSPAuthSessSetup(unsigned int xid, struct cifsSesInfo *ses,
-+ char *ntlm_session_key, int ntlmv2_flag,
-+ const struct nls_table *nls_codepage)
-+{
-+ struct smb_hdr *smb_buffer;
-+ struct smb_hdr *smb_buffer_response;
-+ SESSION_SETUP_ANDX *pSMB;
-+ SESSION_SETUP_ANDX *pSMBr;
-+ char *bcc_ptr;
-+ char *user = ses->userName;
-+ char *domain = ses->domainName;
-+ int rc = 0;
-+ int remaining_words = 0;
-+ int bytes_returned = 0;
-+ int len;
-+ int SecurityBlobLength = sizeof (AUTHENTICATE_MESSAGE);
-+ PAUTHENTICATE_MESSAGE SecurityBlob;
-+
-+ cFYI(1, ("In NTLMSSPSessSetup (Authenticate)"));
-+
-+ smb_buffer = cifs_buf_get();
-+ if (smb_buffer == 0) {
-+ return -ENOMEM;
-+ }
-+ smb_buffer_response = smb_buffer;
-+ pSMB = (SESSION_SETUP_ANDX *) smb_buffer;
-+ pSMBr = (SESSION_SETUP_ANDX *) smb_buffer_response;
-+
-+ /* send SMBsessionSetup here */
-+ header_assemble(smb_buffer, SMB_COM_SESSION_SETUP_ANDX,
-+ NULL /* no tCon exists yet */ , 12 /* wct */ );
-+ pSMB->req.hdr.Flags |= (SMBFLG_CASELESS | SMBFLG_CANONICAL_PATH_FORMAT);
-+ pSMB->req.hdr.Flags2 |= SMBFLG2_EXT_SEC;
-+ pSMB->req.AndXCommand = 0xFF;
-+ pSMB->req.MaxBufferSize = cpu_to_le16(ses->server->maxBuf);
-+ pSMB->req.MaxMpxCount = cpu_to_le16(ses->server->maxReq);
-+
-+ pSMB->req.hdr.Uid = ses->Suid;
-+
-+ if(ses->server->secMode & (SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED))
-+ smb_buffer->Flags2 |= SMBFLG2_SECURITY_SIGNATURE;
-+
-+ pSMB->req.Capabilities =
-+ CAP_LARGE_FILES | CAP_NT_SMBS | CAP_LEVEL_II_OPLOCKS |
-+ CAP_EXTENDED_SECURITY;
-+ if (ses->capabilities & CAP_UNICODE) {
-+ smb_buffer->Flags2 |= SMBFLG2_UNICODE;
-+ pSMB->req.Capabilities |= CAP_UNICODE;
-+ }
-+ if (ses->capabilities & CAP_STATUS32) {
-+ smb_buffer->Flags2 |= SMBFLG2_ERR_STATUS;
-+ pSMB->req.Capabilities |= CAP_STATUS32;
-+ }
-+ if (ses->capabilities & CAP_DFS) {
-+ smb_buffer->Flags2 |= SMBFLG2_DFS;
-+ pSMB->req.Capabilities |= CAP_DFS;
-+ }
-+ pSMB->req.Capabilities = cpu_to_le32(pSMB->req.Capabilities);
-+
-+ bcc_ptr = (char *) &pSMB->req.SecurityBlob;
-+ SecurityBlob = (PAUTHENTICATE_MESSAGE) bcc_ptr;
-+ strncpy(SecurityBlob->Signature, NTLMSSP_SIGNATURE, 8);
-+ SecurityBlob->MessageType = NtLmAuthenticate;
-+ bcc_ptr += SecurityBlobLength;
-+ SecurityBlob->NegotiateFlags =
-+ NTLMSSP_NEGOTIATE_UNICODE | NTLMSSP_REQUEST_TARGET |
-+ NTLMSSP_NEGOTIATE_NTLM | NTLMSSP_NEGOTIATE_TARGET_INFO |
-+ 0x80000000 | NTLMSSP_NEGOTIATE_128;
-+ if(sign_CIFS_PDUs)
-+ SecurityBlob->NegotiateFlags |= /* NTLMSSP_NEGOTIATE_ALWAYS_SIGN |*/ NTLMSSP_NEGOTIATE_SIGN;
-+ if(ntlmv2_flag)
-+ SecurityBlob->NegotiateFlags |= NTLMSSP_NEGOTIATE_NTLMV2;
-+
-+/* setup pointers to domain name and workstation name */
-+
-+ SecurityBlob->WorkstationName.Buffer = 0;
-+ SecurityBlob->WorkstationName.Length = 0;
-+ SecurityBlob->WorkstationName.MaximumLength = 0;
-+ SecurityBlob->SessionKey.Length = 0;
-+ SecurityBlob->SessionKey.MaximumLength = 0;
-+ SecurityBlob->SessionKey.Buffer = 0;
-+
-+ SecurityBlob->LmChallengeResponse.Length = 0;
-+ SecurityBlob->LmChallengeResponse.MaximumLength = 0;
-+ SecurityBlob->LmChallengeResponse.Buffer = 0;
-+
-+ SecurityBlob->NtChallengeResponse.Length =
-+ cpu_to_le16(CIFS_SESSION_KEY_SIZE);
-+ SecurityBlob->NtChallengeResponse.MaximumLength =
-+ cpu_to_le16(CIFS_SESSION_KEY_SIZE);
-+ memcpy(bcc_ptr, ntlm_session_key, CIFS_SESSION_KEY_SIZE);
-+ SecurityBlob->NtChallengeResponse.Buffer =
-+ cpu_to_le32(SecurityBlobLength);
-+ SecurityBlobLength += CIFS_SESSION_KEY_SIZE;
-+ bcc_ptr += CIFS_SESSION_KEY_SIZE;
-+
-+ if (ses->capabilities & CAP_UNICODE) {
-+ if (domain == NULL) {
-+ SecurityBlob->DomainName.Buffer = 0;
-+ SecurityBlob->DomainName.Length = 0;
-+ SecurityBlob->DomainName.MaximumLength = 0;
-+ } else {
-+ SecurityBlob->DomainName.Length =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, domain, 64,
-+ nls_codepage);
-+ SecurityBlob->DomainName.Length *= 2;
-+ SecurityBlob->DomainName.MaximumLength =
-+ cpu_to_le16(SecurityBlob->DomainName.Length);
-+ SecurityBlob->DomainName.Buffer =
-+ cpu_to_le32(SecurityBlobLength);
-+ bcc_ptr += SecurityBlob->DomainName.Length;
-+ SecurityBlobLength += SecurityBlob->DomainName.Length;
-+ SecurityBlob->DomainName.Length =
-+ cpu_to_le16(SecurityBlob->DomainName.Length);
-+ }
-+ if (user == NULL) {
-+ SecurityBlob->UserName.Buffer = 0;
-+ SecurityBlob->UserName.Length = 0;
-+ SecurityBlob->UserName.MaximumLength = 0;
-+ } else {
-+ SecurityBlob->UserName.Length =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, user, 64,
-+ nls_codepage);
-+ SecurityBlob->UserName.Length *= 2;
-+ SecurityBlob->UserName.MaximumLength =
-+ cpu_to_le16(SecurityBlob->UserName.Length);
-+ SecurityBlob->UserName.Buffer =
-+ cpu_to_le32(SecurityBlobLength);
-+ bcc_ptr += SecurityBlob->UserName.Length;
-+ SecurityBlobLength += SecurityBlob->UserName.Length;
-+ SecurityBlob->UserName.Length =
-+ cpu_to_le16(SecurityBlob->UserName.Length);
-+ }
-+
-+ /* SecurityBlob->WorkstationName.Length = cifs_strtoUCS((wchar_t *) bcc_ptr, "AMACHINE",64, nls_codepage);
-+ SecurityBlob->WorkstationName.Length *= 2;
-+ SecurityBlob->WorkstationName.MaximumLength = cpu_to_le16(SecurityBlob->WorkstationName.Length);
-+ SecurityBlob->WorkstationName.Buffer = cpu_to_le32(SecurityBlobLength);
-+ bcc_ptr += SecurityBlob->WorkstationName.Length;
-+ SecurityBlobLength += SecurityBlob->WorkstationName.Length;
-+ SecurityBlob->WorkstationName.Length = cpu_to_le16(SecurityBlob->WorkstationName.Length); */
-+
-+ if ((long) bcc_ptr % 2) {
-+ *bcc_ptr = 0;
-+ bcc_ptr++;
-+ }
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, "Linux version ",
-+ 32, nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, UTS_RELEASE, 32,
-+ nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ bcc_ptr += 2; /* null term version string */
-+ bytes_returned =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, CIFS_NETWORK_OPSYS,
-+ 64, nls_codepage);
-+ bcc_ptr += 2 * bytes_returned;
-+ *(bcc_ptr + 1) = 0;
-+ *(bcc_ptr + 2) = 0;
-+ bcc_ptr += 2; /* null terminate network opsys string */
-+ *(bcc_ptr + 1) = 0;
-+ *(bcc_ptr + 2) = 0;
-+ bcc_ptr += 2; /* null domain */
-+ } else { /* ASCII */
-+ if (domain == NULL) {
-+ SecurityBlob->DomainName.Buffer = 0;
-+ SecurityBlob->DomainName.Length = 0;
-+ SecurityBlob->DomainName.MaximumLength = 0;
-+ } else {
-+ SecurityBlob->NegotiateFlags |=
-+ NTLMSSP_NEGOTIATE_DOMAIN_SUPPLIED;
-+ strncpy(bcc_ptr, domain, 63);
-+ SecurityBlob->DomainName.Length = strnlen(domain, 64);
-+ SecurityBlob->DomainName.MaximumLength =
-+ cpu_to_le16(SecurityBlob->DomainName.Length);
-+ SecurityBlob->DomainName.Buffer =
-+ cpu_to_le32(SecurityBlobLength);
-+ bcc_ptr += SecurityBlob->DomainName.Length;
-+ SecurityBlobLength += SecurityBlob->DomainName.Length;
-+ SecurityBlob->DomainName.Length =
-+ cpu_to_le16(SecurityBlob->DomainName.Length);
-+ }
-+ if (user == NULL) {
-+ SecurityBlob->UserName.Buffer = 0;
-+ SecurityBlob->UserName.Length = 0;
-+ SecurityBlob->UserName.MaximumLength = 0;
-+ } else {
-+ strncpy(bcc_ptr, user, 63);
-+ SecurityBlob->UserName.Length = strnlen(user, 64);
-+ SecurityBlob->UserName.MaximumLength =
-+ cpu_to_le16(SecurityBlob->UserName.Length);
-+ SecurityBlob->UserName.Buffer =
-+ cpu_to_le32(SecurityBlobLength);
-+ bcc_ptr += SecurityBlob->UserName.Length;
-+ SecurityBlobLength += SecurityBlob->UserName.Length;
-+ SecurityBlob->UserName.Length =
-+ cpu_to_le16(SecurityBlob->UserName.Length);
-+ }
-+ /* BB fill in our workstation name if known BB */
-+
-+ strcpy(bcc_ptr, "Linux version ");
-+ bcc_ptr += strlen("Linux version ");
-+ strcpy(bcc_ptr, UTS_RELEASE);
-+ bcc_ptr += strlen(UTS_RELEASE) + 1;
-+ strcpy(bcc_ptr, CIFS_NETWORK_OPSYS);
-+ bcc_ptr += strlen(CIFS_NETWORK_OPSYS) + 1;
-+ bcc_ptr++; /* null domain */
-+ *bcc_ptr = 0;
-+ }
-+ SecurityBlob->NegotiateFlags =
-+ cpu_to_le32(SecurityBlob->NegotiateFlags);
-+ pSMB->req.SecurityBlobLength = cpu_to_le16(SecurityBlobLength);
-+ BCC(smb_buffer) = (long) bcc_ptr - (long) pByteArea(smb_buffer);
-+ smb_buffer->smb_buf_length += BCC(smb_buffer);
-+ BCC(smb_buffer) = cpu_to_le16(BCC(smb_buffer));
-+
-+ rc = SendReceive(xid, ses, smb_buffer, smb_buffer_response,
-+ &bytes_returned, 1);
-+ if (rc) {
-+/* rc = map_smb_to_linux_error(smb_buffer_response); *//* done in SendReceive now */
-+ } else if ((smb_buffer_response->WordCount == 3)
-+ || (smb_buffer_response->WordCount == 4)) {
-+ pSMBr->resp.Action = le16_to_cpu(pSMBr->resp.Action);
-+ pSMBr->resp.SecurityBlobLength =
-+ le16_to_cpu(pSMBr->resp.SecurityBlobLength);
-+ if (pSMBr->resp.Action & GUEST_LOGIN)
-+ cFYI(1, (" Guest login")); /* BB do we want to set anything in SesInfo struct ? */
-+/* if(SecurityBlob2->MessageType != NtLm??){
-+ cFYI("Unexpected message type on auth response is %d "));
-+ } */
-+ if (ses) {
-+ cFYI(1,
-+ ("Does UID on challenge %d match auth response UID %d ",
-+ ses->Suid, smb_buffer_response->Uid));
-+ ses->Suid = smb_buffer_response->Uid; /* UID left in wire format */
-+ bcc_ptr = pByteArea(smb_buffer_response);
-+ /* response can have either 3 or 4 word count - Samba sends 3 */
-+ if ((pSMBr->resp.hdr.WordCount == 3)
-+ || ((pSMBr->resp.hdr.WordCount == 4)
-+ && (pSMBr->resp.SecurityBlobLength <
-+ pSMBr->resp.ByteCount))) {
-+ if (pSMBr->resp.hdr.WordCount == 4) {
-+ bcc_ptr +=
-+ pSMBr->resp.SecurityBlobLength;
-+ cFYI(1,
-+ ("Security Blob Length %d ",
-+ pSMBr->resp.SecurityBlobLength));
-+ }
-+
-+ cFYI(1,
-+ ("NTLMSSP response to Authenticate "));
-+
-+ if (smb_buffer->Flags2 & SMBFLG2_UNICODE) {
-+ if ((long) (bcc_ptr) % 2) {
-+ remaining_words =
-+ (BCC(smb_buffer_response)
-+ - 1) / 2;
-+ bcc_ptr++; /* Unicode strings must be word aligned */
-+ } else {
-+ remaining_words = BCC(smb_buffer_response) / 2;
-+ }
-+ len =
-+ UniStrnlen((wchar_t *) bcc_ptr,remaining_words - 1);
-+/* We look for obvious messed up bcc or strings in response so we do not go off
-+ the end since (at least) WIN2K and Windows XP have a major bug in not null
-+ terminating last Unicode string in response */
-+ ses->serverOS =
-+ cifs_kcalloc(2 * (len + 1), GFP_KERNEL);
-+ cifs_strfromUCS_le(ses->serverOS,
-+ (wchar_t *)
-+ bcc_ptr, len,
-+ nls_codepage);
-+ bcc_ptr += 2 * (len + 1);
-+ remaining_words -= len + 1;
-+ ses->serverOS[2 * len] = 0;
-+ ses->serverOS[1 + (2 * len)] = 0;
-+ if (remaining_words > 0) {
-+ len = UniStrnlen((wchar_t *)
-+ bcc_ptr,
-+ remaining_words
-+ - 1);
-+ ses->serverNOS =
-+ cifs_kcalloc(2 * (len + 1),
-+ GFP_KERNEL);
-+ cifs_strfromUCS_le(ses->
-+ serverNOS,
-+ (wchar_t *)
-+ bcc_ptr,
-+ len,
-+ nls_codepage);
-+ bcc_ptr += 2 * (len + 1);
-+ ses->serverNOS[2 * len] = 0;
-+ ses->serverNOS[1+(2*len)] = 0;
-+ remaining_words -= len + 1;
-+ if (remaining_words > 0) {
-+ len = UniStrnlen((wchar_t *) bcc_ptr, remaining_words);
-+ /* last string not always null terminated (e.g. for Windows XP & 2000) */
-+ ses->serverDomain =
-+ cifs_kcalloc(2 *
-+ (len +
-+ 1),
-+ GFP_KERNEL);
-+ cifs_strfromUCS_le
-+ (ses->
-+ serverDomain,
-+ (wchar_t *)
-+ bcc_ptr, len,
-+ nls_codepage);
-+ bcc_ptr +=
-+ 2 * (len + 1);
-+ ses->
-+ serverDomain[2
-+ * len]
-+ = 0;
-+ ses->
-+ serverDomain[1
-+ +
-+ (2
-+ *
-+ len)]
-+ = 0;
-+ } /* else no more room so create dummy domain string */
-+ else
-+ ses->serverDomain = cifs_kcalloc(2,GFP_KERNEL);
-+ } else { /* no room so create dummy domain and NOS string */
-+ ses->serverDomain = cifs_kcalloc(2, GFP_KERNEL);
-+ ses->serverNOS = cifs_kcalloc(2, GFP_KERNEL);
-+ }
-+ } else { /* ASCII */
-+ len = strnlen(bcc_ptr, 1024);
-+ if (((long) bcc_ptr + len) -
-+ (long) pByteArea(smb_buffer_response)
-+ <= BCC(smb_buffer_response)) {
-+ ses->serverOS = cifs_kcalloc(len + 1,GFP_KERNEL);
-+ strncpy(ses->serverOS,bcc_ptr, len);
-+
-+ bcc_ptr += len;
-+ bcc_ptr[0] = 0; /* null terminate the string */
-+ bcc_ptr++;
-+
-+ len = strnlen(bcc_ptr, 1024);
-+ ses->serverNOS = cifs_kcalloc(len+1,GFP_KERNEL);
-+ strncpy(ses->serverNOS, bcc_ptr, len);
-+ bcc_ptr += len;
-+ bcc_ptr[0] = 0;
-+ bcc_ptr++;
-+
-+ len = strnlen(bcc_ptr, 1024);
-+ ses->serverDomain = cifs_kcalloc(len+1,GFP_KERNEL);
-+ strncpy(ses->serverDomain, bcc_ptr, len);
-+ bcc_ptr += len;
-+ bcc_ptr[0] = 0;
-+ bcc_ptr++;
-+ } else
-+ cFYI(1,
-+ ("Variable field of length %d extends beyond end of smb ",
-+ len));
-+ }
-+ } else {
-+ cERROR(1,
-+ (" Security Blob Length extends beyond end of SMB"));
-+ }
-+ } else {
-+ cERROR(1, ("No session structure passed in."));
-+ }
-+ } else {
-+ cERROR(1,
-+ (" Invalid Word count %d: ",
-+ smb_buffer_response->WordCount));
-+ rc = -EIO;
-+ }
-+
-+ if (smb_buffer)
-+ cifs_buf_release(smb_buffer);
-+
-+ return rc;
-+}
-+
-+int
-+CIFSTCon(unsigned int xid, struct cifsSesInfo *ses,
-+ const char *tree, struct cifsTconInfo *tcon,
-+ const struct nls_table *nls_codepage)
-+{
-+ struct smb_hdr *smb_buffer;
-+ struct smb_hdr *smb_buffer_response;
-+ TCONX_REQ *pSMB;
-+ TCONX_RSP *pSMBr;
-+ char *bcc_ptr;
-+ int rc = 0;
-+ int length;
-+
-+ if (ses == NULL)
-+ return -EIO;
-+
-+ smb_buffer = cifs_buf_get();
-+ if (smb_buffer == 0) {
-+ return -ENOMEM;
-+ }
-+ smb_buffer_response = smb_buffer;
-+
-+ header_assemble(smb_buffer, SMB_COM_TREE_CONNECT_ANDX,
-+ NULL /*no tid */ , 4 /*wct */ );
-+ smb_buffer->Uid = ses->Suid;
-+ pSMB = (TCONX_REQ *) smb_buffer;
-+ pSMBr = (TCONX_RSP *) smb_buffer_response;
-+
-+ pSMB->AndXCommand = 0xFF;
-+ pSMB->Flags = cpu_to_le16(TCON_EXTENDED_SECINFO);
-+ pSMB->PasswordLength = cpu_to_le16(1); /* minimum */
-+ bcc_ptr = &(pSMB->Password[0]);
-+ bcc_ptr++; /* skip password */
-+
-+ if(ses->server->secMode & (SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED))
-+ smb_buffer->Flags2 |= SMBFLG2_SECURITY_SIGNATURE;
-+
-+ if (ses->capabilities & CAP_STATUS32) {
-+ smb_buffer->Flags2 |= SMBFLG2_ERR_STATUS;
-+ }
-+ if (ses->capabilities & CAP_DFS) {
-+ smb_buffer->Flags2 |= SMBFLG2_DFS;
-+ }
-+ if (ses->capabilities & CAP_UNICODE) {
-+ smb_buffer->Flags2 |= SMBFLG2_UNICODE;
-+ length =
-+ cifs_strtoUCS((wchar_t *) bcc_ptr, tree, 100, nls_codepage);
-+ bcc_ptr += 2 * length; /* convert num of 16 bit words to bytes */
-+ bcc_ptr += 2; /* skip trailing null */
-+ } else { /* ASCII */
-+
-+ strcpy(bcc_ptr, tree);
-+ bcc_ptr += strlen(tree) + 1;
-+ }
-+ strcpy(bcc_ptr, "?????");
-+ bcc_ptr += strlen("?????");
-+ bcc_ptr += 1;
-+ BCC(smb_buffer) = (long) bcc_ptr - (long) pByteArea(smb_buffer);
-+ smb_buffer->smb_buf_length += BCC(smb_buffer);
-+ BCC(smb_buffer) = cpu_to_le16(BCC(smb_buffer));
-+
-+ rc = SendReceive(xid, ses, smb_buffer, smb_buffer_response, &length, 0);
-+
-+ /* if (rc) rc = map_smb_to_linux_error(smb_buffer_response); */
-+ /* above now done in SendReceive */
-+ if ((rc == 0) && (tcon != NULL)) {
-+ tcon->tidStatus = CifsGood;
-+ tcon->tid = smb_buffer_response->Tid;
-+ bcc_ptr = pByteArea(smb_buffer_response);
-+ length = strnlen(bcc_ptr, BCC(smb_buffer_response) - 2);
-+ /* skip service field (NB: this field is always ASCII) */
-+ bcc_ptr += length + 1;
-+ strncpy(tcon->treeName, tree, MAX_TREE_SIZE);
-+ if (smb_buffer->Flags2 & SMBFLG2_UNICODE) {
-+ length = UniStrnlen((wchar_t *) bcc_ptr, 512);
-+ if (((long) bcc_ptr + (2 * length)) -
-+ (long) pByteArea(smb_buffer_response) <=
-+ BCC(smb_buffer_response)) {
-+ if(tcon->nativeFileSystem)
-+ kfree(tcon->nativeFileSystem);
-+ tcon->nativeFileSystem =
-+ cifs_kcalloc(length + 2, GFP_KERNEL);
-+ cifs_strfromUCS_le(tcon->nativeFileSystem,
-+ (wchar_t *) bcc_ptr,
-+ length, nls_codepage);
-+ bcc_ptr += 2 * length;
-+ bcc_ptr[0] = 0; /* null terminate the string */
-+ bcc_ptr[1] = 0;
-+ bcc_ptr += 2;
-+ }
-+ /* else do not bother copying these informational fields */
-+ } else {
-+ length = strnlen(bcc_ptr, 1024);
-+ if (((long) bcc_ptr + length) -
-+ (long) pByteArea(smb_buffer_response) <=
-+ BCC(smb_buffer_response)) {
-+ if(tcon->nativeFileSystem)
-+ kfree(tcon->nativeFileSystem);
-+ tcon->nativeFileSystem =
-+ cifs_kcalloc(length + 1, GFP_KERNEL);
-+ strncpy(tcon->nativeFileSystem, bcc_ptr,
-+ length);
-+ }
-+ /* else do not bother copying these informational fields */
-+ }
-+ tcon->Flags = le16_to_cpu(pSMBr->OptionalSupport);
-+ cFYI(1, ("Tcon flags: 0x%x ", tcon->Flags));
-+ } else if ((rc == 0) && tcon == NULL) {
-+ /* all we need to save for IPC$ connection */
-+ ses->ipc_tid = smb_buffer_response->Tid;
-+ }
-+
-+ if (smb_buffer)
-+ cifs_buf_release(smb_buffer);
-+ return rc;
-+}
-+
-+int
-+cifs_umount(struct super_block *sb, struct cifs_sb_info *cifs_sb)
-+{
-+ int rc = 0;
-+ int xid;
-+ struct cifsSesInfo *ses = NULL;
-+ struct task_struct *cifsd_task;
-+
-+ xid = GetXid();
-+
-+ if (cifs_sb->tcon) {
-+ ses = cifs_sb->tcon->ses; /* save ptr to ses before delete tcon!*/
-+ rc = CIFSSMBTDis(xid, cifs_sb->tcon);
-+ if (rc == -EBUSY) {
-+ FreeXid(xid);
-+ return 0;
-+ }
-+ tconInfoFree(cifs_sb->tcon);
-+ if ((ses) && (ses->server)) {
-+ /* save off task so we do not refer to ses later */
-+ cifsd_task = ses->server->tsk;
-+ cFYI(1, ("About to do SMBLogoff "));
-+ rc = CIFSSMBLogoff(xid, ses);
-+ if (rc == -EBUSY) {
-+ FreeXid(xid);
-+ return 0;
-+ } else if (rc == -ESHUTDOWN) {
-+ cFYI(1,("Waking up socket by sending it signal"));
-+ send_sig(SIGKILL,cifsd_task,1);
-+ rc = 0;
-+ } /* else - we have an smb session
-+ left on this socket do not kill cifsd */
-+ } else
-+ cFYI(1, ("No session or bad tcon"));
-+ }
-+
-+ cifs_sb->tcon = NULL;
-+ if (ses) {
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ schedule_timeout(HZ / 2);
-+ }
-+ if (ses)
-+ sesInfoFree(ses);
-+
-+ FreeXid(xid);
-+ return rc; /* BB check if we should always return zero here */
-+}
-+
-+int cifs_setup_session(unsigned int xid, struct cifsSesInfo *pSesInfo,
-+ struct nls_table * nls_info)
-+{
-+ int rc = 0;
-+ char ntlm_session_key[CIFS_SESSION_KEY_SIZE];
-+ int ntlmv2_flag = FALSE;
-+
-+ /* what if server changes its buffer size after dropping the session? */
-+ if(pSesInfo->server->maxBuf == 0) /* no need to send on reconnect */ {
-+ rc = CIFSSMBNegotiate(xid, pSesInfo);
-+ if(rc == -EAGAIN) /* retry only once on 1st time connection */ {
-+ rc = CIFSSMBNegotiate(xid, pSesInfo);
-+ if(rc == -EAGAIN)
-+ rc = -EHOSTDOWN;
-+ }
-+ if(rc == 0) {
-+ spin_lock(&GlobalMid_Lock);
-+ if(pSesInfo->server->tcpStatus != CifsExiting)
-+ pSesInfo->server->tcpStatus = CifsGood;
-+ else
-+ rc = -EHOSTDOWN;
-+ spin_unlock(&GlobalMid_Lock);
-+
-+ }
-+ }
-+ if (!rc) {
-+ pSesInfo->capabilities = pSesInfo->server->capabilities;
-+ if(linuxExtEnabled == 0)
-+ pSesInfo->capabilities &= (~CAP_UNIX);
-+ pSesInfo->sequence_number = 0;
-+ cFYI(1,("Security Mode: 0x%x Capabilities: 0x%x Time Zone: %d",
-+ pSesInfo->server->secMode,
-+ pSesInfo->server->capabilities,
-+ pSesInfo->server->timeZone));
-+ if (extended_security
-+ && (pSesInfo->capabilities & CAP_EXTENDED_SECURITY)
-+ && (pSesInfo->server->secType == NTLMSSP)) {
-+ cFYI(1, ("New style sesssetup "));
-+ rc = CIFSSpnegoSessSetup(xid, pSesInfo,
-+ NULL /* security blob */,
-+ 0 /* blob length */,
-+ nls_info);
-+ } else if (extended_security
-+ && (pSesInfo->capabilities & CAP_EXTENDED_SECURITY)
-+ && (pSesInfo->server->secType == RawNTLMSSP)) {
-+ cFYI(1, ("NTLMSSP sesssetup "));
-+ rc = CIFSNTLMSSPNegotiateSessSetup(xid,
-+ pSesInfo,
-+ &ntlmv2_flag,
-+ nls_info);
-+ if (!rc) {
-+ if(ntlmv2_flag) {
-+ char * v2_response;
-+ cFYI(1,("Can use more secure NTLM version 2 password hash"));
-+ CalcNTLMv2_partial_mac_key(pSesInfo,
-+ nls_info);
-+ v2_response = kmalloc(16 + 64 /* blob */, GFP_KERNEL);
-+ if(v2_response) {
-+ CalcNTLMv2_response(pSesInfo,v2_response);
-+/* cifs_calculate_ntlmv2_mac_key(pSesInfo->mac_signing_key, response, ntlm_session_key, */
-+ kfree(v2_response);
-+ /* BB Put dummy sig in SessSetup PDU? */
-+ } else
-+ rc = -ENOMEM;
-+
-+ } else {
-+ SMBNTencrypt(pSesInfo->password,
-+ pSesInfo->server->cryptKey,
-+ ntlm_session_key);
-+
-+ cifs_calculate_mac_key(pSesInfo->mac_signing_key,
-+ ntlm_session_key,
-+ pSesInfo->password);
-+ }
-+ /* for better security the weaker lanman hash not sent
-+ in AuthSessSetup so we no longer calculate it */
-+
-+ rc = CIFSNTLMSSPAuthSessSetup(xid,
-+ pSesInfo,
-+ ntlm_session_key,
-+ ntlmv2_flag,
-+ nls_info);
-+ }
-+ } else { /* old style NTLM 0.12 session setup */
-+ SMBNTencrypt(pSesInfo->password,
-+ pSesInfo->server->cryptKey,
-+ ntlm_session_key);
-+
-+ cifs_calculate_mac_key(pSesInfo->mac_signing_key,
-+ ntlm_session_key, pSesInfo->password);
-+ rc = CIFSSessSetup(xid, pSesInfo,
-+ ntlm_session_key, nls_info);
-+ }
-+ if (rc) {
-+ cERROR(1,("Send error in SessSetup = %d",rc));
-+ } else {
-+ cFYI(1,("CIFS Session Established successfully"));
-+ pSesInfo->status = CifsGood;
-+ }
-+ }
-+ return rc;
-+}
-+
-diff -urN linux-2.4.29.old/fs/cifs/dir.c linux-2.4.29/fs/cifs/dir.c
---- linux-2.4.29.old/fs/cifs/dir.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/dir.c 2004-07-14 00:25:05.000000000 +0200
-@@ -0,0 +1,425 @@
-+/*
-+ * fs/cifs/dir.c
-+ *
-+ * vfs operations that deal with dentries
-+ *
-+ * Copyright (C) International Business Machines Corp., 2002,2003
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * 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.1 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 <linux/fs.h>
-+#include <linux/stat.h>
-+#include <linux/slab.h>
-+#include "cifsfs.h"
-+#include "cifspdu.h"
-+#include "cifsglob.h"
-+#include "cifsproto.h"
-+#include "cifs_debug.h"
-+#include "cifs_fs_sb.h"
-+
-+void
-+renew_parental_timestamps(struct dentry *direntry)
-+{
-+ /* BB check if there is a way to get the kernel to do this or if we really need this */
-+ do {
-+ direntry->d_time = jiffies;
-+ direntry = direntry->d_parent;
-+ } while (!IS_ROOT(direntry));
-+}
-+
-+/* Note: caller must free return buffer */
-+char *
-+build_path_from_dentry(struct dentry *direntry)
-+{
-+ struct dentry *temp;
-+ int namelen = 0;
-+ char *full_path;
-+
-+ if(direntry == NULL)
-+ return NULL; /* not much we can do if dentry is freed and
-+ we need to reopen the file after it was closed implicitly
-+ when the server crashed */
-+
-+cifs_bp_rename_retry:
-+ for (temp = direntry; !IS_ROOT(temp);) {
-+ namelen += (1 + temp->d_name.len);
-+ temp = temp->d_parent;
-+ if(temp == NULL) {
-+ cERROR(1,("corrupt dentry"));
-+ return NULL;
-+ }
-+ }
-+
-+ full_path = kmalloc(namelen+1, GFP_KERNEL);
-+ if(full_path == NULL)
-+ return full_path;
-+ full_path[namelen] = 0; /* trailing null */
-+
-+ for (temp = direntry; !IS_ROOT(temp);) {
-+ namelen -= 1 + temp->d_name.len;
-+ if (namelen < 0) {
-+ break;
-+ } else {
-+ full_path[namelen] = '\\';
-+ strncpy(full_path + namelen + 1, temp->d_name.name,
-+ temp->d_name.len);
-+ cFYI(0, (" name: %s ", full_path + namelen));
-+ }
-+ temp = temp->d_parent;
-+ if(temp == NULL) {
-+ cERROR(1,("corrupt dentry"));
-+ kfree(full_path);
-+ return NULL;
-+ }
-+ }
-+ if (namelen != 0) {
-+ cERROR(1,
-+ ("We did not end path lookup where we expected namelen is %d",
-+ namelen));
-+ /* presumably this is only possible if we were racing with a rename
-+ of one of the parent directories (we can not lock the dentries
-+ above us to prevent this, but retrying should be harmless) */
-+ kfree(full_path);
-+ namelen = 0;
-+ goto cifs_bp_rename_retry;
-+ }
-+
-+ return full_path;
-+}
-+
-+/* Note: caller must free return buffer */
-+char *
-+build_wildcard_path_from_dentry(struct dentry *direntry)
-+{
-+ struct dentry *temp;
-+ int namelen = 0;
-+ char *full_path;
-+
-+ if(direntry == NULL)
-+ return NULL; /* not much we can do if dentry is freed and
-+ we need to reopen the file after it was closed implicitly
-+ when the server crashed */
-+
-+cifs_bwp_rename_retry:
-+ for (temp = direntry; !IS_ROOT(temp);) {
-+ namelen += (1 + temp->d_name.len);
-+ temp = temp->d_parent;
-+ if(temp == NULL) {
-+ cERROR(1,("corrupt dentry"));
-+ return NULL;
-+ }
-+ }
-+
-+ full_path = kmalloc(namelen+3, GFP_KERNEL);
-+ if(full_path == NULL)
-+ return full_path;
-+
-+ full_path[namelen] = '\\';
-+ full_path[namelen+1] = '*';
-+ full_path[namelen+2] = 0; /* trailing null */
-+
-+ for (temp = direntry; !IS_ROOT(temp);) {
-+ namelen -= 1 + temp->d_name.len;
-+ if (namelen < 0) {
-+ break;
-+ } else {
-+ full_path[namelen] = '\\';
-+ strncpy(full_path + namelen + 1, temp->d_name.name,
-+ temp->d_name.len);
-+ cFYI(0, (" name: %s ", full_path + namelen));
-+ }
-+ temp = temp->d_parent;
-+ if(temp == NULL) {
-+ cERROR(1,("corrupt dentry"));
-+ kfree(full_path);
-+ return NULL;
-+ }
-+ }
-+ if (namelen != 0) {
-+ cERROR(1,
-+ ("We did not end path lookup where we expected namelen is %d",
-+ namelen));
-+ /* presumably this is only possible if we were racing with a rename
-+ of one of the parent directories (we can not lock the dentries
-+ above us to prevent this, but retrying should be harmless) */
-+ kfree(full_path);
-+ namelen = 0;
-+ goto cifs_bwp_rename_retry;
-+ }
-+
-+ return full_path;
-+}
-+
-+/* Inode operations in similar order to how they appear in the Linux file fs.h */
-+
-+int
-+cifs_create(struct inode *inode, struct dentry *direntry, int mode)
-+{
-+ int rc = -ENOENT;
-+ int xid;
-+ int oplock = 0; /* no sense requested oplock if we are just going to
-+ immediately close the file */
-+ __u16 fileHandle;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ char *full_path = NULL;
-+ FILE_ALL_INFO * buf = NULL;
-+ struct inode *newinode = NULL;
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ down(&direntry->d_sb->s_vfs_rename_sem);
-+ full_path = build_path_from_dentry(direntry);
-+ up(&direntry->d_sb->s_vfs_rename_sem);
-+ if(full_path == NULL) {
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+
-+ /* BB add processing to set equivalent of mode - e.g. via CreateX with ACLs */
-+
-+ buf = kmalloc(sizeof(FILE_ALL_INFO),GFP_KERNEL);
-+ rc = CIFSSMBOpen(xid, pTcon, full_path, FILE_OVERWRITE_IF,
-+ GENERIC_WRITE, CREATE_NOT_DIR,
-+ &fileHandle, &oplock, buf, cifs_sb->local_nls);
-+ if (rc) {
-+ cFYI(1, ("cifs_create returned 0x%x ", rc));
-+ } else {
-+ /* BB for case of overwriting existing file can we use the inode that was
-+ passed in rather than creating new one?? */
-+ if (pTcon->ses->capabilities & CAP_UNIX)
-+ rc = cifs_get_inode_info_unix(&newinode, full_path,
-+ inode->i_sb,xid);
-+ else
-+ rc = cifs_get_inode_info(&newinode, full_path,
-+ buf, inode->i_sb,xid);
-+
-+ if (rc != 0) {
-+ cFYI(1,("Create worked but get_inode_info failed with rc = %d",
-+ rc));
-+ } else {
-+ direntry->d_op = &cifs_dentry_ops;
-+ d_instantiate(direntry, newinode);
-+ }
-+ CIFSSMBClose(xid, pTcon, fileHandle);
-+
-+ if(newinode) {
-+ newinode->i_mode = mode;
-+ if (cifs_sb->tcon->ses->capabilities & CAP_UNIX)
-+ CIFSSMBUnixSetPerms(xid, pTcon, full_path, inode->i_mode,
-+ (__u64)-1,
-+ (__u64)-1,
-+ 0 /* dev */,
-+ cifs_sb->local_nls);
-+ else { /* BB implement via Windows security descriptors */
-+ /* eg CIFSSMBWinSetPerms(xid,pTcon,full_path,mode,-1,-1,local_nls);*/
-+ /* in the meantime could set r/o dos attribute when perms are eg:
-+ mode & 0222 == 0 */
-+ }
-+ }
-+ }
-+
-+ if (buf)
-+ kfree(buf);
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+
-+ return rc;
-+}
-+
-+int cifs_mknod(struct inode *inode, struct dentry *direntry, int mode, int device_number)
-+{
-+ int rc = -EPERM;
-+ int xid;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ char *full_path = NULL;
-+ struct inode * newinode = NULL;
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ down(&direntry->d_sb->s_vfs_rename_sem);
-+ full_path = build_path_from_dentry(direntry);
-+ up(&direntry->d_sb->s_vfs_rename_sem);
-+ if(full_path == NULL)
-+ rc = -ENOMEM;
-+
-+ if (full_path && (pTcon->ses->capabilities & CAP_UNIX)) {
-+ rc = CIFSSMBUnixSetPerms(xid, pTcon,
-+ full_path, mode, current->euid, current->egid,
-+ device_number, cifs_sb->local_nls);
-+ if(!rc) {
-+ rc = cifs_get_inode_info_unix(&newinode, full_path,
-+ inode->i_sb,xid);
-+ direntry->d_op = &cifs_dentry_ops;
-+ if(rc == 0)
-+ d_instantiate(direntry, newinode);
-+ }
-+ }
-+
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+
-+ return rc;
-+}
-+
-+
-+struct dentry *
-+cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry)
-+{
-+ int xid;
-+ int rc = 0; /* to get around spurious gcc warning, set to zero here */
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ struct inode *newInode = NULL;
-+ char *full_path = NULL;
-+
-+ xid = GetXid();
-+
-+ cFYI(1,
-+ (" parent inode = 0x%p name is: %s and dentry = 0x%p",
-+ parent_dir_inode, direntry->d_name.name, direntry));
-+
-+ /* BB Add check of incoming data - e.g. frame not longer than maximum SMB - let server check the namelen BB */
-+
-+ /* check whether path exists */
-+
-+ cifs_sb = CIFS_SB(parent_dir_inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ /* can not grab the rename sem here since it would
-+ deadlock in the cases (beginning of sys_rename itself)
-+ in which we already have the sb rename sem */
-+ full_path = build_path_from_dentry(direntry);
-+ if(full_path == NULL) {
-+ FreeXid(xid);
-+ return ERR_PTR(-ENOMEM);
-+ }
-+
-+ if (direntry->d_inode != NULL) {
-+ cFYI(1, (" non-NULL inode in lookup"));
-+ } else {
-+ cFYI(1, (" NULL inode in lookup"));
-+ }
-+ cFYI(1,
-+ (" Full path: %s inode = 0x%p", full_path, direntry->d_inode));
-+
-+ if (pTcon->ses->capabilities & CAP_UNIX)
-+ rc = cifs_get_inode_info_unix(&newInode, full_path,
-+ parent_dir_inode->i_sb,xid);
-+ else
-+ rc = cifs_get_inode_info(&newInode, full_path, NULL,
-+ parent_dir_inode->i_sb,xid);
-+
-+ if ((rc == 0) && (newInode != NULL)) {
-+ direntry->d_op = &cifs_dentry_ops;
-+ d_add(direntry, newInode);
-+
-+ /* since paths are not looked up by component - the parent directories are presumed to be good here */
-+ renew_parental_timestamps(direntry);
-+
-+ } else if (rc == -ENOENT) {
-+ rc = 0;
-+ d_add(direntry, NULL);
-+ } else {
-+ cERROR(1,("Error 0x%x or on cifs_get_inode_info in lookup",rc));
-+ /* BB special case check for Access Denied - watch security
-+ exposure of returning dir info implicitly via different rc
-+ if file exists or not but no access BB */
-+ }
-+
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return ERR_PTR(rc);
-+}
-+
-+int
-+cifs_dir_open(struct inode *inode, struct file *file)
-+{ /* NB: currently unused since searches are opened in readdir */
-+ int rc = 0;
-+ int xid;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ char *full_path = NULL;
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ if(file->f_dentry) {
-+ down(&file->f_dentry->d_sb->s_vfs_rename_sem);
-+ full_path = build_wildcard_path_from_dentry(file->f_dentry);
-+ up(&file->f_dentry->d_sb->s_vfs_rename_sem);
-+ } else {
-+ FreeXid(xid);
-+ return -EIO;
-+ }
-+
-+ cFYI(1, ("inode = 0x%p and full path is %s", inode, full_path));
-+
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+static int
-+cifs_d_revalidate(struct dentry *direntry, int flags)
-+{
-+ int isValid = 1;
-+
-+/* lock_kernel(); *//* surely we do not want to lock the kernel for a whole network round trip which could take seconds */
-+
-+ if (direntry->d_inode) {
-+ if (cifs_revalidate(direntry)) {
-+ /* unlock_kernel(); */
-+ return 0;
-+ }
-+ } else {
-+ cFYI(1,
-+ ("In cifs_d_revalidate with no inode but name = %s and dentry 0x%p",
-+ direntry->d_name.name, direntry));
-+ }
-+
-+/* unlock_kernel(); */
-+
-+ return isValid;
-+}
-+
-+/* static int cifs_d_delete(struct dentry *direntry)
-+{
-+ int rc = 0;
-+
-+ cFYI(1, ("In cifs d_delete, name = %s", direntry->d_name.name));
-+
-+ return rc;
-+} */
-+
-+struct dentry_operations cifs_dentry_ops = {
-+ .d_revalidate = cifs_d_revalidate,
-+/* d_delete: cifs_d_delete, *//* not needed except for debugging */
-+ /* no need for d_hash, d_compare, d_release, d_iput ... yet. BB confirm this BB */
-+};
-diff -urN linux-2.4.29.old/fs/cifs/file.c linux-2.4.29/fs/cifs/file.c
---- linux-2.4.29.old/fs/cifs/file.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/file.c 2004-07-14 00:25:05.000000000 +0200
-@@ -0,0 +1,2185 @@
-+/*
-+ * fs/cifs/file.c
-+ *
-+ * vfs operations that deal with files
-+ *
-+ * Copyright (C) International Business Machines Corp., 2002,2003
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * 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.1 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 <linux/fs.h>
-+#include <linux/stat.h>
-+#include <linux/fcntl.h>
-+#include <linux/version.h>
-+#include <linux/pagemap.h>
-+#include <linux/smp_lock.h>
-+#include <linux/list.h>
-+#include <asm/div64.h>
-+#include <linux/mm.h>
-+#include <linux/types.h>
-+#include "cifsfs.h"
-+#include "cifspdu.h"
-+#include "cifsglob.h"
-+#include "cifsproto.h"
-+#include "cifs_unicode.h"
-+#include "cifs_debug.h"
-+#include "cifs_fs_sb.h"
-+
-+int
-+cifs_open(struct inode *inode, struct file *file)
-+{
-+ int rc = -EACCES;
-+ int xid, oplock;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ struct cifsFileInfo *pCifsFile;
-+ struct cifsInodeInfo *pCifsInode;
-+ char *full_path = NULL;
-+ int desiredAccess = 0x20197;
-+ int disposition;
-+ __u16 netfid;
-+ FILE_ALL_INFO * buf = NULL;
-+ time_t temp;
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ down(&inode->i_sb->s_vfs_rename_sem);
-+ full_path = build_path_from_dentry(file->f_dentry);
-+ up(&inode->i_sb->s_vfs_rename_sem);
-+ if(full_path == NULL) {
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+
-+ cFYI(1, (" inode = 0x%p file flags are 0x%x for %s", inode, file->f_flags,full_path));
-+ if ((file->f_flags & O_ACCMODE) == O_RDONLY)
-+ desiredAccess = GENERIC_READ;
-+ else if ((file->f_flags & O_ACCMODE) == O_WRONLY)
-+ desiredAccess = GENERIC_WRITE;
-+ else if ((file->f_flags & O_ACCMODE) == O_RDWR) {
-+ /* GENERIC_ALL is too much permission to request */
-+ /* can cause unnecessary access denied on create */
-+ /* desiredAccess = GENERIC_ALL; */
-+ desiredAccess = GENERIC_READ | GENERIC_WRITE;
-+ }
-+
-+/*********************************************************************
-+ * open flag mapping table:
-+ *
-+ * POSIX Flag CIFS Disposition
-+ * ---------- ----------------
-+ * O_CREAT FILE_OPEN_IF
-+ * O_CREAT | O_EXCL FILE_CREATE
-+ * O_CREAT | O_TRUNC FILE_OVERWRITE_IF
-+ * O_TRUNC FILE_OVERWRITE
-+ * none of the above FILE_OPEN
-+ *
-+ * Note that there is not a direct match between disposition
-+ * FILE_SUPERSEDE (ie create whether or not file exists although
-+ * O_CREAT | O_TRUNC is similar but truncates the existing
-+ * file rather than creating a new file as FILE_SUPERSEDE does
-+ * (which uses the attributes / metadata passed in on open call)
-+ *?
-+ *? O_SYNC is a reasonable match to CIFS writethrough flag
-+ *? and the read write flags match reasonably. O_LARGEFILE
-+ *? is irrelevant because largefile support is always used
-+ *? by this client. Flags O_APPEND, O_DIRECT, O_DIRECTORY,
-+ * O_FASYNC, O_NOFOLLOW, O_NONBLOCK need further investigation
-+ *********************************************************************/
-+
-+ /* For 2.4 case, file was already checked for existence
-+ before create by vfs lookup and created in create
-+ entry point, we are now just opening the newly
-+ created file with the right desiredAccess flags */
-+
-+ if((file->f_flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL))
-+ disposition = FILE_OPEN_IF;
-+ else if((file->f_flags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC))
-+ disposition = FILE_OVERWRITE_IF;
-+ else if((file->f_flags & O_CREAT) == O_CREAT)
-+ disposition = FILE_OPEN_IF;
-+ else
-+ disposition = FILE_OPEN;
-+
-+ if (oplockEnabled)
-+ oplock = REQ_OPLOCK;
-+ else
-+ oplock = FALSE;
-+
-+ /* BB pass O_SYNC flag through on file attributes .. BB */
-+
-+ /* Also refresh inode by passing in file_info buf returned by SMBOpen
-+ and calling get_inode_info with returned buf (at least
-+ helps non-Unix server case */
-+
-+ /* BB we can not do this if this is the second open of a file
-+ and the first handle has writebehind data, we might be
-+ able to simply do a filemap_fdatawrite/filemap_fdatawait first */
-+ buf = kmalloc(sizeof(FILE_ALL_INFO),GFP_KERNEL);
-+ if(buf==0) {
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+ rc = CIFSSMBOpen(xid, pTcon, full_path, disposition, desiredAccess,
-+ CREATE_NOT_DIR, &netfid, &oplock, buf, cifs_sb->local_nls);
-+ if (rc) {
-+ cFYI(1, ("cifs_open returned 0x%x ", rc));
-+ cFYI(1, ("oplock: %d ", oplock));
-+ } else {
-+ file->private_data =
-+ kmalloc(sizeof (struct cifsFileInfo), GFP_KERNEL);
-+ if (file->private_data) {
-+ memset(file->private_data, 0, sizeof(struct cifsFileInfo));
-+ pCifsFile = (struct cifsFileInfo *) file->private_data;
-+ pCifsFile->netfid = netfid;
-+ pCifsFile->pid = current->pid;
-+ init_MUTEX(&pCifsFile->fh_sem);
-+ pCifsFile->pfile = file; /* needed for writepage */
-+ pCifsFile->pInode = inode;
-+ pCifsFile->invalidHandle = FALSE;
-+ pCifsFile->closePend = FALSE;
-+ write_lock(&GlobalSMBSeslock);
-+ spin_lock(&files_lock);
-+ list_add(&pCifsFile->tlist,&pTcon->openFileList);
-+ pCifsInode = CIFS_I(file->f_dentry->d_inode);
-+ if(pCifsInode) {
-+ /* want handles we can use to read with first */
-+ /* in the list so we do not have to walk the */
-+ /* list to search for one in prepare_write */
-+ if ((file->f_flags & O_ACCMODE) == O_WRONLY) {
-+ list_add_tail(&pCifsFile->flist,&pCifsInode->openFileList);
-+ } else {
-+ list_add(&pCifsFile->flist,&pCifsInode->openFileList);
-+ }
-+ spin_unlock(&files_lock);
-+ write_unlock(&GlobalSMBSeslock);
-+ if(pCifsInode->clientCanCacheRead) {
-+ /* we have the inode open somewhere else
-+ no need to discard cache data */
-+ } else {
-+ if(buf) {
-+ /* BB need same check in cifs_create too? */
-+
-+ /* if not oplocked, invalidate inode pages if mtime
-+ or file size changed */
-+ temp = cifs_NTtimeToUnix(le64_to_cpu(buf->LastWriteTime));
-+ if((file->f_dentry->d_inode->i_mtime == temp) &&
-+ (file->f_dentry->d_inode->i_size == (loff_t)le64_to_cpu(buf->EndOfFile))) {
-+ cFYI(1,("inode unchanged on server"));
-+ } else {
-+ if(file->f_dentry->d_inode->i_mapping) {
-+ /* BB no need to lock inode until after invalidate*/
-+ /* since namei code should already have it locked?*/
-+ filemap_fdatasync(file->f_dentry->d_inode->i_mapping);
-+ }
-+ cFYI(1,("invalidating remote inode since open detected it changed"));
-+ invalidate_inode_pages(file->f_dentry->d_inode);
-+ }
-+ }
-+ }
-+ if (pTcon->ses->capabilities & CAP_UNIX)
-+ rc = cifs_get_inode_info_unix(&file->f_dentry->d_inode,
-+ full_path, inode->i_sb,xid);
-+ else
-+ rc = cifs_get_inode_info(&file->f_dentry->d_inode,
-+ full_path, buf, inode->i_sb,xid);
-+
-+ if((oplock & 0xF) == OPLOCK_EXCLUSIVE) {
-+ pCifsInode->clientCanCacheAll = TRUE;
-+ pCifsInode->clientCanCacheRead = TRUE;
-+ cFYI(1,("Exclusive Oplock granted on inode %p",file->f_dentry->d_inode));
-+ } else if((oplock & 0xF) == OPLOCK_READ)
-+ pCifsInode->clientCanCacheRead = TRUE;
-+ } else {
-+ spin_unlock(&files_lock);
-+ write_unlock(&GlobalSMBSeslock);
-+ }
-+ if(oplock & CIFS_CREATE_ACTION) {
-+ /* time to set mode which we can not set earlier due
-+ to problems creating new read-only files */
-+ if (cifs_sb->tcon->ses->capabilities & CAP_UNIX)
-+ CIFSSMBUnixSetPerms(xid, pTcon, full_path, inode->i_mode,
-+ (__u64)-1,
-+ (__u64)-1,
-+ 0 /* dev */,
-+ cifs_sb->local_nls);
-+ else {/* BB implement via Windows security descriptors */
-+ /* eg CIFSSMBWinSetPerms(xid,pTcon,full_path,mode,-1,-1,local_nls);*/
-+ /* in the meantime could set r/o dos attribute when perms are eg:
-+ mode & 0222 == 0 */
-+ }
-+ }
-+ }
-+ }
-+
-+ if (buf)
-+ kfree(buf);
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+/* Try to reaquire byte range locks that were released when session */
-+/* to server was lost */
-+static int cifs_relock_file(struct cifsFileInfo * cifsFile)
-+{
-+ int rc = 0;
-+
-+/* BB list all locks open on this file and relock */
-+
-+ return rc;
-+}
-+
-+static int cifs_reopen_file(struct inode *inode, struct file *file, int can_flush)
-+{
-+ int rc = -EACCES;
-+ int xid, oplock;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ struct cifsFileInfo *pCifsFile;
-+ struct cifsInodeInfo *pCifsInode;
-+ char *full_path = NULL;
-+ int desiredAccess = 0x20197;
-+ int disposition = FILE_OPEN;
-+ __u16 netfid;
-+
-+ if(inode == NULL)
-+ return -EBADF;
-+ if (file->private_data) {
-+ pCifsFile = (struct cifsFileInfo *) file->private_data;
-+ } else
-+ return -EBADF;
-+
-+ xid = GetXid();
-+ down(&pCifsFile->fh_sem);
-+ if(pCifsFile->invalidHandle == FALSE) {
-+ up(&pCifsFile->fh_sem);
-+ FreeXid(xid);
-+ return 0;
-+ }
-+
-+ if(file->f_dentry == NULL) {
-+ up(&pCifsFile->fh_sem);
-+ cFYI(1,("failed file reopen, no valid name if dentry freed"));
-+ FreeXid(xid);
-+ return -EBADF;
-+ }
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+/* can not grab rename sem here because various ops, including
-+those that already have the rename sem can end up causing writepage
-+to get called and if the server was down that means we end up here,
-+and we can never tell if the caller already has the rename_sem */
-+ full_path = build_path_from_dentry(file->f_dentry);
-+ if(full_path == NULL) {
-+ up(&pCifsFile->fh_sem);
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+
-+ cFYI(1, (" inode = 0x%p file flags are 0x%x for %s", inode, file->f_flags,full_path));
-+ if ((file->f_flags & O_ACCMODE) == O_RDONLY)
-+ desiredAccess = GENERIC_READ;
-+ else if ((file->f_flags & O_ACCMODE) == O_WRONLY)
-+ desiredAccess = GENERIC_WRITE;
-+ else if ((file->f_flags & O_ACCMODE) == O_RDWR) {
-+ /* GENERIC_ALL is too much permission to request */
-+ /* can cause unnecessary access denied on create */
-+ /* desiredAccess = GENERIC_ALL; */
-+ desiredAccess = GENERIC_READ | GENERIC_WRITE;
-+ }
-+
-+ if (oplockEnabled)
-+ oplock = REQ_OPLOCK;
-+ else
-+ oplock = FALSE;
-+
-+
-+ /* Can not refresh inode by passing in file_info buf to be returned
-+ by SMBOpen and then calling get_inode_info with returned buf
-+ since file might have write behind data that needs to be flushed
-+ and server version of file size can be stale. If we
-+ knew for sure that inode was not dirty locally we could do this */
-+
-+/* buf = kmalloc(sizeof(FILE_ALL_INFO),GFP_KERNEL);
-+ if(buf==0) {
-+ up(&pCifsFile->fh_sem);
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }*/
-+ rc = CIFSSMBOpen(xid, pTcon, full_path, disposition, desiredAccess,
-+ CREATE_NOT_DIR, &netfid, &oplock, NULL, cifs_sb->local_nls);
-+ if (rc) {
-+ up(&pCifsFile->fh_sem);
-+ cFYI(1, ("cifs_open returned 0x%x ", rc));
-+ cFYI(1, ("oplock: %d ", oplock));
-+ } else {
-+ pCifsFile->netfid = netfid;
-+ pCifsFile->invalidHandle = FALSE;
-+ up(&pCifsFile->fh_sem);
-+ pCifsInode = CIFS_I(inode);
-+ if(pCifsInode) {
-+ if(can_flush) {
-+ filemap_fdatasync(inode->i_mapping);
-+ filemap_fdatawait(inode->i_mapping);
-+ /* temporarily disable caching while we
-+ go to server to get inode info */
-+ pCifsInode->clientCanCacheAll = FALSE;
-+ pCifsInode->clientCanCacheRead = FALSE;
-+ if (pTcon->ses->capabilities & CAP_UNIX)
-+ rc = cifs_get_inode_info_unix(&inode,
-+ full_path, inode->i_sb,xid);
-+ else
-+ rc = cifs_get_inode_info(&inode,
-+ full_path, NULL, inode->i_sb,xid);
-+ } /* else we are writing out data to server already
-+ and could deadlock if we tried to flush data, and
-+ since we do not know if we have data that would
-+ invalidate the current end of file on the server
-+ we can not go to the server to get the new
-+ inod info */
-+ if((oplock & 0xF) == OPLOCK_EXCLUSIVE) {
-+ pCifsInode->clientCanCacheAll = TRUE;
-+ pCifsInode->clientCanCacheRead = TRUE;
-+ cFYI(1,("Exclusive Oplock granted on inode %p",file->f_dentry->d_inode));
-+ } else if((oplock & 0xF) == OPLOCK_READ) {
-+ pCifsInode->clientCanCacheRead = TRUE;
-+ pCifsInode->clientCanCacheAll = FALSE;
-+ } else {
-+ pCifsInode->clientCanCacheRead = FALSE;
-+ pCifsInode->clientCanCacheAll = FALSE;
-+ }
-+ cifs_relock_file(pCifsFile);
-+ }
-+ }
-+
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int
-+cifs_close(struct inode *inode, struct file *file)
-+{
-+ int rc = 0;
-+ int xid;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ struct cifsFileInfo *pSMBFile =
-+ (struct cifsFileInfo *) file->private_data;
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+ if (pSMBFile) {
-+ pSMBFile->closePend = TRUE;
-+ spin_lock(&files_lock);
-+ if(pTcon) {
-+ /* no sense reconnecting to close a file that is
-+ already closed */
-+ if (pTcon->tidStatus != CifsNeedReconnect) {
-+ spin_unlock(&files_lock);
-+ rc = CIFSSMBClose(xid,pTcon,pSMBFile->netfid);
-+ spin_lock(&files_lock);
-+ }
-+ }
-+ list_del(&pSMBFile->flist);
-+ list_del(&pSMBFile->tlist);
-+ spin_unlock(&files_lock);
-+ if(pSMBFile->search_resume_name)
-+ kfree(pSMBFile->search_resume_name);
-+ kfree(file->private_data);
-+ file->private_data = NULL;
-+ } else
-+ rc = -EBADF;
-+
-+ if(list_empty(&(CIFS_I(inode)->openFileList))) {
-+ cFYI(1,("closing last open instance for inode %p",inode));
-+ /* if the file is not open we do not know if we can cache
-+ info on this inode, much less write behind and read ahead */
-+ CIFS_I(inode)->clientCanCacheRead = FALSE;
-+ CIFS_I(inode)->clientCanCacheAll = FALSE;
-+ }
-+ if((rc ==0) && CIFS_I(inode)->write_behind_rc)
-+ rc = CIFS_I(inode)->write_behind_rc;
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int
-+cifs_closedir(struct inode *inode, struct file *file)
-+{
-+ int rc = 0;
-+ int xid;
-+ struct cifsFileInfo *pSMBFileStruct =
-+ (struct cifsFileInfo *) file->private_data;
-+
-+ cFYI(1, ("Closedir inode = 0x%p with ", inode));
-+
-+ xid = GetXid();
-+
-+ if (pSMBFileStruct) {
-+ cFYI(1, ("Freeing private data in close dir"));
-+ kfree(file->private_data);
-+ file->private_data = NULL;
-+ }
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int
-+cifs_lock(struct file *file, int cmd, struct file_lock *pfLock)
-+{
-+ int rc, xid;
-+ __u32 lockType = LOCKING_ANDX_LARGE_FILES;
-+ __u32 numLock = 0;
-+ __u32 numUnlock = 0;
-+ __u64 length;
-+ int wait_flag = FALSE;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ length = 1 + pfLock->fl_end - pfLock->fl_start;
-+
-+ rc = -EACCES;
-+
-+ xid = GetXid();
-+
-+ cFYI(1,
-+ ("Lock parm: 0x%x flockflags: 0x%x flocktype: 0x%x start: %lld end: %lld",
-+ cmd, pfLock->fl_flags, pfLock->fl_type, pfLock->fl_start,
-+ pfLock->fl_end));
-+
-+ if (pfLock->fl_flags & FL_POSIX)
-+ cFYI(1, ("Posix "));
-+ if (pfLock->fl_flags & FL_FLOCK)
-+ cFYI(1, ("Flock "));
-+/* if (pfLock->fl_flags & FL_SLEEP) {
-+ cFYI(1, ("Blocking lock "));
-+ wait_flag = TRUE;
-+ } */
-+ if (pfLock->fl_flags & FL_ACCESS)
-+ cFYI(1, ("Process suspended by mandatory locking - not implemented yet "));
-+ if (pfLock->fl_flags & FL_LEASE)
-+ cFYI(1, ("Lease on file - not implemented yet"));
-+ if (pfLock->fl_flags & (~(FL_POSIX | FL_FLOCK | FL_ACCESS | FL_LEASE)))
-+ cFYI(1, ("Unknown lock flags 0x%x",pfLock->fl_flags));
-+
-+ if (pfLock->fl_type == F_WRLCK) {
-+ cFYI(1, ("F_WRLCK "));
-+ numLock = 1;
-+ } else if (pfLock->fl_type == F_UNLCK) {
-+ cFYI(1, ("F_UNLCK "));
-+ numUnlock = 1;
-+ } else if (pfLock->fl_type == F_RDLCK) {
-+ cFYI(1, ("F_RDLCK "));
-+ lockType |= LOCKING_ANDX_SHARED_LOCK;
-+ numLock = 1;
-+ } else if (pfLock->fl_type == F_EXLCK) {
-+ cFYI(1, ("F_EXLCK "));
-+ numLock = 1;
-+ } else if (pfLock->fl_type == F_SHLCK) {
-+ cFYI(1, ("F_SHLCK "));
-+ lockType |= LOCKING_ANDX_SHARED_LOCK;
-+ numLock = 1;
-+ } else
-+ cFYI(1, ("Unknown type of lock "));
-+
-+ cifs_sb = CIFS_SB(file->f_dentry->d_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ if (file->private_data == NULL) {
-+ FreeXid(xid);
-+ return -EBADF;
-+ }
-+
-+ if (IS_GETLK(cmd)) {
-+ rc = CIFSSMBLock(xid, pTcon,
-+ ((struct cifsFileInfo *) file->
-+ private_data)->netfid,
-+ length,
-+ pfLock->fl_start, 0, 1, lockType,
-+ 0 /* wait flag */ );
-+ if (rc == 0) {
-+ rc = CIFSSMBLock(xid, pTcon,
-+ ((struct cifsFileInfo *) file->
-+ private_data)->netfid,
-+ length,
-+ pfLock->fl_start, 1 /* numUnlock */ ,
-+ 0 /* numLock */ , lockType,
-+ 0 /* wait flag */ );
-+ pfLock->fl_type = F_UNLCK;
-+ if (rc != 0)
-+ cERROR(1,
-+ ("Error unlocking previously locked range %d during test of lock ",
-+ rc));
-+ rc = 0;
-+
-+ } else {
-+ /* if rc == ERR_SHARING_VIOLATION ? */
-+ rc = 0; /* do not change lock type to unlock since range in use */
-+ }
-+
-+ FreeXid(xid);
-+ return rc;
-+ }
-+
-+ rc = CIFSSMBLock(xid, pTcon,
-+ ((struct cifsFileInfo *) file->private_data)->
-+ netfid, length,
-+ pfLock->fl_start, numUnlock, numLock, lockType,
-+ wait_flag);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+ssize_t
-+cifs_write(struct file * file, const char *write_data,
-+ size_t write_size, loff_t * poffset)
-+{
-+ int rc = 0;
-+ unsigned int bytes_written = 0;
-+ unsigned int total_written;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ int xid, long_op;
-+ struct cifsFileInfo * open_file;
-+
-+ if(file->f_dentry == NULL)
-+ return -EBADF;
-+
-+ cifs_sb = CIFS_SB(file->f_dentry->d_sb);
-+ if(cifs_sb == NULL) {
-+ return -EBADF;
-+ }
-+ pTcon = cifs_sb->tcon;
-+
-+ /*cFYI(1,
-+ (" write %d bytes to offset %lld of %s", write_size,
-+ *poffset, file->f_dentry->d_name.name)); */
-+
-+ if (file->private_data == NULL) {
-+ return -EBADF;
-+ } else {
-+ open_file = (struct cifsFileInfo *) file->private_data;
-+ }
-+
-+ xid = GetXid();
-+ if(file->f_dentry->d_inode == NULL) {
-+ FreeXid(xid);
-+ return -EBADF;
-+ }
-+
-+ if (*poffset > file->f_dentry->d_inode->i_size)
-+ long_op = 2; /* writes past end of file can take a long time */
-+ else
-+ long_op = 1;
-+
-+ for (total_written = 0; write_size > total_written;
-+ total_written += bytes_written) {
-+ rc = -EAGAIN;
-+ while(rc == -EAGAIN) {
-+ if(file->private_data == NULL) {
-+ /* file has been closed on us */
-+ FreeXid(xid);
-+ /* if we have gotten here we have written some data
-+ and blocked, and the file has been freed on us
-+ while we blocked so return what we managed to write */
-+ return total_written;
-+ }
-+ if(open_file->closePend) {
-+ FreeXid(xid);
-+ if(total_written)
-+ return total_written;
-+ else
-+ return -EBADF;
-+ }
-+ if (open_file->invalidHandle) {
-+ if((file->f_dentry == NULL) ||
-+ (file->f_dentry->d_inode == NULL)) {
-+ FreeXid(xid);
-+ return total_written;
-+ }
-+ /* we could deadlock if we called
-+ filemap_fdatawait from here so tell
-+ reopen_file not to flush data to server now */
-+ rc = cifs_reopen_file(file->f_dentry->d_inode,
-+ file,FALSE);
-+ if(rc != 0)
-+ break;
-+ }
-+
-+ rc = CIFSSMBWrite(xid, pTcon,
-+ open_file->netfid,
-+ write_size - total_written, *poffset,
-+ &bytes_written,
-+ write_data + total_written, long_op);
-+ }
-+ if (rc || (bytes_written == 0)) {
-+ if (total_written)
-+ break;
-+ else {
-+ FreeXid(xid);
-+ return rc;
-+ }
-+ } else
-+ *poffset += bytes_written;
-+ long_op = FALSE; /* subsequent writes fast - 15 seconds is plenty */
-+ }
-+
-+#ifdef CONFIG_CIFS_STATS
-+ if(total_written > 0) {
-+ atomic_inc(&pTcon->num_writes);
-+ spin_lock(&pTcon->stat_lock);
-+ pTcon->bytes_written += total_written;
-+ spin_unlock(&pTcon->stat_lock);
-+ }
-+#endif
-+
-+ /* since the write may have blocked check these pointers again */
-+ if(file->f_dentry) {
-+ if(file->f_dentry->d_inode) {
-+ file->f_dentry->d_inode->i_ctime = file->f_dentry->d_inode->i_mtime =
-+ CURRENT_TIME;
-+ if (total_written > 0) {
-+ if (*poffset > file->f_dentry->d_inode->i_size)
-+ file->f_dentry->d_inode->i_size = *poffset;
-+ }
-+ mark_inode_dirty_sync(file->f_dentry->d_inode);
-+ }
-+ }
-+ FreeXid(xid);
-+ return total_written;
-+}
-+
-+static int
-+cifs_partialpagewrite(struct page *page,unsigned from, unsigned to)
-+{
-+ struct address_space *mapping = page->mapping;
-+ loff_t offset = (loff_t)page->index << PAGE_CACHE_SHIFT;
-+ char * write_data;
-+ int rc = -EFAULT;
-+ int bytes_written = 0;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ struct inode *inode;
-+ struct cifsInodeInfo *cifsInode;
-+ struct cifsFileInfo *open_file = NULL;
-+ struct list_head *tmp;
-+ struct list_head *tmp1;
-+
-+ if (!mapping) {
-+ return -EFAULT;
-+ } else if(!mapping->host) {
-+ return -EFAULT;
-+ }
-+
-+ inode = page->mapping->host;
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ offset += (loff_t)from;
-+ write_data = kmap(page);
-+ write_data += from;
-+
-+ if((to > PAGE_CACHE_SIZE) || (from > to)) {
-+ kunmap(page);
-+ return -EIO;
-+ }
-+
-+ /* racing with truncate? */
-+ if(offset > mapping->host->i_size) {
-+ kunmap(page);
-+ return 0; /* don't care */
-+ }
-+
-+ /* check to make sure that we are not extending the file */
-+ if(mapping->host->i_size - offset < (loff_t)to)
-+ to = (unsigned)(mapping->host->i_size - offset);
-+
-+
-+ cifsInode = CIFS_I(mapping->host);
-+ read_lock(&GlobalSMBSeslock);
-+ /* BB we should start at the end */
-+ list_for_each_safe(tmp, tmp1, &cifsInode->openFileList) {
-+ open_file = list_entry(tmp,struct cifsFileInfo, flist);
-+ if(open_file->closePend)
-+ continue;
-+ /* We check if file is open for writing first */
-+ if((open_file->pfile) &&
-+ ((open_file->pfile->f_flags & O_RDWR) ||
-+ (open_file->pfile->f_flags & O_WRONLY))) {
-+ read_unlock(&GlobalSMBSeslock);
-+ bytes_written = cifs_write(open_file->pfile, write_data,
-+ to-from, &offset);
-+ read_lock(&GlobalSMBSeslock);
-+ /* Does mm or vfs already set times? */
-+ inode->i_atime = inode->i_mtime = CURRENT_TIME;
-+ if ((bytes_written > 0) && (offset)) {
-+ rc = 0;
-+ } else if(bytes_written < 0) {
-+ if(rc == -EBADF) {
-+ /* have seen a case in which
-+ kernel seemed to have closed/freed a file
-+ even with writes active so we might as well
-+ see if there are other file structs to try
-+ for the same inode before giving up */
-+ continue;
-+ } else
-+ rc = bytes_written;
-+ }
-+ break; /* now that we found a valid file handle
-+ and tried to write to it we are done, no
-+ sense continuing to loop looking for another */
-+ }
-+ if(tmp->next == NULL) {
-+ cFYI(1,("File instance %p removed",tmp));
-+ break;
-+ }
-+ }
-+ read_unlock(&GlobalSMBSeslock);
-+ if(open_file == NULL) {
-+ cFYI(1,("No writeable filehandles for inode"));
-+ rc = -EIO;
-+ }
-+
-+ kunmap(page);
-+ return rc;
-+}
-+
-+#if 0
-+static int
-+cifs_writepages(struct address_space *mapping, struct writeback_control *wbc)
-+{
-+ int rc = -EFAULT;
-+ int xid;
-+
-+ xid = GetXid();
-+/* call 16K write then Setpageuptodate */
-+ FreeXid(xid);
-+ return rc;
-+}
-+#endif
-+
-+static int
-+cifs_writepage(struct page* page)
-+{
-+ int rc = -EFAULT;
-+ int xid;
-+
-+ xid = GetXid();
-+/* BB add check for wbc flags */
-+ page_cache_get(page);
-+ if (!Page_Uptodate(page)) {
-+ cFYI(1,("ppw - page not up to date"));
-+ }
-+
-+ rc = cifs_partialpagewrite(page,0,PAGE_CACHE_SIZE);
-+ SetPageUptodate(page); /* BB add check for error and Clearuptodate? */
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,20))
-+ unlock_page(page);
-+#else
-+ UnlockPage(page);
-+#endif
-+ page_cache_release(page);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+static int
-+cifs_commit_write(struct file *file, struct page *page, unsigned offset,
-+ unsigned to)
-+{
-+ int xid;
-+ int rc = 0;
-+ struct inode *inode = page->mapping->host;
-+ loff_t position = ((loff_t)page->index << PAGE_CACHE_SHIFT) + to;
-+ char * page_data;
-+
-+ xid = GetXid();
-+ cFYI(1,("commit write for page %p up to position %lld for %d",page,position,to));
-+ if (position > inode->i_size){
-+ inode->i_size = position;
-+ /*if (file->private_data == NULL) {
-+ rc = -EBADF;
-+ } else {
-+ open_file = (struct cifsFileInfo *)file->private_data;
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ rc = -EAGAIN;
-+ while(rc == -EAGAIN) {
-+ if((open_file->invalidHandle) &&
-+ (!open_file->closePend)) {
-+ rc = cifs_reopen_file(file->f_dentry->d_inode,file);
-+ if(rc != 0)
-+ break;
-+ }
-+ if(!open_file->closePend) {
-+ rc = CIFSSMBSetFileSize(xid, cifs_sb->tcon,
-+ position, open_file->netfid,
-+ open_file->pid,FALSE);
-+ } else {
-+ rc = -EBADF;
-+ break;
-+ }
-+ }
-+ cFYI(1,(" SetEOF (commit write) rc = %d",rc));
-+ }*/
-+ }
-+ if (!Page_Uptodate(page)) {
-+ position = ((loff_t)page->index << PAGE_CACHE_SHIFT) + offset;
-+ /* can not rely on (or let) writepage write this data */
-+ if(to < offset) {
-+ cFYI(1,("Illegal offsets, can not copy from %d to %d",
-+ offset,to));
-+ FreeXid(xid);
-+ return rc;
-+ }
-+ /* this is probably better than directly calling
-+ partialpage_write since in this function
-+ the file handle is known which we might as well
-+ leverage */
-+ /* BB check if anything else missing out of ppw */
-+ /* such as updating last write time */
-+ page_data = kmap(page);
-+ rc = cifs_write(file, page_data+offset,to-offset,
-+ &position);
-+ if(rc > 0)
-+ rc = 0;
-+ /* else if rc < 0 should we set writebehind rc? */
-+ kunmap(page);
-+ } else {
-+ set_page_dirty(page);
-+ }
-+
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int
-+cifs_fsync(struct file *file, struct dentry *dentry, int datasync)
-+{
-+ int xid;
-+ int rc = 0;
-+ struct inode * inode = file->f_dentry->d_inode;
-+
-+ xid = GetXid();
-+
-+ cFYI(1, ("Sync file - name: %s datasync: 0x%x ",
-+ dentry->d_name.name, datasync));
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,17))
-+ rc = filemap_fdatasync(inode->i_mapping);
-+#else
-+ filemap_fdatasync(inode->i_mapping);
-+#endif
-+ if(rc == 0)
-+ CIFS_I(inode)->write_behind_rc = 0;
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+static int
-+cifs_sync_page(struct page *page)
-+{
-+ struct address_space *mapping;
-+ struct inode *inode;
-+ unsigned long index = page->index;
-+ unsigned int rpages = 0;
-+ int rc = 0;
-+
-+ cFYI(1,("sync page %p",page));
-+ mapping = page->mapping;
-+ if (!mapping)
-+ return 0;
-+ inode = mapping->host;
-+ if (!inode)
-+ return 0;
-+
-+/* fill in rpages then
-+ result = cifs_pagein_inode(inode, index, rpages); *//* BB finish */
-+
-+ cFYI(1, ("rpages is %d for sync page of Index %ld ", rpages, index));
-+
-+ if (rc < 0)
-+ return rc;
-+ return 0;
-+}
-+
-+/*
-+ * As file closes, flush all cached write data for this inode checking
-+ * for write behind errors.
-+ *
-+ */
-+int cifs_flush(struct file *file)
-+{
-+ struct inode * inode = file->f_dentry->d_inode;
-+ int rc = 0;
-+
-+ /* Rather than do the steps manually: */
-+ /* lock the inode for writing */
-+ /* loop through pages looking for write behind data (dirty pages) */
-+ /* coalesce into contiguous 16K (or smaller) chunks to write to server */
-+ /* send to server (prefer in parallel) */
-+ /* deal with writebehind errors */
-+ /* unlock inode for writing */
-+ /* filemapfdatawrite appears easier for the time being */
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,17))
-+ rc = filemap_fdatasync(inode->i_mapping);
-+#else
-+ filemap_fdatasync(inode->i_mapping);
-+#endif
-+ if(rc == 0) /* reset wb rc if we were able to write out dirty pages */
-+ CIFS_I(inode)->write_behind_rc = 0;
-+
-+ cFYI(1,("Flush inode %p file %p rc %d",inode,file,rc));
-+
-+ return rc;
-+}
-+
-+
-+ssize_t
-+cifs_read(struct file * file, char *read_data, size_t read_size,
-+ loff_t * poffset)
-+{
-+ int rc = -EACCES;
-+ unsigned int bytes_read = 0;
-+ unsigned int total_read;
-+ unsigned int current_read_size;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ int xid;
-+ char * current_offset;
-+ struct cifsFileInfo * open_file;
-+
-+ xid = GetXid();
-+ cifs_sb = CIFS_SB(file->f_dentry->d_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ if (file->private_data == NULL) {
-+ FreeXid(xid);
-+ return -EBADF;
-+ }
-+ open_file = (struct cifsFileInfo *)file->private_data;
-+
-+ if((file->f_flags & O_ACCMODE) == O_WRONLY) {
-+ cFYI(1,("attempting read on write only file instance"));
-+ }
-+
-+ for (total_read = 0,current_offset=read_data; read_size > total_read;
-+ total_read += bytes_read,current_offset+=bytes_read) {
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,15))
-+ current_read_size = min_t(const int,read_size - total_read,cifs_sb->rsize);
-+#else
-+ current_read_size = min(read_size - total_read,cifs_sb->rsize);
-+#endif
-+ rc = -EAGAIN;
-+ while(rc == -EAGAIN) {
-+ if ((open_file->invalidHandle) && (!open_file->closePend)) {
-+ rc = cifs_reopen_file(file->f_dentry->d_inode,
-+ file,TRUE);
-+ if(rc != 0)
-+ break;
-+ }
-+
-+ rc = CIFSSMBRead(xid, pTcon,
-+ open_file->netfid,
-+ current_read_size, *poffset,
-+ &bytes_read, &current_offset);
-+ }
-+ if (rc || (bytes_read == 0)) {
-+ if (total_read) {
-+ break;
-+ } else {
-+ FreeXid(xid);
-+ return rc;
-+ }
-+ } else {
-+#ifdef CONFIG_CIFS_STATS
-+ atomic_inc(&pTcon->num_reads);
-+ spin_lock(&pTcon->stat_lock);
-+ pTcon->bytes_read += total_read;
-+ spin_unlock(&pTcon->stat_lock);
-+#endif
-+ *poffset += bytes_read;
-+ }
-+ }
-+ FreeXid(xid);
-+ return total_read;
-+}
-+
-+int cifs_file_mmap(struct file * file, struct vm_area_struct * vma)
-+{
-+ struct dentry * dentry = file->f_dentry;
-+ int rc, xid;
-+
-+ xid = GetXid();
-+ rc = cifs_revalidate(dentry);
-+ if (rc) {
-+ cFYI(1,("Validation prior to mmap failed, error=%d", rc));
-+ FreeXid(xid);
-+ return rc;
-+ }
-+ rc = generic_file_mmap(file, vma);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
-+static void cifs_copy_cache_pages(struct address_space *mapping,
-+ struct list_head *pages, int bytes_read,
-+ char *data,struct pagevec * plru_pvec)
-+{
-+ struct page *page;
-+ char * target;
-+
-+ while (bytes_read > 0) {
-+ if(list_empty(pages))
-+ break;
-+
-+ page = list_entry(pages->prev, struct page, lru);
-+ list_del(&page->lru);
-+
-+ if (add_to_page_cache(page, mapping, page->index, GFP_KERNEL)) {
-+ page_cache_release(page);
-+ cFYI(1,("Add page cache failed"));
-+ continue;
-+ }
-+
-+ target = kmap_atomic(page,KM_USER0);
-+
-+ if(PAGE_CACHE_SIZE > bytes_read) {
-+ memcpy(target,data,bytes_read);
-+ /* zero the tail end of this partial page */
-+ memset(target+bytes_read,0,PAGE_CACHE_SIZE-bytes_read);
-+ bytes_read = 0;
-+ } else {
-+ memcpy(target,data,PAGE_CACHE_SIZE);
-+ bytes_read -= PAGE_CACHE_SIZE;
-+ }
-+ kunmap_atomic(target,KM_USER0);
-+
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+ if (!pagevec_add(plru_pvec, page))
-+ __pagevec_lru_add(plru_pvec);
-+ data += PAGE_CACHE_SIZE;
-+ }
-+ return;
-+}
-+
-+
-+static int
-+cifs_readpages(struct file *file, struct address_space *mapping,
-+ struct list_head *page_list, unsigned num_pages)
-+{
-+ int rc = -EACCES;
-+ int xid;
-+ loff_t offset;
-+ struct page * page;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ int bytes_read = 0;
-+ unsigned int read_size,i;
-+ char * smb_read_data = NULL;
-+ struct smb_com_read_rsp * pSMBr;
-+ struct pagevec lru_pvec;
-+ struct cifsFileInfo * open_file;
-+
-+ xid = GetXid();
-+ if (file->private_data == NULL) {
-+ FreeXid(xid);
-+ return -EBADF;
-+ }
-+ open_file = (struct cifsFileInfo *)file->private_data;
-+ cifs_sb = CIFS_SB(file->f_dentry->d_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ pagevec_init(&lru_pvec, 0);
-+
-+ for(i = 0;i<num_pages;) {
-+ unsigned contig_pages;
-+ struct page * tmp_page;
-+ unsigned long expected_index;
-+
-+ if(list_empty(page_list)) {
-+ break;
-+ }
-+ page = list_entry(page_list->prev, struct page, lru);
-+ offset = (loff_t)page->index << PAGE_CACHE_SHIFT;
-+
-+ /* count adjacent pages that we will read into */
-+ contig_pages = 0;
-+ expected_index = list_entry(page_list->prev,struct page,lru)->index;
-+ list_for_each_entry_reverse(tmp_page,page_list,lru) {
-+ if(tmp_page->index == expected_index) {
-+ contig_pages++;
-+ expected_index++;
-+ } else {
-+ break;
-+ }
-+ }
-+ if(contig_pages + i > num_pages) {
-+ contig_pages = num_pages - i;
-+ }
-+
-+ /* for reads over a certain size could initiate async read ahead */
-+
-+ read_size = contig_pages * PAGE_CACHE_SIZE;
-+ /* Read size needs to be in multiples of one page */
-+ read_size = min_t(const unsigned int,read_size,cifs_sb->rsize & PAGE_CACHE_MASK);
-+
-+ rc = -EAGAIN;
-+ while(rc == -EAGAIN) {
-+ if ((open_file->invalidHandle) && (!open_file->closePend)) {
-+ rc = cifs_reopen_file(file->f_dentry->d_inode,
-+ file, TRUE);
-+ if(rc != 0)
-+ break;
-+ }
-+
-+ rc = CIFSSMBRead(xid, pTcon,
-+ open_file->netfid,
-+ read_size, offset,
-+ &bytes_read, &smb_read_data);
-+ /* BB need to check return code here */
-+ if(rc== -EAGAIN) {
-+ if(smb_read_data) {
-+ cifs_buf_release(smb_read_data);
-+ smb_read_data = NULL;
-+ }
-+ }
-+ }
-+ if ((rc < 0) || (smb_read_data == NULL)) {
-+ cFYI(1,("Read error in readpages: %d",rc));
-+ /* clean up remaing pages off list */
-+ while (!list_empty(page_list) && (i < num_pages)) {
-+ page = list_entry(page_list->prev, struct page, lru);
-+ list_del(&page->lru);
-+ page_cache_release(page);
-+ }
-+ break;
-+ } else if (bytes_read > 0) {
-+ pSMBr = (struct smb_com_read_rsp *)smb_read_data;
-+ cifs_copy_cache_pages(mapping, page_list, bytes_read,
-+ smb_read_data + 4 /* RFC1001 hdr */ +
-+ le16_to_cpu(pSMBr->DataOffset), &lru_pvec);
-+
-+ i += bytes_read >> PAGE_CACHE_SHIFT;
-+#ifdef CONFIG_CIFS_STATS
-+ atomic_inc(&pTcon->num_reads);
-+ spin_lock(&pTcon->stat_lock);
-+ pTcon->bytes_read += bytes_read;
-+ spin_unlock(&pTcon->stat_lock);
-+#endif
-+ if((int)(bytes_read & PAGE_CACHE_MASK) != bytes_read) {
-+ cFYI(1,("Partial page %d of %d read to cache",i++,num_pages));
-+
-+ i++; /* account for partial page */
-+
-+ /* server copy of file can have smaller size than client */
-+ /* BB do we need to verify this common case ? this case is ok -
-+ if we are at server EOF we will hit it on next read */
-+
-+ /* while(!list_empty(page_list) && (i < num_pages)) {
-+ page = list_entry(page_list->prev,struct page, list);
-+ list_del(&page->list);
-+ page_cache_release(page);
-+ }
-+ break; */
-+ }
-+ } else {
-+ cFYI(1,("No bytes read (%d) at offset %lld . Cleaning remaining pages from readahead list",bytes_read,offset));
-+ /* BB turn off caching and do new lookup on file size at server? */
-+ while (!list_empty(page_list) && (i < num_pages)) {
-+ page = list_entry(page_list->prev, struct page, lru);
-+ list_del(&page->lru);
-+ page_cache_release(page); /* BB removeme - replace with zero of page? */
-+ }
-+ break;
-+ }
-+ if(smb_read_data) {
-+ cifs_buf_release(smb_read_data);
-+ smb_read_data = NULL;
-+ }
-+ bytes_read = 0;
-+ }
-+
-+ pagevec_lru_add(&lru_pvec);
-+
-+/* need to free smb_read_data buf before exit */
-+ if(smb_read_data) {
-+ cifs_buf_release(smb_read_data);
-+ smb_read_data = NULL;
-+ }
-+
-+ FreeXid(xid);
-+ return rc;
-+}
-+#endif
-+
-+static int cifs_readpage_worker(struct file *file, struct page *page, loff_t * poffset)
-+{
-+ char * read_data;
-+ int rc;
-+
-+ page_cache_get(page);
-+ read_data = kmap(page);
-+ /* for reads over a certain size could initiate async read ahead */
-+
-+ rc = cifs_read(file, read_data, PAGE_CACHE_SIZE, poffset);
-+
-+ if (rc < 0)
-+ goto io_error;
-+ else {
-+ cFYI(1,("Bytes read %d ",rc));
-+ }
-+
-+ file->f_dentry->d_inode->i_atime = CURRENT_TIME;
-+
-+ if(PAGE_CACHE_SIZE > rc) {
-+ memset(read_data+rc, 0, PAGE_CACHE_SIZE - rc);
-+ }
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ rc = 0;
-+
-+io_error:
-+ kunmap(page);
-+ page_cache_release(page);
-+ return rc;
-+}
-+
-+static int
-+cifs_readpage(struct file *file, struct page *page)
-+{
-+ loff_t offset = (loff_t)page->index << PAGE_CACHE_SHIFT;
-+ int rc = -EACCES;
-+ int xid;
-+
-+ xid = GetXid();
-+
-+ if (file->private_data == NULL) {
-+ FreeXid(xid);
-+ return -EBADF;
-+ }
-+
-+ cFYI(1,("readpage %p at offset %d 0x%x\n",page,(int)offset,(int)offset));
-+
-+ rc = cifs_readpage_worker(file,page,&offset);
-+
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,20))
-+ unlock_page(page);
-+#else
-+ UnlockPage(page);
-+#endif
-+
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+/* We do not want to update the file size from server for inodes
-+ open for write - to avoid races with writepage extending
-+ the file - in the future we could consider allowing
-+ refreshing the inode only on increases in the file size
-+ but this is tricky to do without racing with writebehind
-+ page caching in the current Linux kernel design */
-+
-+int is_size_safe_to_change(struct cifsInodeInfo * cifsInode)
-+{
-+ struct list_head *tmp;
-+ struct list_head *tmp1;
-+ struct cifsFileInfo *open_file = NULL;
-+ int rc = TRUE;
-+
-+ if(cifsInode == NULL)
-+ return rc;
-+
-+ read_lock(&GlobalSMBSeslock);
-+ list_for_each_safe(tmp, tmp1, &cifsInode->openFileList) {
-+ open_file = list_entry(tmp,struct cifsFileInfo, flist);
-+ if(open_file == NULL)
-+ break;
-+ if(open_file->closePend)
-+ continue;
-+ /* We check if file is open for writing,
-+ BB we could supplement this with a check to see if file size
-+ changes have been flushed to server - ie inode metadata dirty */
-+ if((open_file->pfile) &&
-+ ((open_file->pfile->f_flags & O_RDWR) ||
-+ (open_file->pfile->f_flags & O_WRONLY))) {
-+ rc = FALSE;
-+ break;
-+ }
-+ if(tmp->next == NULL) {
-+ cFYI(1,("File instance %p removed",tmp));
-+ break;
-+ }
-+ }
-+ read_unlock(&GlobalSMBSeslock);
-+ return rc;
-+}
-+
-+
-+void
-+fill_in_inode(struct inode *tmp_inode,
-+ FILE_DIRECTORY_INFO * pfindData, int *pobject_type)
-+{
-+ struct cifsInodeInfo *cifsInfo = CIFS_I(tmp_inode);
-+ struct cifs_sb_info *cifs_sb = CIFS_SB(tmp_inode->i_sb);
-+
-+ pfindData->ExtFileAttributes =
-+ le32_to_cpu(pfindData->ExtFileAttributes);
-+ pfindData->AllocationSize = le64_to_cpu(pfindData->AllocationSize);
-+ pfindData->EndOfFile = le64_to_cpu(pfindData->EndOfFile);
-+ cifsInfo->cifsAttrs = pfindData->ExtFileAttributes;
-+ cifsInfo->time = jiffies;
-+
-+ /* Linux can not store file creation time unfortunately so ignore it */
-+ tmp_inode->i_atime =
-+ cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastAccessTime));
-+ tmp_inode->i_mtime =
-+ cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastWriteTime));
-+ tmp_inode->i_ctime =
-+ cifs_NTtimeToUnix(le64_to_cpu(pfindData->ChangeTime));
-+ /* treat dos attribute of read-only as read-only mode bit e.g. 555? */
-+ /* 2767 perms - indicate mandatory locking */
-+ /* BB fill in uid and gid here? with help from winbind?
-+ or retrieve from NTFS stream extended attribute */
-+ if(atomic_read(&cifsInfo->inUse) == 0) {
-+ tmp_inode->i_uid = cifs_sb->mnt_uid;
-+ tmp_inode->i_gid = cifs_sb->mnt_gid;
-+ /* set default mode. will override for dirs below */
-+ tmp_inode->i_mode = cifs_sb->mnt_file_mode;
-+ }
-+
-+ cFYI(0,
-+ ("CIFS FFIRST: Attributes came in as 0x%x",
-+ pfindData->ExtFileAttributes));
-+ if (pfindData->ExtFileAttributes & ATTR_REPARSE) {
-+ *pobject_type = DT_LNK;
-+ /* BB can this and S_IFREG or S_IFDIR be set as in Windows? */
-+ tmp_inode->i_mode |= S_IFLNK;
-+ } else if (pfindData->ExtFileAttributes & ATTR_DIRECTORY) {
-+ *pobject_type = DT_DIR;
-+ /* override default perms since we do not lock dirs */
-+ if(atomic_read(&cifsInfo->inUse) == 0) {
-+ tmp_inode->i_mode = cifs_sb->mnt_dir_mode;
-+ }
-+ tmp_inode->i_mode |= S_IFDIR;
-+ } else {
-+ *pobject_type = DT_REG;
-+ tmp_inode->i_mode |= S_IFREG;
-+ if(pfindData->ExtFileAttributes & ATTR_READONLY)
-+ tmp_inode->i_mode &= ~(S_IWUGO);
-+
-+ }/* could add code here - to validate if device or weird share type? */
-+
-+ /* can not fill in nlink here as in qpathinfo version and Unx search */
-+ if(atomic_read(&cifsInfo->inUse) == 0) {
-+ atomic_set(&cifsInfo->inUse,1);
-+ }
-+ if(is_size_safe_to_change(cifsInfo)) {
-+ /* can not safely change the file size here if the
-+ client is writing to it due to potential races */
-+ tmp_inode->i_size = pfindData->EndOfFile;
-+
-+ /* 512 bytes (2**9) is the fake blocksize that must be used */
-+ /* for this calculation, even though the reported blocksize is larger */
-+ tmp_inode->i_blocks = (512 - 1 + pfindData->AllocationSize) >> 9;
-+ }
-+
-+ if (pfindData->AllocationSize < pfindData->EndOfFile)
-+ cFYI(1, ("Possible sparse file: allocation size less than end of file "));
-+ cFYI(1,
-+ ("File Size %ld and blocks %ld and blocksize %ld",
-+ (unsigned long) tmp_inode->i_size, tmp_inode->i_blocks,
-+ tmp_inode->i_blksize));
-+ if (S_ISREG(tmp_inode->i_mode)) {
-+ cFYI(1, (" File inode "));
-+ tmp_inode->i_op = &cifs_file_inode_ops;
-+ tmp_inode->i_fop = &cifs_file_ops;
-+ tmp_inode->i_data.a_ops = &cifs_addr_ops;
-+ } else if (S_ISDIR(tmp_inode->i_mode)) {
-+ cFYI(1, (" Directory inode"));
-+ tmp_inode->i_op = &cifs_dir_inode_ops;
-+ tmp_inode->i_fop = &cifs_dir_ops;
-+ } else if (S_ISLNK(tmp_inode->i_mode)) {
-+ cFYI(1, (" Symbolic Link inode "));
-+ tmp_inode->i_op = &cifs_symlink_inode_ops;
-+ } else {
-+ cFYI(1, (" Init special inode "));
-+ init_special_inode(tmp_inode, tmp_inode->i_mode,
-+ kdev_t_to_nr(tmp_inode->i_rdev));
-+ }
-+}
-+
-+void
-+unix_fill_in_inode(struct inode *tmp_inode,
-+ FILE_UNIX_INFO * pfindData, int *pobject_type)
-+{
-+ struct cifsInodeInfo *cifsInfo = CIFS_I(tmp_inode);
-+ cifsInfo->time = jiffies;
-+ atomic_inc(&cifsInfo->inUse);
-+
-+ tmp_inode->i_atime =
-+ cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastAccessTime));
-+ tmp_inode->i_mtime =
-+ cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastModificationTime));
-+ tmp_inode->i_ctime =
-+ cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastStatusChange));
-+
-+ tmp_inode->i_mode = le64_to_cpu(pfindData->Permissions);
-+ pfindData->Type = le32_to_cpu(pfindData->Type);
-+ if (pfindData->Type == UNIX_FILE) {
-+ *pobject_type = DT_REG;
-+ tmp_inode->i_mode |= S_IFREG;
-+ } else if (pfindData->Type == UNIX_SYMLINK) {
-+ *pobject_type = DT_LNK;
-+ tmp_inode->i_mode |= S_IFLNK;
-+ } else if (pfindData->Type == UNIX_DIR) {
-+ *pobject_type = DT_DIR;
-+ tmp_inode->i_mode |= S_IFDIR;
-+ } else if (pfindData->Type == UNIX_CHARDEV) {
-+ *pobject_type = DT_CHR;
-+ tmp_inode->i_mode |= S_IFCHR;
-+ tmp_inode->i_rdev = MKDEV(le64_to_cpu(pfindData->DevMajor),
-+ le64_to_cpu(pfindData->DevMinor) & MINORMASK);
-+ } else if (pfindData->Type == UNIX_BLOCKDEV) {
-+ *pobject_type = DT_BLK;
-+ tmp_inode->i_mode |= S_IFBLK;
-+ tmp_inode->i_rdev = MKDEV(le64_to_cpu(pfindData->DevMajor),
-+ le64_to_cpu(pfindData->DevMinor) & MINORMASK);
-+ } else if (pfindData->Type == UNIX_FIFO) {
-+ *pobject_type = DT_FIFO;
-+ tmp_inode->i_mode |= S_IFIFO;
-+ } else if (pfindData->Type == UNIX_SOCKET) {
-+ *pobject_type = DT_SOCK;
-+ tmp_inode->i_mode |= S_IFSOCK;
-+ }
-+
-+ tmp_inode->i_uid = le64_to_cpu(pfindData->Uid);
-+ tmp_inode->i_gid = le64_to_cpu(pfindData->Gid);
-+ tmp_inode->i_nlink = le64_to_cpu(pfindData->Nlinks);
-+
-+ pfindData->NumOfBytes = le64_to_cpu(pfindData->NumOfBytes);
-+ if(is_size_safe_to_change(cifsInfo)) {
-+ /* can not safely change the file size here if the
-+ client is writing to it due to potential races */
-+ pfindData->EndOfFile = le64_to_cpu(pfindData->EndOfFile);
-+ tmp_inode->i_size = pfindData->EndOfFile;
-+
-+ /* 512 bytes (2**9) is the fake blocksize that must be used */
-+ /* for this calculation, not the real blocksize */
-+ tmp_inode->i_blocks = (512 - 1 + pfindData->NumOfBytes) >> 9;
-+ }
-+
-+ if (S_ISREG(tmp_inode->i_mode)) {
-+ cFYI(1, ("File inode"));
-+ tmp_inode->i_op = &cifs_file_inode_ops;
-+ tmp_inode->i_fop = &cifs_file_ops;
-+ tmp_inode->i_data.a_ops = &cifs_addr_ops;
-+ } else if (S_ISDIR(tmp_inode->i_mode)) {
-+ cFYI(1, ("Directory inode"));
-+ tmp_inode->i_op = &cifs_dir_inode_ops;
-+ tmp_inode->i_fop = &cifs_dir_ops;
-+ } else if (S_ISLNK(tmp_inode->i_mode)) {
-+ cFYI(1, ("Symbolic Link inode"));
-+ tmp_inode->i_op = &cifs_symlink_inode_ops;
-+/* tmp_inode->i_fop = *//* do not need to set to anything */
-+ } else {
-+ cFYI(1, ("Special inode"));
-+ init_special_inode(tmp_inode, tmp_inode->i_mode,
-+ kdev_t_to_nr(tmp_inode->i_rdev));
-+ }
-+}
-+
-+static void
-+construct_dentry(struct qstr *qstring, struct file *file,
-+ struct inode **ptmp_inode, struct dentry **pnew_dentry)
-+{
-+ struct dentry *tmp_dentry;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ struct cifsInodeInfo *pCifsI;
-+
-+ cFYI(1, ("For %s ", qstring->name));
-+ cifs_sb = CIFS_SB(file->f_dentry->d_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ qstring->hash = full_name_hash(qstring->name, qstring->len);
-+ tmp_dentry = d_lookup(file->f_dentry, qstring);
-+ if (tmp_dentry) {
-+ cFYI(0, (" existing dentry with inode 0x%p", tmp_dentry->d_inode));
-+ *ptmp_inode = tmp_dentry->d_inode;
-+ /* BB overwrite the old name? i.e. tmp_dentry->d_name and tmp_dentry->d_name.len ?? */
-+ if(*ptmp_inode == NULL) {
-+ *ptmp_inode = new_inode(file->f_dentry->d_sb);
-+ if(*ptmp_inode == NULL)
-+ return;
-+ d_instantiate(tmp_dentry, *ptmp_inode);
-+ insert_inode_hash(*ptmp_inode);
-+ pCifsI = CIFS_I(*ptmp_inode);
-+ INIT_LIST_HEAD(&pCifsI->openFileList);
-+ /* can not enable caching for this inode
-+ until a file instance is open and we
-+ can check the oplock flag on the open
-+ response */
-+ (*ptmp_inode)->i_blksize = CIFS_MAX_MSGSIZE;
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,15))
-+ (*ptmp_inode)->i_blkbits = 14; /* 2**14 = CIFS_MAX_MSGSIZE */
-+#endif
-+ pCifsI->clientCanCacheRead = FALSE;
-+ pCifsI->clientCanCacheAll = FALSE;
-+ pCifsI->time = 0;
-+ /* do not need to set cifs Attrs since
-+ they are about to be overwritten
-+ in fill_in_inode */
-+ atomic_set(&pCifsI->inUse, 0);
-+ }
-+ } else {
-+ tmp_dentry = d_alloc(file->f_dentry, qstring);
-+ if(tmp_dentry == NULL) {
-+ cERROR(1,("Failed allocating dentry"));
-+ return;
-+ }
-+
-+ if(ptmp_inode) {
-+ *ptmp_inode = new_inode(file->f_dentry->d_sb);
-+ if(*ptmp_inode == NULL)
-+ return;
-+ pCifsI = CIFS_I(*ptmp_inode);
-+ insert_inode_hash(*ptmp_inode);
-+ INIT_LIST_HEAD(&pCifsI->openFileList);
-+ /* can not enable caching for this inode
-+ until a file instance is open and we
-+ can check the oplock flag on the open
-+ response */
-+ (*ptmp_inode)->i_blksize = CIFS_MAX_MSGSIZE;
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,15))
-+ (*ptmp_inode)->i_blkbits = 14; /* 2**14 = CIFS_MAX_MSGSIZE */
-+#endif
-+ pCifsI->clientCanCacheRead = FALSE;
-+ pCifsI->clientCanCacheAll = FALSE;
-+ pCifsI->time = 0;
-+ /* do not need to set cifs Attrs since
-+ they are about to be overwritten
-+ in fill_in_inode */
-+ atomic_set(&pCifsI->inUse, 0);
-+ }
-+ tmp_dentry->d_op = &cifs_dentry_ops;
-+ d_instantiate(tmp_dentry, *ptmp_inode);
-+ d_rehash(tmp_dentry);
-+ }
-+
-+ tmp_dentry->d_time = jiffies;
-+ *pnew_dentry = tmp_dentry;
-+}
-+
-+static void reset_resume_key(struct file * dir_file,
-+ unsigned char * filename,
-+ unsigned int len,int Unicode,struct nls_table * nls_tab) {
-+ struct cifsFileInfo *cifsFile;
-+
-+ cifsFile = (struct cifsFileInfo *)dir_file->private_data;
-+ if(cifsFile == NULL)
-+ return;
-+ if(cifsFile->search_resume_name) {
-+ kfree(cifsFile->search_resume_name);
-+ }
-+
-+ if(Unicode)
-+ len *= 2;
-+ cifsFile->resume_name_length = len;
-+
-+ cifsFile->search_resume_name =
-+ kmalloc(cifsFile->resume_name_length, GFP_KERNEL);
-+
-+ if(cifsFile->search_resume_name == NULL) {
-+ cERROR(1,("failed new resume key allocate, length %d",
-+ cifsFile->resume_name_length));
-+ return;
-+ }
-+ if(Unicode)
-+ cifs_strtoUCS((wchar_t *) cifsFile->search_resume_name,
-+ filename, len, nls_tab);
-+ else
-+ memcpy(cifsFile->search_resume_name, filename,
-+ cifsFile->resume_name_length);
-+ cFYI(1,("Reset resume key to: %s with len %d",filename,len));
-+ return;
-+}
-+
-+
-+
-+static int
-+cifs_filldir(struct qstr *pqstring, FILE_DIRECTORY_INFO * pfindData,
-+ struct file *file, filldir_t filldir, void *direntry)
-+{
-+ struct inode *tmp_inode;
-+ struct dentry *tmp_dentry;
-+ int object_type,rc;
-+
-+ pqstring->name = pfindData->FileName;
-+ pqstring->len = pfindData->FileNameLength;
-+
-+ construct_dentry(pqstring, file, &tmp_inode, &tmp_dentry);
-+ if((tmp_inode == NULL) || (tmp_dentry == NULL)) {
-+ return -ENOMEM;
-+ }
-+ fill_in_inode(tmp_inode, pfindData, &object_type);
-+ rc = filldir(direntry, pfindData->FileName, pqstring->len, file->f_pos,
-+ tmp_inode->i_ino, object_type);
-+ if(rc) {
-+ /* due to readdir error we need to recalculate resume
-+ key so next readdir will restart on right entry */
-+ cFYI(1,("Error %d on filldir of %s",rc ,pfindData->FileName));
-+ }
-+ dput(tmp_dentry);
-+ return rc;
-+}
-+
-+static int
-+cifs_filldir_unix(struct qstr *pqstring,
-+ FILE_UNIX_INFO * pUnixFindData, struct file *file,
-+ filldir_t filldir, void *direntry)
-+{
-+ struct inode *tmp_inode;
-+ struct dentry *tmp_dentry;
-+ int object_type, rc;
-+
-+ pqstring->name = pUnixFindData->FileName;
-+ pqstring->len = strnlen(pUnixFindData->FileName, MAX_PATHCONF);
-+
-+ construct_dentry(pqstring, file, &tmp_inode, &tmp_dentry);
-+ if((tmp_inode == NULL) || (tmp_dentry == NULL)) {
-+ return -ENOMEM;
-+ }
-+
-+ unix_fill_in_inode(tmp_inode, pUnixFindData, &object_type);
-+ rc = filldir(direntry, pUnixFindData->FileName, pqstring->len,
-+ file->f_pos, tmp_inode->i_ino, object_type);
-+ if(rc) {
-+ /* due to readdir error we need to recalculate resume
-+ key so next readdir will restart on right entry */
-+ cFYI(1,("Error %d on filldir of %s",rc ,pUnixFindData->FileName));
-+ }
-+ dput(tmp_dentry);
-+ return rc;
-+}
-+
-+int
-+cifs_readdir(struct file *file, void *direntry, filldir_t filldir)
-+{
-+ int rc = 0;
-+ int xid;
-+ int Unicode = FALSE;
-+ int UnixSearch = FALSE;
-+ unsigned int bufsize, i;
-+ __u16 searchHandle;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ struct cifsFileInfo *cifsFile = NULL;
-+ char *full_path = NULL;
-+ char *data;
-+ struct qstr qstring;
-+ T2_FFIRST_RSP_PARMS findParms;
-+ T2_FNEXT_RSP_PARMS findNextParms;
-+ FILE_DIRECTORY_INFO *pfindData;
-+ FILE_DIRECTORY_INFO *lastFindData;
-+ FILE_UNIX_INFO *pfindDataUnix;
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(file->f_dentry->d_sb);
-+ pTcon = cifs_sb->tcon;
-+ bufsize = pTcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE;
-+ if(bufsize > CIFS_MAX_MSGSIZE) {
-+ FreeXid(xid);
-+ return -EIO;
-+ }
-+ data = kmalloc(bufsize, GFP_KERNEL);
-+ pfindData = (FILE_DIRECTORY_INFO *) data;
-+
-+ if(file->f_dentry == NULL) {
-+ FreeXid(xid);
-+ return -EIO;
-+ }
-+ down(&file->f_dentry->d_sb->s_vfs_rename_sem);
-+ full_path = build_wildcard_path_from_dentry(file->f_dentry);
-+ up(&file->f_dentry->d_sb->s_vfs_rename_sem);
-+
-+
-+ cFYI(1, ("Full path: %s start at: %lld ", full_path, file->f_pos));
-+
-+ switch ((int) file->f_pos) {
-+ case 0:
-+ if (filldir(direntry, ".", 1, file->f_pos,
-+ file->f_dentry->d_inode->i_ino, DT_DIR) < 0) {
-+ cERROR(1, ("Filldir for current dir failed "));
-+ break;
-+ }
-+ file->f_pos++;
-+ /* fallthrough */
-+ case 1:
-+ if (filldir(direntry, "..", 2, file->f_pos,
-+ file->f_dentry->d_parent->d_inode->i_ino, DT_DIR) < 0) {
-+ cERROR(1, ("Filldir for parent dir failed "));
-+ break;
-+ }
-+ file->f_pos++;
-+ /* fallthrough */
-+ case 2:
-+ if (file->private_data != NULL) {
-+ cifsFile =
-+ (struct cifsFileInfo *) file->private_data;
-+ if (cifsFile->endOfSearch) {
-+ if(cifsFile->emptyDir) {
-+ cFYI(1, ("End of search, empty dir"));
-+ rc = 0;
-+ break;
-+ }
-+ } else {
-+ cifsFile->invalidHandle = TRUE;
-+ CIFSFindClose(xid, pTcon, cifsFile->netfid);
-+ }
-+ if(cifsFile->search_resume_name) {
-+ kfree(cifsFile->search_resume_name);
-+ cifsFile->search_resume_name = NULL;
-+ }
-+ }
-+ rc = CIFSFindFirst(xid, pTcon, full_path, pfindData,
-+ &findParms, cifs_sb->local_nls,
-+ &Unicode, &UnixSearch);
-+ cFYI(1, ("Count: %d End: %d ", findParms.SearchCount,
-+ findParms.EndofSearch));
-+
-+ if (rc == 0) {
-+ searchHandle = findParms.SearchHandle;
-+ if(file->private_data == NULL)
-+ file->private_data =
-+ kmalloc(sizeof(struct cifsFileInfo),GFP_KERNEL);
-+ if (file->private_data) {
-+ memset(file->private_data, 0,
-+ sizeof (struct cifsFileInfo));
-+ cifsFile =
-+ (struct cifsFileInfo *) file->private_data;
-+ cifsFile->netfid = searchHandle;
-+ cifsFile->invalidHandle = FALSE;
-+ init_MUTEX(&cifsFile->fh_sem);
-+ } else {
-+ rc = -ENOMEM;
-+ break;
-+ }
-+
-+ renew_parental_timestamps(file->f_dentry);
-+ lastFindData =
-+ (FILE_DIRECTORY_INFO *) ((char *) pfindData +
-+ findParms.LastNameOffset);
-+ if((char *)lastFindData > (char *)pfindData + bufsize) {
-+ cFYI(1,("last search entry past end of packet"));
-+ rc = -EIO;
-+ break;
-+ }
-+ /* Offset of resume key same for levels 257 and 514 */
-+ cifsFile->resume_key = lastFindData->FileIndex;
-+ if(UnixSearch == FALSE) {
-+ cifsFile->resume_name_length =
-+ le32_to_cpu(lastFindData->FileNameLength);
-+ if(cifsFile->resume_name_length > bufsize - 64) {
-+ cFYI(1,("Illegal resume file name length %d",
-+ cifsFile->resume_name_length));
-+ rc = -ENOMEM;
-+ break;
-+ }
-+ cifsFile->search_resume_name =
-+ kmalloc(cifsFile->resume_name_length, GFP_KERNEL);
-+ cFYI(1,("Last file: %s with name %d bytes long",
-+ lastFindData->FileName,
-+ cifsFile->resume_name_length));
-+ memcpy(cifsFile->search_resume_name,
-+ lastFindData->FileName,
-+ cifsFile->resume_name_length);
-+ } else {
-+ pfindDataUnix = (FILE_UNIX_INFO *)lastFindData;
-+ if (Unicode == TRUE) {
-+ for(i=0;(pfindDataUnix->FileName[i]
-+ | pfindDataUnix->FileName[i+1]);
-+ i+=2) {
-+ if(i > bufsize-64)
-+ break;
-+ }
-+ cifsFile->resume_name_length = i + 2;
-+ } else {
-+ cifsFile->resume_name_length =
-+ strnlen(pfindDataUnix->FileName,
-+ bufsize-63);
-+ }
-+ if(cifsFile->resume_name_length > bufsize - 64) {
-+ cFYI(1,("Illegal resume file name length %d",
-+ cifsFile->resume_name_length));
-+ rc = -ENOMEM;
-+ break;
-+ }
-+ cifsFile->search_resume_name =
-+ kmalloc(cifsFile->resume_name_length, GFP_KERNEL);
-+ cFYI(1,("Last file: %s with name %d bytes long",
-+ pfindDataUnix->FileName,
-+ cifsFile->resume_name_length));
-+ memcpy(cifsFile->search_resume_name,
-+ pfindDataUnix->FileName,
-+ cifsFile->resume_name_length);
-+ }
-+ for (i = 2; i < (unsigned int)findParms.SearchCount + 2; i++) {
-+ if (UnixSearch == FALSE) {
-+ pfindData->FileNameLength =
-+ le32_to_cpu(pfindData->FileNameLength);
-+ if (Unicode == TRUE)
-+ pfindData->FileNameLength =
-+ cifs_strfromUCS_le
-+ (pfindData->FileName,
-+ (wchar_t *)
-+ pfindData->FileName,
-+ (pfindData->
-+ FileNameLength) / 2,
-+ cifs_sb->local_nls);
-+ qstring.len = pfindData->FileNameLength;
-+ if (((qstring.len != 1)
-+ || (pfindData->FileName[0] != '.'))
-+ && ((qstring.len != 2)
-+ || (pfindData->
-+ FileName[0] != '.')
-+ || (pfindData->
-+ FileName[1] != '.'))) {
-+ if(cifs_filldir(&qstring,
-+ pfindData,
-+ file, filldir,
-+ direntry)) {
-+ /* do not end search if
-+ kernel not ready to take
-+ remaining entries yet */
-+ reset_resume_key(file, pfindData->FileName,qstring.len,
-+ Unicode, cifs_sb->local_nls);
-+ findParms.EndofSearch = 0;
-+ break;
-+ }
-+ file->f_pos++;
-+ }
-+ } else { /* UnixSearch */
-+ pfindDataUnix =
-+ (FILE_UNIX_INFO *) pfindData;
-+ if (Unicode == TRUE)
-+ qstring.len =
-+ cifs_strfromUCS_le
-+ (pfindDataUnix->FileName,
-+ (wchar_t *)
-+ pfindDataUnix->FileName,
-+ MAX_PATHCONF,
-+ cifs_sb->local_nls);
-+ else
-+ qstring.len =
-+ strnlen(pfindDataUnix->
-+ FileName,
-+ MAX_PATHCONF);
-+ if (((qstring.len != 1)
-+ || (pfindDataUnix->
-+ FileName[0] != '.'))
-+ && ((qstring.len != 2)
-+ || (pfindDataUnix->
-+ FileName[0] != '.')
-+ || (pfindDataUnix->
-+ FileName[1] != '.'))) {
-+ if(cifs_filldir_unix(&qstring,
-+ pfindDataUnix,
-+ file,
-+ filldir,
-+ direntry)) {
-+ /* do not end search if
-+ kernel not ready to take
-+ remaining entries yet */
-+ findParms.EndofSearch = 0;
-+ reset_resume_key(file, pfindDataUnix->FileName,
-+ qstring.len,Unicode,cifs_sb->local_nls);
-+ break;
-+ }
-+ file->f_pos++;
-+ }
-+ }
-+ /* works also for Unix ff struct since first field of both */
-+ pfindData =
-+ (FILE_DIRECTORY_INFO *) ((char *) pfindData
-+ + le32_to_cpu(pfindData->NextEntryOffset));
-+ /* BB also should check to make sure that pointer is not beyond the end of the SMB */
-+ /* if(pfindData > lastFindData) rc = -EIO; break; */
-+ } /* end for loop */
-+ if ((findParms.EndofSearch != 0) && cifsFile) {
-+ cifsFile->endOfSearch = TRUE;
-+ if(findParms.SearchCount == 2)
-+ cifsFile->emptyDir = TRUE;
-+ }
-+ } else {
-+ if (cifsFile)
-+ cifsFile->endOfSearch = TRUE;
-+ /* unless parent directory gone do not return error */
-+ rc = 0;
-+ }
-+ break;
-+ default:
-+ if (file->private_data == NULL) {
-+ rc = -EBADF;
-+ cFYI(1,
-+ ("Readdir on closed srch, pos = %lld",
-+ file->f_pos));
-+ } else {
-+ cifsFile = (struct cifsFileInfo *) file->private_data;
-+ if (cifsFile->endOfSearch) {
-+ rc = 0;
-+ cFYI(1, ("End of search "));
-+ break;
-+ }
-+ searchHandle = cifsFile->netfid;
-+ rc = CIFSFindNext(xid, pTcon, pfindData,
-+ &findNextParms, searchHandle,
-+ cifsFile->search_resume_name,
-+ cifsFile->resume_name_length,
-+ cifsFile->resume_key,
-+ &Unicode, &UnixSearch);
-+ cFYI(1,("Count: %d End: %d ",
-+ findNextParms.SearchCount,
-+ findNextParms.EndofSearch));
-+ if ((rc == 0) && (findNextParms.SearchCount != 0)) {
-+ /* BB save off resume key, key name and name length */
-+ lastFindData =
-+ (FILE_DIRECTORY_INFO *) ((char *) pfindData
-+ + findNextParms.LastNameOffset);
-+ if((char *)lastFindData > (char *)pfindData + bufsize) {
-+ cFYI(1,("last search entry past end of packet"));
-+ rc = -EIO;
-+ break;
-+ }
-+ /* Offset of resume key same for levels 257 and 514 */
-+ cifsFile->resume_key = lastFindData->FileIndex;
-+
-+ if(UnixSearch == FALSE) {
-+ cifsFile->resume_name_length =
-+ le32_to_cpu(lastFindData->FileNameLength);
-+ if(cifsFile->resume_name_length > bufsize - 64) {
-+ cFYI(1,("Illegal resume file name length %d",
-+ cifsFile->resume_name_length));
-+ rc = -ENOMEM;
-+ break;
-+ }
-+ /* Free the memory allocated by previous findfirst
-+ or findnext call - we can not reuse the memory since
-+ the resume name may not be same string length */
-+ if(cifsFile->search_resume_name)
-+ kfree(cifsFile->search_resume_name);
-+ cifsFile->search_resume_name =
-+ kmalloc(cifsFile->resume_name_length, GFP_KERNEL);
-+ cFYI(1,("Last file: %s with name %d bytes long",
-+ lastFindData->FileName,
-+ cifsFile->resume_name_length));
-+ memcpy(cifsFile->search_resume_name,
-+ lastFindData->FileName,
-+ cifsFile->resume_name_length);
-+ } else {
-+ pfindDataUnix = (FILE_UNIX_INFO *)lastFindData;
-+ if (Unicode == TRUE) {
-+ for(i=0;(pfindDataUnix->FileName[i]
-+ | pfindDataUnix->FileName[i+1]);
-+ i+=2) {
-+ if(i > bufsize-64)
-+ break;
-+ }
-+ cifsFile->resume_name_length = i + 2;
-+ } else {
-+ cifsFile->resume_name_length =
-+ strnlen(pfindDataUnix->
-+ FileName,
-+ MAX_PATHCONF);
-+ }
-+ if(cifsFile->resume_name_length > bufsize - 64) {
-+ cFYI(1,("Illegal resume file name length %d",
-+ cifsFile->resume_name_length));
-+ rc = -ENOMEM;
-+ break;
-+ }
-+ /* Free the memory allocated by previous findfirst
-+ or findnext call - we can not reuse the memory since
-+ the resume name may not be same string length */
-+ if(cifsFile->search_resume_name)
-+ kfree(cifsFile->search_resume_name);
-+ cifsFile->search_resume_name =
-+ kmalloc(cifsFile->resume_name_length, GFP_KERNEL);
-+ cFYI(1,("fnext last file: %s with name %d bytes long",
-+ pfindDataUnix->FileName,
-+ cifsFile->resume_name_length));
-+ memcpy(cifsFile->search_resume_name,
-+ pfindDataUnix->FileName,
-+ cifsFile->resume_name_length);
-+ }
-+
-+ for (i = 0; i < findNextParms.SearchCount; i++) {
-+ pfindData->FileNameLength =
-+ le32_to_cpu(pfindData->
-+ FileNameLength);
-+ if (UnixSearch == FALSE) {
-+ if (Unicode == TRUE)
-+ pfindData->FileNameLength =
-+ cifs_strfromUCS_le
-+ (pfindData->FileName,
-+ (wchar_t *)
-+ pfindData->FileName,
-+ (pfindData->FileNameLength)/ 2,
-+ cifs_sb->local_nls);
-+ qstring.len =
-+ pfindData->FileNameLength;
-+ if (((qstring.len != 1)
-+ || (pfindData->FileName[0] != '.'))
-+ && ((qstring.len != 2)
-+ || (pfindData->FileName[0] != '.')
-+ || (pfindData->FileName[1] !=
-+ '.'))) {
-+ if(cifs_filldir
-+ (&qstring,
-+ pfindData,
-+ file, filldir,
-+ direntry)) {
-+ /* do not end search if
-+ kernel not ready to take
-+ remaining entries yet */
-+ findNextParms.EndofSearch = 0;
-+ reset_resume_key(file, pfindData->FileName,qstring.len,
-+ Unicode,cifs_sb->local_nls);
-+ break;
-+ }
-+ file->f_pos++;
-+ }
-+ } else { /* UnixSearch */
-+ pfindDataUnix =
-+ (FILE_UNIX_INFO *)
-+ pfindData;
-+ if (Unicode == TRUE)
-+ qstring.len =
-+ cifs_strfromUCS_le
-+ (pfindDataUnix->FileName,
-+ (wchar_t *)
-+ pfindDataUnix->FileName,
-+ MAX_PATHCONF,
-+ cifs_sb->local_nls);
-+ else
-+ qstring.len =
-+ strnlen
-+ (pfindDataUnix->
-+ FileName,
-+ MAX_PATHCONF);
-+ if (((qstring.len != 1)
-+ || (pfindDataUnix->
-+ FileName[0] != '.'))
-+ && ((qstring.len != 2)
-+ || (pfindDataUnix->
-+ FileName[0] != '.')
-+ || (pfindDataUnix->
-+ FileName[1] !=
-+ '.'))) {
-+ if(cifs_filldir_unix
-+ (&qstring,
-+ pfindDataUnix,
-+ file, filldir,
-+ direntry)) {
-+ /* do not end search if
-+ kernel not ready to take
-+ remaining entries yet */
-+ findNextParms.EndofSearch = 0;
-+ reset_resume_key(file, pfindDataUnix->FileName,qstring.len,
-+ Unicode,cifs_sb->local_nls);
-+ break;
-+ }
-+ file->f_pos++;
-+ }
-+ }
-+ pfindData = (FILE_DIRECTORY_INFO *) ((char *) pfindData + le32_to_cpu(pfindData->NextEntryOffset)); /* works also for Unix find struct since this is the first field of both */
-+ /* BB also should check to make sure that pointer is not beyond the end of the SMB */
-+ } /* end for loop */
-+ if (findNextParms.EndofSearch != 0) {
-+ cifsFile->endOfSearch = TRUE;
-+ }
-+ } else {
-+ cifsFile->endOfSearch = TRUE;
-+ rc = 0; /* unless parent directory disappeared - do not return error here (eg Access Denied or no more files) */
-+ }
-+ }
-+ } /* end switch */
-+ if (data)
-+ kfree(data);
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+
-+ return rc;
-+}
-+int cifs_prepare_write(struct file *file, struct page *page,
-+ unsigned from, unsigned to)
-+{
-+ int rc = 0;
-+ loff_t offset = (loff_t)page->index << PAGE_CACHE_SHIFT;
-+ cFYI(1,("prepare write for page %p from %d to %d",page,from,to));
-+ if (!Page_Uptodate(page)) {
-+ /* if (to - from != PAGE_CACHE_SIZE) {
-+ void *kaddr = kmap_atomic(page, KM_USER0);
-+ memset(kaddr, 0, from);
-+ memset(kaddr + to, 0, PAGE_CACHE_SIZE - to);
-+ flush_dcache_page(page);
-+ kunmap_atomic(kaddr, KM_USER0);
-+ } */
-+ /* If we are writing a full page it will be up to date,
-+ no need to read from the server */
-+ if((to==PAGE_CACHE_SIZE) && (from == 0))
-+ SetPageUptodate(page);
-+
-+ /* might as well read a page, it is fast enough */
-+ if((file->f_flags & O_ACCMODE) != O_WRONLY) {
-+ rc = cifs_readpage_worker(file,page,&offset);
-+ } else {
-+ /* should we try using another
-+ file handle if there is one - how would we lock it
-+ to prevent close of that handle racing with this read? */
-+ /* In any case this will be written out by commit_write */
-+ }
-+ }
-+
-+ /* BB should we pass any errors back? e.g. if we do not have read access to the file */
-+ return 0;
-+}
-+
-+
-+struct address_space_operations cifs_addr_ops = {
-+ .readpage = cifs_readpage,
-+/* .readpages = cifs_readpages, */
-+ .writepage = cifs_writepage,
-+ .prepare_write = cifs_prepare_write,
-+ .commit_write = cifs_commit_write,
-+ .sync_page = cifs_sync_page,
-+ /*.direct_IO = */
-+};
-diff -urN linux-2.4.29.old/fs/cifs/inode.c linux-2.4.29/fs/cifs/inode.c
---- linux-2.4.29.old/fs/cifs/inode.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/inode.c 2004-07-14 00:25:05.000000000 +0200
-@@ -0,0 +1,1079 @@
-+/*
-+ * fs/cifs/inode.c
-+ *
-+ * Copyright (C) International Business Machines Corp., 2002,2003
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * 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.1 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 <linux/fs.h>
-+#include <linux/stat.h>
-+#include <linux/pagemap.h>
-+#include <linux/version.h>
-+#include <asm/div64.h>
-+#include "cifsfs.h"
-+#include "cifspdu.h"
-+#include "cifsglob.h"
-+#include "cifsproto.h"
-+#include "cifs_debug.h"
-+#include "cifs_fs_sb.h"
-+
-+extern int is_size_safe_to_change(struct cifsInodeInfo *);
-+
-+struct inode * get_cifs_inode(struct super_block * sb)
-+{
-+ struct inode * newinode;
-+ newinode = new_inode(sb);
-+ cFYI(1,("got new inode %p",newinode));
-+ if(newinode) {
-+ struct cifsInodeInfo * cifsInfo = CIFS_I(newinode);
-+ cifsInfo->clientCanCacheRead = FALSE;
-+ cifsInfo->clientCanCacheAll = FALSE;
-+ INIT_LIST_HEAD(&cifsInfo->openFileList);
-+ cifsInfo->cifsAttrs = 0x20; /* default */
-+ newinode->i_blksize = CIFS_MAX_MSGSIZE;
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,15))
-+ newinode->i_blkbits = 14; /* 2**14 = CIFS_MAX_MSGSIZE */
-+#endif
-+ atomic_set(&cifsInfo->inUse, 0);
-+ cifsInfo->time = 0;
-+ insert_inode_hash(newinode);
-+ }
-+ return newinode;
-+
-+}
-+
-+int
-+cifs_get_inode_info_unix(struct inode **pinode,
-+ const unsigned char *search_path,
-+ struct super_block *sb,int xid)
-+{
-+ int rc = 0;
-+ FILE_UNIX_BASIC_INFO findData;
-+ struct cifsTconInfo *pTcon;
-+ struct inode *inode;
-+ struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
-+ char *tmp_path;
-+
-+ pTcon = cifs_sb->tcon;
-+ cFYI(1, (" Getting info on %s ", search_path));
-+ /* we could have done a find first instead but this returns more info */
-+ rc = CIFSSMBUnixQPathInfo(xid, pTcon, search_path, &findData,
-+ cifs_sb->local_nls);
-+ /* dump_mem("\nUnixQPathInfo return data", &findData, sizeof(findData)); */
-+ if (rc) {
-+ if (rc == -EREMOTE) {
-+ tmp_path =
-+ kmalloc(strnlen
-+ (pTcon->treeName,
-+ MAX_TREE_SIZE + 1) +
-+ strnlen(search_path, MAX_PATHCONF) + 1,
-+ GFP_KERNEL);
-+ if (tmp_path == NULL) {
-+ return -ENOMEM;
-+ }
-+ /* have to skip first of the double backslash of UNC name */
-+ strncpy(tmp_path, pTcon->treeName, MAX_TREE_SIZE);
-+ strncat(tmp_path, search_path, MAX_PATHCONF);
-+ rc = connect_to_dfs_path(xid, pTcon->ses,
-+ /* treename + */ tmp_path,
-+ cifs_sb->local_nls);
-+ kfree(tmp_path);
-+
-+ /* BB fix up inode etc. */
-+ } else if (rc) {
-+ return rc;
-+ }
-+
-+ } else {
-+ struct cifsInodeInfo *cifsInfo;
-+
-+ /* get new inode */
-+ if (*pinode == NULL) {
-+ *pinode = get_cifs_inode(sb);
-+ }
-+ if(*pinode == NULL) {
-+ return -ENOMEM;
-+ }
-+
-+ inode = *pinode;
-+ cifsInfo = CIFS_I(inode);
-+
-+ cFYI(1, (" Old time %ld ", cifsInfo->time));
-+ cifsInfo->time = jiffies;
-+ cFYI(1, (" New time %ld ", cifsInfo->time));
-+ atomic_set(&cifsInfo->inUse,1); /* ok to set on every refresh of inode */
-+
-+ inode->i_atime =
-+ cifs_NTtimeToUnix(le64_to_cpu(findData.LastAccessTime));
-+ inode->i_mtime =
-+ cifs_NTtimeToUnix(le64_to_cpu
-+ (findData.LastModificationTime));
-+ inode->i_ctime =
-+ cifs_NTtimeToUnix(le64_to_cpu(findData.LastStatusChange));
-+ inode->i_mode = le64_to_cpu(findData.Permissions);
-+ findData.Type = le32_to_cpu(findData.Type);
-+ if (findData.Type == UNIX_FILE) {
-+ inode->i_mode |= S_IFREG;
-+ } else if (findData.Type == UNIX_SYMLINK) {
-+ inode->i_mode |= S_IFLNK;
-+ } else if (findData.Type == UNIX_DIR) {
-+ inode->i_mode |= S_IFDIR;
-+ } else if (findData.Type == UNIX_CHARDEV) {
-+ inode->i_mode |= S_IFCHR;
-+ inode->i_rdev = MKDEV(le64_to_cpu(findData.DevMajor),
-+ le64_to_cpu(findData.DevMinor) & MINORMASK);
-+ } else if (findData.Type == UNIX_BLOCKDEV) {
-+ inode->i_mode |= S_IFBLK;
-+ inode->i_rdev = MKDEV(le64_to_cpu(findData.DevMajor),
-+ le64_to_cpu(findData.DevMinor) & MINORMASK);
-+ } else if (findData.Type == UNIX_FIFO) {
-+ inode->i_mode |= S_IFIFO;
-+ } else if (findData.Type == UNIX_SOCKET) {
-+ inode->i_mode |= S_IFSOCK;
-+ }
-+ inode->i_uid = le64_to_cpu(findData.Uid);
-+ inode->i_gid = le64_to_cpu(findData.Gid);
-+ inode->i_nlink = le64_to_cpu(findData.Nlinks);
-+ findData.NumOfBytes = le64_to_cpu(findData.NumOfBytes);
-+ findData.EndOfFile = le64_to_cpu(findData.EndOfFile);
-+
-+ if(is_size_safe_to_change(cifsInfo)) {
-+ /* can not safely change the file size here if the
-+ client is writing to it due to potential races */
-+ inode->i_size = findData.EndOfFile;
-+/* blksize needs to be multiple of two. So safer to default to blksize
-+ and blkbits set in superblock so 2**blkbits and blksize will match */
-+/* inode->i_blksize =
-+ (pTcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE) & 0xFFFFFE00;*/
-+
-+ /* This seems incredibly stupid but it turns out that
-+ i_blocks is not related to (i_size / i_blksize), instead a
-+ size of 512 is required to be used for calculating num blocks */
-+
-+
-+/* inode->i_blocks =
-+ (inode->i_blksize - 1 + findData.NumOfBytes) >> inode->i_blkbits;*/
-+
-+ /* 512 bytes (2**9) is the fake blocksize that must be used */
-+ /* for this calculation */
-+ inode->i_blocks = (512 - 1 + findData.NumOfBytes) >> 9;
-+ }
-+
-+ if (findData.NumOfBytes < findData.EndOfFile)
-+ cFYI(1, ("Server inconsistency Error: it says allocation size less than end of file "));
-+ cFYI(1,
-+ ("Size %ld and blocks %ld ",
-+ (unsigned long) inode->i_size, inode->i_blocks));
-+ if (S_ISREG(inode->i_mode)) {
-+ cFYI(1, (" File inode "));
-+ inode->i_op = &cifs_file_inode_ops;
-+ inode->i_fop = &cifs_file_ops;
-+ inode->i_data.a_ops = &cifs_addr_ops;
-+ } else if (S_ISDIR(inode->i_mode)) {
-+ cFYI(1, (" Directory inode"));
-+ inode->i_op = &cifs_dir_inode_ops;
-+ inode->i_fop = &cifs_dir_ops;
-+ } else if (S_ISLNK(inode->i_mode)) {
-+ cFYI(1, (" Symbolic Link inode "));
-+ inode->i_op = &cifs_symlink_inode_ops;
-+/* tmp_inode->i_fop = *//* do not need to set to anything */
-+ } else {
-+ cFYI(1, (" Init special inode "));
-+ init_special_inode(inode, inode->i_mode,
-+ kdev_t_to_nr(inode->i_rdev));
-+ }
-+ }
-+ return rc;
-+}
-+
-+int
-+cifs_get_inode_info(struct inode **pinode, const unsigned char *search_path,
-+ FILE_ALL_INFO * pfindData, struct super_block *sb, int xid)
-+{
-+ int rc = 0;
-+ struct cifsTconInfo *pTcon;
-+ struct inode *inode;
-+ struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
-+ char *tmp_path;
-+ char *buf = NULL;
-+
-+ pTcon = cifs_sb->tcon;
-+ cFYI(1,("Getting info on %s ", search_path));
-+
-+ if((pfindData == NULL) && (*pinode != NULL)) {
-+ if(CIFS_I(*pinode)->clientCanCacheRead) {
-+ cFYI(1,("No need to revalidate inode sizes on cached file "));
-+ return rc;
-+ }
-+ }
-+
-+ /* if file info not passed in then get it from server */
-+ if(pfindData == NULL) {
-+ buf = kmalloc(sizeof(FILE_ALL_INFO),GFP_KERNEL);
-+ pfindData = (FILE_ALL_INFO *)buf;
-+ /* could do find first instead but this returns more info */
-+ rc = CIFSSMBQPathInfo(xid, pTcon, search_path, pfindData,
-+ cifs_sb->local_nls);
-+ }
-+ /* dump_mem("\nQPathInfo return data",&findData, sizeof(findData)); */
-+ if (rc) {
-+ if (rc == -EREMOTE) {
-+ tmp_path =
-+ kmalloc(strnlen
-+ (pTcon->treeName,
-+ MAX_TREE_SIZE + 1) +
-+ strnlen(search_path, MAX_PATHCONF) + 1,
-+ GFP_KERNEL);
-+ if (tmp_path == NULL) {
-+ if(buf)
-+ kfree(buf);
-+ return -ENOMEM;
-+ }
-+
-+ strncpy(tmp_path, pTcon->treeName, MAX_TREE_SIZE);
-+ strncat(tmp_path, search_path, MAX_PATHCONF);
-+ rc = connect_to_dfs_path(xid, pTcon->ses,
-+ /* treename + */ tmp_path,
-+ cifs_sb->local_nls);
-+ kfree(tmp_path);
-+ /* BB fix up inode etc. */
-+ } else if (rc) {
-+ if(buf)
-+ kfree(buf);
-+ return rc;
-+ }
-+ } else {
-+ struct cifsInodeInfo *cifsInfo;
-+
-+ /* get new inode */
-+ if (*pinode == NULL) {
-+ *pinode = get_cifs_inode(sb);
-+ }
-+ if(*pinode == NULL)
-+ return -ENOMEM;
-+ inode = *pinode;
-+ cifsInfo = CIFS_I(inode);
-+ pfindData->Attributes = le32_to_cpu(pfindData->Attributes);
-+ cifsInfo->cifsAttrs = pfindData->Attributes;
-+ cFYI(1, (" Old time %ld ", cifsInfo->time));
-+ cifsInfo->time = jiffies;
-+ cFYI(1, (" New time %ld ", cifsInfo->time));
-+
-+/* blksize needs to be multiple of two. So safer to default to blksize
-+ and blkbits set in superblock so 2**blkbits and blksize will match */
-+/* inode->i_blksize =
-+ (pTcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE) & 0xFFFFFE00;*/
-+
-+ /* Linux can not store file creation time unfortunately so we ignore it */
-+ inode->i_atime =
-+ cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastAccessTime));
-+ inode->i_mtime =
-+ cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastWriteTime));
-+ inode->i_ctime =
-+ cifs_NTtimeToUnix(le64_to_cpu(pfindData->ChangeTime));
-+ cFYI(0,
-+ (" Attributes came in as 0x%x ", pfindData->Attributes));
-+
-+ /* set default mode. will override for dirs below */
-+ if(atomic_read(&cifsInfo->inUse) == 0)
-+ /* new inode, can safely set these fields */
-+ inode->i_mode = cifs_sb->mnt_file_mode;
-+
-+ if (pfindData->Attributes & ATTR_REPARSE) {
-+ /* Can IFLNK be set as it basically is on windows with IFREG or IFDIR? */
-+ inode->i_mode |= S_IFLNK;
-+ } else if (pfindData->Attributes & ATTR_DIRECTORY) {
-+ /* override default perms since we do not do byte range locking on dirs */
-+ inode->i_mode = cifs_sb->mnt_dir_mode;
-+ inode->i_mode |= S_IFDIR;
-+ } else {
-+ inode->i_mode |= S_IFREG;
-+ /* treat the dos attribute of read-only as read-only mode e.g. 555 */
-+ if(cifsInfo->cifsAttrs & ATTR_READONLY)
-+ inode->i_mode &= ~(S_IWUGO);
-+ /* BB add code here - validate if device or weird share or device type? */
-+ }
-+ if(is_size_safe_to_change(cifsInfo)) {
-+ /* can not safely change the file size here if the
-+ client is writing to it due to potential races */
-+ inode->i_size = le64_to_cpu(pfindData->EndOfFile);
-+
-+ /* 512 bytes (2**9) is the fake blocksize that must be used */
-+ /* for this calculation */
-+ inode->i_blocks = (512 - 1 + pfindData->AllocationSize)
-+ >> 9;
-+ }
-+ pfindData->AllocationSize = le64_to_cpu(pfindData->AllocationSize);
-+
-+ cFYI(1,
-+ (" Size %ld and blocks %ld ",
-+ (unsigned long) inode->i_size, inode->i_blocks));
-+ inode->i_nlink = le32_to_cpu(pfindData->NumberOfLinks);
-+
-+ /* BB fill in uid and gid here? with help from winbind?
-+ or retrieve from NTFS stream extended attribute */
-+ if(atomic_read(&cifsInfo->inUse) == 0) {
-+ inode->i_uid = cifs_sb->mnt_uid;
-+ inode->i_gid = cifs_sb->mnt_gid;
-+ /* set so we do not keep refreshing these fields with
-+ bad data after user has changed them in memory */
-+ atomic_set(&cifsInfo->inUse,1);
-+ }
-+
-+ if (S_ISREG(inode->i_mode)) {
-+ cFYI(1, (" File inode "));
-+ inode->i_op = &cifs_file_inode_ops;
-+ inode->i_fop = &cifs_file_ops;
-+ inode->i_data.a_ops = &cifs_addr_ops;
-+ } else if (S_ISDIR(inode->i_mode)) {
-+ cFYI(1, (" Directory inode "));
-+ inode->i_op = &cifs_dir_inode_ops;
-+ inode->i_fop = &cifs_dir_ops;
-+ } else if (S_ISLNK(inode->i_mode)) {
-+ cFYI(1, (" Symbolic Link inode "));
-+ inode->i_op = &cifs_symlink_inode_ops;
-+ } else {
-+ init_special_inode(inode, inode->i_mode,
-+ kdev_t_to_nr(inode->i_rdev));
-+ }
-+ }
-+ if(buf)
-+ kfree(buf);
-+ return rc;
-+}
-+
-+void
-+cifs_read_inode(struct inode *inode)
-+{ /* gets root inode */
-+ int xid;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsInodeInfo *cifs_inode;
-+
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ xid = GetXid();
-+
-+ cifs_inode = CIFS_I(inode);
-+ cifs_inode->cifsAttrs = ATTR_DIRECTORY;
-+ atomic_set(&cifs_inode->inUse, 0);
-+ cifs_inode->time = 0;
-+ inode->i_blksize = CIFS_MAX_MSGSIZE;
-+ inode->i_blkbits = 14; /* 2**14 = CIFS_MAX_MSGSIZE */
-+
-+ INIT_LIST_HEAD(&cifs_inode->openFileList);
-+
-+ if (cifs_sb->tcon->ses->capabilities & CAP_UNIX)
-+ cifs_get_inode_info_unix(&inode, "", inode->i_sb,xid);
-+ else
-+ cifs_get_inode_info(&inode, "", NULL, inode->i_sb,xid);
-+ /* can not call macro FreeXid here since in a void func */
-+ _FreeXid(xid);
-+}
-+
-+int
-+cifs_unlink(struct inode *inode, struct dentry *direntry)
-+{
-+ int rc = 0;
-+ int xid;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ char *full_path = NULL;
-+ struct cifsInodeInfo *cifsInode;
-+ FILE_BASIC_INFO * pinfo_buf;
-+
-+ cFYI(1, (" cifs_unlink, inode = 0x%p with ", inode));
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+/* Unlink can be called from rename so we can not grab
-+ the sem here since we deadlock otherwise */
-+/* down(&direntry->d_sb->s_vfs_rename_sem);*/
-+ full_path = build_path_from_dentry(direntry);
-+/* up(&direntry->d_sb->s_vfs_rename_sem);*/
-+ if(full_path == NULL) {
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+ rc = CIFSSMBDelFile(xid, pTcon, full_path, cifs_sb->local_nls);
-+
-+ if (!rc) {
-+ direntry->d_inode->i_nlink--;
-+ } else if (rc == -ENOENT) {
-+ d_drop(direntry);
-+ } else if (rc == -ETXTBSY) {
-+ int oplock = FALSE;
-+ __u16 netfid;
-+
-+ rc = CIFSSMBOpen(xid, pTcon, full_path, FILE_OPEN, DELETE,
-+ CREATE_NOT_DIR | CREATE_DELETE_ON_CLOSE,
-+ &netfid, &oplock, NULL, cifs_sb->local_nls);
-+ if(rc==0) {
-+ CIFSSMBRenameOpenFile(xid,pTcon,netfid,
-+ NULL, cifs_sb->local_nls);
-+ CIFSSMBClose(xid, pTcon, netfid);
-+ direntry->d_inode->i_nlink--;
-+ }
-+ } else if (rc == -EACCES) {
-+ /* try only if r/o attribute set in local lookup data? */
-+ pinfo_buf = (FILE_BASIC_INFO *)kmalloc(sizeof(FILE_BASIC_INFO),GFP_KERNEL);
-+ if(pinfo_buf) {
-+ memset(pinfo_buf,0,sizeof(FILE_BASIC_INFO));
-+ /* ATTRS set to normal clears r/o bit */
-+ pinfo_buf->Attributes = cpu_to_le32(ATTR_NORMAL);
-+ rc = CIFSSMBSetTimes(xid, pTcon, full_path, pinfo_buf,
-+ cifs_sb->local_nls);
-+ kfree(pinfo_buf);
-+ }
-+ if(rc==0) {
-+ rc = CIFSSMBDelFile(xid, pTcon, full_path, cifs_sb->local_nls);
-+ if (!rc) {
-+ direntry->d_inode->i_nlink--;
-+ } else if (rc == -ETXTBSY) {
-+ int oplock = FALSE;
-+ __u16 netfid;
-+
-+ rc = CIFSSMBOpen(xid, pTcon, full_path, FILE_OPEN, DELETE,
-+ CREATE_NOT_DIR | CREATE_DELETE_ON_CLOSE,
-+ &netfid, &oplock, NULL, cifs_sb->local_nls);
-+ if(rc==0) {
-+ CIFSSMBRenameOpenFile(xid,pTcon,netfid,NULL,cifs_sb->local_nls);
-+ CIFSSMBClose(xid, pTcon, netfid);
-+ direntry->d_inode->i_nlink--;
-+ }
-+ /* BB if rc = -ETXTBUSY goto the rename logic BB */
-+ }
-+ }
-+ }
-+ cifsInode = CIFS_I(direntry->d_inode);
-+ cifsInode->time = 0; /* will force revalidate to get info when needed */
-+ direntry->d_inode->i_ctime = inode->i_ctime = inode->i_mtime =
-+ CURRENT_TIME;
-+ cifsInode = CIFS_I(inode);
-+ cifsInode->time = 0; /* force revalidate of dir as well */
-+
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int
-+cifs_mkdir(struct inode *inode, struct dentry *direntry, int mode)
-+{
-+ int rc = 0;
-+ int xid;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ char *full_path = NULL;
-+ struct inode *newinode = NULL;
-+
-+ cFYI(1, ("In cifs_mkdir, mode = 0x%x inode = 0x%p ", mode, inode));
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ down(&inode->i_sb->s_vfs_rename_sem);
-+ full_path = build_path_from_dentry(direntry);
-+ up(&inode->i_sb->s_vfs_rename_sem);
-+ if(full_path == NULL) {
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+ /* BB add setting the equivalent of mode via CreateX w/ACLs */
-+ rc = CIFSSMBMkDir(xid, pTcon, full_path, cifs_sb->local_nls);
-+ if (rc) {
-+ cFYI(1, ("cifs_mkdir returned 0x%x ", rc));
-+ d_drop(direntry);
-+ } else {
-+ inode->i_nlink++;
-+ if (pTcon->ses->capabilities & CAP_UNIX)
-+ rc = cifs_get_inode_info_unix(&newinode, full_path,
-+ inode->i_sb,xid);
-+ else
-+ rc = cifs_get_inode_info(&newinode, full_path,NULL,
-+ inode->i_sb,xid);
-+
-+ direntry->d_op = &cifs_dentry_ops;
-+ d_instantiate(direntry, newinode);
-+ if(direntry->d_inode)
-+ direntry->d_inode->i_nlink = 2;
-+ if (cifs_sb->tcon->ses->capabilities & CAP_UNIX)
-+ CIFSSMBUnixSetPerms(xid, pTcon, full_path, mode,
-+ (__u64)-1,
-+ (__u64)-1,
-+ 0 /* dev_t */,
-+ cifs_sb->local_nls);
-+ else { /* BB to be implemented via Windows secrty descriptors*/
-+ /* eg CIFSSMBWinSetPerms(xid,pTcon,full_path,mode,-1,-1,local_nls);*/
-+ }
-+ }
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+
-+ return rc;
-+}
-+
-+int
-+cifs_rmdir(struct inode *inode, struct dentry *direntry)
-+{
-+ int rc = 0;
-+ int xid;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ char *full_path = NULL;
-+ struct cifsInodeInfo *cifsInode;
-+
-+ cFYI(1, (" cifs_rmdir, inode = 0x%p with ", inode));
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ down(&inode->i_sb->s_vfs_rename_sem);
-+ full_path = build_path_from_dentry(direntry);
-+ up(&inode->i_sb->s_vfs_rename_sem);
-+ if(full_path == NULL) {
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+
-+ rc = CIFSSMBRmDir(xid, pTcon, full_path, cifs_sb->local_nls);
-+
-+ if (!rc) {
-+ inode->i_nlink--;
-+ direntry->d_inode->i_size = 0;
-+ direntry->d_inode->i_nlink = 0;
-+ }
-+
-+ cifsInode = CIFS_I(direntry->d_inode);
-+ cifsInode->time = 0; /* force revalidate to go get info when needed */
-+ direntry->d_inode->i_ctime = inode->i_ctime = inode->i_mtime =
-+ CURRENT_TIME;
-+
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int
-+cifs_rename(struct inode *source_inode, struct dentry *source_direntry,
-+ struct inode *target_inode, struct dentry *target_direntry)
-+{
-+ char *fromName;
-+ char *toName;
-+ struct cifs_sb_info *cifs_sb_source;
-+ struct cifs_sb_info *cifs_sb_target;
-+ struct cifsTconInfo *pTcon;
-+ int xid;
-+ int rc = 0;
-+
-+ xid = GetXid();
-+
-+ cifs_sb_target = CIFS_SB(target_inode->i_sb);
-+ cifs_sb_source = CIFS_SB(source_inode->i_sb);
-+ pTcon = cifs_sb_source->tcon;
-+
-+ if (pTcon != cifs_sb_target->tcon) {
-+ FreeXid(xid);
-+ return -EXDEV; /* BB actually could be allowed if same server, but
-+ different share. Might eventually add support for this */
-+ }
-+
-+ /* we already have the rename sem so we do not need
-+ to grab it again here to protect the path integrity */
-+ fromName = build_path_from_dentry(source_direntry);
-+ toName = build_path_from_dentry(target_direntry);
-+ if((fromName == NULL) || (toName == NULL)) {
-+ rc = -ENOMEM;
-+ goto cifs_rename_exit;
-+ }
-+
-+ rc = CIFSSMBRename(xid, pTcon, fromName, toName,
-+ cifs_sb_source->local_nls);
-+ if(rc == -EEXIST) {
-+ /* check if they are the same file
-+ because rename of hardlinked files is a noop */
-+ FILE_UNIX_BASIC_INFO * info_buf_source;
-+ FILE_UNIX_BASIC_INFO * info_buf_target;
-+
-+ info_buf_source =
-+ kmalloc(2 * sizeof(FILE_UNIX_BASIC_INFO),GFP_KERNEL);
-+ if(info_buf_source != NULL) {
-+ info_buf_target = info_buf_source+1;
-+ rc = CIFSSMBUnixQPathInfo(xid, pTcon, fromName,
-+ info_buf_source, cifs_sb_source->local_nls);
-+ if(rc == 0) {
-+ rc = CIFSSMBUnixQPathInfo(xid,pTcon,toName,
-+ info_buf_target,
-+ cifs_sb_target->local_nls);
-+ }
-+ if((rc == 0) &&
-+ (info_buf_source->UniqueId ==
-+ info_buf_target->UniqueId)) {
-+ /* do not rename since the files are hardlinked
-+ which is a noop */
-+ } else {
-+ /* we either can not tell the files are hardlinked
-+ (as with Windows servers) or files are not hardlinked
-+ so delete the target manually before renaming to
-+ follow POSIX rather than Windows semantics */
-+ cifs_unlink(target_inode, target_direntry);
-+ rc = CIFSSMBRename(xid, pTcon, fromName, toName,
-+ cifs_sb_source->local_nls);
-+ }
-+ kfree(info_buf_source);
-+ } /* if we can not get memory just leave rc as EEXIST */
-+ }
-+
-+ if((rc == -EIO)||(rc == -EEXIST)) {
-+ int oplock = FALSE;
-+ __u16 netfid;
-+
-+ rc = CIFSSMBOpen(xid, pTcon, fromName, FILE_OPEN, GENERIC_READ,
-+ CREATE_NOT_DIR,
-+ &netfid, &oplock, NULL, cifs_sb_source->local_nls);
-+ if(rc==0) {
-+ CIFSSMBRenameOpenFile(xid,pTcon,netfid,
-+ toName, cifs_sb_source->local_nls);
-+ CIFSSMBClose(xid, pTcon, netfid);
-+ }
-+ }
-+
-+cifs_rename_exit:
-+ if (fromName)
-+ kfree(fromName);
-+ if (toName)
-+ kfree(toName);
-+
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int
-+cifs_revalidate(struct dentry *direntry)
-+{
-+ int xid;
-+ int rc = 0;
-+ char *full_path;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsInodeInfo *cifsInode;
-+ loff_t local_size;
-+ time_t local_mtime;
-+ int invalidate_inode = FALSE;
-+
-+ if(direntry->d_inode == NULL)
-+ return -ENOENT;
-+
-+ cifsInode = CIFS_I(direntry->d_inode);
-+
-+ if(cifsInode == NULL)
-+ return -ENOENT;
-+
-+ /* no sense revalidating inode info on file that no one can write */
-+ if(CIFS_I(direntry->d_inode)->clientCanCacheRead)
-+ return rc;
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(direntry->d_sb);
-+
-+ /* can not safely grab the rename sem here if
-+ rename calls revalidate since that would deadlock */
-+ full_path = build_path_from_dentry(direntry);
-+ if(full_path == NULL) {
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+ cFYI(1,
-+ ("Revalidate: %s inode 0x%p count %d dentry: 0x%p d_time %ld jiffies %ld",
-+ full_path, direntry->d_inode,
-+ direntry->d_inode->i_count.counter, direntry,
-+ direntry->d_time, jiffies));
-+
-+ if (cifsInode->time == 0){
-+ /* was set to zero previously to force revalidate */
-+ } else if (time_before(jiffies, cifsInode->time + HZ) && lookupCacheEnabled) {
-+ if((S_ISREG(direntry->d_inode->i_mode) == 0) ||
-+ (direntry->d_inode->i_nlink == 1)) {
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return rc;
-+ } else {
-+ cFYI(1,("Have to revalidate file due to hardlinks"));
-+ }
-+ }
-+
-+ /* save mtime and size */
-+ local_mtime = direntry->d_inode->i_mtime;
-+ local_size = direntry->d_inode->i_size;
-+
-+ if (cifs_sb->tcon->ses->capabilities & CAP_UNIX) {
-+ rc = cifs_get_inode_info_unix(&direntry->d_inode, full_path,
-+ direntry->d_sb,xid);
-+ if(rc) {
-+ cFYI(1,("error on getting revalidate info %d",rc));
-+/* if(rc != -ENOENT)
-+ rc = 0; */ /* BB should we cache info on certain errors? */
-+ }
-+ } else {
-+ rc = cifs_get_inode_info(&direntry->d_inode, full_path, NULL,
-+ direntry->d_sb,xid);
-+ if(rc) {
-+ cFYI(1,("error on getting revalidate info %d",rc));
-+/* if(rc != -ENOENT)
-+ rc = 0; */ /* BB should we cache info on certain errors? */
-+ }
-+ }
-+ /* should we remap certain errors, access denied?, to zero */
-+
-+ /* if not oplocked, we invalidate inode pages if mtime
-+ or file size had changed on server */
-+
-+ if((local_mtime == direntry->d_inode->i_mtime) &&
-+ (local_size == direntry->d_inode->i_size)) {
-+ cFYI(1,("cifs_revalidate - inode unchanged"));
-+ } else {
-+ /* file may have changed on server */
-+ if(cifsInode->clientCanCacheRead) {
-+ /* no need to invalidate inode pages since we were
-+ the only ones who could have modified the file and
-+ the server copy is staler than ours */
-+ } else {
-+ invalidate_inode = TRUE;
-+ }
-+ }
-+
-+ /* can not grab this sem since kernel filesys locking
-+ documentation indicates i_sem may be taken by the kernel
-+ on lookup and rename which could deadlock if we grab
-+ the i_sem here as well */
-+/* down(&direntry->d_inode->i_sem);*/
-+ /* need to write out dirty pages here */
-+ if(direntry->d_inode->i_mapping) {
-+ /* do we need to lock inode until after invalidate completes below? */
-+ filemap_fdatasync(direntry->d_inode->i_mapping);
-+ }
-+ if(invalidate_inode) {
-+ filemap_fdatawait(direntry->d_inode->i_mapping);
-+ /* may eventually have to do this for open files too */
-+ if(list_empty(&(cifsInode->openFileList))) {
-+ /* Has changed on server - flush read ahead pages */
-+ cFYI(1,("Invalidating read ahead data on closed file"));
-+ invalidate_inode_pages(direntry->d_inode);
-+ }
-+ }
-+/* up(&direntry->d_inode->i_sem);*/
-+
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+
-+ return rc;
-+}
-+
-+/* int cifs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
-+{
-+ int err = cifs_revalidate(dentry);
-+ if (!err)
-+ generic_fillattr(dentry->d_inode, stat);
-+ return err;
-+} */
-+
-+void
-+cifs_truncate_file(struct inode *inode)
-+{ /* BB remove - may not need this function after all BB */
-+ int xid;
-+ int rc = -EIO;
-+ int found = FALSE;
-+ struct cifsFileInfo *open_file = NULL;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ struct cifsInodeInfo *cifsInode;
-+ struct dentry *dirent;
-+ struct list_head * tmp;
-+ char *full_path = NULL;
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ /* To avoid spurious oplock breaks from server, in the case
-+ of inodes that we already have open, avoid doing path
-+ based setting of file size if we can do it by handle.
-+ This keeps our caching token (oplock) and avoids
-+ timeouts when the local oplock break takes longer to flush
-+ writebehind data than the SMB timeout for the SetPathInfo
-+ request would allow */
-+ read_lock(&GlobalSMBSeslock);
-+ cifsInode = CIFS_I(inode);
-+ list_for_each(tmp, &cifsInode->openFileList) {
-+ open_file = list_entry(tmp,struct cifsFileInfo, flist);
-+ /* We check if file is open for writing first */
-+ if((open_file->pfile) && (!open_file->invalidHandle) &&
-+ ((open_file->pfile->f_flags & O_RDWR) ||
-+ (open_file->pfile->f_flags & O_WRONLY))) {
-+ read_unlock(&GlobalSMBSeslock);
-+ found = TRUE;
-+ rc = CIFSSMBSetFileSize(xid, pTcon, inode->i_size,
-+ open_file->netfid,open_file->pid,FALSE);
-+ if(rc == 0) {
-+ FreeXid(xid);
-+ return;
-+ }
-+ /* Do not need reopen and retry on EAGAIN since we will
-+ retry by pathname below */
-+ if(rc == -EAGAIN)
-+ rc = -EHOSTDOWN;
-+
-+ break; /* now that we found one valid file handle no
-+ sense continuing to loop trying others */
-+ }
-+ }
-+ if(found == FALSE)
-+ read_unlock(&GlobalSMBSeslock);
-+
-+ if (list_empty(&inode->i_dentry)) {
-+ cERROR(1,
-+ ("Can not get pathname from empty dentry in inode 0x%p ",
-+ inode));
-+ FreeXid(xid);
-+ return;
-+ }
-+
-+ dirent = list_entry(inode->i_dentry.next, struct dentry, d_alias);
-+ if (dirent) {
-+ full_path = build_path_from_dentry(dirent);
-+ rc = CIFSSMBSetEOF(xid, pTcon, full_path, inode->i_size,FALSE,
-+ cifs_sb->local_nls);
-+ cFYI(1,(" SetEOF (truncate) rc = %d",rc));
-+ if (!rc)
-+ CIFSSMBSetEOF(xid,pTcon,full_path,inode->i_size,TRUE,cifs_sb->local_nls);
-+ /* allocation size setting seems optional so ignore return code */
-+ }
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return;
-+}
-+
-+static int cifs_truncate_page(struct address_space *mapping, loff_t from)
-+{
-+ unsigned long index = from >> PAGE_CACHE_SHIFT;
-+ unsigned offset = from & (PAGE_CACHE_SIZE-1);
-+ struct page *page;
-+ char *kaddr;
-+ int rc = 0;
-+
-+ page = grab_cache_page(mapping, index);
-+ if (!page)
-+ return -ENOMEM;
-+
-+ kaddr = kmap_atomic(page, KM_USER0);
-+ memset(kaddr + offset, 0, PAGE_CACHE_SIZE - offset);
-+ flush_dcache_page(page);
-+ kunmap_atomic(kaddr, KM_USER0);
-+ unlock_page(page);
-+ page_cache_release(page);
-+ return rc;
-+}
-+
-+int
-+cifs_setattr(struct dentry *direntry, struct iattr *attrs)
-+{
-+ int xid;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ char *full_path = NULL;
-+ int rc = -EACCES;
-+ int found = FALSE;
-+ struct cifsFileInfo *open_file = NULL;
-+ FILE_BASIC_INFO time_buf;
-+ int set_time = FALSE;
-+ __u64 mode = 0xFFFFFFFFFFFFFFFFULL;
-+ __u64 uid = 0xFFFFFFFFFFFFFFFFULL;
-+ __u64 gid = 0xFFFFFFFFFFFFFFFFULL;
-+ struct cifsInodeInfo *cifsInode;
-+ struct list_head * tmp;
-+
-+ xid = GetXid();
-+
-+ cFYI(1,
-+ (" In cifs_setattr, name = %s attrs->iavalid 0x%x ",
-+ direntry->d_name.name, attrs->ia_valid));
-+ cifs_sb = CIFS_SB(direntry->d_inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ down(&direntry->d_sb->s_vfs_rename_sem);
-+ full_path = build_path_from_dentry(direntry);
-+ up(&direntry->d_sb->s_vfs_rename_sem);
-+ if(full_path == NULL) {
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+ cifsInode = CIFS_I(direntry->d_inode);
-+
-+ /* BB check if we need to refresh inode from server now ? BB */
-+
-+ /* need to flush data before changing file size on server */
-+ filemap_fdatasync(direntry->d_inode->i_mapping);
-+
-+ if (attrs->ia_valid & ATTR_SIZE) {
-+ read_lock(&GlobalSMBSeslock);
-+ /* To avoid spurious oplock breaks from server, in the case
-+ of inodes that we already have open, avoid doing path
-+ based setting of file size if we can do it by handle.
-+ This keeps our caching token (oplock) and avoids
-+ timeouts when the local oplock break takes longer to flush
-+ writebehind data than the SMB timeout for the SetPathInfo
-+ request would allow */
-+ list_for_each(tmp, &cifsInode->openFileList) {
-+ open_file = list_entry(tmp,struct cifsFileInfo, flist);
-+ /* We check if file is open for writing first */
-+ if((open_file->pfile) &&
-+ ((open_file->pfile->f_flags & O_RDWR) ||
-+ (open_file->pfile->f_flags & O_WRONLY))) {
-+ if(open_file->invalidHandle == FALSE) {
-+ /* we found a valid, writeable network file
-+ handle to use to try to set the file size */
-+ __u16 nfid = open_file->netfid;
-+ __u32 npid = open_file->pid;
-+ read_unlock(&GlobalSMBSeslock);
-+ found = TRUE;
-+ rc = CIFSSMBSetFileSize(xid, pTcon, attrs->ia_size,
-+ nfid,npid,FALSE);
-+ cFYI(1,("SetFileSize by handle (setattrs) rc = %d",rc));
-+ /* Do not need reopen and retry on EAGAIN since we will
-+ retry by pathname below */
-+
-+ break; /* now that we found one valid file handle no
-+ sense continuing to loop trying others */
-+ }
-+ }
-+ }
-+ if(found == FALSE) {
-+ read_unlock(&GlobalSMBSeslock);
-+ }
-+
-+
-+ if(rc != 0) {
-+ /* Set file size by pathname rather than by handle either
-+ because no valid, writeable file handle for it was found or
-+ because there was an error setting it by handle */
-+ rc = CIFSSMBSetEOF(xid, pTcon, full_path, attrs->ia_size,FALSE,
-+ cifs_sb->local_nls);
-+ cFYI(1,(" SetEOF by path (setattrs) rc = %d",rc));
-+ }
-+
-+ /* Server is ok setting allocation size implicitly - no need to call: */
-+ /*CIFSSMBSetEOF(xid, pTcon, full_path, attrs->ia_size, TRUE, cifs_sb->local_nls);*/
-+
-+ if (rc == 0) {
-+ rc = vmtruncate(direntry->d_inode, attrs->ia_size);
-+ cifs_truncate_page(direntry->d_inode->i_mapping, direntry->d_inode->i_size);
-+ }
-+ }
-+ if (attrs->ia_valid & ATTR_UID) {
-+ cFYI(1, (" CIFS - UID changed to %d", attrs->ia_uid));
-+ uid = attrs->ia_uid;
-+ /* entry->uid = cpu_to_le16(attr->ia_uid); */
-+ }
-+ if (attrs->ia_valid & ATTR_GID) {
-+ cFYI(1, (" CIFS - GID changed to %d", attrs->ia_gid));
-+ gid = attrs->ia_gid;
-+ /* entry->gid = cpu_to_le16(attr->ia_gid); */
-+ }
-+
-+ time_buf.Attributes = 0;
-+ if (attrs->ia_valid & ATTR_MODE) {
-+ cFYI(1, (" CIFS - Mode changed to 0x%x", attrs->ia_mode));
-+ mode = attrs->ia_mode;
-+ /* entry->mode = cpu_to_le16(attr->ia_mode); */
-+ }
-+
-+ if ((cifs_sb->tcon->ses->capabilities & CAP_UNIX)
-+ && (attrs->ia_valid & (ATTR_MODE | ATTR_GID | ATTR_UID)))
-+ rc = CIFSSMBUnixSetPerms(xid, pTcon, full_path, mode, uid, gid,
-+ 0 /* dev_t */, cifs_sb->local_nls);
-+ else if (attrs->ia_valid & ATTR_MODE) {
-+ if((mode & S_IWUGO) == 0) /* not writeable */ {
-+ if((cifsInode->cifsAttrs & ATTR_READONLY) == 0)
-+ time_buf.Attributes =
-+ cpu_to_le32(cifsInode->cifsAttrs | ATTR_READONLY);
-+ } else if((mode & S_IWUGO) == S_IWUGO) {
-+ if(cifsInode->cifsAttrs & ATTR_READONLY)
-+ time_buf.Attributes =
-+ cpu_to_le32(cifsInode->cifsAttrs & (~ATTR_READONLY));
-+ }
-+ /* BB to be implemented - via Windows security descriptors or streams */
-+ /* CIFSSMBWinSetPerms(xid,pTcon,full_path,mode,uid,gid,cifs_sb->local_nls);*/
-+ }
-+
-+ if (attrs->ia_valid & ATTR_ATIME) {
-+ set_time = TRUE;
-+ time_buf.LastAccessTime =
-+ cpu_to_le64(cifs_UnixTimeToNT(attrs->ia_atime));
-+ } else
-+ time_buf.LastAccessTime = 0;
-+
-+ if (attrs->ia_valid & ATTR_MTIME) {
-+ set_time = TRUE;
-+ time_buf.LastWriteTime =
-+ cpu_to_le64(cifs_UnixTimeToNT(attrs->ia_mtime));
-+ } else
-+ time_buf.LastWriteTime = 0;
-+
-+ if (attrs->ia_valid & ATTR_CTIME) {
-+ set_time = TRUE;
-+ time_buf.ChangeTime =
-+ cpu_to_le64(cifs_UnixTimeToNT(attrs->ia_ctime));
-+ } else
-+ time_buf.ChangeTime = 0;
-+
-+ if (set_time | time_buf.Attributes) {
-+ /* BB what if setting one attribute fails
-+ (such as size) but time setting works */
-+ time_buf.CreationTime = 0; /* do not change */
-+ /* In the future we should experiment - try setting timestamps
-+ via Handle (SetFileInfo) instead of by path */
-+ rc = CIFSSMBSetTimes(xid, pTcon, full_path, &time_buf,
-+ cifs_sb->local_nls);
-+ }
-+
-+ /* do not need local check to inode_check_ok since the server does that */
-+ if (!rc)
-+ rc = inode_setattr(direntry->d_inode, attrs);
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+void
-+cifs_delete_inode(struct inode *inode)
-+{
-+ cFYI(1, ("In cifs_delete_inode, inode = 0x%p ", inode));
-+ /* may have to add back in if and when safe distributed caching of
-+ directories added e.g. via FindNotify */
-+}
-diff -urN linux-2.4.29.old/fs/cifs/link.c linux-2.4.29/fs/cifs/link.c
---- linux-2.4.29.old/fs/cifs/link.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/link.c 2004-07-14 00:25:05.000000000 +0200
-@@ -0,0 +1,328 @@
-+/*
-+ * fs/cifs/link.c
-+ *
-+ * Copyright (C) International Business Machines Corp., 2002,2003
-+ * Author(s): Steve French (sfrench@us.ibm.com)
-+ *
-+ * 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.1 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 <linux/fs.h>
-+#include <linux/stat.h>
-+#include "cifsfs.h"
-+#include "cifspdu.h"
-+#include "cifsglob.h"
-+#include "cifsproto.h"
-+#include "cifs_debug.h"
-+#include "cifs_fs_sb.h"
-+
-+int
-+cifs_hardlink(struct dentry *old_file, struct inode *inode,
-+ struct dentry *direntry)
-+{
-+ int rc = -EACCES;
-+ int xid;
-+ char *fromName = NULL;
-+ char *toName = NULL;
-+ struct cifs_sb_info *cifs_sb_target;
-+ struct cifsTconInfo *pTcon;
-+ struct cifsInodeInfo *cifsInode;
-+
-+ xid = GetXid();
-+
-+ cifs_sb_target = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb_target->tcon;
-+
-+/* No need to check for cross device links since server will do that
-+ BB note DFS case in future though (when we may have to check) */
-+
-+ down(&inode->i_sb->s_vfs_rename_sem);
-+ fromName = build_path_from_dentry(old_file);
-+ toName = build_path_from_dentry(direntry);
-+ up(&inode->i_sb->s_vfs_rename_sem);
-+ if((fromName == NULL) || (toName == NULL)) {
-+ rc = -ENOMEM;
-+ goto cifs_hl_exit;
-+ }
-+
-+ if (cifs_sb_target->tcon->ses->capabilities & CAP_UNIX)
-+ rc = CIFSUnixCreateHardLink(xid, pTcon, fromName, toName,
-+ cifs_sb_target->local_nls);
-+ else {
-+ rc = CIFSCreateHardLink(xid, pTcon, fromName, toName,
-+ cifs_sb_target->local_nls);
-+ if(rc == -EIO)
-+ rc = -EOPNOTSUPP;
-+ }
-+
-+/* if (!rc) */
-+ {
-+ /* renew_parental_timestamps(old_file);
-+ inode->i_nlink++;
-+ mark_inode_dirty(inode);
-+ d_instantiate(direntry, inode); */
-+ /* BB add call to either mark inode dirty or refresh its data and timestamp to current time */
-+ }
-+ d_drop(direntry); /* force new lookup from server */
-+ cifsInode = CIFS_I(old_file->d_inode);
-+ cifsInode->time = 0; /* will force revalidate to go get info when needed */
-+
-+cifs_hl_exit:
-+ if (fromName)
-+ kfree(fromName);
-+ if (toName)
-+ kfree(toName);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int
-+cifs_follow_link(struct dentry *direntry, struct nameidata *nd)
-+{
-+ struct inode *inode = direntry->d_inode;
-+ int rc = -EACCES;
-+ int xid;
-+ char *full_path = NULL;
-+ char * target_path;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+
-+ xid = GetXid();
-+
-+ down(&direntry->d_sb->s_vfs_rename_sem);
-+ full_path = build_path_from_dentry(direntry);
-+ up(&direntry->d_sb->s_vfs_rename_sem);
-+
-+ if(full_path == NULL) {
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+ cFYI(1, ("Full path: %s inode = 0x%p", full_path, inode));
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+ target_path = kmalloc(PATH_MAX, GFP_KERNEL);
-+ if(target_path == NULL) {
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+ /* can not call the following line due to EFAULT in vfs_readlink which is presumably expecting a user space buffer */
-+ /* length = cifs_readlink(direntry,target_path, sizeof(target_path) - 1); */
-+
-+/* BB add read reparse point symlink code and Unix extensions symlink code here BB */
-+ if (pTcon->ses->capabilities & CAP_UNIX)
-+ rc = CIFSSMBUnixQuerySymLink(xid, pTcon, full_path,
-+ target_path,
-+ PATH_MAX-1,
-+ cifs_sb->local_nls);
-+ else {
-+ /* rc = CIFSSMBQueryReparseLinkInfo */
-+ /* BB Add code to Query ReparsePoint info */
-+ }
-+ /* BB Anything else to do to handle recursive links? */
-+ /* BB Should we be using page symlink ops here? */
-+
-+ if (rc == 0) {
-+
-+/* BB Add special case check for Samba DFS symlinks */
-+
-+ target_path[PATH_MAX-1] = 0;
-+ rc = vfs_follow_link(nd, target_path);
-+ }
-+ /* else EACCESS */
-+
-+ if (target_path)
-+ kfree(target_path);
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int
-+cifs_symlink(struct inode *inode, struct dentry *direntry, const char *symname)
-+{
-+ int rc = -EOPNOTSUPP;
-+ int xid;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ char *full_path = NULL;
-+ struct inode *newinode = NULL;
-+
-+ xid = GetXid();
-+
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+ down(&inode->i_sb->s_vfs_rename_sem);
-+ full_path = build_path_from_dentry(direntry);
-+ up(&inode->i_sb->s_vfs_rename_sem);
-+
-+ if(full_path == NULL) {
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+
-+ cFYI(1, ("Full path: %s ", full_path));
-+ cFYI(1, ("symname is %s", symname));
-+
-+ /* BB what if DFS and this volume is on different share? BB */
-+ if (cifs_sb->tcon->ses->capabilities & CAP_UNIX)
-+ rc = CIFSUnixCreateSymLink(xid, pTcon, full_path, symname,
-+ cifs_sb->local_nls);
-+ /* else
-+ rc = CIFSCreateReparseSymLink(xid, pTcon, fromName, toName,cifs_sb_target->local_nls); */
-+
-+ if (rc == 0) {
-+ if (pTcon->ses->capabilities & CAP_UNIX)
-+ rc = cifs_get_inode_info_unix(&newinode, full_path,
-+ inode->i_sb,xid);
-+ else
-+ rc = cifs_get_inode_info(&newinode, full_path, NULL,
-+ inode->i_sb,xid);
-+
-+ if (rc != 0) {
-+ cFYI(1,
-+ ("Create symlink worked but get_inode_info failed with rc = %d ",
-+ rc));
-+ } else {
-+ direntry->d_op = &cifs_dentry_ops;
-+ d_instantiate(direntry, newinode);
-+ }
-+ }
-+
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return rc;
-+}
-+
-+int
-+cifs_readlink(struct dentry *direntry, char *pBuffer, int buflen)
-+{
-+ struct inode *inode = direntry->d_inode;
-+ int rc = -EACCES;
-+ int xid;
-+ int oplock = FALSE;
-+ struct cifs_sb_info *cifs_sb;
-+ struct cifsTconInfo *pTcon;
-+ char *full_path = NULL;
-+ char *tmp_path = NULL;
-+ char * tmpbuffer;
-+ unsigned char * referrals = NULL;
-+ int num_referrals = 0;
-+ int len;
-+ __u16 fid;
-+
-+ xid = GetXid();
-+ cifs_sb = CIFS_SB(inode->i_sb);
-+ pTcon = cifs_sb->tcon;
-+
-+/* BB would it be safe against deadlock to grab this sem
-+ even though rename itself grabs the sem and calls lookup? */
-+/* down(&inode->i_sb->s_vfs_rename_sem);*/
-+ full_path = build_path_from_dentry(direntry);
-+/* up(&inode->i_sb->s_vfs_rename_sem);*/
-+
-+ if(full_path == NULL) {
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+
-+ cFYI(1,
-+ ("Full path: %s inode = 0x%p pBuffer = 0x%p buflen = %d",
-+ full_path, inode, pBuffer, buflen));
-+ if(buflen > PATH_MAX)
-+ len = PATH_MAX;
-+ else
-+ len = buflen;
-+ tmpbuffer = kmalloc(len,GFP_KERNEL);
-+ if(tmpbuffer == NULL) {
-+ if (full_path)
-+ kfree(full_path);
-+ FreeXid(xid);
-+ return -ENOMEM;
-+ }
-+
-+/* BB add read reparse point symlink code and Unix extensions symlink code here BB */
-+ if (cifs_sb->tcon->ses->capabilities & CAP_UNIX)
-+ rc = CIFSSMBUnixQuerySymLink(xid, pTcon, full_path,
-+ tmpbuffer,
-+ len - 1,
-+ cifs_sb->local_nls);
-+ else {
-+ rc = CIFSSMBOpen(xid, pTcon, full_path, FILE_OPEN, GENERIC_READ,
-+ OPEN_REPARSE_POINT,&fid, &oplock, NULL, cifs_sb->local_nls);
-+ if(!rc) {
-+ rc = CIFSSMBQueryReparseLinkInfo(xid, pTcon, full_path,
-+ tmpbuffer,
-+ len - 1,
-+ fid,
-+ cifs_sb->local_nls);
-+ if(CIFSSMBClose(xid, pTcon, fid)) {
-+ cFYI(1,("Error closing junction point (open for ioctl)"));
-+ }
-+ if(rc == -EIO) {
-+ /* Query if DFS Junction */
-+ tmp_path =
-+ kmalloc(MAX_TREE_SIZE + MAX_PATHCONF + 1,
-+ GFP_KERNEL);
-+ if (tmp_path) {
-+ strncpy(tmp_path, pTcon->treeName, MAX_TREE_SIZE);
-+ strncat(tmp_path, full_path, MAX_PATHCONF);
-+ rc = get_dfs_path(xid, pTcon->ses, tmp_path,
-+ cifs_sb->local_nls, &num_referrals, &referrals);
-+ cFYI(1,("Get DFS for %s rc = %d ",tmp_path, rc));
-+ if((num_referrals == 0) && (rc == 0))
-+ rc = -EACCES;
-+ else {
-+ cFYI(1,("num referral: %d",num_referrals));
-+ if(referrals) {
-+ cFYI(1,("referral string: %s ",referrals));
-+ strncpy(tmpbuffer, referrals, len-1);
-+ }
-+ }
-+ if(referrals)
-+ kfree(referrals);
-+ kfree(tmp_path);
-+ if(referrals) {
-+ kfree(referrals);
-+ }
-+ }
-+ /* BB add code like else decode referrals then memcpy to
-+ tmpbuffer and free referrals string array BB */
-+ }
-+ }
-+ }
-+ /* BB Anything else to do to handle recursive links? */
-+ /* BB Should we be using page ops here? */
-+
-+ /* BB null terminate returned string in pBuffer? BB */
-+ if (rc == 0) {
-+ rc = vfs_readlink(direntry, pBuffer, len, tmpbuffer);
-+ cFYI(1,
-+ ("vfs_readlink called from cifs_readlink returned %d",
-+ rc));
-+ }
-+
-+ if (tmpbuffer) {
-+ kfree(tmpbuffer);
-+ }
-+ if (full_path) {
-+ kfree(full_path);
-+ }
-+ FreeXid(xid);
-+ return rc;
-+}
-diff -urN linux-2.4.29.old/fs/cifs/Makefile linux-2.4.29/fs/cifs/Makefile
---- linux-2.4.29.old/fs/cifs/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/Makefile 2004-07-14 00:25:04.000000000 +0200
-@@ -0,0 +1,10 @@
-+#
-+# Makefile for Linux CIFS VFS client
-+#
-+O_TARGET := cifs.o
-+
-+obj-y := cifsfs.o cifssmb.o cifs_debug.o connect.o dir.o file.o inode.o link.o misc.o netmisc.o smbdes.o smbencrypt.o transport.o asn1.o md4.o md5.o cifs_unicode.o nterr.o cifsencrypt.o
-+
-+obj-m := $(O_TARGET)
-+
-+include $(TOPDIR)/Rules.make
-diff -urN linux-2.4.29.old/fs/cifs/md4.c linux-2.4.29/fs/cifs/md4.c
---- linux-2.4.29.old/fs/cifs/md4.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/md4.c 2004-07-14 00:25:05.000000000 +0200
-@@ -0,0 +1,203 @@
-+/*
-+ Unix SMB/Netbios implementation.
-+ Version 1.9.
-+ a implementation of MD4 designed for use in the SMB authentication protocol
-+ Copyright (C) Andrew Tridgell 1997-1998.
-+ Modified by Steve French (sfrench@us.ibm.com) 2002-2003
-+
-+ 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.
-+*/
-+#include <linux/module.h>
-+#include <linux/fs.h>
-+/* NOTE: This code makes no attempt to be fast! */
-+
-+static __u32
-+F(__u32 X, __u32 Y, __u32 Z)
-+{
-+ return (X & Y) | ((~X) & Z);
-+}
-+
-+static __u32
-+G(__u32 X, __u32 Y, __u32 Z)
-+{
-+ return (X & Y) | (X & Z) | (Y & Z);
-+}
-+
-+static __u32
-+H(__u32 X, __u32 Y, __u32 Z)
-+{
-+ return X ^ Y ^ Z;
-+}
-+
-+static __u32
-+lshift(__u32 x, int s)
-+{
-+ x &= 0xFFFFFFFF;
-+ return ((x << s) & 0xFFFFFFFF) | (x >> (32 - s));
-+}
-+
-+#define ROUND1(a,b,c,d,k,s) (*a) = lshift((*a) + F(*b,*c,*d) + X[k], s)
-+#define ROUND2(a,b,c,d,k,s) (*a) = lshift((*a) + G(*b,*c,*d) + X[k] + (__u32)0x5A827999,s)
-+#define ROUND3(a,b,c,d,k,s) (*a) = lshift((*a) + H(*b,*c,*d) + X[k] + (__u32)0x6ED9EBA1,s)
-+
-+/* this applies md4 to 64 byte chunks */
-+static void
-+mdfour64(__u32 * M, __u32 * A, __u32 *B, __u32 * C, __u32 *D)
-+{
-+ int j;
-+ __u32 AA, BB, CC, DD;
-+ __u32 X[16];
-+
-+
-+ for (j = 0; j < 16; j++)
-+ X[j] = M[j];
-+
-+ AA = *A;
-+ BB = *B;
-+ CC = *C;
-+ DD = *D;
-+
-+ ROUND1(A, B, C, D, 0, 3);
-+ ROUND1(D, A, B, C, 1, 7);
-+ ROUND1(C, D, A, B, 2, 11);
-+ ROUND1(B, C, D, A, 3, 19);
-+ ROUND1(A, B, C, D, 4, 3);
-+ ROUND1(D, A, B, C, 5, 7);
-+ ROUND1(C, D, A, B, 6, 11);
-+ ROUND1(B, C, D, A, 7, 19);
-+ ROUND1(A, B, C, D, 8, 3);
-+ ROUND1(D, A, B, C, 9, 7);
-+ ROUND1(C, D, A, B, 10, 11);
-+ ROUND1(B, C, D, A, 11, 19);
-+ ROUND1(A, B, C, D, 12, 3);
-+ ROUND1(D, A, B, C, 13, 7);
-+ ROUND1(C, D, A, B, 14, 11);
-+ ROUND1(B, C, D, A, 15, 19);
-+
-+ ROUND2(A, B, C, D, 0, 3);
-+ ROUND2(D, A, B, C, 4, 5);
-+ ROUND2(C, D, A, B, 8, 9);
-+ ROUND2(B, C, D, A, 12, 13);
-+ ROUND2(A, B, C, D, 1, 3);
-+ ROUND2(D, A, B, C, 5, 5);
-+ ROUND2(C, D, A, B, 9, 9);
-+ ROUND2(B, C, D, A, 13, 13);
-+ ROUND2(A, B, C, D, 2, 3);
-+ ROUND2(D, A, B, C, 6, 5);
-+ ROUND2(C, D, A, B, 10, 9);
-+ ROUND2(B, C, D, A, 14, 13);
-+ ROUND2(A, B, C, D, 3, 3);
-+ ROUND2(D, A, B, C, 7, 5);
-+ ROUND2(C, D, A, B, 11, 9);
-+ ROUND2(B, C, D, A, 15, 13);
-+
-+ ROUND3(A, B, C, D, 0, 3);
-+ ROUND3(D, A, B, C, 8, 9);
-+ ROUND3(C, D, A, B, 4, 11);
-+ ROUND3(B, C, D, A, 12, 15);
-+ ROUND3(A, B, C, D, 2, 3);
-+ ROUND3(D, A, B, C, 10, 9);
-+ ROUND3(C, D, A, B, 6, 11);
-+ ROUND3(B, C, D, A, 14, 15);
-+ ROUND3(A, B, C, D, 1, 3);
-+ ROUND3(D, A, B, C, 9, 9);
-+ ROUND3(C, D, A, B, 5, 11);
-+ ROUND3(B, C, D, A, 13, 15);
-+ ROUND3(A, B, C, D, 3, 3);
-+ ROUND3(D, A, B, C, 11, 9);
-+ ROUND3(C, D, A, B, 7, 11);
-+ ROUND3(B, C, D, A, 15, 15);
-+
-+ *A += AA;
-+ *B += BB;
-+ *C += CC;
-+ *D += DD;
-+
-+ *A &= 0xFFFFFFFF;
-+ *B &= 0xFFFFFFFF;
-+ *C &= 0xFFFFFFFF;
-+ *D &= 0xFFFFFFFF;
-+
-+ for (j = 0; j < 16; j++)
-+ X[j] = 0;
-+}
-+
-+static void
-+copy64(__u32 * M, unsigned char *in)
-+{
-+ int i;
-+
-+ for (i = 0; i < 16; i++)
-+ M[i] = (in[i * 4 + 3] << 24) | (in[i * 4 + 2] << 16) |
-+ (in[i * 4 + 1] << 8) | (in[i * 4 + 0] << 0);
-+}
-+
-+static void
-+copy4(unsigned char *out, __u32 x)
-+{
-+ out[0] = x & 0xFF;
-+ out[1] = (x >> 8) & 0xFF;
-+ out[2] = (x >> 16) & 0xFF;
-+ out[3] = (x >> 24) & 0xFF;
-+}
-+
-+/* produce a md4 message digest from data of length n bytes */
-+void
-+mdfour(unsigned char *out, unsigned char *in, int n)
-+{
-+ unsigned char buf[128];
-+ __u32 M[16];
-+ __u32 b = n * 8;
-+ int i;
-+ __u32 A = 0x67452301;
-+ __u32 B = 0xefcdab89;
-+ __u32 C = 0x98badcfe;
-+ __u32 D = 0x10325476;
-+
-+ while (n > 64) {
-+ copy64(M, in);
-+ mdfour64(M,&A,&B, &C, &D);
-+ in += 64;
-+ n -= 64;
-+ }
-+
-+ for (i = 0; i < 128; i++)
-+ buf[i] = 0;
-+ memcpy(buf, in, n);
-+ buf[n] = 0x80;
-+
-+ if (n <= 55) {
-+ copy4(buf + 56, b);
-+ copy64(M, buf);
-+ mdfour64(M, &A, &B, &C, &D);
-+ } else {
-+ copy4(buf + 120, b);
-+ copy64(M, buf);
-+ mdfour64(M, &A, &B, &C, &D);
-+ copy64(M, buf + 64);
-+ mdfour64(M, &A, &B, &C, &D);
-+ }
-+
-+ for (i = 0; i < 128; i++)
-+ buf[i] = 0;
-+ copy64(M, buf);
-+
-+ copy4(out, A);
-+ copy4(out + 4, B);
-+ copy4(out + 8, C);
-+ copy4(out + 12, D);
-+
-+ A = B = C = D = 0;
-+}
-diff -urN linux-2.4.29.old/fs/cifs/md5.c linux-2.4.29/fs/cifs/md5.c
---- linux-2.4.29.old/fs/cifs/md5.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.4.29/fs/cifs/md5.c 2004-07-14 00:25:05.000000000 +0200
-@@ -0,0 +1,363 @@
-+/*
-+ * This code implements the MD5 message-digest algorithm.
-+ * The algorithm is due to Ron Rivest. This code was
-+ * written by Colin Plumb in 1993, no copyright is claimed.
-+ * This code is in the public domain; do with it what you wish.
-+ *
-+ * Equivalent code is available from RSA Data Security, Inc.
-+ * This code has been tested against that, and is equivalent,
-+ * except that you don't need to include two pages of legalese
-+ * with every copy.
-+ *
-+ * To compute the message digest of a chunk of bytes, declare an
-+ * MD5Context structure, pass it to MD5Init, call MD5Update as
-+ * needed on buffers full of bytes, and then call MD5Final, which
-+ * will fill a supplied 16-byte array with the digest.
-+ */
-+
-+/* This code slightly modified to fit into Samba by
-+ abartlet@samba.org Jun 2001
-+ and to fit the cifs vfs by
-+ Steve French sfrench@us.ibm.com */
-+
-+#include <linux/string.h>
-+#include "md5.h"
-+
-+static void MD5Transform(__u32 buf[4], __u32 const in[16]);
-+
-+/*
-+ * Note: this code is harmless on little-endian machines.
-+ */
-+static void
-+byteReverse(unsigned char *buf, unsigned longs)
-+{
-+ __u32 t;
-+ do {
-+ t = (__u32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
-+ ((unsigned) buf[1] << 8 | buf[0]);
-+ *(__u32 *) buf = t;
-+ buf += 4;
-+ } while (--longs);
-+}
-+
-+/*
-+ * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
-+ * initialization constants.
-+ */
-+void
-+MD5Init(struct MD5Context *ctx)
-+{
-+ ctx->buf[0] = 0x67452301;
-+ ctx->buf[1] = 0xefcdab89;
-+ ctx->buf[2] = 0x98badcfe;
-+ ctx->buf[3] = 0x10325476;
-+
-+ ctx->bits[0] = 0;
-+ ctx->bits[1] = 0;
-+}
-+
-+/*
-+ * Update context to reflect the concatenation of another buffer full
-+ * of bytes.
-+ */
-+void
-+MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len)
-+{
-+ register __u32 t;
-+
-+ /* Update bitcount */
-+
-+ t = ctx->bits[0];
-+ if ((ctx->bits[0] = t + ((__u32) len << 3)) < t)
-+ ctx->bits[1]++; /* Carry from low to high */
-+ ctx->bits[1] += len >> 29;
-+
-+ t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */
-+
-+ /* Handle any leading odd-sized chunks */
-+
-+ if (t) {
-+ unsigned char *p = (unsigned char *) ctx->in + t;
-+
-+ t = 64 - t;
-+ if (len < t) {
-+ memmove(p, buf, len);
-+ return;
-+ }
-+ memmove(p, buf, t);
-+ byteReverse(ctx->in, 16);
-+ MD5Transform(ctx->buf, (__u32 *) ctx->in);
-+ buf += t;
-+ len -= t;
-+ }
-+ /* Process data in 64-byte chunks */
-+
-+ while (len >= 64) {
-+ memmove(ctx->in, buf, 64);
-+ byteReverse(ctx->in, 16);
-+ MD5Transform(ctx->buf, (__u32 *) ctx->in);
-+ buf += 64;
-+ len -= 64;
-+ }
-+
-+ /* Handle any remaining bytes of data. */
-+
-+ memmove(ctx->in, buf, len);
-+}
-+
-+/*
-+ * Final wrapup - pad to 64-byte boundary with the bit pattern
-+ * 1 0* (64-bit count of bits processed, MSB-first)
-+ */
-+void
-+MD5Final(unsigned char digest[16], struct MD5Context *ctx)
-+{
-+ unsigned int count;
-+ unsigned char *p;
-+
-+ /* Compute number of bytes mod 64 */
-+ count = (ctx->bits[0] >> 3) & 0x3F;
-+
-+ /* Set the first char of padding to 0x80. This is safe since there is
-+ always at least one byte free */
-+ p = ctx->in + count;
-+ *p++ = 0x80;
-+
-+ /* Bytes of padding needed to make 64 bytes */
-+ count = 64 - 1 - count;
-+
-+ /* Pad out to 56 mod 64 */
-+ if (count < 8) {
-+ /* Two lots of padding: Pad the first block to 64 bytes */
-+ memset(p, 0, count);
-+ byteReverse(ctx->in, 16);
-+ MD5Transform(ctx->buf, (__u32 *) ctx->in);
-+
-+ /* Now fill the next block with 56 bytes */
-+ memset(ctx->in, 0, 56);
-+ } else {
-+ /* Pad block to 56 bytes */
-+ memset(p, 0, count - 8);
-+ }
-+ byteReverse(ctx->